diff --git a/.eslintrc.json b/.eslintrc.json index 8bf87c9581..1246d319b5 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,16 +1,17 @@ { "root": true, - "ignorePatterns": ["projects/**/*"], + "ignorePatterns": ["packages/api/**/*", "packages/@idemsInternational/**/*"], + "plugins": ["jasmine"], + "env": { "jasmine": true }, "overrides": [ { "files": ["*.ts"], "parserOptions": { - "project": ["tsconfig.json", "e2e/tsconfig.json"], + "project": ["tsconfig.json"], "createDefaultProgram": true }, "extends": [ - "plugin:@angular-eslint/ng-cli-compat", - "plugin:@angular-eslint/ng-cli-compat--formatting-add-on", + "plugin:@angular-eslint/recommended", "plugin:@angular-eslint/template/process-inline-templates", "prettier" ], @@ -75,6 +76,7 @@ "@typescript-eslint/naming-convention": ["off"], "@typescript-eslint/member-ordering": "off", "@typescript-eslint/prefer-for-of": "warn", + "@typescript-eslint/sort-type-constituents": "off", "@typescript-eslint/no-unused-expressions": "warn", "@typescript-eslint/no-shadow": "warn", "@angular-eslint/no-output-on-prefix": "warn", @@ -85,23 +87,35 @@ "prefer-const": "off", "quote-props": ["off", "as-needed"], "prefer-arrow/prefer-arrow-functions": "off", - "jsdoc/newline-after-description": ["off"], "no-underscore-dangle": "off", "object-shorthand": "warn", "no-var": "warn", - "no-console": "warn", + "no-console": "off", "radix": "warn", "eqeqeq": "warn", "no-fallthrough": "warn", "no-throw-literal": "warn", "use-isnan": "warn", - "arrow-body-style": "off" + "arrow-body-style": "off", + "sort-keys": "off" } }, { "files": ["*.html"], "extends": ["plugin:@angular-eslint/template/recommended"], - "rules": {} + "rules": { + "@angular-eslint/template/eqeqeq": "warn" + } + }, + { + "files": ["*.spec.ts"], + "extends": ["plugin:jasmine/recommended"], + "rules": { + "jasmine/no-focused-tests": 2, + "jasmine/new-line-before-expect": 0, + "jasmine/new-line-between-declarations": 0, + "jasmine/prefer-toHaveBeenCalledWith": 0 + } } ] } diff --git a/.firebaserc b/.firebaserc index 6e8ff7a040..926fe51421 100644 --- a/.firebaserc +++ b/.firebaserc @@ -1,4 +1,7 @@ { + "projects": { + "default": "plh-teens-app1" + }, "targets": { "plh-teens-app1": { "hosting": { @@ -13,11 +16,30 @@ ], "plh_za": [ "plh-za" + ], + "early_family_math": [ + "early-family-math" + ], + "wash": [ + "wash" + ], + "perinatal": [ + "perinatal" + ], + "pfr": [ + "parenting-for-respectability" + ], + "debug": [ + "idems-debug" + ], + "plh_facilitator": [ + "plh-facilitator" + ], + "plh_kids": [ + "plh-kids" ] } } }, - "projects": { - "default": "plh-teens-app1" - } -} + "etags": {} +} \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index fd000e2bfb..c2c468de57 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,8 +1,18 @@ -*.png filter=lfs diff=lfs merge=lfs -text -*.jpg filter=lfs diff=lfs merge=lfs -text -*.mp4 filter=lfs diff=lfs merge=lfs -text -*.mp3 filter=lfs diff=lfs merge=lfs -text -*.wav filter=lfs diff=lfs merge=lfs -text -*.gif filter=lfs diff=lfs merge=lfs -text -*.pdn filter=lfs diff=lfs merge=lfs -text -*.svg filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.pdn filter=lfs diff=lfs merge=lfs -text +*.svg filter=lfs diff=lfs merge=lfs -text +*.xlsx filter=lfs diff=lfs merge=lfs -text + +*.json eol=crlf +*.ts eol=crlf +*.scss eol=crlf +*.html eol=crlf +*.js eol=crlf + +*.sh text eol=lf +*.conf text eol=lf \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/glitchtip.md b/.github/ISSUE_TEMPLATE/glitchtip.md new file mode 100644 index 0000000000..a087ce3217 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/glitchtip.md @@ -0,0 +1,22 @@ +--- +name: GlitchTip report +about: Complete the form below to report crash report data +title: "[GlitchTip]" +labels: glitchtip +assignees: '' + +--- + +**GlitchTip Link** +_url_ + +**Report txt** +```js + +``` + +**Diagnosis (if known)** +_cause of error relating to codebase_ + +**Suggested fix (if known)** +_recommended means to fix_ \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0be091dd3c..871177ad62 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,7 +1,6 @@ PR Checklist -- [ ] - Latest `master` branch merged -- [ ] - PR title descriptive (can be used in release notes) +- [ ] PR title descriptive (can be used in release notes) ## Description diff --git a/.github/workflows/android-build.yml b/.github/workflows/android-build.yml index d6aa570ea0..4529d15413 100644 --- a/.github/workflows/android-build.yml +++ b/.github/workflows/android-build.yml @@ -25,7 +25,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: lfs: true ref: "${{github.event.inputs.build_branch}}" @@ -37,23 +37,19 @@ jobs: run: | echo ${{github.event.inputs.build_branch}} | sed 's/.*\///' echo "DEPLOYMENT_NAME=$(echo ${{github.event.inputs.build_branch}} | sed 's/.*\///')" >> $GITHUB_ENV; + echo "SHA_SHORT=$(git rev-parse --short=6 HEAD)" >> $GITHUB_ENV shell: bash - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- - name: Setup node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: "16" - - name: Populate firebaseConfig.ts + node-version: 16 + cache: 'yarn' + - name: Populate environment config env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} - run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + run: | + echo "export const GIT_SHA = \"$SHA_SHORT\";" > src/environments/sha.ts + echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - name: Populate google-services.json env: GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }} @@ -61,7 +57,7 @@ jobs: - name: Install Dependencies run: yarn install - name: Set Deployment - run: yarn scripts deployment set $DEPLOYMENT_NAME + run: yarn workflow deployment set $DEPLOYMENT_NAME - name: Build Angular Project run: yarn build - name: Sync Android Files diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index fdc35ab6af..f92278eb1f 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -24,7 +24,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: lfs: true ref: "${{github.event.inputs.build_branch}}" @@ -36,23 +36,19 @@ jobs: run: | echo ${{github.event.inputs.build_branch}} | sed 's/.*\///' echo "DEPLOYMENT_NAME=$(echo ${{github.event.inputs.build_branch}} | sed 's/.*\///')" >> $GITHUB_ENV; + echo "SHA_SHORT=$(git rev-parse --short=6 HEAD)" >> $GITHUB_ENV shell: bash - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- - name: Setup node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: "16" - - name: Populate firebaseConfig.ts + node-version: 16 + cache: 'yarn' + - name: Populate environment config env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} - run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + run: | + echo "export const GIT_SHA = \"$SHA_SHORT\";" > src/environments/sha.ts + echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - name: Populate google-services.json env: GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }} @@ -60,7 +56,7 @@ jobs: - name: Install Dependencies run: yarn install - name: Set Deployment - run: yarn scripts deployment set $DEPLOYMENT_NAME + run: yarn workflow deployment set $DEPLOYMENT_NAME - name: Build Angular Project run: yarn build - name: Sync Android Files diff --git a/.github/workflows/deployment-hosting.yml b/.github/workflows/deployment-hosting.yml index 739751f777..d439958e6b 100644 --- a/.github/workflows/deployment-hosting.yml +++ b/.github/workflows/deployment-hosting.yml @@ -12,7 +12,7 @@ jobs: build_and_deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: lfs: true # Extract deployment name as the slug of target PR branch via string operators, e.g. /deployment/plh_tz -> plh_tz @@ -23,30 +23,53 @@ jobs: then echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_ENV; \ else echo "DEPLOYMENT_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV; \ fi; + echo "SHA_SHORT=$(git rev-parse --short=6 HEAD)" >> $GITHUB_ENV shell: bash - run: | echo $GITHUB_REF echo $DEPLOYMENT_NAME + echo $SHA_SHORT - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: 16.x - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- - - name: Populate firebaseConfig.ts + node-version: 16 + cache: 'yarn' + - name: Populate environment config env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} - run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + run: | + echo "export const GIT_SHA = \"$SHA_SHORT\";" > src/environments/sha.ts + echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - run: yarn install - name: Set Scripts Deployment - run: yarn scripts deployment set $DEPLOYMENT_NAME - - run: yarn build + run: yarn workflow deployment set $DEPLOYMENT_NAME + ### Generate and upload sourcemaps ### + - run: yarn build --configuration "production,glitchtip" + - name: set app version + run: echo "APP_VERSION=$(echo "$(cat package.json | jq -r '.version')")" >> $GITHUB_ENV + - name: Upload sourcemaps + run: | + npx @sentry/cli releases delete ${DEPLOYMENT_NAME}-${APP_VERSION}-${SHA_SHORT} + npx @sentry/cli releases files ${DEPLOYMENT_NAME}-${APP_VERSION}-${SHA_SHORT} upload-sourcemaps www/ + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN}} + SENTRY_URL: https://app.glitchtip.com/ + SENTRY_ORG: idems + SENTRY_PROJECT: ${{env.DEPLOYMENT_NAME}} + continue-on-error: true + - name: Store sourcemaps artifact + uses: actions/upload-artifact@v3 + with: + name: sourcemaps-$SHA_SHORT + path: www/*.map + # Only used for short-term debugging purposes or manual upload + retention-days: 30 + - name: Remove sourcemaps from build + run: | + echo $(ls www) + find . -name "*.map" -type f -delete + echo $(ls www) + ### Deploy ### - uses: FirebaseExtended/action-hosting-deploy@v0 with: repoToken: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/deployment-preview.yml b/.github/workflows/deployment-preview.yml deleted file mode 100644 index e5a1132389..0000000000 --- a/.github/workflows/deployment-preview.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Deploy preview url for labelled PRs -# Specifies deployment target based on pr target branch -# Master -> plh_global -# Deployment/{deployment_name} -> {deployment_name} -name: Deployment Preview -on: - pull_request: - types: [labeled, synchronize] - branches: - - deployment/* - - master -jobs: - build_and_preview: - if: contains(github.event.pull_request.labels.*.name, 'Test - preview') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - lfs: true - # Extract deployment name as the slug of target PR branch via string operators, e.g. /deployment/plh_tz -> plh_tz - # https://www.linuxjournal.com/article/8919, https://github.com/greenbone/gsa/actions/runs/1277581365/workflow - - name: Set Environment Deployment - run: | - if [ "$GITHUB_BASE_REF" = "master" ]; \ - then echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_ENV; \ - else echo "DEPLOYMENT_NAME=${GITHUB_BASE_REF##*/}" >> $GITHUB_ENV; \ - fi; - shell: bash - - run: | - echo $GITHUB_BASE_REF - echo $DEPLOYMENT_NAME - - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: 16.x - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- - - name: Populate firebaseConfig.ts - env: - FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} - run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - - run: yarn install - - name: Set Scripts Deployment - run: yarn scripts deployment set $DEPLOYMENT_NAME - - run: yarn build - - uses: FirebaseExtended/action-hosting-deploy@v0 - with: - repoToken: "${{ secrets.GITHUB_TOKEN }}" - firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_PLH_TEENS_APP1 }}" - projectId: plh-teens-app1 - target: $DEPLOYMENT_NAME - env: - FIREBASE_CLI_PREVIEWS: hostingchannels diff --git a/.github/workflows/deprecated/build-and-upload.yml b/.github/workflows/deprecated/build-and-upload.yml index 5c21bd8a86..8a9debdb51 100644 --- a/.github/workflows/deprecated/build-and-upload.yml +++ b/.github/workflows/deprecated/build-and-upload.yml @@ -9,29 +9,23 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [12.x] + node-version: [16] steps: - name: Install crcmod run: | sudo apt-get install gcc python-dev python-setuptools sudo pip install -I --no-cache-dir -U crcmod - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 with: lfs: true - name: Checkout LFS objects run: git lfs checkout - - name: Cache node modules - uses: actions/cache@v1 - with: - path: ~/node_modules - key: ${{ runner.os }}-node-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node-yarn- - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} + cache: 'yarn' - name: Setup GCloud uses: GoogleCloudPlatform/github-actions/setup-gcloud@master with: @@ -47,7 +41,7 @@ jobs: - name: yarn install run: yarn install - name: Set Deployment - run: yarn scripts deployment set "$APP_DEPLOYMENT_NAME" + run: yarn workflow deployment set "$APP_DEPLOYMENT_NAME" env: APP_DEPLOYMENT_NAME: ${{ secrets.APP_DEPLOYMENT_NAME }} - name: yarn build diff --git a/.github/workflows/deprecated/pr-build.yml b/.github/workflows/deprecated/pr-build.yml index d5c1b8238b..115e29aab6 100644 --- a/.github/workflows/deprecated/pr-build.yml +++ b/.github/workflows/deprecated/pr-build.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [12.x] + node-version: [16] steps: - name: Get PR Number @@ -16,20 +16,16 @@ jobs: PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") echo "PR Number is $PR_NUMBER" echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 with: lfs: true - name: Checkout LFS objects run: git lfs checkout - - name: Cache node modules - uses: actions/cache@v1 - with: - path: ./node_modules - key: ${{ runner.os }}-node-modules-yarn-${{ hashFiles('**/yarn.lock') }} - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} + cache: 'yarn' - name: Populate firebaseConfig.ts env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} @@ -37,7 +33,7 @@ jobs: - name: yarn install run: yarn install - name: Set Deployment - run: yarn scripts deployment set "$APP_DEPLOYMENT_NAME" + run: yarn workflow deployment set "$APP_DEPLOYMENT_NAME" env: APP_DEPLOYMENT_NAME: ${{ secrets.APP_DEPLOYMENT_NAME }} - name: Build Angular for PR diff --git a/.github/workflows/documentation-deploy.yml b/.github/workflows/documentation-deploy.yml index b401fd06d8..7a884e4b33 100644 --- a/.github/workflows/documentation-deploy.yml +++ b/.github/workflows/documentation-deploy.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout main - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: lfs: true - name: Remove Git LFS requirements diff --git a/.github/workflows/documentation-lint.yml b/.github/workflows/documentation-lint.yml new file mode 100644 index 0000000000..225d27eff6 --- /dev/null +++ b/.github/workflows/documentation-lint.yml @@ -0,0 +1,24 @@ +name: Docs Spellcheck +on: + pull_request: + branches: + - master + # Only run action if changes have been made + # to the documentation or components packages + paths: + - "documentation/**" +jobs: + build: + name: Spellcheck + runs-on: ubuntu-latest + steps: + - name: Checkout main + uses: actions/checkout@v3 + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'yarn' + - run: yarn install --immutable + - name: Spellcheck + run: yarn lint:docs \ No newline at end of file diff --git a/.github/workflows/sourcemaps-upload.yml b/.github/workflows/sourcemaps-upload.yml new file mode 100644 index 0000000000..5db4501d1e --- /dev/null +++ b/.github/workflows/sourcemaps-upload.yml @@ -0,0 +1,70 @@ +# Secrets +# SENTRY_AUTH_TOKEN + +# Upload build sourcemaps to 3rd party error monitoring service +# NOTE - likely will merge with deploy code unless can find a tidy way to link + +# NOTE - currently only used for debugging as methods are integrated into build scripts +# Not recommended for full testing as likely file changes during ci scripts across actions will invalidate sourcemaps + +name: Sourcemaps Upload +on: + workflow_dispatch: +jobs: + sourcemaps_upload: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + lfs: true + - name: Set Environment Deployment + # NOTE - setting SHA_SHORT will have different value if target pull_request / workflow_dispatch + # https://github.com/orgs/community/discussions/25191 + run: | + echo "SHA_SHORT=$(git rev-parse --short=6 HEAD)" >> $GITHUB_ENV + echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_ENV + shell: bash + - name: Node ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'yarn' + - name: Populate environment config + env: + FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} + run: | + echo "export const GIT_SHA = \"$SHA_SHORT\";" > src/environments/sha.ts + echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + - run: yarn install + - name: Set Scripts Deployment + run: yarn workflow deployment set $DEPLOYMENT_NAME + ### Generate and upload sourcemaps ### + - run: yarn build --configuration "production,glitchtip" + - name: set app version + run: echo "APP_VERSION=$(echo "$(cat package.json | jq -r '.version')")" >> $GITHUB_ENV + - name: Upload sourcemaps + run: | + npx @sentry/cli releases delete ${DEPLOYMENT_NAME}-${APP_VERSION}-${SHA_SHORT} + npx @sentry/cli releases files ${DEPLOYMENT_NAME}-${APP_VERSION}-${SHA_SHORT} upload-sourcemaps www/ + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN}} + SENTRY_URL: https://app.glitchtip.com/ + SENTRY_ORG: idems + SENTRY_PROJECT: ${{env.DEPLOYMENT_NAME}} + continue-on-error: true + - name: Store sourcemaps artifact + uses: actions/upload-artifact@v3 + with: + name: sourcemaps-$SHA_SHORT + path: www/*.map + # Only used for short-term debugging purposes or manual upload + retention-days: 30 + - name: Remove sourcemaps from build + run: | + echo $(ls www) + find . -name "*.map" -type f -delete + echo $(ls www) + +# NOTE - if testing locally equivalent commands can also be passed as args +# npx @sentry/cli --url https://app.glitchtip.com login +# npx @sentry/cli --url https://app.glitchtip.com releases list --org idems diff --git a/.github/workflows/test-appetize.yml b/.github/workflows/test-appetize.yml index 782cc8e2d9..e4b730bacd 100644 --- a/.github/workflows/test-appetize.yml +++ b/.github/workflows/test-appetize.yml @@ -5,29 +5,45 @@ on: pull_request: types: [labeled, synchronize] branches: + - deployment/* - master jobs: - build: + # Set the deployment name, to be used as the name of the environment in which to run the following job + # Pattern found in this question: https://github.com/actions/runner/issues/998#issue-817330769 + set_deployment_name: if: contains(github.event.pull_request.labels.*.name, 'Test - appetize') + outputs: + DEPLOYMENT_NAME: ${{ steps.get_deployment_name.outputs.DEPLOYMENT_NAME }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + # Extract deployment name as the slug of target PR branch via string operators, e.g. /deployment/plh_tz -> plh_tz + # https://www.linuxjournal.com/article/8919, https://github.com/greenbone/gsa/actions/runs/1277581365/workflow + - name: Get deployment name + id: get_deployment_name + run: | + if [ "$GITHUB_BASE_REF" = "master" ]; \ + then echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_OUTPUT; \ + else echo "DEPLOYMENT_NAME=${GITHUB_BASE_REF##*/}" >> $GITHUB_OUTPUT; \ + fi; + test_appetize: + needs: set_deployment_name + if: contains(github.event.pull_request.labels.*.name, 'Test - appetize') + runs-on: ubuntu-latest + environment: + name: ${{ needs.set_deployment_name.outputs.DEPLOYMENT_NAME }} + env: + DEPLOYMENT_NAME: ${{ needs.set_deployment_name.outputs.DEPLOYMENT_NAME }} + steps: + - uses: actions/checkout@v3 with: lfs: true - name: Checkout LFS objects run: git lfs checkout - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- - name: Setup node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: "16" + node-version: 16 + cache: 'yarn' - name: Populate firebaseConfig.ts env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} @@ -39,9 +55,7 @@ jobs: - name: Install Dependencies run: yarn install - name: Set Deployment - run: yarn scripts deployment set "$APP_DEPLOYMENT_NAME" - env: - APP_DEPLOYMENT_NAME: ${{ secrets.APP_DEPLOYMENT_NAME }} + run: yarn workflow deployment set $DEPLOYMENT_NAME - name: Build Angular Project run: yarn build - name: Sync Android Files @@ -73,4 +87,4 @@ jobs: with: message: | **Android Appetize URL** - ${{ steps.upload.outputs.APPETIZE_APP_URL }}?device=nexus5&osVersion=10.0&scale=75 + ${{ steps.upload.outputs.APPETIZE_APP_URL }}?device=pixel4&osVersion=12.0&scale=75 diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml new file mode 100644 index 0000000000..ba531d8f4f --- /dev/null +++ b/.github/workflows/test-build.yml @@ -0,0 +1,39 @@ +# Basic test to ensure PRs pass build. Default runner except when preview deployment already generated +name: Test Build +on: + pull_request: + branches: + - master +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + lfs: true + # Extract deployment name as the slug of target PR branch via string operators, e.g. /deployment/plh_tz -> plh_tz + # https://www.linuxjournal.com/article/8919, https://github.com/greenbone/gsa/actions/runs/1277581365/workflow + - name: Set Environment Deployment + run: | + echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_ENV; \ + shell: bash + - run: | + echo $GITHUB_BASE_REF + echo $DEPLOYMENT_NAME + - name: Node ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'yarn' + - name: Populate firebaseConfig.ts + env: + FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} + run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + - run: yarn install + - name: Set Deployment + run: yarn workflow deployment set $DEPLOYMENT_NAME + - name: Lint + run: yarn lint && yarn workspace api lint + - name: Unit Test Workspaces + run: yarn test:workspaces + - run: yarn build diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index 2c0d00726d..24e585b9e8 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -19,21 +19,14 @@ jobs: timeout-minutes: 60 steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v3 with: lfs: true - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: 12.x - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- + node-version: 16 + cache: 'yarn' - name: Populate firebaseConfig.ts env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} diff --git a/.github/workflows/test-preview.yml b/.github/workflows/test-preview.yml new file mode 100644 index 0000000000..290d770377 --- /dev/null +++ b/.github/workflows/test-preview.yml @@ -0,0 +1,56 @@ +# Deploy preview url for labelled PRs +# Specifies deployment target based on pr target branch +# Master -> plh_global +# Deployment/{deployment_name} -> {deployment_name} +name: Deployment Preview +on: + pull_request: + types: [labeled, synchronize] + branches: + - deployment/* + - master +jobs: + build_and_preview: + if: contains(github.event.pull_request.labels.*.name, 'Test - preview') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + lfs: true + # Extract deployment name as the slug of target PR branch via string operators, e.g. /deployment/plh_tz -> plh_tz + # https://www.linuxjournal.com/article/8919, https://github.com/greenbone/gsa/actions/runs/1277581365/workflow + - name: Set Environment Deployment + run: | + if [ "$GITHUB_BASE_REF" = "master" ]; \ + then echo "DEPLOYMENT_NAME=plh_global" >> $GITHUB_ENV; \ + else echo "DEPLOYMENT_NAME=${GITHUB_BASE_REF##*/}" >> $GITHUB_ENV; \ + fi; + echo "SHA_SHORT=`echo ${{github.event.pull_request.head.sha}} | cut -c1-6`" >> $GITHUB_ENV + shell: bash + - run: | + echo $GITHUB_BASE_REF + echo $DEPLOYMENT_NAME + - name: Node ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'yarn' + - name: Populate environment config + env: + FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} + run: | + echo "export const GIT_SHA = \"$SHA_SHORT\";" > src/environments/sha.ts + echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts + - run: yarn install + - name: Set Scripts Deployment + run: yarn workflow deployment set $DEPLOYMENT_NAME + - run: yarn build --configuration "production,preview" + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: "${{ secrets.GITHUB_TOKEN }}" + firebaseServiceAccount: "${{ secrets.FIREBASE_SERVICE_ACCOUNT_PLH_TEENS_APP1 }}" + projectId: plh-teens-app1 + target: "${{env.DEPLOYMENT_NAME}}" + expires: 14d + env: + FIREBASE_CLI_PREVIEWS: hostingchannels diff --git a/.github/workflows/test-visual-compare.yml b/.github/workflows/test-visual-compare.yml index da34320bf9..8a9422381b 100644 --- a/.github/workflows/test-visual-compare.yml +++ b/.github/workflows/test-visual-compare.yml @@ -11,21 +11,14 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 with: lfs: true - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: 12.x - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- + node-version: 16 + cache: 'yarn' # Alt implementation to DL artifact using action instead of download script @@ -47,19 +40,19 @@ jobs: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - run: yarn install + # Currently all tests are run against global deployment as this contains debug sheets + # In the future we will want to move this to a custom deployment for testing purposes - name: Set Deployment - run: yarn scripts deployment set "$APP_DEPLOYMENT_NAME" - env: - APP_DEPLOYMENT_NAME: ${{ secrets.APP_DEPLOYMENT_NAME }} - - name: Start server and compare screenshots - # Will always throw error even if successful at end as yarn start script terminated abruptly by\ - # concurrently kill after test-visual complete - continue-on-error: true + run: yarn workflow deployment set "plh_global" + # Create a production build and serve via a local webserver + # HACK - as lifecycle_actions block template view simply remove them all + - name : Create production build run: | - npx concurrently --kill-others \ - "yarn start" \ - "npx wait-on --timeout 1200000 http-get://localhost:4200 && \ - yarn workspace test-visual start compare --concurrency 5" + yarn build + rm -R www/assets/app_data/sheets/data_list/lifecycle_actions + # Serve production build locally and generate screenshots. Gracefully terminate server after completion + - name: Start server and compare screenshots + run: yarn workspace test-visual start compare --concurrency 5 --serve-www - name: Upload artifact uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/test-visual-generate.yml b/.github/workflows/test-visual-generate.yml index 8995093901..dd3c5ca5d7 100644 --- a/.github/workflows/test-visual-generate.yml +++ b/.github/workflows/test-visual-generate.yml @@ -10,40 +10,33 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 with: lfs: true - name: Node ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: - node-version: 12.x - - name: Cache node modules - uses: actions/cache@v2 - with: - path: ./.yarn/cache - # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number - key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn-v1- + node-version: 16 + cache: 'yarn' - name: Populate firebaseConfig.ts env: FIREBASE_CONFIG_TS: ${{ secrets.FIREBASE_CONFIG_TS }} run: echo $FIREBASE_CONFIG_TS > src/environments/firebaseConfig.ts - run: yarn install + # Currently all tests are run against global deployment as this contains debug sheets + # In the future we will want to move this to a custom deployment for testing purposes - name: Set Deployment - run: yarn scripts deployment set "$APP_DEPLOYMENT_NAME" - env: - APP_DEPLOYMENT_NAME: ${{ secrets.APP_DEPLOYMENT_NAME }} - - name: Start server and generate screenshots - # Will always throw error even if successful at end as yarn start script terminated abruptly by\ - # concurrently kill after test-visual complete - continue-on-error: true + run: yarn workflow deployment set "plh_global" + # Create a production build and serve via a local webserver + # HACK - as lifecycle_actions block template view simply remove them all + - name : Create production build run: | - npx concurrently --kill-others \ - "yarn start" \ - "npx wait-on --timeout 1200000 http-get://localhost:4200 && \ - yarn workspace test-visual start generate --concurrency 5" - - name: test + yarn build + rm -R www/assets/app_data/sheets/data_list/lifecycle_actions + # Serve production build locally and generate screenshots. Gracefully terminate server after completion + - name: Start server and generate screenshots + run: yarn workspace test-visual start generate --concurrency 5 --serve-www + - name: Log output folder contents run: ls packages/test-visual/output/screenshots - name: Upload screenshots uses: actions/upload-artifact@v2 diff --git a/.gitignore b/.gitignore index 9a232058c9..69980a48df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,65 +1,77 @@ -# Specifies intentionally untracked files to ignore when using Git -# http://git-scm.com/docs/gitignore - -*~ -*.sw[mnpcod] -.tmp -*.tmp -*.tmp.* -*.sublime-project -*.sublime-workspace -.DS_Store -Thumbs.db -UserInterfaceState.xcuserstate -$RECYCLE.BIN/ - -*.log -log.txt -npm-debug.log* - -/.idea -/.ionic -/.sass-cache -/.sourcemaps -/.versions -.vscode/* -!.vscode/launch.json -/coverage -/dist -node_modules -/platforms -/plugins -/www -yarn.lock.json -google-services.json - -resources/android -resources/ios -package-lock.json -src/environments/firebaseConfig.ts -**/*.jks -.firebase - -/scripts/input -/scripts/output -/scripts/plh-spreadsheet/input -/scripts/plh-spreadsheet/output - -.env -scripts/config/token.json -.eslintcache -report.* - -# Ignore yarn-v2 dependencies -# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored -.yarn/* -!.yarn/patches -!.yarn/releases -!.yarn/plugins -!.yarn/sdks -!.yarn/versions -.pnp.* -node_modules -.vs/slnx.sqlite - -.angular +*~ +*.sw[mnpcod] +.tmp +*.tmp +*.tmp.* +*.sublime-project +*.sublime-workspace +.DS_Store +Thumbs.db +UserInterfaceState.xcuserstate +$RECYCLE.BIN/ +~$*.xlsx + +*.log +log.txt +npm-debug.log* + +/.idea +/.ionic +/.sass-cache +/.sourcemaps +/.versions +.vscode/* +!.vscode/launch.json +!.vscode/extensions.json +/coverage +/dist +node_modules +/platforms +/plugins +/www +yarn.lock.json +google-services.json + +resources/android +resources/ios +package-lock.json +src/environments/firebaseConfig.ts +src/assets/app_data +**/*.jks +.firebase + +/scripts/input +/scripts/output +/scripts/plh-spreadsheet/input +/scripts/plh-spreadsheet/output + +.env +scripts/config/token.json + +.eslintcache +report.* + +# Ignore yarn-v2 dependencies +# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored +.yarn/* +!.yarn/patches +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions +.pnp.* +node_modules +.vs/slnx.sqlite + +.angular +.gradle + +# Ignore auto-lock-install +yarn.auto-install + +# Ignore supabase CLI config folder +# Generated by https://supabase.com/docs/reference/cli/supabase-init +supabase + +# Avoid comitting private keys +private.key \ No newline at end of file diff --git a/.husky/post-checkout b/.husky/post-checkout new file mode 100755 index 0000000000..64778a1e1b --- /dev/null +++ b/.husky/post-checkout @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + diff --git a/.husky/post-merge b/.husky/post-merge new file mode 100755 index 0000000000..64778a1e1b --- /dev/null +++ b/.husky/post-merge @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + diff --git a/.husky/post-rewrite b/.husky/post-rewrite new file mode 100755 index 0000000000..1525982699 --- /dev/null +++ b/.husky/post-rewrite @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000000..5a182ef106 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 0000000000..81a9cc6398 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,3 @@ +#!/bin/sh +command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/pre-push.\n"; exit 2; } +git lfs pre-push "$@" diff --git a/.husky/prepare.js b/.husky/prepare.js new file mode 100644 index 0000000000..d6ad0aa391 --- /dev/null +++ b/.husky/prepare.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const path = require("path"); +const fs = require("fs"); +const { spawnSync } = require("child_process"); +const husky = require("husky"); + +const rootDir = path.resolve(__dirname, "../"); +const lockfilePath = path.resolve(rootDir, "yarn.lock"); +const autoInstallPath = path.resolve(rootDir, "yarn.auto-install"); + +/** + * Script to track yarn.lock changes and auto-install updates as required + * Creates a `yarn.auto-install` file that tracks time/date of last install + * and runs a new install when outdated. NOTE - this will run additional install + * in cases where yarn lock updated locally (as opposed to incoming git changes) + */ +function yarnAutoInstall() { + if (fs.existsSync(lockfilePath) && fs.existsSync(autoInstallPath)) { + const lockModifiedTime = fs.statSync(lockfilePath).mtime.getTime(); + const autoInstallTime = fs.statSync(autoInstallPath).mtime.getTime(); + if (lockModifiedTime !== autoInstallTime) { + // we don't strictly need husky enabled now but seems like a sensible time to install + // as postinstall hook can sometimes fail and break yarn install state + ensureHuskyEnabled(); + installPackages(); + } + } else { + installPackages(); + } +} + +function ensureHuskyEnabled() { + husky.install(); +} + +function installPackages() { + const command = `yarn install --immutable`; + console.log(`Changes to lockfile found, running \`${command}\``); + spawnSync(command, { cwd: rootDir, shell: true, stdio: "inherit" }); + const lockModifiedTime = fs.statSync(lockfilePath).mtime; + const autoInstallContents = `Installed for yarn.lock modified:\n${lockModifiedTime.toISOString()}`; + fs.writeFileSync(autoInstallPath, autoInstallContents); + fs.utimesSync(autoInstallPath, lockModifiedTime, lockModifiedTime); +} + +/** + * Legacy/Alt method to check for changes via git + * NOTE - hard to determine exact diff required to track any changes (wip) + * Adapted from https://github.com/frontsideair/yarnhook/blob/main/packages/yarnhook/index.js + * and https://dev.to/zirkelc/automatically-install-npm-dependencies-on-git-pull-bg0 + */ +function yarnAutoInstallGit() { + // https://git-scm.com/docs/git-diff#_examples + const output = spawnSync("git", ["diff", "HEAD@{1}..HEAD@{0}", "--", lockfilePath], { + cwd: rootDir, + stdio: "pipe", + }); + if (output.stdout) { + console.log("stdout", output.stdout.toString("utf-8")); + return true; + } +} + +// Run when executed directyly +if (require.main === module) { + yarnAutoInstall(); +} diff --git a/.idems_app/.gitignore b/.idems_app/.gitignore index eb6dc07760..8568174a81 100644 --- a/.idems_app/.gitignore +++ b/.idems_app/.gitignore @@ -1,4 +1,10 @@ -deployments/**/*.* -!deployments/example/config.ts -!deployments/plh/*.ts -!deployments/early_family_math/*.ts +deployments/* +!deployments/early_family_math +!deployments/local +!deployments/plh* +!deployments/wash +!deployments/pfr +!deployments/sandbox + +# Renamed to activeDeployment.json, include here so people can remove +!/deployments/default.json \ No newline at end of file diff --git a/.idems_app/deployments/c2dev/repo b/.idems_app/deployments/c2dev/repo deleted file mode 160000 index 609296a73c..0000000000 --- a/.idems_app/deployments/c2dev/repo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 609296a73ca47cc730b4f7bc9861fa51f82e591d diff --git a/.idems_app/deployments/early_family_math/.gitignore b/.idems_app/deployments/early_family_math/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/early_family_math/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/early_family_math/config.ts b/.idems_app/deployments/early_family_math/config.ts index c92d9f53f8..a8696f2f0b 100644 --- a/.idems_app/deployments/early_family_math/config.ts +++ b/.idems_app/deployments/early_family_math/config.ts @@ -1,28 +1,20 @@ -import { IDeploymentConfig } from "data-models"; -import { DEFAULT_CONSTANTS } from "data-models"; +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("early_family_math"); -/** - * The default config should ideally be a superset of any extended configs - * to allow for easier post-processing - */ -const config: IDeploymentConfig = { - name: "early_family_math", - google_drive: { - sheets_folder_id: "1hiIYr8nnLcP1kd2xTFAQx3MvVp7IlPQL", - assets_folder_id: "1VkoezEbbeCIeV5IksorFt5lFp6AURYur", - }, - app_data: {}, - translations: { - filter_language_codes: ["us_en"], - translated_strings_path: "packages/app-data/translations_source/from_translators", - source_strings_path: "packages/app-data/translations_source/to_translate", - }, - app_constants: DEFAULT_CONSTANTS, +config.google_drive = { + sheets_folder_id: "1hiIYr8nnLcP1kd2xTFAQx3MvVp7IlPQL", + assets_folder_id: "1VkoezEbbeCIeV5IksorFt5lFp6AURYur", +}; +config.translations = { + filter_language_codes: ["us_en", "es_es"], + translated_strings_path: "packages/app-data/translations_source/from_translators", + source_strings_path: "packages/app-data/translations_source/to_translate", }; // Override constants -config.app_constants.APP_LANGUAGES.default = "us_en"; -config.app_constants.APP_HEADER_DEFAULTS.title = "Early Family Math"; -config.app_constants.APP_SIDEMENU_DEFAULTS.title = "EFM"; -config.app_constants.NOTIFICATION_DEFAULTS.text = "You have a new message from Early Family Math"; +config.app_config.APP_LANGUAGES.default = "us_en"; +config.app_config.APP_HEADER_DEFAULTS.title = "Early Family Math"; +config.app_config.APP_SIDEMENU_DEFAULTS.title = "EFM"; +config.app_config.NOTIFICATION_DEFAULTS.text = "You have a new message from Early Family Math"; +config.app_config.APP_THEMES.available = ["default", "professional"]; export default config; diff --git a/.idems_app/deployments/example/config.ts b/.idems_app/deployments/example/config.ts deleted file mode 100644 index 6f52a54ff0..0000000000 --- a/.idems_app/deployments/example/config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IDeploymentConfig } from "data-models"; - -const config: IDeploymentConfig = { - name: "Example Config", - google_drive: { - sheets_folder_id: "", - assets_folder_id: "", - }, -}; -export default config; diff --git a/.idems_app/deployments/local/.gitignore b/.idems_app/deployments/local/.gitignore new file mode 100644 index 0000000000..1470977b23 --- /dev/null +++ b/.idems_app/deployments/local/.gitignore @@ -0,0 +1,6 @@ +app_data +cache +tasks +config.json +sheets/ +!sheets/demo.xlsx \ No newline at end of file diff --git a/.idems_app/deployments/local/assets/.gitignore b/.idems_app/deployments/local/assets/.gitignore new file mode 100644 index 0000000000..e47a516902 --- /dev/null +++ b/.idems_app/deployments/local/assets/.gitignore @@ -0,0 +1,2 @@ +**/*.* +!.gitignore \ No newline at end of file diff --git a/.idems_app/deployments/local/config.ts b/.idems_app/deployments/local/config.ts new file mode 100644 index 0000000000..cd03937c01 --- /dev/null +++ b/.idems_app/deployments/local/config.ts @@ -0,0 +1,10 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("local"); + +// NOTE - local deployment does not download from google drive but still uses +// folder IDs to mock download process +config.google_drive={assets_folder_id:'assets',sheets_folder_id:'sheets'} + +config.app_data.output_path= "./app_data" + +export default config; diff --git a/.idems_app/deployments/local/sheets/demo.xlsx b/.idems_app/deployments/local/sheets/demo.xlsx new file mode 100644 index 0000000000..203e4162f8 --- /dev/null +++ b/.idems_app/deployments/local/sheets/demo.xlsx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d7204d678b3ca8780caef25ae5f1a01de1fbdd724eb47624664864babc349b1 +size 51549 diff --git a/.idems_app/deployments/pfr/.gitignore b/.idems_app/deployments/pfr/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/pfr/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/pfr/config.ts b/.idems_app/deployments/pfr/config.ts new file mode 100644 index 0000000000..f8713a5081 --- /dev/null +++ b/.idems_app/deployments/pfr/config.ts @@ -0,0 +1,18 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("pfr") + +config.google_drive = { + sheets_folder_id: "1NCaqs4T3sbFVV0jh_aTmbeSI517WchVv", + assets_folder_id: "1gFEuVLP4r2FVLTuPSMMul5RxhGpYy8TU", +} +config.error_logging = { + dsn: "https://b28164f40cf444d5860c68ce3c66c362@app.glitchtip.com/2975", +}; + +// Override any app constants here +config.app_config.APP_SIDEMENU_DEFAULTS.title = "Parenting for Respectability"; +config.app_config.APP_HEADER_DEFAULTS.title = "Parenting for Respectability"; +config.app_config.NOTIFICATION_DEFAULTS.title = "New message from Parenting for Respectability"; +config.app_config.NOTIFICATION_DEFAULTS.text = "You have a new message from Parenting for Respectability"; + +export default config; \ No newline at end of file diff --git a/.idems_app/deployments/plh/.gitignore b/.idems_app/deployments/plh/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/plh/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/plh/config.ts b/.idems_app/deployments/plh/config.ts new file mode 100644 index 0000000000..8b1d6fcefd --- /dev/null +++ b/.idems_app/deployments/plh/config.ts @@ -0,0 +1,38 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("plh"); +import { SKINS } from "./skins"; + +/** + * The default config should ideally be a superset of any extended configs + * to allow for easier post-processing + */ + +config.google_drive = { + sheets_folder_id: "1n221Zv9LYuwxmjhiboq8vhQg67_K9L5f", + assets_folder_id: "1dp9QAQ84m8pm0IBQTSPXe1ramyynKPNn", +}; +config.android = { + splash_asset_path: "packages/app-data/assets/global/android/splash.png", + icon_asset_path: "packages/app-data/assets/global/android/icon.png", + icon_asset_foreground_path: "packages/app-data/assets/global/android/icon-foreground.png", + icon_asset_background_path: "packages/app-data/assets/global/android/icon-background.png", +}; +config.translations = { + translated_strings_path: "packages/app-data/translations_source/from_translators", + source_strings_path: "packages/app-data/translations_source/to_translate", +}; + +config.app_data.assets_filter_function = (fileEntry) => !fileEntry.relativePath.includes("uncompressed") + +config.app_config.APP_LANGUAGES.default = "gb_en"; +config.app_config.APP_SIDEMENU_DEFAULTS.title = "ParentApp"; +config.app_config.APP_HEADER_DEFAULTS.title = "ParentApp"; +config.app_config.NOTIFICATION_DEFAULTS.title = "New message from ParentApp"; +config.app_config.NOTIFICATION_DEFAULTS.text = "You have a new message from ParentApp"; +config.app_config.APP_SKINS.defaultSkinName = SKINS.modular.name; +config.app_config.APP_SKINS.available = [SKINS.modular, SKINS.weekly_workshop]; +config.app_config.APP_THEMES.available = ["default", "professional"]; +config.app_config.APP_UPDATES.enabled = true +config.app_config.APP_UPDATES.completeUpdateTemplate = "app_update_complete" + +export default config; diff --git a/.idems_app/deployments/plh/global.config.ts b/.idems_app/deployments/plh/global.config.ts deleted file mode 100644 index 4a99bea896..0000000000 --- a/.idems_app/deployments/plh/global.config.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { IDeploymentConfig } from "data-models"; -import { DEFAULT_CONSTANTS } from "data-models"; - -const app_constants = DEFAULT_CONSTANTS; -/** Define default startup actions for plh app */ -app_constants.APP_INITIALISATION_DEFAULTS.app_first_launch_actions = [ - { - type: "run_survey", - value: "plhIntroSplash", - }, - { - type: "template_popup", - value: "accept_terms", - }, - { - type: "template_popup", - value: "language_select", - }, - { - type: "template_popup", - value: "organisation_registration", - }, - { - type: "tour_start", - value: "intro_tour", - }, -]; - -/** - * The default config should ideally be a superset of any extended configs - * to allow for easier post-processing - */ -const config: IDeploymentConfig = { - name: "plh_global", - app_constants: DEFAULT_CONSTANTS, - google_drive: { - sheets_folder_id: "1n221Zv9LYuwxmjhiboq8vhQg67_K9L5f", - assets_folder_id: "1dp9QAQ84m8pm0IBQTSPXe1ramyynKPNn", - }, - app_data: {}, - translations: { - translated_strings_path: "packages/app-data/translations_source/from_translators", - source_strings_path: "packages/app-data/translations_source/to_translate", - }, -}; - -config.app_constants.APP_LANGUAGES.default = "gb_en"; -config.app_constants.APP_SIDEMENU_DEFAULTS.title = "ParentApp"; -config.app_constants.APP_HEADER_DEFAULTS.title = "ParentApp"; -config.app_constants.NOTIFICATION_DEFAULTS.text = "You have a new message from ParentApp"; - -export default config; diff --git a/.idems_app/deployments/plh/skins/index.ts b/.idems_app/deployments/plh/skins/index.ts new file mode 100644 index 0000000000..085825dc40 --- /dev/null +++ b/.idems_app/deployments/plh/skins/index.ts @@ -0,0 +1,4 @@ +import weekly_workshop from "./weekly_workshop"; +import modular from "./modular"; + +export const SKINS = { weekly_workshop, modular }; diff --git a/.idems_app/deployments/plh/skins/modular.ts b/.idems_app/deployments/plh/skins/modular.ts new file mode 100644 index 0000000000..b504fcb1b6 --- /dev/null +++ b/.idems_app/deployments/plh/skins/modular.ts @@ -0,0 +1,15 @@ +import { IAppSkin } from "data-models"; + +const modular: IAppSkin = { + name: "modular", + appConfig: { + APP_THEMES: { + defaultThemeName: "professional" + }, + APP_FOOTER_DEFAULTS: { + templateName: "footer" + } + } +}; + +export default modular; diff --git a/.idems_app/deployments/plh/skins/weekly_workshop.ts b/.idems_app/deployments/plh/skins/weekly_workshop.ts new file mode 100644 index 0000000000..5a727bb37a --- /dev/null +++ b/.idems_app/deployments/plh/skins/weekly_workshop.ts @@ -0,0 +1,12 @@ +import { IAppSkin } from "data-models"; + +const weekly_workshop: IAppSkin = { + name: "weekly_workshop", + appConfig: { + APP_THEMES: { + defaultThemeName: "default" + } + } +}; + +export default weekly_workshop; diff --git a/.idems_app/deployments/plh/tz.config.ts b/.idems_app/deployments/plh/tz.config.ts deleted file mode 100644 index 8012b5a3a5..0000000000 --- a/.idems_app/deployments/plh/tz.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -import DEFAULT_CONFIG from "./global.config"; - -/** TZ config extends the default config **/ - -const config = DEFAULT_CONFIG; -config.name = "plh_tz"; -config.app_data.sheets_filter_function = (flow) => !["debug"].includes(flow.flow_subtype); -config.translations.filter_language_codes = ["tz_en", "tz_sw"]; - -// Override constants -config.app_constants.APP_LANGUAGES.default = "tz_en"; -config.app_constants.APP_SIDEMENU_DEFAULTS.title = "ParentApp (TZ)"; - -export default config; diff --git a/.idems_app/deployments/plh/za.config.ts b/.idems_app/deployments/plh/za.config.ts deleted file mode 100644 index 984f8f142b..0000000000 --- a/.idems_app/deployments/plh/za.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -import DEFAULT_CONFIG from "./global.config"; - -/** ZA config extends the default config **/ - -const config = DEFAULT_CONFIG; -config.name = "plh_za"; -config.app_data.sheets_filter_function = (flow) => !["debug"].includes(flow.flow_subtype); -config.translations.filter_language_codes = ["za_en", "za_zu", "za_xh", "za_tn", "za_st", "za_af"]; - -// Override constants -config.app_constants.APP_LANGUAGES.default = "za_en"; -config.app_constants.APP_SIDEMENU_DEFAULTS.title = "ParentApp (ZA)"; - -export default config; diff --git a/.idems_app/deployments/plh_global/.gitignore b/.idems_app/deployments/plh_global/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/plh_global/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/plh_global/config.ts b/.idems_app/deployments/plh_global/config.ts new file mode 100644 index 0000000000..cf28104943 --- /dev/null +++ b/.idems_app/deployments/plh_global/config.ts @@ -0,0 +1,13 @@ +import { extendDeploymentConfig } from "scripts"; + +/** + * plh_global is the same as the base plh config, but retained + * for legacy compatibility (to review in future for removal) + **/ +const config = extendDeploymentConfig({ name: "plh_global", parent: "plh" }); + +config.error_logging = { + dsn: "https://a8b2897d48e84c5fa4398b4eb6158480@app.glitchtip.com/2230", +}; + +export default config; \ No newline at end of file diff --git a/.idems_app/deployments/plh_kids/.gitignore b/.idems_app/deployments/plh_kids/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/plh_kids/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/plh_kids/config.ts b/.idems_app/deployments/plh_kids/config.ts new file mode 100644 index 0000000000..ea8d673351 --- /dev/null +++ b/.idems_app/deployments/plh_kids/config.ts @@ -0,0 +1,29 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("plh_kids"); +import { SKINS } from "../plh/skins"; + +config.google_drive = { + sheets_folder_id: "1Y8uC9-rqQtsjQgUfeX9qp-vNzsFDUQFU", + assets_folder_id: "1abaL1QGd33NqqLoKuo2t9fVWKmh5ouM9", +}; +config.android = { + splash_asset_path: "packages/app-data/assets/global/android/splash.png", + icon_asset_path: "packages/app-data/assets/global/android/icon.png", + icon_asset_foreground_path: "packages/app-data/assets/global/android/icon-foreground.png", + icon_asset_background_path: "packages/app-data/assets/global/android/icon-background.png", +}; +config.translations = { + translated_strings_path: "packages/app-data/translations_source/from_translators", + source_strings_path: "packages/app-data/translations_source/to_translate", +} +// Override any app constants here +config.app_config.APP_HEADER_DEFAULTS.title = "ParentApp for Kids" +config.app_config.APP_SIDEMENU_DEFAULTS.title = "ParentApp for Kids" +config.app_config.APP_LANGUAGES.default = "gb_en"; +config.app_config.NOTIFICATION_DEFAULTS.title = "New message from ParentApp for Kids"; +config.app_config.NOTIFICATION_DEFAULTS.text = "You have a new message from ParentApp for Kids"; +config.app_config.APP_SKINS.defaultSkinName = SKINS.modular.name; +config.app_config.APP_SKINS.available = [SKINS.modular, SKINS.weekly_workshop]; +config.app_config.APP_THEMES.available = ["default", "professional"]; + +export default config; \ No newline at end of file diff --git a/.idems_app/deployments/plh_tz/.gitignore b/.idems_app/deployments/plh_tz/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/plh_tz/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/plh_tz/config.ts b/.idems_app/deployments/plh_tz/config.ts new file mode 100644 index 0000000000..531d8726f3 --- /dev/null +++ b/.idems_app/deployments/plh_tz/config.ts @@ -0,0 +1,18 @@ +import { extendDeploymentConfig } from "scripts"; + +/** TZ config extends the default config **/ +const config = extendDeploymentConfig({ name: "plh_tz", parent: "plh" }); + +config.app_data!.sheets_filter_function = (flow) => + !["debug", "component_demo", "example_hardcoded", "campaign_rows_debug"].includes( + flow.flow_subtype! + ); +config.translations!.filter_language_codes = ["tz_en", "tz_sw"]; + +// Override constants +config.app_config!.APP_LANGUAGES!.default = "tz_sw"; +config.app_config!.APP_SIDEMENU_DEFAULTS!.title = "ParentApp (TZ)"; +config.app_config!.APP_AUTHENTICATION_DEFAULTS!.enforceLogin = true; +config.error_logging = { dsn: "https://1bfed3b77f4e4a0f9b55b510915c7f1c@app.glitchtip.com/2233" }; + +export default config; diff --git a/.idems_app/deployments/plh_za/.gitignore b/.idems_app/deployments/plh_za/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/plh_za/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/plh_za/config.ts b/.idems_app/deployments/plh_za/config.ts new file mode 100644 index 0000000000..5ced713c9b --- /dev/null +++ b/.idems_app/deployments/plh_za/config.ts @@ -0,0 +1,17 @@ +import { extendDeploymentConfig } from "scripts"; + +/** ZA config extends the default config **/ +const config = extendDeploymentConfig({ name: "plh_za", parent: "plh" }); + +config.app_data!.sheets_filter_function = (flow) => + !["debug", "component_demo", "example_hardcoded", "campaign_rows_debug"].includes( + flow.flow_subtype! + ); +config.translations!.filter_language_codes = ["za_en", "za_zu", "za_xh", "za_tn", "za_st", "za_af"]; + +// Override constants +config.app_config!.APP_LANGUAGES!.default = "za_en"; +config.app_config!.APP_SIDEMENU_DEFAULTS!.title = "ParentApp (ZA)"; + +config.error_logging = { dsn: "https://45f6a26d9dfd494d844a980c6881c35f@app.glitchtip.com/2437" }; +export default config; diff --git a/.idems_app/deployments/sandbox/.gitignore b/.idems_app/deployments/sandbox/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/sandbox/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/sandbox/config.ts b/.idems_app/deployments/sandbox/config.ts new file mode 100644 index 0000000000..5c4602593b --- /dev/null +++ b/.idems_app/deployments/sandbox/config.ts @@ -0,0 +1,12 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("sandbox") + +config.google_drive = { + sheets_folder_id: "1f4M6vPKUI3ifPzb1V_mOPbAGUsLzapmL", + assets_folder_id: "1K_7bFwjtyXzRyfFqwOoLjpPPieV_zCtj", +} +// Override any app constants here +config.app_config.APP_HEADER_DEFAULTS.title = "Sandbox" +config.app_config.APP_SIDEMENU_DEFAULTS.title = "Sandbox" + +export default config; diff --git a/.idems_app/deployments/wash/.gitignore b/.idems_app/deployments/wash/.gitignore new file mode 100644 index 0000000000..45f6393bea --- /dev/null +++ b/.idems_app/deployments/wash/.gitignore @@ -0,0 +1,4 @@ +app_data +cache +tasks +config.json \ No newline at end of file diff --git a/.idems_app/deployments/wash/config.ts b/.idems_app/deployments/wash/config.ts new file mode 100644 index 0000000000..705481253f --- /dev/null +++ b/.idems_app/deployments/wash/config.ts @@ -0,0 +1,37 @@ +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("wash"); + +config.google_drive = { + sheets_folder_id: "1AQqtRLoNuhbHP3KPzzQqzZcjdttT0rr8", + assets_folder_id: "1hebyXSR-rkpYLH_No2QTvCQiYfbh1RE9", +}; + +config.name = "wash" +config.google_drive = { + sheets_folder_id: "1AQqtRLoNuhbHP3KPzzQqzZcjdttT0rr8", + assets_folder_id: "1hebyXSR-rkpYLH_No2QTvCQiYfbh1RE9", +} +config.android = { + splash_asset_path: "packages/app-data/assets/global/android/splash.png", + icon_asset_path: "packages/app-data/assets/global/android/icon.png", + icon_asset_foreground_path: "packages/app-data/assets/global/android/icon-foreground.png", + icon_asset_background_path: "packages/app-data/assets/global/android/icon-background.png", +} +config.error_logging = { + dsn: "https://976f6a201e1049fdb65d3f642724f0f9@app.glitchtip.com/2444", +}; +config.translations = { + filter_language_codes: ["gb_en", "tz_sw"], + translated_strings_path: "packages/app-data/translations_source/from_translators", + source_strings_path: "packages/app-data/translations_source/to_translate", +}; + +config.app_config.APP_LANGUAGES.default = "tz_sw"; +config.app_config.APP_SIDEMENU_DEFAULTS!.title = "WASH App"; +config.app_config.APP_HEADER_DEFAULTS!.title = "WASH App"; +config.app_config.NOTIFICATION_DEFAULTS!.title = "New message from WASH App"; +config.app_config.NOTIFICATION_DEFAULTS!.text = "You have a new message from WASH App"; +config.app_config.APP_UPDATES.enabled = true +config.app_config.APP_UPDATES.completeUpdateTemplate = "app_update_complete" + +export default config; diff --git a/.prettierignore b/.prettierignore index 94eb5abfbf..aaf66de0e4 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,17 @@ -# src data folder -src/data/* src/assets/* # build folder www # markdown files -*.md \ No newline at end of file +*.md +.angular +node_modules +.github +.idems_app +.vscode +.yarn +android +documentation +.venv +packages/app-data/** +.d.ts +dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index de753c537d..8d41a18c95 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,4 @@ { - "printWidth": 100 + "printWidth": 100, + "endOfLine": "crlf" } diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..74635ecc41 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "Syler.sass-indented", + "Angular.ng-template" + ] +} \ No newline at end of file diff --git a/.yarn/releases/yarn-3.1.0.cjs b/.yarn/releases/yarn-3.1.0.cjs deleted file mode 100644 index 8584827cdb..0000000000 --- a/.yarn/releases/yarn-3.1.0.cjs +++ /dev/null @@ -1,768 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mfe=Object.create,Vf=Object.defineProperty,Ofe=Object.defineProperties,Kfe=Object.getOwnPropertyDescriptor,Ufe=Object.getOwnPropertyDescriptors,Hfe=Object.getOwnPropertyNames,hI=Object.getOwnPropertySymbols,Gfe=Object.getPrototypeOf,eb=Object.prototype.hasOwnProperty,lO=Object.prototype.propertyIsEnumerable;var cO=(t,e,r)=>e in t?Vf(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,P=(t,e)=>{for(var r in e||(e={}))eb.call(e,r)&&cO(t,r,e[r]);if(hI)for(var r of hI(e))lO.call(e,r)&&cO(t,r,e[r]);return t},_=(t,e)=>Ofe(t,Ufe(e)),jfe=t=>Vf(t,"__esModule",{value:!0});var qr=(t,e)=>{var r={};for(var i in t)eb.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&hI)for(var i of hI(t))e.indexOf(i)<0&&lO.call(t,i)&&(r[i]=t[i]);return r},Yfe=(t,e)=>()=>(t&&(e=t(t=0)),e),I=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),it=(t,e)=>{for(var r in e)Vf(t,r,{get:e[r],enumerable:!0})},qfe=(t,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Hfe(e))!eb.call(t,i)&&i!=="default"&&Vf(t,i,{get:()=>e[i],enumerable:!(r=Kfe(e,i))||r.enumerable});return t},ie=t=>qfe(jfe(Vf(t!=null?Mfe(Gfe(t)):{},"default",t&&t.__esModule&&"default"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var MO=I((i$e,FO)=>{FO.exports=NO;NO.sync=Ahe;var LO=require("fs");function lhe(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var i=0;i{OO.exports=KO;KO.sync=che;var UO=require("fs");function KO(t,e,r){UO.stat(t,function(i,n){r(i,i?!1:HO(n,e))})}function che(t,e){return HO(UO.statSync(t),e)}function HO(t,e){return t.isFile()&&uhe(t,e)}function uhe(t,e){var r=t.mode,i=t.uid,n=t.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=r&c||r&l&&n===o||r&a&&i===s||r&u&&s===0;return g}});var YO=I((o$e,jO)=>{var s$e=require("fs"),xI;process.platform==="win32"||global.TESTING_WINDOWS?xI=MO():xI=GO();jO.exports=db;db.sync=ghe;function db(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){db(t,e||{},function(s,o){s?n(s):i(o)})})}xI(t,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),r(i,n)})}function ghe(t,e){try{return xI.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var XO=I((a$e,qO)=>{var eu=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",JO=require("path"),fhe=eu?";":":",WO=YO(),zO=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),VO=(t,e)=>{let r=e.colon||fhe,i=t.match(/\//)||eu&&t.match(/\\/)?[""]:[...eu?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],n=eu?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=eu?n.split(r):[""];return eu&&t.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},_O=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=VO(t,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(zO(t));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=JO.join(h,t),d=!h&&/^\.[\\\/]/.test(t)?t.slice(0,2)+p:p;u(l(d,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];WO(c+p,{pathExt:s},(d,m)=>{if(!d&&m)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return r?a(0).then(c=>r(null,c),r):a(0)},hhe=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:i,pathExtExe:n}=VO(t,e),s=[];for(let o=0;o{"use strict";var ZO=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Cb.exports=ZO;Cb.exports.default=ZO});var iK=I((l$e,eK)=>{"use strict";var tK=require("path"),phe=XO(),dhe=$O();function rK(t,e){let r=t.options.env||process.env,i=process.cwd(),n=t.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(t.options.cwd)}catch(a){}let o;try{o=phe.sync(t.command,{path:r[dhe({env:r})],pathExt:e?tK.delimiter:void 0})}catch(a){}finally{s&&process.chdir(i)}return o&&(o=tK.resolve(n?t.options.cwd:"",o)),o}function Che(t){return rK(t)||rK(t,!0)}eK.exports=Che});var nK=I((c$e,mb)=>{"use strict";var Ib=/([()\][%!^"`<>&|;, *?])/g;function mhe(t){return t=t.replace(Ib,"^$1"),t}function Ihe(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(Ib,"^$1"),e&&(t=t.replace(Ib,"^$1")),t}mb.exports.command=mhe;mb.exports.argument=Ihe});var oK=I((u$e,sK)=>{"use strict";sK.exports=/^#!(.*)/});var AK=I((g$e,aK)=>{"use strict";var Ehe=oK();aK.exports=(t="")=>{let e=t.match(Ehe);if(!e)return null;let[r,i]=e[0].replace(/#! ?/,"").split(" "),n=r.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var cK=I((f$e,lK)=>{"use strict";var Eb=require("fs"),yhe=AK();function whe(t){let e=150,r=Buffer.alloc(e),i;try{i=Eb.openSync(t,"r"),Eb.readSync(i,r,0,e,0),Eb.closeSync(i)}catch(n){}return yhe(r.toString())}lK.exports=whe});var hK=I((h$e,uK)=>{"use strict";var Bhe=require("path"),gK=iK(),fK=nK(),Qhe=cK(),bhe=process.platform==="win32",vhe=/\.(?:com|exe)$/i,She=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function xhe(t){t.file=gK(t);let e=t.file&&Qhe(t.file);return e?(t.args.unshift(t.file),t.command=e,gK(t)):t.file}function khe(t){if(!bhe)return t;let e=xhe(t),r=!vhe.test(e);if(t.options.forceShell||r){let i=She.test(e);t.command=Bhe.normalize(t.command),t.command=fK.command(t.command),t.args=t.args.map(s=>fK.argument(s,i));let n=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${n}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function Phe(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let i={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?i:khe(i)}uK.exports=Phe});var CK=I((p$e,pK)=>{"use strict";var yb=process.platform==="win32";function wb(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function Dhe(t,e){if(!yb)return;let r=t.emit;t.emit=function(i,n){if(i==="exit"){let s=dK(n,e,"spawn");if(s)return r.call(t,"error",s)}return r.apply(t,arguments)}}function dK(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawn"):null}function Rhe(t,e){return yb&&t===1&&!e.file?wb(e.original,"spawnSync"):null}pK.exports={hookChildProcess:Dhe,verifyENOENT:dK,verifyENOENTSync:Rhe,notFoundError:wb}});var bb=I((d$e,tu)=>{"use strict";var mK=require("child_process"),Bb=hK(),Qb=CK();function IK(t,e,r){let i=Bb(t,e,r),n=mK.spawn(i.command,i.args,i.options);return Qb.hookChildProcess(n,i),n}function Fhe(t,e,r){let i=Bb(t,e,r),n=mK.spawnSync(i.command,i.args,i.options);return n.error=n.error||Qb.verifyENOENTSync(n.status,i),n}tu.exports=IK;tu.exports.spawn=IK;tu.exports.sync=Fhe;tu.exports._parse=Bb;tu.exports._enoent=Qb});var yK=I((y$e,EK)=>{"use strict";EK.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Nb=I((w$e,wK)=>{var gh=yK(),BK={};for(let t of Object.keys(gh))BK[gh[t]]=t;var Xe={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};wK.exports=Xe;for(let t of Object.keys(Xe)){if(!("channels"in Xe[t]))throw new Error("missing channels property: "+t);if(!("labels"in Xe[t]))throw new Error("missing channel labels property: "+t);if(Xe[t].labels.length!==Xe[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=Xe[t];delete Xe[t].channels,delete Xe[t].labels,Object.defineProperty(Xe[t],"channels",{value:e}),Object.defineProperty(Xe[t],"labels",{value:r})}Xe.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(e,r,i),s=Math.max(e,r,i),o=s-n,a,l;s===n?a=0:e===s?a=(r-i)/o:r===s?a=2+(i-e)/o:i===s&&(a=4+(e-r)/o),a=Math.min(a*60,360),a<0&&(a+=360);let c=(n+s)/2;return s===n?l=0:c<=.5?l=o/(s+n):l=o/(2-s-n),[a,l*100,c*100]};Xe.rgb.hsv=function(t){let e,r,i,n,s,o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),g=function(f){return(c-f)/6/u+1/2};return u===0?(n=0,s=0):(s=u/c,e=g(o),r=g(a),i=g(l),o===c?n=i-r:a===c?n=1/3+e-i:l===c&&(n=2/3+r-e),n<0?n+=1:n>1&&(n-=1)),[n*360,s*100,c*100]};Xe.rgb.hwb=function(t){let e=t[0],r=t[1],i=t[2],n=Xe.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(r,i));return i=1-1/255*Math.max(e,Math.max(r,i)),[n,s*100,i*100]};Xe.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.min(1-e,1-r,1-i),s=(1-e-n)/(1-n)||0,o=(1-r-n)/(1-n)||0,a=(1-i-n)/(1-n)||0;return[s*100,o*100,a*100,n*100]};function The(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}Xe.rgb.keyword=function(t){let e=BK[t];if(e)return e;let r=Infinity,i;for(let n of Object.keys(gh)){let s=gh[n],o=The(t,s);o.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,i=i>.04045?((i+.055)/1.055)**2.4:i/12.92;let n=e*.4124+r*.3576+i*.1805,s=e*.2126+r*.7152+i*.0722,o=e*.0193+r*.1192+i*.9505;return[n*100,s*100,o*100]};Xe.rgb.lab=function(t){let e=Xe.rgb.xyz(t),r=e[0],i=e[1],n=e[2];r/=95.047,i/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;let s=116*i-16,o=500*(r-i),a=200*(i-n);return[s,o,a]};Xe.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n,s,o;if(r===0)return o=i*255,[o,o,o];i<.5?n=i*(1+r):n=i+r-i*r;let a=2*i-n,l=[0,0,0];for(let c=0;c<3;c++)s=e+1/3*-(c-1),s<0&&s++,s>1&&s--,6*s<1?o=a+(n-a)*6*s:2*s<1?o=n:3*s<2?o=a+(n-a)*(2/3-s)*6:o=a,l[c]=o*255;return l};Xe.hsl.hsv=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=r,s=Math.max(i,.01);i*=2,r*=i<=1?i:2-i,n*=s<=1?s:2-s;let o=(i+r)/2,a=i===0?2*n/(s+n):2*r/(i+r);return[e,a*100,o*100]};Xe.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,s=e-Math.floor(e),o=255*i*(1-r),a=255*i*(1-r*s),l=255*i*(1-r*(1-s));switch(i*=255,n){case 0:return[i,l,o];case 1:return[a,i,o];case 2:return[o,i,l];case 3:return[o,a,i];case 4:return[l,o,i];case 5:return[i,o,a]}};Xe.hsv.hsl=function(t){let e=t[0],r=t[1]/100,i=t[2]/100,n=Math.max(i,.01),s,o;o=(2-r)*i;let a=(2-r)*n;return s=r*n,s/=a<=1?a:2-a,s=s||0,o/=2,[e,s*100,o*100]};Xe.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100,n=r+i,s;n>1&&(r/=n,i/=n);let o=Math.floor(6*e),a=1-i;s=6*e-o,(o&1)!=0&&(s=1-s);let l=r+s*(a-r),c,u,g;switch(o){default:case 6:case 0:c=a,u=l,g=r;break;case 1:c=l,u=a,g=r;break;case 2:c=r,u=a,g=l;break;case 3:c=r,u=l,g=a;break;case 4:c=l,u=r,g=a;break;case 5:c=a,u=r,g=l;break}return[c*255,u*255,g*255]};Xe.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n=t[3]/100,s=1-Math.min(1,e*(1-n)+n),o=1-Math.min(1,r*(1-n)+n),a=1-Math.min(1,i*(1-n)+n);return[s*255,o*255,a*255]};Xe.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,i=t[2]/100,n,s,o;return n=e*3.2406+r*-1.5372+i*-.4986,s=e*-.9689+r*1.8758+i*.0415,o=e*.0557+r*-.204+i*1.057,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,n=Math.min(Math.max(0,n),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[n*255,s*255,o*255]};Xe.xyz.lab=function(t){let e=t[0],r=t[1],i=t[2];e/=95.047,r/=100,i/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;let n=116*r-16,s=500*(e-r),o=200*(r-i);return[n,s,o]};Xe.lab.xyz=function(t){let e=t[0],r=t[1],i=t[2],n,s,o;s=(e+16)/116,n=r/500+s,o=s-i/200;let a=s**3,l=n**3,c=o**3;return s=a>.008856?a:(s-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,n*=95.047,s*=100,o*=108.883,[n,s,o]};Xe.lab.lch=function(t){let e=t[0],r=t[1],i=t[2],n;n=Math.atan2(i,r)*360/2/Math.PI,n<0&&(n+=360);let o=Math.sqrt(r*r+i*i);return[e,o,n]};Xe.lch.lab=function(t){let e=t[0],r=t[1],n=t[2]/360*2*Math.PI,s=r*Math.cos(n),o=r*Math.sin(n);return[e,s,o]};Xe.rgb.ansi16=function(t,e=null){let[r,i,n]=t,s=e===null?Xe.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),s===0)return 30;let o=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(r/255));return s===2&&(o+=60),o};Xe.hsv.ansi16=function(t){return Xe.rgb.ansi16(Xe.hsv.rgb(t),t[2])};Xe.rgb.ansi256=function(t){let e=t[0],r=t[1],i=t[2];return e===r&&r===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(i/255*5)};Xe.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,i=(e&1)*r*255,n=(e>>1&1)*r*255,s=(e>>2&1)*r*255;return[i,n,s]};Xe.ansi256.rgb=function(t){if(t>=232){let s=(t-232)*10+8;return[s,s,s]}t-=16;let e,r=Math.floor(t/36)/5*255,i=Math.floor((e=t%36)/6)/5*255,n=e%6/5*255;return[r,i,n]};Xe.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};Xe.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(a=>a+a).join(""));let i=parseInt(r,16),n=i>>16&255,s=i>>8&255,o=i&255;return[n,s,o]};Xe.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,i=t[2]/255,n=Math.max(Math.max(e,r),i),s=Math.min(Math.min(e,r),i),o=n-s,a,l;return o<1?a=s/(1-o):a=0,o<=0?l=0:n===e?l=(r-i)/o%6:n===r?l=2+(i-e)/o:l=4+(e-r)/o,l/=6,l%=1,[l*360,o*100,a*100]};Xe.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=r<.5?2*e*r:2*e*(1-r),n=0;return i<1&&(n=(r-.5*i)/(1-i)),[t[0],i*100,n*100]};Xe.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=e*r,n=0;return i<1&&(n=(r-i)/(1-i)),[t[0],i*100,n*100]};Xe.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,i=t[2]/100;if(r===0)return[i*255,i*255,i*255];let n=[0,0,0],s=e%1*6,o=s%1,a=1-o,l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=o,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=o;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=o,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-r)*i,[(r*n[0]+l)*255,(r*n[1]+l)*255,(r*n[2]+l)*255]};Xe.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e),n=0;return i>0&&(n=e/i),[t[0],n*100,i*100]};Xe.hcg.hsl=function(t){let e=t[1]/100,i=t[2]/100*(1-e)+.5*e,n=0;return i>0&&i<.5?n=e/(2*i):i>=.5&&i<1&&(n=e/(2*(1-i))),[t[0],n*100,i*100]};Xe.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,i=e+r*(1-e);return[t[0],(i-e)*100,(1-i)*100]};Xe.hwb.hcg=function(t){let e=t[1]/100,r=t[2]/100,i=1-r,n=i-e,s=0;return n<1&&(s=(i-n)/(1-n)),[t[0],n*100,s*100]};Xe.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};Xe.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};Xe.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};Xe.gray.hsl=function(t){return[0,0,t[0]]};Xe.gray.hsv=Xe.gray.hsl;Xe.gray.hwb=function(t){return[0,100,t[0]]};Xe.gray.cmyk=function(t){return[0,0,0,t[0]]};Xe.gray.lab=function(t){return[t[0],0,0]};Xe.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,i=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(i.length)+i};Xe.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var bK=I((B$e,QK)=>{var kI=Nb();function Mhe(){let t={},e=Object.keys(kI);for(let r=e.length,i=0;i{var Lb=Nb(),Hhe=bK(),ru={},Ghe=Object.keys(Lb);function jhe(t){let e=function(...r){let i=r[0];return i==null?i:(i.length>1&&(r=i),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function Yhe(t){let e=function(...r){let i=r[0];if(i==null)return i;i.length>1&&(r=i);let n=t(r);if(typeof n=="object")for(let s=n.length,o=0;o{ru[t]={},Object.defineProperty(ru[t],"channels",{value:Lb[t].channels}),Object.defineProperty(ru[t],"labels",{value:Lb[t].labels});let e=Hhe(t);Object.keys(e).forEach(i=>{let n=e[i];ru[t][i]=Yhe(n),ru[t][i].raw=jhe(n)})});vK.exports=ru});var FK=I((b$e,xK)=>{"use strict";var kK=(t,e)=>(...r)=>`[${t(...r)+e}m`,PK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};5;${i}m`},DK=(t,e)=>(...r)=>{let i=t(...r);return`[${38+e};2;${i[0]};${i[1]};${i[2]}m`},PI=t=>t,RK=(t,e,r)=>[t,e,r],iu=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let i=r();return Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0}),i},enumerable:!0,configurable:!0})},Tb,nu=(t,e,r,i)=>{Tb===void 0&&(Tb=SK());let n=i?10:0,s={};for(let[o,a]of Object.entries(Tb)){let l=o==="ansi16"?"ansi":o;o===e?s[l]=t(r,n):typeof a=="object"&&(s[l]=t(a[e],n))}return s};function qhe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,i]of Object.entries(e)){for(let[n,s]of Object.entries(i))e[n]={open:`[${s[0]}m`,close:`[${s[1]}m`},i[n]=e[n],t.set(s[0],s[1]);Object.defineProperty(e,r,{value:i,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="",e.bgColor.close="",iu(e.color,"ansi",()=>nu(kK,"ansi16",PI,!1)),iu(e.color,"ansi256",()=>nu(PK,"ansi256",PI,!1)),iu(e.color,"ansi16m",()=>nu(DK,"rgb",RK,!1)),iu(e.bgColor,"ansi",()=>nu(kK,"ansi16",PI,!0)),iu(e.bgColor,"ansi256",()=>nu(PK,"ansi256",PI,!0)),iu(e.bgColor,"ansi16m",()=>nu(DK,"rgb",RK,!0)),e}Object.defineProperty(xK,"exports",{enumerable:!0,get:qhe})});var LK=I((v$e,NK)=>{"use strict";NK.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",i=e.indexOf(r+t),n=e.indexOf("--");return i!==-1&&(n===-1||i{"use strict";var Jhe=require("os"),MK=require("tty"),Wn=LK(),{env:Wr}=process,tA;Wn("no-color")||Wn("no-colors")||Wn("color=false")||Wn("color=never")?tA=0:(Wn("color")||Wn("colors")||Wn("color=true")||Wn("color=always"))&&(tA=1);"FORCE_COLOR"in Wr&&(Wr.FORCE_COLOR==="true"?tA=1:Wr.FORCE_COLOR==="false"?tA=0:tA=Wr.FORCE_COLOR.length===0?1:Math.min(parseInt(Wr.FORCE_COLOR,10),3));function Mb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Ob(t,e){if(tA===0)return 0;if(Wn("color=16m")||Wn("color=full")||Wn("color=truecolor"))return 3;if(Wn("color=256"))return 2;if(t&&!e&&tA===void 0)return 0;let r=tA||0;if(Wr.TERM==="dumb")return r;if(process.platform==="win32"){let i=Jhe.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Wr)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(i=>i in Wr)||Wr.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in Wr)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Wr.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in Wr)return 1;if(Wr.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in Wr){let i=parseInt((Wr.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Wr.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Wr.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Wr.TERM)||"COLORTERM"in Wr?1:r}function Whe(t){let e=Ob(t,t&&t.isTTY);return Mb(e)}TK.exports={supportsColor:Whe,stdout:Mb(Ob(!0,MK.isatty(1))),stderr:Mb(Ob(!0,MK.isatty(2)))}});var UK=I((x$e,KK)=>{"use strict";var zhe=(t,e,r)=>{let i=t.indexOf(e);if(i===-1)return t;let n=e.length,s=0,o="";do o+=t.substr(s,i-s)+e+r,s=i+n,i=t.indexOf(e,s);while(i!==-1);return o+=t.substr(s),o},Vhe=(t,e,r,i)=>{let n=0,s="";do{let o=t[i-1]==="\r";s+=t.substr(n,(o?i-1:i)-n)+e+(o?`\r -`:` -`)+r,n=i+1,i=t.indexOf(` -`,n)}while(i!==-1);return s+=t.substr(n),s};KK.exports={stringReplaceAll:zhe,stringEncaseCRLFWithFirstIndex:Vhe}});var qK=I((k$e,HK)=>{"use strict";var _he=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,GK=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Xhe=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Zhe=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$he=new Map([["n",` -`],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a","\x07"]]);function jK(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):$he.get(t)||t}function epe(t,e){let r=[],i=e.trim().split(/\s*,\s*/g),n;for(let s of i){let o=Number(s);if(!Number.isNaN(o))r.push(o);else if(n=s.match(Xhe))r.push(n[2].replace(Zhe,(a,l,c)=>l?jK(l):c));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${t}')`)}return r}function tpe(t){GK.lastIndex=0;let e=[],r;for(;(r=GK.exec(t))!==null;){let i=r[1];if(r[2]){let n=epe(i,r[2]);e.push([i].concat(n))}else e.push([i])}return e}function YK(t,e){let r={};for(let n of e)for(let s of n.styles)r[s[0]]=n.inverse?null:s.slice(1);let i=t;for(let[n,s]of Object.entries(r))if(!!Array.isArray(s)){if(!(n in i))throw new Error(`Unknown Chalk style: ${n}`);i=s.length>0?i[n](...s):i[n]}return i}HK.exports=(t,e)=>{let r=[],i=[],n=[];if(e.replace(_he,(s,o,a,l,c,u)=>{if(o)n.push(jK(o));else if(l){let g=n.join("");n=[],i.push(r.length===0?g:YK(t,r)(g)),r.push({inverse:a,styles:tpe(l)})}else if(c){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");i.push(YK(t,r)(n.join(""))),n=[],r.pop()}else n.push(u)}),i.push(n.join("")),r.length>0){let s=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return i.join("")}});var jb=I((P$e,JK)=>{"use strict";var fh=FK(),{stdout:Kb,stderr:Ub}=OK(),{stringReplaceAll:rpe,stringEncaseCRLFWithFirstIndex:ipe}=UK(),WK=["ansi","ansi","ansi256","ansi16m"],su=Object.create(null),npe=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=Kb?Kb.level:0;t.level=e.level===void 0?r:e.level},zK=class{constructor(e){return VK(e)}},VK=t=>{let e={};return npe(e,t),e.template=(...r)=>spe(e.template,...r),Object.setPrototypeOf(e,DI.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=zK,e.template};function DI(t){return VK(t)}for(let[t,e]of Object.entries(fh))su[t]={get(){let r=RI(this,Hb(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};su.visible={get(){let t=RI(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var _K=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of _K)su[t]={get(){let{level:e}=this;return function(...r){let i=Hb(fh.color[WK[e]][t](...r),fh.color.close,this._styler);return RI(this,i,this._isEmpty)}}};for(let t of _K){let e="bg"+t[0].toUpperCase()+t.slice(1);su[e]={get(){let{level:r}=this;return function(...i){let n=Hb(fh.bgColor[WK[r]][t](...i),fh.bgColor.close,this._styler);return RI(this,n,this._isEmpty)}}}}var ope=Object.defineProperties(()=>{},_(P({},su),{level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}})),Hb=(t,e,r)=>{let i,n;return r===void 0?(i=t,n=e):(i=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:i,closeAll:n,parent:r}},RI=(t,e,r)=>{let i=(...n)=>ape(i,n.length===1?""+n[0]:n.join(" "));return i.__proto__=ope,i._generator=t,i._styler=e,i._isEmpty=r,i},ape=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:i,closeAll:n}=r;if(e.indexOf("")!==-1)for(;r!==void 0;)e=rpe(e,r.close,r.open),r=r.parent;let s=e.indexOf(` -`);return s!==-1&&(e=ipe(e,n,i,s)),i+e+n},Gb,spe=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let i=e.slice(1),n=[r.raw[0]];for(let s=1;s{XK.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var ml=I(Dn=>{"use strict";var $K=ZK(),ro=process.env;Object.defineProperty(Dn,"_vendors",{value:$K.map(function(t){return t.constant})});Dn.name=null;Dn.isPR=null;$K.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(i){return e1(i)});if(Dn[t.constant]=r,r)switch(Dn.name=t.name,typeof t.pr){case"string":Dn.isPR=!!ro[t.pr];break;case"object":"env"in t.pr?Dn.isPR=t.pr.env in ro&&ro[t.pr.env]!==t.pr.ne:"any"in t.pr?Dn.isPR=t.pr.any.some(function(i){return!!ro[i]}):Dn.isPR=e1(t.pr);break;default:Dn.isPR=null}});Dn.isCI=!!(ro.CI||ro.CONTINUOUS_INTEGRATION||ro.BUILD_NUMBER||ro.RUN_ID||Dn.name);function e1(t){return typeof t=="string"?!!ro[t]:Object.keys(t).every(function(e){return ro[e]===t[e]})}});var FI=I(zn=>{"use strict";zn.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;zn.find=(t,e)=>t.nodes.find(r=>r.type===e);zn.exceedsLimit=(t,e,r=1,i)=>i===!1||!zn.isInteger(t)||!zn.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=i;zn.escapeNode=(t,e=0,r)=>{let i=t.nodes[e];!i||(r&&i.type===r||i.type==="open"||i.type==="close")&&i.escaped!==!0&&(i.value="\\"+i.value,i.escaped=!0)};zn.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0==0?(t.invalid=!0,!0):!1;zn.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0==0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;zn.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;zn.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);zn.flatten=(...t)=>{let e=[],r=i=>{for(let n=0;n{"use strict";var r1=FI();t1.exports=(t,e={})=>{let r=(i,n={})=>{let s=e.escapeInvalid&&r1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a="";if(i.value)return(s||o)&&r1.isOpenOrClose(i)?"\\"+i.value:i.value;if(i.value)return i.value;if(i.nodes)for(let l of i.nodes)a+=r(l);return a};return r(t)}});var n1=I((L$e,i1)=>{"use strict";i1.exports=function(t){return typeof t=="number"?t-t==0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var f1=I((T$e,s1)=>{"use strict";var o1=n1(),Il=(t,e,r)=>{if(o1(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(o1(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let i=P({relaxZeros:!0},r);typeof i.strictZeros=="boolean"&&(i.relaxZeros=i.strictZeros===!1);let n=String(i.relaxZeros),s=String(i.shorthand),o=String(i.capture),a=String(i.wrap),l=t+":"+e+"="+n+s+o+a;if(Il.cache.hasOwnProperty(l))return Il.cache[l].result;let c=Math.min(t,e),u=Math.max(t,e);if(Math.abs(c-u)===1){let d=t+"|"+e;return i.capture?`(${d})`:i.wrap===!1?d:`(?:${d})`}let g=A1(t)||A1(e),f={min:t,max:e,a:c,b:u},h=[],p=[];if(g&&(f.isPadded=g,f.maxLen=String(f.max).length),c<0){let d=u<0?Math.abs(u):1;p=a1(d,Math.abs(c),f,i),c=f.a=0}return u>=0&&(h=a1(c,u,f,i)),f.negatives=p,f.positives=h,f.result=Ape(p,h,i),i.capture===!0?f.result=`(${f.result})`:i.wrap!==!1&&h.length+p.length>1&&(f.result=`(?:${f.result})`),Il.cache[l]=f,f.result};function Ape(t,e,r){let i=Yb(t,e,"-",!1,r)||[],n=Yb(e,t,"",!1,r)||[],s=Yb(t,e,"-?",!0,r)||[];return i.concat(s).concat(n).join("|")}function cpe(t,e){let r=1,i=1,n=l1(t,r),s=new Set([e]);for(;t<=n&&n<=e;)s.add(n),r+=1,n=l1(t,r);for(n=c1(e+1,i)-1;t1&&a.count.pop(),a.count.push(u.count[0]),a.string=a.pattern+u1(a.count),o=c+1;continue}r.isPadded&&(g=hpe(c,r,i)),u.string=g+u.pattern+u1(u.count),s.push(u),o=c+1,a=u}return s}function Yb(t,e,r,i,n){let s=[];for(let o of t){let{string:a}=o;!i&&!g1(e,"string",a)&&s.push(r+a),i&&g1(e,"string",a)&&s.push(r+a)}return s}function upe(t,e){let r=[];for(let i=0;ie?1:e>t?-1:0}function g1(t,e,r){return t.some(i=>i[e]===r)}function l1(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function c1(t,e){return t-t%Math.pow(10,e)}function u1(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function gpe(t,e,r){return`[${t}${e-t==1?"":"-"}${e}]`}function A1(t){return/^-?(0+)\d/.test(t)}function hpe(t,e,r){if(!e.isPadded)return t;let i=Math.abs(e.maxLen-String(t).length),n=r.relaxZeros!==!1;switch(i){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${i}}`:`0{${i}}`}}Il.cache={};Il.clearCache=()=>Il.cache={};s1.exports=Il});var Wb=I((M$e,h1)=>{"use strict";var ppe=require("util"),p1=f1(),d1=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),dpe=t=>e=>t===!0?Number(e):String(e),qb=t=>typeof t=="number"||typeof t=="string"&&t!=="",ph=t=>Number.isInteger(+t),Jb=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},Cpe=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,mpe=(t,e,r)=>{if(e>0){let i=t[0]==="-"?"-":"";i&&(t=t.slice(1)),t=i+t.padStart(i?e-1:e,"0")}return r===!1?String(t):t},C1=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length{t.negatives.sort((o,a)=>oa?1:0),t.positives.sort((o,a)=>oa?1:0);let r=e.capture?"":"?:",i="",n="",s;return t.positives.length&&(i=t.positives.join("|")),t.negatives.length&&(n=`-(${r}${t.negatives.join("|")})`),i&&n?s=`${i}|${n}`:s=i||n,e.wrap?`(${r}${s})`:s},m1=(t,e,r,i)=>{if(r)return p1(t,e,P({wrap:!1},i));let n=String.fromCharCode(t);if(t===e)return n;let s=String.fromCharCode(e);return`[${n}-${s}]`},I1=(t,e,r)=>{if(Array.isArray(t)){let i=r.wrap===!0,n=r.capture?"":"?:";return i?`(${n}${t.join("|")})`:t.join("|")}return p1(t,e,r)},E1=(...t)=>new RangeError("Invalid range arguments: "+ppe.inspect(...t)),y1=(t,e,r)=>{if(r.strictRanges===!0)throw E1([t,e]);return[]},Epe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},ype=(t,e,r=1,i={})=>{let n=Number(t),s=Number(e);if(!Number.isInteger(n)||!Number.isInteger(s)){if(i.strictRanges===!0)throw E1([t,e]);return[]}n===0&&(n=0),s===0&&(s=0);let o=n>s,a=String(t),l=String(e),c=String(r);r=Math.max(Math.abs(r),1);let u=Jb(a)||Jb(l)||Jb(c),g=u?Math.max(a.length,l.length,c.length):0,f=u===!1&&Cpe(t,e,i)===!1,h=i.transform||dpe(f);if(i.toRegex&&r===1)return m1(C1(t,g),C1(e,g),!0,i);let p={negatives:[],positives:[]},d=B=>p[B<0?"negatives":"positives"].push(Math.abs(B)),m=[],E=0;for(;o?n>=s:n<=s;)i.toRegex===!0&&r>1?d(n):m.push(mpe(h(n,E),g,f)),n=o?n-r:n+r,E++;return i.toRegex===!0?r>1?Ipe(p,i):I1(m,null,P({wrap:!1},i)):m},wpe=(t,e,r=1,i={})=>{if(!ph(t)&&t.length>1||!ph(e)&&e.length>1)return y1(t,e,i);let n=i.transform||(f=>String.fromCharCode(f)),s=`${t}`.charCodeAt(0),o=`${e}`.charCodeAt(0),a=s>o,l=Math.min(s,o),c=Math.max(s,o);if(i.toRegex&&r===1)return m1(l,c,!1,i);let u=[],g=0;for(;a?s>=o:s<=o;)u.push(n(s,g)),s=a?s-r:s+r,g++;return i.toRegex===!0?I1(u,null,{wrap:!1,options:i}):u},LI=(t,e,r,i={})=>{if(e==null&&qb(t))return[t];if(!qb(t)||!qb(e))return y1(t,e,i);if(typeof r=="function")return LI(t,e,1,{transform:r});if(d1(r))return LI(t,e,0,r);let n=P({},i);return n.capture===!0&&(n.wrap=!0),r=r||n.step||1,ph(r)?ph(t)&&ph(e)?ype(t,e,r,n):wpe(t,e,Math.max(Math.abs(r),1),n):r!=null&&!d1(r)?Epe(r,n):LI(t,e,1,r)};h1.exports=LI});var Q1=I((O$e,w1)=>{"use strict";var Bpe=Wb(),B1=FI(),Qpe=(t,e={})=>{let r=(i,n={})=>{let s=B1.isInvalidBrace(n),o=i.invalid===!0&&e.escapeInvalid===!0,a=s===!0||o===!0,l=e.escapeInvalid===!0?"\\":"",c="";if(i.isOpen===!0||i.isClose===!0)return l+i.value;if(i.type==="open")return a?l+i.value:"(";if(i.type==="close")return a?l+i.value:")";if(i.type==="comma")return i.prev.type==="comma"?"":a?i.value:"|";if(i.value)return i.value;if(i.nodes&&i.ranges>0){let u=B1.reduce(i.nodes),g=Bpe(...u,_(P({},e),{wrap:!1,toRegex:!0}));if(g.length!==0)return u.length>1&&g.length>1?`(${g})`:g}if(i.nodes)for(let u of i.nodes)c+=r(u,i);return c};return r(t)};w1.exports=Qpe});var S1=I((K$e,b1)=>{"use strict";var bpe=Wb(),v1=NI(),ou=FI(),El=(t="",e="",r=!1)=>{let i=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?ou.flatten(e).map(n=>`{${n}}`):e;for(let n of t)if(Array.isArray(n))for(let s of n)i.push(El(s,e,r));else for(let s of e)r===!0&&typeof s=="string"&&(s=`{${s}}`),i.push(Array.isArray(s)?El(n,s,r):n+s);return ou.flatten(i)},vpe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,i=(n,s={})=>{n.queue=[];let o=s,a=s.queue;for(;o.type!=="brace"&&o.type!=="root"&&o.parent;)o=o.parent,a=o.queue;if(n.invalid||n.dollar){a.push(El(a.pop(),v1(n,e)));return}if(n.type==="brace"&&n.invalid!==!0&&n.nodes.length===2){a.push(El(a.pop(),["{}"]));return}if(n.nodes&&n.ranges>0){let g=ou.reduce(n.nodes);if(ou.exceedsLimit(...g,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let f=bpe(...g,e);f.length===0&&(f=v1(n,e)),a.push(El(a.pop(),f)),n.nodes=[];return}let l=ou.encloseBrace(n),c=n.queue,u=n;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,c=u.queue;for(let g=0;g{"use strict";x1.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` -`,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var N1=I((H$e,P1)=>{"use strict";var Spe=NI(),{MAX_LENGTH:D1,CHAR_BACKSLASH:zb,CHAR_BACKTICK:xpe,CHAR_COMMA:kpe,CHAR_DOT:Ppe,CHAR_LEFT_PARENTHESES:Dpe,CHAR_RIGHT_PARENTHESES:Rpe,CHAR_LEFT_CURLY_BRACE:Fpe,CHAR_RIGHT_CURLY_BRACE:Npe,CHAR_LEFT_SQUARE_BRACKET:R1,CHAR_RIGHT_SQUARE_BRACKET:F1,CHAR_DOUBLE_QUOTE:Lpe,CHAR_SINGLE_QUOTE:Tpe,CHAR_NO_BREAK_SPACE:Mpe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:Ope}=k1(),Kpe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},i=typeof r.maxLength=="number"?Math.min(D1,r.maxLength):D1;if(t.length>i)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${i})`);let n={type:"root",input:t,nodes:[]},s=[n],o=n,a=n,l=0,c=t.length,u=0,g=0,f,h={},p=()=>t[u++],d=m=>{if(m.type==="text"&&a.type==="dot"&&(a.type="text"),a&&a.type==="text"&&m.type==="text"){a.value+=m.value;return}return o.nodes.push(m),m.parent=o,m.prev=a,a=m,m};for(d({type:"bos"});u0){if(o.ranges>0){o.ranges=0;let m=o.nodes.shift();o.nodes=[m,{type:"text",value:Spe(o)}]}d({type:"comma",value:f}),o.commas++;continue}if(f===Ppe&&g>0&&o.commas===0){let m=o.nodes;if(g===0||m.length===0){d({type:"text",value:f});continue}if(a.type==="dot"){if(o.range=[],a.value+=f,a.type="range",o.nodes.length!==3&&o.nodes.length!==5){o.invalid=!0,o.ranges=0,a.type="text";continue}o.ranges++,o.args=[];continue}if(a.type==="range"){m.pop();let E=m[m.length-1];E.value+=a.value+f,a=E,o.ranges--;continue}d({type:"dot",value:f});continue}d({type:"text",value:f})}do if(o=s.pop(),o.type!=="root"){o.nodes.forEach(B=>{B.nodes||(B.type==="open"&&(B.isOpen=!0),B.type==="close"&&(B.isClose=!0),B.nodes||(B.type="text"),B.invalid=!0)});let m=s[s.length-1],E=m.nodes.indexOf(o);m.nodes.splice(E,1,...o.nodes)}while(s.length>0);return d({type:"eos"}),n};P1.exports=Kpe});var M1=I((G$e,L1)=>{"use strict";var T1=NI(),Upe=Q1(),Hpe=S1(),Gpe=N1(),Rn=(t,e={})=>{let r=[];if(Array.isArray(t))for(let i of t){let n=Rn.create(i,e);Array.isArray(n)?r.push(...n):r.push(n)}else r=[].concat(Rn.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.parse=(t,e={})=>Gpe(t,e);Rn.stringify=(t,e={})=>typeof t=="string"?T1(Rn.parse(t,e),e):T1(t,e);Rn.compile=(t,e={})=>(typeof t=="string"&&(t=Rn.parse(t,e)),Upe(t,e));Rn.expand=(t,e={})=>{typeof t=="string"&&(t=Rn.parse(t,e));let r=Hpe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};Rn.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?Rn.compile(t,e):Rn.expand(t,e);L1.exports=Rn});var dh=I((j$e,O1)=>{"use strict";var jpe=require("path"),io="\\\\/",K1=`[^${io}]`,ea="\\.",Ype="\\+",qpe="\\?",TI="\\/",Jpe="(?=.)",U1="[^/]",Vb=`(?:${TI}|$)`,H1=`(?:^|${TI})`,_b=`${ea}{1,2}${Vb}`,Wpe=`(?!${ea})`,zpe=`(?!${H1}${_b})`,Vpe=`(?!${ea}{0,1}${Vb})`,_pe=`(?!${_b})`,Xpe=`[^.${TI}]`,Zpe=`${U1}*?`,G1={DOT_LITERAL:ea,PLUS_LITERAL:Ype,QMARK_LITERAL:qpe,SLASH_LITERAL:TI,ONE_CHAR:Jpe,QMARK:U1,END_ANCHOR:Vb,DOTS_SLASH:_b,NO_DOT:Wpe,NO_DOTS:zpe,NO_DOT_SLASH:Vpe,NO_DOTS_SLASH:_pe,QMARK_NO_DOT:Xpe,STAR:Zpe,START_ANCHOR:H1},$pe=_(P({},G1),{SLASH_LITERAL:`[${io}]`,QMARK:K1,STAR:`${K1}*?`,DOTS_SLASH:`${ea}{1,2}(?:[${io}]|$)`,NO_DOT:`(?!${ea})`,NO_DOTS:`(?!(?:^|[${io}])${ea}{1,2}(?:[${io}]|$))`,NO_DOT_SLASH:`(?!${ea}{0,1}(?:[${io}]|$))`,NO_DOTS_SLASH:`(?!${ea}{1,2}(?:[${io}]|$))`,QMARK_NO_DOT:`[^.${io}]`,START_ANCHOR:`(?:^|[${io}])`,END_ANCHOR:`(?:[${io}]|$)`}),ede={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};O1.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:ede,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:jpe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?$pe:G1}}});var Ch=I(cn=>{"use strict";var tde=require("path"),rde=process.platform==="win32",{REGEX_BACKSLASH:ide,REGEX_REMOVE_BACKSLASH:nde,REGEX_SPECIAL_CHARS:sde,REGEX_SPECIAL_CHARS_GLOBAL:ode}=dh();cn.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);cn.hasRegexChars=t=>sde.test(t);cn.isRegexChar=t=>t.length===1&&cn.hasRegexChars(t);cn.escapeRegex=t=>t.replace(ode,"\\$1");cn.toPosixSlashes=t=>t.replace(ide,"/");cn.removeBackslashes=t=>t.replace(nde,e=>e==="\\"?"":e);cn.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};cn.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:rde===!0||tde.sep==="\\";cn.escapeLast=(t,e,r)=>{let i=t.lastIndexOf(e,r);return i===-1?t:t[i-1]==="\\"?cn.escapeLast(t,e,i-1):`${t.slice(0,i)}\\${t.slice(i)}`};cn.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};cn.wrapOutput=(t,e={},r={})=>{let i=r.contains?"":"^",n=r.contains?"":"$",s=`${i}(?:${t})${n}`;return e.negated===!0&&(s=`(?:^(?!${s}).*$)`),s}});var X1=I((q$e,j1)=>{"use strict";var Y1=Ch(),{CHAR_ASTERISK:Xb,CHAR_AT:ade,CHAR_BACKWARD_SLASH:mh,CHAR_COMMA:Ade,CHAR_DOT:Zb,CHAR_EXCLAMATION_MARK:q1,CHAR_FORWARD_SLASH:J1,CHAR_LEFT_CURLY_BRACE:$b,CHAR_LEFT_PARENTHESES:ev,CHAR_LEFT_SQUARE_BRACKET:lde,CHAR_PLUS:cde,CHAR_QUESTION_MARK:W1,CHAR_RIGHT_CURLY_BRACE:ude,CHAR_RIGHT_PARENTHESES:z1,CHAR_RIGHT_SQUARE_BRACKET:gde}=dh(),V1=t=>t===J1||t===mh,_1=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?Infinity:1)},fde=(t,e)=>{let r=e||{},i=t.length-1,n=r.parts===!0||r.scanToEnd===!0,s=[],o=[],a=[],l=t,c=-1,u=0,g=0,f=!1,h=!1,p=!1,d=!1,m=!1,E=!1,B=!1,b=!1,R=!1,H=0,L,K,J={value:"",depth:0,isGlob:!1},ne=()=>c>=i,q=()=>l.charCodeAt(c+1),A=()=>(L=K,l.charCodeAt(++c));for(;c0&&(W=l.slice(0,u),l=l.slice(u),g-=u),V&&p===!0&&g>0?(V=l.slice(0,g),X=l.slice(g)):p===!0?(V="",X=l):V=l,V&&V!==""&&V!=="/"&&V!==l&&V1(V.charCodeAt(V.length-1))&&(V=V.slice(0,-1)),r.unescape===!0&&(X&&(X=Y1.removeBackslashes(X)),V&&B===!0&&(V=Y1.removeBackslashes(V)));let F={prefix:W,input:t,start:u,base:V,glob:X,isBrace:f,isBracket:h,isGlob:p,isExtglob:d,isGlobstar:m,negated:b};if(r.tokens===!0&&(F.maxDepth=0,V1(K)||o.push(J),F.tokens=o),r.parts===!0||r.tokens===!0){let D;for(let he=0;he{"use strict";var MI=dh(),Fn=Ch(),{MAX_LENGTH:OI,POSIX_REGEX_SOURCE:hde,REGEX_NON_SPECIAL_CHARS:pde,REGEX_SPECIAL_CHARS_BACKREF:dde,REPLACEMENTS:$1}=MI,Cde=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch(i){return t.map(n=>Fn.escapeRegex(n)).join("..")}return r},au=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,eU=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=$1[t]||t;let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);let s={type:"bos",value:"",output:r.prepend||""},o=[s],a=r.capture?"":"?:",l=Fn.isWindows(e),c=MI.globChars(l),u=MI.extglobChars(c),{DOT_LITERAL:g,PLUS_LITERAL:f,SLASH_LITERAL:h,ONE_CHAR:p,DOTS_SLASH:d,NO_DOT:m,NO_DOT_SLASH:E,NO_DOTS_SLASH:B,QMARK:b,QMARK_NO_DOT:R,STAR:H,START_ANCHOR:L}=c,K=G=>`(${a}(?:(?!${L}${G.dot?d:g}).)*?)`,J=r.dot?"":m,ne=r.dot?b:R,q=r.bash===!0?K(r):H;r.capture&&(q=`(${q})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let A={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:o};t=Fn.removePrefix(t,A),n=t.length;let V=[],W=[],X=[],F=s,D,he=()=>A.index===n-1,pe=A.peek=(G=1)=>t[A.index+G],Ne=A.advance=()=>t[++A.index],Pe=()=>t.slice(A.index+1),qe=(G="",Ce=0)=>{A.consumed+=G,A.index+=Ce},re=G=>{A.output+=G.output!=null?G.output:G.value,qe(G.value)},se=()=>{let G=1;for(;pe()==="!"&&(pe(2)!=="("||pe(3)==="?");)Ne(),A.start++,G++;return G%2==0?!1:(A.negated=!0,A.start++,!0)},be=G=>{A[G]++,X.push(G)},ae=G=>{A[G]--,X.pop()},Ae=G=>{if(F.type==="globstar"){let Ce=A.braces>0&&(G.type==="comma"||G.type==="brace"),ee=G.extglob===!0||V.length&&(G.type==="pipe"||G.type==="paren");G.type!=="slash"&&G.type!=="paren"&&!Ce&&!ee&&(A.output=A.output.slice(0,-F.output.length),F.type="star",F.value="*",F.output=q,A.output+=F.output)}if(V.length&&G.type!=="paren"&&!u[G.value]&&(V[V.length-1].inner+=G.value),(G.value||G.output)&&re(G),F&&F.type==="text"&&G.type==="text"){F.value+=G.value,F.output=(F.output||"")+G.value;return}G.prev=F,o.push(G),F=G},De=(G,Ce)=>{let ee=_(P({},u[Ce]),{conditions:1,inner:""});ee.prev=F,ee.parens=A.parens,ee.output=A.output;let Ue=(r.capture?"(":"")+ee.open;be("parens"),Ae({type:G,value:Ce,output:A.output?"":p}),Ae({type:"paren",extglob:!0,value:Ne(),output:Ue}),V.push(ee)},$=G=>{let Ce=G.close+(r.capture?")":"");if(G.type==="negate"){let ee=q;G.inner&&G.inner.length>1&&G.inner.includes("/")&&(ee=K(r)),(ee!==q||he()||/^\)+$/.test(Pe()))&&(Ce=G.close=`)$))${ee}`),G.prev.type==="bos"&&(A.negatedExtglob=!0)}Ae({type:"paren",extglob:!0,value:D,output:Ce}),ae("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let G=!1,Ce=t.replace(dde,(ee,Ue,Oe,vt,dt,ri)=>vt==="\\"?(G=!0,ee):vt==="?"?Ue?Ue+vt+(dt?b.repeat(dt.length):""):ri===0?ne+(dt?b.repeat(dt.length):""):b.repeat(Oe.length):vt==="."?g.repeat(Oe.length):vt==="*"?Ue?Ue+vt+(dt?q:""):q:Ue?ee:`\\${ee}`);return G===!0&&(r.unescape===!0?Ce=Ce.replace(/\\/g,""):Ce=Ce.replace(/\\+/g,ee=>ee.length%2==0?"\\\\":ee?"\\":"")),Ce===t&&r.contains===!0?(A.output=t,A):(A.output=Fn.wrapOutput(Ce,A,e),A)}for(;!he();){if(D=Ne(),D==="\0")continue;if(D==="\\"){let ee=pe();if(ee==="/"&&r.bash!==!0||ee==="."||ee===";")continue;if(!ee){D+="\\",Ae({type:"text",value:D});continue}let Ue=/^\\+/.exec(Pe()),Oe=0;if(Ue&&Ue[0].length>2&&(Oe=Ue[0].length,A.index+=Oe,Oe%2!=0&&(D+="\\")),r.unescape===!0?D=Ne()||"":D+=Ne()||"",A.brackets===0){Ae({type:"text",value:D});continue}}if(A.brackets>0&&(D!=="]"||F.value==="["||F.value==="[^")){if(r.posix!==!1&&D===":"){let ee=F.value.slice(1);if(ee.includes("[")&&(F.posix=!0,ee.includes(":"))){let Ue=F.value.lastIndexOf("["),Oe=F.value.slice(0,Ue),vt=F.value.slice(Ue+2),dt=hde[vt];if(dt){F.value=Oe+dt,A.backtrack=!0,Ne(),!s.output&&o.indexOf(F)===1&&(s.output=p);continue}}}(D==="["&&pe()!==":"||D==="-"&&pe()==="]")&&(D=`\\${D}`),D==="]"&&(F.value==="["||F.value==="[^")&&(D=`\\${D}`),r.posix===!0&&D==="!"&&F.value==="["&&(D="^"),F.value+=D,re({value:D});continue}if(A.quotes===1&&D!=='"'){D=Fn.escapeRegex(D),F.value+=D,re({value:D});continue}if(D==='"'){A.quotes=A.quotes===1?0:1,r.keepQuotes===!0&&Ae({type:"text",value:D});continue}if(D==="("){be("parens"),Ae({type:"paren",value:D});continue}if(D===")"){if(A.parens===0&&r.strictBrackets===!0)throw new SyntaxError(au("opening","("));let ee=V[V.length-1];if(ee&&A.parens===ee.parens+1){$(V.pop());continue}Ae({type:"paren",value:D,output:A.parens?")":"\\)"}),ae("parens");continue}if(D==="["){if(r.nobracket===!0||!Pe().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));D=`\\${D}`}else be("brackets");Ae({type:"bracket",value:D});continue}if(D==="]"){if(r.nobracket===!0||F&&F.type==="bracket"&&F.value.length===1){Ae({type:"text",value:D,output:`\\${D}`});continue}if(A.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(au("opening","["));Ae({type:"text",value:D,output:`\\${D}`});continue}ae("brackets");let ee=F.value.slice(1);if(F.posix!==!0&&ee[0]==="^"&&!ee.includes("/")&&(D=`/${D}`),F.value+=D,re({value:D}),r.literalBrackets===!1||Fn.hasRegexChars(ee))continue;let Ue=Fn.escapeRegex(F.value);if(A.output=A.output.slice(0,-F.value.length),r.literalBrackets===!0){A.output+=Ue,F.value=Ue;continue}F.value=`(${a}${Ue}|${F.value})`,A.output+=F.value;continue}if(D==="{"&&r.nobrace!==!0){be("braces");let ee={type:"brace",value:D,output:"(",outputIndex:A.output.length,tokensIndex:A.tokens.length};W.push(ee),Ae(ee);continue}if(D==="}"){let ee=W[W.length-1];if(r.nobrace===!0||!ee){Ae({type:"text",value:D,output:D});continue}let Ue=")";if(ee.dots===!0){let Oe=o.slice(),vt=[];for(let dt=Oe.length-1;dt>=0&&(o.pop(),Oe[dt].type!=="brace");dt--)Oe[dt].type!=="dots"&&vt.unshift(Oe[dt].value);Ue=Cde(vt,r),A.backtrack=!0}if(ee.comma!==!0&&ee.dots!==!0){let Oe=A.output.slice(0,ee.outputIndex),vt=A.tokens.slice(ee.tokensIndex);ee.value=ee.output="\\{",D=Ue="\\}",A.output=Oe;for(let dt of vt)A.output+=dt.output||dt.value}Ae({type:"brace",value:D,output:Ue}),ae("braces"),W.pop();continue}if(D==="|"){V.length>0&&V[V.length-1].conditions++,Ae({type:"text",value:D});continue}if(D===","){let ee=D,Ue=W[W.length-1];Ue&&X[X.length-1]==="braces"&&(Ue.comma=!0,ee="|"),Ae({type:"comma",value:D,output:ee});continue}if(D==="/"){if(F.type==="dot"&&A.index===A.start+1){A.start=A.index+1,A.consumed="",A.output="",o.pop(),F=s;continue}Ae({type:"slash",value:D,output:h});continue}if(D==="."){if(A.braces>0&&F.type==="dot"){F.value==="."&&(F.output=g);let ee=W[W.length-1];F.type="dots",F.output+=D,F.value+=D,ee.dots=!0;continue}if(A.braces+A.parens===0&&F.type!=="bos"&&F.type!=="slash"){Ae({type:"text",value:D,output:g});continue}Ae({type:"dot",value:D,output:g});continue}if(D==="?"){if(!(F&&F.value==="(")&&r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("qmark",D);continue}if(F&&F.type==="paren"){let Ue=pe(),Oe=D;if(Ue==="<"&&!Fn.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(F.value==="("&&!/[!=<:]/.test(Ue)||Ue==="<"&&!/<([!=]|\w+>)/.test(Pe()))&&(Oe=`\\${D}`),Ae({type:"text",value:D,output:Oe});continue}if(r.dot!==!0&&(F.type==="slash"||F.type==="bos")){Ae({type:"qmark",value:D,output:R});continue}Ae({type:"qmark",value:D,output:b});continue}if(D==="!"){if(r.noextglob!==!0&&pe()==="("&&(pe(2)!=="?"||!/[!=<:]/.test(pe(3)))){De("negate",D);continue}if(r.nonegate!==!0&&A.index===0){se();continue}}if(D==="+"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){De("plus",D);continue}if(F&&F.value==="("||r.regex===!1){Ae({type:"plus",value:D,output:f});continue}if(F&&(F.type==="bracket"||F.type==="paren"||F.type==="brace")||A.parens>0){Ae({type:"plus",value:D});continue}Ae({type:"plus",value:f});continue}if(D==="@"){if(r.noextglob!==!0&&pe()==="("&&pe(2)!=="?"){Ae({type:"at",extglob:!0,value:D,output:""});continue}Ae({type:"text",value:D});continue}if(D!=="*"){(D==="$"||D==="^")&&(D=`\\${D}`);let ee=pde.exec(Pe());ee&&(D+=ee[0],A.index+=ee[0].length),Ae({type:"text",value:D});continue}if(F&&(F.type==="globstar"||F.star===!0)){F.type="star",F.star=!0,F.value+=D,F.output=q,A.backtrack=!0,A.globstar=!0,qe(D);continue}let G=Pe();if(r.noextglob!==!0&&/^\([^?]/.test(G)){De("star",D);continue}if(F.type==="star"){if(r.noglobstar===!0){qe(D);continue}let ee=F.prev,Ue=ee.prev,Oe=ee.type==="slash"||ee.type==="bos",vt=Ue&&(Ue.type==="star"||Ue.type==="globstar");if(r.bash===!0&&(!Oe||G[0]&&G[0]!=="/")){Ae({type:"star",value:D,output:""});continue}let dt=A.braces>0&&(ee.type==="comma"||ee.type==="brace"),ri=V.length&&(ee.type==="pipe"||ee.type==="paren");if(!Oe&&ee.type!=="paren"&&!dt&&!ri){Ae({type:"star",value:D,output:""});continue}for(;G.slice(0,3)==="/**";){let ii=t[A.index+4];if(ii&&ii!=="/")break;G=G.slice(3),qe("/**",3)}if(ee.type==="bos"&&he()){F.type="globstar",F.value+=D,F.output=K(r),A.output=F.output,A.globstar=!0,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&!vt&&he()){A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=K(r)+(r.strictSlashes?")":"|$)"),F.value+=D,A.globstar=!0,A.output+=ee.output+F.output,qe(D);continue}if(ee.type==="slash"&&ee.prev.type!=="bos"&&G[0]==="/"){let ii=G[1]!==void 0?"|$":"";A.output=A.output.slice(0,-(ee.output+F.output).length),ee.output=`(?:${ee.output}`,F.type="globstar",F.output=`${K(r)}${h}|${h}${ii})`,F.value+=D,A.output+=ee.output+F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}if(ee.type==="bos"&&G[0]==="/"){F.type="globstar",F.value+=D,F.output=`(?:^|${h}|${K(r)}${h})`,A.output=F.output,A.globstar=!0,qe(D+Ne()),Ae({type:"slash",value:"/",output:""});continue}A.output=A.output.slice(0,-F.output.length),F.type="globstar",F.output=K(r),F.value+=D,A.output+=F.output,A.globstar=!0,qe(D);continue}let Ce={type:"star",value:D,output:q};if(r.bash===!0){Ce.output=".*?",(F.type==="bos"||F.type==="slash")&&(Ce.output=J+Ce.output),Ae(Ce);continue}if(F&&(F.type==="bracket"||F.type==="paren")&&r.regex===!0){Ce.output=D,Ae(Ce);continue}(A.index===A.start||F.type==="slash"||F.type==="dot")&&(F.type==="dot"?(A.output+=E,F.output+=E):r.dot===!0?(A.output+=B,F.output+=B):(A.output+=J,F.output+=J),pe()!=="*"&&(A.output+=p,F.output+=p)),Ae(Ce)}for(;A.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","]"));A.output=Fn.escapeLast(A.output,"["),ae("brackets")}for(;A.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing",")"));A.output=Fn.escapeLast(A.output,"("),ae("parens")}for(;A.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(au("closing","}"));A.output=Fn.escapeLast(A.output,"{"),ae("braces")}if(r.strictSlashes!==!0&&(F.type==="star"||F.type==="bracket")&&Ae({type:"maybe_slash",value:"",output:`${h}?`}),A.backtrack===!0){A.output="";for(let G of A.tokens)A.output+=G.output!=null?G.output:G.value,G.suffix&&(A.output+=G.suffix)}return A};eU.fastpaths=(t,e)=>{let r=P({},e),i=typeof r.maxLength=="number"?Math.min(OI,r.maxLength):OI,n=t.length;if(n>i)throw new SyntaxError(`Input length: ${n}, exceeds maximum allowed length: ${i}`);t=$1[t]||t;let s=Fn.isWindows(e),{DOT_LITERAL:o,SLASH_LITERAL:a,ONE_CHAR:l,DOTS_SLASH:c,NO_DOT:u,NO_DOTS:g,NO_DOTS_SLASH:f,STAR:h,START_ANCHOR:p}=MI.globChars(s),d=r.dot?g:u,m=r.dot?f:u,E=r.capture?"":"?:",B={negated:!1,prefix:""},b=r.bash===!0?".*?":h;r.capture&&(b=`(${b})`);let R=J=>J.noglobstar===!0?b:`(${E}(?:(?!${p}${J.dot?c:o}).)*?)`,H=J=>{switch(J){case"*":return`${d}${l}${b}`;case".*":return`${o}${l}${b}`;case"*.*":return`${d}${b}${o}${l}${b}`;case"*/*":return`${d}${b}${a}${l}${m}${b}`;case"**":return d+R(r);case"**/*":return`(?:${d}${R(r)}${a})?${m}${l}${b}`;case"**/*.*":return`(?:${d}${R(r)}${a})?${m}${b}${o}${l}${b}`;case"**/.*":return`(?:${d}${R(r)}${a})?${o}${l}${b}`;default:{let ne=/^(.*?)\.(\w+)$/.exec(J);if(!ne)return;let q=H(ne[1]);return q?q+o+ne[2]:void 0}}},L=Fn.removePrefix(t,B),K=H(L);return K&&r.strictSlashes!==!0&&(K+=`${a}?`),K};Z1.exports=eU});var iU=I((W$e,rU)=>{"use strict";var mde=require("path"),Ide=X1(),tv=tU(),rv=Ch(),Ede=dh(),yde=t=>t&&typeof t=="object"&&!Array.isArray(t),Dr=(t,e,r=!1)=>{if(Array.isArray(t)){let u=t.map(f=>Dr(f,e,r));return f=>{for(let h of u){let p=h(f);if(p)return p}return!1}}let i=yde(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!i)throw new TypeError("Expected pattern to be a non-empty string");let n=e||{},s=rv.isWindows(e),o=i?Dr.compileRe(t,e):Dr.makeRe(t,e,!1,!0),a=o.state;delete o.state;let l=()=>!1;if(n.ignore){let u=_(P({},e),{ignore:null,onMatch:null,onResult:null});l=Dr(n.ignore,u,r)}let c=(u,g=!1)=>{let{isMatch:f,match:h,output:p}=Dr.test(u,o,e,{glob:t,posix:s}),d={glob:t,state:a,regex:o,posix:s,input:u,output:p,match:h,isMatch:f};return typeof n.onResult=="function"&&n.onResult(d),f===!1?(d.isMatch=!1,g?d:!1):l(u)?(typeof n.onIgnore=="function"&&n.onIgnore(d),d.isMatch=!1,g?d:!1):(typeof n.onMatch=="function"&&n.onMatch(d),g?d:!0)};return r&&(c.state=a),c};Dr.test=(t,e,r,{glob:i,posix:n}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let s=r||{},o=s.format||(n?rv.toPosixSlashes:null),a=t===i,l=a&&o?o(t):t;return a===!1&&(l=o?o(t):t,a=l===i),(a===!1||s.capture===!0)&&(s.matchBase===!0||s.basename===!0?a=Dr.matchBase(t,e,r,n):a=e.exec(l)),{isMatch:Boolean(a),match:a,output:l}};Dr.matchBase=(t,e,r,i=rv.isWindows(r))=>(e instanceof RegExp?e:Dr.makeRe(e,r)).test(mde.basename(t));Dr.isMatch=(t,e,r)=>Dr(e,r)(t);Dr.parse=(t,e)=>Array.isArray(t)?t.map(r=>Dr.parse(r,e)):tv(t,_(P({},e),{fastpaths:!1}));Dr.scan=(t,e)=>Ide(t,e);Dr.compileRe=(t,e,r=!1,i=!1)=>{if(r===!0)return t.output;let n=e||{},s=n.contains?"":"^",o=n.contains?"":"$",a=`${s}(?:${t.output})${o}`;t&&t.negated===!0&&(a=`^(?!${a}).*$`);let l=Dr.toRegex(a,e);return i===!0&&(l.state=t),l};Dr.makeRe=(t,e,r=!1,i=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let n=e||{},s={negated:!1,fastpaths:!0},o="",a;return t.startsWith("./")&&(t=t.slice(2),o=s.prefix="./"),n.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a=tv.fastpaths(t,e)),a===void 0?(s=tv(t,e),s.prefix=o+(s.prefix||"")):s.output=a,Dr.compileRe(s,e,r,i)};Dr.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Dr.constants=Ede;rU.exports=Dr});var iv=I((z$e,nU)=>{"use strict";nU.exports=iU()});var Nn=I((V$e,sU)=>{"use strict";var oU=require("util"),aU=M1(),no=iv(),nv=Ch(),AU=t=>typeof t=="string"&&(t===""||t==="./"),pr=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let i=new Set,n=new Set,s=new Set,o=0,a=u=>{s.add(u.output),r&&r.onResult&&r.onResult(u)};for(let u=0;u!i.has(u));if(r&&c.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(u=>u.replace(/\\/g,"")):e}return c};pr.match=pr;pr.matcher=(t,e)=>no(t,e);pr.isMatch=(t,e,r)=>no(e,r)(t);pr.any=pr.isMatch;pr.not=(t,e,r={})=>{e=[].concat(e).map(String);let i=new Set,n=[],s=a=>{r.onResult&&r.onResult(a),n.push(a.output)},o=pr(t,e,_(P({},r),{onResult:s}));for(let a of n)o.includes(a)||i.add(a);return[...i]};pr.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);if(Array.isArray(e))return e.some(i=>pr.contains(t,i,r));if(typeof e=="string"){if(AU(t)||AU(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return pr.isMatch(t,e,_(P({},r),{contains:!0}))};pr.matchKeys=(t,e,r)=>{if(!nv.isObject(t))throw new TypeError("Expected the first argument to be an object");let i=pr(Object.keys(t),e,r),n={};for(let s of i)n[s]=t[s];return n};pr.some=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(i.some(o=>s(o)))return!0}return!1};pr.every=(t,e,r)=>{let i=[].concat(t);for(let n of[].concat(e)){let s=no(String(n),r);if(!i.every(o=>s(o)))return!1}return!0};pr.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${oU.inspect(t)}"`);return[].concat(e).every(i=>no(i,r)(t))};pr.capture=(t,e,r)=>{let i=nv.isWindows(r),s=no.makeRe(String(t),_(P({},r),{capture:!0})).exec(i?nv.toPosixSlashes(e):e);if(s)return s.slice(1).map(o=>o===void 0?"":o)};pr.makeRe=(...t)=>no.makeRe(...t);pr.scan=(...t)=>no.scan(...t);pr.parse=(t,e)=>{let r=[];for(let i of[].concat(t||[]))for(let n of aU(String(i),e))r.push(no.parse(n,e));return r};pr.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:aU(t,e)};pr.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return pr.braces(t,_(P({},e),{expand:!0}))};sU.exports=pr});var cU=I((_$e,lU)=>{"use strict";lU.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var gU=I((X$e,uU)=>{"use strict";var wde=cU();uU.exports=t=>typeof t=="string"?t.replace(wde(),""):t});var lu={};it(lu,{KeyRelationship:()=>Bl,applyCascade:()=>fv,base64RegExp:()=>CU,colorStringAlphaRegExp:()=>dU,colorStringRegExp:()=>pU,computeKey:()=>rA,getPrintable:()=>Mr,hasExactLength:()=>wU,hasForbiddenKeys:()=>eCe,hasKeyRelationship:()=>pv,hasMaxLength:()=>Mde,hasMinLength:()=>Tde,hasMutuallyExclusiveKeys:()=>tCe,hasRequiredKeys:()=>$de,hasUniqueItems:()=>Ode,isArray:()=>xde,isAtLeast:()=>Hde,isAtMost:()=>Gde,isBase64:()=>Xde,isBoolean:()=>bde,isDate:()=>Sde,isDict:()=>Pde,isEnum:()=>Yi,isHexColor:()=>_de,isISO8601:()=>Vde,isInExclusiveRange:()=>Yde,isInInclusiveRange:()=>jde,isInstanceOf:()=>Rde,isInteger:()=>qde,isJSON:()=>Zde,isLiteral:()=>Bde,isLowerCase:()=>Jde,isNegative:()=>Kde,isNullable:()=>Lde,isNumber:()=>vde,isObject:()=>Dde,isOneOf:()=>Fde,isOptional:()=>Nde,isPositive:()=>Ude,isString:()=>gv,isTuple:()=>kde,isUUID4:()=>zde,isUnknown:()=>yU,isUpperCase:()=>Wde,iso8601RegExp:()=>uv,makeCoercionFn:()=>wl,makeSetter:()=>EU,makeTrait:()=>IU,makeValidator:()=>Ct,matchesRegExp:()=>hv,plural:()=>GI,pushError:()=>at,simpleKeyRegExp:()=>hU,uuid4RegExp:()=>mU});function Ct({test:t}){return IU(t)()}function Mr(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function rA(t,e){var r,i,n;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:hU.test(e)?`${(i=t==null?void 0:t.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=t==null?void 0:t.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wl(t,e){return r=>{let i=t[e];return t[e]=r,wl(t,e).bind(null,i)}}function EU(t,e){return r=>{t[e]=r}}function GI(t,e,r){return t===1?e:r}function at({errors:t,p:e}={},r){return t==null||t.push(`${e!=null?e:"."}: ${r}`),!1}function Bde(t){return Ct({test:(e,r)=>e!==t?at(r,`Expected a literal (got ${Mr(t)})`):!0})}function Yi(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Ct({test:(i,n)=>r.has(i)?!0:at(n,`Expected a valid enumeration value (got ${Mr(i)})`)})}var hU,pU,dU,CU,mU,uv,IU,yU,gv,Qde,bde,vde,Sde,xde,kde,Pde,Dde,Rde,Fde,fv,Nde,Lde,Tde,Mde,wU,Ode,Kde,Ude,Hde,Gde,jde,Yde,qde,hv,Jde,Wde,zde,Vde,_de,Xde,Zde,$de,eCe,tCe,Bl,rCe,pv,Ss=Yfe(()=>{hU=/^[a-zA-Z_][a-zA-Z0-9_]*$/,pU=/^#[0-9a-f]{6}$/i,dU=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,CU=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,mU=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,uv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,IU=t=>()=>t;yU=()=>Ct({test:(t,e)=>!0});gv=()=>Ct({test:(t,e)=>typeof t!="string"?at(e,`Expected a string (got ${Mr(t)})`):!0});Qde=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),bde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i=Qde.get(t);if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a boolean (got ${Mr(t)})`)}return!0}}),vde=()=>Ct({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch(s){}if(typeof n=="number")if(JSON.stringify(n)===t)i=n;else return at(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a number (got ${Mr(t)})`)}return!0}}),Sde=()=>Ct({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)!="undefined"){if(typeof(e==null?void 0:e.coercion)=="undefined")return at(e,"Unbound coercion result");let i;if(typeof t=="string"&&uv.test(t))i=new Date(t);else{let n;if(typeof t=="string"){let s;try{s=JSON.parse(t)}catch(o){}typeof s=="number"&&(n=s)}else typeof t=="number"&&(n=t);if(typeof n!="undefined")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return at(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof i!="undefined")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,i)]),!0}return at(e,`Expected a date (got ${Mr(t)})`)}return!0}}),xde=(t,{delimiter:e}={})=>Ct({test:(r,i)=>{var n;if(typeof r=="string"&&typeof e!="undefined"&&typeof(i==null?void 0:i.coercions)!="undefined"){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");r=r.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,r)])}if(!Array.isArray(r))return at(i,`Expected an array (got ${Mr(r)})`);let s=!0;for(let o=0,a=r.length;o{let r=wU(t.length);return Ct({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e!="undefined"&&typeof(n==null?void 0:n.coercions)!="undefined"){if(typeof(n==null?void 0:n.coercion)=="undefined")return at(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return at(n,`Expected a tuple (got ${Mr(i)})`);let o=r(i,Object.assign({},n));for(let a=0,l=i.length;aCt({test:(r,i)=>{if(typeof r!="object"||r===null)return at(i,`Expected an object (got ${Mr(r)})`);let n=Object.keys(r),s=!0;for(let o=0,a=n.length;o{let r=Object.keys(t);return Ct({test:(i,n)=>{if(typeof i!="object"||i===null)return at(n,`Expected an object (got ${Mr(i)})`);let s=new Set([...r,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(t,l)?t[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c!="undefined"?a=c(u,Object.assign(Object.assign({},n),{p:rA(n,l),coercion:wl(i,l)}))&&a:e===null?a=at(Object.assign(Object.assign({},n),{p:rA(n,l)}),`Extraneous property (got ${Mr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:EU(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Rde=t=>Ct({test:(e,r)=>e instanceof t?!0:at(r,`Expected an instance of ${t.name} (got ${Mr(e)})`)}),Fde=(t,{exclusive:e=!1}={})=>Ct({test:(r,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)!="undefined"?[]:void 0;for(let c=0,u=t.length;c1?at(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),fv=(t,e)=>Ct({test:(r,i)=>{var n,s;let o={value:r},a=typeof(i==null?void 0:i.coercions)!="undefined"?wl(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)!="undefined"?[]:void 0;if(!t(r,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l!="undefined")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)!="undefined"){if(o.value!==r){if(typeof(i==null?void 0:i.coercion)=="undefined")return at(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Nde=t=>Ct({test:(e,r)=>typeof e=="undefined"?!0:t(e,r)}),Lde=t=>Ct({test:(e,r)=>e===null?!0:t(e,r)}),Tde=t=>Ct({test:(e,r)=>e.length>=t?!0:at(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Mde=t=>Ct({test:(e,r)=>e.length<=t?!0:at(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),wU=t=>Ct({test:(e,r)=>e.length!==t?at(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Ode=({map:t}={})=>Ct({test:(e,r)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sCt({test:(t,e)=>t<=0?!0:at(e,`Expected to be negative (got ${t})`)}),Ude=()=>Ct({test:(t,e)=>t>=0?!0:at(e,`Expected to be positive (got ${t})`)}),Hde=t=>Ct({test:(e,r)=>e>=t?!0:at(r,`Expected to be at least ${t} (got ${e})`)}),Gde=t=>Ct({test:(e,r)=>e<=t?!0:at(r,`Expected to be at most ${t} (got ${e})`)}),jde=(t,e)=>Ct({test:(r,i)=>r>=t&&r<=e?!0:at(i,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Yde=(t,e)=>Ct({test:(r,i)=>r>=t&&rCt({test:(e,r)=>e!==Math.round(e)?at(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:at(r,`Expected to be a safe integer (got ${e})`)}),hv=t=>Ct({test:(e,r)=>t.test(e)?!0:at(r,`Expected to match the pattern ${t.toString()} (got ${Mr(e)})`)}),Jde=()=>Ct({test:(t,e)=>t!==t.toLowerCase()?at(e,`Expected to be all-lowercase (got ${t})`):!0}),Wde=()=>Ct({test:(t,e)=>t!==t.toUpperCase()?at(e,`Expected to be all-uppercase (got ${t})`):!0}),zde=()=>Ct({test:(t,e)=>mU.test(t)?!0:at(e,`Expected to be a valid UUID v4 (got ${Mr(t)})`)}),Vde=()=>Ct({test:(t,e)=>uv.test(t)?!1:at(e,`Expected to be a valid ISO 8601 date string (got ${Mr(t)})`)}),_de=({alpha:t=!1})=>Ct({test:(e,r)=>(t?pU.test(e):dU.test(e))?!0:at(r,`Expected to be a valid hexadecimal color string (got ${Mr(e)})`)}),Xde=()=>Ct({test:(t,e)=>CU.test(t)?!0:at(e,`Expected to be a valid base 64 string (got ${Mr(t)})`)}),Zde=(t=yU())=>Ct({test:(e,r)=>{let i;try{i=JSON.parse(e)}catch(n){return at(r,`Expected to be a valid JSON string (got ${Mr(e)})`)}return t(i,r)}}),$de=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?at(i,`Missing required ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},eCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?at(i,`Forbidden ${GI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tCe=t=>{let e=new Set(t);return Ct({test:(r,i)=>{let n=new Set(Object.keys(r)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?at(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Bl||(Bl={}));rCe={[Bl.Forbids]:{expect:!1,message:"forbids using"},[Bl.Requires]:{expect:!0,message:"requires using"}},pv=(t,e,r,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(r),o=rCe[e];return Ct({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(t)||n.has(a[t]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?at(l,`Property "${t}" ${o.message} ${GI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var Sh=I(($et,OU)=>{var mCe="2.0.0",ICe=256,ECe=Number.MAX_SAFE_INTEGER||9007199254740991,yCe=16;OU.exports={SEMVER_SPEC_VERSION:mCe,MAX_LENGTH:ICe,MAX_SAFE_INTEGER:ECe,MAX_SAFE_COMPONENT_LENGTH:yCe}});var xh=I((ett,KU)=>{var wCe=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};KU.exports=wCe});var Ql=I((iA,UU)=>{var{MAX_SAFE_COMPONENT_LENGTH:yv}=Sh(),BCe=xh();iA=UU.exports={};var QCe=iA.re=[],Je=iA.src=[],We=iA.t={},bCe=0,mt=(t,e,r)=>{let i=bCe++;BCe(i,e),We[t]=i,Je[i]=e,QCe[i]=new RegExp(e,r?"g":void 0)};mt("NUMERICIDENTIFIER","0|[1-9]\\d*");mt("NUMERICIDENTIFIERLOOSE","[0-9]+");mt("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");mt("MAINVERSION",`(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})\\.(${Je[We.NUMERICIDENTIFIER]})`);mt("MAINVERSIONLOOSE",`(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})\\.(${Je[We.NUMERICIDENTIFIERLOOSE]})`);mt("PRERELEASEIDENTIFIER",`(?:${Je[We.NUMERICIDENTIFIER]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASEIDENTIFIERLOOSE",`(?:${Je[We.NUMERICIDENTIFIERLOOSE]}|${Je[We.NONNUMERICIDENTIFIER]})`);mt("PRERELEASE",`(?:-(${Je[We.PRERELEASEIDENTIFIER]}(?:\\.${Je[We.PRERELEASEIDENTIFIER]})*))`);mt("PRERELEASELOOSE",`(?:-?(${Je[We.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Je[We.PRERELEASEIDENTIFIERLOOSE]})*))`);mt("BUILDIDENTIFIER","[0-9A-Za-z-]+");mt("BUILD",`(?:\\+(${Je[We.BUILDIDENTIFIER]}(?:\\.${Je[We.BUILDIDENTIFIER]})*))`);mt("FULLPLAIN",`v?${Je[We.MAINVERSION]}${Je[We.PRERELEASE]}?${Je[We.BUILD]}?`);mt("FULL",`^${Je[We.FULLPLAIN]}$`);mt("LOOSEPLAIN",`[v=\\s]*${Je[We.MAINVERSIONLOOSE]}${Je[We.PRERELEASELOOSE]}?${Je[We.BUILD]}?`);mt("LOOSE",`^${Je[We.LOOSEPLAIN]}$`);mt("GTLT","((?:<|>)?=?)");mt("XRANGEIDENTIFIERLOOSE",`${Je[We.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);mt("XRANGEIDENTIFIER",`${Je[We.NUMERICIDENTIFIER]}|x|X|\\*`);mt("XRANGEPLAIN",`[v=\\s]*(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:\\.(${Je[We.XRANGEIDENTIFIER]})(?:${Je[We.PRERELEASE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGEPLAINLOOSE",`[v=\\s]*(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Je[We.XRANGEIDENTIFIERLOOSE]})(?:${Je[We.PRERELEASELOOSE]})?${Je[We.BUILD]}?)?)?`);mt("XRANGE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAIN]}$`);mt("XRANGELOOSE",`^${Je[We.GTLT]}\\s*${Je[We.XRANGEPLAINLOOSE]}$`);mt("COERCE",`(^|[^\\d])(\\d{1,${yv}})(?:\\.(\\d{1,${yv}}))?(?:\\.(\\d{1,${yv}}))?(?:$|[^\\d])`);mt("COERCERTL",Je[We.COERCE],!0);mt("LONETILDE","(?:~>?)");mt("TILDETRIM",`(\\s*)${Je[We.LONETILDE]}\\s+`,!0);iA.tildeTrimReplace="$1~";mt("TILDE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAIN]}$`);mt("TILDELOOSE",`^${Je[We.LONETILDE]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("LONECARET","(?:\\^)");mt("CARETTRIM",`(\\s*)${Je[We.LONECARET]}\\s+`,!0);iA.caretTrimReplace="$1^";mt("CARET",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAIN]}$`);mt("CARETLOOSE",`^${Je[We.LONECARET]}${Je[We.XRANGEPLAINLOOSE]}$`);mt("COMPARATORLOOSE",`^${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]})$|^$`);mt("COMPARATOR",`^${Je[We.GTLT]}\\s*(${Je[We.FULLPLAIN]})$|^$`);mt("COMPARATORTRIM",`(\\s*)${Je[We.GTLT]}\\s*(${Je[We.LOOSEPLAIN]}|${Je[We.XRANGEPLAIN]})`,!0);iA.comparatorTrimReplace="$1$2$3";mt("HYPHENRANGE",`^\\s*(${Je[We.XRANGEPLAIN]})\\s+-\\s+(${Je[We.XRANGEPLAIN]})\\s*$`);mt("HYPHENRANGELOOSE",`^\\s*(${Je[We.XRANGEPLAINLOOSE]})\\s+-\\s+(${Je[We.XRANGEPLAINLOOSE]})\\s*$`);mt("STAR","(<|>)?=?\\s*\\*");mt("GTE0","^\\s*>=\\s*0.0.0\\s*$");mt("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var kh=I((ttt,HU)=>{var vCe=["includePrerelease","loose","rtl"],SCe=t=>t?typeof t!="object"?{loose:!0}:vCe.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};HU.exports=SCe});var zI=I((rtt,GU)=>{var jU=/^[0-9]+$/,YU=(t,e)=>{let r=jU.test(t),i=jU.test(e);return r&&i&&(t=+t,e=+e),t===e?0:r&&!i?-1:i&&!r?1:tYU(e,t);GU.exports={compareIdentifiers:YU,rcompareIdentifiers:xCe}});var bi=I((itt,qU)=>{var VI=xh(),{MAX_LENGTH:JU,MAX_SAFE_INTEGER:_I}=Sh(),{re:WU,t:zU}=Ql(),kCe=kh(),{compareIdentifiers:Ph}=zI(),_n=class{constructor(e,r){if(r=kCe(r),e instanceof _n){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>JU)throw new TypeError(`version is longer than ${JU} characters`);VI("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let i=e.trim().match(r.loose?WU[zU.LOOSE]:WU[zU.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_I||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_I||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_I||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s<_I)return s}return n}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VI("SemVer.compare",this.version,this.options,e),!(e instanceof _n)){if(typeof e=="string"&&e===this.version)return 0;e=new _n(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof _n||(e=new _n(e,this.options)),Ph(this.major,e.major)||Ph(this.minor,e.minor)||Ph(this.patch,e.patch)}comparePre(e){if(e instanceof _n||(e=new _n(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let i=this.prerelease[r],n=e.prerelease[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}compareBuild(e){e instanceof _n||(e=new _n(e,this.options));let r=0;do{let i=this.build[r],n=e.build[r];if(VI("prerelease compare",r,i,n),i===void 0&&n===void 0)return 0;if(n===void 0)return 1;if(i===void 0)return-1;if(i===n)continue;return Ph(i,n)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};qU.exports=_n});var bl=I((ntt,VU)=>{var{MAX_LENGTH:PCe}=Sh(),{re:_U,t:XU}=Ql(),ZU=bi(),DCe=kh(),RCe=(t,e)=>{if(e=DCe(e),t instanceof ZU)return t;if(typeof t!="string"||t.length>PCe||!(e.loose?_U[XU.LOOSE]:_U[XU.FULL]).test(t))return null;try{return new ZU(t,e)}catch(i){return null}};VU.exports=RCe});var e2=I((stt,$U)=>{var FCe=bl(),NCe=(t,e)=>{let r=FCe(t,e);return r?r.version:null};$U.exports=NCe});var r2=I((ott,t2)=>{var LCe=bl(),TCe=(t,e)=>{let r=LCe(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};t2.exports=TCe});var n2=I((att,i2)=>{var MCe=bi(),OCe=(t,e,r,i)=>{typeof r=="string"&&(i=r,r=void 0);try{return new MCe(t,r).inc(e,i).version}catch(n){return null}};i2.exports=OCe});var Xn=I((Att,s2)=>{var o2=bi(),KCe=(t,e,r)=>new o2(t,r).compare(new o2(e,r));s2.exports=KCe});var XI=I((ltt,a2)=>{var UCe=Xn(),HCe=(t,e,r)=>UCe(t,e,r)===0;a2.exports=HCe});var c2=I((ctt,A2)=>{var l2=bl(),GCe=XI(),jCe=(t,e)=>{if(GCe(t,e))return null;{let r=l2(t),i=l2(e),n=r.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in r)if((a==="major"||a==="minor"||a==="patch")&&r[a]!==i[a])return s+a;return o}};A2.exports=jCe});var g2=I((utt,u2)=>{var YCe=bi(),qCe=(t,e)=>new YCe(t,e).major;u2.exports=qCe});var h2=I((gtt,f2)=>{var JCe=bi(),WCe=(t,e)=>new JCe(t,e).minor;f2.exports=WCe});var d2=I((ftt,p2)=>{var zCe=bi(),VCe=(t,e)=>new zCe(t,e).patch;p2.exports=VCe});var m2=I((htt,C2)=>{var _Ce=bl(),XCe=(t,e)=>{let r=_Ce(t,e);return r&&r.prerelease.length?r.prerelease:null};C2.exports=XCe});var E2=I((ptt,I2)=>{var ZCe=Xn(),$Ce=(t,e,r)=>ZCe(e,t,r);I2.exports=$Ce});var w2=I((dtt,y2)=>{var eme=Xn(),tme=(t,e)=>eme(t,e,!0);y2.exports=tme});var ZI=I((Ctt,B2)=>{var Q2=bi(),rme=(t,e,r)=>{let i=new Q2(t,r),n=new Q2(e,r);return i.compare(n)||i.compareBuild(n)};B2.exports=rme});var v2=I((mtt,b2)=>{var ime=ZI(),nme=(t,e)=>t.sort((r,i)=>ime(r,i,e));b2.exports=nme});var x2=I((Itt,S2)=>{var sme=ZI(),ome=(t,e)=>t.sort((r,i)=>sme(i,r,e));S2.exports=ome});var Dh=I((Ett,k2)=>{var ame=Xn(),Ame=(t,e,r)=>ame(t,e,r)>0;k2.exports=Ame});var $I=I((ytt,P2)=>{var lme=Xn(),cme=(t,e,r)=>lme(t,e,r)<0;P2.exports=cme});var wv=I((wtt,D2)=>{var ume=Xn(),gme=(t,e,r)=>ume(t,e,r)!==0;D2.exports=gme});var eE=I((Btt,R2)=>{var fme=Xn(),hme=(t,e,r)=>fme(t,e,r)>=0;R2.exports=hme});var tE=I((Qtt,F2)=>{var pme=Xn(),dme=(t,e,r)=>pme(t,e,r)<=0;F2.exports=dme});var Bv=I((btt,N2)=>{var Cme=XI(),mme=wv(),Ime=Dh(),Eme=eE(),yme=$I(),wme=tE(),Bme=(t,e,r,i)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return Cme(t,r,i);case"!=":return mme(t,r,i);case">":return Ime(t,r,i);case">=":return Eme(t,r,i);case"<":return yme(t,r,i);case"<=":return wme(t,r,i);default:throw new TypeError(`Invalid operator: ${e}`)}};N2.exports=Bme});var T2=I((vtt,L2)=>{var Qme=bi(),bme=bl(),{re:rE,t:iE}=Ql(),vme=(t,e)=>{if(t instanceof Qme)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rE[iE.COERCE]);else{let i;for(;(i=rE[iE.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),rE[iE.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;rE[iE.COERCERTL].lastIndex=-1}return r===null?null:bme(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};L2.exports=vme});var O2=I((Stt,M2)=>{"use strict";M2.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Rh=I((xtt,K2)=>{"use strict";K2.exports=Pt;Pt.Node=vl;Pt.create=Pt;function Pt(t){var e=this;if(e instanceof Pt||(e=new Pt),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var r=0,i=arguments.length;r1)r=e;else if(this.head)i=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)r=t(r,i.value,n),i=i.next;return r};Pt.prototype.reduceReverse=function(t,e){var r,i=this.tail;if(arguments.length>1)r=e;else if(this.tail)i=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)r=t(r,i.value,n),i=i.prev;return r};Pt.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Pt.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Pt.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Pt;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>t;i--,n=n.prev)r.push(n.value);return r};Pt.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var i=0,n=this.head;n!==null&&i{"use strict";var Pme=Rh(),Sl=Symbol("max"),ra=Symbol("length"),uu=Symbol("lengthCalculator"),Fh=Symbol("allowStale"),xl=Symbol("maxAge"),ia=Symbol("dispose"),H2=Symbol("noDisposeOnSet"),si=Symbol("lruList"),ks=Symbol("cache"),G2=Symbol("updateAgeOnGet"),Qv=()=>1,j2=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[Sl]=e.max||Infinity,i=e.length||Qv;if(this[uu]=typeof i!="function"?Qv:i,this[Fh]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[xl]=e.maxAge||0,this[ia]=e.dispose,this[H2]=e.noDisposeOnSet||!1,this[G2]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Sl]=e||Infinity,Nh(this)}get max(){return this[Sl]}set allowStale(e){this[Fh]=!!e}get allowStale(){return this[Fh]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[xl]=e,Nh(this)}get maxAge(){return this[xl]}set lengthCalculator(e){typeof e!="function"&&(e=Qv),e!==this[uu]&&(this[uu]=e,this[ra]=0,this[si].forEach(r=>{r.length=this[uu](r.value,r.key),this[ra]+=r.length})),Nh(this)}get lengthCalculator(){return this[uu]}get length(){return this[ra]}get itemCount(){return this[si].length}rforEach(e,r){r=r||this;for(let i=this[si].tail;i!==null;){let n=i.prev;q2(this,e,i,r),i=n}}forEach(e,r){r=r||this;for(let i=this[si].head;i!==null;){let n=i.next;q2(this,e,i,r),i=n}}keys(){return this[si].toArray().map(e=>e.key)}values(){return this[si].toArray().map(e=>e.value)}reset(){this[ia]&&this[si]&&this[si].length&&this[si].forEach(e=>this[ia](e.key,e.value)),this[ks]=new Map,this[si]=new Pme,this[ra]=0}dump(){return this[si].map(e=>nE(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[si]}set(e,r,i){if(i=i||this[xl],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uu](r,e);if(this[ks].has(e)){if(s>this[Sl])return gu(this,this[ks].get(e)),!1;let l=this[ks].get(e).value;return this[ia]&&(this[H2]||this[ia](e,l.value)),l.now=n,l.maxAge=i,l.value=r,this[ra]+=s-l.length,l.length=s,this.get(e),Nh(this),!0}let o=new Y2(e,r,s,n,i);return o.length>this[Sl]?(this[ia]&&this[ia](e,r),!1):(this[ra]+=o.length,this[si].unshift(o),this[ks].set(e,this[si].head),Nh(this),!0)}has(e){if(!this[ks].has(e))return!1;let r=this[ks].get(e).value;return!nE(this,r)}get(e){return bv(this,e,!0)}peek(e){return bv(this,e,!1)}pop(){let e=this[si].tail;return e?(gu(this,e),e.value):null}del(e){gu(this,this[ks].get(e))}load(e){this.reset();let r=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-r;o>0&&this.set(n.k,n.v,o)}}}prune(){this[ks].forEach((e,r)=>bv(this,r,!1))}},bv=(t,e,r)=>{let i=t[ks].get(e);if(i){let n=i.value;if(nE(t,n)){if(gu(t,i),!t[Fh])return}else r&&(t[G2]&&(i.value.now=Date.now()),t[si].unshiftNode(i));return n.value}},nE=(t,e)=>{if(!e||!e.maxAge&&!t[xl])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[xl]&&r>t[xl]},Nh=t=>{if(t[ra]>t[Sl])for(let e=t[si].tail;t[ra]>t[Sl]&&e!==null;){let r=e.prev;gu(t,e),e=r}},gu=(t,e)=>{if(e){let r=e.value;t[ia]&&t[ia](r.key,r.value),t[ra]-=r.length,t[ks].delete(r.key),t[si].removeNode(e)}},Y2=class{constructor(e,r,i,n,s){this.key=e,this.value=r,this.length=i,this.now=n,this.maxAge=s||0}},q2=(t,e,r,i)=>{let n=r.value;nE(t,n)&&(gu(t,r),t[Fh]||(n=void 0)),n&&e.call(i,n.value,n.key,t)};U2.exports=j2});var Zn=I((Ptt,W2)=>{var fu=class{constructor(e,r){if(r=Dme(r),e instanceof fu)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new fu(e.raw,r);if(e instanceof vv)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!V2(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&Tme(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=z2.get(i);if(n)return n;let s=this.options.loose,o=s?vi[di.HYPHENRANGELOOSE]:vi[di.HYPHENRANGE];e=e.replace(o,Kme(this.options.includePrerelease)),Rr("hyphen replace",e),e=e.replace(vi[di.COMPARATORTRIM],Fme),Rr("comparator trim",e,vi[di.COMPARATORTRIM]),e=e.replace(vi[di.TILDETRIM],Nme),e=e.replace(vi[di.CARETTRIM],Lme),e=e.split(/\s+/).join(" ");let a=s?vi[di.COMPARATORLOOSE]:vi[di.COMPARATOR],l=e.split(" ").map(f=>Mme(f,this.options)).join(" ").split(/\s+/).map(f=>Ome(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new vv(f,this.options)),c=l.length,u=new Map;for(let f of l){if(V2(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return z2.set(i,g),g}intersects(e,r){if(!(e instanceof fu))throw new TypeError("a Range is required");return this.set.some(i=>_2(i,r)&&e.set.some(n=>_2(n,r)&&i.every(s=>n.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new Rme(e,this.options)}catch(r){return!1}for(let r=0;rt.value==="<0.0.0-0",Tme=t=>t.value==="",_2=(t,e)=>{let r=!0,i=t.slice(),n=i.pop();for(;r&&i.length;)r=i.every(s=>n.intersects(s,e)),n=i.pop();return r},Mme=(t,e)=>(Rr("comp",t,e),t=jme(t,e),Rr("caret",t),t=Gme(t,e),Rr("tildes",t),t=Yme(t,e),Rr("xrange",t),t=qme(t,e),Rr("stars",t),t),Ji=t=>!t||t.toLowerCase()==="x"||t==="*",Gme=(t,e)=>t.trim().split(/\s+/).map(r=>Jme(r,e)).join(" "),Jme=(t,e)=>{let r=e.loose?vi[di.TILDELOOSE]:vi[di.TILDE];return t.replace(r,(i,n,s,o,a)=>{Rr("tilde",t,i,n,s,o,a);let l;return Ji(n)?l="":Ji(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Ji(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Rr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Rr("tilde return",l),l})},jme=(t,e)=>t.trim().split(/\s+/).map(r=>Wme(r,e)).join(" "),Wme=(t,e)=>{Rr("caret",t,e);let r=e.loose?vi[di.CARETLOOSE]:vi[di.CARET],i=e.includePrerelease?"-0":"";return t.replace(r,(n,s,o,a,l)=>{Rr("caret",t,n,s,o,a,l);let c;return Ji(s)?c="":Ji(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Ji(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Rr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Rr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Rr("caret return",c),c})},Yme=(t,e)=>(Rr("replaceXRanges",t,e),t.split(/\s+/).map(r=>zme(r,e)).join(" ")),zme=(t,e)=>{t=t.trim();let r=e.loose?vi[di.XRANGELOOSE]:vi[di.XRANGE];return t.replace(r,(i,n,s,o,a,l)=>{Rr("xRange",t,i,n,s,o,a,l);let c=Ji(s),u=c||Ji(o),g=u||Ji(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Rr("xRange return",i),i})},qme=(t,e)=>(Rr("replaceStars",t,e),t.trim().replace(vi[di.STAR],"")),Ome=(t,e)=>(Rr("replaceGTE0",t,e),t.trim().replace(vi[e.includePrerelease?di.GTE0PRE:di.GTE0],"")),Kme=t=>(e,r,i,n,s,o,a,l,c,u,g,f,h)=>(Ji(i)?r="":Ji(n)?r=`>=${i}.0.0${t?"-0":""}`:Ji(s)?r=`>=${i}.${n}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ji(c)?l="":Ji(u)?l=`<${+c+1}.0.0-0`:Ji(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:t?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),Ume=(t,e,r)=>{for(let i=0;i0){let n=t[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Lh=I((Dtt,X2)=>{var Th=Symbol("SemVer ANY"),Mh=class{static get ANY(){return Th}constructor(e,r){if(r=Vme(r),e instanceof Mh){if(e.loose===!!r.loose)return e;e=e.value}xv("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===Th?this.value="":this.value=this.operator+this.semver.version,xv("comp",this)}parse(e){let r=this.options.loose?Z2[$2.COMPARATORLOOSE]:Z2[$2.COMPARATOR],i=e.match(r);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new eH(i[2],this.options.loose):this.semver=Th}toString(){return this.value}test(e){if(xv("Comparator.test",e,this.options.loose),this.semver===Th||e===Th)return!0;if(typeof e=="string")try{e=new eH(e,this.options)}catch(r){return!1}return Sv(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof Mh))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tH(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new tH(this.value,r).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=Sv(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=Sv(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};X2.exports=Mh;var Vme=kh(),{re:Z2,t:$2}=Ql(),Sv=Bv(),xv=xh(),eH=bi(),tH=Zn()});var Oh=I((Rtt,rH)=>{var _me=Zn(),Xme=(t,e,r)=>{try{e=new _me(e,r)}catch(i){return!1}return e.test(t)};rH.exports=Xme});var nH=I((Ftt,iH)=>{var Zme=Zn(),$me=(t,e)=>new Zme(t,e).set.map(r=>r.map(i=>i.value).join(" ").trim().split(" "));iH.exports=$me});var oH=I((Ntt,sH)=>{var eIe=bi(),tIe=Zn(),rIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new tIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new eIe(i,r))}),i};sH.exports=rIe});var AH=I((Ltt,aH)=>{var iIe=bi(),nIe=Zn(),sIe=(t,e,r)=>{let i=null,n=null,s=null;try{s=new nIe(e,r)}catch(o){return null}return t.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new iIe(i,r))}),i};aH.exports=sIe});var uH=I((Ttt,lH)=>{var kv=bi(),oIe=Zn(),cH=Dh(),aIe=(t,e)=>{t=new oIe(t,e);let r=new kv("0.0.0");if(t.test(r)||(r=new kv("0.0.0-0"),t.test(r)))return r;r=null;for(let i=0;i{let a=new kv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cH(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||cH(r,s))&&(r=s)}return r&&t.test(r)?r:null};lH.exports=aIe});var fH=I((Mtt,gH)=>{var AIe=Zn(),lIe=(t,e)=>{try{return new AIe(t,e).range||"*"}catch(r){return null}};gH.exports=lIe});var sE=I((Ott,hH)=>{var cIe=bi(),pH=Lh(),{ANY:uIe}=pH,gIe=Zn(),fIe=Oh(),dH=Dh(),CH=$I(),hIe=tE(),pIe=eE(),dIe=(t,e,r,i)=>{t=new cIe(t,i),e=new gIe(e,i);let n,s,o,a,l;switch(r){case">":n=dH,s=hIe,o=CH,a=">",l=">=";break;case"<":n=CH,s=pIe,o=dH,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fIe(t,e,i))return!1;for(let c=0;c{h.semver===uIe&&(h=new pH(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(t,f.semver))return!1;if(f.operator===l&&o(t,f.semver))return!1}return!0};hH.exports=dIe});var IH=I((Ktt,mH)=>{var CIe=sE(),mIe=(t,e,r)=>CIe(t,e,">",r);mH.exports=mIe});var yH=I((Utt,EH)=>{var IIe=sE(),EIe=(t,e,r)=>IIe(t,e,"<",r);EH.exports=EIe});var QH=I((Htt,wH)=>{var BH=Zn(),yIe=(t,e,r)=>(t=new BH(t,r),e=new BH(e,r),t.intersects(e));wH.exports=yIe});var vH=I((Gtt,bH)=>{var wIe=Oh(),BIe=Xn();bH.exports=(t,e,r)=>{let i=[],n=null,s=null,o=t.sort((u,g)=>BIe(u,g,r));for(let u of o)wIe(u,e,r)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xH=Zn(),oE=Lh(),{ANY:Pv}=oE,Kh=Oh(),Dv=Xn(),bIe=(t,e,r={})=>{if(t===e)return!0;t=new xH(t,r),e=new xH(e,r);let i=!1;e:for(let n of t.set){for(let s of e.set){let o=QIe(n,s,r);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},QIe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pv){if(e.length===1&&e[0].semver===Pv)return!0;r.includePrerelease?t=[new oE(">=0.0.0-0")]:t=[new oE(">=0.0.0")]}if(e.length===1&&e[0].semver===Pv){if(r.includePrerelease)return!0;e=[new oE(">=0.0.0")]}let i=new Set,n,s;for(let h of t)h.operator===">"||h.operator===">="?n=kH(n,h,r):h.operator==="<"||h.operator==="<="?s=PH(s,h,r):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=Dv(n.semver,s.semver,r),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Kh(h,String(n),r)||s&&!Kh(h,String(s),r))return null;for(let p of e)if(!Kh(h,String(p),r))return!1;return!0}let a,l,c,u,g=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=kH(n,h,r),a===h&&a!==n)return!1}else if(n.operator===">="&&!Kh(n.semver,String(h),r))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=PH(s,h,r),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Kh(s.semver,String(h),r))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},kH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i>0?t:i<0||e.operator===">"&&t.operator===">="?e:t},PH=(t,e,r)=>{if(!t)return e;let i=Dv(t.semver,e.semver,r);return i<0?t:i>0||e.operator==="<"&&t.operator==="<="?e:t};SH.exports=bIe});var Or=I((Ytt,RH)=>{var Rv=Ql();RH.exports={re:Rv.re,src:Rv.src,tokens:Rv.t,SEMVER_SPEC_VERSION:Sh().SEMVER_SPEC_VERSION,SemVer:bi(),compareIdentifiers:zI().compareIdentifiers,rcompareIdentifiers:zI().rcompareIdentifiers,parse:bl(),valid:e2(),clean:r2(),inc:n2(),diff:c2(),major:g2(),minor:h2(),patch:d2(),prerelease:m2(),compare:Xn(),rcompare:E2(),compareLoose:w2(),compareBuild:ZI(),sort:v2(),rsort:x2(),gt:Dh(),lt:$I(),eq:XI(),neq:wv(),gte:eE(),lte:tE(),cmp:Bv(),coerce:T2(),Comparator:Lh(),Range:Zn(),satisfies:Oh(),toComparators:nH(),maxSatisfying:oH(),minSatisfying:AH(),minVersion:uH(),validRange:fH(),outside:sE(),gtr:IH(),ltr:yH(),intersects:QH(),simplifyRange:vH(),subset:DH()}});var Uv=I(AE=>{"use strict";Object.defineProperty(AE,"__esModule",{value:!0});AE.VERSION=void 0;AE.VERSION="9.1.0"});var Dt=I((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e,r){if(r||arguments.length===2)for(var i=0,n=e.length,s;i{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof lE=="object"&&lE.exports?lE.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:YH,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},t.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var m={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(m,"global");break;case"i":o(m,"ignoreCase");break;case"m":o(m,"multiLine");break;case"u":o(m,"unicode");break;case"y":o(m,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:m,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var p=[],d=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(d)}},t.prototype.alternative=function(){for(var p=[],d=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}a(d);var m=this.disjunction();return this.consumeChar(")"),{type:d,value:m,loc:this.loc(p)}}l()},t.prototype.quantifier=function(p){var d,m=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var E=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:E,atMost:E};break;case",":var B;this.isDigit()?(B=this.integerIncludingZero(),d={atLeast:E,atMost:B}):d={atLeast:E,atMost:Infinity},this.consumeChar("}");break}if(p===!0&&d===void 0)return;a(d);break}if(!(p===!0&&d===void 0))return a(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(m),d},t.prototype.atom=function(){var p,d=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(d),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},t.prototype.characterClassEscape=function(){var p,d=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,d=!0;break;case"s":p=f;break;case"S":p=f,d=!0;break;case"w":p=g;break;case"W":p=g,d=!0;break}return a(p),{type:"Set",value:p,complement:d}},t.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var d=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},t.prototype.characterClass=function(){var p=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var m=this.classAtom(),E=m.type==="Character";if(E&&this.isRangeDash()){this.consumeChar("-");var B=this.classAtom(),b=B.type==="Character";if(b){if(B.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,d){p.length!==void 0?p.forEach(function(m){d.push(m)}):d.push(p)}function o(p,d){if(p[d]===!0)throw"duplicate flag "+d;p[d]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var d in p){var m=p[d];p.hasOwnProperty(d)&&(m.type!==void 0?this.visit(m):Array.isArray(m)&&m.forEach(function(E){this.visit(E)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:t,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var gE=I(Iu=>{"use strict";Object.defineProperty(Iu,"__esModule",{value:!0});Iu.clearRegExpParserCache=Iu.getRegExpAst=void 0;var FIe=cE(),uE={},NIe=new FIe.RegExpParser;function LIe(t){var e=t.toString();if(uE.hasOwnProperty(e))return uE[e];var r=NIe.pattern(e);return uE[e]=r,r}Iu.getRegExpAst=LIe;function TIe(){uE={}}Iu.clearRegExpParserCache=TIe});var VH=I(fn=>{"use strict";var MIe=fn&&fn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(fn,"__esModule",{value:!0});fn.canMatchCharCode=fn.firstCharOptimizedIndices=fn.getOptimizedStartCodesIndices=fn.failedOptimizationPrefixMsg=void 0;var qH=cE(),$n=Dt(),JH=gE(),sa=Hv(),WH="Complement Sets are not supported for first char optimization";fn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function OIe(t,e){e===void 0&&(e=!1);try{var r=(0,JH.getRegExpAst)(t),i=fE(r.value,{},r.flags.ignoreCase);return i}catch(s){if(s.message===WH)e&&(0,$n.PRINT_WARNING)(""+fn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,$n.PRINT_ERROR)(fn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+qH.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}fn.getOptimizedStartCodesIndices=OIe;function fE(t,e,r){switch(t.type){case"Disjunction":for(var i=0;i=sa.minOptimizationVal)for(var f=u.from>=sa.minOptimizationVal?u.from:sa.minOptimizationVal,h=u.to,p=(0,sa.charCodeToOptimizedIndex)(f),d=(0,sa.charCodeToOptimizedIndex)(h),m=p;m<=d;m++)e[m]=m}}});break;case"Group":fE(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Gv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,$n.values)(e)}fn.firstCharOptimizedIndices=fE;function hE(t,e,r){var i=(0,sa.charCodeToOptimizedIndex)(t);e[i]=i,r===!0&&KIe(t,e)}function KIe(t,e){var r=String.fromCharCode(t),i=r.toUpperCase();if(i!==r){var n=(0,sa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=r.toLowerCase();if(s!==r){var n=(0,sa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function zH(t,e){return(0,$n.find)(t.value,function(r){if(typeof r=="number")return(0,$n.contains)(e,r);var i=r;return(0,$n.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Gv(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?(0,$n.isArray)(t.value)?(0,$n.every)(t.value,Gv):Gv(t.value):!1}var UIe=function(t){MIe(e,t);function e(r){var i=t.call(this)||this;return i.targetCharCodes=r,i.found=!1,i}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){(0,$n.contains)(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?zH(r,this.targetCharCodes)===void 0&&(this.found=!0):zH(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(qH.BaseRegExpVisitor);function HIe(t,e){if(e instanceof RegExp){var r=(0,JH.getRegExpAst)(e),i=new UIe(t);return i.visit(r),i.found}else return(0,$n.find)(e,function(n){return(0,$n.contains)(t,n.charCodeAt(0))})!==void 0}fn.canMatchCharCode=HIe});var Hv=I(je=>{"use strict";var _H=je&&je.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(je,"__esModule",{value:!0});je.charCodeToOptimizedIndex=je.minOptimizationVal=je.buildLineBreakIssueMessage=je.LineTerminatorOptimizedTester=je.isShortPattern=je.isCustomPattern=je.cloneEmptyGroups=je.performWarningRuntimeChecks=je.performRuntimeChecks=je.addStickyFlag=je.addStartOfInput=je.findUnreachablePatterns=je.findModesThatDoNotExist=je.findInvalidGroupType=je.findDuplicatePatterns=je.findUnsupportedFlags=je.findStartOfInputAnchor=je.findEmptyMatchRegExps=je.findEndOfInputAnchor=je.findInvalidPatterns=je.findMissingPatterns=je.validatePatterns=je.analyzeTokenTypes=je.enableSticky=je.disableSticky=je.SUPPORT_STICKY=je.MODES=je.DEFAULT_MODE=void 0;var XH=cE(),zt=Gh(),Ee=Dt(),Eu=VH(),ZH=gE(),ao="PATTERN";je.DEFAULT_MODE="defaultMode";je.MODES="modes";je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function GIe(){je.SUPPORT_STICKY=!1}je.disableSticky=GIe;function jIe(){je.SUPPORT_STICKY=!0}je.enableSticky=jIe;function qIe(t,e){e=(0,Ee.defaults)(e,{useSticky:je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(B,b){return b()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){YIe()});var i;r("Reject Lexer.NA",function(){i=(0,Ee.reject)(t,function(B){return B[ao]===zt.Lexer.NA})});var n=!1,s;r("Transform Patterns",function(){n=!1,s=(0,Ee.map)(i,function(B){var b=B[ao];if((0,Ee.isRegExp)(b)){var R=b.source;return R.length===1&&R!=="^"&&R!=="$"&&R!=="."&&!b.ignoreCase?R:R.length===2&&R[0]==="\\"&&!(0,Ee.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],R[1])?R[1]:e.useSticky?Yv(b):jv(b)}else{if((0,Ee.isFunction)(b))return n=!0,{exec:b};if((0,Ee.has)(b,"exec"))return n=!0,b;if(typeof b=="string"){if(b.length===1)return b;var H=b.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),L=new RegExp(H);return e.useSticky?Yv(L):jv(L)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;r("misc mapping",function(){o=(0,Ee.map)(i,function(B){return B.tokenTypeIdx}),a=(0,Ee.map)(i,function(B){var b=B.GROUP;if(b!==zt.Lexer.SKIPPED){if((0,Ee.isString)(b))return b;if((0,Ee.isUndefined)(b))return!1;throw Error("non exhaustive match")}}),l=(0,Ee.map)(i,function(B){var b=B.LONGER_ALT;if(b){var R=(0,Ee.isArray)(b)?(0,Ee.map)(b,function(H){return(0,Ee.indexOf)(i,H)}):[(0,Ee.indexOf)(i,b)];return R}}),c=(0,Ee.map)(i,function(B){return B.PUSH_MODE}),u=(0,Ee.map)(i,function(B){return(0,Ee.has)(B,"POP_MODE")})});var g;r("Line Terminator Handling",function(){var B=tG(e.lineTerminatorCharacters);g=(0,Ee.map)(i,function(b){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Ee.map)(i,function(b){if((0,Ee.has)(b,"LINE_BREAKS"))return b.LINE_BREAKS;if(eG(b,B)===!1)return(0,Eu.canMatchCharCode)(B,b.PATTERN)}))});var f,h,p,d;r("Misc Mapping #2",function(){f=(0,Ee.map)(i,qv),h=(0,Ee.map)(s,$H),p=(0,Ee.reduce)(i,function(B,b){var R=b.GROUP;return(0,Ee.isString)(R)&&R!==zt.Lexer.SKIPPED&&(B[R]=[]),B},{}),d=(0,Ee.map)(s,function(B,b){return{pattern:s[b],longerAlt:l[b],canLineTerminator:g[b],isCustom:f[b],short:h[b],group:a[b],push:c[b],pop:u[b],tokenTypeIdx:o[b],tokenType:i[b]}})});var m=!0,E=[];return e.safeMode||r("First Char Optimization",function(){E=(0,Ee.reduce)(i,function(B,b,R){if(typeof b.PATTERN=="string"){var H=b.PATTERN.charCodeAt(0),L=Wv(H);Jv(B,L,d[R])}else if((0,Ee.isArray)(b.START_CHARS_HINT)){var K;(0,Ee.forEach)(b.START_CHARS_HINT,function(ne){var q=typeof ne=="string"?ne.charCodeAt(0):ne,A=Wv(q);K!==A&&(K=A,Jv(B,A,d[R]))})}else if((0,Ee.isRegExp)(b.PATTERN))if(b.PATTERN.unicode)m=!1,e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" Unable to analyze < "+b.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var J=(0,Eu.getOptimizedStartCodesIndices)(b.PATTERN,e.ensureOptimizations);(0,Ee.isEmpty)(J)&&(m=!1),(0,Ee.forEach)(J,function(ne){Jv(B,ne,d[R])})}else e.ensureOptimizations&&(0,Ee.PRINT_ERROR)(""+Eu.failedOptimizationPrefixMsg+(" TokenType: <"+b.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),m=!1;return B},[])}),r("ArrayPacking",function(){E=(0,Ee.packArray)(E)}),{emptyGroups:p,patternIdxToConfig:d,charCodeToPatternIdxToConfig:E,hasCustom:n,canBeOptimized:m}}je.analyzeTokenTypes=qIe;function WIe(t,e){var r=[],i=rG(t);r=r.concat(i.errors);var n=iG(i.valid),s=n.valid;return r=r.concat(n.errors),r=r.concat(JIe(s)),r=r.concat(nG(s)),r=r.concat(sG(s,e)),r=r.concat(oG(s)),r}je.validatePatterns=WIe;function JIe(t){var e=[],r=(0,Ee.filter)(t,function(i){return(0,Ee.isRegExp)(i[ao])});return e=e.concat(aG(r)),e=e.concat(lG(r)),e=e.concat(cG(r)),e=e.concat(uG(r)),e=e.concat(AG(r)),e}function rG(t){var e=(0,Ee.filter)(t,function(n){return!(0,Ee.has)(n,ao)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:zt.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findMissingPatterns=rG;function iG(t){var e=(0,Ee.filter)(t,function(n){var s=n[ao];return!(0,Ee.isRegExp)(s)&&!(0,Ee.isFunction)(s)&&!(0,Ee.has)(s,"exec")&&!(0,Ee.isString)(s)}),r=(0,Ee.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:zt.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Ee.difference)(t,e);return{errors:r,valid:i}}je.findInvalidPatterns=iG;var zIe=/[^\\][\$]/;function aG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return zIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findEndOfInputAnchor=aG;function AG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n.test("")}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:zt.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return r}je.findEmptyMatchRegExps=AG;var VIe=/[^\\[][\^]|^\^/;function lG(t){var e=function(n){_H(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(XH.BaseRegExpVisitor),r=(0,Ee.filter)(t,function(n){var s=n[ao];try{var o=(0,ZH.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch(l){return VIe.test(s.source)}}),i=(0,Ee.map)(r,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:zt.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}je.findStartOfInputAnchor=lG;function cG(t){var e=(0,Ee.filter)(t,function(i){var n=i[ao];return n instanceof RegExp&&(n.multiline||n.global)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:zt.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return r}je.findUnsupportedFlags=cG;function uG(t){var e=[],r=(0,Ee.map)(t,function(s){return(0,Ee.reduce)(t,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Ee.contains)(e,a)&&a.PATTERN!==zt.Lexer.NA&&(e.push(a),o.push(a)),o},[])});r=(0,Ee.compact)(r);var i=(0,Ee.filter)(r,function(s){return s.length>1}),n=(0,Ee.map)(i,function(s){var o=(0,Ee.map)(s,function(l){return l.name}),a=(0,Ee.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:zt.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}je.findDuplicatePatterns=uG;function nG(t){var e=(0,Ee.filter)(t,function(i){if(!(0,Ee.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==zt.Lexer.SKIPPED&&n!==zt.Lexer.NA&&!(0,Ee.isString)(n)}),r=(0,Ee.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:zt.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return r}je.findInvalidGroupType=nG;function sG(t,e){var r=(0,Ee.filter)(t,function(n){return n.PUSH_MODE!==void 0&&!(0,Ee.contains)(e,n.PUSH_MODE)}),i=(0,Ee.map)(r,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:zt.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}je.findModesThatDoNotExist=sG;function oG(t){var e=[],r=(0,Ee.reduce)(t,function(i,n,s){var o=n.PATTERN;return o===zt.Lexer.NA||((0,Ee.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Ee.isRegExp)(o)&&XIe(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Ee.forEach)(t,function(i,n){(0,Ee.forEach)(r,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:zt.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}je.findUnreachablePatterns=oG;function _Ie(t,e){if((0,Ee.isRegExp)(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if((0,Ee.isFunction)(e))return e(t,0,[],{});if((0,Ee.has)(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function XIe(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Ee.find)(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function jv(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}je.addStartOfInput=jv;function Yv(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}je.addStickyFlag=Yv;function ZIe(t,e,r){var i=[];return(0,Ee.has)(t,je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.DEFAULT_MODE+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Ee.has)(t,je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+je.MODES+`> property in its definition -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Ee.has)(t,je.MODES)&&(0,Ee.has)(t,je.DEFAULT_MODE)&&!(0,Ee.has)(t.modes,t.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+je.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:zt.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Ee.has)(t,je.MODES)&&(0,Ee.forEach)(t.modes,function(n,s){(0,Ee.forEach)(n,function(o,a){(0,Ee.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:zt.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}je.performRuntimeChecks=ZIe;function $Ie(t,e,r){var i=[],n=!1,s=(0,Ee.compact)((0,Ee.flatten)((0,Ee.mapValues)(t.modes,function(l){return l}))),o=(0,Ee.reject)(s,function(l){return l[ao]===zt.Lexer.NA}),a=tG(r);return e&&(0,Ee.forEach)(o,function(l){var c=eG(l,a);if(c!==!1){var u=gG(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Ee.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Eu.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:zt.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}je.performWarningRuntimeChecks=$Ie;function eEe(t){var e={},r=(0,Ee.keys)(t);return(0,Ee.forEach)(r,function(i){var n=t[i];if((0,Ee.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}je.cloneEmptyGroups=eEe;function qv(t){var e=t.PATTERN;if((0,Ee.isRegExp)(e))return!1;if((0,Ee.isFunction)(e))return!0;if((0,Ee.has)(e,"exec"))return!0;if((0,Ee.isString)(e))return!1;throw Error("non exhaustive match")}je.isCustomPattern=qv;function $H(t){return(0,Ee.isString)(t)&&t.length===1?t.charCodeAt(0):!1}je.isShortPattern=$H;je.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===zt.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}je.buildLineBreakIssueMessage=gG;function tG(t){var e=(0,Ee.map)(t,function(r){return(0,Ee.isString)(r)&&r.length>0?r.charCodeAt(0):r});return e}function Jv(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}je.minOptimizationVal=256;var pE=[];function Wv(t){return t255?255+~~(t/255):t}}});var yu=I(Bt=>{"use strict";Object.defineProperty(Bt,"__esModule",{value:!0});Bt.isTokenType=Bt.hasExtendingTokensTypesMapProperty=Bt.hasExtendingTokensTypesProperty=Bt.hasCategoriesProperty=Bt.hasShortKeyProperty=Bt.singleAssignCategoriesToksMap=Bt.assignCategoriesMapProp=Bt.assignCategoriesTokensProp=Bt.assignTokenDefaultProps=Bt.expandCategories=Bt.augmentTokenTypes=Bt.tokenIdxToClass=Bt.tokenShortNameIdx=Bt.tokenStructuredMatcherNoCategories=Bt.tokenStructuredMatcher=void 0;var Kr=Dt();function tEe(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}Bt.tokenStructuredMatcher=tEe;function rEe(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}Bt.tokenStructuredMatcherNoCategories=rEe;Bt.tokenShortNameIdx=1;Bt.tokenIdxToClass={};function iEe(t){var e=fG(t);hG(e),dG(e),pG(e),(0,Kr.forEach)(e,function(r){r.isParent=r.categoryMatches.length>0})}Bt.augmentTokenTypes=iEe;function fG(t){for(var e=(0,Kr.cloneArr)(t),r=t,i=!0;i;){r=(0,Kr.compact)((0,Kr.flatten)((0,Kr.map)(r,function(s){return s.CATEGORIES})));var n=(0,Kr.difference)(r,e);e=e.concat(n),(0,Kr.isEmpty)(n)?i=!1:r=n}return e}Bt.expandCategories=fG;function hG(t){(0,Kr.forEach)(t,function(e){CG(e)||(Bt.tokenIdxToClass[Bt.tokenShortNameIdx]=e,e.tokenTypeIdx=Bt.tokenShortNameIdx++),zv(e)&&!(0,Kr.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),zv(e)||(e.CATEGORIES=[]),mG(e)||(e.categoryMatches=[]),IG(e)||(e.categoryMatchesMap={})})}Bt.assignTokenDefaultProps=hG;function pG(t){(0,Kr.forEach)(t,function(e){e.categoryMatches=[],(0,Kr.forEach)(e.categoryMatchesMap,function(r,i){e.categoryMatches.push(Bt.tokenIdxToClass[i].tokenTypeIdx)})})}Bt.assignCategoriesTokensProp=pG;function dG(t){(0,Kr.forEach)(t,function(e){Vv([],e)})}Bt.assignCategoriesMapProp=dG;function Vv(t,e){(0,Kr.forEach)(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),(0,Kr.forEach)(e.CATEGORIES,function(r){var i=t.concat(e);(0,Kr.contains)(i,r)||Vv(i,r)})}Bt.singleAssignCategoriesToksMap=Vv;function CG(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.hasShortKeyProperty=CG;function zv(t){return(0,Kr.has)(t,"CATEGORIES")}Bt.hasCategoriesProperty=zv;function mG(t){return(0,Kr.has)(t,"categoryMatches")}Bt.hasExtendingTokensTypesProperty=mG;function IG(t){return(0,Kr.has)(t,"categoryMatchesMap")}Bt.hasExtendingTokensTypesMapProperty=IG;function nEe(t){return(0,Kr.has)(t,"tokenTypeIdx")}Bt.isTokenType=nEe});var _v=I(dE=>{"use strict";Object.defineProperty(dE,"__esModule",{value:!0});dE.defaultLexerErrorProvider=void 0;dE.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,i,n){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var Gh=I(Rl=>{"use strict";Object.defineProperty(Rl,"__esModule",{value:!0});Rl.Lexer=Rl.LexerDefinitionErrorType=void 0;var Ps=Hv(),Vt=Dt(),sEe=yu(),oEe=_v(),aEe=gE(),AEe;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(AEe=Rl.LexerDefinitionErrorType||(Rl.LexerDefinitionErrorType={}));var jh={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:oEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(jh);var lEe=function(){function t(e,r){var i=this;if(r===void 0&&(r=jh),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,Vt.merge)(jh,r);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===jh.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Ps.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===jh.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,Vt.isArray)(e)?(s={modes:{}},s.modes[Ps.DEFAULT_MODE]=(0,Vt.cloneArr)(e),s[Ps.DEFAULT_MODE]=Ps.DEFAULT_MODE):(o=!1,s=(0,Vt.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Ps.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,Vt.forEach)(s.modes,function(u,g){s.modes[g]=(0,Vt.reject)(u,function(f){return(0,Vt.isUndefined)(f)})});var a=(0,Vt.keys)(s.modes);if((0,Vt.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Ps.validatePatterns)(u,a))}),(0,Vt.isEmpty)(i.lexerDefinitionErrors)){(0,sEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Ps.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,Vt.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,Vt.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,Vt.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,Vt.forEach)(i.lexerDefinitionWarning,function(u){(0,Vt.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ps.SUPPORT_STICKY?(i.chopInput=Vt.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=Vt.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=Vt.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=Vt.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=Vt.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,Vt.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(r.ensureOptimizations&&!(0,Vt.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,aEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,Vt.toFastProperties)(i)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!(0,Vt.isEmpty)(this.lexerDefinitionErrors)){var i=(0,Vt.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,r);return s},t.prototype.tokenizeInternal=function(e,r){var i=this,n,s,o,a,l,c,u,g,f,h,p,d,m,E,B,b,R=e,H=R.length,L=0,K=0,J=this.hasCustom?0:Math.floor(e.length/10),ne=new Array(J),q=[],A=this.trackStartLines?1:void 0,V=this.trackStartLines?1:void 0,W=(0,Ps.cloneEmptyGroups)(this.emptyGroups),X=this.trackStartLines,F=this.config.lineTerminatorsPattern,D=0,he=[],pe=[],Ne=[],Pe=[];Object.freeze(Pe);var qe=void 0;function re(){return he}function se(wr){var Ui=(0,Ps.charCodeToOptimizedIndex)(wr),ws=pe[Ui];return ws===void 0?Pe:ws}var be=function(wr){if(Ne.length===1&&wr.tokenType.PUSH_MODE===void 0){var Ui=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(wr);q.push({offset:wr.startOffset,line:wr.startLine!==void 0?wr.startLine:void 0,column:wr.startColumn!==void 0?wr.startColumn:void 0,length:wr.image.length,message:Ui})}else{Ne.pop();var ws=(0,Vt.last)(Ne);he=i.patternIdxToConfig[ws],pe=i.charCodeToPatternIdxToConfig[ws],D=he.length;var Tf=i.canModeBeOptimized[ws]&&i.config.safeMode===!1;pe&&Tf?qe=se:qe=re}};function ae(wr){Ne.push(wr),pe=this.charCodeToPatternIdxToConfig[wr],he=this.patternIdxToConfig[wr],D=he.length,D=he.length;var Ui=this.canModeBeOptimized[wr]&&this.config.safeMode===!1;pe&&Ui?qe=se:qe=re}ae.call(this,r);for(var Ae;Lc.length){c=a,u=g,Ae=Oe;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,d=this.createTokenInstance(c,L,p,Ae.tokenType,A,V,f),this.handlePayload(d,u),h===!1?K=this.addToken(ne,K,d):W[h].push(d)),e=this.chopInput(e,f),L=L+f,V=this.computeNewColumn(V,f),X===!0&&Ae.canLineTerminator===!0){var dt=0,ri=void 0,ii=void 0;F.lastIndex=0;do ri=F.test(c),ri===!0&&(ii=F.lastIndex-1,dt++);while(ri===!0);dt!==0&&(A=A+dt,V=f-ii,this.updateTokenEndLineColumnLocation(d,h,ii,dt,A,V,f))}this.handleModes(Ae,be,ae,d)}else{for(var an=L,yr=A,Ki=V,Qi=!1;!Qi&&L <"+e+">");var n=(0,Vt.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();Rl.Lexer=lEe});var nA=I(Ci=>{"use strict";Object.defineProperty(Ci,"__esModule",{value:!0});Ci.tokenMatcher=Ci.createTokenInstance=Ci.EOF=Ci.createToken=Ci.hasTokenLabel=Ci.tokenName=Ci.tokenLabel=void 0;var Ds=Dt(),cEe=Gh(),Xv=yu();function uEe(t){return EG(t)?t.LABEL:t.name}Ci.tokenLabel=uEe;function gEe(t){return t.name}Ci.tokenName=gEe;function EG(t){return(0,Ds.isString)(t.LABEL)&&t.LABEL!==""}Ci.hasTokenLabel=EG;var fEe="parent",yG="categories",wG="label",BG="group",QG="push_mode",bG="pop_mode",vG="longer_alt",SG="line_breaks",xG="start_chars_hint";function kG(t){return hEe(t)}Ci.createToken=kG;function hEe(t){var e=t.pattern,r={};if(r.name=t.name,(0,Ds.isUndefined)(e)||(r.PATTERN=e),(0,Ds.has)(t,fEe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Ds.has)(t,yG)&&(r.CATEGORIES=t[yG]),(0,Xv.augmentTokenTypes)([r]),(0,Ds.has)(t,wG)&&(r.LABEL=t[wG]),(0,Ds.has)(t,BG)&&(r.GROUP=t[BG]),(0,Ds.has)(t,bG)&&(r.POP_MODE=t[bG]),(0,Ds.has)(t,QG)&&(r.PUSH_MODE=t[QG]),(0,Ds.has)(t,vG)&&(r.LONGER_ALT=t[vG]),(0,Ds.has)(t,SG)&&(r.LINE_BREAKS=t[SG]),(0,Ds.has)(t,xG)&&(r.START_CHARS_HINT=t[xG]),r}Ci.EOF=kG({name:"EOF",pattern:cEe.Lexer.NA});(0,Xv.augmentTokenTypes)([Ci.EOF]);function pEe(t,e,r,i,n,s,o,a){return{image:e,startOffset:r,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}Ci.createTokenInstance=pEe;function dEe(t,e){return(0,Xv.tokenStructuredMatcher)(t,e)}Ci.tokenMatcher=dEe});var hn=I(Tt=>{"use strict";var oa=Tt&&Tt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Tt,"__esModule",{value:!0});Tt.serializeProduction=Tt.serializeGrammar=Tt.Terminal=Tt.Alternation=Tt.RepetitionWithSeparator=Tt.Repetition=Tt.RepetitionMandatoryWithSeparator=Tt.RepetitionMandatory=Tt.Option=Tt.Alternative=Tt.Rule=Tt.NonTerminal=Tt.AbstractProduction=void 0;var $t=Dt(),CEe=nA(),Ao=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),(0,$t.forEach)(this.definition,function(r){r.accept(e)})},t}();Tt.AbstractProduction=Ao;var PG=function(t){oa(e,t);function e(r){var i=t.call(this,[])||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Ao);Tt.NonTerminal=PG;var DG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.orgText="",(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Rule=DG;var RG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.ignoreAmbiguities=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Alternative=RG;var FG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Option=FG;var NG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatory=NG;var LG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionMandatoryWithSeparator=LG;var TG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.Repetition=TG;var MG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return e}(Ao);Tt.RepetitionWithSeparator=MG;var OG=function(t){oa(e,t);function e(r){var i=t.call(this,r.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,$t.assign)(i,(0,$t.pick)(r,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Ao);Tt.Alternation=OG;var CE=function(){function t(e){this.idx=1,(0,$t.assign)(this,(0,$t.pick)(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();Tt.Terminal=CE;function mEe(t){return(0,$t.map)(t,Yh)}Tt.serializeGrammar=mEe;function Yh(t){function e(s){return(0,$t.map)(s,Yh)}if(t instanceof PG){var r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return(0,$t.isString)(t.label)&&(r.label=t.label),r}else{if(t instanceof RG)return{type:"Alternative",definition:e(t.definition)};if(t instanceof FG)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof NG)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof LG)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof MG)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Yh(new CE({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof TG)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof OG)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof CE){var i={type:"Terminal",name:t.terminalType.name,label:(0,CEe.tokenLabel)(t.terminalType),idx:t.idx};(0,$t.isString)(t.label)&&(i.terminalLabel=t.label);var n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(i.pattern=(0,$t.isRegExp)(n)?n.source:n),i}else{if(t instanceof DG)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}Tt.serializeProduction=Yh});var IE=I(mE=>{"use strict";Object.defineProperty(mE,"__esModule",{value:!0});mE.RestWalker=void 0;var Zv=Dt(),pn=hn(),IEe=function(){function t(){}return t.prototype.walk=function(e,r){var i=this;r===void 0&&(r=[]),(0,Zv.forEach)(e.definition,function(n,s){var o=(0,Zv.drop)(e.definition,s+1);if(n instanceof pn.NonTerminal)i.walkProdRef(n,o,r);else if(n instanceof pn.Terminal)i.walkTerminal(n,o,r);else if(n instanceof pn.Alternative)i.walkFlat(n,o,r);else if(n instanceof pn.Option)i.walkOption(n,o,r);else if(n instanceof pn.RepetitionMandatory)i.walkAtLeastOne(n,o,r);else if(n instanceof pn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,r);else if(n instanceof pn.RepetitionWithSeparator)i.walkManySep(n,o,r);else if(n instanceof pn.Repetition)i.walkMany(n,o,r);else if(n instanceof pn.Alternation)i.walkOr(n,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,i){},t.prototype.walkProdRef=function(e,r,i){},t.prototype.walkFlat=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkOption=function(e,r,i){var n=r.concat(i);this.walk(e,n)},t.prototype.walkAtLeastOne=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkAtLeastOneSep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkMany=function(e,r,i){var n=[new pn.Option({definition:e.definition})].concat(r,i);this.walk(e,n)},t.prototype.walkManySep=function(e,r,i){var n=KG(e,r,i);this.walk(e,n)},t.prototype.walkOr=function(e,r,i){var n=this,s=r.concat(i);(0,Zv.forEach)(e.definition,function(o){var a=new pn.Alternative({definition:[o]});n.walk(a,s)})},t}();mE.RestWalker=IEe;function KG(t,e,r){var i=[new pn.Option({definition:[new pn.Terminal({terminalType:t.separator})].concat(t.definition)})],n=i.concat(e,r);return n}});var wu=I(EE=>{"use strict";Object.defineProperty(EE,"__esModule",{value:!0});EE.GAstVisitor=void 0;var lo=hn(),EEe=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case lo.NonTerminal:return this.visitNonTerminal(r);case lo.Alternative:return this.visitAlternative(r);case lo.Option:return this.visitOption(r);case lo.RepetitionMandatory:return this.visitRepetitionMandatory(r);case lo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case lo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case lo.Repetition:return this.visitRepetition(r);case lo.Alternation:return this.visitAlternation(r);case lo.Terminal:return this.visitTerminal(r);case lo.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();EE.GAstVisitor=EEe});var Jh=I(Si=>{"use strict";var yEe=Si&&Si.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Si,"__esModule",{value:!0});Si.collectMethods=Si.DslMethodsCollectorVisitor=Si.getProductionDslName=Si.isBranchingProd=Si.isOptionalProd=Si.isSequenceProd=void 0;var qh=Dt(),dr=hn(),wEe=wu();function BEe(t){return t instanceof dr.Alternative||t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionMandatory||t instanceof dr.RepetitionMandatoryWithSeparator||t instanceof dr.RepetitionWithSeparator||t instanceof dr.Terminal||t instanceof dr.Rule}Si.isSequenceProd=BEe;function $v(t,e){e===void 0&&(e=[]);var r=t instanceof dr.Option||t instanceof dr.Repetition||t instanceof dr.RepetitionWithSeparator;return r?!0:t instanceof dr.Alternation?(0,qh.some)(t.definition,function(i){return $v(i,e)}):t instanceof dr.NonTerminal&&(0,qh.contains)(e,t)?!1:t instanceof dr.AbstractProduction?(t instanceof dr.NonTerminal&&e.push(t),(0,qh.every)(t.definition,function(i){return $v(i,e)})):!1}Si.isOptionalProd=$v;function QEe(t){return t instanceof dr.Alternation}Si.isBranchingProd=QEe;function bEe(t){if(t instanceof dr.NonTerminal)return"SUBRULE";if(t instanceof dr.Option)return"OPTION";if(t instanceof dr.Alternation)return"OR";if(t instanceof dr.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof dr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof dr.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof dr.Repetition)return"MANY";if(t instanceof dr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Si.getProductionDslName=bEe;var UG=function(t){yEe(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var i=r.terminalType.name+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitNonTerminal=function(r){var i=r.nonTerminalName+this.separator+"Terminal";(0,qh.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(wEe.GAstVisitor);Si.DslMethodsCollectorVisitor=UG;var yE=new UG;function vEe(t){yE.reset(),t.accept(yE);var e=yE.dslMethods;return yE.reset(),e}Si.collectMethods=vEe});var tS=I(co=>{"use strict";Object.defineProperty(co,"__esModule",{value:!0});co.firstForTerminal=co.firstForBranching=co.firstForSequence=co.first=void 0;var wE=Dt(),HG=hn(),eS=Jh();function BE(t){if(t instanceof HG.NonTerminal)return BE(t.referencedRule);if(t instanceof HG.Terminal)return YG(t);if((0,eS.isSequenceProd)(t))return GG(t);if((0,eS.isBranchingProd)(t))return jG(t);throw Error("non exhaustive match")}co.first=BE;function GG(t){for(var e=[],r=t.definition,i=0,n=r.length>i,s,o=!0;n&&o;)s=r[i],o=(0,eS.isOptionalProd)(s),e=e.concat(BE(s)),i=i+1,n=r.length>i;return(0,wE.uniq)(e)}co.firstForSequence=GG;function jG(t){var e=(0,wE.map)(t.definition,function(r){return BE(r)});return(0,wE.uniq)((0,wE.flatten)(e))}co.firstForBranching=jG;function YG(t){return[t.terminalType]}co.firstForTerminal=YG});var rS=I(QE=>{"use strict";Object.defineProperty(QE,"__esModule",{value:!0});QE.IN=void 0;QE.IN="_~IN~_"});var VG=I(es=>{"use strict";var SEe=es&&es.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(es,"__esModule",{value:!0});es.buildInProdFollowPrefix=es.buildBetweenProdsFollowPrefix=es.computeAllProdsFollows=es.ResyncFollowsWalker=void 0;var xEe=IE(),kEe=tS(),qG=Dt(),JG=rS(),PEe=hn(),zG=function(t){SEe(e,t);function e(r){var i=t.call(this)||this;return i.topProd=r,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,i,n){},e.prototype.walkProdRef=function(r,i,n){var s=WG(r.referencedRule,r.idx)+this.topProd.name,o=i.concat(n),a=new PEe.Alternative({definition:o}),l=(0,kEe.first)(a);this.follows[s]=l},e}(xEe.RestWalker);es.ResyncFollowsWalker=zG;function DEe(t){var e={};return(0,qG.forEach)(t,function(r){var i=new zG(r).startWalking();(0,qG.assign)(e,i)}),e}es.computeAllProdsFollows=DEe;function WG(t,e){return t.name+e+JG.IN}es.buildBetweenProdsFollowPrefix=WG;function REe(t){var e=t.terminalType.name;return e+t.idx+JG.IN}es.buildInProdFollowPrefix=REe});var Wh=I(aa=>{"use strict";Object.defineProperty(aa,"__esModule",{value:!0});aa.defaultGrammarValidatorErrorProvider=aa.defaultGrammarResolverErrorProvider=aa.defaultParserErrorProvider=void 0;var Bu=nA(),FEe=Dt(),Rs=Dt(),iS=hn(),_G=Jh();aa.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,i=t.previous,n=t.ruleName,s=(0,Bu.hasTokenLabel)(e),o=s?"--> "+(0,Bu.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+r.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,i=t.previous,n=t.customUserDescription,s=t.ruleName,o="Expecting: ",a=(0,Rs.first)(r).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Rs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Rs.map)(c,function(h){return"["+(0,Rs.map)(h,function(p){return(0,Bu.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Rs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,i=t.customUserDescription,n=t.ruleName,s="Expecting: ",o=(0,Rs.first)(r).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Rs.map)(e,function(u){return"["+(0,Rs.map)(u,function(g){return(0,Bu.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(aa.defaultParserErrorProvider);aa.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};aa.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(u){return u instanceof iS.Terminal?u.terminalType.name:u instanceof iS.NonTerminal?u.nonTerminalName:""}var i=t.name,n=(0,Rs.first)(e),s=n.idx,o=(0,_G.getProductionDslName)(n),a=r(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(t){var e=(0,Rs.map)(t.prefixPath,function(n){return(0,Bu.tokenLabel)(n)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,i="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(t){var e=(0,_G.getProductionDslName)(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=FEe.map(t.leftRecursionPath,function(s){return s.name}),i=e+" --> "+r.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof iS.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var $G=I(sA=>{"use strict";var NEe=sA&&sA.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(sA,"__esModule",{value:!0});sA.GastRefResolverVisitor=sA.resolveGrammar=void 0;var LEe=Tn(),XG=Dt(),TEe=wu();function MEe(t,e){var r=new ZG(t,e);return r.resolveRefs(),r.errors}sA.resolveGrammar=MEe;var ZG=function(t){NEe(e,t);function e(r,i){var n=t.call(this)||this;return n.nameToTopRule=r,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var r=this;(0,XG.forEach)((0,XG.values)(this.nameToTopRule),function(i){r.currTopLevel=i,i.accept(r)})},e.prototype.visitNonTerminal=function(r){var i=this.nameToTopRule[r.nonTerminalName];if(i)r.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:n,type:LEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(TEe.GAstVisitor);sA.GastRefResolverVisitor=ZG});var Vh=I(Br=>{"use strict";var Fl=Br&&Br.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Br,"__esModule",{value:!0});Br.nextPossibleTokensAfter=Br.possiblePathsFrom=Br.NextTerminalAfterAtLeastOneSepWalker=Br.NextTerminalAfterAtLeastOneWalker=Br.NextTerminalAfterManySepWalker=Br.NextTerminalAfterManyWalker=Br.AbstractNextTerminalAfterProductionWalker=Br.NextAfterTokenWalker=Br.AbstractNextPossibleTokensWalker=void 0;var ej=IE(),xt=Dt(),OEe=tS(),Et=hn(),tj=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topProd=r,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,xt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,xt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,i){i===void 0&&(i=[]),this.found||t.prototype.walk.call(this,r,i)},e.prototype.walkProdRef=function(r,i,n){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(r.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,xt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(ej.RestWalker);Br.AbstractNextPossibleTokensWalker=tj;var KEe=function(t){Fl(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(r,i,n){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Et.Alternative({definition:s});this.possibleTokTypes=(0,OEe.first)(o),this.found=!0}},e}(tj);Br.NextAfterTokenWalker=KEe;var zh=function(t){Fl(e,t);function e(r,i){var n=t.call(this)||this;return n.topRule=r,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(ej.RestWalker);Br.AbstractNextTerminalAfterProductionWalker=zh;var UEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkMany.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManyWalker=UEe;var HEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkManySep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterManySepWalker=HEe;var GEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOne.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneWalker=GEe;var jEe=function(t){Fl(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,i,n){if(r.idx===this.occurrence){var s=(0,xt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Et.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,i,n)},e}(zh);Br.NextTerminalAfterAtLeastOneSepWalker=jEe;function rj(t,e,r){r===void 0&&(r=[]),r=(0,xt.cloneArr)(r);var i=[],n=0;function s(c){return c.concat((0,xt.drop)(t,n+1))}function o(c){var u=rj(s(c),e,r);return i.concat(u)}for(;r.length=0;W--){var X=E.definition[W],F={idx:p,def:X.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m};g.push(F),g.push(o)}else if(E instanceof Et.Alternative)g.push({idx:p,def:E.definition.concat((0,xt.drop)(h)),ruleStack:d,occurrenceStack:m});else if(E instanceof Et.Rule)g.push(YEe(E,p,d,m));else throw Error("non exhaustive match")}}return u}Br.nextPossibleTokensAfter=qEe;function YEe(t,e,r,i){var n=(0,xt.cloneArr)(r);n.push(t.name);var s=(0,xt.cloneArr)(i);return s.push(1),{idx:e,def:t.definition,ruleStack:n,occurrenceStack:s}}});var _h=I(Gt=>{"use strict";var ij=Gt&&Gt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Gt,"__esModule",{value:!0});Gt.areTokenCategoriesNotUsed=Gt.isStrictPrefixOfPath=Gt.containsPath=Gt.getLookaheadPathsForOptionalProd=Gt.getLookaheadPathsForOr=Gt.lookAheadSequenceFromAlternatives=Gt.buildSingleAlternativeLookaheadFunction=Gt.buildAlternativesLookAheadFunc=Gt.buildLookaheadFuncForOptionalProd=Gt.buildLookaheadFuncForOr=Gt.getProdType=Gt.PROD_TYPE=void 0;var _t=Dt(),nj=Vh(),JEe=IE(),bE=yu(),oA=hn(),WEe=wu(),zr;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zr=Gt.PROD_TYPE||(Gt.PROD_TYPE={}));function zEe(t){if(t instanceof oA.Option)return zr.OPTION;if(t instanceof oA.Repetition)return zr.REPETITION;if(t instanceof oA.RepetitionMandatory)return zr.REPETITION_MANDATORY;if(t instanceof oA.RepetitionMandatoryWithSeparator)return zr.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof oA.RepetitionWithSeparator)return zr.REPETITION_WITH_SEPARATOR;if(t instanceof oA.Alternation)return zr.ALTERNATION;throw Error("non exhaustive match")}Gt.getProdType=zEe;function VEe(t,e,r,i,n,s){var o=sj(t,e,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o,i,a,n)}Gt.buildLookaheadFuncForOr=VEe;function _Ee(t,e,r,i,n,s){var o=oj(t,e,n,r),a=nS(o)?bE.tokenStructuredMatcherNoCategories:bE.tokenStructuredMatcher;return s(o[0],a,i)}Gt.buildLookaheadFuncForOptionalProd=_Ee;function XEe(t,e,r,i){var n=t.length,s=(0,_t.every)(t,function(l){return(0,_t.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,_t.map)(l,function(b){return b.GATE}),u=0;u{"use strict";var aS=Mt&&Mt.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(Mt,"__esModule",{value:!0});Mt.checkPrefixAlternativesAmbiguities=Mt.validateSomeNonEmptyLookaheadPath=Mt.validateTooManyAlts=Mt.RepetionCollector=Mt.validateAmbiguousAlternationAlternatives=Mt.validateEmptyOrAlternative=Mt.getFirstNoneTerminal=Mt.validateNoLeftRecursion=Mt.validateRuleIsOverridden=Mt.validateRuleDoesNotAlreadyExist=Mt.OccurrenceValidationCollector=Mt.identifyProductionForDuplicates=Mt.validateGrammar=void 0;var jt=Dt(),Cr=Dt(),uo=Tn(),AS=Jh(),Qu=_h(),rye=Vh(),Fs=hn(),lS=wu();function sye(t,e,r,i,n){var s=jt.map(t,function(h){return iye(h,i)}),o=jt.map(t,function(h){return cS(h,h,i)}),a=[],l=[],c=[];(0,Cr.every)(o,Cr.isEmpty)&&(a=(0,Cr.map)(t,function(h){return uj(h,i)}),l=(0,Cr.map)(t,function(h){return gj(h,e,i)}),c=hj(t,e,i));var u=nye(t,r,i),g=(0,Cr.map)(t,function(h){return fj(h,i)}),f=(0,Cr.map)(t,function(h){return cj(h,t,n,i)});return jt.flatten(s.concat(c,o,a,l,u,g,f))}Mt.validateGrammar=sye;function iye(t,e){var r=new Cj;t.accept(r);var i=r.allProductions,n=jt.groupBy(i,pj),s=jt.pick(n,function(a){return a.length>1}),o=jt.map(jt.values(s),function(a){var l=jt.first(a),c=e.buildDuplicateFoundError(t,a),u=(0,AS.getProductionDslName)(l),g={message:c,type:uo.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:u,occurrence:l.idx},f=dj(l);return f&&(g.parameter=f),g});return o}function pj(t){return(0,AS.getProductionDslName)(t)+"_#_"+t.idx+"_#_"+dj(t)}Mt.identifyProductionForDuplicates=pj;function dj(t){return t instanceof Fs.Terminal?t.terminalType.name:t instanceof Fs.NonTerminal?t.nonTerminalName:""}var Cj=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.OccurrenceValidationCollector=Cj;function cj(t,e,r,i){var n=[],s=(0,Cr.reduce)(e,function(a,l){return l.name===t.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});n.push({message:o,type:uo.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return n}Mt.validateRuleDoesNotAlreadyExist=cj;function oye(t,e,r){var i=[],n;return jt.contains(e,t)||(n="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:uo.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),i}Mt.validateRuleIsOverridden=oye;function cS(t,e,r,i){i===void 0&&(i=[]);var n=[],s=Xh(e.definition);if(jt.isEmpty(s))return[];var o=t.name,a=jt.contains(s,t);a&&n.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:i}),type:uo.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=jt.difference(s,i.concat([t])),c=jt.map(l,function(u){var g=jt.cloneArr(i);return g.push(u),cS(t,u,r,g)});return n.concat(jt.flatten(c))}Mt.validateNoLeftRecursion=cS;function Xh(t){var e=[];if(jt.isEmpty(t))return e;var r=jt.first(t);if(r instanceof Fs.NonTerminal)e.push(r.referencedRule);else if(r instanceof Fs.Alternative||r instanceof Fs.Option||r instanceof Fs.RepetitionMandatory||r instanceof Fs.RepetitionMandatoryWithSeparator||r instanceof Fs.RepetitionWithSeparator||r instanceof Fs.Repetition)e=e.concat(Xh(r.definition));else if(r instanceof Fs.Alternation)e=jt.flatten(jt.map(r.definition,function(o){return Xh(o.definition)}));else if(!(r instanceof Fs.Terminal))throw Error("non exhaustive match");var i=(0,AS.isOptionalProd)(r),n=t.length>1;if(i&&n){var s=jt.drop(t);return e.concat(Xh(s))}else return e}Mt.getFirstNoneTerminal=Xh;var uS=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(lS.GAstVisitor);function uj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){var a=jt.dropRight(o.definition),l=jt.map(a,function(c,u){var g=(0,rye.nextPossibleTokensAfter)([c],[],null,1);return jt.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:u}),type:uo.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(jt.compact(l))},[]);return n}Mt.validateEmptyOrAlternative=uj;function gj(t,e,r){var i=new uS;t.accept(i);var n=i.alternations;n=(0,Cr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=jt.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Qu.getLookaheadPathsForOr)(l,t,c,a),g=aye(u,a,t,r),f=mj(u,a,t,r);return o.concat(g,f)},[]);return s}Mt.validateAmbiguousAlternationAlternatives=gj;var Ij=function(t){aS(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(lS.GAstVisitor);Mt.RepetionCollector=Ij;function fj(t,e){var r=new uS;t.accept(r);var i=r.alternations,n=jt.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:uo.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),s},[]);return n}Mt.validateTooManyAlts=fj;function hj(t,e,r){var i=[];return(0,Cr.forEach)(t,function(n){var s=new Ij;n.accept(s);var o=s.allProductions;(0,Cr.forEach)(o,function(a){var l=(0,Qu.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Qu.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Cr.isEmpty)((0,Cr.flatten)(f))){var h=r.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:uo.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}Mt.validateSomeNonEmptyLookaheadPath=hj;function aye(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Cr.forEach)(l,function(u){var g=[c];(0,Cr.forEach)(t,function(f,h){c!==h&&(0,Qu.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Qu.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=jt.map(s,function(a){var l=(0,Cr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:uo.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function mj(t,e,r,i){var n=[],s=(0,Cr.reduce)(t,function(o,a,l){var c=(0,Cr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Cr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Cr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.validateGrammar=bu.resolveGrammar=void 0;var fS=Dt(),Aye=$G(),lye=gS(),Ej=Wh();function cye(t){t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarResolverErrorProvider});var e={};return(0,fS.forEach)(t.rules,function(r){e[r.name]=r}),(0,Aye.resolveGrammar)(e,t.errMsgProvider)}bu.resolveGrammar=cye;function uye(t){return t=(0,fS.defaults)(t,{errMsgProvider:Ej.defaultGrammarValidatorErrorProvider}),(0,lye.validateGrammar)(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}bu.validateGrammar=uye});var vu=I(dn=>{"use strict";var Zh=dn&&dn.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.EarlyExitException=dn.NotAllInputParsedException=dn.NoViableAltException=dn.MismatchedTokenException=dn.isRecognitionException=void 0;var gye=Dt(),wj="MismatchedTokenException",Bj="NoViableAltException",Qj="EarlyExitException",bj="NotAllInputParsedException",vj=[wj,Bj,Qj,bj];Object.freeze(vj);function fye(t){return(0,gye.contains)(vj,t.name)}dn.isRecognitionException=fye;var vE=function(t){Zh(e,t);function e(r,i){var n=this.constructor,s=t.call(this,r)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),hye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=wj,s}return e}(vE);dn.MismatchedTokenException=hye;var pye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Bj,s}return e}(vE);dn.NoViableAltException=pye;var dye=function(t){Zh(e,t);function e(r,i){var n=t.call(this,r,i)||this;return n.name=bj,n}return e}(vE);dn.NotAllInputParsedException=dye;var Cye=function(t){Zh(e,t);function e(r,i,n){var s=t.call(this,r,i)||this;return s.previousToken=n,s.name=Qj,s}return e}(vE);dn.EarlyExitException=Cye});var pS=I(xi=>{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.attemptInRepetitionRecovery=xi.Recoverable=xi.InRuleRecoveryException=xi.IN_RULE_RECOVERY_EXCEPTION=xi.EOF_FOLLOW_KEY=void 0;var SE=nA(),ts=Dt(),mye=vu(),Iye=rS(),Eye=Tn();xi.EOF_FOLLOW_KEY={};xi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function hS(t){this.name=xi.IN_RULE_RECOVERY_EXCEPTION,this.message=t}xi.InRuleRecoveryException=hS;hS.prototype=Error.prototype;var yye=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ts.has)(e,"recoveryEnabled")?e.recoveryEnabled:Eye.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Sj)},t.prototype.getTokenToInsert=function(e){var r=(0,SE.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),d=new mye.MismatchedTokenException(p,u,s.LA(0));d.resyncedTokens=(0,ts.dropRight)(l),s.SAVE_ERROR(d)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,i){return!(i===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var i=this.getCurrentGrammarPath(e,r),n=this.getNextPossibleTokenTypes(i);return n},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new hS("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ts.isEmpty)(r))return!1;var n=this.LA(1),s=(0,ts.find)(r,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(r);return(0,ts.contains)(i,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),i=2;;){var n=r.tokenType;if((0,ts.contains)(e,n))return n;r=this.LA(i),i++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return xi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(i)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ts.map)(r,function(n,s){return s===0?xi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(r[s-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=(0,ts.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ts.flatten)(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===xi.EOF_FOLLOW_KEY)return[SE.EOF];var r=e.ruleName+e.idxInCallingRule+Iye.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,SE.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,r);return(0,ts.dropRight)(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,i,n,s,o,a){},t.prototype.getCurrentGrammarPath=function(e,r){var i=this.getHumanReadableRuleStack(),n=(0,ts.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:r};return s},t.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ts.map)(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();xi.Recoverable=yye;function Sj(t,e,r,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=SE.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(t,e,r,f)}xi.attemptInRepetitionRecovery=Sj});var xE=I(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.getKeyForAutomaticLookahead=Nt.AT_LEAST_ONE_SEP_IDX=Nt.MANY_SEP_IDX=Nt.AT_LEAST_ONE_IDX=Nt.MANY_IDX=Nt.OPTION_IDX=Nt.OR_IDX=Nt.BITS_FOR_ALT_IDX=Nt.BITS_FOR_RULE_IDX=Nt.BITS_FOR_OCCURRENCE_IDX=Nt.BITS_FOR_METHOD_TYPE=void 0;Nt.BITS_FOR_METHOD_TYPE=4;Nt.BITS_FOR_OCCURRENCE_IDX=8;Nt.BITS_FOR_RULE_IDX=12;Nt.BITS_FOR_ALT_IDX=8;Nt.OR_IDX=1<{"use strict";Object.defineProperty(kE,"__esModule",{value:!0});kE.LooksAhead=void 0;var Aa=_h(),Ns=Dt(),xj=Tn(),la=xE(),Nl=Jh(),Bye=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Ns.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:xj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Ns.has)(e,"maxLookahead")?e.maxLookahead:xj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Ns.isES2015MapSupported)()?new Map:[],(0,Ns.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;(0,Ns.forEach)(e,function(i){r.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nl.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Ns.forEach)(s,function(g){var f=g.idx===0?"":g.idx;r.TRACE_INIT(""+(0,Nl.getProductionDslName)(g)+f,function(){var h=(0,Aa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||r.maxLookahead,g.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),p=(0,la.getKeyForAutomaticLookahead)(r.fullRuleNameToShort[i.name],la.OR_IDX,g.idx);r.setLaFuncCache(p,h)})}),(0,Ns.forEach)(o,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_IDX,Aa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(a,function(g){r.computeLookaheadFunc(i,g.idx,la.OPTION_IDX,Aa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(l,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(c,function(g){r.computeLookaheadFunc(i,g.idx,la.AT_LEAST_ONE_SEP_IDX,Aa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))}),(0,Ns.forEach)(u,function(g){r.computeLookaheadFunc(i,g.idx,la.MANY_SEP_IDX,Aa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nl.getProductionDslName)(g))})})})},t.prototype.computeLookaheadFunc=function(e,r,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var l=(0,Aa.buildLookaheadFuncForOptionalProd)(r,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,la.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,r);a.setLaFuncCache(c,l)})},t.prototype.lookAheadBuilderForOptional=function(e,r,i){return(0,Aa.buildSingleAlternativeLookaheadFunction)(e,r,i)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,i,n){return(0,Aa.buildAlternativesLookAheadFunc)(e,r,i,n)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var i=this.getLastExplicitRuleShortName();return(0,la.getKeyForAutomaticLookahead)(i,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();kE.LooksAhead=Bye});var Pj=I(go=>{"use strict";Object.defineProperty(go,"__esModule",{value:!0});go.addNoneTerminalToCst=go.addTerminalToCst=go.setNodeLocationFull=go.setNodeLocationOnlyOffset=void 0;function Qye(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(aA,"__esModule",{value:!0});aA.defineNameProp=aA.functionName=aA.classNameFromInstance=void 0;var xye=Dt();function kye(t){return Dj(t.constructor)}aA.classNameFromInstance=kye;var Rj="name";function Dj(t){var e=t.name;return e||"anonymous"}aA.functionName=Dj;function Pye(t,e){var r=Object.getOwnPropertyDescriptor(t,Rj);return(0,xye.isUndefined)(r)||r.configurable?(Object.defineProperty(t,Rj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}aA.defineNameProp=Pye});var Mj=I(mi=>{"use strict";Object.defineProperty(mi,"__esModule",{value:!0});mi.validateRedundantMethods=mi.validateMissingCstMethods=mi.validateVisitor=mi.CstVisitorDefinitionError=mi.createBaseVisitorConstructorWithDefaults=mi.createBaseSemanticVisitorConstructor=mi.defaultVisit=void 0;var rs=Dt(),$h=dS();function Fj(t,e){for(var r=(0,rs.keys)(t),i=r.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=i,r.prototype.constructor=r,r._RULE_NAMES=e,r}mi.createBaseSemanticVisitorConstructor=Dye;function Rye(t,e,r){var i=function(){};(0,$h.defineNameProp)(i,t+"BaseSemanticsWithDefaults");var n=Object.create(r.prototype);return(0,rs.forEach)(e,function(s){n[s]=Fj}),i.prototype=n,i.prototype.constructor=i,i}mi.createBaseVisitorConstructorWithDefaults=Rye;var CS;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(CS=mi.CstVisitorDefinitionError||(mi.CstVisitorDefinitionError={}));function Nj(t,e){var r=Lj(t,e),i=Tj(t,e);return r.concat(i)}mi.validateVisitor=Nj;function Lj(t,e){var r=(0,rs.map)(e,function(i){if(!(0,rs.isFunction)(t[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+" CST Visitor.",type:CS.MISSING_METHOD,methodName:i}});return(0,rs.compact)(r)}mi.validateMissingCstMethods=Lj;var Fye=["constructor","visit","validateVisitor"];function Tj(t,e){var r=[];for(var i in t)(0,rs.isFunction)(t[i])&&!(0,rs.contains)(Fye,i)&&!(0,rs.contains)(e,i)&&r.push({msg:"Redundant visitor method: <"+i+"> on "+(0,$h.functionName)(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:CS.REDUNDANT_METHOD,methodName:i});return r}mi.validateRedundantMethods=Tj});var Kj=I(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.TreeBuilder=void 0;var Su=Pj(),Ur=Dt(),Oj=Mj(),Nye=Tn(),Lye=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Ur.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Nye.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Ur.NOOP,this.cstFinallyStateUpdate=Ur.NOOP,this.cstPostTerminal=Ur.NOOP,this.cstPostNonTerminal=Ur.NOOP,this.cstPostRule=Ur.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationFull,this.setNodeLocationFromNode=Su.setNodeLocationFull,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Su.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=Su.setNodeLocationOnlyOffset,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Ur.NOOP,this.setNodeLocationFromNode=Ur.NOOP,this.cstPostRule=Ur.NOOP,this.setInitialNodeLocation=Ur.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?(i.endOffset=r.endOffset,i.endLine=r.endLine,i.endColumn=r.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),i=e.location;i.startOffset<=r.startOffset?i.endOffset=r.endOffset:i.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addTerminalToCst)(i,r,e),this.setNodeLocationFromToken(i.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var i=this.CST_STACK[this.CST_STACK.length-1];(0,Su.addNoneTerminalToCst)(i,r,e),this.setNodeLocationFromNode(i.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if((0,Ur.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,Oj.createBaseSemanticVisitorConstructor)(this.className,(0,Ur.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Ur.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,Oj.createBaseVisitorConstructorWithDefaults)(this.className,(0,Ur.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();PE.TreeBuilder=Lye});var Hj=I(DE=>{"use strict";Object.defineProperty(DE,"__esModule",{value:!0});DE.LexerAdapter=void 0;var Uj=Tn(),Tye=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Uj.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Uj.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();DE.LexerAdapter=Tye});var jj=I(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.RecognizerApi=void 0;var Gj=Dt(),Mye=vu(),mS=Tn(),Oye=Wh(),Kye=gS(),Uye=hn(),Hye=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,i){return this.consumeInternal(r,e,i)},t.prototype.subrule=function(e,r,i){return this.subruleInternal(r,e,i)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,i){if(i===void 0&&(i=mS.DEFAULT_RULE_CONFIG),(0,Gj.contains)(this.definedRulesNames,e)){var n=Oye.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:mS.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,i);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,i){i===void 0&&(i=mS.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,Kye.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,r,i);return this[e]=s,s},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,r),!0}catch(n){if((0,Mye.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return(0,Uye.serializeGrammar)((0,Gj.values)(this.gastProductionsCache))},t}();RE.RecognizerApi=Hye});var Wj=I(FE=>{"use strict";Object.defineProperty(FE,"__esModule",{value:!0});FE.RecognizerEngine=void 0;var Ir=Dt(),Mn=xE(),NE=vu(),Yj=_h(),xu=Vh(),qj=Tn(),Gye=pS(),Jj=nA(),ep=yu(),jye=dS(),Yye=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=(0,jye.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=ep.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Ir.has)(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Ir.isArray)(e)){if((0,Ir.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Ir.isArray)(e))this.tokensMap=(0,Ir.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Ir.has)(e,"modes")&&(0,Ir.every)((0,Ir.flatten)((0,Ir.values)(e.modes)),ep.isTokenType)){var i=(0,Ir.flatten)((0,Ir.values)(e.modes)),n=(0,Ir.uniq)(i);this.tokensMap=(0,Ir.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Ir.isObject)(e))this.tokensMap=(0,Ir.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=Jj.EOF;var s=(0,Ir.every)((0,Ir.values)(e),function(o){return(0,Ir.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?ep.tokenStructuredMatcherNoCategories:ep.tokenStructuredMatcher,(0,ep.augmentTokenTypes)((0,Ir.values)(this.tokensMap))},t.prototype.defineRule=function(e,r,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Ir.has)(i,"resyncEnabled")?i.resyncEnabled:qj.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Ir.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:qj.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var i=this.getKeyForAutomaticLookahead(Mn.OR_IDX,r),n=(0,Ir.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new NE.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,r,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,i){throw(0,NE.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:i),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},t.prototype.consumeInternalError=function(e,r,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new NE.MismatchedTokenException(n,r,s))},t.prototype.consumeInternalRecovery=function(e,r,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===Gye.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},t.prototype.saveRecogState=function(){var e=this.errors,r=(0,Ir.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),Jj.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();FE.RecognizerEngine=Yye});var Vj=I(LE=>{"use strict";Object.defineProperty(LE,"__esModule",{value:!0});LE.ErrorHandler=void 0;var IS=vu(),ES=Dt(),zj=_h(),qye=Tn(),Jye=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,ES.has)(e,"errorMessageProvider")?e.errorMessageProvider:qye.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if((0,IS.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,ES.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return(0,ES.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,zj.getLookaheadPathsForOptionalProd)(e,s,r,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new IS.EarlyExitException(u,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,zj.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new IS.NoViableAltException(c,this.LA(1),l))},t}();LE.ErrorHandler=Jye});var Zj=I(TE=>{"use strict";Object.defineProperty(TE,"__esModule",{value:!0});TE.ContentAssist=void 0;var _j=Vh(),Xj=Dt(),Wye=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var i=this.gastProductionsCache[e];if((0,Xj.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,_j.nextPossibleTokensAfter)([i],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=(0,Xj.first)(e.ruleStack),i=this.getGAstProductions(),n=i[r],s=new _j.NextAfterTokenWalker(n,e).startWalking();return s},t}();TE.ContentAssist=Wye});var oY=I(ME=>{"use strict";Object.defineProperty(ME,"__esModule",{value:!0});ME.GastRecorder=void 0;var Cn=Dt(),fo=hn(),zye=Gh(),$j=yu(),eY=nA(),Vye=Tn(),_ye=xE(),OE={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(OE);var tY=!0,rY=Math.pow(2,_ye.BITS_FOR_OCCURRENCE_IDX)-1,iY=(0,eY.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:zye.Lexer.NA});(0,$j.augmentTokenTypes)([iY]);var nY=(0,eY.createTokenInstance)(iY,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(nY);var Xye={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},$ye=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)r(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var i=r>0?r:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vye.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var i=new fo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),r.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(s){throw n}throw n}},t.prototype.optionInternalRecord=function(e,r){return tp.call(this,fo.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionMandatoryWithSeparator,r,e,tY)},t.prototype.manyInternalRecord=function(e,r){tp.call(this,fo.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){tp.call(this,fo.RepetitionWithSeparator,r,e,tY)},t.prototype.orInternalRecord=function(e,r){return Zye.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,i){if(KE(r),!e||(0,Cn.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=e.ruleName,a=new fo.NonTerminal({idx:r,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?Xye:OE},t.prototype.consumeInternalRecord=function(e,r,i){if(KE(r),!(0,$j.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,Cn.peek)(this.recordingProdStack),o=new fo.Terminal({idx:r,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),nY},t}();ME.GastRecorder=$ye;function tp(t,e,r,i){i===void 0&&(i=!1),KE(r);var n=(0,Cn.peek)(this.recordingProdStack),s=(0,Cn.isFunction)(e)?e:e.DEF,o=new t({definition:[],idx:r});return i&&(o.separator=e.SEP),(0,Cn.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),OE}function Zye(t,e){var r=this;KE(e);var i=(0,Cn.peek)(this.recordingProdStack),n=(0,Cn.isArray)(t)===!1,s=n===!1?t:t.DEF,o=new fo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});(0,Cn.has)(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var a=(0,Cn.some)(s,function(l){return(0,Cn.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,Cn.forEach)(s,function(l){var c=new fo.Alternative({definition:[]});o.definition.push(c),(0,Cn.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,Cn.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),r.recordingProdStack.push(c),l.ALT.call(r),r.recordingProdStack.pop()}),OE}function sY(t){return t===0?"":""+t}function KE(t){if(t<0||t>rY){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(rY+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var AY=I(UE=>{"use strict";Object.defineProperty(UE,"__esModule",{value:!0});UE.PerformanceTracer=void 0;var aY=Dt(),ewe=Tn(),twe=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if((0,aY.has)(e,"traceInitPerf")){var r=e.traceInitPerf,i=typeof r=="number";this.traceInitMaxIdent=i?r:Infinity,this.traceInitPerf=i?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=ewe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,aY.timer)(r),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return r()},t}();UE.PerformanceTracer=twe});var lY=I(HE=>{"use strict";Object.defineProperty(HE,"__esModule",{value:!0});HE.applyMixins=void 0;function rwe(t,e){e.forEach(function(r){var i=r.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(t.prototype,n,s):t.prototype[n]=r.prototype[n]}})})}HE.applyMixins=rwe});var Tn=I(or=>{"use strict";var cY=or&&or.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function i(){this.constructor=e}e.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}();Object.defineProperty(or,"__esModule",{value:!0});or.EmbeddedActionsParser=or.CstParser=or.Parser=or.EMPTY_ALT=or.ParserDefinitionErrorType=or.DEFAULT_RULE_CONFIG=or.DEFAULT_PARSER_CONFIG=or.END_OF_FILE=void 0;var Wi=Dt(),iwe=VG(),uY=nA(),gY=Wh(),fY=yj(),nwe=pS(),swe=kj(),owe=Kj(),awe=Hj(),Awe=jj(),lwe=Wj(),cwe=Vj(),uwe=Zj(),gwe=oY(),fwe=AY(),hwe=lY();or.END_OF_FILE=(0,uY.createTokenInstance)(uY.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(or.END_OF_FILE);or.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:gY.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});or.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var pwe;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(pwe=or.ParserDefinitionErrorType||(or.ParserDefinitionErrorType={}));function dwe(t){return t===void 0&&(t=void 0),function(){return t}}or.EMPTY_ALT=dwe;var GE=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(r),i.initLexerAdapter(),i.initLooksAhead(r),i.initRecognizerEngine(e,r),i.initRecoverable(r),i.initTreeBuilder(r),i.initContentAssist(),i.initGastRecorder(r),i.initPerformanceTracer(r),(0,Wi.has)(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Wi.has)(r,"skipValidations")?r.skipValidations:or.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Wi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Wi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,fY.resolveGrammar)({rules:(0,Wi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Wi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,fY.validateGrammar)({rules:(0,Wi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Wi.values)(e.tokensMap),errMsgProvider:gY.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Wi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,iwe.computeAllProdsFollows)((0,Wi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Wi.values)(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Wi.isEmpty)(e.definitionErrors))throw r=(0,Wi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();or.Parser=GE;(0,hwe.applyMixins)(GE,[nwe.Recoverable,swe.LooksAhead,owe.TreeBuilder,awe.LexerAdapter,lwe.RecognizerEngine,Awe.RecognizerApi,cwe.ErrorHandler,uwe.ContentAssist,gwe.GastRecorder,fwe.PerformanceTracer]);var Cwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!0,n=t.call(this,r,s)||this,n}return e}(GE);or.CstParser=Cwe;var mwe=function(t){cY(e,t);function e(r,i){i===void 0&&(i=or.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Wi.cloneObj)(i);return s.outputCst=!1,n=t.call(this,r,s)||this,n}return e}(GE);or.EmbeddedActionsParser=mwe});var pY=I(jE=>{"use strict";Object.defineProperty(jE,"__esModule",{value:!0});jE.createSyntaxDiagramsCode=void 0;var hY=Uv();function Iwe(t,e){var r=e===void 0?{}:e,i=r.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/":i,s=r.css,o=s===void 0?"https://unpkg.com/chevrotain@"+hY.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - -`,u=` -
-`,g=` - -`,f=` - -`;return a+l+c+u+g+f}jE.createSyntaxDiagramsCode=Iwe});var mY=I(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.Parser=He.createSyntaxDiagramsCode=He.clearCache=He.GAstVisitor=He.serializeProduction=He.serializeGrammar=He.Terminal=He.Rule=He.RepetitionWithSeparator=He.RepetitionMandatoryWithSeparator=He.RepetitionMandatory=He.Repetition=He.Option=He.NonTerminal=He.Alternative=He.Alternation=He.defaultLexerErrorProvider=He.NoViableAltException=He.NotAllInputParsedException=He.MismatchedTokenException=He.isRecognitionException=He.EarlyExitException=He.defaultParserErrorProvider=He.tokenName=He.tokenMatcher=He.tokenLabel=He.EOF=He.createTokenInstance=He.createToken=He.LexerDefinitionErrorType=He.Lexer=He.EMPTY_ALT=He.ParserDefinitionErrorType=He.EmbeddedActionsParser=He.CstParser=He.VERSION=void 0;var Ewe=Uv();Object.defineProperty(He,"VERSION",{enumerable:!0,get:function(){return Ewe.VERSION}});var YE=Tn();Object.defineProperty(He,"CstParser",{enumerable:!0,get:function(){return YE.CstParser}});Object.defineProperty(He,"EmbeddedActionsParser",{enumerable:!0,get:function(){return YE.EmbeddedActionsParser}});Object.defineProperty(He,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return YE.ParserDefinitionErrorType}});Object.defineProperty(He,"EMPTY_ALT",{enumerable:!0,get:function(){return YE.EMPTY_ALT}});var dY=Gh();Object.defineProperty(He,"Lexer",{enumerable:!0,get:function(){return dY.Lexer}});Object.defineProperty(He,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return dY.LexerDefinitionErrorType}});var ku=nA();Object.defineProperty(He,"createToken",{enumerable:!0,get:function(){return ku.createToken}});Object.defineProperty(He,"createTokenInstance",{enumerable:!0,get:function(){return ku.createTokenInstance}});Object.defineProperty(He,"EOF",{enumerable:!0,get:function(){return ku.EOF}});Object.defineProperty(He,"tokenLabel",{enumerable:!0,get:function(){return ku.tokenLabel}});Object.defineProperty(He,"tokenMatcher",{enumerable:!0,get:function(){return ku.tokenMatcher}});Object.defineProperty(He,"tokenName",{enumerable:!0,get:function(){return ku.tokenName}});var ywe=Wh();Object.defineProperty(He,"defaultParserErrorProvider",{enumerable:!0,get:function(){return ywe.defaultParserErrorProvider}});var rp=vu();Object.defineProperty(He,"EarlyExitException",{enumerable:!0,get:function(){return rp.EarlyExitException}});Object.defineProperty(He,"isRecognitionException",{enumerable:!0,get:function(){return rp.isRecognitionException}});Object.defineProperty(He,"MismatchedTokenException",{enumerable:!0,get:function(){return rp.MismatchedTokenException}});Object.defineProperty(He,"NotAllInputParsedException",{enumerable:!0,get:function(){return rp.NotAllInputParsedException}});Object.defineProperty(He,"NoViableAltException",{enumerable:!0,get:function(){return rp.NoViableAltException}});var wwe=_v();Object.defineProperty(He,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return wwe.defaultLexerErrorProvider}});var ho=hn();Object.defineProperty(He,"Alternation",{enumerable:!0,get:function(){return ho.Alternation}});Object.defineProperty(He,"Alternative",{enumerable:!0,get:function(){return ho.Alternative}});Object.defineProperty(He,"NonTerminal",{enumerable:!0,get:function(){return ho.NonTerminal}});Object.defineProperty(He,"Option",{enumerable:!0,get:function(){return ho.Option}});Object.defineProperty(He,"Repetition",{enumerable:!0,get:function(){return ho.Repetition}});Object.defineProperty(He,"RepetitionMandatory",{enumerable:!0,get:function(){return ho.RepetitionMandatory}});Object.defineProperty(He,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionMandatoryWithSeparator}});Object.defineProperty(He,"RepetitionWithSeparator",{enumerable:!0,get:function(){return ho.RepetitionWithSeparator}});Object.defineProperty(He,"Rule",{enumerable:!0,get:function(){return ho.Rule}});Object.defineProperty(He,"Terminal",{enumerable:!0,get:function(){return ho.Terminal}});var CY=hn();Object.defineProperty(He,"serializeGrammar",{enumerable:!0,get:function(){return CY.serializeGrammar}});Object.defineProperty(He,"serializeProduction",{enumerable:!0,get:function(){return CY.serializeProduction}});var Bwe=wu();Object.defineProperty(He,"GAstVisitor",{enumerable:!0,get:function(){return Bwe.GAstVisitor}});function Qwe(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}He.clearCache=Qwe;var bwe=pY();Object.defineProperty(He,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return bwe.createSyntaxDiagramsCode}});var vwe=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();He.Parser=vwe});var yY=I((Trt,IY)=>{var qE=mY(),ca=qE.createToken,EY=qE.tokenMatcher,yS=qE.Lexer,Swe=qE.EmbeddedActionsParser;IY.exports=t=>{let e=ca({name:"LogicalOperator",pattern:yS.NA}),r=ca({name:"Or",pattern:/\|/,categories:e}),i=ca({name:"Xor",pattern:/\^/,categories:e}),n=ca({name:"And",pattern:/&/,categories:e}),s=ca({name:"Not",pattern:/!/}),o=ca({name:"LParen",pattern:/\(/}),a=ca({name:"RParen",pattern:/\)/}),l=ca({name:"Query",pattern:t}),u=[ca({name:"WhiteSpace",pattern:/\s+/,group:yS.SKIPPED}),r,i,n,o,a,s,e,l],g=new yS(u);class f extends Swe{constructor(p){super(u);this.RULE("expression",()=>this.SUBRULE(this.logicalExpression)),this.RULE("logicalExpression",()=>{let m=this.SUBRULE(this.atomicExpression);return this.MANY(()=>{let E=m,B=this.CONSUME(e),b=this.SUBRULE2(this.atomicExpression);EY(B,r)?m=R=>E(R)||b(R):EY(B,i)?m=R=>!!(E(R)^b(R)):m=R=>E(R)&&b(R)}),m}),this.RULE("atomicExpression",()=>this.OR([{ALT:()=>this.SUBRULE(this.parenthesisExpression)},{ALT:()=>{let{image:d}=this.CONSUME(l);return m=>m(d)}},{ALT:()=>{this.CONSUME(s);let d=this.SUBRULE(this.atomicExpression);return m=>!d(m)}}])),this.RULE("parenthesisExpression",()=>{let d;return this.CONSUME(o),d=this.SUBRULE(this.expression),this.CONSUME(a),d}),this.performSelfAnalysis()}}return{TinylogicLexer:g,TinylogicParser:f}}});var wY=I(JE=>{var xwe=yY();JE.makeParser=(t=/[a-z]+/)=>{let{TinylogicLexer:e,TinylogicParser:r}=xwe(t),i=new r;return(n,s)=>{let o=e.tokenize(n);return i.input=o.tokens,i.expression()(s)}};JE.parse=JE.makeParser()});var QY=I((Ort,BY)=>{"use strict";BY.exports=(...t)=>[...new Set([].concat(...t))]});var wS=I((Krt,bY)=>{"use strict";var kwe=require("stream"),vY=kwe.PassThrough,Pwe=Array.prototype.slice;bY.exports=Dwe;function Dwe(){let t=[],e=!1,r=Pwe.call(arguments),i=r[r.length-1];i&&!Array.isArray(i)&&i.pipe==null?r.pop():i={};let n=i.end!==!1;i.objectMode==null&&(i.objectMode=!0),i.highWaterMark==null&&(i.highWaterMark=64*1024);let s=vY(i);function o(){for(let c=0,u=arguments.length;c0||(e=!1,a())}function f(h){function p(){h.removeListener("merge2UnpipeEnd",p),h.removeListener("end",p),g()}if(h._readableState.endEmitted)return g();h.on("merge2UnpipeEnd",p),h.on("end",p),h.pipe(s,{end:!1}),h.resume()}for(let h=0;h{"use strict";Object.defineProperty(WE,"__esModule",{value:!0});function Rwe(t){return t.reduce((e,r)=>[].concat(e,r),[])}WE.flatten=Rwe;function Fwe(t,e){let r=[[]],i=0;for(let n of t)e(n)?(i++,r[i]=[]):r[i].push(n);return r}WE.splitWhen=Fwe});var kY=I(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});function Nwe(t){return t.code==="ENOENT"}BS.isEnoentCodeError=Nwe});var DY=I(QS=>{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});var PY=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function Lwe(t,e){return new PY(t,e)}QS.createDirentFromStats=Lwe});var RY=I(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Twe=require("path"),Mwe=2,Owe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function Kwe(t){return t.replace(/\\/g,"/")}Pu.unixify=Kwe;function Uwe(t,e){return Twe.resolve(t,e)}Pu.makeAbsolute=Uwe;function Hwe(t){return t.replace(Owe,"\\$2")}Pu.escape=Hwe;function Gwe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(Mwe)}return t}Pu.removeLeadingDotSegment=Gwe});var NY=I((Yrt,FY)=>{FY.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var TY=I((qrt,LY)=>{var jwe=NY(),Ywe={"{":"}","(":")","[":"]"},qwe=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,Jwe=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;LY.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(jwe(e))return!0;var i=qwe,n;for(r&&r.strict===!1&&(i=Jwe);n=i.exec(e);){if(n[2])return!0;var s=n.index+n[0].length,o=n[1],a=o?Ywe[o]:null;if(o&&a){var l=e.indexOf(a,s);l!==-1&&(s=l+1)}e=e.slice(s)}return!1}});var OY=I((Jrt,MY)=>{"use strict";var Wwe=TY(),zwe=require("path").posix.dirname,Vwe=require("os").platform()==="win32",bS="/",_we=/\\/g,Xwe=/[\{\[].*[\}\]]$/,Zwe=/(^|[^\\])([\{\[]|\([^\)]+$)/,$we=/\\([\!\*\?\|\[\]\(\)\{\}])/g;MY.exports=function(e,r){var i=Object.assign({flipBackslashes:!0},r);i.flipBackslashes&&Vwe&&e.indexOf(bS)<0&&(e=e.replace(_we,bS)),Xwe.test(e)&&(e+=bS),e+="a";do e=zwe(e);while(Wwe(e)||Zwe.test(e));return e.replace($we,"$1")}});var WY=I(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});var eBe=require("path"),tBe=OY(),KY=Nn(),rBe=iv(),UY="**",iBe="\\",nBe=/[*?]|^!/,sBe=/\[.*]/,oBe=/(?:^|[^!*+?@])\(.*\|.*\)/,aBe=/[!*+?@]\(.*\)/,ABe=/{.*(?:,|\.\.).*}/;function GY(t,e={}){return!HY(t,e)}Hr.isStaticPattern=GY;function HY(t,e={}){return!!(e.caseSensitiveMatch===!1||t.includes(iBe)||nBe.test(t)||sBe.test(t)||oBe.test(t)||e.extglob!==!1&&aBe.test(t)||e.braceExpansion!==!1&&ABe.test(t))}Hr.isDynamicPattern=HY;function lBe(t){return zE(t)?t.slice(1):t}Hr.convertToPositivePattern=lBe;function cBe(t){return"!"+t}Hr.convertToNegativePattern=cBe;function zE(t){return t.startsWith("!")&&t[1]!=="("}Hr.isNegativePattern=zE;function jY(t){return!zE(t)}Hr.isPositivePattern=jY;function uBe(t){return t.filter(zE)}Hr.getNegativePatterns=uBe;function gBe(t){return t.filter(jY)}Hr.getPositivePatterns=gBe;function fBe(t){return tBe(t,{flipBackslashes:!1})}Hr.getBaseDirectory=fBe;function hBe(t){return t.includes(UY)}Hr.hasGlobStar=hBe;function YY(t){return t.endsWith("/"+UY)}Hr.endsWithSlashGlobStar=YY;function pBe(t){let e=eBe.basename(t);return YY(t)||GY(e)}Hr.isAffectDepthOfReadingPattern=pBe;function dBe(t){return t.reduce((e,r)=>e.concat(qY(r)),[])}Hr.expandPatternsWithBraceExpansion=dBe;function qY(t){return KY.braces(t,{expand:!0,nodupes:!0})}Hr.expandBraceExpansion=qY;function CBe(t,e){let r=rBe.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.parts.length===0?[t]:r.parts}Hr.getPatternParts=CBe;function JY(t,e){return KY.makeRe(t,e)}Hr.makeRe=JY;function mBe(t,e){return t.map(r=>JY(r,e))}Hr.convertPatternsToRe=mBe;function IBe(t,e){return e.some(r=>r.test(t))}Hr.matchAny=IBe});var VY=I(vS=>{"use strict";Object.defineProperty(vS,"__esModule",{value:!0});var EBe=wS();function yBe(t){let e=EBe(t);return t.forEach(r=>{r.once("error",i=>e.emit("error",i))}),e.once("close",()=>zY(t)),e.once("end",()=>zY(t)),e}vS.merge=yBe;function zY(t){t.forEach(e=>e.emit("close"))}});var _Y=I(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});function wBe(t){return typeof t=="string"}VE.isString=wBe;function BBe(t){return t===""}VE.isEmpty=BBe});var ga=I(ua=>{"use strict";Object.defineProperty(ua,"__esModule",{value:!0});var QBe=xY();ua.array=QBe;var bBe=kY();ua.errno=bBe;var vBe=DY();ua.fs=vBe;var SBe=RY();ua.path=SBe;var xBe=WY();ua.pattern=xBe;var kBe=VY();ua.stream=kBe;var PBe=_Y();ua.string=PBe});var tq=I(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});var Ll=ga();function DBe(t,e){let r=XY(t),i=ZY(t,e.ignore),n=r.filter(l=>Ll.pattern.isStaticPattern(l,e)),s=r.filter(l=>Ll.pattern.isDynamicPattern(l,e)),o=SS(n,i,!1),a=SS(s,i,!0);return o.concat(a)}fa.generate=DBe;function SS(t,e,r){let i=$Y(t);return"."in i?[xS(".",t,e,r)]:eq(i,e,r)}fa.convertPatternsToTasks=SS;function XY(t){return Ll.pattern.getPositivePatterns(t)}fa.getPositivePatterns=XY;function ZY(t,e){return Ll.pattern.getNegativePatterns(t).concat(e).map(Ll.pattern.convertToPositivePattern)}fa.getNegativePatternsAsPositive=ZY;function $Y(t){let e={};return t.reduce((r,i)=>{let n=Ll.pattern.getBaseDirectory(i);return n in r?r[n].push(i):r[n]=[i],r},e)}fa.groupPatternsByBaseDirectory=$Y;function eq(t,e,r){return Object.keys(t).map(i=>xS(i,t[i],e,r))}fa.convertPatternGroupsToTasks=eq;function xS(t,e,r,i){return{dynamic:i,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Ll.pattern.convertToNegativePattern))}}fa.convertPatternGroupToTask=xS});var iq=I(_E=>{"use strict";Object.defineProperty(_E,"__esModule",{value:!0});_E.read=void 0;function RBe(t,e,r){e.fs.lstat(t,(i,n)=>{if(i!==null){rq(r,i);return}if(!n.isSymbolicLink()||!e.followSymbolicLink){kS(r,n);return}e.fs.stat(t,(s,o)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){rq(r,s);return}kS(r,n);return}e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),kS(r,o)})})}_E.read=RBe;function rq(t,e){t(e)}function kS(t,e){t(null,e)}});var nq=I(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.read=void 0;function FBe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let i=e.fs.statSync(t);return e.markSymbolicLink&&(i.isSymbolicLink=()=>!0),i}catch(i){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw i}}XE.read=FBe});var sq=I(AA=>{"use strict";Object.defineProperty(AA,"__esModule",{value:!0});AA.createFileSystemAdapter=AA.FILE_SYSTEM_ADAPTER=void 0;var ZE=require("fs");AA.FILE_SYSTEM_ADAPTER={lstat:ZE.lstat,stat:ZE.stat,lstatSync:ZE.lstatSync,statSync:ZE.statSync};function NBe(t){return t===void 0?AA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},AA.FILE_SYSTEM_ADAPTER),t)}AA.createFileSystemAdapter=NBe});var aq=I(PS=>{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});var LBe=sq(),oq=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=LBe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e!=null?e:r}};PS.default=oq});var Tl=I(lA=>{"use strict";Object.defineProperty(lA,"__esModule",{value:!0});lA.statSync=lA.stat=lA.Settings=void 0;var Aq=iq(),TBe=nq(),DS=aq();lA.Settings=DS.default;function MBe(t,e,r){if(typeof e=="function"){Aq.read(t,RS(),e);return}Aq.read(t,RS(e),r)}lA.stat=MBe;function OBe(t,e){let r=RS(e);return TBe.read(t,r)}lA.statSync=OBe;function RS(t={}){return t instanceof DS.default?t:new DS.default(t)}});var cq=I((iit,lq)=>{lq.exports=KBe;function KBe(t,e){var r,i,n,s=!0;Array.isArray(t)?(r=[],i=t.length):(n=Object.keys(t),r={},i=n.length);function o(l){function c(){e&&e(l,r),e=null}s?process.nextTick(c):c()}function a(l,c,u){r[l]=u,(--i==0||c)&&o(c)}i?n?n.forEach(function(l){t[l](function(c,u){a(l,c,u)})}):t.forEach(function(l,c){l(function(u,g){a(c,u,g)})}):o(null),s=!1}});var FS=I($E=>{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ey=process.versions.node.split(".");if(ey[0]===void 0||ey[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var uq=Number.parseInt(ey[0],10),UBe=Number.parseInt(ey[1],10),gq=10,HBe=10,GBe=uq>gq,jBe=uq===gq&&UBe>=HBe;$E.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GBe||jBe});var hq=I(ty=>{"use strict";Object.defineProperty(ty,"__esModule",{value:!0});ty.createDirentFromStats=void 0;var fq=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YBe(t,e){return new fq(t,e)}ty.createDirentFromStats=YBe});var NS=I(ry=>{"use strict";Object.defineProperty(ry,"__esModule",{value:!0});ry.fs=void 0;var qBe=hq();ry.fs=qBe});var LS=I(iy=>{"use strict";Object.defineProperty(iy,"__esModule",{value:!0});iy.joinPathSegments=void 0;function JBe(t,e,r){return t.endsWith(r)?t+e:t+r+e}iy.joinPathSegments=JBe});var Eq=I(cA=>{"use strict";Object.defineProperty(cA,"__esModule",{value:!0});cA.readdir=cA.readdirWithFileTypes=cA.read=void 0;var WBe=Tl(),pq=cq(),zBe=FS(),dq=NS(),Cq=LS();function VBe(t,e,r){if(!e.stats&&zBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){mq(t,e,r);return}Iq(t,e,r)}cA.read=VBe;function mq(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(a=>({dirent:a,name:a.name,path:Cq.joinPathSegments(t,a.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){TS(r,s);return}let o=s.map(a=>_Be(a,e));pq(o,(a,l)=>{if(a!==null){ny(r,a);return}TS(r,l)})})}cA.readdirWithFileTypes=mq;function _Be(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(i,n)=>{if(i!==null){if(e.throwErrorOnBrokenSymbolicLink){r(i);return}r(null,t);return}t.dirent=dq.fs.createDirentFromStats(t.name,n),r(null,t)})}}function Iq(t,e,r){e.fs.readdir(t,(i,n)=>{if(i!==null){ny(r,i);return}let s=n.map(o=>{let a=Cq.joinPathSegments(t,o,e.pathSegmentSeparator);return l=>{WBe.stat(a,e.fsStatSettings,(c,u)=>{if(c!==null){l(c);return}let g={name:o,path:a,dirent:dq.fs.createDirentFromStats(o,u)};e.stats&&(g.stats=u),l(null,g)})}});pq(s,(o,a)=>{if(o!==null){ny(r,o);return}TS(r,a)})})}cA.readdir=Iq;function ny(t,e){t(e)}function TS(t,e){t(null,e)}});var bq=I(uA=>{"use strict";Object.defineProperty(uA,"__esModule",{value:!0});uA.readdir=uA.readdirWithFileTypes=uA.read=void 0;var XBe=Tl(),ZBe=FS(),yq=NS(),wq=LS();function $Be(t,e){return!e.stats&&ZBe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Bq(t,e):Qq(t,e)}uA.read=$Be;function Bq(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(i=>{let n={dirent:i,name:i.name,path:wq.joinPathSegments(t,i.name,e.pathSegmentSeparator)};if(n.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let s=e.fs.statSync(n.path);n.dirent=yq.fs.createDirentFromStats(n.name,s)}catch(s){if(e.throwErrorOnBrokenSymbolicLink)throw s}return n})}uA.readdirWithFileTypes=Bq;function Qq(t,e){return e.fs.readdirSync(t).map(i=>{let n=wq.joinPathSegments(t,i,e.pathSegmentSeparator),s=XBe.statSync(n,e.fsStatSettings),o={name:i,path:n,dirent:yq.fs.createDirentFromStats(i,s)};return e.stats&&(o.stats=s),o})}uA.readdir=Qq});var vq=I(gA=>{"use strict";Object.defineProperty(gA,"__esModule",{value:!0});gA.createFileSystemAdapter=gA.FILE_SYSTEM_ADAPTER=void 0;var Du=require("fs");gA.FILE_SYSTEM_ADAPTER={lstat:Du.lstat,stat:Du.stat,lstatSync:Du.lstatSync,statSync:Du.statSync,readdir:Du.readdir,readdirSync:Du.readdirSync};function e0e(t){return t===void 0?gA.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},gA.FILE_SYSTEM_ADAPTER),t)}gA.createFileSystemAdapter=e0e});var xq=I(MS=>{"use strict";Object.defineProperty(MS,"__esModule",{value:!0});var t0e=require("path"),r0e=Tl(),i0e=vq(),Sq=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=i0e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,t0e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new r0e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};MS.default=Sq});var sy=I(fA=>{"use strict";Object.defineProperty(fA,"__esModule",{value:!0});fA.Settings=fA.scandirSync=fA.scandir=void 0;var kq=Eq(),n0e=bq(),OS=xq();fA.Settings=OS.default;function s0e(t,e,r){if(typeof e=="function"){kq.read(t,KS(),e);return}kq.read(t,KS(e),r)}fA.scandir=s0e;function o0e(t,e){let r=KS(e);return n0e.read(t,r)}fA.scandirSync=o0e;function KS(t={}){return t instanceof OS.default?t:new OS.default(t)}});var Dq=I((fit,Pq)=>{"use strict";function a0e(t){var e=new t,r=e;function i(){var s=e;return s.next?e=s.next:(e=new t,r=e),s.next=null,s}function n(s){r.next=s,r=s}return{get:i,release:n}}Pq.exports=a0e});var Fq=I((hit,US)=>{"use strict";var A0e=Dq();function Rq(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var i=A0e(l0e),n=null,s=null,o=0,a=null,l={push:d,drain:po,saturated:po,pause:u,paused:!1,concurrency:r,running:c,resume:h,idle:p,length:g,getQueue:f,unshift:m,empty:po,kill:B,killAndDrain:b,error:R};return l;function c(){return o}function u(){l.paused=!0}function g(){for(var H=n,L=0;H;)H=H.next,L++;return L}function f(){for(var H=n,L=[];H;)L.push(H.value),H=H.next;return L}function h(){if(!!l.paused){l.paused=!1;for(var H=0;H{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});Co.joinPathSegments=Co.replacePathSegmentSeparator=Co.isAppliedFilter=Co.isFatalError=void 0;function u0e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}Co.isFatalError=u0e;function g0e(t,e){return t===null||t(e)}Co.isAppliedFilter=g0e;function f0e(t,e){return t.split(/[/\\]/).join(e)}Co.replacePathSegmentSeparator=f0e;function h0e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}Co.joinPathSegments=h0e});var GS=I(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});var p0e=oy(),Nq=class{constructor(e,r){this._root=e,this._settings=r,this._root=p0e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};HS.default=Nq});var YS=I(jS=>{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});var d0e=require("events"),C0e=sy(),m0e=Fq(),ay=oy(),I0e=GS(),Lq=class extends I0e.default{constructor(e,r){super(e,r);this._settings=r,this._scandir=C0e.scandir,this._emitter=new d0e.EventEmitter,this._queue=m0e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let i={directory:e,base:r};this._queue.push(i,n=>{n!==null&&this._handleError(n)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(i,n)=>{if(i!==null){r(i,void 0);return}for(let s of n)this._handleEntry(s,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!ay.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let i=e.path;r!==void 0&&(e.path=ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),ay.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};jS.default=Lq});var Mq=I(qS=>{"use strict";Object.defineProperty(qS,"__esModule",{value:!0});var E0e=YS(),Tq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new E0e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{y0e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{w0e(e,[...this._storage])}),this._reader.read()}};qS.default=Tq;function y0e(t,e){t(e)}function w0e(t,e){t(null,e)}});var Kq=I(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});var B0e=require("stream"),Q0e=YS(),Oq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new Q0e.default(this._root,this._settings),this._stream=new B0e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};JS.default=Oq});var Hq=I(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});var b0e=sy(),Ay=oy(),v0e=GS(),Uq=class extends v0e.default{constructor(){super(...arguments);this._scandir=b0e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let i=this._scandir(e,this._settings.fsScandirSettings);for(let n of i)this._handleEntry(n,r)}catch(i){this._handleError(i)}}_handleError(e){if(!!Ay.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let i=e.path;r!==void 0&&(e.path=Ay.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),Ay.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&Ay.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(i,e.path)}_pushToStorage(e){this._storage.add(e)}};WS.default=Uq});var jq=I(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});var S0e=Hq(),Gq=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S0e.default(this._root,this._settings)}read(){return this._reader.read()}};zS.default=Gq});var qq=I(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});var x0e=require("path"),k0e=sy(),Yq=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,x0e.sep),this.fsScandirSettings=new k0e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e!=null?e:r}};VS.default=Yq});var XS=I(mo=>{"use strict";Object.defineProperty(mo,"__esModule",{value:!0});mo.Settings=mo.walkStream=mo.walkSync=mo.walk=void 0;var Jq=Mq(),P0e=Kq(),D0e=jq(),_S=qq();mo.Settings=_S.default;function R0e(t,e,r){if(typeof e=="function"){new Jq.default(t,ly()).read(e);return}new Jq.default(t,ly(e)).read(r)}mo.walk=R0e;function F0e(t,e){let r=ly(e);return new D0e.default(t,r).read()}mo.walkSync=F0e;function N0e(t,e){let r=ly(e);return new P0e.default(t,r).read()}mo.walkStream=N0e;function ly(t={}){return t instanceof _S.default?t:new _S.default(t)}});var $S=I(ZS=>{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});var L0e=require("path"),T0e=Tl(),Wq=ga(),zq=class{constructor(e){this._settings=e,this._fsStatSettings=new T0e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return L0e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let i={name:r,path:r,dirent:Wq.fs.createDirentFromStats(r,e)};return this._settings.stats&&(i.stats=e),i}_isFatalError(e){return!Wq.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};ZS.default=zq});var tx=I(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var M0e=require("stream"),O0e=Tl(),K0e=XS(),U0e=$S(),Vq=class extends U0e.default{constructor(){super(...arguments);this._walkStream=K0e.walkStream,this._stat=O0e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let i=e.map(this._getFullEntryPath,this),n=new M0e.PassThrough({objectMode:!0});n._write=(s,o,a)=>this._getEntry(i[s],e[s],r).then(l=>{l!==null&&r.entryFilter(l)&&n.push(l),s===i.length-1&&n.end(),a()}).catch(a);for(let s=0;sthis._makeEntry(n,r)).catch(n=>{if(i.errorFilter(n))return null;throw n})}_getStat(e){return new Promise((r,i)=>{this._stat(e,this._fsStatSettings,(n,s)=>n===null?r(s):i(n))})}};ex.default=Vq});var Xq=I(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Ru=ga(),_q=class{constructor(e,r,i){this._patterns=e,this._settings=r,this._micromatchOptions=i,this._storage=[],this._fillStorage()}_fillStorage(){let e=Ru.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let i=this._getPatternSegments(r),n=this._splitSegmentsIntoSections(i);this._storage.push({complete:n.length<=1,pattern:r,segments:i,sections:n})}}_getPatternSegments(e){return Ru.pattern.getPatternParts(e,this._micromatchOptions).map(i=>Ru.pattern.isDynamicPattern(i,this._settings)?{dynamic:!0,pattern:i,patternRe:Ru.pattern.makeRe(i,this._micromatchOptions)}:{dynamic:!1,pattern:i})}_splitSegmentsIntoSections(e){return Ru.array.splitWhen(e,r=>r.dynamic&&Ru.pattern.hasGlobStar(r.pattern))}};rx.default=_q});var $q=I(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var H0e=Xq(),Zq=class extends H0e.default{match(e){let r=e.split("/"),i=r.length,n=this._storage.filter(s=>!s.complete||s.segments.length>i);for(let s of n){let o=s.sections[0];if(!s.complete&&i>o.length||r.every((l,c)=>{let u=s.segments[c];return!!(u.dynamic&&u.patternRe.test(l)||!u.dynamic&&u.pattern===l)}))return!0}return!1}};ix.default=Zq});var tJ=I(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var cy=ga(),G0e=$q(),eJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,i){let n=this._getMatcher(r),s=this._getNegativePatternsRe(i);return o=>this._filter(e,o,n,s)}_getMatcher(e){return new G0e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(cy.pattern.isAffectDepthOfReadingPattern);return cy.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,i,n){let s=this._getEntryLevel(e,r.path);if(this._isSkippedByDeep(s)||this._isSkippedSymbolicLink(r))return!1;let o=cy.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(o,i)?!1:this._isSkippedByNegativePatterns(o,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,r){let i=e.split("/").length;return r.split("/").length-(e===""?0:i)}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!cy.pattern.matchAny(e,r)}};nx.default=eJ});var iJ=I(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});var ip=ga(),rJ=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let i=ip.pattern.convertPatternsToRe(e,this._micromatchOptions),n=ip.pattern.convertPatternsToRe(r,this._micromatchOptions);return s=>this._filter(s,i,n)}_filter(e,r,i){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e,i))return!1;let n=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(n,r)&&!this._isMatchToPatterns(e.path,i)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let i=ip.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(i,r)}_isMatchToPatterns(e,r){let i=ip.path.removeLeadingDotSegment(e);return ip.pattern.matchAny(i,r)}};sx.default=rJ});var sJ=I(ox=>{"use strict";Object.defineProperty(ox,"__esModule",{value:!0});var j0e=ga(),nJ=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return j0e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};ox.default=nJ});var AJ=I(ax=>{"use strict";Object.defineProperty(ax,"__esModule",{value:!0});var oJ=ga(),aJ=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=oJ.path.makeAbsolute(this._settings.cwd,r),r=oJ.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};ax.default=aJ});var uy=I(Ax=>{"use strict";Object.defineProperty(Ax,"__esModule",{value:!0});var Y0e=require("path"),q0e=tJ(),J0e=iJ(),W0e=sJ(),z0e=AJ(),lJ=class{constructor(e){this._settings=e,this.errorFilter=new W0e.default(this._settings),this.entryFilter=new J0e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new q0e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new z0e.default(this._settings)}_getRootDirectory(e){return Y0e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};Ax.default=lJ});var uJ=I(lx=>{"use strict";Object.defineProperty(lx,"__esModule",{value:!0});var V0e=tx(),_0e=uy(),cJ=class extends _0e.default{constructor(){super(...arguments);this._reader=new V0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=[];return new Promise((s,o)=>{let a=this.api(r,e,i);a.once("error",o),a.on("data",l=>n.push(i.transform(l))),a.once("end",()=>s(n))})}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};lx.default=cJ});var fJ=I(cx=>{"use strict";Object.defineProperty(cx,"__esModule",{value:!0});var X0e=require("stream"),Z0e=tx(),$0e=uy(),gJ=class extends $0e.default{constructor(){super(...arguments);this._reader=new Z0e.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e),n=this.api(r,e,i),s=new X0e.Readable({objectMode:!0,read:()=>{}});return n.once("error",o=>s.emit("error",o)).on("data",o=>s.emit("data",i.transform(o))).once("end",()=>s.emit("end")),s.once("close",()=>n.destroy()),s}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};cx.default=gJ});var pJ=I(ux=>{"use strict";Object.defineProperty(ux,"__esModule",{value:!0});var eQe=Tl(),tQe=XS(),rQe=$S(),hJ=class extends rQe.default{constructor(){super(...arguments);this._walkSync=tQe.walkSync,this._statSync=eQe.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let i=[];for(let n of e){let s=this._getFullEntryPath(n),o=this._getEntry(s,n,r);o===null||!r.entryFilter(o)||i.push(o)}return i}_getEntry(e,r,i){try{let n=this._getStat(e);return this._makeEntry(n,r)}catch(n){if(i.errorFilter(n))return null;throw n}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};ux.default=hJ});var CJ=I(gx=>{"use strict";Object.defineProperty(gx,"__esModule",{value:!0});var iQe=pJ(),nQe=uy(),dJ=class extends nQe.default{constructor(){super(...arguments);this._reader=new iQe.default(this._settings)}read(e){let r=this._getRootDirectory(e),i=this._getReaderOptions(e);return this.api(r,e,i).map(i.transform)}api(e,r,i){return r.dynamic?this._reader.dynamic(e,i):this._reader.static(r.patterns,i)}};gx.default=dJ});var IJ=I(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});var Fu=require("fs"),sQe=require("os"),oQe=sQe.cpus().length;np.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Fu.lstat,lstatSync:Fu.lstatSync,stat:Fu.stat,statSync:Fu.statSync,readdir:Fu.readdir,readdirSync:Fu.readdirSync};var mJ=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,oQe),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,Infinity),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},np.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};np.default=mJ});var gy=I((Oit,EJ)=>{"use strict";var yJ=tq(),aQe=uJ(),AQe=fJ(),lQe=CJ(),fx=IJ(),Ml=ga();async function px(t,e){Nu(t);let r=hx(t,aQe.default,e),i=await Promise.all(r);return Ml.array.flatten(i)}(function(t){function e(o,a){Nu(o);let l=hx(o,lQe.default,a);return Ml.array.flatten(l)}t.sync=e;function r(o,a){Nu(o);let l=hx(o,AQe.default,a);return Ml.stream.merge(l)}t.stream=r;function i(o,a){Nu(o);let l=[].concat(o),c=new fx.default(a);return yJ.generate(l,c)}t.generateTasks=i;function n(o,a){Nu(o);let l=new fx.default(a);return Ml.pattern.isDynamicPattern(o,l)}t.isDynamicPattern=n;function s(o){return Nu(o),Ml.path.escape(o)}t.escapePath=s})(px||(px={}));function hx(t,e,r){let i=[].concat(t),n=new fx.default(r),s=yJ.generate(i,n),o=new e(n);return s.map(o.read,o)}function Nu(t){if(![].concat(t).every(i=>Ml.string.isString(i)&&!Ml.string.isEmpty(i)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}EJ.exports=px});var BJ=I(Ol=>{"use strict";var{promisify:cQe}=require("util"),wJ=require("fs");async function dx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await cQe(wJ[t])(r))[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}function Cx(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return wJ[t](r)[e]()}catch(i){if(i.code==="ENOENT")return!1;throw i}}Ol.isFile=dx.bind(null,"stat","isFile");Ol.isDirectory=dx.bind(null,"stat","isDirectory");Ol.isSymlink=dx.bind(null,"lstat","isSymbolicLink");Ol.isFileSync=Cx.bind(null,"statSync","isFile");Ol.isDirectorySync=Cx.bind(null,"statSync","isDirectory");Ol.isSymlinkSync=Cx.bind(null,"lstatSync","isSymbolicLink")});var xJ=I((Uit,mx)=>{"use strict";var Kl=require("path"),QJ=BJ(),bJ=t=>t.length>1?`{${t.join(",")}}`:t[0],vJ=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Kl.isAbsolute(r)?r:Kl.join(e,r)},uQe=(t,e)=>Kl.extname(t)?`**/${t}`:`**/${t}.${bJ(e)}`,SJ=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Kl.posix.join(t,uQe(r,e.extensions))):e.files?e.files.map(r=>Kl.posix.join(t,`**/${r}`)):e.extensions?[Kl.posix.join(t,`**/*.${bJ(e.extensions)}`)]:[Kl.posix.join(t,"**")]};mx.exports=async(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async i=>await QJ.isDirectory(vJ(i,e.cwd))?SJ(i,e):i));return[].concat.apply([],r)};mx.exports.sync=(t,e)=>{if(e=P({cwd:process.cwd()},e),typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(i=>QJ.isDirectorySync(vJ(i,e.cwd))?SJ(i,e):i);return[].concat.apply([],r)}});var TJ=I((Hit,kJ)=>{function PJ(t){return Array.isArray(t)?t:[t]}var gQe=/^\s+$/,fQe=/^\\!/,hQe=/^\\#/,pQe=/\r?\n/g,dQe=/^\.*\/|^\.+$/,Ix="/",DJ=typeof Symbol!="undefined"?Symbol.for("node-ignore"):"node-ignore",CQe=(t,e,r)=>Object.defineProperty(t,e,{value:r}),mQe=/([0-z])-([0-z])/g,IQe=t=>t.replace(mQe,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:""),EQe=[[/\\?\s+$/,t=>t.indexOf("\\")===0?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,t=>`\\${t}`],[/\[([^\]/]*)($|\])/g,(t,e,r)=>r==="]"?`[${IQe(e)}]`:`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6`${e}[^\\/]*`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`],[/\\\\\\/g,()=>"\\"]],RJ=Object.create(null),yQe=(t,e,r)=>{let i=RJ[t];if(i)return i;let n=EQe.reduce((s,o)=>s.replace(o[0],o[1].bind(t)),t);return RJ[t]=r?new RegExp(n,"i"):new RegExp(n)},Ex=t=>typeof t=="string",wQe=t=>t&&Ex(t)&&!gQe.test(t)&&t.indexOf("#")!==0,BQe=t=>t.split(pQe),FJ=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},QQe=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(fQe,"!").replace(hQe,"#");let n=yQe(t,i,e);return new FJ(r,t,i,n)},bQe=(t,e)=>{throw new e(t)},ha=(t,e,r)=>Ex(t)?t?ha.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),NJ=t=>dQe.test(t);ha.isNotRelative=NJ;ha.convert=t=>t;var LJ=class{constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,CQe(this,DJ,!0),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[DJ]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(wQe(e)){let r=QQe(e,this._ignorecase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,PJ(Ex(e)?BQe(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:o}=s;if(n===o&&i!==n||o&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!o,n=o)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&ha.convert(e);return ha(s,e,bQe),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(Ix)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(Ix)+Ix,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return PJ(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},fy=t=>new LJ(t),vQe=()=>!1,SQe=t=>ha(t&&ha.convert(t),t,vQe);fy.isPathValid=SQe;fy.default=fy;kJ.exports=fy;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");ha.convert=t;let e=/^[a-z]:\//i;ha.isNotRelative=r=>e.test(r)||NJ(r)}});var OJ=I((Git,MJ)=>{"use strict";MJ.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var qJ=I((jit,yx)=>{"use strict";var{promisify:xQe}=require("util"),KJ=require("fs"),pa=require("path"),UJ=gy(),kQe=TJ(),sp=OJ(),HJ=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],PQe=xQe(KJ.readFile),DQe=t=>e=>e.startsWith("!")?"!"+pa.posix.join(t,e.slice(1)):pa.posix.join(t,e),RQe=(t,e)=>{let r=sp(pa.relative(e.cwd,pa.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(i=>!i.startsWith("#")).map(DQe(r))},GJ=t=>{let e=kQe();for(let r of t)e.add(RQe(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},FQe=(t,e)=>{if(t=sp(t),pa.isAbsolute(e)){if(sp(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return pa.join(t,e)},jJ=(t,e)=>r=>t.ignores(sp(pa.relative(e,FQe(e,r.path||r)))),NQe=async(t,e)=>{let r=pa.join(e,t),i=await PQe(r,"utf8");return{cwd:e,filePath:r,content:i}},LQe=(t,e)=>{let r=pa.join(e,t),i=KJ.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:i}},YJ=({ignore:t=[],cwd:e=sp(process.cwd())}={})=>({ignore:t,cwd:e});yx.exports=async t=>{t=YJ(t);let e=await UJ("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(n=>NQe(n,t.cwd))),i=GJ(r);return jJ(i,t.cwd)};yx.exports.sync=t=>{t=YJ(t);let r=UJ.sync("**/.gitignore",{ignore:HJ.concat(t.ignore),cwd:t.cwd}).map(n=>LQe(n,t.cwd)),i=GJ(r);return jJ(i,t.cwd)}});var VJ=I((Yit,JJ)=>{"use strict";var{Transform:TQe}=require("stream"),wx=class extends TQe{constructor(){super({objectMode:!0})}},WJ=class extends wx{constructor(e){super();this._filter=e}_transform(e,r,i){this._filter(e)&&this.push(e),i()}},zJ=class extends wx{constructor(){super();this._pushed=new Set}_transform(e,r,i){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),i()}};JJ.exports={FilterStream:WJ,UniqueStream:zJ}});var vx=I((qit,Ul)=>{"use strict";var _J=require("fs"),hy=QY(),MQe=wS(),py=gy(),dy=xJ(),Bx=qJ(),{FilterStream:OQe,UniqueStream:KQe}=VJ(),XJ=()=>!1,ZJ=t=>t[0]==="!",UQe=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},HQe=(t={})=>{if(!t.cwd)return;let e;try{e=_J.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},GQe=t=>t.stats instanceof _J.Stats?t.path:t,Cy=(t,e)=>{t=hy([].concat(t)),UQe(t),HQe(e);let r=[];e=P({ignore:[],expandDirectories:!0},e);for(let[i,n]of t.entries()){if(ZJ(n))continue;let s=t.slice(i).filter(a=>ZJ(a)).map(a=>a.slice(1)),o=_(P({},e),{ignore:e.ignore.concat(s)});r.push({pattern:n,options:o})}return r},jQe=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r=_(P({},r),{files:t.options.expandDirectories}):typeof t.options.expandDirectories=="object"&&(r=P(P({},r),t.options.expandDirectories)),e(t.pattern,r)},Qx=(t,e)=>t.options.expandDirectories?jQe(t,e):[t.pattern],$J=t=>t&&t.gitignore?Bx.sync({cwd:t.cwd,ignore:t.ignore}):XJ,bx=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=dy.sync(r.ignore)),{pattern:e,options:r}};Ul.exports=async(t,e)=>{let r=Cy(t,e),i=async()=>e&&e.gitignore?Bx({cwd:e.cwd,ignore:e.ignore}):XJ,n=async()=>{let l=await Promise.all(r.map(async c=>{let u=await Qx(c,dy);return Promise.all(u.map(bx(c)))}));return hy(...l)},[s,o]=await Promise.all([i(),n()]),a=await Promise.all(o.map(l=>py(l.pattern,l.options)));return hy(...a).filter(l=>!s(GQe(l)))};Ul.exports.sync=(t,e)=>{let r=Cy(t,e),i=[];for(let o of r){let a=Qx(o,dy.sync).map(bx(o));i.push(...a)}let n=$J(e),s=[];for(let o of i)s=hy(s,py.sync(o.pattern,o.options));return s.filter(o=>!n(o))};Ul.exports.stream=(t,e)=>{let r=Cy(t,e),i=[];for(let a of r){let l=Qx(a,dy.sync).map(bx(a));i.push(...l)}let n=$J(e),s=new OQe(a=>!n(a)),o=new KQe;return MQe(i.map(a=>py.stream(a.pattern,a.options))).pipe(s).pipe(o)};Ul.exports.generateGlobTasks=Cy;Ul.exports.hasMagic=(t,e)=>[].concat(t).some(r=>py.isDynamicPattern(r,e));Ul.exports.gitignore=Bx});var Ca=I((da,Dy)=>{"use strict";Object.defineProperty(da,"__esModule",{value:!0});var A3=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function ibe(t){return A3.includes(t)}var nbe=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...A3];function sbe(t){return nbe.includes(t)}var obe=["null","undefined","string","number","bigint","boolean","symbol"];function abe(t){return obe.includes(t)}function Hu(t){return e=>typeof e===t}var{toString:l3}=Object.prototype,mp=t=>{let e=l3.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&j.domElement(t))return"HTMLElement";if(sbe(e))return e},er=t=>e=>mp(e)===t;function j(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(j.observable(t))return"Observable";if(j.array(t))return"Array";if(j.buffer(t))return"Buffer";let e=mp(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}j.undefined=Hu("undefined");j.string=Hu("string");var Abe=Hu("number");j.number=t=>Abe(t)&&!j.nan(t);j.bigint=Hu("bigint");j.function_=Hu("function");j.null_=t=>t===null;j.class_=t=>j.function_(t)&&t.toString().startsWith("class ");j.boolean=t=>t===!0||t===!1;j.symbol=Hu("symbol");j.numericString=t=>j.string(t)&&!j.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));j.array=(t,e)=>Array.isArray(t)?j.function_(e)?t.every(e):!0:!1;j.buffer=t=>{var e,r,i,n;return(n=(i=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||i===void 0?void 0:i.call(r,t))!==null&&n!==void 0?n:!1};j.nullOrUndefined=t=>j.null_(t)||j.undefined(t);j.object=t=>!j.null_(t)&&(typeof t=="object"||j.function_(t));j.iterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};j.asyncIterable=t=>{var e;return j.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};j.generator=t=>j.iterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.asyncGenerator=t=>j.asyncIterable(t)&&j.function_(t.next)&&j.function_(t.throw);j.nativePromise=t=>er("Promise")(t);var lbe=t=>{var e,r;return j.function_((e=t)===null||e===void 0?void 0:e.then)&&j.function_((r=t)===null||r===void 0?void 0:r.catch)};j.promise=t=>j.nativePromise(t)||lbe(t);j.generatorFunction=er("GeneratorFunction");j.asyncGeneratorFunction=t=>mp(t)==="AsyncGeneratorFunction";j.asyncFunction=t=>mp(t)==="AsyncFunction";j.boundFunction=t=>j.function_(t)&&!t.hasOwnProperty("prototype");j.regExp=er("RegExp");j.date=er("Date");j.error=er("Error");j.map=t=>er("Map")(t);j.set=t=>er("Set")(t);j.weakMap=t=>er("WeakMap")(t);j.weakSet=t=>er("WeakSet")(t);j.int8Array=er("Int8Array");j.uint8Array=er("Uint8Array");j.uint8ClampedArray=er("Uint8ClampedArray");j.int16Array=er("Int16Array");j.uint16Array=er("Uint16Array");j.int32Array=er("Int32Array");j.uint32Array=er("Uint32Array");j.float32Array=er("Float32Array");j.float64Array=er("Float64Array");j.bigInt64Array=er("BigInt64Array");j.bigUint64Array=er("BigUint64Array");j.arrayBuffer=er("ArrayBuffer");j.sharedArrayBuffer=er("SharedArrayBuffer");j.dataView=er("DataView");j.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;j.urlInstance=t=>er("URL")(t);j.urlString=t=>{if(!j.string(t))return!1;try{return new URL(t),!0}catch(e){return!1}};j.truthy=t=>Boolean(t);j.falsy=t=>!t;j.nan=t=>Number.isNaN(t);j.primitive=t=>j.null_(t)||abe(typeof t);j.integer=t=>Number.isInteger(t);j.safeInteger=t=>Number.isSafeInteger(t);j.plainObject=t=>{if(l3.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};j.typedArray=t=>ibe(mp(t));var cbe=t=>j.safeInteger(t)&&t>=0;j.arrayLike=t=>!j.nullOrUndefined(t)&&!j.function_(t)&&cbe(t.length);j.inRange=(t,e)=>{if(j.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(j.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ube=1,gbe=["innerHTML","ownerDocument","style","attributes","nodeValue"];j.domElement=t=>j.object(t)&&t.nodeType===ube&&j.string(t.nodeName)&&!j.plainObject(t)&&gbe.every(e=>e in t);j.observable=t=>{var e,r,i,n;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((n=(i=t)["@@observable"])===null||n===void 0?void 0:n.call(i)):!1};j.nodeStream=t=>j.object(t)&&j.function_(t.pipe)&&!j.observable(t);j.infinite=t=>t===Infinity||t===-Infinity;var c3=t=>e=>j.integer(e)&&Math.abs(e%2)===t;j.evenInteger=c3(0);j.oddInteger=c3(1);j.emptyArray=t=>j.array(t)&&t.length===0;j.nonEmptyArray=t=>j.array(t)&&t.length>0;j.emptyString=t=>j.string(t)&&t.length===0;j.nonEmptyString=t=>j.string(t)&&t.length>0;var fbe=t=>j.string(t)&&!/\S/.test(t);j.emptyStringOrWhitespace=t=>j.emptyString(t)||fbe(t);j.emptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length===0;j.nonEmptyObject=t=>j.object(t)&&!j.map(t)&&!j.set(t)&&Object.keys(t).length>0;j.emptySet=t=>j.set(t)&&t.size===0;j.nonEmptySet=t=>j.set(t)&&t.size>0;j.emptyMap=t=>j.map(t)&&t.size===0;j.nonEmptyMap=t=>j.map(t)&&t.size>0;j.propertyKey=t=>j.any([j.string,j.number,j.symbol],t);j.formData=t=>er("FormData")(t);j.urlSearchParams=t=>er("URLSearchParams")(t);var u3=(t,e,r)=>{if(!j.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};j.any=(t,...e)=>(j.array(t)?t:[t]).some(i=>u3(Array.prototype.some,i,e));j.all=(t,...e)=>u3(Array.prototype.every,t,e);var Te=(t,e,r,i={})=>{if(!t){let{multipleValues:n}=i,s=n?`received values of types ${[...new Set(r.map(o=>`\`${j(o)}\``))].join(", ")}`:`received value of type \`${j(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${s}.`)}};da.assert={undefined:t=>Te(j.undefined(t),"undefined",t),string:t=>Te(j.string(t),"string",t),number:t=>Te(j.number(t),"number",t),bigint:t=>Te(j.bigint(t),"bigint",t),function_:t=>Te(j.function_(t),"Function",t),null_:t=>Te(j.null_(t),"null",t),class_:t=>Te(j.class_(t),"Class",t),boolean:t=>Te(j.boolean(t),"boolean",t),symbol:t=>Te(j.symbol(t),"symbol",t),numericString:t=>Te(j.numericString(t),"string with a number",t),array:(t,e)=>{Te(j.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Te(j.buffer(t),"Buffer",t),nullOrUndefined:t=>Te(j.nullOrUndefined(t),"null or undefined",t),object:t=>Te(j.object(t),"Object",t),iterable:t=>Te(j.iterable(t),"Iterable",t),asyncIterable:t=>Te(j.asyncIterable(t),"AsyncIterable",t),generator:t=>Te(j.generator(t),"Generator",t),asyncGenerator:t=>Te(j.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Te(j.nativePromise(t),"native Promise",t),promise:t=>Te(j.promise(t),"Promise",t),generatorFunction:t=>Te(j.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Te(j.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Te(j.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Te(j.boundFunction(t),"Function",t),regExp:t=>Te(j.regExp(t),"RegExp",t),date:t=>Te(j.date(t),"Date",t),error:t=>Te(j.error(t),"Error",t),map:t=>Te(j.map(t),"Map",t),set:t=>Te(j.set(t),"Set",t),weakMap:t=>Te(j.weakMap(t),"WeakMap",t),weakSet:t=>Te(j.weakSet(t),"WeakSet",t),int8Array:t=>Te(j.int8Array(t),"Int8Array",t),uint8Array:t=>Te(j.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Te(j.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Te(j.int16Array(t),"Int16Array",t),uint16Array:t=>Te(j.uint16Array(t),"Uint16Array",t),int32Array:t=>Te(j.int32Array(t),"Int32Array",t),uint32Array:t=>Te(j.uint32Array(t),"Uint32Array",t),float32Array:t=>Te(j.float32Array(t),"Float32Array",t),float64Array:t=>Te(j.float64Array(t),"Float64Array",t),bigInt64Array:t=>Te(j.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Te(j.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Te(j.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Te(j.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Te(j.dataView(t),"DataView",t),urlInstance:t=>Te(j.urlInstance(t),"URL",t),urlString:t=>Te(j.urlString(t),"string with a URL",t),truthy:t=>Te(j.truthy(t),"truthy",t),falsy:t=>Te(j.falsy(t),"falsy",t),nan:t=>Te(j.nan(t),"NaN",t),primitive:t=>Te(j.primitive(t),"primitive",t),integer:t=>Te(j.integer(t),"integer",t),safeInteger:t=>Te(j.safeInteger(t),"integer",t),plainObject:t=>Te(j.plainObject(t),"plain object",t),typedArray:t=>Te(j.typedArray(t),"TypedArray",t),arrayLike:t=>Te(j.arrayLike(t),"array-like",t),domElement:t=>Te(j.domElement(t),"HTMLElement",t),observable:t=>Te(j.observable(t),"Observable",t),nodeStream:t=>Te(j.nodeStream(t),"Node.js Stream",t),infinite:t=>Te(j.infinite(t),"infinite number",t),emptyArray:t=>Te(j.emptyArray(t),"empty array",t),nonEmptyArray:t=>Te(j.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Te(j.emptyString(t),"empty string",t),nonEmptyString:t=>Te(j.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Te(j.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Te(j.emptyObject(t),"empty object",t),nonEmptyObject:t=>Te(j.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Te(j.emptySet(t),"empty set",t),nonEmptySet:t=>Te(j.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Te(j.emptyMap(t),"empty map",t),nonEmptyMap:t=>Te(j.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Te(j.propertyKey(t),"PropertyKey",t),formData:t=>Te(j.formData(t),"FormData",t),urlSearchParams:t=>Te(j.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Te(j.evenInteger(t),"even integer",t),oddInteger:t=>Te(j.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Te(j.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Te(j.inRange(t,e),"in range",t),any:(t,...e)=>Te(j.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Te(j.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(j,{class:{value:j.class_},function:{value:j.function_},null:{value:j.null_}});Object.defineProperties(da.assert,{class:{value:da.assert.class_},function:{value:da.assert.function_},null:{value:da.assert.null_}});da.default=j;Dy.exports=j;Dy.exports.default=j;Dy.exports.assert=da.assert});var g3=I((gnt,Ux)=>{"use strict";var Hx=class extends Error{constructor(e){super(e||"Promise was canceled");this.name="CancelError"}get isCanceled(){return!0}},Ip=class{static fn(e){return(...r)=>new Ip((i,n,s)=>{r.push(s),e(...r).then(i,n)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,i)=>{this._reject=i;let n=a=>{this._isPending=!1,r(a)},s=a=>{this._isPending=!1,i(a)},o=a=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(a)};return Object.defineProperties(o,{shouldReject:{get:()=>this._rejectOnCancel,set:a=>{this._rejectOnCancel=a}}}),e(n,s,o)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new Hx(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Ip.prototype,Promise.prototype);Ux.exports=Ip;Ux.exports.CancelError=Hx});var f3=I((Gx,jx)=>{"use strict";Object.defineProperty(Gx,"__esModule",{value:!0});var hbe=require("tls"),Yx=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let i=typeof r.connect=="function",n=typeof r.secureConnect=="function",s=typeof r.close=="function",o=()=>{i&&r.connect(),t instanceof hbe.TLSSocket&&n&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),s&&t.once("close",r.close)};t.writable&&!t.connecting?o():t.connecting?t.once("connect",o):t.destroyed&&s&&r.close(t._hadError)};Gx.default=Yx;jx.exports=Yx;jx.exports.default=Yx});var h3=I((qx,Jx)=>{"use strict";Object.defineProperty(qx,"__esModule",{value:!0});var pbe=f3(),dbe=Number(process.versions.node.split(".")[0]),Wx=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=o=>{let a=o.emit.bind(o);o.emit=(l,...c)=>(l==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,o.emit=a),a(l,...c))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||dbe>=13)&&(e.phases.total=Date.now()-e.start)});let i=o=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let a=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};o.prependOnceListener("lookup",a),pbe.default(o,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(o.removeListener("lookup",a),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?i(t.socket):t.prependOnceListener("socket",i);let n=()=>{var o;e.upload=Date.now(),e.phases.request=e.upload-(o=e.secureConnect,o!=null?o:e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?n():t.prependOnceListener("finish",n),t.prependOnceListener("response",o=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,o.timings=e,r(o),o.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};qx.default=Wx;Jx.exports=Wx;Jx.exports.default=Wx});var y3=I((fnt,zx)=>{"use strict";var{V4MAPPED:Cbe,ADDRCONFIG:mbe,ALL:p3,promises:{Resolver:d3},lookup:Ibe}=require("dns"),{promisify:Vx}=require("util"),Ebe=require("os"),Gu=Symbol("cacheableLookupCreateConnection"),_x=Symbol("cacheableLookupInstance"),C3=Symbol("expires"),ybe=typeof p3=="number",m3=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},wbe=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},I3=()=>{let t=!1,e=!1;for(let r of Object.values(Ebe.networkInterfaces()))for(let i of r)if(!i.internal&&(i.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Bbe=t=>Symbol.iterator in t,E3={ttl:!0},Qbe={all:!0},Xx=class{constructor({cache:e=new Map,maxTtl:r=Infinity,fallbackDuration:i=3600,errorTtl:n=.15,resolver:s=new d3,lookup:o=Ibe}={}){if(this.maxTtl=r,this.errorTtl=n,this._cache=e,this._resolver=s,this._dnsLookup=Vx(o),this._resolver instanceof d3?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=Vx(this._resolver.resolve4.bind(this._resolver)),this._resolve6=Vx(this._resolver.resolve6.bind(this._resolver))),this._iface=I3(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,i<1)this._fallback=!1;else{this._fallback=!0;let a=setInterval(()=>{this._hostnamesToFallback.clear()},i*1e3);a.unref&&a.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,i){if(typeof r=="function"?(i=r,r={}):typeof r=="number"&&(r={family:r}),!i)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(n=>{r.all?i(null,n):i(null,n.address,n.family,n.expires,n.ttl)},i)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let i=await this.query(e);if(r.family===6){let n=i.filter(s=>s.family===6);r.hints&Cbe&&(ybe&&r.hints&p3||n.length===0)?wbe(i):i=n}else r.family===4&&(i=i.filter(n=>n.family===4));if(r.hints&mbe){let{_iface:n}=this;i=i.filter(s=>s.family===6?n.has6:n.has4)}if(i.length===0){let n=new Error(`cacheableLookup ENOTFOUND ${e}`);throw n.code="ENOTFOUND",n.hostname=e,n}return r.all?i:i[0]}async query(e){let r=await this._cache.get(e);if(!r){let i=this._pending[e];if(i)r=await i;else{let n=this.queryAndCache(e);this._pending[e]=n,r=await n}}return r=r.map(i=>P({},i)),r}async _resolve(e){let r=async c=>{try{return await c}catch(u){if(u.code==="ENODATA"||u.code==="ENOTFOUND")return[];throw u}},[i,n]=await Promise.all([this._resolve4(e,E3),this._resolve6(e,E3)].map(c=>r(c))),s=0,o=0,a=0,l=Date.now();for(let c of i)c.family=4,c.expires=l+c.ttl*1e3,s=Math.max(s,c.ttl);for(let c of n)c.family=6,c.expires=l+c.ttl*1e3,o=Math.max(o,c.ttl);return i.length>0?n.length>0?a=Math.min(s,o):a=s:a=o,{entries:[...i,...n],cacheTtl:a}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(r){return{entries:[],cacheTtl:0}}}async _set(e,r,i){if(this.maxTtl>0&&i>0){i=Math.min(i,this.maxTtl)*1e3,r[C3]=Date.now()+i;try{await this._cache.set(e,r,i)}catch(n){this.lookupAsync=async()=>{let s=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw s.cause=n,s}}Bbe(this._cache)&&this._tick(i)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Qbe);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let i=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,i),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e{this._nextRemovalTime=!1;let i=Infinity,n=Date.now();for(let[s,o]of this._cache){let a=o[C3];n>=a?this._cache.delete(s):a("lookup"in r||(r.lookup=this.lookup),e[Gu](r,i))}uninstall(e){if(m3(e),e[Gu]){if(e[_x]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[Gu],delete e[Gu],delete e[_x]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=I3(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};zx.exports=Xx;zx.exports.default=Xx});var Q3=I((hnt,Zx)=>{"use strict";var bbe=typeof URL=="undefined"?require("url").URL:URL,vbe="text/plain",Sbe="us-ascii",w3=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),xbe=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let i=r[1].split(";"),n=r[2],s=e?"":r[3],o=!1;i[i.length-1]==="base64"&&(i.pop(),o=!0);let a=(i.shift()||"").toLowerCase(),c=[...i.map(u=>{let[g,f=""]=u.split("=").map(h=>h.trim());return g==="charset"&&(f=f.toLowerCase(),f===Sbe)?"":`${g}${f?`=${f}`:""}`}).filter(Boolean)];return o&&c.push("base64"),(c.length!==0||a&&a!==vbe)&&c.unshift(a),`data:${c.join(";")},${o?n.trim():n}${s?`#${s}`:""}`},B3=(t,e)=>{if(e=P({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return xbe(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new bbe(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripAuthentication&&(n.username="",n.password=""),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?!:).|^)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];w3(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])w3(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),e.removeTrailingSlash&&(n.pathname=n.pathname.replace(/\/$/,"")),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&n.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};Zx.exports=B3;Zx.exports.default=B3});var S3=I((pnt,b3)=>{b3.exports=v3;function v3(t,e){if(t&&e)return v3(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(i){r[i]=t[i]}),r;function r(){for(var i=new Array(arguments.length),n=0;n{var x3=S3();$x.exports=x3(Ry);$x.exports.strict=x3(k3);Ry.proto=Ry(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Ry(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return k3(this)},configurable:!0})});function Ry(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function k3(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var tk=I((Cnt,P3)=>{var kbe=ek(),Pbe=function(){},Dbe=function(t){return t.setHeader&&typeof t.abort=="function"},Rbe=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},D3=function(t,e,r){if(typeof e=="function")return D3(t,null,e);e||(e={}),r=kbe(r||Pbe);var i=t._writableState,n=t._readableState,s=e.readable||e.readable!==!1&&t.readable,o=e.writable||e.writable!==!1&&t.writable,a=function(){t.writable||l()},l=function(){o=!1,s||r.call(t)},c=function(){s=!1,o||r.call(t)},u=function(p){r.call(t,p?new Error("exited with error code: "+p):null)},g=function(p){r.call(t,p)},f=function(){if(s&&!(n&&n.ended))return r.call(t,new Error("premature close"));if(o&&!(i&&i.ended))return r.call(t,new Error("premature close"))},h=function(){t.req.on("finish",l)};return Dbe(t)?(t.on("complete",l),t.on("abort",f),t.req?h():t.on("request",h)):o&&!i&&(t.on("end",a),t.on("close",a)),Rbe(t)&&t.on("exit",u),t.on("end",c),t.on("finish",l),e.error!==!1&&t.on("error",g),t.on("close",f),function(){t.removeListener("complete",l),t.removeListener("abort",f),t.removeListener("request",h),t.req&&t.req.removeListener("finish",l),t.removeListener("end",a),t.removeListener("close",a),t.removeListener("finish",l),t.removeListener("exit",u),t.removeListener("end",c),t.removeListener("error",g),t.removeListener("close",f)}};P3.exports=D3});var N3=I((mnt,R3)=>{var Fbe=ek(),Nbe=tk(),rk=require("fs"),Ep=function(){},Lbe=/^v?\.0/.test(process.version),Fy=function(t){return typeof t=="function"},Tbe=function(t){return!Lbe||!rk?!1:(t instanceof(rk.ReadStream||Ep)||t instanceof(rk.WriteStream||Ep))&&Fy(t.close)},Mbe=function(t){return t.setHeader&&Fy(t.abort)},Obe=function(t,e,r,i){i=Fbe(i);var n=!1;t.on("close",function(){n=!0}),Nbe(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,Tbe(t))return t.close(Ep);if(Mbe(t))return t.abort();if(Fy(t.destroy))return t.destroy();i(o||new Error("stream was destroyed"))}}},F3=function(t){t()},Kbe=function(t,e){return t.pipe(e)},Ube=function(){var t=Array.prototype.slice.call(arguments),e=Fy(t[t.length-1]||Ep)&&t.pop()||Ep;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,i=t.map(function(n,s){var o=s0;return Obe(n,o,a,function(l){r||(r=l),l&&i.forEach(F3),!o&&(i.forEach(F3),e(r))})});return t.reduce(Kbe)};R3.exports=Ube});var T3=I((Int,L3)=>{"use strict";var{PassThrough:Hbe}=require("stream");L3.exports=t=>{t=P({},t);let{array:e}=t,{encoding:r}=t,i=r==="buffer",n=!1;e?n=!(r||i):r=r||"utf8",i&&(r=null);let s=new Hbe({objectMode:n});r&&s.setEncoding(r);let o=0,a=[];return s.on("data",l=>{a.push(l),n?o=a.length:o+=l.length}),s.getBufferedValue=()=>e?a:i?Buffer.concat(a,o):a.join(""),s.getBufferedLength=()=>o,s}});var M3=I((Ent,ju)=>{"use strict";var Gbe=N3(),jbe=T3(),ik=class extends Error{constructor(){super("maxBuffer exceeded");this.name="MaxBufferError"}};async function Ny(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e=P({maxBuffer:Infinity},e);let{maxBuffer:r}=e,i;return await new Promise((n,s)=>{let o=a=>{a&&(a.bufferedData=i.getBufferedValue()),s(a)};i=Gbe(t,jbe(e),a=>{if(a){o(a);return}n()}),i.on("data",()=>{i.getBufferedLength()>r&&o(new ik)})}),i.getBufferedValue()}ju.exports=Ny;ju.exports.default=Ny;ju.exports.buffer=(t,e)=>Ny(t,_(P({},e),{encoding:"buffer"}));ju.exports.array=(t,e)=>Ny(t,_(P({},e),{array:!0}));ju.exports.MaxBufferError=ik});var K3=I((wnt,O3)=>{"use strict";var Ybe=[200,203,204,206,300,301,404,405,410,414,501],qbe=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],Jbe={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},Wbe={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function nk(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let i of r){let[n,s]=i.split(/\s*=\s*/,2);e[n]=s===void 0?!0:s.replace(/^"|"$/g,"")}return e}function zbe(t){let e=[];for(let r in t){let i=t[r];e.push(i===!0?r:r+"="+i)}if(!!e.length)return e.join(", ")}O3.exports=class{constructor(e,r,{shared:i,cacheHeuristic:n,immutableMinTimeToLive:s,ignoreCargoCult:o,trustServerDate:a,_fromObject:l}={}){if(l){this._fromObject(l);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=i!==!1,this._trustServerDate=a!==void 0?a:!0,this._cacheHeuristic=n!==void 0?n:.1,this._immutableMinTtl=s!==void 0?s:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=nk(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=nk(e.headers["cache-control"]),o&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":zbe(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!r.headers["cache-control"]&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&qbe.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||Ybe.indexOf(this._status)!==-1))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=nk(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let i of r)if(e.headers[i]!==this._reqHeaders[i])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let i in e)Jbe[i]||(r[i]=e[i]);if(e.connection){let i=e.connection.trim().split(/\s*,\s*/);for(let n of i)delete r[n]}if(r.warning){let i=r.warning.split(/,/).filter(n=>!/^\s*1[0-9][0-9]/.test(n));i.length?r.warning=i.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){let e=Date.parse(this._resHeaders.date);if(isFinite(e)){let r=8*3600*1e3;if(Math.abs(this._responseTime-e)e&&(e=i)}let r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){let e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this._serverDate();if(this._resHeaders.expires){let i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ii)return Math.max(e,(r-i)/1e3*this._cacheHeuristic)}return e}timeToLive(){return Math.max(0,this.maxAge()-this.age())*1e3}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let n=r["if-none-match"].split(/,/).filter(s=>!/^\s*W\//.test(s));n.length?r["if-none-match"]=n.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),!r||!r.headers)throw Error("Response headers missing");let i=!1;if(r.status!==void 0&&r.status!=304?i=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let n={};for(let o in this._resHeaders)n[o]=o in r.headers&&!Wbe[o]?r.headers[o]:this._resHeaders[o];let s=Object.assign({},r,{status:this._status,method:this._method,headers:n});return{policy:new this.constructor(e,s,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}});var Ly=I((Bnt,U3)=>{"use strict";U3.exports=t=>{let e={};for(let[r,i]of Object.entries(t))e[r.toLowerCase()]=i;return e}});var j3=I((Qnt,H3)=>{"use strict";var Vbe=require("stream").Readable,_be=Ly(),G3=class extends Vbe{constructor(e,r,i,n){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(i instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof n!="string")throw new TypeError("Argument `url` should be a string");super();this.statusCode=e,this.headers=_be(r),this.body=i,this.url=n}_read(){this.push(this.body),this.push(null)}};H3.exports=G3});var q3=I((bnt,Y3)=>{"use strict";var Xbe=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];Y3.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Xbe));for(let i of r)i in e||(e[i]=typeof t[i]=="function"?t[i].bind(t):t[i])}});var W3=I((vnt,J3)=>{"use strict";var Zbe=require("stream").PassThrough,$be=q3(),eve=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Zbe;return $be(t,e),t.pipe(e)};J3.exports=eve});var z3=I(sk=>{sk.stringify=function t(e){if(typeof e=="undefined")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",i=Array.isArray(e);r=i?"[":"{";var n=!0;for(var s in e){var o=typeof e[s]=="function"||!i&&typeof e[s]=="undefined";Object.hasOwnProperty.call(e,s)&&!o&&(n||(r+=","),n=!1,i?e[s]==null?r+="null":r+=t(e[s]):e[s]!==void 0&&(r+=t(s)+":"+t(e[s])))}return r+=i?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e=="undefined"?"null":JSON.stringify(e)};sk.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var Z3=I((xnt,V3)=>{"use strict";var tve=require("events"),_3=z3(),rve=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(require(e[r]))(t)}return new Map},X3=class extends tve{constructor(e,r){super();if(this.opts=Object.assign({namespace:"keyv",serialize:_3.stringify,deserialize:_3.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let i=Object.assign({},this.opts);this.opts.store=rve(i)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",i=>this.emit("error",i)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:i}=this.opts;return Promise.resolve().then(()=>i.get(e)).then(n=>typeof n=="string"?this.opts.deserialize(n):n).then(n=>{if(n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(e);return}return r&&r.raw?n:n.value}})}set(e,r,i){e=this._getKeyPrefix(e),typeof i=="undefined"&&(i=this.opts.ttl),i===0&&(i=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let s=typeof i=="number"?Date.now()+i:null;return r={value:r,expires:s},this.opts.serialize(r)}).then(s=>n.set(e,s,i)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};V3.exports=X3});var tW=I((knt,$3)=>{"use strict";var ive=require("events"),Ty=require("url"),nve=Q3(),sve=M3(),ok=K3(),eW=j3(),ove=Ly(),ave=W3(),Ave=Z3(),yo=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Ave({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,i)=>{let n;if(typeof r=="string")n=ak(Ty.parse(r)),r={};else if(r instanceof Ty.URL)n=ak(Ty.parse(r.toString())),r={};else{let[g,...f]=(r.path||"").split("?"),h=f.length>0?`?${f.join("?")}`:"";n=ak(_(P({},r),{pathname:g,search:h}))}r=P(P({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},r),lve(n)),r.headers=ove(r.headers);let s=new ive,o=nve(Ty.format(n),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),a=`${r.method}:${o}`,l=!1,c=!1,u=g=>{c=!0;let f=!1,h,p=new Promise(m=>{h=()=>{f||(f=!0,m())}}),d=m=>{if(l&&!g.forceRefresh){m.status=m.statusCode;let B=ok.fromObject(l.cachePolicy).revalidatedPolicy(g,m);if(!B.modified){let b=B.policy.responseHeaders();m=new eW(l.statusCode,b,l.body,l.url),m.cachePolicy=B.policy,m.fromCache=!0}}m.fromCache||(m.cachePolicy=new ok(g,m,g),m.fromCache=!1);let E;g.cache&&m.cachePolicy.storable()?(E=ave(m),(async()=>{try{let B=sve.buffer(m);if(await Promise.race([p,new Promise(L=>m.once("end",L))]),f)return;let b=await B,R={cachePolicy:m.cachePolicy.toObject(),url:m.url,statusCode:m.fromCache?l.statusCode:m.statusCode,body:b},H=g.strictTtl?m.cachePolicy.timeToLive():void 0;g.maxTtl&&(H=H?Math.min(H,g.maxTtl):g.maxTtl),await this.cache.set(a,R,H)}catch(B){s.emit("error",new yo.CacheError(B))}})()):g.cache&&l&&(async()=>{try{await this.cache.delete(a)}catch(B){s.emit("error",new yo.CacheError(B))}})(),s.emit("response",E||m),typeof i=="function"&&i(E||m)};try{let m=e(g,d);m.once("error",h),m.once("abort",h),s.emit("request",m)}catch(m){s.emit("error",new yo.RequestError(m))}};return(async()=>{let g=async h=>{await Promise.resolve();let p=h.cache?await this.cache.get(a):void 0;if(typeof p=="undefined")return u(h);let d=ok.fromObject(p.cachePolicy);if(d.satisfiesWithoutRevalidation(h)&&!h.forceRefresh){let m=d.responseHeaders(),E=new eW(p.statusCode,m,p.body,p.url);E.cachePolicy=d,E.fromCache=!0,s.emit("response",E),typeof i=="function"&&i(E)}else l=p,h.headers=d.revalidationHeaders(h),u(h)},f=h=>s.emit("error",new yo.CacheError(h));this.cache.once("error",f),s.on("response",()=>this.cache.removeListener("error",f));try{await g(r)}catch(h){r.automaticFailover&&!c&&u(r),s.emit("error",new yo.CacheError(h))}})(),s}}};function lve(t){let e=P({},t);return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function ak(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}yo.RequestError=class extends Error{constructor(t){super(t.message);this.name="RequestError",Object.assign(this,t)}};yo.CacheError=class extends Error{constructor(t){super(t.message);this.name="CacheError",Object.assign(this,t)}};$3.exports=yo});var iW=I((Pnt,rW)=>{"use strict";var cve=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];rW.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(cve)),i={};for(let n of r)n in e||(i[n]={get(){let s=t[n];return typeof s=="function"?s.bind(t):s},set(s){t[n]=s},enumerable:!0,configurable:!1});return Object.defineProperties(e,i),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var sW=I((Dnt,nW)=>{"use strict";var{Transform:uve,PassThrough:gve}=require("stream"),Ak=require("zlib"),fve=iW();nW.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof Ak.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let i=!0,n=new uve({transform(a,l,c){i=!1,c(null,a)},flush(a){a()}}),s=new gve({autoDestroy:!1,destroy(a,l){t.destroy(),l(a)}}),o=r?Ak.createBrotliDecompress():Ak.createUnzip();return o.once("error",a=>{if(i&&!t.readable){s.end();return}s.destroy(a)}),fve(t,s),t.pipe(n).pipe(o).pipe(s),s}});var lk=I((Rnt,oW)=>{"use strict";var aW=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[i,n]of this.oldCache.entries())this.onEviction(i,n);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};oW.exports=aW});var uk=I((Fnt,AW)=>{"use strict";var hve=require("events"),pve=require("tls"),dve=require("http2"),Cve=lk(),_i=Symbol("currentStreamsCount"),lW=Symbol("request"),ns=Symbol("cachedOriginSet"),Yu=Symbol("gracefullyClosing"),mve=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],Ive=(t,e,r)=>{let i=0,n=t.length;for(;i>>1;r(t[s],e)?i=s+1:n=s}return i},Eve=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,ck=(t,e)=>{for(let r of t)r[ns].lengthe[ns].includes(i))&&r[_i]+e[_i]<=e.remoteSettings.maxConcurrentStreams&&cW(r)},yve=(t,e)=>{for(let r of t)e[ns].lengthr[ns].includes(i))&&e[_i]+r[_i]<=r.remoteSettings.maxConcurrentStreams&&cW(e)},uW=({agent:t,isFree:e})=>{let r={};for(let i in t.sessions){let s=t.sessions[i].filter(o=>{let a=o[ma.kCurrentStreamsCount]{t[Yu]=!0,t[_i]===0&&t.close()},ma=class extends hve{constructor({timeout:e=6e4,maxSessions:r=Infinity,maxFreeSessions:i=10,maxCachedTlsSessions:n=100}={}){super();this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=i,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Cve({maxSize:n})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let i of mve)e[i]&&(r+=`:${e[i]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let i=this.queue[e][r];this._sessionsCount{Array.isArray(i)?(i=[...i],n()):i=[{resolve:n,reject:s}];let o=this.normalizeOptions(r),a=ma.normalizeOrigin(e,r&&r.servername);if(a===void 0){for(let{reject:u}of i)u(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(o in this.sessions){let u=this.sessions[o],g=-1,f=-1,h;for(let p of u){let d=p.remoteSettings.maxConcurrentStreams;if(d=d||p[Yu]||p.destroyed)continue;h||(g=d),m>f&&(h=p,f=m)}}if(h){if(i.length!==1){for(let{reject:p}of i){let d=new Error(`Expected the length of listeners to be 1, got ${i.length}. -Please report this to https://github.com/szmarczak/http2-wrapper/`);p(d)}return}i[0].resolve(h);return}}if(o in this.queue){if(a in this.queue[o]){this.queue[o][a].listeners.push(...i),this._tryToCreateNewSession(o,a);return}}else this.queue[o]={};let l=()=>{o in this.queue&&this.queue[o][a]===c&&(delete this.queue[o][a],Object.keys(this.queue[o]).length===0&&delete this.queue[o])},c=()=>{let u=`${a}:${o}`,g=!1;try{let f=dve.connect(e,P({createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(u)},r));f[_i]=0,f[Yu]=!1;let h=()=>f[_i]{this.tlsSessionCache.set(u,m)}),f.once("error",m=>{for(let{reject:E}of i)E(m);this.tlsSessionCache.delete(u)}),f.setTimeout(this.timeout,()=>{f.destroy()}),f.once("close",()=>{if(g){p&&this._freeSessionsCount--,this._sessionsCount--;let m=this.sessions[o];m.splice(m.indexOf(f),1),m.length===0&&delete this.sessions[o]}else{let m=new Error("Session closed without receiving a SETTINGS frame");m.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:E}of i)E(m);l()}this._tryToCreateNewSession(o,a)});let d=()=>{if(!(!(o in this.queue)||!h())){for(let m of f[ns])if(m in this.queue[o]){let{listeners:E}=this.queue[o][m];for(;E.length!==0&&h();)E.shift().resolve(f);let B=this.queue[o];if(B[m].listeners.length===0&&(delete B[m],Object.keys(B).length===0)){delete this.queue[o];break}if(!h())break}}};f.on("origin",()=>{f[ns]=f.originSet,!!h()&&(d(),ck(this.sessions[o],f))}),f.once("remoteSettings",()=>{if(f.ref(),f.unref(),this._sessionsCount++,c.destroyed){let m=new Error("Agent has been destroyed");for(let E of i)E.reject(m);f.destroy();return}f[ns]=f.originSet;{let m=this.sessions;if(o in m){let E=m[o];E.splice(Ive(E,f,Eve),0,f)}else m[o]=[f]}this._freeSessionsCount+=1,g=!0,this.emit("session",f),d(),l(),f[_i]===0&&this._freeSessionsCount>this.maxFreeSessions&&f.close(),i.length!==0&&(this.getSession(a,r,i),i.length=0),f.on("remoteSettings",()=>{d(),ck(this.sessions[o],f)})}),f[lW]=f.request,f.request=(m,E)=>{if(f[Yu])throw new Error("The session is gracefully closing. No new streams are allowed.");let B=f[lW](m,E);return f.ref(),++f[_i],f[_i]===f.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,B.once("close",()=>{if(p=h(),--f[_i],!f.destroyed&&!f.closed&&(yve(this.sessions[o],f),h()&&!f.closed)){p||(this._freeSessionsCount++,p=!0);let b=f[_i]===0;b&&f.unref(),b&&(this._freeSessionsCount>this.maxFreeSessions||f[Yu])?f.close():(ck(this.sessions[o],f),d())}}),B}}catch(f){for(let h of i)h.reject(f);l()}};c.listeners=i,c.completed=!1,c.destroyed=!1,this.queue[o][a]=c,this._tryToCreateNewSession(o,a)})}request(e,r,i,n){return new Promise((s,o)=>{this.getSession(e,r,[{reject:o,resolve:a=>{try{s(a.request(i,n))}catch(l){o(l)}}}])})}createConnection(e,r){return ma.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let i=e.port||443,n=e.hostname||e.host;return typeof r.servername=="undefined"&&(r.servername=n),pve.connect(i,n,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[_i]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let i of r)i.destroy(e);for(let r of Object.values(this.queue))for(let i of Object.values(r))i.destroyed=!0;this.queue={}}get freeSessions(){return uW({agent:this,isFree:!0})}get busySessions(){return uW({agent:this,isFree:!1})}};ma.kCurrentStreamsCount=_i;ma.kGracefullyClosing=Yu;AW.exports={Agent:ma,globalAgent:new ma}});var gk=I((Nnt,gW)=>{"use strict";var{Readable:wve}=require("stream"),fW=class extends wve{constructor(e,r){super({highWaterMark:r,autoDestroy:!1});this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};gW.exports=fW});var fk=I((Lnt,hW)=>{"use strict";hW.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var dW=I((Tnt,pW)=>{"use strict";pW.exports=(t,e,r)=>{for(let i of r)t.on(i,(...n)=>e.emit(i,...n))}});var mW=I((Mnt,CW)=>{"use strict";CW.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var EW=I((Knt,IW)=>{"use strict";var qu=(t,e,r)=>{IW.exports[e]=class extends t{constructor(...n){super(typeof r=="string"?r:r(n));this.name=`${super.name} [${e}]`,this.code=e}}};qu(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],i=Array.isArray(r);return i&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${i?"one of":"of"} type ${r}. Received ${typeof t[2]}`});qu(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);qu(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);qu(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);qu(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);qu(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var Ck=I((Unt,yW)=>{"use strict";var Bve=require("http2"),{Writable:Qve}=require("stream"),{Agent:wW,globalAgent:bve}=uk(),vve=gk(),Sve=fk(),xve=dW(),kve=mW(),{ERR_INVALID_ARG_TYPE:hk,ERR_INVALID_PROTOCOL:Pve,ERR_HTTP_HEADERS_SENT:BW,ERR_INVALID_HTTP_TOKEN:Dve,ERR_HTTP_INVALID_HEADER_VALUE:Rve,ERR_INVALID_CHAR:Fve}=EW(),{HTTP2_HEADER_STATUS:QW,HTTP2_HEADER_METHOD:bW,HTTP2_HEADER_PATH:vW,HTTP2_METHOD_CONNECT:Nve}=Bve.constants,Pi=Symbol("headers"),pk=Symbol("origin"),dk=Symbol("session"),SW=Symbol("options"),My=Symbol("flushedHeaders"),yp=Symbol("jobs"),Lve=/^[\^`\-\w!#$%&*+.|~]+$/,Tve=/[^\t\u0020-\u007E\u0080-\u00FF]/,xW=class extends Qve{constructor(e,r,i){super({autoDestroy:!1});let n=typeof e=="string"||e instanceof URL;if(n&&(e=Sve(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(i=r,r=n?e:P({},e)):r=P(P({},e),r),r.h2session)this[dk]=r.h2session;else if(r.agent===!1)this.agent=new wW({maxFreeSessions:0});else if(typeof r.agent=="undefined"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new wW({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=bve;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new hk("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pve(r.protocol,"https:");let s=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,o=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:a}=r;if(r.timeout=void 0,this[Pi]=Object.create(null),this[yp]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[l,c]of Object.entries(r.headers))this.setHeader(l,c);r.auth&&!("authorization"in this[Pi])&&(this[Pi].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[SW]=r,s===443?(this[pk]=`https://${o}`,":authority"in this[Pi]||(this[Pi][":authority"]=o)):(this[pk]=`https://${o}:${s}`,":authority"in this[Pi]||(this[Pi][":authority"]=`${o}:${s}`)),a&&this.setTimeout(a),i&&this.once("response",i),this[My]=!1}get method(){return this[Pi][bW]}set method(e){e&&(this[Pi][bW]=e.toUpperCase())}get path(){return this[Pi][vW]}set path(e){e&&(this[Pi][vW]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,i){if(this._mustNotHaveABody){i(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let n=()=>this._request.write(e,r,i);this._request?n():this[yp].push(n)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[yp].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[My]||this.destroyed)return;this[My]=!0;let e=this.method===Nve,r=i=>{if(this._request=i,this.destroyed){i.destroy();return}e||xve(i,this,["timeout","continue","close","error"]);let n=o=>(...a)=>{!this.writable&&!this.destroyed?o(...a):this.once("finish",()=>{o(...a)})};i.once("response",n((o,a,l)=>{let c=new vve(this.socket,i.readableHighWaterMark);this.res=c,c.req=this,c.statusCode=o[QW],c.headers=o,c.rawHeaders=l,c.once("end",()=>{this.aborted?(c.aborted=!0,c.emit("aborted")):(c.complete=!0,c.socket=null,c.connection=null)}),e?(c.upgrade=!0,this.emit("connect",c,i,Buffer.alloc(0))?this.emit("close"):i.destroy()):(i.on("data",u=>{!c._dumped&&!c.push(u)&&i.pause()}),i.once("end",()=>{c.push(null)}),this.emit("response",c)||c._dump())})),i.once("headers",n(o=>this.emit("information",{statusCode:o[QW]}))),i.once("trailers",n((o,a,l)=>{let{res:c}=this;c.trailers=o,c.rawTrailers=l}));let{socket:s}=i.session;this.socket=s,this.connection=s;for(let o of this[yp])o();this.emit("socket",this.socket)};if(this[dk])try{r(this[dk].request(this[Pi]))}catch(i){this.emit("error",i)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[pk],this[SW],this[Pi]))}catch(i){this.emit("error",i)}}}getHeader(e){if(typeof e!="string")throw new hk("name","string",e);return this[Pi][e.toLowerCase()]}get headersSent(){return this[My]}removeHeader(e){if(typeof e!="string")throw new hk("name","string",e);if(this.headersSent)throw new BW("remove");delete this[Pi][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new BW("set");if(typeof e!="string"||!Lve.test(e)&&!kve(e))throw new Dve("Header name",e);if(typeof r=="undefined")throw new Rve(r,e);if(Tve.test(r))throw new Fve("header content",e);this[Pi][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let i=()=>this._request.setTimeout(e,r);return this._request?i():this[yp].push(i),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};yW.exports=xW});var PW=I((Hnt,kW)=>{"use strict";var Mve=require("tls");kW.exports=(t={})=>new Promise((e,r)=>{let i=Mve.connect(t,()=>{t.resolveSocket?(i.off("error",r),e({alpnProtocol:i.alpnProtocol,socket:i})):(i.destroy(),e({alpnProtocol:i.alpnProtocol}))});i.on("error",r)})});var RW=I((Gnt,DW)=>{"use strict";var Ove=require("net");DW.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Ove.isIP(e)?"":e}});var LW=I((jnt,mk)=>{"use strict";var FW=require("http"),Ik=require("https"),Kve=PW(),Uve=lk(),Hve=Ck(),Gve=RW(),jve=fk(),Oy=new Uve({maxSize:100}),wp=new Map,NW=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let i=()=>{t.emit("free",e,r)};e.on("free",i);let n=()=>{t.removeSocket(e,r)};e.on("close",n);let s=()=>{t.removeSocket(e,r),e.off("close",n),e.off("free",i),e.off("agentRemove",s)};e.on("agentRemove",s),t.emit("free",e,r)},Yve=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!Oy.has(e)){if(wp.has(e))return(await wp.get(e)).alpnProtocol;let{path:r,agent:i}=t;t.path=t.socketPath;let n=Kve(t);wp.set(e,n);try{let{socket:s,alpnProtocol:o}=await n;if(Oy.set(e,o),t.path=r,o==="h2")s.destroy();else{let{globalAgent:a}=Ik,l=Ik.Agent.prototype.createConnection;i?i.createConnection===l?NW(i,s,t):s.destroy():a.createConnection===l?NW(a,s,t):s.destroy()}return wp.delete(e),o}catch(s){throw wp.delete(e),s}}return Oy.get(e)};mk.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=jve(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e=_(P(P({ALPNProtocols:["h2","http/1.1"]},t),e),{resolveSocket:!0}),!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let i=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Gve(e),e.port=e.port||(i?443:80),e._defaultAgent=i?Ik.globalAgent:FW.globalAgent;let n=e.agent;if(n){if(n.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=n[i?"https":"http"]}return i&&await Yve(e)==="h2"?(n&&(e.agent=n.http2),new Hve(e,r)):FW.request(e,r)};mk.exports.protocolCache=Oy});var MW=I((Ynt,TW)=>{"use strict";var qve=require("http2"),Jve=uk(),Ek=Ck(),Wve=gk(),zve=LW(),Vve=(t,e,r)=>new Ek(t,e,r),_ve=(t,e,r)=>{let i=new Ek(t,e,r);return i.end(),i};TW.exports=_(P(_(P({},qve),{ClientRequest:Ek,IncomingMessage:Wve}),Jve),{request:Vve,get:_ve,auto:zve})});var wk=I(yk=>{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});var OW=Ca();yk.default=t=>OW.default.nodeStream(t)&&OW.default.function_(t.getBoundary)});var GW=I(Bk=>{"use strict";Object.defineProperty(Bk,"__esModule",{value:!0});var KW=require("fs"),UW=require("util"),HW=Ca(),Xve=wk(),Zve=UW.promisify(KW.stat);Bk.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(HW.default.string(t))return Buffer.byteLength(t);if(HW.default.buffer(t))return t.length;if(Xve.default(t))return UW.promisify(t.getLength.bind(t))();if(t instanceof KW.ReadStream){let{size:r}=await Zve(t.path);return r===0?void 0:r}}});var bk=I(Qk=>{"use strict";Object.defineProperty(Qk,"__esModule",{value:!0});function $ve(t,e,r){let i={};for(let n of r)i[n]=(...s)=>{e.emit(n,...s)},t.on(n,i[n]);return()=>{for(let n of r)t.off(n,i[n])}}Qk.default=$ve});var jW=I(vk=>{"use strict";Object.defineProperty(vk,"__esModule",{value:!0});vk.default=()=>{let t=[];return{once(e,r,i){e.once(r,i),t.push({origin:e,event:r,fn:i})},unhandleAll(){for(let e of t){let{origin:r,event:i,fn:n}=e;r.removeListener(i,n)}t.length=0}}}});var qW=I(Bp=>{"use strict";Object.defineProperty(Bp,"__esModule",{value:!0});Bp.TimeoutError=void 0;var eSe=require("net"),tSe=jW(),YW=Symbol("reentry"),rSe=()=>{},Sk=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`);this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};Bp.TimeoutError=Sk;Bp.default=(t,e,r)=>{if(YW in t)return rSe;t[YW]=!0;let i=[],{once:n,unhandleAll:s}=tSe.default(),o=(g,f,h)=>{var p;let d=setTimeout(f,g,g,h);(p=d.unref)===null||p===void 0||p.call(d);let m=()=>{clearTimeout(d)};return i.push(m),m},{host:a,hostname:l}=r,c=(g,f)=>{t.destroy(new Sk(g,f))},u=()=>{for(let g of i)g();s()};if(t.once("error",g=>{if(u(),t.listenerCount("error")===0)throw g}),t.once("close",u),n(t,"response",g=>{n(g,"end",u)}),typeof e.request!="undefined"&&o(e.request,c,"request"),typeof e.socket!="undefined"){let g=()=>{c(e.socket,"socket")};t.setTimeout(e.socket,g),i.push(()=>{t.removeListener("timeout",g)})}return n(t,"socket",g=>{var f;let{socketPath:h}=t;if(g.connecting){let p=Boolean(h!=null?h:eSe.isIP((f=l!=null?l:a)!==null&&f!==void 0?f:"")!==0);if(typeof e.lookup!="undefined"&&!p&&typeof g.address().address=="undefined"){let d=o(e.lookup,c,"lookup");n(g,"lookup",d)}if(typeof e.connect!="undefined"){let d=()=>o(e.connect,c,"connect");p?n(g,"connect",d()):n(g,"lookup",m=>{m===null&&n(g,"connect",d())})}typeof e.secureConnect!="undefined"&&r.protocol==="https:"&&n(g,"connect",()=>{let d=o(e.secureConnect,c,"secureConnect");n(g,"secureConnect",d)})}if(typeof e.send!="undefined"){let p=()=>o(e.send,c,"send");g.connecting?n(g,"connect",()=>{n(t,"upload-complete",p())}):n(t,"upload-complete",p())}}),typeof e.response!="undefined"&&n(t,"upload-complete",()=>{let g=o(e.response,c,"response");n(t,"response",g)}),u}});var WW=I(xk=>{"use strict";Object.defineProperty(xk,"__esModule",{value:!0});var JW=Ca();xk.default=t=>{t=t;let e={protocol:t.protocol,hostname:JW.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return JW.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var zW=I(kk=>{"use strict";Object.defineProperty(kk,"__esModule",{value:!0});var iSe=require("url"),nSe=["protocol","host","hostname","port","pathname","search"];kk.default=(t,e)=>{var r,i;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(i=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&i!==void 0?i:""}`}let n=new iSe.URL(t);if(e.path){let s=e.path.indexOf("?");s===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,s),e.search=e.path.slice(s+1)),delete e.path}for(let s of nSe)e[s]&&(n[s]=e[s].toString());return n}});var _W=I(Pk=>{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});var VW=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};Pk.default=VW});var Rk=I(Dk=>{"use strict";Object.defineProperty(Dk,"__esModule",{value:!0});var sSe=async t=>{let e=[],r=0;for await(let i of t)e.push(i),r+=Buffer.byteLength(i);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};Dk.default=sSe});var ZW=I(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});ql.dnsLookupIpVersionToFamily=ql.isDnsLookupIpVersion=void 0;var XW={auto:0,ipv4:4,ipv6:6};ql.isDnsLookupIpVersion=t=>t in XW;ql.dnsLookupIpVersionToFamily=t=>{if(ql.isDnsLookupIpVersion(t))return XW[t];throw new Error("Invalid DNS lookup IP version")}});var Fk=I(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.isResponseOk=void 0;Ky.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var e8=I(Nk=>{"use strict";Object.defineProperty(Nk,"__esModule",{value:!0});var $W=new Set;Nk.default=t=>{$W.has(t)||($W.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var t8=I(Lk=>{"use strict";Object.defineProperty(Lk,"__esModule",{value:!0});var ar=Ca(),oSe=(t,e)=>{if(ar.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ar.assert.any([ar.default.string,ar.default.undefined],t.encoding),ar.assert.any([ar.default.boolean,ar.default.undefined],t.resolveBodyOnly),ar.assert.any([ar.default.boolean,ar.default.undefined],t.methodRewriting),ar.assert.any([ar.default.boolean,ar.default.undefined],t.isStream),ar.assert.any([ar.default.string,ar.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry=P({},e.retry):t.retry={calculateDelay:i=>i.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ar.default.object(r)?(t.retry=P(P({},t.retry),r),t.retry.methods=[...new Set(t.retry.methods.map(i=>i.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ar.default.number(r)&&(t.retry.limit=r),ar.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ar.default.number))),ar.default.object(t.pagination)){e&&(t.pagination=P(P({},e.pagination),t.pagination));let{pagination:i}=t;if(!ar.default.function_(i.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ar.default.function_(i.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ar.default.function_(i.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ar.default.function_(i.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};Lk.default=oSe});var r8=I(Qp=>{"use strict";Object.defineProperty(Qp,"__esModule",{value:!0});Qp.retryAfterStatusCodes=void 0;Qp.retryAfterStatusCodes=new Set([413,429,503]);var aSe=({attemptCount:t,retryOptions:e,error:r,retryAfter:i})=>{if(t>e.limit)return 0;let n=e.methods.includes(r.options.method),s=e.errorCodes.includes(r.code),o=r.response&&e.statusCodes.includes(r.response.statusCode);if(!n||!s&&!o)return 0;if(r.response){if(i)return e.maxRetryAfter===void 0||i>e.maxRetryAfter?0:i;if(r.response.statusCode===413)return 0}let a=Math.random()*100;return 2**(t-1)*1e3+a};Qp.default=aSe});var vp=I(Rt=>{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.UnsupportedProtocolError=Rt.ReadError=Rt.TimeoutError=Rt.UploadError=Rt.CacheError=Rt.HTTPError=Rt.MaxRedirectsError=Rt.RequestError=Rt.setNonEnumerableProperties=Rt.knownHookEvents=Rt.withoutBody=Rt.kIsNormalizedAlready=void 0;var i8=require("util"),n8=require("stream"),ASe=require("fs"),dA=require("url"),s8=require("http"),Tk=require("http"),lSe=require("https"),cSe=h3(),uSe=y3(),o8=tW(),gSe=sW(),fSe=MW(),hSe=Ly(),ce=Ca(),pSe=GW(),a8=wk(),dSe=bk(),A8=qW(),CSe=WW(),l8=zW(),mSe=_W(),ISe=Rk(),c8=ZW(),ESe=Fk(),CA=e8(),ySe=t8(),wSe=r8(),Mk,Ii=Symbol("request"),Uy=Symbol("response"),Ju=Symbol("responseSize"),Wu=Symbol("downloadedSize"),zu=Symbol("bodySize"),Vu=Symbol("uploadedSize"),Hy=Symbol("serverResponsesPiped"),u8=Symbol("unproxyEvents"),g8=Symbol("isFromCache"),Ok=Symbol("cancelTimeouts"),f8=Symbol("startedReading"),_u=Symbol("stopReading"),Gy=Symbol("triggerRead"),mA=Symbol("body"),bp=Symbol("jobs"),h8=Symbol("originalResponse"),p8=Symbol("retryTimeout");Rt.kIsNormalizedAlready=Symbol("isNormalizedAlready");var BSe=ce.default.string(process.versions.brotli);Rt.withoutBody=new Set(["GET","HEAD"]);Rt.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function QSe(t){for(let e in t){let r=t[e];if(!ce.default.string(r)&&!ce.default.number(r)&&!ce.default.boolean(r)&&!ce.default.null_(r)&&!ce.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function bSe(t){return ce.default.object(t)&&!("statusCode"in t)}var Kk=new mSe.default,vSe=async t=>new Promise((e,r)=>{let i=n=>{r(n)};t.pending||e(),t.once("error",i),t.once("ready",()=>{t.off("error",i),e()})}),SSe=new Set([300,301,302,303,304,307,308]),xSe=["context","body","json","form"];Rt.setNonEnumerableProperties=(t,e)=>{let r={};for(let i of t)if(!!i)for(let n of xSe)n in i&&(r[n]={writable:!0,configurable:!0,enumerable:!1,value:i[n]});Object.defineProperties(e,r)};var _r=class extends Error{constructor(e,r,i){var n;super(e);if(Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,i instanceof Uk?(Object.defineProperty(this,"request",{enumerable:!1,value:i}),Object.defineProperty(this,"response",{enumerable:!1,value:i[Uy]}),Object.defineProperty(this,"options",{enumerable:!1,value:i.options})):Object.defineProperty(this,"options",{enumerable:!1,value:i}),this.timings=(n=this.request)===null||n===void 0?void 0:n.timings,ce.default.string(r.stack)&&ce.default.string(this.stack)){let s=this.stack.indexOf(this.message)+this.message.length,o=this.stack.slice(s).split(` -`).reverse(),a=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` -`).reverse();for(;a.length!==0&&a[0]===o[0];)o.shift();this.stack=`${this.stack.slice(0,s)}${o.reverse().join(` -`)}${a.reverse().join(` -`)}`}}};Rt.RequestError=_r;var Hk=class extends _r{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e);this.name="MaxRedirectsError"}};Rt.MaxRedirectsError=Hk;var Gk=class extends _r{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request);this.name="HTTPError"}};Rt.HTTPError=Gk;var jk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="CacheError"}};Rt.CacheError=jk;var Yk=class extends _r{constructor(e,r){super(e.message,e,r);this.name="UploadError"}};Rt.UploadError=Yk;var qk=class extends _r{constructor(e,r,i){super(e.message,e,i);this.name="TimeoutError",this.event=e.event,this.timings=r}};Rt.TimeoutError=qk;var jy=class extends _r{constructor(e,r){super(e.message,e,r);this.name="ReadError"}};Rt.ReadError=jy;var Jk=class extends _r{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e);this.name="UnsupportedProtocolError"}};Rt.UnsupportedProtocolError=Jk;var kSe=["socket","connect","continue","information","upgrade","timeout"],Uk=class extends n8.Duplex{constructor(e,r={},i){super({autoDestroy:!1,highWaterMark:0});this[Wu]=0,this[Vu]=0,this.requestInitialized=!1,this[Hy]=new Set,this.redirects=[],this[_u]=!1,this[Gy]=!1,this[bp]=[],this.retryCount=0,this._progressCallbacks=[];let n=()=>this._unlockWrite(),s=()=>this._lockWrite();this.on("pipe",c=>{c.prependListener("data",n),c.on("data",s),c.prependListener("end",n),c.on("end",s)}),this.on("unpipe",c=>{c.off("data",n),c.off("data",s),c.off("end",n),c.off("end",s)}),this.on("pipe",c=>{c instanceof Tk.IncomingMessage&&(this.options.headers=P(P({},c.headers),this.options.headers))});let{json:o,body:a,form:l}=r;if((o||a||l)&&this._lockWrite(),Rt.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,i)}catch(c){ce.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(c);return}(async()=>{var c;try{this.options.body instanceof ASe.ReadStream&&await vSe(this.options.body);let{url:u}=this.options;if(!u)throw new TypeError("Missing `url` property");if(this.requestUrl=u.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(c=this[Ii])===null||c===void 0||c.destroy();return}for(let g of this[bp])g();this[bp].length=0,this.requestInitialized=!0}catch(u){if(u instanceof _r){this._beforeError(u);return}this.destroyed||this.destroy(u)}})()}static normalizeArguments(e,r,i){var n,s,o,a,l;let c=r;if(ce.default.object(e)&&!ce.default.urlInstance(e))r=P(P(P({},i),e),r);else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r=P(P({},i),r),e!==void 0&&(r.url=e),ce.default.urlInstance(r.url)&&(r.url=new dA.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),ce.assert.any([ce.default.string,ce.default.undefined],r.method),ce.assert.any([ce.default.object,ce.default.undefined],r.headers),ce.assert.any([ce.default.string,ce.default.urlInstance,ce.default.undefined],r.prefixUrl),ce.assert.any([ce.default.object,ce.default.undefined],r.cookieJar),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.searchParams),ce.assert.any([ce.default.object,ce.default.string,ce.default.undefined],r.cache),ce.assert.any([ce.default.object,ce.default.number,ce.default.undefined],r.timeout),ce.assert.any([ce.default.object,ce.default.undefined],r.context),ce.assert.any([ce.default.object,ce.default.undefined],r.hooks),ce.assert.any([ce.default.boolean,ce.default.undefined],r.decompress),ce.assert.any([ce.default.boolean,ce.default.undefined],r.ignoreInvalidCookies),ce.assert.any([ce.default.boolean,ce.default.undefined],r.followRedirect),ce.assert.any([ce.default.number,ce.default.undefined],r.maxRedirects),ce.assert.any([ce.default.boolean,ce.default.undefined],r.throwHttpErrors),ce.assert.any([ce.default.boolean,ce.default.undefined],r.http2),ce.assert.any([ce.default.boolean,ce.default.undefined],r.allowGetBody),ce.assert.any([ce.default.string,ce.default.undefined],r.localAddress),ce.assert.any([c8.isDnsLookupIpVersion,ce.default.undefined],r.dnsLookupIpVersion),ce.assert.any([ce.default.object,ce.default.undefined],r.https),ce.assert.any([ce.default.boolean,ce.default.undefined],r.rejectUnauthorized),r.https&&(ce.assert.any([ce.default.boolean,ce.default.undefined],r.https.rejectUnauthorized),ce.assert.any([ce.default.function_,ce.default.undefined],r.https.checkServerIdentity),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificateAuthority),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.key),ce.assert.any([ce.default.string,ce.default.object,ce.default.array,ce.default.undefined],r.https.certificate),ce.assert.any([ce.default.string,ce.default.undefined],r.https.passphrase),ce.assert.any([ce.default.string,ce.default.buffer,ce.default.array,ce.default.undefined],r.https.pfx)),ce.assert.any([ce.default.object,ce.default.undefined],r.cacheOptions),ce.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(i==null?void 0:i.headers)?r.headers=P({},r.headers):r.headers=hSe(P(P({},i==null?void 0:i.headers),r.headers)),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(i==null?void 0:i.searchParams)){let h;if(ce.default.string(r.searchParams)||r.searchParams instanceof dA.URLSearchParams)h=new dA.URLSearchParams(r.searchParams);else{QSe(r.searchParams),h=new dA.URLSearchParams;for(let p in r.searchParams){let d=r.searchParams[p];d===null?h.append(p,""):d!==void 0&&h.append(p,d)}}(n=i==null?void 0:i.searchParams)===null||n===void 0||n.forEach((p,d)=>{h.has(d)||h.append(d,p)}),r.searchParams=h}if(r.username=(s=r.username)!==null&&s!==void 0?s:"",r.password=(o=r.password)!==null&&o!==void 0?o:"",ce.default.undefined(r.prefixUrl)?r.prefixUrl=(a=i==null?void 0:i.prefixUrl)!==null&&a!==void 0?a:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),ce.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=l8.default(r.prefixUrl+r.url,r)}else(ce.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=l8.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:h}=r;Object.defineProperty(r,"prefixUrl",{set:d=>{let m=r.url;if(!m.href.startsWith(d))throw new Error(`Cannot change \`prefixUrl\` from ${h} to ${d}: ${m.href}`);r.url=new dA.URL(d+m.href.slice(h.length)),h=d},get:()=>h});let{protocol:p}=r.url;if(p==="unix:"&&(p="http:",r.url=new dA.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),p!=="http:"&&p!=="https:")throw new Jk(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:u}=r;if(u){let{setCookie:h,getCookieString:p}=u;ce.assert.function_(h),ce.assert.function_(p),h.length===4&&p.length===0&&(h=i8.promisify(h.bind(r.cookieJar)),p=i8.promisify(p.bind(r.cookieJar)),r.cookieJar={setCookie:h,getCookieString:p})}let{cache:g}=r;if(g&&(Kk.has(g)||Kk.set(g,new o8((h,p)=>{let d=h[Ii](h,p);return ce.default.promise(d)&&(d.once=(m,E)=>{if(m==="error")d.catch(E);else if(m==="abort")(async()=>{try{(await d).once("abort",E)}catch(B){}})();else throw new Error(`Unknown HTTP2 promise event: ${m}`);return d}),d},g))),r.cacheOptions=P({},r.cacheOptions),r.dnsCache===!0)Mk||(Mk=new uSe.default),r.dnsCache=Mk;else if(!ce.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${ce.default(r.dnsCache)}`);ce.default.number(r.timeout)?r.timeout={request:r.timeout}:i&&r.timeout!==i.timeout?r.timeout=P(P({},i.timeout),r.timeout):r.timeout=P({},r.timeout),r.context||(r.context={});let f=r.hooks===(i==null?void 0:i.hooks);r.hooks=P({},r.hooks);for(let h of Rt.knownHookEvents)if(h in r.hooks)if(ce.default.array(r.hooks[h]))r.hooks[h]=[...r.hooks[h]];else throw new TypeError(`Parameter \`${h}\` must be an Array, got ${ce.default(r.hooks[h])}`);else r.hooks[h]=[];if(i&&!f)for(let h of Rt.knownHookEvents)i.hooks[h].length>0&&(r.hooks[h]=[...i.hooks[h],...r.hooks[h]]);if("family"in r&&CA.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(i==null?void 0:i.https)&&(r.https=P(P({},i.https),r.https)),"rejectUnauthorized"in r&&CA.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&CA.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&CA.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&CA.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&CA.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&CA.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&CA.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let h in r.agent)if(h!=="http"&&h!=="https"&&h!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${h}\``)}return r.maxRedirects=(l=r.maxRedirects)!==null&&l!==void 0?l:0,Rt.setNonEnumerableProperties([i,c],r),ySe.default(r,i)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,i=!ce.default.undefined(e.form),n=!ce.default.undefined(e.json),s=!ce.default.undefined(e.body),o=i||n||s,a=Rt.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=a,o){if(a)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,i,n].filter(l=>l).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n8.Readable)&&!ce.default.string(e.body)&&!ce.default.buffer(e.body)&&!a8.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(i&&!ce.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let l=!ce.default.string(r["content-type"]);s?(a8.default(e.body)&&l&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[mA]=e.body):i?(l&&(r["content-type"]="application/x-www-form-urlencoded"),this[mA]=new dA.URLSearchParams(e.form).toString()):(l&&(r["content-type"]="application/json"),this[mA]=e.stringifyJson(e.json));let c=await pSe.default(this[mA],e.headers);ce.default.undefined(r["content-length"])&&ce.default.undefined(r["transfer-encoding"])&&!a&&!ce.default.undefined(c)&&(r["content-length"]=String(c))}}else a?this._lockWrite():this._unlockWrite();this[zu]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:i}=r;this[h8]=e,r.decompress&&(e=gSe(e));let n=e.statusCode,s=e;s.statusMessage=s.statusMessage?s.statusMessage:s8.STATUS_CODES[n],s.url=r.url.toString(),s.requestUrl=this.requestUrl,s.redirectUrls=this.redirects,s.request=this,s.isFromCache=e.fromCache||!1,s.ip=this.ip,s.retryCount=this.retryCount,this[g8]=s.isFromCache,this[Ju]=Number(e.headers["content-length"])||void 0,this[Uy]=e,e.once("end",()=>{this[Ju]=this[Wu],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",a=>{e.destroy(),this._beforeError(new jy(a,this))}),e.once("aborted",()=>{this._beforeError(new jy({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let o=e.headers["set-cookie"];if(ce.default.object(r.cookieJar)&&o){let a=o.map(async l=>r.cookieJar.setCookie(l,i.toString()));r.ignoreInvalidCookies&&(a=a.map(async l=>l.catch(()=>{})));try{await Promise.all(a)}catch(l){this._beforeError(l);return}}if(r.followRedirect&&e.headers.location&&SSe.has(n)){if(e.resume(),this[Ii]&&(this[Ok](),delete this[Ii],this[u8]()),(n===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[mA]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new Hk(this));return}try{let l=Buffer.from(e.headers.location,"binary").toString(),c=new dA.URL(l,i),u=c.toString();decodeURI(u),c.hostname!==i.hostname||c.port!==i.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(c.username=r.username,c.password=r.password),this.redirects.push(u),r.url=c;for(let g of r.hooks.beforeRedirect)await g(r,s);this.emit("redirect",s,r),await this._makeRequest()}catch(l){this._beforeError(l);return}return}if(r.isStream&&r.throwHttpErrors&&!ESe.isResponseOk(s)){this._beforeError(new Gk(s));return}e.on("readable",()=>{this[Gy]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let a of this[Hy])if(!a.headersSent){for(let l in e.headers){let c=r.decompress?l!=="content-encoding":!0,u=e.headers[l];c&&a.setHeader(l,u)}a.statusCode=n}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:i,url:n}=r;cSe.default(e),this[Ok]=A8.default(e,i,n);let s=r.cache?"cacheableResponse":"response";e.once(s,l=>{this._onResponse(l)}),e.once("error",l=>{var c;e.destroy(),(c=e.res)===null||c===void 0||c.removeAllListeners("end"),l=l instanceof A8.TimeoutError?new qk(l,this.timings,this):new _r(l.message,l,this),this._beforeError(l)}),this[u8]=dSe.default(e,this,kSe),this[Ii]=e,this.emit("uploadProgress",this.uploadProgress);let o=this[mA],a=this.redirects.length===0?this:e;ce.default.nodeStream(o)?(o.pipe(a),o.once("error",l=>{this._beforeError(new Yk(l,this))})):(this._unlockWrite(),ce.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(a.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),a.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((i,n)=>{Object.assign(r,CSe.default(e)),delete r.url;let s,o=Kk.get(r.cache)(r,async a=>{a._readableState.autoDestroy=!1,s&&(await s).emit("cacheableResponse",a),i(a)});r.url=e,o.once("error",n),o.once("request",async a=>{s=a,i(s)})})}async _makeRequest(){var e,r,i,n,s;let{options:o}=this,{headers:a}=o;for(let E in a)if(ce.default.undefined(a[E]))delete a[E];else if(ce.default.null_(a[E]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${E}\` header`);if(o.decompress&&ce.default.undefined(a["accept-encoding"])&&(a["accept-encoding"]=BSe?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){let E=await o.cookieJar.getCookieString(o.url.toString());ce.default.nonEmptyString(E)&&(o.headers.cookie=E)}for(let E of o.hooks.beforeRequest){let B=await E(o);if(!ce.default.undefined(B)){o.request=()=>B;break}}o.body&&this[mA]!==o.body&&(this[mA]=o.body);let{agent:l,request:c,timeout:u,url:g}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),g.hostname==="unix"){let E=/(?.+?):(?.+)/.exec(`${g.pathname}${g.search}`);if(E==null?void 0:E.groups){let{socketPath:B,path:b}=E.groups;Object.assign(o,{socketPath:B,path:b,host:""})}}let f=g.protocol==="https:",h;o.http2?h=fSe.auto:h=f?lSe.request:s8.request;let p=(e=o.request)!==null&&e!==void 0?e:h,d=o.cache?this._createCacheableRequest:p;l&&!o.http2&&(o.agent=l[f?"https":"http"]),o[Ii]=p,delete o.request,delete o.timeout;let m=o;if(m.shared=(r=o.cacheOptions)===null||r===void 0?void 0:r.shared,m.cacheHeuristic=(i=o.cacheOptions)===null||i===void 0?void 0:i.cacheHeuristic,m.immutableMinTimeToLive=(n=o.cacheOptions)===null||n===void 0?void 0:n.immutableMinTimeToLive,m.ignoreCargoCult=(s=o.cacheOptions)===null||s===void 0?void 0:s.ignoreCargoCult,o.dnsLookupIpVersion!==void 0)try{m.family=c8.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(E){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(m.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(m.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(m.ca=o.https.certificateAuthority),o.https.certificate&&(m.cert=o.https.certificate),o.https.key&&(m.key=o.https.key),o.https.passphrase&&(m.passphrase=o.https.passphrase),o.https.pfx&&(m.pfx=o.https.pfx));try{let E=await d(g,m);ce.default.undefined(E)&&(E=h(g,m)),o.request=c,o.timeout=u,o.agent=l,o.https&&("rejectUnauthorized"in o.https&&delete m.rejectUnauthorized,o.https.checkServerIdentity&&delete m.checkServerIdentity,o.https.certificateAuthority&&delete m.ca,o.https.certificate&&delete m.cert,o.https.key&&delete m.key,o.https.passphrase&&delete m.passphrase,o.https.pfx&&delete m.pfx),bSe(E)?this._onRequest(E):this.writable?(this.once("finish",()=>{this._onResponse(E)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(E)}catch(E){throw E instanceof o8.CacheError?new jk(E,this):new _r(E.message,E,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new _r(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[_u])return;let{options:r}=this,i=this.retryCount+1;this[_u]=!0,e instanceof _r||(e=new _r(e.message,e,this));let n=e,{response:s}=n;(async()=>{if(s&&!s.body){s.setEncoding(this._readableState.encoding);try{s.rawBody=await ISe.default(s),s.body=s.rawBody.toString()}catch(o){}}if(this.listenerCount("retry")!==0){let o;try{let a;s&&"retry-after"in s.headers&&(a=Number(s.headers["retry-after"]),Number.isNaN(a)?(a=Date.parse(s.headers["retry-after"])-Date.now(),a<=0&&(a=1)):a*=1e3),o=await r.retry.calculateDelay({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:wSe.default({attemptCount:i,retryOptions:r.retry,error:n,retryAfter:a,computedValue:0})})}catch(a){this._error(new _r(a.message,a,this));return}if(o){let a=async()=>{try{for(let l of this.options.hooks.beforeRetry)await l(this.options,n,i)}catch(l){this._error(new _r(l.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",i,e))};this[p8]=setTimeout(a,o);return}}this._error(n)})()}_read(){this[Gy]=!0;let e=this[Uy];if(e&&!this[_u]){e.readableLength&&(this[Gy]=!1);let r;for(;(r=e.read())!==null;){this[Wu]+=r.length,this[f8]=!0;let i=this.downloadProgress;i.percent<1&&this.emit("downloadProgress",i),this.push(r)}}}_write(e,r,i){let n=()=>{this._writeRequest(e,r,i)};this.requestInitialized?n():this[bp].push(n)}_writeRequest(e,r,i){this[Ii].destroyed||(this._progressCallbacks.push(()=>{this[Vu]+=Buffer.byteLength(e,r);let n=this.uploadProgress;n.percent<1&&this.emit("uploadProgress",n)}),this[Ii].write(e,r,n=>{!n&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),i(n)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(Ii in this)){e();return}if(this[Ii].destroyed){e();return}this[Ii].end(i=>{i||(this[zu]=this[Vu],this.emit("uploadProgress",this.uploadProgress),this[Ii].emit("upload-complete")),e(i)})};this.requestInitialized?r():this[bp].push(r)}_destroy(e,r){var i;this[_u]=!0,clearTimeout(this[p8]),Ii in this&&(this[Ok](),((i=this[Uy])===null||i===void 0?void 0:i.complete)||this[Ii].destroy()),e!==null&&!ce.default.undefined(e)&&!(e instanceof _r)&&(e=new _r(e.message,e,this)),r(e)}get _isAboutToError(){return this[_u]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,i;return((r=(e=this[Ii])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!((i=this[h8])===null||i===void 0?void 0:i.complete)}get socket(){var e,r;return(r=(e=this[Ii])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[Ju]?e=this[Wu]/this[Ju]:this[Ju]===this[Wu]?e=1:e=0,{percent:e,transferred:this[Wu],total:this[Ju]}}get uploadProgress(){let e;return this[zu]?e=this[Vu]/this[zu]:this[zu]===this[Vu]?e=1:e=0,{percent:e,transferred:this[Vu],total:this[zu]}}get timings(){var e;return(e=this[Ii])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[g8]}pipe(e,r){if(this[f8])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof Tk.ServerResponse&&this[Hy].add(e),super.pipe(e,r)}unpipe(e){return e instanceof Tk.ServerResponse&&this[Hy].delete(e),super.unpipe(e),this}};Rt.default=Uk});var Sp=I(Ms=>{"use strict";var PSe=Ms&&Ms.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),DSe=Ms&&Ms.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&PSe(e,t,r)};Object.defineProperty(Ms,"__esModule",{value:!0});Ms.CancelError=Ms.ParseError=void 0;var d8=vp(),C8=class extends d8.RequestError{constructor(e,r){let{options:i}=r.request;super(`${e.message} in "${i.url.toString()}"`,e,r.request);this.name="ParseError"}};Ms.ParseError=C8;var m8=class extends d8.RequestError{constructor(e){super("Promise was canceled",{},e);this.name="CancelError"}get isCanceled(){return!0}};Ms.CancelError=m8;DSe(vp(),Ms)});var E8=I(Wk=>{"use strict";Object.defineProperty(Wk,"__esModule",{value:!0});var I8=Sp(),RSe=(t,e,r,i)=>{let{rawBody:n}=t;try{if(e==="text")return n.toString(i);if(e==="json")return n.length===0?"":r(n.toString());if(e==="buffer")return n;throw new I8.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(s){throw new I8.ParseError(s,t)}};Wk.default=RSe});var zk=I(IA=>{"use strict";var FSe=IA&&IA.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),NSe=IA&&IA.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&FSe(e,t,r)};Object.defineProperty(IA,"__esModule",{value:!0});var LSe=require("events"),TSe=Ca(),MSe=g3(),Yy=Sp(),y8=E8(),w8=vp(),OSe=bk(),KSe=Rk(),B8=Fk(),USe=["request","response","redirect","uploadProgress","downloadProgress"];function Q8(t){let e,r,i=new LSe.EventEmitter,n=new MSe((o,a,l)=>{let c=u=>{let g=new w8.default(void 0,t);g.retryCount=u,g._noPipe=!0,l(()=>g.destroy()),l.shouldReject=!1,l(()=>a(new Yy.CancelError(g))),e=g,g.once("response",async p=>{var d;if(p.retryCount=u,p.request.aborted)return;let m;try{m=await KSe.default(g),p.rawBody=m}catch(R){return}if(g._isAboutToError)return;let E=((d=p.headers["content-encoding"])!==null&&d!==void 0?d:"").toLowerCase(),B=["gzip","deflate","br"].includes(E),{options:b}=g;if(B&&!b.decompress)p.body=m;else try{p.body=y8.default(p,b.responseType,b.parseJson,b.encoding)}catch(R){if(p.body=m.toString(),B8.isResponseOk(p)){g._beforeError(R);return}}try{for(let[R,H]of b.hooks.afterResponse.entries())p=await H(p,async L=>{let K=w8.default.normalizeArguments(void 0,_(P({},L),{retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1}),b);K.hooks.afterResponse=K.hooks.afterResponse.slice(0,R);for(let ne of K.hooks.beforeRetry)await ne(K);let J=Q8(K);return l(()=>{J.catch(()=>{}),J.cancel()}),J})}catch(R){g._beforeError(new Yy.RequestError(R.message,R,g));return}if(!B8.isResponseOk(p)){g._beforeError(new Yy.HTTPError(p));return}r=p,o(g.options.resolveBodyOnly?p.body:p)});let f=p=>{if(n.isCanceled)return;let{options:d}=g;if(p instanceof Yy.HTTPError&&!d.throwHttpErrors){let{response:m}=p;o(g.options.resolveBodyOnly?m.body:m);return}a(p)};g.once("error",f);let h=g.options.body;g.once("retry",(p,d)=>{var m,E;if(h===((m=d.request)===null||m===void 0?void 0:m.options.body)&&TSe.default.nodeStream((E=d.request)===null||E===void 0?void 0:E.options.body)){f(d);return}c(p)}),OSe.default(g,i,USe)};c(0)});n.on=(o,a)=>(i.on(o,a),n);let s=o=>{let a=(async()=>{await n;let{options:l}=r.request;return y8.default(r,o,l.parseJson,l.encoding)})();return Object.defineProperties(a,Object.getOwnPropertyDescriptors(n)),a};return n.json=()=>{let{headers:o}=e.options;return!e.writableFinished&&o.accept===void 0&&(o.accept="application/json"),s("json")},n.buffer=()=>s("buffer"),n.text=()=>s("text"),n}IA.default=Q8;NSe(Sp(),IA)});var b8=I(Vk=>{"use strict";Object.defineProperty(Vk,"__esModule",{value:!0});var HSe=Sp();function GSe(t,...e){let r=(async()=>{if(t instanceof HSe.RequestError)try{for(let n of e)if(n)for(let s of n)t=await s(t)}catch(n){t=n}throw t})(),i=()=>r;return r.json=i,r.text=i,r.buffer=i,r.on=i,r}Vk.default=GSe});var x8=I(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});var v8=Ca();function S8(t){for(let e of Object.values(t))(v8.default.plainObject(e)||v8.default.array(e))&&S8(e);return Object.freeze(t)}_k.default=S8});var P8=I(k8=>{"use strict";Object.defineProperty(k8,"__esModule",{value:!0})});var Xk=I(ss=>{"use strict";var jSe=ss&&ss.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),YSe=ss&&ss.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&jSe(e,t,r)};Object.defineProperty(ss,"__esModule",{value:!0});ss.defaultHandler=void 0;var D8=Ca(),os=zk(),qSe=b8(),qy=vp(),JSe=x8(),WSe={RequestError:os.RequestError,CacheError:os.CacheError,ReadError:os.ReadError,HTTPError:os.HTTPError,MaxRedirectsError:os.MaxRedirectsError,TimeoutError:os.TimeoutError,ParseError:os.ParseError,CancelError:os.CancelError,UnsupportedProtocolError:os.UnsupportedProtocolError,UploadError:os.UploadError},zSe=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:Jy}=qy.default,R8=(...t)=>{let e;for(let r of t)e=Jy(void 0,r,e);return e},VSe=t=>t.isStream?new qy.default(void 0,t):os.default(t),_Se=t=>"defaults"in t&&"options"in t.defaults,XSe=["get","post","put","patch","head","delete"];ss.defaultHandler=(t,e)=>e(t);var F8=(t,e)=>{if(t)for(let r of t)r(e)},N8=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(i=>(n,s)=>{let o,a=i(n,l=>(o=s(l),o));if(a!==o&&!n.isStream&&o){let l=a,{then:c,catch:u,finally:g}=l;Object.setPrototypeOf(l,Object.getPrototypeOf(o)),Object.defineProperties(l,Object.getOwnPropertyDescriptors(o)),l.then=c,l.catch=u,l.finally=g}return a});let e=(i,n={},s)=>{var o,a;let l=0,c=u=>t.handlers[l++](u,l===t.handlers.length?VSe:c);if(D8.default.plainObject(i)){let u=P(P({},i),n);qy.setNonEnumerableProperties([i,n],u),n=u,i=void 0}try{let u;try{F8(t.options.hooks.init,n),F8((o=n.hooks)===null||o===void 0?void 0:o.init,n)}catch(f){u=f}let g=Jy(i,n,s!=null?s:t.options);if(g[qy.kIsNormalizedAlready]=!0,u)throw new os.RequestError(u.message,u,g);return c(g)}catch(u){if(n.isStream)throw u;return qSe.default(u,t.options.hooks.beforeError,(a=n.hooks)===null||a===void 0?void 0:a.beforeError)}};e.extend=(...i)=>{let n=[t.options],s=[...t._rawHandlers],o;for(let a of i)_Se(a)?(n.push(a.defaults.options),s.push(...a.defaults._rawHandlers),o=a.defaults.mutableDefaults):(n.push(a),"handlers"in a&&s.push(...a.handlers),o=a.mutableDefaults);return s=s.filter(a=>a!==ss.defaultHandler),s.length===0&&s.push(ss.defaultHandler),N8({options:R8(...n),handlers:s,mutableDefaults:Boolean(o)})};let r=async function*(i,n){let s=Jy(i,n,t.options);s.resolveBodyOnly=!1;let o=s.pagination;if(!D8.default.object(o))throw new TypeError("`options.pagination` must be implemented");let a=[],{countLimit:l}=o,c=0;for(;c{let s=[];for await(let o of r(i,n))s.push(o);return s},e.paginate.each=r,e.stream=(i,n)=>e(i,_(P({},n),{isStream:!0}));for(let i of XSe)e[i]=(n,s)=>e(n,_(P({},s),{method:i})),e.stream[i]=(n,s)=>e(n,_(P({},s),{method:i,isStream:!0}));return Object.assign(e,WSe),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:JSe.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=R8,e};ss.default=N8;YSe(P8(),ss)});var zy=I((Ia,Wy)=>{"use strict";var ZSe=Ia&&Ia.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),L8=Ia&&Ia.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ZSe(e,t,r)};Object.defineProperty(Ia,"__esModule",{value:!0});var $Se=require("url"),T8=Xk(),exe={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let i of e){let n=i.split(";");if(n[1].includes("next")){r=n[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new $Se.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:Infinity,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[T8.defaultHandler],mutableDefaults:!1},Zk=T8.default(exe);Ia.default=Zk;Wy.exports=Zk;Wy.exports.default=Zk;Wy.exports.__esModule=!0;L8(Xk(),Ia);L8(zk(),Ia)});var U8=I(Xu=>{"use strict";var fst=require("net"),txe=require("tls"),$k=require("http"),M8=require("https"),rxe=require("events"),hst=require("assert"),ixe=require("util");Xu.httpOverHttp=nxe;Xu.httpsOverHttp=sxe;Xu.httpOverHttps=oxe;Xu.httpsOverHttps=axe;function nxe(t){var e=new Ea(t);return e.request=$k.request,e}function sxe(t){var e=new Ea(t);return e.request=$k.request,e.createSocket=O8,e.defaultPort=443,e}function oxe(t){var e=new Ea(t);return e.request=M8.request,e}function axe(t){var e=new Ea(t);return e.request=M8.request,e.createSocket=O8,e.defaultPort=443,e}function Ea(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||$k.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(i,n,s,o){for(var a=K8(n,s,o),l=0,c=e.requests.length;l=this.maxSockets){s.requests.push(o);return}s.createSocket(o,function(a){a.on("free",l),a.on("close",c),a.on("agentRemove",c),e.onSocket(a);function l(){s.emit("free",a,o)}function c(u){s.removeSocket(a),a.removeListener("free",l),a.removeListener("close",c),a.removeListener("agentRemove",c)}})};Ea.prototype.createSocket=function(e,r){var i=this,n={};i.sockets.push(n);var s=eP({},i.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(s.localAddress=e.localAddress),s.proxyAuth&&(s.headers=s.headers||{},s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")),EA("making CONNECT request");var o=i.request(s);o.useChunkedEncodingByDefault=!1,o.once("response",a),o.once("upgrade",l),o.once("connect",c),o.once("error",u),o.end();function a(g){g.upgrade=!0}function l(g,f,h){process.nextTick(function(){c(g,f,h)})}function c(g,f,h){if(o.removeAllListeners(),f.removeAllListeners(),g.statusCode!==200){EA("tunneling socket could not be established, statusCode=%d",g.statusCode),f.destroy();var p=new Error("tunneling socket could not be established, statusCode="+g.statusCode);p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}if(h.length>0){EA("got illegal response body from proxy"),f.destroy();var p=new Error("got illegal response body from proxy");p.code="ECONNRESET",e.request.emit("error",p),i.removeSocket(n);return}return EA("tunneling connection has established"),i.sockets[i.sockets.indexOf(n)]=f,r(f)}function u(g){o.removeAllListeners(),EA(`tunneling socket could not be established, cause=%s -`,g.message,g.stack);var f=new Error("tunneling socket could not be established, cause="+g.message);f.code="ECONNRESET",e.request.emit("error",f),i.removeSocket(n)}};Ea.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var i=this.requests.shift();i&&this.createSocket(i,function(n){i.request.onSocket(n)})}};function O8(t,e){var r=this;Ea.prototype.createSocket.call(r,t,function(i){var n=t.request.getHeader("host"),s=eP({},r.options,{socket:i,servername:n?n.replace(/:.*$/,""):t.host}),o=txe.connect(0,s);r.sockets[r.sockets.indexOf(i)]=o,e(o)})}function K8(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function eP(t){for(var e=1,r=arguments.length;e{H8.exports=U8()});var bz=I((xot,sP)=>{var ez=Object.assign({},require("fs")),oe=typeof oe!="undefined"?oe:{},kp={},wA;for(wA in oe)oe.hasOwnProperty(wA)&&(kp[wA]=oe[wA]);var oP=[],tz="./this.program",rz=function(t,e){throw e},iz=!1,Wl=!0,Pp="";function dxe(t){return oe.locateFile?oe.locateFile(t,Pp):Pp+t}var Xy,aP,Zy,AP;Wl&&(iz?Pp=require("path").dirname(Pp)+"/":Pp=__dirname+"/",Xy=function(e,r){var i=sz(e);return i?r?i:i.toString():(Zy||(Zy=ez),AP||(AP=require("path")),e=AP.normalize(e),Zy.readFileSync(e,r?null:"utf8"))},aP=function(e){var r=Xy(e,!0);return r.buffer||(r=new Uint8Array(r)),nz(r.buffer),r},process.argv.length>1&&(tz=process.argv[1].replace(/\\/g,"/")),oP=process.argv.slice(2),typeof sP!="undefined"&&(sP.exports=oe),rz=function(t){process.exit(t)},oe.inspect=function(){return"[Emscripten Module object]"});var $y=oe.print||console.log.bind(console),Di=oe.printErr||console.warn.bind(console);for(wA in kp)kp.hasOwnProperty(wA)&&(oe[wA]=kp[wA]);kp=null;oe.arguments&&(oP=oe.arguments);oe.thisProgram&&(tz=oe.thisProgram);oe.quit&&(rz=oe.quit);var Cxe=16;function mxe(t,e){return e||(e=Cxe),Math.ceil(t/e)*e}var Ixe=0,Exe=function(t){Ixe=t},lP;oe.wasmBinary&&(lP=oe.wasmBinary);var Pst=oe.noExitRuntime||!0;typeof WebAssembly!="object"&&Gr("no native wasm support detected");function yxe(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return Zi[t>>0];case"i8":return Zi[t>>0];case"i16":return cP[t>>1];case"i32":return _e[t>>2];case"i64":return _e[t>>2];case"float":return oz[t>>2];case"double":return az[t>>3];default:Gr("invalid type for getValue: "+e)}return null}var ew,Az=!1,wxe;function nz(t,e){t||Gr("Assertion failed: "+e)}function lz(t){var e=oe["_"+t];return nz(e,"Cannot call unknown function "+t+", make sure it is exported"),e}function vxe(t,e,r,i,n){var s={string:function(h){var p=0;if(h!=null&&h!==0){var d=(h.length<<2)+1;p=gz(d),uz(h,p,d)}return p},array:function(h){var p=gz(h.length);return Bxe(h,p),p}};function o(h){return e==="string"?cz(h):e==="boolean"?Boolean(h):h}var a=lz(t),l=[],c=0;if(i)for(var u=0;u=i);)++n;if(n-e>16&&t.subarray&&fz)return fz.decode(t.subarray(e,n));for(var s="";e>10,56320|c&1023)}}return s}function cz(t,e){return t?Zu($u,t,e):""}function tw(t,e,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,o=0;o=55296&&a<=57343){var l=t.charCodeAt(++o);a=65536+((a&1023)<<10)|l&1023}if(a<=127){if(r>=s)break;e[r++]=a}else if(a<=2047){if(r+1>=s)break;e[r++]=192|a>>6,e[r++]=128|a&63}else if(a<=65535){if(r+2>=s)break;e[r++]=224|a>>12,e[r++]=128|a>>6&63,e[r++]=128|a&63}else{if(r+3>=s)break;e[r++]=240|a>>18,e[r++]=128|a>>12&63,e[r++]=128|a>>6&63,e[r++]=128|a&63}}return e[r]=0,r-n}function uz(t,e,r){return tw(t,$u,e,r)}function rw(t){for(var e=0,r=0;r=55296&&i<=57343&&(i=65536+((i&1023)<<10)|t.charCodeAt(++r)&1023),i<=127?++e:i<=2047?e+=2:i<=65535?e+=3:e+=4}return e}function uP(t){var e=rw(t)+1,r=hz(e);return r&&tw(t,Zi,r,e),r}function Bxe(t,e){Zi.set(t,e)}function xxe(t,e){return t%e>0&&(t+=e-t%e),t}var gP,Zi,$u,cP,kxe,_e,Pxe,oz,az;function pz(t){gP=t,oe.HEAP8=Zi=new Int8Array(t),oe.HEAP16=cP=new Int16Array(t),oe.HEAP32=_e=new Int32Array(t),oe.HEAPU8=$u=new Uint8Array(t),oe.HEAPU16=kxe=new Uint16Array(t),oe.HEAPU32=Pxe=new Uint32Array(t),oe.HEAPF32=oz=new Float32Array(t),oe.HEAPF64=az=new Float64Array(t)}var Dst=oe.INITIAL_MEMORY||16777216,fP,dz=[],Cz=[],mz=[],Dxe=!1;function Fxe(){if(oe.preRun)for(typeof oe.preRun=="function"&&(oe.preRun=[oe.preRun]);oe.preRun.length;)Rxe(oe.preRun.shift());hP(dz)}function Nxe(){Dxe=!0,!oe.noFSInit&&!y.init.initialized&&y.init(),BA.init(),hP(Cz)}function Txe(){if(oe.postRun)for(typeof oe.postRun=="function"&&(oe.postRun=[oe.postRun]);oe.postRun.length;)Lxe(oe.postRun.shift());hP(mz)}function Rxe(t){dz.unshift(t)}function Mxe(t){Cz.unshift(t)}function Lxe(t){mz.unshift(t)}var zl=0,pP=null,Dp=null;function Oxe(t){return t}function Iz(t){zl++,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl)}function dP(t){if(zl--,oe.monitorRunDependencies&&oe.monitorRunDependencies(zl),zl==0&&(pP!==null&&(clearInterval(pP),pP=null),Dp)){var e=Dp;Dp=null,e()}}oe.preloadedImages={};oe.preloadedAudios={};function Gr(t){oe.onAbort&&oe.onAbort(t),t+="",Di(t),Az=!0,wxe=1,t="abort("+t+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(t);throw e}var Ez="data:application/octet-stream;base64,";function yz(t){return t.startsWith(Ez)}var Rp="data:application/octet-stream;base64,AGFzbQEAAAABlAInYAF/AX9gA39/fwF/YAF/AGACf38Bf2ACf38AYAV/f39/fwF/YAR/f39/AX9gA39/fwBgBH9+f38Bf2AAAX9gBX9/f35/AX5gA39+fwF/YAF/AX5gAn9+AX9gBH9/fn8BfmADf35/AX5gA39/fgF/YAR/f35/AX9gBn9/f39/fwF/YAR/f39/AGADf39+AX5gAn5/AX9gA398fwBgBH9/f38BfmADf39/AX5gBn98f39/fwF/YAV/f35/fwF/YAV/fn9/fwF/YAV/f39/fwBgAn9+AGACf38BfmACf3wAYAh/fn5/f39+fwF/YAV/f39+fwBgAABgBX5+f35/AX5gAnx/AXxgAn9+AX5gBX9/f39/AX4CeRQBYQFhAAIBYQFiAAABYQFjAAMBYQFkAAYBYQFlAAEBYQFmAAABYQFnAAYBYQFoAAABYQFpAAMBYQFqAAMBYQFrAAMBYQFsAAMBYQFtAAABYQFuAAUBYQFvAAEBYQFwAAMBYQFxAAEBYQFyAAABYQFzAAEBYQF0AAADggKAAgcCAgQAAQECAgANBAQOBwICAhwLEw0AAA0dFAwMAAcCDBAeAgMCAwIAAgEABwgUBBUIBgADAAwABAgIAgEGBgABAB8XAQEDAhMCAwUFEQICIA8GAgMYAQgCAQAABwUBGAAaAxIBAAcEAyERCCIHAQsVAQMABQMDAwAFBAACIwYAAQEAGw0bFw0BBAALCwMDDAwAAwAHJAMBBAgaAQECBQMBAwMABwcHAgICAiURCwgICwEmCQkAAAAKAAIABQAGBgUFBQEDBgYGBRISBgQBAQEAAAIJBgABAA4AAQEPCQABBBkJCQkAAAADCgoBAQIQAAAAAgEDAwkEAQoABQ4AAAkEBQFwAR8fBQcBAYACgIACBgkBfwFB0KDBAgsHvgI8AXUCAAF2AIABAXcAkwIBeADxAQF5AM8BAXoAzQEBQQDLAQFCAMoBAUMAyQEBRADIAQFFAMcBAUYAkgIBRwCRAgFIAI4CAUkA6QEBSgDiAQFLAOEBAUwAPQFNAOABAU4A+gEBTwD5AQFQAPIBAVEA+wEBUgDfAQFTAN4BAVQA3QEBVQDcAQFWAOMBAVcA2wEBWADaAQFZANkBAVoA2AEBXwDXAQEkAOoBAmFhAJwBAmJhANYBAmNhANUBAmRhANQBAmVhADECZmEA6wECZ2EAGwJoYQDOAQJpYQBJAmphANMBAmthANIBAmxhAGgCbWEA0QECbmEA6AECb2EA0AECcGEA5AECcWEAigICcmEA+AECc2EA9wECdGEA9gECdWEA5wECdmEA5gECd2EA5QECeGEAGAJ5YQAVAnphAQAJQQEAQQELHswBkAKNAo8CjAKLArYBiQKIAocChgKFAoQCgwKCAoECgAL/Af4B/QH8AVr1AfQB8wHwAe8B7gHtAewBCq2RCYACQAEBfyMAQRBrIgMgADYCDCADIAE2AgggAyACNgIEIAMoAgwEQCADKAIMIAMoAgg2AgAgAygCDCADKAIENgIECwvMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNByJsBKAIASQ0BIAAgAWohACADQcybASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RB4JsBakYaIAIgAygCDCIBRgRAQbibAUG4mwEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QeidAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbybAUG8mwEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQcCbASAANgIAIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUHQmwEoAgBGBEBB0JsBIAM2AgBBxJsBQcSbASgCACAAaiIANgIAIAMgAEEBcjYCBCADQcybASgCAEcNA0HAmwFBADYCAEHMmwFBADYCAA8LIAVBzJsBKAIARgRAQcybASADNgIAQcCbAUHAmwEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH/AU0EQCAFKAIIIgIgAUEDdiIEQQN0QeCbAWpGGiACIAUoAgwiAUYEQEG4mwFBuJsBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQcibASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QeidAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQbybAUG8mwEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANBzJsBKAIARw0BQcCbASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB/wFNBEAgAEEDdiIBQQN0QeCbAWohAAJ/QbibASgCACICQQEgAXQiAXFFBEBBuJsBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEHonQFqIQECQAJAAkBBvJsBKAIAIgRBASACdCIHcUUEQEG8mwEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQdibAUHYmwEoAgBBAWsiAEF/IAAbNgIACwtCAQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDC0AAUEBcQRAIAEoAgwoAgQQFQsgASgCDBAVCyABQRBqJAALQwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwCfyMAQRBrIgAgAigCCDYCDCAAKAIMQQxqCxBDIAJBEGokAAuiLgEMfyMAQRBrIgwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQbibASgCACIFQRAgAEELakF4cSAAQQtJGyIIQQN2IgJ2IgFBA3EEQCABQX9zQQFxIAJqIgNBA3QiAUHomwFqKAIAIgRBCGohAAJAIAQoAggiAiABQeCbAWoiAUYEQEG4mwEgBUF+IAN3cTYCAAwBCyACIAE2AgwgASACNgIICyAEIANBA3QiAUEDcjYCBCABIARqIgEgASgCBEEBcjYCBAwNCyAIQcCbASgCACIKTQ0BIAEEQAJAQQIgAnQiAEEAIABrciABIAJ0cSIAQQAgAGtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmoiA0EDdCIAQeibAWooAgAiBCgCCCIBIABB4JsBaiIARgRAQbibASAFQX4gA3dxIgU2AgAMAQsgASAANgIMIAAgATYCCAsgBEEIaiEAIAQgCEEDcjYCBCAEIAhqIgIgA0EDdCIBIAhrIgNBAXI2AgQgASAEaiADNgIAIAoEQCAKQQN2IgFBA3RB4JsBaiEHQcybASgCACEEAn8gBUEBIAF0IgFxRQRAQbibASABIAVyNgIAIAcMAQsgBygCCAshASAHIAQ2AgggASAENgIMIAQgBzYCDCAEIAE2AggLQcybASACNgIAQcCbASADNgIADA0LQbybASgCACIGRQ0BIAZBACAGa3FBAWsiACAAQQx2QRBxIgJ2IgFBBXZBCHEiACACciABIAB2IgFBAnZBBHEiAHIgASAAdiIBQQF2QQJxIgByIAEgAHYiAUEBdkEBcSIAciABIAB2akECdEHonQFqKAIAIgEoAgRBeHEgCGshAyABIQIDQAJAIAIoAhAiAEUEQCACKAIUIgBFDQELIAAoAgRBeHEgCGsiAiADIAIgA0kiAhshAyAAIAEgAhshASAAIQIMAQsLIAEgCGoiCSABTQ0CIAEoAhghCyABIAEoAgwiBEcEQCABKAIIIgBByJsBKAIASRogACAENgIMIAQgADYCCAwMCyABQRRqIgIoAgAiAEUEQCABKAIQIgBFDQQgAUEQaiECCwNAIAIhByAAIgRBFGoiAigCACIADQAgBEEQaiECIAQoAhAiAA0ACyAHQQA2AgAMCwtBfyEIIABBv39LDQAgAEELaiIAQXhxIQhBvJsBKAIAIglFDQBBACAIayEDAkACQAJAAn9BACAIQYACSQ0AGkEfIAhB////B0sNABogAEEIdiIAIABBgP4/akEQdkEIcSICdCIAIABBgOAfakEQdkEEcSIBdCIAIABBgIAPakEQdkECcSIAdEEPdiABIAJyIAByayIAQQF0IAggAEEVanZBAXFyQRxqCyIFQQJ0QeidAWooAgAiAkUEQEEAIQAMAQtBACEAIAhBAEEZIAVBAXZrIAVBH0YbdCEBA0ACQCACKAIEQXhxIAhrIgcgA08NACACIQQgByIDDQBBACEDIAIhAAwDCyAAIAIoAhQiByAHIAIgAUEddkEEcWooAhAiAkYbIAAgBxshACABQQF0IQEgAg0ACwsgACAEckUEQEECIAV0IgBBACAAa3IgCXEiAEUNAyAAQQAgAGtxQQFrIgAgAEEMdkEQcSICdiIBQQV2QQhxIgAgAnIgASAAdiIBQQJ2QQRxIgByIAEgAHYiAUEBdkECcSIAciABIAB2IgFBAXZBAXEiAHIgASAAdmpBAnRB6J0BaigCACEACyAARQ0BCwNAIAAoAgRBeHEgCGsiASADSSECIAEgAyACGyEDIAAgBCACGyEEIAAoAhAiAQR/IAEFIAAoAhQLIgANAAsLIARFDQAgA0HAmwEoAgAgCGtPDQAgBCAIaiIGIARNDQEgBCgCGCEFIAQgBCgCDCIBRwRAIAQoAggiAEHImwEoAgBJGiAAIAE2AgwgASAANgIIDAoLIARBFGoiAigCACIARQRAIAQoAhAiAEUNBCAEQRBqIQILA0AgAiEHIAAiAUEUaiICKAIAIgANACABQRBqIQIgASgCECIADQALIAdBADYCAAwJCyAIQcCbASgCACICTQRAQcybASgCACEDAkAgAiAIayIBQRBPBEBBwJsBIAE2AgBBzJsBIAMgCGoiADYCACAAIAFBAXI2AgQgAiADaiABNgIAIAMgCEEDcjYCBAwBC0HMmwFBADYCAEHAmwFBADYCACADIAJBA3I2AgQgAiADaiIAIAAoAgRBAXI2AgQLIANBCGohAAwLCyAIQcSbASgCACIGSQRAQcSbASAGIAhrIgE2AgBB0JsBQdCbASgCACICIAhqIgA2AgAgACABQQFyNgIEIAIgCEEDcjYCBCACQQhqIQAMCwtBACEAIAhBL2oiCQJ/QZCfASgCAARAQZifASgCAAwBC0GcnwFCfzcCAEGUnwFCgKCAgICABDcCAEGQnwEgDEEMakFwcUHYqtWqBXM2AgBBpJ8BQQA2AgBB9J4BQQA2AgBBgCALIgFqIgVBACABayIHcSICIAhNDQpB8J4BKAIAIgQEQEHongEoAgAiAyACaiIBIANNDQsgASAESw0LC0H0ngEtAABBBHENBQJAAkBB0JsBKAIAIgMEQEH4ngEhAANAIAMgACgCACIBTwRAIAEgACgCBGogA0sNAwsgACgCCCIADQALC0EAEDwiAUF/Rg0GIAIhBUGUnwEoAgAiA0EBayIAIAFxBEAgAiABayAAIAFqQQAgA2txaiEFCyAFIAhNDQYgBUH+////B0sNBkHwngEoAgAiBARAQeieASgCACIDIAVqIgAgA00NByAAIARLDQcLIAUQPCIAIAFHDQEMCAsgBSAGayAHcSIFQf7///8HSw0FIAUQPCIBIAAoAgAgACgCBGpGDQQgASEACwJAIABBf0YNACAIQTBqIAVNDQBBmJ8BKAIAIgEgCSAFa2pBACABa3EiAUH+////B0sEQCAAIQEMCAsgARA8QX9HBEAgASAFaiEFIAAhAQwIC0EAIAVrEDwaDAULIAAiAUF/Rw0GDAQLAAtBACEEDAcLQQAhAQwFCyABQX9HDQILQfSeAUH0ngEoAgBBBHI2AgALIAJB/v///wdLDQEgAhA8IQFBABA8IQAgAUF/Rg0BIABBf0YNASAAIAFNDQEgACABayIFIAhBKGpNDQELQeieAUHongEoAgAgBWoiADYCAEHsngEoAgAgAEkEQEHsngEgADYCAAsCQAJAAkBB0JsBKAIAIgcEQEH4ngEhAANAIAEgACgCACIDIAAoAgQiAmpGDQIgACgCCCIADQALDAILQcibASgCACIAQQAgACABTRtFBEBByJsBIAE2AgALQQAhAEH8ngEgBTYCAEH4ngEgATYCAEHYmwFBfzYCAEHcmwFBkJ8BKAIANgIAQYSfAUEANgIAA0AgAEEDdCIDQeibAWogA0HgmwFqIgI2AgAgA0HsmwFqIAI2AgAgAEEBaiIAQSBHDQALQcSbASAFQShrIgNBeCABa0EHcUEAIAFBCGpBB3EbIgBrIgI2AgBB0JsBIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQdSbAUGgnwEoAgA2AgAMAgsgAC0ADEEIcQ0AIAMgB0sNACABIAdNDQAgACACIAVqNgIEQdCbASAHQXggB2tBB3FBACAHQQhqQQdxGyIAaiICNgIAQcSbAUHEmwEoAgAgBWoiASAAayIANgIAIAIgAEEBcjYCBCABIAdqQSg2AgRB1JsBQaCfASgCADYCAAwBC0HImwEoAgAgAUsEQEHImwEgATYCAAsgASAFaiECQfieASEAAkACQAJAAkACQAJAA0AgAiAAKAIARwRAIAAoAggiAA0BDAILCyAALQAMQQhxRQ0BC0H4ngEhAANAIAcgACgCACICTwRAIAIgACgCBGoiBCAHSw0DCyAAKAIIIQAMAAsACyAAIAE2AgAgACAAKAIEIAVqNgIEIAFBeCABa0EHcUEAIAFBCGpBB3EbaiIJIAhBA3I2AgQgAkF4IAJrQQdxQQAgAkEIakEHcRtqIgUgCCAJaiIGayECIAUgB0YEQEHQmwEgBjYCAEHEmwFBxJsBKAIAIAJqIgA2AgAgBiAAQQFyNgIEDAMLIAVBzJsBKAIARgRAQcybASAGNgIAQcCbAUHAmwEoAgAgAmoiADYCACAGIABBAXI2AgQgACAGaiAANgIADAMLIAUoAgQiAEEDcUEBRgRAIABBeHEhBwJAIABB/wFNBEAgBSgCCCIDIABBA3YiAEEDdEHgmwFqRhogAyAFKAIMIgFGBEBBuJsBQbibASgCAEF+IAB3cTYCAAwCCyADIAE2AgwgASADNgIIDAELIAUoAhghCAJAIAUgBSgCDCIBRwRAIAUoAggiACABNgIMIAEgADYCCAwBCwJAIAVBFGoiACgCACIDDQAgBUEQaiIAKAIAIgMNAEEAIQEMAQsDQCAAIQQgAyIBQRRqIgAoAgAiAw0AIAFBEGohACABKAIQIgMNAAsgBEEANgIACyAIRQ0AAkAgBSAFKAIcIgNBAnRB6J0BaiIAKAIARgRAIAAgATYCACABDQFBvJsBQbybASgCAEF+IAN3cTYCAAwCCyAIQRBBFCAIKAIQIAVGG2ogATYCACABRQ0BCyABIAg2AhggBSgCECIABEAgASAANgIQIAAgATYCGAsgBSgCFCIARQ0AIAEgADYCFCAAIAE2AhgLIAUgB2ohBSACIAdqIQILIAUgBSgCBEF+cTYCBCAGIAJBAXI2AgQgAiAGaiACNgIAIAJB/wFNBEAgAkEDdiIAQQN0QeCbAWohAgJ/QbibASgCACIBQQEgAHQiAHFFBEBBuJsBIAAgAXI2AgAgAgwBCyACKAIICyEAIAIgBjYCCCAAIAY2AgwgBiACNgIMIAYgADYCCAwDC0EfIQAgAkH///8HTQRAIAJBCHYiACAAQYD+P2pBEHZBCHEiA3QiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASADciAAcmsiAEEBdCACIABBFWp2QQFxckEcaiEACyAGIAA2AhwgBkIANwIQIABBAnRB6J0BaiEEAkBBvJsBKAIAIgNBASAAdCIBcUUEQEG8mwEgASADcjYCACAEIAY2AgAgBiAENgIYDAELIAJBAEEZIABBAXZrIABBH0YbdCEAIAQoAgAhAQNAIAEiAygCBEF4cSACRg0DIABBHXYhASAAQQF0IQAgAyABQQRxaiIEKAIQIgENAAsgBCAGNgIQIAYgAzYCGAsgBiAGNgIMIAYgBjYCCAwCC0HEmwEgBUEoayIDQXggAWtBB3FBACABQQhqQQdxGyIAayICNgIAQdCbASAAIAFqIgA2AgAgACACQQFyNgIEIAEgA2pBKDYCBEHUmwFBoJ8BKAIANgIAIAcgBEEnIARrQQdxQQAgBEEna0EHcRtqQS9rIgAgACAHQRBqSRsiAkEbNgIEIAJBgJ8BKQIANwIQIAJB+J4BKQIANwIIQYCfASACQQhqNgIAQfyeASAFNgIAQfieASABNgIAQYSfAUEANgIAIAJBGGohAANAIABBBzYCBCAAQQhqIQEgAEEEaiEAIAEgBEkNAAsgAiAHRg0DIAIgAigCBEF+cTYCBCAHIAIgB2siBEEBcjYCBCACIAQ2AgAgBEH/AU0EQCAEQQN2IgBBA3RB4JsBaiECAn9BuJsBKAIAIgFBASAAdCIAcUUEQEG4mwEgACABcjYCACACDAELIAIoAggLIQAgAiAHNgIIIAAgBzYCDCAHIAI2AgwgByAANgIIDAQLQR8hACAHQgA3AhAgBEH///8HTQRAIARBCHYiACAAQYD+P2pBEHZBCHEiAnQiACAAQYDgH2pBEHZBBHEiAXQiACAAQYCAD2pBEHZBAnEiAHRBD3YgASACciAAcmsiAEEBdCAEIABBFWp2QQFxckEcaiEACyAHIAA2AhwgAEECdEHonQFqIQMCQEG8mwEoAgAiAkEBIAB0IgFxRQRAQbybASABIAJyNgIAIAMgBzYCACAHIAM2AhgMAQsgBEEAQRkgAEEBdmsgAEEfRht0IQAgAygCACEBA0AgASICKAIEQXhxIARGDQQgAEEddiEBIABBAXQhACACIAFBBHFqIgMoAhAiAQ0ACyADIAc2AhAgByACNgIYCyAHIAc2AgwgByAHNgIIDAMLIAMoAggiACAGNgIMIAMgBjYCCCAGQQA2AhggBiADNgIMIAYgADYCCAsgCUEIaiEADAULIAIoAggiACAHNgIMIAIgBzYCCCAHQQA2AhggByACNgIMIAcgADYCCAtBxJsBKAIAIgAgCE0NAEHEmwEgACAIayIBNgIAQdCbAUHQmwEoAgAiAiAIaiIANgIAIAAgAUEBcjYCBCACIAhBA3I2AgQgAkEIaiEADAMLQbSbAUEwNgIAQQAhAAwCCwJAIAVFDQACQCAEKAIcIgJBAnRB6J0BaiIAKAIAIARGBEAgACABNgIAIAENAUG8mwEgCUF+IAJ3cSIJNgIADAILIAVBEEEUIAUoAhAgBEYbaiABNgIAIAFFDQELIAEgBTYCGCAEKAIQIgAEQCABIAA2AhAgACABNgIYCyAEKAIUIgBFDQAgASAANgIUIAAgATYCGAsCQCADQQ9NBEAgBCADIAhqIgBBA3I2AgQgACAEaiIAIAAoAgRBAXI2AgQMAQsgBCAIQQNyNgIEIAYgA0EBcjYCBCADIAZqIAM2AgAgA0H/AU0EQCADQQN2IgBBA3RB4JsBaiECAn9BuJsBKAIAIgFBASAAdCIAcUUEQEG4mwEgACABcjYCACACDAELIAIoAggLIQAgAiAGNgIIIAAgBjYCDCAGIAI2AgwgBiAANgIIDAELQR8hACADQf///wdNBEAgA0EIdiIAIABBgP4/akEQdkEIcSICdCIAIABBgOAfakEQdkEEcSIBdCIAIABBgIAPakEQdkECcSIAdEEPdiABIAJyIAByayIAQQF0IAMgAEEVanZBAXFyQRxqIQALIAYgADYCHCAGQgA3AhAgAEECdEHonQFqIQICQAJAIAlBASAAdCIBcUUEQEG8mwEgASAJcjYCACACIAY2AgAgBiACNgIYDAELIANBAEEZIABBAXZrIABBH0YbdCEAIAIoAgAhCANAIAgiASgCBEF4cSADRg0CIABBHXYhAiAAQQF0IQAgASACQQRxaiICKAIQIggNAAsgAiAGNgIQIAYgATYCGAsgBiAGNgIMIAYgBjYCCAwBCyABKAIIIgAgBjYCDCABIAY2AgggBkEANgIYIAYgATYCDCAGIAA2AggLIARBCGohAAwBCwJAIAtFDQACQCABKAIcIgJBAnRB6J0BaiIAKAIAIAFGBEAgACAENgIAIAQNAUG8mwEgBkF+IAJ3cTYCAAwCCyALQRBBFCALKAIQIAFGG2ogBDYCACAERQ0BCyAEIAs2AhggASgCECIABEAgBCAANgIQIAAgBDYCGAsgASgCFCIARQ0AIAQgADYCFCAAIAQ2AhgLAkAgA0EPTQRAIAEgAyAIaiIAQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIEDAELIAEgCEEDcjYCBCAJIANBAXI2AgQgAyAJaiADNgIAIAoEQCAKQQN2IgBBA3RB4JsBaiEEQcybASgCACECAn9BASAAdCIAIAVxRQRAQbibASAAIAVyNgIAIAQMAQsgBCgCCAshACAEIAI2AgggACACNgIMIAIgBDYCDCACIAA2AggLQcybASAJNgIAQcCbASADNgIACyABQQhqIQALIAxBEGokACAAC4MEAQN/IAJBgARPBEAgACABIAIQEhogAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACQQFIBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAu4GAECfyMAQRBrIgQkACAEIAA2AgwgBCABNgIIIAQgAjYCBCAEKAIMIQAgBCgCCCECIAQoAgQhAyMAQSBrIgEkACABIAA2AhggASACNgIUIAEgAzYCEAJAIAEoAhRFBEAgAUEANgIcDAELIAFBATYCDCABLQAMBEAgASgCFCECIAEoAhAhAyMAQSBrIgAgASgCGDYCHCAAIAI2AhggACADNgIUIAAgACgCHDYCECAAIAAoAhBBf3M2AhADQCAAKAIUBH8gACgCGEEDcUEARwVBAAtBAXEEQCAAKAIQIQIgACAAKAIYIgNBAWo2AhggACADLQAAIAJzQf8BcUECdEGQFWooAgAgACgCEEEIdnM2AhAgACAAKAIUQQFrNgIUDAELCyAAIAAoAhg2AgwDQCAAKAIUQSBPBEAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQFWooAgAgACgCEEEQdkH/AXFBAnRBkB1qKAIAIAAoAhBB/wFxQQJ0QZAtaigCACAAKAIQQQh2Qf8BcUECdEGQJWooAgBzc3M2AhAgACAAKAIUQSBrNgIUDAELCwNAIAAoAhRBBE8EQCAAIAAoAgwiAkEEajYCDCAAIAIoAgAgACgCEHM2AhAgACAAKAIQQRh2QQJ0QZAVaigCACAAKAIQQRB2Qf8BcUECdEGQHWooAgAgACgCEEH/AXFBAnRBkC1qKAIAIAAoAhBBCHZB/wFxQQJ0QZAlaigCAHNzczYCECAAIAAoAhRBBGs2AhQMAQsLIAAgACgCDDYCGCAAKAIUBEADQCAAKAIQIQIgACAAKAIYIgNBAWo2AhggACADLQAAIAJzQf8BcUECdEGQFWooAgAgACgCEEEIdnM2AhAgACAAKAIUQQFrIgI2AhQgAg0ACwsgACAAKAIQQX9zNgIQIAEgACgCEDYCHAwBCyABKAIUIQIgASgCECEDIwBBIGsiACABKAIYNgIcIAAgAjYCGCAAIAM2AhQgACAAKAIcQQh2QYD+A3EgACgCHEEYdmogACgCHEGA/gNxQQh0aiAAKAIcQf8BcUEYdGo2AhAgACAAKAIQQX9zNgIQA0AgACgCFAR/IAAoAhhBA3FBAEcFQQALQQFxBEAgACgCEEEYdiECIAAgACgCGCIDQQFqNgIYIAAgAy0AACACc0ECdEGQNWooAgAgACgCEEEIdHM2AhAgACAAKAIUQQFrNgIUDAELCyAAIAAoAhg2AgwDQCAAKAIUQSBPBEAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQzQBqKAIAIAAoAhBBEHZB/wFxQQJ0QZDFAGooAgAgACgCEEH/AXFBAnRBkDVqKAIAIAAoAhBBCHZB/wFxQQJ0QZA9aigCAHNzczYCECAAIAAoAgwiAkEEajYCDCAAIAIoAgAgACgCEHM2AhAgACAAKAIQQRh2QQJ0QZDNAGooAgAgACgCEEEQdkH/AXFBAnRBkMUAaigCACAAKAIQQf8BcUECdEGQNWooAgAgACgCEEEIdkH/AXFBAnRBkD1qKAIAc3NzNgIQIAAgACgCDCICQQRqNgIMIAAgAigCACAAKAIQczYCECAAIAAoAhBBGHZBAnRBkM0AaigCACAAKAIQQRB2Qf8BcUECdEGQxQBqKAIAIAAoAhBB/wFxQQJ0QZA1aigCACAAKAIQQQh2Qf8BcUECdEGQPWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQzQBqKAIAIAAoAhBBEHZB/wFxQQJ0QZDFAGooAgAgACgCEEH/AXFBAnRBkDVqKAIAIAAoAhBBCHZB/wFxQQJ0QZA9aigCAHNzczYCECAAIAAoAgwiAkEEajYCDCAAIAIoAgAgACgCEHM2AhAgACAAKAIQQRh2QQJ0QZDNAGooAgAgACgCEEEQdkH/AXFBAnRBkMUAaigCACAAKAIQQf8BcUECdEGQNWooAgAgACgCEEEIdkH/AXFBAnRBkD1qKAIAc3NzNgIQIAAgACgCDCICQQRqNgIMIAAgAigCACAAKAIQczYCECAAIAAoAhBBGHZBAnRBkM0AaigCACAAKAIQQRB2Qf8BcUECdEGQxQBqKAIAIAAoAhBB/wFxQQJ0QZA1aigCACAAKAIQQQh2Qf8BcUECdEGQPWooAgBzc3M2AhAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQzQBqKAIAIAAoAhBBEHZB/wFxQQJ0QZDFAGooAgAgACgCEEH/AXFBAnRBkDVqKAIAIAAoAhBBCHZB/wFxQQJ0QZA9aigCAHNzczYCECAAIAAoAgwiAkEEajYCDCAAIAIoAgAgACgCEHM2AhAgACAAKAIQQRh2QQJ0QZDNAGooAgAgACgCEEEQdkH/AXFBAnRBkMUAaigCACAAKAIQQf8BcUECdEGQNWooAgAgACgCEEEIdkH/AXFBAnRBkD1qKAIAc3NzNgIQIAAgACgCFEEgazYCFAwBCwsDQCAAKAIUQQRPBEAgACAAKAIMIgJBBGo2AgwgACACKAIAIAAoAhBzNgIQIAAgACgCEEEYdkECdEGQzQBqKAIAIAAoAhBBEHZB/wFxQQJ0QZDFAGooAgAgACgCEEH/AXFBAnRBkDVqKAIAIAAoAhBBCHZB/wFxQQJ0QZA9aigCAHNzczYCECAAIAAoAhRBBGs2AhQMAQsLIAAgACgCDDYCGCAAKAIUBEADQCAAKAIQQRh2IQIgACAAKAIYIgNBAWo2AhggACADLQAAIAJzQQJ0QZA1aigCACAAKAIQQQh0czYCECAAIAAoAhRBAWsiAjYCFCACDQALCyAAIAAoAhBBf3M2AhAgASAAKAIQQQh2QYD+A3EgACgCEEEYdmogACgCEEGA/gNxQQh0aiAAKAIQQf8BcUEYdGo2AhwLIAEoAhwhACABQSBqJAAgBEEQaiQAIAAL7AIBAn8jAEEQayIBJAAgASAANgIMAkAgASgCDEUNACABKAIMKAIwBEAgASgCDCIAIAAoAjBBAWs2AjALIAEoAgwoAjANACABKAIMKAIgBEAgASgCDEEBNgIgIAEoAgwQMRoLIAEoAgwoAiRBAUYEQCABKAIMEGcLAkAgASgCDCgCLEUNACABKAIMLQAoQQFxDQAgASgCDCECIwBBEGsiACABKAIMKAIsNgIMIAAgAjYCCCAAQQA2AgQDQCAAKAIEIAAoAgwoAkRJBEAgACgCDCgCTCAAKAIEQQJ0aigCACAAKAIIRgRAIAAoAgwoAkwgACgCBEECdGogACgCDCgCTCAAKAIMKAJEQQFrQQJ0aigCADYCACAAKAIMIgAgACgCREEBazYCRAUgACAAKAIEQQFqNgIEDAILCwsLIAEoAgxBAEIAQQUQIRogASgCDCgCAARAIAEoAgwoAgAQGwsgASgCDBAVCyABQRBqJAALnwIBAn8jAEEQayIBJAAgASAANgIMIAEgASgCDCgCHDYCBCABKAIEIQIjAEEQayIAJAAgACACNgIMIAAoAgwQuwEgAEEQaiQAIAEgASgCBCgCFDYCCCABKAIIIAEoAgwoAhBLBEAgASABKAIMKAIQNgIICwJAIAEoAghFDQAgASgCDCgCDCABKAIEKAIQIAEoAggQGRogASgCDCIAIAEoAgggACgCDGo2AgwgASgCBCIAIAEoAgggACgCEGo2AhAgASgCDCIAIAEoAgggACgCFGo2AhQgASgCDCIAIAAoAhAgASgCCGs2AhAgASgCBCIAIAAoAhQgASgCCGs2AhQgASgCBCgCFA0AIAEoAgQgASgCBCgCCDYCEAsgAUEQaiQAC2ABAX8jAEEQayIBJAAgASAANgIIIAEgASgCCEICEB42AgQCQCABKAIERQRAIAFBADsBDgwBCyABIAEoAgQtAAAgASgCBC0AAUEIdGo7AQ4LIAEvAQ4hACABQRBqJAAgAAvpAQEBfyMAQSBrIgIkACACIAA2AhwgAiABNwMQIAIpAxAhASMAQSBrIgAgAigCHDYCGCAAIAE3AxACQAJAAkAgACgCGC0AAEEBcUUNACAAKQMQIAAoAhgpAxAgACkDEHxWDQAgACgCGCkDCCAAKAIYKQMQIAApAxB8Wg0BCyAAKAIYQQA6AAAgAEEANgIcDAELIAAgACgCGCgCBCAAKAIYKQMQp2o2AgwgACAAKAIMNgIcCyACIAAoAhw2AgwgAigCDARAIAIoAhwiACACKQMQIAApAxB8NwMQCyACKAIMIQAgAkEgaiQAIAALbwEBfyMAQRBrIgIkACACIAA2AgggAiABOwEGIAIgAigCCEICEB42AgACQCACKAIARQRAIAJBfzYCDAwBCyACKAIAIAIvAQY6AAAgAigCACACLwEGQQh2OgABIAJBADYCDAsgAigCDBogAkEQaiQAC48BAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQgAiACKAIIQgQQHjYCAAJAIAIoAgBFBEAgAkF/NgIMDAELIAIoAgAgAigCBDoAACACKAIAIAIoAgRBCHY6AAEgAigCACACKAIEQRB2OgACIAIoAgAgAigCBEEYdjoAAyACQQA2AgwLIAIoAgwaIAJBEGokAAu2AgEBfyMAQTBrIgQkACAEIAA2AiQgBCABNgIgIAQgAjcDGCAEIAM2AhQCQCAEKAIkKQMYQgEgBCgCFK2Gg1AEQCAEKAIkQQxqQRxBABAUIARCfzcDKAwBCwJAIAQoAiQoAgBFBEAgBCAEKAIkKAIIIAQoAiAgBCkDGCAEKAIUIAQoAiQoAgQRDgA3AwgMAQsgBCAEKAIkKAIAIAQoAiQoAgggBCgCICAEKQMYIAQoAhQgBCgCJCgCBBEKADcDCAsgBCkDCEIAUwRAAkAgBCgCFEEERg0AIAQoAhRBDkYNAAJAIAQoAiQgBEIIQQQQIUIAUwRAIAQoAiRBDGpBFEEAEBQMAQsgBCgCJEEMaiAEKAIAIAQoAgQQFAsLCyAEIAQpAwg3AygLIAQpAyghAiAEQTBqJAAgAgsXACAALQAAQSBxRQRAIAEgAiAAEHIaCwtQAQF/IwBBEGsiASQAIAEgADYCDANAIAEoAgwEQCABIAEoAgwoAgA2AgggASgCDCgCDBAVIAEoAgwQFSABIAEoAgg2AgwMAQsLIAFBEGokAAt9AQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgAUIANwMAA0AgASkDACABKAIMKQMIWkUEQCABKAIMKAIAIAEpAwCnQQR0ahBiIAEgASkDAEIBfDcDAAwBCwsgASgCDCgCABAVIAEoAgwoAigQJSABKAIMEBULIAFBEGokAAs+AQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDCgCABAVIAEoAgwoAgwQFSABKAIMEBULIAFBEGokAAtuAQF/IwBBgAJrIgUkAAJAIARBgMAEcQ0AIAIgA0wNACAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxAyIAFFBEADQCAAIAVBgAIQIiACQYACayICQf8BSw0ACwsgACAFIAIQIgsgBUGAAmokAAvRAQEBfyMAQTBrIgMkACADIAA2AiggAyABNwMgIAMgAjYCHAJAIAMoAigtAChBAXEEQCADQX82AiwMAQsCQCADKAIoKAIgBEAgAygCHEUNASADKAIcQQFGDQEgAygCHEECRg0BCyADKAIoQQxqQRJBABAUIANBfzYCLAwBCyADIAMpAyA3AwggAyADKAIcNgIQIAMoAiggA0EIakIQQQYQIUIAUwRAIANBfzYCLAwBCyADKAIoQQA6ADQgA0EANgIsCyADKAIsIQAgA0EwaiQAIAALmBcBAn8jAEEwayIEJAAgBCAANgIsIAQgATYCKCAEIAI2AiQgBCADNgIgIARBADYCFAJAIAQoAiwoAoQBQQBKBEAgBCgCLCgCACgCLEECRgRAIwBBEGsiACAEKAIsNgIIIABB/4D/n382AgQgAEEANgIAAkADQCAAKAIAQR9MBEACQCAAKAIEQQFxRQ0AIAAoAghBlAFqIAAoAgBBAnRqLwEARQ0AIABBADYCDAwDCyAAIAAoAgBBAWo2AgAgACAAKAIEQQF2NgIEDAELCwJAAkAgACgCCC8BuAENACAAKAIILwG8AQ0AIAAoAggvAcgBRQ0BCyAAQQE2AgwMAQsgAEEgNgIAA0AgACgCAEGAAkgEQCAAKAIIQZQBaiAAKAIAQQJ0ai8BAARAIABBATYCDAwDBSAAIAAoAgBBAWo2AgAMAgsACwsgAEEANgIMCyAAKAIMIQAgBCgCLCgCACAANgIsCyAEKAIsIAQoAixBmBZqEHsgBCgCLCAEKAIsQaQWahB7IAQoAiwhASMAQRBrIgAkACAAIAE2AgwgACgCDCAAKAIMQZQBaiAAKAIMKAKcFhC5ASAAKAIMIAAoAgxBiBNqIAAoAgwoAqgWELkBIAAoAgwgACgCDEGwFmoQeyAAQRI2AggDQAJAIAAoAghBA0gNACAAKAIMQfwUaiAAKAIILQDgbEECdGovAQINACAAIAAoAghBAWs2AggMAQsLIAAoAgwiASABKAKoLSAAKAIIQQNsQRFqajYCqC0gACgCCCEBIABBEGokACAEIAE2AhQgBCAEKAIsKAKoLUEKakEDdjYCHCAEIAQoAiwoAqwtQQpqQQN2NgIYIAQoAhggBCgCHE0EQCAEIAQoAhg2AhwLDAELIAQgBCgCJEEFaiIANgIYIAQgADYCHAsCQAJAIAQoAhwgBCgCJEEEakkNACAEKAIoRQ0AIAQoAiwgBCgCKCAEKAIkIAQoAiAQXAwBCwJAAkAgBCgCLCgCiAFBBEcEQCAEKAIYIAQoAhxHDQELIARBAzYCEAJAIAQoAiwoArwtQRAgBCgCEGtKBEAgBCAEKAIgQQJqNgIMIAQoAiwiACAALwG4LSAEKAIMQf//A3EgBCgCLCgCvC10cjsBuC0gBCgCLC8BuC1B/wFxIQEgBCgCLCgCCCECIAQoAiwiAygCFCEAIAMgAEEBajYCFCAAIAJqIAE6AAAgBCgCLC8BuC1BCHYhASAEKAIsKAIIIQIgBCgCLCIDKAIUIQAgAyAAQQFqNgIUIAAgAmogAToAACAEKAIsIAQoAgxB//8DcUEQIAQoAiwoArwta3U7AbgtIAQoAiwiACAAKAK8LSAEKAIQQRBrajYCvC0MAQsgBCgCLCIAIAAvAbgtIAQoAiBBAmpB//8DcSAEKAIsKAK8LXRyOwG4LSAEKAIsIgAgBCgCECAAKAK8LWo2ArwtCyAEKAIsQZDgAEGQ6QAQugEMAQsgBEEDNgIIAkAgBCgCLCgCvC1BECAEKAIIa0oEQCAEIAQoAiBBBGo2AgQgBCgCLCIAIAAvAbgtIAQoAgRB//8DcSAEKAIsKAK8LXRyOwG4LSAEKAIsLwG4LUH/AXEhASAEKAIsKAIIIQIgBCgCLCIDKAIUIQAgAyAAQQFqNgIUIAAgAmogAToAACAEKAIsLwG4LUEIdiEBIAQoAiwoAgghAiAEKAIsIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAiwgBCgCBEH//wNxQRAgBCgCLCgCvC1rdTsBuC0gBCgCLCIAIAAoArwtIAQoAghBEGtqNgK8LQwBCyAEKAIsIgAgAC8BuC0gBCgCIEEEakH//wNxIAQoAiwoArwtdHI7AbgtIAQoAiwiACAEKAIIIAAoArwtajYCvC0LIAQoAiwhASAEKAIsKAKcFkEBaiECIAQoAiwoAqgWQQFqIQMgBCgCFEEBaiEFIwBBQGoiACQAIAAgATYCPCAAIAI2AjggACADNgI0IAAgBTYCMCAAQQU2AigCQCAAKAI8KAK8LUEQIAAoAihrSgRAIAAgACgCOEGBAms2AiQgACgCPCIBIAEvAbgtIAAoAiRB//8DcSAAKAI8KAK8LXRyOwG4LSAAKAI8LwG4LUH/AXEhAiAAKAI8KAIIIQMgACgCPCIFKAIUIQEgBSABQQFqNgIUIAEgA2ogAjoAACAAKAI8LwG4LUEIdiECIAAoAjwoAgghAyAAKAI8IgUoAhQhASAFIAFBAWo2AhQgASADaiACOgAAIAAoAjwgACgCJEH//wNxQRAgACgCPCgCvC1rdTsBuC0gACgCPCIBIAEoArwtIAAoAihBEGtqNgK8LQwBCyAAKAI8IgEgAS8BuC0gACgCOEGBAmtB//8DcSAAKAI8KAK8LXRyOwG4LSAAKAI8IgEgACgCKCABKAK8LWo2ArwtCyAAQQU2AiACQCAAKAI8KAK8LUEQIAAoAiBrSgRAIAAgACgCNEEBazYCHCAAKAI8IgEgAS8BuC0gACgCHEH//wNxIAAoAjwoArwtdHI7AbgtIAAoAjwvAbgtQf8BcSECIAAoAjwoAgghAyAAKAI8IgUoAhQhASAFIAFBAWo2AhQgASADaiACOgAAIAAoAjwvAbgtQQh2IQIgACgCPCgCCCEDIAAoAjwiBSgCFCEBIAUgAUEBajYCFCABIANqIAI6AAAgACgCPCAAKAIcQf//A3FBECAAKAI8KAK8LWt1OwG4LSAAKAI8IgEgASgCvC0gACgCIEEQa2o2ArwtDAELIAAoAjwiASABLwG4LSAAKAI0QQFrQf//A3EgACgCPCgCvC10cjsBuC0gACgCPCIBIAAoAiAgASgCvC1qNgK8LQsgAEEENgIYAkAgACgCPCgCvC1BECAAKAIYa0oEQCAAIAAoAjBBBGs2AhQgACgCPCIBIAEvAbgtIAAoAhRB//8DcSAAKAI8KAK8LXRyOwG4LSAAKAI8LwG4LUH/AXEhAiAAKAI8KAIIIQMgACgCPCIFKAIUIQEgBSABQQFqNgIUIAEgA2ogAjoAACAAKAI8LwG4LUEIdiECIAAoAjwoAgghAyAAKAI8IgUoAhQhASAFIAFBAWo2AhQgASADaiACOgAAIAAoAjwgACgCFEH//wNxQRAgACgCPCgCvC1rdTsBuC0gACgCPCIBIAEoArwtIAAoAhhBEGtqNgK8LQwBCyAAKAI8IgEgAS8BuC0gACgCMEEEa0H//wNxIAAoAjwoArwtdHI7AbgtIAAoAjwiASAAKAIYIAEoArwtajYCvC0LIABBADYCLANAIAAoAiwgACgCMEgEQCAAQQM2AhACQCAAKAI8KAK8LUEQIAAoAhBrSgRAIAAgACgCPEH8FGogACgCLC0A4GxBAnRqLwECNgIMIAAoAjwiASABLwG4LSAAKAIMQf//A3EgACgCPCgCvC10cjsBuC0gACgCPC8BuC1B/wFxIQIgACgCPCgCCCEDIAAoAjwiBSgCFCEBIAUgAUEBajYCFCABIANqIAI6AAAgACgCPC8BuC1BCHYhAiAAKAI8KAIIIQMgACgCPCIFKAIUIQEgBSABQQFqNgIUIAEgA2ogAjoAACAAKAI8IAAoAgxB//8DcUEQIAAoAjwoArwta3U7AbgtIAAoAjwiASABKAK8LSAAKAIQQRBrajYCvC0MAQsgACgCPCIBIAEvAbgtIAAoAjxB/BRqIAAoAiwtAOBsQQJ0ai8BAiAAKAI8KAK8LXRyOwG4LSAAKAI8IgEgACgCECABKAK8LWo2ArwtCyAAIAAoAixBAWo2AiwMAQsLIAAoAjwgACgCPEGUAWogACgCOEEBaxC4ASAAKAI8IAAoAjxBiBNqIAAoAjRBAWsQuAEgAEFAayQAIAQoAiwgBCgCLEGUAWogBCgCLEGIE2oQugELCyAEKAIsEL0BIAQoAiAEQCAEKAIsELwBCyAEQTBqJAAL1AEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhFOgAPAkAgAigCGEUEQCACIAIpAxCnEBgiADYCGCAARQRAIAJBADYCHAwCCwsgAkEYEBgiADYCCCAARQRAIAItAA9BAXEEQCACKAIYEBULIAJBADYCHAwBCyACKAIIQQE6AAAgAigCCCACKAIYNgIEIAIoAgggAikDEDcDCCACKAIIQgA3AxAgAigCCCACLQAPQQFxOgABIAIgAigCCDYCHAsgAigCHCEAIAJBIGokACAAC3gBAX8jAEEQayIBJAAgASAANgIIIAEgASgCCEIEEB42AgQCQCABKAIERQRAIAFBADYCDAwBCyABIAEoAgQtAAAgASgCBC0AASABKAIELQACIAEoAgQtAANBCHRqQQh0akEIdGo2AgwLIAEoAgwhACABQRBqJAAgAAt/AQN/IAAhAQJAIABBA3EEQANAIAEtAABFDQIgAUEBaiIBQQNxDQALCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrC2EBAX8jAEEQayICIAA2AgggAiABNwMAAkAgAikDACACKAIIKQMIVgRAIAIoAghBADoAACACQX82AgwMAQsgAigCCEEBOgAAIAIoAgggAikDADcDECACQQA2AgwLIAIoAgwL7wEBAX8jAEEgayICJAAgAiAANgIYIAIgATcDECACIAIoAhhCCBAeNgIMAkAgAigCDEUEQCACQX82AhwMAQsgAigCDCACKQMQQv8BgzwAACACKAIMIAIpAxBCCIhC/wGDPAABIAIoAgwgAikDEEIQiEL/AYM8AAIgAigCDCACKQMQQhiIQv8BgzwAAyACKAIMIAIpAxBCIIhC/wGDPAAEIAIoAgwgAikDEEIoiEL/AYM8AAUgAigCDCACKQMQQjCIQv8BgzwABiACKAIMIAIpAxBCOIhC/wGDPAAHIAJBADYCHAsgAigCHBogAkEgaiQAC4cDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEUNACADKQMYQv///////////wBWDQAgAykDGFANASADKAIgDQELIAMoAiRBDGpBEkEAEBQgA0J/NwMoDAELIAMoAiQtADVBAXEEQCADQn83AygMAQsCfyMAQRBrIgAgAygCJDYCDCAAKAIMLQA0QQFxCwRAIANCADcDKAwBCyADKQMYUARAIANCADcDKAwBCyADQgA3AxADQCADKQMQIAMpAxhUBEAgAyADKAIkIAMoAiAgAykDEKdqIAMpAxggAykDEH1BARAhIgI3AwggAkIAUwRAIAMoAiRBAToANSADKQMQUARAIANCfzcDKAwECyADIAMpAxA3AygMAwsgAykDCFAEQCADKAIkQQE6ADQFIAMgAykDCCADKQMQfDcDEAwCCwsLIAMgAykDEDcDKAsgAykDKCECIANBMGokACACCzYBAX8jAEEQayIBIAA2AgwCfiABKAIMLQAAQQFxBEAgASgCDCkDCCABKAIMKQMQfQwBC0IACwuyAQIBfwF+IwBBEGsiASQAIAEgADYCBCABIAEoAgRCCBAeNgIAAkAgASgCAEUEQCABQgA3AwgMAQsgASABKAIALQAArSABKAIALQAHrUI4hiABKAIALQAGrUIwhnwgASgCAC0ABa1CKIZ8IAEoAgAtAAStQiCGfCABKAIALQADrUIYhnwgASgCAC0AAq1CEIZ8IAEoAgAtAAGtQgiGfHw3AwgLIAEpAwghAiABQRBqJAAgAgumAQEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIKAIgRQRAIAEoAghBDGpBEkEAEBQgAUF/NgIMDAELIAEoAggiACAAKAIgQQFrNgIgIAEoAggoAiBFBEAgASgCCEEAQgBBAhAhGiABKAIIKAIABEAgASgCCCgCABAxQQBIBEAgASgCCEEMakEUQQAQFAsLCyABQQA2AgwLIAEoAgwhACABQRBqJAAgAAvwAgICfwF+AkAgAkUNACAAIAJqIgNBAWsgAToAACAAIAE6AAAgAkEDSQ0AIANBAmsgAToAACAAIAE6AAEgA0EDayABOgAAIAAgAToAAiACQQdJDQAgA0EEayABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiADYCACADIAIgBGtBfHEiAmoiAUEEayAANgIAIAJBCUkNACADIAA2AgggAyAANgIEIAFBCGsgADYCACABQQxrIAA2AgAgAkEZSQ0AIAMgADYCGCADIAA2AhQgAyAANgIQIAMgADYCDCABQRBrIAA2AgAgAUEUayAANgIAIAFBGGsgADYCACABQRxrIAA2AgAgAiADQQRxQRhyIgFrIgJBIEkNACAArUKBgICAEH4hBSABIANqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsL3AEBAX8jAEEQayIBJAAgASAANgIMIAEoAgwEQCABKAIMKAIoBEAgASgCDCgCKEEANgIoIAEoAgwoAihCADcDICABKAIMAn4gASgCDCkDGCABKAIMKQMgVgRAIAEoAgwpAxgMAQsgASgCDCkDIAs3AxgLIAEgASgCDCkDGDcDAANAIAEpAwAgASgCDCkDCFpFBEAgASgCDCgCACABKQMAp0EEdGooAgAQFSABIAEpAwBCAXw3AwAMAQsLIAEoAgwoAgAQFSABKAIMKAIEEBUgASgCDBAVCyABQRBqJAALYAIBfwF+IwBBEGsiASQAIAEgADYCBAJAIAEoAgQoAiRBAUcEQCABKAIEQQxqQRJBABAUIAFCfzcDCAwBCyABIAEoAgRBAEIAQQ0QITcDCAsgASkDCCECIAFBEGokACACC6UCAQJ/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNwMIIAMoAhgoAgAhASADKAIUIQQgAykDCCECIwBBIGsiACQAIAAgATYCFCAAIAQ2AhAgACACNwMIAkACQCAAKAIUKAIkQQFGBEAgACkDCEL///////////8AWA0BCyAAKAIUQQxqQRJBABAUIABCfzcDGAwBCyAAIAAoAhQgACgCECAAKQMIQQsQITcDGAsgACkDGCECIABBIGokACADIAI3AwACQCACQgBTBEAgAygCGEEIaiADKAIYKAIAEBcgA0F/NgIcDAELIAMpAwAgAykDCFIEQCADKAIYQQhqQQZBGxAUIANBfzYCHAwBCyADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtrAQF/IwBBIGsiAiAANgIcIAJCASACKAIcrYY3AxAgAkEMaiABNgIAA0AgAiACKAIMIgBBBGo2AgwgAiAAKAIANgIIIAIoAghBAEhFBEAgAiACKQMQQgEgAigCCK2GhDcDEAwBCwsgAikDEAsvAQF/IwBBEGsiASQAIAEgADYCDCABKAIMKAIIEBUgASgCDEEANgIIIAFBEGokAAvNAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIERQRAIAIoAghBDGpBEkEAEBQgAkF/NgIMDAELIAIoAgQQOyACKAIIKAIABEAgAigCCCgCACACKAIEEDhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAigCBEI4QQMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAsxAQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDBBdIAEoAgwQFQsgAUEQaiQAC98EAQF/IwBBIGsiAiAANgIYIAIgATYCFAJAIAIoAhhFBEAgAkEBNgIcDAELIAIgAigCGCgCADYCDAJAIAIoAhgoAggEQCACIAIoAhgoAgg2AhAMAQsgAkEBNgIQIAJBADYCCANAAkAgAigCCCACKAIYLwEETw0AAkAgAigCDCACKAIIai0AAEEfSwRAIAIoAgwgAigCCGotAABBgAFJDQELIAIoAgwgAigCCGotAABBDUYNACACKAIMIAIoAghqLQAAQQpGDQAgAigCDCACKAIIai0AAEEJRgRADAELIAJBAzYCEAJAIAIoAgwgAigCCGotAABB4AFxQcABRgRAIAJBATYCAAwBCwJAIAIoAgwgAigCCGotAABB8AFxQeABRgRAIAJBAjYCAAwBCwJAIAIoAgwgAigCCGotAABB+AFxQfABRgRAIAJBAzYCAAwBCyACQQQ2AhAMBAsLCyACKAIYLwEEIAIoAgggAigCAGpNBEAgAkEENgIQDAILIAJBATYCBANAIAIoAgQgAigCAE0EQCACKAIMIAIoAgggAigCBGpqLQAAQcABcUGAAUcEQCACQQQ2AhAMBgUgAiACKAIEQQFqNgIEDAILAAsLIAIgAigCACACKAIIajYCCAsgAiACKAIIQQFqNgIIDAELCwsgAigCGCACKAIQNgIIIAIoAhQEQAJAIAIoAhRBAkcNACACKAIQQQNHDQAgAkECNgIQIAIoAhhBAjYCCAsCQCACKAIUIAIoAhBGDQAgAigCEEEBRg0AIAJBBTYCHAwCCwsgAiACKAIQNgIcCyACKAIcC2oBAX8jAEEQayIBIAA2AgwgASgCDEIANwMAIAEoAgxBADYCCCABKAIMQn83AxAgASgCDEEANgIsIAEoAgxBfzYCKCABKAIMQgA3AxggASgCDEIANwMgIAEoAgxBADsBMCABKAIMQQA7ATILUgECf0GQlwEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABATRQ0BC0GQlwEgADYCACABDwtBtJsBQTA2AgBBfwuNBQEDfyMAQRBrIgEkACABIAA2AgwgASgCDARAIAEoAgwoAgAEQCABKAIMKAIAEDEaIAEoAgwoAgAQGwsgASgCDCgCHBAVIAEoAgwoAiAQJSABKAIMKAIkECUgASgCDCgCUCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDCgCEARAIABBADYCCANAIAAoAgggACgCDCgCAEkEQCAAKAIMKAIQIAAoAghBAnRqKAIABEAgACgCDCgCECAAKAIIQQJ0aigCACEDIwBBEGsiAiQAIAIgAzYCDANAIAIoAgwEQCACIAIoAgwoAhg2AgggAigCDBAVIAIgAigCCDYCDAwBCwsgAkEQaiQACyAAIAAoAghBAWo2AggMAQsLIAAoAgwoAhAQFQsgACgCDBAVCyAAQRBqJAAgASgCDCgCQARAIAFCADcDAANAIAEpAwAgASgCDCkDMFQEQCABKAIMKAJAIAEpAwCnQQR0ahBiIAEgASkDAEIBfDcDAAwBCwsgASgCDCgCQBAVCyABQgA3AwADQCABKQMAIAEoAgwoAkStVARAIAEoAgwoAkwgASkDAKdBAnRqKAIAIQIjAEEQayIAJAAgACACNgIMIAAoAgxBAToAKAJ/IwBBEGsiAiAAKAIMQQxqNgIMIAIoAgwoAgBFCwRAIAAoAgxBDGpBCEEAEBQLIABBEGokACABIAEpAwBCAXw3AwAMAQsLIAEoAgwoAkwQFSABKAIMKAJUIQIjAEEQayIAJAAgACACNgIMIAAoAgwEQCAAKAIMKAIIBEAgACgCDCgCDCAAKAIMKAIIEQIACyAAKAIMEBULIABBEGokACABKAIMQQhqEDcgASgCDBAVCyABQRBqJAALjw4BAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCCCEBIAMoAgQhAiMAQSBrIgAgAygCDDYCGCAAIAE2AhQgACACNgIQIAAgACgCGEEQdjYCDCAAIAAoAhhB//8DcTYCGAJAIAAoAhBBAUYEQCAAIAAoAhQtAAAgACgCGGo2AhggACgCGEHx/wNPBEAgACAAKAIYQfH/A2s2AhgLIAAgACgCGCAAKAIMajYCDCAAKAIMQfH/A08EQCAAIAAoAgxB8f8DazYCDAsgACAAKAIYIAAoAgxBEHRyNgIcDAELIAAoAhRFBEAgAEEBNgIcDAELIAAoAhBBEEkEQANAIAAgACgCECIBQQFrNgIQIAEEQCAAIAAoAhQiAUEBajYCFCAAIAEtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMDAELCyAAKAIYQfH/A08EQCAAIAAoAhhB8f8DazYCGAsgACAAKAIMQfH/A3A2AgwgACAAKAIYIAAoAgxBEHRyNgIcDAELA0AgACgCEEGwK08EQCAAIAAoAhBBsCtrNgIQIABB2wI2AggDQCAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAkgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQALIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAwgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAOIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA8gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFEEQajYCFCAAIAAoAghBAWsiATYCCCABDQALIAAgACgCGEHx/wNwNgIYIAAgACgCDEHx/wNwNgIMDAELCyAAKAIQBEADQCAAKAIQQRBPBEAgACAAKAIQQRBrNgIQIAAgACgCFC0AACAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQABIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAIgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AAyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAEIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAUgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAHIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAggACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAKIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAsgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQANIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA4gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIUQRBqNgIUDAELCwNAIAAgACgCECIBQQFrNgIQIAEEQCAAIAAoAhQiAUEBajYCFCAAIAEtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMDAELCyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAsgACAAKAIYIAAoAgxBEHRyNgIcCyAAKAIcIQAgA0EQaiQAIAALhAEBAX8jAEEQayIBJAAgASAANgIIIAFB2AAQGCIANgIEAkAgAEUEQCABQQA2AgwMAQsCQCABKAIIBEAgASgCBCABKAIIQdgAEBkaDAELIAEoAgQQTwsgASgCBEEANgIAIAEoAgRBAToABSABIAEoAgQ2AgwLIAEoAgwhACABQRBqJAAgAAtvAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCGCADKAIQrRAeNgIMAkAgAygCDEUEQCADQX82AhwMAQsgAygCDCADKAIUIAMoAhAQGRogA0EANgIcCyADKAIcGiADQSBqJAALogEBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCDCAEKQMQECkiADYCBAJAIABFBEAgBCgCCEEOQQAQFCAEQQA2AhwMAQsgBCgCGCAEKAIEKAIEIAQpAxAgBCgCCBBhQQBIBEAgBCgCBBAWIARBADYCHAwBCyAEIAQoAgQ2AhwLIAQoAhwhACAEQSBqJAAgAAugAQEBfyMAQSBrIgMkACADIAA2AhQgAyABNgIQIAMgAjcDCCADIAMoAhA2AgQCQCADKQMIQghUBEAgA0J/NwMYDAELIwBBEGsiACADKAIUNgIMIAAoAgwoAgAhACADKAIEIAA2AgAjAEEQayIAIAMoAhQ2AgwgACgCDCgCBCEAIAMoAgQgADYCBCADQgg3AxgLIAMpAxghAiADQSBqJAAgAgs/AQF/IwBBEGsiAiAANgIMIAIgATYCCCACKAIMBEAgAigCDCACKAIIKAIANgIAIAIoAgwgAigCCCgCBDYCBAsLgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC7wCAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCCAEKAIIRQRAIAQgBCgCGEEIajYCCAsCQCAEKQMQIAQoAhgpAzBaBEAgBCgCCEESQQAQFCAEQQA2AhwMAQsCQCAEKAIMQQhxRQRAIAQoAhgoAkAgBCkDEKdBBHRqKAIEDQELIAQoAhgoAkAgBCkDEKdBBHRqKAIARQRAIAQoAghBEkEAEBQgBEEANgIcDAILAkAgBCgCGCgCQCAEKQMQp0EEdGotAAxBAXFFDQAgBCgCDEEIcQ0AIAQoAghBF0EAEBQgBEEANgIcDAILIAQgBCgCGCgCQCAEKQMQp0EEdGooAgA2AhwMAQsgBCAEKAIYKAJAIAQpAxCnQQR0aigCBDYCHAsgBCgCHCEAIARBIGokACAAC9kIAQJ/IwBBIGsiBCQAIAQgADYCGCAEIAE2AhQgBCACNgIQIAQgAzYCDAJAIAQoAhhFBEAgBCgCFARAIAQoAhRBADYCAAsgBEGQ2QA2AhwMAQsgBCgCEEHAAHFFBEAgBCgCGCgCCEUEQCAEKAIYQQAQOhoLAkACQAJAIAQoAhBBgAFxRQ0AIAQoAhgoAghBAUYNACAEKAIYKAIIQQJHDQELIAQoAhgoAghBBEcNAQsgBCgCGCgCDEUEQCAEKAIYKAIAIQEgBCgCGC8BBCECIAQoAhhBEGohAyAEKAIMIQUjAEEwayIAJAAgACABNgIoIAAgAjYCJCAAIAM2AiAgACAFNgIcIAAgACgCKDYCGAJAIAAoAiRFBEAgACgCIARAIAAoAiBBADYCAAsgAEEANgIsDAELIABBATYCECAAQQA2AgwDQCAAKAIMIAAoAiRJBEAjAEEQayIBIAAoAhggACgCDGotAABBAXRBkNUAai8BADYCCAJAIAEoAghBgAFJBEAgAUEBNgIMDAELIAEoAghBgBBJBEAgAUECNgIMDAELIAEoAghBgIAESQRAIAFBAzYCDAwBCyABQQQ2AgwLIAAgASgCDCAAKAIQajYCECAAIAAoAgxBAWo2AgwMAQsLIAAgACgCEBAYIgE2AhQgAUUEQCAAKAIcQQ5BABAUIABBADYCLAwBCyAAQQA2AgggAEEANgIMA0AgACgCDCAAKAIkSQRAIAAoAhQgACgCCGohAiMAQRBrIgEgACgCGCAAKAIMai0AAEEBdEGQ1QBqLwEANgIIIAEgAjYCBAJAIAEoAghBgAFJBEAgASgCBCABKAIIOgAAIAFBATYCDAwBCyABKAIIQYAQSQRAIAEoAgQgASgCCEEGdkEfcUHAAXI6AAAgASgCBCABKAIIQT9xQYABcjoAASABQQI2AgwMAQsgASgCCEGAgARJBEAgASgCBCABKAIIQQx2QQ9xQeABcjoAACABKAIEIAEoAghBBnZBP3FBgAFyOgABIAEoAgQgASgCCEE/cUGAAXI6AAIgAUEDNgIMDAELIAEoAgQgASgCCEESdkEHcUHwAXI6AAAgASgCBCABKAIIQQx2QT9xQYABcjoAASABKAIEIAEoAghBBnZBP3FBgAFyOgACIAEoAgQgASgCCEE/cUGAAXI6AAMgAUEENgIMCyAAIAEoAgwgACgCCGo2AgggACAAKAIMQQFqNgIMDAELCyAAKAIUIAAoAhBBAWtqQQA6AAAgACgCIARAIAAoAiAgACgCEEEBazYCAAsgACAAKAIUNgIsCyAAKAIsIQEgAEEwaiQAIAEhACAEKAIYIAA2AgwgAEUEQCAEQQA2AhwMBAsLIAQoAhQEQCAEKAIUIAQoAhgoAhA2AgALIAQgBCgCGCgCDDYCHAwCCwsgBCgCFARAIAQoAhQgBCgCGC8BBDYCAAsgBCAEKAIYKAIANgIcCyAEKAIcIQAgBEEgaiQAIAALOQEBfyMAQRBrIgEgADYCDEEAIQAgASgCDC0AAEEBcQR/IAEoAgwpAxAgASgCDCkDCFEFQQALQQFxC5wIAQt/IABFBEAgARAYDwsgAUFATwRAQbSbAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZifASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQrAEMAQsgB0HQmwEoAgBGBEBBxJsBKAIAIARqIgQgBk0NAiAFIAlBAXEgBnJBAnI2AgQgBSAGaiIDIAQgBmsiAkEBcjYCBEHEmwEgAjYCAEHQmwEgAzYCAAwBCyAHQcybASgCAEYEQEHAmwEoAgAgBGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBSAJQQFxIAZyQQJyNgIEIAUgBmoiBCACQQFyNgIEIAMgBWoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAFIAlBAXEgA3JBAnI2AgQgAyAFaiICIAIoAgRBAXI2AgRBACECQQAhBAtBzJsBIAQ2AgBBwJsBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAEaiIKIAZJDQEgCiAGayEMAkAgA0H/AU0EQCAHKAIIIgQgA0EDdiICQQN0QeCbAWpGGiAEIAcoAgwiA0YEQEG4mwFBuJsBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBygCGCELAkAgByAHKAIMIghHBEAgBygCCCICQcibASgCAEkaIAIgCDYCDCAIIAI2AggMAQsCQCAHQRRqIgQoAgAiAg0AIAdBEGoiBCgCACICDQBBACEIDAELA0AgBCEDIAIiCEEUaiIEKAIAIgINACAIQRBqIQQgCCgCECICDQALIANBADYCAAsgC0UNAAJAIAcgBygCHCIDQQJ0QeidAWoiAigCAEYEQCACIAg2AgAgCA0BQbybAUG8mwEoAgBBfiADd3E2AgAMAgsgC0EQQRQgCygCECAHRhtqIAg2AgAgCEUNAQsgCCALNgIYIAcoAhAiAgRAIAggAjYCECACIAg2AhgLIAcoAhQiAkUNACAIIAI2AhQgAiAINgIYCyAMQQ9NBEAgBSAJQQFxIApyQQJyNgIEIAUgCmoiAiACKAIEQQFyNgIEDAELIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgDEEDcjYCBCAFIApqIgIgAigCBEEBcjYCBCADIAwQrAELIAUhAgsgAgsiAgRAIAJBCGoPCyABEBgiBUUEQEEADwsgBSAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxAZGiAAEBUgBQvvAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIILQAoQQFxBEAgAUF/NgIMDAELIAEoAggoAiRBA0YEQCABKAIIQQxqQRdBABAUIAFBfzYCDAwBCwJAIAEoAggoAiAEQAJ/IwBBEGsiACABKAIINgIMIAAoAgwpAxhCwACDUAsEQCABKAIIQQxqQR1BABAUIAFBfzYCDAwDCwwBCyABKAIIKAIABEAgASgCCCgCABBJQQBIBEAgASgCCEEMaiABKAIIKAIAEBcgAUF/NgIMDAMLCyABKAIIQQBCAEEAECFCAFMEQCABKAIIKAIABEAgASgCCCgCABAxGgsgAUF/NgIMDAILCyABKAIIQQA6ADQgASgCCEEAOgA1IwBBEGsiACABKAIIQQxqNgIMIAAoAgwEQCAAKAIMQQA2AgAgACgCDEEANgIECyABKAIIIgAgACgCIEEBajYCICABQQA2AgwLIAEoAgwhACABQRBqJAAgAAt1AgF/AX4jAEEQayIBJAAgASAANgIEAkAgASgCBC0AKEEBcQRAIAFCfzcDCAwBCyABKAIEKAIgRQRAIAEoAgRBDGpBEkEAEBQgAUJ/NwMIDAELIAEgASgCBEEAQgBBBxAhNwMICyABKQMIIQIgAUEQaiQAIAILnQEBAX8jAEEQayIBIAA2AggCQAJAAkAgASgCCEUNACABKAIIKAIgRQ0AIAEoAggoAiQNAQsgAUEBNgIMDAELIAEgASgCCCgCHDYCBAJAAkAgASgCBEUNACABKAIEKAIAIAEoAghHDQAgASgCBCgCBEG0/gBJDQAgASgCBCgCBEHT/gBNDQELIAFBATYCDAwBCyABQQA2AgwLIAEoAgwLgAEBA38jAEEQayICIAA2AgwgAiABNgIIIAIoAghBCHYhASACKAIMKAIIIQMgAigCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAToAACACKAIIQf8BcSEBIAIoAgwoAgghAyACKAIMIgIoAhQhACACIABBAWo2AhQgACADaiABOgAAC5kFAQF/IwBBQGoiBCQAIAQgADYCOCAEIAE3AzAgBCACNgIsIAQgAzYCKCAEQcgAEBgiADYCJAJAIABFBEAgBEEANgI8DAELIAQoAiRCADcDOCAEKAIkQgA3AxggBCgCJEIANwMwIAQoAiRBADYCACAEKAIkQQA2AgQgBCgCJEIANwMIIAQoAiRCADcDECAEKAIkQQA2AiggBCgCJEIANwMgAkAgBCkDMFAEQEEIEBghACAEKAIkIAA2AgQgAEUEQCAEKAIkEBUgBCgCKEEOQQAQFCAEQQA2AjwMAwsgBCgCJCgCBEIANwMADAELIAQoAiQgBCkDMEEAEMEBQQFxRQRAIAQoAihBDkEAEBQgBCgCJBAzIARBADYCPAwCCyAEQgA3AwggBEIANwMYIARCADcDEANAIAQpAxggBCkDMFQEQCAEKAI4IAQpAxinQQR0aikDCFBFBEAgBCgCOCAEKQMYp0EEdGooAgBFBEAgBCgCKEESQQAQFCAEKAIkEDMgBEEANgI8DAULIAQoAiQoAgAgBCkDEKdBBHRqIAQoAjggBCkDGKdBBHRqKAIANgIAIAQoAiQoAgAgBCkDEKdBBHRqIAQoAjggBCkDGKdBBHRqKQMINwMIIAQoAiQoAgQgBCkDGKdBA3RqIAQpAwg3AwAgBCAEKAI4IAQpAxinQQR0aikDCCAEKQMIfDcDCCAEIAQpAxBCAXw3AxALIAQgBCkDGEIBfDcDGAwBCwsgBCgCJCAEKQMQNwMIIAQoAiQgBCgCLAR+QgAFIAQoAiQpAwgLNwMYIAQoAiQoAgQgBCgCJCkDCKdBA3RqIAQpAwg3AwAgBCgCJCAEKQMINwMwCyAEIAQoAiQ2AjwLIAQoAjwhACAEQUBrJAAgAAueAQEBfyMAQSBrIgQkACAEIAA2AhggBCABNwMQIAQgAjYCDCAEIAM2AgggBCAEKAIYIAQpAxAgBCgCDCAEKAIIEEUiADYCBAJAIABFBEAgBEEANgIcDAELIAQgBCgCBCgCMEEAIAQoAgwgBCgCCBBGIgA2AgAgAEUEQCAEQQA2AhwMAQsgBCAEKAIANgIcCyAEKAIcIQAgBEEgaiQAIAAL8QEBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADoABCABKAIMQQA6AAUgASgCDEEBOgAGIAEoAgxBvwY7AQggASgCDEEKOwEKIAEoAgxBADsBDCABKAIMQX82AhAgASgCDEEANgIUIAEoAgxBADYCGCABKAIMQgA3AyAgASgCDEIANwMoIAEoAgxBADYCMCABKAIMQQA2AjQgASgCDEEANgI4IAEoAgxBADYCPCABKAIMQQA7AUAgASgCDEGAgNiNeDYCRCABKAIMQgA3A0ggASgCDEEAOwFQIAEoAgxBADsBUiABKAIMQQA2AlQL0hMBAX8jAEGwAWsiAyQAIAMgADYCqAEgAyABNgKkASADIAI2AqABIANBADYCkAEgAyADKAKkASgCMEEAEDo2ApQBIAMgAygCpAEoAjhBABA6NgKYAQJAAkACQAJAIAMoApQBQQJGBEAgAygCmAFBAUYNAQsgAygClAFBAUYEQCADKAKYAUECRg0BCyADKAKUAUECRw0BIAMoApgBQQJHDQELIAMoAqQBIgAgAC8BDEGAEHI7AQwMAQsgAygCpAEiACAALwEMQf/vA3E7AQwgAygClAFBAkYEQCADQfXgASADKAKkASgCMCADKAKoAUEIahCCATYCkAEgAygCkAFFBEAgA0F/NgKsAQwDCwsCQCADKAKgAUGAAnENACADKAKYAUECRw0AIANB9cYBIAMoAqQBKAI4IAMoAqgBQQhqEIIBNgJIIAMoAkhFBEAgAygCkAEQIyADQX82AqwBDAMLIAMoAkggAygCkAE2AgAgAyADKAJINgKQAQsLAkAgAygCpAEvAVJFBEAgAygCpAEiACAALwEMQf7/A3E7AQwMAQsgAygCpAEiACAALwEMQQFyOwEMCyADIAMoAqQBIAMoAqABEF5BAXE6AIYBIAMgAygCoAFBgApxQYAKRwR/IAMtAIYBBUEBC0EBcToAhwEgAwJ/QQEgAygCpAEvAVJBgQJGDQAaQQEgAygCpAEvAVJBggJGDQAaIAMoAqQBLwFSQYMCRgtBAXE6AIUBIAMtAIcBQQFxBEAgAyADQSBqQhwQKTYCHCADKAIcRQRAIAMoAqgBQQhqQQ5BABAUIAMoApABECMgA0F/NgKsAQwCCwJAIAMoAqABQYACcQRAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9YDQILIAMoAhwgAygCpAEpAygQLSADKAIcIAMoAqQBKQMgEC0MAQsCQAJAIAMoAqABQYAIcQ0AIAMoAqQBKQMgQv////8PVg0AIAMoAqQBKQMoQv////8PVg0AIAMoAqQBKQNIQv////8PWA0BCyADKAKkASkDKEL/////D1oEQCADKAIcIAMoAqQBKQMoEC0LIAMoAqQBKQMgQv////8PWgRAIAMoAhwgAygCpAEpAyAQLQsgAygCpAEpA0hC/////w9aBEAgAygCHCADKAKkASkDSBAtCwsLAn8jAEEQayIAIAMoAhw2AgwgACgCDC0AAEEBcUULBEAgAygCqAFBCGpBFEEAEBQgAygCHBAWIAMoApABECMgA0F/NgKsAQwCCyADQQECfyMAQRBrIgAgAygCHDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALp0H//wNxCyADQSBqQYAGEFE2AowBIAMoAhwQFiADKAKMASADKAKQATYCACADIAMoAowBNgKQAQsgAy0AhQFBAXEEQCADIANBFWpCBxApNgIQIAMoAhBFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILIAMoAhBBAhAfIAMoAhBBvRJBAhBAIAMoAhAgAygCpAEvAVJB/wFxEI4BIAMoAhAgAygCpAEoAhBB//8DcRAfAn8jAEEQayIAIAMoAhA2AgwgACgCDC0AAEEBcUULBEAgAygCqAFBCGpBFEEAEBQgAygCEBAWIAMoApABECMgA0F/NgKsAQwCCyADQYGyAkEHIANBFWpBgAYQUTYCDCADKAIQEBYgAygCDCADKAKQATYCACADIAMoAgw2ApABCyADIANB0ABqQi4QKSIANgJMIABFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAELIAMoAkxB8RJB9hIgAygCoAFBgAJxG0EEEEAgAygCoAFBgAJxRQRAIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCAtB//8DcRAfCyADKAJMIAMtAIYBQQFxBH9BLQUgAygCpAEvAQoLQf//A3EQHyADKAJMIAMoAqQBLwEMEB8CQCADLQCFAUEBcQRAIAMoAkxB4wAQHwwBCyADKAJMIAMoAqQBKAIQQf//A3EQHwsgAygCpAEoAhQgA0GeAWogA0GcAWoQgQEgAygCTCADLwGeARAfIAMoAkwgAy8BnAEQHwJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIAwBCyADKAJMIAMoAqQBKAIYECALAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAgIAMoAkxBfxAgDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIAwBCyADKAJMQX8QIAsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAgDAELIAMoAkxBfxAgCwsgAygCTCADKAKkASgCMBBTQf//A3EQHyADIAMoAqQBKAI0IAMoAqABEIYBQf//A3EgAygCkAFBgAYQhgFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAfIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFNB//8DcRAfIAMoAkwgAygCpAEoAjxB//8DcRAfIAMoAkwgAygCpAEvAUAQHyADKAJMIAMoAqQBKAJEECACQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAgDAELIAMoAkxBfxAgCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAJMEBYgAygCkAEQIyADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNUEASARAIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCTBAWIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQigFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQhQFBAEgEQCADKAKQARAjIANBfzYCrAEMAgsLIAMoApABECMgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCFAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIoBQQBIBEAgA0F/NgKsAQwDCwsLIAMgAy0AhwFBAXE2AqwBCyADKAKsASEAIANBsAFqJAAgAAvgAgEBfyMAQSBrIgQkACAEIAA7ARogBCABOwEYIAQgAjYCFCAEIAM2AhAgBEEQEBgiADYCDAJAIABFBEAgBEEANgIcDAELIAQoAgxBADYCACAEKAIMIAQoAhA2AgQgBCgCDCAELwEaOwEIIAQoAgwgBC8BGDsBCgJAIAQvARgEQCAEKAIUIQEgBC8BGCECIwBBIGsiACQAIAAgATYCGCAAIAI2AhQgAEEANgIQAkAgACgCFEUEQCAAQQA2AhwMAQsgACAAKAIUEBg2AgwgACgCDEUEQCAAKAIQQQ5BABAUIABBADYCHAwBCyAAKAIMIAAoAhggACgCFBAZGiAAIAAoAgw2AhwLIAAoAhwhASAAQSBqJAAgASEAIAQoAgwgADYCDCAARQRAIAQoAgwQFSAEQQA2AhwMAwsMAQsgBCgCDEEANgIMCyAEIAQoAgw2AhwLIAQoAhwhACAEQSBqJAAgAAuMAwEBfyMAQSBrIgQkACAEIAA2AhggBCABOwEWIAQgAjYCECAEIAM2AgwCQCAELwEWRQRAIARBADYCHAwBCwJAAkACQAJAIAQoAhBBgDBxIgAEQCAAQYAQRg0BIABBgCBGDQIMAwsgBEEANgIEDAMLIARBAjYCBAwCCyAEQQQ2AgQMAQsgBCgCDEESQQAQFCAEQQA2AhwMAQsgBEEUEBgiADYCCCAARQRAIAQoAgxBDkEAEBQgBEEANgIcDAELIAQvARZBAWoQGCEAIAQoAgggADYCACAARQRAIAQoAggQFSAEQQA2AhwMAQsgBCgCCCgCACAEKAIYIAQvARYQGRogBCgCCCgCACAELwEWakEAOgAAIAQoAgggBC8BFjsBBCAEKAIIQQA2AgggBCgCCEEANgIMIAQoAghBADYCECAEKAIEBEAgBCgCCCAEKAIEEDpBBUYEQCAEKAIIECUgBCgCDEESQQAQFCAEQQA2AhwMAgsLIAQgBCgCCDYCHAsgBCgCHCEAIARBIGokACAACzcBAX8jAEEQayIBIAA2AggCQCABKAIIRQRAIAFBADsBDgwBCyABIAEoAggvAQQ7AQ4LIAEvAQ4LQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAQgBWshAwsgAwuRAQEFfyAAKAJMQQBOIQMgACgCAEEBcSIERQRAIAAoAjQiAQRAIAEgACgCODYCOAsgACgCOCICBEAgAiABNgI0CyAAQaygASgCAEYEQEGsoAEgAjYCAAsLIAAQpQEhASAAIAAoAgwRAAAhAiAAKAJgIgUEQCAFEBULAkAgBEUEQCAAEBUMAQsgA0UNAAsgASACcgv5AQEBfyMAQSBrIgIkACACIAA2AhwgAiABOQMQAkAgAigCHEUNACACAnwCfCACKwMQRAAAAAAAAAAAZARAIAIrAxAMAQtEAAAAAAAAAAALRAAAAAAAAPA/YwRAAnwgAisDEEQAAAAAAAAAAGQEQCACKwMQDAELRAAAAAAAAAAACwwBC0QAAAAAAADwPwsgAigCHCsDKCACKAIcKwMgoaIgAigCHCsDIKA5AwggAigCHCsDECACKwMIIAIoAhwrAxihY0UNACACKAIcKAIAIAIrAwggAigCHCgCDCACKAIcKAIEERYAIAIoAhwgAisDCDkDGAsgAkEgaiQAC+EFAgJ/AX4jAEEwayIEJAAgBCAANgIkIAQgATYCICAEIAI2AhwgBCADNgIYAkAgBCgCJEUEQCAEQn83AygMAQsgBCgCIEUEQCAEKAIYQRJBABAUIARCfzcDKAwBCyAEKAIcQYMgcQRAIARBFUEWIAQoAhxBAXEbNgIUIARCADcDAANAIAQpAwAgBCgCJCkDMFQEQCAEIAQoAiQgBCkDACAEKAIcIAQoAhgQTjYCECAEKAIQBEAgBCgCHEECcQRAIAQCfyAEKAIQIgEQK0EBaiEAA0BBACAARQ0BGiABIABBAWsiAGoiAi0AAEEvRw0ACyACCzYCDCAEKAIMBEAgBCAEKAIMQQFqNgIQCwsgBCgCICAEKAIQIAQoAhQRAwBFBEAjAEEQayIAIAQoAhg2AgwgACgCDARAIAAoAgxBADYCACAAKAIMQQA2AgQLIAQgBCkDADcDKAwFCwsgBCAEKQMAQgF8NwMADAELCyAEKAIYQQlBABAUIARCfzcDKAwBCyAEKAIkKAJQIQEgBCgCICECIAQoAhwhAyAEKAIYIQUjAEEwayIAJAAgACABNgIkIAAgAjYCICAAIAM2AhwgACAFNgIYAkACQCAAKAIkBEAgACgCIA0BCyAAKAIYQRJBABAUIABCfzcDKAwBCyAAKAIkKQMIQgBSBEAgACAAKAIgEHQ2AhQgACAAKAIUIAAoAiQoAgBwNgIQIAAgACgCJCgCECAAKAIQQQJ0aigCADYCDANAAkAgACgCDEUNACAAKAIgIAAoAgwoAgAQWgRAIAAgACgCDCgCGDYCDAwCBSAAKAIcQQhxBEAgACgCDCkDCEJ/UgRAIAAgACgCDCkDCDcDKAwGCwwCCyAAKAIMKQMQQn9SBEAgACAAKAIMKQMQNwMoDAULCwsLCyAAKAIYQQlBABAUIABCfzcDKAsgACkDKCEGIABBMGokACAEIAY3AygLIAQpAyghBiAEQTBqJAAgBgvUAwEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCEAJAAkAgAygCGARAIAMoAhQNAQsgAygCEEESQQAQFCADQQA6AB8MAQsgAygCGCkDCEIAUgRAIAMgAygCFBB0NgIMIAMgAygCDCADKAIYKAIAcDYCCCADQQA2AgAgAyADKAIYKAIQIAMoAghBAnRqKAIANgIEA0AgAygCBARAAkAgAygCBCgCHCADKAIMRw0AIAMoAhQgAygCBCgCABBaDQACQCADKAIEKQMIQn9RBEACQCADKAIABEAgAygCACADKAIEKAIYNgIYDAELIAMoAhgoAhAgAygCCEECdGogAygCBCgCGDYCAAsgAygCBBAVIAMoAhgiACAAKQMIQgF9NwMIAkAgAygCGCIAKQMIuiAAKAIAuER7FK5H4XqEP6JjRQ0AIAMoAhgoAgBBgAJNDQAgAygCGCADKAIYKAIAQQF2IAMoAhAQWUEBcUUEQCADQQA6AB8MCAsLDAELIAMoAgRCfzcDEAsgA0EBOgAfDAQLIAMgAygCBDYCACADIAMoAgQoAhg2AgQMAQsLCyADKAIQQQlBABAUIANBADoAHwsgAy0AH0EBcSEAIANBIGokACAAC98CAQF/IwBBMGsiAyQAIAMgADYCKCADIAE2AiQgAyACNgIgAkAgAygCJCADKAIoKAIARgRAIANBAToALwwBCyADIAMoAiRBBBB2IgA2AhwgAEUEQCADKAIgQQ5BABAUIANBADoALwwBCyADKAIoKQMIQgBSBEAgA0EANgIYA0AgAygCGCADKAIoKAIAT0UEQCADIAMoAigoAhAgAygCGEECdGooAgA2AhQDQCADKAIUBEAgAyADKAIUKAIYNgIQIAMgAygCFCgCHCADKAIkcDYCDCADKAIUIAMoAhwgAygCDEECdGooAgA2AhggAygCHCADKAIMQQJ0aiADKAIUNgIAIAMgAygCEDYCFAwBCwsgAyADKAIYQQFqNgIYDAELCwsgAygCKCgCEBAVIAMoAiggAygCHDYCECADKAIoIAMoAiQ2AgAgA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALTQECfyABLQAAIQICQCAALQAAIgNFDQAgAiADRw0AA0AgAS0AASECIAAtAAEiA0UNASABQQFqIQEgAEEBaiEAIAIgA0YNAAsLIAMgAmsL0QkBAn8jAEEgayIBJAAgASAANgIcIAEgASgCHCgCLDYCEANAIAEgASgCHCgCPCABKAIcKAJ0ayABKAIcKAJsazYCFCABKAIcKAJsIAEoAhAgASgCHCgCLEGGAmtqTwRAIAEoAhwoAjggASgCHCgCOCABKAIQaiABKAIQIAEoAhRrEBkaIAEoAhwiACAAKAJwIAEoAhBrNgJwIAEoAhwiACAAKAJsIAEoAhBrNgJsIAEoAhwiACAAKAJcIAEoAhBrNgJcIwBBIGsiACABKAIcNgIcIAAgACgCHCgCLDYCDCAAIAAoAhwoAkw2AhggACAAKAIcKAJEIAAoAhhBAXRqNgIQA0AgACAAKAIQQQJrIgI2AhAgACACLwEANgIUIAAoAhACfyAAKAIUIAAoAgxPBEAgACgCFCAAKAIMawwBC0EACzsBACAAIAAoAhhBAWsiAjYCGCACDQALIAAgACgCDDYCGCAAIAAoAhwoAkAgACgCGEEBdGo2AhADQCAAIAAoAhBBAmsiAjYCECAAIAIvAQA2AhQgACgCEAJ/IAAoAhQgACgCDE8EQCAAKAIUIAAoAgxrDAELQQALOwEAIAAgACgCGEEBayICNgIYIAINAAsgASABKAIQIAEoAhRqNgIUCyABKAIcKAIAKAIEBEAgASABKAIcKAIAIAEoAhwoAnQgASgCHCgCOCABKAIcKAJsamogASgCFBB4NgIYIAEoAhwiACABKAIYIAAoAnRqNgJ0IAEoAhwoAnQgASgCHCgCtC1qQQNPBEAgASABKAIcKAJsIAEoAhwoArQtazYCDCABKAIcIAEoAhwoAjggASgCDGotAAA2AkggASgCHCABKAIcKAJUIAEoAhwoAjggASgCDEEBamotAAAgASgCHCgCSCABKAIcKAJYdHNxNgJIA0AgASgCHCgCtC0EQCABKAIcIAEoAhwoAlQgASgCHCgCOCABKAIMQQJqai0AACABKAIcKAJIIAEoAhwoAlh0c3E2AkggASgCHCgCQCABKAIMIAEoAhwoAjRxQQF0aiABKAIcKAJEIAEoAhwoAkhBAXRqLwEAOwEAIAEoAhwoAkQgASgCHCgCSEEBdGogASgCDDsBACABIAEoAgxBAWo2AgwgASgCHCIAIAAoArQtQQFrNgK0LSABKAIcKAJ0IAEoAhwoArQtakEDTw0BCwsLIAEoAhwoAnRBhgJJBH8gASgCHCgCACgCBEEARwVBAAtBAXENAQsLIAEoAhwoAsAtIAEoAhwoAjxJBEAgASABKAIcKAJsIAEoAhwoAnRqNgIIAkAgASgCHCgCwC0gASgCCEkEQCABIAEoAhwoAjwgASgCCGs2AgQgASgCBEGCAksEQCABQYICNgIECyABKAIcKAI4IAEoAghqQQAgASgCBBAyIAEoAhwgASgCCCABKAIEajYCwC0MAQsgASgCHCgCwC0gASgCCEGCAmpJBEAgASABKAIIQYICaiABKAIcKALALWs2AgQgASgCBCABKAIcKAI8IAEoAhwoAsAta0sEQCABIAEoAhwoAjwgASgCHCgCwC1rNgIECyABKAIcKAI4IAEoAhwoAsAtakEAIAEoAgQQMiABKAIcIgAgASgCBCAAKALALWo2AsAtCwsLIAFBIGokAAuGBQEBfyMAQSBrIgQkACAEIAA2AhwgBCABNgIYIAQgAjYCFCAEIAM2AhAgBEEDNgIMAkAgBCgCHCgCvC1BECAEKAIMa0oEQCAEIAQoAhA2AgggBCgCHCIAIAAvAbgtIAQoAghB//8DcSAEKAIcKAK8LXRyOwG4LSAEKAIcLwG4LUH/AXEhASAEKAIcKAIIIQIgBCgCHCIDKAIUIQAgAyAAQQFqNgIUIAAgAmogAToAACAEKAIcLwG4LUEIdiEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhwgBCgCCEH//wNxQRAgBCgCHCgCvC1rdTsBuC0gBCgCHCIAIAAoArwtIAQoAgxBEGtqNgK8LQwBCyAEKAIcIgAgAC8BuC0gBCgCEEH//wNxIAQoAhwoArwtdHI7AbgtIAQoAhwiACAEKAIMIAAoArwtajYCvC0LIAQoAhwQvAEgBCgCFEH/AXEhASAEKAIcKAIIIQIgBCgCHCIDKAIUIQAgAyAAQQFqNgIUIAAgAmogAToAACAEKAIUQf//A3FBCHYhASAEKAIcKAIIIQIgBCgCHCIDKAIUIQAgAyAAQQFqNgIUIAAgAmogAToAACAEKAIUQX9zQf8BcSEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhRBf3NB//8DcUEIdiEBIAQoAhwoAgghAiAEKAIcIgMoAhQhACADIABBAWo2AhQgACACaiABOgAAIAQoAhwoAgggBCgCHCgCFGogBCgCGCAEKAIUEBkaIAQoAhwiACAEKAIUIAAoAhRqNgIUIARBIGokAAuJAgEBfyMAQRBrIgEkACABIAA2AgwCQCABKAIMLQAFQQFxBEAgASgCDCgCAEECcUUNAQsgASgCDCgCMBAlIAEoAgxBADYCMAsCQCABKAIMLQAFQQFxBEAgASgCDCgCAEEIcUUNAQsgASgCDCgCNBAjIAEoAgxBADYCNAsCQCABKAIMLQAFQQFxBEAgASgCDCgCAEEEcUUNAQsgASgCDCgCOBAlIAEoAgxBADYCOAsCQCABKAIMLQAFQQFxBEAgASgCDCgCAEGAAXFFDQELIAEoAgwoAlQEQCABKAIMKAJUQQAgASgCDCgCVBArEDILIAEoAgwoAlQQFSABKAIMQQA2AlQLIAFBEGokAAt3AQF/IwBBEGsiAiAANgIIIAIgATYCBAJAAkACQCACKAIIKQMoQv////8PWg0AIAIoAggpAyBC/////w9aDQAgAigCBEGABHFFDQEgAigCCCkDSEL/////D1QNAQsgAkEBOgAPDAELIAJBADoADwsgAi0AD0EBcQv/AQEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFQQA7ARAgBSADNgIMIAUgBDYCCCAFQQA2AgQCQANAIAUoAhgEQAJAIAUoAhgvAQggBS8BEkcNACAFKAIYKAIEIAUoAgxxQYAGcUUNACAFKAIEIAUvARBIBEAgBSAFKAIEQQFqNgIEDAELIAUoAhQEQCAFKAIUIAUoAhgvAQo7AQALIAUoAhgvAQoEQCAFIAUoAhgoAgw2AhwMBAsgBUGR2QA2AhwMAwsgBSAFKAIYKAIANgIYDAELCyAFKAIIQQlBABAUIAVBADYCHAsgBSgCHCEAIAVBIGokACAAC/8CAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE2AiQgBSACNgIgIAUgAzoAHyAFIAQ2AhgCQAJAIAUoAiANACAFLQAfQQFxDQAgBUEANgIsDAELIAUgBSgCICAFLQAfQQFxahAYNgIUIAUoAhRFBEAgBSgCGEEOQQAQFCAFQQA2AiwMAQsCQCAFKAIoBEAgBSAFKAIoIAUoAiCtEB42AhAgBSgCEEUEQCAFKAIYQQ5BABAUIAUoAhQQFSAFQQA2AiwMAwsgBSgCFCAFKAIQIAUoAiAQGRoMAQsgBSgCJCAFKAIUIAUoAiCtIAUoAhgQYUEASARAIAUoAhQQFSAFQQA2AiwMAgsLIAUtAB9BAXEEQCAFKAIUIAUoAiBqQQA6AAAgBSAFKAIUNgIMA0AgBSgCDCAFKAIUIAUoAiBqSQRAIAUoAgwtAABFBEAgBSgCDEEgOgAACyAFIAUoAgxBAWo2AgwMAQsLCyAFIAUoAhQ2AiwLIAUoAiwhACAFQTBqJAAgAAvCAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNgIkIAQgAjcDGCAEIAM2AhQCQCAEKQMYQv///////////wBWBEAgBCgCFEEUQQAQFCAEQX82AiwMAQsgBCAEKAIoIAQoAiQgBCkDGBAuIgI3AwggAkIAUwRAIAQoAhQgBCgCKBAXIARBfzYCLAwBCyAEKQMIIAQpAxhTBEAgBCgCFEERQQAQFCAEQX82AiwMAQsgBEEANgIsCyAEKAIsIQAgBEEwaiQAIAALNgEBfyMAQRBrIgEkACABIAA2AgwgASgCDBBjIAEoAgwoAgAQOSABKAIMKAIEEDkgAUEQaiQAC6sBAQF/IwBBEGsiASQAIAEgADYCDCABKAIMKAIIBEAgASgCDCgCCBAbIAEoAgxBADYCCAsCQCABKAIMKAIERQ0AIAEoAgwoAgQoAgBBAXFFDQAgASgCDCgCBCgCEEF+Rw0AIAEoAgwoAgQiACAAKAIAQX5xNgIAIAEoAgwoAgQoAgBFBEAgASgCDCgCBBA5IAEoAgxBADYCBAsLIAEoAgxBADoADCABQRBqJAAL8QMBAX8jAEHQAGsiCCQAIAggADYCSCAIIAE3A0AgCCACNwM4IAggAzYCNCAIIAQ6ADMgCCAFNgIsIAggBjcDICAIIAc2AhwCQAJAAkAgCCgCSEUNACAIKQNAIAgpA0AgCCkDOHxWDQAgCCgCLA0BIAgpAyBQDQELIAgoAhxBEkEAEBQgCEEANgJMDAELIAhBgAEQGCIANgIYIABFBEAgCCgCHEEOQQAQFCAIQQA2AkwMAQsgCCgCGCAIKQNANwMAIAgoAhggCCkDQCAIKQM4fDcDCCAIKAIYQShqEDsgCCgCGCAILQAzOgBgIAgoAhggCCgCLDYCECAIKAIYIAgpAyA3AxgjAEEQayIAIAgoAhhB5ABqNgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIwBBEGsiACAIKAJINgIMIAAoAgwpAxhC/4EBgyEBIAhBfzYCCCAIQQc2AgQgCEEONgIAQRAgCBA2IAGEIQEgCCgCGCABNwNwIAgoAhggCCgCGCkDcELAAINCAFI6AHggCCgCNARAIAgoAhhBKGogCCgCNCAIKAIcEJUBQQBIBEAgCCgCGBAVIAhBADYCTAwCCwsgCCAIKAJIQQEgCCgCGCAIKAIcEJIBNgJMCyAIKAJMIQAgCEHQAGokACAAC9MEAQJ/IwBBMGsiAyQAIAMgADYCJCADIAE3AxggAyACNgIUAkAgAygCJCgCQCADKQMYp0EEdGooAgBFBEAgAygCFEEUQQAQFCADQgA3AygMAQsgAyADKAIkKAJAIAMpAxinQQR0aigCACkDSDcDCCADKAIkKAIAIAMpAwhBABAnQQBIBEAgAygCFCADKAIkKAIAEBcgA0IANwMoDAELIAMoAiQoAgAhAiADKAIUIQQjAEEwayIAJAAgACACNgIoIABBgAI7ASYgACAENgIgIAAgAC8BJkGAAnFBAEc6ABsgAEEeQS4gAC0AG0EBcRs2AhwCQCAAKAIoQRpBHCAALQAbQQFxG6xBARAnQQBIBEAgACgCICAAKAIoEBcgAEF/NgIsDAELIAAgACgCKEEEQQYgAC0AG0EBcRusIABBDmogACgCIBBBIgI2AgggAkUEQCAAQX82AiwMAQsgAEEANgIUA0AgACgCFEECQQMgAC0AG0EBcRtIBEAgACAAKAIIEB1B//8DcSAAKAIcajYCHCAAIAAoAhRBAWo2AhQMAQsLIAAoAggQR0EBcUUEQCAAKAIgQRRBABAUIAAoAggQFiAAQX82AiwMAQsgACgCCBAWIAAgACgCHDYCLAsgACgCLCECIABBMGokACADIAIiADYCBCAAQQBIBEAgA0IANwMoDAELIAMpAwggAygCBK18Qv///////////wBWBEAgAygCFEEEQRYQFCADQgA3AygMAQsgAyADKQMIIAMoAgStfDcDKAsgAykDKCEBIANBMGokACABC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQoAhAgBCgCDCAEKAIYQQhqEJIBNgIcCyAEKAIcIQAgBEEgaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAhGiABKAIMQQA2AiQLIAFBEGokAAumAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkAgAigCCC0AKEEBcQRAIAJBfzYCDAwBCyACKAIIKAIABEAgAigCCCgCACACKAIEEGhBAEgEQCACKAIIQQxqIAIoAggoAgAQFyACQX82AgwMAgsLIAIoAgggAkEEakIEQRMQIUIAUwRAIAJBfzYCDAwBCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAuNCAIBfwF+IwBBkAFrIgMkACADIAA2AoQBIAMgATYCgAEgAyACNgJ8IAMQTwJAIAMoAoABKQMIQgBSBEAgAyADKAKAASgCACgCACkDSDcDYCADIAMoAoABKAIAKAIAKQNINwNoDAELIANCADcDYCADQgA3A2gLIANCADcDcAJAA0AgAykDcCADKAKAASkDCFQEQCADKAKAASgCACADKQNwp0EEdGooAgApA0ggAykDaFQEQCADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSDcDaAsgAykDaCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAyADKAKAASgCACADKQNwp0EEdGooAgApA0ggAygCgAEoAgAgAykDcKdBBHRqKAIAKQMgfCADKAKAASgCACADKQNwp0EEdGooAgAoAjAQU0H//wNxrXxCHnw3A1ggAykDWCADKQNgVgRAIAMgAykDWDcDYAsgAykDYCADKAKAASkDIFYEQCADKAJ8QRNBABAUIANCfzcDiAEMAwsgAygChAEoAgAgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNIQQAQJ0EASARAIAMoAnwgAygChAEoAgAQFyADQn83A4gBDAMLIAMgAygChAEoAgBBAEEBIAMoAnwQxgFCf1EEQCADEF0gA0J/NwOIAQwDCwJ/IAMoAoABKAIAIAMpA3CnQQR0aigCACEBIwBBEGsiACQAIAAgATYCCCAAIAM2AgQCQAJAAkAgACgCCC8BCiAAKAIELwEKSA0AIAAoAggoAhAgACgCBCgCEEcNACAAKAIIKAIUIAAoAgQoAhRHDQAgACgCCCgCMCAAKAIEKAIwEIsBDQELIABBfzYCDAwBCwJAAkAgACgCCCgCGCAAKAIEKAIYRw0AIAAoAggpAyAgACgCBCkDIFINACAAKAIIKQMoIAAoAgQpAyhRDQELAkACQCAAKAIELwEMQQhxRQ0AIAAoAgQoAhgNACAAKAIEKQMgQgBSDQAgACgCBCkDKFANAQsgAEF/NgIMDAILCyAAQQA2AgwLIAAoAgwhASAAQRBqJAAgAQsEQCADKAJ8QRVBABAUIAMQXSADQn83A4gBDAMFIAMoAoABKAIAIAMpA3CnQQR0aigCACgCNCADKAI0EIkBIQAgAygCgAEoAgAgAykDcKdBBHRqKAIAIAA2AjQgAygCgAEoAgAgAykDcKdBBHRqKAIAQQE6AAQgA0EANgI0IAMQXSADIAMpA3BCAXw3A3AMAgsACwsgAwJ+IAMpA2AgAykDaH1C////////////AFQEQCADKQNgIAMpA2h9DAELQv///////////wALNwOIAQsgAykDiAEhBCADQZABaiQAIAQL1AQBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAygCECEBIwBBEGsiACQAIAAgATYCCCAAQdgAEBg2AgQCQCAAKAIERQRAIAAoAghBDkEAEBQgAEEANgIMDAELIAAoAgghAiMAQRBrIgEkACABIAI2AgggAUEYEBgiAjYCBAJAIAJFBEAgASgCCEEOQQAQFCABQQA2AgwMAQsgASgCBEEANgIAIAEoAgRCADcDCCABKAIEQQA2AhAgASABKAIENgIMCyABKAIMIQIgAUEQaiQAIAAoAgQgAjYCUCACRQRAIAAoAgQQFSAAQQA2AgwMAQsgACgCBEEANgIAIAAoAgRBADYCBCMAQRBrIgEgACgCBEEIajYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIEQQA2AhggACgCBEEANgIUIAAoAgRBADYCHCAAKAIEQQA2AiQgACgCBEEANgIgIAAoAgRBADoAKCAAKAIEQgA3AzggACgCBEIANwMwIAAoAgRBADYCQCAAKAIEQQA2AkggACgCBEEANgJEIAAoAgRBADYCTCAAKAIEQQA2AlQgACAAKAIENgIMCyAAKAIMIQEgAEEQaiQAIAMgASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFCAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigCTEF/TARAIAIgASAAEKABDAELIAIgASAAEKABC0EASARAIAQoAghBBEG0mwEoAgAQFCAEQX82AhwMAQsgBEEANgIcCyAEKAIcIQAgBEEgaiQAIAALJABBACAAEAUiACAAQRtGGyIABH9BtJsBIAA2AgBBAAVBAAsaC3ABAX8jAEEQayIDJAAgAwJ/IAFBwABxRQRAQQAgAUGAgIQCcUGAgIQCRw0BGgsgAyACQQRqNgIMIAIoAgALNgIAIAAgAUGAgAJyIAMQECIAQYFgTwRAQbSbAUEAIABrNgIAQX8hAAsgA0EQaiQAIAALMwEBfwJ/IAAQByIBQWFGBEAgABARIQELIAFBgWBPCwR/QbSbAUEAIAFrNgIAQX8FIAELC2kBAn8CQCAAKAIUIAAoAhxNDQAgAEEAQQAgACgCJBEBABogACgCFA0AQX8PCyAAKAIEIgEgACgCCCICSQRAIAAgASACa6xBASAAKAIoEQ8AGgsgAEEANgIcIABCADcDECAAQgA3AgRBAAvaAwEGfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiBCQAIARBCGpBkIcBQZABEBkaIAQgADYCNCAEIAA2AhwgBEF+IABrIgNB/////wcgA0H/////B0kbIgY2AjggBCAAIAZqIgA2AiQgBCAANgIYIARBCGohACMAQdABayIDJAAgAyACNgLMASADQaABakEAQSgQMiADIAMoAswBNgLIAQJAQQAgASADQcgBaiADQdAAaiADQaABahBxQQBIDQAgACgCTEEATiEHIAAoAgAhAiAALABKQQBMBEAgACACQV9xNgIACyACQSBxIQgCfyAAKAIwBEAgACABIANByAFqIANB0ABqIANBoAFqEHEMAQsgAEHQADYCMCAAIANB0ABqNgIQIAAgAzYCHCAAIAM2AhQgACgCLCECIAAgAzYCLCAAIAEgA0HIAWogA0HQAGogA0GgAWoQcSACRQ0AGiAAQQBBACAAKAIkEQEAGiAAQQA2AjAgACACNgIsIABBADYCHCAAQQA2AhAgACgCFBogAEEANgIUQQALGiAAIAAoAgAgCHI2AgAgB0UNAAsgA0HQAWokACAGBEAgBCgCHCIAIAAgBCgCGEZrQQA6AAALIARBoAFqJAAgBUEQaiQAC4wSAg9/AX4jAEHQAGsiBSQAIAUgATYCTCAFQTdqIRMgBUE4aiEQQQAhAQNAAkAgDUEASA0AQf////8HIA1rIAFIBEBBtJsBQT02AgBBfyENDAELIAEgDWohDQsgBSgCTCIHIQECQAJAAkACQAJAAkACQAJAIAUCfwJAIActAAAiBgRAA0ACQAJAIAZB/wFxIgZFBEAgASEGDAELIAZBJUcNASABIQYDQCABLQABQSVHDQEgBSABQQJqIgg2AkwgBkEBaiEGIAEtAAIhDiAIIQEgDkElRg0ACwsgBiAHayEBIAAEQCAAIAcgARAiCyABDQ0gBSgCTCEBIAUoAkwsAAFBMGtBCk8NAyABLQACQSRHDQMgASwAAUEwayEPQQEhESABQQNqDAQLIAUgAUEBaiIINgJMIAEtAAEhBiAIIQEMAAsACyANIQsgAA0IIBFFDQJBASEBA0AgBCABQQJ0aigCACIABEAgAyABQQN0aiAAIAIQqAFBASELIAFBAWoiAUEKRw0BDAoLC0EBIQsgAUEKTw0IA0AgBCABQQJ0aigCAA0IIAFBAWoiAUEKRw0ACwwIC0F/IQ8gAUEBagsiATYCTEEAIQgCQCABLAAAIgxBIGsiBkEfSw0AQQEgBnQiBkGJ0QRxRQ0AA0ACQCAFIAFBAWoiCDYCTCABLAABIgxBIGsiAUEgTw0AQQEgAXQiAUGJ0QRxRQ0AIAEgBnIhBiAIIQEMAQsLIAghASAGIQgLAkAgDEEqRgRAIAUCfwJAIAEsAAFBMGtBCk8NACAFKAJMIgEtAAJBJEcNACABLAABQQJ0IARqQcABa0EKNgIAIAEsAAFBA3QgA2pBgANrKAIAIQpBASERIAFBA2oMAQsgEQ0IQQAhEUEAIQogAARAIAIgAigCACIBQQRqNgIAIAEoAgAhCgsgBSgCTEEBagsiATYCTCAKQX9KDQFBACAKayEKIAhBgMAAciEIDAELIAVBzABqEKcBIgpBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQpwEhCSAFKAJMIQELQQAhBgNAIAYhEkF/IQsgASwAAEHBAGtBOUsNByAFIAFBAWoiDDYCTCABLAAAIQYgDCEBIAYgEkE6bGpB74IBai0AACIGQQFrQQhJDQALIAZBE0YNAiAGRQ0GIA9BAE4EQCAEIA9BAnRqIAY2AgAgBSADIA9BA3RqKQMANwNADAQLIAANAQtBACELDAULIAVBQGsgBiACEKgBIAUoAkwhDAwCCyAPQX9KDQMLQQAhASAARQ0ECyAIQf//e3EiDiAIIAhBgMAAcRshBkEAIQtBpAghDyAQIQgCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAMQQFrLAAAIgFBX3EgASABQQ9xQQNGGyABIBIbIgFB2ABrDiEEEhISEhISEhIOEg8GDg4OEgYSEhISAgUDEhIJEgESEgQACwJAIAFBwQBrDgcOEgsSDg4OAAsgAUHTAEYNCQwRCyAFKQNAIRRBpAgMBQtBACEBAkACQAJAAkACQAJAAkAgEkH/AXEOCAABAgMEFwUGFwsgBSgCQCANNgIADBYLIAUoAkAgDTYCAAwVCyAFKAJAIA2sNwMADBQLIAUoAkAgDTsBAAwTCyAFKAJAIA06AAAMEgsgBSgCQCANNgIADBELIAUoAkAgDaw3AwAMEAsgCUEIIAlBCEsbIQkgBkEIciEGQfgAIQELIBAhByABQSBxIQ4gBSkDQCIUUEUEQANAIAdBAWsiByAUp0EPcUGAhwFqLQAAIA5yOgAAIBRCD1YhDCAUQgSIIRQgDA0ACwsgBSkDQFANAyAGQQhxRQ0DIAFBBHZBpAhqIQ9BAiELDAMLIBAhASAFKQNAIhRQRQRAA0AgAUEBayIBIBSnQQdxQTByOgAAIBRCB1YhByAUQgOIIRQgBw0ACwsgASEHIAZBCHFFDQIgCSAQIAdrIgFBAWogASAJSBshCQwCCyAFKQNAIhRCf1cEQCAFQgAgFH0iFDcDQEEBIQtBpAgMAQsgBkGAEHEEQEEBIQtBpQgMAQtBpghBpAggBkEBcSILGwshDyAUIBAQRCEHCyAGQf//e3EgBiAJQX9KGyEGAkAgBSkDQCIUQgBSDQAgCQ0AQQAhCSAQIQcMCgsgCSAUUCAQIAdraiIBIAEgCUgbIQkMCQsgBSgCQCIBQdgSIAEbIgdBACAJEKsBIgEgByAJaiABGyEIIA4hBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIApBACAGECYMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQqgEiB0EASCIODQAgByAJIAFrSw0AIAhBBGohCCAJIAEgB2oiAUsNAQwCCwtBfyELIA4NBQsgAEEgIAogASAGECYgAUUEQEEAIQEMAQtBACEIIAUoAkAhDANAIAwoAgAiB0UNASAFQQRqIAcQqgEiByAIaiIIIAFKDQEgACAFQQRqIAcQIiAMQQRqIQwgASAISw0ACwsgAEEgIAogASAGQYDAAHMQJiAKIAEgASAKSBshAQwFCyAAIAUrA0AgCiAJIAYgAUEXERkAIQEMBAsgBSAFKQNAPAA3QQEhCSATIQcgDiEGDAILQX8hCwsgBUHQAGokACALDwsgAEEgIAsgCCAHayIOIAkgCSAOSBsiDGoiCCAKIAggCkobIgEgCCAGECYgACAPIAsQIiAAQTAgASAIIAZBgIAEcxAmIABBMCAMIA5BABAmIAAgByAOECIgAEEgIAEgCCAGQYDAAHMQJgwACwALkAIBA38CQCABIAIoAhAiBAR/IAQFQQAhBAJ/IAIgAi0ASiIDQQFrIANyOgBKIAIoAgAiA0EIcQRAIAIgA0EgcjYCAEF/DAELIAJCADcCBCACIAIoAiwiAzYCHCACIAM2AhQgAiADIAIoAjBqNgIQQQALDQEgAigCEAsgAigCFCIFa0sEQCACIAAgASACKAIkEQEADwsCfyACLABLQX9KBEAgASEEA0AgASAEIgNFDQIaIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQEAIgQgA0kNAiAAIANqIQAgAigCFCEFIAEgA2sMAQsgAQshBCAFIAAgBBAZGiACIAIoAhQgBGo2AhQgASEECyAEC0gCAX8BfiMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBCADKAIMQQhqEFchBCADQRBqJAAgBAt3AQF/IwBBEGsiASAANgIIIAFChSo3AwACQCABKAIIRQRAIAFBADYCDAwBCwNAIAEoAggtAAAEQCABIAEoAggtAACtIAEpAwBCIX58Qv////8PgzcDACABIAEoAghBAWo2AggMAQsLIAEgASkDAD4CDAsgASgCDAuHBQEBfyMAQTBrIgUkACAFIAA2AiggBSABNgIkIAUgAjcDGCAFIAM2AhQgBSAENgIQAkACQAJAIAUoAihFDQAgBSgCJEUNACAFKQMYQv///////////wBYDQELIAUoAhBBEkEAEBQgBUEAOgAvDAELIAUoAigoAgBFBEAgBSgCKEGAAiAFKAIQEFlBAXFFBEAgBUEAOgAvDAILCyAFIAUoAiQQdDYCDCAFIAUoAgwgBSgCKCgCAHA2AgggBSAFKAIoKAIQIAUoAghBAnRqKAIANgIEA0ACQCAFKAIERQ0AAkAgBSgCBCgCHCAFKAIMRw0AIAUoAiQgBSgCBCgCABBaDQACQAJAIAUoAhRBCHEEQCAFKAIEKQMIQn9SDQELIAUoAgQpAxBCf1ENAQsgBSgCEEEKQQAQFCAFQQA6AC8MBAsMAQsgBSAFKAIEKAIYNgIEDAELCyAFKAIERQRAIAVBIBAYIgA2AgQgAEUEQCAFKAIQQQ5BABAUIAVBADoALwwCCyAFKAIEIAUoAiQ2AgAgBSgCBCAFKAIoKAIQIAUoAghBAnRqKAIANgIYIAUoAigoAhAgBSgCCEECdGogBSgCBDYCACAFKAIEIAUoAgw2AhwgBSgCBEJ/NwMIIAUoAigiACAAKQMIQgF8NwMIAkAgBSgCKCIAKQMIuiAAKAIAuEQAAAAAAADoP6JkRQ0AIAUoAigoAgBBgICAgHhPDQAgBSgCKCAFKAIoKAIAQQF0IAUoAhAQWUEBcUUEQCAFQQA6AC8MAwsLCyAFKAIUQQhxBEAgBSgCBCAFKQMYNwMICyAFKAIEIAUpAxg3AxAgBUEBOgAvCyAFLQAvQQFxIQAgBUEwaiQAIAALWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEBgiAEUNACAAQQRrLQAAQQNxRQ0AIABBACACEDILIAAL1BEBAX8jAEGwAWsiBiQAIAYgADYCqAEgBiABNgKkASAGIAI2AqABIAYgAzYCnAEgBiAENgKYASAGIAU2ApQBIAZBADYCkAEDQCAGKAKQAUEPS0UEQCAGQSBqIAYoApABQQF0akEAOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFPRQRAIAZBIGogBigCpAEgBigCjAFBAXRqLwEAQQF0aiIAIAAvAQBBAWo7AQAgBiAGKAKMAUEBajYCjAEMAQsLIAYgBigCmAEoAgA2AoABIAZBDzYChAEDQAJAIAYoAoQBQQFJDQAgBkEgaiAGKAKEAUEBdGovAQANACAGIAYoAoQBQQFrNgKEAQwBCwsgBigCgAEgBigChAFLBEAgBiAGKAKEATYCgAELAkAgBigChAFFBEAgBkHAADoAWCAGQQE6AFkgBkEAOwFaIAYoApwBIgEoAgAhACABIABBBGo2AgAgACAGQdgAaigBADYBACAGKAKcASIBKAIAIQAgASAAQQRqNgIAIAAgBkHYAGooAQA2AQAgBigCmAFBATYCACAGQQA2AqwBDAELIAZBATYCiAEDQAJAIAYoAogBIAYoAoQBTw0AIAZBIGogBigCiAFBAXRqLwEADQAgBiAGKAKIAUEBajYCiAEMAQsLIAYoAoABIAYoAogBSQRAIAYgBigCiAE2AoABCyAGQQE2AnQgBkEBNgKQAQNAIAYoApABQQ9NBEAgBiAGKAJ0QQF0NgJ0IAYgBigCdCAGQSBqIAYoApABQQF0ai8BAGs2AnQgBigCdEEASARAIAZBfzYCrAEMAwUgBiAGKAKQAUEBajYCkAEMAgsACwsCQCAGKAJ0QQBMDQAgBigCqAEEQCAGKAKEAUEBRg0BCyAGQX82AqwBDAELIAZBADsBAiAGQQE2ApABA0AgBigCkAFBD09FBEAgBigCkAFBAWpBAXQgBmogBigCkAFBAXQgBmovAQAgBkEgaiAGKAKQAUEBdGovAQBqOwEAIAYgBigCkAFBAWo2ApABDAELCyAGQQA2AowBA0AgBigCjAEgBigCoAFJBEAgBigCpAEgBigCjAFBAXRqLwEABEAgBigClAEhASAGKAKkASAGKAKMASICQQF0ai8BAEEBdCAGaiIDLwEAIQAgAyAAQQFqOwEAIABB//8DcUEBdCABaiACOwEACyAGIAYoAowBQQFqNgKMAQwBCwsCQAJAAkACQCAGKAKoAQ4CAAECCyAGIAYoApQBIgA2AkwgBiAANgJQIAZBFDYCSAwCCyAGQYDwADYCUCAGQcDwADYCTCAGQYECNgJIDAELIAZBgPEANgJQIAZBwPEANgJMIAZBADYCSAsgBkEANgJsIAZBADYCjAEgBiAGKAKIATYCkAEgBiAGKAKcASgCADYCVCAGIAYoAoABNgJ8IAZBADYCeCAGQX82AmAgBkEBIAYoAoABdDYCcCAGIAYoAnBBAWs2AlwCQAJAIAYoAqgBQQFGBEAgBigCcEHUBksNAQsgBigCqAFBAkcNASAGKAJwQdAETQ0BCyAGQQE2AqwBDAELA0AgBiAGKAKQASAGKAJ4azoAWQJAIAYoAkggBigClAEgBigCjAFBAXRqLwEAQQFqSwRAIAZBADoAWCAGIAYoApQBIAYoAowBQQF0ai8BADsBWgwBCwJAIAYoApQBIAYoAowBQQF0ai8BACAGKAJITwRAIAYgBigCTCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOgBYIAYgBigCUCAGKAKUASAGKAKMAUEBdGovAQAgBigCSGtBAXRqLwEAOwFaDAELIAZB4AA6AFggBkEAOwFaCwsgBkEBIAYoApABIAYoAnhrdDYCaCAGQQEgBigCfHQ2AmQgBiAGKAJkNgKIAQNAIAYgBigCZCAGKAJoazYCZCAGKAJUIAYoAmQgBigCbCAGKAJ4dmpBAnRqIAZB2ABqKAEANgEAIAYoAmQNAAsgBkEBIAYoApABQQFrdDYCaANAIAYoAmwgBigCaHEEQCAGIAYoAmhBAXY2AmgMAQsLAkAgBigCaARAIAYgBigCbCAGKAJoQQFrcTYCbCAGIAYoAmggBigCbGo2AmwMAQsgBkEANgJsCyAGIAYoAowBQQFqNgKMASAGQSBqIAYoApABQQF0aiIBLwEAQQFrIQAgASAAOwEAAkAgAEH//wNxRQRAIAYoApABIAYoAoQBRg0BIAYgBigCpAEgBigClAEgBigCjAFBAXRqLwEAQQF0ai8BADYCkAELAkAgBigCkAEgBigCgAFNDQAgBigCYCAGKAJsIAYoAlxxRg0AIAYoAnhFBEAgBiAGKAKAATYCeAsgBiAGKAJUIAYoAogBQQJ0ajYCVCAGIAYoApABIAYoAnhrNgJ8IAZBASAGKAJ8dDYCdANAAkAgBigChAEgBigCfCAGKAJ4ak0NACAGIAYoAnQgBkEgaiAGKAJ8IAYoAnhqQQF0ai8BAGs2AnQgBigCdEEATA0AIAYgBigCfEEBajYCfCAGIAYoAnRBAXQ2AnQMAQsLIAYgBigCcEEBIAYoAnx0ajYCcAJAAkAgBigCqAFBAUYEQCAGKAJwQdQGSw0BCyAGKAKoAUECRw0BIAYoAnBB0ARNDQELIAZBATYCrAEMBAsgBiAGKAJsIAYoAlxxNgJgIAYoApwBKAIAIAYoAmBBAnRqIAYoAnw6AAAgBigCnAEoAgAgBigCYEECdGogBigCgAE6AAEgBigCnAEoAgAgBigCYEECdGogBigCVCAGKAKcASgCAGtBAnU7AQILDAELCyAGKAJsBEAgBkHAADoAWCAGIAYoApABIAYoAnhrOgBZIAZBADsBWiAGKAJUIAYoAmxBAnRqIAZB2ABqKAEANgEACyAGKAKcASIAIAAoAgAgBigCcEECdGo2AgAgBigCmAEgBigCgAE2AgAgBkEANgKsAQsgBigCrAEhACAGQbABaiQAIAALsQIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYKAIENgIMIAMoAgwgAygCEEsEQCADIAMoAhA2AgwLAkAgAygCDEUEQCADQQA2AhwMAQsgAygCGCIAIAAoAgQgAygCDGs2AgQgAygCFCADKAIYKAIAIAMoAgwQGRoCQCADKAIYKAIcKAIYQQFGBEAgAygCGCgCMCADKAIUIAMoAgwQPiEAIAMoAhggADYCMAwBCyADKAIYKAIcKAIYQQJGBEAgAygCGCgCMCADKAIUIAMoAgwQGiEAIAMoAhggADYCMAsLIAMoAhgiACADKAIMIAAoAgBqNgIAIAMoAhgiACADKAIMIAAoAghqNgIIIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC+0BAQF/IwBBEGsiASAANgIIAkACQAJAIAEoAghFDQAgASgCCCgCIEUNACABKAIIKAIkDQELIAFBATYCDAwBCyABIAEoAggoAhw2AgQCQAJAIAEoAgRFDQAgASgCBCgCACABKAIIRw0AIAEoAgQoAgRBKkYNASABKAIEKAIEQTlGDQEgASgCBCgCBEHFAEYNASABKAIEKAIEQckARg0BIAEoAgQoAgRB2wBGDQEgASgCBCgCBEHnAEYNASABKAIEKAIEQfEARg0BIAEoAgQoAgRBmgVGDQELIAFBATYCDAwBCyABQQA2AgwLIAEoAgwL0gQBAX8jAEEgayIDIAA2AhwgAyABNgIYIAMgAjYCFCADIAMoAhxB3BZqIAMoAhRBAnRqKAIANgIQIAMgAygCFEEBdDYCDANAAkAgAygCDCADKAIcKALQKEoNAAJAIAMoAgwgAygCHCgC0ChODQAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBOBEAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBHDQEgAygCHCADKAIMQQJ0akHgFmooAgAgAygCHEHYKGpqLQAAIAMoAhxB3BZqIAMoAgxBAnRqKAIAIAMoAhxB2Chqai0AAEoNAQsgAyADKAIMQQFqNgIMCyADKAIYIAMoAhBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvXEwEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHEgEQAJAIAIoAiQgAigCGEECdGovAQAEQCACIAIoAhgiATYCECACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohACAEIAA2AtAoIABBAnQgA2ogATYCACACKAIYIAIoAixB2ChqakEAOgAADAELIAIoAiQgAigCGEECdGpBADsBAgsgAiACKAIYQQFqNgIYDAELCwNAIAIoAiwoAtAoQQJIBEACQCACKAIQQQJIBEAgAiACKAIQQQFqIgA2AhAMAQtBACEACyACKAIsQdwWaiEDIAIoAiwiBCgC0ChBAWohASAEIAE2AtAoIAFBAnQgA2ogADYCACACIAA2AgwgAigCJCACKAIMQQJ0akEBOwEAIAIoAgwgAigCLEHYKGpqQQA6AAAgAigCLCIAIAAoAqgtQQFrNgKoLSACKAIgBEAgAigCLCIAIAAoAqwtIAIoAiAgAigCDEECdGovAQJrNgKsLQsMAQsLIAIoAiggAigCEDYCBCACIAIoAiwoAtAoQQJtNgIYA0AgAigCGEEBTgRAIAIoAiwgAigCJCACKAIYEHogAiACKAIYQQFrNgIYDAELCyACIAIoAhw2AgwDQCACIAIoAiwoAuAWNgIYIAIoAixB3BZqIQEgAigCLCIDKALQKCEAIAMgAEEBazYC0CggAigCLCAAQQJ0IAFqKAIANgLgFiACKAIsIAIoAiRBARB6IAIgAigCLCgC4BY2AhQgAigCGCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAhQhASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIkIAIoAgxBAnRqIAIoAiQgAigCGEECdGovAQAgAigCJCACKAIUQQJ0ai8BAGo7AQAgAigCDCACKAIsQdgoamoCfyACKAIYIAIoAixB2Chqai0AACACKAIUIAIoAixB2Chqai0AAE4EQCACKAIYIAIoAixB2Chqai0AAAwBCyACKAIUIAIoAixB2Chqai0AAAtBAWo6AAAgAigCJCACKAIUQQJ0aiACKAIMIgA7AQIgAigCJCACKAIYQQJ0aiAAOwECIAIgAigCDCIAQQFqNgIMIAIoAiwgADYC4BYgAigCLCACKAIkQQEQeiACKAIsKALQKEECTg0ACyACKAIsKALgFiEBIAIoAixB3BZqIQMgAigCLCIEKALUKEEBayEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAighASMAQUBqIgAgAigCLDYCPCAAIAE2AjggACAAKAI4KAIANgI0IAAgACgCOCgCBDYCMCAAIAAoAjgoAggoAgA2AiwgACAAKAI4KAIIKAIENgIoIAAgACgCOCgCCCgCCDYCJCAAIAAoAjgoAggoAhA2AiAgAEEANgIEIABBADYCEANAIAAoAhBBD0wEQCAAKAI8QbwWaiAAKAIQQQF0akEAOwEAIAAgACgCEEEBajYCEAwBCwsgACgCNCAAKAI8QdwWaiAAKAI8KALUKEECdGooAgBBAnRqQQA7AQIgACAAKAI8KALUKEEBajYCHANAIAAoAhxBvQRIBEAgACAAKAI8QdwWaiAAKAIcQQJ0aigCADYCGCAAIAAoAjQgACgCNCAAKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgACgCECAAKAIgSgRAIAAgACgCIDYCECAAIAAoAgRBAWo2AgQLIAAoAjQgACgCGEECdGogACgCEDsBAiAAKAIYIAAoAjBMBEAgACgCPCAAKAIQQQF0akG8FmoiASABLwEAQQFqOwEAIABBADYCDCAAKAIYIAAoAiROBEAgACAAKAIoIAAoAhggACgCJGtBAnRqKAIANgIMCyAAIAAoAjQgACgCGEECdGovAQA7AQogACgCPCIBIAEoAqgtIAAvAQogACgCECAAKAIMamxqNgKoLSAAKAIsBEAgACgCPCIBIAEoAqwtIAAvAQogACgCLCAAKAIYQQJ0ai8BAiAAKAIMamxqNgKsLQsLIAAgACgCHEEBajYCHAwBCwsCQCAAKAIERQ0AA0AgACAAKAIgQQFrNgIQA0AgACgCPEG8FmogACgCEEEBdGovAQBFBEAgACAAKAIQQQFrNgIQDAELCyAAKAI8IAAoAhBBAXRqQbwWaiIBIAEvAQBBAWs7AQAgACgCPCAAKAIQQQF0akG+FmoiASABLwEAQQJqOwEAIAAoAjwgACgCIEEBdGpBvBZqIgEgAS8BAEEBazsBACAAIAAoAgRBAms2AgQgACgCBEEASg0ACyAAIAAoAiA2AhADQCAAKAIQRQ0BIAAgACgCPEG8FmogACgCEEEBdGovAQA2AhgDQCAAKAIYBEAgACgCPEHcFmohASAAIAAoAhxBAWsiAzYCHCAAIANBAnQgAWooAgA2AhQgACgCFCAAKAIwSg0BIAAoAjQgACgCFEECdGovAQIgACgCEEcEQCAAKAI8IgEgASgCqC0gACgCNCAAKAIUQQJ0ai8BACAAKAIQIAAoAjQgACgCFEECdGovAQJrbGo2AqgtIAAoAjQgACgCFEECdGogACgCEDsBAgsgACAAKAIYQQFrNgIYDAELCyAAIAAoAhBBAWs2AhAMAAsACyACKAIkIQEgAigCECEDIAIoAixBvBZqIQQjAEFAaiIAJAAgACABNgI8IAAgAzYCOCAAIAQ2AjQgAEEANgIMIABBATYCCANAIAAoAghBD0wEQCAAIAAoAgwgACgCNCAAKAIIQQFrQQF0ai8BAGpBAXQ2AgwgAEEQaiAAKAIIQQF0aiAAKAIMOwEAIAAgACgCCEEBajYCCAwBCwsgAEEANgIEA0AgACgCBCAAKAI4TARAIAAgACgCPCAAKAIEQQJ0ai8BAjYCACAAKAIABEAgAEEQaiAAKAIAQQF0aiIBLwEAIQMgASADQQFqOwEAIAAoAgAhBCMAQRBrIgEgAzYCDCABIAQ2AgggAUEANgIEA0AgASABKAIEIAEoAgxBAXFyNgIEIAEgASgCDEEBdjYCDCABIAEoAgRBAXQ2AgQgASABKAIIQQFrIgM2AgggA0EASg0ACyABKAIEQQF2IQEgACgCPCAAKAIEQQJ0aiABOwEACyAAIAAoAgRBAWo2AgQMAQsLIABBQGskACACQTBqJAALTgEBfyMAQRBrIgIgADsBCiACIAE2AgQCQCACLwEKQQFGBEAgAigCBEEBRgRAIAJBADYCDAwCCyACQQQ2AgwMAQsgAkEANgIMCyACKAIMC84CAQF/IwBBMGsiBSQAIAUgADYCLCAFIAE2AiggBSACNgIkIAUgAzcDGCAFIAQ2AhQgBUIANwMIA0AgBSkDCCAFKQMYVARAIAUgBSgCJCAFKQMIp2otAAA6AAcgBSgCFEUEQCAFIAUoAiwoAhRBAnI7ARIgBSAFLwESIAUvARJBAXNsQQh2OwESIAUgBS0AByAFLwESQf8BcXM6AAcLIAUoAigEQCAFKAIoIAUpAwinaiAFLQAHOgAACyAFKAIsKAIMQX9zIAVBB2pBARAaQX9zIQAgBSgCLCAANgIMIAUoAiwgBSgCLCgCECAFKAIsKAIMQf8BcWpBhYiiwABsQQFqNgIQIAUgBSgCLCgCEEEYdjoAByAFKAIsKAIUQX9zIAVBB2pBARAaQX9zIQAgBSgCLCAANgIUIAUgBSkDCEIBfDcDCAwBCwsgBUEwaiQAC20BAX8jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI3AwggBCADNgIEAkAgBCgCGEUEQCAEQQA2AhwMAQsgBCAEKAIUIAQpAwggBCgCBCAEKAIYQQhqEMMBNgIcCyAEKAIcIQAgBEEgaiQAIAALpwMBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCGCAEKQMQIAQoAgxBABBFIgA2AgACQCAARQRAIARBfzYCHAwBCyAEIAQoAhggBCkDECAEKAIMEMQBIgA2AgQgAEUEQCAEQX82AhwMAQsCQAJAIAQoAgxBCHENACAEKAIYKAJAIAQpAxCnQQR0aigCCEUNACAEKAIYKAJAIAQpAxCnQQR0aigCCCAEKAIIEDhBAEgEQCAEKAIYQQhqQQ9BABAUIARBfzYCHAwDCwwBCyAEKAIIEDsgBCgCCCAEKAIAKAIYNgIsIAQoAgggBCgCACkDKDcDGCAEKAIIIAQoAgAoAhQ2AiggBCgCCCAEKAIAKQMgNwMgIAQoAgggBCgCACgCEDsBMCAEKAIIIAQoAgAvAVI7ATIgBCgCCEEgQQAgBCgCAC0ABkEBcRtB3AFyrTcDAAsgBCgCCCAEKQMQNwMQIAQoAgggBCgCBDYCCCAEKAIIIgAgACkDAEIDhDcDACAEQQA2AhwLIAQoAhwhACAEQSBqJAAgAAsDAAELzQEBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAyADQQxqQaifARALNgIAAkAgAygCAEUEQCADKAIEQSE7AQAgAygCCEEAOwEADAELIAMoAgAoAhRB0ABIBEAgAygCAEHQADYCFAsgAygCBCADKAIAKAIMIAMoAgAoAhRBCXQgAygCACgCEEEFdGpB4L8Ca2o7AQAgAygCCCADKAIAKAIIQQt0IAMoAgAoAgRBBXRqIAMoAgAoAgBBAXVqOwEACyADQRBqJAALgwMBAX8jAEEgayIDJAAgAyAAOwEaIAMgATYCFCADIAI2AhAgAyADKAIUIANBCGpBwABBABBGIgA2AgwCQCAARQRAIANBADYCHAwBCyADKAIIQQVqQf//A0sEQCADKAIQQRJBABAUIANBADYCHAwBCyADQQAgAygCCEEFaq0QKSIANgIEIABFBEAgAygCEEEOQQAQFCADQQA2AhwMAQsgAygCBEEBEI4BIAMoAgQgAygCFBCMARAgIAMoAgQgAygCDCADKAIIEEACfyMAQRBrIgAgAygCBDYCDCAAKAIMLQAAQQFxRQsEQCADKAIQQRRBABAUIAMoAgQQFiADQQA2AhwMAQsgAyADLwEaAn8jAEEQayIAIAMoAgQ2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IAC6dB//8DcQsCfyMAQRBrIgAgAygCBDYCDCAAKAIMKAIEC0GABhBRNgIAIAMoAgQQFiADIAMoAgA2AhwLIAMoAhwhACADQSBqJAAgAAu0AgEBfyMAQTBrIgMkACADIAA2AiggAyABNwMgIAMgAjYCHAJAIAMpAyBQBEAgA0EBOgAvDAELIAMgAygCKCkDECADKQMgfDcDCAJAIAMpAwggAykDIFoEQCADKQMIQv////8AWA0BCyADKAIcQQ5BABAUIANBADoALwwBCyADIAMoAigoAgAgAykDCKdBBHQQSCIANgIEIABFBEAgAygCHEEOQQAQFCADQQA6AC8MAQsgAygCKCADKAIENgIAIAMgAygCKCkDCDcDEANAIAMpAxAgAykDCFpFBEAgAygCKCgCACADKQMQp0EEdGoQkAEgAyADKQMQQgF8NwMQDAELCyADKAIoIAMpAwgiATcDECADKAIoIAE3AwggA0EBOgAvCyADLQAvQQFxIQAgA0EwaiQAIAALzAEBAX8jAEEgayICJAAgAiAANwMQIAIgATYCDCACQTAQGCIBNgIIAkAgAUUEQCACKAIMQQ5BABAUIAJBADYCHAwBCyACKAIIQQA2AgAgAigCCEIANwMQIAIoAghCADcDCCACKAIIQgA3AyAgAigCCEIANwMYIAIoAghBADYCKCACKAIIQQA6ACwgAigCCCACKQMQIAIoAgwQgwFBAXFFBEAgAigCCBAkIAJBADYCHAwBCyACIAIoAgg2AhwLIAIoAhwhASACQSBqJAAgAQvWAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCECADIANBDGpCBBApNgIIAkAgAygCCEUEQCADQX82AhwMAQsDQCADKAIUBEAgAygCFCgCBCADKAIQcUGABnEEQCADKAIIQgAQLBogAygCCCADKAIULwEIEB8gAygCCCADKAIULwEKEB8CfyMAQRBrIgAgAygCCDYCDCAAKAIMLQAAQQFxRQsEQCADKAIYQQhqQRRBABAUIAMoAggQFiADQX82AhwMBAsgAygCGCADQQxqQgQQNUEASARAIAMoAggQFiADQX82AhwMBAsgAygCFC8BCgRAIAMoAhggAygCFCgCDCADKAIULwEKrRA1QQBIBEAgAygCCBAWIANBfzYCHAwFCwsLIAMgAygCFCgCADYCFAwBCwsgAygCCBAWIANBADYCHAsgAygCHCEAIANBIGokACAAC2gBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADsBBgNAIAIoAgwEQCACKAIMKAIEIAIoAghxQYAGcQRAIAIgAigCDC8BCiACLwEGQQRqajsBBgsgAiACKAIMKAIANgIMDAELCyACLwEGC/ABAQF/IwBBEGsiASQAIAEgADYCDCABIAEoAgw2AgggAUEANgIEA0AgASgCDARAAkACQCABKAIMLwEIQfXGAUYNACABKAIMLwEIQfXgAUYNACABKAIMLwEIQYGyAkYNACABKAIMLwEIQQFHDQELIAEgASgCDCgCADYCACABKAIIIAEoAgxGBEAgASABKAIANgIICyABKAIMQQA2AgAgASgCDBAjIAEoAgQEQCABKAIEIAEoAgA2AgALIAEgASgCADYCDAwCCyABIAEoAgw2AgQgASABKAIMKAIANgIMDAELCyABKAIIIQAgAUEQaiQAIAALswQBAX8jAEFAaiIFJAAgBSAANgI4IAUgATsBNiAFIAI2AjAgBSADNgIsIAUgBDYCKCAFIAUoAjggBS8BNq0QKSIANgIkAkAgAEUEQCAFKAIoQQ5BABAUIAVBADoAPwwBCyAFQQA2AiAgBUEANgIYA0ACfyMAQRBrIgAgBSgCJDYCDCAAKAIMLQAAQQFxCwR/IAUoAiQQL0IEWgVBAAtBAXEEQCAFIAUoAiQQHTsBFiAFIAUoAiQQHTsBFCAFIAUoAiQgBS8BFK0QHjYCECAFKAIQRQRAIAUoAihBFUEAEBQgBSgCJBAWIAUoAhgQIyAFQQA6AD8MAwsgBSAFLwEWIAUvARQgBSgCECAFKAIwEFEiADYCHCAARQRAIAUoAihBDkEAEBQgBSgCJBAWIAUoAhgQIyAFQQA6AD8MAwsCQCAFKAIYBEAgBSgCICAFKAIcNgIAIAUgBSgCHDYCIAwBCyAFIAUoAhwiADYCICAFIAA2AhgLDAELCyAFKAIkEEdBAXFFBEAgBSAFKAIkEC8+AgwgBSAFKAIkIAUoAgytEB42AggCQAJAIAUoAgxBBE8NACAFKAIIRQ0AIAUoAghBktkAIAUoAgwQVEUNAQsgBSgCKEEVQQAQFCAFKAIkEBYgBSgCGBAjIAVBADoAPwwCCwsgBSgCJBAWAkAgBSgCLARAIAUoAiwgBSgCGDYCAAwBCyAFKAIYECMLIAVBAToAPwsgBS0AP0EBcSEAIAVBQGskACAAC+8CAQF/IwBBIGsiAiQAIAIgADYCGCACIAE2AhQCQCACKAIYRQRAIAIgAigCFDYCHAwBCyACIAIoAhg2AggDQCACKAIIKAIABEAgAiACKAIIKAIANgIIDAELCwNAIAIoAhQEQCACIAIoAhQoAgA2AhAgAkEANgIEIAIgAigCGDYCDANAAkAgAigCDEUNAAJAIAIoAgwvAQggAigCFC8BCEcNACACKAIMLwEKIAIoAhQvAQpHDQAgAigCDC8BCgRAIAIoAgwoAgwgAigCFCgCDCACKAIMLwEKEFQNAQsgAigCDCIAIAAoAgQgAigCFCgCBEGABnFyNgIEIAJBATYCBAwBCyACIAIoAgwoAgA2AgwMAQsLIAIoAhRBADYCAAJAIAIoAgQEQCACKAIUECMMAQsgAigCCCACKAIUIgA2AgAgAiAANgIICyACIAIoAhA2AhQMAQsLIAIgAigCGDYCHAsgAigCHCEAIAJBIGokACAAC10BAX8jAEEQayICJAAgAiAANgIIIAIgATYCBAJAIAIoAgRFBEAgAkEANgIMDAELIAIgAigCCCACKAIEKAIAIAIoAgQvAQStEDU2AgwLIAIoAgwhACACQRBqJAAgAAuPAQEBfyMAQRBrIgIkACACIAA2AgggAiABNgIEAkACQCACKAIIBEAgAigCBA0BCyACIAIoAgggAigCBEY2AgwMAQsgAigCCC8BBCACKAIELwEERwRAIAJBADYCDAwBCyACIAIoAggoAgAgAigCBCgCACACKAIILwEEEFRFNgIMCyACKAIMIQAgAkEQaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwgAUEAQQBBABAaNgIIIAEoAgwEQCABIAEoAgggASgCDCgCACABKAIMLwEEEBo2AggLIAEoAgghACABQRBqJAAgAAugAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFIAM6ABEgBSAENgIMIAUgBSgCGCAFKAIUIAUvARIgBS0AEUEBcSAFKAIMEGAiADYCCAJAIABFBEAgBUEANgIcDAELIAUgBSgCCCAFLwESQQAgBSgCDBBSNgIEIAUoAggQFSAFIAUoAgQ2AhwLIAUoAhwhACAFQSBqJAAgAAtfAQF/IwBBEGsiAiQAIAIgADYCCCACIAE6AAcgAiACKAIIQgEQHjYCAAJAIAIoAgBFBEAgAkF/NgIMDAELIAIoAgAgAi0ABzoAACACQQA2AgwLIAIoAgwaIAJBEGokAAtUAQF/IwBBEGsiASQAIAEgADYCCCABIAEoAghCARAeNgIEAkAgASgCBEUEQCABQQA6AA8MAQsgASABKAIELQAAOgAPCyABLQAPIQAgAUEQaiQAIAALOAEBfyMAQRBrIgEgADYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCABKAIMQQA6AAwLnwIBAX8jAEFAaiIFJAAgBSAANwMwIAUgATcDKCAFIAI2AiQgBSADNwMYIAUgBDYCFCAFAn8gBSkDGEIQVARAIAUoAhRBEkEAEBRBAAwBCyAFKAIkCzYCBAJAIAUoAgRFBEAgBUJ/NwM4DAELAkACQAJAAkACQCAFKAIEKAIIDgMCAAEDCyAFIAUpAzAgBSgCBCkDAHw3AwgMAwsgBSAFKQMoIAUoAgQpAwB8NwMIDAILIAUgBSgCBCkDADcDCAwBCyAFKAIUQRJBABAUIAVCfzcDOAwBCwJAIAUpAwhCAFkEQCAFKQMIIAUpAyhYDQELIAUoAhRBEkEAEBQgBUJ/NwM4DAELIAUgBSkDCDcDOAsgBSkDOCEAIAVBQGskACAAC+oBAgF/AX4jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMIAQgBCgCDBCTASIANgIIAkAgAEUEQCAEQQA2AhwMAQsjAEEQayIAIAQoAhg2AgwgACgCDCIAIAAoAjBBAWo2AjAgBCgCCCAEKAIYNgIAIAQoAgggBCgCFDYCBCAEKAIIIAQoAhA2AgggBCgCGCAEKAIQQQBCAEEOIAQoAhQRCgAhBSAEKAIIIAU3AxggBCgCCCkDGEIAUwRAIAQoAghCPzcDGAsgBCAEKAIINgIcCyAEKAIcIQAgBEEgaiQAIAAL6gEBAX8jAEEQayIBJAAgASAANgIIIAFBOBAYIgA2AgQCQCAARQRAIAEoAghBDkEAEBQgAUEANgIMDAELIAEoAgRBADYCACABKAIEQQA2AgQgASgCBEEANgIIIAEoAgRBADYCICABKAIEQQA2AiQgASgCBEEAOgAoIAEoAgRBADYCLCABKAIEQQE2AjAjAEEQayIAIAEoAgRBDGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggASgCBEEAOgA0IAEoAgRBADoANSABIAEoAgQ2AgwLIAEoAgwhACABQRBqJAAgAAuwAQIBfwF+IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCEBCTASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIEIAMoAgwgAygCFDYCCCADKAIUQQBCAEEOIAMoAhgRDgAhBCADKAIMIAQ3AxggAygCDCkDGEIAUwRAIAMoAgxCPzcDGAsgAyADKAIMNgIcCyADKAIcIQAgA0EgaiQAIAALwwIBAX8jAEEQayIDIAA2AgwgAyABNgIIIAMgAjYCBCADKAIIKQMAQgKDQgBSBEAgAygCDCADKAIIKQMQNwMQCyADKAIIKQMAQgSDQgBSBEAgAygCDCADKAIIKQMYNwMYCyADKAIIKQMAQgiDQgBSBEAgAygCDCADKAIIKQMgNwMgCyADKAIIKQMAQhCDQgBSBEAgAygCDCADKAIIKAIoNgIoCyADKAIIKQMAQiCDQgBSBEAgAygCDCADKAIIKAIsNgIsCyADKAIIKQMAQsAAg0IAUgRAIAMoAgwgAygCCC8BMDsBMAsgAygCCCkDAEKAAYNCAFIEQCADKAIMIAMoAggvATI7ATILIAMoAggpAwBCgAKDQgBSBEAgAygCDCADKAIIKAI0NgI0CyADKAIMIgAgAygCCCkDACAAKQMAhDcDAEEAC1oBAX8jAEEQayIBIAA2AggCQAJAIAEoAggoAgBBAE4EQCABKAIIKAIAQYAUKAIASA0BCyABQQA2AgwMAQsgASABKAIIKAIAQQJ0QZAUaigCADYCDAsgASgCDAumAQEBfyMAQSBrIgUkACAFIAA2AhggBSABNwMQIAUgAjYCDCAFIAM2AgggBSAENgIEIAUgBSgCGCAFKQMQIAUoAgxBABBFIgA2AgACQCAARQRAIAVBfzYCHAwBCyAFKAIIBEAgBSgCCCAFKAIALwEIQQh2OgAACyAFKAIEBEAgBSgCBCAFKAIAKAJENgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAucBgECfyMAQSBrIgIkACACIAA2AhggAiABNwMQAkAgAikDECACKAIYKQMwWgRAIAIoAhhBCGpBEkEAEBQgAkF/NgIcDAELIAIoAhgoAhhBAnEEQCACKAIYQQhqQRlBABAUIAJBfzYCHAwBCyACIAIoAhggAikDEEEAIAIoAhhBCGoQTiIANgIMIABFBEAgAkF/NgIcDAELIAIoAhgoAlAgAigCDCACKAIYQQhqEFhBAXFFBEAgAkF/NgIcDAELAn8gAigCGCEDIAIpAxAhASMAQTBrIgAkACAAIAM2AiggACABNwMgIABBATYCHAJAIAApAyAgACgCKCkDMFoEQCAAKAIoQQhqQRJBABAUIABBfzYCLAwBCwJAIAAoAhwNACAAKAIoKAJAIAApAyCnQQR0aigCBEUNACAAKAIoKAJAIAApAyCnQQR0aigCBCgCAEECcUUNAAJAIAAoAigoAkAgACkDIKdBBHRqKAIABEAgACAAKAIoIAApAyBBCCAAKAIoQQhqEE4iAzYCDCADRQRAIABBfzYCLAwECyAAIAAoAiggACgCDEEAQQAQVzcDEAJAIAApAxBCAFMNACAAKQMQIAApAyBRDQAgACgCKEEIakEKQQAQFCAAQX82AiwMBAsMAQsgAEEANgIMCyAAIAAoAiggACkDIEEAIAAoAihBCGoQTiIDNgIIIANFBEAgAEF/NgIsDAILIAAoAgwEQCAAKAIoKAJQIAAoAgwgACkDIEEAIAAoAihBCGoQdUEBcUUEQCAAQX82AiwMAwsLIAAoAigoAlAgACgCCCAAKAIoQQhqEFhBAXFFBEAgACgCKCgCUCAAKAIMQQAQWBogAEF/NgIsDAILCyAAKAIoKAJAIAApAyCnQQR0aigCBBA5IAAoAigoAkAgACkDIKdBBHRqQQA2AgQgACgCKCgCQCAAKQMgp0EEdGoQYyAAQQA2AiwLIAAoAiwhAyAAQTBqJAAgAwsEQCACQX82AhwMAQsgAigCGCgCQCACKQMQp0EEdGpBAToADCACQQA2AhwLIAIoAhwhACACQSBqJAAgAAulBAEBfyMAQTBrIgUkACAFIAA2AiggBSABNwMgIAUgAjYCHCAFIAM6ABsgBSAENgIUAkAgBSgCKCAFKQMgQQBBABBFRQRAIAVBfzYCLAwBCyAFKAIoKAIYQQJxBEAgBSgCKEEIakEZQQAQFCAFQX82AiwMAQsgBSAFKAIoKAJAIAUpAyCnQQR0ajYCECAFAn8gBSgCECgCAARAIAUoAhAoAgAvAQhBCHYMAQtBAws6AAsgBQJ/IAUoAhAoAgAEQCAFKAIQKAIAKAJEDAELQYCA2I14CzYCBEEBIQAgBSAFLQAbIAUtAAtGBH8gBSgCFCAFKAIERwVBAQtBAXE2AgwCQCAFKAIMBEAgBSgCECgCBEUEQCAFKAIQKAIAED8hACAFKAIQIAA2AgQgAEUEQCAFKAIoQQhqQQ5BABAUIAVBfzYCLAwECwsgBSgCECgCBCAFKAIQKAIELwEIQf8BcSAFLQAbQQh0cjsBCCAFKAIQKAIEIAUoAhQ2AkQgBSgCECgCBCIAIAAoAgBBEHI2AgAMAQsgBSgCECgCBARAIAUoAhAoAgQiACAAKAIAQW9xNgIAAkAgBSgCECgCBCgCAEUEQCAFKAIQKAIEEDkgBSgCEEEANgIEDAELIAUoAhAoAgQgBSgCECgCBC8BCEH/AXEgBS0AC0EIdHI7AQggBSgCECgCBCAFKAIENgJECwsLIAVBADYCLAsgBSgCLCEAIAVBMGokACAAC90PAgF/AX4jAEFAaiIEJAAgBCAANgI0IARCfzcDKCAEIAE2AiQgBCACNgIgIAQgAzYCHAJAIAQoAjQoAhhBAnEEQCAEKAI0QQhqQRlBABAUIARCfzcDOAwBCyAEIAQoAjQpAzA3AxAgBCkDKEJ/UQRAIARCfzcDCCAEKAIcQYDAAHEEQCAEIAQoAjQgBCgCJCAEKAIcQQAQVzcDCAsgBCkDCEJ/UQRAIAQoAjQhASMAQUBqIgAkACAAIAE2AjQCQCAAKAI0KQM4IAAoAjQpAzBCAXxYBEAgACAAKAI0KQM4NwMYIAAgACkDGEIBhjcDEAJAIAApAxBCEFQEQCAAQhA3AxAMAQsgACkDEEKACFYEQCAAQoAINwMQCwsgACAAKQMQIAApAxh8NwMYIAAgACkDGKdBBHStNwMIIAApAwggACgCNCkDOKdBBHStVARAIAAoAjRBCGpBDkEAEBQgAEJ/NwM4DAILIAAgACgCNCgCQCAAKQMYp0EEdBBINgIkIAAoAiRFBEAgACgCNEEIakEOQQAQFCAAQn83AzgMAgsgACgCNCAAKAIkNgJAIAAoAjQgACkDGDcDOAsgACgCNCIBKQMwIQUgASAFQgF8NwMwIAAgBTcDKCAAKAI0KAJAIAApAyinQQR0ahCQASAAIAApAyg3AzgLIAApAzghBSAAQUBrJAAgBCAFNwMIIAVCAFMEQCAEQn83AzgMAwsLIAQgBCkDCDcDKAsCQCAEKAIkRQ0AIAQoAjQhASAEKQMoIQUgBCgCJCECIAQoAhwhAyMAQUBqIgAkACAAIAE2AjggACAFNwMwIAAgAjYCLCAAIAM2AigCQCAAKQMwIAAoAjgpAzBaBEAgACgCOEEIakESQQAQFCAAQX82AjwMAQsgACgCOCgCGEECcQRAIAAoAjhBCGpBGUEAEBQgAEF/NgI8DAELAkACQCAAKAIsRQ0AIAAoAiwsAABFDQAgACAAKAIsIAAoAiwQK0H//wNxIAAoAiggACgCOEEIahBSIgE2AiAgAUUEQCAAQX82AjwMAwsCQCAAKAIoQYAwcQ0AIAAoAiBBABA6QQNHDQAgACgCIEECNgIICwwBCyAAQQA2AiALIAAgACgCOCAAKAIsQQBBABBXIgU3AxACQCAFQgBTDQAgACkDECAAKQMwUQ0AIAAoAiAQJSAAKAI4QQhqQQpBABAUIABBfzYCPAwBCwJAIAApAxBCAFMNACAAKQMQIAApAzBSDQAgACgCIBAlIABBADYCPAwBCyAAIAAoAjgoAkAgACkDMKdBBHRqNgIkAkAgACgCJCgCAARAIAAgACgCJCgCACgCMCAAKAIgEIsBQQBHOgAfDAELIABBADoAHwsCQCAALQAfQQFxDQAgACgCJCgCBA0AIAAoAiQoAgAQPyEBIAAoAiQgATYCBCABRQRAIAAoAjhBCGpBDkEAEBQgACgCIBAlIABBfzYCPAwCCwsgAAJ/IAAtAB9BAXEEQCAAKAIkKAIAKAIwDAELIAAoAiALQQBBACAAKAI4QQhqEEYiATYCCCABRQRAIAAoAiAQJSAAQX82AjwMAQsCQCAAKAIkKAIEBEAgACAAKAIkKAIEKAIwNgIEDAELAkAgACgCJCgCAARAIAAgACgCJCgCACgCMDYCBAwBCyAAQQA2AgQLCwJAIAAoAgQEQCAAIAAoAgRBAEEAIAAoAjhBCGoQRiIBNgIMIAFFBEAgACgCIBAlIABBfzYCPAwDCwwBCyAAQQA2AgwLIAAoAjgoAlAgACgCCCAAKQMwQQAgACgCOEEIahB1QQFxRQRAIAAoAiAQJSAAQX82AjwMAQsgACgCDARAIAAoAjgoAlAgACgCDEEAEFgaCwJAIAAtAB9BAXEEQCAAKAIkKAIEBEAgACgCJCgCBCgCAEECcQRAIAAoAiQoAgQoAjAQJSAAKAIkKAIEIgEgASgCAEF9cTYCAAJAIAAoAiQoAgQoAgBFBEAgACgCJCgCBBA5IAAoAiRBADYCBAwBCyAAKAIkKAIEIAAoAiQoAgAoAjA2AjALCwsgACgCIBAlDAELIAAoAiQoAgQoAgBBAnEEQCAAKAIkKAIEKAIwECULIAAoAiQoAgQiASABKAIAQQJyNgIAIAAoAiQoAgQgACgCIDYCMAsgAEEANgI8CyAAKAI8IQEgAEFAayQAIAFFDQAgBCgCNCkDMCAEKQMQUgRAIAQoAjQoAkAgBCkDKKdBBHRqEGIgBCgCNCAEKQMQNwMwCyAEQn83AzgMAQsgBCgCNCgCQCAEKQMop0EEdGoQYwJAIAQoAjQoAkAgBCkDKKdBBHRqKAIARQ0AIAQoAjQoAkAgBCkDKKdBBHRqKAIEBEAgBCgCNCgCQCAEKQMop0EEdGooAgQoAgBBAXENAQsgBCgCNCgCQCAEKQMop0EEdGooAgRFBEAgBCgCNCgCQCAEKQMop0EEdGooAgAQPyEAIAQoAjQoAkAgBCkDKKdBBHRqIAA2AgQgAEUEQCAEKAI0QQhqQQ5BABAUIARCfzcDOAwDCwsgBCgCNCgCQCAEKQMop0EEdGooAgRBfjYCECAEKAI0KAJAIAQpAyinQQR0aigCBCIAIAAoAgBBAXI2AgALIAQoAjQoAkAgBCkDKKdBBHRqIAQoAiA2AgggBCAEKQMoNwM4CyAEKQM4IQUgBEFAayQAIAULqgEBAX8jAEEwayICJAAgAiAANgIoIAIgATcDICACQQA2AhwCQAJAIAIoAigoAiRBAUYEQCACKAIcRQ0BIAIoAhxBAUYNASACKAIcQQJGDQELIAIoAihBDGpBEkEAEBQgAkF/NgIsDAELIAIgAikDIDcDCCACIAIoAhw2AhAgAkF/QQAgAigCKCACQQhqQhBBDBAhQgBTGzYCLAsgAigCLCEAIAJBMGokACAAC6UyAwZ/AX4BfCMAQeAAayIEJAAgBCAANgJYIAQgATYCVCAEIAI2AlACQAJAIAQoAlRBAE4EQCAEKAJYDQELIAQoAlBBEkEAEBQgBEEANgJcDAELIAQgBCgCVDYCTCMAQRBrIgAgBCgCWDYCDCAEIAAoAgwpAxg3A0BB4JoBKQMAQn9RBEAgBEF/NgIUIARBAzYCECAEQQc2AgwgBEEGNgIIIARBAjYCBCAEQQE2AgBB4JoBQQAgBBA2NwMAIARBfzYCNCAEQQ82AjAgBEENNgIsIARBDDYCKCAEQQo2AiQgBEEJNgIgQeiaAUEIIARBIGoQNjcDAAtB4JoBKQMAIAQpA0BB4JoBKQMAg1IEQCAEKAJQQRxBABAUIARBADYCXAwBC0HomgEpAwAgBCkDQEHomgEpAwCDUgRAIAQgBCgCTEEQcjYCTAsgBCgCTEEYcUEYRgRAIAQoAlBBGUEAEBQgBEEANgJcDAELIAQoAlghASAEKAJQIQIjAEHQAGsiACQAIAAgATYCSCAAIAI2AkQgAEEIahA7AkAgACgCSCAAQQhqEDgEQCMAQRBrIgEgACgCSDYCDCAAIAEoAgxBDGo2AgQjAEEQayIBIAAoAgQ2AgwCQCABKAIMKAIAQQVHDQAjAEEQayIBIAAoAgQ2AgwgASgCDCgCBEEsRw0AIABBADYCTAwCCyAAKAJEIAAoAgQQQyAAQX82AkwMAQsgAEEBNgJMCyAAKAJMIQEgAEHQAGokACAEIAE2AjwCQAJAAkAgBCgCPEEBag4CAAECCyAEQQA2AlwMAgsgBCgCTEEBcUUEQCAEKAJQQQlBABAUIARBADYCXAwCCyAEIAQoAlggBCgCTCAEKAJQEGo2AlwMAQsgBCgCTEECcQRAIAQoAlBBCkEAEBQgBEEANgJcDAELIAQoAlgQSUEASARAIAQoAlAgBCgCWBAXIARBADYCXAwBCwJAIAQoAkxBCHEEQCAEIAQoAlggBCgCTCAEKAJQEGo2AjgMAQsgBCgCWCEAIAQoAkwhASAEKAJQIQIjAEHwAGsiAyQAIAMgADYCaCADIAE2AmQgAyACNgJgIANBIGoQOwJAIAMoAmggA0EgahA4QQBIBEAgAygCYCADKAJoEBcgA0EANgJsDAELIAMpAyBCBINQBEAgAygCYEEEQYoBEBQgA0EANgJsDAELIAMgAykDODcDGCADIAMoAmggAygCZCADKAJgEGoiADYCXCAARQRAIANBADYCbAwBCwJAIAMpAxhQRQ0AIAMoAmgQngFBAXFFDQAgAyADKAJcNgJsDAELIAMoAlwhACADKQMYIQkjAEHgAGsiAiQAIAIgADYCWCACIAk3A1ACQCACKQNQQhZUBEAgAigCWEEIakETQQAQFCACQQA2AlwMAQsgAgJ+IAIpA1BCqoAEVARAIAIpA1AMAQtCqoAECzcDMCACKAJYKAIAQgAgAikDMH1BAhAnQQBIBEAjAEEQayIAIAIoAlgoAgA2AgwgAiAAKAIMQQxqNgIIAkACfyMAQRBrIgAgAigCCDYCDCAAKAIMKAIAQQRGCwRAIwBBEGsiACACKAIINgIMIAAoAgwoAgRBFkYNAQsgAigCWEEIaiACKAIIEEMgAkEANgJcDAILCyACIAIoAlgoAgAQSiIJNwM4IAlCAFMEQCACKAJYQQhqIAIoAlgoAgAQFyACQQA2AlwMAQsgAiACKAJYKAIAIAIpAzBBACACKAJYQQhqEEEiADYCDCAARQRAIAJBADYCXAwBCyACQn83AyAgAkEANgJMIAIpAzBCqoAEWgRAIAIoAgxCFBAsGgsgAkEQakETQQAQFCACIAIoAgxCABAeNgJEA0ACQCACKAJEIQEgAigCDBAvQhJ9pyEFIwBBIGsiACQAIAAgATYCGCAAIAU2AhQgAEHsEjYCECAAQQQ2AgwCQAJAIAAoAhQgACgCDE8EQCAAKAIMDQELIABBADYCHAwBCyAAIAAoAhhBAWs2AggDQAJAIAAgACgCCEEBaiAAKAIQLQAAIAAoAhggACgCCGsgACgCFCAAKAIMa2oQqwEiATYCCCABRQ0AIAAoAghBAWogACgCEEEBaiAAKAIMQQFrEFQNASAAIAAoAgg2AhwMAgsLIABBADYCHAsgACgCHCEBIABBIGokACACIAE2AkQgAUUNACACKAIMIAIoAkQCfyMAQRBrIgAgAigCDDYCDCAAKAIMKAIEC2usECwaIAIoAlghASACKAIMIQUgAikDOCEJIwBB8ABrIgAkACAAIAE2AmggACAFNgJkIAAgCTcDWCAAIAJBEGo2AlQjAEEQayIBIAAoAmQ2AgwgAAJ+IAEoAgwtAABBAXEEQCABKAIMKQMQDAELQgALNwMwAkAgACgCZBAvQhZUBEAgACgCVEETQQAQFCAAQQA2AmwMAQsgACgCZEIEEB4oAABB0JaVMEcEQCAAKAJUQRNBABAUIABBADYCbAwBCwJAAkAgACkDMEIUVA0AIwBBEGsiASAAKAJkNgIMIAEoAgwoAgQgACkDMKdqQRRrKAAAQdCWmThHDQAgACgCZCAAKQMwQhR9ECwaIAAoAmgoAgAhBSAAKAJkIQYgACkDWCEJIAAoAmgoAhQhByAAKAJUIQgjAEGwAWsiASQAIAEgBTYCqAEgASAGNgKkASABIAk3A5gBIAEgBzYClAEgASAINgKQASMAQRBrIgUgASgCpAE2AgwgAQJ+IAUoAgwtAABBAXEEQCAFKAIMKQMQDAELQgALNwMYIAEoAqQBQgQQHhogASABKAKkARAdQf//A3E2AhAgASABKAKkARAdQf//A3E2AgggASABKAKkARAwNwM4AkAgASkDOEL///////////8AVgRAIAEoApABQQRBFhAUIAFBADYCrAEMAQsgASkDOEI4fCABKQMYIAEpA5gBfFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELAkACQCABKQM4IAEpA5gBVA0AIAEpAzhCOHwgASkDmAECfiMAQRBrIgUgASgCpAE2AgwgBSgCDCkDCAt8Vg0AIAEoAqQBIAEpAzggASkDmAF9ECwaIAFBADoAFwwBCyABKAKoASABKQM4QQAQJ0EASARAIAEoApABIAEoAqgBEBcgAUEANgKsAQwCCyABIAEoAqgBQjggAUFAayABKAKQARBBIgU2AqQBIAVFBEAgAUEANgKsAQwCCyABQQE6ABcLIAEoAqQBQgQQHigAAEHQlpkwRwRAIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELIAEgASgCpAEQMDcDMAJAIAEoApQBQQRxRQ0AIAEpAzAgASkDOHxCDHwgASkDmAEgASkDGHxRDQAgASgCkAFBFUEAEBQgAS0AF0EBcQRAIAEoAqQBEBYLIAFBADYCrAEMAQsgASgCpAFCBBAeGiABIAEoAqQBECo2AgwgASABKAKkARAqNgIEIAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDA3AyggASABKAKkARAwNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDA3AzAgASABKAKkARAwNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCEASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQL0IWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJIQgQQHhogASgCSBAqBEAgASgCOEEBQQAQFCABQQA2AkwMAQsgASABKAJIEB1B//8Dca03AyggASABKAJIEB1B//8Dca03AyAgASkDICABKQMoUgRAIAEoAjhBE0EAEBQgAUEANgJMDAELIAEgASgCSBAqrTcDGCABIAEoAkgQKq03AxAgASkDECABKQMQIAEpAxh8VgRAIAEoAjhBBEEWEBQgAUEANgJMDAELIAEpAxAgASkDGHwgASkDQCABKQMIfFYEQCABKAI4QRVBABAUIAFBADYCTAwBCwJAIAEoAjxBBHFFDQAgASkDECABKQMYfCABKQNAIAEpAwh8UQ0AIAEoAjhBFUEAEBQgAUEANgJMDAELIAEgASkDICABKAI4EIQBIgU2AjQgBUUEQCABQQA2AkwMAQsgASgCNEEAOgAsIAEoAjQgASkDGDcDGCABKAI0IAEpAxA3AyAgASABKAI0NgJMCyABKAJMIQUgAUHQAGokACAAIAU2AlALIAAoAlBFBEAgAEEANgJsDAELIAAoAmQgACkDMEIUfBAsGiAAIAAoAmQQHTsBTiAAKAJQKQMgIAAoAlApAxh8IAApA1ggACkDMHxWBEAgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAELAkAgAC8BTkUEQCAAKAJoKAIEQQRxRQ0BCyAAKAJkIAApAzBCFnwQLBogACAAKAJkEC83AyACQCAAKQMgIAAvAU6tWgRAIAAoAmgoAgRBBHFFDQEgACkDICAALwFOrVENAQsgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAILIAAvAU4EQCAAKAJkIAAvAU6tEB4gAC8BTkEAIAAoAlQQUiEBIAAoAlAgATYCKCABRQRAIAAoAlAQJCAAQQA2AmwMAwsLCwJAIAAoAlApAyAgACkDWFoEQCAAKAJkIAAoAlApAyAgACkDWH0QLBogACAAKAJkIAAoAlApAxgQHiIBNgIcIAFFBEAgACgCVEEVQQAQFCAAKAJQECQgAEEANgJsDAMLIAAgACgCHCAAKAJQKQMYECkiATYCLCABRQRAIAAoAlRBDkEAEBQgACgCUBAkIABBADYCbAwDCwwBCyAAQQA2AiwgACgCaCgCACAAKAJQKQMgQQAQJ0EASARAIAAoAlQgACgCaCgCABAXIAAoAlAQJCAAQQA2AmwMAgsgACgCaCgCABBKIAAoAlApAyBSBEAgACgCVEETQQAQFCAAKAJQECQgAEEANgJsDAILCyAAIAAoAlApAxg3AzggAEIANwNAA0ACQCAAKQM4UA0AIABBADoAGyAAKQNAIAAoAlApAwhRBEAgACgCUC0ALEEBcQ0BIAApAzhCLlQNASAAKAJQQoCABCAAKAJUEIMBQQFxRQRAIAAoAlAQJCAAKAIsEBYgAEEANgJsDAQLIABBAToAGwsjAEEQayIBJAAgAUHYABAYIgU2AggCQCAFRQRAIAFBADYCDAwBCyABKAIIEE8gASABKAIINgIMCyABKAIMIQUgAUEQaiQAIAUhASAAKAJQKAIAIAApA0CnQQR0aiABNgIAAkAgAQRAIAAgACgCUCgCACAAKQNAp0EEdGooAgAgACgCaCgCACAAKAIsQQAgACgCVBDGASIJNwMQIAlCAFkNAQsCQCAALQAbQQFxRQ0AIwBBEGsiASAAKAJUNgIMIAEoAgwoAgBBE0cNACAAKAJUQRVBABAUCyAAKAJQECQgACgCLBAWIABBADYCbAwDCyAAIAApA0BCAXw3A0AgACAAKQM4IAApAxB9NwM4DAELCwJAIAApA0AgACgCUCkDCFEEQCAAKQM4UA0BCyAAKAJUQRVBABAUIAAoAiwQFiAAKAJQECQgAEEANgJsDAELIAAoAmgoAgRBBHEEQAJAIAAoAiwEQCAAIAAoAiwQR0EBcToADwwBCyAAIAAoAmgoAgAQSjcDACAAKQMAQgBTBEAgACgCVCAAKAJoKAIAEBcgACgCUBAkIABBADYCbAwDCyAAIAApAwAgACgCUCkDICAAKAJQKQMYfFE6AA8LIAAtAA9BAXFFBEAgACgCVEEVQQAQFCAAKAIsEBYgACgCUBAkIABBADYCbAwCCwsgACgCLBAWIAAgACgCUDYCbAsgACgCbCEBIABB8ABqJAAgAiABNgJIIAEEQAJAIAIoAkwEQCACKQMgQgBXBEAgAiACKAJYIAIoAkwgAkEQahBpNwMgCyACIAIoAlggAigCSCACQRBqEGk3AygCQCACKQMgIAIpAyhTBEAgAigCTBAkIAIgAigCSDYCTCACIAIpAyg3AyAMAQsgAigCSBAkCwwBCyACIAIoAkg2AkwCQCACKAJYKAIEQQRxBEAgAiACKAJYIAIoAkwgAkEQahBpNwMgDAELIAJCADcDIAsLIAJBADYCSAsgAiACKAJEQQFqNgJEIAIoAgwgAigCRAJ/IwBBEGsiACACKAIMNgIMIAAoAgwoAgQLa6wQLBoMAQsLIAIoAgwQFiACKQMgQgBTBEAgAigCWEEIaiACQRBqEEMgAigCTBAkIAJBADYCXAwBCyACIAIoAkw2AlwLIAIoAlwhACACQeAAaiQAIAMgADYCWCAARQRAIAMoAmAgAygCXEEIahBDIwBBEGsiACADKAJoNgIMIAAoAgwiACAAKAIwQQFqNgIwIAMoAlwQPSADQQA2AmwMAQsgAygCXCADKAJYKAIANgJAIAMoAlwgAygCWCkDCDcDMCADKAJcIAMoAlgpAxA3AzggAygCXCADKAJYKAIoNgIgIAMoAlgQFSADKAJcKAJQIQAgAygCXCkDMCEJIAMoAlxBCGohAiMAQSBrIgEkACABIAA2AhggASAJNwMQIAEgAjYCDAJAIAEpAxBQBEAgAUEBOgAfDAELIwBBIGsiACABKQMQNwMQIAAgACkDELpEAAAAAAAA6D+jOQMIAkAgACsDCEQAAOD////vQWQEQCAAQX82AgQMAQsgAAJ/IAArAwgiCkQAAAAAAADwQWMgCkQAAAAAAAAAAGZxBEAgCqsMAQtBAAs2AgQLAkAgACgCBEGAgICAeEsEQCAAQYCAgIB4NgIcDAELIAAgACgCBEEBazYCBCAAIAAoAgQgACgCBEEBdnI2AgQgACAAKAIEIAAoAgRBAnZyNgIEIAAgACgCBCAAKAIEQQR2cjYCBCAAIAAoAgQgACgCBEEIdnI2AgQgACAAKAIEIAAoAgRBEHZyNgIEIAAgACgCBEEBajYCBCAAIAAoAgQ2AhwLIAEgACgCHDYCCCABKAIIIAEoAhgoAgBNBEAgAUEBOgAfDAELIAEoAhggASgCCCABKAIMEFlBAXFFBEAgAUEAOgAfDAELIAFBAToAHwsgAS0AHxogAUEgaiQAIANCADcDEANAIAMpAxAgAygCXCkDMFQEQCADIAMoAlwoAkAgAykDEKdBBHRqKAIAKAIwQQBBACADKAJgEEY2AgwgAygCDEUEQCMAQRBrIgAgAygCaDYCDCAAKAIMIgAgACgCMEEBajYCMCADKAJcED0gA0EANgJsDAMLIAMoAlwoAlAgAygCDCADKQMQQQggAygCXEEIahB1QQFxRQRAAkAgAygCXCgCCEEKRgRAIAMoAmRBBHFFDQELIAMoAmAgAygCXEEIahBDIwBBEGsiACADKAJoNgIMIAAoAgwiACAAKAIwQQFqNgIwIAMoAlwQPSADQQA2AmwMBAsLIAMgAykDEEIBfDcDEAwBCwsgAygCXCADKAJcKAIUNgIYIAMgAygCXDYCbAsgAygCbCEAIANB8ABqJAAgBCAANgI4CyAEKAI4RQRAIAQoAlgQMRogBEEANgJcDAELIAQgBCgCODYCXAsgBCgCXCEAIARB4ABqJAAgAAuOAQEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAJBADYCBCACKAIIBEAjAEEQayIAIAIoAgg2AgwgAiAAKAIMKAIANgIEIAIoAggQlgFBAUYEQCMAQRBrIgAgAigCCDYCDEG0mwEgACgCDCgCBDYCAAsLIAIoAgwEQCACKAIMIAIoAgQ2AgALIAJBEGokAAuVAQEBfyMAQRBrIgEkACABIAA2AggCQAJ/IwBBEGsiACABKAIINgIMIAAoAgwpAxhCgIAQg1ALBEAgASgCCCgCAARAIAEgASgCCCgCABCeAUEBcToADwwCCyABQQE6AA8MAQsgASABKAIIQQBCAEESECE+AgQgASABKAIEQQBHOgAPCyABLQAPQQFxIQAgAUEQaiQAIAALfwEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIANBADYCDCADIAI2AggCQCADKQMQQv///////////wBWBEAgAygCCEEEQT0QFCADQX82AhwMAQsgAyADKAIYIAMpAxAgAygCDCADKAIIEGs2AhwLIAMoAhwhACADQSBqJAAgAAt9ACACQQFGBEAgASAAKAIIIAAoAgRrrH0hAQsCQCAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEBABogACgCFEUNAQsgAEEANgIcIABCADcDECAAIAEgAiAAKAIoEQ8AQgBTDQAgAEIANwIEIAAgACgCAEFvcTYCAEEADwtBfwvhAgECfyMAQSBrIgMkAAJ/AkACQEGnEiABLAAAEKIBRQRAQbSbAUEcNgIADAELQZgJEBgiAg0BC0EADAELIAJBAEGQARAyIAFBKxCiAUUEQCACQQhBBCABLQAAQfIARhs2AgALAkAgAS0AAEHhAEcEQCACKAIAIQEMAQsgAEEDQQAQBCIBQYAIcUUEQCADIAFBgAhyNgIQIABBBCADQRBqEAQaCyACIAIoAgBBgAFyIgE2AgALIAJB/wE6AEsgAkGACDYCMCACIAA2AjwgAiACQZgBajYCLAJAIAFBCHENACADIANBGGo2AgAgAEGTqAEgAxAODQAgAkEKOgBLCyACQRo2AiggAkEbNgIkIAJBHDYCICACQR02AgxB6J8BKAIARQRAIAJBfzYCTAsgAkGsoAEoAgA2AjhBrKABKAIAIgAEQCAAIAI2AjQLQaygASACNgIAIAILIQAgA0EgaiQAIAAL8AEBAn8CfwJAIAFB/wFxIgMEQCAAQQNxBEADQCAALQAAIgJFDQMgAiABQf8BcUYNAyAAQQFqIgBBA3ENAAsLAkAgACgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AIANBgYKECGwhAwNAIAIgA3MiAkF/cyACQYGChAhrcUGAgYKEeHENASAAKAIEIQIgAEEEaiEAIAJBgYKECGsgAkF/c3FBgIGChHhxRQ0ACwsDQCAAIgItAAAiAwRAIAJBAWohACADIAFB/wFxRw0BCwsgAgwCCyAAECsgAGoMAQsgAAsiAEEAIAAtAAAgAUH/AXFGGwsYACAAKAJMQX9MBEAgABCkAQ8LIAAQpAELYAIBfgJ/IAAoAighAkEBIQMgAEIAIAAtAABBgAFxBH9BAkEBIAAoAhQgACgCHEsbBUEBCyACEQ8AIgFCAFkEfiAAKAIUIAAoAhxrrCABIAAoAgggACgCBGusfXwFIAELC2sBAX8gAARAIAAoAkxBf0wEQCAAEG8PCyAAEG8PC0GwoAEoAgAEQEGwoAEoAgAQpQEhAQtBrKABKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEsEQCAAEG8gAXIhAQsgACgCOCIADQALCyABCyIAIAAgARACIgBBgWBPBH9BtJsBQQAgAGs2AgBBfwUgAAsLUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEYEQQACwt/AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARCpASEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC5sCACAARQRAQQAPCwJ/AkAgAAR/IAFB/wBNDQECQEGQmQEoAgAoAgBFBEAgAUGAf3FBgL8DRg0DDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMBAsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBAwECwtBtJsBQRk2AgBBfwVBAQsMAQsgACABOgAAQQELC+MBAQJ/IAJBAEchAwJAAkACQCAAQQNxRQ0AIAJFDQAgAUH/AXEhBANAIAAtAAAgBEYNAiACQQFrIgJBAEchAyAAQQFqIgBBA3FFDQEgAg0ACwsgA0UNAQsCQCAALQAAIAFB/wFxRg0AIAJBBEkNACABQf8BcUGBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0BIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQAgAUH/AXEhAQNAIAEgAC0AAEYEQCAADwsgAEEBaiEAIAJBAWsiAg0ACwtBAAuLDAEGfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBA3FFDQEgACgCACICIAFqIQECQCAAIAJrIgBBzJsBKAIARwRAIAJB/wFNBEAgACgCCCIEIAJBA3YiAkEDdEHgmwFqRhogACgCDCIDIARHDQJBuJsBQbibASgCAEF+IAJ3cTYCAAwDCyAAKAIYIQYCQCAAIAAoAgwiA0cEQCAAKAIIIgJByJsBKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIABBFGoiAigCACIEDQAgAEEQaiICKAIAIgQNAEEAIQMMAQsDQCACIQcgBCIDQRRqIgIoAgAiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIACyAGRQ0CAkAgACAAKAIcIgRBAnRB6J0BaiICKAIARgRAIAIgAzYCACADDQFBvJsBQbybASgCAEF+IAR3cTYCAAwECyAGQRBBFCAGKAIQIABGG2ogAzYCACADRQ0DCyADIAY2AhggACgCECICBEAgAyACNgIQIAIgAzYCGAsgACgCFCICRQ0CIAMgAjYCFCACIAM2AhgMAgsgBSgCBCICQQNxQQNHDQFBwJsBIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIICwJAIAUoAgQiAkECcUUEQCAFQdCbASgCAEYEQEHQmwEgADYCAEHEmwFBxJsBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBzJsBKAIARw0DQcCbAUEANgIAQcybAUEANgIADwsgBUHMmwEoAgBGBEBBzJsBIAA2AgBBwJsBQcCbASgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQECQCACQf8BTQRAIAUoAggiBCACQQN2IgJBA3RB4JsBakYaIAQgBSgCDCIDRgRAQbibAUG4mwEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAFKAIYIQYCQCAFIAUoAgwiA0cEQCAFKAIIIgJByJsBKAIASRogAiADNgIMIAMgAjYCCAwBCwJAIAVBFGoiBCgCACICDQAgBUEQaiIEKAIAIgINAEEAIQMMAQsDQCAEIQcgAiIDQRRqIgQoAgAiAg0AIANBEGohBCADKAIQIgINAAsgB0EANgIACyAGRQ0AAkAgBSAFKAIcIgRBAnRB6J0BaiICKAIARgRAIAIgAzYCACADDQFBvJsBQbybASgCAEF+IAR3cTYCAAwCCyAGQRBBFCAGKAIQIAVGG2ogAzYCACADRQ0BCyADIAY2AhggBSgCECICBEAgAyACNgIQIAIgAzYCGAsgBSgCFCICRQ0AIAMgAjYCFCACIAM2AhgLIAAgAUEBcjYCBCAAIAFqIAE2AgAgAEHMmwEoAgBHDQFBwJsBIAE2AgAPCyAFIAJBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsgAUH/AU0EQCABQQN2IgJBA3RB4JsBaiEBAn9BuJsBKAIAIgNBASACdCICcUUEQEG4mwEgAiADcjYCACABDAELIAEoAggLIQIgASAANgIIIAIgADYCDCAAIAE2AgwgACACNgIIDwtBHyECIABCADcCECABQf///wdNBEAgAUEIdiICIAJBgP4/akEQdkEIcSIEdCICIAJBgOAfakEQdkEEcSIDdCICIAJBgIAPakEQdkECcSICdEEPdiADIARyIAJyayICQQF0IAEgAkEVanZBAXFyQRxqIQILIAAgAjYCHCACQQJ0QeidAWohBwJAAkBBvJsBKAIAIgRBASACdCIDcUUEQEG8mwEgAyAEcjYCACAHIAA2AgAgACAHNgIYDAELIAFBAEEZIAJBAXZrIAJBH0YbdCECIAcoAgAhAwNAIAMiBCgCBEF4cSABRg0CIAJBHXYhAyACQQF0IQIgBCADQQRxaiIHQRBqKAIAIgMNAAsgByAANgIQIAAgBDYCGAsgACAANgIMIAAgADYCCA8LIAQoAggiASAANgIMIAQgADYCCCAAQQA2AhggACAENgIMIAAgATYCCAsL+QIBAX8jAEEgayIEJAAgBCAANgIYIAQgATcDECAEIAI2AgwgBCADNgIIIAQgBCgCGCAEKAIYIAQpAxAgBCgCDCAEKAIIEK4BIgA2AgACQCAARQRAIARBADYCHAwBCyAEKAIAEElBAEgEQCAEKAIYQQhqIAQoAgAQFyAEKAIAEBsgBEEANgIcDAELIAQoAhghAiMAQRBrIgAkACAAIAI2AgggAEEYEBgiAjYCBAJAIAJFBEAgACgCCEEIakEOQQAQFCAAQQA2AgwMAQsgACgCBCAAKAIINgIAIwBBEGsiAiAAKAIEQQRqNgIMIAIoAgxBADYCACACKAIMQQA2AgQgAigCDEEANgIIIAAoAgRBADoAECAAKAIEQQA2AhQgACAAKAIENgIMCyAAKAIMIQIgAEEQaiQAIAQgAjYCBCACRQRAIAQoAgAQGyAEQQA2AhwMAQsgBCgCBCAEKAIANgIUIAQgBCgCBDYCHAsgBCgCHCEAIARBIGokACAAC7cOAgN/AX4jAEHAAWsiBSQAIAUgADYCuAEgBSABNgK0ASAFIAI3A6gBIAUgAzYCpAEgBUIANwOYASAFQgA3A5ABIAUgBDYCjAECQCAFKAK4AUUEQCAFQQA2ArwBDAELAkAgBSgCtAEEQCAFKQOoASAFKAK0ASkDMFQNAQsgBSgCuAFBCGpBEkEAEBQgBUEANgK8AQwBCwJAIAUoAqQBQQhxDQAgBSgCtAEoAkAgBSkDqAGnQQR0aigCCEUEQCAFKAK0ASgCQCAFKQOoAadBBHRqLQAMQQFxRQ0BCyAFKAK4AUEIakEPQQAQFCAFQQA2ArwBDAELIAUoArQBIAUpA6gBIAUoAqQBQQhyIAVByABqEH9BAEgEQCAFKAK4AUEIakEUQQAQFCAFQQA2ArwBDAELIAUoAqQBQSBxBEAgBSAFKAKkAUEEcjYCpAELAkAgBSkDmAFQBEAgBSkDkAFQDQELIAUoAqQBQQRxRQ0AIAUoArgBQQhqQRJBABAUIAVBADYCvAEMAQsCQCAFKQOYAVAEQCAFKQOQAVANAQsgBSkDmAEgBSkDmAEgBSkDkAF8WARAIAUpA2AgBSkDmAEgBSkDkAF8Wg0BCyAFKAK4AUEIakESQQAQFCAFQQA2ArwBDAELIAUpA5ABUARAIAUgBSkDYCAFKQOYAX03A5ABCyAFIAUpA5ABIAUpA2BUOgBHIAUgBSgCpAFBIHEEf0EABSAFLwF6QQBHC0EBcToARSAFIAUoAqQBQQRxBH9BAAUgBS8BeEEARwtBAXE6AEQgBQJ/IAUoAqQBQQRxBEBBACAFLwF4DQEaCyAFLQBHQX9zC0EBcToARiAFLQBFQQFxBEAgBSgCjAFFBEAgBSAFKAK4ASgCHDYCjAELIAUoAowBRQRAIAUoArgBQQhqQRpBABAUIAVBADYCvAEMAgsLIAUpA2hQBEAgBSAFKAK4AUEAQgBBABB+NgK8AQwBCwJAAkAgBS0AR0EBcUUNACAFLQBFQQFxDQAgBS0AREEBcQ0AIAUgBSkDkAE3AyAgBSAFKQOQATcDKCAFQQA7ATggBSAFKAJwNgIwIAVC3AA3AwggBSAFKAK0ASgCACAFKQOYASAFKQOQASAFQQhqQQAgBSgCtAEgBSkDqAEgBSgCuAFBCGoQZCIANgKIAQwBCyAFIAUoArQBIAUpA6gBIAUoAqQBIAUoArgBQQhqEEUiADYCBCAARQRAIAVBADYCvAEMAgsgBSAFKAK0ASgCAEIAIAUpA2ggBUHIAGogBSgCBC8BDEEBdkEDcSAFKAK0ASAFKQOoASAFKAK4AUEIahBkIgA2AogBCyAARQRAIAVBADYCvAEMAQsCfyAFKAKIASEAIAUoArQBIQMjAEEQayIBJAAgASAANgIMIAEgAzYCCCABKAIMIAEoAgg2AiwgASgCCCEDIAEoAgwhBCMAQSBrIgAkACAAIAM2AhggACAENgIUAkAgACgCGCgCSCAAKAIYKAJEQQFqTQRAIAAgACgCGCgCSEEKajYCDCAAIAAoAhgoAkwgACgCDEECdBBINgIQIAAoAhBFBEAgACgCGEEIakEOQQAQFCAAQX82AhwMAgsgACgCGCAAKAIMNgJIIAAoAhggACgCEDYCTAsgACgCFCEEIAAoAhgoAkwhBiAAKAIYIgcoAkQhAyAHIANBAWo2AkQgA0ECdCAGaiAENgIAIABBADYCHAsgACgCHCEDIABBIGokACABQRBqJAAgA0EASAsEQCAFKAKIARAbIAVBADYCvAEMAQsgBS0ARUEBcQRAIAUgBS8BekEAEHwiADYCACAARQRAIAUoArgBQQhqQRhBABAUIAVBADYCvAEMAgsgBSAFKAK4ASAFKAKIASAFLwF6QQAgBSgCjAEgBSgCABEFADYChAEgBSgCiAEQGyAFKAKEAUUEQCAFQQA2ArwBDAILIAUgBSgChAE2AogBCyAFLQBEQQFxBEAgBSAFKAK4ASAFKAKIASAFLwF4ELABNgKEASAFKAKIARAbIAUoAoQBRQRAIAVBADYCvAEMAgsgBSAFKAKEATYCiAELIAUtAEZBAXEEQCAFIAUoArgBIAUoAogBQQEQrwE2AoQBIAUoAogBEBsgBSgChAFFBEAgBUEANgK8AQwCCyAFIAUoAoQBNgKIAQsCQCAFLQBHQQFxRQ0AIAUtAEVBAXFFBEAgBS0AREEBcUUNAQsgBSgCuAEhASAFKAKIASEDIAUpA5gBIQIgBSkDkAEhCCMAQSBrIgAkACAAIAE2AhwgACADNgIYIAAgAjcDECAAIAg3AwggACgCGCAAKQMQIAApAwhBAEEAQQBCACAAKAIcQQhqEGQhASAAQSBqJAAgBSABNgKEASAFKAKIARAbIAUoAoQBRQRAIAVBADYCvAEMAgsgBSAFKAKEATYCiAELIAUgBSgCiAE2ArwBCyAFKAK8ASEAIAVBwAFqJAAgAAuEAgEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjYCEAJAIAMoAhRFBEAgAygCGEEIakESQQAQFCADQQA2AhwMAQsgA0E4EBgiADYCDCAARQRAIAMoAhhBCGpBDkEAEBQgA0EANgIcDAELIwBBEGsiACADKAIMQQhqNgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAMoAgwgAygCEDYCACADKAIMQQA2AgQgAygCDEIANwMoQQBBAEEAEBohACADKAIMIAA2AjAgAygCDEIANwMYIAMgAygCGCADKAIUQRQgAygCDBBmNgIcCyADKAIcIQAgA0EgaiQAIAALQwEBfyMAQRBrIgMkACADIAA2AgwgAyABNgIIIAMgAjYCBCADKAIMIAMoAgggAygCBEEAQQAQsgEhACADQRBqJAAgAAtJAQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDCgCrEAgASgCDCgCqEAoAgQRAgAgASgCDBA3IAEoAgwQFQsgAUEQaiQAC5QFAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE2AiQgBSACNgIgIAUgAzoAHyAFIAQ2AhggBUEANgIMAkAgBSgCJEUEQCAFKAIoQQhqQRJBABAUIAVBADYCLAwBCyAFIAUoAiAgBS0AH0EBcRCzASIANgIMIABFBEAgBSgCKEEIakEQQQAQFCAFQQA2AiwMAQsgBSgCICEBIAUtAB9BAXEhAiAFKAIYIQMgBSgCDCEEIwBBIGsiACQAIAAgATYCGCAAIAI6ABcgACADNgIQIAAgBDYCDCAAQbDAABAYIgE2AggCQCABRQRAIABBADYCHAwBCyMAQRBrIgEgACgCCDYCDCABKAIMQQA2AgAgASgCDEEANgIEIAEoAgxBADYCCCAAKAIIAn8gAC0AF0EBcQRAIAAoAhhBf0cEfyAAKAIYQX5GBUEBC0EBcQwBC0EAC0EARzoADiAAKAIIIAAoAgw2AqhAIAAoAgggACgCGDYCFCAAKAIIIAAtABdBAXE6ABAgACgCCEEAOgAMIAAoAghBADoADSAAKAIIQQA6AA8gACgCCCgCqEAoAgAhAQJ/AkAgACgCGEF/RwRAIAAoAhhBfkcNAQtBCAwBCyAAKAIYC0H//wNxIAAoAhAgACgCCCABEQEAIQEgACgCCCABNgKsQCABRQRAIAAoAggQNyAAKAIIEBUgAEEANgIcDAELIAAgACgCCDYCHAsgACgCHCEBIABBIGokACAFIAE2AhQgAUUEQCAFKAIoQQhqQQ5BABAUIAVBADYCLAwBCyAFIAUoAiggBSgCJEETIAUoAhQQZiIANgIQIABFBEAgBSgCFBCxASAFQQA2AiwMAQsgBSAFKAIQNgIsCyAFKAIsIQAgBUEwaiQAIAALzAEBAX8jAEEgayICIAA2AhggAiABOgAXIAICfwJAIAIoAhhBf0cEQCACKAIYQX5HDQELQQgMAQsgAigCGAs7AQ4gAkEANgIQAkADQCACKAIQQdSXASgCAEkEQCACKAIQQQxsQdiXAWovAQAgAi8BDkYEQCACLQAXQQFxBEAgAiACKAIQQQxsQdiXAWooAgQ2AhwMBAsgAiACKAIQQQxsQdiXAWooAgg2AhwMAwUgAiACKAIQQQFqNgIQDAILAAsLIAJBADYCHAsgAigCHAvkAQEBfyMAQSBrIgMkACADIAA6ABsgAyABNgIUIAMgAjYCECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEFwgAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQeBogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQeBogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBcIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHkEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIcKAJABEAgASgCCCgCKCABKAIIKAIcKAJAIAEoAggoAiQRBAALIAEoAggoAhwoAjgEQCABKAIIKAIoIAEoAggoAhwoAjggASgCCCgCJBEEAAsgASgCCCgCKCABKAIIKAIcIAEoAggoAiQRBAAgASgCCEEANgIcIAFBfUEAIAEoAgRB8QBGGzYCDAsgASgCDCEAIAFBEGokACAAC+sXAQJ/IwBB8ABrIgMgADYCbCADIAE2AmggAyACNgJkIANBfzYCXCADIAMoAmgvAQI2AlQgA0EANgJQIANBBzYCTCADQQQ2AkggAygCVEUEQCADQYoBNgJMIANBAzYCSAsgA0EANgJgA0AgAygCYCADKAJkSkUEQCADIAMoAlQ2AlggAyADKAJoIAMoAmBBAWpBAnRqLwECNgJUIAMgAygCUEEBaiIANgJQAkACQCADKAJMIABMDQAgAygCWCADKAJURw0ADAELAkAgAygCUCADKAJISARAA0AgAyADKAJsQfwUaiADKAJYQQJ0ai8BAjYCRAJAIAMoAmwoArwtQRAgAygCRGtKBEAgAyADKAJsQfwUaiADKAJYQQJ0ai8BADYCQCADKAJsIgAgAC8BuC0gAygCQEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAJAQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCREEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsQfwUaiADKAJYQQJ0ai8BACADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCRCAAKAK8LWo2ArwtCyADIAMoAlBBAWsiADYCUCAADQALDAELAkAgAygCWARAIAMoAlggAygCXEcEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwECNgI8AkAgAygCbCgCvC1BECADKAI8a0oEQCADIAMoAmxB/BRqIAMoAlhBAnRqLwEANgI4IAMoAmwiACAALwG4LSADKAI4Qf//A3EgAygCbCgCvC10cjsBuC0gAygCbC8BuC1B/wFxIQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbC8BuC1BCHYhASADKAJsKAIIIQIgAygCbCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJsIAMoAjhB//8DcUEQIAMoAmwoArwta3U7AbgtIAMoAmwiACAAKAK8LSADKAI8QRBrajYCvC0MAQsgAygCbCIAIAAvAbgtIAMoAmxB/BRqIAMoAlhBAnRqLwEAIAMoAmwoArwtdHI7AbgtIAMoAmwiACADKAI8IAAoArwtajYCvC0LIAMgAygCUEEBazYCUAsgAyADKAJsLwG+FTYCNAJAIAMoAmwoArwtQRAgAygCNGtKBEAgAyADKAJsLwG8FTYCMCADKAJsIgAgAC8BuC0gAygCMEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIwQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCNEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwG8FSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCNCAAKAK8LWo2ArwtCyADQQI2AiwCQCADKAJsKAK8LUEQIAMoAixrSgRAIAMgAygCUEEDazYCKCADKAJsIgAgAC8BuC0gAygCKEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIoQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAiwgACgCvC1qNgK8LQsMAQsCQCADKAJQQQpMBEAgAyADKAJsLwHCFTYCJAJAIAMoAmwoArwtQRAgAygCJGtKBEAgAyADKAJsLwHAFTYCICADKAJsIgAgAC8BuC0gAygCIEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIgQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHAFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCJCAAKAK8LWo2ArwtCyADQQM2AhwCQCADKAJsKAK8LUEQIAMoAhxrSgRAIAMgAygCUEEDazYCGCADKAJsIgAgAC8BuC0gAygCGEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIYQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCHEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQNrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAhwgACgCvC1qNgK8LQsMAQsgAyADKAJsLwHGFTYCFAJAIAMoAmwoArwtQRAgAygCFGtKBEAgAyADKAJsLwHEFTYCECADKAJsIgAgAC8BuC0gAygCEEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIQQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJsLwHEFSADKAJsKAK8LXRyOwG4LSADKAJsIgAgAygCFCAAKAK8LWo2ArwtCyADQQc2AgwCQCADKAJsKAK8LUEQIAMoAgxrSgRAIAMgAygCUEELazYCCCADKAJsIgAgAC8BuC0gAygCCEH//wNxIAMoAmwoArwtdHI7AbgtIAMoAmwvAbgtQf8BcSEBIAMoAmwoAgghAiADKAJsIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAmwvAbgtQQh2IQEgAygCbCgCCCECIAMoAmwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCbCADKAIIQf//A3FBECADKAJsKAK8LWt1OwG4LSADKAJsIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAmwiACAALwG4LSADKAJQQQtrQf//A3EgAygCbCgCvC10cjsBuC0gAygCbCIAIAMoAgwgACgCvC1qNgK8LQsLCwsgA0EANgJQIAMgAygCWDYCXAJAIAMoAlRFBEAgA0GKATYCTCADQQM2AkgMAQsCQCADKAJYIAMoAlRGBEAgA0EGNgJMIANBAzYCSAwBCyADQQc2AkwgA0EENgJICwsLIAMgAygCYEEBajYCYAwBCwsLkQQBAX8jAEEwayIDIAA2AiwgAyABNgIoIAMgAjYCJCADQX82AhwgAyADKAIoLwECNgIUIANBADYCECADQQc2AgwgA0EENgIIIAMoAhRFBEAgA0GKATYCDCADQQM2AggLIAMoAiggAygCJEEBakECdGpB//8DOwECIANBADYCIANAIAMoAiAgAygCJEpFBEAgAyADKAIUNgIYIAMgAygCKCADKAIgQQFqQQJ0ai8BAjYCFCADIAMoAhBBAWoiADYCEAJAAkAgAygCDCAATA0AIAMoAhggAygCFEcNAAwBCwJAIAMoAhAgAygCCEgEQCADKAIsQfwUaiADKAIYQQJ0aiIAIAMoAhAgAC8BAGo7AQAMAQsCQCADKAIYBEAgAygCGCADKAIcRwRAIAMoAiwgAygCGEECdGpB/BRqIgAgAC8BAEEBajsBAAsgAygCLCIAIABBvBVqLwEAQQFqOwG8FQwBCwJAIAMoAhBBCkwEQCADKAIsIgAgAEHAFWovAQBBAWo7AcAVDAELIAMoAiwiACAAQcQVai8BAEEBajsBxBULCwsgA0EANgIQIAMgAygCGDYCHAJAIAMoAhRFBEAgA0GKATYCDCADQQM2AggMAQsCQCADKAIYIAMoAhRGBEAgA0EGNgIMIANBAzYCCAwBCyADQQc2AgwgA0EENgIICwsLIAMgAygCIEEBajYCIAwBCwsLpxIBAn8jAEHQAGsiAyAANgJMIAMgATYCSCADIAI2AkQgA0EANgI4IAMoAkwoAqAtBEADQCADIAMoAkwoAqQtIAMoAjhBAXRqLwEANgJAIAMoAkwoApgtIQAgAyADKAI4IgFBAWo2AjggAyAAIAFqLQAANgI8AkAgAygCQEUEQCADIAMoAkggAygCPEECdGovAQI2AiwCQCADKAJMKAK8LUEQIAMoAixrSgRAIAMgAygCSCADKAI8QQJ0ai8BADYCKCADKAJMIgAgAC8BuC0gAygCKEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIoQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCLEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjxBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIsIAAoArwtajYCvC0LDAELIAMgAygCPC0A0F02AjQgAyADKAJIIAMoAjRBgQJqQQJ0ai8BAjYCJAJAIAMoAkwoArwtQRAgAygCJGtKBEAgAyADKAJIIAMoAjRBgQJqQQJ0ai8BADYCICADKAJMIgAgAC8BuC0gAygCIEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIgQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCJEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJIIAMoAjRBgQJqQQJ0ai8BACADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCJCAAKAK8LWo2ArwtCyADIAMoAjRBAnRBkOoAaigCADYCMCADKAIwBEAgAyADKAI8IAMoAjRBAnRBgO0AaigCAGs2AjwgAyADKAIwNgIcAkAgAygCTCgCvC1BECADKAIca0oEQCADIAMoAjw2AhggAygCTCIAIAAvAbgtIAMoAhhB//8DcSADKAJMKAK8LXRyOwG4LSADKAJMLwG4LUH/AXEhASADKAJMKAIIIQIgAygCTCIEKAIUIQAgBCAAQQFqNgIUIAAgAmogAToAACADKAJMLwG4LUEIdiEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwgAygCGEH//wNxQRAgAygCTCgCvC1rdTsBuC0gAygCTCIAIAAoArwtIAMoAhxBEGtqNgK8LQwBCyADKAJMIgAgAC8BuC0gAygCPEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIcIAAoArwtajYCvC0LCyADIAMoAkBBAWs2AkAgAwJ/IAMoAkBBgAJJBEAgAygCQC0A0FkMAQsgAygCQEEHdkGAAmotANBZCzYCNCADIAMoAkQgAygCNEECdGovAQI2AhQCQCADKAJMKAK8LUEQIAMoAhRrSgRAIAMgAygCRCADKAI0QQJ0ai8BADYCECADKAJMIgAgAC8BuC0gAygCEEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIQQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCFEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJEIAMoAjRBAnRqLwEAIAMoAkwoArwtdHI7AbgtIAMoAkwiACADKAIUIAAoArwtajYCvC0LIAMgAygCNEECdEGQ6wBqKAIANgIwIAMoAjAEQCADIAMoAkAgAygCNEECdEGA7gBqKAIAazYCQCADIAMoAjA2AgwCQCADKAJMKAK8LUEQIAMoAgxrSgRAIAMgAygCQDYCCCADKAJMIgAgAC8BuC0gAygCCEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIIQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCDEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJAQf//A3EgAygCTCgCvC10cjsBuC0gAygCTCIAIAMoAgwgACgCvC1qNgK8LQsLCyADKAI4IAMoAkwoAqAtSQ0ACwsgAyADKAJILwGCCDYCBAJAIAMoAkwoArwtQRAgAygCBGtKBEAgAyADKAJILwGACDYCACADKAJMIgAgAC8BuC0gAygCAEH//wNxIAMoAkwoArwtdHI7AbgtIAMoAkwvAbgtQf8BcSEBIAMoAkwoAgghAiADKAJMIgQoAhQhACAEIABBAWo2AhQgACACaiABOgAAIAMoAkwvAbgtQQh2IQEgAygCTCgCCCECIAMoAkwiBCgCFCEAIAQgAEEBajYCFCAAIAJqIAE6AAAgAygCTCADKAIAQf//A3FBECADKAJMKAK8LWt1OwG4LSADKAJMIgAgACgCvC0gAygCBEEQa2o2ArwtDAELIAMoAkwiACAALwG4LSADKAJILwGACCADKAJMKAK8LXRyOwG4LSADKAJMIgAgAygCBCAAKAK8LWo2ArwtCwuXAgEEfyMAQRBrIgEgADYCDAJAIAEoAgwoArwtQRBGBEAgASgCDC8BuC1B/wFxIQIgASgCDCgCCCEDIAEoAgwiBCgCFCEAIAQgAEEBajYCFCAAIANqIAI6AAAgASgCDC8BuC1BCHYhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMQQA7AbgtIAEoAgxBADYCvC0MAQsgASgCDCgCvC1BCE4EQCABKAIMLwG4LSECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAAIAEoAgwiACAALwG4LUEIdjsBuC0gASgCDCIAIAAoArwtQQhrNgK8LQsLC+8BAQR/IwBBEGsiASAANgIMAkAgASgCDCgCvC1BCEoEQCABKAIMLwG4LUH/AXEhAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAACABKAIMLwG4LUEIdiECIAEoAgwoAgghAyABKAIMIgQoAhQhACAEIABBAWo2AhQgACADaiACOgAADAELIAEoAgwoArwtQQBKBEAgASgCDC8BuC0hAiABKAIMKAIIIQMgASgCDCIEKAIUIQAgBCAAQQFqNgIUIAAgA2ogAjoAAAsLIAEoAgxBADsBuC0gASgCDEEANgK8LQv8AQEBfyMAQRBrIgEgADYCDCABQQA2AggDQCABKAIIQZ4CTkUEQCABKAIMQZQBaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEEeTkUEQCABKAIMQYgTaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgAUEANgIIA0AgASgCCEETTkUEQCABKAIMQfwUaiABKAIIQQJ0akEAOwEAIAEgASgCCEEBajYCCAwBCwsgASgCDEEBOwGUCSABKAIMQQA2AqwtIAEoAgxBADYCqC0gASgCDEEANgKwLSABKAIMQQA2AqAtCyIBAX8jAEEQayIBJAAgASAANgIMIAEoAgwQFSABQRBqJAAL6QEBAX8jAEEwayICIAA2AiQgAiABNwMYIAJCADcDECACIAIoAiQpAwhCAX03AwgCQANAIAIpAxAgAikDCFQEQCACIAIpAxAgAikDCCACKQMQfUIBiHw3AwACQCACKAIkKAIEIAIpAwCnQQN0aikDACACKQMYVgRAIAIgAikDAEIBfTcDCAwBCwJAIAIpAwAgAigCJCkDCFIEQCACKAIkKAIEIAIpAwBCAXynQQN0aikDACACKQMYWA0BCyACIAIpAwA3AygMBAsgAiACKQMAQgF8NwMQCwwBCwsgAiACKQMQNwMoCyACKQMoC6cBAQF/IwBBMGsiBCQAIAQgADYCKCAEIAE2AiQgBCACNwMYIAQgAzYCFCAEIAQoAigpAzggBCgCKCkDMCAEKAIkIAQpAxggBCgCFBCRATcDCAJAIAQpAwhCAFMEQCAEQX82AiwMAQsgBCgCKCAEKQMINwM4IAQoAiggBCgCKCkDOBC/ASECIAQoAiggAjcDQCAEQQA2AiwLIAQoAiwhACAEQTBqJAAgAAvrAQEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIAMgAjYCDAJAIAMpAxAgAygCGCkDEFQEQCADQQE6AB8MAQsgAyADKAIYKAIAIAMpAxBCBIanEEgiADYCCCAARQRAIAMoAgxBDkEAEBQgA0EAOgAfDAELIAMoAhggAygCCDYCACADIAMoAhgoAgQgAykDEEIBfEIDhqcQSCIANgIEIABFBEAgAygCDEEOQQAQFCADQQA6AB8MAQsgAygCGCADKAIENgIEIAMoAhggAykDEDcDECADQQE6AB8LIAMtAB9BAXEhACADQSBqJAAgAAvOAgEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQAJAIAQoAigNACAEKQMgUA0AIAQoAhhBEkEAEBQgBEEANgIsDAELIAQgBCgCKCAEKQMgIAQoAhwgBCgCGBBNIgA2AgwgAEUEQCAEQQA2AiwMAQsgBEEYEBgiADYCFCAARQRAIAQoAhhBDkEAEBQgBCgCDBAzIARBADYCLAwBCyAEKAIUIAQoAgw2AhAgBCgCFEEANgIUQQAQASEAIAQoAhQgADYCDCMAQRBrIgAgBCgCFDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCAEQQIgBCgCFCAEKAIYEJQBIgA2AhAgAEUEQCAEKAIUKAIQEDMgBCgCFBAVIARBADYCLAwBCyAEIAQoAhA2AiwLIAQoAiwhACAEQTBqJAAgAAupAQEBfyMAQTBrIgQkACAEIAA2AiggBCABNwMgIAQgAjYCHCAEIAM2AhgCQCAEKAIoRQRAIAQpAyBCAFIEQCAEKAIYQRJBABAUIARBADYCLAwCCyAEQQBCACAEKAIcIAQoAhgQwgE2AiwMAQsgBCAEKAIoNgIIIAQgBCkDIDcDECAEIARBCGpCASAEKAIcIAQoAhgQwgE2AiwLIAQoAiwhACAEQTBqJAAgAAtGAQF/IwBBIGsiAyQAIAMgADYCHCADIAE3AxAgAyACNgIMIAMoAhwgAykDECADKAIMIAMoAhxBCGoQTiEAIANBIGokACAAC40CAQF/IwBBMGsiAyQAIAMgADYCKCADIAE7ASYgAyACNgIgIAMgAygCKCgCNCADQR5qIAMvASZBgAZBABBfNgIQAkAgAygCEEUNACADLwEeQQVJDQACQCADKAIQLQAAQQFGDQAMAQsgAyADKAIQIAMvAR6tECkiADYCFCAARQRADAELIAMoAhQQjwEaIAMgAygCFBAqNgIYIAMoAiAQjAEgAygCGEYEQCADIAMoAhQQLz0BDiADIAMoAhQgAy8BDq0QHiADLwEOQYAQQQAQUjYCCCADKAIIBEAgAygCIBAlIAMgAygCCDYCIAsLIAMoAhQQFgsgAyADKAIgNgIsIAMoAiwhACADQTBqJAAgAAvaFwIBfwF+IwBBgAFrIgUkACAFIAA2AnQgBSABNgJwIAUgAjYCbCAFIAM6AGsgBSAENgJkIAUgBSgCbEEARzoAHSAFQR5BLiAFLQBrQQFxGzYCKAJAAkAgBSgCbARAIAUoAmwQLyAFKAIorVQEQCAFKAJkQRNBABAUIAVCfzcDeAwDCwwBCyAFIAUoAnAgBSgCKK0gBUEwaiAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBSgCbEIEEB4hAEHxEkH2EiAFLQBrQQFxGygAACAAKAAARwRAIAUoAmRBE0EAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFKAJ0EE8CQCAFLQBrQQFxRQRAIAUoAmwQHSEAIAUoAnQgADsBCAwBCyAFKAJ0QQA7AQgLIAUoAmwQHSEAIAUoAnQgADsBCiAFKAJsEB0hACAFKAJ0IAA7AQwgBSgCbBAdQf//A3EhACAFKAJ0IAA2AhAgBSAFKAJsEB07AS4gBSAFKAJsEB07ASwgBS8BLiEBIAUvASwhAiMAQTBrIgAkACAAIAE7AS4gACACOwEsIABCADcCACAAQQA2AiggAEIANwIgIABCADcCGCAAQgA3AhAgAEIANwIIIABBADYCICAAIAAvASxBCXZB0ABqNgIUIAAgAC8BLEEFdkEPcUEBazYCECAAIAAvASxBH3E2AgwgACAALwEuQQt2NgIIIAAgAC8BLkEFdkE/cTYCBCAAIAAvAS5BAXRBPnE2AgAgABAMIQEgAEEwaiQAIAEhACAFKAJ0IAA2AhQgBSgCbBAqIQAgBSgCdCAANgIYIAUoAmwQKq0hBiAFKAJ0IAY3AyAgBSgCbBAqrSEGIAUoAnQgBjcDKCAFIAUoAmwQHTsBIiAFIAUoAmwQHTsBHgJAIAUtAGtBAXEEQCAFQQA7ASAgBSgCdEEANgI8IAUoAnRBADsBQCAFKAJ0QQA2AkQgBSgCdEIANwNIDAELIAUgBSgCbBAdOwEgIAUoAmwQHUH//wNxIQAgBSgCdCAANgI8IAUoAmwQHSEAIAUoAnQgADsBQCAFKAJsECohACAFKAJ0IAA2AkQgBSgCbBAqrSEGIAUoAnQgBjcDSAsCfyMAQRBrIgAgBSgCbDYCDCAAKAIMLQAAQQFxRQsEQCAFKAJkQRRBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAQsCQCAFKAJ0LwEMQQFxBEAgBSgCdC8BDEHAAHEEQCAFKAJ0Qf//AzsBUgwCCyAFKAJ0QQE7AVIMAQsgBSgCdEEAOwFSCyAFKAJ0QQA2AjAgBSgCdEEANgI0IAUoAnRBADYCOCAFIAUvASAgBS8BIiAFLwEeamo2AiQCQCAFLQAdQQFxBEAgBSgCbBAvIAUoAiStVARAIAUoAmRBFUEAEBQgBUJ/NwN4DAMLDAELIAUoAmwQFiAFIAUoAnAgBSgCJK1BACAFKAJkEEEiADYCbCAARQRAIAVCfzcDeAwCCwsgBS8BIgRAIAUoAmwgBSgCcCAFLwEiQQEgBSgCZBCNASEAIAUoAnQgADYCMCAFKAJ0KAIwRQRAAn8jAEEQayIAIAUoAmQ2AgwgACgCDCgCAEERRgsEQCAFKAJkQRVBABAUCyAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCMEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFLwEeBEAgBSAFKAJsIAUoAnAgBS8BHkEAIAUoAmQQYDYCGCAFKAIYRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCGCAFLwEeQYACQYAEIAUtAGtBAXEbIAUoAnRBNGogBSgCZBCIAUEBcUUEQCAFKAIYEBUgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCyAFKAIYEBUgBS0Aa0EBcQRAIAUoAnRBAToABAsLIAUvASAEQCAFKAJsIAUoAnAgBS8BIEEAIAUoAmQQjQEhACAFKAJ0IAA2AjggBSgCdCgCOEUEQCAFLQAdQQFxRQRAIAUoAmwQFgsgBUJ/NwN4DAILIAUoAnQvAQxBgBBxBEAgBSgCdCgCOEECEDpBBUYEQCAFKAJkQRVBABAUIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAwsLCyAFKAJ0QfXgASAFKAJ0KAIwEMUBIQAgBSgCdCAANgIwIAUoAnRB9cYBIAUoAnQoAjgQxQEhACAFKAJ0IAA2AjgCQAJAIAUoAnQpAyhC/////w9RDQAgBSgCdCkDIEL/////D1ENACAFKAJ0KQNIQv////8PUg0BCyAFIAUoAnQoAjQgBUEWakEBQYACQYAEIAUtAGtBAXEbIAUoAmQQXzYCDCAFKAIMRQRAIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSAFKAIMIAUvARatECkiADYCECAARQRAIAUoAmRBDkEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwCCwJAIAUoAnQpAyhC/////w9RBEAgBSgCEBAwIQYgBSgCdCAGNwMoDAELIAUtAGtBAXEEQCAFKAIQIQEjAEEgayIAJAAgACABNgIYIABCCDcDECAAIAAoAhgpAxAgACkDEHw3AwgCQCAAKQMIIAAoAhgpAxBUBEAgACgCGEEAOgAAIABBfzYCHAwBCyAAIAAoAhggACkDCBAsNgIcCyAAKAIcGiAAQSBqJAALCyAFKAJ0KQMgQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDIAsgBS0Aa0EBcUUEQCAFKAJ0KQNIQv////8PUQRAIAUoAhAQMCEGIAUoAnQgBjcDSAsgBSgCdCgCPEH//wNGBEAgBSgCEBAqIQAgBSgCdCAANgI8CwsgBSgCEBBHQQFxRQRAIAUoAmRBFUEAEBQgBSgCEBAWIAUtAB1BAXFFBEAgBSgCbBAWCyAFQn83A3gMAgsgBSgCEBAWCwJ/IwBBEGsiACAFKAJsNgIMIAAoAgwtAABBAXFFCwRAIAUoAmRBFEEAEBQgBS0AHUEBcUUEQCAFKAJsEBYLIAVCfzcDeAwBCyAFLQAdQQFxRQRAIAUoAmwQFgsgBSgCdCkDSEL///////////8AVgRAIAUoAmRBBEEWEBQgBUJ/NwN4DAELAn8gBSgCdCEBIAUoAmQhAiMAQSBrIgAkACAAIAE2AhggACACNgIUAkAgACgCGCgCEEHjAEcEQCAAQQE6AB8MAQsgACAAKAIYKAI0IABBEmpBgbICQYAGQQAQXzYCCAJAIAAoAggEQCAALwESQQdPDQELIAAoAhRBFUEAEBQgAEEAOgAfDAELIAAgACgCCCAALwESrRApIgE2AgwgAUUEQCAAKAIUQRRBABAUIABBADoAHwwBCyAAQQE6AAcCQAJAAkAgACgCDBAdQQFrDgICAAELIAAoAhgpAyhCFFQEQCAAQQA6AAcLDAELIAAoAhRBGEEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIMQgIQHi8AAEHBigFHBEAgACgCFEEYQQAQFCAAKAIMEBYgAEEAOgAfDAELAkACQAJAAkACQCAAKAIMEI8BQQFrDgMAAQIDCyAAQYECOwEEDAMLIABBggI7AQQMAgsgAEGDAjsBBAwBCyAAKAIUQRhBABAUIAAoAgwQFiAAQQA6AB8MAQsgAC8BEkEHRwRAIAAoAhRBFUEAEBQgACgCDBAWIABBADoAHwwBCyAAKAIYIAAtAAdBAXE6AAYgACgCGCAALwEEOwFSIAAoAgwQHUH//wNxIQEgACgCGCABNgIQIAAoAgwQFiAAQQE6AB8LIAAtAB9BAXEhASAAQSBqJAAgAUEBcUULBEAgBUJ/NwN4DAELIAUoAnQoAjQQhwEhACAFKAJ0IAA2AjQgBSAFKAIoIAUoAiRqrTcDeAsgBSkDeCEGIAVBgAFqJAAgBgsYAEGomwFCADcCAEGwmwFBADYCAEGomwELCABBAUEMEHYLBwAgACgCLAsHACAAKAIoCwcAIAAoAhgLtQkBAX8jAEHgwABrIgUkACAFIAA2AtRAIAUgATYC0EAgBSACNgLMQCAFIAM3A8BAIAUgBDYCvEAgBSAFKALQQDYCuEACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBSgCvEAOEQMEAAYBAgUJCgoKCgoKCAoHCgsgBUIANwPYQAwKCyAFIAUoArhAQeQAaiAFKALMQCAFKQPAQBBCNwPYQAwJCyAFKAK4QBAVIAVCADcD2EAMCAsgBSgCuEAoAhAEQCAFIAUoArhAKAIQIAUoArhAKQMYIAUoArhAQeQAahBlIgM3A5hAIANQBEAgBUJ/NwPYQAwJCyAFKAK4QCkDCCAFKAK4QCkDCCAFKQOYQHxWBEAgBSgCuEBB5ABqQRVBABAUIAVCfzcD2EAMCQsgBSgCuEAiACAFKQOYQCAAKQMAfDcDACAFKAK4QCIAIAUpA5hAIAApAwh8NwMIIAUoArhAQQA2AhALIAUoArhALQB4QQFxRQRAIAVCADcDqEADQCAFKQOoQCAFKAK4QCkDAFQEQCAFIAUoArhAKQMAIAUpA6hAfUKAwABWBH5CgMAABSAFKAK4QCkDACAFKQOoQH0LNwOgQCAFIAUoAtRAIAVBEGogBSkDoEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqIAUoAtRAEBcgBUJ/NwPYQAwLCyAFKQOwQFAEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwLBSAFIAUpA7BAIAUpA6hAfDcDqEAMAgsACwsLIAUoArhAIAUoArhAKQMANwMgIAVCADcD2EAMBwsgBSkDwEAgBSgCuEApAwggBSgCuEApAyB9VgRAIAUgBSgCuEApAwggBSgCuEApAyB9NwPAQAsgBSkDwEBQBEAgBUIANwPYQAwHCyAFKAK4QC0AeEEBcQRAIAUoAtRAIAUoArhAKQMgQQAQJ0EASARAIAUoArhAQeQAaiAFKALUQBAXIAVCfzcD2EAMCAsLIAUgBSgC1EAgBSgCzEAgBSkDwEAQLiIDNwOwQCADQgBTBEAgBSgCuEBB5ABqQRFBABAUIAVCfzcD2EAMBwsgBSgCuEAiACAFKQOwQCAAKQMgfDcDICAFKQOwQFAEQCAFKAK4QCkDICAFKAK4QCkDCFQEQCAFKAK4QEHkAGpBEUEAEBQgBUJ/NwPYQAwICwsgBSAFKQOwQDcD2EAMBgsgBSAFKAK4QCkDICAFKAK4QCkDAH0gBSgCuEApAwggBSgCuEApAwB9IAUoAsxAIAUpA8BAIAUoArhAQeQAahCRATcDCCAFKQMIQgBTBEAgBUJ/NwPYQAwGCyAFKAK4QCAFKQMIIAUoArhAKQMAfDcDICAFQgA3A9hADAULIAUgBSgCzEA2AgQgBSgCBCAFKAK4QEEoaiAFKAK4QEHkAGoQlQFBAEgEQCAFQn83A9hADAULIAVCADcD2EAMBAsgBSAFKAK4QCwAYKw3A9hADAMLIAUgBSgCuEApA3A3A9hADAILIAUgBSgCuEApAyAgBSgCuEApAwB9NwPYQAwBCyAFKAK4QEHkAGpBHEEAEBQgBUJ/NwPYQAsgBSkD2EAhAyAFQeDAAGokACADCwcAIAAoAhALIgEBfyMAQRBrIgEgADYCDCABKAIMIgAgACgCMEEBajYCMAsHACAAKAIICxQAIAAgAa0gAq1CIIaEIAMgBBB/CxMBAX4gABBKIgFCIIinEAAgAacLEgAgACABrSACrUIghoQgAxAnCx8BAX4gACABIAKtIAOtQiCGhBAuIgRCIIinEAAgBKcLFQAgACABrSACrUIghoQgAyAEEMMBCxQAIAAgASACrSADrUIghoQgBBB+C60EAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkACQCAFKQMQIAUoAhgpAzBUBEAgBSgCCEEJTQ0BCyAFKAIYQQhqQRJBABAUIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsCfyAFKAIMIQEjAEEQayIAJAAgACABNgIIIABBAToABwJAIAAoAghFBEAgAEEBOgAPDAELIAAgACgCCCAALQAHQQFxELMBQQBHOgAPCyAALQAPQQFxIQEgAEEQaiQAIAFFCwRAIAUoAhhBCGpBEEEAEBQgBUF/NgIcDAELIAUgBSgCGCgCQCAFKQMQp0EEdGo2AgQgBSAFKAIEKAIABH8gBSgCBCgCACgCEAVBfws2AgACQCAFKAIMIAUoAgBGBEAgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQX5xNgIAIAUoAgQoAgRBADsBUCAFKAIEKAIEKAIARQRAIAUoAgQoAgQQOSAFKAIEQQA2AgQLCwwBCyAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAMLCyAFKAIEKAIEIAUoAgw2AhAgBSgCBCgCBCAFKAIIOwFQIAUoAgQoAgQiACAAKAIAQQFyNgIACyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXAQF+IAAgASACEHMiA0IgiKcQACADpwuuAQIBfwF+An8jAEEgayICIAA2AhQgAiABNgIQAkAgAigCFEUEQCACQn83AxgMAQsgAigCEEEIcQRAIAIgAigCFCkDMDcDCANAIAIpAwhCAFIEfyACKAIUKAJAIAIpAwhCAX2nQQR0aigCAAVBAQtFBEAgAiACKQMIQgF9NwMIDAELCyACIAIpAwg3AxgMAQsgAiACKAIUKQMwNwMYCyACKQMYIgNCIIinCxAAIAOnCxMAIAAgAa0gAq1CIIaEIAMQxAELiAICAX8BfgJ/IwBBIGsiBCQAIAQgADYCFCAEIAE2AhAgBCACrSADrUIghoQ3AwgCQCAEKAIURQRAIARCfzcDGAwBCyAEKAIUKAIEBEAgBEJ/NwMYDAELIAQpAwhC////////////AFYEQCAEKAIUQQRqQRJBABAUIARCfzcDGAwBCwJAIAQoAhQtABBBAXFFBEAgBCkDCFBFDQELIARCADcDGAwBCyAEIAQoAhQoAhQgBCgCECAEKQMIEC4iBTcDACAFQgBTBEAgBCgCFEEEaiAEKAIUKAIUEBcgBEJ/NwMYDAELIAQgBCkDADcDGAsgBCkDGCEFIARBIGokACAFQiCIpwsQACAFpwtPAQF/IwBBIGsiBCQAIAQgADYCHCAEIAGtIAKtQiCGhDcDECAEIAM2AgwgBCgCHCAEKQMQIAQoAgwgBCgCHCgCHBCtASEAIARBIGokACAAC9kDAQF/IwBBIGsiBSQAIAUgADYCGCAFIAGtIAKtQiCGhDcDECAFIAM2AgwgBSAENgIIAkAgBSgCGCAFKQMQQQBBABBFRQRAIAVBfzYCHAwBCyAFKAIYKAIYQQJxBEAgBSgCGEEIakEZQQAQFCAFQX82AhwMAQsgBSgCGCgCQCAFKQMQp0EEdGooAggEQCAFKAIYKAJAIAUpAxCnQQR0aigCCCAFKAIMEGhBAEgEQCAFKAIYQQhqQQ9BABAUIAVBfzYCHAwCCyAFQQA2AhwMAQsgBSAFKAIYKAJAIAUpAxCnQQR0ajYCBCAFIAUoAgQoAgAEfyAFKAIMIAUoAgQoAgAoAhRHBUEBC0EBcTYCAAJAIAUoAgAEQCAFKAIEKAIERQRAIAUoAgQoAgAQPyEAIAUoAgQgADYCBCAARQRAIAUoAhhBCGpBDkEAEBQgBUF/NgIcDAQLCyAFKAIEKAIEIAUoAgw2AhQgBSgCBCgCBCIAIAAoAgBBIHI2AgAMAQsgBSgCBCgCBARAIAUoAgQoAgQiACAAKAIAQV9xNgIAIAUoAgQoAgQoAgBFBEAgBSgCBCgCBBA5IAUoAgRBADYCBAsLCyAFQQA2AhwLIAUoAhwhACAFQSBqJAAgAAsXACAAIAGtIAKtQiCGhCADIAQgBRCZAQsXACAAIAGtIAKtQiCGhCADIAQgBRCXAQuPAQIBfwF+An8jAEEgayIEJAAgBCAANgIUIAQgATYCECAEIAI2AgwgBCADNgIIAkACQCAEKAIQBEAgBCgCDA0BCyAEKAIUQQhqQRJBABAUIARCfzcDGAwBCyAEIAQoAhQgBCgCECAEKAIMIAQoAggQmgE3AxgLIAQpAxghBSAEQSBqJAAgBUIgiKcLEAAgBacLiAEBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCMAQRBrIgAgAigCDDYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCACKAIMIAIoAgg2AgACQCACKAIMEJYBQQFGBEAgAigCDEG0mwEoAgA2AgQMAQsgAigCDEEANgIECyACQRBqJAALhQUCAX8BfgJ/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNgIcAkAgAygCJCgCGEECcQRAIAMoAiRBCGpBGUEAEBQgA0J/NwMoDAELIAMoAiBFBEAgAygCJEEIakESQQAQFCADQn83AygMAQsgA0EANgIMIAMgAygCIBArNgIYIAMoAiAgAygCGEEBa2osAABBL0cEQCADIAMoAhhBAmoQGCIANgIMIABFBEAgAygCJEEIakEOQQAQFCADQn83AygMAgsCQAJAIAMoAgwiASADKAIgIgBzQQNxDQAgAEEDcQRAA0AgASAALQAAIgI6AAAgAkUNAyABQQFqIQEgAEEBaiIAQQNxDQALCyAAKAIAIgJBf3MgAkGBgoQIa3FBgIGChHhxDQADQCABIAI2AgAgACgCBCECIAFBBGohASAAQQRqIQAgAkGBgoQIayACQX9zcUGAgYKEeHFFDQALCyABIAAtAAAiAjoAACACRQ0AA0AgASAALQABIgI6AAEgAUEBaiEBIABBAWohACACDQALCyADKAIMIAMoAhhqQS86AAAgAygCDCADKAIYQQFqakEAOgAACyADIAMoAiRBAEIAQQAQfiIANgIIIABFBEAgAygCDBAVIANCfzcDKAwBCyADIAMoAiQCfyADKAIMBEAgAygCDAwBCyADKAIgCyADKAIIIAMoAhwQmgE3AxAgAygCDBAVAkAgAykDEEIAUwRAIAMoAggQGwwBCyADKAIkIAMpAxBBAEEDQYCA/I8EEJkBQQBIBEAgAygCJCADKQMQEJgBGiADQn83AygMAgsLIAMgAykDEDcDKAsgAykDKCEEIANBMGokACAEQiCIpwsQACAEpwsRACAAIAGtIAKtQiCGhBCYAQt/AgF/AX4jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYIAMoAhQgAygCEBBzIgQ3AwgCQCAEQgBTBEAgA0EANgIcDAELIAMgAygCGCADKQMIIAMoAhAgAygCGCgCHBCtATYCHAsgAygCHCEAIANBIGokACAAC8QBAQF/IwBBMGsiASQAIAEgADYCKCABQQA2AiQgAUIANwMYAkADQCABKQMYIAEoAigpAzBUBEAgASABKAIoIAEpAxhBACABQRdqIAFBEGoQlwE2AgwgASgCDEF/RgRAIAFBfzYCLAwDBQJAIAEtABdBA0cNACABKAIQQRB2QYDgA3FBgMACRw0AIAEgASgCJEEBajYCJAsgASABKQMYQgF8NwMYDAILAAsLIAEgASgCJDYCLAsgASgCLCEAIAFBMGokACAACxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALggECAX8BfiMAQSBrIgQkACAEIAA2AhggBCABNgIUIAQgAjYCECAEIAM2AgwgBCAEKAIYIAQoAhQgBCgCEBBzIgU3AwACQCAFQgBTBEAgBEF/NgIcDAELIAQgBCgCGCAEKQMAIAQoAhAgBCgCDBB/NgIcCyAEKAIcIQAgBEEgaiQAIAAL0EUDBn8BfgJ8IwBB4ABrIgEkACABIAA2AlgCQCABKAJYRQRAIAFBfzYCXAwBCyMAQSBrIgAgASgCWDYCHCAAIAFBQGs2AhggAEEANgIUIABCADcDAAJAIAAoAhwtAChBAXFFBEAgACgCHCgCGCAAKAIcKAIURg0BCyAAQQE2AhQLIABCADcDCANAIAApAwggACgCHCkDMFQEQAJAAkAgACgCHCgCQCAAKQMIp0EEdGooAggNACAAKAIcKAJAIAApAwinQQR0ai0ADEEBcQ0AIAAoAhwoAkAgACkDCKdBBHRqKAIERQ0BIAAoAhwoAkAgACkDCKdBBHRqKAIEKAIARQ0BCyAAQQE2AhQLIAAoAhwoAkAgACkDCKdBBHRqLQAMQQFxRQRAIAAgACkDAEIBfDcDAAsgACAAKQMIQgF8NwMIDAELCyAAKAIYBEAgACgCGCAAKQMANwMACyABIAAoAhQ2AiQgASkDQFAEQAJAIAEoAlgoAgRBCHFFBEAgASgCJEUNAQsCfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEDRgRAIABBADYCDAwBCyAAKAIIKAIgBEAgACgCCBAxQQBIBEAgAEF/NgIMDAILCyAAKAIIKAIkBEAgACgCCBBnCyAAKAIIQQBCAEEPECFCAFMEQCAAQX82AgwMAQsgACgCCEEDNgIkIABBADYCDAsgACgCDCECIABBEGokACACQQBICwRAAkACfyMAQRBrIgAgASgCWCgCADYCDCMAQRBrIgIgACgCDEEMajYCDCACKAIMKAIAQRZGCwRAIwBBEGsiACABKAJYKAIANgIMIwBBEGsiAiAAKAIMQQxqNgIMIAIoAgwoAgRBLEYNAQsgASgCWEEIaiABKAJYKAIAEBcgAUF/NgJcDAQLCwsgASgCWBA9IAFBADYCXAwBCyABKAIkRQRAIAEoAlgQPSABQQA2AlwMAQsgASkDQCABKAJYKQMwVgRAIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAELIAEgASkDQKdBA3QQGCIANgIoIABFBEAgAUF/NgJcDAELIAFCfzcDOCABQgA3A0ggAUIANwNQA0AgASkDUCABKAJYKQMwVARAAkAgASgCWCgCQCABKQNQp0EEdGooAgBFDQACQCABKAJYKAJAIAEpA1CnQQR0aigCCA0AIAEoAlgoAkAgASkDUKdBBHRqLQAMQQFxDQAgASgCWCgCQCABKQNQp0EEdGooAgRFDQEgASgCWCgCQCABKQNQp0EEdGooAgQoAgBFDQELIAECfiABKQM4IAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIVARAIAEpAzgMAQsgASgCWCgCQCABKQNQp0EEdGooAgApA0gLNwM4CyABKAJYKAJAIAEpA1CnQQR0ai0ADEEBcUUEQCABKQNIIAEpA0BaBEAgASgCKBAVIAEoAlhBCGpBFEEAEBQgAUF/NgJcDAQLIAEoAiggASkDSKdBA3RqIAEpA1A3AwAgASABKQNIQgF8NwNICyABIAEpA1BCAXw3A1AMAQsLIAEpA0ggASkDQFQEQCABKAIoEBUgASgCWEEIakEUQQAQFCABQX82AlwMAQsCQAJ/IwBBEGsiACABKAJYKAIANgIMIAAoAgwpAxhCgIAIg1ALBEAgAUIANwM4DAELIAEpAzhCf1EEQCABQn83AxggAUIANwM4IAFCADcDUANAIAEpA1AgASgCWCkDMFQEQCABKAJYKAJAIAEpA1CnQQR0aigCAARAIAEoAlgoAkAgASkDUKdBBHRqKAIAKQNIIAEpAzhaBEAgASABKAJYKAJAIAEpA1CnQQR0aigCACkDSDcDOCABIAEpA1A3AxgLCyABIAEpA1BCAXw3A1AMAQsLIAEpAxhCf1IEQCABKAJYIQIgASkDGCEHIAEoAlhBCGohAyMAQTBrIgAkACAAIAI2AiQgACAHNwMYIAAgAzYCFCAAIAAoAiQgACkDGCAAKAIUEGUiBzcDCAJAIAdQBEAgAEIANwMoDAELIAAgACgCJCgCQCAAKQMYp0EEdGooAgA2AgQCQCAAKQMIIAApAwggACgCBCkDIHxYBEAgACkDCCAAKAIEKQMgfEL///////////8AWA0BCyAAKAIUQQRBFhAUIABCADcDKAwBCyAAIAAoAgQpAyAgACkDCHw3AwggACgCBC8BDEEIcQRAIAAoAiQoAgAgACkDCEEAECdBAEgEQCAAKAIUIAAoAiQoAgAQFyAAQgA3AygMAgsgACgCJCgCACAAQgQQLkIEUgRAIAAoAhQgACgCJCgCABAXIABCADcDKAwCCyAAKAAAQdCWncAARgRAIAAgACkDCEIEfDcDCAsgACAAKQMIQgx8NwMIIAAoAgRBABBeQQFxBEAgACAAKQMIQgh8NwMICyAAKQMIQv///////////wBWBEAgACgCFEEEQRYQFCAAQgA3AygMAgsLIAAgACkDCDcDKAsgACkDKCEHIABBMGokACABIAc3AzggB1AEQCABKAIoEBUgAUF/NgJcDAQLCwsgASkDOEIAUgRAAn8gASgCWCgCACECIAEpAzghByMAQRBrIgAkACAAIAI2AgggACAHNwMAAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBACAAKQMAQREQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgAUIANwM4CwsLIAEpAzhQBEACfyABKAJYKAIAIQIjAEEQayIAJAAgACACNgIIAkAgACgCCCgCJEEBRgRAIAAoAghBDGpBEkEAEBQgAEF/NgIMDAELIAAoAghBAEIAQQgQIUIAUwRAIABBfzYCDAwBCyAAKAIIQQE2AiQgAEEANgIMCyAAKAIMIQIgAEEQaiQAIAJBAEgLBEAgASgCWEEIaiABKAJYKAIAEBcgASgCKBAVIAFBfzYCXAwCCwsgASgCWCgCVCECIwBBEGsiACQAIAAgAjYCDCAAKAIMBEAgACgCDEQAAAAAAAAAADkDGCAAKAIMKAIARAAAAAAAAAAAIAAoAgwoAgwgACgCDCgCBBEWAAsgAEEQaiQAIAFBADYCLCABQgA3A0gDQAJAIAEpA0ggASkDQFoNACABKAJYKAJUIQIgASkDSCIHuiABKQNAuiIIoyEJIwBBIGsiACQAIAAgAjYCHCAAIAk5AxAgACAHQgF8uiAIozkDCCAAKAIcBEAgACgCHCAAKwMQOQMgIAAoAhwgACsDCDkDKCAAKAIcRAAAAAAAAAAAEFYLIABBIGokACABIAEoAiggASkDSKdBA3RqKQMANwNQIAEgASgCWCgCQCABKQNQp0EEdGo2AhACQAJAIAEoAhAoAgBFDQAgASgCECgCACkDSCABKQM4Wg0ADAELIAECf0EBIAEoAhAoAggNABogASgCECgCBARAQQEgASgCECgCBCgCAEEBcQ0BGgsgASgCECgCBAR/IAEoAhAoAgQoAgBBwABxQQBHBUEACwtBAXE2AhQgASgCECgCBEUEQCABKAIQKAIAED8hACABKAIQIAA2AgQgAEUEQCABKAJYQQhqQQ5BABAUIAFBATYCLAwDCwsgASABKAIQKAIENgIMAn8gASgCWCECIAEpA1AhByMAQTBrIgAkACAAIAI2AiggACAHNwMgAkAgACkDICAAKAIoKQMwWgRAIAAoAihBCGpBEkEAEBQgAEF/NgIsDAELIAAgACgCKCgCQCAAKQMgp0EEdGo2AhwCQCAAKAIcKAIABEAgACgCHCgCAC0ABEEBcUUNAQsgAEEANgIsDAELIAAoAhwoAgApA0hCGnxC////////////AFYEQCAAKAIoQQhqQQRBFhAUIABBfzYCLAwBCyAAKAIoKAIAIAAoAhwoAgApA0hCGnxBABAnQQBIBEAgACgCKEEIaiAAKAIoKAIAEBcgAEF/NgIsDAELIAAgACgCKCgCAEIEIABBGGogACgCKEEIahBBIgI2AhQgAkUEQCAAQX82AiwMAQsgACAAKAIUEB07ARIgACAAKAIUEB07ARAgACgCFBBHQQFxRQRAIAAoAhQQFiAAKAIoQQhqQRRBABAUIABBfzYCLAwBCyAAKAIUEBYgAC8BEARAIAAoAigoAgAgAC8BEq1BARAnQQBIBEAgACgCKEEIakEEQbSbASgCABAUIABBfzYCLAwCCyAAQQAgACgCKCgCACAALwEQQQAgACgCKEEIahBgNgIIIAAoAghFBEAgAEF/NgIsDAILIAAoAgggAC8BEEGAAiAAQQxqIAAoAihBCGoQiAFBAXFFBEAgACgCCBAVIABBfzYCLAwCCyAAKAIIEBUgACgCDARAIAAgACgCDBCHATYCDCAAKAIcKAIAKAI0IAAoAgwQiQEhAiAAKAIcKAIAIAI2AjQLCyAAKAIcKAIAQQE6AAQCQCAAKAIcKAIERQ0AIAAoAhwoAgQtAARBAXENACAAKAIcKAIEIAAoAhwoAgAoAjQ2AjQgACgCHCgCBEEBOgAECyAAQQA2AiwLIAAoAiwhAiAAQTBqJAAgAkEASAsEQCABQQE2AiwMAgsgASABKAJYKAIAEDQiBzcDMCAHQgBTBEAgAUEBNgIsDAILIAEoAgwgASkDMDcDSAJAIAEoAhQEQCABQQA2AgggASgCECgCCEUEQCABIAEoAlggASgCWCABKQNQQQhBABCuASIANgIIIABFBEAgAUEBNgIsDAULCwJ/IAEoAlghAgJ/IAEoAggEQCABKAIIDAELIAEoAhAoAggLIQMgASgCDCEEIwBBoAFrIgAkACAAIAI2ApgBIAAgAzYClAEgACAENgKQAQJAIAAoApQBIABBOGoQOEEASARAIAAoApgBQQhqIAAoApQBEBcgAEF/NgKcAQwBCyAAKQM4QsAAg1AEQCAAIAApAzhCwACENwM4IABBADsBaAsCQAJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQsgAC8BaEUNACAAKAKQASAALwFoNgIQDAELAkACQCAAKAKQASgCEA0AIAApAzhCBINQDQAgACAAKQM4QgiENwM4IAAgACkDUDcDWAwBCyAAIAApAzhC9////w+DNwM4CwsgACkDOEKAAYNQBEAgACAAKQM4QoABhDcDOCAAQQA7AWoLIABBgAI2AiQCQCAAKQM4QgSDUARAIAAgACgCJEGACHI2AiQgAEJ/NwNwDAELIAAoApABIAApA1A3AyggACAAKQNQNwNwAkAgACkDOEIIg1AEQAJAAkACQAJAAkACfwJAIAAoApABKAIQQX9HBEAgACgCkAEoAhBBfkcNAQtBCAwBCyAAKAKQASgCEAtB//8DcQ4NAgMDAwMDAwMBAwMDAAMLIABClMLk8w83AxAMAwsgAEKDg7D/DzcDEAwCCyAAQv////8PNwMQDAELIABCADcDEAsgACkDUCAAKQMQVgRAIAAgACgCJEGACHI2AiQLDAELIAAoApABIAApA1g3AyALCyAAIAAoApgBKAIAEDQiBzcDiAEgB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKQASICIAIvAQxB9/8DcTsBDCAAIAAoApgBIAAoApABIAAoAiQQUCICNgIoIAJBAEgEQCAAQX82ApwBDAELIAAgAC8BaAJ/AkAgACgCkAEoAhBBf0cEQCAAKAKQASgCEEF+Rw0BC0EIDAELIAAoApABKAIQC0H//wNxRzoAIiAAIAAtACJBAXEEfyAALwFoQQBHBUEAC0EBcToAISAAIAAvAWgEfyAALQAhBUEBC0EBcToAICAAIAAtACJBAXEEfyAAKAKQASgCEEEARwVBAAtBAXE6AB8gAAJ/QQEgAC0AIkEBcQ0AGkEBIAAoApABKAIAQYABcQ0AGiAAKAKQAS8BUiAALwFqRwtBAXE6AB4gACAALQAeQQFxBH8gAC8BakEARwVBAAtBAXE6AB0gACAALQAeQQFxBH8gACgCkAEvAVJBAEcFQQALQQFxOgAcIAAgACgClAE2AjQjAEEQayICIAAoAjQ2AgwgAigCDCICIAIoAjBBAWo2AjAgAC0AHUEBcQRAIAAgAC8BakEAEHwiAjYCDCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAALwFqQQAgACgCmAEoAhwgACgCDBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgAC0AIUEBcQRAIAAgACgCmAEgACgCNCAALwFoELABIgI2AjAgAkUEQCAAKAI0EBsgAEF/NgKcAQwCCyAAKAI0EBsgACAAKAIwNgI0CyAALQAgQQFxBEAgACAAKAKYASAAKAI0QQAQrwEiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtAB9BAXEEQCAAKAKYASEDIAAoAjQhBCAAKAKQASgCECEFIAAoApABLwFQIQYjAEEQayICJAAgAiADNgIMIAIgBDYCCCACIAU2AgQgAiAGNgIAIAIoAgwgAigCCCACKAIEQQEgAigCABCyASEDIAJBEGokACAAIAMiAjYCMCACRQRAIAAoAjQQGyAAQX82ApwBDAILIAAoAjQQGyAAIAAoAjA2AjQLIAAtABxBAXEEQCAAQQA2AgQCQCAAKAKQASgCVARAIAAgACgCkAEoAlQ2AgQMAQsgACgCmAEoAhwEQCAAIAAoApgBKAIcNgIECwsgACAAKAKQAS8BUkEBEHwiAjYCCCACRQRAIAAoApgBQQhqQRhBABAUIAAoAjQQGyAAQX82ApwBDAILIAAgACgCmAEgACgCNCAAKAKQAS8BUkEBIAAoAgQgACgCCBEFACICNgIwIAJFBEAgACgCNBAbIABBfzYCnAEMAgsgACgCNBAbIAAgACgCMDYCNAsgACAAKAKYASgCABA0Igc3A4ABIAdCAFMEQCAAKAKYAUEIaiAAKAKYASgCABAXIABBfzYCnAEMAQsgACgCmAEhAyAAKAI0IQQgACkDcCEHIwBBwMAAayICJAAgAiADNgK4QCACIAQ2ArRAIAIgBzcDqEACQCACKAK0QBBJQQBIBEAgAigCuEBBCGogAigCtEAQFyACQX82ArxADAELIAJBADYCDCACQgA3AxADQAJAIAIgAigCtEAgAkEgakKAwAAQLiIHNwMYIAdCAFcNACACKAK4QCACQSBqIAIpAxgQNUEASARAIAJBfzYCDAUgAikDGEKAwABSDQIgAigCuEAoAlRFDQIgAikDqEBCAFcNAiACIAIpAxggAikDEHw3AxAgAigCuEAoAlQgAikDELkgAikDqEC5oxBWDAILCwsgAikDGEIAUwRAIAIoArhAQQhqIAIoArRAEBcgAkF/NgIMCyACKAK0QBAxGiACIAIoAgw2ArxACyACKAK8QCEDIAJBwMAAaiQAIAAgAzYCLCAAKAI0IABBOGoQOEEASARAIAAoApgBQQhqIAAoAjQQFyAAQX82AiwLIAAoAjQhAyMAQRBrIgIkACACIAM2AggCQANAIAIoAggEQCACKAIIKQMYQoCABINCAFIEQCACIAIoAghBAEIAQRAQITcDACACKQMAQgBTBEAgAkH/AToADwwECyACKQMAQgNVBEAgAigCCEEMakEUQQAQFCACQf8BOgAPDAQLIAIgAikDADwADwwDBSACIAIoAggoAgA2AggMAgsACwsgAkEAOgAPCyACLAAPIQMgAkEQaiQAIAAgAyICOgAjIAJBGHRBGHVBAEgEQCAAKAKYAUEIaiAAKAI0EBcgAEF/NgIsCyAAKAI0EBsgACgCLEEASARAIABBfzYCnAEMAQsgACAAKAKYASgCABA0Igc3A3ggB0IAUwRAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKAKYASgCACAAKQOIARCbAUEASARAIAAoApgBQQhqIAAoApgBKAIAEBcgAEF/NgKcAQwBCyAAKQM4QuQAg0LkAFIEQCAAKAKYAUEIakEUQQAQFCAAQX82ApwBDAELIAAoApABKAIAQSBxRQRAAkAgACkDOEIQg0IAUgRAIAAoApABIAAoAmA2AhQMAQsgACgCkAFBFGoQARoLCyAAKAKQASAALwFoNgIQIAAoApABIAAoAmQ2AhggACgCkAEgACkDUDcDKCAAKAKQASAAKQN4IAApA4ABfTcDICAAKAKQASAAKAKQAS8BDEH5/wNxIAAtACNBAXRyOwEMIAAoApABIQMgACgCJEGACHFBAEchBCMAQRBrIgIkACACIAM2AgwgAiAEOgALAkAgAigCDCgCEEEORgRAIAIoAgxBPzsBCgwBCyACKAIMKAIQQQxGBEAgAigCDEEuOwEKDAELAkAgAi0AC0EBcUUEQCACKAIMQQAQXkEBcUUNAQsgAigCDEEtOwEKDAELAkAgAigCDCgCEEEIRwRAIAIoAgwvAVJBAUcNAQsgAigCDEEUOwEKDAELIAIgAigCDCgCMBBTIgM7AQggA0H//wNxBEAgAigCDCgCMCgCACACLwEIQQFrai0AAEEvRgRAIAIoAgxBFDsBCgwCCwsgAigCDEEKOwEKCyACQRBqJAAgACAAKAKYASAAKAKQASAAKAIkEFAiAjYCLCACQQBIBEAgAEF/NgKcAQwBCyAAKAIoIAAoAixHBEAgACgCmAFBCGpBFEEAEBQgAEF/NgKcAQwBCyAAKAKYASgCACAAKQN4EJsBQQBIBEAgACgCmAFBCGogACgCmAEoAgAQFyAAQX82ApwBDAELIABBADYCnAELIAAoApwBIQIgAEGgAWokACACQQBICwRAIAFBATYCLCABKAIIBEAgASgCCBAbCwwECyABKAIIBEAgASgCCBAbCwwBCyABKAIMIgAgAC8BDEH3/wNxOwEMIAEoAlggASgCDEGAAhBQQQBIBEAgAUEBNgIsDAMLIAEgASgCWCABKQNQIAEoAlhBCGoQZSIHNwMAIAdQBEAgAUEBNgIsDAMLIAEoAlgoAgAgASkDAEEAECdBAEgEQCABKAJYQQhqIAEoAlgoAgAQFyABQQE2AiwMAwsCfyABKAJYIQIgASgCDCkDICEHIwBBoMAAayIAJAAgACACNgKYQCAAIAc3A5BAIAAgACkDkEC6OQMAAkADQCAAKQOQQFBFBEAgACAAKQOQQEKAwABWBH5CgMAABSAAKQOQQAs+AgwgACgCmEAoAgAgAEEQaiAAKAIMrSAAKAKYQEEIahBhQQBIBEAgAEF/NgKcQAwDCyAAKAKYQCAAQRBqIAAoAgytEDVBAEgEQCAAQX82ApxADAMFIAAgACkDkEAgADUCDH03A5BAIAAoAphAKAJUIAArAwAgACkDkEC6oSAAKwMAoxBWDAILAAsLIABBADYCnEALIAAoApxAIQIgAEGgwABqJAAgAkEASAsEQCABQQE2AiwMAwsLCyABIAEpA0hCAXw3A0gMAQsLIAEoAixFBEACfyABKAJYIQAgASgCKCEDIAEpA0AhByMAQTBrIgIkACACIAA2AiggAiADNgIkIAIgBzcDGCACIAIoAigoAgAQNCIHNwMQAkAgB0IAUwRAIAJBfzYCLAwBCyACKAIoIQMgAigCJCEEIAIpAxghByMAQcABayIAJAAgACADNgK0ASAAIAQ2ArABIAAgBzcDqAEgACAAKAK0ASgCABA0Igc3AyACQCAHQgBTBEAgACgCtAFBCGogACgCtAEoAgAQFyAAQn83A7gBDAELIAAgACkDIDcDoAEgAEEAOgAXIABCADcDGANAIAApAxggACkDqAFUBEAgACAAKAK0ASgCQCAAKAKwASAAKQMYp0EDdGopAwCnQQR0ajYCDCAAIAAoArQBAn8gACgCDCgCBARAIAAoAgwoAgQMAQsgACgCDCgCAAtBgAQQUCIDNgIQIANBAEgEQCAAQn83A7gBDAMLIAAoAhAEQCAAQQE6ABcLIAAgACkDGEIBfDcDGAwBCwsgACAAKAK0ASgCABA0Igc3AyAgB0IAUwRAIAAoArQBQQhqIAAoArQBKAIAEBcgAEJ/NwO4AQwBCyAAIAApAyAgACkDoAF9NwOYAQJAIAApA6ABQv////8PWARAIAApA6gBQv//A1gNAQsgAEEBOgAXCyAAIABBMGpC4gAQKSIDNgIsIANFBEAgACgCtAFBCGpBDkEAEBQgAEJ/NwO4AQwBCyAALQAXQQFxBEAgACgCLEHnEkEEEEAgACgCLEIsEC0gACgCLEEtEB8gACgCLEEtEB8gACgCLEEAECAgACgCLEEAECAgACgCLCAAKQOoARAtIAAoAiwgACkDqAEQLSAAKAIsIAApA5gBEC0gACgCLCAAKQOgARAtIAAoAixB4hJBBBBAIAAoAixBABAgIAAoAiwgACkDoAEgACkDmAF8EC0gACgCLEEBECALIAAoAixB7BJBBBBAIAAoAixBABAgIAAoAiwgACkDqAFC//8DWgR+Qv//AwUgACkDqAELp0H//wNxEB8gACgCLCAAKQOoAUL//wNaBH5C//8DBSAAKQOoAQunQf//A3EQHyAAKAIsIAApA5gBQv////8PWgR/QX8FIAApA5gBpwsQICAAKAIsIAApA6ABQv////8PWgR/QX8FIAApA6ABpwsQICAAAn8gACgCtAEtAChBAXEEQCAAKAK0ASgCJAwBCyAAKAK0ASgCIAs2ApQBIAAoAiwCfyAAKAKUAQRAIAAoApQBLwEEDAELQQALQf//A3EQHwJ/IwBBEGsiAyAAKAIsNgIMIAMoAgwtAABBAXFFCwRAIAAoArQBQQhqQRRBABAUIAAoAiwQFiAAQn83A7gBDAELIAAoArQBAn8jAEEQayIDIAAoAiw2AgwgAygCDCgCBAsCfiMAQRBrIgMgACgCLDYCDAJ+IAMoAgwtAABBAXEEQCADKAIMKQMQDAELQgALCxA1QQBIBEAgACgCLBAWIABCfzcDuAEMAQsgACgCLBAWIAAoApQBBEAgACgCtAEgACgClAEoAgAgACgClAEvAQStEDVBAEgEQCAAQn83A7gBDAILCyAAIAApA5gBNwO4AQsgACkDuAEhByAAQcABaiQAIAIgBzcDACAHQgBTBEAgAkF/NgIsDAELIAIgAigCKCgCABA0Igc3AwggB0IAUwRAIAJBfzYCLAwBCyACQQA2AiwLIAIoAiwhACACQTBqJAAgAEEASAsEQCABQQE2AiwLCyABKAIoEBUgASgCLEUEQAJ/IAEoAlgoAgAhAiMAQRBrIgAkACAAIAI2AggCQCAAKAIIKAIkQQFHBEAgACgCCEEMakESQQAQFCAAQX82AgwMAQsgACgCCCgCIEEBSwRAIAAoAghBDGpBHUEAEBQgAEF/NgIMDAELIAAoAggoAiAEQCAAKAIIEDFBAEgEQCAAQX82AgwMAgsLIAAoAghBAEIAQQkQIUIAUwRAIAAoAghBAjYCJCAAQX82AgwMAQsgACgCCEEANgIkIABBADYCDAsgACgCDCECIABBEGokACACCwRAIAEoAlhBCGogASgCWCgCABAXIAFBATYCLAsLIAEoAlgoAlQhAiMAQRBrIgAkACAAIAI2AgwgACgCDEQAAAAAAADwPxBWIABBEGokACABKAIsBEAgASgCWCgCABBnIAFBfzYCXAwBCyABKAJYED0gAUEANgJcCyABKAJcIQAgAUHgAGokACAAC9IOAgd/An4jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI2AiAjAEEQayIAIANBCGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAygCKCEAIwBBIGsiBCQAIAQgADYCGCAEQgA3AxAgBEJ/NwMIIAQgA0EIajYCBAJAAkAgBCgCGARAIAQpAwhCf1kNAQsgBCgCBEESQQAQFCAEQQA2AhwMAQsgBCgCGCEAIAQpAxAhCiAEKQMIIQsgBCgCBCEBIwBBoAFrIgIkACACIAA2ApgBIAJBADYClAEgAiAKNwOIASACIAs3A4ABIAJBADYCfCACIAE2AngCQAJAIAIoApQBDQAgAigCmAENACACKAJ4QRJBABAUIAJBADYCnAEMAQsgAikDgAFCAFMEQCACQgA3A4ABCwJAIAIpA4gBQv///////////wBYBEAgAikDiAEgAikDiAEgAikDgAF8WA0BCyACKAJ4QRJBABAUIAJBADYCnAEMAQsgAkGIARAYIgA2AnQgAEUEQCACKAJ4QQ5BABAUIAJBADYCnAEMAQsgAigCdEEANgIYIAIoApgBBEAgAigCmAEiABArQQFqIgEQGCIFBH8gBSAAIAEQGQVBAAshACACKAJ0IAA2AhggAEUEQCACKAJ4QQ5BABAUIAIoAnQQFSACQQA2ApwBDAILCyACKAJ0IAIoApQBNgIcIAIoAnQgAikDiAE3A2ggAigCdCACKQOAATcDcAJAIAIoAnwEQCACKAJ0IgAgAigCfCIBKQMANwMgIAAgASkDMDcDUCAAIAEpAyg3A0ggACABKQMgNwNAIAAgASkDGDcDOCAAIAEpAxA3AzAgACABKQMINwMoIAIoAnRBADYCKCACKAJ0IgAgACkDIEL+////D4M3AyAMAQsgAigCdEEgahA7CyACKAJ0KQNwQgBSBEAgAigCdCACKAJ0KQNwNwM4IAIoAnQiACAAKQMgQgSENwMgCyMAQRBrIgAgAigCdEHYAGo2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggAigCdEEANgKAASACKAJ0QQA2AoQBIwBBEGsiACACKAJ0NgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAJBfzYCBCACQQc2AgBBDiACEDZCP4QhCiACKAJ0IAo3AxACQCACKAJ0KAIYBEAgAiACKAJ0KAIYIAJBGGoQpgFBAE46ABcgAi0AF0EBcUUEQAJAIAIoAnQpA2hQRQ0AIAIoAnQpA3BQRQ0AIAIoAnRC//8DNwMQCwsMAQsCQCACKAJ0KAIcIgAoAkxBAEgNAAsgACgCPCEAQQAhBSMAQSBrIgYkAAJ/AkAgACACQRhqIgkQCiIBQXhGBEAjAEEgayIHJAAgACAHQQhqEAkiCAR/QbSbASAINgIAQQAFQQELIQggB0EgaiQAIAgNAQsgAUGBYE8Ef0G0mwFBACABazYCAEF/BSABCwwBCwNAIAUgBmoiASAFQccSai0AADoAACAFQQ5HIQcgBUEBaiEFIAcNAAsCQCAABEBBDyEFIAAhAQNAIAFBCk8EQCAFQQFqIQUgAUEKbiEBDAELCyAFIAZqQQA6AAADQCAGIAVBAWsiBWogACAAQQpuIgFBCmxrQTByOgAAIABBCUshByABIQAgBw0ACwwBCyABQTA6AAAgBkEAOgAPCyAGIAkQAiIAQYFgTwR/QbSbAUEAIABrNgIAQX8FIAALCyEAIAZBIGokACACIABBAE46ABcLAkAgAi0AF0EBcUUEQCACKAJ0QdgAakEFQbSbASgCABAUDAELIAIoAnQpAyBCEINQBEAgAigCdCACKAJYNgJIIAIoAnQiACAAKQMgQhCENwMgCyACKAIkQYDgA3FBgIACRgRAIAIoAnRC/4EBNwMQIAIpA0AgAigCdCkDaCACKAJ0KQNwfFQEQCACKAJ4QRJBABAUIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwDCyACKAJ0KQNwUARAIAIoAnQgAikDQCACKAJ0KQNofTcDOCACKAJ0IgAgACkDIEIEhDcDIAJAIAIoAnQoAhhFDQAgAikDiAFQRQ0AIAIoAnRC//8DNwMQCwsLCyACKAJ0IgAgACkDEEKAgBCENwMQIAJBHiACKAJ0IAIoAngQlAEiADYCcCAARQRAIAIoAnQoAhgQFSACKAJ0EBUgAkEANgKcAQwBCyACIAIoAnA2ApwBCyACKAKcASEAIAJBoAFqJAAgBCAANgIcCyAEKAIcIQAgBEEgaiQAIAMgADYCGAJAIABFBEAgAygCICADQQhqEJ0BIANBCGoQNyADQQA2AiwMAQsgAyADKAIYIAMoAiQgA0EIahCcASIANgIcIABFBEAgAygCGBAbIAMoAiAgA0EIahCdASADQQhqEDcgA0EANgIsDAELIANBCGoQNyADIAMoAhw2AiwLIAMoAiwhACADQTBqJAAgAAsYAQF/IwBBEGsiASAANgIMIAEoAgxBDGoLkh8BBn8jAEHgAGsiBCQAIAQgADYCVCAEIAE2AlAgBCACNwNIIAQgAzYCRCAEIAQoAlQ2AkAgBCAEKAJQNgI8AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBCgCRA4TBgcCDAQFCg4BAwkQCw8NCBERABELIARCADcDWAwRCyAEKAJAKAIYRQRAIAQoAkBBHEEAEBQgBEJ/NwNYDBELIAQoAkAhACMAQYABayIBJAAgASAANgJ4IAEgASgCeCgCGBArQQhqEBgiADYCdAJAIABFBEAgASgCeEEOQQAQFCABQX82AnwMAQsCQCABKAJ4KAIYIAFBEGoQpgFFBEAgASABKAIcNgJsDAELIAFBfzYCbAsgASgCdCEAIAEgASgCeCgCGDYCACAAQasSIAEQcCABKAJ0IQMgASgCbCEHIwBBMGsiACQAIAAgAzYCKCAAIAc2AiQgAEEANgIQIAAgACgCKCAAKAIoECtqNgIYIAAgACgCGEEBazYCHANAIAAoAhwgACgCKE8EfyAAKAIcLAAAQdgARgVBAAtBAXEEQCAAIAAoAhBBAWo2AhAgACAAKAIcQQFrNgIcDAELCwJAIAAoAhBFBEBBtJsBQRw2AgAgAEF/NgIsDAELIAAgACgCHEEBajYCHANAIwBBEGsiByQAAkACfyMAQRBrIgMkACADIAdBCGo2AgggA0EEOwEGIANB6AtBAEEAEG0iBTYCAAJAIAVBAEgEQCADQQA6AA8MAQsCfyADKAIAIQYgAygCCCEIIAMvAQYhCSMAQRBrIgUkACAFIAk2AgwgBSAINgIIIAYgBUEIakEBIAVBBGoQBiIGBH9BtJsBIAY2AgBBfwVBAAshBiAFKAIEIQggBUEQaiQAIAMvAQZBfyAIIAYbRwsEQCADKAIAEGwgA0EAOgAPDAELIAMoAgAQbCADQQE6AA8LIAMtAA9BAXEhBSADQRBqJAAgBQsEQCAHIAcoAgg2AgwMAQtBwKABLQAAQQFxRQRAQQAQASEGAkBByJkBKAIAIgNFBEBBzJkBKAIAIAY2AgAMAQtB0JkBQQNBA0EBIANBB0YbIANBH0YbNgIAQbygAUEANgIAQcyZASgCACEFIANBAU4EQCAGrSECQQAhBgNAIAUgBkECdGogAkKt/tXk1IX9qNgAfkIBfCICQiCIPgIAIAZBAWoiBiADRw0ACwsgBSAFKAIAQQFyNgIACwtBzJkBKAIAIQMCQEHImQEoAgAiBUUEQCADIAMoAgBB7ZyZjgRsQbngAGpB/////wdxIgM2AgAMAQsgA0HQmQEoAgAiBkECdGoiCCAIKAIAIANBvKABKAIAIghBAnRqKAIAaiIDNgIAQbygAUEAIAhBAWoiCCAFIAhGGzYCAEHQmQFBACAGQQFqIgYgBSAGRhs2AgAgA0EBdiEDCyAHIAM2AgwLIAcoAgwhAyAHQRBqJAAgACADNgIMIAAgACgCHDYCFANAIAAoAhQgACgCGEkEQCAAIAAoAgxBJHA6AAsCfyAALAALQQpIBEAgACwAC0EwagwBCyAALAALQdcAagshAyAAIAAoAhQiB0EBajYCFCAHIAM6AAAgACAAKAIMQSRuNgIMDAELCyAAKAIoIQMgACAAKAIkQX9GBH9BtgMFIAAoAiQLNgIAIAAgA0HCgSAgABBtIgM2AiAgA0EATgRAIAAoAiRBf0cEQCAAKAIoIAAoAiQQDyIDQYFgTwR/QbSbAUEAIANrNgIAQQAFIAMLGgsgACAAKAIgNgIsDAILQbSbASgCAEEURg0ACyAAQX82AiwLIAAoAiwhAyAAQTBqJAAgASADIgA2AnAgAEF/RgRAIAEoAnhBDEG0mwEoAgAQFCABKAJ0EBUgAUF/NgJ8DAELIAEgASgCcEGjEhChASIANgJoIABFBEAgASgCeEEMQbSbASgCABAUIAEoAnAQbCABKAJ0EG4aIAEoAnQQFSABQX82AnwMAQsgASgCeCABKAJoNgKEASABKAJ4IAEoAnQ2AoABIAFBADYCfAsgASgCfCEAIAFBgAFqJAAgBCAArDcDWAwQCyAEKAJAKAIYBEAgBCgCQCgCHBBVGiAEKAJAQQA2AhwLIARCADcDWAwPCyAEKAJAKAKEARBVQQBIBEAgBCgCQEEANgKEASAEKAJAQQZBtJsBKAIAEBQLIAQoAkBBADYChAEgBCgCQCgCgAEgBCgCQCgCGBAIIgBBgWBPBH9BtJsBQQAgAGs2AgBBfwUgAAtBAEgEQCAEKAJAQQJBtJsBKAIAEBQgBEJ/NwNYDA8LIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMDgsgBCAEKAJAIAQoAlAgBCkDSBBCNwNYDA0LIAQoAkAoAhgQFSAEKAJAKAKAARAVIAQoAkAoAhwEQCAEKAJAKAIcEFUaCyAEKAJAEBUgBEIANwNYDAwLIAQoAkAoAhgEQCAEKAJAKAIYIQEjAEEgayIAJAAgACABNgIYIABBADoAFyAAQYCAIDYCDAJAIAAtABdBAXEEQCAAIAAoAgxBAnI2AgwMAQsgACAAKAIMNgIMCyAAKAIYIQEgACgCDCEDIABBtgM2AgAgACABIAMgABBtIgE2AhACQCABQQBIBEAgAEEANgIcDAELIAAgACgCEEGjEkGgEiAALQAXQQFxGxChASIBNgIIIAFFBEAgAEEANgIcDAELIAAgACgCCDYCHAsgACgCHCEBIABBIGokACAEKAJAIAE2AhwgAUUEQCAEKAJAQQtBtJsBKAIAEBQgBEJ/NwNYDA0LCyAEKAJAKQNoQgBSBEAgBCgCQCgCHCAEKAJAKQNoIAQoAkAQnwFBAEgEQCAEQn83A1gMDQsLIAQoAkBCADcDeCAEQgA3A1gMCwsCQCAEKAJAKQNwQgBSBEAgBCAEKAJAKQNwIAQoAkApA3h9NwMwIAQpAzAgBCkDSFYEQCAEIAQpA0g3AzALDAELIAQgBCkDSDcDMAsgBCkDMEL/////D1YEQCAEQv////8PNwMwCyAEAn8gBCgCPCEHIAQpAzCnIQAgBCgCQCgCHCIDKAJMGiADIAMtAEoiAUEBayABcjoASiADKAIIIAMoAgQiBWsiAUEBSAR/IAAFIAcgBSABIAAgACABSxsiARAZGiADIAMoAgQgAWo2AgQgASAHaiEHIAAgAWsLIgEEQANAAkACfyADIAMtAEoiBUEBayAFcjoASiADKAIUIAMoAhxLBEAgA0EAQQAgAygCJBEBABoLIANBADYCHCADQgA3AxAgAygCACIFQQRxBEAgAyAFQSByNgIAQX8MAQsgAyADKAIsIAMoAjBqIgY2AgggAyAGNgIEIAVBG3RBH3ULRQRAIAMgByABIAMoAiARAQAiBUEBakEBSw0BCyAAIAFrDAMLIAUgB2ohByABIAVrIgENAAsLIAALIgA2AiwgAEUEQAJ/IAQoAkAoAhwiACgCTEF/TARAIAAoAgAMAQsgACgCAAtBBXZBAXEEQCAEKAJAQQVBtJsBKAIAEBQgBEJ/NwNYDAwLCyAEKAJAIgAgACkDeCAEKAIsrXw3A3ggBCAEKAIsrTcDWAwKCyAEKAJAKAIYEG5BAEgEQCAEKAJAQRZBtJsBKAIAEBQgBEJ/NwNYDAoLIARCADcDWAwJCyAEKAJAKAKEAQRAIAQoAkAoAoQBEFUaIAQoAkBBADYChAELIAQoAkAoAoABEG4aIAQoAkAoAoABEBUgBCgCQEEANgKAASAEQgA3A1gMCAsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhggBCgCGEUEQCAEQn83A1gMCAsgBEEBNgIcAkACQAJAAkACQCAEKAIYKAIIDgMAAgEDCyAEIAQoAhgpAwA3AyAMAwsCQCAEKAJAKQNwUARAIAQoAkAoAhwgBCgCGCkDAEECIAQoAkAQa0EASARAIARCfzcDWAwNCyAEIAQoAkAoAhwQowEiAjcDICACQgBTBEAgBCgCQEEEQbSbASgCABAUIARCfzcDWAwNCyAEIAQpAyAgBCgCQCkDaH03AyAgBEEANgIcDAELIAQgBCgCQCkDcCAEKAIYKQMAfDcDIAsMAgsgBCAEKAJAKQN4IAQoAhgpAwB8NwMgDAELIAQoAkBBEkEAEBQgBEJ/NwNYDAgLAkACQCAEKQMgQgBTDQAgBCgCQCkDcEIAUgRAIAQpAyAgBCgCQCkDcFYNAQsgBCgCQCkDaCAEKQMgIAQoAkApA2h8WA0BCyAEKAJAQRJBABAUIARCfzcDWAwICyAEKAJAIAQpAyA3A3ggBCgCHARAIAQoAkAoAhwgBCgCQCkDeCAEKAJAKQNofCAEKAJAEJ8BQQBIBEAgBEJ/NwNYDAkLCyAEQgA3A1gMBwsgBAJ/IAQpA0hCEFQEQCAEKAJAQRJBABAUQQAMAQsgBCgCUAs2AhQgBCgCFEUEQCAEQn83A1gMBwsgBCgCQCgChAEgBCgCFCkDACAEKAIUKAIIIAQoAkAQa0EASARAIARCfzcDWAwHCyAEQgA3A1gMBgsgBCkDSEI4VARAIARCfzcDWAwGCwJ/IwBBEGsiACAEKAJAQdgAajYCDCAAKAIMKAIACwRAIAQoAkACfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCAAsCfyMAQRBrIgAgBCgCQEHYAGo2AgwgACgCDCgCBAsQFCAEQn83A1gMBgsgBCgCUCIAIAQoAkAiASkAIDcAACAAIAEpAFA3ADAgACABKQBINwAoIAAgASkAQDcAICAAIAEpADg3ABggACABKQAwNwAQIAAgASkAKDcACCAEQjg3A1gMBQsgBCAEKAJAKQMQNwNYDAQLIAQgBCgCQCkDeDcDWAwDCyAEIAQoAkAoAoQBEKMBNwMIIAQpAwhCAFMEQCAEKAJAQR5BtJsBKAIAEBQgBEJ/NwNYDAMLIAQgBCkDCDcDWAwCCyAEKAJAKAKEASIAKAJMQQBOGiAAIAAoAgBBT3E2AgAgBAJ/IAQoAlAhASAEKQNIpyIAIAACfyAEKAJAKAKEASIDKAJMQX9MBEAgASAAIAMQcgwBCyABIAAgAxByCyIBRg0AGiABCzYCBAJAIAQpA0ggBCgCBK1RBEACfyAEKAJAKAKEASIAKAJMQX9MBEAgACgCAAwBCyAAKAIAC0EFdkEBcUUNAQsgBCgCQEEGQbSbASgCABAUIARCfzcDWAwCCyAEIAQoAgStNwNYDAELIAQoAkBBHEEAEBQgBEJ/NwNYCyAEKQNYIQIgBEHgAGokACACCwkAIAAoAjwQBQvkAQEEfyMAQSBrIgMkACADIAE2AhAgAyACIAAoAjAiBEEAR2s2AhQgACgCLCEFIAMgBDYCHCADIAU2AhhBfyEEAkACQCAAKAI8IANBEGpBAiADQQxqEAYiBQR/QbSbASAFNgIAQX8FQQALRQRAIAMoAgwiBEEASg0BCyAAIAAoAgAgBEEwcUEQc3I2AgAMAQsgBCADKAIUIgZNDQAgACAAKAIsIgU2AgQgACAFIAQgBmtqNgIIIAAoAjAEQCAAIAVBAWo2AgQgASACakEBayAFLQAAOgAACyACIQQLIANBIGokACAEC/QCAQd/IwBBIGsiAyQAIAMgACgCHCIFNgIQIAAoAhQhBCADIAI2AhwgAyABNgIYIAMgBCAFayIBNgIUIAEgAmohBUECIQcgA0EQaiEBAn8CQAJAIAAoAjwgA0EQakECIANBDGoQAyIEBH9BtJsBIAQ2AgBBfwVBAAtFBEADQCAFIAMoAgwiBEYNAiAEQX9MDQMgASAEIAEoAgQiCEsiBkEDdGoiCSAEIAhBACAGG2siCCAJKAIAajYCACABQQxBBCAGG2oiCSAJKAIAIAhrNgIAIAUgBGshBSAAKAI8IAFBCGogASAGGyIBIAcgBmsiByADQQxqEAMiBAR/QbSbASAENgIAQX8FQQALRQ0ACwsgBUF/Rw0BCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgASgCBGsLIQAgA0EgaiQAIAALUgEBfyMAQRBrIgMkACAAKAI8IAGnIAFCIIinIAJB/wFxIANBCGoQDSIABH9BtJsBIAA2AgBBfwVBAAshACADKQMIIQEgA0EQaiQAQn8gASAAGwtFAEGgmwFCADcDAEGYmwFCADcDAEGQmwFCADcDAEGImwFCADcDAEGAmwFCADcDAEH4mgFCADcDAEHwmgFCADcDAEHwmgEL1QQBBX8jAEGwAWsiASQAIAEgADYCqAEgASgCqAEQNwJAAkAgASgCqAEoAgBBAE4EQCABKAKoASgCAEGAFCgCAEgNAQsgASABKAKoASgCADYCECABQSBqQY8SIAFBEGoQcCABQQA2AqQBIAEgAUEgajYCoAEMAQsgASABKAKoASgCAEECdEGAE2ooAgA2AqQBAkACQAJAAkAgASgCqAEoAgBBAnRBkBRqKAIAQQFrDgIAAQILIAEoAqgBKAIEIQJBkJkBKAIAIQRBACEAAkACQANAIAIgAEGgiAFqLQAARwRAQdcAIQMgAEEBaiIAQdcARw0BDAILCyAAIgMNAEGAiQEhAgwBC0GAiQEhAANAIAAtAAAhBSAAQQFqIgIhACAFDQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQKwJ/IAEoAqQBBEAgASgCpAEQK0ECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEHAgASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACIVCAFINACACQgGDIAJ8IQILIAhBIGokACACIAZCgICAgICAgICAf4OEvws5AwALrRcDEn8CfgF8IwBBsARrIgkkACAJQQA2AiwCQCABvSIYQn9XBEBBASESQa4IIRMgAZoiAb0hGAwBCyAEQYAQcQRAQQEhEkGxCCETDAELQbQIQa8IIARBAXEiEhshEyASRSEXCwJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txECYgACATIBIQIiAAQeQLQbUSIAVBIHEiAxtBjw1BuRIgAxsgASABYhtBAxAiDAELIAlBEGohEAJAAn8CQCABIAlBLGoQqQEiASABoCIBRAAAAAAAAAAAYgRAIAkgCSgCLCIGQQFrNgIsIAVBIHIiFEHhAEcNAQwDCyAFQSByIhRB4QBGDQIgCSgCLCELQQYgAyADQQBIGwwBCyAJIAZBHWsiCzYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCiAJQTBqIAlB0AJqIAtBAEgbIg4hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQAAAAAZc3NQaIiAUQAAAAAAAAAAGINAAsCQCALQQFIBEAgCyEDIAchBiAOIQgMAQsgDiEIIAshAwNAIANBHSADQR1IGyEMAkAgB0EEayIGIAhJDQAgDK0hGUIAIRgDQCAGIAY1AgAgGYYgGHwiGCAYQoCU69wDgCIYQoCU69wDfn0+AgAgCCAGQQRrIgZNBEAgGEL/////D4MhGAwBCwsgGKciA0UNACAIQQRrIgggAzYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyAJIAkoAiwgDGsiAzYCLCAGIQcgA0EASg0ACwsgCkEZakEJbSEHIANBf0wEQCAHQQFqIQ0gFEHmAEYhFQNAQQlBACADayADQXdIGyEWAkAgBiAISwRAQYCU69wDIBZ2IQ9BfyAWdEF/cyERQQAhAyAIIQcDQCAHIAMgBygCACIMIBZ2ajYCACAMIBFxIA9sIQMgB0EEaiIHIAZJDQALIAggCEEEaiAIKAIAGyEIIANFDQEgBiADNgIAIAZBBGohBgwBCyAIIAhBBGogCCgCABshCAsgCSAJKAIsIBZqIgM2AiwgDiAIIBUbIgcgDUECdGogBiAGIAdrQQJ1IA1KGyEGIANBAEgNAAsLQQAhBwJAIAYgCE0NACAOIAhrQQJ1QQlsIQcgCCgCACIMQQpJDQBB5AAhAwNAIAdBAWohByADIAxLDQEgA0EKbCEDDAALAAsgCkEAIAcgFEHmAEYbayAUQecARiAKQQBHcWsiAyAGIA5rQQJ1QQlsQQlrSARAIANBgMgAaiIRQQltIgxBAnQgCUEwakEEciAJQdQCaiALQQBIG2pBgCBrIQ1BCiEDAkAgESAMQQlsayIMQQdKDQBB5AAhAwNAIAxBAWoiDEEIRg0BIANBCmwhAwwACwALAkAgDSgCACIRIBEgA24iDCADbGsiD0EBIA1BBGoiCyAGRhtFDQBEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiALRhtEAAAAAAAA+D8gDyADQQF2IgtGGyALIA9LGyEaRAEAAAAAAEBDRAAAAAAAAEBDIAxBAXEbIQECQCAXDQAgEy0AAEEtRw0AIBqaIRogAZohAQsgDSARIA9rIgs2AgAgASAaoCABYQ0AIA0gAyALaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgCCANQQRrIg1LBEAgCEEEayIIQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAOIAhrQQJ1QQlsIQcgCCgCACILQQpJDQBB5AAhAwNAIAdBAWohByADIAtLDQEgA0EKbCEDDAALAAsgDUEEaiIDIAYgAyAGSRshBgsDQCAGIgsgCE0iDEUEQCALQQRrIgYoAgBFDQELCwJAIBRB5wBHBEAgBEEIcSEPDAELIAdBf3NBfyAKQQEgChsiBiAHSiAHQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiDw0AQXchBgJAIAwNACALQQRrKAIAIgNFDQBBACEGIANBCnANAEEAIQxB5AAhBgNAIAMgBnBFBEAgDEEBaiEMIAZBCmwhBgwBCwsgDEF/cyEGCyALIA5rQQJ1QQlsIQMgBUFfcUHGAEYEQEEAIQ8gCiADIAZqQQlrIgNBACADQQBKGyIDIAMgCkobIQoMAQtBACEPIAogAyAHaiAGakEJayIDQQAgA0EAShsiAyADIApKGyEKCyAKIA9yQQBHIREgAEEgIAIgBUFfcSIMQcYARgR/IAdBACAHQQBKGwUgECAHIAdBH3UiA2ogA3OtIBAQRCIGa0EBTARAA0AgBkEBayIGQTA6AAAgECAGa0ECSA0ACwsgBkECayIVIAU6AAAgBkEBa0EtQSsgB0EASBs6AAAgECAVawsgCiASaiARampBAWoiDSAEECYgACATIBIQIiAAQTAgAiANIARBgIAEcxAmAkACQAJAIAxBxgBGBEAgCUEQakEIciEDIAlBEGpBCXIhByAOIAggCCAOSxsiBSEIA0AgCDUCACAHEEQhBgJAIAUgCEcEQCAGIAlBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAlBEGpLDQALDAELIAYgB0cNACAJQTA6ABggAyEGCyAAIAYgByAGaxAiIAhBBGoiCCAOTQ0AC0EAIQYgEUUNAiAAQdYSQQEQIiAIIAtPDQEgCkEBSA0BA0AgCDUCACAHEEQiBiAJQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAJQRBqSw0ACwsgACAGIApBCSAKQQlIGxAiIApBCWshBiAIQQRqIgggC08NAyAKQQlKIQMgBiEKIAMNAAsMAgsCQCAKQQBIDQAgCyAIQQRqIAggC0kbIQUgCUEQakEJciELIAlBEGpBCHIhAyAIIQcDQCALIAc1AgAgCxBEIgZGBEAgCUEwOgAYIAMhBgsCQCAHIAhHBEAgBiAJQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAJQRBqSw0ACwwBCyAAIAZBARAiIAZBAWohBkEAIApBAEwgDxsNACAAQdYSQQEQIgsgACAGIAsgBmsiBiAKIAYgCkgbECIgCiAGayEKIAdBBGoiByAFTw0BIApBf0oNAAsLIABBMCAKQRJqQRJBABAmIAAgFSAQIBVrECIMAgsgCiEGCyAAQTAgBkEJakEJQQAQJgsMAQsgE0EJaiATIAVBIHEiCxshCgJAIANBC0sNAEEMIANrIgZFDQBEAAAAAAAAIEAhGgNAIBpEAAAAAAAAMECiIRogBkEBayIGDQALIAotAABBLUYEQCAaIAGaIBqhoJohAQwBCyABIBqgIBqhIQELIBAgCSgCLCIGIAZBH3UiBmogBnOtIBAQRCIGRgRAIAlBMDoADyAJQQ9qIQYLIBJBAnIhDiAJKAIsIQcgBkECayIMIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEHIAlBEGohCANAIAgiBQJ/IAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIGQYCHAWotAAAgC3I6AAAgASAGt6FEAAAAAAAAMECiIQECQCAFQQFqIgggCUEQamtBAUcNAAJAIAFEAAAAAAAAAABiDQAgA0EASg0AIAdFDQELIAVBLjoAASAFQQJqIQgLIAFEAAAAAAAAAABiDQALIABBICACIA4CfwJAIANFDQAgCCAJa0ESayADTg0AIAMgEGogDGtBAmoMAQsgECAJQRBqIAxqayAIagsiA2oiDSAEECYgACAKIA4QIiAAQTAgAiANIARBgIAEcxAmIAAgCUEQaiAIIAlBEGprIgUQIiAAQTAgAyAFIBAgDGsiA2prQQBBABAmIAAgDCADECILIABBICACIA0gBEGAwABzECYgCUGwBGokACACIA0gAiANShsLBgBB4J8BCwYAQdyfAQsGAEHUnwELGAEBfyMAQRBrIgEgADYCDCABKAIMQQRqCxgBAX8jAEEQayIBIAA2AgwgASgCDEEIagtpAQF/IwBBEGsiASQAIAEgADYCDCABKAIMKAIUBEAgASgCDCgCFBAbCyABQQA2AgggASgCDCgCBARAIAEgASgCDCgCBDYCCAsgASgCDEEEahA3IAEoAgwQFSABKAIIIQAgAUEQaiQAIAALqQEBA38CQCAALQAAIgJFDQADQCABLQAAIgRFBEAgAiEDDAILAkAgAiAERg0AIAJBIHIgAiACQcEAa0EaSRsgAS0AACICQSByIAIgAkHBAGtBGkkbRg0AIAAtAAAhAwwCCyABQQFqIQEgAC0AASECIABBAWohACACDQALCyADQf8BcSIAQSByIAAgAEHBAGtBGkkbIAEtAAAiAEEgciAAIABBwQBrQRpJG2sL2AkBAX8jAEGwAWsiBSQAIAUgADYCpAEgBSABNgKgASAFIAI2ApwBIAUgAzcDkAEgBSAENgKMASAFIAUoAqABNgKIAQJAAkACQAJAAkACQAJAAkACQAJAAkAgBSgCjAEODwABAgMEBQcICQkJCQkJBgkLIAUoAogBQgA3AyAgBUIANwOoAQwJCyAFIAUoAqQBIAUoApwBIAUpA5ABEC4iAzcDgAEgA0IAUwRAIAUoAogBQQhqIAUoAqQBEBcgBUJ/NwOoAQwJCwJAIAUpA4ABUARAIAUoAogBKQMoIAUoAogBKQMgUQRAIAUoAogBQQE2AgQgBSgCiAEgBSgCiAEpAyA3AxggBSgCiAEoAgAEQCAFKAKkASAFQcgAahA4QQBIBEAgBSgCiAFBCGogBSgCpAEQFyAFQn83A6gBDA0LAkAgBSkDSEIgg1ANACAFKAJ0IAUoAogBKAIwRg0AIAUoAogBQQhqQQdBABAUIAVCfzcDqAEMDQsCQCAFKQNIQgSDUA0AIAUpA2AgBSgCiAEpAxhRDQAgBSgCiAFBCGpBFUEAEBQgBUJ/NwOoAQwNCwsLDAELAkAgBSgCiAEoAgQNACAFKAKIASkDICAFKAKIASkDKFYNACAFIAUoAogBKQMoIAUoAogBKQMgfTcDQANAIAUpA0AgBSkDgAFUBEAgBSAFKQOAASAFKQNAfUL/////D1YEfkL/////DwUgBSkDgAEgBSkDQH0LNwM4IAUoAogBKAIwIAUoApwBIAUpA0CnaiAFKQM4pxAaIQAgBSgCiAEgADYCMCAFKAKIASIAIAUpAzggACkDKHw3AyggBSAFKQM4IAUpA0B8NwNADAELCwsLIAUoAogBIgAgBSkDgAEgACkDIHw3AyAgBSAFKQOAATcDqAEMCAsgBUIANwOoAQwHCyAFIAUoApwBNgI0IAUoAogBKAIEBEAgBSgCNCAFKAKIASkDGDcDGCAFKAI0IAUoAogBKAIwNgIsIAUoAjQgBSgCiAEpAxg3AyAgBSgCNEEAOwEwIAUoAjRBADsBMiAFKAI0IgAgACkDAELsAYQ3AwALIAVCADcDqAEMBgsgBSAFKAKIAUEIaiAFKAKcASAFKQOQARBCNwOoAQwFCyAFKAKIARAVIAVCADcDqAEMBAsjAEEQayIAIAUoAqQBNgIMIAUgACgCDCkDGDcDKCAFKQMoQgBTBEAgBSgCiAFBCGogBSgCpAEQFyAFQn83A6gBDAQLIAUpAyghAyAFQX82AhggBUEQNgIUIAVBDzYCECAFQQ02AgwgBUEMNgIIIAVBCjYCBCAFQQk2AgAgBUEIIAUQNkJ/hSADgzcDqAEMAwsgBQJ/IAUpA5ABQhBUBEAgBSgCiAFBCGpBEkEAEBRBAAwBCyAFKAKcAQs2AhwgBSgCHEUEQCAFQn83A6gBDAMLAkAgBSgCpAEgBSgCHCkDACAFKAIcKAIIECdBAE4EQCAFIAUoAqQBEEoiAzcDICADQgBZDQELIAUoAogBQQhqIAUoAqQBEBcgBUJ/NwOoAQwDCyAFKAKIASAFKQMgNwMgIAVCADcDqAEMAgsgBSAFKAKIASkDIDcDqAEMAQsgBSgCiAFBCGpBHEEAEBQgBUJ/NwOoAQsgBSkDqAEhAyAFQbABaiQAIAMLnAwBAX8jAEEwayIFJAAgBSAANgIkIAUgATYCICAFIAI2AhwgBSADNwMQIAUgBDYCDCAFIAUoAiA2AggCQAJAAkACQAJAAkACQAJAAkACQCAFKAIMDhEAAQIDBQYICAgICAgICAcIBAgLIAUoAghCADcDGCAFKAIIQQA6AAwgBSgCCEEAOgANIAUoAghBADoADyAFKAIIQn83AyAgBSgCCCgCrEAgBSgCCCgCqEAoAgwRAABBAXFFBEAgBUJ/NwMoDAkLIAVCADcDKAwICyAFKAIkIQEgBSgCCCECIAUoAhwhBCAFKQMQIQMjAEFAaiIAJAAgACABNgI0IAAgAjYCMCAAIAQ2AiwgACADNwMgAkACfyMAQRBrIgEgACgCMDYCDCABKAIMKAIACwRAIABCfzcDOAwBCwJAIAApAyBQRQRAIAAoAjAtAA1BAXFFDQELIABCADcDOAwBCyAAQgA3AwggAEEAOgAbA0AgAC0AG0EBcQR/QQAFIAApAwggACkDIFQLQQFxBEAgACAAKQMgIAApAwh9NwMAIAAgACgCMCgCrEAgACgCLCAAKQMIp2ogACAAKAIwKAKoQCgCHBEBADYCHCAAKAIcQQJHBEAgACAAKQMAIAApAwh8NwMICwJAAkACQAJAIAAoAhxBAWsOAwACAQMLIAAoAjBBAToADQJAIAAoAjAtAAxBAXENAAsgACgCMCkDIEIAUwRAIAAoAjBBFEEAEBQgAEEBOgAbDAMLAkAgACgCMC0ADkEBcUUNACAAKAIwKQMgIAApAwhWDQAgACgCMEEBOgAPIAAoAjAgACgCMCkDIDcDGCAAKAIsIAAoAjBBKGogACgCMCkDGKcQGRogACAAKAIwKQMYNwM4DAYLIABBAToAGwwCCyAAKAIwLQAMQQFxBEAgAEEBOgAbDAILIAAgACgCNCAAKAIwQShqQoDAABAuIgM3AxAgA0IAUwRAIAAoAjAgACgCNBAXIABBAToAGwwCCwJAIAApAxBQBEAgACgCMEEBOgAMIAAoAjAoAqxAIAAoAjAoAqhAKAIYEQIAIAAoAjApAyBCAFMEQCAAKAIwQgA3AyALDAELAkAgACgCMCkDIEIAWQRAIAAoAjBBADoADgwBCyAAKAIwIAApAxA3AyALIAAoAjAoAqxAIAAoAjBBKGogACkDECAAKAIwKAKoQCgCFBEQABoLDAELAn8jAEEQayIBIAAoAjA2AgwgASgCDCgCAEULBEAgACgCMEEUQQAQFAsgAEEBOgAbCwwBCwsgACkDCEIAUgRAIAAoAjBBADoADiAAKAIwIgEgACkDCCABKQMYfDcDGCAAIAApAwg3AzgMAQsgAEF/QQACfyMAQRBrIgEgACgCMDYCDCABKAIMKAIACxusNwM4CyAAKQM4IQMgAEFAayQAIAUgAzcDKAwHCyAFKAIIKAKsQCAFKAIIKAKoQCgCEBEAAEEBcUUEQCAFQn83AygMBwsgBUIANwMoDAYLIAUgBSgCHDYCBAJAIAUoAggtABBBAXEEQCAFKAIILQANQQFxBEAgBSgCBCAFKAIILQAPQQFxBH9BAAUCfwJAIAUoAggoAhRBf0cEQCAFKAIIKAIUQX5HDQELQQgMAQsgBSgCCCgCFAtB//8DcQs7ATAgBSgCBCAFKAIIKQMYNwMgIAUoAgQiACAAKQMAQsgAhDcDAAwCCyAFKAIEIgAgACkDAEK3////D4M3AwAMAQsgBSgCBEEAOwEwIAUoAgQiACAAKQMAQsAAhDcDAAJAIAUoAggtAA1BAXEEQCAFKAIEIAUoAggpAxg3AxggBSgCBCIAIAApAwBCBIQ3AwAMAQsgBSgCBCIAIAApAwBC+////w+DNwMACwsgBUIANwMoDAULIAUgBSgCCC0AD0EBcQR/QQAFIAUoAggoAqxAIAUoAggoAqhAKAIIEQAAC6w3AygMBAsgBSAFKAIIIAUoAhwgBSkDEBBCNwMoDAMLIAUoAggQsQEgBUIANwMoDAILIAVBfzYCACAFQRAgBRA2Qj+ENwMoDAELIAUoAghBFEEAEBQgBUJ/NwMoCyAFKQMoIQMgBUEwaiQAIAMLPAEBfyMAQRBrIgMkACADIAA7AQ4gAyABNgIIIAMgAjYCBEEAIAMoAgggAygCBBC0ASEAIANBEGokACAAC46nAQEEfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjYCECAFIAUoAhg2AgwgBSgCDCAFKAIQKQMAQv////8PVgR+Qv////8PBSAFKAIQKQMACz4CICAFKAIMIAUoAhQ2AhwCQCAFKAIMLQAEQQFxBEAgBSgCDEEQaiEBQQRBACAFKAIMLQAMQQFxGyECIwBBQGoiACQAIAAgATYCOCAAIAI2AjQCQAJAAkAgACgCOBB5DQAgACgCNEEFSg0AIAAoAjRBAE4NAQsgAEF+NgI8DAELIAAgACgCOCgCHDYCLAJAAkAgACgCOCgCDEUNACAAKAI4KAIEBEAgACgCOCgCAEUNAQsgACgCLCgCBEGaBUcNASAAKAI0QQRGDQELIAAoAjhBsNkAKAIANgIYIABBfjYCPAwBCyAAKAI4KAIQRQRAIAAoAjhBvNkAKAIANgIYIABBezYCPAwBCyAAIAAoAiwoAig2AjAgACgCLCAAKAI0NgIoAkAgACgCLCgCFARAIAAoAjgQHCAAKAI4KAIQRQRAIAAoAixBfzYCKCAAQQA2AjwMAwsMAQsCQCAAKAI4KAIEDQAgACgCNEEBdEEJQQAgACgCNEEEShtrIAAoAjBBAXRBCUEAIAAoAjBBBEoba0oNACAAKAI0QQRGDQAgACgCOEG82QAoAgA2AhggAEF7NgI8DAILCwJAIAAoAiwoAgRBmgVHDQAgACgCOCgCBEUNACAAKAI4QbzZACgCADYCGCAAQXs2AjwMAQsgACgCLCgCBEEqRgRAIAAgACgCLCgCMEEEdEH4AGtBCHQ2AigCQAJAIAAoAiwoAogBQQJIBEAgACgCLCgChAFBAk4NAQsgAEEANgIkDAELAkAgACgCLCgChAFBBkgEQCAAQQE2AiQMAQsCQCAAKAIsKAKEAUEGRgRAIABBAjYCJAwBCyAAQQM2AiQLCwsgACAAKAIoIAAoAiRBBnRyNgIoIAAoAiwoAmwEQCAAIAAoAihBIHI2AigLIAAgACgCKEEfIAAoAihBH3BrajYCKCAAKAIsIAAoAigQTCAAKAIsKAJsBEAgACgCLCAAKAI4KAIwQRB2EEwgACgCLCAAKAI4KAIwQf//A3EQTAtBAEEAQQAQPiEBIAAoAjggATYCMCAAKAIsQfEANgIEIAAoAjgQHCAAKAIsKAIUBEAgACgCLEF/NgIoIABBADYCPAwCCwsgACgCLCgCBEE5RgRAQQBBAEEAEBohASAAKAI4IAE2AjAgACgCLCgCCCECIAAoAiwiAygCFCEBIAMgAUEBajYCFCABIAJqQR86AAAgACgCLCgCCCECIAAoAiwiAygCFCEBIAMgAUEBajYCFCABIAJqQYsBOgAAIAAoAiwoAgghAiAAKAIsIgMoAhQhASADIAFBAWo2AhQgASACakEIOgAAAkAgACgCLCgCHEUEQCAAKAIsKAIIIQIgACgCLCIDKAIUIQEgAyABQQFqNgIUIAEgAmpBADoAACAAKAIsKAIIIQIgACgCLCIDKAIUIQEgAyABQQFqNgIUIAEgAmpBADoAACAAKAIsKAIIIQIgACgCLCIDKAIUIQEgAyABQQFqNgIUIAEgAmpBADoAACAAKAIsKAIIIQIgACgCLCIDKAIUIQEgAyABQQFqNgIUIAEgAmpBADoAACAAKAIsKAIIIQIgACgCLCIDKAIUIQEgAyABQQFqNgIUIAEgAmpBADoAACAAKAIsKAKEAUEJRgR/QQIFQQRBACAAKAIsKAKIAUECSAR/IAAoAiwoAoQBQQJIBUEBC0EBcRsLIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCLCgCCCECIAAoAiwiAygCFCEBIAMgAUEBajYCFCABIAJqQQM6AAAgACgCLEHxADYCBCAAKAI4EBwgACgCLCgCFARAIAAoAixBfzYCKCAAQQA2AjwMBAsMAQsgACgCLCgCHCgCAEVFQQJBACAAKAIsKAIcKAIsG2pBBEEAIAAoAiwoAhwoAhAbakEIQQAgACgCLCgCHCgCHBtqQRBBACAAKAIsKAIcKAIkG2ohAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAIsKAIcKAIEQf8BcSECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAiwoAhwoAgRBCHZB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCLCgCHCgCBEEQdkH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAIsKAIcKAIEQRh2IQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCLCgChAFBCUYEf0ECBUEEQQAgACgCLCgCiAFBAkgEfyAAKAIsKAKEAUECSAVBAQtBAXEbCyECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAiwoAhwoAgxB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCLCgCHCgCEARAIAAoAiwoAhwoAhRB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCLCgCHCgCFEEIdkH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAAAsgACgCLCgCHCgCLARAIAAoAjgoAjAgACgCLCgCCCAAKAIsKAIUEBohASAAKAI4IAE2AjALIAAoAixBADYCICAAKAIsQcUANgIECwsgACgCLCgCBEHFAEYEQCAAKAIsKAIcKAIQBEAgACAAKAIsKAIUNgIgIAAgACgCLCgCHCgCFEH//wNxIAAoAiwoAiBrNgIcA0AgACgCLCgCDCAAKAIsKAIUIAAoAhxqSQRAIAAgACgCLCgCDCAAKAIsKAIUazYCGCAAKAIsKAIIIAAoAiwoAhRqIAAoAiwoAhwoAhAgACgCLCgCIGogACgCGBAZGiAAKAIsIAAoAiwoAgw2AhQCQCAAKAIsKAIcKAIsRQ0AIAAoAiwoAhQgACgCIE0NACAAKAI4KAIwIAAoAiwoAgggACgCIGogACgCLCgCFCAAKAIgaxAaIQEgACgCOCABNgIwCyAAKAIsIgEgACgCGCABKAIgajYCICAAKAI4EBwgACgCLCgCFARAIAAoAixBfzYCKCAAQQA2AjwMBQUgAEEANgIgIAAgACgCHCAAKAIYazYCHAwCCwALCyAAKAIsKAIIIAAoAiwoAhRqIAAoAiwoAhwoAhAgACgCLCgCIGogACgCHBAZGiAAKAIsIgEgACgCHCABKAIUajYCFAJAIAAoAiwoAhwoAixFDQAgACgCLCgCFCAAKAIgTQ0AIAAoAjgoAjAgACgCLCgCCCAAKAIgaiAAKAIsKAIUIAAoAiBrEBohASAAKAI4IAE2AjALIAAoAixBADYCIAsgACgCLEHJADYCBAsgACgCLCgCBEHJAEYEQCAAKAIsKAIcKAIcBEAgACAAKAIsKAIUNgIUA0AgACgCLCgCFCAAKAIsKAIMRgRAAkAgACgCLCgCHCgCLEUNACAAKAIsKAIUIAAoAhRNDQAgACgCOCgCMCAAKAIsKAIIIAAoAhRqIAAoAiwoAhQgACgCFGsQGiEBIAAoAjggATYCMAsgACgCOBAcIAAoAiwoAhQEQCAAKAIsQX82AiggAEEANgI8DAULIABBADYCFAsgACgCLCgCHCgCHCECIAAoAiwiAygCICEBIAMgAUEBajYCICAAIAEgAmotAAA2AhAgACgCECECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAhANAAsCQCAAKAIsKAIcKAIsRQ0AIAAoAiwoAhQgACgCFE0NACAAKAI4KAIwIAAoAiwoAgggACgCFGogACgCLCgCFCAAKAIUaxAaIQEgACgCOCABNgIwCyAAKAIsQQA2AiALIAAoAixB2wA2AgQLIAAoAiwoAgRB2wBGBEAgACgCLCgCHCgCJARAIAAgACgCLCgCFDYCDANAIAAoAiwoAhQgACgCLCgCDEYEQAJAIAAoAiwoAhwoAixFDQAgACgCLCgCFCAAKAIMTQ0AIAAoAjgoAjAgACgCLCgCCCAAKAIMaiAAKAIsKAIUIAAoAgxrEBohASAAKAI4IAE2AjALIAAoAjgQHCAAKAIsKAIUBEAgACgCLEF/NgIoIABBADYCPAwFCyAAQQA2AgwLIAAoAiwoAhwoAiQhAiAAKAIsIgMoAiAhASADIAFBAWo2AiAgACABIAJqLQAANgIIIAAoAgghAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAIIDQALAkAgACgCLCgCHCgCLEUNACAAKAIsKAIUIAAoAgxNDQAgACgCOCgCMCAAKAIsKAIIIAAoAgxqIAAoAiwoAhQgACgCDGsQGiEBIAAoAjggATYCMAsLIAAoAixB5wA2AgQLIAAoAiwoAgRB5wBGBEAgACgCLCgCHCgCLARAIAAoAiwoAgwgACgCLCgCFEECakkEQCAAKAI4EBwgACgCLCgCFARAIAAoAixBfzYCKCAAQQA2AjwMBAsLIAAoAjgoAjBB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCMEEIdkH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAAEEAQQBBABAaIQEgACgCOCABNgIwCyAAKAIsQfEANgIEIAAoAjgQHCAAKAIsKAIUBEAgACgCLEF/NgIoIABBADYCPAwCCwsCQAJAIAAoAjgoAgQNACAAKAIsKAJ0DQAgACgCNEUNASAAKAIsKAIEQZoFRg0BCyAAAn8gACgCLCgChAFFBEAgACgCLCAAKAI0ELYBDAELAn8gACgCLCgCiAFBAkYEQCAAKAIsIQIgACgCNCEDIwBBIGsiASQAIAEgAjYCGCABIAM2AhQCQANAAkAgASgCGCgCdEUEQCABKAIYEFsgASgCGCgCdEUEQCABKAIURQRAIAFBADYCHAwFCwwCCwsgASgCGEEANgJgIAEgASgCGCICKAI4IAIoAmxqLQAAOgAPIAEoAhgiAigCpC0gAigCoC1BAXRqQQA7AQAgAS0ADyEDIAEoAhgiAigCmC0hBCACIAIoAqAtIgJBAWo2AqAtIAIgBGogAzoAACABKAIYIAEtAA9BAnRqIgIgAi8BlAFBAWo7AZQBIAEgASgCGCgCoC0gASgCGCgCnC1BAWtGNgIQIAEoAhgiAiACKAJ0QQFrNgJ0IAEoAhgiAiACKAJsQQFqNgJsIAEoAhAEQCABKAIYAn8gASgCGCgCXEEATgRAIAEoAhgoAjggASgCGCgCXGoMAQtBAAsgASgCGCgCbCABKAIYKAJca0EAECggASgCGCABKAIYKAJsNgJcIAEoAhgoAgAQHCABKAIYKAIAKAIQRQRAIAFBADYCHAwECwsMAQsLIAEoAhhBADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBbAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCGCABKAIUSQtBAXENAAsgASgCKEGCAiABKAIUIAEoAhhrazYCYCABKAIoKAJgIAEoAigoAnRLBEAgASgCKCABKAIoKAJ0NgJgCwsLAkAgASgCKCgCYEEDTwRAIAEgASgCKCgCYEEDazoAEyABQQE7ARAgASgCKCICKAKkLSACKAKgLUEBdGogAS8BEDsBACABLQATIQMgASgCKCICKAKYLSEEIAIgAigCoC0iAkEBajYCoC0gAiAEaiADOgAAIAEgAS8BEEEBazsBECABKAIoIAEtABNB0N0Aai0AAEECdGpBmAlqIgIgAi8BAEEBajsBACABKAIoQYgTagJ/IAEvARBBgAJJBEAgAS8BEC0A0FkMAQsgAS8BEEEHdkGAAmotANBZC0ECdGoiAiACLwEAQQFqOwEAIAEgASgCKCgCoC0gASgCKCgCnC1BAWtGNgIgIAEoAigiAiACKAJ0IAEoAigoAmBrNgJ0IAEoAigiAiABKAIoKAJgIAIoAmxqNgJsIAEoAihBADYCYAwBCyABIAEoAigiAigCOCACKAJsai0AADoADyABKAIoIgIoAqQtIAIoAqAtQQF0akEAOwEAIAEtAA8hAyABKAIoIgIoApgtIQQgAiACKAKgLSICQQFqNgKgLSACIARqIAM6AAAgASgCKCABLQAPQQJ0aiICIAIvAZQBQQFqOwGUASABIAEoAigoAqAtIAEoAigoApwtQQFrRjYCICABKAIoIgIgAigCdEEBazYCdCABKAIoIgIgAigCbEEBajYCbAsgASgCIARAIAEoAigCfyABKAIoKAJcQQBOBEAgASgCKCgCOCABKAIoKAJcagwBC0EACyABKAIoKAJsIAEoAigoAlxrQQAQKCABKAIoIAEoAigoAmw2AlwgASgCKCgCABAcIAEoAigoAgAoAhBFBEAgAUEANgIsDAQLCwwBCwsgASgCKEEANgK0LSABKAIkQQRGBEAgASgCKAJ/IAEoAigoAlxBAE4EQCABKAIoKAI4IAEoAigoAlxqDAELQQALIAEoAigoAmwgASgCKCgCXGtBARAoIAEoAiggASgCKCgCbDYCXCABKAIoKAIAEBwgASgCKCgCACgCEEUEQCABQQI2AiwMAgsgAUEDNgIsDAELIAEoAigoAqAtBEAgASgCKAJ/IAEoAigoAlxBAE4EQCABKAIoKAI4IAEoAigoAlxqDAELQQALIAEoAigoAmwgASgCKCgCXGtBABAoIAEoAiggASgCKCgCbDYCXCABKAIoKAIAEBwgASgCKCgCACgCEEUEQCABQQA2AiwMAgsLIAFBATYCLAsgASgCLCECIAFBMGokACACDAELIAAoAiwgACgCNCAAKAIsKAKEAUEMbEGA7wBqKAIIEQMACwsLNgIEAkAgACgCBEECRwRAIAAoAgRBA0cNAQsgACgCLEGaBTYCBAsCQCAAKAIEBEAgACgCBEECRw0BCyAAKAI4KAIQRQRAIAAoAixBfzYCKAsgAEEANgI8DAILIAAoAgRBAUYEQAJAIAAoAjRBAUYEQCAAKAIsIQIjAEEgayIBJAAgASACNgIcIAFBAzYCGAJAIAEoAhwoArwtQRAgASgCGGtKBEAgAUECNgIUIAEoAhwiAiACLwG4LSABKAIUQf//A3EgASgCHCgCvC10cjsBuC0gASgCHC8BuC1B/wFxIQMgASgCHCgCCCEEIAEoAhwiBigCFCECIAYgAkEBajYCFCACIARqIAM6AAAgASgCHC8BuC1BCHYhAyABKAIcKAIIIQQgASgCHCIGKAIUIQIgBiACQQFqNgIUIAIgBGogAzoAACABKAIcIAEoAhRB//8DcUEQIAEoAhwoArwta3U7AbgtIAEoAhwiAiACKAK8LSABKAIYQRBrajYCvC0MAQsgASgCHCICIAIvAbgtQQIgASgCHCgCvC10cjsBuC0gASgCHCICIAEoAhggAigCvC1qNgK8LQsgAUGS6AAvAQA2AhACQCABKAIcKAK8LUEQIAEoAhBrSgRAIAFBkOgALwEANgIMIAEoAhwiAiACLwG4LSABKAIMQf//A3EgASgCHCgCvC10cjsBuC0gASgCHC8BuC1B/wFxIQMgASgCHCgCCCEEIAEoAhwiBigCFCECIAYgAkEBajYCFCACIARqIAM6AAAgASgCHC8BuC1BCHYhAyABKAIcKAIIIQQgASgCHCIGKAIUIQIgBiACQQFqNgIUIAIgBGogAzoAACABKAIcIAEoAgxB//8DcUEQIAEoAhwoArwta3U7AbgtIAEoAhwiAiACKAK8LSABKAIQQRBrajYCvC0MAQsgASgCHCICIAIvAbgtQZDoAC8BACABKAIcKAK8LXRyOwG4LSABKAIcIgIgASgCECACKAK8LWo2ArwtCyABKAIcELsBIAFBIGokAAwBCyAAKAI0QQVHBEAgACgCLEEAQQBBABBcIAAoAjRBA0YEQCAAKAIsKAJEIAAoAiwoAkxBAWtBAXRqQQA7AQAgACgCLCgCREEAIAAoAiwoAkxBAWtBAXQQMiAAKAIsKAJ0RQRAIAAoAixBADYCbCAAKAIsQQA2AlwgACgCLEEANgK0LQsLCwsgACgCOBAcIAAoAjgoAhBFBEAgACgCLEF/NgIoIABBADYCPAwDCwsLIAAoAjRBBEcEQCAAQQA2AjwMAQsgACgCLCgCGEEATARAIABBATYCPAwBCwJAIAAoAiwoAhhBAkYEQCAAKAI4KAIwQf8BcSECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAjgoAjBBCHZB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCMEEQdkH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAI4KAIwQRh2IQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCCEH/AXEhAiAAKAIsKAIIIQMgACgCLCIEKAIUIQEgBCABQQFqNgIUIAEgA2ogAjoAACAAKAI4KAIIQQh2Qf8BcSECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAAIAAoAjgoAghBEHZB/wFxIQIgACgCLCgCCCEDIAAoAiwiBCgCFCEBIAQgAUEBajYCFCABIANqIAI6AAAgACgCOCgCCEEYdiECIAAoAiwoAgghAyAAKAIsIgQoAhQhASAEIAFBAWo2AhQgASADaiACOgAADAELIAAoAiwgACgCOCgCMEEQdhBMIAAoAiwgACgCOCgCMEH//wNxEEwLIAAoAjgQHCAAKAIsKAIYQQBKBEAgACgCLEEAIAAoAiwoAhhrNgIYCyAAIAAoAiwoAhRFNgI8CyAAKAI8IQEgAEFAayQAIAUgATYCCAwBCyAFKAIMQRBqIQEjAEHgAGsiACQAIAAgATYCWCAAQQI2AlQCQAJAAkAgACgCWBBLDQAgACgCWCgCDEUNACAAKAJYKAIADQEgACgCWCgCBEUNAQsgAEF+NgJcDAELIAAgACgCWCgCHDYCUCAAKAJQKAIEQb/+AEYEQCAAKAJQQcD+ADYCBAsgACAAKAJYKAIMNgJIIAAgACgCWCgCEDYCQCAAIAAoAlgoAgA2AkwgACAAKAJYKAIENgJEIAAgACgCUCgCPDYCPCAAIAAoAlAoAkA2AjggACAAKAJENgI0IAAgACgCQDYCMCAAQQA2AhADQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAJQKAIEQbT+AGsOHwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fCyAAKAJQKAIMRQRAIAAoAlBBwP4ANgIEDCELA0AgACgCOEEQSQRAIAAoAkRFDSEgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLAkAgACgCUCgCDEECcUUNACAAKAI8QZ+WAkcNACAAKAJQKAIoRQRAIAAoAlBBDzYCKAtBAEEAQQAQGiEBIAAoAlAgATYCHCAAIAAoAjw6AAwgACAAKAI8QQh2OgANIAAoAlAoAhwgAEEMakECEBohASAAKAJQIAE2AhwgAEEANgI8IABBADYCOCAAKAJQQbX+ADYCBAwhCyAAKAJQQQA2AhQgACgCUCgCJARAIAAoAlAoAiRBfzYCMAsCQCAAKAJQKAIMQQFxBEAgACgCPEH/AXFBCHQgACgCPEEIdmpBH3BFDQELIAAoAlhBmgw2AhggACgCUEHR/gA2AgQMIQsgACgCPEEPcUEIRwRAIAAoAlhBmw82AhggACgCUEHR/gA2AgQMIQsgACAAKAI8QQR2NgI8IAAgACgCOEEEazYCOCAAIAAoAjxBD3FBCGo2AhQgACgCUCgCKEUEQCAAKAJQIAAoAhQ2AigLAkAgACgCFEEPTQRAIAAoAhQgACgCUCgCKE0NAQsgACgCWEGTDTYCGCAAKAJQQdH+ADYCBAwhCyAAKAJQQQEgACgCFHQ2AhhBAEEAQQAQPiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG9/gBBv/4AIAAoAjxBgARxGzYCBCAAQQA2AjwgAEEANgI4DCALA0AgACgCOEEQSQRAIAAoAkRFDSAgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPDYCFCAAKAJQKAIUQf8BcUEIRwRAIAAoAlhBmw82AhggACgCUEHR/gA2AgQMIAsgACgCUCgCFEGAwANxBEAgACgCWEGgCTYCGCAAKAJQQdH+ADYCBAwgCyAAKAJQKAIkBEAgACgCUCgCJCAAKAI8QQh2QQFxNgIACwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAKAJQKAIcIABBDGpBAhAaIQEgACgCUCABNgIcCyAAQQA2AjwgAEEANgI4IAAoAlBBtv4ANgIECwNAIAAoAjhBIEkEQCAAKAJERQ0fIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAKAJQKAIkBEAgACgCUCgCJCAAKAI8NgIECwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAIAAoAjxBEHY6AA4gACAAKAI8QRh2OgAPIAAoAlAoAhwgAEEMakEEEBohASAAKAJQIAE2AhwLIABBADYCPCAAQQA2AjggACgCUEG3/gA2AgQLA0AgACgCOEEQSQRAIAAoAkRFDR4gACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAoAiQEQCAAKAJQKAIkIAAoAjxB/wFxNgIIIAAoAlAoAiQgACgCPEEIdjYCDAsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAgACgCPDoADCAAIAAoAjxBCHY6AA0gACgCUCgCHCAAQQxqQQIQGiEBIAAoAlAgATYCHAsgAEEANgI8IABBADYCOCAAKAJQQbj+ADYCBAsCQCAAKAJQKAIUQYAIcQRAA0AgACgCOEEQSQRAIAAoAkRFDR8gACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPDYCRCAAKAJQKAIkBEAgACgCUCgCJCAAKAI8NgIUCwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACAAKAI8OgAMIAAgACgCPEEIdjoADSAAKAJQKAIcIABBDGpBAhAaIQEgACgCUCABNgIcCyAAQQA2AjwgAEEANgI4DAELIAAoAlAoAiQEQCAAKAJQKAIkQQA2AhALCyAAKAJQQbn+ADYCBAsgACgCUCgCFEGACHEEQCAAIAAoAlAoAkQ2AiwgACgCLCAAKAJESwRAIAAgACgCRDYCLAsgACgCLARAAkAgACgCUCgCJEUNACAAKAJQKAIkKAIQRQ0AIAAgACgCUCgCJCgCFCAAKAJQKAJEazYCFCAAKAJQKAIkKAIQIAAoAhRqIAAoAkwCfyAAKAJQKAIkKAIYIAAoAhQgACgCLGpJBEAgACgCUCgCJCgCGCAAKAIUawwBCyAAKAIsCxAZGgsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAoAlAoAhwgACgCTCAAKAIsEBohASAAKAJQIAE2AhwLIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACgCUCIBIAEoAkQgACgCLGs2AkQLIAAoAlAoAkQNGwsgACgCUEEANgJEIAAoAlBBuv4ANgIECwJAIAAoAlAoAhRBgBBxBEAgACgCREUNGyAAQQA2AiwDQCAAKAJMIQEgACAAKAIsIgJBAWo2AiwgACABIAJqLQAANgIUAkAgACgCUCgCJEUNACAAKAJQKAIkKAIcRQ0AIAAoAlAoAkQgACgCUCgCJCgCIE8NACAAKAIUIQIgACgCUCgCJCgCHCEDIAAoAlAiBCgCRCEBIAQgAUEBajYCRCABIANqIAI6AAALIAAoAhQEfyAAKAIsIAAoAkRJBUEAC0EBcQ0ACwJAIAAoAlAoAhRBgARxRQ0AIAAoAlAoAgxBBHFFDQAgACgCUCgCHCAAKAJMIAAoAiwQGiEBIAAoAlAgATYCHAsgACAAKAJEIAAoAixrNgJEIAAgACgCLCAAKAJMajYCTCAAKAIUDRsMAQsgACgCUCgCJARAIAAoAlAoAiRBADYCHAsLIAAoAlBBADYCRCAAKAJQQbv+ADYCBAsCQCAAKAJQKAIUQYAgcQRAIAAoAkRFDRogAEEANgIsA0AgACgCTCEBIAAgACgCLCICQQFqNgIsIAAgASACai0AADYCFAJAIAAoAlAoAiRFDQAgACgCUCgCJCgCJEUNACAAKAJQKAJEIAAoAlAoAiQoAihPDQAgACgCFCECIAAoAlAoAiQoAiQhAyAAKAJQIgQoAkQhASAEIAFBAWo2AkQgASADaiACOgAACyAAKAIUBH8gACgCLCAAKAJESQVBAAtBAXENAAsCQCAAKAJQKAIUQYAEcUUNACAAKAJQKAIMQQRxRQ0AIAAoAlAoAhwgACgCTCAAKAIsEBohASAAKAJQIAE2AhwLIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACgCFA0aDAELIAAoAlAoAiQEQCAAKAJQKAIkQQA2AiQLCyAAKAJQQbz+ADYCBAsgACgCUCgCFEGABHEEQANAIAAoAjhBEEkEQCAAKAJERQ0aIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCwJAIAAoAlAoAgxBBHFFDQAgACgCPCAAKAJQKAIcQf//A3FGDQAgACgCWEH7DDYCGCAAKAJQQdH+ADYCBAwaCyAAQQA2AjwgAEEANgI4CyAAKAJQKAIkBEAgACgCUCgCJCAAKAJQKAIUQQl1QQFxNgIsIAAoAlAoAiRBATYCMAtBAEEAQQAQGiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG//gA2AgQMGAsDQCAAKAI4QSBJBEAgACgCREUNGCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCUCAAKAI8QQh2QYD+A3EgACgCPEEYdmogACgCPEGA/gNxQQh0aiAAKAI8Qf8BcUEYdGoiATYCHCAAKAJYIAE2AjAgAEEANgI8IABBADYCOCAAKAJQQb7+ADYCBAsgACgCUCgCEEUEQCAAKAJYIAAoAkg2AgwgACgCWCAAKAJANgIQIAAoAlggACgCTDYCACAAKAJYIAAoAkQ2AgQgACgCUCAAKAI8NgI8IAAoAlAgACgCODYCQCAAQQI2AlwMGAtBAEEAQQAQPiEBIAAoAlAgATYCHCAAKAJYIAE2AjAgACgCUEG//gA2AgQLIAAoAlRBBUYNFCAAKAJUQQZGDRQLIAAoAlAoAggEQCAAIAAoAjwgACgCOEEHcXY2AjwgACAAKAI4IAAoAjhBB3FrNgI4IAAoAlBBzv4ANgIEDBULA0AgACgCOEEDSQRAIAAoAkRFDRUgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAlAgACgCPEEBcTYCCCAAIAAoAjxBAXY2AjwgACAAKAI4QQFrNgI4AkACQAJAAkACQCAAKAI8QQNxDgQAAQIDBAsgACgCUEHB/gA2AgQMAwsjAEEQayIBIAAoAlA2AgwgASgCDEGw8gA2AlAgASgCDEEJNgJYIAEoAgxBsIIBNgJUIAEoAgxBBTYCXCAAKAJQQcf+ADYCBCAAKAJUQQZGBEAgACAAKAI8QQJ2NgI8IAAgACgCOEECazYCOAwXCwwCCyAAKAJQQcT+ADYCBAwBCyAAKAJYQfANNgIYIAAoAlBB0f4ANgIECyAAIAAoAjxBAnY2AjwgACAAKAI4QQJrNgI4DBQLIAAgACgCPCAAKAI4QQdxdjYCPCAAIAAoAjggACgCOEEHcWs2AjgDQCAAKAI4QSBJBEAgACgCREUNFCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCPEH//wNxIAAoAjxBEHZB//8Dc0cEQCAAKAJYQaEKNgIYIAAoAlBB0f4ANgIEDBQLIAAoAlAgACgCPEH//wNxNgJEIABBADYCPCAAQQA2AjggACgCUEHC/gA2AgQgACgCVEEGRg0SCyAAKAJQQcP+ADYCBAsgACAAKAJQKAJENgIsIAAoAiwEQCAAKAIsIAAoAkRLBEAgACAAKAJENgIsCyAAKAIsIAAoAkBLBEAgACAAKAJANgIsCyAAKAIsRQ0RIAAoAkggACgCTCAAKAIsEBkaIAAgACgCRCAAKAIsazYCRCAAIAAoAiwgACgCTGo2AkwgACAAKAJAIAAoAixrNgJAIAAgACgCLCAAKAJIajYCSCAAKAJQIgEgASgCRCAAKAIsazYCRAwSCyAAKAJQQb/+ADYCBAwRCwNAIAAoAjhBDkkEQCAAKAJERQ0RIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAKAJQIAAoAjxBH3FBgQJqNgJkIAAgACgCPEEFdjYCPCAAIAAoAjhBBWs2AjggACgCUCAAKAI8QR9xQQFqNgJoIAAgACgCPEEFdjYCPCAAIAAoAjhBBWs2AjggACgCUCAAKAI8QQ9xQQRqNgJgIAAgACgCPEEEdjYCPCAAIAAoAjhBBGs2AjgCQCAAKAJQKAJkQZ4CTQRAIAAoAlAoAmhBHk0NAQsgACgCWEH9CTYCGCAAKAJQQdH+ADYCBAwRCyAAKAJQQQA2AmwgACgCUEHF/gA2AgQLA0AgACgCUCgCbCAAKAJQKAJgSQRAA0AgACgCOEEDSQRAIAAoAkRFDRIgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLIAAoAjxBB3EhAiAAKAJQQfQAaiEDIAAoAlAiBCgCbCEBIAQgAUEBajYCbCABQQF0QYDyAGovAQBBAXQgA2ogAjsBACAAIAAoAjxBA3Y2AjwgACAAKAI4QQNrNgI4DAELCwNAIAAoAlAoAmxBE0kEQCAAKAJQQfQAaiECIAAoAlAiAygCbCEBIAMgAUEBajYCbCABQQF0QYDyAGovAQBBAXQgAmpBADsBAAwBCwsgACgCUCAAKAJQQbQKajYCcCAAKAJQIAAoAlAoAnA2AlAgACgCUEEHNgJYIABBACAAKAJQQfQAakETIAAoAlBB8ABqIAAoAlBB2ABqIAAoAlBB9AVqEHc2AhAgACgCEARAIAAoAlhBhwk2AhggACgCUEHR/gA2AgQMEAsgACgCUEEANgJsIAAoAlBBxv4ANgIECwNAAkAgACgCUCgCbCAAKAJQKAJkIAAoAlAoAmhqTw0AA0ACQCAAIAAoAlAoAlAgACgCPEEBIAAoAlAoAlh0QQFrcUECdGooAQA2ASAgAC0AISAAKAI4TQ0AIAAoAkRFDREgACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLAkAgAC8BIkEQSQRAIAAgACgCPCAALQAhdjYCPCAAIAAoAjggAC0AIWs2AjggAC8BIiECIAAoAlBB9ABqIQMgACgCUCIEKAJsIQEgBCABQQFqNgJsIAFBAXQgA2ogAjsBAAwBCwJAIAAvASJBEEYEQANAIAAoAjggAC0AIUECakkEQCAAKAJERQ0UIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAIAAoAjwgAC0AIXY2AjwgACAAKAI4IAAtACFrNgI4IAAoAlAoAmxFBEAgACgCWEHPCTYCGCAAKAJQQdH+ADYCBAwECyAAIAAoAlAgACgCUCgCbEEBdGovAXI2AhQgACAAKAI8QQNxQQNqNgIsIAAgACgCPEECdjYCPCAAIAAoAjhBAms2AjgMAQsCQCAALwEiQRFGBEADQCAAKAI4IAAtACFBA2pJBEAgACgCREUNFSAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACAAKAI8IAAtACF2NgI8IAAgACgCOCAALQAhazYCOCAAQQA2AhQgACAAKAI8QQdxQQNqNgIsIAAgACgCPEEDdjYCPCAAIAAoAjhBA2s2AjgMAQsDQCAAKAI4IAAtACFBB2pJBEAgACgCREUNFCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACAAKAI8IAAtACF2NgI8IAAgACgCOCAALQAhazYCOCAAQQA2AhQgACAAKAI8Qf8AcUELajYCLCAAIAAoAjxBB3Y2AjwgACAAKAI4QQdrNgI4CwsgACgCUCgCbCAAKAIsaiAAKAJQKAJkIAAoAlAoAmhqSwRAIAAoAlhBzwk2AhggACgCUEHR/gA2AgQMAgsDQCAAIAAoAiwiAUEBazYCLCABBEAgACgCFCECIAAoAlBB9ABqIQMgACgCUCIEKAJsIQEgBCABQQFqNgJsIAFBAXQgA2ogAjsBAAwBCwsLDAELCyAAKAJQKAIEQdH+AEYNDiAAKAJQLwH0BEUEQCAAKAJYQfULNgIYIAAoAlBB0f4ANgIEDA8LIAAoAlAgACgCUEG0Cmo2AnAgACgCUCAAKAJQKAJwNgJQIAAoAlBBCTYCWCAAQQEgACgCUEH0AGogACgCUCgCZCAAKAJQQfAAaiAAKAJQQdgAaiAAKAJQQfQFahB3NgIQIAAoAhAEQCAAKAJYQesINgIYIAAoAlBB0f4ANgIEDA8LIAAoAlAgACgCUCgCcDYCVCAAKAJQQQY2AlwgAEECIAAoAlBB9ABqIAAoAlAoAmRBAXRqIAAoAlAoAmggACgCUEHwAGogACgCUEHcAGogACgCUEH0BWoQdzYCECAAKAIQBEAgACgCWEG5CTYCGCAAKAJQQdH+ADYCBAwPCyAAKAJQQcf+ADYCBCAAKAJUQQZGDQ0LIAAoAlBByP4ANgIECwJAIAAoAkRBBkkNACAAKAJAQYICSQ0AIAAoAlggACgCSDYCDCAAKAJYIAAoAkA2AhAgACgCWCAAKAJMNgIAIAAoAlggACgCRDYCBCAAKAJQIAAoAjw2AjwgACgCUCAAKAI4NgJAIAAoAjAhAiMAQeAAayIBIAAoAlg2AlwgASACNgJYIAEgASgCXCgCHDYCVCABIAEoAlwoAgA2AlAgASABKAJQIAEoAlwoAgRBBWtqNgJMIAEgASgCXCgCDDYCSCABIAEoAkggASgCWCABKAJcKAIQa2s2AkQgASABKAJIIAEoAlwoAhBBgQJrajYCQCABIAEoAlQoAiw2AjwgASABKAJUKAIwNgI4IAEgASgCVCgCNDYCNCABIAEoAlQoAjg2AjAgASABKAJUKAI8NgIsIAEgASgCVCgCQDYCKCABIAEoAlQoAlA2AiQgASABKAJUKAJUNgIgIAFBASABKAJUKAJYdEEBazYCHCABQQEgASgCVCgCXHRBAWs2AhgDQCABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiQgASgCLCABKAIccUECdGooAQA2ARACQAJAA0AgASABLQARNgIMIAEgASgCLCABKAIMdjYCLCABIAEoAiggASgCDGs2AiggASABLQAQNgIMIAEoAgxFBEAgAS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyABKAJcQYUPNgIYIAEoAlRB0f4ANgIEDAQLDAILIAEoAgxBwABxRQRAIAEgASgCJCABLwESIAEoAixBASABKAIMdEEBa3FqQQJ0aigBADYBEAwBCwsgASgCDEEgcQRAIAEoAlRBv/4ANgIEDAILIAEoAlxB6Q42AhggASgCVEHR/gA2AgQMAQsgASgCUCABKAJMSQR/IAEoAkggASgCQEkFQQALQQFxDQELCyABIAEoAihBA3Y2AgggASABKAJQIAEoAghrNgJQIAEgASgCKCABKAIIQQN0azYCKCABIAEoAixBASABKAIodEEBa3E2AiwgASgCXCABKAJQNgIAIAEoAlwgASgCSDYCDCABKAJcAn8gASgCUCABKAJMSQRAIAEoAkwgASgCUGtBBWoMAQtBBSABKAJQIAEoAkxraws2AgQgASgCXAJ/IAEoAkggASgCQEkEQCABKAJAIAEoAkhrQYECagwBC0GBAiABKAJIIAEoAkBraws2AhAgASgCVCABKAIsNgI8IAEoAlQgASgCKDYCQCAAIAAoAlgoAgw2AkggACAAKAJYKAIQNgJAIAAgACgCWCgCADYCTCAAIAAoAlgoAgQ2AkQgACAAKAJQKAI8NgI8IAAgACgCUCgCQDYCOCAAKAJQKAIEQb/+AEYEQCAAKAJQQX82Asg3CwwNCyAAKAJQQQA2Asg3A0ACQCAAIAAoAlAoAlAgACgCPEEBIAAoAlAoAlh0QQFrcUECdGooAQA2ASAgAC0AISAAKAI4TQ0AIAAoAkRFDQ0gACAAKAJEQQFrNgJEIAAgACgCTCIBQQFqNgJMIAAgACgCPCABLQAAIAAoAjh0ajYCPCAAIAAoAjhBCGo2AjgMAQsLAkAgAC0AIEUNACAALQAgQfABcQ0AIAAgACgBIDYBGANAAkAgACAAKAJQKAJQIAAvARogACgCPEEBIAAtABkgAC0AGGp0QQFrcSAALQAZdmpBAnRqKAEANgEgIAAoAjggAC0AGSAALQAhak8NACAAKAJERQ0OIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAIAAoAjwgAC0AGXY2AjwgACAAKAI4IAAtABlrNgI4IAAoAlAiASAALQAZIAEoAsg3ajYCyDcLIAAgACgCPCAALQAhdjYCPCAAIAAoAjggAC0AIWs2AjggACgCUCIBIAAtACEgASgCyDdqNgLINyAAKAJQIAAvASI2AkQgAC0AIEUEQCAAKAJQQc3+ADYCBAwNCyAALQAgQSBxBEAgACgCUEF/NgLINyAAKAJQQb/+ADYCBAwNCyAALQAgQcAAcQRAIAAoAlhB6Q42AhggACgCUEHR/gA2AgQMDQsgACgCUCAALQAgQQ9xNgJMIAAoAlBByf4ANgIECyAAKAJQKAJMBEADQCAAKAI4IAAoAlAoAkxJBEAgACgCREUNDSAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCUCIBIAEoAkQgACgCPEEBIAAoAlAoAkx0QQFrcWo2AkQgACAAKAI8IAAoAlAoAkx2NgI8IAAgACgCOCAAKAJQKAJMazYCOCAAKAJQIgEgACgCUCgCTCABKALIN2o2Asg3CyAAKAJQIAAoAlAoAkQ2Asw3IAAoAlBByv4ANgIECwNAAkAgACAAKAJQKAJUIAAoAjxBASAAKAJQKAJcdEEBa3FBAnRqKAEANgEgIAAtACEgACgCOE0NACAAKAJERQ0LIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAALQAgQfABcUUEQCAAIAAoASA2ARgDQAJAIAAgACgCUCgCVCAALwEaIAAoAjxBASAALQAZIAAtABhqdEEBa3EgAC0AGXZqQQJ0aigBADYBICAAKAI4IAAtABkgAC0AIWpPDQAgACgCREUNDCAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACAAKAI8IAAtABl2NgI8IAAgACgCOCAALQAZazYCOCAAKAJQIgEgAC0AGSABKALIN2o2Asg3CyAAIAAoAjwgAC0AIXY2AjwgACAAKAI4IAAtACFrNgI4IAAoAlAiASAALQAhIAEoAsg3ajYCyDcgAC0AIEHAAHEEQCAAKAJYQYUPNgIYIAAoAlBB0f4ANgIEDAsLIAAoAlAgAC8BIjYCSCAAKAJQIAAtACBBD3E2AkwgACgCUEHL/gA2AgQLIAAoAlAoAkwEQANAIAAoAjggACgCUCgCTEkEQCAAKAJERQ0LIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAKAJQIgEgASgCSCAAKAI8QQEgACgCUCgCTHRBAWtxajYCSCAAIAAoAjwgACgCUCgCTHY2AjwgACAAKAI4IAAoAlAoAkxrNgI4IAAoAlAiASAAKAJQKAJMIAEoAsg3ajYCyDcLIAAoAlBBzP4ANgIECyAAKAJARQ0HIAAgACgCMCAAKAJAazYCLAJAIAAoAlAoAkggACgCLEsEQCAAIAAoAlAoAkggACgCLGs2AiwgACgCLCAAKAJQKAIwSwRAIAAoAlAoAsQ3BEAgACgCWEHdDDYCGCAAKAJQQdH+ADYCBAwMCwsCQCAAKAIsIAAoAlAoAjRLBEAgACAAKAIsIAAoAlAoAjRrNgIsIAAgACgCUCgCOCAAKAJQKAIsIAAoAixrajYCKAwBCyAAIAAoAlAoAjggACgCUCgCNCAAKAIsa2o2AigLIAAoAiwgACgCUCgCREsEQCAAIAAoAlAoAkQ2AiwLDAELIAAgACgCSCAAKAJQKAJIazYCKCAAIAAoAlAoAkQ2AiwLIAAoAiwgACgCQEsEQCAAIAAoAkA2AiwLIAAgACgCQCAAKAIsazYCQCAAKAJQIgEgASgCRCAAKAIsazYCRANAIAAgACgCKCIBQQFqNgIoIAEtAAAhASAAIAAoAkgiAkEBajYCSCACIAE6AAAgACAAKAIsQQFrIgE2AiwgAQ0ACyAAKAJQKAJERQRAIAAoAlBByP4ANgIECwwICyAAKAJARQ0GIAAoAlAoAkQhASAAIAAoAkgiAkEBajYCSCACIAE6AAAgACAAKAJAQQFrNgJAIAAoAlBByP4ANgIEDAcLIAAoAlAoAgwEQANAIAAoAjhBIEkEQCAAKAJERQ0IIAAgACgCREEBazYCRCAAIAAoAkwiAUEBajYCTCAAIAAoAjwgAS0AACAAKAI4dGo2AjwgACAAKAI4QQhqNgI4DAELCyAAIAAoAjAgACgCQGs2AjAgACgCWCIBIAAoAjAgASgCFGo2AhQgACgCUCIBIAAoAjAgASgCIGo2AiACQCAAKAJQKAIMQQRxRQ0AIAAoAjBFDQACfyAAKAJQKAIUBEAgACgCUCgCHCAAKAJIIAAoAjBrIAAoAjAQGgwBCyAAKAJQKAIcIAAoAkggACgCMGsgACgCMBA+CyEBIAAoAlAgATYCHCAAKAJYIAE2AjALIAAgACgCQDYCMAJAIAAoAlAoAgxBBHFFDQACfyAAKAJQKAIUBEAgACgCPAwBCyAAKAI8QQh2QYD+A3EgACgCPEEYdmogACgCPEGA/gNxQQh0aiAAKAI8Qf8BcUEYdGoLIAAoAlAoAhxGDQAgACgCWEHIDDYCGCAAKAJQQdH+ADYCBAwICyAAQQA2AjwgAEEANgI4CyAAKAJQQc/+ADYCBAsCQCAAKAJQKAIMRQ0AIAAoAlAoAhRFDQADQCAAKAI4QSBJBEAgACgCREUNByAAIAAoAkRBAWs2AkQgACAAKAJMIgFBAWo2AkwgACAAKAI8IAEtAAAgACgCOHRqNgI8IAAgACgCOEEIajYCOAwBCwsgACgCPCAAKAJQKAIgRwRAIAAoAlhBsQw2AhggACgCUEHR/gA2AgQMBwsgAEEANgI8IABBADYCOAsgACgCUEHQ/gA2AgQLIABBATYCEAwDCyAAQX02AhAMAgsgAEF8NgJcDAMLIABBfjYCXAwCCwsgACgCWCAAKAJINgIMIAAoAlggACgCQDYCECAAKAJYIAAoAkw2AgAgACgCWCAAKAJENgIEIAAoAlAgACgCPDYCPCAAKAJQIAAoAjg2AkACQAJAIAAoAlAoAiwNACAAKAIwIAAoAlgoAhBGDQEgACgCUCgCBEHR/gBPDQEgACgCUCgCBEHO/gBJDQAgACgCVEEERg0BCwJ/IAAoAlghAiAAKAJYKAIMIQMgACgCMCAAKAJYKAIQayEEIwBBIGsiASQAIAEgAjYCGCABIAM2AhQgASAENgIQIAEgASgCGCgCHDYCDAJAIAEoAgwoAjhFBEAgASgCGCgCKEEBIAEoAgwoAih0QQEgASgCGCgCIBEBACECIAEoAgwgAjYCOCABKAIMKAI4RQRAIAFBATYCHAwCCwsgASgCDCgCLEUEQCABKAIMQQEgASgCDCgCKHQ2AiwgASgCDEEANgI0IAEoAgxBADYCMAsCQCABKAIQIAEoAgwoAixPBEAgASgCDCgCOCABKAIUIAEoAgwoAixrIAEoAgwoAiwQGRogASgCDEEANgI0IAEoAgwgASgCDCgCLDYCMAwBCyABIAEoAgwoAiwgASgCDCgCNGs2AgggASgCCCABKAIQSwRAIAEgASgCEDYCCAsgASgCDCgCOCABKAIMKAI0aiABKAIUIAEoAhBrIAEoAggQGRogASABKAIQIAEoAghrNgIQAkAgASgCEARAIAEoAgwoAjggASgCFCABKAIQayABKAIQEBkaIAEoAgwgASgCEDYCNCABKAIMIAEoAgwoAiw2AjAMAQsgASgCDCICIAEoAgggAigCNGo2AjQgASgCDCgCNCABKAIMKAIsRgRAIAEoAgxBADYCNAsgASgCDCgCMCABKAIMKAIsSQRAIAEoAgwiAiABKAIIIAIoAjBqNgIwCwsLIAFBADYCHAsgASgCHCECIAFBIGokACACCwRAIAAoAlBB0v4ANgIEIABBfDYCXAwCCwsgACAAKAI0IAAoAlgoAgRrNgI0IAAgACgCMCAAKAJYKAIQazYCMCAAKAJYIgEgACgCNCABKAIIajYCCCAAKAJYIgEgACgCMCABKAIUajYCFCAAKAJQIgEgACgCMCABKAIgajYCIAJAIAAoAlAoAgxBBHFFDQAgACgCMEUNAAJ/IAAoAlAoAhQEQCAAKAJQKAIcIAAoAlgoAgwgACgCMGsgACgCMBAaDAELIAAoAlAoAhwgACgCWCgCDCAAKAIwayAAKAIwED4LIQEgACgCUCABNgIcIAAoAlggATYCMAsgACgCWCAAKAJQKAJAQcAAQQAgACgCUCgCCBtqQYABQQAgACgCUCgCBEG//gBGG2pBgAJBACAAKAJQKAIEQcf+AEcEfyAAKAJQKAIEQcL+AEYFQQELQQFxG2o2AiwCQAJAIAAoAjRFBEAgACgCMEUNAQsgACgCVEEERw0BCyAAKAIQDQAgAEF7NgIQCyAAIAAoAhA2AlwLIAAoAlwhASAAQeAAaiQAIAUgATYCCAsgBSgCECIAIAApAwAgBSgCDDUCIH03AwACQAJAAkACQAJAIAUoAghBBWoOBwIDAwMDAAEDCyAFQQA2AhwMAwsgBUEBNgIcDAILIAUoAgwoAhRFBEAgBUEDNgIcDAILCyAFKAIMKAIAQQ0gBSgCCBAUIAVBAjYCHAsgBSgCHCEAIAVBIGokACAACyQBAX8jAEEQayIBIAA2AgwgASABKAIMNgIIIAEoAghBAToADAuXAQEBfyMAQSBrIgMkACADIAA2AhggAyABNgIUIAMgAjcDCCADIAMoAhg2AgQCQAJAIAMpAwhC/////w9YBEAgAygCBCgCFEUNAQsgAygCBCgCAEESQQAQFCADQQA6AB8MAQsgAygCBCADKQMIPgIUIAMoAgQgAygCFDYCECADQQE6AB8LIAMtAB9BAXEhACADQSBqJAAgAAukAgECfyMAQRBrIgEkACABIAA2AgggASABKAIINgIEAkAgASgCBC0ABEEBcQRAIAEgASgCBEEQahC3ATYCAAwBCyABKAIEQRBqIQIjAEEQayIAJAAgACACNgIIAkAgACgCCBBLBEAgAEF+NgIMDAELIAAgACgCCCgCHDYCBCAAKAIEKAI4BEAgACgCCCgCKCAAKAIEKAI4IAAoAggoAiQRBAALIAAoAggoAiggACgCCCgCHCAAKAIIKAIkEQQAIAAoAghBADYCHCAAQQA2AgwLIAAoAgwhAiAAQRBqJAAgASACNgIACwJAIAEoAgAEQCABKAIEKAIAQQ0gASgCABAUIAFBADoADwwBCyABQQE6AA8LIAEtAA9BAXEhACABQRBqJAAgAAuyGAEFfyMAQRBrIgQkACAEIAA2AgggBCAEKAIINgIEIAQoAgRBADYCFCAEKAIEQQA2AhAgBCgCBEEANgIgIAQoAgRBADYCHAJAIAQoAgQtAARBAXEEQCAEKAIEQRBqIQEgBCgCBCgCCCECIwBBMGsiACQAIAAgATYCKCAAIAI2AiQgAEEINgIgIABBcTYCHCAAQQk2AhggAEEANgIUIABBwBI2AhAgAEE4NgIMIABBATYCBAJAAkACQCAAKAIQRQ0AIAAoAhAsAABB+O4ALAAARw0AIAAoAgxBOEYNAQsgAEF6NgIsDAELIAAoAihFBEAgAEF+NgIsDAELIAAoAihBADYCGCAAKAIoKAIgRQRAIAAoAihBBTYCICAAKAIoQQA2AigLIAAoAigoAiRFBEAgACgCKEEGNgIkCyAAKAIkQX9GBEAgAEEGNgIkCwJAIAAoAhxBAEgEQCAAQQA2AgQgAEEAIAAoAhxrNgIcDAELIAAoAhxBD0oEQCAAQQI2AgQgACAAKAIcQRBrNgIcCwsCQAJAIAAoAhhBAUgNACAAKAIYQQlKDQAgACgCIEEIRw0AIAAoAhxBCEgNACAAKAIcQQ9KDQAgACgCJEEASA0AIAAoAiRBCUoNACAAKAIUQQBIDQAgACgCFEEESg0AIAAoAhxBCEcNASAAKAIEQQFGDQELIABBfjYCLAwBCyAAKAIcQQhGBEAgAEEJNgIcCyAAIAAoAigoAihBAUHELSAAKAIoKAIgEQEANgIIIAAoAghFBEAgAEF8NgIsDAELIAAoAiggACgCCDYCHCAAKAIIIAAoAig2AgAgACgCCEEqNgIEIAAoAgggACgCBDYCGCAAKAIIQQA2AhwgACgCCCAAKAIcNgIwIAAoAghBASAAKAIIKAIwdDYCLCAAKAIIIAAoAggoAixBAWs2AjQgACgCCCAAKAIYQQdqNgJQIAAoAghBASAAKAIIKAJQdDYCTCAAKAIIIAAoAggoAkxBAWs2AlQgACgCCCAAKAIIKAJQQQJqQQNuNgJYIAAoAigoAiggACgCCCgCLEECIAAoAigoAiARAQAhASAAKAIIIAE2AjggACgCKCgCKCAAKAIIKAIsQQIgACgCKCgCIBEBACEBIAAoAgggATYCQCAAKAIoKAIoIAAoAggoAkxBAiAAKAIoKAIgEQEAIQEgACgCCCABNgJEIAAoAghBADYCwC0gACgCCEEBIAAoAhhBBmp0NgKcLSAAIAAoAigoAiggACgCCCgCnC1BBCAAKAIoKAIgEQEANgIAIAAoAgggACgCADYCCCAAKAIIIAAoAggoApwtQQJ0NgIMAkACQCAAKAIIKAI4RQ0AIAAoAggoAkBFDQAgACgCCCgCREUNACAAKAIIKAIIDQELIAAoAghBmgU2AgQgACgCKEG42QAoAgA2AhggACgCKBC3ARogAEF8NgIsDAELIAAoAgggACgCACAAKAIIKAKcLUEBdkEBdGo2AqQtIAAoAgggACgCCCgCCCAAKAIIKAKcLUEDbGo2ApgtIAAoAgggACgCJDYChAEgACgCCCAAKAIUNgKIASAAKAIIIAAoAiA6ACQgACgCKCEBIwBBEGsiAyQAIAMgATYCDCADKAIMIQIjAEEQayIBJAAgASACNgIIAkAgASgCCBB5BEAgAUF+NgIMDAELIAEoAghBADYCFCABKAIIQQA2AgggASgCCEEANgIYIAEoAghBAjYCLCABIAEoAggoAhw2AgQgASgCBEEANgIUIAEoAgQgASgCBCgCCDYCECABKAIEKAIYQQBIBEAgASgCBEEAIAEoAgQoAhhrNgIYCyABKAIEIAEoAgQoAhhBAkYEf0E5BUEqQfEAIAEoAgQoAhgbCzYCBAJ/IAEoAgQoAhhBAkYEQEEAQQBBABAaDAELQQBBAEEAED4LIQIgASgCCCACNgIwIAEoAgRBADYCKCABKAIEIQUjAEEQayICJAAgAiAFNgIMIAIoAgwgAigCDEGUAWo2ApgWIAIoAgxB0N8ANgKgFiACKAIMIAIoAgxBiBNqNgKkFiACKAIMQeTfADYCrBYgAigCDCACKAIMQfwUajYCsBYgAigCDEH43wA2ArgWIAIoAgxBADsBuC0gAigCDEEANgK8LSACKAIMEL0BIAJBEGokACABQQA2AgwLIAEoAgwhAiABQRBqJAAgAyACNgIIIAMoAghFBEAgAygCDCgCHCECIwBBEGsiASQAIAEgAjYCDCABKAIMIAEoAgwoAixBAXQ2AjwgASgCDCgCRCABKAIMKAJMQQFrQQF0akEAOwEAIAEoAgwoAkRBACABKAIMKAJMQQFrQQF0EDIgASgCDCABKAIMKAKEAUEMbEGA7wBqLwECNgKAASABKAIMIAEoAgwoAoQBQQxsQYDvAGovAQA2AowBIAEoAgwgASgCDCgChAFBDGxBgO8Aai8BBDYCkAEgASgCDCABKAIMKAKEAUEMbEGA7wBqLwEGNgJ8IAEoAgxBADYCbCABKAIMQQA2AlwgASgCDEEANgJ0IAEoAgxBADYCtC0gASgCDEECNgJ4IAEoAgxBAjYCYCABKAIMQQA2AmggASgCDEEANgJIIAFBEGokAAsgAygCCCEBIANBEGokACAAIAE2AiwLIAAoAiwhASAAQTBqJAAgBCABNgIADAELIAQoAgRBEGohASMAQSBrIgAkACAAIAE2AhggAEFxNgIUIABBwBI2AhAgAEE4NgIMAkACQAJAIAAoAhBFDQAgACgCECwAAEHAEiwAAEcNACAAKAIMQThGDQELIABBejYCHAwBCyAAKAIYRQRAIABBfjYCHAwBCyAAKAIYQQA2AhggACgCGCgCIEUEQCAAKAIYQQU2AiAgACgCGEEANgIoCyAAKAIYKAIkRQRAIAAoAhhBBjYCJAsgACAAKAIYKAIoQQFB0DcgACgCGCgCIBEBADYCBCAAKAIERQRAIABBfDYCHAwBCyAAKAIYIAAoAgQ2AhwgACgCBCAAKAIYNgIAIAAoAgRBADYCOCAAKAIEQbT+ADYCBCAAKAIYIQIgACgCFCEDIwBBIGsiASQAIAEgAjYCGCABIAM2AhQCQCABKAIYEEsEQCABQX42AhwMAQsgASABKAIYKAIcNgIMAkAgASgCFEEASARAIAFBADYCECABQQAgASgCFGs2AhQMAQsgASABKAIUQQR1QQVqNgIQIAEoAhRBMEgEQCABIAEoAhRBD3E2AhQLCwJAIAEoAhRFDQAgASgCFEEITgRAIAEoAhRBD0wNAQsgAUF+NgIcDAELAkAgASgCDCgCOEUNACABKAIMKAIoIAEoAhRGDQAgASgCGCgCKCABKAIMKAI4IAEoAhgoAiQRBAAgASgCDEEANgI4CyABKAIMIAEoAhA2AgwgASgCDCABKAIUNgIoIAEoAhghAiMAQRBrIgMkACADIAI2AggCQCADKAIIEEsEQCADQX42AgwMAQsgAyADKAIIKAIcNgIEIAMoAgRBADYCLCADKAIEQQA2AjAgAygCBEEANgI0IAMoAgghBSMAQRBrIgIkACACIAU2AggCQCACKAIIEEsEQCACQX42AgwMAQsgAiACKAIIKAIcNgIEIAIoAgRBADYCICACKAIIQQA2AhQgAigCCEEANgIIIAIoAghBADYCGCACKAIEKAIMBEAgAigCCCACKAIEKAIMQQFxNgIwCyACKAIEQbT+ADYCBCACKAIEQQA2AgggAigCBEEANgIQIAIoAgRBgIACNgIYIAIoAgRBADYCJCACKAIEQQA2AjwgAigCBEEANgJAIAIoAgQgAigCBEG0CmoiBTYCcCACKAIEIAU2AlQgAigCBCAFNgJQIAIoAgRBATYCxDcgAigCBEF/NgLINyACQQA2AgwLIAIoAgwhBSACQRBqJAAgAyAFNgIMCyADKAIMIQIgA0EQaiQAIAEgAjYCHAsgASgCHCECIAFBIGokACAAIAI2AgggACgCCARAIAAoAhgoAiggACgCBCAAKAIYKAIkEQQAIAAoAhhBADYCHAsgACAAKAIINgIcCyAAKAIcIQEgAEEgaiQAIAQgATYCAAsCQCAEKAIABEAgBCgCBCgCAEENIAQoAgAQFCAEQQA6AA8MAQsgBEEBOgAPCyAELQAPQQFxIQAgBEEQaiQAIAALbwEBfyMAQRBrIgEgADYCCCABIAEoAgg2AgQCQCABKAIELQAEQQFxRQRAIAFBADYCDAwBCyABKAIEKAIIQQNIBEAgAUECNgIMDAELIAEoAgQoAghBB0oEQCABQQE2AgwMAQsgAUEANgIMCyABKAIMCywBAX8jAEEQayIBJAAgASAANgIMIAEgASgCDDYCCCABKAIIEBUgAUEQaiQACzwBAX8jAEEQayIDJAAgAyAAOwEOIAMgATYCCCADIAI2AgRBASADKAIIIAMoAgQQtAEhACADQRBqJAAgAAvBEAECfyMAQSBrIgIkACACIAA2AhggAiABNgIUAkADQAJAIAIoAhgoAnRBhgJJBEAgAigCGBBbAkAgAigCGCgCdEGGAk8NACACKAIUDQAgAkEANgIcDAQLIAIoAhgoAnRFDQELIAJBADYCECACKAIYKAJ0QQNPBEAgAigCGCACKAIYKAJUIAIoAhgoAjggAigCGCgCbEECamotAAAgAigCGCgCSCACKAIYKAJYdHNxNgJIIAIoAhgoAkAgAigCGCgCbCACKAIYKAI0cUEBdGogAigCGCgCRCACKAIYKAJIQQF0ai8BACIAOwEAIAIgAEH//wNxNgIQIAIoAhgoAkQgAigCGCgCSEEBdGogAigCGCgCbDsBAAsgAigCGCACKAIYKAJgNgJ4IAIoAhggAigCGCgCcDYCZCACKAIYQQI2AmACQCACKAIQRQ0AIAIoAhgoAnggAigCGCgCgAFPDQAgAigCGCgCLEGGAmsgAigCGCgCbCACKAIQa0kNACACKAIYIAIoAhAQtQEhACACKAIYIAA2AmACQCACKAIYKAJgQQVLDQAgAigCGCgCiAFBAUcEQCACKAIYKAJgQQNHDQEgAigCGCgCbCACKAIYKAJwa0GAIE0NAQsgAigCGEECNgJgCwsCQAJAIAIoAhgoAnhBA0kNACACKAIYKAJgIAIoAhgoAnhLDQAgAiACKAIYIgAoAmwgACgCdGpBA2s2AgggAiACKAIYKAJ4QQNrOgAHIAIgAigCGCIAKAJsIAAoAmRBf3NqOwEEIAIoAhgiACgCpC0gACgCoC1BAXRqIAIvAQQ7AQAgAi0AByEBIAIoAhgiACgCmC0hAyAAIAAoAqAtIgBBAWo2AqAtIAAgA2ogAToAACACIAIvAQRBAWs7AQQgAigCGCACLQAHQdDdAGotAABBAnRqQZgJaiIAIAAvAQBBAWo7AQAgAigCGEGIE2oCfyACLwEEQYACSQRAIAIvAQQtANBZDAELIAIvAQRBB3ZBgAJqLQDQWQtBAnRqIgAgAC8BAEEBajsBACACIAIoAhgoAqAtIAIoAhgoApwtQQFrRjYCDCACKAIYIgAgACgCdCACKAIYKAJ4QQFrazYCdCACKAIYIgAgACgCeEECazYCeANAIAIoAhgiASgCbEEBaiEAIAEgADYCbCAAIAIoAghNBEAgAigCGCACKAIYKAJUIAIoAhgoAjggAigCGCgCbEECamotAAAgAigCGCgCSCACKAIYKAJYdHNxNgJIIAIoAhgoAkAgAigCGCgCbCACKAIYKAI0cUEBdGogAigCGCgCRCACKAIYKAJIQQF0ai8BACIAOwEAIAIgAEH//wNxNgIQIAIoAhgoAkQgAigCGCgCSEEBdGogAigCGCgCbDsBAAsgAigCGCIBKAJ4QQFrIQAgASAANgJ4IAANAAsgAigCGEEANgJoIAIoAhhBAjYCYCACKAIYIgAgACgCbEEBajYCbCACKAIMBEAgAigCGAJ/IAIoAhgoAlxBAE4EQCACKAIYKAI4IAIoAhgoAlxqDAELQQALIAIoAhgoAmwgAigCGCgCXGtBABAoIAIoAhggAigCGCgCbDYCXCACKAIYKAIAEBwgAigCGCgCACgCEEUEQCACQQA2AhwMBgsLDAELAkAgAigCGCgCaARAIAIgAigCGCIAKAI4IAAoAmxqQQFrLQAAOgADIAIoAhgiACgCpC0gACgCoC1BAXRqQQA7AQAgAi0AAyEBIAIoAhgiACgCmC0hAyAAIAAoAqAtIgBBAWo2AqAtIAAgA2ogAToAACACKAIYIAItAANBAnRqIgAgAC8BlAFBAWo7AZQBIAIgAigCGCgCoC0gAigCGCgCnC1BAWtGNgIMIAIoAgwEQCACKAIYAn8gAigCGCgCXEEATgRAIAIoAhgoAjggAigCGCgCXGoMAQtBAAsgAigCGCgCbCACKAIYKAJca0EAECggAigCGCACKAIYKAJsNgJcIAIoAhgoAgAQHAsgAigCGCIAIAAoAmxBAWo2AmwgAigCGCIAIAAoAnRBAWs2AnQgAigCGCgCACgCEEUEQCACQQA2AhwMBgsMAQsgAigCGEEBNgJoIAIoAhgiACAAKAJsQQFqNgJsIAIoAhgiACAAKAJ0QQFrNgJ0CwsMAQsLIAIoAhgoAmgEQCACIAIoAhgiACgCOCAAKAJsakEBay0AADoAAiACKAIYIgAoAqQtIAAoAqAtQQF0akEAOwEAIAItAAIhASACKAIYIgAoApgtIQMgACAAKAKgLSIAQQFqNgKgLSAAIANqIAE6AAAgAigCGCACLQACQQJ0aiIAIAAvAZQBQQFqOwGUASACIAIoAhgoAqAtIAIoAhgoApwtQQFrRjYCDCACKAIYQQA2AmgLIAIoAhgCfyACKAIYKAJsQQJJBEAgAigCGCgCbAwBC0ECCzYCtC0gAigCFEEERgRAIAIoAhgCfyACKAIYKAJcQQBOBEAgAigCGCgCOCACKAIYKAJcagwBC0EACyACKAIYKAJsIAIoAhgoAlxrQQEQKCACKAIYIAIoAhgoAmw2AlwgAigCGCgCABAcIAIoAhgoAgAoAhBFBEAgAkECNgIcDAILIAJBAzYCHAwBCyACKAIYKAKgLQRAIAIoAhgCfyACKAIYKAJcQQBOBEAgAigCGCgCOCACKAIYKAJcagwBC0EACyACKAIYKAJsIAIoAhgoAlxrQQAQKCACKAIYIAIoAhgoAmw2AlwgAigCGCgCABAcIAIoAhgoAgAoAhBFBEAgAkEANgIcDAILCyACQQE2AhwLIAIoAhwhACACQSBqJAAgAAuVDQECfyMAQSBrIgIkACACIAA2AhggAiABNgIUAkADQAJAIAIoAhgoAnRBhgJJBEAgAigCGBBbAkAgAigCGCgCdEGGAk8NACACKAIUDQAgAkEANgIcDAQLIAIoAhgoAnRFDQELIAJBADYCECACKAIYKAJ0QQNPBEAgAigCGCACKAIYKAJUIAIoAhgoAjggAigCGCgCbEECamotAAAgAigCGCgCSCACKAIYKAJYdHNxNgJIIAIoAhgoAkAgAigCGCgCbCACKAIYKAI0cUEBdGogAigCGCgCRCACKAIYKAJIQQF0ai8BACIAOwEAIAIgAEH//wNxNgIQIAIoAhgoAkQgAigCGCgCSEEBdGogAigCGCgCbDsBAAsCQCACKAIQRQ0AIAIoAhgoAixBhgJrIAIoAhgoAmwgAigCEGtJDQAgAigCGCACKAIQELUBIQAgAigCGCAANgJgCwJAIAIoAhgoAmBBA08EQCACIAIoAhgoAmBBA2s6AAsgAiACKAIYIgAoAmwgACgCcGs7AQggAigCGCIAKAKkLSAAKAKgLUEBdGogAi8BCDsBACACLQALIQEgAigCGCIAKAKYLSEDIAAgACgCoC0iAEEBajYCoC0gACADaiABOgAAIAIgAi8BCEEBazsBCCACKAIYIAItAAtB0N0Aai0AAEECdGpBmAlqIgAgAC8BAEEBajsBACACKAIYQYgTagJ/IAIvAQhBgAJJBEAgAi8BCC0A0FkMAQsgAi8BCEEHdkGAAmotANBZC0ECdGoiACAALwEAQQFqOwEAIAIgAigCGCgCoC0gAigCGCgCnC1BAWtGNgIMIAIoAhgiACAAKAJ0IAIoAhgoAmBrNgJ0AkACQCACKAIYKAJgIAIoAhgoAoABSw0AIAIoAhgoAnRBA0kNACACKAIYIgAgACgCYEEBazYCYANAIAIoAhgiACAAKAJsQQFqNgJsIAIoAhggAigCGCgCVCACKAIYKAI4IAIoAhgoAmxBAmpqLQAAIAIoAhgoAkggAigCGCgCWHRzcTYCSCACKAIYKAJAIAIoAhgoAmwgAigCGCgCNHFBAXRqIAIoAhgoAkQgAigCGCgCSEEBdGovAQAiADsBACACIABB//8DcTYCECACKAIYKAJEIAIoAhgoAkhBAXRqIAIoAhgoAmw7AQAgAigCGCIBKAJgQQFrIQAgASAANgJgIAANAAsgAigCGCIAIAAoAmxBAWo2AmwMAQsgAigCGCIAIAIoAhgoAmAgACgCbGo2AmwgAigCGEEANgJgIAIoAhggAigCGCgCOCACKAIYKAJsai0AADYCSCACKAIYIAIoAhgoAlQgAigCGCgCOCACKAIYKAJsQQFqai0AACACKAIYKAJIIAIoAhgoAlh0c3E2AkgLDAELIAIgAigCGCIAKAI4IAAoAmxqLQAAOgAHIAIoAhgiACgCpC0gACgCoC1BAXRqQQA7AQAgAi0AByEBIAIoAhgiACgCmC0hAyAAIAAoAqAtIgBBAWo2AqAtIAAgA2ogAToAACACKAIYIAItAAdBAnRqIgAgAC8BlAFBAWo7AZQBIAIgAigCGCgCoC0gAigCGCgCnC1BAWtGNgIMIAIoAhgiACAAKAJ0QQFrNgJ0IAIoAhgiACAAKAJsQQFqNgJsCyACKAIMBEAgAigCGAJ/IAIoAhgoAlxBAE4EQCACKAIYKAI4IAIoAhgoAlxqDAELQQALIAIoAhgoAmwgAigCGCgCXGtBABAoIAIoAhggAigCGCgCbDYCXCACKAIYKAIAEBwgAigCGCgCACgCEEUEQCACQQA2AhwMBAsLDAELCyACKAIYAn8gAigCGCgCbEECSQRAIAIoAhgoAmwMAQtBAgs2ArQtIAIoAhRBBEYEQCACKAIYAn8gAigCGCgCXEEATgRAIAIoAhgoAjggAigCGCgCXGoMAQtBAAsgAigCGCgCbCACKAIYKAJca0EBECggAigCGCACKAIYKAJsNgJcIAIoAhgoAgAQHCACKAIYKAIAKAIQRQRAIAJBAjYCHAwCCyACQQM2AhwMAQsgAigCGCgCoC0EQCACKAIYAn8gAigCGCgCXEEATgRAIAIoAhgoAjggAigCGCgCXGoMAQtBAAsgAigCGCgCbCACKAIYKAJca0EAECggAigCGCACKAIYKAJsNgJcIAIoAhgoAgAQHCACKAIYKAIAKAIQRQRAIAJBADYCHAwCCwsgAkEBNgIcCyACKAIcIQAgAkEgaiQAIAALBgBBtJsBCykBAX8jAEEQayICJAAgAiAANgIMIAIgATYCCCACKAIIEBUgAkEQaiQACzoBAX8jAEEQayIDJAAgAyAANgIMIAMgATYCCCADIAI2AgQgAygCCCADKAIEbBAYIQAgA0EQaiQAIAALzgUBAX8jAEHQAGsiBSQAIAUgADYCRCAFIAE2AkAgBSACNgI8IAUgAzcDMCAFIAQ2AiwgBSAFKAJANgIoAkACQAJAAkACQAJAAkACQAJAIAUoAiwODwABAgMFBgcHBwcHBwcHBAcLAn8gBSgCRCEBIAUoAighAiMAQeAAayIAJAAgACABNgJYIAAgAjYCVCAAIAAoAlggAEHIAGpCDBAuIgM3AwgCQCADQgBTBEAgACgCVCAAKAJYEBcgAEF/NgJcDAELIAApAwhCDFIEQCAAKAJUQRFBABAUIABBfzYCXAwBCyAAKAJUIABByABqIABByABqQgxBABB9IAAoAlggAEEQahA4QQBIBEAgAEEANgJcDAELIAAoAjggAEEGaiAAQQRqEIEBAkAgAC0AUyAAKAI8QRh2Rg0AIAAtAFMgAC8BBkEIdkYNACAAKAJUQRtBABAUIABBfzYCXAwBCyAAQQA2AlwLIAAoAlwhASAAQeAAaiQAIAFBAEgLBEAgBUJ/NwNIDAgLIAVCADcDSAwHCyAFIAUoAkQgBSgCPCAFKQMwEC4iAzcDICADQgBTBEAgBSgCKCAFKAJEEBcgBUJ/NwNIDAcLIAUoAkAgBSgCPCAFKAI8IAUpAyBBABB9IAUgBSkDIDcDSAwGCyAFQgA3A0gMBQsgBSAFKAI8NgIcIAUoAhxBADsBMiAFKAIcIgAgACkDAEKAAYQ3AwAgBSgCHCkDAEIIg0IAUgRAIAUoAhwiACAAKQMgQgx9NwMgCyAFQgA3A0gMBAsgBUF/NgIUIAVBBTYCECAFQQQ2AgwgBUEDNgIIIAVBAjYCBCAFQQE2AgAgBUEAIAUQNjcDSAwDCyAFIAUoAiggBSgCPCAFKQMwEEI3A0gMAgsgBSgCKBC+ASAFQgA3A0gMAQsgBSgCKEESQQAQFCAFQn83A0gLIAUpA0ghAyAFQdAAaiQAIAMLBwAgAC8BMAvuAgEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFIAM2AgwgBSAENgIIAkACQAJAIAUoAghFDQAgBSgCFEUNACAFLwESQQFGDQELIAUoAhhBCGpBEkEAEBQgBUEANgIcDAELIAUoAgxBAXEEQCAFKAIYQQhqQRhBABAUIAVBADYCHAwBCyAFQRgQGCIANgIEIABFBEAgBSgCGEEIakEOQQAQFCAFQQA2AhwMAQsjAEEQayIAIAUoAgQ2AgwgACgCDEEANgIAIAAoAgxBADYCBCAAKAIMQQA2AgggBSgCBEH4rNGRATYCDCAFKAIEQYnPlZoCNgIQIAUoAgRBkPHZogM2AhQgBSgCBEEAIAUoAgggBSgCCBArrUEBEH0gBSAFKAIYIAUoAhRBAyAFKAIEEGYiADYCACAARQRAIAUoAgQQvgEgBUEANgIcDAELIAUgBSgCADYCHAsgBSgCHCEAIAVBIGokACAAC70YAQJ/IwBB8ABrIgQkACAEIAA2AmQgBCABNgJgIAQgAjcDWCAEIAM2AlQgBCAEKAJkNgJQAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEKAJUDhQGBwIMBAUKDwADCRELEA4IEgESDRILQQBCAEEAIAQoAlAQTSEAIAQoAlAgADYCFCAARQRAIARCfzcDaAwTCyAEKAJQKAIUQgA3AzggBCgCUCgCFEIANwNAIARCADcDaAwSCyAEKAJQKAIQIQEgBCkDWCECIAQoAlAhAyMAQUBqIgAkACAAIAE2AjggACACNwMwIAAgAzYCLAJAIAApAzBQBEAgAEEAQgBBASAAKAIsEE02AjwMAQsgACkDMCAAKAI4KQMwVgRAIAAoAixBEkEAEBQgAEEANgI8DAELIAAoAjgoAigEQCAAKAIsQR1BABAUIABBADYCPAwBCyAAIAAoAjggACkDMBC/ATcDICAAIAApAzAgACgCOCgCBCAAKQMgp0EDdGopAwB9NwMYIAApAxhQBEAgACAAKQMgQgF9NwMgIAAgACgCOCgCACAAKQMgp0EEdGopAwg3AxgLIAAgACgCOCgCACAAKQMgp0EEdGopAwggACkDGH03AxAgACkDECAAKQMwVgRAIAAoAixBHEEAEBQgAEEANgI8DAELIAAgACgCOCgCACAAKQMgQgF8QQAgACgCLBBNIgE2AgwgAUUEQCAAQQA2AjwMAQsgACgCDCgCACAAKAIMKQMIQgF9p0EEdGogACkDGDcDCCAAKAIMKAIEIAAoAgwpAwinQQN0aiAAKQMwNwMAIAAoAgwgACkDMDcDMCAAKAIMAn4gACgCOCkDGCAAKAIMKQMIQgF9VARAIAAoAjgpAxgMAQsgACgCDCkDCEIBfQs3AxggACgCOCAAKAIMNgIoIAAoAgwgACgCODYCKCAAKAI4IAAoAgwpAwg3AyAgACgCDCAAKQMgQgF8NwMgIAAgACgCDDYCPAsgACgCPCEBIABBQGskACABIQAgBCgCUCAANgIUIABFBEAgBEJ/NwNoDBILIAQoAlAoAhQgBCkDWDcDOCAEKAJQKAIUIAQoAlAoAhQpAwg3A0AgBEIANwNoDBELIARCADcDaAwQCyAEKAJQKAIQEDMgBCgCUCAEKAJQKAIUNgIQIAQoAlBBADYCFCAEQgA3A2gMDwsgBCAEKAJQIAQoAmAgBCkDWBBCNwNoDA4LIAQoAlAoAhAQMyAEKAJQKAIUEDMgBCgCUBAVIARCADcDaAwNCyAEKAJQKAIQQgA3AzggBCgCUCgCEEIANwNAIARCADcDaAwMCyAEKQNYQv///////////wBWBEAgBCgCUEESQQAQFCAEQn83A2gMDAsgBCgCUCgCECEBIAQoAmAhAyAEKQNYIQIjAEFAaiIAJAAgACABNgI0IAAgAzYCMCAAIAI3AyggAAJ+IAApAyggACgCNCkDMCAAKAI0KQM4fVQEQCAAKQMoDAELIAAoAjQpAzAgACgCNCkDOH0LNwMoAkAgACkDKFAEQCAAQgA3AzgMAQsgACkDKEL///////////8AVgRAIABCfzcDOAwBCyAAIAAoAjQpA0A3AxggACAAKAI0KQM4IAAoAjQoAgQgACkDGKdBA3RqKQMAfTcDECAAQgA3AyADQCAAKQMgIAApAyhUBEAgAAJ+IAApAyggACkDIH0gACgCNCgCACAAKQMYp0EEdGopAwggACkDEH1UBEAgACkDKCAAKQMgfQwBCyAAKAI0KAIAIAApAxinQQR0aikDCCAAKQMQfQs3AwggACgCMCAAKQMgp2ogACgCNCgCACAAKQMYp0EEdGooAgAgACkDEKdqIAApAwinEBkaIAApAwggACgCNCgCACAAKQMYp0EEdGopAwggACkDEH1RBEAgACAAKQMYQgF8NwMYCyAAIAApAwggACkDIHw3AyAgAEIANwMQDAELCyAAKAI0IgEgACkDICABKQM4fDcDOCAAKAI0IAApAxg3A0AgACAAKQMgNwM4CyAAKQM4IQIgAEFAayQAIAQgAjcDaAwLCyAEQQBCAEEAIAQoAlAQTTYCTCAEKAJMRQRAIARCfzcDaAwLCyAEKAJQKAIQEDMgBCgCUCAEKAJMNgIQIARCADcDaAwKCyAEKAJQKAIUEDMgBCgCUEEANgIUIARCADcDaAwJCyAEIAQoAlAoAhAgBCgCYCAEKQNYIAQoAlAQwAGsNwNoDAgLIAQgBCgCUCgCFCAEKAJgIAQpA1ggBCgCUBDAAaw3A2gMBwsgBCkDWEI4VARAIAQoAlBBEkEAEBQgBEJ/NwNoDAcLIAQgBCgCYDYCSCAEKAJIEDsgBCgCSCAEKAJQKAIMNgIoIAQoAkggBCgCUCgCECkDMDcDGCAEKAJIIAQoAkgpAxg3AyAgBCgCSEEAOwEwIAQoAkhBADsBMiAEKAJIQtwBNwMAIARCODcDaAwGCyAEKAJQIAQoAmAoAgA2AgwgBEIANwNoDAULIARBfzYCQCAEQRM2AjwgBEELNgI4IARBDTYCNCAEQQw2AjAgBEEKNgIsIARBDzYCKCAEQQk2AiQgBEERNgIgIARBCDYCHCAEQQc2AhggBEEGNgIUIARBBTYCECAEQQQ2AgwgBEEDNgIIIARBAjYCBCAEQQE2AgAgBEEAIAQQNjcDaAwECyAEKAJQKAIQKQM4Qv///////////wBWBEAgBCgCUEEeQT0QFCAEQn83A2gMBAsgBCAEKAJQKAIQKQM4NwNoDAMLIAQoAlAoAhQpAzhC////////////AFYEQCAEKAJQQR5BPRAUIARCfzcDaAwDCyAEIAQoAlAoAhQpAzg3A2gMAgsgBCkDWEL///////////8AVgRAIAQoAlBBEkEAEBQgBEJ/NwNoDAILIAQoAlAoAhQhASAEKAJgIQMgBCkDWCECIAQoAlAhBSMAQeAAayIAJAAgACABNgJUIAAgAzYCUCAAIAI3A0ggACAFNgJEAkAgACkDSCAAKAJUKQM4IAApA0h8Qv//A3xWBEAgACgCREESQQAQFCAAQn83A1gMAQsgACAAKAJUKAIEIAAoAlQpAwinQQN0aikDADcDICAAKQMgIAAoAlQpAzggACkDSHxUBEAgACAAKAJUKQMIIAApA0ggACkDICAAKAJUKQM4fX1C//8DfEIQiHw3AxggACkDGCAAKAJUKQMQVgRAIAAgACgCVCkDEDcDECAAKQMQUARAIABCEDcDEAsDQCAAKQMQIAApAxhUBEAgACAAKQMQQgGGNwMQDAELCyAAKAJUIAApAxAgACgCRBDBAUEBcUUEQCAAKAJEQQ5BABAUIABCfzcDWAwDCwsDQCAAKAJUKQMIIAApAxhUBEBBgIAEEBghASAAKAJUKAIAIAAoAlQpAwinQQR0aiABNgIAIAEEQCAAKAJUKAIAIAAoAlQpAwinQQR0akKAgAQ3AwggACgCVCIBIAEpAwhCAXw3AwggACAAKQMgQoCABHw3AyAgACgCVCgCBCAAKAJUKQMIp0EDdGogACkDIDcDAAwCBSAAKAJEQQ5BABAUIABCfzcDWAwECwALCwsgACAAKAJUKQNANwMwIAAgACgCVCkDOCAAKAJUKAIEIAApAzCnQQN0aikDAH03AyggAEIANwM4A0AgACkDOCAAKQNIVARAIAACfiAAKQNIIAApAzh9IAAoAlQoAgAgACkDMKdBBHRqKQMIIAApAyh9VARAIAApA0ggACkDOH0MAQsgACgCVCgCACAAKQMwp0EEdGopAwggACkDKH0LNwMIIAAoAlQoAgAgACkDMKdBBHRqKAIAIAApAyinaiAAKAJQIAApAzinaiAAKQMIpxAZGiAAKQMIIAAoAlQoAgAgACkDMKdBBHRqKQMIIAApAyh9UQRAIAAgACkDMEIBfDcDMAsgACAAKQMIIAApAzh8NwM4IABCADcDKAwBCwsgACgCVCIBIAApAzggASkDOHw3AzggACgCVCAAKQMwNwNAIAAoAlQpAzggACgCVCkDMFYEQCAAKAJUIAAoAlQpAzg3AzALIAAgACkDODcDWAsgACkDWCECIABB4ABqJAAgBCACNwNoDAELIAQoAlBBHEEAEBQgBEJ/NwNoCyAEKQNoIQIgBEHwAGokACACCwcAIAAoAiALBwAgACgCAAsIAEEBQTgQdgsLhY0BJABBgAgLgQxpbnN1ZmZpY2llbnQgbWVtb3J5AG5lZWQgZGljdGlvbmFyeQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AFppcCBhcmNoaXZlIGluY29uc2lzdGVudABJbnZhbGlkIGFyZ3VtZW50AGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AbmFuAC9kZXYvdXJhbmRvbQBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAaW5mAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAcmIAcitiAHJ3YQAlcy5YWFhYWFgATkFOAElORgBBRQAxLjIuMTEAL3Byb2Mvc2VsZi9mZC8ALgAobnVsbCkAOiAAUEsGBwBQSwYGAFBLBQYAUEsDBABQSwECAAAAAAAAUgUAANkHAACsCAAAkQgAAIIFAACkBQAAjQUAAMUFAABvCAAANAcAAOkEAAAkBwAAAwcAAK8FAADhBgAAywgAADcIAABBBwAAWgQAALkGAABzBQAAQQQAAFcHAABYCAAAFwgAAKcGAADiCAAA9wgAAP8HAADLBgAAaAUAAMEHAAAgAEGYFAsRAQAAAAEAAAABAAAAAQAAAAEAQbwUCwkBAAAAAQAAAAIAQegUCwEBAEGIFQsBAQBBlBUL+0OWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAAQTEbGYJiNjLDUy0rBMVsZEX0d32Gp1pWx5ZBTwiK2chJu8LRiujv+svZ9OMMT7WsTX6utY4tg57PHJiHURLCShAj2VPTcPR4kkHvYVXXri4U5rU317WYHJaEgwVZmBuCGKkAm9v6LbCayzapXV135hxsbP/fP0HUng5azaIkhJXjFZ+MIEayp2F3qb6m4ejx59Dz6CSD3sNlssXaqq5dXeufRkQozGtvaf1wdq5rMTnvWiogLAkHC204HBLzNkbfsgddxnFUcO0wZWv09/Mqu7bCMaJ1kRyJNKAHkPu8nxe6jYQOed6pJTjvsjz/efNzvkjoan0bxUE8Kt5YBU958ER+YumHLU/CxhxU2wGKFZRAuw6Ng+gjpsLZOL8NxaA4TPS7IY+nlgrOlo0TCQDMXEgx10WLYvpuylPhd1Rdu7oVbKCj1j+NiJcOlpFQmNfeEanMx9L64eyTy/r1XNdich3meWvetVRAn4RPWVgSDhYZIxUP2nA4JJtBIz2na/1l5lrmfCUJy1dkONBOo66RAeKfihghzKczYP28Kq/hJK3u0D+0LYMSn2yyCYarJEjJ6hVT0ClGfvtod2Xi9nk/L7dIJDZ0GwkdNSoSBPK8U0uzjUhScN5leTHvfmD+8+bnv8L9/nyR0NU9oMvM+jaKg7sHkZp4VLyxOWWnqEuYgzsKqZgiyfq1CYjLrhBPXe9fDmz0Rs0/2W2MDsJ0QxJa8wIjQerBcGzBgEF32EfXNpcG5i2OxbUApYSEG7waikFxW7taaJjod0PZ2WxaHk8tFV9+NgycLRsn3RwAPhIAmLlTMYOgkGKui9FTtZIWxfTdV/TvxJSnwu/Vltn26bwHrqiNHLdr3jGcKu8qhe15a8qsSHDTbxtd+C4qRuHhNt5moAfFf2NU6FQiZfNN5fOyAqTCqRtnkYQwJqCfKbiuxeT5n979Oszz1nv96M+8a6mA/VqymT4Jn7J/OISrsCQcLPEVBzUyRioec3cxB7ThcEj10GtRNoNGeneyXWNO1/rLD+bh0sy1zPmNhNfgShKWrwsjjbbIcKCdiUG7hEZdIwMHbDgaxD8VMYUODihCmE9nA6lUfsD6eVWBy2JMH8U4gV70I5idpw6z3JYVqhsAVOVaMU/8mWJi19hTec4XT+FJVn76UJUt13vUHMxiE4qNLVK7ljSR6Lsf0NmgBuzzfl6twmVHbpFIbC+gU3XoNhI6qQcJI2pUJAgrZT8R5HmnlqVIvI9mG5GkJyqKveC8y/KhjdDrYt79wCPv5tm94bwU/NCnDT+DiiZ+spE/uSTQcPgVy2k7RuZCenf9W7VrZdz0Wn7FNwlT7nY4SPexrgm48J8SoTPMP4py/SSTAAAAADdqwgFu1IQDWb5GAtyoCQfrwssGsnyNBIUWTwW4URMOjzvRD9aFlw3h71UMZPkaCVOT2AgKLZ4KPUdcC3CjJhxHyeQdHneiHykdYB6sCy8bm2HtGsLfqxj1tWkZyPI1Ev+Y9xOmJrERkUxzEBRaPBUjMP4Ueo64Fk3kehfgRk041yyPOY6SyTu5+As6PO5EPwuEhj5SOsA8ZVACPVgXXjZvfZw3NsPaNQGpGDSEv1cxs9WVMOpr0zLdAREzkOVrJKePqSX+Me8nyVstJkxNYiN7J6AiIpnmIBXzJCEotHgqH966K0Zg/ClxCj4o9BxxLcN2syyayPUuraI3L8CNmnD351hxrlkec5kz3HIcJZN3K09RdnLxF3RFm9V1eNyJfk+2S38WCA19IWLPfKR0gHmTHkJ4yqAEev3KxnuwLrxsh0R+bd76OG/pkPpubIa1a1vsd2oCUjFoNTjzaQh/r2I/FW1jZqsrYVHB6WDU16Zl471kZLoDImaNaeBnIMvXSBehFUlOH1NLeXWRSvxj3k/LCRxOkrdaTKXdmE2YmsRGr/AGR/ZOQEXBJIJERDLNQXNYD0Aq5klCHYyLQ1Bo8VRnAjNVPrx1VwnWt1aMwPhTu6o6UuIUfFDVfr5R6DniWt9TIFuG7WZZsYekWDSR610D+ylcWkVvXm0vrV+AGzXht3H34O7PseLZpXPjXLM85mvZ/ucyZ7jlBQ165DhKJu8PIOTuVp6i7GH0YO3k4i/o04jt6Yo2q+u9XGnq8LgT/cfS0fyebJf+qQZV/ywQGvobetj7QsSe+XWuXPhI6QDzf4PC8iY9hPARV0bxlEEJ9KMry/X6lY33zf9P9mBdeNlXN7rYDon82jnjPtu89XHei5+z39Ih9d3lSzfc2Axr1+9mqda22O/UgbIt1QSkYtAzzqDRanDm010aJNIQ/l7FJ5ScxH4q2sZJQBjHzFZXwvs8lcOigtPBlegRwKivTcufxY/KxnvJyPERC8l0B0TMQ22GzRrTwM8tuQLOQJavkXf8bZAuQiuSGSjpk5w+pparVGSX8uoilcWA4JT4x7yfz61+npYTOJyhefqdJG+1mBMFd5lKuzGbfdHzmjA1iY0HX0uMXuENjmmLz4/snYCK2/dCi4JJBIm1I8aIiGSag78OWILmsB6A0drcgVTMk4RjplGFOhgXhw1y1Yag0OKpl7ogqM4EZqr5bqSrfHjrrksSKa8SrG+tJcatrBiB8acv6zOmdlV1pEE/t6XEKfig80M6oar9fKOdl76i0HPEtecZBrS+p0C2ic2CtwzbzbI7sQ+zYg9JsVVli7BoIte7X0gVugb2U7gxnJG5tIrevIPgHL3aXlq/7TSYvgAAAABlZ7y4i8gJqu6vtRJXl2KPMvDeN9xfayW5ONed7yi0xYpPCH1k4L1vAYcB17i/1krd2GryM3ff4FYQY1ifVxlQ+jCl6BSfEPpx+KxCyMB7362nx2dDCHJ1Jm/OzXB/rZUVGBEt+7ekP57QGIcn6M8aQo9zoqwgxrDJR3oIPq8yoFvIjhi1ZzsK0ACHsmk4UC8MX+yX4vBZhYeX5T3Rh4ZltOA63VpPj88/KDN3hhDk6uN3WFIN2O1AaL9R+KH4K/DEn5dIKjAiWk9XnuL2b0l/kwj1x32nQNUYwPxtTtCfNSu3I43FGJafoH8qJxlH/bp8IEECko/0EPfoSKg9WBSbWD+oI7aQHTHT96GJas92FA+oyqzhB3++hGDDBtJwoF63FxzmWbip9DzfFUyF58LR4IB+aQ4vy3trSHfDog8Ny8dosXMpxwRhTKC42fWYb0SQ/9P8flBm7hs32lZNJ7kOKEAFtsbvsKSjiAwcGrDbgX/XZzmReNIr9B9ukwP3JjtmkJqDiD8vke1YkylUYES0MQf4DN+oTR66z/Gm7N+S/om4LkZnF5tUAnAn7LtI8HHeL0zJMID521XnRWOcoD9r+ceD0xdoNsFyD4p5yzdd5K5Q4VxA/1ROJZjo9nOIi64W7zcW+ECCBJ0nPrwkH+khQXhVma/X4IvKsFwzO7ZZ7V7R5VWwflBH1Rns/2whO2IJRofa5+kyyIKOjnDUnu0osflRkF9W5II6MVg6gwmPp+ZuMx8IwYYNbaY6taThQL3BhvwFLylJF0pO9a/zdiIylhGeini+K5gd2ZcgS8n0eC6uSMDAAf3SpWZBahxelvd5OSpPl5afXfLxI+UFGWtNYH7X9Y7RYufrtt5fUo4JwjfptXrZRgBovCG80Oox34iPVmMwYfnWIgSeapq9pr0H2MEBvzZutK1TCQgVmk5yHf8pzqURhnu3dOHHD83ZEJKovqwqRhEZOCN2pYB1ZsbYEAF6YP6uz3KbyXPKIvGkV0eWGO+pOa39zF4RRQbuTXZjifHOjSZE3OhB+GRReS/5NB6TQdqxJlO/1prr6cb5s4yhRQtiDvAZB2lMob5RmzzbNieENZmSllD+Li6ZuVQm/N7onhJxXYx3FuE0zi42qatJihFF5j8DIIGDu3aR4OMT9lxb/VnpSZg+VfEhBoJsRGE+1KrOi8bPqTd+OEF/1l0mw26ziXZ81u7KxG/WHVkKsaHh5B4U84F5qEvXacsTsg53q1yhwrk5xn4BgP6pnOWZFSQLNqA2blEcjqcWZobCcdo+LN5vLEm505TwgQQJlea4sXtJDaMeLrEbSD7SQy1ZbvvD9tvpppFnUR+psMx6zgx0lGG5ZvEGBd4AAAAAdwcwlu4OYSyZCVG6B23EGXBq9I/pY6U1nmSVow7biDJ53Lik4NXpHpfS2YgJtkwrfrF8vee4LQeQvx2RHbcQZGqwIPLzuXFIhL5B3hra1H1t3eTr9NS1UYPThccTbJhWZGuowP1i+XqKZcnsFAFcT2MGbNn6Dz1jjQgN9TtuIMhMaRBe1WBB5KJncXI8A+TRSwTUR9INhf2lCrVrNbWo+kKymGzbu8nWrLz5QDLYbONF31x13NYNz6vRPVkm2TCsUd4AOsjXUYC/0GEWIbT0tVazxCPPupWZuL2lDygCuJ5fBYgIxgzZsrEL6SQvb3yHWGhMEcFhHau2Zi09dtxBkAHbcQaY0iC879UQKnGxhYkGtrUfn7/kpei41DN4B8miDwD5NJYJqI7hDpgYf2oNuwhtPS2RZGyX5mNcAWtrUfQcbGFihWUw2PJiAE5sBpXtGwGle4II9MH1D8RXZbDZxhK36VCLvrjq/LmIfGLdHd8V2i1JjNN88/vUTGVNsmFYOrVRzqO8AHTUuzDiSt+lQT3Yldek0cRt09b0+0Np6Wo0btn8rWeIRtpguNBEBC1zMwMd5aoKTF/dDXzJUAVxPCcCQaq+CxAQyQwghldotSUgb4WzuWbUCc5h5J9e3vkOKdnJmLDQmCLH16i0WbM9Fy60DYG3vVw7wLpsre24gyCav7O2A7biDHSx0prq1Uc5ndJ3rwTbJhVz3BaD42MLEpRkO4QNbWo+empaqOQOzwuTCf+dCgCuJ30HnrHwD5NEhwij0h4B8mhpBsL+92JXXYBlZ8sZbDZxbmsG5/7UG3aJ0yvgENp6WmfdSsz5ud9vjr7v+Re3vkNgsI7V1taj6KHRk3442MLET9/yUtG7Z/GmvFdnP7UG3UiyNkvYDSvarwobTDYDSvZBBHpg32Dvw6hn31Uxbo7vRmm+ecths4y8ZoMaJW/SoFJo4jbMDHeVuwtHAyICFrlVBSYvxbo7vrK9CygrtFqSXLNqBMLX/6e10M8xLNmei1verh2bZMKw7GPyJnVqo5wCbZMKnAkGqesONj9yB2eFBQBXE5W/SoLiuHoUe7Errgy2GziS0o6b5dW+DXzc77cL298hhtPS1PHU4kJo3bP4H9qDboG+Fs32uSZbb7B34Ri3R3eICFrm/w9qcGYGO8oRAQtcj2We//hirmlha//TFmzPRaAK4njXDdLuTgSDVDkDs8KnZyZh0GAW90lpR00+bnfbrtFqStnWWtxA3wtmN9g78Km8rlPeu57FR7LPfzC1/+m9vfIcyrrCilOzkzAktKOmutA2Bc3XBpNU3lcpI9lnv7Nmei7EYUq4XWgbAipvK5S0C743wwyOoVoF3xstAu+NAAAAABkbMUEyNmKCKy1Tw2RsxQR9d/RFVlqnhk9BlsfI2YoI0cK7Sfrv6Irj9NnLrLVPDLWufk2egy2Oh5gcz0rCElFT2SMQePRw02HvQZIurtdVN7XmFByYtdcFg4SWghuYWZsAqRiwLfrbqTbLmuZ3XV3/bGwc1EE/381aDp6VhCSijJ8V46eyRiC+qXdh8ejhpujz0OfD3oMk2sWyZV1drqpERp/rb2vMKHZw/Wk5MWuuICpa7wsHCSwSHDht30Y288ZdB7LtcFRx9GtlMLsq8/eiMcK2iRyRdZAHoDQXn7z7DoSNuiWp3nk8su84c/N5/2roSL5BxRt9WN4qPPB5TwXpYn5Ewk8th9tUHMaUFYoBjQ67QKYj6IO/ONnCOKDFDSG79EwKlqePE42WzlzMAAlF1zFIbvpii3fhU8q6u11Uo6BsFYiNP9aRlg6X3teYUMfMqRHs4frS9frLk3Ji11xreeYdQFS13llPhJ8WDhJYDxUjGSQ4cNo9I0GbZf1rp3zmWuZXywklTtA4ZAGRrqMYip/iM6fMISq8/WCtJOGvtD/Q7p8Sgy2GCbJsyUgkq9BTFer7fkYp4mV3aC8/efY2JEi3HQkbdAQSKjVLU7zyUkiNs3ll3nBgfu8x5+bz/v79wr/V0JF8zMugPYOKNvqakQe7sbxUeKinZTk7g5hLIpipCgm1+skQrsuIX+9dT0b0bA5t2T/NdMIOjPNaEkPqQSMCwWxwwdh3QYCXNtdHji3mBqUAtcW8G4SEcUGKGmhau1tDd+iYWmzZ2RUtTx4MNn5fJxstnD4AHN25mAASoIMxU4uuYpCStVPR3fTFFsTv9FfvwqeU9tmW1a4HvOm3HI2onDHea4Uq7yrKa3nt03BIrPhdG2/hRiouZt424X/FB6BU6FRjTfNlIgKy8+UbqcKkMISRZymfoCbkxa64/d6f+dbzzDrP6P17gKlrvJmyWv2ynwk+q4Q4fywcJLA1BxXxHipGMgcxd3NIcOG0UWvQ9XpGgzZjXbJ3y/rXTtLh5g/5zLXM4NeEja+WEkq2jSMLnaBwyIS7QYkDI11GGjhsBzEVP8QoDg6FZ0+YQn5UqQNVefrATGLLgYE4xR+YI/Resw6nnaoVltzlVAAb/E8xWtdiYpnOeVPYSeFPF1D6flZ71y2VYswc1C2NihM0lrtSH7vokQag2dBefvPsR2XCrWxIkW51U6AvOhI26CMJB6kIJFRqET9lK5aneeSPvEilpJEbZr2KKifyy7zg69CNocD93mLZ5u8jFLzhvQ2n0PwmioM/P5GyfnDQJLlpyxX4QuZGO1v9d3rcZWu1xX5a9O5TCTf3SDh2uAmusaESn/CKP8wzkyT9cgAAAAABwmo3A4TUbgJGvlkHCajcBsvC6wSNfLIFTxaFDhNRuA/RO48Nl4XWDFXv4Qka+WQI2JNTCp4tCgtcRz0cJqNwHeTJRx+idx4eYB0pGy8LrBrtYZsYq9/CGWm19RI18sgT95j/EbEmphBzTJEVPFoUFP4wIxa4jnoXeuRNOE1G4DmPLNc7yZKOOgv4uT9E7jw+hoQLPMA6Uj0CUGU2XhdYN5x9bzXawzY0GKkBMVe/hDCV1bMy02vqMxEB3SRr5ZAlqY+nJ+8x/iYtW8kjYk1MIqAneyDmmSIhJPMVKni0KCu63h8p/GBGKD4KcS1xHPQss3bDLvXImi83oq1wmo3AcVjn93MeWa5y3DOZd5MlHHZRTyt0F/FyddWbRX6J3Hh/S7ZPfQ0IFnzPYiF5gHSkeEIek3oEoMp7xsr9bLwusG1+RIdvOPrebvqQ6Wu1hmxqd+xbaDFSAmnzODVir38IY20VP2Erq2Zg6cFRZabX1GRkveNmIgO6Z+BpjUjXyyBJFaEXS1MfTkqRdXlP3mP8ThwJy0xat5JNmN2lRsSamEcG8K9FQE72RIIkwUHNMkRAD1hzQknmKkOLjB1U8WhQVTMCZ1d1vD5Wt9YJU/jAjFI6qrtQfBTiUb5+1VriOehbIFPfWWbthlikh7Fd65E0XCn7A15vRVpfrS9t4TUbgOD3cbfisc/u43Ol2eY8s1zn/tlr5bhnMuR6DQXvJko47uQgD+yinlbtYPRh6C/i5OntiNPrqzaK6mlcvf0TuPD80dLH/pdsnv9VBqn6GhAs+9h6G/mexEL4XK518wDpSPLCg3/whD0m8UZXEfQJQZT1yyuj942V+vZP/83ZeF1g2Lo3V9r8iQ7bPuM53nH1vN+zn4vd9SHS3DdL5ddrDNjWqWbv1O/YttUtsoHQYqQE0aDOM9PmcGrSJBpdxV7+EMSclCfG2ip+xxhAScJXVszDlTz7wdOCosAR6JXLTa+oyo/Fn8jJe8bJCxHxzEQHdM2GbUPPwNMazgK5LZGvlkCQbfx3kitCLpPpKBmWpj6cl2RUq5Ui6vKU4IDFn7zH+J5+rc+cOBOWnfp5oZi1bySZdwUTmzG7Sprz0X2NiTUwjEtfB44N4V6Pz4tpioCd7ItC99uJBEmCiMYjtYOaZIiCWA6/gB6w5oHc2tGEk8xUhVGmY4cXGDqG1XINqeLQoKggupeqZgTOq6Ru+a7reHyvKRJLrW+sEqytxiWn8YEYpjPrL6R1VXaltz9BoPgpxKE6Q/OjfP2qor6XnbXEc9C0BhnntkCnvreCzYmyzdsMsw+xO7FJD2Kwi2VVu9ciaLoVSF+4U/YGuZGcMbzeirS9HOCDv1pe2r6YNO0AAAAAuLxnZaoJyIsSta/uj2KXVzfe8DIla1/cndc4ucW0KO99CE+Kb73gZNcBhwFK1r+48mrY3eDfdzNYYxBWUBlXn+ilMPr6EJ8UQqz4cd97wMhnx6etdXIIQ83ObyaVrX9wLREYFT+kt/uHGNCeGs/oJ6Jzj0KwxiCsCHpHyaAyrz4YjshbCjtntbKHANAvUDhpl+xfDIVZ8OI95ZeHZYaH0d064LTPj09adzMoP+rkEIZSWHfjQO3YDfhRv2jwK/ihSJefxFoiMCrinldPf0lv9sf1CJPVQKd9bfzAGDWf0E6NI7crn5YYxScqf6C6/UcZAkEgfBD0j5KoSOj3mxRYPSOoP1gxHZC2iaH30xR2z2qsyqgPvn8H4QbDYIReoHDS5hwXt/SpuFlMFd880cLnhWl+gOB7yy8Ow3dIa8sND6JzsWjHYQTHKdm4oExEb5j1/NP/kO5mUH5W2jcbDrknTbYFQCiksO/GHAyIo4HbsBo5Z9d/K9J4kZNuH/Q7JvcDg5qQZpEvP4gpk1jttERgVAz4BzEeTajfpvHPuv6S3+xGLriJVJsXZ+wncAJx8Ei7yUwv3tv5gDBjRedVaz+gnNODx/nBNmgXeYoPcuRdN8tc4VCuTlT/QPbomCWui4hzFjfvFgSCQPi8PiedIekfJJlVeEGL4NevM1ywyu1ZtjtV5dFeR1B+sP/sGdViOyFs2odGCcgy6edwjo6CKO2e1JBR+bGC5FZfOlgxOqePCYMfM27mDYbBCLU6pm29QOGkBfyGwRdJKS+v9U5KMiJ284qeEZaYK754IJfZHXj0yUvASK4u0v0BwGpBZqX3ll4cTyo5eV2flpflI/HyTWsZBfXXfmDnYtGOX96268IJjlJ6tek3aABG2dC8IbyI3zHqMGNWjyLW+WGaap4EB72mvb8BwdittG42FQgJUx1yTpqlzin/t3uGEQ/H4XSSENnNKqy+qDgZEUaApXYj2MZmdWB6ARByz67+ynPJm1ek8SLvGJZH/a05qUURXsx2Te4GzvGJY9xEJo1k+EHo+S95UUGTHjRTJrHa65rWv7P5xukLRaGMGfAOYqFMaQc8m1G+hCc225aSmTUuLv5QJlS5mZ7o3vyMXXESNOEWd6k2Ls4RikmrAz/mRbuDgSDj4JF2W1z2E0npWf3xVT6YbIIGIdQ+YUTGi86qfjepz9Z/QThuwyZdfHaJs8TK7tZZHdZv4aGxCvMUHuRLqHmBE8tp16t3DrK5wqFcAX7GOZyp/oAkFZnlNqA2C44cUW6GZhanPtpxwixv3iyU07lJCQSB8LG45pWjDUl7G7EuHkPSPkj7blkt6dv2w1FnkabMsKkfdAzOema5YZTeBQbxAAA6JjsmZSZmJmMmYCYiINglyyXZJUImQCZqJmsmPCa6JcQllSE8ILYApwCsJaghkSGTIZIhkCEfIpQhsiW8JSAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAG4AbwBwAHEAcgBzAHQAdQB2AHcAeAB5AHoAewB8AH0AfgACI8cA/ADpAOIA5ADgAOUA5wDqAOsA6ADvAO4A7ADEAMUAyQDmAMYA9AD2APIA+wD5AP8A1gDcAKIAowClAKcgkgHhAO0A8wD6APEA0QCqALoAvwAQI6wAvQC8AKEAqwC7AJElkiWTJQIlJCVhJWIlViVVJWMlUSVXJV0lXCVbJRAlFCU0JSwlHCUAJTwlXiVfJVolVCVpJWYlYCVQJWwlZyVoJWQlZSVZJVglUiVTJWslaiUYJQwliCWEJYwlkCWAJbED3wCTA8ADowPDA7UAxAOmA5gDqQO0Ax4ixgO1AykiYSKxAGUiZCIgIyEj9wBIIrAAGSK3ABoifyCyAKAloABBoNkACyYUBAAAtgcAAHoJAACZBQAAWwUAALoFAAAABAAARQUAAM8FAAB6CQBB0dkAC7YQAQIDBAQFBQYGBgYHBwcHCAgICAgICAgJCQkJCQkJCQoKCgoKCgoKCgoKCgoKCgoLCwsLCwsLCwsLCwsLCwsLDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAAAQERISExMUFBQUFRUVFRYWFhYWFhYWFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGRkZGRkZGRkZGRkZGRkZGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxscHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQABAgMEBQYHCAgJCQoKCwsMDAwMDQ0NDQ4ODg4PDw8PEBAQEBAQEBARERERERERERISEhISEhISExMTExMTExMUFBQUFBQUFBQUFBQUFBQUFRUVFRUVFRUVFRUVFRUVFRYWFhYWFhYWFhYWFhYWFhYXFxcXFxcXFxcXFxcXFxcXGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwQMAAAEDUAAAEBAAAeAQAADwAAAJA0AACQNQAAAAAAAB4AAAAPAAAAAAAAABA2AAAAAAAAEwAAAAcAAAAAAAAADAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";yz(Rp)||(Rp=dxe(Rp));function Kxe(t){try{if(t==Rp&&lP)return new Uint8Array(lP);var e=sz(t);if(e)return e;if(aP)return aP(t);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(r){Gr(r)}}function Uxe(t,e){var r,i,n;try{n=Kxe(t),i=new WebAssembly.Module(n),r=new WebAssembly.Instance(i,e)}catch(o){var s=o.toString();throw Di("failed to compile wasm module: "+s),(s.includes("imported Memory")||s.includes("memory import"))&&Di("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),o}return[r,i]}function Gxe(){var t={a:Hxe};function e(n,s){var o=n.exports;oe.asm=o,ew=oe.asm.u,pz(ew.buffer),fP=oe.asm.za,Mxe(oe.asm.v),dP("wasm-instantiate")}if(Iz("wasm-instantiate"),oe.instantiateWasm)try{var r=oe.instantiateWasm(t,e);return r}catch(n){return Di("Module.instantiateWasm callback failed with error: "+n),!1}var i=Uxe(Rp,t);return e(i[0]),oe.asm}var ai,ya;function hP(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e(oe);continue}var r=e.func;typeof r=="number"?e.arg===void 0?fP.get(r)():fP.get(r)(e.arg):r(e.arg===void 0?null:e.arg)}}function iw(t,e){var r=new Date(_e[t>>2]*1e3);_e[e>>2]=r.getUTCSeconds(),_e[e+4>>2]=r.getUTCMinutes(),_e[e+8>>2]=r.getUTCHours(),_e[e+12>>2]=r.getUTCDate(),_e[e+16>>2]=r.getUTCMonth(),_e[e+20>>2]=r.getUTCFullYear()-1900,_e[e+24>>2]=r.getUTCDay(),_e[e+36>>2]=0,_e[e+32>>2]=0;var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[e+28>>2]=n,iw.GMTString||(iw.GMTString=uP("GMT")),_e[e+40>>2]=iw.GMTString,e}function jxe(t,e){return iw(t,e)}var yt={splitPath:function(t){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(t).slice(1)},normalizeArray:function(t,e){for(var r=0,i=t.length-1;i>=0;i--){var n=t[i];n==="."?t.splice(i,1):n===".."?(t.splice(i,1),r++):r&&(t.splice(i,1),r--)}if(e)for(;r;r--)t.unshift("..");return t},normalize:function(t){var e=t.charAt(0)==="/",r=t.substr(-1)==="/";return t=yt.normalizeArray(t.split("/").filter(function(i){return!!i}),!e).join("/"),!t&&!e&&(t="."),t&&r&&(t+="/"),(e?"/":"")+t},dirname:function(t){var e=yt.splitPath(t),r=e[0],i=e[1];return!r&&!i?".":(i&&(i=i.substr(0,i.length-1)),r+i)},basename:function(t){if(t==="/")return"/";t=yt.normalize(t),t=t.replace(/\/$/,"");var e=t.lastIndexOf("/");return e===-1?t:t.substr(e+1)},extname:function(t){return yt.splitPath(t)[3]},join:function(){var t=Array.prototype.slice.call(arguments,0);return yt.normalize(t.join("/"))},join2:function(t,e){return yt.normalize(t+"/"+e)}};function Yxe(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var t=new Uint8Array(1);return function(){return crypto.getRandomValues(t),t[0]}}else if(Wl)try{var e=require("crypto");return function(){return e.randomBytes(1)[0]}}catch(r){}return function(){Gr("randomDevice")}}var wa={resolve:function(){for(var t="",e=!1,r=arguments.length-1;r>=-1&&!e;r--){var i=r>=0?arguments[r]:y.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,e=i.charAt(0)==="/"}return t=yt.normalizeArray(t.split("/").filter(function(n){return!!n}),!e).join("/"),(e?"/":"")+t||"."},relative:function(t,e){t=wa.resolve(t).substr(1),e=wa.resolve(e).substr(1);function r(c){for(var u=0;u=0&&c[g]==="";g--);return u>g?[]:c.slice(u,g-u+1)}for(var i=r(t.split("/")),n=r(e.split("/")),s=Math.min(i.length,n.length),o=s,a=0;a0?e=i.slice(0,n).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` -`)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` -`));if(!e)return null;t.input=CP(e,!0)}return t.input.shift()},put_char:function(t,e){e===null||e===10?($y(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&($y(Zu(t.output,0)),t.output=[])}},default_tty1_ops:{put_char:function(t,e){e===null||e===10?(Di(Zu(t.output,0)),t.output=[]):e!=0&&t.output.push(e)},flush:function(t){t.output&&t.output.length>0&&(Di(Zu(t.output,0)),t.output=[])}}};function mP(t){for(var e=mxe(t,65536),r=hz(e);t=e)){var i=1024*1024;e=Math.max(e,r*(r>>0),r!=0&&(e=Math.max(e,256));var n=t.contents;t.contents=new Uint8Array(e),t.usedBytes>0&&t.contents.set(n.subarray(0,t.usedBytes),0)}},resizeFileStorage:function(t,e){if(t.usedBytes!=e)if(e==0)t.contents=null,t.usedBytes=0;else{var r=t.contents;t.contents=new Uint8Array(e),r&&t.contents.set(r.subarray(0,Math.min(e,t.usedBytes))),t.usedBytes=e}},node_ops:{getattr:function(t){var e={};return e.dev=y.isChrdev(t.mode)?t.id:1,e.ino=t.id,e.mode=t.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=t.rdev,y.isDir(t.mode)?e.size=4096:y.isFile(t.mode)?e.size=t.usedBytes:y.isLink(t.mode)?e.size=t.link.length:e.size=0,e.atime=new Date(t.timestamp),e.mtime=new Date(t.timestamp),e.ctime=new Date(t.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(t,e){e.mode!==void 0&&(t.mode=e.mode),e.timestamp!==void 0&&(t.timestamp=e.timestamp),e.size!==void 0&&pt.resizeFileStorage(t,e.size)},lookup:function(t,e){throw y.genericErrors[44]},mknod:function(t,e,r,i){return pt.createNode(t,e,r,i)},rename:function(t,e,r){if(y.isDir(t.mode)){var i;try{i=y.lookupNode(e,r)}catch(s){}if(i)for(var n in i.contents)throw new y.ErrnoError(55)}delete t.parent.contents[t.name],t.parent.timestamp=Date.now(),t.name=r,e.contents[r]=t,e.timestamp=t.parent.timestamp,t.parent=e},unlink:function(t,e){delete t.contents[e],t.timestamp=Date.now()},rmdir:function(t,e){var r=y.lookupNode(t,e);for(var i in r.contents)throw new y.ErrnoError(55);delete t.contents[e],t.timestamp=Date.now()},readdir:function(t){var e=[".",".."];for(var r in t.contents)!t.contents.hasOwnProperty(r)||e.push(r);return e},symlink:function(t,e,r){var i=pt.createNode(t,e,511|40960,0);return i.link=r,i},readlink:function(t){if(!y.isLink(t.mode))throw new y.ErrnoError(28);return t.link}},stream_ops:{read:function(t,e,r,i,n){var s=t.node.contents;if(n>=t.node.usedBytes)return 0;var o=Math.min(t.node.usedBytes-n,i);if(o>8&&s.subarray)e.set(s.subarray(n,n+o),r);else for(var a=0;a0||i+r>2)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}return e.mode},realPath:function(t){for(var e=[];t.parent!==t;)e.push(t.name),t=t.parent;return e.push(t.mount.opts.root),e.reverse(),yt.join.apply(null,e)},flagsForNode:function(t){t&=~2097152,t&=~2048,t&=~32768,t&=~524288;var e=0;for(var r in tt.flagsForNodeMap)t&r&&(e|=tt.flagsForNodeMap[r],t^=r);if(t)throw new y.ErrnoError(28);return e},node_ops:{getattr:function(t){var e=tt.realPath(t),r;try{r=ft.lstatSync(e)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}return tt.isWindows&&!r.blksize&&(r.blksize=4096),tt.isWindows&&!r.blocks&&(r.blocks=(r.size+r.blksize-1)/r.blksize|0),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr:function(t,e){var r=tt.realPath(t);try{if(e.mode!==void 0&&(ft.chmodSync(r,e.mode),t.mode=e.mode),e.timestamp!==void 0){var i=new Date(e.timestamp);ft.utimesSync(r,i,i)}e.size!==void 0&&ft.truncateSync(r,e.size)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},lookup:function(t,e){var r=yt.join2(tt.realPath(t),e),i=tt.getMode(r);return tt.createNode(t,e,i)},mknod:function(t,e,r,i){var n=tt.createNode(t,e,r,i),s=tt.realPath(n);try{y.isDir(n.mode)?ft.mkdirSync(s,n.mode):ft.writeFileSync(s,"",{mode:n.mode})}catch(o){throw o.code?new y.ErrnoError(tt.convertNodeCode(o)):o}return n},rename:function(t,e,r){var i=tt.realPath(t),n=yt.join2(tt.realPath(e),r);try{ft.renameSync(i,n)}catch(s){throw s.code?new y.ErrnoError(tt.convertNodeCode(s)):s}t.name=r},unlink:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.unlinkSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},rmdir:function(t,e){var r=yt.join2(tt.realPath(t),e);try{ft.rmdirSync(r)}catch(i){throw i.code?new y.ErrnoError(tt.convertNodeCode(i)):i}},readdir:function(t){var e=tt.realPath(t);try{return ft.readdirSync(e)}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},symlink:function(t,e,r){var i=yt.join2(tt.realPath(t),e);try{ft.symlinkSync(r,i)}catch(n){throw n.code?new y.ErrnoError(tt.convertNodeCode(n)):n}},readlink:function(t){var e=tt.realPath(t);try{return e=ft.readlinkSync(e),e=IP.relative(IP.resolve(t.mount.opts.root),e),e}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}}},stream_ops:{open:function(t){var e=tt.realPath(t.node);try{y.isFile(t.node.mode)&&(t.nfd=ft.openSync(e,tt.flagsForNode(t.flags)))}catch(r){throw r.code?new y.ErrnoError(tt.convertNodeCode(r)):r}},close:function(t){try{y.isFile(t.node.mode)&&t.nfd&&ft.closeSync(t.nfd)}catch(e){throw e.code?new y.ErrnoError(tt.convertNodeCode(e)):e}},read:function(t,e,r,i,n){if(i===0)return 0;try{return ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},write:function(t,e,r,i,n){try{return ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n)}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}},llseek:function(t,e,r){var i=e;if(r===1)i+=t.position;else if(r===2&&y.isFile(t.node.mode))try{var n=ft.fstatSync(t.nfd);i+=n.size}catch(s){throw new y.ErrnoError(tt.convertNodeCode(s))}if(i<0)throw new y.ErrnoError(28);return i},mmap:function(t,e,r,i,n,s){if(e!==0)throw new y.ErrnoError(28);if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);var o=mP(r);return tt.stream_ops.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){if(!y.isFile(t.node.mode))throw new y.ErrnoError(43);if(n&2)return 0;var s=tt.stream_ops.write(t,e,0,i,r,!1);return 0}}},wz={lookupPath:function(t){return{path:t,node:{mode:tt.getMode(t)}}},createStandardStreams:function(){y.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var t=1;t<3;t++)y.streams[t]={fd:t,nfd:t,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(t,e){y.isDir(t)?ft.mkdirSync(t,e):ft.writeFileSync(t,"",{mode:e})},mkdir:function(){ft.mkdirSync.apply(void 0,arguments)},symlink:function(){ft.symlinkSync.apply(void 0,arguments)},rename:function(){ft.renameSync.apply(void 0,arguments)},rmdir:function(){ft.rmdirSync.apply(void 0,arguments)},readdir:function(){ft.readdirSync.apply(void 0,arguments)},unlink:function(){ft.unlinkSync.apply(void 0,arguments)},readlink:function(){return ft.readlinkSync.apply(void 0,arguments)},stat:function(){return ft.statSync.apply(void 0,arguments)},lstat:function(){return ft.lstatSync.apply(void 0,arguments)},chmod:function(){ft.chmodSync.apply(void 0,arguments)},fchmod:function(){ft.fchmodSync.apply(void 0,arguments)},chown:function(){ft.chownSync.apply(void 0,arguments)},fchown:function(){ft.fchownSync.apply(void 0,arguments)},truncate:function(){ft.truncateSync.apply(void 0,arguments)},ftruncate:function(t,e){if(e<0)throw new y.ErrnoError(28);ft.ftruncateSync.apply(void 0,arguments)},utime:function(){ft.utimesSync.apply(void 0,arguments)},open:function(t,e,r,i){typeof e=="string"&&(e=Vl.modeStringToFlags(e));var n=ft.openSync(t,tt.flagsForNode(e),r),s=i!=null?i:y.nextfd(n),o={fd:s,nfd:n,position:0,path:t,flags:e,seekable:!0};return y.streams[s]=o,o},close:function(t){t.stream_ops||ft.closeSync(t.nfd),y.closeStream(t.fd)},llseek:function(t,e,r){if(t.stream_ops)return Vl.llseek(t,e,r);var i=e;if(r===1)i+=t.position;else if(r===2)i+=ft.fstatSync(t.nfd).size;else if(r!==0)throw new y.ErrnoError(eg.EINVAL);if(i<0)throw new y.ErrnoError(eg.EINVAL);return t.position=i,i},read:function(t,e,r,i,n){if(t.stream_ops)return Vl.read(t,e,r,i,n);var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.readSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},write:function(t,e,r,i,n){if(t.stream_ops)return Vl.write(t,e,r,i,n);t.flags&+"1024"&&y.llseek(t,0,+"2");var s=typeof n!="undefined";!s&&t.seekable&&(n=t.position);var o=ft.writeSync(t.nfd,tt.bufferFrom(e.buffer),r,i,n);return s||(t.position+=o),o},allocate:function(){throw new y.ErrnoError(eg.EOPNOTSUPP)},mmap:function(t,e,r,i,n,s){if(t.stream_ops)return Vl.mmap(t,e,r,i,n,s);if(e!==0)throw new y.ErrnoError(28);var o=mP(r);return y.read(t,Zi,o,r,i),{ptr:o,allocated:!0}},msync:function(t,e,r,i,n){return t.stream_ops?Vl.msync(t,e,r,i,n):(n&2||y.write(t,e,0,i,r),0)},munmap:function(){return 0},ioctl:function(){throw new y.ErrnoError(eg.ENOTTY)}},y={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(t,e){if(t=wa.resolve(y.cwd(),t),e=e||{},!t)return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var i in r)e[i]===void 0&&(e[i]=r[i]);if(e.recurse_count>8)throw new y.ErrnoError(32);for(var n=yt.normalizeArray(t.split("/").filter(function(f){return!!f}),!1),s=y.root,o="/",a=0;a40)throw new y.ErrnoError(32)}}return{path:o,node:s}},getPath:function(t){for(var e;;){if(y.isRoot(t)){var r=t.mount.mountpoint;return e?r[r.length-1]!=="/"?r+"/"+e:r+e:r}e=e?t.name+"/"+e:t.name,t=t.parent}},hashName:function(t,e){for(var r=0,i=0;i>>0)%y.nameTable.length},hashAddNode:function(t){var e=y.hashName(t.parent.id,t.name);t.name_next=y.nameTable[e],y.nameTable[e]=t},hashRemoveNode:function(t){var e=y.hashName(t.parent.id,t.name);if(y.nameTable[e]===t)y.nameTable[e]=t.name_next;else for(var r=y.nameTable[e];r;){if(r.name_next===t){r.name_next=t.name_next;break}r=r.name_next}},lookupNode:function(t,e){var r=y.mayLookup(t);if(r)throw new y.ErrnoError(r,t);for(var i=y.hashName(t.id,e),n=y.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===t.id&&s===e)return n}return y.lookup(t,e)},createNode:function(t,e,r,i){var n=new y.FSNode(t,e,r,i);return y.hashAddNode(n),n},destroyNode:function(t){y.hashRemoveNode(t)},isRoot:function(t){return t===t.parent},isMountpoint:function(t){return!!t.mounted},isFile:function(t){return(t&61440)==32768},isDir:function(t){return(t&61440)==16384},isLink:function(t){return(t&61440)==40960},isChrdev:function(t){return(t&61440)==8192},isBlkdev:function(t){return(t&61440)==24576},isFIFO:function(t){return(t&61440)==4096},isSocket:function(t){return(t&49152)==49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(t){var e=y.flagModes[t];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+t);return e},flagsToPermissionString:function(t){var e=["r","w","rw"][t&3];return t&512&&(e+="w"),e},nodePermissions:function(t,e){return y.ignorePermissions?0:e.includes("r")&&!(t.mode&292)||e.includes("w")&&!(t.mode&146)||e.includes("x")&&!(t.mode&73)?2:0},mayLookup:function(t){var e=y.nodePermissions(t,"x");return e||(t.node_ops.lookup?0:2)},mayCreate:function(t,e){try{var r=y.lookupNode(t,e);return 20}catch(i){}return y.nodePermissions(t,"wx")},mayDelete:function(t,e,r){var i;try{i=y.lookupNode(t,e)}catch(s){return s.errno}var n=y.nodePermissions(t,"wx");if(n)return n;if(r){if(!y.isDir(i.mode))return 54;if(y.isRoot(i)||y.getPath(i)===y.cwd())return 10}else if(y.isDir(i.mode))return 31;return 0},mayOpen:function(t,e){return t?y.isLink(t.mode)?32:y.isDir(t.mode)&&(y.flagsToPermissionString(e)!=="r"||e&512)?31:y.nodePermissions(t,y.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(t,e){t=t||0,e=e||y.MAX_OPEN_FDS;for(var r=t;r<=e;r++)if(!y.streams[r])return r;throw new y.ErrnoError(33)},getStream:function(t){return y.streams[t]},createStream:function(t,e,r){y.FSStream||(y.FSStream=function(){},y.FSStream.prototype={object:{get:function(){return this.node},set:function(o){this.node=o}},isRead:{get:function(){return(this.flags&2097155)!=1}},isWrite:{get:function(){return(this.flags&2097155)!=0}},isAppend:{get:function(){return this.flags&1024}}});var i=new y.FSStream;for(var n in t)i[n]=t[n];t=i;var s=y.nextfd(e,r);return t.fd=s,y.streams[s]=t,t},closeStream:function(t){y.streams[t]=null},chrdev_stream_ops:{open:function(t){var e=y.getDevice(t.node.rdev);t.stream_ops=e.stream_ops,t.stream_ops.open&&t.stream_ops.open(t)},llseek:function(){throw new y.ErrnoError(70)}},major:function(t){return t>>8},minor:function(t){return t&255},makedev:function(t,e){return t<<8|e},registerDevice:function(t,e){y.devices[t]={stream_ops:e}},getDevice:function(t){return y.devices[t]},getMounts:function(t){for(var e=[],r=[t];r.length;){var i=r.pop();e.push(i),r.push.apply(r,i.mounts)}return e},syncfs:function(t,e){typeof t=="function"&&(e=t,t=!1),y.syncFSRequests++,y.syncFSRequests>1&&Di("warning: "+y.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=y.getMounts(y.root.mount),i=0;function n(o){return y.syncFSRequests--,e(o)}function s(o){if(o)return s.errored?void 0:(s.errored=!0,n(o));++i>=r.length&&n(null)}r.forEach(function(o){if(!o.type.syncfs)return s(null);o.type.syncfs(o,t,s)})},mount:function(t,e,r){var i=r==="/",n=!r,s;if(i&&y.root)throw new y.ErrnoError(10);if(!i&&!n){var o=y.lookupPath(r,{follow_mount:!1});if(r=o.path,s=o.node,y.isMountpoint(s))throw new y.ErrnoError(10);if(!y.isDir(s.mode))throw new y.ErrnoError(54)}var a={type:t,opts:e,mountpoint:r,mounts:[]},l=t.mount(a);return l.mount=a,a.root=l,i?y.root=l:s&&(s.mounted=a,s.mount&&s.mount.mounts.push(a)),l},unmount:function(t){var e=y.lookupPath(t,{follow_mount:!1});if(!y.isMountpoint(e.node))throw new y.ErrnoError(28);var r=e.node,i=r.mounted,n=y.getMounts(i);Object.keys(y.nameTable).forEach(function(o){for(var a=y.nameTable[o];a;){var l=a.name_next;n.includes(a.mount)&&y.destroyNode(a),a=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:function(t,e){return t.node_ops.lookup(t,e)},mknod:function(t,e,r){var i=y.lookupPath(t,{parent:!0}),n=i.node,s=yt.basename(t);if(!s||s==="."||s==="..")throw new y.ErrnoError(28);var o=y.mayCreate(n,s);if(o)throw new y.ErrnoError(o);if(!n.node_ops.mknod)throw new y.ErrnoError(63);return n.node_ops.mknod(n,s,e,r)},create:function(t,e){return e=e!==void 0?e:438,e&=4095,e|=32768,y.mknod(t,e,0)},mkdir:function(t,e){return e=e!==void 0?e:511,e&=511|512,e|=16384,y.mknod(t,e,0)},mkdirTree:function(t,e){for(var r=t.split("/"),i="",n=0;nthis.length-1||f<0)){var h=f%this.chunkSize,p=f/this.chunkSize|0;return this.getter(p)[h]}},s.prototype.setDataGetter=function(f){this.getter=f},s.prototype.cacheLength=function(){var f=new XMLHttpRequest;if(f.open("HEAD",r,!1),f.send(null),!(f.status>=200&&f.status<300||f.status===304))throw new Error("Couldn't load "+r+". Status: "+f.status);var h=Number(f.getResponseHeader("Content-length")),p,d=(p=f.getResponseHeader("Accept-Ranges"))&&p==="bytes",m=(p=f.getResponseHeader("Content-Encoding"))&&p==="gzip",E=1024*1024;d||(E=h);var B=function(R,H){if(R>H)throw new Error("invalid range ("+R+", "+H+") or no bytes requested!");if(H>h-1)throw new Error("only "+h+" bytes available! programmer error!");var L=new XMLHttpRequest;if(L.open("GET",r,!1),h!==E&&L.setRequestHeader("Range","bytes="+R+"-"+H),typeof Uint8Array!="undefined"&&(L.responseType="arraybuffer"),L.overrideMimeType&&L.overrideMimeType("text/plain; charset=x-user-defined"),L.send(null),!(L.status>=200&&L.status<300||L.status===304))throw new Error("Couldn't load "+r+". Status: "+L.status);return L.response!==void 0?new Uint8Array(L.response||[]):CP(L.responseText||"",!0)},b=this;b.setDataGetter(function(R){var H=R*E,L=(R+1)*E-1;if(L=Math.min(L,h-1),typeof b.chunks[R]=="undefined"&&(b.chunks[R]=B(H,L)),typeof b.chunks[R]=="undefined")throw new Error("doXHR failed!");return b.chunks[R]}),(m||!h)&&(E=h=1,h=this.getter(0).length,E=h,$y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=h,this._chunkSize=E,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!iz)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var o=new s;Object.defineProperties(o,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:o}}else var a={isDevice:!1,url:r};var l=y.createFile(t,e,a,i,n);a.contents?l.contents=a.contents:a.url&&(l.contents=null,l.url=a.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var c={},u=Object.keys(l.stream_ops);return u.forEach(function(g){var f=l.stream_ops[g];c[g]=function(){return y.forceLoadFile(l),f.apply(null,arguments)}}),c.read=function(f,h,p,d,m){y.forceLoadFile(l);var E=f.node.contents;if(m>=E.length)return 0;var B=Math.min(E.length-m,d);if(E.slice)for(var b=0;b>2]=i.dev,_e[r+4>>2]=0,_e[r+8>>2]=i.ino,_e[r+12>>2]=i.mode,_e[r+16>>2]=i.nlink,_e[r+20>>2]=i.uid,_e[r+24>>2]=i.gid,_e[r+28>>2]=i.rdev,_e[r+32>>2]=0,ya=[i.size>>>0,(ai=i.size,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+40>>2]=ya[0],_e[r+44>>2]=ya[1],_e[r+48>>2]=4096,_e[r+52>>2]=i.blocks,_e[r+56>>2]=i.atime.getTime()/1e3|0,_e[r+60>>2]=0,_e[r+64>>2]=i.mtime.getTime()/1e3|0,_e[r+68>>2]=0,_e[r+72>>2]=i.ctime.getTime()/1e3|0,_e[r+76>>2]=0,ya=[i.ino>>>0,(ai=i.ino,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[r+80>>2]=ya[0],_e[r+84>>2]=ya[1],0},doMsync:function(t,e,r,i,n){var s=$u.slice(t,t+r);y.msync(e,s,n,r,i)},doMkdir:function(t,e){return t=yt.normalize(t),t[t.length-1]==="/"&&(t=t.substr(0,t.length-1)),y.mkdir(t,e,0),0},doMknod:function(t,e,r){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return y.mknod(t,e,r),0},doReadlink:function(t,e,r){if(r<=0)return-28;var i=y.readlink(t),n=Math.min(r,rw(i)),s=Zi[e+n];return uz(i,e,r+1),Zi[e+n]=s,n},doAccess:function(t,e){if(e&~7)return-28;var r,i=y.lookupPath(t,{follow:!0});if(r=i.node,!r)return-44;var n="";return e&4&&(n+="r"),e&2&&(n+="w"),e&1&&(n+="x"),n&&y.nodePermissions(r,n)?-2:0},doDup:function(t,e,r){var i=y.getStream(r);return i&&y.close(i),y.open(t,e,0,r,r).fd},doReadv:function(t,e,r,i){for(var n=0,s=0;s>2],a=_e[e+(s*8+4)>>2],l=y.read(t,Zi,o,a,i);if(l<0)return-1;if(n+=l,l>2],a=_e[e+(s*8+4)>>2],l=y.write(t,Zi,o,a,i);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){Ot.varargs+=4;var t=_e[Ot.varargs-4>>2];return t},getStr:function(t){var e=cz(t);return e},getStreamFromFD:function(t){var e=y.getStream(t);if(!e)throw new y.ErrnoError(8);return e},get64:function(t,e){return t}};function qxe(t,e){try{return t=Ot.getStr(t),y.chmod(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function Wxe(t){return _e[Jxe()>>2]=t,t}function zxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 0:{var n=Ot.get();if(n<0)return-28;var s;return s=y.open(i.path,i.flags,0,n),s.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var n=Ot.get();return i.flags|=n,0}case 12:{var n=Ot.get(),o=0;return cP[n+o>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Wxe(28),-1;default:return-28}}catch(a){return(typeof y=="undefined"||!(a instanceof y.ErrnoError))&&Gr(a),-a.errno}}function Vxe(t,e){try{var r=Ot.getStreamFromFD(t);return Ot.doStat(y.stat,r.path,e)}catch(i){return(typeof y=="undefined"||!(i instanceof y.ErrnoError))&&Gr(i),-i.errno}}function _xe(t,e,r){Ot.varargs=r;try{var i=Ot.getStreamFromFD(t);switch(e){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var n=Ot.get();return _e[n>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var n=Ot.get();return y.ioctl(i,e,n)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:Gr("bad ioctl syscall "+e)}}catch(s){return(typeof y=="undefined"||!(s instanceof y.ErrnoError))&&Gr(s),-s.errno}}function Xxe(t,e,r){Ot.varargs=r;try{var i=Ot.getStr(t),n=r?Ot.get():0,s=y.open(i,e,n);return s.fd}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),-o.errno}}function Zxe(t,e){try{return t=Ot.getStr(t),e=Ot.getStr(e),y.rename(t,e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function $xe(t){try{return t=Ot.getStr(t),y.rmdir(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function eke(t,e){try{return t=Ot.getStr(t),Ot.doStat(y.stat,t,e)}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),-r.errno}}function tke(t){try{return t=Ot.getStr(t),y.unlink(t),0}catch(e){return(typeof y=="undefined"||!(e instanceof y.ErrnoError))&&Gr(e),-e.errno}}function rke(t,e,r){$u.copyWithin(t,e,e+r)}function ike(t){try{return ew.grow(t-gP.byteLength+65535>>>16),pz(ew.buffer),1}catch(e){}}function nke(t){var e=$u.length;t=t>>>0;var r=2147483648;if(t>r)return!1;for(var i=1;i<=4;i*=2){var n=e*(1+.2/i);n=Math.min(n,t+100663296);var s=Math.min(r,xxe(Math.max(t,n),65536)),o=ike(s);if(o)return!0}return!1}function ske(t){try{var e=Ot.getStreamFromFD(t);return y.close(e),0}catch(r){return(typeof y=="undefined"||!(r instanceof y.ErrnoError))&&Gr(r),r.errno}}function oke(t,e){try{var r=Ot.getStreamFromFD(t),i=r.tty?2:y.isDir(r.mode)?3:y.isLink(r.mode)?7:4;return Zi[e>>0]=i,0}catch(n){return(typeof y=="undefined"||!(n instanceof y.ErrnoError))&&Gr(n),n.errno}}function ake(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doReadv(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function Ake(t,e,r,i,n){try{var s=Ot.getStreamFromFD(t),o=4294967296,a=r*o+(e>>>0),l=9007199254740992;return a<=-l||a>=l?-61:(y.llseek(s,a,i),ya=[s.position>>>0,(ai=s.position,+Math.abs(ai)>=1?ai>0?(Math.min(+Math.floor(ai/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ai-+(~~ai>>>0))/4294967296)>>>0:0)],_e[n>>2]=ya[0],_e[n+4>>2]=ya[1],s.getdents&&a===0&&i===0&&(s.getdents=null),0)}catch(c){return(typeof y=="undefined"||!(c instanceof y.ErrnoError))&&Gr(c),c.errno}}function lke(t,e,r,i){try{var n=Ot.getStreamFromFD(t),s=Ot.doWritev(n,e,r);return _e[i>>2]=s,0}catch(o){return(typeof y=="undefined"||!(o instanceof y.ErrnoError))&&Gr(o),o.errno}}function cke(t){Exe(t)}function uke(t){var e=Date.now()/1e3|0;return t&&(_e[t>>2]=e),e}function EP(){if(EP.called)return;EP.called=!0;var t=new Date().getFullYear(),e=new Date(t,0,1),r=new Date(t,6,1),i=e.getTimezoneOffset(),n=r.getTimezoneOffset(),s=Math.max(i,n);_e[fke()>>2]=s*60,_e[gke()>>2]=Number(i!=n);function o(g){var f=g.toTimeString().match(/\(([A-Za-z ]+)\)$/);return f?f[1]:"GMT"}var a=o(e),l=o(r),c=uP(a),u=uP(l);n>2]=c,_e[nw()+4>>2]=u):(_e[nw()>>2]=u,_e[nw()+4>>2]=c)}function hke(t){EP();var e=Date.UTC(_e[t+20>>2]+1900,_e[t+16>>2],_e[t+12>>2],_e[t+8>>2],_e[t+4>>2],_e[t>>2],0),r=new Date(e);_e[t+24>>2]=r.getUTCDay();var i=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-i)/(1e3*60*60*24)|0;return _e[t+28>>2]=n,r.getTime()/1e3|0}var Bz=function(t,e,r,i){t||(t=this),this.parent=t,this.mount=t.mount,this.mounted=null,this.id=y.nextInode++,this.name=e,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},sw=292|73,ow=146;Object.defineProperties(Bz.prototype,{read:{get:function(){return(this.mode&sw)===sw},set:function(t){t?this.mode|=sw:this.mode&=~sw}},write:{get:function(){return(this.mode&ow)===ow},set:function(t){t?this.mode|=ow:this.mode&=~ow}},isFolder:{get:function(){return y.isDir(this.mode)}},isDevice:{get:function(){return y.isChrdev(this.mode)}}});y.FSNode=Bz;y.staticInit();Wl&&(ft=ez,IP=require("path"),tt.staticInit());var ft,IP;if(Wl){Qz=function(t){return function(){try{return t.apply(this,arguments)}catch(e){throw e.code?new y.ErrnoError(eg[e.code]):e}}},Vl=Object.assign({},y);for(yP in wz)y[yP]=Qz(wz[yP])}else throw new Error("NODERAWFS is currently only supported on Node.js environment.");var Qz,Vl,yP;function CP(t,e,r){var i=r>0?r:rw(t)+1,n=new Array(i),s=tw(t,n,0,n.length);return e&&(n.length=s),n}var pke=typeof atob=="function"?atob:function(t){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",i,n,s,o,a,l,c,u=0;t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");do o=e.indexOf(t.charAt(u++)),a=e.indexOf(t.charAt(u++)),l=e.indexOf(t.charAt(u++)),c=e.indexOf(t.charAt(u++)),i=o<<2|a>>4,n=(a&15)<<4|l>>2,s=(l&3)<<6|c,r=r+String.fromCharCode(i),l!==64&&(r=r+String.fromCharCode(n)),c!==64&&(r=r+String.fromCharCode(s));while(u0||(Fxe(),zl>0))return;function e(){aw||(aw=!0,oe.calledRun=!0,!Az&&(Nxe(),oe.onRuntimeInitialized&&oe.onRuntimeInitialized(),Txe()))}oe.setStatus?(oe.setStatus("Running..."),setTimeout(function(){setTimeout(function(){oe.setStatus("")},1),e()},1)):e()}oe.run=wP;if(oe.preInit)for(typeof oe.preInit=="function"&&(oe.preInit=[oe.preInit]);oe.preInit.length>0;)oe.preInit.pop()();wP()});var xz=I((Dot,Sz)=>{"use strict";function Cke(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function _l(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,_l)}Cke(_l,Error);_l.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ee=At(">>",!1),Ue=">&",Oe=At(">&",!1),vt=">",dt=At(">",!1),ri="<<<",ii=At("<<<",!1),an="<&",yr=At("<&",!1),Ki="<",Qi=At("<",!1),Go=function(C){return{type:"argument",segments:[].concat(...C)}},wr=function(C){return C},Ui="'",ws=At("'",!1),Tf=function(C){return[{type:"text",text:C}]},Mf='"',Rm=At('"',!1),Fm=function(C){return C},Nm=function(C){return{type:"arithmetic",arithmetic:C,quoted:!0}},DQ=function(C){return{type:"shell",shell:C,quoted:!0}},RQ=function(C){return _(P({type:"variable"},C),{quoted:!0})},Of=function(C){return{type:"text",text:C}},FQ=function(C){return{type:"arithmetic",arithmetic:C,quoted:!1}},NQ=function(C){return{type:"shell",shell:C,quoted:!1}},Lm=function(C){return _(P({type:"variable"},C),{quoted:!1})},LQ=function(C){return{type:"glob",pattern:C}},Va="\\",jo=At("\\",!1),Tm=/^[\\']/,Mm=Qs(["\\","'"],!1,!1),te=function(C){return C},Om=/^[^']/,Km=Qs(["'"],!0,!1),il=function(C){return C.join("")},Um=/^[\\$"]/,Hm=Qs(["\\","$",'"'],!1,!1),Kf=/^[^$"]/,Gm=Qs(["$",'"'],!0,!1),jm="\\0",TQ=At("\\0",!1),MQ=function(){return"\0"},Ym="\\a",qm=At("\\a",!1),Jm=function(){return"a"},Wm="\\b",zm=At("\\b",!1),Vm=function(){return"\b"},Uf="\\e",OQ=At("\\e",!1),KQ=function(){return""},_m="\\f",UQ=At("\\f",!1),HQ=function(){return"\f"},O="\\n",ht=At("\\n",!1),Vc=function(){return` -`},xn="\\r",Hf=At("\\r",!1),Ye=function(){return"\r"},nl="\\t",Xm=At("\\t",!1),MM=function(){return" "},GQ="\\v",OM=At("\\v",!1),fr=function(){return"\v"},Bs="\\x",jQ=At("\\x",!1),Zm=function(C){return String.fromCharCode(parseInt(C,16))},Yo="\\u",$m=At("\\u",!1),_a="\\U",et=At("\\U",!1),YQ=function(C){return String.fromCodePoint(parseInt(C,16))},eI=/^[0-9a-fA-f]/,tI=Qs([["0","9"],["a","f"],["A","f"]],!1,!1),Xa=Cfe(),sl="-",ol=At("-",!1),al="+",qo=At("+",!1),Al=".",qQ=At(".",!1),rI=function(C,Q,k){return{type:"number",value:(C==="-"?-1:1)*parseFloat(Q.join("")+"."+k.join(""))}},iI=function(C,Q){return{type:"number",value:(C==="-"?-1:1)*parseInt(Q.join(""))}},JQ=function(C){return P({type:"variable"},C)},ll=function(C){return{type:"variable",name:C}},WQ=function(C){return C},nI="*",Gf=At("*",!1),_c="/",jf=At("/",!1),sI=function(C,Q,k){return{type:Q==="*"?"multiplication":"division",right:k}},cl=function(C,Q){return Q.reduce((k,N)=>P({left:k},N),C)},oI=function(C,Q,k){return{type:Q==="+"?"addition":"subtraction",right:k}},Yf="$((",Xc=At("$((",!1),xr="))",KM=At("))",!1),Jo=function(C){return C},Zs="$(",aI=At("$(",!1),Zc=function(C){return C},x="${",U=At("${",!1),le=":-",xe=At(":-",!1),Qe=function(C,Q){return{name:C,defaultValue:Q}},Ge=":-}",ct=At(":-}",!1),sr=function(C){return{name:C,defaultValue:[]}},Wo=function(C){return{name:C}},Afe="$",lfe=At("$",!1),cfe=function(C){return e.isGlobPattern(C)},ufe=function(C){return C},UM=/^[a-zA-Z0-9_]/,HM=Qs([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),GM=function(){return dfe()},jM=/^[$@*?#a-zA-Z0-9_\-]/,YM=Qs(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),gfe=/^[(){}<>$|&; \t"']/,ffe=Qs(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),hfe=/^[<>&; \t"']/,pfe=Qs(["<",">","&",";"," "," ",'"',"'"],!1,!1),qM=/^[ \t]/,JM=Qs([" "," "],!1,!1),w=0,Re=0,AI=[{line:1,column:1}],$s=0,zQ=[],we=0,lI;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function dfe(){return t.substring(Re,w)}function P_e(){return qf(Re,w)}function D_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),zM([Ife(C)],t.substring(Re,w),Q)}function R_e(C,Q){throw Q=Q!==void 0?Q:qf(Re,w),Efe(C,Q)}function At(C,Q){return{type:"literal",text:C,ignoreCase:Q}}function Qs(C,Q,k){return{type:"class",parts:C,inverted:Q,ignoreCase:k}}function Cfe(){return{type:"any"}}function mfe(){return{type:"end"}}function Ife(C){return{type:"other",description:C}}function WM(C){var Q=AI[C],k;if(Q)return Q;for(k=C-1;!AI[k];)k--;for(Q=AI[k],Q={line:Q.line,column:Q.column};k$s&&($s=w,zQ=[]),zQ.push(C))}function Efe(C,Q){return new _l(C,null,null,Q)}function zM(C,Q,k){return new _l(_l.buildMessage(C,Q),C,Q,k)}function VM(){var C,Q;return C=w,Q=Jf(),Q===r&&(Q=null),Q!==r&&(Re=C,Q=s(Q)),C=Q,C}function Jf(){var C,Q,k,N,Z;if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N!==r?(Z=yfe(),Z===r&&(Z=null),Z!==r?(Re=C,Q=o(Q,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;if(C===r)if(C=w,Q=VQ(),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();k!==r?(N=_M(),N===r&&(N=null),N!==r?(Re=C,Q=a(Q,N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function yfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Jf(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=l(k),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function _M(){var C;return t.charCodeAt(w)===59?(C=c,w++):(C=r,we===0&&ve(u)),C===r&&(t.charCodeAt(w)===38?(C=g,w++):(C=r,we===0&&ve(f))),C}function VQ(){var C,Q,k;return C=w,Q=XM(),Q!==r?(k=wfe(),k===r&&(k=null),k!==r?(Re=C,Q=h(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function wfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=Bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=VQ(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=p(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function Bfe(){var C;return t.substr(w,2)===d?(C=d,w+=2):(C=r,we===0&&ve(m)),C===r&&(t.substr(w,2)===E?(C=E,w+=2):(C=r,we===0&&ve(B))),C}function XM(){var C,Q,k;return C=w,Q=vfe(),Q!==r?(k=Qfe(),k===r&&(k=null),k!==r?(Re=C,Q=b(Q,k),C=Q):(w=C,C=r)):(w=C,C=r),C}function Qfe(){var C,Q,k,N,Z,Ie,ot;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(k=bfe(),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=XM(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=R(k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;return C}function bfe(){var C;return t.substr(w,2)===H?(C=H,w+=2):(C=r,we===0&&ve(L)),C===r&&(t.charCodeAt(w)===124?(C=K,w++):(C=r,we===0&&ve(J))),C}function cI(){var C,Q,k,N,Z,Ie;if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r)if(N=$M(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(Re=C,Q=A(Q,N),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;else w=C,C=r;if(C===r)if(C=w,Q=oO(),Q!==r)if(t.charCodeAt(w)===61?(k=ne,w++):(k=r,we===0&&ve(q)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=V(Q),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r;return C}function vfe(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===40?(k=W,w++):(k=r,we===0&&ve(X)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===41?(ot=F,w++):(ot=r,we===0&&ve(D)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=he(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r)if(t.charCodeAt(w)===123?(k=pe,w++):(k=r,we===0&&ve(Ne)),k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r)if(Z=Jf(),Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();if(Ie!==r)if(t.charCodeAt(w)===125?(ot=Pe,w++):(ot=r,we===0&&ve(qe)),ot!==r){for(ut=[],Tr=ke();Tr!==r;)ut.push(Tr),Tr=ke();if(ut!==r){for(Tr=[],ni=Wf();ni!==r;)Tr.push(ni),ni=Wf();if(Tr!==r){for(ni=[],Yn=ke();Yn!==r;)ni.push(Yn),Yn=ke();ni!==r?(Re=C,Q=re(Z,Tr),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r}else w=C,C=r;else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){for(k=[],N=cI();N!==r;)k.push(N),N=cI();if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();if(N!==r){if(Z=[],Ie=ZM(),Ie!==r)for(;Ie!==r;)Z.push(Ie),Ie=ZM();else Z=r;if(Z!==r){for(Ie=[],ot=ke();ot!==r;)Ie.push(ot),ot=ke();Ie!==r?(Re=C,Q=se(k,Z),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}else w=C,C=r}else w=C,C=r;if(C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=cI(),N!==r)for(;N!==r;)k.push(N),N=cI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=be(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r}}}return C}function Sfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r){if(k=[],N=uI(),N!==r)for(;N!==r;)k.push(N),N=uI();else k=r;if(k!==r){for(N=[],Z=ke();Z!==r;)N.push(Z),Z=ke();N!==r?(Re=C,Q=ae(k),C=Q):(w=C,C=r)}else w=C,C=r}else w=C,C=r;return C}function ZM(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();if(Q!==r?(k=Wf(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r){for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();Q!==r?(k=uI(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r)}return C}function Wf(){var C,Q,k,N,Z;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(De.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve($)),k===r&&(k=null),k!==r?(N=xfe(),N!==r?(Z=uI(),Z!==r?(Re=C,Q=G(k,N,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function xfe(){var C;return t.substr(w,2)===Ce?(C=Ce,w+=2):(C=r,we===0&&ve(ee)),C===r&&(t.substr(w,2)===Ue?(C=Ue,w+=2):(C=r,we===0&&ve(Oe)),C===r&&(t.charCodeAt(w)===62?(C=vt,w++):(C=r,we===0&&ve(dt)),C===r&&(t.substr(w,3)===ri?(C=ri,w+=3):(C=r,we===0&&ve(ii)),C===r&&(t.substr(w,2)===an?(C=an,w+=2):(C=r,we===0&&ve(yr)),C===r&&(t.charCodeAt(w)===60?(C=Ki,w++):(C=r,we===0&&ve(Qi))))))),C}function uI(){var C,Q,k;for(C=w,Q=[],k=ke();k!==r;)Q.push(k),k=ke();return Q!==r?(k=$M(),k!==r?(Re=C,Q=Ae(k),C=Q):(w=C,C=r)):(w=C,C=r),C}function $M(){var C,Q,k;if(C=w,Q=[],k=eO(),k!==r)for(;k!==r;)Q.push(k),k=eO();else Q=r;return Q!==r&&(Re=C,Q=Go(Q)),C=Q,C}function eO(){var C,Q;return C=w,Q=kfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Pfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q,C===r&&(C=w,Q=Dfe(),Q!==r&&(Re=C,Q=wr(Q)),C=Q)),C}function kfe(){var C,Q,k,N;return C=w,t.charCodeAt(w)===39?(Q=Ui,w++):(Q=r,we===0&&ve(ws)),Q!==r?(k=Rfe(),k!==r?(t.charCodeAt(w)===39?(N=Ui,w++):(N=r,we===0&&ve(ws)),N!==r?(Re=C,Q=Tf(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function Pfe(){var C,Q,k,N;if(C=w,t.charCodeAt(w)===34?(Q=Mf,w++):(Q=r,we===0&&ve(Rm)),Q!==r){for(k=[],N=tO();N!==r;)k.push(N),N=tO();k!==r?(t.charCodeAt(w)===34?(N=Mf,w++):(N=r,we===0&&ve(Rm)),N!==r?(Re=C,Q=Fm(k),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;return C}function Dfe(){var C,Q,k;if(C=w,Q=[],k=rO(),k!==r)for(;k!==r;)Q.push(k),k=rO();else Q=r;return Q!==r&&(Re=C,Q=Fm(Q)),C=Q,C}function tO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=Nm(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=DQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=RQ(Q)),C=Q,C===r&&(C=w,Q=Ffe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q))),C}function rO(){var C,Q;return C=w,Q=nO(),Q!==r&&(Re=C,Q=FQ(Q)),C=Q,C===r&&(C=w,Q=sO(),Q!==r&&(Re=C,Q=NQ(Q)),C=Q,C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=Lm(Q)),C=Q,C===r&&(C=w,Q=Lfe(),Q!==r&&(Re=C,Q=LQ(Q)),C=Q,C===r&&(C=w,Q=Nfe(),Q!==r&&(Re=C,Q=Of(Q)),C=Q)))),C}function Rfe(){var C,Q,k,N,Z;for(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Tm.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Mm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Om.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Km)))));return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function Ffe(){var C,Q,k,N,Z;if(C=w,Q=[],k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm))))),k!==r)for(;k!==r;)Q.push(k),k=gI(),k===r&&(k=fI(),k===r&&(k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(Um.test(t.charAt(w))?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Hm)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(Kf.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(Gm)))));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function gI(){var C,Q;return C=w,t.substr(w,2)===jm?(Q=jm,w+=2):(Q=r,we===0&&ve(TQ)),Q!==r&&(Re=C,Q=MQ()),C=Q,C===r&&(C=w,t.substr(w,2)===Ym?(Q=Ym,w+=2):(Q=r,we===0&&ve(qm)),Q!==r&&(Re=C,Q=Jm()),C=Q,C===r&&(C=w,t.substr(w,2)===Wm?(Q=Wm,w+=2):(Q=r,we===0&&ve(zm)),Q!==r&&(Re=C,Q=Vm()),C=Q,C===r&&(C=w,t.substr(w,2)===Uf?(Q=Uf,w+=2):(Q=r,we===0&&ve(OQ)),Q!==r&&(Re=C,Q=KQ()),C=Q,C===r&&(C=w,t.substr(w,2)===_m?(Q=_m,w+=2):(Q=r,we===0&&ve(UQ)),Q!==r&&(Re=C,Q=HQ()),C=Q,C===r&&(C=w,t.substr(w,2)===O?(Q=O,w+=2):(Q=r,we===0&&ve(ht)),Q!==r&&(Re=C,Q=Vc()),C=Q,C===r&&(C=w,t.substr(w,2)===xn?(Q=xn,w+=2):(Q=r,we===0&&ve(Hf)),Q!==r&&(Re=C,Q=Ye()),C=Q,C===r&&(C=w,t.substr(w,2)===nl?(Q=nl,w+=2):(Q=r,we===0&&ve(Xm)),Q!==r&&(Re=C,Q=MM()),C=Q,C===r&&(C=w,t.substr(w,2)===GQ?(Q=GQ,w+=2):(Q=r,we===0&&ve(OM)),Q!==r&&(Re=C,Q=fr()),C=Q)))))))),C}function fI(){var C,Q,k,N,Z,Ie,ot,ut,Tr,ni,Yn,$Q;return C=w,t.substr(w,2)===Bs?(Q=Bs,w+=2):(Q=r,we===0&&ve(jQ)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(Z=[Z,Ie],N=Z):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===Yo?(Q=Yo,w+=2):(Q=r,we===0&&ve($m)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Z=[Z,Ie,ot,ut],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=Zm(k),C=Q):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===_a?(Q=_a,w+=2):(Q=r,we===0&&ve(et)),Q!==r?(k=w,N=w,Z=An(),Z!==r?(Ie=An(),Ie!==r?(ot=An(),ot!==r?(ut=An(),ut!==r?(Tr=An(),Tr!==r?(ni=An(),ni!==r?(Yn=An(),Yn!==r?($Q=An(),$Q!==r?(Z=[Z,Ie,ot,ut,Tr,ni,Yn,$Q],N=Z):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r)):(w=N,N=r),N!==r?k=t.substring(k,w):k=N,k!==r?(Re=C,Q=YQ(k),C=Q):(w=C,C=r)):(w=C,C=r))),C}function An(){var C;return eI.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(tI)),C}function Nfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r)),k!==r)for(;k!==r;)Q.push(k),k=w,t.charCodeAt(w)===92?(N=Va,w++):(N=r,we===0&&ve(jo)),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k===r&&(k=w,N=w,we++,Z=aO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r));else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function _Q(){var C,Q,k,N,Z,Ie;if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;if(k!==r)if(t.charCodeAt(w)===46?(N=Al,w++):(N=r,we===0&&ve(qQ)),N!==r){if(Z=[],De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($)),Ie!==r)for(;Ie!==r;)Z.push(Ie),De.test(t.charAt(w))?(Ie=t.charAt(w),w++):(Ie=r,we===0&&ve($));else Z=r;Z!==r?(Re=C,Q=rI(Q,k,Z),C=Q):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;if(C===r){if(C=w,t.charCodeAt(w)===45?(Q=sl,w++):(Q=r,we===0&&ve(ol)),Q===r&&(t.charCodeAt(w)===43?(Q=al,w++):(Q=r,we===0&&ve(qo))),Q===r&&(Q=null),Q!==r){if(k=[],De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($)),N!==r)for(;N!==r;)k.push(N),De.test(t.charAt(w))?(N=t.charAt(w),w++):(N=r,we===0&&ve($));else k=r;k!==r?(Re=C,Q=iI(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;if(C===r&&(C=w,Q=ZQ(),Q!==r&&(Re=C,Q=JQ(Q)),C=Q,C===r&&(C=w,Q=zf(),Q!==r&&(Re=C,Q=ll(Q)),C=Q,C===r)))if(C=w,t.charCodeAt(w)===40?(Q=W,w++):(Q=r,we===0&&ve(X)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.charCodeAt(w)===41?(Ie=F,w++):(Ie=r,we===0&&ve(D)),Ie!==r?(Re=C,Q=WQ(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r}return C}function XQ(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=_Q(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===42?(Ie=nI,w++):(Ie=r,we===0&&ve(Gf)),Ie===r&&(t.charCodeAt(w)===47?(Ie=_c,w++):(Ie=r,we===0&&ve(jf))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=_Q(),ut!==r?(Re=N,Z=sI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function iO(){var C,Q,k,N,Z,Ie,ot,ut;if(C=w,Q=XQ(),Q!==r){for(k=[],N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r;for(;N!==r;){for(k.push(N),N=w,Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();if(Z!==r)if(t.charCodeAt(w)===43?(Ie=al,w++):(Ie=r,we===0&&ve(qo)),Ie===r&&(t.charCodeAt(w)===45?(Ie=sl,w++):(Ie=r,we===0&&ve(ol))),Ie!==r){for(ot=[],ut=ke();ut!==r;)ot.push(ut),ut=ke();ot!==r?(ut=XQ(),ut!==r?(Re=N,Z=oI(Q,Ie,ut),N=Z):(w=N,N=r)):(w=N,N=r)}else w=N,N=r;else w=N,N=r}k!==r?(Re=C,Q=cl(Q,k),C=Q):(w=C,C=r)}else w=C,C=r;return C}function nO(){var C,Q,k,N,Z,Ie;if(C=w,t.substr(w,3)===Yf?(Q=Yf,w+=3):(Q=r,we===0&&ve(Xc)),Q!==r){for(k=[],N=ke();N!==r;)k.push(N),N=ke();if(k!==r)if(N=iO(),N!==r){for(Z=[],Ie=ke();Ie!==r;)Z.push(Ie),Ie=ke();Z!==r?(t.substr(w,2)===xr?(Ie=xr,w+=2):(Ie=r,we===0&&ve(KM)),Ie!==r?(Re=C,Q=Jo(N),C=Q):(w=C,C=r)):(w=C,C=r)}else w=C,C=r;else w=C,C=r}else w=C,C=r;return C}function sO(){var C,Q,k,N;return C=w,t.substr(w,2)===Zs?(Q=Zs,w+=2):(Q=r,we===0&&ve(aI)),Q!==r?(k=Jf(),k!==r?(t.charCodeAt(w)===41?(N=F,w++):(N=r,we===0&&ve(D)),N!==r?(Re=C,Q=Zc(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C}function ZQ(){var C,Q,k,N,Z,Ie;return C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,2)===le?(N=le,w+=2):(N=r,we===0&&ve(xe)),N!==r?(Z=Sfe(),Z!==r?(t.charCodeAt(w)===125?(Ie=Pe,w++):(Ie=r,we===0&&ve(qe)),Ie!==r?(Re=C,Q=Qe(k,Z),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.substr(w,3)===Ge?(N=Ge,w+=3):(N=r,we===0&&ve(ct)),N!==r?(Re=C,Q=sr(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.substr(w,2)===x?(Q=x,w+=2):(Q=r,we===0&&ve(U)),Q!==r?(k=zf(),k!==r?(t.charCodeAt(w)===125?(N=Pe,w++):(N=r,we===0&&ve(qe)),N!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)):(w=C,C=r),C===r&&(C=w,t.charCodeAt(w)===36?(Q=Afe,w++):(Q=r,we===0&&ve(lfe)),Q!==r?(k=zf(),k!==r?(Re=C,Q=Wo(k),C=Q):(w=C,C=r)):(w=C,C=r)))),C}function Lfe(){var C,Q,k;return C=w,Q=Tfe(),Q!==r?(Re=w,k=cfe(Q),k?k=void 0:k=r,k!==r?(Re=C,Q=ufe(Q),C=Q):(w=C,C=r)):(w=C,C=r),C}function Tfe(){var C,Q,k,N,Z;if(C=w,Q=[],k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r),k!==r)for(;k!==r;)Q.push(k),k=w,N=w,we++,Z=AO(),we--,Z===r?N=void 0:(w=N,N=r),N!==r?(t.length>w?(Z=t.charAt(w),w++):(Z=r,we===0&&ve(Xa)),Z!==r?(Re=k,N=te(Z),k=N):(w=k,k=r)):(w=k,k=r);else Q=r;return Q!==r&&(Re=C,Q=il(Q)),C=Q,C}function oO(){var C,Q,k;if(C=w,Q=[],UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM)),k!==r)for(;k!==r;)Q.push(k),UM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(HM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function zf(){var C,Q,k;if(C=w,Q=[],jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM)),k!==r)for(;k!==r;)Q.push(k),jM.test(t.charAt(w))?(k=t.charAt(w),w++):(k=r,we===0&&ve(YM));else Q=r;return Q!==r&&(Re=C,Q=GM()),C=Q,C}function aO(){var C;return gfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(ffe)),C}function AO(){var C;return hfe.test(t.charAt(w))?(C=t.charAt(w),w++):(C=r,we===0&&ve(pfe)),C}function ke(){var C,Q;if(C=[],qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM)),Q!==r)for(;Q!==r;)C.push(Q),qM.test(t.charAt(w))?(Q=t.charAt(w),w++):(Q=r,we===0&&ve(JM));else C=r;return C}if(lI=n(),lI!==r&&w===t.length)return lI;throw lI!==r&&w{"use strict";function Ike(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xl(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xl)}Ike(Xl,Error);Xl.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=B,L=[]),L.push($))}function qe($,G){return new Xl($,null,null,G)}function re($,G,Ce){return new Xl(Xl.buildMessage($,G),$,G,Ce)}function se(){var $,G,Ce,ee;return $=B,G=be(),G!==r?(t.charCodeAt(B)===47?(Ce=s,B++):(Ce=r,K===0&&Pe(o)),Ce!==r?(ee=be(),ee!==r?(b=$,G=a(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=be(),G!==r&&(b=$,G=l(G)),$=G),$}function be(){var $,G,Ce,ee;return $=B,G=ae(),G!==r?(t.charCodeAt(B)===64?(Ce=c,B++):(Ce=r,K===0&&Pe(u)),Ce!==r?(ee=De(),ee!==r?(b=$,G=g(G,ee),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=ae(),G!==r&&(b=$,G=f(G)),$=G),$}function ae(){var $,G,Ce,ee,Ue;return $=B,t.charCodeAt(B)===64?(G=c,B++):(G=r,K===0&&Pe(u)),G!==r?(Ce=Ae(),Ce!==r?(t.charCodeAt(B)===47?(ee=s,B++):(ee=r,K===0&&Pe(o)),ee!==r?(Ue=Ae(),Ue!==r?(b=$,G=h(),$=G):(B=$,$=r)):(B=$,$=r)):(B=$,$=r)):(B=$,$=r),$===r&&($=B,G=Ae(),G!==r&&(b=$,G=h()),$=G),$}function Ae(){var $,G,Ce;if($=B,G=[],p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d)),Ce!==r)for(;Ce!==r;)G.push(Ce),p.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(d));else G=r;return G!==r&&(b=$,G=h()),$=G,$}function De(){var $,G,Ce;if($=B,G=[],m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E)),Ce!==r)for(;Ce!==r;)G.push(Ce),m.test(t.charAt(B))?(Ce=t.charAt(B),B++):(Ce=r,K===0&&Pe(E));else G=r;return G!==r&&(b=$,G=h()),$=G,$}if(J=n(),J!==r&&B===t.length)return J;throw J!==r&&B{"use strict";function Fz(t){return typeof t=="undefined"||t===null}function yke(t){return typeof t=="object"&&t!==null}function wke(t){return Array.isArray(t)?t:Fz(t)?[]:[t]}function Bke(t,e){var r,i,n,s;if(e)for(s=Object.keys(e),r=0,i=s.length;r{"use strict";function Lp(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Lp.prototype=Object.create(Error.prototype);Lp.prototype.constructor=Lp;Lp.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};Nz.exports=Lp});var Mz=I((Vot,Lz)=>{"use strict";var Tz=$l();function kP(t,e,r,i,n){this.name=t,this.buffer=e,this.position=r,this.line=i,this.column=n}kP.prototype.getSnippet=function(e,r){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,r=r||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>r/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;or/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),Tz.repeat(" ",e)+i+a+s+` -`+Tz.repeat(" ",e+this.position-n+i.length)+"^"};kP.prototype.toString=function(e){var r,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(i+=`: -`+r)),i};Lz.exports=kP});var Xr=I((_ot,Oz)=>{"use strict";var Kz=ng(),vke=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ske=["scalar","sequence","mapping"];function xke(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(i){e[String(i)]=r})}),e}function kke(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(vke.indexOf(r)===-1)throw new Kz('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=xke(e.styleAliases||null),Ske.indexOf(this.kind)===-1)throw new Kz('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}Oz.exports=kke});var ec=I((Xot,Uz)=>{"use strict";var Hz=$l(),hw=ng(),Pke=Xr();function PP(t,e,r){var i=[];return t.include.forEach(function(n){r=PP(n,e,r)}),t[e].forEach(function(n){r.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),r.push(n)}),r.filter(function(n,s){return i.indexOf(s)===-1})}function Dke(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function i(n){t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,r=arguments.length;e{"use strict";var Rke=Xr();Gz.exports=new Rke("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var qz=I(($ot,Yz)=>{"use strict";var Fke=Xr();Yz.exports=new Fke("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var Wz=I((eat,Jz)=>{"use strict";var Nke=Xr();Jz.exports=new Nke("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var pw=I((tat,zz)=>{"use strict";var Lke=ec();zz.exports=new Lke({explicit:[jz(),qz(),Wz()]})});var _z=I((rat,Vz)=>{"use strict";var Tke=Xr();function Mke(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function Oke(){return null}function Kke(t){return t===null}Vz.exports=new Tke("tag:yaml.org,2002:null",{kind:"scalar",resolve:Mke,construct:Oke,predicate:Kke,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var Zz=I((iat,Xz)=>{"use strict";var Uke=Xr();function Hke(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function Gke(t){return t==="true"||t==="True"||t==="TRUE"}function jke(t){return Object.prototype.toString.call(t)==="[object Boolean]"}Xz.exports=new Uke("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hke,construct:Gke,predicate:jke,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var e4=I((nat,$z)=>{"use strict";var Yke=$l(),qke=Xr();function Jke(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function Wke(t){return 48<=t&&t<=55}function zke(t){return 48<=t&&t<=57}function Vke(t){if(t===null)return!1;var e=t.length,r=0,i=!1,n;if(!e)return!1;if(n=t[r],(n==="-"||n==="+")&&(n=t[++r]),n==="0"){if(r+1===e)return!0;if(n=t[++r],n==="b"){for(r++;r=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var i4=I((sat,t4)=>{"use strict";var r4=$l(),Zke=Xr(),$ke=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ePe(t){return!(t===null||!$ke.test(t)||t[t.length-1]==="_")}function tPe(t){var e,r,i,n;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),r*e):r*parseFloat(e,10)}var rPe=/^[-+]?[0-9]+e/;function iPe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(r4.isNegativeZero(t))return"-0.0";return r=t.toString(10),rPe.test(r)?r.replace("e",".e"):r}function nPe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!=0||r4.isNegativeZero(t))}t4.exports=new Zke("tag:yaml.org,2002:float",{kind:"scalar",resolve:ePe,construct:tPe,predicate:nPe,represent:iPe,defaultStyle:"lowercase"})});var DP=I((oat,n4)=>{"use strict";var sPe=ec();n4.exports=new sPe({include:[pw()],implicit:[_z(),Zz(),e4(),i4()]})});var RP=I((aat,s4)=>{"use strict";var oPe=ec();s4.exports=new oPe({include:[DP()]})});var l4=I((Aat,o4)=>{"use strict";var aPe=Xr(),a4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),A4=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function APe(t){return t===null?!1:a4.exec(t)!==null||A4.exec(t)!==null}function lPe(t){var e,r,i,n,s,o,a,l=0,c=null,u,g,f;if(e=a4.exec(t),e===null&&(e=A4.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function cPe(t){return t.toISOString()}o4.exports=new aPe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:APe,construct:lPe,instanceOf:Date,represent:cPe})});var u4=I((lat,c4)=>{"use strict";var uPe=Xr();function gPe(t){return t==="<<"||t===null}c4.exports=new uPe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gPe})});var h4=I((cat,g4)=>{"use strict";var tc;try{f4=require,tc=f4("buffer").Buffer}catch(t){}var f4,fPe=Xr(),FP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function hPe(t){if(t===null)return!1;var e,r,i=0,n=t.length,s=FP;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function pPe(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,s=FP,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return r=n%4*6,r===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):r===18?(a.push(o>>10&255),a.push(o>>2&255)):r===12&&a.push(o>>4&255),tc?tc.from?tc.from(a):new tc(a):a}function dPe(t){var e="",r=0,i,n,s=t.length,o=FP;for(i=0;i>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]),r=(r<<8)+t[i];return n=s%3,n===0?(e+=o[r>>18&63],e+=o[r>>12&63],e+=o[r>>6&63],e+=o[r&63]):n===2?(e+=o[r>>10&63],e+=o[r>>4&63],e+=o[r<<2&63],e+=o[64]):n===1&&(e+=o[r>>2&63],e+=o[r<<4&63],e+=o[64],e+=o[64]),e}function CPe(t){return tc&&tc.isBuffer(t)}g4.exports=new fPe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:hPe,construct:pPe,predicate:CPe,represent:dPe})});var d4=I((uat,p4)=>{"use strict";var mPe=Xr(),IPe=Object.prototype.hasOwnProperty,EPe=Object.prototype.toString;function yPe(t){if(t===null)return!0;var e=[],r,i,n,s,o,a=t;for(r=0,i=a.length;r{"use strict";var BPe=Xr(),QPe=Object.prototype.toString;function bPe(t){if(t===null)return!0;var e,r,i,n,s,o=t;for(s=new Array(o.length),e=0,r=o.length;e{"use strict";var SPe=Xr(),xPe=Object.prototype.hasOwnProperty;function kPe(t){if(t===null)return!0;var e,r=t;for(e in r)if(xPe.call(r,e)&&r[e]!==null)return!1;return!0}function PPe(t){return t!==null?t:{}}I4.exports=new SPe("tag:yaml.org,2002:set",{kind:"mapping",resolve:kPe,construct:PPe})});var og=I((hat,y4)=>{"use strict";var DPe=ec();y4.exports=new DPe({include:[RP()],implicit:[l4(),u4()],explicit:[h4(),d4(),m4(),E4()]})});var B4=I((pat,w4)=>{"use strict";var RPe=Xr();function FPe(){return!0}function NPe(){}function LPe(){return""}function TPe(t){return typeof t=="undefined"}w4.exports=new RPe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:FPe,construct:NPe,predicate:TPe,represent:LPe})});var b4=I((dat,Q4)=>{"use strict";var MPe=Xr();function OPe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),i="";return!(e[0]==="/"&&(r&&(i=r[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function KPe(t){var e=t,r=/\/([gim]*)$/.exec(t),i="";return e[0]==="/"&&(r&&(i=r[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function UPe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function HPe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}Q4.exports=new MPe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:OPe,construct:KPe,predicate:HPe,represent:UPe})});var x4=I((Cat,v4)=>{"use strict";var dw;try{S4=require,dw=S4("esprima")}catch(t){typeof window!="undefined"&&(dw=window.esprima)}var S4,GPe=Xr();function jPe(t){if(t===null)return!1;try{var e="("+t+")",r=dw.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch(i){return!1}}function YPe(t){var e="("+t+")",r=dw.parse(e,{range:!0}),i=[],n;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function qPe(t){return t.toString()}function JPe(t){return Object.prototype.toString.call(t)==="[object Function]"}v4.exports=new GPe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:jPe,construct:YPe,predicate:JPe,represent:qPe})});var Tp=I((mat,k4)=>{"use strict";var P4=ec();k4.exports=P4.DEFAULT=new P4({include:[og()],explicit:[B4(),b4(),x4()]})});var V4=I((Iat,Mp)=>{"use strict";var Ba=$l(),D4=ng(),WPe=Mz(),R4=og(),zPe=Tp(),QA=Object.prototype.hasOwnProperty,Cw=1,F4=2,N4=3,mw=4,NP=1,VPe=2,L4=3,_Pe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,XPe=/[\x85\u2028\u2029]/,ZPe=/[,\[\]\{\}]/,T4=/^(?:!|!!|![a-z\-]+!)$/i,M4=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function O4(t){return Object.prototype.toString.call(t)}function wo(t){return t===10||t===13}function rc(t){return t===9||t===32}function yn(t){return t===9||t===32||t===10||t===13}function ag(t){return t===44||t===91||t===93||t===123||t===125}function $Pe(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function eDe(t){return t===120?2:t===117?4:t===85?8:0}function tDe(t){return 48<=t&&t<=57?t-48:-1}function K4(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` -`:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function rDe(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var U4=new Array(256),H4=new Array(256);for(var Ag=0;Ag<256;Ag++)U4[Ag]=K4(Ag)?1:0,H4[Ag]=K4(Ag);function iDe(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||zPe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function G4(t,e){return new D4(e,new WPe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function st(t,e){throw G4(t,e)}function Iw(t,e){t.onWarning&&t.onWarning.call(null,G4(t,e))}var j4={YAML:function(e,r,i){var n,s,o;e.version!==null&&st(e,"duplication of %YAML directive"),i.length!==1&&st(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&st(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&st(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&Iw(e,"unsupported YAML version of the document")},TAG:function(e,r,i){var n,s;i.length!==2&&st(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],T4.test(n)||st(e,"ill-formed tag handle (first argument) of the TAG directive"),QA.call(e.tagMap,n)&&st(e,'there is a previously declared suffix for "'+n+'" tag handle'),M4.test(s)||st(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function bA(t,e,r,i){var n,s,o,a;if(e1&&(t.result+=Ba.repeat(` -`,e-1))}function nDe(t,e,r){var i,n,s,o,a,l,c,u,g=t.kind,f=t.result,h;if(h=t.input.charCodeAt(t.position),yn(h)||ag(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n)))return!1;for(t.kind="scalar",t.result="",s=o=t.position,a=!1;h!==0;){if(h===58){if(n=t.input.charCodeAt(t.position+1),yn(n)||r&&ag(n))break}else if(h===35){if(i=t.input.charCodeAt(t.position-1),yn(i))break}else{if(t.position===t.lineStart&&Ew(t)||r&&ag(h))break;if(wo(h))if(l=t.line,c=t.lineStart,u=t.lineIndent,jr(t,!1,-1),t.lineIndent>=e){a=!0,h=t.input.charCodeAt(t.position);continue}else{t.position=o,t.line=l,t.lineStart=c,t.lineIndent=u;break}}a&&(bA(t,s,o,!1),TP(t,t.line-l),s=o=t.position,a=!1),rc(h)||(o=t.position+1),h=t.input.charCodeAt(++t.position)}return bA(t,s,o,!1),t.result?!0:(t.kind=g,t.result=f,!1)}function sDe(t,e){var r,i,n;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(bA(t,i,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)i=t.position,t.position++,n=t.position;else return!0;else wo(r)?(bA(t,i,n,!0),TP(t,jr(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);st(t,"unexpected end of the stream within a single quoted scalar")}function oDe(t,e){var r,i,n,s,o,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return bA(t,r,t.position,!0),t.position++,!0;if(a===92){if(bA(t,r,t.position,!0),a=t.input.charCodeAt(++t.position),wo(a))jr(t,!1,e);else if(a<256&&U4[a])t.result+=H4[a],t.position++;else if((o=eDe(a))>0){for(n=o,s=0;n>0;n--)a=t.input.charCodeAt(++t.position),(o=$Pe(a))>=0?s=(s<<4)+o:st(t,"expected hexadecimal character");t.result+=rDe(s),t.position++}else st(t,"unknown escape sequence");r=i=t.position}else wo(a)?(bA(t,r,i,!0),TP(t,jr(t,!1,e)),r=i=t.position):t.position===t.lineStart&&Ew(t)?st(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}st(t,"unexpected end of the stream within a double quoted scalar")}function aDe(t,e){var r=!0,i,n=t.tag,s,o=t.anchor,a,l,c,u,g,f={},h,p,d,m;if(m=t.input.charCodeAt(t.position),m===91)l=93,g=!1,s=[];else if(m===123)l=125,g=!0,s={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=s),m=t.input.charCodeAt(++t.position);m!==0;){if(jr(t,!0,e),m=t.input.charCodeAt(t.position),m===l)return t.position++,t.tag=n,t.anchor=o,t.kind=g?"mapping":"sequence",t.result=s,!0;r||st(t,"missed comma between flow collection entries"),p=h=d=null,c=u=!1,m===63&&(a=t.input.charCodeAt(t.position+1),yn(a)&&(c=u=!0,t.position++,jr(t,!0,e))),i=t.line,cg(t,e,Cw,!1,!0),p=t.tag,h=t.result,jr(t,!0,e),m=t.input.charCodeAt(t.position),(u||t.line===i)&&m===58&&(c=!0,m=t.input.charCodeAt(++t.position),jr(t,!0,e),cg(t,e,Cw,!1,!0),d=t.result),g?lg(t,s,f,p,h,d):c?s.push(lg(t,null,f,p,h,d)):s.push(h),jr(t,!0,e),m=t.input.charCodeAt(t.position),m===44?(r=!0,m=t.input.charCodeAt(++t.position)):r=!1}st(t,"unexpected end of the stream within a flow collection")}function ADe(t,e){var r,i,n=NP,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=t.input.charCodeAt(t.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(t.kind="scalar",t.result="";g!==0;)if(g=t.input.charCodeAt(++t.position),g===43||g===45)NP===n?n=g===43?L4:VPe:st(t,"repeat of a chomping mode identifier");else if((u=tDe(g))>=0)u===0?st(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?st(t,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(rc(g)){do g=t.input.charCodeAt(++t.position);while(rc(g));if(g===35)do g=t.input.charCodeAt(++t.position);while(!wo(g)&&g!==0)}for(;g!==0;){for(LP(t),t.lineIndent=0,g=t.input.charCodeAt(t.position);(!o||t.lineIndenta&&(a=t.lineIndent),wo(g)){l++;continue}if(t.lineIndente)&&l!==0)st(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(cg(t,e,mw,!0,n)&&(p?f=t.result:h=t.result),p||(lg(t,c,u,g,f,h,s,o),g=f=h=null),jr(t,!0,-1),m=t.input.charCodeAt(t.position)),t.lineIndent>e&&m!==0)st(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),g=0,f=t.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result)?(t.result=h.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):st(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):st(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function fDe(t){var e=t.position,r,i,n,s=!1,o;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(o=t.input.charCodeAt(t.position))!==0&&(jr(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||o!==37));){for(s=!0,o=t.input.charCodeAt(++t.position),r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&st(t,"directive name must not be less than one character in length");o!==0;){for(;rc(o);)o=t.input.charCodeAt(++t.position);if(o===35){do o=t.input.charCodeAt(++t.position);while(o!==0&&!wo(o));break}if(wo(o))break;for(r=t.position;o!==0&&!yn(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}o!==0&&LP(t),QA.call(j4,i)?j4[i](t,i,n):Iw(t,'unknown document directive "'+i+'"')}if(jr(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,jr(t,!0,-1)):s&&st(t,"directives end mark is expected"),cg(t,t.lineIndent-1,mw,!1,!0),jr(t,!0,-1),t.checkLineBreaks&&XPe.test(t.input.slice(e,t.position))&&Iw(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Ew(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,jr(t,!0,-1));return}if(t.position{"use strict";var Op=$l(),Kp=ng(),dDe=Tp(),CDe=og(),_4=Object.prototype.toString,X4=Object.prototype.hasOwnProperty,mDe=9,Up=10,IDe=13,EDe=32,yDe=33,wDe=34,Z4=35,BDe=37,QDe=38,bDe=39,vDe=42,$4=44,SDe=45,e5=58,xDe=61,kDe=62,PDe=63,DDe=64,t5=91,r5=93,RDe=96,i5=123,FDe=124,n5=125,Ri={};Ri[0]="\\0";Ri[7]="\\a";Ri[8]="\\b";Ri[9]="\\t";Ri[10]="\\n";Ri[11]="\\v";Ri[12]="\\f";Ri[13]="\\r";Ri[27]="\\e";Ri[34]='\\"';Ri[92]="\\\\";Ri[133]="\\N";Ri[160]="\\_";Ri[8232]="\\L";Ri[8233]="\\P";var NDe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function LDe(t,e){var r,i,n,s,o,a,l;if(e===null)return{};for(r={},i=Object.keys(e),n=0,s=i.length;n0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}else{for(s=0;si&&t[g+1]!==" ",g=s);else if(!ug(o))return yw;a=s>0?t.charCodeAt(s-1):null,f=f&&a5(o,a)}c=c||u&&s-g-1>i&&t[g+1]!==" "}return!l&&!c?f&&!n(t)?l5:c5:r>9&&A5(t)?yw:c?g5:u5}function jDe(t,e,r,i){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&NDe.indexOf(e)!==-1)return"'"+e+"'";var n=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-n),o=i||t.flowLevel>-1&&r>=t.flowLevel;function a(l){return MDe(t,l)}switch(UDe(e,o,t.indent,s,a)){case l5:return e;case c5:return"'"+e.replace(/'/g,"''")+"'";case u5:return"|"+f5(e,t.indent)+h5(o5(e,n));case g5:return">"+f5(e,t.indent)+h5(o5(HDe(e,s),n));case yw:return'"'+GDe(e,s)+'"';default:throw new Kp("impossible error: invalid scalar style")}}()}function f5(t,e){var r=A5(t)?String(e):"",i=t[t.length-1]===` -`,n=i&&(t[t.length-2]===` -`||t===` -`),s=n?"+":i?"":"-";return r+s+` -`}function h5(t){return t[t.length-1]===` -`?t.slice(0,-1):t}function HDe(t,e){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=t.indexOf(` -`);return c=c!==-1?c:t.length,r.lastIndex=c,p5(t.slice(0,c),e)}(),n=t[0]===` -`||t[0]===" ",s,o;o=r.exec(t);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+p5(l,e),n=s}return i}function p5(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=r.exec(t);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+t.slice(n,s),n=s+1),o=a;return l+=` -`,t.length-n>e&&o>n?l+=t.slice(n,o)+` -`+t.slice(o+1):l+=t.slice(n),l.slice(1)}function GDe(t){for(var e="",r,i,n,s=0;s=55296&&r<=56319&&(i=t.charCodeAt(s+1),i>=56320&&i<=57343)){e+=s5((r-55296)*1024+i-56320+65536),s++;continue}n=Ri[r],e+=!n&&ug(r)?t[s]:n||s5(r)}return e}function YDe(t,e,r){var i="",n=t.tag,s,o;for(s=0,o=r.length;s1024&&(u+="? "),u+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),!!ic(t,e,c,!1,!1)&&(u+=t.dump,i+=u));t.tag=n,t.dump="{"+i+"}"}function WDe(t,e,r,i){var n="",s=t.tag,o=Object.keys(r),a,l,c,u,g,f;if(t.sortKeys===!0)o.sort();else if(typeof t.sortKeys=="function")o.sort(t.sortKeys);else if(t.sortKeys)throw new Kp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(t.dump&&Up===t.dump.charCodeAt(0)?f+="?":f+="? "),f+=t.dump,g&&(f+=OP(t,e)),!!ic(t,e+1,u,!0,g)&&(t.dump&&Up===t.dump.charCodeAt(0)?f+=":":f+=": ",f+=t.dump,n+=f));t.tag=s,t.dump=n||"{}"}function d5(t,e,r){var i,n,s,o,a,l;for(n=r?t.explicitTypes:t.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');t.dump=i}return!0}return!1}function ic(t,e,r,i,n,s){t.tag=null,t.dump=r,d5(t,r,!1)||d5(t,r,!0);var o=_4.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=t.duplicates.indexOf(r),c=l!==-1),(t.tag!==null&&t.tag!=="?"||c||t.indent!==2&&e>0)&&(n=!1),c&&t.usedDuplicates[l])t.dump="*ref_"+l;else{if(a&&c&&!t.usedDuplicates[l]&&(t.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(t.dump).length!==0?(WDe(t,e,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(JDe(t,e,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump));else if(o==="[object Array]"){var u=t.noArrayIndent&&e>0?e-1:e;i&&t.dump.length!==0?(qDe(t,u,t.dump,n),c&&(t.dump="&ref_"+l+t.dump)):(YDe(t,u,t.dump),c&&(t.dump="&ref_"+l+" "+t.dump))}else if(o==="[object String]")t.tag!=="?"&&jDe(t,t.dump,e,s);else{if(t.skipInvalid)return!1;throw new Kp("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function zDe(t,e){var r=[],i=[],n,s;for(UP(t,r,i),n=0,s=i.length;n{"use strict";var ww=V4(),I5=m5();function Bw(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Qr.exports.Type=Xr();Qr.exports.Schema=ec();Qr.exports.FAILSAFE_SCHEMA=pw();Qr.exports.JSON_SCHEMA=DP();Qr.exports.CORE_SCHEMA=RP();Qr.exports.DEFAULT_SAFE_SCHEMA=og();Qr.exports.DEFAULT_FULL_SCHEMA=Tp();Qr.exports.load=ww.load;Qr.exports.loadAll=ww.loadAll;Qr.exports.safeLoad=ww.safeLoad;Qr.exports.safeLoadAll=ww.safeLoadAll;Qr.exports.dump=I5.dump;Qr.exports.safeDump=I5.safeDump;Qr.exports.YAMLException=ng();Qr.exports.MINIMAL_SCHEMA=pw();Qr.exports.SAFE_SCHEMA=og();Qr.exports.DEFAULT_SCHEMA=Tp();Qr.exports.scan=Bw("scan");Qr.exports.parse=Bw("parse");Qr.exports.compose=Bw("compose");Qr.exports.addConstructor=Bw("addConstructor")});var w5=I((wat,y5)=>{"use strict";var _De=E5();y5.exports=_De});var Q5=I((Bat,B5)=>{"use strict";function XDe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function nc(t,e,r,i){this.message=t,this.expected=e,this.found=r,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,nc)}XDe(nc,Error);nc.buildMessage=function(t,e){var r={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[xe]:le})))},H=function(x){return x},L=function(x){return x},K=Yo("correct indentation"),J=" ",ne=fr(" ",!1),q=function(x){return x.length===Zc*aI},A=function(x){return x.length===(Zc+1)*aI},V=function(){return Zc++,!0},W=function(){return Zc--,!0},X=function(){return Xm()},F=Yo("pseudostring"),D=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,he=Bs(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),pe=/^[^\r\n\t ,\][{}:#"']/,Ne=Bs(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Xm().replace(/^ *| *$/g,"")},qe="--",re=fr("--",!1),se=/^[a-zA-Z\/0-9]/,be=Bs([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),ae=/^[^\r\n\t :,]/,Ae=Bs(["\r",` -`," "," ",":",","],!0,!1),De="null",$=fr("null",!1),G=function(){return null},Ce="true",ee=fr("true",!1),Ue=function(){return!0},Oe="false",vt=fr("false",!1),dt=function(){return!1},ri=Yo("string"),ii='"',an=fr('"',!1),yr=function(){return""},Ki=function(x){return x},Qi=function(x){return x.join("")},Go=/^[^"\\\0-\x1F\x7F]/,wr=Bs(['"',"\\",["\0",""],"\x7F"],!0,!1),Ui='\\"',ws=fr('\\"',!1),Tf=function(){return'"'},Mf="\\\\",Rm=fr("\\\\",!1),Fm=function(){return"\\"},Nm="\\/",DQ=fr("\\/",!1),RQ=function(){return"/"},Of="\\b",FQ=fr("\\b",!1),NQ=function(){return"\b"},Lm="\\f",LQ=fr("\\f",!1),Va=function(){return"\f"},jo="\\n",Tm=fr("\\n",!1),Mm=function(){return` -`},te="\\r",Om=fr("\\r",!1),Km=function(){return"\r"},il="\\t",Um=fr("\\t",!1),Hm=function(){return" "},Kf="\\u",Gm=fr("\\u",!1),jm=function(x,U,le,xe){return String.fromCharCode(parseInt(`0x${x}${U}${le}${xe}`))},TQ=/^[0-9a-fA-F]/,MQ=Bs([["0","9"],["a","f"],["A","F"]],!1,!1),Ym=Yo("blank space"),qm=/^[ \t]/,Jm=Bs([" "," "],!1,!1),Wm=Yo("white space"),zm=/^[ \t\n\r]/,Vm=Bs([" "," ",` -`,"\r"],!1,!1),Uf=`\r -`,OQ=fr(`\r -`,!1),KQ=` -`,_m=fr(` -`,!1),UQ="\r",HQ=fr("\r",!1),O=0,ht=0,Vc=[{line:1,column:1}],xn=0,Hf=[],Ye=0,nl;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Xm(){return t.substring(ht,O)}function MM(){return _a(ht,O)}function GQ(x,U){throw U=U!==void 0?U:_a(ht,O),eI([Yo(x)],t.substring(ht,O),U)}function OM(x,U){throw U=U!==void 0?U:_a(ht,O),YQ(x,U)}function fr(x,U){return{type:"literal",text:x,ignoreCase:U}}function Bs(x,U,le){return{type:"class",parts:x,inverted:U,ignoreCase:le}}function jQ(){return{type:"any"}}function Zm(){return{type:"end"}}function Yo(x){return{type:"other",description:x}}function $m(x){var U=Vc[x],le;if(U)return U;for(le=x-1;!Vc[le];)le--;for(U=Vc[le],U={line:U.line,column:U.column};lexn&&(xn=O,Hf=[]),Hf.push(x))}function YQ(x,U){return new nc(x,null,null,U)}function eI(x,U,le){return new nc(nc.buildMessage(x,U),x,U,le)}function tI(){var x;return x=ol(),x}function Xa(){var x,U,le;for(x=O,U=[],le=sl();le!==r;)U.push(le),le=sl();return U!==r&&(ht=x,U=s(U)),x=U,x}function sl(){var x,U,le,xe,Qe;return x=O,U=Al(),U!==r?(t.charCodeAt(O)===45?(le=o,O++):(le=r,Ye===0&&et(a)),le!==r?(xe=xr(),xe!==r?(Qe=qo(),Qe!==r?(ht=x,U=l(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x}function ol(){var x,U,le;for(x=O,U=[],le=al();le!==r;)U.push(le),le=al();return U!==r&&(ht=x,U=c(U)),x=U,x}function al(){var x,U,le,xe,Qe,Ge,ct,sr,Wo;if(x=O,U=xr(),U===r&&(U=null),U!==r){if(le=O,t.charCodeAt(O)===35?(xe=u,O++):(xe=r,Ye===0&&et(g)),xe!==r){if(Qe=[],Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r),Ge!==r)for(;Ge!==r;)Qe.push(Ge),Ge=O,ct=O,Ye++,sr=Zs(),Ye--,sr===r?ct=void 0:(O=ct,ct=r),ct!==r?(t.length>O?(sr=t.charAt(O),O++):(sr=r,Ye===0&&et(f)),sr!==r?(ct=[ct,sr],Ge=ct):(O=Ge,Ge=r)):(O=Ge,Ge=r);else Qe=r;Qe!==r?(xe=[xe,Qe],le=xe):(O=le,le=r)}else O=le,le=r;if(le===r&&(le=null),le!==r){if(xe=[],Qe=Jo(),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=Jo();else xe=r;xe!==r?(ht=x,U=h(),x=U):(O=x,x=r)}else O=x,x=r}else O=x,x=r;if(x===r&&(x=O,U=Al(),U!==r?(le=JQ(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Al(),U!==r?(le=ll(),le!==r?(xe=xr(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(O)===58?(Qe=p,O++):(Qe=r,Ye===0&&et(d)),Qe!==r?(Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(ct=qo(),ct!==r?(ht=x,U=m(le,ct),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))){if(x=O,U=Al(),U!==r)if(le=ll(),le!==r)if(xe=xr(),xe!==r)if(Qe=nI(),Qe!==r){if(Ge=[],ct=Jo(),ct!==r)for(;ct!==r;)Ge.push(ct),ct=Jo();else Ge=r;Ge!==r?(ht=x,U=m(le,Qe),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;else O=x,x=r;else O=x,x=r;if(x===r)if(x=O,U=Al(),U!==r)if(le=ll(),le!==r){if(xe=[],Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r),Qe!==r)for(;Qe!==r;)xe.push(Qe),Qe=O,Ge=xr(),Ge===r&&(Ge=null),Ge!==r?(t.charCodeAt(O)===44?(ct=E,O++):(ct=r,Ye===0&&et(B)),ct!==r?(sr=xr(),sr===r&&(sr=null),sr!==r?(Wo=ll(),Wo!==r?(ht=Qe,Ge=b(le,Wo),Qe=Ge):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r)):(O=Qe,Qe=r);else xe=r;xe!==r?(Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(t.charCodeAt(O)===58?(Ge=p,O++):(Ge=r,Ye===0&&et(d)),Ge!==r?(ct=xr(),ct===r&&(ct=null),ct!==r?(sr=qo(),sr!==r?(ht=x,U=R(le,xe,sr),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)}else O=x,x=r;else O=x,x=r}return x}function qo(){var x,U,le,xe,Qe,Ge,ct;if(x=O,U=O,Ye++,le=O,xe=Zs(),xe!==r?(Qe=qQ(),Qe!==r?(t.charCodeAt(O)===45?(Ge=o,O++):(Ge=r,Ye===0&&et(a)),Ge!==r?(ct=xr(),ct!==r?(xe=[xe,Qe,Ge,ct],le=xe):(O=le,le=r)):(O=le,le=r)):(O=le,le=r)):(O=le,le=r),Ye--,le!==r?(O=U,U=void 0):U=r,U!==r?(le=Jo(),le!==r?(xe=rI(),xe!==r?(Qe=Xa(),Qe!==r?(Ge=iI(),Ge!==r?(ht=x,U=H(Qe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,U=Zs(),U!==r?(le=rI(),le!==r?(xe=ol(),xe!==r?(Qe=iI(),Qe!==r?(ht=x,U=H(xe),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r),x===r))if(x=O,U=WQ(),U!==r){if(le=[],xe=Jo(),xe!==r)for(;xe!==r;)le.push(xe),xe=Jo();else le=r;le!==r?(ht=x,U=L(U),x=U):(O=x,x=r)}else O=x,x=r;return x}function Al(){var x,U,le;for(Ye++,x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=q(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),Ye--,x===r&&(U=r,Ye===0&&et(K)),x}function qQ(){var x,U,le;for(x=O,U=[],t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));le!==r;)U.push(le),t.charCodeAt(O)===32?(le=J,O++):(le=r,Ye===0&&et(ne));return U!==r?(ht=O,le=A(U),le?le=void 0:le=r,le!==r?(U=[U,le],x=U):(O=x,x=r)):(O=x,x=r),x}function rI(){var x;return ht=O,x=V(),x?x=void 0:x=r,x}function iI(){var x;return ht=O,x=W(),x?x=void 0:x=r,x}function JQ(){var x;return x=cl(),x===r&&(x=Gf()),x}function ll(){var x,U,le;if(x=cl(),x===r){if(x=O,U=[],le=_c(),le!==r)for(;le!==r;)U.push(le),le=_c();else U=r;U!==r&&(ht=x,U=X()),x=U}return x}function WQ(){var x;return x=jf(),x===r&&(x=sI(),x===r&&(x=cl(),x===r&&(x=Gf()))),x}function nI(){var x;return x=jf(),x===r&&(x=cl(),x===r&&(x=_c())),x}function Gf(){var x,U,le,xe,Qe,Ge;if(Ye++,x=O,D.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(he)),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(pe.test(t.charAt(O))?(Ge=t.charAt(O),O++):(Ge=r,Ye===0&&et(Ne)),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;return Ye--,x===r&&(U=r,Ye===0&&et(F)),x}function _c(){var x,U,le,xe,Qe;if(x=O,t.substr(O,2)===qe?(U=qe,O+=2):(U=r,Ye===0&&et(re)),U===r&&(U=null),U!==r)if(se.test(t.charAt(O))?(le=t.charAt(O),O++):(le=r,Ye===0&&et(be)),le!==r){for(xe=[],ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));Qe!==r;)xe.push(Qe),ae.test(t.charAt(O))?(Qe=t.charAt(O),O++):(Qe=r,Ye===0&&et(Ae));xe!==r?(ht=x,U=Pe(),x=U):(O=x,x=r)}else O=x,x=r;else O=x,x=r;return x}function jf(){var x,U;return x=O,t.substr(O,4)===De?(U=De,O+=4):(U=r,Ye===0&&et($)),U!==r&&(ht=x,U=G()),x=U,x}function sI(){var x,U;return x=O,t.substr(O,4)===Ce?(U=Ce,O+=4):(U=r,Ye===0&&et(ee)),U!==r&&(ht=x,U=Ue()),x=U,x===r&&(x=O,t.substr(O,5)===Oe?(U=Oe,O+=5):(U=r,Ye===0&&et(vt)),U!==r&&(ht=x,U=dt()),x=U),x}function cl(){var x,U,le,xe;return Ye++,x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(t.charCodeAt(O)===34?(le=ii,O++):(le=r,Ye===0&&et(an)),le!==r?(ht=x,U=yr(),x=U):(O=x,x=r)):(O=x,x=r),x===r&&(x=O,t.charCodeAt(O)===34?(U=ii,O++):(U=r,Ye===0&&et(an)),U!==r?(le=oI(),le!==r?(t.charCodeAt(O)===34?(xe=ii,O++):(xe=r,Ye===0&&et(an)),xe!==r?(ht=x,U=Ki(le),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)),Ye--,x===r&&(U=r,Ye===0&&et(ri)),x}function oI(){var x,U,le;if(x=O,U=[],le=Yf(),le!==r)for(;le!==r;)U.push(le),le=Yf();else U=r;return U!==r&&(ht=x,U=Qi(U)),x=U,x}function Yf(){var x,U,le,xe,Qe,Ge;return Go.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(wr)),x===r&&(x=O,t.substr(O,2)===Ui?(U=Ui,O+=2):(U=r,Ye===0&&et(ws)),U!==r&&(ht=x,U=Tf()),x=U,x===r&&(x=O,t.substr(O,2)===Mf?(U=Mf,O+=2):(U=r,Ye===0&&et(Rm)),U!==r&&(ht=x,U=Fm()),x=U,x===r&&(x=O,t.substr(O,2)===Nm?(U=Nm,O+=2):(U=r,Ye===0&&et(DQ)),U!==r&&(ht=x,U=RQ()),x=U,x===r&&(x=O,t.substr(O,2)===Of?(U=Of,O+=2):(U=r,Ye===0&&et(FQ)),U!==r&&(ht=x,U=NQ()),x=U,x===r&&(x=O,t.substr(O,2)===Lm?(U=Lm,O+=2):(U=r,Ye===0&&et(LQ)),U!==r&&(ht=x,U=Va()),x=U,x===r&&(x=O,t.substr(O,2)===jo?(U=jo,O+=2):(U=r,Ye===0&&et(Tm)),U!==r&&(ht=x,U=Mm()),x=U,x===r&&(x=O,t.substr(O,2)===te?(U=te,O+=2):(U=r,Ye===0&&et(Om)),U!==r&&(ht=x,U=Km()),x=U,x===r&&(x=O,t.substr(O,2)===il?(U=il,O+=2):(U=r,Ye===0&&et(Um)),U!==r&&(ht=x,U=Hm()),x=U,x===r&&(x=O,t.substr(O,2)===Kf?(U=Kf,O+=2):(U=r,Ye===0&&et(Gm)),U!==r?(le=Xc(),le!==r?(xe=Xc(),xe!==r?(Qe=Xc(),Qe!==r?(Ge=Xc(),Ge!==r?(ht=x,U=jm(le,xe,Qe,Ge),x=U):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)):(O=x,x=r)))))))))),x}function Xc(){var x;return TQ.test(t.charAt(O))?(x=t.charAt(O),O++):(x=r,Ye===0&&et(MQ)),x}function xr(){var x,U;if(Ye++,x=[],qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm)),U!==r)for(;U!==r;)x.push(U),qm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Jm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Ym)),x}function KM(){var x,U;if(Ye++,x=[],zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm)),U!==r)for(;U!==r;)x.push(U),zm.test(t.charAt(O))?(U=t.charAt(O),O++):(U=r,Ye===0&&et(Vm));else x=r;return Ye--,x===r&&(U=r,Ye===0&&et(Wm)),x}function Jo(){var x,U,le,xe,Qe,Ge;if(x=O,U=Zs(),U!==r){for(le=[],xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);xe!==r;)le.push(xe),xe=O,Qe=xr(),Qe===r&&(Qe=null),Qe!==r?(Ge=Zs(),Ge!==r?(Qe=[Qe,Ge],xe=Qe):(O=xe,xe=r)):(O=xe,xe=r);le!==r?(U=[U,le],x=U):(O=x,x=r)}else O=x,x=r;return x}function Zs(){var x;return t.substr(O,2)===Uf?(x=Uf,O+=2):(x=r,Ye===0&&et(OQ)),x===r&&(t.charCodeAt(O)===10?(x=KQ,O++):(x=r,Ye===0&&et(_m)),x===r&&(t.charCodeAt(O)===13?(x=UQ,O++):(x=r,Ye===0&&et(HQ)))),x}let aI=2,Zc=0;if(nl=n(),nl!==r&&O===t.length)return nl;throw nl!==r&&O{var fRe=typeof global=="object"&&global&&global.Object===Object&&global;V5.exports=fRe});var Ks=I((Zat,_5)=>{var hRe=WP(),pRe=typeof self=="object"&&self&&self.Object===Object&&self,dRe=hRe||pRe||Function("return this")();_5.exports=dRe});var ac=I(($at,X5)=>{var CRe=Ks(),mRe=CRe.Symbol;X5.exports=mRe});var $5=I((eAt,Z5)=>{function IRe(t,e){for(var r=-1,i=t==null?0:t.length,n=Array(i);++r{var ERe=Array.isArray;e6.exports=ERe});var n6=I((rAt,t6)=>{var r6=ac(),i6=Object.prototype,yRe=i6.hasOwnProperty,wRe=i6.toString,Jp=r6?r6.toStringTag:void 0;function BRe(t){var e=yRe.call(t,Jp),r=t[Jp];try{t[Jp]=void 0;var i=!0}catch(s){}var n=wRe.call(t);return i&&(e?t[Jp]=r:delete t[Jp]),n}t6.exports=BRe});var o6=I((iAt,s6)=>{var QRe=Object.prototype,bRe=QRe.toString;function vRe(t){return bRe.call(t)}s6.exports=vRe});var Ac=I((nAt,a6)=>{var A6=ac(),SRe=n6(),xRe=o6(),kRe="[object Null]",PRe="[object Undefined]",l6=A6?A6.toStringTag:void 0;function DRe(t){return t==null?t===void 0?PRe:kRe:l6&&l6 in Object(t)?SRe(t):xRe(t)}a6.exports=DRe});var Qo=I((sAt,c6)=>{function RRe(t){return t!=null&&typeof t=="object"}c6.exports=RRe});var Nw=I((oAt,u6)=>{var FRe=Ac(),NRe=Qo(),LRe="[object Symbol]";function TRe(t){return typeof t=="symbol"||NRe(t)&&FRe(t)==LRe}u6.exports=TRe});var C6=I((aAt,g6)=>{var f6=ac(),MRe=$5(),ORe=As(),KRe=Nw(),URe=1/0,h6=f6?f6.prototype:void 0,p6=h6?h6.toString:void 0;function d6(t){if(typeof t=="string")return t;if(ORe(t))return MRe(t,d6)+"";if(KRe(t))return p6?p6.call(t):"";var e=t+"";return e=="0"&&1/t==-URe?"-0":e}g6.exports=d6});var gg=I((AAt,m6)=>{var HRe=C6();function GRe(t){return t==null?"":HRe(t)}m6.exports=GRe});var zP=I((lAt,I6)=>{function jRe(t,e,r){var i=-1,n=t.length;e<0&&(e=-e>n?0:n+e),r=r>n?n:r,r<0&&(r+=n),n=e>r?0:r-e>>>0,e>>>=0;for(var s=Array(n);++i{var YRe=zP();function qRe(t,e,r){var i=t.length;return r=r===void 0?i:r,!e&&r>=i?t:YRe(t,e,r)}E6.exports=qRe});var VP=I((uAt,w6)=>{var JRe="\\ud800-\\udfff",WRe="\\u0300-\\u036f",zRe="\\ufe20-\\ufe2f",VRe="\\u20d0-\\u20ff",_Re=WRe+zRe+VRe,XRe="\\ufe0e\\ufe0f",ZRe="\\u200d",$Re=RegExp("["+ZRe+JRe+_Re+XRe+"]");function eFe(t){return $Re.test(t)}w6.exports=eFe});var Q6=I((gAt,B6)=>{function tFe(t){return t.split("")}B6.exports=tFe});var R6=I((fAt,b6)=>{var v6="\\ud800-\\udfff",rFe="\\u0300-\\u036f",iFe="\\ufe20-\\ufe2f",nFe="\\u20d0-\\u20ff",sFe=rFe+iFe+nFe,oFe="\\ufe0e\\ufe0f",aFe="["+v6+"]",_P="["+sFe+"]",XP="\\ud83c[\\udffb-\\udfff]",AFe="(?:"+_P+"|"+XP+")",S6="[^"+v6+"]",x6="(?:\\ud83c[\\udde6-\\uddff]){2}",k6="[\\ud800-\\udbff][\\udc00-\\udfff]",lFe="\\u200d",P6=AFe+"?",D6="["+oFe+"]?",cFe="(?:"+lFe+"(?:"+[S6,x6,k6].join("|")+")"+D6+P6+")*",uFe=D6+P6+cFe,gFe="(?:"+[S6+_P+"?",_P,x6,k6,aFe].join("|")+")",fFe=RegExp(XP+"(?="+XP+")|"+gFe+uFe,"g");function hFe(t){return t.match(fFe)||[]}b6.exports=hFe});var N6=I((hAt,F6)=>{var pFe=Q6(),dFe=VP(),CFe=R6();function mFe(t){return dFe(t)?CFe(t):pFe(t)}F6.exports=mFe});var T6=I((pAt,L6)=>{var IFe=y6(),EFe=VP(),yFe=N6(),wFe=gg();function BFe(t){return function(e){e=wFe(e);var r=EFe(e)?yFe(e):void 0,i=r?r[0]:e.charAt(0),n=r?IFe(r,1).join(""):e.slice(1);return i[t]()+n}}L6.exports=BFe});var O6=I((dAt,M6)=>{var QFe=T6(),bFe=QFe("toUpperCase");M6.exports=bFe});var ZP=I((CAt,K6)=>{var vFe=gg(),SFe=O6();function xFe(t){return SFe(vFe(t).toLowerCase())}K6.exports=xFe});var H6=I((mAt,U6)=>{"use strict";U6.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Wp=I((IAt,$P)=>{"use strict";var kFe=H6(),G6=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,i=()=>{r--,e.length>0&&e.shift()()},n=(a,l,...c)=>{r++;let u=kFe(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{rnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),o};$P.exports=G6;$P.exports.default=G6});var X6=I((FAt,Mw)=>{function PFe(){var t=0,e=1,r=2,i=3,n=4,s=5,o=6,a=7,l=8,c=9,u=10,g=11,f=12,h=13,p=14,d=15,m=16,E=17,B=0,b=1,R=2,H=3,L=4;function K(A,V){return 55296<=A.charCodeAt(V)&&A.charCodeAt(V)<=56319&&56320<=A.charCodeAt(V+1)&&A.charCodeAt(V+1)<=57343}function J(A,V){V===void 0&&(V=0);var W=A.charCodeAt(V);if(55296<=W&&W<=56319&&V=1){var X=A.charCodeAt(V-1),F=W;return 55296<=X&&X<=56319?(X-55296)*1024+(F-56320)+65536:F}return W}function ne(A,V,W){var X=[A].concat(V).concat([W]),F=X[X.length-2],D=W,he=X.lastIndexOf(p);if(he>1&&X.slice(1,he).every(function(Pe){return Pe==i})&&[i,h,E].indexOf(A)==-1)return R;var pe=X.lastIndexOf(n);if(pe>0&&X.slice(1,pe).every(function(Pe){return Pe==n})&&[f,n].indexOf(F)==-1)return X.filter(function(Pe){return Pe==n}).length%2==1?H:L;if(F==t&&D==e)return B;if(F==r||F==t||F==e)return D==p&&V.every(function(Pe){return Pe==i})?R:b;if(D==r||D==t||D==e)return b;if(F==o&&(D==o||D==a||D==c||D==u))return B;if((F==c||F==a)&&(D==a||D==l))return B;if((F==u||F==l)&&D==l)return B;if(D==i||D==d)return B;if(D==s)return B;if(F==f)return B;var Ne=X.indexOf(i)!=-1?X.lastIndexOf(i)-1:X.length-2;return[h,E].indexOf(X[Ne])!=-1&&X.slice(Ne+1,-1).every(function(Pe){return Pe==i})&&D==p||F==d&&[m,E].indexOf(D)!=-1?B:V.indexOf(n)!=-1?R:F==n&&D==n?B:b}this.nextBreak=function(A,V){if(V===void 0&&(V=0),V<0)return 0;if(V>=A.length-1)return A.length;for(var W=q(J(A,V)),X=[],F=V+1;F{var DFe=X6(),RFe=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,FFe=new DFe;Z6.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let i=r-e,n="",s=0,o=0;for(;t.length>0;){let a=t.match(RFe)||[t,t,void 0],l=FFe.splitGraphemes(a[1]),c=Math.min(e-s,l.length);l=l.slice(c);let u=Math.min(i-o,l.length);n+=l.slice(0,u).join(""),s+=c,o+=u,typeof a[2]!="undefined"&&(n+=a[2]),t=t.slice(a[0].length)}return n}});var fg=I((alt,f9)=>{"use strict";var h9=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]),olt=f9.exports=t=>t?Object.keys(t).map(e=>[h9.has(e)?h9.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var hg=I((Alt,p9)=>{"use strict";var JFe=require("events"),d9=require("stream"),_p=Rh(),C9=require("string_decoder").StringDecoder,va=Symbol("EOF"),Xp=Symbol("maybeEmitEnd"),xA=Symbol("emittedEnd"),Gw=Symbol("emittingEnd"),jw=Symbol("closed"),m9=Symbol("read"),iD=Symbol("flush"),I9=Symbol("flushChunk"),Bn=Symbol("encoding"),Sa=Symbol("decoder"),Yw=Symbol("flowing"),Zp=Symbol("paused"),$p=Symbol("resume"),rn=Symbol("bufferLength"),E9=Symbol("bufferPush"),nD=Symbol("bufferShift"),Ni=Symbol("objectMode"),Li=Symbol("destroyed"),y9=global._MP_NO_ITERATOR_SYMBOLS_!=="1",WFe=y9&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),zFe=y9&&Symbol.iterator||Symbol("iterator not implemented"),w9=t=>t==="end"||t==="finish"||t==="prefinish",VFe=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,_Fe=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t);p9.exports=class B9 extends d9{constructor(e){super();this[Yw]=!1,this[Zp]=!1,this.pipes=new _p,this.buffer=new _p,this[Ni]=e&&e.objectMode||!1,this[Ni]?this[Bn]=null:this[Bn]=e&&e.encoding||null,this[Bn]==="buffer"&&(this[Bn]=null),this[Sa]=this[Bn]?new C9(this[Bn]):null,this[va]=!1,this[xA]=!1,this[Gw]=!1,this[jw]=!1,this.writable=!0,this.readable=!0,this[rn]=0,this[Li]=!1}get bufferLength(){return this[rn]}get encoding(){return this[Bn]}set encoding(e){if(this[Ni])throw new Error("cannot set encoding in objectMode");if(this[Bn]&&e!==this[Bn]&&(this[Sa]&&this[Sa].lastNeed||this[rn]))throw new Error("cannot change encoding");this[Bn]!==e&&(this[Sa]=e?new C9(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Sa].write(r)))),this[Bn]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ni]}set objectMode(e){this[Ni]=this[Ni]||!!e}write(e,r,i){if(this[va])throw new Error("write after end");return this[Li]?(this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0):(typeof r=="function"&&(i=r,r="utf8"),r||(r="utf8"),!this[Ni]&&!Buffer.isBuffer(e)&&(_Fe(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):VFe(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),!this.objectMode&&!e.length?(this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing):(typeof e=="string"&&!this[Ni]&&!(r===this[Bn]&&!this[Sa].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[Bn]&&(e=this[Sa].write(e)),this.flowing?(this[rn]!==0&&this[iD](!0),this.emit("data",e)):this[E9](e),this[rn]!==0&&this.emit("readable"),i&&i(),this.flowing))}read(e){if(this[Li])return null;try{return this[rn]===0||e===0||e>this[rn]?null:(this[Ni]&&(e=null),this.buffer.length>1&&!this[Ni]&&(this.encoding?this.buffer=new _p([Array.from(this.buffer).join("")]):this.buffer=new _p([Buffer.concat(Array.from(this.buffer),this[rn])])),this[m9](e||null,this.buffer.head.value))}finally{this[Xp]()}}[m9](e,r){return e===r.length||e===null?this[nD]():(this.buffer.head.value=r.slice(e),r=r.slice(0,e),this[rn]-=e),this.emit("data",r),!this.buffer.length&&!this[va]&&this.emit("drain"),r}end(e,r,i){return typeof e=="function"&&(i=e,e=null),typeof r=="function"&&(i=r,r="utf8"),e&&this.write(e,r),i&&this.once("end",i),this[va]=!0,this.writable=!1,(this.flowing||!this[Zp])&&this[Xp](),this}[$p](){this[Li]||(this[Zp]=!1,this[Yw]=!0,this.emit("resume"),this.buffer.length?this[iD]():this[va]?this[Xp]():this.emit("drain"))}resume(){return this[$p]()}pause(){this[Yw]=!1,this[Zp]=!0}get destroyed(){return this[Li]}get flowing(){return this[Yw]}get paused(){return this[Zp]}[E9](e){return this[Ni]?this[rn]+=1:this[rn]+=e.length,this.buffer.push(e)}[nD](){return this.buffer.length&&(this[Ni]?this[rn]-=1:this[rn]-=this.buffer.head.value.length),this.buffer.shift()}[iD](e){do;while(this[I9](this[nD]()));!e&&!this.buffer.length&&!this[va]&&this.emit("drain")}[I9](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Li])return;let i=this[xA];r=r||{},e===process.stdout||e===process.stderr?r.end=!1:r.end=r.end!==!1;let n={dest:e,opts:r,ondrain:s=>this[$p]()};return this.pipes.push(n),e.on("drain",n.ondrain),this[$p](),i&&n.opts.end&&n.dest.end(),e}addListener(e,r){return this.on(e,r)}on(e,r){try{return super.on(e,r)}finally{e==="data"&&!this.pipes.length&&!this.flowing?this[$p]():w9(e)&&this[xA]&&(super.emit(e),this.removeAllListeners(e))}}get emittedEnd(){return this[xA]}[Xp](){!this[Gw]&&!this[xA]&&!this[Li]&&this.buffer.length===0&&this[va]&&(this[Gw]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[jw]&&this.emit("close"),this[Gw]=!1)}emit(e,r){if(e!=="error"&&e!=="close"&&e!==Li&&this[Li])return;if(e==="data"){if(!r)return;this.pipes.length&&this.pipes.forEach(n=>n.dest.write(r)===!1&&this.pause())}else if(e==="end"){if(this[xA]===!0)return;this[xA]=!0,this.readable=!1,this[Sa]&&(r=this[Sa].end(),r&&(this.pipes.forEach(n=>n.dest.write(r)),super.emit("data",r))),this.pipes.forEach(n=>{n.dest.removeListener("drain",n.ondrain),n.opts.end&&n.dest.end()})}else if(e==="close"&&(this[jw]=!0,!this[xA]&&!this[Li]))return;let i=new Array(arguments.length);if(i[0]=e,i[1]=r,arguments.length>2)for(let n=2;n{e.push(i),this[Ni]||(e.dataLength+=i.length)}),r.then(()=>e)}concat(){return this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[Ni]?Promise.reject(new Error("cannot concat in objectMode")):this[Bn]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Li,()=>r(new Error("stream destroyed"))),this.on("end",()=>e()),this.on("error",i=>r(i))})}[WFe](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[va])return Promise.resolve({done:!0});let i=null,n=null,s=c=>{this.removeListener("data",o),this.removeListener("end",a),n(c)},o=c=>{this.removeListener("error",s),this.removeListener("end",a),this.pause(),i({value:c,done:!!this[va]})},a=()=>{this.removeListener("error",s),this.removeListener("data",o),i({done:!0})},l=()=>s(new Error("stream destroyed"));return new Promise((c,u)=>{n=u,i=c,this.once(Li,l),this.once("error",s),this.once("end",a),this.once("data",o)})}}}[zFe](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Li]?(e?this.emit("error",e):this.emit(Li),this):(this[Li]=!0,this.buffer=new _p,this[rn]=0,typeof this.close=="function"&&!this[jw]&&this.close(),e?this.emit("error",e):this.emit(Li),this)}static isStream(e){return!!e&&(e instanceof B9||e instanceof d9||e instanceof JFe&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var b9=I((llt,Q9)=>{var XFe=require("zlib").constants||{ZLIB_VERNUM:4736};Q9.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:Infinity,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},XFe))});var fD=I(Un=>{"use strict";var sD=require("assert"),kA=require("buffer").Buffer,v9=require("zlib"),uc=Un.constants=b9(),ZFe=hg(),S9=kA.concat,gc=Symbol("_superWrite"),ed=class extends Error{constructor(e){super("zlib: "+e.message);this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},$Fe=Symbol("opts"),td=Symbol("flushFlag"),x9=Symbol("finishFlushFlag"),oD=Symbol("fullFlushFlag"),tr=Symbol("handle"),qw=Symbol("onError"),pg=Symbol("sawError"),aD=Symbol("level"),AD=Symbol("strategy"),lD=Symbol("ended"),clt=Symbol("_defaultFullFlush"),cD=class extends ZFe{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e);this[pg]=!1,this[lD]=!1,this[$Fe]=e,this[td]=e.flush,this[x9]=e.finishFlush;try{this[tr]=new v9[r](e)}catch(i){throw new ed(i)}this[qw]=i=>{this[pg]||(this[pg]=!0,this.close(),this.emit("error",i))},this[tr].on("error",i=>this[qw](new ed(i))),this.once("end",()=>this.close)}close(){this[tr]&&(this[tr].close(),this[tr]=null,this.emit("close"))}reset(){if(!this[pg])return sD(this[tr],"zlib binding closed"),this[tr].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[oD]),this.write(Object.assign(kA.alloc(0),{[td]:e})))}end(e,r,i){return e&&this.write(e,r),this.flush(this[x9]),this[lD]=!0,super.end(null,null,i)}get ended(){return this[lD]}write(e,r,i){if(typeof r=="function"&&(i=r,r="utf8"),typeof e=="string"&&(e=kA.from(e,r)),this[pg])return;sD(this[tr],"zlib binding closed");let n=this[tr]._handle,s=n.close;n.close=()=>{};let o=this[tr].close;this[tr].close=()=>{},kA.concat=c=>c;let a;try{let c=typeof e[td]=="number"?e[td]:this[td];a=this[tr]._processChunk(e,c),kA.concat=S9}catch(c){kA.concat=S9,this[qw](new ed(c))}finally{this[tr]&&(this[tr]._handle=n,n.close=s,this[tr].close=o,this[tr].removeAllListeners("error"))}this[tr]&&this[tr].on("error",c=>this[qw](new ed(c)));let l;if(a)if(Array.isArray(a)&&a.length>0){l=this[gc](kA.from(a[0]));for(let c=1;c{this.flush(n),s()};try{this[tr].params(e,r)}finally{this[tr].flush=i}this[tr]&&(this[aD]=e,this[AD]=r)}}}},k9=class extends PA{constructor(e){super(e,"Deflate")}},P9=class extends PA{constructor(e){super(e,"Inflate")}},uD=Symbol("_portable"),D9=class extends PA{constructor(e){super(e,"Gzip");this[uD]=e&&!!e.portable}[gc](e){return this[uD]?(this[uD]=!1,e[9]=255,super[gc](e)):super[gc](e)}},R9=class extends PA{constructor(e){super(e,"Gunzip")}},F9=class extends PA{constructor(e){super(e,"DeflateRaw")}},N9=class extends PA{constructor(e){super(e,"InflateRaw")}},L9=class extends PA{constructor(e){super(e,"Unzip")}},gD=class extends cD{constructor(e,r){e=e||{},e.flush=e.flush||uc.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||uc.BROTLI_OPERATION_FINISH,super(e,r),this[oD]=uc.BROTLI_OPERATION_FLUSH}},T9=class extends gD{constructor(e){super(e,"BrotliCompress")}},M9=class extends gD{constructor(e){super(e,"BrotliDecompress")}};Un.Deflate=k9;Un.Inflate=P9;Un.Gzip=D9;Un.Gunzip=R9;Un.DeflateRaw=F9;Un.InflateRaw=N9;Un.Unzip=L9;typeof v9.BrotliCompress=="function"?(Un.BrotliCompress=T9,Un.BrotliDecompress=M9):Un.BrotliCompress=Un.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var rd=I(Jw=>{"use strict";Jw.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Jw.code=new Map(Array.from(Jw.name).map(t=>[t[1],t[0]]))});var id=I((plt,O9)=>{"use strict";var flt=rd(),eNe=hg(),hD=Symbol("slurp");O9.exports=class extends eNe{constructor(e,r,i){super();switch(this.pause(),this.extended=r,this.globalExtended=i,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=e.path,this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=e.linkpath,this.uname=e.uname,this.gname=e.gname,r&&this[hD](r),i&&this[hD](i,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let i=this.remain,n=this.blockRemain;return this.remain=Math.max(0,i-r),this.blockRemain=Math.max(0,n-r),this.ignore?!0:i>=r?super.write(e):super.write(e.slice(0,i))}[hD](e,r){for(let i in e)e[i]!==null&&e[i]!==void 0&&!(r&&i==="path")&&(this[i]=e[i])}}});var H9=I(pD=>{"use strict";var dlt=pD.encode=(t,e)=>{if(Number.isSafeInteger(t))t<0?rNe(t,e):tNe(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},tNe=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},rNe=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var i=e.length;i>1;i--){var n=t&255;t=Math.floor(t/256),r?e[i-1]=K9(n):n===0?e[i-1]=0:(r=!0,e[i-1]=U9(n))}},Clt=pD.parse=t=>{var e=t[t.length-1],r=t[0],i;if(r===128)i=nNe(t.slice(1,t.length));else if(r===255)i=iNe(t);else throw Error("invalid base256 encoding");if(!Number.isSafeInteger(i))throw Error("parsed number outside of javascript safe integer range");return i},iNe=t=>{for(var e=t.length,r=0,i=!1,n=e-1;n>-1;n--){var s=t[n],o;i?o=K9(s):s===0?o=s:(i=!0,o=U9(s)),o!==0&&(r-=o*Math.pow(256,e-n-1))}return r},nNe=t=>{for(var e=t.length,r=0,i=e-1;i>-1;i--){var n=t[i];n!==0&&(r+=n*Math.pow(256,e-i-1))}return r},K9=t=>(255^t)&255,U9=t=>(255^t)+1&255});var Cg=I((Ilt,G9)=>{"use strict";var dD=rd(),dg=require("path").posix,j9=H9(),CD=Symbol("slurp"),Hn=Symbol("type"),Y9=class{constructor(e,r,i,n){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[Hn]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,i,n):e&&this.set(e)}decode(e,r,i,n){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=fc(e,r,100),this.mode=DA(e,r+100,8),this.uid=DA(e,r+108,8),this.gid=DA(e,r+116,8),this.size=DA(e,r+124,12),this.mtime=mD(e,r+136,12),this.cksum=DA(e,r+148,12),this[CD](i),this[CD](n,!0),this[Hn]=fc(e,r+156,1),this[Hn]===""&&(this[Hn]="0"),this[Hn]==="0"&&this.path.substr(-1)==="/"&&(this[Hn]="5"),this[Hn]==="5"&&(this.size=0),this.linkpath=fc(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=fc(e,r+265,32),this.gname=fc(e,r+297,32),this.devmaj=DA(e,r+329,8),this.devmin=DA(e,r+337,8),e[r+475]!==0){let o=fc(e,r+345,155);this.path=o+"/"+this.path}else{let o=fc(e,r+345,130);o&&(this.path=o+"/"+this.path),this.atime=mD(e,r+476,12),this.ctime=mD(e,r+488,12)}let s=8*32;for(let o=r;o=r+512))throw new Error("need 512 bytes for header");let i=this.ctime||this.atime?130:155,n=sNe(this.path||"",i),s=n[0],o=n[1];this.needPax=n[2],this.needPax=hc(e,r,100,s)||this.needPax,this.needPax=RA(e,r+100,8,this.mode)||this.needPax,this.needPax=RA(e,r+108,8,this.uid)||this.needPax,this.needPax=RA(e,r+116,8,this.gid)||this.needPax,this.needPax=RA(e,r+124,12,this.size)||this.needPax,this.needPax=ID(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[Hn].charCodeAt(0),this.needPax=hc(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=hc(e,r+265,32,this.uname)||this.needPax,this.needPax=hc(e,r+297,32,this.gname)||this.needPax,this.needPax=RA(e,r+329,8,this.devmaj)||this.needPax,this.needPax=RA(e,r+337,8,this.devmin)||this.needPax,this.needPax=hc(e,r+345,i,o)||this.needPax,e[r+475]!==0?this.needPax=hc(e,r+345,155,o)||this.needPax:(this.needPax=hc(e,r+345,130,o)||this.needPax,this.needPax=ID(e,r+476,12,this.atime)||this.needPax,this.needPax=ID(e,r+488,12,this.ctime)||this.needPax);let a=8*32;for(let l=r;l{let r=100,i=t,n="",s,o=dg.parse(t).root||".";if(Buffer.byteLength(i)r&&Buffer.byteLength(n)<=e?s=[i.substr(0,r-1),n,!0]:(i=dg.join(dg.basename(n),i),n=dg.dirname(n));while(n!==o&&!s);s||(s=[t.substr(0,r-1),"",!0])}return s},fc=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),mD=(t,e,r)=>oNe(DA(t,e,r)),oNe=t=>t===null?null:new Date(t*1e3),DA=(t,e,r)=>t[e]&128?j9.parse(t.slice(e,e+r)):aNe(t,e,r),ANe=t=>isNaN(t)?null:t,aNe=(t,e,r)=>ANe(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),lNe={12:8589934591,8:2097151},RA=(t,e,r,i)=>i===null?!1:i>lNe[r]||i<0?(j9.encode(i,t.slice(e,e+r)),!0):(cNe(t,e,r,i),!1),cNe=(t,e,r,i)=>t.write(uNe(i,r),e,r,"ascii"),uNe=(t,e)=>gNe(Math.floor(t).toString(8),e),gNe=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ID=(t,e,r,i)=>i===null?!1:RA(t,e,r,i.getTime()/1e3),fNe=new Array(156).join("\0"),hc=(t,e,r,i)=>i===null?!1:(t.write(i+fNe,e,r,"utf8"),i.length!==Buffer.byteLength(i)||i.length>r);G9.exports=Y9});var zw=I((Elt,q9)=>{"use strict";var hNe=Cg(),pNe=require("path"),Ww=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),i=512*Math.ceil(1+r/512),n=Buffer.allocUnsafe(i);for(let s=0;s<512;s++)n[s]=0;new hNe({path:("PaxHeader/"+pNe.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(n),n.write(e,512,r,"utf8");for(let s=r+512;s=Math.pow(10,s)&&(s+=1),s+n+i}};Ww.parse=(t,e,r)=>new Ww(dNe(CNe(t),e),r);var dNe=(t,e)=>e?Object.keys(t).reduce((r,i)=>(r[i]=t[i],r),e):t,CNe=t=>t.replace(/\n$/,"").split(` -`).reduce(mNe,Object.create(null)),mNe=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let i=e.split("="),n=i.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!n)return t;let s=i.join("=");return t[n]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(n)?new Date(s*1e3):/^[0-9]+$/.test(s)?+s:s,t};q9.exports=Ww});var Vw=I((ylt,J9)=>{"use strict";J9.exports=t=>class extends t{warn(e,r,i={}){this.file&&(i.file=this.file),this.cwd&&(i.cwd=this.cwd),i.code=r instanceof Error&&r.code||e,i.tarCode=e,!this.strict&&i.recoverable!==!1?(r instanceof Error&&(i=Object.assign(r,i),r=r.message),this.emit("warn",i.tarCode,r,i)):r instanceof Error?this.emit("error",Object.assign(r,i)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),i))}}});var yD=I((wlt,W9)=>{"use strict";var _w=["|","<",">","?",":"],ED=_w.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),INe=new Map(_w.map((t,e)=>[t,ED[e]])),ENe=new Map(ED.map((t,e)=>[t,_w[e]]));W9.exports={encode:t=>_w.reduce((e,r)=>e.split(r).join(INe.get(r)),t),decode:t=>ED.reduce((e,r)=>e.split(r).join(ENe.get(r)),t)}});var V9=I((Blt,z9)=>{"use strict";z9.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&~18),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var xD=I((xlt,_9)=>{"use strict";var X9=hg(),Z9=zw(),$9=Cg(),Qlt=id(),bo=require("fs"),mg=require("path"),blt=rd(),yNe=16*1024*1024,e7=Symbol("process"),t7=Symbol("file"),r7=Symbol("directory"),wD=Symbol("symlink"),i7=Symbol("hardlink"),nd=Symbol("header"),Xw=Symbol("read"),BD=Symbol("lstat"),Zw=Symbol("onlstat"),QD=Symbol("onread"),bD=Symbol("onreadlink"),vD=Symbol("openfile"),SD=Symbol("onopenfile"),pc=Symbol("close"),$w=Symbol("mode"),n7=Vw(),wNe=yD(),s7=V9(),eB=n7(class extends X9{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=e,this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid(),this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yNe,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=r.cwd||process.cwd(),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(!this.preservePaths&&mg.win32.isAbsolute(e)){let n=mg.win32.parse(e);this.path=e.substr(n.root.length),i=n.root}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=wNe.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=r.absolute||mg.resolve(this.cwd,e),this.path===""&&(this.path="./"),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.statCache.has(this.absolute)?this[Zw](this.statCache.get(this.absolute)):this[BD]()}[BD](){bo.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Zw](r)})}[Zw](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=BNe(e),this.emit("stat",e),this[e7]()}[e7](){switch(this.type){case"File":return this[t7]();case"Directory":return this[r7]();case"SymbolicLink":return this[wD]();default:return this.end()}}[$w](e){return s7(e,this.type==="Directory",this.portable)}[nd](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this[$w](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&this.write(new Z9({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this.path,linkpath:this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),this.write(this.header.block)}[r7](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[nd](),this.end()}[wD](){bo.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[bD](r)})}[bD](e){this.linkpath=e.replace(/\\/g,"/"),this[nd](),this.end()}[i7](e){this.type="Link",this.linkpath=mg.relative(this.cwd,e).replace(/\\/g,"/"),this.stat.size=0,this[nd](),this.end()}[t7](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[i7](r)}this.linkCache.set(e,this.absolute)}if(this[nd](),this.stat.size===0)return this.end();this[vD]()}[vD](){bo.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[SD](r)})}[SD](e){let r=512*Math.ceil(this.stat.size/512),i=Math.min(r,this.maxReadSize),n=Buffer.allocUnsafe(i);this[Xw](e,n,0,n.length,0,this.stat.size,r)}[Xw](e,r,i,n,s,o,a){bo.read(e,r,i,n,s,(l,c)=>{if(l)return this[pc](e,()=>this.emit("error",l));this[QD](e,r,i,n,s,o,a,c)})}[pc](e,r){bo.close(e,r)}[QD](e,r,i,n,s,o,a,l){if(l<=0&&o>0){let u=new Error("encountered unexpected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l>o){let u=new Error("did not encounter expected EOF");return u.path=this.absolute,u.syscall="read",u.code="EOF",this[pc](e,()=>this.emit("error",u))}if(l===o)for(let u=l;uu?this.emit("error",u):this.end());i>=n&&(r=Buffer.allocUnsafe(n),i=0),n=r.length-i,this[Xw](e,r,i,n,s,o,a)}}),o7=class extends eB{constructor(e,r){super(e,r)}[BD](){this[Zw](bo.lstatSync(this.absolute))}[wD](){this[bD](bo.readlinkSync(this.absolute))}[vD](){this[SD](bo.openSync(this.absolute,"r"))}[Xw](e,r,i,n,s,o,a){let l=!0;try{let c=bo.readSync(e,r,i,n,s);this[QD](e,r,i,n,s,o,a,c),l=!1}finally{if(l)try{this[pc](e,()=>{})}catch(c){}}}[pc](e,r){bo.closeSync(e),r()}},QNe=n7(class extends X9{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.path=e.path,this.mode=this[$w](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=e.linkpath,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let i=!1;if(mg.isAbsolute(this.path)&&!this.preservePaths){let n=mg.parse(this.path);i=n.root,this.path=this.path.substr(n.root.length)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new $9({path:this.path,linkpath:this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),i&&this.warn("TAR_ENTRY_INFO",`stripping ${i} from absolute path`,{entry:this,path:i+this.path}),this.header.encode()&&!this.noPax&&super.write(new Z9({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this.path,linkpath:this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[$w](e){return s7(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&this.write(Buffer.alloc(this.blockRemain)),super.end()}});eB.Sync=o7;eB.Tar=QNe;var BNe=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";_9.exports=eB});var AB=I((Plt,a7)=>{"use strict";var kD=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},bNe=hg(),vNe=fD(),SNe=id(),PD=xD(),xNe=PD.Sync,kNe=PD.Tar,PNe=Rh(),A7=Buffer.alloc(1024),tB=Symbol("onStat"),rB=Symbol("ended"),vo=Symbol("queue"),Ig=Symbol("current"),dc=Symbol("process"),iB=Symbol("processing"),l7=Symbol("processJob"),So=Symbol("jobs"),DD=Symbol("jobDone"),nB=Symbol("addFSEntry"),c7=Symbol("addTarEntry"),RD=Symbol("stat"),FD=Symbol("readdir"),sB=Symbol("onreaddir"),oB=Symbol("pipe"),u7=Symbol("entry"),ND=Symbol("entryOpt"),LD=Symbol("writeEntryClass"),g7=Symbol("write"),TD=Symbol("ondrain"),aB=require("fs"),f7=require("path"),DNe=Vw(),MD=DNe(class extends bNe{constructor(e){super(e);e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=(e.prefix||"").replace(/(\\|\/)+$/,""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[LD]=PD,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new vNe.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[TD]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[TD]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[vo]=new PNe,this[So]=0,this.jobs=+e.jobs||4,this[iB]=!1,this[rB]=!1}[g7](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rB]=!0,this[dc](),this}write(e){if(this[rB])throw new Error("write after end");return e instanceof SNe?this[c7](e):this[nB](e),this.flowing}[c7](e){let r=f7.resolve(this.cwd,e.path);if(this.prefix&&(e.path=this.prefix+"/"+e.path.replace(/^\.(\/+|$)/,"")),!this.filter(e.path,e))e.resume();else{let i=new kD(e.path,r,!1);i.entry=new kNe(e,this[ND](i)),i.entry.on("end",n=>this[DD](i)),this[So]+=1,this[vo].push(i)}this[dc]()}[nB](e){let r=f7.resolve(this.cwd,e);this.prefix&&(e=this.prefix+"/"+e.replace(/^\.(\/+|$)/,"")),this[vo].push(new kD(e,r)),this[dc]()}[RD](e){e.pending=!0,this[So]+=1;let r=this.follow?"stat":"lstat";aB[r](e.absolute,(i,n)=>{e.pending=!1,this[So]-=1,i?this.emit("error",i):this[tB](e,n)})}[tB](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[dc]()}[FD](e){e.pending=!0,this[So]+=1,aB.readdir(e.absolute,(r,i)=>{if(e.pending=!1,this[So]-=1,r)return this.emit("error",r);this[sB](e,i)})}[sB](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[dc]()}[dc](){if(!this[iB]){this[iB]=!0;for(let e=this[vo].head;e!==null&&this[So]this.warn(r,i,n),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime}}[u7](e){this[So]+=1;try{return new this[LD](e.path,this[ND](e)).on("end",()=>this[DD](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[TD](){this[Ig]&&this[Ig].entry&&this[Ig].entry.resume()}[oB](e){e.piped=!0,e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)});let r=e.entry,i=this.zip;i?r.on("data",n=>{i.write(n)||r.pause()}):r.on("data",n=>{super.write(n)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),h7=class extends MD{constructor(e){super(e);this[LD]=xNe}pause(){}resume(){}[RD](e){let r=this.follow?"statSync":"lstatSync";this[tB](e,aB[r](e.absolute))}[FD](e,r){this[sB](e,aB.readdirSync(e.absolute))}[oB](e){let r=e.entry,i=this.zip;e.readdir&&e.readdir.forEach(n=>{let s=this.prefix?e.path.slice(this.prefix.length+1)||"./":e.path,o=s==="./"?"":s.replace(/\/*$/,"/");this[nB](o+n)}),i?r.on("data",n=>{i.write(n)}):r.on("data",n=>{super[g7](n)})}};MD.Sync=h7;a7.exports=MD});var bg=I(sd=>{"use strict";var RNe=hg(),FNe=require("events").EventEmitter,ls=require("fs"),lB=process.binding("fs"),Dlt=lB.writeBuffers,NNe=lB.FSReqWrap||lB.FSReqCallback,Eg=Symbol("_autoClose"),xo=Symbol("_close"),od=Symbol("_ended"),Jt=Symbol("_fd"),p7=Symbol("_finished"),Cc=Symbol("_flags"),OD=Symbol("_flush"),KD=Symbol("_handleChunk"),UD=Symbol("_makeBuf"),HD=Symbol("_mode"),cB=Symbol("_needDrain"),yg=Symbol("_onerror"),wg=Symbol("_onopen"),GD=Symbol("_onread"),mc=Symbol("_onwrite"),FA=Symbol("_open"),NA=Symbol("_path"),Ic=Symbol("_pos"),ko=Symbol("_queue"),Bg=Symbol("_read"),d7=Symbol("_readSize"),LA=Symbol("_reading"),uB=Symbol("_remain"),C7=Symbol("_size"),gB=Symbol("_write"),Qg=Symbol("_writing"),fB=Symbol("_defaultFlag"),jD=class extends RNe{constructor(e,r){if(r=r||{},super(r),this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[Jt]=typeof r.fd=="number"?r.fd:null,this[NA]=e,this[d7]=r.readSize||16*1024*1024,this[LA]=!1,this[C7]=typeof r.size=="number"?r.size:Infinity,this[uB]=this[C7],this[Eg]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Jt]=="number"?this[Bg]():this[FA]()}get fd(){return this[Jt]}get path(){return this[NA]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[FA](){ls.open(this[NA],"r",(e,r)=>this[wg](e,r))}[wg](e,r){e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[Bg]())}[UD](){return Buffer.allocUnsafe(Math.min(this[d7],this[uB]))}[Bg](){if(!this[LA]){this[LA]=!0;let e=this[UD]();if(e.length===0)return process.nextTick(()=>this[GD](null,0,e));ls.read(this[Jt],e,0,e.length,null,(r,i,n)=>this[GD](r,i,n))}}[GD](e,r,i){this[LA]=!1,e?this[yg](e):this[KD](r,i)&&this[Bg]()}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}[yg](e){this[LA]=!0,this[xo](),this.emit("error",e)}[KD](e,r){let i=!1;return this[uB]-=e,e>0&&(i=super.write(ethis[wg](e,r))}[wg](e,r){this[fB]&&this[Cc]==="r+"&&e&&e.code==="ENOENT"?(this[Cc]="w",this[FA]()):e?this[yg](e):(this[Jt]=r,this.emit("open",r),this[OD]())}end(e,r){e&&this.write(e,r),this[od]=!0,!this[Qg]&&!this[ko].length&&typeof this[Jt]=="number"&&this[mc](null,0)}write(e,r){return typeof e=="string"&&(e=new Buffer(e,r)),this[od]?(this.emit("error",new Error("write() after end()")),!1):this[Jt]===null||this[Qg]||this[ko].length?(this[ko].push(e),this[cB]=!0,!1):(this[Qg]=!0,this[gB](e),!0)}[gB](e){ls.write(this[Jt],e,0,e.length,this[Ic],(r,i)=>this[mc](r,i))}[mc](e,r){e?this[yg](e):(this[Ic]!==null&&(this[Ic]+=r),this[ko].length?this[OD]():(this[Qg]=!1,this[od]&&!this[p7]?(this[p7]=!0,this[xo](),this.emit("finish")):this[cB]&&(this[cB]=!1,this.emit("drain"))))}[OD](){if(this[ko].length===0)this[od]&&this[mc](null,0);else if(this[ko].length===1)this[gB](this[ko].pop());else{let e=this[ko];this[ko]=[],LNe(this[Jt],e,this[Ic],(r,i)=>this[mc](r,i))}}[xo](){this[Eg]&&typeof this[Jt]=="number"&&(ls.close(this[Jt],e=>this.emit("close")),this[Jt]=null)}},I7=class extends YD{[FA](){let e;try{e=ls.openSync(this[NA],this[Cc],this[HD])}catch(r){if(this[fB]&&this[Cc]==="r+"&&r&&r.code==="ENOENT")return this[Cc]="w",this[FA]();throw r}this[wg](null,e)}[xo](){if(this[Eg]&&typeof this[Jt]=="number"){try{ls.closeSync(this[Jt])}catch(e){}this[Jt]=null,this.emit("close")}}[gB](e){try{this[mc](null,ls.writeSync(this[Jt],e,0,e.length,this[Ic]))}catch(r){this[mc](r,0)}}},LNe=(t,e,r,i)=>{let n=(o,a)=>i(o,a,e),s=new NNe;s.oncomplete=n,lB.writeBuffers(t,e,r,s)};sd.ReadStream=jD;sd.ReadStreamSync=m7;sd.WriteStream=YD;sd.WriteStreamSync=I7});var ld=I((Llt,E7)=>{"use strict";var TNe=Vw(),Flt=require("path"),MNe=Cg(),ONe=require("events"),KNe=Rh(),UNe=1024*1024,HNe=id(),y7=zw(),GNe=fD(),qD=Buffer.from([31,139]),cs=Symbol("state"),Ec=Symbol("writeEntry"),xa=Symbol("readEntry"),JD=Symbol("nextEntry"),w7=Symbol("processEntry"),us=Symbol("extendedHeader"),ad=Symbol("globalExtendedHeader"),TA=Symbol("meta"),B7=Symbol("emitMeta"),Ar=Symbol("buffer"),ka=Symbol("queue"),yc=Symbol("ended"),Q7=Symbol("emittedEnd"),wc=Symbol("emit"),Qn=Symbol("unzip"),hB=Symbol("consumeChunk"),pB=Symbol("consumeChunkSub"),WD=Symbol("consumeBody"),b7=Symbol("consumeMeta"),v7=Symbol("consumeHeader"),dB=Symbol("consuming"),zD=Symbol("bufferConcat"),VD=Symbol("maybeEnd"),Ad=Symbol("writing"),MA=Symbol("aborted"),CB=Symbol("onDone"),Bc=Symbol("sawValidEntry"),mB=Symbol("sawNullBlock"),IB=Symbol("sawEOF"),jNe=t=>!0;E7.exports=TNe(class extends ONe{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Bc]=null,this.on(CB,r=>{(this[cs]==="begin"||this[Bc]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(CB,e.ondone):this.on(CB,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||UNe,this.filter=typeof e.filter=="function"?e.filter:jNe,this.writable=!0,this.readable=!1,this[ka]=new KNe,this[Ar]=null,this[xa]=null,this[Ec]=null,this[cs]="begin",this[TA]="",this[us]=null,this[ad]=null,this[yc]=!1,this[Qn]=null,this[MA]=!1,this[mB]=!1,this[IB]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[v7](e,r){this[Bc]===null&&(this[Bc]=!1);let i;try{i=new MNe(e,r,this[us],this[ad])}catch(n){return this.warn("TAR_ENTRY_INVALID",n)}if(i.nullBlock)this[mB]?(this[IB]=!0,this[cs]==="begin"&&(this[cs]="header"),this[wc]("eof")):(this[mB]=!0,this[wc]("nullBlock"));else if(this[mB]=!1,!i.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:i});else if(!i.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:i});else{let n=i.type;if(/^(Symbolic)?Link$/.test(n)&&!i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:i});else if(!/^(Symbolic)?Link$/.test(n)&&i.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:i});else{let s=this[Ec]=new HNe(i,this[us],this[ad]);if(!this[Bc])if(s.remain){let o=()=>{s.invalid||(this[Bc]=!0)};s.on("end",o)}else this[Bc]=!0;s.meta?s.size>this.maxMetaEntrySize?(s.ignore=!0,this[wc]("ignoredEntry",s),this[cs]="ignore",s.resume()):s.size>0&&(this[TA]="",s.on("data",o=>this[TA]+=o),this[cs]="meta"):(this[us]=null,s.ignore=s.ignore||!this.filter(s.path,s),s.ignore?(this[wc]("ignoredEntry",s),this[cs]=s.remain?"ignore":"header",s.resume()):(s.remain?this[cs]="body":(this[cs]="header",s.end()),this[xa]?this[ka].push(s):(this[ka].push(s),this[JD]())))}}}[w7](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[xa]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",i=>this[JD]()),r=!1)):(this[xa]=null,r=!1),r}[JD](){do;while(this[w7](this[ka].shift()));if(!this[ka].length){let e=this[xa];!e||e.flowing||e.size===e.remain?this[Ad]||this.emit("drain"):e.once("drain",i=>this.emit("drain"))}}[WD](e,r){let i=this[Ec],n=i.blockRemain,s=n>=e.length&&r===0?e:e.slice(r,r+n);return i.write(s),i.blockRemain||(this[cs]="header",this[Ec]=null,i.end()),s.length}[b7](e,r){let i=this[Ec],n=this[WD](e,r);return this[Ec]||this[B7](i),n}[wc](e,r,i){!this[ka].length&&!this[xa]?this.emit(e,r,i):this[ka].push([e,r,i])}[B7](e){switch(this[wc]("meta",this[TA]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[us]=y7.parse(this[TA],this[us],!1);break;case"GlobalExtendedHeader":this[ad]=y7.parse(this[TA],this[ad],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[us]=this[us]||Object.create(null),this[us].path=this[TA].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[us]=this[us]||Object.create(null),this[us].linkpath=this[TA].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[MA]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[MA])return;if(this[Qn]===null&&e){if(this[Ar]&&(e=Buffer.concat([this[Ar],e]),this[Ar]=null),e.lengththis[hB](s)),this[Qn].on("error",s=>this.abort(s)),this[Qn].on("end",s=>{this[yc]=!0,this[hB]()}),this[Ad]=!0;let n=this[Qn][i?"end":"write"](e);return this[Ad]=!1,n}}this[Ad]=!0,this[Qn]?this[Qn].write(e):this[hB](e),this[Ad]=!1;let r=this[ka].length?!1:this[xa]?this[xa].flowing:!0;return!r&&!this[ka].length&&this[xa].once("drain",i=>this.emit("drain")),r}[zD](e){e&&!this[MA]&&(this[Ar]=this[Ar]?Buffer.concat([this[Ar],e]):e)}[VD](){if(this[yc]&&!this[Q7]&&!this[MA]&&!this[dB]){this[Q7]=!0;let e=this[Ec];if(e&&e.blockRemain){let r=this[Ar]?this[Ar].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Ar]&&e.write(this[Ar]),e.end()}this[wc](CB)}}[hB](e){if(this[dB])this[zD](e);else if(!e&&!this[Ar])this[VD]();else{if(this[dB]=!0,this[Ar]){this[zD](e);let r=this[Ar];this[Ar]=null,this[pB](r)}else this[pB](e);for(;this[Ar]&&this[Ar].length>=512&&!this[MA]&&!this[IB];){let r=this[Ar];this[Ar]=null,this[pB](r)}this[dB]=!1}(!this[Ar]||this[yc])&&this[VD]()}[pB](e){let r=0,i=e.length;for(;r+512<=i&&!this[MA]&&!this[IB];)switch(this[cs]){case"begin":case"header":this[v7](e,r),r+=512;break;case"ignore":case"body":r+=this[WD](e,r);break;case"meta":r+=this[b7](e,r);break;default:throw new Error("invalid state: "+this[cs])}r{"use strict";var YNe=fg(),x7=ld(),vg=require("fs"),qNe=bg(),k7=require("path"),Tlt=S7.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=YNe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&WNe(i,e),i.noResume||JNe(i),i.file&&i.sync?zNe(i):i.file?VNe(i,r):P7(i)},JNe=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},WNe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||k7.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(k7.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},zNe=t=>{let e=P7(t),r=t.file,i=!0,n;try{let s=vg.statSync(r),o=t.maxReadSize||16*1024*1024;if(s.size{let r=new x7(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("end",o),vg.stat(n,(l,c)=>{if(l)a(l);else{let u=new qNe.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},P7=t=>new x7(t)});var T7=I((Ult,D7)=>{"use strict";var _Ne=fg(),yB=AB(),Olt=require("fs"),R7=bg(),F7=EB(),N7=require("path"),Klt=D7.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let i=_Ne(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return i.file&&i.sync?XNe(i,e):i.file?ZNe(i,e,r):i.sync?$Ne(i,e):eLe(i,e)},XNe=(t,e)=>{let r=new yB.Sync(t),i=new R7.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(i),L7(r,e)},ZNe=(t,e,r)=>{let i=new yB(t),n=new R7.WriteStream(t.file,{mode:t.mode||438});i.pipe(n);let s=new Promise((o,a)=>{n.on("error",a),n.on("close",o),i.on("error",a)});return _D(i,e),r?s.then(r,r):s},L7=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?F7({file:N7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},_D=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return F7({file:N7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>_D(t,e));t.add(r)}t.end()},$Ne=(t,e)=>{let r=new yB.Sync(t);return L7(r,e),r},eLe=(t,e)=>{let r=new yB(t);return _D(r,e),r}});var XD=I((jlt,M7)=>{"use strict";var tLe=fg(),O7=AB(),Hlt=ld(),gs=require("fs"),K7=bg(),U7=EB(),H7=require("path"),G7=Cg(),Glt=M7.exports=(t,e,r)=>{let i=tLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),i.sync?rLe(i,e):iLe(i,e,r)},rLe=(t,e)=>{let r=new O7.Sync(t),i=!0,n,s;try{try{n=gs.openSync(t.file,"r+")}catch(l){if(l.code==="ENOENT")n=gs.openSync(t.file,"w+");else throw l}let o=gs.fstatSync(n),a=Buffer.alloc(512);e:for(s=0;so.size)break;s+=c,t.mtimeCache&&t.mtimeCache.set(l.path,l.mtime)}i=!1,nLe(t,r,s,n,e)}finally{if(i)try{gs.closeSync(n)}catch(o){}}},nLe=(t,e,r,i,n)=>{let s=new K7.WriteStreamSync(t.file,{fd:i,start:r});e.pipe(s),sLe(e,n)},iLe=(t,e,r)=>{e=Array.from(e);let i=new O7(t),n=(o,a,l)=>{let c=(p,d)=>{p?gs.close(o,m=>l(p)):l(null,d)},u=0;if(a===0)return c(null,0);let g=0,f=Buffer.alloc(512),h=(p,d)=>{if(p)return c(p);if(g+=d,g<512&&d)return gs.read(o,f,g,f.length-g,u+g,h);if(u===0&&f[0]===31&&f[1]===139)return c(new Error("cannot append to compressed archives"));if(g<512)return c(null,u);let m=new G7(f);if(!m.cksumValid)return c(null,u);let E=512*Math.ceil(m.size/512);if(u+E+512>a||(u+=E+512,u>=a))return c(null,u);t.mtimeCache&&t.mtimeCache.set(m.path,m.mtime),g=0,gs.read(o,f,0,512,u,h)};gs.read(o,f,0,512,u,h)},s=new Promise((o,a)=>{i.on("error",a);let l="r+",c=(u,g)=>{if(u&&u.code==="ENOENT"&&l==="r+")return l="w+",gs.open(t.file,l,c);if(u)return a(u);gs.fstat(g,(f,h)=>{if(f)return a(f);n(g,h.size,(p,d)=>{if(p)return a(p);let m=new K7.WriteStream(t.file,{fd:g,start:d});i.pipe(m),m.on("error",a),m.on("close",o),j7(i,e)})})};gs.open(t.file,l,c)});return r?s.then(r,r):s},sLe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?U7({file:H7.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:i=>t.add(i)}):t.add(r)}),t.end()},j7=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return U7({file:H7.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:i=>t.add(i)}).then(i=>j7(t,e));t.add(r)}t.end()}});var q7=I((qlt,Y7)=>{"use strict";var oLe=fg(),aLe=XD(),Ylt=Y7.exports=(t,e,r)=>{let i=oLe(t);if(!i.file)throw new TypeError("file is required");if(i.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ALe(i),aLe(i,e,r)},ALe=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,i)=>e(r,i)&&!(t.mtimeCache.get(r)>i.mtime):(r,i)=>!(t.mtimeCache.get(r)>i.mtime)}});var z7=I((Jlt,J7)=>{var{promisify:W7}=require("util"),OA=require("fs"),lLe=t=>{if(!t)t={mode:511,fs:OA};else if(typeof t=="object")t=P({mode:511,fs:OA},t);else if(typeof t=="number")t={mode:t,fs:OA};else if(typeof t=="string")t={mode:parseInt(t,8),fs:OA};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||OA.mkdir,t.mkdirAsync=W7(t.mkdir),t.stat=t.stat||t.fs.stat||OA.stat,t.statAsync=W7(t.stat),t.statSync=t.statSync||t.fs.statSync||OA.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||OA.mkdirSync,t};J7.exports=lLe});var _7=I((Wlt,V7)=>{var cLe=process.env.__TESTING_MKDIRP_PLATFORM__||process.platform,{resolve:uLe,parse:gLe}=require("path"),fLe=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=uLe(t),cLe==="win32"){let e=/[*|"<>?:]/,{root:r}=gLe(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};V7.exports=fLe});var tV=I((zlt,X7)=>{var{dirname:Z7}=require("path"),$7=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(i=>i.isDirectory()?r:void 0,i=>i.code==="ENOENT"?$7(t,Z7(e),e):void 0),eV=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(i){return i.code==="ENOENT"?eV(t,Z7(e),e):void 0}};X7.exports={findMade:$7,findMadeSync:eV}});var eR=I((Vlt,rV)=>{var{dirname:iV}=require("path"),ZD=(t,e,r)=>{e.recursive=!1;let i=iV(t);return i===t?e.mkdirAsync(t,e).catch(n=>{if(n.code!=="EISDIR")throw n}):e.mkdirAsync(t,e).then(()=>r||t,n=>{if(n.code==="ENOENT")return ZD(i,e).then(s=>ZD(t,e,s));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;return e.statAsync(t).then(s=>{if(s.isDirectory())return r;throw n},()=>{throw n})})},$D=(t,e,r)=>{let i=iV(t);if(e.recursive=!1,i===t)try{return e.mkdirSync(t,e)}catch(n){if(n.code!=="EISDIR")throw n;return}try{return e.mkdirSync(t,e),r||t}catch(n){if(n.code==="ENOENT")return $D(t,e,$D(i,e,r));if(n.code!=="EEXIST"&&n.code!=="EROFS")throw n;try{if(!e.statSync(t).isDirectory())throw n}catch(s){throw n}}};rV.exports={mkdirpManual:ZD,mkdirpManualSync:$D}});var oV=I((_lt,nV)=>{var{dirname:sV}=require("path"),{findMade:hLe,findMadeSync:pLe}=tV(),{mkdirpManual:dLe,mkdirpManualSync:CLe}=eR(),mLe=(t,e)=>(e.recursive=!0,sV(t)===t?e.mkdirAsync(t,e):hLe(e,t).then(i=>e.mkdirAsync(t,e).then(()=>i).catch(n=>{if(n.code==="ENOENT")return dLe(t,e);throw n}))),ILe=(t,e)=>{if(e.recursive=!0,sV(t)===t)return e.mkdirSync(t,e);let i=pLe(e,t);try{return e.mkdirSync(t,e),i}catch(n){if(n.code==="ENOENT")return CLe(t,e);throw n}};nV.exports={mkdirpNative:mLe,mkdirpNativeSync:ILe}});var cV=I((Xlt,aV)=>{var AV=require("fs"),ELe=process.env.__TESTING_MKDIRP_NODE_VERSION__||process.version,tR=ELe.replace(/^v/,"").split("."),lV=+tR[0]>10||+tR[0]==10&&+tR[1]>=12,yLe=lV?t=>t.mkdir===AV.mkdir:()=>!1,wLe=lV?t=>t.mkdirSync===AV.mkdirSync:()=>!1;aV.exports={useNative:yLe,useNativeSync:wLe}});var dV=I((Zlt,uV)=>{var Sg=z7(),xg=_7(),{mkdirpNative:gV,mkdirpNativeSync:fV}=oV(),{mkdirpManual:hV,mkdirpManualSync:pV}=eR(),{useNative:BLe,useNativeSync:QLe}=cV(),kg=(t,e)=>(t=xg(t),e=Sg(e),BLe(e)?gV(t,e):hV(t,e)),bLe=(t,e)=>(t=xg(t),e=Sg(e),QLe(e)?fV(t,e):pV(t,e));kg.sync=bLe;kg.native=(t,e)=>gV(xg(t),Sg(e));kg.manual=(t,e)=>hV(xg(t),Sg(e));kg.nativeSync=(t,e)=>fV(xg(t),Sg(e));kg.manualSync=(t,e)=>pV(xg(t),Sg(e));uV.exports=kg});var BV=I(($lt,CV)=>{"use strict";var fs=require("fs"),Qc=require("path"),vLe=fs.lchown?"lchown":"chown",SLe=fs.lchownSync?"lchownSync":"chownSync",mV=fs.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),IV=(t,e,r)=>{try{return fs[SLe](t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},xLe=(t,e,r)=>{try{return fs.chownSync(t,e,r)}catch(i){if(i.code!=="ENOENT")throw i}},kLe=mV?(t,e,r,i)=>n=>{!n||n.code!=="EISDIR"?i(n):fs.chown(t,e,r,i)}:(t,e,r,i)=>i,rR=mV?(t,e,r)=>{try{return IV(t,e,r)}catch(i){if(i.code!=="EISDIR")throw i;xLe(t,e,r)}}:(t,e,r)=>IV(t,e,r),PLe=process.version,EV=(t,e,r)=>fs.readdir(t,e,r),DLe=(t,e)=>fs.readdirSync(t,e);/^v4\./.test(PLe)&&(EV=(t,e,r)=>fs.readdir(t,r));var wB=(t,e,r,i)=>{fs[vLe](t,e,r,kLe(t,e,r,n=>{i(n&&n.code!=="ENOENT"?n:null)}))},yV=(t,e,r,i,n)=>{if(typeof e=="string")return fs.lstat(Qc.resolve(t,e),(s,o)=>{if(s)return n(s.code!=="ENOENT"?s:null);o.name=e,yV(t,o,r,i,n)});if(e.isDirectory())iR(Qc.resolve(t,e.name),r,i,s=>{if(s)return n(s);let o=Qc.resolve(t,e.name);wB(o,r,i,n)});else{let s=Qc.resolve(t,e.name);wB(s,r,i,n)}},iR=(t,e,r,i)=>{EV(t,{withFileTypes:!0},(n,s)=>{if(n){if(n.code==="ENOENT")return i();if(n.code!=="ENOTDIR"&&n.code!=="ENOTSUP")return i(n)}if(n||!s.length)return wB(t,e,r,i);let o=s.length,a=null,l=c=>{if(!a){if(c)return i(a=c);if(--o==0)return wB(t,e,r,i)}};s.forEach(c=>yV(t,c,e,r,l))})},RLe=(t,e,r,i)=>{if(typeof e=="string")try{let n=fs.lstatSync(Qc.resolve(t,e));n.name=e,e=n}catch(n){if(n.code==="ENOENT")return;throw n}e.isDirectory()&&wV(Qc.resolve(t,e.name),r,i),rR(Qc.resolve(t,e.name),r,i)},wV=(t,e,r)=>{let i;try{i=DLe(t,{withFileTypes:!0})}catch(n){if(n.code==="ENOENT")return;if(n.code==="ENOTDIR"||n.code==="ENOTSUP")return rR(t,e,r);throw n}return i&&i.length&&i.forEach(n=>RLe(t,n,e,r)),rR(t,e,r)};CV.exports=iR;iR.sync=wV});var SV=I((rct,nR)=>{"use strict";var QV=dV(),hs=require("fs"),BB=require("path"),bV=BV(),sR=class extends Error{constructor(e,r){super("Cannot extract through symbolic link");this.path=r,this.symlink=e}get name(){return"SylinkError"}},cd=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'");this.path=e,this.code=r}get name(){return"CwdError"}},ect=nR.exports=(t,e,r)=>{let i=e.umask,n=e.mode|448,s=(n&i)!=0,o=e.uid,a=e.gid,l=typeof o=="number"&&typeof a=="number"&&(o!==e.processUid||a!==e.processGid),c=e.preserve,u=e.unlink,g=e.cache,f=e.cwd,h=(m,E)=>{m?r(m):(g.set(t,!0),E&&l?bV(E,o,a,B=>h(B)):s?hs.chmod(t,n,r):r())};if(g&&g.get(t)===!0)return h();if(t===f)return hs.stat(t,(m,E)=>{(m||!E.isDirectory())&&(m=new cd(t,m&&m.code||"ENOTDIR")),h(m)});if(c)return QV(t,{mode:n}).then(m=>h(null,m),h);let d=BB.relative(f,t).split(/\/|\\/);QB(f,d,n,g,u,f,null,h)},QB=(t,e,r,i,n,s,o,a)=>{if(!e.length)return a(null,o);let l=e.shift(),c=t+"/"+l;if(i.get(c))return QB(c,e,r,i,n,s,o,a);hs.mkdir(c,r,vV(c,e,r,i,n,s,o,a))},vV=(t,e,r,i,n,s,o,a)=>l=>{if(l){if(l.path&&BB.dirname(l.path)===s&&(l.code==="ENOTDIR"||l.code==="ENOENT"))return a(new cd(s,l.code));hs.lstat(t,(c,u)=>{if(c)a(c);else if(u.isDirectory())QB(t,e,r,i,n,s,o,a);else if(n)hs.unlink(t,g=>{if(g)return a(g);hs.mkdir(t,r,vV(t,e,r,i,n,s,o,a))});else{if(u.isSymbolicLink())return a(new sR(t,t+"/"+e.join("/")));a(l)}})}else o=o||t,QB(t,e,r,i,n,s,o,a)},tct=nR.exports.sync=(t,e)=>{let r=e.umask,i=e.mode|448,n=(i&r)!=0,s=e.uid,o=e.gid,a=typeof s=="number"&&typeof o=="number"&&(s!==e.processUid||o!==e.processGid),l=e.preserve,c=e.unlink,u=e.cache,g=e.cwd,f=m=>{u.set(t,!0),m&&a&&bV.sync(m,s,o),n&&hs.chmodSync(t,i)};if(u&&u.get(t)===!0)return f();if(t===g){let m=!1,E="ENOTDIR";try{m=hs.statSync(t).isDirectory()}catch(B){E=B.code}finally{if(!m)throw new cd(t,E)}f();return}if(l)return f(QV.sync(t,i));let p=BB.relative(g,t).split(/\/|\\/),d=null;for(let m=p.shift(),E=g;m&&(E+="/"+m);m=p.shift())if(!u.get(E))try{hs.mkdirSync(E,i),d=d||E,u.set(E,!0)}catch(B){if(B.path&&BB.dirname(B.path)===g&&(B.code==="ENOTDIR"||B.code==="ENOENT"))return new cd(g,B.code);let b=hs.lstatSync(E);if(b.isDirectory()){u.set(E,!0);continue}else if(c){hs.unlinkSync(E),hs.mkdirSync(E,i),d=d||E,u.set(E,!0);continue}else if(b.isSymbolicLink())return new sR(E,E+"/"+p.join("/"))}return f(d)}});var PV=I((ict,xV)=>{var kV=require("assert");xV.exports=()=>{let t=new Map,e=new Map,{join:r}=require("path"),i=u=>r(u).split(/[\\\/]/).slice(0,-1).reduce((g,f)=>g.length?g.concat(r(g[g.length-1],f)):[f],[]),n=new Set,s=u=>{let g=e.get(u);if(!g)throw new Error("function does not have any path reservations");return{paths:g.paths.map(f=>t.get(f)),dirs:[...g.dirs].map(f=>t.get(f))}},o=u=>{let{paths:g,dirs:f}=s(u);return g.every(h=>h[0]===u)&&f.every(h=>h[0]instanceof Set&&h[0].has(u))},a=u=>n.has(u)||!o(u)?!1:(n.add(u),u(()=>l(u)),!0),l=u=>{if(!n.has(u))return!1;let{paths:g,dirs:f}=e.get(u),h=new Set;return g.forEach(p=>{let d=t.get(p);kV.equal(d[0],u),d.length===1?t.delete(p):(d.shift(),typeof d[0]=="function"?h.add(d[0]):d[0].forEach(m=>h.add(m)))}),f.forEach(p=>{let d=t.get(p);kV(d[0]instanceof Set),d[0].size===1&&d.length===1?t.delete(p):d[0].size===1?(d.shift(),h.add(d[0])):d[0].delete(u)}),n.delete(u),h.forEach(p=>a(p)),!0};return{check:o,reserve:(u,g)=>{let f=new Set(u.map(h=>i(h)).reduce((h,p)=>h.concat(p)));return e.set(g,{dirs:f,paths:u}),u.forEach(h=>{let p=t.get(h);p?p.push(g):t.set(h,[g])}),f.forEach(h=>{let p=t.get(h);p?p[p.length-1]instanceof Set?p[p.length-1].add(g):p.push(new Set([g])):t.set(h,[new Set([g])])}),a(g)}}}});var FV=I((nct,DV)=>{var FLe=process.env.__FAKE_PLATFORM__||process.platform,NLe=FLe==="win32",LLe=global.__FAKE_TESTING_FS__||require("fs"),{O_CREAT:TLe,O_TRUNC:MLe,O_WRONLY:OLe,UV_FS_O_FILEMAP:RV=0}=LLe.constants,KLe=NLe&&!!RV,ULe=512*1024,HLe=RV|MLe|TLe|OLe;DV.exports=KLe?t=>t"w"});var hR=I((Act,NV)=>{"use strict";var GLe=require("assert"),sct=require("events").EventEmitter,jLe=ld(),Ut=require("fs"),YLe=bg(),Pa=require("path"),oR=SV(),oct=oR.sync,LV=yD(),qLe=PV(),TV=Symbol("onEntry"),aR=Symbol("checkFs"),MV=Symbol("checkFs2"),AR=Symbol("isReusable"),Da=Symbol("makeFs"),lR=Symbol("file"),cR=Symbol("directory"),bB=Symbol("link"),OV=Symbol("symlink"),KV=Symbol("hardlink"),UV=Symbol("unsupported"),act=Symbol("unknown"),HV=Symbol("checkPath"),Pg=Symbol("mkdir"),nn=Symbol("onError"),vB=Symbol("pending"),GV=Symbol("pend"),Dg=Symbol("unpend"),uR=Symbol("ended"),gR=Symbol("maybeClose"),fR=Symbol("skip"),ud=Symbol("doChown"),gd=Symbol("uid"),fd=Symbol("gid"),jV=require("crypto"),YV=FV(),SB=()=>{throw new Error("sync function called cb somehow?!?")},JLe=(t,e)=>{if(process.platform!=="win32")return Ut.unlink(t,e);let r=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.rename(t,r,i=>{if(i)return e(i);Ut.unlink(r,e)})},WLe=t=>{if(process.platform!=="win32")return Ut.unlinkSync(t);let e=t+".DELETE."+jV.randomBytes(16).toString("hex");Ut.renameSync(t,e),Ut.unlinkSync(e)},qV=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,xB=class extends jLe{constructor(e){if(e||(e={}),e.ondone=r=>{this[uR]=!0,this[gR]()},super(e),this.reservations=qLe(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[vB]=0,this[uR]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||process.platform==="win32",this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Pa.resolve(e.cwd||process.cwd()),this.strip=+e.strip||0,this.processUmask=process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[TV](r))}warn(e,r,i={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(i.recoverable=!1),super.warn(e,r,i)}[gR](){this[uR]&&this[vB]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[HV](e){if(this.strip){let r=e.path.split(/\/|\\/);if(r.length=this.strip&&(e.linkpath=i.slice(this.strip).join("/"))}}if(!this.preservePaths){let r=e.path;if(r.match(/(^|\/|\\)\.\.(\\|\/|$)/))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;if(Pa.win32.isAbsolute(r)){let i=Pa.win32.parse(r);e.path=r.substr(i.root.length);let n=i.root;this.warn("TAR_ENTRY_INFO",`stripping ${n} from absolute path`,{entry:e,path:r})}}if(this.win32){let r=Pa.win32.parse(e.path);e.path=r.root===""?LV.encode(e.path):r.root+LV.encode(e.path.substr(r.root.length))}return Pa.isAbsolute(e.path)?e.absolute=e.path:e.absolute=Pa.resolve(this.cwd,e.path),!0}[TV](e){if(!this[HV](e))return e.resume();switch(GLe.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[aR](e);case"CharacterDevice":case"BlockDevice":case"FIFO":return this[UV](e)}}[nn](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[Dg](),r.resume())}[Pg](e,r,i){oR(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r},i)}[ud](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[gd](e){return qV(this.uid,e.uid,this.processUid)}[fd](e){return qV(this.gid,e.gid,this.processGid)}[lR](e,r){let i=e.mode&4095||this.fmode,n=new YLe.WriteStream(e.absolute,{flags:YV(e.size),mode:i,autoClose:!1});n.on("error",l=>this[nn](l,e));let s=1,o=l=>{if(l)return this[nn](l,e);--s==0&&Ut.close(n.fd,c=>{r(),c?this[nn](c,e):this[Dg]()})};n.on("finish",l=>{let c=e.absolute,u=n.fd;if(e.mtime&&!this.noMtime){s++;let g=e.atime||new Date,f=e.mtime;Ut.futimes(u,g,f,h=>h?Ut.utimes(c,g,f,p=>o(p&&h)):o())}if(this[ud](e)){s++;let g=this[gd](e),f=this[fd](e);Ut.fchown(u,g,f,h=>h?Ut.chown(c,g,f,p=>o(p&&h)):o())}o()});let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.pipe(n)}[cR](e,r){let i=e.mode&4095||this.dmode;this[Pg](e.absolute,i,n=>{if(n)return r(),this[nn](n,e);let s=1,o=a=>{--s==0&&(r(),this[Dg](),e.resume())};e.mtime&&!this.noMtime&&(s++,Ut.utimes(e.absolute,e.atime||new Date,e.mtime,o)),this[ud](e)&&(s++,Ut.chown(e.absolute,this[gd](e),this[fd](e),o)),o()})}[UV](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[OV](e,r){this[bB](e,e.linkpath,"symlink",r)}[KV](e,r){this[bB](e,Pa.resolve(this.cwd,e.linkpath),"link",r)}[GV](){this[vB]++}[Dg](){this[vB]--,this[gR]()}[fR](e){this[Dg](),e.resume()}[AR](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&process.platform!=="win32"}[aR](e){this[GV]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,i=>this[MV](e,i))}[MV](e,r){this[Pg](Pa.dirname(e.absolute),this.dmode,i=>{if(i)return r(),this[nn](i,e);Ut.lstat(e.absolute,(n,s)=>{s&&(this.keep||this.newer&&s.mtime>e.mtime)?(this[fR](e),r()):n||this[AR](e,s)?this[Da](null,e,r):s.isDirectory()?e.type==="Directory"?!e.mode||(s.mode&4095)===e.mode?this[Da](null,e,r):Ut.chmod(e.absolute,e.mode,o=>this[Da](o,e,r)):Ut.rmdir(e.absolute,o=>this[Da](o,e,r)):JLe(e.absolute,o=>this[Da](o,e,r))})})}[Da](e,r,i){if(e)return this[nn](e,r);switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[lR](r,i);case"Link":return this[KV](r,i);case"SymbolicLink":return this[OV](r,i);case"Directory":case"GNUDumpDir":return this[cR](r,i)}}[bB](e,r,i,n){Ut[i](r,e.absolute,s=>{if(s)return this[nn](s,e);n(),this[Dg](),e.resume()})}},JV=class extends xB{constructor(e){super(e)}[aR](e){let r=this[Pg](Pa.dirname(e.absolute),this.dmode,SB);if(r)return this[nn](r,e);try{let i=Ut.lstatSync(e.absolute);if(this.keep||this.newer&&i.mtime>e.mtime)return this[fR](e);if(this[AR](e,i))return this[Da](null,e,SB);try{return i.isDirectory()?e.type==="Directory"?e.mode&&(i.mode&4095)!==e.mode&&Ut.chmodSync(e.absolute,e.mode):Ut.rmdirSync(e.absolute):WLe(e.absolute),this[Da](null,e,SB)}catch(n){return this[nn](n,e)}}catch(i){return this[Da](null,e,SB)}}[lR](e,r){let i=e.mode&4095||this.fmode,n=l=>{let c;try{Ut.closeSync(o)}catch(u){c=u}(l||c)&&this[nn](l||c,e)},s,o;try{o=Ut.openSync(e.absolute,YV(e.size),i)}catch(l){return n(l)}let a=this.transform&&this.transform(e)||e;a!==e&&(a.on("error",l=>this[nn](l,e)),e.pipe(a)),a.on("data",l=>{try{Ut.writeSync(o,l,0,l.length)}catch(c){n(c)}}),a.on("end",l=>{let c=null;if(e.mtime&&!this.noMtime){let u=e.atime||new Date,g=e.mtime;try{Ut.futimesSync(o,u,g)}catch(f){try{Ut.utimesSync(e.absolute,u,g)}catch(h){c=f}}}if(this[ud](e)){let u=this[gd](e),g=this[fd](e);try{Ut.fchownSync(o,u,g)}catch(f){try{Ut.chownSync(e.absolute,u,g)}catch(h){c=c||f}}}n(c)})}[cR](e,r){let i=e.mode&4095||this.dmode,n=this[Pg](e.absolute,i);if(n)return this[nn](n,e);if(e.mtime&&!this.noMtime)try{Ut.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch(s){}if(this[ud](e))try{Ut.chownSync(e.absolute,this[gd](e),this[fd](e))}catch(s){}e.resume()}[Pg](e,r){try{return oR.sync(e,{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(i){return i}}[bB](e,r,i,n){try{Ut[i+"Sync"](r,e.absolute),e.resume()}catch(s){return this[nn](s,e)}}};xB.Sync=JV;NV.exports=xB});var XV=I((cct,WV)=>{"use strict";var zLe=fg(),kB=hR(),zV=require("fs"),VV=bg(),_V=require("path"),lct=WV.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let i=zLe(t);if(i.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!i.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&VLe(i,e),i.file&&i.sync?_Le(i):i.file?XLe(i,r):i.sync?ZLe(i):$Le(i)},VLe=(t,e)=>{let r=new Map(e.map(s=>[s.replace(/\/+$/,""),!0])),i=t.filter,n=(s,o)=>{let a=o||_V.parse(s).root||".",l=s===a?!1:r.has(s)?r.get(s):n(_V.dirname(s),a);return r.set(s,l),l};t.filter=i?(s,o)=>i(s,o)&&n(s.replace(/\/+$/,"")):s=>n(s.replace(/\/+$/,""))},_Le=t=>{let e=new kB.Sync(t),r=t.file,i=!0,n,s=zV.statSync(r),o=t.maxReadSize||16*1024*1024;new VV.ReadStreamSync(r,{readSize:o,size:s.size}).pipe(e)},XLe=(t,e)=>{let r=new kB(t),i=t.maxReadSize||16*1024*1024,n=t.file,s=new Promise((o,a)=>{r.on("error",a),r.on("close",o),zV.stat(n,(l,c)=>{if(l)a(l);else{let u=new VV.ReadStream(n,{readSize:i,size:c.size});u.on("error",a),u.pipe(r)}})});return e?s.then(e,e):s},ZLe=t=>new kB.Sync(t),$Le=t=>new kB(t)});var ZV=I($r=>{"use strict";$r.c=$r.create=T7();$r.r=$r.replace=XD();$r.t=$r.list=EB();$r.u=$r.update=q7();$r.x=$r.extract=XV();$r.Pack=AB();$r.Unpack=hR();$r.Parse=ld();$r.ReadEntry=id();$r.WriteEntry=xD();$r.Header=Cg();$r.Pax=zw();$r.types=rd()});var e_=I((gct,pR)=>{"use strict";var eTe=Object.prototype.hasOwnProperty,sn="~";function hd(){}Object.create&&(hd.prototype=Object.create(null),new hd().__proto__||(sn=!1));function tTe(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function $V(t,e,r,i,n){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new tTe(r,i||t,n),o=sn?sn+e:e;return t._events[o]?t._events[o].fn?t._events[o]=[t._events[o],s]:t._events[o].push(s):(t._events[o]=s,t._eventsCount++),t}function PB(t,e){--t._eventsCount==0?t._events=new hd:delete t._events[e]}function Ti(){this._events=new hd,this._eventsCount=0}Ti.prototype.eventNames=function(){var e=[],r,i;if(this._eventsCount===0)return e;for(i in r=this._events)eTe.call(r,i)&&e.push(sn?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};Ti.prototype.listeners=function(e){var r=sn?sn+e:e,i=this._events[r];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,s=i.length,o=new Array(s);n{"use strict";t_.exports=(t,e)=>(e=e||(()=>{}),t.then(r=>new Promise(i=>{i(e())}).then(()=>r),r=>new Promise(i=>{i(e())}).then(()=>{throw r})))});var n_=I((hct,DB)=>{"use strict";var rTe=r_(),dR=class extends Error{constructor(e){super(e);this.name="TimeoutError"}},i_=(t,e,r)=>new Promise((i,n)=>{if(typeof e!="number"||e<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(e===Infinity){i(t);return}let s=setTimeout(()=>{if(typeof r=="function"){try{i(r())}catch(l){n(l)}return}let o=typeof r=="string"?r:`Promise timed out after ${e} milliseconds`,a=r instanceof Error?r:new dR(o);typeof t.cancel=="function"&&t.cancel(),n(a)},e);rTe(t.then(i,n),()=>{clearTimeout(s)})});DB.exports=i_;DB.exports.default=i_;DB.exports.TimeoutError=dR});var s_=I(CR=>{"use strict";Object.defineProperty(CR,"__esModule",{value:!0});function iTe(t,e,r){let i=0,n=t.length;for(;n>0;){let s=n/2|0,o=i+s;r(t[o],e)<=0?(i=++o,n-=s+1):n=s}return i}CR.default=iTe});var a_=I(mR=>{"use strict";Object.defineProperty(mR,"__esModule",{value:!0});var nTe=s_(),o_=class{constructor(){this._queue=[]}enqueue(e,r){r=Object.assign({priority:0},r);let i={priority:r.priority,run:e};if(this.size&&this._queue[this.size-1].priority>=r.priority){this._queue.push(i);return}let n=nTe.default(this._queue,i,(s,o)=>o.priority-s.priority);this._queue.splice(n,0,i)}dequeue(){let e=this._queue.shift();return e==null?void 0:e.run}filter(e){return this._queue.filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return this._queue.length}};mR.default=o_});var c_=I(IR=>{"use strict";Object.defineProperty(IR,"__esModule",{value:!0});var sTe=e_(),A_=n_(),oTe=a_(),RB=()=>{},aTe=new A_.TimeoutError,l_=class extends sTe{constructor(e){var r,i,n,s;super();if(this._intervalCount=0,this._intervalEnd=0,this._pendingCount=0,this._resolveEmpty=RB,this._resolveIdle=RB,e=Object.assign({carryoverConcurrencyCount:!1,intervalCap:Infinity,interval:0,concurrency:Infinity,autoStart:!0,queueClass:oTe.default},e),!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(r=e.intervalCap)===null||r===void 0?void 0:r.toString())!==null&&i!==void 0?i:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(n=e.interval)===null||n===void 0?void 0:n.toString())!==null&&s!==void 0?s:""}\` (${typeof e.interval})`);this._carryoverConcurrencyCount=e.carryoverConcurrencyCount,this._isIntervalIgnored=e.intervalCap===Infinity||e.interval===0,this._intervalCap=e.intervalCap,this._interval=e.interval,this._queue=new e.queueClass,this._queueClass=e.queueClass,this.concurrency=e.concurrency,this._timeout=e.timeout,this._throwOnTimeout=e.throwOnTimeout===!0,this._isPaused=e.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},r)),!0}return!1}_tryToStartAnother(){if(this._queue.size===0)return this._intervalId&&clearInterval(this._intervalId),this._intervalId=void 0,this._resolvePromises(),!1;if(!this._isPaused){let e=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){let r=this._queue.dequeue();return r?(this.emit("active"),r(),e&&this._initializeIntervalIfNeeded(),!0):!1}}return!1}_initializeIntervalIfNeeded(){this._isIntervalIgnored||this._intervalId!==void 0||(this._intervalId=setInterval(()=>{this._onInterval()},this._interval),this._intervalEnd=Date.now()+this._interval)}_onInterval(){this._intervalCount===0&&this._pendingCount===0&&this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0),this._intervalCount=this._carryoverConcurrencyCount?this._pendingCount:0,this._processQueue()}_processQueue(){for(;this._tryToStartAnother(););}get concurrency(){return this._concurrency}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this._concurrency=e,this._processQueue()}async add(e,r={}){return new Promise((i,n)=>{let s=async()=>{this._pendingCount++,this._intervalCount++;try{let o=this._timeout===void 0&&r.timeout===void 0?e():A_.default(Promise.resolve(e()),r.timeout===void 0?this._timeout:r.timeout,()=>{(r.throwOnTimeout===void 0?this._throwOnTimeout:r.throwOnTimeout)&&n(aTe)});i(await o)}catch(o){n(o)}this._next()};this._queue.enqueue(s,r),this._tryToStartAnother(),this.emit("add")})}async addAll(e,r){return Promise.all(e.map(async i=>this.add(i,r)))}start(){return this._isPaused?(this._isPaused=!1,this._processQueue(),this):this}pause(){this._isPaused=!0}clear(){this._queue=new this._queueClass}async onEmpty(){if(this._queue.size!==0)return new Promise(e=>{let r=this._resolveEmpty;this._resolveEmpty=()=>{r(),e()}})}async onIdle(){if(!(this._pendingCount===0&&this._queue.size===0))return new Promise(e=>{let r=this._resolveIdle;this._resolveIdle=()=>{r(),e()}})}get size(){return this._queue.size}sizeBy(e){return this._queue.filter(e).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(e){this._timeout=e}};IR.default=l_});var p_=I((Ict,h_)=>{var yR;h_.exports.getContent=()=>(typeof yR=="undefined"&&(yR=require("zlib").brotliDecompressSync(Buffer.from("W4IvekBxw2bzwtWbVf5fyX2AzAPMISJEY/fbMcKtepRTQlBXjG63eijJbQN4ALzvTBt+EVRVTTsqQ1wCS1oAYPuvqgWZIinRemQXGoWk4C5BOebq1CAsym3ILBoVZ6LpLswKQ4VNE6OQ3IoPxtM31ikJr/0aapiJOVzKMZJvVs7xyhEPb7LomEWn5rAew20WdiSC78J8645T+pzTZd2xBeNUftH3D/KCqIvf9WM4TH9KLFd/FFfbC9KDCMMr8adqt8u9KMdA74EW1Fz9lq72Fjds/1MKj113I0V5rYqPiha9B2QgN/UDYBFRw5RY5xhbddceetpc4haPeL+qeP+HTa1/Pq/ByyJE0UgpHdi9UprGorlUjHtupQT+VS2rl031EBiQOP5mroPRuipsZVWUW16j8M/7N+4KHWj7S2plWoCBPv+/38++//x8bZ2sRVXnUHS884T7MhrTmVHjqPfJZSGBA9aVWAxVdDc9Xf/vTf3++/NlPBnDmKNYctqelsOFLOtk2d/mNhagxTxLQhWSlVZ2r6Xa/z4vkq5xSelcxWaxOaNFx4IjJdnZ+Erp8j+b5umKtUkoCoPelwSsxzIp9VzqNhmsiVywXNlJmPWlWr9O1wIvqPm8JC82ja2IDr1iR/Fe8z/fZv0/P1+3V3CNoJcd5i006W2GbMubVIrYElLcSMfKvdfYoV4apEfBp/E11b/nciLpskmBtKqU1gftJEwEDG/ZtYz+9//7pf3nx7wFo/SUT5iokUamoOLyl2UKjdeEU1d8r9Zn1W/R7eZWhxGyeSNAH9CMnYsUVXwp3/n8cvE+dWlKucsjjWYs/4LsTBKzAwNjYyCAAy5NETCxge3maAgT8APsh/XO/peL90kHuBm2p0rV3fIPykIDzo74hlK1bAwxM20ZHt9U63ily5vo+kHRMSdKgaYfOwhz5Sn2hqLhvy9fteViPqI/k9DL+xoFskEQUkGCbXnH0EfVtM4EEiG74fjy7dV+uXg/8mlfsjxHVxeEgUS4uHF2DpkKxpM4LZ4hrh81tj8eOkhmfTq+2R1gENABqeimmItRoeJvJQub2vPpdo2nSCEiTvrJ3v1pZnEV7gg7+7bWHw9/T2fj2NRHgBmZD0gTueleIeisWP3ve1NzaagBiQ4pLZZ5N4QEOcfVAv/cc94VfugWOqDJboCoAcO4FCukye+935B/g2QZAKUpkJMoTaLkkNJqZmXnnXc7l7cb+//v+6WVmwJgtkaxRwjhjeEBiQSrmq21P8vHP+JuIv7/8ZsZGRnNlFNAElxFoAprKLv12efc974EEPEzi5UCNUWCZAuWw+oRylPKm/H8nrGE4Y3nRYI1a3G1VWss5Vjjjd+396ukveuZPAOC3hGow6czI949qilzduyanpH3yOaNG5FZ5le1k3dYAlQAg/erZHpX8khigvo/nVn7RzOS7603SEV3TaEB/xB2h01p0OjvbgwHYahSHZHHkmPJIYCiT5WibQ7Q5f3/ptrb3jczIEFxpU9wE/Wjdp1TO6D2O6UqxNK9K7x337zVvPcGR8CA/AIGoA8whM6SIHWWAMgNoBYAfwDwE7VRcqQc6Uw5bugEUCH+xB/1HVKqfoidQypzaAofF6XLzp3b3m2XqsZFaf/73tT6n55z04FGEFVPpo3z40SSVUWZZ5yP+Wvds/dZobzn3BsFpIkiMhPRZAKMEAEyukiQbSjVOTcT1LlJlCoBUdUJUNUNUKr3KHVVBKWu/u3+9zLPSd/5mRtMfsydGVk/mqm/1TfGgDpnFwZZVYV1P89TV//q/HPhVV/6WdbylQI4FYpghN+zaesKrSABi8VSH1Nx2kmj0XQsFUaHkK5/KcdyY0sswnPfvPCw6crGIMn8huUTkuWHrVKmTlHf3ABu+/6mxDupC4NeFbEgR25IDpQB4ogctIDx4v+eB7f1bx5MDkR+GMAGLIiNEQsiJSUNwgKLUEklUrj4vxfQGoroZy0UMgi9QYq78h+Wnfr7F+lh0AFzmEPAAXMIGCRIwBwiFuxiD8NuYXPo4e3383TBv//uCTN3WSoqEBWICkQFooItZEEgEAhEk3Xb1q0Pvpvd+6uX3GeSQyAqEAhEBQKBQCAQiApERXOpqKhArP/bnn8+zr2hfHjhBGEMOxhkMBgMMhgMBsMJMpwBg2EHww47LAbD3TYqqpm5T717dy0QiAgEAoFAIBARiAgEAoFAIBBUHSIiAohKp9p/A3DA5pMBLw4ATR+lx+ldZfjflmXc9VqyBAuwAKu3c1Vfv68x5vlt/h8sdkFuJKUjDCJNEAvxbubEJrZ+8fOz+QTu28Bv8/+fM3h36Lx1jmIgYYLOYGJg4uyFKBbqpK3Fex9/CCemR7f6iQJ6QOTu/q6mASmUbiAgoQhJoAeQLk2kiAJi393bfzczsyUv2TLwbvv/O8pzGcgLYwmLgiFuYFAGYTVSJqAIvY0bv2veuxPoVg0uEBdEvrkbQguhhdoFAkhIqCnUJq1ldxXvvssKEhYpfyGy6RbAv2zkGaunLESfoON74WHk+D2YOHbOwKOPCESrJ9S5BC7ZgBmPDoObI8dX5FkU4JQzYIGh+6zg9rbnz2QgZohZ3pEbHQ6sjViSgPTQij7Dxutes69hv+5XpysLHkb2cPjYxDOuImDZiaoy4Ysya3+5FPzE5FKHw06eJGnB0LQq0xyqR/1KeqUM8LspwsGd9PmHhrBBt+Rui33l3rZi+li7ZMcC8qelNCM+/KAvzkzPSyerciwLTg0KtrZmCWSr3aqAsSz8V6qB4mYiE6ag9wGCYqPgDqI267Rlxkb01wEJabYuUGhDWCL3ZOJtkhcF6ks3DJeL59x/rmExNtaU8Q8Kziwegm+LLjYrJXAPICERn8O4BPB6BSh8Kg9in4VbjjsaYtsAnLv7evkj3Q78A5v85T70kFfT6zcx7GaA6IVcN8jz9+3M4HzI8ZP8HklBF2bRuyuOnq3B17cPjzClHQgFwSXCmOgEQSY3xoTZFE0mJ8aEa1BiKTImOil6KrkwJtwAKSuBxkRrULrZU2U1nsOiC3k25pUg4NLu9emwkx81TFYucs3wxqTHHS3F/IzT4iFZ9UNDSGyevtDZ8c+SsOKnnc4/yzSjPj319W1EB9Q3YVDtn1sc3+yR1d9LNvyrOh/Ux4FZwNng+ukRPmqhNgH8bAzaGyCyAQ27E8Mlhdberrd1cTapgYerB6kFZOZnVd3F00FZ2X+2/enV06tbrcXkHkFqQu1kt6fF9Hzt6dosWOgP8DTHLX1Pq2E8SEttHRIqej5AnU3SSPSxhYloDWtmwUwe39LycG2LNyIhuSGGgBh5PTww6r6pfYVEbz6R+Gn1uPeUHhB+P6snLuKVEevjYfw9Esz+XTnYXlitNg/mdW3rquMQ9nxowHwWoK84fhOekXLSB2LNjiLJPLsEj8hbsJV5rHYhr9XAtadrtZwHu1m59oNrP3gtB3WA518JFHRCGRQeIXmwkXzYXJkRbA0+d2MmoCwYzfOvNJxCz3Fmdh8uRz78yjyYApcrP4aVuZ8RGJIz/crsNXQ8SbNuQWVDjLKYNHr1vSXqYljW4iaK8giYyU5vzdrBbM2HJpe7D88wqq37wv1n7yBPKjjqDwmUhLIvUUkGahBADYS20ow/S0Sdh3IZX+q49d89tUZiaKr67GoxsI5YDu13YaOg4ZBdFPpIRew7I/qMqqWwO94DJC4pG9BEcosloEHhmPMutLeOpja8dj73sJp7xz8GR2a4L2McYRSJ5bBWxxrwyoSDQ8YgwaKyLfb0aP9iWsq++f1HK/m7OSH6Kqev2H6VLT8yhUeNEKkW4KHkfkYxu+vvMPNPWENrXc4L4fQOkHN994aFLAUEMAYo8JCHhAaQXfvdLAR/JPqN3U7fXLVU3s5S2OoA5r/dSfv94iDXgDTwxTVMA9JAVKY7lMhTGqJ61AMqPJYhswoAhPBRgOblvaPB/TQCL/8B+HUaQAUPB9wUHPzYBzT2lkdoKoEhaffyQTk9csTGEuuJdPDBwo4OZ9ybYXNc4A71bdBm8ofUSrt0z0FhqIc9PdCQ+weKl/D9fisBR7BOudFyHbNB4yWVI3EvCyJKllFC0Wp9T5gsjT6YI2Zz4QQf9dvS1e93LndKH3HIakf4I69vKPEfxsYbhF7kXhaEwtU3zLI6lxudczrc3EVbB7fNqNfA28oCwfqobwYRw6U2D8RYtUNX1YNrorqYMJrqJU6mPT7t1I07laNu31cOST9Ok7DVL4b/orKbf93o+J7A556CD6hTR//2c6J1KJcFuJvVcwooEyW+AE5p0XllGdyFPsvNxzLspyC6nVqm5zsY+ntzzYtDRDZQlX5Dwqs+9YojNnoZ9dOFjMdrGP+UztqB5Vk/qaKlff+NW0cPd4uo++bXvznQOx4BRurVOAfYObmXxvxbbXO5rS6R2YK9nIDgQHJ4N6kRhj1hlt+Ey7+epBAgXI2cdypHEwJm4woBdjttQ6Q4Xywp8KLJxck0CiS5gpT1EoKepra4m9Qex1GfJIZlzuC2EmBRUnnGPiSsdYPShT6lfynnwanlJwJAe/lnNKGux1+W4yv+OCO+YPCP6xWngmCLVhdCEuvb+R5CCW/80/LtRpHoonAuHlG++hUSI+ve8XsDWMmSyAS/8uIh9GNbJfG7x2fhG/1KQk2y7m2pqGHbF3h4ww7lzlNIi/ngyCUaudEaRWXwsguWRYT1pLu0rJyNdmIuxAUJlnG8HfMt5BT7o8jIiviDqYCJq9dg12ifg84sB3UBD8KAhC8T4rRkY73q+kCBWHqCuU5IYnIdltwE/8UNJL1DlJ/DrkEDfy6Ck4xpqW+G4BVpn0ZXCVrcSCGYR44KDDd1/FymdTShe0OdNrpjZVcx2GgPccNtWxmYKnlrKGyROZJQzllGqNzTS2Z/5G06anFD79lXZxB9/25mjU1q922hHaq1kS+vubGXo4v5fFSdmsajepSTGYjMkyOL3Fiw+e7u9KRyUVBVu8gNVC/VGYziP87jv2vKOKDmjRXF+y0hxJvtummPy11OqHRX3cScswDP1jOVdAyg1WCK3nSdF0BVDdfcR4h36sh6wwcwGR6+nm1xZgxx8riXlXIPJL2Yh9sShtbC2jSNPN1QPr78CKMGYiIMB1H71ThPEUUoDELCv29I60pzh6SLt5OMdHGxWN+SYbgs8VmLaNoz0h7DnV6dvpn8tOFUzhtvp0somkWMTq9p7lom++gnyMDywdA4gOTPBMEwE4SoUv3ecxpbkQpWKdlXKXzI5C71nInrLMDxh7yQdp+SzjPoMvlqLCPAqghJC69oUUMIvkklZJFAwLMBFGCGWnP6pmkdlUvjlwSiAL9pWRvLRpIImrQBHgOirgNND5ZeehVPkEi/AcKuwgVFcA5zdmSqlfs+NFLu2yyEA9JsdzVfpiwEOEmn1uWPVbQ7O3yPsmXs6WpI5jJjMo2ZKm4j05By1ttSIw5bk2iiC22ECCroJ5mdO+hGCenkC+lE+ySJqqfqIkJ+9sZpV6/Rr2h8/+HPj4P+Rd9Xpgw9Rm4tcdVCPvnowzH3dheRNkB+GVHWBEXCQZOvDuRkpw2h7DeM4thaBLy+rHUV5T2DzNKu1KoiC0GcqZ+Epj8NyxIaRcmmXjLEtGGDsq2bKGSQ9VGGGKXsFuXP0unthiGWClGYWYWVuW99znc+iYTVi9jUZ38Us6r887Yt8pskyjWp7hDiMejui7KPyhrRH5cC5E91bXQNoFohtkBJuTINLPlEAAzjLTQxBTPPrww3pssM8CKSjsNVBBSPKerxFRJyoF4dE9CuZ1Bxgs0EUkqCDcOvzC3WtyCngt+sBavayVEScdnclhcakhs8fL0W9+MpyR/01tZriT8Y3qB+s9IUFmS4m9xbLTHUixxh2Loepl++OSFehJNMn0QNvVqrYdV17kKDySfzFHUtaWbGkJovdKPGupUY2nVKqWashiAdpxzIGRLn1qXW4/tamTKjhGPH2Nsic1aBxHwBhuU2RKMSLydB2obLQp/+BMuWptwGzwIOpk6XTmOKMugnJB8955oMMAmoeCNfDPAo2d/WsLsdsVBbdvOVhNm+2cqiM9iQsS5w7JocWUr51gb5KYqHTUkNEJ8Te98u869DGa8WbS6socqKGCSkkJF9VCe5jQlHARI5LdFIw3OouobAvaKi/Vdl/FYMYmm0ynq1SICNOdJMhX4eeFklpGWCMn615qWkUVR5h0UBUZQqZr7hd8Tc0LIAXPRWTW9srtKUFO4ra7PkrvEbZlVbC1vP4Ek1GKcp1TBHGrfz7HAgYqWyxnOxYjHvL1GLJ/6rEbZ3ezhjL0HttDpdVv3CBt7tIXtdYKi4IGcnlon8Om3jUBhF8EBJx94lIK3+rBfqhlPXY4+1mc5dSbeZ1WfvWVUV8i0ozU81l3uUgtLwAj19PjYuGPmtrTFsV2/5GFx/XELQHwOAjMKmq8kl92+E4fc+c09jIRvh4whvz4BkI1KyXi0EY+kum36fuCxAaCSQyMtH2QkF1wOjABebibpZeCrxsjmoPzNT+9aS4ygZEPXEG72kBA20mGMXH9bB1XR4JkBmPG3YS21XaAWHvoVy4fHDQa7h43ipZJ4yr2x/H2eTQt0uvoSm6sFf59aVwqRqEmy1WXNwIcQMXIydmNVH5UY4p/lB6g/B49KEXQL0B2A0x/IIYUniRTF9IhNjnclAcDNp0L46SMZnL4rrN4MRMJvpD7Zh58WWSW7qeJHpxa2fSLY+mRWItg9foXC91igcpgmHSQaz/OzWh8fMjpHDAPQHwLil5am4cMWi1k/EbQRgILCDQJkuNQOSWm5l8biwMzcfxupgcPh3h2ALdiyKc2yrTn9Ty+Z+YfPvz8D7BBbm2vO8Onv9p2Be7Pc0GHB72yOXNd0VtnvI2qIkyFmRz7l5U33RGa6W/OXd7BhJL0VQXIUyxjYmda/pNLgKrwTrmBwJdE6+1TIy1KG7VzRyuZlbLEUT9dpgmAShbfCopN5FMnkTYNJPTGh0NIUa3Y4DEL5hiT1RhGr/FPVqHs2f/T33S6IijqG4k8HzsZtWjKoVjaf6n3qvAcNnzTy7hjOCadOZ7bPdJFw1/is/1MKTt4MZi8hToV/F1Qf94c2j1rFCbSqgmeeLxHIbWRRVGi0l+2TbyA46UAjGHhzmoUTEXQtHpqGYtAlcq5hEdOGPORFwmO7eK3cMjwWIMwo2KPMkScsYUklaCMQmCEQ6imeZIe0PYcYOR40HCfRH1V7cWUsJOeEtGRsE63kxZ+POnnlfFwUFHd9Uksn8QF9daRYOm4auFWbvoCxGNlGWpQaheddqwOWMI9S3MykEH4P2xwAar7XaZpHQbvipit0fZppZC6XToDVKLzT6tVfgkZZeWc/ZoZCBXTJPlbebD86p2vxOUYJKlk54oqHaGxLl8xVT4hixfBbq/3JEhpWhB6IVhyuPJS8SaWJdt5cRXgLHxxm6XFKvcTB9OklRnrkNhGKWtfpro0Kr+xJJ873D2OOW9xQQluxVDBywBqEQ+uJlzK4zs11Z6K3pg+QiyZqXsPHMhVJ5SDtdfMJY+UnNsLKfkBYWVAWb6kqA0w23DoXtw2Gn6lM9oUKXV/y5Ev2ewl79JDn+6Jr7kT1coamngUnOGtiFsQJYNUBT4Sk23GhgzRNwVdEWfEG6qPtzmxXiWW4qHPLaqnphlVZeHH9p2vNHC1wwoS8J4mhxudZO775R2VFp8dcR4l16C+vQdCZ1X3J7s9c72BOPaNwzXLeGFKsAlFNNaW8eRMg1H7YIzxNOa1zF+fL8hAYH7QDmE0Dg+EMzAphRsrtRVadiWLIiwEvnv9Xt3gEvtGXXOCfptJ2qmNmgKEzqtKIsZcSIMiGWBIbjE9YJS/Wanu0e4gYBlXfg8DjZGAUPeMokpvhFsELuQxcagL7AvEFGCCcxfNglIViNatlBF0N2VQygBi84vtricEfs6i9uDDdDeEOI10Wu+ikyFfKN7fMG/w4eDKI+lcbHOsgdn6sZWR7UpoS9K5auqJD7yPtkNfVtbR3KWceADDKgmOTBLEC1HNnIuit1EbN8hQJmNH201yg7yDArSAYcEU+ZmmWpDMi7BGjBchzqTaZg4t6jY+/PRIoTNXvzoR5Cpo5MjOSDeTjtoKHpPrKHS4miUdbKPKtKCvxVAmconEDwye+M+RIhHd1JGRyQz0leRDZUUgOd/WwuP+uhWuTpWnXf5mwY2OqROiE9b2ge5c/S7sOnRgDgPlezoNItdGqJUqOFmTU6I9NwEIVEWUIR5oZVzMrt8YVRdxqYFGBIsLsw8DEGtazt+Cif84u6wTU2gwl5WgLormxO30wbrKMWlzrqml8OuVEHK0StdwcPD3TK+ocEIp5i4vDcv8ip4CKmlhjDkK8WB/K8lfYoA8RMnTXamvew+mYhLHBhrLCBEEYFFFLqyAeFnqedPF9c8K2V2AT1vAS839sDkDNJSXMiVPRl5/xBCEeZniL3pLda2ZXXwTbi+vPhT0Kzt/d9/VX1jB7uYxl+fbnE8qtqOotZIBpfSHGDn55gFqrM0rjHSEmU3LYLHdIDmYc0Ur4uUuf0wcj6ZLZbcxEYaSRpXwkYLXgXUW6KDYEtB2cYZOFwD6TKR8MXzXA35j/RXAwy7XluDeBxIwlB87YrCHuYhm6T57v/i8xzUiH3epdM0TIkaiAHOjlQZo5+ri+GbSNub9nteGyQIL+1ccU/UPLvWnzU+p9f8bGYkL1YKM08DKcgwd5YMnaw022W74fsHh6hzZ/GSI5fockxxCh1QnksQZ7vOceC5DInoGadmpJd5lFIG4S655ypy+J0lpQczRdCNIqXFUYtqPs/H+r4IET5opH6BLpxjpPSCIccVMDKrD2HCSTT22f/ZGthaWKy3LR5y0cLFTlewWIcsTtftPHa36C65UVE/EHg1U7dNBA8UarmQk4gnSAmC042oG3QZK3ptkUQP8UZuGpQZVQgwbjlY+LesqoHbmuwHYChlr9tFPAZ3nWJLn8elh8X6Q7c9QJb4T/OwhMxk7gj89jLkI8Udcd3r+WSSSVvpI9bsur6n/z3ZLTo+k2HlfJqDMlpgjC+x/EJgFoyh7ns5PNuflOQIyETrHM6CmsmT7PE5xfywmMa/FPRKUGIZ6LHwfxS4PuNz/snkYla7ybDM5jR4TFOLTTJdqG3Cq7ayzYZofOZWffGRZHIpYi3PsNAEaCveXWIrAWbLAYyT3Z9/0Q/dA1c8ZEz2zFlL6kVWbtx/DPyLqJemzd+bk9voKE+O+hAY9XqJEr2NwIdzMI+p/ZPaz+KP9mm5eUbvIbE3WMowbxYESPXgEgPZBspc4h1iSsVCl0Uh0WRT5ynDpKJzQstJhNufx+nTqBSfVnu9S1cv5v6M3g3Wj+5Z/sDL+lF3COqCGcvs7RTq2v3StgQb11a2XZS7m5DaGezTaRWdkZS3lD2A07+9HxOG7U30OAClU5VM5yHF+GlD43dNcGjKxq6WR+iA/+2CSCsLzHN8DwHkYMhvWfZAwyQjA7uYbuxUF8RBKG77PsDLvuegLCL8PCJmbHONKUSADEpnUonQgt9dxxvxAdn6HE9l4nUNFOwgc/7K+G5BG1YJAawZwZJ8qB1mxdVbN+RT++SUx8RXnwTzxVPhFj7w+iDjJNhx/craHf7j+5sMz46+PU6WGpI7B5R32IYc/h2E9vaCwX/KS3Ok65TEcZVp0o9RbtDcR0HR5VY5H6EAEeka0qMpQCtJVosILm5dR6PN6ibt20D0/a0KarGYiEkYIzemrFJCGi95HKKY02Obn3s7pOL2SLJq1iWFVm1N6pjhmOSAUh/GZDsVpqroj9kiTyP1fkG8/OVnmQeiV2SgkYw3AucrWgRwfox/T/SB2GtGwSVw6pJrSVzstFveXPthgLDeTInls12z0nFglaDyUjZotY7VROkvbXhY+NMcPR8x0kiJOdi8eViiV+mYmYg6UxcVxFzoq2EQdiEnCSAGZEPEdMIGBPoVCKkEZLexbhIfCzNHXoi8wpBO2NZV0c+ScioFpZQMJGwx207RXkf/8JccsHqbVib/0+TmKkfOJHhPSae6ra0c5CNW7D22trw8ObHNOV9xWHi4iVzK/DJGHsppNAqGc4x3zFD5GHaKcfiZyB69rMVju2yiU9A+HaJ/cG2hvz/ERCoUqUxpdjZWBnYOKNnjMfm98+OZekXYEH+U8ODnCL3mB4YA/kLjGqIish0mMZUDle2NJuHNrJTS76ObhdFnWO2GpI1f1DKZaLdWVfO2aXbbMyaP/NLO242TkwRdYHmLGkK+ClgPlQdDv00FWptnPiq4qHj6LbZdQjMwANrMTb4BhRb+6QVfNs+OlF2NJjbUGUyvJFS7K0yOK2vVULELGzEnJGA1b4LyeMxg4q8DeXKSSQLNWovZYUTSle9v1WDlxw0UBp6aZNrhJj/KONBCNzRlkcahhXw8uG9xoXvg/Em23NcNwxpu8MMBWI7XTZLTVWH/6xDN9INEm521aoxYknHqiaN8VqmGBEjFV5FIkL3326eWwhuyLdGwd5bJ3Xnuoob3XkkRMURHXeAVuENV8gLMehK+CRDMwC7TxGdAZBen/BMZl0sn9dmUDzPxsjqMaoR6YT77Cry7mdRNL+q0fz0WvOrFc1PI5q3cVgo0/6HQC6/dXzJGyM+H8Cw30QomC6AlmiLdUSfM13H5Umni/E/JJdzdpxZGxiY7+z43AbYWSfAyzRGoguGg/3ALla7lwGvyO7KcGZsnYbHIeO50zZfpINulwyluBrAV9EeZkq9bOPpkfls143cusV2wn1nIOVwhrKuzii6uKfHhTNkjhkCiKMEiOujFSUTfRTv9JiChTG0HZnFVmptzA0a4qu1hqbaxK4/socwXhkxgXCuK7Pnk19lM2xIEzKp9sZ3YVEWUKmvVUNgDerD5MiVB0MmRgh3fgPie7wBqfviBiwuvAHi2TcYXbertj3DlLTPr8oMS62zBcEmAfEAI9eJsZEw++CTEc0CzMZ8kbF+j44UU4jAU6iMOCmGWmgmUNAc/GUAfQ+hE4LAalQVRhL6orqPdex7q+u1+ElQmiHODfIJ1kc8K3qPK2LYUdtifGO4/tOWkvlSay7zHVcx7+FR8R+OPcYBEVwkznCWzau0HtHBHOz4lra36DjG0heJUAi6ypqOSFQwAHYc7VOdhiMA4Nwj0EnVYgxszQeoMt72crevZ/5sxQwq9vfUj2o5H1FmHQhWsh+JPZqz3r6Yxpt12djbieCdbMblbNDq7J+KfcTXSEUOdqN6fpzQAgZ5LkThApzdhS1KKjHJYjue+D3RgtKvrtUzNyIyP/FohoYQy67CqDMCMZSJqErOXVY6ciHk5qu9J6HGdNtTR+7x5LTmX78zZB9Gt766Ak1zHa8nI/66eJwO91Cswpy8cCwSsM4wwDtX1Ny8XYt1gx+n0D0+5zqhrOMY9VWczQUA4OWBqIptifsnUBZaivcRZTsR/UYuCXQK5he9TgqACElEGwJX6APOfnzLRggHPkrYDCyHxdGRreexKi6AzsH3/ADrwQbAdeHqkrnKxxlj7iN8z2jGVFRNYMs/MfI3p6ChVB1HJE8ziSYdNMcOIpp8Mzdy8sH4Yr+hPIxE1QLFFHnHhWJo2dqfeEwJ82nbUPNae5MwFrgtaGKjB9l0m8egiL/hW+xZbwAsK29nHLocshjlFV0MYjbec1tgUEdapGefcyO8YQFpT5bZWEHpdftM6ebbbYhApPplTFXD66EOYmjoUggPnu2LkVu9iCzbGxijyfYlCQ6Nb7Kdhdqnpvq9PSapY74xSOlaCbNhV1fV4vv17KZD4aVv86qJF31b2rELMN9kPpKYb8tKcA95TDqWY4BnpVgQ2a33dX3VFYTJrqLH+xFyNDJEBptb2JHVbaQoi6nsQl/x/LdIFvFSojTmIjTjR7IBCPkGvRbMWWJJjQmzTqbuhPOC1Jko8cf2gIwaloRsHNXsNBgQybhZ1mkfrJNW2TFTnzYnicf0YVrMPS4HSfstMZl7EE23w4uW0KFY8KVY5YaOmltAcOLdHEZ4U4Epe5yWEf5qbDvFTjEHKuTAWpyldvYz3zlXtB3sr0OW3EUeP24/bE96RH/qALHGXqxq28/tjPxaGoWJx+yltI2grmRLWcFg7ei7MHP6pNyQ7IGNyG0guFiWnKx16QWoINyZj7opcK6afGqfK4zlkXkN+5JekfxdsHvfpFr07OVpu5zH+qICOBabW6RQPSz3SlcFy0LUoOwoKxZdoxjYLEghIVHtG8Ku00oGkAa6aumr6X95KMbTA16Hg99NcgvczS872jF+r8TyMfPYLaBsE6v8N4jiKjHbLnfT2fbD+J8V7GefIaxBQktW7LCbsspPkMhtPkrgdxdg/xaVkT0h8bAwWyTa80SBE8gdUN9zVeSOfZjHrfdue4+nGK6hoHVlB2xA48nuQhnAQ6Pa7ZAU2h+LZ+41tUeWuFucYpciSeMTYxMjM9kuDFaR98T41SLdgsKJ+8DVjknm4l5F6QumtsJ95YDpwFO5vWD9WjR2P8GJPyko04MWORbf2Vr5GbzyusZwxa+VflilV3NGc2ZSSkX6eu1dW/dzkKKx7ZO66hYNGjPM2ovCYaR6FQgNK99WhlP7tnRgVBQqPS2AwR0QHBFoI5Dtz286QA0E5JefpDXJbF3CYVL5PlS1hd2AlUjqmLR2GntSIQhlWdTMBGbPF7mE4dFbGnlBwt+ax+73uZifu1jn6kqfowlZ/mjvS7XrUpOk86HImVx2gIn98yRYOLa2GemxHZrXu9p2Pw1W2HcoEPTuS7S55JDw/zo8ywPkNM/gBmL73l6ZRdDeL4GH9M8Rg3rA0RPy0qLtm3QinoIUSgy6cThM9+DFDBznG4//mYSQH0TU3DVm7RDv9vUMxGSPdWvmWKwLmFySfqrbvOavXV1QQxMxm67K0aKEg1pKxhvBLKevvq6/fYQdpM46sQ0usycSWIPuu/vS+BSjJbNjWXkPISdqth9BHKQ5fojtqbxTbNEc3l6rt8Sjw8lpGfE9tGNAEuVPsXEfpezIxueqn3EY4lnvUJ1PfTb+2m7sdaWEB9DKuHl2vS39OA991MuEHszmhezvh3IaoJLj2Kx+SFZng65550Mg2dnhqbb9t3I/Ifomiv6JF3h96fasYerqrz259s+3df9EfWvdP/zv1iT+/l98/1sFstmK1tfxnzfZmFTC4boS21u3xu0BjOQqOkj9uP1d3atY/7H2LCssGKa+ANuCDesSb1zt4Ns2XkeDHr5833Kl11ncoNtWvva75j2UWX7ZhWJ9bD30PwYFEKh7zee8qUB2ZEWCEbYkiwe2cDeH7NYWSN15Sx+g+SIYiDo2trE4sPnJXg/ShIjh4A4gQLBb7pO6yJ2NWiYgGDJZQSjvjuQjAeXDveXKY85vF7SMJCbu0izwgnLWbhqGpWylhbUcVYHHZPBnDiCr2Kv233xOVt4CvDFp2egXmxfs13eprh+z5A2VNgG4urKnPEyWet9bnHaJEhZDvmHL0IN/fCP/zMc3j25/JqeCU5/O5kBJg5jqJnY92XeE7igrecVzYI+XcQHf5BtR0r2UnOHAJDdPqp7eXcQpqgd3aFL+oEL5HCesNt9FwUAyD4yAvG2pI23ku5iuHl1wDi+UTI2FQk97AFpAeLDhZyQiwptvuIucsdGYrKKeKq+rhyzN/kyBSCNNjngqJ071+bs40O1A/ZWwTHhyFAo5RCZItLChAzseh8G5NuQwBETcOMhxtdnXHEwTkhtjnFHPzER0emkddH0Dmo0Q0QfbnB4bGxC7zytPa6RebC+EF9oIXZxXPTyrQYdVxuwGYvP2d8R5fhzaOwd0qmttfB0bvycLTJYcEsj0iETbkPVdCXX0TSgJe4eVXW4iuilE/z+SszWU2Lz6VhkXt9e9e5+TswNIiA9SQQqo04zavT/LhFmMmDsQdDPV/3ivYSl85P0sG0oe6siK8P7EP8rZAp0m8z4XV1m0ua/QrBRUurpFTDdIWwjLiU1pbM+VqEXMF6YKjlY+dyHJP4WVnaqtz6YfX1BLE8n+4ZCFTxFhOC5D1kKLoVpRB3bhVwYxyA6JAdc3/q632VcX0jqQ88lSc4K7h2ilxP0O6yz/feveNdSUY4yS9iExw5mHRZPzhqgCwXpNCuSa7jlo0d2WAXryYWtdlhHtXMLW2w4R6b5ktZbg9c5bH9xaYfuuVgSBnJPUfqH1uZqTLktK4I326YPfB3OExX43qLfS307HPW5K5lGR9kfAT9pnDTZQfOWYGxF1xS2/CC1TwSmBYNgSeChdqJRashU0FCxbvYyBZVADHKZ42DaMrj+GcL25bYR/If//P3oKsBBASzPytZ8FooIm5yDqjWWD9InF0f+LE+TfPGfXrSsVWbKBuwUGc90rqLiKb29eaOcysiyaWtGg2r5KWC27EyAsiUksu1WQQojnzWp9OI3wjDPUfaiMcIFHidguJ9ivUchJsQkhROnizsT5Q3+Cacr5d1iiv5ybc9Gde0DNtTbTyAAka9DXVic6VnMAyQBly7m4/5mrDly38bHWOHkc8eMTsNjmu4iad6Y3+7CI+ndPnvy1mThRWcvZo1A2dtik12MVdRINeBziTHN6Uny/wNytRPKrR3VX5wPLZ+5yyDrPnCRCmenE5avXSphmGxdC3TXMUgSDLqP2xiAbOjkMzYrJQBGipA6FSuADCSMGyhPDDTwKsWpTxZEqXQDVeJq6KKwbHdx0+/Fb1ULQbuTs9y+GDwFhaTEWTkNZNhnrrGoWSpDhtUcKrUNjEdb4B2/d0N/SXspmDsZaz8oJw1dWQOb5jVnAa42zu3e9IKI1MaONm4Z3aaILxLtEojlyKiSD2OTi8WK3rzaUA8fII2Q5auytGRRdZfC/ezuAaiN8T6Z9breHDomKPsnNH9C2xQxa8kH2oniwphwwTBe7TqX2p9RPUjxbp3tO3r/1rYzPGCWPBoDYTmExK9gdWb8t9KZ97EIJgeHhWWYuSCPolOODJZj8oEu806R0H0887yZLoUfAj2AQieJoS/MBY++GCEuaz3/8RfwBZ9BaDO7+QG1QMF/Cr9dm4H0aoRD/RhWKl3Hut3ehD9/t21r1xeOWy487TYEIWLSKRape8kLHonCYiJIdFclKGcMAnaYcdK2mhI9IXa9tZ4Ra4bVr+Y6ns7hjssndY9DYYQnGhhH+0URuJfQHV7EH2BECVoTKMDoOz7975yjzsG2tB+q4kMBTcuOIfa9hoNcdAK7SdOCV6xZMhHYsWUsf+GB8y0ALVFp5gTmnVzsgd0cTWRDxEYGlFRjOh/kFaJyd5xPODmVBViqlG0JldObfQlDtDdFY/oQ6EvzcnBga3Sab9HKGL4TXNyn3T4sVuD2r3HnHOW3xjAoQExzwz2jj3N8xR6aahE/gSbw+G3dEZi0EvoyRhd4pH1+gbxGCjGmNQffRfqmut9TEWMgIi4892u5XjpoMiH31zdoWrGyUgqM1KuyO2EvmEKz1WvXVOvNryWqeaYGziuww1Bof9dzAT87ssuMamvpG39bno19i2gEXezaAWu76Gj3nr5Dv5l8hkyW3jNKFqDpqRW8Ci/0dtCUDToVYr8pUq1noMSeGv8j97eowwCI6yaoK5GZfYqAI8A/QJX6/01K2cJ5BoO9vIB4K45NbwkMkaJRGzx7qIdS56DDsBgQoGq3GNCKL5IIlmO0DbgzkGHT2nrgijuVp3jwms67M1OfUbpz+OOyMPxASEE3buoYPk8N8InerulVHtIhEQUcAXXoqXm5bD5mAE6FOJspp3TmZBM5riURTDF5Fn2Qx9QiTKvvye4StR7Jkmrzej8EXqw9ltyV6k+CSq+Nxev9Kv0tc5Dcjcwy2kHiq87xh6xH+cicfvpQqgyZ0l36DIWjHdddb6HYq949HscEUqVDPfAtP729FezPotxArrNCsCZsQbJ/PNRIFyIDnM7cCMkCsc5PdPmffz4pgIGg4vj90B91B/zJOpOfOJua7KLL6YdEsPK5stODY5Duuv+w/Fu9mZf5qWAGCfXBi0ZMh8i24ib7l3Z2C6SqonMOkY0iieMRQ4K4+Rw2kn6wljFY1SpqOivg5zy8iQa9dEDT26U6YJMBV8wth0NAg5pCeuEcieAfxc+mFiCq8VehTPol69Yv0eTfyA8s6jiQ6nEHJIhYuGLoLYexgE4Bss3n0kQTtFeU4Eu+4iFtnkPdhrvIzg7YzDFaY06BwlwffaK62t8GuWr761k8bnhd8efI4lG/a6voA6dEZNHW3YD8RcIE3Z2WSvqyCj1IwGsIpXv8K1cDHtjG9MC5HKEKwerVkeplsKYiNmTXCt1Yc1AviQ1at0s6dRVxZdkzDRbUmB0sUibYAG2jpJwLzTDw3kt4WbLe4t3vrxgC+pxQEsNuH5tYLpa/GKWFsTXOemwfGzWaNwH40khfBRHhlNrEVlB6GY7tkSkHRua+SZrocOSDM5Uy8mOVrge/GBPwKy3u4yEC2RPb94Ciz3L8wwxyl2537Kdxbt8nQy0XFnF/8/kt57kvUO/qM3aYktw/bM3z0n7ER4njEqNi/S1vDva8P3H3mG/2AXVFTWW7BJQae2NECYoaUZvqH4/nnr9QN0GtIW/0unN7382JDHcmP1xUcYIvETfXWEm0QlU3dcsbeiSJu4wk9tGOwA4shK6yyutsoDO60YHRgyWggTMiQtduN+1s1mKAOY73cxFjaXGwGsw9OY1sUrg/KeUnGg4ioEN9MGWzSaoJbF9X5EcKzwyMBdbQomkpiIQ4s9nKrRZxxSqhHSM5Tzn5AjYw0RwqxwHYRalzXn7TYLaib1maCjKMXIwCJDpHI5OqpHl05e+4FYagBNFIidQKa4ObBKaMNfSiPpXx1vIsdiFqkfaCnaPfaPq8SvvqIVXqrXjLwwfBFR/2MlwagB5A2zYSzlN4pDB/BvDfBleRqvUApoNYRAsj9MWMF0ESW7D/5IGrQZAYFBmRScfBKNHkuVoVgRDMcY9KjEz7GcmmBE4OVzyii4ZCWlkJKh8wALKWTjB09I62FRWSTkmIoNNOgFyTsbNj6mdbxB+DtI+z0943CUiNcyCOGs3WRAVWoseHLOih4ATg60CJbNis5pSYqFPtkC+iQGR29U6rnzy1sDBE8p2zmiql9fFWbkDQqPtDnu1e+BnQaZCsOFQ1pJX/XPj8d7PMSOD8zz4iCoqKFLJJ+TYwpXcFOIlk+53Yb6RZ/GOoFYJPL+qy0DXwcZOuIeIbaKgvo+qEVy1wL/QWvb+D++dw0KjXFChOr/CbFcMfRVTniApLgYkALNDfFqC/7BNILZ1BszTQWgeCSunMPL5MxtK6vHrv1jElRcKiCeGsS2igii8qY6AbZ5UPamASQ1I1ViHxhmEOnEPpxiNEQjXItezWXg5i5t77ulxfsFVsctoat5i5KhZSieRcpZ74KDMoYxer2YfHSal9uyRqdKcRID8x6Q8Mv0o70FuAQu9tab5joGmsNfqELEpeQftw8rryAdafj0mGUDEsLbvHnqrW9+zxDI6xheX4G8JuwlNKbtfzgesFM2RmwfsSCC4stlTqnHsn40cqGpEE89vxln3R/CB34pZ+bVseGHvInm6D9ETPQzwUauXHzXRhJVF/IKL//P1k3clN+JFdKnwna6P91rrfaRafknnfl+Q1egr35nYzAeYngSH9ChpcBlXjoRe/DIt5b0uZX/7wkUd/666ZWMUD1MHGWeRSMVNzpI5DlT5YSBzf0c17JT7QgNQPYead3/jV6l514lU5oxnd/ZZ+/LA/VQOCYNyeFrnJb4oelRRv4nhKwLGthQPN5sDYjBaW1lP95AxjXzkLVtF2dpmDRCzckxq6nMzOjZDWP7W5mwYtXZGb+LJ+ZefxKbuELCFykeq5hZytrl8Jx6gopme4r3u8aFomMSkUiDpj1lRrxB3xBkPgSa/hs6D/IJ+h2wekNBrWlX36WRm1Pb7qTosxV0EaO/GqBgVqFu/ANIEUlpAYJ8oTdUoKqYu2j8ZASyiFmsqk0xCCcnqbM12JTQRpL9SvddJx/gJ5ob+rwl9vNzsRpVh1ZYOtw22UioSMwYUAkoMdAvQ8KxOaPxs3Ptffk5TWd9l6shs98OXzNsnYKXrCEPelu6uj7sdpU2lp/CR/IBBUPnm4NksP8ORP4fSOSalyHI9sE03V4PQwxq+KeD9n6/8y/hSheYM0+BpER10cOqu1JaO604/qOg0Cl3sUPAO15AVDfq0/UmdZLxE0b0m+3qYaD9v5kiWjTsGFuGMecwanb3DBVVWnmQZNolmA17GR3z1VBziHZzv4wZl6HZ6/zwAG4lPHWkMAGE+l33p6BjjAxKjFx74m7xA24JlZmLRE/UDeX33z/AUF+v2MK9ORPBV5MMapc2NP6gjP7AhlPrnBiLl05nHKv7QxEsnlSzASoqtYSLVfmajKBCSfnZ3Jj+klXxRZAlMmMLl8t+4kMkxw5EJshVUl7VcwuYYwNaTvFDdAi089BxPxxaH8r1Ji+3Dy806CRzoORgG0v49MAvDJztFRquRfmwuYAhZaX5+5ZavEYfz5UbCbtoQOs/SThf0Nc3/rFdRRKLOWSdA5j2W2fCFkMJwpKgdZozabLgnJMitHGYNLcLh9MCmNqHv5xA2Fr5w/U4ejlo5934UKbOBFfuLUNzr4XTj9MnYT92pwwjrQ4LdGZ46hisempe7lC/WeLqW3ktTXJIVvims/5JTmaesejR6CXBTnJGcc+9NIHT0h+vr39G6P5Az3UtwMpMG/FLf7UapON2ZvVe8oG4l1Q2A5csOZ3MIIFKGbX5y52MZd33lLW4rgGB8QtuXlj8/xlqwg6nSNa7krrYZPhUuntQZiqos6tSkZKxbtauO2a+vPRuAWb3WzKu8HEgl5LKsy5i2wmvs2Zletv3sqoaZAu0pJZTLB+W1fviTnuRrQ9ULzT9lRugoO2U46oxA1RC22sUaAu7HN7OwwYlV4cMWPCLKEqHKjBpALX946mzzenj3A2K+UZrPkOuNY70ozV40k/Udabk5oWI01D/AF4pbFqv2v9OrmrtOqx0ybGu6FdAjA0ABQqn2jvsKu7Wqtz7LbR/Eq05ldmZUbfxFTBaRBErp7dHKy6JISJBex++m6u3pAMJwyLs9tT8f0s7h91JaekMsmx/PLCJ+yrHot4M13j6mPxOPon6odoc8IHreffZo+nQ9XWXpy9u5zJUeylJXleTxCPT9p3Gp9PKLFSwKys1UnNtwOVrF5WLZUlO7sU2/VCUWxgTt4tHN5uUqcJgwmglA7qSfZ1d30t89AFOBMpZlaigxkAR7Mwe5IbITIc/SJAi9OXwnFUNRhQkr8RU1KTKd0TPztp5/dw4uHR1VHbA7Gw1bynwXJ6hi/okf6SdTykdPOyYmd5hj+1V7v6Qe7AKXoL7/NqroCADvqGxm+qB7STzOtDzRV2PTdRCTnC5rAbhGZu1ZGDvr55UsJXr6Z0NTSPK7e3WhaDOyvdLx0W4mjLwDlZ4Od0/AAgydEhqy163HZbtPYOo4PxsZKG10AjITQasF/IexfKxxmrCz/aqoty+6yaw8OAB2TnkZZOQmnv3oR5lDviO2Z+aDEsjiwjr+mxr+7sW6a12/9KOPs24Md4l5XEEO9xtT4hgULLbngsbU3fqyEyfareD5+rDL/+V1kV2yuB/PEBoGY+AOzTjm541U0bVs5EfILtFku4yZ2/XS5veXaqb+Oy5HzhdljFm5QUd2yoCxj6u85OEEQK2b+oSS6fJKstmkEv91W4isocfZIFgXhmQdtCcUzGV8HGvabM0VwVEThC2Y7k0cv8TIsI5/Zbj/t1xCjDpTWE/WsXmJHpw3PrurkQ3LXujTD7fiNvCjcWAwz3OeFcaoCjDyX5EImzXFLtKUHyukzwnz6spTz4V253X9oKb3jBHNjBXfg6A/zasb8O8Euy8GG+YIU1xoC9eKWJXPJKa4AYqBxtu8Xr4u2dzvy2xrEvH8hWP5ieQ/7BOUd2mUO81aFBlcxoS2n3cKA1d8xOhGL+/F9gHITE+pXF3XiuZwjXytEx06GmkqH09VnjH/9px8XVe5pT5cd3j62eIk8mov8EpPaGIdCkcLXAS6tg3aLFLPEdjKVzC0h9dzODn1JNdcLVLBzHH8nvMTfMwEpV6sGluJYvABhxH0T/xwPw40HANQa+mcAeKbX4WLWxVEhd8W63kxMsm0AgwD9zFs2OsZqaln1V/18nD0W9CaVZ7nE6blw7N16ZSqvUEUvs2dmhducprvPCmg8H6yqFBnpFXFG3n3g81wWtrpj6vqx56s+VENthhUKTcbpA/IqATcJ1tM+GVCxAIyZkqTp2zWBOe5qd8baq1RW2HBmKGI4qS2RN7yWVC1BAG+X02ycfhIIH31VVAxjyY5piNJBIMnPmWF1dtcz1AqIwjgZE0bZCdrqUfgpOB/mj3pgfikrbJbCAVDLxr8YZgB/O5bnP/fMTjyO9znakvhJIZowg8ZZsP3cek6YZdH5IL3gYblDwjvPAgTOJSfVoeaGpdSO6aDwpHMdOyt6dD36bONTdJco2zaSCMdYMjMPtnLsYy/GQKLvXx4jCPTrxlEjXYKbKewf90qHz7SxtTSy1Bpb6R74VMfMy9wTvzWdH4EvpgN/KPelMnv0JKSu5+TjNZoLigShn4E6H2ierDCHUI0rOsFrEq0imZEDRTyvCHe0Lp8fO4zU2dg0MOLuzHYhfGadffohAfY7Y2u4ZjDUhcnLQoMEqW0qhMrsZr4Vp340O4+klLYxP0TZNFs8dHjli0lpwyMjTlDKb8EXxVU7rwonn6ibEmzlE6U4OUvcT0nl/33M204WY4Gc4JZ5RgmrT+82ftTGbhuBkuEbkNxMtRh2PnQBYEfXvL9+phSNvpoeCP13rIW+JZZJ6R1CFK0jHGfla4YhNGd6lP19UU2zPbI8r8k3HDYtq/C92GTwR0sCrGXGeJ9SexhwxHZiZt2FzKaS+C+ZPVD4FpHx099dKaDr35szXATIQiV5O7vJcj0VVIatzl2VTJhNpUTaSKk/ONpJeQxbGHXBdp9Jos+JZ55eQejTtY6HD4R+2+pYI+c5ByNfBDyn1C490HfpRK8mFo2vdvSEn53jItsu/8JT3yfzFkgeUMP4xWBS+EBa+bYpFPJc34AkXh3BGLEbCp15TTPkemGSfSbev1ggmaDbec52EcGqzT/HTnoasdfic24uHx76YY7YovwuYOGqVOUozYoySXQF3hbC3PcLAy0Y1k9RupiNCboXdlsDMGtu7A7Mgregl5hFZGtnK1ibauSG46hjlZpabA5XIj7TTJPTkyYvCcIpn2PFE3xYMDcan4qNm/fUCXDomWOG4ytdd7aUwjp1VM4ZSsRs3jK/QhF/F9dDYn42jSH9eguHq4IxnHX1+5s4xV4Qi6jm2p/Vphl7O5P5SZmuhJqbFD2UPacSiCkEUCsdrXSTlHPH46PQMO9lzfy0MhdpF9lPVVfuAlKEIno708xinPCRXpBAdKwTU/7Cm6XQtAPP3unATuYS5fuPN4bWEadnnj2zuadJ0pV1ysxWyPFC0Sl3a1a4vQeDHOow+OzN8+7uveMRjGmeBi1yy6pIX3/LB7am//QyYDpa90LPYy86NKG/8O/5ZWkYZ0cIJnEVwMmNhfeQX/G2FI9DW82x7SpQqZ7+AL78KDBHaNf0sIEEGRFFdm3g49UNB0bMBUUJnSppf7qYvciJn3EfRhnso36OUYMeWbHQKcRD7d77mebL1MgWeevkzvPunC0rIVHsOxdLenWSZcBWBosiKabQelZY+3RYpT6qyRVTtQxfT/pHhl2Tt2/Jy/eJX9o06IXDheLlr6Yqwp5w4QCOaX7FORmDa8KnokryAMeTHiXef33NK+bD28/DoF2hRxfEuS1TP7jNMoNPAzZ3E8uW71MMHF3U3YnXqs8oE3iR+J/NGRr004zvuNsScglU5FVjcEPAA3xcWgy3mXyZOEo8j5f6+PIJXCQEQ79Hy/Siq6Kr7rpNkmXow15+hSYum7fNr26JfZMZ3vKB7H3Tx/FYvImh9slHbgQQTxmbwzRdtcQiwIm9ULnDstCXPxDpv3sSLqDRWaJqTckrwRwCtNAlNLUdz/REpxxid3zD4MLz9XIKMOkCxSny165NVSo+zddRbmduOqq5Ma+VwH3jbzm664zuDXMQ/ue4W8Ziy6rz67LYF1XWO56Y3y2Z0qB2CUdu2KN4Niw5TeIDIPiyofeHTpd6S1hf4hNYiCxzaSrgVmlKEy/xtzu3oqmkuihhw1c3RsgZnxRG6G454dg0uP1GEclPGK0drpwcI7Yr6xpid8iKZuMhKvLFoS7HUeX20rUGC6MSf3qSnPfUXAO+NTb675yp846vsZB8SFEUaP+TJUzqNhtCzdd4FskpmOJmGhoPnJkkB0/wY00wf6qdaRaXhKdAcM2QiicVy3SdmBUZA1SWSzJM3Qe7ZBJqlhj8qVlVYEkZJ/zuW/n6jFvJySqU6d3HbZ5RUbjXgkaFmRAWsjhiiOgSfafkSce2FSMJ2jqIKBcVBxbIqaqMe9UWep/tkihUnk1b3wVgoEZDoKoW8OOtDyDdWCqjvRg1UpTbI4HkpRcaQEaV8gcLIiwu3vHvHW8J7leXdMmt3BeEFoiqAmd+XycTtBlW7FjvFBLZ6yJ2+RHIZV96lQM9Um+7nL8bLGrX0ppnpeUPe5vvtbTXVnQFytxm8tRqYERC9+9QzoKNr+ed+yuKx/HEUwqPx/nvx3BO9d6KDz8J1t1KtEVjG9flj08PoQdiRRxBj9yX//vlHOnDm6SmbF+EzyfHVth8r0H59EcxPSldYTBq3ukmPhdFhdruj3pr+Z5NBTMDJpNl4L7JtjgvaPu9IeR0BP8xv9PPKOYGWXqT2K9LqQRemsS5mB12Ysa6LzMCZyw/dvIsj+bxT6kECfL+/M+mCXToeU/pl82wSpIInduO4tzf26LNFHPk44tE/pEUGY36Xkwzxetnc4tUyDZZKgxzQ/HUc6LDKAwktqQ/6WEsFI15Mx0Vo3nHVC3aec//+AZfSmb/yxD/R7zudzmJyxgp+Jlld9nfqwaOIDpH5zau/v/v3mmdPzUcf4jCo4Scdnzmbu7X2qZohxF1i1y951hFD7rHfBpB+G1ywwV1tg/dumwEcfPxkQtplG0tCGyhEiXpbtT1mcV9AkiSEHQnRb0cE4QK9JXkt297MWHKBtjuMcsT7TOTI1c7TnVWOHyIdrzGJjtU9QtGGGC0ZJtu5GmUU/9LoG/ZgQXIGAZsqzqLfxaYdD2fWtuI874BhzeMhW0i0jo1MW+1pcjLUgb1BPSRZsz3rZB+QIJZetq9A+yfuMOt6SIVv/cllPiWIG39lJl9FvSgxIMxMP/ccAXm3hBTEidsT8M40DA1w7+rl80GZDFoAmUEvGa5xM0rjlx4bDnoF/H95LF4ngpR9RLov4zvfmE6eNv35CEx6thtVOlCXXJT5Bjoh29Wdfg9/2D5QCDdL04+//oY27VrHGh5jJ95Scc9HrqFVk72OkN860e68rzfrUzFZ9vWrySpre2PQ/l6TS4j+dsoAQF+QnwbRjONz4OHTzVMXzfY/OcAcHkId5tuvocHLTNeTcucANpGj5Plf7SZqV3JG6O3gu8diPOp/9eAeflghyQEM+W/YJsK90Gk+RumnPcpEgD2ofxXvEc3a0uL0GM8UaAvlS5fYdaKG4xDZIWJ8Ew9dFI+88Lb5rwNw9O3RGXXw53b6Nlw/0iHPp1+kj1Kp0agDZAtHA/Bp5NAbDXwZDN8G9E8NBgP61NbnErlERrgagP9GDb8Ga7/o2x4mA5E/omsr+L+9JhcbIEZBOOAsCGwIvqI3xrQ2shYAin3G2gKjBMIfWMtYDQgFfQxEtdEhACsIYQgdyIHA8A3OCVPLWIeeXURwFyPaHdwJHKAfKAYOXIyAUXHRrTFSwccdPAc1t1jREyCy7gFnlL54yXNBAhrj22CxAivGFC0R4gBlIc0Jawv6sUIYY/6wNT6MvR5FewDYAAYqSnJDT8qJ3H6gUrbknOAMwGpyIOAWcH40ChL1NWsPAMm4E+HiAIDQgPWo8AHSBYCjkkYe2/BAbYk9xBmE3JFva6ZgaQmxVP+G3eOpFiDPYSCeWtTV6INwg0aPaEPC08DVhao2g0cG7SAYWlxcWCIJPIrQtsSwxzGMSi9bRI6wW4PhiB/KrFxyNMrwoMSw4lGjAg8ghlv8y8W08ek/8EjxKMSO8S8fUx3pDRpt0C0IO8WNMl/UttDoFQ8tYdfixiu9Im3R6B1dT+wGbqB88+kFzkc8nARvuWDhibe6YNMQ3rqCTU289QUbJbztCgLL+7fiq1d+nzNKX5++qF3B09NeKcXbx4RNTng7T9gI8fY5YXDy67ugUJbdm+IrVHbXigIqbSn4ApX2u2A24/ZN8S+wtNeKe6+8LwX3Tnn/XfDFK+/fFF+c8v5a8UVZPu4FJerHRrHD+8cERa3KcOUmGVdWLAucBvnEMsOvPR11KTh9lxKbHidlt24Yp8QOqxkOt5ypHGJ3ucIPp9BXM34P/OeqL/xu5PN1bxqIQnm4tPCSLmatITTGGiSBXiMi0MCFMzG0A7aqGqQlrBW0AxbXCBhaSDBIS5h2zkT8P22AVoe1hoGRVQRE7dAtCEgUjycYnJwX7Tbi4NrjCENWtt7BkAk3UWSVAw1hCYNF/mPW0VSfuYRhqwEJEHgeChhJ28sLkhPoqGpAPdxxoyUM7YDFDIdUi7lET7gpaZGOfK371wwLtJBghKXr4bv5BblcfK96wkiHGfJ6o9cIrLEuAYcKZ2uBBqY9G6zCE8ISthdvjBokQTtg64w8qhqkJcwszPDUGGtAgV0jooWPogZJy/JsZicMLihg6IjLweEmENGkRBCmhTYoEPA0CvxI1uHgxksYLHwDAbWks6kEkhMR0aRoBK9EagywBOuwgacwtA4tZDQiqmmgH/6K58HJTqB7dgM16DUCBg1Id5cX5DKkFMevEquqluroJiJIZXf+CbtYHjrEEkgoC2c7WtGCgvWgWmKBtIMpmjo4RddbelOTs4jubKLAQOwf06ypHSSVvoC38gsJ6JzBMARyvmvLnSGDJCDhSa4RbmCkrQOdMyS/BBr6jS/QAazkDqjFhPdVxAjmSmm8wgMxKUhHRrRzBOlWn6ntVsg6AQ5uWNDeKsr2z1ZpGzoUCd7WzGpGq3y3CneZYEd/4lNJEZJC6mCjg1wBrQqGYfD1OSmonwELZ6lmqAt2gyzsK5o17WcT1yLQj/gLz6dyOMKkyFrcs7Mu+Uz/ce/lbwvHcf/Z+w3DGoH49wwmJ4PhEiXNhADtfB6JUa1nI6LtTOurdjwYFNpP/le8e8OAHLCf98vkMXmO82dmsA37kQdpJlGOM3TijfmChgiJljKB+vbIu5fITUEv79mAawRWAtLMJxtiBEQqG60aClDPNF8Z0Xtw4EWPvOgmKRcb6r/bei1YyROwgZlMygIErns2BqJhzRpogJ0j7TXcZVqGHZygDreYYJBqNgMp2Q/7SCZpSLpYY+/WyIlSvZNJeEY75DDtdpVB8D4hDL3RIEXx/pMiY0n2oXFIkHaGjG/LjKzcC2DIFL2erl2j23jU/WFWNhMCJ1h3XJX3Og5n78+mLIoaOJJ+uTBv9d9C9hKrdsjqLNWckVGxAAB16+MWS/6gk6D6LKgJT+8XQ01J0OxeRUSgJwwFWsCgs7ATYkOUeldI81rfmg4JohoF4hJkULW8HWYbtaQzalo3mshmJ1dZRBkOxGCBrJEdMjUkZ4ESWgMdAjHeMTiQh4iBbKN7N++pmh8ufB9nSJ4J8NKZQfxZ4NFMPInLcUZSGDRoKNVSSwzNw2ACxAbZUnjjeoK5RjrWK4Sdmcxwihpo1EdSzioENMEVK0aDQTukVQuDmzCOgd8w1dtPuTAIauJyqMDf3piuAbn1CBG+RGDdVhnADx43zTpNZC1REW22lWmD67UeJovRU6xvJKJKcRxl357/xCwa6nM5I270SK6GZc2f8qVNrOxhGDyguMrNHjiNGnO+E3QPrkVlKSlLxxOECjBl6M1osgcQ+rQpA4+scgasHU+I3srQX9ybjQYkUHXUcJXAuzuiMPAyziBBHbTbCFcEhuuna3Qxg0G03R9V222U/Wyk+jJX7T7NYHg3QwJqJCVlmk2g9NionJgIK3QqEl399E544pkRdoG304yO014i/MNpoZckO41CMDZn3BCY2YTszShuA7PBCWh7bjOA8ZS4s4vawRUGdyIkQckEhiglCqZAFoaPJagVak5JDTZidOQAnnEdg+RVE1a83wWzUpADiXzpFf8ApSawGn0ObRBjmZBQCVznIEHHzLij6koLBkxERMyUEorMlch+tCwbnwmCcrvL2p+JAdfbtZd0EztDb9Y+kSG89PvSNfIm0X7TOOrcWpmb7q/MCevp4yghwzihgcQlKWoY7ESBI4O6gSxhgwV7q9wIAMnNcPNXB7p+RoGiqeiOpJQLYbep7JNhcJnnRgOz1peYpIGslZl54KBRO3gQbSoHA/NII9iXtB0USwKf0PJD6vCDOSrmO5QmNhihIwoqgAsxiRNGEn1QQCaMqhB6B8af+XbRaCD93txnVg3leiRu7j5NO8f5f+VIWwE7dA3GS7/fV87vDaTSAGWvb4aJ375eZxYaO3AwiNrrbDCQ3OPdbDuo7o8atddSu/EBP4gM80bDI+EavKo87o1y78nA6XAx+O+eiIDobnvW/w2MJt/efkqzPvyQLqk7YIU5WviVEIZh8nBkN7Rz+S3k8rhKCDXewRjowgICEVfHZiFgt00Cm4A18QQBl7hLw/hhCVlfx1I0o1xk/8uA4GWZwOCoqPNAKyB+CTB0xP8gItgFEvzPI3DYWcgLz8jQ4QKrXsMH8d7TUxrQ1kMgDJmAXgOStJ1ikEpVxdLbv4HjSYMAQd4RQUJjWs58zft7+EoCG0A91dNsYaKjc6mSDNdH7scYFrVhR31hlYPsZDCcBe7IsQC8UGUglQC35CI+Ah0amEg4TW325fcK40KJdqTVRZqdZTLsF5Pg/tZapyDrS0j/FUw4wuDEQzfSktbEJG/fzGfJ36aI1olbAmzZdINoS2hqa6zkIMm91oTwU6i7boBJW5kPza4EnYn4azNraDtaVmTro9wR4pNgne7noyoV7Bh3oSZ/6TKljokq1fijGd93NR9cNJ1pag7wZ6FHWEc2dyxu3/fy4feYKuulj9swwhi0DdBXSC2Jttua53EYm/P5+ydfQsHYqb5PK96bn9PFD4UTNBL502xHEHDbbWy3UQRTF/TE+3Qh0ayLO8sPldHABt66kaArrFG8orr1RWOCJPgJ/QJIlHBH6hjDgdtCySIsQBcqJNNMc8O61O8cxYPBwul1eTTzd1ETMDT5GTnPyqYoNeJmOhwz1fGgahjyjfI7ibcNxM6ug26un4dZezOhn+w2JxbvTvpl6qv5XSXo4R/+x9qQjF2VoQsKGujXZ1bbJmLw9c/LnxOr3BoswYRy2zG225j18H8XnK18kbuKPGpMT59KPYaJIfGySIdir2DMfLMNdoVVou/6nmijmiTk7fZjwQ07nZlUp2oAw2rAFnf69pw4SQqZxLUIMEG9ccAw7C4a/CFhaASgDE+VhWcAr9WaMDaqAErRJXgfq9LoYfubvP74CdPi5FC/Pr///wCfexOUAwX34hGBuBNHLJnkbLldiwmQM0lZFbmMTxXZLJLMLC4YnwffvTf+VCBH1a+2gCL8djjoNbI4pCqtU3TnyKZbGKTnJRGItNh/FYOb8hoQrImSQGpZqUKsET7huG/4uI2l0offj9HqfmFmq++9qQ7IigyKmJGXmGyfOgQcVZdRp3tzjCAnSgPKVpSM4AIbz1pdY0cfEdwGrdpBYMhk4hPpgV/M+GcAyWHgbhGyrSYpVvVUFN9vT03abVEEpgZwgMRqUX2hdezGOBS8doGkK2ohEOSHIKHSNxe8uZIeIoKgUu1+uu4/y2Y4uNm8uz3MDRZcLCbg0KOnzXD8cj89uWtET/fpSN2Klo5EhXgCriAvqnrF5aaw7CfLejBCb/Zk1CdzbgVNW/jNQ0EW1pgJaBStavfZa0AmYHFoVCLBISs6GebwUoRixhdiAds81w1rekr1S2bIa291mG0hmJS4tOY7QX2h/dPrikDVeKg6tv3XT7PBhFFv3YZtVxYMwa5h50q/VzVOe4ZW/LZmuu1sGrUGn04HX6KENijvvxw+TlYOl+vQRnhTXPbQ9qN8HGXiXCMIisCLETJ90wD8ve5qRV9OgRaEvSEGitjh6slhiETswUg8C6A/iVjbYm7W0MkJxwyK4lc7WzNZJiuMZXWFN9duYP2E/TGJfkEdmvmWBTUnLJeDRniXaoNZTBSPDpkQew0QwmHs7Gx4yrCaEwYoeN5qRL+U7Je47t7RS6LIwDBWYBfH8wFGVUC3nI9rTEELpAwyzNXT8VyMpU16iu7Q2xgZIDr3Dd4MhQkieDVZZ4Vp4vwCpa2OOYPBtCaCsVnjEW8myRg3AiIvpkUY8BQLTgBz/1Q67O15qEoc8A/bY0sotupPnQFy+6kzAC/ApLBBkglTQCYlAQwm3lBWQ+dNBeTlflRisdER2Inj+ICa+09DRyJ1hEMExPuTaEQgDdHCMxBoSnZgacAoWXva3uEqvWGsPabUIEg4MC7R09eLBTc9Cc/xtDrX2EkwZAewyQfRwM2JS5vlqrZnx6B+poPlFH039FJmX/9QPBVPzxcbYAG8YbsdZ1T9NZStyYGVLkb3N92lWDZ64z30DoYeO1z+UPljzD1pHxSYj+NBVSGJ/lILuksNB0Q1Ds5rUI60QzjjQidZwLeI0WATb8aZegZRzkZSEqDSUBhHl08zyf/MDeUIzMWNDCph7N52wqKJDkwM5QpxEPFwl15zZeXJ5iZGFc8XsH8/at4nk9uiQ+MxkAdy3BwPQpuVBAyokUukli0NE9DqKYlWi8LLPpBSb8t29kdfztsKQhCPPm0gieqd5b2Lvr7OSnvxpN12IshESXQ2S+yBBlAnjKkJDAir3UxvXMUYUe9eq0yr9FqZTpSq2DWFLWCwvk4yuoxnQKsCM6/D1Q0NHBk7zkbTGDCRooCKYS8YpmxG20eGvwccJ6Z2gVqeINalcc+2me5CdklX+GbFBKxiA9dHViFqoHpuXMcsVokRRiFhu8S7ZJJFRD2zjXUK37QjVh3y7V1G2e8iis3hmHzFxBjCE8Ra4pCGecFAgjP0XZe5Jmnps331GCmKBKRyO4YGGGJzE8NcC4GKfdaRFan7fM6NWSeQD2L6VRtKU62selWXkx58l4ziA99F4sbtmimafawlBqXUcgQiRFnqtv5Sdyf6dVhCbNpxGxJAFBJLBQn7tAQRzGNBuPaJsq4gWg24dv8Ms0bA2hOU6yNSI1l487xDQwZZaMGLrI4R+yvR8Fxk8BWEL2EsQB5mkBF27p/jyGH9UV37NNAERduyTh97Y5ujMc1pnLy4FuS8NWhYSAxJtMV4f5cYdm8Iwn1+F0MNNpUhYDyASFDWfvJlsjTchPrM3K8MA7LIGV7MBDU5bNcSbRCY83SKyom5Z2XCXMPqZVH+ZYizd1qLSWUDJtMPVSMBSxYJNlX3p6Q+BUAaCMBoT2NVyTcGZwLKclR8vmT/KGy3Ub0FthpAz0TJOLj1lS9CQ7M9YoSntL6PS09LyB89WteInOKdnL07RpM4neFoZXlLmo3VmY1Fpuifwd3cY7iSSeOx9ril5sUsnQtKSOTIXQEv5hMg5aHSkFDQp6EOhbWC+KhqEmc6oI1oeXlo/WpFxP8QZ0C/AnqfTCGrAPfI7+d/wTKKvWYCQzqDpHAAtwW5NSioqaILTih9KtsSf+9LaM2xzCsYWn3sIefdIcmzeOE7thUYFocCp0CjMpSQi8eHKBwUriGjBiepvl+4E6g9LT+TSBkRUbLke8NsdWIUm2pgCqBs/AZGAihmDhgAmCukw02YBggqqtLAJOypIe7Mo/c7CtHwxDvS/2LBT3Ev0VEVw69YpoCh/vO3O7aDyF4HjbIpGwHJ2es7wm4DvThSZEpgykyobjAQmAWvSCYSb03URPEQgzCtOhPVVeZi/Ivd749Y1Pvz1Te8RerZ0PP7GcgClrxk3+Ad5zSJJE5S7a6nmmmO15Hqv4yAS+3YJNDdvnsvPRHfMX5zts6qRFMHdBiuquACA0qOF7/7mCV1J0JtlukkcoJJ3h/zr69TFX/jbx3d0hPFo/YSCkfcEOGOnv7NMpKGwCiOqGUEhczbs1YspZ5tcqCOocRIcZqfGpJkw4M9QE2zMP54PiTHxSuNvcPD447OyrydPgNL/M+Ji2tXHLzPJ56035enOQL5ehQIe/QzyvQMMjAi6JhV0ajmeKFHmB3yxcFIima0UkBjKwCBtAXRcpXFf7BS+aV/TrzJfDc2QsnpEqe/5fve7ehubYHSNi5pM3bmcKsqXEg9vZeONx2pPcGIxDCVo+1DNM0SgNgiQZd261d1czIi4yt5/Re81X/Ys8bh956jQJZZRPp/p+Wvw694ot+15tNIqV+BEpXja6dYV5cw4LpvtLxIHbUcFo0o3ND6a+PksMYYLJxr1NJRx6uG5h+MeL/7E6K+7UYpUPtncDylzPLQ4aiyYQlbzyp8hdTEgXA9jdVp5ZgJgOGoZ2XhzHobfF0OT85nOnBwyGEu2wZpo3GywipmilNATCVtT7EcbJoxkouKMBeZmApfWqta4eT3C6ZxWD+1KePmdbWVDxwg1/6piVX25QmEOKmaQ0QAj0uN2QwOF7esVGxjiSFCrHVesMb4hdbZPwk1uNYu/UDoGOAo9FmAxv5B/qyr3yBQHmIU0SyrufQJRITlNFb4P00NbCGQEOktkzTUoHDFhFiK+GwUX89ZN+VlEwtHoi1sz4QPFDKCBi7AxYM4bZqGPPAEiOwfuwN4d4bj8U3Sa/cOn59BMeI08FyVZywHhifskDmIpzWG4lJmE+ZCVsIGMTI3ZEIaGZzp8+H8F4CLp7FL2mt5uoMvMoH+A10IwCrrgH8+oGexyarIFPOtvtcPXFCQbBWM3BvKeoPPys2x9TAA9IzMmM5rrsZNwWcycJ+kun0P2s/3icXKu4nWIu9fXXGkzO9Vw2iXhEcH9smd0PTpWj0EbtsOpYGR9HqGex8mAT1OVdYZDEGhJCjACadlVDVhvmC7k50Z4WrVoXBoWdQAEQuyrjrTFg9X5Fb2D7R5ginPSeZ1cEDxIUCAXUhqmZOiAdPQk2UR0qnQcNOkwSVKnA03mjvX5HPPxzliimE3VvM3Y40tRCuTHVA5vsWeTII+rExcqZKWbgZRZ8k/Yzgwi9R8aP16OBhGtzCp1yZq75nVstiYBu6sTgqvPW40b9SdII7ql/PYXUGb9Kbx6r69EcRg6M3h95iWae+ID7gS8QgPYNaklaBPQ6tj6Df41jrcYq0kmiHNAzLwilGguKyVLt642MI4IeINUpsYy+AgZsOw9sARs2pZtXcFIPfpyfb7DTBhkFHMXFVleLCVaD1afGLPCmVGcxdT/xmH4Naaa4SlyYx9/IQ5bnCJ5rO6xQRHfCOPeVueIHUqXTB3MRbewoBWcojz2U+tWE47Vxyd1NVTbxChjLJ4s+B91WOezi1NZ3Ye+vn+QFubDZ1vUaZM98kKVmgu3/vBMpDOpfUDs7y7lsG20DMU0KDGQ9onGK9At6HuBDdfaO14Zo39CV3+teaAILLGs+f8d4PD4mI2VD5qenIttKC+1QKdhyyzDbNG7c04o5Y4i18BUlXC+IZmyJHtrjbsyCG6dOh8jQalrvITDvymmEsswVwCb6cj8E8P37LRWmmvBVrBt3Z2lwm+21Isn8FdtqlO+hbOMS+v5YIkeTJHaO4Yf3Lb+jCjaxRb5ZxKqQ4E4PYjqeyka2XVQdCe0DYcBBqYOQnisTJj60M1jUKq2mxMAMUg01PUqdnpc0su6rips7XwrcG6yGrIqBjO0qoDWIJ4Kj3LyVb8yWj776nNnJRCWhKLYq4yLmHLaKwfYb9azBdiI9FskWY/4VYHvOydxuw3AP/5mLKFfdILNLfcmqJn+vOHlZ2V9341tDXpiZ/+sINuNJIQcDW3WSJN1rCKTaj/SNNboZXfXYGxGL/YRwlchilLgQ4yEw+KqyEBmMMUOmvvSj6kYN6VQUCLb+0+JlXOEQGZR2LuGkOkU0Hfw/qG4FKrV73o5mzj2MPmKr/Vw7boz5poVGZ5fIXPd9PsjvfOFJRUQ9m2Y/pN90X8Fasmac4OUv8ZX6Tq9eJzDw6+fZn1geJIKUeiMRTrLiKLAeM3HupUo5Va95fLlF5R6QjA1GG8Mkn28ZHJarYcpm6FpVqM3kbnk2T+nLLFWfmHIuMna9QhEmOwYpRyO6umppgxEP7HPuvb3OnVrZCJq9QMP+calDeY66LBeKY+8JkMCBZP/OCDAK/2FuS2Pg8bUifOKQ62dal4bNShb1jFtGBkdqKnszOIg+2v+2puqqWELmaSP6qFbZRwPRhImNzSWIpd97I0VH636SvIekduZoSGst1X+rk5/1j0GbPGWKj/qACtPZH9+YBseV7c/JAtRHjKYEVDN8AVkzQdOGo5l2h5XDGgGfMNeKvOtczWxtMAeDdgmTH7MRsu9ktG5k857aY/3MUbgW8oUYalKQTk/d+UmU1dOVnnC/KEEF5exoRuwLveyumW5t6SbYUwWJgASGHfn8lvrEOCPjnsv1n9aseN2zCzwlg89S69DTObE5fwdQOO/dpsRLb1y/rE9WvIKzh4LFrgaoHaTA91/kx8vGFS1Or5Fi+vp1ViH1Y8v7mJv96SuXT9/sCkE7Cl+fyzRRKur0M6XPV6rbK6TDmEVLpNjiW8/CTf96oVwqBYafq2EzSZWlUVtkB51lZGy7atXfYuRSCm8ZDUI4u3LlSGn4zugKokHzOtpybTqLxalrFOsKxc79MIZ63eSiC8LMqnezx0auEEMOwEk10RxF8pb+Dj5QPKP4rvj8QDQm7MicB+BQyITKq1g5ymZyzB23wswVkMgIlgLwiTXCvqEeBHoJEDZWhGehyS23+jBQgJfBJtnZc7FRaKbYLcLSQGz+bTQdFjlhpqZRViP433tAG2FqCZ9Cobdu3WRWorQ/dxkLsg2URKEE67pJQ9LTGZ/V+v78iKZL8IXKEitt3SJe0Syl0kUAZJstjJypLUrnO5EGg7g+YnE2R6Ug7tMAPT6LYXL6IzRfwS0mxsgJdf6B6hjNXrsQWuGxcThT4vb+wC+zI0WLbRRiIr/9w0Y6TYn6IcuuY8bOP51ysTsNndvINicxJ7x1Zz55hRb7dET2+5qb3uC1BMDgH7aJG8AxWj05qn+bzSkTceaPSiF3KS6f4EwWplGJ3dEQJf9KmhxsHd2rS8pg0jHFF4jJwS2Bvtn0hCPG67G4euwPxTFLmYw8xbWURoq0D9MmKmQcUX8apc3SOxnSSTTVe7i8axthHCVKH5dpt4FBC4DldJGMJr06uRuxC/RchVKG1k8sdCtV1n2CzqGfwXOlxWCqOOAIkD6IwpB2DNXX4DgqlitddGXNuw6X8exy1/i5ni+oDHYKy0hf6D4T5teIInxftDfogUcRvls9oYC9X1N1QKblc1ZJLynCpz1WKejKSIWWUIzjdFvo/x9lXRJVyABpX0u1JkVfCucfbWGAozJVUMs1+tFx+veztrPUGb2HSU63kakB5Lfjj6yCoqQSMMvmIlMYx3YMrUlzFi03s1197WIdkCfR26pAsj25oFWIgks+mEDU3v3Sh6No/sLISZiWcEJSbezIQECSG5Qf2nr/9T2b+UmPCQd0veEUOqG61LJM/Q363cP5VJpt7Ju4iNjOmHT90aIDRi958HUTum1QxtHgIFr3SXDG/wXSeNpO7UIN7/mR6DjnWrNN8hNkIppWzz5ybKo1aqRVpybOdP3Er7/mgq0JYVJqDke8buJjE0dQKXNFtLlyvW/d78xm8siS1rz02IEDpVigjJOuqPynwmR9fNinY8jWhv0jPhJaa+j5/tB76j9d4R2lCB6dzI/LTO2A2nJuQHqNHiAvKDzpIaVd/fpUzEUDMizgul3L92VHwH5PdCizFbDrG6hlY+uwa7gU01dGwNuq6tCFbMTa/LQA1HEDMoTKg1TiNB3eTY9JQPQpLXv1JmIrCxNMyChnJRfno2f4+471hNj5ykgaaIT7uxycbfs6/iIOPN+LOjQofa/k8OSFIW8cZ9moBkYT1pauKCJViHj8/K/DLFTbl8SQjX8neFDuIA2m7SUm7C4bPyBbqrTzEcEoC4uD6K93iGEE2X1H7Fowb//N+Yo+Bj9nNpyaSGRchRiquyJ8c70x7l6copkogXZzSSyEVba3HGxS9yFWaBORFGym4aTaKNqWXzXzcSwFH1tlo2RRL7qpIqFLXkq2KZ+bLV8LI4iWvSqcMYYTwEtZBq4aiVqE/6AgLd1LYHF4WnYYJV953LCr3lMb6tL34tSn04INv4nu2YyGUU9d3xHPuL7YtqUrjqcS8Tx9nJQ+LIf9jU85BwzOThJmaDicc4Vfm3a4fNJT+FOHUMu4nRPW0qS7YJVMgScWhnXGwvpZ+yKjdvu993+qWORNCr8TEtyeW/mZQv6gw+UHbJMR1/iShI8FXDcknatQ035Yqk08kKy+iw2tv981XqfyHGpNe8tOTErlPWU2VO6DjlQlnEqrU/g9ePIrEF6SwBAdSiKAHeyyqWcVTUJhDLlLpJmc1yOiE6tXguOhs0x9vG5L6iw9zKIEUxjpq79BsEvQXuYO7Li1BdFd1qA+E9iALWy67qMEGSXeLFX2TDtGPtJAKzy+VHSEreD3viy54mhqUqbyTVeH50ozf93ypmjMJRVSoNMdSPgqVI2JERevTFcQwjHfHxVyX9sPqjf37AAVXLhEihROXgFEY6Vl+muZiONKIguBQeIBLeecwyRrvI6rRLp0m441XP31C/hEKoDTrZlvdJzRBptSqmvy458E7xLaVWEiXLaBR1qTzstOqcr0YlhW1U7M8VBp2lDYfrY+8xSa0SMkp62uK6SdUoeys7Cpvzhowtcf8KzVWdPcPlfNdpX0o9r1Cw/Erx4LymtOEssvYF4GuAVT/fsXBZMAMzHF36WHGNfAWOqG96biuAo7SKGwYviiOTJs9sqmAEMrHjcPKLdlpGbJQ5F3XjmqfufHRHiVWt48/MstYNK0T7siPUCm7/561xA2+h/M0P10lHjCp78vVl4xICujEFouN+Y31JqARM1QnegEEDzP59beZNdn7TKrtP1FsPQDyh1zQV8mbxcAVEjj619xHNNVv3hUMxC+bVJuNk4OjRE0XpcHmEjDhi6Ccs8DcfoLbq6lvzbfg3CusfPoyn6K7+Uf4DM4mSNmRRoOlxN0A43WU1hcWahVbYfUKDUHKDtAtqGiiI6J1poQOedeLgdNwkEr+YnQM0OyloqzuIdOlX1MRCwS6cdcBVKj0rLsbcxZEwn9e93FSLxOrciKkjCo3aNK8Uu0XrD0WE6q6DBdEmKGWOYveEX3ZIF7ObsLyodEIZ7BS3Se2FO/4iOXvuqe2ny+eIoxDwuvTwqPo9FX/YSVUn48Nmp1+3Nu+eANPi7Mfbmq17z6ol3F2qG8fNuPYizk/1y4Rd4UHQvhEu477Mv+lsNjezv8JD/flEys4vQCSnfPbrrjuK49sqGoWzX3JJADk/G9c9G+1gASfTTw1lNlKbQDZctKBtcTfAo8bepETvGN8HUy/Q8nx3dpVneq3sqiq4rMdLGLc3LxBaq0xUpIWp+FgwMNgg84xNsAJQS4zES/EGdjpbR7rU81uUd8Yw2I9VkJDksHDPen/+jPZrKvyHD7S3ULIna4yYXaKoaZ3/hUE9Jr3Z5I0fAVFqP8YcZNXLVkz79FpfTFFX9h5HBeUmdK1lMVnWqQfLhE3/7N2rhdbo93zWj9KZC2nO/6iRT2SefPmiKx9T30hUPYY4JxqYuGDv9CNC2/a74oRFaUTd+NiiYXQEQWfgZ2Cq2rcBflV+u/HifHRdr4f9DxyW60cNYHLhds+qV0BH5MtXXT1tm+3WsgWumwclL6cS3bnDeFiE9JQTLPNRNGz3baGgIdWbGU4ZSuBmMtvHSl/tEaV87qz7S6nEmN8Kecedqis7ITv9YWRDNKbzpCHRvJZm7rStT8GZrHJROqi1qzRaMdQ9dcTvoVgpeG51PfJuaRcNr152ZBA9Yo83ISrevOz4iFjhrcvOVYhbpKuLWGzDVEw2LuJcR5aKI6zcitRyDXfbfex0GB/S6Rtt0dkTHiMSni47fCMKYsQ7IuaICa9CLBEXPIPYHMcNGtJUDRfnSuTXrFlXq8TjSNvkGcOvRdvwvu1wDqjaS+2QFP82nubAYiMITUhDHUUuRlrR4cXS9xexfSDUn3JK321j1frSm17Kb4Is9cZO84hqW4qtiP9JY0a6WbuM6bnW6p33v3ht/D+rdPSko0VlvzLspvi4txosgUcyL66aFH2LFjn8bxw6Z92lzP0lXFNiOiZOtqnoGgMxBbrRHqTEGzpR2QvgBFHXIQG+HhEOgrb+iNtEPxqFlcrDYtUun3bSlEc/s9QomfKGdQR1uZG4iGxcquWEHPVwHSbvOgfF8RJbSTFwFBqTnlUXWSXD8AGdN4dOXSQLysBThfVeI2HLzVlR+0ZVLTu2H8k4COcEK2tMGGgNfwKWPlVjPKRPos7rjMuMJEKxwuzXbT8LEZW/HwnR0iX16l7+dbj8UJ3IJUCC4r/beW0PYpLUMRSqGtw4/GTLC59tb8sJfKT9o/j+eKGzcrc7g9+r2qKaTBR1hyMMySHzr6Z+HRWumhRFcjJtwtTsoYnI50K50UT8QZ+o3SxH3P3CVbfNPklHAN6KxMIQyMzcuzr0l0XJnjZCPMcLW8DiAtKdSdxd0gpAD7LzOXX5FfwVjmyOirAJBPDH8cFvkcBmf2P9ZUGDKISwysV4o0SioMRM1bVfxOfnDEtr4xHkp6rGpoJmkxyuUQejnfdOEnQ+MkORHMYAB53h8bQiRP+ithrnCTNSy1DkkLdQ19CKQKIVhMkSySlu5ATxgIHDUGtACpnkm4IJRa1SjBFp00qmtegWQSApPZGzNFVLHZ3IvHbKsCIU+3/gsycdfUUbyASfoQniLISlrox1DtVqa7AsMLn+ylDtk/TMkvoh4tYHggcNgSL8rLmUFK0RnBc15rUM6Zi5un9t1bnlhxdZZFW2xlqWE9bOBqGXNLnncxTTc5nHQxFcLj2EJwuhjbY9Mpg5r3M6KsVx5sTVX3t8UDQpzyLvB/1qzCCpRUcg9NdJb5tAU91RaGgNLJcQYcxnzIX9lW/naQSOg+qB/47Y5nn1HtT+mEEHUhV0DHvtgMQ2k7JxPqVT5YFCqZR4U/r5RuuHlhz9xFP6GVd/tNWQjyzjaEBO7Ppu/2xjO40+OiqTX2b85xQ5qiP5CjOBtNZKLYDBd2JEjbJI2VYO11e9gt8/eqzIEAHWro0CZAS2O4g10nQcHZB6GhVMT5+wjFDqY2Pjh1dMkXEPHGubN6aBj5MeVXe8eDmmssK/SiKpuDp2+cC8mwVqpuWSBDMmw2MsMtbUPSv9rhl2vVmPq2zRm+qbeMyUp+5/p2vjux86I5Gtx2VKzFrUNL4hzYgp7KNq1aWFVvovbYqkeQfMzwPG2cS7thCVdxLXxpri5mL/ow5v6gakN6nGEzHRXdA2mYkqyiD0tWHbc2illmOXxVM3Xp3cUi34MCa9KIgdVXgyWHVzTB2rtV6Q54qZc4BrfZLt30ZPmjcDJnrBs3DkpNeO7OnGLXjLnkM7khdGhxK1ZYFsUkKnzQ5Kxw6ciHkqg/FLhisbQ6VB2iQKgWRCMu5TFDuLqe1htHuqgMGEcqEgCxbgdhaNHjirNoM3jwRmVsUonE2WVW/EhkumLQzGbyEjTjW9NcaJrlHVnDQs195U+VmaRt5qa8zmg3quvq+7fflyl8yOBCBiMOgW4h2MX8GFjH/zauo3oygG38XkVCpy7kMYvy8K+xzoTDG7OTpFEeJloXPUJRZcaManDAb+LbkJODBPi0+QwnDKiulb5DwNJ5mbGFV4CCc/SUNY/dhamzSo2fIbS+/gCVp/iG+KQu09Qvts3G3wa2/YwpsaERdgb7ZPzoaPwIQTrAh2RxJ5bCn2yhVk4uGFJ4jJXSRGMRY3A8CAmx4iYFpeKsx2hMeCNSjo4+iT0Uzzu2EW3/gZH4FQnWS/vzDuVCe0Huy2EnCmxKfNZ49lre4dRmbGdwDsQewwZJC7q+OJ9C8rrbCtsSQ1vBcNFtIofvWxKQ08OivUluzUGfS9TMlABMKRgc8zjeZjZ3dpAdYUqgvKcTe2ie8IUHDkYUlrlB9apKmkWA1ZFdCFbIXBnTu/a7YvxBlJz1Lhp0NisXLZwnjJYZAbjaJ4qB2V4MwXz9EtriroUHNRAYXJ3u9Cqx9HIwcokFX132ehRYBvosOQtzsIolVsLriOpOglnu61aZJ+GcQhuHGsCBzJN8qMmrfOc+u4tk8I4VfBcfwR0qIIkFyubU5xOiLPY4lrN5KtyrKChNZMsqjLeT8GS+pVt8aPzy1Z+Y01Hqqr2r/qWS7XrA0ErkJKAqnB5r4axbEqziHdaqWYoZkTlwu7xmhm+CHMBX8KCi/IU5yeNNGWt6sjiLGokFvc5bnsHFg2qmETS4Ipn8QK9RSlBShqNPV6FkjNpCpEUbBX5DpDsAHhH9kU6yixrGAjpd8LirbRkBcbpbADzCZkL0QmjmyHwJot1alrKMhFyx0jmA55dZWoVoRPqlTITLlsCIAw3jBA33KplJ/Mw3P4BZ3WK1oxFaey5+SxGV4UZmZk4y8rQQJzMaXAdRIo1EwqdF2F9k6NPqA+pq8GuRl2+77h7EiSkq3EWnrlqTI9VNOlwc/IyxJT1CrBp8y+O4dGVe4DyPyfBlRFIghgTSR1ajY/ppXEZ7FV0d+jPhUcfzOKcEz+jnK5z0MDRNs6jc830SoxXP1VH/9gLviqcrXakrmrODpHCiRXMxFIl+F71DeFU0w/NAYFhy+4K6xZvzQ+/1gC0jA9PYy9KdOzrIzAo1qbjtODYN2zV0E5Iv0Kguf5PMqfkTNj9jCT+KLCO7TQVR8eD0tg5UeJG7a8Oe0v+WYJegeKQLgc3KGHpaCjUCdqWTWNufjghZ6M8tNJPb85/14uG0SVGPuYNXgEQwiKCnXh00lhQsm5cjuvrG08K9f3uHarTn5pvSmHNW+ph6+JVBqzkWG53pbE2KEJIs2qNs7yFw8LGpGZJZUBVx+AV9ugHH+AZQ09nx+pBI4T3aVDbFh1VCpcpwFVyTWmz4rJ91nntVfeq2yLnRph6pzCd10hjTsYzFDFSIZf/J3C8xEd+fNmTISfqNF0O9uajS5B//rOEPtH4ciXaN+M/7Cd6MnxsXqPsvTjD6H1ldgT1UImMGofTpRqxtz9UOW8v3xyXsRWcRsqh87zVplvO21yU7q3P4moUruD9oZpp9fTPlYvJ77GnJc0rU4FmuBS014FMec1i2S7uGC9AbeuhXSKny9rY5jX32hiqVQQP1Qt4jEVecMND8OrKjPaMtTcmWJgbzLkErojI0ZC6+Hh8cWFTmGYL4SlGO5Bv2/K8+0Nj5s5qcknh5v2OV7m1Y0oKJjS8Z11SLKTTjAwWc52hPPdl6tE1gnu6QmtbVoB73qnJ6PapJSXRDhUTBLNZJZzo7yP4m5PHXgDZK9isfSZFlKpY3XSdqSpdW/VI7DnC05NBZbdH4vafGSMmrSpV3GLe6vMGYPRffJZJ2ieyV5KdONDi7hvkS8/7/qRg1HWq4sII2+vj/+ORR4X/LFQ8v2dLG4UjCHEht5mxGNVH1k+LNncxBPVRizPUmKn9a7hE9aMqeEVRmA+Y/V9T1xi2L8GDaCzT3tfVoLGdbUAa1n+UdZVV2NKzyUPwS+9uO0yExEEMDitWqsux6XHjZ01OZdCGZwxmzTkJh+1cn+P/FmZ1pX1dZh0Kx1L4hjIC7ZmCidpLVMTOQrpIr/IpqKJr0rFN7OEab804Cd6ott98DxsZdvWNNLNXedTHme2eCx9dqsfgLyV0fBdo2gUr/DR8ATO9XNWhQlyDntmnKz+zCrk20kG+Dc/EYvJqfXQ44q9YuYvAjM83I3WXi3bAuv6Frqc/6NGteKPKnL7J4eXa7+0Lsmv41JNtGmAiyvLZrmnPUWwVlSHel20bYuP9pmTqTrSJeom+nNH52ZuNec35os4oFiC21qDb/iLDEuqPlKwj+/UuydSSP6gT9gpFiLcPdpouu4gnHMqj8uYQzD4DA1Ll3cKpjuv1QSNUeaOQEfwrMWbWtChp5iMi4oWT6InHzhUjoeTawnWIQuljg30aK2MOA58kJZ+gHOBaM/z5M8O5i2QOW5vUZebTY6tiYBhBDy/iYBNbbHc/Gau6EmorL/IFZyGKKoJ18prR4yLjGUw0usERIze0F/+h3b4qtVqu2o0NzIQMXJ1ElvZY+sJRDIQGCeG3f2LVN5en2eLW/onhIrtKHY9d9kvW3fYtozD40jSpVgqNMNCNS+tcIfY5DiWZ4TcrGfMODS0SkLFJEwkGToHeEkxW1fGIwkIEjGwdBe0i3Tbzre9LtQA+zlY83unXJ+cxiQjXHP1ucrDVJPVY54zutzg/r4D83NFQ7dsIB40MB+WT3SJYqsyRrdDiKhjuHiyRO6ISQm88GhGTAEnRrUVNw1LxmshNWjxnRzeCQZ/KRZiQXAuSM5STA9OGhYUQUZ29bYatomvaul69LmIQFY5GIJwnRRNCmbDsUwYOX7/QHEnUd2zvSIVrnHxoBiDjc2S7fp3pkr+UTWm0eNV8QtVg8d6r96Ck2JUtJ0q+Xua3DK8weJLB+8cBs8JeSajtOgzVrkIzOxhLOIMZP45w9gffoOlNEUrtR1b2d69wA7YNPmEuva423O7j+W1jIWJcRY8WpcmYNsex3w+jDM/hFzlPOzkkpv3eXYEoNgrFS7bOISeqT6X+VgkEgeFHbhqcWP4UsWv/xlNoitzBG+VnynvCOO1pscEXvqjlfiDurGDPPoHF9awq/3PZBXbd40fTUvhtW/TpRGxf84GZUuhqrQksePPC6Jl5+9WVVs4NqWRfxPL4TR/zaGVWuI3a7yVJBkwFpU/sV65XMojHQ1rQcsAMOOSC66LtA1AVGSZba+ZgBZr0x0nSN35lq+vr9aqzI813fGetiCxrppKhQrKNe5eplYOTWg3vM/deRxXo1oOau1l4eiykebDoQoQbed08I6OFjiFoOfDd5/DULVhzsIZemYOuf7+miTTZWC09QRkIjDQaqD4CAm87obD4DBzyZedO5l0UppuB7XmG3xWqnTfaibKeU9vscozjAYhdzaZ2cLk++dr5kcCK7ySNpUo/0WYa69OoLaZKnlC+vWM+YBCxTh3l3kGGTQOA1qtVZkfa7jTp2Qz9wlNiteQeqI48e3H1BFwLdmo5yBYNza6FFZhKijk6pqxoUQvF+HSJsXl441SJ0e+TQLk/JqoMqT6S3yDuZjVAASoHrFr11RO1l+l+vMJH1K9JdH4BUyPoV+shRFlFMq5kGJvcqnXF0np14RVMKhGOZOCQm/WTgB5y5yoBzKV0n3JJRRyMA1GG5E0tV3zRIFYDLLCDF98V2MMFJSZg4dMUAvzaum0kH2nCKRUdZoSmrWWnB/BVRBt3R2kS6RdJ34+jQik2C0pIuw9wDuN2UX6GjYmIM0EvojefcI+3rmg9Om79j+FECNLJGQ/lTd/pz7T9l+7fNwvvp7t8an7HC0gQ2LWl35hFeSiHJpG81gPffX/nBar6LzB0pcx1vv3FCxBZ7RKvDWw7LODLOXSQ0R2RMPf1JpJ501rgOic2ZCf3mn/uDz9LW2TYrG2LOsjLhssMOQVpJLFzq7oktYHniOi+fl3fKwECdKmkA0eSvBGhR0edbvCkKO1C+CU7LQgCpAN2u4yeEpEG1uUaRecpiazQMYAj2ZnLkX3E19TDxg9HofYFWfhRIe0IRmKE9FMyZTbfTGQaMvlKWS0i9SS5r/0zmWKL7Ysz26TbMj2ErRIZ0x4nZqBxLGrQg8Za5V06BfOQKYlF3bOE5HYZC8SjxYb+6rj0mfeW3QmJQ7oS/cZQmunWQ3bgwYBPjqvHQ4oglN/JaO5NDBv9lNwwJs5xHh5e/VKi3nFswCEzRZkjcsyFtk0fhj1pzgNQA+Ff8f3u/qFYP3YaKlvJw3G7tqQMgpPxlSaCUiOXDhj0/bMsTxbuDGPbBZXAcu8v8mAPfCBIx/Yejd9qZcF1MK91sB/i5ArK3bTSuzbVf380ENYsoYXgnqghReoYDblZVC/HxIUM6nBOKO8lz+5nilCD6xWg5hNG4keq9vCr1fxSxm3qKPYkVOkANry6HdH85aWOTT0RItkfDOSR5vv5QW7DHzmnH4+wbHrHEjBc+aPn+Wu2Lz2svSyhgvmNgM4uY7GhJIljjxB9zzd7PfN7XI8i4y8+2ZmWSYc0PCYifNMAPBA4utlc/5gmRlSMed5evzrFhlRw2psastjialyHQq8FDWNSie2tYIKIt9QFAaTlp/l4plD1tewMLi8Wtj4jYggqvzkkbroCkrCLGSG9f00ZhsYYObMV+lbWbvqqTVko0FSf00Zb/jAbOpAg2ooraTLOBjMS2xJmy6E0na74QrnX71H+H4YTBUpM7Xxh/GoXK8KBi8vhZra7dR4sEL1mjEzeQpXeG5zCks5JL/gz2sRgAbVIEHbPMcgG+kGmcTQyZUaVVn36+Xu8HlPfBM5lSSTWmsKCtaKXK4zhVj1zy1BUtENukEakHL1IBecQRQV63J1rl2VQxna/64rhaKsbXi/fyH2n97jbEajyo01SQOuec4SG9uzavaPdPhwpP0Kqm7N7Y1syY4MX48ryK2DRZpUIqRXic+3DH9QWR14UtnuE+HWK5kCt9aEZwbunLAAlQqN9FRioZR+21ylrdYFHNYZVoN97OBi5iTT+Kv2hA8LEr3Uooq/cyyhR/og24tIXHmTFaIOv6MMvPJvV5zTs6fR8C0FUFKCy/ithyoiknVLJB9Vlr4b/K3faA+4wKj1rxsMrjFZHsLsIJNYtUgmelYx1aJKnLFWogeWr3NWNPDpi5o6r+wvtCMIxQpH7Te0lHC9rav3CLZq7UPu13cvl2q0F2fsZ0dmNL1IpQ+3CcSbRfjjHEm5I8GemiwFcLImu5xJ7Dg5BdQMdHuLvT4eql3dfsJsdx+Vrhqr/rg6Ffy668w4CVsZI2FccvCsZYpHs35XUcKGM1+okdVTYVcj9GhxCQKbLr1neY28i92csizFs33EjLBENj7h4ocTVSecBLNiMj5qDKx0IvD3TosKOZWrant/Go9K4fNkNZ4ho4sPtCLTolAaxetj6vxo694SmfsCMuGSJDWoaiZHIRyhxeKIpoerM/Jhr5tX9JVgFu2qnVIdaaiAxiBjliEUU68m3IUTdb9TIHyaHnyB994l4ShorboqixEufLo8ZDh5m4l1tyqnSV554YzUob8h0ecjuuqEBL2u+LN+WqSR9kb+EBPuZqHekApaBMiSOOGjrwOk1XPY35Utqm0IFi7judDQ5wI8mijuN1BXz69DEArIG0PPG3NFGC+RVUaEAJVUkQYyI43548ZMsgjeak+43PWM6PIuejo36g62E0JUNLHVNWqpBRTpJSXfN1snAJJKFTIFgyabS0jTZZW28OD1u/pZHJUQbZLa8REI7chHyFRzZkEdMtHLCKbJyCUtlMkXkobUAXKrfGYT5CNUin+3puSQKB7HIkwUaj50SNpc9BsS59Y+c1rkuc4o3oH2LmTDfj8WSu63kWDslzTFoZUJG2yvnGElUiJcZARW41KbqPDDWgjp/SUGWwHaGHi5JA/NNGjLBGU8BLB4ebBFzcggkNFGPN31RuLXqYhnWQQoJcQ1babwRC4G1kiHIkePvP/USilx57Fl5cj+WjLRsbRhKzt1HJXCZIO6GFIPX1xEDzaERyytn4tAeEWCac5HqPfvL8Pcg8qlpBsI2h5qhOF0NJEj/qFrPOLAcB/5ac8oXgtk+AMaA5EH7RYBB4TAqB2XLmLTak7anpTTWvfO3VvuLlehLQGsNcoKHCd+Nv0Y3rpkEdMmsfHzkkFkv2fYAhFJ8nJDw34XRtxiJiPTKG5k1Ry+/pxPsbIK3e9iA+pkiNZVuJPwdnGVxWfCW6ijSvny5G2pw7v5Y0Ya8MLBN6yVIWQr20JdrtgYSYzRr5raQZT9ZWh5v51WtPH3QKxsrFoq7mD35ydTUT19LmTmGwWaJhVlfTRjW0GSgp7Dk7PIDEH9HVOgEi9j7rz9UMDtxHNCac0uZDjWE5ZwrbH6YCwL0+75qf9cLA1bMi58NMKfKdXktmaxcvbziQ0r+/T05+3gpKRo7jtkFK/urjJq3cgk4uQfX8QoCsRjnZGTPeJEvZuYw35F44dTrzGIUYO7FxEwg8+uam1nSGm9vmEmw02PZZ8q/EBf4IMuHnMbRSaM7e63aZB7t5wBbvJD6pv1IvSyGAC2iPUnxBq25WzLkVJruZwrjX4Bpebu6VGMrK2FjTe5fv2b8p/6gZ+FzSHOph9TB2LCXO4j2w8ijdnHL/GLFmIKSwMmuPNeYdxoNsh1NiF9ueFNIogQ5Cf532j58M7y9tkHmsHWbWRjX0T3o9LdmbT64kmYuMm7PscTgRXEP0Aqb8sKmbVjFus5G1wSnBNIUTFi+JkpFLXFwf9tV4uLnBZJ+TCFOV4XVvrSZ3n4pdwdLWYXyPOQ5sPXfKBNvWWxAIW003GAzGnApKr/C2fKatqJZQQ1p76uIcCQlPFIAqZ1bFPl5XCrb1Xtn0JUnWar/yqwgu3I6K1rGaTTsSNkO4U7RdplpCwsQ4c3Pg7Lc/0/QXMDvvv1+N3M/pAyg9PTwsUWu3t75Uxxi67aSr172pGJpfcOTtndnt3D59XX4Fd31ejYhO1Ks0nHmjotZwALUBm8bUqomAWpzZ1UXlg2m2ahXwtrCx62T4lRjNa/thirVpLXAE4b1oupJ2yVF1yCDhBRB1JMkZMiMizgCIZWFErqiDWNcJH6kLqUZzgJUKAQqQtyIYk9atY6e3hg+R0cbvE7WOvgwRfo6cfYUctnwebIXz4NIC5DcFXuah2S+DVpPe7jKswer2xpyG2vXmVFMtHmqAWymI++W16oMmUx+jZQxnk0j+f5zNfUlq6ghi40z4q2tvM9FAhrzhj/svLj6qilvBezqm8CGlSaiNPsas4pilBGEtqmTU+cZxvG5rspAbqBYOO8MzON1nWY7TLQhnnpoE9jr2Ai+LqkIEEAxTDDgJfXcpgMTJ6tNtdFvDmAHQHLQW5h3GAzeiSTB2nfosiVMDXtvzIxnWl72IrsLM0kPlZN4QDm/7q3VZbjm8hp6XIwaOTpQXRyByx66mju5SHXITgpo69Wu1lCL/qYR3HfaW18/w0+lKsjgTZmzu50C49RKJ+dsVL7zNUuiAkOuzCFAqbXnfF0LEI2IvQU3V/d7QGrt5s1pyHQ8KoKBqpVJPpNFV2Jfw6YddgL4nQAS8WaKQDntFv2gmZDtT31HTy3sPFdxRmMXt/MiR2nRt6Ua+hPP9+/mO2dIYAKKi0cJGerCZfYrTmH70HTAywbgfcyuoW2VeGV8/VxIR86r+QwwlOktBVtI+E63QMHh6QLTafOmqg8seLbLQOHQKxCAy5VyWBUB9GX55sX6z7Wim6e43/0GmFbdHZCf5bT2L8eGDKvI2/9TKUKCg8RweJynwZOnsXWdoJm5ipVLa7yOUUpgxqO+VtvqwHKI3AlAkucV+UAjRBBUchZzAKfOy4OJQciscEVjUQUwMQ/3zcKBphJfh9D1onmA5vv6czz5QRgso0eRC+PJHl+4beIS2OCsopzBp7IZqlu9j9tmwPg1lf15Ec2WaZzolTAD+O5TxZcXRaykGnKsoLCRTfqqIX0PJR0enzbn4xU4nzJJTQMIpWccTwDmMV6oAiiM1ve7Hlp+FymVZ4prcc7S1f1xqoBMwW1ekms9wB9hlsb1ziuQfcOGHaiZ8Cm5ERzjlT10Lsrvr50xm1XEkDdAIYxsMUcG8hqUIrWf4aHE3VdgEx5fCX3dx0uoEwhWpWJ1dwheWDQ9XDRR1WeNIGqxTnBM7+DrFs8P2LGG3Si40f/B7MRHwMoxBhFVlPClokCQQZtXA4vzNKYaxuxmjN6wnYw8W5MSjf2vpfFaeKAmZQA2PS0BJahDYTejIBVoploWESZXYTqXTJ3UkcNAIvPieb22ou5cvDdXWq5CLTcHfy+h5cTlSwXChviuyFrfIvi5aORU4YOz/Bx+tYQExJKcZ/g95JEf/YmmtZD68sJMvFtCP0Cakr3W8AMWK4m6M++B22DbgpnsBxu1IU8MGxUgSk/UTd7dX3yXVk1EFdMmhXmg2EJYH2a0wkwNF/EOtPJmK/NYKNvz0urEUGw2XZdCiZaC4yzcpL56F8edNZlyxgfhEZHx5JZ58axBdHUU8Cn7HzmvVk8lcSo0ZVr3XLX02NQ9Je2VGq3hZ0clfcCPdQK+H4lf+4ZIQgpoAt3SFvvbl23nqhBTM1wJXJHE8AkdHDYcXqG4mF585VSmSQhd6/ySbydMCG1cpqEXe+TqxzloB+rAgSO96KYaF1x32kVWY2lTqMVobzyYVjQRCtt6VcezBuXmCnYO636Y1d+8K+FcOsFIFKqRhfXrg6KRvBMXDQFZoZSg1hwT9BbdgM13BPe+08f6VxCCsgbjRfA7zAQGXTXV0qNxVB1WuOBKjNv3AD5UxIo1WNTZF44jSQDzbFMiLYuVajOY+e051XszxOrwvzKD9iUGlTcDXLnQfBky2mNu0RuOx77Pp/p7YH3GlNZvz5axPEEEsqLWaY5eEmeRCdL/3LaB4270rrbB439/gMnxBB4sgVoJvwmxgUyeadLsvFBYtm2rx1YArnaQPeFUd/zhH6pBawv6QRrCd/z48WjtKkz4uX4QQAiWsl+GKJzHlR2GtkoNQxzAEvGUrlLjKLO4XqUlNaTRkZG2r49zuIJQMuRYmP1atzT7Hh+OsNfZF5eTHtHjcSxqIeAvCPCoIEW0PYLx9QnNTIMOpgezNefBDbkj0If22HAtObPRgHDl+nBAGNp7H3TJcbgbhutV5cwdwxeH6HDBQMBUtZ3/eLvdEL5afpMmNPKos2WQcJ/6qnXUkuYK3Ksflzvp58oB6FdbObDdZyLSFwpIw2301dCElzw+sush8zbu1LROIkGxcmwcz5cjaoGWR0sj8HxENqkrGw1bqOVtYRWrCHidJuKqeEH7wkVm9gvGmyfjfDScGUmDN2JBt2FXjSBPYMjanAo2L1EA7hiKjHY25bdEpIwDFIKr6PMaUgOzoWWtR3XItR9bCP0xeyVENS8GRlDjW7a/SmeNBpuOzqEaB7HwBYNsXBBDHA9VuGAsd8HhuGDEJQszfUxL0vGaihTsgtjJje9Ix27PC41vXiXp+hdl/Bw/qUGg8VrDsqiBlm1PBtG/wx16RhbIw9JEWxYCPJlOxcwTKR4KMKoBRq8GRx56eBebgzBauG2IB0LPOVkSAWHfPlniLV1SBWTKFkDuEgabfKhH/hCNOTlzRIRLsWZ9SulvlubQb81z0BtLFDlmh5ZihopbGQEkHwhGIZf6BDiLATot+oT9z2yU7wnVY/AjeoEDfwm3kbyNFjYDLszI3EkTzc2Ezujf6iqbbcHwzEk4WFL45yGwYWxEURIPb2YqQmj+ylkPAoWjzPwDQIJZngmZ9DxE0cDKTdoBV8IxJsBwYYHFclAtBlDf7eCPVY9InGzlT1ecfpDI+hnAo9UMRH1TGABD9gec1CNLoZuejAufUYKbKOrSK7j8G/Pa56xd2B0q2RX5suEW2xY2L4EU9NeK6uiYfu0+HHM9kYyi+3JFnf2l0wqlCXgDMyU5pshpyhiSkWgtBwgeKdGiUmCr1w9JdhaYOF+43q+45ZR5PI5O9SgniGEjpOOOkBQA6EY64wb/R2vxioTRAIneArpQFYteDjR9O02SdVYpFuIfOhyQB2hrb4lyEzbJ5K5rKZfWTbd9rTDCuFfHw7tDk//DLjz492Rqz12TZ4eQ05z3f0eE2L5tl4YdDfSwlicqYfx95HYsGio5WqqDpUcV6UeVBzBB5KTpWRrwezkKH5ssLPKSwY0AYkc35aBpZxy07tGaVgCM8M35PzFO3UhIIHxcENX3fNY9G7ZCvwE4wQVCIEtBBM4QiLVLGKgl0YgklYzpyOID1jTtZ5MwgdCLM22SIzRzrXDlXY84kFR3bCRV36FhDmh7VQC8mkmTCiOhOUdiRFGQAY4ydPM0534KAR8KyQ/KjY+rnRXGfOYEF67TKIoUphxpcewTptgvgBbvuf68x+oEZ4aVO7FUPFrjBFV2U7Zsoy+NzBxkGCBeoB1QWoHYZuyc5tjTBdbnC0msp1lGXJBfxqzfXU8UQu/U+hVzKVD7vS7l9cfs4XTxViAwEtqCFoPUPZ59P8yncS82b9IM2a6K1uRDMtLoy75cO3rCYQHfzWae2LN6lF6zQCS/n5NtcA3RsxPWEq5t1Gxmt5oWL/WqUG4QhHlupJhzwat6MB68iRrUXCq0tXm3mmyNO/FuE4t5vsVl52akBFJnrIofZ1Zt1vcLIUhYN+C4glSF4lfLMosKvWducPAKq/NDY9xD40iZ0teBjNGSSg5Z/9kRz22vUvhl0ap1eFsdoJHTP57EdIQZSGsLzAls5hsyi/GlYw4o2U2Y63CTLgUxQf9X9INPBsEVb7E9yGkrfYW87BKE62g0Q9os8eAN90Hr26Cawh1DVuSnLh8rcKhHio96T15NykuMGAi/XuCTCHUY8lNqHhE1jHhiM9EXnXhVFng6qlK5UiwDgRf67TEV0yqLmqN4MVXp8OqyqkCzZt6HnAvFoEgJE0S9Kb3Tf0EH4QwdlAkteMnuFGCddapRFVFr0/oQTKT3qfc4jTvhlE0h9XBhUHjRr1aHYWpZOuNPnBnejb41A506OmTcNSHMwjwe5dX2lqnP1V07iJtnnE6qIPieXkk5bD9v4q8I4ybLqiQrSeGeKITZbUkIqmYoAfgVVyoHbZ5crUPdc9AGBj5Jw/oIgHCgOUPpylM51sdi53Rj6+ipqI2cYAve8Jh3QvavqLNxxvmnmplK+5OYMZ/ozoBOD56VaC6EE5qPSma8U7bqwnZy4B8DJqqV+2P2JilFxqvI3HUpC3AvnsTrzzX1EnxuWYaxRVdPthYU78sC2pn0ntJUF3PKLzfIztt6P3KK8hoPkc3L063mWdNbddowOhB7p3v1y7pMUM1XCsasu5GHRxTM16EejYjOz8MZld/VrcOrScMM118FX0HST3kIxNpdHUTrl2AS7wb49jwqEl8UD2L5cpLbluqmJqP2RnxwsP0Q/shHRRWwNwUbQ632fxq1mACDC3dpSr4Nl7zHe0t59D5AEHjDNFBA+TDwNG3zSaS1G/r9jhOFIjvoYfNnJeNoOeocwt25GkO8LnzQ7YDmQjH/rEvBzj3YXR/b9oNcDtTe9LLPMX6x1gWgZMWgIt86aSDynkxTqNbicapLqKsnaMipcVom750MiY+cFhXS8VhO90R7MdVFFTXOtlJk5367TcEPadeNUNOcq/zVcb2Y+rd+boZ0Hnr404gTtjW64Qt7VCC4GzNyQ7g5uiNuO0vof5gkj1ZC5l2YJ3x+KbYs5kv91B5Gl/o72mcTHAlkNcCzWhA+IB7bUhdWjT9EtpY8kUl8LD+ATKZ16VGtfHO4HX1ZDl1md6b8Y1Vv/J1+guTagIpo7+8RtW5dmu6mWxxcDt787WjHZ4yXBIokLM8pNt39tLKRALUp85hGW7zYUocBN0xaH8sUY2uxAVpxshjg1oi/J+ryp7cW7cfregEU9B4jLQBntAQ9Zwa39VNRQs1hy3PFcO1zaCjETC8PiZkJLnI5OdSHvDU08ahu/SaJVAcCaM1PDoYlU898k9zd8Eo0gM6kueoLXmCmp5uOtuWCGJDMx86uDZK0lBHBpN+YaRl/3jGa/v469nma+eUTU/7RZBIr31mcB3ovvMqSOOfxz7Yie/4vFWL1N4svOXqyUYCV91lUXuvWPVL7+dXNpIJX6UUx6enbmNOjvUSQ13yyeaHjpC0fqcsdbf6LDNEqP/n/IHnQx7usznRj/t9ZU/H5H3+/0kr4iTFWeTroC7UfWpf2HMKrnLeLF158tHO24pP7yJ1SpaYHgsonjFWd5XicP5FHznDndr2ZdZXOdGVDlll5ZCZgyKPydjZESVmQMHyy4yNFMFWzGqbNi1Fk/wyZT9uSV9Nl9aqPI50aU94x0uCsusXAb6+ymqB0Ea5zLCspSeWwZauS1+eGnDJKaOc+g5TMatZ071sssQcTJbn15w5/Shf9eWWwtmHScbqG7OOPEjeQ0uu3yC02fNsmrnwlEq1dFI4IYx00ere+EAUuWJprNvg7muM6SFcN+t+ab3n5jJve9skb6IR6rP2gEzNuf8atVSI1QfW3hoUGanknCusL5anglGqSJ2Xwb9anFidTp+bloT2nQZs1WlYmUP3qO18hpJIniTvmySRVn3LTKHM1ddMIctLb7SZ0ZYskytIPrr0qsVj/Ku0cSNev9ihnvOhjtolndpiqpndSzzzD88tevMQdJSLJW7UPTdhcesHyYVbADdk/VQM+9ROtRH8qpnQ0lOXZLVpo2bO2KR9DFOOai5lqS7VYJlxzs37ElMtpNuoVh1Ox2xL6Wc4duCUXM4YwXH651WQxZH8YbV6V3Z2GT511Hn9wngyMDdEHM04AJr7MSCLOGuB9vqZ4XTWJNa9cLlXWzHl6tacEcwRmrcYGp5UGYHE3Gf7aAAtgKHwxh2MHPjfg2un2ltuztYP1HQmYGq9gKuygRK6WS5Z5/vLjhJZ7irrjXjWIPxIKZxAlhXjE1NYVAQQJXpEUCBCm9e1gY11+cp3UykxwQi+a3oXJ7izkfxDoNreXmH0Z7/tVnXIEYZnSb7YP6Yd3xEphUHJm8XFC54r6zuQzQPHEjAXolghOcXuUOdWUBmnvEpD5whI9FalU4RYaXjzAufG7qr9nl1ki0Y+tWEAwFmftxgKJ4PBShFfl48WRUZlXXoF+YTB9fboZ6RfoVR0jP1lfZ0MidLiQxbWiRXu4gSdXnoPhTSvmVrjyk2k+szzdOwrsiwJ40PzeOWGEabUAK6rQOVKkSBqtCrEh5AcR1fV4H+i1HfqTTTTmTd9WYKdeGl29ixCe46+LJB+TDc4BjUXuJ9l7J7Z2OXjdjWyviZajbFbdHdInQl23jQTkj0rZz395qvW+7RRg2reSh7Fdvk+x6V3dK0WudgY8KX0QgmphX7Y75NNho8R60BAgml3Ot5R5UnULMqA2Y24/CJFwld73Lqk9F4gKK3iJ6WOUEduGJ6DWVrGkd+FiqOp2A6JMye61k5V1kLEBq9CPaQVLhsMtO6CpcEnKclvbyY1EN9rIaF7OQogrGrSVhLc+LDY4ct1rAPFrfEw5/OdI+Kcvnsz06ZdI384XqKMxjiI0XWyXZ5HR1JyvL9dNi7cgg6g/GHmdfo2RBqPzzDY3Xfnxsn91xphFB8vTLRYVbV2SaFgpIerHmva9QNB0dTGcAtfWW3Cj+qsWla1ctXcTNnoYkKkUpYZg5UXtFdeTfFdlbf386W3ZAixIYcZl7SJe2f/ohWEjD3hM29JS/aclHAsxhsYqFjKlQCaIqYOHH6tS2Bt7JFa659+Y76cT06fKXLdlJzSyzo9+Pdm7InmL0KL27eYi5XK8CkvA5wfXtWAqSxv9eVN4+PkDRoXndAgxvn+RUA5PtwoMyFmG3KZwWPcKB3GV/1ijY+EfPmJORbQE1/nP3OnevQSqgTYnPpEkdW4w2rTYY1WJXG8+Dt9ox09zLUSM5QnU64ZCiR+vpxwA0+az4I5hikYqpck8PXcnhklFID3AANiBgBacFDZ2fLDugpZ2pBKQYsWbYLB/uSau2E9Jp6rCfXzA/7lb/nDTjaxJDfEzwVQr6Z5O/3CT9eHoQFyw8JdsETWEgbiOaB89o66Do0byyD1V8+lAaT6c/GwWyK4JVx767/YonLIrbXEjfLFiv9g5gLaA44VgIThqQCVkZb69kRYmEg1hx6gZ940Tp1v+si616YP03Y7pzugS2p63cCEHaC38vyOw6/9cp6ONGjK5lwdeZb8nm5Xe41/SCux89IKEczgYe3UVzcEZ0LepZez1jVFGoU5tVKaGw8U76rf/t0YPx+VJRU5P/+EUU9K9lOcL/cik6NFCoB231lFYB88JUKRUsnwfS065moy45j8aln9DJlbBltP35mPW/clbyzlMzjYgTq1Zw0y0mdst9Q/u5+BdC9EqeSmiK0G3AGyIsSDSBdm3NQwwMzalnX1Q9KwthfX4RZ0sEzAGAENRolfRrUybanPwS7yE5Q/0VFAgYz9CmRNiex7SxF6pKuoUZM4BZjL1NtLBnvCYC9TxYEj8mvrRojt/LmWx73u71css27cxiSVYpRpmQHvaD/yr8QFqcOaEof+rgle5MXvWKVXCXb5EPrA+5+mCr9YPdWWRabwvoQ5I0VttLesjyTww/r7Zeu2HbYwH7FxiWCKuQn7knnWERhGytS0e6Vl+jEAIzqkGQ3D/MuMlbcoFAbkMr/T2+XBweT7oxMF8ncIpzNPVze5lXTs+CVvQhnLdxalQ5f/4GXETwUfK93grGtbQydAIYwpXnzbOIXn5rHNow8HNeUOo8i5eOoB5DaSbnjgLb7GKY743tHZ8nw6AencYFAAfyOKvXQzg5qUj9hRW5DsYTOY0VPfy1u0w9egZEOgYSJDdt7T0siLwL2KJVGG1d0Z7mwABj8qMUr7AhX3Xhfzc1IRJDo7D8WxV0cg5Fwdg86G+Itj1ZkyRP2SukfcyfjtRjVH+uxJPV09p8v9Zia9dFAsgUOVCp/f8CQeIykUYuoqGoi8HtKGHPXECQ4tQ7xuFmQ5uJujqQ++oWQzyh/fNaNKzEVLkwyR8UQrLYWP6+RrgZDmGhAOuuS2fjP2Jac3a/mZ4gy/uFrPk47BS/q1d32a1M+a3ZfKBhze2aRtbAkQEzSpGQLRioe9THFgNrmXTGwXuIbDf8HUt4K27LeKml1etJr5DPHVEnnICpusaH57fl2qvucofYiyvOfkJWpCBwLhqSGkS9V4tCxxsEKLHU6GMS5OtvKlPAPKnYL1A64tXCw101N3N0luYVXjweh8BoXlYE30EygK+X7mqhN9V7tiPGSni5/H1ldfCplJJbkQOA/pMVXHfVjp3Nv4TBAjYHmY7DLp0hd62nsV85wwjE9XTApAB9hr4bsPNoqjrL63P+QM/sKMCEkh3maBer6hTOoTcSAK547/HIC3CCv7HfwZqlNgG/vWwaPuNxHnWwCQMR39miUqay9nIFe/YtKfd3W1UGsrn48XLScMBCB5O5CtLArswv0dAuUg1wbr9PZK68mfBzMzWnBVEceAs+LLaHjerbNPVVWmal6vMyUC4RZv7p2tLGbR/Q5FaLgPTZGYYD09r2ZE+LaC+gniitBYsHKehjmRcTgqUYWGNQcYnT17+IJIUMFEGJnMfakjqqSwwZmHFw6L1VjnX8z56Yra73gJho+UfXmA/sa9knZL52k11czrloQWDx5JjmvloUtw5d0fSfzcwhgFTXq9MuCX1hA3SnHne8SY9ZrfyMXyoD+uX9k2pTk+6cP+2MtoGa9bkipC114MB3aUM6dLmpbBnP6NRC0aeTFFmxxNBWTFb6HOHRmRU9Q5vUp2vb7BVQCsBlJklmNv1pVzk9QgApj4QtwDiUn2ClS7VXUS4d5cEnxvStpVYLoVEbU6+sVAmJsWniyvXbc8oe1B3lE3VrUMv8whmQ1WYimOIM9jmn79G43RABLJtLQOUALSJ8cyhXvu7IWVbm3Dm4yjqAOQKz8nqgY59oZ1K+n6zz9ef8em4S/iKfxGg5XI6pK5CaLHXJClwK1JUkU8zWUhxhZI3fQ7bROnWia4+0Q9OuI4qKLHXw0FBJVB+N3Uuu6zH9h4lnY+212IG+paaqR5N0wp2VCqBq2R9YdidGCqE3sI7Dz0pOsDbpKfajiN7jfyNW9J0DdqsZ46OKU1yqVK5zmZo6d0L5sG/SldpFuYnkCX/uTQ01PKp1M7ymXheWMEaWNNRlW0gi7kdlSNmfr6jyekBPrCwMtPFp37xZO4mvNbKQVekmOZS2aV7nwtiUSWuBOcGV80EfD97DrGS4eV0cWNc9r11iCWUHSLL09T68T4Kmkp7nCN0uBTWxbTg/5oTy76M5+iKJ9Eo+MebfV72n56k5bZgIZMd++P1VQiFTpTokCx2P/jLqcvwud3JWOHAdyIqVpZZD/vv4hyE74UUNsvlYgYUMKAKV7pi/nh3O1H6dMiicNBd8fR0YtydHJ24BTxDKzvtrgPGOB1y2oW3dXMwuYmXVJT/3n4q4iwy6DlluU31NGQ1JwKV9ISRVnqHcP7dUA0ewC7fqgvgmPYs9PRQ0eArIJL6vm9E5igsyKTe81kc3ErpFYi/1MmnYRpumAKe7F5c85rLmL4/G4nJ/Zbq6gSdlEpL2HD0BoK8DQ5ySf6RvmNNsggYrkpiTgLhQseEFoNjAZn9+oG5FMPsJpDEWDzW6UbMONSnOXD9kpDxls1U50vifC7Ql4cSDSGOXUHS9qr2CuTdNkqGzGPvNRjAlhyWZM3onMgGPBoVLWeX/J/gtpFPWkaRZHwdqyOWVZx0Me4fbuDohGsy+yJFWR9BhpV+Vn10JgAey0q1hT75Lu7JOwSDKd8oj55xOL/o12XP8ASsnQWgfJED63SvV/eGFzknx/3jFKTGRDKBxR3v8QZnHeUhHa4REy8JdPnsPWuDsi7lzimb4gLC+88/7rUt9Qjv+jxlF8SGMY0g9z3OPuTp25rhRyB9W16dmAmlxUf5FxCS/Qwe+awY6/Ps5gB7+MSSgsx/QOPFCmAu6BeKGNRVdThHAemNtZdzZU/K43rqKS9xbCSVapqPnje3G0w2sH+k3WeEuzeez9T1arJjsnnT8rCjMFm+1gBxMes0sDES7N8yYOQOmoYaga9F6UwhP0zOMwjjTunDOWox5d3K1z5g87azJ6Q9TOQb12M440fdcO0/ftIuOLt0v2YhR57HdikK0dDpHTs6yU4aoJnBmJk4D46rs+K4qWpcVysrse7+rTn4Cn7fbMNEm0QEJPvOJXKDpdqAcGwlpqeSFi7HAdg0wxP5SGBveLV/+KIxKxvzEPqgI/y087nyMeE7pk+a51I8Ee4WS/8qWYRYkxF+bKpJEOHQDMwkv519TWKOsCDLxaeMKV718pMcnfXxcmjxPBtJtUR2rEEISUtrVvl+3aMbE4vghzp+qlm2YTaeESOB7TEbBEX0yIQTy3YY7cceqf1ekvlWKj1zIp7326SLVaTNW8LP+XFQQ7t8PJq3JRbvuWizm/4/gnkdLjza07aYz2nJuJ/hwsexHnTjy3R4VYBWmi3+XgCz7xJOoEQ3bpSnXZW0RnGaadkvochYTajXzmVSKyFxl1kD1/VnVXCM+Q+OAgAzhqp1DgXY0Ewoe7bsdpcnywuMqXE6UKKIT8LxunaXAE7QMhwJtmEriejN50Ghw2obAV6jmJAoi+MkJOBZ0yVMPOEH9WVEduV0h2Y+ya9Oz9yoAq0o2bZ7GTgvuNOPWNbQ5nZUyeFQwvXyueNyy/rFVuehu0x0yaK/Eg8ovGSWrWH5S3cE5r7ArrR/MltXBy+CwzDsRGG4t2pUG4lwAckklJ0H62IDUUZNEBLBEOIf/6pjAlFfK/Jp2Bhz84E5IADJEgmhT+5ajBSaoyfpmfdr32PcR1LJ+aAvWe9zJCDujl2T3YvnRTsgh47iPPc2Zr97NZpzuE+Xil7Nkico+RQiVmgtYYZpOHHprgF36XAqXx7QZjrHSsJKNk5YdzYLY8eykMxXi5vHfvLCw+el96wz9Whg5sPJrrOJvgaPobjtlY5Vcg6FefkOEzYOpws5hctmInVmWJPWo/U8knZbb+KVaGFQe+mumQ7/NZGfN8T1x4s0JHtUMvNo28gVc6KxFhl3SDWLo3E+qoQxZfA6N98FFnC6Em7+G9xz+N1xbd5mr6Zv/1ydEg17AMcHbWu+hI+e2h1DiPtE2KL40XY/QexIcn39Uz2Oi6XdxFcPgRitX2X+EAmWnSDlJrDz6aVtECyfKNWHSr8AywfEglw3VJByQRdNP3CJVwM/sjQJ0UktmsTmGyi85y1paUZtsaHRIpn+IN/JYu6DDxLm89zA5xzU2PdEoP0LuMK9G42DWP0dn2wH5awD+b2dozf55Ork9v9t0o7FmvFRj+X9e0kfRmhCh4nriloYmWeQKGpmEh8W5msVN3nZk9MUZu/JlQF6S7MijOt0diHHniQ0mFScEoMnti747No+jDkpog59uq7WJZxvZUsNlGCx8qGuek0j5W5I2ITLuM34ISRBe3YqKWSawMENHNs7jpfj0joBQW51sfULwXhDwE42uMwgCtGk4sKn5jp295xkvTm3uwlHNukJ6RdVw3tuLnuf4r+wTBkYm2K9P7xVN1WX9pdYiQ7ujWMto5x7uwp3DGZZLM0hU34RGcodcxnX2KSRqPfkkWsGaShqq/ZCiDWpSuAuUlrO/vhqUlvfL/dIeN7gmveapB/j7+GI6KChm2GiwOHWm4anhHrSUnn8wyl1435Az+helcVqt23yLaYw+aqPBluGj9Ne2oo9MrvMucZ2dHxXmkoVOBp/js3dU8LheORcSfAVXVyL4zmZu+4FPodDjFj5NwWeoURMz97hq4eLmPj72NPYq9pNdetqPdoRWnjsU0itaO2mwhsyDnXtTrmhUHePO9mLhsbx4vtFk34MsdC2A5eRQC1TJjDms2K3sRI5CCWktXUQKoCR8r1tiZPWHbpEpNXpQ4LNB/OWs4PeHUKFlj/SekIXz52/738tt6RrxJ7+WiL5yBM1ZA82mPH1HPrufD5jj24de3LqdSGfSzTOyX7cDy6+9xzO+t7tQ1WCG5AOaoAtGspurBz8HYLw4kuIKa6xIKqNGSBzM4uOd4h2716Uxu4ZwrPf16M/ak1cI5WhCdxlqNZcNgt5Fa3faEmH3Ld/PVp1zaHVkGDnTdhpeOZAMpOFCfThhRHv57P8zeEr0EQLPa6UWswhV6RonSrtDl3XQq67cda2J4qauNvkYYNpOAerHGPrLcnEnC86CuSOlWIZ/rveDkAsH06fD+M5CS92aK9cfwPtUDrGHIxJyxnbaDnD4aL8Fzx0reoA+f4G6WvlKTdQwkhoeFc/h36iH/lL6nCdBPEJFL6doe8qUwaxpN502sOvpeTOreko7u0Gz1b3Htq0ooeGXpUiuZqLIVepIlbc2XkrKgvz5YUddykh0MlQ3q6ebqnJZvmGwnzSGAN6XzBCKekYwZdI0h1EbNXr8uuJW1zn/ZFeEH4cMGY6qpAD+etg21JCGgDlvQNoCL9gd5BnXwqKY9rjQYCAi+FZj7KcGhF8AH7jPjA4uJXtkSSpptMr72PiAFSWuy91Pa1/qM7GpBcv16e67h+HaPxhpyhfUtQpznAPcV1KrieYbltmxoFWDhZzhg3N+BAfksOu/rXtZDcRk3fykzPym8iBfjAKs9F7sTUZA3hPO/QGyI83E9QNGX3JJShX7hyHWhp+bNsoX+PIUuuPZ5oUZKb+7LBiVWC77x2eKZ9+lzgpu7A1USS0bv2aH6VRGaPQiEq2hO5pR2RgOu1HX7x3dck1XeshVEe5n2Q/Fj/OHALmOu9lSCLbTfxchRyfQTjeDEehyc9Md6JNG2L995B//qqq66+oA44J/g15gL0+PDw3Hb72XXQb7lN5UXNXjycnQel5Z/elf7nZfHUSoNB9Kr+AmvWTxtRWFDSMra5NYxOvLKYju5RHRVP5BVHkDQvgYnpnhpqbiFD4HlaIeFrnhdIZlTTHuc5Ds50mtpTqKtT1m54PPTQvLYzJreT72c2XQ3dtTW8CvLhDt3UVAYsyA4lfsvhGNKUG+CG/WOpU+coQZwZvsqljvDe6ENbEaoP+53T4XnROoXejw4ZHprJmeGDFXw8ybqQXEvXhy2ZEqIryvPmA3/hZUm0bntpP6f87ojlkL6BbJgLnu5Apn5X3XQn3WxT9tYlhyI/k2l6oy/zfd5lO1lQI9pvNUPP1CY3vkoTwcjD33OpYVTlmU7TcjIBaLOyjJ8CTFjKJOpaFhCx9Uzb7eEMCGTP+z1YZY2PXaAQyWlm1/ymzlIISke0OtBa3wM0m9y+LOzyniArzJoB0/S1HGrTU2RjeIDKLFrRItsfdEOOfqokazi0ZLwd9Zkq3YUv8uXbbsRatmOlggULvRKVb7cfn4n7FnO3tEpJN5nTPrVvtCjTMuBZdaung+7YgQXLQwc03RvtdTmzGG2rMTjdaEjOD+5MAiROLb3w/PCq7rdYNKp5D6LqpLlXJZ6KWZHieCyKGM4byD/S9K30u25jSkgJ3WLV+JzY7QlHZNNpiUzREs+0usKnsgNf5mIjhwAlnp8fgKxNg8UEqnl2YJgqQQEZzGVMvyxyQMU/ximUYPl/SfXlDeXZ0CGC9uKKaH3RAGX55J41anJbu0j0GgODX9j8czlvwOTLSYY/mf5NnxWRK2Y3xxGhvu7EMTtRG4G0Y+66kKIk0EO2FAmRezp5tfNxzxVdIBujI0plO98PsKPb3CHK38kN6ifxG7LzANbD3eWpdpV8uCIcmtmeKMieEp0Mfqa86Og/0QRcgO1K022cQBqCUUIezUvcgj+OXM4Q0U8yMkClaJhtfedt6JIDuYRWn2e+O74YofnOaJ6HUNvN0TiCuWCofV89tHL5I1J8d33keKCxoxKZJUAVnKqCFLJ3dKkdwka2HXd9jUdoqVp26Th/JAZN5DDRvl7RG+PPjznIh7YTG8/Y0MdJmsCKILZaQSg82RUxCiDLjOHIU7FkcJ+rHWEeNcN5lCE9TSRUT9WWcruGx7ONYtnBVsMQ9hTb0YleeEJ7U0VytWZqtFxt30yiI7E2TUogLe1AfgmXeoAlh75ymficS3Ci6xdZP4D7BBP1DN7qR470Ih15iMwV4FPBfTTfaNby7TwT/BN+XbnUjeAEY7eydoeoCtoDo2XqiGk/JhbRrv8CJk7Hsw3DfQWgM4WLKHagxQWBYGmtUqoaD1KKa83IeoE+sVWsXSnNenz5SzCoeLa0Wp0M/9h02dx9/lG51L8eHhtmA7bup8cDr/KgE6u55JnNdu71wRyXOAsJH/BD7u4XAIT3vPbS+zLVXcQCxNTmzYgDUmY8pLPjG20MUqYFzkpCvM1HHpkyN6V7RSIHX4au9uu3BTYT8X35cn7+QT4lnefc9Zfz1TA21GfysGJYwnVikxYbPUHGQr1lKYGVnk8SZpWpfZv1s1NVbfc5P8iZJ8hjD8KcxabexgUZEOFVRktqdwckh/FSf6sMgm0dkS7IrIXgRSdq7Sc8LIo2NFfV8uTNmdqYA9GbYlCWrvzo1B+4qg6mCZrvzBEsi1dy2cood2TS7VNqAtUmXiVoSrIC3Qhti8Pt63KYQMitfXvl26McdnfBtP+zfobBfKbF6lDyiDfgTosXoN46ZePAn2P7Z9Q7kMRHIDYsqQu0Qp6OsfXpDaBetv1R9X3LikTqf3HvfUelJEQDhnO/SOaD3HMwHucttaE8JLpp/h8+jJWJJBbcsai530/lIEVMFTzVEChtpJ1kZRgte+VLrNQ77Pl4pQfz7ZbDqNdtP+Hg6RFYwmrl/TI/rvusoKOAyW9pT0zsktEyJQz7AukSnszy44NqPW06EzR/iyJwz8hPXX8VzDjiVx3FDD2sHH7MoQyAlEKlCqrIYdMf8A7pu+uE3AXbyAQG7L0rBEWL7wxPy1uaWGIV1U40vC6FHTLazlkWZ0gBkLxDhnzjFjpG0OBUYWREcQPprusrO8pvxVln/3mDwbbMiUcTOfopm2E1DvTxD2QJ6g7Mgcdym08l1ndXtyrDmEUGJ+eA6XhT6hYkbM6zXHhQiy4tV0nv9UDLYRGHgHtGZTwcl6sQfGvTqssuFC5OegOPU8vMV6p6Kvo4wObIxCP7yPdK2tzRG7tfrRa8YyGSed2KXnBUmIIdBTztGImceq7zlsPvQwBFmV2xFclh5zyDTBOIiciI1YW6/oDr6r0hN8+bGbhuTBVfmId/z/zt8UiFXdgPa3moN6moCT6fcEuPQbolbMlltZdzchCTjtaUvwAmuCMcaNeJQY3yr7nAaupDQXgMhiGP5TIhLp8BlPwX4tgvj88ozfAib76GTI+GUuw+olMvo6/hHsE21Ugsd4jSQyKHrgUzNk8JqnNe/lKUbv5OsoVoahm+t7dLRXyd6zWB9KTrKf5/efq6itzAkj+GMaFG/QXO005LkLXBv/lg5zNWEOMbF3u/H71mLoOGfH/15N9x2RS8yLhKEL0r0KVUzfeTkdiCJUlERwv2EPanHXWxFyeTy0ZZegp7F2dAMiLa11sbjjfA7ASS9MCIXWzO93Y092C5lCQInCQq8fp3Lei2f0xv9X/LQP89ETs/FoArW/6Vodi2jwdAGKt7cufMOkzSIhkYaC8RuPocedJfi7Y5Sd0TyVX0pIadhxfZN/QXKXR9qrnl1xIQfGOCyLHUc8rP3LEp2L/dLM3+FgWr4EKXs8vDvX54smbrtmt7Sry83jUkIMY/lqgr3t2ICXmcnn2ZE1tzIgnnKgUtM3mjDqJaoufuV0PQCGzdY/8Hbx8HAaan7/CjO7+kSKDzuGgTQB3wCPoe2lkVKY2vZ7Fy0G8Xli4/H2cCHu3W7C/J7U3zhMRj00HoJ09DMYGYhvgxXj3xJ8FUasJCXlvYrIWU/gm3JCJ3hCtvb+1VnuZsUl5o2MA9Yf+ssHjOE9aF8+WkjQHFWiqr/9toafespnb9xjKd+6HE+cqMTJpYOx8haLX0+8q+95mwj6TcKIbLuDJ3ubyAVf9YGwozA8fbZY89pyv+Eo9CU/tLEjkVw9x8JvoNSK8EoI3t6KZREw0LPXhCTuA2fduB3Kx6l8Qha9Ar4NrfWVr0pK3eFKdRpqWlz6VsaeLcYEfRTZLgAO09C6GKlJo0nv9QmLd6E/A5OUg44IjOZK3nbRfNJyqEcrVA85NdME20Dl6yCe+3OAJLshTUUBQFwGW5co0ZOuCe1CZW0ysoWJMFcjJAgHcCfTqc2Kxj8IopRhbNR1jD8Z4DwQxbeMsgB36qNsSCpQxlHeESXsjY4KW5MCCNIQblVwMXtMz8QQSPiFYRayDwvggzhgcuDbnT5xgsOUybjxnjMYpE3AyC7aNFXxYhrrK8TcBQwwK1bLxF1W0oeMLuHCaNWUxZCgHAqoEgdD4uQfqbGb5qgWCJS82xLD8ctd/GyYiEufokaz3W4OC2NsHwZgTASL6c0IbxHFGegFGgMcLjXGGwqptjTp2JKzCkg2K4D3PEBqAPeBF5dxx9efi+KOxxUVGIMnsyHue+ADZerMkuVGfvL01S7gPRlfaaoE7H0fZZ2WlI9txC2Ryt7R/Csb/3Wc83wR4SUmk7oHN/ytVlPBGMozcwlnmaEwT5ApJNTMq2NUntMwcGf9W/KZ+MBwmW8gTkyDOwsmACrCwaztTx8hkCa71CMIiyMgHwyQFzvrqiFTtZcvNoCOQCKzByUy8Gb5ZqmeSmccFRIISpDAC8sPGqB8JtJqMwkitjcToI+vAD7P9H8x5Kaj28K5YLbaOMh6vZbg+R512SKNwONLKcgUZ9nlyRMPQowEQYu+yCJCnC6AKF3AGXACQoHTFcmcNO4oErDYjRGBYCQMywls17oPHUrsvXzEml12X+2r/zLdIgvrYicICw/T/CN113yPBzvqC/uAyZ4Qonah1vKy3e7pYT6jj2GyMRB2a39MsFLa8CBB/TVKn2men4OV2daIG4X71VwGne+0nPzzKaZ0ZX3ClommxUt41d0pO00p53hq2cgZhx7brkxby+awjvtRylUxiVn8qjH0p5EX+GgvgWF7w1f/t08wSdbXzOu08/aQatXdG0TxFkryoqPUVJU/GeEt/k3LVKw7yY/E6HWFsQ1La/U1GOZK3HHskMDXukoVwz+cvOJpy4ivgCNxgnuyhPJTXfBDI1WdHS3tvSMchXDNU2cr9M9TYpt9N0e5kk1ycz4J1f1V66UqKTd2hbwUfEQ4FirG/6SILWa+J1xZhGsM4JJeywvmmUbyVjFik55uCWHA2FaIrZeYJhzpEwCz39TLt1alMrP6mTnHpp6SPYUZyuWMeR20F3paCcnA9oA8gzeG03ZpRMX04vkVmhEOWA2bUESGGdB1uAT67uzQMKmUFXqBQJMjHeqoBOMbmUoZT76UFvjGgtVac+ulhebFCORLv48eX4bItmVsRazAVyPEoHUWEhi6DtqCQnx8tFc5u99snEkztLTqpLSJcR5hYtR3oLrjxhYImlk7ZBi53B1N3ASRVjLxrBCgOkWrXjqYkeamDeh6VU/88CPk46ZvyU9P6iRoHfZLjKQdaR4vmMZzd4NKdZPHSKNlzn0vmZ1UcaowDjbm72YWe8x7+NZNRyrep8PquaGqZL5b6WoMVdclSGqBatrgRRu5Kju9wEJT1p5xad3VFFXAmc/bMg9hDb3dcnxOIM3YRbErzluE05pAoKuG5G+1jeWNXcUhAHVU9FR4exLJRD4uz3y42OhIgxmbNsl4qYqWFRCAp5Hq+ls1RucVKFp9ahOuU5IHmQe6Khrqan3AWmZAzeYtcMIjomdbb7mIojJarSmd1zoN+mSfpSnsEBIkHsB0QQGkDFw682qKLYT6262HUuVAa4NdshuxCZ10+b+0w3UAGIxRx4awplvnnaOBt0ttEGK1um5bGEgq6Doxs7wl03TpLcF+Eg60IXNEXSZTVKZ01oKDZ61xa4MA/JgmArU18a0TffGNDiz5V0GDM+e2PYDKBWPm8dIFv4cRPvCijO3d25+S+QlZ/JR48UAiBGp3t5WPASR3bH6QyN3XQAawS9auQ/EnPWZ1HW9HSF0pQKSdZ/MOIjVpKbhduuKMzFN4m67JFa5Xpouwbz6aqVyF9p5zAzBN9Qud1EubgZLwyx+r74uDnbmwrUytvjTm3UunrN9YGh/ZsJRyqU6Pa8F16+JuwEaIte+w0vIQSgxQgXUZYvHwiV1X0EsiFni5TLCXrE3exnZQux9HwWbeRBMULBMOHaBfong9gYanyPb+UQOwVqeUN8eRWqAfi2yWv0ko/GvIw+UXu0luuO7PQQzDsLuaA5fYOezI2UT+Vojfmd9boC24wbeqhl0u8QL1ZnF5nm4ivVgNUW14yq48w28SBdLLKq4WeDfcN0f39UL8/M8Gy9LX5/+YyDcMKFQbZ/NPvrxMlu1/NJehuONpfiEayT3gkGzksuxtJLwdczeoNi2o7c0PMUnmsWW5w90h3A9sg9T9TxzgL+v14X3ObWYOZTQ/KnVbTqITIrWxDDgcVGDA9k5ISyFWpV34Wuvm1dWGY+z4m+pSwkoekTomukw5n32nyUTnOzgVHt/yuhCpGIC2kfpkawPPAByf2AD7+J9xfjlb5qjO5DGkq72EqHWhOUjKhXOe7SFkTNSbgx/a96L/yQBCyqwWrh2N1GXs1iacv7rkuwjCkLTwef6NcFEOvH0rnTGWPGIbTGyoZYkqAr/KzrAMwB1OBnTkZhVMg0CVosZwpJQvI8yULRBk6Xgw2s5mkQR7D6BuhDRpsx6xR1wAHSGr9Eb6DSj9h9Wq5YIq1laSF5Ah8bF0TI1gT0tmLsPkiPmwmUlIvDABq+dYttPqeYhFcggrF2UkOIJhH6jIajr34RzITp3cGta11lz74HI8mtZv8TdsmhUK6erV03IRmPWFFfcCWJoVjS6jJ0HAyAmy+VspLuU4Uok2kEyTjcU9oXcNfwkDYpmg5YQkKVa8kN3vyKSEM9hCdRFePO3I5BKxGWTFUKGARq4LXKjz88mFohS0LMRQIrbTW2CiM/GVVj74F72AS+p1cpzKmM+HB6zKbPFnlVa6ymg5EivCkfphW/De3fOz2ANQjrJ9gqeh2tnFozF1k4B7w2Zg4lxUqbG4FcWXVp0/L7RfjFPGITS2pIthGnd7SRlMxcH8ExUHKcR2uVRUolx68ZJdXYKQjBU+hKoW9obxP93iGgfkrDAy7XMADtqOszlkUXl6EEhXxzWICct7lqP9KYB/WV9/z4mxRHfwmObA89tJzfKfaxWTYzvGfvcnKnA7cG4nMcr/QsbrudY1pmUZhHh5gp4UwZ6c/DptmWX5zHD8cnAB+1iJD+d+ne++mgie4hRnqF4TL5i9KPJ3Cu2YbePqw+GQETdiMechFRfLMEe1KZ2x406ZHzPGN0PPJcvWR3lCvg0A6Jk59XU9tftvqDhPnw66nlC6qpDIS8725Z5uWwOMJYYpvTrZSveFhHEHTRypgy4oRt2AA1Nb1eK8tJz3XB+jXPZ3ZtuVSMp7CtN71iCu+IsVluustOMBVhqoovcyeTyvbNpe+jcFV+iGySqUXb4CrKHDfqpzk1xTG24vGv65pm47IBAtrTCsmPJyqywde+ms5iqlXrZdC/XvvpaGM6PozYWDJnbDuZgRCuqU7dWYu4NU3aZHhQLWuMQq52FDDvHtU3qSjBAXEKZycC03Zi2lytZki0Vvt3u7NUyn7O6kRed4yNY+34pbrcw0+bY+fcUgq+udF40yVnhW0uA0+VhOL5c+0fvtzSNDkqNplIss+sCYFMzlDSo0bLa0TOQk4snn1kJY3O81TxakKtSIckoNMnZs980RAwJ9M7eoRjALzkHXpx0kMPKJvx8+Bmii/FbZtap46jO0TSsoAu5PWQ/SteOhBbuPvcXLNIUEI66/ohQykm972gPk3s8l7gthOR9m6xfeV1E/Lqjjrx0FLtq8JxSaSL79cb+hp1fLcvsaa80xDjNyklsEeICsDNlsCmy4FGJ13YlL32hcZNpLI+wuDPGp8daqIveX/uw00XW3F2yHcoInWMfQXLpJMRi8JrC2IBlvsn5calFi3su7h9HYfXm00VPPkqFoASO0vzdb+vqy0BlcftTv4bT6Md89zIgiXfJU+HSbYs7xk6xfHfrt6sYaCJfRP4bmymQk4zqe6qL51uFiwI3ti8Z36hqXBwfJvWkCQ3a6o6xwJI99uUH28GaVEtMaiwkPYmOpbwwf5+nhbQX+sXPIcymsGPkUApgACzTs5NxuWtZ4+OzrlScX8wt2oOhmatmKdjbqKpJx0kvNmDGYEsiQ/gSfx0SrCRNegkfW17jU8Tjr16CI7qk5nuHpxwkcHHRTR08ZW6Q+qKd6ckIOMrWLTynWHzkyqxwLYMi5IpykuGL4fNubwI+BKtYctehjBwjRut5wplQlzkNgJ7kvNGKr8sj6pWaF5Ghge0sOnV+8pgWgpCFiRzWPLZyfe04E4HUTp5taVLYht3cbR0EzVS88ALyeBdz2m63sXx0mXEPDb0RfXIqVyDemAqX/bmX14EfEnX8Iq9TA/6jN3R1oWCq7mlyojkTbRIJNyvsWT7y/26+5/oXNSDgisNzJeuKn40efYHd/1Z5rqW2lCQx1hlXddsUZVIOSWZyziF633lz0ixe+5olpEN8PKDfkKonlFViwui1qrXqHl2eU/aGhmDT3M6Zmloz0eTZk9dDO1hIgNcP+gJp1jqPfQF5CajQTGJB3j4oPf/uvyjL052vHA0UdY03hMTHuDyQTckX7LoPbQmSW1eZWIGOH/QFcchXdX29GnTDtWY4kkOi1B6iY5HlRe73RK72hzlXiHaxlgOu1io0N1VCVmca11KQU8P2T5U06iVfvZTtrW1NlVPQbpapBeL7KnaYEjTZnZSThhkTiheq3ZPiv52drNAVYceidMrncEkq6GggbFC563FUe5yV1qW44pF50roH8tVKd3HCVfW34gzwA7ZwaT4tOdsCLkXz9M09HEraEWDbMz4mCdiReclm2YBUl4pCpxapQrDuaVMdBZdSbcV4//zv9qfj0fGgVxQ9xdFpq/O6eceksO/DufpVwb+zkLZ72Gt77fuYPavYqJrWQaZbCF2T5V1QanlBaaaFuaKVuTE25qD16uadJCt1lUrOYddnd5c68wnXytFgdN0/FxP+Wh2DM+gn/uITJNoNxdKaIuXlw8O9QbUfmutl8fKJLs+08g+bjUxzhtdRXVaI7FU5lKpq7oqV5xcU6UdUj2KXU3R5aXn6lqXuGEVrykDo1ZAuVi7KNqvmICsDUZ7juWjIzkvsET1RV+7gIE7Gol/gOsHPWEUycGSbWcCC3JdYcERT/Dq7+y82C2NN7NrSeWujFPdbVe9qsOTNYyt5/oN1GDcdlAe6tN998jUqe1qlnvYKT26ymqc9g5pl8l/epsqW370Y525KtK4Cmp1Sc5JcN1l5pUDxd+oR0Ub8y03q1nv6G+hrTUktPpG8u3Gku+fd8DLfGVD72ZvNIbXvalyCmEJRl+4jKKVMhMe4PJBNwQvGG1UxjiidQ1zSR9+qrRGe/IEBeQwTsWfqB5oTK3ZqXfG+Uaz1U6d/46nAF0RXA61Trcz3kUId2myfr8SSSW+tfK7+cnRUOkXiMwejgbRDnB80FEqUZDdlrqSXn/9+RnJ5KAV9fZxhCdRPKdzefFajTOrTh0U/VqIqxgFdaRPW8z0Q5OyKBk0I6NuLAJbwsiYIz71OtB1zABi6yQocJ14HEGieIgMbKasHyrug27dNU9jdxnWfw/lhbIzHDx5D05Oj+lpdM7Vmyh4ilI+3cz8JoyWn6bMt69k7cbbY0Gkr+B3i4mFDVQhYxfRqr0v0v5RQHDYZGTp9DISccyXFy5lGbW5+ED/7dm4h4W732aHOgFT6dC6i6w9v/O9FmPCOdKda2/9gvhK3xlydcZ9pca9y5OLATBAuhYzSvt9jkAWCyQnFidH2msoyRvlfWeuxFtkAwvhXHuYIh2PK+CpI81gFchSFE/2MgbNi5tOM5aleChxqwNBLyeAeprn8NpiHCcX3hE0bFFbjFj7uYAgZ8z4bjYxWMdS/L69eoiXZ62KI65aTQRTrCTxkkVgI4ntlqYSO9LgVYCkUuvLQYmdvCmnwCImnpwOEYEaZTducHrGlswMBbNJrfsVEYI/ZXuEIV8wvq4oPz6ttz78fQcZKqK49iXyFC/Y/ssUk9yeTRBeFtZTdHsT3sCpu4cDyBH4PsLP2aLrXs9yqg1dHdUFKy7kEBcnXIyFRXYOz/5z+bpF0pR/0B/Tw4+cQE9fmjBK+OvdhIzJBZuPJ6AFy0TBQSX8HAJRIQkqDlkKBPO4HMG55OgbOhAtk32lBBGMxpBhRz8zM5Ca48XzJBkiPy6kmMdKSEwIIxRmn7W5kEC+f4RROobGLrfuS9iHII9jF2Hu889zkSZgxVn/VbTbwQsGCzxG6Y6mZPBW9l/DNPTpLUGX0XxaUTvdP6GjjRv4ls476MQsUU+vEqwBP1gsN4XBruJUeevdF7XYgIiQ9jlfeH+wkvHfLi0fXzPqX9I7OX4SiA7Lb2Wzgkz8i2befqu9pOAl1vY9g1iJgkyK/rrbpzfjPv9OxdzD7bPaK+TJEbzb3etmVT+RsYfUpTXhmuxvI3u8K7CjE/a8SY5+3+nBGpgqrH4SkYNQAom1ZHW1rQgWb93IBTFpDZnWqda5A1+nwypWt4+jl6c6/uoPu26t7qrh67s5I7bujLlw/VjBa/mojNkVXZq7GRG9nMiqhZxWj9UrqarOv89oCK8uem8LwUHxIBqXQ3DsnX65DPgBRNHiA7UdaCKZxQttzf9jKEh+s7q/MN+972Bmtwa03nM67qoSj8NVKaMlQ7fJXMGG/boiMLmC09RoEQzzihHKuMS5SyF9gFtzvTU9+hgGBSYczTA+bKYtd8/MYAgg3elPusVd+uVQ2bC5Hr9Invu4YJMIZQlWlkrPXFIBg6ZIbQslNaMMOMyGLhn1oE9j7lXpJn57V6Mt5TfnUBmL3z/bYztNDkO2r+QPBl/5vSpv/6hd32eRVOqTb+h4oDz1qLMlrX9Wwf6EGunPjzD1iNN3CfPyfbpL66ryvCmaCN/cP/DN2vVeQpItPTHfmKL2XoX69y/NXYeZM4O8rMqH7bywpA19jo5kzf8R1/Js7rc39WlOyMn529nM3dTjSl7Ibd3nEPmf5uGCh9Hhd3aQnybbWOLEqIJSqWLp0j23ih2bB22UwIT99V5lbwzjBT5gcs+fM7mUFltUSe61L4qppvIJXtwLGJGvbde2MxOHwk+jrnugMSsqT4IyxYxj1yx9XYRZuBKO4t4NlXwRrUtice3siGoxSzmY+t3GCe3ij3X4814s7wWuQvKaJmeqjuZQTnjzhO+vviFTIAcPNiZ/OjhA1x5PipvIOeCV94RIW7p0sSmKWPxqnPVuCd/Wyssv+oXelETpqoV5xhBFvtvW88PKe5TWlEg9OhGvhkr6OL706NbIGEunLTum6fxAcv1FtQdrAyl5epenQREPKUwLWoYRvLfcPjL5dnvLSkJmv/NugLD0oHoRnCay26dXYvcp0jDb7vzcpvrR35JnRkJDZu9k65oqzs7REPQZfeL7ot39b3B6qtjiYWWJUTuszI2ibghjmgc4dqxOQe8cK65wlm5O+eAkpt7+JApuYP6IQJKz2ba3lhh1gydt6znbho9F+xKytmZtYk8D9EFum6k+3TZmOvnKEmLXJ2O21fKPj1DjD8TNAjF3FC8RDEbZAok6CpQheI0JCzQp44hW0TFTkvfnTsf3GgXNTbsJReEQJbKwRZroOD68Z7MQ74jOkd2L8qXEcxzRHEx6Pg7ZgX3a+D1CzoR7nXsDRA5NL/51FPG49Y9S3aSTCYGzoMKhGVmKkkltoQLddsS5lFFMZIbrhkj+iViKPzQ9xIDI/tJE/PKi9FdmbRBUUdLMbLgkQSMZ4O7+7hC+oCS0AxmgyI9lwvAy4o2bV6hQmVnsQZBU0x8lBezDDyw5ivnqS5MyA35sQI5ZDStwF4bewe+xmDVx4sGZIOveI2tyHIDkdLQ2L57wYb9bLWs/tL/tpS09vZLvy46AiQu3qWFerYZv9ZOJXOS/MM3q9UiweFpEeeKYKl2KLeYQI5zq/oLN+LwhlS2FNj0DiHh/QMelxJoSg+Tu9WbDFqqyovrDyFeHRxKQZYA1P99uW+xrXW2mSQ4/kszyDvZBzlc8RCF1euVvkpZHSBiW2j5oAwn+nDsyvZutDIgQpea8yWi7/OsrLHtc1FNcz1W61p99hu/Yz1XEKrvnUdc8CaqHFN0TNX99/cCV5uTEL4f6eKWa4v+Y5yc6g0EM+UtvxXIGekKaFsbND3824XRkt3Dx73HXK9YD1/qKgn4oxgHy94ylrmFExpp2zPSzTtjbaw5u04WhNmDhdhI4DnCInYbbXs0b5/cqes52/MXvQkSjiee7E4B5zm2oq15lHthLQgge6EZUr+S3pu0JEjdlAgxkOBGPm/wp5q6SSkYA0n5PV/fzK6VFZXM84j11zP5QA+wDrzG1NHcWP/4FfJuWWKFXSh6TOwJUUTR5MQ/+vhEyI3a+xjMvVcZ/3CnBsmMORc7W7a37UWnKHqE29lL/lGrNQ+w6y3nPQ4NS9O0xrgoy9ZcCURRadROReeFpzHVyZElnOlt9kwwkbv2m/1puPPNVg7+DgWopU/cp6varAQ+p7yNOePXlH0aV49W1EY4Z62IZC+zPMOIf+Ro7GeS2cfTY5Ctr5IQiNS9rBS3Ki440UZP7EtN1OpEbw+UlIA8SEbOKr3Ves7HPvVB4fq+xVDVH43nLdomxxcuQjkGNYtf8VwiIKYh/6YVEaEYRHJLTV49jZdBnCDbqd6B62Swgig3PbultovbymN76KiuyWSQi/kr5yTxWzpzlt74wjDR6/RgBGBCnYV4BK0kv/NGb605LfZnyzf8RlXgNwee7JHqbImonoplZj4TjIiBaSmpZdDobkHj93kvCYNDlHnyZYiqzJi68p79bwt9JBgnKa8b27FMMnfCZbSTOqXw8r9c2ROqcfH48gbni4uXQnXmzAfz2+dGleD1cM0of9BCxoHGpQqvQkzMmsNpSLHWdYrOhAnnhSlrdw5wrLnvSAEgGddn6kWtkMtLQgF3ZtAivADjH78JLiofmoK1y2iCvg+CqOE8IJI6RQVycZcjj1jzJ13nayCmEZ6E+E9Nq12U3Cc80b9RlsLYJn1swh4aBkcbZUuyo+NjZKq1tK4+OXCWnxQTPDslEuodpk8OP6jFd360zB19H2Q1Jvo1CNY4K+9Og0STqfNXyFRbdlWKV8/yob/xsB8Od6s//Bb53xZPtXHK86zLXPzKM8+2wnLsiet9ki6cQ8UsQH0ADnjykwhBciuW3rFPHOdxGAtFdAKl78FxaK4MoYfhhBxYh4mnHuUbSUB0/Ov0Fiu37psfauk5vSHUkandvI7B0a5HErxcaRfhlHbbytWF4r0N8MhDIYJ6C5KFwiIbJwlAfcPBk+u5R/AzRwKCamnh5DIwGT2wHZI6VmckVwouL7PoqWpSeyxW59SC/yyjUKndyTJbbwWDY72v9RK/HqG918eUVnerbHcSFTEbVb01IzgaKSTDEm9cmcyWh9366m6r35bs96eTnssrHqkg9ZGReWekxEVmLANdJPLxmqSrgYxwn7JSi5lJpG9egQErA8odUaRpFl99PlXkqVnZfLPk3EMkWm+KxXp4hhEokXCJW7cUvffXuZSBvhAz7tU6teR/bLN6m/r9U8+g9wnJ+nMagn/gocMZN5LheTtahLvyqoCxI2wh/CQNRLtlXqYMsKTZLs4+zOd2+pAnRuaiudzNGnu/GzYd8YHfdFyI+xEVDemWBg/FwJFKKDrqa8nxypfPYBls/UOERl/e+gLCo530e5/AEZ742sdinATgdVq3V9QElfMxYiGYCc11c7ibKgvOc5ZlFeJk1GCHme2j8ECY0y4HVy5ELq9n075yIpxMibjTNZbU0g8ZivuO0wTeMWTuDpKXGz0JTl+XtOeo+eHgrs8A4fOdJoLmwhOUviGH4SiVoSx0JB+8QCXa3tHNup7n1IS41CFKmUM5pk0Tb40T0JlKXyqt34ZJAOIClafVPD3dN/ScbKuywwVGOTNpL2J/tAEpf+eABVmf/AVL/POPiojoOEG3xNQfOhwdPtPNc858bQcRpY/BD3k2KXkKcUfFLaa5cOIVjZsY7oKFeQukCQnZfxhq8JG5gggM3ViXYw5G7hxD9Zetl3Gv83SZ/I6mteZwWA/eK7T7tVjwcOk3KN43kEtoOJm8y0ZYJhAp5JjytKL9nTyJnRhtu7f0r6/CAPlcTTI0f1AjT4LYySwnq4htoL2Q4letsYx169Y9gDV9FtcUTL9JekHzyPDrt901gZeHxGnX+PW5AV4zhqmEvu0R/uypyGKxg79CVlQtDLBgTFBHtlnN5uKoq8XmxnCKqfofk+fR15AxoJYTb9kwB47LAoqOfNoiudlvA/qw+rxVNqemwRFLeEXS1w8CT8uCB/WJJagIy/+ItRw5f5uWQDA9G6M7j6Y9eEfnRkjBBYfEeGu1BxsvW7Z1aEaA23Ddf1GmdkrRfSF5XmBUqtyczHu2cECPt/t4sNhs9RPtdl8AY8NDg8XruGIzBq+AJr8YLSpgVmWg/RIfVkUySAMMg0MhCiY+LbZ/GqCUPCxZX1gKJiEUg5Vm2esdN+Bg6+NTNLfoxQRInvIbwLeJkjxLHMRhUT2SyDgGpzE3GOcR+hFwrMryPcWnaneZOltabNRBvfczyHRHGI7eIj786UsZSrtXERB8F2HRPgfW2AeE/4bO6t7V5tDLlu/26Asm4Uha034ua+8/JWijIonD3ZPUSg6ZNvVPVTr7VeFHoPoOQYbkROoMdtlSIfgSmMCdAjbGjUOynFauoHkDzh9+fwilkubbVMa9Yt9zYJcftstm6r3iskPQi+DnaA6CGWN7Qvglkj+MGsCLbi02PDo1a6k9ZaImYB522Bf4cSsI+WWHUxMp/1sHhCjn2HWrG44UsDopHZhZny36i98cDuFqg/LV6SlRn2t+zTqiwpedcsSTkfpRcUk0HWSHoRhGnBa7I0hAHiz4toBrL36uHcbP1OQEtUmY/nMIoso+cRMVgX+qJHD/i5mVklj3TglUNS0Ge9J2GQps+s0bQV8DIU6yyBCRYrF9jbV4M9ST/Flite69lF0AKou1oz7pGXWhVr4EldTTXHcABXFJu2T0daAEZ1wIdVBIA4IjpNLtaCXizeYLKr7NtEwuE9yORh8kIgYA1mKPTI7jEPwpzblmfJSZUb5hnCUfPUdJytvf4OYPWNbjgSBZyaYUAwArRx04fLKXS4uk+Wk6qwPhUfrCs96OfkxKLvErnSDBIsu2jnxTZbx3I0C4jpmmt05R9Zq662xd9yxbobE5CXyjTTXCaxQIhM4T3pkuGl6oj9ATeUnqJIhAneHVBkFQvDye/fO5OjP7zXIXjh/gD44KN2SHQEOjqM4l9Kz0v+yMcPAxN6yqFu5D3gZSeBwp/DfEBWELo/pJlfYHll/12mRmeUNlpXYmXdUby/95Wv3x8eo6nbos9WMByteb/TTUXkbvtyWUlnm71NDtIJCe/xB9tZVzxZSVETVtavcCHxDfZ1viIdgVOzEszQceY3TIq6HcKvUfZhVCTsEjwpi9ug0MXmdkYEb45BtBwL0ILU75r9E/j2ESuzc6IEMx/Dw/d3CihWsB+f0J4jk5JI2pMnGLOlfo9GNPkkShacgI1oyvm+HcabWpTKUFicUpPKj0C0kd8K+exdGCYf4unM0NmtE4qdshz4No5R9zrXruk8LO+tHydHTQfX3zp/ZFRdA+mjMJQ+QXm9TRW6BZEfmYmjgeSLcBjT2B0blC1vNqtlTu3kT/7NVj2hcfQon1sEFNNM400IPE2CRl+tvd3Qht+n2qyBwuXKE2bRkBTSaMGfIIk37Gdor5jwhNBljRxuHm6O9MTapklnrD3hY1jT/OBbn0yCXMxBEJjmk01r5lURtwIoTN2CAd0K+SWh4gaV5ifQauM4FrYzMoO0jPPuqFJxAsK6/DUe1ZlCoakytmRKUwtNHR6FPn1LB8hZ7JQ5FJENek9nnWVaN1FoJuihirMHZ1qg6v1H6VqJ5D5TxqXffelWM3IidQr2M3bnXEEEC2iMyJ3t8b3GegrqfcW6toswf1rGKIGSQsoi1+UaBUG3YrYqvkQR9AWp7zDw4CWJDb/uo8gdbQUIqnDFeYnZ47oWaNuOSeDexs6YBFT6GQOZ7TfzRNku9VgYjiMT0bl29NTyjqNhvGSS4LMyzUkjVrtqmJhL96ojteja5tDyUFI/uut7V+2bymb2epuzSoxeThA3bOUYEXYOgyTa3psuqwe9ty7Wv9jEwdwIp1JzZVLK8dD8rmqH7PzYqGNPhVvS6qR5817X/yhRuxvoiNCDTH8k30zIB0d1j+SWg5T8uvM17Hqt3WrcyPXt5TSuj+bmb2dG6kSvdLQeq+Q+eNeb2JEt9cXF89Nqlhk0OtJ59Ir7VUTkpR1Uz+3sOZnFzFcEBbogqr5H4m7HhY54wpf9IQNrWbBkKMu6zRQ/60qBGWXRANzUqDXHvsAqt6GTGBKQop6oz6+936zOAEFznAKaGx+FwHdh4VN2rFb4LaeneXjipFrdBOmwpuPQamm9v0AONGrHKACXQdDb+R7CGtgSo/kc6Hqye/gfVwvsUjYHz2NrTyMbGL1MDGwUZwEs+zv267dGvssmWd1IVeNldoCG5KJSdzX2GvD65oVb5GgFubgoZQugQYf7LbH4ikLFSV8C9L+oVi6biZnT3NI7JEtOaOZRVO9sz+iFTCxm6lRGFWgmo72MjylFTrT/BOqvfcYjeWIEkxkSVc028OVIj3751E2OFXrAuxSLcJqPl5cMLEloSv4mjBwa7Oz7xhVoAGzz+MbzXxrYs1MoRoyaT5m8SjjEYctaHz4hO9DkJm8ZMVG2c+0og5bu/Es0W8vGl3d+sgOKL5elqZNq4o1VI20lVvGwWyU64+6yXPyZFc/7fxBBt7dJRCynM4f2ECC+3cJm9P4PMAaHh296Noj+W5lGxCbwylJrHfwRyA7g8PGDxw2H9PH2DHZO9LDnjJw8Hjj03xr9lunzwZuN/OxggxJlaLGgvv+kiqBYHMv1ANWFgA0fqrwel+ffMYTHeJ1BaErDLQ7Uk9YDAzdoMqq+E3A+af7em3ejVzExOS4RuvP6b8QjH/aVU/ZxI/zqsO5i+ysW1foh/4U6GbGxhWVxx+Osou/m/NLViNj43LopnSU0IwrAL4oyfE7KWe5EqH/z02eL7Mqa/DQdJeOWL3QLw4RJBqD5B2j11wJmlYWWVo5/juGIhlUYdp4bNhP8hOXSJSNJ9vSKKUzcB62t6FKGTVGd8DhaJIiH+fbfwhnwLVYror6PyrRMq8SU0ZBcVJSnLz0lLRAZzR7tpP6v+tSFXlarrqo3/Jf0b9AVYe/QleK1uzI+Fgf79df/1+RNn2fIIIjgbynocPgJMLYrQ9NeZH73+KoPes1/Zf1FMWDot3vz5+ShMRLQ3oa9Y6nIyurVXV8ErdeuoOfF6gR9XvWcv4YhdTjZJGUEOVwnra8TyeR6OHu4jJwN7oHsk2s9rRJDT1oFUTuoeu/RXz6tK2FOtw53gn5fF5dWgjVhD7qK3Sfh731o5OmNDjDz8PaelN73444fKrxIYESCHZP0hGwnbvzjARmGlMkZ1HIYI/IV/Bj3q4k9s5R6U4K3TJ4SV3Q2Xq0rczQFPn5b+vpnDI8ZBNfIMDHL8w1xcKKUW6g2eEGLD8/+3pCkP2UIKlSQQTMljMjwMiZd9zIOhPuUtWNNJWERZHKbfRAWXVGj2/tOACjdpKMHOq5LMow4r4Kl/WmakiJiU7Bq7NsE/A2C0jpZYE44w+hQeFViSOjuDOUhxIeYLDsE7yfur/1KrvXbPx0a/lhhRu6Mo3GHH2fyItNNl2B5V8wNdUjBh9coVdf7rNhdACcOGbuKxxrQ15jeUUmZejdwsujOrcyVUchno1EqNkmQbjhiY+ifHAX8MEcdml+92pI0QtmgCVv9xnmV261MrpNrcsb+XhX5rOItZGtm1QJw9KwI9yeUVglkcmQ1j43IQhELGth8nXQMNNkhWLglZyc6lV637B0J/Iw20IZsU4ezqBHzkFlfFskwYDfoLFhvHHxILt0LnbtzIp5U39iXGCe4OCE8ADwzk3DfCy6/NJ9805fE8MTt+WKJ73EpcPRQb5A13f444TXLeb3ElGN2cF4GXBWYiCRTmil8QLJGmvvAJolt0EClH+sKHP6x2l//PQ/LoqH2+3digIv+B850T+j2JnUNPMDwn+3raEUPYJoIxqYoxd6Q/+kU9oEuqzCy3MYJestIPK9eSI71L+uzX+smsh9Qxfj4PaHlbNR+LuBMKh6Nk5scR7AORsdMYANFVb8hxxBqEtvs2pTOiIi3A+BkOjipP4efKEPvV8kZlSEW/wjIue1aU6O517d+D/Rd9bJOzDhdXiEXMxVrXlr1BjE190n9P8ZBd0P7YLMmx8YfGSK58xCHetj/4A/uHQ59pyRUyiRW1PUCe49xYIYRTHYNLp1azzlCqo9FQEdBPJ4MRSOr8Y1SoGXlS/w71eKtrpcMRsuusrtIGFJQF2UCDDoG9YNXdfcNPg9hQE1rbOfzwVMHItTJiPDHtWivrHu9+SXmtGzS50yFU+NzXH3cNQ3Fd51ffAD1PEozTV6waGCbm2N1niJqhANmCwtGGP7M7NexfGsCaevjCX7qF9mVo/8Kid4Nktp5JyUgUF2qfzM4/HzGidSaPcVcVECPiamPwmp9TDRht/IeeuHDco6eiH3RR5+8JIPlk54CwePErrMLmz37F8dnDOCKYHjTvqZhHMviV8gf4xsB8OXtlmxkjvWipvyFun7DYz7pHUFUT1V08Ik0P7T2pBRfBZtrjRjISg+aA4geBk7kJOlMQGP0UXLL/ewEwVtszsZxzBh40JJE5YrGwUF9IJEZ+PrKwuCW3aWCJKbOrBgGf/InBwIQtJXVlyi1aFFOr7+BWnQLRZLOCZhxLjktUnMrc+xOhzBp9/vLjRRk72irEzIX6ayzs5WPGzUnaLVyk5fpyVMeAL6mDnz0uxCf3WIeGOC8HHw3rrGRvzC/jpAIRYrlB5HwzzVm4cP5ZS840hKxvDLAdMg8vi+gq06kuEvLsJ33LGuK2CH7ElXWp3TYAl44DEpcVwyvM1XIwNqPTSx7jFIbbozwCZDdTt3Yf4fQuaOp0y5oIWlD2IGlu4W98eA9OJupj9Xng4e/z15QkOaQsJEb2IVhwYjE+7IvUylNBlkl5/WsUGJkf7wAHQ+lHHlpNQF2N+NE9DjxhqSAW9avqeokq09wpzezXqhnXjq9qQbSndHgse5+DD5n6AfkQl6G+9q9KlmZGHoH7hRm8P99FtK+v7Geq8xH89HbzSTOt+ARod2EI/XwBUTT51d2Ve8Vv/2QbTsfpodnY+Z9K0ribE6O2Yj/7CATYrjLICB7CfY4S3vkFW5EXdBYT7u/j8xl9TwHf8o7k0vZIKAhxx7c0geuDfR7XA6y9UJWdtxK/q0COmae0xESytE0Z8bOyCCTwSZZKeKPgB/I5Pp7/jD7eissnJxs5uVoBAGgmeEH5NgrcwOgE9psf2NAK6nv80yme/PXxB73wYkUy/E6BzMBcabtm5geDEwxx3nj44ZZvIk31gGvDMpuhhXfMqsYBSsZc756+0Dr1X7+VM8FNl5Y43M1mkpTSNdmVfI+4rQjggWctKmXJ+/qYVwDm7auczW9Fr4mR9Z6/L0MiU2v+1LqvpbvyrGOplAPDSgR20G6tYcTruTH6pq0XQ2ciCihvPalIM20Lb6EunKBvk60Q2CzKH7NSVFJtIw/ABOcbXdYtCIZKOm4JfN17VIDIBC3hoDHxOK8HkCdMMoSGCv7YC6z6t0MyFsXfiLUOvdpV9kP5Mq7OnDgfBiqyL+y45p0D0smefOa1vq8qN5/S+07KGlwrVi5BVTne5IG8DC+T2MVTUj5W2Z+S6WS3rzrh5h1GOk7V7Mebb8F13u36AtbjfkRgnwyLhbYj06+7vOEPcgP0Q8i165B+As3+UDlZwpmiSd2FkiowEKpmz8raJOfTfiLv2OySS/UuCdkmCfBbLsTfKwpim/82hrFhnoZeL2CftlLZQYdUe3uzWr/K/viZvyet9ethHqrVMazOLEr6gq5JNrcS0tC+NsPdMJKn3ucEp8PZiKRDxcVCCz2mOX8OTxRAPcYR/YoljwNyQYEF0MlFPaz/s663Etj5T+5pjKhiNykM7xMpt/R0hg2tenQ0SvYz0D+G+soyecCVVoGRyFCYIHnDZ4StCr9jWYN2ebSXujv9CmkwTbmR55LJGdMOzpZdekvl+E4kHpmAeY0NL+2GFl5v8lU3MHmUnOT7/T4QL4yq6fAUDWoKXfIqo9rhl0twtUQRlHmMrlEpV6sBKMx+7e48p5AzL02yW2c55V4kia6iqirZKzf3cKlYCWdIv8CwWh4Co8S0Gz28pEte3s7hIC5+b5FXSRs6CTOryrvGxFMCNXh2DF7vkPbN18/e/c1Ct7ej53hrej0UGi6DHGR2cwPBO+D85T3g8zIbOnuv4cgn5hwFdU8ubTkrfE/7YY6d/79DxFf/Zf74HhxCcq/j93UdcOukRp7LvjAoy4ho5+dRxc5L1DB7cQzbJhCpFIppJJHmgR2qN6mimfo+Z+2Pmy7BYg9i/dzxrs+P40TbJKh/2hUUsWS/eAfbOo2CXfO/DxeLXLFgm+AkV4BhqgUT0NXld6cMDr4X1Kxk/Yj3i1BQFnb90vnahIXA3dfk9V/j/DCC8JMg+P/vJcln60/STRwTX9G+oS47YIEF0ToXbs4tuiIJgniHhN/hxU7WSh/5W7I4qZNosBhdKYQaPXLares5dwi2+henwvIT3GVGVpudoV74UAnMr17S65CvcabdftdfjUIqUb7Faf2qbQ9k1yG0B3DpvKxTZDH2G/kYhGNjOIz1JDsZ3B9kweKAw+9o2lELp+ZH417gLX7J6mCrdO9BIfjTyseE1d9/g6G0ZPL0dtDZUVXjUtea9OeoF0NGt1FvGFh9Bun+NAMGWN9Fz/7FpL/b4wj7vmidYeZu1bgIeojSvXBreNBW3fBNcwERlyteCuilgEprAzftWqaq6yUfv6EKHy0xMDfcHqEba75+OTfqTiZq8Y2DYrxFT9apjFu42cOPFZrrWr/kTJXKuSOZi2LW6qB6Ti1T9SJLUpGtxVS1N/Jy2Vl1IwH9Lk64ZJqCKdGIn56MhA46tODZkdaDEMKch7YIycRk9/1jEZKuriai4omemVOfU7Zocgn0DNvKNrYKeND9x29+fm9E+4ZoyZe8qw2LkzUmHFuJOpss7W2xJEwHydlakFWsFhwlSOh+TdNPwRSa083hVbv0JODqNJahjT6cj3uczc5Xk0J9WC7a2QBWMwgZLL66rbMmOLZ7oiWINJ+tttSKi2rqMAgeexiaHi6Pqe46fM+j4aoN5T6WpNPUp6U+4hdeDfD9LR8kAW2dtpGPAet9KyONHN+pjL8vAWO4ofSkoe6mYvcsOxgR644RYO//2qJKSm4GbB0O3dDMW+sbuYqSLGAI2AZeGdgrrYM4Ohbbs49RN+Wxv6HRtu9k/lpbbq5zv5TVi35dfTPIXT9+RbnddtXsP2XD7W6hMp3wunRlhYz3iJyhW6X64Pte9XMjXeDajoIwyKUk0yViSrdz2MtFy/kq0M9g0jJaHcIPPBfHnbBFLtHubjQ0AAB4l3XfdgjQrAwIKEyYPiyHRUasZs2dvgc4rnqHMpS36ap5Mmt8fDlOp1h1FE4jMLjlPW4jXGzpXzh9nuQ4M/3caiL4GAwSKCLu812jjZ/fioGUlj1aThjaMnuPOiPdd3a585LAjBNNRn56Z7ZyD1vDhSM7IT5/52TsaEpIa/G8D+ug20DtvNDdg86oU8/jonX/K6HmSuaO5CxKwNsDW6XctRsfIpndpL2cduX2yTyh0XqQmGzgknfWX6CPcfcU4t93WgaupTX2yCdngfQ9kNsoj72zipR0wt8EqRfTVJklhErFKrcS64++iOYK2qXDYZ4/hnFDTrrVzTLnpBzO96i5Jfab1NTm9JfyuZc7Cdx8rM2jY37FKU2uxu5SAOB0/3G0ibB9aNkRwwU6VeLh8Xg6FJPWoxqTBdlwBDq+2TR639Xhc2aUalK1AeIagUyjUV5w3T8r4kdloIlQPMRe8JCTjvp7NcW6dSVkSBbFNkkY4e9kgxfq5opOB1vSbGHyHClp1Udvkkmiqrz7D1l4KLKPr5iOab5KbHLu3ScC0IPXtR2agxd4okwxMxwwtdo9gfRV81aX47zKk6+9LtdcYOq9EYrPo9x0G8vWHFamGKvfG8AT8wtgKiYeqcOx6HPRvDpXIqt9u9erKtvYrljEngdtY14wh+jcpMuZvs93mpKwZZOL/nhe//fHC+s2TkMyuO+H2L42liVhFvEYw7ShiznByZelUZ6Ogeg+JiMqTVe3o+zTvN0bISUFOkJKDeC1CD9tW5KOdYNQw3yvQ9JkJQxvNnCaNewqAldUH1RjKKoZzOG6ZfGD4Xh3FiygHPHd87oYwnI8EYPC4zWy5EW0MD5fGKfu2Hk4llbzPjMefER8PINPLwrVmrk+azhluk96E+VoimwftTPCqH7V6HVDsHHpY/hk0EVgVKLy+IA6ESpFWPdNE7F2I5/RMOb8b6jNKfM7R0O0Myhc2tXuulDl9dLb6jgX89Xd2rEh2hFKU6/cnJySfEC//Vdx/V5MmLhhhjczZOoMGCc4y8j2d4DFAnrEb/bK/Ou+Tk40zWkO3OA9ISWWDkCr0efsMI6J45XvnnKZS2tIkVWdpoQdOwvJJSP35eURKEQWeVs1Up3SxV9Ha97+H7EdFzDq66x3Jijvbu0W6gJWaVCbaSg5uj46TKQQNm0yTgFyCxSVUaeqjVKMgnEqS1sZWmzqAXPHMIHn0ohNKBubg9PaOMjfVneMyyw6uBotFC69CSzleVlie75BDEDDwl5AvLgGUbfIMh89PBLnlvuzeaywVfQnSHV0bDTKbpD2g9NxX+rskTxzKhSw5aqx88G6/ejhMcCuIfPef91JhPlvLOdBBX0ZEHD1tn17JqE1fBL8HSbx5yE/pAarhxzWRw5eWKuryYqUAuWF1asuJvyJrPdWD6ueWBRnnt2fmJt9rP6vXaA965Eikm73Nz4CuCEJRz2Cx/W6U9imwQxggLiHS5N/Tm/m8QY338ZpnqviYjWE2mGUE/L1ZEVP+LIV+vvljQ4R4kI5q2BTVcuYJCcXl04EPwnNLdLoHu04Mf4HTfhQOOuCvDQURes5PU9+KM+XI3WJxYu/PQX3MQl8NWZJTF7n6V6/8gXsRmX+G/1hR6kEP5YQVAkDKwcwXcocAR/5T4cTH4e/IAPXYQJHEJVsIGCnTI63cH5kdJXOEIg5T07PnHLJMHCcr3J615/rXfdewEEYJz3XhZsZN/GGw7CGryQOD5/3U27djAgm0sLo0glB7AYBzwGaJc0h0AANC8t4xgbdufz7NIUodC9TofRoCOMFCiSwVyNdsIAekyQ+BkE3UMYSR0fOeEXGU8N4rNHvc5p5O7JQ03SjVlL7NyP+myRZrVDeSxlVp07PaMy4cxjiq1wZNPjcbAuiFmMJSdAVq5K/KEgjqMpnOan/R4htm+4O2D/rMuX7Biden3Sf48gOnI3N/YiK1x1PXkgF3f7d9t3OvP/RMxCVve6nZv1ucOPwfHr2Li6P9l9gbe+hauPGktL8L8zUIb3Xn07WCGnvDEcyrLpA2prPjJ+BrGLqdk6tHddbQGV9X/Uyp9OzArfmdHHj0/sXef+k0oSz90pbshsXWlDL6cOa1X/D/HwKU1G5ruTHzCyyb/UpHyFPI4a8AKrOb002VunzTESDaY3CeVO4ZwojNSvqbV2UMg80FbUXVzGBwGt7PS00IptiqUKDe6QUDLkHDKBywEz5S8jrMsfJt8fGsaosGVCBPLJE4vSXRApUN9thfFO/pidjtx7mAY5e1Chceu5l4B8PzTMJnz2lbBZKGrRl/pjIyVh9vhg9ofq73pdJudrJuqZcZFL39mtL00DYJxovNgugP7kqdoXIkp11HyXs7fS3l23c80O9ZDt0Ew1UERaRl0ZTZY75IalIL9PQJW7hpXjn4uGXsdYv767JNJvBXf3ot/tUJhlOpsy583xIhy1C5gebemCcple2ZJIDCrjjPygiVpxayYWY+q5OTIicUE5XG54SbzYIq6fFAy2OrCXUmq/txWXey2Ugk6LUNVzdp+0AOXpfqG7LusBVy/CEHadgR929sw6TOOMDpx63t4E/jaI9/n4s90uOB5r/2s9bpVxYSGaN4mfaX6jmO127Z5ow5shdHNcD+a5gmMuY3GM6tXJTs4JCqAG7vdeIrEs2I9Y1XpCFsMto0TcJwESzw+ucXogDp5E9mZnWisX8zGSBkGtD+D4PWXa3ovuEJFpoVPHhEletdc46/8qBI8GCZ7UfVrIe8LB+6neqqDEj0CmaNCj+I7hOCzCY9Ev81OJFmgAZIqwzAm8j3aHS7I/vEd2yNLVUra7+cZDYPgi4ey69evU5L+2eFaw6vbVvXrbPZJvLtJ1vVwVBlnLHTvvHWsVEnK+YkmdDG9J3NMAUeYJrSqX8vhYmvV/SaM8VnxJGqYm6rTWLRmCkunFMXPSC/kwM3iODLSrjzPqWMKrojiwaVhKLtzDkoMAABwa59v9rs39l+WcnRWZXc2yFRDO4rmEudymLAS3GfxpK8z/tUKpS2Bry84eoerr/1QPllFaCsA1XM/FzCeD7YdDD+HAh0jJfSC+4vZXGEnCYffAjYawFA4NKxmEJhCff10uUG3fuJl12JYAVY3ctVgtvPdojlcCYoIT1AlfXz2aKts/+LZy9wz0ez/rBLqdS4I6rxhqMpxoi0Vl4pFcn1EHlVNkOS+crA160p69ByPYnpXG7fyKF9P4kgdLuJOcEj5qaczVkdGfbtu9tuY4gnD1nWpb890mBHiCf3WtRf0ZBKex7mAv7UTrYZh7eDJme1ErfqQgubNDzTf5C2OXbSwdXx/aFTSDYS1fM6tT6tclepq82AmrEqFdZTK+d+KUcWKd7SrJnTihGmv/II6vxQESZWW8WRB0IIvT+kAfnn6R8HJ0DBuHYN12RGGvqKSZVdmCO6Haa60NBOWgvvJlRLpcaCV+eq3ja22e/Su/5ZyTlD5KPnBtF7d14vdD8/MzWC4XZ2N4KWRchuUG/RAgWBV2nYbpsRZZdQDqdAMwAOsvX8LBm6vBD17UqArbGmkHNxtPUictHVst8tHNZyQoD1IIDd/AGcj6JuwS4NPXvYDqaWIQ/Q1dKHqE/lNJuZ/SYQwHi6tO2FiQ4GQUAsEFavnJRhCtsp1Sat0QTk1JYm2eqbcDsAMjfNmhj3udsg6qpAukBEJI5U2v8KbBfyvITx80wASMMwbp3noMAPf75Mqu8xEw/kxKIdUpQoFBaBqfHsstKTzdk6qyYwXhrjIB7nCRvXLhhv8Ll+ndjQWjHOVdGGBi0VuMt3gaSloC7y3oqLeBnE9I41iYLF/Ma1TIYvhFSTNTQ6NHLvPcrlQLJ7THLA+GHaCtqPrVpVgqoiD0cebz2FwZ/1b90zoMc/gEL37DccHoWuky9JB4vciLrUMlDln2dDLarwoy2mJetkjiatevXTZB9+K09MqfnlusNEy3eSCt4GInODCl4vyA+2L52TMN6B6x6ouAk+dCOtB7aDgeOr98/GyTJLXd74jE4wdVFtBdzF7bkAL+TuZYiqtg/H0vbZlOebtEB91InMCICcRiHc+ZJTbTOfpVJ8KQMIZnqPCEN14DmKysTHm5Hga32nalfxVlr+dYcJC9fls2mTClPBuJXl/6mj7ba7HvlQ7H2oD7WCrxwY/sIQUxrrle0O/3QOp8T0M5Rlg6EQYxcKsNybBd2WRjtyKkL0GyuvXHBuws0XUssh1aznzSFT1OPaLAI9jJdP5i7ytsLyjTGE0hor0duoaisqOkFUR3DIbYzcZ/EiZE0G3ywgblzdvnQ6DpeFKvJ3yYjj7P2L4/NlePx5smXFTpb9nG8Ft21CdfUcsazzZdexXNPRCPADX3Jx+uVK2750YiUXCxMfrtymxgv4uSS49H/ak8PLv/FW3NORIizQk4/fw/eUHdCyhVf2+6ioGCvu8y7Nc4uy8L9QOdv44wmPBIPsd0litHu8g0Dud5KGdZ/VQVJW2UUHODc4ukNpQDtYbaHRnWdGBp3A46Roc0Ss9I5Wsb8vaKg5BD++244FWiTzf67BARUsfDv3xhUJD892YV+G9NlYoualsoJG0XSvCQaBO+ITYf1NmRGOcAQPJO118e6qH+djc4Ij87O9xNk9LKUkr5cGHonYVUqSZzVLKtY2j7ud4UJikwN+iJ2TrPIR0FNI2s/bd5jy5517ji8H9WN2vd0KlADzVNvJIynXxw9QYVSbL6hvkgXavFGzgswPQx+66g2oQCJUMtz1uUnrG++ODCfmrT/nQd3eDs1X2a7PpADWFbPxiS4UzocUzrrkMOWQKfdd2rCneIU4Crz3omicn+F63/cb8pXektvp8rUJYtlmmxYcw3+FSRqfQnKNS7UUohnQRWXeDP+gNhMz2jd6Wy6gxjhV1fG/VMzT+TBfeJg4Kb9WnwEufepymf+3H51u7TYRE/pIwwY7jJjI/P0tdQquMM2TXvKy8Zg1F8ja4jHhsXWO/Is7tLX3HJwYROZ4FHR0QU9IeBprwGIOONeqGM7uU9hgsmS/t2fuexuXUU8lQ1vgFtkPkvfBPTqXz9ORp2/DEcA+91WYL7XAfq49Yqb0TpBrZ6QMrm/kn3pGaM8KnU7es1errt2TCiRb6acU9MQRSGheVZv1RxOnkDEplhxnYVgtkTEXwYotC2/il9cly4fIWr7QJ9wYTrFs+FKWOq3Pms0Syj3gXVUQr+u5HV8C5crWxQlJxHd1BO0W/k04gbhxZV0fQbpM/2G6QrC6YeCMLzaGkjwbiZEUbVOMyy6kKjQonmJtes7VP2iRFKRJImZeYReoouDYJQ+h8sYGvuD2hD74jQCn+pjr7YRarjyQoq7qElH1aAeKqZu2HAX7Gah3s0/+jtZ0BJo60+e+H9SETUmRrVhIKBSWxGAPqYmJTF+1kIwAYuliPTarGoobYAU/j3qyc0/12j8y2hyplWod5xziVxMALWo5VWurEVM3npkbvoAlpwpYZrxX9CnO3SQQgJzDTZJzcIV9AkIY+q2Tg7Hq/qLMG1+rALzoON4knQn2F32aiWtzPa7Y1ZJxZTcIFDLxTxOAIMXIo2MbxvICWGZYn0EB/DRMnX+Yj5+w2oKhef4sVhuVZeBI0OBIUcci/GS/cm/UocFSJ4PAAF4WocLHZ3g9wEzGEcWLof3FqI5J99OE4U14l0sV9ZRkP5n5Ytm9sOJlmpyzssSbAiE7XPboVCfz7kFZM/ct51736aQQIn9mO8/JCFwPb9xCOrsiVuOwkDlpZ33Xic+VmyvS6Y2JgkTuRszfuh+ghXir3H5QKO3BVwckXkfK9INb9+kZyJvzQQIO7w12yRKSrnA5AYhUaR98jaogt4rCwPP/26L1lZtGAH5wDLhOjLxH3+8Wqlr1/+3nZ8zOASXo4d3C3z0pRkkXVOYX1WtSxCOHzC93mst/T3TRutYkecIoe+N7heIOQZV6llaKR+grIJK+19ig/2DaqjPAKDl5306gqhyrO/AbCHZY/2TlySUxyAZsg/nqEERcCtR2dqFs+MElKKzmgT+WSy3iRPAo/rZgYg92GZyupXxSTmHO+MbjbtRDwEqnFJtvHq2NypxLwjQsodB3gp5pwhnWp1UZSrT4UIuMoaqId9MXFi1AWHPjLguG1RFKLC//8F5uFcKOGvjuw4GXU0/DekbU3vPAa2oukopd77WWB8uKATHCKX8aChHN//P0ZYAExpL5IkQQBYENpJpY6DojsjP9zm6LK/Cr++5hEkKNdfNsJCCoLxfBk9C7VkmCJ6pfdfRv/GojaKufUlLUt0WPDiGbZV+6i3t+XzVApwd35pEzBQTUuOee0Nrt5SmCUABeO4Cbu2kochn0BW0LQEHLWgWWYgaBfIzr8AOuCW8FwuCZ92ec/bpiTbsy4vW8msMdZiw4+Ox4OLxeeG+fMD2sPcGgpmDeIwo35HrQ3KfR+Sbru7VrzVx9LMrXgepr49O10di5wTBzrVRLC945TzmJW5X9G320cmpGsRe586+kevvvnGxg8uGdvYygvLRwpkcEg6jeVexsXhKs4UeyxDD40WviMEBNeb6QnzB93yKK6C2aLpd+SwXuCXrx2gW7PwlazeKqkpP/E+4/++vkTZqKf8Zs3/BaOYCGmTIN3THYsT/pobOUPyifFJSLZivnO41QxhkYOmusT9/1NVpNmP9oNg+GiKWyNq3JsCps7dfxRnMHPpVyy6IEYEeEJc2xvYp9m9NvXDjXJ32yGlEI/FgX8xIsS1XJED3gb3mhKux/lj0P89opHgyjVeZk+VC162eHHuIAfaLGQiOtIype+CO4//lBQHlks/1BdeIZklHKCKzglLik2hHrj0vtA6lU3L7zQIJ98w/MyZTlllvMbT+3gxshX9ZiVfIzg5EY10KV9pJpGwUNJc5mzzBBLPptls8gv+faagvinmtP11VsSs5kzjdSqeVVuWfzrIkAuyq+sWOhiqfopC0J1bfxhLM9loogko18Y8wHhCH4my+69XzTJPyZT9/y4MaZaJM1kaiLayOIilBkAe/+7uEvfKXxw1gT2E7R5/eCMbn9uPYsmPAHlCysUNr9t3DYb0UpgSrO0KDfisWHyGo5h0XdhyxYNCa4jicvmhmfROHTDRFhMU3S20BF5BOKjtMawsEYMonTS2218rxrQrI4zJijZeUB1WpCmwGHzcOvArtmjknXvcM10K3DFx3jbUjq9NAx3RBoKu3PKvyNgFzdjmZ5XqeRM1WiRRpqfu66ldhL/orzxEZZz3385j+LhCAWIb9jX1ilieckPFuR2bzp5LlR2tpbjDpY2K6VFXCdLTzYUcj7r/B3q0o29CL8NJjfDO8bmCZhY59WP3bqi4b6jh27KYQ5uCYMdgdT7RExFDu/tEKEN+42a1wsaqRCLZeTBKwCq9nNZ1T/vhQ2wlOvD8SfxpxxpjeBkpnVRhbTYBQDyuxAnvEuB+rEepdXzj2qKBbsBBfhw6sb149t6Ix+UyS1AHnxP0IfgMZy5Ce6Ls70BHuDTGp3kC1enqIr1a2HrY9t6Cg65ONnvkz1GFSxuHQ9ZeDvrv6F9Oejz8OlVt0BEz3mvSAW2dWS5ntsH2V1W25gj4KHPgtEmlqHWXRR7Hw7iLnvwuu2fk6IRYCOzqqF3QF4XdRpARx82P90HcyYxyRgnqGmEWhbNCu737F+2Zz+awghoxPDAKgqyGtbc62cIqSusY9g5rkrC4jGT84rsm47l4imeqDW0OYG2HHKTBat4yQri+/onX9lwzNXtLDTJpKvXGQSiCRIfJLNkWf3ZfNXAXXfcKPmOcbLs1nxFax2uv6oJ3zZ8yET54pvkKM/lJSPWR/C6bR2ZpcckKrE22niuHSAFe0dU2o4bwSBsh4n0OUFfNTQx8o76JEtPWLDsIy2VYrLXKOjHxcDvTHr87cc4/j68LtimtoxyfMJj83BL3GdbfmBKjnhCoM+CEMrV6R9k4ePj1ccRKivT/+9K11uAjxqqYMibnB+oU+eGAyHcwURaWNT2TuYdykmbo6TkZNJWVYe6C3pEToprf8BF14iwdGhX/qikcwy1GNLK3FgQhnUC1Tluz3iGJjWuPWTPX1biZJAxOIdbo2Ji0INjKU7uZ2lddFsm+T9e6D7MWSethHhRTmZjitg4peSoGN+FGK59SRzYQyFRVlYxbb6Rte9denw6/Yg038/2b73vZYGnW6fBbRfVWNJw+OERlV1AP7Pnv0oUb6jDA7HT6yyCjlURhoxcd82rdEGTxdBlOKtK4pibgc/iGZ1XmtWexR1j6RvWt7cZKfvgD619UXhuKfqEqyqNJzw+FIpfL1PsxPKvaDIGIl49xewCNUMtZfxnuLGuBpEZ8t1KEBK9uqKgYAjYpiTtqpUXDk2IiwlKe4LkD1a+2CrgkJtz0T33agYrnWueg0OPyNCwDcqS1TkSmjqqaUuOFLlToHFRS9wMDiE2DzW03lJohymylmUlKu4TOUj495IzuCpYWY9KqPVke51wCeLdJrCgPfN3+Uv4QqSzwxIAvZ9KUZ3fRXS+lR/cFj8q2tJlfFjx5W0Pqs5Je1N0F5wY5m1FI9a84amuPNmpdmrspVMDX1A2drQKz0+4sNOCgymb8xUSfmdRzPyADeNovdZEb525PuFx8zG+Ci0CuJVOiIKaPguhUAHjvg1UReIiLmW3Q6ok338BPmpUBQM8+XJm9Ww4mASA6L0Re7He/Zl+SnVZxWYeWY9HHHFXWNRYmJJLS22k+vKwlR3g9HcQU+jxGe/9PY1l+BGqHcM4SNjp7jxAuWeJlnnFE3R3pUBfh758cee02cIV195tMptFzZ7fRXIpJ4OvU9M+z0XOhRU+AUMf1IRKyeUXb2LgCrkIIDwDHp7gUc8Qd9VwVBEV0qB4EfAlqWHPXuKP1OcluEk8sGWiF+z/cpdNOVRPAIq/D6t36CGR2ARfmzz1t4Yq6nbWnIy4/su7/vw6t/XDs6tv7ACHss67FMSCOEtZSJEV+zxgq1GiODGQuZS5viR1BQ1Ll9qs1mVgGtnyts2043Ct/Wg1XqZlgemAan5sVDx06JP8aETtc1vFZYOrgl7TfGSKW5VvdWST9r4yOhk+GSMWEU5gBwUq7YS8xjQtLQ2a3+e+j+WWzetin+um7aNrnu/nuoOV2/9+MDtUHIPfH3H8frcigW+8POrGu8wtd0R8m6Jax5u4Lyhr4277C0jIFsP03Xe5czW3NHrGpDyl8NjqmPqVABlvHXlDQvl6xLTBszhUs8JhCMjHelacsjYiDAsf1Q2Vg6lBUi+I7W7u+jPWrGnb/E/HBktwGmEoK4y9NJNKMbsAKVWRUV7X1gJZ55+iwEIljE3A9MnvLExK3ld/9IMRD+fT8XacRf7D0iQG84F9HZzbOreyi6g+RLf4FrrlvG8XT+kbFtSs5tZF/m7DVVeYLjLuqx2rDNfU0duKg+CGFeH1d0by3elqjbmuWnqUqTbGozV4tYIDJzoYGzmduLOH9St/v3ttfeBlwSmxROoM6arxsQMiYZXUmQ5siAOA2Rh5x4k2dQPuu44WSloiXl1E6SqR9+2+dtYSNnOvgcdOAfe8yZL9I4IU8bCiIPklUH2T6PfTovf/f5kicssXg5eLXkYCJmxXJS9nh1gjIUjvup3ONQDwBOsWQbXKuXckoye3twD0Q2qW3MOkzvdtyqrDIUKCAOK+6FmuN1H6kCyrJ+JwZGPTOOzH2+8Nw5VY46wkoeGa886dJQcwF54vMfq9WXhbTmzv0mREEoj/ld41Bhn5YOIDX4ymIEpOEkvyhsQcgUJP/GyfTlJw8E/ApWroA5NItpunWGDakAq6tIvScjC5gSY0xoQM42mPk/bVHzMhg0TeCe1VT2HsAssx2ufGpvHQv/76OBbKhpD5Ln3cFb8ySzzlPRhKRzKo9UICwQYjqutiNdx8351cuIxwY5zYZVsKkFy+P4JDmhN5N1OwyXNSou5kjyeTrKdr5EGn6r7wMGYm/ntaLj5AKI9NOGgy0siOxgAwuYHFcwkfuZeiNZCiAYYRB4Hic6SLvYSDzrJoZa548b+ASfHcKpbSKP8Y4VAdPxwz7P9ihMiJyi2k+b/wOfug6VFJYSLjbMYcqn/7WGRGrS7txe7iisrh03Y+o8MTr8lnPxFWkROWzK0ZKxhiDKikKNdJEcAfZaX1NAL0UY/Rzz7xqYsM52Kn4u3lir+iLekvP2OXCyCEE0fQkRhBUGzw0WodFsvXnqtrK9wjtaenRpz2KpJ+E/vYIDCRMB/9H4VTvjnDeJ+JTXz+bbYxw14WmwC2GxU1bJ9Kjrg8wLljVCPM0hU3S742zWvnsQON2galrWLHWJnRkBVHvz5znhUwUMbhcFxj4IwMZS6u+LEVjMqSvHddObYfSb48atDoIUTWylP6FSUHidlwVJCwyeL94FL3PjE5apepW9JDULjzw5lcxK7Txwc7+17uzNw8elqrDcCxQhvVBjPnEw9QA3IyVf8n0AC5/dw8shNyT5/05P9EFIDKGsgH8vRBVkblIrv2hXcZDWKrdPy7z/819qanUhqb/hBpX7/eUXPxnBOxK+Y1dutVJp1Rvog7jQWxt6IUiQjVjtdhhWsUpCmtTjX2Hidyp21enqvgA3p7ciXMVGLuw7vqr09yXX91M/c8LklN+jNt3KsxjLw7nOrNQcVgqw0QJZ53oh2A9KJ75CBASXKbafM1W48hwo/gmvP1HUeiui+iq2vT99iWWlzdQQY4ksN5+7VPv87YIXpoL3Wo8rfHUU3wDdx/AWrCjDMAkCdKv5Pgi9zszHetF9K2Xtya5GssHSxVt0r7YF1WFuoPZzn4bSt7ZtwjivmuN8urENL4HV9Es7eWsfzkRuZLwtlV07akxH2sX+WZM7T8gG7msqLRA5tBE8d3PHiK6wis4WspJfmAHDS0e/fr93iCSNCRL8v2Ahsf5OiD+8Oorea9S6NlBgrnN7tNS/KOZAFMyR2rvt6XG8358q5Qus19PNkdVjwCYFSDXaZLYFmVAjYpMPQLtACrowUjpvLK+jPVn8oZVi6dNUIktvrVXKz93ymsgdy3u9mxjo3Jo13/gR4/OiHL+UN7jZpuDQIju/k9cgwlO6eM+uXziq7n9wSKNCrrU2MpxS6lLRX9vdVQqfdVx6K8bzR/C/LnVB2ZC6ROcRi1Lii84M5B09l8TLx/QOXDsS3Sw5WPvbzGwXHrFafBXbzEGJsDb+zEcPm9fdTu7+gi4K/hr6hgsqsbxLEjWWrhqsrztA+ztkdRTz7l6Mwsegmy7TfcmPdy4boqc9qP9tw9WO2JuIDqr/r5vZ7Zn21s500BWt3f/FifS4yaXF1qN54KjEhS2Kd25fVhFW6JkL3ydjRJGdKr16VpUXOmW+qyOgXiKREn8n3dF62FkrkpA1Bi0liG5JgQQBBODEXRoXNHXYqPKkYKeoJPrjMcOPdFSv8fprrmwP4OUXiL1A/o9AGAnIwgxcEZpkRkKWh7gCeSryNjgJMsLYvIvhztdWntyRdqOCdqIiP1GF6w5KHuD/bbKN468DzcgXDxQiwfzOoDADvJITxOmu7B0PEhiJPuG7vaRb73hvRfKuaDGiexFRsiYLwxlfZk72CJ2cOMxlN432lt5x8KDbYlmIg4S7wp5Ih+f84zv9vS9zqJZGU17gvr516Z32fiSLO/+cO0uh9XXAu/JEjf885XioeYo3U6g2VmaJFyKOcDwhBudlM8Al3OR/aBQrrLb4t+bZAGOP+t+bhk2JrhzAqTi2jk8yQJHLEm42DM+UakifdCX/Xtjwr0Oui99eMB3I7yVB6ju7Hq2orVoHHsTnfNMfK1Rv3zQNbx7+2ZVY1aEPzA/aZAz4/RLsh8AYLWkVU8cz7wKzb8a6eDXzMfoL6KiJ5bYLIgkrfHIUz6MnWZO1RU20VQcXQXRqLXa9F6MOmqVVAPJzNj0r5tt7gheE0Wi+JcDRczdSPcuFdWtl4MxhEYsedHBLqAI1MsQF4tOEtbsJw7cPqktlhxmPakSZvRfZJk3IG3jwlKs/GO9vCk9oxdDhKdAMKNEbt6ngkQWuHalspRGfMPU2uoxjny6JNTmcerSd/8E5ymEEaH3zz+9KkrbF83mSRqsu241gO06j2e3fPmJEku3jEkMm48snY6EkxToVpnu3W81syqIVmyuF2CP+Atyagblttctw+8x2z5HVYbo1ls7Kc782WYCIVE7vljNT3Z00QoOh1/4qJfvK6QmrFNW2zi4EDsNZL/qErJAk7S2ybgfoBEcUNCACRy48V9CgLw+yDA952Fe3dlu5ScjxRpeNRxj+tctbceGp29Yw1yiWaSnJkN+TD2Bmf/lZ/VI+f7HkJSfR0ejsYX1udNRQ0cROApH+q+PmvKrqDZTNmkLlZmjS5Ar2YRvjP7q1ZwreDBPYHx9r7jqRanImKGS7TGC0+jsGGg4tBVfLp0NHp/nL5NhSHwX+2+uxMRnKwpNiJ8gG66TQ+dg5MUqMRM875CmGEPD56RXbxFoLb2ir5n48dwq7i8tIq86ATba0AIHNL+f7X7CPv79paz9ZzGmwE9IhG2t1KUz3UACU9TeXiNeEb8/g8PmevnPGSrjR77i28tmO0njss/R25h8VMXF6iKQiSVSjwaB55Mmt3GQDq5yWiilow5D7GIQ5bWRLQ99L6+rl1S6sfEHvbJUMhUxkUjYwpZ6YVrBCnytTumJCxZcwKzCKDxBNsf/72BtTj0Ln1RtX+H5NIe0yS+MxObuTDD+D7GM0MwUIspLe4uKSrKHitX4hOlTkczUCDe5/ktn9RRSq4zBAeaogMqmwp8X963Psoo1StiuIpeFzsK5Pauul5P7d0D+x5R+NcHchm+Vq7e792f2xEmbVmMwMdG7J5A4lMLlz4Fkj9HkHVBSKsAt32KG4D0qofaXaPCS9v2aj4Rp7ruvcSH5OvQSyjN+68h/u+rBh92QWMeOqhuHo/IM/wqqWsoXtDhQLi6H/piO/g9d4Z6eC/EJ8/JvcXem/3/c1+wBrgdqhZNCSRGC/xfiNvPScOj6Kvt+IrljLnHKH+2pmboG3UM+ahJpJw/87u5fx1Sr02qqClPJLEckzvbqXyIJeTogm7EdyiKn4FjifPNlwYweHMIvOWqzA7TCBJf/Shx3BShf0c6inkrjbFfcVUfUPsZPZT0c3i8rsqy3qHPbXfhlRpedMVAR7JD13olzXxGBIfjj2NXlvohxPzeCZZZ3etlnca2BeZnidPEgRSyDH1A+w9QwZsUDGym4xqc+hGS2fcV6atH5Ckufepei4vzWHwv6KLk0vaZIonKSNWvisb/celr4k06GGt+Mm5w3wTsNBoJxocV0EqDlnJVZeH+zx05kIMLRPbBwmIMlDNvUFysXR3Sb1m9z9M3GjzKWHT9UcxibCbWKkvo0/CR+zQCqBT3GIet3+Hvb0GrwX4zyTTarcTRrJEKmIUVutPxOJwHfays3c6MtgMNP1Sq3jgKq5wArU0jHNb5MQXkF8mGaebNAV9vWj8kA2saN07bttEgIY7NbQj2agKaqy66n+NCKDc1s83CLKT+KUwbhzu766jnpMFGgdOUN1ZW1VBYE12pF/gFcbA1Gk7fB7rAm9+8THuV0zWnaXXne6gDgzgN5laPOQxZvmR9M64f80xZHo8OgBqZY8NJf9f8BDLTXlL5bdNd4+3ZdAMNMw8sVvJYfy7G+YcVNbKj8T4V5jNONkVNf/z8Cf9j+ji1uJov3xSD6dFOsZ/yXA6Andh3lHWAfSpyyvm22t5MCSbUQ3k1/h9vDPnfZ5o+jstCmm7+5hdfX4j8nMwZwVbUeRUSH4Dv2VsgrjBJ0/pyKGrey8FlKqfblLJgLa3IfejvXN+TJE+UCVlxrUTwqBeRdL1t2LE9v8zLKceEAtmNXWvkShQlmP27CJ0lxuSw/osFAK3CumJ/LttusrCqH7Vb0KXRiTmPlWS6WQR9/G8JCW3TD2QHdFaJ6VTHStkHq421bLP2WdrJ5L2E8T4x9Bhxv9rY8d99s53uVRCBueQXZDCQHYVRb69fYJ83wi6oTh05qm4Q0HMzX4oyF6yxtbKrzWYvoJ3ZaRFwF328ZtHz2S7X28JkMY02MnISeZUE+mM8v2WDdoUewvUV29Ll1sLrSGVLmiLJ3EtdY5c1Vu+dETDV1/P3ltbVvFBFR6fzyyt4PoVFR173wTFuEHT5l8p8fcNLxMgeNcvxfkReurdHxVURXQZ3rL62XEexHDXSKG1DioZMJM8smCHbnxqFQ2OWW3Y5E6WpUhdHGDetU//jHSws+lkpbPxF++BAdMuwtniAoyY/e9nTgzQJTTuWWDg9cogFoXk70j4xE09oZJ/0h5PVLpuiz7CtUNMuPELq2og+d4UtsSBp4ytQ1gYGnvHHgUcSgGUX2gOsScL393K2ZsmDD/7iiN7cu5Jeh2fy+f7RXoi7HCzXQRRazyVAWhk8xdWqiyG4F8nC3FPm2rndp6dI3Mrk+/+UL7dnoO3VLxCfn2EMUUc8kaocEOwH5grgJBUQj3J8bxevIrF06stc2zsCBalst8oj5chn3Q6zyUPfkvsqogqhD49Jni/pF68hVoof0LuVS3iGZg68+bdgXWZwj48dp4ysDUvdPhngjofvzMzlHFzzyGDLRu+oFxHU+0oCr1FgP5986wRKIrBUjEpwzuDWJE961+fRdxD/VtIoUolFv2VQX8r2nisQ6t0BnglCkHB1DIojMwzi/az888LVp6oatVwjah+CnNjfVP0R8lKIkJtonfO6C4jjZOwQq/Dr7lYRFYBVZ8L8YCv9mlPx6Ubcipc2Tb6OYrbxL95uxNo52lREhYmqXjQBR6aUKzNb0/dB2riqdeG617xD0uWiuKG1OFysjQ+5YC4Jzhkfa8nfEPgupQgxfVOv+nU4ryIamihdZpMYas+ieAgd5nyer08izpMIv0c6B8deppAoAvnzRQG2TruQ0mJZgcOlaP6AmHNVvZwp41pcIYwUWb7fNqxDfTjALO8Xn8ksqRJzsZCRQ4qDCCjIOkR8bP2+VDIHJ2qHG/ffMo7E7sdmudCjhTbcVGrtGeZEeU0tFf9HmhwgguAnM0JHh0bT0Z7qNxmDEpFGmxgjOlQHrvDHLALNSvHkOphiG8GldUcnGLX+moVkndyz9P2yeel3zD/fH68/704mGQVEKlE0geplZDoq7+LEaPURATxlIkLLdTyAMdOVK2k4bagWw8PF1ilp3jCZB9ohqXANm37Z9i9EVm1Q/93PJriawMZFtyuPfgtbHOt1E5PE4xqFLg+r/IA9eM9LiFpU62vRYV3GJapPpVR6XJAziZsrD55Ecz8p25kwrATPw1wxbTfPz790ytT2pzMAYLO7NEhGV7cszBt88veed38EtOOvw5QTZ+bQdl/i4dgqVVRvxC8RS2GW5FZZ7qtWXwCr9MlJRX4u1DhEnX65/3N1NoQ07iDqVtZ4reOTVJ3P6sf7x/7eRT3Ymp+lQ61G6aieyfniQ+WGD0uPpVG9mwpG7xDEzbARD3Oq916DUV2t+bYH18bcIyzRlFt743vsSFFZa21SDN28xXWGUFs2ytQzJ1Bo/XVqZk4Yvz7Wd8U7o5fdFu/t70SPZXD7DQRvOl5u45vS7f37tSR9Vj3iQAw7uquKXtgxzz39ud7fZbyzwlrJtY14KjTAR71EqC+qdB/Hhi3xmGrOQepa0pepAzxjpzlCvBdrAkhk94T8LeeogoPff3TCHkgOmRp4IsT5WjcdSciPuiTrRZ/l6bx3MwThLTWsFfXxCUJOeoLoS8coJ31bm0FEgMsRBR2i26y51QMOGzSuKAWPa3bUY50cQxla0mQbgnFBf6p+kwn7S1OysKFcOEa9xxYq8dTn7PwYzj73C9EIGN/Iveve9eW8b9QfKb+2xN/xVTSG4NAjNd+wP6E7B+NSUKmdyyXaT2NuCnNeEmpPENXYowF19OUNah5B0daTIsNExro29ld5TLujY47Agj5UAy+5SjJNy4pZ6EKaXtlFoHqOdlPW8Z9zP/caVxod1PNC/k04XFMrEEzoMi9mE02lUo7xthuloKE1UDC99RPL37iPAY+puop/JiYScFwWUsjpTxXiF0lDMzV1+t62ABWQfdazNBZYiV3v1gxajHhGPAXjdHWdhtzEchBS6pC50Q0o113QWwqcgGSRab9NqBTgBmIAy3iEE6nxRtenlfmpuGh+sobRuDCegEO+HCofCyJx4ahk5AM/c0UfFuO1iPrgwTjSQ6yMKrchrw7jp0BQpQ3phZhxMwJB4y0OtYz5qFF2rW+ggsly4Q/kS0+tPlQNcUf3jnDva1c4Mn8OXxJIxuOlNvcV1Fm82AXMXmk7i75IiTjaSi7FUo32gEI5rGl5b8wGr4ZhC+iyGtSdwn71zoSfCQNN0AHwA9BpFZjamvG+hbbWThUiKd0KrWUqr5zxwFY136VjeHK3gDBx8Wgc/cQw/uFJqH03qIak/QI2uS1CoADE/9bl0Zq/ma/wxMX7om2fkbEVQe+BXl1GTQp7OD7v9pJZ6W3Fo3FwDXNFcjMO+urCn8IOujzMIpt5T2pCSlpa9tJg42rZEbvuJ06rHiR/un2xYBsgtW5x4NYYeeBa4bcar+oJLfFjJiuWT/7Fu4t1/OSHHxfEoiH3TEZm8YLLAbS9WFPuo7EIbEtZxZkmQ/HieOa+uWcYrkCk8u1uXCc5nwD0eMdWfJRAGr+a8whX7FztUMVF21+gh2/k1hcvWH3Vq10+Y0BH4DX54i9vg0lYHQXFEKTg4wbvMfnKPiw2nf9ggxBt2mnitxfrzQou8f8KM6CgIxTejqzXPrpoDEQPhdNj/CY1IWPniisyAkzBwNXbXYJ3jR7/hzWk2AOUjypWrKBY66oSi1ESUzBMd7hli4we183i+kqJ91C3E3IKxRn99QVISS02OfEVO4dq7IW1JA/smzbwkYn2Vc0bc8kbcJ06abMIlgJAxKyz7wMc8bqVGMMjviUFp8B3AbZdfR22YLGpirQlYelFZ7dgOn9Nu3Qu8lmdDFKFZslIii9csKqHgGwi8VBsWQk0wg1CJLcV2ntsakQHxrc6biVNaM6Ym5CCb8x6sDxV85NxHTfUMjfQBX4SXVAXFHX8vvPw0YKvIh5XoOH/vfLRKRGPJFvwws4tpvMSrh2JMuQurmoSjQFZulQ5dxSzIfZ/zYVIxJFEuTjsAi1z6OSt0oUQXjaSRZWxmZVwAhWuifdKMQoyBvNvkUuJ5VvPqqA3B4SfC/pbtDO7oOy7S/1eDAwuv7QA/Be/3lEVVP/eCap8CmgjmWnnUn/h9v00aFBCcLtlTz1WivMXEfJI7JV485CUf1f8SJFbQUf3miSqB3XqwYra04KnE6w/VN0Vhs0LHNagfSfGq7nLqbP0PXbXwmYNXsORNhFRgWxsxIaQAq63uNkjUkAk6aDw4h8lwy4SdAr8jIw/+fSTel+TUFeC/88sfdP7C3DXTLUX7rx2wo2R7Nem5T0fftYZz+rzRsWvnaClnf8LxcUnCOC+kF8eKe5z5+EnAfWDPNeII3X6OFoSrUXustRny9MzM5YuuG2s1ud5fvgh9wB3vBP6F/t96C+mES8HEUGWJIAthSF96Z6u35PqTI1ZmOq3xtprYyG++qRm/G+o0t+T/0MXA0erajvttg7mnfSb73r5ghHrsyQXhFNyx+rM2puMkqYUNJeJsbGnho6zLhKha9XIu7soEVeUzAX9R+NCSoNnZzvF5Np5knniRmnqha1zXVmzKDTfnorfm0U4MbrU5whcpP4FGSuPDRyf7Bp3jD2EVbdzPO5TQrN0oFB0OEypOaqZ69OEqT8EGmjIkNL5pCJ2LMSggDXikXQk0io8Oplp1EW0Y14MdKXDdIBYLwXeUdZTlXXDfSWcg48DUb2sTKCw3hU8un7y7Q2uNOhDk/O0qWrV1VDlEpJPX1HDic4Jc1G0G8y77lGSuUPhyJVPXO3O6M+2SgcsK126j9bWzKz+ahYqx9dPTEjvSP47/ugZj7GIvJbLi3HdxCgv1ZfSS0BcOndZINW60+AGWrqLBJHkMeWpPYyScEvWz5vfTOTDeffMF9chlGLQfrJY83P3/O0UqxOz0Lmsv8vfB+u7cVRP/TD0nZjwcZ2EOA9482iRuS182+yV0IhFYA8vb79hMn/HfwrQnn+bRwbQ/hA3fXlYbq2rHpJnrRHxdD8VnW1uSvl7XLvOA/m8JsTSeoIpuWJssiRLtpTJUmT4XsqKbqovPJja40YkbqMH7ITwq1tS7afQhSllPgZXf09vYiExZ5Ztx5awWWNn6tt/43qukd9ro0+uzJpk+8n9vqnnc8zWBJvOnAtM1lz8s9h1guNBdGMIxSTLPpmZuEZ26h6UY6w5N4WVyCzbSwAlT0BfqfUO6QWAlYXfPji+gVy2QyLjrMQTEcjj5ezb4De7OqA1S1TwJxu9WS2dHuloPkrsFPJALevd9wcz4xdZkHM+xAmxrUouHUN6eP3oOobnWTuiRNXJRNclS25f9IUow3B7y56ssZ1il0ly3NKBWAI7QXkRJi4xuH8Zknj5+NzCmUkxaA+je0HnTiPJiIqnRZQZuhCK7Ll6ctfMYMcVkpHBegeXxDCCY4sSnA8u8YWtOS6E0zgiQ+uIO7o7Jk7hxvkMmlvX4ixh/7tgyEXISaR0vDUtnjIkYq1r/Wx9RGCLmAd5mSrcxxnzTGr1apRVAz1FLXn7gqxMRxBq++nz/CtTRidacCrMZnvGF0xplssIAA4D2Lp5ybKtQAJVM9i1O9KcLzMVYgLDwL5j+vHhrS/xy5k5yeSVH4voeOfDvlkgErWGHNwkcsuDfbLF1JNv9zM7jdw3zkkkmsnymtY4u6X3swO+UcwPN2UeOLxHwu625jwaWQ+2PHEBEEeFwV4lMu1PHxQta7QItpNFlmvp4D3nfGhNuPhj4aM+v4w7m0Yw5KS8hLfbZ9zk+UaeokN+RjGehinq3Gwr1e5Nftjh0DOMGIiSU/zkJHHXkaLv8XrBArctn0fIxxbBFakckZlAYReDkr2pbCCunr8zRXdcwooTLgsbIKzH6WMFZEVaWxSZh3atKp9ea1YhRTsXh5D/CPweRYyPO+I69HSZz3mqf0wqNe+qHbuRoVn1tbL6V+2jNl5ookISNh9mjChz/alJVaptTSIpmbgtWJpiScdF7e/8oLugRDkwCkXUXklt68oM66niOfCodfm3wu29KsCSsG8jJWkEKsdNlV+oWsKlcJNzAn1hdQ2GjcUwz3WWSW5MBeu2q/kQ1HamK1uyU4Qy7URb7ejuFuOfQSCh0w9OzLKsIoX1OGHd75IbguGmLIwz1+Xy09ef11svHCzakY8CGWohh1tGd29YcwZ4BOsSGQ1v9rkCa+GKhMeftgtkRyYOZoUsMSrEql74+LIvvtplvC28wjqhA/DXCLlCCrMevgy5+CsBHfn3xXr4pSEKqbc3cuW+NJOOI1FMFagk2MiUz46Z9HFtPsNbwUZ7FsYyVgFsF6g8iGXCNjHqth/Soq68pVFYZlNADADnniH4cPkmWLt8CgTFGtYv22MyYJLmdBHNgKaDfdk29Kaknm2pJchANL33QC75O6YaP/vlry07PzoZ6/l6fVizveEQmltiPsecab8kIIO0x+aW+X3/QleSbEgStHF/N2rS5ujpqqF2GHulecADhg7uMNGC6QSn6oi0vzwWOUUGm7fO0w6HPQAb0PfLz2vdOL+PpR8fM6UgclifXPy8HtZj+U8HvQiktB6rA9hPMBy7FCdlaZRgs6UhrzWNTWWn5+iSd6zNT8ZVJWs/9nK5TwSJyN3Pjcgl7rBxaKnlOUoHPkC3hKIjwM+W/GyW+HXXHUHDNg+JVxMmZTx0KXRbTT8iVwY/6LBruIVLznffGR1/8lzAZHN/NcWiVBmQn9V8vhjxpiLpfXZ/giYh1nhWTnqVzKhej515MQTdm1JC/IbSWSD0LXBnDnFexsNyo35STpCLOwdqjfB2W+aaBqGBXiWb03uVZB+CFcYe83YPcPvDpxyNstBy8LnAmBULsjm9zO7HUm+HzrHdKLkpSyN6/V7CeeT3dLLPjP5WS07bZ1DVEH3Qnpp4JzjvfqNygdj6IxoEjsU3D9h29XZuxqDbHgdN11fRC1Ael51wD5NRHdbOqN1v6ob00cHdZnwTaJM7rzhvfpo0QVKeVf1LlY7+k2YDCHoR5USvQ553wLG8ACJ3bdMvx2Sr0i4mhYXW36i473jaoCV4+NkAdF0sB2j1CWgnetj5h9RwryyQT21asgIGPEXyjzjhBVp+cywGMR+sDopX93+csGe/Uf3JHPYiylbXlsf/b9hXd5YBg7SaEHLUOfrSNadIDkvUrhbq2qAfaSITfxKu0RbVEI7qggy93mdp4gVWh622KIcC+TQ2jQ5TDdtzNxjtsf5Q0igHmpYrvlualOAkWIGueRlLFYbzVgpYhWxHbbOh7yqWNpb6XC0+CMGjSE+PtA56GG459gcpEhWOp4125nAh+dkHLSjy6/TP0OhHdDhEvibrmVcOVpZ5rw03cmgLpI0wm7a1Vv6p7SBtWXjN3LgQLfr8QPVRSiQ13mjDHgAFLtdzBJwNoqVAcWFWAI1w1HLPQrGSUAYx11nZmgaVQJC7Jy0bPRr1l+VlW0V8iHNrRPgj0jDumtyA1wVPIuATLhzrQS37vA3xRWGsUf+7YXJty9gIojhLOh+CZHTMnWMzjDQ0eiUlNyPfOxELBL2K2JsX1LNlBfapXW0iBmVeUQUlj7QeXd0ZpQ6qUptR/QsWSpMbgWveAEZqBMVjdSMhsss+XtD/MnkO0PQz8v3O5woguNAZqhGCakK3bHxqV9fkq7OkYYCiuXTW7vPg7HNmaUSICe+jysN0Ttfb7/oSAt7VBX/HOr/uTM2S3toct/VnsDkPRVJgvG/rxAonxu36x1caw1trSlSSbtOT/3xZxPQclh6QLwQ9aigGde/ubNwJo//AtcT0WB2BmseYPGnlmxgRZaRNZdwS8mzwqf8Q1K4Gij4BzGgA9OoAkQgwPSnwqTWQ1xFAvwZAgRZY9QygJw/At8AybAHbkQMm7wDbCkBEHnh1CmR9DNAfKaCqQNQmADUGQOQdsGxjwB4NgOfqgHW4B2xGDtiiBnJOADhw3EQYSygAMAAQAOy31p2vje8LyMiHA/7/vArHEulIUKI37WlkAx2ArMhgSlSXBIvcV5dLh/SVILkH3a3gozEBpn6MvMpY+pzfPAyVh4oo46YzZ2/8TuNsJrrWRYD9EAzHhfLG2UHQi5LquCcb2veq7crJCaEu/Uy67gGNYPcsfejFYr+BsyRnbWaTzqG6xw6sfjVNVjtmhACJHilBDJoHd5h3OvPj2MuCMScL/sGJ+LCYxXk55YH5XxlmXB1MAhOaLpjbYmLTAzhXu885c/WiTwbIvwND/sSYwwKFYpsv8yLyUXcjngfxEoIxcbcR5fhj0xbSAZjWnVahvD9cp/A6KHvNEWzeG05jOoUNgQ9xfkm1Bv1ISir/KNeX2mR74fbxoTPdM8cpX4Sd5ZzJnwZam00w47tLordwAfhsshHXgdqgPYzQdJVFGwhwGLvfGnVsu4S/JJKPVlD34ZNTyyNVBTaW7IkWxT1D1DZn/8SQItFv2I66kJCdXnJ1hPypHaUZa4EHYwnJ2TGwJlS4NuxeTqrTZwp90TIZhhNp4782LSMN/gCA2/YYUCvIA6JkOGoBlOeiXXYtaQ3G48SOUAHKfJI2cz+7xtUB/zTvXamTqhPS2waZjZMV/FF2jD+GHm07RoovIapwQmcbBE59GYcjCUlhflXNwyUkLTH/GBWWMnwG3PZvSBwdieQrh1VZe+fQvQWmitjOzbRxEEjvz+LOqzPXd0ZRLIzMs//GFwPbE346tbfkRxmutruktVL08pxVjAiVDY9D7L7lz2Hk8S13kCWaVoKjKAtXUZBLjXlvGO1IMbkOPJ8HeW95OjmzFVa+SY6dxjJEdPRDyrGRBSRn55mdzqts7wC8mB3Cxqw6F+cX9jJFwPqqZ5wkCcshCVSkI+uQ+GWh86hebXcpfA7hW486aZuKKhKKyvjW8pLdA9D7s88zl50vW0N6tpseFt6cWIIVZJ5E+Dos6XmzACvvRfyeRqnXzfZ7Nz7dvwaaqNG81CVYQ5Q3Ht59LvJyE07pqIkNI8Aid1FjLvpY1ezkDiHbzWIFwebpZRvSI30+h0POyCoieS5Vj4ma7GPWzK10Nj93tJVtpsL+E4vAwplFFT98GLEZNnB0XeKytEsjRdJiL4RXLwtaFfM+4/EEwFvNyTXy3AF0WpJz6QFVdz8atVdDL/XvZkATHtNV521JsncJVahkpRmntE/WgKDvDykdH51xZXCeIjvL8A4wbTBDRPFHnqiyFG2xSI8vy6B5XOvZDd6KhCklalSceMcPytUrTzTvcS07pQsV9wiJEh2F+MeiGzQgCGorouqicfAnVZmoAdhg/+/OEe3Zd81QrT8gsv7kHNE8OWJ48vj3xhgdPTClh16f1+kgWy0pHE5C2nLkzlvrK4AjvbZvfl6iKTFa0JvpIIZhGMbxhVxK1M7sdT74oJ01wiMVYqhEEWmF1+jFU9Z/Og0pWvWidLe7+hs47pS2DMMno8OPietMsLPBSVtWOzlwdc5rmR4Jbb+wXWwY5DsJ43jvsADfAxQmo0RWM6F5wnRiL07SBmaib0LPuez7szUOYRRv3yO3wdqG5GBu8OzPlKFV415MAUMRsm9FRHTLiQmr+hen+Z/gPB49zPE44mzb8DKurtodnOWXzjur4afc8N3w5zvqlkZnBplDIExm9d8c8vpoyvKdxaCwoCeNbogGje0ic87IVHhwP9XUGHmwL2p+K6JPHKsqiVX1+/vof7Cqzf8e+iWbofwNBEo78YQNaJwSXCC5JlkPQO5t3wB5JE1MXeZ6CLMBmn499NTSKfPNGMy3PVJJgHlsdmtcIJ9zeCMWmheGIj251+sb7baE3fIilzDXuB7uAbNTC2tcRWcy60rIZuOldQKrPv8Ddzg2y65o0amK7uoMXWbGXDsKG49vk1R5AxuZGUxVT1b5kTkD4REf96nmAvWDy8EyWWshCJeptLprm/bXij+xEUrbwFbV0AviAUhPDG9Gvo9Lsl0VepVoQx/iRqm+z6VE4o6eB1AnS0XlU0h6htL0Fo+1NSqArr8PWq8w8bHy5bueeIAC8vmmdBqcPxcyA3oxbgPoM60hD3lIVyzUv9eKonkTrqT5D21Lm+6rN5hLen1vWTuu6Jqffsg9IBCJEIM/VMh51Yx6lN6pdraQfrYRRBQR6thcCwnvEOvNA2ZNPEEin6wbxDcizyxT+6WE7BSJ3kweqFMMacBsvkJ3jxl1H8ZuFWbSR99IrGaQtKujRf9Mleit/TIE/ftVvfm5wHA8Z4TIH3nfOlPWyx3tpUK7qK2tYDyjtsOTeT9/zxLgsM295NY88WlharFGzIAQnS6tTROvrY/ZfG5zz3lInEfduFrLu+utfHymSdo6/h+eb5owACojJgYMt2/yMXUmVdBSvP3gnEK3hZD9g8/tlqpAi5cl/bYQehiSTtdcTKmaqy+OTAsGd50H8hY6Pvi3J7M168ZrtWh/jr7Pc6XQuLILJLIV0lJ5DDnnm+zlqdBIAovvWm4S6JkhxqA+eKIKI/ZDVEOmAqwJSUjBu3J9iB9Vk3BrDya0wswIQGqK1A6mW78qsNgHRDWcSSJQgxNG70A23k7ANlMPNXLsPZfQjxoyp4a9/r8eifOZQjlfRSXngCZA48VsFWJzClVB1kBlmj31KReXp3ncQuVW6EnCpUH9Nu2uOOoDtbYv+T05Sfrh7Bs/JxrLnwA0uZn3Ab7rUuBYBfDyfKewm/BDBtK9Uq6aazoiwz0tfyiaSdF8Rp+cE8yzq3dvJoxSKW/xbcPG1g/0PJ9hGIbhy+1pxAtWHD7KcYk5v4Vz6v05DumYP5NVgsh/IixwDav/b5enM3F80JaEAyO1h4wLLR9hGk1PMc0OyoJDuV5tX/mrnFKeq07+hjJhiYP7qHxC5FM69Hp7e/iMhvSzFVi4gYR+rUndBXcI3l9g3cxmg96wsaBaCEwc0KFq68YdIAz+PttKCO/zLxxgDsK2cMF+LqHtcc86GCoNGc4Omzju07tOH9Q87Mx0pFXiPeGGi/ego9Cw1h369ZJxhX+wwl3VKnvzYsCoqPkLj1MdXjPpTFIlmE5Z50lh41/lhOWUm02mCUKD0gbkxpfrsYVm31cvTOT4vuyzg2vPFFSnOHOaeRSH23cfh6rAhx+VlUJNTVSDaLec9VdEXXGiQ7gyP7UeAMRDqYhjYFqJdLvWXKiRJ18eVOzbGKG6Ue2dr0ff36OFXCAvScKSwHWw1ytXMjiD76NEFi7oxcX0+z9zWnBHFFCM4D7djj0JZZaI+AAm0hEj4SHVF16ZMjOr2Fkx7thjq1YMRkuGTb2KI9e73x4dQJ1zX2vYy8zX4nISkGQ6XGkHGckFU8sRYlZVVMHlddOJzYSHmA0fRk5OPt2B2YUK3ZnpzdDeXzh85uiEM+OxW/8iFiK4lKAW+bDecZfg5y46aV8RL4mM0vRIqiHiPZeAIR74xiIawjueoHsPAUb64/ZEZRSzSPuo9HSN7T7WDQqf7hS8ii8l+5F1YALnW029KFux/CtciY6UZCix0AHrwAXC+pNIFmQDLjqW5o3SGx8sag+qvypXa2Bz0hD8Hke6l7w6e9I5vAqIoyu2W4Vw+L/GbI7qErq1GTeE8ncUBJXWjP0DY2JMUPSvaZue2LIyx9gk94RfZgrp594+L4qO5arDgR+llZYu0dH76wJh3h0G6GkrMwSxwKDJlRN2vCE5mf/feDeb+QmCoUw1FQccSVHFveKVsQ05UtVhe/kX0/i5D2osrK45bXasGvfRutsvrvpNQO2db/WzBZejRoiFfMNBEOl3d/8xqPNydMtRs3uIaypPmcvpLk/y+nXAH2Bdsz2UvJi6lm4sIgZTfewlv/onYGBeE99Sv7aqt1KVAHhiDbHER+36pbwu5X/qGbhLIDmGLiO+BLOfJv3HwGNOOA0BS67DVJVVJlihMqWTvKwhKStS9OlgCQYq96IJfWPA3H4dJdFqm7h94A9OsgaytHUkl2YzMCHddjzfvL2W+30fDk/LKG+XgFMtsnNnO5bKipv4rakcQ3gVBPAkYkGru4aCDGLJdrrWrHIkiQ6SbeGsipTdPWCFOKQrEO58/vzPFfJwgD9paPUIw7Ej2UU5KzKGmvBqciQgm3dWJfxU9upW7EbW0SweN5D0veRuGIZh2DElP6yjGnW7iPt01XhENNu4+cqk3zr7Itwyq5L8OuhNVpuT4QHT4ZtJChYmOxAe9hKR9s9A6xoTEyeBuzp8RwfouZFgvVqw1xfQXu4zWBIlkPlFSp6TVVidQOuPWXBPg1BihRMgq8HGSUdSipkwqMxZ6H/ZnubdedVFF8XeqG8Rb6VvOzj9Dw1iOPmYBizgKCMGvhi72bRNqhj3UbfF0vG0GAINV7unKFDjTbRt+YG4TDQSFROxYCbTaRfQZEwDeWHGS0XrmS4a6Hi+dCSHRnB4evhFkdkxg+Sx39M/udr0LlTBUFFSs3qRqU19RxnMV0oRBG5YQEiw68XTGjpivTzigUUhM0f2ZZ8mJDU7aERkgOXb/pZFAcBKPM+e6rOIBCq+/xTl3Urzfy0Gn4hTuospLJA52P2h5+7JNb80lPlR5XLExvo+butrHIbUUZJDngPSNlWP7ES2B4qMqamSg6UJjHge+X1oXt8xTyHtfN7EYJz+k1uZyk6z9DU8Nqr25zSoG9/x1D1UcDJ8Y5AIHmQ4NcabwOK7BPGD0kSagAcuE6YP6SziZ8DMzEzqp0LJcqVDv2ooPI7A8exGVrHw9A4UFQ+95WIe4sdjK/79ZYlruIOFLwPCrqWm/ULPltIRWET+RQQIHMeq0GzvzyADQ+vEbThlYIwpt3aIz2+RaUqGpIuH0VOPrAy78wEiT2shiuoudYYDw/cpmtXPfDBf0HLUozuIdIQrCmGEDdE8k70C6WW8lPIkiZlnCXFmfuvoKNvej6h/oypCq0Vn4F92yje2UtXNHaDhTYmkReNRM1RxxOUZPMPUqLdGKZu1bzXeJW55qz3iWR3X+qsAgShFp5nIZEwnpJtc9X6eeB0smPr09XrGe+o27HJzEgVZy4tinR1OxpPUc6Q0XpWtG73ukIwYAnv/6XVqsM85TTgN+CfX1PpvgdvOF1passxTaCqo2nJvz+a2QmpxJrImLJweeSIwIpHYxPWjWv7Ftqbc0hBCVSRZwGplKP2LmOs6+eXHad/VstV7qYBaLQtIrlt5IG6yhO+U26uOFgiv+04UOX5gX+s6Z8ffTMoio7HkuDv9f252lWCmkzeOPKB3RHqFzgSa5DK36hsnLypeAvR3GLJlp9q1ooj3FK8oEn+hmYtZhk+Pbw6G8+qlDRDWQssu6uFKAgBru9VRub35JWAJIgiP0PQgxN/FKQVfpPZKYCSHg3ZkcouzWEBhIr4Jd5wVh380OLrBX/vsA/7OGNvYxDpbUSp6jm5uDJKPQtFvRZQuOVeUC6Cb+K0LEw7h/tM4jjpWGXbEp8pnRqXvQu7xpOd8cJrfN0+f97qu4hy4wHoYL/E3LzRKEp7egsSWGMMwDFM+xTNemJV4X8qFEsEiqCDF7EYr4JoQATxPXrg8ZN7xKo7q3YCZ8SqvtYckjXoOz17vInVXFaY7lXO/iCvnhZNK26PY+n/FotLqOIu2ewbL8IlW/k6bHhwktt8WhZ+rbZRK1/LYcAfEm5YW8yEyYuEjhpSbM8H/cN87jUn756UYrZG5bAVHLItr6lzECsUAvus9fuDSitnWyMjt4W7m0QIM2jdJf35Rc7TrP+7wepJbpojCL4yaifkTt2uHw4T43BGUGGMdfRwkHAhJQqTkPnSG2f9ytn2tUXrpyMh/DXepeM0mjfI2f3rsgk54zp2jnxxJrSEUYitnF5J2EF2eLzswcl44WQJ1HEXSgaPN0tsmg3TuQT2T4LBWHQbzJsZSU8c/PG6qibopZMuvTVIji3k97Wl7iJtKX4xPZsFE5x7UTpFLYtdGwYPYascI+MGu8Sk90lhhikIbMsxTbpzmfPq2GkqEnH7v/Qbqk1JLeimXVIh0sNqbJkWBd+BLoXlMYmLtoftvFsXIfnD9fOedwOj4aDKW1QAV7gnROQRA5kpEC5SfM7VHleKea3OZrMBy8G88Rolni+aLYMnHvxow4WtzBedkG8C9jPM5T9OO5XJ6QZNj0X9FecAVeIurdIXeg6WVszrpvDNxugwTHRTlBi1+BMQnEnqHD/no67FXCNZ8XHaTFsKQecfL3gut+wYHBT6XKro/fq624Y+yGY8hhi6s7mBhjplHC1BNa7ZZjvU/l8/VQMk13KWikDzv8sPjptA+XQ+1GEtN7coeOkAjahwn7JhSR5rz6ZtPh4SDZCChmQp9dyOYKxFNdekdP36V9N3v5A24FXoPZnMoZAifWU9osjugGIYYuuDT4BecEpmC0nSL5WyTgYQG3WcOd8J7d7Y/S+7zCe/dKcvKa4Mi/P0Q7YzCwZsv5O1OE1AVZ3tgH5UuRqZGoLeI6oL1ucHLVXg9p8x8CifuY8h6yf3mC3nvGs19zX6Kmxfr5sYaegwSFQwZ1KubU9XBd7W3SJ4a2kNK9qfO4bbgD5enhjYzg7RVh2X29Mcilcg6bCzgEegtenfJS1CRwr43HyL9nQctRI6XEcDHf0GShY7QVNuetgfbcoAN6oLmNibTG58vEiAeKHJ5aZ6TLIq5HeqilcKJ+wQ+9FZIiWRRi8s4Z9EjUQWCttunsc1AsBSn33YzRsPmPuZL/fIbjw/5gT8obU6/tIUkJqKhcXUhCMjnOt9PcfPOOYrOl0GfczLphqS0idpHu7pwUnRJ3a5/DgaBgb5rpfj2netG6x9+Zjg1a7pOBmELNGZXM0DHYlXocb5Jc6o6UkiCDYujJme69dZwD+JIDH2ez1rCRUTf42QuwGQYhmHYITcC4TMnjdM+2H8Q93gdly5BVwzHbW4Hmh2PWkGSRYEKjfTq/SaUvafNWd/10Ob16KoHpGo+xGrxpvihnRNG0Uc8w6ls94EQ+XZS5drPMjTJeBLZLznLQmwwL2raK4nSg9nc7tHrPd/8XJ+uFI1DFMylp4AFAUQpOONXImw5r+tVKsSI6nM7DtjisqWqvl2v/oesmkcXY0CO6EtDuNy3VXBXcM+R29Dk9AGjATei61K4NSOfQ+a8x5P59kShBKGotGRJ/SxE96WlczT0Y6PAqjMKDenczy1TRl54J57Jn+QXz7y6aEXngTouCitAEweRffF0nH3dk45MbLNtFvefeE1mXHgG6mzpM5CNLBCThe0dgnS0pCcUC7TMmbM0XuQ9iaSFRxu3yhYwJPrH32CYUYR/UcnvtevQug2ojbhgOFgI9hCTzrTpzB0bIkbPKgmM2thc+cDq3aPrXR9QtYPhd6+qpHRED0bH0W5VKuJbNeHfoJc8ByvMhVYgKU9reF/Rf4quNP6eYfRPBksZyd03I+lWsDOI2lC8jQIj7lQt6T550CFXyms+ROJy9fiCZtho1hernayHZMWmEM04CqzqBFGFDpWdIS8Zx9P6UA/I/wuGzjzQcURntqkv6sWB/Advkn52MIRUkfqNq7ETSzPvLRucijzyN6i0bk79gWzwVlfWbuWaCQaOwdmPS4kBuvShHMoZ/ER80CwNxeptMxMGe3M8g3ui93nKFnUSLjbPUu47dGK3gDmLiJIwTygCSZOmNrvgky+BLommP0Xc4PRfzDBnvFbf45x5jJFNBJ8YxlsU4w2w60pWzjtD20VrXxQP/6bF+n62KqDPKYIzTL6tCZUVZJl5ucqwYCO/XcvQ+YRQVtnttpQQsHW75UpPDMFiUGQJNiBEt/drc1Qa7aOAIN8KbTAUz02/qV64fHgzAgNLogbK/P/53SZsmGy0cb/V6Ytu5JufAdgwB6u/p1B1Bmbf+JW7VTKa4i1RUyksCQqi26HjVWr+tI9zFf3APfZPvcUbEP/12MDMSugzIBKGDek9Q58z9vkUj3SSgVdgWJL69mB/IbQpZ+EbQkwhIHFmPNgcM6zqnfElXW8SAXtdIFFAtzoeYp6zJRzPfwwZJgcF6o3OskvW2apCO/Eq0RZhnqjHlIQ/JEyOp4A5xOxaAxr305PJexmcrEFKtqpv+3CRmNujVxkiHA4I5rZaBSE4Q2WJQVFFdxN8etTwbK4qz76FblxVIU93RNO6+vvIvyFozlwKnkYnPcUvqhf1v70dZIbsZ+oWA7Rx6atn3lH1cf3eGHOuVLLgmy7RvUijC35jPKMt3Of8GvX4FrmY6ToywZtBTrOp5x8+ny4ahmEYhn2mBWUwP8gbVbrHQeayvmCPmyMez6x1RfTfTORb070Y0LUwyhyxOOLF+MacIQMiR0FU0+dW7OSas3B/qFA385ErX3VfoCtfrEpYaJU+St/Z/UzSI9lokJOiCaZdBaaOxqfxHhRyYVpb9vdVIbTFJRBt7FHeDOvnJa4u17QEWML4ydbNgvxSzbKaG7t8WiD7B2gXR7cNhgh6iAukAInbMjHxl87/OHv+BJK0gTXCCmx5LoRz44OQezNegUU9d8dTZtwSYFYB6gW75IyooU8G2FA2Zq4+fpo8pVVtI9TmDtK4i0BbagUlVtJ4TCs8+JVt5zjQnNfvWJk6Cl02+JkWlCnCfqZRo4oy/EN5Ky1xY5Tl1PW/ExJB8SvLKHdjQkXlFvTI1K4dSBHn3046EW9kb6gEpRrQRViMlXyPnc715zokGHCV8rbsvcrvzSGiC26ndyuBN8940WOm+bf4sNtRSkkQKLQRYd+QtCEK0U2zPIYld7grc1Iai0gBdu2DPv4+VhUzIfZgo/aHzS3j0UYnm/LbR/2gNztx1ZxMZHQPL5uEQqI0WnQEEnEVZXgC2TQGl+Hh9neGedIGS+9ZOKCi1gl9g0vhEr55PDrpRA3AnulFhdj206lZvwtyHIDDvbOqNldEu46i/GzHbmhJsSRwAYq5mWRg/HbDtd49+sT8IG8sHi3yujsK8MJQa0SqhDrgfwbPccfzdjYul+Cd+FaHBSMvp+GBr5vH/ExstyU4sMOt+exMe9/+TCOmsbhryL9snoJKXQbX8phvOmS3mZBa5gDolpDAqXoFHYs1HKYefvVsnWtQ8Gl5aKKCNBZqR3VSH/6+q6cxJATu1AYpNK1EuEH0BQ3pneocMrcvA0dnGb5N4J+xu6Q92UP5UsfLcufNPtqi/IYtMDnP4DwW2Uk2R4Ay3jJoeyqk3VPZtXxDEhAMrxi5WkK6FXjflvEKNQ6Pnx/9n3xKi1sOxiXUWPczYPkWUJypXq2oXOVe+f0FRy4NRMoD235MI/sbDddT6R4HzsnrFx26k9NXe9XYKVp7ohgRN9jwoCNuLcAUXpzJXwZUHNgLoLBYK5rrFV/SDs4/Ly2fwJ9+ifTW/YdixOz84OmFs2YxzMRCwv6xc+0WriSVk6PpS2WFieuMpD8TK0uVjosYAmxY4sEXuUBOSRioN2hDaUqwIpb4TYJjxdwq3Vm0prnWaksb39oI9wIycq/k79ZcVd8j4BC273y7aKYSIVl7e9cJFw7jbDx/ml3sZn01gXBAq69tZFt2Ip7zWChoDmLbeT4Hbr73ivuT6fvLwzge4LVIUeUR7emQMLzoosv0JfREAAvARLpSqTDyv+p2j5Ytjr/htUJ2IjEtiGEYhrn0d06zRf2Uwzsz8OoRLQ7/uqJ4ZcxgsJjLAruKCNIsmuYEQMtJtEnNgm0fUYN3AKOmPUErvi5/M0leNgrYMZ6BbjTsnRBUKnC2HytKmnyMdn6J6ixjRXEo1Mq/LNxj+tFdIRF9YDjBS5ZMrpIOcFEJ9e8h7Xk77uDkVf4y5tt/LOmPNuf6cz5zTWZM5g74dh2Bt+aVMKUshcbTSk6TTIZKiMB03+4hOit/Y7GBfRCU1IvkuncsNOHr1r2R/tHArvXUqn7FpTO4vZvH0q6h8aaPGuZUO3S0ks7rn5H4qIYEwlTIYp/xJHm9YqsJjgCDImUGoalZHupxbfGsHp1eN7E9a7Hh5pVTDukyGYVeF/mR7fi2xr5nSsacnE8Ut1pk3sPbJz5Bb73E0RBLioIKfW6jEWgslvw+ynrQUsmow+QJ9T+iXk4cX9bKCVuEV8jxHgZNGxwsfApkPEL6Iuf3YfbzRHS4bjgsUJKZT1kwOT/YBU/pEtRoFRtS85JBh1Tvgm/wzUlX4baxZh3g/jwFtwmZH2N/ofKzvl5v2b5uwkOBV9L3Tg3VI06BZy4Y9aWEjvyC50bPG294tnerMsx+oJlNi3/BmTWnJq6SxS4utzSps8BC7vJHH3TsfJm46Oqw9hf7+hYbj3PsjrK7qlSqoVbVMawEScfM6jbg7/kuOD37M8RLsXJhFjhs8JDKsLM+8UCWUuKK5iOq8ukXgtMspIJV1gVyicPFtLbG5rW2yuYSozYQcuKTnOX0gFgnhHYsaWDrT3rcUtU84KYDXDM6FaGwrRLSLNFIHFPUOpXjHvqCm/E07IJuiH2klU23GB1HrPC/Ba9CpB7XelRA+fOjI2XrOK4nfk5OyYppAiEoRe1HlTirAc0YVkJKjlLyT0F/eTMkM+o/PQIiKctWTGBJZLpzin3K7jwlDBGdRg1e+PPXbfy7GTzRSxIcUMZizxPM2dS2D9j4JhWCjFnjpEeMdCojlmBc9vsJEvhmW53gaqA8/ZbUVAYzCN+CwI2PF/ErTPpvSU3oV1AXeAAEeQE8Gg8CyZd711d3OSPwPbpJG3+vQXczyZBqxko20cicgppgCWi5AkHwzJv84NJv3FFHD59SckHvz4hjwTMtISqJAdEPzO2GaWd+cHLzi288vsdUEYngHxGgeY1q9A19IskVRVJKB0gCX+ooYqv7av3pFHT89nq+tKzlTD0oXyPPNJXL9MYy6eVuI5AvV9/kiRWoc4WJE+V3DX82sWBiUrLSbwUXZhDTeTQ3BuEwrAgiQkrbbLbP9X2690a7L4DIUeUcj6V0CcPXqOeDkZRI4ZIH27OHnszH4STKG3lgcR6y3Di0oS6Z36qmDE9Sv2Kd/GUYhlD7Y0q9dFInY0q4pFPMZvy+OFUDZXK4dFOnY7K5jFALZxy94OIwZw1O3ozp1nV9FW/kXbre8EFO2o3HQ9hVgCiOMDlS4AumQeoxwPRYOlxgPDLFf5iQHLjBCnKPAFujcHjAOqwUT9gRa+AZu2DtCWCGOrJgRakUg1tUoBQ8oPKUgwM2jtaIgFqpQpTjBfSCqMGLpwZRj1dHO0Qeb0ofiEIaUIdY0HjqEdd4d/SD2GGrdEY8Yge6Il6w8+SRMFpHf0gUe6U5SYsP0CPJgA9PIUnAwcFIeMYMd8JK8Ih1WNV4rPaM1Ygn7C9WC/5hGXmNSe038gbP2DlrwV3de2Qdch+2xVIwePOFZet6l3RYBYTVPrFmBG7OyAb8eqg8VfyqCVkyzr/Q3j06HsM28ILLDGqnbc0ZhBA8r3P43+mGa5TmTl/rmsKjq1BdrClzFeXlmiSEfe1fyTvtam5BnJa8XlMXw7lmCdrojmuT2ikseD2mVWh7LtcUHMe8XVPvmPJruTzbh2o2CLGDX1v8m3DD6huPYc+6Crgtjje3umfqj321vCGuj+9GnEz8+exJ5ALE1fIBGo6Pk5mwxNcAoqHoYaamJgBX1wLJkALmnRR49TWQDREAEIBSayAPW4CekhIF33uYf48KFUvQiLSJyTUJ+TY5d/71q0KJ+8tkyvpdD0vjYg/FfH5fWPj890VhNfj/1+LWOuf/X2vrQ+dpAMr/JtxvccvriPREWb/EHx0wD93at3gRRvCbKfv33xfDNnS/LW7jDp9te//wv68y+O4U9KvfjTs4F/14QJVzR+8qEzSrW3IAGzAt1mQ2lnV5QJ8HdOaitfqALQLdHr9KDoZ/YLzmANjWAJgAfEAB6wGkCIDRQpF4gBbMr/GVhDkPsMd8i7+4BQTiYUA54PBX/LsLUzPaWRWtH1GstawUmg1IjRnq5MXRII7F0lIlYGsmrXWxdBw8xFpals6eUM3Wq6J48l8Si4Y0pdiNqfn2blW8+hLFKmSlueeBRc3KRl78dxHHSqSlDw9szZ2DdUHD6WCOJZalzgLVlGpFcTNKYpdRo5d2Ur1Tt6r33m/VX7CSlR7dLdSIWqraV0+qviCSll7cszX39tZF4XNwECuzLF39QzV7b4ri2a8k9ufZIwXlZNRsgB695xRRDqO0gfYIqiuKP7ms5k8riRUOjEXmOGQsZSp5rCVTc3EWly6erIqdWFqz8yqKNWeLf/7LSv98WMeigbYm0Q1uS4mbvPiRWtb8eBfHekTFmy9p6c2LIlbB1jy4SkoPnq2LNTskrFnbDA5j/THFr4tl6dfOKlaCag5+RKWDB0Uxs5bVzBwksWaXV+qTLrqbvEsQ20LVbMkzg10x2KJSYyUpWLmMWr2okQrs3yL/NZvzxZiX55OXn+154CNCSbf6TKFqtuSZwa4YbFGpsZIUrBxGS71IVAT2A76Uy8RF6+2h7uz5B66Fl+MhxJxcLE+3lmM7/nZNPR8lJOj+ga291L7Q3ejm85prNpRi3HS9XjOml9Y4g+x7xrtxsf8ZoHs7AuOnzLfJTf7fS3YQ8n1sXJ0RvLUqK2iINpsrcD3N29fjuKmW5ixjb1q4e5Nzj+OtbmkvnpKOZAo6hiFSj9Wt+V8g+3DznPTRF0dcio8SzNpjf9E1Zid5tfidffINHMu/imyn7ZBzCpOtXbFb2w5BNSGB1FR+AOQFVLvZPsPBwDBPAaDS9XbBMQiMQ4gw25hj98L/L7gctGLQ0JM8iv6fjQ4ZEGA9SlCOyGMHChGPC2yOlSeLKEfj6Q+SY/DWYpUDjgEAABQEcLarzbsM/niU64A85rHBw90keKEnPTXzwEbtQYaz6cizm4VbNA/xX58dLEOVOgjDKwgNE1QInhnakAHnKEEx2GEDUkQOAGS5pJDjUvAqm/co9KCGuPQO6t+bjIHGMY9W+vckuH0aBmZtanezzDUwFzkY2fqGnI3PXdT31/ia60rmy8idXCOdurLX/MiaJAe79gBAWgDGAsAPQEiMA0wMAM4BSId1bhxjonA/xpxq4yR5lebEPPitXpqsPGASRtwimgbZkm5+Qrq6YWvLuevuSirHxU6GH4RGep67L2RRsaFpbE6geLF1YG0L78Po/Lbo0u/Vscz29FjJO63keJ/Itd/gUOu35pEkkW/sj7G5+X8+eLlND45t7V4QRHr8jBCTW/3oOMR1q0ydI+l5w7Fl+3pcU3D0ZLX2qtNmbZ0xCGqcwTLPaq/vI0d6H7Nv/9beodnyO5xYje9cNOJRun54ad6eWQB8t3c0aSzcbQ93Krr5L+vOW+XT4jpEXAAf5cGwnG9O6LZy5RAZy9Uo2LFQjLoIjffGesh8+NcP1avKqnfq6PTSVSkE90VfqsFwBmWWavednMBXUzWI2qnauQYC+/Htcu+5azV4mzsEnmIFitzJbV5kjxeT5z7berl4GuQ+5wk5u9SjkfTVG71Gjf71PuQuXXqNrEdvnPOTgWrfv4GvQO839Md8uBjwFlnz2vzntZL+C30OvEU+eaGPxEK//XXCrPnrBZoANrxD99fcTAB+eZUxTAfgACAdx2lWr/NhnAvgYGYJcLkBRxo6Tf0ZeDGrg2FeAJqUUn3PSsOgjwDvPTUv7Ny1GUGfHPhbjyCeqOZwM7iYORnuqJkZHMkXR5g+ujZb7qhh++EMXsIG517VMJdw6kTcdQO9Bii5xrx/Ksw3J0jMaXKlFj7Gj2aeO06QHWeRZ87C6tPM9TCQ8k3FixGKdxan43GI7nKq3230eTzVnKg8KdXv/tTbyxMIHOee7kaqzoWqE51q9nQ3UsFuJ8iVF6Sgu5G/yl/7tPL8nXw+eW0sL9/9GLM7+fzjdy1vzANvTHaqeXuV57W7tTY/vDYJvwt54e4gzOxU88sLs+aFBPTf7RkIERRvpEzs6xI0RihRktaItSaiOlLFnjQCo7YgF0GlpoqRoCYhiYxiS8oSuVcCIwKgpILIvxLKPIoVO1JuWOsE1EfQ5oVeGYnW1BAiAhpSthHqG8hH2KAiDYhdTZaayCuBFGDFEsQlK55RaUCZYiPj4Z+uEggPXHIJP+QAw+iYAUjJjQBGUMcAUHLJ0CZm6NgZvzvsetR0ZAlmd5+Z2QU4/lfAGdRD24+o/2LLpqj8Pd1vDVRycHLfhsX1TRwZuluLyApWUaz2xr+dRkvs2v0f/3B+N9YR1bohlYvLSRGcTCBpfzy5uKY43+TSFBx/dg4LxvHtXbnLODZ6CHuApyX7zsU+vuPb/vPaAT7fyF9h6/nw5x61Tm3JLzE4DoofB31s/z/3ouzvf6l0awR6fYvLlFdeZr219XqTe9ONcdlfo8I/p3ZYvCFgv477S9E9L7PSk5j6JOryqGyOWYfFnRuDvOz6ffIy7wNLD399KcFx0uF7efQ1p0f3Y6vho2l8EvfHHT/ev4BjHJWzoys03vNrdU0dPI4+cGxVawh6M/azwH+qUnIRhi6dSJNzBT1ayo1oVv0tg3kPqfmoFftTu7s0DNlT7+LC04d35HXAvm17UJa0DEugpim5C+BsDlcVPkWpUb1tmk+kKGnmMBFu01t9w5tx+UqrNYAAmpyq7KPIWi7Tw+OHcfIQtpRuE2/5hSGZdzhXmCnAErMCWc5wMIf4h6RzkFDfgHxKWh+CBMYpFl0jso8047f4bVLiTOU+jn4yt89l9uVEARp8CG9nkqcCMmJbDum52yNW/85OehZZ3FVmctpKyo/y2RbihLNbm+yM/xApdjh0qyltuWrKpEPWL7OXffdGSqQ1ciqFrCRNo3LqFOOeqPnA43WMuypj4uaodHCiLTsxUMmY8fp7Ug7s+6+EjMyBUjoK8U+0pEVKfsyhY8Qe5t5ZsXljpIkyN8b3N+XkESn9BrVU1qqn+hsjXhDwH8cVlc/6O4Kefc4cqaVFQd6ToZfJRSCH5bIjfYizUpL5pNeMy6BlIlLUaS0lXqLn28PSTgj1sqJF+a1tZV/VNXbIE6qHxnDTfPK38g+5jug/ay4h+mxkYjviHU1FUkpc0kvmtW5sDNNlqcUYec66NuIHgPTZ1qifZZC6lKiV8M753cBPYfzbp6RXjmRIS57UTNNka+VEAUfQ5U2zi6kds3rhOD8IOMOt6tdfAUH4KIgwyXShKcVXbk2VYVYsAmHnhK6tpRGuuQkJxJHPK8KfWrHqOn5fgtP5GsfI9ydO+DooJX6oS0szoiDNeVCKnrdKyc8skBFKYrjnwySnVfhpzYWZykYOAsVYGz4q65lX5t4weveBTJCdfX7KQlJkbVkWcky6oKu0U9ZBErq5ICF/yQa4n0nLUPiezECJUd08mSRN8S4TvJSGdsXeY0bBFCOp5OXyOTlPtBrPd6aSQ9KUW9WLtQfLXTrWMPi8z5OkWRql1pGJEaOVQslpKVFLsnL+ptKBDu/ZMw+jlmSR0eUCiJEPZEUaGXR1A3tFDiLv2pdANhE0crGCnKsgLRTNGqpfGLX+tKz1Tkie2jAkCdXlZYD/tDrxxSjZANbl1nA9kPCKhg0wWW/LIE62RaYW6JoJU7cUMK8iu9bMkbKO4m6CCVnqptYiu3QoTd22b7XYbU6Fg4Od2yPd2bHvpsHVfRHGYoEl1qUqlbrmuDeiHMJfG5NbjIb9guBk2TZv9KN0KDoYjPmX9vhgCMVZRaVI5U+etaL3ICb1ukmYLxT+PsG4G1QyP7Yao96LReCSjK9PXkBqnBkf1VqdlYfHmQzL6paEO9SJAFqbfZnUY1OkV5sPSh2he5YVztui++WdXmsLhaWU9dNMxcW9St3I7ebaPDPVTBb5XqBW18z5JMBEyXodySGAikH9P68Eo6uUd9KzWtb01KxmqGPljP+agJLkPqBoUh2BqMUDYn8RXgxqWSW/Tuo1Xr6aJixmzD7bq7iUmcIwHe+/wYdF/IpnDB6W8KzO9P93AZyDa2X/rhiz598Kkjv237cVOvhf1xJx3Zcu6suXr8+6zn8dhUjkNH/5KOPj1tdrzhyafw1Nk/3o0+XYPWv2+sqH0+Vfe7y+//iwy2Egp7/Dj7fZg//p7ffz459sP8l49n/ReP5+kaJm2z/xW0f39/V1StAdTJ/v2f+tXsdxsd+nx63NTk/X++v3+zH5qqzUY1N+PueX0+y5+N9fNfm/xjhs2oj/XwnqePEjMHnsmGD8rRWkb5w5KdpD960FXZVtRNtj5BHvEP3NrczC1Yp56bY2108CnraQo2wLX7wm2VboSzI86DGhZwvelC0Qm3wBXh3jNXcipAWmJ9fQ0CTYYnNt+iZSY7Tm11PLs0ZD/o20fgLHjZy17zjM5ZbBKlrDVK4jbgk/yEiO8QLtSBwjTWWp8kwWeNnEREGm1AJj5gQnV1tTKrLTCePhHf4/VTfNb4VwdvcMdY7I0xb4dJytGrUGqSdHFPVhi9pAnY+rnFjyDFqZ+u2HogdaMke0rUixlmhzjWthZA4jxzsb5YU/a907x0cEt8HrshbFdbWi6bB3CnnLI8y9YER110w387y9mSvEDiQ119wvE+cm0Pwqdn4l4XHSx+BB20aBg5MaZfV0+Ipg0AwCy+9Yi9xWh4zP10Tno5xWTB0SDOSHTbKSc6wwtIoGbHRUrk3uZUy7YZPu3Os3nqIf3ISSo66EqjN2vcsoVI03QROWRF1vDUIgaTZSiw8HtUotpJ7XRNjJVNWJP9VwXBGDeUIMxrYI8vMWxCHJM6F7n9k4Kw+cBHkTfTtdGzCuHpxief6wO3HOfyHwyEnFcTCQablt6mOOgkvJ7KYG0HAyQu1ulfIGdjtoMP6ANck9AMXXPz/Xkkn1YtwvmEvQggk89RVOjncoRuzoZQqf24KbLXGR55OKmit4GbB3cbqZXroqWPuDo4rqV4YOamduNJ2VIhuSeiKfEzD0zOqmSSEAJc8OtAGnpgiZDth+nV+vrH4gD59sus0W4zB95RloOm+kolfcPneaw/ROiIvQCGNzMatcf0ZIYI1FvsP2PbtyOPSBLyMRqQpKelDsI4UpPDJY+9AxEPfkcY0M60XeLIjB6MmBqky9cKmI0kd373LQdrvk5j6BRjuNJKNfLjEf8vQWSt3ybHUAKySJeleAAbicqXkv8bp+aznt2/zuqj/FQCyLHhuOjio9Bsq9Y/ZSVO0+W8UgHJWo6dR9BXdo8N5PZ9PDIbZF+oNS+KhBRxtsq4YH/WLnIkVr6ZaRFq2B7VcPGnZUU7Re/ZBzgH4VcdxS/DlTAoga0HUD9PT6D4W3ObhuKLyOOqYYi6Z3WnTX3/XYUFFbRa/rpj81zn6GYtGRGSc2jTqwBYrT2CKYorL09z3nZAuNP1dw43TT4Wl55cyPOu+4Kllq4zwFAK/DLeP11/uZd1Kr0XjCtOvlZJR0yvKz7OtFvXlyDXluTbM4nj8qo2h5EarasaNBcNIODFBXG+/J6Gr/McLC8app//3Al4LXsHj8hFXr+f+qDT8cruXNh83bIwI3I1/iuJfvg9GrWrTsxLbwUeMYW38coe4oGJowHTehR81hhWlnmQQ3e8N5tcjf5kabM+ly+mUhcGm6YsxzPraxJBSvsuNQp8rXCojT4dCyZKpAkBN1V83RDeyhwdh53cmI5t6stlegyF3Ure7uTH+Ahqzxi8Iwt8dsjauHcit5VSXG8o4dWINWtwWh9k75lm5OO/iEnts0oogLIW40YNZzLGYs59HAUCDie2k0hw5yVovJ6nlf5KpITwXmZ5xVRZm+Zt6IMaSKdL/Ip0GRt7pJ2OFh2l+nI4QO8l5EIAW9MYBG4Q7fMiSSfm/clljZF/9gJG107rFL65x2QZeEtJQqhiHJeQE14z0jMJe2P6QfBxVKH81UA21ZTsFHvlIOIo7j2OMCVbssEvqURrhsEVIyJ/J66/CpcEz4BS2iYv4eUElE4Ht9hXARHeHJtF74PSS7TDdLyCMxT4sU5uN0wbxDCR1PL4IksaBIaN8twCLNHB69aOo0hTn3I3HvWgdm61S4f1ztTzII4hOlk6jK3kiHXsjjHzb5W374wHlQ4Us+gqhae8UOuXUPZnVWvLspJVKX4dubgg6S+xQacnvj7xKNNUMj9dnRVt3zxp49OppHpa8z/8k1M2o4ppY9dL6fwKhTSTCIQvat4zriVIR+jgA2TQprwkn2CZCvPH8SMguH1ftdt71YIZLVK3sQkdpfD4jCir8kuq/X5xTGu1VNf1Gu9sf4FFvbx1eJ7siONUPLBNo43RVHt34cLtVZHkDp6rP5ydQIhKUMn7HTXQlGQLEzOQrUjJlqLzYsPuGYHnnhciu6ffk5mHOiubiHAUhaM5w7t0u6Sbv78meE+OFNNncl34gRpF/BvhSeG5vTHRCWxCoJ9oynm4iNiLKYwdAlUb+CyKDtA6810Ny5Q4DCMncKFGy1YYAeeNCziHMDbmzd8unTYWML83CbUHAcyt7nW0+q0lwuGJhzHuYsu/fkEqzLYTXDQB/FZz5sy7G9dLFTHKgfdZGGQ1Ekr7iYpjkC1u6wNvfAOx+41NQhRzuFLCBRkEGk72GUcRATdvADTFgjD4QFqOP73mxqFG9tQTQjB1Ron2axWtO3R9J2sx29XVn0hSNmadxdnG0t+Qgnl0DgEqAECbj0Z8kmqozXb3kkLh+u9XrH9iGONIUbKeKIahylPv5y5x9SNxVV+Kh21gMiaWSY6WV0DQWcWrM6UHSKpkQnRs8N+EyEEnvC6g47bK+7J0bm1bqcL9gYphRsZKCjZnsvuVvIZi6NOeStzOaKN9LQuqRpGvlz23bQynRXfgdYenw567iFJ6kKJTwox463UrbMfDFaP0eJ/rMCBrSGY36RG67HdAHNtWfQPzjzeS4SaWIfbjOZg6dEOguhNYrJA6UCaGPY2M/OUpWASHTS1EuhVH0y3Lia5fCpyuYM4G7UvgSwnogp7Wn4TxjYEXg9PR89lI3KXd1STUaztqRb4FqX2pX/XFzKD8r5HXCVWeemiQwn08GWUjtGVp03AzVfqge3w28okU/3oM0IrDRjTUG8x+0kWRDsgXsaU8Sz3KIOqvFL1F5GVJtHBP5VhIIhGT8srENdgmbacj/6lsIVVC98T3WIvjO7FN4DBXvzzUC5iEIr1S6OYJwUHwXpP8FwSSgVyHC7O7f3v9tyRn8cLbG9XHvG6bqVuohTpMzkoaWycy3o5T8d2oXVu9X3mN+RuzSuD22Axu7GDE+TvuabYl/Y6+khpcKXQzxD6dZxcYdaw79ozD2cW8KegQH4LOSHc2HMc6iLi4IP5nunvXrmWoOiowgXOf8CdFj3dZIqDUUzFvrLinsyHbYC+1OnBsJLfz+J/w35Fb9Ft+4uvwNqVUPdP/unRJKs1exBv+ymk7g0ODAzV5hyUBNF8+obIQ7LoROcKINZVWs20VHC1x4m0xLSVX9xn7r9qDD5iHtvNgDK3Hr4wCB+zaYJcaIVg8YYMSUZOhOGV4d2N49ij43wFgFfVPHJ8s4v09RX4MR2vIw/PDqNslWIzdmuW+oBrcXGqHdigG75Tprc4N8C567ZffPa/L54jnoM/xP5kecSzV7+Zf618HtlX+Q51EnxfwSDFOkddgfMlOZY1XV8s7ar37NOfTQlMiC7MTF9iYNfr4CMXEf1/r4/7kB+Ks7at5n3b6EuPTDZ5uy0AhSPK1EnxvbQyuRrczPo9G8iJ22JatOf34ykCg2C1BJn7NuCfLRmrBIsvzU0WKA/kXD7o8vRimjL7421dCAk9B+HwqVM4GcPrt69xdpiOP+1eiEiQWvG6bHD701teAbM/xKPb0C+UKgD0y0KMqrnSmydpK/FvppIvq3cP+SCCSV3n39by/md8vGdo9w+vzYhvnfkk+eXdk2XDqTu/E754p2/XJaPLkaPwEV2funXuAPKOhaacv51saHtLK+ZGZ4ihuD6S8wkEOE5soBhSjH1ISoW+k+KAqILLJDygkrEMAJcqk8Nlz/pCFqRC15GKuHoJSxEEajb0QznuQGKmk+NF8hwuFbyetmuWX2CGOjkhQm5kjdasZxMN6+l3CcJXFn6rhAbMiOR7EwXkNmYIARQZi/Asct/J7Xir80uhxQ9iJMQ4u8fhvaGIcepEUQWD9jxYbFBI8FgUMJvtcJux9QnCIVEWMiUyJ/6tXARax8JAAMAJXfTRYcbHXFzHQ8BFSAw5kFrF6KAG3YQ2H5FKxykBi+zNoiIS6iirOoilMXZeVf11xJa7ii6Pped2o3OS06Kc6JSYOPYXd7XtCqUZSY43bkpu5pMluCJsXo1HXwkHENxSxaO8sHjk2wm9YFh2yISKIee3Iu8JWoaR/fYIH9tsaOezhoDpnhWtGq5PnAw1v4Ycf6bxMYyCR5nUptWmZhBOc2+NvLImhLyR8TbQBJtmoq3C6/6v6iB+ZiKriL1+ErRISOt4gYLJ66vuAv4tovVQrtXAfvEOEVIC6UDx5ljE3lKwOLYHHjq74C0XLEYgDrEuBaH1V7N5QlElpgFKDj+Ornqa/vc7dCLRfjwhhgOYgnaUrEcyDBeM2An2cvL2yWJ/D61FpwRr/9aMayX0ASocHzQmpDE3/ApUDwyJ3Zcc5qNuF67/kRMPG4nOjZjegp0GR3n9yJhIXIyUv7Vwoy5x8ElMgOmSmAnVu/RodEZ1fOYgQyzVgP1ckoxHPApAYUMAOmgsggLkc7y5EyRXFE3yKYbjfwzZp9WdZe6B26VOC+CkuszZql/nsC8jbvd9oKpIU3W0WCqVXKEQD90U8al0HlKGXqo6NdzpoROXQ3qpK7A52v5yO0aAL3azYi1lHorKnUpHZ/Te21Cc+/ZVHFvBrhbRnFt9a6l9VFC+XHNBrAMv4v8KiUnbdq+g2K5jQAN7pUYJYWaYPftfqOAOU3TrkpUcNR39F3vjrSSAKc7nicW3OA3CKkhB5K/QXu9Q8PfWmTchN7SyTtQReYXb9LiQ3YzmeUJgQZbxnUbuBAUXzaAWkZOAnQK1yP+TQBTmB+5/fp7Dmow1R1rrL+ewAU2D7shWG5pllzcS0qNqseghhvTj5mvA6yF9k9g6O0qf2s6GZi7gzbfSPy9rfkw+1Av/co3d3oxy5Z3qXKXcjHdy01Yde1DOik0Qeu6VesfsbON0nHhH5x2hHpYZXoWhQ/kOoyHA3GN8umYl7glWcDmbSY0ahi6Lqc+wwMmdqpahOCO1P5vS/HPOtAFk5qOywRP10sKTvAmG8SlmBmmvq6Yt9FrBIxVQs3wBIHYTZYiTrncEnw5Dsy3G6gpvFb0hiUnhWJBT+1sXOBIdFWBdUiOMrI8cl3BTxhOwIugdpiHVbPE4CXI/ndggJduMOimtxART+yI0VGihp0Z+zAKSL3DROg0C/RttibHHuhuYwXoVDKnI57sHfZsWqWOMtNSvXxOeTgUdY6Gzgy3XtnSzQ7VFqGmC6uUqscaAzSyYQyXx0Ngno+P0dzbiaNOl5K9amg/HqcdoqMbzDU6Mi03sM6YAblabJwsBXfQVBpIf45yaITxvQaB1A7qocCIVmq2tCLeRGTMDi2XbQhbiP3PCvaa0xdJbSinVbHreDFqTKNg4TKUCfzCaTWcpA1Sui+fZ+ssjhTThj4BkjrsbAbufr+EHOFspNFGS9Cxby+CUMr+bsb10jksgazLumqSgj2kwlF0IZG/d5SrMVTuTqUIvYDadxayfjF+/WMM7bWW8W9FQIBR/A1Gc/4CuGQWuJjEzIQz8zkLo0lEMXsAH+mnOQKgAtMvzY4Pu2tt49jiLwgZ86sxJ1SRdU5Q7ZtB+geqp8FAYcn8sS6r//ZnKWTQOKWTraga46ltHDIxkI1LgAlMrBEeJni4qixO3jKp90ipH4beGNQVkmLhBzECQ0abAou088Xqq258PrsfKvHyfbAUD7Ru2s/0eNoUSi4gI2TmCA1IJXoOt3/dLlXgrlZxsZ57td0zXuTShGkZT718qSF//MJwvGA0ZYI1/TrNA0Zmp/QGRgMTP57n0xPWh25CNH3igD5kASzC1CdyUlMs1tPnmgDZuVzPkj49xUC2h4QEkNE+QKRgGTzjZBJHh4OJPOYrI8hmdzw/0jQ7/f20KKZpYkybbdLZsNQUje5YZ1deJ2mOlGfwoTfM1qw7dPCkIiRU8mPSmB7MB8wu5p0Hd6NJOWoto5o9FAtNU+6IxYvAxITbCD+6xL2T9WUSIRXf13aTRopFFvQsJq9X4RyJ0+wU9/bPKDsl5noqxP3O88fb8SgyES/+9OpMcZ0Po++HVVr1mV3cCpk8eREEkcXgay3W0DRPgVIn6F3ndHls4suLxHFJ0bP3DTfp3jRgT4tOV2ZBzaskVVNfWClMyfDDjnWG5dIxTMWdhMpGesFpUrFDQhHlc8niqZd37NKJe1qpxrqvYut18uzDM+KJVjqWsWdHmVnob1Gtw1BKgKNqRTSR93kSZN1y9JnO8sV9/WWrsciKXHbTJgYhSwfHy7ncyl9lEXo5xqWX1R7H6+RdPscHIFYOdeyAvscwHqhDMi5wDynOCEkZJLF4wlBB5QIJxvIsCFHbvWt9TVsSSmusqYKKA6gDs2bXUDv5nSiX7hjOqTpFG4m+kzr2yNKcgWIl0dPxUI/yGWSrCdfWf/peaSpDWyYYkmfHtbPbpzwlfNERKgUudfezurPumC5cysCXbJeK1UXKXVXCoGpYaMgamq5svNhtL3Wa2L8s/BkojxtVQu2w0uh9IayGDu+nvSbHyTDS66FTf6HIsyTO4D8bEMcrDmMduhGy5eySQcbgn1JLeAPPhs1TJ6nXhhzl4tpHG/D+c92QGe8ioI/TiDqvClgCHx+GITD62gWzgEZhTv68VPYfFljJswIK2vk44xkR0PDxUxNlHNJrj4MizRtfcXTGTQ3hsKyp0+gfH5NNUdWoZ7VP2JfEfDHGuuNY5Xk/GaqWCPqo/wXRHo+Wrvt8L3YDeoMxmyHgGRK5uAUZosTZlgmdKCSHKxfwUmbVd6b49dDxoSl2ydl0UL+2zQNQitF9lhFxadizlXkr/uw+crg83oEIgd4/ZtUK1iLt37ry3Td0JoQfh2CX4jTO3wdPw+coBn4HNcx8wA4CFAl+YlppavrxnO0WxJ9wbYyAE1go3Za+gW6QG3+8emrNg4s4ncPDWnFL22Ji+bMlU3q24Iw+l0/ZTPh1004TTxi0xmz4IUHGhCh+MsmlsTYs7r7gF/n5+fh3vJyA4I+mkQfX6Hik0/AHRdxiarihv9lQNxfKbqaS/Y88Y275t5AcoiNwy8uNa1gBEAGOcLASGLqcH9+n2dlkXquuH2CADEGqhDgBkDoY1DXd+9K2/uSot+5ym+D2TEcorwQUPZQk/nJ/jJKsrJLeaC/PucTKqH5hExrWLPVSwQ+CDmk3FzsbFA8dLRNxB7hHneIsGqv2ALHWws8Nwf1adNAuW0TEZIqcHZ8aKR9cu2FFmhC9YpQOopUs5H86sNUz0+QJIfRWoxuN0APh5BMkroX5JZp8Er+O0CnetoS3l3XhEQo0gd/RSq0sQlLWVvFIiA675aJjPOIOhDWrtbWloqRHGQ1VjmOiBj39znhxDAyVdIQ6R7Xkszl4mFlmkCNe+AV5m0kbqcvF9oDAoWDZa2uwApcGAuyxSerURXj4z2Uy9njlDa/C/fZSCN587ui0snVevr0l8+sFgT9muN4EQ3XykI/RkSfgAA/aV2iY4uSAkqSdD2kRKsN5COfu1NsbapcuTlH+XHNe6PQcLnMWMgrGTxFsoZiC7ZdY+Bh3nfS25TpWtSlEP0YIG0cQvw9a35jO9Zus9y3uS/VQSwev1FFsoZXqPoxIFYMyAc4E9cvRI0YuEER/vcUc4cbMvhQbv7VwTpREZw8VELAh6OhHoXooqe5MuP6+aHbXtJzVmcySvXYjiCbNsMti0l2chM73YAWHX6av+7Gu7Vo6oJ0hJO8GAChaiF0cV+soKgB67zKWkHpA+XPLo2ny/L/mLXy+zZwtM5e3Gdw/cvOuyYwdPmGydrudqVv1FzKbafWrddLVcLHs070xAbFagf+uq6h8Z/fpJHRNmgj3yXyN/XqPqH66APcSpD1+V84/8CRjPDPhPtJH3u/3o9sP72Y6HmdcBlyoewnOhx6vtx6n4UDCnlxBNaePz47NId48jGh49q92TYwJ5Ek9g/74a37dc0R1Y+DRmbpNZvuFbfg9UulccblmyWpLA2WYq+L+mMzUn3A6sQaxpTtoTqy8cE7oDGT3TT2t9+mnlyx6YLAIRqleWaLag+kN+xuR5/ihUlTd/5frcm1QPOC8hnpF9yD8IAqW5baDPONG5oe8HgakHNjOKj3qcmmT9dwx+fI+zLxg856O3nbRk7Ccp+21nG9U5WDO+y96FF54oIQwQp97hlupP5TMpcu7Ow57dOKQE+0D99DZ1MWjN9ZeNOeB8xZJhj2xXivvDNRBi0iFY/DDlTqGAF25/ggzCpONT9t8Iu+LkfhFLp0bP9vz4k+nGcuov1Rwigc9rsr7PFiOj3mAH/QA8atENAjwPZ0JSlCCtFmPlnl2U+WDlo7iMSkYXG1X2kBQuBH78ae5pyn6B4CpWCvtPRMLsWibEomNS29OgpHYFayuSZ4/MhlE1QozHzUIC3PN1tHrCLYeJWSEM6DDejU7bh3AZosGHL0MwLWnASOcxKOiLWbekypok5Y880YygfHt2uwdxWzf3VIAjr3qdA+ts0Y4hb/vjOmuDZoBgKkCZsHbkVcC2bBniKioP+NCfA/DchBzyWrOcy7rRA7bXqFMYRexnMf6C9thjrd5HnebX7a6fzry3XNR/6syJ/wB3x3NmM5OT5p/n/m4f0vo2TVr68VpwulvcE9BhTGpVIHA/v7aL5zZu7oSNyqgZmM3zzTGi8oFTzDCyYQhgIJ5whsuZO3HVIIQauk0Y4CTw9owxrGiQ6enZyyV7vAIPfDmaQ4nadazLpKZcyDbjWEsqhR2JDv/6qxdVVfRxSiTz714rZX48epWcI0rQU/He2GQH+K1dXEUyB9pGJH0M667lsyeTa4qLeZJiYWM48YNGgblAGHDu1EbruNo3khr1LVF9VDMpTSF7JTbx2nw1MYPuW7YkcwL7t7OwR73fJBj3TYfvsGZ8f8e7ILNfEIs67+T2XWGgXkpal7Lp+MFkcTQC7/wqt3pW2nUOyfsNkKPs3DabHK5bPHPjBbVKT89Vx8OljloDd20CbOqy11LXPOp3hKeFSMKrDJxBhePa+bMkHm8QIuCekEGU3oKRFhIvx26sa5tDnyDNaMu0mfgVvqjVEeIHxypX5LDTRcvqzo0hrv184xcBd/XIfGZxhE3qoj1boKpKpyxtRWId0zJzK9HZqJ5YGeagvE4fmzJyKFdIHEerLhjZI9iBOHYD4cU2m9f2WWN/g+v94FSgVgWBenxRIOguWLDSjW7uXpnPZx9kF5PXxYWxkzclUrdpp2ZeevRYmTalUOdHCMgtWIVmLrzyVEhf+H7Adc2ZJLszczuTvMi99x2Uxdyh1etv7nAlIqfA97N0sStHaQwu+zHDyE3cJqfagU+ElhXRIoisIHt30tS+U2Oc3fkA3C8Ebczve0XkjqWB5zllUJqRecBuTsGbbMadiYnhxAM2zrJRKSVwcIAnpDI+l49xk56LoPRg/muEjLADchsvq6HICtEmHg92JT4G92LT7nNcrneMic1JMsmMTjQZPfm3/ivqg/oVczZFYlTrKloVSuv2NGC7UIkHhmksBcYXVmhd8XyLRcicq/I+7x9EV9YRB1GOlW8uYpBo7fTHi1bRkeeJ03bj6Lh1pZFhovHiSCpcKCDYvyhdxxzVLsymA30z8Xir1krmmRckogga37X3aAtY9j8VF+rPGB6OVqHIUvL1ovbKHS1SLXE4qr7hHCPhhGwDDVLYwhsw9WaPyimaMJAv75WtcXUHzKKHOUzTUzeYbtbihF+B26D85z/AWfIecuDsEintdtg6i4JjbpYt62Cor5tuKbJP792xqEnub8ZR8PXhQL29iRVCqTeAMflRqzo4Hl1xbioJYmyfDR3gsdlGeP0CuJGIdp9OFXUybYZwvdgNUYzZEjVwTVW73+LYP6QmGSzuOPn6Q+v0GWKeD9lp53TXfDhqp65zhXUXfQ/7ECgkHCeYvMUkcpkl49gAAwUUfRsbkRXXdSfwnW05Mpt1HlrwsMamcPHB+WRBg69HDxrYNzZlxUwiBObNGNvLcrS04D21zy3i/0skjDB5XIcQZYWMb6V0QXwCSRRtN6fUfczeLRyyYy963314IzUctpcFwNjJyLU/ch+rD53bS+HcXrqYQHAD1YBL1DaI69GxgR408LDAUIaGlZYeWgunja+A0JbRxMxvcpWgxzRi2vX10+GgS3MjvQRflqXYgepxoSNxoI3FCSZ1rBpfSU31nOwllbHb/OH7nKJ6Bk2Usl54zMIh7aytzfA9vWqxZW+87eyL2/sJinIqFudZYddJkdsybBi5UlGDPF3ohIr5eqpVoRVdwnQkmv50mF5NVewyBWpESBFjpXgj5eKd8lTu2Xn6icq8atuWiYgdMlUiKST2eUsx+Jkyjxmj55EsXvM9vfz4HWSNJHzl/qD4c/vHjbTfphLl9ORzKQHOKVlWszxyZmDXm2wwGvJbnea4Mm26Fr4bCVOPi3UNyUHNIo1aiK/0R8RA6KxknKKHPMaDSpq8FU//SEH41U/P2JlNz1TiN6jk/ejdeIRQFYsZo0PJXnFSCAhyqGSK2QkPZR2q7yXOh3TRXeY2Gj4AgHgfm0QQIM7ELIzzoUDV18ezQYnyBfuY4ftYwwvRYDHK6drUJpq8rlIrk/WozCPNBq9tw1OJFZ5uIbFzKIq9O/dhf2M5mipfhmGmmd/1vYg0o76BGkZ1UtAlxWPGCHFL0kZUuvWX1axaCxuS3Qsljl9WpHCAw/LQnK5VRmYSQ/R0yv4ahZ7/r9+OEIHhUAHPxqlqqrnBTQsSaGe/advTCu2AGV00sMFgbJVMywANc+PRTM5TUIjvAU7BfPd4fi67hEtqPzLKh0RkD2HnHYB8UHy/eEMmdzuveMNgjfWVNT8rC70c7IuGbhOtjqG8yUbKSXkZM8ZKTYsUZW5S/d4QwxM4S76K01bBzYacVjIOmad6v5jZok/cmtjDEd5ZRqhna0PJ2asOCcBPAGjXbtqfANHjGOq1yyMTfo0cbamZoqTZt4M3y9SodZw4hyBr1VM5+bHZmyQbqDdFHEO1Q19wq6y4QXXN4alnAK1emvpXkIgvJEGATf3oaix6g6hs/V8WK9XsB+29FXebixRuK6nttdxyJwebqB5e+Qtrc7PPSbz+PXL9qTn4ckk8rN8OseY2bp49LbCkspRHQbJH2GP28DZqf0VBOt/L/w2ct/csUpaRVrdpdow/E4K0uhOuYNPw4ZftX8QjK2A61tMO3+hHqMIXMkpiOoLFoFZrFjCKYti5ZCwzL9g/HXaUg+LGPT1ALUUSCxdQDme+1MDcC0OhU5E56mbxfUD86TCoFeyNXbzNQkuEQ/lxkOKPxc+Vj8PyPZM5PLp2SAN9AX9tTq9sGTkbKwu06f8Fsq8vZf+PIGJ6F74ZhdAQifAGwxO3fEBfO4fJi8kHPvUrfmyTR/kCIRH06Aeqy2s67r9ju+KRT+HaWYWa7usZg5brwNoscDxoHRaLiRKVKK5mAufKTcqC8wTNB5VrVC/iM6LwiyeWvIs4vyKODNchgtJzxLcC46tfk3CKElQmHlA2sS7zwkyU70AMutM5rwAhC+foU7Ru1w8njfqFxovKGqc4iYbjzoyGKrlsqEjJ2zhUOqCl6V82OuFW8W+H0BnCZ6QmifIUGy7ueJZwdhM7R/mRokt+YUTo38c8w0w/6YwceuMX5k4A/R6z+lo51L0Kj2wD7oEenHj4y0aIfB2L74HUjfRmh1jIWFRHWHjLc3ZSgbL5fZa8IJ508MzLsCACYLh2H+KZtnOSH/XUR1WaaOajzGBZravHuLVH58qapUAo0HBRBGcK+ZC2KSqUAdVwVYa3QIKWrjglHhiIThwMLCm+keL1PncTqnE229pfSvq2JKZFQzC5Q6MuSQFzDWDc/XhpaEBPRaomRnyZuJTVxa9WQUHfiwk3xnPRTv3C8BewF4eMKnMG5tAYTBqXNQDGQMWoKt5Z0dBVMZLCtamqZnnyCtt+HEvoD+KcLic6o3uM+BVd6gsRpR9C5hypxnFoLeAIdtwaKPw9VEWH4zwCtBYsK6KK8lrG+Xa2UM1BmpKGurGOIb2o8Vmvq/j+LWKp48xMc8FtyyhgOLiPSmttDjGPMcPSr1G3qugkifJ+nd+u0TOTLTrjdFAiBqhU7WFnL6Y31x1+8q4kMyvWp5iJA7R99j2vTwif28tYochC4eXSMUC9ai2j3aMXIioYJOcsNpsQ21chyybXnsdgq+w2By06CSCo50WwO2LVcHN5jOPWMtAsjyYGDdEdzdUJpwvwMgbno9KEBGFvhiUfETetjnFa6ZA9S0cm3/B5omjmqCcrvmHjw0A5S0nrVt0gGnNNhF6lzriHKfCpx56aC//kqJ5WGl1nYzZXm6LphPYQkm27SS6t8peHfGOvV6Siz2MPamqHeVIH1cBtv4NdRoN2gSUkdP+PRANNw1lKjyiu5oOUYQ5t4yo3X7eqi0rV+kcBamKjELR4Aaqu2zDSEfhJOZqhiehX1TQI95WNhEgdIe/PrVeydA6RHWG9mNOD1DzyLe8B42H4sHRVmkFvAfAQwDNoma4hRxPAvvByeRRVZoo0M6ys6Obz9NOjC3WH8w+x4VeO0EVwpF7eZDL3iGpb3kpp4mTaaQ6VGy8CCsG3LtoXUHEQLkrTYrELWwvYMr+OeS+PJ4z4ZHNpt5oTlBLCJsyQBWbDOOQqATTpsdAhOdYZ3y/P+AtrGlBpXibDV4N1PNa8+jRhJBj4Y7DX3HNPim2G5uOw6tT/n8VXvaSSFnhUw6k98vE3x/0GgyEtzjbxP9nYhLEonfbicytR/yuhREe968+8KtHjsqiXPGLiiM6nkyZBQa7KbdCPNbWVniJBZuZyKkP+VnTu+CqwWr3bLr+Zza9SyvfariPmeNRv9hJtb/gaYBG8I5H3T1v13fAs9jq9JbLCqvsYQTuWc+uEAM8a1omTZew4qgJUGZd9fYB6Sh7mIKrOoR95B2U5axp/pjih63GiccGyPg4h9Xh7Y18PtXI8XBJgd9Dp5UzPst+QaPsP/CAVioPVnBJB8B1tiHNtWzN/9zpQ6ASp36cOdGADjHkto7C8j1qaERJENFDHSaVirqatx8w3Kr9n9xdXJogm/fYmEtpoIovNLlk8lMiD3ubm9ocFKvoWqgeECNRIS9V8AN0MaDg4jP5f/lmbdEdBhd2VTBci6FSQl8TotH6vgLHbHvifL6rL8E9drSD6uQpyNmy4afDaDxLUChsdGD7wMZ1lz3UGDAs9mtr5/Mu4GRFny0KrPKHKUIjaZpFSqLt4BTTil4nR0vKRbZhYqMezuVTlzVmsDzliclayCiwYDSghw3u/TMbUs42kCSVH3NBLBdbvPcK2uhwz1TN/M6vPN7PkyJUSpBn3UqS5HawP1Y2HPHWG6cdEmzm8lHX1bpY7X3XLWD6MBG7dT5ophZP879lkpqr3Wrp3WimfHUn7W+WYF7rissdMZF3NRWH53e4Da3GnbKxKLb+5+SQO/8oI3f8LaYYBqEc4PZvw2tlpq3v6PKXqP3bKtA7JdME5DxGwmokdF4h/B0KNgsjhCM7QZFo8et36Al27lACVPklMEFqhUmzcfEKq4WOXVAMF1bKF4XY3BtF/KOA1qcefHkQ1EVGk2u33I4saQu2vPCFrHomXz7pwQtFkbl/OwZ53xw/v6f7BjSdCkAmei3fyk1vb+9rSdExq+3V3HY7STTDT3n5KDmtlXzvjLHS35y9Fe34vSJqK2sfivfYV3UHZNUP0Laz4NIawP1rBjRGHUM5LK5NV1ZrJFpwv+/KnsK6C67oOu15O+zNJs+ZGPuWoQ7fMN/yPt9D8+QZoHCsWOCwfud5DzhEFeI7ScNfZKeCzXPWXqffQaCGzS8nvk2uLVrcfsf015se3GhOGxid0AIjm8RWZ2aDwInjWIyp6jTsfk+UrF5ii8VEv/pFlwQswVpuOQvmRNfxy4bo4mlS76ymLpfN1+OBVr7BnTvo6SNdd/ypQK1OFR0Fwg4CUWVlO9AzQ7TPwKi9xPM3GOQPJAEIqPAt7Y2qmvpcYkB4FjBT58neHuh16FAB+qCR+ITxM9/GvgrdJH6WxeH7Lwd3SE9GWq+ISEv5wBdHs3Vp2N8cFuX+DifBRebomHPTuSf1arL+BfbOEQNGgbhZONEhaN+KZxYF12vmUAf35NX/6CY4rZFp1S8JygjmvP+0vODsovd6o/kcJP7T6TQ/F8OeA1ppWCRM5WCcz+nUGPWBOplCn9sEVqnSyQ+3/MsRUyPghvE9PvMLAlzl8IhxyeoBxr+BiGb+KoL6YUL1023uqgWxKDe2hqOy1m/3zo7yKqjBzVnSWX2TlTm9qt4XwJxJ3JkHvjeVUCckWKPNaBi66DKdF8ZfoiQNS3lsvK8x3K2puFrOTS16jKo1+qm5vx/NUshy5jWoJyik0NbTO18blVYN5Uin6IcCCZ9p+0onqyNKlXDHVgS/ibqBXZCE1G9TY0m9SVoXEoFDIC/zq+bfArMqHJnJy4KvRJqxd/COwwuGkebo5tNIGm0eFPg6FTsfxmYyEnhUNuLHsRgc/5/nUfyUjjUkr+uZYJv+dMqBEo4tHJGBhZXKT/zj8zDgnbWKz0ToVhEnKFjX2SOJmcNXTGodjoovNbJYCvk6VQygC3uEzFLfrGejuGKO+PmlqqZ2ZZkts7yKbPKxaGw+1svmS3ZCXCUIMaho2XDvCE4F+eJH/mMzcneb0+V7K0u9I4jACPJPeh/ESi8eImbRzUm2gWccY+GsGmgyYPjY5LPA7V5QAEXiluKZ+BdZHcJhKehW1A6zIKbxaPN+9KfOdIMvOyBoopq84P5xadf1g5nigik4kuPzCDEoRBzjz+0NFzShOCG5fNlrTjJaZFK1WJKIG+JImDmlZ+m1FDHkTfwci1zfER2h5Ocso8P55VcDq/x3MWO7E+KiHYcQMRlgyz+sUSKZxMr3BBZ5zUXlk5qd58PwpC75PfrqU19jOp8L7AZv03oQ/bhrXBLfl4e+f8xdDtC9X9AXhAbOPhlvCKJXL+f3zorcyTNuAyF9ETfcO6+U9PG3i1yMa/4OukjEqo0FsvhEq4Phm5wY8SA0O52dVcX789GxjfZBokEQY7u1qR+nUcn5Lki0jPhOc+vYtNHAHUSBPGId9LHIhT9cSlyrnvptRVj/xS/h+YGEufA5ZMeV3VanwURsg48cB1iWX3zAoUOUA9e1ATZd3wa/QycOYMewNUsftrpApywCUc6f/l/q+vk7YQ4bfjphi4sxlp9bVdOwkFlNM0uUKdz0+oL3jyjwQRUYtqfxIxiiAPKhOqXMItgWFXnEo6zwigj92EPM/fe2CB52n6DKhk1AC8UxxBLNx1A1R0ngL9606nTYZnp+E5Tjk+qYusE/eObeYWFjlKPZFvdOx0U2vDYQpfHSlEGDetsAIj6SvWe/fxCh8fcwF7OI8sOHOARZGScamcnNujlMj8X1UxPBlZyl+GIUhnbLW0Mj6pEsMOpajd1wrhdBnbOs5nR9FqtxmqqjKsOk9SA+P+yewuK3MEcLjMMZIvkEmUIK5Vqbg/lny9j5bZ0oTsAQ7Z6OwzC9ScdsBm2UELpNKejZ72/k9vYfa9gTTcoZqMQyMzfQz/uEaARJe2y9OHljkfGR3jVOj9FW42kOXI9QGCbqApdHn5HmxySA3PX0g3r1l6uifW0iWwS3wsIEYRXnkHxM2+hJ0KhlqiELiMjMNvHBwUAB/xX4W5l7ywzsMSjIr/uneHafs//L+dWdNxDIxchHPw+SDD+TQRgx1kHZjbdOjgIfL1ZKH4TGhV5N2xhXITSkDBbbA7qtM1LnhNSO/ii/t1rgh9LtRou5MuIEYH038sThHYRYwClZdKNTlYUE9gzcAxouObogr/wQG5ii3PqN0pX9tYW3er653gGL0aK4229AyvTL3uBeVGwtmdywGuaz8BLQVqp7kHjUyg8rRb6PJM3JFvirc4XXVQyD9/qO+5BUxqVH3lC3ydYr1PIw9GfdO4R6W0uMkTpSF0AYteEZB/nXP8aJgJbTAsPlF+ToV8m+RoIDBudIKlhrGFjP9iACJT3eV4BwJXkQTx+Mgoag05e/r1s3aWLoFoBhjMmCOCFZXzMssuADwFBnHdfl6JWm5Zd6DTbq5TpEg4PgCHx5q84GxevizR0o/7jJibLlSzVDlHfDJtQwAC/+LxmgzgRdRwumxNkqeeJ8hAJQp2GriLh1T86G4qEcdSSi5ABJpYeFEq25ePj9/tElmTwN6JIHG0tYuSj/632s6lojObkwFPEA49nYPzC0yAtffIhjhnCPoESvm6+KLBCYl7/plOEJL02drWKT5Tiu86gAfInifuArBctIYvi2WQ+tMSLebcbkRgPRCaJsJ1/z8KzDH4k50S1iOGLD7nrjO9hAqTmATs7jWfg21we4Cn8KC6e8+ksPGpMpvVXxYZDEuchVY35pOc4a+/bEI+u1g3uCwyTo3vrPG9BWCbT/nwH4zMRdifbIdddInr2746zod5L3/MrrXat97DuAKuB5Mrz7sH3jp/CJ/cj3X/EwpMIFAMha93Xv+sO0J3+SkP4CdwYEYJX5cPGZ2hO/th3AIqAOAFgCaEADdYABDcwEGNDAet7iXKbTFQz1RlENvPNV3urcN8LPy93O9jqHxLJkn2oA5cU4Zof9SzfZenxX/floWI7fUbVUmJJ6bbPpzPUGSJO3b+qZdipueejyIrF7Eh8M+qb+F5er3ehiNgqTYIelqwBz1JFVZL8osTiFCjPTXAzchYzbKWpiJQB0oE5p5G7Pakmd/s99/UYK0nF6ZReacvHJ3RTmY2Gh8ZVpKks4qMEq+4cGYsvTl2EEb5d8BKss6Xqy6EZNd94TLbfGOBAEabZNxAAPy5Y7IfzhTW7caFtJpDWXBWEGJVwiNMkhIdM8G9Pe7L50/4gdtzcrIKI7P7al4ucWLZ3UQVrgdE/obHkkIZGMSawfMGPs1yPMG/mz3CgpuQw3HT1l8cO4XuTcE0S8IkNFz6uVchSlKr45ZYopkFz9b9IwGVPCv7vN6ddVZhj7fmU+xGS8RSN3Wh7xaOn2PtJ/QeTCbPqDdK8MOdZMCJLt0cNA09YMF0ddaJG1LOsNRbwN4qHB8Xt7R5TlbpTuWQgrqrkDkLOw8DLHpTHuFqLqg9HfSgeuLNtrKe5eY+cwMdRFjgP4/qPjCDg+RHDqsM77mYrrbAzqT1yjMVfwTJTvZURM0usoXAT5S6h0PuqweSlQlwWMsKTRwGGWRHXoOzmVdKsVVgozhORicsAWc0BiINwXYUibrHIh3K/gc1jALdJQE1PTLkjC8y+1E5anrTI7T01YfjLaIq9vtjr7vCi1TBDY93Nmu33HJbRiuaf74vftq8dJGTVwOFU3nPgDEWjPGm5otMypK5TEBFIwVZQnhq1PWAk+rnwFOEYT3mM3WXEhtp1JSVGFtnhiUAzD1ZgGXBdfH5XQ37qnn8DJgtjTcMQlHpq7zvxYmc/8z/oBGUDSongiu2A/+daBvEg0Z9wKkOZNCU9N1tp3aTwLfeDNl0yhBDoLdLGUi0Du2Mb19dZBQcYufzdMOZkE3BBz3d5XopBcqNZRvnrElL2LbCfC/oQNv/jG/vQgzKGY6SUsqBelG61sn/m3zvxbZ/4lr4BPlliSdjkNhu7JVTMtM9hYvfMZANXynC/Z57fZu1ce1qYXflV//FA0zNFuZNB0rp9DR8jkNIzWCTixI/WZkkca+lMxhasKVssICOuL6YRPIxqbA8BUMifXTVSR1EUnbpmfqx2mAuyS/XzNgX5CVtLGhRoh2S8zUf35WMVwBS6hnAs5ppsvrgT5IgJVnlwNFSSMjOk763BvNozGF4ALYV2gh57FcItut3bW+c4tBxSjdq3aXAbGkfPLG5eNoebX963ZEGMzGpSoiELABJ6vcHOhgEGCc7au7wzYmMEv8w633R4dJe63fqK8DdPKomN98a95+uaqRqQx6j64zAtfNkXGu0bdPi0p/LSZ3iJRTNQFabOZdp/Al72hZlfjApMtvjZ/OG3JsYfNLF8S0Xi1VWHfhVi4Ke6cu3eFTanMGMjF+EjzABfrjSOoQRK53U9AtKwnZdzqo1ltPciLOlA+FahH1pZ3WtaaPfuu83EECgb9cDn7rJiTFcy8LZxNOpcLzUGW/RKK2cACUzS6g8MTr1bqbBr13AUM9KJalL1r2QSLeNy7OPWyxLKeOki8gHgpH7Fbmf5kLHnWt1m+GHHCtxmxITO9RXSbHeMHUkzBFpijh+seGc9dXFSDVhSfqxX9c8HtmjLWwJliof1Fs0RTYz8ymxmnJum29cGaUR0ujsF4/q1T1je3LeMZ5UuuCSxoFQ7pWzm2fkANeT2mQW4e4TWMaeO3pwyDBxf5VZ9raPUDIFYGKnCIko9SPyQr7m1AbRQ3LknG5P2yJ00Lsh0QhOptVtB3uWl7ieJtMLRaqzmsejDoy0ZK+pAz02dU/k8RQ9VmeRoQU+k6l2LUgixXJ/YVKbPABwoy14gXmHzurB718O4XpLqgfDYz9oOyPPMhHl640/diHAmZNiht61EvQsK1+UsDPvJVKrm80HJLgHpxyvg8VG9xq1YaOEJNrxKK9l6dJIPsyuK0Cw42ZC1UFOUHEExOHE8f6OvQAb43dsu77866fUABrjRgHOW7Je+ef/+327G6aH0msJh8KDePlhM7jtYp0FeNH2txpH/GMhekIf1rkgiJuLsyYHk0TYMxY57oTKdjU/Inmsx3LkNoqnc/Z4/OEHFosy2PXVBHOgaskQBnycGpxEmJXV9Xg6GyRqbb+TY2eqHLW3RK21m73VkBcvZIbRI8vWXNq7beM2vYOLhQPLklDPF/RzUY8lIYYa4viK60KNrVcpcD7kCb66J4StJMn2g/2QD4c436RPYy36521SmOuAxCDmjbsi39btciulIBDCRhUCIRhZbplOsAj0eIveKPyLdZdAyaNtAnaTLLOsIlBj8v1aQeeWW2aeIlnRi2Tl2BhLfFpBuO8rSdnl2M7AQ7T4NQKUxVwpcj2qQ7kOINfITv11lzvMnoQA0mqNq8z6W0cLmdzpYGtHuyBNCrIFK4smn+gbPb3Q1ops8K8KkOGRyrp1pElB91yOGzkPji/HhxtuR8mJdsXQdaiYuxZvjnmaVt9Uf/Y7DTeD7KO6TPUo9/olB0BowMIpNQPXqfHykrzs+e89cFZqXi73hDoNcAUl2XyPk7Rbg7Q9+Lxbyae2/jeEgKPrTe6u2QNW0jLdQO/TsScf7K9d/RhoD/JAcwlO3bzx3ZVjf/WMrd1UUbzTX046pol7cv1oYW08J9Z0iFXEZTIu+H5dJlz1yHfHgDQnVVlbtm4VSnraZfnJGdovhrM3nJGt/2otGT4MbNeLryzvYAyk3DiAjLGyzQrnuAMD6IYFwl8A7v/AFigRK9v8ZSaQ/80Ew2iFHIcljnQ/XDMWQit4SP9430Z/PJkDWeUvn0x47yjmHp49b6oz/0qqZUBnwVlW2KhY+koO4TR/qAUsjYht6IbS3GrLgpH1Ujd27vUFAr3r1F9trEw+wiNyUYrMq+bWL1UzVmIllh7YH6/S3SHLxKaEVcgZ+F8MzWu8BVeA3hKrUDS2WvVL9rl1AG87ns0XGejfC4tWJeEYoppO71bhv8Sfjj5cLiHBSd6t+O0UREpvNB3SySB+er3FFixGj/C4pIabMjtWNq7dSHpjybQv6QMfX0dKdgDiL4b+QRT/gAYST2TGcFun7VsC9T/sHOamm2/yJiXJ0Pw+65ojBA2AznJa1xspcl5lVia2nGdIV1Fa2XStTIm5jbR+N07fVZKv1M2Z9fFXkYR3BvEDF+JAm+1voa6rq31adV3u95VpaunVN9jNZueWe1XnvH71h5TREs3Jg1djlF+avN895/DZ/FAHrGjXHuH1zS8G+24RJH/hxfNA7nPMU4wKP69TIyWedcZX9mteyHj9YKxuaNxx3M5qzOfpC3doaRjRJR0AY6TF4RUuy1AQi7d5DBqsMZ/DdQeWDAeIxqqWw56fIK5zH6r5usimIcwboW327CcScN+H549dlYqtN1PpuN6S/79gNVUvn6JapFW3CBn50fcULGDzF0LOq0ki0LHZPm1G5ieJH0xBzD0/mNYu7daOf2dKi+Iz2v4Fhu9TcTl9QD51hfSIdQLynymI0xpCpO1X41B2a87RDtVejVhlfByx8VTqq7RY+dPKTjStbkq7L/R9nL+YefPDUgpJFDpXdAIWZIhgc3yvdu3ctFEh/5cpxWxe8k3tPCh6N328f32m77Zvuvzyqv7kQhHukfyLxTQvODdPprXsV92u+29zxll/LGAEU8xZ0mfimfvTCzzgnEpSHzAcHW0R2nUprPjkm8soq3RCShidWKlBSKRcnb27XErLIeaT9C7Am8VX5ewf50Fs+9XXBjrZmbYNQvkeFhzHxMAkYmDVIPEsljPpZHKlKLZcWdjhf7U79Tc/PKtrukrxkslwF+6ur+h+K+tD4wUPfbB/FO/53Amxt3pAhXsrroiYb7YKT9y4+1s82HLgDVxvJFIHadb58SCBdsOdF0tbofQm0P9n6gl5q1hfHNhBWHaljUm6D7XQuHWRxW845lWBOg1pnfha18dQp73Lyw3b7PcxqHK0cj6YdcsLLC4OebwQjy/c9xq6tr/867LnzLwLOvsc7z9KFBh4pgiwIFIlluROHCle3TTF9d0u4X5641NjUc0vZJYoVeC6zOewjMx+ULDCBQDxjxqeAxWYsTJ/p9YCFA1U6hEAXJ3oBLdF+f5UegX1VyojjqB6fkCbr+fVGxviURrd6iD0RZwxON5SzQmuWqE3JzjiFJ+hI+EBJt3dL35wP69yBumerrGwournFwcOJHRWVVhNsmZFgRxsrfE3zJg2OEdJw4gAfIyzjwIQQw7Z71XHzBAwdY8Pw9JTPHvvZihnf1OSot97ng+xKJI3sCZu75rtTWXpMFP27fvYsaM3uq4AxzdbmqfnbE1fPHtlLx4bQHpdtunR9VsuLhaeVIif3dpaiPLcztN5iMlTrcHvK3jawICK3dZNJ+XG2n/tpRMqvvaUEpmm+9wkEab+E4W0t6pwMW87T4hCm1i7v45ZRU7cXO7ito7t2q8djUZDFpr+7+AZDzLYxebvEF6U+WkwIG/FYNAJJl3HAq+Tqie0GywnVvvHvpE+cT6VoGkjzsH42Pf9cGap9sSffLKFzYjJf64VdOn1TnTWhztIy9DnqfWOBiqc/6/pvyLVPZjflCQXQUufbnYkn6j8W9Hky+6QRtaWiKePLnI/CYfHce2R0d2K/nLK8Zg/L9IGfWNLKAr6srZyHXP7o3wA2mnOvszw9lLkAypiZR7J/edDOFZrlbKTzJ4lMZ80PqME5OQUDDYWwCCBKOQZu90RRKjP469B9YZsz/AhImy4Klyd6MEsXuNgDueGz6oM26fA36Jra10he1osALGS8ksywi8fmn+BgERfL/C7MoiQaPxBUyCoKe6SUV1Fbl0KtGSl7P9GUgwi4h84BQU9JRIgtjEOYwXBlmssWIeFgs8GBgGh1Xy64md7tw8UFjJJU2rFQO84H3G2fFey7k1kh9eTexRWelz3MZVfkgg+su5Bfai5Y251veLTyiS8BY+5uuZLfs68hYRLRDiSqLfafgxWpN1X7OQyuuS0Jc/qTKbJi7dq5vmYeyf5npfrbPMb2erXzGsy6by4hv2rWokP2kysx/7Mj1xh72fSnfuNskXQFtqBJ6gTt9QVuypEWzVs/kH++OVdO0Bjh4OEminUFGSLqzQjLs7BM52jK+/WWZXHv9//bXQEq3OpPo1u2b6E+AnIacAUe8MCdfUcN8phT/sIm9Vi2n6p/r9zeh4qg/YrxEhdxXggXWo/DMhdZU9ShRZBQBctx64wKxzYNGkfLJdHhbo+3zUDl67fePCuB/3p56ZOr21PdzeGFkGSqJOmAEqGNcaj1pKUL0IJ2bqfehdriyLHgQ4tu3llXFwwZh7tM1Nb3RDI1Xv7mfh6Pf2E6qXLZ4glKrHd9spxFhRnqm+mrE/BP1Ob1d+Qw++OSnbWztT0WjuxjiBsEMBHxjP7AnVYikuClKzDrxUnqoy5UXdzp3ZEMjbsVLXt51Tup2hYdJbQBAz5Mkjiydl4eRFdw9wRz8btzX4TtMeuS4+rOvq33YlF4Ka13/vz4M9cfR1Wr8pfi+8pMveEQ4xXsSSnvrccQsCLbnz7jvfB5zJJ5B8h6rY5kHQKD/1KMUVZIdoAs+ZezggSrMOe+s87zn8sx2+Hdsr0UKsMA7JgT47MPxZvUk9wsAWuMCiDeAvNR6PLwJpYR7hYJMFiuk3u4uxXxPqQK+d1qK/i4gr0V3+eJ71Y+O4hd3pQJRdJhuoy4K+Cefar/J+JjWzfLbQorarPsm4/CZ+/HgW4u+jGD2r71XOcCimxsLPZ7c+mwjoJPJOcA7r2c3hNnZnvxxhxp73wFKHF4cgItAt14IF9198TKzYm/d+Ft60micbljhy3QGqedQBtqX6Lq6NrMdgE8yezdni36OTl0t1GpXq+Li+UzDsB4aPBgypajJUSr5oL+ypdhM7S3s80XGi4ebMPaWGCGA2LgkEDQrELAZ2Lr6HyOCxyRgt7FggK7+hgM0JLk6IkoRbGLhsLU1ioIvl2oJDYtiuDYZ9kSHitrvGGLIE8VqzmsxV768PMcie4n6xsUbidkTV6AOWqgKWCZClQp9hu4ca9yDFgnJqG6/MTvgLV2f/Ycjw794dE5U8Fh5vrQ4iVAEQzO4ewfXqCK2k0w9FJiOQc8Q6u5y7S2E2dh92e25C7afh3o8Rbtdh/NreF+7mb0H4SzY6Pk93n3+uudMDMCCzCXh+sPwgapxViDuTlxPir7JGwRwGRaTZxJMYu0FxCGe9TxqnyT/ZQ8Q/kiTF3/QlHdLIUiZyVA9OC5trRRbDwsIvJCDDmm3qQr2aolz8u52yipSv26a2UYsKFpAwHMg/zI3Xcb1mhTGWKVvmUMnRzJfX5ayBSF/DYyNj17b0VDNOyvuv6lFYu2aot9FmJ7trr0ILBiXmJq0Cnz5gmZtBlw2aNkl5kv/Q7sKMV7RYWFgF30Ymn1dlMHA78o5LBTso9hrzw8F+ZKrG8zEdKFGzYacvPQnPfYXpBeaptnW2XVj04jrrAKgzdazxfRehGBcfG3qCJq/bboe3so3vpvOAv7oAsHE7/30qizPwn9KXiK2eZkMR4SG/qkBIuadT8o/AVfpBbxr7VYO/mvtdYj1Ieo1P+inYwJ4zTuJmeC95rkk1+i95q+PlbEMXMvCvsaO1Wvei+m28zfwIC/KBCnE3v274E9z6qTy/n54zNENYuWqPy17B4yr/zJ3PQj/q/z1t4rzwrG9+t9u/ZdD+KpLl5LM1flO/kl6Tq8Q++r7+xvup80HWCIAS9xdDhPzNJt64OpHm+o03OE4HiyjXU/i6no38yQv/IHONZy+JntNZ3lx2XKOK4I4YFzDRXokb7mMJhIxeLdd7dL0+LHD/2LczSm3B4bwXP0foW3vX0QWV18lW3v15+oTeWKWu3tCxNxbln5hsck62tYvrGyuCDgPb3wPuK/FzvIqIBC4Npfl1t3WmFnW38kDErWRwbUFAesv+K7pLtslu9VAUph2+w1ISRuAa9nUB8NuEVu0MhhivVriqnQzMOoT3uYmmmRrm7L4PB+XRcz20xxdqgH5x0U0NIEUNRC8ck+PGJlWQApUrsJ4xJ2GARnCVxE8VU8BeAPwKYXRXSQyQAkErrSk2xY5AqQYedkWup2RQoAKoSvd05Zr/HKYeLHEOz07nF75oCZ2UaF1XYBsutNRI22txckae/78PuNaW43AeM3/69AcLGyvsd4ZBEG9hhM79si0hO5iCUb60I34Q6cz1kY0UBq49U0MdAbhB5iEeHp9QpLqFJG8csAggKYekrGbAS+whcFF1SpXcmAjP+gIbEQDHXrl19AjwpD3BuA1+rDig54eHDkWmh/zEK4QD6tOQ18otbDXLqTHKQ6A72MaP21If+4D320GApbqURAlM3CCc945B01GyExKoXDOwSoAnBKsIvACyr0IMDRAZNuSjfXPH1LpR+FiOt4ccypVrZ0IDFHnKm2a35RL+kiKdVu6wTjgaw8v/z2nM7BPrSZ72WmYiLJrUvjbMu3vvToHKcgAokxw7xrXs9VKHU1dpfPYYBAWkfTgK4jEBwNcScKP0APw4NFD6R5vCSAikg480dGHDFBysPs0iTDuqAFEmaAtvqERQ0cknRBtsjsLheepL0idVnrwXYYgAUkP/aSs36FZWD3jXpMPDywgyav9H9eE4YoOqYZdL2cThGdhdfBioiIMkkQMwuu77mTjFzLAyau2UCIEURGtJI91B5JCR68OrB3/JSuLkMscsYTeG00jUIlD6iHa8PdZpQ7oAJ0Y/KH7YVlYfX/9Kfpub5UBvhTotc5HgpU7ZMku/CyI+CQJkUXUQXMYmYEicgi+pJSIcpmXoxaHTOOFDKIjWkFJc6KZCytzJJXOt166tT4USBEi4aR8vz9bp7Fs/Yace6Jxo5J+mCz5PYe7Bi/TLK7m7q7+ZagvbEc7+2OI2NTa+jRyHf+Gt7+z/fy/yYHkAJRg5rL3G6x+MW4/J19M2nuKsDBnm4l0KE0cRib3WzQsvfZunIAb3m/Dub+UnYP6HLMWdrdqvajFsJH0PRHBGo3udYvkRChPgfAJ4nkYecv+W0LQxKCN3qExqIO3FNpdhy+GBOeKhV6MmV2I+tGuEy8XQNa0uOZ1cvxnORV5T6MQ3salnN/uYmNGmtpLzCV/KG+kXHBzQPzkkv7ugOZazqFIxxyBiwMS16EvwZpiu47PDjK0deIgQXtQT5dMs4s/A9r61b8XXdH1Ca8Ucrl6SvQTb9j5jtmZOU16W7ffDoew4Ok7MuF/CBXn9Ie40nP8IW65WlybDeIQnQRRCO/DHO78HTZAhCkJOCTN82SfTQ9PMI+d6BpiYmEmO/dMgsK61zNBAyMMLtiIB6MBS2zIAa1lUjNqiJI8SHn9gQw74tlp2GMhqU1PlEoQjQLphLhZAFcAnl4/HpHe5UxhcwYeMlL3vfOZDjbWSCOpG2yZrH2yVYYaXipULGiwnLuaE56Sphi+vx/i1jgZOaguHh2yuC2KPFKgOcwFwas1bWsuDXHSQRbziYscwCqIl6leVjhh8ZyvJNn+OAvKSinwQE3ZopyWPODBr37YtwNl7U4Vk/yzu+k5Wm/l3dn4veL2t99nk1QqiprFFQkAY9b3v4q7fua2Rojx74qy5Vw2duJCINlYkypkfGm98SMzPq6Cuh5cVHdKlv7sOsnDcego04lvRdwWtPpUwYOft86qaMG0X1AgLHXOsBJCN4iuqDwhxgz2Ja75EwCd72meDTve7SDWulazQMNOAvI0GdXGFo6VfJJRJEtnGp/ZRdbTsEWwKufWTZsFGnZBUDoxK2De2RmrdFQqsFo96WMwky2FdTG09kEOpC79DEudA5qoRucWB/9hB78+v+ZI+gobhHF1mQX1RaYG25IHSS9anxWDrSSrEm/GMgu2xMC1MNp7FcO6oMlmdFWBf1NxFdcXxZJq/ehBSAWZ1G0O/kz2JNNfXiGJtnrpE7/V5HU9S3zJr8JQX1cXa5M1Oj6Pb8RsTrKdGj8O9F+NFv1Voh6Vwl6zgDXcmYhFnEYkFqzpKLZwjb3Zsq6P2EtO4WuGCE5RZy4w3eLTTHEDiFn78ee37vvKrDPk8zbkVyPL9STxrrab6lQPCnJn34psCtjRHTpLg8VjaBa5eZBpc8+jahjA3u4bm63OvSMtQxP2Pba+he2d84XggADxcyyHbn9yTMAU4wYXPhTLj4Til3bMXBMDy1tfCxEbAMMNCqUbWCEDBXZSBsE1VbZB38ijr0q8KpcVITyHx+VCG+JSzugzh92QwN6SfRAEz9IdwtB62knNOqlGqI22bvx9WQ7PoHiopDFVLdf4SBnMMqaLUrfXC1ubvzRQD5h1SXeYrl1uwmb0jUbJB7/j9d7T9G1L+WAvFXu7fXGYY9f4m64r27pUuy4nZZG3T7PLNakkLW22yW/05Vqc1kZvjAXXphIodTP/5B0O2diQpUOlxmsAG7hvmyZBGSSoWu0qlcP4knYiRO9qOnKpMtqm+mecdwCiF1rYCr23xICgJKM0tktDvmMgMoGbGh2x3jHUUFqAlLy7HzJRW0QirAiEGNpM1BZ+WinqeMwVCsIsC0Q2FmKylRjQj//2QTge+pCkY2cKzsBSYBolPiZe08oJEHc8Bj/RVAmDbeAhWOANqaK1SDHevPzv7oMIvgOQikJ/UR/+GA0nA8WWAiAvrG7eZbOPSmmKUVAJgJCCNTM21GrY8fa/oQRhoHZZC0uxFtuArSMtGT4LqlXPSaSxHJ8HPv5oAg1NTmBH0xEhe3OFa1jGCn9jAMdU6EPF2dnCi6GJ44BsVABBQO2ThNsAQKTxhJR9r9tCMiAtYi5HOkQUkAOA3a/CigCo9r7/MaSGgnWGOEvKPAjmUeJ2bmPV3GDPu2TBkpPpkKmELJaJEeOpaKuqwIAx2AHSy6fOvcYUeYwtMonZ+2g598Nyzirisi/AUwOWeY+nn8UyzxjPjoZCSV6w04A+epYAnL7GZknlCQe08gIS5A/nKKGFIrUXwFmsj/w+2Tmu+gCA2RlHsLwOJazf1VB0kC8GDMI2Ce265LnGUg5FpuIfEACCwKTvQecMR3R8Zfi2HC6gEUGhQOuhxZ5OH5Rr6T1wbimEyg7BZ/U3+b8tYW/HPEht/UXILZCwReX0lBL7ZsQ3Pykn8GfqQfMYPN+RjPrEsH7ysouUcY0N+VC6MhtbH9whFgyK1jUnT/1beBziPBKQ3pTdy8k118k2IPiLubQJoi9bvRXhXFkDGF41H3VV+9WS9S/rSSsplHb+qkSh3xeetXI0L0SeCs5BDrsCWxD9sziDM3wUEMw7hVrtePY5gJxN1LfyGV9kAwRje/H+2fTgh7VMn5dsiAQkif2HB1LRDiGkmjLknRpxWPi6tYda+KeVLU2JuG2omYbpR6JG8m2AO1RQyeJNuYg4dsqqFOWST3+CW2/FJ8F/03l1odXAevOdyn59HcxRk0Ss1ooq+PRvnQ3C2tJY41/oG9N8/IGH559F8OVKCKQ1xLIcIKAeD1QvgVdFK0I9AXpTvYCGqFTqrQQjMA5NLrCZb7GRYA7pFMHaqBWCiZS6p8AiEa+HEId1yBc2oVOMNpr4hrOfT11QIISQ3y/7bnXN1tehmXuLFHESHvYH61cESbenYBRPX5HCY3CPvEmzhTrtnFeaVHQ77gZv1XMMtdCtqnB6UGBJ8zDczdF+s7Xh5oTmyCHLnylx3VAsrprlI8+5/8EhJY34k2T15v6Fc/90LoG9FGlLng2+OSG7i0R17ZgT+bYMfbBu/zLatREul/3t9erWEtw2TJFXuh9BjXICyeCUohmTdVndSU8wDYIPm5BNVNvcMQo7uJg9U6JyQ22lhshTpTe7forJMhJ3DyBsRjhq3IFUMfFmvh1MO58AlpFtgMHoLYaOdkp0olZDzCadklV1RSDbQq/bmXVdKlHNyWZC7+kRrLsCBMFv6K0Bkm4WO8xa6dzfCETzctK6qlwDZyzSp+i7NG7jO9jfOeY2DthFtPCHrslDeROxKZKlMvIBe05f7D5Twuy5FVz+cGL0fTWfKHLO29Rj2qw6q5iaszmDEKIcQjcrOu8RprDK4NAj6bdFKHpP2bfggmCvEKaFHSLBW3Dh09LvYGSmdI896p3utQUOMAQPNoJ0D74pYwVUhu5rd5KnCgHuT0sS6BUyD6hEoF51IZUtBohT6mNOfTt+qUgRkYaUFFasHtKniqYXJ0c9slVnNwgA9V/aLdyjrtwSAgGggBeec0ay02/oKtdj7QGWG7SxByvKxa5oApoP/TiefeinBbmWJLj72SoDIluti7ZSmXzrO6nV54CYn0UHHAH02LaI7xGQdRlQ3j4mj1UwFH/iZWzN1NHR7yRM3SnMpW0Q3skX+D+2OH2Qsyr/+KCKKelv7+Zmn8sLxNZsNHBMgPkS0lM6G6sM+15xBp6ss12S5PbekpMDU7NTcpsejQgDkJ5HhqBcT93wOTwdF1xdVkl56cfEVeL8yeWhegcbggj4ycbs+vleYAgCesjo4HnsFkXB/f14ENviUHMuCpol/iB24BnubF+HwbTybV5vYB3ne/qpjkAg3fI93gcW5liOCB2Yb2Odg/UXdBj/B82SzmoXVk6RFJveV7LWk2Vc1sOJeekl/bqTRO7bDvfTi1xWqRUnOaR5/VBBGNfgp753cHei4kNTMbjB1kSBA6iMtaqLnmKZfnUhSTFtJEqsXlA9HBZ27vq1Qzeg3fAIoxqg/uKS5RfjtuVPEgcoDVQQmnIVmyhWxqhS/mD4gGJjTf/djLMwbMfqa4y/6TQgyUx1iYUMPFCqyejyI4LuUYdEnd/8L1j+O6eoAmwdCrdNlVpsxJ8s08Qc8Qehs6gu9Qg7b7umC6eIb9TbN1t8qj6/JuLa6y6EKgyfKV6YRFdALsysax+SYO1puX1i83j+Ndg9bbZGXe3u7rAZ//evKQWdC7EGvAHzWwRY7LY5peBPlXDAMYgSCetTwAHzVEJt4PVPHkcIomnf1nPYA1uhmQNFE2FkRAl8otwn8rKfwDdx0mlaSUWLuOanJiz1YytKzEj2yXayntKUKglcahKeXjUY7getsFb6hnfXCLLwS6RmCWym+WuIr4DppYsYE5v+vRu77/m+s2LMGGqRX52p1bT0LrEp3y5NlleXKaApewJexgxfRsE16lpagPkK6sBFiQHHUZ2Tvmsq5LSR6fJp6RDI4CzmJMBZl6XJ7jxdvL43sdWDFf2rGJ/JP2GBPHIXS0WTP08YoA2AUYNGR+DkIwwYQT82zRtbKrGmIpLejwfEtU0MLL3eF18j3KpULciBn8UqJeDoRvZ4FzCwGKH3pf/WNlQtYph9YRtKMeTwaQioPguNGmKNdJ8+pgSQgSCAMfBblFAJzMkHMNu/7tJBIQkLDFmV7IG3SYk/NMQz0pOmojhrmgQMEdHJv0bZS/s9qKKfM6c7xSqaYcrAinUTrYCA+IwO09fTLXniUMkxrKQST6TI3v7/yExvfRefpSS/uhQW4svFzg3+W9zzCrKu6/3SKeZR2g6LMkeI4Rz54cu40/qf5RfcbKIhO1wSe4HrgOBmd1Aw3p7aapn4cu7wFETK7CoXt9GYXVeqhdJUIRQGwBD86Z5UkgNp2oWENF3Z/AlDVc1pDtaP8Nd9Cb3LTSWdSZ7p9yXxgAWdRz1F6610QthkKVgEVSEfeSbldcXllSu3lm0Av/z2kMeXb7i/jzsjAAVGNTQZoPDHSH7ISCORGQWrcRjLncecw6561mZ+VwbXvePQ0qgPBTqFrRQWW5QrsizEW/BGahNr/oBzB8I/QWuGyoH5eaLNFS/chePk4Rb/6v939Hesost2jokPPlmZesOXEwP7WIzqOPdBNNtV4Y2vjttc6LSyxYbhNoBWm7h7eCO+wOO9/p1x7Z0M4sLV6V29qjl4JT7ukaLldGuB9Zj0nF18TEJLjbf9Wm/HUNjlSPOIY6oZ54RSwT8vB4nAMl1RinLASrth9YwaJQCDkf3VlXTmp9F6weTOTkIhWMghO6ByBbJufY6kRRJKX8AdAkE8kJVvE0d7S/gojina3d9mtjQm4vPOnenSGgD0MMSaPQIJlKpXH4xWH4qYyi2oEcGmV0+w3LGbVB9mXQzwM8U8OHRs70xOpaoH5aDKQdV4QFPspbPRAucg+H8GnGg/WGgHOv40FHTSUl+AumC7WsqFamhHSi9/q0r81pKGU1mvSpvLjnPdtGWaLqF8YCVmQ6yrmTemQmvTOkffcH/VIgDMYIRhp3RuELIY09lRxSkepm395tY/vSG5BHpRSMf2C2yqs/XBoLrGfeBab+wqQ2PoVi1OGieYVlqBGdBYX9XWNgB8BkDDP8nTMyxwYVO27dKRnc++iah7/LKzzgD7a+5hrrJbC/O9XrsL/DXybRxpuGvx9di9IW1N38v1irnm6udAz1KUTC1JUeEJXsNUbrgcm2pxlDxyTB2aOTnoqzNho92GlqE/JuWPKj18KcigEv3dgoMqzkUqRgpO6y2g7tIxOf/NLY9oqccMqhtxCdx9AeB03Z5nxPN0IeE6PwWKABR6ZRELkQjbooXite1VT79oF6JqIxzkx7WCjBQqpHBQNElVrXmjQKXhPDcBFiDiqyF6UnGEyqtQ85OC25UVoO60XeczbFZKEFhoIuCIqKzqzAvA/DstHqjNX1qBk9749vWV/0FrORorqcaUUFyacp9srzRYzTpp17w5z9Rp7hESocvNlwqqNvGt0V8zJ812eYUtJAK7dgq3a+cUULe9aYZFEy/HPs4p6j8qtcBw2YAljW5d0BxkJtnM7ZHq7JPAOLFZXgMntqZpGDPt2yoCwSV04KDTQXmF44fIeIKSZviLzOZ/6SI8iyOqSJ2hr3VEakn9iF4fxYi2x3lQxPvgmfH7NR/xQkWSSt7ySc1KAdMHHwtwkLWbKQX5dA/ywbbJkgiyZ4k2afZkLwGb2ZS0EdR+kaUC9DG/jGtx/ax7nujkUQguyh/ha3iHElFYcLZtOaTy7BeICyp/AA1kwE8oQ8s8eCz0WZIM38jKtnHquGui8uqXkaJHrNSNP73R2jzYaSvmLnPvLX8y+uQe/z1RZQn82BRl1uPQ2Id/Y+4fi4VNFf91hUrEEm7E6C3TLshOZdddxszV7+Wbutr0cYjpq0R9hnlSuDsULt3hLFknQA1Oq8UC73YtWOw5V2ltOAncU+B9C5T2xpWAkiv8gBWgGNQuhiDjfm6VDUIOQRNyIHXSwL6hroEcw7otiVxV9vaAeVeypWicQ87pJFuBz91Uhy8XeO3y9n0x3jZZUOqlxpUHQs4xsV1rF55789iF40Wb3kiYig4MpMmLj8JbjUlaEBsM8VNc5qOOJWDDlcKIrM7mQpR5jTixA6kGDhYe5CoMH2jfRIWHAQQ1Oh86V6g/s2pt9BFHOBrWP4qzKNSM34U/45RPBXBCcclGY0hV1UdxuEZO9MshrhHr8JXbv2op/xJS5mpyFA9BhBBzAg/IpXEO5Jkr28y04DRGOIgEeVoMxAETs93M+vEiZwAx5DUg4+YhCON2SlMlT4XvXNw8FJZoYjugRborjrkJLxltahlDJfdRkNIMga9T+i4uVBSQoIvL4EhFmR/QzolTCU9syfgkpssn0+wP/4rjoA2BllQRlKjcrYnru5yG99wPmabRqIs7DmRRTBVFlfutM3F42gZMoiCJN9TnLF0rKVP7isZnej436RINtRjNxWeemCJbfcDbsfZrDmCmtNZiU8t/NBTuahdQUbGZ8WhaXTql09kn9uxjPTidblEuKXz5oHddE/rCnGcUk+sMXpiDQnmtAVy+NIfN6uuIuE9WQKJN7wdgZys3rKGS3QgH1GBxMLxUdwPaBvzs3IztN9mzV9D8hxOQ+MhP7Af5mnPH1SxIdHW9SWyKBqBdXS5F5nx211N/wjG07okji+YRqTiqYpE28GN2Usd6BiZG783Si175fRKQlIstgtxBD0fIgahnIHdw/9vFpFvvPd36QGqtSY0u+w4Id+AVkWX4hNFmGUdCPjN557LvyzEYuwZzuH8XP4CHk3+vpReDadyBbPyPB7htQgKJxEIjCYIKyy7fnAdPwWfpoLPJgqb9fbDWeF/HMp2tNRn5zmkkF4op0aqR11M+8orvAg8j4xQQJ6N+p6kjSeJ3f4n5ouCWeZpGnaCEBF3NE0DTH9CnsOXVtBZKfNGpo/oS2SWC1JOkSFOvp0v3MzZWu54OTN7IQsOvPqiA3oOWE7rIyRMZC3Ly9QveqwGlpjbq8ARapqJyxD0JHBwpWgYHG6UwBl3+5q1HpztQnb2JEQonwb7pl8+kbK5VnAdyqLMOZZ2a2JKBGHmXazGeUYClHjSJY5E3zJNIRRa08feoshzRcAZaTPqVOhYla6ij6fWmJ3TmMhLeMkM2PHrKhNPtX0/P8LN6pj/dY79L0qiUSViAFCnv5J5XrEuS9c+QUILPt0nCfnbCRp0YYC457JLIw5Jf/rkJlQ07KdUpoMbOmSwBVjAI5Iwj69CbASKPEy9j0yXdIWtJRDJtZ5Nl+gZkq9YBEvNcTaxswqFyKFI+DBXW0TDBxYGNCBNFsicVSmtr8devIVcUTgOVdWjjSeRw2Aj7/rHXaQ8nAMZgE8Oo7WRNKpECBmaAwwMMbvA+yNuVSdttinUFzklPj7NalfZ5lcHCuStO6p67AIAkx1Y2eLyf+NfqrWP+18gUSEzKkLZnQuydnDFJuoeZxMPPgFi84DCuaLHadhYtkx+S8GutDGDQYtP7kasjEKiEZzPRK6ULYBJDqt7Vc80RVRuYGqtjjCCZ5x+yGYdB7Srm/lsYpRh1IyAbBW02ai9fgkQ7keQ83dRwTRoWibevC8D1g4ojlDYUhYY7tfYenDOutv1AoxeOHX5sHZjfn725cHd1K4Yqx6wrH4FsWru2cbS7BvCSe5Uaj+Kp3ztVizBQ1VrXQrXgL/xt8O6RyCRzEEVgT+69DvH1/zN3e7cpwjD657nfwc5jWGotRH2YZdupvtEtAYojLzMeu23Rca4rqfRyN0nOupHCaoZN/TS3CGhrgvJpOFrT/bGntcagGSsfX6P+wXm1G6f2clODuPdJ+9FQ6e6l+4xptK336MaLzgBon2Muond0SDCv2TEhOHhtuodxzfVEQI61EuJOrCk3PAjf8aDIikXkGKndtW7TuBtRqPjbvSKm+y7XHkNA6zakzomzPonNnXu1UXcsaDdqedlvP9mTSabv9/Rq+icv6vN0q7FLBnOHT5zJIoReyHovn8/ccnK1Teo2l8L5XFLnxp6wrhQK4KeGTWL9QLhPigcxi+u0rX9TnwKf6Apj+Nr/LXQn9X+mQuZz6XCq4BPTehwF60wdKXsm4/1O0dRh96RvP0wInWMO3tRN/YSzUFRmsT0btpo9zV1XTWzTOhBKOE+UAESEdoSmfqVcuFciVGiUavdDdMRPji9xPAFYiZSphZl+9lrkEL8f3LcSId+OHierpvgk60y6//2VBp7VLXaWjGImFRbDUeoZU73VFGrBS+tEYqPVVyvrNBDOOV4cCXnL9jyDx0SKKCF7tMFXOgdsHBIZejLrl8WF+QYfia/EQMoAn37erC6O9SMdmWz1yDo68P8UXRY5+BYYjsvfcheZXEP9GnX9grkIovgGYUW/cS48zFphU/3WT5SYU+x4OB6GeG479Q9iORaX3hWIarQx3YGpvq3bQ9LKyfbQvGo1liweFoePgFfi1Ompun55Xnz6onsf5KBZyscxSagtziCoomvl04d3j1IrcnRDxh/QF55/mqLAvnhQvno4OQsQL2zIn42zYgHa3VDILSexofSsugurfixgFDUbKeU6bMht1/eKh6/v+/GaBHrXRNiwviGJgBQb+o1oIp5h2pDpt0vGsL7vPyzs/diQB+DFhu4hRRzgg1LLFeph/6G0Nq+wz72AGxuZZMFoMPGSSm4jsRF5PJ2owCDbDBvQJPkB2oCnArD8Dj9c0fuxgVQqxSeRiJAZB354Bn3chw3kHI8I3oJnTdXAluSMCmiIvSI3GmvMRZ91CoQ5Hnz5iXbt7JfU7mh1kFDqmjqhHOoqnKQR52SC5nUk+Xpx+Sb33cvu809Uy25R2xBpPJNKjAaYS0kgzA6rdMBSjfRgTKn2Amcx/JapTnJ/kKoWMNe2Zo6aPo+U6P5H2y96t62nTNenr9cu63CFG8aWRDSpNvvqUhY4BdORC/p5F/C+pwn2coywX5zbctdZtCxHC9+qwhjlAeZ0Eyz/pDlXLBq4lAeOs1XPtci1NC+3BrTzJnVUspuVqP3/AMifewqVDyrrYBkJGh4pM7UepCCD2hh1xjaQAEz4H+uh1hMNCqnT36JPgdc4EtOTGI4jZQndrnnD23oytaMN4ER7Nm5i28o6UAsGz8yxNQAvM9sjg0ZCQ4hWjjaIrmhylGh66h6d3jHI5N9W/TjSk0QViuUKUMOIkA+DBaQnBYoZVzZOByNmhskt/kqw048124fQplrwCAviIJ2Vs2u3J1x30EGHD6N3fI4AFxviJrU2I4zLAfkWITWqMF1kX8vtERGpraFPFQoxAp9lhI4H25giLW9pFROvJROBDdKk6awRlqiWt4aCKuRxKvCTJ09/DTF9TYEHh6apJTbSEm80kA2fvw9vaj2O7T1zaO4UQHb2JjttIZnHNISVOJX3RrT0IkYrCrwvx31zVBmsIl1te+Ir3dm9pYD6ebPnDS1WoWUNn+LA158yr3SOrWNbMMObUT1Juprx1B8kAK6GsUEclIikDQt0BXh4KD/CE8pLGd39F67HZTVOCMWIgCzsN9ZYwsgD7vIDFP0Z8ic9XlxxAW85YurZMrRARj9799BYvtnf04V1rDHHpePie427zBpJQGYqyV2tP4Zl/yjpZMFUr73u2Lc+MXtBcpH86hQVSsVkBe4RAzXLTe1WvIBiqehe5EJrUzbhLm2dT5RRlbTMryHXW/1wTzbsMvQ6x7GnFIJAHd9BiFbsQ5iTKR2j5w+z78uZildJplJ6qYldEtPA2W08s7sW3FSr0IiMumKxE7h9wXOPQxby8pG/CAsRr0r6x8tO+By48MMHJ+dY2N1ELQznIDs2ls6XLJ4ufKxbBxGB3CSN/Ry1mJHBxrfb5WvpyfdLfc7crpf8csnZQetSR2BbhLIJ/lsrj00ei+iuzn9WCDMh4e/wd9u+17amWyauoDaYqgXLGBR4YbDDVu9Kc4D9RSZGLEweRq7mRFU5Nm6IR989mQ7QTKCqdkb93wQlaOhEzHHiIER8V2clnveqR5qV0q2MjfyaznQW3VPmW/izlyQIMuxWgyHvkMZEwOOpwoBIY/FJaSKR9aLUhbyw7QfCzUxO9CLDvZXHC6filr5A7ZKkKdA2LtzKVqp5Sa9b1bKNd1fu3oyGmAqW1fX6XO5L9CeO/fF3ZNRZkQwMtrHpYksKaiuXgaE38P3qkpmpf9r8L/aJh8bkY9iZm+MG731B1rnUF8Oze2UYBO7gJOCSM1l03LWICd+6ReuixgVNonQtTYBJdiHGnDu9O6H7HyxcHGXBAH3pk0Zc1ZJ6NiLymPvFNdvnSSw829S3LBiUuVQqiJy7PeZSlO0wcy+nAWIEaD3OGCpirruqHaFNMcI0/McVXWUNX4r3tFXyHidvpaU9JzEF7VJntaqrzKNa1zY9SpfDqRxg755znsovju7cl5QdaNYAHzUUFTTp/tZcX1CnRDcsvWoP6ajyxqaTT0Ge/v0VfM9nNPF5yNyKTjy0Y+mNvBE+UD6ZmKfLwA91HvP/F1ebVhVdSQRl03XN5080HCtkcFVCkHctPq7t8R2b8B4g4265Wp0URWoc635r4ALEcuigPH1Tyznxs6+i+mp6yQuREdZHwz3hDl/wgx55f/wg4ZB4r16siHTR3WZkE67yyivddDWXt0LG9iS0JaEpZxhUT78GntUXuCVG7IRvAv4woMgCnDbFZB0zBUkfRGRmO2Xys/utrHftAehidFIsh1lbHlqI1ByxYYKlmVEPMzUoOSVqN7XhwzisUs61ZgidQfPH+oKL7htt1oWsfmLlD+jQQiIqUlJcxstEkV8gF0GlQbo71tY0SnM9C02j2Beq4L5XOoVaAlqU6WyjOHtSC9cjSTmJ2ZDTs8IXtiGR0Dg231t6Awni1NlyLFIZ3j00S6sTQVO1e46qKux14qj5ystBP6fozxf0ljnAfBWlH5tdSD2mUNFWGvT8JG604z41YlpWZRaY83WHEXIFdLL4xTnaEbM4oTJ3OUvjDn4322WSyzNiv7YxqYOBCGDhXacDKyIc7q28VhInipsOI4xZEYLeJFflmdfnp2VL/QWauMC/dfrCF9hs6cjt3c8sXueYnqXmWIr8wl19dOWl548Ilb22jNsB6GmFHiwBptUXk7jGptZl0rQyYLQAJ/RwHly4tQzPCyM78rMF91qeoEPep17R0DAB9RXZnFvCiW0+kZVpeqHOM2S51HCtoOqcxKQ51zjEJgtabblRA5iKKZ3796SU5q9w56aex3F/9/B4+JAd3EMjvrx+fY3kH/LGwFPiBPZLdfEDcWbUktT1hQYdPLxyGvmlOUH3ByhWlqU6FvaSwL2rWjXjrytzt8yV/kN75aKSy0P1/2HHX62tlhO7hsGOXGms6aMcuUR9x2DcOkLb2sEQsYY1VpQlTHti7pd2j9ZhUC7gNj7F08Jk8vcWM8zf8uujQwHyt0Ejf49IN37gwN4JcEhv5qq/SxYQwMLQ/Nyp2auuN/8Oze2dkzCS+KjX5OIeyW1mKWItgcB+wMAAjJpnp4vdDhjPCLUsSXS+ECKHpSxaV8wxvcZXdxOlWrkuN3IT1qQjrP7gZXCVNuWw1yhDcXqP1izTmoKk7IeAbYnxNp4I8G5+e0a914PVdowmEaqgTyCZCXt7L+8DkWGUb/Td9TaMyrf7yZczvNPXa3Kz4TeXz72LYwPQGmbK6tJZSuu+SpIpzq7Kyf9cADxoVJXdDt3L/jR/9N5lAEPRPd177ypJMcLrfXDN2S1D7yM8vCBrqk+Ooz/8zWFoWgnHvRp9PlRZYxn2eMesoOROqw/Ywf1en8F08qYhLqccAqGlAZYlIXDGmPXm/8ThUyxYy3wRGHFtTtUnVlJWQdlCLVeu8TTFYaPd2/uTnrDYH6lbylcHJbWgBoV47T7p/bKdgLhNTdXGxpxcQeTY1Kt+xs7e31tbgYCX8pisjYZ3YD1HdxGKD7Zc2lFzDw/2o26EoYbssIdZdUPYHKT0D/FpyNSrU8h41JmmBL0LAGEqlZiuR2/s+ur7/VeZZKB7a/J07pPwXBlZeob+CdYunrk5Sfe676ZqT69tMnHbTEf4RpXf/BxKalb9e0y6gTt9eOAS++LBd8k5eEI55NiqUF/5/ac9ydnfOEvTL/2zScByuzq8AcCWWuhzT9FI+3CbIrsE18TQlbeoKY1Rv8Z0HNhyoq525Y0FBHKdUvfu3o/Kef8QWNlXdxEX3vVbAMxh1ZSbLcBRmnV0W1EU4zVBODj6cq73N0HEd7LAGmS52uCg+DaOj+zffYEUBAM9r4UhCRCo1wUHYrt9trV8OMHYrfiBub1PUBMeahUrly+ASA9fCkeCXZh66UQm5EmM5jAfARaYYanBFsAKFTCbHSaMsLBgZJa40e7Pr9zYS4lNpq5FI1uBoNPIuqRiGyEsHNP4zCMY5KKDP+kgVzDrJ5v+bj4MWsztd0tP1TFVF5ynOgC9poJEvSUXMATglKpy61S1OSoFeiwY5+onqVb9qKKchOtbwQBsW3Be6PuZSpUEcqURXaCIG1MK9HQ2Xwh/+rSKztxva6eTdyPmK8Irw0FbMgC24xG+SrhakJygFg3QZJMw2fFo2lBiX628ir2ancfUDwtQlhpYnBkpnrRW6wXiwY4SYm5zgy8YeNYSPLoK7VeoVRji5uWrZoNrwN8sJHb/7cQkmQtg8VreJVoRP2ot8TW5wO6FhiQ9a4AI4Eb/VPkDa+6V+00RhLYodEoKG7Ue5wcyXvUCv64M5GtFHczM1NuTh0rGScHJdF/6C7dlWGlm3UIi+A0Qy8vTe32zfyI35JzW9jilCpVgBiXSGTRhqfI77vd0kg0k58r5BSoVXq3CCjW6Gs2vaIueNev+du7T9Y91HwAlbI/JF5LFykXmuBD7KDotdbJl/YTqDKhnH7Gq6O0z0WSPRrac2u30ZUcE/gXBf8SkoV+bau+0EU0OZrmuHDitQ/a682TfDI8/NcdBRqd8TKTfeAVN9RCH9ht3fwrfIew6DxsrUMfFRJ32yPcavKuyYbHpYeZDCOx3A8ttb9Iu1kGJeHp3JGvJWVdmoTPrSKMPgFmW55mBzbqkXZp+Cu6JAKCd5LqodU93SZ+vlUgJLE6rwcfO3t2B+QEbQ9jMk0Ikmh9FKEOe1eS48olJGyZRR7hANnumnLGN2/01CHYYrSAr8cRNZRi5W358fyDBm06Sg6VWe8K9+FCEgiCp5W4FSHP4m8JjGOQu+sd2Zs0UqOi6P/Sv8+mDao90enj2caNDlnjdixbNzLI3HVhayA6Eg+ntJwTHZpquKG0Lb4Pj7qLMlJN5ersxriMHQVaUGrYa04g3ruFZMYR15Il1ixvH8Q0OQOendeO48odh20fBKc668F/Hc4ZFss8YfpY/9Y12o4f9PM3iyh957KQn3nrc6LVfwKiLzx9srW5j5yzZY8/H7CVcS2MZD0QVoyLuEM9TXZnJ0nQldPHZBZpAnaE82Vz27kpfpvng6uwCGoI2NKs41JdO4ElesU3Z9HaQkTX6/6rsTpDHiowDGyHZ2kGEQTwrH3ytW3bkg4NFEGfUshwL4s3jQ+8JUysBR28QzhCjIWXm9hP9YxQiKvPZKqeaH/vsJxk9MIUKEZ4qOd8Vp/Ytx2hFOBj3BRwUJL3I9smm1xEbprdT5LTTmGU9O+/tuceg0ucTYM1VUn2hqnRZrS3djDb03IHU1C9+hNk7ZP5+MqpS1/HE1Ts79J87K03uR1b9Mrc+dXuL4npqKSPiCxN/gAqXPJvUyVgZHFumq0ej1PTj9E1rXSg6F/2V+e7xtQW1zHfWdkg/58Z5qxS4UKBK+VlbggJuVs/BtK5O9QeE2jzQyFwYrx5QA+d91L3ZhODn0EEa1lIgPxO/v1PDhn2uVxdY1xC+wXH7VvzONaL5s2nsUgaD9vtWMrWGHTeb2A1fQ5LQzTshVWQi3Jhlb+fUkHAhbw5oblmmMC+8J6wzFTt2yqwBPewJRoN0lQtXsTqlrbJ9tXtJnmJFhZJdIWxp8UKQJjvxuT96XIBRFgxJ0ayavAHIHlb5YxYa6plEO4mvVtcafoNEkaQ7TL9OibZqpHS3L0/yyOaXLCgD9Dn3G1nlXfdC7vsoO25sT60G6hWNUHqvd0f1O768WBMI339VIz0PFZiN/g/rx7eot+PxCRyFHNsIlT5HKxI6mAiJm5bg92/cxQonMAigQpFo3+7ELaDXLanP9IX9z3x6CApBAP5hdv16D+qIAQ1rBfAe61qo1PuCi9VEyn+BqEeJCzcuaERCmIiAzEBWVwmyE48f7Eu4nseVLa/9I/os6QWmQyuqvl4DQuESgJM01uy93qkfXX4aMFmUtlr1kIloZjEqBVSO7V1Rw+d3RWp/BQcweLGjou7JsK9Ahgplzi/GZrApAOOB/eGmzIynnWecsBiPKOtOjWzXGHod1tas/u8redu2VADwANPtVaSb130xuaZjihQmaJGHdPLYheTaaGxsmY1L5MfOhCvyAPPWwblb6vYfZ/En3FmEiqnCM6B/d5GSAlKrn8JLnUX+VucuPyG1t9R7v2MaL1kGDs1S5NsqvWUun4AS1NL0Aa+uYz+3QQnpwfze8AzsLIrRnuvEXRHwE5J+H+56LmEauQOebU/AMYvPSsrIfthoCnPDyHgKHNdrXMaoi46XVBKFa7WHBfPoYUw88vrRX1aPLBLHDBa+pkaYGozCiK6oQeOHL5K2eLqQ1kYeFYnBUF0WFpuS3SIqS3QUqrHd2E8i9JdmUV1GHZc6zH9ENWCpgUTudM6gTJnuYJIbIby8Afr5Y/nU3R6jDHveyq6cS/hwhXA+SmU5ns8HjbC4PqZSii5LqcpRnZn/tZ8ccKyZe2RAWnByrWCkNtzo7YSJH4F8CVnjENBFKvUPX6Iq7q+ECKF1EjskNPtk9JVVnl8e40uFqv7SjD9F4icroPK/smSOUciXDQM34wKiNHmbNCSsnKOhKkTP8PSSKH3SW/ExC8pKnRa/1JjJO43+Jdq99k9d/llZctI4rO0sG7UYH416n8y0tqpXS9v7LJa/azRq2YSESDtROdFffnPDUC+gAjbAZZKzhrsD8wBo+Ln126i8VC6N+k+tuoYig/2Er2hZOctwM16Gjw0CDWR3rqyhQkXjE4h98X55MMwkDep9C6DyypV7rn1VBzgEZ5WYS94JAWOmIQdQvswoSDbsVNduH0SupQQcT0k/9W8+/FFZf9HaJIR0rQk2HlbWkG/YdYsDCN3DAoWM2EUhUZFSJJtIr8pal7Pg8kqokuB1Wy6gAKVUWyDh/Ub5GAcY/tDwztA/8rvQ8e5ao+52WASmlItmqikFnaf0CiK+SYRRwn1mXPL1Oy66wPirpoRK5sQSUD4NbuG9jnuRuSFujhCnGtKxRqS6XT4NvMyu2RgNzppAINSCCXd+h7wvqhr2QSadYHSzYPGdPqnEF7bN50YjRC2g3oiDRx1VYOmoAuENnVOEg6CxEIhOcOgu2J2n9eMldPEZKsElOUJoRTTBiMSRLhIijBwkkud6wVWnCLtZfNttDsv491M5kaTSn6JAIau3Y50ATklyO3wqgo/tqCPC+D59VEUgn6qs9d9P/5s1KQJyHmPKHO7VneAgcss1h7qIQQuKmEP9Yu5Nk5Zb1Dy/MfzQnGYzoa36f/bYm/Jqin7CIP/WBNLn7jvXnI7O39NOLRCCPIh9lIpIwrWqMwH/YW3Y2btgq5Y4XAFVONzjSVTl72RMxm+tN6PMXDp2hpnF3jQOd3k0rzqUUXcL2IYi3lnwZ61scTA0A/uGDTpwbsCpObQQKmz7kcHZ9oQ3JNZnvl5+lW0cpPUK67323/Up1v4gP3ILpipYhyG4IMs1a3+5s66IRM9ablZ8g00qfrHFUj8d9O17PQ9Kxp9kasvpfw4kHlDVF91zM9SkscptgZ986eUVhjsXHju4pic3/nKLDF9T3ZM/AEko1uQyG6nu894kY+dtSzgflTD0CIjnDSEpgc7gCKA6osaFR7nZcD5icj8UF1Lq+vyOdMRxsriLb3ZwL0SrYsCY+4mALTDLEqAjzkwtEUOOQ2sRmPsc8NRo7mtqNb5DtuMzKbHf1rEj7f5zii1NwFOc/A78h7wT3nVOZs9F2f2qx+pEFVJmepjvxh8i6wRREdaKKt118JZ178uUoAsf7+ZWf9+4K6+HLbDjLjxOWwJ45DmuxF88rfr7tKXxzj4SYxZoA2fdkuIRwsQQOINUkMLuT4ft3Q54RSRIxIQGh+m7CJJMn8SnlLZV2cR9I9mVbTdVc+IjhXGN0+VLjPiQC8z86Kmm+rNlmfsCJrqfwD0Cwo6/IlSH/f0KdkCSvQxAFRT9cHWLJjO3Iu9V5ptDwdBP5BA6l9wWjheW1eTFa0mRcg9ViS43yrHKuGiD+erty9urt2jN8T15r4Du1jAG2SvMusMb37cTVXg3sF3wd7BuxbQlnqdqWBevd1iblSe/2j3rRoPQS15sLooZ21UfRZoR3HjNo8qi0JbhaF2H3HrkKqTQ3J7cwd5cTK8BvI/BPUQQ6GSXE67/hHGdsxHzOBLhJDzlgH7+uppdv20VP/VTbq+kl2+8KpF1UmAzxEWHize3pJcvRJK6F1ZFffDOX21bG0e/EM9bvgBWmNos4sVyG4kgb3zYRRrAwPbJr73qdnczI6f2i14hw28v/IQE7khPZedYuOYDAievMM3kia89FUkHvRwDGdP09k8fSfy7Q+10MSM285XmagH/hzo8eTTz9M1A4iSj8hNu7vj82kVOE9wPNjmwkW0SbGIAR3IJdwo5RsR+efMqwVqWbTUvIPxUjdUiqK9arpYEr7B+A3mXBD66O2vL16EbkqoPVxijtEQmUvJS2gdFGSzEeSZBlr1ELcOEXrnB5w5Pt3AciLKigw1XdOvbROTZj1oUdWW+OiiBhd3ipo2VH7rj1vDTr2FM+i++p/x+cVh5/eLQhx7k8C2hLg6HjLC45eZSBCI9L266mdbra60Z/Jq2eG8EIsHzcy0a2nL2hqhTuK0l2W/Z0w3yH+T/Can4Fs1Wvl+S6HmZ3NfwEBOl/cXDAhoOzg0GzrxriQ+hiDF+Mg2jFKZD5HjPPUznPnRjKReFtWgcUMDf5f7V5kJlpcsBGtJCFYDB8VBFzG1BKxgZpwoP161UqAdYUXZpfA+yU+8Lhs5XrZSPYpGq/HcQDaE4/etQTcbOMMxX7YhLMrIIIkt+Sicb2bGr0UEEFlHnOHNgDqLPjPynwBP5Y6KN9t8DFpY338vaCu1GEc2JCo4cwj77dt5wMRla7vd+WfXXFHmdVsN6YTJ5o0g8V2zJDY8IJ39/1JUSKqXe66J25ICopdp87pG2uvaxtAqSjoNBthRcFr+gts8oh+QVf0EPSQPOghu3+zSdgXh8e+xIkUKQZ+QEgMlvgZ1vuV8iq2RbTeDSzPZpICa8+arauGLqvdyraFIYW1aGmnzrBl3W6e4/eIGLFFO0P356oSb6NYnhuYoq1Fv2y8H4dQ7/l17oT9aPvUjNE1Z51UZ6Ve+Q6lmjW8HfQ3vtJOlaGpL7dCG8s96zK1af+FdBtwcKC9vViuKoNsJjeDN+beNPfNUw//946xB1Z27VnfWEH730sru1ulFrAb0BAvISNJUqDv8NKwm+h3oNm10bsTt/VeO5pSxSxs8j4NGVq8d+gBbY/sWgtq73mRktTxf7SqO8NHFO6An9kc2UeNun9eJqkBLOIZ3EeNPLG/Va/I1W0mx6wnSbJ/bl72BzGeChqefYvoA288DYZokHswaEVJvEZEewndhUtnESRmHCKLOu7ZWP4lKJo5vQZyBcs4liA/8bU9zsP48XjpjcTQ/peMe63lb9QPWw9tcdxxq3gp7alM/U/QnxrW02UvHGgRxvCDbuzIdek3j1oXa2ngkowCLeeOs/5YDolZ3yIWIX6zTrimYTbuH+CsDhtgTC4gn2U1RB6n8+Uv3S0Y89A/V3TmqeWr77HgDd6X448SqA9HjIbfcadLt8Pwi+MvP3tW/Xvl/74R3xGvQcuuzPMVDSRnvHBRcQrSCRIF9V3NeZEU2x2L+39aUwT1Rwy/R4pBJbFsrehXdGqd9zcj/+BF0RWQhCIARJYgwFxPDPx2CkXZzyL2A3yT9XTeMlcdO2nVpQZioQBU3WeiDeiC5cPCyEU0ogF3JVKRPbJX2BwslXy1IcZmz1vJFzsQwyfWNLRLlVsyKNFi/g5Y3VkSHf/qWYcOsXVCPUAq9j+1UU8D7hTx+DYzEvSMO9MSkmRJj2CQ5AqP48I0hcVAO1sK0vTksq+n1DYi0M+vVpJO3grrtPoDNHnhMlXmei331+YTMUg1cbWhzp+QfpQSi+nZt2qAOxvaJ2Drx4zOdN3uRPbzW9Oqt4jcuU2WmFNAZP4Fpvkhzo8oDFo7lLBQsWznnqe+DjRzgOfxqakdosdbWu0mW9vYIaTKaRKm+WbmDIkzGy56/t1nzpVp6DzW8lErc2/6QPYEXiDEf4zT/DdgCMG4Hw6Ln73P+w2Z98Npg//tIkq5f1X2SmPWDWZO/Dgnn7+H2GP/OGssn6cfgFaO89EuxvcAAHmxFwNErQUqIMkkcElzAnW3czAwb1cm8DDrCt/lQXdNnG7SUFCbL8ya3o7M9tyT1UwWai7AXkoYvvOdB0xCWHTdd0PLtt8VZ31+rNFXff3dQ6lSIwLrt1nuSBhnFQcvXtQ4K7ZOhTypt2rbfWQRiZYg5zm0UcOjikwPVrmw+5vYIof2WR3vLBsuJnHYDQlxy03XLldOJLLLO598MzpBQogrBvEui9vwBkHhdm/V+xxkd1TpBaNckq5xASrIgi1uNRdolI1Oaok8FJMXcpQLU1NWO/C+In60SEM5pbd5nbHJL3xAX+DG2AENVlZ+7HI/7PwUfodfZ+NPpONQH7ybJP7LNmlyZvsXG9Qfaq7zSIW4WivBxI0A2IJHlPfyGbboh+y4S1kor6ug0U/F9J43BBZRJ5t5DhmeyqV9dvgboDZ1wlDSa2EqDdldVvq4W7lohtyQC2ufeFe1ZiW4FE9YAQYGBiqSbAMEjKyOvYxewfcEARGq3l8+yZ8+AHex8pL2pS2ItwGdNkVVAEm9njXnbFdeXATVW3hUxjDSGRUyitFMHxM+aJFcfF0sVtrOWqpTsDIQ2cIvyM7sniNL8dK2Q0Gucztkgi/+8X8ZlJAphTJx5d3Nmpr22t+uaepTXzg/4QoAaihPyvmjUbm2/Tf+ePxpCm9TU7W/z9S3NO5sN8ibPJaF8vN2xkOr+vQO0Z/uv0woIAjoIelS4VQypVk8xNVdc2ripyCrB1y7fuVd8EuSO46oJHXPA58Gfo3QNZxFxV3MtZ0eFvajTmbIkmpXSDIGGycDErrLTrT04xABRqrczBN9iDPMzxAjTEzTgLxvLQcpHf1KWu2VzZOuRq0KgXlM0sKGebGeUTLGreFi09ZlYj3Nnso8zctmCYbWjZtide/ucCeOPWD8EpExkh4I6JWhucsmp9tbHYmq7kcTmclt64yqGY2zjv84fogLQoepVRJQJ2WINk+EWvYEvMT32V7Y3o81LzlydtLyO09AXogZlrYWdv41GgLxYF6m8Lr6+MqqMyv4RvZ8nCD/ubi0v5YB8GlRqc/pv0vP+GxOUAI2HKyaLvH/GUUYf8BJKGUY0NkGNFz37lb0g9DrAkKqpur8tqNEYNoF9/IFvWSo9/ECWZSxa5Kvg/8mwbFODaPAQV1mrVb+HtuzX6w8GnAmcJHn4AUlcseGioGfDYvAKGDNfpeOgB+JhcAjw8E4EKYPDpcDpq1WAfWDJgv/7/EjSUxtNqGMtQWO2huoTEudlveh+DaFPFQ0lKhVoh5YuFWq6CYOcIFC/6pKc60IoU1ASRr8GPocQcKGu1zprSgsR2HqpcaDF6PcCpsuIFWwv0Hqx8DKcfqxsVI3IwdMrVvkCB7Qvg1yNKuxse3xkL1Xq4WZ7K8lOFy2dFMqXsQI/CSNpPVaYPboB0eh20Z2UP0WxIy6+AO6GO4YwrJVEUuQgmaGAAShY2aQzaxxAO7pIKsix4lWI76IouPPLUy2QDXXBy3aqOHnAG0cm+LcqkkXZrCqUKO5AGpnFpM03T913cnzzHf01kwRh8/fBJOK9DCHLFjqU5aj3MNg3H2rJp/TJrnfpmagYcc4gugisCSU6z/Id4yfG0XIgABpYYwwX68nXPz+hXwwktRz8w9+53xKO+Uj+MMCRzIlm9qd3AQX+TJ9h2GI5pPlLHTTjtXm1jfU8rpUoP5LHSK3BUX9bLXPFeMes0c9BxfroDJ0dsy9CiBesIqfgU6TpJrBobI+uIi3kKdx9aHP98TBN1Fp5uEwybTz889CTdgXQDfKPSzqgEy1JcIHrXQlTfykFzPtvuyfBx87SOLxYyEdufJ+YkWC9UwMR2h8QJ1y0h2s1QsWEuQj8o5E0pLyMC/h6IPYx8fqprFUya/TE/bO5Fn7f2KJM9S0iuIMsLVkrpxHA+jho2CfLlm0h4iyGQIis3rQaAA09NDg80wo2Hku0oAoL7CuOpPqZfsXu6/3xs25iCn4Yc8mnKQDv+aNKy5AAobgxejiGcopYtMbp4oYbQl0HTkkezL28vgr3OwaopTBg2pX2seHcPq5jN7kdhyMh6CkbKFHE1cHswmyd/Z5qcVWC4htmvW+p+y4E8D9RyRj5+WuB3yrhIa4Jlwg+Ob+8rhAlU+0KCF/4WjL8GqAw1XDCl04zxRp1gwKfyg7o0VikcKj2TxKkmErPkKnQLSNZXRBJTvnaJ7+m5o5bqGZ0QBkkTYM0JefSaS/aXHTmDvVAdKp4Xv5qsWy8Epuo2sGQCvpDIDNu9qtflzKE8DVhDhPGHg8sn6ve4Lh5cAORTR/AiNoFwmKoXhzZOEwiZvzkgv1Fj54IBg5N0VcJHzFshILQX7nEJpLFcTlwfEke8BcCaLXwjNzWbCCziULiqW2qMq9qlvrW6J6VlDiFSXs3BDtaCAKfUR1dPrVRVV0eU1mGHUPAem7BKijNIa1LAxOCJRG2DtyyzBEhaGERVXxUS1ij4lARNWBjDHm9pJkOvF8GxbtSHzLwmWqYpfMx5y5d64XLivOXiBcqRzU2ad5zKc+SlxvtaGKc+N4pBxCpw8pLoVH7ozHnQ3fE8Z851Tl3gnLu0iQ5vJo8TeObOc8KTXegcBqV5zxUMrd5ShmuQuxSYud8OeAV7CaaCQObhyQmH6OxzYnFOk645OyLyIX6EufF/V2WoERRvztS7viWkdlzZ1LRLoGuh0IS2F94Kzeu1eftaas32DHLM6PMYEkHB5ONbVkTNwExKMiJPaRf/ao/9oFuUmz11BDunDY56vUyp3a9RnZrvgInPZyU6Z4/4yYXN60/J/Kdbw5lWcMuIpUE7V6iM40lnbR+Nca2GrlL6YoBds9pV3dXiNSmJu7hiOkArztA1hZmZzPUyLxbk5yJuTp88Ljveb20xjF9JTHFX7LG9cAAFZNTxPqnoHy86MZkujO76obaAb/fvTy1jmS2hl5LXXxj2L6dwdKPRi8+2Brhuim4Kcls2qd+SsmfHTatKUfkjypsh+FD+7Yq6ZhUGbi4/zrTe75I3y63qB0OzKNse++J5YL+fVKj/WPGFxGfwPngMfiBY0zSLFls7uqZ4tN3Qx+OtCTsDqjwm85aY0wkN5Mmo2OMmbwe0duDrRSFo/+bhTD/B+5h7SzfXHad0pqYQ+9m/MipwjpY2CTpodQpxk6w3OfzGYOcKfz/pin6PdNhNDDKB/B/DZvCPsauCvz5uhx9HvkO3UUVcRuk7sH1U+QsrfNYGpeBpm+1FkHnP4SREZ6+nWSm/ykkd/ReKojSXPPHCa7tKGA33KeoaczLop67Wm6+nVyez6/5yqdInTQavDpH2wMQFGYJUIdn0b7clpBBiu1gxPkncUlD3DGogSw+UvIJlR5S9avQHEkNl9sHMMjD7Bt2WRu3t09+7aWTm4vIZhxhNWLjnD83Gsa7T56aaEOLnnD/m62Abz0/PK48SpAUgCikEm9JIvc6Y98cooTCNyOp9+k55DX9i9I3A1i/yrYHXC6hdQJL/CNJswkI9IKnSJUP7hN0slnXWPQH1VDlttAab30WuGhvkrLTBylZmSwQgiTvUWlJiEvN7xzhbeCss2GIeVDtsg9ptNMgC6826sv9/Fbwn3v9x7SAMEBiFA+MCD5TZt+emNx8Srz2OPzifkMMh/QykXF8nWsakn6dZhg19ExdRKBnzJu7wItnzxB1Q6+SY2HvLx04tPavj82xMscpmi+Edm4mrQl5cI9pekMahrlT01WspRP6vfsuAxaZa49pWiGvsGt0bOFQDCrOQTmNvm9h0oAFKwDLg+oKRCJoygp42YiCroGrQtkfZoI2cPDqhGDBeD0DQzjkR5Cn0NnT0cr5z8PD0+4cNCfF27HwuwBiTZkuRhKswL0l0lBaJ/6CNvcntX3HCj5rx8vAizIvkyfjVh1bu7r+uYqQXvxpSuGL2ErQEhRWdXBsuhByLPpFrWcTPc81vkfCyxNrgOMlNIk4eMFJZnqzYlpsECzFXy3iCyPNryBF/SMjpCjZDIkvtaPa/4HPuhp2u4A1NhG0unVxQgAWGqQKgPuWrgItuSCim3AUzpMSuSeX8waHUAB/UjZPNyxiepZeCJW9zxtNndTaRueXKFs3utFDU2QtUlB0i0cqiMP3tYTdmMhIArNrE4j7mPpRjBbHEJKKEVPRl86kZEHa8BDm+tDs4tBx3KfGpgJcvHb8le3MGkcF8dZCAe7FKDhdu9R4pEEAaGUwud0D0hpyCjUyEUblUy1QNvJfrf17sGRth1x38L9Y+TXNF/rPCs2+s+img310nNtnkqye4nnciw+3octoSZYrxcKET9E+swgeYAYPmgCOpftHKtD+H2UFKodwuoILGskzkFj+cSitNhHDcZGgB5v6X0QF4qudVgqQKMgVb9yYc5wvW3HYWwWawEwePDlnmf01XpPOctLAmdFRty3jeHy0QnKAjfCtik64Fi4JAadoAQPdZuJgGthqxX3kCN6lOU0ySNatNK3sVJmUgfSMwCGwqqvFW1RcDa9WL/yBsiV5labYf0i27kG19ybU60SRkOv1LROWirbBZZEUFkXsBksrKDV3mMGmd4JOGI3skac2pF9uhf2WEflK2x6v7RisEYAZkyVTK0ulJOwnN9ZJ9kJHokRiHJSEswn6VTSjRHzOa1EKHjbwCom950jMZRWwRD2V6PDV9TIL1ItC5sJWTK2vS7/Q7B7Vf5xg5eAdrAX92Ks12MdNLHR7LaQojA9bvoox2Z1RVl2//2CCdipbVP4BGoIi6FN83Kb64GLzgSlv2m2P0TVHgEYH9kW5rMrDezqKcv9S0VBCvZQkyxmXeoF6RfywVg+Qb0rmmXp9Afz4CbgRKXpEb47jCIP5IurCCDAV4NxYz17Oq1CmvGdalN9kTPyQYN1xbAS5wN60cesWktXjJAYn4i1QAVqqwWYTAOjgdA207ecYFX/S4gTnuQs/SqMpJJ1sEjFfkRliLGHCTx5b7OiSyv0+MBItcnMqFKf9WWNtz29ChumY9qcYziol5/Z3l+yAIiSuVlJXajaxcdOaQ1XMNSzp3uovLk5KE4e38qClmvQf0QfkZ13ANXyNL6o1K12QuhNA0p7y6TLRYoZYBovTaOwMZr+auTpDyBjAxGpoVZ6/ipy8r/qfHu2x7W3x/+2lp2SM27NZ4XbFhhjNWhDJjruAh7JWQgyNRXXYqivvM0qhJpyH5e6G2MBhO+05udUX+Y2pn8AH2p9xdW6VW4z9+P+ImaONjpixFWl7Cg1jqZTCVAXimxLG9NFFDUtAGx5c9kxUauHwUULDqPH5PUkotAd84gDpwttUOy58OP+pCoo7SNEq6H1nY2FCaz1nXuas5d0f/e3Vu/RLBY40mcCTFsKn9N+eEXfDIlim/c9FZjEASoxNuaokMoffBXAyKBOuTw/2T8KQzTA84ZJEB8tFiCOmT1cQ928t3PDNb8BFsEVYkvrXGJmaI0DGI6IxdJMlJMsrkNXs68WgHSLzTmquxm8lkixJHs6OwDRFKEfJ9hpTvyOQYZMoczgwidsgsJwn7rEW35ljToVsRMoQIpUHKDLNdHYhMwElseQaE0THYuCFFl6PEo017lzfsXc05C0MkSPzlGAS5eMme2oew4qapAjjsDV4qGhOCR7F0v9iA8jP+MOZi0v4bvwU0aK3J+0I2IGAtPNUERgJsCa/pRPlSIPnfaAS/rNwMysGyzLeil2ikov6ZGHjSKXv9NUFk3haMFAZe2GVfpOq8J3B0hggglTO3gWcecG3fMxndlNixJz/NY5IiP304F2ZL/uYBsC8SwtHD4/xvCG9rBI7OdwQSVxkMZfdLblDQwm8dtNByGg2uXbQWNH9fMly39ihDIcFm1Z174AyAgwbnhARwYqEnq1ZqaYVgrWrhOWo9LAtb0lHsrrrukoHPTImGBwuKfjXAAvpLyuLiBsWCMAdLU1OvtB3R0iGr6AoWYzb8kit0m8Ca/Qv0p+Ut8WsQmL49eFIkE8GtaD30a3NPSaTaQE5q60EjLMH/OvqBMu1tqKVZ1IdWtszosLI0UMHL4O88JIOjRkhQrIjIej0GC9aRDyY2MjOLGFniaAywbqzm8AYNmAQe6oxkqzYCj4xFOkQuDdcB3a8v7ALSre+e0ccghJHsxAsErrsvMwOBGKr+7aN6L68YNLy0jfnStMxqfNbfanwzgl2nSM8R6HU+7E32Fkzr0C2YcBVGYFc3EnT4lSUo7FV4XlUdacJiv73KTeVz39MClQ04HdfEvx7f4LZzTr/eFBMqxsmA63jChpZz2a3XdR5sTsuxLLKTkf1FUOo8wIUjDXTCOM9TxYGDs+ApirvBw5GUg4B0Rpwt/ukz3JbD8FM/wDMeGZpmRXWdlIAC/kHUZDjsCPlSJoYMNDMYF8Gc8JiByT2H4ktoPh9hYQ7dmZDDOXfB4xziHw5HwweOAXJ4eNFHTZ0eDV9nGOJ/bBeH+1/wMyg49u7PABzR8r9jbmUOLJNatl7mI7DG+4484fLzmVLCg7wkjtoH+BOQt7vdvwWmgFHcYzGJ9UORSgEK6fktFB5HuAwW8SefMBirlVvrJ1TEIYDayT0fGeVMwYi2pxN29jZudisczvQnrRg1ap7slD4SkwYKLSYrmOvSZCsMeSREOBYbljvvedt+MhEJVP3ouPf1fllunpXdek0R32vvz0d+tvJG3tUImMv8SwIRKbC9nVpN37mTL2CkwilcBMHKy9GG5rkpZRtTOhGDYaGZMO+Lksqpem1AqYf1JEnNHvl/mZ+v7swz271iGiLUs4yYz51eCddZlMUVKRhA+KAwjiCKRojAxBAN/jaLzuTUZxSc43l2w+r6ZDUUW35TvwABOR+0JCdMN82Iu6g8M+LAa0288Xl6JUHSiRDyQnBpyAhEQJfAraE+FiWscCdCRdq0+eTHxR5YMJjn6+1IN2UWeguJUVdaIT7HDGWjf5xsUiIdljb5A2+QC3grKGqOQOE4ymYCvLWxemXTUk8Grgtl6hChk85FQRIFb3pkLXYjyMMABqcIkCada5zg4MQ1Cp1kolo2L7kvJ9A5UefYnRdpYi5AqIW0xhAuTCdacHxe17MIMT9epNy5yJ7sQvVjttmy9aSFKc4RxI5NL2+jnSHlRw0OHh+5dExru/c0q06XiJgKAnl58UuyQCdo5xRFakedAEuvYzRPUNWBOlACkCZw7qrJAMTv82L4i6QUgWh66OTN9dMTaCdToJJjulrw6mntoR7xZKqARJCHtUXIkx5dy9YiJDtP1JbNbDFnEjj1OTbNQ0fEp7D5/D5bh3otmjGJ1lOq+c2Dm4IxApStaFJTCrqF5KJtpHx+ew7g25UEGglHpiI0G0JS4trie4ghjmKWQnycTesYscn1Vzbj12PTzwUJ7TbGN2IkGrkWo0DggFmY2pdWQDud8ICxctaAmlWnuuhcNcbCHgUFQb+Z/KgNRZjYx4jaD94PIqKhOAQinrNne/RL3XU0rEZg9emxYpmocujhPWdiYbnCRtOndqbt3/j/yGGiDPA1ejaoZhQaEzwQKL4URzM1xCUej8fxbfKTnezGAlsGdrWSAo91GdaLHSc28899SzW4g0sJU/eVLm95S5OCMXL8sEYEwxf8Z/6r8ts9eHLgyT85oVgadmk8ykB1bRxSDoL+jf9rSnit/S6aYcTgXENC3wKFIyga0P+f/2g0MMxg7V+Av9G7cRaAaxA25Q5gjx4DKf8FyhE2wXX+z+Y5ebGE+KoB+MDYom6+j4lRg+aBPKCFsDF16AYyvDd4f3XUm+IKDyMopOr/4j8HBEX6ueNF4pJqUMhbQ4vDOO15GxyQsMEkU4ocvQnUwxkCjt+DryUrENJ+koYBwEY2MRT1MuDyhlp4gUWtXNJtGNShonm3mJJhr76p5Z/q9PCdf640Pxp/2gTyrZyUG1GpHk4pGSUK6qIkE/0x7x60WfwSPB5NC9JEkklPn7W8DbxUJShavxBgRTa1WhlFfRTL+6wkB+2XKZBAur5RZKlmztG9rA+zSsh9oF3TAQ4GcAR+pgLgxomEKLZNokEsEz//1FLDbv61q98CgELxR6Ey+fr0Q66+yr/+/0IkfVzKVcIrmEdS8GxstELC3g8JhniLKiEKPjyJP2VqciBjG6cZlwfLPR6ET3lMgzlwz3f+ev9GFbo2aAoaWZ9xewz4D56Xl7J6+jRu3bboliYKcYAh3YSzzcQn6g+3c0JORE+B6NT5tEau4qjyQeainx4jeuwJ9dDnNGya6KSTZ3WEfdkbreJq2BBpfOAvx6bqFcusLb1qbSjtGoVmqTMInZvfpJaPW8FnF4fN1hvLFP/PUPGVa4UiPY2GEi4gyTMfDSUPFYD7gHePl/Z8g+ir2r5hQMrg1KbSsxaNXRy1JDCtjw8YRnRYibsogSru8CKXflaRCPN60M5nRWPoWy4kzs/sKOIyhuALvNcjxQz8earn5sHXlMYvnOksydvFFkrEOw53b2iRDsj9xYmx4oKT8TR+3W4QFlVi50Wk6p3cyMOfXW9wMXKxKNw2yC9bUdbeMHBHhvqBep+Hhkpgz+Ej81W5EzGVQkmQSe8/5NmQX4plECMwitGhz6b7QZ21DlR2OETvbVArV2t+66xy14/psJSnGHYoJNU+BIJ4quSCBCvEiJEQRkjJKFVEYA/7soW7/WuxZ0HK2nbNNlQIHF+VvASv1EosLQHkeerbsIZvGHyIWBVBrA8jo4rJjTagW8ebN1MmlFUNdK2Mnelmy3UtbrltBw2ZPF1FaskFRY6FgkU/7REUv3oSA7W41USntV7NfGH56DkzMw8vUFLd4REFTrGuVHsU5r9zXPlzUs0mkpJ0p80G8CQUaUN/Gtd8qYqCZlUX804l/TvJlXHjgyNzXXkA7Fojh0cmGREbNDjuoUIXvhRmpQy7D/L2t7BpGckcZzWlO8QgWcShcX1WZmVoYODBwYbn84wZyMvbWPJm1U7dAoAL3ZuZcIj363LfbQvmEqM2Kgg0y6ZtHm6tpsVQceqOA816DvhvZebXy9XAYF7VjNET1wKPGWYCPQBJRBdWUgEtEv9WYpLkN+R8fD9NmCoYgZ7PJAkMG59TBSDApbCp9hNLD/uf6V7ECQq9M6pZWu+xTrTLX3zbGGbppJnpZMU2u8qpNvo9cuAn6gZziYdNaig4ybwuRb1PnDwxcqyTgmAoxZpLOkXyN74lznj7bmtOLMGi0/392IbXhCqJyIH1oDRlymwKvdS8Tl2f+zIO0wI8NgmogbWr5tbcGFopz/3V+ubcYgIcO5S0ITYyKtiYp/h3ngXt9QX+9smtgxEGDVwl8PwyLEDDMuqhkKiXlRLh6acwqYSNeHiDeS0d5yhCEGY4gQwjN8FIi7FDC9u6ToBIWPqzlICDV6f2g3NDlSOoF0YdvRm7como8E7Oc1mrp9IPAIDOTE1X2CWXoCNHgWFNUYiKPedAolYED8k9Es4qUjaouDiFhiD24NBq2+umz6rzi8O9ik5gSPssZCpLLj5U8YPxVKBRk7fXo/PmXgtB6gkKVG1+bubmR20fEcJVOPbClRpCMFwg7y0cyU9b6VmlU1xyuHFV4mAoK7jHgcNQPCkxzi145lqo3tQr0YFTs1fdM19PZGhBG8vHYuFoKyl3DbCJfCtXlLSiQrZqagpt+ZngzOKB07IBn2YaRytwj081Dnz/3DqZW5Nhk1FqkoAGztMjU2d4vDTTKDPHpO0afaAXR5XsS6tZ8x1RwIDWKC+05q7xktKU7fGU8SkqcK9SgznbjoJvGdjdhhPP8ofoBn7cEENTHGkw8xfnBYIaw6n21omrE7mbPXeriScYyJGZgLBYrJHpo2/A2X0Zw/bv5WWVaqdDBSE9I+x93pQc8nUpbkzhkpI7poCeiQlX9co3Fn0mv2CBqbT3hvWbD35TR6LDzOQj0vDz8HN04bf9T89+Wh9M0NmRcW4cnXqjkXcVb0SvEGtdCYePlJ+vsam1JvVHH9Xilp9/TFhdMjXPRWeiSx2Gp3JPL07LngXJzPw6deYCZbKN8JLmQHJcmRtR0++ZhNikEazeMA1hR84VMJFpWe5VItT5J0l1WJgD1bLXZ8ok+2G9hNaVEUoxz24pb90Ddfg2UkF97tYfSmyG7vnN8le9yu6Ab7rHVGItMAYDHFEvwH/8Vb0uH2VQhcZGe3h7U3Q4Lp7Z0X7zwiRkG4dgYjBOsstakU2n1mBVqVD3elJYyhMVOrZbKycz49x+VolIX9qt/MqW6VjRyBSFpsO3k2E0n9PZ9HY/7Tql1NxChHX6RjA+5NaSK4YKdJxvV+AMjVHuwpszYjMAQC1T/hYt1O8SPaieSVFLdDorrfI/vkHOeFd5nSPOFdcGKKL63bBNxlYzCu/yoK0WJZ4DCNvCt0ES7/h131uDsWWJo9vPgEK9C4coYzPk3bVutdl4DKvr5x/l27na8p6f7sa5ROf3aVmPaNv+teP0I0GJDp6TWr9iApYmjroSM5qzy6xxkaWBWWdHwMxlo71jZmq/OZym0zj2J86WlCXRGt0qqiMYRgge9bDOfdR+avzaFiDZnJftac4bQ2hF0mPHUO2nZERO7uQacGEyJRrJrJzjopUH1FSFjVIGilKugblkuYW7m5UdIIKFiV4XSmbmnLMAY3gtHyAFs1J8h4VHKFL1kqvUYkyK6byPLLAYZSBlEsrfvh+ZwCt3gveY64eVWOxUIj2enQeUWPFh/lImmtJF3JRpzzFkeD6FmZxCx858GPdkl4uSeF2fmavPSAdfQXq0iIWx1NX5W/63mTC8MdHN+A8L+R/NzJz8dP2rewlkYbWpL1BbE7IpsUYmBULtyuMrh3FQDABANUISWWYNIOTiLKsBsrz0aUBKB9dmSnlHFsZQFZmUBhUScnzJk0GLxioLEjiEkCLC188dS1BCZOzPUQ23cMKUILhDCSyAZ81mPyrXthlBDQMWZJo7KJ1kImoHVof5mVgGF9T1JgIA0FgDN+fcpboCmqnjxLol/c9uHXHSHbwMbmo2jvQ8qYY9nXwfYO5bwKLtTQOmFR46q/RO7nX7A9c69oI4VnSZNmpnzhkFbtVZd2IPHD5gW8zsHZporhqyPAgUOxKKkBRYYxpB7nMAZkrBq0MGUTMiewxiANbyZlMsa3VFUSCAm2CVdKr6GDbjmCJWRWCYwYq/qcms0mx7bMxgttkgcxgtaLBxRicbzhtesieg9yhoYDPD2jnE8vrkxRVhnB7jXy4o9qdhJKso0JZs3LNScNZ7y6AuY0rY9YAcOY5LHocmsyb4C+BJRsVD+jW81JRzG6gcawv7yqANvel/4HL8+C+c532tOSfFiw3R8wsrLHD2jdJ1imb4e8Jh3Rs4Y+2zp2+7Tw0HnHlU/9Hp+S0YweHQX+R/LZYtgqP8ZZbNussdR7NmnJvz1pvYIaAI03HMnDSwdgBdlaViwkSAJ3qYx5YyVX1ig07E0HCKZCX631x8Ny1B0c7vGpxFziTfujjwC54xezVj5bAehUv6U7DZ3tihHgy3fUZx4dxWovqI3zZtV+26ptGWYonmMHIY58UXNcYOEQomMJfivJ3KsOsa6sQ+Js7JFr4Nn9S1MATeyne+MnHrJIJCHtkSTj2V8Q1/YM2Cw2bWD9VRhZns2DQ8lWcIaEvLbCoLly1asAqDnKuHEpi4jjNU3ZOQagdrL0RHhGTinyOYYobynr+4QKXYWdjIrvYWan+vn6fWtbayvuoJvepLQP5PWw/l3mZYkcych5B3PgHwNXEafpk4HiwO0iExdmaRTWPRxvu3cgZv9w79TefQvuBMkpHvfoAAgt19o7FQtl6376cptm4hRIqQt/BWVMDhlINUZU5TQQVm+4Fs5Ito/Ma+xxdzQOe8j3x7M6bJVHo7TUN1uChu/QNqLWgdqph6abiz+lYUXDO8y+ddNkNJtDJL600ZcB5r3I3e31WvZKziaFreS0BCbKSIwR3BRGs1GCgGAIGQx9fpHASkTapjPsHBoZhLQ/+A9Ge0fyPYF1y7QJrYFJ69g326ezl65ZFPQEkCxYiBy5cEaiYZOCgKzGQjvRqf8iR3wUc2h31h0fEXzHYSyv34vl4oH2Q6CdbzL3mleHUdkqr8ss9SFrJQIssTWZADlwyeZVq9eLVtPpogkQXJxbO6cizrnTMRY0YOud3xDPFyjB3nNPNxOYWrWEtolEc4bMd03VHUQuPQJVzXXMms2x/w238aR/JYUSNzmCkirAXcemUaWSE7/yN4r6tJzByVs+VqbGw/dca0NFGcCv5vmwaS46M32iYcPY2pQxpS3So0oXhihZIRJShFXG6XAgwn4TX8LKm4AGJfWzOzlp6bV9CCgK1J4+Or9Q8f437NSeHsN/P/lqVVcugn7T1yksQjV5rFZ7VRHeX0U2O6jDBwBkU0y0zYnzNuwsN6HDN/FAdhqGykn0Ph4FWzkQuznUlU8PoKCcaswyxmmIqPCpfV8D/meBTEanvCjvDM3puRbbhc2wVL4TewvJuDoZ1Jst0SuD7JlfeibOvgGKrRlffNRZAm2mbWPOU2qOAt7G+ihtTtZg8xbaEAECEfnv1ZC53gw/aTxoTaU4d/2iwDlzYx629VN/zzDoq7Ei/sSI99dyvVJ/KQ/z2Jjbs4reccZQWSvikFTRly7KYEBB67KQKoFoOs5eTf75lQMgUYk36wmyMcnDOXX74rW4jUMvSeiPy+PBBqIZLX0TFkP8aCC2+u9R9Hb+haeEAtRi7J8rhLEb+4UxntwtQUL+cWXsoXYK42YSgYZley0c5XWTTeZcq3z/22axmfPCKqbxsU3rS0w3EXMc7DL1RdYhWyMJqr3UdkC3wLPm+xozhex7BEh6bsgg+zRfEkFdbWyyXWaDnE4VkkJlZ6CRLRn21+ZEOzIKrh8QFu2LsX8j5a79dSGH3k/3kkkIQmIjWRPnbfJTbZBQGFx8+VLCmuD2LecM2oqgY7Z+SBXJHT0P5VBw3YWve1Ct6oKFzpd8dAq0Sr6hWu1IL1ILy4sulOq9WnqwAXfB9rvMllz3B7qdAx4cZZ9Wy+3GNlNc12LCinuRh8g/ItJfpDUG8C0hlAhlKIHIYFxiE5fE4GAQSL+wVosJNDQOPmSnl5KOaF7Lq0N7hDWuMjqE+pR7jSvJU3oyYk1MPIXC4tO4afUmMSDDmSDCji5s6OEQv3KcFGBY2NfOg/tJx0luW5s26kcC/TQxHcSnTQuMK3VEkbm7QdcMVcRv3SOOF76+r9CwCuzUBPcZ1zYn1iY2nTC2sUtn3IFfqZTci+WP6ULpshOCiRp3T6+aw39GwF2k1vjMWPkDyv1f3B3MwCtu1nTZ4vumQ0JSSVFOnAcou0t+oQ2xB+RJlFrPuSirVIv/ru+zPTbmIScu/kVMyorGwJ8mLZxrxCSikownl11j565vDFoUvxXWwUNHWao+BWzR4Y6ZO5r+mRocXzzq8vOwLzUJykCWM8nUgVJrvGwuN7PYhRg6w0vaHYS3gJi/xONe/OiJaTCdUthaCJuUNIm5y/dGHudOPeQEAtdT1Z7vFosgSHHDgHdLFIsCTcNVzHc5ym4XYwinVaw3r0/GHljGro8vHVGmL30KlvEUfsXlwXzNoifcBE5wT5Tp79N7yyqq8cBu875BkmYaCUC8/v79oOQ+dzGgTK9JkFxCwxDL/cD0+qhLCAS1XDOVk2tPTrT1JjTZkr7C99qE95ORyENa/W8wX+1LRbyxaaPghwGFUAg4ElMZ/BA0kCkJo0Kcv4SlJltPK/mgHtoZpUdbOvUlOu+8dx7Mhl0e//OMXKBtvXXv2E8e8vHOWglWDtgFG/Dax428p2PVUJafWvsrBJNSBCS1SqAQDdv5MqSsi4IVt/80XP7ZbEWyKHPrzOXc36jiGf/YvmMSo0cLq1ow2Z6Bheu5kjhDKT61ThVKdxkCFauavNh/Tj67UfsQPOwBVFEtJgiLvv2Tm/nX3uwXBFK9A55JGh7Ni3t/89JbJp0mzLEPvyHf6LYaJ3o+ObpytKpUi6LUVHVzWgR5flJLxUswQwTFwz91vwxc3+YAYz49pE+J25DLq+EfXPAA7iMymPWjooMuj1BHe7movQtSIgF9Ko3+eJY0SEH++uc8Z4axJMmShxNysdByEMMagGasIBmEVacq4OsQomQmqn+NoKpnsE1GucfgyRs43eb98t3p3xeFVKx3B/jdQL61Mj0hfR62w5+r9FkjjgXE0DqYfV7/k52C2qfRzXIEsqZD8C0nCKt7uL9caLGUabpY21/LMeiUlYldL3kPyhDWphCfnlQs0M7w4LZpdRztqt8gmLNBMvO5KuqGPhZniihKciwdo1Y+t+hNhOj8bY5H9ydfBA+uDCbChFXwf3i7D4ANi/65mO3ODbfH/st09w7wyNG/Uk87Bgre1GpPAI9P6f+v0Pz6lpThVWLkCFBPEdRW35xQ2lWKqKwMFtvgSPht4jgh5zoAEAFsP3m80P/DyeU5DFExJfhWoDxxHIU1/avmprGJ63BWl/RtXb6hNRzeMA8zw9PF1PopQAaM8gQJp8yTa0p9m+uxTeDgKLstRvLtDZ2Z5XzQvhW3yXzJWEFebAKTkNw4tWoe3FO7D87cNdsfoDLV0Bf2gkrsuhayDk8RvIqwG3xIMjecxQtgIF36DOabt6kA2j45abq9OwYhgL4eqlsBGzAYY9PTkOh8OrU49aFwmbYmp2nTHpNcOFSwITc1j0ZUNeJDWHyskBj1PW5/94McP1G2yaApCUJZsOPcueiTekuZBoryMZXjeBbIx4j/1GdDQDodk0CWGYoC7hmAAfpGkOLEPAoTp9VbUVLiH7ZroASO8yQPYxzJk0E/3KdcnQTT8cPqy+BGwlX0WoNGWwu5EgNquaMRShwPAUNJGFzrYyV4bSn8wL7ElM6ksBj/UM7t2nit40LkwrV9XOA+/5wPvLAMp9jBIyoo2eZL0nxcDA3xtx+mMFkro6hmw6yPL7az7BYgk8jVxLRQdiRx8T+Ok7jkF56j5+TEJ4IEWp34DzGH3ygbSkGd4+PYOlJ+QbfaCEoayJ3W3ZE+nYFKceBZe2xYwrsqvBFyBIG5P0UDCFNBTwvWS/ZljamTAjSyls4mP3PEcq0ZlWftQ2DrIB4BhgyHLAIcudGFpO+tWKsU5NRlF9Gu4/wXiX/YUsH5iIr3pizV6iwPPqLXmiDMuM8Rx6yXc+lIzzzk9cV/kLQAY5noB3AIAOBxBbNsv72ECei/Vhwg+q9JBNpoCpsueKD0e4muBn6EvmHKU1ejJ6bE5gGNOAngoNntVi36sEKEbcC3IgiO7MjyHAfKi/3yRYUVsCBg/OPNsJxyGGYQVZN5f5E28IEFWvIXyobf2VdWQjWDyurYJmmM3xheumQZjA0bWp4zeITEAW4YAD1SsM4n6C6In/i/i+ittNFl0AsmFzUGtawPI65UH5EEo3oKYxCzWdiOUOwnz7Ys0EsOvzSJtkYaQ/TzXNo8+dG6As3QHtQ9wCI+Qe25upkuDorsNE5xTWFa5MmcjqjXLfwvFPE2U1wGwfDoDaDp/IGTYu1b22gM3DAU7iNWLbkYk2bNCU/87d3JvHS1RxiH1ytw8gAR/SBmUN+EASy2SabAdZKE53S/2wWQxgsOMeVFy7yxfnx2IGkWFt/G2anIbaRtN481TpaAYZvi8SETf4M5LG6W2/cnv1zqxkb8eI3xGZ02qwrgGmBsZuZMwDCxavQHU+YTCzz4vrFoH7udyzDmEs8Hw3BROWNkpno9YzFaTbgjMobwJzZ1PJDmJshsyaOO3xjKJqz90PPcbjbAqiPJ3G3tK7MnnWTt20f4ciUknPoeE9ODfSeJcV/DAnrL3ELWapkmZoHdn1Xv7bHcP5w6P9vlwxEbVFvjpGlgnL3x2W3J2EEX3QCjSj+KLu9FXM7FiEzBoYv9Skz8ZZysGsyiW9JFubVeGHeGHDBrJmAkwIDjlRuM1sIubeTeeXKMJYrYc3XxThkSt/+6fCSqQEbg08dcCgdSskbAtSGTI2YAd4MkV/NqW3O3/WnC7Q+GtkhVa/LN/d5lpKRWV/g9nnhyj6M4HNjIlTs1x3FmcJ//ViSSgm99pPdCrRooT2Z5GQci/MolRkkTjyQf8fuUfCrdWz2q3Z+IT/vnWsEDn73z9+UM1E2GtVtnKzZuU1Z4Y9MDGMXaFX4BhjWCNsnugE/UShxjLAkwU8BKvoKvE3AbhHoo8SuKEILKM+KOIhAGce49mF6YKQWzKDl75x+VT0g8g9cAh3RR2wEeO/W2kY/V+CP6ZdUGzSMgi+ojJeQ2AQ9Eb855F0Tzn+eQ15C/9PsRpMRsWhwXvTcQ/mVfKnEn5g5KTLGf3wR3PLQEDlelW2Z8RXleDmkp13wtWqJ1af4m5MYw1QedEiU6xZu86qYJx4FkForxJMScF/HBy1LaYyVhiO1FlDTxyY7zBu/ChIqcYzYUOdTM+aYR+1vFWLqJDClImxunguU/Fahuw3RzbGTprH4sYBd7TyRSsfJ3abw/qT3EayGVjaY+ocAoZ06Wlnn3pHEK4fPwG3GqyUH14q/jyAQJGHCotcLVRy5Td0nQHk63oTy18wz0rw7Tep1CuAzm82AwAwpy/Tor86HQHAWCFxY5WsDY/IRkgRG83/B5OO8n20aYNVBPHIpuO+SuNiX09Kj165dlggk0gqQqnXhJVOfCj8MjiwvHGaz62lN65tFyn+WuqJJj8n3yPz7cFsYBKfTSJLTRSVeQ9FOXY6tgJwR9lo7BeGucFc5x9+NRpqb5JXddJ+zPvSEarZbwnTJo3vmkCNqfQ43P9MeFlZjDp02BVfGD7/gU3VcuyHf7IJDgVRrZJ8BHTYyOEbXDs2oTsgO9/YrB5Bf3E+lFNTPj/isG6kU3y/9UENm2CzbFOdJyN8edMEo9QFI0nqBFONwqdA8MoJYojHCEUfx+srS8k1Ax1oyIlK0QMGdsyvMRp+6fSZPHn09R26AbOpXGD32T6pJ2pfC/yRrTu1A4/VDhzk+s4Le4kX5488FUOZ1H/3/qxJ/0PJK4FoBZmVOsOvfxo3Jf3bkuu8+BSfyce7WLid21FQ7RsD2/XbwbC3akZ5pseCXh5lGwhIekeGzUac3TvVVUEViiN4RleDGF6s2TC6WZKCO9eRD0CC2uDyMyi1c95ggNqC4DGwBQIxZORqIMb5UNH+AHeTEnWO1MXiIHP7C2GDXEos3jL2uMT065LiI4MvwdskQ5aPr3K+vq+GF4aAjsTM8HMphGBEZg7OOOfzy2QPmOxq3AYxy/xHvpLUkcPnc+93+UylQ62BCPkwfOYItDG59swE87cPgtHVX42EjghNWLareMwggoKOFsQj1hGBMZLVrlRkM5z6CuhfLITxIkxnpTJThArFlurxeERGbrnDsHjDfcyIJvo0hGFWtTsxQoAVY1ukF05zrWM679HNtW6zwnEfO0CMbC37huMV1cgavn3AF+oAsWV0h7Vk7yYPZaymN1QNzCFzXrtooIQjrrrKEU2yw6YGxBhlzbVvf0w+XC8voqPpKeLYviRmWUEpN9cMDkvCbd9J+Bal/JT9JLDO5yMo41n2mtalpPxRhQwqXBNhIeKHH8CkjhlKWR/MWNJb3WcOwVmJFFbULPuyLM+33OfGlLeLIxRAfzW38JkVPPuLlP0gQA1yRa4SODn/OAy0KgMUH3XnXOUOqaseD3GbwTf5xR8ymHwQToZmyJOZSmqSyPeW2zkFpunv5/ZT0WZzHTbPgyp2qpI2zmzKparvznUahpb33BO/+dJ5z1maz1goQwU3WpOsCm2efKuPI4s46ILPjKTqh5kcmUaBVLxI5XUeL/nUQjcOwsmwexIVbwzqAzMIjrCihKoOWeekyLXMXex2KjZZqfpgBW9Z0TonBbb005J91XMTac6JMPerC1LHDxr9u8t15PC80egKvlXA8QnOtVZmnH2nR+ETknfKDWBShLWF8Gkeagx19eWRXkkccZ7w+Dabw0A+21PYPMr8ACsQ0m/yhSDUNAVW7ZcisQomTBRP3EJFpnm4u8p0XLI1IwtjEtWvTAnAR1xsAs5EezQl5U+YzlSvq/um0TnbfaemZlPx7JtUkAJROGuD4yLOsHHM7/xM9M4O0+xp487eblaNGOfm/Jn2waIs+/mO8UzN9O8fqef5kOXt1qQ2VeJomSZtHS5RzOHANKPAE3N7UXvunzy84QYIqo0+w/hVPU6nUllmELSU5M1EnlreaoUvHLlEqho+9mBm0PuNp1RJSR4Oo1B7iLYCkmY571qKrdoCuo9tY1+esrY1wfHh7XjPnRaotYpgpgPKpwFLfXM+voQXnsImIOikMHshOrYnHWYxeODp4jtXgue7lPsikZXKOcvjYutP/kz1/umQnpfT0p4VLgVHob9MtcgNUeHP5rlrnp2H/w0gbmrTh3l0Y0+3zu0eeZBL2fN2AB2kcxReOodH3HGhHOAaFkFTbiuMLmaikntzaJT//7yNNbSXD3ogcTaiNRu8WsHCuv5/ghVEcvh9ZQASUvcta6hfXDw8nvMJwp0JrkwCTMHkXtK+7Dlp8EojovRG9vpTgJ/DI6mdhPbfXnS6dX574mRiTsbAsdwQz/+YDeJA9FlniI8P0rklQZ1DLGbKjRnnYqMNxhOiijDsfgtmbqgRohW/yqlmr7pr5Q3NY6WrmDSvn0mzTEbx1b0pD2dsZrAicxOS14SRH66O5I+OXTTk1WbjlCPfkH3UhErA9NQfBYTzoatCoXxHm3i7Zu5UvNv+oz/dM1ha/Ku852skbhCVuOUoPISInl4hYsGyxWfFVOccq4pusMq8EKjg+Xk3MtWHgGVyHERjMTFUua2eVERnhUaXlWwpWxOuYz9XgyTkLksLdnD/4KnlROs3VHwRqfFFFCo8O4V/rMdYFudOr7riAbpTLNi7b1DUZehFVrH3isnh0dhiGh7wmdrwnSWrGgpihHPyi4zG8yS2jwIGpqbuBLVSgJ4ouH05wl+WW2Qgw/PRxpAlnuBInTZtIyn9S9S/v8gGv8pAG0QRedLyTpB+6szYZGg+oFRil0L1YpsTy6MUrGFDHuP7nc32iDSgwOVBrmlQJFGhRhJBDWPc9vgFVSqhsvaAbWli5LRv55EYAzfrLbRpf7wv8my4oaEuKw6q4dBV16Obq6Xr+8tGSbsxc8UH4dwp3HUMrT0bs3OiuV1dHEHka8NCRM4+5sd1XIgWc2kZCmLB0VST7iJaSxRPtqyWijrS+/l6YDG9WQIjmsgTrljfr5Xv3Hm7Gt/AM9jYQKFnm8s08KNH17V6B60UVgw7UMY33L+F8NCuHORXVZeiA9YpL/qTNYSWg38jvjILaPyMfqZt9VhoQWpVKVbn28zG48hHjtQ95RSDn0w5Hkbfr7bjoW8v282hHyrbm0OvSytfv8s0nPxPrU2jQMgO+Jm4hdaW7r5A5s9nFuBsXyqODPXqXRwqWsBY6+wYYzXoto8RyUk73Nr/pto66URtnXJ8t0/KUJt7doyriGA8kPzP4P7kDcsCZ//9KqdyIcnyUY9gkkbl5+p2a6/gb21JF+yzD3cxSocWmsDnau9dpKiiodfd+kkNkVgCk/yshiQ8F5RTPNbASi8++u4Xsh9KIG6yq9q44fK34vhuSZmquMib6dg35Zi3j46gnhOht0XKlwrp2uaeVftfTFcy/YIH41nZ8lw+ik8QxzKVtxWQPcoD0eQlFdhoHqJIyrfRKQsfY3h+c3te18u3RQ9G+o8eMwPIBsqsm+HltCMjmmrvX03AlkP5Si1/54oSlFVQi+qv0LJnKwEQauFdA9l2Ga4LKSXID5wuuAGgKCIIBU0k3GCwHzx5RV4gK2ri+GllLPUt0sQq7eYXVNq4QjSivgz9LpJf9y5UlsbQpEvWHpgTI5mC3Ahlc52puVffBci9xqZphIM6ef9C8CBECsYghMqouEvYerbZNbplFxO+7BXdWrF8oXetucmyBjY9SCGvJimlzFfM5KQOD6LYMc2qMT/9w6RgcjUErWI9Gbc/X16jFyg1Sduq2ZwU4DKyfiwiWOoTDVShO/KhOkragDAyEhZf0CX5F1wjYTULzOFrULSoO/6iRUsKI4lI6potFJ0E1t2mAKkfEwD4Ta6Zp2oMA3DK3XogNq2+otAbZSg1/4Jd2f06WgW0fLuVC/c/Po27I7lIwIB61SJZkZdKasLK+Wq5U8xQ5R6v3GWDl39McMlPxDc16f5ldjMy8kpJ4G+Tnj/lB6enCma0By/MJEkD0tpdGj2z+R/0ncndiHU3uGYgjcbr0fyd7UiuVGKqrIghFNjUigeR4eLdwACJZXmxRCw76zsaQ1nMWAqXR5edttbVnAbym5vK+YNyLuabvIpKtFmvSPYHKT1CLSY2mKzi89niN6jcpvjKLR8q8ZrQ9b6ohv+h3gH9JvV24+fQe5tQL+OSOz+zv59xIdLoxQJwRNSydcC8lhYgBrhX8CtAjwCN5R/+PIhozpl34PGV5xsAaWHD7A51iRv1hBoTbWLxqB4xbaHWtXPbtlZNm03LuyXz1dZx71ytE7HbElTReqp1XdGXteTU2uq9rI6TKIFexPcq0eyc+Z3v8Eq7eA/NzxD0Y436ZgOQdIbsGz2RMhu6Bhqf3N7Kr+6tC3hM+gf3jpz0lRrox4djLbWX455P4olRAJsqBJvUFEd0Tm9E3kXvtNa/YIj60x3zb1o4KBfSkOYsVu+osrb02lE1J2GD3up7x1OnRRFNeBu2A1gupzstWGVv2uL1VjLAVmi/CdihoXMqVuxguPFjogaZcWnxky6P589pQGeq4Sm0VydwuOIajvWY55e7tTV5r67Myz2ROoCYjiQSiVEfd/cBZnJ8VwgTzCHGOnxGCMVmWh2FbvT7kWd3RCdOTiUBrVDu2Tr2bZEEYthnKdWIJ1LrsfR98/QQmvMa91EJLjIQpJIkDcOwSMfcbq680Jt4eaG51FU7CnA0Y0VfGzdz6KG4P64sQPJYyaI7nNsV1S6LGMxTLUf2sVyWub9EfBYO7H/xUvXaS2OCuZY+AKsk/FWcwUAnhwVaVcqwUG5ic9NIcVFcj9Kbq8vArpJkBSPCaFAADy9u9u4RduZHGDGEFVfiYF458XyTzfCVFYxxVGEb9dj7cNOD4ZbwHpk3wH7Q5OcE1Lww8/mfSZ5VtItHYfWEOayvhhFfAVw8m3mqNEYpnmyVTWoiw8fqxy3ah0VVdN1c8X4lZzpE5oRHyUwY2sEuhZ4fCRzH9oLjIIni4CIz4AUoR3DKCfpCfNKhUSy93NCxvBae8s8cwQX+YFs6KySHbopiobEjyU4MY5OnVIMHfbNV5BJEPaqoo3xcsSswU0eaX6Iq/zF9rvU6zMIjk8wGoqmSXbOT2NcokTsmzvnEj0zWTj5zQHY3V/fABMhvslOWdD2e8zyGDrgocFqDHjfH0waiASybvnQk3JpqqanjARFK4n2cKOLFxzjqDsbPIdz0bzYpgUcEC6eQlIHYvBYFHEcz6nSHnpSiZ+54QtWL8k0gwIn/LfM/tqSqyUN9lKmZOFTccZr3xFBoy7ptoKfI7POZOnWw+ij0+mP/G5vpQqCrq40CJnlqfHDYUpfYuX6/i+GjjkLVKgalS25BbG260nu0w6DMi7raAOhxu8fBR5bUIv6FyWBVzsN2RHzhjlNe3mXDhKn9sWmx65jkOXaYqkvH5Sp24X7R5OSibEbwBrqsqzt1g6fhif2IPaW10Xg7NM6Vt/gpJnvjgA5PZr5Hun5nAFsBRheWKIJIvfI23lfBNCTR7sdRsLdWPpNVhwWw4rma/EpwbeRJulzyxFmCg2NpYIctjWrMMWbauptYpmX5MAIyik+Yk4wbxCaZFznZ2wic0JZjgtgNFtBqZzuBl+OzHywHXckbWGWpyGMYcnowzUGEFKxYjzHtSnH0+jOS6rHG6ort1+SmB55bxBEbOd5dwnSTMHu73gMReRPKbCh1i6cklyWlv1k3+C/bsFqElifMXLswzTaZAwZ3rRoPkQxcrh9+P4Vso6NBF/wntKihsrGXOIgXFGg5qx9E/gjfuekI/JBtnoQwH0K17fE2MChICix+5dZH7Yhg1RYu76/cBKwgaH15hCFdoKv1yrNNzV4ukl365mr4Vu47gbFbi54jxhU45fVzlA8ksv5EN5TisVZkBq9JgwduHieHtuhorUOgPZhR5utX94al1/tT7h1s4/qGZpWtOZblxUS9mr6PaaPjFMMDyWhoopyg6nJiqqEtlHFlF2O5kas+vexJL46qy7l00iy6x8zCb8TSWfAaPV+3YVqi3TmDF/xdsTDWZpPr59fls1TR6uinZbnGfavcssZ/bA+tHWrBrtEt4n22p2J0QSuoC+QYyhVlj7h1FZm4g/+sGKW+VVs9UecFlAaDYOkGoL628PLAzfeYEhaAUjNYKqF1uBLBu8bbSSUCxpOv3gYK+IXfJluEMSrQcSMpAvbXfNF/pW7tCZD7h5pqRsuw9TFLgzv65GyNVyUJ5cUz/67DI/agIM28+RvesB7XyIsfRLKliJJNB0YG6b04rz6J356ubuM0FGU0vWpWAgiBdiZ5oH54y7J91q5bu5muds0Yw5YM3yGEsq0OeDOPjAPT6lcTaeo8U6nPBJxt4DaqL7hb4K1ls1n2033Tzte+1pI2jtDBhhKZSOZZLLHxpAu0KGL4k32jMabRr10/ZlkH4TqZjiv+H60P5lblDlrurbVUqWKbPM691CaOkMlRTFBj0ovwqfalCK6UIGXYs8XGbusjBfPKEBZQsvDQhdZlz6grC6zOmgWbzVq04lF+z2Lt9PxLNlhapJcuG87MMBF2msS6LDX0svxlXw9jogUh/uZrjEhDxWdKqJbGObTVUI0JyMe2+4A6A5ukFqeFhDc99HFg0smCstUSSD8+5QPcjzOdUXF8zhb7RU3DTz3aKMcrdOmVNz264vR7J2/zzMaIphp74/si+RyeorNv1jgkB5BSDsUHtSU7yf+yAFC/ns3LT+4GYJXUVzqTwzVhPowGt/wUpT8WpybOsc5mYRiYdkg0dkgqBDM5B1+LdaG5kUWdH4yaY6Ly1ZOGZoTvmt2pPUv/2Pi4lHSOMBXXThv65nhet4NCOz+jhZ+QeuIGK9vd0rH0GpdiBbTekNhxu+FhcfRcZaMRCN7YrfQ3bGndMAwayn3bWeDX8beTCy/zk57gtlIl7w35GCmUD4djA+/hQMT2OntZifyjBZ62eo0tOu5wLmy62bDtmGnjzXhRorQrNRzVS6YXyW1Nws3MsR7AStrZIQSDfT4VZrIaHWORhSLo2qTWGrJW7EG/schUfRsHiCTd9TqjF3zKHCm6IqEJA601uGi9722eTWQdVmwjgWCslUGAhWEmCroU6EBpjT+bUha8qbuodS/MFGzPRoftH/3fqrrFDOD41lNlfRgzMW4R5Ndxl9PegcMLcZJ7s1AmPjyN/hCqp7Px+4cTyizZvUAhO2ZKK6SOzOmtq3MjkMc+4dM18WTbUmx621KJJKdaW503Jt9QoPgV+KWh1nmorbCZ/DQlDvqHoWS96jJYKJ4F/HqNaqj7sMenbJ01pksp62M7LCv/GNwvcRokormuZuaItGy+PWMWsuCK1+WS0P7INmNe3fiUcGzlvk6vm3zuxuFcjyBq1l+Pv9WamvXVJtdjj5ADTHijVa+kD3A2h6xeFYMcl9J0fvWU3tNk1i+segkIsy1jsQeBF/s84fGLSfaUwHsb/iAcg4t7nR7j3WvSh7HVbHvNDcZH4XUle41S1tk1JNsgqtQGgQ+CxyDmSAx5imDgQ2LdSQZL3fN+i2XG0dw4N+VbRpVGop+NT3U4YEk4nEM2w5TwtZQ9k/RMfhoJZHHpfADAyP8GJ8FXEtX7Ws1miIzfAqAOpMMH6yDTsRS8ZQGqB8usRxG5/juNfL5JD/EVNE9lWTFzTcd3IOa/3fINXMA/BQARwevLf8wfBUXo2VGC2vB5CqM6eHrsNXwDf0I3rJWr84+jRa46CqN1VsJDDwR6Dtz9StF1QZ67QvUQxBeJAtPyPRI+oLpvyUcWrisH1YK5460o4bl4URukNyO0Sbs70M+NV16TgrGEVS2V9TJznj+nauxrr/vDJCrrfsuM4FP1MiT4VvzxDY98ydWzd7H+dTqxjoLaLAxIPiZcgUkzRyF+NmN5fU3UXB/C2MdcRiW9x1SuEUHnWMRoxAD4ylcMcxuqVb+Rj/uNvtZoWQb5IaeI73zV0ZpcdD0hiH2uHoXm16zk9zHB/roYN+pmRxCbXcNSNLVmm+vGbNkl6NDgP9TATQMpoA7UgTpQB/JAHtCAAiyu1nJBv3UpMx1uWHpfnpLQGk7oC2NI0hTSeX5tl3osx643dGYA9ovKHpqkyayXIkB97ElvT7Viwd//duNlCzX5tRR4SM9vigbKpFRpHWrrUB3iH+FsUMZCdF561tWffWGHua7n11Yyfy0yeDH6f28sHAsU/SKbl1vob8G+cxbbho3vxhmS8YymZP2O+aVcyD6RwZ4UlCu+0zsqHlnH+VtKmbTGEjj2L2wMH+7itZVY8YPXSnLTMSDTW2mJJffCJlpuHmaMC0g5T9wuWBFZFgIP1Y27POXjpl0QqaMEWGoElHpf7FcwAc2wsL2/9WAQT0Uuba7MwnmqbkIdVuvQUBQ4ppbB2vsrpLGXc+jGuR1i2CvKn04TGXl5i4Hd2oEA9/IeHAyXA9aamotEQkDiY8YqDKWlGfZzixc7GPah+3hjaEHr9pOpkIb+ZIEx7CDDbPg597REwrQHV3o9bcGC9ffu/yN7O7Af17IEmra4WMVljenKWwNDmMRyasaVGbWTpsTKnwCPQPh8Wlk9sWE2qRazEnJ60L21RPjF6MI7CQRQBx5z5Dyfu6asnERWkCkH3ugtQORTA62JHn7QH2ZAFYDCjUU1Pr49vnHdl7x2tnHt/z1IKZASPfGJM0AkhZJW6U+qgyZ6ImGIX8jlHn4olvOt1PsM9BKvH58RXzBDtwngsGG/58xU4oR/XjqikdeYxPEXWSPSmtnb+Bux1nhEV5tSSGabYrPNwObTXv71pCpA6HfUfYhZZUxl5pf30+4Hk2SvORyvtpQQq0Dhz0rDRJ9NL1GlsnQ+/wa5m3Ps+TX+kUBG998goM0qhWgZESPNhScbYrvzI0zW5i2FxAc6FpbbcXVPbqQQAscgNnoZ7CbxDVNOv+Kcwi6FzsCUS0hR7jAMpGZSM5ipbITcRgNd0VDTk3yvZUy/DViXmMGPxXcnDDWtVhWN4ihMDhUXcLIYlDHCwxipVMtgFUzCaR44JFSZThNfiFalO4HJ5cxFQ9Orsr3BKiZYAvt+oH1VAoptPGfeBX+6rQDqbjsGQao19bQ3XozbL3wPLILruDG53zmGRZDCS4FcMUIfO9nX89htBUhqTCLYFFlGww7E52lm2tvpp0HNRp/omCVrna4Wy74QSLLhe6WM2fasUfiiohKXHGs4NdjGKptPh3jI/nQV0BdwbnaqNd0uEfdgnv1xTmcXKykPtyNorgPwN/h6qasEpuNDlMXUnTQyzrgBV7KP9bd3vBPL7diUIeF/r9tOsHFV4KrP68b2sD5WFb+6HJyECRTZwS/1hP88oWBofkrY9GeRJXqnGL8+HWvjW+Nn+j68pHpovQcz6/IcNAzc73gr9f382VzQyoEAIaDDZSDPxeWjUA6XkZ8rjKQEoCv8BQDYjJVQ/R4wKTIhbYC+excGh6Wx/lrEnE44+s1h8bhY257srz4fChNAlzLGT/1yuwREjw7RdJNi+lT9ny2IY4u1z6DHcvHulfS07QgPzVEONyC5C8mu0x6J2yVXmj4gYiJ/b6m7IIDRlbbCOw2BhaSNgm7rncPGLsXyhf5SiCbXj1aZtr7bPr30SL4oEabsuJFCKicDAMILDMsB0ED1BTfKYXNVOLRCcoZjNMwSpWr23g7ka5Rk+1M4dbSCROPDjHlchWLX3mGO/xgt1lEYVK7ryN6UkwKVQav4TMKd7TpYP6UWjxbLCRSYtF2H68hEg9GYleD9INx8koPwOrAPw7aN5MPtw0FgpmMAe0caHNTKggWHI3zCUM1uCkvgWagoVb7xrS6seApM1E+hvKcW3saZQeo9ingdUgzzrD6P76cXRbq+qjsXVHyNlLp+xjd6OSfT7ejyV1DGB+ddgEdNdQDfVA6ub2Gn1VeGubBThQtmB96xi8pRrSxZ/dJeH0aCTGF8XB5Nrclaaf3yjPJ/JPUGf/HfB8QEPymKk4ge8zPL9w+aaPhVVta9fmMwYY9JTvh7v9/svt90329O328m2udD7ggJbLjyyVwdvbAa/xtHF78U9Wd3AWrF3eduUWzTkNTgOFayTltEo9Fj98PPLaTNm+rhs2kShZViEaJrDAbBh8opwF6cEfl/j47iwvj2tTp+0LD77bSEfxRjkLDtyXjD5gbqovngmbOgBVUBJW8McX+4ojKPY1unya6wdCGV2fdiAkf/m5Co4DWkv6tKV5eKyhwOSteekOVtTTXcuJspQ/DXf+LtWrwrusdoeA6vDBplwnxyVlL7oCWzfLlVxF8kBSEHS8Vg4/PwbLOkHx8QBTj7tN0S/6lgGkUsBk8ZHW9wN5EnX6/dgKdQEk4ffBjcGMn+T1H8MbMIaEUMlq6VPz7P874mIhPYyvarsS7hFk2atDQHcWZuVPBD/gaa7nO4TXqaC9B1W3Lf1y34bqMDfzYmen0OCCAnqnLjHyEPaWSJbJ/Fi4I+oUzEar/LJKi5doZM6Zq4ixBJvO1c4hktNu/xvice06dCpVg7toyAUN6CLmiMxvbbWcgWEamq46k+FryoADnnnAZUU9D5zEgRwf2fFJwqnvgzbMRUXb/K+7PjljHpLkD83pOrtrzrC0P02wgeNG7f7rPOMRFQ1NgWPb0kNDPsV3zrGjMRfS5oDJH9OhPn54ImON7xSM0+1U0fZFHmsXCgzIWd12Ssg0I11uUJp1OPH/S3cFExlNkfbDod3sQcdJL9K3mhGjXvuqF17lkX6TYhcXegQZjISYS/04Kek+pwwBd5Nqp7PjT2Lrh9Pi45DR3e819DKDmANqEfbYm7FFiJRhZsP9KcABNN6Jy1CqKFQDoHnF3Pneg08jEWKeNg1y1IORmARNvvO2IJHfc/K3o/Odna0snUXo9NtVchy3v/b6w9m5AK+14OEg7nZts3lAJBRbBFGPsdzjxlhNtHJeFoEKx/9ruc8Xd0TAimS8joEPuXjnBIx/yPutWk/T8qDtPJkh7pji81T6SJaV6z1bNOxkiKvqQFrSGL5IQ5qaf5M+okFCnNsnBnVoeZHtWJyLOVf7h3pyfW/30pkrRnZ2Zq6wLEYob2HSRe0OqAh7QJJOmlrnrMRSfLf231Ssx9sfEkzXku633ATsjjpPuD72UTsla0G/H/doYnjn7V6m4QWdwaN/2s+VRw3CXu8MEpBbvLJ8E7N6l9o1QEBTc864BCkFCnkFyErbGL0zDgmiVtgxC3vf91Eej5b1Eg7Cwo9RS8BuTJvuPOADna9Sz11A45bbEcBZTf0owc21U3052sDbJsKHv2Z1kBFt2+g1y+qCdZm1xiXUW2DV5zokd0K7UsyOK/m3K88ry2Hsjpuo/q5x3c9dPJyoPhJcnjviroj9TlZPqXzuKRWcyAN7ZxVwVOe9WDSJ1S61bDV+VTC8rQ4Q1DOh7suq5ZV4N8Jlhth16t5vZr4o7ag7WbjUChRIPSQF2LZzDYXpW2Vbemrktr5+d2PQ/lxIKOvPPSgWjTnkx/usFXM9T2F18MXFa6PHHvf7gqwM6lVy57N0ipxNv1xLDvShfUyHn2BRM7pSZBXpkKiZO7sx54ILvHQ7OIQU43wc/DxuZtTP+UX+xz+x5nP6ZEheW/9ReMAx6lhv3fqb65wjABWg4epIZkzrZBMeALTbLjqGIZtlQ8qRF0t0PUHyPnSVCqWB30QVTC4o261TawPutkgm7g4o8xAzvRdNH/8GyZMFkENiBxU/RfXH0Gi8PUtAuqLBDYfuIK6XLg9AWqdgR656qHE9/FghYiOEOEGmoR/Uv4jSXGf14qyy7uZTQTH3JbpWTM/eWB98ViF6XR07hhRZhw/THlpJWJacmb6XnLe7yrfC9ZR32J+VvvrDwVppv+Lj3TR2bVcLP9BvBRmphVFgxIeG6xRikoyvmfzigzW3U1UVsV9jsP6iWkrKH16Fy8/dvmgVjKylgVdLx5+AcbIupUoU/IJWFSrTzy2icp5KBtbJOug2qve/T1t+jh4UW/N+Nz+r5svOYykU7tB9Huzt2hc1mWVnUZWHJkw7AEjPcdkl26TdMGpkrqwn1qKsg33QdkXbK1LKjYmGzUCX+uZaoG5a6CAZ5B3omoCVwP/lic9YWQDuN/e2UH8jYj/t+xz9avDTSO3dsRJt42iDNQL0U0p8kjI3bIdR01VIyc3/TiY68nc84vgE8F6K2iEe3jNmPz2mxXK/6DOovc5IAEGO9MyDXx/EqrgY/7WGq3w0G12oJzpUQSozNPxWZwMxqpOAN1DDqCbRtF0PtAkCSV+P8tP3tq9c253/67zYeb1Ifub6aCoRDVWzaW6cFsc7+7Nq9RarwnekaWJKxn8pPDJkGnqsxbPTn/gxglxq3IL5ZlStkyYFvv0iUhDJIXVtGxybJQjfmiZ6afyfGZBMNtI+LKf97B3b9C9PfE1XPCaa9fi10fiWtQu7EcE/FlL0lGbWCW46dv04Y+iShZ1A/bYn96TLBtqT+Hm9JPsMbcO39CzHF47WL4wUmjnULvIRA8FmIkQMO57MNOcNHHNsLeVdf5h9Dci8D1NhLAvXQ1d2cGvZFargRiasSfkrvKkbS4/tYRv8LlEgeK9kd83HQ5s/HFfRBLtzQgZ4aUP0PkNSXWUMwNC+4/Z/MUQbzFU7KMV8HMQt+G5dMPZwi9wNPhY4kT0Blj+v+I50McPMkXxL2+G6MaYWrqX5x/lCvDK7/4EDmWXJ7cQ9OIVu3ECFdoT7357i6BcFRKQU2LUZ0ecN/mqr0KquaooWbDq8jyWj3YDv1cFJ2zyyjKUTiKmFnpCbJaI72y6Y0ycDHcuNi8P+hltk4yH/0kIf/ep184e4muj74VJKjRgfaA0ikBl+1/KPj8dsMupCFzz8eZP4ZCXIeErzPBU8k7L1DT4mq7UTo7nVrXZIk2EcWjPqJX8GsT4bPi16lGe6Vkr67JdY7fPymWK1TtxTV0TmPZONaI6vbydYvmOr5PFgzJkU00W9TTTxVmRS04E/dadg0hZ0o711L+SlP50lrlh2sFI1sVxWMyewNjVhzQV+C4sAXrYoGU5ksSwtoKAKoXZCiC4L/FPPmWtgbr0tNbiJ5ByKJKZdCxoTxM6NWDcud0WxFnEx+EbU6IbZ7Jsxfgn4XgsTG1Dhb1jcxt30yvLprsboh9tQZSioV6zqYSGkb3Co7ojUHkH6WmiYXUymYwbNyZEV0K2tXK6k23+uRZieRMxchWS/zakn4zdSNSSpZugN2rxjfpauuUUTnVkgJrLRj5H0ufbhLtf1y4qbA1XU3nUMbCdlapDlYxgjefcsipxX8hCYvHT5f7nhVctv48lxv/STSex70BHGNM+6ccR1S0+Pz4XbkPK1NnN32X7KU8YThmFu/R3h4rjAHxcNptm9hkj/AifoVU8NUGzJIxe/rrXzuAKkMcongdvvLl/5//byjiTr8F/cgTvKU8DwqI/wyaE7eu3Jslis8XqvLkPnB5ZToNqF3WfO985zvn4KXDaKgGcyfVNHn+cdYRPeXw+LQezmxOISQe+BV5nrTf2aFko8JpDhgJsbsXcfrhSbWWHHReD6sJ9Gw2QgTwkms+GGuIsVZIaKwEKLHz9UW8dm+x900mjKt19PGjH15o+PmAsP/O/ae0/GLLYbb1HoyQYfgGgL8GfQcOF4cmfgaaXE/51Gp+YzowbUtWsfGuYsX0YIh6jPNdWF+ygvH8SOoMOT7hGNLeWHrq+QqE7IP1Abn9e/ydpyVsSA2IINKnxT8JOIepHAg1QJ3sPtgb5Uxi9/fOotL+EdFfFu+p7x0bKZSyVQMDPHBCWSMe/OV7ArNyerKoCLElDYPISOw3WR5HqqK7iNV8L+bf30lGDXQCut8FHFg35MArv2AjA7BqOACcJQDEQ4HDo09n4C/LU7RJ0fJeSJK74fiFB6fHY774Kit6MHVyEk7NpzzVndBtTfJWb/nijLLHjAG4keNlpV0GrhSCkJi9jF/cpCJNlNaQjQLk1Nt5al0lmbHGu83VJKiuuQj5a7fjnALzzwwF5WeTdbmoCGBw245Gq+3XsLHFA2LkBdL2Gw6Ov/xyuByVAuk0dsEtAlCe5ZC1DV14Ett533xQuJHZQUwmoG4aDMJH0Pmk+buAXmWi5ZblRu/CMdbgALVA0KlwWpbQ1OrHhSyYGEd06s2NSdQ9yH/ZBTMy/tlOkCtJx6m+3/7DCz1wSL+hpVgHd1lQuZvAKa8KFljHRezGhl0ohrzGVOnIfE3qYGk862dB8uX6DZX9iuyWaPKMEUtuo41pbORzqd8A+8rC6/P261viHCuU6ossN/0Rfknw9XDbTdc1wm3XqiNd5CFNxkTOXvZCm+VknyIeQmxSLX30srurRUoVIxjfaHlxRK4/C7DAA5RcHF0oizs0YsiB+01q353NCJ8d2pXrZ0zocKL4jyRh2BnEGl5iFIGzyOfDMlAUYhQzTqcP2Dqu0+lyk8HiXVhIsMYIsOXTp657fvMN67It1MHO01t8pKXd5kLJ8SrM36tzx+OOFS7hs+cNSFQfwW1+bfegobfrmat1GzXbNPRKMx0Kiu1oEhjD9t58lwCtHX7wemxzs+k6vTs/dyWEjScB8QzJ35YQKL2f0i/WTfa3KeIjbXQtehf7gi4Mlhx7r+qS2uqxhMgYmGPYHmN9pmKfSOxOw03w/QcCs5uxQPk/sOFUw+dK2mvaY4odoBnOF+Aquog6utW38opfGSxeXoByzOzzVUSky8JvixU0kB/HSd0mNOsbcjZ2T0U/qnyIorNDcG+Dm/Es7sgx5dDld5HIcHdNsFJz0AKI8N/3SVs8Fu8AEc90O8wq1eBfSFyMzb1rz6K94we3Nmc0BiDBYWuA2XDs4uRbUcDaOrNnka/OkbLOT7jIfrhpPsM+/dSACEncbZE08Y6QHh5SkNeOkc8+FtbOQRMN2pwQn9RH7VTixGqudE/Pz2nwTpPRgxsXlKjwjhVEuPEv4lBUobAf5Lb3V8ugZQ3M+KAsktA/lRH+3aM9pqKwcgLToTn6dZ52uA99HdTg3scYHdnpNIISX1zlay0DmPCjh9pD1+so4F4S1rqvV1zqawsDLl4hjBH6wwSjngj/L4KPQmF8ihm4h3RzkMdA+wAqfhcKvxMChNIDwM9YgIFnAOLWEvGO9uNxd5F24yvpVatvBba9364nvxkYvBYPpYidsII4reX70HAuZNhkixIscEnb4sgbSVhCb6SAT7TOxPgWKNxmzuiO74+wwPc3UA7Yh1i3WFpggl07Exq8edORvyUunIVNQrdJF5Wx9WrTkrxlsmVCVtcyRIebPg6/JHj4sbsubTfznnrWoGHjGxRnqZxwWA9VLig3i1uaYJTNaa0ralB3wiPXdUSkHw2GIE9v5srQ2SHh9MPImxvGuNAcZk5VLKkXIcjg00bBoIvtUv483ZrMZY5II6/Zw+yXOCPvAojtNVt7CQFoYE5756DcT+T0RlxjeuX05Ur2HsNBXjSYu8tiAs9NdlkMj6cK93Y7KE4chOSnCr9zAiKWA3YwWznrQNPngm1YDyczJao4xmT3bSsQWn8xDhwn6PmWWt8dX+AbVJF/dwE7LRlFVsiWTTpHjdA0T/IJAeDM+GkEKGjt8sDERQ1iChXiregxIe5atfzHQPOdLao3ahu0nr5Uhpk3EMmrRK9N7RbI17ThehDxOfoysimNOubr/6k0nkc3qzn0nKiHhyCc+juDj0H/qkfAsYVa10TeB7r5ZE7dHU9nuzwtzGbUI6/VnIpb9M8scMkbi+pUHUwOKi8bdqHWdMK6ugn+A8vXyeF7GiWIlaEiJplNfhhJOzd1i+mNnj0pJYIun2mVUMaGCrAfnhf2cO6rKdza0DnpJBGmblArzxNwLijVHQA+tZWtkgE9Qac0Fq1WWxCjEOVBjZB/XBJNPsuygS75zA6ycHjk27eKpDEvQt74HsogXLONSGuwzljB6mUxOEwTjkpCh1ZzOZ4Sqaguot1XlGjegLj50wblfdiBujtvQ21MjkmPD9yzhSmnk7YKZRqnqAlwyIIXUiijExtZVeghsJ69ZVH2T6mZYTJkNQ2PthObDiyoWhIDEx/2Ls+J3jhIMdGGb4XccxaFS93dfgYFPK83Wdrqk7PhSUlZcpF6Kst+J4XfOeF3mfDZhVeqaUkNrAm4yb5UPvVBQiTKk+AfL8/9AUnzR6is9aSROgemqpoTlNPAFAQleIGt9EyuRCt9yQzsyOqNAD40SckUN/vKyOxHxw0YZdyxb2e1Fvdmm/SahS2KhJRlSqpofa53PuDM4p3Ffl1llRIGIf2CZgn78pL01NWzUF6eg1BRvsNGw8STCvYDg3ROghCuHqouFuuG5/GLCoF5K9t2k+Cn6DJc9PrZbPmUBniebeG5GEUavwLXS6Q1HPv+5c+CLC3K5lHl259Si0SKdD3aWyH4D/ZuqvYLHMtKnIh1PQGqtfhQ2xtIbNMupJjuq+7w3aGQntNCiOwf+9ql4GdPGT6nE7kgjNCavkYQweRZyK0gJwtAXTXN14e4JLJeyTFfV9R+v+wx4NI7XAkPsgE3uV+Ur5TrNiFlxdVqXFUYrOoDzTFZ1XVWaT38li9vAwOgGnATtw+gnv5VNw0vyisSOgxA5wKz3bWVVpXcaX4+UmUNZ8aowhf6x5YBlqzNlG6Hmi4ILBp4H/0WHu0GBTC0hVH6RrW8XUjYBGDvd6xPyYRZrntOBQBdy2JDyXql5+u7ePHX1xidnX6su7WdL/pr8EaYAHYIe09alKBHbdjGFzDVG1MQLcphi0Zc2fV6RDOac4fxw4+eb5UVJI02owQwld2yKEH5fdvDTSX0L1pPHOtjNNn1sNYJyWAoaoCl3SPkJtRyPwYSHpbemx9QsE4r8phzjtJ72c30Xqb91o/+vbivWbE+81xBVJqomUdpFKLVlkpuTezAwKvUr5y9tYLs2P6wTVWw+2W2DjY1VL3uQhz1XOY/v4PB2JSf/kzEcmPjsI7QVAIF1s1NpbBd0Sf+4pfxQnzQ81kFO3dxjNg92lSCwoG1yT+tj9WDR2iLqyb4B//86xPX35zhdgVCRKQIIQFIVHoAKnWl70HRAapRw61HVGXaoPpdI7wk/BbBAAeUviMAatQAPaKAaQOAIDEwEUdvMYenKXNi+HgS4ClvQm2RkFncHvbNOTia118ckKJMOtDK9lebJAoH00TxYImgWVQnU3fbOFhAOMwS0kIW4QZN7gbmvrP72XMC/96YsFd5gCXBm7CPFLxh0mvc0E0UByPNj+iLqkkL1G96s3PvH1VInBw3AVeJ6EwWMIuM04pebNYDsLGcE9TI3SASy8nSfCM/X3lKs5oCLOapleNdZigCLopQcfyqU2gI1St59fftjj1uLM80eYPlGZYfPtwF7hfhYprpu9O7fMJ0/h7JUOnJDMiyNn5FL2EKaeI62C11ppaAx0SzV4XueNd29hCZ/3lEJsyrIlc4LZPDTQ58+9J7/2T35sZ3r+QbBfDIeZJtacCu/GUjB3YuLLs6f7WCqhGG1h3FlqcU1dEmVxygECJhXZTyeyjnw+X8i7QgmYPWuFyv6lxdptdVdoD0Vjtwjvwh5xl/WteZNuzVvZbaqqriwJl6TpDqquLUWuWmMpNpAE5fO9pj9Kxty6gxRxF28OiiXtmlcGt/sKc+Kapl+lAybEY3A76xog3gsTPIyOfU4tXMu/Ax0jzyvkL1+NmrEn5m7nKwIB3DKRDUGKoSCRU28gLHwB8LNv0WYqRbIix+yQWBRxe8qmg2bW0uIGpu/6Ir+ZarZNtul71JUQWpGGzS5fcltr4PuxApJJwQRt24mi0NH28yXpMPouFmRCb0hKu6O5XR5tnPBttIW/qSqdT+h1+PcK+IJurU5xDPRRsnfYSXhw1/FLvmP09FXt2TjoC1Qq5C8LQDteJUTQ/jfajiNbwhlGl3ADIXU44+qfA0yt0sHMwpFyfFzfTo0Prt/74+uOAt1N4KQNQ5JS0PXPo9rckWrP1iq5hAlQ2ZcF93aEJOBio1oZvSiZxP4xDP4/qlCXgNqCC9XvXjWHU1M61ncFj0nLvujORUqbQin2l4RI/6kj8kA88TZw9KGB+FFkQsMFuHaL9j2FPsTUOl6YfHXOoDqcpvbGEyOQvzbJmaMC3hMd+8yWbxM6dKRlzDv4tL9vcUJDZtT1ne4ZAw8p23aMXMgNqT8zC6nVOoGT7NtUrSKbzjMhoqpUOc45Dhd6/e2733EO+oDp29LSI6MibuuycOS4kJE2hrY4WJuIQOUlDEhWtgj/Nn7Dx6ex7c2iPKuS0iuNUhvHVttelKanT9UxPNr0V78XHfG1mRZhNnLA4LP3Vkf6T7EupoSDxb3lTRSkkkYtLY6FL4JPjyQh6m1x568aFeMCbFHbCCZEf2OqsW2w9dQ8kCOm2syEHbvgG+Gkfp4n/BLTKIYzxMbJ3ZR5YpthJ48EWKK1DDV6nFIlIb/gsezHfSsFYPWLvBXFBwnfWyxUD9zYZRiT7WYgWDJCdQISFjLpMBAjyBSWAf6MtGrkGQ+gTJzi4TOH/vNq/Rg03UxM48jlD667T1chM2Pk8rZIrLRX9buSwfEPPBnXiFSgNjlGmMJrJF09Dw41OnixUsyhopYqwktuSpj1jq3BPUm9BW81qTe38rmGKFPCZLRPx3lVTEdS7c3lZwa5NYETz5Zdr108kiRy+QgGDrDJlYA7OvJ5ilLR6H9E4xhspBgk9ApwZjS1s4thFY2zx/bh3pcU8njf9hs7gAInibhjskFQ/AMiQ+i5TPY+3e8nlsET1ykixVlgZxsYUCtsr0OhHzFS2Hjf2zMwugpu0NE7LBU0SOOao66J5CninYgVHXpPA+keQh7JmkXNL7Q1oG8aFMRnh/5HLJXLOo1gDp8ICW5lPSYJdDP06Ke0xCynPVe6YWrRsgPgMmw9EVt7m5/QnfM4p7101gmDbYbbmZ8G6KT5lJH8mbMC3+7SNR0Pi261bT65vVr2eSTtPMgrwbiV3+XLOfF8+opnJSxvIuHIdsqRaJdOtZV0bBOUNu5s17WuabULx3t97k8WzlgE9PnAXBm3LTVB8DZAqfFiuy68S+Btvs3TSgyBBy74zOoXMlTzoQ8PNdB+Tw8gAgBGC5xCrhYK+Z+YVEcQPST9cBviHVWLAEtWLatfiMA/kUTmf1bFmnTjrHHpwMsO3zemKfkJO9XK/HerazzkOwFYWILGwqZCfaNdDcJbwaFo5LjgQgiv56ouNOJ3zOuiiRc2Kn2IwDpMaZTOP891Pl1PmgepxxqVV+TCUD9RA4EVfkLGbHBPTe5RpGAuLCR9A1qF/gr4A7ULCZinA042wITN4czaXZmdXCeb+Ydcxf+TPRUX/2JNyIaLjcTqcAZZyexmwrz/Gej5wuXQYIu0Demvx51TyNCT8Fkd4syx1vWRVcFEK0fTys6M//gG2cQLCEb/LfrRgDB2H9+xvq4PfaMLdgMBglXn66TEP4WUAXLMJ9u563f4Kcfzc377oGBvp7X6PB4Ftm5di1yzfzzhzrbYJu78XWpH01KzMCpiK5qmYpvz63oD5IMkILo+Jec2jehWaDtNAx2a4lurJgTJDpZ4xd51NsI1GZac6tkJ4pjBFK9jTOzfRvdGV4r6Y2Gk10oC10korVB+RuRFg0x6FeK8XYhSuFOc6w0vpNRAZhgR4RESDkx6pgXvvzruZ9zeOGrRhUf4EwTYjbpzAvSS5gEEtesFspn2HGU29h0ECtkBKs/EhpnTikzmS/rKOwBUG2yxaUntC0UIA07Ik+hzfHr8aCw/fZcb3BYU4IqoUzQE6E6txo+m3wqtc0DCeJHX+1E2ilTdUwXDE8TjU89k04pD/TS3Yud4pVVlQm5FlK/i2V1PJxiH1mdz35+/VhFkiIiYLPo+UxrLnwpOi7pfirvXSs+Du9tFaACEze64vLK+h0PkTuzlyLWENlOuZFMJBOmYmVdirFUZJhw9UmRaQCoJ2ehYvoiAaG8mjLLEfo4ICeMiE5DpSuBik22l3SMRrEg5AGP3N0xj7yGtVqVtR2RZw5bLWn3uviAFZQIETemIoNku+qT7BsYe4F7hiwpsBN80Ti8zpRFP3EUJnl8zc4mgMOZ/6IqJ7AKBkG8J/BHIOikzSuV3Au80GAKtfBff0H7MCdyzkAtT2vCOTsP7pq+ySKYk37F+kDbXT9vvqTKHJns8rprJN9aJJxnxC239i6A7EkV+mHgnAlIYVdHHD9XZaImDy/H+9hi9bNJIZVAeENGjIRWvLvBhPygoM1DfSQRq6U48iGgQ2Zf3HubkbKjOFRAORKcNelvd3UTya/fDFsQPRCax9ziVEYLcz76QGbf/CvP3dtbVnjuuUlSBR0KT71yLvdUuBLNsSxrx/F77typypW+MQy7QOrUeBLggthkHpDM2rkN4x5AY201RfvniWyV24OCmOcQJkHNeT2JQsmPevPfzHv4dixzgg4t2v2YQ0l0kLJdYBHh+JgUaw3kHPrXMCkSwdAVJe7G8Lknaqb4JuqEef7Hr0ZtvLH7iS7BoeBZm76BIZpxKLyM9Qvqmnx6ZpjHaYdx2E0jrgWateVP78y3WYHQSpQ1jz+KW0/6Hc++r69bSUHDhp9S2tA1FDGPbM4USITUfiBjYhib+QGRF1RNJljZgxpB+dOxc495kp5si7QK8ngOhkSGwPnJNfGq1XO6uVr28LWca1ymlF6qE+tQujl/NY7AIsFNPikiOoRwXozxS6xpc+ltrJ5FKGonWqVHBBT6rAgRzO3HcULxoASMIT8GB+A9tP7nRu3ubffKXwwbr07FSH07imabxRt3plbUCsa1TDmDUAjB4UWe6Rs1a21MrWZG9v5aImWdIZhdNl6tSMsJPCo4SN46VvkiRecKCW0OFr2xrKA/o4FPBNDXbJT8RmfPuFNZY+KdK0epDfKohy1is2LLZYsg9s1bX7TIIc3c9oaNFbW6tOujwENWM0ZgTAX9BT6iGAuae/fC18ARBwfKqKYt2O+WWv3WvEm3MSa77UXAsz6FwfAKs6lGJIFBNP4+LvrId3M4K9Ec9nm2H5Q+j/UfpO1M+iiMk0W1E5r2aXgQC7003xl+k7CCCuWnG2dCo1VXzKF8wRWfzJx8gEcvGtljpkDMF65c27cyE9YD1+9lVHb7vRYD3IoRVAelQR3QBftprVxk7gAjyMace2Aw9z/6pgOg01KwkDYwMY5c6MhqZqRHCjcqRSHxff5/FkmU+88XZH6uyRGwSg2a9y5jQnXjZU/gMIuD+yzRYtibOGb4rRFRLxFyVMPc/oeR3ITb861j6MiE5WtGY2V2Nn3pru14MR/xCmbn0QYk9OAGQVx1DFnZ3C1OGJCZVUtYwT5ecPX6ctHpqoDlVnT9ps40FnFt0eAJ8QvYi/ipRvPZph2jyXs13iu+e4s0usJ53sdcEWdSbdkCC0kGrI58N8ZEgEsuPw4x52XRnNXu8z09FILByavk7nA9WtfUnIDnJ5hN/s+kmGLhX5zygtv5oTLb8PtjldVXeD01VNk2yvMZ8jYS5oMwEuXCgA/uTvr/tI2sQq5ovu7BY+rgLFc0Rgk+EHQi1NWH73xxXlDhaHM39IkS+3qFOWlVlUMUqj9ewZ79i8oK8hkOVOa2NVTFwHVxZSEi0xATT0WC4IVKmtWklNsQsyMdQh6+QvzIW9bpwS5x8vrXfqIqYtwXKzkvJDlCskXstwbR//mGY3A68g75M+rmI8dFv0YwM2M1FVaqNvdsJXnkoWLwv6ednkO7ixj6yaLKA4MmIibF8gtWmK8e6GYvzbdbchW1fq48UQQT3JE02zhrAxqCH/FY/EGub4/c/kb+XPtxv1TziNOzpBDTlBgi/daOFjom2UyEHCsxHSrPFBc6Ypbw7DNN5HlwKBNrqB5V3jZKi9jwoKh5z3qu7evFDxE0h87YT3NfZlkwqQJ91oPz2C8A8dsb5JWpRK43OiqbBjSzP6sMJauZZq68W1xivOZX3I0JB9UBOSGr1Hz5H9GqJZal1XLmILz8iqOaLse71LlRNSEAGetYjxsZ4zZRuYUtlNZplKgxE63CruJ9SsqXKRYg8Og4GJ2fdQUrG+L3EbI160fJjG6FfIW1SKBlGdbrI7Smo1jPPkSHmbwm8BR3DOQHHgJovfGe/0A48uhq8/uMFk24MKpc/eHGNSEQrObdZERMafvT22WMEpSOFwYf/f5jaC2i5fTGSILAlEG8kGXnuLUl4VxkkU56mz0jIdKAm/ru009oGTZU7HWMZSo7VCdO1UjKA4CIi/CbR48WYtTwCR45Ur4fIvvYC7b7MMAkfScuTbaJqDhMWx42lQ4/T1BdVG2yuL6nE0Tg/HkpS14ES9Q6GLL3LFVsijhsWnmqfa41B1pCE9tI4QHupiYnAG4wrtdgwnCkbAV4B8KwIhvS2+YqnWn5uGTwHRWbmX7tU2I76wl8hJAWGXKOYkDshrAh0+M6HiPtHya9YGIkGAJN31Xz+Uc5khIPKy2kaz/oNS6wLZbLCi9HgAJonB+jmj48W0S0YsBhEgtzpEHW5hKi+RNXYQmPud7MiAMKRescNrsqi/U3WeFMUYsBlxVIdTXHfcDRstO1fQqMepXmad0At/7aQKD6olByRVRfD2dYTwHOraumrF23+bYlAd2U5Ni4/eTkDzcTJOX/+bvhN85QZozBaIwkrVQFeQV21Ea2LrE3cs4fm27o/xBMYxjBxCGcCRao8W78IMUjshGgd0aiIqDQAOQIvmH5iFvqVApDZgEB7Ejxybu94rCXp+bqZfbq9insB34ndUceurw7N7slW3JJTkqFCGDj5JZmTkS7flyvqKs68Tqb46QyzhwOZ7o28ShLlRfTMtJD3xwWyrH/ZuSxyQaIUJnpmnzq066eOfMx/566rZaIt4zGL+6CrBXLaXq7YFvf+zD1F+5Z+MfFYVoBsjtA+fLaw8fTwcKE5Wl+qT39EBjB4/jteUluFrnxMAy9tX7dQxYVdssv/x0f7AtYiFvECXsVjsZoL52AwmDbd5mIcFD0o7BHFTgAwB2f0uCLr5dfnsfb8nNpTf9dTecpibb3mSr850iEcn1bwc6i7CcXp2r+ANmjQQAQxdQZ56cPg1MXVCmmQDQt8I4r/wqbya/JwEHsqnAZSRJcNlzCrxO3+JPB8mSQhzersE9aOrYCht7oirMHoyWSef94fEbhzoAvW6E1lcph8eJaVw1XXPkcg+QgGWZx5weuh5Wh9s2ih/knL9+NcPPG7OJFQhpS+Z0v1XL3xuLw9ss3hiefiGBTS4DhqoTBFV8y4neeOkDrOlX9TmnR4YzFkq3xsgStn56LRNQ/fnMiZvSWeqwpN66DgNVDyIqwX/3/UUB4nvWd6EXyKOtk1+lvDR+qn9l/abC+OsurRa82Mli3xTeRCkmQiw03chasjovJ8NepCWkFxMdWUhNm8n6yXeEtqnNrveQigbvBlK8VTEmWSmYYzU1dedb1MXTMxx+/P7ClTktpuJcMxzfw1n9E4zum+5hophO1WJ1vJBjxWr3peqHT1nqCgewl2VzAKS8ieiXFPA+MAiuOXP4PmgEoMPVrdlfu1bQdha+rH8m8Pbnh2rWaevgcsrVL4l7oMjLWieDqdHhDIfGY9F2C1Jt9+LGklSYSp0A8stTA2Ow5L4bD3t6xoS9PJP/cA4yMg5xr+5reBgVaOHNfMpM2CtUCJ2IH5JB0qnbzwH9hAT4+FRLRc8PjsuGM6p/aFscsRz0GDzFUSbJj75OiuAMhXyIyNZ9ThQu6c3NPnIf5UD66qPbxzRjXlAitc9VvXLnPyP/6ilYwRHa0eNV9AkCmjMscQ2lllgB1GOM78HkLqH46vKZiNh3c7oXeXWRzqJab3AOgYxXexpytTXnrwOLhRVOBEW0ldQqXd4WsV6PwD5H3vdyqp1kupSh5/eg6KBiZUG2qcBAdzAMdxwMDyroUF25hLLuNEmo9r5xnCh2ODrD35wEPmTU+AdLu70WrT97fahXpeUOXoiwDJfeKqh8iaJ1hvN3SQAHwXCgLGAKetzAjbBdBl6HAw/52mMzgT88/mbROZJO0P2H7+yyThSumdpF03VkTyoiMttc9qKU/Z6MB8ce3Ub7Hc5GS6QlrdF6bT8zSqSz4A2nMnmE3+4QSMbkPgaaE3lEaXs+4ox+oDUbK1vou0ZdabR99ZhjMpWRlFZmjUuh9qycQdES3FickOYP8kQ0mrF+SDBzB7mLqtKq+mYmH4eODv2v9cxzksppqO7PkAWZEXJ5ZLCwfMW0Q32FeczmGdB+XyylMn6jGNtUrKt94fpadH0V2sAZuulcvzmnviJfvumnfpP1sAFqcGO+flXMLYh3/lvOF43xUX7fkbJYgmclkv/t2+eo3pBQhlCwRevUAlqtCjKM8ucQ3Xgz608Qm3z37VCti0Lp+/2YoRl74f1gAivftOSo9e3lC+2eOaHjT67xjtVAMB/EnYXKmn16PvWafUbybioguI/b/Q9cEcI6tegUSPie1Ry7V2HvZHir0LFNiAZE8OqzAFuSa3S41u+K0Hyv6Ujr7MD4ZxV+BwVNzwgwHXBDVe8Cu+UYUKCrfNYm6M2g39jBmMrTVLDmkyNvCnry07wddTg2RA6SCamVw1sAxR4UEX1S5TXeA2/xhvPKsFnJj3Kam9aoN0KUUn5ADnmgpSgNISkDlYaeTHU+GrdD8exBz3kyKnBwt+CQsjBQWBfilv+wmDJOnZ227BNjr/kLHE9PlOZl8bUJJ3zGAeE0Bdv4NQU1Sw6D7/wMP1ZhPmUUUiVYfZ+tFjDrO5wZiu9uPiy9zpuNH7+rKMFHRSOq6gsYpX3d2KjWQ+NUarMSH8gYTyvjApG5NXUF14lVSaEPTxLdwKJJ+QO8swmDcFpTvRl5+SUHIAMpmNSm+H45wY59inKOdfjDN9RkSlUjkINarBkksNTdmoKsYTElvjYnj0Acz39S3nEIaHtLRWIhAtsa+XFGTlmrmFM1Vvam0MPuLI4mO2oXw9LwSonufky57ZzOgI1tcFNIZBekM82Xdv1N7OmO1S4jA1zTcPBdmvzk9OUmnIaCSk+EaOGmojzJkHTZFwaWDYCoHDClFzKrBXe5j8Q8QmCQxvhmYHbN8CPRqsRLnavl/mwjpcaELwzw76iSyqVf0oyXxM24hi/Fi3M3QraM4noERTgxCWBw8Hv2GVNKONUj4J7ZKuBiFX4EGAO537+mWHE1EDJL4Cgha7S7QrTgGvsLA9dSX9RudD5msfb1KyvWhs350Ub2USYVq/F6FB3BRolhVkVIf/RJEGgXBZruwAMT/Z6hwCbJf5agXm1Mq2Kvwn5wQ6O9G93u9H5Cr+XNTpZc7n2OKhnKJbiR00DqmmIpZ0K3Pi+EzFFyKQ5ekQLKVYPDptnhdvKRtErfhM29u0eNlyYLsQ7eklroWwktHtm4GM+I81Ny8nvTogo/9eVPh4eHFvGyWrKjOZx10Npjc36iUZwdPHMnK0cnVosehI49h4+7hvHxw+qfBiEB2pelUkv8S3NIbNMtmxXZRoCHkqS+JpSvs86KAFI7atZRhTk/vIFyffFifpjToPUj6Rab1hxtxzmKFqdWoERR2VARZyjnm3zcoWBrYZ59WUMD6whAO8tBmCAQ8McHKAqLEdLJFissSli0sIyECcIiBOzyDgNeLUfxGL+mckiCjQtOBIr8YnnKamCETx2PU2pDkL622nT5BVmvOR/2touQWlckN0ue8Rv17/8IHkzn9MBl/rRanB2UCbO+OYlWgSqGY2jLP/9wFaPYwljd/TUloPMQi8lWi9iPA8s4vOVoDzggZ3FAlhWmPSCis9JoEHmmRqPq7ZiISU7GCN2+OATRRRc4cN5Xmx7euwlWW3tQOMzNXWGBBLWl5fZSwn1TdDxk1ds+kZRoeBCNvSrUbb9BoPJ2a0wZCK2dxW3YlK8P5VeEsgOnV/UA2sZ/RGoKx5J552euCFcr4SIJM7on+1U4m7hqWKNGY5PZX1Ywi9zgtB0NSkeKFMC18u1Z0wj2MZMWPj0hSUZSa/s4mnR5AXdODis42ztKmdmP4SmTYPxuYty/QRX6BH9Wg8XOcA9u6BXb6/y+1aB9Lt8oqOTi7tyr6pj8fiFtvN4amPmrQA9w553hCDtdHnn2YD7K6U/X+i4+M9r6zOO7rBQNR/vLITm7HX5xgszvr8xTfSVF4t+KzKoMD9Id4jFNhEoCKLUUtEeAgOwx3qywl0mTNpdBppZrPTzIlBTUzONIDbvwV8l1hS7X5Rqu4d2/eJgEPGCCQaBLQ7VCxzkJLlA3xnzg3/fFTVBViy7eIDeHq8YQJx49APlJH88He89c6wtO2EMk/kWdOLxDiCyKygf02S36NbkP9yswzlM/FV+IDZ9c+4Tw5hfEA9a2AWx9taBeL7tYQAKK/DEf5F30g2rbHrTdL9zJBudm9t5i+L2sPb0twblpgt0LNBdzn33fipicPbpD7Ldntw6rGzVX6a8LGBAusaQkf0pW4WASfMhOlUVcWr1TYaaQ2qmEe2olPQFO/bM6lbp3VImo/FZ8y3jF6L8IuJYdrXW3E8nwidU0WTnTsKE0Vric67T4orseDTsC95v3qVcgf7ZCBUByJ7xpdVWJzXVRJAJEPAKnXieerzSVOBHHyeUoXURciiQm+mtn7SEOIbCQWThx/1ZDkczSxKuoJTEZms9qTsWPWWkYxHXBFXuTb80KWYVtWbOQg2y8jyNYuzIZmMGWPuNOMmxQlxmyMmEYbQM2eLHfsXcEAsNY+/7lwyv2rs5fLC4XZiOuMlrp4S9TJZo6H7OpL5Rk5SR7+lr/K2uUja5XDeIs6nJR6DIVjprKpSrGtB6aAofK9Sb92q6MpfdI025v3F0U7WStiJzrtPFkDRkmfSs95p0t1z23PH0jojPsYzOQiGjwTluoGsiakW1jqVdfH2/wYzXqKgWjny4QD06nWUhduKj6EQFCUimuzvGpT1CGDu5+jw6gYAMwXjw1RCz5vkXKNyWVXlx2lRrjc/L05yCEy1lf8mIt1xL9m7M0nGkKy0kHiwRQsGdinhoWAH5iDYu4dzKjDcGbJfpMg9ZlYZskxaLf2eGo1Xz5kq88q7+UuaGSTRJdqn6/7B0rjepdxT9wLfiBgsytUV16/m3Rl/sGPkEAxlFzjU4uzzeiRVq5BIyP7yGmYoLl0Mp5MnDSVan1kA26QfVQ4hUIwcywwcqmY03a9wVGvWvW2nnVOeXxLQopvIbjTYp3leumTY2Yv34/1AmsQPGfgkfxbzAvf7rl6xjxNOA1PI20BeP3uB24Y+uE34r7hAeNcD9eWVFmlAry6ejDMoTsu4knbG32Idm2X7atwNROzqj6QZ8fwEntcImXj00hzi8KuwOrlTAzdq0nvH49G47ZmYALilI8b62ScjgwfTHFY3EvmONYnx2c9EH9az2p7cFk18prOfkPu6Hi7InSvHebW6MS6w+NnSdZUXFTlEzMTSIBYUWa+Zsu3js/UPorCBxD2GoyYHjxBsXrA658BWdCxUb5cuvm/fD3k2u7bLsnuNkfQPr0qrlO85RDlZo09LeUYwqPFNMt9XXQKwaz2QVpEy72V8NubChkl92A8FpvXuuNIMKp1y7dHxEn4Tt3ojmKAHB4xQqLiMJE8mDxqG0nUQMe94OsQDRZ7mZyQo0YmOxMK8YQF5o4ixPHEPrux1emk30MKCGY+d3anNuY7r5GfggMfD5idEOYHghcvnmBY/8TB3htNwhtCIV+CvTk/QuAnH55kjiN/M3yPL/V50oMGcBmHICcLjLENKsEEcOQ9WhrT7b9wXXjK4//5A99KRmSzp95mvSF01wNQgm1958b+/Sek5BEwAnQsqC6BVZ8ybKKgwvCmdn/9wZAOze2zhK84oqKzKqz+LNpYI7mQYWoh/ek7bE00B6IMFMxm5ZTSUP8pCJToMHo2F3CVL8zsq6KFIf5G/bVBkuVox0P8Xw6D6jc7WrEHVkvUF0zgfr2ELEiQb5uXRrqXwfulhNQ3FNpwcGlM7yPFdJhIu84YqLouARz9SSdJ0gAzJCIuRVQ3UPNOfrOR8AUbCfjtkUZKK6An+F7UX8oGoC48TXUgcyU4W6pmWB6xbxxCG5dattz4Pgi4xaMgNlZ3twkJ0T9ZlOfT8uAi/p/7h7rI5VVE956er9r66pJOuDC2rxX5y/jF1tL/z+3Hq6pMHijh84W8GFb8cf+qdBojbvoWwxYd7d1iytTVs5t5Yu+A+jTgGqKU3mqmMaRqnIByLDFW5giuJDhsbp4oifQbxXdibleQDldazNxfcb6AnpfmWf7dsZDdLOZmUHQsXAmKqUp1GDVGipjuZfe02Xr/WmSQE0Z8F578dpXHM4t+3PAd7us29TKeive69cj41aQ35a4x5xo+zJk6ZR/tkNPPL2/u+oEngVURSVvW2YP1BmI8uysVg/Sx+ISVYaWK7LSR8Z/4viRQWQ8RrHaqirrk556jTq887nbZuAR2/SoJq2M1L0BrGjjkuA/YeXmjTY/JcK/Kht1/kDupfvYHvViz6E8DiAWSTil4wUhyBqQhOXxXi9SLBSgh102la1nrO4wjyB3ouAIUtrByftqgvZl6yvr4ak4xX1JdKRgkC8fee7N6g+7Gc/Pnr+Fwfh0L9lu+jqR/PYEA2oA91vlQPW8L6DZi+tHf8fNkslsUw7Lmum6ZHtWW+jvxy+i4zwli+Vu3k5QQWaesiOijpwC45RBoYti7HMEfMbXn/H1a1l/xtf90ZkBS9uG5MZgocEjbNlRUX6miiIurYCf5GIFMUILWDeKdEfcgTyMAtgl1Hchhkw9itiFVuIyF2UdvBUF7HxML/+8/xaG27C6WO7tr5h0STm6bbS81vFKuU7VT9RgAGkXhLa1ezFayPcIgC+i0WAF8nNI9ZX1j7RKdGHQEb68eOHptU+dm17o2cCFl+D6QyUcMVpex863vc++d3NqP/39wrq8PP9bFY04tNmxwjcMQCfRL6qpMNMQ/HBVtmoJUC0we24ZnPIkiFHErVmSX8zfvEW7Z1We1oa6XewjtcdgC+uL/LOopmBFj315eiGzULLtWvZgCSXhcaaTN95Vekq8om+iM7LfzSQA5eJIFT1q3L/zJOQqTp1+9X05CT91cXLemNONdwqgqp4BHXlSw+uK74483nhxPJXwRKr4bc1n/55QYKfjOLrXwU31pSqx08/Er9T0bSyPP3mKVWrEq9ZqbuH3cti5oV5n9uOMSJeeymvH6DrGh//4Q4wcAR2j+ZR6+c1Z7q9O3eIKOpSgpEu/JUCJd7oEEHBWo4z36PCFSr6OVaRW2b6Jf8s6jgnzghKWdQlgwHky3O/GqMshOz3AurJeXmjkfi9Ci9PDgMagNovxDu3EPLSu+jXbSlqCRv5U09lcIdtKMcf3x9P7p64Y/1KjaLI8ZXmT5Zq6M30X/1KTu7HmkqcagnCerSvGrf+lOiBG5StyAUF8hHD6j+gV46NswH+Ia0K8A3/1vzyegBHfOMfcoEYOoJ0YYInCXe9r9kV9tZc9H3bvJgrjPQWJR7gPxyzFUdFYfLGIU4+Zhp+VfZMRbanS+a/eiRX2xhZwvWp+24lnWuZydXjioYSAqZCIhEaWqpxy3sepE+mtMSoZY3Nnbh/xvE6M2QQlPBFNg+dV+xLz2/pp0nnVMzUayfAPekkDBNDkWm6Nt5++Rt4+EHsfQILw3dW390qyy5FpgXIYNTOneHE+d9J+YLYnRRuCYIH0L5PP3sXJsl7MPu7w94vsQy6epbrTgidaJpnvj2OxTw6ZsVoIe8J3/qbNoW/Fkz2lotiT+baR5OHmluvH3YwPqiOKbGq94phkEdoyBtRAJoA/1Wp9534Ox56vqb7QnWmknxbFOrNRIcV7/HqAJQUpzyFH6LO6dKu6KSHwE0m8YfXwidZxgKp5rD6Mb66Lh1PXz0xZ47NzftBqKg0/Dcb7AJvu2f/AV7CkWPPAWX14rPiYP5Bh1/ryqVKN07xqFXGVJIuEDtMGz9DtMU5BgNahpB5TD5Z9M/vPCYW1vGN2b/cBMKrGVf+gp/u9nk9Y4hRxMF18iZpG05oz4TsHX4psYDy2rjSZR857hzFrR2VNTa6+wq6SzulSjHa3noQGQne9xHMlpmKhEQcBdIUsRAcmGC8vSEpM1ZjEXYmnp3jWBG4/Ghe4VJjYuxH6344nnFnT9midsCN8xgxESC1x2yB6Mi/Lw+IWUmDTQvK4PCY280BUBYREFXgydMTEUsAeW1UWzMLSutQo7EuuKokYIijcgEk+w322B11QPNdsI6GbKueCneic77NY/HwxlWbj7/nnYiYKjKUTKBmtBi7ws3hAuRIZ18/L4oVsbZnczZ9FcbOkiNolgHGNC44Ojgp+bhP/YXuKA5As6KZ9yRpviXZzr3XbsxR6uAxXh7jDZaBbpii0NNetxTbhNK2xx5JGgQkWXMeAlXa0Xf9PRIYtsaTyh5F4Iy7Hn2n6CDfbg19UDne3DdytglcmFKS/vKOpWLMYfqbKyMRfszSBnCgIpJoRqtAngSE1jV3MTCsAcz3hQs3cozb+YPpcST0sgh7zj8O+SxT7j9/oI4ezNJWw3eEn2GALDw3DyCsy3lS3Jzy8lkLvqYsxEn2niP0z9HK+bsvETqtmlzBYjvst/ayEPzFMCY6Cbd8jzMKAZafHiI6sh8tbBQcpz83TvHzx2rHU5ICEAcBDXctnJHArUy/oZ9+eLW5jPtVMuKB33QQ=","base64")).toString()),yR)});var y_=I((wR,E_)=>{(function(t,e){typeof wR=="object"?E_.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(wR,function(){function t(n,s){var o=s?"\u2514":"\u251C";return n?o+="\u2500 ":o+="\u2500\u2500\u2510",o}function e(n,s){var o=[];for(var a in n)!n.hasOwnProperty(a)||s&&typeof n[a]=="function"||o.push(a);return o}function r(n,s,o,a,l,c,u){var g="",f=0,h,p,d=a.slice(0);if(d.push([s,o])&&a.length>0&&(a.forEach(function(E,B){B>0&&(g+=(E[1]?" ":"\u2502")+" "),!p&&E[0]===s&&(p=!0)}),g+=t(n,o)+n,l&&(typeof s!="object"||s instanceof Date)&&(g+=": "+s),p&&(g+=" (circular ref.)"),u(g)),!p&&typeof s=="object"){var m=e(s,c);m.forEach(function(E){h=++f===m.length,r(E,s[E],h,d,l,c,u)})}}var i={};return i.asLines=function(n,s,o,a){var l=typeof o!="function"?o:!1;r(".",n,!1,[],s,l,a||o)},i.asTree=function(n,s,o){var a="";return r(".",n,!1,[],s,o,function(l){a+=l+` -`}),a},i})});var x_=I((Uct,bR)=>{"use strict";var pTe=t=>{let e=!1,r=!1,i=!1;for(let n=0;n{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(t)?t=t.map(n=>n.trim()).filter(n=>n.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=pTe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),r(t))};bR.exports=S_;bR.exports.default=S_});var Na=I(TR=>{"use strict";Object.defineProperty(TR,"__esModule",{value:!0});TR.default=L_;function L_(){}L_.prototype={diff:function(e,r){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=i.callback;typeof i=="function"&&(n=i,i={}),this.options=i;var s=this;function o(d){return n?(setTimeout(function(){n(void 0,d)},0),!0):d}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var a=r.length,l=e.length,c=1,u=a+l,g=[{newPos:-1,components:[]}],f=this.extractCommon(g[0],r,e,0);if(g[0].newPos+1>=a&&f+1>=l)return o([{value:this.join(r),count:r.length}]);function h(){for(var d=-1*c;d<=c;d+=2){var m=void 0,E=g[d-1],B=g[d+1],b=(B?B.newPos:0)-d;E&&(g[d-1]=void 0);var R=E&&E.newPos+1=a&&b+1>=l)return o(yTe(s,m.components,r,e,s.useLongestToken));g[d]=m}c++}if(n)(function d(){setTimeout(function(){if(c>u)return n();h()||d()},0)})();else for(;c<=u;){var p=h();if(p)return p}},pushComponent:function(e,r,i){var n=e[e.length-1];n&&n.added===r&&n.removed===i?e[e.length-1]={count:n.count+1,added:r,removed:i}:e.push({count:1,added:r,removed:i})},extractCommon:function(e,r,i,n){for(var s=r.length,o=i.length,a=e.newPos,l=a-n,c=0;a+1h.length?d:h}),c.value=t.join(u)}else c.value=t.join(r.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=e[o-1];return o>1&&typeof f.value=="string"&&(f.added||f.removed)&&t.equals("",f.value)&&(e[o-2].value+=f.value,e.pop()),e}function wTe(t){return{newPos:t.newPos,components:t.components.slice(0)}}});var M_=I(Cd=>{"use strict";Object.defineProperty(Cd,"__esModule",{value:!0});Cd.diffChars=BTe;Cd.characterDiff=void 0;var bTe=QTe(Na());function QTe(t){return t&&t.__esModule?t:{default:t}}var T_=new bTe.default;Cd.characterDiff=T_;function BTe(t,e,r){return T_.diff(t,e,r)}});var OR=I(MR=>{"use strict";Object.defineProperty(MR,"__esModule",{value:!0});MR.generateOptions=vTe;function vTe(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}});var U_=I(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.diffWords=STe;Ng.diffWordsWithSpace=xTe;Ng.wordDiff=void 0;var PTe=kTe(Na()),DTe=OR();function kTe(t){return t&&t.__esModule?t:{default:t}}var O_=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,K_=/\S/,md=new PTe.default;Ng.wordDiff=md;md.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!K_.test(t)&&!K_.test(e)};md.tokenize=function(t){for(var e=t.split(/(\s+|[()[\]{}'"]|\b)/),r=0;r{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.diffLines=RTe;Lg.diffTrimmedLines=FTe;Lg.lineDiff=void 0;var LTe=NTe(Na()),TTe=OR();function NTe(t){return t&&t.__esModule?t:{default:t}}var OB=new LTe.default;Lg.lineDiff=OB;OB.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var i=0;i{"use strict";Object.defineProperty(Id,"__esModule",{value:!0});Id.diffSentences=MTe;Id.sentenceDiff=void 0;var KTe=OTe(Na());function OTe(t){return t&&t.__esModule?t:{default:t}}var KR=new KTe.default;Id.sentenceDiff=KR;KR.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};function MTe(t,e,r){return KR.diff(t,e,r)}});var G_=I(Ed=>{"use strict";Object.defineProperty(Ed,"__esModule",{value:!0});Ed.diffCss=UTe;Ed.cssDiff=void 0;var GTe=HTe(Na());function HTe(t){return t&&t.__esModule?t:{default:t}}var UR=new GTe.default;Ed.cssDiff=UR;UR.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};function UTe(t,e,r){return UR.diff(t,e,r)}});var Y_=I(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.diffJson=jTe;Tg.canonicalize=UB;Tg.jsonDiff=void 0;var j_=YTe(Na()),qTe=KB();function YTe(t){return t&&t.__esModule?t:{default:t}}function HB(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?HB=function(r){return typeof r}:HB=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},HB(t)}var JTe=Object.prototype.toString,bc=new j_.default;Tg.jsonDiff=bc;bc.useLongestToken=!0;bc.tokenize=qTe.lineDiff.tokenize;bc.castInput=function(t){var e=this.options,r=e.undefinedReplacement,i=e.stringifyReplacer,n=i===void 0?function(s,o){return typeof o=="undefined"?r:o}:i;return typeof t=="string"?t:JSON.stringify(UB(t,null,null,n),n," ")};bc.equals=function(t,e){return j_.default.prototype.equals.call(bc,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};function jTe(t,e,r){return bc.diff(t,e,r)}function UB(t,e,r,i,n){e=e||[],r=r||[],i&&(t=i(n,t));var s;for(s=0;s{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.diffArrays=WTe;yd.arrayDiff=void 0;var VTe=zTe(Na());function zTe(t){return t&&t.__esModule?t:{default:t}}var wd=new VTe.default;yd.arrayDiff=wd;wd.tokenize=function(t){return t.slice()};wd.join=wd.removeEmpty=function(t){return t};function WTe(t,e,r){return wd.diff(t,e,r)}});var GB=I(HR=>{"use strict";Object.defineProperty(HR,"__esModule",{value:!0});HR.parsePatch=_Te;function _Te(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=t.split(/\r\n|[\n\v\f\r\x85]/),i=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],n=[],s=0;function o(){var c={};for(n.push(c);s{"use strict";Object.defineProperty(GR,"__esModule",{value:!0});GR.default=XTe;function XTe(t,e,r){var i=!0,n=!1,s=!1,o=1;return function a(){if(i&&!s){if(n?o++:i=!1,t+o<=r)return o;s=!0}if(!n)return s||(i=!0),e<=t-o?-o++:(n=!0,a())}}});var V_=I(jB=>{"use strict";Object.defineProperty(jB,"__esModule",{value:!0});jB.applyPatch=W_;jB.applyPatches=ZTe;var z_=GB(),eMe=$Te(J_());function $Te(t){return t&&t.__esModule?t:{default:t}}function W_(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string"&&(e=(0,z_.parsePatch)(e)),Array.isArray(e)){if(e.length>1)throw new Error("applyPatch only works with a single input.");e=e[0]}var i=t.split(/\r\n|[\n\v\f\r\x85]/),n=t.match(/\r\n|[\n\v\f\r\x85]/g)||[],s=e.hunks,o=r.compareLine||function(F,D,he,pe){return D===pe},a=0,l=r.fuzzFactor||0,c=0,u=0,g,f;function h(F,D){for(var he=0;he0?pe[0]:" ",Pe=pe.length>0?pe.substr(1):pe;if(Ne===" "||Ne==="-"){if(!o(D+1,i[D],Ne,Pe)&&(a++,a>l))return!1;D++}}return!0}for(var p=0;p0?ne[0]:" ",A=ne.length>0?ne.substr(1):ne,V=L.linedelimiters[J];if(q===" ")K++;else if(q==="-")i.splice(K,1),n.splice(K,1);else if(q==="+")i.splice(K,0,A),n.splice(K,0,V),K++;else if(q==="\\"){var W=L.lines[J-1]?L.lines[J-1][0]:null;W==="+"?g=!0:W==="-"&&(f=!0)}}}if(g)for(;!i[i.length-1];)i.pop(),n.pop();else f&&(i.push(""),n.push(` -`));for(var X=0;X{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});Bd.structuredPatch=__;Bd.createTwoFilesPatch=X_;Bd.createPatch=tMe;var rMe=KB();function jR(t){return sMe(t)||nMe(t)||iMe()}function iMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function nMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function sMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e0?l(L.lines.slice(-o.context)):[],u-=f.length,g-=f.length)}(H=f).push.apply(H,jR(R.map(function(X){return(b.added?"+":"-")+X}))),b.added?p+=R.length:h+=R.length}else{if(u)if(R.length<=o.context*2&&B=a.length-2&&R.length<=o.context){var A=/\n$/.test(r),V=/\n$/.test(i),W=R.length==0&&f.length>q.oldLines;!A&&W&&f.splice(q.oldLines,0,"\\ No newline at end of file"),(!A&&!W||!V)&&f.push("\\ No newline at end of file")}c.push(q),u=0,g=0,f=[]}h+=R.length,p+=R.length}},m=0;m{"use strict";Object.defineProperty(YB,"__esModule",{value:!0});YB.arrayEqual=oMe;YB.arrayStartsWith=Z_;function oMe(t,e){return t.length!==e.length?!1:Z_(t,e)}function Z_(t,e){if(e.length>t.length)return!1;for(var r=0;r{"use strict";Object.defineProperty(qB,"__esModule",{value:!0});qB.calcLineCount=eX;qB.merge=aMe;var AMe=YR(),lMe=GB(),qR=$_();function Mg(t){return gMe(t)||uMe(t)||cMe()}function cMe(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function uMe(t){if(Symbol.iterator in Object(t)||Object.prototype.toString.call(t)==="[object Arguments]")return Array.from(t)}function gMe(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e{"use strict";Object.defineProperty(zR,"__esModule",{value:!0});zR.convertChangesToDMP=dMe;function dMe(t){for(var e=[],r,i,n=0;n{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.convertChangesToXML=CMe;function CMe(t){for(var e=[],r=0;r"):i.removed&&e.push(""),e.push(mMe(i.value)),i.added?e.push(""):i.removed&&e.push("")}return e.join("")}function mMe(t){var e=t;return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=e.replace(/"/g,"""),e}});var CX=I(br=>{"use strict";Object.defineProperty(br,"__esModule",{value:!0});Object.defineProperty(br,"Diff",{enumerable:!0,get:function(){return IMe.default}});Object.defineProperty(br,"diffChars",{enumerable:!0,get:function(){return EMe.diffChars}});Object.defineProperty(br,"diffWords",{enumerable:!0,get:function(){return fX.diffWords}});Object.defineProperty(br,"diffWordsWithSpace",{enumerable:!0,get:function(){return fX.diffWordsWithSpace}});Object.defineProperty(br,"diffLines",{enumerable:!0,get:function(){return hX.diffLines}});Object.defineProperty(br,"diffTrimmedLines",{enumerable:!0,get:function(){return hX.diffTrimmedLines}});Object.defineProperty(br,"diffSentences",{enumerable:!0,get:function(){return yMe.diffSentences}});Object.defineProperty(br,"diffCss",{enumerable:!0,get:function(){return wMe.diffCss}});Object.defineProperty(br,"diffJson",{enumerable:!0,get:function(){return pX.diffJson}});Object.defineProperty(br,"canonicalize",{enumerable:!0,get:function(){return pX.canonicalize}});Object.defineProperty(br,"diffArrays",{enumerable:!0,get:function(){return BMe.diffArrays}});Object.defineProperty(br,"applyPatch",{enumerable:!0,get:function(){return dX.applyPatch}});Object.defineProperty(br,"applyPatches",{enumerable:!0,get:function(){return dX.applyPatches}});Object.defineProperty(br,"parsePatch",{enumerable:!0,get:function(){return QMe.parsePatch}});Object.defineProperty(br,"merge",{enumerable:!0,get:function(){return bMe.merge}});Object.defineProperty(br,"structuredPatch",{enumerable:!0,get:function(){return _R.structuredPatch}});Object.defineProperty(br,"createTwoFilesPatch",{enumerable:!0,get:function(){return _R.createTwoFilesPatch}});Object.defineProperty(br,"createPatch",{enumerable:!0,get:function(){return _R.createPatch}});Object.defineProperty(br,"convertChangesToDMP",{enumerable:!0,get:function(){return vMe.convertChangesToDMP}});Object.defineProperty(br,"convertChangesToXML",{enumerable:!0,get:function(){return SMe.convertChangesToXML}});var IMe=xMe(Na()),EMe=M_(),fX=U_(),hX=KB(),yMe=H_(),wMe=G_(),pX=Y_(),BMe=q_(),dX=V_(),QMe=GB(),bMe=cX(),_R=YR(),vMe=uX(),SMe=gX();function xMe(t){return t&&t.__esModule?t:{default:t}}});var WB=I((agt,mX)=>{var kMe=As(),PMe=Nw(),DMe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,RMe=/^\w*$/;function FMe(t,e){if(kMe(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||PMe(t)?!0:RMe.test(t)||!DMe.test(t)||e!=null&&t in Object(e)}mX.exports=FMe});var Gs=I((Agt,IX)=>{function NMe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}IX.exports=NMe});var zB=I((lgt,EX)=>{var LMe=Ac(),TMe=Gs(),MMe="[object AsyncFunction]",OMe="[object Function]",KMe="[object GeneratorFunction]",UMe="[object Proxy]";function HMe(t){if(!TMe(t))return!1;var e=LMe(t);return e==OMe||e==KMe||e==MMe||e==UMe}EX.exports=HMe});var wX=I((cgt,yX)=>{var GMe=Ks(),jMe=GMe["__core-js_shared__"];yX.exports=jMe});var bX=I((ugt,BX)=>{var XR=wX(),QX=function(){var t=/[^.]+$/.exec(XR&&XR.keys&&XR.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function YMe(t){return!!QX&&QX in t}BX.exports=YMe});var ZR=I((ggt,vX)=>{var qMe=Function.prototype,JMe=qMe.toString;function WMe(t){if(t!=null){try{return JMe.call(t)}catch(e){}try{return t+""}catch(e){}}return""}vX.exports=WMe});var xX=I((fgt,SX)=>{var zMe=zB(),VMe=bX(),_Me=Gs(),XMe=ZR(),ZMe=/[\\^$.*+?()[\]{}|]/g,$Me=/^\[object .+?Constructor\]$/,eOe=Function.prototype,tOe=Object.prototype,rOe=eOe.toString,iOe=tOe.hasOwnProperty,nOe=RegExp("^"+rOe.call(iOe).replace(ZMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function sOe(t){if(!_Me(t)||VMe(t))return!1;var e=zMe(t)?nOe:$Me;return e.test(XMe(t))}SX.exports=sOe});var PX=I((hgt,kX)=>{function oOe(t,e){return t==null?void 0:t[e]}kX.exports=oOe});var UA=I((pgt,DX)=>{var aOe=xX(),AOe=PX();function lOe(t,e){var r=AOe(t,e);return aOe(r)?r:void 0}DX.exports=lOe});var Qd=I((dgt,RX)=>{var cOe=UA(),uOe=cOe(Object,"create");RX.exports=uOe});var LX=I((Cgt,FX)=>{var NX=Qd();function gOe(){this.__data__=NX?NX(null):{},this.size=0}FX.exports=gOe});var MX=I((mgt,TX)=>{function fOe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}TX.exports=fOe});var KX=I((Igt,OX)=>{var hOe=Qd(),pOe="__lodash_hash_undefined__",dOe=Object.prototype,COe=dOe.hasOwnProperty;function mOe(t){var e=this.__data__;if(hOe){var r=e[t];return r===pOe?void 0:r}return COe.call(e,t)?e[t]:void 0}OX.exports=mOe});var HX=I((Egt,UX)=>{var IOe=Qd(),EOe=Object.prototype,yOe=EOe.hasOwnProperty;function wOe(t){var e=this.__data__;return IOe?e[t]!==void 0:yOe.call(e,t)}UX.exports=wOe});var jX=I((ygt,GX)=>{var BOe=Qd(),QOe="__lodash_hash_undefined__";function bOe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=BOe&&e===void 0?QOe:e,this}GX.exports=bOe});var qX=I((wgt,YX)=>{var vOe=LX(),SOe=MX(),xOe=KX(),kOe=HX(),POe=jX();function Og(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{function DOe(){this.__data__=[],this.size=0}JX.exports=DOe});var Kg=I((Qgt,zX)=>{function ROe(t,e){return t===e||t!==t&&e!==e}zX.exports=ROe});var bd=I((bgt,VX)=>{var FOe=Kg();function NOe(t,e){for(var r=t.length;r--;)if(FOe(t[r][0],e))return r;return-1}VX.exports=NOe});var XX=I((vgt,_X)=>{var LOe=bd(),TOe=Array.prototype,MOe=TOe.splice;function OOe(t){var e=this.__data__,r=LOe(e,t);if(r<0)return!1;var i=e.length-1;return r==i?e.pop():MOe.call(e,r,1),--this.size,!0}_X.exports=OOe});var $X=I((Sgt,ZX)=>{var KOe=bd();function UOe(t){var e=this.__data__,r=KOe(e,t);return r<0?void 0:e[r][1]}ZX.exports=UOe});var tZ=I((xgt,eZ)=>{var HOe=bd();function GOe(t){return HOe(this.__data__,t)>-1}eZ.exports=GOe});var iZ=I((kgt,rZ)=>{var jOe=bd();function YOe(t,e){var r=this.__data__,i=jOe(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}rZ.exports=YOe});var vd=I((Pgt,nZ)=>{var qOe=WX(),JOe=XX(),WOe=$X(),zOe=tZ(),VOe=iZ();function Ug(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var _Oe=UA(),XOe=Ks(),ZOe=_Oe(XOe,"Map");sZ.exports=ZOe});var AZ=I((Rgt,oZ)=>{var aZ=qX(),$Oe=vd(),eKe=VB();function tKe(){this.size=0,this.__data__={hash:new aZ,map:new(eKe||$Oe),string:new aZ}}oZ.exports=tKe});var cZ=I((Fgt,lZ)=>{function rKe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}lZ.exports=rKe});var Sd=I((Ngt,uZ)=>{var iKe=cZ();function nKe(t,e){var r=t.__data__;return iKe(e)?r[typeof e=="string"?"string":"hash"]:r.map}uZ.exports=nKe});var fZ=I((Lgt,gZ)=>{var sKe=Sd();function oKe(t){var e=sKe(this,t).delete(t);return this.size-=e?1:0,e}gZ.exports=oKe});var pZ=I((Tgt,hZ)=>{var aKe=Sd();function AKe(t){return aKe(this,t).get(t)}hZ.exports=AKe});var CZ=I((Mgt,dZ)=>{var lKe=Sd();function cKe(t){return lKe(this,t).has(t)}dZ.exports=cKe});var IZ=I((Ogt,mZ)=>{var uKe=Sd();function gKe(t,e){var r=uKe(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}mZ.exports=gKe});var _B=I((Kgt,EZ)=>{var fKe=AZ(),hKe=fZ(),pKe=pZ(),dKe=CZ(),CKe=IZ();function Hg(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{var wZ=_B(),mKe="Expected a function";function $R(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(mKe);var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],s=r.cache;if(s.has(n))return s.get(n);var o=t.apply(this,i);return r.cache=s.set(n,o)||s,o};return r.cache=new($R.Cache||wZ),r}$R.Cache=wZ;yZ.exports=$R});var bZ=I((Hgt,QZ)=>{var IKe=BZ(),EKe=500;function yKe(t){var e=IKe(t,function(i){return r.size===EKe&&r.clear(),i}),r=e.cache;return e}QZ.exports=yKe});var SZ=I((Ggt,vZ)=>{var wKe=bZ(),BKe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,QKe=/\\(\\)?/g,bKe=wKe(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(BKe,function(r,i,n,s){e.push(n?s.replace(QKe,"$1"):i||r)}),e});vZ.exports=bKe});var Gg=I((jgt,xZ)=>{var vKe=As(),SKe=WB(),xKe=SZ(),kKe=gg();function PKe(t,e){return vKe(t)?t:SKe(t,e)?[t]:xKe(kKe(t))}xZ.exports=PKe});var Sc=I((Ygt,kZ)=>{var DKe=Nw(),RKe=1/0;function FKe(t){if(typeof t=="string"||DKe(t))return t;var e=t+"";return e=="0"&&1/t==-RKe?"-0":e}kZ.exports=FKe});var xd=I((qgt,PZ)=>{var NKe=Gg(),LKe=Sc();function TKe(t,e){e=NKe(e,t);for(var r=0,i=e.length;t!=null&&r{var MKe=UA(),OKe=function(){try{var t=MKe(Object,"defineProperty");return t({},"",{}),t}catch(e){}}();DZ.exports=OKe});var jg=I((Wgt,RZ)=>{var FZ=eF();function KKe(t,e,r){e=="__proto__"&&FZ?FZ(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}RZ.exports=KKe});var XB=I((zgt,NZ)=>{var UKe=jg(),HKe=Kg(),GKe=Object.prototype,jKe=GKe.hasOwnProperty;function YKe(t,e,r){var i=t[e];(!(jKe.call(t,e)&&HKe(i,r))||r===void 0&&!(e in t))&&UKe(t,e,r)}NZ.exports=YKe});var kd=I((Vgt,LZ)=>{var qKe=9007199254740991,JKe=/^(?:0|[1-9]\d*)$/;function WKe(t,e){var r=typeof t;return e=e==null?qKe:e,!!e&&(r=="number"||r!="symbol"&&JKe.test(t))&&t>-1&&t%1==0&&t{var zKe=XB(),VKe=Gg(),_Ke=kd(),MZ=Gs(),XKe=Sc();function ZKe(t,e,r,i){if(!MZ(t))return t;e=VKe(e,t);for(var n=-1,s=e.length,o=s-1,a=t;a!=null&&++n{var $Ke=xd(),e1e=tF(),t1e=Gg();function r1e(t,e,r){for(var i=-1,n=e.length,s={};++i{function i1e(t,e){return t!=null&&e in Object(t)}UZ.exports=i1e});var jZ=I(($gt,GZ)=>{var n1e=Ac(),s1e=Qo(),o1e="[object Arguments]";function a1e(t){return s1e(t)&&n1e(t)==o1e}GZ.exports=a1e});var Pd=I((eft,YZ)=>{var qZ=jZ(),A1e=Qo(),JZ=Object.prototype,l1e=JZ.hasOwnProperty,c1e=JZ.propertyIsEnumerable,u1e=qZ(function(){return arguments}())?qZ:function(t){return A1e(t)&&l1e.call(t,"callee")&&!c1e.call(t,"callee")};YZ.exports=u1e});var ZB=I((tft,WZ)=>{var g1e=9007199254740991;function f1e(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=g1e}WZ.exports=f1e});var rF=I((rft,zZ)=>{var h1e=Gg(),p1e=Pd(),d1e=As(),C1e=kd(),m1e=ZB(),I1e=Sc();function E1e(t,e,r){e=h1e(e,t);for(var i=-1,n=e.length,s=!1;++i{var y1e=HZ(),w1e=rF();function B1e(t,e){return t!=null&&w1e(t,e,y1e)}VZ.exports=B1e});var XZ=I((nft,_Z)=>{var Q1e=KZ(),b1e=iF();function v1e(t,e){return Q1e(t,e,function(r,i){return b1e(t,i)})}_Z.exports=v1e});var $B=I((sft,ZZ)=>{function S1e(t,e){for(var r=-1,i=e.length,n=t.length;++r{var e$=ac(),x1e=Pd(),k1e=As(),t$=e$?e$.isConcatSpreadable:void 0;function P1e(t){return k1e(t)||x1e(t)||!!(t$&&t&&t[t$])}$Z.exports=P1e});var s$=I((aft,i$)=>{var D1e=$B(),R1e=r$();function n$(t,e,r,i,n){var s=-1,o=t.length;for(r||(r=R1e),n||(n=[]);++s0&&r(a)?e>1?n$(a,e-1,r,i,n):D1e(n,a):i||(n[n.length]=a)}return n}i$.exports=n$});var a$=I((Aft,o$)=>{var F1e=s$();function N1e(t){var e=t==null?0:t.length;return e?F1e(t,1):[]}o$.exports=N1e});var l$=I((lft,A$)=>{function L1e(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}A$.exports=L1e});var nF=I((cft,c$)=>{var T1e=l$(),u$=Math.max;function M1e(t,e,r){return e=u$(e===void 0?t.length-1:e,0),function(){for(var i=arguments,n=-1,s=u$(i.length-e,0),o=Array(s);++n{function O1e(t){return function(){return t}}g$.exports=O1e});var e0=I((gft,h$)=>{function K1e(t){return t}h$.exports=K1e});var C$=I((fft,p$)=>{var U1e=f$(),d$=eF(),H1e=e0(),G1e=d$?function(t,e){return d$(t,"toString",{configurable:!0,enumerable:!1,value:U1e(e),writable:!0})}:H1e;p$.exports=G1e});var I$=I((hft,m$)=>{var j1e=800,Y1e=16,q1e=Date.now;function J1e(t){var e=0,r=0;return function(){var i=q1e(),n=Y1e-(i-r);if(r=i,n>0){if(++e>=j1e)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}m$.exports=J1e});var sF=I((pft,E$)=>{var W1e=C$(),z1e=I$(),V1e=z1e(W1e);E$.exports=V1e});var w$=I((dft,y$)=>{var _1e=a$(),X1e=nF(),Z1e=sF();function $1e(t){return Z1e(X1e(t,void 0,_1e),t+"")}y$.exports=$1e});var Q$=I((Cft,B$)=>{var eUe=XZ(),tUe=w$(),rUe=tUe(function(t,e){return t==null?{}:eUe(t,e)});B$.exports=rUe});var M$=I((lpt,N$)=>{"use strict";var pF;try{pF=Map}catch(t){}var dF;try{dF=Set}catch(t){}function L$(t,e,r){if(!t||typeof t!="object"||typeof t=="function")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t);if(Array.isArray(t))return t.map(T$);if(pF&&t instanceof pF)return new Map(Array.from(t.entries()));if(dF&&t instanceof dF)return new Set(Array.from(t.values()));if(t instanceof Object){e.push(t);var i=Object.create(t);r.push(i);for(var n in t){var s=e.findIndex(function(o){return o===t[n]});i[n]=s>-1?r[s]:L$(t[n],e,r)}return i}return t}function T$(t){return L$(t,[],[])}N$.exports=T$});var Nd=I(CF=>{"use strict";Object.defineProperty(CF,"__esModule",{value:!0});CF.default=uUe;var gUe=Object.prototype.toString,fUe=Error.prototype.toString,hUe=RegExp.prototype.toString,pUe=typeof Symbol!="undefined"?Symbol.prototype.toString:()=>"",dUe=/^Symbol\((.*)\)(.*)$/;function CUe(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function O$(t,e=!1){if(t==null||t===!0||t===!1)return""+t;let r=typeof t;if(r==="number")return CUe(t);if(r==="string")return e?`"${t}"`:t;if(r==="function")return"[Function "+(t.name||"anonymous")+"]";if(r==="symbol")return pUe.call(t).replace(dUe,"Symbol($1)");let i=gUe.call(t).slice(8,-1);return i==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):i==="Error"||t instanceof Error?"["+fUe.call(t)+"]":i==="RegExp"?hUe.call(t):null}function uUe(t,e){let r=O$(t,e);return r!==null?r:JSON.stringify(t,function(i,n){let s=O$(this[i],e);return s!==null?s:n},2)}});var La=I(ci=>{"use strict";Object.defineProperty(ci,"__esModule",{value:!0});ci.default=ci.array=ci.object=ci.boolean=ci.date=ci.number=ci.string=ci.mixed=void 0;var K$=mUe(Nd());function mUe(t){return t&&t.__esModule?t:{default:t}}var U$={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:r,originalValue:i})=>{let n=i!=null&&i!==r,s=`${t} must be a \`${e}\` type, but the final value was: \`${(0,K$.default)(r,!0)}\``+(n?` (cast from the value \`${(0,K$.default)(i,!0)}\`).`:".");return r===null&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s},defined:"${path} must be defined"};ci.mixed=U$;var H$={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};ci.string=H$;var G$={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};ci.number=G$;var j$={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};ci.date=j$;var Y$={isValue:"${path} field must be ${value}"};ci.boolean=Y$;var q$={noUnknown:"${path} field has unspecified keys: ${unknown}"};ci.object=q$;var J$={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must be have ${length} items"};ci.array=J$;var IUe=Object.assign(Object.create(null),{mixed:U$,string:H$,number:G$,date:j$,object:q$,array:J$,boolean:Y$});ci.default=IUe});var z$=I((gpt,W$)=>{var EUe=Object.prototype,yUe=EUe.hasOwnProperty;function wUe(t,e){return t!=null&&yUe.call(t,e)}W$.exports=wUe});var Ld=I((fpt,V$)=>{var BUe=z$(),QUe=rF();function bUe(t,e){return t!=null&&QUe(t,e,BUe)}V$.exports=bUe});var qg=I(n0=>{"use strict";Object.defineProperty(n0,"__esModule",{value:!0});n0.default=void 0;var vUe=t=>t&&t.__isYupSchema__;n0.default=vUe});var Z$=I(s0=>{"use strict";Object.defineProperty(s0,"__esModule",{value:!0});s0.default=void 0;var SUe=_$(Ld()),xUe=_$(qg());function _$(t){return t&&t.__esModule?t:{default:t}}var X$=class{constructor(e,r){if(this.refs=e,this.refs=e,typeof r=="function"){this.fn=r;return}if(!(0,SUe.default)(r,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!r.then&&!r.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:i,then:n,otherwise:s}=r,o=typeof i=="function"?i:(...a)=>a.every(l=>l===i);this.fn=function(...a){let l=a.pop(),c=a.pop(),u=o(...a)?n:s;if(!!u)return typeof u=="function"?u(c):c.concat(u.resolve(l))}}resolve(e,r){let i=this.refs.map(s=>s.getValue(r==null?void 0:r.value,r==null?void 0:r.parent,r==null?void 0:r.context)),n=this.fn.apply(e,i.concat(e,r));if(n===void 0||n===e)return e;if(!(0,xUe.default)(n))throw new TypeError("conditions must return a schema object");return n.resolve(r)}},kUe=X$;s0.default=kUe});var IF=I(mF=>{"use strict";Object.defineProperty(mF,"__esModule",{value:!0});mF.default=PUe;function PUe(t){return t==null?[]:[].concat(t)}});var xc=I(o0=>{"use strict";Object.defineProperty(o0,"__esModule",{value:!0});o0.default=void 0;var DUe=$$(Nd()),RUe=$$(IF());function $$(t){return t&&t.__esModule?t:{default:t}}function EF(){return EF=Object.assign||function(t){for(var e=1;e(0,DUe.default)(r[s])):typeof e=="function"?e(r):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,r,i,n){super();this.name="ValidationError",this.value=r,this.path=i,this.type=n,this.errors=[],this.inner=[],(0,RUe.default)(e).forEach(s=>{Td.isError(s)?(this.errors.push(...s.errors),this.inner=this.inner.concat(s.inner.length?s.inner:s)):this.errors.push(s)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Td)}};o0.default=Td});var a0=I(yF=>{"use strict";Object.defineProperty(yF,"__esModule",{value:!0});yF.default=NUe;var wF=LUe(xc());function LUe(t){return t&&t.__esModule?t:{default:t}}var TUe=t=>{let e=!1;return(...r)=>{e||(e=!0,t(...r))}};function NUe(t,e){let{endEarly:r,tests:i,args:n,value:s,errors:o,sort:a,path:l}=t,c=TUe(e),u=i.length,g=[];if(o=o||[],!u)return o.length?c(new wF.default(o,s,l)):c(null,s);for(let f=0;f{function MUe(t){return function(e,r,i){for(var n=-1,s=Object(e),o=i(e),a=o.length;a--;){var l=o[t?a:++n];if(r(s[l],l,s)===!1)break}return e}}eee.exports=MUe});var BF=I((Ept,ree)=>{var OUe=tee(),KUe=OUe();ree.exports=KUe});var nee=I((ypt,iee)=>{function UUe(t,e){for(var r=-1,i=Array(t);++r{function HUe(){return!1}see.exports=HUe});var Od=I((Md,Jg)=>{var GUe=Ks(),jUe=oee(),aee=typeof Md=="object"&&Md&&!Md.nodeType&&Md,Aee=aee&&typeof Jg=="object"&&Jg&&!Jg.nodeType&&Jg,YUe=Aee&&Aee.exports===aee,lee=YUe?GUe.Buffer:void 0,qUe=lee?lee.isBuffer:void 0,JUe=qUe||jUe;Jg.exports=JUe});var uee=I((Bpt,cee)=>{var WUe=Ac(),zUe=ZB(),VUe=Qo(),_Ue="[object Arguments]",XUe="[object Array]",ZUe="[object Boolean]",$Ue="[object Date]",e2e="[object Error]",t2e="[object Function]",r2e="[object Map]",i2e="[object Number]",n2e="[object Object]",s2e="[object RegExp]",o2e="[object Set]",a2e="[object String]",A2e="[object WeakMap]",l2e="[object ArrayBuffer]",c2e="[object DataView]",u2e="[object Float32Array]",g2e="[object Float64Array]",f2e="[object Int8Array]",h2e="[object Int16Array]",p2e="[object Int32Array]",d2e="[object Uint8Array]",C2e="[object Uint8ClampedArray]",m2e="[object Uint16Array]",I2e="[object Uint32Array]",lr={};lr[u2e]=lr[g2e]=lr[f2e]=lr[h2e]=lr[p2e]=lr[d2e]=lr[C2e]=lr[m2e]=lr[I2e]=!0;lr[_Ue]=lr[XUe]=lr[l2e]=lr[ZUe]=lr[c2e]=lr[$Ue]=lr[e2e]=lr[t2e]=lr[r2e]=lr[i2e]=lr[n2e]=lr[s2e]=lr[o2e]=lr[a2e]=lr[A2e]=!1;function E2e(t){return VUe(t)&&zUe(t.length)&&!!lr[WUe(t)]}cee.exports=E2e});var A0=I((Qpt,gee)=>{function y2e(t){return function(e){return t(e)}}gee.exports=y2e});var l0=I((Kd,Wg)=>{var w2e=WP(),fee=typeof Kd=="object"&&Kd&&!Kd.nodeType&&Kd,Ud=fee&&typeof Wg=="object"&&Wg&&!Wg.nodeType&&Wg,B2e=Ud&&Ud.exports===fee,QF=B2e&&w2e.process,Q2e=function(){try{var t=Ud&&Ud.require&&Ud.require("util").types;return t||QF&&QF.binding&&QF.binding("util")}catch(e){}}();Wg.exports=Q2e});var c0=I((bpt,hee)=>{var b2e=uee(),v2e=A0(),pee=l0(),dee=pee&&pee.isTypedArray,S2e=dee?v2e(dee):b2e;hee.exports=S2e});var bF=I((vpt,Cee)=>{var x2e=nee(),k2e=Pd(),P2e=As(),D2e=Od(),R2e=kd(),F2e=c0(),N2e=Object.prototype,L2e=N2e.hasOwnProperty;function T2e(t,e){var r=P2e(t),i=!r&&k2e(t),n=!r&&!i&&D2e(t),s=!r&&!i&&!n&&F2e(t),o=r||i||n||s,a=o?x2e(t.length,String):[],l=a.length;for(var c in t)(e||L2e.call(t,c))&&!(o&&(c=="length"||n&&(c=="offset"||c=="parent")||s&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||R2e(c,l)))&&a.push(c);return a}Cee.exports=T2e});var u0=I((Spt,mee)=>{var M2e=Object.prototype;function O2e(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||M2e;return t===r}mee.exports=O2e});var vF=I((xpt,Iee)=>{function K2e(t,e){return function(r){return t(e(r))}}Iee.exports=K2e});var yee=I((kpt,Eee)=>{var U2e=vF(),H2e=U2e(Object.keys,Object);Eee.exports=H2e});var Bee=I((Ppt,wee)=>{var G2e=u0(),j2e=yee(),Y2e=Object.prototype,q2e=Y2e.hasOwnProperty;function J2e(t){if(!G2e(t))return j2e(t);var e=[];for(var r in Object(t))q2e.call(t,r)&&r!="constructor"&&e.push(r);return e}wee.exports=J2e});var Hd=I((Dpt,Qee)=>{var W2e=zB(),z2e=ZB();function V2e(t){return t!=null&&z2e(t.length)&&!W2e(t)}Qee.exports=V2e});var zg=I((Rpt,bee)=>{var _2e=bF(),X2e=Bee(),Z2e=Hd();function $2e(t){return Z2e(t)?_2e(t):X2e(t)}bee.exports=$2e});var SF=I((Fpt,vee)=>{var eHe=BF(),tHe=zg();function rHe(t,e){return t&&eHe(t,e,tHe)}vee.exports=rHe});var xee=I((Npt,See)=>{var iHe=vd();function nHe(){this.__data__=new iHe,this.size=0}See.exports=nHe});var Pee=I((Lpt,kee)=>{function sHe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}kee.exports=sHe});var Ree=I((Tpt,Dee)=>{function oHe(t){return this.__data__.get(t)}Dee.exports=oHe});var Nee=I((Mpt,Fee)=>{function aHe(t){return this.__data__.has(t)}Fee.exports=aHe});var Tee=I((Opt,Lee)=>{var AHe=vd(),lHe=VB(),cHe=_B(),uHe=200;function gHe(t,e){var r=this.__data__;if(r instanceof AHe){var i=r.__data__;if(!lHe||i.length{var fHe=vd(),hHe=xee(),pHe=Pee(),dHe=Ree(),CHe=Nee(),mHe=Tee();function Vg(t){var e=this.__data__=new fHe(t);this.size=e.size}Vg.prototype.clear=hHe;Vg.prototype.delete=pHe;Vg.prototype.get=dHe;Vg.prototype.has=CHe;Vg.prototype.set=mHe;Mee.exports=Vg});var Kee=I((Upt,Oee)=>{var IHe="__lodash_hash_undefined__";function EHe(t){return this.__data__.set(t,IHe),this}Oee.exports=EHe});var Hee=I((Hpt,Uee)=>{function yHe(t){return this.__data__.has(t)}Uee.exports=yHe});var jee=I((Gpt,Gee)=>{var wHe=_B(),BHe=Kee(),QHe=Hee();function g0(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new wHe;++e{function bHe(t,e){for(var r=-1,i=t==null?0:t.length;++r{function vHe(t,e){return t.has(e)}Jee.exports=vHe});var xF=I((qpt,zee)=>{var SHe=jee(),xHe=qee(),kHe=Wee(),PHe=1,DHe=2;function RHe(t,e,r,i,n,s){var o=r&PHe,a=t.length,l=e.length;if(a!=l&&!(o&&l>a))return!1;var c=s.get(t),u=s.get(e);if(c&&u)return c==e&&u==t;var g=-1,f=!0,h=r&DHe?new SHe:void 0;for(s.set(t,e),s.set(e,t);++g{var FHe=Ks(),NHe=FHe.Uint8Array;Vee.exports=NHe});var Xee=I((Wpt,_ee)=>{function LHe(t){var e=-1,r=Array(t.size);return t.forEach(function(i,n){r[++e]=[n,i]}),r}_ee.exports=LHe});var $ee=I((zpt,Zee)=>{function THe(t){var e=-1,r=Array(t.size);return t.forEach(function(i){r[++e]=i}),r}Zee.exports=THe});var nte=I((Vpt,ete)=>{var tte=ac(),rte=kF(),MHe=Kg(),OHe=xF(),KHe=Xee(),UHe=$ee(),HHe=1,GHe=2,jHe="[object Boolean]",YHe="[object Date]",qHe="[object Error]",JHe="[object Map]",WHe="[object Number]",zHe="[object RegExp]",VHe="[object Set]",_He="[object String]",XHe="[object Symbol]",ZHe="[object ArrayBuffer]",$He="[object DataView]",ite=tte?tte.prototype:void 0,PF=ite?ite.valueOf:void 0;function eGe(t,e,r,i,n,s,o){switch(r){case $He:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ZHe:return!(t.byteLength!=e.byteLength||!s(new rte(t),new rte(e)));case jHe:case YHe:case WHe:return MHe(+t,+e);case qHe:return t.name==e.name&&t.message==e.message;case zHe:case _He:return t==e+"";case JHe:var a=KHe;case VHe:var l=i&HHe;if(a||(a=UHe),t.size!=e.size&&!l)return!1;var c=o.get(t);if(c)return c==e;i|=GHe,o.set(t,e);var u=OHe(a(t),a(e),i,n,s,o);return o.delete(t),u;case XHe:if(PF)return PF.call(t)==PF.call(e)}return!1}ete.exports=eGe});var DF=I((_pt,ste)=>{var tGe=$B(),rGe=As();function iGe(t,e,r){var i=e(t);return rGe(t)?i:tGe(i,r(t))}ste.exports=iGe});var ate=I((Xpt,ote)=>{function nGe(t,e){for(var r=-1,i=t==null?0:t.length,n=0,s=[];++r{function sGe(){return[]}Ate.exports=sGe});var f0=I(($pt,lte)=>{var oGe=ate(),aGe=RF(),AGe=Object.prototype,lGe=AGe.propertyIsEnumerable,cte=Object.getOwnPropertySymbols,cGe=cte?function(t){return t==null?[]:(t=Object(t),oGe(cte(t),function(e){return lGe.call(t,e)}))}:aGe;lte.exports=cGe});var FF=I((edt,ute)=>{var uGe=DF(),gGe=f0(),fGe=zg();function hGe(t){return uGe(t,fGe,gGe)}ute.exports=hGe});var hte=I((tdt,gte)=>{var fte=FF(),pGe=1,dGe=Object.prototype,CGe=dGe.hasOwnProperty;function mGe(t,e,r,i,n,s){var o=r&pGe,a=fte(t),l=a.length,c=fte(e),u=c.length;if(l!=u&&!o)return!1;for(var g=l;g--;){var f=a[g];if(!(o?f in e:CGe.call(e,f)))return!1}var h=s.get(t),p=s.get(e);if(h&&p)return h==e&&p==t;var d=!0;s.set(t,e),s.set(e,t);for(var m=o;++g{var IGe=UA(),EGe=Ks(),yGe=IGe(EGe,"DataView");pte.exports=yGe});var mte=I((idt,Cte)=>{var wGe=UA(),BGe=Ks(),QGe=wGe(BGe,"Promise");Cte.exports=QGe});var Ete=I((ndt,Ite)=>{var bGe=UA(),vGe=Ks(),SGe=bGe(vGe,"Set");Ite.exports=SGe});var wte=I((sdt,yte)=>{var xGe=UA(),kGe=Ks(),PGe=xGe(kGe,"WeakMap");yte.exports=PGe});var jd=I((odt,Bte)=>{var NF=dte(),LF=VB(),TF=mte(),MF=Ete(),OF=wte(),Qte=Ac(),_g=ZR(),bte="[object Map]",DGe="[object Object]",vte="[object Promise]",Ste="[object Set]",xte="[object WeakMap]",kte="[object DataView]",RGe=_g(NF),FGe=_g(LF),NGe=_g(TF),LGe=_g(MF),TGe=_g(OF),kc=Qte;(NF&&kc(new NF(new ArrayBuffer(1)))!=kte||LF&&kc(new LF)!=bte||TF&&kc(TF.resolve())!=vte||MF&&kc(new MF)!=Ste||OF&&kc(new OF)!=xte)&&(kc=function(t){var e=Qte(t),r=e==DGe?t.constructor:void 0,i=r?_g(r):"";if(i)switch(i){case RGe:return kte;case FGe:return bte;case NGe:return vte;case LGe:return Ste;case TGe:return xte}return e});Bte.exports=kc});var Mte=I((adt,Pte)=>{var KF=Gd(),MGe=xF(),OGe=nte(),KGe=hte(),Dte=jd(),Rte=As(),Fte=Od(),UGe=c0(),HGe=1,Nte="[object Arguments]",Lte="[object Array]",h0="[object Object]",GGe=Object.prototype,Tte=GGe.hasOwnProperty;function jGe(t,e,r,i,n,s){var o=Rte(t),a=Rte(e),l=o?Lte:Dte(t),c=a?Lte:Dte(e);l=l==Nte?h0:l,c=c==Nte?h0:c;var u=l==h0,g=c==h0,f=l==c;if(f&&Fte(t)){if(!Fte(e))return!1;o=!0,u=!1}if(f&&!u)return s||(s=new KF),o||UGe(t)?MGe(t,e,r,i,n,s):OGe(t,e,l,r,i,n,s);if(!(r&HGe)){var h=u&&Tte.call(t,"__wrapped__"),p=g&&Tte.call(e,"__wrapped__");if(h||p){var d=h?t.value():t,m=p?e.value():e;return s||(s=new KF),n(d,m,r,i,s)}}return f?(s||(s=new KF),KGe(t,e,r,i,n,s)):!1}Pte.exports=jGe});var UF=I((Adt,Ote)=>{var YGe=Mte(),Kte=Qo();function Ute(t,e,r,i,n){return t===e?!0:t==null||e==null||!Kte(t)&&!Kte(e)?t!==t&&e!==e:YGe(t,e,r,i,Ute,n)}Ote.exports=Ute});var Gte=I((ldt,Hte)=>{var qGe=Gd(),JGe=UF(),WGe=1,zGe=2;function VGe(t,e,r,i){var n=r.length,s=n,o=!i;if(t==null)return!s;for(t=Object(t);n--;){var a=r[n];if(o&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++n{var _Ge=Gs();function XGe(t){return t===t&&!_Ge(t)}jte.exports=XGe});var qte=I((udt,Yte)=>{var ZGe=HF(),$Ge=zg();function eje(t){for(var e=$Ge(t),r=e.length;r--;){var i=e[r],n=t[i];e[r]=[i,n,ZGe(n)]}return e}Yte.exports=eje});var GF=I((gdt,Jte)=>{function tje(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}Jte.exports=tje});var zte=I((fdt,Wte)=>{var rje=Gte(),ije=qte(),nje=GF();function sje(t){var e=ije(t);return e.length==1&&e[0][2]?nje(e[0][0],e[0][1]):function(r){return r===t||rje(r,t,e)}}Wte.exports=sje});var p0=I((hdt,Vte)=>{var oje=xd();function aje(t,e,r){var i=t==null?void 0:oje(t,e);return i===void 0?r:i}Vte.exports=aje});var Xte=I((pdt,_te)=>{var Aje=UF(),lje=p0(),cje=iF(),uje=WB(),gje=HF(),fje=GF(),hje=Sc(),pje=1,dje=2;function Cje(t,e){return uje(t)&&gje(e)?fje(hje(t),e):function(r){var i=lje(r,t);return i===void 0&&i===e?cje(r,t):Aje(e,i,pje|dje)}}_te.exports=Cje});var $te=I((ddt,Zte)=>{function mje(t){return function(e){return e==null?void 0:e[t]}}Zte.exports=mje});var tre=I((Cdt,ere)=>{var Ije=xd();function Eje(t){return function(e){return Ije(e,t)}}ere.exports=Eje});var ire=I((mdt,rre)=>{var yje=$te(),wje=tre(),Bje=WB(),Qje=Sc();function bje(t){return Bje(t)?yje(Qje(t)):wje(t)}rre.exports=bje});var jF=I((Idt,nre)=>{var vje=zte(),Sje=Xte(),xje=e0(),kje=As(),Pje=ire();function Dje(t){return typeof t=="function"?t:t==null?xje:typeof t=="object"?kje(t)?Sje(t[0],t[1]):vje(t):Pje(t)}nre.exports=Dje});var YF=I((Edt,sre)=>{var Rje=jg(),Fje=SF(),Nje=jF();function Lje(t,e){var r={};return e=Nje(e,3),Fje(t,function(i,n,s){Rje(r,n,e(i,n,s))}),r}sre.exports=Lje});var Yd=I((ydt,ore)=>{"use strict";function Pc(t){this._maxSize=t,this.clear()}Pc.prototype.clear=function(){this._size=0,this._values=Object.create(null)};Pc.prototype.get=function(t){return this._values[t]};Pc.prototype.set=function(t,e){return this._size>=this._maxSize&&this.clear(),t in this._values||this._size++,this._values[t]=e};var Tje=/[^.^\]^[]+|(?=\[\]|\.\.)/g,are=/^\d+$/,Mje=/^\d/,Oje=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,Kje=/^\s*(['"]?)(.*?)(\1)\s*$/,qF=512,Are=new Pc(qF),lre=new Pc(qF),cre=new Pc(qF);ore.exports={Cache:Pc,split:WF,normalizePath:JF,setter:function(t){var e=JF(t);return lre.get(t)||lre.set(t,function(i,n){for(var s=0,o=e.length,a=i;s{"use strict";Object.defineProperty(qd,"__esModule",{value:!0});qd.create=Yje;qd.default=void 0;var qje=Yd(),d0={context:"$",value:"."};function Yje(t,e){return new C0(t,e)}var C0=class{constructor(e,r={}){if(typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===d0.context,this.isValue=this.key[0]===d0.value,this.isSibling=!this.isContext&&!this.isValue;let i=this.isContext?d0.context:this.isValue?d0.value:"";this.path=this.key.slice(i.length),this.getter=this.path&&(0,qje.getter)(this.path,!0),this.map=r.map}getValue(e,r,i){let n=this.isContext?i:this.isValue?e:r;return this.getter&&(n=this.getter(n||{})),this.map&&(n=this.map(n)),n}cast(e,r){return this.getValue(e,r==null?void 0:r.parent,r==null?void 0:r.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}};qd.default=C0;C0.prototype.__isYupRef=!0});var ure=I(VF=>{"use strict";Object.defineProperty(VF,"__esModule",{value:!0});VF.default=Jje;var Wje=_F(YF()),m0=_F(xc()),zje=_F(Dc());function _F(t){return t&&t.__esModule?t:{default:t}}function I0(){return I0=Object.assign||function(t){for(var e=1;e=0)&&(r[n]=t[n]);return r}function Jje(t){function e(r,i){let{value:n,path:s="",label:o,options:a,originalValue:l,sync:c}=r,u=Vje(r,["value","path","label","options","originalValue","sync"]),{name:g,test:f,params:h,message:p}=t,{parent:d,context:m}=a;function E(L){return zje.default.isRef(L)?L.getValue(n,d,m):L}function B(L={}){let K=(0,Wje.default)(I0({value:n,originalValue:l,label:o,path:L.path||s},h,L.params),E),J=new m0.default(m0.default.formatError(L.message||p,K),n,K.path,L.type||g);return J.params=K,J}let b=I0({path:s,parent:d,type:g,createError:B,resolve:E,options:a,originalValue:l},u);if(!c){try{Promise.resolve(f.call(b,n,b)).then(L=>{m0.default.isError(L)?i(L):L?i(null,L):i(B())})}catch(L){i(L)}return}let R;try{var H;if(R=f.call(b,n,b),typeof((H=R)==null?void 0:H.then)=="function")throw new Error(`Validation test of type: "${b.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(L){i(L);return}m0.default.isError(R)?i(R):R?i(null,R):i(B())}return e.OPTIONS=t,e}});var XF=I(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.getIn=gre;Jd.default=void 0;var _je=Yd(),Xje=t=>t.substr(0,t.length-1).substr(1);function gre(t,e,r,i=r){let n,s,o;return e?((0,_je.forEach)(e,(a,l,c)=>{let u=l?Xje(a):a;if(t=t.resolve({context:i,parent:n,value:r}),t.innerType){let g=c?parseInt(u,10):0;if(r&&g>=r.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${a}, in the path: ${e}. because there is no value at that index. `);n=r,r=r&&r[g],t=t.innerType}if(!c){if(!t.fields||!t.fields[u])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${o} which is a type: "${t._type}")`);n=r,r=r&&r[u],t=t.fields[u]}s=u,o=l?"["+a+"]":"."+a}),{schema:t,parent:n,parentPath:s}):{parent:n,parentPath:e,schema:t}}var Zje=(t,e,r,i)=>gre(t,e,r,i).schema,$je=Zje;Jd.default=$je});var hre=I(E0=>{"use strict";Object.defineProperty(E0,"__esModule",{value:!0});E0.default=void 0;var fre=eYe(Dc());function eYe(t){return t&&t.__esModule?t:{default:t}}var y0=class{constructor(){this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){let e=[];for(let r of this.list)e.push(r);for(let[,r]of this.refs)e.push(r.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}add(e){fre.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){fre.default.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}has(e,r){if(this.list.has(e))return!0;let i,n=this.refs.values();for(;i=n.next(),!i.done;)if(r(i.value)===e)return!0;return!1}clone(){let e=new y0;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,r){let i=this.clone();return e.list.forEach(n=>i.add(n)),e.refs.forEach(n=>i.add(n)),r.list.forEach(n=>i.delete(n)),r.refs.forEach(n=>i.delete(n)),i}};E0.default=y0});var Ma=I(w0=>{"use strict";Object.defineProperty(w0,"__esModule",{value:!0});w0.default=void 0;var pre=Ta(M$()),Xg=La(),tYe=Ta(Z$()),dre=Ta(a0()),B0=Ta(ure()),Cre=Ta(Nd()),rYe=Ta(Dc()),iYe=XF(),nYe=Ta(IF()),mre=Ta(xc()),Ire=Ta(hre());function Ta(t){return t&&t.__esModule?t:{default:t}}function ds(){return ds=Object.assign||function(t){for(var e=1;e{this.typeError(Xg.mixed.notType)}),this.type=(e==null?void 0:e.type)||"mixed",this.spec=ds({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},e==null?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;let r=Object.create(Object.getPrototypeOf(this));return r.type=this.type,r._typeError=this._typeError,r._whitelistError=this._whitelistError,r._blacklistError=this._blacklistError,r._whitelist=this._whitelist.clone(),r._blacklist=this._blacklist.clone(),r.exclusiveTests=ds({},this.exclusiveTests),r.deps=[...this.deps],r.conditions=[...this.conditions],r.tests=[...this.tests],r.transforms=[...this.transforms],r.spec=(0,pre.default)(ds({},this.spec,e)),r}label(e){var r=this.clone();return r.spec.label=e,r}meta(...e){if(e.length===0)return this.spec.meta;let r=this.clone();return r.spec.meta=Object.assign(r.spec.meta||{},e[0]),r}withMutation(e){let r=this._mutate;this._mutate=!0;let i=e(this);return this._mutate=r,i}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let r=this,i=e.clone(),n=ds({},r.spec,i.spec);return i.spec=n,i._typeError||(i._typeError=r._typeError),i._whitelistError||(i._whitelistError=r._whitelistError),i._blacklistError||(i._blacklistError=r._blacklistError),i._whitelist=r._whitelist.merge(e._whitelist,e._blacklist),i._blacklist=r._blacklist.merge(e._blacklist,e._whitelist),i.tests=r.tests,i.exclusiveTests=r.exclusiveTests,i.withMutation(s=>{e.tests.forEach(o=>{s.test(o.OPTIONS)})}),i}isType(e){return this.spec.nullable&&e===null?!0:this._typeCheck(e)}resolve(e){let r=this;if(r.conditions.length){let i=r.conditions;r=r.clone(),r.conditions=[],r=i.reduce((n,s)=>s.resolve(n,e),r),r=r.resolve(e)}return r}cast(e,r={}){let i=this.resolve(ds({value:e},r)),n=i._cast(e,r);if(e!==void 0&&r.assert!==!1&&i.isType(n)!==!0){let s=(0,Cre.default)(e),o=(0,Cre.default)(n);throw new TypeError(`The value of ${r.path||"field"} could not be cast to a value that satisfies the schema type: "${i._type}". - -attempted value: ${s} -`+(o!==s?`result of cast: ${o}`:""))}return n}_cast(e,r){let i=e===void 0?e:this.transforms.reduce((n,s)=>s.call(this,n,e,this),e);return i===void 0&&(i=this.getDefault()),i}_validate(e,r={},i){let{sync:n,path:s,from:o=[],originalValue:a=e,strict:l=this.spec.strict,abortEarly:c=this.spec.abortEarly}=r,u=e;l||(u=this._cast(u,ds({assert:!1},r)));let g={value:u,path:s,options:r,originalValue:a,schema:this,label:this.spec.label,sync:n,from:o},f=[];this._typeError&&f.push(this._typeError),this._whitelistError&&f.push(this._whitelistError),this._blacklistError&&f.push(this._blacklistError),(0,dre.default)({args:g,value:u,path:s,sync:n,tests:f,endEarly:c},h=>{if(h)return void i(h,u);(0,dre.default)({tests:this.tests,args:g,path:s,sync:n,value:u,endEarly:c},i)})}validate(e,r,i){let n=this.resolve(ds({},r,{value:e}));return typeof i=="function"?n._validate(e,r,i):new Promise((s,o)=>n._validate(e,r,(a,l)=>{a?o(a):s(l)}))}validateSync(e,r){let i=this.resolve(ds({},r,{value:e})),n;return i._validate(e,ds({},r,{sync:!0}),(s,o)=>{if(s)throw s;n=o}),n}isValid(e,r){return this.validate(e,r).then(()=>!0,i=>{if(mre.default.isError(i))return!1;throw i})}isValidSync(e,r){try{return this.validateSync(e,r),!0}catch(i){if(mre.default.isError(i))return!1;throw i}}_getDefault(){let e=this.spec.default;return e==null?e:typeof e=="function"?e.call(this):(0,pre.default)(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){var r=this.clone();return r.spec.strict=e,r}_isPresent(e){return e!=null}defined(e=Xg.mixed.defined){return this.test({message:e,name:"defined",exclusive:!0,test(r){return r!==void 0}})}required(e=Xg.mixed.required){return this.clone({presence:"required"}).withMutation(r=>r.test({message:e,name:"required",exclusive:!0,test(i){return this.schema._isPresent(i)}}))}notRequired(){var e=this.clone({presence:"optional"});return e.tests=e.tests.filter(r=>r.OPTIONS.name!=="required"),e}nullable(e=!0){var r=this.clone({nullable:e!==!1});return r}transform(e){var r=this.clone();return r.transforms.push(e),r}test(...e){let r;if(e.length===1?typeof e[0]=="function"?r={test:e[0]}:r=e[0]:e.length===2?r={name:e[0],test:e[1]}:r={name:e[0],message:e[1],test:e[2]},r.message===void 0&&(r.message=Xg.mixed.default),typeof r.test!="function")throw new TypeError("`test` is a required parameters");let i=this.clone(),n=(0,B0.default)(r),s=r.exclusive||r.name&&i.exclusiveTests[r.name]===!0;if(r.exclusive&&!r.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return r.name&&(i.exclusiveTests[r.name]=!!r.exclusive),i.tests=i.tests.filter(o=>!(o.OPTIONS.name===r.name&&(s||o.OPTIONS.test===n.OPTIONS.test))),i.tests.push(n),i}when(e,r){!Array.isArray(e)&&typeof e!="string"&&(r=e,e=".");let i=this.clone(),n=(0,nYe.default)(e).map(s=>new rYe.default(s));return n.forEach(s=>{s.isSibling&&i.deps.push(s.key)}),i.conditions.push(new tYe.default(n,r)),i}typeError(e){var r=this.clone();return r._typeError=(0,B0.default)({message:e,name:"typeError",test(i){return i!==void 0&&!this.schema.isType(i)?this.createError({params:{type:this.schema._type}}):!0}}),r}oneOf(e,r=Xg.mixed.oneOf){var i=this.clone();return e.forEach(n=>{i._whitelist.add(n),i._blacklist.delete(n)}),i._whitelistError=(0,B0.default)({message:r,name:"oneOf",test(n){if(n===void 0)return!0;let s=this.schema._whitelist;return s.has(n,this.resolve)?!0:this.createError({params:{values:s.toArray().join(", ")}})}}),i}notOneOf(e,r=Xg.mixed.notOneOf){var i=this.clone();return e.forEach(n=>{i._blacklist.add(n),i._whitelist.delete(n)}),i._blacklistError=(0,B0.default)({message:r,name:"notOneOf",test(n){let s=this.schema._blacklist;return s.has(n,this.resolve)?this.createError({params:{values:s.toArray().join(", ")}}):!0}}),i}strip(e=!0){let r=this.clone();return r.spec.strip=e,r}describe(){let e=this.clone(),{label:r,meta:i}=e.spec;return{meta:i,label:r,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map(s=>({name:s.OPTIONS.name,params:s.OPTIONS.params})).filter((s,o,a)=>a.findIndex(l=>l.name===s.name)===o)}}};w0.default=Do;Do.prototype.__isYupSchema__=!0;for(let t of["validate","validateSync"])Do.prototype[`${t}At`]=function(e,r,i={}){let{parent:n,parentPath:s,schema:o}=(0,iYe.getIn)(this,e,r,i.context);return o[t](n&&n[s],ds({},i,{parent:n,path:e}))};for(let t of["equals","is"])Do.prototype[t]=Do.prototype.oneOf;for(let t of["not","nope"])Do.prototype[t]=Do.prototype.notOneOf;Do.prototype.optional=Do.prototype.notRequired});var yre=I(Wd=>{"use strict";Object.defineProperty(Wd,"__esModule",{value:!0});Wd.create=Ere;Wd.default=void 0;var oYe=sYe(Ma());function sYe(t){return t&&t.__esModule?t:{default:t}}var ZF=oYe.default,aYe=ZF;Wd.default=aYe;function Ere(){return new ZF}Ere.prototype=ZF.prototype});var Zg=I(Q0=>{"use strict";Object.defineProperty(Q0,"__esModule",{value:!0});Q0.default=void 0;var AYe=t=>t==null;Q0.default=AYe});var vre=I(zd=>{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.create=wre;zd.default=void 0;var lYe=Bre(Ma()),Qre=La(),bre=Bre(Zg());function Bre(t){return t&&t.__esModule?t:{default:t}}function wre(){return new b0}var b0=class extends lYe.default{constructor(){super({type:"boolean"});this.withMutation(()=>{this.transform(function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e})})}_typeCheck(e){return e instanceof Boolean&&(e=e.valueOf()),typeof e=="boolean"}isTrue(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(r){return(0,bre.default)(r)||r===!0}})}isFalse(e=Qre.boolean.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(r){return(0,bre.default)(r)||r===!1}})}};zd.default=b0;wre.prototype=b0.prototype});var kre=I(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});Vd.create=Sre;Vd.default=void 0;var Ro=La(),Oa=xre(Zg()),cYe=xre(Ma());function xre(t){return t&&t.__esModule?t:{default:t}}var uYe=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,gYe=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,fYe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,hYe=t=>(0,Oa.default)(t)||t===t.trim(),pYe={}.toString();function Sre(){return new v0}var v0=class extends cYe.default{constructor(){super({type:"string"});this.withMutation(()=>{this.transform(function(e){if(this.isType(e)||Array.isArray(e))return e;let r=e!=null&&e.toString?e.toString():e;return r===pYe?e:r})})}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,r=Ro.string.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,Oa.default)(i)||i.length===this.resolve(e)}})}min(e,r=Ro.string.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Oa.default)(i)||i.length>=this.resolve(e)}})}max(e,r=Ro.string.max){return this.test({name:"max",exclusive:!0,message:r,params:{max:e},test(i){return(0,Oa.default)(i)||i.length<=this.resolve(e)}})}matches(e,r){let i=!1,n,s;return r&&(typeof r=="object"?{excludeEmptyString:i=!1,message:n,name:s}=r:n=r),this.test({name:s||"matches",message:n||Ro.string.matches,params:{regex:e},test:o=>(0,Oa.default)(o)||o===""&&i||o.search(e)!==-1})}email(e=Ro.string.email){return this.matches(uYe,{name:"email",message:e,excludeEmptyString:!0})}url(e=Ro.string.url){return this.matches(gYe,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Ro.string.uuid){return this.matches(fYe,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Ro.string.trim){return this.transform(r=>r!=null?r.trim():r).test({message:e,name:"trim",test:hYe})}lowercase(e=Ro.string.lowercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toLowerCase()})}uppercase(e=Ro.string.uppercase){return this.transform(r=>(0,Oa.default)(r)?r:r.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,test:r=>(0,Oa.default)(r)||r===r.toUpperCase()})}};Vd.default=v0;Sre.prototype=v0.prototype});var Rre=I(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.create=Pre;_d.default=void 0;var Rc=La(),Fc=Dre(Zg()),dYe=Dre(Ma());function Dre(t){return t&&t.__esModule?t:{default:t}}var CYe=t=>t!=+t;function Pre(){return new S0}var S0=class extends dYe.default{constructor(){super({type:"number"});this.withMutation(()=>{this.transform(function(e){let r=e;if(typeof r=="string"){if(r=r.replace(/\s/g,""),r==="")return NaN;r=+r}return this.isType(r)?r:parseFloat(r)})})}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),typeof e=="number"&&!CYe(e)}min(e,r=Rc.number.min){return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,Fc.default)(i)||i>=this.resolve(e)}})}max(e,r=Rc.number.max){return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,Fc.default)(i)||i<=this.resolve(e)}})}lessThan(e,r=Rc.number.lessThan){return this.test({message:r,name:"max",exclusive:!0,params:{less:e},test(i){return(0,Fc.default)(i)||ithis.resolve(e)}})}positive(e=Rc.number.positive){return this.moreThan(0,e)}negative(e=Rc.number.negative){return this.lessThan(0,e)}integer(e=Rc.number.integer){return this.test({name:"integer",message:e,test:r=>(0,Fc.default)(r)||Number.isInteger(r)})}truncate(){return this.transform(e=>(0,Fc.default)(e)?e:e|0)}round(e){var r,i=["ceil","floor","round","trunc"];if(e=((r=e)==null?void 0:r.toLowerCase())||"round",e==="trunc")return this.truncate();if(i.indexOf(e.toLowerCase())===-1)throw new TypeError("Only valid options for round() are: "+i.join(", "));return this.transform(n=>(0,Fc.default)(n)?n:Math[e](n))}};_d.default=S0;Pre.prototype=S0.prototype});var Fre=I($F=>{"use strict";Object.defineProperty($F,"__esModule",{value:!0});$F.default=mYe;var IYe=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;function mYe(t){var e=[1,4,5,6,7,10,11],r=0,i,n;if(n=IYe.exec(t)){for(var s=0,o;o=e[s];++s)n[o]=+n[o]||0;n[2]=(+n[2]||1)-1,n[3]=+n[3]||1,n[7]=n[7]?String(n[7]).substr(0,3):0,(n[8]===void 0||n[8]==="")&&(n[9]===void 0||n[9]==="")?i=+new Date(n[1],n[2],n[3],n[4],n[5],n[6],n[7]):(n[8]!=="Z"&&n[9]!==void 0&&(r=n[10]*60+n[11],n[9]==="+"&&(r=0-r)),i=Date.UTC(n[1],n[2],n[3],n[4],n[5]+r,n[6],n[7]))}else i=Date.parse?Date.parse(t):NaN;return i}});var Tre=I(Xd=>{"use strict";Object.defineProperty(Xd,"__esModule",{value:!0});Xd.create=eN;Xd.default=void 0;var EYe=x0(Fre()),Nre=La(),Lre=x0(Zg()),yYe=x0(Dc()),wYe=x0(Ma());function x0(t){return t&&t.__esModule?t:{default:t}}var tN=new Date(""),BYe=t=>Object.prototype.toString.call(t)==="[object Date]";function eN(){return new Zd}var Zd=class extends wYe.default{constructor(){super({type:"date"});this.withMutation(()=>{this.transform(function(e){return this.isType(e)?e:(e=(0,EYe.default)(e),isNaN(e)?tN:new Date(e))})})}_typeCheck(e){return BYe(e)&&!isNaN(e.getTime())}prepareParam(e,r){let i;if(yYe.default.isRef(e))i=e;else{let n=this.cast(e);if(!this._typeCheck(n))throw new TypeError(`\`${r}\` must be a Date or a value that can be \`cast()\` to a Date`);i=n}return i}min(e,r=Nre.date.min){let i=this.prepareParam(e,"min");return this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(n){return(0,Lre.default)(n)||n>=this.resolve(i)}})}max(e,r=Nre.date.max){var i=this.prepareParam(e,"max");return this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(n){return(0,Lre.default)(n)||n<=this.resolve(i)}})}};Xd.default=Zd;Zd.INVALID_DATE=tN;eN.prototype=Zd.prototype;eN.INVALID_DATE=tN});var Ore=I((Ndt,Mre)=>{function QYe(t,e,r,i){var n=-1,s=t==null?0:t.length;for(i&&s&&(r=t[++n]);++n{function bYe(t){return function(e){return t==null?void 0:t[e]}}Kre.exports=bYe});var Gre=I((Tdt,Hre)=>{var vYe=Ure(),SYe={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},xYe=vYe(SYe);Hre.exports=xYe});var Yre=I((Mdt,jre)=>{var kYe=Gre(),PYe=gg(),DYe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,RYe="\\u0300-\\u036f",FYe="\\ufe20-\\ufe2f",NYe="\\u20d0-\\u20ff",LYe=RYe+FYe+NYe,TYe="["+LYe+"]",MYe=RegExp(TYe,"g");function OYe(t){return t=PYe(t),t&&t.replace(DYe,kYe).replace(MYe,"")}jre.exports=OYe});var Jre=I((Odt,qre)=>{var KYe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;function UYe(t){return t.match(KYe)||[]}qre.exports=UYe});var zre=I((Kdt,Wre)=>{var HYe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;function GYe(t){return HYe.test(t)}Wre.exports=GYe});var fie=I((Udt,Vre)=>{var _re="\\ud800-\\udfff",jYe="\\u0300-\\u036f",YYe="\\ufe20-\\ufe2f",qYe="\\u20d0-\\u20ff",JYe=jYe+YYe+qYe,Xre="\\u2700-\\u27bf",Zre="a-z\\xdf-\\xf6\\xf8-\\xff",WYe="\\xac\\xb1\\xd7\\xf7",zYe="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",VYe="\\u2000-\\u206f",_Ye=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",$re="A-Z\\xc0-\\xd6\\xd8-\\xde",XYe="\\ufe0e\\ufe0f",eie=WYe+zYe+VYe+_Ye,tie="['\u2019]",rie="["+eie+"]",ZYe="["+JYe+"]",iie="\\d+",$Ye="["+Xre+"]",nie="["+Zre+"]",sie="[^"+_re+eie+iie+Xre+Zre+$re+"]",eqe="\\ud83c[\\udffb-\\udfff]",tqe="(?:"+ZYe+"|"+eqe+")",rqe="[^"+_re+"]",oie="(?:\\ud83c[\\udde6-\\uddff]){2}",aie="[\\ud800-\\udbff][\\udc00-\\udfff]",$g="["+$re+"]",iqe="\\u200d",Aie="(?:"+nie+"|"+sie+")",nqe="(?:"+$g+"|"+sie+")",lie="(?:"+tie+"(?:d|ll|m|re|s|t|ve))?",cie="(?:"+tie+"(?:D|LL|M|RE|S|T|VE))?",uie=tqe+"?",gie="["+XYe+"]?",sqe="(?:"+iqe+"(?:"+[rqe,oie,aie].join("|")+")"+gie+uie+")*",oqe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",aqe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Aqe=gie+uie+sqe,lqe="(?:"+[$Ye,oie,aie].join("|")+")"+Aqe,cqe=RegExp([$g+"?"+nie+"+"+lie+"(?="+[rie,$g,"$"].join("|")+")",nqe+"+"+cie+"(?="+[rie,$g+Aie,"$"].join("|")+")",$g+"?"+Aie+"+"+lie,$g+"+"+cie,aqe,oqe,iie,lqe].join("|"),"g");function uqe(t){return t.match(cqe)||[]}Vre.exports=uqe});var pie=I((Hdt,hie)=>{var gqe=Jre(),fqe=zre(),hqe=gg(),pqe=fie();function dqe(t,e,r){return t=hqe(t),e=r?void 0:e,e===void 0?fqe(t)?pqe(t):gqe(t):t.match(e)||[]}hie.exports=dqe});var rN=I((Gdt,die)=>{var Cqe=Ore(),mqe=Yre(),Iqe=pie(),Eqe="['\u2019]",yqe=RegExp(Eqe,"g");function wqe(t){return function(e){return Cqe(Iqe(mqe(e).replace(yqe,"")),t,"")}}die.exports=wqe});var mie=I((jdt,Cie)=>{var Bqe=rN(),Qqe=Bqe(function(t,e,r){return t+(r?"_":"")+e.toLowerCase()});Cie.exports=Qqe});var Eie=I((Ydt,Iie)=>{var bqe=ZP(),vqe=rN(),Sqe=vqe(function(t,e,r){return e=e.toLowerCase(),t+(r?bqe(e):e)});Iie.exports=Sqe});var wie=I((qdt,yie)=>{var xqe=jg(),kqe=SF(),Pqe=jF();function Dqe(t,e){var r={};return e=Pqe(e,3),kqe(t,function(i,n,s){xqe(r,e(i,n,s),i)}),r}yie.exports=Dqe});var Qie=I((Jdt,iN)=>{iN.exports=function(t){return Bie(Rqe(t),t)};iN.exports.array=Bie;function Bie(t,e){var r=t.length,i=new Array(r),n={},s=r,o=Fqe(e),a=Nqe(t);for(e.forEach(function(c){if(!a.has(c[0])||!a.has(c[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});s--;)n[s]||l(t[s],s,new Set);return i;function l(c,u,g){if(g.has(c)){var f;try{f=", node was:"+JSON.stringify(c)}catch(d){f=""}throw new Error("Cyclic dependency"+f)}if(!a.has(c))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(c));if(!n[u]){n[u]=!0;var h=o.get(c)||new Set;if(h=Array.from(h),u=h.length){g.add(c);do{var p=h[--u];l(p,a.get(p),g)}while(u);g.delete(c)}i[--r]=c}}}function Rqe(t){for(var e=new Set,r=0,i=t.length;r{"use strict";Object.defineProperty(nN,"__esModule",{value:!0});nN.default=Lqe;var Tqe=k0(Ld()),Mqe=k0(Qie()),Oqe=Yd(),Kqe=k0(Dc()),Uqe=k0(qg());function k0(t){return t&&t.__esModule?t:{default:t}}function Lqe(t,e=[]){let r=[],i=[];function n(s,o){var a=(0,Oqe.split)(s)[0];~i.indexOf(a)||i.push(a),~e.indexOf(`${o}-${a}`)||r.push([o,a])}for(let s in t)if((0,Tqe.default)(t,s)){let o=t[s];~i.indexOf(s)||i.push(s),Kqe.default.isRef(o)&&o.isSibling?n(o.path,s):(0,Uqe.default)(o)&&"deps"in o&&o.deps.forEach(a=>n(a,s))}return Mqe.default.array(i,r).reverse()}});var Sie=I(sN=>{"use strict";Object.defineProperty(sN,"__esModule",{value:!0});sN.default=Hqe;function vie(t,e){let r=Infinity;return t.some((i,n)=>{var s;if(((s=e.path)==null?void 0:s.indexOf(i))!==-1)return r=n,!0}),r}function Hqe(t){return(e,r)=>vie(t,e)-vie(t,r)}});var Nie=I($d=>{"use strict";Object.defineProperty($d,"__esModule",{value:!0});$d.create=xie;$d.default=void 0;var kie=Fo(Ld()),Pie=Fo(mie()),Gqe=Fo(Eie()),jqe=Fo(wie()),Yqe=Fo(YF()),qqe=Yd(),Die=La(),Jqe=Fo(bie()),Rie=Fo(Sie()),Wqe=Fo(a0()),zqe=Fo(xc()),oN=Fo(Ma());function Fo(t){return t&&t.__esModule?t:{default:t}}function ef(){return ef=Object.assign||function(t){for(var e=1;eObject.prototype.toString.call(t)==="[object Object]";function Vqe(t,e){let r=Object.keys(t.fields);return Object.keys(e).filter(i=>r.indexOf(i)===-1)}var _qe=(0,Rie.default)([]),P0=class extends oN.default{constructor(e){super({type:"object"});this.fields=Object.create(null),this._sortErrors=_qe,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{this.transform(function(i){if(typeof i=="string")try{i=JSON.parse(i)}catch(n){i=null}return this.isType(i)?i:null}),e&&this.shape(e)})}_typeCheck(e){return Fie(e)||typeof e=="function"}_cast(e,r={}){var i;let n=super._cast(e,r);if(n===void 0)return this.getDefault();if(!this._typeCheck(n))return n;let s=this.fields,o=(i=r.stripUnknown)!=null?i:this.spec.noUnknown,a=this._nodes.concat(Object.keys(n).filter(g=>this._nodes.indexOf(g)===-1)),l={},c=ef({},r,{parent:l,__validating:r.__validating||!1}),u=!1;for(let g of a){let f=s[g],h=(0,kie.default)(n,g);if(f){let p,d=n[g];c.path=(r.path?`${r.path}.`:"")+g,f=f.resolve({value:d,context:r.context,parent:l});let m="spec"in f?f.spec:void 0,E=m==null?void 0:m.strict;if(m==null?void 0:m.strip){u=u||g in n;continue}p=!r.__validating||!E?f.cast(n[g],c):n[g],p!==void 0&&(l[g]=p)}else h&&!o&&(l[g]=n[g]);l[g]!==n[g]&&(u=!0)}return u?l:n}_validate(e,r={},i){let n=[],{sync:s,from:o=[],originalValue:a=e,abortEarly:l=this.spec.abortEarly,recursive:c=this.spec.recursive}=r;o=[{schema:this,value:a},...o],r.__validating=!0,r.originalValue=a,r.from=o,super._validate(e,r,(u,g)=>{if(u){if(!zqe.default.isError(u)||l)return void i(u,g);n.push(u)}if(!c||!Fie(g)){i(n[0]||null,g);return}a=a||g;let f=this._nodes.map(h=>(p,d)=>{let m=h.indexOf(".")===-1?(r.path?`${r.path}.`:"")+h:`${r.path||""}["${h}"]`,E=this.fields[h];if(E&&"validate"in E){E.validate(g[h],ef({},r,{path:m,from:o,strict:!0,parent:g,originalValue:a[h]}),d);return}d(null)});(0,Wqe.default)({sync:s,tests:f,value:g,errors:n,endEarly:l,sort:this._sortErrors,path:r.path},i)})}clone(e){let r=super.clone(e);return r.fields=ef({},this.fields),r._nodes=this._nodes,r._excludedEdges=this._excludedEdges,r._sortErrors=this._sortErrors,r}concat(e){let r=super.concat(e),i=r.fields;for(let[n,s]of Object.entries(this.fields)){let o=i[n];o===void 0?i[n]=s:o instanceof oN.default&&s instanceof oN.default&&(i[n]=s.concat(o))}return r.withMutation(()=>r.shape(i))}getDefaultFromShape(){let e={};return this._nodes.forEach(r=>{let i=this.fields[r];e[r]="default"in i?i.getDefault():void 0}),e}_getDefault(){if("default"in this.spec)return super._getDefault();if(!!this._nodes.length)return this.getDefaultFromShape()}shape(e,r=[]){let i=this.clone(),n=Object.assign(i.fields,e);if(i.fields=n,i._sortErrors=(0,Rie.default)(Object.keys(n)),r.length){Array.isArray(r[0])||(r=[r]);let s=r.map(([o,a])=>`${o}-${a}`);i._excludedEdges=i._excludedEdges.concat(s)}return i._nodes=(0,Jqe.default)(n,i._excludedEdges),i}pick(e){let r={};for(let i of e)this.fields[i]&&(r[i]=this.fields[i]);return this.clone().withMutation(i=>(i.fields={},i.shape(r)))}omit(e){let r=this.clone(),i=r.fields;r.fields={};for(let n of e)delete i[n];return r.withMutation(()=>r.shape(i))}from(e,r,i){let n=(0,qqe.getter)(e,!0);return this.transform(s=>{if(s==null)return s;let o=s;return(0,kie.default)(s,e)&&(o=ef({},s),i||delete o[e],o[r]=n(s)),o})}noUnknown(e=!0,r=Die.object.noUnknown){typeof e=="string"&&(r=e,e=!0);let i=this.test({name:"noUnknown",exclusive:!0,message:r,test(n){if(n==null)return!0;let s=Vqe(this.schema,n);return!e||s.length===0||this.createError({params:{unknown:s.join(", ")}})}});return i.spec.noUnknown=e,i}unknown(e=!0,r=Die.object.noUnknown){return this.noUnknown(!e,r)}transformKeys(e){return this.transform(r=>r&&(0,jqe.default)(r,(i,n)=>e(n)))}camelCase(){return this.transformKeys(Gqe.default)}snakeCase(){return this.transformKeys(Pie.default)}constantCase(){return this.transformKeys(e=>(0,Pie.default)(e).toUpperCase())}describe(){let e=super.describe();return e.fields=(0,Yqe.default)(this.fields,r=>r.describe()),e}};$d.default=P0;function xie(t){return new P0(t)}xie.prototype=P0.prototype});var Tie=I(eC=>{"use strict";Object.defineProperty(eC,"__esModule",{value:!0});eC.create=Lie;eC.default=void 0;var aN=tf(Zg()),Xqe=tf(qg()),Zqe=tf(Nd()),AN=La(),$qe=tf(a0()),eJe=tf(xc()),tJe=tf(Ma());function tf(t){return t&&t.__esModule?t:{default:t}}function D0(){return D0=Object.assign||function(t){for(var e=1;e{this.transform(function(r){if(typeof r=="string")try{r=JSON.parse(r)}catch(i){r=null}return this.isType(r)?r:null})})}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,r){let i=super._cast(e,r);if(!this._typeCheck(i)||!this.innerType)return i;let n=!1,s=i.map((o,a)=>{let l=this.innerType.cast(o,D0({},r,{path:`${r.path||""}[${a}]`}));return l!==o&&(n=!0),l});return n?s:i}_validate(e,r={},i){var n,s;let o=[],a=r.sync,l=r.path,c=this.innerType,u=(n=r.abortEarly)!=null?n:this.spec.abortEarly,g=(s=r.recursive)!=null?s:this.spec.recursive,f=r.originalValue!=null?r.originalValue:e;super._validate(e,r,(h,p)=>{if(h){if(!eJe.default.isError(h)||u)return void i(h,p);o.push(h)}if(!g||!c||!this._typeCheck(p)){i(o[0]||null,p);return}f=f||p;let d=new Array(p.length);for(let m=0;mc.validate(E,b,H)}(0,$qe.default)({sync:a,path:l,value:p,errors:o,endEarly:u,tests:d},i)})}clone(e){let r=super.clone(e);return r.innerType=this.innerType,r}concat(e){let r=super.concat(e);return r.innerType=this.innerType,e.innerType&&(r.innerType=r.innerType?r.innerType.concat(e.innerType):e.innerType),r}of(e){let r=this.clone();if(!(0,Xqe.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+(0,Zqe.default)(e));return r.innerType=e,r}length(e,r=AN.array.length){return this.test({message:r,name:"length",exclusive:!0,params:{length:e},test(i){return(0,aN.default)(i)||i.length===this.resolve(e)}})}min(e,r){return r=r||AN.array.min,this.test({message:r,name:"min",exclusive:!0,params:{min:e},test(i){return(0,aN.default)(i)||i.length>=this.resolve(e)}})}max(e,r){return r=r||AN.array.max,this.test({message:r,name:"max",exclusive:!0,params:{max:e},test(i){return(0,aN.default)(i)||i.length<=this.resolve(e)}})}ensure(){return this.default(()=>[]).transform((e,r)=>this._typeCheck(e)?e:r==null?[]:[].concat(r))}compact(e){let r=e?(i,n,s)=>!e(i,n,s):i=>!!i;return this.transform(i=>i!=null?i.filter(r):i)}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}};eC.default=R0;Lie.prototype=R0.prototype});var Mie=I(tC=>{"use strict";Object.defineProperty(tC,"__esModule",{value:!0});tC.create=rJe;tC.default=void 0;var nJe=iJe(qg());function iJe(t){return t&&t.__esModule?t:{default:t}}function rJe(t){return new lN(t)}var lN=class{constructor(e){this.type="lazy",this.__isYupSchema__=!0,this._resolve=(r,i={})=>{let n=this.builder(r,i);if(!(0,nJe.default)(n))throw new TypeError("lazy() functions must return a valid schema");return n.resolve(i)},this.builder=e}resolve(e){return this._resolve(e.value,e)}cast(e,r){return this._resolve(e,r).cast(e,r)}validate(e,r,i){return this._resolve(e,r).validate(e,r,i)}validateSync(e,r){return this._resolve(e,r).validateSync(e,r)}validateAt(e,r,i){return this._resolve(r,i).validateAt(e,r,i)}validateSyncAt(e,r,i){return this._resolve(r,i).validateSyncAt(e,r,i)}describe(){return null}isValid(e,r){return this._resolve(e,r).isValid(e,r)}isValidSync(e,r){return this._resolve(e,r).isValidSync(e,r)}},sJe=lN;tC.default=sJe});var Oie=I(cN=>{"use strict";Object.defineProperty(cN,"__esModule",{value:!0});cN.default=oJe;var AJe=aJe(La());function aJe(t){return t&&t.__esModule?t:{default:t}}function oJe(t){Object.keys(t).forEach(e=>{Object.keys(t[e]).forEach(r=>{AJe.default[e][r]=t[e][r]})})}});var gN=I(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.addMethod=lJe;Object.defineProperty(cr,"MixedSchema",{enumerable:!0,get:function(){return Kie.default}});Object.defineProperty(cr,"mixed",{enumerable:!0,get:function(){return Kie.create}});Object.defineProperty(cr,"BooleanSchema",{enumerable:!0,get:function(){return uN.default}});Object.defineProperty(cr,"bool",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"boolean",{enumerable:!0,get:function(){return uN.create}});Object.defineProperty(cr,"StringSchema",{enumerable:!0,get:function(){return Uie.default}});Object.defineProperty(cr,"string",{enumerable:!0,get:function(){return Uie.create}});Object.defineProperty(cr,"NumberSchema",{enumerable:!0,get:function(){return Hie.default}});Object.defineProperty(cr,"number",{enumerable:!0,get:function(){return Hie.create}});Object.defineProperty(cr,"DateSchema",{enumerable:!0,get:function(){return Gie.default}});Object.defineProperty(cr,"date",{enumerable:!0,get:function(){return Gie.create}});Object.defineProperty(cr,"ObjectSchema",{enumerable:!0,get:function(){return jie.default}});Object.defineProperty(cr,"object",{enumerable:!0,get:function(){return jie.create}});Object.defineProperty(cr,"ArraySchema",{enumerable:!0,get:function(){return Yie.default}});Object.defineProperty(cr,"array",{enumerable:!0,get:function(){return Yie.create}});Object.defineProperty(cr,"ref",{enumerable:!0,get:function(){return cJe.create}});Object.defineProperty(cr,"lazy",{enumerable:!0,get:function(){return uJe.create}});Object.defineProperty(cr,"ValidationError",{enumerable:!0,get:function(){return gJe.default}});Object.defineProperty(cr,"reach",{enumerable:!0,get:function(){return fJe.default}});Object.defineProperty(cr,"isSchema",{enumerable:!0,get:function(){return qie.default}});Object.defineProperty(cr,"setLocale",{enumerable:!0,get:function(){return hJe.default}});Object.defineProperty(cr,"BaseSchema",{enumerable:!0,get:function(){return pJe.default}});var Kie=Nc(yre()),uN=Nc(vre()),Uie=Nc(kre()),Hie=Nc(Rre()),Gie=Nc(Tre()),jie=Nc(Nie()),Yie=Nc(Tie()),cJe=Dc(),uJe=Mie(),gJe=rC(xc()),fJe=rC(XF()),qie=rC(qg()),hJe=rC(Oie()),pJe=rC(Ma());function rC(t){return t&&t.__esModule?t:{default:t}}function Jie(){if(typeof WeakMap!="function")return null;var t=new WeakMap;return Jie=function(){return t},t}function Nc(t){if(t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var e=Jie();if(e&&e.has(t))return e.get(t);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var s=i?Object.getOwnPropertyDescriptor(t,n):null;s&&(s.get||s.set)?Object.defineProperty(r,n,s):r[n]=t[n]}return r.default=t,e&&e.set(t,r),r}function lJe(t,e,r){if(!t||!(0,qie.default)(t.prototype))throw new TypeError("You must provide a yup schema constructor function");if(typeof e!="string")throw new TypeError("A Method name must be provided");if(typeof r!="function")throw new TypeError("Method function must be provided");t.prototype[e]=r}});var Xie=I((gCt,nC)=>{"use strict";var mJe=process.env.TERM_PROGRAM==="Hyper",IJe=process.platform==="win32",zie=process.platform==="linux",fN={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},Vie=Object.assign({},fN,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),_ie=Object.assign({},fN,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:zie?"\u25B8":"\u276F",pointerSmall:zie?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});nC.exports=IJe&&!mJe?Vie:_ie;Reflect.defineProperty(nC.exports,"common",{enumerable:!1,value:fN});Reflect.defineProperty(nC.exports,"windows",{enumerable:!1,value:Vie});Reflect.defineProperty(nC.exports,"other",{enumerable:!1,value:_ie})});var js=I((fCt,hN)=>{"use strict";var EJe=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),yJe=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Zie=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=s=>{let o=s.open=`[${s.codes[0]}m`,a=s.close=`[${s.codes[1]}m`,l=s.regex=new RegExp(`\\u001b\\[${s.codes[1]}m`,"g");return s.wrap=(c,u)=>{c.includes(a)&&(c=c.replace(l,a+o));let g=o+c+a;return u?g.replace(/\r*\n/g,`${a}$&${o}`):g},s},r=(s,o,a)=>typeof s=="function"?s(o):s.wrap(o,a),i=(s,o)=>{if(s===""||s==null)return"";if(t.enabled===!1)return s;if(t.visible===!1)return"";let a=""+s,l=a.includes(` -`),c=o.length;for(c>0&&o.includes("unstyle")&&(o=[...new Set(["unstyle",...o])].reverse());c-- >0;)a=r(t.styles[o[c]],a,l);return a},n=(s,o,a)=>{t.styles[s]=e({name:s,codes:o}),(t.keys[a]||(t.keys[a]=[])).push(s),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(c){t.alias(s,c)},get(){let c=u=>i(u,c.stack);return Reflect.setPrototypeOf(c,t),c.stack=this.stack?this.stack.concat(s):[s],c}})};return n("reset",[0,0],"modifier"),n("bold",[1,22],"modifier"),n("dim",[2,22],"modifier"),n("italic",[3,23],"modifier"),n("underline",[4,24],"modifier"),n("inverse",[7,27],"modifier"),n("hidden",[8,28],"modifier"),n("strikethrough",[9,29],"modifier"),n("black",[30,39],"color"),n("red",[31,39],"color"),n("green",[32,39],"color"),n("yellow",[33,39],"color"),n("blue",[34,39],"color"),n("magenta",[35,39],"color"),n("cyan",[36,39],"color"),n("white",[37,39],"color"),n("gray",[90,39],"color"),n("grey",[90,39],"color"),n("bgBlack",[40,49],"bg"),n("bgRed",[41,49],"bg"),n("bgGreen",[42,49],"bg"),n("bgYellow",[43,49],"bg"),n("bgBlue",[44,49],"bg"),n("bgMagenta",[45,49],"bg"),n("bgCyan",[46,49],"bg"),n("bgWhite",[47,49],"bg"),n("blackBright",[90,39],"bright"),n("redBright",[91,39],"bright"),n("greenBright",[92,39],"bright"),n("yellowBright",[93,39],"bright"),n("blueBright",[94,39],"bright"),n("magentaBright",[95,39],"bright"),n("cyanBright",[96,39],"bright"),n("whiteBright",[97,39],"bright"),n("bgBlackBright",[100,49],"bgBright"),n("bgRedBright",[101,49],"bgBright"),n("bgGreenBright",[102,49],"bgBright"),n("bgYellowBright",[103,49],"bgBright"),n("bgBlueBright",[104,49],"bgBright"),n("bgMagentaBright",[105,49],"bgBright"),n("bgCyanBright",[106,49],"bgBright"),n("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=yJe,t.hasColor=t.hasAnsi=s=>(t.ansiRegex.lastIndex=0,typeof s=="string"&&s!==""&&t.ansiRegex.test(s)),t.alias=(s,o)=>{let a=typeof o=="string"?t[o]:o;if(typeof a!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");a.stack||(Reflect.defineProperty(a,"name",{value:s}),t.styles[s]=a,a.stack=[s]),Reflect.defineProperty(t,s,{configurable:!0,enumerable:!0,set(l){t.alias(s,l)},get(){let l=c=>i(c,l.stack);return Reflect.setPrototypeOf(l,t),l.stack=this.stack?this.stack.concat(a.stack):a.stack,l}})},t.theme=s=>{if(!EJe(s))throw new TypeError("Expected theme to be an object");for(let o of Object.keys(s))t.alias(o,s[o]);return t},t.alias("unstyle",s=>typeof s=="string"&&s!==""?(t.ansiRegex.lastIndex=0,s.replace(t.ansiRegex,"")):""),t.alias("noop",s=>s),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Xie(),t.define=n,t};hN.exports=Zie();hN.exports.create=Zie});var Mi=I(bt=>{"use strict";var wJe=Object.prototype.toString,Cs=js(),$ie=!1,pN=[],ene={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};bt.longest=(t,e)=>t.reduce((r,i)=>Math.max(r,e?i[e].length:i.length),0);bt.hasColor=t=>!!t&&Cs.hasColor(t);var N0=bt.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);bt.nativeType=t=>wJe.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");bt.isAsyncFn=t=>bt.nativeType(t)==="asyncfunction";bt.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";bt.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;bt.scrollDown=(t=[])=>[...t.slice(1),t[0]];bt.scrollUp=(t=[])=>[t.pop(),...t];bt.reorder=(t=[])=>{let e=t.slice();return e.sort((r,i)=>r.index>i.index?1:r.index{let i=t.length,n=r===i?0:r<0?i-1:r,s=t[e];t[e]=t[n],t[n]=s};bt.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};bt.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};bt.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:i=` -`+r,width:n=80}=e;n-=((i+r).match(/[^\S\n]/g)||[]).length;let o=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,a=t.trim(),l=new RegExp(o,"g"),c=a.match(l)||[];return c=c.map(u=>u.replace(/\n$/,"")),e.padEnd&&(c=c.map(u=>u.padEnd(n," "))),e.padStart&&(c=c.map(u=>u.padStart(n," "))),r+c.join(i)};bt.unmute=t=>{let e=t.stack.find(i=>Cs.keys.color.includes(i));return e?Cs[e]:t.stack.find(i=>i.slice(2)==="bg")?Cs[e.slice(2)]:i=>i};bt.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";bt.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i));if(e){let i=Cs["bg"+bt.pascal(e)];return i?i.black:t}let r=t.stack.find(i=>i.slice(0,2)==="bg");return r?Cs[r.slice(2).toLowerCase()]||t:Cs.none};bt.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(i=>Cs.keys.color.includes(i)),r=t.stack.find(i=>i.slice(0,2)==="bg");if(e&&!r)return Cs[ene[e]||e];if(r){let i=r.slice(2).toLowerCase(),n=ene[i];return n&&Cs["bg"+bt.pascal(n)]||t}return Cs.none};bt.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),i=e>=12?"pm":"am";e=e%12;let n=e===0?12:e,s=r<10?"0"+r:r;return n+":"+s+" "+i};bt.set=(t={},e="",r)=>e.split(".").reduce((i,n,s,o)=>{let a=o.length-1>s?i[n]||{}:r;return!bt.isObject(a)&&s{let i=t[e]==null?e.split(".").reduce((n,s)=>n&&n[s],t):t[e];return i==null?r:i};bt.mixin=(t,e)=>{if(!N0(t))return e;if(!N0(e))return t;for(let r of Object.keys(e)){let i=Object.getOwnPropertyDescriptor(e,r);if(i.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&N0(i.value)){let n=Object.getOwnPropertyDescriptor(t,r);N0(n.value)?t[r]=bt.merge({},t[r],e[r]):Reflect.defineProperty(t,r,i)}else Reflect.defineProperty(t,r,i);else Reflect.defineProperty(t,r,i)}return t};bt.merge=(...t)=>{let e={};for(let r of t)bt.mixin(e,r);return e};bt.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let i of Object.keys(r)){let n=r[i];typeof n=="function"?bt.define(t,i,n.bind(e)):bt.define(t,i,n)}};bt.onExit=t=>{let e=(r,i)=>{$ie||($ie=!0,pN.forEach(n=>n()),r===!0&&process.exit(128+i))};pN.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),pN.push(t)};bt.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};bt.defineExport=(t,e,r)=>{let i;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(n){i=n},get(){return i?i():r()}})}});var tne=I(nf=>{"use strict";nf.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};nf.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};nf.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};nf.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};nf.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var nne=I((dCt,rne)=>{"use strict";var ine=require("readline"),BJe=tne(),QJe=/^(?:\x1b)([a-zA-Z0-9])$/,bJe=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,vJe={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function SJe(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function xJe(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var L0=(t="",e={})=>{let r,i=P({name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t},e);if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=""+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=i.sequence||""),i.sequence=i.sequence||t||i.name,t==="\r")i.raw=void 0,i.name="return";else if(t===` -`)i.name="enter";else if(t===" ")i.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x7F"||t==="\b")i.name="backspace",i.meta=t.charAt(0)==="";else if(t===""||t==="")i.name="escape",i.meta=t.length===2;else if(t===" "||t===" ")i.name="space",i.meta=t.length===2;else if(t<="")i.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),i.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")i.name="number";else if(t.length===1&&t>="a"&&t<="z")i.name=t;else if(t.length===1&&t>="A"&&t<="Z")i.name=t.toLowerCase(),i.shift=!0;else if(r=QJe.exec(t))i.meta=!0,i.shift=/^[A-Z]$/.test(r[1]);else if(r=bJe.exec(t)){let n=[...t];n[0]===""&&n[1]===""&&(i.option=!0);let s=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;i.ctrl=!!(o&4),i.meta=!!(o&10),i.shift=!!(o&1),i.code=s,i.name=vJe[s],i.shift=SJe(s)||i.shift,i.ctrl=xJe(s)||i.ctrl}return i};L0.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let i=ine.createInterface({terminal:!0,input:r});ine.emitKeypressEvents(r,i);let n=(a,l)=>e(a,L0(a,l),i),s=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",n),i.resume(),()=>{r.isTTY&&r.setRawMode(s),r.removeListener("keypress",n),i.pause(),i.close()}};L0.action=(t,e,r)=>{let i=P(P({},BJe),r);return e.ctrl?(e.action=i.ctrl[e.name],e):e.option&&i.option?(e.action=i.option[e.name],e):e.shift?(e.action=i.shift[e.name],e):(e.action=i.keys[e.name],e)};rne.exports=L0});var one=I((CCt,sne)=>{"use strict";sne.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let i=e[r];typeof i=="number"&&(i={interval:i}),kJe(t,r,i)}};function kJe(t,e,r={}){let i=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},n=r.interval||120;i.frames=r.frames||[],i.loading=!0;let s=setInterval(()=>{i.ms=Date.now()-i.start,i.tick++,t.render()},n);return i.stop=()=>{i.loading=!1,clearInterval(s)},Reflect.defineProperty(i,"interval",{value:s}),t.once("close",()=>i.stop()),i.stop}});var lne=I((mCt,ane)=>{"use strict";var{define:PJe,width:DJe}=Mi(),Ane=class{constructor(e){let r=e.options;PJe(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=DJe(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e=P({},this);return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};ane.exports=Ane});var une=I((ICt,cne)=>{"use strict";var dN=Mi(),yi=js(),CN={default:yi.noop,noop:yi.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||dN.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||dN.complement(this.primary)},primary:yi.cyan,success:yi.green,danger:yi.magenta,strong:yi.bold,warning:yi.yellow,muted:yi.dim,disabled:yi.gray,dark:yi.dim.gray,underline:yi.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};CN.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(yi.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(yi.visible=t.styles.visible);let e=dN.merge({},CN,t.styles);delete e.merge;for(let r of Object.keys(yi))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});for(let r of Object.keys(yi.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>yi[r]});return e};cne.exports=CN});var fne=I((ECt,gne)=>{"use strict";var mN=process.platform==="win32",Ka=js(),RJe=Mi(),IN=_(P({},Ka.symbols),{upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Ka.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Ka.symbols.question,submitted:Ka.symbols.check,cancelled:Ka.symbols.cross},separator:{pending:Ka.symbols.pointerSmall,submitted:Ka.symbols.middot,cancelled:Ka.symbols.middot},radio:{off:mN?"( )":"\u25EF",on:mN?"(*)":"\u25C9",disabled:mN?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]});IN.merge=t=>{let e=RJe.merge({},Ka.symbols,IN,t.symbols);return delete e.merge,e};gne.exports=IN});var pne=I((yCt,hne)=>{"use strict";var FJe=une(),NJe=fne(),LJe=Mi();hne.exports=t=>{t.options=LJe.merge({},t.options.theme,t.options),t.symbols=NJe.merge(t.options),t.styles=FJe.merge(t.options)}});var Ene=I((dne,Cne)=>{"use strict";var mne=process.env.TERM_PROGRAM==="Apple_Terminal",TJe=js(),EN=Mi(),Ys=Cne.exports=dne,Er="[",Ine="\x07",yN=!1,HA=Ys.code={bell:Ine,beep:Ine,beginning:`${Er}G`,down:`${Er}J`,esc:Er,getPosition:`${Er}6n`,hide:`${Er}?25l`,line:`${Er}2K`,lineEnd:`${Er}K`,lineStart:`${Er}1K`,restorePosition:Er+(mne?"8":"u"),savePosition:Er+(mne?"7":"s"),screen:`${Er}2J`,show:`${Er}?25h`,up:`${Er}1J`},Lc=Ys.cursor={get hidden(){return yN},hide(){return yN=!0,HA.hide},show(){return yN=!1,HA.show},forward:(t=1)=>`${Er}${t}C`,backward:(t=1)=>`${Er}${t}D`,nextLine:(t=1)=>`${Er}E`.repeat(t),prevLine:(t=1)=>`${Er}F`.repeat(t),up:(t=1)=>t?`${Er}${t}A`:"",down:(t=1)=>t?`${Er}${t}B`:"",right:(t=1)=>t?`${Er}${t}C`:"",left:(t=1)=>t?`${Er}${t}D`:"",to(t,e){return e?`${Er}${e+1};${t+1}H`:`${Er}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Lc.left(-t):t>0?Lc.right(t):"",r+=e<0?Lc.up(-e):e>0?Lc.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:i,input:n,prompt:s,size:o,value:a}=t;if(i=EN.isPrimitive(i)?String(i):"",n=EN.isPrimitive(n)?String(n):"",a=EN.isPrimitive(a)?String(a):"",o){let l=Ys.cursor.up(o)+Ys.cursor.to(s.length),c=n.length-r;return c>0&&(l+=Ys.cursor.left(c)),l}if(a||e){let l=!n&&!!i?-i.length:-n.length+r;return e&&(l-=e.length),n===""&&i&&!s.includes(i)&&(l+=i.length),Ys.cursor.move(l)}}},wN=Ys.erase={screen:HA.screen,up:HA.up,down:HA.down,line:HA.line,lineEnd:HA.lineEnd,lineStart:HA.lineStart,lines(t){let e="";for(let r=0;r{if(!e)return wN.line+Lc.to(0);let r=s=>[...TJe.unstyle(s)].length,i=t.split(/\r?\n/),n=0;for(let s of i)n+=1+Math.floor(Math.max(r(s)-1,0)/e);return(wN.line+Lc.prevLine()).repeat(n-1)+wN.line+Lc.to(0)}});var sf=I((wCt,yne)=>{"use strict";var MJe=require("events"),wne=js(),BN=nne(),OJe=one(),KJe=lne(),UJe=pne(),bn=Mi(),Tc=Ene(),T0=class extends MJe{constructor(e={}){super();this.name=e.name,this.type=e.type,this.options=e,UJe(this),OJe(this),this.state=new KJe(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=GJe(this.options.margin),this.setMaxListeners(0),HJe(this)}async keypress(e,r={}){this.keypressed=!0;let i=BN.action(e,BN(e,r),this.options.actions);this.state.keypress=i,this.emit("keypress",e,i),this.emit("state",this.state.clone());let n=this.options[i.action]||this[i.action]||this.dispatch;if(typeof n=="function")return await n.call(this,e,i);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Tc.code.beep)}cursorHide(){this.stdout.write(Tc.cursor.hide()),bn.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Tc.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Tc.cursor.down(e)+Tc.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:i}=this.sections(),{cursor:n,initial:s="",input:o="",value:a=""}=this,l=this.state.size=i.length,c={after:r,cursor:n,initial:s,input:o,prompt:e,size:l,value:a},u=Tc.cursor.restore(c);u&&this.stdout.write(u)}sections(){let{buffer:e,input:r,prompt:i}=this.state;i=wne.unstyle(i);let n=wne.unstyle(e),s=n.indexOf(i),o=n.slice(0,s),l=n.slice(s).split(` -`),c=l[0],u=l[l.length-1],f=(i+(r?" "+r:"")).length,h=fe.call(this,this.value),this.result=()=>i.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let n=r.onSubmit.bind(this),s=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await n(this.name,this.value,this),s())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,i){let{options:n,state:s,symbols:o,timers:a}=this,l=a&&a[e];s.timer=l;let c=n[e]||s[e]||o[e],u=r&&r[e]!=null?r[e]:await c;if(u==="")return u;let g=await this.resolve(u,s,r,i);return!g&&r&&r[e]?this.resolve(c,s,r,i):g}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,i=this.state;return i.timer=r,bn.isObject(e)&&(e=e[i.status]||e.pending),bn.hasColor(e)?e:(this.styles[i.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return bn.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,i=this.state;i.timer=r;let n=e[i.status]||e.pending||i.separator,s=await this.resolve(n,i);return bn.isObject(s)&&(s=s[i.status]||s.pending),bn.hasColor(s)?s:this.styles.muted(s)}async pointer(e,r){let i=await this.element("pointer",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=this.index===r,o=s?n.primary:c=>c,a=await this.resolve(i[s?"on":"off"]||i,this.state),l=bn.hasColor(a)?a:o(a);return s?l:" ".repeat(a.length)}}async indicator(e,r){let i=await this.element("indicator",e,r);if(typeof i=="string"&&bn.hasColor(i))return i;if(i){let n=this.styles,s=e.enabled===!0,o=s?n.success:n.dark,a=i[s?"on":"off"]||i;return bn.hasColor(a)?a:o(a)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return bn.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return bn.resolve(this,e,...r)}get base(){return T0.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||bn.height(this.stdout,25)}get width(){return this.options.columns||bn.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,i=[r,e].find(this.isValue.bind(this));return this.isValue(i)?i:this.initial}static get prompt(){return e=>new this(e).run()}};function HJe(t){let e=n=>t[n]===void 0||typeof t[n]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],i=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(t.options)){if(r.includes(n)||/^on[A-Z]/.test(n))continue;let s=t.options[n];typeof s=="function"&&e(n)?i.includes(n)||(t[n]=s.bind(t)):typeof t[n]!="function"&&(t[n]=s)}}function GJe(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=n=>n%2==0?` -`:" ",i=[];for(let n=0;n<4;n++){let s=r(n);e[n]?i.push(s.repeat(e[n])):i.push("")}return i}yne.exports=T0});var bne=I((BCt,Bne)=>{"use strict";var jJe=Mi(),Qne={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return Qne.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Bne.exports=(t,e={})=>{let r=jJe.merge({},Qne,e.roles);return r[t]||r.default}});var sC=I((QCt,vne)=>{"use strict";var YJe=js(),qJe=sf(),JJe=bne(),M0=Mi(),{reorder:QN,scrollUp:WJe,scrollDown:zJe,isObject:Sne,swap:VJe}=M0,xne=class extends qJe{constructor(e){super(e);this.cursorHide(),this.maxSelected=e.maxSelected||Infinity,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:i,suggest:n}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(s=>s.enabled=!1),typeof n!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");Sne(r)&&(r=Object.keys(r)),Array.isArray(r)?(i!=null&&(this.index=this.findIndex(i)),r.forEach(s=>this.enable(this.find(s))),await this.render()):(i!=null&&(r=i),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let i=[],n=0,s=async(o,a)=>{typeof o=="function"&&(o=await o.call(this)),o instanceof Promise&&(o=await o);for(let l=0;l(this.state.loadingChoices=!1,o))}async toChoice(e,r,i){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value;if(e=JJe(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,M0.define(e,"parent",i),e.level=i?i.level+1:1,e.indent==null&&(e.indent=i?i.indent+" ":e.indent||""),e.path=i?i.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,YJe.unstyle(e.message).length));let o=P({},e);return e.reset=(a=o.input,l=o.value)=>{for(let c of Object.keys(o))e[c]=o[c];e.input=a,e.value=l},n==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,i){let n=await this.toChoice(e,r,i);return this.choices.push(n),this.index=this.choices.length-1,this.limit=this.choices.length,n}async newItem(e,r,i){let n=P({name:"New choice name?",editable:!0,newChoice:!0},e),s=await this.addChoice(n,r,i);return s.updateChoice=()=>{delete s.newChoice,s.name=s.message=s.input,s.input="",s.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectedr.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(n=>this.toggle(n,r));let i=e.parent;for(;i;){let n=i.choices.filter(s=>this.isDisabled(s));i.enabled=n.every(s=>s.enabled===!0),i=i.parent}return kne(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=i=>{let n=Number(i);if(n>this.choices.length-1)return this.alert();let s=this.focused,o=this.choices.find(a=>n===a.index);if(!o.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(o)===-1){let a=QN(this.choices),l=a.indexOf(o);if(s.index>l){let c=a.slice(l,l+this.limit),u=a.filter(g=>!c.includes(g));this.choices=c.concat(u)}else{let c=l-this.limit+1;this.choices=a.slice(c).concat(a.slice(0,c))}}return this.index=this.choices.indexOf(o),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(i=>{let n=this.choices.length,s=this.num,o=(a=!1,l)=>{clearTimeout(this.numberTimeout),a&&(l=r(s)),this.num="",i(l)};if(s==="0"||s.length===1&&Number(s+"0")>n)return o(!0);if(Number(s)>n)return o(!1,this.alert());this.numberTimeout=setTimeout(()=>o(!0),this.delay)})}home(){return this.choices=QN(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=QN(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===0?this.alert():e>r&&i===0?this.scrollUp():(this.index=(i-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,i=this.index;return this.options.scroll===!1&&i===r-1?this.alert():e>r&&i===r-1?this.scrollDown():(this.index=(i+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=WJe(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=zJe(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){VJe(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(i=>e[i]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(i=>!this.isDisabled(i));return e.enabled&&r.every(i=>this.isEnabled(i))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((i,n)=>(i[n]=this.find(n,r),i),{})}filter(e,r){let i=(a,l)=>[a.name,l].includes(e),n=typeof e=="function"?e:i,o=(this.options.multiple?this.state._choices:this.choices).filter(n);return r?o.map(a=>a[r]):o}find(e,r){if(Sne(e))return r?e[r]:e;let i=(o,a)=>[o.name,a].includes(e),n=typeof e=="function"?e:i,s=this.choices.find(n);if(s)return r?s[r]:s}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(o=>o.newChoice))return this.alert();let{reorder:r,sort:i}=this.options,n=this.multiple===!0,s=this.selected;return s===void 0?this.alert():(Array.isArray(s)&&r!==!1&&i!==!0&&(s=M0.reorder(s)),this.value=n?s.map(o=>o.name):s.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(i=>i.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let i=this.find(r);i&&(this.initial=i.index,this.focus(i,!0))}}}get choices(){return kne(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:i}=this,n=e.limit||this._limit||r.limit||i.length;return Math.min(n,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function kne(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(M0.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let i=r.choices.filter(n=>!t.isDisabled(n));r.enabled=i.every(n=>n.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}vne.exports=xne});var GA=I((bCt,Pne)=>{"use strict";var _Je=sC(),bN=Mi(),Dne=class extends _Je{constructor(e){super(e);this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let i=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!bN.hasColor(i)&&(i=this.styles.strong(i)),this.resolve(i,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await this.indicator(e,r)+(e.pad||""),o=await this.resolve(e.hint,this.state,e,r);o&&!bN.hasColor(o)&&(o=this.styles.muted(o));let a=this.indent(e),l=await this.choiceMessage(e,r),c=()=>[this.margin[3],a+n+s,l,this.margin[1],o].filter(Boolean).join(" ");return e.role==="heading"?c():e.disabled?(bN.hasColor(l)||(l=this.styles.disabled(l)),c()):(i&&(l=this.styles.em(l)),c())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(s,o)=>await this.renderChoice(s,o)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let i=this.margin[0]+r.join(` -`),n;return this.options.choicesHeader&&(n=await this.resolve(this.options.choicesHeader,this.state)),[n,i].filter(Boolean).join(` -`)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,i="",n=await this.header(),s=await this.prefix(),o=await this.separator(),a=await this.message();this.options.promptLine!==!1&&(i=[s,a,o,""].join(" "),this.state.prompt=i);let l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();l&&(i+=l),c&&!i.includes(c)&&(i+=" "+c),e&&!l&&!u.trim()&&this.multiple&&this.emptyError!=null&&(i+=this.styles.danger(this.emptyError)),this.clear(r),this.write([n,i,u,g].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Pne.exports=Dne});var Nne=I((vCt,Rne)=>{"use strict";var XJe=GA(),ZJe=(t,e)=>{let r=t.toLowerCase();return i=>{let s=i.toLowerCase().indexOf(r),o=e(i.slice(s,s+r.length));return s>=0?i.slice(0,s)+o+i.slice(s+r.length):i}},Fne=class extends XJe{constructor(e){super(e);this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:i}=this.state;return this.input=i.slice(0,r)+e+i.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let i=e.toLowerCase();return r.filter(n=>n.message.toLowerCase().includes(i))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=ZJe(this.input,e),i=this.choices;this.choices=i.map(n=>_(P({},n),{message:r(n.message)})),await super.render(),this.choices=i}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};Rne.exports=Fne});var SN=I((SCt,Lne)=>{"use strict";var vN=Mi();Lne.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:i="",pos:n,showCursor:s=!0,color:o}=e,a=o||t.styles.placeholder,l=vN.inverse(t.styles.primary),c=d=>l(t.styles.black(d)),u=r,g=" ",f=c(g);if(t.blink&&t.blink.off===!0&&(c=d=>d,f=""),s&&n===0&&i===""&&r==="")return c(g);if(s&&n===0&&(r===i||r===""))return c(i[0])+a(i.slice(1));i=vN.isPrimitive(i)?`${i}`:"",r=vN.isPrimitive(r)?`${r}`:"";let h=i&&i.startsWith(r)&&i!==r,p=h?c(i[r.length]):f;if(n!==r.length&&s===!0&&(u=r.slice(0,n)+c(r[n])+r.slice(n+1),p=""),s===!1&&(p=""),h){let d=t.styles.unstyle(u+p);return u+p+a(i.slice(d.length))}return u+p}});var O0=I((xCt,Tne)=>{"use strict";var $Je=js(),e3e=GA(),t3e=SN(),Mne=class extends e3e{constructor(e){super(_(P({},e),{multiple:!0}));this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:i,input:n}=r;return r.value=r.input=n.slice(0,i)+e+n.slice(i),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:i}=e;return e.value=e.input=i.slice(0,r-1)+i.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:i}=e;if(i[r]===void 0)return this.alert();let n=`${i}`.slice(0,r)+`${i}`.slice(r+1);return e.value=e.input=n,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:i}=e;return r&&r.startsWith(i)&&i!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let i=await this.resolve(e.separator,this.state,e,r)||":";return i?" "+this.styles.disabled(i):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:i,styles:n}=this,{cursor:s,initial:o="",name:a,hint:l,input:c=""}=e,{muted:u,submitted:g,primary:f,danger:h}=n,p=l,d=this.index===r,m=e.validate||(()=>!0),E=await this.choiceSeparator(e,r),B=e.message;this.align==="right"&&(B=B.padStart(this.longest+1," ")),this.align==="left"&&(B=B.padEnd(this.longest+1," "));let b=this.values[a]=c||o,R=c?"success":"dark";await m.call(e,b,this.state)!==!0&&(R="danger");let L=n[R](await this.indicator(e,r))+(e.pad||""),K=this.indent(e),J=()=>[K,L,B+E,c,p].filter(Boolean).join(" ");if(i.submitted)return B=$Je.unstyle(B),c=g(c),p="",J();if(e.format)c=await e.format.call(this,c,e,r);else{let ne=this.styles.muted;c=t3e(this,{input:c,initial:o,pos:s,showCursor:d,color:ne})}return this.isValue(c)||(c=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,b,e,r)),d&&(B=f(B)),e.error?c+=(c?" ":"")+h(e.error.trim()):e.hint&&(c+=(c?" ":"")+u(e.hint.trim())),J()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Tne.exports=Mne});var xN=I((kCt,One)=>{"use strict";var r3e=O0(),i3e=()=>{throw new Error("expected prompt to have a custom authenticate method")},Kne=(t=i3e)=>{class e extends r3e{constructor(i){super(i)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(i){return Kne(i)}}return e};One.exports=Kne()});var Gne=I((PCt,Une)=>{"use strict";var n3e=xN();function s3e(t,e){return t.username===this.options.username&&t.password===this.options.password}var Hne=(t=s3e)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(i){return this.options.showPassword?i:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(i.length))}}];class r extends n3e.create(t){constructor(n){super(_(P({},n),{choices:e}))}static create(n){return Hne(n)}}return r};Une.exports=Hne()});var K0=I((DCt,jne)=>{"use strict";var o3e=sf(),{isPrimitive:a3e,hasColor:A3e}=Mi(),Yne=class extends o3e{constructor(e){super(e);this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:i}=this;return i.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return a3e(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return A3e(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=this.styles.muted(this.default),a=[i,s,o,n].filter(Boolean).join(" ");this.state.prompt=a;let l=await this.header(),c=this.value=this.cast(e),u=await this.format(c),g=await this.error()||await this.hint(),f=await this.footer();g&&!a.includes(g)&&(u+=" "+g),a+=" "+u,this.clear(r),this.write([l,a,f].filter(Boolean).join(` -`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};jne.exports=Yne});var Wne=I((RCt,qne)=>{"use strict";var l3e=K0(),Jne=class extends l3e{constructor(e){super(e);this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};qne.exports=Jne});var _ne=I((FCt,zne)=>{"use strict";var c3e=GA(),u3e=O0(),of=u3e.prototype,Vne=class extends c3e{constructor(e){super(_(P({},e),{multiple:!0}));this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let i=this.focused,n=i.parent||{};return!i.editable&&!n.editable&&(e==="a"||e==="i")?super[e]():of.dispatch.call(this,e,r)}append(e,r){return of.append.call(this,e,r)}delete(e,r){return of.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?of.next.call(this):super.next()}prev(){return this.focused.editable?of.prev.call(this):super.prev()}async indicator(e,r){let i=e.indicator||"",n=e.editable?i:super.indicator(e,r);return await this.resolve(n,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?of.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let i=r.parent?this.value[r.parent.name]:this.value;if(r.editable?i=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(i=r.enabled===!0),e=await r.validate(i,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};zne.exports=Vne});var Mc=I((NCt,Xne)=>{"use strict";var g3e=sf(),f3e=SN(),{isPrimitive:h3e}=Mi(),Zne=class extends g3e{constructor(e){super(e);this.initial=h3e(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let i=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!i||i.name!=="return")?this.append(` -`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:i}=this.state;this.input=`${i}`.slice(0,r)+e+`${i}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),i=this.input.slice(e),n=r.split(" ");this.state.clipboard.push(n.pop()),this.input=n.join(" "),this.cursor=this.input.length,this.input+=i,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):f3e(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),i=await this.separator(),n=await this.message(),s=[r,n,i].filter(Boolean).join(" ");this.state.prompt=s;let o=await this.header(),a=await this.format(),l=await this.error()||await this.hint(),c=await this.footer();l&&!a.includes(l)&&(a+=" "+l),s+=" "+a,this.clear(e),this.write([o,s,c].filter(Boolean).join(` -`)),this.restore()}};Xne.exports=Zne});var ese=I((LCt,$ne)=>{"use strict";var p3e=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),U0=t=>p3e(t).filter(Boolean);$ne.exports=(t,e={},r="")=>{let{past:i=[],present:n=""}=e,s,o;switch(t){case"prev":case"undo":return s=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:U0([r,...s]),present:o};case"next":case"redo":return s=i.slice(1),o=i[0]||"",{past:U0([...s,r]),present:o};case"save":return{past:U0([...i,r]),present:""};case"remove":return o=U0(i.filter(a=>a!==r)),n="",o.length&&(n=o.pop()),{past:o,present:n};default:throw new Error(`Invalid action: "${t}"`)}}});var kN=I((TCt,tse)=>{"use strict";var d3e=Mc(),rse=ese(),ise=class extends d3e{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let i=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:i},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=rse(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=rse("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};tse.exports=ise});var ose=I((MCt,nse)=>{"use strict";var C3e=Mc(),sse=class extends C3e{format(){return""}};nse.exports=sse});var lse=I((OCt,ase)=>{"use strict";var m3e=Mc(),Ase=class extends m3e{constructor(e={}){super(e);this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};ase.exports=Ase});var gse=I((KCt,cse)=>{"use strict";var I3e=GA(),use=class extends I3e{constructor(e){super(_(P({},e),{multiple:!0}))}};cse.exports=use});var PN=I((UCt,fse)=>{"use strict";var E3e=Mc(),hse=class extends E3e{constructor(e={}){super(P({style:"number"},e));this.min=this.isValue(e.min)?this.toNumber(e.min):-Infinity,this.max=this.isValue(e.max)?this.toNumber(e.max):Infinity,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,i=this.toNumber(this.input);return i>this.max+r?this.alert():(this.input=`${i+r}`,this.render())}down(e){let r=e||this.minor,i=this.toNumber(this.input);return ithis.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};fse.exports=hse});var dse=I((HCt,pse)=>{pse.exports=PN()});var Ise=I((GCt,Cse)=>{"use strict";var y3e=Mc(),mse=class extends y3e{constructor(e){super(e);this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Cse.exports=mse});var Bse=I((jCt,Ese)=>{"use strict";var w3e=js(),B3e=sC(),yse=Mi(),wse=class extends B3e{constructor(e={}){super(e);this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` - `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((i,n)=>({name:n+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let i=0;i=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){if(this.scaleKey===!1||this.state.submitted)return"";let e=this.scale.map(i=>` ${i.name} - ${i.message}`);return["",...e].map(i=>this.styles.muted(i)).join(` -`)}renderScaleHeading(e){let r=this.scale.map(l=>l.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let i=this.scaleLength-r.join("").length,n=Math.round(i/(r.length-1)),o=r.map(l=>this.styles.strong(l)).join(" ".repeat(n)),a=" ".repeat(this.widths[0]);return this.margin[3]+a+this.margin[1]+o}scaleIndicator(e,r,i){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,i);let n=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):n?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let i=e.scale.map(s=>this.scaleIndicator(e,s,r)),n=this.term==="Hyper"?"":" ";return i.join(n+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=await this.pointer(e,r),s=await e.hint;s&&!yse.hasColor(s)&&(s=this.styles.muted(s));let o=p=>this.margin[3]+p.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,l=this.indent(e),c=await this.resolve(e.message,this.state,e,r),u=await this.renderScale(e,r),g=this.margin[1]+this.margin[3];this.scaleLength=w3e.unstyle(u).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-g.length);let h=yse.wordWrap(c,{width:this.widths[0],newline:a}).split(` -`).map(p=>o(p)+this.margin[1]);return i&&(u=this.styles.info(u),h=h.map(p=>this.styles.info(p))),h[0]+=u,this.linebreak&&h.push(""),[l+n,h.join(` -`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(n,s)=>await this.renderChoice(n,s)),r=await Promise.all(e),i=await this.renderScaleHeading();return this.margin[0]+[i,...r.map(n=>n.join(" "))].join(` -`)}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o="";this.options.promptLine!==!1&&(o=[i,s,n,""].join(" "),this.state.prompt=o);let a=await this.header(),l=await this.format(),c=await this.renderScaleKey(),u=await this.error()||await this.hint(),g=await this.renderChoices(),f=await this.footer(),h=this.emptyError;l&&(o+=l),u&&!o.includes(u)&&(o+=" "+u),e&&!l&&!g.trim()&&this.multiple&&h!=null&&(o+=this.styles.danger(h)),this.clear(r),this.write([a,o,c,g,f].filter(Boolean).join(` -`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Ese.exports=wse});var Sse=I((YCt,Qse)=>{"use strict";var bse=js(),Q3e=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",vse=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Q3e(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},b3e=async(t={},e={},r=i=>i)=>{let i=new Set,n=t.fields||[],s=t.template,o=[],a=[],l=[],c=1;typeof s=="function"&&(s=await s());let u=-1,g=()=>s[++u],f=()=>s[u+1],h=p=>{p.line=c,o.push(p)};for(h({type:"bos",value:""});uR.name===E.key);E.field=n.find(R=>R.name===E.key),b||(b=new vse(E),a.push(b)),b.lines.push(E.line-1);continue}let d=o[o.length-1];d.type==="text"&&d.line===c?d.value+=p:h({type:"text",value:p})}return h({type:"eos",value:""}),{input:s,tabstops:o,unique:i,keys:l,items:a}};Qse.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),i=P(P({},e.values),e.initial),{tabstops:n,items:s,keys:o}=await b3e(e,i),a=DN("result",t,e),l=DN("format",t,e),c=DN("validate",t,e,!0),u=t.isValue.bind(t);return async(g={},f=!1)=>{let h=0;g.required=r,g.items=s,g.keys=o,g.output="";let p=async(B,b,R,H)=>{let L=await c(B,b,R,H);return L===!1?"Invalid field "+R.name:L};for(let B of n){let b=B.value,R=B.key;if(B.type!=="template"){b&&(g.output+=b);continue}if(B.type==="template"){let H=s.find(q=>q.name===R);e.required===!0&&g.required.add(H.name);let L=[H.input,g.values[H.value],H.value,b].find(u),J=(H.field||{}).message||B.inner;if(f){let q=await p(g.values[R],g,H,h);if(q&&typeof q=="string"||q===!1){g.invalid.set(R,q);continue}g.invalid.delete(R);let A=await a(g.values[R],g,H,h);g.output+=bse.unstyle(A);continue}H.placeholder=!1;let ne=b;b=await l(b,g,H,h),L!==b?(g.values[R]=L,b=t.styles.typing(L),g.missing.delete(J)):(g.values[R]=void 0,L=`<${J}>`,b=t.styles.primary(L),H.placeholder=!0,g.required.has(R)&&g.missing.add(J)),g.missing.has(J)&&g.validating&&(b=t.styles.warning(L)),g.invalid.has(R)&&g.validating&&(b=t.styles.danger(L)),h===g.index&&(ne!==b?b=t.styles.underline(b):b=t.styles.heading(bse.unstyle(b))),h++}b&&(g.output+=b)}let d=g.output.split(` -`).map(B=>" "+B),m=s.length,E=0;for(let B of s)g.invalid.has(B.name)&&B.lines.forEach(b=>{d[b][0]===" "&&(d[b]=g.styles.danger(g.symbols.bullet)+d[b].slice(1))}),t.isValue(g.values[B.name])&&E++;return g.completed=(E/m*100).toFixed(0),g.output=d.join(` -`),g.output}};function DN(t,e,r,i){return(n,s,o,a)=>typeof o.field[t]=="function"?o.field[t].call(e,n,s,o,a):[i,n].find(l=>e.isValue(l))}});var Pse=I((qCt,xse)=>{"use strict";var v3e=js(),S3e=Sse(),x3e=sf(),kse=class extends x3e{constructor(e){super(e);this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await S3e(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let i=this.getItem(),n=i.input.slice(0,this.cursor),s=i.input.slice(this.cursor);this.input=i.input=`${n}${e}${s}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),i=e.input.slice(0,this.cursor-1);this.input=e.input=`${i}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:i,size:n}=this.state,s=[this.options.newline,` -`].find(B=>B!=null),o=await this.prefix(),a=await this.separator(),l=await this.message(),c=[o,l,a].filter(Boolean).join(" ");this.state.prompt=c;let u=await this.header(),g=await this.error()||"",f=await this.hint()||"",h=i?"":await this.interpolate(this.state),p=this.state.key=r[e]||"",d=await this.format(p),m=await this.footer();d&&(c+=" "+d),f&&!d&&this.state.completed===0&&(c+=" "+f),this.clear(n);let E=[u,c,h,m,g.trim()];this.write(E.filter(Boolean).join(s)),this.restore()}getItem(e){let{items:r,keys:i,index:n}=this.state,s=r.find(o=>o.name===i[n]);return s&&s.input!=null&&(this.input=s.input,this.cursor=s.cursor),s}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:i,values:n}=this.state;if(e.size){let a="";for(let[l,c]of e)a+=`Invalid ${l}: ${c} -`;return this.state.error=a,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let o=v3e.unstyle(i).split(` -`).map(a=>a.slice(1)).join(` -`);return this.value={values:n,result:o},super.submit()}};xse.exports=kse});var Fse=I((JCt,Dse)=>{"use strict";var k3e="(Use + to sort)",P3e=GA(),Rse=class extends P3e{constructor(e){super(_(P({},e),{reorder:!1,sort:!0,multiple:!0}));this.state.hint=[this.options.hint,k3e].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let i=await super.renderChoice(e,r),n=this.symbols.identicalTo+" ",s=this.index===r&&this.sorting?this.styles.muted(n):" ";return this.options.drag===!1&&(s=""),this.options.numbered===!0?s+`${r+1} - `+i:s+i}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Dse.exports=Rse});var Tse=I((WCt,Nse)=>{"use strict";var D3e=sC(),Lse=class extends D3e{constructor(e={}){super(e);if(this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(i=>this.styles.muted(i)),this.state.header=r.join(` - `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let i of r)i.scale=R3e(5,this.options),i.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],i=r.selected;return e.scale.forEach(n=>n.selected=!1),r.selected=!i,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let i=this.index===r,n=this.term==="Hyper",s=n?9:8,o=n?"":" ",a=this.symbols.line.repeat(s),l=" ".repeat(s+(n?0:1)),c=b=>(b?this.styles.success("\u25C9"):"\u25EF")+o,u=r+1+".",g=i?this.styles.heading:this.styles.noop,f=await this.resolve(e.message,this.state,e,r),h=this.indent(e),p=h+e.scale.map((b,R)=>c(R===e.scaleIdx)).join(a),d=b=>b===e.scaleIdx?g(b):b,m=h+e.scale.map((b,R)=>d(R)).join(l),E=()=>[u,f].filter(Boolean).join(" "),B=()=>[E(),p,m," "].filter(Boolean).join(` -`);return i&&(p=this.styles.cyan(p),m=this.styles.cyan(m)),B()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(i,n)=>await this.renderChoice(i,n)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` -`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,i=await this.prefix(),n=await this.separator(),s=await this.message(),o=[i,s,n].filter(Boolean).join(" ");this.state.prompt=o;let a=await this.header(),l=await this.format(),c=await this.error()||await this.hint(),u=await this.renderChoices(),g=await this.footer();(l||!c)&&(o+=" "+l),c&&!o.includes(c)&&(o+=" "+c),e&&!l&&!u&&this.multiple&&this.type!=="form"&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([o,a,u,g].filter(Boolean).join(` -`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function R3e(t,e={}){if(Array.isArray(e.scale))return e.scale.map(i=>P({},i));let r=[];for(let i=1;i{Mse.exports=kN()});var Hse=I((VCt,Kse)=>{"use strict";var F3e=K0(),Use=class extends F3e{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=i=>this.styles.primary.underline(i);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),i=await this.prefix(),n=await this.separator(),s=await this.message(),o=await this.format(),a=await this.error()||await this.hint(),l=await this.footer(),c=[i,s,n,o].join(" ");this.state.prompt=c,a&&!c.includes(a)&&(c+=" "+a),this.clear(e),this.write([r,c,l].filter(Boolean).join(` -`)),this.write(this.margin[2]),this.restore()}};Kse.exports=Use});var Yse=I((_Ct,Gse)=>{"use strict";var N3e=GA(),jse=class extends N3e{constructor(e){super(e);if(typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let i=await super.toChoices(e,r);if(i.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>i.length)throw new Error("Please specify the index of the correct answer from the list of choices");return i}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};Gse.exports=jse});var Jse=I(RN=>{"use strict";var qse=Mi(),ti=(t,e)=>{qse.defineExport(RN,t,e),qse.defineExport(RN,t.toLowerCase(),e)};ti("AutoComplete",()=>Nne());ti("BasicAuth",()=>Gne());ti("Confirm",()=>Wne());ti("Editable",()=>_ne());ti("Form",()=>O0());ti("Input",()=>kN());ti("Invisible",()=>ose());ti("List",()=>lse());ti("MultiSelect",()=>gse());ti("Numeral",()=>dse());ti("Password",()=>Ise());ti("Scale",()=>Bse());ti("Select",()=>GA());ti("Snippet",()=>Pse());ti("Sort",()=>Fse());ti("Survey",()=>Tse());ti("Text",()=>Ose());ti("Toggle",()=>Hse());ti("Quiz",()=>Yse())});var zse=I((ZCt,Wse)=>{Wse.exports={ArrayPrompt:sC(),AuthPrompt:xN(),BooleanPrompt:K0(),NumberPrompt:PN(),StringPrompt:Mc()}});var aC=I(($Ct,Vse)=>{"use strict";var _se=require("assert"),FN=require("events"),jA=Mi(),No=class extends FN{constructor(e,r){super();this.options=jA.merge({},e),this.answers=P({},r)}register(e,r){if(jA.isObject(e)){for(let n of Object.keys(e))this.register(n,e[n]);return this}_se.equal(typeof r,"function","expected a function");let i=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[i]=r:this.prompts[i]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(jA.merge({},this.options,r))}catch(i){return Promise.reject(i)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=jA.merge({},this.options,e),{type:i,name:n}=e,{set:s,get:o}=jA;if(typeof i=="function"&&(i=await i.call(this,e,this.answers)),!i)return this.answers[n];_se(this.prompts[i],`Prompt "${i}" is not registered`);let a=new this.prompts[i](r),l=o(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",u=>{this.emit("answer",n,u,a),s(this.answers,n,u)});let c=a.emit.bind(a);return a.emit=(...u)=>(this.emit.call(this,...u),c(...u)),this.emit("prompt",a,this),r.autofill&&l!=null?(a.value=a.input=l,r.autofill==="show"&&await a.submit()):l=a.value=await a.run(),l}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||sf()}static get prompts(){return Jse()}static get types(){return zse()}static get prompt(){let e=(r,...i)=>{let n=new this(...i),s=n.emit.bind(n);return n.emit=(...o)=>(e.emit(...o),s(...o)),n.prompt(r)};return jA.mixinEmitter(e,new FN),e}};jA.mixinEmitter(No,new FN);var NN=No.prompts;for(let t of Object.keys(NN)){let e=t.toLowerCase(),r=i=>new NN[t](i).run();No.prompt[e]=r,No[e]=r,No[t]||Reflect.defineProperty(No,t,{get:()=>NN[t]})}var oC=t=>{jA.defineExport(No,t,()=>No.types[t])};oC("ArrayPrompt");oC("AuthPrompt");oC("BooleanPrompt");oC("NumberPrompt");oC("StringPrompt");Vse.exports=No});var loe=I((Gmt,Aoe)=>{function K3e(t,e){for(var r=-1,i=t==null?0:t.length;++r{var U3e=XB(),H3e=jg();function G3e(t,e,r,i){var n=!r;r||(r={});for(var s=-1,o=e.length;++s{var j3e=Af(),Y3e=zg();function q3e(t,e){return t&&j3e(e,Y3e(e),t)}uoe.exports=q3e});var hoe=I((qmt,foe)=>{function J3e(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}foe.exports=J3e});var doe=I((Jmt,poe)=>{var W3e=Gs(),z3e=u0(),V3e=hoe(),_3e=Object.prototype,X3e=_3e.hasOwnProperty;function Z3e(t){if(!W3e(t))return V3e(t);var e=z3e(t),r=[];for(var i in t)i=="constructor"&&(e||!X3e.call(t,i))||r.push(i);return r}poe.exports=Z3e});var lf=I((Wmt,Coe)=>{var $3e=bF(),eWe=doe(),tWe=Hd();function rWe(t){return tWe(t)?$3e(t,!0):eWe(t)}Coe.exports=rWe});var Ioe=I((zmt,moe)=>{var iWe=Af(),nWe=lf();function sWe(t,e){return t&&iWe(e,nWe(e),t)}moe.exports=sWe});var UN=I((hC,cf)=>{var oWe=Ks(),Eoe=typeof hC=="object"&&hC&&!hC.nodeType&&hC,yoe=Eoe&&typeof cf=="object"&&cf&&!cf.nodeType&&cf,aWe=yoe&&yoe.exports===Eoe,woe=aWe?oWe.Buffer:void 0,Boe=woe?woe.allocUnsafe:void 0;function AWe(t,e){if(e)return t.slice();var r=t.length,i=Boe?Boe(r):new t.constructor(r);return t.copy(i),i}cf.exports=AWe});var HN=I((Vmt,Qoe)=>{function lWe(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{var cWe=Af(),uWe=f0();function gWe(t,e){return cWe(t,uWe(t),e)}boe.exports=gWe});var H0=I((Xmt,Soe)=>{var fWe=vF(),hWe=fWe(Object.getPrototypeOf,Object);Soe.exports=hWe});var GN=I((Zmt,xoe)=>{var pWe=$B(),dWe=H0(),CWe=f0(),mWe=RF(),IWe=Object.getOwnPropertySymbols,EWe=IWe?function(t){for(var e=[];t;)pWe(e,CWe(t)),t=dWe(t);return e}:mWe;xoe.exports=EWe});var Poe=I(($mt,koe)=>{var yWe=Af(),wWe=GN();function BWe(t,e){return yWe(t,wWe(t),e)}koe.exports=BWe});var Roe=I((eIt,Doe)=>{var QWe=DF(),bWe=GN(),vWe=lf();function SWe(t){return QWe(t,vWe,bWe)}Doe.exports=SWe});var Noe=I((tIt,Foe)=>{var xWe=Object.prototype,kWe=xWe.hasOwnProperty;function PWe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&kWe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}Foe.exports=PWe});var G0=I((rIt,Loe)=>{var Toe=kF();function DWe(t){var e=new t.constructor(t.byteLength);return new Toe(e).set(new Toe(t)),e}Loe.exports=DWe});var Ooe=I((iIt,Moe)=>{var RWe=G0();function FWe(t,e){var r=e?RWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Moe.exports=FWe});var Uoe=I((nIt,Koe)=>{var NWe=/\w*$/;function LWe(t){var e=new t.constructor(t.source,NWe.exec(t));return e.lastIndex=t.lastIndex,e}Koe.exports=LWe});var qoe=I((sIt,Hoe)=>{var Goe=ac(),joe=Goe?Goe.prototype:void 0,Yoe=joe?joe.valueOf:void 0;function TWe(t){return Yoe?Object(Yoe.call(t)):{}}Hoe.exports=TWe});var jN=I((oIt,Joe)=>{var MWe=G0();function OWe(t,e){var r=e?MWe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}Joe.exports=OWe});var zoe=I((aIt,Woe)=>{var KWe=G0(),UWe=Ooe(),HWe=Uoe(),GWe=qoe(),jWe=jN(),YWe="[object Boolean]",qWe="[object Date]",JWe="[object Map]",WWe="[object Number]",zWe="[object RegExp]",VWe="[object Set]",_We="[object String]",XWe="[object Symbol]",ZWe="[object ArrayBuffer]",$We="[object DataView]",e8e="[object Float32Array]",t8e="[object Float64Array]",r8e="[object Int8Array]",i8e="[object Int16Array]",n8e="[object Int32Array]",s8e="[object Uint8Array]",o8e="[object Uint8ClampedArray]",a8e="[object Uint16Array]",A8e="[object Uint32Array]";function l8e(t,e,r){var i=t.constructor;switch(e){case ZWe:return KWe(t);case YWe:case qWe:return new i(+t);case $We:return UWe(t,r);case e8e:case t8e:case r8e:case i8e:case n8e:case s8e:case o8e:case a8e:case A8e:return jWe(t,r);case JWe:return new i;case WWe:case _We:return new i(t);case zWe:return HWe(t);case VWe:return new i;case XWe:return GWe(t)}}Woe.exports=l8e});var Xoe=I((AIt,Voe)=>{var c8e=Gs(),_oe=Object.create,u8e=function(){function t(){}return function(e){if(!c8e(e))return{};if(_oe)return _oe(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();Voe.exports=u8e});var YN=I((lIt,Zoe)=>{var g8e=Xoe(),f8e=H0(),h8e=u0();function p8e(t){return typeof t.constructor=="function"&&!h8e(t)?g8e(f8e(t)):{}}Zoe.exports=p8e});var eae=I((cIt,$oe)=>{var d8e=jd(),C8e=Qo(),m8e="[object Map]";function I8e(t){return C8e(t)&&d8e(t)==m8e}$oe.exports=I8e});var nae=I((uIt,tae)=>{var E8e=eae(),y8e=A0(),rae=l0(),iae=rae&&rae.isMap,w8e=iae?y8e(iae):E8e;tae.exports=w8e});var oae=I((gIt,sae)=>{var B8e=jd(),Q8e=Qo(),b8e="[object Set]";function v8e(t){return Q8e(t)&&B8e(t)==b8e}sae.exports=v8e});var cae=I((fIt,aae)=>{var S8e=oae(),x8e=A0(),Aae=l0(),lae=Aae&&Aae.isSet,k8e=lae?x8e(lae):S8e;aae.exports=k8e});var pae=I((hIt,uae)=>{var P8e=Gd(),D8e=loe(),R8e=XB(),F8e=goe(),N8e=Ioe(),L8e=UN(),T8e=HN(),M8e=voe(),O8e=Poe(),K8e=FF(),U8e=Roe(),H8e=jd(),G8e=Noe(),j8e=zoe(),Y8e=YN(),q8e=As(),J8e=Od(),W8e=nae(),z8e=Gs(),V8e=cae(),_8e=zg(),X8e=lf(),Z8e=1,$8e=2,eze=4,gae="[object Arguments]",tze="[object Array]",rze="[object Boolean]",ize="[object Date]",nze="[object Error]",fae="[object Function]",sze="[object GeneratorFunction]",oze="[object Map]",aze="[object Number]",hae="[object Object]",Aze="[object RegExp]",lze="[object Set]",cze="[object String]",uze="[object Symbol]",gze="[object WeakMap]",fze="[object ArrayBuffer]",hze="[object DataView]",pze="[object Float32Array]",dze="[object Float64Array]",Cze="[object Int8Array]",mze="[object Int16Array]",Ize="[object Int32Array]",Eze="[object Uint8Array]",yze="[object Uint8ClampedArray]",wze="[object Uint16Array]",Bze="[object Uint32Array]",rr={};rr[gae]=rr[tze]=rr[fze]=rr[hze]=rr[rze]=rr[ize]=rr[pze]=rr[dze]=rr[Cze]=rr[mze]=rr[Ize]=rr[oze]=rr[aze]=rr[hae]=rr[Aze]=rr[lze]=rr[cze]=rr[uze]=rr[Eze]=rr[yze]=rr[wze]=rr[Bze]=!0;rr[nze]=rr[fae]=rr[gze]=!1;function j0(t,e,r,i,n,s){var o,a=e&Z8e,l=e&$8e,c=e&eze;if(r&&(o=n?r(t,i,n,s):r(t)),o!==void 0)return o;if(!z8e(t))return t;var u=q8e(t);if(u){if(o=G8e(t),!a)return T8e(t,o)}else{var g=H8e(t),f=g==fae||g==sze;if(J8e(t))return L8e(t,a);if(g==hae||g==gae||f&&!n){if(o=l||f?{}:Y8e(t),!a)return l?O8e(t,N8e(o,t)):M8e(t,F8e(o,t))}else{if(!rr[g])return n?t:{};o=j8e(t,g,a)}}s||(s=new P8e);var h=s.get(t);if(h)return h;s.set(t,o),V8e(t)?t.forEach(function(m){o.add(j0(m,e,r,m,t,s))}):W8e(t)&&t.forEach(function(m,E){o.set(E,j0(m,e,r,E,t,s))});var p=c?l?U8e:K8e:l?X8e:_8e,d=u?void 0:p(t);return D8e(d||t,function(m,E){d&&(E=m,m=t[E]),R8e(o,E,j0(m,e,r,E,t,s))}),o}uae.exports=j0});var qN=I((pIt,dae)=>{var Qze=pae(),bze=1,vze=4;function Sze(t){return Qze(t,bze|vze)}dae.exports=Sze});var mae=I((dIt,Cae)=>{var xze=tF();function kze(t,e,r){return t==null?t:xze(t,e,r)}Cae.exports=kze});var Qae=I((wIt,Bae)=>{function Pze(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}Bae.exports=Pze});var vae=I((BIt,bae)=>{var Dze=xd(),Rze=zP();function Fze(t,e){return e.length<2?t:Dze(t,Rze(e,0,-1))}bae.exports=Fze});var xae=I((QIt,Sae)=>{var Nze=Gg(),Lze=Qae(),Tze=vae(),Mze=Sc();function Oze(t,e){return e=Nze(e,t),t=Tze(t,e),t==null||delete t[Mze(Lze(e))]}Sae.exports=Oze});var Pae=I((bIt,kae)=>{var Kze=xae();function Uze(t,e){return t==null?!0:Kze(t,e)}kae.exports=Uze});var Kae=I((tEt,Oae)=>{Oae.exports={name:"@yarnpkg/cli",version:"3.1.0",license:"BSD-2-Clause",main:"./sources/index.ts",dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/shell":"workspace:^",chalk:"^3.0.0","ci-info":"^3.2.0",clipanion:"^3.0.1",semver:"^7.1.2",tslib:"^1.13.0",typanion:"^3.3.0",yup:"^0.32.9"},devDependencies:{"@types/semver":"^7.1.0","@types/yup":"^0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2",typescript:"^4.4.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",types:"./lib/index.d.ts",bin:null},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=12 <14 || 14.2 - 14.9 || >14.10.0"}}});var iL=I((SBt,QAe)=>{"use strict";QAe.exports=function(e,r){r===!0&&(r=0);var i=e.indexOf("://"),n=e.substring(0,i).split("+").filter(Boolean);return typeof r=="number"?n[r]:n}});var nL=I((xBt,bAe)=>{"use strict";var s4e=iL();function vAe(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=s4e(t);return t=t.substring(t.indexOf("://")+3),vAe(e)?!0:t.indexOf("@"){"use strict";var o4e=iL(),a4e=nL(),A4e=require("querystring");function l4e(t){t=(t||"").trim();var e={protocols:o4e(t),protocol:null,port:null,resource:"",user:"",pathname:"",hash:"",search:"",href:t,query:Object.create(null)},r=t.indexOf("://"),i=-1,n=null,s=null;t.startsWith(".")&&(t.startsWith("./")&&(t=t.substring(2)),e.pathname=t,e.protocol="file");var o=t.charAt(1);return e.protocol||(e.protocol=e.protocols[0],e.protocol||(a4e(t)?e.protocol="ssh":((o==="/"||o==="~")&&(t=t.substring(2)),e.protocol="file"))),r!==-1&&(t=t.substring(r+3)),s=t.split("/"),e.protocol!=="file"?e.resource=s.shift():e.resource="",n=e.resource.split("@"),n.length===2&&(e.user=n[0],e.resource=n[1]),n=e.resource.split(":"),n.length===2&&(e.resource=n[0],n[1]?(e.port=Number(n[1]),isNaN(e.port)&&(e.port=null,s.unshift(n[1]))):e.port=null),s=s.filter(Boolean),e.protocol==="file"?e.pathname=e.href:e.pathname=e.pathname||(e.protocol!=="file"||e.href[0]==="/"?"/":"")+s.join("/"),n=e.pathname.split("#"),n.length===2&&(e.pathname=n[0],e.hash=n[1]),n=e.pathname.split("?"),n.length===2&&(e.pathname=n[0],e.search=n[1]),e.query=A4e.parse(e.search),e.href=e.href.replace(/\/$/,""),e.pathname=e.pathname.replace(/\/$/,""),e}SAe.exports=l4e});var DAe=I((PBt,kAe)=>{"use strict";var c4e=typeof URL=="undefined"?require("url").URL:URL,PAe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t);kAe.exports=(t,e)=>{e=Object.assign({defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripHash:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},e),Reflect.has(e,"normalizeHttps")&&(e.forceHttp=e.normalizeHttps),Reflect.has(e,"normalizeHttp")&&(e.forceHttps=e.normalizeHttp),Reflect.has(e,"stripFragment")&&(e.stripHash=e.stripFragment),t=t.trim();let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let n=new c4e(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&n.protocol==="https:"&&(n.protocol="http:"),e.forceHttps&&n.protocol==="http:"&&(n.protocol="https:"),e.stripHash&&(n.hash=""),n.pathname&&(n.pathname=n.pathname.replace(/((?![https?:]).)\/{2,}/g,(s,o)=>/^(?!\/)/g.test(o)?`${o}/`:"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let s=n.pathname.split("/"),o=s[s.length-1];PAe(o,e.removeDirectoryIndex)&&(s=s.slice(0,s.length-1),n.pathname=s.slice(1).join("/")+"/")}if(n.hostname&&(n.hostname=n.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z\.]{2,5})$/.test(n.hostname)&&(n.hostname=n.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let s of[...n.searchParams.keys()])PAe(s,e.removeQueryParameters)&&n.searchParams.delete(s);return e.sortQueryParameters&&n.searchParams.sort(),t=n.toString(),(e.removeTrailingSlash||n.pathname==="/")&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),t}});var FAe=I((DBt,RAe)=>{"use strict";var u4e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},g4e=xAe(),f4e=DAe();function h4e(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(typeof t!="string"||!t.trim())throw new Error("Invalid url.");e&&((typeof e=="undefined"?"undefined":u4e(e))!=="object"&&(e={stripFragment:!1}),t=f4e(t,e));var r=g4e(t);return r}RAe.exports=h4e});var TAe=I((RBt,NAe)=>{"use strict";var p4e=FAe(),LAe=nL();function d4e(t){var e=p4e(t);e.token="";var r=e.user.split(":");return r.length===2&&(r[1]==="x-oauth-basic"?e.token=r[0]:r[0]==="x-token-auth"&&(e.token=r[1])),LAe(e.protocols)||LAe(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:e.protocol="file",e.href=e.href.replace(/\/$/,""),e}NAe.exports=d4e});var OAe=I((FBt,MAe)=>{"use strict";var C4e=TAe();function sL(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=C4e(t),r=e.resource.split("."),i=null;switch(e.toString=function(l){return sL.stringify(this,l)},e.source=r.length>2?r.slice(1-r.length).join("."):e.source=e.resource,e.git_suffix=/\.git$/.test(e.pathname),e.name=decodeURIComponent(e.pathname.replace(/^\//,"").replace(/\.git$/,"")),e.owner=decodeURIComponent(e.user),e.source){case"git.cloudforge.com":e.owner=e.user,e.organization=r[0],e.source="cloudforge.com";break;case"visualstudio.com":if(e.resource==="vs-ssh.visualstudio.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3],e.full_name=i[2]+"/"+i[3]);break}else{i=e.name.split("/"),i.length===2?(e.owner=i[1],e.name=i[1],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}case"dev.azure.com":case"azure.com":if(e.resource==="ssh.dev.azure.com"){i=e.name.split("/"),i.length===4&&(e.organization=i[1],e.owner=i[2],e.name=i[3]);break}else{i=e.name.split("/"),i.length===5?(e.organization=i[0],e.owner=i[1],e.name=i[4],e.full_name="_git/"+e.name):i.length===3?(e.name=i[2],i[0]==="DefaultCollection"?(e.owner=i[2],e.organization=i[0],e.full_name=e.organization+"/_git/"+e.name):(e.owner=i[0],e.full_name=e.owner+"/_git/"+e.name)):i.length===4&&(e.organization=i[0],e.owner=i[1],e.name=i[3],e.full_name=e.organization+"/"+e.owner+"/_git/"+e.name);break}default:i=e.name.split("/");var n=i.length-1;if(i.length>=2){var s=i.indexOf("blob",2),o=i.indexOf("tree",2),a=i.indexOf("commit",2);n=s>0?s-1:o>0?o-1:a>0?a-1:n,e.owner=i.slice(0,n).join("/"),e.name=i[n],a&&(e.commit=i[n+2])}e.ref="",e.filepathtype="",e.filepath="",i.length>n+2&&["blob","tree"].indexOf(i[n+1])>=0&&(e.filepathtype=i[n+1],e.ref=i[n+2],i.length>n+3&&(e.filepath=i.slice(n+3).join("/"))),e.organization=e.owner;break}return e.full_name||(e.full_name=e.owner,e.name&&(e.full_name&&(e.full_name+="/"),e.full_name+=e.name)),e}sL.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",i=t.user||"git",n=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+i+"@"+t.resource+r+"/"+t.full_name+n:i+"@"+t.resource+":"+t.full_name+n;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+i+"@"+t.resource+r+"/"+t.full_name+n;case"http":case"https":var s=t.token?m4e(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+s+t.resource+r+"/"+t.full_name+n;default:return t.href}};function m4e(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}MAe.exports=sL});var NL=I((Obt,ole)=>{var M4e=jg(),O4e=Kg();function K4e(t,e,r){(r!==void 0&&!O4e(t[e],r)||r===void 0&&!(e in t))&&M4e(t,e,r)}ole.exports=K4e});var Ale=I((Kbt,ale)=>{var U4e=Hd(),H4e=Qo();function G4e(t){return H4e(t)&&U4e(t)}ale.exports=G4e});var ule=I((Ubt,lle)=>{var j4e=Ac(),Y4e=H0(),q4e=Qo(),J4e="[object Object]",W4e=Function.prototype,z4e=Object.prototype,cle=W4e.toString,V4e=z4e.hasOwnProperty,_4e=cle.call(Object);function X4e(t){if(!q4e(t)||j4e(t)!=J4e)return!1;var e=Y4e(t);if(e===null)return!0;var r=V4e.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&cle.call(r)==_4e}lle.exports=X4e});var LL=I((Hbt,gle)=>{function Z4e(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}gle.exports=Z4e});var hle=I((Gbt,fle)=>{var $4e=Af(),e5e=lf();function t5e(t){return $4e(t,e5e(t))}fle.exports=t5e});var Ele=I((jbt,ple)=>{var dle=NL(),r5e=UN(),i5e=jN(),n5e=HN(),s5e=YN(),Cle=Pd(),mle=As(),o5e=Ale(),a5e=Od(),A5e=zB(),l5e=Gs(),c5e=ule(),u5e=c0(),Ile=LL(),g5e=hle();function f5e(t,e,r,i,n,s,o){var a=Ile(t,r),l=Ile(e,r),c=o.get(l);if(c){dle(t,r,c);return}var u=s?s(a,l,r+"",t,e,o):void 0,g=u===void 0;if(g){var f=mle(l),h=!f&&a5e(l),p=!f&&!h&&u5e(l);u=l,f||h||p?mle(a)?u=a:o5e(a)?u=n5e(a):h?(g=!1,u=r5e(l,!0)):p?(g=!1,u=i5e(l,!0)):u=[]:c5e(l)||Cle(l)?(u=a,Cle(a)?u=g5e(a):(!l5e(a)||A5e(a))&&(u=s5e(l))):g=!1}g&&(o.set(l,u),n(u,l,i,s,o),o.delete(l)),dle(t,r,u)}ple.exports=f5e});var Ble=I((Ybt,yle)=>{var h5e=Gd(),p5e=NL(),d5e=BF(),C5e=Ele(),m5e=Gs(),I5e=lf(),E5e=LL();function wle(t,e,r,i,n){t!==e&&d5e(e,function(s,o){if(n||(n=new h5e),m5e(s))C5e(t,e,o,r,wle,i,n);else{var a=i?i(E5e(t,o),s,o+"",t,e,n):void 0;a===void 0&&(a=s),p5e(t,o,a)}},I5e)}yle.exports=wle});var ble=I((qbt,Qle)=>{var y5e=e0(),w5e=nF(),B5e=sF();function Q5e(t,e){return B5e(w5e(t,e,y5e),t+"")}Qle.exports=Q5e});var Sle=I((Jbt,vle)=>{var b5e=Kg(),v5e=Hd(),S5e=kd(),x5e=Gs();function k5e(t,e,r){if(!x5e(r))return!1;var i=typeof e;return(i=="number"?v5e(r)&&S5e(e,r.length):i=="string"&&e in r)?b5e(r[e],t):!1}vle.exports=k5e});var kle=I((Wbt,xle)=>{var P5e=ble(),D5e=Sle();function R5e(t){return P5e(function(e,r){var i=-1,n=r.length,s=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(s=t.length>3&&typeof s=="function"?(n--,s):void 0,o&&D5e(r[0],r[1],o)&&(s=n<3?void 0:s,n=1),e=Object(e);++i{var F5e=Ble(),N5e=kle(),L5e=N5e(function(t,e,r){F5e(t,e,r)});Ple.exports=L5e});var Wle=I(($vt,Jle)=>{var VL;Jle.exports=()=>(typeof VL=="undefined"&&(VL=require("zlib").brotliDecompressSync(Buffer.from("WxSteIBtDGp/1Rsko1+37VeQEmWILAWus2NIX9GQfXTamdxQ3DAVQZm/czI4dZrL7m2taiqoqpqbVIbMBngCLTBU/Z3f9icopIlQyRwSW0LmAd1xJBp0KShTakLvhLqFls9ECISbkeazt+a3Oz6WDcIQ0rgyHJrpCa+V4cmVQ2z4oM2JfN4j+7vMT96CNwkkkPaSsvdW3AmkfVxAApnLX5aOBjpOc3P7TNjG17v+MIABlUDmOqzCLLLbv11H5fHeze26jjOpgJE6N40WFR11m5pRVZE27TUgwrj1KxBDRB2mWGZPkat662N5RXbtr37ttfl5OkO+WOsjtp6CdnBKLX6mPgUXYbPeQnK4HXKv21cNTTU/x/thkJk1y4lIlXAEX2X5tnKBomsuEuC/3L/Kl6Djv67fzqYtzB3ZIfxZGZV/UVGEKpxXKOofHL63VOt0JTRRECeeZkOI2lsusUvit9l8Rgd4KcD+a6reezk9CohA64NZQ9UjO9Y2FA2HXpJXJtl7X5d93/58LZOCHFNmJNnm9NZxSuNKhWvm4hEGZ/UClh42aRS/vqnf77VZ9fwoZhBOL0qrl7KcXvJXWUBfGKx7D/27W4BcZUhgbakekjx1KunF96Ywq5naq6kYVY9yxv8gYRE0HApxX06hcmX/37dZ/fPzdeNZ0JvIcpZt7N4IhO7USQgH06uLsRXrARoM8rFEqlwzDGw3R0OYgB9g61P17dVUZ+d7BqHZ2XiEQ0iV9aEAEnTOqy3r+Z06w0o844wwrVRWlBK7/K4eKTEzN01fqlXV3/T3KXQIkM0YgRbQpkbwRIn3x4ODflri+GZ3k2zbbTslJW4Ei6ggvik8fNbr+uV2Zt5/eXStdt9OHJATA2YHDkgmZbOYj94QwWzZlqlngRfnXpKUIu5H2RZ/PPwFXGaGOb6qrl6yUmkixBsgNDEqIowBIcRS7fnIFdr9O+DSFmK5YFO/LgkI8dYp8oVL+VEyrT8edveb2N4ZfHyvuiRaSMLVWEnwjZB1tcKfyCCSluPHN7aOhw7+zFo7vhkGGAVqQCq6GebH2A0Vty/5YeL8/+Xivfe/C2nLXZ4ZjeRRLMM4UYjZpeZWNgZC64BL901c/fG4BvgzXCVZSdwmBdX1lHJj+j6y4rQBym7qWq/Tvmwd7gdKUeCTLmTZO51mlwdnC2fkcK1lPb8YQ9XyhBo19o7sQBSVX44tGG0TcqBRcMgB6yluQRRh/v/3fmrV7UEKSpSXsoxr44bGjtorQYhljBkMe8w4Z5+7xe+iFLaEiCA6SYBcRbLETlImjTLXMff9+P9HAIoIgEogwMwmIalaxXIsa7WUbdzMmWlPZtYPhj2aBaEaMLONGxk3bv/7SrX/n56TmUiQokzJ9dxU9a9vZx0A0u5f0/Ux/+XMvXOFkedkxiUB8F0RAOPLIBlREqW4ZVG6jew6JwFKJ0G6CqTpuiClukXK9r2S61aE7Nf03eiN/2DyY17vjf6f97OZf+/6ff//m5p96XtVAAiSbciWme6xrfHf+RRk6xtngvyvEd+7t950vfeqVlUFcBooADsAiN4hQfYXAZDns0GpCqTOASDNfjZntEuOZWsUUN9S0gSaXS+yu8+ozdge22uMOfm3NltjM2fCjTba89PNfviDJNkk2DQzNgk3XIiv/dSGSEaaB39dTooAl1joCp8rYFjVmBrhO1WZ45+Pe5pu50Hz7nhg8DdqbTGzbFvMKMgSSyDgBKMqTtKkB44swltPb1/+vj6FYK7hSpa3O0I013J+1amboZ6Z/kQ7KyRrXcXNygPNQwtElsInw/XrdQtagJZkefQccxSg9i5404ZHt94+JHifEPhtHUmAkDVYYYUksBVZKsPBOMWFgrjQO6/dyrJjAD3/+X9a5JziuKNDzAwjEioR1KjWaNllVxIqwwxq9I35fxLnnAu/HwvRf/SNC8IML5jifKfvv0/X6esvHjz4gQkOUUCDAhrOoMGDU0o/Y1SbpNoHcKCaCh4EHDhw0gKiKSDAwMAgIDvte/69nn2fb36HsBATDFHhQoULFSYxxAQnmKCACxUqVIhEhYvJhz5WWxQVvSPMR9zdt0AgSiAQiBIIBAKBQCAQiBKIEiVSINrSRUVdTQPy0oICBgYGBtbLwKCA9TIwMDAoYL3qJYMCCRIkSBB6Jaht63uo6Xn7Of9rQdUiIhAIRERE6goRgYhAIBAIRIsWCEQEYua/bfVQ1LfjulFS4idUWhBlKBMsjBxn0M3Ddc/wmdBIlwGR92IfIabqvvzRKDyAm1VHB8psqZy0s+ARIAlBInhQqSBFtOAR8Co9/Q/kZAC39f+5E7mv5/nj7h4pG2MsiFY6FEmBgbiNSElFwniBsFgX2NeTy5DT1HAZIfeG4eRcSkttn424uBjyH2vseRUk5MsQEmMxfEgUrZ9Q28QbqSBtjd1HQ7Tkw44jIh7WFgJFMCHD60o1D2y+EeohORn3SU/lzN2/V1r8w/AersRQcK0kqunxZE8uB5WHc0dEfZYsN4+i332KIdR+k7LiczBrQroXTlf3rL/uext5prmtQodDD5NShZ8w4Q2QI+5ufL2BQUUdtwgXDP/4TGFjAyMhIxuS09G35PwXQLbxvSz8+ra4e8ZUOxiHYhte8OHidFn7G4eZZZenb2O+JYXLb59QC1CmmBWoN3OnSOlDM+myJilRxGmYv3niw+VHpTyr6QAejCSKR5wSxPbPLWbZ24iuceJ5Qj5Wgt2zRVDiEaR087Mu7cWwCExJonYpLQRNsqTtINZoD4iLWpuQG3zoeUXCgGaAITe3ex63YDLKN1pvaTjPfLJA+1E6Pw9NmLTzjgxHB0sCeWMrVqNS93bDGVagtNRyOZ4NKSMvLU/yljQ6T9wAvPOPoUrT45JAqa6UUkxItaSUijmS45rTLOKlYNssxz/9jMeA1h6R0ujE2+O28ZqGKF5FifNbHaUGF+qqTfu7pWSvOvQxS9Ogvo4YwMLPzHe7OBlNo8AIOlWyuWxgtQMdlXgjsTORc7vH67BpwYDaxh7z474L78YL68t54/pCM1ANIELWskaJsWksNuGYjvI/bm/+xGitR5ITpYkp14hIb8UDvNLHeG1SbVNv5IJJU3wt2hhsFbCH2rD3+hX8x5CYVM8kJcrECN9+uaH2vJD7V6oxa/QZsPH1w+N6Kb93hhZiwmER5DGAxHO8Ne0tZmqRsP29nnqzZk0AKx+88jUgPPQs1lgK0W5Dfy0IZjEK5E8tOGBtpfj3KUDr5iMalbMDCymR5VaZ7/t2WssfLxvD3WiizLYx/8to6UttEY1CNo0Q5rIoImysh85pvLqKx0aS7KXS/BcYNhOSudBJi+c9VZakneVYNxP9+jdbzjj/sofAmR5ZMAujINro9nHXBGpZa423z+FvrdD1hfb1vRiKlXjnNtoxOedJlZY9JUICxV1aundyeVqG2r2H+9BbK9lSDtGSl7SadVC8tlBRL6QkiAZSeUlo+eQoSGKalaeUmeiNkGr6k7hDLLzhcxTpGpORX0ucpCjltJ6Cv5x7Uj1uZUEXzjOFgra+JdJfGJdccYIEL0zuItNd2oGmTza13ZjsC37Bwn7RCCrrH7yFaC7ZavUbonkGisWywItXsv2eMESScyfh5TZTZQlB23nKGSjXFx1lfe81uoPpohbhGh6e+/5anaLUMhxGNYnQfGFZOQ0CDpxIFnHsqGIc+cwrdWCODnOpqb2R/ZGQnw+tkyMu2mj5jgbWBcPKjyLjHlw8S70NGRfnn2+NfJvlg0+aUS7vQSSI5NqnzTNCqP+AmqUcaSet+x7JxcnjppT827yQYjO4Ca2DfYDpB56ftmdvehJQpxlQA3rBM8632UD+Entiwsdt90oSx1IQ9iVr6Cf07MPK9iHhmclk06IhTW6p2czgb1gCiLNqouVJ604TSNFI1u/2EH2IVeF90fH1dfu8wEpVXvxGDna9g5hwQ+XHI1JCE80SKjfIASQG/cnx19eZGK4LpEVC8eBT3KikqASqOpNVnOp1LDedSF5N94W06lsLPTmTopQj5Vof0mLJu5JpqSsZ7qUAg3wMzGIqHFX8IP9UepIrE123utkwNmhtL61dzo+fWvMKEW345aTCjpw1nlBhmqCeaOSLDy1GJKGlrt628zAwoE2RPtc/OjWUbEv7zxfFrayCT4ktK1v/sK7pejeCT7laZK0m5YLxuiXXV2pAWSPjhOQJBplWvdQd4kxbgnw0/DysRonEi/mBArW9aPSC8tYSMxdvKh595MpYOYiy2BVAxguPmr5Y3rcYcJpGDokxr87ETiKlTfMlxalpvVdJH7kENHmEQjp5eTVmijTdTG19tfpMW1+vBgZUCV2CZGKYzZ9aZRJvrvFe3LMJFY2NPnHsL0rpiEl69qfBv6Nwm2Gq9GX0iGrKQUdtI/5cXuilS24aMhGyFiZ1CYy4IRFrnBUV80mrM4PFMDVVsb4+IG1wBU2F4aEjqShwAfxYZRdYB6aCoNmQl9gzy/y9DUUI3SCg2IJ2Zwteu5Pj1BoEfejrEWoKxF03L3pDI0XzJcr0qyRkvAgfn7QXVZZoFudTciMvoWxdH/iPiuRJO+7GevZHBhfArGFblIKT7RI17b78+mvtOGmviVZBk7M3Da9oUdN6p/cyFfvCJzB5sNt5Kk8roiyP+O73LkVy/HXP892mx83Zlgw0dXuI79bAPPMEejsLAi1ktp88bypucKxC+U0Kt+OV+qfa47btQl4lEQuaaa8RjAxjqfOOgpJQ9g/Lpbm1oPjIS2ImYG6q9OfLc2pjEXxwlTbMmIZbnjXpmtIUw/wn8s0KJjFPGm0q+BrytcLp80M+9EkV6u+ZglgdUY5bwos2ycS97EmFRmPxTx6P86B26oF5SCxLjgYnD/AYqSpC1guSVnn+wUCDEjGpC0r6DlmkPyhnHE/EfBpOzxhIXABSLRMsk8uzRIQ+73FOFBt7WvAOZ6Yya02BcfV0rJDdYfpKA0Mg1rXyb1t3DY1Gham2H1XNIv7EcLntxfZy4hwRhM1q3sf4QvSUhBJuRIX7oOp4vrOx1CLCQuEfawvYZyuKBZK71N8NLl+RusOX3w4mmI1NtnIysMJGpqi2oWB6hN/782965j0gZK8M9zWyYK/BLO6WO7Y05GQQ4AsuhxcKOLKYmOpnVTGRkND+E2O5YEpYQ8GfTtp7+wufu8rXaFMESoJq4fapIxX3R6Wa5i1HnFAVoaZhdY6FAW00MXtLBkB20CHDStt5VYoDYtpszaLFFdB6dpLJgKytPsQlRgxMM3MKebiEQVKZnws7zbU0RKLz95h2oh/LYgYuRFTncRx+WqTmWQRvjgi1oFDS+fqp9sPTpX42w9NRW0ToYoaWBVO0iG0RK6cW+nWTmeu8hId64vuh86aFBwV0FT+Wi/XRjHYUAeq+iQOB7iD2hwsWIfPKH6rchYVFlVO8Gsu1gVpldg36s3JNvTD7Ef5YZTgrdMVa8GK4b5XxRGPh1LbZIxkvbCxw9anNakZaG3Q1xDxF1qsb00G7Acl0HCyVh/l65Wh/XAgcHjWbHZ202Yj96V9l/mUcSOpKveeuhy0s7PJMj0bXYUvUZeMxb3CbXn8zeSzgzAjWYmnb24btNlEauKJO9qx+gS4l6CEzfhS2NwJPYe3+ujfKQ4kNcEM4vqNKqUM32fGzmfvaqiSDb4gOWLc4+B4loB/7g7A48POp/LHrL0A4rtdrMUltG8kMUHS6IFsjlQHyLnZwpX8VSr6Efuxvs20B/OxhZjz2oyRM9vtO8E2eCSpOKfwRJDKTEsc29IpD2PqNgFHN4Fi2O1YQTxjnaNJbLfU84dzyGIa7RNQCtxNTPz/dF77oh+jhhApQ2bnBdbJOCUYcbLcbLlqum3sTSVM3y6PumGK3tkLu6t9QsnnD2pJ71hdZtiLag2rrsZ3IaReJOuWFumNRI9+fN2KLolKtdjrIytrutNHG2yPRJDqA33hG9+KpvzdK2wQa2sqe+xKPm/skZxKIDjmDvUOLhtkP00c/TCLCRKth4nfDAJF4/onJFBDhqDNb9QkJ8b9HG7AW9IKUxCfpMCH6yTCIZEJpS+GWTfcmlksfv4baBjsyGlHH/fXKtlmPQMPDYk1nf9pjD1TC4SQMbnW4dMHiDOHqqWd6DllNnMp/3vnhVAeta+qKhS+XJAeBVY1jcVoJPTCHy/u/gPjFH4xtrlker8ndM4F55IdZJQ4MrMlwH6I32aQHsbXxZKcELJWtDbV3k6JfF80HGbOflCWqz7vRqRgPYzEd/RZz93p5wG8xGoUdk5QevEUheN1hhO1AjgpSFpsyCGgqbZfST4X4dkKVub53yuHabCG3hnaCdAsxxiXZxOrsTEUy6eA/U7MaHjYkQ9Te0ZSasJLdYtfRYvUMP6pgqnJB5UtouJIdctbkLZOasw2LsgqGslXxwLr8GdSBPWaZHmUM0A88sYnLcbXnjotFRrOFr8QlJ6kcsWAu59grhPFM2+bnELx/xQnNlX/3KgDyRnhvUR5bXWQeLo6/P3YSuv6eDvd0WsjTycW/lpbdcWuPt5Ub+CxK4i+O+iNaP1pWn0RncO6MmT6agZp88IP60/NQ3MN0YdxpJs1ZWj66qxx3+Cd1dDgzNVrATAo1LthgRkF3PbOqd26BHVcWTow9NfKcnn/hgX3z6DScXs0sq3s/DqcP5nrmh14889Q9blVaLZ9BvEheDMirkUhvtOTNCGRvoN9bZDDQH339eSS/kiP5NiD/jYb8GEGbkIMRyK8B+TNkoZLJ/+OrXc5zeld0pYWgsxLaulgsDFu0OcEvr6WZuLgqfOMmFWakB8XyPtJkyVRMQo96GEsmlOITLewYqTCbUWgxov/u6emUlp2GYk0qfOE3Bpfg7zA4F1fauNMSRZNnMhJEnC0t2NvkvPyZRPDoLFXPxGQy5yBCv9NDiCZhJsW6iR4L12ZwlqfFwpPrPXhAKspecjMSDTvJ7Vi28VmyhhaQm2SCf9LCe6cUkX5etAc7l4dosQE9VGbftIHoFG8hWhpD8V16J85EjkIyIulpb5YmCy/k0X/nMOOmcVCeEBFuOgYL9Ig5oOWMVAg3Az8qouqXaOlIg6BJ/KrIFh/RsiR1gqalz4G25hpyGYhTR9PzW4NcZt+j5ZJ1EBpjruWKNUIz5agLdGX+F1oqmyjsAkdToCb7PVpesZoKO+VUg+zUd2h5zToJu457C3SNv0PLW1a9YDdwT5Ab8ys09NSDYF8eyEywnx+oWmG/OlA1wn57oFJhvztggrvdB5xZ4NuTQGXzY6t+jc4/WpU5+48DqiTsvw+oorA/HOCy21wLEw3ufi84I7j7k8CE4LpKmBFcdy285MDdXnBEXHcSuLDAD5VwkQM/XAszC/ywF8xy4IeTwEyDe6yEivmsVXa8fxygzFUDqmFZj0YD+YqhcK/kS75aetE8MnR8yLllUM6WM0PgTHFsP5Xj5gt2X/94UiqsHtkVcp7rCzsj/jx5384GIHEDNgjtPzpYSeeoXYJvOGI4hVyhuKOCCh9ZkQa0qDDcGpoUaUD9HgWK6mIYbg2V1kfm8LszkHpfGigojgwFLHoa0SuIKBknFEbyi9M+4BSlwQxFEmptCoUnXFdxZFJQ4ddQaKm+ovY0NWfmUOzMUYGC/VBBcNZ+fEP0AhlUGGT7NTdWQpEG1EcMNCvmsSTCdaJFM3LdDmsFLaguhpVKn2Af4xNSWPxTdEZJ+xF+fNArFAxYZ4eBhY+DQgrGAzNW4Ql+De3VGjaGU6QBLSNpUGG4NVS1RMWu4YhBCr1C8Q42ijKcleUpapxRmKCCoiUJQ2AuYBVnRGChCNKgQoGVTmEHkuRTKK2h0GIVGGQlnaJoQfQirOIMjeKRcA0Di3MYNrAVFMmjunhWNls5+4wX7IcQ9gLpxRiikCsUKMTRPj6+IYWlpwn0DBxUrDTPXmMZXNndLmNXS7lFmR0RofDx4CudUdIEr1VhcD8cvW0TY+p65y83Woj0IZoCkqn+mzSJawd2ZVjBWtkgAq2PoMgFyd+0fsfEcAoiHPUKxRIIbhtA6yO4MDsqmk1YYYJQI7VAhEleV5GgsK3NxwfsSIhcMzIgzVFI1+ZMbfcg2xg4hWqR9BIWan/E0Hb0qDZ4KVWostR5tQo3reJAv/AZUhjx4Ca4dZhqqDVB0Q5RHswB+RlIwGw9Q1OFdz3YDzSJ243KZoWzz7zB/li7A+SKlkovJrkUK/qve569LZx+t8x+39BGAX+lM3pxLEHFZ1Qgaa7yJGi2MytbO/rawTubjwoJLeA/woeThzRr335pXBr7OnsquSYvwIfkCUpVdouihTcWVjREIFrMCLK3+9iDGDcben9PEXCFgl5BNAtiRYICRpWBq4YKiDP7KNzpCil4tQOvuUnCxU2Dcyy3Ait5AmyhypOSAgW3AzODM2wpjgpouzgn0y3ctFYuMwxvHg8YoeB6NjsuPA8niThtaLxaE908z98p9TtxKtO2Mwa1w35jEDkfF4bcwXBpvP5JF19SdHfwiOB2hId/5pEktBNA4Sl+Pd6bxdfTWY/HKBSERSLlpovSTrvh1ewpirAhAjPpJwpna/8deCehbockJlnNKhl1CAJCOnEcQ/JPOhFEHhSRcHw/R4iUusPHdxFWyBlFhhRQyCTshQSIaudX8vVW35oOEWwWu2hayCCz8noM7ayk01ZfN5XIG062hEjTnE4KhYhDbxDU4IIW3LWIIUeIH3MKNKJEDORb3dF8pG7+dOF+HGE/U/CjTxE43AQWz9RIEsaRaFCIaJjXaiJB5TXDDtqgDbN3lgk1jW18bxAOPMHwBA3QWFBSIRYkaAILqwSFWnvkWysU5sJ7DPyymV0vcqVRRJIwNMB7bJMOhkI5I4U3C2Q/mxiwvekmWtNxbyUaLM22Be0wuzRuikE9nc19LBXhWnWUf3v8k+YHFSGeovaEazuQ6mEp1Sk/n5Niz0JhgsKSowxcQ5Wtv1Hau9NLxx/mKiHHIpglkFOsZsXhQYh0vmoAh1C5DNaeJwRr5ai/3Wjvb1IRQ4SZFpythwUKOp9GUBHdaR9ghoL2spjG56hQsKTdWaXdB96NimYvc7NuiQrFOSoi8EZXtPR5S8jvmpKnJkoKi4qcrj6+E44y0dme5Z8pcOp2EmCf4QtYkkwas4A2y6EgzHyEZzONhzDqQAJgj5gRGLupu7KInqKAwryISyJ0JBG2VEkxClkAPx4hCd9yLsLYptFTCbgcpRPJh8YieF07WyGFd7FU16T7T5PUZFYD5+SWZyxY1GqF1RxGyJmyeZau5AbBJFlopupQtVRC+NFQdj4QGGF7UlV/OQLMrvdW0jXtLL2hvZ3AsfTr1dfFpvEpVxOw94gyQndLM5rocyNF3JhRgWrqDBEKJflXiLMYg9fQrIU2MmkUsBRGDP7mAnceyVaAij1o9Ewd2+3LSXFD5DnamJNPPnuGCdHKjtI4AGoPm2hXOTgohg+PL+16UEtiP6WEnTGPH5yo8dCjOvIGEHpiURHYSJMaJXCxD1TgCZ0Zkr4JDjfuPzQoiH4entrIgLJDibu7JUpHXPD/ldKWQU9DPXj+69PLu7YGXJlD6PUjwsjJx2Jxcw8aFob1ka3u658f77azyu6soXotb3fs4CflIbojwh2lFjwq3+1AOX+KQNNxRODvlxvFwXLYvr4SjvFkzfUit9jID/zSchMiUEOCXQgWKEaGk4fUwaY/iPlIccQrbjo53Lpnpt3M8xa9YG0Xpx2wBp6QYJP1ckOXVyHJ41m2zchXOWwioPA6ZxDoVNrkQF2Bw+wgyLD/07Di4GLhfzkCp5NYZCUTnFt8AtX93onXRA+N4zbBAwQ8ATpzzLRbYSRWq0p4tbmCkkm9C8kPyuBoTMpZIP65wgot2ADlqW5M9LiWqoq7PGc/xtB7tQVSVKWQ20V65DTPAhIElUWuVSm7s+QAcGjguMN526WuoDMbgpJuSUuLRJtlMpwSk2CzteGU8MYS6Bcc5n+ZDRlmbnkmIQr65j1Lf3cFJC9tSZDhTTOQfRNM7Y2V7DZ515oQfUpi37XR1ci4NFMoWokEa3sqtR8NFd0HCBXBfuo26O48UKmgY6hCTf3Sp6SOsRmr+Atw2LeYT5F1NbN33ttfjQ6ROPCzY3X78wTv/5y8UF/7+C2jRAJFL8Q+INUgkratGk9D15xuX05cjYKxYzPzDfdzHpvF++kFjZbqFPUzgUHbEbt2f2xVb+zIWbNANG9iZAWuGB1YQdtQVLRFJIoPVHZh1bLbuJ+uPwAiSqUla4whZ3dWuqhlQDsqJPn0aZO6lOcsJYMDYX+dL835XZWdQlwYSX5W+lXNiN36wZ2e00PNoPBXyi9TaWD8ZJq/vy3jr8YTmsN2M1icG/Tr1G/GOy/opKW/xSbOODQp3KqnhX27LLK2Dcj2zBve7zQySYzFGRG2A127D972f7fgTBVW1VdFOWoc9481j7Uo4HlZof3qUOC42iYPhwLp4r9m5rRTVSL89vg94I4TnTjUpsKA7urAFjf29rhpEg/exa0oMEJCJKdQHM7qw3FCbhTwTEJTBMuAXJvFYWjVDMyjjfZ9ItPG9vsdKf6xGdXa5CT+ofyAx8dWtsakIOMpWkwg3ERDCenytNzF4gBikixUhXlyfJFNEDelWFQusShJPX4a4FnlqXWgiL4dcoNOKaZEuTgV6zmF6dcE2VwSg0iz/psItCkvA8GdQFPwlud6uWuYC1gPFA+7Qcrf/7mMVveBuVY/flPtkQRZVDOjKMFpnxFCPCuXe2dPc0yCz6L/ilWUnkDAjnmrbrGnzwzaJq3bgaHwxMmRdKc/ovJrAdzh4I6CnBFpHG86V9h2+9GkfYliMHWAHJyITvX55Dmd51D42BuXNpcFRiJ/CiJqe/PO+xvpriIwarPuYrpb6luEU6jm7X2bGyKyWIjAaUzPDIX1610s+nuURLfNSN1Cy04CIUQxp5G0jOtLMXdWPXmyPQiDpZOBT97cCkwn8CsHFSNowxOgMSSzbknqyC7F1KAYwZRWQhhwOGFCcfEtYAFN5BNIenXE65un8LH3OoauFCOJi0v1GBHPvnnaf9mKhlPTrk2XS9RBhRG3oe12KCly4fQgJrX9K6p8PTCklpdS0bWyaUQGX8geeLMcUq02oXzqMHSaLAyFDUgS3mSbalj5aT43MnJsIASF4AUJ6V8fAMFOZ7UsHSZHFcKOk4FCdtgiHFJEJdMbDrUAnCcha2Pslsi9pHBMr7j86sBrJknHheOtmIKn0FXgfirBGJZ+3jxqPFsJqEVh2cI04nSpTpiNi+DpgSeEzhxEOBl6ex7OKfRmiYHzwaDIYvqhlPkxoT0/WEkUMxRjGQ5JMp9gbApwLOfKPUanRURjoxRk3vNQsON5ahm6RW9nzIB03rfwfqqMYMUjy1o9TJPoFxIy4rjRGsRyQhibZSJMVJNoN6EjSL6amiQCz9PCVwKzfz57yOnH0BTY6c84x5goTsSvmgD68FUTQF4JkyID6kwwmfCkRIG0Jn64HCK0IYqCxrJJYVls9BSZBPWQiJj9N2APJ2OSUkQw0Y5SKZOQogRehIKqeAYJDRlhaC/oPW6yzxiDQ5Uauo0IRk/Oupht01HsJ1Ji4I5dBIU/ABn8aaTg/p15lJe6Xs+eYfv5HiylyGuEbpX5d3BMqWHx8RoruADv2DfjSNG/VflIHqysM/Z9581qkQ/W7B6cDo4+vv/4n/JfxjiQ+IMBi0kybFWNiH5VCxyXFilgETk4J4Uy067B6Dq6SAtsiiANdvF+HmWfCSsbhisKUIkonECbxIz7f3CpKglzcQeBFA/sfD2j3gYDJohyBTkIeDBL53aUlSmbOwn1RD7M7vn8OU/Gd0dS3QXgRHKYHAqh3YoKEqjJj2SUiYYJkvSoRJtFYGXvSN4/88+Zn+lwm1boAnn0DQuiqu6wtLI8fh8LTjmwju0qniidBSr2UBy2kwzeiA4oqUNLZ+jF6GDfnbSZieCkNT0ezDAyeoYHYX1IWjgyjgITNVHzZ6i+/QZKDj0XpuksUJGqhyzDCRDUxekLDb8HDCOodoKhNIC5y8KtpMw+WNaXFd5uGAGr8EBnHBnYGLLPkzesixkSFKagoFvF66toERK37ENU4W0HEpGsb3cppf+QKNqLYzgrKsEgJiFrYYRQjR32sHAW+52R0CYJ7JG/QoaTIj2k8qYIImBgmG0MNSsWlPSuI0vc9MNJN7puQX41ul+GWvN1KKT6lBSc7c8uMMWveieJJ0/1KGjmUU8ZYdW6LAhRzqkP63m7kzGTM+jutqaOCEgZitQNSabdEcEJMv0Lwk65E1o3gaI3QrJPhzgAkKdUyAaoRsHhzmWGd5NSPiFDNsohxsTJPtGYfpQmKYTNJRNfgHyIZiIyzTQf8wjV3XbVpKAulJiWdejxNEYOGpU+kZNbo0LnfQ0qVhOYyYTdp/ltUxxSBhKW5E9EEIXeTmCipiE8AZNGyQyou0moP5r7gyGAF53AipkSyWP7vKIdCjUZJ7ec+PFsVCwNuF4W5l+WRHv7VjSqKzCyfs0sVrCUJYGs6v9N0h4d4AYEMPDTWFEMlMBZRy3Hho9d7l8tT/sg1gJ25qCXo3icQpsqrERDlB9BwjNaJmkxIR0v0ZQaqKQkne3IaLRPHahPpWnjyASdU4XmQ2vaU52uqYVWqSI9+pEnpzfkqeHJktH2uKumc1S/rSgBkXM3PaxoTwGUU6XBNUW3EnWwWMtIZhVWnL5jN9Ll+ZGlokfA/wwXgHwD5AGZgZ8KqET/PvQnllGc4AlEVmU4gxMgL8gtQ5HIJjpv+DKosj3h/bSG2BxLbABBrI8j5KJ5KHkuLwLDtEIWPlDEGNCoDKWEyxOAN5wIudUEESPxkk14CNSRVuBpSTkRYbIULcuwelELWeUGRaC0/naCI1A0OCIEBLOZtH9g0xDelqqaKV2WlJM7c+jCZxLR5IgFaf/OAl+VXktPVVQfzwx49/HX9mu2A/NOW4tfB9lui8aVPxEOK5hyZMiMQI4nVNs7EJglq2hNJJ6W0hAlgwwCtWo1VD9rLurfdL87Y51nu/Nmgpt4e3b0vLsAucCSV+0bvuOiJoHERWbdfVNzVeDPiep/HAGXrWNkQQ+H/uMkIrlR+C5oGbcSWJ2gR3FVDRcYpES8iYcvXFJ/uqjRNZ1EtnH6nsznx9XF7+nPHt2ViJJRmwkFNbbhcGuffs0K3A6RyHCELSMoZN8edyUhbGcjB6gnmxieOPvUUJcYjxwJ1NgK5I9jVXLovNFENzhNtt+s7D/T14EB/+/Nq2m3OkYZG17U7+pjG4F8GyrULLoZ5Xwm5OmYDFUaDeh4sY9ktMhXHKvjZuBSgs66AhjcroiabFh8G262/Oiv0djq5Z1EMcJIX3R4qv/n9s3onUYFAm8c6VrMzBpto8KGqPAcHR56Uqmx55tlj/5gVnEzEBAJI4npqFO/q6sREy36S/3zfwav9+9rRcrxcOBYkDnzkv6PnZW/3PqNB/0d7/woqzRuhRJ0wByXo6zTLAZixxe6T8Suu5wpp5BJLCjtISdlnEClUwNbOm340ND8gRJe1z/AYtsRcQXY/lnMXsqM5Bauyo41dPVVsAdvZENyP43eW7lgBGCotItQ4aOWdlhZDqlgMzkcCDkroW2RdrKXAquSGc4MkQuazwk7NlEMd9ki0EUmcsW61rKtZApSNmio1os86zjar1bzAQGylJ+YRHhXH0GA40VhEQHc4hqeDFRXGhGa2M4SuYjYxGleGw4zrSsvhCjMatNuIHQB4Ap9CyBJeAO/S++3KwRFDCFJpHKmZROEhJXocuFfV8WwEEiJ2gS7ihpmFoMQXVGbCRyaNhty1e2UEImVIF92cxSyigx0AMuDOF2yhrz+ERBpU6YRYLHMyfi49GRaj7XPoqoRGe5XFQWLw/C7beA5CMc+UmExi7LQYqyUDQLJ3OEJbqTxrI/VxQsAF7yxa+pjfbyALVqFfEAWC5Ao2wAf7xBfbLIqOY6HTj/uG67IiBkV8Xgazso1/lhuyOs1B4iPzAddtNyYm4Evp6A+SH39Yqxc7AMvKxanaIGzL37lUhZ7MzHax+LRgn1FLzR9vN8eCjuVa3IDIeniw30CF4MOT5TLCIFRGAkGsMRpHUV1MR/eh2dneu1p1dZwiHVqgHICMlqdfoSEG7mXfkCaB7DyLGdB2w2o7AoQMAKnljYeDZiGXMyLNb1Cw0yVjEuFGq/uVPOm6deB3TmqimJ3vFQTY4CcxKdO0cCWw1NJxCn6kPDl8kpK/QRimyV/yHBF66tL1cZydAzTxzBx0EZqH5ksoeOn4PCwWir8/HmreWNedZJL1/Paf4JkmdP47q25EoSs6Hj/5xRytXfOBsyIOISHUM2yTNgHl+vJ5Q5rIo8HrJZEFBKtkI5XCQzB5Tk/W+Z0pv2IZAvXBsZS2cqiyGsy7oC5GtL5FSAPSBT1hwposF+iqJqZaU6Ym6KnS460IhDSaHZm+pcDxm1V0xhLqxn3sSMWf8Cnt1+rq2cYbJv1mNP5K9hOZQl0Fx/CjzNAaj3l8WZeaw7tRvFtj+7V8+9RXPFmYbZktirxk46cpv1wHvnlyaFtTYo2dDBTpvvABcss1/t+4Aygc215wyIfpqU7VvYKAugQpX3YBjCvQDcguKXolu3aVqEa+0u7/GvNCkFkjXTk8qvDY3WOOpRxtHTkO4hB/WItcIV46XmYZ1rv55FSwxffF1xVSskVNYLKNNxqxYE8gmmB2WuMKXWln6DiV0RNy+xsA/AyNcBHgk3Z6BLuhDvqcOho+jgHThHBKNZvoE7bNDt7W95j6l5LgMQ9syOptuc/uct9lsE0TiKTgnC5HQCA6SdXsl3dRNbsFemIOuHAUZbDIQE8bmZ4p/bPmNv8Og4UlQv4BmcuuL7k5LIddzpdS/+45S66GjxKJhdicqdJiTi6egknu+V34+m/Up+YjWq0JlmK2YK94CensTGBf7WwLwmdRLOFmX2j6z1As3ca87khCB47lS34kylo5NyWzDc0py9udjZO7aiQV7RP6P1hAY7RcIGAqznPUolwwyrmJf/DbWmZNqGeAWPBf+PoJnAdzGQVWCOzoFBcDQnA7CrQGXs3OkMK7N24JNDhJ/ZfmCrLRYDBAzF7wBDqVNB30L/B0NXqle98Pmk3liC7yta23Fb+6ROYyiy3FpB/N03evRdN+Ep1bNvqIL+w+wb8ZQt7qU4HpP3Lv0jT84G0QkKo3ifbURwu9ZwHRex3AZX3qL9jX4YWbSzy345M9Q9ECwKQux9DJm4rH/lazWyHbexhsRWjNfFJSBZPMu2cm3+wZOhZwx4CMQ6rtLLdWtVsKcoMGf/YV7nNHi+mxZhwS00PvNigmOFHFxjGse0jPqsAAeMJHR8AOKU0L6d27iekziNnOJDX+cZDpg15w8pBi4HM9DTkOxOxsINlY83lOlLooiX9Vg1sp4TLlkFqxXQlS6Foj6mjCfVjW0H6O3d3zKmiXOpb7lanHzP/5WlmbMn/sAFaSqj9RYWsel5EfuiWxOBlcKOhH+AGp00HHLX4JVqTrQto5mIFnFadbJm9HbsB4NkQzU9mhbLvMzLv5HgyfMcPvxF4wRbbpW0TYsjlH5myjSoOWc8HpCGEl/c6ROfAHW/ltKNZXKL2YFVO/QUMyZr3jew58uBgDwb772q/cndjG2b0EFCa7tBTmoaZNRFfD8OwH5kmZN6/XQuu70HpQYADUQMXO1DKeiwPn6wdIkwotQw7zboYnwrmwY3nx5t5tYZM6fr9ZZCCAO8a0hUzJVwufdrOWgurmMs0LSEyTBPqYmP5Kr5vAvZgVeJQdJsXBPmacqtKTIGvp1IzGnmb5+1mS8ctGVxzWZxnQ2XoyXCnWWk+ZlbnJt9RedMtHzrFknrdp4TD2lxLILzMm8++wem0WstIBKom0ehGov5GWYZSllcon5TEj5CEyHt/lKi9ESRQGVXNfx6C4XyEr/GPRriABMQoUZtJNJhbBDgJNDKgDFQRk0Fy7zdagNCCj6Opc3eLoV50JeQOkTJex8tgBRqMnIl7jkXsV3BPG2CtAppJrzOLy7dGsa0UxeOw7oJk6ylBWO3SphypSMgc/3r5RFZE/U3gmiBi22O6tLuEch8RlEHSSnbyZknUze1RCLSNSnU3CGI9KacOmAFL0HW/vJDOLPFHmNh/iedfnnb7NORm+XljadR6ZFHRl+VJjsArGVo8gbVK4fIlM1Ezyvwa5K251MtKns/4cwt22NTX00HZXA3v9tLoAhsd7pSYDnc0+sTnEq4yBgKWnhL1DA5A6XEpUnnq6dwNzzSeotdxWtNTCYDVOmA47NYiYKfPDzXu7XpN66s8ogYRxYmRowL7Eds/uIA9TsOYQxdg/KqoXE1s5vQcUdPesVyHjTNs+EJe1ZtbiGynxSTT1CHQONYGocwmNFfVBS8LREy7UBKI8Fb5UPQj8luIXAXTRsp5LBU9FIZ4QS+Af0SHzZMCqSNAwgEtm4kA1lzECAioitXWgrg2MJe/g8cD/lQyw92BB2GsNAfnB8S9z9LAUeP9Ed+5irib8i1tOILalXc0Bs43tcRpeVKVhaZBTyZLUhNlDXC5M/IDjNFXRUG4EC0s6ZdSHJlCrHHmGhSGmRIrhvOv1sDHx17N2g/emoQ75OtpaFEOufy7sXFkaBTtYmCPcwXt+AzmnYYywuYvnKJuhvbKluDj6Cz3SjauBbiIpLNplA31D74WTjZKdi7CzIIaQQuLRwZBQaSrUH/rtX/K8M8JE/7Vu6blxJAyRm0UySr7WdP/KWik0kyuQ2YdZRIk8wwQGgz3Z0HUDqWfoc2XgILL3ajwST4zdDLJOE+Sj37JF4GHjCennqGYCKiUhB45BSM3qpnIynTpCVLDInSsQuqSjB22EmfsbxVDpBB6CdpaOl2x4efurwTGKrEl9RxcDNGpikRwk9QflflyHq6ZFaE7Tsjvsgv8i0z9BN/rB3x6PO5IajJDdW5UgYwtDsOpCfn11MjhAgXeWkmTqp/smgcUqBkR2tVku7sUlH8fUN8SHcaoUcTqIlqxdQv2A5uq6sIadG39AFihrb/OFSWOEaqW86K2OIsVKYvYTOQToeK0j5SWAJS5JAlbypfyGzP/HmDe40X2SNJAROKzasjy+le2kewifgx/DYjSvlT/0QEuaREnzdMEEhPYSKaacGEpNuD31/L6PIRNHr9pqK35Z4EexA60PZK1Piyrr4gfwO5ifXZ7AVA3oU/j10QhIZ1GbzPisQU//obFM21Mfy0xTWpokqxNsXXsboqZDsipL6lIKo77aLTQs9bcwoSJ7eTdsAjMkzAi132tizyolt1/TEkB90vbpskMSuyxohk2atFHgUbql/cGwWIXYdLc/ShhHAi1Gop6V2uqT/pChLjcdggXhdQxQWa7xmiFwZKMz8RfDIuyPTwgajpF7RKSGcX2bisnIbB9VS10F+43MnGaglQlXP6zXM+9wjGLA5GYHZyM7lUF12uBt6VvYjl1ArsTozmSVRHZCKiUJOOwyglJZinNy2pcrek+YvrVhlTQm/F7WJOP/8WkYmZk+FDEKUc/Xy9RGOGthqVSuGgDZ+WKpItnBWZ0rejHPj2m9gHCTHoYS0wn9p21nsp1Qs+sC2VdVh3KZbw+LkmGk54TAFB8x3UFsJQPWNqxoUZAXFPqVmVG12lbfKzwbFR2WI63lcqjRcdVI0AqZBxnbqPemgIWRNu3L0K1VfSGNli82xGhzexKDQNE2Um//P3MmDrZTsSpvS4fRuTrfacnaXoYGLba8sk0lRwZTYVI/8fxCUVGqUoNqgQ0KgXNmNjwCEjTmI+uyntkub9Tt1Gaf+2fLXAPq2VApmBSwkUMI0tWN1muZiMNwxEy3TiR4swL11jRFtg8F+pUuhgvT/v1ayiEWodb28RRpgHBrqZU9eGSHe+UXFVqMuVraYwkmflOZ1XucmUqqsij5FiNjB2n1YbroTsxslgJLio9i+OmC61RPK14UJCdAxlHro0FA69PbT2vu92n5OkxCpbfKl6MfEhhwj1Bu6c/+gdh/XziwkfGDMGGa5s+Wo7GGhs4oVANTZ8AkU1LmmKwJ46MU06mrQMDkPIZ907nIlvmGu1mzoJuzHLV3R09sokpzeDfMctiN5SJdmZHr1lwb/xxraMRpwX0Nya0k4YVk0c46wX2giCKjALQiX4X7jEunAV05BA8CUYLzOd7eRaU92GVS5jFeooEyE5YfaoCOSgZ3gBEHs2K39fI1qO6Lw4UDkFdeJIFA9euHYulF8EjoRHXqFqxgL/aFljmRStq/jDCYywzd5+LJ+Mmc0//isFII62IowTN2OhKCMdYls1d1CNog10ktAimSahdQU0ACQG9fAs88LgnEZycH5YkbsyOAEqrLNo8BuEs5aSqYCjoeWQ5sJUKqWxig1tIhPnUb7OZFWlkbQ2CAslQq6Wdmacz+6+JCNldOyPRRii5hqKPhN/uIPfTMcH1AtNJmMER41amU3jBH6ycvpT49J11Gvboc3hGunNkeUPDd+y1qYvSflXb36jN9SNgVpxsdV2iNqcouyRilzzi2I67QJLaqy8g9oYHQIsKH4x7brjxojaR2d/Nffl1RybuXOw7QKTAfLbtrnuKk5MVDcPZNrkkgGzOSnVJt3xQJ+n4qSIgJbYJ1oaNFuQ1YgNcq+xJs/SO8G0wlRw1zw8WZ3lmN8suVMGBns2ujN8sQaijzYRFWpqMj7qBwQprnhMLVgDUUiVxN57Bp9NlbF19eaN5pxSDz3EsJCQZQ3ho2V8+o/tWBf75HrR3YLKni4yYXiPatMYVBpWY9Hal5ZAAibd9jsXJrJedsPazS3krsbbsrRGVdDSuya2KabeGPRgQJv2Nu4v6lumPfJXH1Znxq4KLGrkj9uTgS2L5qBSRCC2CGB4NWFyQ5f0I17bdrFhhkRqJIz46ZhRdEBT6dgEstva1gx+or3dm+kc39bbfTHAyhx8TAJNzt3OOS6WJi/zqhbO3ddhOLV/gSfak1OVkohsxjCdZiJucF5nPoGW+bysJDSlWS7fXUAK7SWsbK7vwI0z5wlbncq4kaN86xTNq08SyE7I/bGu2SKNcGg2I5sU0M5vtvAl8slgdUD6ikSdQ2+tInk/oMTcGbtv9fH/oOkbjUjhi0IM9N4HKzeH4ADbcGs5V4C1080PEJjwyJo/G5bykiEq0WJ9GpBOTiaf9hXmHQyd99D2Y4uKcOAaJ03D4BAXM3AGswcJV4BZcOAbbNW7QoKnLLlFI5C/vbLyr9TY8xQwdtOH2wnnrwQ9I2ZvbgVX8ZTzNAUtYIZqEGsoZdLFQK5Z40fT9NLZzMPVHnVI03XC1FfSGB/QbQU2ldat58vt1j2WrkP+yDoa6rXZO6nmoTnRmVe4806TgeoJrkTyWh7qXj9ubwRW4wUfIKaNiRdEMJ65xwM/aZcL9KK5BMY2S5a0qWsYQM6ArzoEK+wEelb4Cxoi6HCnwiYhwr+jsD1YG+sZIzMx3ilWbvLunSbu4ZhlCOeoN7Qha5oZ0Ell5VYsK2ejE0UHy0cMBctwkLSpGHBSoo+aWIzJDLDgDlt6sOfOuLEADb8jo73sp0PnOV7TORko1H+y4JBMxw5iw0hw1XIGlTUUJl/TS++xgHwmFRKJM4vk2n4TmZ+hNs269BG/+/V9P2QvLVL8BKJD41fenWprXbVGg0NDg/P131Mj4ePdWiGCV9sP49zjidPtRX8A3KrqqJmVF6mCwQXIR/ykyrxHhlFGR1+MSh9Cx+1Ap/jkxHDQIfyGfYNzoR+x+x43rYZ9iBwA8imDCAEhN1jtX+gVSeqaVCM/15TVg7BGi26W762sDgCTQUU8tfgP8IY5mDhTwCkTAvxjrvkYKK/9AGx9yql5CEEteVQzKS1GwjKmM7h34eI5gq95wBTGlREW1QmaDH26R7kn3vI8mweYrUxOpcRkQIad4PbU40U9rT+O0xQyvpUby8LdEXzXNhIjmEBRL6KdECmMkg1g4sdQWwIFP8nLHS1KQ82WEU6OSTu26GUBAyZnFmbMKS41MuD46pSgQKs5/yWYrOooBXcYVegpDIBci6HW5EnNIFZ3ANBObG+cMPj5Kq0vq+xanuBR4IkLABT9GLikZg8geIe3ixrwRQXbGXM3fttnecmIm8ywUraZlUMA7W4Rey+ZupiwW51L3ShFWLiWik7vTRsceCGrGNbRjHDjOTbjavMeKoklxFnnbaUdlpiQsOoSgzSfd2wIy4Z5yA2tgWEKEsp0xE3bbP05DBxwX1QT/s9jmcbEO1P6YgB3ITMkx7L0DCrZI8R3nyzZVdpTLpMUX0/crPd9VbdRkU9qI6//fBi0e3YxjAAWlm3e7s3bt0IXiMCS7zehpkeQlTz7NEyArvdIIcOE7NpZGeZZsa/eXS1zBnh8lLT6EA97V2YH0gO8dxOpZNq4ORD2tCranR1hWKLO10flhjilj3R1j2hatqWPrlKyquV7Mjhlz+GcpUspPapcV5v0iULta9sWZGRmWYZFLpO518qtEsMsdP65ji/6q/r2wDwnh/r/eHYdmYiUK0u1xQClJvS2yeW8gMqLi/SjnOidGpa9uhsKhBuZzj3Fy2q4BHPKWmTfqiofz/R9MuM31KDeGxiVf0c1JK8pF/ewgynBfUitpFVnsNK66RniYTFdR8BO58H2L4UPhcrjV7XLVMZPsDH+uf/pyQPT2iXYfsCUOqx4TjeKZOErhR0N4Fc38Bq8Q6sch3w0dqLRuFuBOithGVUUZuQeWcj3l4vKLutaKtjInh4QT0CRa1p/65Z5FpfswOD0pEBcmgCUafgE8nEBFQ6hX7wwunQgsbIaRuFxZst2wLi6purgwlhRAXLG6BpUCNyh+kUDW8qFLT/qWF+uA+fpA1eF7ZffLMjpuVHqRQHAwLMI9B2dh/k24GvNvfvPYDV2QF3GbE9NIg9q3M6j/OCdc4VA/Thb3KZ2yBOzFQD9lXjjgajsvUzH4tzp3DhPslxcW1PmzMp2TW1D75azIp4XR1A61pVLqhlqthHy40sCw69+kzGBDov4i/9VaoXaP0J6Vpi18+mAWnggiLiPfTkeFrcDHnWIlcHMk0YPOzf7ZInEyPPAEFPKjtFlM5DUDgdUrdzzXKs8dflFDuNYfkO7nxlbTNc2/G2bJFW/JARCqC/XnN9Q6TeJgd6TAMiU7bb46BBruDENmKjQAHIFNGTLIPNWRIf2nJCMoqrFUNbwVAYw0zF59flo5UZwWalt2Ugb9e5kRQwTCMcPnSMPt2Ok6zcCqInRBGPfjtuCOABoOVZbEo5yISTOu0ZrTwUEXuhMDd+by6RtWE9ws5FnG9rRLJlahWRilAgO5URLx8dAFgrNdPEPXKBtDB5arOigs9n4D2nwbBtlHBGo8f9uEFg6f1Jah6HQQJAmxmeAakpKweLaJpkn6UyAJ7s6zWWa23ojqAGn4vLiPG9sEJlw3HOV9hCwHAiQHSecSp6OSno9cvZes1ZcVJLSqkkQK4nEE9tRDt8H350qs/PKWDOFT9W94kesNax0OV2klAmnA6qmb2GKNLYesjkqxQTNDDjI9lmhnOBHlkqVSgJcklaeUJdny1ypjiImokGfuYA6MM6uKNWxsLjDlk1gRnqI6B02V1d4sAklCZk4UZbuVZjIE6xP+ik3x7ElMRqxc0+sUTdtoxYv2VjgBapPTo5CJONsQsKqWOjUNZblpsGMCkz7vrpJjjrBFVZxTI5Z2GQjGWwboaa6dcsotP4NrxLTe0Qplc2r7iv4M2y/KszGy9Qe9ooKtGM+hzxjkGlKcu6lAd2MeTSZ+VNsNsBl25z4wOqqk5qOwllZ5qoyP13Ru8M2zQCKKSUjwZbP9OkdCKugdiPk/CKiKZAjAqkjqlHL9mBURnye3ijijxVJw9MMoliPad4RlpscHkI51ltOPp6eC9vrvcvgD89kHtk+rro27iiE9UkJ1TTrScGLwPecTpWMJKV6DksHrHsPnH2/4jvxdA0rf3+16qazPqzYCz6l0sp1SJm3PVrjcEX2UELDXR8UTWGfMbAdEu6j0C8joqs8f82tA5/cTNxzjzeh82Z8o6TH/cAjfer/tYCvIUZKmsG62Sqz48B2NGEXtpN6+0X6vbxvkkBh/zJoEABvupn5e6csoYMLItUit32FjQ1SM99jqqtMflo9gJOY9bf81IbYGNDos1VMVxp5M6DKE2tDkr2zPEI7MztKG+M8QgFfdgJONjaf+eDpQC7ZO8OU7zbDmoFT4JmRUEddQP8Omn7qu/KvwbjFXPA+T4/Q6orZ+q7CLKiRS+8CfFbw7oZG/79ZH8DUWT7s368ZqAc+VgeLviaN8g/bD+MftSEMen4t12JYhTZR0QeiJaiF2Su3LkVxUsTQTM8H9XSdvWRIZTrmEWziXykIVrcm59LdfSOa10wPPhqraq8kOxfJNRIQ6NWyrwI0OIHDjoT0AFM57FqKbssDlBtxaFNJovpmXoJQvv6GSvdKARi7M4pCpv2HmB25FhYyxXGO5V3KnvAwsofumKJHTerqYv/jcIob5QtmL4Rn0+pDrtw/sb6cijCeHXVuMt3n1CQ0FJmz8zh2R/BgTdBjlYiRcvC8ziJxUmNoTUdusAd53QkMc2qSauyLcd0wezXjxcz3fQ7w5U5s3AN1XJW7payNIYx79MdqRyej+ah2CeLnCubPBqtlDU52vjLIrbZpVVOLZxtcZ/dFs9V/fKVqKX49CV3xGEY/NtO3PmX7YYgR6fSZhxMfXd/6kLM8S9lrE/v29NGyYjSBkht4h4WdXTy+ekmxvkglFOyqvY8LB6n1jJ2yaUGMrFFO+oOW+Jnoi2L8HdaCT9ae2rhStb0oF1UC+xbJwllb0mOMS/MlX13qqIoIMFqdVSteBX/250gs35+qSjAtlJUuu8lUL+of4R2ZWd9aTYRtb6VhaxkJe0kFouUmbmXH8ohA3+RM8FkgaCmvxya1iMswD+N6W4OpP9sNP2bYtrXRzUflyqFNb/Gx9cc1vAPkoY+AHxvEqXmPj4Q6M9YdtBlNgDnphaFZ7Z2Pie0kX+Fc+kIjB6PXUfoF+RZ2/Bcxwd7FaR8O2bXDZ3pam+n/YqlbsOTHXPzEsrDUZ52pwyRGizQBMWnm1y13tqQBeiSfU7bwaW3Tap87O7uJYIoZo7x3pzcJuNjfqizKgYME9LdkP/IEES7uejWLTW3x8MYUWL/qYRWDBw/1JRxW+g3POtbwuIy5B/8u5LCs4S7Bk8kmYoDEE1BHECF43W1ULdpgpNuOKocOT68kKh9pNE+57cdYlc7mPK5CDVz7iCPB+mdsFLgRiPF8mS/uEj0ButC2mDqptHluOQaEQPmyIgE3UYDd7mGt6FilrM3kMpyXySiq9Mu+IcUmQ+iOamIDw4Qf6U9/RDZ99WvUQxmq860jE1QJR5YijJ+BJX2GWGE73n6AJ+n6/aDjS32vJJBrJvuY++8HWK9uWSX4UT9pPpCIyLCSxpWPaLg451PKUkN/1XAyHhlZJqZmE8ipFeoBZis26AE9GwInCQGO6kF0U2zY+7XWWBjjPzmDvLbrc5S1WMcI9h/tQBqWI9qP2iKY1eHxoYPxcE+gaFYT7Dewdli/2Qklk2iYZh2CRIrh40iTuyEhxrPFwQywGjs1hKx4aWMYaIQ3ode+E+8Ec0/e9HnXOWPCcpagenKVsTFCRRWJLt03htuDDR9qIv2YSSKsFAxDsE4oyU1ZScsWQw+/PLO5Iqnuxx6TCNS1cFGWwdZtkm/6epFJcVa3z0uNx/htiFx6N1oL6lxSNmHUW5A+12M3wPKsvPTx3P7w5QU9wKU3GlsikSX455uEciOXXDBO//wCwUo6ewnacs529w06wa7QeebXHrmV7gOVrCSuTQBdIZyRt2Q5X88UwTvYQWJVzsKMJNs55JgEI7FWjj7oONS9U62Vci6mEReEKVy2vMbxF/vu/lybpJ7Mcb+V1yk+H8VpkL+B16LTEX1EP9yBP/xtXDLCL/p1uUzp5h/9vgofXumX7IGJIM8HEathUYlVc/TmuWHfheQy11caQs/87tZxN06PmloctvmL1byVV6CovLldcx3qgY8ECaBsB2OLFZBsiXQMQNClw1EcmRBSr7UZKlEa/sS2O14cl1PmxZAfbU2ci1gxTxblSsBoPLle3HImg3bIu96d1XI9ruQ9rrxLHVzaypBxCQGgb2sFSHS1wDUE33RZfyxDawIswwsB4/5H9F9SisnZK2yiAigQGOnNMDqDirbtBOwTGXPpxz51OMalEbjsp8g07KxO5rwMSYT7UGqy0BqOCnLmbGtPE5lv6NTeVwAGvtKolyX8F5quZBmrz1MmLsr+vmbeIpibYK8I7yKBRDNCwhDo/FvcQT8ln6xORFGsgdaTh5kXoJKMbtVG0Mz0I040vXUqjM+VkfnXV+KIkYRdhsrbGtOOVSCfDv00dZHMVqi5SbRbfYomzGoAM9SPqdpF2Mn3W7PsJD4Xe0nz5BUrPY385ChOJ5EZI5ET6+yuXTL6DmH4PsDoGKU8kCFBYhzXnIN5cE+o9spXUHf8GWmJWOiqjCofA0nbDEjm3GGKFDT41cEfuLIKsZllMwZlnR0ZVmIKAHE+aKppployP7DqItq87SJfKuM5/PyVkMpyWDAV+e4BPGpuL9FF8mYA65ewi+u4RDuXOSNCn56u/ASEmlmpOvwdv/rney/ZPtb7fLL6e9OWh+UrqgJDq7UuviAxkkhyYxfNSF/L6/uekWEebjKVto3T2f0/B4nBKTwUfAZY9+yiSXMkS0T2i4o9jw0xbHUZC58IKtXjn82PY9IdaS2Cxug7sSR8VNzD0VlBcLfa6l0tJPPAVIprrv7NjIYhTDoVskajCWBW88LgfFWXv3No7OFUbI/AcfIO2GQQriKjziHKZgjHUdHbIGGDJ7NzUJPPER6UFo2RZiCvibjgxoeQiGYETUVVulOtDM4hoLe0pp2yKNJLmf/ReyQwfZlnRvU26EdvLQCadMmU+Vb2I41cVuqjAqxRDv3QByMRy7u7lCY91uS8SB42Dfd1pbqfW3+iMKxaQPhozM+JnpTglaJFR8ySGzeiO4ysdr0sd/ub3FAzwdgkJXm6Xt9KivmIrIMmrGqTNylJWWEpfDh6XaQG6iOE78neTL2Rrx0bn2nbc9rK7OmREwvIx48gEPEdunMvV9tSxPN1wYx/5WjzOaLb9VQIcAe0t8r4uz9uXWV8gZtwbFfw7E1h5vjetJPa9qo2POISm2/CSDw+08AIVwld5OcLvpwRx5jUocylv4adXnSLsxNOq4GbTQaKk9VjY/cb2Us4j6ihO5ARiBmN57tkwvOVlyg0s0aIan5z80eb5edNmCr5wkbsbnDHPGOfieOHbLuOuREXjZe9lA1eYxwzg+LoYEUqXMnCcmL7Q7DbVVR1PowLusVM1lDETGV4zcZpKANzR8uW8Oj0oMkMqaqQvpKtpvIgJrCqqjDwacdw5co61oqFR6zQaraCS+DdUxIVJyy5+8dR22vZQ717d1G/CikIQXX5pos6bjNIlCl/DWu9pTLcwwNQFP60PszTd02jojgZVvVGmtuGjs4oBdcpFaaW8SgJjnkvL1kzB5bHrjVU4f7Eu4TMxmDqKr6lVUMbDsB4IjJf3Rk2tNno82aB5RcwZp3RD5w7HNLdD9ZveXZsA1G8KHrTOMfpRUa+AJIaXkLpUnl/eGbxfk90UlEP5KGqjMxwOY/xVUH1ysrAa72+C6vJCw0JD3fA0+cZDfX56hiA34oV8Y7/g0nD4PJq/WyhXc8PE+XX7Bt//3H6aWb5U+fpy2oDjN2dhxt62btYT7R9U2oeg63waL90lWz68yhxk9yEzNhWC9C7h/b3BHxaZQo+Q7UCE27eSkTldEp4NuLeEBdhQRVX39BSLhjKuxnpqT60AZe1IGOy3mUyMJ8zK7/dE+K1ei0c1ruw76yZ0twffPgiwyjMKiFr2TsmQV/z0uZ6eOU6KTzWA0hbo48eVKhCS5Ui4LyHLwA3vW/+ILcE5pda+71hcY0h44mYkiebKTJlozuI7OmSpMwZFeZDwbcaGFu/0pVWsr/xvSEW4pAQctT/QUvLtuizWIdxVa5+zP/7pRa9Ge3cm82T5jKYXtexym0J88wImSyUVOsJ9qls64HR1I6aLEyenTI8eb3Kw1EMqZhwGzE73iMRUTvlDjDz74ttENxErjy4UfYNOPTP8vNafZuthi5f5ekNh5lhx6FHE0djT48x06mM3r4aPUldnFD9f7kfUCJNy8IEWJqzkk4hUqJWSskVlYB4TEe97O1mHWItdTVunjbvXoD6p5wvw0iUG1OLTikZOdq9HGePFYK+VaH0JYsTI4jXwbgZnJ1zkvGyIqoVzHXmnt81j+hDYjXbK71ZZ86JCRAxcMRl65arXEtx9Z+n+aI7wfvUQd3j3zglHRXery1GUWuEb8wvCqTtXbndT/AUoj73wiuHQr0j09Rx52hHp6WPFb/HDzIh0bOUvYsKPXchkCEETJ1CkCT74RIDAPRf7mzIUrTsEjVfGu0L7LBahCV8J9bX2OvEiAHnH0vLm2hDGMWt+UognlVSXhlSGjIXu0SyyyL7YHuBy23fE0kv4egrBHtZOOFFp4UTs1K0VUJT3mmIf6pcAqFQLVMyGlbqXpEznxdsCxRs0ZVoYmcDRJHWwIwDa41fIVHPmWe2QmBqBOulYUnPZfOFpSF0gu4pnRiCfozH83SmTJaKwDE24KxRVOrTszvwFcufW1jkxf643uHdEB0ffcL/JQsh/KCrGeUluTlpZqJHbG0ewEkUIVxFB1KTVLipCPzYCeX+NrfaAtgyv31DnyhW6NmGeDBloXh90VRsyAOSyEbS73nj8Wpo4hiJAnlKvPk/547ka+CAtiZzu5NSrxIoRt1JGUl7sr+UTXYi6bHVnHqpSXNlALIamodEG98BAsJDQ9iUThFciUGc9Iry/WcR1DwSXXLsg6KrUKJN5JZFH+I5dk6FCFM5RsOoNxVuBDH+BRgfLvxYXDnIITqlN5ynC0FrO1hzpZa39Y7v3rH8vRNeCkA5F3mAL+9n2Q37vXETMmkrv3x5ZRy+ItAUi0vKWG1zs92HFEygnVBHFnWyWwzdeoharq9DtKTbATl1v+joJHpdosDjv1kAjoZTnF2tKzG9mD4iw4H3374YFGXK6uFvIyLkZQ4kQKJpd0zhIst+b1rfrbcUYfxdErGy03VTcQ/eXt6uiWno3xPNVAC0RFYE+l7En50khzmH7WWnvjYjVyA6VeBnx5B2HiNdOrJdQWrM5GcbtCXu4mm99sJal6fR8/78vNw07ulx4JsK/VoryqUW2cvr9ji9WjunR6Nv+2SjQ3PPgVby+mUUk2/gkYrbVFxmKAlFbY+VkhzJJ7yZs2E+1oT/yJVjWDXjlyjNZq+07u3y0ua3UhX1gIyNaz8a+oQgLPYdPOE9qXRRIYm03f5BFDtdcANHqO4JvGnFpZbEAeCNW7OHbsAeNVnBJo8V2UW/0B7C13L8lbsjq2tk44Pr1Kv67POBLY7Us49WPShlGGNt93nYllwP6+ls8baFmsJUzgnPnAsNB44VcbuPeVzTfRoIIQc6zq1e8/6S4RfEuMhjsghn7CJpJp5sLRfXJjjAr4qnv8iYCBog/kzRB1xUqrWpW8LM7vJIQ0UBcioHBj0YhKTUU/8dfNSw01k/Bhw2Yyxmu3JcB5c53VNZdj6Y7LB9OfqLmpMUtEI2sl457gOw4jAr/T+FsiKxuLI/B9zQea+iBJUngORHYKOOYki8XJ3uren8d4u4ss/r3glaqM4ONLlB4p+suWEJ3p3idInOIhMI+tHv9jsPq0vwnq+7B9683dzL7KxmL07XCl5by03oVbHGL6cdKs/tCD498uu+gLbvfslvYvtoR/PAQxnMj9irDphhr5qOcDm6AAvCx8VGJGqK2cFOZsXS6mkV8zY03eDg+PnllePy1xeBaScwD0DYcF4uTm4IX3IIUiKgdbhaLkzIQ6siDIo5Cy6SgNSJcpnhITSy6OHHQoOS1damUlp4zWY0+MbD+qTwe8NcRdTDgdfbs2fc18tRtZp9tEiAcgJCQ70seUd9rSuK4L2hQPV2ZaMm1Da9yIJlks1cdZeYzr7EoV8m5r742knEetaatTL31HweKlpYREQvtdotWP4SEAELdR8KP8s9P5yjlXiwitnEyyBwD2csjYSkSk4D0mkTapvaF+NkGHdKyAcgWB5vo2+Vu1KbDzAanDYuFi/Vp3SP4Y1mBCAwI8gQBVl5qN0Wg9NFqcyjgxwI4ELAc8wOMG7xHz3kKQO1bGqlRonD7T35M9xM/agSwDC3Hqi8KEjj+9UQy4a1N7LV0BSg08uwQXZwBi546nQe5j3UGRsraq9VuBtGpPuZp/Bd65pAm9JRvrhTS8Fzc6RcZo5SX3lipredaMxICDbPQQwXTz5VxpC1mmJWVlZcqiODt+ULsJmtBlmCDWZUikFpFot5sosvxcWTRdi6I3YGoV0qkwPAjwrI7aHYM8Uh9B+1bUPi+Yg8G1DcHsUPXyEK5Bnj6ufO3qAcwBKGCSksAhijcAyR2b8phO2D3EJLtgfc6tgW3TcEqb+VhIJ+5FPZagK2YslK69Sm32Q5wCopfaTq1xkRjIYL9LQNrgVgNDWhtRvn0nmd7eVxQrCfJKro6Xv7Rq4dP0ZkJzemcxv95esiidjL1s7UpKBx4hIiLmAZcnsXUtpxmZgtVrVD5giGcQQ3P8daXNIdwAMyIIBIXVcTBOESsKPQiegH7Do9D7rBI7DBDcyIKoYLPD5QHA4gk79uQVyK6YeOczj6cdwB+ttHD0cvhkjy3KHuUS2NiZRX7DNnRzWLb7C5xmwPIJiiC5AcxWYZ9olrB9u150iu+XOe9kpApK+FKH7pRR82H5VDD7vHUF6y1mlxyqSkyn0ouO9wAmCQloHICmK0Y9XVoBBLCGg+0qoc7S+/WmsgYlBnIqpc0Qg+wO9xWv8dcnPAO0t6MXAA6hp6gJiUMOiW44hx7uu2SqaHuv/Tg2GLKN2BkLhXL/xXOZ0qZAZ7y5ELu1z0+gZmBrSrTyHKPGABZ1uPQFzMZNYLMilOAZbiDfGiQjxDxdhlp4ej/1mzURgdUUSmOI1sRdkKoUMggG5clC/MwDm2j2nJCQ9g1JtyN8WS73isinLfslKpYhmwGx4A3hipSToJDielqppZJlNtF2Lyral7yaAGgZelotNdezUwKP6yXoc6clbMD73s4PlDl4cJgKXoZScpLGq9fgOQpKpzID9e3jpIREdQwwR8niPxKSRRtgORXYPjFt6PoDyDSar6FlIHLu4voTrYFbpNuCx9pBVwbhDxM2KgCPTtSNzt1tfPdWMVFM4yaBGqDYwhAfpq6k4AhxSypMr3C+VYZW3t73EYWExjb7dC1YmTqgGEsoRI3daBf4EnXLUN5J6T0dEiZN2k2tiS6QgoElO3PWJuFY02CHG3WdUtNj8/GUF9WUq7cCdzMrLQTyKltgPsL+evADAnTgrS1Dm6L7tax9FQM5GqGG5G0NAEoXToMAk6XKRmGN46URpYIX73GQrxMnPhqJYoEVd+nrXOEwT6LEgSPj2MYmfpK32kZshpTPYPUhHBhnRc0UcqM6QOHWuMDCyl6r0V/fas/+ecxkjwYaIDTzXWNMTTTmFQHb+L/vIbU5J+sbEQr+c9hQGCkCxHOIa81XgRBj4bIor2+Um0i5Kx9SxqqTrL1DRTkcKBUL0WReWIf8Qw0qzwhrHX10ejUdlZ5PsR0zhwU1C78hOZwg6j5Ru7dHzzfJF7Xd4ns1B7qPlfR253ONa6yfiYtkmQCKumP7CXnoHPoC8sY4z/2fZayriP/uJNycLwGZfBetZKiUYrdxHgWT8HoHNJpx2Xel28dWByp3kD6gi0kntCsrYB2JR2hHfF7KLp45KuCEa8ntwwQSic+DG28zxOVrUY2TQ3nHEKDsVR+DkwjFnA1n5Q2knmGR2a8/C5WfwFIUkIyRK2Ne1qA58+keCbL8i1Kv1HDYajY3jHeYaXwBhxAl144Yx+UNWfJpgfz8S+C3JDeVnrXDi3GUp1aBRRfP3YKUCo5uj10gZHN74N25gP6jtPbY7T4RLsAqYBdv/o7HZEvUR6JqfQRUrQsIv8zY9KvfpgrClR9Q++nFxSD0ghv5u4Qx48CUWrFA3Eax5FpkQhTPF6jPsODN8eKxixadCvCzfP+00mF4c1DK+/GK9MGFaFSwzRaPtSQWsRFjf30PBcC5z2hSpOEeQaXTkqwkqXmCW110oX2al4sgF3GjBysFawi6jA7nuJgazv2s0tEzpwKrqPMSpG29Fzq2MpxK0q2832A/Ij6nWBE2Y4MRZUw7f0xmTQoNpk9yGgOZseWDY3OSs5YpViFnWK+V0qEN3gtCDfXx5z2ZKxymmq0EO5c/0A6djkPNb1617fBuirxzRlaee57ZUy6msOg/1LCYCdXk6lix3rrDIU3rBT+vB9XUIykZKjCiAopvJ+CtPSwIDeGSD+/6cnGBM87O2LJI13+SYnWCqlsEqVrCJOTRpd4gAOfDwq/vlki3NUwMbw8CdVaDfrxOAdaEwF1bqsD66OGh+0YCWj1bKDIv+FQpGelQH+xHKXrQZzCmjTdAddmHXTgXq310Jc2gvawPXYktuTpJorE9+g/VfV2xGfF7BJxu6NxnNwQmbFVFJdheoqqKsxuEeFOsTStgm2Q8k+V4oF8BBkWnCIQ5Yyk+EoQXiKg8IZnYY1AJcphf19AAX2PQLieyg5dcZICoPUt7tIQcTZimhJ2B/XY272gnXbKHDNSUh2gIgWnBd9eFD8T7wjrVsmuFMsEU2yI+bwkqsa5VjdDI/ZpwXHMWFYvYjs8xa35JZ0KZREoA2WTxslQEFQ+JUcgX08UuFOj2CSBI1dPARk11GK4cT3dccsKYgXiATWgZ6hBxqyjDlGogVDEtWyJeMfrifAEZueC45L7ZTW+owWlnB7v9DH00y1E3HTRwbfQoGkXZFzbB1K4TMXfPc/d/niCFYd/a3PI9niKNwCcX7xzfLHH1vV4v5Y0G/7PKcDX3dYrDLrzbiER9tSL8b4hMcwYhnwqpnLSsyyVnYIZciCALCmDTMTJteSxUheZLNlDExBpj98W/IfODeZ6VyPWAjAJfK3i/xLH+E9QelSGq5npTsaCd6CFuIi9oAYhIRYKIXCNE6klIvbIpRFxJE15DBdO8SdE03oiTuVAcSx190yUrp31/SdtZcSdIrIVI1u/gZcdoeyQQpxPXRZCxZZQOJAaYQhoEZLkF1BzDsdHR0iYqnSPknr9vNxDZjL7xeF1mvEoKkJQcIVHiU4babEDbGKG+Xd/hBrh9KBET3LSlkVC2Rymk5unse4NDMwnWMG6hHVmqvNhG6JjmRlmlFvtDVdftt32DDmh+QJs9SvwhA/83EqvYvonrXRnuLyN6o8fsf2yrytDUMMh9FXrX8PFMt5sv8ktkpC/smVwrTy3CskX0L6QwTL449HcUjSrI9IP9UfZDwW8MaK+3ZQTnc6KVedBw3qXM0ZoMWS5q86wlWAVHaypo6jH7thOV7K/f6iHucjyUGK8X9F07kQFj3yNwvV16rnc5MEPg0N/OsmrOHXB8QuPMp5QXf4CBuZxndzwmP3CQoHRsu+4FOSfSZmOfo0uj4hGx5hNrsrF4hdANwTwewac4MVDWFFgSmbS6xSfHMoZSUQtYka9wQy3Gb9fwwZwA3tGMJNv8L2TaVCtOVcLQ0lxLIN6aLIzwIE7x3s44RpCXrUWUXdcvFYRWT14uOyQvG2CKxg4gf5dIlIv1GPywdV/YJZz8ti+CavsevvMelw+KU0egJYD6fVoJX6k53lBaYh4r0YHVZUbChRvw2PP24tuIHCaBOpDvhR1UVwSYawAj6PbT8+DEiy3DilSRnprhy6JcniR8oinf0Lzi+KgOriv1bhBrWZGYkoZvKEOWJkwck/lEBWaPRJHu5wRDnxv8gdlzbDfWXSq4mNbkaCClpO8FUbEGLr/J8lzyrzhggrYehgkenTCqJqOSNxHaBx6Yg+UQ3ckV3Zb1kwsDMj8gQOyEECYUPg06kJnvtXhNUq/OY4arrD6mqyJAvxmHQZrX8bmTCPMTsis7J+FpsLPKCXI7PRyR/KMPLH0qGjGt9NeTXBfGuRecErNsp+5MP4LCm95GNc4LUGf0cTl5yKVJF91tTjJqHmrXU39PCygnLJBSUBeq2KwF/DeCnrUpIwKxUdv++J4mNhbaK54AdZs5PC0H6uEbSaysXIVBWm4kUsv1KzPAzXbovvQDGqRv1uXTpQeOJRjcolXvy3sKJ83LbSuVYTlC+AbvG9jtvAiJ/IJ+Xj52hfdBmaclu43OseLNdNn7/u0DbAC6jlpfXg8HF6yJnNCzWUjWeBtPPuEdsk56LSFoPUK3lIFxBMNB78sG48sv2C9aSdwdGTi2MzxMhGsPsqt4S7i2AM8fXpxP0jK3Wx/9MsGjnVYu74PuWvgrGJ5nHM/sfkzLI0DJwyAKHN/tkbFuKKd1i6lKByvokirBy9JTtHaqkstx8DxaVk0Mu6tuttA6ZNLvrruLdhp3F294wURNYda2cue6M6Klzxk91K7s23Vo/La2h1IGPCwLh3m75EC6GjNcfdkO+0GK8eHUHGrHF0uiVTbsJH2eHnuxfh55qoA7Sv099BOyl0JFGOBnDck4id41/vUpEFTzKGFlSw8kGvlLyCS+hhqkBvODBxXU8By8TL5xO0bTf3a1+E3TJsOpIj28BqW58ZO+dzZYmlWdveloh2eIlxVKBAz2GbHb/2eRCR5xXXqbM/Nrb5Mif1gHwLa7zk0owXokVgwssSgloj8Z6qyx7fW7ecaOo4TKvOxNsA8NHg9h0Ze3URWV3P4yX3F9MRm0NFMGMwPBSLSuSjLdcY2cfGrxm5yaTVLvOJIaI7hoU4vv/EgP527cdbSg3WkCKgteUwwPe0625aIol0z7xq5miQlVOMMJu1SonV/2OMT+/j72eZvbUxMT8fFEE+3PaNxDeqx80JK4+/n3+v5f/55pxapo1O3kkPJKCqKLkeU95qFD3w/vfK0TIxQVCkJfzp1GyU500vctLWcbX6sCE7rj5pKt9NnTQYP6v+C7dhv8oTPJt5P2UvpQccU/v6/SU8kQSpZ5DqoV9omVe/iOZy3pG7WUJ6c7U/QhX/799IpWYQeD1DOGNuqCj/Bv6yjRXhUW71P+irnvbFDldllt24ARWuT7uj03pKhBy1P082Uzi2f1DY7tD6apGku296UUU130k5S5aFnmnYL7/qChLLraYCPr7KqX2iNmGBhWXNmkUHn0KXnrRhsGkSkU9GgVUxrVOd4NvGFnXJ5brtgvo+t/DZNYohhogn78KwN6ynoId/s1+PKHEM2bRnZhUIuueJ3CCVV1Lw3XhJFLDYabTa4ww2rnoJ5o+4XxnvXWOpzbuuCJuquPsv2iGRP9ctMV0qiPtD2tkiGgUoucoX1kfKU0IhJyfCm35RMc17qeRp1flDxaVXQgC4qDSuza4jazpcrieRR8rGF4mmVW2Ry5Sa/5gqyem51bWa2vudyBclml120eMx/gzY+8bWSneqlHvKonrOpLKqY2a3AC/+yL9Gbm6Ajkix1rW7BhMWh58S7W4A0pH1XdNtUxVEL/bqZ0NFDlWSx7ZHNHGORjmGhGGEuZane1q8MlZybt09EtSS3UbUCTkcsi3/njhVYlMkZLThK/awM8tySn6/hRWD00nzH5P1HvdCeTCx0sUQzAoH6fgTKEi6zQHntyACdNcHrljvo46mYUXYbhhV9hOIt+aZPyoxIYu6JfRaABsBAeOM3Rnb878FXfe6z5tflsJpO6H1ZBM9rV3hS7enNcMkd9peBEnkOlbVaPO8UfqSUZpJmxfjYFc3LAhwlukRQIEKbtxI5G+vqjX10pYQxtuCbpnexYzhb7MgqUnWnbzjavd82zdolD9PzNF60P6pp3yEhpUHJmyfJSxYr7yuQzw3HJ2BORL5SAcXuCw5WUEkTVoShckSM11sKJ09O3NW+OfPcqmfVvwkiW9blMzEMgDhtc82hdDYYrGXJZfjA5j8k6vIfMB8zQG/PfHn24cpEx9hblktnSPiLTakvYwve5Yk6eW4RCpnPmUpjnptY9VmAdOwJqiip8EPxeOS6MafMCCZUoHozcyzjQseJeBOS4/CsGvzHW9mg3jREuvDJ75VgEC/1zpGZKM+ZlxmnH7VrHAU5l7ifpeye2cjpo3LoeZ8TjcZoW1CdWJ0JcV61HZLvlbOWfvOBdZ9WLFDVao0Ti1025tg/oWrVzMlGoC+vzishldB223XKiuGjeBwIkOC1OxvvqHInJiJKn8W1uPwmRcLnPE4hKXs6EPhPys6H1I7+IPYhz2vmd6nwaCq2scSp47rWLuWsBY92r1Jq0goHjIZOqqCp8emUZJc3lxxI7tU4oVsxSlhY405bi3Dtw8cO+1zHOlDcGndTPBsccXIhjjczdZw18oeBEmU2ykjMrhP18jwqkiHw/k7RJHEL3ICKm5nH6SUiS8ZJlMB992/8uf9GhR/JhwsTLTZVrV6vUDDSA6onnIhCwUFRlcJwCd9Z4uWjOquahR6URJoJjC4meEFSs2Cw9oLuymtslf1m9O1+uvQmBxcaclBwcfpxr/IbnSI0fBY0asmaVoRjMd7AYBkeUnOgycPVgd7X8rFEG/6gWuvyb1jG12PQZIZaN4WgdDuFB/eNcCCavxMdTm8ULkjB+WFccED/CBqPcqkvnzwc+ujAcdARUS2c7Of7Fw7GeKpZJmLMNuSAIWPcKh3GZ6+x+tPBnzpi8Tp68UP+9TuWDiVUcbA59Yhiq3GHzKbDGq1KaqD4O33Qjp6WZCQMFZ0pNxQRgT9cTqUFkuZrYMlucrqKkgS/rumjoIQEQA8woTTaeDQkqPxi+WFdhcy1CyWnhhZtjNN+/5b7fuwS99WY8vm5/sMf/Y69bhMppvC/4kC9muavxQf46fqyDUBsWLhLGshaQkeQAzFm74zrULiRDFJ/bi4BkObXBGG3DA9LuHEd37FFA8it1tS18pVKvsPMBTQHDCsAHYYnHFRGyanvSIxFiIz70CJ0+c38VPmm56yHPbZL2R5P4QbpqppdVjShJ+itPL23kXB8OXVH5jVlM74M3Ut+U29XfY/+JR0fO6+OQIIZ3C2V+lxLcMrHXX45aV2ziUZhRs1fFfod47vut79Wxs/nRM7knF+8w8RPRvZT7C8PI87RoTiwdt9bRWAfXBQhiV8y/ViND7GasDjGv1tWv0pqlsHWw3fh4/B2jhuN8jXsalDHZq9BRP4bFZb6g/ueUO6FxCq5CRKrAVeArAjUnE23HtQ1TFCLtuVy8EMRd2IvrsEhdLBMwBgBDYbPb2NWcVlqPYuLeJz8Ex0lSJAzrkAmCmTsLXnoka5iykzi5GApM5le0uszBz12FTtm5XrnRoi9/ELLo1rz+xWrbBvYmCQ/eImGGfgOx5F/BlcoHdGQiPUPFKDIy5++ShcH6PVD7J2AP82MfqVYKpWITO5jCXNE8movb6BPRvAT8vNl57YdtjDPRolPMMXswlgyyzoCw0hA38faoQV9K4EZnZKMhmb+U8xN0CC0dMh1caX3yo2Dzrdbx3PE7xB2Z+6ulWRW0pH9Vy0vyZbv3FO7Jv7Jc8IXBR8r3QDW1ZWhEyQHxhTbv2fswjNz3/MRw5HGbeIA8hDPpAG5jKQb7luDnzKKI753dLE8HXdA2jeY5ABvRL675xnUpLzFFk5BQEmnMENP/bCgwfZfnZINjoaJDNlFT8tiFIF5FUsigNbZ6dY2AI2PSgzRvkDFfdTEcE6xB4HmzENyzNVihhxryUAmN/lirhivDF6zzPiIR5l/ipHVgSZ/Uk+Hl2w939Sol3aKIXCqoEDOb3gWLx5jFmJaYWsgsms4w7hQFgU4kjPE+2Yuyr2/OZp55wdKNyPt4V3lOMVMvFZpEym/aGXl4eMm2logZLH6hHtdcjt8Cva+SyZrsCc/06+s2sikY7CCfvFNn4n6ORH3ZWADjvHBkMtRwwrGRE1LBEe14m57pjgxKz+eTHR03EDLfyGXd0xt6YeKmiEviZr5AslN8jzOCts0c7idX1eLPUk+fYg8OHDwMjauE47wVJBYlwo+yVniRIEOM5wNY5ycbOXLeUaU+5jWc7izcPGpmZ6aG08981UkPvdH4z3ILRtrrO1AkRn7WaROtKF25bDJTmbbj7WNvgzLTMbBJSd5SIuoGvDhWOfehvUECQKam0mvg65+Q44bVDH3CdN4d0WngHRCvBXYfYhR7GX1vf5ezoAXZkYIcoE2cxT5hjSZdcSJLJwD/9kBtAgr+w3+OVSn4DbyrYPn3K48KrYAIGKWcM0SagbEdOTqV0T6h11d1Nfayjf8oOW0DARY8vahGlnkOED6OwQxQK4N1ukd5S4sfxZNTWwhVXkcAS6KL+PmRbfO3qioTON+vcmMCIQT38I7W7n3ovlbZaHDnm49EcFa+rK6EeEnV6QHkFSE2oKV89TMqbbDGcmxa5AkwOhs2cNrW6YKpoWRl7lPGKJKMhucuXkBWAxzjX8rl7crar/uN2B4uvRTCfQ76pW0Q12G0VTl982CDv8ikgxo5alvwA2635Of5bbghSdgdjcygEtriFuluLMRMWq95jd0sDwWuvEzbcj57GRPhK6T8Spe10uqcCv2YjjQ6Zw5WVK39Gf5aYlqVkQxeY8FmgqcFX8idb5jeC5enbPbya7bB1wFwGggRWaQuwtn4CapTibw4ovjHpaY9KBA1bWqkxbu7Vnge5WlPXZM1nxEDZOdDAtzM4Kny+vAmju0MyA66paqloHLHBBvMBL9MGR5HtH0a99o9AYskbyW1gCUgPRXYJnCPXdGYWW3tuFt7JEZCQTl58C4QIa94bJmmf/i45PfyGv4W3hw3KjzdGQ1l7kxosesS1IAa5JUEUtzWQq+Oq2Zfr3bgrmaCVl5Qj6JxwCoosYCqhAUgPiboTXuax/YIEs77/0uxC2Flmop3q1SSjbkkFEamT7myUCoTu0hsvHQky0PpEl+Qv8suF8ulLijg75Si/XE1iitkS7TdX4fT95F7WXToFvUKH19ehGd/P6h57sU58Ud5FJ/2RoBZWVNRlY0gi7l0ciSM9X1XyVkC/QFw+sni1Z/Y7dx6OYdKwXuymMdS1YVt5m0IJBP3Cn2jD9iIuDbCTrGQ4eV0eUNOO2iNcg/1W7wFWlqDR9fJfXzPtcoDd7YMpgeC52+tCR/88XL/Jead9StrfZA0y+ZpAErrCGT3f22momnQhe2iCga5v+ow+mPwPszkxJgADdiQg1E9vPhi8i78KWA6nE5u0dhJXR4xav8LUUGmggUPikSOBhscWidZFAOD84nSRFPX5tuituEPl7XombZXc0sbW7SpWn1nwd9lgj7HFpumf/YMh6KqHPiysonL8sCMLxXenjzG7KJQ30Lkt2WnY4e2gJkEeQHE/fOZKJOkzj2hvJmhBVSKRH/ZVUShG66ZAZ7sXlzzOb1H8U8v9vJgb0mMlapQFSCNWwY0FDg8p4dfL4Pgd8og/QiBK3P4iIUEDww1OYYTs5f1A2IFz/gqqYk4GaXKinAlJe2l0/bKw0RD8tTnndF+JohDw4Eetq33G8sWadir0zSZK1sxDL0Uo9yZMmBpZ+LTubnTTBya9TyXf9HqF3iJ0utGKSffQCNn0qYEeTKz9t9FLdgTabOP73SZ6BQlbfQQ2MC7tGGMhdNxTz5lF6EvUBhl5eCyQMRv7DOf23vW3U18wjlidW0XPfe3DCu4pfHOcPVZAoL5bjhxzu5AC41pUs7nBQTr2nWPixv7aEOiHuUJIdviVtmvIvwdZkvqbX8osYTYQ5gGq8ZBN/j6C9dfFvLZQ+sb5OzEXO9rPiY1OpaoMXZMofNvT5OYwb5GC9ILUT1DxApUkA3Sd0l2aIarw6vsFO1sR5oPv1FaX1DJWsthpWsUoR573H1PMF4BttP7pASDO89hynUMN03Wv9Jqa+YrOpHMyE6sz/6AX+gzfyVB6GJVzFVDXovCmEK4zPYzS2NO6dMZa8ll68USOWPGVuzuiHrRSDeZTKOV3nUdNP076EAindA96MXuuKtYdMuHTVRrGO/vAXHjfPCQOAM3EfH9VmRrbC4HZeqy3mP/9TSSS9X1rWT1gYBMdrAqYxnuFQNCprVb7okFe0KAMCqap7Kcwp7xYN/vUMR1rfmPjXgR/Fp5rPnO5TutSFKXRDht3A1XviLi0WM0RXBuK2KYgdH0zHS9nX9zTMjgOCLBk+csgO0MpfYK+sM8vAZ2GZSHaEcy5ClpCV1qWxsx9DidN0RIxv/wiyfWKvAyEBAS6iacTkOAvHUgj26ltA7reXr5zlXJz0rnmy7iVrSCWxYn/EpL3aya5/lV+MmzOOtVkbc8LkJxDSk8xvO1mE9hcarbPbtggdL3vSxJdrcKoAS6joed+CFNy0ChNata81zERkqwzz1EMz3MCTUpvUrR5/Es+Cog+yJG+PFQHiGPAKHA4AxRiol9sVoIOhQ821YbW4uGhaqUQq6kKIIZ8E8TZsraCcIFcAk2yDPk+KbdoPTDCpLgZojGZgkF0YIZGAZUyXU3OFndGXGule6g3NPuYfzIwayQDmqls0TzMU7qkx6bGcs82jXyQDQwrnyfmPKy8mIDcZBc1CcRJ4fykcEK4gH47hx4J63PJRQjeZdb6PyAATGpGMiDMT7Y6LCTMAPTCRlqD5KES1UHAGE5EQwgPjHT2WMif6jShuCgT09E5iDDpLA8oiL4HGRmCkKY4QlvW7nfkSp9mW9cMDoWSsyzkErOWZP/nQ6KdkFPQaIc9/pUvxcqUufAz5eybvaqp+9BKhEL9BYQw9S82NSHCI0IQCV7825Od+RgsCSwQmj+g6dLJWbYrRY1jjG8MJjP3cfOMTq0B7mg46usTExhudw3FMfM3ZpW8U5OGITtg6ni/5FCaZyc1qxx61bajDHdtvPsRlwzjZuqkvWw7c2Ir8nyj1WYEe2w+TcPPwGUuUSLzE6iG441i6P8PXMcBRfBrP/Kx9IEWG0xEXyO7jnYTXxJ3sYPrG8/qlwLyXsE9g6qk0ZpV56nxFauSmtfUR03F6IHZ2IhqQ41lM+6biisgvhxLJHrLbX8QdUpEUzSG45cDZB4QBx041avqngB1iOiQQB3eJOKkD11P7WOVz1oRPoZeEhS+8JMNoal3QUmWs1TI1jInGV7eKRJAoZuJ9VX6cAXGJDYaMpSuVT5NVjd7OhGY23TrcZFtdPLOXNqbzPiqkL7P7jyELEWrKxnvv37cB96RMy+GKSGpzKR+YYorlqIhmBTDgV3MycX6anit/8B3dhyl4lR6V/8AgEKWwmfbYSC5k4dsfnqZq9pJHBF7FX7xJZ0ngrmWwMEYiVeTW1qR+Tc47FJpyAryAFSgZ0xEZNKecGCKGZQ3PX2dKhsCfUk3L9Iu0vp+AfENAbShjIQ7aFW8vwS8Z9YFGSxB/WZjvhWCarQ3Jl0dCuM9bRJy8uWSgDS1FoiG9PqW3qJdskQTJntWE0OPm+s63iUcgEm6WKNuExpzAblLPPMWlr3lcWEWsGmdT4T9UHEO3COUE9h2W9fnhq0Jvcrz+Y4T3BujXm4m+zDwcicmpvG2FhYCr5pmFerSdlesNMJa+E5+cHfMGqt6Qw615bsUUtJ1dyp7ho+Nh6a0j0oDvyaYIP6PDmGgrumOXfUyhrAkTgkfI7wJIyvSVGc3NsuySqp5M5Kd1uCz3GgBmfPRNVvbhMONzHHsSoad7XQdwjWkVqFb42keRRyg0LbC/FbEh10JVBXj3PZkzLFifm2yye+LnGBbjtvJFACpSFw0Qk5KDkGwDEHERVJRGyEFtKpy5iCUudLjHFsrTcBPa/UivyAa9clAPrj0tD+LBD8/f9QxsgXzLX61HH2wKGYdeujdhRqW9jEL44sEfcuo6fU6EMb8Qyu1PyRjgZ4T57Hk92KjrB+twNqIgqQJTLj8/inEC79TqIroeEapMIpajGCumdTVK+Q7Z5saJOYlYLz3/tlcKxNAIczRceaSKHHXvYbIlb3fplNTnmm+ElsmjDMojU2N06zDzlHTDZgQIynZQY91v9efaZ8NEIhMiTVag6zKBXBC/cKrWnqnOu2X4uD9sbYm387admE0vBHqL5gKq2YxE4FPukOLYqMEv/iuctANvJ8t/LYTlxnqdoeEh/WRMEJz8XY0AhSkM9u2SJ7nQ280bqHg/8NeILpHBxR0SQ1JyFr84/8pP4S5WoVQQykOh83iG3pZNJ86m86jQHn8rIvGna4V3a+R5bPCI1YUSv6fpCxe11sTh7EgfW5krDa1FfVkqKu96oF4BKpIS6ebunRRv7jYTaL7CKdL5CEHZIxyzWNaCkFqx7/nJwr7plqesQ9kfgHcz7kWPGqwJdXNYAW1+IqJ2WNgWgJL2BBqBOmEqKY1qjwYDIy86e9xIArXA+ql8eHSxOfm1HpGW4j/Teh5gEpFiLfZTaNtdv7eAAqe3v+7mk8WcYjbfkAtyVBHmqe7qluM6E12ssj9pQIpKFkeWMeXMBTtRXMdzjf2649Jo0fWsDGlF+G6KDd1Z5TnIvoSYrCMf56zRMhH+ve9CbMTwJafgLVwaAloY/JcrM9xjyCO2xjha+7B7SOmdRKSllpoBnnqe3gTdVB1ATSUrv2qP4IYlMHw+FyOhI7OdyeASv93a4xmdd05TfXHUVZJgPQfDz/cWJHcCg91qcfGzbxZ+jEOtpzKP5uB3u8QTkZpq7x/k3PNr/fODG2RfkAXCCnWMhIWkfbp47rj/7Ctol15Je1Izi4ejcKK3w9q70f1QWb5W0aEQr62+yFH33FoUFJct92zsW7NQri3nrHlJR8UqoOKJkeQp0zMrcWXMJmQLkaQWFr3oeILmumvrUzxFzZn3XLqIO+7yd8HjooX5tV+jcTnzq2eyp6W4sboWL93foJsbcYE4ClNglBzCkKQ5ww+b5GON9lChGD1/nJRJ+FfpULUL5Yb5zOJAXrWOq/XCXwkM9OTV80oQvJNUKJNby9WVKZsTomvy0esAfeiCp5a2v5eeQ3xiJ3GdvJO36grvb0a4/UDfVyTbTlNG6BCiyI6mmNsllvh92Xg/mckT5dYjQVbXOXX2ydLGhmH/XSyWoygvtpkFUjqirtMyfHLywBCjqahIQufWMsutpD8h4zqMGGLD6ZxXIRec0tSh+06wUoqbIJt7QWndOmk6vXwZ2cCDKmrBFQDf9KFpy05Nna7iBSi9qrkW63+gGHH+Xk6wi17LSdEz2VOkvfSB9u81GjGWdMhUiSIRr0YSq/v15cd9h7JY2IdkmctaH9hQXaVoKfNZN62mjm5tQtz41QVZzo73OexazbVU0zko8BBc796eOiZFL181vXuFxh0m9xHMQWafNvSqxK2dJymlbFK07TyB7S0tupav1yQYFsgYr8zN8dyYcmU2W2TNBaz6TjIkXs4dcZnIjQEB8PN/sgapM/cWAVfPiQDtlnILSX3IKf1XLDo18jFMwxfD/ePHXKoqzZUMGzcXToon2Qjnxzj2t2MTWdpHoPQbaMIv5r6S6gZAvB+l2Z9o3fdZEboRdG4jwbKs7eYxOq41A5oS7FVBR4sgm67fEyNydjKyw3XNGlyhKsFuUAt3se9jW7f04OOlMblDfSJLq1GN6+y8rPOUeB58uCPfFbE9IyEiJTgV5Jlh0+PdoAilAu9R0G8eRgqCVECeRJQ5hDy1X0ET0SUYmxCEJTTfYee2rZFCuQqqvk9wdKSMU32jNt4dQW03wcJaEbqj7+r6Sbx+R4rvrQ9sDhR0WyCIBsuDQ2EkuvVmX2kuIkW0Drp/wEeoXzZCOzRUJ1kR209rXrfwU/PlR0/lQx2PjBW17PsmEHC+IrZoZCksXSZQSyDKj2POyLzmkz/VImFtNUZzYkJ7JEpp01Y5im4bHiyFg+YKthimMFNvXiF54THNTRXKYeDVaLbbnnWicWJs6SjD1F1h+iVf8gEvB+sppIpmbGNBhXZe8O/bE3kBeXaDVh08IXVYyhGsS4K4QfSy5Ua3ps3FZ8Is2r44vGS90hdzZtDS83KmXgpYqPar9Uz6INv3rNHLORv2FZisC7CmYhIsDgURPsPBS1fo+KYWtpuS8AH9sVbQ+Dkk9cfylUFChtDTTHBX+p+1buPmyBJf6DDQGFgNu3X887vhxliZYpYu5Ju3s9RuLj3kACe+wZe7fcwDCe1lDOc2irocFyDFEm78SSUCJhH/LJfCDNowScfGdlZR0m08emHJzZbuLRMb3Zehpv74esJmI39uX89MP8qL0nNRGPOuHY2sqv3H+WzGMcB1b5cVOC8hYSiZLCXhpfhKYVcal65Tnc9RxLUPzg5JZQB49gTnL9XobV6RPhK2MjtSmBaRA8VK7jh2CdMkoqci0erfRiZTEcadD0ZblZlafIpmpjTkR7RT9benrj0H9kWvaYJJw8501goFYNZetzPJArqR//CoQttFHQj8eIPMNaFtMdy7LQYCQtX7b8tMV/fGOFn+UAe/3YJ/5zOLpUPKQHXC/+gaYmE7Z2bc3N/8M2wMpM8RHIDYsaQUYhSIdY23bG0C97Pmz6vuOFYni/4v76Cc0SkK0YBjnK8SfpJmD9bjoVRvKQ2I3Kf+hw2jZSOKFOxpq4e+N7KWIqYMnWgKl9bQj2obhsle2xEqtA88HrbeIb4cOo163fsLBS1ZgCa2d96f4dd1MM2QUMPlVbUmYXDJUpoRhXyBdwptZvn3QrTlklqD58zMVgQs37svvDFUq+EOHOEMPMgnfamAGQLZKpQmqyIHpT/DTsnffCPkRXZGdAnvvBsHQ4TOCp/VVepJYw6wjLa+LYfsIXbdZCVwmOkDqDjzUG1joUECHM4MRq+IGhAdONTucD8VZi/+8Q8G2xImnI3k0U1TFajwwCL8gi6PUYAo8tNt8qpK9+75VGcYsEDiRAqYTptRd4LA5zeCKZ7Xo6vqp8LkeWjm8xAHgnlE4DcfmLHFPtiz83SyJi+NvkDB3nuhKS54yv7YAq5tmA+4IrJA2t/TGNtXmhXdsCcm+rkUvEBWmpJ2Ap11AkVOfa2xkebcBQFH2ULAiEXbOUcg0gZgIhFgd1fUPuCzWMflpftyB69bVCBlL/98z99AdKLALp6CstI3ZIWqKzyfi/NGD7kIr8lFt5JwsxKT7a4k/AExQRxBo1yohTONqYKT21GcC4dHRDkVYxg1x/QKAkv98koT5cI+yCC/Q5luQe8hSij0A69RLn2vAI7hEUVTLPVjDa0QeuhbcGd0SNHtZvrGVaf4zFFtCS8XwvX6MHfG461VAetLtlPzfv30dRW7IXDwufUMN+gtI0/YlyNrAv0VXh4qV2OSEYu+byKVyWbTBm5Vjeitml+NVx7eEaYUuJR++G6BgC9ZC8l/oWbAHsD/1qIvtDTou3crSQ95duABIRsRKdWmFYR3A4hSS9AIj1mtPvh3sPVAuRSaBE8kWN/6VDGH7M3oz/3sE9N+xvAuejgTgyp5/Z4jb/rgFhLGaJX+KZMNWWsQBXtshcfM3u7NfjDYsUHdFahU9GdwuwVvsQ/hbVDreaO75xQQC2XkWOfo9X/m1BzEDh9vdq9k/kqN3Iy5W480LJ4FeojY/NzaUBnm9G0hBgv+yTF3z7kcu4Nvp9b9jwZaPiMK5sYKW2iajCRKPRNeXV4fTCmw9ZLrj47EXYPrCM/6/018pEujcz9oEUAecRd+FbtZFscbX69gk2D8Tki7fHxcCfq7b9nYWSr8Kd0jUNgWnF/rppqEoIaZBvlVQTzwPzDQRluD6gs2zkNKPuaUx+Q6uvN6qIzGlozSxsGADt4XdWWGx6gnri3MzWsOgREtlZrKx0h/zqhT7snI1t73J3ZUZMWhgih4mWGrph8s+/EzgI/E4KKFJGr7J6QHM50d9yFgIODEuO9s5q+PPyUi0ve9T5FQUUfMxMD6A8EgQaGMXuGHVFAMr9OABOQHH9LIt+cnCDxGHakBb4NqPyCN6ys5iisMqE1iZ0q/mIe6abQTyylJADrDlQaEKh4aU2T+Q51I3Au9bAwl7HNEtUep924JaT4FQFkIYMfzkFzLLuD+eoxLvt5SAJeMAwUJUBLisLwlBR7hv1KWRrY4wyuACcrJAAN8FGNPgxLqGwRuMCbJoOcYaTngOgBlmeMswF/zDap2sWMqitvBHYNWpbD35NAioSzUk1L8twoWd1EobhID8m3QyCO/3cyDJoNJQPP3NgSS7wnzMGY9RFKJmEGwfvfS5MeJqCv6CATUsUE3Ke+K+dRlP2NzDZLmKGUkhAFjVEYTOF4SXfjfFVy0RLLEf5pJ8PqofysmIuLn6JGs9VmHgtjbR4W4IwEipjNyK8BzRHodRoP38aWFwo+ZT5hkX46okyiYZ7k8akAHwJ3yQffdl9O3xD3PCHs+xDbhh9GQe5tuz0HnyghFQnR+GYwFpeAiJY9TjHONC2GtblTUFVw+NMmuUNjdh8+e3a/UG7CGQSk1A5/FUq2OiIIyj10uu58cNH1BFhLqRSGm8k8R/nwKBt4cb/aS0SEgpE5CjnwQ1jFIEN4zauQqPCgsvOy8GJKRhkSrgjxaY891VjtjJde4zqGBRB/hlCPVifTB4S12qp/q6gAu7AGrwGAECnl+5aYFws+gMDHJl0g+CoA//ELb/MeWhjKyHd8ftgmyUebjYd2+IPHNJKF8fEnvehEZ9nlKWMPRQxWJYkk0uGCZFSIfQgyLgEgipLSGGW8+1BvHAX26AFzXWKgAQHday+Y1AksnU5cvSpUbXZb7uz2kHpRdf+2WB+1wSX/wP002D7RQ/p0mv8c3pJjdyRLaStzukMfMY/QpFEQcktxS3C4w8z9Dze5tKmb1gO161pzMjwOr5U0VQmrf/o6FnKe4zjRlOCtgmK9NtwxjnLK209YSWlQPJIHbaSxL1/qwBvNdE7EzQaXh5ki/xVDwK+a4p8hsvEc3+2NP2CXjS7rHscfopk6BlKxL7OIH2vKGcI0sQxUMjedFhOjKakIsh7oVO1RaqXvSPKIpM6j0OyKZmOCAPHuryPzFYLQVXkl/PPZyDPcu7E+23AamazGlOF807unFxquWD8CbWt4XeD+J2gbS+T0Zxf5+F6rcZpXfyLtpW8IxwKeCK9bbPwujCTbxpMaWR8KaFJAc0HoPJCRnjUXrmRJg8OPpiETP3CoU5MkEVuvOVdzB30Sqe1SmOYZlbBhdko3PVseEvoJtaQEnOOnTuk2ciajaokwr8ML8KX+PzwRKguhY+SKF9BB0/Pjlz4DtcyOyJlUog24PIfvKEyoxRTa6ly/X+wmDPrLP2Auc+vFoWN1yORL/Y/ApitkULK3yjrRW5IscT6yDGWMjCJ350klHj1cphzN777OQpniUn40PoiiDPIS1HenNuNGFgiWWTtkFLnEMVbuC4irDnjSCFAVItjLw1SZYauI8R2ar/5w4fJw0Tfnw5l9nI8ZMMR+Bk8gLuz8i6wa05KZKgk8lwnSmn1xY7oKJTYNzNzJY6zq8MHg97XQudTWeNt4bZ0rnvpejw43LUBq8WTdIJoq1Ije6yC1q6YGc2nePRRdwJXP2LIPEQ3Z0v97AlFdpFRhK05ajMNYwb7UjfDE+x+qjNcEtBGdQ9FRueR4tQDomzn+OHpBAKjMhcFDsXxNwcS0JQyPNYI51Lu8UcN55Gh/qU94CUQB4oDH01OaQpMMFj9pa4YRDeMe2zg0dpjhSvSKcO90HyNE3Lj+oMChAJYj8qApcBFU9ftDVFse9fxtKTWsQV4NFsL8GFyIN+2sx7uYUKQCzmwKwptHn3yDjrO91ogwURhxWRhBw3wTGNDeGuWydJbotwkLfeOVWRdNWUrrMhNFTfrOI5T8A+JHeCrRx6d0T/6MaAFr9d0mFM+OyOrjuAavllawDZ3K+TOMVAcSZ3Z/drkJWv573FCgEQo0tmuZvREodOx8kMg62subO1eyDxLyJx1iZRVuXZhlhTyiVZ//4IW7HS3C3MXkVhbuMbqG27J5q1HthHwH461IB88tMCYobgWyq3myoVN6cXQ7x9X9mvTvqhArX2dl+rjWpTr7nZKbrfCX8IhRLdkV8ZD9/UcQLgSd791r6Bbtp13BY0UeZPDfhKKx+BfKjZErI6wYy4X/ysDDmWzyfRRl4UPSgxEa6dEf6lIDGBmpwjVw6lU6aWVYFvr0I1AN8e+R3d995YVNEXq/faa92RvR6Ceichl6SmH9ASXxHrGUdqI37nja7AHluGHnqZ9DvEq9bdRa61+IwwOGZxTZl5ymwTF+likRcNP+39W2a7/Uq9PFfHH7Lr3MSY3QsnXLpk1B/c9nviePMn+8l30hGWn+9PYh0STjBwXgoxlu4GH2f0hphoO5ShZyk8VyOwOHtkHwDbw3ie6OP9Gfj/yXvBHXYKYj4NJP+1Mt96KJiVLfJu5zjQhbyQURTaVkqqvvWutu5cWGY+19SeUpogodkO0dXTwcS5DB9dp7n5AWfM/+/Ey7P95Vp6tzWC59FPoDz2ef8ReC6Or7aVB2++pKEQo0s41JqgZESzyoiXWhc3x8GNmH7dOuWbxGFRDVYLB3cbdVWLpy0nrouzLin3RCdf0Tw3QKzfsZo7WzBmjIBWKnwoJXVT4RuOPTBniBc/NTuFUyOzImixmhkkCSnxOM9FDJwVdgys5rkRF7B+A9AfObVi1sWhfXKQ1viTtAoqQwL3abUQKbSaZTXIEvjYGmEhXxPQO6pJfF/2qw2UlCtDDxp+NYvuKTtCqZxcBGNjNkWOJhH6qobDr1cJN2F6d3CKrSn0JXV/RIyr+v+EXUsutKurSzNNSMYjmqgtuJImUCxZiRkYCQzgZkulrJV96pDYpSpBMs73snEd9w0vaSXFdMASEnG7lt2QzO6ILPSDexZVURbN4+i0EmHp1KWAQaAB3qhCmiRQpUKWBLGUCay0FfQtjNLkdI1+Ae5hF+ieVqcwpdKj03IfTZ/Ns1CrHG8HPUV+ld9Ma36bxr97vgFpEN4v0oX0Oq5ypsNcFuEc0NqYOJTGN20eBIpl1aVt63/vxDXxiF0sqSFZZ5ze4U5WMjNSOKdM6Wofnags0lUK0qokqcZRjsueQVcKcyNJNjbwDgH14w+PmszhANrRis1YFm2YDKUVMpE9L0DO29L0oPJrjl4D+s57+fkBirTfh7G2hyot8zshHptmN5v37J6PEXRipwB8RuC1VsRtjydMqyJq5tEA5gq4PifCy+3y2PKPzP6hewAQoxqTpf8Duvs4HQjRIySgVxou7TtKC49jQvMNvD0tMdkCJvxKIxRaRLHdEhwpZm5vgEkLzouc3mr2uVhk9+WrwaF9lCCbV5X8b1tsJ2meelmcryuqcJDlffOVZRGH5dGMJV5zmkL59MuYQKaL1kaZAsfUaR1IanK9CsugZ4Zg/loUM597rsbxmNZyS2ZM7gYYiWXXD3acMQsTRXKpzZpU9l+7DW0rXOUfSzbZ1aJt8hhlQRjpaYGkGGMrGf+7GZqpc5WBhHo3Q7LxeDHfxjpWVjNM1eLy1rWvFz0d7szGyogXS+pi205OAXBHqhMbLRFT0rSbDBVVY45RyrcdOfzsHuIbV+TghDhDsIFAtUpML1fDDESrpbepL6tSjjO2IH7HWqoCq6tP6LKHTXtfbLkFBcPdaNz1zFmp5tIJqrQonr83fuPHdLUiR9kmF63sUyMhgCnY2KQnaUxmD9XExmL5hwppOM8T2cQEqUjDSkBDJ6Yv+IEhYQHT+1qkYwN46S/Ti+NeNCBQZcfBTaNf8dO2CRsUJ1GItLMAFbI05PhCFgViD6vP7soimRLaF1HOTsjF+F4LasvYHe8lKTuR6d3tcXhdu7KE3Gx1oqR+6ZkhcFlExY/rFXSNFd/QJd4pbxTE6EVKBI4IUQa42FL4knyg0EmQLmxGSXtCIxMp0CcJ/DXD+4Ca6End233YdcGK00O9XRapY+wreMadnXgpvDEjEWA5f4lnLw06+A8w/xkR7zerGHhKVY6AEvtz/pm/97WGgCbhXsf0jcfhkUVx5MEr31VP+4FZlg9dGiXJL1dvmgVoYj8efDPGE0tYMwk/wpdOMwgWOG9k3ht/Q/QKzxTfphYkyc2Gmc2xALInNuV3NoOQV0r0KyxBRxMcSfhkvx+GF+gfZfd49tiphjSKAqUAAswbOTfZrm5DExo657GK+2N5ZGrpaNYTs3TMVet6ne7QARUSqBHIMj6VGomfTgkyMkAn41DdHKOHCcdJLQTH+C9X3T1E4WCHhYuoKODFV2YBmW28W5QAjD8hogYbwSLJk88CezJblAyJo+T447QFl4WAL1EbNhxlAAHXqGit0F/RWzlR2BDbk8wbbfnl9ajxDM1iZLBEB18ye3cGVtXJsiC53cxnJz7BnM0eROnkzY4uCXt4xNHSDWpQs4wXssO6bidd62K8dGl1j2r6IjwxlRsgDYz5j6PZl4WAL+ka3nCU6XI/Yzfa3kxtjxBKNyNGsXze4cA1lmy/3I71f+K2qEcEVyr6P/nCbJk8++kuP8F1Bao+yhWrrFvVvZlqyo5ozCGHV7baZxxRL7hl1sQSnn/wM1D80syKs6BmIWm/eY5tTw5q5BC859hlqbHhZVbZ07PGBh5NePjghck63sDOcrlndGRPknD3wfuD8x87R9kpuGXirBm2IB5JuHxwg2xmsW2u9RRdC42HE84fXBkDXXRdD3QQRjtMY8onXSqhEhUdS5VXXL3GfjZ7udWJuvEG7gANE3plZUGW5pKXUgroId1xVc2z1g6Gsq2u1SmcnZW2KFEW6fO0gUjTFo4SFAiZY3LSMDpSvL2d3cxQY9AjfemVMJgUNFC08FbovFVtVKjuyvJ+XNP4NAltWG5c0mMCf2X9gxgG9qiASSdk6GEQMi+eZ0X0MSdoRR315gTzRK7YvLzKnwAJRsoCqFWaMFxbqkRn5pV0XXz4/8QPn07wyFP1rLL4V0ncl+gqnkRPwL8OePq1AX+qENhDrLWnbUSYvrItdDVK56Wj5249gdblaqzjsNTHSqjo+c8lilco0rsVUJMsmc2qznVzenspE1/40RQ5zqGs/fLxPnQEz+Ge+fRciqg3F0rIxMvqg1OtArNf6+plfcokn2MabfeqJovOdayoVmuEVlqrucitYhVZmNwoYgGVJRY1xcqz53qZK+3cUnp9IbJRK6AutDiMyG5jh6pyoz0r8MFE3jIpob4sthTDQP/FsP6XePg87eXpyorRIrRYwcJ8oYzA9Djg4/1uZtJlvOmuJVW68T7mdy7q1cUTe5prW99BQWO3g/WDGve7k6+o7cryPuwRE9oXO6z27mlaOPn39nLF5YcvR7MvdliXSI3z8JyE8x1mvuEA+rosFdXzLjd2bHisVsWeqhDyvpH8O6tIvTvXwMv0hg2987tRhitrqqxCeBGjPTenoKmrTHsk4fLBDbAlwZKah4QuK7GS3nooo2e02yM04BO8bXz3bkVbyPwn1Dt3fqNRtdPzf5wDXAHzCbXOWrgXfYHHOjnfP4kclfhDE+r5yTJU+lUa+QtYBmQTjg8OgIYLlENL/ar0+z7++oqivNCKvX0jeIKSOV20xWuOMKvuRsU/g8TrCfxwMndvMfPLSRnY4IyM3RjAphgLvMQHZY6TiYJZp8sYFENbSDxiCNNhNeBMcRoU96Zpd81T88ZCebUsNgeP6LVnaMxtRWddtweFcOWGmV+B0vorNI1tb7I28XZFgPQd/KxhV6JYWN8MMnYerdv7QvhHDsFhk5Ol0wNIJbJYXthPXmB3+d/wX5uNf6nf/xrblwGYSqfWumXt+f2/SjPGnArdP7bebwo/couQq1NmKzXuAx5MDIAB0hMxo6zjcxj7eWVyYlFwpL26krxS2nduSrxldrAQzo37IdBhMwKeGtIMWoEsRfESB+g3L347zViW4sXnVoOA5HUCqKdFEe9NxnGKYY6gIk/MYsS7nwkIckE5VLOLwTqW8+304JB/n/hW7HFoVRFMpZLESx6DjaTOLc0odpSAVwGSKn6/7JfYy5tK05kxbeuicyBQo/RjHKJeUxPPcCnsit/740AI/gT2JEG+afi4QujxbmJ9yJQDxkML3yGm2vtkKV6w/0+RTHp6VUZ4qU8TcLwJa+FMpocByOEYH+EPW4PrLic51Yamhmqc5hiKiB4jX4SFl+wCmv27+dhB0ZR/LHTpiQOn0NOXJpwu/GP8ABXGZ2w+3oCWrBIlD5Xwh+GICi1QcaiSI5jHQYxo39DPNSBaKvtJdjIYjUKFDf3M3EBqzmYrkmTw7KiQYhYpIeUcSkOYfNaWKIF8bgSjdAxMXO49lnDIQQlHbsLM+8/bcU3AirP+q6h3glcMFiT05J5mxHgrx4+uGvr0lKBDhXpqUTs9XrALGzXzoS41dGKeqqeHcAbADxbLzeDQizhV0fvuW1qsQEQ+9x27Bs8PVjL+p7Ly/hIh/SC+k8cbgWj/+h37tCAT/wmzoP83fVmBl2jjezqJEgW54vD33T7clPr6Gx3zENOvou+QJ7P4pQ+Pm3X5Aq89pC6dBNyQ/a4YHc4x2NH56LRKD2l/omdrYLZm9ZOIHIQSSKwlT922pliSrcQ+iyrvkFm6ao078XG8GsXqjvFo5KnOvtoTvhnDjzD8mGaIkFsbJS7c3FXwVt4zI3Z552ZtEdHDibyJkNP6qVghVdX5/RkN4cHYW1MIDoqdCCaFYO6MXr529AAKScQHqh8IE6LmJMSa/5fI4PqqZXOvqds3h8LcALqQOEtcVaJxmCpl9Mqw0mSxIMP+6OhUbhA1kbSAga8EuZRJnJshpA9wON96s0OKgcuggDMRKuTNyXK33AyGgKB7/Y3d4izD6pLZsnk5fyAG6mPdJpWQZZCyVHahkgooDEXmLJRMndLBmA0dMiSLPq2518Ur+e1djdZPf2VaMhPxu7O+tMPm0BX/mr9T+MqfpQn6r+nlPg9Bfp/+g46HkJfvdbGk5++PwPGIhPRnF5hZwdkvCfPgJTtc67r8tMrsA35Cf4dPbFz3Ei7Z4ivxjUNi3qsI9vkT3jeYuqCVl43roXdJziirp+NMIq3pZ82CWb2wNxNrTqjJ5m5Rjdf1ulKQc09PNUT9J2k4kGB4/v0R8tPkG0mcGF3gl3EpK3hLreLI5v1sYoEJff1c5WQM45VdvekLfU7VUlrsidtmTh72N7MtRfInZOmgYCA/cbtW0X0aV3iiUeMebfiJ8hN50iXhqGiWH5fFLCyEM3g0U6UfQG0rsVg6++J6maXsVerbmNAB9iDDP+rZ+pZgEVLUrASTOJrb7/mglsr9wWfiAhw81nD+BbeFriEFq7hF9k+mwdmT0pWeLl6KAostxmnr5/RtbaL8Cb8hVyYS3XhinrOJIjts5/zw5j2iNSEiRwPx+pJpj+MTJ9NGJpg67TgwK+cHUuif0DqwNZCcZz946hfJQGFSUTJswXvH5SPF9uvToyQw+9PuBxBLC6iF4FkqB32ZEFeenIaq1fn2Un3ma4rMltDA7L10qElwekFDps/o+4GPjG7X5FSr2GPZyhIpCVgbQrC6IZRhlsGxubo4TXCU8djO0u7IB5OYePtdUXAL+SMArZzNt9rqC2SDmrZzzvYQsCSxhGysURrsWTB9UFhmsU63TR462ZslxKFHzK/Vio+PiNsfLDdz1N1hewmn0MqWaKmjgACCNpiwmCZlO6IVAFOWNbMztcl8D0jO5SYCMgeUYGGHMBEZH/pZ1+Ed+6uYsZQvo2eOQ4qDQV+Oe3bgn+TwjpCZMK9XbgACu6zFv4RiGVX+yNUucU0IggWV7ouRV1EyqC2UoTseYE8pPR/LD1zXReqvt3dlNE2PEyCqvz2RvLwzfYtkDYIZcprzC5fUYbQGeGX3fAifkwntAzdQFEczYHBOeHuaVyqmMvOsQViplnzjVcC2+YFlQ5ivP4cUCYij3eSYtrQC92FoDeLOJZIAx94Hk8m6v0eU9HAJSE0Hr3z2hHX7t9Uy2ant116Jp6s3jP2qDjB16bY1wk+r2rf6vkTe42+YsXozOER4mkk8MaZKl+EVswstXKz+QlRX30BlR6lV/wCIn/3NoVeOWJN1kMNNbVbiIZGVJR5avho8GYE8GViz+TbL4ljtSjGNM/Mj6bzeQe/W+YqdFzK/r/yvkOYDJAxLqSpaX0I4545cfzftGUTIkqRuMnpd/mMKLBtc0XMeTyLdaC82mO84zhcsq1y5pL3mWUgnHtjoLs39knSHG6ZpyA+mOtOYJfm/zvMTI40Bg1z9ViwXoCeUYcV+uvlvVZw3rB5pxR7PnWHdPrVuyZBPQzsA8Vat7RlGxF6neZheMcJBXmm4tntFYjzCzRV44iACWKGJ23bLm+AbVb5F7R7wNSOgNeLdw8GAeZdbzZ56W/OAUSRa8BBqBHKFuEOWnQBhUUrYQBZB8Iybx4OHu3xVskgAu9+d/n62N1oIG/GQk+Me9vdaAgXR9Ho0EEx+/TJ+DGuswFdK78V3AFUQC+x5ZxvBVWDuJ515yRn/bscClh3UA120e7ceR2VBtgm12M32tKluIXZVpO7x0sDMcT+Ly5Ns+M1EgMLauulWB2RWempzDY407ZnOx9i0BhK3XuXfkhvNfV0fnmGAamTqEUXNZt3h36L7wImo9vqHYfl4sDbCkbEVLG2BvksjfjjWqGTAbeP4+SlUVs+LAGoWa6WQlbccG1EVdYnhCR3PjxByF6gdEbHE+FqXhY1jnojMc7/Gq6qBxoiW18TYYzGUYIhbsRv+yfDIFMRPdrUiNCcEp+T8GDjWBnszwcZ6B6jJZgkotgIO6+ATyeIxe4gVKNgsAxH/VQgyz+eFWf6r3ytGVDT2OQFedRgQY2DeAXotD/zhzHVjpD6pfLV/UxW8J8fXJ1E9lYDkSTTja0c4LhxIay0Vq06vCih4f26lQEGg8x58HkLJkyVccZbrOuCfk0CK7SXC7cX67DriXTUFzjB/IWs3VrCknFJ+ZwT3iovSqRt+WAF+2/RoP7kcLhG2KegmYkFjv0Cr0JQzZrBav/VjJ24YKpAXrqzCA9yF4rILOkAyxIdOt1wjk4GWBnBlsyy8AuAcewovG26ak9rnxCCvASEh4w4xJI5RQRxcZcjjVj3J11nayBmEZ6E+E9Fql5mbhHuaGXU5vG3C3yHUoGHgpHXWbzsqKfZ3FtbWp4SGXCVfiwNMPyQT+ewmJodd1POafiVlEbaOspmTUiuFahyW9wfA4knU+brlKyy+acW61PlB3/j1BoY7ll//C3wfiHeys2941uWmf6QY59sgOa+I6H2TLzIh1qM28K6ENg+ZEgSX8/YX6MRxDreRQnQXQOoWPBc07eIQ19NwBIsQ8bbjlUZL3x3fVa4Axe171663brIruDkQtLv34Fi61VjC7pe1B6zP4iC7HYg7uSA+6QhkMG9BilA4RMPBwtAfdkQnNM/4ExcgLQzxUBMtj4HRkIj9gMzRsjO5RngxymKuYkTpvlyTU2T5DWahNo6nyHQ5nXQsnq/1vb0dcngrs6V3dCy3Z4gLmQ7r36qcZC9eMQmO6Md7E18Q0Xu/0qHrbfluSzr5dnb5SB2ZLBmOV1ZqmFmLAMcCPjzk0hVIMUoUOKXouYzHxnTEICUg+UOqNMuiyx+mzlyMBWaLJf8yJN3hUDzfyyOEUCkIh8ihvvWl7d6jDNSNkGF/lGfD7yO7xdvE/4duHs4jDNILNIx5YqPAKbOR435ZqENf2F1BVZC25fbuCqLs22cZIctsh6XZ8tkM13fVwzoX4XAYZnm+ne+HbGD3ZC54fEpiQ3pljoHxMCRSyga6mtF+cq2zdgx2blDhSR+PtoCwSOdsHsF4grFfG5vxaQBOh7fWcDgZCL93LLFDOeK62N9PlLnTnuVKJl4mXKBgsBM0fnYLmmVfy2hyYT0qf+xEfKGAxbWmvWwizZBgMd9z2OATxqytEBTNKQMk2Wv2D51H4YO7J5kFxuHbJIXWQhOWvyCG4fNLhC0PSDhYRiQ4XiPnXE9761NcmssSkCt22jxq1iIHmhupq/licflKIAzA0hL1Twt3Lf6fbGCwPYMjCBx0lHCw7YCQnvE+AbwG/wFS/7zj4qYaERBtsTUHNt1cCNTzXvPfHkHEWcP4fy1UYk8hTi/7k1luEj3doTKjGWioFVemgJCD59SDV8kNTHDg1qoEWzhyDxGi36izjGeNzW2yGUlty8vUcPCs2OuOW3F0abSD82IoOWk7qMRkIpYJhAp5JzzJVn5Pn0XOFBlu7d2FdHjC3ooKpkYXNcIn4LYyywjq4sfijqhgletiE3nMq9eBNXzjUJ3d8WLVdcSUvI/OOr4JvCw8XkWN/3tcAbpC0V643QiX6J+qIQ8FGTgYdEXvXRELRgRFxLgVHMBVNQeKLy4HD56HaC0OW0dOIcyHMHueKWC8yml29D0G3uygBcif4fOJ2JR2HfF2ENkEXXXZ92Q0eGC/aJKagMy/uBXI4UsfuHS4MVxvj6c3WhHIt5aE8hAW76HVHsF42Jqzc6aHRDAIPLKMsbVOjzgtJK8rzAqVe6Mbt3ZhjuF+8GbpF30sRPsDF8cYsNDg8XjuMNbgdfCEpMoaSpgVuWg/eNN6Ik4vwDAItLLQxUfFts9C0ZIHmYhra4lExDyA8qygEpubsDF04K2ZW/TtgiSOewfhW4ZlD58iHnRKInJpg4AUSJNxTnFIkGtFhY9hL9vuLE6yLDFrIN76vOU7Coxa7hAffz1RJlKuYUSgiQKsmrtAB1+f8I/wWc3bxpy0vPL9Nq9AMq5UhSTtFcvD5+QtZWRRxFuyeqlC02Y2qaqz7VVeFLrHIGRYHoROr8aWSm0agQnMF6DBcIub0KWRQx1vNyHu3V04garWukQWNevQQQ+Z9ipubamitkKyUfBzeAJADbG8oX4TyB4lDmBFuhWbHp4bvdQbkoSl6u47bhv8LnLC4bLCaIjj9HmEwxVy5g48jGcLXeoDHrlZnC3/gt4fNeBugfLXxrlgXWmLZ51SY/3nQrEk1H6YXFJV+0kh6EYFZxmuSNMSB09iLSBsg7twOWq13hXQ4cqchq8wSjCQk6gZKPzu/3hbcPPaMo+J6YU1Xpac+tL3Girq9pk1gj4NQp3hLUtAgsX6E6zNK6Ge5OcFq/VovWwCSEG0HeNZ08QHRtUaYEmdUOsOwACXlEP7N4MWkHEtkaESBwCOOLybhodoMJvHqPw6+7aJQHi3ElmYjBAI2ADzmPTILvEtmDfN+si5oHrDPU04JvYkkbN9yPcJ0PkBF+xJPfsLBADWiD45ffD4ucXTebicVInwqexseZsmuU98EnVIr5BikGQ7hndosj06kKFdRS7bWmMoeyzcdUuZw2xUzhcfh7kQ0C6wZlHL7Ibw3mQp8FI1hJnALKW7ZIE4wYORIKVfnpAwv3sjwfy5Xfn4Jv7I+GwjTggMBKb6lHAYpS/LkwkHC0NTu07hKWT9QUrPAoW/geQeWHIk8yXP5gLLL9vjMjXcobOzuhNfFVnr/zFWf+p4Dw3noSseLGC5Ls3/xR9UMtq2l5a1cD700/RAkZz8eOj0Sfnmy0KImjr3WplPiW8y1viQcQVOzN2pYmJMH2NU0O9kzJ7YL4SGhEWCt33xKzhMkamVUoBydoSpDjJlJucE/VMbNpHh07NACOb/PQLwakop1QIO/AlhBToljagx8RULjk95wl4GwBwmkhPomaRjzt6h0aY6+QkSi7N67oQvf8IW4MplJB0Ypt/i7sxRmUQnFRzyArh2rhHPuvfO4r6Xh5ats4Ph44OPhD8yLNyEKeM81H4B5/Q8Su4WRH5mKkmGIF2Bx17EaEBdfS/3Nzo98xjZu1+F1z73kFs0zw/iUNVsIxWCmE1Cjm/06xPR5T+mKfNgEePJpFkBtJVU4sCfk+Q79pLVd5QnIsiSJhw3S3dnskct06cxh1RgHFuaD3TqEafERRcIjVm11byhNxlhTgidcYQ7oFuhtrxEVHGN2gXQKSOYHnazsoO03KquaBPxpsw6PLWWF5mCAZlJdWRx4wgNnB1Efj2vV8ipJFS4FFFUfI7nsRNdMyKQew9VmCc69QZ367do1hHE/4nrsh2/nJsdOQV1M/RkcWcMAUQN0RmRm6zxYwaaTuq+Oac2S3D/CILEi6QGlMV2oqcwWI3VQS4SR0g8RnvXt1tIS26yfGEjoEy0DCKpgxEkd84M0etGrrmIIr4NNLCILXQ65FPkd/MGWW81mBgO40vRhOp4l6Jso+G86kVQJbmBtLXIpqpY6DEZ9fHl1rVh2XIEpH9naxvwcyv2qVp3a9pIggcD2N1LKd4IW/fD5rqF8JqGBNN7U7dqeyYBnOpkivfK/sjlkHxuPI85eqmwQg8FyZZVCy/a9771fSnYZqKjwARi+PvaY4/SGaz/SGoZbMlv4r9d0a/LWudGrn9N3kb+7zCLfk9BOo3fNBK9V8j8cT5rvWoR3dlePJ5dCizS4x4HXFq5va6HC6dqanMLbzG7wHBJWaETquZfFPe9nGk4FLGohg20ZrUhRyprFFDvrTAFsUtLA20K/DqdY8Cq3hbZqYJAMXlR/0+YfibCBChwAa0IR5GfH1mA+vBik3bYTXBbe+/5TsPYq7QLQxHNtkEZD+17DrATvU4OuqDrZOgVYw9gDVzZAfzKkvUUt39K4yUWKcWj2tjyS2RjW4Sxzkc42cyy9d52Y6c4sqTetguZ21ipLPBCMmXi9o69Nmhes2YNCCaLObgppUugwSeHHdFkYkEoxxPvvPuHsKyYuox3mgMSD7bkgmIWVfhDfy+tgIvDVGmFMU5U1eFRBsfSQ5nmnxCX9xGlMR+ewEWebLVme7oxlLq/iW2DU7Uuwc5FEYb5aLjgYk8KVbB3wiCsLc6/78AM9Vk8jx80C5WqNSOF0Ofc+Zjno4yHHLaQ2IdP5T4A8RQljy/Kvt6KlLZ6hSFGMyW1rqY88smKr8XSpIqoeIeq4rIy89ifFbl+xrkoyFq7+hXnLxj4u3sBoYrl9IANSPHYl7A7y/UBXvcYaKFrj+C7Fa1BbG6bJLHeI3QAO/3tox04rH4PH6OCyU+WHo5snRmPVzbM1/y+dfKixu2mfi+wDElCiduCR/4gUwCZzb3UtlgxAYjbT0qfvNenmNFAh551Ob5XGNbuaHvCkhPoFlaRadwUnvzT/XILJ8UQMTE4ctH8c/IPAMq+7aaHbKP7aeXy3EUOTkpX6Me+M+imUuGKwu0Po1zBn5fzy1qQsXN1aZw7IjQVBgNfTHJkJWWWKzH0f2a04jWrMuEZWqLSHscd+pUhg3THIEVH6zVTgoaVZV6tPCibCdagCk2cc/3TODtxiZay8WBbGlG6ABdgRwNVm1Gj6IZxOBqkyJc/CWXAnVq+FfWfqqBGeioYI0RK0pKS9EVTCjO0T6u6bcifvrpAXpiv4Vn9ql+7fgFKerv9SdHxBxjf8deuHDP/rbdqe4JIDgLFmgaFwUmEplpntnnR1r/8tHuWJf19GoqTwdC97y+uJQUgaZnLHbUjz8UaKz4tt15+xPM8Jzgh34uR1PdaSBoni7Q0UY7gSct1Oo2XHh5MzgOr0UPg24L+nTZtQ3e6DSIP4fx3Jp8+rdOiDnOMd17e79fXEQSqko7aG7o3YW9965RAGlwQ5wntgiraty8P3zA/qdBrS6KNls5gO6vzFAVualMk52GRwRGRj+RzNloTDsHe1hwUmnmwSF3SWRuUrcxQFMX8t/V8Thkq2dh3E+CjZ+aGYqFxZBhgerjBlp/NfjIgyL9z0Cps4e8RPPYjArScRceNXGbCDxHdUJdPTIpibr07YtVoPX5SIwEYuZ+05YjrZVmaEbMrXLXnqiAlxhoEXWegY9CbObTppVbM9oesQaGrxJFRrAzB4MOjBJadwNXhAV/ZlT1sUHrYWX5Y4ZY9mcVtTnIfK5NNdl2D5V/kQvWMgmVcoZvOezaUNYBjD8x92rAGihrxKyJthj7Iv1TVmQUTKU7xeijwNUepSzc485k3H9wH/MaSdnn60DVk0IIpYOHtEYX5BYctaN0m1rlHPuvyfOVRbmRlkvIxyFkc4M4YaavEc+mzonNj3IKIVSmYr5OKGUVWig2vpPQsV2k9FlEnijDdAhnRbj2cgkbOAAN0wAIpuQLlRf+levW6e8l29cIb8ya+e7vAzwT7R/gZAPrczI3HvOufvA8nNDUJInFZrgXETlw6HB1kL+j6qb6N8LrG+F7CKxE5OF8FXJjQkEgnpKZFIpkw93aws+QOKDDKPxLKAv141rc9+9tEfDzsHgnTXIU4vvxYxUGtXFO/QPbfdefwvcs/LyNqmL1X6qG/z1EeHbKu0suLG5O1JhDF0cwlO6xfN9bfWpTlvqWLkrv9TuWiuPyNQBgknq0zW1wacGajw2ZgI04r/keBANSUv8bKx9wQEeF+CoQCF8f4v598R7OMfoWE0QAO+YdA5rXJjeMrrz79B33HhuiwCZ+kR8ql1LheWYu/B7Wpuqbl/6sVdDu1aWT+ysTeltVfNGYWwfC+iF849wtJPo5cwKdQgluVyQT3bsBiMYowaGndVmrU8thUe8YLdJDIehZD6fhqnJALdFb2gn9bKInXfCqm/UVXUE8SFjHURURgg75hauhW+LqD39owEA/r9L96ARdjMfKUcbO3cUZx473f418kk4wuE8qUPWqbr/0Hj7xB4CthFd+BjIftXKMODgI63OqlcZdmWBownkswUtiw7Z1Zt5Bsa8KYKyPJPiYPM60mv4IU96Yfh+5JGRjkgCrsPF7Y17BIkcSviYsvYGNi2puQag8XMfyG7lufMqjqmIU8F3n5wUPeWSbhISYrErrMJmz39JXL6JxgShC5n7434TxLohfk55D01vGJNgrWao93xW3xFuX7HYz7uPUNIpzDVWkSaP8BbYkVn0WdyXkkBMXHzAMIXsoMcrI0JuAxVtDRyy3sREF73FnGURKwdUWWHsuVnYIcekBisvHxmUhwq8YaQfKaHVixrH/sTvcBQrJXUlyq3ZGIdPyYd3CLlbh4heMgrBhXrIWEvTWvchMb0OmPe3Ru1GQXh6z18L8cyjo7O0mwVeqATis7e92WcMCLsPvciJfqkPtzTpKtCcRvw3uXJWH1L/Y3AQqxxKD0uBimqe7uKeKo9IwjKRnLL2fMXOGRX8HepJDBNa48dVRx2Z6APbInHVmJztwr4Im9BKK45Hiaf6xlkKJEWj05Bc3mPoNPurCeuWL+L4TOdMdcqaCldQoiBvo3S4uOIa2yr5Rjxe/sG1srgoY054QrfhJTGQkYmfCze3GSXJtGzA9o16DFuP5gC+xSxM61s9EU4HS3TkCPB2tADGZa/j1J0QES987PC+ukv7o+64bS2ZDgMQ42Jv+97NMrgmz4PV59Qo8qDOwT92pzOD/7gWmab6z3GvVjpehhOESVOp+HlB7jQObLYIaRVmfLhwGP1ZsAW9ldop6ND4r21tUqArQsdCugfFhAm8I8ZsBAFiPUeMsVvJk0at4pzIfTf2UK1MiN/lz5pnMVgUFDZrtZowrEm5juYZ1laYS39rQXffKAq9L3G9LCGyJpqkMPFLAYJETRlLEM4M974n5NH87GJ5WVhe3HWBAKoaR4QPhRDtZKHQD4vOXQmuAKx1+qFfG/5Qqx9/FAxPUChM7SuMJ6k7UNDK9YmFnF2dkwwUyeYoIy4PaU8Vr3QaUto6pgFax6rvn77RzvTZv9U9QU1flglSzaWitVI11Z1MhHDkIcEbzIyTjhU/0mFmIHN3Mx00NYN37qrdK+fHa5IjK/ti2N51uvKKx1MiDw1AAdetPRuOYgdsfXXbWkYo2cCIiI3siVsQHaU9OipLMRfJPIFoUsuXuR0iZT0MDtDZTisN1hVo/ko6Hgh82PbhEFAIU8HAMfE4rwRQJ0g8BwYK9tx+nzgFUTPOvCfgnVNl16VbY7qdIxfOAIP3wh4oUjM6976Ecrnt9tecoPpfW/2XKAlnIHxchrtkNekxjAwtszjFU1PWG2zHwfwrI72f0UI/VFZvdiz7PTfzHl/gNqsHkhfxIDi9k/EuvZOKx7JulA9BCxFCmOd0BZvs8GCilTnqz2XRQSZRVQMGVjs4o6zeOKu7zLl0l/X4E5Jc6uCuQ5Wvj2nSZ45dVWLSrQ9STj49rXWigxJhNdf7yzyhc7EQ/lzbbd7wPE2qjM7eLExqtL+eZa3Px1adit57JBpb97nAtdDFOxiIeBCqSKP9oS3jyeb4F77BxbFAv+uQQDooOBcvzjfGhyi2s5W4bdsZUteeQgrvGq3Ow3RAJTP94dwrtOxQbwhZYekL9EBBLcKEQQ3ODE4PGRvLVvQK2xbSb1g/5Amk4ibGc201g8Pa/o6WHXxLo/ASWD0UFbmFC/n9sXJv6n6KuMt1DluCv9QN5twMsfaQQAqUNCYBENvdQV8sEFSiIBw4yJ0qeG7qwVg9ndPS4ctyCCfrYEO8cOUypNzSCizS+nf8+QSyJMTl/y5wpCpV1YIXf4+ElTPrZbPz5c4Fy/mqe3fQGlDovhvLexo9Mc0QN2zz+yZXu5+46HT/H4eOkTPs4R9xLYDjnc+QiKB8L9EGLl/WJGePLUdLjlgC8MeH6tL7ZRWpb4B6KkP6/T66uns21+Otoj7yj2/9xFRldyGwvD1CrAheHudX50HKLIexedQn0xBcWYQ+ZKyVEeyIPU8Jmmwn1kH5qdDWU3A7Gf2I3F6+75qdrLch32OzorhVh6BNjXjZtt2nYns3m1pizFN6AJq6ABGrPj4tUaQE7X4/MUnIt2J7z7jCBt2N46J1NRn0kPmPZHqvK/DSM8JMg9mG312Jaed3aTaOCa/uXchv0eBUiXi9A4rmD/UuDMG0Q8Jv8wTKMp+vkXtLOGqZQlgEJZ2UFj1i2J+Ow+Dvm2VI/vRrjbmLosK992xblkgFO5v81XrtJMo+2mrbZfmuUwDQ5qjmNTSnOT4vqQj4htYXFUkFvYHiQKI58axGdpoNjPYHvKLxQKf3pPUnD9PFK/B7fOEnJPqlSKAb0kBycvK9ZQ1zy/z1bQ0YuprXUVQVIOS9+7kx4gHctGnUV8kcBNp3fpCKqskV36n2OrK3suzOOmOdM6IlSnFuAlauuLd8azsaDtm+IYRCIODiueqihFYAIH52eLCl+ngzb1qcA4TVcU4XWrFbDXno5P+pExNXuNoWxWiKna3TCN17hywuKzHJLY5M9z6tKVTMHUqbmZGkjFo3+oSGpTZnBfqZPaM2m5vraC6ZDKH7dMQpULgkjwZMoVaHxJrobK9q0YlhTU3WEnX6Mr32VNhoq6+DJjjNz0yJzY5eoQ5BNC8xBpOjhq6xMP+cluTu+IW8WYuBc7lpxLpFJPuJOxUuYlW4ICsF9nZWqBlnOZUHXkKfmIkn9WXStPuGKXL+BzwGiSGsZkPNB9XqXWy3J0p9UL218NXjE4I0hr+R3V1b0tHsJpa6n2dE2BS/U2Suf9q+zHNhRlQzv3jDSB1DZehnpPxVVrfCslTLnHzYO/H6RjpUEW2ehpGbBuN39ZGrnNiZnLoP2rHCi5S5TeDQ0vcsvzBrzhBlsY0veaopBaDDcLgm73fqr+rcM5qipi9NEoWBaeKeiLIyMEbbuC8zzhp7Wi79gwq7+Yl+qa3N96Z3K1e/06buGSc/rS5zXb99Bewn2vvpjyvXQehPpmykp0rrDjfH3qfbuTafBuQUfPMqjIeJOxJt6SJ8tIy+wn2WpBvmGkJLQbwWyYr4hNIEX3MB8fAwpwkJjrehwGdMDEACWAkZny3kezqyVb8jbonGLp9WbIsh336azJbdIwpVrTYVgg0ZkFRyFrsY6wC+X84dbb3KBPt7HoSyCjsyhghTONNr7scTJrRbLy1pTAG3sLxPNLe2Hq1raisCAHh6E/O/f5mYGrF5WRRSdHce3v5MVfSKq7GwD9/dSXuBw3M2Nznhfq+Eucgm81FsHc0ZhCTTsegzW6V61ReZNS+piXcoxuPvvG1RwXKSmWzjE7fWX6E2bf4ny1wsdB3FNvfPEJ2me2hMD3W9b4v4YRewTXAh4psgmdJIkllI+UMMx4/wj5WayhyHWTMM5+ecmq3srt2mVriNr1mxfsTuttc3pKgpVs1GAv952ZpzFXHFOW3lzZqSEOA0/3x5I2d5oMRjphpkr5V6BvHxEU4H1o2akwhdmOCCiStXcejPaNrrzJLWLpVwgHECoFag3NedK0vk0kURPBayD2onuCnfrddhZ76+6EpHCQbSjMkLWXPVCMTxcNVfG4rjOHM0RYwchkl08hjpD6FHnfGUxE0M1nNF/ph15waf18JQi99UOZUaNuFElqR2KCF1qm0B9EHzWmH35bKswHJFcidtgQpXbz3utpYGsfSLGWMMX28lqBH2h9AyoQfK3k+7KnQz6HrXJHp1fI2zarUM4YBG63mmUUwZPCM+OH2PF5YSr2eOF8zw6oRLuD81XI8JJVmPi9xGmqbIXVWgTjXEGMWbwcuMKmBHS0x2D4jLykZZpzsebt+GJRCcjmUQJQ7xxEIXM1naUqg/rlhrs+1UgwQjKvZkZcbNydZVWf5CRTIk7ZvWL4LLgxM9YA9443jgjJFFExON/nUW61IGkIkwiuV/C1H5FKFKyPhMcuFh8VFWYhD79hmnTS4qThgPQ8tMwKwTb4jVMyKodtXhepdsxcC98RmAioCuRcHxA7TKW4ViacRe+cqJbrjxnM9s+qEG4VJHjOEA29zSnTMjUDL6oX//gk4Ym0vzUjMqFkxAw5P3o5ga0IP+scRzWZOmNgGO2evUAKCS7iRD6eIjNAueV+9Xe36rxjRjpWkNjYHn2AUyAKjLTI1fQDDRDTs0tS/DwFswEmlhGdRgsaluXyivr1s6UksCC81kKxadajVNHlupBguxOC5RRcfmbjxC0FfjHHWMDUPkIL2Z0iOk68HbBg2nEE+AAEMim/hrXUWijIYxEcbNObplXBWHbXIHgsoxBcB2Zhu3tFKA31Z3DN0sOjAYqxhNaFlnR3VWl61GsKAesgpoQ8t3bK2+zzCp6/G3bp9rR7siks9NNFd7jsWYhMGz+h9WwL/LqbBy1zhtvstWx+6+Rcuh0zDMwSNz0X+9SYB3K44QModXGQIIats2ku2sQp4EPQ/INLrmQOOIobZ7sF50layvwtqgrkClKXJVmxnzZfZSD6fuQ+DOoaRvN32moxifVrEXg1wmlt3tOLix9xQFDuQmZpi+kgskWqfqBHCdeniE7jq3V9nkSobxkmP50h8jji7esjZhHR/0LI16Uf0dtwjSDFmrZ94mhdgctoeuuIFITSirtNC9xfCLuC0/WljM9ZX5v9h0Js1lpqb8bfH83GAmuPnrtLlSVKYetHWazxc0e0JkZT1f7zvMQMskKucnR8XJQ4+BXMIyf1v2QeNuw9vYPilnQBqWFHMfHQ7w8HageJUmOGggM9Fn5FrSgABeWviFbT6XroOk7jx0agbrysycl/GnTvFJECoGD//21U6XgDKXaJmjaKovRAlAwH/HFRCXQDAACivGUAa7v06TZmceaRqUHnw3AQSVpGdLGCL1G3gyDuOrlg9kwdXRgOHd+ykKuU5saw+e0+a7h4k3yYU5orfx1L7xed93C7ugP9YidaevYHxhGAEo4akXEMVzs5wdsgKljTAwOt3Obx1BRxWUzvuD8Z8ACz/ayPO/ko83+xoj+nbZD/G0DfK+rv+IitcdZxc8CPP+yffejt++krCRF2srPtadQu93gbgr+rTNH/J9kaWGsNzGTUUl+FZR9BGvuwYNvLqOgIR5lKnrNWxLKSI4cGSl1N6euA9qzLd3BV/X9KZb8Jo66+s6N4elmwd5+/V9LFn1bYxxC7tfU5+Hrja/nE/3MouI5mR9PdiD+wtslnFSlHIY/zDMqQYtZOJlP5oiEHIoPJ/lKF2YUSndXwmFaXBKFOV9qKqt/DwDLYFHOihdndwZC0NLpBQMuSUsoPWCkeKH0dx/ziG0nxZBqiIQoGHJ+z9EwlsQaNKeIpPih+ut+iPmaOPRSD7D9CyV1fc24AePgemOypjFU4RT9V04+0VsbG7Wb6JP531j70tlUj6aZq3XEx9WfGl5abesWQ2fOsugMnQ1+CohJToaX0uVy8jcF2naQl4ZuLrWJsjKGE3OW6VWjn911/ZP0tCrTuGl/7MF4zehty++2phCThVNn/XP2rVBNGUGfzXitEp161S4uue6cJ67y1WRIy1KvdRl64BO2YZaMMZ5Vg90SJhdYnKOfphh3EAxR1qChZ7PbC3UgGfds2XX3spVa0uwxVPWp7f5xXUv8D912lBcz+EiU6C29vO1TmvrMn7EKCNYlvPdD7PNoj9x/Y77SZtZ9uzTCiIqi1QbvUwLOttpMfC/XApBRfI/wzR8kJjIV2xgOXq5I3ODQoGDe22/QsErKSeABR6WC2mPglvIDGLFi8+hSWiAfUyXtkl+8JSvWPqCcPrRnQ/WkVj1fT1W3EF6vI7IuDR7ASPTI28Cs/mhi3itFfMfs7ow+EE+9ndmyMEd0DzDGmR3FPfPinNVViv+2HiIuABiBVB8VA5I/o4ziQ7PMZ2wNrM0rbL+eRilbxNULd9O/1lKR/5/Bdwnvo1uzvLepCvFqSVtZjUx5GVrYz3ga9GWmYvzMJnaPckg/FY4ZqRDL7Ox9HHMx22zTGn0ZMImpzU7U7FhMLg/khovgr0ilJwf3jODHcR30ep6mS4gspGSLf0JbdrTJGAgAAsAmPt8yb/H+iJaHTPccdMkjopuJ5LLfaTegV/7TJpO8z/tMyoagEboHi6B3cvvan8hgZitYVIHJJ4wpKp6NuB8fbUCGjh4hO8c816ljhZiJOPzKoMQdF5ajoRxBAob1ZnB/QPtd42ZYYCCDRjnxqfRHB6OCu9YoK4TYRgh+b3c919v5iXcx9LppTX1Swel3wCpl3tFU5ZqZZcF6ZOdej5VHVJHEPwoHSbCvpvtAfxfRSHfZyJx9P4vD2H+welyKHj1Z6uupAZ2+X7XYfXDKh3UZZ29sj9yN30sDLqpvjVKZpXMHe2szUQLH2iGSNdtKRBeCMFvkbO9/kFccIUy15flQaFfYGkkE+cBswCVcFWfktcyRyBTLyWn8Uo0o23rGglqVLjx/2qr8/SoePkz4OrZMpejC+nJPB+OUz3ynOjopuG7TS5UcYBgYhyy7PxNtvornRmiesFf98mFKqnR1opbH224dk7QGdTxPKBUYdY3EYVAm140+bvxsm7ifHw+4SEVayhm1S2qADKhQOitsR2yFxXgnukCsUA+Fp0ok/ioz+RtKLxQ10pR2NkHsPWx8kPXEbbLfLuxi2RYgGCcvNn8LYKLqI7dLwD6/vA5mkqJEQFK9CzUfym47kf1FxYdx2rTcjURQVipiawahFjJcwF3lVrgOs0RsTV5Q03uuV8mgA3KS1embSw9sOGVHVyDsYkeBk3BZXWLGQ+GcQbvfmwE6h1nhNucUE2O4QzcR0Iiguz8akyKBYoWIClo13xMpKOu1HUhE3XJDiKm/kCluzv7G9wu7ydWjHdME4Ncl03ePTI7dMd/RlrUgF+q20qLO1uJ6VG8SAhfO3KDUVuhrqSRotctLIQX2WypWi5ZXmAetOcVCkjqF71YpxQ5KMvd58kMmt+W/bA6HDNIID690/fLwRsnq4zj0Yv1NwqaWhLPSsC3rJ4N+U9LREvdZIGqrZXrrkjfvVdDeLX5oztlauXnKRlwNRqghTejkrVehAek7GbAOW7/Gmq9BWfgnrvepKKdhp/1y+zll4/Zm3xG7uIZIU7TnqawFeSQVjnXooHf+WJ+GDbgd8oETqbIAclkBc+aQQtoqnPL0/VgMJeTq5A010i3pQUDwIIy3vX4AfMOySz3m5ST9hZfZ4idJkSivCa8yh16ectH9k+P4eKJpP0hDloOtqI35gCWwYmw7vBV29JWr6t1w4GRgaKxEZM42GU9xvFsnJwxKy7wXh8leFTdjOJnGgznWw3J6RcPFE/AsAHSYhw/mL+FqhcKBswyiDktWbEt9CODtEZ1ixedjIiknhR8qMJd0V4DchByev7eDBXYiXiRdF7L8mwp8LyWAJvf9epN+yrWKTjSDOYhDyyga7EX9LRaOECrDs/v1qSmzvHRhOWNOw+vrxAlbg7zlpQ2BllxXPk/y9v+rmljxp0SzJ4QDbfbxBxhpS169F+wQo7PtdnuTqtvN8CPhm9eS3dxMedVnafXIjtVq0A0fOZMkjiZ6WU1VV2kMFOdc/mUBqQzk4YaDRWScWaqd446QbMFiv9ILW+vlrkrUKp6SnD81o0Crl+/syaEFBSx+4/vwthJbm+7EUYV4bK5Tsygw0krZrBUQI1DBbiP0PZYKlnEZAQRSMztYcGzef23vMyM82j7N5TH6Uyfezb0Xmj53C4EdZSs+r7rvcBpikwD/SK/jWBSBKJ2RtJOubH5vkz63GF4P7sbpfd0akACzVNkpIynUXhRcjqkwab98I7lt3CQEDnyOAPnbfI6hGAKGS4XTEDxKeC3+838P/JlY+krPJ4Gxt+3ezSQdqCvn4wZYRZyIRz7jhm9OgUui7MYoW/wRxEiTtQtc6GdmPmu4Y81dP4BTp87UKJdnmlRYf8vxU15yMIaEc+bVVoOizWWTdzP6YVRA63YdwWs3jxjlS0ZFv1VW06ZTLrxMFhVn1GfDSJ34O27/2z/OpHYaAlP8lYYJ93WNhdn2WnaBVRhGyG94XvKvkgrwNHUoTtm7Or9iWhgd8+tHKF8GRFXSmR0QpSdAPBQkj0FwIZj61v9IRxlJ5f8PJj1Q+Xj2TCuVVWmA7eN7K/9LkXyZHu7b2RAz30F118RCHe6484E3trwdpRhzsDiuY+edP4KpXSqeLT3mr1dfriPOJCvpp5UOgC6Q0birt+r0M6+QMSqWHHdhOG6RMRfBK9YzK+KX3E3rsdA8USTENvJl7b/lYKynKzvCXT7L38HdRRbaibyadB+fb1cYKScV9dA/r2KYddwRx48JWZATtVv7GNrPkqWHikzy0h5LeG4iS5W3Qjasi5y5UQThBPc+anf3l4VJUb8dLOnBmvjoanriEIXex2MCndzPy2AkMlOIfn7JvLGK1kQRliQ+hgc8KQFyoOvpjgJ+RRgd8+m816hRg6sia//1weYiIUtiGZkGjoCQWYUBdTGxqspp8DABDB+uxSVZZFBcc8Kzlzco5O7B7ZNQNVCmHdYQ5xhklBt7UcqxS34kxzGemTs+gMWnDliutFfMKe7dxBCAnMFWplNwBfgCCNNETlR+BS/hFndWpVif+wsG4SWQI9QyezUS9eJy3jDWkvDvehAsoJKeCQRFi5FCQjSO7gF4zSmJlQgyTqzTKlvkosN0GFNWbd7CCYHmWnwQNZr2hDPknlxf3ZtkKFFUKMGiAS0JUuNns7zm4jRjyGCX0vhjzUZB+SWFEU10lsiV+bZ0M7p5bt09sRKmGU+b2WBMgRGcrj26NgvQ2pBWH/p0sdhc7TgDhXbXbl5dcCew/QjjGolbiup8ka2W4b+ZrwUnl7XXH1MEid14uodd5iBliXeXcvVFj+74wO6WioOIkKPW4PkjNhB0YaIg3qEs+nh0RxBOQ3OSG6XsUDbFFGAsrSq8PyVuqngTwg2vAbWL0JaJ+v1Wztveuv/Y8PwUwSU/kHjzt81yUZEnVpuAezbQUIWy/0Bwu/bndzVpWm+gBp2iB7532GxBZ5gFtDK3Ul0Mu7461R/nG1lllhN/gkPQgzapy6OLcMhDucf4b+0huiUoxIBNE/zDCiHOB2o5JtLK9I5L4K0VgThUGB7AKeQ580eJiDHbtibVe/QEyqUXbTueGayFgXaSam7w+Zh9zPLWAT9xAoZcBfigXllCxOB6keNQHQsSRIlHYSTubJBHKggN/RzC8lShscGVf/wpuITyorp0OLHjpNbS8d2SdDW/+DO3F38h32OKoCJQX+8TOil8ugoQzf/18qyIghvGfI2aN5L1lWyi1q8NAZCf95zRBlfsB/n0UFeRoZ2M7AUGlXpRsRu8zKwkeL71tfVP6GojqU4HVlI2a6H5gRLXqK3/Q7O/Jpu8U58Y+KYfAUI0ZXGCtTW/uEjglQIUjuIn7ttIOPV9AlRA0jJx14twPgKDfINr/AOtCXMlwuMZ9++c/D9iTbk2Y3w8TyOOsRYeUHYuIt3PzHJ2bsXYHRktBvEERZskPoZ1ytPNV2XW3a89ffyyJa8HxBZLz01E6l7gkfGzExvLeYOUs6ir4o/TZxrkZyVp441dLD7GPP69g8OCuvY25rGvBpEQOhyj/ivKo3QLhQk4NeyxHigQtfEpJAt7vgIYwP3LIvHIAZo+mb8lgnqBVrl6g2/PAahZPlRXpPzH/0X5//qKZ6Dvd+kba0gksRNVt8L7JzfJkP50tf6d8Ul4jkq25LRJOxDE3avCnsVpDc5XVxeRHvSEwXDGDPeOqzI2u86iO7cUZ7FrKJc8JiBDhzphjR4XDNb2vtnaoiummI6QVyW1Rwide+FRNHj1qzfJWh7S7Uf64hG+vqAcv1ngZP9Y0GNXBbVzCB1rUw5MalPKJd8L9J58QtEfG1YnZi6dLTqnnuYLRYt/AEOqmc5sC0VIP3bxwvWF98i3nZUJzyLTU12dqJzdKQdQjCnmOYHATF9DVQ2y2QsFNSXMZs0yRCJ/N/N+W8Je/o2YA/oF6ulysITGriWlQC/NQDk3+dREAl+VXVtSbWEJbtCDViqYfxnI7iQJJTr8w5iMiCL6eZXcfF0XyL8V1Lz9XylSL0Ez7IqIXWZyFQGBg738XP+RG4aOzEDhO0PH60UlhP7RWRAmPQf7cwgqbXTZmmQ0pJTyU5tWiXIhz2wEFZ5hFP0CMLW4SjEAc1GSn56VxUMNUHjFNwPlcA+QWiI/SGsHDO2KA0qB3UDqJBjAd2hnlNtlZhuqShTRjOK1ttw6Pa44EqdTbXZluOULxVda3XI6dhhZFbIO2hTL/5JIu9uodmVsm5Ny20YJG5s9dT1btpKGjvPUIA2/HD7yXT8eIAH5gWytjwHLXL+q4PVqOwUXMzs447mApM39VxrXQaqGhlPissfdIpU9ahN8GU8jwvlTVgLElrzZ2bRsNjx3NqSmnOVkTBj8Sxf2JmEo4vJfVdFwsiXFeCxoFoRrTyJNvAFjVvp2i/qOesQGWfD0Vu4BddKY5gsFM674s0uIQGJA/gITwARnko62VVis+xBQxdgsy8FRS4/TCutzKijK+MpCH2GOsEjyPMTPBujjdKswDfEVdSb55dYYmW78Yujy/Losw4GKhXwvdewU8powHIrwd9d9SXXZaHr6yVAsguu1akYnZ1qH5ur0V2ZxWax8joNLnrrWJeKjuroi9D1fLXY7gda2f4+IWYKvSpqE+oEhFjQJI0LsVVz7dB3smMcoEFtQShFoWzXJeePZv24sfXW4GNGJ44LgI8hIOzUyKHLSirGPYOS1KwuIlF3tF+lPHcumYBXUCbS7wftHBTeq94j3PiO+Xv/ATFcc8Pl0ELVzS9dsEZKINEhuSWdao/qz+9sB9F3gwSh3h5NNT8wOtdX/5qib82pCRieBsu+QoT8E5R6lP4nXdWglJj4PiFsOpk722gyvoTWCs7biVFMJ+dkGfk8NZPdUj5qiPs+sJdWY+0nLOLnUpgj8uBmmnZP+RRhn+PpLW1Zm/RhkpkbA5ucQ9sfUfXOkJTwjh0yDkMnX6+0nYfHz85/91GP3/u61vNcMzhhAMeVPwgTo1pmAQwlxMpLtFb+8X5lCO25iSkpOKrKoOChd0Vs4x1f6E96YSYenQR/u9nOwYzvYgiwPIwrBOCDXM7Smr0Lgmtovq/GMlTgYZQ7RbO2MiBt04msrkeZaVl27NQfbHCz2COd9JK6FctJPJmCJRTinZi6PHEMG1JwUGeygn2soqps1PstlpSo+e+h6vT0SavZ+SHxVBosPTEHeAWSlZMH44K3oA6DN7/qtEToY+PJF3dtlFkFkVweTkvmteR+c0VXR9hfOiJYa76fYssuis1qx3Is6Mpe24vD1McNv739H5l5RtS9Gm3FVZa+Hx8SXl/TLDXi3/iSYXIOL1Y56OUDM0Uso+w411NSiYId+1ZCHRq2sKcr0Dm5K0qx59xyRirXFArD1B8gdrH9gq4FCccdC58Gi6D9k1L8ChR2EY2Aa5rzWGC02cOLS+4Yo8KTC46CUeBiMgUZTtxJGl0PZTYS2NSlQ8JwqQ8B8mF8BNhpf1qIRpu2w3Krcg+toGVnQn+i7/CF+IdHZYAqD7ZlTUZt1ilzpOg9PSZ0FbPqebFT9me1B3jtu5vI2zI5i3Awaxag3PNflC5+q5sfnnBlaXNzaMCu9PuLGTAsOUzVlDIu004iwNyDCG1mtVEtaZmRIJt6+SC9Ehg9npMaIgwqchlMth3Le+mUpcRE/g9klzyQ9fhmeMQjDAky1nVsuKs0kAiN5asZfSx//Rj19WVWznkbd4xB6tCIsaC43l0jJbqT4VtrIAnP4+khC6fUZ7fk9iWX6EJpFuXiT0eDZuoEJbogGveYLurhTo69CPD56cOnm449r1Y2XzrNnzG4hePDssnRo/D7wvMvu9YNFXS3GnlPzh12DwTfggCH2ih4bdQzxV3aQiKqRBtgrgQ1LDnpNEf47/7sJUy4EvF71g+8td/jopVA/ABwTEYli/TBLjS1q2eep3ClXUvQzX+i/v9J9f4ro8Nbv+ORqgJaOLlILYEKcfhZT54JwntB9pihMbmauV2Ut6r2BhWaG2qTUVQCNb1tlM++4vdz9WjbdpRODbNMsPoSXXHYkkPxZR/bxW8dhAVdBammdHPyztqiND1ubKSTJ8PHYswp3HHnGQvxe0FtMsrzRYfm/3MxYr2/9uOH1f2p5Zs3Lf7gesrP/7wZLwvJp9OK7xW10zBb8fIul3Y8rCcceF75BZupiJ+6a8Lu4P9Ga0bjqHJbrv8mA6DpUsMCm/UliwOip9JUAmrCN7SyhfZ80aPItlmJWXW8DZ2GzCmTg9wrbwOc22slR1kLT7xD7ujp5nN0SzNvznwYZIII0gVEqy9wJIpZjNACmhyFbOq88Cssw/eUmMSih9AUskv7Uv56NF/9rFiJfNatx1b5H/hjQpY95yKL3xa5NO9zHV9/HVX103nzbN4k1uYU6CmrtMCs+PqLqCV1Chr3as8txQko0qKYIXVpTXW7C2u9OUDjW/tZJdZswY956B1QoETjxgZKsNWjEfl2/s/eZ19UGWunMaTVJjSxcmcxNEykda3nQQQwgAauNljhMxdR16dp2JRk6qSClvUkTZE5OPfHztrBk3cZFbwk6G+PySJf9zBCno0MUo+ZdA9Ti1+02ij/+80989UCHw1cx3Lwsjtlqpy9kiVqEJpHvXDusaAHiRZQ1UrXKeHGw0peLmT2hfWWjuJnV26rVcclaNpY65075iRe42JG1IXtUTsZzdRFmC+4V2GyXwVmqNFbPQ8Jnzzp0lI5gJj1dZ+rmbJltN2O6lyUklQP+dPgZGRj6a+CAVi8mJ2UlzSd4SygIJ9tTO9mklBaN/EV5CTxZMgm0zTxHD9ELKaXgXueVh5AYOVw0TMoynPQbvV39M+CrCK0MEelc9gbELDFpxHEItkUPv8vtxLJT3mHkvvcBMlBn3VvSDoRIi/VJGFXA2Eom7Lr4Gm+/1MYZpCDfm5muCNAgp5ocDHXh+mNTNA7DJc1qKbqGXhThv9Rp5SLh6JNyNmIn/XpeLz0NmzMS+2YxheRJ4dIPPRHbMgSPhXs3WQIoGEgYNzt70gJdeyqjziqz0sS3+N1EtnsNiKY3gx5CI8fLDEXF/eyyFI8od8fxtn7J/dwHCSrK1oMMThfCnLUU21GrqnrDSNNa/IcouJIjDOl6T134CV1kY+/HzFmrwRDFwpbFcx8UAe5SVldUIcHs9Rj8qObDXCsvcGMnYXPHH2iJXvCU+FxAIM0fQoRIBKvbYYtUGayWDetO7CkFSkkQvj3XSCiK9KgnUcGAiSV7+Hy7TFVK53ddIbpP1b9NB2bwsXgLoZlTUsL+RRDgYEN0m0Q1y4+dmyXJmvnbOTWjUNCh1Qx1jZRZDni39+urZtIAhMsbDtEaQGXkCKa/y0QWMypKSd1w5th+uvjxqSMRDgqyWi/otiiXEfFgq2IET4YRQzBVl6yDcLlO3lAxBEc/GMz6jPhlFMpePWH32c/NoO7U1AHPRGpUG8wE8/QA1CCe36/8EWiC3786iOgr32ZMt/McjB1rWQD6ax8/hQpOLfJ4Kv8uon0Smx7/x+k+Idj2W0sj6B6I9+/tJm8uXnIh9Oa+xO68y2UzzRdIJiuJoRSshAqtO22GFJSLICq9GNbZ+nMi96ro8VcFH9bQzT5gJ26If3lU7X2Bee7NbJB5Vpcb/zZsj1dNvnGKpXi1dOd6wtCZn/nTUMADSypaQUUCTZJ1b8zVdOkfwaXzmfP3Uiajui/j62uw9iUontu4gA0zkdN1+7fhPMnaK7qpzHar8HnFUK3wD921QK6aSRfku6/U4pGqZpbFbL/B2ubiGZM9YOliqbkjHYJ2fLNROFyWEtS9/Ntwj4nzTqfOvQsjae9SJ5m8tY/BmErNPwjnQVm2Jzz2sX88zZ2jwgm7mmtjYHptBE9E7694meULW8NVfbQayjBCcR3fLdzqOMzT75bw3l8ZHOf5g/zBqq3rv0ugxA+H5lW7LesVRRmwwsTtSfX2k5sTy5X2h9Ks9nfxZKpYCsKhhLtNUsLzggH1lUbQS3XUYJHXJM87L+qvVH8sZQaaeNYKnuvpLrFjbf1NY98Vdudu3psbkuab/SKdPwsgX+7uKvGXyqQ73EvE74Shiu6CMeuXjIq4v7xHkmVfWpsbiJ6amLcd+36pr2vvAKdP3jeavQv0oYWIrkAnHbty6oPCcTYSml/mIcv+I6oepbaM7HWFJ3mNvOEXFabQRH1GM7c6aaEK7+b19tO7vyEwURMNrUUDtanpx6kjFLWKFNE99ikmfjnqyNSfJzJLlIN3eEUefy0WQaIP6CBHiPdZ0R1ZAk1vt/GGPOJy0a+dNDlrdX/mhnH1BTQ7P1evb98DMkttzu3Z5GQ+3BGarvA1Hmof08a9LS46aE7stkINOgaZfzDH5oe6LNpbUuSkDUGLcWIYUmQRAEGKGSXTo1FH77XPiSKjHeHaN4cCXfCCuSKSvOQi/RxbeCvUjOnwAoChDVLF/AWkisuRUPcCLqZ89ZYDBVnIW0eyr5qYHbEmPaziYGstCncMLHnnE+wd7TZy8OrAS3INw9a4sH83qAwBHKc+9zFrSgx1nBhQL7hq76lVx8ob0Xyr8QY2TaDZwN5N4Y/J3FG5Iic3DDJeTu++09vIjwhMoc3jWwlnil0LG0e+3PfMHzW2vk0pW1kNfRGkeloXNlJJ19le+H/pzuOFa+HEn/6b9rygeMo7WaRSW89AiEyybDmHAmz8Xj0BSzrM7T1wPMbutfHhB6iD6r87nPiJUbdessLqIRj6PY+Sgen8iHMs7iKYhCd1q2+/i+DrYi/mJnmsd5WLuxfOIdW0tMtc4rkzPzTHy1af+3KrdAGuUq0bNcXvgdlMgsG9EuyDzOpBNQNrkzPnA19lYwOeFX1OfQH0V7j23wGpBKq9XQ5j8ZTHyWpmotkugr+G6nIheL0VrwqQJK6csTmbDpF3bHsuG4VV9VSZ5y4aLucURpiwpX7p+GJw9RpBPsioVgNnR6yBv6i5S69YzE5492WyshU56cmTN6F6mE2bw9ioVaT7u0X7Y2fSxIUGJTgB4o4grepkJkFgRW+eXceWYf6jawYaTegmIEJe5nFS88+XMUwhlw2/ylwftcrtfN5lGbdLduNYCtNJOzgyXzifJdSaHuLZeJ6+mI840FapG3TzHa008NaRAPm6X4I8GjTIkDcsd7toX22M6v7vVi9G8bewnG02lWAmFSLPT8TU5+U8TIXIJ/dSQX7oskCrr7iw3NBiJvhL5jytO6ligb7X46zkIiVuCARDPjUZ7EQzwhwDhhy7A3LuyV2Ln6aIELiP3uOZWe23YaO2d7VhJxmaScaqN+rD0+hd7yM/6SupdDyGptna3S+NL68+b8ipE8KHnhOP9+uwITEmzmbEv3liZty4HvZoG/MbsLyywWsGDewLjt/edLWXMVEQp4aFnvEg0TBoKV3oD6o/pRCaKkSO9X3SF/D/6qVdGEFioKldH+LjOzKQHqpBJBlFipjkfNUas6+AZ2cVvEagbUPRLmvjWMC9P0ikkSRjWF0RAjtP+/6Oewm3322vO1m2lm0M8opC0d1KUtxuBYOUYba+kM/z7PzxUsW87Zq2NHqcbZGI2+4nl8rcrLgK+//ICjUl4Zc2L+dE4SKTK7FbrYkctoWppydjyEB9xqKVGSrzcWlff1S4ptWnCsvX42XKmMvC3Mi7k2C0sEVCsvvrEKAmfrDlGTATQeILDz/7cIVhM3d+2qNq/XvTypAzIe2YiMZdmEj9GZTYIBm1RtcU9oHhFOaL5qnwiT/jQzmTOOEobnHO1Q9haMRxi8iZUNkn3bHFepwjgl2vacCG9PuwoUdz7ynI99t89cOwKMX2yIJfhG/lq3bv7V2rC5AxUETw3Qj8pSNS0UArfxudzBFnqXFoIuZQobwDSQnOtu0aFl7rXp/lE/Kjr4Ys/SCh9LxE7PnwN8X+fzX1aDscm8kL1E3tgO8K7hsE1lDzQAUau7qc+sB3SvnIB9vBuSI6J033A0YfdP7kvaQPcDlWLdqKte7TA3xa7z4LhOfi3baSK+IyoR1F+8KawbRt1DPkGuIBy/te9hZdLn9rQTgDErajMEiVztlN5iDkkck4c8Z1qxc/AMceF/qtbwGDNIeRWeDWjyyOGdPVxYY6borFm/04+lvNWmmO/5eX64EafOJQscvjjyqKBH2t0p+0uk6LhZVeMYPTTl+jVRtv5JAjDE8exN5bygDHvnRi4Xvd66zvHtC2wmCXjyZAsVRn6wLYfiuLEkIY2r0VcobPUT0yTp75i9p6QeZLvAXaX4rI8Lr8X9LLmctpnCicqk6v3ReP/88S/Kx/4MKlFNubcN1E6VxsBs8UKbKWpS+n1scv9S+rIARFeJYruFBckcDkLg+Ll0tWR/6lcF5y/OMpYj/2Rz6JvJpaqQLpT/Mx9SoBXKnuOw5af5fc16MxtXibBod2KH81CVWgsrHCdTMbhPPUjZWftdhy0HYJqlhK1Jjs85QTosTEVxa7SV//mtuKDT1lzYG9vGjOxkVUdlTpuGwli0LhjI8tUoNTOVZ0oQ62aW+i3Q3INiNwhyGkOd/Zuo55OC0Ce6xQ/FuoAzvqjqlYtggNhMDUaQsV0BoJkvPOysFeZLJEnt059KyK0I3SwOGjKYchyqMNnXB/xqFlMJx4AJWqOF07xX8lOIIucXnhHE2TjbTXuQDNnHsdnkrG+Vq/+CupI8p4K8xkjm6Kk/470O0/4D0/j1OV+vnwkBtN1VL5POcwBsKN+Ki8D7GvRa44PtfZuSrAiDeV1/N83hvyfM00fF3OpTDd/2Wcb70ZhTtalzBjBVsxQLb8KqYs1CBgK1x6hc97yy9d6kZiXA2Uq47EptW6QGojfyLKvIEDKWH4hKz8/Q4WfnkH2gpF3hh3H85d5GeOYUiEHsXOHfBKZD/X0XYQGifG+yTOMAJA8/93yxn4326FMWE0+arckpNGxHmPlyJgrSuVmLkLOph1kI+jnCSQEFo7jnSfGWr6hffp7KdaXMD4ilkRIk+aMHfu7b/bivgrCsZST6zP/OknkZnd2PQE+rzjOKUkNO6pmEXDzMu97wCVbbEvC1d7HvqD91ZEIqJlSe0IrZztftYUpYhLdxShJxba24994f0ueJBWeEGauaC0NtBamI51F02pIcstSU+mFxorLuEVmt/TN7zUr1DxXTUdny5dX8PuUSXSc9qRi3JjQwe+48bWBScTcGF6W4/OQtqwcDgffinhk8IPVdgall4O4kXnlkIp3HFXaM3NmnW2/GrnDYlY4dgUvShO5EEe4b1rH8e891C/at1LE2ER7ZznpHgprAfYq1uS7lyMdyJHSa8cy66RHTmFFWN5m2zcG8YRDtmkvnBxz2eL5OdmFkrZmSUqyoP5dobBtWGRgfDkCbaCBGR/gyQiA7EI8wKowO+5PJapZa/eAlTiSMPeupdfhHkPUPzoKccrBcu23QvRcCsgKwFOUDV0EgV4kG3PPGLVzr0+fInGYyfj/1C7zyUDs1W8W719hgKjFn0gVOAz7AVwBSFIOYZTjvFd8FYkmqS91F28YFKSx3SlGyux72wvB5OHZUvhVRFVS4ohIblZ5wNcQxwd/QO9OlPAUvTkw869uqLBDn0cwtaE43dx1TATQ8XDO3R94oOaRR2dG77AvIqi1tQimUYCfT7mTCkp4YKsYFW/I4IZSaL3rvlFD/FU8C+WzZEjyLYOJUrb1uQJlfndAxWAEyVQd4wMXUxLE/KxieeFwF6pUoRtE7UuRY3tN1X+dAkPxIDfeUPR1FxKO6Zj9W8AFQHTzNEUD4MsMriyspac5lR804tasVnWyXXRlnfzw7UbsnKFNRadNcauX3cCRyu3KTBW5CdLGzsTljrzmfVKUi6JC4oRwceJ93LjJV8gZzzVkMwR+upyJXH58b/Z3uxlEtDSRV1h8Yqg+iuxx7DBj83x9FnmeVNgjsvPh4GUK8WKe/lAU4OisK0lG92jQii7z2+RamurtVARqccHSFzT5XNSwC/fDJov8uh3m1B2qgdZhIS+XFDERuoASSv2O9ftSyYw+iTnc0H/L+SJ6tzcrDD0TreGmUqrP8KeGNbVc/N9pUl67x04UIuy6ji0MYzzd3+SVeZ7HzOii1YXbQZAETRXHmlI+p3anqxWjtO5rpEf7QaZXyai6F+nf++rV76j/4nxMfz6YuBoluKhEmQtNyMgkKm/2idLbRzhkyjkJNd/jDry5Uq48dQbDWdMSFqxTcvxhEN+hG6oaqBHT27btFyKnO0ukgTlawhj2LrmP0nPfXGdivQ78aRbXKO3asM4vcAbr8xK86icdKVOYY+xjbfSjf1+Xcrl2Hj/YHdxgrBAAH7aVttXh2BvQ7unzL3lMmTQoFQHsN//Ia7pWiZnBJ78e+WX7gLZ/E6YcO/O7xn2JmoNVGs96pXlpsqjlgPw/pTnQagWwSgPNL2U+NTDqOvui/3P9tF+i9VtTt1lyfaKX6hQOF+3z476+e2YXrPlveV9uo2w8/kRSLx4K7vE7EpBGtaaqsE1pHDXDhn6YU611K6irwwRtj5JX4PRiIMV3b+Rje4abtdqkcetmEdcRMlPSMF9XnYbCadOpGZzw9BbYpWLO6PXX2broBxZajz13LhB/uQMaipIr0+7p+7UkfU09OIFo9zWzG730AZ777Ocy30wtzoowL3OtPoqnUhP4nBd3wxdV4uPYLJb4MQoRpK7GRJlaQeOlqYRtvpcI7HFX7K/TrkBUwejfb004AKSGTB3wiRCbyTbdlJCfNWnemz4rctGQ+567b6lJnKI+O0Gdk80hidIxxinR1uYgmoCrMbkHormsmbcHEjYIpikFCzXb68kJNJgMJE0zJuvpPW/UMpnAX5qQBYayfvR6CxYqt2pdK56EKDN7Lngjwlgj975bs5cT36iXKFdb4jM9RTujCT3y8o3487r38LZcme00Lt5xEvNSWPAlofocMu0iW0ANd7DBnUehWOvpIM9Y7HV1fl4VgXaLrtBgQQ+qhfuuUlR18nGKFcmaXuAk+J7HuinTPT0zqnFlOUEt1/OvwKCqag3BC11uwyyCVNxAkkvyOWQBZ0IDBeitXVk+Qx8DGTNJtezjUJQOKUurkGc/lbMNlDnoTS2WvtdtQFyQfnazNRZEiX33GrZO7HiGfArGsxk7FXYTAy/Ud2jc8AWU713Mtwx9gimLRttrQiWjb2AGMIAnpSAzbPREWllBFhnLT94CjQu2DByycqh8KbHFhWdRwg+vLDR9WPavRUwED0axHqJlV7kH/eowZUse3bSCMqlzVPSQNPWueSroVNReTp1ooAJkufQbZFtPDZ9DJnR0S4T7WL0AkfndfFBgGW/Kx8TOEhpk0fmZsNAJC5xIvLVkP/vFOyIUhwFNy7yxq86seI4zXHkdtDJ6/PpGmT8TBg4nBuAPQc8qgK+tFfYtnNVmIqqldK1zbU0LKCkTUaKqdkCU8HRDQBi7ZEz9/KEw+uOXUP3uiReS9gt6k9ciFGoEbEtoniPLClzhsXP2bbZN5x5/FPoQyMVkdGSIR+JN05csKmErzuTB9swU6W5S9LUxHFMNJQ/DZDPzpMZI1bLMS0OM6eREnLpXMFM9yP50+2rubQTFdIsTO0WHgasVbzX6xJ/QEl0zaY7sjRB3sYZ6EfTjgtg05JFJ0S/eoRxA7MUqCz8ai4J1aas4t2rEWByv3YUXtMMbwKTynZ59YzmfAujjHenjBrpB+aOs2yWSxxwq6iuKv0R3r+Tpi5cie7VLXDEwoGHwmnLxyWIwiSi5BF3BkeKjAvOY7EPviE2bn2xQooj5xiBAJsikGiP+X2H6LugolbcvitrHJlqgLRKl48f4jWtKBueKb2QUmAHA1eYuSfZ6OO1DqJ+RAYfVVTjo4ANO8/BZjJJ4BsN3jzVbNPSsbpaWCyXmoe7Zt7Rvit8vLYD+pFZagYYktNYaW2mw5AG+aUOr0YWsao3ZtwZco0bdNIqlAvjCcOnzBke87uSKbtffkpxj4QcAbFfbBRYsmKqoW9lNgSd7WbAv1eDSmZ3Px0KQKjSPXj5E/jgBtRCQrSdWF2s+BDTCLepIXiuS7NFS43IJ8C2uHVsTmlHmJaRkjNlQG1PVFuIaaqgBN9A6W0DrSl2soQ9dhmcK9iFpZIOG//fKZ2OTeOi0BRZ24TBtSrg0U5RD7pOmJnUoTEtzVs6e+Ohazf5TVyYRh07KpW3NaBXfVrBK6yEsYMmiycXPh3ACFarlRwkuQKXBfJR5lPZyOQTqSXJNL/RZ0gmrY2GL4l8BATsfP3sA+IwfP6iGzPorM1iFGtiMZHvueJ04vJsGLUYIaXd5mj00ivrFhDwqW/X3W6bl7+mlm5G7Yh71qzS+D4bXHlDUXBd8OkH55dZ1JEzncETzvMFkbOT9NOLoT3cwJ2JKwBo25yYuNKSzwYg1SjL6erz5kwvFAYbD0QNf/BNPw5GmIM/Ap6V75ukZfRw+hUaq8P+YyW2+B+DU9qwVm8e4Mv7RlN1W5nv8trlEmNUftln81AlOi/MvonyCAW6R+6N17Q9dhqcdo3yQZwkRqQs/jrZFXlnqa+XpDMayAl4bw/Jlnj78kJ8A9/xB9F/s99ivD4VfDiK8LMkAWwZA+uDpM6dQcmfqYGHxc2skXhsb8U0kNbdb8qcNhX9WMCBahc1Z82M+ASUd0bCkn3zBjvV1XCvCUYxYnVqfJsOsKTmNMjEYe/HWcdrEanQtjC3dRQmxY2MCnv5VZqTUeUy2X8yu3TQLoqmql1nCNlBXNjQIvW9P5E9mESRGl5u8A7+Ueg2P50OFxAtfDm22hY21cyz0KRHyIlAoIoQpE0Q1NZcmzIIQqBNKhpXOlyTFjBBDHFhF1JJEIjXLI8lMFVJ4NWExsEqHigG0VxZ5X16kKmuGR7YwBB/7oqqsTEFu0RU8szzZ8QoqDYnQ5DxtQgtdFaH4SL9y5aHM5zFfZo2eQYlLvI/4BpeJTPvE4e6Cfa+zafvTTsAy2112kDIK4/jHbI6PX6iRXht/p2j3jI+xqNgoxIF9nYmYU5WzAnZnqnRuQSBVu2fB9a30igQB26A81efhFm5F/qqpaSaycN5D68W1d6UZtJvFmu/nt9djvp0IQudV/bN/H/zZzSFaEmS+4X7d7+vAJLWrcNabzG3hM+YOEhqzCH/YavrjavN39E8BOvJndQCAtre4My9GvYkPyw2X6bNTiXm6749GmZtS/sVr15mjEAdC3kYBnktpBJsoRWNUagN4kmhNrcmmOuGDqS00IrH2XsAJ4a9uychPIYWp2D8HV7tXtg/u9WFpYfNXmQlVNl59r7zhRu3vvnnuJU8syhU/mXATJfQG1gRMZ24FXtbM/mez6xSOD6IbwSgmRfaIZ+YaOakpKGeARkjHKFLtrrMASpnQfX41ESGsBoHwtw+O7qGUbZfaOPNpLAp5IS92DH75TEBrmqjAJxvOrJZGo9EJjhInhT1QzW7z+4MZ+EUWbQBKScNJpb+0yBLf3CkoqO1ow5RoLJlopmTL7Ut2Jsph0N7SczTYKXpdJXbRJVqfCDaLsi6YmspA/9Il8/LrpIbGZNi0u7Fe0OuOE2mjsNci+pFCKJpnuilds4KdVUhBA2sNKIluG0w9mhvbKosVtsSVMGed5GmdkG6ViKMnsUk+BcmPap4mHH51fWGHLCB+dzgrPmVItNVd63udQwARPRbKMpGhjzOiTGp429JrfLqlwGW8nQxbmTCE2n77/P6VG9BJYjgVflXL+AKUZjWPEcBloLd2zyHbSmRQVUAAz93BHTZTYSbQdfAd0YvBmSTofcJnUD7rA3lAQXYW9s2dSdQa2H2TipYHHUE+5d+M3c9wGoXfOCeRWiODNSv77FD3U4JP/0DR3+4uGDjMI+F0O0sepH0ALE+UEAhRYcCreJrkSwRFg+AtnPplke1aInKMlw+tVWHpGDnzXltcxp1NczDkuLyE99pmXOX5Rp7EdlhGMZ6Gz2vMbMdXu+P8cMRBQDtKwCtG8VOU1G9HEnf0dykCTj2fLQpbpMJl0ZGZEOEKhkt2qgrBcfV8d0zcwtwiEy4L7SDsNlYfC65GYY+UTP6BXQrLp9vxEyZR2zLE+Y+Q7xnkuN692hhiZT5WG1CkeXSy0VG0OUMzDNVt+Bv2Xhc5ZzjyU9GeGV0GL3H9qUooYVcVT3wT65LyFHE6qmh//X9t4XwqgBEWkayS2tPNGNbL8Tlxz+fyv0rrfVWApR7eRmGpWJQjc2UXanLCpfDjcwV9c8YGQ7fFMM91Xp3cmInUdaz5OKjtgstrtBOcnmknmnCX7N2agWmAoELPnoyMZekgFLhbN4/RTq8CRpxA6c8NMVffvt5tb72012AHOwrkqXG2tYyVJzbN6eBHsC4TOzpYSsS3ypWvE+ZrJ08KIx+jWaOIDBXiqZ57/8u+eGuXCqFIiuC/LpGPIEI+I+KshX2GXPQfD2vsu6FtUSCF1Hti/T2cley4pg+OGVQS8SWfXIrMqk80eEnt4ahKLJTPWAWwXaDygMqYmpl4tx94ibe8ZV5Y6rGAGADLPQPwfrwTrJ2fkKBY3fKX7bEasEozX6Qz0GnnqWwbBpVrz55CINRA1OTdQ3wPbjHW6N0v33Yc/cxg7Obt9W5p9oYxNNfIbIs5k2FmIMdpj82a+CN/PakkskcmQSstBUdfw01bDZOIUak0l/EgoU2iBaYTrNV5T0r3zWPJY3LICInTtGFhj4D///J/FWzj7cXn9nCYcgUiD22T6aKP/bBUG0z4EMh5WOor2b9pgLqCZrByIFxPFMugRWpr+35KLnkj+urgXFGL/u9Wn8ov0X/XYv+01a/+S+xdHvajQ69avSfp0DscT1CNCnifyEezBOdtdyPFzdblK0x8g+nEFThOWnwnrh0pTmwHni4/genW6HbfeolmKWy+oX865QxqHMlHmM+7JnxCFL8usyM1T/mL7+B8hJQOer115sUpmFkPpPh9FVEgzs1DMIc67+O1G9Wv4Jy4zAZS64Q/N5ltG8R29N2Ue35d5MW7pOcya77KF3L7R08HNdpTq+i9pFzuZpZ7flpmM2k/+86JzSi/gZUTvf6d4GT5R7raN03+GaTi/S0qNCbvzKqar05oqX65vCQ6+BsbRF12f3rF1rafU3ccx2kLtSgfopUIfnWdwEpTcpOGYNTWu+yUv7tx0hzNxz1sOPW8Ld+gyInU35rxpcms3+WakFxEdBC9xq239L5UH4S9Ow/Fr2O2gfSzAfg+9PDHOvpNPzekI8f7CDh2qY7U+ofQv/3B5D+iBlawJL7w+cQaNeA9kR/Sih/U6k+XXRTzEepeeefg6cBe+abq7+ZwFNG+uTae4MeFb7ZeAwbpRRQKqnv1xQMXRHadat8wapvRn2lic3+QodUWzRRvcEmhPrKyyFeBfj9pi3qqiC8y12pcW9CffdKYVesfSTU6kNau59fOpEInSU96lFOqVRhPk+ywCGz3m8p46WpRdBZ7r2fvJPA0wTMTtMmFBrwu8xXFFJKvffdbczgr+ehdFh8rr6f/To0ZksMp8SNbK1Zw0lvpVzTR6LXbIO/Uimnbisf3Pnu0deGlREMQsXz+RI1JKiItXaMRA0Gj8yYmoMVg3wlUZy13qAYcW7lXk7SQSAY0N1jVm0YgEO5W8rozL6P5LO9bn/BfWlknAkOiOLNd5RjrWQ8y0UecdTlEWPFzMQlEa6zR/pfD/DxUqRUkaZmP3iXZ6FY6JyKNcmrMopTfjPzoRM4UXCFy6z6riVbuqC98PyYM4FhpjVVP0Frfc3NUBGpKXaz2P4pUusoJXMsIGt6LHi/UESGEyzcfnH+fLCC1+Emcbb3XSMFZN0M1IFgm7CK397aHlrxPVjVGJlooIqbfX1q8F16NTDmH0Xux0tiAo3K9DTC3rraIb63On3cXWPHLsMXl9ydYD6kojpqyvs29cO7cYmz+8wzfGlejVvzzfPf/Xo4Z/07rlVD5+L/SL4Rqwi22FB4zL/fPh4/78sD6ilP9vYpJv7R2zCJL0ZZT/d2HopcWCoBTb3jqa2J0eNMbZC6IXjp+6J5Ds6D8ODxxwbu3gDf5gdnxUCzYPcsN/rYbdl2kiBg+ZuWxryh/0tFUsXQ1pXWwWOahq9i9OPxvZt4XK3ZLyfjCnkNYodP2bcnvWw1UKEADVbu3fbG+QXL4MZPwnxGruo+LjqKJ9EWokQ10ALIigylRXRIscl9dLh3SV4LkHnS3go/GBJj6MfIqY+lzfvMwVB4qooybzpy98TuNs5noWhcB9kMwHBfKG2cHQS9KquOebGjfq7YrJyeEuvQz6boHNILds/ShF4v9Bs6SnLWZTTqH6h47sPrVNFntmBECJHqkBDFoHtxh3unMj2MvC8acLPgHJ+LDYhbn5ZQH5n9lmHF1MAlMaLpgbouJTQ/gXO0+58zViz4ZIP8ODPkTYw4LFIptvsyLyEfdjXgexEsIxsTdRpTjj01bSAdgWndahfL+cJ3C66DsNUeweW84jekUNgQ+xPkl1Rr0Iymp/KNcX2qT7YXbx4fOdM8cp3wRdpZzJn8aaG02wYzvLonewgXgs8lGXAdqg/YwQtNVFm0gwGHsfmvUse0S/pJIPlpB3YdPTi2PVBXYWLInWhT3DFHbnP0TQ4pEv2E76kJCdnrJ1RHyp3aUZqwFHowlJGfHwJpQ4dqwezmpTp8p9EXLZBhOpI3/2rSMNPgDAG7bY0CtIA+IkuGoBVCei3bZtaQ1GI8TO0IFKPNJ2sz97BpXB/zTvHelTqpOSG8bZDZOVvBH2TH+GHq07RgpvoSowgmdbRA49WUcjiQkhflVNQ+XkLTE/GNUWMrwGXDbvyFxdCSSrxxWZe2dQ/cWmCpiOzfTxkEgvT+LO6/OXN8ZRbEwMs/+G18MbE/46dTekh9luNruktZK0ctzVjEiVDY8DrH7lj+Hkce33EGWaFoJjqIsXEVBLjXmvWG0I8XkOvB8HuS95enkzFZY+SY5dhrLENHRDynHRhaQnJ1ndjqvsr0D8GJ2CBuz6lycX9jLFAHrq55xkiQshyRQkY6sQ+KXhc6jerXdpfA5hG896qRtKqpIKCrjW8tLdg9A788+z1x2vmwN6dluelh4c2IJVpB5EuHrsKTnzQKsvBfxexqlXjfb7934dP8aaKJG81KXYA1R3nh497nIy004paMmNowAi9xFjbnoY1WzkzuEbDeLFQTjp5dtSI/0+RwOOSOriOS5VD0marKPWTO30tn83NFWtpkK+08sAgtnFlX88GHEZtjA0XWJy9IujRRJi70QXr0saFXM+4zHEwCLmpNr5LkD6LQk59IDqu5+NGqvhl7q382AJjymq87bkmTvEqpQyUozTmmfrAHBrz+kdHx0xpXBeYrsLMM7wLTBDBHFH3miylK0xSI9viyD5nGtZzd4KxKmlKhRceIdPyhXrzzRvMe17JQuVNwjJEp0FOIfi27QgCCorYiqi8bBn1RlogZgg/2/O0e0Z981Q7X+gMj6k3NE8+SI4cnj3xtjdPTAlB56fV6ng2y1pHA4CWnLkTtvra8AjvTavvl5iabEaEFvpoMYhmEYxxdyKVE7s9f54IN21giPVIihEkWkFV6jF09Z/+k0pGjVi9Ld7upv4LhT2jIMn4wOPyauM8HOBidtWe3kwNU5r2V6JLT9wnaxYZDvJIzjvcMCfA9QmIwSWc2E5gnTib04SRuYib4JPeey78/WOIRRvH2P3AZrG5KDucGzP1OGVo17MQUMRci+FRHRLScmrOpfnOZ/gvN49DDH44izbcPLuLpqd3CWXzrvrIafcsN3w5/vqFsanRlkDoEwmdV/c8jroynLdxaDwoKeNLohGjS2i8w5I1Phwf1UU2Pkwb6o+a2IPnGsqiRW1e/vo//Bqjb/e+iXbIbyNxAo7cQTNqBxSnCB5JpkPQC5t30D5JE0MXWZ6yHMBmj69dBTS6fMN2Mw3/ZIJQHmsdmtcYF8zuGNWGheGIr05F6vb7TbEnbLi1zCXON6uAfMTi2scRWdyawrIZuNl9YJrPr8D9zh2Cy7okWnKrqrM3SZGXPtKGw8vk1S5Q1sZGYwVT1Z5UfmDIRHfNynmgvUDy4Hy2SthSBcptLqrm3aXyv+xEYobQNbVUMviAcgPTG8Gfk+Lsl2VehVog19iBul+j6XEok7eh5AnSwVlU8h6RlK01s81taoALr+Pmi9wsTHypfveuIBCsjnm9JpcP5cyAzoxbgNoM+0hjzkIV2xUP9eK4rmTbiS5j+0LW26r95gLun1vWXtuKJrfvoh94BAJEIM/lAh51Uz6lF6p9rZQvrZRhBRRKhjcy0kvEOsNw+YNfEEiXyybhDfiDyzTO2XErJTJHozeaBOMaQBs/kK3T1m1H0Yu1WYSR99I7GaQdKujhb9M1Wit/bLEPTvV/Xm5wLD8ZwRIn/kfetMWS93tJcK7aK2toLxjNoOT+b9/D1LgMM295Jb88SnhanFGjEDQnS6tDZNvLY+ZvO5zT3nIXEedeNqLe+ut/LxmSZp6/h/eL5pwgCojJgYMNy+ycfUmVRBS/H2g3MK3RZC9g8+t1uqAi1elvTbQuhhSDpdczGlaq6+ODItGNx1Hshb6Pjg357M1qwbr9Wi/Tn6Ps+VQuPKLpDIVkhL5THknG+yl6dCIwksvmu5SaBnhhiD+uCJKozYD1ENmQqwJiQhBe/K9SF+VE3CrT2Y0AozIwCpKVI7mG79qsBiHxDVcCaJQA1OGL0D2Xg7AdtMPdTIsfdcQj9qyJwa9vr/eiTOZwrlfBWVnAOaAI0Xs1WIzSlUBVkDlWn21KdcXJ7mcQuVW6EnCZcG9du0u+KoD9TavuT35CTph7Nv/JxoLH8C0ORm3gf4rkuBYxXAy/Odwm7CDxlI90q5aq7piAz3tPyhaCZF8xl9ck4wz67evZkwSqW8xbcNG1s/0PN8hmEYhi+3pxEvWHH4KMcl5vwWzqn35zikY/5MVgki/4mwwDWs/r9dns7E8UFbEg6M1B4yLrR8hGk0PcU0OygLDuV6tX3lr3JKea46+RvKhCUO7qPyCZFP6dDr7e3hMxrSz1Zg4QYS+rUmdRfcIXh/gXUzmw16w8aCaiEwcUCHqq0bd4Aw+PtsKyG8z79wgDkI28IF+7mEtsc962CoNGQ4O2ziuE/vOn1Q87Az05FWifeEGy7eg45Cw1p36NdLxhX+wQp3VavszYsBo6LmLzxOdXjNpDNJlWA6ZZ0nhY1/lROWU242mSYIDUobkBtfrscWmn1fvTCR4/uyzw6uPVNQneLMaeZRHG7ffRyqAh9+VFYKNTVRDaLdctZfEXXFiQ7hyvzUegAQD6UijoFpJdLtWnOhRp58eVCxb2OE6ka1d74efX+PFnKBvCQJSwLXwV6vXMngDL6PElm4oBcX0+//zGnBHVFAMYL7dDv2JJRZIuIDmEhHjISHVF94ZcrMrGJnxbhjj61aMRgtGTb1Ko5c7357dAB1zn2tYS8zX4vLSUCS6XClHWQkF0wtR4hZVVEFl9dNJzYTHmI2fBg5Ofl0B2YXKnRnpjdDe3/h8JmjE86Mx279i1iI4FKCWuTDesddgp+76KR9RbwkMkrTI6mGiPdcAoZ44BuLaAjveILuPQQY6Y/bE5VRzCLto9LTNbb7WDcofLpT8Cq+lOxH1oEJnG819aJsxfKvcCU6UpKhxEIHrAMXCOtPIlmQDbjoWJo3Sm98sKg9qP6qXK2BzUlD8Hsc6V7y6uxJ5/AqII6u2G4VwuH/GrM5qkvo1mbcEMrfURBUWjP2D4yJMUHRv6ZtemLLyhxjk9wTfpkppJ97+7woOparDgd+lFZaukRH768LhHl3GKCnrcwQxAKDJldO2PGG5GT+f+PdbOYnCIYy1VQccCRFFfeKV8Y25EhVh+3lX0zj5z6osbC65rTZsWrcR+tuv7jqNwG1d77VzxZcjhohFvINB0Gk3939x6DOy9EtR83uIa6pPGUup7s8yevXAX+Adc32UPJi6lq6sYgYTPWxl/zqn4CBeU18S/3aqt5KVQLgiTXEEh+165fyupT/qWfgLoHkGLqM+BLMfpr0HwOPOeE0BCy5DlNVVplghcqUTvKyhqSsSNGngyUYqNyLJvSNAXP7dZREq23i9oE/OMkayNLWkVyazcCEdNvxfPP2Wu73fTg8LaO8XQJOtcjOne1YKitu4remcgzhVRDAk4gFre4aCjKIJdvpWrPKkSQ6SLaFsypSdveAFeKQrkC48/nzP1fIwwH+pKHVIwzHjmQX5azIGGrCq8mRgGzeWZXwU9mrW7EbWUezeNxA0veSu2EYhmHHlPywjmrU7SLu01XjEdFs4+Yrk37r7Itwy6xK8uugN1ltToYHTIdvJilYmOxAeNhLRNo/A61rTEycBO7q8B0doOdGgvVqwV5fQHu5z2BJlEDmFyl5TlZhdQKtP2bBPQ1CiRVOgKwGGycdSSlmwqAyZ6H/ZXuad+dVF10Ue6O+RbyVvu3g9D80iOHkYxqwgKOMGPhi7GbTNqli3EfdFkvH02IINFztnqJAjTfRtuUH4jLRSFRMxIKZTKddQJMxDeSFGS8VrWe6aKDj+dKRHBrB4enhF0VmxwySx35P/+Rq07tQBUNFSc3qRaY29R1lMF8pRRC4YQEhwa4XT2voiPXyiAcWhcwc2Zd9mpDU7KARkQGWb/tbFgWAVuJ59lSfRSRQ8f2nKO9Wmv9rMfhEnNJdTGGBzMHuDz13T675paHMjyqXIzbW93FbX+MwpI6SHPIckLapemQnsj1QZExNlRwsTWDE88jvQ/P6jnkKaefzJgbj9J/cylR2mqWv4bFRtT+nQd34jqfuoYKT4RuDRPAgw6kx3gQW3yWIH5Qm0gQ8cJkwfUhnET8DZmZmUj8VSpYrHfpVQ+FxBI5nN7KKhad3oKh46C0X8xA/Hlvx7y9LXMMdLHwZEHYtNe0XeraUjsAi8i8iQOA4VoVme38GGRhaJ27DKQNjTLm1Q3x+i0xTMiRdPIyeemRl2J0PEHlaC1FUd6kzHBi+T9GsfuaD+YKWox7dQaQjXFEII2yI5pnsFUgv46WUJ0nMPEuIM/NbR0fZ9n5E/RtVEVotOgP/slO+sZWqbu4ADW9KJC0aj5qhiiMuz+AZpka9NUrZrH2r8S5xy1vtEc/quNZfBQhEKTrNRCZjOiHd5Kr388TrYMHUp6/XM95Tt2GXm5MoyFpeFOvscDKepJ4jpfGqbN3odYdkxBDY+0+vU4N9zmnCacA/uabWfwvcdr7Q0pJlnkJTQdWWe3s2txVSizORNWHh9MgTgRGJxCauH9XyL7Y15ZaGEKoiyQJWK0PpX8Rc18kvP077rpat3ksF1GpZQHLdygNxkyV8p9xedbRAeN13osjxA/ta1zk7/mZSFhmNJcfd6f9zs6sEM528ceQBvSPSK3Qm0CSXuVXfOHlR8RKgv8OQLTvVrhVFvKd4RZH4C81czDJ8enxzMJxXL22AsBZadlEPVxIAWNutjsrtzS8BSxBBeISmByH+Lk4p+CK1VwIjORy0I5NbnMUCChPxTbjjrDj8o8HRDf7aZx/wd8bYxibW2YpS0XN0c2OQfBSKfiuidMm5olwA3cRvXZhwCPefxnHUscqwIz5VPjMqfRdyjyc954PT/L55+rzXdRXnwAXWw3iJv3mhUZLw9BYktsQYhmGY8ime8cKsxPtSLpQIFkEFKWY3WgHXhAjgefLC5SHzjldxVO8GzIxXea09JGnUc3j2ehepu6ow3amc+0VcOS+cVNoexdb/KxaVVsdZtN0zWIZPtPJ32vTgILH9tij8XG2jVLqWx4Y7IN60tJgPkRELHzGk3JwJ/of73mlM2j8vxWiNzGUrOGJZXFPnIlYoBvBd7/EDl1bMtkZGbg93M48WYNC+Sfrzi5qjXf9xh9eT3DJFFH5h1EzMn7hdOxwmxOeOoMQY6+jjIOFASBIiJfehM8z+l7Pta43SS0dG/mu4S8VrNmmUt/nTYxd0wnPuHP3kSGoNoRBbObuQtIPo8nzZgZHzwskSqOMokg4cbZbeNhmkcw/qmQSHteowmDcxlpo6/uFxU03UTSFbfm2SGlnM62lP20PcVPpifDILJjr3oHaKXBK7NgoexFY7RsAPdo1P6ZHGClMU2pBhnnLjNOfTt9VQIuT0e+83UJ+UWtJLuaRCpIPV3jQpCrwDXwrNYxITaw/df7MoRvaD6+c77wRGx0eTsawGqHBPiM4hADJXIlqg/JypPaoU91yby2QFloN/4zFKPFs0XwRLPv7VgAlfmys4J9sA7mWcz3madiyX0wuaHIv+K8oDrsBbXKUr9B4srZzVSeedidNlmOigKDdo8SMgPpHQO3zIR1+PvUKw5uOym7QQhsw7XvZeaN03OCjwuVTR/fFztQ1/lM14DDF0YXUHC3PMPFqAalqzzXKs/7l8rgZKruEuFYXkeZcfHjeF9ul6qMVYampX9tABGlHjOGHHlDrSnE/ffDokHCQDCc1U6LsbwVyJaKpL7/jxq6TvfidvwK3QezCbQyFD+Mx6QpPdAcUwxNAFnwa/4JTIFJSmWyxnmwwkNOg+c7gT3ruz/Vlyn094705ZVl4bFOHvh2hnFA7efCFvd5qAqjjbA/uodDEyNQK9RVQXrM8NXq7C6zll5lM4cR9D1kvuN1/Ie9do7mv2U9y8WDc31tBjkKhgyKBe3ZyqDr6rvUXy1NAeUrI/dQ63BX+4PDW0mRmkrToss6c/FqlE1mFjAY9Ab9G7S16CihT2vfkQ6e88aCFyvIwAPv4Lkix0hKba9rQ92JYDbFAXNLcxmd74fJEA8UCRy0vznGRRzO1QF60UTtwn8KG3Qkoki1pcxjmLHokqEGy7fRrbDAR9cfptN2M0bO5jvtQvv/H4kB/4g9Lm9EtbSGIiGhpXF4KAfK7z/RQ375yj6HwZ9Dknk25ISpuofbSrCydFl9Tt+udgEJjou1aKb9+5brT+4WeGU7Om62QQtkBjdjUDdCxWhR7nmzSnqiOFJNiwOGpypltvDfcgjsTQ5/msJVxE9D1O5gJMhmEYhh1yIxA+c9I47YP9B3GP13HpEnTFcNzmdqDZ8agVJFkUqNBIr95vQtl72pz1XQ9tXo+uekCq5kOsFm+KH9o5YRR9xDOcynYfCJFvJ1Wu/SxDk4wnkf2SsyzEBvOipr2SKD2Yze0evd7zzc/16UrROETBXHoKWBBAlIIzfiXClvO6XqVCjKg+t+OALS5bqurb9ep/yKp5dDEG5Ii+NITLfVsFdwX3HLkNTU4fMBpwI7ouhVsz8jlkzns8mW9PFEoQikpLltTPQnRfWjpHQz82Cqw6o9CQzv3cMmXkhXfimfxJfvHMq4tWdB6o46KwAjRxENkXT8fZ1z3pyMQ222Zx/4nXZMaFZ6DOlj4D2cgCMVnY3iFIR0t6QrFAy5w5S+NF3pNIWni0catsAUOif/wNhhlF+BeV/F67Dq3bgNqIC4aDhWAPMelMm87csSFi9KySwKiNzZUPrN49ut71AVU7GH73qkpKR/RgdBztVqUivlUT/g16yXOwwlxoBZLytIb3Ff2n6Erj7xlG/2SwlJHcfTOSbgU7g6gNxdsoMOJO1ZLukwcdcqW85kMkLlePL2iGjWZ9sdrJekhWbArRjKPAqk4QVehQ2RnyknE8rQ/1gPy/YOjMAx1HdGab+qJeHMh/8CbpZwdDSBWp37gaO7E0896ywanII3+DSuvm1B/IBm91Ze1Wrplg4Bic/biUGKBLH8qhnMFPxAfN0lCs3jYzYbA3xzO4J3qfp2xRJ+Fi8yzlvkMndguYs4goCfOEIpA0aWqzCz75EuiSaPpTxA1O/8UMc8Zr9T3OmccY2UTwiWG8RTHeALuuZOW8M7RdtPZF8fBvWqzvZ6sC+pwiOMPk25pQWUGWmZerDAs28tu1DJ1PCGWV3W5LCQFbt1uu9MQQLAZFlmADQnR7vzZHpdE+CgjyrdAGQ/Hc9JvqhcuHNyMwsCRqoMz/n99twobJRhv3W52+6Ea++RmADXOw+nsKVWdg9o1fuVsloyneEjWVwpKgILodOl6l5k/7OFfRD9xj/9RbvAHxX48NzKyEPgMiYdiQ3jP0OWOfT/FIJxl4BYYlqW8P9hdCm3IWviHEFAISZ8aDzTHDqt4ZX9L1JhGw1wUSBXSr4yHmOVvC8fzHkGFyUKDe6Cy7ZJ2tKrQTrxJtEeaJekxJ+EPC5HgKmEPMrjWgcT89mbyXwckapGSr+rYPF4m5PXqVIcLhgGBuq1UQgjNUlhgUVXQ3wadHDc/mqvLsW+jGVRXydEc0rau/j/wbgubMpeBpdNJT/KJ6Uf/b20FmyH6mbjFAG5e+euYdVR/X740x50olC77pEt2LNLrgN8Yz2sJ9zq9Rj2+Ri5muIxO8GeQ0m3r+4fPpomEYhmHYZ1pQBvODvFGlexxkLusL9rg54vHMWldE/81EvjXdiwFdC6PMEYsjXoxvzBkyIHIURDV9bsVOrjkL94cKdTMfufJV9wW68sWqhIVW6aP0nd3PJD2SjQY5KZpg2lVg6mh8Gu9BIRemtWV/XxVCW1wC0cYe5c2wfl7i6nJNS4AljJ9s3SzIL9Usq7mxy6cFsn+AdnF022CIoIe4QAqQuC0TE3/p/I+z508gSRtYI6zAludCODc+CLk34xVY1HN3PGXGLQFmFaBesEvOiBr6ZIANZWPm6uOnyVNa1TZCbe4gjbsItKVWUGIljce0woNf2XaOA815/Y6VqaPQZYOfaUGZIuxnGjWqKMM/lLfSEjdGWU5d/zshERS/soxyNyZUVG5Bj0zt2oEUcf7tpBPxRvaGSlCqAV2ExVjJ99jpXH+uQ4IBVylvy96r/N4cIrrgdnq3EnjzjBc9Zpp/iw+7HaWUBIFCGxH2DUkbohDdNMtjWHKHuzInpbGIFGDXPujj72NVMRNiDzZqf9jcMh5tdLIpv33UD3qzE1fNyURG9/CySSgkSqNFRyARV1GGJ5BNY3AZHm5/Z5gnbbD0noUDKmqd0De4FC7hm8ejk07UAOyZXlSIbT+dmvW7IMcBONw7q2pzRbTrKMrPduyGlhRLAhegmJtJBsZvN1zr3aNPzA/yxuLRIq+7owAvDLVGpEqoA/5n8Bx3PG9n43IJ3olvdVgw8nIaHvi6eczPxHZbggM73JrPzrT37c80YhqLu4b8y+YpqNRlcC2P+aZDdpsJqWUOgG4JCZyqV9CxWMNh6uFXz9a5BgWflocmKkhjoXZUJ/Xh77t6GkNC4E5tkELTSoQbRF/QkN6pziFz+zJwdJbh2wT+GbtL2pM9lC91vCx33uyjLcpv2AKT8wzOY5GdZHMEKOMtg7anQto9lV3LNyQBwfCKkaslpFuB920Zr1Dj8Pj50f/Jp7S45WBcQo11PwOWbwHFmerVispV7pXfX3Dk0kCkPLDtxzSyv9FwPZXuceCcvH7RoTs5fbVXjZ2itSeKEXGDDQ864tYCTOHFmfxlQMWBvQAKi7WiuV7xJe3g/PPS8gn86ZdIb91/KEbMzg+eXjhrFsNMLCTsHzvXbuFKUjk5mr5UVpi4zkj6M7GyVOm4iCHAhiUefJEL5JSEgXqDNpSmBCtiid8kOFbMrdKdRWuaa622tPGtjXAvICP3Sv5uzVX1PQIOYfvOt4tmKhGStbd3nXDhMM7G86fZxW7WVxMIB7T62ka2ZSfiOY+FguYgtp3nc+Dme6+4P5m+vzyM4wFeixRVHtGeDgnDiy66TF9CTwSwAEykK5UKI/+rbvdo2eL4G14rZCcS04IYhmGYS3/nNFvUTzm8MwOvHtHi8K8rilfGDAaLuSywq4ggzaJpTgC0nESb1CzY9hE1eAcwatoTtOLr8jeT5GWjgB3jGehGw94JQaUCZ/uxoqTJx2jnl6jOMlYUh0Kt/MvCPaYf3RUS0QeGE7xkyeQq6QAXlVD/HtKet+MOTl7lL2O+/ceS/mhzrj/nM9dkxmTugG/XEXhrXglTylJoPK3kNMlkqIQITPftHqKz8jcWG9gHQUm9SK57x0ITvm7dG+kfDexaT63qV1w6g9u7eSztGhpv+qhhTrVDRyvpvP4ZiY9qSCBMhSz2GU+S1yu2muAIMChSZhCamuWhHtcWz+rR6XUT27MWG25eOeWQLpNR6HWRH9mOb2vse6ZkzMn5RHGrReY9vH3iE/TWSxwNsaQoqNDnNhqBxmLJ76OsBy2VjDpMnlD/I+rlxPFlrZywRXiFHO9h0LTBwcKnQMYjpC9yfh9mP09Eh+uGwwIlmfmUBZPzg13wlC5BjVaxITUvGXRI9S74Bt+cdBVuG2vWAe7PU3CbkPkx9hcqP+vr9Zbt6yY8FHglfe/UUD3iFHjmglFfSujIL3hu9Lzxhmd7tyrD7Aea2bT4F5xZc2riKlns4nJLkzoLLOQuf/RBx86XiYuuDmt/sa9vsfE4x+4ou6tKpRpqVR3DSpB0zKxuA/6e74LTsz9DvBQrF2aBwwYPqQw76xMPZCklrmg+oiqffiE4zUIqWGVdIJc4XExra2xea6tsLjFqAyEnPslZTg+IdUJox5IGtv6kxy1VzQNuOsA1o1MRCtsqIc0SjcQxRa1TOe6hL7gZT8Mu6IbYR1rZdIvRccQK/1vwKkTqca1HBZQ/PzpSto7jeuLn5JSsmCYQglLUflSJsxrQjGElpOQoJf8U9Jc3QzKj/tMjIJKybMUElkSmO6fYp+zOU8IQ0WnU4IU/f93Gv5vBE70kwQFlLPY8wZxNbfuAjW9SIciYNU56xEinMmIJxmW/nyCBb7bVCa4GytNvSU1lMIPwLQjc+HgRv8Kk/5bUhH4FdYEHQJAXwKPxIJB8uXd9dZczAt+jm7Tx9xp0N5MMqWasZBONzCmoCZaAlisQBM+8yQ8u/cYddfTwKSUX9P6MOBY80xKikhgQ/cDcbph25gcnN7/4xuN7TBWRCP4RAZrXqEbf0CeSXFEkpXSAJPCljiK2uq/Wn05Bx2+v50vLWs7Ug/I18kxTuUxvLJNe7jYC+XL1TZ5YgTpXmDhRftfwZxMLJiYlK/1WcGEGMZ1Hc2MQDsOKICKktM1m+1zfp3tvtPsCiBxVzvFYSpcwfI16PhhJiRQuebA9e+jJfBxOoryRBxbnIcuNQxvqkvmtasrwJPUr1slfhmEItT+m1EsndTKmhEs6xWzG74tTNVAmh0s3dTomm8sItXDG0RMoRU+Y9eEONWvawZN8JVXagRNqZXXao4so1QsdEJUXODGHN7hlbhzhnjzzBRuF8h8uSHDARJIxxTesMg/4TK2c4UfmcIGfsjEBIaBZDEHZqlSEjojMCQPRpCRMuMoyp4RG5ZIysUN2lC07k46yZ5llgzVWKo/YghZ5xkVakwHXcJvlA5dZK33iRjbQN27KvdGID3SZfvDKg9IJdccOmlEP7Ixm1BOeMjgWHRPmgzoyw2fqhpn5E/XIb/wP9ZRzfCA1/KrZU7Zc4E/YRI4m/4tNwb/st+SRwfiNvMtD8gfqCYX532wCE3WfFAPfBo1nxrdywSLwafyHHxAy3AQ+gioxOOMDlxhD9NBW+BNNB4bklTPncODYuIaE45JL13ColywhXoK/Z+9MCNyjOKOgXXKX4ntghWiMBeNy28cjtK/ch7YDteTgOIN+ybNjDmdsKZhTcwsK/GBzw3nDgXrPr+xPWk84TF8Oqb7jt++7uDjgmpdbjjnewuuFSYhfoLpcnCLDy/7GN3LeBpAMqwH+bVsBvvMWqIc5cLeicG0NWA4lAAG22kAqSpAzpyKThx583ioavaClaFtJbr1Y55kcmRyZPGftL3zTw4LzN12wjd8WBkvfFiujk19f07XPp19fG2/F6X0ENGzjZTikthRtym2zK7e/OkC549Ct+OPQXb6abX/7bTHcucPXxXXciD9t+w9Hfm01k4dTn/7vd5VxejaCSqRI3Jkg6IXpbbg1Ey/Dsxw7pMUMGCsI4wVhzFRa1CiUgcLYuVx8DL+MfsW0BIJvgCDAIwreAHMm4HSlAIBMATZQLyfYYE90fOshEg1G0q/kD+Fyo411dD6U480tk8JkiTm3mqV4cVSNJ+bJpSmf+7W1iYV+wzBebpF8+k1yd5ZWceafejza2CaVK5fbe7aOa2/K8SrL5MTfZZpbW0jx35dqPG+ePHrgc0f2NiGbdEMYL1gkzx5Jbqu1ioOzevyVtejNu6neR2vVu+1d9WdRWyYz/7nSiLJGNd76VM1ZWPNk547P/fNiEyuvGybjFRbJtz8k92BlFRe+1eN/LkaGJHHqrqBnMMkoE07lCu2Ztq3iT2mZ+7NVjzdbxljqN47JUpTGy7ncl5Mq+fLbOu4589y9pXK8ez7O/bNMzu1sxqOly9UOG7qkdpXiXWaRe/esGu8XiRtv5smNJ6vxKj536qJOTv21iQ2zschtLDYU4/1w8ePLIvmxsR7Pk9yTD2Xy5MEqjs0tc8f26vEPk+c31C+yuqfwWlOVUC2fjHhDjqM1STq1OkRzdVoMbKWaermScuBXrZQur2vMpKMcD31LEj01h4Rq+MS4DTkGdyRprdURbNdp0iuVMfGwWJIsVdG5+QK99yfwvfqd40uUcY95PNthNeEc+1zV+PBJmX/0zn9V3zA3yrg91mzFr7C71oPG05vnssHyI2eP4lz+OEEf/BmMrzq39c7//zZkgljvODeFYN5oXKMF2l59g+8Pb++9h7fassX4e9M5rOy9rJzMrO8Fg9zUBjBIJ/+5VOE8UzxmMzN6At8TFRZqSdzabf/t1+ZuJl1Of5ev4YpU8dwo7nWr8mp1jEOg0qvtU64nEXX+ViCqfQoeEKZCHcu/qFMwgjCb3ZE2PSggx2Sh9d8Pe+sNf765SQoWnCnGlDdKZoFf7IyBkliMc1LIyTs18W5KZUmcTf6ZHvhptfLugB4AGgX167HG0QjkmUSjkzQ+2YG/m4V8YMRkz442vKhf3A8JS5/vhf00Tvb//BjUoKk8M62mKpxDocXCDE1rxVEPHCkVtbOjKEsGuiT2dD3UIh9l+y7K/6eBlMwYnyk948wZGRkbF8SYKK80GholqB10YsxwJjIj/E5wwIGdEvgnjffUvRU3LGw7yvIDhiIrp6gTtXfXyAuEB3cUVpcRFegZ2wABXEE2iEdUlwr5EUIy3FRJ9Xoi6gx9im3CUQ4BY0A+QNyDHpFXiNDhbsIqEKVCb5Qm/znZye+IMUE+QXRZa90K+RnCKdwGZIGIDUbAdkYTyxgdcoW4zYx4vUJ+h/AG91aJa2mIyqCP2P5DMOGakC8QT1lz8chTR0i06MurpDpORB3Rf7EdcBQbMV6Q2RF3iu6QPRMhce+FVQxRDtDvsL3hVCYHGGfIdx3xoGrvdsgvmXAD3CbIyIj4E8YC2wVNrMG4Ri5ZBNTZ/SNfM+FbuCclrN4QVQt9j+0LgjNcK+QxIx5Nc5kjP2WETHHrROvWEPUU/QjbKc9yGDH+Ix8z4t7Q18gfmQj/xL2wZwVRBvSt0mQ3WzkUGAfkQRFdVF0WyLMiXMDtBakhYsUQbNNOF2sxbpF7RdxGdXZHyG9K+B7ul0pYQ0NUPfQPbGMmeIPrHPmsiKeougTkB0VIo+rOMdULQ9QN+j9sv9kgNsF4Q26KuBvQS+RQIpxw/xRWB1FO0B+w7bN9+XeAcYF8r4iHQevdCfKrEm6C2xlyp4j4C8YK25HrYgnjClknB5cSdXb3yIsRPsG9UsLqDFEl6K/YPjLBAa4e2Qzx2KouNfKjIWSE27WitRqiHqGfY/vX2cohYXwhHwxx36IvkVcjwu9wP1FYRRFlB/1GlXiRv4RxinwyRDdVW7dBfjaE6+D2H1kMES8wamznnS7WYzwhV0PcTi28viK/G+EL3B8lrpUhqgL9B9tPJvgvrhvkiyGeps5cQJ4QgoXxJ3GtDVGDbthMNbEBIyMTcRfQQXaIAPdnYZWMKDP0FluvXuRvxJgi3yEegtq6LfILhMtwOyADInYYEVvRaGKK0SAXfHDrA3V278hXCK9wnyth9YqoFHqP7VMJGlwD8gjx2GsuEfkJQgxut4rWzUTUBr3AdtJ4lkOHMSIfIe579IT8AREm3GcKKxNRRvRLpcmfZie/CeMXeciIrlFbt0SeM8JF3N6QOiImhsM2azSxDuMOuc+I28bCq0d+y4Qf4L5T4homohqgf2L7VoKfcF0gnzPiqVFdSuSHjJCWRkdJdTJE3UI/wfanjmIFxh65ZcTdBL1CjkyEM9y/hdUpopyiP2J7V6dycoBxhHyfEQ8TtXfnyK+ZcFPcLpC7jIj/xFhjOzZm+QFji6yNDy4+H/gvocJ4oWemJnQS1c+VvtnNPqjUnHqbP82z+0g99I/OSDV9UafKmz3QGanJ3Jv0zfzSis5ovunv1Uv9nfVq6vLMYd6N3Z91bk7HjJ0yv7e82c0vY7rZ6HpnLtVsCqaYJ0XHN/thijbMfwX/f5uOhYXGJ9FQwmwGylg6chRt7LUpIs2iyqv0kuq0o+RSi6dyGaycSixxccoX6SGXfB2qBZpotNh1OKayUr5KD+fQmpXSl1q7k+tg1aa0wiI4i4Zdyen/xEovPItO7HMTL21pGoqiNh4o4RgasAAIBR4B4Ij/PoRjODKHCVXouMQmecTv5DmAtXbSCaxJBDZmGc9k06Pc0S3hw3NrNs8i4U8GN7AAaf9377bPBkYqAvNFA40EqW/7ZHFbk8SGHbYiuSO3adyeCD/Z0h1GPn4d+980HsZd0rRdoLuVkDFGSD0NdUZdBAA7KfAexKyEr+xaZDy2fVeNsOfWKRwBXlDvso9/LvXd//nRAWu30L+9qa/6X/+v1TEq5ZBAgsvFjvTju18bp2J//6vKtjnALl9duZLbNf6TyTC8bPIgh7lu+ltVhacmGk6/osLjs+uv/eFpm5WBgeu3KL6zZXPYHvD47OdVV3bn75unees07v+cU6i6yY7Ltu8Dx4P/DHH4dteFjevHj/J1/wIJmEyag2spGZwXj9xB8/IOqC1ap2A+xj4K/HBdsLMwjnQiI+dK5mWUG9W8+ieDuUJaeKEW/1rfXRpB7HF27YL04WvLEHCmS+7BitdpjaoFJXcVWszhAoF3kgNpd6P5BEXJmMOpsNvZ5hs+jas7rdYBEtVUXLOPgrVcYqbm25g8JB9PJ+KtOGsg8856TZUCrAovwHLWJnOo/3HEBoGfRZH4gg2UnU/WqRxtJ9lHxvgt/JpUlKk8qYtfzR65zH11rpENDsKfk8snAjbVoYr03D6JH3/Kg4kiJ7tnJqetUH4szr6YVny7DPmmaaMI2rU49itt2fbMbGTJHV6lEVsrFUFLnC6QlWQ0KnpnGitJ+4Ff5xkdmzyI7VWZ8RQ9iYNASBnsx8brQPajd2xqbsjDAuLPg+LHgt3NYdCEM811tOLLaJRLsnfG2Q2cD4mKX1LLVatHSFP4t/eDATc6a7i6hb8EJnovglLLj0f2ToZex8tEdl3XkdmlZYVkLh9RAgatiEjRZi1PPKKHnMd8J44GeWhpuHRtnGxs5ydIqJ5Z4lNz+f+FH3At6MabI0TXw8T2ZBWjIpknRHrNMuho2zSfT1q9Eu9Dtyb8JrAL25r2USbUpWSrSrfOVgf+CNM/vmAX8B6DLxWp6atha+XbA1gw+dHZxISg5WHWZX8FWAaP/PbXqCDXJEg4L3O5x+l+v6h2Wu5mdvb+uqLrW+UkamFFGkLlWxKBG2rRnGd/OnIR2wZfibOjrvjfyJNP79JoRgAS4UG5etGDyM88sKnK1LByMNnyJv30ywVMZSegQDVDB1Z5K9Zkzqcxm3dsTnb2ofQKScnachZyTGzSV61TPlAI3TDJ5C+ZwYofiNyEr0UNzlhujiJJPbBM8GKKQ89+1UyTmYar8SI+i/OEVUO+08t3pCmuqpNlT6xw7jjD8Oe6IknzanRa596aMK1STSpeI4qRlXNPiMUcXtmKlUbPbsXoIgBh+fqsoJEhVzuEVxpB8K77KrB1AkNcppFzFa5Fonmnui/c20pet2ZTyG9MK0fCcnkf4Ic3B5iN8jVh6SYDeYDjZY2YaMrZmBG6jWGKja5JmNo1wCJETa3JkfKJymaChCzfpthR7bT5We/BRS+2brMqnOzXubvSfZ34bRtcvC/hTM60JGyhqdQ17X4E9RRfbMZuKS3sd4ZmK6cy6vfxXTUS6GsZoARoCpUI0RSpfPKsDc1QDPUaCoMqgH9AMO4mSLmP8cVot3IWOOfF1/ddAG8YDK3izRm1a6IbzupWhS2ZtAbaDvJucrD12CVtNPJuzD3PmvK2sP3y6i/eA7DMs74t07LjdVG8wLranmdmmckj30sovjWzNk84T7Ld7GUXETDY/s+BcHpGeR8TYUXHXsQytLEOxi9LwF3CHjA1qRsBqpUr4viZ8EISgtGm/DRp0PjZV+Q7LGYYDgy6/KzMXBm5p3iGveNz1clwpPMtnMFyu+T/XUCW4UHxTzH+j96l2xaA768AmNBs3gtPTZpWr103MgDjKFiJ3mNd8wX+fdy84DkorqGmkgF9OttUC9nFU6Z9hRM+twH0TxoQlitII6K+sCUC13rKSWwaicC2m5dbj72IfSmTCzG+7N6HhrhR18o7hKRlm/16EduBgXb55V9/3+haYpzwqMxTU7Kd1zzQAfk1UAQ8fFPPBK+E1JrIC0AUcmJbUMjfEk3fDFZhSvctYMdMXs2BQnoGlvD4/nXp9Zcbt56v7D6eTNNnUuUuU3X0nDGyDFQ99/SlLr0vAzfLY5z7jV3zh9YU3LKwYS8yA0oBAQ1p3D9DstoONVp7vbXY0JUW9Qjn0dCZTnrBTj/tHWvgyi0Mk2JrOIg+/5M0veQVTaprdbdluun1GnqGBggPgcxo+9LISCKNTjXY05deET8m3jjCvlM32jF/1CdShnVGLXrPlk4JUw/GucxyAobtJhioIKTJyfvMAld0mKusXCGjzbMKyBzSzXIa1gxO5Xr63YuTuRcWj2Uny+pMZcRVW+yZUIVuHRQr9d9JJytk9QviRgo3XxnX7u0rZTWBTy8pvoPYKqto4gJAUmGcRlW3RYboDSeJTTD/O+2hZyjQwjoh/U2M0SZyaEqVb7t06HpqSvSB3qT/JOLsLb/Dp2DPPJjgYw2+uUYQ1e0SIbPoTPWnfuCEdxwjxSPVyy+FPUSBpaoj579belYIwEFWIo1im0EsdVHuv9lvBbZReEubZg4KSP92P2R7Ucw31i4d7b4ddkk1CKPnjLRlB2k8plnxMr9jkXNwQ5tpWryABJEO5qbtVbgLT3vtJ9fUaHzm+Ikjw6oXGqDzLEG0SQ39Cn+2v2nfU9nLXHziA83TEmzeCPgtxh0KGW1KA4PfjODv/NPjH5Gx5GZLUyR9n1ujBinuLD8z4SRjjuStCDsKeLuq2HPQ8vDx9lJipOg86HtCszQVHRIIaVeyeY49d+js8mIKh1sFFpz5HnM2UM2EHO3rq8fLzzIL1jz7ZvU97BgQPz7nCHY+iZWKenRpKPxsz0P2o3UU2I85w9et9JjNCLAxjiyEpQ/KSFWnwTArRyuSgcNEe3vSzSlVguRpqHEvFxe7aGJGieXQot8cA3WOyqGJ1O8NpxP/M/XDDuJw4PpwlK1+/bY8T3zvB/o8V83wW2t5+zYZmmiZUhenb+AJaD/zzV5Vh3Y6zk9E7YNfr9K/IUOwjq/E/tsKdHeDMb//fCw8izEwj3Dw5sT9OKoj7CwcMVHmEXZeWCJKPeboRQPXjODUeOcBeLQXC+8eDnu1ane0aERAcHyp8169ZHdPwv2HEh4EVTHrNpPP3yQ9W7nCFsvgVKYo+HV5Ygqxt5+1DCmu+tL0S1xHOgwVD0gAHBRltfbyGxvHb/ck13pq6k+cSuJpUB9GsdhFcmtN29GmlDvoz6pOz/Dwt9hjCOzJEdro/rTV+tY+iLhCpMmRDe+Yy7f7a1MbFW/Zi6H4YU//hSt+NmIrV6u/jtf7M2yiOBk5mn78/6Xfy162le5R7nmdJnrVHU4rYt8P2/DMqmJGfWJRygauw4OsRSmh+pkCIumgFwA0OedxPlr0RtUCYRu9JybYSBHsLjAmdxTV1vP0oikLgzFYvHA4NxM7lEyfNQdUBBNFRQjRhC9Sxz2Fb6KxrNjOy1GTnNqbwz7GYHc7P3j8JdqIzY/EL7JFapmpTMln7zeNM/dyvykhocYs943FAOYin2MOn/Jtlu54kzZa82THt9qBbmHPyH0W8kgpIH8vi02+lLY1+6+2yg0x3t5/MhNsqSMDZEWtvGE6BIMRkl2rmdCXWZwhZw74xN5QakiNmSK5oBKkz4wGz4wL9cZzNZXmZT6XTjF8bZQpvjpderTQ2ER9ZECLYoZonUVt7JGroxlBOSUYqPK+GVxS+95zBWnm5UDXejTL9SU9DZeLINPmHNFJWk0kDBRZy6QHJ6V+SMdm5PPmEZs4fe+hKlp0EIQeCSU7Q7JIsLfMXjFvmxLrIZ4HjpFCKj4ZUL+VAwbqxqbo7D7NZzPvIq1KKYMBd+xpGiAMGsfkpCAYv6VmCjoh19oVbuxqBRU/8AyDO0ld2U7pcOTLEgOhQd6qXkzRTVsNUI6ykxd8n1uWPItXhf3dyHn6WE92CcK6tufRVZIEiYCVPpJD36fKojbRdhWvlr4NzlMMsqUP4XFaY/cGuCOZ9DVzFkNhDeIA1LrYhBdweFwmkxW9MIUUqwp0STSTriEDqWUaME4rODX1ZoBrvos2iQw2sT0ZyvqTtWS3ciRlE7b+NBU2NjfvQaOuBkvZprtti2vePMhEI+YGduQQIq59KHpnUDLv6QeGv83z0b6FNmK6qZA79zSq4SBJIxsJADqRpuDFgscmI1sQ7TTHR5c/GxhIOe7X9wZN1rBg5KH9yRwPy9RWD778S6Ih7sCopX2smYhMYEu7Ynu7pJQR1KIKQnFuAMrSSuhbuLB/B1LLkWTQ8iPOQQQetrhgzYuxyGgN9EcaDP2sXc/+UVo5OsZciyDaEvHWvxMIu+/0CC/VYg74Q+thpZvSTMMx6m5rap7ZUyR/gYF0AvVS7iS50ueKFWSamqRt6jeSlpyk9GhpYVwQTlYuvSSyN5P3nJnJqf0vRBOJKEKjPqXfccDFxtfEzvesCY1Gli2ncSTuqENEMsyWoB9JtO2CGc79npTes825ji3RwYLhXdNHHafXUN5DT9EMYxDk3crhJYvztZZ4TKh2YJLO0ko4e2FqvdeXaaYpzExpPoqxVThj7/T8GLqlEGHdbZLK7mFHAkrqVqJlgswpP6gQOydvS2gGUNdtmykWoyCx/mdPoNYuVDfHyIRapoAQ2XHcYJQjih18icdQ9sZ1632qjNgf4WF9StNJ4vnVfPQU1S0IW2ZLe8LrGw/QKrU9XKQmpfB9thBHKyE0HaYVNdGt6rr49NM2f+soguYQktGUcAfsG0dloxzNHMk0FeWBTrgNoIiBRoyxNlFi0Mhz12OjKPLHNCJd6+owKKKvDVsHFwqP0Nkraq1o4yIDyEkmaeBrZyfh4B4hQROEt0ur2NLrFeLVefE2h7VM4Ip/ERA9087vZjLRNfFqFGsjxnbAQ6hjx0umJvuRwjx/sZdz9OB78HOm4Dm/RIcCgVHOJvMag+IauIEx0uUnXCP3aFN0ZnkBNEjhU3KAxdmnCZRCvJX6UMI7gK3eborqwb/0YClKNv0tQKqT5wcsbDTUZSSs7brNKUE5b5JjUCr4L5Os2E6cv6KVUSSbK5nTuZkurhe1/IvsrtMN5+bRVqoFi7Z6lOyiaBt9djy8GO8tpD78D1PfpZgRmBaz7yhb6+eF1jd9d3NiD6P9WIWqtqCpJ4UMppa3gV1x4PYdH20V6ZOkfemBEFt6Y03E9nusLhlOw/04Fez2OMbwICUeufcGwXo0WwKtJfnuqIbqpXCkZJbofl9Vm7FQ57Rm8X6eEqzcxTAVMiLVcySghn1eSGuEWzY+Dub6k1c3X3o6hlkx6p/0SN0/H4/CpXM6G4gxsFiTw0g3glFYzQrXZ2OKTUOougm6XhQ0XzuThMdOgCXzkkpUVx5NVTXlWO6c1IbH4aSmDmIxYbUv4HmFR3XTWeTDqqMz9RT7B2b6nfLWDnFYyaTkqEGH6KT+YM1l5XccV8AiAsdUu624cCTSWxnjcLIgiaNuToQGmPS+dVAkS954CKGuBX//UT+e80kxIK4JcbZv1VPyA+5sjhDwYxWJsLiXQ1xveIfJNVbpCxRorCIXxwS7J5GdrPIFbvdIT8Z62eBbYSzJhVO3b56aXhYuUE/xCtE3HwjVvUBIPPJ/bZa1jCCLyqspSBDUfeY8+VHzDPe1hIRtuV+8b53npDXwNJMCyTGWx/ew5h3LNciz/jqk5ao01Q6ib7yVtvhCJ758nSypvYglNEWZfVGrk8sQsJzUbivKG0ZQwfTC9WUUWnBr3UjkaoZbc7vanh/eph1IzWF5DQc8sPHwAE2ylPTb7XHZ+UaCQmNWFevm9DvlCax+d4R8hEKkGGqxQxxohmmm4/nhUhqsdRkUcCyC/JT2gGAsNOLLU0WWRDPHWVE/Zf19ntLvjoKCKKH95OzWn9dUvIRyujzHzPIgSsruZW71c8cOSNbIQ7KxSipepNSQW9IaWaa/u297kSxHhEEl7BieqXn+hN1yfNK4gUwrwORcGQElBuV95ATDFAvgg5QszJ/Q8i5Qcoubl5UslnmzqardCCOAjqAVtRBllPJHhqqsZB6p7yNc532DFB1fu69hDizXWm5U82HjY8RG1xog5ULZbcWBQPboQdSQyTaGl74wscLoC5NQsQ/AGcEZhtqcCY7vAgtmJV5a1acSPQyMInIw6EW3JHf2yyHKrD9lmntZxqA5lcmiLEv6QOtZt0UItULcbuSV3/gvgZ14+5wQsiBSCjceu9zcK+as86sQhBXac+/hE93WbNtJjGpaYVTYvCzcKCPrhKaylourScYNviqjgDih/Bpt44U9Xl/JNyOFPiy5lpV9HId+DreIikYApmXvCtpmdlDJcUfiptZKhxiJpFQaSVIt7+yN7JBpO8q5NhjmxyeKnis8kLWO5qBYdtWMnbgvhx0RAOWhbmjV2sRHme0tUPlPhsxvH4x2S1hxYEyR8HH2Jag9U16abmnar4n4NhFncq3Kqo9TiPLndJAtR/MJvccZP0MTjA/oaK/t4HqEDWLKIaV/hPtiF81Yz1chqCJB8ZRSyDtJs/Htkn3KrklbS5EGuGLcsCABsofY2Xq+26uF3GGnonOQ1jCZmq2dY3N/MM/X3cMtMLzUdp7M+0aoQm1+v0TosgSfBjDeefesCzQeEdS6MY7xQB90PDAJC6IiEFKXQuGn9DEwvl0lD1LHHNSCxkawf0U23xpwhh9xJ3npQ6YRW7dTa2MCvtu7Q2iSPNVlUoTnJTTRAUsncjNo5t7QGA8ahq9qcpaZ1QjescQYjoiuLCgn7HtA1rFWMNhI02n4jVAyw66gnpsb9dM2nX9adqYn4Z6rd0sSpi+003J5h10W96ik8QD36FU/GOeUyYkaHTVJ8eV84Js9k556TzlTFwN4xGgnASqbomH6GrGFXD6mmyEIWJ88cp+lPqZKT5q2n9Gr/k2Lr/lC22oNnsLM5cSrd5+tDyg2vmoZgy4T+Ho5fUkCY+MbapZPFGQQBieDJcDoAdVDQdbACAr9qkK5QF0xDcmlSOPOcvoIe9dDBk5LzA25ZP5RifdezPBrJAk89ZUu5okpin7LJqMfckYdOa4lmtkaajp1QoACmwgDS6mDBJ3S9cgvMoEt7S4cA/b7DDswNVzUWb+ZKAT3FLvv6LKlPUZ645XaVY9NDbenD1o0AU9G+xcwBktyeUzxQqKE/JkYm6bCb33iQylfC/anKXb5G+Y4mExM3FZUVj3nj1aPRgj7vNW93/Q4HorXMsY784K+kZTM5NHEZgthmL8S5cxkkZjxNMKwo827jLKnZZq5jHqG34A5VnUiJbdKfY3xMK7ZjSxlYmi/abB8usGg8g1Q1sesG6LCmNjJbNAWRlwn1Kx2YeRtKsTtioJet8weCOYHD74LzBi6ccnrUSWnH7tUm2Wdl/7ioD+2SlnhPYs9V9g4eVAQwexwCTRzeFfQ2O7fh1p4G2HH1mH4Ui6L8ZDRMLx+jRnjTym+9wlIUDoC+7G3AcMfts8WRQ9Qgk4nNrkw7DmxSgNi1jH12jkTYCZ0ze6NrtqzgQ3rmnifIyY9rmO/YQ1E+9azwBmsjN00en988DbesgA73S72aqG+O5de8AFtsMx037CW4OlihuRaRduMbYjembWFml+cIntg/rGerNQBibYUxrDSqKUHxUPDiNtr4LwLOfLxsjMvm+H0r8dW1FGTHzJGF3oSADqYPpa8uByxGkFigZTpx8rsGMUq6dKgV4LEhJ29EH3vH8ECGHE0xrREOOvtrfAJ2P4+Fs3SOSKRqsu7aoqKO5Xi+XOukEGsvQyZm6EkSft5i27jto2D7k3M3fycMnu9Zf6/GmFMkZ952ZvfD5yt9DZV2CEbSL3dr7jCsqFYLVCM9OMUMU9kK7de17/5az3CRY+/ZGWmr8KNayFzT4L2rRbtXTDT8HIdTvmhbqj/p+xkkYDApYvg0UVGOSN59z5I3o3n9uWI+pi31Aj251ueNA5y5MsVSyHbnqkLEaVr9BrdYU9SuFpTk8VUrfU4JjCuZE6Rs6o/nY4HF7Mfsxk0Tt/L/+R7vN2fK9nbI+E4jNu5MjcDZBskV72ufPCD6YU50xcRDPH4r4dR8lbkrwfFfBkZYb7Ria8hrnxjcoz/Qvl8lzfM2eo+avZbM/DE0ZTjYhWHmKedzeHZExkNHP/+qhyOcD7zZCTTjzegLgt5LZ6iVJLM/TY4QAxkoPyNKDXX1PHC4VzPDB6oivo4IqfJdIfTdbUEOF5Nr6ygkF/5+p7nK/yUpDVwD4wR37PpXPj3OVOmYySh3CS+ZM7R8pk7aG/Wa62L8idT1Mi7yvbeevXmqNSzmnCjabJ3WpYsnMmJSVNem1Mmo4nj4T2DGDxPqNhlGtRT8e2ryQeOSlUC7MBFmU/4yMMcnlD3Z2m9Mh52KJj9vvr9w3wZCkmv/Hhbi1znj6OfZqK0MTNHZRmU8xRFIEceU/Ja+AFndIEqMZDlLIuPK15OOI7NtI5+b4Rps8++VAuWJfNgLpRrdb0bVgtOMqXIxAbHUrV1N3LLofJZgVptqhAUFMwolAxBnaTmiGV231hhPXLj8zrQ++AVvcqqLd5wb5WxzgPdSTX7oRwyjlIr6GN8j06QD6/Bp9xB7ru05PTpzJgjL3Iw4YfcHSwhZ2uZ3IhTIfuwdFLsY3geaPFZaYBYnRrjDeiI4liipeTYgGeKMCG44ifj+UqH0hV4zH6DvbsCBpe7uq1pdULp2pq81+ePSq45mzBrZnbzF+8qw9LDhHNmwdlFlu14bQ2sUWMfMOlxQ/v18jMzWcvcfhyv5nU8nxzAIIvzXEX+KE0bJMFn2CvDQmsvohBbOV4IqpdA8yg01RmuVWWDX2lDNfOb1vLGe4T0KpUcyqenNC5xBFt0qJzYc4xqymPGItBgoBEKh4mXJbQXbC9AsmjkkfLWIGquqBFVMGYG6y+LuGmCy5kX3EH0P2sf9hLeN0+yNPV00AVQPeLKPGPFAHsF91TZlMpKjh+tPuDfFgo8Klmg46lJsB9EcWqpkKwBbtZJ0eQb9h/x0ipU0XITgiFrt4kZB18xsB403jh2TvUex2gzVaUpmIoRuyTq4ZjNO+L6f/Zre7MoQ1hnZYCs/oB3/siPCDJzP7l4bfq3I/jTPisb9REe/Xtc/+cL4zouCLZT/Df89kUAp746e+AP+7gY4rW23jz+lAXRbmMVxRYLjYiUPJ9/Ez0H2PpFcmufvYHKLGbb/9L1hjnZ6OOvxUqBfRWDodAoKJlrbDnBT1TLL0uPh5hj1QvbBfhtg9y0niuPwJx99DiFR5fdowOnXEg9ULHAouBuPSLawEE2sjih2ifTw3xsaxNn/CpoNs3DBDiNaZahVn0iGpNKhWdFRBPHlkZQEmL/i6NLbC2/mgQShZ2v5TaZTXItsAaGeuTobJsCw4ZPWbEMU5ua7edb+yuoohMtASSK5eeLT2NZ1lWfu9jX1rRrTQQH7D9iq2JoF8P8uaoNTcY6a9QhCJ1xtGxwZw7otB6VaqTu5A2ohdDKjP+XgkkhcL2q5ZZ8VAxYoZMizaXMH0Js7Cu8o//bg/OmNLqmQ+hseDurJg4zYZFaF7OPf/vjzIKcZYmHzrcZb0Fi6kcmnlVGEaxC7cjVGiXOcLxYGNqXLquAZAwjBmzhNA6VW5ryMEl4hSjNQgt2Zf/sGQphfCpeJvxf0Q4Y7tljHp9YYtucdVH9u03XfYwU52LvTKtvjz5ghuGVIxrLQNYXvJUXgmG/ksngUQolacd8O4WPqZRe3Usg1O3iY8y6IF/6l/MeYhINFCLNGWhgGh1cuBwmWyVFxTG8LUXDKfxLioEADAXq7NoPHBpAoCcP0mJcsCaHXhapHta/4QEYZ2B+RZZBK9o0sGXxXyWXnmbqgBKty041+ihmBheBztptXeL9FA+3BgS6ZzFYtjgY/YYAZwMEDzYdr63dnOPK6NtcFpYiLhdIgmiwbHGw9vk0WLd5+T3uVfLHVleZLDoNwWaPIHHMjo0tEWR//5bLnBl/ovgJyuPovIvK+K/MMx6zlyU0CCjG/gkgF9Bi+mfwRrCA/90OujN1ZPZn1Zsc5xpFQL/RyhGdxnsLENHVgRZDcUZVnZpQ6j7x6tmkZajukYFzaUsC02oycmNVzfZXO2vYY4Hh28zjHLKVz5WfcR5J6fPzrbH6bed2PiqCYY3O+dYQ2MP7YxDSqWgF7P/4FFOkquj7WZCPZ/r7E/3pmX5MWDl/HleGDlbUzS43T+EW+DEZRGLjYVgE+o9B1LH085DrG0YOsASPsCl23DXzBU1CI+DwK2U8QviAqNJxOOyrOMNwWY4IqdYQwnD4NIhzC3/f7M7zeJFiiMO6gdc1YvJzKtdnlAFj6Bz5xCkE8uYjgf6bdGhidGDHQ8KzbmP4zqSAxFRBXqbgcBOjTqKsjiEIUVUPKZ/pbLP/0tkkbMN0VzNR7RTwwToeDr2SEudzm0g6tMsiukTjoQVsP3bOrgfqVE8AYCmbY4QxmDvCr4/+Tac9eqZHBHd9FJMR6Hj+5QgUsKgoNkpY/XlyPe3BgV9i8kdt9+lmY7oRsflyoiM8+x7P7znLQkaGA21gAV6nxXHWjYfEgHwzG73rH2lpD24qsgsksv8V8BtUQSNc+ZknO9fnjWrkJKL5ujFRUEJvBbFXZusOlPphObAaH7Z6cJ1Us2VHU93O9yguXN53t3MExFQrTcUZQjK+3Re4cl7c16aURkvzm8yc3g4w54JGeIq94/1165NqM7X5DiZLPfTVTBsTGv+yrKa9xHBccQQuOwK8W1gqgIAwb6mhilAnQGA9JszSfcUui3Vjw7EFl4jgy8zGKkDX6tiGYOXsjVjcVWIERFp12mp251y2nUxOTOFUwKWgjkrBSj2WjB+O8t7oiSiz1pzFid1hf0FzHdjhCk5F9Z2RZtxdLLfzZ6Vk7BVpZGCHERw/asRIk0RUjMWGIqeJHhX52TeKBNaXmxauaCn08zaHATthwt1FW7ZGmiLeL8ONh36XgXjZXtW5sD18c1Q2/AwZFfiLTdL9rZ1QsfXY1NXVsPHZGNZEDPuwpbzAgGbUjF4jzo+JoKSxfi9Tvip3m375v1O/MU/W8+2Zwxf4S1FtbHqpQAO0VgXmlYK5bF6dRoDZin+a9IIRMOWzseAcYPnAN8JTWBvRGCI0vMCzGsepJhnkj4MsakosMOU1DcmwvMqqERtNMuBmGOFEO0jQ/h6qOOeLr4kCfGDb0yxiCQ9qv1mgB0EWJTWxgaVLj0j3lGReuZADa3+LXRujxqCRYTqb22hNS/RoMQaMew7Ve7WxOqCGaC1XewHqgMJEKtW0NmNJD2FySmle5/g3TTlD67VA1UzA5dSyX/p5oGjW2YxoJzJkMlOp+W64S1N3wcW731RzEC1F1eV2ziB8x2SkpI2g84MHGExop1zb1H1ON7G3G8fkC3FyVvTsLkXe8zxOqf8krh5PSmhbQKvmmkpOCP7UCpuwqmn/WyLF8zKMm8LLqbBtLzmtNv8zvUUq87chxquT4R6+Bi+tSy/LaMZ8YwH1u99JXoJu/o49NsLoK4TUtxl6nYltIlTS6YyOjAkMKpe/J3xfh+aZwGTcZOZUduxdWq7yJVe4jKopJfKTToPKBJcq8+S5i29Md9+pxFcLuJjWgEGvoW16wZ/1BH78lymMJKdwVNZ9r1XTQiTfa+LIrXbGj47W3vrWovEo12V8nxCo56jwqyNki2R19HI4RxGa8AuLbNhZSE6XktR2pkd1tII6fmfbaNBkDmP8qGaRbsuUn0ijGBTNFvhXKLA4FrPqLm1v3QJhBO67iC+KNmMTpr5BZWOMywQ3as9oFqh9vp1szRBaJryPkJP2dcHZFARFF5urd2NQ7W41poABLCs8RarawALwI4rxw5QLv2aK2Mbu3x7tacB0KHn0cruTMqnIs9K5iPQxw4zM6nJicnkIgqO6nCA+BuFW6h0a7VwUoHtWaWbrnLelOcLUmaClIBjegv0tgFaQ2LOr2qjl2bbhW8JqYmew8J0dQkhD2ieaNHR2w1T3JmOs6HMsghD8TaXUIhlz4g7HRQW+0yQkWonQREFaKS03IykZfQXt8wJH7lLhYESo4/Q3X3ITMW6xz/wuickYgpXIV4onOgzplqHZBvEIQviYCIrwPc8P8BRdFxpUOAzvSz4y9l/Fe0deS8yX4sTCAR/GKfw4Lk6K4Er0saxdBdDStPXhmR+Ztp4fFfhVlxSARCcRbFKgdTmGLe9/kgX9Js4jN58g3nn7V3JGmOSNGwO5AYcxfhH6CeQ2h479QwL8vl/ItjOlj1/3gmUgxIc6Z7Ysi1mFUV81VJtCX/vMorhNOmOwiSCJapWBE5vS1aoQ300IPFvo4nrnUfptFShiFSK9OWJm7DK9xRAL5EanMOlyrGiUja/k3dFtZQ7QGKzRDVKU05Uji6lIMLQ80IX6jsxdBilOI+28jKEuBv6ql3VNFj7HfCVFPe25gPMgw1J4KrEuS2QCESi86GEDZdldZKHCuNloEgd9Xkg6vEAz9z6mzNPAKpqZTucQHjsmFWYQwzd5lpFj1A9P7eLPObmLMT0ScHCXi9IkURrHvCn1DaIT0EDTeqxKXe7wRRsfzLyn+S8eDJ5eljDPOEHYCYlZ3xc+yM59H9Ob8sLpKQCIngUFrYSJ0q+GFnGwZ4uxQ4ihrlghjRV3sbT6HiGCHcgjeoq9OvhsSpGK2UpKbOw2of6gTkL1WJCUOtQN52qC8HDq2qIw87W8NJNBPWY2nbfuNWmecYmFUOcfRq//B0FOvWP/G/QQJ27FMfzCZaQdBKND8/3rAcvDLiUnPrPJrAmX7uXWpRpb0V7PjsClQn9MgDYfqizUFkYUM4PiisERWSxQupTvSWMbcZnHmgwypl2JtJdCez4Uz2xVhTHXgZ+ROvf5Jb0tuMdMsEGszK5lIdr/yW50/8eXl/fR2J2+HSlUOGFHJMQwQoZuQ4iowBf2qZPn1v1Y6T9QhuuM+yfvQOprvyMcReoX1t/qdrxP1NcgkiNHvLRfq6hNT/nlVzpZPOXXe8z0oqez0V7qwfrWNqGVgCxexOOGhF1VGTDv7a7vsDq3Dp0PeBXhX2IOrWKUYB7qLORi7l9qg3D4g7gcB6snorGPJJN7A3GXXskO3aNyzkjOmkGMzPCIRNyT8H12U1i7g/M0t/g96t5QBQZH6fMUw2sPv3+yMi9PHVn9qG4Oczlta2jDgeaa1m1aevWRPXSdcxRzCPJHDmTIM7b8xiKjvpguWcqyJPWpQ6PxsJnIiG0sQgaG05z0vAaMVQbdABvLXSIoCAv0udGqTHuIomEYuWz2/FtxgNrgewUqo1HtQMDAkhNHWE1L2YHWbmtrw705OgHemoU3dPO4DV6zVBdwyN46TrYJ8ii7PSugyVW6mp8VikOnoufPtU39XVlPKtudMMomUiWrGyXEZG8VRJa+iyvJG+7xGQdELnLeVqYqQe4S7YaSpeOi9aYq5+P3u47M/ZiQVTWNDAvXeg7oiBSrT4hWIoSS/LitbN7usWdumDfhY21ojxmEQ038EbxdCoYqCYsLZPp48Xf7SIRx/0HHpWTp59DZt3c9pjM2Zm10Wdoj8K794IGPLAlxuwgccrgTvCYnH51nowQ5CrAoduCSXG56cYjceT3ZvPIDIxZ5waXN5z3BF+93t4mvXVuPUrpapHQBhCh6DwgzXdeAPbg2QzKqXRD7OYzPG9gRdXYGhv1fQndO7jvmqhJS4cXnmvw/wFkAgTx1J9xN52nHzep3V24fwEjtzJdmL52xD3jJOqFqWaSYYvBQ/GqkfBIRt0nfRfShDl1qiTwUbZRALeSS7y0oBNBsqYqhEb2CJ+IB1RznSCDi/YGA37hDFlsyHyH1j0kHTtUWGJsRyE1p/9Jz2VAGKEw2yL+0Di2VZdB6vgbUaqRzcwZr72pbd0GPZuXdbJ1ULAoi2wFWmwRCctvU0CTVOohNdaRojwHBKi8j+CwB7lt7qHck/IpkvNihZpU4JOoeRZVsjZ5FLaICnirZg2PSkUCZ0qZisHyizExRPCNb+EJrUf8calZXmzRr6lBz85hcdV+KipgnAZ4J9q1uSLEeJTBUKaalwr4CaDa3BYmsw5kPDdB1+YZ1QmIybttO/2IhkuC1lDb1GjgN2vUzqu2Ly8KApFDrSGUXy0xFrRjRW/l+NgAPAe5Kj6dAY7wdT9J3BSEYcXalgdNYcEGmS2+b6+Sjm+/QV96zMwsDgwNfnvd+tM1eWpoeWFZdIWvZxXVjAhdau/voHaEr5WgfFDN+6J0e/VUYyJUIVu/k6xEaceh6eMQVGNKDMHzW06tYWsxouSgp4sRSplidpo5Tqah0DHCtnkr0k0XaEQsKqiWRY9GNOmQG86apynh0maSjUHxVbqs5+ByM0NcRg2KBOcdEEYElVb7CU+cbfwgmJ+alWbHIfoeekZl5YpJkpj0kIdV15o9pK75LGvBCixTFmbYi51Fb7Nc+IstZwSJwEfqp2bI69jRkjChGCHwXdHNfMVBJ0PwwIIkYMGRdDVIDRqQzGzvkbPsy/BXMtO78GQvfC1eUH3ebvwJIvkMlVzLtw27aoR1hDJqqTEmQQx8NY64yPBoXta8RwWZPxlX8Grdd2/CrBhCykzrbDsE51v6b3X2G5v9Uxd5ntutH8h3WSIJik0RpbOnDmKfMRYz7GnqvWM/YydY/Rt34mBaicLfgbMl8Sydq8ThOh0QXHWQ9vH+Ob2zEuuHA5QH4UfqhBvWXTESwYLW0FQd8ObQ9V91bXJZATvZavGuoB0frejZnYaDt1Cu6Qit+hCErHYWaLyJ+qx6EHGvmoRY7hbCvJbbE5sdQiXs2gCPTT8+WEMC1OkoXeDM8FDOxdSpgfcPLsK3IEDgzBVPlUkxoMgqUVxGzbkkGWMQcUgnlWuxuTketmnOAjL7c36ItUtAOIvKtXPykY9mcydzagglrMFc1yCtbR3wWWxi5c+l8pCO9YQjo+g0qJhr4B6RQUo/bBokvOkyPa3h32noRh06z9qjMY0VcW0ROS7kWPBkZBPhMA7764X06An4MIn2Px8ChywQ5PF6csggQDb1V23o5NNAZSLR39/udEk8Pqm90RwzvHgw2hcts82YHCYAYm2XDzelevt7vGiTXpNx4IdEsMgtdnJNEa/NfsCwkb6RDM1ogORjakQnke/Ipni95S5mOtYG4clNwasyTBcwr5KvAA2Ec3045ogTtoBvuz8jLANatZRlkmm6qLfVCdxG1gMDRgU2TjLYydok0cWXqOQMmI8r6YzBCCLQBbhhkkJfh3qqBOK1FPY4eJ0TZdCLjX3ADXyI2rwxcQJ+OWAei7tXr0r1olB4mkP6+zfA7ho8PI/MWDLb1SRIpeQKBM11/aXwHv1riXAmaDlLcb86LWvEeQTIYI/WJQsyT7J2rkfGzX3Gt/X7UjE2wT5zUjGdqOnnUwQhjzK02lyWN/5QcjFo6WfP3sNtd4it/CZZh7Bpyci7aAui0zTX7hweCxvTC06IraNEQbk3LNeGXtixXEOpYnGYy1WPLuWW8OEJYwxameHk+dEB0hlSiovwFgxiki/Q3gEl0vrbIaE3+XGuIa+hIDiRB8eaTi9pQ0romo+7fqJksHv+GwFSUx+yzeIPqKzSb7dxeWMAS8m1m9tggz522XRtUmrTQA98W7hn2HQR1t1bW+qTIjjkG3wHC+fqVXT6dGMBLLKVy6Q9Y8xV9lnQsS+jTF9x50yiUI+Rf1G4XNWvBI1e8a9EPAVE3/4yIO7P6wV0MRkx1YXctgEg8/VhUDdcmewCxjU0cH2f2Yc1P7Jwxke3oCobHBecG6X5dTVMurwtOE20/KrY729udPvgzW8PjTULJEl7HYz7Y0Ac/U5aWGqQnihQOMjFcGzFKQDJH+v+ljx1LH4LTqCOjcSYL0J8umtOZfZHZAB86mNfPcAg660CQlHzNUVHOs3r1VNofwnWTPv0T8/xo36JELFRCljouHed4vY8t3O+s8SfU5q7+jHaGzK5+vuprZy8g+h4tPqq68lwSZ7O9hZOeWbsSwtv5WbX5w23e8BU7KhJzWax+ahLUq7pIj/dPQ9zlHlcqqqcQxuATRf/hUkD0/EsYBHumJ6C2m1MFadPYaR5pOZcNr7vg5dQMgD6tM2HEF4qxKYQrxBwX5+mOLA5FoMFdPlF3YnK9AlHz9UgFyV6YewE9rAySjNF4kOfKnwiKiZo9ts2VZOxZ404QUYt79DHF4RIR4ikhCHtZEy0qnzKvO+KJQmjDtskDj1WB5L7uforEBh0ATby6bKo9T7BfrO/WEMvp71xwG0E0hEGU/A59r0ZJvtJCZj/f5ZVRYVjNShkIC67P5naaS0WAY7F8hAICs0fR1MHp+kp2zv7MBhvngSH+F937T3K6dNQAR14/7o7iHm0g0XGjYSOMs7NF6Kidut1M9025xOwe/XP6GP5jdf4YcROb74VHK6Me93C39+I0bB4Vrp9draAXAyKyL+QuqU/PhmzI9r5JSyxiOXjB4bFiNSuEp29zPVtdCGpCjgnsBPcsGN8/ULB6wnWbR4ovM+WjwUB/9LFLfJamGLlGns2BLjB0uDPHh7dG0Vc7eJi/GAxeIc3dMYOnV6SH/rcudrPB05kNjP+QaVvkAz0SlEY8bsR48iLmDj2vDZsANp2mv1FUU57jCxCPO5A4a85qCXmWWoSC9n0zX8V/5nT805jdZmwac3f7DnS1ssElZqYRIQnOGwS0WymI8e3TuFxujhusHpDWFZjfNlOeSuJN4ysnH1C5xEVhB4qI+xY7eTSsXsZFzf7knz9KP4Fp2UzPIeSgzZPFzVKyMF7HiwVh07DX+hP1jxD+S4+nfDJOXytY3oj5BUXmWfpHXT6peokmT7Qv8bSOu/acFC3O5K+rjX17uiraDeEDvqIhAmPYNXysZS1jr4QJgS7FYhZf0iq+cdWl8iTzcismIQNv/Gr14s0/QzvapEpywJ+xVkussPUJpAYnak+MrzYr2biHI22/xdFoXO/2SUWys56R2/UkriG8K79F081aFclLy3hsJM1MEci2Dvg6d0YchYtje2DU9mo0XWZmNJDH02jrfgrJyGGq5M+mpmc2GyhTFjeDQuKwV2ezKDEg9WUERTbQ9AuYDCIvCGLwW3df54Jf9SJetGePxhKvU1opbDVtGLWCd8XTBPZz72s70Y0+vlDOQ5KD5g6JrpPn+PbwWcUeEY1K8XxUIhGjf1fBUAwrP0Lpju7wG70w7UgLIAtyaIQRXOXnWsZVZ/BT44qdY3TPcigw4kJ994SdxFeYKt6lYutW8KWQ8FT5EBOFFiGynF3ZIlGoR6PYnKrT6T+aG7lOrsIzf14JjDsopdMBS8WvYgkZFLdRG/8ISjXFjVmZ1g08mPW0PudCDf8oJGYE+XvY2mc5ryM9Jt4tSP4ZFnrUvYuUoESYvJIbYXvLR3hIhQIHYD3Ba7oa5fHni+FYdC8iQDUSpT5pNr/3fyj1DV4DhMJxCz068wdnnmDBTOWHjdmJOv93paxc0o/593MOH3kT/KRY/cPmvsliI+XxFsXW2JkxSM3x9DAb7AFTuMmrkKxzi3cE+0rOSWz4wqN7V2U3VscVLragaD8eP6n2UG+XVDxBzOpnC5pQPdHlbbGdcpgYpoe7O8paNnQOQESKbfEQyVGScc+NUrjEObaVysiHsF9KLqHaz7YDOQTSU6ezS0NB7JqOq4hLn8cVl4YrafjE51nJe7jYcTQDsVQDe0gT+wnQrd0i5EFwbmNjiEnvdy6p8z4CZZYIadsU8NR8spWseSSIL5K7v69ldVyD7kaJPfNYO7wvOafvkJ5RsBWovTpr9MtlSiLfVYI27ZhuO9OreldT0cdBItei8yiBexQ7Dv4O5fiLHiPz37BuiBggamMpofyYiDMBxwuSf/kkYPKPEVrt+B9c3EcZNnOH3WsTKdyG5gxy/8rTm4oBYjXB6BW3XcKqfYEJQSuv6E09LxqBmDev393I0j/foOe4LpzAHKI7+yQ7RHdBApdnJVhZhYtwKeko5Ka4A1hNX+L4A3d7N5hb1X5wCcz5EwpE/aZfCawd3EYdYc5Nt35pMFR5dUsp7Bshge5SDjk9Ipu7JWkXyQTfMx2xCrwkoXDeXLHSkwpj0ZPstiraDQpiKqnzPXhw+TKSceEKPlp0tFft6LwXgNsuCEztjosHKVBDN5jRofV+bxC738G91Gb3qiIb5gDxbyXHj9xS6WAqyaIrQJJ9DRWSVJfq6Mv3QgQ5jQ2vGAAgHd/6WSnqpm04AwctJNbG5PD0D0fR1P3yS1ugSfIinSLv1xWkReVkUZy0JqCrqx9VilLdtz/Bu2r/3tuylh7s1zWf6MbNk48Z5hU7+0y/tiGXJucTlyPId2OtSoPOtrsJUjPaivOgiFyzA6I1zdHXVvX6XIRgN3pmPsvdahMGbVemn8jaITzx0hyS+Lo0o9xMOMOoiquaMmSCZo1K9yYa1EQUQJaipfpUNyWPb1FgF6PJmUh6Z59nPY3OKTaz+BCj+0xn6uz6OmbcuPP1WlBOzVu1+v5CZwOZ6EkLc79Ogi4/IfFrW0CmbgiZvE5PWxjjiphvtgHD87kex2uq1+9rP8vCyyRkVj7F3M7aw/E3/he9sKImhYK2z87b+cUuxgEUr+Fyy7aktCdoHpFiX/HcPzCs/PCTA1b3nRo1j7m6Gm+Ly3JlEbCF6Et1eKWTLVpyYdb5iVkCAnJHizUXVj/5SbugcoFg8Q16KFN5eVg8OlitJ64sRjP7dTtS9EDc8zEbdDVI2McHAWmFz0J9f/0hu23uKYKrneAGGc1Zwok5VGk2RAC1v2LZxvAkZ00eoVfVoAYF+3JCuCOrDO/GaVANLH5kAHPC4+WoIIY5rqOb4ugFWTHTCNHytDLCrD4UsbIyiGKO/PDjCiJIF0UyQDxzFFVf5ymRgua6iC2Cxhjj0Es9Q7fTjHh17HWuCRZEHk6MhuKNb9JJCenXXVcQGl9+rMCEMfhpR+9bl2vaYHAj95lMfAV1GJHzARdVhx9djDLepkROgzd3KsautpqS9hRgQIj6of1lBH5KqZ3r40reaRX1u+l0bjh5j9yBEQSkOyqJl1iTnrqOK11gYIa3eEwrdRR6gL4P1KpET3jlgCJcy6Aj3Q0ZJOMwLjPV8V2rrIN6W9m2RUM7SF+Sj280j4vHfXswC+ozF1iyWVVCaFUNfd6dsPcaSGo+g6d8GAaooWyfH9pp+r54ASg3cOnC/gMlIDAYAC3c7qxxw2Reym3Un+wDFxRnaEK2b9adIIH+1Pnkz6jSpzzAgAAsaV9c7FE+8UQHANQBcQBANaCBOMCABpIBABqo7+PMzmwqZeFxEVRbK4PpqLegr/LjfP+Ol5fFcJ375TI8aPQ+uubPsI/d76v/diDL7X0VlldKhsXdv8WUaFil89zuFJ/Ey5ZRqFkk55DZHVDyJgQO61uf7/e9+s/zZ8zZS+cOUCtm/DSm74WVnXAoRwWdUMKdqXy/3RxXg0+iHMxUYQgeXLn6vZP5V7X8DmRMk96Z43NEpk5hzFA4uhJEELy+SXWNDiqKFr82f1yGMh+lI/aPVW58N0R5vXt9INNEfEfXhsT1EmLYJljwotXHDv3LIwxkAYIK2FLKN6Xypkxxj4rwmmLOUrsOuBCv3RX+t3jUptlDKJoBPItX7O9o0aRnWB1L++D4tWk+YrfELEmSeOPfK/xOXewgNs+WuiwTltTIoQSwGDzIxyPPoNiME4lYIPD5Klf4qvcAzTk3JtTFrYjxM3GD61dnPYFBW94xc78M+dzbEvYXA6tAd5J2IhrtbsOGS1Xe6sbvYPdGY/DEnAPE5MziDOo26GY4Yar2SMH91mv2rlaI3oft67nBlKV35vziwob+RPkuIkkjDUYPt6phZiyNIgFGwrYp2LNXbCcxpdXbeqWAApZCcDqsImUXtpvgMvtKnrt9GFquJxAH9Y0QAMGfUMEjwHkTWlj6lkSWWWiMMgm6xEtT5nb455M0hX0QT2L3pyOhHV84iyAbsoLNtGbdOsM00R7fCojXUKeJ4/hMuXvWUEgHFMYRqwfbEgL+U2pjbD9fO/GV99eUCB6sRBcweGd3taLn81Z8/jRTQEKPJULh4yE+mD+A/Pw2MB44Sjj5kQ1YmzR2vKL5B2o/L1XUZyOdQgQutHiX3NzoMWqevzeHonwLS8tfwXy2iy9KViT2IRtCFoZzwlNf64KPgyh4gRiq/7iTfwzn6R/a5esgDn+8U0AUwFmh5/06TLVyxHhlhFkMTN3fluQ0Mwu1NXRL3yfAJNXT71gjczlYdmoRY3k9LZnafn7gRoVLVKZXROg1wqZSw/a+RIKR1HtLF994DsFTSO4W3SE7IwO/z/fvi26sMW5FfbguDC8QcMEAko7R3L/bjnpX5xEe1EtX7xYqCLesMsbE3vMUxnIsiapjtSEGHpLP1n2fjMYsV5tDOkrK75kwskbAe89OGqY5PhcZaiTxmGAIWRnug+uwprgpdPxU1rXnSlmY1E8JQ2bVvFkR+HFW8xhC148GBbD/kjCB6oeIVX8SVjzsyLLOPtttA6DXX9YgY22D5aF83OXIG0jTURpFoUPRUaw17mJvkgxAv5wdHkWYLNsaCC8bOuAFi1ZvUw13m12jxXZVsBFO3Az/JEqgoNLeGnP0aeUIxeRfBAWmdBJCE5J53dSIw4h3PjahmS/W6t8srey1BtlmzVoT1gIvwu3ta57d+rEKf9pLUFrB0FON4kEJaM6zaXx0VLSgVM0bZdBx0WpE3P20FxBdWPUdKDyXtYKQgmn8JM748GJNv+Y4jVkuJp1hco4wzTxGwkM8h8hOEivu7HcEN1brUDLlNdpUY7RPFUdGVpHh8J8/apP+ceBhKUhRMb/3o+7RdJ7YhtK5I/3KeQhv6sUPWtdmd/s72vhJZCRF5yOUiUdnpxDTX22sU0nVhUQrjTTCyEmtQZSdreRS7IT56TPRfwZX7Bbslmta0uzeaFd9hJms7DKzF97s2UnaXiyr5tL06ITCkItydqndr1fcuDRrWJFaGW+cQJyz+8EqJeYwrF3GQ97edJZu5vBZ0xmUIVuapnvsC/WOZFuNptN5W2qeqxcNEz01tIDN1bL+HU937Ulu4HbkOPIHJfpKfmfguXuQ0njsHZIv45oVrHbdCleY8JvmaUZteMP0Wg3CuNiGAwyo485+X1iDS64PUrP9BitS82rxi7Btx4aRSv+62s2ZUrDyqMu7ZRp58TtVW0BNnHUd6rumIHFIDlmJ69CXtyQdgtPSjzqfG2lEczdM+YyOBaLMStEkTmiab5YhjJTJS0YGpZdDpq8lg3ieUnwHIsvTpHvoxrLFBztrEtNe90ytZNlvKV7FfD8OdtOoNH/iBxC0DQSvFlALP6N3u6M92ISize1s+81HYUMwzWP2NmQ1zrLCNnGNFBxKxVpmUdKSTYu6xsaUQxrlmTBULh5esiEovq1oZaxiFOLTqhoHdveFEi0UHOGx6MgOx8Ez5SNMxI2+9q3+6CciP/eozWCTruriK2SefD7W3CLVjuWGMM5hIYB+ZZn75+9/AO9d7ax/3831Kht/9oygGiK5E+N/l5I3FopQRHy+T0o/saTcAN1+KkF057UAUXWMbN6OYM+0I/xSegiwt9JQ2DxoS2gmXu14meO3uDFMzd4OeO2uIcjqZVB2wRu5JxbSjAfU+Xn77kk0glmZe9ob9QLhocd2bTUyX0+iRO6oNGzTc3ysIxdXCPw/iQJH2XSaGRyYq33B3dVKxDN7PmagDenOqU/RkMuDJzDwhBVkuz6VBKh16y9tAyLsHnqzHuXQmKKM67oPOmEIBuFJN+HsT9wAMfc2zhQlwd/jmmDpkplLkiiZtFKygxdvSnH/TCsP7EBB5NKNFkFU3diBCTk0hMoyPS2PAH+NqvISeRVfC+WGZcNbUCHAgtYbfffUDuo8qzxHiQ87pkQqVum5yWdDzm9dyYGO6ysk4eUdwxJeg7d2EFAHFGZ5FPL3miiLsi4zwBOz+n24l3yRxrSW51xd2al0yRXAmHh26a3/Zr1gNRTvj5yM0XOohZpoH80B6zTJSFRvsuqbxnzx5zYyWtVZcfcLMDIdlzreY13U5uPi2BzjYq/pJ7D3N9oC3LheEFhXpWNOfKpNDCnTeLSvbxKDQWJf+YV6Cfz8jkzwx62O65zf+3wk7e2MMYN2Jj5Sznf7Z2Qyghp7vmUFrbc//comaduthUduOrXseMYL3/Dn1tqU7nZ4g6q+EdPZrHRLQpgwlufJfqJjWPsOm4EI0A4/7wzgVPi4Ks6yKUbUtRAVBJI0W+lxmAQVEkME4YPNSI7W1RjZuxF4QcFhgrzqtjnSL07ocD1QWPdosuqYc2ou55CVa3CmbNP1ZFdKKlQk/NH7ab6uAA6sSZCgE0DK+bd0IDKz6ceHACq5Kio2xSPMiks5/0WzxSNdFB58dpCL3GnrUuZkJAzxWCGPRPOVGXfmWrrjwUGGnRDXTq8WWsyXpp+bxMN7x8ar2bVc0ns7TomisxUNU30EmMK4aglB8ZWQ/5snZbOgDw8z8LlkyTKWzvv7VXmn75XxtKOrlZp7lHZsNrS7Ljr/F2ONjuch/HPsQHPYiOSIntexPJ3SeOlRQkX/viZ3/R8fCkvw5x8yiLVMGxYNp7sCr32j0Y7QZvevyJdlTJ8CLAbu8QZdP4VdojrZMy1wU8q5h48kDLusrd36DL0uPgE3HPXkK1PQfkb/Et1HUvQ4WWlePo3546mfa8anb3qzWTwxzEG6r+jsm96rp292TbNaePN5NV+kWH/asulkH+qLdsasn+g7jeMk0T9HxZeGAUaDKX/GV2IwQgbu6IMBLxGx/bKQDV/6kjU6+WOQl58VvLDSfX9Ej5nnjL9fuSxkTfHBG4ujAqqLq+oO69DcMl5mdOkIIiv8CldYx3e41IIwXGJ93UcftwpBNU2XV0uW9zcX1i9HWE2WIy7E47HWpn9c5Q89yOxghoOAVyGFZaoBVXynw3tz8+HMnEDitx/shORzGpjxXKbz0aCShaR9eUXBxIYqiZATbJwj2yEPKESbmL0FP3lJ6cVKu0+2Wbkg/+wELMRevdzsoQnvndeqE3hJGZkzWcQp81sM2Und1xp+1NLJt5FPdf9t6GMfAHZvaTqLNtAcRZQN+iqdv5XXXZZIjrvpIknMVtqqcx5dKOxqncbFEySkJk7Cj4Qs4vcQtPOqTc/oUR9jTvdcP/zxYfUhvAYEk/7dOBgijubIdqPISsa3un644Sh7+8AVH+fc41gYtDVjhpTvyJsCd8DDMIZmtCJaKnIecuPKj02hdwUM8YITkPsFw0zq8+Htm4/o16Gmi2bqj2LF6mu1bnwqWP04MeixO2lag2KK5S3SnNTInT9goK0ldni2Q9FwduviNT835Y5P6JXE0vfxs0+/vLPNZhSG9g7V844yaCfvTPfHuGOU7qOV1WMtxA68cDysj1xtvpTvgsdnHGt0jDcLm0JwlbAcavEj7dCJHBhnPqPJATpSf0dvT6QXzoIA0Jm+DnES8MwIg0qPjRYCOE/N0N56lsr2qjxHMbvVwvL2w2l1PQZmd1ebrt/gPB1Cc2fPNml2E0ux8DnPxDM65gkUF5mIULIUyAzFiup5VTb107N3jwJuVm38SLmvxEWYjlvVY4I531Q2ndBOEEXjuzW3pessITkXTMSCSFFWkhCGesVefRs306RIx1c9iHhFt3fukJoR7XUEuj4iI6wO0+3T53iBXDwKMGln054+0Km40GT9JN0RGTxEGW/fjlH4jL1oAtUtlXC1fuaCzydnQItoVu01g0i1wkLgh3nMd5g7/BU1aGf79+Fke2JBp+hpn4rlfJi93MWPEKYM5n0S8/+CvBSRZ3Wif2lfHEmSIDNPa9VRPC5Qx//tjSeKfpwrOIJcXa7Knzvi6vkBK+zv5LhgvnW81sAXrbpiN+WcsPyFS8RcovbmIyoDQxWbdXHhMiRtQXQ8up+nX/sp9MU2P+peJR5X6wvvYoT8e2C1+VrHZmT4zJsfF/lt0cg+nGKmsZN2V3kjL7gWwCqXjqT9uH8hLwTKMBTVZi5Z/7jIz7mpw2rFqJG2zUVFV9jlJWDWLnEZWhl9xDxmGhyMwlnujZ5/04rIHlf3bJUd1j/mF/LhVZzHT82GDFCHkdBE9xgyrTeadvCfd5md6rYvT9GKjS1IXamlVgQChphEeSLj9yyYrvSPmxCPsdnsfdssXr53UvY78cQcSd94rNzyk/GgzvbJAIFfum8boqbwZFhPOBsO5cC5+akr+YPpoxpOG+3zbmeXInjB8IDobAW1aoPDcn7UIWHASbxrQ5c8uvLP0vSLS3H6Q0ixtNKwOnXoDBE9E7f0JLdhZBvmzar75CP+XVquv60gbVjPVg1hIf0jDKw/l348YMrQ/5AZxF4T4HzadiCC7DUS9gvltpdyMmE452UgQodx4yaBU9io6QS62AAtNTQeN1gUfTwix3iWHdNkxhvWq9/GYzK9x69qB6OHRV0hcpBfGDjEZUyb+20q+yO+v5rU4Cwl+74/86tKz4hvnFNZoRLmdJTg4bWy6V7uKZ6+KwVkr0vR1ens6FqXo6crirvM6TBdyZZ0v+Q0MIo9gYrf4yc+oM0QV6UhklkoIw4xVk7Pu0cbDisHZRLmIsGntTYF6uOHkn9Fddihk+6lcmG8Iz33bY0kWtmFdMFDjmL5xbCZ4CeFc5HcL3TBbsVA2GlkkO4TiFCgjHJ+4ucJfIx/nhSvI98DqcAbf4tbGs6rl/URPEBjFEJ+s3vJBn3R/3vqWAxDP0m5ZogqNrEyYGRU9PjNK3cU0/LwK+f63gQcUvWKd4R1gCl5uW9yBne7VsTz+CkoMFj7vshnMez9+Dd51YzoPkEptZVUn4S9kgPB3jgTIqszjkvcIyBEcu20Ts9B4kq9+BGPt189+xe/hg098a1kSn+0yWnwcckWUfSWdyVqntMdgLq5hpY5DU49OhyTOj3++q562l9JuaKE8NK72Nq6rN68d2DcVYIdSWBrPzijGdzw6seCPMtSkDLjqd3f2tnLRtU5C0H6otdzSntJh4ewIeBFX4MyD4HiOpOBfcwhR3/Zz9ro7mmajWy63DcaMvL149qLVPpv0ISifF493RfX4e+GLzxzOjGaE/fnbyhoxXh77DDMoDk8QWNUDqgxwWpfsABE5ueum05fu0MvhJS+nYVvUj8aznJheFBnGuPvuB50skWRky7TGYVYAkWl3RR1D5KBjOYNKDlBnvpi6/52Lw613ooU0lpchOOQD0GpjnV+HB/f/BNT73HR99i/dh5/pn9KDT0dobrBsKZfCEdXPjjXr07/uDw2ej7h0c/4YmqnNot9Zq6Nw/eqWX9aA2564afbMYTrEZSSg2C+P7PX4zZtJ7tL4eU0dvnFrUvv/nVw6Pka0YHbLQd1cQ709WhBPaaw2AFYyl95/jLK2+v41ScuRgmbWgODCbNQdgmcQwxQgLoJn5stP1Wtk+ccH7C731lKHD61jzf55S2GbK1t7XoKzouTgYYlAyor56PJAosb2Zh3eACJJt4+LBOh1iY6TE1t8Y45WNmWQ/8KLyiNcbguyH1YW0UBBa+l+PTimjrg0sVatHd/+WWMh1+qWhoStsIBugxQzpDqMsfiNg28PLwqWiIQ5tPmhM6sd5kOBx1wCbWfokZj4C144U7uJZwcFqAtbAL1X0jLqCyftF6fi5MPviF+BhROh1v15kFtCEP49rkSxJhQciacwYlgxLpGD9/39QRBOJNCMZcLNdO7FlQnb+o/fJF37AagBVTz0MaYiUk/A63I1P9Aj82mmAIDsjtK4Z3mrq/OJ2yYD1FrE96/efbAH5cbTQnKXnHpce1WpUwpDLpBvyHhHRtWYXXSh24VeTgT9N2Xwua2lblHH69dy5fa3y+mshXfTumuOmT5AuBA+a2uC2/HMjTyCn1c3hTk+ewVi/3/KsU/3ZKsqJpumJbtuJ4fhFGcpFlelFXdtF0/jNO8rNt+nNf9vN8PwQiK4QRJ0QDonE4dVwGKAyseBDZn27m7nP5sXg24Bh/rUTOdeWVeD7jxMIjlWJTwGurxd3cU+Vv6/VvMv+3Xh+GjsmGjxlt3NPkQkxiYTZWQ7QZqcf9J8Mf23iGs9AaRKJ7uq6f7+um8Ucq/0ICIJDSd4/h8c3RVFVypPT55BftUj4ozjeDJ66vKb7l+4npdaXPF7AGukzzataNLFaQoxGcHGw1C1MxNns7Zl3Jr4NHHn6U313K9bvW+uMbhi2wXjF7w0wu2rfNSFA+bz3ZBD71eVamanLuO0lNZOcs+2iwkFPFAt/nlzV7pRnAiauXjPBIul0QTDuasuuo9bNu1tu0ClsnY3yS3eUKD0Q76420lEivcdsmc9YCBG4zS7DgVijUJGayYgPVEGzqttqAE72yxVXgqrKVMaeKoIHUxnwa+nsxNiw2oPWlaqFvR2swFl1Vo7fee95W+FXfEhe2kIhY7Icv0S0g2FjiejYKN2vxX/hD/TYK0w2dZev8/HoRA1JxPd+8PIBGcK4mdDyHIhyr2igb4UMsuwuK43FsHP7FfKdz0M68PCF8e83pkd8Ku5G46mu9lfL+bi6BfnqrOHQJfSnm6XbY/UcZT0oJ2OWuvTnnSbG2vXHkSA74u5dPBsh1bcJ4I27Rz7dTvtwXpIS3i6TTwHkjUnYRaOrX82ytrxaasm1MPjDOkwJYJNAh5vBcRY7j/L2REGBqlgWSG65zXNB43hxZy6Jome8qjmiHdO6bXdtCddglHDw6+tntJHuVacO/s1/ZCM1NYKz14+NpePlCX2lbhO8dTvsIVnQon3Trntb0+dg55zR/vDTwqi2dB66bMSaGSBraC0jHfmuoHRmotSKqQ/zje4cX82V8iXah82/cIKpEt8ZwJV3zggP+WNZZJ5MtX+/iuoaVmDUjmuFz106/Naq1EPHKVz7De97SwXn4J33ZlClpTBeNd5cvdN3Ze4sb3K75yknmwA5DEJdMjv6n5UN86JOYjcpX1MdZusGpdOOJcpcKixAzl41yYor0IOhfK12SnZ/7V3cC5/m40a/SpLp9O//H5a7iqx1QS5+9XXTOVpUYEI57j8FTf65klkjpuV/shq4PIiHiOw+qffaAOi8R0jJ7q1309lf8LLQFLcsf1Kr+FL/4MmwkVSf3Hq9zWuk/Qq/xLUdnsTMq3mGjFLFI4xqfLsiC2AQfxb5PPlH1NFUalVRUfCGEc69VZUA/YTtJj12QnZc2usFSeArgGrvObiO6UfOpQ55q0ZI6jG5qS1Cux6Nbbr6H9cjsHsdLi7E/9d2mI0eIs19BVKThanOWp7/QAoAJcc+Apd105Hz3UyDEi7S8XHBuqdOtIXiXVdYPsgOAo0OgoOOva94qenuwi8OoqpuXIpYrirCBwrgWhn5/TH0jn6I7mt/m/O4UfqAV3jtTVlB1JcoSYDrmasf9KDrjmwBXnjHYZmRDN0biyD3PHZeaiO++62qDTmhIdxHKOK6O9zPjoBI53fsxU5C5JnnL50LD103apQDc51Pap0lRX2wie6G/1O7XoyJo5GNl28/zSMSY+qaKthiRH5F4O0QvULk5koaetg1D/ycTEOYz40xPbeOzsibKe2RlnjTVrLuIM+jhPUvHZjIVk6PMXIoMMdsERh3Bp2iG2wEDIQt9IZiSfzHWPzmujfn6Pxcz3KOMqG+C+UeYH6tH8H137Zr8brkMq3O0GK643f4iLes4bBc1B2F1s/bXVw7uZMQ0BJiZPNQaCbJ5rnGqMjA7pIZlRITXqAFc2eqnh0sU1omGNtohOmAZacsF97rhgWmZs86XocxfllnO15Mwp2uZC0WfFqq23716HaBVz1agt/IcT+IFQvtw/MlvYL9rM7qWpgn6VyiIweyy/aFPKGY2JA1Zd+yu+m+TD/90is3qVGRbzrMeuQ4IOmVFHx7eetm/L/kPOc8HF/MuC0K81nLr3BViPP5yR5WgIF/1Ine5zg6Ua7GxGMAQC2oxn2dG+YM00+1MrW1FIk2Jxg+7geeohRiJqPHJZOQUPhzJjOjJiQVwWnwjrbcdHd1c5rcyCfIeMf0+TB0Gl2W6heLPoGLfO6CTAjf9KIvhdr1QfXUEVic0+/+KzaIi1yaz0wJIFkO/6ykTu/2iTdiqGL52HLbrKYBWIW+fhrjiP1ouYgrcjCO5W0u2iJ0c/DJbU0Np1KSxgy6DUZtHSJDqEzmRiHT9Z+cHGjnOA8i0L4rmL1bQUeFSJMaZ9CfjMFYJhc/IV8CbHfU3tt27zxrLksqQz8UJnQrZvhlHxOzvcCOMxmkaH/Fv1c/km8hfBMkVZJMdcwLCPl2WEByc1UgM0ixynfaRWwe32fdwaI5Ofn7Nsi0FLKsPAkzXTmJstT6v4PK9F37YOfcZvUsQeKQSfuJ0zGEm6GD93TUgF1ZlwFKjsiLrckxENT7efjm330CHosejkwl2A0yQQ0js3H7IBJG+IWz9KtF/lVsPAdYRtEsZpgxtZIyVATX7kIokMOljGM1ipoF3EXC6pbFissayhNYqx/Qzc2ieq9YY2zQvX/7YYDBDw9IOSHybb4HGbURaTL8/NbBahWQ1NONsXN+sYhfyhEhtdmWfnhfXBpKbIySbRnClb3TNU/uGfkt0axZJga0UJgMWm3xnNMK2sTMvVJJr5v3/rWiKfSVAH2zMq93MOMI2e5Pn3ZZBAxEV033NSFXK4jPJj9YtLRZRORJkpS+HjnowgvrOW7Ya1umazi1Vy/d5s6+N17Unxo/TQ7jbxuja2ShrZpi15q7FF5VUGgfOuyrzSoo0M4I8nic1DLwSFTAfoS3hsYZBLpncToXFrACUfomSI6z63JjRcMs+O7pFSuqv/hIdGHFr8vCVHxxGYf/wVX+QFTs79LLtVzeS6RpfwrByYtEVJyou2wn3uW8h5087zOFtQ45v9MndMQtcZFJ67V3arVI6urT3swCB8F+jyLtn+yYbsU2xC+wpImdQk82el2YWBPwAY2TnO71XUsFyagnH9ZIj9dSpf6y9nQ1jLAlM1wkoqswV6YELF3ekEB0oJIjhEys7bBfG8swpp3XEyaLGLPqtscgHy8fK6BCvisyVsWOi1RB/rNxsm8JgBoo/ye2w9xoqwLT0wYh3RGnG6aNgXUgO2D0lD0ZlZtRFJ+xk3alH9nGTtNo7iPr6Wp+vM1jqOt71I1l8ZbfqoT5V5v9nAXNl71qKyudX8lVk+S++uBW124v8r7qqDDGWCJ88ZcYyM1HZFtQU67xbO822fLMtxjTQjP4v5es9qS8e1dmaU784+dGv7qcr/yrC26k4kcbM7voGmNbQxTE6R4j27Wh1yE9qRNQJ2hG9jqztaGOaLIpKYPI1ez6gfTTGjIsgNtraBnVKY1jrxcvXhVE9MLgsShNqN0YXKtqKFpGXkSbKJq6Gx5QnfJwcz9wNX0ZecyZ6d/9ATYFibQuFbaKmbN2WqRwat5XwkZgG1D2huaM4eCXK/t1/dRi9Nkofv4Yju/a06BFfBvUx42e1pXwbTzd5Zwa+SothELu5vqgAzO1s68p82C0kqG/NNxD7ICvsSH3hLIUwTaDvS5VHQLaHreOAoPRGR1E9hkhUUKc40IzzLsSUo5OHjh2MUUsNsqGPhyyUSzXoorasFmgS+Hl4YKDTBIvOFdzH2dUq7+PbZ4vT/e/24Ykb8FX38moLGs2bzRw1XZAw+Q6StGAfFt+My314qn9qgbvr8FdX454T7HlPeI9j4yHSoizE+htXf4NVXc11auz759L5Okrvaj+IieM2Ooh32S89h8AmF/kRe86FHH/581c88PpPrwwkRmsnTN1+sLW/P8nLjmvcZYuRtXys7PFVdNEYeeUQ9x2rZJyeWNGnfEy8j9PeDizCAq/wyXhyrRyVCEBISqxI0Yt04I3BkyfU/JxTAZIwFA9uJ6AW5rilfiCxuC++x6zp3owhje+ZUp07M3TrYjDzy/R+x2OyInFhX/I5GOz0XdmbbIsY+wZakGFdMABESZaiTRDe/tbpxYiHDzH6rxpP1whftHQbwITNmq08MezuR6sRHDnZhXrKhCtume5R8Ml8YnSBejlSRxgPDZRP/EV3kDMmk1Q6rHvzKW1feG8KzeobyTbZPyzPEx2o882DGjwzRiD+9BI/dxrc9HLcY1vQh/pjzPgHnxlg5vN2Wfq6vlvVZ7HCs0rJq+c4b3GHTxh4OVK2OI9dFazPucLJvETCh0oCxUUDvgg+Nm6Atq1cEcr0w+dwNwzUtm1E/CF4lERIU1hP000FLKX04LM5n1ti3T6u0tRmj4GFTeAQIRBqrTid4QupBAC5HqqqW93I3MvNp3m+OYtVUge5J7vvCnw9b3Ocd3T0UCxBnOl8kvAZ4Q1maAcZIBp4v1pdmQnh14E5rZ59vsKPuPDCYYsMWCyHY9BNIRFXihm+zlk6Pmnmb6eCYZiienGU6OqLf7bUBr4D2ZBptQuNVjKuNmrpw7DwTexIFGqz504xN761XKLxjjnGNXs4jDI1hVkamGvprz6ltRNJYlKawKAN3Ri4j1KYdU0Uaj5wHUdt51AjDMBvaUq4piUzsiSAFrBZSaQB28r+mkkSQaId7zBUj7U3I+CvX+qGpaHjuwIH1n1/kqvKDkpKnNsm73yHk+hGqHX3G6c2NfJKEPdCs0xlzhwue1b2MVhkytT7AWTN468+lHB2dG6qzr8LJ2dH78xcY/ZOAkePyEIeZqGk8VVr2clPnw3dReevGHr9KRWIuIVSfjzcHPoLZG7be2c4loJO8S+djxWWmnYeoqJ6FJz35K4aI/CKJvzvhdtftt/SgiQiK1SAtwrTG8m6iKggBjWNsrd3ilULuNLlhZe0NpdlyRlo414xOVMUliXCz9KpkdAQWiq9xeOUfrNJVZiiVEnitMKIh2i+RhGNwPlkuz5PhXKoOS9klyXlhv2gGverL0dsleV7FH59m+teK+AJ7gF9jGsMN3Koa1b1I3PpDydLYsKs9cCjx9tay9LsiXPSSVJGHwFtSuh0Z7g5QtfcVyryPSw8oXSWHOLe+rhyAuItsFj73kFy7PHuKOASUuoAIKc0BYzSq4HVypZLDVo6Moe+HwkzKBhwZ06CUgdB12+rLD/UePNS6TyZ8wO4sK9D9Ub5s0Znare+xdhAO7jH9+0fmDz+7Fh0y7rQ607FGx4FfSVWQLycgQxj9vuZ36xINsoZau37Iko2nfE2Askc7PdT9jK59Yx1dREwwKHcEpbmCDtyRAtIhQ1GpOMZDevogRvv4V0rop303YH/FfIkTyRZSBddjMgrb5N5gRFivwka+dkDjbpv4HQ7GQYftuC494NKHsdsFz8PM+nlm5o+o+kq5e5XUG30ps7HjGim/hFZneYm+jkJ61a5ZimJmhQ5jU4SMFJUks0XeIRwDSynoQovWTq+sLgy/wZvhb5PprrufSgRztqj+nuzDuECblgCEZl6gWJTkfyfFdevHUzL6bXiZIL/cncZcTAiNv4ugjQ6duDuQTLSMp4KhATeAoaIoxTM7SNNF7Q8tZRiJVmfrNYlTUvelcFrcdRyShYdC70vre6h5aryTWPYnwt1Z6wj4sHHEo/PaST0J/BwC2jydoeLtXTKqBkuV3g8sI+4ipNLjtnGiDt+zxpPCLYzSEFIFpXlcdBPoLmMdfrQ2jh215PdrC0RsOHszq8rMj9vqMIu4pGSYUP9Xf8WYi/WDt1cFZQe/sn29lqk1s6YnGSR1MybOgBSF3I4lC/LAeM5F+j0ZYuBiZikRozfE74/gqlkGOAqqKu1F1EAXe3V6z4vwEW8dVadwNr29D13fbKTsgYem9aGoncPekHCau6d2XycfYxhBcaxgtZPL/I8Mf9bU7vjt8UiwzmrCwNFQ++dIch28wgeL1wUt9CdjnRbR+MZ9ZyyLfuSR5ldZDbKMtDtkbW0IwgyncsM+m3jE9Iddt7DWANRtMciUjPb9AGbxV68jvh3QQTsIat4y5evJStzRgJPXMQMX1uNThOsufAKLuR3EmxOBhzmrJNnB4SzsG1aX2qxST91k/tJX71i/7eqR7n/f9wjRwNfRg/kk6X4cjIZTook3vOPG+vXpWtPC0b46SUoHsv8MAfX7RxiiA2n1e92tE6xy4BkXmoV47n0dPYxgZZpGkbtDUl9jIdYZVodjkLQOaP6I7R7laGtjXGZ6yF6vpWvBG7Vz2DiZk473Tn7FTDA9XRJ9jxyz7ztUBqeNmGA5rkNcP2JDVM3qbKtGZ9OpF526oe+GpO2LRUz+KB00msA0GHeY8Fctam/Gpd8187Ygsx/10uOaBYa1n+v7+ISYKh42qiw66vWY3IfckzGn8/Pth3O4y+Ll4VOMU1wNNIWZwyCJYlqLu4qVORchPv8Ar8ets9zBxMLCAjoTGsN2LpmcGY6My9gNiUqiaifBfkEJ4LVqW7+fPH5nnfYoehidksQOLEXnIgmPoCGEH5/oyL5l5HbMJTxUrsdIdJQW+gGoBT1/XeMrGxN2EHrV/xyE/JUYt47ZjrxPhDjKaoztT1VsHN48KZeMJ1TI6FDyxvpYSSxgDjtXiWUq1ZH2BpqXyK+KmYGJ1Km0UgbTItWuiANRzkPx5AwTbrkdmgA9De3RjJDXUoK1x3Sp8TtnyU0CnpKPGE+mEIq6HGdpVXTvzzM4XQoljce302VLhm7+zpDMSfmCZEWmQxE02Nmv5OGnPe4aY1/mupEL/kUHC/MfdplsieE+VX0wTnfsNRhBbJKDLeyEi54ewQ8qXmyFMtGT4ETp4QhrCQZ7L2bi8oQ7IlOV0lg6PDX2NlZImIKkKy+GPpptnU/flhYQsdFnaCUv5hlHtTSDzs86evbhaqf4rABG5HjRDpFTzp+QkqrXzUNPZkOyYSewyZdx18wg2OuuHemE5pd8z81sbJWmrRPbyCM98gaCorxcJQbXbQy7iRZEpASOqmXLc5GUjX5vkMu+nBc/6Bisk9lZ4S9BnI710JKaGdRU8iqaSPsf6Gd4R0+cw916e24/ZK+hT+KPHnP4X4/0DbNeg3iF6vnMdGq8dc87hsLmMz9/opas0x1sWQkZExzH6GNpgJ9SPR6PmAXTsEZ65lYtTvng1NgwFd6LcbdBMbIEcRffeHA3gLI+vscgRx3sfqn4AubqQ3r/7Hvx/ajeBXtdnz7zhjOGfXcL4XbCL9sZSyzUN2ohHS06lzGwWfzYFxPbJHHZO3kvB7CZmDGP6FQR19dMbUxRQzVDzvHYezOPyxPZXML/+4dtdF8f8ROifzHvo70YWDUbF8RFKE9A+rr5OcCfa/ijvJZmZgvbE5onScAnJbinJShRC8cuEtWK5pULBAgsc4Ks2yklWbwIYP00GQ4w4+tqQE6aF9EfTumo7FeneB2+N5hsrrUnyISLajqa0s9q7j+VspxIL+eqHwo60cluo+4/WhXsM6G8X/ebrMfmMq5CwXnQrnzfzj3UhSqoP5wocuC92qn3dXSETKvMhaqAmUCMXl+ogTa/Q6OZIbxOT2YX+Eab8gMcOGTvVO3FicL+aZu9pcf4jvdWOxo5QajrTvS88PjAd8wp3Fs7uW7K85f7Rpp/P/WMomxX8VI5UfvGlxVh/PnTSK8XgMByS3ErOMw6zfpZW3rPBzPm277xM9L0iL6ODl9/7kMbLI6BPn60+s2xLmaNaBR/bYbnXs5mHO9ti5f2ySbHpdAa9X0bG8Vs0Ys4uD2eumSrLidfIRe7yTaKR6Hy7iWwS3Bhz9Z/f+DbBq9qUn/1p+rQTAD2zuSPwDw/b5DEfh5DHyjz6mluJf8UAlyKzX/krR9IMtpbtqpb2YdtetSbg32mqjFqbdlkGCC9ocOnMj87EuaT20nGevjaORIgkGmY0bkLn31ywUUbN3OWPlfyq45nZmpZTAgeiDM7wlKhYJEwihTcg9JHvb6Z6YjND6ZIskZDVhOsB0Lwy+qJfXiGaK7us8QiI+kP419+S9dw3UIQDOr8XtiY/oBKfP9/hcyxsZmPuwU5kCWkAcZBpeQDTvrSNfS0dVf1Y+GX2sZJcOpAbv48sasZFn465LiShEQ+AWRHZNv5VRT9B1u6Lfgee+x+uQzrPKK+KqKwL31sp7gSB6P0ME7/c1cQ4KrUqttU+Ixh9kUfks/y/ALNPtij6I/PFR9R0s5pke0mc+qEpAnZ2WBe73OxNrKR5FIkhru4fto2vSgzrOS0K1VfKJq0OaP4li+6pi6cdIgmk8hdIPPFlsR5ZzRxfhfEvjIcrfhdbj9e656lUL8x2nNye6YS90kEhzAt6SABFJzQAoJ5isHc3tMalxk6fh7iJf8oa37B7xyjzByzc51mv+KWXspJ6Q4R55sWja/DGyA6dQK6hKv6mIAhlUvdyqd8/6crFQzCAjsXHjR/K/ScgWUosW9ROut612MmZIw7TZ0RxiOuFUePehtMpGKbpWph2J6Z//NkX6/+vzoWFGCk1s5qX26eQmkPKwmVHpsKLWzLp8Qc3AWRnpFpHXK39vS30cB8rMzOgFoMD9RKBhAhdgw4MqtjkoChchMut21PpuqNu9bHIGq287T2RT4TsXDWXbfqCL9I4S2cnTPFPPQwjoKidXi0Tqeu33Iz8XZxNHQDxzz/3tcp3GTRhTFxFka7BzbxR9B/+QnmrWmHYd7jyNuHH5wPEMXR8Xze8pPP/avNNUjpkVVdZOXuy36/pt5YZsz7c9rSrAEJ2svI32iXGpL8scT3hllm8dZJi7SCjaMRVxauJz6EjRqfU0n622HgY3I2Zd0y1T5a2GwxOmg9bosDVonH8ThQdctj1Kccvh9IZwmgWU5APB/UveyB7dweIiid3WOHLz9uBI7M6OFom7luPEzs0WdNkNlVArVL7REJ3yCb9bqlK7miH86HbDSneSW1iza8r40LLPZvSl6gcvo0BdmvtHcbCQ94EmBPm8nbvfWxwk9mN8SuPsS+XeqIpl8qDu7RqQtdUIfA8CTwRs9nrrs9Jx87AfRyxE/bNwiGN8A/cAdxepMfyApPYre5ypsr5sxw1jigHQLgSYCEl30W5NnM1YPgl/YbsqY+xCE8xvG9obhXhNDJi53Mh/CjL+HJBVtPDje6w4o/+sOgNXoUODm44En4VKjUST4I498t+XHwGQHZPOC/dk99v0UiCQZ73rSDrP0kmx3mL5ry2D2/4UVU36zIyFIZmzM78zgtSEMJTVxFkvsymrAw8Fis3KM9RxmzZJ9zCfLczPN3ywjBDf1XVD/ygL5wcBl7Y/V8XzTxfwg0KWGDtk2/+Gxd45VBYhI/aFdW5fOUWGUran9l2Y6Xfiyx5JoNx8kqg2cDOCRmtVf38Biv1+/ML4Eg7vOSPmeLX5Epc4YL3+p0CJMM+8ZnTlzEltjpYU9oQlwRRjsbmVYtU64Zyhakh9AcHrUiAu2Cu9W1uqMYk5yUpG1OvXLKt1WEXdD4K6d0ByjKSApzkLNUYxh0hGPhh6XCmKyFfI8eV+EN2XpdSn9OYc3Dl0MRYY68TbOyjI89sAmNIAvb+sZbeIaZEUNLVa9C/ZIO/WxCXFI5ihd/hkYG564p2KFz1r8yjX/2zHyrANq8Kwq1KikhkzTWV2xoWZDyVKpt2qZtsE1b+KgRd/KcGo8AU81j2/ZvH+rfyXg7T8JoOINvzMraz+gXnAcbZFrVVd9EMpe/szpybrAkYqdO4ldOCQfLmxfmMZ06qFE+TnKNAtJYW33f2vUoj5R+74orZ03eGGftV096XjlrEE00iHiU+mxuEbipq4CsDoRuLpweoTDhZTnENgnbgtoH3vUNxBPc4B5UrMdDywPGoyXoHUujuZ09SJdH8eX9XxaG8EH6nyuw8TNZpuL2EWceEAwx/DB2L0eRNWphy+wyjJd75/xeOp2MB1WcRl/B8gZF3edc/6AGPpnkZzr1K6j5/XumIt+aQ5Icw+qKcKPvdgySIkLsuZjNEavpw7Mb0dV8owT7UodFxs+JlB0QWXhLgxEaiUTVVE04wrXMvg9RnUZbE2H1w5u4s7AEb4LEIYRQidYcyPkcqht3IQtHaXxq0Il/j02CZGvPH6CCxbzsJTxjHlhsVvyA9ks/9LkUfiyriDrBu58QkHpDYiGFyeY4hSCxhJeKMq0zLFs8uWlaDqOaHCs/JPvdYxQ9gAVqQekfB3m/Lv0DikXTrY3QpQWVh6s2l9sVC7eHEqHtMhLY7f8Xke3+0Lk57ca/AGCAoSMQLBd8hmSblf72pk0Bi6kaLVZZ5+gFkKFAbZ3fAKDtVR18h2Wcqo8HbvT3CmjfFlkzjh64S/DM6sHukhWodXcWhgiktOx8V8k+N019GdJ7a6idvbFN0eMikT9k8CEmk9fVZb2/h/I1gUhoSIpz7i+QrPfbNK5oCcxyD2CuSiC0Prw01GHDm3L76bvhFq1gc0TGQcguiKfmSiCYVTv/fOGFsHFDspDxtVa0K5u2QUq9pqoFNYwvSL1Zbw6mjAAubgf/Je1gd23YIWahHbTT7eiBv1RjqLHyOvJ3a8Yl1kIFoiww63us3gBsfTQZXy9gJSrUhm4kMlRCQnjPkHIakaKji1TCUy/861O/4Liyg4GPUPubHPu/pQb7dDoEPhXonTPvpg3vDGN45dEH9BkVL8uj90raJkLSOnttNI8Ozmv4XN226CQxGNvIVfah+fcrmcUJQUvGEljOYwqYKraArBVjxK4o8ufn4N+m2646HHWdW20DkdYJXCTQEQghV6hQ0CfUblVW1wtvXik2740+1/e/6WWejw0gf9nETxU0lr/VPxcnnAnPVXV6AFZvkYvzrwTvpSEn+M+FZio3bHNM/FrNFN4yBMRYsKEClQd/SFl80Kj0w1T1s9tF2Ncc5cUwlk0XCX8T6nOZEjQ2h9fjgOnDtah81cQu0Ahd6s2vhlmwQGW5oE3jS5wrihe3eE0c7umuCaqRAEEpiEEaZCrCZqkgan0gmTwhlXG6XK/bRpWH8QWKuFlxw20Lu0wLSath+XZcJr0b4X6BLGD0qYSlfu8GKXOR3im0qXEoYCiXzXZ5xl8gK8WFNjdIEk0Qv+206/W1YmzURXJf8fDeeLmRQ+zYZHIWAFDzg+keG6/0GpHeOyEuEvWbMCfoIhQU4oMdgAjITDZ4j8gHnn2xCmiCPl2bW0Pmy8lFn63zHRjC/Hs6jMoAn8VyPD5j/cI1wFrAcrLm509k5tw7k9+TZ5+LHRXuBjrtZO4r+pFnG4dpTl11Pti7zg9usoF/MwA34izz+TlPH8Z94HBnXFBYE4vzm8RbSx8p61hGz35qzmVjsnl6YYnN6L7b0jlXcX7MpGZgFXEgMlN/nN6TTR78BK4Awlk16EkPGLeClRVhskIiY4OSGj//pHdATlyyiUJgVOHkvXjtORGkaC6L+gEikGhpUH+mgg7LiCRcriukHh+4sP5gDQSgDIDsskBzn3r1n2MBUhVASyRo0KCGWVFhB7i5Aye0HGBQAMe/F6H3ZsLwpzTn0lxGZyPE95xEyc0zfvYBsWKvApad5KPMHXJnDUgADwAFigYiaI5jLeyK9+xnB7w7d+Oi53tUCAj9znh/dC1M+1b9r+OM2bNufU8M56uL0FUJunyE4v1itQXEOiCDnu67Guek1ir7rLJAoqFcoJncr5Q5qkBV9ydloUxjKnh0upxhdQ7JfT0hAUDcWd+3U4s2ZUhKgIcSkXs21va7ZOUAcp31/SwZEeQ69gc29dU0mX64C2FcCVCKO4s66OkybUkUgFyqnUil23XfLs0ZXkOVH7PHABwClPW7YoHMRLgmTGXfqFzBKnTVXUeYNYjju/JuzwBwaJDfrYMBiOMB+VkaMpwCVHZWYL7ONAGywVIJmSBJCdDIdOZ3HMClNX9QWuY5W3jY4+mwfBgP6SboqaTgzeRiYaB0nBINcc+2dRN898oqRJe3DPTdoBm3g1OsJyznNxjE++DR+BA4gge/ToJjckTVRzKKKBMdJQ413qHQTdeJiNPOmq4m2xij/zS5U7PwG+yX9pL+8BftiLR92e7eEWce9uKBH3WCxDZh78cgRhfUV8OHe54BFuqB7VW8vosDE9vyuPEsmRi/bGe72jg5ZFtxsIK5seFmyLVg2bnlRqMJ+D3dWc8jsYeOFiGtMmK+UxA44gj3w6hqTwXNODCf2QCUNMjv+EDCZiSEy0gGOyf4uanAJHZKABsARb2+MwLzBtD86zshAABIZN75gFPw/KQS+u/ZXy0zkeNcyhccLMvwXNSrYCwdCN+Ce1O1Bc+W7i34Jto0HobrNpHgwsOt4yvtgp9UlaGQbbzf6mYMRMOKlbGD99rMYbIb3stIkb3ixkKV7Be6XrFB0XBhwxUQ/M0Xe+awONnfc7YZxvszazEwAeve/0/6WuLfirGpvAU1p/jUdrEOmkJc/o3gPQZ83kvRa8q2m2yxftli17HYfUGinLz4Ro8MRi8BO2nk1+LNboh+0Hq8oO+pJLpBZH03gHgyjreBjq3/m7buCAMJ0UdCvK3nS3fSyR6dBT9OEZJ6xyiawni6y0nVFl8GAJPC9MNW7hFhdT8jZ35KbF/gRyYTZW+P85tp585x8UjdufSrQ/XZBEye9PKpoEl2syL9x4LNMvMLn1a5qibQKiGyL+IEpuDbatx3G8QtvBEFjZfFC2rSZrexSZNRy1yiC6BrE+XYZvbH5OU7fvuCiRFG6JeJiGla3aEORuiuW/Zkt/o8oVIdSldHBKRQu4keMi9HA8PbowHvzHPcF/huMccZFz4mq+LwFpFFxl9bKmhRFe78tJ4HmSRxrx7gHSJHcydv9oxiqQsVqQB3FwddjAQ8ihAPT1JeaZqzDk7mSm8ntMqMDzkp3EI2gNf9bYRN1wu1qhLIyWS9F+Y6SUUdas+xHPiRjXOta9hIB15bbI+7HXcMWOEUjFrkp8S12EhwPvZzoEYfapav+MACM9liu5wnVjFvpcUuEFESQBslOTXodnJpYlFPWmsAFZlJQazIHX4PuuF93Pp6tNUn/Q8z2dWNFImwyKDfIBuTtXlefQ16Yi/bfTFp7yTGvJ4iDOyFcfhRNrCzxvzDb6CQC63GgIQKAXLrMPHuYa1fKu7AjBiztaFP+M0E91Gp+5LGi+5/ecaJ0x2cfytUnu2mQwAWJFe9b9dUwqB2HkoSoapZiR/4+BV4Vuf8ESyA1/0YFkbqB5zZfB/d3UaboPU6QGYejl/7dbGVrPUCrAk4778Unv+DPdQifD+Sx/ltPVpd92wsJiZ3mcTtRdqb1/idmMIk9J4CmPr47luI5ZicBMh6L/5F2XPN+uxx3KiEtTa9/dz8SAchd/BUGp4R53d9qRuntvb6f/IkuvXfxWdn1e501W4tzoomQqW3CP4cayxCvCCXjBaB/qeJmwCTZVEDE3cqFsG+RvoWxCYmwHC+iDRZOo6WzJRgT/3iBqT1kJx5OCjrbJg8CCLCrr3VX3S71adbTHAItOnpdSGCfFJo2d6DhRp9pJ2So64lySBySJPdKtEtlEEORnY4/uz3XypLCFUcEfYQv2JcxbhPRKaYF6huQTSf+yLGRRHOr4oslcVJxYabOrXhOfYb7e7RV/MCu+ezYqLrIaOHu5cDP6wGDKDZ9/cmzxNW2uDEfju768MP7BuI7fkpJg0eBU+zPvt8MdXEDD33TzvuusdCs6uQXKsZXmJiad662gx43QBeDuNhZSTMNIzEMol1vqIzWegwj8JTxzyxPffErBHp0gNd4UTK4SCL20yFW0vxdXFzRMxjW6Ei2lTV13c1IiG/aiKDieP98cBaP9w6HtEGTnsSGzLEuxUeJFSaXefEExHcAH964UFIHPJzPuzxRDgAHObzq33ftGuTf+GQ6KCDGHjo1gg/rFp2v2lHmrO+VPDU6SlrXVqjSszi7/PRKewC+7GvraYC/V7OYw/SPdjBYTAVhHTnsNO/7knYCxd8+Pf940cKykoh76AeBqzDzV7zl+PQs9whilRnw5v3on2e3NWd8ZkRDBITPEaLycxZw8yktYuZtQbXnq61jpm4W5Fr/3rtXz+ur7WX939BkkrJAqXCpDkSDnnMag6RaIncHlPlYIFDJo+LgscUzNMiIGJnedEd59DhyxXzpi8yhw5fROZV6xyKd3PG49WhwIIUoSLMWoTU5jNK+prxCgcWDAC4K1gqXXtCrfHPI5+e2SJ5toHgy77qW7IiYBywY0iCKbhueUzCYgFfIpfNmp/kigoHpZQNxPYTGbNngiO6Ha4MfyA18OCDviWTSJ3GNwQDXjZ9p8UQZfRVH32vL92n3Y8uG0arIcs1lGP/GTgDEQdSd/isdvCofp+Uo/JW4h+YAMChAiHPqqTtb/vTZdhqT3VWAFuAPvgUiFjwEyknPg4q4kifemZriSrS5AvzgjhAN/6emOn1mwdT/zFstlp3mJY2rDn1Jup0MqpyvTKJ3h+mdfghISBS6ligFcpXOdalL+v7kn5zf7IePB2daH3c6anrj7uONbYCs6bJdEXfadbaI2U0XR5q2VcLk9dn5Ejb32y9eQWVzPRMuUiCGH1kWPnGmm3u8oxamNmxscu+XIt2/FosKXPCo2zq8vST22ABXeAnd3ACukBWYwSJFKuLXFWJJEliDiTLmiXpBTd9pFBeJANs7Sf+aREZoBOwBkiEKJ1ILBOSVMTro4eaImjIlj6iqF/XnlDPAIJtXciCmuFxFfLZpfvb+t5cr77nTvI96OsA7PYn9fqa7OxrIQnK3JrSJ/FV9h/P/ir1x1GzOCEN4hR0DntC1/EkIHuJTo7atSXfxOJcgBOD+Bs6JE3OyUM7KY4WqcDeKmCh3cAjOE2mbQsry83L3oltVDfJozmBoZzCsDV7FicogKdKSGC4AYxtePIn/02+Eb09l7Eh2BgRWxiBTFJY4IIXhbGFcPp1kCQRBbSTb7R2sqAwzWlaxZHdHJM1XnmPmUBsnxOYXPi6/e71p1vOBxzHkLYhsddd9pT7NFt7Dml0GCuPGj/x+FM0CsdaItVsWXshpHenUAYzI7ctJELd2OsGY0FEBO2w5nrPfSkBO1PhlcjTOTUr6kILt24rq7OmvXDmNd6Istw3nQPMQjs7jM8SCVbON7EQPAiuLDyuggk6BGCgRtIoGnTTtmbK0IrM7N1nWcr73Q9RTBvA93+BxWhZdmrr0B3B/pQ7GT8oYZc++6yZiI09RuxQnPYcKk0TrXLR12IiLPR0x0IzX0j+rx4rQl9RpJ/5lcDlVGis7A1UIuHkt3M4+Y/06Mg6ap/GWZgs9yVvJ2Bo6u8EC3GiVWRGfJbY68wgUBOVJ69jfLgd8yc97X1P27EWtRWb40RYy0ROBAb7gnAqH/1U4tkKjOV+/lEfiqu3VIIVZIaWatSa+CFwSbKbIVlPvCFaPVfl0ST9ff4xuU+hws+bdhI4o//rvrLk3c/BUvhyzzGWYNoLAEA+JOaBHQuyKYZJYkECVMI30Y3ycW2Y5ManxaU0+WqE7+PZiYFGOnn5E6Zdg5maMjHmM9Ei7MxEB65uNQoB2wmPiaAKvz6rcPkyqXCMBf0+BmxH+ckyYt/jyNKMszGlj7CiqmAM1oX2LmH1nCZxZXYJ/I3piUjC98Vt/Dh6yeCip61ZkMYiegrThBP4UXidjE1SuM0QMSl2WsApZracT5UGIZrMuyNOF2KVyJ9ALrQ9T3gcL9WHvmBFx03MbNkO+0OJ8nRWyLMjWoCYknqjyq5AlTorDKZIJ6pC/BC30zl5Qg/IVkiwkcvuOm0OwATuTrx6zeYi2uE9jVwxk809bkGSdb3+ZazcB7QKgbFJl5Y1wyCj/gmdWKQpOwRU77NMT5fHOaSZABuLGyDHjZKNsUgU2uSYlPPSdZ3QPBgpglfh4BtLdEqmanaFqDvzooqudvmbmaGMroZAdgNv6pBQ0+Jj26K5EsGtymSZNGRoprrJjv274M0A+saYhiqoLWTH8IpzRrH57S5erPyI1oqrtAu2MzvlNWugL8brEVT0KvRC9KvRsYP9dRRGt0lDnq8oNKfnklELCtBkn0xHrdcrMrCF+9QOpacOxvR/LjOUAN53dTEqEtCBOL3HOfCP23DO+WqNKCfE+NATutPekP2+DHdbQkwNJIBdMijHpeZZRF6i5eb5NRgWy30DFtVnikV80u2IDvHMSwmQaokhyqnmvfI4vHhZY3olr5RUX1xRPrKUR2foX8uai/lKAsDdAT+h8SvcXBzhPAGXxq818CvdktQTSwoESrFN5HHjfPtw7FkpUmZNUZZWVgbQc5l753mC6octOjc+UhDpkNgXOIRgckoWMLJlogSrYm3KPa0IudP6nPHBRWQM5gmJeLhHD5OXyGJn8H5/ehsqlcWaWwvTlQeeqE/BcukMRJldmiJahAfrPHCxuOF6U1VufX0Um9+mpnhfeXF8Xo3uyAFWkfuomZN2nn82d/CXkzEF+Edp62gvjv7GkKiue4ClycnpKlssrrS/UBQPc7y5QChBS+ZB2nk8f8l3IV7rIO5YeFVdDDR4OVUbnm7COlsLBZSCEvbvsuSidTzlE7R7CAfgwAKctAGYVGJ7/Ql11h4rpDMlD1XD+a0LnGrXrVF9ltmHOIT1GRLtzqpzVYEftapVkp2SS1EZt9PH7+9a4l+3mNp+5ObV0Qs3AyTF3UWXyeDiVnovhjk/gciKxYaW1e578ZqbKsrLTSqhdFW0o+9Grpm5XVnffE5SEqedFlfbbCNe7SPCIp6FvJkCwdMv5lW9Qa0OJR8wHm/LZmg0nHZlTsyyyOkflB5j4M0G4CT7NQG0pMu5ZzVJY+y6tnLa4l2fOzGfGHRhAW/VzSQK1YYubnYX2l0ciNOkqeoFpwMhcPq0YBJaC9awKhPHrGM1WA3PCgvOopbQvchUs/rWUQh3K81GG/XnExGQIrzbNboI867BvnBK59Ai6XMf4FXEf9EYCFJaVZT+xmUUZjN9Q4dQcXoKm8yJcLH6uLK0HhIdZhzWcjBQwSu7q+AWVtwltAq/qj3poa8cowY3HBNeRU7BhTu2JM2H3ak6YIvydp7qrp8cy/m2Fx/tIyf3hzTgcvP3fIP/znWs3NTigGetzflE/kyMgg/1IcPh04J9ihgtXRLj/JiW0BEHBky6hbaDBZw+CN7UNUsV3ZMZnF1xW9lWQZwOQbeLFkXUGugCOXpicBsKXXhXqS+vh4fKiA4c8baiKXxNq4dxPhzdks7N14zESLHSyVHcGCutS3lkDvoEG1uUL09kr5sxhWed0RBPBBPQT0ZgKQ9I3hDQaSx19rwuGtmG9HcO1oOE9CqAyQs/uPfOOSCcyNqnNS9sG9f/pcMUnQm49GDW0/EfRcKfL+Eyf56Il/BS78GL86rrhy0aLb1fiZFN+t+cj+dbF/COg0Z6zUPpcseiIIclaYRkSBtZ/YBncyIWhm+azAdekmDI2iUk7HQ2OPeBvSExkfZX4C3Txt5SqRnz3uHWSsvsryV03D0AHTqKVEzxtf9oyxwdMoK4mozSi18OU1C1u0lugt6cDqcbgfILWe1l7MyLqQ7mHaViZ1zvaQqdMUoWtiVbdoRvaj/4HQItBHq3w0VVuG+XFZyFGU0ryAVbN0BHSHN2fYHhjY081qqqs0ZPlbY64Iz6rFXEW4y/37DNNKGH0SL1qMImmjUeSBci2XvwyGxOEjYB9ocgI5f1NFlQbMzGhkRvZOigTaGSRF0tC+RPeEzLG2X4MvlqrFtqTVJZgx1XBQVMmjh7c8du87f/LRNN1Sd7Ua+dtZ8TTVY8JTJsChoezyvH9g9LhVI0Or3yVjxgv9qBoW85xfbiYe+MqwBICOIpTVuWeSWRhUvuJacOzBBf3jTxCAuNYdClmGPowt7EPA5yj8QVGJQ8XGunJUteVcrnqQiGEWhrFWlAfaxZ/kNWMNtoY0RSdZWCXIvb0YMUglOArfi4ZO6w40oMbXi/MOylkcVOQcQaMzry19ILY55oEjTixKgCtnbcr9oRag0YQy5/Leawa3vPF/TL7Mr1/y1IM3OFHSlu2sCaXDNxsb7DFRI5pyW5KL7BvotKerQQvHBXz2w/QFEWCYwkJ7tKpVgIExAYPi6xWW+PQjiK9PBlCzPZSJQsdB5j8mHJYonMzeQY0YXyfz7dRDd99DMkeL0UFSHc0bUj0q+ooFxTo9KwBaYz2oCAGX1sm075ndcZUZpnrijJU5c2AwlNFPcyhRLWzu0RiCRmTBwjZ/ejZmm4u/STLTmS7C5mzIRkKuPVesrpCE7NW/1L85q8YUqcvhb0hgbOduucAIYj9ZViXRktJfWNnoBIbXxd29+uN8mcU6jTfSpiFQt+UGnm0nVZC8diiUgSosnrDe3c1YZXIoXVY23IgBV99JGTTL4HqJW1cU1yuSFh5P7OapXt/s18doWRgMU4ZgN3AmnRPRsWO8NWlc9sZOeyvUG7TvYL6hixzskAEuO9Qy/UVOVrhv8QDn3r6Q1JJ4NZP/7WEdvUB88ZnqcNrjVgkXq19cO5Su4vm/gihsnRwxTnc58B3R7JHkhATdEZ5+f1SmircirJFe8s+ffdFuYAzz5NEbaOa68tGO9rIz/bzmaWI8LNfYJ1BVhNf94/Mzq79dRDl8b1M3JXLKYMt/Hp07yVMTmTDzxx0gxso04ovUv1WJS0Nui5xfjZuaq1xKpfrLUHjFNQxAJN3vtV4VNcPFcRQT57Zb8W/S7xOxgbP/7RuI0DGEfcS0c3jKwzJi0CzR621DpvtjmAzNzOLt7E9XF8ycOeqL4WALnYIN5KIORijbeMcNhc2qJJsOmtWVgyFu2XuNC5LQs6a7g4M4gdspr43nS5pgHAojbYZqLiGxSDMz1LAWncI4h6aRiA30IrfsiXzzfzoYiUd4tPHpBokCvlsHWj4Wu/NPO5eIJoZrPgbXSVoh8TLPohfA+QBwFzGz1hPizi3EwA3upsBqwffvRq7PbHbo4ZSuMXwDXbP2ta36kwY7TTC3EfYGhiDi3uXYswsosGUVL6U6HjkPpAjj2GFSt3CA3r/bxaF8f/LiG2gPybSbKexZDg37bisCGBvyZqj2N1o5YRL2xxSjh69OG0uT52d8xlnvQSOmGJo+Fx/8RhTwvqNbkN1PcdD46z4I9ER3yBUIaM3QBOGS9obb+GdjsBAD+zTq4XNcPTsrHdgP3kzdXNTf1GgBHu/UtB0hTTNJd7X605ZIhHFP1Ebje2yAYryNHPyvBFr0osGOpu7/0f9BmHx4IzDnxacHUduaJNgfQ6a0a52jigvkZwMaHgHIfuk3whm2LgXDgA56IKLhi3XMgJCb+WYhE3vJfH4pzTEZGGsb+sh+BarrcSCsJLJ0HXiD3bVcqucUCHklzxASgVtFlS0WXjMIvsDQ0zdIRPZkdDzf2i55xJfXLt/C6sfslIJxQCkGReNszIlESkKb/Mdg9y7wR/mwiUAWr3SCn7mbpWn6Hi03XBJauPypiJ+tRokNFynQ3KGnFTlruyRtAPIXCIWxiRxwn7c7XfdYHP6tvKa9HNkK2tmprtq6BvQrqjf1jFW/84RW5CIDTvzmePhDny8PNAkuoBhxDDQT7LWT35z/DxJj5SZmsdV7kJlaJn53By5npYUMgGip9jE6Fz1cdKmM9FyXGDiuatvOifrlnQuWCrqOLJ5YIxagutlYUVbLbFgh53q68VV3OtcL5PxzVBQETrFTUZRTQlCa0XKTqb4O0J3ucV0hnONygcPYjIXQ15oVdlR+dMwWRz685OGltNv0kl1xkYqLTWLOLhotVeRiwxIYFvOF4TEgNXHS+3ZaeimjBr+njuNNvw9AiLUxjwO0ihVg5dnx/nPQYkc5qb0OA4wmajVy9BNe1rKkwAXyGzItHOUR07jdxGe5ZPUGAYHIPMjkapLje+sj07ujZ2VfPUe9sz8yI5+DJhTzEdiDVBSAczVeaOALiFaUfVc3tEjGwcBbSZ4EmiU9nk+0rAH5+6t3pCo+h8D81y5HgvWqOJFVBekohXZAt1JrnvsdQMvz8utfx4HiirLhnieFhJG4jkaykMt9PvkbD+RAmTT6TQaycjuZurRCvqX41JC5BUx6ug5ur1KRiHs0rdqSOOy8SBGye96fy9kRxGneR+MMOQ33Lz2q/hiJT4U1EGdyb7FyvBnHts2JNUResHJFrDDd+Z1uBTmsdvosfEooxlLm9lrPDfJ2G4P1Y8c1QRgSQtU/4ypAa6dZ1RxgJmXYDTruhaxLLSBnckkbsiHSypWiT//uw7hIv6TN3eNT9D+QLl+3j+qhPfe1nRna9G+UW+eHZfeCOegHqXTPVFfZ236Ui4fgRHf/A0Dk8Fg3Aifax3Ydvxf3pn3j0sLFb6uHPHoPA0bGqJvv0eesLGEGTNjXJ04oz39ATair0QTR7NkQv7RXYXCLF+wXEnjEhgpHJJJBgKGS14gmyHZ9/5u4j3ZrgAeoH7jdJ3C5JwAJzb2vtY9AfDXRQmXi00VnOwRhPEtCZKtDd9KF6WFLl9P+ZWVCd2cymfYnPlaqwNgldIeRVsnfeHU+v+mWfFcRkrLCuYluAKQh7bsTXgpzEzXRHiWtr6cONcOi4r7QklGAuHt/BLETWFou78n+nEZRQyNpzrMxriQUCtJOjYuJS8OA+wVmaU/pUIgnfUdDlRzEGXbxmyr56Kr2O/vhclAgbRimcJPByGYWs8nPzbu0/Ttb4AEN0jJkieTm5HC+A3Bi0njKDK1uH1IQiL8aboyUBH1HjTtkSA+f3q8gKzPDP9Qkew12ecME4BgVEDFkqTJGFllZuwSwUmq6RM9XZGG0Pt1Nhi90icxPKSuVnrV9WocuDFQFqEqRiziRh4/XEhfiNWPADvETsAtsQujEfZm4TfaRdiju1CC0k9z1BRhIf+by+8v7GdveiSPQ+IcW/nvgjYnaRDBXXjamD3PzPt2ywD0iF2BSRXLSek7zXPHRn1x2bSOyaX0tFcthe7cF29IMe+cXbR5Sq1IHy5q9nBdatf9aEDelRqFrw6uGs9DEzw3rkOfULj/fgStwa/h7nqdtl1/7wTLjnKgJLwxAEPj9KhC44LKSlAW7zSPVgK4MxlMJYqfMHi/LrwifcrcQHJx5W9Z3MmK1/aPNQc42B6L48J7cPD6IpxT1citkuh+PjqmuOfznxj90BNtX+pWuWw/yOLj2kVy/0lGzc2vmiIweq8DOK6+gl/OU71gFrETJHmXqB+ftDGsfpsxNB0vssXlsYkAQZheHK8Q5rXOzcL0eCtk3lyDAUFeewsNZxVoWABGIaOwlBjk5/fjxx6kXQbu569VqthKi3ur/a6ZP6kbqd30W013MH6ExL+JCTA+x7CakOaHiVLPtL2LGuHP0d1hNJNt7MtWHxQr+DCyHVhzOT+tniiHRrK3P/bhc5XWRoq1/yNJDF2ubqm9JLn9d5ZkCtgwNOAoviuSURzWuuWBxPXYXf3CXnM2kvYXuDugD+ZEHpaiA2hqEyaQnPxVDLXa6BzWlBkng8SsWyt83inh550ouMDw9nvRbUd+2N+oGaCr+LDjTjT4qbxGZy+ydku8srsF4POPi4zlSGyRKuG6plDnBw3UjZqNqLJxzaHvyEx7aq2+RofzoRfJtJjmjABBeNy8dmb7g7/RP2JKNVt7iCfH+aFWbzme8W48ZUX2I0W0Kh/7+c9b/bgQuMK/y3lV8L2+7vJxFZ1q0s4wjQFZnTlZ+V/UjjCXdINmUYTwQYe8ibzJAhFqdpbRCIYRF07t1YzD5tgRkoZhsd64TSFomf6obBkbYDT3X25dOB8Ot7jrQPaqcaGwr3SUY50cjzGuMZ/MCxGCWw/OcaO41UZW1LQlHmAQjWByGrRCtsJWbhGC9ZldqT2j+34YDEzuOlbtqapS39V/N1h84EPmvj/tovmNcvWzcc8vPTYtmjy469BHfDfLODazuzFtrnB5bJOBz8M0x1HvUXfbVyZfpog3f6oH8sXwFvw0h3ntDvc3byMpW4tBHeMT+64LfO539alcZaXG6UnpKWdQTr9cvybm9PzcjoMEmQoeTDRpXbooyyfHcCGwHuW7c9Whe2sOjptVrHD7o+4UUAHtLbfAsIMSupxkKcINpBg8jx+wK8Td4t41zXoEVFq4CaesbaE/c51c42L33hg/HRrt2LSbeKeQKa6mvm3/s5qrcUqyHY7EfTx7eIwz/SHriSYHt0gkqls29zNl35rJBM5dl6VkJFfdmfrZkCl7wxPZ/Hb1io4KXHRoQKByXUZJvHwW2we/LSkAmMiA85lhKJ/abzvTbYFsKHYS+StHdbnZ8Qeu5uQJEOG6E7ImBrz5M3OclmXLxz4gdfGf0eYJv5aZ/4oxcXW5rh/F0Ax8o/reiPHdtQOd4NeJEeKVhxjRvb+ryKznJvaAXKnC3GP/lZ/A+AzRG91/ZtpWjIO+hOatFMVtGeCPMkU2MibdklN2gLQ8+Wg4wT6rg5cyeEdTAmX/igocVga1+hCgiRmGg85ikrHP7Ch7pvUZEacYlbz8G+sKR1VbhFx+fbu2x77EFxs25BgsJNLlAXlhFzy+dm4S0KvbpTEvF+E4biD9jswnF0EPDVfeaaz+HdhKvJNinsA2xJf8HTg2sYzAk/bF6kXbHBj85OuoHhzC2SzqrqQ/3K5dZStasxDtcX6jRGGkksu9OSO2ur4Ge/jbVvvQWCp4zECi51Puv4NdXAbbx5rHhkxc+LsuYEn1AAkTa4dxxZVyoaC3MCty3FzZ04f4wkLIHFSY2fJy7+g5Vz41ngR93sGI/8KwCqv3GjFfUY/hEaePjUOZin1V4BsNJjWroGDlrGRv9SNuCcbyBIZgLGMXDOGahigw4uJjRPr0lHxkKW4NdcKNITkUk3qI4eFw1Zs8JCRnf7A35vp9OCeim6K6nCGfu7LEemdGX4eYsM3yMaP+fTcRrtnvGvXduSvDUWs8kQvAYW/JDZ7PnfWtHOFmiUjvR+MepvggBB7KHg3td7TO38jQjx0dWvzLwFLZidVA6xNysM0xtFQEs9D5i+8pZvSwcQgQhb0F3EP+0mWORaQaBcVPUElz9t/smVef4D/OSEgnwICSyIAif2VwdWBFFRgA/eFesHWGbjNu909kT4Ih7bNjjYb31k3ffJdoz2eflkZeEh9zkIcgrRpKVx5jmu1OEkLyvm4N8N/M/Hdt5Ydo7aoLTdsXVw4b4bpmOXt+7y5iWE0nP73f3HyUD5C4vquvKD53fFxLEHQ7i2kUdq7xnrxLSS2ye4ZNm36zTHnl+EcPENogbKL+Cp2JDX1UmgiC6VJif8GsIbYBeySm2K5gJc+AIWQhDJFmenlEeLyXFljYLPCXW1bF4Mblgk2SF9m214mo/PLap2DRdN9Wz1CyRJwfpMNpuXbB2IVyc326IfjWmNm2QrgT6pIJP+SotoFv3y/PFbnk6PnKzwq/eihdPlQzs3JMqHWhKlyxhcxGv1LFb7uqawJXE07hp/Tn6C0xDO//HL1Kaa4OaUddeS2SB9IgDys02I+CfoLrlmue9vSAvfbARInOdxdNv1Hyf+NCypdPL/1Ez7W0oL/yRih/6IPFGNyspPz0ym46eFUD4Dh1TM0s8K5Up+Mp68P0yUrob5opOZ//5OeKA0WH5IMtsiXwdrS9T2fr0OFP3TQvrW2eKILzWO8HKf2fvUYhC2TJaHioZzPTRlfRJKOYqhPvH8BYZoJ0PqSZFiJp8I0iINeeVIVxj6bajQE7MyItzniMMZSBgYyPcmQ/2cOkWGgqkJQ59DSD3i5Hpoq7gAEZ1PFF0uFFqdV+Z31K5MIjfS23LnNuEHAM3kfFt+xMzgkUpMTAojpzNgVNgKjVp51s/A5n6ct5ib+Vm3Q71+XlxDwraG5uHjTSmhD84HJJWiLmw8bfmy0iZfJiGs3oYRSKKV1kIMXNydyU+1itR3wM6ljwTtbpNPFzb7MEmhDc4IQS5CA+4FI+5iBz1JfpmTbwKV+tgnRFS+wyrK66YZwDqvE5LjRtZfV44Qf+uq4Pithc8xCnV06sDoGO2jX7S94xQD+9YA/4ushMe5Epv6/lwv4nlwmQjTNhSP/ronmwXV1cs/tVDSJvlIHH5BEe+DZm5OD2L1LTiXR9/y3O2d/QRyyQiJi1hDCBxpRlkNgh9Haug1Yq6MtGTAPZP/OGcUL3+cc9ZKzNfEUX203mjAB5LO2LOOTprREkzwjnB5oC00mU+g/gRJVK7xlb0HcQ0CuDv7twCzjuGlBc+9V2Mud2Ai0tmIxaZQ8I5rBFzGYQyTs3KnHh1JL0mEIrqhUGzOAF9F3LsDt945QDwOG7Q7IqzTx2yH4Ny6TaiwMjZP3aPSQCP+11i81NpHKbUG24w4cGlsnc998M+fN1jJHGJ7mJpgZvB6lxMeU62WDVuw1XeyI9lytaUp4YfDaHGuLv9oTrTEDDJ9uzOZzs/HuqMftb94ftcwD4jqwWGBuX1yzt16BjWt8U016lXBNVqs2OvsrAPwK3tsPiavnoG3Z0zG85SqOa0myPhaQ4SYmEQ7JTRm0nYns/SsgzTLN0/pW96rlAg9RbcRxcU8fWZCOORODLZkAt7zGLDiEX72hiikSLdEwgwRueY15wIhq0uXZVZwY3LVZq8Mm1yGJoYAhS6t3hu2l4o1hFSD7bmhgheIUo9gnNfPcI0SpNYOOd9eiMF7rqwJdwo1zCeUxsk6zms+Obs48SM48JDRAkYWhld85GJaI42eQvjPwDf+TD07nikiAal8vI2XKA2PMZRZCUDz2KEHsD/mmny+LepVhoURQng9sMwk0z5ImUYf2R7fMU74ptuGcA80yGIwT6uDckEpEyUew96pD3HK4uGsOHk6cbnvQ2v57cbDkiGbAdbyy7R6Gvsp8WJsRHijp7WgTAx5/PMTV7WYcCDWMa/pMSaMR4bqeIF0FxBE6xHnkWJVRNPJaJgFDCCtxw2YD4Fg31L3LIjdqcYOboVDPLAJJFaN004Sgihb1/G2gX/eDhCLBw47NrrJBC7oEHUlqvaAKMHPEybZNfo+l1fyi0n+y4wxGGWcf9V6g96LhwElvqCWTvxvZ2c2MHtLGOkjqZ+6rXPXeO7ByOSXnnhZljI5rxnXR3kY0DjO6mGX+zX1Ihl3Pg8j6/rJs5yNYGVReK0EQqK4aDOFvzOL0wOeHWL+RFPkZ+AzwstkGCchFCMBCSl36DbtB5RGOJT3rBbyVKQaky1CNCLYLiuHNwdCCuegfPogP0Xlvjai+8C2vdRFc72ZGIeEAs14VNq9ehWu/ys8Fx6IPq8LqyL3qqLPp9goRB3wvnRgBeRJQzd/jgr0lkkcyAdTHK5kwGiUD2wagZ3jfwc6UFu9T84knyMXsz2CdJfX5e1EhOVcOg/RXjB59y3/FaWnCA4Z03ScjX7CvU9OB3sBPyqnvN2X13GjGepk2Mghie+CtBtZnEGJRuDdh8iJA4XtAWTMuNf9ltAmODCA09vYO6zUr+FTGMfPQISx5OYb18azYr+JgYaGyUSNcqzEabOqdxEI74/eckn6YpUkvW+fqIpQ0XLL0RuybREtxJIHq+s6yBl2QBKwnnnI4ecKtjtBVRej2CbpdEbq6COlbQiwax5L7MgAsGTBf760s6i2CSykAB58f47cuWDSeXRKsFNdgCyB4R267UB/nmlNtvIOL37/x4SDicQ8GyhVn1DhL4DccVxAMYF3wsNLP+YqO7735JwrS8R7Llvfjz8ut95vifcD+YBXl9EG/zbwE7tz81Qs4/PXZb4rj9Na9N9M15D18SigKfP9MKb97xkqUiBgBeztXA/w9+0Udq5XxCaV0UnTWWzDe3P7ZnBxyas+qbWZEAgWj6kZfNQ4TWXCbc3S4ZJiHHx1rwmKcdAcd8W5goY4jG1LD9Ov8XffBLJP4EpO3OHDy7nAAsaF0yOwh9dOs+H1Lym32FT57D6Ur+Cj5JuTia+WBK8MzgjxWzHv8oxKU3ec93Mv54x8eitqdaK+TLz5UDHOE6lV5Y8pdk3maZscbrFLBL8qGZogg4+9Nith361RyQDkQ6PjIqEBvhcf1loB40PPRNTJc9ASx0m+ATbIqHkO48kA/7MkdJtpmiGmeFThyAjMshRWhfOgPM/+efE0iw2EDNeBxaqT/oPM6BEZ691b590wSMRf0T80Znp0zFxABARjMnY7VTMrGqddNPdOaC6mJ1Opalot0Cq68rq85dYI9w9ec/BFl4k9WsDSuCkZqiiNrU5vqTCYnhammXE1Wsn46slb2YVCZQeoyjfgkdEvXzQRxWaT0V1s/oHnQyJkfrr5EOIKwuJ6ekUUoobtWHCDqZANZFreDe7YdpBa1g+eCdvCL2/3D8yyqHzPWi5gCBMX6VxnRKgAsagHIu0F8mJ5F49QvxzLaBWcGDuHh2wzVa97Jr1gXwCsecv9dWxY1Bsl9FT0Ay3hvjO5zLUBcqgFziIP/MEuOY3BfEvwsae4+1wLMpR78bGiO34ij7PiwX9NeJRZJcKfQwbBoCkv1EbtoEnAJKzUDsPIGuvoVmdZn84AS6xiD5g2Q9/JM67O/V1ihTmhBGuS/htO8pMBv+GtcjvRgnXRN1Glwgdgr/7o3srnNOfRECIBwndNaHtQEU51NlPBBbiZF/DWlRrPJjcRc/FM4FjSSfMrQj8L8g1nGjIFzkIOpEkL4qgjzrL8ojvFYrPJIQuoRCFjugkCLN+QAXhEBtyhiHtdBwKMeAX2NxK/Jv2isOoQvE7fgOQPM2n+Z+3oNKyGlMc0CIsHki8jX+xEcfMN2meA6f0Po8JzC3f962erDA1xSZBRAX0zdpAYVr6Xeb4JLQH74BgIqkvbERSUWorZROSfy3yefdFTIcooPQFbNlbacjaoT4wIz92Ei8sdsKqanyDjf1aFBT6wdB3fvAfNXiIAXZ3Uyw30Y0WDm5J1ibva0COwUDrcbMnXGyUWe+yuE5s2c0Lce3oMwJvEMYPCQFk2bq5yPhsB1wb3y/euOh+99tdsFL5Owra/pUcN8qLkynaeV42NzuiL8Hrt3dlbYD+rORRlvRsTIdphpoKC7r/h2Ll21rg238CKBcICgAJ6q2FmIzj9Dw0fUqwbVdrZYAs5ZwFwFRwn8ruf4yr63U/3j7XILPn3rroGN5q8UTrwfpMs9VCILM5cMWcBzpGKAXfj0EufleBlN+ykJcPQoNya93KyKINC7WJ8IaK/w41zgirig3v6lER3jrBcqAecfko3AvU1+sZLN8f0G7uqVDg3+h0FIBclGPPoHL6kCuj5h0XeKNkWVd1bDmHSGy5kwy0Z7S6YFeFHsNV3Xg3bng08lifYR40er4nQfJoaTXxg5YHCpHGOfKoyk1lYWvCYTg03IyQpzG2JC+VHlE0zWM544zxu5ZwmKTc3e4AaVOzYYbJwpx1LDMvX2NuZly3UJmqJmzHhA6t82oum2vlADuy9B+0k1s/JALIMXSbAdzOwQ1q4mENBhfX/LJ28vHDv8vD6Ps0F1T4nhlvJOx1NNT2CcNEFAvJMXmqioze/fVZPhs3Z0G80Opv6q9J5RlSpntNUR9SCQSQFzFgqAsc236eMi7GNZwEwokLRbaI5vE8/mmDCtuG0yTs1xdDp3B0Hqf94OBg3TMtk7eB4zEuzI7JxO/sqlFQGBwsGHFNrBIPCYXyXdzPaRnDPBayK36m9r8RvQsqU7C1PbhI/oXirRme83OnDKC7YM/T8Y1pW8CGHL943Sishs/5MFIMx5kaRbWUOPGi0BwH6ViIfR0fgc/Wbk81lc7pcDFhN0QQ2pfSnUpH71BZASrbYFTpOF9GvlNrG0TXl5dTVExIIsxXg1ST+2J0/rv40Xv2/ZKH3X7RHZ3ERi9e1FrMafZRgvJrrhJ7pVmMP1AARfoH6vY11RN6bnSYpdwgHxOS9/9yFViU+eAaYyQf8ab2sMnqio6lymqj1gJcEMWYfFq5JrvC7wZ9Z6SpHdfWIGwjz30IpafW2oAy1gde7it83j/z3McLENtht7cYLs5c0bElN3aqauT9HJU29pO2RFwtLGxv+ylGx7hXHPB/hr9dMmf7Aj2SRmI6sTNr7smRj4lL3mIbgBwLZp8adTeGT3EyerX3+VBLyb45mE/jMU2ydJJlck4PbSG8e/+zB1XiHd9Tnxdvlgv6LE67TLA2ir/cNGrH6xN4FsH3Zaeh1yX+QAV4J4vaHcDLRdTqL1OtaOGglQ+EoF3F56enN1pXVlEK+TDv4T7gI9gPFE1E5K+u9QAo4rYni9jvtqzN8uM2J2q2xfpVmYfIjXZ+dKvClMrhhRayQ+9z7gyx4xu+EdH2N/ATMaU4bdrakt799Mr4jVC3QwI6jQoOiu35jWLmBCc6K7XtD+a+ci61cYcPup3US3tF0RovY68J+zwr/4Cgl6Af5/+jIhiEkrYPbG0QOGEc8foRF7EMDLhQC9K07Ufo3Jf5QHpo+gXI6I2w3r/wEIAknqWYbdXwREdVwuuh3m0H9CZ7BT7+iuFzzDE7VdUeL1UfH32Y1//c3qpwAvS60AMxulYCHAb+laSIgR/TZNE+SWereacJ/vbae77qs6In46YQ+ehbkOQm8VbHDaOBCRrVNOOVn5t81K33ft9tpH+IuPvYSLSwg+1cesUVLHbUz3SC7j94/iiivyUTZ6kmKeynsRiKe1NwPNLcqFQoAYedDdvnB+LlTBh8s8QXud19LJCIz/rwM1J9HbYMOD/dg5hSp5/m+Zv4u0ORhygGgSYZFPcB8QQMN4j3i4rEn0nnx247+7ocP+eldVZWfJHORqF3J//zZJ5Acgl07g53k2SQbvzXvC8K+TVIBT2sQhNqFAaNW1POgBubp/nWS77Z486KTH89HDdkiiaNAZSNDB6JPsgnUnEPAnuQSNL9tkVCsw0v/mJJZZ+AlInJz8a4LEpAzgjYIzD7FRHaBbj43gQLhN7Am/898LWe+NZk665C9GYohfjHLIvpgws5Dwc3oi394GV2nhcCy/yvc2dH5KbGLaNhanWBxSqDNeCyj+luNAUpbQB3H8ZbxCNZnZjReKgCO2F8oEJn7zCCw3X6vVxErwADVK4+XZkHpcLS/dDNQ2CCV5ik3N4sZlLDKGC9qbByW9wLKj1sJTpDFVS21BFYGvhGN5B1J1kxgGazlF8nuT5foedGsYf4DWCCvfxKXmOydF19XO8wulnqOLDRlFg9cGgAa5p0D0oQuXbruLTfJmcyQ+D3fZtRBbROhpAaOLFRETMtm+qqbxfuJEELQLcJrv1JxeHsjivv7pMO4LpY5/HcCkO2mtz6sbsbvd/l/Wp0Q/Skd7BRU4QG2eNInSXK9Llxo09h/d7uZ0eZ5DBEpyha3I7wzPXKud0cygqBO98WcmkZ02S0xViBPBUED+TOPfYrjtxB5TRiDgLQ4T9M5C3Z6kwJmc5I9CQ6/8l4rwE9rIgO/SNB4FdNFFA8ImCn8e7yD39lYO0ixOoEtJAFl1ZJJcjdNwbE9jf+/PvZaGL+xRNb+9k2PTLAFRxa6ZQd7eGU6RLRmWO6dwDsxUQ4hOhTYqDwO+qp95UmVAU9SYXCKHLpZDXL7WLncNG6RRu3TD/kom4PGUrZG1hsTsfU8WJN/tYQ78UCth5O7eaxBhU9MsAGIiv0ellvQJpaYbzz5wSDtTukwOeeQ7Tpr6lwhIrK8el7GwlpmySxFbRas+GJ3+OEsX4LNfav0sxHy5YojO+4qcphLnXcoNWfIJoYpaFvcGpZ3giLUAwiQ7NwhzDBs0/yb/GGusZXZm4lxnP7ks+5p+BmDyTGnfQqJ75WooOkfnaZelB+ZrlwHztOeK01SDxvG7Apop3vP06MJ61FSomGbX45d/dc0QjLCXRVufs/kUKPPmPaei+m9qU8TWMFGqCouqXjjrrn2P/2vXBMYXsmX1sYgRwyC51HWtehXG1aE4tmMgI6j4HqvNsYH5Kjv76Mi4IjWwJwC+Gu6nmqkVHg/66LS5WsDlq6GJwjY2kWd9NIJe9TA9z0Vw+MJSwxSSPuncfjt71HHegutnfCFSiqkkrl+/5LAhubrdzVjt89UN2VsXF5NSufRriGEwLhEBcED5kAb9BLuKMzorH4nfCuz56IvUB5/dklsq1MgsyLw+IjDSYaCJ8HbHBvNOStj409x44G277bklgjDZ1+Q22as2+Nu0HMszELsSFNakoh/sHldqucES2PuLCnA7aRXEvLUqgcQ37YuZVvCLHUo3wPNfzXVqA2x/pqLaYxSoo22gj3i9QqLoxvXV38uRO3FXL2yPmLgMjQnO7eYyQBcBXXSZi1st1gN+3E4zIGIursGV2YMHatm7sjsph+QxiMkSh4Z6QdhcHsTQ0TgI6CJDujychgv1IFApXXJdbvwf+aZbHw439qmuXhUzampV9Pu9164u+j0pcWfh4Vj8/ybzcHLc1JahsrpGeBqhTpTMaXVAbI9VjPVHzVkPEZs4e011ceP2ADhmpaqKWwSzhZjr7r+zH2W6AghuyK2wzdfSmRJ+yaltF8Y7vB+eQcIpcoiYqkTb74e/DqHH6jYqMbPzbNMPm2y1H+DDRKAR+lv5y6G2Vam3UUzvGDExljTieBonezDWXOF86cnRC5tWAVN11w5a/tTsbHruDH27usG5TTgB9kolEW2ezpcrdOMXUPDGJEPIIWmJ0lHxn0WfHTlArWxs0YQYYYylylgHOwv0xm7Z20AUvTISVtwlqbsD5121043lmYGkBMA6mJl0S9bU9+HHizn8yro9Kv5/bf4IY+w7si8f71fAB6KlPnFJODMbfefII6WyBjheJmQNhPOsv9Cv68K3x4r3S9m88//7b/HR++Kq5FIl6Tyv+VnRLubfpzWHE/r56qEsnxtg5/ery/WWNFEl66ru6t9eUvcDryj4WAmyysFQOD3o4fEcPw/FN7Wp6Qne5PiWaD3tgeZYFiauP7TSkmzUZjO0nmEOMV94p9l6XKeo7EsMzBXAFKDcEycyW7enTlTNHxjd/awAe8SmZeJ6Tq/UbcnAVDnPmZMCmyM2mlJpN6IgtENr+aFA+L3DFx2qaLhoHavAivPiFNJ5r4cJs4UflaiYeFvp34YviEeHA6WdFGEiXdwst6nksSSokANBAK/HdxRk+ukqHEFSsooPBx9ZRmQpWEX9MAPsoBg4weE82eR+Hzz/o8eXVx3qSqgqNv6IJVMHORq5MpXDibKD47Hgrf98482ZvS0lx59tFZyBiEhB7xA2nXxOmVsh3FrdlWSHUp3tjhewjNcdR9HPYF+3MDtictvZjI1Hd0gcgsxuqe3h1esIUBaCJDi3KJHKfYhEcgA0SbOuI6zPe4WSYAM0Utn/vT7cUt3R9kuHHXGpU+mVbZoPXq/mBEn/CKXzjT8PT9Svw/l52eGiuYs4ZVm2QMAnHOypgTfr+1POY4SXsxwaRtutaLITZoeD6zh7vrdtqoejrqBXMQpyTgpLKkIbmvd8Qh2KtqAg2NGTyBwEF5P1iDR6yPhmBxFO/Kl2iUU2yKG7x4vrjOrLQVOMW02NdsI7Wkyn1R0w8apJqoQpILNuXnt0pEvqo+hAzFmxycM6ydhLbo7my5eNbYJ4FtDOH/eSlmZDP6K+0jCNkRvP2qrjmaiocH27ZoXSxSMtslj6Y8F20A6rj21g7reB97VqwVQzt8+hx3BkBSZ+W3nr4JrtvzVmuh+X68t1nnRzd7ny7WFvODwK6sb1teynpytcbof/66OJj+eSANIfNAuDw78Z73pSVvDt7nSxM/N97I9P5mHs4RjKeqjvH3hLQ9B2yuRxYrGCzSdk8NhXziUmS+40ZxeZGx2efTBe4uU5XKcfbfJIcbF34LYFTvpx4GXNGuVT89iK2DBUjJil2bROk0rX2g4gAOW+vNFwh5zivwjZs3y65c1OxyaElPd1uV/HQvNB0FseOPz5Yw29W0cTw062TL+guzI319PP7GEtjeSU0nDK399wA6wzZXN0EfrDC1ZYmfKJEZtiG8psYTOBEZPNc/cA2AAlKQxjx3s+sVk+js19Nrzvr5LVBeoZPpNDtUp8DfF5XaAHucOMtqFNqcdSUf9ZfNiTv6ZftxvjQH1Wk35qqQU0sgo9BoZiUE+P8nHOX+1cQssXP8OUSLxAs7dImVgwIbjBV+B+jeARJLoIAdr+kr/1xrdiCH3V230h1vTecWw0Qu4i2G4HIcejk7KYOccC7jKWMVFnt1G4vIXKtyOKo0IynU95wSA3EZTWl3P3qt4w49DlFuYJpzFfA+jA9QAEM5Td1L2JMb4hgIxhwIsG5eY0Pqk939q323C4no9Yc2MmAA7UxOyzQzZv3TFMWSifSbJs7aDwnKUxul5SMWUuG1xYj00q6UMD/a4ZBbCyWzkzyJ6tEDD5JOtUnU2a1Mu6y+MoI25gJY4pwsVWnVt8mB3nminEJ0R9fekUcwdsl+UL6FVFYYXSQa8DAUFuPFfzH/ZVFblEZpjt8PEfBocArDoIZ/qWTyHeaMhafok1oYXnWO93vmkMJd/m9ACcRsAWN3MlvDujUpE43/sGHXcW7dQR7o32gwZ8qm8uPxC4xVkds3huA7w4BGpI3Snmv7X392uDNRobqxn6ZRL/RmcHS/PDdCB0M7Tv1Lcv1ALdDwSiGioaLi+RxOgHU/Rz+dzI0cb4n6R3u1+42txSApp89rOsXyd+Ecjq5117y8LiFyxszav6TdQFKwoAYglhcxlbzpGxO2523XPSqu1a9ADbI0SuNkbNEbffwjYbGrHhri8fESfYaJBiIL4k5BuKf3P4meSmn+JyG6ebbW1uzzcPT+pc87PtMlyMKtwTK+4EsJSvY0nXUe7V4ebiPUkORppbNt/z7JeIXkpR6Jzy1Ehbm7ss++XbNmCUmOMwNQDY7kvg4gHgeHamSTJxdLEenPBllLe6OIIvqPOiSSCMH/05TlO52wsvHMWItFBCwCv88mREWqv0G5+OdDJMNOrChcQE+b+3rGW7P0rGz64FweMbfzV+c2mNV6M+cIVp4s+uDAW1JYdPJvQk9rPxh1NtQuLyKS8k7LampyT0l8z+gh622DMAG4LRzJ/sxt2XqL1edRGGytU47lbrPOzIQ5SDz0V827Dd5qDbkYTj7Q9+5h2fp5sb/+9M0+gTJKwoVbpSVfO2feBvNwPZth27Xvff8dKpyoWC7dpxrB5vhgs+M2Hd/vDYuuCd+ibU17PfrMTpPqUQFjpU+pj8at9+6IXec4tW7U4fh5EKOQj39XZo61zg2ghEg6XdmNK7Wg1+4PO1OgsoIojQY/YIJz4CvimNLmA3cPCWTquiqXQVFMkhVx1FDtEDKEH7REeBwIzzQhqm2aBR+mp38LRqbrqlbDKLPaqxQWAXdPm+dJbfKst+PkRbjJ3+EIsyZxAiv6h8ldy8TusUEtRxTij1bZoVFP2L541fA2cbYPGMy5g/z0SaEgPoXmzO8RE483Pi5QbphhbbJRZnddgmM6AMwQHLHQ+MeefxtlVWzUNM3LGDBgdv1vkBvt5mgjib1x7r173VeiA67bNwbk8ZI711/z4T/c5DrDP208QROYQtKhAWMjqoNqoAjCKgm9aBMdi2xJxB6K6y73mICf9pCZ+S0RBoYSdjx3M5HL/H1CZa0ZE2dnc82yej/0VZWxyKx3aFZgU3+fRA10wNTHgT+9zkd9bBgQpR/lil/l5b25HYDfMKmiEpwaZbf6+Z3Lk9QPAlZfL+gQD7gQyDSQxRD0isVsUdG3+oooZds3ZTtCB05YN1qpRRzdefM4Q6qa/0VNqZMKkNeEszL7L2wfh0ZvQMC4wd+phBZDNlxrAvhEaNEw9IDHQXChXY//5WxSZurV9rKeWdTde7TC4jaS8H03uWLeioLTAdb4VNzHom1gRTBS/CwFyJQQ5veSUpZVLO6Hj6liMwjrzB9nzzz7Y4L30e470/lLYRZu1P1i0ZxvJkO7i2rQbISw6cMYAL4aC3FvU0aYmm75G15A+7fpBhaSiPCxSmN78yVnnDm189H8cdD34NVNOWS2m727eFlkBuydXP+yo9oNuYzcK+fsSd4lotQqqUKADZS/G9YS2+tK2sIJ9QfG9twEBZvIg/DrdXuPEgIepncJuvDZdt1gOotJjvYuNiN4u64HYDfbag5RQaCmqVyNkBEPkG7nNiYRbItaXaR8ZAMivdmVhBXR1Tv4K4Iqgs2l+X2UgTd2sZ5sMkD9cZWBT4ovi55/xecpojzLAcCuR8G5OSI5fG9tXtH/UKsyGXLMyyN5g70bXFFXIdFjP+fJF03E3Dty/e7O0rNOBZIF+HzAj9JVdLL+Q6wy+BnkFQIywjXl+gbyBiyJ8HyWh6Wi3IWroVMFtD79aWl1sSSPyTevD2kWCHPHm7cwwUNqEc9RkVmNkIz9YWbH065pmHvRfboJsXbmt3nEjcXh3vDp7+mXarm5GgwDGkAM5dehM2E+31OscWfkOTnZODJND0v58H8nZ46wMJTXOttE6fifzd1UzSrNzWfznxbyghQw3Ern0wGi1c0R2ogCUbGdH32kLYUBBLs4t3K+oi+YzVLsN06MyBW3lqq+STkLjrzLer0Rpgxqv+XpUPIZdkzCE7XWcaCSGCovWG7Hs6v032SGfKy32gEcoSXlzRYrta0hrod3TN6X7vL2ajTu6PFgTz7iZmz4K4oomus73pY/9xW0gO/jr4aYor01bQHwSEcER9uw5lDIEKdIjULjh+nSxdahd8JqBV9+gTsucWWkUQNwgT/rYQC0dLkkr88vJmDMFwmpylG9qe9Gm3v6kdYOMIh5QPtFCH768g1LYkNQxrCSlnIYurLA93cayyiemnt8NdHrvhuHHNDXv3vydcJhaFvp3YeN04wGGFrmndi1Zhytyl1cB9pYPYE5frBST+JHtevh546+K6j2pNcJ2PuP3kdyNAjRDyJrWhxJPm1VYbCgguuUhjQBz2BHXdvbu/j3pequKYjEjyvSpsHRRhNE9qOSxhf0CfqEUAVQJj/MxqY3s2mCi9ZBOlgmtzTvIvvfSDzl5MYppNX1bvXB/XgKpXlizDJ/isYlr7BsOEQTykjo7hwln250ahZ2O4yRGCwPwshHLxryhDV2TgDd1C/zCTzZQSBDgNj9kY/24zSO4DQ7skCMJFPd6X8hGRWz679wa8NsAOjN/2lm7n7y3qyqt/i8owA6cpLvCr322C58lE2zA2PEBch/eQmGkYbl0KTNSJdmIjVLTqH6zlvjlprgm5gs8LIndqq3SzlN7nVqlmdIh0wL2aUrn3mwQfPBpuvTpTFbkd1wnxevW8VXkOLEmXopyJT5Lv+9aveeqKSgUeR1B+ia3lWIFKf6Qatz+0Al+WphfecQO2ytqPe/Rs1UwDwNzzVe6Gl/PAu/qVRGZn2wb3ViXTgRAeNUhgVokDDasrtu4OTXfy/Y/zMc2AxDakaCwyyGTzyMRybDfVaIdZgYFmnpi0t1pcWE1CPs7pQJJ8SqtMZIsqNq+bRICGoNtsE6vqthh2iVPrLK7ustoYnMKCgcnJ8DJ/NliLvsrNRG2YoaHWJKpdqO+5b9wz2o0py7QgELNe6VH8kMgR9y1EKAtvW9TtMz0A8ZrC8XdnwNyKR0MwR41TEjceDnMxdQeWf86D0m2We2KJA5Hq9jT+U14LpFvikirwARos9deS7/AwcTQ8+bLdYrYOyb7jvjKcfZnN9xgNOZz4/8sz2xqD5242+3hCZ+PnT59AejUKJ9H412ahzqJbcXFNOq9bV+bbDZY/OAdPy67YEfSwrDIzaxNzx7Lsv9oiDiGfjLoIQaRJEe9svwnrFvE1h7bRh5R252yCUz49qBDsvbi0hdMdcljIKdhHdxxAyoHu7ec633aj/lCfQ26u0OKt7tLhXxKKB+v/nbQ9NslVIevKGLZ35+8yd5oXa3aJIU5TbbpMkZKMFfcwsj0vrE3nxjz0HNGQr8NN/haWoZ52yXU6wqn02MqwcR28Fta0r446T49FQnaQ6guU56vQsPOY+bHvMU8md7mp24S0B2dKlfv8ZSYgmhNVcG3kjTlwPn51Ad3+iqorQir13f4Wg1LsqmocCKfJ7XK9jX/5ZPGkE8f7eGdRdq/ZAs4kN+u9ruwQf3dT/hxQtjXL8wAnrI6YOh98gZOv+J4GHIjPjicT5VHZWyNMipiF53n+qT2PMRfruKm1qBfWKx4O4aZJNa1o/bOJ5lJ+7iMZzdKIuVzLkQ8otgMK3q0g71XtFHIzxtCAB4pW1joLWXJJJZJMLsML4hccbXZSpImLlGJhwat6YjmFoxN5PYzL4HMIxHqCuKF5njlmNI14B762hCVcPv8mOlB2lSiNGZn0slBQ3SrWFCpyH8keOGyp75qgoMeQ3ch2ZlKhzgP4Rtex81VfSSU6aAOAO1h3yuYOH9/etSqiVNoaUeg486ifALBdUZSLhDRcooPrHDgpB6c3i1t/byhJs5IOe/iC57Sdzp01MfCsN7aDe/xf6+7wkwkQK76vvP6JpaUmGtREiHeRJ4GfuY6OeocGEAIjZ/TSrplepqIymqorkHTVOAHAjk0T4Qz1gMSqcx1F9DW2qUW1KKurEjSFEav+hOTbpYmYJyt+ZNv0FrBBQfh7T9e/wEMHFpG+iF2bV87JGAS17MGbbORJkGmf2nPV4GuXRddslXEucZ00FthlGTrZJfPnUjdAVBuoqL5tQ7ZfqGgxuDwWl3But2k03jC/Wmvzh59rsH67Hjhsl8x3ucRJd3rFWZQTP8mMqO0Sn2Mz/61v0EYzMVuxnj0tEVZLkwBQXZFW/+JE+fTDNcPrLEuMcfQzFBFBmZqI6ajeWnsEW0SUfdHE7djITuoMwWLLiK1GcDgOGh940twilbnGFPONIjLH1cqT8UAHn1Rhz/0pZnjvZXnECaW4/NPjnn94aYWa78xiq5sOE+xZ/1A1/lMb0HgnnZHMoJg2a8sAroUW0hWA7VYHeP3pM++wh9NzfctR52vZq4cwVp3vM1IeThmWoppyfU9zf8JMAyxeBFvwCakC/gtvXNPjqWMvXtuYba9kespryrOHjEJphnmwlJmohQTcg7JCLu+pWXKtZBDqFRcdDbtEmVQyHqsshBT1WYw+xIx9frl8hs1lOQzrRw4GsLrRW8wXXlzrUZlyqnakrGsVFCxQjRAGvUEN+pTUZKitIijoJ1JUKLG+XaTf6klddNQdwMd53OhSYNGwSK5ofvUGbI4krJaLstBEJ73WHajk2HRhTU//4Cf0IZPYKHuF3yR8NdWJBkrMIruBD8ryEScTUYRkxNa2D/Hb3A5Hcc9ObMiciIkim+MYQr67racxY/WiG/5xO/z8w+Pc5sqN6UZY7+UZBpl0OdPy0m1RSgRFJPtZN/y7KDl7o00fFwFQ3QCoUI/7ezth+k88e4o0FpU2kUeD121q5iuFhpR+R2jqqpQnBVhfgLL+uHmkba97cj2kLlelbhycleR84YO0ZPlbhxmsLgAMKnJjQNLxbPnZX0KrOqef73iby774SZnX+/5mZD1m9bVjjP2rQIdvwU1QKs2TsmlL4cGwolpan9vHcDB6TJRgoDTrNYYiCumOXnWfHkt6Bj4R5FUpopBPlNv7isFpEbyzgkzlxLokigPKxaX9csnlmHlFNMyAuS31EjHFWXBMLC/2U4dBShFMFJctrJ7MpTTYKW2tgnAmJYxbawdV+fjvrz7lEyKGhSoe7l6WoDQ5VKG4OlckPlHuGJqkErUKPwph8FwNb78n07Nisu0796BVGJAYxwXz3Kz7lQLJDuYX1AwbvFrhXlYu96yjd2y55JU0H9xD9ToCoARJNHBHgbZijFgbPiuWAH8QqOMNYTy+bE/RCA/lhU/2+8F76wrU1IREovETktomDYF1+5uMsYEgPJuN+l+XU1daQ10y45JzlkmPOyFNIpl2vbQixKb0CwiSsuH2/7v7NNXN0WyPl7CQOKjl9Z7R4962ndK3RVC9WpdPa36BM2U6FXyF8meX+OkLevcJskoqoVjR6N4VwrAFTKfqNZU6JMt5qAvNBOkahCurMits8KMDEb7WV4UntA5IiGlInHbGcJQdEoFyNQbRqUOYcjYJZVKZTx05eUGk9zHHh7t9fDnTjIeBpMd+rJte3LLCH5qHncecHqur3hXgfGLCwm4s/6oEQMNHPLkjddN0Y/aE4pjUWr717wow8z8syn6lrqR2ePTOmV5W9OTU76jxR889IATosVSy0vvL/rE/BSiTAEX2mPO/JbHOw6TfUBS7Gfb/vBjCsZf9tTYfKPTH1mFyrNBMJW3Hm2Lg/s40AIwm44yfZjpkHpth9Elv2lpiImKwC6y/AE+ACpUZuaChTfPoQkPUhhCai3mtmcwmYb3jKbkoKex2rmIquUh+6CnaZYGYP0qiGSEnAQJkeG9MaB4sYo8/YARdKG7FM/fxqtbFddhVjMGiQjWL9Ebhhu/JWXu98gzsV/abe8fXSezlgYOxPR11tcFWBtYJYbOGz7bhnbA890KAAAvvOn1TaNN+euKVqFHohOs3JJa2EQnFw5mal7kRTuQMuLwsQZLUKcTaRtAXcVs8O3biSQbYZ4RflZ+SWOVL5TcwLJUksTSFOmRQciWBbALfcobSJMZaOMlwAuw9t8BXmEoJc6o5+5Qg3rYVrjs1pj9niCJjX1QKbE/q7JRubBAWL3esilb1YI8srNjedYKX1LBkJbCJIl2nQdjmDVeaweGP+stay5GnQR6Um7GnCR/GAy15L/XOlSpH9a9J4DjNkaU7a2EolIhjujxblyrqPLaJ/6hwBgfoFBpUOlKqsFSHD1Ck2ptNOkE/nQL1RW4bTqFaG66eAoIFHcA2nmqv/2CC6m/st1clJ6RrPKaEYnYgAvtNBRKvynfgLMGzxkVSSA/mmWGmChUtKlhLFIImfwMA0l8GDejR/zo9MdNvyrvNWmOIVc/iYOhQyi0K038hsS0gvTYTosQWL0HBcqY1xUOUDcOBsHotS5DDrNZOoYsVgUQM1RpG/HmsB7xA002QMHrFURWx48nj0QBiPmqlopBewO9Y9g67pvR4J0YWYYr+NUauKaIb6bb0Ig/SoxzEDkL9z+YBLLAPfydRrT4JQZnAKPQRrTTUtoSm8zQzCNeA0cvvirzLhAdV6jXDmMRhirDDsd7GFF3NJ4YB+rc9RjV1HILnVJbFDNgd73FUxQY3GZgVFW4leWozICcuIh6a2QmRYw9qn9xS9z+ETPKmvOjliE8MmjY4wambJS8GbubmIJuVsNwJkuDwtFhzvnYh0812rMeqP0RrE61MDiZ3yA6xB76GH3T68r+Wjq4AxMP2njBFLA0AlaPmJrU8m3qwAHOqFU5VnCl02OACTewEw6Kg//Q+eFNIp03DAQVXKqvSQ7jeY1XTCJ4QIUM2PeE35L+GnhnmhJRfJycXLJzeIMyrXEhKZqVyV0E5yiSepP2ZH0qEimdjik7LpK2W3Tdk7Plcedm9i2YrPtT6lw04UapXYVsIDnSMPWMYNRSbB1OxrIZCdWwz7D7cdYJW3iAFz/rneLzppfcZJVJi0X/eS21UBN1Nlf5I5wdOFPdnlv77T8RYxuXmRBpKYHGGJvTiECHWeOKKP4cNCqE4YfKfX9UUg2WJxU6R/9vFH1JvX4E9qQk63lix/p4kHPehjeeqoeyGQzLFLRuB+BeQU0eIw32T0G/P8DxMJWa/1udR3elC/q0Lt6xXu2LPWKAw+Tv3OwxFciVxVQM3nDG1b+uWyq3F0Y2Y0XHs2IA342nMZQvlVuWbD8SiKpyTmESowBX03tt+8n+zgvrcccvSWI6ynAarB/mahhWmrh8PMI/ZP/+lq6lR+MZ9in+SjtznR13CP2dQgNhm7owqBCkkGxgCzWMVWZ58OD7FGs1nZWaabV/CaEl8qRqx0ZAM5eBrLs0nQnFF1jXMLvr8U2PbBXAA/4MQ80WPCORJV8GH3BuA7Xf9NU3vbVETPn823dqG0ElwGXDQFPSsGYrczCj3n6PFIPBZB7r7ag/ci9rZC0hMnWZQKtl0afWYQRq0m3Y/sSFtQ+vmnOyYOzvYOxi+ATdzmKljt3P6f85buX/vOUKCqdGe8IcQ/0TtOfzT6gnv4I4kEQWFxt9YRmoUt3zhBbuM0CrJ2jJBPYAIyRujzRW3WO2S4kE5cFdGGqY8FxwCefke0TfozQjgA22Y45D02h+7bb8ZZwL+EsS4bYt14LvlG4VRkNU6VH7T4Au+V0uXdYhL0LQnNuPO/GdV9SCKQs0GEQR/l+Wxa3n16nb5bwJIwku0SabWIChPn0IO1SGI9CEZ/sdw4oezrRE9iFOx89urnjFBT9ASlViYvCqXQW10T5ln9zZcy5oPRVgNknr2xTKs15nBxKdoWAQuo0F3+/+3kTIxbBATzayN8IUJqiex4Gp8E7O9C3h/q9eEMUfwTiu6/aVZDS08hTY26Ogu0aHrGnSXR75kTjTQNQWftQPaW/sWgR0aeGGm9YGY6NrYrRvlXR4yWqQwTN7Aev8zLbErbl7YXVrRXPAD6Zq6B70wvqVIsckg6wo2kFkojm/Eohc2KH/qv2unJ6on6iea5Xb6BnFI/6voUhVe/m/4p9jxg8TaTeWgtKurcOa8XMBZpZ+rVZeqgOUf3e1ddbb846hHNdS/xsOoax2RP2CzOYZsxUPXPvx+/L+udScJD+D3FSjYBolK2MgjzrSp7bD6kPzfrKif864scl+B/6+uTlQ1wNQSr6me1XUd/IbheKV/+SevhNtrLvZqpZ0P69u5TxPv6WwGacdiIQ8qU7lq63atQn441VIILzPcXp2WLud3/TDjv/y4fMOeyZjts/uvUbO6IXgx99n8gnEbAXF6f3RxqTOjZv+cOtKTJhign099u5yezkSMaKxMVIsosiC9Wk+Ae6Js/zt7o6bGJbutTKn/1MLiLP+EGH+6+pO7TC7wmpq2Jp9XSl94tfaJdqmkF9a5ogFrNxZFxmgUKFCC6rSv71mLLzS7rwhogoEgvsbEJGabfnKbNsA+u1k3/6AWtCqHoxBIAPDjUzHdlUui5gpLskFvO7EPR9PfDfS6Q8vQFDRimXsDoh3TZk3fi0gJ2JyudkdatXxZN2bIE1UEzhCUgWc/LbApUVeD1pXWSWoCVmb78dFQK5qbmcz9KgVVBllgbVrzfGFhpT8JrjlJMbJtqJxRJzAuNuRVoqDmenUsUpVAzRhYAi5xj62CwLcPzJTkiy0k5dW8hFd++rtkL5iqqhh2D4DKqare+x5xdtLgzqmJgsZ4s3FGrI1NetBw+YbFpgpETd3zxoAyHyv28DR6hezZLIJdAopwAGyuINpyYV6dtk56pBGjVrv10WygL7/Xhd4hWHSBl9iHVsvQ31bb68dzpDuF89kmxGCFI6D9JRJPKdRwj23DJAmYujac4h1vWIsLNj3hUYh1uFQ4SsRZqcBbuhIKxZeGqpexKrbWYHV7yGwtxCL6D/OlCh32sIEvBrDiXAh5apCx/3rJhvYd6G7JaAGg1Cc8SUpofewzk22+ZKwB455CXTtbeNEsJMsFS2qwvLtTEJAz05W0nSEN1sxsXOr3QByRLcv1pxbMrctEk7DHVfaumq8lAWuFmHTnRqoDopX5kjeM+alIHpq2csGVr4miQ8o3fCO69BqHFaDJVTQ1bBJIP3E8eKmGlRl263S0ayxN71gzBhXWwV8V8M09fIu0HdKa1lzQzM4YxXQXHkrjOqgtlrk+v4+BzQ00COExOB56K+HZhVKzutMZ3+3U5FOLQ74NmgCD3c6Es6zrGTaL4V7ofLJFYws9ZrYanBaBHrogQ0pfb7ybQ4buXN0LbSYtWcFje/BF1Hvz+q1MHLjf73qa0/6GkME1VpzObe4cKbTUSGSrc5vAkDkx8Jw2wqkqJZK8sehWJeN/RL4kDveEfhUx1Dez0KmtbaC19dRJMrQKwiZwGFqYZFXZYhCUkkzITbCakEq/T4vQ2o90lYTOMbpqWedgcjDYTD75G4UWn3QIm/LeM8dFKjS3QE2/aj+ALZlIFS1fuPClcesmMqAIg4gvINS3LFhWBv+s0sAUYrCEeZaXKN4Kzck0nymvqZGs6T/3D9+gfoq9EXV29Fijn2GZz13d1mffySUt73UOTFb6dIPxViy3sjoQGxeGqI4iPQXz+B0/5hh+9yYSyjgmC+JrWzUsOSqQFb9qEvp1YriLFdhvY/VAdAqlfpA3xz+oGOwR5m9pNM/tHoDM5+zzSxFTlkBFw/tPW4+Yo3RviApbMVAmjU1OZKjnZLtiEw/9Hr7CpPb0Z4PPPwnps+HkffpFFMUmB8l/UZxI9h87yZlO4fdE9BrUVRnwzQ8GY2TdSa3iJ9ZEhS2XuH77p4LF0+rsHyDPEZx43D07TYRIrEXGRdAYIedUBcsEWAKiKgyKco65sm4LFsuOwmYU17xcgQM45xB2AGVcxocNPW/qZ8l0jkHS4dtPLaKPR1I5lEBiSLppCNBks4rIlHt5mXiL0yk7rursDrft+YsGiIb7LGWlVIxNotDCRYsU/2B1UN1uIoWCUuLsr9/O2CgPtw4d4Es9f5oiLi2lspuViyr/S3Ky6RkuBGHIL6aaMVxB1Rk8ThY6ndhiZ+gkBIXPjWweFAPgiUd0n4UprLMxKayDGRx6RXwxLQso11aWc0Z5WdlJBvsLwuPzBD76Bn0jtHPsJZaWHkWtJmzqPCQCWgO/ZSycxAsTwnz1AYC4QgKot7Mjv2k9FR9XFK1N20FQJpgDxWoCGULpGnGdo5RHUIFsPF/kcJQ9Z/LWeT8NPfjUbRrPLZR1yMnO6HY93fLcUIh2+5OW+Cor1rJ90P1yUSibXAJRUcy1g4TsKQmasnjzbWdJrkmrRqkOezvZK6RdGAUfZzPP9wJEQOv0Z+ufW2lszROJCDC0dZwbtFqYf9MjIu7siFddz5LLxnygugpACnZ8I5yeiMInIA/sfWjjz4hAYymFC/1yI9U1RIXBl1RANRcy3l09C2Dl1hXpnfqUmxOYagYDmVhyzV7nYxyMDrcja1g0svyxvFeUsTZIngPMrNK4Ginr7JFY+NvuU74kk45IqVqP2h3atAIIQArre6cd1R/Rwtw2+GceEUldnYLxvkDBfKAVHpiiG88muEhYzSACFYBeVatmKk3UqwCx8KlSn4dn650+QEcgTgYTQSHcT8o9yVjqEzJ3p4Us4yIpjKGjAPJ39JAbxE6iBc/CfShTpHBgPfI5FCFa2p43Hf8k1pMajVbVGBsJJXok1pGtX1AmPOGA2GifXM2bHK0fKj4a/54gxJSqFbKjEm/TPbXEm9Q27uMtqka1doc9a0QwNX8nKVaxgh5sogBtqQsbcdSa75wrdOY8+3uVVvtV6AdOUeedfWk9z5lwEJFnBWA5rcQ9rWx8JlDrOOLyzrd2Xy7gucAQ43YUiJRFWOJHu4sdieGgE0saswpWrHV3W7772IgeO6s6hruONbg8u7i/uLMHqKJAvQzAIvkyzyJEoY/4KFBsyK+Q+3RwJYoPOLAXHf/SVjC7+TWWoYKX7NXMZ1NyrXE+D+oMXcHqFrvKns1XGP3N32xss9eyPanDpCDuYm1697YPQ1Ul4h6lZlCy80hxZsqEu43PTLDe0JTJ0VBc1Mo5v2TBO7r1Dkze7TPkrH8XstmR0oU8coNv3GlSHSVCZdRX9cWvRqefThkFFapEi6IMRq01OyqaNvFgKgxKekeZdyVqJYK4TnOTXpbpUHNBcD1lhxg8SvAjdLvNjLtshGXJtRXVmBEGIbCScZqhTxwSpYcHPipM8lv8mqDE4zOPQARtTSM2uN9BL/HnwgFfxsanvPx3ra8BCzg/DmleK7hn73Bn8pXJtxAoewoTUA1Sc1qITWTdYRqnJhHrz8SpehxpFtmLyxxtsIrBbOV8ecS5CqxgwQgpvNrvJkrwAw0Wqp4/g+lM8S9RsmmnVVBbh9sZunWFRbIeE06DZheV5iFK775rTQBpAVkJOpJfU3NzziQrLKNdRpi9jRZ2ZLf0LrkdcFcITQk6sdHsbiGB5j2PSxFc3RZycMGNRo2pQB2Cg5YmjeotN7sirCrzWCt91MiDMYYuH5o5RxHp1OqorI+1rlrd11KrFGItnnvMYpjPpEYqElGsUuRB1qF2SJ2X1UJSgrVN37Y5LQywjjKGGUuHZLuRuqsDvXJQDYF6ZE40E2YasVPQv9jEsdCBmmN+RZPvHSP+ZGPPnIZdE9tV4EDEPr2eAjci7uTh17NJaLRaDamsez1N9bIsulqd6nj6VjeCg3uZK1nSFEZzowOnv0hqrPc243msgZMIQWKl7/Sbbx7jbJwkhwHLiFkWCkhRw5gEhH4OxSDJ8Ym0RCGPA39JNW0r8Pl2XUrR1pX0DQ96kFz5noD1IVs4ATYPrTF3HUfFlYY+ofrru4Q7RwwSXP4U75wZI0LjlS5GGwocaSR7DuU5nS7gRBn0R5a2Fn6DDmh4bkalPfVQ1Gq3NRbJLIPGqkrwnQOLLGzDumv82cr3/DlwMGIKTkPlSa8XsTLDjg35Jzc7RU7Gb+mOo0HZpuLWVqa5SovXFkd7YO5Ye9rJwkN3aInJithmtCkBFEKdWE0tY51mLOM+Zmii2Rsc/vvowDSS4mYv0k6wsRETZO9TtP4qsojHFV7+4foZdcCHJkNbESsUa5bjAaRFxlWltaJX9OhA3zzI90zW9EcRx/BAWaN/IBnnPyUVSk5Qlf3RDwM+dHXLI1GR0e56bTPYlsOZyNtbHKn2EuoBRXBajMi5BuyPzOLABvjkFQ4gLVu5LBtDPMF+aXQ8GnDeWwdTPZ7vE0zdz9h34dAdE3vygMpBkglDiZ8Om2R4hzF1k/Io5oVClie14XZc0kPd3qletGIqa7GL2klNSSKG7lZG69w2k+P6ZHYXoJ9mVDWAgp3FE/Y3rVIRMtvgH5DrbQPn4aaiPGttK7UhP9oqG57l1QwRt4AVihpzvvGibwJTOTLuGKVRTWhAyXY5xAfB4fN2LW36bw7STfAy38kNaRnksu8uIZ4xv6MciANe57lbra6ZjTYxiK0YoBXvuuceQVaVot3u+eFtOKuPCbtm7bGPCuzIRi0VoVd7rvSRmRrBQIhQWZnMoUM6IIQpD8uFPQQxzhcDuCB3gKZDkLQ/X+666lUtRi26Z358KxqgimZhGMD6rProXcJgX/w6jDylN+61aZ2h+bVYqCwfxEKK8LcjkSOJ8uAAmaNctH9ESjhlgp7Sc4LifPMyDi9nTm+OG7CiFd7h1ZaHDwrRqsUbHaCU6JT8OMRuEutc4dMO7p1A4SqEf8U6uiBu2B0ZWkoMDxY+qI97hybqsq8Ry7wM+oCttZ9v0KtvAa2ho5swOw/6tk9HuYAoS8abhnGyUSDTKSAigvxbQrsAkM9MIejr5JG/dccoYcjTVauQaW0m1lhM4xhG57tOuzVh5UWkpdpg/sKjc0PttCBaClXbSuXuaps1NjyrVEoK6Ps8X9wgyj3EnMSfYOp2E4id+bf5+ycO/tN8TpnM8TV0rDkFyyQE8lF09CdmTpy0zengvKS/fO8Pp3p4pPt5fJyFi2x6t4EkgWXhmXsz/PRSWXc9aFU4r+5bh7ImyVyzbworOMXhopSeP1FzLfHW+ZHz1zBZpqUMhWOQsG/ks0x0bWMz/KO/Dco0qVOtib4wrITO+DTrsdg+IrwQxYHbe4zdVNhi4+Ok0B8qYuGH6Kxsb05LFyT9eQmZ4/Keq6NnXv7xezz8ePhx3bNku8O5SgbxnPuLh67IA/+yPeBjv9wviAtCLXoDo8kvZkG4pCp7AkTXx6FIMSFxn1/b4f2Az5pBErxV/3PurU7ObDK4HR1jBFZ6063vcODZl2ga39Sn+yqHoaFEGIjYNHYVaSBwIqvUIHzcNy0/Kg85l2K36IR5kw7egcObNHnnECzEeJZXiQwmo/slr7NTEywQ+4EnSVAUpgKARNReLWR5hDVSSpoEp9gbODTJnqHCYE+LSI0ultz7G/WEN+4gNOLnB0mEYcFi8Ona38DxVO0bFASNSfM4ygYKTH5wB22QbteOua1Yf1dTnIO2CmtX1KrIx74l7fyJjY2hLCVH43tSGtlMbGoGeNeXRrtvB26r6MiunbTNiErTsmp+rE0QQsraOfD2uEqKRXoCdR0iUMm0HKXGg42Y4cgUSlCnvkYF7fqzLt62ZGLAmlxhTcs5Z02W4kqHvCnl4nDA/ym9bQ4LbDFGGxrFTqdli7bZ6hvvQGF8Ews1jb0ni2vV9EEHbgQQI55Z3ypQo8ISS+TqjoPUzxWXgv4u1q158VfjtybzKIAB8jO3UQpqMQR4sZg6u3uewQzOIDYSuhzPXwwgLcjTJ/pVi6c5Hk+p0lxC0FTjraKnIVHAooE9yocT8nWRdMxripUXl3Svj6ZwlGqBoprDrUPe0C1tHOx7PtRnE9vrD1bYNFdpvDQg6b9iQZuxHbEOewrCSnTMDJfb4VIM/ChJMwvvbwKzjBaZEUF4lDRH0qisJrlHrebzh2I2BrEa6LeiZm0isLHhKSE1oN9bPD0squgRluRyshRNtHxi0ZVQHjqc7TEzIxSeJadQHqfECo3P2DmX8sgHhK7Rt0WOhHHtZ+wanOfMKnQyQ5NQpGosW4VnqXpQbvo1RJ0HizkAN9fWIRXMiPqIJcZRTItyizKhPyESGMRHlGnpabaC4N9naepcUWK4+T01JVZxmo4ux1v2APFherMc3WMRuSWIGof1wEv/UDxw5pSzTE78QojaJQsx/xfhwaFbotZOPfteserKI5mPIO9WEYfO/bcBpXfbHnv0xPz/R+DdHu47mt7KD0kMzscPGpbe4l316h//z33cSJJjg6ykWZuCxlFcsKBCcKQK8ayQxTPxk21QN2tMLzov0XxFK/Asq9MPdSX1TlSt9uWp5Mxia8rQMSh4HHusG+w+rvjvfP7Hn6cR9Wz5ge6knR/YX1oCN0dCFgKbf/JwuKgckcChfmmsvQh8MfsgyPzmhK8mufEKzpOdyEiVuaZTZhJJWDvlURbEWdWtJ8vo4y1odSzpvrzaHXTjLbByI1ig5KpV5KyEx10YLSf8SC5DKHfh+yKWTHQ5v4js8J11/f2bLZddW8v/Fr6Zc7/4icCB0RN9zWM5yliRKcH+sPe/B83+1e9I/k8Duz869AzCNyUBHVPdh1G81plHzt555T0X40faN7wPYxxniwhYUpr2ZKw2QJ4rnj/kzg/qFhr2dALzoY6QTCkFDWzaq5GkmzzcR2oXamM416pC+c5tp+B+asnG41ZPEI0Tz8vtPZmxldCvwpBfDxZ2Tv7tN5VsaGCkTHKasyXy5i/NYlKCTleRJw5PoXSB52cUQ3upLoqDNKXf7rhwl1aTOcogCt5pLgjq/sN4uXO9P5kWlg0ZpoaRDslj3lXR6nH4nOQXelLekAPVzU7oXv3mhN0BuPsqwBfBwtGsa56TZUos3EkD5phijf8Adx5wUeGLi0+SYD6XGIP6GsrjMvaZfyW9WklqLXWsUzjOspYfVv/LeAxPjFn9iFUyPREJa3TtkJNt8NSbxugPPkMf1sAMFTjTQbe0ulaN7UZSQobGoQT1ecDuIKt53+F+MPpaq9oY/OXhV3I2JDSHtJbz/Cs291d4ZxXgwqxYgTOv/d4Lo1C1l9pJXiU5g161MJXe59nInjsiyENqp8KsmV1kwDkrvWNUsCF7fGM85825LS5Z/P8JghNedWSrzVWFxumN1n7a4C41XuwHWGouZiuH0IVHaGBRw+Jp/+XMwXST5qt1e0zfh13WnbZ7qleRpJN6q8Z7vFcEqeQKZyIL8gEsMHniPY/8nuPx9P8PHCIyq8TRPSTLiYEAQzZWHnAPazhO7SvSxK8GENtHstKBSLdqWN6scfFc4zM/frgU/aMob3WFqg12cZni3l4pZ9occI9qFRARcqyKZ5FOXUE9BxpjkPykqOXNP9ads4hokChXl1oa0tJKmuAMwth25/rrzVGmgl+Ksn9u3qBtju2GOamQAjg1RbFMShgHcCYcDxrZBBrxkghsMRtyIsA9Pq5P78wPtnTn+R5CU7eixkD0esPIB+q0BwdUjJFS+TSVBWOEAZiP5+0/g9yV5rhRc8ubtrzrF8SZDTBsTnZITMqQCjd7/LOYBhajyFNTZzMKL3WAbsiUsx/7Em5PCfqHj6tN86CCGxg9pN1tMDnhJHeEFOQSI1EBcwJSEhWiTu5jcxdbFQKmgcAx02BhWP9YP1hhvss/4qt0EnbvyYwK2h4JIMUcOFgST7tDM1IYKYyqIebYZ/jR6c43g2pUH+HvWmtk/6t3hLV9OPmrsgohPJ7/1eA4jQeTXrGI3/x0Evv/eZMmN4wSylyobSzLNE37o0uH9iRY8luN+dH8yEVMitQNmvV3ezSkMBLdQN8jQ9EyD4yVwKwB4dy/py3B79sDiLQcL7PBqEl9xIyx29xsm6gK741BhGl1EqZWH1YpM296HF2+eafxgdRp9Pw6oXtEQZHMx/hZZNQlOLnerG/0d4ekQhGGKZm+hIqGU1UdRB8i6DoFibJMm2v2i1jcaJ5NhH1dL8GjvhagLvmjSkjX67/HuabVT6uYO4rPB187KAY7I+d5SDl4Dosyy83qpQBzKetsrX6yL4lFMJLOTnoGYp9R9CZmd+e0kG+9VADKDu6613GZU6djGwjAN1Cec5FLPMqlVTEAONIvh8W2ZsFJp5z5f9ZOckuCPWht22VzMXS0oLBq+ycnhRs0Ym59KoryWEiftz89UPOBmvV10UyrKkr17+7T2cTTZiQHdWjr/tRDVTTiOVTBrOXTQI86E/m+apVUp/vIXkIFDtliyzUuIXY2HxqXNOGqXe8pavOPzWAGEUWEmlhOfd06S+VX5G7XUn2dThuYSOEWAOoYqRxIhy/87WiPQ9XIS14iZHuYe/wBE4wPU4DQ9FLEWTEStUywtMBLVDkM95DaNJlldkTnxGaXBLdOVC2k3fYfybLPrSTprjYgImo16w0rqWZUcX+NO1MAxSX1QX9XsrDWgJFQRJNGOdoR5wAX1j8WXQ+2XYFlCQccx+M8+RUFw9EjnH5zS5FOSVjqiRmBXD+U+JhxOcT18edomJrILZwS1yCGEnkzERnoASHF7cffMLB+AxqgvrtGlZVxrPfsEeT8Bm5l/PDvz8UrJeaP+deszJqnZr+taydn4I4uQp52+2Qdl6kwRdRWrlHd1WyNQaLNAOffLon9YtesXTc9f6IsQfA6gqNdGjIimjPyHpfJTG+h6TVLjQaZX0+ysHDTsW3HzZT9NTn4qMeIaXG5hLdGYj/A9v3SztLjYeWQdji6AKnu+9Z8xxnk0LBL26dJfNQdQqGgc/w48WiymGU9QO+pFZdYkq4Rqnzx+prvbZLXK3ArlY1hq5xHav+98mdAIbYB1uuy4xVKuuhs62lsoUHupTVDdxA5bbP+5b4Vi9FZkP/8UFv2HRz9DA9Go7h6a+Vg9pnlxt21dvnyqBLDXFsQZPppG58rl0w1jw0/0JVh7em5eXNCq0C755Q8UcMQYMhJgkLa0Tih1NME0OQbKiFKGO6cu2c/Lmr7ktUg2SWXC9v4xKFiGNZt6e1iBm79bpkAhgZ5MUemnthi1q8IPwh4G/clg/Qs5HyF2CxRsv8Cpnsu/5H1sjeAngI/JPjY20568yjYp8CwiuPjjBiKaopH3lS9Kk3+ymjkhtWrLMrS5TxvGsVm5lRhM9/wN1ZDjXjWFuNlNA2KgLYe/ZGcBA/0krYFPv0EFli1C7WknSgz5t4l99zmv2lgfJMR3fgM2U3VrGukk7+wHf6ECWo6QFIFldby7oQ4FxgJ/EISzxvDbdiTS+QcMXN8e1tMq406l2v3uvW04YPiZh9QxJF3dWx338FjZ8HnnG7bf0dHsDpzE8c6XcuXQ2zOh2GdjhnpJZ8qK6LGhPZA4GpTEd/eGqCZXMPHCnXs1yxxPg+8ONigbq3xogrHaNGHL4oi+63MV0z7MhFRTKK7DstsVpH4mEKpTRirqDKy07ktGnhPwCV7LkmOtBT23uA2gTKz31j62lYaescTJSZdPfWTLN0K47TLPM+jyRl4KxWSOTdgjH1vmfpfT5Kb9+05wl8SXdkE2BCR75FgHPEeDmpsgX5QaF3spS+0MU5Lq6OFaqlzR6+dztbQFGuZwQoh78WIAuMSet8FiBAvt0mQaBfHJ75KJ9ebEEDUCnApgdLujXdtScVOAGHfGPBe+BBcb+vwQQO9a1anoqIiTnvmnPQXoBnpQCMXzx5+2FvtMwb3bWOk7uBapwtK/ZHHS8qGDQL2Nyx8y5BwgG2TQ08tHC+kE2sQW1sAd2psA7f/6YhIhtkDlR7mlSjAHlZ6LZ/qTSbfhmPXbsHz5F3nGEdjchgn6aBEs8Ke/HaoGunPcXFtlI69qLegrISVJVVT8L1ZaKXu+mK+AhPi3YduyMnoLH6sbQffE4NChr+tnXMhn38DkcJKbUKQYcMX4cvun9TjMfHAjazDRH6aRyrYr8+d3vNJaNsSjTGqaxPmpXtkowebRwctehKbeT3TTC+k1iWZzNHDQVPpYUtU5XNd1VvbOJ5VRdFFvwBRIcKgxuXzLEQG47k4rXeceiZE4V/lobPhJSgziDNSYlDCpCZeIfAw4BunxuAcMKuJT6TQVs0rqehonJv7bsE7BxbALffIhmZm3vzn8Hez40C8UqPZ4XM2NhULSFTJlozyzdm4Rm3QhawoUjAaNmHdMzYVlaM6MVuNiE+NNCkQXsQmYbpWTASWXrByaM9UNHpC7aJnLVuaugTMRyg7QOQxPt/FYmsD09+c1kF+mk3zOl/v3NoUS4YnMGYSKTJ3siiXLK2VfmczIFW8mLSvIDXDU0ljX3auWyFsW8QP4xUdPk0U81g1kJml9G4NRAZ7c1zbhrR8M0oUUIeSdXPwy86BzyQexMbYm9SaaQPIrfwg8u0R3a9KURHrTyuBHSv1iO8cLOXoxTPG8qX14NNzSi5aMCo8SIvBeiccuPO21lqamCpamXskFFtGHEWDHF8fQi5r68RtZ7VhZnh0th8d280pMWIFxG2wzJNLrtvi1/gxiTZrvRsgLET3BAihnCPJiwv+yzKZLCi11AW1mm/Sp4Fh7XoO7qGECbBjnN0cWYYba2PZF47NqzYyRcmrNB+HMXAQsenDZtJJqWWtnxncUC33pD1nk7ITtwN0+4xHx9rt3KDHujatbQO2Y/AzJvqd5u56qvzPqTQdVplzJ8rhcMmV4eUKk3oXWSe30Z+mFkUrj65mhkdvFhQaP9qMIp2oFdWalk5gL4+m91OP1Kb2yg8kdmqj59aWw8Ecg+rGnS4Jm6SyswobqNOwiI8l3JiwHeUldFRrJJmeeIsj1bOp60lbwGFo+G7mcxq4uxrMuTNIE4D9wxL+XqS1PjqwUH0Sl53JwLb53lflHwWW+UifWrwfAEWJk/TdOnxk3oO3S2uxHIFovxx5nNGnBqITh3xcuEvLz+9FJbwlRKwz2kasmk/Q1bOYL7yOheR14xB4Hrj/o24KyTaT2oTB/zvNN+kBS0c0az5+Dwc3QqW8kb/v/g494aJXZU+ikv4Bt/efbwreM5DURtjLGLuPh8Mr8Y/pukoIvINsj+o6xGobt3MCJ1CMpFYvaQfEUCkAHHdKG2naXUQ91xouSsiGQmrb9bxYFfwcQ6iCxx+IwM7dlGHgZnhxtXr4z3Lga/x7zBJquMwXS4wdx4HswKGpHqPPvG0RYhMrOUfs6U/riWRF8MO21wqvGKSO1Xkk08HfxaQb9B69clyEorTUG1uyyVBfsRqmltf4CCwx/TYvXe/zB3P9aIr6dyzXufkNPl4Uc/XdUDjrCywVM9Nn0Zn9VNZu+89x71cA+cgC1yXlCZremcn+D9wJZz+4v3j3/9KEqul87dklTfICvP4J/tkKSYAkp6S2/qidd8o1EXNSraYXIZ+UN9HAMg9ezqYizSLSrkVKC4HZ+JfExqOVGA7xLxxd97aN4YoNmCpcmk2o3CPoNTbJl6HSQHJaIVhyMGBVSGTANcrmCfvo754uZcA+lavfki67M584Fn1L5bcwncusGNdCe2OqVzreua1K0pRsJ3z8W5aOrhR7Ra+7qEXhdAw=","base64")).toString()),VL)});var $le=I(XL=>{function pf(t,e){if(typeof t=="string")return t;if(t){let r,i;if(Array.isArray(t)){for(r=0;r0)return(f=pf(n[g],u))?f.replace("*",c.substring(g.length-1)):Gc(i,c,1)}return Gc(i,c)}}function l6e(t,e={}){let r=0,i,n=e.browser,s=e.fields||["module","main"];for(n&&!s.includes("browser")&&s.unshift("browser");r{var eT;nce.exports=()=>(typeof eT=="undefined"&&(eT=require("zlib").brotliDecompressSync(Buffer.from("GzAfABynw5pcuBFmTv/70/1/f76uO9EY2rrhxLEWYC/7pSrhkeCCoArnFYpOj/QE6fHx/9uvLDqs7BiRsBXp++jMh+HuCQG8qpo/jQFCBS4aVBSu82uBpBshV9hdhtNJ5SY01hAgQGf92Yk6uIWH23NmLWpvI/fq4YaC6ep7dbhgBKxrceRcU3/MeT3keq5fx3N9Ilx5x6/unaWRPwdp0d46sZJnmNonGRAEgSIv8bIRDT92SKHtAQS1+L9lk0IfNBmC0P+Bzz15CLp7KzBkg7MGTxSRr0KLpulDDZQHK6cvj0DXQcCXhNZS6vUSVWoDpZrGhKjl/9sMLDCwpasO4JXS8geYKH2eJ98pCISCGGIZ4f0EaPFVw6g1hHTtBMdGyaSAuIZznuByTQOKR+LTBZo9rNzUzxL41JB6UziDRdbK0SYtv251lGn4hAgwg66Aaqv6ZEIZ0Glk1ao5SNj3hemgByM/NLvnHGNGyYqQdSDAFDwRbZR/GVlM9K/FKKgtRlFPW0xrpIgH67IWOYJlE2PG0zV27p0jullnFUVkSvzj5QsApadVRvHUzgOgo1qvQVHRRAASexPTNYoC0yFbG1ADE2KhwmAFv5JR01WNmnysDJIogK3pwpzAuvhRO62KvbhKLUF2R3M2ukvVxejf7OSXCM4b8aPFv53F19Dl83TaQXmmh8u9EVp/8OWDJOBBQLfIu95p7sRTrw6riWKuaMoE/W0BT5UJHI5qyvG4WEcqml41oasr+GsnRPBblktDNEsyp1c/MgMVNXocu09syuR6iVpfHAUpQ/yf5HqJXd+lAsENt8hQgE2CvuOd/oTqqrDJMKauNt0SA8M/CGwB8iBAcCFa0K3D0KJkcaXp765U3xk4TsF45+jqWUT9R4yaxKmKDOIExgdFSL2YeadftqAz3RIIPi+3OIfc0y9VOMHEc+fkaYUvW1JlnDkJqy/pGJkRFM4gSY7cqTFZ+iCl9uE232WGhHbiMI2uK4vhzFqUSW2iTrAx4BKkxfxtUu/SQV4lPhkN8nuQbWf4yLvyd/0jMmzj/yJNwad8eINyJZe0ywrJdYRi2LxYGvi9I3dZBWOVUXUP0rgA7S4/yrkyih21s3aNiCX1VBUUPWqavm4Yo9sCkCEWF0xX6jPKggcrc/BWUq7D6ZZDZrVXjDzIukbrinQSULi4V2hPaRMqdFzWwQLQ9lIQnpapOltQBpvUFC71QbYAtFrclZVlhaWc28KX63KdiE67bUYcBIqtVndrDmot0Q/IJ/pvLX29EGcNg/eaFsMlSP2UQu/ZjL13v2VC6F2NUr9Bg1CPox1NU6MAKeGPGw3heVhj8nWkCZQaalymuab+vcUkz4g9fyyK+CtZ1KCzJte88qkMFdU4QUBpxc5JDYmpYj0lEPtGMBN58CEHl1cHl/djakVPATD/avUNmOIttSU+XcYGdxb/XrSpJ+Q8ChXIl/bGQh4ri8ysI//r96HyNlhFOSpQ60aRF/lrsh/jq/bzX1FpNCRw5l7ifgKgKkGL0vsi/xxrdA2/wMRWoikHOEtOuK551bGet3xH+nM0tZJqaP81lrj1OoS2HoF8EjmfbCppTLdrdDeLlA3sbfKPQJ6Uo02W0dTfiynMpUPlWwYz/l5M7riTjCIQtDJ+xH0UKukWGcNbANHR1S/Pem7PjFKJDJ9sRWumByRHqKds38JII8HAEWSQo7ze1B8gTF2JWL6REzgVGp04K/vgouudFCqouwPVtLvHuADVhXSGz50i3URqsWYOnFtobc3WM5XLMwDrlxNkU4VNxwg3V02DdNyUl3pV0ApHozKVXlWC6mLSW6jOXC/r1c23U/FkmTiGpPrQhFZBc/+vcxWlSlPm1YTztjso680JXVQ3cWC4spuBmydcGIdM84Kw+FShErEoWWVtOV/XPVfEx7cm5oP8IHDCrgb3FV3A2z47S7bcwOmmKSW/9S1VmrnbOmjbf3PChboxvZxEA2ee8Pmulhy1FUmetU9t+ZWHcPuUXGa1EopbhB7qkvU3aHNZptdltVNJC6J908WAwd0Ruq5ekJAjdKmin5MntvnxCn9nEGj06qUIQ9YjhsBjChJCYpgaK9IOU5gsYnK22OjhJvcasLumq6MFP7QgeDoNUJs6WBjulWCLnS29IwW3qVVJ9anKKqokl94u/gvCpDMtwqH61i1g/zIK7qtZEzOYKjaiktuVO40kvz0vWoM3YaQm79KqmRf1q/BNHghpvQCDCJ4iz1ak/K/ks+edjG5ipd81BCGdq5QJLHvrJZK2WYvhOoiYKXnolnv1UN5++EqZpRXJCKPLrVMFKpl5hB6b0je+Oms3eSFyxbAOE3pIjqCg6UvCi/QVKYVv8YZ0RABb9rmNFmEOr7t1Fk11d24+zCS9gc5CVTclE909oExrTXHhBS0x3CP4TJ59GTvih5K5coxfcUy58EzjWFkWMDfdSjlq59pFEU7iIpD7HbtgufaEpv5we7xKwhb3XC5SbMkm5FcW2oLW5RobgTRFrsy1KawVNedhCvjvvp5cjw73QRgOlteW15dWl9e9oIMOi3dxzqO60K7MyX6eMo3Odhn2NUyd/Q8Bap7MljyFWW7ksXB/jSGuAVHarS0CEQRKhDC7oPaqzCFfpsdCy0pV+8HcxINa7qGHHyoyq8v7VrX0YQqg8iaeZl8sGD2r0TEr+1Wj4x0bmZ6WUHSr2bx3/PGu5d/zsmmxKglKna2lnstwta3+nqyEhQZBe4QKV+1KkZp5HS1l75WuhJZuvd9bmt6KHrwf2f7kE8iR8s+oImRLwXVi6Fum4EeYQb9lUh8LyKgqe9A/FpksPVbqXYPY7G3ansEqdF3IClEzzIKkmQubjcGQlnUTOq9KF1u98uogWAaJ3eBDErzN3rzz0Y5UGZggNlcV6uBKsdqrl1VeAq04LUyMnCENsPVETgA=","base64")).toString()),eT)});var gce=I((aT,AT)=>{(function(t){aT&&typeof aT=="object"&&typeof AT!="undefined"?AT.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window!="undefined"?window.isWindows=t():typeof global!="undefined"?global.isWindows=t():typeof self!="undefined"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var dce=I((Dxt,fce)=>{"use strict";lT.ifExists=I6e;var mf=require("util"),Is=require("path"),hce=gce(),E6e=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,y6e={createPwshFile:!0,createCmdFile:hce(),fs:require("fs")},w6e=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function pce(t){let e=P(P({},y6e),t),r=e.fs;return e.fs_={chmod:r.chmod?mf.promisify(r.chmod):async()=>{},mkdir:mf.promisify(r.mkdir),readFile:mf.promisify(r.readFile),stat:mf.promisify(r.stat),unlink:mf.promisify(r.unlink),writeFile:mf.promisify(r.writeFile)},e}async function lT(t,e,r){let i=pce(r);await i.fs_.stat(t),await B6e(t,e,i)}function I6e(t,e,r){return lT(t,e,r).catch(()=>{})}function Q6e(t,e){return e.fs_.unlink(t).catch(()=>{})}async function B6e(t,e,r){let i=await S6e(t,r);return await b6e(e,r),v6e(t,e,i,r)}function b6e(t,e){return e.fs_.mkdir(Is.dirname(t),{recursive:!0})}function v6e(t,e,r,i){let n=pce(i),s=[{generator:P6e,extension:""}];return n.createCmdFile&&s.push({generator:k6e,extension:".cmd"}),n.createPwshFile&&s.push({generator:D6e,extension:".ps1"}),Promise.all(s.map(o=>x6e(t,e+o.extension,r,o.generator,n)))}function R6e(t,e){return Q6e(t,e)}function N6e(t,e){return F6e(t,e)}async function S6e(t,e){let n=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(E6e);if(!n){let s=Is.extname(t).toLowerCase();return{program:w6e.get(s)||null,additionalArgs:""}}return{program:n[1],additionalArgs:n[2]}}async function x6e(t,e,r,i,n){let s=n.preserveSymlinks?"--preserve-symlinks":"",o=[r.additionalArgs,s].filter(a=>a).join(" ");return n=Object.assign({},n,{prog:r.program,args:o}),await R6e(e,n),await n.fs_.writeFile(e,i(t,e,n),"utf8"),N6e(e,n)}function k6e(t,e,r){let n=Is.relative(Is.dirname(e),t).split("/").join("\\"),s=Is.isAbsolute(n)?`"${n}"`:`"%~dp0\\${n}"`,o,a=r.prog,l=r.args||"",c=cT(r.nodePath).win32;a?(o=`"%~dp0\\${a}.exe"`,n=s):(a=s,l="",n="");let u=r.progArgs?`${r.progArgs.join(" ")} `:"",g=c?`@SET NODE_PATH=${c}\r -`:"";return o?g+=`@IF EXIST ${o} (\r - ${o} ${l} ${n} ${u}%*\r -) ELSE (\r - @SETLOCAL\r - @SET PATHEXT=%PATHEXT:;.JS;=;%\r - ${a} ${l} ${n} ${u}%*\r -)\r -`:g+=`@${a} ${l} ${n} ${u}%*\r -`,g}function P6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s;i=i.split("\\").join("/");let o=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,a=r.args||"",l=cT(r.nodePath).posix;n?(s=`"$basedir/${r.prog}"`,i=o):(n=o,a="",i="");let c=r.progArgs?`${r.progArgs.join(" ")} `:"",u=`#!/bin/sh -basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") - -case \`uname\` in - *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;; -esac - -`,g=r.nodePath?`export NODE_PATH="${l}" -`:"";return s?u+=`${g}if [ -x ${s} ]; then - exec ${s} ${a} ${i} ${c}"$@" -else - exec ${n} ${a} ${i} ${c}"$@" -fi -`:u+=`${g}${n} ${a} ${i} ${c}"$@" -exit $? -`,u}function D6e(t,e,r){let i=Is.relative(Is.dirname(e),t),n=r.prog&&r.prog.split("\\").join("/"),s=n&&`"${n}$exe"`,o;i=i.split("\\").join("/");let a=Is.isAbsolute(i)?`"${i}"`:`"$basedir/${i}"`,l=r.args||"",c=cT(r.nodePath),u=c.win32,g=c.posix;s?(o=`"$basedir/${r.prog}$exe"`,i=a):(s=a,l="",i="");let f=r.progArgs?`${r.progArgs.join(" ")} `:"",h=`#!/usr/bin/env pwsh -$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent - -$exe="" -${r.nodePath?`$env_node_path=$env:NODE_PATH -$env:NODE_PATH="${u}" -`:""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { - # Fix case when both the Windows and Linux builds of Node - # are installed in the same directory - $exe=".exe" -}`;return r.nodePath&&(h+=` else { - $env:NODE_PATH="${g}" -}`),o?h+=` -$ret=0 -if (Test-Path ${o}) { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${o} ${l} ${i} ${f}$args - } else { - & ${o} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} else { - # Support pipeline input - if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args - } else { - & ${s} ${l} ${i} ${f}$args - } - $ret=$LASTEXITCODE -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $ret -`:h+=` -# Support pipeline input -if ($MyInvocation.ExpectingInput) { - $input | & ${s} ${l} ${i} ${f}$args -} else { - & ${s} ${l} ${i} ${f}$args -} -${r.nodePath?`$env:NODE_PATH=$env_node_path -`:""}exit $LASTEXITCODE -`,h}function F6e(t,e){return e.fs_.chmod(t,493)}function cT(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Is.delimiter):Array.from(t),r={};for(let i=0;i`/mnt/${a.toLowerCase()}`):e[i];r.win32=r.win32?`${r.win32};${n}`:n,r.posix=r.posix?`${r.posix}:${s}`:s,r[i]={win32:n,posix:s}}return r}fce.exports=lT});var PT=I((fPt,Nce)=>{Nce.exports=require("stream")});var Oce=I((hPt,Lce)=>{"use strict";function Tce(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function e9e(t){for(var e=1;e0?this.tail.next=i:this.head=i,this.tail=i,++this.length}},{key:"unshift",value:function(r){var i={data:r,next:this.head};this.length===0&&(this.tail=i),this.head=i,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var i=this.head,n=""+i.data;i=i.next;)n+=r+i.data;return n}},{key:"concat",value:function(r){if(this.length===0)return iQ.alloc(0);for(var i=iQ.allocUnsafe(r>>>0),n=this.head,s=0;n;)o9e(n.data,i,s),s+=n.data.length,n=n.next;return i}},{key:"consume",value:function(r,i){var n;return ro.length?o.length:r;if(a===o.length?s+=o:s+=o.slice(0,r),r-=a,r===0){a===o.length?(++n,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(a));break}++n}return this.length-=n,s}},{key:"_getBuffer",value:function(r){var i=iQ.allocUnsafe(r),n=this.head,s=1;for(n.data.copy(i),r-=n.data.length;n=n.next;){var o=n.data,a=r>o.length?o.length:r;if(o.copy(i,i.length-r,0,a),r-=a,r===0){a===o.length?(++s,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(a));break}++s}return this.length-=s,i}},{key:s9e,value:function(r,i){return DT(this,e9e({},i,{depth:0,customInspect:!1}))}}]),t}()});var FT=I((pPt,Kce)=>{"use strict";function a9e(t,e){var r=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(RT,this,t)):process.nextTick(RT,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(s){!e&&s?r._writableState?r._writableState.errorEmitted?process.nextTick(nQ,r):(r._writableState.errorEmitted=!0,process.nextTick(Uce,r,s)):process.nextTick(Uce,r,s):e?(process.nextTick(nQ,r),e(s)):process.nextTick(nQ,r)}),this)}function Uce(t,e){RT(t,e),nQ(t)}function nQ(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function A9e(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function RT(t,e){t.emit("error",e)}function l9e(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}Kce.exports={destroy:a9e,undestroy:A9e,errorOrDestroy:l9e}});var VA=I((dPt,Hce)=>{"use strict";var Gce={};function Es(t,e,r){r||(r=Error);function i(s,o,a){return typeof e=="string"?e:e(s,o,a)}class n extends r{constructor(o,a,l){super(i(o,a,l))}}n.prototype.name=r.name,n.prototype.code=t,Gce[t]=n}function jce(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(i=>String(i)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function c9e(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function u9e(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function g9e(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Es("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);Es("ERR_INVALID_ARG_TYPE",function(t,e,r){let i;typeof e=="string"&&c9e(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be";let n;if(u9e(t," argument"))n=`The ${t} ${i} ${jce(e,"type")}`;else{let s=g9e(t,".")?"property":"argument";n=`The "${t}" ${s} ${i} ${jce(e,"type")}`}return n+=`. Received type ${typeof r}`,n},TypeError);Es("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Es("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});Es("ERR_STREAM_PREMATURE_CLOSE","Premature close");Es("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});Es("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Es("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Es("ERR_STREAM_WRITE_AFTER_END","write after end");Es("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Es("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);Es("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");Hce.exports.codes=Gce});var NT=I((CPt,Yce)=>{"use strict";var f9e=VA().codes.ERR_INVALID_OPT_VALUE;function h9e(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p9e(t,e,r,i){var n=h9e(e,i,r);if(n!=null){if(!(isFinite(n)&&Math.floor(n)===n)||n<0){var s=i?r:"highWaterMark";throw new f9e(s,n)}return Math.floor(n)}return t.objectMode?16:16*1024}Yce.exports={getHighWaterMark:p9e}});var qce=I((mPt,LT)=>{typeof Object.create=="function"?LT.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:LT.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var _A=I((IPt,TT)=>{try{if(MT=require("util"),typeof MT.inherits!="function")throw"";TT.exports=MT.inherits}catch(t){TT.exports=qce()}var MT});var Wce=I((EPt,Jce)=>{Jce.exports=require("util").deprecate});var UT=I((yPt,zce)=>{"use strict";zce.exports=Sr;function Vce(t){var e=this;this.next=null,this.entry=null,this.finish=function(){d9e(e,t)}}var Ef;Sr.WritableState=em;var C9e={deprecate:Wce()},_ce=PT(),sQ=require("buffer").Buffer,m9e=global.Uint8Array||function(){};function I9e(t){return sQ.from(t)}function E9e(t){return sQ.isBuffer(t)||t instanceof m9e}var OT=FT(),y9e=NT(),w9e=y9e.getHighWaterMark,XA=VA().codes,B9e=XA.ERR_INVALID_ARG_TYPE,Q9e=XA.ERR_METHOD_NOT_IMPLEMENTED,b9e=XA.ERR_MULTIPLE_CALLBACK,v9e=XA.ERR_STREAM_CANNOT_PIPE,S9e=XA.ERR_STREAM_DESTROYED,x9e=XA.ERR_STREAM_NULL_VALUES,k9e=XA.ERR_STREAM_WRITE_AFTER_END,P9e=XA.ERR_UNKNOWN_ENCODING,yf=OT.errorOrDestroy;_A()(Sr,_ce);function D9e(){}function em(t,e,r){Ef=Ef||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Ef),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=w9e(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=t.decodeStrings===!1;this.decodeStrings=!i,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(n){R9e(e,n)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Vce(this)}em.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(em.prototype,"buffer",{get:C9e.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}})();var oQ;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(oQ=Function.prototype[Symbol.hasInstance],Object.defineProperty(Sr,Symbol.hasInstance,{value:function(e){return oQ.call(this,e)?!0:this!==Sr?!1:e&&e._writableState instanceof em}})):oQ=function(e){return e instanceof this};function Sr(t){Ef=Ef||Yc();var e=this instanceof Ef;if(!e&&!oQ.call(Sr,this))return new Sr(t);this._writableState=new em(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),_ce.call(this)}Sr.prototype.pipe=function(){yf(this,new v9e)};function F9e(t,e){var r=new k9e;yf(t,r),process.nextTick(e,r)}function N9e(t,e,r,i){var n;return r===null?n=new x9e:typeof r!="string"&&!e.objectMode&&(n=new B9e("chunk",["string","Buffer"],r)),n?(yf(t,n),process.nextTick(i,n),!1):!0}Sr.prototype.write=function(t,e,r){var i=this._writableState,n=!1,s=!i.objectMode&&E9e(t);return s&&!sQ.isBuffer(t)&&(t=I9e(t)),typeof e=="function"&&(r=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),typeof r!="function"&&(r=D9e),i.ending?F9e(this,r):(s||N9e(this,i,t,r))&&(i.pendingcb++,n=L9e(this,i,s,t,e,r)),n};Sr.prototype.cork=function(){this._writableState.corked++};Sr.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&Xce(this,t))};Sr.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P9e(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Sr.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function T9e(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=sQ.from(e,r)),e}Object.defineProperty(Sr.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L9e(t,e,r,i,n,s){if(!r){var o=T9e(e,i,n);i!==o&&(r=!0,n="buffer",i=o)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length{"use strict";var j9e=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};eue.exports=Mo;var tue=HT(),GT=UT();_A()(Mo,tue);for(jT=j9e(GT.prototype),aQ=0;aQ{var lQ=require("buffer"),qa=lQ.Buffer;function iue(t,e){for(var r in t)e[r]=t[r]}qa.from&&qa.alloc&&qa.allocUnsafe&&qa.allocUnsafeSlow?rue.exports=lQ:(iue(lQ,YT),YT.Buffer=wf);function wf(t,e,r){return qa(t,e,r)}iue(qa,wf);wf.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return qa(t,e,r)};wf.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=qa(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};wf.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return qa(t)};wf.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return lQ.SlowBuffer(t)}});var WT=I(sue=>{"use strict";var qT=nue().Buffer,oue=qT.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function J9e(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W9e(t){var e=J9e(t);if(typeof e!="string"&&(qT.isEncoding===oue||!oue(t)))throw new Error("Unknown encoding: "+t);return e||t}sue.StringDecoder=rm;function rm(t){this.encoding=W9e(t);var e;switch(this.encoding){case"utf16le":this.text=V9e,this.end=_9e,e=4;break;case"utf8":this.fillLast=z9e,e=4;break;case"base64":this.text=X9e,this.end=Z9e,e=3;break;default:this.write=$9e,this.end=e7e;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=qT.allocUnsafe(e)}rm.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function i7e(t,e,r){var i=e.length-1;if(i=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(n===2?n=0:t.lastNeed=n-3),n):0))}function n7e(t,e,r){if((e[0]&192)!=128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!=128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!=128)return t.lastNeed=2,"\uFFFD"}}function z9e(t){var e=this.lastTotal-this.lastNeed,r=n7e(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function r7e(t,e){var r=i7e(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)}function t7e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function V9e(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function _9e(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function X9e(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function Z9e(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function $9e(t){return t.toString(this.encoding)}function e7e(t){return t&&t.length?this.write(t):""}});var cQ=I((QPt,aue)=>{"use strict";var Aue=VA().codes.ERR_STREAM_PREMATURE_CLOSE;function s7e(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{"use strict";var uQ;function ZA(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var A7e=cQ(),$A=Symbol("lastResolve"),qc=Symbol("lastReject"),im=Symbol("error"),gQ=Symbol("ended"),Jc=Symbol("lastPromise"),zT=Symbol("handlePromise"),Wc=Symbol("stream");function el(t,e){return{value:t,done:e}}function l7e(t){var e=t[$A];if(e!==null){var r=t[Wc].read();r!==null&&(t[Jc]=null,t[$A]=null,t[qc]=null,e(el(r,!1)))}}function c7e(t){process.nextTick(l7e,t)}function u7e(t,e){return function(r,i){t.then(function(){if(e[gQ]){r(el(void 0,!0));return}e[zT](r,i)},i)}}var g7e=Object.getPrototypeOf(function(){}),f7e=Object.setPrototypeOf((uQ={get stream(){return this[Wc]},next:function(){var e=this,r=this[im];if(r!==null)return Promise.reject(r);if(this[gQ])return Promise.resolve(el(void 0,!0));if(this[Wc].destroyed)return new Promise(function(o,a){process.nextTick(function(){e[im]?a(e[im]):o(el(void 0,!0))})});var i=this[Jc],n;if(i)n=new Promise(u7e(i,this));else{var s=this[Wc].read();if(s!==null)return Promise.resolve(el(s,!1));n=new Promise(this[zT])}return this[Jc]=n,n}},ZA(uQ,Symbol.asyncIterator,function(){return this}),ZA(uQ,"return",function(){var e=this;return new Promise(function(r,i){e[Wc].destroy(null,function(n){if(n){i(n);return}r(el(void 0,!0))})})}),uQ),g7e),h7e=function(e){var r,i=Object.create(f7e,(r={},ZA(r,Wc,{value:e,writable:!0}),ZA(r,$A,{value:null,writable:!0}),ZA(r,qc,{value:null,writable:!0}),ZA(r,im,{value:null,writable:!0}),ZA(r,gQ,{value:e._readableState.endEmitted,writable:!0}),ZA(r,zT,{value:function(s,o){var a=i[Wc].read();a?(i[Jc]=null,i[$A]=null,i[qc]=null,s(el(a,!1))):(i[$A]=s,i[qc]=o)},writable:!0}),r));return i[Jc]=null,A7e(e,function(n){if(n&&n.code!=="ERR_STREAM_PREMATURE_CLOSE"){var s=i[qc];s!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,s(n)),i[im]=n;return}var o=i[$A];o!==null&&(i[Jc]=null,i[$A]=null,i[qc]=null,o(el(void 0,!0))),i[gQ]=!0}),e.on("readable",c7e.bind(null,i)),i};cue.exports=h7e});var pue=I((vPt,gue)=>{"use strict";function fue(t,e,r,i,n,s,o){try{var a=t[s](o),l=a.value}catch(c){r(c);return}a.done?e(l):Promise.resolve(l).then(i,n)}function p7e(t){return function(){var e=this,r=arguments;return new Promise(function(i,n){var s=t.apply(e,r);function o(l){fue(s,i,n,o,a,"next",l)}function a(l){fue(s,i,n,o,a,"throw",l)}o(void 0)})}}function hue(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,i)}return r}function C7e(t){for(var e=1;e{"use strict";due.exports=kt;var Bf;kt.ReadableState=Cue;var SPt=require("events").EventEmitter,mue=function(e,r){return e.listeners(r).length},nm=PT(),fQ=require("buffer").Buffer,E7e=global.Uint8Array||function(){};function y7e(t){return fQ.from(t)}function w7e(t){return fQ.isBuffer(t)||t instanceof E7e}var VT=require("util"),It;VT&&VT.debuglog?It=VT.debuglog("stream"):It=function(){};var B7e=Oce(),_T=FT(),Q7e=NT(),b7e=Q7e.getHighWaterMark,hQ=VA().codes,v7e=hQ.ERR_INVALID_ARG_TYPE,S7e=hQ.ERR_STREAM_PUSH_AFTER_EOF,x7e=hQ.ERR_METHOD_NOT_IMPLEMENTED,k7e=hQ.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Qf,XT,ZT;_A()(kt,nm);var sm=_T.errorOrDestroy,$T=["error","close","destroy","pause","resume"];function P7e(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function Cue(t,e,r){Bf=Bf||Yc(),t=t||{},typeof r!="boolean"&&(r=e instanceof Bf),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=b7e(this,t,"readableHighWaterMark",r),this.buffer=new B7e,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(Qf||(Qf=WT().StringDecoder),this.decoder=new Qf(t.encoding),this.encoding=t.encoding)}function kt(t){if(Bf=Bf||Yc(),!(this instanceof kt))return new kt(t);var e=this instanceof Bf;this._readableState=new Cue(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),nm.call(this)}Object.defineProperty(kt.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});kt.prototype.destroy=_T.destroy;kt.prototype._undestroy=_T.undestroy;kt.prototype._destroy=function(t,e){e(t)};kt.prototype.push=function(t,e){var r=this._readableState,i;return r.objectMode?i=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=fQ.from(t,e),e=""),i=!0),Iue(this,t,e,!1,i)};kt.prototype.unshift=function(t){return Iue(this,t,null,!0,!1)};function Iue(t,e,r,i,n){It("readableAddChunk",e);var s=t._readableState;if(e===null)s.reading=!1,R7e(t,s);else{var o;if(n||(o=D7e(s,e)),o)sm(t,o);else if(s.objectMode||e&&e.length>0)if(typeof e!="string"&&!s.objectMode&&Object.getPrototypeOf(e)!==fQ.prototype&&(e=y7e(e)),i)s.endEmitted?sm(t,new k7e):eM(t,s,e,!0);else if(s.ended)sm(t,new S7e);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(e=s.decoder.write(e),s.objectMode||e.length!==0?eM(t,s,e,!1):tM(t,s)):eM(t,s,e,!1)}else i||(s.reading=!1,tM(t,s))}return!s.ended&&(s.length=Eue?t=Eue:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function yue(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=F7e(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}kt.prototype.read=function(t){It("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return It("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?rM(this):pQ(this),null;if(t=yue(t,e),t===0&&e.ended)return e.length===0&&rM(this),null;var i=e.needReadable;It("need readable",i),(e.length===0||e.length-t0?n=wue(t,e):n=null,n===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&rM(this)),n!==null&&this.emit("data",n),n};function R7e(t,e){if(It("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?pQ(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,Bue(t)))}}function pQ(t){var e=t._readableState;It("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(It("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(Bue,t))}function Bue(t){var e=t._readableState;It("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,iM(t)}function tM(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(N7e,t,e))}function N7e(t,e){for(;!e.reading&&!e.ended&&(e.length1&&Que(i.pipes,t)!==-1)&&!c&&(It("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(m){It("onerror",m),d(),t.removeListener("error",f),mue(t,"error")===0&&sm(t,m)}P7e(t,"error",f);function h(){t.removeListener("finish",p),d()}t.once("close",h);function p(){It("onfinish"),t.removeListener("close",h),d()}t.once("finish",p);function d(){It("unpipe"),r.unpipe(t)}return t.emit("pipe",r),i.flowing||(It("pipe resume"),r.resume()),t};function L7e(t){return function(){var r=t._readableState;It("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&mue(t,"data")&&(r.flowing=!0,iM(t))}}kt.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var s=0;s0,i.flowing!==!1&&this.resume()):t==="readable"&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,It("on readable",i.length,i.reading),i.length?pQ(this):i.reading||process.nextTick(T7e,this)),r};kt.prototype.addListener=kt.prototype.on;kt.prototype.removeListener=function(t,e){var r=nm.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(bue,this),r};kt.prototype.removeAllListeners=function(t){var e=nm.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(bue,this),e};function bue(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T7e(t){It("readable nexttick read 0"),t.read(0)}kt.prototype.resume=function(){var t=this._readableState;return t.flowing||(It("resume"),t.flowing=!t.readableListening,M7e(this,t)),t.paused=!1,this};function M7e(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(O7e,t,e))}function O7e(t,e){It("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),iM(t),e.flowing&&!e.reading&&t.read(0)}kt.prototype.pause=function(){return It("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(It("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function iM(t){var e=t._readableState;for(It("flow",e.flowing);e.flowing&&t.read()!==null;);}kt.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;t.on("end",function(){if(It("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&e.push(o)}e.push(null)}),t.on("data",function(o){if(It("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var a=e.push(o);a||(i=!0,t.pause())}});for(var n in t)this[n]===void 0&&typeof t[n]=="function"&&(this[n]=function(a){return function(){return t[a].apply(t,arguments)}}(n));for(var s=0;s<$T.length;s++)t.on($T[s],this.emit.bind(this,$T[s]));return this._read=function(o){It("wrapped _read",o),i&&(i=!1,t.resume())},this};typeof Symbol=="function"&&(kt.prototype[Symbol.asyncIterator]=function(){return XT===void 0&&(XT=uue()),XT(this)});Object.defineProperty(kt.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(kt.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(kt.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});kt._fromList=wue;Object.defineProperty(kt.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function wue(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function rM(t){var e=t._readableState;It("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(K7e,e,t))}function K7e(t,e){if(It("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(kt.from=function(t,e){return ZT===void 0&&(ZT=pue()),ZT(kt,t,e)});function Que(t,e){for(var r=0,i=t.length;r{"use strict";vue.exports=Ja;var dQ=VA().codes,U7e=dQ.ERR_METHOD_NOT_IMPLEMENTED,H7e=dQ.ERR_MULTIPLE_CALLBACK,G7e=dQ.ERR_TRANSFORM_ALREADY_TRANSFORMING,j7e=dQ.ERR_TRANSFORM_WITH_LENGTH_0,CQ=Yc();_A()(Ja,CQ);function Y7e(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(i===null)return this.emit("error",new H7e);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";xue.exports=om;var kue=nM();_A()(om,kue);function om(t){if(!(this instanceof om))return new om(t);kue.call(this,t)}om.prototype._transform=function(t,e,r){r(null,t)}});var Lue=I((DPt,Due)=>{"use strict";var sM;function J7e(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Rue=VA().codes,W7e=Rue.ERR_MISSING_ARGS,z7e=Rue.ERR_STREAM_DESTROYED;function Fue(t){if(t)throw t}function V7e(t){return t.setHeader&&typeof t.abort=="function"}function _7e(t,e,r,i){i=J7e(i);var n=!1;t.on("close",function(){n=!0}),sM===void 0&&(sM=cQ()),sM(t,{readable:e,writable:r},function(o){if(o)return i(o);n=!0,i()});var s=!1;return function(o){if(!n&&!s){if(s=!0,V7e(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();i(o||new z7e("pipe"))}}}function Nue(t){t()}function X7e(t,e){return t.pipe(e)}function Z7e(t){return!t.length||typeof t[t.length-1]!="function"?Fue:t.pop()}function $7e(){for(var t=arguments.length,e=new Array(t),r=0;r0;return _7e(o,l,c,function(u){n||(n=u),u&&s.forEach(Nue),!l&&(s.forEach(Nue),i(n))})});return e.reduce(X7e)}Due.exports=$7e});var bf=I((ys,am)=>{var Am=require("stream");process.env.READABLE_STREAM==="disable"&&Am?(am.exports=Am.Readable,Object.assign(am.exports,Am),am.exports.Stream=Am):(ys=am.exports=HT(),ys.Stream=Am||ys,ys.Readable=ys,ys.Writable=UT(),ys.Duplex=Yc(),ys.Transform=nM(),ys.PassThrough=Pue(),ys.finished=cQ(),ys.pipeline=Lue())});var Oue=I((RPt,Tue)=>{"use strict";var{Buffer:_s}=require("buffer"),Mue=Symbol.for("BufferList");function nr(t){if(!(this instanceof nr))return new nr(t);nr._init.call(this,t)}nr._init=function(e){Object.defineProperty(this,Mue,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};nr.prototype._new=function(e){return new nr(e)};nr.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let i=0;ithis.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};nr.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};nr.prototype.copy=function(e,r,i,n){if((typeof i!="number"||i<0)&&(i=0),(typeof n!="number"||n>this.length)&&(n=this.length),i>=this.length||n<=0)return e||_s.alloc(0);let s=!!e,o=this._offset(i),a=n-i,l=a,c=s&&r||0,u=o[1];if(i===0&&n===this.length){if(!s)return this._bufs.length===1?this._bufs[0]:_s.concat(this._bufs,this.length);for(let g=0;gf)this._bufs[g].copy(e,c,u),c+=f;else{this._bufs[g].copy(e,c,u,u+l),c+=f;break}l-=f,u&&(u=0)}return e.length>c?e.slice(0,c):e};nr.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let i=this._offset(e),n=this._offset(r),s=this._bufs.slice(i[0],n[0]+1);return n[1]===0?s.pop():s[s.length-1]=s[s.length-1].slice(0,n[1]),i[1]!==0&&(s[0]=s[0].slice(i[1])),this._new(s)};nr.prototype.toString=function(e,r,i){return this.slice(r,i).toString(e)};nr.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};nr.prototype.duplicate=function(){let e=this._new();for(let r=0;rthis.length?this.length:e;let i=this._offset(e),n=i[0],s=i[1];for(;n=t.length){let l=o.indexOf(t,s);if(l!==-1)return this._reverseOffset([n,l]);s=o.length-t.length+1}else{let l=this._reverseOffset([n,s]);if(this._match(l,t))return l;s++}s=0}return-1};nr.prototype._match=function(t,e){if(this.length-t{"use strict";var oM=bf().Duplex,eVe=_A(),lm=Oue();function Oi(t){if(!(this instanceof Oi))return new Oi(t);if(typeof t=="function"){this._callback=t;let e=function(i){this._callback&&(this._callback(i),this._callback=null)}.bind(this);this.on("pipe",function(i){i.on("error",e)}),this.on("unpipe",function(i){i.removeListener("error",e)}),t=null}lm._init.call(this,t),oM.call(this)}eVe(Oi,oM);Object.assign(Oi.prototype,lm.prototype);Oi.prototype._new=function(e){return new Oi(e)};Oi.prototype._write=function(e,r,i){this._appendBuffer(e),typeof i=="function"&&i()};Oi.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oi.prototype.end=function(e){oM.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oi.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oi.prototype._isBufferList=function(e){return e instanceof Oi||e instanceof lm||Oi.isBufferList(e)};Oi.isBufferList=lm.isBufferList;mQ.exports=Oi;mQ.exports.BufferListStream=Oi;mQ.exports.BufferList=lm});var lM=I(vf=>{var tVe=Buffer.alloc,rVe="0000000000000000000",iVe="7777777777777777777",Uue="0".charCodeAt(0),Hue=Buffer.from("ustar\0","binary"),nVe=Buffer.from("00","binary"),sVe=Buffer.from("ustar ","binary"),oVe=Buffer.from(" \0","binary"),aVe=parseInt("7777",8),cm=257,aM=263,AVe=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},lVe=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},cVe=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},Gue=function(t,e,r,i){for(;re?iVe.slice(0,e)+" ":rVe.slice(0,e-t.length)+t+" "};function uVe(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],i=t.length-1;i>0;i--){var n=t[i];e?r.push(n):r.push(255-n)}var s=0,o=r.length;for(i=0;i=Math.pow(10,r)&&r++,e+r+t};vf.decodeLongPath=function(t,e){return Sf(t,0,t.length,e)};vf.encodePax=function(t){var e="";t.name&&(e+=AM(" path="+t.name+` -`)),t.linkname&&(e+=AM(" linkpath="+t.linkname+` -`));var r=t.pax;if(r)for(var i in r)e+=AM(" "+i+"="+r[i]+` -`);return Buffer.from(e)};vf.decodePax=function(t){for(var e={};t.length;){for(var r=0;r100;){var n=r.indexOf("/");if(n===-1)return null;i+=i?"/"+r.slice(0,n):r.slice(0,n),r=r.slice(n+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(i)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(tl(t.mode&aVe,6),100),e.write(tl(t.uid,6),108),e.write(tl(t.gid,6),116),e.write(tl(t.size,11),124),e.write(tl(t.mtime.getTime()/1e3|0,11),136),e[156]=Uue+cVe(t.type),t.linkname&&e.write(t.linkname,157),Hue.copy(e,cm),nVe.copy(e,aM),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(tl(t.devmajor||0,6),329),e.write(tl(t.devminor||0,6),337),i&&e.write(i,345),e.write(tl(jue(e),6),148),e)};vf.decode=function(t,e,r){var i=t[156]===0?0:t[156]-Uue,n=Sf(t,0,100,e),s=rl(t,100,8),o=rl(t,108,8),a=rl(t,116,8),l=rl(t,124,12),c=rl(t,136,12),u=lVe(i),g=t[157]===0?null:Sf(t,157,100,e),f=Sf(t,265,32),h=Sf(t,297,32),p=rl(t,329,8),d=rl(t,337,8),m=jue(t);if(m===8*32)return null;if(m!==rl(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(Hue.compare(t,cm,cm+6)===0)t[345]&&(n=Sf(t,345,155,e)+"/"+n);else if(!(sVe.compare(t,cm,cm+6)===0&&oVe.compare(t,aM,aM+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return i===0&&n&&n[n.length-1]==="/"&&(i=5),{name:n,mode:s,uid:o,gid:a,size:l,mtime:new Date(1e3*c),type:u,linkname:g,uname:f,gname:h,devmajor:p,devminor:d}}});var _ue=I((LPt,Yue)=>{var que=require("util"),gVe=Kue(),um=lM(),Jue=bf().Writable,Wue=bf().PassThrough,zue=function(){},Vue=function(t){return t&=511,t&&512-t},fVe=function(t,e){var r=new IQ(t,e);return r.end(),r},hVe=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},IQ=function(t,e){this._parent=t,this.offset=e,Wue.call(this,{autoDestroy:!1})};que.inherits(IQ,Wue);IQ.prototype.destroy=function(t){this._parent.destroy(t)};var Wa=function(t){if(!(this instanceof Wa))return new Wa(t);Jue.call(this,t),t=t||{},this._offset=0,this._buffer=gVe(),this._missing=0,this._partial=!1,this._onparse=zue,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,i=function(){e._continue()},n=function(f){if(e._locked=!1,f)return e.destroy(f);e._stream||i()},s=function(){e._stream=null;var f=Vue(e._header.size);f?e._parse(f,o):e._parse(512,g),e._locked||i()},o=function(){e._buffer.consume(Vue(e._header.size)),e._parse(512,g),i()},a=function(){var f=e._header.size;e._paxGlobal=um.decodePax(r.slice(0,f)),r.consume(f),s()},l=function(){var f=e._header.size;e._pax=um.decodePax(r.slice(0,f)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(f),s()},c=function(){var f=e._header.size;this._gnuLongPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},u=function(){var f=e._header.size;this._gnuLongLinkPath=um.decodeLongPath(r.slice(0,f),t.filenameEncoding),r.consume(f),s()},g=function(){var f=e._offset,h;try{h=e._header=um.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(p){e.emit("error",p)}if(r.consume(512),!h){e._parse(512,g),i();return}if(h.type==="gnu-long-path"){e._parse(h.size,c),i();return}if(h.type==="gnu-long-link-path"){e._parse(h.size,u),i();return}if(h.type==="pax-global-header"){e._parse(h.size,a),i();return}if(h.type==="pax-header"){e._parse(h.size,l),i();return}if(e._gnuLongPath&&(h.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(h.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=h=hVe(h,e._pax),e._pax=null),e._locked=!0,!h.size||h.type==="directory"){e._parse(512,g),e.emit("entry",h,fVe(e,f),n);return}e._stream=new IQ(e,f),e.emit("entry",h,e._stream,n),e._parse(h.size,s),i()};this._onheader=g,this._parse(512,g)};que.inherits(Wa,Jue);Wa.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};Wa.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};Wa.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=zue,this._overflow?this._write(this._overflow,void 0,t):t()}};Wa.prototype._write=function(t,e,r){if(!this._destroyed){var i=this._stream,n=this._buffer,s=this._missing;if(t.length&&(this._partial=!0),t.lengths&&(o=t.slice(s),t=t.slice(0,s)),i?i.end(t):n.append(t),this._overflow=o,this._onparse()}};Wa.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};Yue.exports=Wa});var Zue=I((TPt,Xue)=>{Xue.exports=require("fs").constants||require("constants")});var ige=I((MPt,$ue)=>{var xf=Zue(),ege=tk(),EQ=_A(),pVe=Buffer.alloc,tge=bf().Readable,kf=bf().Writable,dVe=require("string_decoder").StringDecoder,yQ=lM(),CVe=parseInt("755",8),mVe=parseInt("644",8),rge=pVe(1024),cM=function(){},uM=function(t,e){e&=511,e&&t.push(rge.slice(0,512-e))};function IVe(t){switch(t&xf.S_IFMT){case xf.S_IFBLK:return"block-device";case xf.S_IFCHR:return"character-device";case xf.S_IFDIR:return"directory";case xf.S_IFIFO:return"fifo";case xf.S_IFLNK:return"symlink"}return"file"}var wQ=function(t){kf.call(this),this.written=0,this._to=t,this._destroyed=!1};EQ(wQ,kf);wQ.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};wQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BQ=function(){kf.call(this),this.linkname="",this._decoder=new dVe("utf-8"),this._destroyed=!1};EQ(BQ,kf);BQ.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};BQ.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var gm=function(){kf.call(this),this._destroyed=!1};EQ(gm,kf);gm.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};gm.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Oo=function(t){if(!(this instanceof Oo))return new Oo(t);tge.call(this,t),this._drain=cM,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};EQ(Oo,tge);Oo.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=cM);var i=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=IVe(t.mode)),t.mode||(t.mode=t.type==="directory"?CVe:mVe),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var n=this.push(e);return uM(i,t.size),n?process.nextTick(r):this._drain=r,new gm}if(t.type==="symlink"&&!t.linkname){var s=new BQ;return ege(s,function(a){if(a)return i.destroy(),r(a);t.linkname=s.linkname,i._encode(t),r()}),s}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new gm;var o=new wQ(this);return this._stream=o,ege(o,function(a){if(i._stream=null,a)return i.destroy(),r(a);if(o.written!==t.size)return i.destroy(),r(new Error("size mismatch"));uM(i,t.size),i._finalizing&&i.finalize(),r()}),o}};Oo.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(rge),this.push(null))};Oo.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};Oo.prototype._encode=function(t){if(!t.pax){var e=yQ.encode(t);if(e){this.push(e);return}}this._encodePax(t)};Oo.prototype._encodePax=function(t){var e=yQ.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(yQ.encode(r)),this.push(e),uM(this,e.length),r.size=t.size,r.type=t.type,this.push(yQ.encode(r))};Oo.prototype._read=function(t){var e=this._drain;this._drain=cM,e()};$ue.exports=Oo});var nge=I(gM=>{gM.extract=_ue();gM.pack=ige()});var Cge=I((oDt,fge)=>{"use strict";var Pf=class{constructor(e,r,i){this.__specs=e||{},Object.keys(this.__specs).forEach(n=>{if(typeof this.__specs[n]=="string"){let s=this.__specs[n],o=this.__specs[s];if(o){let a=o.aliases||[];a.push(n,s),o.aliases=[...new Set(a)],this.__specs[n]=o}else throw new Error(`Alias refers to invalid key: ${s} -> ${n}`)}}),this.__opts=r||{},this.__providers=pge(i.filter(n=>n!=null&&typeof n=="object")),this.__isFiggyPudding=!0}get(e){return mM(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[i,n]of this.entries())e.call(r,n,i,this)}toJSON(){let e={};return this.forEach((r,i)=>{e[i]=r}),e}*entries(e){for(let i of Object.keys(this.__specs))yield[i,this.get(i)];let r=e||this.__opts.other;if(r){let i=new Set;for(let n of this.__providers){let s=n.entries?n.entries(r):RVe(n);for(let[o,a]of s)r(o)&&!i.has(o)&&(i.add(o),yield[o,a])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Pf(this.__specs,this.__opts,pge(this.__providers).concat(e)),hge)}};try{let t=require("util");Pf.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch(t){}function FVe(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function mM(t,e,r){let i=t.__specs[e];if(r&&!i&&(!t.__opts.other||!t.__opts.other(e)))FVe(e);else{i||(i={});let n;for(let s of t.__providers){if(n=dge(e,s),n===void 0&&i.aliases&&i.aliases.length){for(let o of i.aliases)if(o!==e&&(n=dge(o,s),n!==void 0))break}if(n!==void 0)break}return n===void 0&&i.default!==void 0?typeof i.default=="function"?i.default(t):i.default:n}}function dge(t,e){let r;return e.__isFiggyPudding?r=mM(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var hge={has(t,e){return e in t.__specs&&mM(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Pf.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};fge.exports=NVe;function NVe(t,e){function r(...i){return new Proxy(new Pf(t,e,i),hge)}return r}function pge(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function RVe(t){return Object.keys(t).map(e=>[e,t[e]])}});var Ege=I((aDt,Ko)=>{"use strict";var hm=require("crypto"),LVe=Cge(),TVe=require("stream").Transform,mge=["sha256","sha384","sha512"],MVe=/^[a-z0-9+/]+(?:=?=?)$/i,OVe=/^([^-]+)-([^?]+)([?\S*]*)$/,KVe=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,UVe=/^[\x21-\x7E]+$/,on=LVe({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>HVe},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),zc=class{get isHash(){return!0}constructor(e,r){r=on(r);let i=!!r.strict;this.source=e.trim();let n=this.source.match(i?KVe:OVe);if(!n||i&&!mge.some(o=>o===n[1]))return;this.algorithm=n[1],this.digest=n[2];let s=n[3];this.options=s?s.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=on(e),e.strict&&!(mge.some(i=>i===this.algorithm)&&this.digest.match(MVe)&&(this.options||[]).every(i=>i.match(UVe))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Df=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=on(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(i=>this[i].map(n=>zc.prototype.toString.call(n,e)).filter(n=>n.length).join(r)).filter(i=>i.length).join(r)}concat(e,r){r=on(r);let i=typeof e=="string"?e:pm(e,r);return Uo(`${this.toString(r)} ${i}`,r)}hexDigest(){return Uo(this,{single:!0}).hexDigest()}match(e,r){r=on(r);let i=Uo(e,r),n=i.pickAlgorithm(r);return this[n]&&i[n]&&this[n].find(s=>i[n].find(o=>s.digest===o.digest))||!1}pickAlgorithm(e){e=on(e);let r=e.pickAlgorithm,i=Object.keys(this);if(!i.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return i.reduce((n,s)=>r(n,s)||n)}};Ko.exports.parse=Uo;function Uo(t,e){if(e=on(e),typeof t=="string")return IM(t,e);if(t.algorithm&&t.digest){let r=new Df;return r[t.algorithm]=[t],IM(pm(r,e),e)}else return IM(pm(t,e),e)}function IM(t,e){return e.single?new zc(t,e):t.trim().split(/\s+/).reduce((r,i)=>{let n=new zc(i,e);if(n.algorithm&&n.digest){let s=n.algorithm;r[s]||(r[s]=[]),r[s].push(n)}return r},new Df)}Ko.exports.stringify=pm;function pm(t,e){return e=on(e),t.algorithm&&t.digest?zc.prototype.toString.call(t,e):typeof t=="string"?pm(Uo(t,e),e):Df.prototype.toString.call(t,e)}Ko.exports.fromHex=GVe;function GVe(t,e,r){r=on(r);let i=r.options&&r.options.length?`?${r.options.join("?")}`:"";return Uo(`${e}-${Buffer.from(t,"hex").toString("base64")}${i}`,r)}Ko.exports.fromData=jVe;function jVe(t,e){e=on(e);let r=e.algorithms,i=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((n,s)=>{let o=hm.createHash(s).update(t).digest("base64"),a=new zc(`${s}-${o}${i}`,e);if(a.algorithm&&a.digest){let l=a.algorithm;n[l]||(n[l]=[]),n[l].push(a)}return n},new Df)}Ko.exports.fromStream=YVe;function YVe(t,e){e=on(e);let r=e.Promise||Promise,i=EM(e);return new r((n,s)=>{t.pipe(i),t.on("error",s),i.on("error",s);let o;i.on("integrity",a=>{o=a}),i.on("end",()=>n(o)),i.on("data",()=>{})})}Ko.exports.checkData=qVe;function qVe(t,e,r){if(r=on(r),e=Uo(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let i=e.pickAlgorithm(r),n=hm.createHash(i).update(t).digest("base64"),s=Uo({algorithm:i,digest:n}),o=s.match(e,r);if(o||!r.error)return o;if(typeof r.size=="number"&&t.length!==r.size){let a=new Error(`data size mismatch when checking ${e}. - Wanted: ${r.size} - Found: ${t.length}`);throw a.code="EBADSIZE",a.found=t.length,a.expected=r.size,a.sri=e,a}else{let a=new Error(`Integrity checksum failed when using ${i}: Wanted ${e}, but got ${s}. (${t.length} bytes)`);throw a.code="EINTEGRITY",a.found=s,a.expected=e,a.algorithm=i,a.sri=e,a}}Ko.exports.checkStream=JVe;function JVe(t,e,r){r=on(r);let i=r.Promise||Promise,n=EM(r.concat({integrity:e}));return new i((s,o)=>{t.pipe(n),t.on("error",o),n.on("error",o);let a;n.on("verified",l=>{a=l}),n.on("end",()=>s(a)),n.on("data",()=>{})})}Ko.exports.integrityStream=EM;function EM(t){t=on(t);let e=t.integrity&&Uo(t.integrity,t),r=e&&Object.keys(e).length,i=r&&e.pickAlgorithm(t),n=r&&e[i],s=Array.from(new Set(t.algorithms.concat(i?[i]:[]))),o=s.map(hm.createHash),a=0,l=new TVe({transform(c,u,g){a+=c.length,o.forEach(f=>f.update(c,u)),g(null,c,u)}}).on("end",()=>{let c=t.options&&t.options.length?`?${t.options.join("?")}`:"",u=Uo(o.map((f,h)=>`${s[h]}-${f.digest("base64")}${c}`).join(" "),t),g=r&&u.match(e,t);if(typeof t.size=="number"&&a!==t.size){let f=new Error(`stream size mismatch when checking ${e}. - Wanted: ${t.size} - Found: ${a}`);f.code="EBADSIZE",f.found=a,f.expected=t.size,f.sri=e,l.emit("error",f)}else if(t.integrity&&!g){let f=new Error(`${e} integrity checksum failed when using ${i}: wanted ${n} but got ${u}. (${a} bytes)`);f.code="EINTEGRITY",f.found=u,f.expected=n,f.algorithm=i,f.sri=e,l.emit("error",f)}else l.emit("size",a),l.emit("integrity",u),g&&l.emit("verified",g)});return l}Ko.exports.create=WVe;function WVe(t){t=on(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",i=e.map(hm.createHash);return{update:function(n,s){return i.forEach(o=>o.update(n,s)),this},digest:function(n){return e.reduce((o,a)=>{let l=i.shift().digest("base64"),c=new zc(`${a}-${l}${r}`,t);if(c.algorithm&&c.digest){let u=c.algorithm;o[u]||(o[u]=[]),o[u].push(c)}return o},new Df)}}}var zVe=new Set(hm.getHashes()),Ige=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>zVe.has(t));function HVe(t,e){return Ige.indexOf(t.toLowerCase())>=Ige.indexOf(e.toLowerCase())?t:e}});var Fd={};it(Fd,{BuildType:()=>Gn,Cache:()=>Qt,Configuration:()=>fe,DEFAULT_LOCK_FILENAME:()=>DR,DEFAULT_RC_FILENAME:()=>PR,FormatType:()=>ps,InstallMode:()=>li,LightReport:()=>Fa,LinkType:()=>gt,Manifest:()=>Ze,MessageName:()=>z,PackageExtensionStatus:()=>ki,PackageExtensionType:()=>oi,Project:()=>Ke,ProjectLookup:()=>KA,Report:()=>Xi,ReportError:()=>nt,SettingsType:()=>ge,StreamReport:()=>Fe,TAG_REGEXP:()=>Rg,TelemetryManager:()=>Rd,ThrowReport:()=>ei,VirtualFetcher:()=>dd,Workspace:()=>Dd,WorkspaceResolver:()=>Yr,YarnVersion:()=>Zr,execUtils:()=>hr,folderUtils:()=>Pb,formatUtils:()=>ue,hashUtils:()=>mn,httpUtils:()=>Zt,miscUtils:()=>de,scriptUtils:()=>Kt,semverUtils:()=>qt,structUtils:()=>S,tgzUtils:()=>Ai,treeUtils:()=>Hs});var hr={};it(hr,{EndStrategy:()=>Pn,execvp:()=>Nhe,pipevp:()=>to});var ch={};it(ch,{AliasFS:()=>Xo,CwdFS:()=>Ft,DEFAULT_COMPRESSION_LEVEL:()=>pl,FakeFS:()=>eA,Filename:()=>wt,JailFS:()=>Zo,LazyFS:()=>oh,LinkStrategy:()=>eh,NoFS:()=>bI,NodeFS:()=>Wt,PortablePath:()=>Se,PosixFS:()=>ah,ProxiedFS:()=>fi,VirtualFS:()=>Pr,ZipFS:()=>Jr,ZipOpenFS:()=>Jn,constants:()=>mr,extendFs:()=>SI,normalizeLineEndings:()=>ul,npath:()=>M,opendir:()=>wI,patchFs:()=>pb,ppath:()=>v,statUtils:()=>rb,toFilename:()=>kr,xfs:()=>T});var mr={};it(mr,{SAFE_TIME:()=>tb,S_IFDIR:()=>zo,S_IFLNK:()=>_o,S_IFMT:()=>kn,S_IFREG:()=>Vo});var kn=61440,zo=16384,Vo=32768,_o=40960,tb=456789e3;var rb={};it(rb,{BigIntStatsEntry:()=>Xf,DEFAULT_MODE:()=>_f,DirEntry:()=>uO,StatEntry:()=>Za,areStatsEqual:()=>nb,clearStats:()=>pI,convertToBigIntStats:()=>dI,makeDefaultStats:()=>Zf,makeEmptyStats:()=>Jfe});var ib=ie(require("util"));var _f=Vo|420,uO=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Za=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=_f;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&kn)===zo}isFIFO(){return!1}isFile(){return(this.mode&kn)===Vo}isSocket(){return!1}isSymbolicLink(){return(this.mode&kn)===_o}},Xf=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(_f);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(kn))===BigInt(zo)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(kn))===BigInt(Vo)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(kn))===BigInt(_o)}};function Zf(){return new Za}function Jfe(){return pI(Zf())}function pI(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):ib.types.isDate(r)&&(t[e]=new Date(0))}return t}function dI(t){let e=new Xf;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let i=t[r];typeof i=="number"?e[r]=BigInt(i):ib.types.isDate(i)&&(e[r]=new Date(i))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function nb(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,i=e;return!(r.atimeNs!==i.atimeNs||r.mtimeNs!==i.mtimeNs||r.ctimeNs!==i.ctimeNs||r.birthtimeNs!==i.birthtimeNs)}var mI=ie(require("fs"));var $f=ie(require("path")),gO;(function(i){i[i.File=0]="File",i[i.Portable=1]="Portable",i[i.Native=2]="Native"})(gO||(gO={}));var Se={root:"/",dot:"."},wt={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",rc:".yarnrc.yml"},M=Object.create($f.default),v=Object.create($f.default.posix);M.cwd=()=>process.cwd();v.cwd=()=>sb(process.cwd());v.resolve=(...t)=>t.length>0&&v.isAbsolute(t[0])?$f.default.posix.resolve(...t):$f.default.posix.resolve(v.cwd(),...t);var fO=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};M.fromPortablePath=hO;M.toPortablePath=sb;M.contains=(t,e)=>fO(M,t,e);v.contains=(t,e)=>fO(v,t,e);var Wfe=/^([a-zA-Z]:.*)$/,zfe=/^\\\\(\.\\)?(.*)$/,Vfe=/^\/([a-zA-Z]:.*)$/,_fe=/^\/unc\/(\.dot\/)?(.*)$/;function hO(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(Vfe))t=e[1];else if(r=t.match(_fe))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function sb(t){if(process.platform!=="win32")return t;let e,r;return(e=t.match(Wfe))?t=`/${e[1]}`:(r=t.match(zfe))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t.replace(/\\/g,"/")}function CI(t,e){return t===M?hO(e):sb(e)}function kr(t){if(M.parse(t).dir!==""||v.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var II=new Date(tb*1e3),eh;(function(r){r.Allow="allow",r.ReadOnly="readOnly"})(eh||(eh={}));async function pO(t,e,r,i,n){let s=t.pathUtils.normalize(e),o=r.pathUtils.normalize(i),a=[],l=[],c=n.stableTime?{mtime:II,atime:II}:await r.lstatPromise(o);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[c.atime,c.mtime]});let u=typeof t.lutimesPromise=="function"?t.lutimesPromise.bind(t):t.utimesPromise.bind(t);await ob(a,l,u,t,s,r,o,n);for(let g of a)await g();await Promise.all(l.map(g=>g()))}async function ob(t,e,r,i,n,s,o,a){var f,h;let l=await Xfe(i,n),c=await s.lstatPromise(o),u=a.stableTime?{mtime:II,atime:II}:c,g;switch(!0){case c.isDirectory():g=await Zfe(t,e,r,i,n,l,s,o,c,a);break;case c.isFile():g=await $fe(t,e,r,i,n,l,s,o,c,a);break;case c.isSymbolicLink():g=await ehe(t,e,r,i,n,l,s,o,c,a);break;default:throw new Error(`Unsupported file type (${c.mode})`)}return(g||((f=l==null?void 0:l.mtime)==null?void 0:f.getTime())!==u.mtime.getTime()||((h=l==null?void 0:l.atime)==null?void 0:h.getTime())!==u.atime.getTime())&&(e.push(()=>r(n,u.atime,u.mtime)),g=!0),(l===null||(l.mode&511)!=(c.mode&511))&&(e.push(()=>i.chmodPromise(n,c.mode&511)),g=!0),g}async function Xfe(t,e){try{return await t.lstatPromise(e)}catch(r){return null}}async function Zfe(t,e,r,i,n,s,o,a,l,c){if(s!==null&&!s.isDirectory())if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=!1;s===null&&(t.push(async()=>{try{await i.mkdirPromise(n,{mode:l.mode})}catch(f){if(f.code!=="EEXIST")throw f}}),u=!0);let g=await o.readdirPromise(a);if(c.stableSort)for(let f of g.sort())await ob(t,e,r,i,i.pathUtils.join(n,f),o,o.pathUtils.join(a,f),c)&&(u=!0);else(await Promise.all(g.map(async h=>{await ob(t,e,r,i,i.pathUtils.join(n,h),o,o.pathUtils.join(a,h),c)}))).some(h=>h)&&(u=!0);return u}var ab=new WeakMap;function Ab(t,e,r,i,n){return async()=>{await t.linkPromise(r,e),n===eh.ReadOnly&&(i.mode&=~146,await t.chmodPromise(e,i.mode))}}function the(t,e,r,i,n){let s=ab.get(t);return typeof s=="undefined"?async()=>{try{await t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE),ab.set(t,!0)}catch(o){if(o.code==="ENOSYS"||o.code==="ENOTSUP")ab.set(t,!1),await Ab(t,e,r,i,n)();else throw o}}:s?async()=>t.copyFilePromise(r,e,mI.default.constants.COPYFILE_FICLONE_FORCE):Ab(t,e,r,i,n)}async function $fe(t,e,r,i,n,s,o,a,l,c){var f;if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;let u=(f=c.linkStrategy)!=null?f:null,g=i===o?u!==null?the(i,n,a,l,u):async()=>i.copyFilePromise(a,n,mI.default.constants.COPYFILE_FICLONE):u!==null?Ab(i,n,a,l,u):async()=>i.writeFilePromise(n,await o.readFilePromise(a));return t.push(async()=>g()),!0}async function ehe(t,e,r,i,n,s,o,a,l,c){if(s!==null)if(c.overwrite)t.push(async()=>i.removePromise(n)),s=null;else return!1;return t.push(async()=>{await i.symlinkPromise(CI(i.pathUtils,await o.readlinkPromise(a)),n)}),!0}function qn(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function EI(t){return qn("EBUSY",t)}function th(t,e){return qn("ENOSYS",`${t}, ${e}`)}function $a(t){return qn("EINVAL",`invalid argument, ${t}`)}function Hi(t){return qn("EBADF",`bad file descriptor, ${t}`)}function bs(t){return qn("ENOENT",`no such file or directory, ${t}`)}function eo(t){return qn("ENOTDIR",`not a directory, ${t}`)}function rh(t){return qn("EISDIR",`illegal operation on a directory, ${t}`)}function yI(t){return qn("EEXIST",`file already exists, ${t}`)}function ln(t){return qn("EROFS",`read-only filesystem, ${t}`)}function dO(t){return qn("ENOTEMPTY",`directory not empty, ${t}`)}function CO(t){return qn("EOPNOTSUPP",`operation not supported, ${t}`)}function mO(){return qn("ERR_DIR_CLOSED","Directory handle was closed")}var lb=class extends Error{constructor(e,r){super(e);this.name="Libzip Error",this.code=r}};var IO=class{constructor(e,r,i={}){this.path=e;this.nextDirent=r;this.opts=i;this.closed=!1}throwIfClosed(){if(this.closed)throw mO()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e!="undefined"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e!="undefined"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}};function wI(t,e,r,i){let n=()=>{let s=r.shift();return typeof s=="undefined"?null:Object.assign(t.statSync(t.pathUtils.join(e,s)),{name:s})};return new IO(e,n,i)}var EO=ie(require("os"));var eA=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let i=[e];for(;i.length>0;){let n=i.shift();if((await this.lstatPromise(n)).isDirectory()){let o=await this.readdirPromise(n);if(r)for(let a of o.sort())i.push(this.pathUtils.join(n,a));else throw new Error("Not supported")}else yield n}}async removePromise(e,{recursive:r=!0,maxRetries:i=5}={}){let n;try{n=await this.lstatPromise(e)}catch(s){if(s.code==="ENOENT")return;throw s}if(n.isDirectory()){if(r){let o=await this.readdirPromise(e);await Promise.all(o.map(a=>this.removePromise(this.pathUtils.resolve(e,a))))}let s=0;do try{await this.rmdirPromise(e);break}catch(o){if(o.code==="EBUSY"||o.code==="ENOTEMPTY"){if(i===0)break;await new Promise(a=>setTimeout(a,s*100));continue}else throw o}while(s++{let l;try{[l]=await this.readJsonPromise(i)}catch(c){return Date.now()-s<500}try{return process.kill(l,0),!0}catch(c){return!1}};for(;o===null;)try{o=await this.openPromise(i,"wx")}catch(l){if(l.code==="EEXIST"){if(!await a())try{await this.unlinkPromise(i);continue}catch(c){}if(Date.now()-s<60*1e3)await new Promise(c=>setTimeout(c,n));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${i})`)}else throw l}await this.writePromise(o,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(o),await this.unlinkPromise(i)}catch(l){}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(i){throw i.message+=` (in ${e})`,i}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} -`)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} -`)}async preserveTimePromise(e,r){let i=await this.lstatPromise(e),n=await r();typeof n!="undefined"&&(e=n),this.lutimesPromise?await this.lutimesPromise(e,i.atime,i.mtime):i.isSymbolicLink()||await this.utimesPromise(e,i.atime,i.mtime)}async preserveTimeSync(e,r){let i=this.lstatSync(e),n=r();typeof n!="undefined"&&(e=n),this.lutimesSync?this.lutimesSync(e,i.atime,i.mtime):i.isSymbolicLink()||this.utimesSync(e,i.atime,i.mtime)}},gl=class extends eA{constructor(){super(v)}};function rhe(t){let e=t.match(/\r?\n/g);if(e===null)return EO.EOL;let r=e.filter(n=>n===`\r -`).length,i=e.length-r;return r>i?`\r -`:` -`}function ul(t,e){return e.replace(/\r?\n/g,rhe(t))}var $c=ie(require("fs")),cb=ie(require("stream")),QO=ie(require("util")),ub=ie(require("zlib"));var yO=ie(require("fs"));var Wt=class extends gl{constructor(e=yO.default){super();this.realFs=e,typeof this.realFs.lutimes!="undefined"&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return Se.root}resolve(e){return v.resolve(e)}async openPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.open(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}openSync(e,r,i){return this.realFs.openSync(M.fromPortablePath(e),r,i)}async opendirPromise(e,r){return await new Promise((i,n)=>{typeof r!="undefined"?this.realFs.opendir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.opendir(M.fromPortablePath(e),this.makeCallback(i,n))}).then(i=>Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,r){let i=typeof r!="undefined"?this.realFs.opendirSync(M.fromPortablePath(e),r):this.realFs.opendirSync(M.fromPortablePath(e));return Object.defineProperty(i,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,r,i=0,n=0,s=-1){return await new Promise((o,a)=>{this.realFs.read(e,r,i,n,s,(l,c)=>{l?a(l):o(c)})})}readSync(e,r,i,n,s){return this.realFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return await new Promise((o,a)=>typeof r=="string"?this.realFs.write(e,r,i,this.makeCallback(o,a)):this.realFs.write(e,r,i,n,s,this.makeCallback(o,a)))}writeSync(e,r,i,n,s){return typeof r=="string"?this.realFs.writeSync(e,r,i):this.realFs.writeSync(e,r,i,n,s)}async closePromise(e){await new Promise((r,i)=>{this.realFs.close(e,this.makeCallback(r,i))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createReadStream(i,r)}createWriteStream(e,r){let i=e!==null?M.fromPortablePath(e):e;return this.realFs.createWriteStream(i,r)}async realpathPromise(e){return await new Promise((r,i)=>{this.realFs.realpath(M.fromPortablePath(e),{},this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}realpathSync(e){return M.toPortablePath(this.realFs.realpathSync(M.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(M.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(M.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((i,n)=>{this.realFs.access(M.fromPortablePath(e),r,this.makeCallback(i,n))})}existsSync(e){return this.realFs.existsSync(M.fromPortablePath(e))}async statPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.stat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.stat(M.fromPortablePath(e),this.makeCallback(i,n))})}statSync(e,r){return r?this.realFs.statSync(M.fromPortablePath(e),r):this.realFs.statSync(M.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.fstat(e,r,this.makeCallback(i,n)):this.realFs.fstat(e,this.makeCallback(i,n))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.lstat(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.lstat(M.fromPortablePath(e),this.makeCallback(i,n))})}lstatSync(e,r){return r?this.realFs.lstatSync(M.fromPortablePath(e),r):this.realFs.lstatSync(M.fromPortablePath(e))}async chmodPromise(e,r){return await new Promise((i,n)=>{this.realFs.chmod(M.fromPortablePath(e),r,this.makeCallback(i,n))})}chmodSync(e,r){return this.realFs.chmodSync(M.fromPortablePath(e),r)}async chownPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.chown(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}chownSync(e,r,i){return this.realFs.chownSync(M.fromPortablePath(e),r,i)}async renamePromise(e,r){return await new Promise((i,n)=>{this.realFs.rename(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}renameSync(e,r){return this.realFs.renameSync(M.fromPortablePath(e),M.fromPortablePath(r))}async copyFilePromise(e,r,i=0){return await new Promise((n,s)=>{this.realFs.copyFile(M.fromPortablePath(e),M.fromPortablePath(r),i,this.makeCallback(n,s))})}copyFileSync(e,r,i=0){return this.realFs.copyFileSync(M.fromPortablePath(e),M.fromPortablePath(r),i)}async appendFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFile(o,r,i,this.makeCallback(n,s)):this.realFs.appendFile(o,r,this.makeCallback(n,s))})}appendFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.appendFileSync(n,r,i):this.realFs.appendFileSync(n,r)}async writeFilePromise(e,r,i){return await new Promise((n,s)=>{let o=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFile(o,r,i,this.makeCallback(n,s)):this.realFs.writeFile(o,r,this.makeCallback(n,s))})}writeFileSync(e,r,i){let n=typeof e=="string"?M.fromPortablePath(e):e;i?this.realFs.writeFileSync(n,r,i):this.realFs.writeFileSync(n,r)}async unlinkPromise(e){return await new Promise((r,i)=>{this.realFs.unlink(M.fromPortablePath(e),this.makeCallback(r,i))})}unlinkSync(e){return this.realFs.unlinkSync(M.fromPortablePath(e))}async utimesPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.utimes(M.fromPortablePath(e),r,i,this.makeCallback(n,s))})}utimesSync(e,r,i){this.realFs.utimesSync(M.fromPortablePath(e),r,i)}async lutimesPromiseImpl(e,r,i){let n=this.realFs.lutimes;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);return await new Promise((s,o)=>{n.call(this.realFs,M.fromPortablePath(e),r,i,this.makeCallback(s,o))})}lutimesSyncImpl(e,r,i){let n=this.realFs.lutimesSync;if(typeof n=="undefined")throw th("unavailable Node binding",`lutimes '${e}'`);n.call(this.realFs,M.fromPortablePath(e),r,i)}async mkdirPromise(e,r){return await new Promise((i,n)=>{this.realFs.mkdir(M.fromPortablePath(e),r,this.makeCallback(i,n))})}mkdirSync(e,r){return this.realFs.mkdirSync(M.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((i,n)=>{r?this.realFs.rmdir(M.fromPortablePath(e),r,this.makeCallback(i,n)):this.realFs.rmdir(M.fromPortablePath(e),this.makeCallback(i,n))})}rmdirSync(e,r){return this.realFs.rmdirSync(M.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((i,n)=>{this.realFs.link(M.fromPortablePath(e),M.fromPortablePath(r),this.makeCallback(i,n))})}linkSync(e,r){return this.realFs.linkSync(M.fromPortablePath(e),M.fromPortablePath(r))}async symlinkPromise(e,r,i){return await new Promise((n,s)=>{this.realFs.symlink(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i,this.makeCallback(n,s))})}symlinkSync(e,r,i){return this.realFs.symlinkSync(M.fromPortablePath(e.replace(/\/+$/,"")),M.fromPortablePath(r),i)}async readFilePromise(e,r){return await new Promise((i,n)=>{let s=typeof e=="string"?M.fromPortablePath(e):e;this.realFs.readFile(s,r,this.makeCallback(i,n))})}readFileSync(e,r){let i=typeof e=="string"?M.fromPortablePath(e):e;return this.realFs.readFileSync(i,r)}async readdirPromise(e,r){return await new Promise((i,n)=>{(r==null?void 0:r.withFileTypes)?this.realFs.readdir(M.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(i,n)):this.realFs.readdir(M.fromPortablePath(e),this.makeCallback(s=>i(s),n))})}readdirSync(e,r){return(r==null?void 0:r.withFileTypes)?this.realFs.readdirSync(M.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(M.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,i)=>{this.realFs.readlink(M.fromPortablePath(e),this.makeCallback(r,i))}).then(r=>M.toPortablePath(r))}readlinkSync(e){return M.toPortablePath(this.realFs.readlinkSync(M.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((i,n)=>{this.realFs.truncate(M.fromPortablePath(e),r,this.makeCallback(i,n))})}truncateSync(e,r){return this.realFs.truncateSync(M.fromPortablePath(e),r)}watch(e,r,i){return this.realFs.watch(M.fromPortablePath(e),r,i)}watchFile(e,r,i){return this.realFs.watchFile(M.fromPortablePath(e),r,i)}unwatchFile(e,r){return this.realFs.unwatchFile(M.fromPortablePath(e),r)}makeCallback(e,r){return(i,n)=>{i?r(i):e(n)}}};var wO=ie(require("events"));var fl;(function(r){r.Change="change",r.Stop="stop"})(fl||(fl={}));var hl;(function(i){i.Ready="ready",i.Running="running",i.Stopped="stopped"})(hl||(hl={}));function BO(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var ih=class extends wO.EventEmitter{constructor(e,r,{bigint:i=!1}={}){super();this.status=hl.Ready;this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=e,this.path=r,this.bigint=i,this.lastStats=this.stat()}static create(e,r,i){let n=new ih(e,r,i);return n.start(),n}start(){BO(this.status,hl.Ready),this.status=hl.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(fl.Change,this.lastStats,this.lastStats)},3)}stop(){BO(this.status,hl.Running),this.status=hl.Stopped,this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(fl.Stop)}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch(e){let r=this.bigint?new Xf:new Za;return pI(r)}}makeInterval(e){let r=setInterval(()=>{let i=this.stat(),n=this.lastStats;nb(i,n)||(this.lastStats=i,this.emit(fl.Change,i,n))},e.interval);return e.persistent?r:r.unref()}registerChangeListener(e,r){this.addListener(fl.Change,e),this.changeListeners.set(e,this.makeInterval(r))}unregisterChangeListener(e){this.removeListener(fl.Change,e);let r=this.changeListeners.get(e);typeof r!="undefined"&&clearInterval(r),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(let e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let e of this.changeListeners.values())e.ref();return this}unref(){for(let e of this.changeListeners.values())e.unref();return this}};var BI=new WeakMap;function QI(t,e,r,i){let n,s,o,a;switch(typeof r){case"function":n=!1,s=!0,o=5007,a=r;break;default:({bigint:n=!1,persistent:s=!0,interval:o=5007}=r),a=i;break}let l=BI.get(t);typeof l=="undefined"&&BI.set(t,l=new Map);let c=l.get(e);return typeof c=="undefined"&&(c=ih.create(t,e,{bigint:n}),l.set(e,c)),c.registerChangeListener(a,{persistent:s,interval:o}),c}function nh(t,e,r){let i=BI.get(t);if(typeof i=="undefined")return;let n=i.get(e);typeof n!="undefined"&&(typeof r=="undefined"?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),i.delete(e)))}function sh(t){let e=BI.get(t);if(typeof e!="undefined")for(let r of e.keys())nh(t,r)}var pl="mixed";function ihe(t){if(typeof t=="string"&&String(+t)===t)return+t;if(Number.isFinite(t))return t<0?Date.now()/1e3:t;if((0,QO.isDate)(t))return t.getTime()/1e3;throw new Error("Invalid time")}function bO(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Jr=class extends gl{constructor(e,r){super();this.lzSource=null;this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;this.libzip=r.libzip;let i=r;if(this.level=typeof i.level!="undefined"?i.level:pl,e!=null||(e=bO()),typeof e=="string"){let{baseFs:o=new Wt}=i;this.baseFs=o,this.path=e}else this.path=null,this.baseFs=null;if(r.stats)this.stats=r.stats;else if(typeof e=="string")try{this.stats=this.baseFs.statSync(e)}catch(o){if(o.code==="ENOENT"&&i.create)this.stats=Zf();else throw o}else this.stats=Zf();let n=this.libzip.malloc(4);try{let o=0;if(typeof e=="string"&&i.create&&(o|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),r.readOnly&&(o|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof e=="string")this.zip=this.libzip.open(M.fromPortablePath(e),o,n);else{let a=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(a,o,n),this.lzSource=a}catch(l){throw this.libzip.source.free(a),l}}if(this.zip===0){let a=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(a,this.libzip.getValue(n,"i32")),this.makeLibzipError(a)}}finally{this.libzip.free(n)}this.listings.set(Se.root,new Set);let s=this.libzip.getNumEntries(this.zip,0);for(let o=0;oe)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(r,r+e);return Buffer.from(n)}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw EI("archive closed, close");sh(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly){this.discardAndClose();return}let e=this.baseFs.existsSync(this.path)||this.stats.mode===_f?void 0:this.stats.mode;if(this.entries.size===0)this.discardAndClose(),this.baseFs.writeFileSync(this.path,bO(),{mode:e});else{if(this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));typeof e!="undefined"&&this.baseFs.chmodSync(this.path,e)}this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return v.resolve(Se.root,e)}async openPromise(e,r,i){return this.openSync(e,r,i)}openSync(e,r,i){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:e}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,r){return this.opendirSync(e,r)}opendirSync(e,r={}){let i=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`opendir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`opendir '${e}'`);let s=[...n],o=this.openSync(i,"r");return wI(this,i,s,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,r,i,n,s){return this.readSync(e,r,i,n,s)}readSync(e,r,i=0,n=r.byteLength,s=-1){let o=this.fds.get(e);if(typeof o=="undefined")throw Hi("read");let a;s===-1||s===null?a=o.cursor:a=s;let l=this.readFileSync(o.p);l.copy(r,i,a,a+n);let c=Math.max(0,Math.min(l.length-a,n));return(s===-1||s===null)&&(o.cursor+=c),c}async writePromise(e,r,i,n,s){return typeof r=="string"?this.writeSync(e,r,s):this.writeSync(e,r,i,n,s)}writeSync(e,r,i,n,s){throw typeof this.fds.get(e)=="undefined"?Hi("read"):new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(typeof this.fds.get(e)=="undefined")throw Hi("read");this.fds.delete(e)}createReadStream(e,{encoding:r}={}){if(e===null)throw new Error("Unimplemented");let i=this.openSync(e,"r"),n=Object.assign(new cb.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(o,a)=>{clearImmediate(s),this.closeSync(i),a(o)}}),{close(){n.destroy()},bytesRead:0,path:e}),s=setImmediate(async()=>{try{let o=await this.readFilePromise(e,r);n.bytesRead=o.length,n.end(o)}catch(o){n.destroy(o)}});return n}createWriteStream(e,{encoding:r}={}){if(this.readOnly)throw ln(`open '${e}'`);if(e===null)throw new Error("Unimplemented");let i=[],n=this.openSync(e,"w"),s=Object.assign(new cb.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(o,a)=>{try{o?a(o):(this.writeFileSync(e,Buffer.concat(i),r),a(null))}catch(l){a(l)}finally{this.closeSync(n)}}}),{bytesWritten:0,path:e,close(){s.destroy()}});return s.on("data",o=>{let a=Buffer.from(o);s.bytesWritten+=a.length,i.push(a)}),s}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){let r=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`lstat '${e}'`);return r}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw EI(`archive closed, existsSync '${e}'`);if(this.symlinkCount===0){let i=v.resolve(Se.root,e);return this.entries.has(i)||this.listings.has(i)}let r;try{r=this.resolveFilename(`stat '${e}'`,e)}catch(i){return!1}return this.entries.has(r)||this.listings.has(r)}async accessPromise(e,r){return this.accessSync(e,r)}accessSync(e,r=$c.constants.F_OK){let i=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`access '${e}'`);if(this.readOnly&&r&$c.constants.W_OK)throw ln(`access '${e}'`)}async statPromise(e,r){return this.statSync(e,r)}statSync(e,r){let i=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`stat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`stat '${e}'`);return this.statImpl(`stat '${e}'`,i,r)}async fstatPromise(e,r){return this.fstatSync(e,r)}fstatSync(e,r){let i=this.fds.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let{p:n}=i,s=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(s)&&!this.listings.has(s))throw bs(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(s))throw eo(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,s,r)}async lstatPromise(e,r){return this.lstatSync(e,r)}lstatSync(e,r){let i=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`lstat '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,i,r)}statImpl(e,r,i={}){let n=this.entries.get(r);if(typeof n!="undefined"){let s=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.stats.uid,l=this.stats.gid,c=this.libzip.struct.statSize(s)>>>0,u=512,g=Math.ceil(c/u),f=(this.libzip.struct.statMtime(s)>>>0)*1e3,h=f,p=f,d=f,m=new Date(h),E=new Date(p),B=new Date(d),b=new Date(f),R=this.listings.has(r)?zo:this.isSymbolicLink(n)?_o:Vo,H=R===zo?493:420,L=R|this.getUnixMode(n,H)&511,K=this.libzip.struct.statCrc(s),J=Object.assign(new Za,{uid:a,gid:l,size:c,blksize:u,blocks:g,atime:m,birthtime:E,ctime:B,mtime:b,atimeMs:h,birthtimeMs:p,ctimeMs:d,mtimeMs:f,mode:L,crc:K});return i.bigint===!0?dI(J):J}if(this.listings.has(r)){let s=this.stats.uid,o=this.stats.gid,a=0,l=512,c=0,u=this.stats.mtimeMs,g=this.stats.mtimeMs,f=this.stats.mtimeMs,h=this.stats.mtimeMs,p=new Date(u),d=new Date(g),m=new Date(f),E=new Date(h),B=zo|493,b=0,R=Object.assign(new Za,{uid:s,gid:o,size:a,blksize:l,blocks:c,atime:p,birthtime:d,ctime:m,mtime:E,atimeMs:u,birthtimeMs:g,ctimeMs:f,mtimeMs:h,mode:B,crc:b});return i.bigint===!0?dI(R):R}throw new Error("Unreachable")}getUnixMode(e,r){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?r:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let r=this.listings.get(e);if(r)return r;let i=this.registerListing(v.dirname(e));return r=new Set,i.add(v.basename(e)),this.listings.set(e,r),r}registerEntry(e,r){this.registerListing(v.dirname(e)).add(v.basename(e)),this.entries.set(e,r)}unregisterListing(e){this.listings.delete(e);let r=this.listings.get(v.dirname(e));r==null||r.delete(v.basename(e))}unregisterEntry(e){this.unregisterListing(e);let r=this.entries.get(e);this.entries.delete(e),typeof r!="undefined"&&(this.fileSources.delete(r),this.isSymbolicLink(r)&&this.symlinkCount--)}deleteEntry(e,r){if(this.unregisterEntry(e),this.libzip.delete(this.zip,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,r,i=!0){if(!this.ready)throw EI(`archive closed, ${e}`);let n=v.resolve(Se.root,r);if(n==="/")return Se.root;let s=this.entries.get(n);if(i&&s!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(s)){let o=this.getFileSource(s).toString();return this.resolveFilename(e,v.resolve(v.dirname(n),o),!0)}else return n;for(;;){let o=this.resolveFilename(e,v.dirname(n),!0),a=this.listings.has(o),l=this.entries.has(o);if(!a&&!l)throw bs(e);if(!a)throw eo(e);if(n=v.resolve(o,v.basename(n)),!i||this.symlinkCount===0)break;let c=this.libzip.name.locate(this.zip,n.slice(1));if(c===-1)break;if(this.isSymbolicLink(c)){let u=this.getFileSource(c).toString();n=v.resolve(v.dirname(n),u)}else break}return n}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:i,byteLength:n}=this.allocateBuffer(e),s=this.libzip.source.fromUnattachedBuffer(i,n,0,!0,r);if(s===0)throw this.libzip.free(r),this.makeLibzipError(r);return s}allocateSource(e){let{buffer:r,byteLength:i}=this.allocateBuffer(e),n=this.libzip.source.fromBuffer(this.zip,r,i,0,!0);if(n===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(e,r){let i=Buffer.isBuffer(r)?r:Buffer.from(r),n=v.relative(Se.root,e),s=this.allocateSource(r);try{let o=this.libzip.file.add(this.zip,n,s,this.libzip.ZIP_FL_OVERWRITE);if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let a;if(this.level===0?a=this.libzip.ZIP_CM_STORE:a=this.libzip.ZIP_CM_DEFLATE,this.libzip.file.setCompression(this.zip,o,0,a,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(o,i),o}catch(o){throw this.libzip.source.free(s),o}}isSymbolicLink(e){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&kn)===_o}getFileSource(e,r={asyncDecompress:!1}){let i=this.fileSources.get(e);if(typeof i!="undefined")return i;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let o=this.libzip.struct.statCompSize(n),a=this.libzip.struct.statCompMethod(n),l=this.libzip.malloc(o);try{let c=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(c===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let u=this.libzip.fread(c,l,o,0);if(u===-1)throw this.makeLibzipError(this.libzip.file.getError(c));if(uo)throw new Error("Overread");let g=this.libzip.HEAPU8.subarray(l,l+o),f=Buffer.from(g);if(a===0)return this.fileSources.set(e,f),f;if(r.asyncDecompress)return new Promise((h,p)=>{ub.default.inflateRaw(f,(d,m)=>{d?p(d):(this.fileSources.set(e,m),h(m))})});{let h=ub.default.inflateRawSync(f);return this.fileSources.set(e,h),h}}finally{this.libzip.fclose(c)}}finally{this.libzip.free(l)}}async chmodPromise(e,r){return this.chmodSync(e,r)}chmodSync(e,r){if(this.readOnly)throw ln(`chmod '${e}'`);r&=493;let i=this.resolveFilename(`chmod '${e}'`,e,!1),n=this.entries.get(i);if(typeof n=="undefined")throw new Error(`Assertion failed: The entry should have been registered (${i})`);let o=this.getUnixMode(n,Vo|0)&~511|r;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,o<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,r,i){return this.chownSync(e,r,i)}chownSync(e,r,i){throw new Error("Unimplemented")}async renamePromise(e,r){return this.renameSync(e,r)}renameSync(e,r){throw new Error("Unimplemented")}async copyFilePromise(e,r,i){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=await this.getFileSource(n,{asyncDecompress:!0}),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}copyFileSync(e,r,i=0){let{indexSource:n,indexDest:s,resolvedDestP:o}=this.prepareCopyFile(e,r,i),a=this.getFileSource(n),l=this.setFileSource(o,a);l!==s&&this.registerEntry(o,l)}prepareCopyFile(e,r,i=0){if(this.readOnly)throw ln(`copyfile '${e} -> '${r}'`);if((i&$c.constants.COPYFILE_FICLONE_FORCE)!=0)throw th("unsupported clone operation",`copyfile '${e}' -> ${r}'`);let n=this.resolveFilename(`copyfile '${e} -> ${r}'`,e),s=this.entries.get(n);if(typeof s=="undefined")throw $a(`copyfile '${e}' -> '${r}'`);let o=this.resolveFilename(`copyfile '${e}' -> ${r}'`,r),a=this.entries.get(o);if((i&($c.constants.COPYFILE_EXCL|$c.constants.COPYFILE_FICLONE_FORCE))!=0&&typeof a!="undefined")throw yI(`copyfile '${e}' -> '${r}'`);return{indexSource:s,resolvedDestP:o,indexDest:a}}async appendFilePromise(e,r,i){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFilePromise(e,r,i)}appendFileSync(e,r,i={}){if(this.readOnly)throw ln(`open '${e}'`);return typeof i=="undefined"?i={flag:"a"}:typeof i=="string"?i={flag:"a",encoding:i}:typeof i.flag=="undefined"&&(i=P({flag:"a"},i)),this.writeFileSync(e,r,i)}fdToPath(e,r){var n;let i=(n=this.fds.get(e))==null?void 0:n.p;if(typeof i=="undefined")throw Hi(r);return i}async writeFilePromise(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([await this.getFileSource(o,{asyncDecompress:!0}),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&await this.chmodPromise(a,s)}writeFileSync(e,r,i){let{encoding:n,mode:s,index:o,resolvedP:a}=this.prepareWriteFile(e,i);o!==void 0&&typeof i=="object"&&i.flag&&i.flag.includes("a")&&(r=Buffer.concat([this.getFileSource(o),Buffer.from(r)])),n!==null&&(r=r.toString(n));let l=this.setFileSource(a,r);l!==o&&this.registerEntry(a,l),s!==null&&this.chmodSync(a,s)}prepareWriteFile(e,r){if(typeof e=="number"&&(e=this.fdToPath(e,"read")),this.readOnly)throw ln(`open '${e}'`);let i=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(i))throw rh(`open '${e}'`);let n=null,s=null;typeof r=="string"?n=r:typeof r=="object"&&({encoding:n=null,mode:s=null}=r);let o=this.entries.get(i);return{encoding:n,mode:s,resolvedP:i,index:o}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw ln(`unlink '${e}'`);let r=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(r))throw rh(`unlink '${e}'`);let i=this.entries.get(r);if(typeof i=="undefined")throw $a(`unlink '${e}'`);this.deleteEntry(r,i)}async utimesPromise(e,r,i){return this.utimesSync(e,r,i)}utimesSync(e,r,i){if(this.readOnly)throw ln(`utimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(n,i)}async lutimesPromise(e,r,i){return this.lutimesSync(e,r,i)}lutimesSync(e,r,i){if(this.readOnly)throw ln(`lutimes '${e}'`);let n=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(n,i)}utimesImpl(e,r){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));let i=this.entries.get(e);if(i===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,i,0,ihe(r),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,r){return this.mkdirSync(e,r)}mkdirSync(e,{mode:r=493,recursive:i=!1}={}){if(i){this.mkdirpSync(e,{chmod:r});return}if(this.readOnly)throw ln(`mkdir '${e}'`);let n=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(n)||this.listings.has(n))throw yI(`mkdir '${e}'`);this.hydrateDirectory(n),this.chmodSync(n,r)}async rmdirPromise(e,r){return this.rmdirSync(e,r)}rmdirSync(e,{recursive:r=!1}={}){if(this.readOnly)throw ln(`rmdir '${e}'`);if(r){this.removeSync(e);return}let i=this.resolveFilename(`rmdir '${e}'`,e),n=this.listings.get(i);if(!n)throw eo(`rmdir '${e}'`);if(n.size>0)throw dO(`rmdir '${e}'`);let s=this.entries.get(i);if(typeof s=="undefined")throw $a(`rmdir '${e}'`);this.deleteEntry(e,s)}hydrateDirectory(e){let r=this.libzip.dir.add(this.zip,v.relative(Se.root,e));if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,r),r}async linkPromise(e,r){return this.linkSync(e,r)}linkSync(e,r){throw CO(`link '${e}' -> '${r}'`)}async symlinkPromise(e,r){return this.symlinkSync(e,r)}symlinkSync(e,r){if(this.readOnly)throw ln(`symlink '${e}' -> '${r}'`);let i=this.resolveFilename(`symlink '${e}' -> '${r}'`,r);if(this.listings.has(i))throw rh(`symlink '${e}' -> '${r}'`);if(this.entries.has(i))throw yI(`symlink '${e}' -> '${r}'`);let n=this.setFileSource(i,e);if(this.registerEntry(i,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(_o|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=await this.readFileBuffer(e,{asyncDecompress:!0});return r?i.toString(r):i}readFileSync(e,r){typeof r=="object"&&(r=r?r.encoding:void 0);let i=this.readFileBuffer(e);return r?i.toString(r):i}readFileBuffer(e,r={asyncDecompress:!1}){typeof e=="number"&&(e=this.fdToPath(e,"read"));let i=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`open '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(i))throw eo(`open '${e}'`);if(this.listings.has(i))throw rh("read");let n=this.entries.get(i);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,r)}async readdirPromise(e,r){return this.readdirSync(e,r)}readdirSync(e,r){let i=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(i)&&!this.listings.has(i))throw bs(`scandir '${e}'`);let n=this.listings.get(i);if(!n)throw eo(`scandir '${e}'`);let s=[...n];return(r==null?void 0:r.withFileTypes)?s.map(o=>Object.assign(this.statImpl("lstat",v.join(e,o)),{name:o})):s}async readlinkPromise(e){let r=this.prepareReadlink(e);return(await this.getFileSource(r,{asyncDecompress:!0})).toString()}readlinkSync(e){let r=this.prepareReadlink(e);return this.getFileSource(r).toString()}prepareReadlink(e){let r=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(r)&&!this.listings.has(r))throw bs(`readlink '${e}'`);if(e[e.length-1]==="/"&&!this.listings.has(r))throw eo(`open '${e}'`);if(this.listings.has(r))throw $a(`readlink '${e}'`);let i=this.entries.get(r);if(i===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(i))throw $a(`readlink '${e}'`);return i}async truncatePromise(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=await this.getFileSource(n,{asyncDecompress:!0}),o=Buffer.alloc(r,0);return s.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,r=0){let i=this.resolveFilename(`open '${e}'`,e),n=this.entries.get(i);if(typeof n=="undefined")throw $a(`open '${e}'`);let s=this.getFileSource(n),o=Buffer.alloc(r,0);return s.copy(o),this.writeFileSync(e,o)}watch(e,r,i){let n;switch(typeof r){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=r);break}if(!n)return{on:()=>{},close:()=>{}};let s=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(s)}}}watchFile(e,r,i){let n=v.resolve(Se.root,e);return QI(this,n,r,i)}unwatchFile(e,r){let i=v.resolve(Se.root,e);return nh(this,i,r)}};var fi=class extends eA{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,i){return this.baseFs.openPromise(this.mapToBase(e),r,i)}openSync(e,r,i){return this.baseFs.openSync(this.mapToBase(e),r,i)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,i,n,s){return await this.baseFs.readPromise(e,r,i,n,s)}readSync(e,r,i,n,s){return this.baseFs.readSync(e,r,i,n,s)}async writePromise(e,r,i,n,s){return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s)}writeSync(e,r,i,n,s){return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}async lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async chownPromise(e,r,i){return this.baseFs.chownPromise(this.mapToBase(e),r,i)}chownSync(e,r,i){return this.baseFs.chownSync(this.mapToBase(e),r,i)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,i=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),i)}copyFileSync(e,r,i=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),i)}async appendFilePromise(e,r,i){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,i)}appendFileSync(e,r,i){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,i)}async writeFilePromise(e,r,i){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,i)}writeFileSync(e,r,i){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,i)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,i){return this.baseFs.utimesPromise(this.mapToBase(e),r,i)}utimesSync(e,r,i){return this.baseFs.utimesSync(this.mapToBase(e),r,i)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkPromise(o,n,i)}symlinkSync(e,r,i){let n=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),n,i);let s=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),o=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(n),s);return this.baseFs.symlinkSync(o,n,i)}async readFilePromise(e,r){return r==="utf8"?this.baseFs.readFilePromise(this.fsMapToBase(e),r):this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return r==="utf8"?this.baseFs.readFileSync(this.fsMapToBase(e),r):this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}watch(e,r,i){return this.baseFs.watch(this.mapToBase(e),r,i)}watchFile(e,r,i){return this.baseFs.watchFile(this.mapToBase(e),r,i)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}};var Xo=class extends fi{constructor(e,{baseFs:r,pathUtils:i}){super(i);this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}};var Ft=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?v.normalize(e):this.baseFs.resolve(v.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}};var vO=Se.root,Zo=class extends fi{constructor(e,{baseFs:r=new Wt}={}){super(v);this.target=this.pathUtils.resolve(Se.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(Se.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(vO,e));if(r.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(vO,this.pathUtils.relative(this.target,e))}};var oh=class extends fi{constructor(e,r){super(r);this.instance=null;this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}};var ze=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),gb=class extends eA{constructor(){super(v)}getExtractHint(){throw ze()}getRealPath(){throw ze()}resolve(){throw ze()}async openPromise(){throw ze()}openSync(){throw ze()}async opendirPromise(){throw ze()}opendirSync(){throw ze()}async readPromise(){throw ze()}readSync(){throw ze()}async writePromise(){throw ze()}writeSync(){throw ze()}async closePromise(){throw ze()}closeSync(){throw ze()}createWriteStream(){throw ze()}createReadStream(){throw ze()}async realpathPromise(){throw ze()}realpathSync(){throw ze()}async readdirPromise(){throw ze()}readdirSync(){throw ze()}async existsPromise(e){throw ze()}existsSync(e){throw ze()}async accessPromise(){throw ze()}accessSync(){throw ze()}async statPromise(){throw ze()}statSync(){throw ze()}async fstatPromise(e){throw ze()}fstatSync(e){throw ze()}async lstatPromise(e){throw ze()}lstatSync(e){throw ze()}async chmodPromise(){throw ze()}chmodSync(){throw ze()}async chownPromise(){throw ze()}chownSync(){throw ze()}async mkdirPromise(){throw ze()}mkdirSync(){throw ze()}async rmdirPromise(){throw ze()}rmdirSync(){throw ze()}async linkPromise(){throw ze()}linkSync(){throw ze()}async symlinkPromise(){throw ze()}symlinkSync(){throw ze()}async renamePromise(){throw ze()}renameSync(){throw ze()}async copyFilePromise(){throw ze()}copyFileSync(){throw ze()}async appendFilePromise(){throw ze()}appendFileSync(){throw ze()}async writeFilePromise(){throw ze()}writeFileSync(){throw ze()}async unlinkPromise(){throw ze()}unlinkSync(){throw ze()}async utimesPromise(){throw ze()}utimesSync(){throw ze()}async readFilePromise(){throw ze()}readFileSync(){throw ze()}async readlinkPromise(){throw ze()}readlinkSync(){throw ze()}async truncatePromise(){throw ze()}truncateSync(){throw ze()}watch(){throw ze()}watchFile(){throw ze()}unwatchFile(){throw ze()}},bI=gb;bI.instance=new gb;var ah=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return M.fromPortablePath(e)}mapToBase(e){return M.toPortablePath(e)}};var nhe=/^[0-9]+$/,fb=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,she=/^([^/]+-)?[a-f0-9]+$/,Pr=class extends fi{static makeVirtualPath(e,r,i){if(v.basename(e)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!v.basename(r).match(she))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let s=v.relative(v.dirname(e),i).split("/"),o=0;for(;o{let r=t.indexOf(e);if(r<=0)return null;let i=r;for(;r>=0&&(i=r+e.length,t[i]!==v.sep);){if(t[r-1]===v.sep)return null;r=t.indexOf(e,i)}return t.length>i&&t[i]!==v.sep?null:t.slice(0,i)},Jn=class extends gl{constructor({libzip:e,baseFs:r=new Wt,filter:i=null,maxOpenFiles:n=Infinity,readOnlyArchives:s=!1,useCache:o=!0,maxAge:a=5e3,fileExtensions:l=null}){super();this.fdMap=new Map;this.nextFd=3;this.isZip=new Set;this.notZip=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.libzipFactory=typeof e!="function"?()=>e:e,this.baseFs=r,this.zipInstances=o?new Map:null,this.filter=i,this.maxOpenFiles=n,this.readOnlyArchives=s,this.maxAge=a,this.fileExtensions=l}static async openPromise(e,r){let i=new Jn(r);try{return await e(i)}finally{i.saveAndClose()}}get libzip(){return typeof this.libzipInstance=="undefined"&&(this.libzipInstance=this.libzipFactory()),this.libzipInstance}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.saveAndClose(),this.zipInstances.delete(e)}discardAndClose(){if(sh(this),this.zipInstances)for(let[e,{zipFs:r}]of this.zipInstances.entries())r.discardAndClose(),this.zipInstances.delete(e)}resolve(e){return this.baseFs.resolve(e)}remapFd(e,r){let i=this.nextFd++|$o;return this.fdMap.set(i,[e,r]),i}async openPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.openPromise(e,r,i),async(n,{subPath:s})=>this.remapFd(n,await n.openPromise(s,r,i)))}openSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.openSync(e,r,i),(n,{subPath:s})=>this.remapFd(n,n.openSync(s,r,i)))}async opendirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,r),async(i,{subPath:n})=>await i.opendirPromise(n,r),{requireSubpath:!1})}opendirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,r),(i,{subPath:n})=>i.opendirSync(n,r),{requireSubpath:!1})}async readPromise(e,r,i,n,s){if((e&$o)==0)return await this.baseFs.readPromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("read");let[a,l]=o;return await a.readPromise(l,r,i,n,s)}readSync(e,r,i,n,s){if((e&$o)==0)return this.baseFs.readSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("readSync");let[a,l]=o;return a.readSync(l,r,i,n,s)}async writePromise(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?await this.baseFs.writePromise(e,r,i):await this.baseFs.writePromise(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("write");let[a,l]=o;return typeof r=="string"?await a.writePromise(l,r,i):await a.writePromise(l,r,i,n,s)}writeSync(e,r,i,n,s){if((e&$o)==0)return typeof r=="string"?this.baseFs.writeSync(e,r,i):this.baseFs.writeSync(e,r,i,n,s);let o=this.fdMap.get(e);if(typeof o=="undefined")throw Hi("writeSync");let[a,l]=o;return typeof r=="string"?a.writeSync(l,r,i):a.writeSync(l,r,i,n,s)}async closePromise(e){if((e&$o)==0)return await this.baseFs.closePromise(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("close");this.fdMap.delete(e);let[i,n]=r;return await i.closePromise(n)}closeSync(e){if((e&$o)==0)return this.baseFs.closeSync(e);let r=this.fdMap.get(e);if(typeof r=="undefined")throw Hi("closeSync");this.fdMap.delete(e);let[i,n]=r;return i.closeSync(n)}createReadStream(e,r){return e===null?this.baseFs.createReadStream(e,r):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,r),(i,{subPath:n})=>i.createReadStream(n,r))}createWriteStream(e,r){return e===null?this.baseFs.createWriteStream(e,r):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,r),(i,{subPath:n})=>i.createWriteStream(n,r))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=await this.baseFs.realpathPromise(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,await r.realpathPromise(n)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(r,{archivePath:i,subPath:n})=>{let s=this.realPaths.get(i);return typeof s=="undefined"&&(s=this.baseFs.realpathSync(i),this.realPaths.set(i,s)),this.pathUtils.join(s,this.pathUtils.relative(Se.root,r.realpathSync(n)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(r,{subPath:i})=>await r.existsPromise(i))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(r,{subPath:i})=>r.existsSync(i))}async accessPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,r),async(i,{subPath:n})=>await i.accessPromise(n,r))}accessSync(e,r){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,r),(i,{subPath:n})=>i.accessSync(n,r))}async statPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e,r),async(i,{subPath:n})=>await i.statPromise(n,r))}statSync(e,r){return this.makeCallSync(e,()=>this.baseFs.statSync(e,r),(i,{subPath:n})=>i.statSync(n,r))}async fstatPromise(e,r){if((e&$o)==0)return this.baseFs.fstatPromise(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstat");let[n,s]=i;return n.fstatPromise(s,r)}fstatSync(e,r){if((e&$o)==0)return this.baseFs.fstatSync(e,r);let i=this.fdMap.get(e);if(typeof i=="undefined")throw Hi("fstatSync");let[n,s]=i;return n.fstatSync(s,r)}async lstatPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e,r),async(i,{subPath:n})=>await i.lstatPromise(n,r))}lstatSync(e,r){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e,r),(i,{subPath:n})=>i.lstatSync(n,r))}async chmodPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,r),async(i,{subPath:n})=>await i.chmodPromise(n,r))}chmodSync(e,r){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,r),(i,{subPath:n})=>i.chmodSync(n,r))}async chownPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,r,i),async(n,{subPath:s})=>await n.chownPromise(s,r,i))}chownSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,r,i),(n,{subPath:s})=>n.chownSync(s,r,i))}async renamePromise(e,r){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.renamePromise(e,r),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(i,{subPath:n})=>await this.makeCallPromise(r,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await i.renamePromise(n,o)}))}renameSync(e,r){return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.renameSync(e,r),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(i,{subPath:n})=>this.makeCallSync(r,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(s,{subPath:o})=>{if(i!==s)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return i.renameSync(n,o)}))}async copyFilePromise(e,r,i=0){let n=async(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&await this.existsPromise(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=await s.readFilePromise(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}await a.writeFilePromise(l,c)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(r,async()=>await this.baseFs.copyFilePromise(e,r,i),async(s,{subPath:o})=>await n(this.baseFs,e,s,o)),async(s,{subPath:o})=>await this.makeCallPromise(r,async()=>await n(s,o,this.baseFs,r),async(a,{subPath:l})=>s!==a?await n(s,o,a,l):await s.copyFilePromise(o,l,i)))}copyFileSync(e,r,i=0){let n=(s,o,a,l)=>{if((i&Ah.constants.COPYFILE_FICLONE_FORCE)!=0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${o}' -> ${l}'`),{code:"EXDEV"});if(i&Ah.constants.COPYFILE_EXCL&&this.existsSync(o))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${o}' -> '${l}'`),{code:"EEXIST"});let c;try{c=s.readFileSync(o)}catch(u){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${o}' -> '${l}'`),{code:"EINVAL"})}a.writeFileSync(l,c)};return this.makeCallSync(e,()=>this.makeCallSync(r,()=>this.baseFs.copyFileSync(e,r,i),(s,{subPath:o})=>n(this.baseFs,e,s,o)),(s,{subPath:o})=>this.makeCallSync(r,()=>n(s,o,this.baseFs,r),(a,{subPath:l})=>s!==a?n(s,o,a,l):s.copyFileSync(o,l,i)))}async appendFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,r,i),async(n,{subPath:s})=>await n.appendFilePromise(s,r,i))}appendFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,r,i),(n,{subPath:s})=>n.appendFileSync(s,r,i))}async writeFilePromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,r,i),async(n,{subPath:s})=>await n.writeFilePromise(s,r,i))}writeFileSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,r,i),(n,{subPath:s})=>n.writeFileSync(s,r,i))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(r,{subPath:i})=>await r.unlinkPromise(i))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(r,{subPath:i})=>r.unlinkSync(i))}async utimesPromise(e,r,i){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,r,i),async(n,{subPath:s})=>await n.utimesPromise(s,r,i))}utimesSync(e,r,i){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,r,i),(n,{subPath:s})=>n.utimesSync(s,r,i))}async mkdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,r),async(i,{subPath:n})=>await i.mkdirPromise(n,r))}mkdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,r),(i,{subPath:n})=>i.mkdirSync(n,r))}async rmdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,r),async(i,{subPath:n})=>await i.rmdirPromise(n,r))}rmdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,r),(i,{subPath:n})=>i.rmdirSync(n,r))}async linkPromise(e,r){return await this.makeCallPromise(r,async()=>await this.baseFs.linkPromise(e,r),async(i,{subPath:n})=>await i.linkPromise(e,n))}linkSync(e,r){return this.makeCallSync(r,()=>this.baseFs.linkSync(e,r),(i,{subPath:n})=>i.linkSync(e,n))}async symlinkPromise(e,r,i){return await this.makeCallPromise(r,async()=>await this.baseFs.symlinkPromise(e,r,i),async(n,{subPath:s})=>await n.symlinkPromise(e,s))}symlinkSync(e,r,i){return this.makeCallSync(r,()=>this.baseFs.symlinkSync(e,r,i),(n,{subPath:s})=>n.symlinkSync(e,s))}async readFilePromise(e,r){return this.makeCallPromise(e,async()=>{switch(r){case"utf8":return await this.baseFs.readFilePromise(e,r);default:return await this.baseFs.readFilePromise(e,r)}},async(i,{subPath:n})=>await i.readFilePromise(n,r))}readFileSync(e,r){return this.makeCallSync(e,()=>{switch(r){case"utf8":return this.baseFs.readFileSync(e,r);default:return this.baseFs.readFileSync(e,r)}},(i,{subPath:n})=>i.readFileSync(n,r))}async readdirPromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,r),async(i,{subPath:n})=>await i.readdirPromise(n,r),{requireSubpath:!1})}readdirSync(e,r){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,r),(i,{subPath:n})=>i.readdirSync(n,r),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(r,{subPath:i})=>await r.readlinkPromise(i))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(r,{subPath:i})=>r.readlinkSync(i))}async truncatePromise(e,r){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,r),async(i,{subPath:n})=>await i.truncatePromise(n,r))}truncateSync(e,r){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,r),(i,{subPath:n})=>i.truncateSync(n,r))}watch(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watch(e,r,i),(n,{subPath:s})=>n.watch(s,r,i))}watchFile(e,r,i){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,r,i),()=>QI(this,e,r,i))}unwatchFile(e,r){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,r),()=>nh(this,e,r))}async makeCallPromise(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return await r();let s=this.resolve(e),o=this.findZip(s);return o?n&&o.subPath==="/"?await r():await this.getZipPromise(o.archivePath,async a=>await i(a,o)):await r()}makeCallSync(e,r,i,{requireSubpath:n=!0}={}){if(typeof e!="string")return r();let s=this.resolve(e),o=this.findZip(s);return!o||n&&o.subPath==="/"?r():this.getZipSync(o.archivePath,a=>i(a,o))}findZip(e){if(this.filter&&!this.filter.test(e))return null;let r="";for(;;){let i=e.substr(r.length),n;if(!this.fileExtensions)n=SO(i,".zip");else for(let s of this.fileExtensions)if(n=SO(i,s),n)break;if(!n)return null;if(r=this.pathUtils.join(r,n),this.isZip.has(r)===!1){if(this.notZip.has(r))continue;try{if(!this.baseFs.lstatSync(r).isFile()){this.notZip.add(r);continue}}catch{return null}this.isZip.add(r)}return{archivePath:r,subPath:this.pathUtils.join(Se.root,e.substr(r.length))}}}limitOpenFiles(e){if(this.zipInstances===null)return;let r=Date.now(),i=r+this.maxAge,n=e===null?0:this.zipInstances.size-e;for(let[s,{zipFs:o,expiresAt:a,refCount:l}]of this.zipInstances.entries())if(!(l!==0||o.hasOpenFileHandles())){if(r>=a){o.saveAndClose(),this.zipInstances.delete(s),n-=1;continue}else if(e===null||n<=0){i=a;break}o.saveAndClose(),this.zipInstances.delete(s),n-=1}this.limitOpenFilesTimeout===null&&(e===null&&this.zipInstances.size>0||e!==null)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},i-r).unref())}async getZipPromise(e,r){let i=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let n=this.zipInstances.get(e);if(!n){let s=await i();n=this.zipInstances.get(e),n||(n={zipFs:new Jr(e,s),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await r(n.zipFs)}finally{n.refCount-=1}}else{let n=new Jr(e,await i());try{return await r(n)}finally{n.saveAndClose()}}}getZipSync(e,r){let i=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let n=this.zipInstances.get(e);return n||(n={zipFs:new Jr(e,i()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,n),n.expiresAt=Date.now()+this.maxAge,r(n.zipFs)}else{let n=new Jr(e,i());try{return r(n)}finally{n.saveAndClose()}}}};var lh=ie(require("util"));var vI=ie(require("url"));var hb=class extends fi{constructor(e){super(M);this.baseFs=e}mapFromBase(e){return e}mapToBase(e){return e instanceof vI.URL?(0,vI.fileURLToPath)(e):e}};var ohe=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),xO=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),ahe=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]);function pb(t,e){e=new hb(e);let r=(i,n,s)=>{let o=i[n];i[n]=s,typeof(o==null?void 0:o[lh.promisify.custom])!="undefined"&&(s[lh.promisify.custom]=o[lh.promisify.custom])};{r(t,"exists",(i,...n)=>{let o=typeof n[n.length-1]=="function"?n.pop():()=>{};process.nextTick(()=>{e.existsPromise(i).then(a=>{o(a)},()=>{o(!1)})})}),r(t,"read",(i,n,...s)=>{let a=typeof s[s.length-1]=="function"?s.pop():()=>{};process.nextTick(()=>{e.readPromise(i,n,...s).then(l=>{a(null,l,n)},l=>{a(l,0,n)})})});for(let i of xO){let n=i.replace(/Promise$/,"");if(typeof t[n]=="undefined")continue;let s=e[i];if(typeof s=="undefined")continue;r(t,n,(...a)=>{let c=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{s.apply(e,a).then(u=>{c(null,u)},u=>{c(u)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",i=>{try{return e.existsSync(i)}catch(n){return!1}});for(let i of ohe){let n=i;if(typeof t[n]=="undefined")continue;let s=e[i];typeof s!="undefined"&&r(t,n,s.bind(e))}t.realpathSync.native=t.realpathSync}{let i=process.emitWarning;process.emitWarning=()=>{};let n;try{n=t.promises}finally{process.emitWarning=i}if(typeof n!="undefined"){for(let o of xO){let a=o.replace(/Promise$/,"");if(typeof n[a]=="undefined")continue;let l=e[o];typeof l!="undefined"&&o!=="open"&&r(n,a,l.bind(e))}class s{constructor(a){this.fd=a}}for(let o of ahe){let a=o.replace(/Promise$/,""),l=e[o];typeof l!="undefined"&&r(s.prototype,a,function(...c){return l.call(e,this.fd,...c)})}r(n,"open",async(...o)=>{let a=await e.openPromise(...o);return new s(a)})}}t.read[lh.promisify.custom]=async(i,n,...s)=>({bytesRead:await e.readPromise(i,n,...s),buffer:n})}function SI(t,e){let r=Object.create(t);return pb(r,e),r}var kO=ie(require("os"));function PO(t){let e=M.toPortablePath(kO.default.tmpdir()),r=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return v.join(e,`${t}${r}`)}var vs=new Set,DO=!1;function RO(){DO||(DO=!0,process.once("exit",()=>{T.rmtempSync()}))}var T=Object.assign(new Wt,{detachTemp(t){vs.delete(t)},mktempSync(t){for(RO();;){let e=PO("xfs-");try{this.mkdirSync(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=this.realpathSync(e);if(vs.add(r),typeof t!="undefined")try{return t(r)}finally{if(vs.has(r)){vs.delete(r);try{this.removeSync(r)}catch{}}}else return r}},async mktempPromise(t){for(RO();;){let e=PO("xfs-");try{await this.mkdirPromise(e)}catch(i){if(i.code==="EEXIST")continue;throw i}let r=await this.realpathPromise(e);if(vs.add(r),typeof t!="undefined")try{return await t(r)}finally{if(vs.has(r)){vs.delete(r);try{await this.removePromise(r)}catch{}}}else return r}},async rmtempPromise(){await Promise.all(Array.from(vs.values()).map(async t=>{try{await T.removePromise(t,{maxRetries:0}),vs.delete(t)}catch{}}))},rmtempSync(){for(let t of vs)try{T.removeSync(t),vs.delete(t)}catch{}}});var vb=ie(bb()),Pn;(function(i){i[i.Never=0]="Never",i[i.ErrorCode=1]="ErrorCode",i[i.Always=2]="Always"})(Pn||(Pn={}));function dl(t){return t!==null&&typeof t.fd=="number"}var Cl=new Set;function Sb(){}function xb(){for(let t of Cl)t.kill()}async function to(t,e,{cwd:r,env:i=process.env,strict:n=!1,stdin:s=null,stdout:o,stderr:a,end:l=2}){let c=["pipe","pipe","pipe"];s===null?c[0]="ignore":dl(s)&&(c[0]=s),dl(o)&&(c[1]=o),dl(a)&&(c[2]=a);let u=(0,vb.default)(t,e,{cwd:M.fromPortablePath(r),env:_(P({},i),{PWD:M.fromPortablePath(r)}),stdio:c});Cl.add(u),Cl.size===1&&(process.on("SIGINT",Sb),process.on("SIGTERM",xb)),!dl(s)&&s!==null&&s.pipe(u.stdin),dl(o)||u.stdout.pipe(o,{end:!1}),dl(a)||u.stderr.pipe(a,{end:!1});let g=()=>{for(let f of new Set([o,a]))dl(f)||f.end()};return new Promise((f,h)=>{u.on("error",p=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1)&&g(),h(p)}),u.on("close",(p,d)=>{Cl.delete(u),Cl.size===0&&(process.off("SIGINT",Sb),process.off("SIGTERM",xb)),(l===2||l===1&&p>0)&&g(),p===0||!n?f({code:kb(p,d)}):h(p!==null?new Error(`Child "${t}" exited with exit code ${p}`):new Error(`Child "${t}" exited with signal ${d}`))})})}async function Nhe(t,e,{cwd:r,env:i=process.env,encoding:n="utf8",strict:s=!1}){let o=["ignore","pipe","pipe"],a=[],l=[],c=M.fromPortablePath(r);typeof i.PWD!="undefined"&&(i=_(P({},i),{PWD:c}));let u=(0,vb.default)(t,e,{cwd:c,env:i,stdio:o});return u.stdout.on("data",g=>{a.push(g)}),u.stderr.on("data",g=>{l.push(g)}),await new Promise((g,f)=>{u.on("error",()=>{f()}),u.on("close",(h,p)=>{let d=n==="buffer"?Buffer.concat(a):Buffer.concat(a).toString(n),m=n==="buffer"?Buffer.concat(l):Buffer.concat(l).toString(n);h===0||!s?g({code:kb(h,p),stdout:d,stderr:m}):f(Object.assign(new Error(`Child "${t}" exited with exit code ${h} - -${m}`),{code:kb(h,p),stdout:d,stderr:m}))})})}var Lhe=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function kb(t,e){let r=Lhe.get(e);return typeof r!="undefined"?128+r:t!=null?t:1}var Pb={};it(Pb,{getDefaultGlobalFolder:()=>Rb,getHomeFolder:()=>uh,isFolderInside:()=>Fb});var Db=ie(require("os"));function Rb(){if(process.platform==="win32"){let t=M.toPortablePath(process.env.LOCALAPPDATA||M.join((0,Db.homedir)(),"AppData","Local"));return v.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=M.toPortablePath(process.env.XDG_DATA_HOME);return v.resolve(t,"yarn/berry")}return v.resolve(uh(),".yarn/berry")}function uh(){return M.toPortablePath((0,Db.homedir)()||"/usr/local/share")}function Fb(t,e){let r=v.relative(e,t);return r&&!r.startsWith("..")&&!v.isAbsolute(r)}var ue={};it(ue,{LogLevel:()=>Ts,Style:()=>Gl,Type:()=>Le,addLogFilterSupport:()=>Cp,applyColor:()=>On,applyHyperlink:()=>Ku,applyStyle:()=>Py,json:()=>Uu,mark:()=>xx,pretty:()=>Ve,prettyField:()=>Yl,prettyList:()=>Kx,supportsColor:()=>xy,supportsHyperlinks:()=>Mx,tuple:()=>jl});var pp=ie(jb()),dp=ie(ml()),o3=ie(Nn()),a3=ie(gU());var z;(function(te){te[te.UNNAMED=0]="UNNAMED",te[te.EXCEPTION=1]="EXCEPTION",te[te.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",te[te.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",te[te.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",te[te.BUILD_DISABLED=5]="BUILD_DISABLED",te[te.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",te[te.MUST_BUILD=7]="MUST_BUILD",te[te.MUST_REBUILD=8]="MUST_REBUILD",te[te.BUILD_FAILED=9]="BUILD_FAILED",te[te.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",te[te.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",te[te.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",te[te.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",te[te.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",te[te.REMOTE_INVALID=15]="REMOTE_INVALID",te[te.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",te[te.RESOLUTION_PACK=17]="RESOLUTION_PACK",te[te.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",te[te.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",te[te.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",te[te.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",te[te.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",te[te.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",te[te.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",te[te.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",te[te.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",te[te.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",te[te.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",te[te.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",te[te.FETCH_FAILED=30]="FETCH_FAILED",te[te.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",te[te.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",te[te.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",te[te.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",te[te.NETWORK_ERROR=35]="NETWORK_ERROR",te[te.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",te[te.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",te[te.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",te[te.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",te[te.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",te[te.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",te[te.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",te[te.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",te[te.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",te[te.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",te[te.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",te[te.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",te[te.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",te[te.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",te[te.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",te[te.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",te[te.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",te[te.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",te[te.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",te[te.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",te[te.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",te[te.INVALID_MANIFEST=57]="INVALID_MANIFEST",te[te.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",te[te.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",te[te.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",te[te.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",te[te.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",te[te.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",te[te.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",te[te.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",te[te.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",te[te.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",te[te.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",te[te.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",te[te.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",te[te.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",te[te.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",te[te.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",te[te.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",te[te.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",te[te.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",te[te.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE"})(z||(z={}));function KI(t){return`YN${t.toString(10).padStart(4,"0")}`}var de={};it(de,{BufferStream:()=>OH,CachingStrategy:()=>Dl,DefaultStream:()=>KH,assertNever:()=>Lv,bufferStream:()=>Cu,buildIgnorePattern:()=>DIe,convertMapsToIndexableObjects:()=>aE,dynamicRequire:()=>mu,escapeRegExp:()=>SIe,getArrayWithDefault:()=>hu,getFactoryWithDefault:()=>na,getMapWithDefault:()=>pu,getSetWithDefault:()=>Pl,isIndexableObject:()=>Tv,isPathLike:()=>RIe,isTaggedYarnVersion:()=>vIe,mapAndFilter:()=>kl,mapAndFind:()=>MH,overrideType:()=>Nv,parseBoolean:()=>Hh,parseOptionalBoolean:()=>jH,prettifyAsyncErrors:()=>du,prettifySyncErrors:()=>Mv,releaseAfterUseAsync:()=>kIe,replaceEnvVariables:()=>Ov,sortMap:()=>gn,tryParseOptionalBoolean:()=>Kv,validateEnum:()=>xIe});var vh={};it(vh,{Builtins:()=>Ev,Cli:()=>oo,Command:()=>ye,Option:()=>Y,UsageError:()=>me});var yl=0,Ih=1,Gi=2,sv="",hi="\0",Au=-1,ov=/^(-h|--help)(?:=([0-9]+))?$/,UI=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,fU=/^-[a-zA-Z]{2,}$/,av=/^([^=]+)=([\s\S]*)$/,Av=process.env.DEBUG_CLI==="1";var me=class extends Error{constructor(e){super(e);this.clipanion={type:"usage"},this.name="UsageError"}},Eh=class extends Error{constructor(e,r){super();if(this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===r[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${lv(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},cv=class extends Error{constructor(e,r){super();this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${lv(e)}`}},lv=t=>`While running ${t.filter(e=>e!==hi).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`;var yh=Symbol("clipanion/isOption");function ji(t){return _(P({},t),{[yh]:!0})}function so(t,e){return typeof t=="undefined"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function HI(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function wh(t,e){return e.length===1?new me(`${t}: ${HI(e[0],!0)}`):new me(`${t}: -${e.map(r=>` -- ${HI(r)}`).join("")}`)}function Bh(t,e,r){if(typeof r=="undefined")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!r(e,{errors:i,coercions:n,coercion:s}))throw wh(`Invalid value for ${t}`,i);for(let[,a]of n)a();return e}var ye=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(typeof r!="undefined"){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(()=>(Ss(),lu)),a=o(n(s()),r),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw wh("Invalid option schema",l);for(let[,g]of c)g()}let i=await this.execute();return typeof i!="undefined"?i:0}};ye.isOption=yh;ye.Default=[];function un(t){Av&&console.log(t)}var BU={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Au};function QU(){return{nodes:[qi(),qi(),qi()]}}function nCe(t){let e=QU(),r=[],i=e.nodes.length;for(let n of t){r.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=t.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)r(a);for(let[,{to:o}]of n.dynamics)r(o);for(let{to:o}of n.shortcuts)r(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=t.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};r(yl)}function oCe(t,{prefix:e=""}={}){if(Av){un(`${e}Nodes are:`);for(let r=0;rl!==Gi).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===Gi))throw new Eh(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=aCe(a)}if(i.length>0){un(" Results:");for(let s of i)un(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else un(" No results");return i}function ACe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,hi)){for(let{to:r}of t.statics[hi])if(r===Ih)return!0}return!1}function cCe(t,e,r){let i=r&&e.length>0?[""]:[],n=vU(t,e,r),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let d=t.nodes[p],m=Object.keys(d.statics);for(let E of Object.keys(d.statics)){let B=m[0];for(let{to:b,reducer:R}of d.statics[B])R==="pushPath"&&(u||l.push(B),g.push(b))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=t.nodes[l],g=ACe(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==hi||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===Gi)continue;let p=lCe(f,c);if(p!==null)for(let d of p)a([...i,d],l)}}return[...s].sort()}function gCe(t,e){let r=vU(t,[...e,hi]);return uCe(e,r.map(({state:i})=>i))}function aCe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function uCe(t,e){let r=e.filter(g=>g.selectedIndex!==null);if(r.length===0)throw new Error;let i=r.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new Eh(t,r.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fCe(c);if(u.length>1)throw new cv(t,u.map(g=>g.candidateUsage));return u[0]}function fCe(t){let e=[],r=[];for(let i of t)i.selectedIndex===Au?r.push(i):e.push(i);return r.length>0&&e.push(_(P({},BU),{path:SU(...r.map(i=>i.path)),options:r.reduce((i,n)=>i.concat(n.options),[])})),e}function SU(t,e,...r){return e===void 0?Array.from(t):SU(t.filter((i,n)=>i===e[n]),...r)}function qi(){return{dynamics:[],shortcuts:[],statics:{}}}function bU(t){return t===Ih||t===Gi}function Cv(t,e=0){return{to:bU(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function iCe(t,e=0){let r=qi();for(let[i,n]of t.dynamics)r.dynamics.push([i,Cv(n,e)]);for(let i of t.shortcuts)r.shortcuts.push(Cv(i,e));for(let[i,n]of Object.entries(t.statics))r.statics[i]=n.map(s=>Cv(s,e));return r}function pi(t,e,r,i,n){t.nodes[e].dynamics.push([r,{to:i,reducer:n}])}function cu(t,e,r,i){t.nodes[e].shortcuts.push({to:r,reducer:i})}function ta(t,e,r,i,n){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:i,reducer:n})}function jI(t,e,r,i){if(Array.isArray(e)){let[n,...s]=e;return t[n](r,i,...s)}else return t[e](r,i)}function lCe(t,e){let r=Array.isArray(t)?YI[t[0]]:YI[t];if(typeof r.suggest=="undefined")return null;let i=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...i)}var YI={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,i)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&fU.test(e)&&[...e.slice(1)].every(i=>r.includes(`-${i}`)),isBoundOption:(t,e,r,i)=>{let n=e.match(av);return!t.ignoreOptions&&!!n&&UI.test(n[1])&&r.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ov.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&UI.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!UI.test(e)};YI.isOption.suggest=(t,e,r=!0)=>r?null:[e];var dv={setCandidateState:(t,e,r)=>P(P({},t),r),setSelectedIndex:(t,e,r)=>_(P({},t),{selectedIndex:r}),pushBatch:(t,e)=>_(P({},t),{options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,i]=e.match(av);return _(P({},t),{options:t.options.concat({name:r,value:i})})},pushPath:(t,e)=>_(P({},t),{path:t.path.concat(e)}),pushPositional:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>_(P({},t),{positionals:t.positionals.concat({value:e,extra:Ln})}),pushTrue:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>_(P({},t),{options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>_(P({},t),{options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let i=_(P({},t),{options:[...t.options]}),n=t.options[t.options.length-1];return n.value=((r=n.value)!==null&&r!==void 0?r:[]).concat([e]),i},setStringValue:(t,e)=>{let r=_(P({},t),{options:[...t.options]}),i=t.options[t.options.length-1];return i.value=e,r},inhibateOptions:t=>_(P({},t),{ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,i]=e.match(ov);return typeof i!="undefined"?_(P({},t),{options:[{name:"-c",value:String(r)},{name:"-i",value:i}]}):_(P({},t),{options:[{name:"-c",value:String(r)}]})},setError:(t,e,r)=>e===hi?_(P({},t),{errorMessage:`${r}.`}):_(P({},t),{errorMessage:`${r} ("${e}").`}),setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return _(P({},t),{errorMessage:`Not enough arguments to option ${r.name}.`})}},Ln=Symbol(),xU=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:i,proxy:n})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===Ln)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==Ln?this.arity.extra.push(e):this.arity.extra!==Ln&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===Ln)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Ln?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context=="undefined")throw new Error("Assertion failed: No context attached");let e=QU(),r=yl,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);r=xs(e,qi()),ta(e,yl,sv,r,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=r;if(a.length>0){let f=xs(e,qi());cu(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=xs(e,qi());pi(e,l,"isHelp",f,["useHelp",this.cliIndex]),ta(e,f,hi,Ih,["setSelectedIndex",Au]),this.registerOptions(e,l)}this.arity.leading.length>0&&ta(e,l,hi,Gi,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&ta(e,h,hi,Gi,["setError","Not enough positional arguments"]),pi(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Ln||this.arity.extra.length>0){let f=xs(e,qi());if(cu(e,c,f),this.arity.extra===Ln){let h=xs(e,qi());this.arity.proxy||this.registerOptions(e,h),pi(e,c,s,h,"pushExtraNoLimits"),pi(e,h,s,h,"pushExtraNoLimits"),cu(e,h,f)}else for(let h=0;h0&&ta(e,u,hi,Gi,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)pi(e,r,["isOption",s,i.hidden||s!==n],r,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&pi(e,r,["isNegatedOption",s],r,["pushFalse",s]);else{let s=xs(e,qi());for(let o of i.names)pi(e,r,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&egCe(i,n),suggest:(n,s)=>cCe(i,n,s)}}};var kU=80,mv=Array(kU).fill("\u2501");for(let t=0;t<=24;++t)mv[mv.length-t]=`[38;5;${232+t}m\u2501`;var Iv={header:t=>`\u2501\u2501\u2501 ${t}${t.length`${t}`,error:t=>`${t}`,code:t=>`${t}`},PU={header:t=>t,bold:t=>t,error:t=>t,code:t=>t};function hCe(t){let e=t.split(` -`),r=e.filter(n=>n.match(/\S/)),i=r.length>0?r.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function Vn(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` -`),t=hCe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),t=t.replace(/\n(\n)?\n*/g,"$1"),r&&(t=t.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),t?`${t} -`:""}var bh=class extends ye{constructor(e){super();this.contexts=e,this.commands=[]}static from(e,r){let i=new bh(r);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index!="undefined"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let r=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};var DU=Symbol("clipanion/errorCommand");function pCe(){return process.env.FORCE_COLOR==="0"?!1:!!(process.env.FORCE_COLOR==="1"||typeof process.stdout!="undefined"&&process.stdout.isTTY)}var oo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:i,enableColors:n=pCe()}={}){this.registrations=new Map,this.builder=new Qh({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=i,this.enableColors=n}static from(e,r={}){let i=new oo(r);for(let n of e)i.register(n);return i}register(e){var r;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[ye.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(r=e.paths)!==null&&r!==void 0?r:n.paths;if(typeof a!="undefined")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:r,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case Au:return bh.from(n,r);default:{let{commandClass:s}=r[n.selectedIndex],o=this.registrations.get(s);if(typeof o=="undefined")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[DU]=a,l}}break}}async run(e,r){let i;if(!Array.isArray(e))i=e;else try{i=this.process(e)}catch(s){return r.stdout.write(this.error(s)),1}if(i.help)return r.stdout.write(this.usage(i,{detailed:!0})),0;i.context=r,i.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(s,o)=>this.error(s,o),process:s=>this.process(s),run:(s,o)=>this.run(s,P(P({},r),o)),usage:(s,o)=>this.usage(s,o)};let n;try{n=await i.validateAndExecute().catch(s=>i.catch(s).then(()=>0))}catch(s){return r.stdout.write(this.error(s,{command:i})),1}return n}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:i}=this.builder.compile();return i(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage=="undefined")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category!="undefined"?Vn(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description!="undefined"?Vn(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details!="undefined"?Vn(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples!="undefined"?i.usage.examples.map(([f,h])=>[Vn(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return r}usage(e=null,{colored:r,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage!="undefined";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof ye?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=Vn(l,{format:this.format(r),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(r).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(r).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${Iv.header("Options")} -`;let h=f.reduce((p,d)=>Math.max(p,d.definition.length),0);a+=` -`;for(let{definition:p,description:d}of f)a+=` ${this.format(r).bold(p.padEnd(h))} ${Vn(d,{format:this.format(r),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(r).header("Details")} -`,a+=` -`,a+=Vn(c,{format:this.format(r),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(r).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=Vn(h,{format:this.format(r),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(r).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(r).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage=="undefined")continue;let p=typeof f.usage.category!="undefined"?Vn(f.usage.category,{format:this.format(r),paragraphs:!1}):null,d=l.get(p);typeof d=="undefined"&&l.set(p,d=[]);let{usage:m}=this.getUsageByIndex(h);d.push({commandClass:f,usage:m})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel!="undefined",g=typeof this.binaryVersion!="undefined";u||g?(u&&g?a+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(r).header(`${this.binaryLabel}`)} -`:a+=`${this.format(r).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(r).bold(n)}${this.binaryName} -`):a+=`${this.format(r).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((d,m)=>d.usage.localeCompare(m.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(r).header(`${p}`)} -`;for(let{commandClass:d,usage:m}of h){let E=d.usage.description||"undocumented";a+=` -`,a+=` ${this.format(r).bold(m)} -`,a+=` ${Vn(E,{format:this.format(r),paragraphs:!1})}`}}a+=` -`,a+=Vn("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return a}error(e,r){var i,{colored:n,command:s=(i=e[DU])!==null&&i!==void 0?i:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l!="undefined"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}getUsageByRegistration(e,r){let i=this.registrations.get(e);if(typeof i=="undefined")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}format(e=this.enableColors){return e?Iv:PU}};oo.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr};var Ev={};it(Ev,{DefinitionsCommand:()=>qI,HelpCommand:()=>JI,VersionCommand:()=>WI});var qI=class extends ye{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};qI.paths=[["--clipanion=definitions"]];var JI=class extends ye{async execute(){this.context.stdout.write(this.cli.usage())}};JI.paths=[["-h"],["--help"]];var WI=class extends ye{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};WI.paths=[["-v"],["--version"]];var Y={};it(Y,{Array:()=>RU,Boolean:()=>FU,Counter:()=>NU,Proxy:()=>LU,Rest:()=>TU,String:()=>MU,applyValidator:()=>Bh,cleanValidationError:()=>HI,formatError:()=>wh,isOptionSymbol:()=>yh,makeCommandOption:()=>ji,rerouteArguments:()=>so});function RU(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i!="undefined"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}function FU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}function NU(t,e,r){let[i,n]=so(e,r!=null?r:{}),s=t.split(","),o=new Set(s);return ji({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}function LU(t={}){return ji({definition(e,r){var i;e.addProxy({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){return i.positionals.map(({value:n})=>n)}})}function TU(t={}){return ji({definition(e,r){var i;e.addRest({name:(i=t.name)!==null&&i!==void 0?i:r,required:t.required})},transformer(e,r,i){let n=o=>{let a=i.positionals[o];return a.extra===Ln||a.extra===!1&&oo)}})}function dCe(t,e,r){let[i,n]=so(e,r!=null?r:{}),{arity:s=1}=n,o=t.split(","),a=new Set(o);return ji({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Bh(g!=null?g:c,f,n.validator):f}})}function CCe(t={}){let{required:e=!0}=t;return ji({definition(r,i){var n;r.addPositional({name:(n=t.name)!==null&&n!==void 0?n:i,required:t.required})},transformer(r,i,n){var s;for(let o=0;oJSON.stringify(i)).join(", ")})`);return e}function kl(t,e){let r=[];for(let i of t){let n=e(i);n!==LH&&r.push(n)}return r}var LH=Symbol();kl.skip=LH;function MH(t,e){for(let r of t){let i=e(r);if(i!==TH)return i}}var TH=Symbol();MH.skip=TH;function Tv(t){return typeof t=="object"&&t!==null}function aE(t){if(t instanceof Map&&(t=Object.fromEntries(t)),Tv(t))for(let e of Object.keys(t)){let r=t[e];Tv(r)&&(t[e]=aE(r))}return t}function na(t,e,r){let i=t.get(e);return typeof i=="undefined"&&t.set(e,i=r()),i}function hu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=[]),r}function Pl(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Set),r}function pu(t,e){let r=t.get(e);return typeof r=="undefined"&&t.set(e,r=new Map),r}async function kIe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function du(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function Mv(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Cu(t){return await new Promise((e,r)=>{let i=[];t.on("error",n=>{r(n)}),t.on("data",n=>{i.push(n)}),t.on("end",()=>{e(Buffer.concat(i))})})}var OH=class extends Fv.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),i(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}},KH=class extends Fv.Transform{constructor(e=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=e}_transform(e,r,i){if(r!=="buffer"||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,i(null,e)}_flush(e){this.active&&this.ifEmpty.length>0?e(null,this.ifEmpty):e(null)}},Uh=eval("require");function UH(t){return Uh(M.fromPortablePath(t))}function HH(path){let physicalPath=M.fromPortablePath(path),currentCacheEntry=Uh.cache[physicalPath];delete Uh.cache[physicalPath];let result;try{result=UH(physicalPath);let freshCacheEntry=Uh.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Uh.cache[physicalPath]=currentCacheEntry}return result}var GH=new Map;function PIe(t){let e=GH.get(t),r=T.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let i=HH(t);return GH.set(t,{mtime:r.mtimeMs,instance:i}),i}var Dl;(function(i){i[i.NoCache=0]="NoCache",i[i.FsTime=1]="FsTime",i[i.Node=2]="Node"})(Dl||(Dl={}));function mu(t,{cachingStrategy:e=2}={}){switch(e){case 0:return HH(t);case 1:return PIe(t);case 2:return UH(t);default:throw new Error("Unsupported caching strategy")}}function gn(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let i=[];for(let s of e)i.push(r.map(o=>s(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function DIe(t){return t.length===0?null:t.map(e=>`(${FH.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function Ov(t,{env:e}){let r=/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g;return t.replace(r,(...i)=>{let{variableName:n,colon:s,fallback:o}=i[i.length-1],a=Object.prototype.hasOwnProperty.call(e,n),l=e[n];if(l||a&&!s)return l;if(o!=null)return o;throw new me(`Environment variable not found (${n})`)})}function Hh(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function jH(t){return typeof t=="undefined"?t:Hh(t)}function Kv(t){try{return jH(t)}catch{return null}}function RIe(t){return!!(M.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}var S={};it(S,{areDescriptorsEqual:()=>i3,areIdentsEqual:()=>cp,areLocatorsEqual:()=>up,areVirtualPackagesEquivalent:()=>XQe,bindDescriptor:()=>VQe,bindLocator:()=>_Qe,convertDescriptorToLocator:()=>By,convertLocatorToDescriptor:()=>WQe,convertPackageToLocator:()=>zQe,convertToIdent:()=>JQe,convertToManifestRange:()=>ebe,copyPackage:()=>ap,devirtualizeDescriptor:()=>Ap,devirtualizeLocator:()=>lp,getIdentVendorPath:()=>Lx,isPackageCompatible:()=>Sy,isVirtualDescriptor:()=>hA,isVirtualLocator:()=>Eo,makeDescriptor:()=>Yt,makeIdent:()=>Io,makeLocator:()=>Vi,makeRange:()=>by,parseDescriptor:()=>pA,parseFileStyleRange:()=>ZQe,parseIdent:()=>In,parseLocator:()=>Hl,parseRange:()=>Tu,prettyDependent:()=>Nx,prettyDescriptor:()=>Xt,prettyIdent:()=>Vr,prettyLocator:()=>lt,prettyLocatorNoColors:()=>Rx,prettyRange:()=>yy,prettyReference:()=>fp,prettyResolution:()=>Fx,prettyWorkspace:()=>hp,renamePackage:()=>op,slugifyIdent:()=>Dx,slugifyLocator:()=>Mu,sortDescriptors:()=>Ou,stringifyDescriptor:()=>En,stringifyIdent:()=>St,stringifyLocator:()=>is,tryParseDescriptor:()=>gp,tryParseIdent:()=>n3,tryParseLocator:()=>Qy,virtualizeDescriptor:()=>kx,virtualizePackage:()=>Px});var Lu=ie(require("querystring")),e3=ie(Or()),t3=ie(wY());var mn={};it(mn,{checksumFile:()=>Iy,checksumPattern:()=>Ey,makeHash:()=>zi});var my=ie(require("crypto")),Sx=ie(vx());function zi(...t){let e=(0,my.createHash)("sha512"),r="";for(let i of t)typeof i=="string"?r+=i:i&&(r&&(e.update(r),r=""),e.update(i));return r&&e.update(r),e.digest("hex")}async function Iy(t,{baseFs:e,algorithm:r}={baseFs:T,algorithm:"sha512"}){let i=await e.openPromise(t,"r");try{let n=65536,s=Buffer.allocUnsafeSlow(n),o=(0,my.createHash)(r),a=0;for(;(a=await e.readPromise(i,s,0,n))!==0;)o.update(a===n?s:s.slice(0,a));return o.digest("hex")}finally{await e.closePromise(i)}}async function Ey(t,{cwd:e}){let i=(await(0,Sx.default)(t,{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(a=>`${a}/**/*`),n=await(0,Sx.default)([t,...i],{cwd:M.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});n.sort();let s=await Promise.all(n.map(async a=>{let l=[Buffer.from(a)],c=M.toPortablePath(a),u=await T.lstatPromise(c);return u.isSymbolicLink()?l.push(Buffer.from(await T.readlinkPromise(c))):u.isFile()&&l.push(await T.readFilePromise(c)),l.join("\0")})),o=(0,my.createHash)("sha512");for(let a of s)o.update(a);return o.digest("hex")}var wy="virtual:",YQe=5,r3=/(os|cpu)=([a-z0-9_-]+)/,qQe=(0,t3.makeParser)(r3);function Io(t,e){if(t==null?void 0:t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:zi(t,e),scope:t,name:e}}function Yt(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:zi(t.identHash,e),range:e}}function Vi(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:zi(t.identHash,e),reference:e}}function JQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function By(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function WQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function zQe(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function op(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function ap(t){return op(t,t)}function kx(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return Yt(t,`virtual:${e}#${t.range}`)}function Px(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return op(t,Vi(t,`virtual:${e}#${t.reference}`))}function hA(t){return t.range.startsWith(wy)}function Eo(t){return t.reference.startsWith(wy)}function Ap(t){if(!hA(t))throw new Error("Not a virtual descriptor");return Yt(t,t.range.replace(/^[^#]*#/,""))}function lp(t){if(!Eo(t))throw new Error("Not a virtual descriptor");return Vi(t,t.reference.replace(/^[^#]*#/,""))}function VQe(t,e){return t.range.includes("::")?t:Yt(t,`${t.range}::${Lu.default.stringify(e)}`)}function _Qe(t,e){return t.reference.includes("::")?t:Vi(t,`${t.reference}::${Lu.default.stringify(e)}`)}function cp(t,e){return t.identHash===e.identHash}function i3(t,e){return t.descriptorHash===e.descriptorHash}function up(t,e){return t.locatorHash===e.locatorHash}function XQe(t,e){if(!Eo(t))throw new Error("Invalid package type");if(!Eo(e))throw new Error("Invalid package type");if(!cp(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let i=e.dependencies.get(r.identHash);if(!i||!i3(r,i))return!1}return!0}function In(t){let e=n3(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function n3(t){let e=t.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!e)return null;let[,r,i]=e,n=typeof r!="undefined"?r:null;return Io(n,i)}function pA(t,e=!1){let r=gp(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function gp(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid range (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Yt(Io(o,n),a)}function Hl(t,e=!1){let r=Qy(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function Qy(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;let[,i,n,s]=r;if(s==="unknown")throw new Error(`Invalid reference (${t})`);let o=typeof i!="undefined"?i:null,a=typeof s!="undefined"?s:"unknown";return Vi(Io(o,n),a)}function Tu(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let i=typeof r[1]!="undefined"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&i!==e.requireProtocol)throw new Error(`Invalid protocol (${i})`);if((e==null?void 0:e.requireProtocol)&&i===null)throw new Error(`Missing protocol (${i})`);let n=typeof r[3]!="undefined"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&n===null)throw new Error(`Missing source (${t})`);let s=typeof r[3]!="undefined"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),o=(e==null?void 0:e.parseSelector)?Lu.default.parse(s):s,a=typeof r[4]!="undefined"?Lu.default.parse(r[4]):null;return{protocol:i,source:n,selector:o,params:a}}function ZQe(t,{protocol:e}){let{selector:r,params:i}=Tu(t,{requireProtocol:e,requireBindings:!0});if(typeof i.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Hl(i.locator,!0),path:r}}function s3(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function $Qe(t){return t===null?!1:Object.entries(t).length>0}function by({protocol:t,source:e,selector:r,params:i}){let n="";return t!==null&&(n+=`${t}`),e!==null&&(n+=`${s3(e)}#`),n+=s3(r),$Qe(i)&&(n+=`::${Lu.default.stringify(i)}`),n}function ebe(t){let{params:e,protocol:r,source:i,selector:n}=Tu(t);for(let s in e)s.startsWith("__")&&delete e[s];return by({protocol:r,source:i,params:e,selector:n})}function St(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function En(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function is(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function Dx(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function Mu(t){let{protocol:e,selector:r}=Tu(t.reference),i=e!==null?e.replace(/:$/,""):"exotic",n=e3.default.valid(r),s=n!==null?`${i}-${n}`:`${i}`,o=10,a=t.scope?`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`:`${Dx(t)}-${s}-${t.locatorHash.slice(0,o)}`;return kr(a)}function Vr(t,e){return e.scope?`${Ve(t,`@${e.scope}/`,Le.SCOPE)}${Ve(t,e.name,Le.NAME)}`:`${Ve(t,e.name,Le.NAME)}`}function vy(t){if(t.startsWith(wy)){let e=vy(t.substr(t.indexOf("#")+1)),r=t.substr(wy.length,YQe);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function yy(t,e){return`${Ve(t,vy(e),Le.RANGE)}`}function Xt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.RANGE)}${yy(t,e.range)}`}function fp(t,e){return`${Ve(t,vy(e),Le.REFERENCE)}`}function lt(t,e){return`${Vr(t,e)}${Ve(t,"@",Le.REFERENCE)}${fp(t,e.reference)}`}function Rx(t){return`${St(t)}@${vy(t.reference)}`}function Ou(t){return gn(t,[e=>St(e),e=>e.range])}function hp(t,e){return Vr(t,e.locator)}function Fx(t,e,r){let i=hA(e)?Ap(e):e;return r===null?`${Xt(t,i)} \u2192 ${xx(t).Cross}`:i.identHash===r.identHash?`${Xt(t,i)} \u2192 ${fp(t,r.reference)}`:`${Xt(t,i)} \u2192 ${lt(t,r)}`}function Nx(t,e,r){return r===null?`${lt(t,e)}`:`${lt(t,e)} (via ${yy(t,r.range)})`}function Lx(t){return`node_modules/${St(t)}`}function Sy(t,e){return t.conditions?qQe(t.conditions,r=>{let[,i,n]=r.match(r3),s=e[i];return s?s.includes(n):!0}):!0}var gt;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(gt||(gt={}));var oi;(function(i){i.Dependency="Dependency",i.PeerDependency="PeerDependency",i.PeerDependencyMeta="PeerDependencyMeta"})(oi||(oi={}));var ki;(function(i){i.Inactive="inactive",i.Redundant="redundant",i.Active="active"})(ki||(ki={}));var Le={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING"},Gl;(function(e){e[e.BOLD=2]="BOLD"})(Gl||(Gl={}));var Tx=dp.default.GITHUB_ACTIONS?{level:2}:pp.default.supportsColor?{level:pp.default.supportsColor.level}:{level:0},xy=Tx.level!==0,Mx=xy&&!dp.default.GITHUB_ACTIONS&&!dp.default.CIRCLE&&!dp.default.GITLAB,Ox=new pp.default.Instance(Tx),tbe=new Map([[Le.NO_HINT,null],[Le.NULL,["#a853b5",129]],[Le.SCOPE,["#d75f00",166]],[Le.NAME,["#d7875f",173]],[Le.RANGE,["#00afaf",37]],[Le.REFERENCE,["#87afff",111]],[Le.NUMBER,["#ffd700",220]],[Le.PATH,["#d75fd7",170]],[Le.URL,["#d75fd7",170]],[Le.ADDED,["#5faf00",70]],[Le.REMOVED,["#d70000",160]],[Le.CODE,["#87afff",111]],[Le.SIZE,["#ffd700",220]]]),Ls=t=>t,ky={[Le.NUMBER]:Ls({pretty:(t,e)=>`${e}`,json:t=>t}),[Le.IDENT]:Ls({pretty:(t,e)=>Vr(t,e),json:t=>St(t)}),[Le.LOCATOR]:Ls({pretty:(t,e)=>lt(t,e),json:t=>is(t)}),[Le.DESCRIPTOR]:Ls({pretty:(t,e)=>Xt(t,e),json:t=>En(t)}),[Le.RESOLUTION]:Ls({pretty:(t,{descriptor:e,locator:r})=>Fx(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:En(t),locator:e!==null?is(e):null})}),[Le.DEPENDENT]:Ls({pretty:(t,{locator:e,descriptor:r})=>Nx(t,e,r),json:({locator:t,descriptor:e})=>({locator:is(t),descriptor:En(e)})}),[Le.PACKAGE_EXTENSION]:Ls({pretty:(t,e)=>{switch(e.type){case oi.Dependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"dependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependency:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependencies",Le.CODE)} \u27A4 ${Vr(t,e.descriptor)}`;case oi.PeerDependencyMeta:return`${Vr(t,e.parentDescriptor)} \u27A4 ${On(t,"peerDependenciesMeta",Le.CODE)} \u27A4 ${Vr(t,In(e.selector))} \u27A4 ${On(t,e.key,Le.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case oi.Dependency:return`${St(t.parentDescriptor)} > ${St(t.descriptor)}`;case oi.PeerDependency:return`${St(t.parentDescriptor)} >> ${St(t.descriptor)}`;case oi.PeerDependencyMeta:return`${St(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Le.SETTING]:Ls({pretty:(t,e)=>(t.get(e),Ku(t,On(t,e,Le.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Le.DURATION]:Ls({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),i=Math.ceil((e-r*60*1e3)/1e3);return i===0?`${r}m`:`${r}m ${i}s`}else{let r=Math.floor(e/1e3),i=e-r*1e3;return i===0?`${r}s`:`${r}s ${i}ms`}},json:t=>t}),[Le.SIZE]:Ls({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],i=r.length;for(;i>1&&e<1024**i;)i-=1;let n=1024**i,s=Math.floor(e*100/n)/100;return On(t,`${s} ${r[i-1]}`,Le.NUMBER)},json:t=>t}),[Le.PATH]:Ls({pretty:(t,e)=>On(t,M.fromPortablePath(e),Le.PATH),json:t=>M.fromPortablePath(t)})};function jl(t,e){return[e,t]}function Py(t,e,r){return t.get("enableColors")&&r&2&&(e=pp.default.bold(e)),e}function On(t,e,r){if(!t.get("enableColors"))return e;let i=tbe.get(r);if(i===null)return e;let n=typeof i=="undefined"?r:Tx.level>=3?i[0]:i[1],s=typeof n=="number"?Ox.ansi256(n):n.startsWith("#")?Ox.hex(n):Ox[n];if(typeof s!="function")throw new Error(`Invalid format type ${n}`);return s(e)}var rbe=!!process.env.KONSOLE_VERSION;function Ku(t,e,r){return t.get("enableHyperlinks")?rbe?`]8;;${r}\\${e}]8;;\\`:`]8;;${r}\x07${e}]8;;\x07`:e}function Ve(t,e,r){if(e===null)return On(t,"null",Le.NULL);if(Object.prototype.hasOwnProperty.call(ky,r))return ky[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return On(t,e,r)}function Kx(t,e,r,{separator:i=", "}={}){return[...e].map(n=>Ve(t,n,r)).join(i)}function Uu(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(ky,e))return Nv(e),ky[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function xx(t){return{Check:On(t,"\u2713","green"),Cross:On(t,"\u2718","red"),Question:On(t,"?","cyan")}}function Yl(t,{label:e,value:[r,i]}){return`${Ve(t,e,Le.CODE)}: ${Ve(t,r,i)}`}var Ts;(function(n){n.Error="error",n.Warning="warning",n.Info="info",n.Discard="discard"})(Ts||(Ts={}));function Cp(t,{configuration:e}){let r=e.get("logFilters"),i=new Map,n=new Map,s=[];for(let g of r){let f=g.get("level");if(typeof f=="undefined")continue;let h=g.get("code");typeof h!="undefined"&&i.set(h,f);let p=g.get("text");typeof p!="undefined"&&n.set(p,f);let d=g.get("pattern");typeof d!="undefined"&&s.push([o3.default.matcher(d,{contains:!0}),f])}s.reverse();let o=(g,f,h)=>{if(g===null||g===z.UNNAMED)return h;let p=n.size>0||s.length>0?(0,a3.default)(f):f;if(n.size>0){let d=n.get(p);if(typeof d!="undefined")return d!=null?d:h}if(s.length>0){for(let[d,m]of s)if(d(p))return m!=null?m:h}if(i.size>0){let d=i.get(KI(g));if(typeof d!="undefined")return d!=null?d:h}return h},a=t.reportInfo,l=t.reportWarning,c=t.reportError,u=function(g,f,h,p){switch(o(f,h,p)){case Ts.Info:a.call(g,f,h);break;case Ts.Warning:l.call(g,f!=null?f:z.UNNAMED,h);break;case Ts.Error:c.call(g,f!=null?f:z.UNNAMED,h);break}};t.reportInfo=function(...g){return u(this,...g,Ts.Info)},t.reportWarning=function(...g){return u(this,...g,Ts.Warning)},t.reportError=function(...g){return u(this,...g,Ts.Error)}}var Zt={};it(Zt,{Method:()=>Jl,RequestError:()=>z8.RequestError,del:()=>pxe,get:()=>fxe,getNetworkSettings:()=>Z8,post:()=>iP,put:()=>hxe,request:()=>xp});var q8=ie(zy()),J8=ie(require("https")),W8=ie(require("http")),tP=ie(Nn()),rP=ie(G8()),Vy=ie(require("url"));var j8=ie(require("stream")),Y8=ie(require("string_decoder"));var nt=class extends Error{constructor(e,r,i){super(r);this.reportExtra=i;this.reportCode=e}};function Axe(t){return typeof t.reportCode!="undefined"}var Xi=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,i,n=new Promise(l=>{i=l}),s=l=>{let c=i;n=new Promise(u=>{i=u}),r=l,c()},o=(l=0)=>{s(r+1)},a=async function*(){for(;r{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",e!==null?this.reportInfo(null,`${e} ${l}`):this.reportInfo(null,l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&(e!==null?this.reportInfo(null,`${e} ${s}`):this.reportInfo(null,s))}),r}};var z8=ie(zy()),V8=new Map,_8=new Map,lxe=new W8.Agent({keepAlive:!0}),cxe=new J8.Agent({keepAlive:!0});function X8(t){let e=new Vy.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),{proxy:r}}async function uxe(t){return na(_8,t,()=>T.readFilePromise(t).then(e=>(_8.set(t,e),e)))}function gxe({statusCode:t,statusMessage:e},r){let i=Ve(r,t,Le.NUMBER),n=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Ku(r,`${i}${e?` (${e})`:""}`,n)}async function _y(t,{configuration:e,customErrorMessage:r}){var i,n;try{return await t}catch(s){if(s.name!=="HTTPError")throw s;let o=(n=r==null?void 0:r(s))!=null?n:(i=s.response.body)==null?void 0:i.error;o==null&&(s.message.startsWith("Response code")?o="The remote server failed to provide the requested resource":o=s.message),s instanceof q8.TimeoutError&&s.event==="socket"&&(o+=`(can be increased via ${Ve(e,"httpTimeout",Le.SETTING)})`);let a=new nt(z.NETWORK_ERROR,o,l=>{s.response&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Response Code",value:jl(Le.NO_HINT,gxe(s.response,e))})}`),s.request&&(l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Method",value:jl(Le.NO_HINT,s.request.options.method)})}`),l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request URL",value:jl(Le.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Redirects",value:jl(Le.NO_HINT,Kx(e,s.request.redirects,Le.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&l.reportError(z.NETWORK_ERROR,` ${Yl(e,{label:"Request Retry Count",value:jl(Le.NO_HINT,`${Ve(e,s.request.retryCount,Le.NUMBER)} (can be increased via ${Ve(e,"httpRetry",Le.SETTING)})`)})}`)});throw a.originalError=s,a}}function Z8(t,e){let r=[...e.configuration.get("networkSettings")].sort(([o],[a])=>a.length-o.length),i={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(i),s=typeof t=="string"?new Vy.URL(t):t;for(let[o,a]of r)if(tP.default.isMatch(s.hostname,o))for(let l of n){let c=a.get(l);c!==null&&typeof i[l]=="undefined"&&(i[l]=c)}for(let o of n)typeof i[o]=="undefined"&&(i[o]=e.configuration.get(o));return i}var Jl;(function(n){n.GET="GET",n.PUT="PUT",n.POST="POST",n.DELETE="DELETE"})(Jl||(Jl={}));async function xp(t,e,{configuration:r,headers:i,jsonRequest:n,jsonResponse:s,method:o=Jl.GET}){let a=typeof t=="string"?new Vy.URL(t):t,l=Z8(a,{configuration:r});if(l.enableNetwork===!1)throw new Error(`Request to '${a.href}' has been blocked because of your configuration settings`);if(a.protocol==="http:"&&!tP.default.isMatch(a.hostname,r.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${a.hostname})`);let u={agent:{http:l.httpProxy?rP.default.httpOverHttp(X8(l.httpProxy)):lxe,https:l.httpsProxy?rP.default.httpsOverHttp(X8(l.httpsProxy)):cxe},headers:i,method:o};u.responseType=s?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!n&&typeof e=="string"?u.body=e:u.json=e);let g=r.get("httpTimeout"),f=r.get("httpRetry"),h=r.get("enableStrictSsl"),p=l.caFilePath,{default:d}=await Promise.resolve().then(()=>ie(zy())),m=p?await uxe(p):void 0,E=d.extend(P({timeout:{socket:g},retry:f,https:{rejectUnauthorized:h,certificateAuthority:m}},u));return r.getLimit("networkConcurrency")(()=>E(a))}async function fxe(t,n){var s=n,{configuration:e,jsonResponse:r}=s,i=qr(s,["configuration","jsonResponse"]);let o=na(V8,t,()=>_y(xp(t,null,P({configuration:e},i)),{configuration:e}).then(a=>(V8.set(t,a.body),a.body)));return Buffer.isBuffer(o)===!1&&(o=await o),r?JSON.parse(o.toString()):o}async function hxe(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.PUT})),i)).body}async function iP(t,e,n){var s=n,{customErrorMessage:r}=s,i=qr(s,["customErrorMessage"]);return(await _y(xp(t,e,_(P({},i),{method:Jl.POST})),i)).body}async function pxe(t,i){var n=i,{customErrorMessage:e}=n,r=qr(n,["customErrorMessage"]);return(await _y(xp(t,null,_(P({},r),{method:Jl.DELETE})),r)).body}var Kt={};it(Kt,{PackageManager:()=>tn,detectPackageManager:()=>a9,executePackageAccessibleBinary:()=>g9,executePackageScript:()=>Uw,executePackageShellcode:()=>rD,executeWorkspaceAccessibleBinary:()=>qFe,executeWorkspaceLifecycleScript:()=>u9,executeWorkspaceScript:()=>c9,getPackageAccessibleBinaries:()=>Hw,getWorkspaceAccessibleBinaries:()=>l9,hasPackageScript:()=>GFe,hasWorkspaceScript:()=>tD,makeScriptEnv:()=>Vp,maybeExecuteWorkspaceLifecycleScript:()=>YFe,prepareExternalProject:()=>HFe});var Fp={};it(Fp,{getLibzipPromise:()=>$i,getLibzipSync:()=>vz});var yA=["number","number"],nP;(function(D){D[D.ZIP_ER_OK=0]="ZIP_ER_OK",D[D.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",D[D.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",D[D.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",D[D.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",D[D.ZIP_ER_READ=5]="ZIP_ER_READ",D[D.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",D[D.ZIP_ER_CRC=7]="ZIP_ER_CRC",D[D.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",D[D.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",D[D.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",D[D.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",D[D.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",D[D.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",D[D.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",D[D.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",D[D.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",D[D.ZIP_ER_EOF=17]="ZIP_ER_EOF",D[D.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",D[D.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",D[D.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",D[D.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",D[D.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",D[D.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",D[D.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",D[D.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",D[D.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",D[D.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",D[D.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",D[D.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",D[D.ZIP_ER_TELL=30]="ZIP_ER_TELL",D[D.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"})(nP||(nP={}));var $8=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:nP,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,open:t.cwrap("zip_open","number",["string","number","number"]),openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...yA,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...yA,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...yA,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...yA,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...yA,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...yA,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...yA,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...yA,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}});var BP=null;function vz(){return BP===null&&(BP=$8(bz())),BP}async function $i(){return vz()}var jp={};it(jp,{ShellError:()=>as,execute:()=>Fw,globUtils:()=>bw});var Hp={};it(Hp,{parseResolution:()=>gw,parseShell:()=>Aw,parseSyml:()=>Ei,stringifyArgument:()=>SP,stringifyArgumentSegment:()=>xP,stringifyArithmeticExpression:()=>uw,stringifyCommand:()=>vP,stringifyCommandChain:()=>rg,stringifyCommandChainThen:()=>bP,stringifyCommandLine:()=>lw,stringifyCommandLineThen:()=>QP,stringifyEnvSegment:()=>cw,stringifyRedirectArgument:()=>Np,stringifyResolution:()=>fw,stringifyShell:()=>tg,stringifyShellLine:()=>tg,stringifySyml:()=>Qa,stringifyValueArgument:()=>ig});var kz=ie(xz());function Aw(t,e={isGlobPattern:()=>!1}){try{return(0,kz.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function tg(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:i},n)=>`${lw(r)}${i===";"?n!==t.length-1||e?";":"":" &"}`).join(" ")}function lw(t){return`${rg(t.chain)}${t.then?` ${QP(t.then)}`:""}`}function QP(t){return`${t.type} ${lw(t.line)}`}function rg(t){return`${vP(t)}${t.then?` ${bP(t.then)}`:""}`}function bP(t){return`${t.type} ${rg(t.chain)}`}function vP(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>cw(e)).join(" ")} `:""}${t.args.map(e=>SP(e)).join(" ")}`;case"subshell":return`(${tg(t.subshell)})${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"group":return`{ ${tg(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>Np(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>cw(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function cw(t){return`${t.name}=${t.args[0]?ig(t.args[0]):""}`}function SP(t){switch(t.type){case"redirection":return Np(t);case"argument":return ig(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function Np(t){return`${t.subtype} ${t.args.map(e=>ig(e)).join(" ")}`}function ig(t){return t.segments.map(e=>xP(e)).join("")}function xP(t){let e=(i,n)=>n?`"${i}"`:i,r=i=>i===""?'""':i.match(/[(){}<>$|&; \t"']/)?`$'${i.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:i;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${tg(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue=="undefined"?`\${${t.name}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(i=>ig(i)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${uw(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function uw(t){let e=n=>{switch(n){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${n}"`)}},r=(n,s)=>s?`( ${n} )`:n,i=n=>r(uw(n),!["number","variable"].includes(n.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${i(t.left)} ${e(t.type)} ${i(t.right)}`}}var Rz=ie(Dz());function gw(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,Rz.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fw(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var Qw=ie(w5()),b5=ie(Q5()),$De=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,v5=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],HP=class{constructor(e){this.data=e}};function S5(t){return t.match($De)?t:JSON.stringify(t)}function x5(t){return typeof t=="undefined"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>x5(t[e])):!1}function GP(t,e,r){if(t===null)return`null -`;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} -`;if(typeof t=="string")return`${S5(t)} -`;if(Array.isArray(t)){if(t.length===0)return`[] -`;let i=" ".repeat(e);return` -${t.map(s=>`${i}- ${GP(s,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let i,n;t instanceof HP?(i=t.data,n=!1):(i=t,n=!0);let s=" ".repeat(e),o=Object.keys(i);n&&o.sort((l,c)=>{let u=v5.indexOf(l),g=v5.indexOf(c);return u===-1&&g===-1?lc?1:0:u!==-1&&g===-1?-1:u===-1&&g!==-1?1:u-g});let a=o.filter(l=>!x5(i[l])).map((l,c)=>{let u=i[l],g=S5(l),f=GP(u,e+1,!0),h=c>0||r?s:"";return f.startsWith(` -`)?`${h}${g}:${f}`:`${h}${g}: ${f}`}).join(e===0?` -`:"")||` -`;return r?` -${a}`:`${a}`}throw new Error(`Unsupported value type (${t})`)}function Qa(t){try{let e=GP(t,0,!1);return e!==` -`?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}Qa.PreserveOrdering=HP;function eRe(t){return t.endsWith(` -`)||(t+=` -`),(0,b5.parse)(t)}var tRe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function rRe(t){if(tRe.test(t))return eRe(t);let e=(0,Qw.safeLoad)(t,{schema:Qw.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Ei(t){return rRe(t)}var U5=ie(jb()),H5=ie(require("os")),Kn=ie(require("stream")),G5=ie(require("util"));var as=class extends Error{constructor(e){super(e);this.name="ShellError"}};var bw={};it(bw,{fastGlobOptions:()=>D5,isBraceExpansion:()=>R5,isGlobPattern:()=>iRe,match:()=>nRe,micromatchOptions:()=>Sw});var k5=ie(gy()),P5=ie(require("fs")),vw=ie(Nn()),Sw={strictBrackets:!0},D5={onlyDirectories:!1,onlyFiles:!1};function iRe(t){if(!vw.default.scan(t,Sw).isGlob)return!1;try{vw.default.parse(t,Sw)}catch{return!1}return!0}function nRe(t,{cwd:e,baseFs:r}){return(0,k5.default)(t,_(P({},D5),{cwd:M.fromPortablePath(e),fs:SI(P5.default,new ah(r))}))}function R5(t){return vw.default.scan(t,Sw).isBrace}var F5=ie(bb()),Bo=ie(require("stream")),N5=ie(require("string_decoder")),wn;(function(i){i[i.STDIN=0]="STDIN",i[i.STDOUT=1]="STDOUT",i[i.STDERR=2]="STDERR"})(wn||(wn={}));var sc=new Set;function jP(){}function YP(){for(let t of sc)t.kill()}function L5(t,e,r,i){return n=>{let s=n[0]instanceof Bo.Transform?"pipe":n[0],o=n[1]instanceof Bo.Transform?"pipe":n[1],a=n[2]instanceof Bo.Transform?"pipe":n[2],l=(0,F5.default)(t,e,_(P({},i),{stdio:[s,o,a]}));return sc.add(l),sc.size===1&&(process.on("SIGINT",jP),process.on("SIGTERM",YP)),n[0]instanceof Bo.Transform&&n[0].pipe(l.stdin),n[1]instanceof Bo.Transform&&l.stdout.pipe(n[1],{end:!1}),n[2]instanceof Bo.Transform&&l.stderr.pipe(n[2],{end:!1}),{stdin:l.stdin,promise:new Promise(c=>{l.on("error",u=>{switch(sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),u.code){case"ENOENT":n[2].write(`command not found: ${t} -`),c(127);break;case"EACCES":n[2].write(`permission denied: ${t} -`),c(128);break;default:n[2].write(`uncaught error: ${u.message} -`),c(1);break}}),l.on("exit",u=>{sc.delete(l),sc.size===0&&(process.off("SIGINT",jP),process.off("SIGTERM",YP)),c(u!==null?u:129)})})}}}function T5(t){return e=>{let r=e[0]==="pipe"?new Bo.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}var Os=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},M5=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},Gp=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:i,stderr:n}){let s=new Gp(null,e);return s.stdin=r,s.stdout=i,s.stderr=n,s}pipeTo(e,r=1){let i=new Gp(this,e),n=new M5;return i.pipe=n,i.stdout=this.stdout,i.stderr=this.stderr,(r&1)==1?this.stdout=n:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)==2?this.stderr=n:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),i}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let i;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");i=this.stderr,e[2]=i.get();let n=this.implementation(e);return this.pipe&&this.pipe.attach(n.stdin),await n.promise.then(s=>(r.close(),i.close(),s))}async run(){let e=[];for(let i=this;i;i=i.ancestor)e.push(i.exec());return(await Promise.all(e))[0]}};function xw(t,e){return Gp.start(t,e)}function O5(t,e=null){let r=new Bo.PassThrough,i=new N5.StringDecoder,n="";return r.on("data",s=>{let o=i.write(s),a;do if(a=o.indexOf(` -`),a!==-1){let l=n+o.substr(0,a);o=o.substr(a+1),n="",t(e!==null?`${e} ${l}`:l)}while(a!==-1);n+=o}),r.on("end",()=>{let s=i.end();s!==""&&t(e!==null?`${e} ${s}`:s)}),r}function K5(t,{prefix:e}){return{stdout:O5(r=>t.stdout.write(`${r} -`),t.stdout.isTTY?e:null),stderr:O5(r=>t.stderr.write(`${r} -`),t.stderr.isTTY?e:null)}}var sRe=(0,G5.promisify)(setTimeout);var Fi;(function(r){r[r.Readable=1]="Readable",r[r.Writable=2]="Writable"})(Fi||(Fi={}));function j5(t,e,r){let i=new Kn.PassThrough({autoDestroy:!0});switch(t){case wn.STDIN:(e&1)==1&&r.stdin.pipe(i,{end:!1}),(e&2)==2&&r.stdin instanceof Kn.Writable&&i.pipe(r.stdin,{end:!1});break;case wn.STDOUT:(e&1)==1&&r.stdout.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stdout,{end:!1});break;case wn.STDERR:(e&1)==1&&r.stderr.pipe(i,{end:!1}),(e&2)==2&&i.pipe(r.stderr,{end:!1});break;default:throw new as(`Bad file descriptor: "${t}"`)}return i}function kw(t,e={}){let r=P(P({},t),e);return r.environment=P(P({},t.environment),e.environment),r.variables=P(P({},t.variables),e.variables),r}var oRe=new Map([["cd",async([t=(0,H5.homedir)(),...e],r,i)=>{let n=v.resolve(i.cwd,M.toPortablePath(t));if(!(await r.baseFs.statPromise(n).catch(o=>{throw o.code==="ENOENT"?new as(`cd: no such file or directory: ${t}`):o})).isDirectory())throw new as(`cd: not a directory: ${t}`);return i.cwd=n,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${M.fromPortablePath(r.cwd)} -`),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,i)=>i.exitCode=parseInt(t!=null?t:i.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} -`),0)],["sleep",async([t],e,r)=>{if(typeof t=="undefined")throw new as("sleep: missing operand");let i=Number(t);if(Number.isNaN(i))throw new as(`sleep: invalid time interval '${t}'`);return await sRe(1e3*i,0)}],["__ysh_run_procedure",async(t,e,r)=>{let i=r.procedures[t[0]];return await xw(i,{stdin:new Os(r.stdin),stdout:new Os(r.stdout),stderr:new Os(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let i=r.stdin,n=r.stdout,s=r.stderr,o=[],a=[],l=[],c=0;for(;t[c]!=="--";){let g=t[c++],{type:f,fd:h}=JSON.parse(g),p=B=>{switch(h){case null:case 0:o.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},d=B=>{switch(h){case null:case 1:a.push(B);break;case 2:l.push(B);break;default:throw new Error(`Unsupported file descriptor: "${h}"`)}},m=Number(t[c++]),E=c+m;for(let B=c;Be.baseFs.createReadStream(v.resolve(r.cwd,M.toPortablePath(t[B]))));break;case"<<<":p(()=>{let b=new Kn.PassThrough;return process.nextTick(()=>{b.write(`${t[B]} -`),b.end()}),b});break;case"<&":p(()=>j5(Number(t[B]),1,r));break;case">":case">>":{let b=v.resolve(r.cwd,M.toPortablePath(t[B]));d(b==="/dev/null"?new Kn.Writable({autoDestroy:!0,emitClose:!0,write(R,H,L){setImmediate(L)}}):e.baseFs.createWriteStream(b,f===">>"?{flags:"a"}:void 0))}break;case">&":d(j5(Number(t[B]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${f}"`)}}if(o.length>0){let g=new Kn.PassThrough;i=g;let f=h=>{if(h===o.length)g.end();else{let p=o[h]();p.pipe(g,{end:!1}),p.on("end",()=>{f(h+1)})}};f(0)}if(a.length>0){let g=new Kn.PassThrough;n=g;for(let f of a)g.pipe(f)}if(l.length>0){let g=new Kn.PassThrough;s=g;for(let f of l)g.pipe(f)}let u=await xw(Yp(t.slice(c+1),e,r),{stdin:new Os(i),stdout:new Os(n),stderr:new Os(s)}).run();return await Promise.all(a.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),await Promise.all(l.map(g=>new Promise((f,h)=>{g.on("error",p=>{h(p)}),g.on("close",()=>{f()}),g.end()}))),u}]]);async function aRe(t,e,r){let i=[],n=new Kn.PassThrough;return n.on("data",s=>i.push(s)),await Pw(t,e,kw(r,{stdout:n})),Buffer.concat(i).toString().replace(/[\r\n]+$/,"")}async function Y5(t,e,r){let i=t.map(async s=>{let o=await oc(s.args,e,r);return{name:s.name,value:o.join(" ")}});return(await Promise.all(i)).reduce((s,o)=>(s[o.name]=o.value,s),{})}function Dw(t){return t.match(/[^ \r\n\t]+/g)||[]}async function q5(t,e,r,i,n=i){switch(t.name){case"$":i(String(process.pid));break;case"#":i(String(e.args.length));break;case"@":if(t.quoted)for(let s of e.args)n(s);else for(let s of e.args){let o=Dw(s);for(let a=0;a=0&&st+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)};async function qp(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let i=[];await q5(_(P({},t),{quoted:!0}),e,r,s=>i.push(s));let n=Number(i.join(" "));return Number.isNaN(n)?qp({type:"variable",name:i.join(" ")},e,r):qp({type:"number",value:n},e,r)}else return ARe[t.type](await qp(t.left,e,r),await qp(t.right,e,r))}async function oc(t,e,r){let i=new Map,n=[],s=[],o=u=>{s.push(u)},a=()=>{s.length>0&&n.push(s.join("")),s=[]},l=u=>{o(u),a()},c=(u,g,f)=>{let h=JSON.stringify({type:u,fd:g}),p=i.get(h);typeof p=="undefined"&&i.set(h,p=[]),p.push(f)};for(let u of t){let g=!1;switch(u.type){case"redirection":{let f=await oc(u.args,e,r);for(let h of f)c(u.subtype,u.fd,h)}break;case"argument":for(let f of u.segments)switch(f.type){case"text":o(f.text);break;case"glob":o(f.pattern),g=!0;break;case"shell":{let h=await aRe(f.shell,e,r);if(f.quoted)o(h);else{let p=Dw(h);for(let d=0;d0){let u=[];for(let[g,f]of i.entries())u.splice(u.length,0,g,String(f.length),...f);n.splice(0,0,"__ysh_set_redirects",...u,"--")}return n}function Yp(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let i=M.fromPortablePath(r.cwd),n=r.environment;typeof n.PWD!="undefined"&&(n=_(P({},n),{PWD:i}));let[s,...o]=t;if(s==="command")return L5(o[0],o.slice(1),e,{cwd:i,env:n});let a=e.builtins.get(s);if(typeof a=="undefined")throw new Error(`Assertion failed: A builtin should exist for "${s}"`);return T5(async({stdin:l,stdout:c,stderr:u})=>{let{stdin:g,stdout:f,stderr:h}=r;r.stdin=l,r.stdout=c,r.stderr=u;try{return await a(o,e,r)}finally{r.stdin=g,r.stdout=f,r.stderr=h}})}function lRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,kw(r,{stdin:n}));return{stdin:n,promise:s}}}function cRe(t,e,r){return i=>{let n=new Kn.PassThrough,s=Pw(t,e,r);return{stdin:n,promise:s}}}function J5(t,e,r,i){if(e.length===0)return t;{let n;do n=String(Math.random());while(Object.prototype.hasOwnProperty.call(i.procedures,n));return i.procedures=P({},i.procedures),i.procedures[n]=t,Yp([...e,"__ysh_run_procedure",n],r,i)}}async function W5(t,e,r){let i=t,n=null,s=null;for(;i;){let o=i.then?P({},r):r,a;switch(i.type){case"command":{let l=await oc(i.args,e,r),c=await Y5(i.envs,e,r);a=i.envs.length?Yp(l,e,kw(o,{environment:c})):Yp(l,e,o)}break;case"subshell":{let l=await oc(i.args,e,r),c=lRe(i.subshell,e,o);a=J5(c,l,e,o)}break;case"group":{let l=await oc(i.args,e,r),c=cRe(i.group,e,o);a=J5(c,l,e,o)}break;case"envs":{let l=await Y5(i.envs,e,r);o.environment=P(P({},o.environment),l),a=Yp(["true"],e,o)}break}if(typeof a=="undefined")throw new Error("Assertion failed: An action should have been generated");if(n===null)s=xw(a,{stdin:new Os(o.stdin),stdout:new Os(o.stdout),stderr:new Os(o.stderr)});else{if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":s=s.pipeTo(a,wn.STDOUT);break;case"|&":s=s.pipeTo(a,wn.STDOUT|wn.STDERR);break}}i.then?(n=i.then.type,i=i.then.chain):i=null}if(s===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await s.run()}async function uRe(t,e,r,{background:i=!1}={}){function n(s){let o=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],a=o[s%o.length];return U5.default.hex(a)}if(i){let s=r.nextBackgroundJobIndex++,o=n(s),a=`[${s}]`,l=o(a),{stdout:c,stderr:u}=K5(r,{prefix:l});return r.backgroundJobs.push(W5(t,e,kw(r,{stdout:c,stderr:u})).catch(g=>u.write(`${g.message} -`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${l}, '${o(rg(t))}' has ended -`)})),0}return await W5(t,e,r)}async function gRe(t,e,r,{background:i=!1}={}){let n,s=a=>{n=a,r.variables["?"]=String(a)},o=async a=>{try{return await uRe(a.chain,e,r,{background:i&&typeof a.then=="undefined"})}catch(l){if(!(l instanceof as))throw l;return r.stderr.write(`${l.message} -`),1}};for(s(await o(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":n===0&&s(await o(t.then.line));break;case"||":n!==0&&s(await o(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return n}async function Pw(t,e,r){let i=r.backgroundJobs;r.backgroundJobs=[];let n=0;for(let{command:s,type:o}of t){if(n=await gRe(s,e,r,{background:o==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(n)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=i,n}function z5(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>Rw(e));case"arithmetic":return qP(t.arithmetic);case"shell":return JP(t.shell);default:return!1}}function Rw(t){switch(t.type){case"redirection":return t.args.some(e=>Rw(e));case"argument":return t.segments.some(e=>z5(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function qP(t){switch(t.type){case"variable":return z5(t);case"number":return!1;default:return qP(t.left)||qP(t.right)}}function JP(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let i;switch(r.type){case"subshell":i=JP(r.subshell);break;case"command":i=r.envs.some(n=>n.args.some(s=>Rw(s)))||r.args.some(n=>Rw(n));break}if(i)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Fw(t,e=[],{baseFs:r=new Wt,builtins:i={},cwd:n=M.toPortablePath(process.cwd()),env:s=process.env,stdin:o=process.stdin,stdout:a=process.stdout,stderr:l=process.stderr,variables:c={},glob:u=bw}={}){let g={};for(let[p,d]of Object.entries(s))typeof d!="undefined"&&(g[p]=d);let f=new Map(oRe);for(let[p,d]of Object.entries(i))f.set(p,d);o===null&&(o=new Kn.PassThrough,o.end());let h=Aw(t,u);if(!JP(h)&&h.length>0&&e.length>0){let{command:p}=h[h.length-1];for(;p.then;)p=p.then.line;let d=p.chain;for(;d.then;)d=d.then.chain;d.type==="command"&&(d.args=d.args.concat(e.map(m=>({type:"argument",segments:[{type:"text",text:m}]}))))}return await Pw(h,{args:e,baseFs:r,builtins:f,initialStdin:o,initialStdout:a,initialStderr:l,glob:u},{cwd:n,environment:g,exitCode:null,procedures:{},stdin:o,stdout:a,stderr:l,variables:Object.assign({},c,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var s9=ie(ZP()),o9=ie(Wp()),cc=ie(require("stream"));var J6=ie(Or());var zp=class{supportsDescriptor(e,r){return!!(e.range.startsWith(zp.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(zp.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[i.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.getWorkspaceByCwd(e.reference.slice(zp.protocol.length));return _(P({},e),{version:i.manifest.version||"0.0.0",languageName:"unknown",linkType:gt.SOFT,conditions:null,dependencies:new Map([...i.manifest.dependencies,...i.manifest.devDependencies]),peerDependencies:new Map([...i.manifest.peerDependencies]),dependenciesMeta:i.manifest.dependenciesMeta,peerDependenciesMeta:i.manifest.peerDependenciesMeta,bin:i.manifest.bin})}},Yr=zp;Yr.protocol="workspace:";var qt={};it(qt,{SemVer:()=>j6.SemVer,satisfiesWithPrereleases:()=>lc,validRange:()=>Us});var Lw=ie(Or()),j6=ie(Or()),Y6=new Map;function lc(t,e,r=!1){if(!t)return!1;let i=`${e}${r}`,n=Y6.get(i);if(typeof n=="undefined")try{n=new Lw.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Y6.set(i,n||null)}else if(n===null)return!1;let s;try{s=new Lw.default.SemVer(t,n)}catch(o){return!1}return n.test(s)?!0:(s.prerelease&&(s.prerelease=[]),n.set.some(o=>{for(let a of o)a.semver.prerelease&&(a.semver.prerelease=[]);return o.every(a=>a.test(s))}))}var q6=new Map;function Us(t){if(t.indexOf(":")!==-1)return null;let e=q6.get(t);if(typeof e!="undefined")return e;try{e=new Lw.default.Range(t)}catch{e=null}return q6.set(t,e),e}var vA=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new Wt}={}){let i=v.join(e,"package.json");return await r.existsPromise(i)?await vA.fromFile(i,{baseFs:r}):null}static async find(e,{baseFs:r}={}){let i=await vA.tryFind(e,{baseFs:r});if(i===null)throw new Error("Manifest not found");return i}static async fromFile(e,{baseFs:r=new Wt}={}){let i=new vA;return await i.loadFile(e,{baseFs:r}),i}static fromText(e){let r=new vA;return r.loadFromText(e),r}static isManifestFieldCompatible(e,r){if(e===null)return!0;let i=!0,n=!1;for(let s of e)if(s[0]==="!"){if(n=!0,r===s.slice(1))return!1}else if(i=!1,s===r)return!0;return n&&i}loadFromText(e){let r;try{r=JSON.parse(z6(e)||"{}")}catch(i){throw i.message+=` (when parsing ${e})`,i}this.load(r),this.indent=W6(e)}async loadFile(e,{baseFs:r=new Wt}){let i=await r.readFilePromise(e,"utf8"),n;try{n=JSON.parse(z6(i)||"{}")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(n),this.indent=W6(i)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let i=[];if(this.name=null,typeof e.name=="string")try{this.name=In(e.name)}catch(s){i.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let s=[];this.os=s;for(let o of e.os)typeof o!="string"?i.push(new Error("Parsing failed for the 'os' field")):s.push(o)}else this.os=null;if(Array.isArray(e.cpu)){let s=[];this.cpu=s;for(let o of e.cpu)typeof o!="string"?i.push(new Error("Parsing failed for the 'cpu' field")):s.push(o)}else this.cpu=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=en(e.main):this.main=null,typeof e.module=="string"?this.module=en(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=en(e.browser);else{this.browser=new Map;for(let[s,o]of Object.entries(e.browser))this.browser.set(en(s),typeof o=="string"?en(o):o)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,en(e.bin)):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[s,o]of Object.entries(e.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.bin.set(s,en(o))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[s,o]of Object.entries(e.scripts)){if(typeof o!="string"){i.push(new Error(`Invalid script definition for '${s}'`));continue}this.scripts.set(s,o)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[s,o]of Object.entries(e.dependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[s,o]of Object.entries(e.devDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.devDependencies.set(l.identHash,l)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[s,o]of Object.entries(e.peerDependencies)){let a;try{a=In(s)}catch(c){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}(typeof o!="string"||!o.startsWith(Yr.protocol)&&!Us(o))&&(i.push(new Error(`Invalid dependency range for '${s}'`)),o="*");let l=Yt(a,o);this.peerDependencies.set(l.identHash,l)}typeof e.workspaces=="object"&&e.workspaces.nohoist&&i.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let n=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let s of n){if(typeof s!="string"){i.push(new Error(`Invalid workspace definition for '${s}'`));continue}this.workspaceDefinitions.push({pattern:s})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[s,o]of Object.entries(e.dependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}`));continue}let a=pA(s),l=this.ensureDependencyMeta(a),c=Tw(o.built,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid built meta field for '${s}'`));continue}let u=Tw(o.optional,{yamlCompatibilityMode:r});if(u===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}let g=Tw(o.unplugged,{yamlCompatibilityMode:r});if(g===null){i.push(new Error(`Invalid unplugged meta field for '${s}'`));continue}Object.assign(l,{built:c,optional:u,unplugged:g})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[s,o]of Object.entries(e.peerDependenciesMeta)){if(typeof o!="object"||o===null){i.push(new Error(`Invalid meta field for '${s}'`));continue}let a=pA(s),l=this.ensurePeerDependencyMeta(a),c=Tw(o.optional,{yamlCompatibilityMode:r});if(c===null){i.push(new Error(`Invalid optional meta field for '${s}'`));continue}Object.assign(l,{optional:c})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[s,o]of Object.entries(e.resolutions)){if(typeof o!="string"){i.push(new Error(`Invalid resolution entry for '${s}'`));continue}try{this.resolutions.push({pattern:gw(s),reference:o})}catch(a){i.push(a);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let s of e.files){if(typeof s!="string"){i.push(new Error(`Invalid files entry for '${s}'`));continue}this.files.add(s)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=en(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=en(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=en(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[s,o]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(en(s),typeof o=="string"?en(o):o)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,en(e.publishConfig.bin)]]):i.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[s,o]of Object.entries(e.publishConfig.bin)){if(typeof o!="string"){i.push(new Error(`Invalid bin definition for '${s}'`));continue}this.publishConfig.bin.set(s,en(o))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let s of e.publishConfig.executableFiles){if(typeof s!="string"){i.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(en(s))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let s of Object.keys(e.installConfig))s==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:i.push(new Error("Invalid hoisting limits definition")):s=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:i.push(new Error("Invalid selfReferences definition, must be a boolean value")):i.push(new Error(`Unrecognized installConfig key: ${s}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[s,o]of Object.entries(e.optionalDependencies)){if(typeof o!="string"){i.push(new Error(`Invalid dependency range for '${s}'`));continue}let a;try{a=In(s)}catch(g){i.push(new Error(`Parsing failed for the dependency name '${s}'`));continue}let l=Yt(a,o);this.dependencies.set(l.identHash,l);let c=Yt(a,"unknown"),u=this.ensureDependencyMeta(c);Object.assign(u,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=i}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(V6("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(V6("cpu",this.cpu)),e.length>0?e.join(" & "):null}isCompatibleWithOS(e){return vA.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return vA.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if(e.range!=="unknown"&&!J6.default.valid(e.range))throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=e.range!=="unknown"?e.range:null,n=this.dependenciesMeta.get(r);n||this.dependenciesMeta.set(r,n=new Map);let s=n.get(i);return s||n.set(i,s={}),s}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${En(e)}'`);let r=St(e),i=this.peerDependenciesMeta.get(r);return i||this.peerDependenciesMeta.set(r,i={}),i}setRawField(e,r,{after:i=[]}={}){let n=new Set(i.filter(s=>Object.prototype.hasOwnProperty.call(this.raw,s)));if(n.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let s=this.raw,o=this.raw={},a=!1;for(let l of Object.keys(s))o[l]=s[l],a||(n.delete(l),n.size===0&&(o[e]=r,a=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){var s;if(Object.assign(e,this.raw),this.name!==null?e.name=St(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let o=this.browser;typeof o=="string"?e.browser=o:o instanceof Map&&(e.browser=Object.assign({},...Array.from(o.keys()).sort().map(a=>({[a]:o.get(a)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(o=>({[o]:this.bin.get(o)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces=_(P({},this.raw.workspaces),{packages:this.workspaceDefinitions.map(({pattern:o})=>o)}):e.workspaces=this.workspaceDefinitions.map(({pattern:o})=>o):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let i=[],n=[];for(let o of this.dependencies.values()){let a=this.dependenciesMeta.get(St(o)),l=!1;if(r&&a){let c=a.get(null);c&&c.optional&&(l=!0)}l?n.push(o):i.push(o)}i.length>0?e.dependencies=Object.assign({},...Ou(i).map(o=>({[St(o)]:o.range}))):delete e.dependencies,n.length>0?e.optionalDependencies=Object.assign({},...Ou(n).map(o=>({[St(o)]:o.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...Ou(this.devDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...Ou(this.peerDependencies.values()).map(o=>({[St(o)]:o.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[o,a]of gn(this.dependenciesMeta.entries(),([l,c])=>l))for(let[l,c]of gn(a.entries(),([u,g])=>u!==null?`0${u}`:"1")){let u=l!==null?En(Yt(In(o),l)):o,g=P({},c);r&&l===null&&delete g.optional,Object.keys(g).length!==0&&(e.dependenciesMeta[u]=g)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...gn(this.peerDependenciesMeta.entries(),([o,a])=>o).map(([o,a])=>({[o]:a}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:o,reference:a})=>({[fw(o)]:a}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){(s=e.scripts)!=null||(e.scripts={});for(let o of Object.keys(e.scripts))this.scripts.has(o)||delete e.scripts[o];for(let[o,a]of this.scripts.entries())e.scripts[o]=a}else delete e.scripts;return e}},Ze=vA;Ze.fileName="package.json",Ze.allDependencies=["dependencies","devDependencies","peerDependencies"],Ze.hardDependencies=["dependencies","devDependencies"];function W6(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function z6(t){return t.charCodeAt(0)===65279?t.slice(1):t}function en(t){return t.replace(/\\/g,"/")}function Tw(t,{yamlCompatibilityMode:e}){return e?Kv(t):typeof t=="undefined"||typeof t=="boolean"?t:null}function _6(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let i=r%2==0?"":"!",n=e.slice(r);return`${i}${t}=${n}`}function V6(t,e){return e.length===1?_6(t,e[0]):`(${e.map(r=>_6(t,r)).join(" | ")})`}var e9=ie($6()),Ow=ie(ml());var t9=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r9=80,NFe=new Set([z.FETCH_NOT_CACHED,z.UNUSED_CACHE_ENTRY]),LFe=5,SA=Ow.default.GITHUB_ACTIONS?{start:t=>`::group::${t} -`,end:t=>`::endgroup:: -`}:Ow.default.TRAVIS?{start:t=>`travis_fold:start:${t} -`,end:t=>`travis_fold:end:${t} -`}:Ow.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r${t} -`,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r`}:null,i9=new Date,TFe=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,MFe=t=>t,Kw=MFe({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),OFe=TFe&&Object.keys(Kw).find(t=>{let e=Kw[t];return!(e.date&&(e.date[0]!==i9.getDate()||e.date[1]!==i9.getMonth()+1))})||"default";function n9(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let n=KI(t===null?0:t);return!r&&t===null?Ve(e,n,"grey"):n}function eD(t,{configuration:e,json:r}){let i=n9(t,{configuration:e,json:r});if(!i||t===null||t===z.UNNAMED)return i;let n=z[t],s=`https://yarnpkg.com/advanced/error-codes#${i}---${n}`.toLowerCase();return Ku(e,i,s)}var Fe=class extends Xi{constructor({configuration:e,stdout:r,json:i=!1,includeFooter:n=!0,includeLogs:s=!i,includeInfos:o=s,includeWarnings:a=s,forgettableBufferSize:l=LFe,forgettableNames:c=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.forgettableLines=[];Cp(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=l,this.forgettableNames=new Set([...c,...NFe]),this.includeFooter=n,this.includeInfos=o,this.includeWarnings=a,this.json=i,this.stdout=r;let u=this.configuration.get("progressBarStyle")||OFe;if(!Object.prototype.hasOwnProperty.call(Kw,u))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Kw[u];let g="\u27A4 YN0000: \u250C ".length,f=Math.max(0,Math.min(process.stdout.columns-g,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*f/80)}static async start(e,r){let i=new this(e),n=process.emitWarning;process.emitWarning=(s,o)=>{if(typeof s!="string"){let l=s;s=l.message,o=o!=null?o:l.name}let a=typeof o!="undefined"?`${o}: ${s}`:s;i.reportWarning(z.UNNAMED,a)};try{await r(i)}catch(s){i.reportExceptionOnce(s)}finally{await i.finalize(),process.emitWarning=n}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,r){this.lastCacheMiss=e,this.cacheMissCount+=1,typeof r!="undefined"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(z.FETCH_NOT_CACHED,r)}startTimerSync(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startTimerPromise(e,r,i){let n=typeof r=="function"?{}:r,s=typeof r=="function"?r:i,o={committed:!1,action:()=>{this.reportInfo(null,`\u250C ${e}`),this.indent+=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.start(e))}};n.skipIfEmpty?this.uncommitted.add(o):(o.action(),o.committed=!0);let a=Date.now();try{return await s()}catch(l){throw this.reportExceptionOnce(l),l}finally{let l=Date.now();this.uncommitted.delete(o),o.committed&&(this.indent-=1,SA!==null&&!this.json&&this.includeInfos&&this.stdout.write(SA.end(e)),this.configuration.get("enableTimers")&&l-a>200?this.reportInfo(null,`\u2514 Completed in ${Ve(this.configuration,l-a,Le.DURATION)}`):this.reportInfo(null,"\u2514 Completed"))}}async startCacheReport(e){let r=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(i){throw this.reportExceptionOnce(i),i}finally{r!==null&&this.reportCacheChanges(r)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,r){if(!this.includeInfos)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"",s=`${Ve(this.configuration,"\u27A4","blueBright")} ${n}${this.formatIndent()}${r}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(s),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(s,{truncate:!0});else this.writeLineWithForgettableReset(s)}reportWarning(e,r){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","yellowBright")} ${n}${this.formatIndent()}${r}`)}reportError(e,r){this.errorCount+=1,this.commit();let i=this.formatNameWithHyperlink(e),n=i?`${i}: `:"";this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:r}):this.writeLineWithForgettableReset(`${Ve(this.configuration,"\u27A4","redBright")} ${n}${this.formatIndent()}${r}`,{truncate:!1})}reportProgress(e){let r=!1,i=Promise.resolve().then(async()=>{let s={progress:0,title:void 0};this.progress.set(e,{definition:s,lastScaledSize:-1}),this.refreshProgress(-1);for await(let{progress:o,title:a}of e)r||s.progress===o&&s.title===a||(s.progress=o,s.title=a,this.refreshProgress());n()}),n=()=>{r||(r=!0,this.progress.delete(e),this.refreshProgress(1))};return _(P({},i),{stop:n})}reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(e)}`)}async finalize(){if(!this.includeFooter)return;let e="";this.errorCount>0?e="Failed with errors":this.warningCount>0?e="Done with warnings":e="Done";let r=Ve(this.configuration,Date.now()-this.startTime,Le.DURATION),i=this.configuration.get("enableTimers")?`${e} in ${r}`:e;this.errorCount>0?this.reportError(z.UNNAMED,i):this.warningCount>0?this.reportWarning(z.UNNAMED,i):this.reportInfo(z.UNNAMED,i)}writeLine(e,{truncate:r}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(e,{truncate:r})} -`),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:r}={}){this.forgettableLines=[],this.writeLine(e,{truncate:r})}writeLines(e,{truncate:r}={}){this.clearProgress({delta:e.length});for(let i of e)this.stdout.write(`${this.truncate(i,{truncate:r})} -`);this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:r}){let i=this.cacheHitCount-e,n=this.cacheMissCount-r;if(i===0&&n===0)return;let s="";this.cacheHitCount>1?s+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?s+=" - one package was already cached":s+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?s+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(s+=`, one had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?s+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(s+=` - one package had to be fetched (${lt(this.configuration,this.lastCacheMiss)})`),this.reportInfo(z.FETCH_NOT_CACHED,s)}commit(){let e=this.uncommitted;this.uncommitted=new Set;for(let r of e)r.committed=!0,r.action()}clearProgress({delta:e=0,clear:r=!1}){!this.configuration.get("enableProgressBars")||this.json||this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||r)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let e=Date.now();e-this.progressTime>r9&&(this.progressFrame=(this.progressFrame+1)%t9.length,this.progressTime=e);let r=t9[this.progressFrame];for(let i of this.progress.values()){let n=this.progressStyle.chars[0].repeat(i.lastScaledSize),s=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-i.lastScaledSize),o=this.formatName(null),a=o?`${o}: `:"";this.stdout.write(`${Ve(this.configuration,"\u27A4","blueBright")} ${a}${r} ${n}${s} -`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},r9)}refreshProgress(e=0){let r=!1;if(this.progress.size===0)r=!0;else for(let i of this.progress.values()){let n=Math.trunc(this.progressMaxScaledSize*i.definition.progress),s=i.lastScaledSize;if(i.lastScaledSize=n,n!==s){r=!0;break}}r&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:r}={}){return this.configuration.get("enableProgressBars")||(r=!1),typeof r=="undefined"&&(r=this.configuration.get("preferTruncatedLines")),r&&(e=(0,e9.default)(e,0,process.stdout.columns-1)),e}formatName(e){return n9(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"\u2502 ".repeat(this.indent)}};var Zr="3.1.0";var tn;(function(n){n.Yarn1="Yarn Classic",n.Yarn2="Yarn",n.Npm="npm",n.Pnpm="pnpm"})(tn||(tn={}));async function ba(t,e,r,i=[]){if(process.platform==="win32"){let n=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${i.map(s=>`"${s.replace('"','""')}"`).join(" ")} %*`;await T.writeFilePromise(v.format({dir:t,name:e,ext:".cmd"}),n)}await T.writeFilePromise(v.join(t,e),`#!/bin/sh -exec "${r}" ${i.map(n=>`'${n.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" -`,{mode:493})}async function a9(t){let e=await Ze.tryFind(t);if(e==null?void 0:e.packageManager){let i=Qy(e.packageManager);if(i==null?void 0:i.name){let n=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[s]=i.reference.split(".");switch(i.name){case"yarn":return{packageManager:Number(s)===1?tn.Yarn1:tn.Yarn2,reason:n};case"npm":return{packageManager:tn.Npm,reason:n};case"pnpm":return{packageManager:tn.Pnpm,reason:n}}}}let r;try{r=await T.readFilePromise(v.join(t,wt.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:tn.Yarn2,reason:'"__metadata" key found in yarn.lock'}:{packageManager:tn.Yarn1,reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:T.existsSync(v.join(t,"package-lock.json"))?{packageManager:tn.Npm,reason:`found npm's "package-lock.json" lockfile`}:T.existsSync(v.join(t,"pnpm-lock.yaml"))?{packageManager:tn.Pnpm,reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function Vp({project:t,locator:e,binFolder:r,lifecycleScript:i}){var l,c;let n={};for(let[u,g]of Object.entries(process.env))typeof g!="undefined"&&(n[u.toLowerCase()!=="path"?u:"PATH"]=g);let s=M.fromPortablePath(r);n.BERRY_BIN_FOLDER=M.fromPortablePath(s);let o=process.env.COREPACK_ROOT?M.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([ba(r,"node",process.execPath),...Zr!==null?[ba(r,"run",process.execPath,[o,"run"]),ba(r,"yarn",process.execPath,[o]),ba(r,"yarnpkg",process.execPath,[o]),ba(r,"node-gyp",process.execPath,[o,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=M.fromPortablePath(t.configuration.startingCwd),n.PROJECT_CWD=M.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${s}${M.delimiter}${n.PATH}`:`${s}`,n.npm_execpath=`${s}${M.sep}yarn`,n.npm_node_execpath=`${s}${M.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let u=t.tryWorkspaceByLocator(e),g=u?(l=u.manifest.version)!=null?l:"":(c=t.storedPackages.get(e.locatorHash).version)!=null?c:"";n.npm_package_name=St(e),n.npm_package_version=g}let a=Zr!==null?`yarn/${Zr}`:`yarn/${mu("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${a} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,i&&(n.npm_lifecycle_event=i),t&&await t.configuration.triggerHook(u=>u.setupScriptEnvironment,t,n,async(u,g,f)=>await ba(r,kr(u),g,f)),n}var KFe=2,UFe=(0,o9.default)(KFe);async function HFe(t,e,{configuration:r,report:i,workspace:n=null,locator:s=null}){await UFe(async()=>{await T.mktempPromise(async o=>{let a=v.join(o,"pack.log"),l=null,{stdout:c,stderr:u}=r.getSubprocessStreams(a,{prefix:M.fromPortablePath(t),report:i}),g=s&&Eo(s)?lp(s):s,f=g?is(g):"an external project";c.write(`Packing ${f} from sources -`);let h=await a9(t),p;h!==null?(c.write(`Using ${h.packageManager} for bootstrap. Reason: ${h.reason} - -`),p=h.packageManager):(c.write(`No package manager configuration detected; defaulting to Yarn - -`),p=tn.Yarn2),await T.mktempPromise(async d=>{let m=await Vp({binFolder:d}),B=new Map([[tn.Yarn1,async()=>{let R=n!==null?["workspace",n]:[],H=await to("yarn",["set","version","classic","--only-if-needed"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;await T.appendFilePromise(v.join(t,".npmignore"),`/.yarn -`),c.write(` -`);let L=await to("yarn",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(L.code!==0)return L.code;c.write(` -`);let K=await to("yarn",[...R,"pack","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return K.code!==0?K.code:0}],[tn.Yarn2,async()=>{let R=n!==null?["workspace",n]:[];m.YARN_ENABLE_INLINE_BUILDS="1";let H=v.join(t,wt.lockfile);await T.existsPromise(H)||await T.writeFilePromise(H,"");let L=await to("yarn",[...R,"pack","--install-if-needed","--filename",M.fromPortablePath(e)],{cwd:t,env:m,stdin:l,stdout:c,stderr:u});return L.code!==0?L.code:0}],[tn.Npm,async()=>{if(n!==null){let A=new cc.PassThrough,V=Cu(A);A.pipe(c,{end:!1});let W=await to("npm",["--version"],{cwd:t,env:m,stdin:l,stdout:A,stderr:u,end:Pn.Never});if(A.end(),W.code!==0)return c.end(),u.end(),W.code;let X=(await V).toString().trim();if(!lc(X,">=7.x")){let F=Io(null,"npm"),D=Yt(F,X),he=Yt(F,">=7.x");throw new Error(`Workspaces aren't supported by ${Xt(r,D)}; please upgrade to ${Xt(r,he)} (npm has been detected as the primary package manager for ${Ve(r,t,Le.PATH)})`)}}let R=n!==null?["--workspace",n]:[];delete m.npm_config_user_agent;let H=await to("npm",["install"],{cwd:t,env:m,stdin:l,stdout:c,stderr:u,end:Pn.ErrorCode});if(H.code!==0)return H.code;let L=new cc.PassThrough,K=Cu(L);L.pipe(c);let J=await to("npm",["pack","--silent",...R],{cwd:t,env:m,stdin:l,stdout:L,stderr:u});if(J.code!==0)return J.code;let ne=(await K).toString().trim().replace(/^.*\n/s,""),q=v.resolve(t,M.toPortablePath(ne));return await T.renamePromise(q,e),0}]]).get(p);if(typeof B=="undefined")throw new Error("Assertion failed: Unsupported workflow");let b=await B();if(!(b===0||typeof b=="undefined"))throw T.detachTemp(o),new nt(z.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${b}, logs can be found here: ${Ve(r,a,Le.PATH)})`)})})})}async function GFe(t,e,{project:r}){let i=r.tryWorkspaceByLocator(t);if(i!==null)return tD(i,e);let n=r.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r.configuration,t)} not found in the project`);return await Jn.openPromise(async s=>{let o=r.configuration,a=r.configuration.getLinkers(),l={project:r,report:new Fe({stdout:new cc.PassThrough,configuration:o})},c=a.find(h=>h.supportsPackage(n,l));if(!c)throw new Error(`The package ${lt(r.configuration,n)} isn't supported by any of the available linkers`);let u=await c.findPackageLocation(n,l),g=new Ft(u,{baseFs:s});return(await Ze.find(Se.dot,{baseFs:g})).scripts.has(e)},{libzip:await $i()})}async function Uw(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{manifest:c,env:u,cwd:g}=await A9(t,{project:n,binFolder:l,cwd:i,lifecycleScript:e}),f=c.scripts.get(e);if(typeof f=="undefined")return 1;let h=async()=>await Fw(f,r,{cwd:g,env:u,stdin:s,stdout:o,stderr:a});return await(await n.configuration.reduceHook(d=>d.wrapScriptExecution,h,n,t,e,{script:f,args:r,cwd:g,env:u,stdin:s,stdout:o,stderr:a}))()})}async function rD(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a}){return await T.mktempPromise(async l=>{let{env:c,cwd:u}=await A9(t,{project:n,binFolder:l,cwd:i});return await Fw(e,r,{cwd:u,env:c,stdin:s,stdout:o,stderr:a})})}async function jFe(t,{binFolder:e,cwd:r,lifecycleScript:i}){let n=await Vp({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:i});return await Promise.all(Array.from(await l9(t),([s,[,o]])=>ba(e,kr(s),process.execPath,[o]))),typeof r=="undefined"&&(r=v.dirname(await T.realpathPromise(v.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:n,cwd:r}}async function A9(t,{project:e,binFolder:r,cwd:i,lifecycleScript:n}){let s=e.tryWorkspaceByLocator(t);if(s!==null)return jFe(s,{binFolder:r,cwd:i,lifecycleScript:n});let o=e.storedPackages.get(t.locatorHash);if(!o)throw new Error(`Package for ${lt(e.configuration,t)} not found in the project`);return await Jn.openPromise(async a=>{let l=e.configuration,c=e.configuration.getLinkers(),u={project:e,report:new Fe({stdout:new cc.PassThrough,configuration:l})},g=c.find(m=>m.supportsPackage(o,u));if(!g)throw new Error(`The package ${lt(e.configuration,o)} isn't supported by any of the available linkers`);let f=await Vp({project:e,locator:t,binFolder:r,lifecycleScript:n});await Promise.all(Array.from(await Hw(t,{project:e}),([m,[,E]])=>ba(r,kr(m),process.execPath,[E])));let h=await g.findPackageLocation(o,u),p=new Ft(h,{baseFs:a}),d=await Ze.find(Se.dot,{baseFs:p});return typeof i=="undefined"&&(i=h),{manifest:d,binFolder:r,env:f,cwd:i}},{libzip:await $i()})}async function c9(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o}){return await Uw(t.anchoredLocator,e,r,{cwd:i,project:t.project,stdin:n,stdout:s,stderr:o})}function tD(t,e){return t.manifest.scripts.has(e)}async function u9(t,e,{cwd:r,report:i}){let{configuration:n}=t.project,s=null;await T.mktempPromise(async o=>{let a=v.join(o,`${e}.log`),l=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${M.fromPortablePath(t.cwd)}") -`,{stdout:c,stderr:u}=n.getSubprocessStreams(a,{report:i,prefix:lt(n,t.anchoredLocator),header:l});i.reportInfo(z.LIFECYCLE_SCRIPT,`Calling the "${e}" lifecycle script`);let g=await c9(t,e,[],{cwd:r,stdin:s,stdout:c,stderr:u});if(c.end(),u.end(),g!==0)throw T.detachTemp(o),new nt(z.LIFECYCLE_SCRIPT,`${(0,s9.default)(e)} script failed (exit code ${Ve(n,g,Le.NUMBER)}, logs can be found here: ${Ve(n,a,Le.PATH)}); run ${Ve(n,`yarn ${e}`,Le.CODE)} to investigate`)})}async function YFe(t,e,r){tD(t,e)&&await u9(t,e,r)}async function Hw(t,{project:e}){let r=e.configuration,i=new Map,n=e.storedPackages.get(t.locatorHash);if(!n)throw new Error(`Package for ${lt(r,t)} not found in the project`);let s=new cc.Writable,o=r.getLinkers(),a={project:e,report:new Fe({configuration:r,stdout:s})},l=new Set([t.locatorHash]);for(let u of n.dependencies.values()){let g=e.storedResolutions.get(u.descriptorHash);if(!g)throw new Error(`Assertion failed: The resolution (${Xt(r,u)}) should have been registered`);l.add(g)}let c=await Promise.all(Array.from(l,async u=>{let g=e.storedPackages.get(u);if(!g)throw new Error(`Assertion failed: The package (${u}) should have been registered`);if(g.bin.size===0)return kl.skip;let f=o.find(p=>p.supportsPackage(g,a));if(!f)return kl.skip;let h=null;try{h=await f.findPackageLocation(g,a)}catch(p){if(p.code==="LOCATOR_NOT_INSTALLED")return kl.skip;throw p}return{dependency:g,packageLocation:h}}));for(let u of c){if(u===kl.skip)continue;let{dependency:g,packageLocation:f}=u;for(let[h,p]of g.bin)i.set(h,[g,M.fromPortablePath(v.resolve(f,p))])}return i}async function l9(t){return await Hw(t.anchoredLocator,{project:t.project})}async function g9(t,e,r,{cwd:i,project:n,stdin:s,stdout:o,stderr:a,nodeArgs:l=[],packageAccessibleBinaries:c}){c!=null||(c=await Hw(t,{project:n}));let u=c.get(e);if(!u)throw new Error(`Binary not found (${e}) for ${lt(n.configuration,t)}`);return await T.mktempPromise(async g=>{let[,f]=u,h=await Vp({project:n,locator:t,binFolder:g});await Promise.all(Array.from(c,([d,[,m]])=>ba(h.BERRY_BIN_FOLDER,kr(d),process.execPath,[m])));let p;try{p=await to(process.execPath,[...l,f,...r],{cwd:i,env:h,stdin:s,stdout:o,stderr:a})}finally{await T.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function qFe(t,e,r,{cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a}){return await g9(t.anchoredLocator,e,r,{project:t.project,cwd:i,stdin:n,stdout:s,stderr:o,packageAccessibleBinaries:a})}var Ai={};it(Ai,{convertToZip:()=>lTe,extractArchiveTo:()=>uTe,makeArchiveFromDirectory:()=>ATe});var d_=ie(require("stream")),C_=ie(ZV());var u_=ie(require("os")),g_=ie(c_()),f_=ie(require("worker_threads")),ER=class{constructor(e){this.source=e;this.pool=[];this.queue=new g_.default({concurrency:Math.max(1,(0,u_.cpus)().length)});let r=setTimeout(()=>{if(!(this.queue.size!==0||this.queue.pending!==0)){for(let i of this.pool)i.terminate();this.pool=[]}},1e3).unref();this.queue.on("idle",()=>{r.refresh()})}run(e){return this.queue.add(()=>{var i;let r=(i=this.pool.pop())!=null?i:new f_.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return r.ref(),new Promise((n,s)=>{let o=a=>{a!==0&&s(new Error(`Worker exited with code ${a}`))};r.once("message",a=>{this.pool.push(r),r.unref(),r.off("error",s),r.off("exit",o),n(a)}),r.once("error",s),r.once("exit",o),r.postMessage(e)})})}};var m_=ie(p_());async function ATe(t,{baseFs:e=new Wt,prefixPath:r=Se.root,compressionLevel:i,inMemory:n=!1}={}){let s=await $i(),o;if(n)o=new Jr(null,{libzip:s,level:i});else{let l=await T.mktempPromise(),c=v.join(l,"archive.zip");o=new Jr(c,{create:!0,libzip:s,level:i})}let a=v.resolve(Se.root,r);return await o.copyPromise(a,t,{baseFs:e,stableTime:!0,stableSort:!0}),o}var I_;async function lTe(t,e){let r=await T.mktempPromise(),i=v.join(r,"archive.zip");return I_||(I_=new ER((0,m_.getContent)())),await I_.run({tmpFile:i,tgz:t,opts:e}),new Jr(i,{libzip:await $i(),level:e.compressionLevel})}async function*cTe(t){let e=new C_.default.Parse,r=new d_.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",i=>{r.write(i)}),e.on("error",i=>{r.destroy(i)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let i of r){let n=i;yield n,n.resume()}}async function uTe(t,e,{stripComponents:r=0,prefixPath:i=Se.dot}={}){var s,o;function n(a){if(a.path[0]==="/")return!0;let l=a.path.split(/\//g);return!!(l.some(c=>c==="..")||l.length<=r)}for await(let a of cTe(t)){if(n(a))continue;let l=v.normalize(M.toPortablePath(a.path)).replace(/\/$/,"").split(/\//g);if(l.length<=r)continue;let c=l.slice(r).join("/"),u=v.join(i,c),g=420;switch((a.type==="Directory"||(((s=a.mode)!=null?s:0)&73)!=0)&&(g|=73),a.type){case"Directory":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.mkdirSync(u,{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.writeFileSync(u,await Cu(a),{mode:g}),e.utimesSync(u,mr.SAFE_TIME,mr.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(v.dirname(u),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),e.symlinkSync(a.linkpath,u),(o=e.lutimesSync)==null||o.call(e,u,mr.SAFE_TIME,mr.SAFE_TIME);break}}return e}var Hs={};it(Hs,{emitList:()=>gTe,emitTree:()=>b_,treeNodeToJson:()=>Q_,treeNodeToTreeify:()=>B_});var w_=ie(y_());function B_(t,{configuration:e}){let r={},i=(n,s)=>{let o=Array.isArray(n)?n.entries():Object.entries(n);for(let[a,{label:l,value:c,children:u}]of o){let g=[];typeof l!="undefined"&&g.push(Py(e,l,Gl.BOLD)),typeof c!="undefined"&&g.push(Ve(e,c[0],c[1])),g.length===0&&g.push(Py(e,`${a}`,Gl.BOLD));let f=g.join(": "),h=s[f]={};typeof u!="undefined"&&i(u,h)}};if(typeof t.children=="undefined")throw new Error("The root node must only contain children");return i(t.children,r),r}function Q_(t){let e=r=>{var s;if(typeof r.children=="undefined"){if(typeof r.value=="undefined")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return Uu(r.value[0],r.value[1])}let i=Array.isArray(r.children)?r.children.entries():Object.entries((s=r.children)!=null?s:{}),n=Array.isArray(r.children)?[]:{};for(let[o,a]of i)n[o]=e(a);return typeof r.value=="undefined"?n:{value:Uu(r.value[0],r.value[1]),children:n}};return e(t)}function gTe(t,{configuration:e,stdout:r,json:i}){let n=t.map(s=>({value:s}));b_({children:n},{configuration:e,stdout:r,json:i})}function b_(t,{configuration:e,stdout:r,json:i,separators:n=0}){var o;if(i){let a=Array.isArray(t.children)?t.children.values():Object.values((o=t.children)!=null?o:{});for(let l of a)r.write(`${JSON.stringify(Q_(l))} -`);return}let s=(0,w_.asTree)(B_(t,{configuration:e}),!1,!1);if(n>=1&&(s=s.replace(/^([├└]─)/gm,`\u2502 -$1`).replace(/^│\n/,"")),n>=2)for(let a=0;a<2;++a)s=s.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 -$2`).replace(/^│\n/,"");if(n>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(s)}var v_=ie(require("crypto")),BR=ie(require("fs"));var fTe=8,Qt=class{constructor(e,{configuration:r,immutable:i=r.get("enableImmutableCache"),check:n=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,v_.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=i,this.check=n;let s=r.get("cacheKeyOverride");if(s!==null)this.cacheKey=`${s}`;else{let o=r.get("compressionLevel"),a=o!==pl?`c${o}`:"";this.cacheKey=[fTe,a].join("")}}static async find(e,{immutable:r,check:i}={}){let n=new Qt(e.get("cacheFolder"),{configuration:e,immutable:r,check:i});return await n.setup(),n}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${Mu(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let n=hTe(r).slice(0,10);return`${Mu(e)}-${n}.zip`}getLocatorPath(e,r,i={}){var s;return this.mirrorCwd===null||((s=i.unstablePackages)==null?void 0:s.has(e.locatorHash))?v.resolve(this.cwd,this.getVersionFilename(e)):r===null||QR(r)!==this.cacheKey?null:v.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?v.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await T.existsPromise(this.cwd))throw new nt(z.IMMUTABLE_CACHE,"Cache path does not exist.")}else{await T.mkdirPromise(this.cwd,{recursive:!0});let e=v.resolve(this.cwd,".gitignore");await T.changeFilePromise(e,`/.gitignore -*.flock -*.tmp -`)}(this.mirrorCwd||!this.immutable)&&await T.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,a){var l=a,{onHit:i,onMiss:n,loader:s}=l,o=qr(l,["onHit","onMiss","loader"]);var A;let c=this.getLocatorMirrorPath(e),u=new Wt,g=()=>{let V=new Jr(null,{libzip:H}),W=v.join(Se.root,Lx(e));return V.mkdirSync(W,{recursive:!0}),V.writeJsonSync(v.join(W,wt.manifest),{name:St(e),mocked:!0}),V},f=async(V,W=null)=>{let X=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(V)}`:r;if(W!==null){let F=!o.skipIntegrityCheck||!r?`${this.cacheKey}/${await Iy(W)}`:r;if(X!==F)throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&X!==r){let F;switch(this.check?F="throw":QR(r)!==QR(X)?F="update":F=this.configuration.get("checksumBehavior"),F){case"ignore":return r;case"update":return X;default:case"throw":throw new nt(z.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return X},h=async V=>{if(!s)throw new Error(`Cache check required but no loader configured for ${lt(this.configuration,e)}`);let W=await s(),X=W.getRealPath();return W.saveAndClose(),await T.chmodPromise(X,420),await f(V,X)},p=async()=>{if(c===null||!await T.existsPromise(c)){let V=await s(),W=V.getRealPath();return V.saveAndClose(),{source:"loader",path:W}}return{source:"mirror",path:c}},d=async()=>{if(!s)throw new Error(`Cache entry required but missing for ${lt(this.configuration,e)}`);if(this.immutable)throw new nt(z.IMMUTABLE_CACHE,`Cache entry required but missing for ${lt(this.configuration,e)}`);let{path:V,source:W}=await p(),X=await f(V),F=this.getLocatorPath(e,X,o);if(!F)throw new Error("Assertion failed: Expected the cache path to be available");let D=[];W!=="mirror"&&c!==null&&D.push(async()=>{let pe=`${c}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,c)}),(!o.mirrorWriteOnly||c===null)&&D.push(async()=>{let pe=`${F}${this.cacheId}`;await T.copyFilePromise(V,pe,BR.default.constants.COPYFILE_FICLONE),await T.chmodPromise(pe,420),await T.renamePromise(pe,F)});let he=o.mirrorWriteOnly&&c!=null?c:F;return await Promise.all(D.map(pe=>pe())),[!1,he,X]},m=async()=>{let W=(async()=>{var Ne;let X=this.getLocatorPath(e,r,o),F=X!==null?await u.existsPromise(X):!1,D=!!((Ne=o.mockedPackages)==null?void 0:Ne.has(e.locatorHash))&&(!this.check||!F),he=D||F,pe=he?i:n;if(pe&&pe(),he){let Pe=null,qe=X;return D||(Pe=this.check?await h(qe):await f(qe)),[D,qe,Pe]}else return d()})();this.mutexes.set(e.locatorHash,W);try{return await W}finally{this.mutexes.delete(e.locatorHash)}};for(let V;V=this.mutexes.get(e.locatorHash);)await V;let[E,B,b]=await m();this.markedFiles.add(B);let R,H=await $i(),L=E?()=>g():()=>new Jr(B,{baseFs:u,libzip:H,readOnly:!0}),K=new oh(()=>Mv(()=>R=L(),V=>`Failed to open the cache entry for ${lt(this.configuration,e)}: ${V}`),v),J=new Xo(B,{baseFs:K,pathUtils:v}),ne=()=>{R==null||R.discardAndClose()},q=((A=o.unstablePackages)==null?void 0:A.has(e.locatorHash))?null:b;return[J,ne,q]}};function QR(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hTe(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var F_=ie(x_()),NB=ie(ml());var N_=ie(Wp()),kR=ie(require("stream"));var k_={hooks:{reduceDependency:(t,e,r,i,{resolver:n,resolveOptions:s})=>{for(let{pattern:o,reference:a}of e.topLevelWorkspace.manifest.resolutions){if(o.from&&o.from.fullName!==St(r)||o.from&&o.from.description&&o.from.description!==r.reference||o.descriptor.fullName!==St(t)||o.descriptor.description&&o.descriptor.description!==t.range)continue;return n.bindDescriptor(Yt(t,a),e.topLevelWorkspace.anchoredLocator,s)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let i=hp(t.configuration,r);await t.configuration.triggerHook(n=>n.validateWorkspace,r,{reportWarning:(n,s)=>e.reportWarning(n,`${i}: ${s}`),reportError:(n,s)=>e.reportError(n,`${i}: ${s}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let i of r.errors)e.reportWarning(z.INVALID_MANIFEST,i.message)}}};var vR=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));return i||null}getFetcher(e,r){let i=this.fetchers.find(n=>n.supports(e,r));if(!i)throw new nt(z.FETCHER_NOT_FOUND,`${lt(r.project.configuration,e)} isn't supported by any available fetcher`);return i}};var pd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.getResolverByDescriptor(e,i).bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,i){return await this.getResolverByDescriptor(e,i).getCandidates(e,r,i)}async getSatisfying(e,r,i){return this.getResolverByDescriptor(e,i).getSatisfying(e,r,i)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));return i||null}getResolverByDescriptor(e,r){let i=this.resolvers.find(n=>n.supportsDescriptor(e,r));if(!i)throw new Error(`${Xt(r.project.configuration,e)} isn't supported by any available resolver`);return i}tryResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));return i||null}getResolverByLocator(e,r){let i=this.resolvers.find(n=>n.supportsLocator(e,r));if(!i)throw new Error(`${lt(r.project.configuration,e)} isn't supported by any available resolver`);return i}};var P_=ie(Or());var Rg=/^(?!v)[a-z0-9._-]+$/i,SR=class{supportsDescriptor(e,r){return!!(Us(e.range)||Rg.test(e.range))}supportsLocator(e,r){return!!(P_.default.valid(e.reference)||Rg.test(e.reference))}shouldPersistResolution(e,r){return r.resolver.shouldPersistResolution(this.forwardLocator(e,r),r)}bindDescriptor(e,r,i){return i.resolver.bindDescriptor(this.forwardDescriptor(e,i),r,i)}getResolutionDependencies(e,r){return r.resolver.getResolutionDependencies(this.forwardDescriptor(e,r),r)}async getCandidates(e,r,i){return await i.resolver.getCandidates(this.forwardDescriptor(e,i),r,i)}async getSatisfying(e,r,i){return await i.resolver.getSatisfying(this.forwardDescriptor(e,i),r,i)}async resolve(e,r){let i=await r.resolver.resolve(this.forwardLocator(e,r),r);return op(i,e)}forwardDescriptor(e,r){return Yt(e,`${r.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,r){return Vi(e,`${r.project.configuration.get("defaultProtocol")}${e.reference}`)}};var dd=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n);return r.fetcher.getLocalPath(s,r)}async fetch(e,r){let i=e.reference.indexOf("#");if(i===-1)throw new Error("Invalid virtual package reference");let n=e.reference.slice(i+1),s=Vi(e,n),o=await r.fetcher.fetch(s,r);return await this.ensureVirtualLink(e,o,r)}getLocatorFilename(e){return Mu(e)}async ensureVirtualLink(e,r,i){let n=r.packageFs.getRealPath(),s=i.project.configuration.get("virtualFolder"),o=this.getLocatorFilename(e),a=Pr.makeVirtualPath(s,o,n),l=new Xo(a,{baseFs:r.packageFs,pathUtils:v});return _(P({},r),{packageFs:l})}};var Fg=class{static isVirtualDescriptor(e){return!!e.range.startsWith(Fg.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(Fg.protocol)}supportsDescriptor(e,r){return Fg.isVirtualDescriptor(e)}supportsLocator(e,r){return Fg.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,i){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,i){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},FB=Fg;FB.protocol="virtual:";var xR=class{supports(e){return!!e.reference.startsWith(Yr.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let i=this.getWorkspace(e,r).cwd;return{packageFs:new Ft(i),prefixPath:Se.dot,localPath:i}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Yr.protocol.length))}};var D_=ie(require("module"));function R_(){return new Set(D_.default.builtinModules||Object.keys(process.binding("natives")))}var dTe=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),LB="yarn_",PR=".yarnrc.yml",DR="yarn.lock",CTe="********",ge;(function(u){u.ANY="ANY",u.BOOLEAN="BOOLEAN",u.ABSOLUTE_PATH="ABSOLUTE_PATH",u.LOCATOR="LOCATOR",u.LOCATOR_LOOSE="LOCATOR_LOOSE",u.NUMBER="NUMBER",u.STRING="STRING",u.SECRET="SECRET",u.SHAPE="SHAPE",u.MAP="MAP"})(ge||(ge={}));var ps=Le,RR={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:ge.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:ge.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:ge.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:ge.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:ge.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:ge.ABSOLUTE_PATH,default:Rb()},cacheFolder:{description:"Folder where the cache files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:ge.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:pl},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:ge.ABSOLUTE_PATH,default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:ge.STRING,default:DR},installStatePath:{description:"Path of the file where the install state will be persisted",type:ge.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:ge.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:ge.STRING,default:TB()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:ge.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:ge.BOOLEAN,default:xy,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:ge.BOOLEAN,default:Mx,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:ge.BOOLEAN,default:NB.isCI,defaultText:""},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:ge.BOOLEAN,default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:ge.BOOLEAN,default:!NB.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:ge.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:ge.BOOLEAN,default:NB.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:ge.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:ge.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:ge.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:ge.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:ge.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:ge.BOOLEAN,default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:ge.SHAPE,properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:ge.STRING,isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:ge.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:ge.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:ge.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:ge.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:ge.NUMBER,default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:ge.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:ge.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:ge.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:ge.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:ge.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:ge.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:ge.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:ge.STRING,default:void 0},pattern:{description:"Code of the patterns covered by this override",type:ge.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:ge.STRING,values:Object.values(Ts),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:ge.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:ge.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:ge.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:ge.BOOLEAN,default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:ge.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:ge.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:ge.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:ge.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:ge.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:ge.MAP,valueDefinition:{description:"A range",type:ge.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:ge.MAP,valueDefinition:{description:"A semver range",type:ge.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:ge.MAP,valueDefinition:{description:"The peerDependency meta",type:ge.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:ge.BOOLEAN,default:!1}}}}}}}};function NR(t,e,r,i,n){if(i.isArray||i.type===ge.ANY&&Array.isArray(r))return Array.isArray(r)?r.map((s,o)=>FR(t,`${e}[${o}]`,s,i,n)):String(r).split(/,/).map(s=>FR(t,e,s,i,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return FR(t,e,r,i,n)}function FR(t,e,r,i,n){var a;switch(i.type){case ge.ANY:return r;case ge.SHAPE:return mTe(t,e,r,i,n);case ge.MAP:return ITe(t,e,r,i,n)}if(r===null&&!i.isNullable&&i.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((a=i.values)==null?void 0:a.includes(r))return r;let o=(()=>{if(i.type===ge.BOOLEAN&&typeof r!="string")return Hh(r);if(typeof r!="string")throw new Error(`Expected value (${r}) to be a string`);let l=Ov(r,{env:process.env});switch(i.type){case ge.ABSOLUTE_PATH:return v.resolve(n,M.toPortablePath(l));case ge.LOCATOR_LOOSE:return Hl(l,!1);case ge.NUMBER:return parseInt(l);case ge.LOCATOR:return Hl(l);case ge.BOOLEAN:return Hh(l);default:return l}})();if(i.values&&!i.values.includes(o))throw new Error(`Invalid value, expected one of ${i.values.join(", ")}`);return o}function mTe(t,e,r,i,n){if(typeof r!="object"||Array.isArray(r))throw new me(`Object configuration settings "${e}" must be an object`);let s=LR(t,i,{ignoreArrays:!0});if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=`${e}.${o}`;if(!i.properties[o])throw new me(`Unrecognized configuration settings found: ${e}.${o} - run "yarn config -v" to see the list of settings supported in Yarn`);s.set(o,NR(t,l,a,i.properties[o],n))}return s}function ITe(t,e,r,i,n){let s=new Map;if(typeof r!="object"||Array.isArray(r))throw new me(`Map configuration settings "${e}" must be an object`);if(r===null)return s;for(let[o,a]of Object.entries(r)){let l=i.normalizeKeys?i.normalizeKeys(o):o,c=`${e}['${l}']`,u=i.valueDefinition;s.set(l,NR(t,c,a,u,n))}return s}function LR(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case ge.SHAPE:{if(e.isArray&&!r)return[];let i=new Map;for(let[n,s]of Object.entries(e.properties))i.set(n,LR(t,s));return i}break;case ge.MAP:return e.isArray&&!r?[]:new Map;case ge.ABSOLUTE_PATH:return e.default===null?null:t.projectCwd===null?v.isAbsolute(e.default)?v.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(i=>v.resolve(t.projectCwd,i)):v.resolve(t.projectCwd,e.default);default:return e.default}}function MB(t,e,r){if(e.type===ge.SECRET&&typeof t=="string"&&r.hideSecrets)return CTe;if(e.type===ge.ABSOLUTE_PATH&&typeof t=="string"&&r.getNativePaths)return M.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let i=[];for(let n of t)i.push(MB(n,e,r));return i}if(e.type===ge.MAP&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries())i.set(n,MB(s,e.valueDefinition,r));return i}if(e.type===ge.SHAPE&&t instanceof Map){let i=new Map;for(let[n,s]of t.entries()){let o=e.properties[n];i.set(n,MB(s,o,r))}return i}return t}function ETe(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),!!e.startsWith(LB)&&(e=(0,F_.default)(e.slice(LB.length)),t[e]=r);return t}function TB(){let t=`${LB}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return PR}var KA;(function(i){i[i.LOCKFILE=0]="LOCKFILE",i[i.MANIFEST=1]="MANIFEST",i[i.NONE=2]="NONE"})(KA||(KA={}));var Ra=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,i){let n=new Ra(e);typeof r!="undefined"&&!(r instanceof Map)&&(n.projectCwd=r),n.importSettings(RR);let s=typeof i!="undefined"?i:r instanceof Map?r:new Map;for(let[o,a]of s)n.activatePlugin(o,a);return n}static async find(e,r,{lookup:i=0,strict:n=!0,usePath:s=!1,useRc:o=!0}={}){let a=ETe();delete a.rcFilename;let l=await Ra.findRcFiles(e),c=await Ra.findHomeRcFile();if(c){let E=l.find(B=>B.path===c.path);E?E.strict=!1:l.push(_(P({},c),{strict:!1}))}let u=({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R})=>({ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}),g=L=>{var K=L,{ignoreCwd:E,yarnPath:B,ignorePath:b,lockfileFilename:R}=K,H=qr(K,["ignoreCwd","yarnPath","ignorePath","lockfileFilename"]);return H},f=new Ra(e);f.importSettings(u(RR)),f.useWithSource("",u(a),e,{strict:!1});for(let{path:E,cwd:B,data:b}of l)f.useWithSource(E,u(b),B,{strict:!1});if(s){let E=f.get("yarnPath"),B=f.get("ignorePath");if(E!==null&&!B)return f}let h=f.get("lockfileFilename"),p;switch(i){case 0:p=await Ra.findProjectCwd(e,h);break;case 1:p=await Ra.findProjectCwd(e,null);break;case 2:T.existsSync(v.join(e,"package.json"))?p=v.resolve(e):p=null;break}f.startingCwd=e,f.projectCwd=p,f.importSettings(g(RR));let d=new Map([["@@core",k_]]),m=E=>"default"in E?E.default:E;if(r!==null){for(let R of r.plugins.keys())d.set(R,m(r.modules.get(R)));let E=new Map;for(let R of R_())E.set(R,()=>mu(R));for(let[R,H]of r.modules)E.set(R,()=>H);let B=new Set,b=async(R,H)=>{let{factory:L,name:K}=mu(R);if(B.has(K))return;let J=new Map(E),ne=A=>{if(J.has(A))return J.get(A)();throw new me(`This plugin cannot access the package referenced via ${A} which is neither a builtin, nor an exposed entry`)},q=await du(async()=>m(await L(ne)),A=>`${A} (when initializing ${K}, defined in ${H})`);E.set(K,()=>q),B.add(K),d.set(K,q)};if(a.plugins)for(let R of a.plugins.split(";")){let H=v.resolve(e,M.toPortablePath(R));await b(H,"")}for(let{path:R,cwd:H,data:L}of l)if(!!o&&!!Array.isArray(L.plugins))for(let K of L.plugins){let J=typeof K!="string"?K.path:K,ne=v.resolve(H,M.toPortablePath(J));await b(ne,R)}}for(let[E,B]of d)f.activatePlugin(E,B);f.useWithSource("",g(a),e,{strict:n});for(let{path:E,cwd:B,data:b,strict:R}of l)f.useWithSource(E,g(b),B,{strict:R!=null?R:n});return f.get("enableGlobalCache")&&(f.values.set("cacheFolder",`${f.get("globalFolder")}/cache`),f.sources.set("cacheFolder","")),await f.refreshPackageExtensions(),f}static async findRcFiles(e){let r=TB(),i=[],n=e,s=null;for(;n!==s;){s=n;let o=v.join(s,r);if(T.existsSync(o)){let a=await T.readFilePromise(o,"utf8"),l;try{l=Ei(a)}catch(c){let u="";throw a.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(u=" (in particular, make sure you list the colons after each key name)"),new me(`Parse error when loading ${o}; please check it's proper Yaml${u}`)}i.push({path:o,cwd:s,data:l})}n=v.dirname(s)}return i}static async findHomeRcFile(){let e=TB(),r=uh(),i=v.join(r,e);if(T.existsSync(i)){let n=await T.readFilePromise(i,"utf8"),s=Ei(n);return{path:i,cwd:r,data:s}}return null}static async findProjectCwd(e,r){let i=null,n=e,s=null;for(;n!==s;){if(s=n,T.existsSync(v.join(s,"package.json"))&&(i=s),r!==null){if(T.existsSync(v.join(s,r))){i=s;break}}else if(i!==null)break;n=v.dirname(s)}return i}static async updateConfiguration(e,r){let i=TB(),n=v.join(e,i),s=T.existsSync(n)?Ei(await T.readFilePromise(n,"utf8")):{},o=!1,a;if(typeof r=="function"){try{a=r(s)}catch{a=r({})}if(a===s)return}else{a=s;for(let l of Object.keys(r)){let c=s[l],u=r[l],g;if(typeof u=="function")try{g=u(c)}catch{g=u(void 0)}else g=u;c!==g&&(a[l]=g,o=!0)}if(!o)return}await T.changeFilePromise(n,Qa(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){let r=uh();return await Ra.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration!="undefined"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,i]of Object.entries(e))if(i!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,i),this.values.set(r,LR(this,i))}}useWithSource(e,r,i,n){try{this.use(e,r,i,n)}catch(s){throw s.message+=` (in ${Ve(this,e,Le.PATH)})`,s}}use(e,r,i,{strict:n=!0,overwrite:s=!1}={}){n=n&&this.get("enableStrictSettings");for(let o of["enableStrictSettings",...Object.keys(r)]){if(typeof r[o]=="undefined"||o==="plugins"||e===""&&dTe.has(o))continue;if(o==="rcFilename")throw new me(`The rcFilename settings can only be set via ${`${LB}RC_FILENAME`.toUpperCase()}, not via a rc file`);let l=this.settings.get(o);if(!l){if(n)throw new me(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(s||l.type===ge.MAP||l.isArray&&l.concatenateValues))continue;let c;try{c=NR(this,o,r[o],l,i)}catch(u){throw u.message+=` in ${Ve(this,e,Le.PATH)}`,u}if(o==="enableStrictSettings"&&e!==""){n=c;continue}if(l.type===ge.MAP){let u=this.values.get(o);this.values.set(o,new Map(s?[...u,...c]:[...c,...u])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(l.isArray&&l.concatenateValues){let u=this.values.get(o);this.values.set(o,s?[...u,...c]:[...c,...u]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,c),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:i=!1}){let n=this.get(e),s=this.settings.get(e);if(typeof s=="undefined")throw new me(`Couldn't find a configuration settings named "${e}"`);return MB(n,s,{hideSecrets:r,getNativePaths:i})}getSubprocessStreams(e,{header:r,prefix:i,report:n}){let s,o,a=T.createWriteStream(e);if(this.get("enableInlineBuilds")){let l=n.createStreamReporter(`${i} ${Ve(this,"STDOUT","green")}`),c=n.createStreamReporter(`${i} ${Ve(this,"STDERR","red")}`);s=new kR.PassThrough,s.pipe(l),s.pipe(a),o=new kR.PassThrough,o.pipe(c),o.pipe(a)}else s=a,o=a,typeof r!="undefined"&&s.write(`${r} -`);return{stdout:s,stderr:o}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let i of r.resolvers||[])e.push(new i);return new pd([new FB,new Yr,new SR,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let i of r.fetchers||[])e.push(new i);return new vR([new dd,new xR,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let i of r.linkers||[])e.push(new i);return e}getSupportedArchitectures(){let e=this.get("supportedArchitectures"),r=e.get("os");r!==null&&(r=r.map(n=>n==="current"?process.platform:n));let i=e.get("cpu");return i!==null&&(i=i.map(n=>n==="current"?process.arch:n)),{os:r,cpu:i}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(i,n,{userProvided:s=!1}={})=>{if(!Us(i.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let o=new Ze;o.load(n,{yamlCompatibilityMode:!0});let a=hu(e,i.identHash),l=[];a.push([i.range,l]);let c={status:ki.Inactive,userProvided:s,parentDescriptor:i};for(let u of o.dependencies.values())l.push(_(P({},c),{type:oi.Dependency,descriptor:u}));for(let u of o.peerDependencies.values())l.push(_(P({},c),{type:oi.PeerDependency,descriptor:u}));for(let[u,g]of o.peerDependenciesMeta)for(let[f,h]of Object.entries(g))l.push(_(P({},c),{type:oi.PeerDependencyMeta,selector:u,key:f,value:h}))};await this.triggerHook(i=>i.registerPackageExtensions,this,r);for(let[i,n]of this.get("packageExtensions"))r(pA(i,!0),aE(n),{userProvided:!0})}normalizePackage(e){let r=ap(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let i=this.packageExtensions.get(e.identHash);if(typeof i!="undefined"){let s=e.version;if(s!==null){for(let[o,a]of i)if(!!lc(s,o))for(let l of a)switch(l.status===ki.Inactive&&(l.status=ki.Redundant),l.type){case oi.Dependency:typeof r.dependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.dependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependency:typeof r.peerDependencies.get(l.descriptor.identHash)=="undefined"&&(l.status=ki.Active,r.peerDependencies.set(l.descriptor.identHash,l.descriptor));break;case oi.PeerDependencyMeta:{let c=r.peerDependenciesMeta.get(l.selector);(typeof c=="undefined"||!Object.prototype.hasOwnProperty.call(c,l.key)||c[l.key]!==l.value)&&(l.status=ki.Active,na(r.peerDependenciesMeta,l.selector,()=>({}))[l.key]=l.value)}break;default:Lv(l);break}}}let n=s=>s.scope?`${s.scope}__${s.name}`:`${s.name}`;for(let s of r.peerDependenciesMeta.keys()){let o=In(s);r.peerDependencies.has(o.identHash)||r.peerDependencies.set(o.identHash,Yt(o,"*"))}for(let s of r.peerDependencies.values()){if(s.scope==="types")continue;let o=n(s),a=Io("types",o),l=St(a);r.peerDependencies.has(a.identHash)||r.peerDependenciesMeta.has(l)||(r.peerDependencies.set(a.identHash,Yt(a,"*")),r.peerDependenciesMeta.set(l,{optional:!0}))}return r.dependencies=new Map(gn(r.dependencies,([,s])=>En(s))),r.peerDependencies=new Map(gn(r.peerDependencies,([,s])=>En(s))),r}getLimit(e){return na(this.limits,e,()=>(0,N_.default)(this.get(e)))}async triggerHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);!s||await s(...r)}}async triggerMultipleHooks(e,r){for(let i of r)await this.triggerHook(e,...i)}async reduceHook(e,r,...i){let n=r;for(let s of this.plugins.values()){let o=s.hooks;if(!o)continue;let a=e(o);!a||(n=await a(n,...i))}return n}async firstHook(e,...r){for(let i of this.plugins.values()){let n=i.hooks;if(!n)continue;let s=e(n);if(!s)continue;let o=await s(...r);if(typeof o!="undefined")return o}return null}},fe=Ra;fe.telemetry=null;var Gn;(function(r){r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE"})(Gn||(Gn={}));var Fa=class extends Xi{constructor({configuration:e,stdout:r,suggestInstall:i=!0}){super();this.errorCount=0;Cp(this,{configuration:e}),this.configuration=e,this.stdout=r,this.suggestInstall=i}static async start(e,r){let i=new this(e);try{await r(i)}catch(n){i.reportExceptionOnce(n)}finally{await i.finalize()}return i}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){this.errorCount+=1,this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(e)}: ${r} -`)}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(` -`),this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. -`),this.suggestInstall&&this.stdout.write(`${Ve(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. -`))}formatNameWithHyperlink(e){return eD(e,{configuration:this.configuration,json:!1})}};var t0=ie(require("crypto")),v$=ie(CX()),r0=ie(Q$()),S$=ie(Wp()),x$=ie(Or()),lF=ie(require("util")),cF=ie(require("v8")),uF=ie(require("zlib"));var iUe=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,i)=>`${r}#commit=${i}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",i,n)=>`https://${r}github.com/${i}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/(?:[^\\.]+)\.jfrog\.io\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>by({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],oF=class{constructor(){this.resolutions=null}async setup(e,{report:r}){let i=v.join(e.cwd,e.configuration.get("lockfileFilename"));if(!T.existsSync(i))return;let n=await T.readFilePromise(i,"utf8"),s=Ei(n);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;let o=this.resolutions=new Map;for(let a of Object.keys(s)){let l=gp(a);if(!l){r.reportWarning(z.YARN_IMPORT_FAILED,`Failed to parse the string "${a}" into a proper descriptor`);continue}Us(l.range)&&(l=Yt(l,`npm:${l.range}`));let{version:c,resolved:u}=s[a];if(!u)continue;let g;for(let[h,p]of iUe){let d=u.match(h);if(d){g=p(c,...d);break}}if(!g){r.reportWarning(z.YARN_IMPORT_FAILED,`${Xt(e.configuration,l)}: Only some patterns can be imported from legacy lockfiles (not "${u}")`);continue}let f=l;try{let h=Tu(l.range),p=gp(h.selector,!0);p&&(f=p)}catch{}o.set(l.descriptorHash,Vi(f,g))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let n=this.resolutions.get(e.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}};var aF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(By(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){let n=i.project.originalPackages.get(By(e).locatorHash);if(n)return[n];let s=i.project.storedResolutions.get(e.descriptorHash);if(!s)throw new Error("Expected the resolution to have been successful - resolution not found");if(n=i.project.originalPackages.get(s),!n)throw new Error("Expected the resolution to have been successful - package not found");return[n]}async getSatisfying(e,r,i){return null}async resolve(e,r){let i=r.project.originalPackages.get(e.locatorHash);if(!i)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return i}};var AF=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,i){return this.resolver.bindDescriptor(e,r,i)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,i){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new nt(z.MISSING_LOCKFILE_ENTRY,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}};var ei=class extends Xi{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,r,i){return(typeof r=="function"?r:i)()}async startTimerPromise(e,r,i){return await(typeof r=="function"?r:i)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){let r=Promise.resolve().then(async()=>{for await(let{}of e);}),i=()=>{};return _(P({},r),{stop:i})}reportJson(e){}async finalize(){}};var b$=ie(vx());var Dd=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.dependencies=new Map;this.project=r,this.cwd=e}async setup(){this.manifest=T.existsSync(v.join(this.cwd,Ze.fileName))?await Ze.find(this.cwd):new Ze,this.relativeCwd=v.relative(this.project.cwd,this.cwd)||Se.dot;let e=this.manifest.name?this.manifest.name:Io(null,`${this.computeCandidateName()}-${zi(this.relativeCwd).substr(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=Vi(e,r),this.anchoredDescriptor=Yt(this.locator,`${Yr.protocol}${this.relativeCwd}`),this.anchoredLocator=Vi(this.locator,`${Yr.protocol}${this.relativeCwd}`);let i=this.manifest.workspaceDefinitions.map(({pattern:s})=>s),n=await(0,b$.default)(i,{cwd:M.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});n.sort();for(let s of n){let o=v.resolve(this.cwd,M.toPortablePath(s));T.existsSync(v.join(o,"package.json"))&&this.workspacesCwds.add(o)}}accepts(e){var o;let r=e.indexOf(":"),i=r!==-1?e.slice(0,r+1):null,n=r!==-1?e.slice(r+1):e;if(i===Yr.protocol&&v.normalize(n)===this.relativeCwd||i===Yr.protocol&&(n==="*"||n==="^"||n==="~"))return!0;let s=Us(n);return s?i===Yr.protocol?s.test((o=this.manifest.version)!=null?o:"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?s.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${v.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of e)for(let o of n.manifest[s].values()){let a=this.project.tryWorkspaceByDescriptor(o);a===null||r.has(a)||(r.add(a),i(a))}};return i(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ze.hardDependencies}={}){let r=new Set,i=n=>{for(let s of this.project.workspaces)e.some(a=>[...s.manifest[a].values()].some(l=>{let c=this.project.tryWorkspaceByDescriptor(l);return c!==null&&up(c.anchoredLocator,n.anchoredLocator)}))&&!r.has(s)&&(r.add(s),i(s))};return i(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let i=this.project.workspacesByCwd.get(r);i&&e.push(i,...i.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=v.join(this.cwd,Ze.fileName),i=`${JSON.stringify(e,null,this.manifest.indent)} -`;await T.changeFilePromise(r,i,{automaticNewlines:!0}),this.manifest.raw=e}};var k$=5,nUe=1,sUe=/ *, */g,P$=/\/$/,oUe=32,aUe=(0,lF.promisify)(uF.default.gzip),AUe=(0,lF.promisify)(uF.default.gunzip),li;(function(r){r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build"})(li||(li={}));var gF={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},D$=t=>zi(`${nUe}`,t),Ke=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.installersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var c,u,g;if(!e.projectCwd)throw new me(`No project found in ${r}`);let i=e.projectCwd,n=r,s=null;for(;s!==e.projectCwd;){if(s=n,T.existsSync(v.join(s,wt.manifest))){i=s;break}n=v.dirname(s)}let o=new Ke(e.projectCwd,{configuration:e});(c=fe.telemetry)==null||c.reportProject(o.cwd),await o.setupResolutions(),await o.setupWorkspaces(),(u=fe.telemetry)==null||u.reportWorkspaceCount(o.workspaces.length),(g=fe.telemetry)==null||g.reportDependencyCount(o.workspaces.reduce((f,h)=>f+h.manifest.dependencies.size+h.manifest.devDependencies.size,0));let a=o.tryWorkspaceByCwd(i);if(a)return{project:o,workspace:a,locator:a.anchoredLocator};let l=await o.findLocatorForLocation(`${i}/`,{strict:!0});if(l)return{project:o,locator:l,workspace:null};throw new me(`The nearest package directory (${Ve(e,i,Le.PATH)}) doesn't seem to be part of the project declared in ${Ve(e,o.cwd,Le.PATH)}. - -- If the project directory is right, it might be that you forgot to list ${Ve(e,v.relative(o.cwd,i),Le.PATH)} as a workspace. -- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}async setupResolutions(){var i;this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(T.existsSync(e)){let n=await T.readFilePromise(e,"utf8");this.lockFileChecksum=D$(n);let s=Ei(n);if(s.__metadata){let o=s.__metadata.version,a=s.__metadata.cacheKey;this.lockfileNeedsRefresh=o0;){let r=e;e=[];for(let i of r){if(this.workspacesByCwd.has(i))continue;let n=await this.addWorkspace(i),s=this.storedPackages.get(n.anchoredLocator.locatorHash);s&&(n.dependencies=s.dependencies);for(let o of n.workspacesCwds)e.push(o)}}}async addWorkspace(e){let r=new Dd(e,{project:this});await r.setup();let i=this.workspacesByIdent.get(r.locator.identHash);if(typeof i!="undefined")throw new Error(`Duplicate workspace name ${Vr(this.configuration,r.locator)}: ${M.fromPortablePath(e)} conflicts with ${M.fromPortablePath(i.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){v.isAbsolute(e)||(e=v.resolve(this.cwd,e)),e=v.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let i of this.workspaces)v.relative(i.cwd,e).startsWith("../")||r&&r.cwd.length>=i.cwd.length||(r=i);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r=="undefined"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${Vr(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(hA(e)&&(e=Ap(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Xt(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Eo(e)&&(e=lp(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${lt(this.configuration,e)})`);return r}refreshWorkspaceDependencies(){for(let e of this.workspaces){let r=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!r)throw new Error(`Assertion failed: Expected workspace ${hp(this.configuration,e)} (${Ve(this.configuration,v.join(e.cwd,wt.manifest),Le.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);e.dependencies=new Map(r.dependencies)}}forgetResolution(e){let r=n=>{this.storedResolutions.delete(n),this.storedDescriptors.delete(n)},i=n=>{this.originalPackages.delete(n),this.storedPackages.delete(n),this.accessibleLocators.delete(n)};if("descriptorHash"in e){let n=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof n!="undefined"&&!s.has(n)&&i(n)}if("locatorHash"in e){i(e.locatorHash);for(let[n,s]of this.storedResolutions)s===e.locatorHash&&r(n)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let i;try{i=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{i=!1}i||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,i]of e.dependencies)hA(i)&&e.dependencies.set(r,Ap(i))}getDependencyMeta(e,r){let i={},s=this.topLevelWorkspace.manifest.dependenciesMeta.get(St(e));if(!s)return i;let o=s.get(null);if(o&&Object.assign(i,o),r===null||!x$.default.valid(r))return i;for(let[a,l]of s)a!==null&&a===r&&Object.assign(i,l);return i}async findLocatorForLocation(e,{strict:r=!1}={}){let i=new ei,n=this.configuration.getLinkers(),s={project:this,report:i};for(let o of n){let a=await o.findPackageLocator(e,s);if(a){if(r&&(await o.findPackageLocation(a,s)).replace(P$,"")!==e.replace(P$,""))continue;return a}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),i=new oF;await i.setup(this,{report:e.report});let n=e.lockfileOnly?[new AF(r)]:[i,r],s=new pd([new aF(r),...n]),o=this.configuration.makeFetcher(),a=e.lockfileOnly?{project:this,report:e.report,resolver:s}:{project:this,report:e.report,resolver:s,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:o,cacheOptions:{mirrorWriteOnly:!0}}},l=new Map,c=new Map,u=new Map,g=new Map,f=new Map,h=new Map,p=this.topLevelWorkspace.anchoredLocator,d=new Set,m=[],E=async W=>{let X=await du(async()=>await s.resolve(W,a),D=>`${lt(this.configuration,W)}: ${D}`);if(!up(W,X))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${lt(this.configuration,W)} to ${lt(this.configuration,X)})`);g.set(X.locatorHash,X);let F=this.configuration.normalizePackage(X);for(let[D,he]of F.dependencies){let pe=await this.configuration.reduceHook(Pe=>Pe.reduceDependency,he,this,F,he,{resolver:s,resolveOptions:a});if(!cp(he,pe))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let Ne=s.bindDescriptor(pe,W,a);F.dependencies.set(D,Ne)}return m.push(Promise.all([...F.dependencies.values()].map(D=>H(D)))),c.set(F.locatorHash,F),F},B=async W=>{let X=f.get(W.locatorHash);if(typeof X!="undefined")return X;let F=Promise.resolve().then(()=>E(W));return f.set(W.locatorHash,F),F},b=async(W,X)=>{let F=await H(X);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,F.locatorHash),F},R=async W=>{let X=this.resolutionAliases.get(W.descriptorHash);if(typeof X!="undefined")return b(W,this.storedDescriptors.get(X));let F=s.getResolutionDependencies(W,a),D=new Map(await Promise.all(F.map(async Ne=>{let Pe=s.bindDescriptor(Ne,p,a),qe=await H(Pe);return d.add(qe.locatorHash),[Ne.descriptorHash,qe]}))),pe=(await du(async()=>await s.getCandidates(W,D,a),Ne=>`${Xt(this.configuration,W)}: ${Ne}`))[0];if(typeof pe=="undefined")throw new Error(`${Xt(this.configuration,W)}: No candidates found`);return l.set(W.descriptorHash,W),u.set(W.descriptorHash,pe.locatorHash),B(pe)},H=W=>{let X=h.get(W.descriptorHash);if(typeof X!="undefined")return X;l.set(W.descriptorHash,W);let F=Promise.resolve().then(()=>R(W));return h.set(W.descriptorHash,F),F};for(let W of this.workspaces){let X=W.anchoredDescriptor;m.push(H(X))}for(;m.length>0;){let W=[...m];m.length=0,await Promise.all(W)}let L=new Set(this.resolutionAliases.values()),K=new Set(c.keys()),J=new Set,ne=new Map;lUe({project:this,report:e.report,accessibleLocators:J,volatileDescriptors:L,optionalBuilds:K,peerRequirements:ne,allDescriptors:l,allResolutions:u,allPackages:c});for(let W of d)K.delete(W);for(let W of L)l.delete(W),u.delete(W);let q=this.configuration.getSupportedArchitectures(),A=new Set,V=new Set;for(let W of c.values())W.conditions!=null&&(!K.has(W.locatorHash)||(Sy(W,q)||(Sy(W,{os:[process.platform],cpu:[process.arch]})&&e.report.reportWarningOnce(z.GHOST_ARCHITECTURE,`${lt(this.configuration,W)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ve(this.configuration,"supportedArchitectures",ps.SETTING)} setting`),V.add(W.locatorHash)),A.add(W.locatorHash)));this.storedResolutions=u,this.storedDescriptors=l,this.storedPackages=c,this.accessibleLocators=J,this.conditionalLocators=A,this.disabledLocators=V,this.originalPackages=g,this.optionalBuilds=K,this.peerRequirements=ne,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:r,fetcher:i,mode:n}){let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,cacheOptions:s},l=Array.from(new Set(gn(this.storedResolutions.values(),[f=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");return is(h)}])));n===li.UpdateLockfile&&(l=l.filter(f=>!this.storedChecksums.has(f)));let c=!1,u=Xi.progressViaCounter(l.length);r.reportProgress(u);let g=(0,S$.default)(oUe);if(await r.startCacheReport(async()=>{await Promise.all(l.map(f=>g(async()=>{let h=this.storedPackages.get(f);if(!h)throw new Error("Assertion failed: The locator should have been registered");if(Eo(h))return;let p;try{p=await o.fetch(h,a)}catch(d){d.message=`${lt(this.configuration,h)}: ${d.message}`,r.reportExceptionOnce(d),c=d;return}p.checksum!=null?this.storedChecksums.set(h.locatorHash,p.checksum):this.storedChecksums.delete(h.locatorHash),p.releaseFs&&p.releaseFs()}).finally(()=>{u.tick()})))}),c)throw c}async linkEverything({cache:e,report:r,fetcher:i,mode:n}){var A,V,W;let s={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},o=i||this.configuration.makeFetcher(),a={checksums:this.storedChecksums,project:this,cache:e,fetcher:o,report:r,skipIntegrityCheck:!0,cacheOptions:s},l=this.configuration.getLinkers(),c={project:this,report:r},u=new Map(l.map(X=>{let F=X.makeInstaller(c),D=F.getCustomDataKey(),he=this.installersCustomData.get(D);return typeof he!="undefined"&&F.attachCustomData(he),[X,F]})),g=new Map,f=new Map,h=new Map,p=new Map(await Promise.all([...this.accessibleLocators].map(async X=>{let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");return[X,await o.fetch(F,a)]}))),d=[];for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(typeof F=="undefined")throw new Error("Assertion failed: The locator should have been registered");let D=p.get(F.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The fetch result should have been registered");let he=[],pe=Pe=>{he.push(Pe)},Ne=this.tryWorkspaceByLocator(F);if(Ne!==null){let Pe=[],{scripts:qe}=Ne.manifest;for(let se of["preinstall","install","postinstall"])qe.has(se)&&Pe.push([Gn.SCRIPT,se]);try{for(let[se,be]of u)if(se.supportsPackage(F,c)&&(await be.installPackage(F,D,{holdFetchResult:pe})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{he.length===0?(A=D.releaseFs)==null||A.call(D):d.push(Promise.all(he).catch(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}let re=v.join(D.packageFs.getRealPath(),D.prefixPath);f.set(F.locatorHash,re),!Eo(F)&&Pe.length>0&&h.set(F.locatorHash,{directives:Pe,buildLocations:[re]})}else{let Pe=l.find(se=>se.supportsPackage(F,c));if(!Pe)throw new nt(z.LINKER_NOT_FOUND,`${lt(this.configuration,F)} isn't supported by any available linker`);let qe=u.get(Pe);if(!qe)throw new Error("Assertion failed: The installer should have been registered");let re;try{re=await qe.installPackage(F,D,{holdFetchResult:pe})}finally{he.length===0?(V=D.releaseFs)==null||V.call(D):d.push(Promise.all(he).then(()=>{}).then(()=>{var se;(se=D.releaseFs)==null||se.call(D)}))}g.set(F.locatorHash,Pe),f.set(F.locatorHash,re.packageLocation),re.buildDirective&&re.buildDirective.length>0&&re.packageLocation&&h.set(F.locatorHash,{directives:re.buildDirective,buildLocations:[re.packageLocation]})}}let m=new Map;for(let X of this.accessibleLocators){let F=this.storedPackages.get(X);if(!F)throw new Error("Assertion failed: The locator should have been registered");let D=this.tryWorkspaceByLocator(F)!==null,he=async(pe,Ne)=>{let Pe=f.get(F.locatorHash);if(typeof Pe=="undefined")throw new Error(`Assertion failed: The package (${lt(this.configuration,F)}) should have been registered`);let qe=[];for(let re of F.dependencies.values()){let se=this.storedResolutions.get(re.descriptorHash);if(typeof se=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,re)}, from ${lt(this.configuration,F)})should have been registered`);let be=this.storedPackages.get(se);if(typeof be=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);let ae=this.tryWorkspaceByLocator(be)===null?g.get(se):null;if(typeof ae=="undefined")throw new Error(`Assertion failed: The package (${se}, resolved from ${Xt(this.configuration,re)}) should have been registered`);ae===pe||ae===null?f.get(be.locatorHash)!==null&&qe.push([re,be]):!D&&Pe!==null&&hu(m,se).push(Pe)}Pe!==null&&await Ne.attachInternalDependencies(F,qe)};if(D)for(let[pe,Ne]of u)pe.supportsPackage(F,c)&&await he(pe,Ne);else{let pe=g.get(F.locatorHash);if(!pe)throw new Error("Assertion failed: The linker should have been found");let Ne=u.get(pe);if(!Ne)throw new Error("Assertion failed: The installer should have been registered");await he(pe,Ne)}}for(let[X,F]of m){let D=this.storedPackages.get(X);if(!D)throw new Error("Assertion failed: The package should have been registered");let he=g.get(D.locatorHash);if(!he)throw new Error("Assertion failed: The linker should have been found");let pe=u.get(he);if(!pe)throw new Error("Assertion failed: The installer should have been registered");await pe.attachExternalDependents(D,F)}let E=new Map;for(let X of u.values()){let F=await X.finalizeInstall();for(let D of(W=F==null?void 0:F.records)!=null?W:[])h.set(D.locatorHash,{directives:D.buildDirective,buildLocations:D.buildLocations});typeof(F==null?void 0:F.customData)!="undefined"&&E.set(X.getCustomDataKey(),F.customData)}if(this.installersCustomData=E,await Promise.all(d),n===li.SkipBuild)return;let B=new Set(this.storedPackages.keys()),b=new Set(h.keys());for(let X of b)B.delete(X);let R=(0,t0.createHash)("sha512");R.update(process.versions.node),await this.configuration.triggerHook(X=>X.globalHashGeneration,this,X=>{R.update("\0"),R.update(X)});let H=R.digest("hex"),L=new Map,K=X=>{let F=L.get(X.locatorHash);if(typeof F!="undefined")return F;let D=this.storedPackages.get(X.locatorHash);if(typeof D=="undefined")throw new Error("Assertion failed: The package should have been registered");let he=(0,t0.createHash)("sha512");he.update(X.locatorHash),L.set(X.locatorHash,"");for(let pe of D.dependencies.values()){let Ne=this.storedResolutions.get(pe.descriptorHash);if(typeof Ne=="undefined")throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,pe)}) should have been registered`);let Pe=this.storedPackages.get(Ne);if(typeof Pe=="undefined")throw new Error("Assertion failed: The package should have been registered");he.update(K(Pe))}return F=he.digest("hex"),L.set(X.locatorHash,F),F},J=(X,F)=>{let D=(0,t0.createHash)("sha512");D.update(H),D.update(K(X));for(let he of F)D.update(he);return D.digest("hex")},ne=new Map,q=!1;for(;b.size>0;){let X=b.size,F=[];for(let D of b){let he=this.storedPackages.get(D);if(!he)throw new Error("Assertion failed: The package should have been registered");let pe=!0;for(let qe of he.dependencies.values()){let re=this.storedResolutions.get(qe.descriptorHash);if(!re)throw new Error(`Assertion failed: The resolution (${Xt(this.configuration,qe)}) should have been registered`);if(b.has(re)){pe=!1;break}}if(!pe)continue;b.delete(D);let Ne=h.get(he.locatorHash);if(!Ne)throw new Error("Assertion failed: The build directive should have been registered");let Pe=J(he,Ne.buildLocations);if(this.storedBuildState.get(he.locatorHash)===Pe){ne.set(he.locatorHash,Pe);continue}q||(await this.persistInstallStateFile(),q=!0),this.storedBuildState.has(he.locatorHash)?r.reportInfo(z.MUST_REBUILD,`${lt(this.configuration,he)} must be rebuilt because its dependency tree changed`):r.reportInfo(z.MUST_BUILD,`${lt(this.configuration,he)} must be built because it never has been before or the last one failed`);for(let qe of Ne.buildLocations){if(!v.isAbsolute(qe))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${qe})`);F.push((async()=>{for(let[re,se]of Ne.directives){let be=`# This file contains the result of Yarn building a package (${is(he)}) -`;switch(re){case Gn.SCRIPT:be+=`# Script name: ${se} -`;break;case Gn.SHELLCODE:be+=`# Script code: ${se} -`;break}let ae=null;if(!await T.mktempPromise(async De=>{let $=v.join(De,"build.log"),{stdout:G,stderr:Ce}=this.configuration.getSubprocessStreams($,{header:be,prefix:lt(this.configuration,he),report:r}),ee;try{switch(re){case Gn.SCRIPT:ee=await Uw(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break;case Gn.SHELLCODE:ee=await rD(he,se,[],{cwd:qe,project:this,stdin:ae,stdout:G,stderr:Ce});break}}catch(Oe){Ce.write(Oe.stack),ee=1}if(G.end(),Ce.end(),ee===0)return ne.set(he.locatorHash,Pe),!0;T.detachTemp(De);let Ue=`${lt(this.configuration,he)} couldn't be built successfully (exit code ${Ve(this.configuration,ee,Le.NUMBER)}, logs can be found here: ${Ve(this.configuration,$,Le.PATH)})`;return this.optionalBuilds.has(he.locatorHash)?(r.reportInfo(z.BUILD_FAILED,Ue),ne.set(he.locatorHash,Pe),!0):(r.reportError(z.BUILD_FAILED,Ue),!1)}))return}})())}}if(await Promise.all(F),X===b.size){let D=Array.from(b).map(he=>{let pe=this.storedPackages.get(he);if(!pe)throw new Error("Assertion failed: The package should have been registered");return lt(this.configuration,pe)}).join(", ");r.reportError(z.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${D})`);break}}this.storedBuildState=ne}async install(e){var a,l;let r=this.configuration.get("nodeLinker");(a=fe.telemetry)==null||a.reportInstall(r),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(c=>c.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.status=ki.Inactive;let i=v.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await T.readFilePromise(i,"utf8")}catch(c){throw c.code==="ENOENT"?new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):c}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,c]of this.configuration.packageExtensions)for(let[,u]of c)for(let g of u)if(g.userProvided){let f=Ve(this.configuration,g,Le.PACKAGE_EXTENSION);switch(g.status){case ki.Inactive:e.report.reportWarning(z.UNUSED_PACKAGE_EXTENSION,`${f}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case ki.Redundant:e.report.reportWarning(z.REDUNDANT_PACKAGE_EXTENSION,`${f}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let c=ul(n,this.generateLockfile());if(c!==n){let u=(0,v$.structuredPatch)(i,i,n,c);e.report.reportSeparator();for(let g of u.hunks){e.report.reportInfo(null,`@@ -${g.oldStart},${g.oldLines} +${g.newStart},${g.newLines} @@`);for(let f of g.lines)f.startsWith("+")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.ADDED)):f.startsWith("-")?e.report.reportError(z.FROZEN_LOCKFILE_EXCEPTION,Ve(this.configuration,f,Le.REMOVED)):e.report.reportInfo(null,Ve(this.configuration,f,"grey"))}throw e.report.reportSeparator(),new nt(z.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let c of this.configuration.packageExtensions.values())for(let[,u]of c)for(let g of u)g.userProvided&&g.status===ki.Active&&((l=fe.telemetry)==null||l.reportPackageExtension(Uu(g,Le.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject=="undefined"||e.persistProject)&&e.mode!==li.UpdateLockfile&&await this.cacheCleanup(e)});let s=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],o=await Promise.all(s.map(async c=>Ey(c,{cwd:this.cwd})));(typeof e.persistProject=="undefined"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode===li.UpdateLockfile){e.report.reportWarning(z.UPDATE_LOCKFILE_ONLY_SKIP_LINK,`Skipped due to ${Ve(this.configuration,"mode=update-lockfile",Le.CODE)}`);return}await this.linkEverything(e);let c=await Promise.all(s.map(async u=>Ey(u,{cwd:this.cwd})));for(let u=0;uc.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,s]of this.storedResolutions.entries()){let o=e.get(s);o||e.set(s,o=new Set),o.add(n)}let r={};r.__metadata={version:k$,cacheKey:void 0};for(let[n,s]of e.entries()){let o=this.originalPackages.get(n);if(!o)continue;let a=[];for(let f of s){let h=this.storedDescriptors.get(f);if(!h)throw new Error("Assertion failed: The descriptor should have been registered");a.push(h)}let l=a.map(f=>En(f)).sort().join(", "),c=new Ze;c.version=o.linkType===gt.HARD?o.version:"0.0.0-use.local",c.languageName=o.languageName,c.dependencies=new Map(o.dependencies),c.peerDependencies=new Map(o.peerDependencies),c.dependenciesMeta=new Map(o.dependenciesMeta),c.peerDependenciesMeta=new Map(o.peerDependenciesMeta),c.bin=new Map(o.bin);let u,g=this.storedChecksums.get(o.locatorHash);if(typeof g!="undefined"){let f=g.indexOf("/");if(f===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let h=g.slice(0,f),p=g.slice(f+1);typeof r.__metadata.cacheKey=="undefined"&&(r.__metadata.cacheKey=h),h===r.__metadata.cacheKey?u=p:u=g}r[l]=_(P({},c.exportTo({},{compatibilityMode:!1})),{linkType:o.linkType.toLowerCase(),resolution:is(o),checksum:u,conditions:o.conditions||void 0})}return`${[`# This file is generated by running "yarn install" inside your project. -`,`# Manual changes might be lost - proceed with caution! -`].join("")} -`+Qa(r)}async persistLockfile(){let e=v.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await T.readFilePromise(e,"utf8")}catch(s){}let i=this.generateLockfile(),n=ul(r,i);n!==r&&(await T.writeFilePromise(e,n),this.lockFileChecksum=D$(n),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let o of Object.values(gF))e.push(...o);let r=(0,r0.default)(this,e),i=cF.default.serialize(r),n=zi(i);if(this.installStateChecksum===n)return;let s=this.configuration.get("installStatePath");await T.mkdirPromise(v.dirname(s),{recursive:!0}),await T.writeFilePromise(s,await aUe(i)),this.installStateChecksum=n}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:i=!0}={}){let n=this.configuration.get("installStatePath");if(!T.existsSync(n)){r&&await this.applyLightResolution();return}let s=await AUe(await T.readFilePromise(n));this.installStateChecksum=zi(s);let o=cF.default.deserialize(s);e&&typeof o.installersCustomData!="undefined"&&(this.installersCustomData=o.installersCustomData),i&&Object.assign(this,(0,r0.default)(o,gF.restoreBuildState)),r&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,(0,r0.default)(o,gF.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ei}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){let i=new Set([".gitignore"]);if(!Fb(e.cwd,this.cwd)||!await T.existsPromise(e.cwd))return;let n=this.configuration.get("preferAggregateCacheInfo"),s=0,o=null;for(let a of await T.readdirPromise(e.cwd)){if(i.has(a))continue;let l=v.resolve(e.cwd,a);e.markedFiles.has(l)||(o=a,e.immutable?r.reportError(z.IMMUTABLE_CACHE,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(n?s+=1:r.reportInfo(z.UNUSED_CACHE_ENTRY,`${Ve(this.configuration,v.basename(l),"magenta")} appears to be unused - removing`),await T.removePromise(l)))}n&&s!==0&&r.reportInfo(z.UNUSED_CACHE_ENTRY,s>1?`${s} packages appeared to be unused and were removed`:`${o} appeared to be unused and was removed`),e.markedFiles.clear()}};function lUe({project:t,allDescriptors:e,allResolutions:r,allPackages:i,accessibleLocators:n=new Set,optionalBuilds:s=new Set,volatileDescriptors:o=new Set,peerRequirements:a=new Map,report:l,tolerateMissingPackages:c=!1}){var ne;let u=new Map,g=[],f=new Map,h=new Map,p=new Map,d=new Map,m=new Map,E=new Map(t.workspaces.map(q=>{let A=q.anchoredLocator.locatorHash,V=i.get(A);if(typeof V=="undefined"){if(c)return[A,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[A,ap(V)]})),B=()=>{let q=T.mktempSync(),A=v.join(q,"stacktrace.log"),V=String(g.length+1).length,W=g.map((X,F)=>`${`${F+1}.`.padStart(V," ")} ${is(X)} -`).join("");throw T.writeFileSync(A,W),T.detachTemp(q),new nt(z.STACK_OVERFLOW_RESOLUTION,`Encountered a stack overflow when resolving peer dependencies; cf ${M.fromPortablePath(A)}`)},b=q=>{let A=r.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: The resolution should have been registered");let V=i.get(A);if(!V)throw new Error("Assertion failed: The package could not be found");return V},R=(q,A,V,{top:W,optional:X})=>{g.length>1e3&&B(),g.push(A);let F=H(q,A,V,{top:W,optional:X});return g.pop(),F},H=(q,A,V,{top:W,optional:X})=>{if(n.has(A.locatorHash))return;n.add(A.locatorHash),X||s.delete(A.locatorHash);let F=i.get(A.locatorHash);if(!F){if(c)return;throw new Error(`Assertion failed: The package (${lt(t.configuration,A)}) should have been registered`)}let D=[],he=[],pe=[],Ne=[],Pe=[];for(let re of Array.from(F.dependencies.values())){if(F.peerDependencies.has(re.identHash)&&F.locatorHash!==W)continue;if(hA(re))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");o.delete(re.descriptorHash);let se=X;if(!se){let ee=F.dependenciesMeta.get(St(re));if(typeof ee!="undefined"){let Ue=ee.get(null);typeof Ue!="undefined"&&Ue.optional&&(se=!0)}}let be=r.get(re.descriptorHash);if(!be){if(c)continue;throw new Error(`Assertion failed: The resolution (${Xt(t.configuration,re)}) should have been registered`)}let ae=E.get(be)||i.get(be);if(!ae)throw new Error(`Assertion failed: The package (${be}, resolved from ${Xt(t.configuration,re)}) should have been registered`);if(ae.peerDependencies.size===0){R(re,ae,new Map,{top:W,optional:se});continue}let Ae=u.get(ae.locatorHash);typeof Ae=="number"&&Ae>=2&&B();let De,$,G=new Set,Ce;he.push(()=>{De=kx(re,A.locatorHash),$=Px(ae,A.locatorHash),F.dependencies.delete(re.identHash),F.dependencies.set(De.identHash,De),r.set(De.descriptorHash,$.locatorHash),e.set(De.descriptorHash,De),i.set($.locatorHash,$),D.push([ae,De,$])}),pe.push(()=>{var ee;Ce=new Map;for(let Ue of $.peerDependencies.values()){let Oe=F.dependencies.get(Ue.identHash);if(!Oe&&cp(A,Ue)&&(Oe=q),(!Oe||Oe.range==="missing:")&&$.dependencies.has(Ue.identHash)){$.peerDependencies.delete(Ue.identHash);continue}Oe||(Oe=Yt(Ue,"missing:")),$.dependencies.set(Oe.identHash,Oe),hA(Oe)&&Pl(p,Oe.descriptorHash).add($.locatorHash),f.set(Oe.identHash,Oe),Oe.range==="missing:"&&G.add(Oe.identHash),Ce.set(Ue.identHash,(ee=V.get(Ue.identHash))!=null?ee:$.locatorHash)}$.dependencies=new Map(gn($.dependencies,([Ue,Oe])=>St(Oe)))}),Ne.push(()=>{if(!i.has($.locatorHash))return;let ee=u.get(ae.locatorHash),Ue=typeof ee!="undefined"?ee+1:1;u.set(ae.locatorHash,Ue),R(De,$,Ce,{top:W,optional:se}),u.set(ae.locatorHash,Ue-1)}),Pe.push(()=>{let ee=F.dependencies.get(re.identHash);if(typeof ee=="undefined")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let Ue=r.get(ee.descriptorHash);if(typeof Ue=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");if(Pl(m,Ue).add(A.locatorHash),!!i.has($.locatorHash)){for(let Oe of $.peerDependencies.values()){let vt=Ce.get(Oe.identHash);if(typeof vt=="undefined")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");hu(pu(d,vt),St(Oe)).push($.locatorHash)}for(let Oe of G)$.dependencies.delete(Oe)}})}for(let re of[...he,...pe])re();let qe;do{qe=!0;for(let[re,se,be]of D){if(!i.has(be.locatorHash))continue;let ae=pu(h,re.locatorHash),Ae=zi(...[...be.dependencies.values()].map(Ce=>{let ee=Ce.range!=="missing:"?r.get(Ce.descriptorHash):"missing:";if(typeof ee=="undefined")throw new Error(`Assertion failed: Expected the resolution for ${Xt(t.configuration,Ce)} to have been registered`);return ee===W?`${ee} (top)`:ee}),se.identHash),De=ae.get(Ae);if(typeof De=="undefined"){ae.set(Ae,se);continue}if(De===se)continue;qe=!1,i.delete(be.locatorHash),e.delete(se.descriptorHash),r.delete(se.descriptorHash),n.delete(be.locatorHash);let $=p.get(se.descriptorHash)||[],G=[F.locatorHash,...$];p.delete(se.descriptorHash);for(let Ce of G){let ee=i.get(Ce);typeof ee!="undefined"&&ee.dependencies.set(se.identHash,De)}}}while(!qe);for(let re of[...Ne,...Pe])re()};for(let q of t.workspaces){let A=q.anchoredLocator;o.delete(q.anchoredDescriptor.descriptorHash),R(q.anchoredDescriptor,A,new Map,{top:A.locatorHash,optional:!1})}var L;(function(V){V[V.NotProvided=0]="NotProvided",V[V.NotCompatible=1]="NotCompatible"})(L||(L={}));let K=[];for(let[q,A]of m){let V=i.get(q);if(typeof V=="undefined")throw new Error("Assertion failed: Expected the root to be registered");let W=d.get(q);if(typeof W!="undefined")for(let X of A){let F=i.get(X);if(typeof F!="undefined")for(let[D,he]of W){let pe=In(D);if(F.peerDependencies.has(pe.identHash))continue;let Ne=`p${zi(X,D,q).slice(0,5)}`;a.set(Ne,{subject:X,requested:pe,rootRequester:q,allRequesters:he});let Pe=V.dependencies.get(pe.identHash);if(typeof Pe!="undefined"){let qe=b(Pe),re=(ne=qe.version)!=null?ne:"0.0.0",se=new Set;for(let ae of he){let Ae=i.get(ae);if(typeof Ae=="undefined")throw new Error("Assertion failed: Expected the link to be registered");let De=Ae.peerDependencies.get(pe.identHash);if(typeof De=="undefined")throw new Error("Assertion failed: Expected the ident to be registered");se.add(De.range)}[...se].every(ae=>{if(ae.startsWith(Yr.protocol)){if(!t.tryWorkspaceByLocator(qe))return!1;ae=ae.slice(Yr.protocol.length),(ae==="^"||ae==="~")&&(ae="*")}return lc(re,ae)})||K.push({type:1,subject:F,requested:pe,requester:V,version:re,hash:Ne,requirementCount:he.length})}else{let qe=V.peerDependenciesMeta.get(D);(qe==null?void 0:qe.optional)||K.push({type:0,subject:F,requested:pe,requester:V,hash:Ne})}}}}let J=[q=>Rx(q.subject),q=>St(q.requested),q=>`${q.type}`];for(let q of gn(K,J))switch(q.type){case 0:l==null||l.reportWarning(z.MISSING_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} doesn't provide ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}), requested by ${Vr(t.configuration,q.requester)}`);break;case 1:{let A=q.requirementCount>1?"and some of its descendants request":"requests";l==null||l.reportWarning(z.INCOMPATIBLE_PEER_DEPENDENCY,`${lt(t.configuration,q.subject)} provides ${Vr(t.configuration,q.requested)} (${Ve(t.configuration,q.hash,Le.CODE)}) with version ${fp(t.configuration,q.version)}, which doesn't satisfy what ${Vr(t.configuration,q.requester)} ${A}`)}break}K.length>0&&(l==null||l.reportWarning(z.UNNAMED,`Some peer dependencies are incorrectly met; run ${Ve(t.configuration,"yarn explain peer-requirements ",Le.CODE)} for details, where ${Ve(t.configuration,"",Le.CODE)} is the six-letter p-prefixed code`))}var Po;(function(l){l.VERSION="version",l.COMMAND_NAME="commandName",l.PLUGIN_NAME="pluginName",l.INSTALL_COUNT="installCount",l.PROJECT_COUNT="projectCount",l.WORKSPACE_COUNT="workspaceCount",l.DEPENDENCY_COUNT="dependencyCount",l.EXTENSION="packageExtension"})(Po||(Po={}));var Rd=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let i=this.getRegistryPath();this.isNew=!T.existsSync(i),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue(Po.VERSION,e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue(Po.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(Po.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(Po.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(Po.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(Po.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(Po.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(Po.DEPENDENCY_COUNT,String(e))}reportValue(e,r){Pl(this.values,e).add(r)}reportEnumerator(e,r){Pl(this.enumerators,e).add(zi(r))}reportHit(e,r="*"){let i=pu(this.hits,e),n=na(i,r,()=>0);i.set(r,n+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return v.join(e,"telemetry.json")}sendReport(e){var u,g,f;let r=this.getRegistryPath(),i;try{i=T.readJsonSync(r)}catch{i={}}let n=Date.now(),s=this.configuration.get("telemetryInterval")*24*60*60*1e3,a=((u=i.lastUpdate)!=null?u:n+s+Math.floor(s*Math.random()))+s;if(a>n&&i.lastUpdate!=null)return;try{T.mkdirSync(v.dirname(r),{recursive:!0}),T.writeJsonSync(r,{lastUpdate:n})}catch{return}if(a>n||!i.blocks)return;let l=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,c=h=>iP(l,h,{configuration:this.configuration}).catch(()=>{});for(let[h,p]of Object.entries((g=i.blocks)!=null?g:{})){if(Object.keys(p).length===0)continue;let d=p;d.userId=h,d.reportType="primary";for(let B of Object.keys((f=d.enumerators)!=null?f:{}))d.enumerators[B]=d.enumerators[B].length;c(d);let m=new Map,E=20;for(let[B,b]of Object.entries(d.values))b.length>0&&m.set(B,b.slice(0,E));for(;m.size>0;){let B={};B.userId=h,B.reportType="secondary",B.metrics={};for(let[b,R]of m)B.metrics[b]=R.shift(),R.length===0&&m.delete(b);c(B)}}}applyChanges(){var o,a,l,c,u,g,f,h,p;let e=this.getRegistryPath(),r;try{r=T.readJsonSync(e)}catch{r={}}let i=(o=this.configuration.get("telemetryUserId"))!=null?o:"*",n=r.blocks=(a=r.blocks)!=null?a:{},s=n[i]=(l=n[i])!=null?l:{};for(let d of this.hits.keys()){let m=s.hits=(c=s.hits)!=null?c:{},E=m[d]=(u=m[d])!=null?u:{};for(let[B,b]of this.hits.get(d))E[B]=((g=E[B])!=null?g:0)+b}for(let d of["values","enumerators"])for(let m of this[d].keys()){let E=s[d]=(f=s[d])!=null?f:{};E[m]=[...new Set([...(h=E[m])!=null?h:[],...(p=this[d].get(m))!=null?p:[]])]}T.mkdirSync(v.dirname(e),{recursive:!0}),T.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}};var fF=ie(require("child_process")),R$=ie(ml());var hF=ie(require("fs"));var Yg=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);function cUe(t){let e=M.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,fF.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})}):(0,fF.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:_(P({},process.env),{YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"})})}async function i0({binaryVersion:t,pluginConfiguration:e}){async function r(){let n=new oo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await i(n)}catch(s){process.stdout.write(n.error(s)),process.exitCode=1}}async function i(n){var p,d,m,E,B;let s=process.versions.node,o=">=12 <14 || 14.2 - 14.9 || >14.10.0";if(process.env.YARN_IGNORE_NODE!=="1"&&!qt.satisfiesWithPrereleases(s,o))throw new me(`This tool requires a Node version compatible with ${o} (got ${s}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let a=await fe.find(M.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),l=a.get("yarnPath"),c=a.get("ignorePath"),u=a.get("ignoreCwd"),g=M.toPortablePath(M.resolve(process.argv[1])),f=b=>T.readFilePromise(b).catch(()=>Buffer.of());if(!c&&!u&&await(async()=>l===g||Buffer.compare(...await Promise.all([f(l),f(g)]))===0)()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await i(n);return}else if(l!==null&&!c)if(!T.existsSync(l))process.stdout.write(n.error(new Error(`The "yarn-path" option has been set (in ${a.sources.get("yarnPath")}), but the specified location doesn't exist (${l}).`))),process.exitCode=1;else try{cUe(l)}catch(b){process.exitCode=b.code||1}else{c&&delete process.env.YARN_IGNORE_PATH,a.get("enableTelemetry")&&!R$.isCI&&process.stdout.isTTY&&(fe.telemetry=new Rd(a,"puba9cdc10ec5790a2cf4969dd413a47270")),(p=fe.telemetry)==null||p.reportVersion(t);for(let[L,K]of a.plugins.entries()){Yg.has((m=(d=L.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:d[1])!=null?m:"")&&((E=fe.telemetry)==null||E.reportPluginName(L));for(let J of K.commands||[])n.register(J)}let R=n.process(process.argv.slice(2));R.help||(B=fe.telemetry)==null||B.reportCommandName(R.path.join(" "));let H=R.cwd;if(typeof H!="undefined"&&!u){let L=(0,hF.realpathSync)(process.cwd()),K=(0,hF.realpathSync)(H);if(L!==K){process.chdir(H),await r();return}}await n.runExit(R,{cwd:M.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}}return r().catch(n=>{process.stdout.write(n.stack||n.message),process.exitCode=1}).finally(()=>T.rmtempPromise())}function F$(t){t.Command.Path=(...e)=>r=>{r.paths=r.paths||[],r.paths.push(e)};for(let e of["Array","Boolean","String","Proxy","Rest","Counter"])t.Command[e]=(...r)=>(i,n)=>{let s=t.Option[e](...r);Object.defineProperty(i,`__${n}`,{configurable:!1,enumerable:!0,get(){return s},set(o){this[n]=o}})};return t}var iC={};it(iC,{BaseCommand:()=>Be,WorkspaceRequiredError:()=>rt,getDynamicLibs:()=>Wie,getPluginConfiguration:()=>F0,main:()=>i0,openWorkspace:()=>rf,pluginCommands:()=>Yg});var Be=class extends ye{constructor(){super(...arguments);this.cwd=Y.String("--cwd",{hidden:!0})}};var rt=class extends me{constructor(e,r){let i=v.relative(e,r),n=v.join(e,Ze.fileName);super(`This command can only be run from within a workspace of your project (${i} isn't a workspace of ${n}).`)}};var dJe=ie(Or());Ss();var CJe=ie(gN()),Wie=()=>new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",vh],["semver",dJe],["typanion",lu],["yup",CJe]]);async function rf(t,e){let{project:r,workspace:i}=await Ke.find(t,e);if(!i)throw new rt(r.cwd,e);return i}var x_e=ie(Or());Ss();var k_e=ie(gN());var hL={};it(hL,{dedupeUtils:()=>zN,default:()=>Q4e,suggestUtils:()=>LN});var WAe=ie(ml());var roe=ie(aC());Ss();var LN={};it(LN,{Modifier:()=>Lo,Strategy:()=>Fr,Target:()=>vr,WorkspaceModifier:()=>af,applyModifier:()=>Zse,extractDescriptorFromPath:()=>ON,extractRangeModifier:()=>Xse,fetchDescriptorFrom:()=>MN,findProjectDescriptors:()=>toe,getModifier:()=>AC,getSuggestedDescriptors:()=>lC,makeWorkspaceDescriptor:()=>eoe,toWorkspaceModifier:()=>$se});var TN=ie(Or()),L3e="workspace:",vr;(function(i){i.REGULAR="dependencies",i.DEVELOPMENT="devDependencies",i.PEER="peerDependencies"})(vr||(vr={}));var Lo;(function(i){i.CARET="^",i.TILDE="~",i.EXACT=""})(Lo||(Lo={}));var af;(function(i){i.CARET="^",i.TILDE="~",i.EXACT="*"})(af||(af={}));var Fr;(function(s){s.KEEP="keep",s.REUSE="reuse",s.PROJECT="project",s.LATEST="latest",s.CACHE="cache"})(Fr||(Fr={}));function AC(t,e){return t.exact?Lo.EXACT:t.caret?Lo.CARET:t.tilde?Lo.TILDE:e.configuration.get("defaultSemverRangePrefix")}var T3e=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Xse(t,{project:e}){let r=t.match(T3e);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function Zse(t,e){let{protocol:r,source:i,params:n,selector:s}=S.parseRange(t.range);return TN.default.valid(s)&&(s=`${e}${t.range}`),S.makeDescriptor(t,S.makeRange({protocol:r,source:i,params:n,selector:s}))}function $se(t){switch(t){case Lo.CARET:return af.CARET;case Lo.TILDE:return af.TILDE;case Lo.EXACT:return af.EXACT;default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function eoe(t,e){return S.makeDescriptor(t.anchoredDescriptor,`${L3e}${$se(e)}`)}async function toe(t,{project:e,target:r}){let i=new Map,n=s=>{let o=i.get(s.descriptorHash);return o||i.set(s.descriptorHash,o={descriptor:s,locators:[]}),o};for(let s of e.workspaces)if(r===vr.PEER){let o=s.manifest.peerDependencies.get(t.identHash);o!==void 0&&n(o).locators.push(s.locator)}else{let o=s.manifest.dependencies.get(t.identHash),a=s.manifest.devDependencies.get(t.identHash);r===vr.DEVELOPMENT?a!==void 0?n(a).locators.push(s.locator):o!==void 0&&n(o).locators.push(s.locator):o!==void 0?n(o).locators.push(s.locator):a!==void 0&&n(a).locators.push(s.locator)}return i}async function ON(t,{cwd:e,workspace:r}){return await M3e(async i=>{v.isAbsolute(t)||(t=v.relative(r.cwd,v.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:n}=r,s=await MN(S.makeIdent(null,"archive"),t,{project:r.project,cache:i,workspace:r});if(!s)throw new Error("Assertion failed: The descriptor should have been found");let o=new ei,a=n.configuration.makeResolver(),l=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:i,fetcher:l,report:o,resolver:a},u=a.bindDescriptor(s,r.anchoredLocator,c),g=S.convertDescriptorToLocator(u),f=await l.fetch(g,c),h=await Ze.find(f.prefixPath,{baseFs:f.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return S.makeDescriptor(h.name,t)})}async function lC(t,{project:e,workspace:r,cache:i,target:n,modifier:s,strategies:o,maxResults:a=Infinity}){if(!(a>=0))throw new Error(`Invalid maxResults (${a})`);if(t.range!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${S.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let l=typeof r!="undefined"&&r!==null&&r.manifest[n].get(t.identHash)||null,c=[],u=[],g=async f=>{try{await f()}catch(h){u.push(h)}};for(let f of o){if(c.length>=a)break;switch(f){case Fr.KEEP:await g(async()=>{l&&c.push({descriptor:l,name:`Keep ${S.prettyDescriptor(e.configuration,l)}`,reason:"(no changes)"})});break;case Fr.REUSE:await g(async()=>{for(let{descriptor:h,locators:p}of(await toe(t,{project:e,target:n})).values()){if(p.length===1&&p[0].locatorHash===r.anchoredLocator.locatorHash&&o.includes(Fr.KEEP))continue;let d=`(originally used by ${S.prettyLocator(e.configuration,p[0])}`;d+=p.length>1?` and ${p.length-1} other${p.length>2?"s":""})`:")",c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:d})}});break;case Fr.CACHE:await g(async()=>{for(let h of e.storedDescriptors.values())h.identHash===t.identHash&&c.push({descriptor:h,name:`Reuse ${S.prettyDescriptor(e.configuration,h)}`,reason:"(already used somewhere in the lockfile)"})});break;case Fr.PROJECT:await g(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let h=e.tryWorkspaceByIdent(t);if(h===null)return;let p=eoe(h,s);c.push({descriptor:p,name:`Attach ${S.prettyDescriptor(e.configuration,p)}`,reason:`(local workspace at ${ue.pretty(e.configuration,h.relativeCwd,ue.Type.PATH)})`})});break;case Fr.LATEST:await g(async()=>{if(t.range!=="unknown")c.push({descriptor:t,name:`Use ${S.prettyRange(e.configuration,t.range)}`,reason:"(explicit range requested)"});else if(n===vr.PEER)c.push({descriptor:S.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))c.push({descriptor:null,name:"Resolve from latest",reason:ue.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let h=await MN(t,"latest",{project:e,cache:i,workspace:r,preserveModifier:!1});h&&(h=Zse(h,s),c.push({descriptor:h,name:`Use ${S.prettyDescriptor(e.configuration,h)}`,reason:"(resolved from latest)"}))}});break}}return{suggestions:c.slice(0,a),rejections:u.slice(0,a)}}async function MN(t,e,{project:r,cache:i,workspace:n,preserveModifier:s=!0}){let o=S.makeDescriptor(t,e),a=new ei,l=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),u={project:r,fetcher:l,cache:i,checksums:r.storedChecksums,report:a,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},g=_(P({},u),{resolver:c,fetchOptions:u}),f=c.bindDescriptor(o,n.anchoredLocator,g),h=await c.getCandidates(f,new Map,g);if(h.length===0)return null;let p=h[0],{protocol:d,source:m,params:E,selector:B}=S.parseRange(S.convertToManifestRange(p.reference));if(d===r.configuration.get("defaultProtocol")&&(d=null),TN.default.valid(B)&&s!==!1){let b=typeof s=="string"?s:o.range;B=Xse(b,{project:r})+B}return S.makeDescriptor(p,S.makeRange({protocol:d,source:m,params:E,selector:B}))}async function M3e(t){return await T.mktempPromise(async e=>{let r=fe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Qt(e,{configuration:r,check:!1,immutable:!1}))})}var cC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=Y.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=Y.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=Y.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=Y.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=Y.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=Y.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.silent=Y.Boolean("--silent",{hidden:!0});this.packages=Y.Rest()}async execute(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=[...s?[Fr.REUSE]:[],Fr.PROJECT,...this.cached?[Fr.CACHE]:[],Fr.LATEST],l=s?Infinity:1,c=await Promise.all(this.packages.map(async m=>{let E=m.match(/^\.{0,2}\//)?await ON(m,{cwd:this.context.cwd,workspace:i}):S.parseDescriptor(m),B=O3e(i,E,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional}),b=await lC(E,{project:r,workspace:i,cache:n,target:B,modifier:o,strategies:a,maxResults:l});return[E,b,B]})),u=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[E,{suggestions:B,rejections:b}]of c)if(B.filter(H=>H.descriptor!==null).length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),m.reportSeparator(),m.reportExceptionOnce(H)}});if(u.hasErrors())return u.exitCode();let g=!1,f=[],h=[];for(let[,{suggestions:m},E]of c){let B,b=m.filter(K=>K.descriptor!==null),R=b[0].descriptor,H=b.every(K=>S.areDescriptorsEqual(K.descriptor,R));b.length===1||H?B=R:(g=!0,{answer:B}=await(0,roe.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:m.map(({descriptor:K,name:J,reason:ne})=>K?{name:J,hint:ne,descriptor:K}:{name:J,hint:ne,disabled:!0}),onCancel:()=>process.exit(130),result(K){return this.find(K,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let L=i.manifest[E].get(B.identHash);(typeof L=="undefined"||L.descriptorHash!==B.descriptorHash)&&(i.manifest[E].set(B.identHash,B),this.optional&&(E==="dependencies"?i.manifest.ensureDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0:E==="peerDependencies"&&(i.manifest.ensurePeerDependencyMeta(_(P({},B),{range:"unknown"})).optional=!0)),typeof L=="undefined"?f.push([i,E,B,a]):h.push([i,E,L,B]))}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyAddition,f),await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),g&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};cC.paths=[["add"]],cC.usage=ye.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});var ioe=cC;function O3e(t,e,{dev:r,peer:i,preferDev:n,optional:s}){let o=t.manifest[vr.REGULAR].has(e.identHash),a=t.manifest[vr.DEVELOPMENT].has(e.identHash),l=t.manifest[vr.PEER].has(e.identHash);if((r||i)&&o)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(s&&a)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(s&&!i&&l)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||n)&&s)throw new me(`Package "${S.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);return i?vr.PEER:r||n?vr.DEVELOPMENT:o?vr.REGULAR:a?vr.DEVELOPMENT:vr.REGULAR}var uC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);if(await r.restoreInstallState(),this.name){let o=(await Kt.getPackageAccessibleBinaries(i,{project:r})).get(this.name);if(!o)throw new me(`Couldn't find a binary named "${this.name}" for package "${S.prettyLocator(e,i)}"`);let[,a]=o;return this.context.stdout.write(`${a} -`),0}return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async s=>{let o=await Kt.getPackageAccessibleBinaries(i,{project:r}),l=Array.from(o.keys()).reduce((c,u)=>Math.max(c,u.length),0);for(let[c,[u,g]]of o)s.reportJson({name:c,source:S.stringifyIdent(u),path:g});if(this.verbose)for(let[c,[u]]of o)s.reportInfo(null,`${c.padEnd(l," ")} ${S.prettyLocator(e,u)}`);else for(let c of o.keys())s.reportInfo(null,c)})).exitCode()}};uC.paths=[["bin"]],uC.usage=ye.Usage({description:"get the path to a binary script",details:` - When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. - - When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. - `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});var noe=uC;var gC=class extends Be{constructor(){super(...arguments);this.mirror=Y.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=Y.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await Qt.find(e);return(await Fe.start({configuration:e,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&r.mirrorCwd!==null,s=!this.mirror;n&&(await T.removePromise(r.mirrorCwd),await e.triggerHook(o=>o.cleanGlobalArtifacts,e)),s&&await T.removePromise(r.cwd)})).exitCode()}};gC.paths=[["cache","clean"],["cache","clear"]],gC.usage=ye.Usage({description:"remove the shared cache files",details:` - This command will remove all the files from the cache. - `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});var soe=gC;var ooe=ie(p0()),KN=ie(require("util")),fC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=Y.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=this.name.replace(/[.[].*$/,""),i=this.name.replace(/^[^.[]*/,"");if(typeof e.settings.get(r)=="undefined")throw new me(`Couldn't find a configuration settings named "${r}"`);let s=e.getSpecial(r,{hideSecrets:!this.unsafe,getNativePaths:!0}),o=de.convertMapsToIndexableObjects(s),a=i?(0,ooe.default)(o,i):o,l=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async c=>{c.reportJson(a)});if(!this.json){if(typeof a=="string")return this.context.stdout.write(`${a} -`),l.exitCode();KN.inspect.styles.name="cyan",this.context.stdout.write(`${(0,KN.inspect)(a,{depth:Infinity,colors:e.get("enableColors"),compact:!1})} -`)}return l.exitCode()}};fC.paths=[["config","get"]],fC.usage=ye.Usage({description:"read a configuration settings",details:` - This command will print a configuration setting. - - Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. - `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});var aoe=fC;var Iae=ie(qN()),Eae=ie(p0()),yae=ie(mae()),JN=ie(require("util")),pC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String();this.value=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);if(i==="enableStrictSettings")throw new me("This setting only affects the file it's in, and thus cannot be set from the CLI");let o=this.json?JSON.parse(this.value):this.value;await(this.home?h=>fe.updateHomeConfiguration(h):h=>fe.updateConfiguration(r(),h))(h=>{if(n){let p=(0,Iae.default)(h);return(0,yae.default)(p,this.name,o),p}else return _(P({},h),{[i]:o})});let c=(await fe.find(this.context.cwd,this.context.plugins)).getSpecial(i,{hideSecrets:!0,getNativePaths:!0}),u=de.convertMapsToIndexableObjects(c),g=n?(0,Eae.default)(u,n):u;return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async h=>{JN.inspect.styles.name="cyan",h.reportInfo(z.UNNAMED,`Successfully set ${this.name} to ${(0,JN.inspect)(g,{depth:Infinity,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}};pC.paths=[["config","set"]],pC.usage=ye.Usage({description:"change a configuration settings",details:` - This command will set a configuration setting. - - When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). - - When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. - `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});var wae=pC;var Dae=ie(qN()),Rae=ie(Ld()),Fae=ie(Pae()),dC=class extends Be{constructor(){super(...arguments);this.home=Y.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=()=>{if(!e.projectCwd)throw new me("This command must be run from within a project folder");return e.projectCwd},i=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof e.settings.get(i)=="undefined")throw new me(`Couldn't find a configuration settings named "${i}"`);let o=this.home?l=>fe.updateHomeConfiguration(l):l=>fe.updateConfiguration(r(),l);return(await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async l=>{let c=!1;await o(u=>{if(!(0,Rae.default)(u,this.name))return l.reportWarning(z.UNNAMED,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),c=!0,u;let g=n?(0,Dae.default)(u):P({},u);return(0,Fae.default)(g,this.name),g}),c||l.reportInfo(z.UNNAMED,`Successfully unset ${this.name}`)})).exitCode()}};dC.paths=[["config","unset"]],dC.usage=ye.Usage({description:"unset a configuration setting",details:` - This command will unset a configuration setting. - `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});var Nae=dC;var WN=ie(require("util")),CC=class extends Be{constructor(){super(...arguments);this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=Y.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{if(e.invalid.size>0&&!this.json){for(let[n,s]of e.invalid)i.reportError(z.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${n}" in ${s}`);i.reportSeparator()}if(this.json){let n=de.sortMap(e.settings.keys(),s=>s);for(let s of n){let o=e.settings.get(s),a=e.getSpecial(s,{hideSecrets:!0,getNativePaths:!0}),l=e.sources.get(s);this.verbose?i.reportJson({key:s,effective:a,source:l}):i.reportJson(P({key:s,effective:a,source:l},o))}}else{let n=de.sortMap(e.settings.keys(),a=>a),s=n.reduce((a,l)=>Math.max(a,l.length),0),o={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let a=n.map(c=>{let u=e.settings.get(c);if(!u)throw new Error(`Assertion failed: This settings ("${c}") should have been registered`);let g=this.why?e.sources.get(c)||"":u.description;return[c,g]}),l=a.reduce((c,[,u])=>Math.max(c,u.length),0);for(let[c,u]of a)i.reportInfo(null,`${c.padEnd(s," ")} ${u.padEnd(l," ")} ${(0,WN.inspect)(e.getSpecial(c,{hideSecrets:!0,getNativePaths:!0}),o)}`)}else for(let a of n)i.reportInfo(null,`${a.padEnd(s," ")} ${(0,WN.inspect)(e.getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),o)}`)}})).exitCode()}};CC.paths=[["config"]],CC.usage=ye.Usage({description:"display the current configuration",details:` - This command prints the current active configuration settings. - `,examples:[["Print the active configuration settings","$0 config"]]});var Lae=CC;Ss();var zN={};it(zN,{Strategy:()=>Oc,acceptedStrategies:()=>Hze,dedupe:()=>VN});var Tae=ie(Nn()),Oc;(function(e){e.HIGHEST="highest"})(Oc||(Oc={}));var Hze=new Set(Object.values(Oc)),Gze={highest:async(t,e,{resolver:r,fetcher:i,resolveOptions:n,fetchOptions:s})=>{let o=new Map;for(let[a,l]of t.storedResolutions){let c=t.storedDescriptors.get(a);if(typeof c=="undefined")throw new Error(`Assertion failed: The descriptor (${a}) should have been registered`);de.getSetWithDefault(o,c.identHash).add(l)}return Array.from(t.storedDescriptors.values(),async a=>{if(e.length&&!Tae.default.isMatch(S.stringifyIdent(a),e))return null;let l=t.storedResolutions.get(a.descriptorHash);if(typeof l=="undefined")throw new Error(`Assertion failed: The resolution (${a.descriptorHash}) should have been registered`);let c=t.originalPackages.get(l);if(typeof c=="undefined"||!r.shouldPersistResolution(c,n))return null;let u=o.get(a.identHash);if(typeof u=="undefined")throw new Error(`Assertion failed: The resolutions (${a.identHash}) should have been registered`);if(u.size===1)return null;let g=[...u].map(m=>{let E=t.originalPackages.get(m);if(typeof E=="undefined")throw new Error(`Assertion failed: The package (${m}) should have been registered`);return E.reference}),f=await r.getSatisfying(a,g,n),h=f==null?void 0:f[0];if(typeof h=="undefined")return null;let p=h.locatorHash,d=t.originalPackages.get(p);if(typeof d=="undefined")throw new Error(`Assertion failed: The package (${p}) should have been registered`);return p===l?null:{descriptor:a,currentPackage:c,updatedPackage:d}})}};async function VN(t,{strategy:e,patterns:r,cache:i,report:n}){let{configuration:s}=t,o=new ei,a=s.makeResolver(),l=s.makeFetcher(),c={cache:i,checksums:t.storedChecksums,fetcher:l,project:t,report:o,skipIntegrityCheck:!0,cacheOptions:{skipIntegrityCheck:!0}},u={project:t,resolver:a,report:o,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{let f=await Gze[e](t,r,{resolver:a,resolveOptions:u,fetcher:l,fetchOptions:c}),h=Xi.progressViaCounter(f.length);n.reportProgress(h);let p=0;await Promise.all(f.map(E=>E.then(B=>{if(B===null)return;p++;let{descriptor:b,currentPackage:R,updatedPackage:H}=B;n.reportInfo(z.UNNAMED,`${S.prettyDescriptor(s,b)} can be deduped from ${S.prettyLocator(s,R)} to ${S.prettyLocator(s,H)}`),n.reportJson({descriptor:S.stringifyDescriptor(b),currentResolution:S.stringifyLocator(R),updatedResolution:S.stringifyLocator(H)}),t.storedResolutions.set(b.descriptorHash,H.locatorHash)}).finally(()=>h.tick())));let d;switch(p){case 0:d="No packages";break;case 1:d="One package";break;default:d=`${p} packages`}let m=ue.pretty(s,e,ue.Type.CODE);return n.reportInfo(z.UNNAMED,`${d} can be deduped using the ${m} strategy`),p})}var mC=class extends Be{constructor(){super(...arguments);this.strategy=Y.String("-s,--strategy",Oc.HIGHEST,{description:"The strategy to use when deduping dependencies",validator:Yi(Oc)});this.check=Y.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=await Qt.find(e);await r.restoreInstallState({restoreResolutions:!1});let n=0,s=await Fe.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async o=>{n=await VN(r,{strategy:this.strategy,patterns:this.patterns,cache:i,report:o})});return s.hasErrors()?s.exitCode():this.check?n?1:0:(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async a=>{await r.install({cache:i,report:a,mode:this.mode})})).exitCode()}};mC.paths=[["dedupe"]],mC.usage=ye.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});var Mae=mC;var Y0=class extends Be{async execute(){let{plugins:e}=await fe.find(this.context.cwd,this.context.plugins),r=[];for(let o of e){let{commands:a}=o[1];if(a){let c=oo.from(a).definitions();r.push([o[0],c])}}let i=this.cli.definitions(),n=(o,a)=>o.split(" ").slice(1).join()===a.split(" ").slice(1).join(),s=Kae()["@yarnpkg/builder"].bundles.standard;for(let o of r){let a=o[1];for(let l of a)i.find(c=>n(c.path,l.path)).plugin={name:o[0],isDefault:s.includes(o[0])}}this.context.stdout.write(`${JSON.stringify(i,null,2)} -`)}};Y0.paths=[["--clipanion=definitions"]];var Uae=Y0;var q0=class extends Be{async execute(){this.context.stdout.write(this.cli.usage(null))}};q0.paths=[["help"],["--help"],["-h"]];var Hae=q0;var _N=class extends Be{constructor(){super(...arguments);this.leadingArgument=Y.String();this.args=Y.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!S.tryParseIdent(this.leadingArgument)){let e=v.resolve(this.context.cwd,M.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}},Gae=_N;var J0=class extends Be{async execute(){this.context.stdout.write(`${Zr||""} -`)}};J0.paths=[["-v"],["--version"]];var jae=J0;var IC=class extends Be{constructor(){super(...arguments);this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,locator:i}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState(),await Kt.executePackageShellcode(i,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:r})}};IC.paths=[["exec"]],IC.usage=ye.Usage({description:"execute a shell script",details:` - This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. - - It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});var Yae=IC;Ss();var EC=class extends Be{constructor(){super(...arguments);this.hash=Y.String({required:!1,validator:fv(gv(),[hv(/^p[0-9a-f]{5}$/)])})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return await r.restoreInstallState({restoreResolutions:!1}),await r.applyLightResolution(),typeof this.hash!="undefined"?await jze(this.hash,r,{stdout:this.context.stdout}):(await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async n=>{var o;let s=[([,a])=>S.stringifyLocator(r.storedPackages.get(a.subject)),([,a])=>S.stringifyIdent(a.requested)];for(let[a,l]of de.sortMap(r.peerRequirements,s)){let c=r.storedPackages.get(l.subject);if(typeof c=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let u=r.storedPackages.get(l.rootRequester);if(typeof u=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let g=(o=c.dependencies.get(l.requested.identHash))!=null?o:null,f=ue.pretty(e,a,ue.Type.CODE),h=S.prettyLocator(e,c),p=S.prettyIdent(e,l.requested),d=S.prettyIdent(e,u),m=l.allRequesters.length-1,E=`descendant${m===1?"":"s"}`,B=m>0?` and ${m} ${E}`:"",b=g!==null?"provides":"doesn't provide";n.reportInfo(null,`${f} \u2192 ${h} ${b} ${p} to ${d}${B}`)}})).exitCode()}};EC.paths=[["explain","peer-requirements"]],EC.usage=ye.Usage({description:"explain a set of peer requirements",details:` - A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. - - When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. - - When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. - - **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). - `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});var qae=EC;async function jze(t,e,r){let{configuration:i}=e,n=e.peerRequirements.get(t);if(typeof n=="undefined")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Fe.start({configuration:i,stdout:r.stdout,includeFooter:!1},async o=>{var E,B;let a=e.storedPackages.get(n.subject);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the subject package to have been registered");let l=e.storedPackages.get(n.rootRequester);if(typeof l=="undefined")throw new Error("Assertion failed: Expected the root package to have been registered");let c=(E=a.dependencies.get(n.requested.identHash))!=null?E:null,u=c!==null?e.storedResolutions.get(c.descriptorHash):null;if(typeof u=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let g=u!==null?e.storedPackages.get(u):null;if(typeof g=="undefined")throw new Error("Assertion failed: Expected the provided package to have been registered");let f=[...n.allRequesters.values()].map(b=>{let R=e.storedPackages.get(b);if(typeof R=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let H=S.devirtualizeLocator(R),L=e.storedPackages.get(H.locatorHash);if(typeof L=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let K=L.peerDependencies.get(n.requested.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:R,peerDependency:K}});if(g!==null){let b=f.every(({peerDependency:R})=>qt.satisfiesWithPrereleases(g.version,R.range));o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} provides ${S.prettyLocator(i,g)} with version ${S.prettyReference(i,(B=g.version)!=null?B:"")}, which ${b?"satisfies":"doesn't satisfy"} the following requirements:`)}else o.reportInfo(z.UNNAMED,`${S.prettyLocator(i,a)} doesn't provide ${S.prettyIdent(i,n.requested)}, breaking the following requirements:`);o.reportSeparator();let h=ue.mark(i),p=[];for(let{pkg:b,peerDependency:R}of de.sortMap(f,H=>S.stringifyLocator(H.pkg))){let L=(g!==null?qt.satisfiesWithPrereleases(g.version,R.range):!1)?h.Check:h.Cross;p.push({stringifiedLocator:S.stringifyLocator(b),prettyLocator:S.prettyLocator(i,b),prettyRange:S.prettyRange(i,R.range),mark:L})}let d=Math.max(...p.map(({stringifiedLocator:b})=>b.length)),m=Math.max(...p.map(({prettyRange:b})=>b.length));for(let{stringifiedLocator:b,prettyLocator:R,prettyRange:H,mark:L}of de.sortMap(p,({stringifiedLocator:K})=>K))o.reportInfo(null,`${R.padEnd(d+(R.length-b.length)," ")} \u2192 ${H.padEnd(m," ")} ${L}`);p.length>1&&(o.reportSeparator(),o.reportInfo(z.UNNAMED,`Note: these requirements start with ${S.prettyLocator(e.configuration,l)}`))})).exitCode()}var Jae=ie(Nn()),yC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=Y.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=Y.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=Y.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=Y.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=Y.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=Y.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i&&!this.all)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=new Set(this.extra);this.cache&&s.add("cache"),this.dependents&&s.add("dependents"),this.manifest&&s.add("manifest");let o=(b,{recursive:R})=>{let H=b.anchoredLocator.locatorHash,L=new Map,K=[H];for(;K.length>0;){let J=K.shift();if(L.has(J))continue;let ne=r.storedPackages.get(J);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the package to be registered");if(L.set(J,ne),S.isVirtualLocator(ne)&&K.push(S.devirtualizeLocator(ne).locatorHash),!(!R&&J!==H))for(let q of ne.dependencies.values()){let A=r.storedResolutions.get(q.descriptorHash);if(typeof A=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");K.push(A)}}return L.values()},a=({recursive:b})=>{let R=new Map;for(let H of r.workspaces)for(let L of o(H,{recursive:b}))R.set(L.locatorHash,L);return R.values()},l=({all:b,recursive:R})=>b&&R?r.storedPackages.values():b?a({recursive:R}):o(i,{recursive:R}),c=({all:b,recursive:R})=>{let H=l({all:b,recursive:R}),L=this.patterns.map(ne=>{let q=S.parseLocator(ne),A=Jae.default.makeRe(S.stringifyIdent(q)),V=S.isVirtualLocator(q),W=V?S.devirtualizeLocator(q):q;return X=>{let F=S.stringifyIdent(X);if(!A.test(F))return!1;if(q.reference==="unknown")return!0;let D=S.isVirtualLocator(X),he=D?S.devirtualizeLocator(X):X;return!(V&&D&&q.reference!==X.reference||W.reference!==he.reference)}}),K=de.sortMap([...H],ne=>S.stringifyLocator(ne));return{selection:K.filter(ne=>L.length===0||L.some(q=>q(ne))),sortedLookup:K}},{selection:u,sortedLookup:g}=c({all:this.all,recursive:this.recursive});if(u.length===0)throw new me("No package matched your request");let f=new Map;if(this.dependents)for(let b of g)for(let R of b.dependencies.values()){let H=r.storedResolutions.get(R.descriptorHash);if(typeof H=="undefined")throw new Error("Assertion failed: Expected the resolution to be registered");de.getArrayWithDefault(f,H).push(b)}let h=new Map;for(let b of g){if(!S.isVirtualLocator(b))continue;let R=S.devirtualizeLocator(b);de.getArrayWithDefault(h,R.locatorHash).push(b)}let p={},d={children:p},m=e.makeFetcher(),E={project:r,fetcher:m,cache:n,checksums:r.storedChecksums,report:new ei,cacheOptions:{skipIntegrityCheck:!0},skipIntegrityCheck:!0},B=[async(b,R,H)=>{var J,ne;if(!R.has("manifest"))return;let L=await m.fetch(b,E),K;try{K=await Ze.find(L.prefixPath,{baseFs:L.packageFs})}finally{(J=L.releaseFs)==null||J.call(L)}H("Manifest",{License:ue.tuple(ue.Type.NO_HINT,K.license),Homepage:ue.tuple(ue.Type.URL,(ne=K.raw.homepage)!=null?ne:null)})},async(b,R,H)=>{var A;if(!R.has("cache"))return;let L={mockedPackages:r.disabledLocators,unstablePackages:r.conditionalLocators},K=(A=r.storedChecksums.get(b.locatorHash))!=null?A:null,J=n.getLocatorPath(b,K,L),ne;if(J!==null)try{ne=T.statSync(J)}catch{}let q=typeof ne!="undefined"?[ne.size,ue.Type.SIZE]:void 0;H("Cache",{Checksum:ue.tuple(ue.Type.NO_HINT,K),Path:ue.tuple(ue.Type.PATH,J),Size:q})}];for(let b of u){let R=S.isVirtualLocator(b);if(!this.virtuals&&R)continue;let H={},L={value:[b,ue.Type.LOCATOR],children:H};if(p[S.stringifyLocator(b)]=L,this.nameOnly){delete L.children;continue}let K=h.get(b.locatorHash);typeof K!="undefined"&&(H.Instances={label:"Instances",value:ue.tuple(ue.Type.NUMBER,K.length)}),H.Version={label:"Version",value:ue.tuple(ue.Type.NO_HINT,b.version)};let J=(q,A)=>{let V={};if(H[q]=V,Array.isArray(A))V.children=A.map(W=>({value:W}));else{let W={};V.children=W;for(let[X,F]of Object.entries(A))typeof F!="undefined"&&(W[X]={label:X,value:F})}};if(!R){for(let q of B)await q(b,s,J);await e.triggerHook(q=>q.fetchPackageInfo,b,s,J)}b.bin.size>0&&!R&&J("Exported Binaries",[...b.bin.keys()].map(q=>ue.tuple(ue.Type.PATH,q)));let ne=f.get(b.locatorHash);typeof ne!="undefined"&&ne.length>0&&J("Dependents",ne.map(q=>ue.tuple(ue.Type.LOCATOR,q))),b.dependencies.size>0&&!R&&J("Dependencies",[...b.dependencies.values()].map(q=>{var W;let A=r.storedResolutions.get(q.descriptorHash),V=typeof A!="undefined"&&(W=r.storedPackages.get(A))!=null?W:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:V})})),b.peerDependencies.size>0&&R&&J("Peer dependencies",[...b.peerDependencies.values()].map(q=>{var X,F;let A=b.dependencies.get(q.identHash),V=typeof A!="undefined"&&(X=r.storedResolutions.get(A.descriptorHash))!=null?X:null,W=V!==null&&(F=r.storedPackages.get(V))!=null?F:null;return ue.tuple(ue.Type.RESOLUTION,{descriptor:q,locator:W})}))}Hs.emitTree(d,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};yC.paths=[["info"]],yC.usage=ye.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});var Wae=yC;var W0=ie(ml());Ss();var wC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=Y.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=Y.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.checkCache=Y.Boolean("--check-cache",!1,{description:"Always refetch the packages and ensure that their checksums are consistent"});this.inlineBuilds=Y.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.cacheFolder=Y.String("--cache-folder",{hidden:!0});this.frozenLockfile=Y.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=Y.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=Y.Boolean("--non-interactive",{hidden:!0});this.preferOffline=Y.Boolean("--prefer-offline",{hidden:!0});this.production=Y.Boolean("--production",{hidden:!0});this.registry=Y.String("--registry",{hidden:!0});this.silent=Y.Boolean("--silent",{hidden:!0});this.networkTimeout=Y.String("--network-timeout",{hidden:!0})}async execute(){var c;let e=await fe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds!="undefined"&&e.useWithSource("",{enableInlineBuilds:this.inlineBuilds},e.startingCwd,{overwrite:!0});let r=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,i=async(u,{error:g})=>{let f=await Fe.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async h=>{g?h.reportError(z.DEPRECATED_CLI_SETTINGS,u):h.reportWarning(z.DEPRECATED_CLI_SETTINGS,u)});return f.hasErrors()?f.exitCode():null};if(typeof this.ignoreEngines!="undefined"){let u=await i("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.registry!="undefined"){let u=await i("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(u!==null)return u}if(typeof this.preferOffline!="undefined"){let u=await i("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!W0.default.VERCEL});if(u!==null)return u}if(typeof this.production!="undefined"){let u=await i("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(u!==null)return u}if(typeof this.nonInteractive!="undefined"){let u=await i("The --non-interactive option is deprecated",{error:!r});if(u!==null)return u}if(typeof this.frozenLockfile!="undefined"&&(await i("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder!="undefined"){let u=await i("The cache-folder option has been deprecated; use rc settings instead",{error:!W0.default.NETLIFY});if(u!==null)return u}let n=(c=this.immutable)!=null?c:e.get("enableImmutableInstalls");if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{await Yze(e,n)&&(g.reportInfo(z.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts \u{1F44D}"),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}if(e.projectCwd!==null&&typeof e.sources.get("nodeLinker")=="undefined"){let u=e.projectCwd,g;try{g=await T.readFilePromise(v.join(u,wt.lockfile),"utf8")}catch{}if(g==null?void 0:g.includes("yarn lockfile v1")){let f=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async h=>{h.reportInfo(z.AUTO_NM_SUCCESS,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),h.reportSeparator(),e.use("",{nodeLinker:"node-modules"},u,{overwrite:!0}),await fe.updateConfiguration(u,{nodeLinker:"node-modules"})});if(f.hasErrors())return f.exitCode()}}if(e.projectCwd!==null){let u=await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeFooter:!1},async g=>{var f;((f=fe.telemetry)==null?void 0:f.isNew)&&(g.reportInfo(z.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),g.reportInfo(z.TELEMETRY_NOTICE,`Run ${ue.pretty(e,"yarn config set --home enableTelemetry 0",ue.Type.CODE)} to disable`),g.reportSeparator())});if(u.hasErrors())return u.exitCode()}let{project:s,workspace:o}=await Ke.find(e,this.context.cwd),a=await Qt.find(e,{immutable:this.immutableCache,check:this.checkCache});if(!o)throw new rt(s.cwd,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout,includeLogs:!0},async u=>{await s.install({cache:a,report:u,immutable:n,mode:this.mode})})).exitCode()}};wC.paths=[["install"],ye.Default],wC.usage=ye.Usage({description:"install the project dependencies",details:` - This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics: - - - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ). - - - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of \`cacheFolder\` in \`yarn config\` to see where the cache files are stored). - - - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know). - - - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail. - - Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches. - - If the \`--immutable\` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the \`immutablePatterns\` configuration setting). For backward compatibility we offer an alias under the name of \`--frozen-lockfile\`, but it will be removed in a later release. - - If the \`--immutable-cache\` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed). - - If the \`--check-cache\` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them. - - If the \`--inline-builds\` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - `,examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var zae=wC,qze="|||||||",Jze=">>>>>>>",Wze="=======",Vae="<<<<<<<";async function Yze(t,e){if(!t.projectCwd)return!1;let r=v.join(t.projectCwd,t.get("lockfileFilename"));if(!await T.existsPromise(r))return!1;let i=await T.readFilePromise(r,"utf8");if(!i.includes(Vae))return!1;if(e)throw new nt(z.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");let[n,s]=zze(i),o,a;try{o=Ei(n),a=Ei(s)}catch(c){throw new nt(z.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}let l=P(P({},o),a);for(let[c,u]of Object.entries(l))typeof u=="string"&&delete l[c];return await T.changeFilePromise(r,Qa(l),{automaticNewlines:!0}),!0}function zze(t){let e=[[],[]],r=t.split(/\r?\n/g),i=!1;for(;r.length>0;){let n=r.shift();if(typeof n=="undefined")throw new Error("Assertion failed: Some lines should remain");if(n.startsWith(Vae)){for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s===Wze){i=!1;break}else if(i||s.startsWith(qze)){i=!0;continue}else e[0].push(s)}for(;r.length>0;){let s=r.shift();if(typeof s=="undefined")throw new Error("Assertion failed: Some lines should remain");if(s.startsWith(Jze))break;e[1].push(s)}}else e[0].push(n),e[1].push(n)}return[e[0].join(` -`),e[1].join(` -`)]}var BC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target project to the current one"});this.private=Y.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target project to the current one"});this.relative=Y.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destination=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=v.resolve(this.context.cwd,M.toPortablePath(this.destination)),o=await fe.find(s,this.context.plugins,{useRc:!1,strict:!1}),{project:a,workspace:l}=await Ke.find(o,s);if(r.cwd===a.cwd)throw new me("Invalid destination; Can't link the project to itself");if(!l)throw new rt(a.cwd,s);let c=r.topLevelWorkspace,u=[];if(this.all){for(let f of a.workspaces)f.manifest.name&&(!f.manifest.private||this.private)&&u.push(f);if(u.length===0)throw new me("No workspace found to be linked in the target project")}else{if(!l.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be linked");if(l.manifest.private&&!this.private)throw new me("The target workspace is marked private - use the --private flag to link it anyway");u.push(l)}for(let f of u){let h=S.stringifyIdent(f.locator),p=this.relative?v.relative(r.cwd,f.cwd):f.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${p}`})}return(await Fe.start({configuration:e,stdout:this.context.stdout},async f=>{await r.install({cache:n,report:f})})).exitCode()}};BC.paths=[["link"]],BC.usage=ye.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});var _ae=BC;var QC=class extends Be{constructor(){super(...arguments);this.args=Y.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};QC.paths=[["node"]],QC.usage=ye.Usage({description:"run node with the hook already setup",details:` - This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). - - The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. - `,examples:[["Run a Node script","$0 node ./my-script.js"]]});var Xae=QC;var lAe=ie(require("os"));var rAe=ie(require("os"));var Vze="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Kc(t){let e=await Zt.get(Vze,{configuration:t});return Ei(e.toString())}var bC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{let n=await Kc(e);for(let s of Object.entries(n)){let[l,o]=s,a=o,{experimental:c}=a,u=qr(a,["experimental"]);let g=l;c&&(g+=" [experimental]"),i.reportJson(P({name:l,experimental:c},u)),i.reportInfo(null,g)}})).exitCode()}};bC.paths=[["plugin","list"]],bC.usage=ye.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var Zae=bC;var $ae=ie(Or()),vC=class extends Be{constructor(){super(...arguments);this.onlyIfNeeded=Y.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let r=()=>{if(typeof Zr=="undefined")throw new me("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},i;if(this.version==="self")i=r();else if(this.version==="latest"||this.version==="berry"||this.version==="stable")i=`https://repo.yarnpkg.com/${await eAe(e,"stable")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="canary")i=`https://repo.yarnpkg.com/${await eAe(e,"canary")}/packages/yarnpkg-cli/bin/yarn.js`;else if(this.version==="classic")i="https://nightly.yarnpkg.com/latest.js";else if(this.version.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.version))i=`file://${M.resolve(this.version)}`;else if(qt.satisfiesWithPrereleases(this.version,">=2.0.0"))i=`https://repo.yarnpkg.com/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else if(qt.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))i=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`;else if(qt.validRange(this.version))i=`https://repo.yarnpkg.com/${await _ze(e,this.version)}/packages/yarnpkg-cli/bin/yarn.js`;else throw new me(`Invalid version descriptor "${this.version}"`);return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async s=>{let o="file://",a;i.startsWith(o)?(s.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,i,ps.URL)}`),a=await T.readFilePromise(M.toPortablePath(i.slice(o.length)))):(s.reportInfo(z.UNNAMED,`Retrieving ${ue.pretty(e,i,ps.PATH)}`),a=await Zt.get(i,{configuration:e})),await XN(e,null,a,{report:s})})).exitCode()}};vC.paths=[["set","version"]],vC.usage=ye.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Download the version used to invoke the command","$0 set version self"]]});var tAe=vC;async function _ze(t,e){let i=(await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(n=>qt.satisfiesWithPrereleases(n,e));if(i.length===0)throw new me(`No matching release found for range ${ue.pretty(t,e,ue.Type.RANGE)}.`);return i[0]}async function eAe(t,e){let r=await Zt.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new me(`Tag ${ue.pretty(t,e,ue.Type.RANGE)} not found`);return r.latest[e]}async function XN(t,e,r,{report:i}){var g;e===null&&await T.mktempPromise(async f=>{let h=v.join(f,"yarn.cjs");await T.writeFilePromise(h,r);let{stdout:p}=await hr.execvp(process.execPath,[M.fromPortablePath(h),"--version"],{cwd:f,env:_(P({},process.env),{YARN_IGNORE_PATH:"1"})});if(e=p.trim(),!$ae.default.valid(e))throw new Error(`Invalid semver version. ${ue.pretty(t,"yarn --version",ue.Type.CODE)} returned: -${e}`)});let n=(g=t.projectCwd)!=null?g:t.startingCwd,s=v.resolve(n,".yarn/releases"),o=v.resolve(s,`yarn-${e}.cjs`),a=v.relative(t.startingCwd,o),l=v.relative(n,o),c=t.get("yarnPath"),u=c===null||c.startsWith(`${s}/`);if(i.reportInfo(z.UNNAMED,`Saving the new release in ${ue.pretty(t,a,"magenta")}`),await T.removePromise(v.dirname(o)),await T.mkdirPromise(v.dirname(o),{recursive:!0}),await T.writeFilePromise(o,r,{mode:493}),u){await fe.updateConfiguration(n,{yarnPath:l});let f=await Ze.tryFind(n)||new Ze;e&&de.isTaggedYarnVersion(e)&&(f.packageManager=`yarn@${e}`);let h={};f.exportTo(h);let p=v.join(n,Ze.fileName),d=`${JSON.stringify(h,null,f.indent)} -`;await T.changeFilePromise(p,d,{automaticNewlines:!0})}}var Xze=/^[0-9]+$/;function iAe(t){return Xze.test(t)?`pull/${t}/head`:t}var Zze=({repository:t,branch:e},r)=>[["git","init",M.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin",iAe(e)],["git","reset","--hard","FETCH_HEAD"]],$ze=({branch:t})=>[["git","fetch","origin",iAe(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],e4e=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(i=>["--plugin",v.resolve(r,i)])),...e?["--no-minify"]:[],"|"]],SC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=Y.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=Y.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,rAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{await $N(this,{configuration:e,report:s,target:i}),s.reportSeparator(),s.reportInfo(z.UNNAMED,"Building a fresh bundle"),s.reportSeparator(),await xC(e4e(this,i),{configuration:e,context:this.context,target:i}),s.reportSeparator();let o=v.resolve(i,"packages/yarnpkg-cli/bundles/yarn.js"),a=await T.readFilePromise(o);await XN(e,"sources",a,{report:s}),this.skipPlugins||await t4e(this,{project:r,report:s,target:i})})).exitCode()}};SC.paths=[["set","version","from","sources"]],SC.usage=ye.Usage({description:"build Yarn from master",details:` - This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. - - By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. - `,examples:[["Build Yarn from master","$0 set version from sources"]]});var nAe=SC;async function xC(t,{configuration:e,context:r,target:i}){for(let[n,...s]of t){let o=s[s.length-1]==="|";if(o&&s.pop(),o)await hr.pipevp(n,s,{cwd:i,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ue.pretty(e,` $ ${[n,...s].join(" ")}`,"grey")} -`);try{await hr.execvp(n,s,{cwd:i,strict:!0})}catch(a){throw r.stdout.write(a.stdout||a.stack),a}}}}async function $N(t,{configuration:e,report:r,target:i}){let n=!1;if(!t.force&&T.existsSync(v.join(i,".git"))){r.reportInfo(z.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await xC($ze(t),{configuration:e,context:t.context,target:i}),n=!0}catch(s){r.reportSeparator(),r.reportWarning(z.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(z.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await T.removePromise(i),await T.mkdirPromise(i,{recursive:!0}),await xC(Zze(t,i),{configuration:e,context:t.context,target:i}))}async function t4e(t,{project:e,report:r,target:i}){let n=await Kc(e.configuration),s=new Set(Object.keys(n));for(let o of e.configuration.plugins.keys())!s.has(o)||await ZN(o,t,{project:e,report:r,target:i})}var sAe=ie(Or()),oAe=ie(require("url")),aAe=ie(require("vm"));var kC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,stdout:this.context.stdout},async i=>{let{project:n}=await Ke.find(e,this.context.cwd),s,o;if(this.name.match(/^\.{0,2}[\\/]/)||M.isAbsolute(this.name)){let a=v.resolve(this.context.cwd,M.toPortablePath(this.name));i.reportInfo(z.UNNAMED,`Reading ${ue.pretty(e,a,ue.Type.PATH)}`),s=v.relative(n.cwd,a),o=await T.readFilePromise(a)}else{let a;if(this.name.match(/^https?:/)){try{new oAe.URL(this.name)}catch{throw new nt(z.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}s=this.name,a=this.name}else{let l=S.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(l.reference!=="unknown"&&!sAe.default.valid(l.reference))throw new nt(z.UNNAMED,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let c=S.stringifyIdent(l),u=await Kc(e);if(!Object.prototype.hasOwnProperty.call(u,c))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${c}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);s=c,a=u[c].url,l.reference!=="unknown"?a=a.replace(/\/master\//,`/${c}/${l.reference}/`):Zr!==null&&(a=a.replace(/\/master\//,`/@yarnpkg/cli/${Zr}/`))}i.reportInfo(z.UNNAMED,`Downloading ${ue.pretty(e,a,"green")}`),o=await Zt.get(a,{configuration:e})}await eL(s,o,{project:n,report:i})})).exitCode()}};kC.paths=[["plugin","import"]],kC.usage=ye.Usage({category:"Plugin-related commands",description:"download a plugin",details:` - This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. - - Three types of plugin references are accepted: - - - If the plugin is stored within the Yarn repository, it can be referenced by name. - - Third-party plugins can be referenced directly through their public urls. - - Local plugins can be referenced by their path on the disk. - - Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). - `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});var AAe=kC;async function eL(t,e,{project:r,report:i}){let{configuration:n}=r,s={},o={exports:s};(0,aAe.runInNewContext)(e.toString(),{module:o,exports:s});let a=o.exports.name,l=`.yarn/plugins/${a}.cjs`,c=v.resolve(r.cwd,l);i.reportInfo(z.UNNAMED,`Saving the new plugin in ${ue.pretty(n,l,"magenta")}`),await T.mkdirPromise(v.dirname(c),{recursive:!0}),await T.writeFilePromise(c,e);let u={path:l,spec:t};await fe.updateConfiguration(r.cwd,g=>{let f=[],h=!1;for(let p of g.plugins||[]){let d=typeof p!="string"?p.path:p,m=v.resolve(r.cwd,M.toPortablePath(d)),{name:E}=de.dynamicRequire(m);E!==a?f.push(p):(f.push(u),h=!0)}return h||f.push(u),_(P({},g),{plugins:f})})}var r4e=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],PC=class extends Be{constructor(){super(...arguments);this.installPath=Y.String("--path",{description:"The path where the repository should be cloned to"});this.repository=Y.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=Y.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=Y.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=Y.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.installPath!="undefined"?v.resolve(this.context.cwd,M.toPortablePath(this.installPath)):v.resolve(M.toPortablePath((0,lAe.tmpdir)()),"yarnpkg-sources",mn.makeHash(this.repository).slice(0,6));return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let{project:s}=await Ke.find(e,this.context.cwd),o=S.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),a=S.stringifyIdent(o),l=await Kc(e);if(!Object.prototype.hasOwnProperty.call(l,a))throw new nt(z.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${a}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let c=a;await $N(this,{configuration:e,report:n,target:r}),await ZN(c,this,{project:s,report:n,target:r})})).exitCode()}};PC.paths=[["plugin","import","from","sources"]],PC.usage=ye.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` - This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. - - The plugins can be referenced by their short name if sourced from the official Yarn repository. - `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});var cAe=PC;async function ZN(t,{context:e,noMinify:r},{project:i,report:n,target:s}){let o=t.replace(/@yarnpkg\//,""),{configuration:a}=i;n.reportSeparator(),n.reportInfo(z.UNNAMED,`Building a fresh ${o}`),n.reportSeparator(),await xC(r4e({pluginName:o,noMinify:r},s),{configuration:a,context:e,target:s}),n.reportSeparator();let l=v.resolve(s,`packages/${o}/bundles/${t}.js`),c=await T.readFilePromise(l);await eL(t,c,{project:i,report:n})}var DC=class extends Be{constructor(){super(...arguments);this.name=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=this.name,o=S.parseIdent(s);if(!e.plugins.has(s))throw new me(`${S.prettyIdent(e,o)} isn't referenced by the current configuration`);let a=`.yarn/plugins/${s}.cjs`,l=v.resolve(r.cwd,a);T.existsSync(l)&&(n.reportInfo(z.UNNAMED,`Removing ${ue.pretty(e,a,ue.Type.PATH)}...`),await T.removePromise(l)),n.reportInfo(z.UNNAMED,"Updating the configuration..."),await fe.updateConfiguration(r.cwd,c=>{if(!Array.isArray(c.plugins))return c;let u=c.plugins.filter(g=>g.path!==a);return c.plugins.length===u.length?c:_(P({},c),{plugins:u})})})).exitCode()}};DC.paths=[["plugin","remove"]],DC.usage=ye.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` - This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. - - **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. - `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});var uAe=DC;var RC=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async i=>{for(let n of e.plugins.keys()){let s=this.context.plugins.plugins.has(n),o=n;s&&(o+=" [builtin]"),i.reportJson({name:n,builtin:s}),i.reportInfo(null,`${o}`)}})).exitCode()}};RC.paths=[["plugin","runtime"]],RC.usage=ye.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` - This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. - `,examples:[["List the currently active plugins","$0 plugin runtime"]]});var gAe=RC;var FC=class extends Be{constructor(){super(...arguments);this.idents=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=new Set;for(let a of this.idents)s.add(S.parseIdent(a).identHash);if(await r.restoreInstallState({restoreResolutions:!1}),await r.resolveEverything({cache:n,report:new ei}),s.size>0)for(let a of r.storedPackages.values())s.has(a.identHash)&&r.storedBuildState.delete(a.locatorHash);else r.storedBuildState.clear();return(await Fe.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async a=>{await r.install({cache:n,report:a})})).exitCode()}};FC.paths=[["rebuild"]],FC.usage=ye.Usage({description:"rebuild the project's native packages",details:` - This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. - - Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). - - By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. - `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});var fAe=FC;var tL=ie(Nn());Ss();var NC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=this.all?r.workspaces:[i],o=[vr.REGULAR,vr.DEVELOPMENT,vr.PEER],a=[],l=!1,c=[];for(let h of this.patterns){let p=!1,d=S.parseIdent(h);for(let m of s){let E=[...m.manifest.peerDependenciesMeta.keys()];for(let B of(0,tL.default)(E,h))m.manifest.peerDependenciesMeta.delete(B),l=!0,p=!0;for(let B of o){let b=m.manifest.getForScope(B),R=[...b.values()].map(H=>S.stringifyIdent(H));for(let H of(0,tL.default)(R,S.stringifyIdent(d))){let{identHash:L}=S.parseIdent(H),K=b.get(L);if(typeof K=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");m.manifest[B].delete(L),c.push([m,B,K]),l=!0,p=!0}}}p||a.push(h)}let u=a.length>1?"Patterns":"Pattern",g=a.length>1?"don't":"doesn't",f=this.all?"any":"this";if(a.length>0)throw new me(`${u} ${ue.prettyList(e,a,ps.CODE)} ${g} match any packages referenced by ${f} workspace`);return l?(await e.triggerMultipleHooks(p=>p.afterWorkspaceDependencyRemoval,c),(await Fe.start({configuration:e,stdout:this.context.stdout},async p=>{await r.install({cache:n,report:p,mode:this.mode})})).exitCode()):0}};NC.paths=[["remove"]],NC.usage=ye.Usage({description:"remove dependencies from the project",details:` - This command will remove the packages matching the specified patterns from the current workspace. - - If the \`--mode=\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: - - - \`skip-build\` will not run the build scripts at all. Note that this is different from setting \`enableScripts\` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run. - - - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. - - This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. - `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});var hAe=NC;var pAe=ie(require("util")),z0=class extends Be{async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);return(await Fe.start({configuration:e,stdout:this.context.stdout},async s=>{let o=i.manifest.scripts,a=de.sortMap(o.keys(),u=>u),l={breakLength:Infinity,colors:e.get("enableColors"),maxArrayLength:2},c=a.reduce((u,g)=>Math.max(u,g.length),0);for(let[u,g]of o.entries())s.reportInfo(null,`${u.padEnd(c," ")} ${(0,pAe.inspect)(g,l)}`)})).exitCode()}};z0.paths=[["run"]];var dAe=z0;var LC=class extends Be{constructor(){super(...arguments);this.inspect=Y.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=Y.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=Y.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=Y.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.silent=Y.Boolean("--silent",{hidden:!0});this.scriptName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i,locator:n}=await Ke.find(e,this.context.cwd);await r.restoreInstallState();let s=this.topLevel?r.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await Kt.hasPackageScript(s,this.scriptName,{project:r}))return await Kt.executePackageScript(s,this.scriptName,this.args,{project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let o=await Kt.getPackageAccessibleBinaries(s,{project:r});if(o.get(this.scriptName)){let l=[];return this.inspect&&(typeof this.inspect=="string"?l.push(`--inspect=${this.inspect}`):l.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?l.push(`--inspect-brk=${this.inspectBrk}`):l.push("--inspect-brk")),await Kt.executePackageAccessibleBinary(s,this.scriptName,this.args,{cwd:this.context.cwd,project:r,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:l,packageAccessibleBinaries:o})}if(!this.topLevel&&!this.binariesOnly&&i&&this.scriptName.includes(":")){let c=(await Promise.all(r.workspaces.map(async u=>u.manifest.scripts.has(this.scriptName)?u:null))).filter(u=>u!==null);if(c.length===1)return await Kt.executeWorkspaceScript(c[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new me(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${S.prettyLocator(e,n)}).`);{if(this.scriptName==="global")throw new me("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let l=[this.scriptName].concat(this.args);for(let[c,u]of Yg)for(let g of u)if(l.length>=g.length&&JSON.stringify(l.slice(0,g.length))===JSON.stringify(g))throw new me(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${c} plugin. You can install it with "yarn plugin import ${c}".`);throw new me(`Couldn't find a script named "${this.scriptName}".`)}}};LC.paths=[["run"]],LC.usage=ye.Usage({description:"run a script defined in the package.json",details:` - This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: - - - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. - - - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed. - - - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. - - Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). - `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});var CAe=LC;var TC=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=Y.String();this.resolution=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(await r.restoreInstallState({restoreResolutions:!1}),!i)throw new rt(r.cwd,this.context.cwd);let s=S.parseDescriptor(this.descriptor,!0),o=S.makeDescriptor(s,this.resolution);return r.storedDescriptors.set(s.descriptorHash,s),r.storedDescriptors.set(o.descriptorHash,o),r.resolutionAliases.set(s.descriptorHash,o.descriptorHash),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};TC.paths=[["set","resolution"]],TC.usage=ye.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});var mAe=TC;var IAe=ie(Nn()),MC=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);let s=r.topLevelWorkspace,o=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:l,reference:c}of s.manifest.resolutions)c.startsWith("portal:")&&o.add(l.descriptor.fullName);if(this.leadingArguments.length>0)for(let l of this.leadingArguments){let c=v.resolve(this.context.cwd,M.toPortablePath(l));if(de.isPathLike(l)){let u=await fe.find(c,this.context.plugins,{useRc:!1,strict:!1}),{project:g,workspace:f}=await Ke.find(u,c);if(!f)throw new rt(g.cwd,c);if(this.all){for(let h of g.workspaces)h.manifest.name&&o.add(S.stringifyIdent(h.locator));if(o.size===0)throw new me("No workspace found to be unlinked in the target project")}else{if(!f.manifest.name)throw new me("The target workspace doesn't have a name and thus cannot be unlinked");o.add(S.stringifyIdent(f.locator))}}else{let u=[...s.manifest.resolutions.map(({pattern:g})=>g.descriptor.fullName)];for(let g of(0,IAe.default)(u,l))o.add(g)}}return s.manifest.resolutions=s.manifest.resolutions.filter(({pattern:l})=>!o.has(l.descriptor.fullName)),(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{await r.install({cache:n,report:l})})).exitCode()}};MC.paths=[["unlink"]],MC.usage=ye.Usage({description:"disconnect the local project from another one",details:` - This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. - `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});var EAe=MC;var yAe=ie(aC()),rL=ie(Nn());Ss();var uf=class extends Be{constructor(){super(...arguments);this.interactive=Y.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.exact=Y.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=Y.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=Y.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=Y.String("--mode",{description:"Change what artifacts installs generate",validator:Yi(li)});this.patterns=Y.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=[...r.storedDescriptors.values()],o=s.map(u=>S.stringifyIdent(u)),a=new Set;for(let u of this.patterns){if(S.parseDescriptor(u).range!=="unknown")throw new me("Ranges aren't allowed when using --recursive");for(let g of(0,rL.default)(o,u)){let f=S.parseIdent(g);a.add(f.identHash)}}let l=s.filter(u=>a.has(u.identHash));for(let u of l)r.storedDescriptors.delete(u.descriptorHash),r.storedResolutions.delete(u.descriptorHash);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{await r.install({cache:n,report:u})})).exitCode()}async executeUpClassic(){var d;let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});let s=(d=this.interactive)!=null?d:e.get("preferInteractive"),o=AC(this,r),a=s?[Fr.KEEP,Fr.REUSE,Fr.PROJECT,Fr.LATEST]:[Fr.PROJECT,Fr.LATEST],l=[],c=[];for(let m of this.patterns){let E=!1,B=S.parseDescriptor(m);for(let b of r.workspaces)for(let R of[vr.REGULAR,vr.DEVELOPMENT]){let L=[...b.manifest.getForScope(R).values()].map(K=>S.stringifyIdent(K));for(let K of(0,rL.default)(L,S.stringifyIdent(B))){let J=S.parseIdent(K),ne=b.manifest[R].get(J.identHash);if(typeof ne=="undefined")throw new Error("Assertion failed: Expected the descriptor to be registered");let q=S.makeDescriptor(J,B.range);l.push(Promise.resolve().then(async()=>[b,R,ne,await lC(q,{project:r,workspace:b,cache:n,target:R,modifier:o,strategies:a})])),E=!0}}E||c.push(m)}if(c.length>1)throw new me(`Patterns ${ue.prettyList(e,c,ps.CODE)} don't match any packages referenced by any workspace`);if(c.length>0)throw new me(`Pattern ${ue.prettyList(e,c,ps.CODE)} doesn't match any packages referenced by any workspace`);let u=await Promise.all(l),g=await Fa.start({configuration:e,stdout:this.context.stdout,suggestInstall:!1},async m=>{for(let[,,E,{suggestions:B,rejections:b}]of u){let R=B.filter(H=>H.descriptor!==null);if(R.length===0){let[H]=b;if(typeof H=="undefined")throw new Error("Assertion failed: Expected an error to have been set");let L=this.cli.error(H);r.configuration.get("enableNetwork")?m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range - -${L}`):m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} can't be resolved to a satisfying range (note: network resolution has been disabled) - -${L}`)}else R.length>1&&!s&&m.reportError(z.CANT_SUGGEST_RESOLUTIONS,`${S.prettyDescriptor(e,E)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(g.hasErrors())return g.exitCode();let f=!1,h=[];for(let[m,E,,{suggestions:B}]of u){let b,R=B.filter(J=>J.descriptor!==null),H=R[0].descriptor,L=R.every(J=>S.areDescriptorsEqual(J.descriptor,H));R.length===1||L?b=H:(f=!0,{answer:b}=await(0,yAe.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${S.prettyWorkspace(e,m)} \u276F ${E}?`,choices:B.map(({descriptor:J,name:ne,reason:q})=>J?{name:ne,hint:q,descriptor:J}:{name:ne,hint:q,disabled:!0}),onCancel:()=>process.exit(130),result(J){return this.find(J,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let K=m.manifest[E].get(b.identHash);if(typeof K=="undefined")throw new Error("Assertion failed: This descriptor should have a matching entry");if(K.descriptorHash!==b.descriptorHash)m.manifest[E].set(b.identHash,b),h.push([m,E,K,b]);else{let J=e.makeResolver(),ne={project:r,resolver:J},q=J.bindDescriptor(K,m.anchoredLocator,ne);r.forgetResolution(q)}}return await e.triggerMultipleHooks(m=>m.afterWorkspaceDependencyReplacement,h),f&&this.context.stdout.write(` -`),(await Fe.start({configuration:e,stdout:this.context.stdout},async m=>{await r.install({cache:n,report:m,mode:this.mode})})).exitCode()}};uf.paths=[["up"]],uf.usage=ye.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),uf.schema=[pv("recursive",Bl.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];var wAe=uf;var OC=class extends Be{constructor(){super(...arguments);this.recursive=Y.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=Y.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=S.parseIdent(this.package).identHash,s=this.recursive?n4e(r,n,{configuration:e,peers:this.peers}):i4e(r,n,{configuration:e,peers:this.peers});Hs.emitTree(s,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}};OC.paths=[["why"]],OC.usage=ye.Usage({description:"display the reason why a package is needed",details:` - This command prints the exact reasons why a package appears in the dependency tree. - - If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. - `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});var BAe=OC;function i4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.storedPackages.values(),a=>S.stringifyLocator(a)),s={},o={children:s};for(let a of n){let l={},c=null;for(let u of a.dependencies.values()){if(!i&&a.peerDependencies.has(u.identHash))continue;let g=t.storedResolutions.get(u.descriptorHash);if(!g)throw new Error("Assertion failed: The resolution should have been registered");let f=t.storedPackages.get(g);if(!f)throw new Error("Assertion failed: The package should have been registered");if(f.identHash!==e)continue;if(c===null){let p=S.stringifyLocator(a);s[p]={value:[a,ue.Type.LOCATOR],children:l}}let h=S.stringifyLocator(f);l[h]={value:[{descriptor:u,locator:f},ue.Type.DEPENDENT]}}}return o}function n4e(t,e,{configuration:r,peers:i}){let n=de.sortMap(t.workspaces,f=>S.stringifyLocator(f.anchoredLocator)),s=new Set,o=new Set,a=f=>{if(s.has(f.locatorHash))return o.has(f.locatorHash);if(s.add(f.locatorHash),f.identHash===e)return o.add(f.locatorHash),!0;let h=!1;f.identHash===e&&(h=!0);for(let p of f.dependencies.values()){if(!i&&f.peerDependencies.has(p.identHash))continue;let d=t.storedResolutions.get(p.descriptorHash);if(!d)throw new Error("Assertion failed: The resolution should have been registered");let m=t.storedPackages.get(d);if(!m)throw new Error("Assertion failed: The package should have been registered");a(m)&&(h=!0)}return h&&o.add(f.locatorHash),h};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");a(h)}let l=new Set,c={},u={children:c},g=(f,h,p)=>{if(!o.has(f.locatorHash))return;let d=p!==null?ue.tuple(ue.Type.DEPENDENT,{locator:f,descriptor:p}):ue.tuple(ue.Type.LOCATOR,f),m={},E={value:d,children:m},B=S.stringifyLocator(f);if(h[B]=E,!l.has(f.locatorHash)&&(l.add(f.locatorHash),!(p!==null&&t.tryWorkspaceByLocator(f))))for(let b of f.dependencies.values()){if(!i&&f.peerDependencies.has(b.identHash))continue;let R=t.storedResolutions.get(b.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let H=t.storedPackages.get(R);if(!H)throw new Error("Assertion failed: The package should have been registered");g(H,m,b)}};for(let f of n){let h=t.storedPackages.get(f.anchoredLocator.locatorHash);if(!h)throw new Error("Assertion failed: The package should have been registered");g(h,c,null)}return u}var fL={};it(fL,{default:()=>w4e,gitUtils:()=>Uc});var Uc={};it(Uc,{TreeishProtocols:()=>vn,clone:()=>cL,fetchBase:()=>jAe,fetchChangedFiles:()=>YAe,fetchChangedWorkspaces:()=>E4e,fetchRoot:()=>GAe,isGitUrl:()=>ff,lsRemote:()=>HAe,normalizeLocator:()=>AL,normalizeRepoUrl:()=>KC,resolveUrl:()=>lL,splitRepoUrl:()=>UC});var oL=ie(OAe()),gf=ie(require("querystring")),aL=ie(Or()),KAe=ie(require("url"));function UAe(){return _(P({},process.env),{GIT_SSH_COMMAND:"ssh -o BatchMode=yes"})}var I4e=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],vn;(function(n){n.Commit="commit",n.Head="head",n.Tag="tag",n.Semver="semver"})(vn||(vn={}));function ff(t){return t?I4e.some(e=>!!t.match(e)):!1}function UC(t){t=KC(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:vn.Head,request:"HEAD"},extra:{}};let r=t.slice(0,e),i=t.slice(e+1);if(i.match(/^[a-z]+=/)){let n=gf.default.parse(i);for(let[l,c]of Object.entries(n))if(typeof c!="string")throw new Error(`Assertion failed: The ${l} parameter must be a literal string`);let s=Object.values(vn).find(l=>Object.prototype.hasOwnProperty.call(n,l)),o,a;typeof s!="undefined"?(o=s,a=n[s]):(o=vn.Head,a="HEAD");for(let l of Object.values(vn))delete n[l];return{repo:r,treeish:{protocol:o,request:a},extra:n}}else{let n=i.indexOf(":"),s,o;return n===-1?(s=null,o=i):(s=i.slice(0,n),o=i.slice(n+1)),{repo:r,treeish:{protocol:s,request:o},extra:{}}}}function KC(t,{git:e=!1}={}){var r;if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){t=t.replace(/^git\+([^:]+):/,"$1:");let i;try{i=KAe.default.parse(t)}catch{i=null}i&&i.protocol==="ssh:"&&((r=i.path)==null?void 0:r.startsWith("/:"))&&(t=t.replace(/^ssh:\/\//,""))}return t}function AL(t){return S.makeLocator(t,KC(t.reference))}async function HAe(t,e){let r=KC(t,{git:!0});if(!Zt.getNetworkSettings(`https://${(0,oL.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let n;try{n=await hr.execvp("git",["ls-remote",r],{cwd:e.startingCwd,env:UAe(),strict:!0})}catch(l){throw l.message=`Listing the refs for ${t} failed`,l}let s=new Map,o=/^([a-f0-9]{40})\t([^\n]+)/gm,a;for(;(a=o.exec(n.stdout))!==null;)s.set(a[2],a[1]);return s}async function lL(t,e){let{repo:r,treeish:{protocol:i,request:n},extra:s}=UC(t),o=await HAe(r,e),a=(c,u)=>{switch(c){case vn.Commit:{if(!u.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return gf.default.stringify(_(P({},s),{commit:u}))}case vn.Head:{let g=o.get(u==="HEAD"?u:`refs/heads/${u}`);if(typeof g=="undefined")throw new Error(`Unknown head ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Tag:{let g=o.get(`refs/tags/${u}`);if(typeof g=="undefined")throw new Error(`Unknown tag ("${u}")`);return gf.default.stringify(_(P({},s),{commit:g}))}case vn.Semver:{let g=qt.validRange(u);if(!g)throw new Error(`Invalid range ("${u}")`);let f=new Map([...o.entries()].filter(([p])=>p.startsWith("refs/tags/")).map(([p,d])=>[aL.default.parse(p.slice(10)),d]).filter(p=>p[0]!==null)),h=aL.default.maxSatisfying([...f.keys()],g);if(h===null)throw new Error(`No matching range ("${u}")`);return gf.default.stringify(_(P({},s),{commit:f.get(h)}))}case null:{let g;if((g=l(vn.Commit,u))!==null||(g=l(vn.Tag,u))!==null||(g=l(vn.Head,u))!==null)return g;throw u.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${u}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${c}")`)}},l=(c,u)=>{try{return a(c,u)}catch(g){return null}};return`${r}#${a(i,n)}`}async function cL(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:i,request:n}}=UC(t);if(i!=="commit")throw new Error("Invalid treeish protocol when cloning");let s=KC(r,{git:!0});if(Zt.getNetworkSettings(`https://${(0,oL.default)(s).resource}`,{configuration:e}).enableNetwork===!1)throw new Error(`Request to '${s}' has been blocked because of your configuration settings`);let o=await T.mktempPromise(),a={cwd:o,env:UAe(),strict:!0};try{await hr.execvp("git",["clone","-c core.autocrlf=false",s,M.fromPortablePath(o)],a),await hr.execvp("git",["checkout",`${n}`],a)}catch(l){throw l.message=`Repository clone failed: ${l.message}`,l}return o})}async function GAe(t){let e=null,r,i=t;do r=i,await T.existsPromise(v.join(r,".git"))&&(e=r),i=v.dirname(r);while(e===null&&i!==r);return e}async function jAe(t,{baseRefs:e}){if(e.length===0)throw new me("Can't run this command with zero base refs specified.");let r=[];for(let a of e){let{code:l}=await hr.execvp("git",["merge-base",a,"HEAD"],{cwd:t});l===0&&r.push(a)}if(r.length===0)throw new me(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:i}=await hr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),n=i.trim(),{stdout:s}=await hr.execvp("git",["show","--quiet","--pretty=format:%s",n],{cwd:t,strict:!0}),o=s.trim();return{hash:n,title:o}}async function YAe(t,{base:e,project:r}){let i=de.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:n}=await hr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),s=n.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),{stdout:o}=await hr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),a=o.split(/\r\n|\r|\n/).filter(c=>c.length>0).map(c=>v.resolve(t,M.toPortablePath(c))),l=[...new Set([...s,...a].sort())];return i?l.filter(c=>!v.relative(r.cwd,c).match(i)):l}async function E4e({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new me("This command can only be run from within a Yarn project");let r=[v.resolve(e.cwd,e.configuration.get("cacheFolder")),v.resolve(e.cwd,e.configuration.get("installStatePath")),v.resolve(e.cwd,e.configuration.get("lockfileFilename")),v.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(o=>o.populateYarnPaths,e,o=>{o!=null&&r.push(o)});let i=await GAe(e.configuration.projectCwd);if(i==null)throw new me("This command can only be run on Git repositories");let n=await jAe(i,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),s=await YAe(i,{base:n.hash,project:e});return new Set(de.mapAndFilter(s,o=>{let a=e.tryWorkspaceByFilePath(o);return a===null?de.mapAndFilter.skip:r.some(l=>o.startsWith(l))?de.mapAndFilter.skip:a}))}var uL=class{supports(e,r){return ff(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,n=AL(e),s=new Map(r.checksums);s.set(n.locatorHash,i);let o=_(P({},r),{checksums:s}),a=await this.downloadHosted(n,o);if(a!==null)return a;let[l,c,u]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(n,o),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:l,releaseFs:c,prefixPath:S.getIdentVendorPath(e),checksum:u}}async downloadHosted(e,r){return r.project.configuration.reduceHook(i=>i.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let i=await cL(e.reference,r.project.configuration),n=UC(e.reference),s=v.join(i,"package.tgz");await Kt.prepareExternalProject(i,s,{configuration:r.project.configuration,report:r.report,workspace:n.extra.workspace,locator:e});let o=await T.readFilePromise(s);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}))}};var gL=class{supportsDescriptor(e,r){return ff(e.range)}supportsLocator(e,r){return ff(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=await lL(e.range,i.project.configuration);return[S.makeLocator(e,n)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var y4e={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:ge.STRING,isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:ge.STRING,default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:ge.NUMBER,default:2}},fetchers:[uL],resolvers:[gL]};var w4e=y4e;var HC=class extends Be{constructor(){super(...arguments);this.since=Y.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.verbose=Y.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd);return(await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async n=>{let s=this.since?await Uc.fetchChangedWorkspaces({ref:this.since,project:r}):r.workspaces,o=new Set(s);if(this.recursive)for(let a of[...s].map(l=>l.getRecursiveWorkspaceDependents()))for(let l of a)o.add(l);for(let a of o){let{manifest:l}=a,c;if(this.verbose){let u=new Set,g=new Set;for(let f of Ze.hardDependencies)for(let[h,p]of l.getForScope(f)){let d=r.tryWorkspaceByDescriptor(p);d===null?r.workspacesByIdent.has(h)&&g.add(p):u.add(d)}c={workspaceDependencies:Array.from(u).map(f=>f.relativeCwd),mismatchedWorkspaceDependencies:Array.from(g).map(f=>S.stringifyDescriptor(f))}}n.reportInfo(null,`${a.relativeCwd}`),n.reportJson(P({location:a.relativeCwd,name:l.name?S.stringifyIdent(l.name):null},c))}})).exitCode()}};HC.paths=[["workspaces","list"]],HC.usage=ye.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});var qAe=HC;var GC=class extends Be{constructor(){super(...arguments);this.workspaceName=Y.String();this.commandName=Y.String();this.args=Y.Proxy()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=r.workspaces,s=new Map(n.map(a=>{let l=S.convertToIdent(a.locator);return[S.stringifyIdent(l),a]})),o=s.get(this.workspaceName);if(o===void 0){let a=Array.from(s.keys()).sort();throw new me(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: - - ${a.join(` - - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}};GC.paths=[["workspace"]],GC.usage=ye.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` - This command will run a given sub-command on a single workspace. - `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var JAe=GC;var B4e={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:ge.BOOLEAN,default:WAe.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:ge.STRING,values:["^","~",""],default:Lo.CARET}},commands:[soe,aoe,wae,Nae,mAe,nAe,tAe,qAe,Uae,Hae,Gae,jae,ioe,noe,Lae,Mae,Yae,qae,Wae,zae,_ae,EAe,Xae,cAe,AAe,uAe,Zae,gAe,fAe,hAe,dAe,CAe,wAe,BAe,JAe]},Q4e=B4e;var mL={};it(mL,{default:()=>v4e});var Me={optional:!0},zAe=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Me,zenObservable:Me}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Me}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Me,["postcss-jsx"]:Me,["postcss-less"]:Me,["postcss-markdown"]:Me,["postcss-scss"]:Me}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Me}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Me}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Me,"vue-template-compiler":Me}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Me,"utf-8-validate":Me}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@*",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@*",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me,"vuetify-loader":Me}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Me}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Me}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Me}}],["consolidate@*",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Me,tinyliquid:Me,"liquid-node":Me,jade:Me,"then-jade":Me,dust:Me,"dustjs-helpers":Me,"dustjs-linkedin":Me,swig:Me,"swig-templates":Me,"razor-tmpl":Me,atpl:Me,liquor:Me,twig:Me,ejs:Me,eco:Me,jazz:Me,jqtpl:Me,hamljs:Me,hamlet:Me,whiskers:Me,"haml-coffee":Me,"hogan.js":Me,templayed:Me,handlebars:Me,underscore:Me,lodash:Me,pug:Me,"then-pug":Me,qejs:Me,walrus:Me,mustache:Me,just:Me,ect:Me,mote:Me,toffee:Me,dot:Me,"bracket-template":Me,ractive:Me,nunjucks:Me,htmling:Me,"babel-core":Me,plates:Me,"react-dom":Me,react:Me,"arc-templates":Me,vash:Me,slm:Me,marko:Me,teacup:Me,"coffee-script":Me,squirrelly:Me,twing:Me}}],["vue-loader@<=16.3.1",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"}}],["scss-parser@*",{dependencies:{lodash:"^4.17.21"}}],["query-ast@*",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@*",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@*",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@*",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@*",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Me}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Me}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Me,"webpack-command":Me}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Me}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Me}}]];var pL;function VAe(){return typeof pL=="undefined"&&(pL=require("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),pL}var dL;function _Ae(){return typeof dL=="undefined"&&(dL=require("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),dL}var CL;function XAe(){return typeof CL=="undefined"&&(CL=require("zlib").brotliDecompressSync(Buffer.from("mzhaECMDuR1sIeX+TY0icB4Ugl/fiS06kLsdoNSeOm1ArQu4w/gK73BeaBFQx2vZSXXZNLdYxpjuqpmNeJzul8mI4ogHeNsydeh+g4VOVg5d5CbKlG1Q+IpXAXZLfIgNceWQ59qQ3zuLeum4rqAQFmFIJ+OPmSsgLX76avnvn6+X6uHeiM4lXUrTtuor1VjIhSObF5kSZugNdEj+/Kn+5+dLKEuGkIccJ1seHWPZjvo0oDqGOayUXrEapGdGoVp7P/kRtHOoxHnftuSiCaJXOmHh+eZEZWsrVJkTE1f4sIMtD5pFRCdmjksUgXGBbbxv/v/7yz5TdX1A9RBIQxj1TBBp9W8YMlPqjNpLte859/Qv0lgqSeurpB5AOufCK1T/RrslE3MSOUkdhOYsrpJKn7DBQBh5JggS/69qZTunC5G4QPxNgO7do256TNNoivKCm1bcBaCZY3XPXUjdxVS5mkTAIbd21Y5cNJ27WlqSQwdx6QCQDUA5iJRTIGJjyKlCM4XRZz7GqmZu3zcDRFQycspj1mqpwtivpINKJRhpb9EJG02goJxWlbOHdl7IikcDLYjJmFb7cynTRAgybLF/+jJW+dqt+8/prUIMh4AYUUZ8v/nTbYs0LWIGzqq4nnnb+E8G9VadYP11gbnu8un3gq9L/5iZ++e4CXdv8s6yfxLFpge/hTGPmP7xK8/d2VV3RZpi+HImSZJg+UXmc5KOs6Yt4yQ/Xcc9W0iP1/pZrU/Hhcm3b+On30q2ggLfYeb1FRmEaQBW2rMTATnzyn2dOCqbnyK9vl6HYc/8sJWjLpbWbTAkIpDfSjRFdn6B+o2yIRcJaSZdW3obMQSYgkURdTT0VOsYbTT3yLv6PxFfFVf6m/YSCEsYntsrba/GZSt10qX5nOK/lvZJxBbiZxLDtw23/doci7ZE2BBRQ/o3hXAzuImv3CouR28XCecBAZfuP3UwFnw5ux1hDGk6V2Z4KMI9dZbHYGh72z8ksxQ9JuFkdglrUk8g0keYNXFWVmjIZlPfvepLJnTeQSHHycr4F3I+WtmWXCFS/bnODsng4tVHocLRhXBdqiP8GMRCMViz0YbNIUHAQmL8Hu0YVkOEiMSXWw+OgrltpMqrfNMM2FsK7i6udjs9jOrbjYRQoAhpxt/QaVpJQdImikEGEfSsDxOVCTiZ8/On50gJ4EYIG6EqMrJvmtmRCHHh9RgBkhh8dk2QlZGr5r327hKF5MuX7lmSZA7JhCpfL1xI97i5afnVdWqRNbXdZdN2Ezo5mSIZmI8G5gFj1+ckjllDPfA59ckAXIlElghCVJCwholafUwxy3f+vcNuKTUJGEtIX81nJWKQAklOgZJZPFDlJQLmhDsEqOHONrfIj4lFw8UuFeF6GWf9yRltW7UoZVD9V/AUWT/GcrEAyyqIelS3TIZXW1emyEpzAmonJZVPTSl1P5efGgZzjsH0ccUXl8LCRS6w8C5LC/TyDccnIT8JvV4oFRcHlMyqHHEK4ux1bAEi9agkOFRNthH92oKz17+sE1Bhvc2tCShYQXtlj9vcfsOtMd3G6zihjlZAVURrXp9sZqpIXuvNR7NSJyECg7zFfioP4/W6kEA6c+MlIVC6CQNM5rG9wXFicqs0HDXykCun/+3hMycnJOvyPis/71xnjw+b/9XDwFvlKht9d4zOogboH0XmMqMVrILlMfxpZUY8QZ4LbtuF8nlF1GhEPJXQW8ybdIreitTbxEKFZ37n9ssmPyuhNZpz5ZPBCVM5fOMnLfIFucuUDsgt15gLWKMi55fy0582blNvOW7M9z3L6uNKk70pG12NRrnQ5AvJtWaZ87omj58iJRYbzlJOAZViHYuL9evv+NB34edS9osvNDw3X2aFplDRqysn12+OW/JPKH6xQBktxRSFkPD0KOTn3PxcW3QEU9DdbG+4ul+s8KYvSfUhUPscb0GjEEr2jBOmx5hjUXRfo+tDo0vr1a6ba5DZLXz8sju687ufBB1QohdXU8sfOfoofA8ChRBeUbBZvV6VF4/ljvWnu0LGEv3lTO9V+XQRaeKE124ilHVZY7Y6I8NzvQzyqIAbsshqVc5gFgC+veF9V/YXI7I2pCGJgxBlsS8KjP11u0Y/TuVL9448UL5Zbdb5jLX0NDk3iJFp43qmpbThFcY1X9Pl2n4RogRcsjx6hMlgxO22D1yLydaWnjy4xWy3Dncjk0ju4IEXUGbbxQ+JfCpzm4W0WXTM/xkk/d1dShIOXWkZWtqhRW7XiG6oFoB41lFwS9HdnmkoVWkSfkpoWFBkl2eb5DIBAbYRtUjCiAPiW521MCneLh5vrdxhN3wNtzqFoRMLmo7lVSoHNF6H6iVbhvRVcoeWAeMxDC7vCQCJemimhPxTsyYQOsJfG6IooBBkWoOARc+ksKKoxltd+vos9/kJkSMHr5CFJSJOiAGTLxmRWEckRN6LlZJ0SRGxECTJohEXj7SZ89tmgN4DTGhwCNe4Mku8neFIcNQ2vWDo7QuNRKoqD9ifdxBhCTF8h0AiBfJIU0F69pz84M/2o8Ovn5Ozmh/8zvQhQxa4x7ahhMm7z8gteRLfcZXv7UB4Sq1CHHteRWLySfgSyETfwfJm46U22yE2B12EAdfXEfJQHWzmJ49BgiDWvIFcjyTxk3OrDOAnWi8vArJIi2jRZYl6l+Hp/0LjHbY7D1fNA+TlvfTlFW0QfF8vWoQoB9zgwwhhXkLfbZUB9/ppAIi1LqZcZMRYKaQzKoUc1kqjwLbqM/dOLcDMpNOqc2HY2iCm3bFLUvX6HxVbQUo0LeMbMm8Q0cuG2d1/Ipatqk6i6aHS8BadvUK6/FSJOJw/iMos2gJUZ1Yo+pzI6CVri1f97RWOlcDuQPaxx3vQ3Zn+BT1PRISzWmESPt3cWhGK+xuJUaZZgHg39TFH8IYWsZ3WZ6mOAKwrbE2OMpw3tZj92+xLXzO1O33fld/NawySc5eofD+6rOPcvOWH9OHw8HwUdWISylPtznAtdp7L8OgZbGJyxUKAMnwY+Eq3EoWli52ssB33vMt3EryXQWoZfzOMH5c1MjCN2KRzq2o6nwwkXgNvyC/3Gd5rjTTNk6bJktjGf6NN7A8GJRtXTIdemAYY0BdTbsQS4GUlc/sezLXoM1W1/bWIv598vDmWgQwQ4zSdlb8aNnJQPP1Ylp3vsTEnMvimRwtw2rcEIHNvhVZJ4xb4ltcD5z35zwkPBrjbCcG0HEDHc4jvPMTxNB2cnI+PvtGOAOZDh16sgYMNMr8++3wEAHHbAtV2E08OR7aSuEyDk5l/KKhyuKWAy7exNoP88hAZd0IfLwgHyQgSjPn8DhKoGR3bcAGAowm3KDxV4dhAsNolE15B2LpGAEBW7tKaSwYmKPOp5gnAzMrb926G3r6BN4YexWTYCbZ8drsEVka4VlwAAGeCGVvYbYKO3c6YoNX2CABwTaKh2XnwctI+gZnZAPqtF3DnwA+mwt+VjOMicHPSTSlYAQA7v/7zz+//nYxecgzmc9smkDNr5ocWMm7XvsT1xzt7DAnv6fzbSE4oacMFABJwdn3hXBOMrfY5wl2LUNcIAJwXq8Ixe1Uku2Y8/ru3Dt/YK/H0fekjaWnmV5UyAAC+Ugnk/8/pv/7s/P9T1Y1Jm+l/tkMIqt1nR1EQ0DVcDx5gPey7r+Ri+3h0L/ApPOmPxCrNryrfAgA8a0JZPlFlY2LXuQl7Wk5TrJCk9vrs6T5ItNmVCQDEKFheiMnDtQiPMz/tdxOVNR4lxIyKrbYAQJGHtjJsHtpCe1WNhQdddwkAtExJzot7FoKm86ntcmg1HIl5M7+qxBYAmJwMutjCEEFSaa+ZmHJBVNcIAJQ6qmjMAv6Aoh8tgmnuPD2Tl/Udy7wKgMnNaqtmvMfvTDM51vJt0J8JestqOp6czPwwy2wBgMKxka4yDB5Ksb2rrLiHUt4IAHihKhmzdHTMnM+sO2Fk7JK3veZtKkNQc/OrShkAADNphxrjnvE/28XXoaqZsd2uITg12N/CbtPDVC9Z3LlYkv3AhJ70J5JKz68q3wIAzFn60xh35Aejhq/HqqCx1e4l3JYItZkAwMnuEM7A57LtKxPcc9OW9XanMaq04QIAFXA6nnBQhLFErbSv4baEmksAYD2I9rx613TJLy70H/b0ZR3/o1IbLgBQIkxb1IrwGcYUKu0x3KZQswkARNYSNl3xu/RqqUnp2Z/q+78UrACY6qzWAyqvhKb7aK4R9pmp/9bdl8ZhuaSvHBcAKDH7QVvDfTzEint4iHWNAEBIHYWKeA61ruwbzVQEzoVLvSSweL5PagSzSfqSBmvyLzyauiVKTt/k/fciw/ckjLEddpKUXAMDrqQjV4Qn27BrEiw6WGjRGWwiftGegxwKnWDxjquBPb9+Y9rH9APdJ2p42hfp53dv1wt7n3jTRcz5LP6OAlnFiZGx7tu29dU++gGoxby2cZV3APENaeyA8wN7/DaK2fWv8flZe7PFzvZVxPp8edZtMn1iiwRppB+R0XaM5BbTEvS9vPqi7cSIvht4c4YLKA8PvIr9Kl2FepBzajMnCZPthVt1Mq5X9Z5z23ze/6hLX3zU+HqaE3IKkD4OeOWmvqIPrHYTHBYoIhRprs3vGyO/I4ygGmnrjDMu4v3uZLm2LTH9PpmDdCq8lyTqatIco0thn7H32lqR7L83C6sOoFQN0ak19l4x0RQoeGgCMS22oqvaMrrpTGTo97AXAwolHZcrLppPnNYGE4gR9VcHrripQsR7E8wIszbgRhPp8oMm/Es6MQsZ5HAfh55cd6z2eotj549YejMlxA6vA14EPN2jo7u+hB16+ate+6L1ISy9ce7JIZK0F3FKezfNQmZXkqg+GaLLZcjOvU/Q8jR9lIZEYECmsuLSfvCCMQHw8TglAhnY4Q85lkXSCisQsmXHMq83rcQ1kbF1iBJvLhwS5SnwqId71J2fj4Tw2l5H6PhhrNabH9f88Ow88s+tc5/jSXDf3+NEmHx8mwDky84eT17NOU0cNvBaKrZAQgCCFrSjZk4CIpz9SPXZWuSlB1U2ShPKxazkZmHWKDEf+JioOzCq03jO/OYGDHYEXjnVx20TOByvHRvnc+SjT5fH3C5yT1ukFdkNTI5nCZTXx16ruP8ncq1mWLhZW1gv2rZbvEFypjZtvvyR6azZ/urn4oGtqPBx9RMZ3JjQXsbEKjZ6dRz13Q+XDwFAGPYJXHuu5leti7prxuXfNjfaed2LW7jsRZM0/ZXGGv4xpn0f908sXPb2a68CIC/bhb01Z3BCQp2e7P2Wr+wz7bosAI8m056q7N2kjr3ZEWB6j9i0M3m+KaJP1ECzcmu6gPOmcQ5SlizbWAM8SVi6kpjOwddB6ciW2dmQ2ZXCQIgvAd0aXVe6/L6MJzS0iJPwpA8s11Wo+odqQi7qcbicDGbI2kWG6mIf8TQ0d8N18Y94Kv4u1lYiU25+oCPQj5ltKPk4E5tYtLSLiM+s8iS92Q/lxFnrNyB+l7f1pUNLYjbvYGLOxfXgCPp1LKC4cu72+OYWVToHCdfsynmnV1QFD94jQJJg13T1CiReXZssIkCqZdP7Pq4AMb2uEERQ4Xw6BhRI7cISLRJbLk/VkTDP59W6RV7WrAZ+uOEa1k2HuF7nHFxVLj0W01GO92zq0/ckxMdPbeNSx3BHHAbhI7vR5x3XVoHVIbFwGzAsO4IZCWIv3RDNZTkUk18T9hBTuN4LdwsTr/3s3Fjs8ZXJi7atb+8bnvvcqIYzK1oRk5M6jkl/B3ozFkVSU1CtLnMm4rVLRrnivvl8tLeSUUIWcftYS1DAsz701b/ujUrwRuGctnfP9A6NcZdGbmy20m2vo0ZNYa6gryv1nmCHpbmXwBjxErc5ATjaUxZwqOjAn8+Tmqk1XMRazdjQaYE6bfjLZkmSYC2d/Jov26kJJiv807G0v6JIpybeskCFK3l/7MJrXuX4qqtgU96CpYtC1Nl/21IOGDW49UsEYErjiyujVjUOrjZr0ZKQNRx2WwgNk6PHHBoa8A7ep2RKc9CETWmuBs6yAjEwGZ+5UWYAQB0amtsLr8rbtVvtnWgCAHbSd7Y8x2TmfAILHklu/ow+rXkEefdnNLlFwUE2OjTUfpvMO0tzoAXazNV1Z1nr2I27MDMAMESFIul2x8ft2tWZfNoLaAIA8sXk5mz5FpPo8wr0cp/4vH0Ru3fP91SkPUHdOjSTM8xvutIcPN0opgJwtpq2BRHu0OQp/tZOS3NwJGenubp0lrXE7uSCzABAFhNquZ3Ciue0s1ReQBMAuHJSc7bcw6RyfgCbovqW5WlZ+/tefn5IwD54gTOhjw7++8PBAtzjEKfmcuV0QTMAYOEUK/MnE+wad+bxuZPkue0kU9z135nPA2mZ1TyW9we25jKQgQ1+a/fAmMCwIrzlputmBxMjo8ayN8beU0LouDgc6DYzu8sf2x1VVFWMz7Te6vgg0+MiFDO05N1kFNR8LLjZPWJR6JRx9kqmZUIEUCmiCl78EkFIi5a+xk7JfcZ4dCYgClkBd1ZHH5kwk8hiahyTRvRF1x3rZAjacDn/bOOEFnSeU/MrODwWPAwTqSCRuTUVAQnVf/dcIC37wP3DAKX0lenDubINJQjXR5eDJV5eeI4zLSXJvbnePB+NmtsOPh3NSyaIpSowQs0Z0SJPVsp+nU7M5kUNd2apfu+aztIHO0kICtIcx7K+ZKxogkVFRr90INr9gT3iq2bt4pX9eQjPMXc8+hUoHZ3QOdsgYTTzaMlI59PLbA8sTNvRgDuSQ60TL62LLgKSSAzisEc7/PWd7V2+W2H4vJtuVuZWXNmF8NGAFZ8A1WtF2BJdPpXGr45ZQhyHm1kztPD6+X5gtJ0jNxcnIb4NnBEQVgkJbBon0JCn9Bgc96ZyW9SjMK8lMJEb1N1suRKpDtIhgxyis2EpvtC41xhtWvFVtrSgpQyCWGAqPWC9e5Gpf5HzEPLA6W1oQbhzVUuOBemrYwYAYsmp7AmfWOjFt+42fXZUIa/NCMXlv8sEAFCCzOtRXPqD5PtxR3Hvwhm/tzBqxCJAHavXdZovkDGn1Bher4xni/WVdXjzusYB19QFwaCBU/AmYD+rSzVzstz4RWLO11jcui9wwyOL+ctL/dJWS+EoHEPbovgfTYDyueF6/2rzepSqV0kXpUmuXli87pOGG1d2owXW1r53i2dzrXu9HY5jqCCh8P/uGIs9CXeq1lKfQ5g59M0jNeMcmg0pwl/vLxAK0LYy/BBj195iodrPjqcYO1ttaUltkZSjYYx2S8loRL3jM/bUEJytxDaBkTUaXKfwqlh71nf1rVNVcGFTMlfyF+4U344RDagsrpwaN7aTrY9nNj7jf7ktn4cxnELv6kM2Nbw/bLy0lhofuRPkK85vH0jDpcM63QznqgL3iqaAkw9RTVlZuKzC1x/z4OXzY9WXACVFaDXcgmHdKjcCSe3MAIBEYFWEPVBKr6N6tNs7BJ42TQDAAZ267lUE3W5GCQDUxbWwOiY3ACJ0NF01KnqXjw1A4Y0tiwfbLyvpLi0ivaVVDkAZEQq7UpMd81/FTl4+grx8xsuM0Gf5lANQhoTafsNlQ/PkvL3Lj/fbTiKVH6HZZ8yW7ny1PyNgrjcyAwBzBniqCE9UFLkgttubBJkWTQCgyfWcmu53eRJuNwkAGFT1ZjW7S/c6Ns9e2jr8fJ7hv08lnjFbunMQJyiZ8rPODACIEcpaMXKKkHHn5ocIXVhRLHaPEZpprjNfdX51UIP+IorCp7CThT9SepSMRsENRkgtwtY+V4Jt8AwXCioUtrtf+Qgh+4VGDYHpDAqA7uUizmOH4Qtw2o1zaYxR+DzYFCdXzZLSmZnCvgBRk18pWzdZFTNE+ofiFiO5EWTIMSj7Od1YIB0A2TMQSXbUSvgAXrRBP6KZp4b/0Y561KaDafkTBa6CdtdJ1n3s1ab8oVeLftZZW1L1jEC1Bwbjuqjw6wo6dFD03QpHUDuLOuf6ryFICa828OqrRWQHXT93uf5k32KH5NhjP8X4uL+ob8v5lH7mhV2bEZQOo0nu67HtI+9Y1za0kfrj5z6yJvFodTeSc18oLXaAKGI9QukwL/SFBTJWIunQlkLgZBtGM7BpBYxpMDC42SSxa/3loXNV19gepgCAr9XOTO6Le6fUWYcwSqevw1ce1ibXtCNDpVralR5kw1N9z+lD3x64yh3hGWFDveH4msF++m7NZzywhCG0yqDzZBpCf6YNRrFfLGyLcSAf7CX9L1UJvKEFQUI6mGTogxqar5Z8EQ8TY/icrw3X6hinxTZIILcGi9NIwxRn3Kc35XgIDx7nt1Z4rn+AuJ+gvJjO2g7A0dkxWYtBauIkLFYGGCkuObKyoHOyFNvPvBSX47DZCoSwe+lmpSFSPIUoqTBw0ET3ldW7arWDVcnN2m0nfWhnZaJBAb8wQacaNocn9N9XU+yO0YWMuXsQ2mCGgwi4RVGlkD0CY8Fc/Ofygx64AGz4E9url2vbndCa8rjP4op1U+xgh2yh7jaq91qr7WWCTbK+YbtQqVogOjEWfGFBTlbM9RNCnOKAGO5tbhVEX7kVTWczNMIGKet4RBmu17M2H1pASqRCWwLedgk3h0omSKegZfcxZaCVOePS+YSXNpby4ipXP5+YGu9Frwg47k/NR5N/F7SKQ95BLjW9hh5MFBIU9SRe5EfHXqzFTuXBWLeEOjQBY9K88M3g+yNkQGwZrDAyyHmxoLddxJdlFowzfneqzg4djH3vpjLOJwr44SGWtB1VtGSM4mYKb8xiN+829pcyVa/Nn69uNTnBtGJSwZlgkNIUKOHnRKhMIv9pY8CQMVARcobqYqC4z3jpeCoFZf2FzvYSbUety+Wo+LyZgCFBAY+Ofp45V+06TSLisDIeEFVPcB9Z8TvfauCzF/Pric91YMZm5cyAsFgWzfFhfag57eJKwovFcHQFDJlb1dfM59dEqYMw7c+ZqtilF112PHh2odGM/qLGSC6o3GhgNK/RYHflt76XlFddg/Jnir8mm6e1IVyx+PAOg2h7q9hqdf3WNuupKmX7ESVo9tsYJkI/RbRBSLFD/rnQgAEbXSiM7qWyeJ+ZyNPQfNCXTMzfouLBV8rrQbSwh/caH4Ro/NSyfn9Ih08jLZ00zwKo4qs848uvBkjzsWquiofwpozqza3bjCKG/KuMGQAYCBKIkVP8v8YVKs4RFiVRKu2sVE02Ba4tEwDg3H0iqlP14GL4qxeCK506/JXvWWAlAK5V0Fq81qVArz6PG4qExH1A1GEgnqMrnqTLecLXQ13H33pCgepyxRyxrWkKwKw6pvI3DcOUZq7Cz0Tjg3cCoz4gwwWrVewwDBFKPEVnMUBJMgtPR+f/KsbXf9PV/ENy+pC2AJBu2Y7NzSUuww0fdAV3jUPPLTjDGWgEka5LGOs9khU72PZsumznNre9BUQai+hNND40Yd8OTKetumPirbQzXA1i7JjrzfhbBZ/GGC1x7PjpwflX10JYD/XfXzu5v+72Saz8Nc5rtmQNbgR92E2bK57vHzTQn+RRaaEEJJ1m/eWscPwB3titPvHuR5GJi42LrsoeUzDJ7VrGQBSJdj0W0T4YxeP/BkzeBOJOn1tUCXbaMwv6PGlYmzZ5cdTqoZz+FIHXb+CwSfNPvFP5cLzzmhli+pPx75YcpU7Tw9HfiTS6O7nw93E8Hr9KPGc1oF0DLWE+X2hBsO6GZe9t8pAG4bJ2A6LNx9ZWsgF8GFd21rVuFQevgsNVcqxLSFnrVKOcafwifyx8YvkfyXCjsc7Q2jyraz10o1lnvJNkGA0XnM2l3QNyLMRD3zzrL5zXy7pFR40dFmzliifNxnB84yPOx1WE/BuuwBTx2F9Ho3pYMclrxCwybFpvfuVQt7YTNivS1TyjwxRhZf3xukaT4S6BaWyIlzfmL7AKpfDAAS87191jq6CbxdyK5glyP01bxtSPOwlnuIZn9uPTx+Y5FcIMWOvaLoWRTaIQLYr8OFtymvHje/2uYGp41imomO5jBQPDRPDzsOeO2MasJQZR6F7JogSuqViJAg/NjTyeNlhcjJZFlt7R+/kTbWMzFJw6E5OVMXsl+vImp043HXXaL5V0n+s52NGQ+K88R398UYfA2jd3TJgqyT3MhMXMGXddpjOdUdCsTgsstMBZe1PpzJvYAKoa1+2TmuJbImyi3e/CvMJaQoIpwPrTMmSbvpDqYhl4K5TCxgy8MRpYdr6bErOruOAJIT/F64vY3DE2Za9QkhyOR6ggzlc1tiO5tuK22cmgr1xRyJVL+JeP+kB8pKdNaGuahzoLu2ycPlv4it+4Wm1QJduUWDqzP6692UzdRgmf04SD4qsJ+Eh6OqPii5RAypalBL4O8Dmx+DLEa9O4CmJeBG99aCN2XuGVGakX3I8ZRzt6yKkxEi6uxGVB0zZvlLwncYXyLHDSCBisuLyL7VoXzzsMGOQiOTFNOkgvhzlpRiR2QwPrDsg/p2107SHSxSrf9OY6Kj3eCcEc8X5xqyrlhjkJK1wDO4YS6SSOWwtMu67UJUxPOY/LMstTPN+bV60m/ozr5dyIRFo6IMQmcONls1fOdRiaCk/2Nxf1D2X0vnC3+pi42K1pcciwjw5QWhQJhxAgYBFi/zXFYfyyWhgesO+Fdlft60BMAWMr5oQvv/ii0sih28gXKvj8hMn8secVmZ/X/DP5kXKxyU/9nLINf2vFbOGHuBL30bquSne73/HOOCeKNLvrvDH4mkw4HkMWggPx0h4mujAwhvodycXwq+yx4Pj7yjoipx6MwdjRCR0rfepeZrsXuXpXajVolDokzmQs7z3812/vOJZ2Kvy9gJfpSq90YAUI8WVMdgmllpslGeSwC5gWcygkNiw34J32oyDJng4L7I1sBfzIzCB9pxT4JL+b/7e68ToC9355alOWJsg25WcNMwBwRsj1irGe0HpTqGAx1wc8dzY7Zxnb4/CeWzMBgJs8IwuwR8/mNkCuOvR2xbVtbeoHAG4EkPahlAHU5/isBjR0xU4Borw/L4BwbILd6mwKEK35vro8Fu5qWJI9gbIKQ0psG/CuM9sAmKWzkA9gtZ+tDUDEfbsHGKqrSDOoGPg2tpZXB9MWsOqwj2A+D+ktNZAASu5fjsVj4hsy+r0YLJnN2MlXu/9On6ULEkARiWqHLZVF6/fucC9AvzKR1KPHmg2vz6heL+owFHGJVMcMALQESYtRDaYRto+czY7ZPHK8j/V1Dx+3aAIAA655z7ZZgFZNels82dXaDwBMgdhWlBfUNH00CGeMLRDL/ktAs5ZBRKBx3j6jalSO2TZn/EGM5xL5Bzs+imnkLXIhnvOQ5cuJokGxas0AAEnQQzGqnzFCpy1Y7GojoHVCY/7Fr9EZ5uCeC8MdlWNyMf+4bjnIlHj2GItjOXMFiEXjSeH5xmXYvIuNBdF7e7ked+PPebt3xjyhXv36fXgZJ8hKcHHGWUk0PDKv7pX6o3Q8/xRrdasO845qXHcevCcaY3McqYiIZvJmjFQkOCcswTdU1GuGNeYxUhnLg0eQOd9XmfP6ZSe4ZO2su5P5OfC7/fv8PrNrem9N6dass5DCTrBsSF8ZMwAQVEuCVYtREZbkqoqrss9iuxjheMttzgQANHfxhZnO/e3XDNVz76eHhN4Eq3Vm/+w4z365WIpli1/XMo7DcXYtdeGDqJtaaDduHJFfVl2WFgMAY3W84mWUvB51N19W3v2nsubhP+mqbt6NXrOcErlKKfyX9bAvZdhAE8svnIf/pAsj3j2CCZQhDKmM943z1533R4LHa2BYUs5ApdmGJGV13DR3ol75H2VCsaAjZVsxIaCjsJc9cUHHVVvvyRpKAUNFTBfqR+iYFW/ny2fxJC9Ipz+jOPR8xop051ayFtqf0OZnkxUt0X49Se+tgUbeclXpusxXGzMA0C3ZdLmJDavDV6yQXB8r7tdqw727H3tXogkAZLKIjoSezZia9wMw3Sknm2uq3lwQABjNflcPLCgomUUcoGT2ZuQAKEM8kgNM235jOSDOKpDlgKQp13rNdR2TBgF3dSgZ5n2hVDozDIGoncWNgXj97BOBHN33bQFpdxVdERXjdMzO3aJsfjG9DD59OYrpZQmCBFB+/3KM1jErGd7zlYxH/XZ58ckoDi9LGiSAghIVb9YhmHhEni5eoJPqZEofIeg7vjbF7fljw8oFVdcxAwC1mOEKQakaTN/H3p6VduSznAs2bZoAABbE2DYskN0o5+Y6zq0GAUAbhFhRIqjK9A1ALWOsBsH2nwcEWgZu0JzxXqBq5I5Zu6fvjvF47F29Ct83yqngCcOMGEBu/NX75ny7WZCyrZHIGhffmhQiR2CzRDIe7EfFMc/2S2ITP/27iFgfI97qryoW1YOuc2T5wk/nvTtng3/8wN2cnTiUedE27R9bcCCPjDGEtIstAZZfPBaAqxxus7s2E1+56tg+vDsOnoqbjwWk+gwB7f01YwGeUMGvPNotKW6I5juKjFGJN2RHIsEfgbkdJxaSSoL5fKJaGNJIlp2xNoUt71+oq7rtlrnOC5kTXIAx7avEIoBxRidNF/Z01xw/OBKUHyI+x/lCz7GRKBdBRGS5M/g4isafTzyZUfxWh/Keg+yWxasXdVr9GNFJ+qwvIisYgdA6WMdpimVMFaBp+UkjLM8KJYX9roebf3d67qrQBhFsfPwh34FNTU5JlKbIhQr0hmQ4jJCc/iNz+QIYSHekz8JiWpzjMZzWDqWjb6Mgj7sy7Kc7uvx5dWMuCKctH7AqftyIyMTARyjqTrPalnwy8HlTYtR5RlgidkXLlMpJjJFv0j2z1yGWMO6t3hG144yQH4aCmJll+gVBjQv0EuwS59vzpOqsdIp3+5CKRHJWU/PfP+5o/ghAJuIilOAcw16z2yU5XP1CZLtndfhJQu7GzJvQBlbmBHHjyY6ssqfYVpX96It1iqm4pTyYKxSK+vgABis4gBPHx097lMKC8VYx89+Y7bHvmWz08X+heJY12C7XffaUKf7NskV1BItmPLZS6XlywlR8gUFoNzKK0Hz5gdlZcDk7/H0KnaKgaZuFexSL46otnerlftH7eC3Zt/5qz25D4DpDOlIwXLwDs9a0H6fe6N/XAQDUt+mmoPMfUKS7zHuFcZtRX9pjhwvP2Jaa0p6Czb9uIssuIcEp6+6FTpk1fudCRz8TlIjVjfYUvPM3w9hKdwQ+m3HuWG8/hfX9bQLcsZvCLv92wlSr2xOfT5bJtkM0L/zpX8ilPMC4Gjy7CnbTV9MPvRrfEYK7dgpnGaHilIyHpbyM6x5tNWMx8TDb8YKWPPB6ztZdI4CN8Y5omltIaH8Ip859Z+/O6GBjh4Xwmqk74m8J3y27BbjBAx+gFKTvC9HEsgTkfVxmcNLInuz79zXL9TNVOpv67ro8lYzDvtVDlb/7l3RWVcTVcI0EVuiYF33JGTyIqvSAOqhlOsS1OUDusLvddkrIjS21wSqCQouXV9ooKF4ZkqelC6MnKqrpxJc0MoCNDoCaDyO9s9dhu9aB0Gb6l+VAPUmYw7v3VxuCKYRoGHHD3MOZl8ID7+mhrO6S/zREp8q1NFaXmbQjAWuU7EgUs5RTIKVpsfynCaSuhvY3q2vApkWvN37XNN4DI3bqjp34GZ+lbhfxA5i3xqi1uGnBcSEfmfNB7fxPrM76b0oy086t9h5x/FJkpcd3p+7R3cu6PTW7Gw6/a7RHvTbaH99Q1d9ugSfS3zILnTQNRX+zhrQFvcEQp49/OSs898I6aqlkN871UxczaRpb86cJcHzv7MCG7e697SSvU4T4GtP9kXwEpNF7IKs1fRDve+zUkMBc/ILUAo9Whl50Xth1gEJZBn/12H2C1DGEa7NMHwq59UARDboTgvrvhr3wdfVTuLWIMbeTuxmY681j2M2ntcwRxENqsmseRTH58BoTkSQ6mJ+DjTynKHod/r8xyKRKVEAmla/3jVYQutT9WErL7WcTuXHrqc5b5VSW66mEjawkS1ULjelFGmsrMd1t+yWesPaJw1PnDUFSf4i8nuejxLR8eXDzrsA/lHqLeq+ipBQ7ZS202UeIsGadUjOm6efxUkONYavNPVScSfhNSnd71wdCSafLG6DiIEG0UatO5qASWpnnMVplC+TGHV6CQt7D3vay8rwAMZzsikW1Qg8wZNqnuLNH/lHeakYle4w4buPyI4wNu506M0C7jpdsWgzfJMjQQz47iW9D/G8uZ+PHqU+0yzNV3aKVq2OzbI5ioPnUfC1DM5mLNgbY3b2pgZSDiz9+w7QV3qXWie5LzMGyJTPDXmwOoAm7yyTP+H0QWfX90Iwz/qd+O7rhzpGuRqtpykiSwPpcuYvEoLQr6hZXOnEjYCzl3SvXi59YStHVQ6yajjbLOu6wRyZrdE7I+5Dv8Wh2+DWZ+N5Wn6gXQ8TAFbuglPlf/J9Uu23lHbaYVL/qi4ffNEPolnneJ1VRMDPwOImOIJkkMJ36DDcROQh9YqY4B9K5jhhwuRjLKgH+A2G0wr1MSxvNboVlpNuSX88GtRDQjDf1uYnFOSH8dfRrFeCezaIlFv/r4te7XK5WsP5v9Tf78HOeDpnlf5rdrGB3MHKUfoL58h7Wz1Yw+us3h0d+gDE7jXejr4GP6ecrBufvMARSeXkLxpjyR9FojCfZmGJKi5kVTNpJIWh94YK/8C67sDYpU30xjV8qfTseChqgTrQtXgyBgHbG+uYXPSCbiZqgCPPa7odw35vLdWK1HypPJZKLN3OynEn25Uye+30Pd+VETj6lGfUSM1Qrt5LhXMHN1P6VXMlWuqLLN22xVW0OHq0v3JPVHBtYgpJNPmy10lQ5E0NAYElApUkvNfI9nGd0+O7w1UNvSNCoMwU0Sabs0bDnOlkREaTrcxMxKjhdBHaW5g+0+hw2VSPl2U3m8HsWn5LpHABDlI/t+SUbZCIY8USSKi1DzPTN6GkRwzd+1kKDVxUSKspEPOwpNjw2nWY2uojAFVI0F//0yEa32QGlXRIcFTFOeCTgKIpBv5AtXnyH0Ts5oeUSrCkvDIFJLS+j2/xKWC/Ek0o4Q12MpXPy3yCCNKF2YdosWFpkyIt5qqnv6EDo0OU8W583jCMUbTE3T1GSbLlRCJ2Lo0w0zkv0xSYoXD0Q1y3pGWaGznITr5FmIXUYr43OIX8XI//HGaGAIXVBWay/xB6t3BWV7Iy825pAvkuayBvWIEbHNV2i/S6q/StuGhFdYeaSZQ8WQeuMx2Mb+oAs2E1YTmPeGxPz09YSXBRfPKIMQarG/uYWlWjn3NO06nHYrvgbAOxWY83p593R8CBGiNi6sdt35xW/iI2RP1xOV5TSe5I64Hf21PDSScDdZGP7gfpQT0h9qkRnsEsNEjPvjk7lm5XZ3409mJzZxZQDmmqcYh4jStFi66FeX3CWFzeRoMlr/W5l1CSKO4hb5v+uGaxciPOUHjw0HreMJJReImBQfDBaKkrjifO4bieLfbVendcUrwyyPk8a/tf+oMM95L++2Br+L3osH8GUZanFrmnK8RVXJFrCpZSKWwrmkc66GenD9VSlv1O+XaWcvTHRH9ZJa0P9vIGDmsBaVUANkfNpCqMAZXtjPeZ9BEJD+rJtRMenKfsaVAFFXEc4JuCGL0sCd7u8rDcn7ZZxUz7PMJBTVr0fbRTGf3PbvgnsGTnoyYSXlJUYGJApTd0lDxq/CVhpSporkY/QtwNbpsYeQK5bDI6VZALKIwqOJqlpOQ10PBVRaL7r4DhSt2Jsmrqe4Zqd1T4O6Ta6A2UzaXCbxBb+MPYSDZvQwhlyLSz/7mx0dQnDz5BC0vzyiljS8rlVfKJ0tRXBF3ALwLTMgo1l4UsPlpKwtE6SeRBTPJF0bXzRtpRzrbLM7TSFUfqCxaIdOoDirjZsDvqnS2qDmCQg4iNY2CS1TfvlyEk/rb5GHWsWLWTUzoRjrJkFIOIHY9UhZVzayTaDUqdqe0njWEFRU/fAQOxILwbxPS0bMEJsxzb8lsXvdXI80i4aEhNmoE7uK/6iMCRRE7+z268nuXVs/MjSbBNrMtWhYFPue5cjX+2cE3Xft1qTEjtJ91w9OctRNFndKy9RkjqnLvjc6pjWFoi0F9FA+cYZeldIAV5zQgm8zPFMM0xxJ9vXCHtzN7jkSI2OuzxVq4KAskoOxK0FWliLKttFRph/8wBtvbIXHdwqeEEGCbMhvLEA8Uu7rY7+MP7C6K/t96uBQi06UDwAu0nzX9WdTIYF6C4d7+qDeidbCwHk/AcfXUqgjBdmgGoeAYxofeYzJwpV84HHR2hKgz9asq63OnNb129PGxaA+wYp5Y+WCN2+nJErZUttdQBgErt3b5HZb/m1P5ff3+S+upvOV3eb21c3nWn+YY3cIWRXTNsDUMyd+W9n3U60WAD7oPIzeo1kP724+SStVPdgUQTXTAG0X8xnbj3YDWehOH3oLFAyzqoE1Udug4OP2jFM760d7yKxMGWL1o6WD2AnaXMH4HznxzXc/Sts5MgWzPP+4wl8+xVW8LMzckVVXi2liZqSVaXex3teLNTgP9mXb4eonN282igs0P7Qfq833rvQzcIhgQnDb4HjopuyX8xD4Ubl2cUBoNZuZUkWPrbpkzDAv2/8ujdxoT3f29CUl0KDgJMYBzI31ueprZQwB35UyslYdwldQbjmi1KWEBbM3f2c7fSDkPpo6XCRq1L4/tA3CVZxqK0gDOAvbK3Fk/VjTsVDloyW5KsC2E4xaFz/Rre9/kO+Qeya6dS/bFUOkLbpF26u/B3CkdnUvMb3iShinTMZDWbU5EUTGnBk3P9br5NMB2rLJGO9OS9HFdo77Ew1uwVIbQf8QjUUb2+RPS/954z6a9KHhv+aH3KMQikPNh4+aTZ+ndjDLzm1MBltMxnHL/u2P+GdL7D0WNDOF1h6Pqe7Rzh8Sy9w3GJdRpNCywfkVdJK3hqvyoTS9rZ04OmtZ2Zl8n3q76lF+rFqa59fAdI6cjUZLLNKQg/Qrm4A4DBVGzE8OEM3DvxIfi7eHmO3WnwLihVGrB6L0FiR9XlWq406quF8hQbxdFsR45V43JXugqtsglQwWlZb2Ez33G0BV7PzHwBADQEfvZ+dBuJzbtcFZNcM36wkt2TYQHfWH3XAd+kVTHOgU42ewLQJLMbxXg7YkT92B/Cq/207AICqWsLz/KMP1bOEl5YrtdmOcXyoHb68OUAPqIGmIwp8dF8lbTNWXTbmAQDTAQK7uNsCaLqZ9AFc+NmZAKr1G+IBuOmACsmFIz71E8yH/+dUrZd+rpWO6zPV/7XQnYD94vR9v0CWBQoFdV1SkWIr1mXu5/GbePAhfr3zGeX0UO61AdRrKXVA+H5K8+H/OTVbZZZT8MlJvXMUdZPa7+mHkiImfMWE2SwrzMgfqwX+uiWOh9y1z4Ma5eGhfGwDmA2z4i2cyycvITx6XX7FfrDe5NYcP9InMGYVA7lCSV9dNwCgIS3ADa7rej9IMz8Xu3Z9530kzWKFEe6mRWisyBjhjhaaJM7iLlsRrdVEwpXuwpxsAlXSW1dbsLd7LhHg253/AEAvDuCe92MYkOncUgK044qDBXT0/sIC59ArwM1CsZVtP06Hqni3ss4/edE+8cTXEzvYI0yHD95a5CDQWvrqugCA8ygr66uR8laM1AuH0P76xsNv4jf+Q6Zpf356R6czwlAnQlX4zDYXZJjpOY9QkHFjRwEAMDYgVzNb/GuQ4wlvy3kkFDj4QbehlHq3DgBAeyDClueiueJItEg06j8jxTRnfbNp/rXIqTqunX8751d67bzbvkiMVs/1gs+8owm9Kb6R9vn/dnwPiGbHFEtpcA00Rlti/tMur//7387O+bT8b3M7U23Tfl6XlA+aNoFvIaN/T9L69ct8p0/qM+LKihf2OJ94hJ9d3qYRpsxwZterU5WlCatqpK+eGwBYCatHhDVDiq3J4ftOYimLvolYXm3tWMEmAK9YYcSugQj3rkg8XAm7KNxL4sSN4uoQAQBLd2p9gmVvOYhWWkqfBue4BcYMtOsfAODKUAn0fmSHsoLKhe2lwiklTq5wOvzLujhRcgWZjl45UhQil/HqwUS1lF+gu2UYiGpd7sTVZJZYV7yO7knX5g009jviMvnmyo/7kUM6/m0/V5Tom90tHZdkfea1Kzefu/Yt+XGplWnXr7Y2/Z4q3m5p24q6tO34XZk2/N4F2++7crv5T7Sb/Bw97SUbDvyVa7OvjBa0tdVXWTt9tbXRV0/7fHX8sF7qdvmmaZOvXLzah/h+uYb3XnUbfOX8LO/71NTt7tXU5t7zz9qQ4j7rf59+0cK9PnMj+z9/zi6Qeqp5FR+9U6LY1lZ3qhJFkAhYRAYJWwzlPrCcHsTUmLopAAA8D5y03Zu22QfOM2g3HfGuilKeKP5ZReUIei3tygMAbiLIxdjCuaqTzTpxa/2PGPey+cDt4kvCxtYZuT0lYwKbYeXEcGUIyljnieJImlF6PvEQGnf6VdlbWMXTR/WeeOCddVxzIxw6w3RJty6PuzpqFQPOevQI5HQ5Zz3wNX9vOGIhf5f6YoRDZaiBUdXsjk1MWH35d90AAAuFGnXhwfrNY4E3t767/fvfooUYsC0MNyQvc4jBbpLARZwVN2sTIgDQFHRV8AnWtVX2Wu0D7F7z3N3CVnSN1xv/AQCVoEpv70crCTk7zZsAi10T3/ZCVoCdM/S3cWjNtFLXnFfg3vV49/vtEjUnKDOM11LdPbcKkJ6uh10xnlm6XcWMZ87emPZ4dtjY1A4AuMR4BDq+jHh2NOi2CwntAnsrDRIY3sY8AEA+4GQDh07nKoez5WRQs5wQcTi3XjZKcnhBrwEVObzVA1BTWvSlc5Ut14eT4uJJi8lnaEeYJgsM9TVSkdVVVlHPkP04Hvr45fHlCNNjGcMGUDej5UmY6kGa9z4K/cTy29en/IxwmCxCzCpYYd5UD0r8bABfEovhp0HeIxweyyI2gFkJK15Bmx7wrnW9IhZKeOMfjnC4JDOIUx0EcneQvrpuACAd4o8b4ze3C+zQ2KV3xEqKFuJCN1eUA5LK4Ro3SdSKu28TIgDQIHRx8QmWtdnqXO0DeNk9l2sgzZ3/AACXAtTj/VgF6NppZgAYY4rjMKWCPI5eWTKtVDu0C3Q7MA/vt5bnGqXMHircTz9nHukZLJk9/OxWelBRulIJo3Uh0UJmrqSv3gYAGI9Wv6VJxlJfueb8UcpmSUslo27HMOJAWxYGxCf683cFIZyhDE4ZQmz3nDlYCInmoZ0AAEgbqasgrJlvhz7p7nEgtrf7w/F6dBXs27ADAHgLEk55ShHFUbnMGOBoHHEscEQcOyMgEYuj0gNu/vflbgW29U4qH6V8psboq5LPVJIgPkFWG/6/d5UQuu9sTuo9qPt2GV42c3cpttRHM/UJyrBSwDlthgDApbchLlJATb5QlybSdesYuqfMmyKJpK3x59uXTvh3iapyuAJFQFCtAQmUBUZnAyIAAIBJl/p494gMSlN7DXTpYEmg9OZ/AKADaA60f7Zimoq2zOY2aMsYb4O2fku3KZaUQHcXqIETXQh+wc4t4DywsPNfNsfjmv6ud//y57795vwpWiXvgY7P/7+YFaoYQFaZVXRRM6GnTHlvwk2LDfzCF9l87anDrljZxzirOZ3xYLKCo/S/JzrP6zuiyFhoU+MPr5M2bdwdr1exrvi3MExuar5VWzErTwKfv4M6+sV8Z7j7vqncP2xlzjubN/uL5gX/Ppc5Fz66HABClsrtyrteJJtA6u2NQSn2IQ19CKUpnwIAAolKZdrxaek+ZLHbTive06zangrLYGJY4KktDwBYr2ZVJx54OQennguqRm1lNDZUPdvL1iyharPXIHZB3dqhKLPMJF04zvLBXdA0lvOr5JYV74/ByzCemBe6vuD6s4iKo7MzdByUS+yhqJmbC98R0h1D1CesnHUvwnnCbrf0lRkCACt9+3yk9lgYB795cOBl7PndjZYGh/toC2NaXJc5xKjrkoAOPCkrgtiaBV/pLqTHJ9peADvNc3OrRpJrmd74DwCEhG732j+LSKKibbO5A1oY4x3Q4pGdQukBSNsEunZNCkC3OXFfZhcpkep1kTCUyA4GkkOoa3e7a6Sh7qremLFk7G7vagcAPFVQA7vlM6cYG+NhO3OOMTlTWXH4Tjm89KY8AGBKq8VUDmi4uFSAaboZuYAZ+NnKAqP1G1wERmiCcq2g6/Ud2BeFz5NnZn+C+MZ6K87daYGhbkIqZN+jcZnf7PknieHPKo3caXmyBlAPoeUJminbb2WV+J49/u7hd95ozphpEWK2uAplCR69FvrOvm2Qqu6jNV6m5c4awGxz1YaqlM1aw+TB2eOj+GGo05+n0idIo0oyYZ0sUhs4AODu2fuv1yYTEpYzSECs7Xb/pKxg4bhvr8limqDYKCESWJWI3kr5X+0uqi0Urba7OJS999yueE65J2tr/wGAkUM9xZ9slaIcl2+KtrjcWLTFccVSEdsy2IBk018L","base64")).toString()),CL}var ZAe=new Map([[S.makeIdent(null,"fsevents").identHash,VAe],[S.makeIdent(null,"resolve").identHash,_Ae],[S.makeIdent(null,"typescript").identHash,XAe]]),b4e={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,i]of zAe)e(S.parseDescriptor(r,!0),i)},getBuiltinPatch:async(t,e)=>{var s;let r="compat/";if(!e.startsWith(r))return;let i=S.parseIdent(e.slice(r.length)),n=(s=ZAe.get(i.identHash))==null?void 0:s();return typeof n!="undefined"?n:null},reduceDependency:async(t,e,r,i)=>typeof ZAe.get(t.identHash)=="undefined"?t:S.makeDescriptor(t,S.makeRange({protocol:"patch:",source:S.stringifyDescriptor(t),selector:`~builtin`,params:null}))}},v4e=b4e;var IL={};it(IL,{default:()=>x4e});var V0=class extends Be{constructor(){super(...arguments);this.pkg=Y.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){let e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");let r=S.parseIdent(this.command),i=S.makeIdent(r.scope,`create-${r.name}`);return this.cli.run(["dlx",...e,S.stringifyIdent(i),...this.args])}};V0.paths=[["create"]];var $Ae=V0;var jC=class extends Be{constructor(){super(...arguments);this.packages=Y.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=Y.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=Y.String();this.args=Y.Proxy()}async execute(){return fe.telemetry=null,await T.mktempPromise(async e=>{var p;let r=v.join(e,`dlx-${process.pid}`);await T.mkdirPromise(r),await T.writeFilePromise(v.join(r,"package.json"),`{} -`),await T.writeFilePromise(v.join(r,"yarn.lock"),"");let i=v.join(r,".yarnrc.yml"),n=await fe.findProjectCwd(this.context.cwd,wt.lockfile),s=!(await fe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),o=n!==null?v.join(n,".yarnrc.yml"):null;o!==null&&T.existsSync(o)?(await T.copyFilePromise(o,i),await fe.updateConfiguration(r,d=>{let m=_(P({},d),{enableGlobalCache:s,enableTelemetry:!1});return Array.isArray(d.plugins)&&(m.plugins=d.plugins.map(E=>{let B=typeof E=="string"?E:E.path,b=M.isAbsolute(B)?B:M.resolve(M.fromPortablePath(n),B);return typeof E=="string"?b:{path:b,spec:E.spec}})),m})):await T.writeFilePromise(i,`enableGlobalCache: ${s} -enableTelemetry: false -`);let a=(p=this.packages)!=null?p:[this.command],l=S.parseDescriptor(this.command).name,c=await this.cli.run(["add","--",...a],{cwd:r,quiet:this.quiet});if(c!==0)return c;this.quiet||this.context.stdout.write(` -`);let u=await fe.find(r,this.context.plugins),{project:g,workspace:f}=await Ke.find(u,r);if(f===null)throw new rt(g.cwd,r);await g.restoreInstallState();let h=await Kt.getWorkspaceAccessibleBinaries(f);return h.has(l)===!1&&h.size===1&&typeof this.packages=="undefined"&&(l=Array.from(h)[0][0]),await Kt.executeWorkspaceAccessibleBinary(f,l,this.args,{packageAccessibleBinaries:h,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};jC.paths=[["dlx"]],jC.usage=ye.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ele=jC;var S4e={commands:[$Ae,ele]},x4e=S4e;var xL={};it(xL,{default:()=>D4e,fileUtils:()=>EL});var hf=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,YC=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Nr="file:";var EL={};it(EL,{makeArchiveFromLocator:()=>_0,makeBufferFromLocator:()=>BL,makeLocator:()=>wL,makeSpec:()=>tle,parseSpec:()=>yL});function yL(t){let{params:e,selector:r}=S.parseRange(t),i=M.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?S.parseLocator(e.locator):null,path:i}}function tle({parentLocator:t,path:e,folderHash:r,protocol:i}){let n=t!==null?{locator:S.stringifyLocator(t)}:{},s=typeof r!="undefined"?{hash:r}:{};return S.makeRange({protocol:i,source:e,selector:e,params:P(P({},s),n)})}function wL(t,{parentLocator:e,path:r,folderHash:i,protocol:n}){return S.makeLocator(t,tle({parentLocator:e,path:r,folderHash:i,protocol:n}))}async function _0(t,{protocol:e,fetchOptions:r,inMemory:i=!1}){let{parentLocator:n,path:s}=S.parseFileStyleRange(t.reference,{protocol:e}),o=v.isAbsolute(s)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(n,r),a=o.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,o.localPath)}:o;o!==a&&o.releaseFs&&o.releaseFs();let l=a.packageFs,c=v.join(a.prefixPath,s);return await de.releaseAfterUseAsync(async()=>await Ai.makeArchiveFromDirectory(c,{baseFs:l,prefixPath:S.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:i}),a.releaseFs)}async function BL(t,{protocol:e,fetchOptions:r}){return(await _0(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var QL=class{supports(e,r){return!!e.reference.startsWith(Nr)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async fetchFromDisk(e,r){return _0(e,{protocol:Nr,fetchOptions:r})}};var k4e=2,bL=class{supportsDescriptor(e,r){return e.range.match(hf)?!0:!!e.range.startsWith(Nr)}supportsLocator(e,r){return!!e.reference.startsWith(Nr)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:n,parentLocator:s}=yL(e.range);if(s===null)throw new Error("Assertion failed: The descriptor should have been bound");let o=await BL(S.makeLocator(e,S.makeRange({protocol:Nr,source:n,selector:n,params:{locator:S.stringifyLocator(s)}})),{protocol:Nr,fetchOptions:i.fetchOptions}),a=mn.makeHash(`${k4e}`,o).slice(0,6);return[wL(e,{parentLocator:s,path:n,folderHash:a,protocol:Nr})]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var vL=class{supports(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromDisk(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Nr}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath)}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.join(o.prefixPath,n),c=await a.readFilePromise(l);return await de.releaseAfterUseAsync(async()=>await Ai.convertToZip(c,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1}),o.releaseFs)}};var SL=class{supportsDescriptor(e,r){return YC.test(e.range)?!!(e.range.startsWith(Nr)||hf.test(e.range)):!1}supportsLocator(e,r){return YC.test(e.reference)?!!e.reference.startsWith(Nr):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return hf.test(e.range)&&(e=S.makeDescriptor(e,`${Nr}${e.range}`)),S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range;return n.startsWith(Nr)&&(n=n.slice(Nr.length)),[S.makeLocator(e,`${Nr}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var P4e={fetchers:[vL,QL],resolvers:[SL,bL]},D4e=P4e;var PL={};it(PL,{default:()=>N4e});var rle=ie(require("querystring")),ile=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function nle(t){return t?ile.some(e=>!!t.match(e)):!1}function sle(t){let e;for(let a of ile)if(e=t.match(a),e)break;if(!e)throw new Error(R4e(t));let[,r,i,n,s="master"]=e,{commit:o}=rle.default.parse(s);return s=o||s.replace(/[^:]*:/,""),{auth:r,username:i,reponame:n,treeish:s}}function R4e(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var kL=class{supports(e,r){return!!nle(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await T.mktempPromise(async n=>{let s=new Ft(n);await Ai.extractArchiveTo(i,s,{stripComponents:1});let o=Uc.splitRepoUrl(e.reference),a=v.join(n,"package.tgz");await Kt.prepareExternalProject(n,a,{configuration:r.project.configuration,report:r.report,workspace:o.extra.workspace,locator:e});let l=await T.readFilePromise(a);return await Ai.convertToZip(l,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:i,username:n,reponame:s,treeish:o}=sle(e.reference);return`https://${i?`${i}@`:""}github.com/${n}/${s}/archive/${o}.tar.gz`}};var F4e={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let i=new kL;if(!i.supports(e,r))return null;try{return await i.fetch(e,r)}catch(n){return null}}}},N4e=F4e;var FL={};it(FL,{default:()=>T4e});var qC=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,JC=/^https?:/;var DL=class{supports(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i=await Zt.get(e.reference,{configuration:r.project.configuration});return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var RL=class{supportsDescriptor(e,r){return qC.test(e.range)?!!JC.test(e.range):!1}supportsLocator(e,r){return qC.test(e.reference)?!!JC.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){return[S.convertDescriptorToLocator(e)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.HARD,conditions:n.getConditions(),dependencies:n.dependencies,peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var L4e={fetchers:[DL],resolvers:[RL]},T4e=L4e;var ML={};it(ML,{default:()=>M5e});var Rle=ie(Dle()),TL=ie(require("util")),WC=class extends Be{constructor(){super(...arguments);this.private=Y.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=Y.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=Y.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.usev2=Y.Boolean("-2",!1,{hidden:!0});this.yes=Y.Boolean("-y,--yes",{hidden:!0});this.assumeFreshProject=Y.Boolean("--assume-fresh-project",!1,{hidden:!0})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return r!==null?await this.executeProxy(e,r):await this.executeRegular(e)}async executeProxy(e,r){if(e.projectCwd!==null&&e.projectCwd!==this.context.cwd)throw new me("Cannot use the --install flag from within a project subdirectory");T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=v.join(this.context.cwd,e.get("lockfileFilename"));T.existsSync(i)||await T.writeFilePromise(i,"");let n=await this.cli.run(["set","version",r],{quiet:!0});if(n!==0)return n;let s=[];return this.private&&s.push("-p"),this.workspace&&s.push("-w"),this.yes&&s.push("-y"),await T.mktempPromise(async o=>{let{code:a}=await hr.pipevp("yarn",["init",...s],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await Kt.makeScriptEnv({binFolder:o})});return a})}async executeRegular(e){var l;let r=null;try{r=(await Ke.find(e,this.context.cwd)).project}catch{r=null}T.existsSync(this.context.cwd)||await T.mkdirPromise(this.context.cwd,{recursive:!0});let i=await Ze.tryFind(this.context.cwd)||new Ze,n=Object.fromEntries(e.get("initFields").entries());i.load(n),i.name=(l=i.name)!=null?l:S.makeIdent(e.get("initScope"),v.basename(this.context.cwd)),i.packageManager=Zr&&de.isTaggedYarnVersion(Zr)?`yarn@${Zr}`:null,typeof i.raw.private=="undefined"&&(this.private||this.workspace&&i.workspaceDefinitions.length===0)&&(i.private=!0),this.workspace&&i.workspaceDefinitions.length===0&&(await T.mkdirPromise(v.join(this.context.cwd,"packages"),{recursive:!0}),i.workspaceDefinitions=[{pattern:"packages/*"}]);let s={};i.exportTo(s),TL.inspect.styles.name="cyan",this.context.stdout.write(`${(0,TL.inspect)(s,{depth:Infinity,colors:!0,compact:!1})} -`);let o=v.join(this.context.cwd,Ze.fileName);await T.changeFilePromise(o,`${JSON.stringify(s,null,2)} -`,{automaticNewlines:!0});let a=v.join(this.context.cwd,"README.md");if(T.existsSync(a)||await T.writeFilePromise(a,`# ${S.stringifyIdent(i.name)} -`),!r||r.cwd===this.context.cwd){let c=v.join(this.context.cwd,wt.lockfile);T.existsSync(c)||await T.writeFilePromise(c,"");let g=["/.yarn/*","!/.yarn/patches","!/.yarn/plugins","!/.yarn/releases","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(m=>`${m} -`).join(""),f=v.join(this.context.cwd,".gitignore");T.existsSync(f)||await T.writeFilePromise(f,g);let h={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};(0,Rle.default)(h,e.get("initEditorConfig"));let p=`root = true -`;for(let[m,E]of Object.entries(h)){p+=` -[${m}] -`;for(let[B,b]of Object.entries(E))p+=`${B.replace(/[A-Z]/g,H=>`_${H.toLowerCase()}`)} = ${b} -`}let d=v.join(this.context.cwd,".editorconfig");T.existsSync(d)||await T.writeFilePromise(d,p),T.existsSync(v.join(this.context.cwd,".git"))||await hr.execvp("git",["init"],{cwd:this.context.cwd})}}};WC.paths=[["init"]],WC.usage=ye.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Fle=WC;var T5e={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:ge.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:ge.MAP,valueDefinition:{description:"",type:ge.ANY}}},commands:[Fle]},M5e=T5e;var GL={};it(GL,{default:()=>K5e});var Ua="portal:",Ha="link:";var OL=class{supports(e,r){return!!e.reference.startsWith(Ua)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ua}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot}}};var KL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ua)}supportsLocator(e,r){return!!e.reference.startsWith(Ua)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ua.length);return[S.makeLocator(e,`${Ua}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let i=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),n=await de.releaseAfterUseAsync(async()=>await Ze.find(i.prefixPath,{baseFs:i.packageFs}),i.releaseFs);return _(P({},e),{version:n.version||"0.0.0",languageName:n.languageName||r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:n.getConditions(),dependencies:new Map([...n.dependencies]),peerDependencies:n.peerDependencies,dependenciesMeta:n.dependenciesMeta,peerDependenciesMeta:n.peerDependenciesMeta,bin:n.bin})}};var UL=class{supports(e,r){return!!e.reference.startsWith(Ha)}getLocalPath(e,r){let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha});if(v.isAbsolute(n))return n;let s=r.fetcher.getLocalPath(i,r);return s===null?null:v.resolve(s,n)}async fetch(e,r){var c;let{parentLocator:i,path:n}=S.parseFileStyleRange(e.reference,{protocol:Ha}),s=v.isAbsolute(n)?{packageFs:new Ft(Se.root),prefixPath:Se.dot,localPath:Se.root}:await r.fetcher.fetch(i,r),o=s.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,s.localPath),localPath:Se.root}:s;s!==o&&s.releaseFs&&s.releaseFs();let a=o.packageFs,l=v.resolve((c=o.localPath)!=null?c:o.packageFs.getRealPath(),o.prefixPath,n);return s.localPath?{packageFs:new Ft(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0,localPath:l}:{packageFs:new Zo(l,{baseFs:a}),releaseFs:o.releaseFs,prefixPath:Se.dot,discardFromLookup:!0}}};var HL=class{supportsDescriptor(e,r){return!!e.range.startsWith(Ha)}supportsLocator(e,r){return!!e.reference.startsWith(Ha)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){return S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(Ha.length);return[S.makeLocator(e,`${Ha}${M.toPortablePath(n)}`)]}async getSatisfying(e,r,i){return null}async resolve(e,r){return _(P({},e),{version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:gt.SOFT,conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map})}};var O5e={fetchers:[UL,OL],resolvers:[HL,KL]},K5e=O5e;var mT={};it(mT,{default:()=>Y6e});var Ga;(function(i){i[i.YES=0]="YES",i[i.NO=1]="NO",i[i.DEPENDS=2]="DEPENDS"})(Ga||(Ga={}));var jL=(t,e)=>`${t}@${e}`,Nle=(t,e)=>{let r=e.indexOf("#"),i=r>=0?e.substring(r+1):e;return jL(t,i)},qs;(function(s){s[s.NONE=-1]="NONE",s[s.PERF=0]="PERF",s[s.CHECK=1]="CHECK",s[s.REASONS=2]="REASONS",s[s.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"})(qs||(qs={}));var Tle=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),i=e.check||r>=9,n=e.hoistingLimits||new Map,s={check:i,debugLevel:r,hoistingLimits:n,fastLookupPossible:!0},o;s.debugLevel>=0&&(o=Date.now());let a=U5e(t,s),l=!1,c=0;do l=YL(a,[a],new Set([a.locator]),new Map,s).anotherRoundNeeded,s.fastLookupPossible=!1,c++;while(l);if(s.debugLevel>=0&&console.log(`hoist time: ${Date.now()-o}ms, rounds: ${c}`),s.debugLevel>=1){let u=zC(a);if(YL(a,[a],new Set([a.locator]),new Map,s).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: -${u}, next tree: -${zC(a)}`);let f=Lle(a);if(f)throw new Error(`${f}, after hoisting finished: -${zC(a)}`)}return s.debugLevel>=2&&console.log(zC(a)),H5e(a)},G5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=s=>{if(!i.has(s)){i.add(s);for(let o of s.hoistedDependencies.values())r.set(o.name,o);for(let o of s.dependencies.values())s.peerNames.has(o.name)||n(o)}};return n(e),r},j5e=t=>{let e=t[t.length-1],r=new Map,i=new Set,n=new Set,s=(o,a)=>{if(i.has(o))return;i.add(o);for(let c of o.hoistedDependencies.values())if(!a.has(c.name)){let u;for(let g of t)u=g.dependencies.get(c.name),u&&r.set(u.name,u)}let l=new Set;for(let c of o.dependencies.values())l.add(c.name);for(let c of o.dependencies.values())o.peerNames.has(c.name)||s(c,l)};return s(e,n),r},Mle=(t,e)=>{if(e.decoupled)return e;let{name:r,references:i,ident:n,locator:s,dependencies:o,originalDependencies:a,hoistedDependencies:l,peerNames:c,reasons:u,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:p,hoistedTo:d}=e,m={name:r,references:new Set(i),ident:n,locator:s,dependencies:new Map(o),originalDependencies:new Map(a),hoistedDependencies:new Map(l),peerNames:new Set(c),reasons:new Map(u),decoupled:!0,isHoistBorder:g,hoistPriority:f,isWorkspace:h,hoistedFrom:new Map(p),hoistedTo:new Map(d)},E=m.dependencies.get(r);return E&&E.ident==m.ident&&m.dependencies.set(r,m),t.dependencies.set(m.name,m),m},Y5e=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let n of t.dependencies.values())t.peerNames.has(n.name)||r.set(n.name,[n.ident]);let i=Array.from(e.keys());i.sort((n,s)=>{let o=e.get(n),a=e.get(s);return a.hoistPriority!==o.hoistPriority?a.hoistPriority-o.hoistPriority:a.peerDependents.size!==o.peerDependents.size?a.peerDependents.size-o.peerDependents.size:a.dependents.size-o.dependents.size});for(let n of i){let s=n.substring(0,n.indexOf("@",1)),o=n.substring(s.length+1);if(!t.peerNames.has(s)){let a=r.get(s);a||(a=[],r.set(s,a)),a.indexOf(o)<0&&a.push(o)}}return r},qL=t=>{let e=new Set,r=(i,n=new Set)=>{if(!n.has(i)){n.add(i);for(let s of i.peerNames)if(!t.peerNames.has(s)){let o=t.dependencies.get(s);o&&!e.has(o)&&r(o,n)}e.add(i)}};for(let i of t.dependencies.values())t.peerNames.has(i.name)||r(i);return e},YL=(t,e,r,i,n,s=new Set)=>{let o=e[e.length-1];if(s.has(o))return{anotherRoundNeeded:!1,isGraphChanged:!1};s.add(o);let a=J5e(o),l=Y5e(o,a),c=t==o?new Map:n.fastLookupPossible?G5e(e):j5e(e),u,g=!1,f=!1,h=new Map(Array.from(l.entries()).map(([d,m])=>[d,m[0]])),p=new Map;do{let d=q5e(t,e,r,c,h,l,i,p,n);d.isGraphChanged&&(f=!0),d.anotherRoundNeeded&&(g=!0),u=!1;for(let[m,E]of l)E.length>1&&!o.dependencies.has(m)&&(h.delete(m),E.shift(),h.set(m,E[0]),u=!0)}while(u);for(let d of o.dependencies.values())if(!o.peerNames.has(d.name)&&!r.has(d.locator)){r.add(d.locator);let m=YL(t,[...e,d],r,p,n);m.isGraphChanged&&(f=!0),m.anotherRoundNeeded&&(g=!0),r.delete(d.locator)}return{anotherRoundNeeded:g,isGraphChanged:f}},W5e=(t,e,r,i,n,s,o,a,{outputReason:l,fastLookupPossible:c})=>{let u,g=null,f=new Set;l&&(u=`${Array.from(e).map(m=>wi(m)).join("\u2192")}`);let h=r[r.length-1],d=!(i.ident===h.ident);if(l&&!d&&(g="- self-reference"),d&&(d=!i.isWorkspace,l&&!d&&(g="- workspace")),d&&(d=!h.isWorkspace||h.hoistedFrom.has(i.name)||e.size===1,l&&!d&&(g=h.reasons.get(i.name))),d&&(d=!t.peerNames.has(i.name),l&&!d&&(g=`- cannot shadow peer: ${wi(t.originalDependencies.get(i.name).locator)} at ${u}`)),d){let m=!1,E=n.get(i.name);if(m=!E||E.ident===i.ident,l&&!m&&(g=`- filled by: ${wi(E.locator)} at ${u}`),m)for(let B=r.length-1;B>=1;B--){let R=r[B].dependencies.get(i.name);if(R&&R.ident!==i.ident){m=!1;let H=a.get(h);H||(H=new Set,a.set(h,H)),H.add(i.name),l&&(g=`- filled by ${wi(R.locator)} at ${r.slice(0,B).map(L=>wi(L.locator)).join("\u2192")}`);break}}d=m}if(d&&(d=s.get(i.name)===i.ident,l&&!d&&(g=`- filled by: ${wi(o.get(i.name)[0])} at ${u}`)),d){let m=!0,E=new Set(i.peerNames);for(let B=r.length-1;B>=1;B--){let b=r[B];for(let R of E){if(b.peerNames.has(R)&&b.originalDependencies.has(R))continue;let H=b.dependencies.get(R);H&&t.dependencies.get(R)!==H&&(B===r.length-1?f.add(H):(f=null,m=!1,l&&(g=`- peer dependency ${wi(H.locator)} from parent ${wi(b.locator)} was not hoisted to ${u}`))),E.delete(R)}if(!m)break}d=m}if(d&&!c)for(let m of i.hoistedDependencies.values()){let E=n.get(m.name);if(!E||m.ident!==E.ident){d=!1,l&&(g=`- previously hoisted dependency mismatch, needed: ${wi(m.locator)}, available: ${wi(E==null?void 0:E.locator)}`);break}}return f!==null&&f.size>0?{isHoistable:2,dependsOn:f,reason:g}:{isHoistable:d?0:1,reason:g}},q5e=(t,e,r,i,n,s,o,a,l)=>{let c=e[e.length-1],u=new Set,g=!1,f=!1,h=(m,E,B,b)=>{if(u.has(B))return;let R=[...E,B.locator],H=new Map,L=new Map;for(let q of qL(B)){let A=W5e(c,r,[c,...m,B],q,i,n,s,a,{outputReason:l.debugLevel>=2,fastLookupPossible:l.fastLookupPossible});if(L.set(q,A),A.isHoistable===2)for(let V of A.dependsOn){let W=H.get(V.name)||new Set;W.add(q.name),H.set(V.name,W)}}let K=new Set,J=(q,A,V)=>{if(!K.has(q)){K.add(q),L.set(q,{isHoistable:1,reason:V});for(let W of H.get(q.name)||[])J(B.dependencies.get(W),A,l.debugLevel>=2?`- peer dependency ${wi(q.locator)} from parent ${wi(B.locator)} was not hoisted`:"")}};for(let[q,A]of L)A.isHoistable===1&&J(q,A,A.reason);for(let q of L.keys())if(!K.has(q)){f=!0;let A=o.get(B);A&&A.has(q.name)&&(g=!0),B.dependencies.delete(q.name),B.hoistedDependencies.set(q.name,q),B.reasons.delete(q.name);let V=c.dependencies.get(q.name);if(l.debugLevel>=2){let W=Array.from(E).concat([B.locator]).map(F=>wi(F)).join("\u2192"),X=c.hoistedFrom.get(q.name);X||(X=[],c.hoistedFrom.set(q.name,X)),X.push(W),B.hoistedTo.set(q.name,Array.from(e).map(F=>wi(F.locator)).join("\u2192"))}if(!V)c.ident!==q.ident&&(c.dependencies.set(q.name,q),b.add(q));else for(let W of q.references)V.references.add(W)}if(l.check){let q=Lle(t);if(q)throw new Error(`${q}, after hoisting dependencies of ${[c,...m,B].map(A=>wi(A.locator)).join("\u2192")}: -${zC(t)}`)}let ne=qL(B);for(let q of ne)if(K.has(q)){let A=L.get(q);if((n.get(q.name)===q.ident||!B.reasons.has(q.name))&&A.isHoistable!==0&&B.reasons.set(q.name,A.reason),!q.isHoistBorder&&R.indexOf(q.locator)<0){u.add(B);let W=Mle(B,q);h([...m,B],[...E,B.locator],W,d),u.delete(B)}}},p,d=new Set(qL(c));do{p=d,d=new Set;for(let m of p){if(m.locator===c.locator||m.isHoistBorder)continue;let E=Mle(c,m);h([],Array.from(r),E,d)}}while(d.size>0);return{anotherRoundNeeded:g,isGraphChanged:f}},Lle=t=>{let e=[],r=new Set,i=new Set,n=(s,o,a)=>{if(r.has(s)||(r.add(s),i.has(s)))return;let l=new Map(o);for(let c of s.dependencies.values())s.peerNames.has(c.name)||l.set(c.name,c);for(let c of s.originalDependencies.values()){let u=l.get(c.name),g=()=>`${Array.from(i).concat([s]).map(f=>wi(f.locator)).join("\u2192")}`;if(s.peerNames.has(c.name)){let f=o.get(c.name);(f!==u||!f||f.ident!==c.ident)&&e.push(`${g()} - broken peer promise: expected ${c.ident} but found ${f&&f.ident}`)}else{let f=a.hoistedFrom.get(s.name),h=s.hoistedTo.get(c.name),p=`${f?` hoisted from ${f.join(", ")}`:""}`,d=`${h?` hoisted to ${h}`:""}`,m=`${g()}${p}`;u?u.ident!==c.ident&&e.push(`${m} - broken require promise for ${c.name}${d}: expected ${c.ident}, but found: ${u.ident}`):e.push(`${m} - broken require promise: no required dependency ${c.name}${d} found`)}}i.add(s);for(let c of s.dependencies.values())s.peerNames.has(c.name)||n(c,l,s);i.delete(s)};return n(t,t.dependencies,t),e.join(` -`)},U5e=(t,e)=>{let{identName:r,name:i,reference:n,peerNames:s}=t,o={name:i,references:new Set([n]),locator:jL(r,n),ident:Nle(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(s),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,isWorkspace:!0,hoistedFrom:new Map,hoistedTo:new Map},a=new Map([[t,o]]),l=(c,u)=>{let g=a.get(c),f=!!g;if(!g){let{name:h,identName:p,reference:d,peerNames:m,hoistPriority:E,isWorkspace:B}=c,b=e.hoistingLimits.get(u.locator);g={name:h,references:new Set([d]),locator:jL(p,d),ident:Nle(p,d),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(m),reasons:new Map,decoupled:!0,isHoistBorder:b?b.has(h):!1,hoistPriority:E||0,isWorkspace:B||!1,hoistedFrom:new Map,hoistedTo:new Map},a.set(c,g)}if(u.dependencies.set(c.name,g),u.originalDependencies.set(c.name,g),f){let h=new Set,p=d=>{if(!h.has(d)){h.add(d),d.decoupled=!1;for(let m of d.dependencies.values())d.peerNames.has(m.name)||p(m)}};p(g)}else for(let h of c.dependencies)l(h,g)};for(let c of t.dependencies)l(c,o);return o},JL=t=>t.substring(0,t.indexOf("@",1)),H5e=t=>{let e={name:t.name,identName:JL(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),i=(n,s,o)=>{let a=r.has(n),l;if(s===n)l=o;else{let{name:c,references:u,locator:g}=n;l={name:c,identName:JL(g),references:u,dependencies:new Set}}if(o.dependencies.add(l),!a){r.add(n);for(let c of n.dependencies.values())n.peerNames.has(c.name)||i(c,n,l);r.delete(n)}};for(let n of t.dependencies.values())i(n,t,e);return e},J5e=t=>{let e=new Map,r=new Set([t]),i=o=>`${o.name}@${o.ident}`,n=o=>{let a=i(o),l=e.get(a);return l||(l={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(a,l)),l},s=(o,a)=>{let l=!!r.has(a);if(n(a).dependents.add(o.ident),!l){r.add(a);for(let u of a.dependencies.values()){let g=n(u);g.hoistPriority=Math.max(g.hoistPriority,u.hoistPriority),a.peerNames.has(u.name)?g.peerDependents.add(a.ident):s(a,u)}}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||s(t,o);return e},wi=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let i=t.substring(e+1);if(i==="workspace:.")return".";if(i){let n=(i.indexOf("#")>0?i.split("#")[1]:i).replace("npm:","");return i.startsWith("virtual")&&(r=`v:${r}`),n.startsWith("workspace")&&(r=`w:${r}`,n=""),`${r}${n?`@${n}`:""}`}else return`${r}`},Ole=5e4,zC=t=>{let e=0,r=(n,s,o="")=>{if(e>Ole||s.has(n))return"";e++;let a=Array.from(n.dependencies.values()).sort((c,u)=>c.name.localeCompare(u.name)),l="";s.add(n);for(let c=0;c":"")+(f!==u.name?`a:${u.name}:`:"")+wi(u.locator)+(g?` ${g}`:"")+(u!==n&&h.length>0?`, hoisted from: ${h.join(", ")}`:"")} -`,l+=r(u,s,`${o}${cOle?` -Tree is too large, part of the tree has been dunped -`:"")};var Js;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Js||(Js={}));var Sn;(function(i){i.WORKSPACES="workspaces",i.DEPENDENCIES="dependencies",i.NONE="none"})(Sn||(Sn={}));var Kle="node_modules",Hc="$wsroot$";var VC=(t,e)=>{let{packageTree:r,hoistingLimits:i,errors:n,preserveSymlinksRequired:s}=z5e(t,e),o=null;if(n.length===0){let a=Tle(r,{hoistingLimits:i});o=V5e(t,a,e)}return{tree:o,errors:n,preserveSymlinksRequired:s}},ms=t=>`${t.name}@${t.reference}`,WL=t=>{let e=new Map;for(let[r,i]of t.entries())if(!i.dirList){let n=e.get(i.locator);n||(n={target:i.target,linkType:i.linkType,locations:[],aliases:i.aliases},e.set(i.locator,n)),n.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((i,n)=>{let s=i.split(v.delimiter).length,o=n.split(v.delimiter).length;return s!==o?o-s:n.localeCompare(i)});return e},Ule=(t,e)=>{let r=S.isVirtualLocator(t)?S.devirtualizeLocator(t):t,i=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e;return S.areLocatorsEqual(r,i)},zL=(t,e,r,i)=>{if(t.linkType!==Js.SOFT)return!1;let n=M.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return v.contains(i,n)===null},_5e=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let i=M.toPortablePath(e.packageLocation.slice(0,-1)),n=new Map,s={children:new Map},o=t.getDependencyTreeRoots(),a=new Map,l=new Set,c=(f,h)=>{let p=ms(f);if(l.has(p))return;l.add(p);let d=t.getPackageInformation(f);if(d){let m=h?ms(h):"";if(ms(f)!==m&&d.linkType===Js.SOFT&&!zL(d,f,t,i)){let E=Hle(d,f,t);(!a.get(E)||f.reference.startsWith("workspace:"))&&a.set(E,f)}for(let[E,B]of d.packageDependencies)B!==null&&(d.packagePeers.has(E)||c(t.getLocator(E,B),f))}};for(let f of o)c(f,null);let u=i.split(v.sep);for(let f of a.values()){let h=t.getPackageInformation(f),d=M.toPortablePath(h.packageLocation.slice(0,-1)).split(v.sep).slice(u.length),m=s;for(let E of d){let B=m.children.get(E);B||(B={children:new Map},m.children.set(E,B)),m=B}m.workspaceLocator=f}let g=(f,h)=>{if(f.workspaceLocator){let p=ms(h),d=n.get(p);d||(d=new Set,n.set(p,d)),d.add(f.workspaceLocator)}for(let p of f.children.values())g(p,f.workspaceLocator||h)};for(let f of s.children.values())g(f,s.workspaceLocator);return n},z5e=(t,e)=>{let r=[],i=!1,n=new Map,s=_5e(t),o=t.getPackageInformation(t.topLevel);if(o===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let a=t.findPackageLocator(o.packageLocation);if(a===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let l=M.toPortablePath(o.packageLocation.slice(0,-1)),c={name:a.name,identName:a.name,reference:a.reference,peerNames:o.packagePeers,dependencies:new Set,isWorkspace:!0},u=new Map,g=(h,p)=>`${ms(p)}:${h}`,f=(h,p,d,m,E,B,b,R)=>{var X,F;let H=g(h,d),L=u.get(H),K=!!L;!K&&d.name===a.name&&d.reference===a.reference&&(L=c,u.set(H,c));let J=zL(p,d,t,l);if(!L){let D=p.linkType===Js.SOFT&&d.name.endsWith(Hc);L={name:h,identName:d.name,reference:d.reference,dependencies:new Set,peerNames:D?new Set:p.packagePeers,isWorkspace:D},u.set(H,L)}let ne;if(J?ne=2:E.linkType===Js.SOFT?ne=1:ne=0,L.hoistPriority=Math.max(L.hoistPriority||0,ne),R&&!J){let D=ms({name:m.identName,reference:m.reference}),he=n.get(D)||new Set;n.set(D,he),he.add(L.name)}let q=new Map(p.packageDependencies);if(e.project){let D=e.project.workspacesByCwd.get(M.toPortablePath(p.packageLocation.slice(0,-1)));if(D){let he=new Set([...Array.from(D.manifest.peerDependencies.values(),pe=>S.stringifyIdent(pe)),...Array.from(D.manifest.peerDependenciesMeta.keys())]);for(let pe of he)q.has(pe)||(q.set(pe,B.get(pe)||null),L.peerNames.add(pe))}}let A=ms({name:d.name.replace(Hc,""),reference:d.reference}),V=s.get(A);if(V)for(let D of V)q.set(`${D.name}${Hc}`,D.reference);(p!==E||p.linkType!==Js.SOFT||!e.selfReferencesByCwd||e.selfReferencesByCwd.get(b))&&m.dependencies.add(L);let W=d!==a&&p.linkType===Js.SOFT&&!d.name.endsWith(Hc)&&!J;if(!K&&!W){let D=new Map;for(let[he,pe]of q)if(pe!==null){let Ne=t.getLocator(he,pe),Pe=t.getLocator(he.replace(Hc,""),pe),qe=t.getPackageInformation(Pe);if(qe===null)throw new Error("Assertion failed: Expected the package to have been registered");let re=zL(qe,Ne,t,l);if(e.validateExternalSoftLinks&&e.project&&re){qe.packageDependencies.size>0&&(i=!0);for(let[De,$]of qe.packageDependencies)if($!==null){let G=S.parseLocator(Array.isArray($)?`${$[0]}@${$[1]}`:`${De}@${$}`);if(ms(G)!==ms(Ne)){let Ce=q.get(De);if(Ce){let ee=S.parseLocator(Array.isArray(Ce)?`${Ce[0]}@${Ce[1]}`:`${De}@${Ce}`);Ule(ee,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with parent dependency ${S.prettyLocator(e.project.configuration,ee)}`})}else{let ee=D.get(De);if(ee){let Ue=ee.target,Oe=S.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${De}@${Ue}`);Ule(Oe,G)||r.push({messageName:z.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK,text:`Cannot link ${S.prettyIdent(e.project.configuration,S.parseIdent(Ne.name))} into ${S.prettyLocator(e.project.configuration,S.parseLocator(`${d.name}@${d.reference}`))} dependency ${S.prettyLocator(e.project.configuration,G)} conflicts with dependency ${S.prettyLocator(e.project.configuration,Oe)} from sibling portal ${S.prettyIdent(e.project.configuration,S.parseIdent(ee.portal.name))}`})}else D.set(De,{target:G.reference,portal:Ne})}}}}let se=(X=e.hoistingLimitsByCwd)==null?void 0:X.get(b),be=re?b:v.relative(l,M.toPortablePath(qe.packageLocation))||Se.dot,ae=(F=e.hoistingLimitsByCwd)==null?void 0:F.get(be),Ae=se===Sn.DEPENDENCIES||ae===Sn.DEPENDENCIES||ae===Sn.WORKSPACES;f(ms(Ne)===ms(d)?h:he,qe,Ne,L,p,q,be,Ae)}}};return f(a.name,o,a,c,o,o.packageDependencies,Se.dot,!1),{packageTree:c,hoistingLimits:n,errors:r,preserveSymlinksRequired:i}};function Hle(t,e,r){let i=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return M.toPortablePath(i||t.packageLocation)}function X5e(t,e,r){let i=e.getLocator(t.name.replace(Hc,""),t.reference),n=e.getPackageInformation(i);if(n===null)throw new Error("Assertion failed: Expected the package to be registered");let s,o;return r.pnpifyFs?(o=M.toPortablePath(n.packageLocation),s=Js.SOFT):(o=Hle(n,t,e),s=n.linkType),{linkType:s,target:o}}var V5e=(t,e,r)=>{let i=new Map,n=(u,g,f)=>{let{linkType:h,target:p}=X5e(u,t,r);return{locator:ms(u),nodePath:g,target:p,linkType:h,aliases:f}},s=u=>{let[g,f]=u.split("/");return f?{scope:kr(g),name:kr(f)}:{scope:null,name:kr(g)}},o=new Set,a=(u,g,f)=>{if(!o.has(u)){o.add(u);for(let h of u.dependencies){if(h===u)continue;let p=Array.from(h.references).sort(),d={name:h.identName,reference:p[0]},{name:m,scope:E}=s(h.name),B=E?[E,m]:[m],b=v.join(g,Kle),R=v.join(b,...B),H=`${f}/${d.name}`,L=n(d,f,p.slice(1)),K=!1;if(L.linkType===Js.SOFT&&r.project){let J=r.project.workspacesByCwd.get(L.target.slice(0,-1));K=!!(J&&!J.manifest.name)}if(!h.name.endsWith(Hc)&&!K){let J=i.get(R);if(J){if(J.dirList)throw new Error(`Assertion failed: ${R} cannot merge dir node with leaf node`);{let V=S.parseLocator(J.locator),W=S.parseLocator(L.locator);if(J.linkType!==L.linkType)throw new Error(`Assertion failed: ${R} cannot merge nodes with different link types ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/${S.stringifyLocator(W)}`);if(V.identHash!==W.identHash)throw new Error(`Assertion failed: ${R} cannot merge nodes with different idents ${J.nodePath}/${S.stringifyLocator(V)} and ${f}/s${S.stringifyLocator(W)}`);L.aliases=[...L.aliases,...J.aliases,S.parseLocator(J.locator).reference]}}i.set(R,L);let ne=R.split("/"),q=ne.indexOf(Kle),A=ne.length-1;for(;q>=0&&A>q;){let V=M.toPortablePath(ne.slice(0,A).join(v.sep)),W=kr(ne[A]),X=i.get(V);if(!X)i.set(V,{dirList:new Set([W])});else if(X.dirList){if(X.dirList.has(W))break;X.dirList.add(W)}A--}}a(h,L.linkType===Js.SOFT?L.target:R,H)}}},l=n({name:e.name,reference:Array.from(e.references)[0]},"",[]),c=l.target;return i.set(c,l),a(e,c,""),i};var oT={};it(oT,{PnpInstaller:()=>Cf,PnpLinker:()=>jc,default:()=>m6e,getPnpPath:()=>qA,jsInstallUtils:()=>Ws,pnpUtils:()=>nT,quotePathIfNeeded:()=>uce});var lce=ie(Or()),cce=ie(require("url"));var Gle;(function(r){r.HARD="HARD",r.SOFT="SOFT"})(Gle||(Gle={}));var Ht;(function(f){f.DEFAULT="DEFAULT",f.TOP_LEVEL="TOP_LEVEL",f.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",f.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",f.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",f.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",f.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",f.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",f.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",f.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",f.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",f.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"})(Ht||(Ht={}));var jle={[Ht.DEFAULT]:{collapsed:!1,next:{["*"]:Ht.DEFAULT}},[Ht.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:Ht.FALLBACK_EXCLUSION_LIST,packageRegistryData:Ht.PACKAGE_REGISTRY_DATA,["*"]:Ht.DEFAULT}},[Ht.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{["*"]:Ht.FALLBACK_EXCLUSION_ENTRIES}},[Ht.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.FALLBACK_EXCLUSION_DATA}},[Ht.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}},[Ht.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_REGISTRY_ENTRIES}},[Ht.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_STORE_DATA}},[Ht.PACKAGE_STORE_DATA]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_STORE_ENTRIES}},[Ht.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{["*"]:Ht.PACKAGE_INFORMATION_DATA}},[Ht.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:Ht.PACKAGE_DEPENDENCIES,["*"]:Ht.DEFAULT}},[Ht.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{["*"]:Ht.PACKAGE_DEPENDENCY}},[Ht.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{["*"]:Ht.DEFAULT}}};function Z5e(t,e,r){let i="";i+="[";for(let n=0,s=t.length;ns(o)));let n=r.map((s,o)=>o);return n.sort((s,o)=>{for(let a of i){let l=a[s]a[o]?1:0;if(l!==0)return l}return 0}),n.map(s=>r[s])}function r6e(t){let e=new Map,r=_C(t.fallbackExclusionList||[],[({name:i,reference:n})=>i,({name:i,reference:n})=>n]);for(let{name:i,reference:n}of r){let s=e.get(i);typeof s=="undefined"&&e.set(i,s=new Set),s.add(n)}return Array.from(e).map(([i,n])=>[i,Array.from(n)])}function i6e(t){return _C(t.fallbackPool||[],([e])=>e)}function n6e(t){let e=[];for(let[r,i]of _C(t.packageRegistry,([n])=>n===null?"0":`1${n}`)){let n=[];e.push([r,n]);for(let[s,{packageLocation:o,packageDependencies:a,packagePeers:l,linkType:c,discardFromLookup:u}]of _C(i,([g])=>g===null?"0":`1${g}`)){let g=[];r!==null&&s!==null&&!a.has(r)&&g.push([r,s]);for(let[p,d]of _C(a.entries(),([m])=>m))g.push([p,d]);let f=l&&l.size>0?Array.from(l):void 0,h=u||void 0;n.push([s,{packageLocation:o,packageDependencies:g,packagePeers:f,linkType:c,discardFromLookup:h}])}}return e}function XC(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:r6e(t),fallbackPool:i6e(t),packageRegistryData:n6e(t)}}var zle=ie(Wle());function Vle(t,e){return[t?`${t} -`:"",`/* eslint-disable */ - -`,`try { -`,` Object.freeze({}).detectStrictMode = true; -`,`} catch (error) { -`," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n",`} -`,` -`,`var __non_webpack_module__ = module; -`,` -`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { -`,e.replace(/^/gm," "),`} -`,` -`,(0,zle.default)()].join("")}function s6e(t){return JSON.stringify(t,null,2)}function o6e(t){return[`return hydrateRuntimeState(${qle(t)}, {basePath: basePath || __dirname}); -`].join("")}function a6e(t){return[`var path = require('path'); -`,`var dataLocation = path.resolve(__dirname, ${JSON.stringify(t)}); -`,`return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)}); -`].join("")}function _le(t){let e=XC(t),r=o6e(e);return Vle(t.shebang,r)}function Xle(t){let e=XC(t),r=a6e(t.dataLocation),i=Vle(t.shebang,r);return{dataFile:s6e(e),loaderFile:i}}var tce=ie(require("fs")),u6e=ie(require("path")),rce=ie(require("util"));function _L(t,{basePath:e}){let r=M.toPortablePath(e),i=v.resolve(r),n=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,s=new Map,o=new Map(t.packageRegistryData.map(([g,f])=>[g,new Map(f.map(([h,p])=>{var b;if(g===null!=(h===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let d=(b=p.discardFromLookup)!=null?b:!1,m={name:g,reference:h},E=s.get(p.packageLocation);E?(E.discardFromLookup=E.discardFromLookup&&d,d||(E.locator=m)):s.set(p.packageLocation,{locator:m,discardFromLookup:d});let B=null;return[h,{packageDependencies:new Map(p.packageDependencies),packagePeers:new Set(p.packagePeers),linkType:p.linkType,discardFromLookup:d,get packageLocation(){return B||(B=v.join(i,p.packageLocation))}}]}))])),a=new Map(t.fallbackExclusionList.map(([g,f])=>[g,new Set(f)])),l=new Map(t.fallbackPool),c=t.dependencyTreeRoots,u=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:c,enableTopLevelFallback:u,fallbackExclusionList:a,fallbackPool:l,ignorePattern:n,packageLocatorsByLocations:s,packageRegistry:o}}var df=ie(require("module")),ece=ie($le()),ZL=ie(require("util"));var ur;(function(l){l.API_ERROR="API_ERROR",l.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",l.MISSING_DEPENDENCY="MISSING_DEPENDENCY",l.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",l.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",l.INTERNAL="INTERNAL",l.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",l.UNSUPPORTED="UNSUPPORTED"})(ur||(ur={}));var c6e=new Set([ur.BUILTIN_NODE_RESOLUTION_FAILED,ur.MISSING_DEPENDENCY,ur.MISSING_PEER_DEPENDENCY,ur.QUALIFIED_PATH_RESOLUTION_FAILED,ur.UNDECLARED_DEPENDENCY]);function ui(t,e,r={}){let i=c6e.has(t)?"MODULE_NOT_FOUND":t,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:_(P({},n),{value:i}),pnpCode:_(P({},n),{value:t}),data:_(P({},n),{value:r})})}function YA(t){return M.normalize(M.fromPortablePath(t))}function $L(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,i=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(df.Module.builtinModules||Object.keys(process.binding("natives"))),s=re=>n.has(re)||re.startsWith("node:"),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,a=/^(\/|\.{1,2}(\/|$))/,l=/\/$/,c=/^\.{0,2}\//,u={name:null,reference:null},g=[],f=new Set;if(t.enableTopLevelFallback===!0&&g.push(u),e.compatibilityMode!==!1)for(let re of["react-scripts","gatsby"]){let se=t.packageRegistry.get(re);if(se)for(let be of se.keys()){if(be===null)throw new Error("Assertion failed: This reference shouldn't be null");g.push({name:re,reference:be})}}let{ignorePattern:h,packageRegistry:p,packageLocatorsByLocations:d}=t;function m(re,se){return{fn:re,args:se,error:null,result:null}}function E(re){var De,$,G,Ce,ee,Ue;let se=(G=($=(De=process.stderr)==null?void 0:De.hasColors)==null?void 0:$.call(De))!=null?G:process.stdout.isTTY,be=(Oe,vt)=>`[${Oe}m${vt}`,ae=re.error;console.error(ae?be("31;1",`\u2716 ${(Ce=re.error)==null?void 0:Ce.message.replace(/\n.*/s,"")}`):be("33;1","\u203C Resolution")),re.args.length>0&&console.error();for(let Oe of re.args)console.error(` ${be("37;1","In \u2190")} ${(0,ZL.inspect)(Oe,{colors:se,compact:!0})}`);re.result&&(console.error(),console.error(` ${be("37;1","Out \u2192")} ${(0,ZL.inspect)(re.result,{colors:se,compact:!0})}`));let Ae=(Ue=(ee=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:ee.slice(2))!=null?Ue:[];if(Ae.length>0){console.error();for(let Oe of Ae)console.error(` ${be("38;5;244",Oe)}`)}console.error()}function B(re,se){if(e.allowDebug===!1)return se;if(Number.isFinite(i)){if(i>=2)return(...be)=>{let ae=m(re,be);try{return ae.result=se(...be)}catch(Ae){throw ae.error=Ae}finally{E(ae)}};if(i>=1)return(...be)=>{try{return se(...be)}catch(ae){let Ae=m(re,be);throw Ae.error=ae,E(Ae),ae}}}return se}function b(re){let se=W(re);if(!se)throw ui(ur.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return se}function R(re){if(re.name===null)return!0;for(let se of t.dependencyTreeRoots)if(se.name===re.name&&se.reference===re.reference)return!0;return!1}let H=new Set(["default","node","require"]);function L(re,se=H){let be=D(v.join(re,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(be===null)throw ui(ur.INTERNAL,`The locator that owns the "${re}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ae}=b(be),Ae=v.join(ae,wt.manifest);if(!e.fakeFs.existsSync(Ae))return null;let De=JSON.parse(e.fakeFs.readFileSync(Ae,"utf8")),$=v.contains(ae,re);if($===null)throw ui(ur.INTERNAL,"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");c.test($)||($=`./${$}`);let G=(0,ece.resolve)(De,v.normalize($),{conditions:se,unsafe:!0});return typeof G=="string"?v.join(ae,G):null}function K(re,se,{extensions:be}){let ae;try{se.push(re),ae=e.fakeFs.statSync(re)}catch(Ae){}if(ae&&!ae.isDirectory())return e.fakeFs.realpathSync(re);if(ae&&ae.isDirectory()){let Ae;try{Ae=JSON.parse(e.fakeFs.readFileSync(v.join(re,wt.manifest),"utf8"))}catch($){}let De;if(Ae&&Ae.main&&(De=v.resolve(re,Ae.main)),De&&De!==re){let $=K(De,se,{extensions:be});if($!==null)return $}}for(let Ae=0,De=be.length;Ae{let G=JSON.stringify($.name);if(ae.has(G))return;ae.add(G);let Ce=X($);for(let ee of Ce)if(b(ee).packagePeers.has(re))Ae(ee);else{let Oe=be.get(ee.name);typeof Oe=="undefined"&&be.set(ee.name,Oe=new Set),Oe.add(ee.reference)}};Ae(se);let De=[];for(let $ of[...be.keys()].sort())for(let G of[...be.get($)].sort())De.push({name:$,reference:G});return De}function D(re,{resolveIgnored:se=!1,includeDiscardFromLookup:be=!1}={}){if(q(re)&&!se)return null;let ae=v.relative(t.basePath,re);ae.match(a)||(ae=`./${ae}`),ae.endsWith("/")||(ae=`${ae}/`);do{let Ae=d.get(ae);if(typeof Ae=="undefined"||Ae.discardFromLookup&&!be){ae=ae.substring(0,ae.lastIndexOf("/",ae.length-2)+1);continue}return Ae.locator}while(ae!=="");return null}function he(re,se,{considerBuiltins:be=!0}={}){if(re==="pnpapi")return M.toPortablePath(e.pnpapiResolution);if(be&&s(re))return null;let ae=YA(re),Ae=se&&YA(se);if(se&&q(se)&&(!v.isAbsolute(re)||D(re)===null)){let G=ne(re,se);if(G===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) - -Require request: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(G)}let De,$=re.match(o);if($){if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let[,G,Ce]=$,ee=D(se);if(!ee){let yr=ne(re,se);if(yr===!1)throw ui(ur.BUILTIN_NODE_RESOLUTION_FAILED,`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). - -Require path: "${ae}" -Required by: ${Ae} -`,{request:ae,issuer:Ae});return M.toPortablePath(yr)}let Oe=b(ee).packageDependencies.get(G),vt=null;if(Oe==null&&ee.name!==null){let yr=t.fallbackExclusionList.get(ee.name);if(!yr||!yr.has(ee.reference)){for(let Qi=0,Go=g.length;QiR(Ki))?dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr}):dt=ui(ur.MISSING_PEER_DEPENDENCY,`${ee.name} tried to access ${G} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) - -${yr.map(Ki=>`Ancestor breaking the chain: ${Ki.name}@${Ki.reference} -`).join("")} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G,brokenAncestors:yr})}else Oe===void 0&&(!be&&s(re)?R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${G} isn't otherwise declared in ${ee.name}'s dependencies, this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}):R(ee)?dt=ui(ur.UNDECLARED_DEPENDENCY,`Your application tried to access ${G}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${Ae} -`,{request:ae,issuer:Ae,dependencyName:G}):dt=ui(ur.UNDECLARED_DEPENDENCY,`${ee.name} tried to access ${G}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. - -Required package: ${G}${G!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,issuerLocator:Object.assign({},ee),dependencyName:G}));if(Oe==null){if(vt===null||dt===null)throw dt||new Error("Assertion failed: Expected an error to have been set");Oe=vt;let yr=dt.message.replace(/\n.*/g,"");dt.message=yr,!f.has(yr)&&i!==0&&(f.add(yr),process.emitWarning(dt))}let ri=Array.isArray(Oe)?{name:Oe[0],reference:Oe[1]}:{name:G,reference:Oe},ii=b(ri);if(!ii.packageLocation)throw ui(ur.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. - -Required package: ${ri.name}@${ri.reference}${ri.name!==ae?` (via "${ae}")`:""} -Required by: ${ee.name}@${ee.reference} (via ${Ae}) -`,{request:ae,issuer:Ae,dependencyLocator:Object.assign({},ri)});let an=ii.packageLocation;Ce?De=v.join(an,Ce):De=an}else if(v.isAbsolute(re))De=v.normalize(re);else{if(!se)throw ui(ur.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:ae,issuer:Ae});let G=v.resolve(se);se.match(l)?De=v.normalize(v.join(G,re)):De=v.normalize(v.join(v.dirname(G),re))}return v.normalize(De)}function pe(re,se,be=H){if(a.test(re))return se;let ae=L(se,be);return ae?v.normalize(ae):se}function Ne(re,{extensions:se=Object.keys(df.Module._extensions)}={}){let be=[],ae=K(re,be,{extensions:se});if(ae)return v.normalize(ae);{let Ae=YA(re),De=D(re);if(De){let{packageLocation:$}=b(De);if(!e.fakeFs.existsSync($)){let G=$.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`${G} - -Missing package: ${De.name}@${De.reference} -Expected package location: ${YA($)} -`,{unqualifiedPath:Ae})}}throw ui(ur.QUALIFIED_PATH_RESOLUTION_FAILED,`Qualified path resolution failed - none of those files can be found on the disk. - -Source path: ${Ae} -${be.map($=>`Not found: ${YA($)} -`).join("")}`,{unqualifiedPath:Ae})}}function Pe(re,se,{considerBuiltins:be,extensions:ae,conditions:Ae}={}){let De=he(re,se,{considerBuiltins:be});if(re==="pnpapi")return De;if(De===null)return null;let $=()=>se!==null?q(se):!1,G=(!be||!s(re))&&!$()?pe(re,De,Ae):De;try{return Ne(G,{extensions:ae})}catch(Ce){throw Ce.pnpCode==="QUALIFIED_PATH_RESOLUTION_FAILED"&&Object.assign(Ce.data,{request:YA(re),issuer:se&&YA(se)}),Ce}}function qe(re){let se=v.normalize(re),be=Pr.resolveVirtual(se);return be!==se?be:null}return{VERSIONS:A,topLevel:V,getLocator:(re,se)=>Array.isArray(se)?{name:se[0],reference:se[1]}:{name:re,reference:se},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let re=[];for(let[se,be]of p)for(let ae of be.keys())se!==null&&ae!==null&&re.push({name:se,reference:ae});return re},getPackageInformation:re=>{let se=W(re);if(se===null)return null;let be=M.fromPortablePath(se.packageLocation);return _(P({},se),{packageLocation:be})},findPackageLocator:re=>D(M.toPortablePath(re)),resolveToUnqualified:B("resolveToUnqualified",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=he(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveUnqualified:B("resolveUnqualified",(re,se)=>M.fromPortablePath(Ne(M.toPortablePath(re),se))),resolveRequest:B("resolveRequest",(re,se,be)=>{let ae=se!==null?M.toPortablePath(se):null,Ae=Pe(M.toPortablePath(re),ae,be);return Ae===null?null:M.fromPortablePath(Ae)}),resolveVirtual:B("resolveVirtual",re=>{let se=qe(M.toPortablePath(re));return se!==null?M.fromPortablePath(se):null})}}var ESt=(0,rce.promisify)(tce.readFile);var ice=(t,e,r)=>{let i=XC(t),n=_L(i,{basePath:e}),s=M.join(e,wt.pnpCjs);return $L(n,{fakeFs:r,pnpapiResolution:s})};var tT=ie(sce());var Ws={};it(Ws,{checkAndReportManifestCompatibility:()=>oce,extractBuildScripts:()=>Z0,getExtractHint:()=>rT,hasBindingGyp:()=>iT});function oce(t,e,{configuration:r,report:i}){return S.isPackageCompatible(t,{os:[process.platform],cpu:[process.arch]})?!0:(i==null||i.reportWarningOnce(z.INCOMPATIBLE_ARCHITECTURE,`${S.prettyLocator(r,t)} The ${process.platform}-${process.arch} architecture is incompatible with this module, ${e} skipped.`),!1)}function Z0(t,e,r,{configuration:i,report:n}){let s=[];for(let a of["preinstall","install","postinstall"])e.manifest.scripts.has(a)&&s.push([Gn.SCRIPT,a]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&s.push([Gn.SHELLCODE,"node-gyp rebuild"]),s.length===0?[]:t.linkType!==gt.HARD?(n==null||n.reportWarningOnce(z.SOFT_LINK_BUILD,`${S.prettyLocator(i,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(n==null||n.reportInfoOnce(z.BUILD_DISABLED,`${S.prettyLocator(i,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!i.get("enableScripts")&&!r.built?(n==null||n.reportWarningOnce(z.DISABLED_BUILD_SCRIPTS,`${S.prettyLocator(i,t)} lists build scripts, but all build scripts have been disabled.`),[]):oce(t,"build",{configuration:i,report:n})?s:[]}var g6e=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function rT(t){return t.packageFs.getExtractHint({relevantExtensions:g6e})}function iT(t){let e=v.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var nT={};it(nT,{getUnpluggedPath:()=>ZC});function ZC(t,{configuration:e}){return v.resolve(e.get("pnpUnpluggedFolder"),S.slugifyLocator(t))}var f6e=new Set([S.makeIdent(null,"nan").identHash,S.makeIdent(null,"node-gyp").identHash,S.makeIdent(null,"node-pre-gyp").identHash,S.makeIdent(null,"node-addon-api").identHash,S.makeIdent(null,"fsevents").identHash]),jc=class{constructor(){this.mode="strict";this.pnpCache=new Map}supportsPackage(e,r){return!(r.project.configuration.get("nodeLinker")!=="pnp"||r.project.configuration.get("pnpMode")!==this.mode)}async findPackageLocation(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})),s={name:S.stringifyIdent(e),reference:e.reference},o=n.getPackageInformation(s);if(!o)throw new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return M.toPortablePath(o.packageLocation)}async findPackageLocator(e,r){let i=qA(r.project).cjs;if(!T.existsSync(i))return null;let s=de.getFactoryWithDefault(this.pnpCache,i,()=>de.dynamicRequire(i,{cachingStrategy:de.CachingStrategy.FsTime})).findPackageLocator(M.fromPortablePath(e));return s?S.makeLocator(S.parseIdent(s.name),s.reference):null}makeInstaller(e){return new Cf(e)}},Cf=class{constructor(e){this.opts=e;this.mode="strict";this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:2})}attachCustomData(e){this.customData=e}async installPackage(e,r){let i=S.stringifyIdent(e),n=e.reference,s=!!this.opts.project.tryWorkspaceByLocator(e),o=S.isVirtualLocator(e),a=e.peerDependencies.size>0&&!o,l=!a&&!s,c=!a&&e.linkType!==gt.SOFT,u,g;if(l||c){let B=o?S.devirtualizeLocator(e):e;u=this.customData.store.get(B.locatorHash),typeof u=="undefined"&&(u=await h6e(r),e.linkType===gt.HARD&&this.customData.store.set(B.locatorHash,u)),u.manifest.type==="module"&&(this.isESMLoaderRequired=!0),g=this.opts.project.getDependencyMeta(B,e.version)}let f=l?Z0(e,u,g,{configuration:this.opts.project.configuration,report:this.opts.report}):[],h=c?await this.unplugPackageIfNeeded(e,u,r,g):r.packageFs;if(v.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let p=v.resolve(h.getRealPath(),r.prefixPath),d=sT(this.opts.project.cwd,p),m=new Map,E=new Set;if(o){for(let B of e.peerDependencies.values())m.set(S.stringifyIdent(B),null),E.add(S.stringifyIdent(B));if(!s){let B=S.devirtualizeLocator(e);this.virtualTemplates.set(B.locatorHash,{location:sT(this.opts.project.cwd,Pr.resolveVirtual(p)),locator:B})}}return de.getMapWithDefault(this.packageRegistry,i).set(n,{packageLocation:d,packageDependencies:m,packagePeers:E,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:p,buildDirective:f.length>0?f:null}}async attachInternalDependencies(e,r){let i=this.getPackageInformation(e);for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){for(let i of r)this.getDiskInformation(i).packageDependencies.set(S.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=qA(this.opts.project);if(T.existsSync(e.cjsLegacy)&&(this.opts.report.reportWarning(z.UNNAMED,`Removing the old ${ue.pretty(this.opts.project.configuration,wt.pnpJs,ue.Type.PATH)} file. You might need to manually update existing references to reference the new ${ue.pretty(this.opts.project.configuration,wt.pnpCjs,ue.Type.PATH)} file. If you use Editor SDKs, you'll have to rerun ${ue.pretty(this.opts.project.configuration,"yarn sdks",ue.Type.CODE)}.`),await T.removePromise(e.cjsLegacy)),this.isEsmEnabled()||await T.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await T.removePromise(e.cjs),await T.removePromise(this.opts.project.configuration.get("pnpDataPath")),await T.removePromise(e.esmLoader);return}for(let{locator:u,location:g}of this.virtualTemplates.values())de.getMapWithDefault(this.packageRegistry,S.stringifyIdent(u)).set(u.reference,{packageLocation:g,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),i=this.opts.project.workspaces.map(({anchoredLocator:u})=>({name:S.stringifyIdent(u),reference:u.reference})),n=r!=="none",s=[],o=new Map,a=de.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),l=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let u of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(u)&&s.push({name:S.stringifyIdent(u),reference:u.reference});return await this.finalizeInstallWithPnp({dependencyTreeRoots:i,enableTopLevelFallback:n,fallbackExclusionList:s,fallbackPool:o,ignorePattern:a,packageRegistry:l,shebang:c}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=qA(this.opts.project),i=this.opts.project.configuration.get("pnpDataPath"),n=await this.locateNodeModules(e.ignorePattern);if(n.length>0){this.opts.report.reportWarning(z.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let o of n)await T.removePromise(o)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let o=_le(e);await T.changeFilePromise(r.cjs,o,{automaticNewlines:!0,mode:493}),await T.removePromise(i)}else{let o=v.relative(v.dirname(r.cjs),i),{dataFile:a,loaderFile:l}=Xle(_(P({},e),{dataLocation:o}));await T.changeFilePromise(r.cjs,l,{automaticNewlines:!0,mode:493}),await T.changeFilePromise(i,a,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(z.UNNAMED,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await T.changeFilePromise(r.esmLoader,(0,tT.default)(),{automaticNewlines:!0,mode:420}));let s=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await T.removePromise(s);else for(let o of await T.readdirPromise(s)){let a=v.resolve(s,o);this.unpluggedPaths.has(a)||await T.removePromise(a)}}async locateNodeModules(e){let r=[],i=e?new RegExp(e):null;for(let n of this.opts.project.workspaces){let s=v.join(n.cwd,"node_modules");if(i&&i.test(v.relative(this.opts.project.cwd,n.cwd))||!T.existsSync(s))continue;let o=await T.readdirPromise(s,{withFileTypes:!0}),a=o.filter(l=>!l.isDirectory()||l.name===".bin"||!l.name.startsWith("."));if(a.length===o.length)r.push(s);else for(let l of a)r.push(v.join(s,l.name))}return r}async unplugPackageIfNeeded(e,r,i,n){return this.shouldBeUnplugged(e,r,n)?this.unplugPackage(e,i):i.packageFs}shouldBeUnplugged(e,r,i){return typeof i.unplugged!="undefined"?i.unplugged:f6e.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(Z0(e,r,i,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r){let i=ZC(e,{configuration:this.opts.project.configuration});if(this.opts.project.disabledLocators.has(e.locatorHash))return new Xo(i,{baseFs:r.packageFs,pathUtils:v});this.unpluggedPaths.add(i);let n=v.join(i,r.prefixPath,".ready");return await T.existsPromise(n)?new Ft(i):(this.opts.project.storedBuildState.delete(e.locatorHash),await T.mkdirPromise(i,{recursive:!0}),await T.copyPromise(i,Se.dot,{baseFs:r.packageFs,overwrite:!1}),await T.writeFilePromise(n,""),new Ft(i))}getPackageInformation(e){let r=S.stringifyIdent(e),i=e.reference,n=this.packageRegistry.get(r);if(!n)throw new Error(`Assertion failed: The package information store should have been available (for ${S.prettyIdent(this.opts.project.configuration,e)})`);let s=n.get(i);if(!s)throw new Error(`Assertion failed: The package information should have been available (for ${S.prettyLocator(this.opts.project.configuration,e)})`);return s}getDiskInformation(e){let r=de.getMapWithDefault(this.packageRegistry,"@@disk"),i=sT(this.opts.project.cwd,e);return de.getFactoryWithDefault(r,i,()=>({packageLocation:i,packageDependencies:new Map,packagePeers:new Set,linkType:gt.SOFT,discardFromLookup:!1}))}};function sT(t,e){let r=v.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function h6e(t){var i;let e=(i=await Ze.tryFind(t.prefixPath,{baseFs:t.packageFs}))!=null?i:new Ze,r=new Set(["preinstall","install","postinstall"]);for(let n of e.scripts.keys())r.has(n)||e.scripts.delete(n);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:rT(t),hasBindingGyp:iT(t)}}}var ace=ie(Nn());var $C=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);if(e.get("nodeLinker")!=="pnp")throw new me("This command can only be used if the `nodeLinker` option is set to `pnp`");await r.restoreInstallState();let s=new Set(this.patterns),o=this.patterns.map(f=>{let h=S.parseDescriptor(f),p=h.range!=="unknown"?h:S.makeDescriptor(h,"*");if(!qt.validRange(p.range))throw new me(`The range of the descriptor patterns must be a valid semver range (${S.prettyDescriptor(e,p)})`);return d=>{let m=S.stringifyIdent(d);return!ace.default.isMatch(m,S.stringifyIdent(p))||d.version&&!qt.satisfiesWithPrereleases(d.version,p.range)?!1:(s.delete(f),!0)}}),a=()=>{let f=[];for(let h of r.storedPackages.values())!r.tryWorkspaceByLocator(h)&&!S.isVirtualLocator(h)&&o.some(p=>p(h))&&f.push(h);return f},l=f=>{let h=new Set,p=[],d=(m,E)=>{if(!h.has(m.locatorHash)&&(h.add(m.locatorHash),!r.tryWorkspaceByLocator(m)&&o.some(B=>B(m))&&p.push(m),!(E>0&&!this.recursive)))for(let B of m.dependencies.values()){let b=r.storedResolutions.get(B.descriptorHash);if(!b)throw new Error("Assertion failed: The resolution should have been registered");let R=r.storedPackages.get(b);if(!R)throw new Error("Assertion failed: The package should have been registered");d(R,E+1)}};for(let m of f){let E=r.storedPackages.get(m.anchoredLocator.locatorHash);if(!E)throw new Error("Assertion failed: The package should have been registered");d(E,0)}return p},c,u;if(this.all&&this.recursive?(c=a(),u="the project"):this.all?(c=l(r.workspaces),u="any workspace"):(c=l([i]),u="this workspace"),s.size>1)throw new me(`Patterns ${ue.prettyList(e,s,ue.Type.CODE)} don't match any packages referenced by ${u}`);if(s.size>0)throw new me(`Pattern ${ue.prettyList(e,s,ue.Type.CODE)} doesn't match any packages referenced by ${u}`);return c=de.sortMap(c,f=>S.stringifyLocator(f)),(await Fe.start({configuration:e,stdout:this.context.stdout,json:this.json},async f=>{var h;for(let p of c){let d=(h=p.version)!=null?h:"unknown",m=r.topLevelWorkspace.manifest.ensureDependencyMeta(S.makeDescriptor(p,d));m.unplugged=!0,f.reportInfo(z.UNNAMED,`Will unpack ${S.prettyLocator(e,p)} to ${ue.pretty(e,ZC(p,{configuration:e}),ue.Type.PATH)}`),f.reportJson({locator:S.stringifyLocator(p),version:d})}await r.topLevelWorkspace.persistManifest(),f.reportSeparator(),await r.install({cache:n,report:f})})).exitCode()}};$C.paths=[["unplug"]],$C.usage=ye.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ace=$C;var qA=t=>({cjs:v.join(t.cwd,wt.pnpCjs),cjsLegacy:v.join(t.cwd,wt.pnpJs),esmLoader:v.join(t.cwd,".pnp.loader.mjs")}),uce=t=>/\s/.test(t)?JSON.stringify(t):t;async function p6e(t,e,r){let i=qA(t),n=`--require ${uce(M.fromPortablePath(i.cjs))}`;if(T.existsSync(i.esmLoader)&&(n=`${n} --experimental-loader ${(0,cce.pathToFileURL)(M.fromPortablePath(i.esmLoader)).href}`),i.cjs.includes(" ")&&lce.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(T.existsSync(i.cjs)){let s=e.NODE_OPTIONS||"",o=/\s*--require\s+\S*\.pnp\.c?js\s*/g,a=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;s=s.replace(o," ").replace(a," ").trim(),s=s?`${n} ${s}`:n,e.NODE_OPTIONS=s}}async function d6e(t,e){let r=qA(t);e(r.cjs),e(r.esmLoader),e(t.configuration.get("pnpDataPath")),e(t.configuration.get("pnpUnpluggedFolder"))}var C6e={hooks:{populateYarnPaths:d6e,setupScriptEnvironment:p6e},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:ge.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:ge.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:ge.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:ge.STRING,default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:ge.BOOLEAN,default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:ge.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:ge.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:ge.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:ge.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[jc],commands:[Ace]},m6e=C6e;var Cce=ie(dce());var uT=ie(require("crypto")),mce=ie(require("fs")),Ice=1,gi="node_modules",gT=".bin",Ece=".yarn-state.yml",Bi;(function(i){i.CLASSIC="classic",i.HARDLINKS_LOCAL="hardlinks-local",i.HARDLINKS_GLOBAL="hardlinks-global"})(Bi||(Bi={}));var fT=class{constructor(){this.installStateCache=new Map}supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="node-modules"}async findPackageLocation(e,r){let i=r.project.tryWorkspaceByLocator(e);if(i)return i.cwd;let n=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(n===null)throw new me("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let s=n.locatorMap.get(S.stringifyLocator(e));if(!s){let a=new me(`Couldn't find ${S.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw a.code="LOCATOR_NOT_INSTALLED",a}let o=r.project.configuration.startingCwd;return s.locations.find(a=>v.contains(o,a))||s.locations[0]}async findPackageLocator(e,r){let i=await de.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await hT(r.project,{unrollAliases:!0}));if(i===null)return null;let{locationRoot:n,segments:s}=$0(v.resolve(e),{skipPrefix:r.project.cwd}),o=i.locationTree.get(n);if(!o)return null;let a=o.locator;for(let l of s){if(o=o.children.get(l),!o)break;a=o.locator||a}return S.parseLocator(a)}makeInstaller(e){return new yce(e)}},yce=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,r){var u;let i=v.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.customData.store.get(e.locatorHash);if(typeof n=="undefined"&&(n=await L6e(e,r),e.linkType===gt.HARD&&this.customData.store.set(e.locatorHash,n)),!Ws.checkAndReportManifestCompatibility(e,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};let s=new Map,o=new Set;s.has(S.stringifyIdent(e))||s.set(S.stringifyIdent(e),e.reference);let a=e;if(S.isVirtualLocator(e)){a=S.devirtualizeLocator(e);for(let g of e.peerDependencies.values())s.set(S.stringifyIdent(g),null),o.add(S.stringifyIdent(g))}let l={packageLocation:`${M.fromPortablePath(i)}/`,packageDependencies:s,packagePeers:o,linkType:e.linkType,discardFromLookup:(u=r.discardFromLookup)!=null?u:!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:l});let c=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(a.locatorHash,c),{packageLocation:i,buildDirective:null}}async attachInternalDependencies(e,r){let i=this.localStore.get(e.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected information object to have been registered");for(let[n,s]of r){let o=S.areIdentsEqual(n,s)?s.reference:[S.stringifyIdent(s),s.reference];i.pnpNode.packageDependencies.set(S.stringifyIdent(n),o)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),r=await hT(this.opts.project),i=this.opts.project.configuration.get("nmMode");(r===null||i!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:i});let n=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmHoistingLimits");try{h=de.validateEnum(Sn,(d=(p=f.manifest.installConfig)==null?void 0:p.hoistingLimits)!=null?d:h)}catch(m){let E=S.prettyWorkspace(this.opts.project.configuration,f);this.opts.report.reportWarning(z.INVALID_MANIFEST,`${E}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(Sn).join(", ")}, using default: "${h}"`)}return[f.relativeCwd,h]})),s=new Map(this.opts.project.workspaces.map(f=>{var p,d;let h=this.opts.project.configuration.get("nmSelfReferences");return h=(d=(p=f.manifest.installConfig)==null?void 0:p.selfReferences)!=null?d:h,[f.relativeCwd,h]})),o={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(f,h)=>Array.isArray(h)?{name:h[0],reference:h[1]}:{name:f,reference:h},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(f=>{let h=f.anchoredLocator;return{name:S.stringifyIdent(f.locator),reference:h.reference}}),getPackageInformation:f=>{let h=f.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:S.makeLocator(S.parseIdent(f.name),f.reference),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the package reference to have been registered");return p.pnpNode},findPackageLocator:f=>{let h=this.opts.project.tryWorkspaceByCwd(M.toPortablePath(f));if(h!==null){let p=h.anchoredLocator;return{name:S.stringifyIdent(p),reference:p.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:f=>M.fromPortablePath(Pr.resolveVirtual(M.toPortablePath(f)))},{tree:a,errors:l,preserveSymlinksRequired:c}=VC(o,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:n,project:this.opts.project,selfReferencesByCwd:s});if(!a){for(let{messageName:f,text:h}of l)this.opts.report.reportError(f,h);return}let u=WL(a);await T6e(r,u,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async f=>{let h=S.parseLocator(f),p=this.localStore.get(h.locatorHash);if(typeof p=="undefined")throw new Error("Assertion failed: Expected the slot to exist");return p.customPackageData.manifest}});let g=[];for(let[f,h]of u.entries()){if(wce(f))continue;let p=S.parseLocator(f),d=this.localStore.get(p.locatorHash);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(d.pkg))continue;let m=Ws.extractBuildScripts(d.pkg,d.customPackageData,d.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});m.length!==0&&g.push({buildLocations:h.locations,locatorHash:p.locatorHash,buildDirective:m})}return c&&this.opts.report.reportWarning(z.NM_PRESERVE_SYMLINKS_REQUIRED,`The application uses portals and that's why ${ue.pretty(this.opts.project.configuration,"--preserve-symlinks",ue.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:g}}};async function L6e(t,e){var n;let r=(n=await Ze.tryFind(e.prefixPath,{baseFs:e.packageFs}))!=null?n:new Ze,i=new Set(["preinstall","install","postinstall"]);for(let s of r.scripts.keys())i.has(s)||r.scripts.delete(s);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{extractHint:Ws.getExtractHint(e),hasBindingGyp:Ws.hasBindingGyp(e)}}}async function M6e(t,e,r,i){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will -`,n+=`# cause your node_modules installation to become invalidated. -`,n+=` -`,n+=`__metadata: -`,n+=` version: ${Ice} -`,n+=` nmMode: ${i.value} -`;let s=Array.from(e.keys()).sort(),o=S.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let c of s){let u=e.get(c);n+=` -`,n+=`${JSON.stringify(c)}: -`,n+=` locations: -`;for(let g of u.locations){let f=v.contains(t.cwd,g);if(f===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` - ${JSON.stringify(f)} -`}if(u.aliases.length>0){n+=` aliases: -`;for(let g of u.aliases)n+=` - ${JSON.stringify(g)} -`}if(c===o&&r.size>0){n+=` bin: -`;for(let[g,f]of r){let h=v.contains(t.cwd,g);if(h===null)throw new Error(`Assertion failed: Expected the path to be within the project (${g})`);n+=` ${JSON.stringify(h)}: -`;for(let[p,d]of f){let m=v.relative(v.join(g,gi),d);n+=` ${JSON.stringify(p)}: ${JSON.stringify(m)} -`}}}}let a=t.cwd,l=v.join(a,gi,Ece);await T.changeFilePromise(l,n,{automaticNewlines:!0})}async function hT(t,{unrollAliases:e=!1}={}){let r=t.cwd,i=v.join(r,gi,Ece);if(!T.existsSync(i))return null;let n=Ei(await T.readFilePromise(i,"utf8"));if(n.__metadata.version>Ice)return null;let s=n.__metadata.nmMode||Bi.CLASSIC,o=new Map,a=new Map;delete n.__metadata;for(let[l,c]of Object.entries(n)){let u=c.locations.map(f=>v.join(r,f)),g=c.bin;if(g)for(let[f,h]of Object.entries(g)){let p=v.join(r,M.toPortablePath(f)),d=de.getMapWithDefault(a,p);for(let[m,E]of Object.entries(h))d.set(kr(m),M.toPortablePath([p,gi,E].join(v.delimiter)))}if(o.set(l,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:c.aliases||[]}),e&&c.aliases)for(let f of c.aliases){let{scope:h,name:p}=S.parseLocator(l),d=S.makeLocator(S.makeIdent(h,p),f),m=S.stringifyLocator(d);o.set(m,{target:Se.dot,linkType:gt.HARD,locations:u,aliases:[]})}}return{locatorMap:o,binSymlinks:a,locationTree:Bce(o,{skipPrefix:t.cwd}),nmMode:s}}var If=async(t,e)=>{if(t.split(v.sep).indexOf(gi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop&&(await T.lstatPromise(t)).isSymbolicLink()){await T.unlinkPromise(t);return}let r=await T.readdirPromise(t,{withFileTypes:!0});for(let i of r){let n=v.join(t,kr(i.name));i.isDirectory()?(i.name!==gi||e&&e.innerLoop)&&await If(n,{innerLoop:!0,contentsOnly:!1}):await T.unlinkPromise(n)}e.contentsOnly||await T.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},Qce=4,$0=(t,{skipPrefix:e})=>{let r=v.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let i=r.split(v.sep).filter(l=>l!==""),n=i.indexOf(gi),s=i.slice(0,n).join(v.sep),o=v.join(e,s),a=i.slice(n);return{locationRoot:o,segments:a}},Bce=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let i=()=>({children:new Map,linkType:gt.HARD});for(let[n,s]of t.entries()){if(s.linkType===gt.SOFT&&v.contains(e,s.target)!==null){let a=de.getFactoryWithDefault(r,s.target,i);a.locator=n,a.linkType=s.linkType}for(let o of s.locations){let{locationRoot:a,segments:l}=$0(o,{skipPrefix:e}),c=de.getFactoryWithDefault(r,a,i);for(let u=0;u{let r;try{process.platform==="win32"&&(r=await T.lstatPromise(t))}catch(i){}process.platform=="win32"&&(!r||r.isDirectory())?await T.symlinkPromise(t,e,"junction"):await T.symlinkPromise(v.relative(v.dirname(e),t),e)};async function bce(t,e,r){let i=v.join(t,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));try{await T.writeFilePromise(i,r);try{await T.linkPromise(i,e)}catch(n){}}finally{await T.unlinkPromise(i)}}async function O6e({srcPath:t,dstPath:e,srcMode:r,globalHardlinksStore:i,baseFs:n,nmMode:s,digest:o}){if(s.value===Bi.HARDLINKS_GLOBAL&&i&&o){let l=v.join(i,o.substring(0,2),`${o.substring(2)}.dat`),c;try{if(await mn.checksumFile(l,{baseFs:T,algorithm:"sha1"})!==o){let g=v.join(i,kr(`${uT.default.randomBytes(16).toString("hex")}.tmp`));await T.renamePromise(l,g);let f=await n.readFilePromise(t);await T.writeFilePromise(g,f);try{await T.linkPromise(g,l),await T.unlinkPromise(g)}catch(h){}}await T.linkPromise(l,e),c=!0}catch(u){c=!1}if(!c){let u=await n.readFilePromise(t);await bce(i,l,u);try{await T.linkPromise(l,e)}catch(g){g&&g.code&&g.code=="EXDEV"&&(s.value=Bi.HARDLINKS_LOCAL,await n.copyFilePromise(t,e))}}}else await n.copyFilePromise(t,e);let a=r&511;a!==420&&await T.chmodPromise(e,a)}var JA;(function(i){i.FILE="file",i.DIRECTORY="directory",i.SYMLINK="symlink"})(JA||(JA={}));var K6e=async(t,e,{baseFs:r,globalHardlinksStore:i,nmMode:n,packageChecksum:s})=>{await T.mkdirPromise(t,{recursive:!0});let o=async(l=Se.dot)=>{let c=v.join(e,l),u=await r.readdirPromise(c,{withFileTypes:!0}),g=new Map;for(let f of u){let h=v.join(l,f.name),p,d=v.join(c,f.name);if(f.isFile()){if(p={kind:JA.FILE,mode:(await r.lstatPromise(d)).mode},n.value===Bi.HARDLINKS_GLOBAL){let m=await mn.checksumFile(d,{baseFs:r,algorithm:"sha1"});p.digest=m}}else if(f.isDirectory())p={kind:JA.DIRECTORY};else if(f.isSymbolicLink())p={kind:JA.SYMLINK,symlinkTo:await r.readlinkPromise(d)};else throw new Error(`Unsupported file type (file: ${d}, mode: 0o${await r.statSync(d).mode.toString(8).padStart(6,"0")})`);if(g.set(h,p),f.isDirectory()&&h!==gi){let m=await o(h);for(let[E,B]of m)g.set(E,B)}}return g},a;if(n.value===Bi.HARDLINKS_GLOBAL&&i&&s){let l=v.join(i,s.substring(0,2),`${s.substring(2)}.json`);try{a=new Map(Object.entries(JSON.parse(await T.readFilePromise(l,"utf8"))))}catch(c){a=await o(),await bce(i,l,Buffer.from(JSON.stringify(Object.fromEntries(a))))}}else a=await o();for(let[l,c]of a){let u=v.join(e,l),g=v.join(t,l);c.kind===JA.DIRECTORY?await T.mkdirPromise(g,{recursive:!0}):c.kind===JA.FILE?await O6e({srcPath:u,dstPath:g,srcMode:c.mode,digest:c.digest,nmMode:n,baseFs:r,globalHardlinksStore:i}):c.kind===JA.SYMLINK&&await pT(v.resolve(v.dirname(g),c.symlinkTo),g)}};function U6e(t,e){let r=new Map([...t]),i=new Map([...e]);for(let[n,s]of t){let o=v.join(n,gi);if(!T.existsSync(o)){s.children.delete(gi);for(let a of i.keys())v.contains(o,a)!==null&&i.delete(a)}}return{locationTree:r,binSymlinks:i}}function wce(t){let e=S.parseDescriptor(t);return S.isVirtualDescriptor(e)&&(e=S.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function H6e(t,e,r,{loadManifest:i}){let n=new Map;for(let[a,{locations:l}]of t){let c=wce(a)?null:await i(a,l[0]),u=new Map;if(c)for(let[g,f]of c.bin){let h=v.join(l[0],f);f!==""&&T.existsSync(h)&&u.set(g,f)}n.set(a,u)}let s=new Map,o=(a,l,c)=>{let u=new Map,g=v.contains(r,a);if(c.locator&&g!==null){let f=n.get(c.locator);for(let[h,p]of f){let d=v.join(a,M.toPortablePath(p));u.set(kr(h),d)}for(let[h,p]of c.children){let d=v.join(a,h),m=o(d,d,p);m.size>0&&s.set(a,new Map([...s.get(a)||new Map,...m]))}}else for(let[f,h]of c.children){let p=o(v.join(a,f),l,h);for(let[d,m]of p)u.set(d,m)}return u};for(let[a,l]of e){let c=o(a,a,l);c.size>0&&s.set(a,new Map([...s.get(a)||new Map,...c]))}return s}var vce=(t,e)=>{if(!t||!e)return t===e;let r=S.parseLocator(t);S.isVirtualLocator(r)&&(r=S.devirtualizeLocator(r));let i=S.parseLocator(e);return S.isVirtualLocator(i)&&(i=S.devirtualizeLocator(i)),S.areLocatorsEqual(r,i)};function dT(t){return v.join(t.get("globalFolder"),"store")}async function T6e(t,e,{baseFs:r,project:i,report:n,loadManifest:s,realLocatorChecksums:o}){let a=v.join(i.cwd,gi),{locationTree:l,binSymlinks:c}=U6e(t.locationTree,t.binSymlinks),u=Bce(e,{skipPrefix:i.cwd}),g=[],f=async({srcDir:L,dstDir:K,linkType:J,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})=>{let V=(async()=>{try{J===gt.SOFT?(await T.mkdirPromise(v.dirname(K),{recursive:!0}),await pT(v.resolve(L),K)):await K6e(K,L,{baseFs:r,globalHardlinksStore:ne,nmMode:q,packageChecksum:A})}catch(W){throw W.message=`While persisting ${L} -> ${K} ${W.message}`,W}finally{B.tick()}})().then(()=>g.splice(g.indexOf(V),1));g.push(V),g.length>Qce&&await Promise.race(g)},h=async(L,K,J)=>{let ne=(async()=>{let q=async(A,V,W)=>{try{W.innerLoop||await T.mkdirPromise(V,{recursive:!0});let X=await T.readdirPromise(A,{withFileTypes:!0});for(let F of X){if(!W.innerLoop&&F.name===gT)continue;let D=v.join(A,F.name),he=v.join(V,F.name);F.isDirectory()?(F.name!==gi||W&&W.innerLoop)&&(await T.mkdirPromise(he,{recursive:!0}),await q(D,he,_(P({},W),{innerLoop:!0}))):H.value===Bi.HARDLINKS_LOCAL||H.value===Bi.HARDLINKS_GLOBAL?await T.linkPromise(D,he):await T.copyFilePromise(D,he,mce.default.constants.COPYFILE_FICLONE)}}catch(X){throw W.innerLoop||(X.message=`While cloning ${A} -> ${V} ${X.message}`),X}finally{W.innerLoop||B.tick()}};await q(L,K,J)})().then(()=>g.splice(g.indexOf(ne),1));g.push(ne),g.length>Qce&&await Promise.race(g)},p=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!1}),await If(L,{contentsOnly:L===a});else for(let[ne,q]of K.children){let A=J.children.get(ne);await p(v.join(L,ne),q,A)}};for(let[L,K]of l){let J=u.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await p(v.join(L,ne),q,A)}}let d=async(L,K,J)=>{if(!J)K.children.has(gi)&&await If(v.join(L,gi),{contentsOnly:!0}),await If(L,{contentsOnly:K.linkType===gt.HARD});else{vce(K.locator,J.locator)||await If(L,{contentsOnly:K.linkType===gt.HARD});for(let[ne,q]of K.children){let A=J.children.get(ne);await d(v.join(L,ne),q,A)}}};for(let[L,K]of u){let J=l.get(L);for(let[ne,q]of K.children){if(ne===".")continue;let A=J&&J.children.get(ne);await d(v.join(L,ne),q,A)}}let m=new Map,E=[];for(let[L,{locations:K}]of t.locatorMap.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=u.get(ne),V=ne;if(A){for(let W of q)if(V=v.join(V,W),A=A.children.get(W),!A)break;if(A){let W=vce(A.locator,L),X=e.get(A.locator),F=X.target,D=V,he=X.linkType;if(W)m.has(F)||m.set(F,D);else if(F!==D){let pe=S.parseLocator(A.locator);S.isVirtualLocator(pe)&&(pe=S.devirtualizeLocator(pe)),E.push({srcDir:F,dstDir:D,linkType:he,realLocatorHash:pe.locatorHash})}}}}for(let[L,{locations:K}]of e.entries())for(let J of K){let{locationRoot:ne,segments:q}=$0(J,{skipPrefix:i.cwd}),A=l.get(ne),V=u.get(ne),W=ne,X=e.get(L),F=S.parseLocator(L);S.isVirtualLocator(F)&&(F=S.devirtualizeLocator(F));let D=F.locatorHash,he=X.target,pe=J;if(he===pe)continue;let Ne=X.linkType;for(let Pe of q)V=V.children.get(Pe);if(!A)E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});else for(let Pe of q)if(W=v.join(W,Pe),A=A.children.get(Pe),!A){E.push({srcDir:he,dstDir:pe,linkType:Ne,realLocatorHash:D});break}}let B=Xi.progressViaCounter(E.length),b=n.reportProgress(B),R=i.configuration.get("nmMode"),H={value:R};try{let L=H.value===Bi.HARDLINKS_GLOBAL?`${dT(i.configuration)}/v1`:null;if(L&&!await T.existsPromise(L)){await T.mkdirpPromise(L);for(let J=0;J<256;J++)await T.mkdirPromise(v.join(L,J.toString(16).padStart(2,"0")))}for(let J of E)(J.linkType===gt.SOFT||!m.has(J.srcDir))&&(m.set(J.srcDir,J.dstDir),await f(_(P({},J),{globalHardlinksStore:L,nmMode:H,packageChecksum:o.get(J.realLocatorHash)||null})));await Promise.all(g),g.length=0;for(let J of E){let ne=m.get(J.srcDir);J.linkType!==gt.SOFT&&J.dstDir!==ne&&await h(ne,J.dstDir,{nmMode:H})}await Promise.all(g),await T.mkdirPromise(a,{recursive:!0});let K=await H6e(e,u,i.cwd,{loadManifest:s});await G6e(c,K,i.cwd),await M6e(i,e,K,H),R==Bi.HARDLINKS_GLOBAL&&H.value==Bi.HARDLINKS_LOCAL&&n.reportWarningOnce(z.NM_HARDLINKS_MODE_DOWNGRADED,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{b.stop()}}async function G6e(t,e,r){for(let i of t.keys()){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);if(!e.has(i)){let n=v.join(i,gi,gT);await T.removePromise(n)}}for(let[i,n]of e){if(v.contains(r,i)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${i}`);let s=v.join(i,gi,gT),o=t.get(i)||new Map;await T.mkdirPromise(s,{recursive:!0});for(let a of o.keys())n.has(a)||(await T.removePromise(v.join(s,a)),process.platform==="win32"&&await T.removePromise(v.join(s,kr(`${a}.cmd`))));for(let[a,l]of n){let c=o.get(a),u=v.join(s,a);c!==l&&(process.platform==="win32"?await(0,Cce.default)(M.fromPortablePath(l),M.fromPortablePath(u),{createPwshFile:!1}):(await T.removePromise(u),await pT(l,u),v.contains(r,await T.realpathPromise(l))!==null&&await T.chmodPromise(l,493)))}}}var CT=class extends jc{constructor(){super(...arguments);this.mode="loose"}makeInstaller(e){return new Sce(e)}},Sce=class extends Cf{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(e){let r=new Pr({baseFs:new Jn({libzip:await $i(),maxOpenFiles:80,readOnlyArchives:!0})}),i=ice(e,this.opts.project.cwd,r),{tree:n,errors:s}=VC(i,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:u,text:g}of s)this.opts.report.reportError(u,g);return}let o=new Map;e.fallbackPool=o;let a=(u,g)=>{let f=S.parseLocator(g.locator),h=S.stringifyIdent(f);h===u?o.set(u,f.reference):o.set(u,[h,f.reference])},l=v.join(this.opts.project.cwd,wt.nodeModules),c=n.get(l);if(typeof c!="undefined"){if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let u of c.dirList){let g=v.join(l,u),f=n.get(g);if(typeof f=="undefined")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in f)a(u,f);else for(let h of f.dirList){let p=v.join(g,h),d=n.get(p);if(typeof d=="undefined")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in d)a(`${u}/${h}`,d);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var j6e={hooks:{cleanGlobalArtifacts:async t=>{let e=dT(t);await T.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:ge.STRING,values:[Sn.WORKSPACES,Sn.DEPENDENCIES,Sn.NONE],default:Sn.NONE},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:ge.STRING,values:[Bi.CLASSIC,Bi.HARDLINKS_LOCAL,Bi.HARDLINKS_GLOBAL],default:Bi.CLASSIC},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:ge.BOOLEAN,default:!0}},linkers:[fT,CT]},Y6e=j6e;var yM={};it(yM,{default:()=>ZVe,npmConfigUtils:()=>gr,npmHttpUtils:()=>Lt,npmPublishUtils:()=>Rf});var Rce=ie(Or());var ir="npm:";var Lt={};it(Lt,{AuthType:()=>jn,customPackageError:()=>W6e,del:()=>_6e,get:()=>zs,getIdentUrl:()=>zA,handleInvalidAuthenticationError:()=>WA,post:()=>z6e,put:()=>V6e});var Pce=ie(aC()),Dce=ie(require("url"));var gr={};it(gr,{RegistryType:()=>ja,getAuditRegistry:()=>q6e,getAuthConfiguration:()=>ET,getDefaultRegistry:()=>eQ,getPublishRegistry:()=>xce,getRegistryConfiguration:()=>kce,getScopeConfiguration:()=>IT,getScopeRegistry:()=>Ya,normalizeRegistry:()=>To});var ja;(function(i){i.AUDIT_REGISTRY="npmAuditRegistry",i.FETCH_REGISTRY="npmRegistryServer",i.PUBLISH_REGISTRY="npmPublishRegistry"})(ja||(ja={}));function To(t){return t.replace(/\/$/,"")}function q6e(t,{configuration:e}){let r=e.get(ja.AUDIT_REGISTRY);return r!==null?To(r):xce(t,{configuration:e})}function xce(t,{configuration:e}){var r;return((r=t.publishConfig)==null?void 0:r.registry)?To(t.publishConfig.registry):t.name?Ya(t.name.scope,{configuration:e,type:ja.PUBLISH_REGISTRY}):eQ({configuration:e,type:ja.PUBLISH_REGISTRY})}function Ya(t,{configuration:e,type:r=ja.FETCH_REGISTRY}){let i=IT(t,{configuration:e});if(i===null)return eQ({configuration:e,type:r});let n=i.get(r);return n===null?eQ({configuration:e,type:r}):To(n)}function eQ({configuration:t,type:e=ja.FETCH_REGISTRY}){let r=t.get(e);return To(r!==null?r:t.get(ja.FETCH_REGISTRY))}function kce(t,{configuration:e}){let r=e.get("npmRegistries"),i=To(t),n=r.get(i);if(typeof n!="undefined")return n;let s=r.get(i.replace(/^[a-z]+:/,""));return typeof s!="undefined"?s:null}function IT(t,{configuration:e}){if(t===null)return null;let i=e.get("npmScopes").get(t);return i||null}function ET(t,{configuration:e,ident:r}){let i=r&&IT(r.scope,{configuration:e});return(i==null?void 0:i.get("npmAuthIdent"))||(i==null?void 0:i.get("npmAuthToken"))?i:kce(t,{configuration:e})||e}var jn;(function(n){n[n.NO_AUTH=0]="NO_AUTH",n[n.BEST_EFFORT=1]="BEST_EFFORT",n[n.CONFIGURATION=2]="CONFIGURATION",n[n.ALWAYS_AUTH=3]="ALWAYS_AUTH"})(jn||(jn={}));async function WA(t,{attemptedAs:e,registry:r,headers:i,configuration:n}){var s,o;if(((s=t.originalError)==null?void 0:s.name)==="HTTPError"&&((o=t.originalError)==null?void 0:o.response.statusCode)===401)throw new nt(z.AUTHENTICATION_INVALID,`Invalid authentication (${typeof e!="string"?`as ${await J6e(r,i,{configuration:n})}`:`attempted as ${e}`})`)}function W6e(t){var e;return((e=t.response)==null?void 0:e.statusCode)===404?"Package not found":null}function zA(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function zs(t,a){var l=a,{configuration:e,headers:r,ident:i,authType:n,registry:s}=l,o=qr(l,["configuration","headers","ident","authType","registry"]);if(i&&typeof s=="undefined"&&(s=Ya(i.scope,{configuration:e})),i&&i.scope&&typeof n=="undefined"&&(n=1),typeof s!="string")throw new Error("Assertion failed: The registry should be a string");let c=await tQ(s,{authType:n,configuration:e,ident:i});c&&(r=_(P({},r),{authorization:c}));try{return await Zt.get(t.charAt(0)==="/"?`${s}${t}`:t,P({configuration:e,headers:r},o))}catch(u){throw await WA(u,{registry:s,configuration:e,headers:r}),u}}async function z6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.post(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.post(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function V6e(t,e,c){var u=c,{attemptedAs:r,configuration:i,headers:n,ident:s,authType:o=3,registry:a}=u,l=qr(u,["attemptedAs","configuration","headers","ident","authType","registry"]);if(s&&typeof a=="undefined"&&(a=Ya(s.scope,{configuration:i})),typeof a!="string")throw new Error("Assertion failed: The registry should be a string");let g=await tQ(a,{authType:o,configuration:i,ident:s});g&&(n=_(P({},n),{authorization:g}));try{return await Zt.put(a+t,e,P({configuration:i,headers:n},l))}catch(f){if(!wT(f))throw await WA(f,{attemptedAs:r,registry:a,configuration:i,headers:n}),f;let h=await yT(),p=P(P({},n),BT(h));try{return await Zt.put(`${a}${t}`,e,P({configuration:i,headers:p},l))}catch(d){throw await WA(d,{attemptedAs:r,registry:a,configuration:i,headers:n}),d}}}async function _6e(t,l){var c=l,{attemptedAs:e,configuration:r,headers:i,ident:n,authType:s=3,registry:o}=c,a=qr(c,["attemptedAs","configuration","headers","ident","authType","registry"]);if(n&&typeof o=="undefined"&&(o=Ya(n.scope,{configuration:r})),typeof o!="string")throw new Error("Assertion failed: The registry should be a string");let u=await tQ(o,{authType:s,configuration:r,ident:n});u&&(i=_(P({},i),{authorization:u}));try{return await Zt.del(o+t,P({configuration:r,headers:i},a))}catch(g){if(!wT(g))throw await WA(g,{attemptedAs:e,registry:o,configuration:r,headers:i}),g;let f=await yT(),h=P(P({},i),BT(f));try{return await Zt.del(`${o}${t}`,P({configuration:r,headers:h},a))}catch(p){throw await WA(p,{attemptedAs:e,registry:o,configuration:r,headers:i}),p}}}async function tQ(t,{authType:e=2,configuration:r,ident:i}){let n=ET(t,{configuration:r,ident:i}),s=X6e(n,e);if(!s)return null;let o=await r.reduceHook(a=>a.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:i});if(o)return o;if(n.get("npmAuthToken"))return`Bearer ${n.get("npmAuthToken")}`;if(n.get("npmAuthIdent")){let a=n.get("npmAuthIdent");return a.includes(":")?`Basic ${Buffer.from(a).toString("base64")}`:`Basic ${a}`}if(s&&e!==1)throw new nt(z.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}function X6e(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function J6e(t,e,{configuration:r}){var i;if(typeof e=="undefined"||typeof e.authorization=="undefined")return"an anonymous user";try{return(i=(await Zt.get(new Dce.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username)!=null?i:"an unknown user"}catch{return"an unknown user"}}async function yT(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";let{otp:t}=await(0,Pce.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return t}function wT(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(n=>n.toLowerCase())).includes("otp")}catch(i){return!1}}function BT(t){return{["npm-otp"]:t}}var QT=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i,params:n}=S.parseRange(e.reference);return!(!Rce.default.valid(i)||n===null||typeof n.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let{params:i}=S.parseRange(e.reference);if(i===null||typeof i.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let n=await zs(i.__archiveUrl,{configuration:r.project.configuration,ident:e});return await Ai.convertToZip(n,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}};var bT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!S.tryParseDescriptor(e.range.slice(ir.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){let i=S.parseDescriptor(e.range.slice(ir.length),!0);return r.resolver.getResolutionDependencies(i,r)}async getCandidates(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return await i.resolver.getCandidates(n,r,i)}async getSatisfying(e,r,i){let n=S.parseDescriptor(e.range.slice(ir.length),!0);return i.resolver.getSatisfying(n,r,i)}resolve(e,r){throw new Error("Unreachable")}};var vT=ie(Or()),Fce=ie(require("url"));var Vs=class{supports(e,r){if(!e.reference.startsWith(ir))return!1;let i=new Fce.URL(e.reference);return!(!vT.default.valid(i.pathname)||i.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,r){let i;try{i=await zs(Vs.getLocatorUrl(e),{configuration:r.project.configuration,ident:e})}catch(n){i=await zs(Vs.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:r.project.configuration,ident:e})}return await Ai.convertToZip(i,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:S.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:i}){let n=Ya(e.scope,{configuration:i}),s=Vs.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),n=n.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===n+s||r===n+s.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=vT.default.clean(e.reference.slice(ir.length));if(r===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${zA(e)}/-/${e.name}-${r}.tgz`}};var ST=ie(Or());var rQ=S.makeIdent(null,"node-gyp"),Z6e=/\b(node-gyp|prebuild-install)\b/,xT=class{supportsDescriptor(e,r){return e.range.startsWith(ir)?!!qt.validRange(e.range.slice(ir.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(ir))return!1;let{selector:i}=S.parseRange(e.reference);return!!ST.default.valid(i)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);let s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0}),o=de.mapAndFilter(Object.keys(s.versions),c=>{try{let u=new qt.SemVer(c);if(n.test(u))return u}catch{}return de.mapAndFilter.skip}),a=o.filter(c=>!s.versions[c.raw].deprecated),l=a.length>0?a:o;return l.sort((c,u)=>-c.compare(u)),l.map(c=>{let u=S.makeLocator(e,`${ir}${c.raw}`),g=s.versions[c.raw].dist.tarball;return Vs.isConventionalTarballUrl(u,g,{configuration:i.project.configuration})?u:S.bindLocator(u,{__archiveUrl:g})})}async getSatisfying(e,r,i){let n=qt.validRange(e.range.slice(ir.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(ir.length)}`);return de.mapAndFilter(r,s=>{try{let{selector:o}=S.parseRange(s,{requireProtocol:ir}),a=new qt.SemVer(o);if(n.test(a))return{reference:s,version:a}}catch{}return de.mapAndFilter.skip}).sort((s,o)=>-s.version.compare(o.version)).map(({reference:s})=>S.makeLocator(e,s))}async resolve(e,r){let{selector:i}=S.parseRange(e.reference),n=ST.default.clean(i);if(n===null)throw new nt(z.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");let s=await zs(zA(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(s.versions,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return reference "${n}"`);let o=new Ze;if(o.load(s.versions[n]),!o.dependencies.has(rQ.identHash)&&!o.peerDependencies.has(rQ.identHash)){for(let a of o.scripts.values())if(a.match(Z6e)){o.dependencies.set(rQ.identHash,S.makeDescriptor(rQ,"latest")),r.report.reportWarningOnce(z.NODE_GYP_INJECTED,`${S.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}return typeof o.raw.deprecated=="string"&&r.report.reportWarningOnce(z.DEPRECATED_PACKAGE,`${S.prettyLocator(r.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),_(P({},e),{version:n,languageName:"node",linkType:gt.HARD,conditions:o.getConditions(),dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin})}};var kT=class{supportsDescriptor(e,r){return!(!e.range.startsWith(ir)||!Rg.test(e.range.slice(ir.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,i){return e}getResolutionDependencies(e,r){return[]}async getCandidates(e,r,i){let n=e.range.slice(ir.length),s=await zs(zA(e),{configuration:i.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(s,"dist-tags"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');let o=s["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,n))throw new nt(z.REMOTE_NOT_FOUND,`Registry failed to return tag "${n}"`);let a=o[n],l=S.makeLocator(e,`${ir}${a}`),c=s.versions[a].dist.tarball;return Vs.isConventionalTarballUrl(l,c,{configuration:i.project.configuration})?[l]:[S.bindLocator(l,{__archiveUrl:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){throw new Error("Unreachable")}};var Rf={};it(Rf,{getGitHead:()=>_Ve,makePublishBody:()=>VVe});var CM={};it(CM,{default:()=>DVe,packUtils:()=>za});var za={};it(za,{genPackList:()=>QQ,genPackStream:()=>dM,genPackageManifest:()=>age,hasPackScripts:()=>hM,prepareForPack:()=>pM});var fM=ie(Nn()),sge=ie(nge()),oge=ie(require("zlib")),EVe=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],yVe=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function hM(t){return!!(Kt.hasWorkspaceScript(t,"prepack")||Kt.hasWorkspaceScript(t,"postpack"))}async function pM(t,{report:e},r){await Kt.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let i=v.join(t.cwd,Ze.fileName);await T.existsPromise(i)&&await t.manifest.loadFile(i,{baseFs:T}),await r()}finally{await Kt.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function dM(t,e){var s,o;typeof e=="undefined"&&(e=await QQ(t));let r=new Set;for(let a of(o=(s=t.manifest.publishConfig)==null?void 0:s.executableFiles)!=null?o:new Set)r.add(v.normalize(a));for(let a of t.manifest.bin.values())r.add(v.normalize(a));let i=sge.default.pack();process.nextTick(async()=>{for(let a of e){let l=v.normalize(a),c=v.resolve(t.cwd,l),u=v.join("package",l),g=await T.lstatPromise(c),f={name:u,mtime:new Date(mr.SAFE_TIME*1e3)},h=r.has(l)?493:420,p,d,m=new Promise((B,b)=>{p=B,d=b}),E=B=>{B?d(B):p()};if(g.isFile()){let B;l==="package.json"?B=Buffer.from(JSON.stringify(await age(t),null,2)):B=await T.readFilePromise(c),i.entry(_(P({},f),{mode:h,type:"file"}),B,E)}else g.isSymbolicLink()?i.entry(_(P({},f),{mode:h,type:"symlink",linkname:await T.readlinkPromise(c)}),E):E(new Error(`Unsupported file type ${g.mode} for ${M.fromPortablePath(l)}`));await m}i.finalize()});let n=(0,oge.createGzip)();return i.pipe(n),n}async function age(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function QQ(t){var g,f,h,p,d,m,E,B;let e=t.project,r=e.configuration,i={accept:[],reject:[]};for(let b of yVe)i.reject.push(b);for(let b of EVe)i.accept.push(b);i.reject.push(r.get("rcFilename"));let n=b=>{if(b===null||!b.startsWith(`${t.cwd}/`))return;let R=v.relative(t.cwd,b),H=v.resolve(Se.root,R);i.reject.push(H)};n(v.resolve(e.cwd,r.get("lockfileFilename"))),n(r.get("cacheFolder")),n(r.get("globalFolder")),n(r.get("installStatePath")),n(r.get("virtualFolder")),n(r.get("yarnPath")),await r.triggerHook(b=>b.populateYarnPaths,e,b=>{n(b)});for(let b of e.workspaces){let R=v.relative(t.cwd,b.cwd);R!==""&&!R.match(/^(\.\.)?\//)&&i.reject.push(`/${R}`)}let s={accept:[],reject:[]},o=(f=(g=t.manifest.publishConfig)==null?void 0:g.main)!=null?f:t.manifest.main,a=(p=(h=t.manifest.publishConfig)==null?void 0:h.module)!=null?p:t.manifest.module,l=(m=(d=t.manifest.publishConfig)==null?void 0:d.browser)!=null?m:t.manifest.browser,c=(B=(E=t.manifest.publishConfig)==null?void 0:E.bin)!=null?B:t.manifest.bin;o!=null&&s.accept.push(v.resolve(Se.root,o)),a!=null&&s.accept.push(v.resolve(Se.root,a)),typeof l=="string"&&s.accept.push(v.resolve(Se.root,l));for(let b of c.values())s.accept.push(v.resolve(Se.root,b));if(l instanceof Map)for(let[b,R]of l.entries())s.accept.push(v.resolve(Se.root,b)),typeof R=="string"&&s.accept.push(v.resolve(Se.root,R));let u=t.manifest.files!==null;if(u){s.reject.push("/*");for(let b of t.manifest.files)Age(s.accept,b,{cwd:Se.root})}return await wVe(t.cwd,{hasExplicitFileList:u,globalList:i,ignoreList:s})}async function wVe(t,{hasExplicitFileList:e,globalList:r,ignoreList:i}){let n=[],s=new Zo(t),o=[[Se.root,[i]]];for(;o.length>0;){let[a,l]=o.pop(),c=await s.lstatPromise(a);if(!cge(a,{globalList:r,ignoreLists:c.isDirectory()?null:l}))if(c.isDirectory()){let u=await s.readdirPromise(a),g=!1,f=!1;if(!e||a!==Se.root)for(let d of u)g=g||d===".gitignore",f=f||d===".npmignore";let h=f?await lge(s,a,".npmignore"):g?await lge(s,a,".gitignore"):null,p=h!==null?[h].concat(l):l;cge(a,{globalList:r,ignoreLists:l})&&(p=[...l,{accept:[],reject:["**/*"]}]);for(let d of u)o.push([v.resolve(a,d),p])}else(c.isFile()||c.isSymbolicLink())&&n.push(v.relative(Se.root,a))}return n.sort()}async function lge(t,e,r){let i={accept:[],reject:[]},n=await t.readFilePromise(v.join(e,r),"utf8");for(let s of n.split(/\n/g))Age(i.reject,s,{cwd:e});return i}function BVe(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=v.resolve(e,t)),r&&(t=`!${t}`),t}function Age(t,e,{cwd:r}){let i=e.trim();i===""||i[0]==="#"||t.push(BVe(i,{cwd:r}))}function cge(t,{globalList:e,ignoreLists:r}){if(bQ(t,e.accept))return!1;if(bQ(t,e.reject))return!0;if(r!==null)for(let i of r){if(bQ(t,i.accept))return!1;if(bQ(t,i.reject))return!0}return!1}function bQ(t,e){let r=e,i=[];for(let n=0;n{await pM(i,{report:l},async()=>{l.reportJson({base:M.fromPortablePath(i.cwd)});let c=await QQ(i);for(let u of c)l.reportInfo(null,M.fromPortablePath(u)),l.reportJson({location:M.fromPortablePath(u)});if(!this.dryRun){let u=await dM(i,c),g=T.createWriteStream(s);u.pipe(g),await new Promise(f=>{g.on("finish",f)})}}),this.dryRun||(l.reportInfo(z.UNNAMED,`Package archive generated in ${ue.pretty(e,s,ue.Type.PATH)}`),l.reportJson({output:M.fromPortablePath(s)}))})).exitCode()}};fm.paths=[["pack"]],fm.usage=ye.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});var gge=fm;function QVe(t,{workspace:e}){let r=t.replace("%s",bVe(e)).replace("%v",vVe(e));return M.toPortablePath(r)}function bVe(t){return t.manifest.name!==null?S.slugifyIdent(t.manifest.name):"package"}function vVe(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var SVe=["dependencies","devDependencies","peerDependencies"],xVe="workspace:",kVe=(t,e)=>{var i,n;e.publishConfig&&(e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of SVe)for(let o of t.manifest.getForScope(s).values()){let a=r.tryWorkspaceByDescriptor(o),l=S.parseRange(o.range);if(l.protocol===xVe)if(a===null){if(r.tryWorkspaceByIdent(o)===null)throw new nt(z.WORKSPACE_NOT_FOUND,`${S.prettyDescriptor(r.configuration,o)}: No local workspace found for this range`)}else{let c;S.areDescriptorsEqual(o,a.anchoredDescriptor)||l.selector==="*"?c=(i=a.manifest.version)!=null?i:"0.0.0":l.selector==="~"||l.selector==="^"?c=`${l.selector}${(n=a.manifest.version)!=null?n:"0.0.0"}`:c=l.selector,e[s][S.stringifyIdent(o)]=c}}},PVe={hooks:{beforeWorkspacePacking:kVe},commands:[gge]},DVe=PVe;var yge=ie(require("crypto")),wge=ie(Ege()),Bge=ie(require("url"));async function VVe(t,e,{access:r,tag:i,registry:n,gitHead:s}){let o=t.project.configuration,a=t.manifest.name,l=t.manifest.version,c=S.stringifyIdent(a),u=(0,yge.createHash)("sha1").update(e).digest("hex"),g=wge.default.fromData(e).toString();typeof r=="undefined"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:o.get("npmPublishAccess")!==null?r=o.get("npmPublishAccess"):a.scope?r="restricted":r="public");let f=await za.genPackageManifest(t),h=`${c}-${l}.tgz`,p=new Bge.URL(`${To(n)}/${c}/-/${h}`);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:c,access:r,["dist-tags"]:{[i]:l},versions:{[l]:_(P({},f),{_id:`${c}@${l}`,name:c,version:l,gitHead:s,dist:{shasum:u,integrity:g,tarball:p.toString()}})}}}async function _Ve(t){try{let{stdout:e}=await hr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var wM={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:ge.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:ge.SECRET,default:null}},Qge={npmAuditRegistry:{description:"Registry to query for audit reports",type:ge.STRING,default:null},npmPublishRegistry:{description:"Registry to push packages to",type:ge.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:ge.STRING,default:"https://registry.yarnpkg.com"}},XVe={configuration:_(P(P({},wM),Qge),{npmScopes:{description:"Settings per package scope",type:ge.MAP,valueDefinition:{description:"",type:ge.SHAPE,properties:P(P({},wM),Qge)}},npmRegistries:{description:"Settings per registry",type:ge.MAP,normalizeKeys:To,valueDefinition:{description:"",type:ge.SHAPE,properties:P({},wM)}}}),fetchers:[QT,Vs],resolvers:[bT,xT,kT]},ZVe=XVe;var vM={};it(vM,{default:()=>a_e});Ss();var Ho;(function(i){i.All="all",i.Production="production",i.Development="development"})(Ho||(Ho={}));var Xs;(function(s){s.Info="info",s.Low="low",s.Moderate="moderate",s.High="high",s.Critical="critical"})(Xs||(Xs={}));var vQ=[Xs.Info,Xs.Low,Xs.Moderate,Xs.High,Xs.Critical];function bge(t,e){let r=[],i=new Set,n=o=>{i.has(o)||(i.add(o),r.push(o))};for(let o of e)n(o);let s=new Set;for(;r.length>0;){let o=r.shift(),a=t.storedResolutions.get(o);if(typeof a=="undefined")throw new Error("Assertion failed: Expected the resolution to have been registered");let l=t.storedPackages.get(a);if(!!l){s.add(o);for(let c of l.dependencies.values())n(c.descriptorHash)}}return s}function $Ve(t,e){return new Set([...t].filter(r=>!e.has(r)))}function e_e(t,e,{all:r}){let i=r?t.workspaces:[e],n=i.map(f=>f.manifest),s=new Set(n.map(f=>[...f.dependencies].map(([h,p])=>h)).flat()),o=new Set(n.map(f=>[...f.devDependencies].map(([h,p])=>h)).flat()),a=i.map(f=>[...f.dependencies.values()]).flat(),l=a.filter(f=>s.has(f.identHash)).map(f=>f.descriptorHash),c=a.filter(f=>o.has(f.identHash)).map(f=>f.descriptorHash),u=bge(t,l),g=bge(t,c);return $Ve(g,u)}function vge(t){let e={};for(let r of t)e[S.stringifyIdent(r)]=S.parseRange(r.range).selector;return e}function Sge(t){if(typeof t=="undefined")return new Set;let e=vQ.indexOf(t),r=vQ.slice(e);return new Set(r)}function t_e(t,e){let r=Sge(e),i={};for(let n of r)i[n]=t[n];return i}function xge(t,e){var i;let r=t_e(t,e);for(let n of Object.keys(r))if((i=r[n])!=null?i:0>0)return!0;return!1}function kge(t,e){var s;let r={},i={children:r},n=Object.values(t.advisories);if(e!=null){let o=Sge(e);n=n.filter(a=>o.has(a.severity))}for(let o of de.sortMap(n,a=>a.module_name))r[o.module_name]={label:o.module_name,value:ue.tuple(ue.Type.RANGE,o.findings.map(a=>a.version).join(", ")),children:{Issue:{label:"Issue",value:ue.tuple(ue.Type.NO_HINT,o.title)},URL:{label:"URL",value:ue.tuple(ue.Type.URL,o.url)},Severity:{label:"Severity",value:ue.tuple(ue.Type.NO_HINT,o.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ue.tuple(ue.Type.RANGE,o.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ue.tuple(ue.Type.RANGE,o.patched_versions)},Via:{label:"Via",value:ue.tuple(ue.Type.NO_HINT,Array.from(new Set(o.findings.map(a=>a.paths).flat().map(a=>a.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ue.tuple(ue.Type.NO_HINT,(s=o.recommendation)==null?void 0:s.replace(/\n/g," "))}}};return i}function Pge(t,e,{all:r,environment:i}){let n=r?t.workspaces:[e],s=[Ho.All,Ho.Production].includes(i),o=[];if(s)for(let c of n)for(let u of c.manifest.dependencies.values())o.push(u);let a=[Ho.All,Ho.Development].includes(i),l=[];if(a)for(let c of n)for(let u of c.manifest.devDependencies.values())l.push(u);return vge([...o,...l].filter(c=>S.parseRange(c.range).protocol===null))}function Dge(t,e,{all:r}){var s;let i=e_e(t,e,{all:r}),n={};for(let o of t.storedPackages.values())n[S.stringifyIdent(o)]={version:(s=o.version)!=null?s:"0.0.0",integrity:o.identHash,requires:vge(o.dependencies.values()),dev:i.has(S.convertLocatorToDescriptor(o).descriptorHash)};return n}var dm=class extends Be{constructor(){super(...arguments);this.all=Y.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=Y.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=Y.String("--environment",Ho.All,{description:"Which environments to cover",validator:Yi(Ho)});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=Y.String("--severity",Xs.Info,{description:"Minimal severity requested for packages to be displayed",validator:Yi(Xs)})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=Pge(r,i,{all:this.all,environment:this.environment}),s=Dge(r,i,{all:this.all});if(!this.recursive)for(let f of Object.keys(s))Object.prototype.hasOwnProperty.call(n,f)?s[f].requires={}:delete s[f];let o={requires:n,dependencies:s},a=gr.getAuditRegistry(i.manifest,{configuration:e}),l,c=await Fa.start({configuration:e,stdout:this.context.stdout},async()=>{l=await Lt.post("/-/npm/v1/security/audits/quick",o,{authType:Lt.AuthType.BEST_EFFORT,configuration:e,jsonResponse:!0,registry:a})});if(c.hasErrors())return c.exitCode();let u=xge(l.metadata.vulnerabilities,this.severity);return!this.json&&u?(Hs.emitTree(kge(l,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async f=>{f.reportJson(l),u||f.reportInfo(z.EXCEPTION,"No audit suggestions")})).exitCode()}};dm.paths=[["npm","audit"]],dm.usage=ye.Usage({description:"perform a vulnerability audit against the installed packages",details:` - This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). - - For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. - - Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${vQ.map(e=>`\`${e}\``).join(", ")}. - - If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. - - To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them. - `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]});var Rge=dm;var BM=ie(Or()),QM=ie(require("util")),Cm=class extends Be{constructor(){super(...arguments);this.fields=Y.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=Y.Rest()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r}=await Ke.find(e,this.context.cwd),i=typeof this.fields!="undefined"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],s=!1,o=await Fe.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async a=>{for(let l of this.packages){let c;if(l==="."){let b=r.topLevelWorkspace;if(!b.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(b.cwd,wt.manifest))}`);c=S.makeDescriptor(b.manifest.name,"unknown")}else c=S.parseDescriptor(l);let u=Lt.getIdentUrl(c),g=bM(await Lt.get(u,{configuration:e,ident:c,jsonResponse:!0,customErrorMessage:Lt.customPackageError})),f=Object.keys(g.versions).sort(BM.default.compareLoose),p=g["dist-tags"].latest||f[f.length-1],d=qt.validRange(c.range);if(d){let b=BM.default.maxSatisfying(f,d);b!==null?p=b:(a.reportWarning(z.UNNAMED,`Unmet range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0)}else c.range!=="unknown"&&(a.reportWarning(z.UNNAMED,`Invalid range ${S.prettyRange(e,c.range)}; falling back to the latest version`),s=!0);let m=g.versions[p],E=_(P(P({},g),m),{version:p,versions:f}),B;if(i!==null){B={};for(let b of i){let R=E[b];if(typeof R!="undefined")B[b]=R;else{a.reportWarning(z.EXCEPTION,`The '${b}' field doesn't exist inside ${S.prettyIdent(e,c)}'s informations`),s=!0;continue}}}else this.json||(delete E.dist,delete E.readme,delete E.users),B=E;a.reportJson(B),this.json||n.push(B)}});QM.inspect.styles.name="cyan";for(let a of n)(a!==n[0]||s)&&this.context.stdout.write(` -`),this.context.stdout.write(`${(0,QM.inspect)(a,{depth:Infinity,colors:!0,compact:!1})} -`);return o.exitCode()}};Cm.paths=[["npm","info"]],Cm.usage=ye.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});var Fge=Cm;function bM(t){if(Array.isArray(t)){let e=[];for(let r of t)r=bM(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let i=bM(t[r]);i&&(e[r]=i)}return e}else return t||null}var Nge=ie(aC()),mm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{let s=await i_e({registry:r,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),o=`/-/user/org.couchdb.user:${encodeURIComponent(s.name)}`,a=await Lt.put(o,s,{attemptedAs:s.name,configuration:e,registry:r,jsonResponse:!0,authType:Lt.AuthType.NO_AUTH});return await r_e(r,a.token,{configuration:e,scope:this.scope}),n.reportInfo(z.UNNAMED,"Successfully logged in")})).exitCode()}};mm.paths=[["npm","login"]],mm.usage=ye.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});var Lge=mm;async function SQ({scope:t,publish:e,configuration:r,cwd:i}){return t&&e?gr.getScopeRegistry(t,{configuration:r,type:gr.RegistryType.PUBLISH_REGISTRY}):t?gr.getScopeRegistry(t,{configuration:r}):e?gr.getPublishRegistry((await rf(r,i)).manifest,{configuration:r}):gr.getDefaultRegistry({configuration:r})}async function r_e(t,e,{configuration:r,scope:i}){let n=o=>a=>{let l=de.isIndexableObject(a)?a:{},c=l[o],u=de.isIndexableObject(c)?c:{};return _(P({},l),{[o]:_(P({},u),{npmAuthToken:e})})},s=i?{npmScopes:n(i)}:{npmRegistries:n(t)};return await fe.updateHomeConfiguration(s)}async function i_e({registry:t,report:e,stdin:r,stdout:i}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};e.reportInfo(z.UNNAMED,`Logging in to ${t}`);let n=!1;t.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(e.reportInfo(z.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),e.reportSeparator();let{username:s,password:o}=await(0,Nge.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:i}]);return e.reportSeparator(),{name:s,password:o}}var Ff=new Set(["npmAuthIdent","npmAuthToken"]),Im=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=Y.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r=async()=>{var l;let n=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),s=await fe.find(this.context.cwd,this.context.plugins),o=S.makeIdent((l=this.scope)!=null?l:null,"pkg");return!gr.getAuthConfiguration(n,{configuration:s,ident:o}).get("npmAuthToken")};return(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{if(this.all&&(await n_e(),n.reportInfo(z.UNNAMED,"Successfully logged out from everything")),this.scope){await Tge("npmScopes",this.scope),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${this.scope}`):n.reportWarning(z.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it");return}let s=await SQ({configuration:e,cwd:this.context.cwd,publish:this.publish});await Tge("npmRegistries",s),await r()?n.reportInfo(z.UNNAMED,`Successfully logged out from ${s}`):n.reportWarning(z.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Im.paths=[["npm","logout"]],Im.usage=ye.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});var Mge=Im;function s_e(t,e){let r=t[e];if(!de.isIndexableObject(r))return!1;let i=new Set(Object.keys(r));if([...Ff].every(s=>!i.has(s)))return!1;for(let s of Ff)i.delete(s);if(i.size===0)return t[e]=void 0,!0;let n=P({},r);for(let s of Ff)delete n[s];return t[e]=n,!0}async function n_e(){let t=e=>{let r=!1,i=de.isIndexableObject(e)?P({},e):{};i.npmAuthToken&&(delete i.npmAuthToken,r=!0);for(let n of Object.keys(i))s_e(i,n)&&(r=!0);if(Object.keys(i).length!==0)return r?i:e};return await fe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Tge(t,e){return await fe.updateHomeConfiguration({[t]:r=>{let i=de.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(i,e))return r;let n=i[e],s=de.isIndexableObject(n)?n:{},o=new Set(Object.keys(s));if([...Ff].every(l=>!o.has(l)))return r;for(let l of Ff)o.delete(l);if(o.size===0)return Object.keys(i).length===1?void 0:_(P({},i),{[e]:void 0});let a={};for(let l of Ff)a[l]=void 0;return _(P({},i),{[e]:P(P({},s),a)})}})}var Em=class extends Be{constructor(){super(...arguments);this.access=Y.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=Y.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=Y.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);if(i.manifest.private)throw new me("Private workspaces cannot be published");if(i.manifest.name===null||i.manifest.version===null)throw new me("Workspaces must have valid names and versions to be published on an external registry");await r.restoreInstallState();let n=i.manifest.name,s=i.manifest.version,o=gr.getPublishRegistry(i.manifest,{configuration:e});return(await Fe.start({configuration:e,stdout:this.context.stdout},async l=>{var c,u;if(this.tolerateRepublish)try{let g=await Lt.get(Lt.getIdentUrl(n),{configuration:e,registry:o,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(g,"versions"))throw new nt(z.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(g.versions,s)){l.reportWarning(z.UNNAMED,`Registry already knows about version ${s}; skipping.`);return}}catch(g){if(((u=(c=g.originalError)==null?void 0:c.response)==null?void 0:u.statusCode)!==404)throw g}await Kt.maybeExecuteWorkspaceLifecycleScript(i,"prepublish",{report:l}),await za.prepareForPack(i,{report:l},async()=>{let g=await za.genPackList(i);for(let m of g)l.reportInfo(null,m);let f=await za.genPackStream(i,g),h=await de.bufferStream(f),p=await Rf.getGitHead(i.cwd),d=await Rf.makePublishBody(i,h,{access:this.access,tag:this.tag,registry:o,gitHead:p});await Lt.put(Lt.getIdentUrl(n),d,{configuration:e,registry:o,ident:n,jsonResponse:!0})}),l.reportInfo(z.UNNAMED,"Package archive published")})).exitCode()}};Em.paths=[["npm","publish"]],Em.usage=ye.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});var Oge=Em;var Uge=ie(Or());var ym=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String({required:!1})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n;if(typeof this.package!="undefined")n=S.parseIdent(this.package);else{if(!i)throw new rt(r.cwd,this.context.cwd);if(!i.manifest.name)throw new me(`Missing 'name' field in ${M.fromPortablePath(v.join(i.cwd,wt.manifest))}`);n=i.manifest.name}let s=await wm(n,e),a={children:de.sortMap(Object.entries(s),([l])=>l).map(([l,c])=>({value:ue.tuple(ue.Type.RESOLUTION,{descriptor:S.makeDescriptor(n,l),locator:S.makeLocator(n,c)})}))};return Hs.emitTree(a,{configuration:e,json:this.json,stdout:this.context.stdout})}};ym.paths=[["npm","tag","list"]],ym.usage=ye.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` - This command will list all tags of a package from the npm registry. - - If the package is not specified, Yarn will default to the current workspace. - `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});var Kge=ym;async function wm(t,e){let r=`/-/package${Lt.getIdentUrl(t)}/dist-tags`;return Lt.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:Lt.customPackageError})}var Bm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseDescriptor(this.package,!0),s=n.range;if(!Uge.default.valid(s))throw new me(`The range ${ue.pretty(e,n.range,ue.Type.RANGE)} must be a valid semver version`);let o=gr.getPublishRegistry(i.manifest,{configuration:e}),a=ue.pretty(e,n,ue.Type.IDENT),l=ue.pretty(e,s,ue.Type.RANGE),c=ue.pretty(e,this.tag,ue.Type.CODE);return(await Fe.start({configuration:e,stdout:this.context.stdout},async g=>{let f=await wm(n,e);Object.prototype.hasOwnProperty.call(f,this.tag)&&f[this.tag]===s&&g.reportWarning(z.UNNAMED,`Tag ${c} is already set to version ${l}`);let h=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.put(h,s,{configuration:e,registry:o,ident:n,jsonRequest:!0,jsonResponse:!0}),g.reportInfo(z.UNNAMED,`Tag ${c} added to version ${l} of package ${a}`)})).exitCode()}};Bm.paths=[["npm","tag","add"]],Bm.usage=ye.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` - This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. - `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});var Hge=Bm;var Qm=class extends Be{constructor(){super(...arguments);this.package=Y.String();this.tag=Y.String()}async execute(){if(this.tag==="latest")throw new me("The 'latest' tag cannot be removed.");let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);let n=S.parseIdent(this.package),s=gr.getPublishRegistry(i.manifest,{configuration:e}),o=ue.pretty(e,this.tag,ue.Type.CODE),a=ue.pretty(e,n,ue.Type.IDENT),l=await wm(n,e);if(!Object.prototype.hasOwnProperty.call(l,this.tag))throw new me(`${o} is not a tag of package ${a}`);return(await Fe.start({configuration:e,stdout:this.context.stdout},async u=>{let g=`/-/package${Lt.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await Lt.del(g,{configuration:e,registry:s,ident:n,jsonResponse:!0}),u.reportInfo(z.UNNAMED,`Tag ${o} removed from package ${a}`)})).exitCode()}};Qm.paths=[["npm","tag","remove"]],Qm.usage=ye.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` - This command will remove a tag from a package from the npm registry. - `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});var Gge=Qm;var bm=class extends Be{constructor(){super(...arguments);this.scope=Y.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=Y.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),r;return this.scope&&this.publish?r=gr.getScopeRegistry(this.scope,{configuration:e,type:gr.RegistryType.PUBLISH_REGISTRY}):this.scope?r=gr.getScopeRegistry(this.scope,{configuration:e}):this.publish?r=gr.getPublishRegistry((await rf(e,this.context.cwd)).manifest,{configuration:e}):r=gr.getDefaultRegistry({configuration:e}),(await Fe.start({configuration:e,stdout:this.context.stdout},async n=>{var o,a;let s;try{s=await Lt.get("/-/whoami",{configuration:e,registry:r,authType:Lt.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?S.makeIdent(this.scope,""):void 0})}catch(l){if(((o=l.response)==null?void 0:o.statusCode)===401||((a=l.response)==null?void 0:a.statusCode)===403){n.reportError(z.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired");return}else throw l}n.reportInfo(z.UNNAMED,s.username)})).exitCode()}};bm.paths=[["npm","whoami"]],bm.usage=ye.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var jge=bm;var o_e={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:ge.STRING,default:null}},commands:[Rge,Fge,Lge,Mge,Oge,Hge,Kge,Gge,jge]},a_e=o_e;var NM={};it(NM,{default:()=>B_e,patchUtils:()=>SM});var SM={};it(SM,{applyPatchFile:()=>PQ,diffFolders:()=>DM,extractPackageToDisk:()=>PM,extractPatchFlags:()=>Xge,isParentRequired:()=>kM,loadPatchFiles:()=>km,makeDescriptor:()=>E_e,makeLocator:()=>xM,parseDescriptor:()=>Sm,parseLocator:()=>xm,parsePatchFile:()=>kQ});var vm=class extends Error{constructor(e,r){super(`Cannot apply hunk #${e+1}`);this.hunk=r}};var A_e=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function Nf(t){return v.relative(Se.root,v.resolve(Se.root,M.toPortablePath(t)))}function l_e(t){let e=t.trim().match(A_e);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var c_e=420,u_e=493,Lr;(function(i){i.Context="context",i.Insertion="insertion",i.Deletion="deletion"})(Lr||(Lr={}));var Yge=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),g_e=t=>({header:l_e(t),parts:[]}),f_e={["@"]:"header",["-"]:Lr.Deletion,["+"]:Lr.Insertion,[" "]:Lr.Context,["\\"]:"pragma",undefined:Lr.Context};function p_e(t){let e=[],r=Yge(),i="parsing header",n=null,s=null;function o(){n&&(s&&(n.parts.push(s),s=null),r.hunks.push(n),n=null)}function a(){o(),e.push(r),r=Yge()}for(let l=0;l0?"patch":"mode change",B=null;switch(E){case"rename":{if(!u||!g)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:i,fromPath:Nf(u),toPath:Nf(g)}),B=g}break;case"file deletion":{let b=n||p;if(!b)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(l),hash:f})}break;case"file creation":{let b=s||d;if(!b)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:i,hunk:m&&m[0]||null,path:Nf(b),mode:xQ(c),hash:h})}break;case"patch":case"mode change":B=d||s;break;default:de.assertNever(E);break}B&&o&&a&&o!==a&&e.push({type:"mode change",semverExclusivity:i,path:Nf(B),oldMode:xQ(o),newMode:xQ(a)}),B&&m&&m.length&&e.push({type:"patch",semverExclusivity:i,path:Nf(B),hunks:m,beforeHash:f,afterHash:h})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function xQ(t){let e=parseInt(t,8)&511;if(e!==c_e&&e!==u_e)throw new Error(`Unexpected file mode string: ${t}`);return e}function kQ(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),d_e(p_e(e))}function h_e(t){let e=0,r=0;for(let{type:i,lines:n}of t.parts)switch(i){case Lr.Context:r+=n.length,e+=n.length;break;case Lr.Deletion:e+=n.length;break;case Lr.Insertion:r+=n.length;break;default:de.assertNever(i);break}if(e!==t.header.original.length||r!==t.header.patched.length){let i=n=>n<0?n:`+${n}`;throw new Error(`hunk header integrity check failed (expected @@ ${i(t.header.original.length)} ${i(t.header.patched.length)} @@, got @@ ${i(e)} ${i(r)} @@)`)}}async function Lf(t,e,r){let i=await t.lstatPromise(e),n=await r();if(typeof n!="undefined"&&(e=n),t.lutimesPromise)await t.lutimesPromise(e,i.atime,i.mtime);else if(!i.isSymbolicLink())await t.utimesPromise(e,i.atime,i.mtime);else throw new Error("Cannot preserve the time values of a symlink")}async function PQ(t,{baseFs:e=new Wt,dryRun:r=!1,version:i=null}={}){for(let n of t)if(!(n.semverExclusivity!==null&&i!==null&&!qt.satisfiesWithPrereleases(i,n.semverExclusivity)))switch(n.type){case"file deletion":if(r){if(!e.existsSync(n.path))throw new Error(`Trying to delete a file that doesn't exist: ${n.path}`)}else await Lf(e,v.dirname(n.path),async()=>{await e.unlinkPromise(n.path)});break;case"rename":if(r){if(!e.existsSync(n.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${n.fromPath}`)}else await Lf(e,v.dirname(n.fromPath),async()=>{await Lf(e,v.dirname(n.toPath),async()=>{await Lf(e,n.fromPath,async()=>(await e.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(e.existsSync(n.path))throw new Error(`Trying to create a file that already exists: ${n.path}`)}else{let s=n.hunk?n.hunk.parts[0].lines.join(` -`)+(n.hunk.parts[0].noNewlineAtEndOfFile?"":` -`):"";await e.mkdirpPromise(v.dirname(n.path),{chmod:493,utimes:[mr.SAFE_TIME,mr.SAFE_TIME]}),await e.writeFilePromise(n.path,s,{mode:n.mode}),await e.utimesPromise(n.path,mr.SAFE_TIME,mr.SAFE_TIME)}break;case"patch":await Lf(e,n.path,async()=>{await C_e(n,{baseFs:e,dryRun:r})});break;case"mode change":{let o=(await e.statPromise(n.path)).mode;if(qge(n.newMode)!==qge(o))continue;await Lf(e,n.path,async()=>{await e.chmodPromise(n.path,n.newMode)})}break;default:de.assertNever(n);break}}function qge(t){return(t&64)>0}function Jge(t){return t.replace(/\s+$/,"")}function m_e(t,e){return Jge(t)===Jge(e)}async function C_e({hunks:t,path:e},{baseFs:r,dryRun:i=!1}){let n=await r.statSync(e).mode,o=(await r.readFileSync(e,"utf8")).split(/\n/),a=[],l=0,c=0;for(let g of t){let f=Math.max(c,g.header.patched.start+l),h=Math.max(0,f-c),p=Math.max(0,o.length-f-g.header.original.length),d=Math.max(h,p),m=0,E=0,B=null;for(;m<=d;){if(m<=h&&(E=f-m,B=Wge(g,o,E),B!==null)){m=-m;break}if(m<=p&&(E=f+m,B=Wge(g,o,E),B!==null))break;m+=1}if(B===null)throw new vm(t.indexOf(g),g);a.push(B),l+=m,c=E+g.header.original.length}if(i)return;let u=0;for(let g of a)for(let f of g)switch(f.type){case"splice":{let h=f.index+u;o.splice(h,f.numToDelete,...f.linesToInsert),u+=f.linesToInsert.length-f.numToDelete}break;case"pop":o.pop();break;case"push":o.push(f.line);break;default:de.assertNever(f);break}await r.writeFilePromise(e,o.join(` -`),{mode:n})}function Wge(t,e,r){let i=[];for(let n of t.parts)switch(n.type){case Lr.Context:case Lr.Deletion:{for(let s of n.lines){let o=e[r];if(o==null||!m_e(o,s))return null;r+=1}n.type===Lr.Deletion&&(i.push({type:"splice",index:r-n.lines.length,numToDelete:n.lines.length,linesToInsert:[]}),n.noNewlineAtEndOfFile&&i.push({type:"push",line:""}))}break;case Lr.Insertion:i.push({type:"splice",index:r,numToDelete:0,linesToInsert:n.lines}),n.noNewlineAtEndOfFile&&i.push({type:"pop"});break;default:de.assertNever(n.type);break}return i}var I_e=/^builtin<([^>]+)>$/;function zge(t,e){let{source:r,selector:i,params:n}=S.parseRange(t);if(r===null)throw new Error("Patch locators must explicitly define their source");let s=i?i.split(/&/).map(c=>M.toPortablePath(c)):[],o=n&&typeof n.locator=="string"?S.parseLocator(n.locator):null,a=n&&typeof n.version=="string"?n.version:null,l=e(r);return{parentLocator:o,sourceItem:l,patchPaths:s,sourceVersion:a}}function Sm(t){let i=zge(t.range,S.parseDescriptor),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceDescriptor:e})}function xm(t){let i=zge(t.reference,S.parseLocator),{sourceItem:e}=i,r=qr(i,["sourceItem"]);return _(P({},r),{sourceLocator:e})}function Vge({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:i,patchHash:n},s){let o=t!==null?{locator:S.stringifyLocator(t)}:{},a=typeof i!="undefined"?{version:i}:{},l=typeof n!="undefined"?{hash:n}:{};return S.makeRange({protocol:"patch:",source:s(e),selector:r.join("&"),params:P(P(P({},a),l),o)})}function E_e(t,{parentLocator:e,sourceDescriptor:r,patchPaths:i}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,patchPaths:i},S.stringifyDescriptor))}function xM(t,{parentLocator:e,sourcePackage:r,patchPaths:i,patchHash:n}){return S.makeLocator(t,Vge({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:i,patchHash:n},S.stringifyLocator))}function _ge({onAbsolute:t,onRelative:e,onBuiltin:r},i){i.startsWith("~")&&(i=i.slice(1));let s=i.match(I_e);return s!==null?r(s[1]):v.isAbsolute(i)?t(i):e(i)}function Xge(t){let e=t.startsWith("~");return e&&(t=t.slice(1)),{optional:e}}function kM(t){return _ge({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},t)}async function km(t,e,r){let i=t!==null?await r.fetcher.fetch(t,r):null,n=i&&i.localPath?{packageFs:new Ft(Se.root),prefixPath:v.relative(Se.root,i.localPath)}:i;i&&i!==n&&i.releaseFs&&i.releaseFs();let s=await de.releaseAfterUseAsync(async()=>await Promise.all(e.map(async o=>{let a=Xge(o),l=await _ge({onAbsolute:async()=>await T.readFilePromise(o,"utf8"),onRelative:async()=>{if(n===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await n.packageFs.readFilePromise(v.join(n.prefixPath,o),"utf8")},onBuiltin:async c=>await r.project.configuration.firstHook(u=>u.getBuiltinPatch,r.project,c)},o);return _(P({},a),{source:l})})));for(let o of s)typeof o.source=="string"&&(o.source=o.source.replace(/\r\n?/g,` -`));return s}async function PM(t,{cache:e,project:r}){let i=r.storedPackages.get(t.locatorHash);if(typeof i=="undefined")throw new Error("Assertion failed: Expected the package to be registered");let n=r.storedChecksums,s=new ei,o=r.configuration.makeFetcher(),a=await o.fetch(t,{cache:e,project:r,fetcher:o,checksums:n,report:s}),l=await T.mktempPromise(),c=v.join(l,"source"),u=v.join(l,"user"),g=v.join(l,".yarn-patch.json");return await Promise.all([T.copyPromise(c,a.prefixPath,{baseFs:a.packageFs}),T.copyPromise(u,a.prefixPath,{baseFs:a.packageFs}),T.writeJsonPromise(g,{locator:S.stringifyLocator(t),version:i.version})]),T.detachTemp(l),u}async function DM(t,e){let r=M.fromPortablePath(t).replace(/\\/g,"/"),i=M.fromPortablePath(e).replace(/\\/g,"/"),{stdout:n,stderr:s}=await hr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--text",r,i],{cwd:M.toPortablePath(process.cwd()),env:_(P({},process.env),{GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""})});if(s.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. -The following error was reported by 'git': -${s}`);let o=r.startsWith("/")?a=>a.slice(1):a=>a;return n.replace(new RegExp(`(a|b)(${de.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${de.escapeRegExp(`/${o(i)}/`)}`,"g"),"$1/").replace(new RegExp(de.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(de.escapeRegExp(`${i}/`),"g"),"")}function Zge(t,{configuration:e,report:r}){for(let i of t.parts)for(let n of i.lines)switch(i.type){case Lr.Context:r.reportInfo(null,` ${ue.pretty(e,n,"grey")}`);break;case Lr.Deletion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`- ${ue.pretty(e,n,ue.Type.REMOVED)}`);break;case Lr.Insertion:r.reportError(z.FROZEN_LOCKFILE_EXCEPTION,`+ ${ue.pretty(e,n,ue.Type.ADDED)}`);break;default:de.assertNever(i.type)}}var RM=class{supports(e,r){return!!e.reference.startsWith("patch:")}getLocalPath(e,r){return null}async fetch(e,r){let i=r.checksums.get(e.locatorHash)||null,[n,s,o]=await r.cache.fetchPackageFromCache(e,i,P({onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${S.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),skipIntegrityCheck:r.skipIntegrityCheck},r.cacheOptions));return{packageFs:n,releaseFs:s,prefixPath:S.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:o}}async patchPackage(e,r){let{parentLocator:i,sourceLocator:n,sourceVersion:s,patchPaths:o}=xm(e),a=await km(i,o,r),l=await T.mktempPromise(),c=v.join(l,"current.zip"),u=await r.fetcher.fetch(n,r),g=S.getIdentVendorPath(e),f=await $i(),h=new Jr(c,{libzip:f,create:!0,level:r.project.configuration.get("compressionLevel")});await de.releaseAfterUseAsync(async()=>{await h.copyPromise(g,u.prefixPath,{baseFs:u.packageFs,stableSort:!0})},u.releaseFs),h.saveAndClose();for(let{source:p,optional:d}of a){if(p===null)continue;let m=new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")}),E=new Ft(v.resolve(Se.root,g),{baseFs:m});try{await PQ(kQ(p),{baseFs:E,version:s})}catch(B){if(!(B instanceof vm))throw B;let b=r.project.configuration.get("enableInlineHunks"),R=!b&&!d?" (set enableInlineHunks for details)":"",H=`${S.prettyLocator(r.project.configuration,e)}: ${B.message}${R}`,L=K=>{!b||Zge(B.hunk,{configuration:r.project.configuration,report:K})};if(m.discardAndClose(),d){r.report.reportWarningOnce(z.PATCH_HUNK_FAILED,H,{reportExtra:L});continue}else throw new nt(z.PATCH_HUNK_FAILED,H,L)}m.saveAndClose()}return new Jr(c,{libzip:f,level:r.project.configuration.get("compressionLevel")})}};var y_e=3,FM=class{supportsDescriptor(e,r){return!!e.range.startsWith("patch:")}supportsLocator(e,r){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,i){let{patchPaths:n}=Sm(e);return n.every(s=>!kM(s))?e:S.bindDescriptor(e,{locator:S.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:i}=Sm(e);return[i]}async getCandidates(e,r,i){if(!i.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:n,sourceDescriptor:s,patchPaths:o}=Sm(e),a=await km(n,o,i.fetchOptions),l=r.get(s.descriptorHash);if(typeof l=="undefined")throw new Error("Assertion failed: The dependency should have been resolved");let c=mn.makeHash(`${y_e}`,...a.map(u=>JSON.stringify(u))).slice(0,6);return[xM(e,{parentLocator:n,sourcePackage:l,patchPaths:o,patchHash:c})]}async getSatisfying(e,r,i){return null}async resolve(e,r){let{sourceLocator:i}=xm(e),n=await r.resolver.resolve(i,r);return P(P({},n),e)}};var Pm=class extends Be{constructor(){super(...arguments);this.save=Y.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let n=v.resolve(this.context.cwd,M.toPortablePath(this.patchFolder)),s=v.join(n,"../source"),o=v.join(n,"../.yarn-patch.json");if(!T.existsSync(s))throw new me("The argument folder didn't get created by 'yarn patch'");let a=await DM(s,n),l=await T.readJsonPromise(o),c=S.parseLocator(l.locator,!0);if(!r.storedPackages.has(c.locatorHash))throw new me("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(a);return}let u=e.get("patchFolder"),g=v.join(u,S.slugifyLocator(c));await T.mkdirPromise(u,{recursive:!0}),await T.writeFilePromise(g,a);let f=v.relative(r.cwd,g);r.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:S.stringifyIdent(c),description:l.version}},reference:`patch:${S.stringifyLocator(c)}#${f}`}),await r.persist()}};Pm.paths=[["patch-commit"]],Pm.usage=ye.Usage({description:"generate a patch out of a directory",details:"\n This will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n Only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});var $ge=Pm;var Dm=class extends Be{constructor(){super(...arguments);this.json=Y.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=Y.String()}async execute(){let e=await fe.find(this.context.cwd,this.context.plugins),{project:r,workspace:i}=await Ke.find(e,this.context.cwd),n=await Qt.find(e);if(!i)throw new rt(r.cwd,this.context.cwd);await r.restoreInstallState();let s=S.parseLocator(this.package);if(s.reference==="unknown"){let o=de.mapAndFilter([...r.storedPackages.values()],a=>a.identHash!==s.identHash?de.mapAndFilter.skip:S.isVirtualLocator(a)?de.mapAndFilter.skip:a);if(o.length===0)throw new me("No package found in the project for the given locator");if(o.length>1)throw new me(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why \` to get more information as to who depends on them): -${o.map(a=>` -- ${S.prettyLocator(e,a)}`).join("")}`);s=o[0]}if(!r.storedPackages.has(s.locatorHash))throw new me("No package found in the project for the given locator");await Fe.start({configuration:e,json:this.json,stdout:this.context.stdout},async o=>{let a=await PM(s,{cache:n,project:r});o.reportJson({locator:S.stringifyLocator(s),path:M.fromPortablePath(a)}),o.reportInfo(z.UNNAMED,`Package ${S.prettyLocator(e,s)} got extracted with success!`),o.reportInfo(z.UNNAMED,`You can now edit the following folder: ${ue.pretty(e,M.fromPortablePath(a),"magenta")}`),o.reportInfo(z.UNNAMED,`Once you are done run ${ue.pretty(e,`yarn patch-commit ${process.platform==="win32"?'"':""}${M.fromPortablePath(a)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Dm.paths=[["patch"]],Dm.usage=ye.Usage({description:"prepare a package for patching",details:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '});var efe=Dm;var w_e={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:ge.BOOLEAN,default:!1},patchFolder:{description:"Folder where the patch files must be written",type:ge.ABSOLUTE_PATH,default:"./.yarn/patches"}},commands:[$ge,efe],fetchers:[RM],resolvers:[FM]},B_e=w_e;var TM={};it(TM,{default:()=>S_e});var tfe=ie(Wp()),LM=class{supportsPackage(e,r){return r.project.configuration.get("nodeLinker")==="pnpm"}async findPackageLocation(e,r){return nfe(e,{project:r.project})}async findPackageLocator(e,r){let i=ife(),n=r.project.installersCustomData.get(i);if(!n)throw new me(`The project in ${ue.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ue.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let s=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(s){let l=n.locatorByPath.get(s[1]);if(l)return l}let o=e,a=e;do{a=o,o=v.dirname(a);let l=n.locatorByPath.get(a);if(l)return l}while(o!==a);return null}makeInstaller(e){return new rfe(e)}},rfe=class{constructor(e){this.opts=e;this.asyncActions=new afe;this.packageLocations=new Map;this.customData={locatorByPath:new Map}}getCustomDataKey(){return ife()}attachCustomData(e){this.customData=e}async installPackage(e,r,i){switch(e.linkType){case gt.SOFT:return this.installPackageSoft(e,r,i);case gt.HARD:return this.installPackageHard(e,r,i)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,i){let n=v.resolve(r.packageFs.getRealPath(),r.prefixPath);return this.packageLocations.set(e.locatorHash,n),{packageLocation:n,buildDirective:null}}async installPackageHard(e,r,i){var u;let n=nfe(e,{project:this.opts.project});this.customData.locatorByPath.set(n,S.stringifyLocator(e)),this.packageLocations.set(e.locatorHash,n),i.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await T.mkdirPromise(n,{recursive:!0}),await T.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1})}));let o=S.isVirtualLocator(e)?S.devirtualizeLocator(e):e,a={manifest:(u=await Ze.tryFind(r.prefixPath,{baseFs:r.packageFs}))!=null?u:new Ze,misc:{hasBindingGyp:Ws.hasBindingGyp(r)}},l=this.opts.project.getDependencyMeta(o,e.version),c=Ws.extractBuildScripts(e,a,l,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:c}}async attachInternalDependencies(e,r){this.opts.project.configuration.get("nodeLinker")==="pnpm"&&(!ofe(e,{project:this.opts.project})||this.asyncActions.reduce(e.locatorHash,async i=>{await i;let n=this.packageLocations.get(e.locatorHash);if(typeof n=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(e)})`);let s=v.join(n,wt.nodeModules);r.length>0&&await T.mkdirpPromise(s);let o=await Q_e(s),a=[];for(let[l,c]of r){let u=c;ofe(c,{project:this.opts.project})||(this.opts.report.reportWarning(z.UNNAMED,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),u=S.devirtualizeLocator(c));let g=this.packageLocations.get(u.locatorHash);if(typeof g=="undefined")throw new Error(`Assertion failed: Expected the package to have been registered (${S.stringifyLocator(c)})`);let f=S.stringifyIdent(l),h=v.join(s,f),p=v.relative(v.dirname(h),g),d=o.get(f);o.delete(f),a.push(Promise.resolve().then(async()=>{if(d){if(d.isSymbolicLink()&&await T.readlinkPromise(h)===p)return;await T.removePromise(h)}await T.mkdirpPromise(v.dirname(h)),process.platform=="win32"?await T.symlinkPromise(g,h,"junction"):await T.symlinkPromise(p,h)}))}for(let l of o.keys())a.push(T.removePromise(v.join(s,l)));await Promise.all(a)}))}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=sfe(this.opts.project),r=new Set;for(let s of this.packageLocations.values())r.add(v.basename(s));let i;try{i=await T.readdirPromise(e)}catch{i=[]}let n=[];for(let s of i)r.has(s)||n.push(T.removePromise(v.join(e,s)));await Promise.all(n),await this.asyncActions.wait()}};function ife(){return JSON.stringify({name:"PnpmInstaller",version:1})}function sfe(t){return v.join(t.cwd,wt.nodeModules,".store")}function nfe(t,{project:e}){let r=S.slugifyLocator(t);return v.join(sfe(e),r)}function ofe(t,{project:e}){return!S.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Q_e(t){let e=new Map,r=[];try{r=await T.readdirPromise(t,{withFileTypes:!0})}catch(i){if(i.code!=="ENOENT")throw i}try{for(let i of r)if(!i.name.startsWith("."))if(i.name.startsWith("@"))for(let n of await T.readdirPromise(v.join(t,i.name),{withFileTypes:!0}))e.set(`${i.name}/${n.name}`,n);else e.set(i.name,i)}catch(i){if(i.code!=="ENOENT")throw i}return e}function b_e(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var afe=class{constructor(){this.deferred=new Map;this.promises=new Map;this.limit=(0,tfe.default)(10)}set(e,r){let i=this.deferred.get(e);typeof i=="undefined"&&this.deferred.set(e,i=b_e());let n=this.limit(()=>r());return this.promises.set(e,n),n.then(()=>{this.promises.get(e)===n&&i.resolve()},s=>{this.promises.get(e)===n&&i.reject(s)}),i.promise}reduce(e,r){var n;let i=(n=this.promises.get(e))!=null?n:Promise.resolve();this.set(e,()=>r(i))}async wait(){await Promise.all(this.promises.values())}};var v_e={linkers:[LM]},S_e=v_e;var F0=()=>({modules:new Map([["@yarnpkg/cli",iC],["@yarnpkg/core",Fd],["@yarnpkg/fslib",ch],["@yarnpkg/libzip",Fp],["@yarnpkg/parsers",Hp],["@yarnpkg/shell",jp],["clipanion",F$(vh)],["semver",x_e],["typanion",lu],["yup",k_e],["@yarnpkg/plugin-essentials",hL],["@yarnpkg/plugin-compat",mL],["@yarnpkg/plugin-dlx",IL],["@yarnpkg/plugin-file",xL],["@yarnpkg/plugin-git",fL],["@yarnpkg/plugin-github",PL],["@yarnpkg/plugin-http",FL],["@yarnpkg/plugin-init",ML],["@yarnpkg/plugin-link",GL],["@yarnpkg/plugin-nm",mT],["@yarnpkg/plugin-npm",yM],["@yarnpkg/plugin-npm-cli",vM],["@yarnpkg/plugin-pack",CM],["@yarnpkg/plugin-patch",NM],["@yarnpkg/plugin-pnp",oT],["@yarnpkg/plugin-pnpm",TM]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm"])});i0({binaryVersion:Zr||"",pluginConfiguration:F0()});})(); -/*! - * buildToken - * Builds OAuth token prefix (helper function) - * - * @name buildToken - * @function - * @param {GitUrl} obj The parsed Git url object. - * @return {String} token prefix - */ -/*! - * fill-range - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ diff --git a/.yarn/releases/yarn-3.3.1.cjs b/.yarn/releases/yarn-3.3.1.cjs new file mode 100644 index 0000000000..53a282e439 --- /dev/null +++ b/.yarn/releases/yarn-3.3.1.cjs @@ -0,0 +1,823 @@ +#!/usr/bin/env node +/* eslint-disable */ +//prettier-ignore +(()=>{var dfe=Object.create;var jS=Object.defineProperty;var Cfe=Object.getOwnPropertyDescriptor;var mfe=Object.getOwnPropertyNames;var Efe=Object.getPrototypeOf,Ife=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var y=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ht=(r,e)=>{for(var t in e)jS(r,t,{get:e[t],enumerable:!0})},yfe=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of mfe(e))!Ife.call(r,n)&&n!==t&&jS(r,n,{get:()=>e[n],enumerable:!(i=Cfe(e,n))||i.enumerable});return r};var ne=(r,e,t)=>(t=r!=null?dfe(Efe(r)):{},yfe(e||!r||!r.__esModule?jS(t,"default",{value:r,enumerable:!0}):t,r));var aK=y((uZe,oK)=>{oK.exports=sK;sK.sync=Gfe;var iK=J("fs");function Hfe(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{uK.exports=lK;lK.sync=Yfe;var AK=J("fs");function lK(r,e,t){AK.stat(r,function(i,n){t(i,i?!1:cK(n,e))})}function Yfe(r,e){return cK(AK.statSync(r),e)}function cK(r,e){return r.isFile()&&jfe(r,e)}function jfe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var hK=y((hZe,fK)=>{var fZe=J("fs"),OI;process.platform==="win32"||global.TESTING_WINDOWS?OI=aK():OI=gK();fK.exports=av;av.sync=qfe;function av(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){av(r,e||{},function(s,o){s?n(s):i(o)})})}OI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function qfe(r,e){try{return OI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var yK=y((pZe,IK)=>{var _g=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",pK=J("path"),Jfe=_g?";":":",dK=hK(),CK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),mK=(r,e)=>{let t=e.colon||Jfe,i=r.match(/\//)||_g&&r.match(/\\/)?[""]:[..._g?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=_g?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=_g?n.split(t):[""];return _g&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},EK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=mK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(CK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=pK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];dK(c+p,{pathExt:s},(C,w)=>{if(!C&&w)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},Wfe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=mK(r,e),s=[];for(let o=0;o{"use strict";var wK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};Av.exports=wK;Av.exports.default=wK});var vK=y((CZe,SK)=>{"use strict";var bK=J("path"),zfe=yK(),Vfe=BK();function QK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=zfe.sync(r.command,{path:t[Vfe({env:t})],pathExt:e?bK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=bK.resolve(n?r.options.cwd:"",o)),o}function Xfe(r){return QK(r)||QK(r,!0)}SK.exports=Xfe});var xK=y((mZe,cv)=>{"use strict";var lv=/([()\][%!^"`<>&|;, *?])/g;function _fe(r){return r=r.replace(lv,"^$1"),r}function Zfe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(lv,"^$1"),e&&(r=r.replace(lv,"^$1")),r}cv.exports.command=_fe;cv.exports.argument=Zfe});var DK=y((EZe,PK)=>{"use strict";PK.exports=/^#!(.*)/});var RK=y((IZe,kK)=>{"use strict";var $fe=DK();kK.exports=(r="")=>{let e=r.match($fe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var NK=y((yZe,FK)=>{"use strict";var uv=J("fs"),ehe=RK();function the(r){let t=Buffer.alloc(150),i;try{i=uv.openSync(r,"r"),uv.readSync(i,t,0,150,0),uv.closeSync(i)}catch{}return ehe(t.toString())}FK.exports=the});var MK=y((wZe,OK)=>{"use strict";var rhe=J("path"),TK=vK(),LK=xK(),ihe=NK(),nhe=process.platform==="win32",she=/\.(?:com|exe)$/i,ohe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ahe(r){r.file=TK(r);let e=r.file&&ihe(r.file);return e?(r.args.unshift(r.file),r.command=e,TK(r)):r.file}function Ahe(r){if(!nhe)return r;let e=ahe(r),t=!she.test(e);if(r.options.forceShell||t){let i=ohe.test(e);r.command=rhe.normalize(r.command),r.command=LK.command(r.command),r.args=r.args.map(s=>LK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function lhe(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:Ahe(i)}OK.exports=lhe});var HK=y((BZe,KK)=>{"use strict";var gv=process.platform==="win32";function fv(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function che(r,e){if(!gv)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=UK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function UK(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawn"):null}function uhe(r,e){return gv&&r===1&&!e.file?fv(e.original,"spawnSync"):null}KK.exports={hookChildProcess:che,verifyENOENT:UK,verifyENOENTSync:uhe,notFoundError:fv}});var dv=y((bZe,Zg)=>{"use strict";var GK=J("child_process"),hv=MK(),pv=HK();function YK(r,e,t){let i=hv(r,e,t),n=GK.spawn(i.command,i.args,i.options);return pv.hookChildProcess(n,i),n}function ghe(r,e,t){let i=hv(r,e,t),n=GK.spawnSync(i.command,i.args,i.options);return n.error=n.error||pv.verifyENOENTSync(n.status,i),n}Zg.exports=YK;Zg.exports.spawn=YK;Zg.exports.sync=ghe;Zg.exports._parse=hv;Zg.exports._enoent=pv});var qK=y((QZe,jK)=>{"use strict";function fhe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function uc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,uc)}fhe(uc,Error);uc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",re=de(">>",!1),me=">&",tt=de(">&",!1),Rt=">",It=de(">",!1),Ur="<<<",oi=de("<<<",!1),pi="<&",pr=de("<&",!1),di="<",ai=de("<",!1),Os=function(m){return{type:"argument",segments:[].concat(...m)}},dr=function(m){return m},Bi="$'",_n=de("$'",!1),pa="'",EA=de("'",!1),kg=function(m){return[{type:"text",text:m}]},Zn='""',IA=de('""',!1),da=function(){return{type:"text",text:""}},Jp='"',yA=de('"',!1),wA=function(m){return m},Br=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},Vl=function(m){return{type:"shell",shell:m,quoted:!0}},Rg=function(m){return{type:"variable",...m,quoted:!0}},Eo=function(m){return{type:"text",text:m}},Fg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},Wp=function(m){return{type:"shell",shell:m,quoted:!1}},zp=function(m){return{type:"variable",...m,quoted:!1}},Pr=function(m){return{type:"glob",pattern:m}},oe=/^[^']/,Io=Ye(["'"],!0,!1),kn=function(m){return m.join("")},Ng=/^[^$"]/,bt=Ye(["$",'"'],!0,!1),Xl=`\\ +`,Rn=de(`\\ +`,!1),$n=function(){return""},es="\\",ut=de("\\",!1),yo=/^[\\$"`]/,at=Ye(["\\","$",'"',"`"],!1,!1),ln=function(m){return m},S="\\a",Lt=de("\\a",!1),Tg=function(){return"a"},_l="\\b",Vp=de("\\b",!1),Xp=function(){return"\b"},_p=/^[Ee]/,Zp=Ye(["E","e"],!1,!1),$p=function(){return"\x1B"},G="\\f",yt=de("\\f",!1),BA=function(){return"\f"},Wi="\\n",Zl=de("\\n",!1),We=function(){return` +`},Ca="\\r",Lg=de("\\r",!1),uI=function(){return"\r"},ed="\\t",gI=de("\\t",!1),ar=function(){return" "},Fn="\\v",$l=de("\\v",!1),td=function(){return"\v"},Ms=/^[\\'"?]/,ma=Ye(["\\","'",'"',"?"],!1,!1),cn=function(m){return String.fromCharCode(parseInt(m,16))},ke="\\x",Og=de("\\x",!1),ec="\\u",Us=de("\\u",!1),tc="\\U",bA=de("\\U",!1),Mg=function(m){return String.fromCodePoint(parseInt(m,16))},Ug=/^[0-7]/,Ea=Ye([["0","7"]],!1,!1),Ia=/^[0-9a-fA-f]/,$e=Ye([["0","9"],["a","f"],["A","f"]],!1,!1),wo=rt(),QA="-",rc=de("-",!1),Ks="+",ic=de("+",!1),fI=".",rd=de(".",!1),Kg=function(m,Q,F){return{type:"number",value:(m==="-"?-1:1)*parseFloat(Q.join("")+"."+F.join(""))}},id=function(m,Q){return{type:"number",value:(m==="-"?-1:1)*parseInt(Q.join(""))}},hI=function(m){return{type:"variable",...m}},nc=function(m){return{type:"variable",name:m}},pI=function(m){return m},Hg="*",SA=de("*",!1),Nr="/",dI=de("/",!1),Hs=function(m,Q,F){return{type:Q==="*"?"multiplication":"division",right:F}},Gs=function(m,Q){return Q.reduce((F,K)=>({left:F,...K}),m)},Gg=function(m,Q,F){return{type:Q==="+"?"addition":"subtraction",right:F}},vA="$((",R=de("$((",!1),q="))",pe=de("))",!1),Ne=function(m){return m},xe="$(",qe=de("$(",!1),dt=function(m){return m},Ft="${",Nn=de("${",!1),vS=":-",AU=de(":-",!1),lU=function(m,Q){return{name:m,defaultValue:Q}},xS=":-}",cU=de(":-}",!1),uU=function(m){return{name:m,defaultValue:[]}},PS=":+",gU=de(":+",!1),fU=function(m,Q){return{name:m,alternativeValue:Q}},DS=":+}",hU=de(":+}",!1),pU=function(m){return{name:m,alternativeValue:[]}},kS=function(m){return{name:m}},dU="$",CU=de("$",!1),mU=function(m){return e.isGlobPattern(m)},EU=function(m){return m},RS=/^[a-zA-Z0-9_]/,FS=Ye([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),NS=function(){return O()},TS=/^[$@*?#a-zA-Z0-9_\-]/,LS=Ye(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),IU=/^[(){}<>$|&; \t"']/,Yg=Ye(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),OS=/^[<>&; \t"']/,MS=Ye(["<",">","&",";"," "," ",'"',"'"],!1,!1),CI=/^[ \t]/,mI=Ye([" "," "],!1,!1),b=0,Fe=0,xA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function O(){return r.substring(Fe,b)}function X(){return Et(Fe,b)}function te(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Fi([At(m)],r.substring(Fe,b),Q)}function ye(m,Q){throw Q=Q!==void 0?Q:Et(Fe,b),Tn(m,Q)}function de(m,Q){return{type:"literal",text:m,ignoreCase:Q}}function Ye(m,Q,F){return{type:"class",parts:m,inverted:Q,ignoreCase:F}}function rt(){return{type:"any"}}function wt(){return{type:"end"}}function At(m){return{type:"other",description:m}}function et(m){var Q=xA[m],F;if(Q)return Q;for(F=m-1;!xA[F];)F--;for(Q=xA[F],Q={line:Q.line,column:Q.column};Fd&&(d=b,E=[]),E.push(m))}function Tn(m,Q){return new uc(m,null,null,Q)}function Fi(m,Q,F){return new uc(uc.buildMessage(m,Q),m,Q,F)}function PA(){var m,Q;return m=b,Q=Kr(),Q===t&&(Q=null),Q!==t&&(Fe=m,Q=s(Q)),m=Q,m}function Kr(){var m,Q,F,K,ce;if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Fe=m,Q=o(Q,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;if(m===t)if(m=b,Q=Hr(),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();F!==t?(K=ya(),K===t&&(K=null),K!==t?(Fe=m,Q=a(Q,K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function ts(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=Kr(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=l(F),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ya(){var m;return r.charCodeAt(b)===59?(m=c,b++):(m=t,I===0&&Be(u)),m===t&&(r.charCodeAt(b)===38?(m=g,b++):(m=t,I===0&&Be(f))),m}function Hr(){var m,Q,F;return m=b,Q=yU(),Q!==t?(F=$ge(),F===t&&(F=null),F!==t?(Fe=m,Q=h(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function $ge(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=efe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Hr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=p(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function efe(){var m;return r.substr(b,2)===C?(m=C,b+=2):(m=t,I===0&&Be(w)),m===t&&(r.substr(b,2)===B?(m=B,b+=2):(m=t,I===0&&Be(v))),m}function yU(){var m,Q,F;return m=b,Q=ife(),Q!==t?(F=tfe(),F===t&&(F=null),F!==t?(Fe=m,Q=D(Q,F),m=Q):(b=m,m=t)):(b=m,m=t),m}function tfe(){var m,Q,F,K,ce,Qe,ft;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(F=rfe(),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=yU(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=T(F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;return m}function rfe(){var m;return r.substr(b,2)===H?(m=H,b+=2):(m=t,I===0&&Be(j)),m===t&&(r.charCodeAt(b)===124?(m=$,b++):(m=t,I===0&&Be(V))),m}function EI(){var m,Q,F,K,ce,Qe;if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t)if(K=bU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(Fe=m,Q=A(Q,K),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;else b=m,m=t;if(m===t)if(m=b,Q=FU(),Q!==t)if(r.charCodeAt(b)===61?(F=W,b++):(F=t,I===0&&Be(Z)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=ae(Q),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t;return m}function ife(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===40?(F=ge,b++):(F=t,I===0&&Be(_)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===41?(ft=L,b++):(ft=t,I===0&&Be(N)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=ue(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t)if(r.charCodeAt(b)===123?(F=we,b++):(F=t,I===0&&Be(Te)),F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t)if(ce=Kr(),ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();if(Qe!==t)if(r.charCodeAt(b)===125?(ft=Pe,b++):(ft=t,I===0&&Be(Le)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=nd();Ci!==t;)Vr.push(Ci),Ci=nd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Fe=m,Q=se(ce,Vr),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t}else b=m,m=t;else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){for(F=[],K=EI();K!==t;)F.push(K),K=EI();if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();if(K!==t){if(ce=[],Qe=BU(),Qe!==t)for(;Qe!==t;)ce.push(Qe),Qe=BU();else ce=t;if(ce!==t){for(Qe=[],ft=Me();ft!==t;)Qe.push(ft),ft=Me();Qe!==t?(Fe=m,Q=Ae(F,ce),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}else b=m,m=t}else b=m,m=t;if(m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=EI(),K!==t)for(;K!==t;)F.push(K),K=EI();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=be(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t}}}return m}function wU(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t){if(F=[],K=II(),K!==t)for(;K!==t;)F.push(K),K=II();else F=t;if(F!==t){for(K=[],ce=Me();ce!==t;)K.push(ce),ce=Me();K!==t?(Fe=m,Q=fe(F),m=Q):(b=m,m=t)}else b=m,m=t}else b=m,m=t;return m}function BU(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();if(Q!==t?(F=nd(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t){for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();Q!==t?(F=II(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t)}return m}function nd(){var m,Q,F,K,ce;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(Ge.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ie)),F===t&&(F=null),F!==t?(K=nfe(),K!==t?(ce=II(),ce!==t?(Fe=m,Q=Y(F,K,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function nfe(){var m;return r.substr(b,2)===he?(m=he,b+=2):(m=t,I===0&&Be(re)),m===t&&(r.substr(b,2)===me?(m=me,b+=2):(m=t,I===0&&Be(tt)),m===t&&(r.charCodeAt(b)===62?(m=Rt,b++):(m=t,I===0&&Be(It)),m===t&&(r.substr(b,3)===Ur?(m=Ur,b+=3):(m=t,I===0&&Be(oi)),m===t&&(r.substr(b,2)===pi?(m=pi,b+=2):(m=t,I===0&&Be(pr)),m===t&&(r.charCodeAt(b)===60?(m=di,b++):(m=t,I===0&&Be(ai))))))),m}function II(){var m,Q,F;for(m=b,Q=[],F=Me();F!==t;)Q.push(F),F=Me();return Q!==t?(F=bU(),F!==t?(Fe=m,Q=le(F),m=Q):(b=m,m=t)):(b=m,m=t),m}function bU(){var m,Q,F;if(m=b,Q=[],F=QU(),F!==t)for(;F!==t;)Q.push(F),F=QU();else Q=t;return Q!==t&&(Fe=m,Q=Os(Q)),m=Q,m}function QU(){var m,Q;return m=b,Q=sfe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=ofe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q,m===t&&(m=b,Q=Afe(),Q!==t&&(Fe=m,Q=dr(Q)),m=Q))),m}function sfe(){var m,Q,F,K;return m=b,r.substr(b,2)===Bi?(Q=Bi,b+=2):(Q=t,I===0&&Be(_n)),Q!==t?(F=ufe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function ofe(){var m,Q,F,K;return m=b,r.charCodeAt(b)===39?(Q=pa,b++):(Q=t,I===0&&Be(EA)),Q!==t?(F=lfe(),F!==t?(r.charCodeAt(b)===39?(K=pa,b++):(K=t,I===0&&Be(EA)),K!==t?(Fe=m,Q=kg(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function afe(){var m,Q,F,K;if(m=b,r.substr(b,2)===Zn?(Q=Zn,b+=2):(Q=t,I===0&&Be(IA)),Q!==t&&(Fe=m,Q=da()),m=Q,m===t)if(m=b,r.charCodeAt(b)===34?(Q=Jp,b++):(Q=t,I===0&&Be(yA)),Q!==t){for(F=[],K=SU();K!==t;)F.push(K),K=SU();F!==t?(r.charCodeAt(b)===34?(K=Jp,b++):(K=t,I===0&&Be(yA)),K!==t?(Fe=m,Q=wA(F),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;return m}function Afe(){var m,Q,F;if(m=b,Q=[],F=vU(),F!==t)for(;F!==t;)Q.push(F),F=vU();else Q=t;return Q!==t&&(Fe=m,Q=wA(Q)),m=Q,m}function SU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Br(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Vl(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=Rg(Q)),m=Q,m===t&&(m=b,Q=cfe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q))),m}function vU(){var m,Q;return m=b,Q=kU(),Q!==t&&(Fe=m,Q=Fg(Q)),m=Q,m===t&&(m=b,Q=RU(),Q!==t&&(Fe=m,Q=Wp(Q)),m=Q,m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=zp(Q)),m=Q,m===t&&(m=b,Q=hfe(),Q!==t&&(Fe=m,Q=Pr(Q)),m=Q,m===t&&(m=b,Q=ffe(),Q!==t&&(Fe=m,Q=Eo(Q)),m=Q)))),m}function lfe(){var m,Q,F;for(m=b,Q=[],oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));F!==t;)Q.push(F),oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function cfe(){var m,Q,F;if(m=b,Q=[],F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt))),F!==t)for(;F!==t;)Q.push(F),F=xU(),F===t&&(Ng.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(bt)));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function xU(){var m,Q,F;return m=b,r.substr(b,2)===Xl?(Q=Xl,b+=2):(Q=t,I===0&&Be(Rn)),Q!==t&&(Fe=m,Q=$n()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(yo.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(at)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t)),m}function ufe(){var m,Q,F;for(m=b,Q=[],F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));F!==t;)Q.push(F),F=PU(),F===t&&(oe.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Io)));return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function PU(){var m,Q,F;return m=b,r.substr(b,2)===S?(Q=S,b+=2):(Q=t,I===0&&Be(Lt)),Q!==t&&(Fe=m,Q=Tg()),m=Q,m===t&&(m=b,r.substr(b,2)===_l?(Q=_l,b+=2):(Q=t,I===0&&Be(Vp)),Q!==t&&(Fe=m,Q=Xp()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(_p.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(Zp)),F!==t?(Fe=m,Q=$p(),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===G?(Q=G,b+=2):(Q=t,I===0&&Be(yt)),Q!==t&&(Fe=m,Q=BA()),m=Q,m===t&&(m=b,r.substr(b,2)===Wi?(Q=Wi,b+=2):(Q=t,I===0&&Be(Zl)),Q!==t&&(Fe=m,Q=We()),m=Q,m===t&&(m=b,r.substr(b,2)===Ca?(Q=Ca,b+=2):(Q=t,I===0&&Be(Lg)),Q!==t&&(Fe=m,Q=uI()),m=Q,m===t&&(m=b,r.substr(b,2)===ed?(Q=ed,b+=2):(Q=t,I===0&&Be(gI)),Q!==t&&(Fe=m,Q=ar()),m=Q,m===t&&(m=b,r.substr(b,2)===Fn?(Q=Fn,b+=2):(Q=t,I===0&&Be($l)),Q!==t&&(Fe=m,Q=td()),m=Q,m===t&&(m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(Ms.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(ma)),F!==t?(Fe=m,Q=ln(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=gfe()))))))))),m}function gfe(){var m,Q,F,K,ce,Qe,ft,Bt,Vr,Ci,rs,YS;return m=b,r.charCodeAt(b)===92?(Q=es,b++):(Q=t,I===0&&Be(ut)),Q!==t?(F=US(),F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ke?(Q=ke,b+=2):(Q=t,I===0&&Be(Og)),Q!==t?(F=b,K=b,ce=US(),ce!==t?(Qe=Ln(),Qe!==t?(ce=[ce,Qe],K=ce):(b=K,K=t)):(b=K,K=t),K===t&&(K=US()),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===ec?(Q=ec,b+=2):(Q=t,I===0&&Be(Us)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Qe,ft,Bt],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=cn(F),m=Q):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===tc?(Q=tc,b+=2):(Q=t,I===0&&Be(bA)),Q!==t?(F=b,K=b,ce=Ln(),ce!==t?(Qe=Ln(),Qe!==t?(ft=Ln(),ft!==t?(Bt=Ln(),Bt!==t?(Vr=Ln(),Vr!==t?(Ci=Ln(),Ci!==t?(rs=Ln(),rs!==t?(YS=Ln(),YS!==t?(ce=[ce,Qe,ft,Bt,Vr,Ci,rs,YS],K=ce):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t)):(b=K,K=t),K!==t?F=r.substring(F,b):F=K,F!==t?(Fe=m,Q=Mg(F),m=Q):(b=m,m=t)):(b=m,m=t)))),m}function US(){var m;return Ug.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Ea)),m}function Ln(){var m;return Ia.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be($e)),m}function ffe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t)),F!==t)for(;F!==t;)Q.push(F),F=b,r.charCodeAt(b)===92?(K=es,b++):(K=t,I===0&&Be(ut)),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F===t&&(F=b,K=b,I++,ce=NU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t));else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function KS(){var m,Q,F,K,ce,Qe;if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;if(F!==t)if(r.charCodeAt(b)===46?(K=fI,b++):(K=t,I===0&&Be(rd)),K!==t){if(ce=[],Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie)),Qe!==t)for(;Qe!==t;)ce.push(Qe),Ge.test(r.charAt(b))?(Qe=r.charAt(b),b++):(Qe=t,I===0&&Be(ie));else ce=t;ce!==t?(Fe=m,Q=Kg(Q,F,ce),m=Q):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;if(m===t){if(m=b,r.charCodeAt(b)===45?(Q=QA,b++):(Q=t,I===0&&Be(rc)),Q===t&&(r.charCodeAt(b)===43?(Q=Ks,b++):(Q=t,I===0&&Be(ic))),Q===t&&(Q=null),Q!==t){if(F=[],Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie)),K!==t)for(;K!==t;)F.push(K),Ge.test(r.charAt(b))?(K=r.charAt(b),b++):(K=t,I===0&&Be(ie));else F=t;F!==t?(Fe=m,Q=id(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;if(m===t&&(m=b,Q=GS(),Q!==t&&(Fe=m,Q=hI(Q)),m=Q,m===t&&(m=b,Q=sc(),Q!==t&&(Fe=m,Q=nc(Q)),m=Q,m===t)))if(m=b,r.charCodeAt(b)===40?(Q=ge,b++):(Q=t,I===0&&Be(_)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.charCodeAt(b)===41?(Qe=L,b++):(Qe=t,I===0&&Be(N)),Qe!==t?(Fe=m,Q=pI(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t}return m}function HS(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=KS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===42?(Qe=Hg,b++):(Qe=t,I===0&&Be(SA)),Qe===t&&(r.charCodeAt(b)===47?(Qe=Nr,b++):(Qe=t,I===0&&Be(dI))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Fe=K,ce=Hs(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function DU(){var m,Q,F,K,ce,Qe,ft,Bt;if(m=b,Q=HS(),Q!==t){for(F=[],K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t;for(;K!==t;){for(F.push(K),K=b,ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();if(ce!==t)if(r.charCodeAt(b)===43?(Qe=Ks,b++):(Qe=t,I===0&&Be(ic)),Qe===t&&(r.charCodeAt(b)===45?(Qe=QA,b++):(Qe=t,I===0&&Be(rc))),Qe!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=HS(),Bt!==t?(Fe=K,ce=Gg(Q,Qe,Bt),K=ce):(b=K,K=t)):(b=K,K=t)}else b=K,K=t;else b=K,K=t}F!==t?(Fe=m,Q=Gs(Q,F),m=Q):(b=m,m=t)}else b=m,m=t;return m}function kU(){var m,Q,F,K,ce,Qe;if(m=b,r.substr(b,3)===vA?(Q=vA,b+=3):(Q=t,I===0&&Be(R)),Q!==t){for(F=[],K=Me();K!==t;)F.push(K),K=Me();if(F!==t)if(K=DU(),K!==t){for(ce=[],Qe=Me();Qe!==t;)ce.push(Qe),Qe=Me();ce!==t?(r.substr(b,2)===q?(Qe=q,b+=2):(Qe=t,I===0&&Be(pe)),Qe!==t?(Fe=m,Q=Ne(K),m=Q):(b=m,m=t)):(b=m,m=t)}else b=m,m=t;else b=m,m=t}else b=m,m=t;return m}function RU(){var m,Q,F,K;return m=b,r.substr(b,2)===xe?(Q=xe,b+=2):(Q=t,I===0&&Be(qe)),Q!==t?(F=Kr(),F!==t?(r.charCodeAt(b)===41?(K=L,b++):(K=t,I===0&&Be(N)),K!==t?(Fe=m,Q=dt(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m}function GS(){var m,Q,F,K,ce,Qe;return m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===vS?(K=vS,b+=2):(K=t,I===0&&Be(AU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=lU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===xS?(K=xS,b+=3):(K=t,I===0&&Be(cU)),K!==t?(Fe=m,Q=uU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,2)===PS?(K=PS,b+=2):(K=t,I===0&&Be(gU)),K!==t?(ce=wU(),ce!==t?(r.charCodeAt(b)===125?(Qe=Pe,b++):(Qe=t,I===0&&Be(Le)),Qe!==t?(Fe=m,Q=fU(F,ce),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.substr(b,3)===DS?(K=DS,b+=3):(K=t,I===0&&Be(hU)),K!==t?(Fe=m,Q=pU(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.substr(b,2)===Ft?(Q=Ft,b+=2):(Q=t,I===0&&Be(Nn)),Q!==t?(F=sc(),F!==t?(r.charCodeAt(b)===125?(K=Pe,b++):(K=t,I===0&&Be(Le)),K!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)):(b=m,m=t),m===t&&(m=b,r.charCodeAt(b)===36?(Q=dU,b++):(Q=t,I===0&&Be(CU)),Q!==t?(F=sc(),F!==t?(Fe=m,Q=kS(F),m=Q):(b=m,m=t)):(b=m,m=t)))))),m}function hfe(){var m,Q,F;return m=b,Q=pfe(),Q!==t?(Fe=b,F=mU(Q),F?F=void 0:F=t,F!==t?(Fe=m,Q=EU(Q),m=Q):(b=m,m=t)):(b=m,m=t),m}function pfe(){var m,Q,F,K,ce;if(m=b,Q=[],F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t),F!==t)for(;F!==t;)Q.push(F),F=b,K=b,I++,ce=TU(),I--,ce===t?K=void 0:(b=K,K=t),K!==t?(r.length>b?(ce=r.charAt(b),b++):(ce=t,I===0&&Be(wo)),ce!==t?(Fe=F,K=ln(ce),F=K):(b=F,F=t)):(b=F,F=t);else Q=t;return Q!==t&&(Fe=m,Q=kn(Q)),m=Q,m}function FU(){var m,Q,F;if(m=b,Q=[],RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS)),F!==t)for(;F!==t;)Q.push(F),RS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(FS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function sc(){var m,Q,F;if(m=b,Q=[],TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS)),F!==t)for(;F!==t;)Q.push(F),TS.test(r.charAt(b))?(F=r.charAt(b),b++):(F=t,I===0&&Be(LS));else Q=t;return Q!==t&&(Fe=m,Q=NS()),m=Q,m}function NU(){var m;return IU.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(Yg)),m}function TU(){var m;return OS.test(r.charAt(b))?(m=r.charAt(b),b++):(m=t,I===0&&Be(MS)),m}function Me(){var m,Q;if(m=[],CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI)),Q!==t)for(;Q!==t;)m.push(Q),CI.test(r.charAt(b))?(Q=r.charAt(b),b++):(Q=t,I===0&&Be(mI));else m=t;return m}if(k=n(),k!==t&&b===r.length)return k;throw k!==t&&b{"use strict";function phe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function fc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,fc)}phe(fc,Error);fc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ie))}function Le(ie,Y){return new fc(ie,null,null,Y)}function se(ie,Y,he){return new fc(fc.buildMessage(ie,Y),ie,Y,he)}function Ae(){var ie,Y,he,re;return ie=v,Y=be(),Y!==t?(r.charCodeAt(v)===47?(he=s,v++):(he=t,$===0&&Pe(o)),he!==t?(re=be(),re!==t?(D=ie,Y=a(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=be(),Y!==t&&(D=ie,Y=l(Y)),ie=Y),ie}function be(){var ie,Y,he,re;return ie=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(he=c,v++):(he=t,$===0&&Pe(u)),he!==t?(re=Ge(),re!==t?(D=ie,Y=g(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=fe(),Y!==t&&(D=ie,Y=f(Y)),ie=Y),ie}function fe(){var ie,Y,he,re,me;return ie=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Pe(u)),Y!==t?(he=le(),he!==t?(r.charCodeAt(v)===47?(re=s,v++):(re=t,$===0&&Pe(o)),re!==t?(me=le(),me!==t?(D=ie,Y=h(),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=le(),Y!==t&&(D=ie,Y=h()),ie=Y),ie}function le(){var ie,Y,he;if(ie=v,Y=[],p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C)),he!==t)for(;he!==t;)Y.push(he),p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}function Ge(){var ie,Y,he;if(ie=v,Y=[],w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B)),he!==t)for(;he!==t;)Y.push(he),w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function XK(r){return typeof r>"u"||r===null}function Che(r){return typeof r=="object"&&r!==null}function mhe(r){return Array.isArray(r)?r:XK(r)?[]:[r]}function Ehe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function md(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}md.prototype=Object.create(Error.prototype);md.prototype.constructor=md;md.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};_K.exports=md});var e2=y((YZe,$K)=>{"use strict";var ZK=pc();function wv(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}wv.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r +\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),ZK.repeat(" ",e)+i+a+s+` +`+ZK.repeat(" ",e+this.position-n+i.length)+"^"};wv.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: +`+t)),i};$K.exports=wv});var Ai=y((jZe,r2)=>{"use strict";var t2=tf(),whe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Bhe=["scalar","sequence","mapping"];function bhe(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function Qhe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(whe.indexOf(t)===-1)throw new t2('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=bhe(e.styleAliases||null),Bhe.indexOf(this.kind)===-1)throw new t2('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}r2.exports=Qhe});var dc=y((qZe,n2)=>{"use strict";var i2=pc(),jI=tf(),She=Ai();function Bv(r,e,t){var i=[];return r.include.forEach(function(n){t=Bv(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function vhe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var xhe=Ai();s2.exports=new xhe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var A2=y((WZe,a2)=>{"use strict";var Phe=Ai();a2.exports=new Phe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var c2=y((zZe,l2)=>{"use strict";var Dhe=Ai();l2.exports=new Dhe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var qI=y((VZe,u2)=>{"use strict";var khe=dc();u2.exports=new khe({explicit:[o2(),A2(),c2()]})});var f2=y((XZe,g2)=>{"use strict";var Rhe=Ai();function Fhe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function Nhe(){return null}function The(r){return r===null}g2.exports=new Rhe("tag:yaml.org,2002:null",{kind:"scalar",resolve:Fhe,construct:Nhe,predicate:The,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var p2=y((_Ze,h2)=>{"use strict";var Lhe=Ai();function Ohe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function Mhe(r){return r==="true"||r==="True"||r==="TRUE"}function Uhe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}h2.exports=new Lhe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Ohe,construct:Mhe,predicate:Uhe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var C2=y((ZZe,d2)=>{"use strict";var Khe=pc(),Hhe=Ai();function Ghe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function Yhe(r){return 48<=r&&r<=55}function jhe(r){return 48<=r&&r<=57}function qhe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var I2=y(($Ze,E2)=>{"use strict";var m2=pc(),zhe=Ai(),Vhe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Xhe(r){return!(r===null||!Vhe.test(r)||r[r.length-1]==="_")}function _he(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var Zhe=/^[-+]?[0-9]+e/;function $he(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(m2.isNegativeZero(r))return"-0.0";return t=r.toString(10),Zhe.test(t)?t.replace("e",".e"):t}function epe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||m2.isNegativeZero(r))}E2.exports=new zhe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Xhe,construct:_he,predicate:epe,represent:$he,defaultStyle:"lowercase"})});var bv=y((e$e,y2)=>{"use strict";var tpe=dc();y2.exports=new tpe({include:[qI()],implicit:[f2(),p2(),C2(),I2()]})});var Qv=y((t$e,w2)=>{"use strict";var rpe=dc();w2.exports=new rpe({include:[bv()]})});var S2=y((r$e,Q2)=>{"use strict";var ipe=Ai(),B2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),b2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function npe(r){return r===null?!1:B2.exec(r)!==null||b2.exec(r)!==null}function spe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=B2.exec(r),e===null&&(e=b2.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function ope(r){return r.toISOString()}Q2.exports=new ipe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:npe,construct:spe,instanceOf:Date,represent:ope})});var x2=y((i$e,v2)=>{"use strict";var ape=Ai();function Ape(r){return r==="<<"||r===null}v2.exports=new ape("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Ape})});var k2=y((n$e,D2)=>{"use strict";var Cc;try{P2=J,Cc=P2("buffer").Buffer}catch{}var P2,lpe=Ai(),Sv=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function cpe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=Sv;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function upe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=Sv,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),Cc?Cc.from?Cc.from(a):new Cc(a):a}function gpe(r){var e="",t=0,i,n,s=r.length,o=Sv;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function fpe(r){return Cc&&Cc.isBuffer(r)}D2.exports=new lpe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:cpe,construct:upe,predicate:fpe,represent:gpe})});var F2=y((s$e,R2)=>{"use strict";var hpe=Ai(),ppe=Object.prototype.hasOwnProperty,dpe=Object.prototype.toString;function Cpe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Epe=Ai(),Ipe=Object.prototype.toString;function ype(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Bpe=Ai(),bpe=Object.prototype.hasOwnProperty;function Qpe(r){if(r===null)return!0;var e,t=r;for(e in t)if(bpe.call(t,e)&&t[e]!==null)return!1;return!0}function Spe(r){return r!==null?r:{}}L2.exports=new Bpe("tag:yaml.org,2002:set",{kind:"mapping",resolve:Qpe,construct:Spe})});var nf=y((A$e,M2)=>{"use strict";var vpe=dc();M2.exports=new vpe({include:[Qv()],implicit:[S2(),x2()],explicit:[k2(),F2(),T2(),O2()]})});var K2=y((l$e,U2)=>{"use strict";var xpe=Ai();function Ppe(){return!0}function Dpe(){}function kpe(){return""}function Rpe(r){return typeof r>"u"}U2.exports=new xpe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Ppe,construct:Dpe,predicate:Rpe,represent:kpe})});var G2=y((c$e,H2)=>{"use strict";var Fpe=Ai();function Npe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function Tpe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Lpe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function Ope(r){return Object.prototype.toString.call(r)==="[object RegExp]"}H2.exports=new Fpe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:Npe,construct:Tpe,predicate:Ope,represent:Lpe})});var q2=y((u$e,j2)=>{"use strict";var JI;try{Y2=J,JI=Y2("esprima")}catch{typeof window<"u"&&(JI=window.esprima)}var Y2,Mpe=Ai();function Upe(r){if(r===null)return!1;try{var e="("+r+")",t=JI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Kpe(r){var e="("+r+")",t=JI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Hpe(r){return r.toString()}function Gpe(r){return Object.prototype.toString.call(r)==="[object Function]"}j2.exports=new Mpe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Upe,construct:Kpe,predicate:Gpe,represent:Hpe})});var Ed=y((g$e,W2)=>{"use strict";var J2=dc();W2.exports=J2.DEFAULT=new J2({include:[nf()],explicit:[K2(),G2(),q2()]})});var gH=y((f$e,Id)=>{"use strict";var Qa=pc(),eH=tf(),Ype=e2(),tH=nf(),jpe=Ed(),NA=Object.prototype.hasOwnProperty,WI=1,rH=2,iH=3,zI=4,vv=1,qpe=2,z2=3,Jpe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Wpe=/[\x85\u2028\u2029]/,zpe=/[,\[\]\{\}]/,nH=/^(?:!|!!|![a-z\-]+!)$/i,sH=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function V2(r){return Object.prototype.toString.call(r)}function So(r){return r===10||r===13}function Ec(r){return r===9||r===32}function fn(r){return r===9||r===32||r===10||r===13}function sf(r){return r===44||r===91||r===93||r===123||r===125}function Vpe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Xpe(r){return r===120?2:r===117?4:r===85?8:0}function _pe(r){return 48<=r&&r<=57?r-48:-1}function X2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` +`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function Zpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var oH=new Array(256),aH=new Array(256);for(mc=0;mc<256;mc++)oH[mc]=X2(mc)?1:0,aH[mc]=X2(mc);var mc;function $pe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||jpe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function AH(r,e){return new eH(e,new Ype(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function gt(r,e){throw AH(r,e)}function VI(r,e){r.onWarning&&r.onWarning.call(null,AH(r,e))}var _2={YAML:function(e,t,i){var n,s,o;e.version!==null&>(e,"duplication of %YAML directive"),i.length!==1&>(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&>(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&>(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&VI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&>(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],nH.test(n)||gt(e,"ill-formed tag handle (first argument) of the TAG directive"),NA.call(e.tagMap,n)&>(e,'there is a previously declared suffix for "'+n+'" tag handle'),sH.test(s)||gt(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function FA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=Qa.repeat(` +`,e-1))}function ede(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),fn(h)||sf(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),fn(n)||t&&sf(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),fn(i))break}else{if(r.position===r.lineStart&&XI(r)||t&&sf(h))break;if(So(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,_r(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(FA(r,s,o,!1),Pv(r,r.line-l),s=o=r.position,a=!1),Ec(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return FA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function tde(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(FA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else So(t)?(FA(r,i,n,!0),Pv(r,_r(r,!1,e)),i=n=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);gt(r,"unexpected end of the stream within a single quoted scalar")}function rde(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return FA(r,t,r.position,!0),r.position++,!0;if(a===92){if(FA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),So(a))_r(r,!1,e);else if(a<256&&oH[a])r.result+=aH[a],r.position++;else if((o=Xpe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=Vpe(a))>=0?s=(s<<4)+o:gt(r,"expected hexadecimal character");r.result+=Zpe(s),r.position++}else gt(r,"unknown escape sequence");t=i=r.position}else So(a)?(FA(r,t,i,!0),Pv(r,_r(r,!1,e)),t=i=r.position):r.position===r.lineStart&&XI(r)?gt(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}gt(r,"unexpected end of the stream within a double quoted scalar")}function ide(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,w;if(w=r.input.charCodeAt(r.position),w===91)l=93,g=!1,s=[];else if(w===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),w=r.input.charCodeAt(++r.position);w!==0;){if(_r(r,!0,e),w=r.input.charCodeAt(r.position),w===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||gt(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,w===63&&(a=r.input.charCodeAt(r.position+1),fn(a)&&(c=u=!0,r.position++,_r(r,!0,e))),i=r.line,af(r,e,WI,!1,!0),p=r.tag,h=r.result,_r(r,!0,e),w=r.input.charCodeAt(r.position),(u||r.line===i)&&w===58&&(c=!0,w=r.input.charCodeAt(++r.position),_r(r,!0,e),af(r,e,WI,!1,!0),C=r.result),g?of(r,s,f,p,h,C):c?s.push(of(r,null,f,p,h,C)):s.push(h),_r(r,!0,e),w=r.input.charCodeAt(r.position),w===44?(t=!0,w=r.input.charCodeAt(++r.position)):t=!1}gt(r,"unexpected end of the stream within a flow collection")}function nde(r,e){var t,i,n=vv,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)vv===n?n=g===43?z2:qpe:gt(r,"repeat of a chomping mode identifier");else if((u=_pe(g))>=0)u===0?gt(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?gt(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Ec(g)){do g=r.input.charCodeAt(++r.position);while(Ec(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!So(g)&&g!==0)}for(;g!==0;){for(xv(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),So(g)){l++;continue}if(r.lineIndente)&&l!==0)gt(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(af(r,e,zI,!0,n)&&(p?f=r.result:h=r.result),p||(of(r,c,u,g,f,h,s,o),g=f=h=null),_r(r,!0,-1),w=r.input.charCodeAt(r.position)),r.lineIndent>e&&w!==0)gt(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):gt(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):gt(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function lde(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(_r(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&>(r,"directive name must not be less than one character in length");o!==0;){for(;Ec(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!So(o));break}if(So(o))break;for(t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&xv(r),NA.call(_2,i)?_2[i](r,i,n):VI(r,'unknown document directive "'+i+'"')}if(_r(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,_r(r,!0,-1)):s&>(r,"directives end mark is expected"),af(r,r.lineIndent-1,zI,!1,!0),_r(r,!0,-1),r.checkLineBreaks&&Wpe.test(r.input.slice(e,r.position))&&VI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&XI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,_r(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=lH(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),cH(r,e,Qa.extend({schema:tH},t))}function ude(r,e){return uH(r,Qa.extend({schema:tH},e))}Id.exports.loadAll=cH;Id.exports.load=uH;Id.exports.safeLoadAll=cde;Id.exports.safeLoad=ude});var TH=y((h$e,Fv)=>{"use strict";var wd=pc(),Bd=tf(),gde=Ed(),fde=nf(),IH=Object.prototype.toString,yH=Object.prototype.hasOwnProperty,hde=9,yd=10,pde=13,dde=32,Cde=33,mde=34,wH=35,Ede=37,Ide=38,yde=39,wde=42,BH=44,Bde=45,bH=58,bde=61,Qde=62,Sde=63,vde=64,QH=91,SH=93,xde=96,vH=123,Pde=124,xH=125,Ti={};Ti[0]="\\0";Ti[7]="\\a";Ti[8]="\\b";Ti[9]="\\t";Ti[10]="\\n";Ti[11]="\\v";Ti[12]="\\f";Ti[13]="\\r";Ti[27]="\\e";Ti[34]='\\"';Ti[92]="\\\\";Ti[133]="\\N";Ti[160]="\\_";Ti[8232]="\\L";Ti[8233]="\\P";var Dde=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function kde(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Af(o))return _I;a=s>0?r.charCodeAt(s-1):null,f=f&&pH(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?DH:kH:t>9&&PH(r)?_I:c?FH:RH}function Ode(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Dde.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return Fde(r,l)}switch(Lde(e,o,r.indent,s,a)){case DH:return e;case kH:return"'"+e.replace(/'/g,"''")+"'";case RH:return"|"+dH(e,r.indent)+CH(hH(e,n));case FH:return">"+dH(e,r.indent)+CH(hH(Mde(e,s),n));case _I:return'"'+Ude(e,s)+'"';default:throw new Bd("impossible error: invalid scalar style")}}()}function dH(r,e){var t=PH(r)?String(e):"",i=r[r.length-1]===` +`,n=i&&(r[r.length-2]===` +`||r===` +`),s=n?"+":i?"":"-";return t+s+` +`}function CH(r){return r[r.length-1]===` +`?r.slice(0,-1):r}function Mde(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` +`);return c=c!==-1?c:r.length,t.lastIndex=c,mH(r.slice(0,c),e)}(),n=r[0]===` +`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` +`:"")+mH(l,e),n=s}return i}function mH(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` +`+r.slice(n,s),n=s+1),o=a;return l+=` +`,r.length-n>e&&o>n?l+=r.slice(n,o)+` +`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ude(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=fH((t-55296)*1024+i-56320+65536),s++;continue}n=Ti[t],e+=!n&&Af(t)?r[s]:n||fH(t)}return e}function Kde(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Ic(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function Yde(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Bd("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&yd===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=Dv(r,e)),Ic(r,e+1,u,!0,g)&&(r.dump&&yd===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function EH(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Ic(r,e,t,i,n,s){r.tag=null,r.dump=t,EH(r,t,!1)||EH(r,t,!0);var o=IH.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(Yde(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Gde(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(Hde(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Kde(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&Ode(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Bd("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function jde(r,e){var t=[],i=[],n,s;for(kv(r,t,i),n=0,s=i.length;n{"use strict";var ZI=gH(),LH=TH();function $I(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Tr.exports.Type=Ai();Tr.exports.Schema=dc();Tr.exports.FAILSAFE_SCHEMA=qI();Tr.exports.JSON_SCHEMA=bv();Tr.exports.CORE_SCHEMA=Qv();Tr.exports.DEFAULT_SAFE_SCHEMA=nf();Tr.exports.DEFAULT_FULL_SCHEMA=Ed();Tr.exports.load=ZI.load;Tr.exports.loadAll=ZI.loadAll;Tr.exports.safeLoad=ZI.safeLoad;Tr.exports.safeLoadAll=ZI.safeLoadAll;Tr.exports.dump=LH.dump;Tr.exports.safeDump=LH.safeDump;Tr.exports.YAMLException=tf();Tr.exports.MINIMAL_SCHEMA=qI();Tr.exports.SAFE_SCHEMA=nf();Tr.exports.DEFAULT_SCHEMA=Ed();Tr.exports.scan=$I("scan");Tr.exports.parse=$I("parse");Tr.exports.compose=$I("compose");Tr.exports.addConstructor=$I("addConstructor")});var UH=y((d$e,MH)=>{"use strict";var Jde=OH();MH.exports=Jde});var HH=y((C$e,KH)=>{"use strict";function Wde(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function yc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,yc)}Wde(yc,Error);yc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ne]:pe})))},H=function(R){return R},j=function(R){return R},$=Ms("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===vA*Gg},A=function(R){return R.length===(vA+1)*Gg},ae=function(){return vA++,!0},ge=function(){return vA--,!0},_=function(){return Lg()},L=Ms("pseudostring"),N=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Fn(["\r",` +`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),we=/^[^\r\n\t ,\][{}:#"']/,Te=Fn(["\r",` +`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Lg().replace(/^ *| *$/g,"")},Le="--",se=ar("--",!1),Ae=/^[a-zA-Z\/0-9]/,be=Fn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,le=Fn(["\r",` +`," "," ",":",","],!0,!1),Ge="null",ie=ar("null",!1),Y=function(){return null},he="true",re=ar("true",!1),me=function(){return!0},tt="false",Rt=ar("false",!1),It=function(){return!1},Ur=Ms("string"),oi='"',pi=ar('"',!1),pr=function(){return""},di=function(R){return R},ai=function(R){return R.join("")},Os=/^[^"\\\0-\x1F\x7F]/,dr=Fn(['"',"\\",["\0",""],"\x7F"],!0,!1),Bi='\\"',_n=ar('\\"',!1),pa=function(){return'"'},EA="\\\\",kg=ar("\\\\",!1),Zn=function(){return"\\"},IA="\\/",da=ar("\\/",!1),Jp=function(){return"/"},yA="\\b",wA=ar("\\b",!1),Br=function(){return"\b"},Vl="\\f",Rg=ar("\\f",!1),Eo=function(){return"\f"},Fg="\\n",Wp=ar("\\n",!1),zp=function(){return` +`},Pr="\\r",oe=ar("\\r",!1),Io=function(){return"\r"},kn="\\t",Ng=ar("\\t",!1),bt=function(){return" "},Xl="\\u",Rn=ar("\\u",!1),$n=function(R,q,pe,Ne){return String.fromCharCode(parseInt(`0x${R}${q}${pe}${Ne}`))},es=/^[0-9a-fA-F]/,ut=Fn([["0","9"],["a","f"],["A","F"]],!1,!1),yo=Ms("blank space"),at=/^[ \t]/,ln=Fn([" "," "],!1,!1),S=Ms("white space"),Lt=/^[ \t\n\r]/,Tg=Fn([" "," ",` +`,"\r"],!1,!1),_l=`\r +`,Vp=ar(`\r +`,!1),Xp=` +`,_p=ar(` +`,!1),Zp="\r",$p=ar("\r",!1),G=0,yt=0,BA=[{line:1,column:1}],Wi=0,Zl=[],We=0,Ca;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Lg(){return r.substring(yt,G)}function uI(){return cn(yt,G)}function ed(R,q){throw q=q!==void 0?q:cn(yt,G),ec([Ms(R)],r.substring(yt,G),q)}function gI(R,q){throw q=q!==void 0?q:cn(yt,G),Og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Fn(R,q,pe){return{type:"class",parts:R,inverted:q,ignoreCase:pe}}function $l(){return{type:"any"}}function td(){return{type:"end"}}function Ms(R){return{type:"other",description:R}}function ma(R){var q=BA[R],pe;if(q)return q;for(pe=R-1;!BA[pe];)pe--;for(q=BA[pe],q={line:q.line,column:q.column};peWi&&(Wi=G,Zl=[]),Zl.push(R))}function Og(R,q){return new yc(R,null,null,q)}function ec(R,q,pe){return new yc(yc.buildMessage(R,q),R,q,pe)}function Us(){var R;return R=Mg(),R}function tc(){var R,q,pe;for(R=G,q=[],pe=bA();pe!==t;)q.push(pe),pe=bA();return q!==t&&(yt=R,q=s(q)),R=q,R}function bA(){var R,q,pe,Ne,xe;return R=G,q=Ia(),q!==t?(r.charCodeAt(G)===45?(pe=o,G++):(pe=t,We===0&&ke(a)),pe!==t?(Ne=Nr(),Ne!==t?(xe=Ea(),xe!==t?(yt=R,q=l(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Mg(){var R,q,pe;for(R=G,q=[],pe=Ug();pe!==t;)q.push(pe),pe=Ug();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ug(){var R,q,pe,Ne,xe,qe,dt,Ft,Nn;if(R=G,q=Nr(),q===t&&(q=null),q!==t){if(pe=G,r.charCodeAt(G)===35?(Ne=u,G++):(Ne=t,We===0&&ke(g)),Ne!==t){if(xe=[],qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t),qe!==t)for(;qe!==t;)xe.push(qe),qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&ke(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t);else xe=t;xe!==t?(Ne=[Ne,xe],pe=Ne):(G=pe,pe=t)}else G=pe,pe=t;if(pe===t&&(pe=null),pe!==t){if(Ne=[],xe=Hs(),xe!==t)for(;xe!==t;)Ne.push(xe),xe=Hs();else Ne=t;Ne!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=Ia(),q!==t?(pe=rc(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Ia(),q!==t?(pe=Ks(),pe!==t?(Ne=Nr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&ke(C)),xe!==t?(qe=Nr(),qe===t&&(qe=null),qe!==t?(dt=Ea(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t)if(Ne=Nr(),Ne!==t)if(xe=fI(),xe!==t){if(qe=[],dt=Hs(),dt!==t)for(;dt!==t;)qe.push(dt),dt=Hs();else qe=t;qe!==t?(yt=R,q=w(pe,xe),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=Ia(),q!==t)if(pe=Ks(),pe!==t){if(Ne=[],xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t),xe!==t)for(;xe!==t;)Ne.push(xe),xe=G,qe=Nr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&ke(v)),dt!==t?(Ft=Nr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Ks(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t);else Ne=t;Ne!==t?(xe=Nr(),xe===t&&(xe=null),xe!==t?(r.charCodeAt(G)===58?(qe=p,G++):(qe=t,We===0&&ke(C)),qe!==t?(dt=Nr(),dt===t&&(dt=null),dt!==t?(Ft=Ea(),Ft!==t?(yt=R,q=T(pe,Ne,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function Ea(){var R,q,pe,Ne,xe,qe,dt;if(R=G,q=G,We++,pe=G,Ne=Gs(),Ne!==t?(xe=$e(),xe!==t?(r.charCodeAt(G)===45?(qe=o,G++):(qe=t,We===0&&ke(a)),qe!==t?(dt=Nr(),dt!==t?(Ne=[Ne,xe,qe,dt],pe=Ne):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t),We--,pe!==t?(G=q,q=void 0):q=t,q!==t?(pe=Hs(),pe!==t?(Ne=wo(),Ne!==t?(xe=tc(),xe!==t?(qe=QA(),qe!==t?(yt=R,q=H(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Gs(),q!==t?(pe=wo(),pe!==t?(Ne=Mg(),Ne!==t?(xe=QA(),xe!==t?(yt=R,q=H(Ne),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=ic(),q!==t){if(pe=[],Ne=Hs(),Ne!==t)for(;Ne!==t;)pe.push(Ne),Ne=Hs();else pe=t;pe!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function Ia(){var R,q,pe;for(We++,R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=Z(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),We--,R===t&&(q=t,We===0&&ke($)),R}function $e(){var R,q,pe;for(R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&ke(W));return q!==t?(yt=G,pe=A(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),R}function wo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function QA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function rc(){var R;return R=nc(),R===t&&(R=rd()),R}function Ks(){var R,q,pe;if(R=nc(),R===t){if(R=G,q=[],pe=Kg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Kg();else q=t;q!==t&&(yt=R,q=_()),R=q}return R}function ic(){var R;return R=id(),R===t&&(R=hI(),R===t&&(R=nc(),R===t&&(R=rd()))),R}function fI(){var R;return R=id(),R===t&&(R=nc(),R===t&&(R=Kg())),R}function rd(){var R,q,pe,Ne,xe,qe;if(We++,R=G,N.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ue)),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&ke(Te)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;return We--,R===t&&(q=t,We===0&&ke(L)),R}function Kg(){var R,q,pe,Ne,xe;if(R=G,r.substr(G,2)===Le?(q=Le,G+=2):(q=t,We===0&&ke(se)),q===t&&(q=null),q!==t)if(Ae.test(r.charAt(G))?(pe=r.charAt(G),G++):(pe=t,We===0&&ke(be)),pe!==t){for(Ne=[],fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));xe!==t;)Ne.push(xe),fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&ke(le));Ne!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function id(){var R,q;return R=G,r.substr(G,4)===Ge?(q=Ge,G+=4):(q=t,We===0&&ke(ie)),q!==t&&(yt=R,q=Y()),R=q,R}function hI(){var R,q;return R=G,r.substr(G,4)===he?(q=he,G+=4):(q=t,We===0&&ke(re)),q!==t&&(yt=R,q=me()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,We===0&&ke(Rt)),q!==t&&(yt=R,q=It()),R=q),R}function nc(){var R,q,pe,Ne;return We++,R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(r.charCodeAt(G)===34?(pe=oi,G++):(pe=t,We===0&&ke(pi)),pe!==t?(yt=R,q=pr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&ke(pi)),q!==t?(pe=pI(),pe!==t?(r.charCodeAt(G)===34?(Ne=oi,G++):(Ne=t,We===0&&ke(pi)),Ne!==t?(yt=R,q=di(pe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),We--,R===t&&(q=t,We===0&&ke(Ur)),R}function pI(){var R,q,pe;if(R=G,q=[],pe=Hg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Hg();else q=t;return q!==t&&(yt=R,q=ai(q)),R=q,R}function Hg(){var R,q,pe,Ne,xe,qe;return Os.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(dr)),R===t&&(R=G,r.substr(G,2)===Bi?(q=Bi,G+=2):(q=t,We===0&&ke(_n)),q!==t&&(yt=R,q=pa()),R=q,R===t&&(R=G,r.substr(G,2)===EA?(q=EA,G+=2):(q=t,We===0&&ke(kg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===IA?(q=IA,G+=2):(q=t,We===0&&ke(da)),q!==t&&(yt=R,q=Jp()),R=q,R===t&&(R=G,r.substr(G,2)===yA?(q=yA,G+=2):(q=t,We===0&&ke(wA)),q!==t&&(yt=R,q=Br()),R=q,R===t&&(R=G,r.substr(G,2)===Vl?(q=Vl,G+=2):(q=t,We===0&&ke(Rg)),q!==t&&(yt=R,q=Eo()),R=q,R===t&&(R=G,r.substr(G,2)===Fg?(q=Fg,G+=2):(q=t,We===0&&ke(Wp)),q!==t&&(yt=R,q=zp()),R=q,R===t&&(R=G,r.substr(G,2)===Pr?(q=Pr,G+=2):(q=t,We===0&&ke(oe)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===kn?(q=kn,G+=2):(q=t,We===0&&ke(Ng)),q!==t&&(yt=R,q=bt()),R=q,R===t&&(R=G,r.substr(G,2)===Xl?(q=Xl,G+=2):(q=t,We===0&&ke(Rn)),q!==t?(pe=SA(),pe!==t?(Ne=SA(),Ne!==t?(xe=SA(),xe!==t?(qe=SA(),qe!==t?(yt=R,q=$n(pe,Ne,xe,qe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function SA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&ke(ut)),R}function Nr(){var R,q;if(We++,R=[],at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln)),q!==t)for(;q!==t;)R.push(q),at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(ln));else R=t;return We--,R===t&&(q=t,We===0&&ke(yo)),R}function dI(){var R,q;if(We++,R=[],Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg)),q!==t)for(;q!==t;)R.push(q),Lt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&ke(Tg));else R=t;return We--,R===t&&(q=t,We===0&&ke(S)),R}function Hs(){var R,q,pe,Ne,xe,qe;if(R=G,q=Gs(),q!==t){for(pe=[],Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Nr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(q=[q,pe],R=q):(G=R,R=t)}else G=R,R=t;return R}function Gs(){var R;return r.substr(G,2)===_l?(R=_l,G+=2):(R=t,We===0&&ke(Vp)),R===t&&(r.charCodeAt(G)===10?(R=Xp,G++):(R=t,We===0&&ke(_p)),R===t&&(r.charCodeAt(G)===13?(R=Zp,G++):(R=t,We===0&&ke($p)))),R}let Gg=2,vA=0;if(Ca=n(),Ca!==t&&G===r.length)return Ca;throw Ca!==t&&G{"use strict";var $de=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=$de(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};Tv.exports=JH;Tv.exports.default=JH});var zH=y((B$e,eCe)=>{eCe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var wc=y(Mn=>{"use strict";var XH=zH(),vo=process.env;Object.defineProperty(Mn,"_vendors",{value:XH.map(function(r){return r.constant})});Mn.name=null;Mn.isPR=null;XH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return VH(i)});if(Mn[r.constant]=t,t)switch(Mn.name=r.name,typeof r.pr){case"string":Mn.isPR=!!vo[r.pr];break;case"object":"env"in r.pr?Mn.isPR=r.pr.env in vo&&vo[r.pr.env]!==r.pr.ne:"any"in r.pr?Mn.isPR=r.pr.any.some(function(i){return!!vo[i]}):Mn.isPR=VH(r.pr);break;default:Mn.isPR=null}});Mn.isCI=!!(vo.CI||vo.CONTINUOUS_INTEGRATION||vo.BUILD_NUMBER||vo.RUN_ID||Mn.name);function VH(r){return typeof r=="string"?!!vo[r]:Object.keys(r).every(function(e){return vo[e]===r[e]})}});var ry=y(Un=>{"use strict";Object.defineProperty(Un,"__esModule",{value:!0});var tCe=0,rCe=1,iCe=2,nCe="",sCe="\0",oCe=-1,aCe=/^(-h|--help)(?:=([0-9]+))?$/,ACe=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,lCe=/^-[a-zA-Z]{2,}$/,cCe=/^([^=]+)=([\s\S]*)$/,uCe=process.env.DEBUG_CLI==="1";Un.BATCH_REGEX=lCe;Un.BINDING_REGEX=cCe;Un.DEBUG=uCe;Un.END_OF_INPUT=sCe;Un.HELP_COMMAND_INDEX=oCe;Un.HELP_REGEX=aCe;Un.NODE_ERRORED=iCe;Un.NODE_INITIAL=tCe;Un.NODE_SUCCESS=rCe;Un.OPTION_REGEX=ACe;Un.START_OF_INPUT=nCe});var iy=y(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});var gCe=ry(),Lv=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Ov=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} + +${this.candidates.map(({usage:n})=>`$ ${n}`).join(` +`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: + +$ ${i} +${Uv(e)}`}else this.message=`Command not found; did you mean one of: + +${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Mv=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: + +${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` +`)} + +${Uv(e)}`}},Uv=r=>`While running ${r.filter(e=>e!==gCe.END_OF_INPUT).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;Qd.AmbiguousSyntaxError=Mv;Qd.UnknownSyntaxError=Ov;Qd.UsageError=Lv});var va=y(TA=>{"use strict";Object.defineProperty(TA,"__esModule",{value:!0});var _H=iy(),ZH=Symbol("clipanion/isOption");function fCe(r){return{...r,[ZH]:!0}}function hCe(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function Kv(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function $H(r,e){return e.length===1?new _H.UsageError(`${r}: ${Kv(e[0],!0)}`):new _H.UsageError(`${r}: +${e.map(t=>` +- ${Kv(t)}`).join("")}`)}function pCe(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw $H(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}TA.applyValidator=pCe;TA.cleanValidationError=Kv;TA.formatError=$H;TA.isOptionSymbol=ZH;TA.makeCommandOption=fCe;TA.rerouteArguments=hCe});var ns=y(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});var eG=/^[a-zA-Z_][a-zA-Z0-9_]*$/,tG=/^#[0-9a-f]{6}$/i,rG=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,iG=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,nG=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Hv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,sG=r=>()=>r;function Qt({test:r}){return sG(r)()}function Zr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function LA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:eG.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function Bc(r,e){return t=>{let i=r[e];return r[e]=t,Bc(r,e).bind(null,i)}}function oG(r,e){return t=>{r[e]=t}}function ny(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}var aG=()=>Qt({test:(r,e)=>!0});function dCe(r){return Qt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Zr(r)})`):!0})}var CCe=()=>Qt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Zr(r)})`):!0});function mCe(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return Qt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Zr(i)})`)})}var ECe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),ICe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=ECe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Zr(r)})`)}return!0}}),yCe=()=>Qt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Zr(r)})`)}return!0}}),wCe=()=>Qt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&Hv.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Zr(r)})`)}return!0}}),BCe=(r,{delimiter:e}={})=>Qt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Zr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=AG(r.length);return Qt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Zr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;aQt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Zr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return Qt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Zr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:LA(n,l),coercion:Bc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),`Extraneous property (got ${Zr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:oG(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},vCe=r=>Qt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Zr(e)})`)}),xCe=(r,{exclusive:e=!1}={})=>Qt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),PCe=(r,e)=>Qt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?Bc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),DCe=r=>Qt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),kCe=r=>Qt({test:(e,t)=>e===null?!0:r(e,t)}),RCe=r=>Qt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),FCe=r=>Qt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),AG=r=>Qt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),NCe=({map:r}={})=>Qt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sQt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),LCe=()=>Qt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),OCe=r=>Qt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),MCe=r=>Qt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),UCe=(r,e)=>Qt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),KCe=(r,e)=>Qt({test:(t,i)=>t>=r&&tQt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),GCe=r=>Qt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Zr(e)})`)}),YCe=()=>Qt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),jCe=()=>Qt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),qCe=()=>Qt({test:(r,e)=>nG.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Zr(r)})`)}),JCe=()=>Qt({test:(r,e)=>Hv.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Zr(r)})`)}),WCe=({alpha:r=!1})=>Qt({test:(e,t)=>(r?tG.test(e):rG.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Zr(e)})`)}),zCe=()=>Qt({test:(r,e)=>iG.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Zr(r)})`)}),VCe=(r=aG())=>Qt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Zr(e)})`)}return r(i,t)}}),XCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},_Ce=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${ny(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},ZCe=r=>{let e=new Set(r);return Qt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(st.KeyRelationship||(st.KeyRelationship={}));var $Ce={[st.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[st.KeyRelationship.Requires]:{expect:!0,message:"requires using"}},eme=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=$Ce[e];return Qt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${ny(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})};st.applyCascade=PCe;st.base64RegExp=iG;st.colorStringAlphaRegExp=rG;st.colorStringRegExp=tG;st.computeKey=LA;st.getPrintable=Zr;st.hasExactLength=AG;st.hasForbiddenKeys=_Ce;st.hasKeyRelationship=eme;st.hasMaxLength=FCe;st.hasMinLength=RCe;st.hasMutuallyExclusiveKeys=ZCe;st.hasRequiredKeys=XCe;st.hasUniqueItems=NCe;st.isArray=BCe;st.isAtLeast=OCe;st.isAtMost=MCe;st.isBase64=zCe;st.isBoolean=ICe;st.isDate=wCe;st.isDict=QCe;st.isEnum=mCe;st.isHexColor=WCe;st.isISO8601=JCe;st.isInExclusiveRange=KCe;st.isInInclusiveRange=UCe;st.isInstanceOf=vCe;st.isInteger=HCe;st.isJSON=VCe;st.isLiteral=dCe;st.isLowerCase=YCe;st.isNegative=TCe;st.isNullable=kCe;st.isNumber=yCe;st.isObject=SCe;st.isOneOf=xCe;st.isOptional=DCe;st.isPositive=LCe;st.isString=CCe;st.isTuple=bCe;st.isUUID4=qCe;st.isUnknown=aG;st.isUpperCase=jCe;st.iso8601RegExp=Hv;st.makeCoercionFn=Bc;st.makeSetter=oG;st.makeTrait=sG;st.makeValidator=Qt;st.matchesRegExp=GCe;st.plural=ny;st.pushError=pt;st.simpleKeyRegExp=eG;st.uuid4RegExp=nG});var bc=y(Gv=>{"use strict";Object.defineProperty(Gv,"__esModule",{value:!0});var lG=va();function tme(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach(function(t){if(t!=="default"){var i=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return r[t]}})}}),e.default=r,Object.freeze(e)}var Sd=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(function(){return tme(ns())}),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw lG.formatError("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};Sd.isOption=lG.isOptionSymbol;Sd.Default=[];Gv.Command=Sd});var jv=y(vd=>{"use strict";Object.defineProperty(vd,"__esModule",{value:!0});var cG=80,Yv=Array(cG).fill("\u2501");for(let r=0;r<=24;++r)Yv[Yv.length-r]=`\x1B[38;5;${232+r}m\u2501`;var rme={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},ime={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function nme(r){let e=r.split(` +`),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` +`)}function sme(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` +`),r=nme(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 + +`),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` +`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` +`)}).join(` + +`)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r} +`:""}vd.formatMarkdownish=sme;vd.richFormat=rme;vd.textFormat=ime});var ly=y(Ar=>{"use strict";Object.defineProperty(Ar,"__esModule",{value:!0});var lt=ry(),ay=iy();function Vi(r){lt.DEBUG&&console.log(r)}var uG={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:lt.HELP_COMMAND_INDEX};function qv(){return{nodes:[Li(),Li(),Li()]}}function gG(r){let e=qv(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(lt.NODE_INITIAL)}function hG(r,{prefix:e=""}={}){if(lt.DEBUG){Vi(`${e}Nodes are:`);for(let t=0;tl!==lt.NODE_ERRORED).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===lt.NODE_ERRORED))throw new ay.UnknownSyntaxError(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=pG(a)}if(i.length>0){Vi(" Results:");for(let s of i)Vi(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else Vi(" No results");return i}function ome(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,lt.END_OF_INPUT)){for(let{to:t}of r.statics[lt.END_OF_INPUT])if(t===lt.NODE_SUCCESS)return!0}return!1}function ame(r,e,t){let i=t&&e.length>0?[""]:[],n=Jv(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],w=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=w[0];for(let{to:D,reducer:T}of C.statics[v])T==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=ome(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==lt.END_OF_INPUT||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===lt.NODE_ERRORED)continue;let p=IG(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function Ame(r,e){let t=Jv(r,[...e,lt.END_OF_INPUT]);return dG(e,t.map(({state:i})=>i))}function pG(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function dG(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new ay.UnknownSyntaxError(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=CG(c);if(u.length>1)throw new ay.AmbiguousSyntaxError(r,u.map(g=>g.candidateUsage));return u[0]}function CG(r){let e=[],t=[];for(let i of r)i.selectedIndex===lt.HELP_COMMAND_INDEX?t.push(i):e.push(i);return t.length>0&&e.push({...uG,path:mG(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function mG(r,e,...t){return e===void 0?Array.from(r):mG(r.filter((i,n)=>i===e[n]),...t)}function Li(){return{dynamics:[],shortcuts:[],statics:{}}}function Wv(r){return r===lt.NODE_SUCCESS||r===lt.NODE_ERRORED}function sy(r,e=0){return{to:Wv(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function EG(r,e=0){let t=Li();for(let[i,n]of r.dynamics)t.dynamics.push([i,sy(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(sy(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>sy(s,e));return t}function Ei(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Qc(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function xo(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function xd(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function IG(r,e){let t=Array.isArray(r)?Pd[r[0]]:Pd[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var Pd={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&<.BATCH_REGEX.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(lt.BINDING_REGEX);return!r.ignoreOptions&&!!n&<.OPTION_REGEX.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&<.HELP_REGEX.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&<.OPTION_REGEX.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!lt.OPTION_REGEX.test(e)};Pd.isOption.suggest=(r,e,t=!0)=>t?null:[e];var oy={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(lt.BINDING_REGEX);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Po})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(lt.HELP_REGEX);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===lt.END_OF_INPUT?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Po=Symbol(),Ay=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Po)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Po?this.arity.extra.push(e):this.arity.extra!==Po&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Po)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Po?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=qv(),t=lt.NODE_INITIAL,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=ss(e,Li()),xo(e,lt.NODE_INITIAL,lt.START_OF_INPUT,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=ss(e,Li());Qc(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=ss(e,Li());Ei(e,l,"isHelp",f,["useHelp",this.cliIndex]),xo(e,f,lt.END_OF_INPUT,lt.NODE_SUCCESS,["setSelectedIndex",lt.HELP_COMMAND_INDEX]),this.registerOptions(e,l)}this.arity.leading.length>0&&xo(e,l,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&xo(e,h,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]),Ei(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Po||this.arity.extra.length>0){let f=ss(e,Li());if(Qc(e,c,f),this.arity.extra===Po){let h=ss(e,Li());this.arity.proxy||this.registerOptions(e,h),Ei(e,c,s,h,"pushExtraNoLimits"),Ei(e,h,s,h,"pushExtraNoLimits"),Qc(e,h,f)}else for(let h=0;h0&&xo(e,u,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Ei(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Ei(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=ss(e,Li());for(let o of i.names)Ei(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&eAme(i,n),suggest:(n,s)=>ame(i,n,s)}}};Ar.CliBuilder=Dd;Ar.CommandBuilder=Ay;Ar.NoLimits=Po;Ar.aggregateHelpStates=CG;Ar.cloneNode=EG;Ar.cloneTransition=sy;Ar.debug=Vi;Ar.debugMachine=hG;Ar.execute=xd;Ar.injectNode=ss;Ar.isTerminalNode=Wv;Ar.makeAnyOfMachine=gG;Ar.makeNode=Li;Ar.makeStateMachine=qv;Ar.reducers=oy;Ar.registerDynamic=Ei;Ar.registerShortcut=Qc;Ar.registerStatic=xo;Ar.runMachineInternal=Jv;Ar.selectBestState=dG;Ar.simplifyMachine=fG;Ar.suggest=IG;Ar.tests=Pd;Ar.trimSmallerBranches=pG});var yG=y(zv=>{"use strict";Object.defineProperty(zv,"__esModule",{value:!0});var lme=bc(),kd=class extends lme.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new kd(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: +`),this.context.stdout.write(` +`);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` +`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. +`)}}};zv.HelpCommand=kd});var vG=y(Vv=>{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});var cme=ry(),wG=bc(),ume=J("tty"),gme=ly(),hn=jv(),fme=yG();function hme(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var BG=hme(ume),bG=Symbol("clipanion/errorCommand");function pme(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var OA=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new gme.CliBuilder({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new OA(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[wG.Command.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case cme.HELP_COMMAND_INDEX:return fme.HelpCommand.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[bG]=a,l}}break}}async run(e,t){var i;let n,s={...OA.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?dme(s):SG,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?hn.formatMarkdownish(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?hn.formatMarkdownish(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?hn.formatMarkdownish(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[hn.formatMarkdownish(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof wG.Command?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=hn.formatMarkdownish(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` +`),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")} +`,a+=` +`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g} +`,f.length>0){a+=` +`,a+=`${hn.richFormat.header("Options")} +`;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=` +`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${hn.formatMarkdownish(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` +`,a+=`${this.format(t).header("Details")} +`,a+=` +`,a+=hn.formatMarkdownish(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` +`,a+=`${this.format(t).header("Examples")} +`;for(let[h,p]of u)a+=` +`,a+=hn.formatMarkdownish(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} +`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l} +`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?hn.formatMarkdownish(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:w}=this.getUsageByIndex(h);C.push({commandClass:f,usage:w})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} + +`:u?a+=`${this.format(t).header(`${this.binaryLabel}`)} +`:a+=`${this.format(t).header(`${this.binaryVersion}`)} +`,a+=` ${this.format(t).bold(n)}${this.binaryName} +`):a+=`${this.format(t).bold(n)}${this.binaryName} +`;for(let f of c){let h=l.get(f).slice().sort((C,w)=>C.usage.localeCompare(w.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` +`,a+=`${this.format(t).header(`${p}`)} +`;for(let{commandClass:C,usage:w}of h){let B=C.usage.description||"undocumented";a+=` +`,a+=` ${this.format(t).bold(w)} +`,a+=` ${hn.formatMarkdownish(B,{format:this.format(t),paragraphs:!1})}`}}a+=` +`,a+=hn.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[bG])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} +`;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=` +`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} +`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:OA.defaultContext.colorDepth>1)?hn.richFormat:hn.textFormat}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};OA.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in BG.default.WriteStream.prototype?BG.default.WriteStream.prototype.getColorDepth():pme()};var QG;function dme(r){let e=QG;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return SG;let{AsyncLocalStorage:t}=J("async_hooks");e=QG=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function SG(r){return r()}Vv.Cli=OA});var xG=y(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});var Cme=bc(),cy=class extends Cme.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} +`)}};cy.paths=[["--clipanion=definitions"]];Xv.DefinitionsCommand=cy});var PG=y(_v=>{"use strict";Object.defineProperty(_v,"__esModule",{value:!0});var mme=bc(),uy=class extends mme.Command{async execute(){this.context.stdout.write(this.cli.usage())}};uy.paths=[["-h"],["--help"]];_v.HelpCommand=uy});var DG=y(Zv=>{"use strict";Object.defineProperty(Zv,"__esModule",{value:!0});var Eme=bc(),gy=class extends Eme.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} +`)}};gy.paths=[["-v"],["--version"]];Zv.VersionCommand=gy});var kG=y(Rd=>{"use strict";Object.defineProperty(Rd,"__esModule",{value:!0});var Ime=xG(),yme=PG(),wme=DG();Rd.DefinitionsCommand=Ime.DefinitionsCommand;Rd.HelpCommand=yme.HelpCommand;Rd.VersionCommand=wme.VersionCommand});var FG=y($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});var RG=va();function Bme(r,e,t){let[i,n]=RG.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return RG.makeCommandOption({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}$v.Array=Bme});var TG=y(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var NG=va();function bme(r,e,t){let[i,n]=NG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return NG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}ex.Boolean=bme});var OG=y(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});var LG=va();function Qme(r,e,t){let[i,n]=LG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return LG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}tx.Counter=Qme});var MG=y(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var Sme=va();function vme(r={}){return Sme.makeCommandOption({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}rx.Proxy=vme});var UG=y(ix=>{"use strict";Object.defineProperty(ix,"__esModule",{value:!0});var xme=va(),Pme=ly();function Dme(r={}){return xme.makeCommandOption({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===Pme.NoLimits||a.extra===!1&&oo)}})}ix.Rest=Dme});var KG=y(nx=>{"use strict";Object.defineProperty(nx,"__esModule",{value:!0});var Fd=va(),kme=ly();function Rme(r,e,t){let[i,n]=Fd.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return Fd.makeCommandOption({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?Fd.applyValidator(g!=null?g:c,f,n.validator):f}})}function Fme(r={}){let{required:e=!0}=r;return Fd.makeCommandOption({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var lf=va(),Tme=FG(),Lme=TG(),Ome=OG(),Mme=MG(),Ume=UG(),Kme=KG();pn.applyValidator=lf.applyValidator;pn.cleanValidationError=lf.cleanValidationError;pn.formatError=lf.formatError;pn.isOptionSymbol=lf.isOptionSymbol;pn.makeCommandOption=lf.makeCommandOption;pn.rerouteArguments=lf.rerouteArguments;pn.Array=Tme.Array;pn.Boolean=Lme.Boolean;pn.Counter=Ome.Counter;pn.Proxy=Mme.Proxy;pn.Rest=Ume.Rest;pn.String=Kme.String});var Xe=y(MA=>{"use strict";Object.defineProperty(MA,"__esModule",{value:!0});var Hme=iy(),Gme=bc(),Yme=jv(),jme=vG(),qme=kG(),Jme=HG();MA.UsageError=Hme.UsageError;MA.Command=Gme.Command;MA.formatMarkdownish=Yme.formatMarkdownish;MA.Cli=jme.Cli;MA.Builtins=qme;MA.Option=Jme});var YG=y((J$e,GG)=>{"use strict";GG.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var cf=y((W$e,sx)=>{"use strict";var Wme=YG(),jG=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Wme(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};sx.exports=jG;sx.exports.default=jG});var Nd=y((V$e,qG)=>{var zme="2.0.0",Vme=Number.MAX_SAFE_INTEGER||9007199254740991,Xme=16;qG.exports={SEMVER_SPEC_VERSION:zme,MAX_LENGTH:256,MAX_SAFE_INTEGER:Vme,MAX_SAFE_COMPONENT_LENGTH:Xme}});var Td=y((X$e,JG)=>{var _me=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};JG.exports=_me});var Sc=y((KA,WG)=>{var{MAX_SAFE_COMPONENT_LENGTH:ox}=Nd(),Zme=Td();KA=WG.exports={};var $me=KA.re=[],_e=KA.src=[],Ze=KA.t={},eEe=0,St=(r,e,t)=>{let i=eEe++;Zme(i,e),Ze[r]=i,_e[i]=e,$me[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${_e[Ze.NUMERICIDENTIFIER]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${_e[Ze.NUMERICIDENTIFIERLOOSE]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${_e[Ze.PRERELEASEIDENTIFIER]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${_e[Ze.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${_e[Ze.BUILDIDENTIFIER]}(?:\\.${_e[Ze.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${_e[Ze.MAINVERSION]}${_e[Ze.PRERELEASE]}?${_e[Ze.BUILD]}?`);St("FULL",`^${_e[Ze.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${_e[Ze.MAINVERSIONLOOSE]}${_e[Ze.PRERELEASELOOSE]}?${_e[Ze.BUILD]}?`);St("LOOSE",`^${_e[Ze.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${_e[Ze.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${_e[Ze.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:${_e[Ze.PRERELEASE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:${_e[Ze.PRERELEASELOOSE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${ox}})(?:\\.(\\d{1,${ox}}))?(?:\\.(\\d{1,${ox}}))?(?:$|[^\\d])`);St("COERCERTL",_e[Ze.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${_e[Ze.LONETILDE]}\\s+`,!0);KA.tildeTrimReplace="$1~";St("TILDE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${_e[Ze.LONECARET]}\\s+`,!0);KA.caretTrimReplace="$1^";St("CARET",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]}|${_e[Ze.XRANGEPLAIN]})`,!0);KA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${_e[Ze.XRANGEPLAIN]})\\s+-\\s+(${_e[Ze.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${_e[Ze.XRANGEPLAINLOOSE]})\\s+-\\s+(${_e[Ze.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Ld=y((_$e,zG)=>{var tEe=["includePrerelease","loose","rtl"],rEe=r=>r?typeof r!="object"?{loose:!0}:tEe.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};zG.exports=rEe});var hy=y((Z$e,_G)=>{var VG=/^[0-9]+$/,XG=(r,e)=>{let t=VG.test(r),i=VG.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rXG(e,r);_G.exports={compareIdentifiers:XG,rcompareIdentifiers:iEe}});var Oi=y(($$e,tY)=>{var py=Td(),{MAX_LENGTH:ZG,MAX_SAFE_INTEGER:dy}=Nd(),{re:$G,t:eY}=Sc(),nEe=Ld(),{compareIdentifiers:Od}=hy(),Kn=class{constructor(e,t){if(t=nEe(t),e instanceof Kn){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>ZG)throw new TypeError(`version is longer than ${ZG} characters`);py("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?$G[eY.LOOSE]:$G[eY.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>dy||this.major<0)throw new TypeError("Invalid major version");if(this.minor>dy||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>dy||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};tY.exports=Kn});var vc=y((eet,sY)=>{var{MAX_LENGTH:sEe}=Nd(),{re:rY,t:iY}=Sc(),nY=Oi(),oEe=Ld(),aEe=(r,e)=>{if(e=oEe(e),r instanceof nY)return r;if(typeof r!="string"||r.length>sEe||!(e.loose?rY[iY.LOOSE]:rY[iY.FULL]).test(r))return null;try{return new nY(r,e)}catch{return null}};sY.exports=aEe});var aY=y((tet,oY)=>{var AEe=vc(),lEe=(r,e)=>{let t=AEe(r,e);return t?t.version:null};oY.exports=lEe});var lY=y((ret,AY)=>{var cEe=vc(),uEe=(r,e)=>{let t=cEe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};AY.exports=uEe});var uY=y((iet,cY)=>{var gEe=Oi(),fEe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new gEe(r,t).inc(e,i).version}catch{return null}};cY.exports=fEe});var os=y((net,fY)=>{var gY=Oi(),hEe=(r,e,t)=>new gY(r,t).compare(new gY(e,t));fY.exports=hEe});var Cy=y((set,hY)=>{var pEe=os(),dEe=(r,e,t)=>pEe(r,e,t)===0;hY.exports=dEe});var CY=y((oet,dY)=>{var pY=vc(),CEe=Cy(),mEe=(r,e)=>{if(CEe(r,e))return null;{let t=pY(r),i=pY(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};dY.exports=mEe});var EY=y((aet,mY)=>{var EEe=Oi(),IEe=(r,e)=>new EEe(r,e).major;mY.exports=IEe});var yY=y((Aet,IY)=>{var yEe=Oi(),wEe=(r,e)=>new yEe(r,e).minor;IY.exports=wEe});var BY=y((cet,wY)=>{var BEe=Oi(),bEe=(r,e)=>new BEe(r,e).patch;wY.exports=bEe});var QY=y((uet,bY)=>{var QEe=vc(),SEe=(r,e)=>{let t=QEe(r,e);return t&&t.prerelease.length?t.prerelease:null};bY.exports=SEe});var vY=y((get,SY)=>{var vEe=os(),xEe=(r,e,t)=>vEe(e,r,t);SY.exports=xEe});var PY=y((fet,xY)=>{var PEe=os(),DEe=(r,e)=>PEe(r,e,!0);xY.exports=DEe});var my=y((het,kY)=>{var DY=Oi(),kEe=(r,e,t)=>{let i=new DY(r,t),n=new DY(e,t);return i.compare(n)||i.compareBuild(n)};kY.exports=kEe});var FY=y((pet,RY)=>{var REe=my(),FEe=(r,e)=>r.sort((t,i)=>REe(t,i,e));RY.exports=FEe});var TY=y((det,NY)=>{var NEe=my(),TEe=(r,e)=>r.sort((t,i)=>NEe(i,t,e));NY.exports=TEe});var Md=y((Cet,LY)=>{var LEe=os(),OEe=(r,e,t)=>LEe(r,e,t)>0;LY.exports=OEe});var Ey=y((met,OY)=>{var MEe=os(),UEe=(r,e,t)=>MEe(r,e,t)<0;OY.exports=UEe});var ax=y((Eet,MY)=>{var KEe=os(),HEe=(r,e,t)=>KEe(r,e,t)!==0;MY.exports=HEe});var Iy=y((Iet,UY)=>{var GEe=os(),YEe=(r,e,t)=>GEe(r,e,t)>=0;UY.exports=YEe});var yy=y((yet,KY)=>{var jEe=os(),qEe=(r,e,t)=>jEe(r,e,t)<=0;KY.exports=qEe});var Ax=y((wet,HY)=>{var JEe=Cy(),WEe=ax(),zEe=Md(),VEe=Iy(),XEe=Ey(),_Ee=yy(),ZEe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return JEe(r,t,i);case"!=":return WEe(r,t,i);case">":return zEe(r,t,i);case">=":return VEe(r,t,i);case"<":return XEe(r,t,i);case"<=":return _Ee(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};HY.exports=ZEe});var YY=y((Bet,GY)=>{var $Ee=Oi(),eIe=vc(),{re:wy,t:By}=Sc(),tIe=(r,e)=>{if(r instanceof $Ee)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(wy[By.COERCE]);else{let i;for(;(i=wy[By.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),wy[By.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;wy[By.COERCERTL].lastIndex=-1}return t===null?null:eIe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};GY.exports=tIe});var qY=y((bet,jY)=>{"use strict";jY.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Ud=y((Qet,JY)=>{"use strict";JY.exports=Ht;Ht.Node=xc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var sIe=Ud(),Pc=Symbol("max"),Pa=Symbol("length"),uf=Symbol("lengthCalculator"),Hd=Symbol("allowStale"),Dc=Symbol("maxAge"),xa=Symbol("dispose"),WY=Symbol("noDisposeOnSet"),Ii=Symbol("lruList"),zs=Symbol("cache"),VY=Symbol("updateAgeOnGet"),lx=()=>1,ux=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[Pc]=e.max||1/0,i=e.length||lx;if(this[uf]=typeof i!="function"?lx:i,this[Hd]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Dc]=e.maxAge||0,this[xa]=e.dispose,this[WY]=e.noDisposeOnSet||!1,this[VY]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[Pc]=e||1/0,Kd(this)}get max(){return this[Pc]}set allowStale(e){this[Hd]=!!e}get allowStale(){return this[Hd]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Dc]=e,Kd(this)}get maxAge(){return this[Dc]}set lengthCalculator(e){typeof e!="function"&&(e=lx),e!==this[uf]&&(this[uf]=e,this[Pa]=0,this[Ii].forEach(t=>{t.length=this[uf](t.value,t.key),this[Pa]+=t.length})),Kd(this)}get lengthCalculator(){return this[uf]}get length(){return this[Pa]}get itemCount(){return this[Ii].length}rforEach(e,t){t=t||this;for(let i=this[Ii].tail;i!==null;){let n=i.prev;zY(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[Ii].head;i!==null;){let n=i.next;zY(this,e,i,t),i=n}}keys(){return this[Ii].toArray().map(e=>e.key)}values(){return this[Ii].toArray().map(e=>e.value)}reset(){this[xa]&&this[Ii]&&this[Ii].length&&this[Ii].forEach(e=>this[xa](e.key,e.value)),this[zs]=new Map,this[Ii]=new sIe,this[Pa]=0}dump(){return this[Ii].map(e=>by(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ii]}set(e,t,i){if(i=i||this[Dc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[uf](t,e);if(this[zs].has(e)){if(s>this[Pc])return gf(this,this[zs].get(e)),!1;let l=this[zs].get(e).value;return this[xa]&&(this[WY]||this[xa](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Pa]+=s-l.length,l.length=s,this.get(e),Kd(this),!0}let o=new gx(e,t,s,n,i);return o.length>this[Pc]?(this[xa]&&this[xa](e,t),!1):(this[Pa]+=o.length,this[Ii].unshift(o),this[zs].set(e,this[Ii].head),Kd(this),!0)}has(e){if(!this[zs].has(e))return!1;let t=this[zs].get(e).value;return!by(this,t)}get(e){return cx(this,e,!0)}peek(e){return cx(this,e,!1)}pop(){let e=this[Ii].tail;return e?(gf(this,e),e.value):null}del(e){gf(this,this[zs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[zs].forEach((e,t)=>cx(this,t,!1))}},cx=(r,e,t)=>{let i=r[zs].get(e);if(i){let n=i.value;if(by(r,n)){if(gf(r,i),!r[Hd])return}else t&&(r[VY]&&(i.value.now=Date.now()),r[Ii].unshiftNode(i));return n.value}},by=(r,e)=>{if(!e||!e.maxAge&&!r[Dc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[Dc]&&t>r[Dc]},Kd=r=>{if(r[Pa]>r[Pc])for(let e=r[Ii].tail;r[Pa]>r[Pc]&&e!==null;){let t=e.prev;gf(r,e),e=t}},gf=(r,e)=>{if(e){let t=e.value;r[xa]&&r[xa](t.key,t.value),r[Pa]-=t.length,r[zs].delete(t.key),r[Ii].removeNode(e)}},gx=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},zY=(r,e,t,i)=>{let n=t.value;by(r,n)&&(gf(r,t),r[Hd]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};XY.exports=ux});var as=y((xet,tj)=>{var kc=class{constructor(e,t){if(t=aIe(t),e instanceof kc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new kc(e.raw,t);if(e instanceof fx)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!$Y(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&gIe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=ZY.get(i);if(n)return n;let s=this.options.loose,o=s?Mi[Qi.HYPHENRANGELOOSE]:Mi[Qi.HYPHENRANGE];e=e.replace(o,wIe(this.options.includePrerelease)),jr("hyphen replace",e),e=e.replace(Mi[Qi.COMPARATORTRIM],lIe),jr("comparator trim",e,Mi[Qi.COMPARATORTRIM]),e=e.replace(Mi[Qi.TILDETRIM],cIe),e=e.replace(Mi[Qi.CARETTRIM],uIe),e=e.split(/\s+/).join(" ");let a=s?Mi[Qi.COMPARATORLOOSE]:Mi[Qi.COMPARATOR],l=e.split(" ").map(f=>fIe(f,this.options)).join(" ").split(/\s+/).map(f=>yIe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new fx(f,this.options)),c=l.length,u=new Map;for(let f of l){if($Y(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return ZY.set(i,g),g}intersects(e,t){if(!(e instanceof kc))throw new TypeError("a Range is required");return this.set.some(i=>ej(i,t)&&e.set.some(n=>ej(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new AIe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",gIe=r=>r.value==="",ej=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},fIe=(r,e)=>(jr("comp",r,e),r=dIe(r,e),jr("caret",r),r=hIe(r,e),jr("tildes",r),r=mIe(r,e),jr("xrange",r),r=IIe(r,e),jr("stars",r),r),Xi=r=>!r||r.toLowerCase()==="x"||r==="*",hIe=(r,e)=>r.trim().split(/\s+/).map(t=>pIe(t,e)).join(" "),pIe=(r,e)=>{let t=e.loose?Mi[Qi.TILDELOOSE]:Mi[Qi.TILDE];return r.replace(t,(i,n,s,o,a)=>{jr("tilde",r,i,n,s,o,a);let l;return Xi(n)?l="":Xi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Xi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(jr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,jr("tilde return",l),l})},dIe=(r,e)=>r.trim().split(/\s+/).map(t=>CIe(t,e)).join(" "),CIe=(r,e)=>{jr("caret",r,e);let t=e.loose?Mi[Qi.CARETLOOSE]:Mi[Qi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{jr("caret",r,n,s,o,a,l);let c;return Xi(s)?c="":Xi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Xi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(jr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(jr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),jr("caret return",c),c})},mIe=(r,e)=>(jr("replaceXRanges",r,e),r.split(/\s+/).map(t=>EIe(t,e)).join(" ")),EIe=(r,e)=>{r=r.trim();let t=e.loose?Mi[Qi.XRANGELOOSE]:Mi[Qi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{jr("xRange",r,i,n,s,o,a,l);let c=Xi(s),u=c||Xi(o),g=u||Xi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),jr("xRange return",i),i})},IIe=(r,e)=>(jr("replaceStars",r,e),r.trim().replace(Mi[Qi.STAR],"")),yIe=(r,e)=>(jr("replaceGTE0",r,e),r.trim().replace(Mi[e.includePrerelease?Qi.GTE0PRE:Qi.GTE0],"")),wIe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Xi(i)?t="":Xi(n)?t=`>=${i}.0.0${r?"-0":""}`:Xi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Xi(c)?l="":Xi(u)?l=`<${+c+1}.0.0-0`:Xi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),BIe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Gd=y((Pet,oj)=>{var Yd=Symbol("SemVer ANY"),ff=class{static get ANY(){return Yd}constructor(e,t){if(t=bIe(t),e instanceof ff){if(e.loose===!!t.loose)return e;e=e.value}px("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Yd?this.value="":this.value=this.operator+this.semver.version,px("comp",this)}parse(e){let t=this.options.loose?rj[ij.COMPARATORLOOSE]:rj[ij.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new nj(i[2],this.options.loose):this.semver=Yd}toString(){return this.value}test(e){if(px("Comparator.test",e,this.options.loose),this.semver===Yd||e===Yd)return!0;if(typeof e=="string")try{e=new nj(e,this.options)}catch{return!1}return hx(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof ff))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new sj(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new sj(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=hx(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=hx(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};oj.exports=ff;var bIe=Ld(),{re:rj,t:ij}=Sc(),hx=Ax(),px=Td(),nj=Oi(),sj=as()});var jd=y((Det,aj)=>{var QIe=as(),SIe=(r,e,t)=>{try{e=new QIe(e,t)}catch{return!1}return e.test(r)};aj.exports=SIe});var lj=y((ket,Aj)=>{var vIe=as(),xIe=(r,e)=>new vIe(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));Aj.exports=xIe});var uj=y((Ret,cj)=>{var PIe=Oi(),DIe=as(),kIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new DIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new PIe(i,t))}),i};cj.exports=kIe});var fj=y((Fet,gj)=>{var RIe=Oi(),FIe=as(),NIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new FIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new RIe(i,t))}),i};gj.exports=NIe});var dj=y((Net,pj)=>{var dx=Oi(),TIe=as(),hj=Md(),LIe=(r,e)=>{r=new TIe(r,e);let t=new dx("0.0.0");if(r.test(t)||(t=new dx("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new dx(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||hj(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||hj(t,s))&&(t=s)}return t&&r.test(t)?t:null};pj.exports=LIe});var mj=y((Tet,Cj)=>{var OIe=as(),MIe=(r,e)=>{try{return new OIe(r,e).range||"*"}catch{return null}};Cj.exports=MIe});var Qy=y((Let,wj)=>{var UIe=Oi(),yj=Gd(),{ANY:KIe}=yj,HIe=as(),GIe=jd(),Ej=Md(),Ij=Ey(),YIe=yy(),jIe=Iy(),qIe=(r,e,t,i)=>{r=new UIe(r,i),e=new HIe(e,i);let n,s,o,a,l;switch(t){case">":n=Ej,s=YIe,o=Ij,a=">",l=">=";break;case"<":n=Ij,s=jIe,o=Ej,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(GIe(r,e,i))return!1;for(let c=0;c{h.semver===KIe&&(h=new yj(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};wj.exports=qIe});var bj=y((Oet,Bj)=>{var JIe=Qy(),WIe=(r,e,t)=>JIe(r,e,">",t);Bj.exports=WIe});var Sj=y((Met,Qj)=>{var zIe=Qy(),VIe=(r,e,t)=>zIe(r,e,"<",t);Qj.exports=VIe});var Pj=y((Uet,xj)=>{var vj=as(),XIe=(r,e,t)=>(r=new vj(r,t),e=new vj(e,t),r.intersects(e));xj.exports=XIe});var kj=y((Ket,Dj)=>{var _Ie=jd(),ZIe=os();Dj.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>ZIe(u,g,t));for(let u of o)_Ie(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var Rj=as(),Sy=Gd(),{ANY:Cx}=Sy,qd=jd(),mx=os(),$Ie=(r,e,t={})=>{if(r===e)return!0;r=new Rj(r,t),e=new Rj(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=eye(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},eye=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Cx){if(e.length===1&&e[0].semver===Cx)return!0;t.includePrerelease?r=[new Sy(">=0.0.0-0")]:r=[new Sy(">=0.0.0")]}if(e.length===1&&e[0].semver===Cx){if(t.includePrerelease)return!0;e=[new Sy(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=Fj(n,h,t):h.operator==="<"||h.operator==="<="?s=Nj(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=mx(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!qd(h,String(n),t)||s&&!qd(h,String(s),t))return null;for(let p of e)if(!qd(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=Fj(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!qd(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=Nj(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!qd(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},Fj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},Nj=(r,e,t)=>{if(!r)return e;let i=mx(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};Tj.exports=$Ie});var $r=y((Get,Oj)=>{var Ex=Sc();Oj.exports={re:Ex.re,src:Ex.src,tokens:Ex.t,SEMVER_SPEC_VERSION:Nd().SEMVER_SPEC_VERSION,SemVer:Oi(),compareIdentifiers:hy().compareIdentifiers,rcompareIdentifiers:hy().rcompareIdentifiers,parse:vc(),valid:aY(),clean:lY(),inc:uY(),diff:CY(),major:EY(),minor:yY(),patch:BY(),prerelease:QY(),compare:os(),rcompare:vY(),compareLoose:PY(),compareBuild:my(),sort:FY(),rsort:TY(),gt:Md(),lt:Ey(),eq:Cy(),neq:ax(),gte:Iy(),lte:yy(),cmp:Ax(),coerce:YY(),Comparator:Gd(),Range:as(),satisfies:jd(),toComparators:lj(),maxSatisfying:uj(),minSatisfying:fj(),minVersion:dj(),validRange:mj(),outside:Qy(),gtr:bj(),ltr:Sj(),intersects:Pj(),simplifyRange:kj(),subset:Lj()}});var Ix=y(vy=>{"use strict";Object.defineProperty(vy,"__esModule",{value:!0});vy.VERSION=void 0;vy.VERSION="9.1.0"});var Gt=y((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof xy=="object"&&xy.exports?xy.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:Mj,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var w={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(w,"global");break;case"i":o(w,"ignoreCase");break;case"m":o(w,"multiLine");break;case"u":o(w,"unicode");break;case"y":o(w,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:w,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var w=this.disjunction();return this.consumeChar(")"),{type:C,value:w,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,w=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(w),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` +`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` +`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var w=this.classAtom(),B=w.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(w){C.push(w)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` +`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var w=p[C];p.hasOwnProperty(C)&&(w.type!==void 0?this.visit(w):Array.isArray(w)&&w.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var ky=y(hf=>{"use strict";Object.defineProperty(hf,"__esModule",{value:!0});hf.clearRegExpParserCache=hf.getRegExpAst=void 0;var tye=Py(),Dy={},rye=new tye.RegExpParser;function iye(r){var e=r.toString();if(Dy.hasOwnProperty(e))return Dy[e];var t=rye.pattern(e);return Dy[e]=t,t}hf.getRegExpAst=iye;function nye(){Dy={}}hf.clearRegExpParserCache=nye});var Yj=y(dn=>{"use strict";var sye=dn&&dn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.canMatchCharCode=dn.firstCharOptimizedIndices=dn.getOptimizedStartCodesIndices=dn.failedOptimizationPrefixMsg=void 0;var Kj=Py(),As=Gt(),Hj=ky(),Da=wx(),Gj="Complement Sets are not supported for first char optimization";dn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: +`;function oye(r,e){e===void 0&&(e=!1);try{var t=(0,Hj.getRegExpAst)(r),i=Fy(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===Gj)e&&(0,As.PRINT_WARNING)(""+dn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > +`)+` Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,As.PRINT_ERROR)(dn.failedOptimizationPrefixMsg+` +`+(" Failed parsing: < "+r.toString()+` > +`)+(" Using the regexp-to-ast library version: "+Kj.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}dn.getOptimizedStartCodesIndices=oye;function Fy(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=Da.minOptimizationVal)for(var f=u.from>=Da.minOptimizationVal?u.from:Da.minOptimizationVal,h=u.to,p=(0,Da.charCodeToOptimizedIndex)(f),C=(0,Da.charCodeToOptimizedIndex)(h),w=p;w<=C;w++)e[w]=w}}});break;case"Group":Fy(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&yx(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,As.values)(e)}dn.firstCharOptimizedIndices=Fy;function Ry(r,e,t){var i=(0,Da.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&aye(r,e)}function aye(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,Da.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,Da.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function Uj(r,e){return(0,As.find)(r.value,function(t){if(typeof t=="number")return(0,As.contains)(e,t);var i=t;return(0,As.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function yx(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,As.isArray)(r.value)?(0,As.every)(r.value,yx):yx(r.value):!1}var Aye=function(r){sye(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,As.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?Uj(t,this.targetCharCodes)===void 0&&(this.found=!0):Uj(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(Kj.BaseRegExpVisitor);function lye(r,e){if(e instanceof RegExp){var t=(0,Hj.getRegExpAst)(e),i=new Aye(r);return i.visit(t),i.found}else return(0,As.find)(e,function(n){return(0,As.contains)(r,n.charCodeAt(0))})!==void 0}dn.canMatchCharCode=lye});var wx=y(Je=>{"use strict";var jj=Je&&Je.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Je,"__esModule",{value:!0});Je.charCodeToOptimizedIndex=Je.minOptimizationVal=Je.buildLineBreakIssueMessage=Je.LineTerminatorOptimizedTester=Je.isShortPattern=Je.isCustomPattern=Je.cloneEmptyGroups=Je.performWarningRuntimeChecks=Je.performRuntimeChecks=Je.addStickyFlag=Je.addStartOfInput=Je.findUnreachablePatterns=Je.findModesThatDoNotExist=Je.findInvalidGroupType=Je.findDuplicatePatterns=Je.findUnsupportedFlags=Je.findStartOfInputAnchor=Je.findEmptyMatchRegExps=Je.findEndOfInputAnchor=Je.findInvalidPatterns=Je.findMissingPatterns=Je.validatePatterns=Je.analyzeTokenTypes=Je.enableSticky=Je.disableSticky=Je.SUPPORT_STICKY=Je.MODES=Je.DEFAULT_MODE=void 0;var qj=Py(),ir=Jd(),Se=Gt(),pf=Yj(),Jj=ky(),Do="PATTERN";Je.DEFAULT_MODE="defaultMode";Je.MODES="modes";Je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function cye(){Je.SUPPORT_STICKY=!1}Je.disableSticky=cye;function uye(){Je.SUPPORT_STICKY=!0}Je.enableSticky=uye;function gye(r,e){e=(0,Se.defaults)(e,{useSticky:Je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){wye()});var i;t("Reject Lexer.NA",function(){i=(0,Se.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,Se.map)(i,function(v){var D=v[Do];if((0,Se.isRegExp)(D)){var T=D.source;return T.length===1&&T!=="^"&&T!=="$"&&T!=="."&&!D.ignoreCase?T:T.length===2&&T[0]==="\\"&&!(0,Se.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],T[1])?T[1]:e.useSticky?Qx(D):bx(D)}else{if((0,Se.isFunction)(D))return n=!0,{exec:D};if((0,Se.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Qx(j):bx(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,Se.map)(i,function(v){return v.tokenTypeIdx}),a=(0,Se.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,Se.isString)(D))return D;if((0,Se.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,Se.map)(i,function(v){var D=v.LONGER_ALT;if(D){var T=(0,Se.isArray)(D)?(0,Se.map)(D,function(H){return(0,Se.indexOf)(i,H)}):[(0,Se.indexOf)(i,D)];return T}}),c=(0,Se.map)(i,function(v){return v.PUSH_MODE}),u=(0,Se.map)(i,function(v){return(0,Se.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=oq(e.lineTerminatorCharacters);g=(0,Se.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Se.map)(i,function(D){if((0,Se.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(nq(D,v)===!1)return(0,pf.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,Se.map)(i,vx),h=(0,Se.map)(s,iq),p=(0,Se.reduce)(i,function(v,D){var T=D.GROUP;return(0,Se.isString)(T)&&T!==ir.Lexer.SKIPPED&&(v[T]=[]),v},{}),C=(0,Se.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var w=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,Se.reduce)(i,function(v,D,T){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Sx(H);Bx(v,j,C[T])}else if((0,Se.isArray)(D.START_CHARS_HINT)){var $;(0,Se.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=Sx(Z);$!==A&&($=A,Bx(v,A,C[T]))})}else if((0,Se.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)w=!1,e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,pf.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,Se.isEmpty)(V)&&(w=!1),(0,Se.forEach)(V,function(W){Bx(v,W,C[T])})}else e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+pf.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),w=!1;return v},[])}),t("ArrayPacking",function(){B=(0,Se.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:w}}Je.analyzeTokenTypes=gye;function fye(r,e){var t=[],i=Wj(r);t=t.concat(i.errors);var n=zj(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(hye(s)),t=t.concat(eq(s)),t=t.concat(tq(s,e)),t=t.concat(rq(s)),t}Je.validatePatterns=fye;function hye(r){var e=[],t=(0,Se.filter)(r,function(i){return(0,Se.isRegExp)(i[Do])});return e=e.concat(Vj(t)),e=e.concat(_j(t)),e=e.concat(Zj(t)),e=e.concat($j(t)),e=e.concat(Xj(t)),e}function Wj(r){var e=(0,Se.filter)(r,function(n){return!(0,Se.has)(n,Do)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findMissingPatterns=Wj;function zj(r){var e=(0,Se.filter)(r,function(n){var s=n[Do];return!(0,Se.isRegExp)(s)&&!(0,Se.isFunction)(s)&&!(0,Se.has)(s,"exec")&&!(0,Se.isString)(s)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findInvalidPatterns=zj;var pye=/[^\\][\$]/;function Vj(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return pye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findEndOfInputAnchor=Vj;function Xj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Je.findEmptyMatchRegExps=Xj;var dye=/[^\\[][\^]|^\^/;function _j(r){var e=function(n){jj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(qj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Jj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return dye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findStartOfInputAnchor=_j;function Zj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Je.findUnsupportedFlags=Zj;function $j(r){var e=[],t=(0,Se.map)(r,function(s){return(0,Se.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Se.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,Se.compact)(t);var i=(0,Se.filter)(t,function(s){return s.length>1}),n=(0,Se.map)(i,function(s){var o=(0,Se.map)(s,function(l){return l.name}),a=(0,Se.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Je.findDuplicatePatterns=$j;function eq(r){var e=(0,Se.filter)(r,function(i){if(!(0,Se.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,Se.isString)(n)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Je.findInvalidGroupType=eq;function tq(r,e){var t=(0,Se.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,Se.contains)(e,n.PUSH_MODE)}),i=(0,Se.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Je.findModesThatDoNotExist=tq;function rq(r){var e=[],t=(0,Se.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,Se.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Se.isRegExp)(o)&&mye(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Se.forEach)(r,function(i,n){(0,Se.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Je.findUnreachablePatterns=rq;function Cye(r,e){if((0,Se.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,Se.isFunction)(e))return e(r,0,[],{});if((0,Se.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function mye(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Se.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function bx(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Je.addStartOfInput=bx;function Qx(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Je.addStickyFlag=Qx;function Eye(r,e,t){var i=[];return(0,Se.has)(r,Je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.DEFAULT_MODE+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Se.has)(r,Je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.MODES+`> property in its definition +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Se.has)(r,Je.MODES)&&(0,Se.has)(r,Je.DEFAULT_MODE)&&!(0,Se.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Je.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist +`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Se.has)(r,Je.MODES)&&(0,Se.forEach)(r.modes,function(n,s){(0,Se.forEach)(n,function(o,a){(0,Se.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> +`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Je.performRuntimeChecks=Eye;function Iye(r,e,t){var i=[],n=!1,s=(0,Se.compact)((0,Se.flatten)((0,Se.mapValues)(r.modes,function(l){return l}))),o=(0,Se.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=oq(t);return e&&(0,Se.forEach)(o,function(l){var c=nq(l,a);if(c!==!1){var u=sq(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Se.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,pf.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Je.performWarningRuntimeChecks=Iye;function yye(r){var e={},t=(0,Se.keys)(r);return(0,Se.forEach)(t,function(i){var n=r[i];if((0,Se.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Je.cloneEmptyGroups=yye;function vx(r){var e=r.PATTERN;if((0,Se.isRegExp)(e))return!1;if((0,Se.isFunction)(e))return!0;if((0,Se.has)(e,"exec"))return!0;if((0,Se.isString)(e))return!1;throw Error("non exhaustive match")}Je.isCustomPattern=vx;function iq(r){return(0,Se.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Je.isShortPattern=iq;Je.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+r.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Je.buildLineBreakIssueMessage=sq;function oq(r){var e=(0,Se.map)(r,function(t){return(0,Se.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function Bx(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Je.minOptimizationVal=256;var Ny=[];function Sx(r){return r255?255+~~(r/255):r}}});var df=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var ei=Gt();function Bye(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Bye;function bye(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=bye;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Qye(r){var e=aq(r);Aq(e),cq(e),lq(e),(0,ei.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Qye;function aq(r){for(var e=(0,ei.cloneArr)(r),t=r,i=!0;i;){t=(0,ei.compact)((0,ei.flatten)((0,ei.map)(t,function(s){return s.CATEGORIES})));var n=(0,ei.difference)(t,e);e=e.concat(n),(0,ei.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=aq;function Aq(r){(0,ei.forEach)(r,function(e){uq(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),xx(e)&&!(0,ei.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),xx(e)||(e.CATEGORIES=[]),gq(e)||(e.categoryMatches=[]),fq(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=Aq;function lq(r){(0,ei.forEach)(r,function(e){e.categoryMatches=[],(0,ei.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=lq;function cq(r){(0,ei.forEach)(r,function(e){Px([],e)})}Nt.assignCategoriesMapProp=cq;function Px(r,e){(0,ei.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,ei.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,ei.contains)(i,t)||Px(i,t)})}Nt.singleAssignCategoriesToksMap=Px;function uq(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=uq;function xx(r){return(0,ei.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=xx;function gq(r){return(0,ei.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=gq;function fq(r){return(0,ei.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=fq;function Sye(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.isTokenType=Sye});var Dx=y(Ty=>{"use strict";Object.defineProperty(Ty,"__esModule",{value:!0});Ty.defaultLexerErrorProvider=void 0;Ty.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var Jd=y(Rc=>{"use strict";Object.defineProperty(Rc,"__esModule",{value:!0});Rc.Lexer=Rc.LexerDefinitionErrorType=void 0;var Vs=wx(),nr=Gt(),vye=df(),xye=Dx(),Pye=ky(),Dye;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(Dye=Rc.LexerDefinitionErrorType||(Rc.LexerDefinitionErrorType={}));var Wd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:xye.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(Wd);var kye=function(){function r(e,t){var i=this;if(t===void 0&&(t=Wd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(Wd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===Wd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Vs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===Wd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[Vs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[Vs.DEFAULT_MODE]=Vs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Vs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,vye.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Vs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Vs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,Pye.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,w,B,v,D,T=e,H=T.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,Vs.cloneEmptyGroups)(this.emptyGroups),_=this.trackStartLines,L=this.config.lineTerminatorsPattern,N=0,ue=[],we=[],Te=[],Pe=[];Object.freeze(Pe);var Le=void 0;function se(){return ue}function Ae(dr){var Bi=(0,Vs.charCodeToOptimizedIndex)(dr),_n=we[Bi];return _n===void 0?Pe:_n}var be=function(dr){if(Te.length===1&&dr.tokenType.PUSH_MODE===void 0){var Bi=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(dr);Z.push({offset:dr.startOffset,line:dr.startLine!==void 0?dr.startLine:void 0,column:dr.startColumn!==void 0?dr.startColumn:void 0,length:dr.image.length,message:Bi})}else{Te.pop();var _n=(0,nr.last)(Te);ue=i.patternIdxToConfig[_n],we=i.charCodeToPatternIdxToConfig[_n],N=ue.length;var pa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;we&&pa?Le=Ae:Le=se}};function fe(dr){Te.push(dr),we=this.charCodeToPatternIdxToConfig[dr],ue=this.patternIdxToConfig[dr],N=ue.length,N=ue.length;var Bi=this.canModeBeOptimized[dr]&&this.config.safeMode===!1;we&&Bi?Le=Ae:Le=se}fe.call(this,t);for(var le;jc.length){c=a,u=g,le=tt;break}}}break}}if(c!==null){if(f=c.length,h=le.group,h!==void 0&&(p=le.tokenTypeIdx,C=this.createTokenInstance(c,j,p,le.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),_===!0&&le.canLineTerminator===!0){var It=0,Ur=void 0,oi=void 0;L.lastIndex=0;do Ur=L.test(c),Ur===!0&&(oi=L.lastIndex-1,It++);while(Ur===!0);It!==0&&(A=A+It,ae=f-oi,this.updateTokenEndLineColumnLocation(C,h,oi,It,A,ae,f))}this.handleModes(le,be,fe,C)}else{for(var pi=j,pr=A,di=ae,ai=!1;!ai&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();Rc.Lexer=kye});var HA=y(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.tokenMatcher=Si.createTokenInstance=Si.EOF=Si.createToken=Si.hasTokenLabel=Si.tokenName=Si.tokenLabel=void 0;var Xs=Gt(),Rye=Jd(),kx=df();function Fye(r){return wq(r)?r.LABEL:r.name}Si.tokenLabel=Fye;function Nye(r){return r.name}Si.tokenName=Nye;function wq(r){return(0,Xs.isString)(r.LABEL)&&r.LABEL!==""}Si.hasTokenLabel=wq;var Tye="parent",hq="categories",pq="label",dq="group",Cq="push_mode",mq="pop_mode",Eq="longer_alt",Iq="line_breaks",yq="start_chars_hint";function Bq(r){return Lye(r)}Si.createToken=Bq;function Lye(r){var e=r.pattern,t={};if(t.name=r.name,(0,Xs.isUndefined)(e)||(t.PATTERN=e),(0,Xs.has)(r,Tye))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Xs.has)(r,hq)&&(t.CATEGORIES=r[hq]),(0,kx.augmentTokenTypes)([t]),(0,Xs.has)(r,pq)&&(t.LABEL=r[pq]),(0,Xs.has)(r,dq)&&(t.GROUP=r[dq]),(0,Xs.has)(r,mq)&&(t.POP_MODE=r[mq]),(0,Xs.has)(r,Cq)&&(t.PUSH_MODE=r[Cq]),(0,Xs.has)(r,Eq)&&(t.LONGER_ALT=r[Eq]),(0,Xs.has)(r,Iq)&&(t.LINE_BREAKS=r[Iq]),(0,Xs.has)(r,yq)&&(t.START_CHARS_HINT=r[yq]),t}Si.EOF=Bq({name:"EOF",pattern:Rye.Lexer.NA});(0,kx.augmentTokenTypes)([Si.EOF]);function Oye(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Si.createTokenInstance=Oye;function Mye(r,e){return(0,kx.tokenStructuredMatcher)(r,e)}Si.tokenMatcher=Mye});var Cn=y(Wt=>{"use strict";var ka=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var lr=Gt(),Uye=HA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,lr.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=ko;var bq=function(r){ka(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);Wt.NonTerminal=bq;var Qq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Rule=Qq;var Sq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Alternative=Sq;var vq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Option=vq;var xq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatory=xq;var Pq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatoryWithSeparator=Pq;var Dq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Repetition=Dq;var kq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionWithSeparator=kq;var Rq=function(r){ka(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);Wt.Alternation=Rq;var Ly=function(){function r(e){this.idx=1,(0,lr.assign)(this,(0,lr.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=Ly;function Kye(r){return(0,lr.map)(r,zd)}Wt.serializeGrammar=Kye;function zd(r){function e(s){return(0,lr.map)(s,zd)}if(r instanceof bq){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,lr.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof Sq)return{type:"Alternative",definition:e(r.definition)};if(r instanceof vq)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof xq)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof Pq)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof kq)return{type:"RepetitionWithSeparator",idx:r.idx,separator:zd(new Ly({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof Dq)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof Rq)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof Ly){var i={type:"Terminal",name:r.terminalType.name,label:(0,Uye.tokenLabel)(r.terminalType),idx:r.idx};(0,lr.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,lr.isRegExp)(n)?n.source:n),i}else{if(r instanceof Qq)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=zd});var My=y(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0});Oy.RestWalker=void 0;var Rx=Gt(),mn=Cn(),Hye=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Rx.forEach)(e.definition,function(n,s){var o=(0,Rx.drop)(e.definition,s+1);if(n instanceof mn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof mn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof mn.Alternative)i.walkFlat(n,o,t);else if(n instanceof mn.Option)i.walkOption(n,o,t);else if(n instanceof mn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof mn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof mn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof mn.Repetition)i.walkMany(n,o,t);else if(n instanceof mn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Fq(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Rx.forEach)(e.definition,function(o){var a=new mn.Alternative({definition:[o]});n.walk(a,s)})},r}();Oy.RestWalker=Hye;function Fq(r,e,t){var i=[new mn.Option({definition:[new mn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Cf=y(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});Uy.GAstVisitor=void 0;var Ro=Cn(),Gye=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();Uy.GAstVisitor=Gye});var Xd=y(Ui=>{"use strict";var Yye=Ui&&Ui.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ui,"__esModule",{value:!0});Ui.collectMethods=Ui.DslMethodsCollectorVisitor=Ui.getProductionDslName=Ui.isBranchingProd=Ui.isOptionalProd=Ui.isSequenceProd=void 0;var Vd=Gt(),Qr=Cn(),jye=Cf();function qye(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Ui.isSequenceProd=qye;function Fx(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Vd.some)(r.definition,function(i){return Fx(i,e)}):r instanceof Qr.NonTerminal&&(0,Vd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Vd.every)(r.definition,function(i){return Fx(i,e)})):!1}Ui.isOptionalProd=Fx;function Jye(r){return r instanceof Qr.Alternation}Ui.isBranchingProd=Jye;function Wye(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Ui.getProductionDslName=Wye;var Nq=function(r){Yye(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Vd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(jye.GAstVisitor);Ui.DslMethodsCollectorVisitor=Nq;var Ky=new Nq;function zye(r){Ky.reset(),r.accept(Ky);var e=Ky.dslMethods;return Ky.reset(),e}Ui.collectMethods=zye});var Tx=y(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var Hy=Gt(),Tq=Cn(),Nx=Xd();function Gy(r){if(r instanceof Tq.NonTerminal)return Gy(r.referencedRule);if(r instanceof Tq.Terminal)return Mq(r);if((0,Nx.isSequenceProd)(r))return Lq(r);if((0,Nx.isBranchingProd)(r))return Oq(r);throw Error("non exhaustive match")}Fo.first=Gy;function Lq(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Nx.isOptionalProd)(s),e=e.concat(Gy(s)),i=i+1,n=t.length>i;return(0,Hy.uniq)(e)}Fo.firstForSequence=Lq;function Oq(r){var e=(0,Hy.map)(r.definition,function(t){return Gy(t)});return(0,Hy.uniq)((0,Hy.flatten)(e))}Fo.firstForBranching=Oq;function Mq(r){return[r.terminalType]}Fo.firstForTerminal=Mq});var Lx=y(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.IN=void 0;Yy.IN="_~IN~_"});var Yq=y(ls=>{"use strict";var Vye=ls&&ls.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(ls,"__esModule",{value:!0});ls.buildInProdFollowPrefix=ls.buildBetweenProdsFollowPrefix=ls.computeAllProdsFollows=ls.ResyncFollowsWalker=void 0;var Xye=My(),_ye=Tx(),Uq=Gt(),Kq=Lx(),Zye=Cn(),Hq=function(r){Vye(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Gq(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new Zye.Alternative({definition:o}),l=(0,_ye.first)(a);this.follows[s]=l},e}(Xye.RestWalker);ls.ResyncFollowsWalker=Hq;function $ye(r){var e={};return(0,Uq.forEach)(r,function(t){var i=new Hq(t).startWalking();(0,Uq.assign)(e,i)}),e}ls.computeAllProdsFollows=$ye;function Gq(r,e){return r.name+e+Kq.IN}ls.buildBetweenProdsFollowPrefix=Gq;function ewe(r){var e=r.terminalType.name;return e+r.idx+Kq.IN}ls.buildInProdFollowPrefix=ewe});var _d=y(Ra=>{"use strict";Object.defineProperty(Ra,"__esModule",{value:!0});Ra.defaultGrammarValidatorErrorProvider=Ra.defaultGrammarResolverErrorProvider=Ra.defaultParserErrorProvider=void 0;var mf=HA(),twe=Gt(),_s=Gt(),Ox=Cn(),jq=Xd();Ra.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,mf.hasTokenLabel)(e),o=s?"--> "+(0,mf.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,_s.first)(t).image,l=` +but found: '`+a+"'";if(n)return o+n+l;var c=(0,_s.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,_s.map)(c,function(h){return"["+(0,_s.map)(h,function(p){return(0,mf.tokenLabel)(p)}).join(", ")+"]"}),g=(0,_s.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: +`+g.join(` +`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,_s.first)(t).image,a=` +but found: '`+o+"'";if(i)return s+i+a;var l=(0,_s.map)(e,function(u){return"["+(0,_s.map)(u,function(g){return(0,mf.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ra.defaultParserErrorProvider);Ra.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+r.name+"<-";return t}};Ra.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Ox.Terminal?u.terminalType.name:u instanceof Ox.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,_s.first)(e),s=n.idx,o=(0,jq.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` +`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,mf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,jq.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+r.topLevelRule.name+`> Rule. + has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=twe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+i+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Ox.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Wq=y(GA=>{"use strict";var rwe=GA&&GA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(GA,"__esModule",{value:!0});GA.GastRefResolverVisitor=GA.resolveGrammar=void 0;var iwe=Hn(),qq=Gt(),nwe=Cf();function swe(r,e){var t=new Jq(r,e);return t.resolveRefs(),t.errors}GA.resolveGrammar=swe;var Jq=function(r){rwe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,qq.forEach)((0,qq.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:iwe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(nwe.GAstVisitor);GA.GastRefResolverVisitor=Jq});var $d=y(Lr=>{"use strict";var Fc=Lr&&Lr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Lr,"__esModule",{value:!0});Lr.nextPossibleTokensAfter=Lr.possiblePathsFrom=Lr.NextTerminalAfterAtLeastOneSepWalker=Lr.NextTerminalAfterAtLeastOneWalker=Lr.NextTerminalAfterManySepWalker=Lr.NextTerminalAfterManyWalker=Lr.AbstractNextTerminalAfterProductionWalker=Lr.NextAfterTokenWalker=Lr.AbstractNextPossibleTokensWalker=void 0;var zq=My(),Ut=Gt(),owe=Tx(),Dt=Cn(),Vq=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Ut.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Ut.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Ut.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(zq.RestWalker);Lr.AbstractNextPossibleTokensWalker=Vq;var awe=function(r){Fc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Dt.Alternative({definition:s});this.possibleTokTypes=(0,owe.first)(o),this.found=!0}},e}(Vq);Lr.NextAfterTokenWalker=awe;var Zd=function(r){Fc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(zq.RestWalker);Lr.AbstractNextTerminalAfterProductionWalker=Zd;var Awe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManyWalker=Awe;var lwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterManySepWalker=lwe;var cwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneWalker=cwe;var uwe=function(r){Fc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Ut.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(Zd);Lr.NextTerminalAfterAtLeastOneSepWalker=uwe;function Xq(r,e,t){t===void 0&&(t=[]),t=(0,Ut.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Ut.drop)(r,n+1))}function o(c){var u=Xq(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var _=B.definition[ge],L={idx:p,def:_.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w};g.push(L),g.push(o)}else if(B instanceof Dt.Alternative)g.push({idx:p,def:B.definition.concat((0,Ut.drop)(h)),ruleStack:C,occurrenceStack:w});else if(B instanceof Dt.Rule)g.push(fwe(B,p,C,w));else throw Error("non exhaustive match")}}return u}Lr.nextPossibleTokensAfter=gwe;function fwe(r,e,t,i){var n=(0,Ut.cloneArr)(t);n.push(r.name);var s=(0,Ut.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var eC=y(_t=>{"use strict";var $q=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),_q=$d(),hwe=My(),jy=df(),YA=Cn(),pwe=Cf(),li;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(li=_t.PROD_TYPE||(_t.PROD_TYPE={}));function dwe(r){if(r instanceof YA.Option)return li.OPTION;if(r instanceof YA.Repetition)return li.REPETITION;if(r instanceof YA.RepetitionMandatory)return li.REPETITION_MANDATORY;if(r instanceof YA.RepetitionMandatoryWithSeparator)return li.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof YA.RepetitionWithSeparator)return li.REPETITION_WITH_SEPARATOR;if(r instanceof YA.Alternation)return li.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=dwe;function Cwe(r,e,t,i,n,s){var o=tJ(r,e,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=Cwe;function mwe(r,e,t,i,n,s){var o=rJ(r,e,n,t),a=Kx(o)?jy.tokenStructuredMatcherNoCategories:jy.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=mwe;function Ewe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Hx=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),Sr=Gt(),No=Hn(),Gx=Xd(),Ef=eC(),bwe=$d(),Zs=Cn(),Yx=Cf();function Qwe(r,e,t,i,n){var s=er.map(r,function(h){return Swe(h,i)}),o=er.map(r,function(h){return jx(h,h,i)}),a=[],l=[],c=[];(0,Sr.every)(o,Sr.isEmpty)&&(a=(0,Sr.map)(r,function(h){return AJ(h,i)}),l=(0,Sr.map)(r,function(h){return lJ(h,e,i)}),c=gJ(r,e,i));var u=Pwe(r,t,i),g=(0,Sr.map)(r,function(h){return uJ(h,i)}),f=(0,Sr.map)(r,function(h){return aJ(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=Qwe;function Swe(r,e){var t=new oJ;r.accept(t);var i=t.allProductions,n=er.groupBy(i,nJ),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Gx.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=sJ(l);return f&&(g.parameter=f),g});return o}function nJ(r){return(0,Gx.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+sJ(r)}zt.identifyProductionForDuplicates=nJ;function sJ(r){return r instanceof Zs.Terminal?r.terminalType.name:r instanceof Zs.NonTerminal?r.nonTerminalName:""}var oJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.OccurrenceValidationCollector=oJ;function aJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=aJ;function vwe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=vwe;function jx(r,e,t,i){i===void 0&&(i=[]);var n=[],s=tC(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),jx(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=jx;function tC(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof Zs.NonTerminal)e.push(t.referencedRule);else if(t instanceof Zs.Alternative||t instanceof Zs.Option||t instanceof Zs.RepetitionMandatory||t instanceof Zs.RepetitionMandatoryWithSeparator||t instanceof Zs.RepetitionWithSeparator||t instanceof Zs.Repetition)e=e.concat(tC(t.definition));else if(t instanceof Zs.Alternation)e=er.flatten(er.map(t.definition,function(o){return tC(o.definition)}));else if(!(t instanceof Zs.Terminal))throw Error("non exhaustive match");var i=(0,Gx.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(tC(s))}else return e}zt.getFirstNoneTerminal=tC;var qx=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Yx.GAstVisitor);function AJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,bwe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=AJ;function lJ(r,e,t){var i=new qx;r.accept(i);var n=i.alternations;n=(0,Sr.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,Ef.getLookaheadPathsForOr)(l,r,c,a),g=xwe(u,a,r,t),f=fJ(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=lJ;var cJ=function(r){Hx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Yx.GAstVisitor);zt.RepetionCollector=cJ;function uJ(r,e){var t=new qx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=uJ;function gJ(r,e,t){var i=[];return(0,Sr.forEach)(r,function(n){var s=new cJ;n.accept(s);var o=s.allProductions;(0,Sr.forEach)(o,function(a){var l=(0,Ef.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,Ef.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,Sr.isEmpty)((0,Sr.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=gJ;function xwe(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,Sr.forEach)(l,function(u){var g=[c];(0,Sr.forEach)(r,function(f,h){c!==h&&(0,Ef.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,Ef.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,Sr.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function fJ(r,e,t,i){var n=[],s=(0,Sr.reduce)(r,function(o,a,l){var c=(0,Sr.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,Sr.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,Sr.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(If,"__esModule",{value:!0});If.validateGrammar=If.resolveGrammar=void 0;var Wx=Gt(),Dwe=Wq(),kwe=Jx(),hJ=_d();function Rwe(r){r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarResolverErrorProvider});var e={};return(0,Wx.forEach)(r.rules,function(t){e[t.name]=t}),(0,Dwe.resolveGrammar)(e,r.errMsgProvider)}If.resolveGrammar=Rwe;function Fwe(r){return r=(0,Wx.defaults)(r,{errMsgProvider:hJ.defaultGrammarValidatorErrorProvider}),(0,kwe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}If.validateGrammar=Fwe});var yf=y(En=>{"use strict";var rC=En&&En.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(En,"__esModule",{value:!0});En.EarlyExitException=En.NotAllInputParsedException=En.NoViableAltException=En.MismatchedTokenException=En.isRecognitionException=void 0;var Nwe=Gt(),dJ="MismatchedTokenException",CJ="NoViableAltException",mJ="EarlyExitException",EJ="NotAllInputParsedException",IJ=[dJ,CJ,mJ,EJ];Object.freeze(IJ);function Twe(r){return(0,Nwe.contains)(IJ,r.name)}En.isRecognitionException=Twe;var qy=function(r){rC(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),Lwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=dJ,s}return e}(qy);En.MismatchedTokenException=Lwe;var Owe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=CJ,s}return e}(qy);En.NoViableAltException=Owe;var Mwe=function(r){rC(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=EJ,n}return e}(qy);En.NotAllInputParsedException=Mwe;var Uwe=function(r){rC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=mJ,s}return e}(qy);En.EarlyExitException=Uwe});var Vx=y(Ki=>{"use strict";Object.defineProperty(Ki,"__esModule",{value:!0});Ki.attemptInRepetitionRecovery=Ki.Recoverable=Ki.InRuleRecoveryException=Ki.IN_RULE_RECOVERY_EXCEPTION=Ki.EOF_FOLLOW_KEY=void 0;var Jy=HA(),cs=Gt(),Kwe=yf(),Hwe=Lx(),Gwe=Hn();Ki.EOF_FOLLOW_KEY={};Ki.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function zx(r){this.name=Ki.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ki.InRuleRecoveryException=zx;zx.prototype=Error.prototype;var Ywe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,cs.has)(e,"recoveryEnabled")?e.recoveryEnabled:Gwe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=yJ)},r.prototype.getTokenToInsert=function(e){var t=(0,Jy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new Kwe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,cs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new zx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,cs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,cs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,cs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,cs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ki.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,cs.map)(t,function(n,s){return s===0?Ki.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,cs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,cs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ki.EOF_FOLLOW_KEY)return[Jy.EOF];var t=e.ruleName+e.idxInCallingRule+Hwe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,Jy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,cs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,cs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,cs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ki.Recoverable=Ywe;function yJ(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=Jy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ki.attemptInRepetitionRecovery=yJ});var Wy=y(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.LooksAhead=void 0;var Fa=eC(),$s=Gt(),wJ=Hn(),Na=Wy(),Nc=Xd(),qwe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,$s.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:wJ.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,$s.has)(e,"maxLookahead")?e.maxLookahead:wJ.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,$s.isES2015MapSupported)()?new Map:[],(0,$s.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,$s.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Nc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,$s.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,Nc.getProductionDslName)(g)+f,function(){var h=(0,Fa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,Na.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],Na.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,$s.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_IDX,Fa.PROD_TYPE.REPETITION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,Na.OPTION_IDX,Fa.PROD_TYPE.OPTION,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,Na.AT_LEAST_ONE_SEP_IDX,Fa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))}),(0,$s.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,Na.MANY_SEP_IDX,Fa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Nc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Fa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,Na.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Fa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Fa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,Na.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();zy.LooksAhead=qwe});var bJ=y(To=>{"use strict";Object.defineProperty(To,"__esModule",{value:!0});To.addNoneTerminalToCst=To.addTerminalToCst=To.setNodeLocationFull=To.setNodeLocationOnlyOffset=void 0;function Jwe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(jA,"__esModule",{value:!0});jA.defineNameProp=jA.functionName=jA.classNameFromInstance=void 0;var Xwe=Gt();function _we(r){return SJ(r.constructor)}jA.classNameFromInstance=_we;var QJ="name";function SJ(r){var e=r.name;return e||"anonymous"}jA.functionName=SJ;function Zwe(r,e){var t=Object.getOwnPropertyDescriptor(r,QJ);return(0,Xwe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,QJ,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}jA.defineNameProp=Zwe});var kJ=y(vi=>{"use strict";Object.defineProperty(vi,"__esModule",{value:!0});vi.validateRedundantMethods=vi.validateMissingCstMethods=vi.validateVisitor=vi.CstVisitorDefinitionError=vi.createBaseVisitorConstructorWithDefaults=vi.createBaseSemanticVisitorConstructor=vi.defaultVisit=void 0;var us=Gt(),iC=Xx();function vJ(r,e){for(var t=(0,us.keys)(r),i=t.length,n=0;n: + `+(""+s.join(` + +`).replace(/\n/g,` + `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}vi.createBaseSemanticVisitorConstructor=$we;function eBe(r,e,t){var i=function(){};(0,iC.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,us.forEach)(e,function(s){n[s]=vJ}),i.prototype=n,i.prototype.constructor=i,i}vi.createBaseVisitorConstructorWithDefaults=eBe;var _x;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(_x=vi.CstVisitorDefinitionError||(vi.CstVisitorDefinitionError={}));function xJ(r,e){var t=PJ(r,e),i=DJ(r,e);return t.concat(i)}vi.validateVisitor=xJ;function PJ(r,e){var t=(0,us.map)(e,function(i){if(!(0,us.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+" CST Visitor.",type:_x.MISSING_METHOD,methodName:i}});return(0,us.compact)(t)}vi.validateMissingCstMethods=PJ;var tBe=["constructor","visit","validateVisitor"];function DJ(r,e){var t=[];for(var i in r)(0,us.isFunction)(r[i])&&!(0,us.contains)(tBe,i)&&!(0,us.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,iC.functionName)(r.constructor)+` CST Visitor +There is no Grammar Rule corresponding to this method's name. +`,type:_x.REDUNDANT_METHOD,methodName:i});return t}vi.validateRedundantMethods=DJ});var FJ=y(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.TreeBuilder=void 0;var wf=bJ(),ti=Gt(),RJ=kJ(),rBe=Hn(),iBe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,ti.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:rBe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ti.NOOP,this.cstFinallyStateUpdate=ti.NOOP,this.cstPostTerminal=ti.NOOP,this.cstPostNonTerminal=ti.NOOP,this.cstPostRule=ti.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationFull,this.setNodeLocationFromNode=wf.setNodeLocationFull,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=wf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=wf.setNodeLocationOnlyOffset,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=ti.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,wf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,ti.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,RJ.createBaseSemanticVisitorConstructor)(this.className,(0,ti.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,ti.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,RJ.createBaseVisitorConstructorWithDefaults)(this.className,(0,ti.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Vy.TreeBuilder=iBe});var TJ=y(Xy=>{"use strict";Object.defineProperty(Xy,"__esModule",{value:!0});Xy.LexerAdapter=void 0;var NJ=Hn(),nBe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):NJ.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?NJ.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();Xy.LexerAdapter=nBe});var OJ=y(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0});_y.RecognizerApi=void 0;var LJ=Gt(),sBe=yf(),Zx=Hn(),oBe=_d(),aBe=Jx(),ABe=Cn(),lBe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG),(0,LJ.contains)(this.definedRulesNames,e)){var n=oBe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Zx.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Zx.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,aBe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,sBe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,ABe.serializeGrammar)((0,LJ.values)(this.gastProductionsCache))},r}();_y.RecognizerApi=lBe});var HJ=y($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.RecognizerEngine=void 0;var kr=Gt(),Gn=Wy(),Zy=yf(),MJ=eC(),Bf=$d(),UJ=Hn(),cBe=Vx(),KJ=HA(),nC=df(),uBe=Xx(),gBe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,uBe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=nC.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,kr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if((0,kr.isArray)(e)){if((0,kr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if((0,kr.isArray)(e))this.tokensMap=(0,kr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,kr.has)(e,"modes")&&(0,kr.every)((0,kr.flatten)((0,kr.values)(e.modes)),nC.isTokenType)){var i=(0,kr.flatten)((0,kr.values)(e.modes)),n=(0,kr.uniq)(i);this.tokensMap=(0,kr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,kr.isObject)(e))this.tokensMap=(0,kr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=KJ.EOF;var s=(0,kr.every)((0,kr.values)(e),function(o){return(0,kr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?nC.tokenStructuredMatcherNoCategories:nC.tokenStructuredMatcher,(0,nC.augmentTokenTypes)((0,kr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,kr.has)(i,"resyncEnabled")?i.resyncEnabled:UJ.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,kr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:UJ.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,kr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Zy.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,Zy.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Zy.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===cBe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,kr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),KJ.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();$y.RecognizerEngine=gBe});var YJ=y(ew=>{"use strict";Object.defineProperty(ew,"__esModule",{value:!0});ew.ErrorHandler=void 0;var $x=yf(),eP=Gt(),GJ=eC(),fBe=Hn(),hBe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,eP.has)(e,"errorMessageProvider")?e.errorMessageProvider:fBe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,$x.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,eP.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,eP.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,GJ.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new $x.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,GJ.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $x.NoViableAltException(c,this.LA(1),l))},r}();ew.ErrorHandler=hBe});var JJ=y(tw=>{"use strict";Object.defineProperty(tw,"__esModule",{value:!0});tw.ContentAssist=void 0;var jJ=$d(),qJ=Gt(),pBe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,qJ.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,jJ.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,qJ.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new jJ.NextAfterTokenWalker(n,e).startWalking();return s},r}();tw.ContentAssist=pBe});var e3=y(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});nw.GastRecorder=void 0;var In=Gt(),Lo=Cn(),dBe=Jd(),XJ=df(),_J=HA(),CBe=Hn(),mBe=Wy(),iw={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(iw);var WJ=!0,zJ=Math.pow(2,mBe.BITS_FOR_OCCURRENCE_IDX)-1,ZJ=(0,_J.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:dBe.Lexer.NA});(0,XJ.augmentTokenTypes)([ZJ]);var $J=(0,_J.createTokenInstance)(ZJ,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze($J);var EBe={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},IBe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return CBe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Lo.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return sC.call(this,Lo.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionMandatoryWithSeparator,t,e,WJ)},r.prototype.manyInternalRecord=function(e,t){sC.call(this,Lo.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){sC.call(this,Lo.RepetitionWithSeparator,t,e,WJ)},r.prototype.orInternalRecord=function(e,t){return yBe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(rw(t),!e||(0,In.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=e.ruleName,a=new Lo.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?EBe:iw},r.prototype.consumeInternalRecord=function(e,t,i){if(rw(t),!(0,XJ.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=new Lo.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),$J},r}();nw.GastRecorder=IBe;function sC(r,e,t,i){i===void 0&&(i=!1),rw(t);var n=(0,In.peek)(this.recordingProdStack),s=(0,In.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,In.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),iw}function yBe(r,e){var t=this;rw(e);var i=(0,In.peek)(this.recordingProdStack),n=(0,In.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Lo.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,In.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,In.some)(s,function(l){return(0,In.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,In.forEach)(s,function(l){var c=new Lo.Alternative({definition:[]});o.definition.push(c),(0,In.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,In.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),iw}function VJ(r){return r===0?"":""+r}function rw(r){if(r<0||r>zJ){var e=new Error("Invalid DSL Method idx value: <"+r+`> + `+("Idx value must be a none negative value smaller than "+(zJ+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var r3=y(sw=>{"use strict";Object.defineProperty(sw,"__esModule",{value:!0});sw.PerformanceTracer=void 0;var t3=Gt(),wBe=Hn(),BBe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,t3.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=wBe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,t3.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();sw.PerformanceTracer=BBe});var i3=y(ow=>{"use strict";Object.defineProperty(ow,"__esModule",{value:!0});ow.applyMixins=void 0;function bBe(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}ow.applyMixins=bBe});var Hn=y(Cr=>{"use strict";var o3=Cr&&Cr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.EmbeddedActionsParser=Cr.CstParser=Cr.Parser=Cr.EMPTY_ALT=Cr.ParserDefinitionErrorType=Cr.DEFAULT_RULE_CONFIG=Cr.DEFAULT_PARSER_CONFIG=Cr.END_OF_FILE=void 0;var _i=Gt(),QBe=Yq(),n3=HA(),a3=_d(),s3=pJ(),SBe=Vx(),vBe=BJ(),xBe=FJ(),PBe=TJ(),DBe=OJ(),kBe=HJ(),RBe=YJ(),FBe=JJ(),NBe=e3(),TBe=r3(),LBe=i3();Cr.END_OF_FILE=(0,n3.createTokenInstance)(n3.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Cr.END_OF_FILE);Cr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:a3.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});Cr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var OBe;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(OBe=Cr.ParserDefinitionErrorType||(Cr.ParserDefinitionErrorType={}));function MBe(r){return r===void 0&&(r=void 0),function(){return r}}Cr.EMPTY_ALT=MBe;var aw=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,_i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=(0,_i.has)(t,"skipValidations")?t.skipValidations:Cr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,_i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,_i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,s3.resolveGrammar)({rules:(0,_i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,_i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,s3.validateGrammar)({rules:(0,_i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,_i.values)(e.tokensMap),errMsgProvider:a3.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,_i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,QBe.computeAllProdsFollows)((0,_i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,_i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,_i.isEmpty)(e.definitionErrors))throw t=(0,_i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: + `+t.join(` +------------------------------- +`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();Cr.Parser=aw;(0,LBe.applyMixins)(aw,[SBe.Recoverable,vBe.LooksAhead,xBe.TreeBuilder,PBe.LexerAdapter,kBe.RecognizerEngine,DBe.RecognizerApi,RBe.ErrorHandler,FBe.ContentAssist,NBe.GastRecorder,TBe.PerformanceTracer]);var UBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(aw);Cr.CstParser=UBe;var KBe=function(r){o3(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(aw);Cr.EmbeddedActionsParser=KBe});var l3=y(Aw=>{"use strict";Object.defineProperty(Aw,"__esModule",{value:!0});Aw.createSyntaxDiagramsCode=void 0;var A3=Ix();function HBe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+A3.VERSION+"/diagrams/diagrams.css":s,a=` + + + + + +`,l=` + +`,c=` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/Form.html b/documentation/docs/generated/classes/Form.html new file mode 100644 index 0000000000..0045bb98c1 --- /dev/null +++ b/documentation/docs/generated/classes/Form.html @@ -0,0 +1,5525 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + + + + + + + + + + +
+
+

+

File

+

+

+ src/app/shared/components/template/components/odk-form/libs/enketo/js/form.ts +

+ + + + + + +
+

Index

+ + + + + + + + + + + + + + + + + + + + + +
+
Properties
+
+ +
+
Accessors
+
+ +
+
+ +
+

Constructor

+ + + + + + + + + + + + + +
+constructor(formEl: HTMLElement, data, options: FormOptions) +
+ +
+

Most methods are prototype method to facilitate customizations outside of enketo-core.

+
+
+ Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeOptionalDescription
formEl + HTMLElement + + No + +
    +
  • HTML form element (a product of Enketo Transformer after transforming a valid ODK XForm)
  • +
+ +
data + + No + +
    +
  • Data object containing XML model, (partial) XML instance-to-load, external data and flag about whether instance-to-load has already been submitted before.
  • +
+ +
options + FormOptions + + No + +
+
+
+
+ +
+ +

+ Properties +

+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + addModule + + +
+ Default value : function (module) { + return Object.create(module, { + form: { + value: this, + }, + }); + } +
+ +
+

Returns a module and adds the form property to it.

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
module +
    +
  • Enketo Core module
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + all + + +
+ Type : literal type + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + Public + blockPageNavigation + + +
+ Default value : function () { + const that = this; + this.pageNavigationBlocked = true; + window.clearTimeout(this.blockPageNavigationTimeout); + this.blockPageNavigationTimeout = window.setTimeout(() => { + that.pageNavigationBlocked = false; + }, 600); + } +
+ +
+

Blocks page navigation for a short period. +This can be used to ensure that the user sees a new error message before moving to another page.

+
+
+ + + + + + + + + + + + + + +
+ + + calc + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + Public + clearNonRelevant + + +
+ Default value : function () { + this.relevant.update(null, true); + } +
+ +
+

Clears non-relevant values.

+
+
+ + + + + + + + + + + + + + + + + +
+ + + evaluationCascadeAdditions + + +
+ Type : any[] + +
+ Default value : [] +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + Public + filterRadioCheckSiblings + + +
+ Default value : () => {...} +
+ +
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
controls +
    +
  • radiobutton/checkbox HTML input elements
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + getDataStr + + +
+ Default value : function (include: any = {}) { + // By default everything is included + if (include.irrelevant === false) { + return this.getDataStrWithoutIrrelevantNodes(); + } + + return this.model.getStr(); + } +
+ +
+

Obtains a string of primary instance.

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
include +
    +
  • Optional object items to exclude if false
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + getDataStrWithoutIrrelevantNodes + + +
+ Default value : function () { + const that = this; + const modelClone = new FormModel(this.model.getStr()); + modelClone.init(); + + // Since we are removing nodes, we need to go in reverse order to make sure + // the indices are still correct! + this.getRelatedNodes("data-relevant") + .reverse() + .each(function () { + const node = this; + const relevant = that.input.getRelevant(node); + const index = that.input.getIndex(node); + const path = that.input.getName(node); + let target; + + /* + * Copied from relevant.js: + * + * If the relevant is placed on a group and that group contains repeats with the same name, + * but currently has 0 repeats, the context will not be available. + */ + if ( + getChild(node, `.or-repeat-info[data-name="${path}"]`) && + !getChild(node, `.or-repeat[name="${path}"]`) + ) { + target = null; + } else { + // If a calculation without a form control (i.e. in .calculated-items) inside a repeat + // has a relevant, and there 0 instances of that repeat, + // there is nothing to remove (and target is undefined) + // https://github.com/enketo/enketo-core/issues/761 + // TODO: It would be so much nicer if form-control-less calculations were placed inside the repeat instead. + target = modelClone.node(path, index).getElement(); + } + + /* + * If performance becomes an issue, some opportunities are: + * - check if ancestor is relevant + * - use cache of relevant.update + * - check for repeatClones to avoid calculating index (as in relevant.update) + */ + if (target && !that.model.evaluate(relevant, "boolean", path, index)) { + target.remove(); + } + }); + + return modelClone.getStr(); + } +
+ +
+

Obtains the XML primary instance as string without nodes that have a relevant +that evaluates to false.

+

Though this function may be slow it is slow when it doesn't matter much (upon saving). The +alternative is to add some logic to relevant.update to mark irrelevant nodes in the model +but that would slow down form loading and form traversal when it does matter.

+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + getGoToTarget + + +
+ Default value : function (path) { + let hits; + let modelNode; + let target; + let intermediateTarget; + let selector = ""; + const repeatRegEx = /([^[]+)\[(\d+)\]([^[]*$)?/g; + + if (!path) { + return; + } + + modelNode = this.model.node(path).getElement(); + + if (!modelNode) { + return; + } + + // Convert to absolute path, while maintaining positions. + path = getXPath(modelNode, "instance", true); + + // Not inside a cloned repeat. + target = this.view.html.querySelector(`[name="${path}"]`); + + // If inside a cloned repeat (i.e. a repeat that is not first-in-series) + if (!target) { + intermediateTarget = this.view.html; + while ((hits = repeatRegEx.exec(path)) !== null && intermediateTarget) { + selector += hits[1]; + intermediateTarget = intermediateTarget.querySelectorAll( + `[name="${selector}"], [data-name="${selector}"]` + )[hits[2]]; + if (intermediateTarget && hits[3]) { + selector += hits[3]; + intermediateTarget = intermediateTarget.querySelector( + `[name="${selector}"],[data-name="${selector}"]` + ); + } + target = intermediateTarget; + } + } + + return target ? this.input.getWrapNode(target) : target; + } +
+ +
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
path +
    +
  • path to HTML form control
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + getModelValue + + +
+ Default value : function ($control) { + const control = $control[0]; + const path = this.input.getName(control); + const index = this.input.getIndex(control); + + return this.model.node(path, index).getVal(); + } +
+ +
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
$control +
    +
  • HTML form control
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + getQuerySelectorsForLogic + + +
+ Default value : () => {...} +
+ +
+

Crafts an optimized selector for element attributes that contain an expression with a target node name.

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + + + + + +
NameDescription
filter +
    +
  • The filter to use
  • +
+
+
attr +
    +
  • The attribute to target
  • +
+
+
nodeName +
    +
  • The XML nodeName to find
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + getRelatedNodes + + +
+ Default value : function (attr, filter, updated) { + let repeatControls = null; + let controls; + updated = updated || {}; + filter = filter || ""; + + const { allRepeats, cloned, repeatPath } = updated; + + // The collection of non-repeat inputs, calculations and groups is cached (unchangeable) + if (!allRepeats && !this.nonRepeats[attr]) { + controls = [...this.view.html.querySelectorAll(`:not(.or-repeat-info)[${attr}]`)].filter( + (el) => !el.closest(".or-repeat") + ); + this.nonRepeats[attr] = this.filterRadioCheckSiblings(controls); + } + + if (allRepeats) { + const controls = [...this.view.html.querySelectorAll(`form.or .or-repeat [${attr}]`)]; + repeatControls = this.filterRadioCheckSiblings(controls); + } else if (typeof repeatPath !== "undefined" && updated.repeatIndex >= 0) { + // If the updated node is inside a repeat (and there are multiple repeats present) + const repeatEl = [...this.view.html.querySelectorAll(`.or-repeat[name="${repeatPath}"]`)][ + updated.repeatIndex + ]; + controls = repeatEl ? [...repeatEl.querySelectorAll(`[${attr}]`)] : []; + repeatControls = this.filterRadioCheckSiblings(controls); + } + + // If a new repeat was created, update the cached collection of all form controls with that attribute + // If a repeat was deleted (updated.repeatPath && !updated.cloned), rebuild cache. + // Exclude outputs from the cache, because outputs can be added via itemsets (in labels). + if (!this.all[attr] || (repeatPath && !cloned) || filter === ".or-output") { + // (re)build the cache + // However, if repeats have not been initialized exclude nodes inside a repeat until the first repeat has been added during repeat initialization. + // The default view repeat will be removed during initialization (and stored as template), before it is re-added, if necessary. + // We need to avoid adding these fields to the initial cache, + // so we don't waste time evaluating logic, and don't have to rebuild the cache after repeats have been initialized. + this.all[attr] = this.repeatsInitialized + ? this.filterRadioCheckSiblings([...this.view.html.querySelectorAll(`[${attr}]`)]) + : this.nonRepeats[attr]; + } else if (cloned && repeatControls) { + // update the cache + this.all[attr] = this.all[attr].concat(repeatControls); + } + + /** + * If the update was triggered from a repeat, it improves performance (a lot) + * to exclude all those repeats that did not trigger it... + * However, this will break if people are referring to nodes in other + * repeats such as with /path/to/repeat[3]/node, /path/to/repeat[position() = 3]/node or indexed-repeat(/path/to/repeat/node, /path/to/repeat, 3). + * We accept that for now. + * */ + let collection; + if (repeatControls) { + // The non-repeat fields have to be added too, e.g. to update a calculated item with count(to/repeat/node) at the top level + collection = this.nonRepeats[attr].concat(repeatControls); + } else { + collection = this.all[attr]; + } + + let selector = []; + // Add selectors based on specific changed nodes + if (!updated.nodes || updated.nodes.length === 0) { + if (repeatControls != null && cloned && filter === ".itemset-template") { + selector = [`.or-repeat[name="${repeatPath}"] ${filter}[${attr}]`]; + } else { + selector = [`${filter}[${attr}]`]; + } + } else { + updated.nodes.forEach((node) => { + selector = selector.concat(this.getQuerySelectorsForLogic(filter, attr, node)); + }); + // add all the paths that use the /* selector at end of path + selector = selector.concat(this.getQuerySelectorsForLogic(filter, attr, "*")); + } + + const selectorStr = selector.join(", "); + collection = selectorStr ? collection.filter((el) => el.matches(selectorStr)) : collection; + + // TODO: exclude descendents of disabled elements? .find( ':not(:disabled) span.active' ) + // TODO: remove jQuery wrapper, just return array of elements + return $(collection); + } +
+ +
+

Finds nodes that have attributes with XPath expressions that refer to particular XML elements.

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + + + + + +
NameDescription
attr +
    +
  • The attribute name to search for
  • +
+
+
filter +
    +
  • The optional filter to append to each selector
  • +
+
+
updated +
    +
  • object that contains information on updated nodes
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + goTo + + +
+ Default value : function (xpath) { + const errors = []; + if (!this.goToTarget(this.getGoToTarget(xpath))) { + errors.push( + t("alert.gotonotfound.msg", { + path: xpath.substring(xpath.lastIndexOf("/") + 1), + }) + ); + } + + return errors; + } +
+ +
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
xpath +
    +
  • simple path to question
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + goToTarget + + +
+ Default value : function (target: HTMLElement) { + console.trace("scroll to target", target); + if (target) { + if (this.pages.active) { + // Flip to page + this.pages.flipToPageContaining($(target)); + } + // check if the target has a form control + if (target.closest(".calculation, .setvalue, .setgeopoint")) { + // It is up to the apps to decide what to do with this event. + target.dispatchEvent(events.GoToInvisible()); + } + // check if the nearest question or group is irrelevant after page flip + if (target.closest(".or-branch.disabled")) { + // It is up to the apps to decide what to do with this event. + target.dispatchEvent(events.GoToIrrelevant()); + } + // Scroll to element + target.scrollIntoView(); + // Focus on the first non .ignore form control + // If the element is hidden (e.g. because it's been replaced by a widget), + // the focus event will not fire, so we also trigger an applyfocus event that widgets can listen for. + const input = target.querySelector<HTMLInputElement>( + "input:not(.ignore), textarea:not(.ignore), select:not(.ignore)" + ); + input.focus(); + input.dispatchEvent(events.ApplyFocus()); + } + + return !!target; + } +
+ +
+

Scrolls to an HTML question or group element, flips to the page it is on and focuses on the nearest form control.

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
target +
    +
  • An HTML question or group element to scroll to
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + grosslyViolateStandardComplianceByIgnoringCertainCalcs + + +
+ Default value : function () { + const $culprit = this.view.$.find('[name$="instanceID"][data-calculate]'); + if ($culprit.length > 0) { + $culprit.removeAttr("data-calculate"); + } + } +
+ +
+

See https://groups.google.com/forum/?fromgroups=#!topic/opendatakit-developers/oBn7eQNQGTg +and http://code.google.com/p/opendatakit/issues/detail?id=706

+

This is using an aggressive name attribute selector to also find e.g. name="/../orx:meta/orx:instanceID", with +ANY namespace prefix.

+

Once the following is complete this function can and should be removed:

+
    +
  1. ODK Collect starts supporting an instanceID preload item (or automatic handling of meta->instanceID without binding)
  2. +
  3. Pyxforms changes the instanceID binding from calculate to preload (or without binding)
  4. +
  5. Formhub has re-generated all stored XML forms from the stored XLS forms with the updated pyxforms
  6. +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + init + + +
+ Default value : function () { + let loadErrors = []; + const that = this; + + initTimeLocalization(this.view.html); + + this.toc = this.addModule(tocModule); + this.pages = this.addModule(pageModule); + this.langs = this.addModule(languageModule); + this.progress = this.addModule(progressModule); + this.widgets = this.addModule(widgetModule); + this.preloads = this.addModule(preloadModule); + this.relevant = this.addModule(relevantModule); + this.repeats = this.addModule(repeatModule); + this.input = this.addModule(inputHelper); + this.output = this.addModule(outputModule); + this.itemset = this.addModule(itemsetModule); + this.calc = this.addModule(calculationModule); + this.required = this.addModule(requiredModule); + this.mask = this.addModule(maskModule); + this.readonly = this.addModule(readonlyModule); + + // Handle odk-instance-first-load event + this.model.events.addEventListener(events.InstanceFirstLoad().type, (event) => { + this.calc.performAction("setvalue", event); + this.calc.performAction("setgeopoint", event); + }); + + // Handle odk-new-repeat event before initializing repeats + this.view.html.addEventListener(events.NewRepeat().type, (event) => { + this.calc.performAction("setvalue", event); + this.calc.performAction("setgeopoint", event); + }); + + // Handle xforms-value-changed + this.view.html.addEventListener(events.XFormsValueChanged().type, (event) => { + this.calc.performAction("setvalue", event); + this.calc.performAction("setgeopoint", event); + }); + + // Before initializing form view and model, passthrough some model events externally + // Because of instance-first-load actions, this should be done before the model is initialized. This is important for custom + // applications that submit each individual value separately (opposed to a full XML model at the end). + this.model.events.addEventListener(events.DataUpdate().type, (event) => { + that.view.html.dispatchEvent(events.DataUpdate(event.detail)); + }); + + // This probably does not need to be before model.init(); + this.model.events.addEventListener(events.Removed().type, (event) => { + that.view.html.dispatchEvent(events.Removed(event.detail)); + }); + + loadErrors = loadErrors.concat(this.model.init()); + + if (typeof this.model === "undefined" || !(this.model instanceof FormModel)) { + loadErrors.push("Form could not be initialized without a model."); + + return loadErrors; + } + + try { + this.preloads.init(); + + // before widgets.init (as instanceID used in offlineFilepicker widget) + // store the current instanceID as data on the form element so it can be easily accessed by e.g. widgets + this.view.$.data({ + instanceID: this.model.instanceID, + }); + + // before calc.update! + this.grosslyViolateStandardComplianceByIgnoringCertainCalcs(); + // before repeats.init to make sure the jr:repeat-count calculation has been evaluated + this.calc.update(); + + // before itemset.update + this.langs.init(this.options.language); + + // before repeats.init so that template contains role="page" when applicable + this.pages.init(); + + // after radio button data-name setting (now done in XLST) + let repeatsAdded = 0; + + const tempHandlerAddRepeat = () => { + repeatsAdded += 1; + }; + + this.view.html.addEventListener(events.AddRepeat().type, tempHandlerAddRepeat); + + this.repeatsInitialized = true; + this.repeats.init(); + + // Recalculate after repeats are initialized. Previously this was performed in + // `tempHandlerAddRepeat`, but recalculating them all at once is significantly faster. + if (repeatsAdded > 0) { + this.calc.update({ + allRepeats: true, + cloned: true, + }); + + this.all = {}; + + // Builds a cache of known repeat path prefixes `repeat.init`. + // The cache is sorted by length, longest to shortest, to ensure + // that lookups using this cache find the deepest nested repeat + // for a given path. + this.repeatPathPrefixes = Array.from<any>( + this.view.html.querySelectorAll(".or-repeat-info") + ) + .map((element) => `${element.dataset.name}/`) + .sort((a, b) => b.length - a.length); + } + + this.view.html.removeEventListener(events.AddRepeat().type, tempHandlerAddRepeat); + + // after repeats.init, but before itemset.update + this.output.update(); + + // after repeats.init + this.itemset.update(); + + // after repeats.init + this.setAllVals(); + + this.readonly.update(); // after setAllVals(); + + // after setAllVals, after repeats.init + + this.options.input = this.input; + this.options.pathToAbsolute = this.pathToAbsolute.bind(this); + this.options.evaluate = this.model.evaluate.bind(this.model); + this.options.getModelValue = this.getModelValue.bind(this); + this.widgetsInitialized = this.widgets.init(null, this.options); + + // after widgets.init(), and after repeats.init(), and after pages.init() + this.relevant.update(); + + // after widgets init to make sure widget handlers are called before + // after loading existing instance to not trigger an 'edit' event + this.setEventHandlers(); + + // Update field calculations again to make sure that dependent + // field values are calculated + this.calc.update(); + + this.required.update(); + + this.mask.init(); + + this.editStatus = false; + + if (this.options.printRelevantOnly !== false) { + this.view.$.addClass("print-relevant-only"); + } + + setTimeout(() => { + that.progress.update(); + }, 0); + + this.initialized = true; + + return loadErrors; + } catch (e) { + console.error(e); + loadErrors.push(`${e.name}: ${e.message}`); + } + + document.querySelector("body").scrollIntoView(); + + return loadErrors; + } +
+ +
+

Function: init

+

Initializes the Form instance (XML Model and HTML View).

+
+
+ + + + + + + + + + + + + + +
+ + + initialized + + +
+ Type : boolean + +
+ +
+ + + + + + + + + + + + + + +
+ + + input + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + isValid + + +
+ Default value : function (node) { + const invalidSelectors = [".invalid-required", ".invalid-relevant"].concat( + this.constraintClassesInvalid.map((cls) => `.${cls}`) + ); + if (node) { + const question = this.input.getWrapNode(node); + const cls = question.classList; + + return !invalidSelectors.some((selector) => cls.contains(selector)); + } + + return !this.view.html.querySelector(invalidSelectors.join(", ")); + } +
+ +
+

Checks whether the question is not currently marked as invalid. If no argument is provided, it checks the whole form.

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
node +
    +
  • form control HTML element
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + itemset + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + langs + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + mask + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + model + + +
+ Type : FormModel + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + nodePathToRepeatPath + + +
+ Type : Record<string | string | null> + +
+ Default value : {} +
+ +
+ + + + + + + + + + + + + + +
+ + + nonRepeats + + +
+ Type : literal type + +
+ +
+ + + + + + + + + + + + + + +
+ + + options + + +
+ Type : FormOptions + +
+ +
+ + + + + + + + + + + + + + +
+ + + output + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + pageNavigationBlocked + + +
+ Type : boolean + +
+ +
+ + + + + + + + + + + + + + +
+ + + pages + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + Public + pathToAbsolute + + +
+ Default value : function (targetPath, contextPath) { + let target; + + if (targetPath.indexOf("/") === 0) { + return targetPath; + } + + // index is non-relevant (no positions in returned path) + target = this.model.evaluate(targetPath, "node", contextPath, 0, true); + + return getXPath(target, "instance", false); + } +
+ +
+
+ Parameters : + + + + + + + + + + + + + + + + + +
NameDescription
targetPath +
    +
  • simple relative or absolute path
  • +
+
+
contextPath +
    +
  • absolute context path
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + preloads + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + progress + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + readonly + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + relevant + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + repeatPathPrefixes + + +
+ Type : string[] | null + +
+ Default value : null +
+ +
+ + + + + + + + + + + + + + +
+ + + repeats + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + repeatsInitialized + + +
+ Type : boolean + +
+ +
+ + + + + + + + + + + + + + +
+ + + repeatsPresent + + +
+ Type : boolean + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + replaceChoiceNameFn + + +
+ Default value : function (expr, resTypeStr, context, index, tryNative) { + const choiceNames = parseFunctionFromExpression(expr, "jr:choice-name"); + + choiceNames.forEach((choiceName) => { + const params = choiceName[1]; + + if (params.length === 2) { + let label = ""; + const value = this.model.evaluate(params[0], resTypeStr, context, index, tryNative); + let name = stripQuotes(params[1]).trim(); + name = name.startsWith("/") ? name : joinPath(context, name); + const inputs = [ + ...this.view.html.querySelectorAll(`[name="${name}"], [data-name="${name}"]`), + ]; + const nodeName = inputs.length ? inputs[0].nodeName.toLowerCase() : null; + + if (!value || !inputs.length) { + label = ""; + } else if (nodeName === "select") { + const found = inputs.find((input) => + input.querySelector(`[value="${CSS.escape(value)}"]`) + ); + label = found ? found.querySelector(`[value="${CSS.escape(value)}"]`).textContent : ""; + } else if (nodeName === "input") { + const list = inputs[0].getAttribute("list"); + + if (!list) { + const found = inputs.find((input) => input.getAttribute("value") === value); + const firstSiblingLabelEl = found + ? getSiblingElement(found, ".option-label.active") + : []; + label = firstSiblingLabelEl ? (firstSiblingLabelEl as Element).textContent : ""; + } else { + const firstSiblingListEl = getSiblingElement(inputs[0], `datalist#${CSS.escape(list)}`); + if (firstSiblingListEl) { + const optionEl = firstSiblingListEl.querySelector(`[data-value="${value}"]`); + label = optionEl ? optionEl.getAttribute("value") : ""; + } + } + } + + expr = expr.replace(choiceName[0], `"${label}"`); + } else { + throw new FormLogicError( + `jr:choice-name function has incorrect number of parameters: ${choiceName[0]}` + ); + } + }); + + return expr; + } +
+ +
+

Implements jr:choice-name +TODO: this needs to work for all expressions (relevants, constraints), now it only works for calculated items +Ideally this belongs in the form Model, but unfortunately it needs access to the view

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
expr +
    +
  • XPath expression
  • +
+
+
resTypeStr +
    +
  • type of result
  • +
+
+
context +
    +
  • context path
  • +
+
+
index +
    +
  • index of context
  • +
+
+
tryNative +
    +
  • whether to try the native evaluator, i.e. if there is no risk it would create an incorrect result such as with date comparisons
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + required + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + + + + +
+ + + requiredTransformerVersion + + +
+ Type : string + +
+ Default value : "2.1.6" +
+ +
+

Static property with required enketo-transformer version.

+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + resetView + + +
+ Default value : function () { + // form language selector was moved outside of <form> so has to be separately removed + if (this.langs.formLanguages) { + this.langs.formLanguages.remove(); + } + this.view.html.replaceWith(this.view.clone); + + return document.querySelector("form.or"); + } +
+ +
+

Restores HTML form to pre-initialized state. It is meant to be called before re-initializing with +new Form ( .....) and form.init() +For this reason, it does not fix event handler, $form, formView.$ etc.! +It also does not affect the XML instance!

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + setAllVals + + +
+ Default value : function ($group, groupIndex) { + const that = this; + const selector = $group && $group.attr("name") ? $group.attr("name") : null; + + groupIndex = typeof groupIndex !== "undefined" ? groupIndex : null; + + this.model + .node(selector, groupIndex) + .getElements() + .reduce((nodes, current) => { + const newNodes = [...current.querySelectorAll("*")].filter( + (n) => n.children.length === 0 && n.textContent + ); + + return nodes.concat(newNodes); + }, []) + .forEach((element) => { + let value; + let name; + + try { + value = element.textContent; + name = getXPath(element, "instance"); + const index = that.model.node(name).getElements().indexOf(element); + const control = that.input.find(name, index); + if (control) { + that.input.setVal(control, value, null); + if ( + that.input.getXmlType(control) === "binary" && + value.startsWith("jr://") && + element.getAttribute("src") + ) { + control.setAttribute("data-loaded-url", element.getAttribute("src")); + } + } + } catch (e) { + console.error(e); + // TODO: Test if this correctly adds to loadErrors + // loadErrors.push( 'Could not load input field value with name: ' + name + ' and value: ' + value ); + throw new Error( + `Could not load input field value with name: ${name} and value: ${value}` + ); + } + }); + } +
+ +
+

Uses current state of model to set all the values in the form. +Since not all data nodes with a value have a corresponding input element, +we cycle through the HTML form elements and check for each form element whether data is available.

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + +
NameDescription
$group +
    +
  • group of elements for which form controls should be updated (with current model values)
  • +
+
+
groupIndex +
    +
  • index of the group
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + setEventHandlers + + +
+ Default value : function () { + const that = this; + + // Prevent default submission, e.g. when text field is filled in and Enter key is pressed + this.view.$.attr("onsubmit", "return false;"); + + /* + * The listener below catches both change and change.file events. + * The .file namespace is used in the filepicker to avoid an infinite loop. + * + * Fields with the "ignore" class are dynamically added to the DOM in a widget and are supposed to be handled + * by the widget itself, e.g. the search field in a geopoint widget. They should be ignored by the main engine. + * + * Readonly fields are not excluded because of this scenario: + * 1. readonly field has a calculation + * 2. readonly field becomes non-relevant (e.g. parent group with relevant) + * 3. this clears value in view, which should propagate to model via 'change' event + */ + this.view.$.on( + "change.file", + "input:not(.ignore), select:not(.ignore), textarea:not(.ignore)", + function () { + const input = this; + const n = { + path: that.input.getName(input), + inputType: that.input.getInputType(input), + xmlType: that.input.getXmlType(input), + val: that.input.getVal(input), + index: that.input.getIndex(input), + }; + + // set file input values to the uniqified actual name of file (without c://fakepath or anything like that) + if ( + n.val.length > 0 && + n.inputType === "file" && + input.files[0] && + input.files[0].size > 0 + ) { + n.val = getFilename(input.files[0], input.dataset.filenamePostfix); + } + if (n.val.length > 0 && n.inputType === "drawing") { + n.val = getFilename( + { + name: n.val, + }, + input.dataset.filenamePostfix + ); + } + + const updated = that.model.node(n.path, n.index).setVal(n.val, n.xmlType); + + if (updated) { + that.validateInput(input).then(() => { + // after internal processing is completed + input.dispatchEvent(events.XFormsValueChanged({ repeatIndex: n.index })); + }); + } + } + ); + + // doing this on the focus event may have little effect on performance, because nothing else is happening :) + this.view.html.addEventListener("focusin", (event) => { + // update the form progress status + this.progress.update(event.target); + }); + + this.view.html.addEventListener(events.FakeFocus().type, (event) => { + // update the form progress status + this.progress.update(event.target); + }); + + this.model.events.addEventListener(events.DataUpdate().type, (event) => { + that.evaluationCascade.forEach((fn) => { + fn.call(that, event.detail); + }, true); + // edit is fired when the model changes after the form has been initialized + that.editStatus = true; + }); + + this.view.html.addEventListener(events.AddRepeat().type, (event) => { + const $clone = $(event.target); + + // Set template-defined static defaults of added repeats in Form, setAllVals does not trigger change event + this.setAllVals($clone, event.detail.repeatIndex); + + // Initialize calculations, relevant, itemset, required, output inside that repeat. + this.evaluationCascade.forEach((fn) => { + fn.call(that, event.detail); + }); + this.progress.update(); + }); + + this.view.html.addEventListener(events.RemoveRepeat().type, () => { + this.progress.update(); + }); + + this.view.html.addEventListener(events.ChangeLanguage().type, () => { + this.output.update(); + }); + + this.view.$.find(".or-group > h4").on("click", function () { + // The resize trigger is to make sure canvas widgets start working. + $(this).closest(".or-group").toggleClass("or-appearance-compact").trigger("resize"); + }); + } +
+ +
+

A big function that sets event handlers.

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + setInvalid + + +
+ Default value : function (control, type = "constraint") { + const wrap = this.input.getWrapNode(control); + + if (!wrap) { + // TODO: this condition occurs, at least in tests for itemsets, but we need find out how. + return; + } + + if (config.validatePage === false && this.isValid(control)) { + this.blockPageNavigation(); + } + + wrap.classList.add(`invalid-${type}`); + } +
+ +
+

Marks a question as invalid in the form UI.

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + +
NameDescription
control +
    +
  • form control HTML element
  • +
+
+
type +
    +
  • One of "constraint", "required" and "relevant".
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + setValid + + +
+ Default value : function (control, type) { + const wrap = this.input.getWrapNode(control); + + if (!wrap) { + // TODO: this condition occurs, at least in tests for itemsets, but we need find out how. + return; + } + + const classes = type + ? [`invalid-${type}`] + : [...wrap.classList].filter((cl) => cl.indexOf("invalid-") === 0); + wrap.classList.remove(...classes); + } +
+ +
+

Removes an invalid mark on a question in the form UI.

+
+
+
+ Parameters : + + + + + + + + + + + + + + + + + +
NameDescription
control +
    +
  • form control HTML element
  • +
+
+
type +
    +
  • One of "constraint", "required" and "relevant".
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + toc + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + Public + updateValidityInUi + + +
+ Default value : function (control, result) { + const passed = result.requiredValid !== false && result.constraintValid !== false; + + // Update UI + if (result.requiredValid === false) { + this.setValid(control, "constraint"); + this.setInvalid(control, "required"); + } else if (result.constraintValid === false) { + this.setValid(control, "required"); + this.setInvalid(control, "constraint"); + } else { + this.setValid(control, "constraint"); + this.setValid(control, "required"); + } + + if (!passed) { + control.dispatchEvent(events.Invalidated()); + } + } +
+ +
+
+ Parameters : + + + + + + + + + + + + + + + + + +
NameDescription
control +
    +
  • form control HTML element
  • +
+
+
result +
    +
  • result object obtained from Nodeset.validate
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + validate + + +
+ Default value : this.validateAll +
+ +
+

Alias of validateAll

+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + validateAll + + +
+ Default value : function () { + const that = this; + // to not delay validation unnecessarily we only clear non-relevants if necessary + this.clearNonRelevant(); + + return this.validateContent(this.view.$).then((valid) => { + that.view.html.dispatchEvent(events.ValidationComplete()); + + return valid; + }); + } +
+ +
+

Clears all non-relevant question values if necessary and then +validates all enabled input fields after first resetting everything as valid.

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + validateContent + + +
+ Default value : function ($container) { + const that = this; + const invalidSelector = [".invalid-required", ".invalid-relevant"] + .concat(this.constraintClassesInvalid.map((cls) => `.${cls}`)) + .join(", "); + + // can't fire custom events on disabled elements therefore we set them all as valid + $container + .find( + "fieldset:disabled input, fieldset:disabled select, fieldset:disabled textarea, " + + "input:disabled, select:disabled, textarea:disabled" + ) + .each(function () { + that.setValid(this); + }); + + const validations = $container + .find(".question") + .addBack(".question") + .map(function () { + // only trigger validate on first input and use a **pure CSS** selector (huge performance impact) + const elem = this.querySelector( + "input:not(.ignore):not(:disabled), select:not(.ignore):not(:disabled), textarea:not(.ignore):not(:disabled)" + ); + if (!elem) { + return Promise.resolve(); + } + + return that.validateInput(elem); + }) + .toArray(); + + return Promise.all(validations) + .then(() => { + const container = $container[0]; + const firstError = container.matches(invalidSelector) + ? container + : container.querySelector(invalidSelector); + + if (firstError) { + that.goToTarget(firstError); + } + + return !firstError; + }) + .catch( + () => + // fail whole-form validation if any of the question + // validations threw. + false + ); + } +
+ +
+

Validates all enabled input fields in the supplied container, after first resetting everything as valid.

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
$container +
    +
  • HTML container element inside which to validate form controls
  • +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
+ + + Public + validateInput + + +
+ Default value : function (control) { + if (!this.initialized) { + return Promise.resolve(); + } + const that = this; + let getValidationResult; + // All properties, except for the **very expensive** index property + // There is some scope for performance improvement by determining other properties when they + // are needed, but that may not be so significant. + const n = { + path: this.input.getName(control), + inputType: this.input.getInputType(control), + xmlType: this.input.getXmlType(control), + enabled: this.input.isEnabled(control), + constraint: this.input.getConstraint(control), + calculation: this.input.getCalculation(control), + required: this.input.getRequired(control), + readonly: this.input.getReadonly(control), + val: this.input.getVal(control), + }; + // No need to validate, **nor send validation events**. Meant for simple empty "notes" only. + if (n.readonly && !n.val && !n.required && !n.constraint && !n.calculation) { + return Promise.resolve(); + } + + // The enabled check serves a purpose only when an input field itself is marked as enabled but its parent fieldset is not. + // If an element is disabled mark it as valid (to undo a previously shown branch with fields marked as invalid). + if (n.enabled && n.inputType !== "hidden") { + // Only now, will we determine the index. + n["ind"] = this.input.getIndex(control); + getValidationResult = this.model + .node(n.path, n["ind"]) + .validate(n.constraint, n.required, n.xmlType); + } else { + getValidationResult = Promise.resolve({ + requiredValid: true, + constraintValid: true, + }); + } + + return getValidationResult + .then((result) => { + if (n.inputType !== "hidden") { + this.updateValidityInUi(control, result); + } + + return result; + }) + .catch((e) => { + console.error("validation error", e); + that.setInvalid(control, "constraint"); + throw e; + }); + } +
+ +
+

Validates question values.

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + Public + validationUpdate + + +
+ Default value : function (updated: any = {}) { + if (config.validateContinuously === true) { + let upd = { ...updated }; + if (updated.cloned) { + /* + * We don't want requireds and constraints of questions in a newly created + * repeat to be evaluated immediately after the repeat is created. + * However, we do want constraints and requireds outside the repeat that + * depend on e.g. the count() of repeats to be re-evaluated. + * To achieve this we use a dirty trick and convert the "cloned" updated object + * to a regular "node" updated object. + */ + upd = { + nodes: updated.repeatPath.split("/").reverse().slice(0, 1), + }; + } + + // Find all inputs that have a dependency on the changed node. Avoid duplicates with Set. + const nodes = new Set(this.getRelatedNodes("data-required", "", upd).get()); + this.constraintAttributes.forEach((attr) => + this.getRelatedNodes(attr, "", upd).get().forEach(nodes.add, nodes) + ); + + nodes.forEach(this.validateInput, this); + } + } +
+ +
+

This re-validates questions that have a dependency on a question that has just been updated.

+

Note: it does not take care of re-validating a question itself after its value has changed due to a calculation update!

+
+
+
+ Parameters : + + + + + + + + + + + + + +
NameDescription
updated +
    +
  • object that contains information on updated nodes
  • +
+
+
+
+
+ + + + + + + + + + + + + + +
+ + + view + + +
+ Type : literal type + +
+ +
+ + + + + + + + + + + + + + +
+ + + widgets + + +
+ Type : any + +
+ +
+ + + + + + + + + + + + + + +
+ + + widgetsInitialized + + +
+ Type : boolean + +
+ +
+
+ + + + + + + +
+

+ Accessors +

+ + + + + + + + + + + + + + +
+ + evaluationCascade +
+ getevaluationCascade() +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + recordName +
+ getrecordName() +
+ +
+ +
+
+
+ setrecordName(name) +
+ +
+ +
+ Parameters : + + + + + + + + + + + + + + + + +
NameOptional
name + No +
+
+
+
+
+ Returns : void + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + editStatus +
+ geteditStatus() +
+ +
+ +
+
+
+ seteditStatus(status) +
+ +
+ +
+ Parameters : + + + + + + + + + + + + + + + + +
NameOptional
status + No +
+
+
+
+
+ Returns : void + +
+
+ + + + + + + + + + + + + + + + + +
+ + surveyName +
+ getsurveyName() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + instanceID +
+ getinstanceID() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + deprecatedID +
+ getdeprecatedID() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + instanceName +
+ getinstanceName() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + version +
+ getversion() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + encryptionKey +
+ getencryptionKey() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + action +
+ getaction() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + method +
+ getmethod() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + id +
+ getid() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + constraintClassesInvalid +
+ getconstraintClassesInvalid() +
+ +
+

To facilitate forks that support multiple constraints per question

+
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + constraintAttributes +
+ getconstraintAttributes() +
+ +
+

To facilitate forks that support multiple constraints per question

+
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + languages +
+ getlanguages() +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + + + +
+ + currentLanguage +
+ getcurrentLanguage() +
+ +
+ +
+
+
+
+
+ + +
+
import "./plugins";
+import "./extend";
+
+import $ from "jquery";
+
+import config from "../config";
+import calculationModule from "./calculate";
+import { closestAncestorUntil, getChild, getSiblingElement, getXPath } from "./dom-utils";
+import events from "./event";
+import { t } from "./fake-translator";
+import FormLogicError from "./form-logic-error";
+import { FormModel } from "./form-model";
+import { initTimeLocalization } from "./format";
+import inputHelper from "./input";
+import itemsetModule from "./itemset";
+import languageModule from "./language";
+import maskModule from "./mask";
+import outputModule from "./output";
+import pageModule from "./page";
+import preloadModule from "./preload";
+import progressModule from "./progress";
+import readonlyModule from "./readonly";
+import relevantModule from "./relevant";
+import repeatModule from "./repeat";
+import requiredModule from "./required";
+import { callOnIdle } from "./timers";
+import tocModule from "./toc";
+import type { FormDataObj } from "./type-def";
+import { getFilename, joinPath, parseFunctionFromExpression, stripQuotes } from "./utils";
+import widgetModule from "./widgets-controller";
+
+export type FormOptions = {
+  /**
+   * Overrides the default languages rules of the XForm itself. Pass any valid and present-in-the-form IANA subtag string, e.g. `ar`.
+   */
+  language?: string | undefined;
+  /**
+   * If `printRelevantOnly` is set to `true`
+   * or not set at all, printing the form only includes what is visible, ie. all the
+   * groups and questions that do not have a `relevant` expression or for which the
+   * expression evaluates to `true`.
+   */
+  printRelevantOnly?: boolean | undefined;
+};
+export type ValidateInputResolution = {
+  requiredValid: boolean;
+  constraintValid: boolean;
+};
+
+class Form {
+  nonRepeats: {};
+  all: {};
+  options: FormOptions;
+  view: {
+    $: any;
+    html: HTMLElement;
+    clone: Node;
+  };
+  model: FormModel;
+  repeatsPresent: boolean;
+  widgetsInitialized: boolean;
+  repeatsInitialized: boolean;
+  pageNavigationBlocked: boolean;
+  initialized: boolean;
+  // imported modules
+  toc: any;
+  pages: any;
+  langs: any;
+  progress: any;
+  widgets: any;
+  preloads: any;
+  relevant: any;
+  repeats: any;
+  input: any;
+  output: any;
+  itemset: any;
+  calc: any;
+  required: any;
+  mask: any;
+  //
+  readonly: any;
+  repeatPathPrefixes: string[] | null = null;
+
+  /**
+   * Static property with required enketo-transformer version.
+   */
+  requiredTransformerVersion = "2.1.6";
+
+  nodePathToRepeatPath: Record<string, string | null> = {};
+
+  evaluationCascadeAdditions: any[] = [];
+
+  /**
+   * Most methods are prototype method to facilitate customizations outside of enketo-core.
+   *
+   * @param {Element} formEl - HTML form element (a product of Enketo Transformer after transforming a valid ODK XForm)
+   * @param {FormDataObj} data - Data object containing XML model, (partial) XML instance-to-load, external data and flag about whether instance-to-load has already been submitted before.
+   * @param {FormOptions} [options]
+   * @class
+   */
+  constructor(formEl: HTMLElement, data: FormDataObj["modelStr"], options: FormOptions) {
+    const $form = $(formEl);
+    if (typeof formEl === "string") {
+      console.warn("Form instantiation using a selector", "a HTML <form> element");
+      formEl = $form[0];
+    }
+
+    this.nonRepeats = {};
+    this.all = {};
+    this.options = typeof options !== "object" ? {} : options;
+
+    this.view = {
+      $: $form,
+      html: formEl,
+      clone: formEl.cloneNode(true),
+    };
+    this.model = new FormModel(data);
+    console.log("model", this.model);
+    this.repeatsPresent = !!this.view.html.querySelector(".or-repeat");
+    this.widgetsInitialized = false;
+    this.repeatsInitialized = false;
+    this.pageNavigationBlocked = false;
+    this.initialized = false;
+  }
+
+  get evaluationCascade() {
+    const baseEvaluationCascade = [
+      this.calc.update.bind(this.calc),
+      this.repeats.countUpdate.bind(this.repeats),
+      this.relevant.update.bind(this.relevant),
+      this.output.update.bind(this.output),
+      this.itemset.update.bind(this.itemset),
+      this.required.update.bind(this.required),
+      this.readonly.update.bind(this.readonly),
+      this.validationUpdate,
+    ];
+
+    if (this.evaluationCascadeAdditions.length > 0) {
+      baseEvaluationCascade.push(function (...args) {
+        for (const fn of this.evaluationCascadeAdditions) {
+          fn.apply(this, args);
+        }
+      });
+    }
+
+    if (config.experimentalOptimizations.computeAsync) {
+      return baseEvaluationCascade.map(
+        (fn) =>
+          function (...args) {
+            callOnIdle(() => fn.apply(this, args));
+          }
+      );
+    }
+
+    return baseEvaluationCascade;
+  }
+  /**
+   * @type {string}
+   */
+  get recordName() {
+    return this.view.$.attr("name");
+  }
+  set recordName(name) {
+    this.view.$.attr("name", name);
+  }
+  /**
+   * @type {boolean}
+   */
+  get editStatus() {
+    return this.view.html.dataset.edited === "true";
+  }
+  set editStatus(status) {
+    // only trigger edit event once
+    if (status && status !== this.editStatus) {
+      this.view.html.dispatchEvent(events.Edited());
+    }
+    this.view.html.dataset.edited = status as any;
+  }
+  /**
+   * @type {string}
+   */
+  get surveyName() {
+    return this.view.$.find("#form-title").text();
+  }
+  /**
+   * @type {string}
+   */
+  get instanceID() {
+    return this.model.instanceID;
+  }
+  /**
+   * @type {string}
+   */
+  get deprecatedID() {
+    return this.model.deprecatedID;
+  }
+  /**
+   * @type {string}
+   */
+  get instanceName() {
+    return this.model.instanceName;
+  }
+  /**
+   * @type {string}
+   */
+  get version() {
+    return this.model.version;
+  }
+  /**
+   * @type {string}
+   */
+  get encryptionKey() {
+    return this.view.$.data("base64rsapublickey");
+  }
+  /**
+   * @type {string}
+   */
+  get action() {
+    return this.view.$.attr("action");
+  }
+  /**
+   * @type {string}
+   */
+  get method() {
+    return this.view.$.attr("method");
+  }
+  /**
+   * @type {string}
+   */
+  get id() {
+    return this.view.html.dataset.formId;
+  }
+  /**
+   * To facilitate forks that support multiple constraints per question
+   *
+   * @type {Array<string>}
+   */
+  get constraintClassesInvalid() {
+    return ["invalid-constraint"];
+  }
+  /**
+   * To facilitate forks that support multiple constraints per question
+   *
+   * @type {Array<string>}
+   */
+  get constraintAttributes() {
+    return ["data-constraint"];
+  }
+  /**
+   * @type {Array<string>}
+   */
+  get languages() {
+    return this.langs.languagesUsed;
+  }
+  /**
+   * @type {string}
+   */
+  get currentLanguage() {
+    return this.langs.currentLanguage;
+  }
+
+  /**
+   * Returns a module and adds the form property to it.
+   *
+   * @param {object} module - Enketo Core module
+   * @return {object} updated module
+   */
+  public addModule = function (module) {
+    return Object.create(module, {
+      form: {
+        value: this,
+      },
+    });
+  };
+
+  /**
+   * Function: init
+   *
+   * Initializes the Form instance (XML Model and HTML View).
+   *
+   * @return {Array<string>} List of initialization errors.
+   */
+  public init = function () {
+    let loadErrors = [];
+    const that = this;
+
+    initTimeLocalization(this.view.html);
+
+    this.toc = this.addModule(tocModule);
+    this.pages = this.addModule(pageModule);
+    this.langs = this.addModule(languageModule);
+    this.progress = this.addModule(progressModule);
+    this.widgets = this.addModule(widgetModule);
+    this.preloads = this.addModule(preloadModule);
+    this.relevant = this.addModule(relevantModule);
+    this.repeats = this.addModule(repeatModule);
+    this.input = this.addModule(inputHelper);
+    this.output = this.addModule(outputModule);
+    this.itemset = this.addModule(itemsetModule);
+    this.calc = this.addModule(calculationModule);
+    this.required = this.addModule(requiredModule);
+    this.mask = this.addModule(maskModule);
+    this.readonly = this.addModule(readonlyModule);
+
+    // Handle odk-instance-first-load event
+    this.model.events.addEventListener(events.InstanceFirstLoad().type, (event) => {
+      this.calc.performAction("setvalue", event);
+      this.calc.performAction("setgeopoint", event);
+    });
+
+    // Handle odk-new-repeat event before initializing repeats
+    this.view.html.addEventListener(events.NewRepeat().type, (event) => {
+      this.calc.performAction("setvalue", event);
+      this.calc.performAction("setgeopoint", event);
+    });
+
+    // Handle xforms-value-changed
+    this.view.html.addEventListener(events.XFormsValueChanged().type, (event) => {
+      this.calc.performAction("setvalue", event);
+      this.calc.performAction("setgeopoint", event);
+    });
+
+    // Before initializing form view and model, passthrough some model events externally
+    // Because of instance-first-load actions, this should be done before the model is initialized. This is important for custom
+    // applications that submit each individual value separately (opposed to a full XML model at the end).
+    this.model.events.addEventListener(events.DataUpdate().type, (event) => {
+      that.view.html.dispatchEvent(events.DataUpdate(event.detail));
+    });
+
+    // This probably does not need to be before model.init();
+    this.model.events.addEventListener(events.Removed().type, (event) => {
+      that.view.html.dispatchEvent(events.Removed(event.detail));
+    });
+
+    loadErrors = loadErrors.concat(this.model.init());
+
+    if (typeof this.model === "undefined" || !(this.model instanceof FormModel)) {
+      loadErrors.push("Form could not be initialized without a model.");
+
+      return loadErrors;
+    }
+
+    try {
+      this.preloads.init();
+
+      // before widgets.init (as instanceID used in offlineFilepicker widget)
+      // store the current instanceID as data on the form element so it can be easily accessed by e.g. widgets
+      this.view.$.data({
+        instanceID: this.model.instanceID,
+      });
+
+      // before calc.update!
+      this.grosslyViolateStandardComplianceByIgnoringCertainCalcs();
+      // before repeats.init to make sure the jr:repeat-count calculation has been evaluated
+      this.calc.update();
+
+      // before itemset.update
+      this.langs.init(this.options.language);
+
+      // before repeats.init so that template contains role="page" when applicable
+      this.pages.init();
+
+      // after radio button data-name setting (now done in XLST)
+      let repeatsAdded = 0;
+
+      const tempHandlerAddRepeat = () => {
+        repeatsAdded += 1;
+      };
+
+      this.view.html.addEventListener(events.AddRepeat().type, tempHandlerAddRepeat);
+
+      this.repeatsInitialized = true;
+      this.repeats.init();
+
+      // Recalculate after repeats are initialized. Previously this was performed in
+      // `tempHandlerAddRepeat`, but recalculating them all at once is significantly faster.
+      if (repeatsAdded > 0) {
+        this.calc.update({
+          allRepeats: true,
+          cloned: true,
+        });
+
+        this.all = {};
+
+        // Builds a cache of known repeat path prefixes `repeat.init`.
+        // The cache is sorted by length, longest to shortest, to ensure
+        // that lookups using this cache find the deepest nested repeat
+        // for a given path.
+        this.repeatPathPrefixes = Array.from<any>(
+          this.view.html.querySelectorAll(".or-repeat-info")
+        )
+          .map((element) => `${element.dataset.name}/`)
+          .sort((a, b) => b.length - a.length);
+      }
+
+      this.view.html.removeEventListener(events.AddRepeat().type, tempHandlerAddRepeat);
+
+      // after repeats.init, but before itemset.update
+      this.output.update();
+
+      // after repeats.init
+      this.itemset.update();
+
+      // after repeats.init
+      this.setAllVals();
+
+      this.readonly.update(); // after setAllVals();
+
+      // after setAllVals, after repeats.init
+
+      this.options.input = this.input;
+      this.options.pathToAbsolute = this.pathToAbsolute.bind(this);
+      this.options.evaluate = this.model.evaluate.bind(this.model);
+      this.options.getModelValue = this.getModelValue.bind(this);
+      this.widgetsInitialized = this.widgets.init(null, this.options);
+
+      // after widgets.init(), and after repeats.init(), and after pages.init()
+      this.relevant.update();
+
+      // after widgets init to make sure widget handlers are called before
+      // after loading existing instance to not trigger an 'edit' event
+      this.setEventHandlers();
+
+      // Update field calculations again to make sure that dependent
+      // field values are calculated
+      this.calc.update();
+
+      this.required.update();
+
+      this.mask.init();
+
+      this.editStatus = false;
+
+      if (this.options.printRelevantOnly !== false) {
+        this.view.$.addClass("print-relevant-only");
+      }
+
+      setTimeout(() => {
+        that.progress.update();
+      }, 0);
+
+      this.initialized = true;
+
+      return loadErrors;
+    } catch (e) {
+      console.error(e);
+      loadErrors.push(`${e.name}: ${e.message}`);
+    }
+
+    document.querySelector("body").scrollIntoView();
+
+    return loadErrors;
+  };
+
+  /**
+   * @param {string} xpath - simple path to question
+   * @return {Array<string>} A list of errors originated from `goToTarget`. Empty if everything went fine.
+   */
+  public goTo = function (xpath) {
+    const errors = [];
+    if (!this.goToTarget(this.getGoToTarget(xpath))) {
+      errors.push(
+        t("alert.gotonotfound.msg", {
+          path: xpath.substring(xpath.lastIndexOf("/") + 1),
+        })
+      );
+    }
+
+    return errors;
+  };
+
+  /**
+   * Obtains a string of primary instance.
+   *
+   * @param {{include: boolean}} [include] - Optional object items to exclude if false
+   * @return {string} XML string of primary instance
+   */
+  public getDataStr = function (include: any = {}) {
+    // By default everything is included
+    if (include.irrelevant === false) {
+      return this.getDataStrWithoutIrrelevantNodes();
+    }
+
+    return this.model.getStr();
+  };
+
+  /**
+   * Restores HTML form to pre-initialized state. It is meant to be called before re-initializing with
+   * new Form ( .....) and form.init()
+   * For this reason, it does not fix event handler, $form, formView.$ etc.!
+   * It also does not affect the XML instance!
+   *
+   * @return {Element} the new form element
+   */
+  public resetView = function () {
+    // form language selector was moved outside of <form> so has to be separately removed
+    if (this.langs.formLanguages) {
+      this.langs.formLanguages.remove();
+    }
+    this.view.html.replaceWith(this.view.clone);
+
+    return document.querySelector("form.or");
+  };
+
+  /**
+   * Implements jr:choice-name
+   * TODO: this needs to work for all expressions (relevants, constraints), now it only works for calculated items
+   * Ideally this belongs in the form Model, but unfortunately it needs access to the view
+   *
+   * @param {string} expr - XPath expression
+   * @param {string} resTypeStr - type of result
+   * @param {string} context - context path
+   * @param {number} index - index of context
+   * @param {boolean} tryNative - whether to try the native evaluator, i.e. if there is no risk it would create an incorrect result such as with date comparisons
+   * @return {string} updated expression
+   */
+  public replaceChoiceNameFn = function (expr, resTypeStr, context, index, tryNative) {
+    const choiceNames = parseFunctionFromExpression(expr, "jr:choice-name");
+
+    choiceNames.forEach((choiceName) => {
+      const params = choiceName[1];
+
+      if (params.length === 2) {
+        let label = "";
+        const value = this.model.evaluate(params[0], resTypeStr, context, index, tryNative);
+        let name = stripQuotes(params[1]).trim();
+        name = name.startsWith("/") ? name : joinPath(context, name);
+        const inputs = [
+          ...this.view.html.querySelectorAll(`[name="${name}"], [data-name="${name}"]`),
+        ];
+        const nodeName = inputs.length ? inputs[0].nodeName.toLowerCase() : null;
+
+        if (!value || !inputs.length) {
+          label = "";
+        } else if (nodeName === "select") {
+          const found = inputs.find((input) =>
+            input.querySelector(`[value="${CSS.escape(value)}"]`)
+          );
+          label = found ? found.querySelector(`[value="${CSS.escape(value)}"]`).textContent : "";
+        } else if (nodeName === "input") {
+          const list = inputs[0].getAttribute("list");
+
+          if (!list) {
+            const found = inputs.find((input) => input.getAttribute("value") === value);
+            const firstSiblingLabelEl = found
+              ? getSiblingElement(found, ".option-label.active")
+              : [];
+            label = firstSiblingLabelEl ? (firstSiblingLabelEl as Element).textContent : "";
+          } else {
+            const firstSiblingListEl = getSiblingElement(inputs[0], `datalist#${CSS.escape(list)}`);
+            if (firstSiblingListEl) {
+              const optionEl = firstSiblingListEl.querySelector(`[data-value="${value}"]`);
+              label = optionEl ? optionEl.getAttribute("value") : "";
+            }
+          }
+        }
+
+        expr = expr.replace(choiceName[0], `"${label}"`);
+      } else {
+        throw new FormLogicError(
+          `jr:choice-name function has incorrect number of parameters: ${choiceName[0]}`
+        );
+      }
+    });
+
+    return expr;
+  };
+
+  /**
+   * Uses current state of model to set all the values in the form.
+   * Since not all data nodes with a value have a corresponding input element,
+   * we cycle through the HTML form elements and check for each form element whether data is available.
+   *
+   * @param {jQuery} $group - group of elements for which form controls should be updated (with current model values)
+   * @param {number} groupIndex - index of the group
+   */
+  public setAllVals = function ($group, groupIndex) {
+    const that = this;
+    const selector = $group && $group.attr("name") ? $group.attr("name") : null;
+
+    groupIndex = typeof groupIndex !== "undefined" ? groupIndex : null;
+
+    this.model
+      .node(selector, groupIndex)
+      .getElements()
+      .reduce((nodes, current) => {
+        const newNodes = [...current.querySelectorAll("*")].filter(
+          (n) => n.children.length === 0 && n.textContent
+        );
+
+        return nodes.concat(newNodes);
+      }, [])
+      .forEach((element) => {
+        let value;
+        let name;
+
+        try {
+          value = element.textContent;
+          name = getXPath(element, "instance");
+          const index = that.model.node(name).getElements().indexOf(element);
+          const control = that.input.find(name, index);
+          if (control) {
+            that.input.setVal(control, value, null);
+            if (
+              that.input.getXmlType(control) === "binary" &&
+              value.startsWith("jr://") &&
+              element.getAttribute("src")
+            ) {
+              control.setAttribute("data-loaded-url", element.getAttribute("src"));
+            }
+          }
+        } catch (e) {
+          console.error(e);
+          // TODO: Test if this correctly adds to loadErrors
+          // loadErrors.push( 'Could not load input field value with name: ' + name + ' and value: ' + value );
+          throw new Error(
+            `Could not load input field value with name: ${name} and value: ${value}`
+          );
+        }
+      });
+  };
+
+  /**
+   * @param {jQuery} $control - HTML form control
+   * @return {string|undefined} Value
+   */
+  public getModelValue = function ($control) {
+    const control = $control[0];
+    const path = this.input.getName(control);
+    const index = this.input.getIndex(control);
+
+    return this.model.node(path, index).getVal();
+  };
+
+  /**
+   * Finds nodes that have attributes with XPath expressions that refer to particular XML elements.
+   *
+   * @param {string} attr - The attribute name to search for
+   * @param {string} [filter] - The optional filter to append to each selector
+   * @param {UpdatedDataNodes} updated - object that contains information on updated nodes
+   * @return {jQuery} - A jQuery collection of elements
+   */
+  public getRelatedNodes = function (attr, filter, updated) {
+    let repeatControls = null;
+    let controls;
+    updated = updated || {};
+    filter = filter || "";
+
+    const { allRepeats, cloned, repeatPath } = updated;
+
+    // The collection of non-repeat inputs, calculations and groups is cached (unchangeable)
+    if (!allRepeats && !this.nonRepeats[attr]) {
+      controls = [...this.view.html.querySelectorAll(`:not(.or-repeat-info)[${attr}]`)].filter(
+        (el) => !el.closest(".or-repeat")
+      );
+      this.nonRepeats[attr] = this.filterRadioCheckSiblings(controls);
+    }
+
+    if (allRepeats) {
+      const controls = [...this.view.html.querySelectorAll(`form.or .or-repeat [${attr}]`)];
+      repeatControls = this.filterRadioCheckSiblings(controls);
+    } else if (typeof repeatPath !== "undefined" && updated.repeatIndex >= 0) {
+      // If the updated node is inside a repeat (and there are multiple repeats present)
+      const repeatEl = [...this.view.html.querySelectorAll(`.or-repeat[name="${repeatPath}"]`)][
+        updated.repeatIndex
+      ];
+      controls = repeatEl ? [...repeatEl.querySelectorAll(`[${attr}]`)] : [];
+      repeatControls = this.filterRadioCheckSiblings(controls);
+    }
+
+    // If a new repeat was created, update the cached collection of all form controls with that attribute
+    // If a repeat was deleted (updated.repeatPath && !updated.cloned), rebuild cache.
+    // Exclude outputs from the cache, because outputs can be added via itemsets (in labels).
+    if (!this.all[attr] || (repeatPath && !cloned) || filter === ".or-output") {
+      // (re)build the cache
+      // However, if repeats have not been initialized exclude nodes inside a repeat until the first repeat has been added during repeat initialization.
+      // The default view repeat will be removed during initialization (and stored as template), before it is re-added, if necessary.
+      // We need to avoid adding these fields to the initial cache,
+      // so we don't waste time evaluating logic, and don't have to rebuild the cache after repeats have been initialized.
+      this.all[attr] = this.repeatsInitialized
+        ? this.filterRadioCheckSiblings([...this.view.html.querySelectorAll(`[${attr}]`)])
+        : this.nonRepeats[attr];
+    } else if (cloned && repeatControls) {
+      // update the cache
+      this.all[attr] = this.all[attr].concat(repeatControls);
+    }
+
+    /**
+     * If the update was triggered from a repeat, it improves performance (a lot)
+     * to exclude all those repeats that did not trigger it...
+     * However, this will break if people are referring to nodes in other
+     * repeats such as with /path/to/repeat[3]/node, /path/to/repeat[position() = 3]/node or indexed-repeat(/path/to/repeat/node, /path/to/repeat, 3).
+     * We accept that for now.
+     * */
+    let collection;
+    if (repeatControls) {
+      // The non-repeat fields have to be added too, e.g. to update a calculated item with count(to/repeat/node) at the top level
+      collection = this.nonRepeats[attr].concat(repeatControls);
+    } else {
+      collection = this.all[attr];
+    }
+
+    let selector = [];
+    // Add selectors based on specific changed nodes
+    if (!updated.nodes || updated.nodes.length === 0) {
+      if (repeatControls != null && cloned && filter === ".itemset-template") {
+        selector = [`.or-repeat[name="${repeatPath}"] ${filter}[${attr}]`];
+      } else {
+        selector = [`${filter}[${attr}]`];
+      }
+    } else {
+      updated.nodes.forEach((node) => {
+        selector = selector.concat(this.getQuerySelectorsForLogic(filter, attr, node));
+      });
+      // add all the paths that use the /* selector at end of path
+      selector = selector.concat(this.getQuerySelectorsForLogic(filter, attr, "*"));
+    }
+
+    const selectorStr = selector.join(", ");
+    collection = selectorStr ? collection.filter((el) => el.matches(selectorStr)) : collection;
+
+    // TODO: exclude descendents of disabled elements? .find( ':not(:disabled) span.active' )
+    // TODO: remove jQuery wrapper, just return array of elements
+    return $(collection);
+  };
+
+  /**
+   * @param {Array<Element>} controls - radiobutton/checkbox HTML input elements
+   * @return {Array<Element>} filtered controls without any sibling radiobuttons and checkboxes (only the first)
+   */
+  public filterRadioCheckSiblings = (controls) => {
+    const wrappers = [];
+
+    return controls.filter((control) => {
+      // TODO: can this be further performance-optimized?
+      const wrapper =
+        control.type === "radio" || control.type === "checkbox"
+          ? closestAncestorUntil(control, ".option-wrapper", ".question")
+          : null;
+      // Filter out duplicate radiobuttons and checkboxes
+      if (wrapper) {
+        if (wrappers.includes(wrapper)) {
+          return false;
+        }
+        wrappers.push(wrapper);
+      }
+
+      return true;
+    });
+  };
+
+  /**
+   * Crafts an optimized selector for element attributes that contain an expression with a target node name.
+   *
+   * @param {string} filter - The filter to use
+   * @param {string} attr - The attribute to target
+   * @param {string} nodeName - The XML nodeName to find
+   * @return {string} The selector
+   */
+  public getQuerySelectorsForLogic = (filter, attr, nodeName) => [
+    // The target node name is ALWAYS at the END of a path inside the expression.
+    // #1: followed by space
+    `${filter}[${attr}*="/${nodeName} "]`,
+    // #2: followed by )
+    `${filter}[${attr}*="/${nodeName})"]`,
+    // #3: followed by , if used as first parameter of multiple parameters
+    `${filter}[${attr}*="/${nodeName},"]`,
+    // #4: at the end of an expression
+    `${filter}[${attr}$="/${nodeName}"]`,
+    // #5: followed by ] (used in itemset filters)
+    `${filter}[${attr}*="/${nodeName}]"]`,
+    // #6: followed by [ (used when filtering nodes in repeat instances)
+    `${filter}[${attr}*="/${nodeName}["]`,
+  ];
+
+  /**
+   * Obtains the XML primary instance as string without nodes that have a relevant
+   * that evaluates to false.
+   *
+   * Though this function may be slow it is slow when it doesn't matter much (upon saving). The
+   * alternative is to add some logic to relevant.update to mark irrelevant nodes in the model
+   * but that would slow down form loading and form traversal when it does matter.
+   *
+   * @return {string} Data string
+   */
+  public getDataStrWithoutIrrelevantNodes = function () {
+    const that = this;
+    const modelClone = new FormModel(this.model.getStr());
+    modelClone.init();
+
+    // Since we are removing nodes, we need to go in reverse order to make sure
+    // the indices are still correct!
+    this.getRelatedNodes("data-relevant")
+      .reverse()
+      .each(function () {
+        const node = this;
+        const relevant = that.input.getRelevant(node);
+        const index = that.input.getIndex(node);
+        const path = that.input.getName(node);
+        let target;
+
+        /*
+         * Copied from relevant.js:
+         *
+         * If the relevant is placed on a group and that group contains repeats with the same name,
+         * but currently has 0 repeats, the context will not be available.
+         */
+        if (
+          getChild(node, `.or-repeat-info[data-name="${path}"]`) &&
+          !getChild(node, `.or-repeat[name="${path}"]`)
+        ) {
+          target = null;
+        } else {
+          // If a calculation without a form control (i.e. in .calculated-items) inside a repeat
+          // has a relevant, and there 0 instances of that repeat,
+          // there is nothing to remove (and target is undefined)
+          // https://github.com/enketo/enketo-core/issues/761
+          // TODO: It would be so much nicer if form-control-less calculations were placed inside the repeat instead.
+          target = modelClone.node(path, index).getElement();
+        }
+
+        /*
+         * If performance becomes an issue, some opportunities are:
+         * - check if ancestor is relevant
+         * - use cache of relevant.update
+         * - check for repeatClones to avoid calculating index (as in relevant.update)
+         */
+        if (target && !that.model.evaluate(relevant, "boolean", path, index)) {
+          target.remove();
+        }
+      });
+
+    return modelClone.getStr();
+  };
+
+  /**
+   * See https://groups.google.com/forum/?fromgroups=#!topic/opendatakit-developers/oBn7eQNQGTg
+   * and http://code.google.com/p/opendatakit/issues/detail?id=706
+   *
+   * This is using an aggressive name attribute selector to also find e.g. name="/../orx:meta/orx:instanceID", with
+   * *ANY* namespace prefix.
+   *
+   * Once the following is complete this function can and should be removed:
+   *
+   * 1. ODK Collect starts supporting an instanceID preload item (or automatic handling of meta->instanceID without binding)
+   * 2. Pyxforms changes the instanceID binding from calculate to preload (or without binding)
+   * 3. Formhub has re-generated all stored XML forms from the stored XLS forms with the updated pyxforms
+   *
+   */
+  public grosslyViolateStandardComplianceByIgnoringCertainCalcs = function () {
+    const $culprit = this.view.$.find('[name$="instanceID"][data-calculate]');
+    if ($culprit.length > 0) {
+      $culprit.removeAttr("data-calculate");
+    }
+  };
+
+  /**
+   * This re-validates questions that have a dependency on a question that has just been updated.
+   *
+   * Note: it does not take care of re-validating a question itself after its value has changed due to a calculation update!
+   *
+   * @param {UpdatedDataNodes} updated - object that contains information on updated nodes
+   */
+  public validationUpdate = function (updated: any = {}) {
+    if (config.validateContinuously === true) {
+      let upd = { ...updated };
+      if (updated.cloned) {
+        /*
+         * We don't want requireds and constraints of questions in a newly created
+         * repeat to be evaluated immediately after the repeat is created.
+         * However, we do want constraints and requireds outside the repeat that
+         * depend on e.g. the count() of repeats to be re-evaluated.
+         * To achieve this we use a dirty trick and convert the "cloned" updated object
+         * to a regular "node" updated object.
+         */
+        upd = {
+          nodes: updated.repeatPath.split("/").reverse().slice(0, 1),
+        };
+      }
+
+      // Find all inputs that have a dependency on the changed node. Avoid duplicates with Set.
+      const nodes = new Set(this.getRelatedNodes("data-required", "", upd).get());
+      this.constraintAttributes.forEach((attr) =>
+        this.getRelatedNodes(attr, "", upd).get().forEach(nodes.add, nodes)
+      );
+
+      nodes.forEach(this.validateInput, this);
+    }
+  };
+
+  /**
+   * A big function that sets event handlers.
+   */
+  public setEventHandlers = function () {
+    const that = this;
+
+    // Prevent default submission, e.g. when text field is filled in and Enter key is pressed
+    this.view.$.attr("onsubmit", "return false;");
+
+    /*
+     * The listener below catches both change and change.file events.
+     * The .file namespace is used in the filepicker to avoid an infinite loop.
+     *
+     * Fields with the "ignore" class are dynamically added to the DOM in a widget and are supposed to be handled
+     * by the widget itself, e.g. the search field in a geopoint widget. They should be ignored by the main engine.
+     *
+     * Readonly fields are not excluded because of this scenario:
+     * 1. readonly field has a calculation
+     * 2. readonly field becomes non-relevant (e.g. parent group with relevant)
+     * 3. this clears value in view, which should propagate to model via 'change' event
+     */
+    this.view.$.on(
+      "change.file",
+      "input:not(.ignore), select:not(.ignore), textarea:not(.ignore)",
+      function () {
+        const input = this;
+        const n = {
+          path: that.input.getName(input),
+          inputType: that.input.getInputType(input),
+          xmlType: that.input.getXmlType(input),
+          val: that.input.getVal(input),
+          index: that.input.getIndex(input),
+        };
+
+        // set file input values to the uniqified actual name of file (without c://fakepath or anything like that)
+        if (
+          n.val.length > 0 &&
+          n.inputType === "file" &&
+          input.files[0] &&
+          input.files[0].size > 0
+        ) {
+          n.val = getFilename(input.files[0], input.dataset.filenamePostfix);
+        }
+        if (n.val.length > 0 && n.inputType === "drawing") {
+          n.val = getFilename(
+            {
+              name: n.val,
+            },
+            input.dataset.filenamePostfix
+          );
+        }
+
+        const updated = that.model.node(n.path, n.index).setVal(n.val, n.xmlType);
+
+        if (updated) {
+          that.validateInput(input).then(() => {
+            // after internal processing is completed
+            input.dispatchEvent(events.XFormsValueChanged({ repeatIndex: n.index }));
+          });
+        }
+      }
+    );
+
+    // doing this on the focus event may have little effect on performance, because nothing else is happening :)
+    this.view.html.addEventListener("focusin", (event) => {
+      // update the form progress status
+      this.progress.update(event.target);
+    });
+
+    this.view.html.addEventListener(events.FakeFocus().type, (event) => {
+      // update the form progress status
+      this.progress.update(event.target);
+    });
+
+    this.model.events.addEventListener(events.DataUpdate().type, (event) => {
+      that.evaluationCascade.forEach((fn) => {
+        fn.call(that, event.detail);
+      }, true);
+      // edit is fired when the model changes after the form has been initialized
+      that.editStatus = true;
+    });
+
+    this.view.html.addEventListener(events.AddRepeat().type, (event) => {
+      const $clone = $(event.target);
+
+      // Set template-defined static defaults of added repeats in Form, setAllVals does not trigger change event
+      this.setAllVals($clone, event.detail.repeatIndex);
+
+      // Initialize calculations, relevant, itemset, required, output inside that repeat.
+      this.evaluationCascade.forEach((fn) => {
+        fn.call(that, event.detail);
+      });
+      this.progress.update();
+    });
+
+    this.view.html.addEventListener(events.RemoveRepeat().type, () => {
+      this.progress.update();
+    });
+
+    this.view.html.addEventListener(events.ChangeLanguage().type, () => {
+      this.output.update();
+    });
+
+    this.view.$.find(".or-group > h4").on("click", function () {
+      // The resize trigger is to make sure canvas widgets start working.
+      $(this).closest(".or-group").toggleClass("or-appearance-compact").trigger("resize");
+    });
+  };
+
+  /**
+   * Removes an invalid mark on a question in the form UI.
+   *
+   * @param {Element} control - form control HTML element
+   * @param {string} [type] - One of "constraint", "required" and "relevant".
+   */
+  public setValid = function (control, type) {
+    const wrap = this.input.getWrapNode(control);
+
+    if (!wrap) {
+      // TODO: this condition occurs, at least in tests for itemsets, but we need find out how.
+      return;
+    }
+
+    const classes = type
+      ? [`invalid-${type}`]
+      : [...wrap.classList].filter((cl) => cl.indexOf("invalid-") === 0);
+    wrap.classList.remove(...classes);
+  };
+
+  /**
+   * Marks a question as invalid in the form UI.
+   *
+   * @param {Element} control - form control HTML element
+   * @param {string} [type] - One of "constraint", "required" and "relevant".
+   */
+  public setInvalid = function (control, type = "constraint") {
+    const wrap = this.input.getWrapNode(control);
+
+    if (!wrap) {
+      // TODO: this condition occurs, at least in tests for itemsets, but we need find out how.
+      return;
+    }
+
+    if (config.validatePage === false && this.isValid(control)) {
+      this.blockPageNavigation();
+    }
+
+    wrap.classList.add(`invalid-${type}`);
+  };
+
+  /**
+   *
+   * @param {*} control - form control HTML element
+   * @param {*} result - result object obtained from Nodeset.validate
+   */
+  public updateValidityInUi = function (control, result) {
+    const passed = result.requiredValid !== false && result.constraintValid !== false;
+
+    // Update UI
+    if (result.requiredValid === false) {
+      this.setValid(control, "constraint");
+      this.setInvalid(control, "required");
+    } else if (result.constraintValid === false) {
+      this.setValid(control, "required");
+      this.setInvalid(control, "constraint");
+    } else {
+      this.setValid(control, "constraint");
+      this.setValid(control, "required");
+    }
+
+    if (!passed) {
+      control.dispatchEvent(events.Invalidated());
+    }
+  };
+
+  /**
+   * Blocks page navigation for a short period.
+   * This can be used to ensure that the user sees a new error message before moving to another page.
+   */
+  public blockPageNavigation = function () {
+    const that = this;
+    this.pageNavigationBlocked = true;
+    window.clearTimeout(this.blockPageNavigationTimeout);
+    this.blockPageNavigationTimeout = window.setTimeout(() => {
+      that.pageNavigationBlocked = false;
+    }, 600);
+  };
+
+  /**
+   * Checks whether the question is not currently marked as invalid. If no argument is provided, it checks the whole form.
+   *
+   * @param {Element} node - form control HTML element
+   * @return {!boolean} Whether the question/form is not marked as invalid.
+   */
+  public isValid = function (node) {
+    const invalidSelectors = [".invalid-required", ".invalid-relevant"].concat(
+      this.constraintClassesInvalid.map((cls) => `.${cls}`)
+    );
+    if (node) {
+      const question = this.input.getWrapNode(node);
+      const cls = question.classList;
+
+      return !invalidSelectors.some((selector) => cls.contains(selector));
+    }
+
+    return !this.view.html.querySelector(invalidSelectors.join(", "));
+  };
+
+  /**
+   * Clears non-relevant values.
+   */
+  public clearNonRelevant = function () {
+    this.relevant.update(null, true);
+  };
+
+  /**
+   * Clears all non-relevant question values if necessary and then
+   * validates all enabled input fields after first resetting everything as valid.
+   *
+   * @return {Promise} wrapping {boolean} whether the form contains any errors
+   */
+  public validateAll = function () {
+    const that = this;
+    // to not delay validation unnecessarily we only clear non-relevants if necessary
+    this.clearNonRelevant();
+
+    return this.validateContent(this.view.$).then((valid) => {
+      that.view.html.dispatchEvent(events.ValidationComplete());
+
+      return valid;
+    });
+  };
+
+  /**
+   * Alias of validateAll
+   *
+   * @function
+   */
+  public validate = this.validateAll;
+
+  /**
+   * Validates all enabled input fields in the supplied container, after first resetting everything as valid.
+   *
+   * @param {jQuery} $container - HTML container element inside which to validate form controls
+   * @return {Promise} wrapping {boolean} whether the container contains any errors
+   */
+  public validateContent = function ($container) {
+    const that = this;
+    const invalidSelector = [".invalid-required", ".invalid-relevant"]
+      .concat(this.constraintClassesInvalid.map((cls) => `.${cls}`))
+      .join(", ");
+
+    // can't fire custom events on disabled elements therefore we set them all as valid
+    $container
+      .find(
+        "fieldset:disabled input, fieldset:disabled select, fieldset:disabled textarea, " +
+          "input:disabled, select:disabled, textarea:disabled"
+      )
+      .each(function () {
+        that.setValid(this);
+      });
+
+    const validations = $container
+      .find(".question")
+      .addBack(".question")
+      .map(function () {
+        // only trigger validate on first input and use a **pure CSS** selector (huge performance impact)
+        const elem = this.querySelector(
+          "input:not(.ignore):not(:disabled), select:not(.ignore):not(:disabled), textarea:not(.ignore):not(:disabled)"
+        );
+        if (!elem) {
+          return Promise.resolve();
+        }
+
+        return that.validateInput(elem);
+      })
+      .toArray();
+
+    return Promise.all(validations)
+      .then(() => {
+        const container = $container[0];
+        const firstError = container.matches(invalidSelector)
+          ? container
+          : container.querySelector(invalidSelector);
+
+        if (firstError) {
+          that.goToTarget(firstError);
+        }
+
+        return !firstError;
+      })
+      .catch(
+        () =>
+          // fail whole-form validation if any of the question
+          // validations threw.
+          false
+      );
+  };
+
+  /**
+   * @param {string} targetPath - simple relative or absolute path
+   * @param {string} contextPath - absolute context path
+   * @return {string} absolute path
+   */
+  public pathToAbsolute = function (targetPath, contextPath) {
+    let target;
+
+    if (targetPath.indexOf("/") === 0) {
+      return targetPath;
+    }
+
+    // index is non-relevant (no positions in returned path)
+    target = this.model.evaluate(targetPath, "node", contextPath, 0, true);
+
+    return getXPath(target, "instance", false);
+  };
+
+  /**
+   * @typedef ValidateInputResolution
+   * @property {boolean} requiredValid
+   * @property {boolean} constraintValid
+   */
+
+  /**
+   * Validates question values.
+   *
+   * @param {Element} control - form control HTML element
+   * @return {Promise<undefined|ValidateInputResolution>} resolves with validation result
+   */
+  public validateInput = function (control) {
+    if (!this.initialized) {
+      return Promise.resolve();
+    }
+    const that = this;
+    let getValidationResult;
+    // All properties, except for the **very expensive** index property
+    // There is some scope for performance improvement by determining other properties when they
+    // are needed, but that may not be so significant.
+    const n = {
+      path: this.input.getName(control),
+      inputType: this.input.getInputType(control),
+      xmlType: this.input.getXmlType(control),
+      enabled: this.input.isEnabled(control),
+      constraint: this.input.getConstraint(control),
+      calculation: this.input.getCalculation(control),
+      required: this.input.getRequired(control),
+      readonly: this.input.getReadonly(control),
+      val: this.input.getVal(control),
+    };
+    // No need to validate, **nor send validation events**. Meant for simple empty "notes" only.
+    if (n.readonly && !n.val && !n.required && !n.constraint && !n.calculation) {
+      return Promise.resolve();
+    }
+
+    // The enabled check serves a purpose only when an input field itself is marked as enabled but its parent fieldset is not.
+    // If an element is disabled mark it as valid (to undo a previously shown branch with fields marked as invalid).
+    if (n.enabled && n.inputType !== "hidden") {
+      // Only now, will we determine the index.
+      n["ind"] = this.input.getIndex(control);
+      getValidationResult = this.model
+        .node(n.path, n["ind"])
+        .validate(n.constraint, n.required, n.xmlType);
+    } else {
+      getValidationResult = Promise.resolve({
+        requiredValid: true,
+        constraintValid: true,
+      });
+    }
+
+    return getValidationResult
+      .then((result) => {
+        if (n.inputType !== "hidden") {
+          this.updateValidityInUi(control, result);
+        }
+
+        return result;
+      })
+      .catch((e) => {
+        console.error("validation error", e);
+        that.setInvalid(control, "constraint");
+        throw e;
+      });
+  };
+
+  /**
+   * @param {string} path - path to HTML form control
+   * @return {null|Element} HTML question element
+   */
+  public getGoToTarget = function (path) {
+    let hits;
+    let modelNode;
+    let target;
+    let intermediateTarget;
+    let selector = "";
+    const repeatRegEx = /([^[]+)\[(\d+)\]([^[]*$)?/g;
+
+    if (!path) {
+      return;
+    }
+
+    modelNode = this.model.node(path).getElement();
+
+    if (!modelNode) {
+      return;
+    }
+
+    // Convert to absolute path, while maintaining positions.
+    path = getXPath(modelNode, "instance", true);
+
+    // Not inside a cloned repeat.
+    target = this.view.html.querySelector(`[name="${path}"]`);
+
+    // If inside a cloned repeat (i.e. a repeat that is not first-in-series)
+    if (!target) {
+      intermediateTarget = this.view.html;
+      while ((hits = repeatRegEx.exec(path)) !== null && intermediateTarget) {
+        selector += hits[1];
+        intermediateTarget = intermediateTarget.querySelectorAll(
+          `[name="${selector}"], [data-name="${selector}"]`
+        )[hits[2]];
+        if (intermediateTarget && hits[3]) {
+          selector += hits[3];
+          intermediateTarget = intermediateTarget.querySelector(
+            `[name="${selector}"],[data-name="${selector}"]`
+          );
+        }
+        target = intermediateTarget;
+      }
+    }
+
+    return target ? this.input.getWrapNode(target) : target;
+  };
+
+  /**
+   * Scrolls to an HTML question or group element, flips to the page it is on and focuses on the nearest form control.
+   *
+   * @param {HTMLElement} target - An HTML question or group element to scroll to
+   * @return {boolean} whether target found
+   */
+  public goToTarget = function (target: HTMLElement) {
+    console.trace("scroll to target", target);
+    if (target) {
+      if (this.pages.active) {
+        // Flip to page
+        this.pages.flipToPageContaining($(target));
+      }
+      // check if the target has a form control
+      if (target.closest(".calculation, .setvalue, .setgeopoint")) {
+        // It is up to the apps to decide what to do with this event.
+        target.dispatchEvent(events.GoToInvisible());
+      }
+      // check if the nearest question or group is irrelevant after page flip
+      if (target.closest(".or-branch.disabled")) {
+        // It is up to the apps to decide what to do with this event.
+        target.dispatchEvent(events.GoToIrrelevant());
+      }
+      // Scroll to element
+      target.scrollIntoView();
+      // Focus on the first non .ignore form control
+      // If the element is hidden (e.g. because it's been replaced by a widget),
+      // the focus event will not fire, so we also trigger an applyfocus event that widgets can listen for.
+      const input = target.querySelector<HTMLInputElement>(
+        "input:not(.ignore), textarea:not(.ignore), select:not(.ignore)"
+      );
+      input.focus();
+      input.dispatchEvent(events.ApplyFocus());
+    }
+
+    return !!target;
+  };
+}
+
+export { Form, FormModel };
+
+
+
+ + + + + + + + + +
+
+

results matching ""

+
    +
    +
    +

    No results matching ""

    +
    +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/MutationsTracker.html b/documentation/docs/generated/classes/MutationsTracker.html new file mode 100644 index 0000000000..b4e69445e1 --- /dev/null +++ b/documentation/docs/generated/classes/MutationsTracker.html @@ -0,0 +1,932 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + + + +
    +
    +

    +

    File

    +

    +

    + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts +

    + + + + + + +
    +

    Index

    + + + + + + + + + + + + + + + + + + + + + +
    +
    Properties
    +
    + +
    +
    Methods
    +
    + +
    +
    + +
    +

    Constructor

    + + + + + + + + + + + + + +
    +constructor(el) +
    + +
    +
    + Parameters : + + + + + + + + + + + + + + + + +
    NameOptional
    el + No +
    +
    +
    +
    + +
    + +

    + Properties +

    + + + + + + + + + + + + + + +
    + + + classChanges + + +
    + Default value : new WeakMap() +
    + +
    + + + + + + + + + + + + + + +
    + + + quiet + + +
    + Default value : true +
    + +
    +
    + +
    + +

    + Methods +

    + + + + + + + + + + + + + + + + + + + +
    + + + _resolveWhenTrue + + +
    +_resolveWhenTrue(fn) +
    + +
    + +
    + Parameters : + + + + + + + + + + + + + + + + + +
    NameOptional
    fn + No +
    +
    +
    +
    +
    + Returns : any + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + + waitForClassChange + + +
    +waitForClassChange(element, className) +
    + +
    + +
    + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
    NameOptional
    element + No +
    className + No +
    +
    +
    +
    +
    + Returns : any + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + +
    + + + waitForQuietness + + +
    +waitForQuietness() +
    + +
    + +
    + Returns : any + +
    +
    +
    + + + + + +
    + + +
    +
    function getSiblingElementsAndSelf(element, selector) {
    +  return _getSiblingElements(element, selector, true);
    +}
    +
    +/**
    + * Gets siblings that match selector _in DOM order_.
    + *
    + * @static
    + * @param {Node} element - Target element.
    + * @param {string} [selector] - A CSS selector.
    + * @return {Array<Node>} Array of sibling nodes.
    + */
    +function getSiblingElements(element, selector) {
    +  return _getSiblingElements(element, selector);
    +}
    +
    +/**
    + * Returns first sibling element (in DOM order) that optionally matches the provided selector.
    + *
    + * @param {Node} element - Target element.
    + * @param {string} [selector] - A CSS selector.
    + * @return {Node} First sibling element in DOM order
    + */
    +function getSiblingElement(element, selector = "*"): Element {
    +  let found;
    +  let current = element.parentElement.firstElementChild;
    +
    +  while (current && !found) {
    +    if (current !== element && current.matches(selector)) {
    +      found = current;
    +    }
    +    current = current.nextElementSibling;
    +  }
    +
    +  return found;
    +}
    +
    +/**
    + * Gets siblings that match selector _in DOM order_.
    + *
    + * @param {Node} element - Target element.
    + * @param {string} [selector] - A CSS selector.
    + * @param {boolean} [includeSelf] - Whether to include self.
    + * @return {Array<Node>} Array of sibling nodes.
    + */
    +function _getSiblingElements(element, selector = "*", includeSelf = false) {
    +  const results = [];
    +  let current = element.parentElement.firstElementChild;
    +
    +  while (current) {
    +    if (
    +      (current === element && includeSelf) ||
    +      (current !== element && current.matches(selector))
    +    ) {
    +      results.push(current);
    +    }
    +    current = current.nextElementSibling;
    +  }
    +
    +  return results;
    +}
    +
    +/**
    + * Gets ancestors that match selector _in DOM order_.
    + *
    + * @static
    + * @param {Node} element - Target element.
    + * @param {string} [filterSelector] - A CSS selector.
    + * @param {string} [endSelector] - A CSS selector indicating where to stop. It will include this element if matched by the filter.
    + * @return {Array<Node>} Array of ancestors.
    + */
    +function getAncestors(element, filterSelector = "*", endSelector = null) {
    +  const ancestors = [];
    +  let parent = element.parentElement;
    +
    +  while (parent) {
    +    if (parent.matches(filterSelector)) {
    +      // document order
    +      ancestors.unshift(parent);
    +    }
    +    parent = endSelector && parent.matches(endSelector) ? null : parent.parentElement;
    +  }
    +
    +  return ancestors;
    +}
    +
    +/**
    + * Gets closest ancestor that match selector until the end selector.
    + *
    + * @static
    + * @param {Node} element - Target element.
    + * @param {string} filterSelector - A CSS selector.
    + * @param {string} [endSelector] - A CSS selector indicating where to stop. It will include this element if matched by the filter.
    + * @return {Node} Closest ancestor.
    + */
    +function closestAncestorUntil(element, filterSelector = "*", endSelector = null) {
    +  let parent = element.parentElement;
    +  let found = null;
    +
    +  while (parent && !found) {
    +    if (parent.matches(filterSelector)) {
    +      found = parent;
    +    }
    +    parent = endSelector && parent.matches(endSelector) ? null : parent.parentElement;
    +  }
    +
    +  return found;
    +}
    +
    +/**
    + * Gets child elements, that (optionally) match a selector.
    + *
    + * @param {Node} element - Target element.
    + * @param {string} selector - A CSS selector.
    + * @return {Array<Node>} Array of child elements.
    + */
    +function getChildren(element, selector = "*") {
    +  return [...element.children].filter((el) => el.matches(selector));
    +}
    +
    +/**
    + * Gets first child element, that (optionally) matches a selector.
    + *
    + * @param {Node} element - Target element.
    + * @param {string} selector - A CSS selector.
    + * @return {Node} - First child element.
    + */
    +function getChild(element, selector = "*") {
    +  return [...element.children].find((el) => el.matches(selector));
    +}
    +
    +/**
    + * Removes all children elements.
    + *
    + * @static
    + * @param {Node} element - Target element.
    + * @return {undefined}
    + */
    +function empty(element) {
    +  [...element.children].forEach((el) => el.remove());
    +}
    +
    +/**
    + * @param {Element} el - Target node
    + * @return {boolean} Whether previous sibling has the same node name
    + */
    +function hasPreviousSiblingElementSameName(el) {
    +  let found = false;
    +  const { nodeName } = el;
    +  el = el.previousSibling;
    +
    +  while (el) {
    +    // Ignore any sibling text and comment nodes (e.g. whitespace with a newline character)
    +    // also deal with repeats that have non-repeat siblings in between them, event though that would be a bug.
    +    if (el.nodeName && el.nodeName === nodeName) {
    +      found = true;
    +      break;
    +    }
    +    el = el.previousSibling;
    +  }
    +
    +  return found;
    +}
    +
    +/**
    + * @param {Element} el - Target node
    + * @return {boolean} Whether next sibling has the same node name
    + */
    +function hasNextSiblingElementSameName(el) {
    +  let found = false;
    +  const { nodeName } = el;
    +  el = el.nextSibling;
    +
    +  while (el) {
    +    // Ignore any sibling text and comment nodes (e.g. whitespace with a newline character)
    +    // also deal with repeats that have non-repeat siblings in between them, event though that would be a bug.
    +    if (el.nodeName && el.nodeName === nodeName) {
    +      found = true;
    +      break;
    +    }
    +    el = el.nextSibling;
    +  }
    +
    +  return found;
    +}
    +
    +/**
    + * @param {Element} el - Target node
    + * @return {boolean} Whether a sibling has the same node name
    + */
    +function hasSiblingElementSameName(el) {
    +  return hasNextSiblingElementSameName(el) || hasPreviousSiblingElementSameName(el);
    +}
    +
    +/**
    + * @param {Element} node - Target node
    + * @param {string} content - Text content to look for
    + * @return {boolean} Whether previous comment sibling has given text content
    + */
    +function hasPreviousCommentSiblingWithContent(node, content) {
    +  let found = false;
    +  node = node.previousSibling;
    +
    +  while (node) {
    +    if (node.nodeType === Node.COMMENT_NODE && node.textContent === content) {
    +      found = true;
    +      break;
    +    }
    +    node = node.previousSibling;
    +  }
    +
    +  return found;
    +}
    +
    +/**
    + * Creates an XPath from a node
    + *
    + * @param {Element} node - XML node
    + * @param {string} [rootNodeName] - Defaults to #document
    + * @param {boolean} [includePosition] - Whether or not to include the positions `/path/to/repeat[2]/node`
    + * @return {string} XPath
    + */
    +function getXPath(node, rootNodeName = "#document", includePosition = false) {
    +  let index;
    +  const steps = [];
    +  let position = "";
    +  if (!node || node.nodeType !== 1) {
    +    return null;
    +  }
    +  const { nodeName } = node;
    +  let parent = node.parentElement;
    +  let parentName = parent ? parent.nodeName : null;
    +
    +  if (includePosition) {
    +    index = getRepeatIndex(node);
    +    if (index > 0) {
    +      position = `[${index + 1}]`;
    +    }
    +  }
    +
    +  steps.push(nodeName + position);
    +
    +  while (parent && parentName !== rootNodeName && parentName !== "#document") {
    +    if (includePosition) {
    +      index = getRepeatIndex(parent);
    +      position = hasSiblingElementSameName(parent) ? `[${index + 1}]` : "";
    +    }
    +    steps.push(parentName + position);
    +    parent = parent.parentElement;
    +    parentName = parent ? parent.nodeName : null;
    +  }
    +
    +  return `/${steps.reverse().join("/")}`;
    +}
    +
    +/**
    + * Obtains the index of a repeat instance within its own series.
    + *
    + * @param {Element} node - XML node
    + * @return {number} index
    + */
    +function getRepeatIndex(node) {
    +  let index = 0;
    +  const { nodeName } = node;
    +  let prevSibling = node.previousSibling;
    +
    +  while (prevSibling) {
    +    // ignore any sibling text and comment nodes (e.g. whitespace with a newline character)
    +    if (prevSibling.nodeName && prevSibling.nodeName === nodeName) {
    +      index++;
    +    }
    +    prevSibling = prevSibling.previousSibling;
    +  }
    +
    +  return index;
    +}
    +
    +/**
    + * Adapted from https://stackoverflow.com/a/46522991/3071529
    + *
    + * A storage solution aimed at replacing jQuerys data function.
    + * Implementation Note: Elements are stored in a (WeakMap)[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap].
    + * This makes sure the data is garbage collected when the node is removed.
    + *
    + * @namespace
    + */
    +const elementDataStore = {
    +  /**
    +   * @type {WeakMap}
    +   */
    +  _storage: new WeakMap(),
    +  /**
    +   * Adds object to element storage. Ensures that element storage exist.
    +   *
    +   * @param {Node} element - target element
    +   * @param {string} key - name of the stored data
    +   * @param {object} obj - stored data
    +   */
    +  put(element, key, obj) {
    +    if (!this._storage.has(element)) {
    +      this._storage.set(element, new Map());
    +    }
    +    this._storage.get(element).set(key, obj);
    +  },
    +  /**
    +   * Return object from element storage.
    +   *
    +   * @param {Node} element - target element
    +   * @param {string} key - name of the stored data
    +   * @return {object} stored data object
    +   */
    +  get(element, key) {
    +    const item = this._storage.get(element);
    +
    +    return item ? item.get(key) : item;
    +  },
    +  /**
    +   * Checkes whether element has given storage item.
    +   *
    +   * @param {Node} element - target element
    +   * @param {string} key - name of the stored data
    +   * @return {boolean} whether data is present
    +   */
    +  has(element, key) {
    +    const item = this._storage.get(element);
    +
    +    return item && item.has(key);
    +  },
    +  /**
    +   * Removes item from element storage. Removes element storage if empty.
    +   *
    +   * @param {Node} element - target element
    +   * @param {string} key - name of the stored data
    +   * @return {object} removed data object
    +   */
    +  remove(element, key) {
    +    const ret = this._storage.get(element).delete(key);
    +    if (this._storage.get(key).size !== 0) {
    +      this._storage.delete(element);
    +    }
    +
    +    return ret;
    +  },
    +};
    +
    +class MutationsTracker {
    +  classChanges = new WeakMap();
    +  quiet = true;
    +  constructor(el = document.documentElement) {
    +    let currentMutations = 0;
    +    let previousMutations = currentMutations;
    +    this.classChanges;
    +
    +    const mutationObserver = new MutationObserver((mutations) => {
    +      mutations.forEach((mutation) => {
    +        currentMutations++;
    +        if (mutation.type === "attributes" && mutation.attributeName === "class") {
    +          const trackedClasses = this.classChanges.get(mutation.target) || [];
    +          trackedClasses.forEach((obj) => {
    +            if ((mutation.target as any).classList.contains(obj.className)) {
    +              obj.completed = true;
    +              this.classChanges.set(mutation.target, trackedClasses);
    +            }
    +          });
    +        }
    +      });
    +    });
    +
    +    mutationObserver.observe(el, {
    +      attributes: true,
    +      characterData: true,
    +      childList: true,
    +      subtree: true,
    +      attributeOldValue: true,
    +      characterDataOldValue: true,
    +    });
    +
    +    const checkInterval = setInterval(() => {
    +      if (previousMutations === currentMutations) {
    +        this.quiet = true;
    +        mutationObserver.disconnect();
    +        clearInterval(checkInterval);
    +      } else {
    +        this.quiet = false;
    +        previousMutations = currentMutations;
    +      }
    +    }, 100);
    +  }
    +
    +  _resolveWhenTrue(fn) {
    +    if (typeof fn !== "function") {
    +      return Promise.reject();
    +    }
    +
    +    return new Promise<void>((resolve) => {
    +      const checkInterval = setInterval(() => {
    +        if (fn.call(this)) {
    +          clearInterval(checkInterval);
    +          resolve();
    +        }
    +      }, 10);
    +    });
    +  }
    +
    +  waitForClassChange(element, className) {
    +    const trackedClasses = this.classChanges.get(element) || [];
    +
    +    if (!trackedClasses.some((obj) => obj.className === className)) {
    +      trackedClasses.push({ className });
    +      this.classChanges.set(element, trackedClasses);
    +    }
    +
    +    return this._resolveWhenTrue(
    +      () => this.classChanges.get(element).find((obj) => obj.className === className).completed
    +    );
    +  }
    +
    +  waitForQuietness() {
    +    return this._resolveWhenTrue(() => this.quiet);
    +  }
    +}
    +
    +export {
    +  /**
    +   * @static
    +   * @see {@link module:dom-utils~elementDataStore|elementDataStore}
    +   */
    +  elementDataStore,
    +  getSiblingElementsAndSelf,
    +  getSiblingElements,
    +  getSiblingElement,
    +  getAncestors,
    +  getChildren,
    +  getChild,
    +  getRepeatIndex,
    +  getXPath,
    +  hasPreviousCommentSiblingWithContent,
    +  hasPreviousSiblingElementSameName,
    +  hasNextSiblingElementSameName,
    +  hasSiblingElementSameName,
    +  closestAncestorUntil,
    +  empty,
    +  MutationsTracker,
    +};
    +
    +
    +
    + + + + + + + + + +
    +
    +

    results matching ""

    +
      +
      +
      +

      No results matching ""

      +
      +
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/PausedState.html b/documentation/docs/generated/classes/PausedState.html new file mode 100644 index 0000000000..5315793447 --- /dev/null +++ b/documentation/docs/generated/classes/PausedState.html @@ -0,0 +1,862 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
      +
      + + +
      +
      + + + + + + + + + + + + + + + + +
      +
      +

      +

      File

      +

      +

      + src/app/shared/components/template/components/timer/timer.component.ts +

      + + + +

      +

      Extends

      +

      +

      + State +

      + + + +
      +

      Index

      + + + + + + + + + + + + + + + + + + + + + +
      +
      Properties
      +
      + +
      +
      Methods
      +
      + +
      +
      + +
      +

      Constructor

      + + + + + + + + + + + + + +
      +constructor(timer: TmplTimerComponent) +
      + +
      +
      + Parameters : + + + + + + + + + + + + + + + + + + +
      NameTypeOptional
      timer + TmplTimerComponent + + No +
      +
      +
      +
      + +
      + +

      + Properties +

      + + + + + + + + + + + + + + + + + +
      + + + Public + timer + + +
      + Type : TmplTimerComponent + +
      +
      Inherited from State +
      +
      +
      Defined in State:209 +
      +
      +
      + +
      + +

      + Methods +

      + + + + + + + + + + + + + + + + + + + + + + +
      + + + clickLeftButton + + +
      +clickLeftButton() +
      +
      Inherited from State +
      +
      +
      Defined in State:286 +
      +
      + +
      + Returns : void + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + clickRightButton + + +
      +clickRightButton() +
      +
      Inherited from State +
      +
      +
      Defined in State:290 +
      +
      + +
      + Returns : void + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + callOnInit + + +
      +callOnInit() +
      +
      Inherited from State +
      +
      +
      Defined in State:232 +
      +
      + +
      + Returns : void + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + clickTimer + + +
      +clickTimer() +
      +
      Inherited from State +
      +
      +
      Defined in State:215 +
      +
      + +
      + Returns : void + +
      +
      + + + + + + + + + + + + + + + + + + + + + + +
      + + + editTimer + + +
      +editTimer(val: string, type: "mm" | "ss") +
      +
      Inherited from State +
      +
      +
      Defined in State:217 +
      +
      + +
      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameTypeOptional
      val + string + + No +
      type + "mm" | "ss" + + No +
      +
      +
      +
      +
      + Returns : void + +
      +
      + +
      +
      +
      + + + + + +
      + + +
      +
      import { Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
      +import { FlowTypes } from "data-models";
      +import {
      +  getBooleanParamFromTemplateRow,
      +  getNumberParamFromTemplateRow,
      +  getStringParamFromTemplateRow,
      +} from "../../../../utils";
      +import { PickerController, Platform } from "@ionic/angular";
      +import { TemplateBaseComponent } from "../base";
      +import { ITemplateRowProps } from "../../models";
      +import { AudioService } from "src/app/shared/services/audio/audio.service";
      +import { AudioPlayer } from "src/app/shared/services/audio/audio.player";
      +import { TemplateAssetService } from "../../services/template-asset.service";
      +
      +@Component({
      +  selector: "plh-timer",
      +  templateUrl: "./timer.component.html",
      +  styleUrls: ["./timer.component.scss"],
      +})
      +export class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
      +  _row: FlowTypes.TemplateRow;
      +  @Input() set row(value: FlowTypes.TemplateRow) {
      +    this._row = value;
      +  }
      +  @Input() template: FlowTypes.Template;
      +  @ViewChild("min", { static: false }) minInput: ElementRef;
      +  @ViewChild("sec", { static: false }) secInput: ElementRef;
      +  state: TimerState;
      +  leftButtonAction: string;
      +  leftButtonIcon: string;
      +  leftButtonName: string;
      +  rightButtonAction: string;
      +  rightButtonIcon: string;
      +  rightButtonName: string;
      +  isTimerEditable: boolean;
      +  is_editable_on_playing: boolean;
      +  timerStarted = false;
      +  timerDurationExtension: number = 1 * 60;
      +  help: string | null = null;
      +  title: string;
      +  _value: number;
      +  starting_minutes: number;
      +  starting_seconds: number;
      +  minutes: string;
      +  seconds: string;
      +  ping: string | null;
      +  player: AudioPlayer | null;
      +  timeValues = () => {
      +    const data = [];
      +    for (let i = 0; i <= 9; i++) {
      +      data.push(i);
      +    }
      +    return [data.slice(0, 6), data, data.slice(0, 6), data];
      +  };
      +
      +  get value() {
      +    return this._value;
      +  }
      +
      +  set value(val: number) {
      +    if (!val) val = 0;
      +
      +    this._value = val;
      +
      +    const _seconds = val % 60;
      +    const _minutes = Math.floor(val / 60);
      +    this.seconds = _seconds < 10 ? `0${_seconds}` : String(_seconds);
      +    this.minutes = _minutes < 10 ? `0${_minutes}` : String(_minutes);
      +  }
      +
      +  constructor(
      +    private pickerController: PickerController,
      +    private platform: Platform,
      +    private audioService: AudioService,
      +    private templateAssetService: TemplateAssetService
      +  ) {
      +    super();
      +    this.changeState(new PausedState(this));
      +  }
      +
      +  ngOnInit() {
      +    this.getParams();
      +    this.state.callOnInit();
      +    if (this.ping) {
      +      const pingSrc = this.templateAssetService.getTranslatedAssetPath(this.ping);
      +      this.player = this.audioService.createPlayer(pingSrc);
      +    }
      +  }
      +
      +  changeState(state: TimerState) {
      +    this.state = state;
      +  }
      +
      +  getParams() {
      +    this.title = getStringParamFromTemplateRow(this._row, "title", "Timer");
      +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
      +    this.ping = getStringParamFromTemplateRow(this._row, "ping", null);
      +    this.timerDurationExtension =
      +      getNumberParamFromTemplateRow(this._row, "duration_extension", 1) * 60;
      +    this.is_editable_on_playing = getBooleanParamFromTemplateRow(
      +      this._row,
      +      "is_editable_on_playing",
      +      false
      +    );
      +    this.starting_minutes = getNumberParamFromTemplateRow(this._row, "starting_minutes", 10);
      +    this.starting_seconds = getNumberParamFromTemplateRow(this._row, "starting_seconds", 0);
      +    this.value = this.getDurationFromParams();
      +  }
      +
      +  getDurationFromParams() {
      +    return this._row.value ? this._row.value : this.starting_minutes * 60 + this.starting_seconds;
      +  }
      +
      +  clickLeftButton() {
      +    this.state.clickLeftButton();
      +  }
      +
      +  clickRightButton() {
      +    this.state.clickRightButton();
      +  }
      +
      +  openPicker() {
      +    if (this.isTimerEditable) {
      +      const numColumns = 4;
      +      const columnOptions = this.timeValues();
      +      this.pickerController
      +        .create({
      +          mode: this.platform.is("android") ? "md" : "ios" || "ios",
      +          columns: this.getColumns(numColumns, columnOptions),
      +          buttons: [
      +            {
      +              text: "Cancel",
      +              role: "cancel",
      +              handler: (_) => (this.timerStarted ? this.state.clickLeftButton() : null),
      +            },
      +            {
      +              text: "Confirm",
      +              handler: (value) => {
      +                const min =
      +                  Object.values(value["col-0"]).toString().split(",")[0].trim() +
      +                  Object.values(value["col-1"]).toString().split(",")[0].trim();
      +                const sec =
      +                  Object.values(value["col-2"]).toString().split(",")[0].trim() +
      +                  Object.values(value["col-3"]).toString().split(",")[0].trim();
      +                this.state.editTimer(min, "mm");
      +                this.state.editTimer(sec, "ss");
      +              },
      +            },
      +          ],
      +          cssClass: "picker",
      +        })
      +        .then((e) => e.present());
      +    }
      +  }
      +
      +  getColumns(numColumns, columnOptions) {
      +    let columns = [];
      +    for (let i = 0; i < numColumns; i++) {
      +      columns.push({
      +        name: `col-${i}`,
      +        options: this.getColumnOptions(i, i % 2 === 0 ? 6 : 10, columnOptions),
      +        selectedIndex: getIndex(i, this.minutes, this.seconds),
      +      });
      +    }
      +
      +    function getIndex(index: number, minutes: string, seconds: string): number {
      +      switch (index) {
      +        case 0:
      +          return Number(minutes.charAt(0));
      +        case 1:
      +          return Number(minutes.charAt(1));
      +        case 2:
      +          return Number(seconds.charAt(0));
      +        case 3:
      +          return Number(seconds.charAt(1));
      +        default:
      +          return 0;
      +      }
      +    }
      +
      +    return columns;
      +  }
      +
      +  getColumnOptions(columnIndex, numOptions, columnOptions) {
      +    let options = [];
      +    for (let i = 0; i < numOptions; i++) {
      +      options.push({
      +        text: columnOptions[columnIndex][i % numOptions],
      +        value: i,
      +      });
      +    }
      +    return options;
      +  }
      +}
      +
      +interface TimerState {
      +  timer: TmplTimerComponent;
      +
      +  clickLeftButton(): void;
      +
      +  clickRightButton(): void;
      +
      +  editTimer(val: string, type: "mm" | "ss"): void;
      +
      +  callOnInit(): void;
      +}
      +
      +abstract class State {
      +  constructor(public timer: TmplTimerComponent) {}
      +
      +  clickLeftButton() {}
      +
      +  clickRightButton() {}
      +
      +  clickTimer() {}
      +
      +  editTimer(val: string, type: "mm" | "ss") {
      +    val = val.replace(/^0/, "");
      +    let valNumber = Number.parseInt(val);
      +
      +    if (Number.isNaN(valNumber)) return;
      +
      +    if (type === "mm") {
      +      this.timer.minInput.nativeElement.value = val;
      +      this.timer.value = valNumber * 60 + Number(this.timer.seconds.replace(/^0/, ""));
      +    } else if (type === "ss") {
      +      this.timer.secInput.nativeElement.value = val;
      +      this.timer.value = valNumber + Number(this.timer.minutes.replace(/^0/, "")) * 60;
      +    }
      +  }
      +
      +  callOnInit() {}
      +}
      +
      +class PlayingState extends State {
      +  private intervalRef;
      +
      +  constructor(timer: TmplTimerComponent) {
      +    super(timer);
      +    this.timer.leftButtonAction = "pause";
      +    this.timer.leftButtonIcon = "pause-outline";
      +    this.timer.leftButtonName = "pause_timer";
      +    this.timer.rightButtonAction = "increase";
      +    this.timer.rightButtonIcon = "reload-outline";
      +    this.timer.rightButtonName = "increase_timer";
      +    this.timer.timerStarted = true;
      +    this.timer.isTimerEditable = this.timer.is_editable_on_playing;
      +    this.countDown();
      +  }
      +
      +  clickLeftButton() {
      +    clearInterval(this.intervalRef);
      +    this.timer.changeState(new PausedState(this.timer));
      +  }
      +
      +  clickRightButton() {
      +    this.timer.value += this.timer.timerDurationExtension;
      +  }
      +
      +  countDown() {
      +    this.intervalRef = setInterval(() => {
      +      if (this.timer.value === 0) {
      +        clearInterval(this.intervalRef);
      +        this.timer.changeState(new PausedState(this.timer));
      +        if (this.timer.player) this.timer.player.play();
      +        return;
      +      }
      +      this.timer.value -= 1;
      +    }, 1000);
      +  }
      +}
      +
      +class PausedState extends State {
      +  constructor(timer: TmplTimerComponent) {
      +    super(timer);
      +    this.timer.leftButtonAction = "play";
      +    this.timer.leftButtonIcon = "play-outline";
      +    this.timer.leftButtonName = "play_timer";
      +    this.timer.rightButtonAction = "refresh";
      +    this.timer.rightButtonIcon = "sync-outline";
      +    this.timer.rightButtonName = "refresh_timer";
      +    this.timer.timerStarted = false;
      +    this.timer.isTimerEditable = true;
      +  }
      +
      +  clickLeftButton() {
      +    this.timer.changeState(new PlayingState(this.timer));
      +  }
      +
      +  clickRightButton() {
      +    this.timer.value = this.timer.getDurationFromParams();
      +  }
      +}
      +
      +
      +
      + + + + + + + + + +
      +
      +

      results matching ""

      +
        +
        +
        +

        No results matching ""

        +
        +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/PlayingState.html b/documentation/docs/generated/classes/PlayingState.html new file mode 100644 index 0000000000..0587311eaf --- /dev/null +++ b/documentation/docs/generated/classes/PlayingState.html @@ -0,0 +1,902 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
        +
        + + +
        +
        + + + + + + + + + + + + + + + + +
        +
        +

        +

        File

        +

        +

        + src/app/shared/components/template/components/timer/timer.component.ts +

        + + + +

        +

        Extends

        +

        +

        + State +

        + + + +
        +

        Index

        + + + + + + + + + + + + + + + + + + + + + +
        +
        Properties
        +
        + +
        +
        Methods
        +
        + +
        +
        + +
        +

        Constructor

        + + + + + + + + + + + + + +
        +constructor(timer: TmplTimerComponent) +
        + +
        +
        + Parameters : + + + + + + + + + + + + + + + + + + +
        NameTypeOptional
        timer + TmplTimerComponent + + No +
        +
        +
        +
        + +
        + +

        + Properties +

        + + + + + + + + + + + + + + + + + +
        + + + Public + timer + + +
        + Type : TmplTimerComponent + +
        +
        Inherited from State +
        +
        +
        Defined in State:209 +
        +
        +
        + +
        + +

        + Methods +

        + + + + + + + + + + + + + + + + + + + + + + +
        + + + clickLeftButton + + +
        +clickLeftButton() +
        +
        Inherited from State +
        +
        +
        Defined in State:251 +
        +
        + +
        + Returns : void + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + clickRightButton + + +
        +clickRightButton() +
        +
        Inherited from State +
        +
        +
        Defined in State:256 +
        +
        + +
        + Returns : void + +
        +
        + + + + + + + + + + + + + + + + + + + +
        + + + countDown + + +
        +countDown() +
        + +
        + +
        + Returns : void + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + callOnInit + + +
        +callOnInit() +
        +
        Inherited from State +
        +
        +
        Defined in State:232 +
        +
        + +
        + Returns : void + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + clickTimer + + +
        +clickTimer() +
        +
        Inherited from State +
        +
        +
        Defined in State:215 +
        +
        + +
        + Returns : void + +
        +
        + + + + + + + + + + + + + + + + + + + + + + +
        + + + editTimer + + +
        +editTimer(val: string, type: "mm" | "ss") +
        +
        Inherited from State +
        +
        +
        Defined in State:217 +
        +
        + +
        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        NameTypeOptional
        val + string + + No +
        type + "mm" | "ss" + + No +
        +
        +
        +
        +
        + Returns : void + +
        +
        + +
        +
        +
        + + + + + +
        + + +
        +
        import { Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
        +import { FlowTypes } from "data-models";
        +import {
        +  getBooleanParamFromTemplateRow,
        +  getNumberParamFromTemplateRow,
        +  getStringParamFromTemplateRow,
        +} from "../../../../utils";
        +import { PickerController, Platform } from "@ionic/angular";
        +import { TemplateBaseComponent } from "../base";
        +import { ITemplateRowProps } from "../../models";
        +import { AudioService } from "src/app/shared/services/audio/audio.service";
        +import { AudioPlayer } from "src/app/shared/services/audio/audio.player";
        +import { TemplateAssetService } from "../../services/template-asset.service";
        +
        +@Component({
        +  selector: "plh-timer",
        +  templateUrl: "./timer.component.html",
        +  styleUrls: ["./timer.component.scss"],
        +})
        +export class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
        +  _row: FlowTypes.TemplateRow;
        +  @Input() set row(value: FlowTypes.TemplateRow) {
        +    this._row = value;
        +  }
        +  @Input() template: FlowTypes.Template;
        +  @ViewChild("min", { static: false }) minInput: ElementRef;
        +  @ViewChild("sec", { static: false }) secInput: ElementRef;
        +  state: TimerState;
        +  leftButtonAction: string;
        +  leftButtonIcon: string;
        +  leftButtonName: string;
        +  rightButtonAction: string;
        +  rightButtonIcon: string;
        +  rightButtonName: string;
        +  isTimerEditable: boolean;
        +  is_editable_on_playing: boolean;
        +  timerStarted = false;
        +  timerDurationExtension: number = 1 * 60;
        +  help: string | null = null;
        +  title: string;
        +  _value: number;
        +  starting_minutes: number;
        +  starting_seconds: number;
        +  minutes: string;
        +  seconds: string;
        +  ping: string | null;
        +  player: AudioPlayer | null;
        +  timeValues = () => {
        +    const data = [];
        +    for (let i = 0; i <= 9; i++) {
        +      data.push(i);
        +    }
        +    return [data.slice(0, 6), data, data.slice(0, 6), data];
        +  };
        +
        +  get value() {
        +    return this._value;
        +  }
        +
        +  set value(val: number) {
        +    if (!val) val = 0;
        +
        +    this._value = val;
        +
        +    const _seconds = val % 60;
        +    const _minutes = Math.floor(val / 60);
        +    this.seconds = _seconds < 10 ? `0${_seconds}` : String(_seconds);
        +    this.minutes = _minutes < 10 ? `0${_minutes}` : String(_minutes);
        +  }
        +
        +  constructor(
        +    private pickerController: PickerController,
        +    private platform: Platform,
        +    private audioService: AudioService,
        +    private templateAssetService: TemplateAssetService
        +  ) {
        +    super();
        +    this.changeState(new PausedState(this));
        +  }
        +
        +  ngOnInit() {
        +    this.getParams();
        +    this.state.callOnInit();
        +    if (this.ping) {
        +      const pingSrc = this.templateAssetService.getTranslatedAssetPath(this.ping);
        +      this.player = this.audioService.createPlayer(pingSrc);
        +    }
        +  }
        +
        +  changeState(state: TimerState) {
        +    this.state = state;
        +  }
        +
        +  getParams() {
        +    this.title = getStringParamFromTemplateRow(this._row, "title", "Timer");
        +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
        +    this.ping = getStringParamFromTemplateRow(this._row, "ping", null);
        +    this.timerDurationExtension =
        +      getNumberParamFromTemplateRow(this._row, "duration_extension", 1) * 60;
        +    this.is_editable_on_playing = getBooleanParamFromTemplateRow(
        +      this._row,
        +      "is_editable_on_playing",
        +      false
        +    );
        +    this.starting_minutes = getNumberParamFromTemplateRow(this._row, "starting_minutes", 10);
        +    this.starting_seconds = getNumberParamFromTemplateRow(this._row, "starting_seconds", 0);
        +    this.value = this.getDurationFromParams();
        +  }
        +
        +  getDurationFromParams() {
        +    return this._row.value ? this._row.value : this.starting_minutes * 60 + this.starting_seconds;
        +  }
        +
        +  clickLeftButton() {
        +    this.state.clickLeftButton();
        +  }
        +
        +  clickRightButton() {
        +    this.state.clickRightButton();
        +  }
        +
        +  openPicker() {
        +    if (this.isTimerEditable) {
        +      const numColumns = 4;
        +      const columnOptions = this.timeValues();
        +      this.pickerController
        +        .create({
        +          mode: this.platform.is("android") ? "md" : "ios" || "ios",
        +          columns: this.getColumns(numColumns, columnOptions),
        +          buttons: [
        +            {
        +              text: "Cancel",
        +              role: "cancel",
        +              handler: (_) => (this.timerStarted ? this.state.clickLeftButton() : null),
        +            },
        +            {
        +              text: "Confirm",
        +              handler: (value) => {
        +                const min =
        +                  Object.values(value["col-0"]).toString().split(",")[0].trim() +
        +                  Object.values(value["col-1"]).toString().split(",")[0].trim();
        +                const sec =
        +                  Object.values(value["col-2"]).toString().split(",")[0].trim() +
        +                  Object.values(value["col-3"]).toString().split(",")[0].trim();
        +                this.state.editTimer(min, "mm");
        +                this.state.editTimer(sec, "ss");
        +              },
        +            },
        +          ],
        +          cssClass: "picker",
        +        })
        +        .then((e) => e.present());
        +    }
        +  }
        +
        +  getColumns(numColumns, columnOptions) {
        +    let columns = [];
        +    for (let i = 0; i < numColumns; i++) {
        +      columns.push({
        +        name: `col-${i}`,
        +        options: this.getColumnOptions(i, i % 2 === 0 ? 6 : 10, columnOptions),
        +        selectedIndex: getIndex(i, this.minutes, this.seconds),
        +      });
        +    }
        +
        +    function getIndex(index: number, minutes: string, seconds: string): number {
        +      switch (index) {
        +        case 0:
        +          return Number(minutes.charAt(0));
        +        case 1:
        +          return Number(minutes.charAt(1));
        +        case 2:
        +          return Number(seconds.charAt(0));
        +        case 3:
        +          return Number(seconds.charAt(1));
        +        default:
        +          return 0;
        +      }
        +    }
        +
        +    return columns;
        +  }
        +
        +  getColumnOptions(columnIndex, numOptions, columnOptions) {
        +    let options = [];
        +    for (let i = 0; i < numOptions; i++) {
        +      options.push({
        +        text: columnOptions[columnIndex][i % numOptions],
        +        value: i,
        +      });
        +    }
        +    return options;
        +  }
        +}
        +
        +interface TimerState {
        +  timer: TmplTimerComponent;
        +
        +  clickLeftButton(): void;
        +
        +  clickRightButton(): void;
        +
        +  editTimer(val: string, type: "mm" | "ss"): void;
        +
        +  callOnInit(): void;
        +}
        +
        +abstract class State {
        +  constructor(public timer: TmplTimerComponent) {}
        +
        +  clickLeftButton() {}
        +
        +  clickRightButton() {}
        +
        +  clickTimer() {}
        +
        +  editTimer(val: string, type: "mm" | "ss") {
        +    val = val.replace(/^0/, "");
        +    let valNumber = Number.parseInt(val);
        +
        +    if (Number.isNaN(valNumber)) return;
        +
        +    if (type === "mm") {
        +      this.timer.minInput.nativeElement.value = val;
        +      this.timer.value = valNumber * 60 + Number(this.timer.seconds.replace(/^0/, ""));
        +    } else if (type === "ss") {
        +      this.timer.secInput.nativeElement.value = val;
        +      this.timer.value = valNumber + Number(this.timer.minutes.replace(/^0/, "")) * 60;
        +    }
        +  }
        +
        +  callOnInit() {}
        +}
        +
        +class PlayingState extends State {
        +  private intervalRef;
        +
        +  constructor(timer: TmplTimerComponent) {
        +    super(timer);
        +    this.timer.leftButtonAction = "pause";
        +    this.timer.leftButtonIcon = "pause-outline";
        +    this.timer.leftButtonName = "pause_timer";
        +    this.timer.rightButtonAction = "increase";
        +    this.timer.rightButtonIcon = "reload-outline";
        +    this.timer.rightButtonName = "increase_timer";
        +    this.timer.timerStarted = true;
        +    this.timer.isTimerEditable = this.timer.is_editable_on_playing;
        +    this.countDown();
        +  }
        +
        +  clickLeftButton() {
        +    clearInterval(this.intervalRef);
        +    this.timer.changeState(new PausedState(this.timer));
        +  }
        +
        +  clickRightButton() {
        +    this.timer.value += this.timer.timerDurationExtension;
        +  }
        +
        +  countDown() {
        +    this.intervalRef = setInterval(() => {
        +      if (this.timer.value === 0) {
        +        clearInterval(this.intervalRef);
        +        this.timer.changeState(new PausedState(this.timer));
        +        if (this.timer.player) this.timer.player.play();
        +        return;
        +      }
        +      this.timer.value -= 1;
        +    }, 1000);
        +  }
        +}
        +
        +class PausedState extends State {
        +  constructor(timer: TmplTimerComponent) {
        +    super(timer);
        +    this.timer.leftButtonAction = "play";
        +    this.timer.leftButtonIcon = "play-outline";
        +    this.timer.leftButtonName = "play_timer";
        +    this.timer.rightButtonAction = "refresh";
        +    this.timer.rightButtonIcon = "sync-outline";
        +    this.timer.rightButtonName = "refresh_timer";
        +    this.timer.timerStarted = false;
        +    this.timer.isTimerEditable = true;
        +  }
        +
        +  clickLeftButton() {
        +    this.timer.changeState(new PlayingState(this.timer));
        +  }
        +
        +  clickRightButton() {
        +    this.timer.value = this.timer.getDurationFromParams();
        +  }
        +}
        +
        +
        +
        + + + + + + + + + +
        +
        +

        results matching ""

        +
          +
          +
          +

          No results matching ""

          +
          +
          +
          + +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/State.html b/documentation/docs/generated/classes/State.html new file mode 100644 index 0000000000..874f86788d --- /dev/null +++ b/documentation/docs/generated/classes/State.html @@ -0,0 +1,819 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
          +
          + + +
          +
          + + + + + + + + + + + + + + + + +
          +
          +

          +

          File

          +

          +

          + src/app/shared/components/template/components/timer/timer.component.ts +

          + + + + + + +
          +

          Index

          + + + + + + + + + + + + + + + + + + + + + +
          +
          Properties
          +
          + +
          +
          Methods
          +
          + +
          +
          + +
          +

          Constructor

          + + + + + + + + + + + + + +
          +constructor(timer: TmplTimerComponent) +
          + +
          +
          + Parameters : + + + + + + + + + + + + + + + + + + +
          NameTypeOptional
          timer + TmplTimerComponent + + No +
          +
          +
          +
          + +
          + +

          + Properties +

          + + + + + + + + + + + + + + +
          + + + Public + timer + + +
          + Type : TmplTimerComponent + +
          + +
          +
          + +
          + +

          + Methods +

          + + + + + + + + + + + + + + + + + + + +
          + + + callOnInit + + +
          +callOnInit() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + + +
          + + + clickLeftButton + + +
          +clickLeftButton() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + + +
          + + + clickRightButton + + +
          +clickRightButton() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + + +
          + + + clickTimer + + +
          +clickTimer() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + + +
          + + + editTimer + + +
          +editTimer(val: string, type: "mm" | "ss") +
          + +
          + +
          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          NameTypeOptional
          val + string + + No +
          type + "mm" | "ss" + + No +
          +
          +
          +
          +
          + Returns : void + +
          +
          + +
          +
          +
          + + + + + +
          + + +
          +
          import { Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
          +import { FlowTypes } from "data-models";
          +import {
          +  getBooleanParamFromTemplateRow,
          +  getNumberParamFromTemplateRow,
          +  getStringParamFromTemplateRow,
          +} from "../../../../utils";
          +import { PickerController, Platform } from "@ionic/angular";
          +import { TemplateBaseComponent } from "../base";
          +import { ITemplateRowProps } from "../../models";
          +import { AudioService } from "src/app/shared/services/audio/audio.service";
          +import { AudioPlayer } from "src/app/shared/services/audio/audio.player";
          +import { TemplateAssetService } from "../../services/template-asset.service";
          +
          +@Component({
          +  selector: "plh-timer",
          +  templateUrl: "./timer.component.html",
          +  styleUrls: ["./timer.component.scss"],
          +})
          +export class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
          +  _row: FlowTypes.TemplateRow;
          +  @Input() set row(value: FlowTypes.TemplateRow) {
          +    this._row = value;
          +  }
          +  @Input() template: FlowTypes.Template;
          +  @ViewChild("min", { static: false }) minInput: ElementRef;
          +  @ViewChild("sec", { static: false }) secInput: ElementRef;
          +  state: TimerState;
          +  leftButtonAction: string;
          +  leftButtonIcon: string;
          +  leftButtonName: string;
          +  rightButtonAction: string;
          +  rightButtonIcon: string;
          +  rightButtonName: string;
          +  isTimerEditable: boolean;
          +  is_editable_on_playing: boolean;
          +  timerStarted = false;
          +  timerDurationExtension: number = 1 * 60;
          +  help: string | null = null;
          +  title: string;
          +  _value: number;
          +  starting_minutes: number;
          +  starting_seconds: number;
          +  minutes: string;
          +  seconds: string;
          +  ping: string | null;
          +  player: AudioPlayer | null;
          +  timeValues = () => {
          +    const data = [];
          +    for (let i = 0; i <= 9; i++) {
          +      data.push(i);
          +    }
          +    return [data.slice(0, 6), data, data.slice(0, 6), data];
          +  };
          +
          +  get value() {
          +    return this._value;
          +  }
          +
          +  set value(val: number) {
          +    if (!val) val = 0;
          +
          +    this._value = val;
          +
          +    const _seconds = val % 60;
          +    const _minutes = Math.floor(val / 60);
          +    this.seconds = _seconds < 10 ? `0${_seconds}` : String(_seconds);
          +    this.minutes = _minutes < 10 ? `0${_minutes}` : String(_minutes);
          +  }
          +
          +  constructor(
          +    private pickerController: PickerController,
          +    private platform: Platform,
          +    private audioService: AudioService,
          +    private templateAssetService: TemplateAssetService
          +  ) {
          +    super();
          +    this.changeState(new PausedState(this));
          +  }
          +
          +  ngOnInit() {
          +    this.getParams();
          +    this.state.callOnInit();
          +    if (this.ping) {
          +      const pingSrc = this.templateAssetService.getTranslatedAssetPath(this.ping);
          +      this.player = this.audioService.createPlayer(pingSrc);
          +    }
          +  }
          +
          +  changeState(state: TimerState) {
          +    this.state = state;
          +  }
          +
          +  getParams() {
          +    this.title = getStringParamFromTemplateRow(this._row, "title", "Timer");
          +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
          +    this.ping = getStringParamFromTemplateRow(this._row, "ping", null);
          +    this.timerDurationExtension =
          +      getNumberParamFromTemplateRow(this._row, "duration_extension", 1) * 60;
          +    this.is_editable_on_playing = getBooleanParamFromTemplateRow(
          +      this._row,
          +      "is_editable_on_playing",
          +      false
          +    );
          +    this.starting_minutes = getNumberParamFromTemplateRow(this._row, "starting_minutes", 10);
          +    this.starting_seconds = getNumberParamFromTemplateRow(this._row, "starting_seconds", 0);
          +    this.value = this.getDurationFromParams();
          +  }
          +
          +  getDurationFromParams() {
          +    return this._row.value ? this._row.value : this.starting_minutes * 60 + this.starting_seconds;
          +  }
          +
          +  clickLeftButton() {
          +    this.state.clickLeftButton();
          +  }
          +
          +  clickRightButton() {
          +    this.state.clickRightButton();
          +  }
          +
          +  openPicker() {
          +    if (this.isTimerEditable) {
          +      const numColumns = 4;
          +      const columnOptions = this.timeValues();
          +      this.pickerController
          +        .create({
          +          mode: this.platform.is("android") ? "md" : "ios" || "ios",
          +          columns: this.getColumns(numColumns, columnOptions),
          +          buttons: [
          +            {
          +              text: "Cancel",
          +              role: "cancel",
          +              handler: (_) => (this.timerStarted ? this.state.clickLeftButton() : null),
          +            },
          +            {
          +              text: "Confirm",
          +              handler: (value) => {
          +                const min =
          +                  Object.values(value["col-0"]).toString().split(",")[0].trim() +
          +                  Object.values(value["col-1"]).toString().split(",")[0].trim();
          +                const sec =
          +                  Object.values(value["col-2"]).toString().split(",")[0].trim() +
          +                  Object.values(value["col-3"]).toString().split(",")[0].trim();
          +                this.state.editTimer(min, "mm");
          +                this.state.editTimer(sec, "ss");
          +              },
          +            },
          +          ],
          +          cssClass: "picker",
          +        })
          +        .then((e) => e.present());
          +    }
          +  }
          +
          +  getColumns(numColumns, columnOptions) {
          +    let columns = [];
          +    for (let i = 0; i < numColumns; i++) {
          +      columns.push({
          +        name: `col-${i}`,
          +        options: this.getColumnOptions(i, i % 2 === 0 ? 6 : 10, columnOptions),
          +        selectedIndex: getIndex(i, this.minutes, this.seconds),
          +      });
          +    }
          +
          +    function getIndex(index: number, minutes: string, seconds: string): number {
          +      switch (index) {
          +        case 0:
          +          return Number(minutes.charAt(0));
          +        case 1:
          +          return Number(minutes.charAt(1));
          +        case 2:
          +          return Number(seconds.charAt(0));
          +        case 3:
          +          return Number(seconds.charAt(1));
          +        default:
          +          return 0;
          +      }
          +    }
          +
          +    return columns;
          +  }
          +
          +  getColumnOptions(columnIndex, numOptions, columnOptions) {
          +    let options = [];
          +    for (let i = 0; i < numOptions; i++) {
          +      options.push({
          +        text: columnOptions[columnIndex][i % numOptions],
          +        value: i,
          +      });
          +    }
          +    return options;
          +  }
          +}
          +
          +interface TimerState {
          +  timer: TmplTimerComponent;
          +
          +  clickLeftButton(): void;
          +
          +  clickRightButton(): void;
          +
          +  editTimer(val: string, type: "mm" | "ss"): void;
          +
          +  callOnInit(): void;
          +}
          +
          +abstract class State {
          +  constructor(public timer: TmplTimerComponent) {}
          +
          +  clickLeftButton() {}
          +
          +  clickRightButton() {}
          +
          +  clickTimer() {}
          +
          +  editTimer(val: string, type: "mm" | "ss") {
          +    val = val.replace(/^0/, "");
          +    let valNumber = Number.parseInt(val);
          +
          +    if (Number.isNaN(valNumber)) return;
          +
          +    if (type === "mm") {
          +      this.timer.minInput.nativeElement.value = val;
          +      this.timer.value = valNumber * 60 + Number(this.timer.seconds.replace(/^0/, ""));
          +    } else if (type === "ss") {
          +      this.timer.secInput.nativeElement.value = val;
          +      this.timer.value = valNumber + Number(this.timer.minutes.replace(/^0/, "")) * 60;
          +    }
          +  }
          +
          +  callOnInit() {}
          +}
          +
          +class PlayingState extends State {
          +  private intervalRef;
          +
          +  constructor(timer: TmplTimerComponent) {
          +    super(timer);
          +    this.timer.leftButtonAction = "pause";
          +    this.timer.leftButtonIcon = "pause-outline";
          +    this.timer.leftButtonName = "pause_timer";
          +    this.timer.rightButtonAction = "increase";
          +    this.timer.rightButtonIcon = "reload-outline";
          +    this.timer.rightButtonName = "increase_timer";
          +    this.timer.timerStarted = true;
          +    this.timer.isTimerEditable = this.timer.is_editable_on_playing;
          +    this.countDown();
          +  }
          +
          +  clickLeftButton() {
          +    clearInterval(this.intervalRef);
          +    this.timer.changeState(new PausedState(this.timer));
          +  }
          +
          +  clickRightButton() {
          +    this.timer.value += this.timer.timerDurationExtension;
          +  }
          +
          +  countDown() {
          +    this.intervalRef = setInterval(() => {
          +      if (this.timer.value === 0) {
          +        clearInterval(this.intervalRef);
          +        this.timer.changeState(new PausedState(this.timer));
          +        if (this.timer.player) this.timer.player.play();
          +        return;
          +      }
          +      this.timer.value -= 1;
          +    }, 1000);
          +  }
          +}
          +
          +class PausedState extends State {
          +  constructor(timer: TmplTimerComponent) {
          +    super(timer);
          +    this.timer.leftButtonAction = "play";
          +    this.timer.leftButtonIcon = "play-outline";
          +    this.timer.leftButtonName = "play_timer";
          +    this.timer.rightButtonAction = "refresh";
          +    this.timer.rightButtonIcon = "sync-outline";
          +    this.timer.rightButtonName = "refresh_timer";
          +    this.timer.timerStarted = false;
          +    this.timer.isTimerEditable = true;
          +  }
          +
          +  clickLeftButton() {
          +    this.timer.changeState(new PlayingState(this.timer));
          +  }
          +
          +  clickRightButton() {
          +    this.timer.value = this.timer.getDurationFromParams();
          +  }
          +}
          +
          +
          +
          + + + + + + + + + +
          +
          +

          results matching ""

          +
            +
            +
            +

            No results matching ""

            +
            +
            +
            + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/classes/Widget.html b/documentation/docs/generated/classes/Widget.html new file mode 100644 index 0000000000..3147ba8998 --- /dev/null +++ b/documentation/docs/generated/classes/Widget.html @@ -0,0 +1,1205 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
            +
            + + +
            +
            + + + + + + + + + + + + + + + + +
            +
            +

            +

            File

            +

            +

            + src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts +

            + + +

            +

            Description

            +

            +

            +

            A Widget class that can be extended to provide some of the basic widget functionality out of the box.

            + +

            + + + + +
            +

            Index

            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            Properties
            +
            + +
            +
            Methods
            +
            + +
            +
            Accessors
            +
            + +
            +
            + +
            +

            Constructor

            + + + + + + + + + + + + + +
            +constructor(element: Element, options: boolean | literal type) +
            + +
            +
            + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            NameTypeOptionalDescription
            element + Element + + No + +
              +
            • The DOM element the widget is applied on
            • +
            + +
            options + boolean | literal type + + No + +
              +
            • Options passed to the widget during instantiation
            • +
            + +
            +
            +
            +
            + +
            + +

            + Properties +

            + + + + + + + + + + + + + + +
            + + + _props + + +
            + Type : any + +
            + +
            + + + + + + + + + + + + + + +
            + + + element + + +
            + Type : any + +
            + +
            + + + + + + + + + + + + + + +
            + + + options + + +
            + Type : any + +
            + +
            + + + + + + + + + + + + + + +
            + + + question + + +
            + Type : any + +
            + +
            +
            + +
            + +

            + Methods +

            + + + + + + + + + + + + + + + + + + + +
            + + + _getProps + + +
            +_getProps() +
            + +
            +

            Not meant to be overridden, but could be. Recommend to extend get props() instead.

            +
            + +
            +
            +
            + Returns : { readonly readonly: any; appearances: any; multiple: boolean; disabled: boolean; type: any; } + +
            +
            +

            props object

            + +
            +
            + + + + + + + + + + + + + + + + + + + +
            + + + _init + + +
            +_init() +
            + +
            +

            Meant to be overridden, but automatically called.

            +
            + +
            + Returns : void + +
            +
            + + + + + + + + + + + + + + + + + + + +
            + + + Static + condition + + +
            + + condition() +
            + +
            +

            Tests whether widget needs to be instantiated (e.g. if not to be used for touchscreens). +Note that the Element (used in the constructor) will be provided as parameter.

            +
            + +
            +
            +
            + Returns : boolean + +
            +
            +

            to instantiate or not to instantiate, that is the question

            + +
            +
            + + + + + + + + + + + + + + + + + + + +
            + + + disable + + +
            +disable() +
            + +
            +

            Disallow user input into widget by making it readonly.

            +
            + +
            + Returns : void + +
            +
            + + + + + + + + + + + + + + + + + + + +
            + + + enable + + +
            +enable() +
            + +
            +

            Performs opposite action of disable() function.

            +
            + +
            + Returns : void + +
            +
            + + + + + + + + + + + + + + + + + + + +
            + + + update + + +
            +update() +
            + +
            +

            Updates form-defined language strings,

            +
            + +
            + Returns : void + +
            +
            +
            + + + + + +
            +

            + Accessors +

            + + + + + + + + + + + + + + + + + +
            + + props +
            + getprops() +
            + +
            +

            Returns widget properties. May need to be extended.

            +
            + +
            +
            +
            + + + + + + + + + + + + + + + + + +
            + + resetButtonHtml +
            + getresetButtonHtml() +
            + +
            +

            Returns a HTML document fragment for a reset button.

            +
            + +
            +
            +
            + + + + + + + + + + + + + + + + + +
            + + downloadButtonHtml +
            + getdownloadButtonHtml() +
            + +
            +

            Returns a HTML document fragment for a download button.

            +
            + +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + value +
            + getvalue() +
            + +
            +

            Obtains the value from the current widget state. Should be overridden.

            +
            + +
            +
            +
            + setvalue(_value: any) +
            + +
            +

            Sets a value in the widget. Should be overridden.

            +
            + +
            + Parameters : + + + + + + + + + + + + + + + + + + + + +
            NameTypeOptionalDescription
            _value + any + + No + +
              +
            • value to set
            • +
            + +
            +
            +
            +
            +
            + Returns : void + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + originalInputValue +
            + getoriginalInputValue() +
            + +
            +

            Obtains the value from the original form control the widget is instantiated on. +This form control is often hidden by the widget.

            +
            + +
            +
            +
            + setoriginalInputValue(value) +
            + +
            +

            Updates the value in the original form control the widget is instantiated on. +This form control is often hidden by the widget.

            +
            + +
            + Parameters : + + + + + + + + + + + + + + + + + + +
            NameOptionalDescription
            value + No + +
              +
            • value to set
            • +
            + +
            +
            +
            +
            +
            + Returns : void + +
            +
            + + + + + + + + + + + + + + + + + +
            + + list +
            + getlist() +
            + +
            +

            Returns true if the widget is using a list of options.

            +
            + +
            +
            +
            +
            +
            + + +
            +
            import input from "./input";
            +import event from "./event";
            +
            +const range = document.createRange();
            +
            +/**
            + * A Widget class that can be extended to provide some of the basic widget functionality out of the box.
            + */
            +class Widget {
            +  element: any;
            +  options: any;
            +  question: any;
            +  _props: any;
            +
            +  /**
            +   * @class
            +   * @param {Element} element - The DOM element the widget is applied on
            +   * @param {(boolean|{touch: boolean})} [options] - Options passed to the widget during instantiation
            +   */
            +  constructor(element: Element, options: boolean | { touch: boolean }) {
            +    this.element = element;
            +    this.options = options || {};
            +    this.question = element.closest(".question");
            +    this._props = this._getProps();
            +
            +    // Some widgets (e.g. ImageMap) initialize asynchronously and init returns a promise.
            +    return (this._init() as any) || this;
            +  }
            +
            +  /**
            +   * Meant to be overridden, but automatically called.
            +   *
            +   */
            +  _init() {
            +    // load default value into the widget
            +    this.value = this.originalInputValue;
            +    // if widget initializes asynchronously return a promise here. Otherwise, return nothing/undefined/null.
            +  }
            +
            +  /**
            +   * Not meant to be overridden, but could be. Recommend to extend `get props()` instead.
            +   *
            +   * @return {object} props object
            +   */
            +  _getProps() {
            +    const that = this;
            +    const classList = that.element.closest(".question, form.or")?.classList || [];
            +    return {
            +      get readonly() {
            +        return that.element.nodeName.toLowerCase() === "select"
            +          ? that.element.hasAttribute("readonly")
            +          : !!that.element.readOnly;
            +      },
            +
            +      appearances: [...classList]
            +        .filter((cls) => cls.indexOf("or-appearance-") === 0)
            +        .map((cls) => cls.substring(14)),
            +      multiple: !!this.element.multiple,
            +      disabled: !!this.element.disabled,
            +      type: this.element.getAttribute("data-type-xml"),
            +    };
            +  }
            +
            +  /**
            +   * Disallow user input into widget by making it readonly.
            +   */
            +  disable() {
            +    // leave empty in Widget.js
            +  }
            +
            +  /**
            +   * Performs opposite action of disable() function.
            +   */
            +  enable() {
            +    // leave empty in Widget.js
            +  }
            +
            +  /**
            +   * Updates form-defined language strings, <option>s (cascading selects, and (calculated) values.
            +   * Most of the times, this function needs to be overridden in the widget.
            +   */
            +  update() {}
            +
            +  /**
            +   * Returns widget properties. May need to be extended.
            +   *
            +   * @readonly
            +   * @type {object}
            +   */
            +  get props() {
            +    return this._props;
            +  }
            +
            +  /**
            +   * Returns a HTML document fragment for a reset button.
            +   *
            +   * @readonly
            +   * @type {Element}
            +   */
            +  get resetButtonHtml() {
            +    return range.createContextualFragment(
            +      `<button
            +                type="button"
            +                class="btn-icon-only btn-reset"
            +                aria-label="reset">
            +                <i class="icon icon-refresh"> </i>
            +            </button>`
            +    );
            +  }
            +
            +  /**
            +   * Returns a HTML document fragment for a download button.
            +   *
            +   * @readonly
            +   * @type {Element}
            +   */
            +  get downloadButtonHtml() {
            +    return range.createContextualFragment(
            +      `<a
            +                class="btn-icon-only btn-download"
            +                aria-label="download"
            +                download
            +                href=""><i class="icon icon-download"> </i></a>`
            +    );
            +  }
            +
            +  /**
            +   * Obtains the value from the current widget state. Should be overridden.
            +   *
            +   * @readonly
            +   * @type {*}
            +   */
            +  get value() {
            +    return undefined;
            +  }
            +
            +  /**
            +   * Sets a value in the widget. Should be overridden.
            +   *
            +   * @param {*} _value - value to set
            +   * @type {*}
            +   */
            +  set value(_value: any) {
            +    //
            +  } // eslint-disable-line no-empty-function -- this is defining the API
            +
            +  /**
            +   * Obtains the value from the original form control the widget is instantiated on.
            +   * This form control is often hidden by the widget.
            +   *
            +   * @readonly
            +   * @type {*}
            +   */
            +  get originalInputValue() {
            +    return input.getVal(this.element);
            +  }
            +
            +  /**
            +   * Updates the value in the original form control the widget is instantiated on.
            +   * This form control is often hidden by the widget.
            +   *
            +   * @param {*} value - value to set
            +   * @type {*}
            +   */
            +  set originalInputValue(value) {
            +    // Avoid unnecessary change events as they could have significant negative consequences!
            +    // However, to add a check for this.originalInputValue !== value here would affect performance too much,
            +    // so we rely on widget code to only use this setter when the value changes.
            +    input.setVal(this.element, value, null);
            +    this.element.dispatchEvent(event.Change());
            +  }
            +
            +  /**
            +   * Returns its own name.
            +   *
            +   * @static
            +   * @readonly
            +   * @type {string}
            +   */
            +  //   static get name() {
            +  //     return this.constructor.name;
            +  //   }
            +
            +  /**
            +   * Returns true if the widget is using a list of options.
            +   *
            +   * @readonly
            +   * @static
            +   * @type {boolean}
            +   */
            +  static get list() {
            +    return false;
            +  }
            +
            +  /**
            +   * Tests whether widget needs to be instantiated (e.g. if not to be used for touchscreens).
            +   * Note that the Element (used in the constructor) will be provided as parameter.
            +   *
            +   * @static
            +   * @return {boolean} to instantiate or not to instantiate, that is the question
            +   */
            +  static condition() {
            +    return true;
            +  }
            +}
            +
            +export default Widget;
            +
            +
            +
            + + + + + + + + + +
            +
            +

            results matching ""

            +
              +
              +
              +

              No results matching ""

              +
              +
              +
              + +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/AccordionSectionComponent.html b/documentation/docs/generated/components/AccordionSectionComponent.html new file mode 100644 index 0000000000..5475c802ab --- /dev/null +++ b/documentation/docs/generated/components/AccordionSectionComponent.html @@ -0,0 +1,815 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
              +
              + + +
              +
              + + + + + + + + +
              +

              +

              File

              +

              +

              + src/app/shared/components/template/components/layout/accordion_section.ts +

              + + + +

              +

              Extends

              +

              +

              + TemplateBaseComponent +

              + +

              +

              Implements

              +

              +

              + OnInit +

              + + +
              +

              Metadata

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              + +
              +

              Index

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              Properties
              +
              + +
              +
              Methods
              +
              + +
              +
              Inputs
              +
              +
                +
              • + id +
              • +
              +
              +
              Outputs
              +
              + +
              +
              + + +
              +

              Inputs

              + + + + + + + + + + + + +
              + + id +
              + Type : string + +
              + +
              +
              +
              +

              Outputs

              + + + + + + + + + + + + + + + +
              + + toggleState +
              + Type : EventEmitter + +
              + +
              +

              Emit output event so parent can respond to open/close events (e.g. close other sections when new section opened)

              +
              +
              +
              + + +
              + +

              + Methods +

              + + + + + + + + + + + + + + + + + + + +
              + + + Public + toggleOpen + + +
              + + toggleOpen() +
              + +
              + +
              + Returns : void + +
              +
              +
              +
              + +

              + Properties +

              + + + + + + + + + + + + + + +
              + + + Public + completed + + +
              + Type : boolean + +
              + +
              + + + + + + + + + + + + + + +
              + + + Public + percentComplete + + +
              + Type : number + +
              + +
              + + + + + + + + + + + + + + +
              + + + Public + title + + +
              + Type : string + +
              + +
              +
              + +
              + + +
              +
              import { Component, OnInit, Output, EventEmitter, Input } from "@angular/core";
              +import {
              +  getBooleanParamFromTemplateRow,
              +  getStringParamFromTemplateRow,
              +} from "src/app/shared/utils";
              +import { TemplateBaseComponent } from "../base";
              +
              +@Component({
              +  selector: "plh-tmpl-accordion-section",
              +  template: `<div class="accordion-wrapper">
              +    <div
              +      [ngClass]="{
              +        completed: completed && !_row.disabled,
              +        disabled: _row.disabled,
              +        inProgress: !completed && !_row.disabled && percentComplete > 0,
              +        notStarted: !completed && !_row.disabled && percentComplete == 0
              +      }"
              +      class="accordion-status"
              +    >
              +      <img
              +        *ngIf="completed && !_row.disabled"
              +        class="tick-icon"
              +        [src]="'plh_images/icons/tick.svg' | plhAsset"
              +      />
              +      <img *ngIf="_row.disabled" [src]="'plh_images/icons/temporarily_disabled.svg' | plhAsset" />
              +      <img
              +        *ngIf="!completed && !_row.disabled"
              +        [src]="'plh_images/icons/in_progress.svg' | plhAsset"
              +      />
              +    </div>
              +    <div
              +      class="accordion-section"
              +      [ngClass]="{
              +        openSection: _row.parameter_list.state === 'open',
              +        disabled: _row.disabled,
              +        completed: completed,
              +        inProgress: !completed && !_row.disabled
              +      }"
              +    >
              +      <div class="progress" [ngStyle]="{ width: percentComplete + '%' }"></div>
              +      <h2 (click)="toggleOpen()">{{ title }}</h2>
              +      <div
              +        class="accordion-section-content"
              +        [ngClass]="{
              +          openSection: _row.parameter_list.state === 'open'
              +        }"
              +      >
              +        <plh-template-component
              +          style="z-index: 2"
              +          *ngFor="let childRow of _row.rows; trackBy: trackByRow"
              +          [row]="childRow"
              +          [parent]="parent"
              +        >
              +        </plh-template-component>
              +      </div>
              +    </div>
              +  </div>`,
              +  styleUrls: ["./accordion.scss", "../tmpl-components-common.scss"],
              +})
              +export class AccordionSectionComponent extends TemplateBaseComponent implements OnInit {
              +  public completed: boolean;
              +  public percentComplete: number;
              +  public title: string;
              +  private launch_when_locked: boolean;
              +
              +  @Input() id: string;
              +  /** Emit output event so parent can respond to open/close events (e.g. close other sections when new section opened) */
              +  @Output() toggleState = new EventEmitter<string>();
              +
              +  ngOnInit() {
              +    this.getParams();
              +  }
              +
              +  public toggleOpen() {
              +    if (!this._row.disabled) {
              +      this.toggleState.emit(this.id);
              +    } else if (this._row.disabled && this.launch_when_locked) {
              +      this.triggerActions("click");
              +    }
              +  }
              +
              +  private getParams() {
              +    this.completed = getStringParamFromTemplateRow(this._row, "completed", "false") === "true";
              +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
              +    this.launch_when_locked = getBooleanParamFromTemplateRow(
              +      this._row,
              +      "launch_when_locked",
              +      false
              +    );
              +    this.percentComplete = this._row.value ? this._row.value : 0;
              +    this.updateStatus(this.percentComplete);
              +  }
              +
              +  private updateStatus(value: number) {
              +    if (value == 100) {
              +      this.completed = true;
              +    } else if (value > 0) {
              +      this.completed = false;
              +    }
              +  }
              +}
              +
              +
              + + +
              +

              + ./accordion.scss +

              +
              @use "/src/theme/mixins";
              +
              +$background-highlight: var(--accordion-background-highlight, var(--gradient-primary-light-vertical));
              +
              +.workshops-accordion {
              +  position: relative;
              +  margin-top: var(--large-margin);
              +  &::after {
              +    content: "";
              +    width: 1px;
              +    height: calc(100% - 35px);
              +    background: var(--ion-color-primary);
              +    position: absolute;
              +    left: 21px;
              +    top: 0;
              +    margin-top: var(--regular-margin);
              +  }
              +}
              +.accordion-wrapper {
              +  display: flex;
              +  justify-content: space-between;
              +  // align-items: center; // aligns dot in center while closed but open will connecting line looks off
              +  margin-bottom: var(--regular-margin);
              +  height: 100%;
              +  .accordion-status {
              +    @include mixins.medium-square;
              +    border-radius: var(--ion-border-radius-rounded);
              +    border: var(--ion-border-thin-standard);
              +    padding: var(--tiny-padding);
              +    background: var(--ion-color-primary-contrast);
              +    display: flex;
              +    justify-content: center;
              +    z-index: 2;
              +    &.inProgress {
              +      background: $background-highlight;
              +    }
              +    &.disabled {
              +      background: var(--ion-color-primary-contrast);
              +    }
              +    &.completed {
              +      background: $background-highlight;
              +    }
              +  }
              +  .accordion-section {
              +    display: flex;
              +    flex-direction: column;
              +    position: relative;
              +    width: var(--accordion-section-width);
              +    border-radius: var(--ion-border-radius-standard);
              +    overflow: hidden;
              +    padding: var(--small-padding);
              +    border: var(--ion-border-thin-standard);
              +    transition: max-height 0.4s;
              +    overflow-y: hidden;
              +    &.completed {
              +      background: $background-highlight;
              +      color: var(--ion-color-primary);
              +      .progress {
              +        opacity: 0;
              +      }
              +    }
              +    &.disabled {
              +      background: var(--ion-color-primary-contrast);
              +      color: var(--ion-color-primary);
              +      .progress {
              +        opacity: 0;
              +      }
              +    }
              +    &.inProgress {
              +      background: var(--ion-color-primary-contrast);
              +      color: var(--ion-color-primary);
              +    }
              +    &.openSection {
              +      background: $background-highlight;
              +      transition: max-height 0.4s;
              +      .progress {
              +        opacity: 0;
              +        transition: none !important;
              +      }
              +    }
              +    .progress {
              +      position: absolute;
              +      height: 100%;
              +      left: 0;
              +      z-index: 1;
              +      background: $background-highlight;
              +      opacity: 1;
              +      transition: opacity 0.4s ease-in;
              +      margin-top: calc(var(--small-padding) * -1); // offset for padding in .accordion-section
              +    }
              +  }
              +  .accordion-section {
              +    h2 {
              +      z-index: 2;
              +      text-align: left;
              +      margin: 0;
              +      font-size: var(--font-size-subtitle-small);
              +      font-weight: var(--font-weight-bold);
              +      @media (max-width: 320px) {
              +        font-size: var(--font-size-subtitle-small-device);
              +      }
              +    }
              +  }
              +  .accordion-section-content {
              +    max-height: 0;
              +    z-index: 2;
              +    transition: max-height 0.4s;
              +    &.openSection {
              +      max-height: var(--accordion-section-open-height);
              +    }
              +  }
              +}
              +
              +

              + ../tmpl-components-common.scss +

              +
              @use "/src/theme/mixins.scss";
              +
              +.tmpl-video-container {
              +  width: 100%;
              +  display: flex;
              +  justify-content: center;
              +
              +  video {
              +    width: 100%;
              +    max-width: var(--video-max-width);
              +    border-radius: var(--ion-border-radius-secondary);
              +  }
              +}
              +
              +.left {
              +  justify-content: start;
              +}
              +.right {
              +  justify-content: flex-end;
              +}
              +.center {
              +  justify-content: center;
              +}
              +.rounded_corners {
              +  border-radius: var(--ion-border-radius-standard);
              +
              +  img {
              +    border-radius: var(--ion-border-radius-standard);
              +  }
              +}
              +.whiteText {
              +  color: var(--ion-color-primary-contrast);
              +}
              +
              +
              + +
              +
              +
              +
              + Legend +
              +
              +
              Html element +
              +
              +
              Component +
              +
              +
              Html element with directive +
              +
              +
              + + +
              + + + + + + + + + + + + + + + + + + + + + + + +
              +
              +

              results matching ""

              +
                +
                +
                +

                No results matching ""

                +
                +
                +
                + +
                +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/AnimatedSectionComponent.html b/documentation/docs/generated/components/AnimatedSectionComponent.html new file mode 100644 index 0000000000..3eb539ae3e --- /dev/null +++ b/documentation/docs/generated/components/AnimatedSectionComponent.html @@ -0,0 +1,734 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                +
                + + +
                +
                + + + + + + + + +
                +

                +

                File

                +

                +

                + src/app/shared/components/template/components/layout/animated_section.ts +

                + + + +

                +

                Extends

                +

                +

                + TemplateLayoutComponent +

                + +

                +

                Implements

                +

                +

                + OnInit +

                + + +
                +

                Metadata

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                + +
                +

                Index

                + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                +
                Properties
                +
                + +
                +
                Methods
                +
                + +
                +
                Inputs
                +
                + +
                +
                + + +
                +

                Inputs

                + + + + + + + + + + + + + + + + + + +
                + + parent +
                + Type : TemplateContainerComponent + +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +

                reference to parent template container - does not have setter as should remain static

                +
                +
                + + + + + + + + + + + + + + + + + + +
                + + row +
                + Type : FlowTypes.TemplateRow + +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +

                specific data used in component rendering

                +
                +
                +
                + + + +
                + +

                + Methods +

                + + + + + + + + + + + + + + + + + + + + + + +
                + + + Public + interceptTemplateContainerAction + + +
                + + interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +

                Add any additional methods or function calls to actions that would otherwise be handled by +the template container. +be processed by the template container parent (as it is used as a filter)

                +
                + +
                + Parameters : + + + + + + + + + + + + + + + + + + + +
                NameTypeOptional
                action + FlowTypes.TemplateRowAction + + No +
                +
                +
                +
                +
                + Returns : boolean + +
                +
                +

                true or false to specify if the action should continue to also +be processed by the template container parent (as it is used as a filter)

                + +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + + Public + modifyRowSetter + + +
                + + modifyRowSetter(row: FlowTypes.TemplateRow) +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +

                Apply any changes here to be applied the row @Input() set operation

                +
                + +
                + Parameters : + + + + + + + + + + + + + + + + + + + +
                NameTypeOptional
                row + FlowTypes.TemplateRow + + No +
                +
                +
                +
                +
                + Returns : FlowTypes.TemplateRow + +
                +
                + +
                +
                + + + + + + + + + + + + + + + + + + + + + + +
                + + + Public + scrollToTop + + +
                + + scrollToTop() +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +

                As content can be nested within containers or pages, a general +method that scrolls everything scrollable (all parent containers and page content) +to the top

                +
                + +
                + Returns : void + +
                +
                +
                +
                + +

                + Properties +

                + + + + + + + + + + + + + + + + + +
                + + + _row + + +
                + Type : FlowTypes.TemplateRow + +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                + + + + + + + + + + + + + + + + + +
                + + + Public + trackByRow + + +
                + Default value : () => {...} +
                +
                Inherited from TemplateLayoutComponent +
                +
                + +
                +
                + +
                + + +
                +
                import { animate, state, style, transition, trigger } from "@angular/animations";
                +import { Component, OnInit } from "@angular/core";
                +import { TemplateLayoutComponent } from "./layout";
                +
                +@Component({
                +  selector: "plh-tmpl-animated-section",
                +  template: `
                +    <plh-template-component
                +      *ngFor="let childRow of _row.rows; trackBy: trackByRow"
                +      [row]="childRow"
                +      [parent]="parent"
                +      [@fadeSection]="_row?.hidden ? 'out' : 'in'"
                +    ></plh-template-component>
                +  `,
                +  animations: [
                +    // HACK - rough copy of shared fadeInOut method
                +    // Would work better if all sections grouped to apply transition across sections (support fade out as well as in)
                +    trigger("fadeSection", [
                +      state("in", style({ opacity: 1 })),
                +      state("out", style({ opacity: 0 })),
                +      // when fading in include 1s delay for previous animations to complete
                +      transition("* => in", [animate("1s ease-in-out")]),
                +      // transition("in => out", [animate("0.3s ease-out")]),
                +      // TODO - fade out not possible as parent block display set to hidden before time to watch
                +    ]),
                +  ],
                +  styleUrls: ["./animated-section.scss"],
                +})
                +export class AnimatedSectionComponent extends TemplateLayoutComponent implements OnInit {
                +  ngOnInit() {
                +    this.parent.templateActionService.handleActionsCallback = async () => {
                +      // Temporary workaround to always scroll to top after actions triggered within animated section (uncomment)
                +      // this.scrollToTop();
                +    };
                +  }
                +}
                +
                +
                + + +
                +

                + ./animated-section.scss +

                +
                :host {
                +  width: 100%;
                +  display: flex;
                +  flex-direction: column;
                +  height: 100%;
                +}
                +
                +
                + +
                +
                +
                +
                + Legend +
                +
                +
                Html element +
                +
                +
                Component +
                +
                +
                Html element with directive +
                +
                +
                + + +
                + + + + + + + + + + + + + + + + + + + + + + + +
                +
                +

                results matching ""

                +
                  +
                  +
                  +

                  No results matching ""

                  +
                  +
                  +
                  + +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/AnimatedSectionGroupComponent.html b/documentation/docs/generated/components/AnimatedSectionGroupComponent.html new file mode 100644 index 0000000000..f4dadc5772 --- /dev/null +++ b/documentation/docs/generated/components/AnimatedSectionGroupComponent.html @@ -0,0 +1,257 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                  +
                  + + +
                  +
                  + + + + + + + + +
                  +

                  +

                  File

                  +

                  +

                  + src/app/shared/components/template/components/layout/animated_section_group.ts +

                  + + + +

                  +

                  Extends

                  +

                  +

                  + TemplateBaseComponent +

                  + + + +
                  +

                  Metadata

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  + + + + + + + + + +
                  + + +
                  +
                  import { Component } from "@angular/core";
                  +import { TemplateBaseComponent } from "../base";
                  +
                  +@Component({
                  +  selector: "plh-tmpl-animated-section-group",
                  +  template: `<div class="animated-section-group">
                  +    <plh-template-component
                  +      *ngFor="let childRow of _row.rows; trackBy: trackByRow"
                  +      [row]="childRow"
                  +      [parent]="parent"
                  +    ></plh-template-component>
                  +  </div>`,
                  +})
                  +export class AnimatedSectionGroupComponent extends TemplateBaseComponent {}
                  +
                  +
                  + + + +
                  +
                  +
                  +
                  + Legend +
                  +
                  +
                  Html element +
                  +
                  +
                  Component +
                  +
                  +
                  Html element with directive +
                  +
                  +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  +

                  results matching ""

                  +
                    +
                    +
                    +

                    No results matching ""

                    +
                    +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/ComboBoxModalComponent.html b/documentation/docs/generated/components/ComboBoxModalComponent.html new file mode 100644 index 0000000000..bdc3b90345 --- /dev/null +++ b/documentation/docs/generated/components/ComboBoxModalComponent.html @@ -0,0 +1,1414 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                    +
                    + + +
                    +
                    + + + + + + + + +
                    +

                    +

                    File

                    +

                    +

                    + src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts +

                    + + + + +

                    +

                    Implements

                    +

                    +

                    + OnInit +

                    + + +
                    +

                    Metadata

                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    + +
                    +

                    Index

                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    +
                    Properties
                    +
                    + +
                    +
                    Methods
                    +
                    + +
                    +
                    Inputs
                    +
                    + +
                    +
                    Accessors
                    +
                    + +
                    +
                    + +
                    +

                    Constructor

                    + + + + + + + + + + + + + +
                    +constructor(fb: FormBuilder, modalController: ModalController) +
                    + +
                    +
                    + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    NameTypeOptional
                    fb + FormBuilder + + No +
                    modalController + ModalController + + No +
                    +
                    +
                    +
                    + +
                    +

                    Inputs

                    + + + + + + + + + + + + +
                    + + customAnswerSelected +
                    + Type : boolean + +
                    + +
                    + + + + + + + + + + + + +
                    + + row +
                    + Type : FlowTypes.TemplateRow + +
                    + +
                    + + + + + + + + + + + + +
                    + + selectedValue +
                    + Type : string + +
                    + +
                    + + + + + + + + + + + + +
                    + + style +
                    + Type : string + +
                    + +
                    + + + + + + + + + + + + +
                    + + template +
                    + Type : FlowTypes.Template + +
                    + +
                    +
                    + + + +
                    + +

                    + Methods +

                    + + + + + + + + + + + + + + + + + + + +
                    + + + buildForm + + +
                    +buildForm() +
                    + +
                    + +
                    + Returns : void + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + calculateAnswer + + +
                    +calculateAnswer() +
                    + +
                    + +
                    + Returns : void + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + check + + +
                    +check(el) +
                    + +
                    + +
                    + Parameters : + + + + + + + + + + + + + + + + + +
                    NameOptional
                    el + No +
                    +
                    +
                    +
                    +
                    + Returns : void + +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + closeModal + + +
                    +closeModal(value) +
                    + +
                    + +
                    + Parameters : + + + + + + + + + + + + + + + + + +
                    NameOptional
                    value + No +
                    +
                    +
                    +
                    +
                    + Returns : void + +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + convertToObject + + +
                    +convertToObject(answers_list: string[]) +
                    + +
                    + +
                    + Parameters : + + + + + + + + + + + + + + + + + + + +
                    NameTypeOptional
                    answers_list + string[] + + No +
                    +
                    +
                    +
                    +
                    + Returns : AnswerBody[] + +
                    +
                    + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + enterCustomAnswer + + +
                    +enterCustomAnswer() +
                    + +
                    + +
                    + Returns : void + +
                    +
                    + + + + + + + + + + + + + + + + + + + +
                    + + + getParams + + +
                    +getParams() +
                    + +
                    + +
                    + Returns : void + +
                    +
                    +
                    +
                    + +

                    + Properties +

                    + + + + + + + + + + + + + + +
                    + + + form + + +
                    + Type : FormGroup + +
                    + +
                    + + + + + + + + + + + + + + +
                    + + + formData + + +
                    + Type : FormGroup | null + +
                    + +
                    + + + + + + + + + + + + + + + + + +
                    + + + inputAllowed + + +
                    + Type : boolean + +
                    + Default value : false +
                    + +
                    + + + + + + + + + + + + + + + + + +
                    + + + inputPosition + + +
                    + Type : boolean + +
                    + Default value : false +
                    + +
                    + + + + + + + + + + + + + + + + + +
                    + + + maxLength + + +
                    + Type : number + +
                    + Default value : 30 +
                    + +
                    + + + + + + + + + + + + + + + + + +
                    + + + placeholder + + +
                    + Type : string + +
                    + Default value : "" +
                    + +
                    + + + + + + + + + + + + + + +
                    + + + textTitle + + +
                    + Type : string | null + +
                    + +
                    + + + + + + + + + + + + + + +
                    + + + valuesFromListAnswers + + +
                    + Type : AnswerBody[] + +
                    + +
                    +
                    + +
                    +

                    + Accessors +

                    + + + + + + + + + + + + + + +
                    + + customAnswerClass +
                    + getcustomAnswerClass() +
                    + +
                    +
                    +
                    + + +
                    +
                    import { Component, Input, OnInit } from "@angular/core";
                    +import { FlowTypes } from "src/app/shared/model";
                    +import {
                    +  getBooleanParamFromTemplateRow,
                    +  getNumberParamFromTemplateRow,
                    +  getParamFromTemplateRow,
                    +  getStringParamFromTemplateRow,
                    +} from "src/app/shared/utils";
                    +import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
                    +import { ModalController } from "@ionic/angular";
                    +
                    +interface AnswerBody {
                    +  name: string | null;
                    +  text: string | null;
                    +}
                    +
                    +@Component({
                    +  selector: "combo-box-modal",
                    +  templateUrl: "./combo-box-modal.component.html",
                    +  styleUrls: ["./combo-box-modal.component.scss"],
                    +})
                    +export class ComboBoxModalComponent implements OnInit {
                    +  @Input() row: FlowTypes.TemplateRow;
                    +  @Input() template: FlowTypes.Template;
                    +  @Input() selectedValue: string;
                    +  @Input() customAnswerSelected: boolean;
                    +  @Input() style: string;
                    +  formData: FormGroup | null;
                    +  valuesFromListAnswers: AnswerBody[];
                    +  textTitle: string | null;
                    +  inputAllowed: boolean = false;
                    +  form: FormGroup;
                    +  inputPosition: boolean = false;
                    +  maxLength: number = 30;
                    +  placeholder: string = "";
                    +  constructor(private fb: FormBuilder, private modalController: ModalController) {}
                    +
                    +  ngOnInit() {
                    +    this.getParams();
                    +    this.calculateAnswer();
                    +  }
                    +
                    +  getParams() {
                    +    this.valuesFromListAnswers = this.convertToObject(
                    +      getParamFromTemplateRow(this.row, "answer_list", null)
                    +    );
                    +    this.textTitle = getStringParamFromTemplateRow(this.row, "text", null);
                    +    this.inputAllowed = getBooleanParamFromTemplateRow(this.row, "input_allowed", false);
                    +    this.inputPosition =
                    +      getStringParamFromTemplateRow(this.row, "input_position", "bottom") === "top";
                    +    this.maxLength = getNumberParamFromTemplateRow(this.row, "max_length", 30);
                    +    this.placeholder = getStringParamFromTemplateRow(this.row, "answer_placeholder", "");
                    +    if (this.formData) {
                    +      this.form = this.formData;
                    +    } else {
                    +      this.buildForm();
                    +    }
                    +  }
                    +
                    +  calculateAnswer() {
                    +    if (!this.customAnswerSelected) {
                    +      this.form.get("answer").setValue(this.selectedValue);
                    +    } else {
                    +      this.form.get("customAnswer").setValue(this.selectedValue);
                    +    }
                    +  }
                    +
                    +  convertToObject(answers_list: string[]): AnswerBody[] {
                    +    let answers: AnswerBody[] = [];
                    +    if (answers_list) {
                    +      answers_list.map((item) => {
                    +        const obj: AnswerBody = {
                    +          text: null,
                    +          name: null,
                    +        };
                    +        const stringProperties = item.split("|");
                    +        stringProperties.forEach((s) => {
                    +          const [field, value] = s.split(":").map((v) => v.trim());
                    +          if (field && value) {
                    +            obj[field] = value;
                    +          }
                    +        });
                    +        answers.push(obj);
                    +      });
                    +      return answers;
                    +    }
                    +  }
                    +
                    +  buildForm() {
                    +    this.form = this.fb.group({
                    +      answer: new FormControl(null, []),
                    +    });
                    +    if (this.inputAllowed) {
                    +      this.form.addControl("customAnswer", new FormControl("", []));
                    +    }
                    +  }
                    +
                    +  check(el) {
                    +    if (this.form.get("answer").value === el.name) {
                    +      this.form.get("answer").setValue(null);
                    +      this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: null });
                    +    } else {
                    +      this.form.get("answer").setValue(el);
                    +      if (this.inputAllowed) {
                    +        this.form.get("customAnswer").setValue(null);
                    +      }
                    +      this.customAnswerSelected = false;
                    +      this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: el });
                    +    }
                    +  }
                    +
                    +  closeModal(value) {
                    +    setTimeout(async () => {
                    +      await this.modalController.dismiss(value);
                    +    }, 50);
                    +  }
                    +
                    +  enterCustomAnswer() {
                    +    if (this.form.get("customAnswer").value !== "") {
                    +      if (this.customAnswerSelected) {
                    +        this.customAnswerSelected = true;
                    +        this.closeModal({
                    +          customAnswerSelected: this.customAnswerSelected,
                    +          answer: { text: this.form.get("customAnswer").value, name: "other" },
                    +        });
                    +      } else {
                    +        this.form.get("answer").setValue(null);
                    +        this.customAnswerSelected = true;
                    +        this.closeModal({
                    +          customAnswerSelected: this.customAnswerSelected,
                    +          answer: { text: this.form.get("customAnswer").value, name: "other" },
                    +        });
                    +      }
                    +    }
                    +  }
                    +
                    +  get customAnswerClass() {
                    +    return this.customAnswerSelected ? "text-box-input checked-radion" : "text-box-input";
                    +  }
                    +}
                    +
                    +
                    + +
                    +
                    <div class="container-modal">
                    +  <div class="header" *ngIf="textTitle">
                    +    {{ textTitle }}
                    +  </div>
                    +  <div class="form">
                    +    <form [formGroup]="form" [class.reverse]="inputPosition">
                    +      <div class="checkboxes">
                    +        <div
                    +          class="container-radio"
                    +          [class.checked-radio]="form.get('answer').value === radio.name"
                    +          *ngFor="let radio of valuesFromListAnswers"
                    +        >
                    +          <label>
                    +            <input
                    +              type="radio"
                    +              (click)="check(radio)"
                    +              formControlName="answer"
                    +              [value]="radio.name"
                    +            />
                    +            {{ radio.text | translate }}
                    +          </label>
                    +        </div>
                    +      </div>
                    +      <div class="wrapper" *ngIf="inputAllowed">
                    +        <ion-input
                    +          formControlName="customAnswer"
                    +          [class]="customAnswerClass"
                    +          (keyup.enter)="enterCustomAnswer()"
                    +          [placeholder]="placeholder"
                    +          [class.checked-radio]="form.get('customAnswer').value === selectedValue"
                    +        >
                    +        </ion-input>
                    +      </div>
                    +    </form>
                    +  </div>
                    +</div>
                    +
                    +
                    + +
                    +

                    + ./combo-box-modal.component.scss +

                    +
                    @use "/src/theme/mixins";
                    +
                    +$background-with-value: var(
                    +  --combo-box-background-with-value,
                    +  var(--gradient-primary-light-vertical)
                    +);
                    +
                    +:host {
                    +  display: contents;
                    +}
                    +
                    +.wrapper {
                    +  padding: 0;
                    +  .text-box-input {
                    +    background: var(--ion-color-primary-contrast);
                    +    border: var(--ion-border-standard);
                    +    border-radius: var(--ion-border-radius-secondary);
                    +    width: 100%;
                    +    min-height: 55px;
                    +    font-size: var(--combo-box-font-size-standard);
                    +    color: var(--ion-color-primary);
                    +    text-align: center;
                    +    font-weight: 500;
                    +    box-shadow: var(--ion-default-box-shadow);
                    +    margin-bottom: 20px;
                    +  }
                    +}
                    +
                    +.container-modal {
                    +  width: 100%;
                    +  height: 100%;
                    +  padding: 20px 20px 0 20px;
                    +  overflow: auto;
                    +  max-height: 90vh; // match ion-modal.combo-box-modal
                    +  .header {
                    +    font-size: 20px;
                    +    text-align: center;
                    +    color: var(--ion-color-primary);
                    +    margin-bottom: 20px;
                    +  }
                    +  .form {
                    +    display: flex;
                    +    width: 100%;
                    +    justify-content: center;
                    +    form {
                    +      display: flex;
                    +      flex-direction: column;
                    +      width: 100%;
                    +    }
                    +    .reverse {
                    +      flex-direction: column-reverse;
                    +    }
                    +    .container-radio {
                    +      margin-bottom: 20px;
                    +      min-height: 55px;
                    +      width: 100%;
                    +      background: var(--ion-color-primary-contrast);
                    +      border: var(--ion-border-standard);
                    +      border-radius: var(--ion-border-radius-secondary);
                    +      box-shadow: var(--ion-default-box-shadow);
                    +      @include mixins.flex-centered;
                    +      input {
                    +        display: none;
                    +      }
                    +      label {
                    +        padding: 5px;
                    +        width: 100%;
                    +        text-align: center;
                    +        @include mixins.flex-centered;
                    +        font-weight: var(--font-weight-standard);
                    +        font-size: var(--combo-box-font-size-standard);
                    +        color: var(--ion-color-primary);
                    +        min-height: 50px;
                    +        border-radius: 20px;
                    +      }
                    +    }
                    +    .checked-radio {
                    +      background: $background-with-value;
                    +    }
                    +  }
                    +}
                    +
                    +
                    + +
                    +
                    +
                    +
                    + Legend +
                    +
                    +
                    Html element +
                    +
                    +
                    Component +
                    +
                    +
                    Html element with directive +
                    +
                    +
                    + + +
                    + + + + + + + + + + + + + + + + + + + + + + + +
                    +
                    +

                    results matching ""

                    +
                      +
                      +
                      +

                      No results matching ""

                      +
                      +
                      +
                      + +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/FormComponent.html b/documentation/docs/generated/components/FormComponent.html new file mode 100644 index 0000000000..c77b40f741 --- /dev/null +++ b/documentation/docs/generated/components/FormComponent.html @@ -0,0 +1,537 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                      +
                      + + +
                      +
                      + + + + + + + + +
                      +

                      +

                      File

                      +

                      +

                      + src/app/shared/components/template/components/layout/form.ts +

                      + + + +

                      +

                      Extends

                      +

                      +

                      + TemplateBaseComponent +

                      + +

                      +

                      Implements

                      +

                      +

                      + OnInit +

                      + + +
                      +

                      Metadata

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + +
                      +

                      Index

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      Properties
                      +
                      + +
                      +
                      Methods
                      +
                      + +
                      +
                      Inputs
                      +
                      + +
                      +
                      + +
                      +

                      Constructor

                      + + + + + + + + + + +
                      +constructor() +
                      + +
                      +
                      + +
                      +

                      Inputs

                      + + + + + + + + + + + + +
                      + + inputRow +
                      + Type : FlowTypes.TemplateRow + +
                      + +
                      +
                      + + + +
                      + +

                      + Methods +

                      + + + + + + + + + + + + + + + + + + + +
                      + + + Public + submit + + +
                      + + submit() +
                      + +
                      + +
                      + Returns : void + +
                      +
                      +
                      +
                      + +

                      + Properties +

                      + + + + + + + + + + + + + + +
                      + + + Public + button_text + + +
                      + Type : string + +
                      + +
                      +
                      + +
                      + + +
                      +
                      import { Component, Input, OnInit } from "@angular/core";
                      +import { TemplateBaseComponent } from "../base";
                      +import { FlowTypes } from "../../models";
                      +import {
                      +  getBooleanParamFromTemplateRow,
                      +  getStringParamFromTemplateRow,
                      +} from "src/app/shared/utils";
                      +
                      +import { Device } from "@capacitor/device";
                      +
                      +@Component({
                      +  selector: "plh-tmpl-form",
                      +  template: ` <div>
                      +    <plh-template-component
                      +      *ngFor="let childRow of _row.rows; trackBy: trackByRow"
                      +      [row]="childRow"
                      +      [parent]="parent"
                      +    >
                      +    </plh-template-component>
                      +    <ion-button (click)="submit()">{{ button_text }}</ion-button>
                      +  </div>`,
                      +  styleUrls: ["./form.scss"],
                      +})
                      +export class FormComponent extends TemplateBaseComponent implements OnInit {
                      +  @Input() inputRow: FlowTypes.TemplateRow;
                      +  private deviceInfo;
                      +  private form = {};
                      +  private isAllowedDeviceInfo: boolean;
                      +  public button_text: string;
                      +  private pop_up_action_arg: string | null;
                      +  private go_to_action_arg: string | null;
                      +  private actions: FlowTypes.TemplateRowAction[];
                      +
                      +  constructor() {
                      +    super();
                      +    this.deviceInfo = Device.getInfo();
                      +  }
                      +
                      +  ngOnInit() {
                      +    if (this.inputRow) this._row = this.inputRow;
                      +    this.getParams();
                      +  }
                      +
                      +  public submit(): void {
                      +    this.fillInForm();
                      +    this.actions = this.createActions();
                      +    if (this.actions) this.parent.handleActions(this.actions, this._row);
                      +    console.log(this.form);
                      +  }
                      +
                      +  private getParams(): void {
                      +    this.button_text = getStringParamFromTemplateRow(this._row, "button_text", "Submit");
                      +    this.pop_up_action_arg = getStringParamFromTemplateRow(this._row, "button_pop_up", null);
                      +    this.go_to_action_arg = getStringParamFromTemplateRow(this._row, "button_go_to", null);
                      +    this.isAllowedDeviceInfo = getBooleanParamFromTemplateRow(this._row, "get_device_info", false);
                      +  }
                      +
                      +  private createActions(): FlowTypes.TemplateRowAction[] {
                      +    let result: FlowTypes.TemplateRowAction[] = [];
                      +    if (this.pop_up_action_arg || this.go_to_action_arg) {
                      +      result.push({
                      +        trigger: "click",
                      +        action_id: this.pop_up_action_arg ? "pop_up" : "go_to",
                      +        args: [this.pop_up_action_arg ? this.pop_up_action_arg : this.go_to_action_arg],
                      +      });
                      +    }
                      +    return result;
                      +  }
                      +
                      +  private fillInForm(): void {
                      +    this._row.rows.forEach((r) => {
                      +      if (
                      +        r.value &&
                      +        (r.type === "text_box" || r.type === "simple_checkbox" || r.type === "text_area")
                      +      ) {
                      +        this.form[r.name] = r.value;
                      +      }
                      +    });
                      +    if (this.isAllowedDeviceInfo) {
                      +      this.form["device_info"] = this.deviceInfo["__zone_symbol__value"];
                      +    }
                      +  }
                      +}
                      +
                      +
                      + + +
                      +

                      + ./form.scss +

                      +
                      $button-background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));
                      +
                      +ion-button {
                      +  font-size: 25px;
                      +  font-weight: 500;
                      +  color: var(--ion-color-primary-contrast);
                      +  text-transform: none;
                      +  white-space: pre-line;
                      +  min-height: 71px;
                      +  padding: var(--regular-margin) var(--regular-padding) 0;
                      +  --border-radius: 15px;
                      +  --box-shadow: var(--ion-default-box-shadow);
                      +  min-width: 100%;
                      +  --background: #{$button-background-primary};
                      +}
                      +
                      +
                      + +
                      +
                      +
                      +
                      + Legend +
                      +
                      +
                      Html element +
                      +
                      +
                      Component +
                      +
                      +
                      Html element with directive +
                      +
                      +
                      + + +
                      + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      +

                      results matching ""

                      +
                        +
                        +
                        +

                        No results matching ""

                        +
                        +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/NavGroupComponent.html b/documentation/docs/generated/components/NavGroupComponent.html new file mode 100644 index 0000000000..a932a7e467 --- /dev/null +++ b/documentation/docs/generated/components/NavGroupComponent.html @@ -0,0 +1,1325 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                        +
                        + + +
                        +
                        + + + + + + + + +
                        +

                        +

                        File

                        +

                        +

                        + src/app/shared/components/template/components/layout/nav_group.ts +

                        + + + +

                        +

                        Extends

                        +

                        +

                        + TemplateLayoutComponent +

                        + + + +
                        +

                        Metadata

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        + +
                        +

                        Index

                        + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        Properties
                        +
                        + +
                        +
                        Methods
                        +
                        + +
                        +
                        Inputs
                        +
                        + +
                        +
                        + +
                        +

                        Constructor

                        + + + + + + + + + + + + + +
                        +constructor(templateFieldService: TemplateFieldService) +
                        + +
                        +
                        + Parameters : + + + + + + + + + + + + + + + + + + +
                        NameTypeOptional
                        templateFieldService + TemplateFieldService + + No +
                        +
                        +
                        +
                        + +
                        +

                        Inputs

                        + + + + + + + + + + + + + + + + + + +
                        + + parent +
                        + Type : TemplateContainerComponent + +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        +

                        reference to parent template container - does not have setter as should remain static

                        +
                        +
                        + + + + + + + + + + + + + + + + + + +
                        + + row +
                        + Type : FlowTypes.TemplateRow + +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        +

                        specific data used in component rendering

                        +
                        +
                        +
                        + + + +
                        + +

                        + Methods +

                        + + + + + + + + + + + + + + + + + + + +
                        + + + getActiveSectionIdx + + +
                        +getActiveSectionIdx(progressField: string) +
                        + +
                        +

                        Function that will return Current Slider Index

                        +
                        + +
                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                        NameTypeOptional
                        progressField + string + + No +
                        +
                        +
                        +
                        +
                        + Returns : number + +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + +
                        + + + Async + goToSection + + +
                        + + goToSection(index: number) +
                        + +
                        +

                        Function that will move forward or back to Section

                        +
                        + +
                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                        NameTypeOptional
                        index + number + + No +
                        +
                        +
                        +
                        +
                        + Returns : any + +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + +
                        + + + interceptTemplateContainerAction + + +
                        +interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        + +
                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                        NameTypeOptional
                        action + FlowTypes.TemplateRowAction + + No +
                        +
                        +
                        +
                        +
                        + Returns : boolean + +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + +
                        + + + modifyRowSetter + + +
                        +modifyRowSetter(row: FlowTypes.TemplateRow) +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        + +
                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                        NameTypeOptional
                        row + FlowTypes.TemplateRow + + No +
                        +
                        +
                        +
                        +
                        + Returns : FlowTypes.TemplateRow + +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + +
                        + + + Async + updateSectionProgress + + +
                        + + updateSectionProgress() +
                        + +
                        +

                        Function to Update Progress of Stepper

                        +
                        + +
                        + Returns : any + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + +
                        + + + Public + scrollToTop + + +
                        + + scrollToTop() +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        +

                        As content can be nested within containers or pages, a general +method that scrolls everything scrollable (all parent containers and page content) +to the top

                        +
                        + +
                        + Returns : void + +
                        +
                        +
                        +
                        + +

                        + Properties +

                        + + + + + + + + + + + + + + + + + +
                        + + + containerRow + + +
                        + Default value : hackAddRowWithDefaultActions() +
                        + +
                        +

                        Temp row to pass emit completed/uncompleted actions to parent

                        +
                        +
                        + + + + + + + + + + + + + + +
                        + + + sectionIndex + + +
                        + Type : number + +
                        + +
                        + + + + + + + + + + + + + + + + + +
                        + + + templateNames + + +
                        + Type : string[] + +
                        + Default value : [] +
                        + +
                        + + + + + + + + + + + + + + + + + +
                        + + + _row + + +
                        + Type : FlowTypes.TemplateRow + +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        + + + + + + + + + + + + + + + + + +
                        + + + Public + trackByRow + + +
                        + Default value : () => {...} +
                        +
                        Inherited from TemplateLayoutComponent +
                        +
                        + +
                        +
                        + +
                        + + +
                        +
                        import { Component } from "@angular/core";
                        +import { PLHAnimations } from "src/app/shared/animations";
                        +import { FlowTypes } from "data-models";
                        +import { hackAddRowWithDefaultActions } from "../../hacks";
                        +import { TemplateLayoutComponent } from "./layout";
                        +import { isObject } from "src/app/shared/utils/utils";
                        +import { TemplateFieldService } from "../../services/template-field.service";
                        +
                        +@Component({
                        +  selector: "plh-tmpl-nav-group",
                        +  animations: PLHAnimations.fadeEntryExit,
                        +  template: `
                        +    <div class="nav-progress">
                        +      <div
                        +        *ngFor="let templateName of templateNames; index as i"
                        +        class="nav-progress-part"
                        +        [attr.data-seen]="i <= sectionIndex ? true : null"
                        +        (click)="goToSection(i)"
                        +      ></div>
                        +    </div>
                        +    <!-- Render placeholders for each section but omit content -->
                        +    <div
                        +      *ngFor="let templateName of templateNames; index as i"
                        +      class="nav-section"
                        +      [attr.data-selected]="sectionIndex === i ? true : null"
                        +    >
                        +      <plh-template-container
                        +        *ngIf="sectionIndex === i"
                        +        [name]="templateName"
                        +        [templatename]="templateName"
                        +        [parent]="parent"
                        +        [row]="containerRow"
                        +        @fadeEntryExit
                        +      >
                        +      </plh-template-container>
                        +    </div>
                        +  `,
                        +  styles: [
                        +    `
                        +      :host {
                        +        flex: 1;
                        +        display: flex;
                        +        flex-direction: column;
                        +      }
                        +      .nav-section {
                        +        display: flex;
                        +        flex-direction: column;
                        +        position: relative;
                        +        /* sections not active are kept off-screen to avoid content height jump */
                        +        right: 100vw;
                        +      }
                        +      .nav-section[data-selected] {
                        +        flex: 1;
                        +        right: unset;
                        +      }
                        +      .nav-progress {
                        +        display: flex;
                        +        flex-direction: row;
                        +        justify-content: space-evenly;
                        +        padding: 1em 0;
                        +      }
                        +
                        +      .nav-progress-part {
                        +        height: 7px;
                        +        flex: 1;
                        +        margin: 0 2px;
                        +        background-color: var(--ion-primary-color, #0d3f60);
                        +        border-radius: var(--ion-border-radius-standard);
                        +        max-width: 40px;
                        +      }
                        +
                        +      .nav-progress-part[data-seen] {
                        +        background-color: var(--ion-primary-color, #f88923);
                        +      }
                        +    `,
                        +  ],
                        +})
                        +export class NavGroupComponent extends TemplateLayoutComponent {
                        +  templateNames: string[] = [];
                        +  sectionIndex: number;
                        +
                        +  /** Temp row to pass emit completed/uncompleted actions to parent */
                        +  containerRow = hackAddRowWithDefaultActions();
                        +
                        +  constructor(private templateFieldService: TemplateFieldService) {
                        +    super();
                        +  }
                        +
                        +  modifyRowSetter(row: FlowTypes.TemplateRow) {
                        +    this.hackPopulateTemplateNames(row);
                        +    if (this.templateNames.length > 0) {
                        +      row._debug_name = this.templateNames[this.sectionIndex];
                        +      // only set the active section the first time value received
                        +      // (handle via goToSection method internally for other cases)
                        +      if (!this.sectionIndex) {
                        +        this.sectionIndex = this.getActiveSectionIdx(row?.parameter_list?.progress_field);
                        +      }
                        +    }
                        +    return row;
                        +  }
                        +
                        +  /**
                        +   * Populate this.templateNames: if row.value is an object referring to a data_list with a "template" column,
                        +   * use these values, else if row.value is an array assume it's a list of template names.
                        +   */
                        +  private hackPopulateTemplateNames(row: any) {
                        +    let dataListObject = null;
                        +    // Handle case where data list object is passed in directly
                        +    if (isObject(row?.value)) {
                        +      dataListObject = row.value;
                        +    }
                        +    // Handle case where data list object is inside an array,
                        +    // e.g. if assigned to a "_list" local variable in authoring
                        +    else if (Array.isArray(row?.value) && isObject(row?.value[0])) {
                        +      dataListObject = row.value[0];
                        +    }
                        +    if (dataListObject) {
                        +      // If the data list has a "template" column, populate this.templateNames with these values
                        +      for (const property in dataListObject) {
                        +        if (dataListObject[property].hasOwnProperty("template")) {
                        +          this.templateNames.push(dataListObject[property].template);
                        +        }
                        +      }
                        +    }
                        +    // If row.value is an array that doesn't contain a datalist object,
                        +    // assume it's a list of template names
                        +    if (this.templateNames.length === 0 && Array.isArray(row?.value)) {
                        +      this.templateNames = row.value;
                        +    }
                        +  }
                        +
                        +  interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) {
                        +    const { action_id, args } = action;
                        +    // only allow actions to be processed by parent if last section
                        +    if (action_id === "emit" && args[0] === "completed") {
                        +      if (this.sectionIndex < this.templateNames.length - 1) {
                        +        this.goToSection(this.sectionIndex + 1);
                        +        return false;
                        +      }
                        +    }
                        +    if (action_id === "emit" && args[0] === "uncompleted") {
                        +      if (this.sectionIndex > 0) {
                        +        this.goToSection(this.sectionIndex - 1).then();
                        +        return false;
                        +      }
                        +    }
                        +    // default process on parent
                        +    return true;
                        +  }
                        +
                        +  /**
                        +   * Function that will return Current Slider Index
                        +   * @param progressField
                        +   */
                        +  getActiveSectionIdx(progressField: string): number {
                        +    let result: number;
                        +    const currentProgress = this.templateFieldService.getField(progressField);
                        +    if (+currentProgress === 100) {
                        +      result = 0;
                        +      this.templateFieldService.setField(progressField, `${result}`);
                        +      return result;
                        +    }
                        +    result = Math.floor((currentProgress * this.templateNames.length) / 100 - 1);
                        +    return result > 0 ? result : 0;
                        +  }
                        +
                        +  /**
                        +   * Function that will move forward or back to Section
                        +   * @param index
                        +   */
                        +  async goToSection(index: number) {
                        +    this.sectionIndex = index;
                        +    this.scrollToTop();
                        +    this._row._debug_name = this.templateNames[index];
                        +    await this.updateSectionProgress();
                        +  }
                        +
                        +  /**
                        +   * Function to Update Progress of Stepper
                        +   */
                        +  async updateSectionProgress() {
                        +    //update the field provided in progress_variable to be equal to the max of it's current value
                        +    //and the percentage of this.sectionIndex from this.templateNames.length. the value should
                        +    //be an integer between 0 and 100 inclusive.
                        +    const progressField = this._row.parameter_list["progress_field"];
                        +    const progressFieldMaximum = this._row.parameter_list["max_progress_field"];
                        +
                        +    if (progressField && progressField.indexOf("{{") < 0) {
                        +      const currentPercentDone = Math.ceil(
                        +        ((this.sectionIndex + 1) / this.templateNames.length) * 100
                        +      );
                        +
                        +      let maximumPercentDone: number;
                        +
                        +      let currentMaximumPercentDone: number = Number.parseInt(
                        +        this.templateFieldService.getField(progressFieldMaximum)
                        +          ? this.templateFieldService.getField(progressFieldMaximum)
                        +          : currentPercentDone
                        +      );
                        +
                        +      maximumPercentDone = Math.max(currentPercentDone, currentMaximumPercentDone);
                        +
                        +      await this.parent.handleActions(
                        +        [
                        +          {
                        +            action_id: "set_field",
                        +            args: [progressField, "" + currentPercentDone],
                        +            trigger: "completed",
                        +            _triggeredBy: this._row,
                        +          },
                        +          {
                        +            action_id: "set_field",
                        +            args: [progressFieldMaximum, "" + maximumPercentDone],
                        +            trigger: "completed",
                        +            _triggeredBy: this._row,
                        +          },
                        +        ],
                        +        this._row
                        +      );
                        +    } else {
                        +      console.warn("No progress field", progressField);
                        +    }
                        +  }
                        +}
                        +
                        +
                        + + +
                        +
                        
                        +      :host {
                        +        flex: 1;
                        +        display: flex;
                        +        flex-direction: column;
                        +      }
                        +      .nav-section {
                        +        display: flex;
                        +        flex-direction: column;
                        +        position: relative;
                        +        /* sections not active are kept off-screen to avoid content height jump */
                        +        right: 100vw;
                        +      }
                        +      .nav-section[data-selected] {
                        +        flex: 1;
                        +        right: unset;
                        +      }
                        +      .nav-progress {
                        +        display: flex;
                        +        flex-direction: row;
                        +        justify-content: space-evenly;
                        +        padding: 1em 0;
                        +      }
                        +
                        +      .nav-progress-part {
                        +        height: 7px;
                        +        flex: 1;
                        +        margin: 0 2px;
                        +        background-color: var(--ion-primary-color, #0d3f60);
                        +        border-radius: var(--ion-border-radius-standard);
                        +        max-width: 40px;
                        +      }
                        +
                        +      .nav-progress-part[data-seen] {
                        +        background-color: var(--ion-primary-color, #f88923);
                        +      }
                        +    
                        +
                        +
                        + +
                        +
                        +
                        +
                        + Legend +
                        +
                        +
                        Html element +
                        +
                        +
                        Component +
                        +
                        +
                        Html element with directive +
                        +
                        +
                        + + +
                        + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        +

                        results matching ""

                        +
                          +
                          +
                          +

                          No results matching ""

                          +
                          +
                          +
                          + +
                          +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/RoundIconButtonComponent.html b/documentation/docs/generated/components/RoundIconButtonComponent.html new file mode 100644 index 0000000000..ee0f9e051d --- /dev/null +++ b/documentation/docs/generated/components/RoundIconButtonComponent.html @@ -0,0 +1,1144 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                          +
                          + + +
                          +
                          + + + + + + + + +
                          +

                          +

                          File

                          +

                          +

                          + src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts +

                          + + + +

                          +

                          Extends

                          +

                          +

                          + TemplateBaseComponent +

                          + +

                          +

                          Implements

                          +

                          +

                          + ITemplateRowProps + OnInit + AfterViewInit +

                          + + +
                          +

                          Metadata

                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + +
                          +

                          Index

                          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          Properties
                          +
                          + +
                          +
                          Methods
                          +
                          + +
                          +
                          Inputs
                          +
                          + +
                          +
                          + +
                          +

                          Constructor

                          + + + + + + + + + + + + + +
                          +constructor(elRef: ElementRef) +
                          + +
                          +
                          + Parameters : + + + + + + + + + + + + + + + + + + +
                          NameTypeOptional
                          elRef + ElementRef + + No +
                          +
                          +
                          +
                          + +
                          +

                          Inputs

                          + + + + + + + + + + + + +
                          + + parent +
                          + Type : TemplateContainerComponent + +
                          + +
                          + + + + + + + + + + + + +
                          + + template +
                          + Type : FlowTypes.Template + +
                          + +
                          +
                          + + + +
                          + +

                          + Methods +

                          + + + + + + + + + + + + + + + + + + + +
                          + + + getParams + + +
                          +getParams() +
                          + +
                          + +
                          + Returns : void + +
                          +
                          + + + + + + + + + + + + + + + + + + + +
                          + + + onClick + + +
                          +onClick(event: Event) +
                          + +
                          + +
                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                          NameTypeOptional
                          event + Event + + No +
                          +
                          +
                          +
                          +
                          + Returns : void + +
                          +
                          + +
                          +
                          +
                          +
                          + +

                          + Properties +

                          + + + + + + + + + + + + + + +
                          + + + buttonAlign + + +
                          + Type : string + +
                          + +
                          + + + + + + + + + + + + + + + + + +
                          + + + disabled + + +
                          + Type : boolean + +
                          + Default value : false +
                          + +
                          + + + + + + + + + + + + + + +
                          + + + icon_src + + +
                          + Type : string + +
                          + +
                          + + + + + + + + + + + + + + + + + +
                          + + + isCustomIcon + + +
                          + Type : boolean + +
                          + Default value : false +
                          + +
                          + + + + + + + + + + + + + + + + + +
                          + + + isHomeScreen + + +
                          + Type : boolean + +
                          + Default value : false +
                          + +
                          + + + + + + + + + + + + + + +
                          + + + style + + +
                          + Type : string + +
                          + +
                          + + + + + + + + + + + + + + +
                          + + + text + + +
                          + Type : string + +
                          + +
                          + + + + + + + + + + + + + + +
                          + + + textAlign + + +
                          + Type : string + +
                          + +
                          +
                          + +
                          + + +
                          +
                          import { AfterViewInit, Component, ElementRef, Input, OnInit } from "@angular/core";
                          +import { FlowTypes } from "data-models";
                          +import { ITemplateRowProps } from "../../models";
                          +import { TemplateContainerComponent } from "../../template-container.component";
                          +import { TemplateBaseComponent } from "../base";
                          +import { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from "../../../../utils";
                          +
                          +@Component({
                          +  selector: "plh-round-button",
                          +  templateUrl: "./round-icon-button.component.html",
                          +  styleUrls: ["../button/button.component.scss", "./round-icon-button.component.scss"],
                          +})
                          +export class RoundIconButtonComponent
                          +  extends TemplateBaseComponent
                          +  implements ITemplateRowProps, OnInit, AfterViewInit
                          +{
                          +  @Input() parent: TemplateContainerComponent;
                          +  @Input() template: FlowTypes.Template;
                          +  icon_src: string;
                          +  text: string;
                          +  style: string;
                          +  disabled: boolean = false;
                          +  textAlign: string;
                          +  buttonAlign: string;
                          +  isHomeScreen: boolean = false;
                          +  isCustomIcon: boolean = false;
                          +  constructor(private elRef: ElementRef) {
                          +    super();
                          +  }
                          +  ngOnInit() {
                          +    this.getParams();
                          +  }
                          +
                          +  ngAfterViewInit() {
                          +    const el = this.elRef.nativeElement.closest(".display-group-wrapper");
                          +    if (el && el.classList.value.includes("navigation")) {
                          +      this.elRef.nativeElement.parentElement.parentElement.style.setProperty("flex", "0");
                          +    }
                          +  }
                          +
                          +  onClick(event: Event) {
                          +    this.triggerActions("click");
                          +    event.stopPropagation();
                          +  }
                          +
                          +  getParams() {
                          +    this.style = getStringParamFromTemplateRow(this._row, "style", "information");
                          +    this.disabled = getBooleanParamFromTemplateRow(this._row, "disabled", false);
                          +    if (this._row.disabled) {
                          +      this.disabled = true;
                          +    }
                          +    this.text = getStringParamFromTemplateRow(this._row, "text", "");
                          +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", "");
                          +    this.buttonAlign = getStringParamFromTemplateRow(this._row, "button_align", "center");
                          +    this.isHomeScreen = this.style.includes("home_screen");
                          +    this.isCustomIcon = this.icon_src.includes("/");
                          +  }
                          +}
                          +
                          +
                          + +
                          +
                          <div class="wrapper" [class.home_screen_wrapper]="isHomeScreen">
                          +  <ion-tab-button
                          +    [class]="style"
                          +    (click)="onClick($event)"
                          +    class="round-icon-button"
                          +    [disabled]="_row.disabled"
                          +  >
                          +    <ion-icon
                          +      [name]="icon_src"
                          +      [style.place-items]="text ? 'flex-end' : 'center'"
                          +      [style.margin-top]="text ? '5px' : '0'"
                          +      [src]="isCustomIcon ? (icon_src | plhAsset) : icon_src"
                          +    ></ion-icon>
                          +    <div *ngIf="text">{{ text }}</div>
                          +  </ion-tab-button>
                          +</div>
                          +
                          +
                          + +
                          +

                          + ../button/button.component.scss +

                          +
                          $background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));
                          +$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));
                          +
                          +:host {
                          +  width: 100%;
                          +  ion-button {
                          +    height: 100%;
                          +  }
                          +  span {
                          +    padding: var(--tiny-padding) 0;
                          +    display: contents;
                          +  }
                          +}
                          +ion-button {
                          +  font-size: var(--buttons-font-size-small);
                          +  font-weight: var(--font-weight-standard);
                          +  color: var(--ion-color-primary-contrast);
                          +  text-transform: none;
                          +  white-space: pre-line;
                          +  min-height: var(--buttons-min-height);
                          +  padding: var(--regular-margin) var(--tiny-padding) 0;
                          +  --border-radius: var(--ion-border-radius-standard);
                          +  --box-shadow: var(--ion-default-box-shadow);
                          +  display: flex;
                          +  width: fit-content;
                          +  margin: 0 auto;
                          +}
                          +
                          +ion-button::part(native) {
                          +  height: auto;
                          +}
                          +
                          +ion-button:disabled,
                          +ion-button[disabled] {
                          +  filter: brightness(55%);
                          +}
                          +
                          +/// nested_color style applies semi-transparent background to match container
                          +ion-button[data-param-style~="nested_color"] {
                          +  --background: linear-gradient(rgb(0 0 0 / 13%) 0%, rgb(0 0 0 / 20%) 100%);
                          +}
                          +
                          +// nested_color style applies semi-transparent background to match container
                          +ion-button[data-param-style~="card"] {
                          +  --background: white;
                          +  --background-activated: var(--ion-color-gray-light);
                          +  --padding-top: 4px;
                          +  --padding-bottom: 4px;
                          +  color: var(--ion-color-primary);
                          +  font-weight: var(--font-weight-bold);
                          +  border: 1px solid var(--ion-color-gray-light);
                          +  border-radius: var(--ion-border-radius-secondary);
                          +  min-height: var(--buttons-short-height);
                          +  filter: drop-shadow(var(--ion-default-box-shadow));
                          +
                          +  ion-icon {
                          +    width: 32px;
                          +    font-size: 32px;
                          +  }
                          +
                          +  .children {
                          +    position: absolute;
                          +    align-self: flex-end;
                          +    right: 0;
                          +    display: flex;
                          +    align-items: center;
                          +  }
                          +}
                          +
                          +/// TODO CC-2021-12-19 - the code below should likely be refactored to param selectors and moved
                          +
                          +.navigation {
                          +  --background: #{$background-secondary};
                          +}
                          +
                          +.information {
                          +  --background: #{$background-primary};
                          +}
                          +
                          +.make_me_smile {
                          +  min-height: 80px !important;
                          +  max-width: fit-content;
                          +  --background: #{$background-primary};
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.get_me_going {
                          +  min-height: 80px !important;
                          +  max-width: fit-content;
                          +  --background: #{$background-secondary};
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.options {
                          +  --background: #{$background-primary};
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.standard {
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +.alternative {
                          +  color: var(--ion-color-primary);
                          +}
                          +
                          +.left ::ng-deep {
                          +  margin: 0 auto 0 2px;
                          +  text-align: left;
                          +  p {
                          +    margin: 0 0 0 2px;
                          +  }
                          +}
                          +.right {
                          +  margin: 0 2px 0 auto;
                          +  text-align: right;
                          +}
                          +
                          +// width
                          +.full {
                          +  width: 100%;
                          +}
                          +.flexible {
                          +  width: fit-content;
                          +  max-width: 100%;
                          +}
                          +// height
                          +.medium {
                          +  min-height: var(--buttons-medium-height);
                          +}
                          +.short {
                          +  min-height: var(--buttons-short-height);
                          +  font-size: var(--buttons-font-size-small);
                          +}
                          +.tall {
                          +  min-height: var(--buttons-tall-height);
                          +}
                          +
                          +.medium_round {
                          +  --border-radius: var(--ion-border-radius-secondary);
                          +}
                          +.no_shadow {
                          +  --box-shadow: none;
                          +}
                          +.two_columns {
                          +  max-width: 12rem;
                          +  min-height: var(--buttons-min-height);
                          +  font-size: calc(var(--buttons-font-size) * var(--scale-factor-btn));
                          +  min-width: 5rem;
                          +  @media (max-width: 375px) {
                          +    max-width: 11rem;
                          +  }
                          +  @media (max-width: 320px) {
                          +    max-width: 10rem;
                          +  }
                          +}
                          +
                          +

                          + ./round-icon-button.component.scss +

                          +
                          @use "/src/theme/mixins";
                          +
                          +$background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));
                          +$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));
                          +$background-option: (--button-background-option, var(--gradient-primary-dark-vertical));
                          +$background-secondary-light: var(--round-button-background-secondary-light, var(--ion-color-secondary-200));
                          +$background-secondary-mid: var(--round-button-background-secondary-mid, var(--ion-color-secondary-400));
                          +$background-secondary-dark: var(--round-button-background-secondary-dark, var(--ion-color-secondary-600));
                          +
                          +ion-tab-button {
                          +  color: var(--ion-color-primary-contrast);
                          +  text-transform: none;
                          +  white-space: pre-line;
                          +  min-height: var(--round-button-min-height);
                          +  background: $background-primary;
                          +  box-shadow: var(--ion-default-box-shadow);
                          +  width: var(--round-button-width);
                          +  margin: 0 auto;
                          +  padding: 0;
                          +  display: flex;
                          +  align-items: center;
                          +  border-radius: var(--ion-border-radius-rounded);
                          +  ion-icon {
                          +    @include mixins.flex-centered;
                          +    width: 100%;
                          +    margin-bottom: 0;
                          +    flex: auto;
                          +  }
                          +}
                          +
                          +ion-tab-button::part(native) {
                          +  height: auto;
                          +  flex: 1;
                          +}
                          +
                          +ion-tab-button:disabled,
                          +ion-tab-button[disabled] {
                          +  filter: brightness(55%);
                          +}
                          +
                          +ion-tab-button.round-icon-button::part(native) {
                          +  border-radius: var(--ion-border-radius-rounded);
                          +  padding: 0;
                          +  height: 100%;
                          +}
                          +ion-tab-button {
                          +  div {
                          +    font-size: var(--round-button-font-size);
                          +    white-space: pre-line;
                          +    margin-top: var(--tiny-margin);
                          +    margin-bottom: var(--small-margin);
                          +    display: flex;
                          +    align-items: center;
                          +    text-transform: none;
                          +  }
                          +}
                          +.home_screen {
                          +  @include mixins.largest-square;
                          +  @include mixins.absolute-centered;
                          +  padding: var(--tiny-padding);
                          +  @media (max-width: 375px) {
                          +    width: var(--round-button-small-device-width);
                          +    height: var(--round-button-small-device-height);
                          +  }
                          +  ion-icon {
                          +    width: 75%;
                          +  }
                          +  div {
                          +    margin-top: unset;
                          +    margin-bottom: var(--tiny-margin);
                          +    display: block;
                          +    font-size: var(--round-button-home-screen-font-size);
                          +  }
                          +}
                          +.wrapper {
                          +  display: flex;
                          +  width: fit-content;
                          +}
                          +.home_screen_wrapper {
                          +  width: var(--round-button-wrapper-width);
                          +  height: var(--round-button-wrapper-height);
                          +  border-radius: var(--ion-border-radius-rounded);
                          +  background: var(--ion-background-color);
                          +  position: relative;
                          +  margin-left: auto;
                          +  margin-right: -13px;
                          +  @media (max-width: 375px) {
                          +    width: var(--round-button-wrapper-small-device-width);
                          +    height: var(--round-button-wrapper-small-device-height);
                          +  }
                          +}
                          +.yellow {
                          +  background: $background-secondary-light;
                          +}
                          +.orange {
                          +  background: $background-secondary-mid;
                          +}
                          +.dark_orange {
                          +  background: $background-secondary-dark;
                          +}
                          +
                          +.navigation {
                          +  width: var(--round-button-navigation-width);
                          +  min-height: var(--round-button-navigation-min-height);
                          +  background: $background-secondary;
                          +}
                          +
                          +.information {
                          +  background: $background-primary;
                          +}
                          +
                          +.make_me_smile {
                          +  background: $background-primary;
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.get_me_going {
                          +  background: $background-secondary;
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.options {
                          +  background: $background-option;
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +
                          +.standard {
                          +  color: var(--ion-color-primary-contrast);
                          +}
                          +.alternative {
                          +  color: var(--ion-color-primary);
                          +}
                          +
                          +
                          + +
                          +
                          +
                          +
                          + Legend +
                          +
                          +
                          Html element +
                          +
                          +
                          Component +
                          +
                          +
                          Html element with directive +
                          +
                          +
                          + + +
                          + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          +

                          results matching ""

                          +
                            +
                            +
                            +

                            No results matching ""

                            +
                            +
                            +
                            + +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/SelectTextComponent.html b/documentation/docs/generated/components/SelectTextComponent.html new file mode 100644 index 0000000000..5ca524505a --- /dev/null +++ b/documentation/docs/generated/components/SelectTextComponent.html @@ -0,0 +1,910 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                            +
                            + + +
                            +
                            + + + + + + + + +
                            +

                            +

                            File

                            +

                            +

                            + src/app/shared/components/template/components/select-text/select-text.component.ts +

                            + + + +

                            +

                            Extends

                            +

                            +

                            + TemplateBaseComponent +

                            + +

                            +

                            Implements

                            +

                            +

                            + OnInit + ITemplateRowProps +

                            + + +
                            +

                            Metadata

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            + +
                            +

                            Index

                            + + + + + + + + + + + + + + + + + + + + + +
                            +
                            Properties
                            +
                            + +
                            +
                            Methods
                            +
                            + +
                            +
                            + + + + + + +
                            + +

                            + Methods +

                            + + + + + + + + + + + + + + + + + + + +
                            + + + Async + checkClipboard + + +
                            + + checkClipboard() +
                            + +
                            + +
                            + Returns : any + +
                            +
                            + + + + + + + + + + + + + + + + + + + +
                            + + + getParams + + +
                            +getParams() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + + +
                            + + + Async + triggerCopyContent + + +
                            + + triggerCopyContent($event: MouseEvent, _row: FlowTypes.TemplateRow) +
                            + +
                            + +
                            + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            NameTypeOptional
                            $event + MouseEvent + + No +
                            _row + FlowTypes.TemplateRow + + No +
                            +
                            +
                            +
                            +
                            + Returns : any + +
                            +
                            + +
                            +
                            +
                            +
                            + +

                            + Properties +

                            + + + + + + + + + + + + + + +
                            + + + Public + isNumberInput + + +
                            + Type : boolean | any + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + maxLength + + +
                            + Type : number | string + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + placeholder + + +
                            + Type : string + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + prioritisePlaceholder + + +
                            + Type : boolean | any + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + source + + +
                            + Default value : timer(1000) +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + style + + +
                            + Type : string | any + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + subscribe + + +
                            + Type : Subscription + +
                            + +
                            + + + + + + + + + + + + + + +
                            + + + Public + textAlign + + +
                            + Type : string + +
                            + +
                            + + + + + + + + + + + + + + + + + +
                            + + + Public + toggle + + +
                            + Type : boolean + +
                            + Default value : false +
                            + +
                            +
                            + +
                            + + +
                            +
                            import { Component, OnInit } from "@angular/core";
                            +import { Clipboard } from "@capacitor/clipboard";
                            +import { Subscription, timer } from "rxjs";
                            +import {
                            +  getBooleanParamFromTemplateRow,
                            +  getNumberParamFromTemplateRow,
                            +  getStringParamFromTemplateRow,
                            +} from "src/app/shared/utils";
                            +import { TemplateBaseComponent } from "../base";
                            +import { FlowTypes, ITemplateRowProps } from "../../models";
                            +
                            +@Component({
                            +  selector: "plh-select-text",
                            +  templateUrl: "./select-text.component.html",
                            +  styleUrls: ["./select-text.component.scss"],
                            +})
                            +export class SelectTextComponent
                            +  extends TemplateBaseComponent
                            +  implements OnInit, ITemplateRowProps
                            +{
                            +  public placeholder: string;
                            +  public maxLength: number | string;
                            +  public textAlign: string;
                            +  public style: string | any;
                            +  public isNumberInput: boolean | any;
                            +  public prioritisePlaceholder: boolean | any;
                            +  public toggle: boolean = false;
                            +
                            +  //emit after 1 second
                            +  public source = timer(1000);
                            +  //output: 0
                            +  public subscribe: Subscription;
                            +
                            +  ngOnInit() {
                            +    this.getParams();
                            +  }
                            +
                            +  getParams() {
                            +    this.placeholder = getStringParamFromTemplateRow(this._row, "placeholder", "");
                            +    this.maxLength = getNumberParamFromTemplateRow(this._row, "max_length", 30);
                            +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "center");
                            +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                            +    this.isNumberInput = getBooleanParamFromTemplateRow(this._row, "number_input", false);
                            +    this.prioritisePlaceholder = getBooleanParamFromTemplateRow(
                            +      this._row,
                            +      "prioritise_placeholder",
                            +      false
                            +    );
                            +  }
                            +
                            +  async triggerCopyContent($event: MouseEvent, _row: FlowTypes.TemplateRow) {
                            +    this.toggle = !this.toggle;
                            +
                            +    this.subscribe = this.source.subscribe((val) => {
                            +      this.toggle = !this.toggle;
                            +    });
                            +
                            +    let text = _row.value;
                            +    await Clipboard.write({ string: text });
                            +  }
                            +
                            +  async checkClipboard() {
                            +    const { type, value } = await Clipboard.read();
                            +    console.log(`Got ${type} from clipboard: ${value}`);
                            +  }
                            +}
                            +
                            +
                            + +
                            +
                            <div class="box-wrapper" [attr.data-toggled]="toggle" (click)="triggerCopyContent($event, _row)">
                            +  <div class="text">{{ _row?.value }}</div>
                            +  <div class="copy-button">
                            +    <ng-container *ngIf="_row?.parameter_list?.copy_text && _row?.parameter_list.copied_text">
                            +      <ng-container *ngIf="!toggle; else copy_text_replace">{{
                            +        _row.parameter_list.copy_text
                            +      }}</ng-container>
                            +      <ng-template #copy_text_replace>{{ _row.parameter_list.copied_text }}</ng-template>
                            +    </ng-container>
                            +
                            +    <ng-container *ngIf="_row.parameter_list?.copy_icon && _row.parameter_list.copied_text">
                            +      <ng-container *ngIf="!toggle; else copy_icon_replace">
                            +        <ion-icon name="{{ _row.parameter_list?.copy_icon }}"></ion-icon>
                            +      </ng-container>
                            +
                            +      <ng-template #copy_icon_replace>
                            +        <span class="copy_text">{{ _row?.parameter_list.copied_text }}</span>
                            +      </ng-template>
                            +    </ng-container>
                            +
                            +    <ng-container *ngIf="_row.parameter_list?.copy_text && _row.parameter_list.copied_icon">
                            +      <ng-container *ngIf="!toggle; else copy_text_replace">
                            +        {{ _row.parameter_list?.copy_text }}
                            +      </ng-container>
                            +
                            +      <ng-template #copy_text_replace>
                            +        <ion-icon name="{{ _row.parameter_list?.copied_icon }}"></ion-icon>
                            +      </ng-template>
                            +    </ng-container>
                            +
                            +    <ng-container *ngIf="_row.parameter_list?.copy_icon && _row.parameter_list?.copied_icon">
                            +      <ng-container *ngIf="!toggle; else copy_img_replace">
                            +        <ion-icon name="{{ _row.parameter_list?.copy_icon }}"></ion-icon>
                            +      </ng-container>
                            +
                            +      <ng-template #copy_img_replace>
                            +        <img class="image-based-icon" [src]="_row.parameter_list.copied_icon | plhAsset" />
                            +      </ng-template>
                            +    </ng-container>
                            +  </div>
                            +  <span></span>
                            +</div>
                            +
                            +
                            + +
                            +

                            + ./select-text.component.scss +

                            +
                            @use "/src/theme/mixins";
                            +
                            +.box-wrapper {
                            +  @include mixins.flex-centered;
                            +  flex-direction: column;
                            +  margin-left: auto;
                            +  margin-right: auto;
                            +  padding: var(--regular-padding);
                            +  width: 100%;
                            +  min-height: var(--dashed-box-item-min-height);
                            +  padding: var(--regular-padding) var(--largest-padding);
                            +  border: 2px dashed var(--ion-color-primary);
                            +  background-color: var(--ion-color-primary-contrast);
                            +  border-radius: var(--ion-border-radius-secondary);
                            +  position: relative;
                            +  cursor: pointer;
                            +  color: var(--ion-color-primary);
                            +
                            +  &[data-toggled="true"] {
                            +    background-color: var(--ion-color-primary-200);
                            +    border-color: var(--ion-color-primary-shade);
                            +  }
                            +
                            +  .text {
                            +    width: 100%;
                            +    text-align: center;
                            +    font-size: var(--font-size-text-large);
                            +    line-height: var(--line-height-text-largest);
                            +  }
                            +  .copy-button {
                            +    margin-top: 1rem;
                            +  }
                            +}
                            +
                            +.image-based-icon {
                            +  width: 100%;
                            +  max-width: 16px;
                            +  height: auto;
                            +}
                            +
                            +
                            + +
                            +
                            +
                            +
                            + Legend +
                            +
                            +
                            Html element +
                            +
                            +
                            Component +
                            +
                            +
                            Html element with directive +
                            +
                            +
                            + + +
                            + + + + + + + + + + + + + + + + + + + + + + + +
                            +
                            +

                            results matching ""

                            +
                              +
                              +
                              +

                              No results matching ""

                              +
                              +
                              +
                              + +
                              +
                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/SquareIconButtonComponent.html b/documentation/docs/generated/components/SquareIconButtonComponent.html new file mode 100644 index 0000000000..17cfc1ee61 --- /dev/null +++ b/documentation/docs/generated/components/SquareIconButtonComponent.html @@ -0,0 +1,692 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                              +
                              + + +
                              +
                              + + + + + + + + +
                              +

                              +

                              File

                              +

                              +

                              + src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts +

                              + + + +

                              +

                              Extends

                              +

                              +

                              + TemplateBaseComponent +

                              + +

                              +

                              Implements

                              +

                              +

                              + ITemplateRowProps + OnInit + AfterViewInit +

                              + + +
                              +

                              Metadata

                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                              + +
                              +

                              Index

                              + + + + + + + + + + + + + + + + + + + + + +
                              +
                              Properties
                              +
                              + +
                              +
                              Methods
                              +
                              + +
                              +
                              + +
                              +

                              Constructor

                              + + + + + + + + + + + + + +
                              +constructor(elRef: ElementRef) +
                              + +
                              +
                              + Parameters : + + + + + + + + + + + + + + + + + + +
                              NameTypeOptional
                              elRef + ElementRef + + No +
                              +
                              +
                              +
                              + + + + + +
                              + +

                              + Methods +

                              + + + + + + + + + + + + + + + + + + + +
                              + + + getParams + + +
                              +getParams() +
                              + +
                              + +
                              + Returns : void + +
                              +
                              + + + + + + + + + + + + + + + + + + + +
                              + + + onClick + + +
                              +onClick(event: Event) +
                              + +
                              + +
                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                              NameTypeOptional
                              event + Event + + No +
                              +
                              +
                              +
                              +
                              + Returns : void + +
                              +
                              + +
                              +
                              +
                              +
                              + +

                              + Properties +

                              + + + + + + + + + + + + + + + + + +
                              + + + disabled + + +
                              + Type : boolean + +
                              + Default value : false +
                              + +
                              + + + + + + + + + + + + + + +
                              + + + icon_src + + +
                              + Type : string + +
                              + +
                              + + + + + + + + + + + + + + + + + +
                              + + + isCustomIcon + + +
                              + Type : boolean + +
                              + Default value : false +
                              + +
                              + + + + + + + + + + + + + + +
                              + + + style + + +
                              + Type : string + +
                              + +
                              +
                              + +
                              + + +
                              +
                              import { AfterViewInit, Component, ElementRef, OnInit } from "@angular/core";
                              +import {
                              +  getStringParamFromTemplateRow,
                              +  getBooleanParamFromTemplateRow,
                              +} from "src/app/shared/utils";
                              +import { ITemplateRowProps } from "../../models";
                              +import { TemplateBaseComponent } from "../base";
                              +
                              +@Component({
                              +  selector: "plh-square-icon-button",
                              +  templateUrl: "./square-icon-button.component.html",
                              +  styleUrls: ["./square-icon-button.component.scss"],
                              +})
                              +export class SquareIconButtonComponent
                              +  extends TemplateBaseComponent
                              +  implements ITemplateRowProps, OnInit, AfterViewInit
                              +{
                              +  icon_src: string;
                              +  style: string;
                              +  disabled: boolean = false;
                              +  isCustomIcon: boolean = false;
                              +
                              +  constructor(private elRef: ElementRef) {
                              +    super();
                              +  }
                              +
                              +  ngOnInit() {
                              +    this.getParams();
                              +  }
                              +
                              +  ngAfterViewInit() {
                              +    const el = this.elRef.nativeElement.closest(".display-group-wrapper");
                              +    if (el && el.classList.value.includes("navigation")) {
                              +      this.elRef.nativeElement.parentElement.parentElement.style.setProperty("flex", "0");
                              +    }
                              +  }
                              +
                              +  onClick(event: Event) {
                              +    this.triggerActions("click");
                              +    event.stopPropagation();
                              +  }
                              +
                              +  getParams() {
                              +    this.style = getStringParamFromTemplateRow(this._row, "style", "information");
                              +    this.disabled = getBooleanParamFromTemplateRow(this._row, "disabled", false);
                              +    if (this._row.disabled) {
                              +      this.disabled = true;
                              +    }
                              +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", "");
                              +    this.isCustomIcon = this.icon_src.includes("/");
                              +  }
                              +}
                              +
                              +
                              + +
                              +
                              <div class="wrapper">
                              +  <ion-button [class]="style" (click)="onClick($event)" [disabled]="_row.disabled">
                              +    <ion-icon [name]="icon_src" [src]="isCustomIcon ? (icon_src | plhAsset) : icon_src"></ion-icon>
                              +  </ion-button>
                              +</div>
                              +
                              +
                              + +
                              +

                              + ./square-icon-button.component.scss +

                              +
                              @use "/src/theme/mixins";
                              +
                              +$background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));
                              +$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));
                              +
                              +.wrapper {
                              +  width: var(--square-button-min-width);
                              +  overflow: hidden;
                              +  border-radius: var(--ion-border-radius-standard);
                              +  display: flex;
                              +  justify-content: center;
                              +  margin-right: var(--tiny-margin);
                              +}
                              +ion-button {
                              +  margin: 0 auto;
                              +  padding-right: var(--tiny-padding);
                              +  ion-icon {
                              +    font-size: xxx-large;
                              +  }
                              +}
                              +
                              +ion-button::part(native) {
                              +  background: transparent;
                              +}
                              +
                              +ion-button:disabled,
                              +ion-button[disabled] {
                              +  filter: brightness(55%);
                              +}
                              +
                              +.navigation {
                              +  min-height: var(--square-button-navigation-min-height);
                              +  background: $background-secondary;
                              +}
                              +
                              +.information {
                              +  background: $background-primary;
                              +}
                              +
                              +
                              + +
                              +
                              +
                              +
                              + Legend +
                              +
                              +
                              Html element +
                              +
                              +
                              Component +
                              +
                              +
                              Html element with directive +
                              +
                              +
                              + + +
                              + + + + + + + + + + + + + + + + + + + + + + + +
                              +
                              +

                              results matching ""

                              +
                                +
                                +
                                +

                                No results matching ""

                                +
                                +
                                +
                                + +
                                +
                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TemplateBaseComponent.html b/documentation/docs/generated/components/TemplateBaseComponent.html new file mode 100644 index 0000000000..3854e5a6e2 --- /dev/null +++ b/documentation/docs/generated/components/TemplateBaseComponent.html @@ -0,0 +1,362 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                +
                                + + +
                                +
                                + + + + + + + + +
                                +

                                +

                                File

                                +

                                +

                                + src/app/shared/components/template/components/base.ts +

                                + + + + +

                                +

                                Implements

                                +

                                +

                                + ITemplateRowProps +

                                + + +
                                +

                                Metadata

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                + + +
                                +

                                Constructor

                                + + + + + + + + + + +
                                +constructor() +
                                + +
                                +
                                + + + + + + + +
                                + + +
                                +
                                import { Component, Input } from "@angular/core";
                                +import { FlowTypes, ITemplateRowProps } from "../models";
                                +import { TemplateContainerComponent } from "../template-container.component";
                                +
                                +@Component({
                                +  template: ``,
                                +  styleUrls: ["./tmpl-components-common.scss"],
                                +})
                                +/**
                                + * Common methods and data made available to all other components
                                + * By default it provides input setters, and mapping to local variables
                                + *
                                + * Other components can either extend this one, or implement ITemplateRowProps
                                + * in their own way.
                                + * Note, if extending the base component access to data is provided by the declared properties,
                                + * e.g. `_row`
                                + */
                                +export class TemplateBaseComponent implements ITemplateRowProps {
                                +  /** @ignore */
                                +  _row: FlowTypes.TemplateRow;
                                +
                                +  /**
                                +   * @ignore
                                +   * specific data used in component rendering
                                +   **/
                                +  @Input() set row(row: FlowTypes.TemplateRow) {
                                +    this._row = row;
                                +  }
                                +
                                +  /**
                                +   * @ignore
                                +   * reference to parent template container - does not have setter as should remain static
                                +   **/
                                +  @Input() parent: TemplateContainerComponent;
                                +  constructor() {}
                                +
                                +  /**
                                +   * Whenever actions are triggered handle in the parent template component
                                +   * Actions are grouped by trigger, only emitting specific event handler (e.g. click)
                                +   * @ignore
                                +   */
                                +  triggerActions(trigger: FlowTypes.TemplateRowAction["trigger"] = "click") {
                                +    if (this._row.disabled && this._row.type !== "accordion_section") {
                                +      console.log("Click action disabled for ", this._row.name);
                                +      return;
                                +    }
                                +    const action_list = this._row.action_list || [];
                                +    const actionsForTrigger = action_list.filter((a) => a.trigger === trigger);
                                +    return this.parent.handleActions(actionsForTrigger, this._row);
                                +  }
                                +
                                +  /**
                                +   * Update the current value of the row by setting a local variable that matches
                                +   * @ignore
                                +   **/
                                +  setValue(value: any) {
                                +    // console.log("setting value", value);
                                +    const action: FlowTypes.TemplateRowAction = {
                                +      action_id: "set_local",
                                +      args: [this._row._nested_name, value],
                                +      trigger: "click",
                                +    };
                                +    return this.parent.handleActions([action], this._row);
                                +  }
                                +
                                +  /** @ignore */
                                +  trackByRow = (index: number, row: FlowTypes.TemplateRow) => this.parent.trackByRow(index, row);
                                +}
                                +
                                +
                                + + +
                                +

                                + ./tmpl-components-common.scss +

                                +
                                @use "/src/theme/mixins.scss";
                                +
                                +.tmpl-video-container {
                                +  width: 100%;
                                +  display: flex;
                                +  justify-content: center;
                                +
                                +  video {
                                +    width: 100%;
                                +    max-width: var(--video-max-width);
                                +    border-radius: var(--ion-border-radius-secondary);
                                +  }
                                +}
                                +
                                +.left {
                                +  justify-content: start;
                                +}
                                +.right {
                                +  justify-content: flex-end;
                                +}
                                +.center {
                                +  justify-content: center;
                                +}
                                +.rounded_corners {
                                +  border-radius: var(--ion-border-radius-standard);
                                +
                                +  img {
                                +    border-radius: var(--ion-border-radius-standard);
                                +  }
                                +}
                                +.whiteText {
                                +  color: var(--ion-color-primary-contrast);
                                +}
                                +
                                +
                                + +
                                +
                                +
                                +
                                + Legend +
                                +
                                +
                                Html element +
                                +
                                +
                                Component +
                                +
                                +
                                Html element with directive +
                                +
                                +
                                + + +
                                + + + + + + + + + + + + + + + + + + + + + + + +
                                +
                                +

                                results matching ""

                                +
                                  +
                                  +
                                  +

                                  No results matching ""

                                  +
                                  +
                                  +
                                  + +
                                  +
                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TemplateDebuggerComponent.html b/documentation/docs/generated/components/TemplateDebuggerComponent.html new file mode 100644 index 0000000000..26c077de4f --- /dev/null +++ b/documentation/docs/generated/components/TemplateDebuggerComponent.html @@ -0,0 +1,707 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                  +
                                  + + +
                                  +
                                  + + + + + + + + +
                                  +

                                  +

                                  File

                                  +

                                  +

                                  + src/app/shared/components/template/components/debugger.ts +

                                  + + + +

                                  +

                                  Extends

                                  +

                                  +

                                  + TemplateBaseComponent +

                                  + + + +
                                  +

                                  Metadata

                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                  + +
                                  +

                                  Index

                                  + + + + + + + + + + + + + + + + + + + + + +
                                  +
                                  Properties
                                  +
                                  + +
                                  +
                                  Methods
                                  +
                                  + +
                                  +
                                  + +
                                  +

                                  Constructor

                                  + + + + + + + + + + + + + +
                                  +constructor(templateFieldService: TemplateFieldService) +
                                  + +
                                  +
                                  + Parameters : + + + + + + + + + + + + + + + + + + +
                                  NameTypeOptional
                                  templateFieldService + TemplateFieldService + + No +
                                  +
                                  +
                                  +
                                  + + + + + +
                                  + +

                                  + Methods +

                                  + + + + + + + + + + + + + + + + + + + +
                                  + + + Public + handleSummaryClick + + +
                                  + + handleSummaryClick(e: Event) +
                                  + +
                                  + +
                                  + Parameters : + + + + + + + + + + + + + + + + + + + +
                                  NameTypeOptional
                                  e + Event + + No +
                                  +
                                  +
                                  +
                                  +
                                  + Returns : void + +
                                  +
                                  + +
                                  +
                                  + + + + + + + + + + + + + + + + + + + +
                                  + + + Public + logDebugInfo + + +
                                  + + logDebugInfo() +
                                  + +
                                  + +
                                  + Returns : void + +
                                  +
                                  +
                                  +
                                  + +

                                  + Properties +

                                  + + + + + + + + + + + + + + + + + +
                                  + + + Public + debugFieldExclusions + + +
                                  + Type : [] + +
                                  + Default value : ["comments", "rows", "_dynamicFields", "action_list"] +
                                  + +
                                  +
                                  + +
                                  + + +
                                  +
                                  import { Component } from "@angular/core";
                                  +import { TemplateFieldService } from "../services/template-field.service";
                                  +import { TemplateBaseComponent } from "./base";
                                  +
                                  +@Component({
                                  +  selector: "plh-template-debugger",
                                  +  template: `
                                  +    <details #details class="debug-container" [attr.data-hidden]="_row.hidden">
                                  +      <summary style="display:flex" (click)="handleSummaryClick($event)">
                                  +        <span class="debug-row-type">{{ _row.type }}</span>
                                  +        <span class="debug-row-name">{{ _row._debug_name || _row.name || "(no name)" }}</span>
                                  +        <span *ngIf="_row.hidden === 'true'" class="debug-row-hidden"
                                  +          ><ion-icon name="eye-off"></ion-icon
                                  +        ></span>
                                  +      </summary>
                                  +    </details>
                                  +    <ion-popover [isOpen]="details.open" class="debugger-popover">
                                  +      <ng-template>
                                  +        <div style="padding:8px">
                                  +          <table>
                                  +            <th></th>
                                  +            <th></th>
                                  +            <div *ngFor="let key of _row | objectKeys" style="display:contents">
                                  +              <tr *ngIf="!debugFieldExclusions.includes(key) && _row[key]">
                                  +                <td>{{ key }}</td>
                                  +                <td>{{ _row[key] | json }}</td>
                                  +              </tr>
                                  +            </div>
                                  +          </table>
                                  +          <ion-button fill="clear" size="small" (click)="logDebugInfo()">
                                  +            (log full details)
                                  +          </ion-button>
                                  +        </div>
                                  +      </ng-template>
                                  +    </ion-popover>
                                  +  `,
                                  +  styles: [
                                  +    `
                                  +      :host {
                                  +        width: 100%;
                                  +      }
                                  +      .debug-container {
                                  +        padding: 5px;
                                  +        background: rgba(255, 255, 255, 0.95);
                                  +        font-size: small;
                                  +        overflow: auto;
                                  +      }
                                  +      .debug-container > p {
                                  +        text-align: left;
                                  +        display: flex;
                                  +        align-items: center;
                                  +        width: 100%;
                                  +        text-align: center;
                                  +      }
                                  +      .debug-container[data-hidden="true"] > summary {
                                  +        background: #e2dcf0;
                                  +        padding: 5px;
                                  +        margin: -5px;
                                  +      }
                                  +      .debug-row-type {
                                  +      }
                                  +      .debug-row-name {
                                  +        margin-left: auto;
                                  +      }
                                  +      .debug-row-hidden {
                                  +        margin-left: 8px;
                                  +      }
                                  +      table {
                                  +        padding: 2px;
                                  +        border-collapse: collapse;
                                  +        margin-top: 8px;
                                  +      }
                                  +      td {
                                  +        padding: 2px;
                                  +        border: 1px solid rgba(0, 0, 0, 0.5);
                                  +      }
                                  +    `,
                                  +  ],
                                  +})
                                  +export class TemplateDebuggerComponent extends TemplateBaseComponent {
                                  +  constructor(private templateFieldService: TemplateFieldService) {
                                  +    super();
                                  +  }
                                  +  public debugFieldExclusions = ["comments", "rows", "_dynamicFields", "action_list"];
                                  +  public logDebugInfo() {
                                  +    // retrieve local storage keys in the same way they would be populated in a template
                                  +    const fields = {};
                                  +    Object.keys(localStorage).forEach(
                                  +      (key) =>
                                  +        (fields[key] = this.templateFieldService.getField(key.replace("rp-contact-field.", "")))
                                  +    );
                                  +    console.group(this._row.type, this._row.name);
                                  +    console.log("row", this._row);
                                  +    console.log("parent rows", this.parent.templateRowMap);
                                  +    console.log("fields", fields);
                                  +    console.log("globals", this.templateFieldService.globals);
                                  +    console.log("parent", this.parent);
                                  +    console.log("children", this._row.rows);
                                  +    console.groupEnd();
                                  +  }
                                  +  public handleSummaryClick(e: Event) {
                                  +    e.stopPropagation();
                                  +  }
                                  +}
                                  +
                                  +
                                  + + +
                                  +
                                  
                                  +      :host {
                                  +        width: 100%;
                                  +      }
                                  +      .debug-container {
                                  +        padding: 5px;
                                  +        background: rgba(255, 255, 255, 0.95);
                                  +        font-size: small;
                                  +        overflow: auto;
                                  +      }
                                  +      .debug-container > p {
                                  +        text-align: left;
                                  +        display: flex;
                                  +        align-items: center;
                                  +        width: 100%;
                                  +        text-align: center;
                                  +      }
                                  +      .debug-container[data-hidden="true"] > summary {
                                  +        background: #e2dcf0;
                                  +        padding: 5px;
                                  +        margin: -5px;
                                  +      }
                                  +      .debug-row-type {
                                  +      }
                                  +      .debug-row-name {
                                  +        margin-left: auto;
                                  +      }
                                  +      .debug-row-hidden {
                                  +        margin-left: 8px;
                                  +      }
                                  +      table {
                                  +        padding: 2px;
                                  +        border-collapse: collapse;
                                  +        margin-top: 8px;
                                  +      }
                                  +      td {
                                  +        padding: 2px;
                                  +        border: 1px solid rgba(0, 0, 0, 0.5);
                                  +      }
                                  +    
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  +
                                  + Legend +
                                  +
                                  +
                                  Html element +
                                  +
                                  +
                                  Component +
                                  +
                                  +
                                  Html element with directive +
                                  +
                                  +
                                  + + +
                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                  +
                                  +

                                  results matching ""

                                  +
                                    +
                                    +
                                    +

                                    No results matching ""

                                    +
                                    +
                                    +
                                    + +
                                    +
                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TemplateHTMLComponent.html b/documentation/docs/generated/components/TemplateHTMLComponent.html new file mode 100644 index 0000000000..c98457e589 --- /dev/null +++ b/documentation/docs/generated/components/TemplateHTMLComponent.html @@ -0,0 +1,371 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                    +
                                    + + +
                                    +
                                    + + + + + + + + +
                                    +

                                    +

                                    File

                                    +

                                    +

                                    + src/app/shared/components/template/components/html/html.component.ts +

                                    + + + +

                                    +

                                    Extends

                                    +

                                    +

                                    + TemplateBaseComponent +

                                    + +

                                    +

                                    Implements

                                    +

                                    +

                                    + OnInit +

                                    + + +
                                    +

                                    Metadata

                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    + +
                                    +

                                    Index

                                    + + + + + + + + + + + + + + + +
                                    +
                                    Properties
                                    +
                                    + +
                                    +
                                    + +
                                    +

                                    Constructor

                                    + + + + + + + + + + + + + +
                                    +constructor(domSanitizer: DomSanitizer) +
                                    + +
                                    +
                                    + Parameters : + + + + + + + + + + + + + + + + + + +
                                    NameTypeOptional
                                    domSanitizer + DomSanitizer + + No +
                                    +
                                    +
                                    +
                                    + + + + + + +
                                    + +

                                    + Properties +

                                    + + + + + + + + + + + + + + +
                                    + + + html + + +
                                    + Type : SafeHtml + +
                                    + +
                                    +
                                    + +
                                    + + +
                                    +
                                    import { Component, OnInit } from "@angular/core";
                                    +import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
                                    +import { TemplateBaseComponent } from "src/app/shared/components/template/components/base";
                                    +
                                    +@Component({
                                    +  selector: "template-html-component",
                                    +  template: `<div [outerHTML]="html"></div>`,
                                    +})
                                    +/** Render raw html */
                                    +export class TemplateHTMLComponent extends TemplateBaseComponent implements OnInit {
                                    +  html: SafeHtml;
                                    +
                                    +  constructor(private domSanitizer: DomSanitizer) {
                                    +    super();
                                    +  }
                                    +
                                    +  ngOnInit() {
                                    +    this.html = this.domSanitizer.bypassSecurityTrustHtml(this._row.value);
                                    +  }
                                    +}
                                    +
                                    +
                                    + + + +
                                    +
                                    +
                                    +
                                    + Legend +
                                    +
                                    +
                                    Html element +
                                    +
                                    +
                                    Component +
                                    +
                                    +
                                    Html element with directive +
                                    +
                                    +
                                    + + +
                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                    +
                                    +

                                    results matching ""

                                    +
                                      +
                                      +
                                      +

                                      No results matching ""

                                      +
                                      +
                                      +
                                      + +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TemplateLayoutComponent.html b/documentation/docs/generated/components/TemplateLayoutComponent.html new file mode 100644 index 0000000000..b869604945 --- /dev/null +++ b/documentation/docs/generated/components/TemplateLayoutComponent.html @@ -0,0 +1,850 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                      +
                                      + + +
                                      +
                                      + + + + + + + + +
                                      +

                                      +

                                      File

                                      +

                                      +

                                      + src/app/shared/components/template/components/layout/layout.ts +

                                      + + + + +

                                      +

                                      Implements

                                      +

                                      +

                                      + ITemplateRowProps + OnInit +

                                      + + +
                                      +

                                      Metadata

                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      +

                                      Index

                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      Properties
                                      +
                                      + +
                                      +
                                      Methods
                                      +
                                      + +
                                      +
                                      Inputs
                                      +
                                      + +
                                      +
                                      Accessors
                                      +
                                      + +
                                      +
                                      + +
                                      +

                                      Constructor

                                      + + + + + + + + + + +
                                      +constructor() +
                                      + +
                                      +
                                      + +
                                      +

                                      Inputs

                                      + + + + + + + + + + + + + + + +
                                      + + parent +
                                      + Type : TemplateContainerComponent + +
                                      + +
                                      +

                                      reference to parent template container - does not have setter as should remain static

                                      +
                                      +
                                      + + + + + + + + + + + + + + + +
                                      + + row +
                                      + Type : FlowTypes.TemplateRow + +
                                      + +
                                      +

                                      specific data used in component rendering

                                      +
                                      +
                                      +
                                      + + + +
                                      + +

                                      + Methods +

                                      + + + + + + + + + + + + + + + + + + + +
                                      + + + Public + interceptTemplateContainerAction + + +
                                      + + interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) +
                                      + +
                                      +

                                      Add any additional methods or function calls to actions that would otherwise be handled by +the template container. +be processed by the template container parent (as it is used as a filter)

                                      +
                                      + +
                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                      NameTypeOptional
                                      action + FlowTypes.TemplateRowAction + + No +
                                      +
                                      +
                                      +
                                      +
                                      + Returns : boolean + +
                                      +
                                      +

                                      true or false to specify if the action should continue to also +be processed by the template container parent (as it is used as a filter)

                                      + +
                                      +
                                      + + + + + + + + + + + + + + + + + + + +
                                      + + + Public + modifyRowSetter + + +
                                      + + modifyRowSetter(row: FlowTypes.TemplateRow) +
                                      + +
                                      +

                                      Apply any changes here to be applied the row @Input() set operation

                                      +
                                      + +
                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                      NameTypeOptional
                                      row + FlowTypes.TemplateRow + + No +
                                      +
                                      +
                                      +
                                      +
                                      + Returns : FlowTypes.TemplateRow + +
                                      +
                                      + +
                                      +
                                      + + + + + + + + + + + + + + + + + + + +
                                      + + + Public + scrollToTop + + +
                                      + + scrollToTop() +
                                      + +
                                      +

                                      As content can be nested within containers or pages, a general +method that scrolls everything scrollable (all parent containers and page content) +to the top

                                      +
                                      + +
                                      + Returns : void + +
                                      +
                                      +
                                      +
                                      + +

                                      + Properties +

                                      + + + + + + + + + + + + + + +
                                      + + + _row + + +
                                      + Type : FlowTypes.TemplateRow + +
                                      + +
                                      + + + + + + + + + + + + + + +
                                      + + + Public + trackByRow + + +
                                      + Default value : () => {...} +
                                      + +
                                      +
                                      + +
                                      +

                                      + Accessors +

                                      + + + + + + + + + + + + + + + + + +
                                      + + row +
                                      + setrow(row: FlowTypes.TemplateRow) +
                                      + +
                                      +

                                      specific data used in component rendering

                                      +
                                      + +
                                      + Parameters : + + + + + + + + + + + + + + + + + + +
                                      NameTypeOptional
                                      row + FlowTypes.TemplateRow + + No +
                                      +
                                      +
                                      +
                                      +
                                      + Returns : void + +
                                      +
                                      +
                                      +
                                      + + +
                                      +
                                      import { Component, Input, OnInit } from "@angular/core";
                                      +import { FlowTypes, ITemplateRowProps } from "../../models";
                                      +import { TemplateContainerComponent } from "../../template-container.component";
                                      +
                                      +@Component({
                                      +  template: ``,
                                      +  styleUrls: ["../tmpl-components-common.scss"],
                                      +})
                                      +/**
                                      + * Layout components such as a display_group, nav_group or animated section add a layer between
                                      + * the template container and rendered child rows.
                                      + *
                                      + * Actions are still dispatched to the parent if rendered with reference to the parent container,
                                      + * which may or may not be desired behaviour. E.g. a display_group which is simply showing buttons
                                      + * in a flex-box will want the parent container to handle the button click actions, whereas a
                                      + * nav_group may want to intercept the action to perform actions like changing slides.
                                      + *
                                      + * Action interceptors can be used to handle which actions propogate to the parent container or not
                                      + *
                                      + * @example template (rendering child rows with reference to this parent container)
                                      + * ```
                                      + *  <plh-template-component *ngFor="let childRow of _row.rows; trackBy: trackByRow" [row]="childRow" [parent]="parent"></plh-template-component>
                                      + * ```
                                      + */
                                      +export class TemplateLayoutComponent implements ITemplateRowProps, OnInit {
                                      +  _row: FlowTypes.TemplateRow;
                                      +  /** specific data used in component rendering */
                                      +  @Input() set row(row: FlowTypes.TemplateRow) {
                                      +    row.rows = (row.rows || []).map((r) => {
                                      +      // r.action_list = this.addRowDefaultActions(r.action_list);
                                      +      return r;
                                      +    });
                                      +    row = this.modifyRowSetter(row);
                                      +    this._row = row;
                                      +  }
                                      +  /** reference to parent template container - does not have setter as should remain static */
                                      +  @Input() parent: TemplateContainerComponent;
                                      +  constructor() {}
                                      +
                                      +  ngOnInit() {
                                      +    this.addParentActionsFilter();
                                      +  }
                                      +
                                      +  /**
                                      +   * As content can be nested within containers or pages, a general
                                      +   * method that scrolls everything scrollable (all parent containers and page content)
                                      +   * to the top
                                      +   */
                                      +  public scrollToTop() {
                                      +    let parent = this.parent;
                                      +    while (parent) {
                                      +      if (parent.elRef) {
                                      +        parent.elRef.nativeElement.scrollTop = 0;
                                      +      }
                                      +      parent = parent.parent;
                                      +    }
                                      +    const ionContentContainers = document.querySelectorAll("ion-content") || [];
                                      +    ionContentContainers.forEach((el) => {
                                      +      el.shadowRoot.querySelector(".inner-scroll").scrollTop = 0;
                                      +    });
                                      +  }
                                      +
                                      +  /**
                                      +   * Apply any changes here to be applied the row @Input() set operation
                                      +   */
                                      +  public modifyRowSetter(row: FlowTypes.TemplateRow) {
                                      +    return row;
                                      +  }
                                      +
                                      +  /**
                                      +   * Add any additional methods or function calls to actions that would otherwise be handled by
                                      +   * the template container.
                                      +   * @returns `true` or `false` to specify if the action should continue to also
                                      +   * be processed by the template container parent (as it is used as a filter)
                                      +   */
                                      +  public interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) {
                                      +    return true;
                                      +  }
                                      +
                                      +  public trackByRow = (index: number, row: FlowTypes.TemplateRow) =>
                                      +    this.parent.trackByRow(index, row);
                                      +
                                      +  private addParentActionsFilter() {
                                      +    this.parent.templateActionService.handleActionsInterceptor = async (actions) => {
                                      +      return actions.filter((action) => {
                                      +        const shouldHandleByParent = this.interceptTemplateContainerAction(action);
                                      +        // continue to process on parent unless specific return says not to
                                      +        return shouldHandleByParent !== false;
                                      +      });
                                      +    };
                                      +  }
                                      +}
                                      +
                                      +
                                      + + +
                                      +

                                      + ../tmpl-components-common.scss +

                                      +
                                      @use "/src/theme/mixins.scss";
                                      +
                                      +.tmpl-video-container {
                                      +  width: 100%;
                                      +  display: flex;
                                      +  justify-content: center;
                                      +
                                      +  video {
                                      +    width: 100%;
                                      +    max-width: var(--video-max-width);
                                      +    border-radius: var(--ion-border-radius-secondary);
                                      +  }
                                      +}
                                      +
                                      +.left {
                                      +  justify-content: start;
                                      +}
                                      +.right {
                                      +  justify-content: flex-end;
                                      +}
                                      +.center {
                                      +  justify-content: center;
                                      +}
                                      +.rounded_corners {
                                      +  border-radius: var(--ion-border-radius-standard);
                                      +
                                      +  img {
                                      +    border-radius: var(--ion-border-radius-standard);
                                      +  }
                                      +}
                                      +.whiteText {
                                      +  color: var(--ion-color-primary-contrast);
                                      +}
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      + Legend +
                                      +
                                      +
                                      Html element +
                                      +
                                      +
                                      Component +
                                      +
                                      +
                                      Html element with directive +
                                      +
                                      +
                                      + + +
                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      +

                                      results matching ""

                                      +
                                        +
                                        +
                                        +

                                        No results matching ""

                                        +
                                        +
                                        +
                                        + +
                                        +
                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TemplatePopupComponent.html b/documentation/docs/generated/components/TemplatePopupComponent.html new file mode 100644 index 0000000000..7da3326494 --- /dev/null +++ b/documentation/docs/generated/components/TemplatePopupComponent.html @@ -0,0 +1,838 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                        +
                                        + + +
                                        +
                                        + + + + + + + + +
                                        +

                                        +

                                        File

                                        +

                                        +

                                        + src/app/shared/components/template/components/layout/popup.ts +

                                        + + + + + + +
                                        +

                                        Metadata

                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                        + +
                                        +

                                        Index

                                        + + + + + + + + + + + + + + + + + + + + + +
                                        +
                                        Methods
                                        +
                                        + +
                                        +
                                        Inputs
                                        +
                                        + +
                                        +
                                        + +
                                        +

                                        Constructor

                                        + + + + + + + + + + + + + +
                                        +constructor(modalCtrl: ModalController) +
                                        + +
                                        +
                                        + Parameters : + + + + + + + + + + + + + + + + + + +
                                        NameTypeOptional
                                        modalCtrl + ModalController + + No +
                                        +
                                        +
                                        +
                                        + +
                                        +

                                        Inputs

                                        + + + + + + + + + + + + +
                                        + + props +
                                        + Type : ITemplatePopupComponentProps + +
                                        + +
                                        +
                                        + + + +
                                        + +

                                        + Methods +

                                        + + + + + + + + + + + + + + + + + + + +
                                        + + + dismiss + + +
                                        +dismiss(value?: literal type) +
                                        + +
                                        + +
                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                        NameTypeOptional
                                        value + literal type + + Yes +
                                        +
                                        +
                                        +
                                        +
                                        + Returns : void + +
                                        +
                                        + +
                                        +
                                        + + + + + + + + + + + + + + + + + + + +
                                        + + + dismissOnBackdrop + + +
                                        +dismissOnBackdrop(e: MouseEvent) +
                                        + +
                                        + +
                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                        NameTypeOptional
                                        e + MouseEvent + + No +
                                        +
                                        +
                                        +
                                        +
                                        + Returns : void + +
                                        +
                                        + +
                                        +
                                        + + + + + + + + + + + + + + + + + + + +
                                        + + + handleEmittedValue + + +
                                        +handleEmittedValue(value: literal type) +
                                        + +
                                        +

                                        When templates emit completed/uncompleted value from standalone popup close the popup +NOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions

                                        +
                                        + +
                                        + Parameters : + + + + + + + + + + + + + + + + + + + +
                                        NameTypeOptional
                                        value + literal type + + No +
                                        +
                                        +
                                        +
                                        +
                                        + Returns : void + +
                                        +
                                        + +
                                        +
                                        +
                                        + +
                                        + + +
                                        +
                                        import { Component, Input } from "@angular/core";
                                        +import { ModalController } from "@ionic/angular";
                                        +import { FlowTypes, ITemplateContainerProps } from "../../models";
                                        +import { TemplateContainerComponent } from "../../template-container.component";
                                        +
                                        +@Component({
                                        +  template: `
                                        +    <div
                                        +      class="popup-backdrop"
                                        +      (click)="dismissOnBackdrop($event)"
                                        +      [attr.data-fullscreen]="props.fullscreen ? true : null"
                                        +    >
                                        +      <div class="popup-container">
                                        +        <div (click)="dismiss()" class="close-button" fill="clear" *ngIf="props.showCloseButton">
                                        +          <ion-icon slot="icon-only" name="close"></ion-icon>
                                        +        </div>
                                        +        <div class="popup-content" [attr.data-fullscreen]="props.fullscreen ? true : null">
                                        +          <plh-template-container
                                        +            class="template-container"
                                        +            [name]="props.name"
                                        +            [templatename]="props.templatename"
                                        +            [parent]="props.parent"
                                        +            [row]="props.row"
                                        +            (emittedValue)="handleEmittedValue($event)"
                                        +          ></plh-template-container>
                                        +        </div>
                                        +      </div>
                                        +    </div>
                                        +  `,
                                        +  styles: [
                                        +    `
                                        +      .popup-backdrop {
                                        +        height: 100vh;
                                        +        width: 100%;
                                        +        background: rgba(0, 0, 0, 0.6);
                                        +        display: flex;
                                        +        flex-direction: column;
                                        +        justify-content: center;
                                        +      }
                                        +      .popup-backdrop[data-fullscreen] {
                                        +        background: white;
                                        +      }
                                        +      .popup-container {
                                        +        position: relative;
                                        +        width: var(--content-max-width);
                                        +        padding: 0 2rem;
                                        +        margin: auto;
                                        +      }
                                        +
                                        +      .popup-content {
                                        +        margin: 30px auto;
                                        +        max-height: calc(100vh - 60px);
                                        +        background: white;
                                        +        border-radius: 20px;
                                        +        padding: 20px;
                                        +        overflow: auto;
                                        +      }
                                        +      .popup-content[data-fullscreen] {
                                        +        width: 100%;
                                        +        height: 100vh;
                                        +        max-height: 100vh;
                                        +        border-radius: 0;
                                        +        margin: 0;
                                        +      }
                                        +      .popup-content::-webkit-scrollbar {
                                        +        display: none;
                                        +      }
                                        +      .close-button {
                                        +        position: absolute;
                                        +        top: 16px;
                                        +        right: 22px;
                                        +        background: white;
                                        +        width: 40px;
                                        +        height: 40px;
                                        +        border-radius: 100%;
                                        +        display: flex;
                                        +        flex-direction: column;
                                        +        align-items: center;
                                        +        justify-content: center;
                                        +        border: 1px solid var(--ion-color-primary);
                                        +        font-size: 24px;
                                        +        z-index: 1;
                                        +        box-shadow: var(--ion-default-box-shadow);
                                        +        color: var(--ion-color-primary);
                                        +      }
                                        +    `,
                                        +  ],
                                        +})
                                        +/**
                                        + * When opening a template as a popup, provide a minimal interface and load
                                        + * the template directly as a regular template-container element
                                        + */
                                        +export class TemplatePopupComponent {
                                        +  @Input() props: ITemplatePopupComponentProps;
                                        +
                                        +  constructor(private modalCtrl: ModalController) {}
                                        +
                                        +  /**
                                        +   * When templates emit completed/uncompleted value from standalone popup close the popup
                                        +   * NOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions
                                        +   * */
                                        +  handleEmittedValue(value: { emit_value: string; emit_data: any }) {
                                        +    const { emit_value } = value;
                                        +    if (this.props.dismissOnEmit) {
                                        +      if (["completed", "uncompleted"].includes(emit_value)) {
                                        +        this.dismiss(value);
                                        +      }
                                        +    }
                                        +  }
                                        +
                                        +  dismissOnBackdrop(e: MouseEvent) {
                                        +    const el = e.target as HTMLElement;
                                        +    if (el.classList.contains("popup-backdrop")) {
                                        +      this.dismiss();
                                        +    }
                                        +  }
                                        +
                                        +  dismiss(value?: { emit_value: string; emit_data: any }) {
                                        +    this.modalCtrl.dismiss(value);
                                        +  }
                                        +}
                                        +
                                        +export interface ITemplatePopupComponentProps extends ITemplateContainerProps {
                                        +  name: string;
                                        +  templatename: string;
                                        +  parent?: TemplateContainerComponent;
                                        +  row?: FlowTypes.TemplateRow;
                                        +  showCloseButton?: boolean;
                                        +  /** Dismiss popup when completed or uncompleted is emitted from child template */
                                        +  dismissOnEmit?: boolean;
                                        +  /** Wait for template to be self-dismissed before returning (default: True) */
                                        +  waitForDismiss?: boolean;
                                        +  /** Display fullscreen overlayed on top of all other app content */
                                        +  fullscreen?: boolean;
                                        +}
                                        +
                                        +
                                        + + +
                                        +
                                        
                                        +      .popup-backdrop {
                                        +        height: 100vh;
                                        +        width: 100%;
                                        +        background: rgba(0, 0, 0, 0.6);
                                        +        display: flex;
                                        +        flex-direction: column;
                                        +        justify-content: center;
                                        +      }
                                        +      .popup-backdrop[data-fullscreen] {
                                        +        background: white;
                                        +      }
                                        +      .popup-container {
                                        +        position: relative;
                                        +        width: var(--content-max-width);
                                        +        padding: 0 2rem;
                                        +        margin: auto;
                                        +      }
                                        +
                                        +      .popup-content {
                                        +        margin: 30px auto;
                                        +        max-height: calc(100vh - 60px);
                                        +        background: white;
                                        +        border-radius: 20px;
                                        +        padding: 20px;
                                        +        overflow: auto;
                                        +      }
                                        +      .popup-content[data-fullscreen] {
                                        +        width: 100%;
                                        +        height: 100vh;
                                        +        max-height: 100vh;
                                        +        border-radius: 0;
                                        +        margin: 0;
                                        +      }
                                        +      .popup-content::-webkit-scrollbar {
                                        +        display: none;
                                        +      }
                                        +      .close-button {
                                        +        position: absolute;
                                        +        top: 16px;
                                        +        right: 22px;
                                        +        background: white;
                                        +        width: 40px;
                                        +        height: 40px;
                                        +        border-radius: 100%;
                                        +        display: flex;
                                        +        flex-direction: column;
                                        +        align-items: center;
                                        +        justify-content: center;
                                        +        border: 1px solid var(--ion-color-primary);
                                        +        font-size: 24px;
                                        +        z-index: 1;
                                        +        box-shadow: var(--ion-default-box-shadow);
                                        +        color: var(--ion-color-primary);
                                        +      }
                                        +    
                                        +
                                        +
                                        + +
                                        +
                                        +
                                        +
                                        + Legend +
                                        +
                                        +
                                        Html element +
                                        +
                                        +
                                        Component +
                                        +
                                        +
                                        Html element with directive +
                                        +
                                        +
                                        + + +
                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                        +
                                        +

                                        results matching ""

                                        +
                                          +
                                          +
                                          +

                                          No results matching ""

                                          +
                                          +
                                          +
                                          + +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplAccordionComponent.html b/documentation/docs/generated/components/TmplAccordionComponent.html new file mode 100644 index 0000000000..03e51a7bfa --- /dev/null +++ b/documentation/docs/generated/components/TmplAccordionComponent.html @@ -0,0 +1,414 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                          +
                                          + + +
                                          +
                                          + + + + + + + + +
                                          +

                                          +

                                          File

                                          +

                                          +

                                          + src/app/shared/components/template/components/accordion/accordion.component.ts +

                                          + + + +

                                          +

                                          Extends

                                          +

                                          +

                                          + TemplateBaseComponent +

                                          + +

                                          +

                                          Implements

                                          +

                                          +

                                          + OnInit +

                                          + + +
                                          +

                                          Metadata

                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          + +
                                          +

                                          Index

                                          + + + + + + + + + + + + + + + +
                                          +
                                          Properties
                                          +
                                          + +
                                          +
                                          + + + + + + + +
                                          + +

                                          + Properties +

                                          + + + + + + + + + + + + + + + + + +
                                          + + + Public + openSections + + +
                                          + Type : [] + +
                                          + Default value : [] +
                                          + +
                                          +
                                          + +
                                          + + +
                                          +
                                          import { Component, OnInit } from "@angular/core";
                                          +import { TemplateBaseComponent } from "../base";
                                          +
                                          +@Component({
                                          +  selector: "plh-accordion-component",
                                          +  templateUrl: "accordion.component.html",
                                          +  styleUrls: ["./accordion.component.scss"],
                                          +})
                                          +export class TmplAccordionComponent extends TemplateBaseComponent implements OnInit {
                                          +  public openSections = [];
                                          +  ngOnInit() {
                                          +    // Initial list of section with state === 'open' must be calculated to provider open value
                                          +    this.openSections = this._row.rows
                                          +      .filter((childRow) => childRow.parameter_list?.state === "open")
                                          +      .map((childRow) => childRow.name);
                                          +  }
                                          +}
                                          +
                                          +
                                          + +
                                          +
                                          <ion-accordion-group
                                          +  [multiple]="_row.parameter_list?.open_multiple"
                                          +  [value]="openSections"
                                          +  #accordionGroup
                                          +>
                                          +  <ion-accordion
                                          +    [value]="childRow.name"
                                          +    *ngFor="let childRow of _row.rows; index as i"
                                          +    toggle-icon="arrow-down-circle"
                                          +    [style.z-index]="_row.rows.length - i"
                                          +  >
                                          +    <ion-item slot="header" class="accordion-header clear" lines="none">
                                          +      <ion-label class="accordion-section-title">{{ childRow.value || "" }}</ion-label>
                                          +      <!-- If custom icon supplied override. Otherwise default will be arrow -->
                                          +      <ng-template [ngIf]="_row.parameter_list?.open_icon_src" let-open_icon_src="ngIf">
                                          +        <ng-container
                                          +          [ngTemplateOutlet]="customIcon"
                                          +          [ngTemplateOutletContext]="{open_icon_src,  childRow }"
                                          +        ></ng-container>
                                          +      </ng-template>
                                          +    </ion-item>
                                          +    <!-- Accordion section Content -->
                                          +    <ion-item slot="content" class="accordion-content clear" lines="none">
                                          +      <plh-template-component
                                          +        *ngFor="let contentRow of childRow.rows | filterDisplayComponent"
                                          +        [row]="contentRow"
                                          +        [parent]="parent"
                                          +        [attr.data-rowname]="contentRow.name"
                                          +      >
                                          +      </plh-template-component>
                                          +    </ion-item>
                                          +  </ion-accordion>
                                          +</ion-accordion-group>
                                          +
                                          +<!-- 
                                          +    Template for custom icon - extracted from main inline block as a bit messy 
                                          +    override default icon to replace with empty class and toggle depending on open state 
                                          +-->
                                          +<ng-template #customIcon let-open_icon_src="open_icon_src" let-childRow="childRow">
                                          +  <div class="ion-accordion-toggle-icon"></div>
                                          +  <ion-icon
                                          +    [name]="
                                          +      childRow && accordionGroup.value.indexOf(childRow.name) === -1
                                          +        ? open_icon_src
                                          +        : _row.parameter_list.close_icon_src
                                          +    "
                                          +  ></ion-icon>
                                          +</ng-template>
                                          +
                                          +
                                          + +
                                          +

                                          + ./accordion.component.scss +

                                          +
                                          // Create overlapping effect
                                          +ion-accordion {
                                          +  background: white;
                                          +  border: 1px solid var(--ion-color-primary);
                                          +  border-radius: 10px;
                                          +  margin-top: -12px;
                                          +  padding-top: 8px;
                                          +  box-shadow: var(--ion-default-box-shadow);
                                          +}
                                          +ion-accordion:first-of-type {
                                          +  margin-top: unset;
                                          +  padding-top: unset;
                                          +}
                                          +ion-label.accordion-section-title {
                                          +  color: var(--ion-color-primary);
                                          +  font-size: 1.3rem;
                                          +}
                                          +ion-item.accordion-content {
                                          +  padding-bottom: 1rem;
                                          +}
                                          +
                                          +
                                          + +
                                          +
                                          +
                                          +
                                          + Legend +
                                          +
                                          +
                                          Html element +
                                          +
                                          +
                                          Component +
                                          +
                                          +
                                          Html element with directive +
                                          +
                                          +
                                          + + +
                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          +

                                          results matching ""

                                          +
                                            +
                                            +
                                            +

                                            No results matching ""

                                            +
                                            +
                                            +
                                            + +
                                            +
                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplAdvancedDashedBoxComponent.html b/documentation/docs/generated/components/TmplAdvancedDashedBoxComponent.html new file mode 100644 index 0000000000..05af84b5cb --- /dev/null +++ b/documentation/docs/generated/components/TmplAdvancedDashedBoxComponent.html @@ -0,0 +1,599 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                            +
                                            + + +
                                            +
                                            + + + + + + + + +
                                            +

                                            +

                                            File

                                            +

                                            +

                                            + src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts +

                                            + + + +

                                            +

                                            Extends

                                            +

                                            +

                                            + TemplateBaseComponent +

                                            + +

                                            +

                                            Implements

                                            +

                                            +

                                            + OnInit +

                                            + + +
                                            +

                                            Metadata

                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                            + +
                                            +

                                            Index

                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                            +
                                            Properties
                                            +
                                            + +
                                            +
                                            Methods
                                            +
                                            + +
                                            +
                                            Inputs
                                            +
                                            + +
                                            +
                                            + +
                                            +

                                            Constructor

                                            + + + + + + + + + + +
                                            +constructor() +
                                            + +
                                            +
                                            + +
                                            +

                                            Inputs

                                            + + + + + + + + + + + + +
                                            + + inputRow +
                                            + Type : FlowTypes.TemplateRow + +
                                            + +
                                            +
                                            + + + +
                                            + +

                                            + Methods +

                                            + + + + + + + + + + + + + + + + + + + +
                                            + + + getParams + + +
                                            +getParams() +
                                            + +
                                            + +
                                            + Returns : void + +
                                            +
                                            +
                                            +
                                            + +

                                            + Properties +

                                            + + + + + + + + + + + + + + +
                                            + + + icon_position + + +
                                            + Type : string + +
                                            + +
                                            + + + + + + + + + + + + + + +
                                            + + + icon_src + + +
                                            + Type : string | null + +
                                            + +
                                            + + + + + + + + + + + + + + +
                                            + + + style + + +
                                            + Type : string + +
                                            + +
                                            +
                                            + +
                                            + + +
                                            +
                                            import { Component, Input, OnInit } from "@angular/core";
                                            +import { FlowTypes } from "src/app/shared/model";
                                            +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                            +import { TemplateBaseComponent } from "../../base";
                                            +
                                            +@Component({
                                            +  selector: "plh-advanced-dashed-box",
                                            +  templateUrl: "./advanced-dashed-box.component.html",
                                            +  styleUrls: ["./advanced-dashed-box.component.scss"],
                                            +})
                                            +export class TmplAdvancedDashedBoxComponent extends TemplateBaseComponent implements OnInit {
                                            +  @Input() inputRow: FlowTypes.TemplateRow;
                                            +  style: string;
                                            +  icon_src: string | null;
                                            +  icon_position: string;
                                            +
                                            +  constructor() {
                                            +    super();
                                            +  }
                                            +
                                            +  ngOnInit() {
                                            +    if (this.inputRow) this._row = this.inputRow;
                                            +    this.getParams();
                                            +  }
                                            +
                                            +  getParams() {
                                            +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", "");
                                            +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                            +    this.icon_position = getStringParamFromTemplateRow(this._row, "icon_position", "top-left");
                                            +  }
                                            +}
                                            +
                                            +
                                            + +
                                            +
                                            <div class="box-wrapper" [attr.data-hasicon]="icon_src ? true : null">
                                            +  <div class="item default" [class]="style">
                                            +    <div class="icon" [class]="icon_position" *ngIf="icon_src">
                                            +      <img [src]="icon_src | plhAsset" alt="" />
                                            +    </div>
                                            +    <plh-template-component
                                            +      *ngFor="let childRow of _row.rows; trackBy: trackByRow"
                                            +      [row]="childRow"
                                            +      [parent]="parent"
                                            +      style="width: 100%"
                                            +    >
                                            +    </plh-template-component>
                                            +  </div>
                                            +</div>
                                            +
                                            +
                                            + +
                                            +

                                            + ./advanced-dashed-box.component.scss +

                                            +
                                            @use "/src/theme/mixins";
                                            +
                                            +.box-wrapper {
                                            +  .item {
                                            +    @include mixins.flex-centered;
                                            +    flex-direction: column;
                                            +    margin-left: auto;
                                            +    margin-right: auto;
                                            +    width: 100%;
                                            +    min-height: var(--dashed-box-item-min-height);
                                            +    padding: var(--regular-padding) var(--largest-padding);
                                            +    border: 1px dashed transparent;
                                            +    border-radius: var(--ion-border-radius-secondary);
                                            +    position: relative;
                                            +    .text {
                                            +      text-align: center;
                                            +      font-size: var(--font-size-text-medium);
                                            +      line-height: var(--line-height-text-largest);
                                            +    }
                                            +    .icon {
                                            +      @include mixins.small-square;
                                            +      position: absolute;
                                            +      img {
                                            +        width: 100%;
                                            +        height: 100%;
                                            +      }
                                            +    }
                                            +    .top-left {
                                            +      left: -8px;
                                            +      top: -10px;
                                            +    }
                                            +    .top-right {
                                            +      right: -8px;
                                            +      top: -10px;
                                            +    }
                                            +    .bottom-left {
                                            +      left: -8px;
                                            +      bottom: -10px;
                                            +    }
                                            +    .bottom-right {
                                            +      right: -8px;
                                            +      bottom: -10px;
                                            +    }
                                            +  }
                                            +  .default {
                                            +    background: var(--ion-color-primary-contrast);
                                            +    border-color: var(--ion-color-primary);
                                            +    .text {
                                            +      color: var(--ion-color-primary);
                                            +    }
                                            +  }
                                            +  .alert {
                                            +    background: var(--ion-color-primary-contrast);
                                            +    border-color: var(--ion-color-secondary);
                                            +    .text {
                                            +      color: var(--ion-color-secondary);
                                            +    }
                                            +  }
                                            +}
                                            +.box-wrapper[data-hasicon="true"] {
                                            +  // add margin to top to account for offset icon
                                            +  margin-top: 8px;
                                            +}
                                            +
                                            +
                                            + +
                                            +
                                            +
                                            +
                                            + Legend +
                                            +
                                            +
                                            Html element +
                                            +
                                            +
                                            Component +
                                            +
                                            +
                                            Html element with directive +
                                            +
                                            +
                                            + + +
                                            + + + + + + + + + + + + + + + + + + + + + + + +
                                            +
                                            +

                                            results matching ""

                                            +
                                              +
                                              +
                                              +

                                              No results matching ""

                                              +
                                              +
                                              +
                                              + +
                                              +
                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplAnimatedSlidesComponent.html b/documentation/docs/generated/components/TmplAnimatedSlidesComponent.html new file mode 100644 index 0000000000..053b5b06d4 --- /dev/null +++ b/documentation/docs/generated/components/TmplAnimatedSlidesComponent.html @@ -0,0 +1,640 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                              +
                                              + + +
                                              +
                                              + + + + + + + + +
                                              +

                                              +

                                              File

                                              +

                                              +

                                              + src/app/shared/components/template/components/animated-slides/animated-slides.component.ts +

                                              + + + +

                                              +

                                              Extends

                                              +

                                              +

                                              + TemplateBaseComponent +

                                              + +

                                              +

                                              Implements

                                              +

                                              +

                                              + OnInit +

                                              + + +
                                              +

                                              Metadata

                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              + +
                                              +

                                              Index

                                              + + + + + + + + + + + + + + + + + + + + + +
                                              +
                                              Properties
                                              +
                                              + +
                                              +
                                              Methods
                                              +
                                              + +
                                              +
                                              + + + + + + +
                                              + +

                                              + Methods +

                                              + + + + + + + + + + + + + + + + + + + +
                                              + + + getParams + + +
                                              +getParams() +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + + +
                                              + + + skipIntro + + +
                                              +skipIntro() +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              +
                                              +
                                              + +

                                              + Properties +

                                              + + + + + + + + + + + + + + + + + +
                                              + + + fadeSection + + +
                                              + Type : [] + +
                                              + Default value : [] +
                                              + +
                                              + + + + + + + + + + + + + + + + + +
                                              + + + fadeTimes + + +
                                              + Type : [] + +
                                              + Default value : [] +
                                              + +
                                              + + + + + + + + + + + + + + + + + +
                                              + + + skipText + + +
                                              + Type : string + +
                                              + Default value : "" +
                                              + +
                                              + + + + + + + + + + + + + + +
                                              + + + style + + +
                                              + Type : string | null + +
                                              + +
                                              +
                                              + +
                                              + + +
                                              +
                                              import { Component, OnInit } from "@angular/core";
                                              +import { PLHAnimations } from "src/app/shared/animations";
                                              +import { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from "src/app/shared/utils";
                                              +import { TemplateBaseComponent } from "../base";
                                              +
                                              +@Component({
                                              +  animations: PLHAnimations.fadeInOut,
                                              +  selector: "template-animated-slides",
                                              +  templateUrl: "./animated-slides.component.html",
                                              +  styleUrls: ["./animated-slides.component.scss"],
                                              +})
                                              +export class TmplAnimatedSlidesComponent extends TemplateBaseComponent implements OnInit {
                                              +  skipText = "";
                                              +  // local tracker for which sections have been shown
                                              +  fadeSection = [];
                                              +  // durations to display each faded section
                                              +  fadeTimes = [];
                                              +  private _isDismissed = false;
                                              +  style: string | null;
                                              +
                                              +  ngOnInit(): void {
                                              +    this.getParams();
                                              +    this.runFade();
                                              +  }
                                              +
                                              +  getParams() {
                                              +    this.skipText = getStringParamFromTemplateRow(this._row, "skip_text", "Skip");
                                              +    for (let row of this._row.rows) {
                                              +      this.fadeTimes.push(getNumberParamFromTemplateRow(row, "duration", 0) * 1000);
                                              +    }
                                              +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                                              +  }
                                              +  /**
                                              +   * Iterate over each section for display, showing for
                                              +   * a defined period of time before fading out and moving
                                              +   * on to the next
                                              +   */
                                              +  private async runFade() {
                                              +    let i = 0;
                                              +    for (let fadeTime of this.fadeTimes) {
                                              +      this.fadeSection[i] = "in";
                                              +      // wait specified time plus additional animation time
                                              +      await this._wait(fadeTime + 1500);
                                              +      this.fadeSection[i] = "out";
                                              +      i++;
                                              +    }
                                              +    /* component may have already been dismissed with "uncompleted" event,
                                              +     * so check it exists before attempting again */
                                              +    if (!this._isDismissed) {
                                              +      this.triggerActions("completed");
                                              +    }
                                              +  }
                                              +  skipIntro() {
                                              +    this._isDismissed = true;
                                              +    this.triggerActions("uncompleted");
                                              +  }
                                              +  private _wait(ms: number) {
                                              +    return new Promise<void>((resolve) =>
                                              +      setTimeout(() => {
                                              +        resolve();
                                              +      }, ms)
                                              +    );
                                              +  }
                                              +}
                                              +
                                              +
                                              + +
                                              +
                                              <div [class]="'animated-slides-wrapper'" [attr.data-param-style]="style">
                                              +  <div class="background"></div>
                                              +  <ion-button fill="clear" (click)="skipIntro()" class="skip-button">
                                              +    {{ skipText }}
                                              +  </ion-button>
                                              +  <div class="section-container">
                                              +    <section *ngFor="let childRow of _row.rows; let idx = index" [@fadeInOut]="fadeSection[idx]">
                                              +      <plh-template-component [row]="childRow" [parent]="parent"></plh-template-component>
                                              +    </section>
                                              +  </div>
                                              +</div>
                                              +
                                              +
                                              + +
                                              +

                                              + ./animated-slides.component.scss +

                                              +
                                              .animated-slides-wrapper {
                                              +  p {
                                              +    font-size: 20px;
                                              +  }
                                              +  .section-container {
                                              +    position: relative;
                                              +    max-width: 300px;
                                              +    max-height: 85%;
                                              +    margin-top: 15%;
                                              +    margin-left: auto;
                                              +    margin-right: auto;
                                              +    display: flex;
                                              +    flex-direction: column;
                                              +    align-items: center;
                                              +    justify-content: center;
                                              +  }
                                              +  section {
                                              +    position: absolute;
                                              +    top: 0;
                                              +    left: 0;
                                              +    opacity: 0;
                                              +    width: 100%;
                                              +    display: flex;
                                              +    flex-grow: 1;
                                              +    flex-direction: column;
                                              +    align-items: center;
                                              +    justify-content: center;
                                              +  }
                                              +  .skip-button {
                                              +    position: absolute;
                                              +    top: 0;
                                              +    right: 0;
                                              +    opacity: 0.3;
                                              +  }
                                              +  &[data-param-style~="light"] {
                                              +    .background {
                                              +      position: absolute;
                                              +      top: 0;
                                              +      left: 0;
                                              +      width: 100%;
                                              +      height: 100%;
                                              +      background-color: var(--ion-background-color, #fff);
                                              +    }
                                              +  }
                                              +}
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              + Legend +
                                              +
                                              +
                                              Html element +
                                              +
                                              +
                                              Component +
                                              +
                                              +
                                              Html element with directive +
                                              +
                                              +
                                              + + +
                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                              +
                                              +

                                              results matching ""

                                              +
                                                +
                                                +
                                                +

                                                No results matching ""

                                                +
                                                +
                                                +
                                                + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplAudioComponent.html b/documentation/docs/generated/components/TmplAudioComponent.html new file mode 100644 index 0000000000..4952a9b6fc --- /dev/null +++ b/documentation/docs/generated/components/TmplAudioComponent.html @@ -0,0 +1,1641 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                +
                                                + + +
                                                +
                                                + + + + + + + + +
                                                +

                                                +

                                                File

                                                +

                                                +

                                                + src/app/shared/components/template/components/audio/audio.component.ts +

                                                + + + +

                                                +

                                                Extends

                                                +

                                                +

                                                + TemplateBaseComponent +

                                                + +

                                                +

                                                Implements

                                                +

                                                +

                                                + ITemplateRowProps + OnInit + OnDestroy +

                                                + + +
                                                +

                                                Metadata

                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                + +
                                                +

                                                Index

                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                +
                                                Properties
                                                +
                                                + +
                                                +
                                                Methods
                                                +
                                                + +
                                                +
                                                Inputs
                                                +
                                                + +
                                                +
                                                + +
                                                +

                                                Constructor

                                                + + + + + + + + + + + + + +
                                                +constructor(templateAssetService: TemplateAssetService) +
                                                + +
                                                +
                                                + Parameters : + + + + + + + + + + + + + + + + + + +
                                                NameTypeOptional
                                                templateAssetService + TemplateAssetService + + No +
                                                +
                                                +
                                                +
                                                + +
                                                +

                                                Inputs

                                                + + + + + + + + + + + + +
                                                + + template +
                                                + Type : FlowTypes.Template + +
                                                + +
                                                +
                                                + + + +
                                                + +

                                                + Methods +

                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + checkChange + + +
                                                +checkChange() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + checkFocus + + +
                                                +checkFocus() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + customUpdateWhenRewind + + +
                                                +customUpdateWhenRewind() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + getParams + + +
                                                +getParams() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + initPlayer + + +
                                                +initPlayer() +
                                                + +
                                                + +
                                                + Returns : any + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + rewindNext + + +
                                                +rewindNext() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + rewindPrev + + +
                                                +rewindPrev() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + seek + + +
                                                +seek() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + toggleMute + + +
                                                +toggleMute() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + togglePlayer + + +
                                                +togglePlayer() +
                                                + +
                                                + +
                                                + Returns : any + +
                                                +
                                                + + + + + + + + + + + + + + + + + + + +
                                                + + + updateProgress + + +
                                                +updateProgress() +
                                                + +
                                                + +
                                                + Returns : void + +
                                                +
                                                +
                                                +
                                                + +

                                                + Properties +

                                                + + + + + + + + + + + + + + + + + +
                                                + + + currentTimeSong + + +
                                                + Type : string + +
                                                + Default value : "0" +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + errorTxt + + +
                                                + Type : string | null + +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + hasStarted + + +
                                                + Type : boolean + +
                                                + Default value : false +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + help + + +
                                                + Type : string | null + +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + isMute + + +
                                                + Type : boolean + +
                                                + Default value : false +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + isPlayed + + +
                                                + Type : boolean + +
                                                + Default value : false +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + player + + +
                                                + Type : Howl + +
                                                + Default value : null +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + progress + + +
                                                + Type : number + +
                                                + Default value : 0 +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + range + + +
                                                + Type : IonRange + +
                                                + Decorators : +
                                                + + @ViewChild('range', {static: false})
                                                +
                                                +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + rangeBarDisabled + + +
                                                + Type : boolean + +
                                                + Default value : false +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + rangeBarTouched + + +
                                                + Type : boolean + +
                                                + Default value : false +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + src + + +
                                                + Type : string | null + +
                                                + +
                                                + + + + + + + + + + + + + + + + + +
                                                + + + timeToRewind + + +
                                                + Type : number + +
                                                + Default value : 15 +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + + titleAudio + + +
                                                + Type : string | null + +
                                                + +
                                                +
                                                + +
                                                + + +
                                                +
                                                import { Component, Input, OnDestroy, OnInit, ViewChild } from "@angular/core";
                                                +import { FlowTypes } from "../../../../model";
                                                +import {
                                                +  getBooleanParamFromTemplateRow,
                                                +  getNumberParamFromTemplateRow,
                                                +  getStringParamFromTemplateRow,
                                                +} from "../../../../utils";
                                                +import { Howl } from "howler";
                                                +import { IonRange } from "@ionic/angular";
                                                +import { ITemplateRowProps } from "../../models";
                                                +import { TemplateBaseComponent } from "../base";
                                                +import { TemplateAssetService } from "../../services/template-asset.service";
                                                +
                                                +@Component({
                                                +  selector: "plh-audio",
                                                +  templateUrl: "./audio.component.html",
                                                +  styleUrls: ["./audio.component.scss"],
                                                +})
                                                +export class TmplAudioComponent
                                                +  extends TemplateBaseComponent
                                                +  implements ITemplateRowProps, OnInit, OnDestroy
                                                +{
                                                +  @Input() template: FlowTypes.Template;
                                                +  @ViewChild("range", { static: false }) range: IonRange;
                                                +  src: string | null;
                                                +  titleAudio: string | null;
                                                +  help: string | null;
                                                +  isMute: boolean = false;
                                                +  player: Howl = null;
                                                +  isPlayed: boolean = false;
                                                +  errorTxt: string | null;
                                                +  progress = 0;
                                                +  timeToRewind: number = 15;
                                                +  rangeBarTouched: boolean = false;
                                                +  currentTimeSong: string = "0";
                                                +  rangeBarDisabled: boolean = false;
                                                +  hasStarted: boolean = false;
                                                +
                                                +  constructor(private templateAssetService: TemplateAssetService) {
                                                +    super();
                                                +  }
                                                +
                                                +  ngOnInit() {
                                                +    this.getParams();
                                                +    this.initPlayer();
                                                +  }
                                                +
                                                +  getParams() {
                                                +    this.src = this.templateAssetService.getTranslatedAssetPath(
                                                +      this._row.value || getStringParamFromTemplateRow(this._row, "src", null)
                                                +    );
                                                +    this.titleAudio = getStringParamFromTemplateRow(this._row, "title", "Title");
                                                +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
                                                +    this.rangeBarDisabled = getBooleanParamFromTemplateRow(this._row, "range_bar_disabled", false);
                                                +    this.timeToRewind = getNumberParamFromTemplateRow(this._row, "time_to_rewind", 15);
                                                +  }
                                                +
                                                +  initPlayer() {
                                                +    return this.src
                                                +      ? (this.player = new Howl({
                                                +          src: [this.src],
                                                +          onplay: () => {
                                                +            this.isPlayed = true;
                                                +            this.updateProgress();
                                                +            if (!this.hasStarted) {
                                                +              this.hasStarted = true;
                                                +              this.triggerActions("audio_first_start");
                                                +            }
                                                +            this.triggerActions("audio_play");
                                                +          },
                                                +          onend: () => {
                                                +            this.isPlayed = false;
                                                +            this.range.value = 0;
                                                +            this.currentTimeSong = "0";
                                                +            this.updateProgress();
                                                +            this.triggerActions("audio_end");
                                                +          },
                                                +          onpause: () => {
                                                +            this.isPlayed = false;
                                                +            this.updateProgress();
                                                +            this.triggerActions("audio_pause");
                                                +          },
                                                +        }))
                                                +      : (this.errorTxt = "Src is undefined, player not initialized");
                                                +  }
                                                +
                                                +  togglePlayer() {
                                                +    this.isPlayed = !this.isPlayed;
                                                +    return this.isPlayed ? this.player.play() : this.player.pause();
                                                +  }
                                                +
                                                +  rewindNext() {
                                                +    this.player.seek((this.player.seek() as any) + this.timeToRewind);
                                                +    this.customUpdateWhenRewind();
                                                +  }
                                                +
                                                +  rewindPrev() {
                                                +    this.player.seek(
                                                +      (this.player.seek() as any) < this.timeToRewind
                                                +        ? (this.player.seek(0) as any)
                                                +        : (this.player.seek() as any) - this.timeToRewind
                                                +    );
                                                +    this.customUpdateWhenRewind();
                                                +  }
                                                +
                                                +  seek() {
                                                +    let newValue = +this.range.value;
                                                +    let duration = this.player.duration();
                                                +    this.player.seek(duration * (newValue / 100));
                                                +    this.rangeBarTouched = false;
                                                +    this.updateProgress();
                                                +  }
                                                +
                                                +  toggleMute() {
                                                +    this.isMute = !this.isMute;
                                                +    this.player.mute(this.isMute);
                                                +  }
                                                +
                                                +  updateProgress() {
                                                +    const ref = setInterval(() => {
                                                +      if (!this.isPlayed || this.rangeBarTouched) {
                                                +        clearInterval(ref);
                                                +        return;
                                                +      }
                                                +      let seek: any = this.player.seek();
                                                +      this.progress = (seek / this.player.duration()) * 100 || 0;
                                                +      this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : "0";
                                                +    }, 1000);
                                                +  }
                                                +
                                                +  checkFocus() {
                                                +    this.rangeBarTouched = true;
                                                +  }
                                                +
                                                +  checkChange() {
                                                +    if (this.rangeBarTouched) {
                                                +      let newValue = +this.range.value;
                                                +      let duration = this.player.duration();
                                                +      this.player.seek(duration * (newValue / 100));
                                                +      this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : "0";
                                                +    }
                                                +  }
                                                +
                                                +  customUpdateWhenRewind() {
                                                +    if (!this.isPlayed) {
                                                +      let seek: any = this.player.seek();
                                                +      this.progress = (seek / this.player.duration()) * 100 || 0;
                                                +      this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : "0";
                                                +    }
                                                +  }
                                                +
                                                +  ngOnDestroy() {
                                                +    this.player.stop();
                                                +  }
                                                +}
                                                +
                                                +
                                                + +
                                                +
                                                <div class="container-player margin-t-large">
                                                +  <div class="top-row">
                                                +    <div class="title_and_help">
                                                +      <h3 *ngIf="titleAudio">{{ titleAudio }}</h3>
                                                +      <ion-icon
                                                +        *ngIf="help"
                                                +        [pTooltip]="help"
                                                +        tooltipPosition="right"
                                                +        tooltipEvent="click"
                                                +        name="help-circle-outline"
                                                +        class="audio-help"
                                                +      ></ion-icon>
                                                +    </div>
                                                +    <div class="volume" (click)="player ? toggleMute() : null">
                                                +      <ion-icon
                                                +        [name]="!isMute ? 'volume-high-outline' : 'volume-mute-outline'"
                                                +        class="volume-icon"
                                                +      ></ion-icon>
                                                +    </div>
                                                +  </div>
                                                +  <div class="progress-block" [class.disabled]="rangeBarDisabled || !player">
                                                +    <ion-range
                                                +      #range
                                                +      class="audio-range"
                                                +      max="100"
                                                +      aria-readonly="true"
                                                +      [value]="progress"
                                                +      (ionChange)="checkChange()"
                                                +      (touchstart)="checkFocus()"
                                                +      (touchend)="seek()"
                                                +      (mouseup)="seek()"
                                                +    ></ion-range>
                                                +  </div>
                                                +  <div class="time">
                                                +    <div class="time-value">
                                                +      {{ +currentTimeSong * 1000 | date: "mm:ss" }}
                                                +    </div>
                                                +    <div class="time-value">
                                                +      {{ !player ? "00:00" : (player.duration() * 1000 | date: "mm:ss") }}
                                                +    </div>
                                                +  </div>
                                                +  <div class="controls" *ngIf="!errorTxt">
                                                +    <div class="rewind">
                                                +      <ion-button (click)="rewindPrev()"
                                                +        ><img src="/assets/icon/audio/arrow.svg" alt=""
                                                +      /></ion-button>
                                                +    </div>
                                                +    <div class="play">
                                                +      <ion-button class="btn-play" (click)="togglePlayer()">
                                                +        <img
                                                +          [class.ml-5]="!isPlayed"
                                                +          [src]="
                                                +            (!isPlayed ? 'plh_images/icons/play_white.svg' : 'plh_images/icons/pause_white.svg')
                                                +              | plhAsset
                                                +          "
                                                +          alt=""
                                                +        />
                                                +      </ion-button>
                                                +    </div>
                                                +    <div class="forward">
                                                +      <ion-button (click)="rewindNext()">
                                                +        <img src="/assets/icon/audio/arrow.svg" alt="" />
                                                +      </ion-button>
                                                +    </div>
                                                +  </div>
                                                +  <div class="error-text" *ngIf="errorTxt">
                                                +    {{ errorTxt }}
                                                +  </div>
                                                +</div>
                                                +
                                                +
                                                + +
                                                +

                                                + ./audio.component.scss +

                                                +
                                                @use "/src/theme/mixins";
                                                +
                                                +$control-background: var(--audio-control-background, var(--ion-color-primary-500));
                                                +
                                                +.container-player {
                                                +  background: var(--ion-color-primary-contrast);
                                                +  border: var(--ion-border-standard);
                                                +  box-sizing: border-box;
                                                +  box-shadow: var(--ion-default-box-shadow);
                                                +  border-radius: var(--ion-border-radius-standard);
                                                +  padding: var(--regular-padding);
                                                +  display: flex;
                                                +  position: relative;
                                                +  flex-direction: column;
                                                +  .top-row {
                                                +    @include mixins.flex-space-between;
                                                +    .title_and_help {
                                                +      width: 85%;
                                                +      display: flex;
                                                +      align-items: center;
                                                +      min-height: var(--audio-title-and-help-height);
                                                +      h3 {
                                                +        margin: 0;
                                                +        margin-right: var(--small-margin);
                                                +        color: var(--ion-color-primary);
                                                +        max-width: 85%;
                                                +        font-weight: var(--font-weight-bold);
                                                +        font-size: var(--audio-title-size);
                                                +      }
                                                +      .audio-help {
                                                +        color: var(--ion-color-primary);
                                                +        height: var(--help-icon-standard-size);
                                                +        width: var(--help-icon-standard-size);
                                                +      }
                                                +    }
                                                +    .volume {
                                                +      position: absolute;
                                                +      top: 15px;
                                                +      right: 15px;
                                                +      .volume-icon {
                                                +        color: var(--ion-color-primary);
                                                +        @include mixins.small-square;
                                                +      }
                                                +    }
                                                +  }
                                                +  .progress-block {
                                                +    .audio-range {
                                                +      --bar-background-active: #{$control-background};
                                                +      --bar-background: transparent;
                                                +      --bar-height: 4px;
                                                +      --bar-border-radius: var(--ion-border-radius-secondary);
                                                +      --knob-size: 0px;
                                                +      --pin-background: var(--ion-color-primary);
                                                +      --knob-background: var(--ion-color-primary);
                                                +      padding-inline: 0;
                                                +    }
                                                +
                                                +    ion-range::part(bar) {
                                                +      border: var(--ion-border-thin-standard);
                                                +      height: var(--audio-bar-height);
                                                +    }
                                                +
                                                +    ion-range::part(bar-active) {
                                                +      top: 23px;
                                                +      margin-left: 3px;
                                                +    }
                                                +  }
                                                +  .time {
                                                +    margin-top: -12px;
                                                +    @include mixins.flex-space-between;
                                                +    &-value {
                                                +      font-size: var(--font-size-text-large);
                                                +      line-height: var(--line-height-text-small);
                                                +      color: var(--ion-color-primary);
                                                +    }
                                                +  }
                                                +  .controls {
                                                +    @include mixins.flex-space-between;
                                                +    min-width: var(--audio-controls-width);
                                                +    align-self: center;
                                                +    .rewind,
                                                +    .forward {
                                                +      ion-button {
                                                +        @include mixins.large-square;
                                                +        --background: transparent;
                                                +        --padding: 0;
                                                +        --border-radius: var(--ion-border-radius-rounded);
                                                +        --box-shadow: transparent;
                                                +        img {
                                                +          position: absolute;
                                                +          min-width: var(--audio-controls-img-width);
                                                +        }
                                                +      }
                                                +    }
                                                +    .rewind {
                                                +      img {
                                                +        transform: rotate(180deg);
                                                +      }
                                                +    }
                                                +    .play {
                                                +      .btn-play {
                                                +        @include mixins.large-square;
                                                +        --background: #{$control-background};
                                                +        --border-radius: var(--ion-border-radius-rounded);
                                                +        --padding: 0;
                                                +        --box-shadow: var(--ion-default-box-shadow);
                                                +        img {
                                                +          position: absolute;
                                                +          width: var(--audio-play-img-width);
                                                +        }
                                                +      }
                                                +    }
                                                +  }
                                                +  .error-text {
                                                +    margin: var(--small-margin) 0;
                                                +    text-align: center;
                                                +  }
                                                +}
                                                +.disabled {
                                                +  pointer-events: none;
                                                +}
                                                +
                                                +
                                                + +
                                                +
                                                +
                                                +
                                                + Legend +
                                                +
                                                +
                                                Html element +
                                                +
                                                +
                                                Component +
                                                +
                                                +
                                                Html element with directive +
                                                +
                                                +
                                                + + +
                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                +
                                                +

                                                results matching ""

                                                +
                                                  +
                                                  +
                                                  +

                                                  No results matching ""

                                                  +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplButtonComponent.html b/documentation/docs/generated/components/TmplButtonComponent.html new file mode 100644 index 0000000000..4897093647 --- /dev/null +++ b/documentation/docs/generated/components/TmplButtonComponent.html @@ -0,0 +1,877 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                  +
                                                  + + +
                                                  +
                                                  + + + + + + + + +
                                                  +

                                                  +

                                                  File

                                                  +

                                                  +

                                                  + src/app/shared/components/template/components/button/button.component.ts +

                                                  + + +

                                                  +

                                                  Description

                                                  +

                                                  +

                                                  +

                                                  A general-purpose button component

                                                  + +

                                                  + +

                                                  +

                                                  Extends

                                                  +

                                                  +

                                                  + TemplateBaseComponent +

                                                  + +

                                                  +

                                                  Implements

                                                  +

                                                  +

                                                  + OnInit +

                                                  + + +
                                                  +

                                                  Metadata

                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                  + +
                                                  +

                                                  Index

                                                  + + + + + + + + + + + + + + + +
                                                  +
                                                  Properties
                                                  +
                                                  + +
                                                  +
                                                  + + + + + + + +
                                                  + +

                                                  + Properties +

                                                  + + + + + + + + + + + + + + + + + + + + +
                                                  + + + buttonAlign + + +
                                                  + Type : "left" | "centre" | "right" + +
                                                  + Default value : "centre" +
                                                  + +
                                                  +

                                                  TEMPLATE PARAMETER: "button_align"

                                                  +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + +
                                                  + + + disabled + + +
                                                  + Type : boolean + +
                                                  + Default value : false +
                                                  + +
                                                  +

                                                  TEMPLATE PARAMETER: "disabled". If true, button is disabled and greyed out

                                                  +
                                                  +
                                                  + + + + + + + + + + + + + + + + + +
                                                  + + + icon + + +
                                                  + Type : string + +
                                                  + +
                                                  +

                                                  TEMPLATE PARAMETER: "icon". The path to an icon asset

                                                  +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + +
                                                  + + + style + + +
                                                  + Type : "information" | "navigation" | "full" | "flexible" | "medium" | "short" | "tall" | "standard" | "alternative" + +
                                                  + Default value : "information" +
                                                  + +
                                                  +

                                                  TEMPLATE PARAMETER: "style"

                                                  +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + +
                                                  + + + textAlign + + +
                                                  + Type : "left" | "centre" | "right" + +
                                                  + Default value : "left" +
                                                  + +
                                                  +

                                                  TEMPLATE PARAMETER: "text_align"

                                                  +
                                                  +
                                                  +
                                                  + +
                                                  + +
                                                  +

                                                  Button

                                                  +

                                                  Example

                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                  typenamevalueparameter_list
                                                  buttonbutton_par_2_1Style parameter Informationstyle: information
                                                  buttonbutton_par_2_2Style parameter Navigationstyle: navigation
                                                  +

                                                  button example

                                                  +

                                                  Google Sheet Demo
                                                  Live Preview Demo

                                                  +

                                                  Parameters

                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                  ParameterValueDescription
                                                  disabledfalse (default)Enables the button
                                                  disabledtrueDisables the button and greys it out
                                                  styleinformation (default)Button colour primary
                                                  stylenavigationButton colour secondary
                                                  stylefull (default)Button width determined by screen width
                                                  styleflexibleButton width equal to its content width
                                                  stylemedium (default)Button height medium
                                                  styleshortButton height short
                                                  styletallButton height tall
                                                  stylestandard (default)Button text colour white
                                                  stylealternativeButton text colour primary
                                                  stylemedium_roundTo be removed
                                                  styleno_shadowTo be removed
                                                  text_alignleft (default)Button text is left aligned within the button
                                                  text_aligncenterButton text is centred within the button
                                                  text_alignrightButton text is right aligned within the button
                                                  button_aligncenter (default)Horizontal alignment of the button on the screen is centred
                                                  button_alignleftHorizontal alignment of the button on the screen is left aligned
                                                  button_alignrightHorizontal alignment of the button on the screen is right aligned
                                                  +

                                                  +
                                                  + +
                                                  +
                                                  import { Component, ElementRef, OnInit } from "@angular/core";
                                                  +import {
                                                  +  getStringParamFromTemplateRow,
                                                  +  getBooleanParamFromTemplateRow,
                                                  +} from "src/app/shared/utils";
                                                  +import { TemplateBaseComponent } from "../base";
                                                  +
                                                  +/**
                                                  + * A general-purpose button component
                                                  + */
                                                  +@Component({
                                                  +  selector: "plh-button",
                                                  +  templateUrl: "./button.component.html",
                                                  +  styleUrls: ["./button.component.scss"],
                                                  +})
                                                  +export class TmplButtonComponent extends TemplateBaseComponent implements OnInit {
                                                  +  /** TEMPLATE PARAMETER: "style" */
                                                  +  style:
                                                  +    | "information"
                                                  +    | "navigation"
                                                  +    | "full"
                                                  +    | "flexible"
                                                  +    | "medium"
                                                  +    | "short"
                                                  +    | "tall"
                                                  +    | "standard"
                                                  +    | "alternative" = "information";
                                                  +  /** TEMPLATE PARAMETER: "disabled". If true, button is disabled and greyed out */
                                                  +  disabled: boolean = false;
                                                  +  /** TEMPLATE PARAMETER: "text_align" */
                                                  +  textAlign: "left" | "centre" | "right" = "left";
                                                  +  /** TEMPLATE PARAMETER: "button_align" */
                                                  +  buttonAlign: "left" | "centre" | "right" = "centre";
                                                  +  /** TEMPLATE PARAMETER: "icon". The path to an icon asset */
                                                  +  icon: string;
                                                  +
                                                  +  /** @ignore */
                                                  +  constructor(private elRef: ElementRef) {
                                                  +    super();
                                                  +  }
                                                  +
                                                  +  ngOnInit() {
                                                  +    this.getParams();
                                                  +  }
                                                  +
                                                  +  private getParams() {
                                                  +    this.style = `${getStringParamFromTemplateRow(this._row, "style", "information")} ${
                                                  +      this.isTwoColumns() ? "two_columns" : ""
                                                  +    }` as any;
                                                  +    this.disabled = getBooleanParamFromTemplateRow(this._row, "disabled", false);
                                                  +    if (this._row.disabled) {
                                                  +      this.disabled = true;
                                                  +    }
                                                  +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "left") as any;
                                                  +    this.buttonAlign = getStringParamFromTemplateRow(this._row, "button_align", "center") as any;
                                                  +    this.icon = getStringParamFromTemplateRow(this._row, "icon", null);
                                                  +  }
                                                  +
                                                  +  /** Determine if the button is inside a display group with the style "two_columns" */
                                                  +  private isTwoColumns(): boolean {
                                                  +    const displayGroupElement = this.elRef.nativeElement.closest(".display-group-wrapper");
                                                  +    if (displayGroupElement) {
                                                  +      return displayGroupElement.classList.contains("two_columns");
                                                  +    } else {
                                                  +      return false;
                                                  +    }
                                                  +  }
                                                  +}
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  <ion-button
                                                  +  [class]="'full standard medium' + ' ' + style + ' ' + buttonAlign"
                                                  +  [disabled]="disabled"
                                                  +  (click)="triggerActions('click')"
                                                  +  [attr.data-param-style]="style"
                                                  +>
                                                  +  <ion-icon *ngIf="icon" slot="start" src="{{ icon | plhAsset }}"></ion-icon>
                                                  +  <span *ngIf="_row.value" [class]="textAlign" [innerHTML]="_row.value | markdown"> </span>
                                                  +  <span *ngIf="_row.rows" class="children">
                                                  +    <plh-template-component
                                                  +      *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                  +      class="child"
                                                  +      [row]="childRow"
                                                  +      [parent]="parent"
                                                  +      [attr.data-rowname]="_row.name"
                                                  +    ></plh-template-component>
                                                  +  </span>
                                                  +</ion-button>
                                                  +
                                                  +
                                                  + +
                                                  +

                                                  + ./button.component.scss +

                                                  +
                                                  $background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));
                                                  +$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));
                                                  +
                                                  +:host {
                                                  +  width: 100%;
                                                  +  ion-button {
                                                  +    height: 100%;
                                                  +  }
                                                  +  span {
                                                  +    padding: var(--tiny-padding) 0;
                                                  +    display: contents;
                                                  +  }
                                                  +}
                                                  +ion-button {
                                                  +  font-size: var(--buttons-font-size-small);
                                                  +  font-weight: var(--font-weight-standard);
                                                  +  color: var(--ion-color-primary-contrast);
                                                  +  text-transform: none;
                                                  +  white-space: pre-line;
                                                  +  min-height: var(--buttons-min-height);
                                                  +  padding: var(--regular-margin) var(--tiny-padding) 0;
                                                  +  --border-radius: var(--ion-border-radius-standard);
                                                  +  --box-shadow: var(--ion-default-box-shadow);
                                                  +  display: flex;
                                                  +  width: fit-content;
                                                  +  margin: 0 auto;
                                                  +}
                                                  +
                                                  +ion-button::part(native) {
                                                  +  height: auto;
                                                  +}
                                                  +
                                                  +ion-button:disabled,
                                                  +ion-button[disabled] {
                                                  +  filter: brightness(55%);
                                                  +}
                                                  +
                                                  +/// nested_color style applies semi-transparent background to match container
                                                  +ion-button[data-param-style~="nested_color"] {
                                                  +  --background: linear-gradient(rgb(0 0 0 / 13%) 0%, rgb(0 0 0 / 20%) 100%);
                                                  +}
                                                  +
                                                  +// nested_color style applies semi-transparent background to match container
                                                  +ion-button[data-param-style~="card"] {
                                                  +  --background: white;
                                                  +  --background-activated: var(--ion-color-gray-light);
                                                  +  --padding-top: 4px;
                                                  +  --padding-bottom: 4px;
                                                  +  color: var(--ion-color-primary);
                                                  +  font-weight: var(--font-weight-bold);
                                                  +  border: 1px solid var(--ion-color-gray-light);
                                                  +  border-radius: var(--ion-border-radius-secondary);
                                                  +  min-height: var(--buttons-short-height);
                                                  +  filter: drop-shadow(var(--ion-default-box-shadow));
                                                  +
                                                  +  ion-icon {
                                                  +    width: 32px;
                                                  +    font-size: 32px;
                                                  +  }
                                                  +
                                                  +  .children {
                                                  +    position: absolute;
                                                  +    align-self: flex-end;
                                                  +    right: 0;
                                                  +    display: flex;
                                                  +    align-items: center;
                                                  +  }
                                                  +}
                                                  +
                                                  +/// TODO CC-2021-12-19 - the code below should likely be refactored to param selectors and moved
                                                  +
                                                  +.navigation {
                                                  +  --background: #{$background-secondary};
                                                  +}
                                                  +
                                                  +.information {
                                                  +  --background: #{$background-primary};
                                                  +}
                                                  +
                                                  +.make_me_smile {
                                                  +  min-height: 80px !important;
                                                  +  max-width: fit-content;
                                                  +  --background: #{$background-primary};
                                                  +  color: var(--ion-color-primary-contrast);
                                                  +}
                                                  +
                                                  +.get_me_going {
                                                  +  min-height: 80px !important;
                                                  +  max-width: fit-content;
                                                  +  --background: #{$background-secondary};
                                                  +  color: var(--ion-color-primary-contrast);
                                                  +}
                                                  +
                                                  +.options {
                                                  +  --background: #{$background-primary};
                                                  +  color: var(--ion-color-primary-contrast);
                                                  +}
                                                  +
                                                  +.standard {
                                                  +  color: var(--ion-color-primary-contrast);
                                                  +}
                                                  +.alternative {
                                                  +  color: var(--ion-color-primary);
                                                  +}
                                                  +
                                                  +.left ::ng-deep {
                                                  +  margin: 0 auto 0 2px;
                                                  +  text-align: left;
                                                  +  p {
                                                  +    margin: 0 0 0 2px;
                                                  +  }
                                                  +}
                                                  +.right {
                                                  +  margin: 0 2px 0 auto;
                                                  +  text-align: right;
                                                  +}
                                                  +
                                                  +// width
                                                  +.full {
                                                  +  width: 100%;
                                                  +}
                                                  +.flexible {
                                                  +  width: fit-content;
                                                  +  max-width: 100%;
                                                  +}
                                                  +// height
                                                  +.medium {
                                                  +  min-height: var(--buttons-medium-height);
                                                  +}
                                                  +.short {
                                                  +  min-height: var(--buttons-short-height);
                                                  +  font-size: var(--buttons-font-size-small);
                                                  +}
                                                  +.tall {
                                                  +  min-height: var(--buttons-tall-height);
                                                  +}
                                                  +
                                                  +.medium_round {
                                                  +  --border-radius: var(--ion-border-radius-secondary);
                                                  +}
                                                  +.no_shadow {
                                                  +  --box-shadow: none;
                                                  +}
                                                  +.two_columns {
                                                  +  max-width: 12rem;
                                                  +  min-height: var(--buttons-min-height);
                                                  +  font-size: calc(var(--buttons-font-size) * var(--scale-factor-btn));
                                                  +  min-width: 5rem;
                                                  +  @media (max-width: 375px) {
                                                  +    max-width: 11rem;
                                                  +  }
                                                  +  @media (max-width: 320px) {
                                                  +    max-width: 10rem;
                                                  +  }
                                                  +}
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  +
                                                  +
                                                  + Legend +
                                                  +
                                                  +
                                                  Html element +
                                                  +
                                                  +
                                                  Component +
                                                  +
                                                  +
                                                  Html element with directive +
                                                  +
                                                  +
                                                  + + +
                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                  +
                                                  +

                                                  results matching ""

                                                  +
                                                    +
                                                    +
                                                    +

                                                    No results matching ""

                                                    +
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplCarouselComponent.html b/documentation/docs/generated/components/TmplCarouselComponent.html new file mode 100644 index 0000000000..67d01f1d2b --- /dev/null +++ b/documentation/docs/generated/components/TmplCarouselComponent.html @@ -0,0 +1,656 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                    +
                                                    + + +
                                                    +
                                                    + + + + + + + + +
                                                    +

                                                    +

                                                    File

                                                    +

                                                    +

                                                    + src/app/shared/components/template/components/carousel/carousel.component.ts +

                                                    + + + +

                                                    +

                                                    Extends

                                                    +

                                                    +

                                                    + TemplateBaseComponent +

                                                    + +

                                                    +

                                                    Implements

                                                    +

                                                    +

                                                    + OnInit +

                                                    + + +
                                                    +

                                                    Metadata

                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                    + +
                                                    +

                                                    Index

                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                    +
                                                    Properties
                                                    +
                                                    + +
                                                    +
                                                    Methods
                                                    +
                                                    + +
                                                    +
                                                    + +
                                                    +

                                                    Constructor

                                                    + + + + + + + + + + + + + +
                                                    +constructor(taskService: TaskService) +
                                                    + +
                                                    +
                                                    + Parameters : + + + + + + + + + + + + + + + + + + +
                                                    NameTypeOptional
                                                    taskService + TaskService + + No +
                                                    +
                                                    +
                                                    +
                                                    + + + + + +
                                                    + +

                                                    + Methods +

                                                    + + + + + + + + + + + + + + + + + + + +
                                                    + + + Async + getParams + + +
                                                    + + getParams() +
                                                    + +
                                                    + +
                                                    + Returns : any + +
                                                    +
                                                    + + + + + + + + + + + + + + + + + + + +
                                                    + + + Public + handleSwiperInitialised + + +
                                                    + + handleSwiperInitialised(swiper: Swiper) +
                                                    + +
                                                    +

                                                    Event emitter called when swiper initialised

                                                    +
                                                    + +
                                                    + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                    NameTypeOptional
                                                    swiper + Swiper + + No +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    + Returns : void + +
                                                    +
                                                    + +
                                                    +
                                                    +
                                                    +
                                                    + +

                                                    + Properties +

                                                    + + + + + + + + + + + + + + + + + +
                                                    + + + config + + +
                                                    + Type : SwiperOptions + +
                                                    + Default value : {} +
                                                    + +
                                                    + + + + + + + + + + + + + + +
                                                    + + + initialSlide + + +
                                                    + Type : number + +
                                                    + +
                                                    + + + + + + + + + + + + + + +
                                                    + + + swiper + + +
                                                    + Type : Swiper + +
                                                    + +
                                                    +
                                                    + +
                                                    + + +
                                                    +
                                                    import { Component, OnInit, ViewEncapsulation } from "@angular/core";
                                                    +import { TemplateBaseComponent } from "../base";
                                                    +import { SwiperOptions, Swiper } from "swiper";
                                                    +import {
                                                    +  getBooleanParamFromTemplateRow,
                                                    +  getNumberParamFromTemplateRow,
                                                    +  getStringParamFromTemplateRow,
                                                    +} from "src/app/shared/utils";
                                                    +import { TaskService } from "src/app/shared/services/task/task.service";
                                                    +
                                                    +@Component({
                                                    +  selector: "plh-carousel",
                                                    +  templateUrl: "./carousel.component.html",
                                                    +  styleUrls: ["./carousel.component.scss"],
                                                    +  encapsulation: ViewEncapsulation.None,
                                                    +})
                                                    +export class TmplCarouselComponent extends TemplateBaseComponent implements OnInit {
                                                    +  config: SwiperOptions = {};
                                                    +  swiper: Swiper;
                                                    +  initialSlide: number;
                                                    +
                                                    +  constructor(private taskService: TaskService) {
                                                    +    super();
                                                    +  }
                                                    +
                                                    +  async ngOnInit() {
                                                    +    await this.getParams();
                                                    +    await this.hackSetHighlightedTask();
                                                    +  }
                                                    +
                                                    +  async getParams() {
                                                    +    this.config.slidesPerView =
                                                    +      getNumberParamFromTemplateRow(this._row, "slides_per_view", null) || "auto";
                                                    +    this.config.spaceBetween = getNumberParamFromTemplateRow(this._row, "space_between", 10);
                                                    +    this.config.loop = getBooleanParamFromTemplateRow(this._row, "loop", false);
                                                    +    // "loopedSlides" is required in the Slider config iff "loop" is true
                                                    +    if (this.config.loop) {
                                                    +      this.config.loopedSlides = this._row.rows.length;
                                                    +    }
                                                    +    this.config.centeredSlides = getBooleanParamFromTemplateRow(this._row, "centered_slides", true);
                                                    +    this.initialSlide = getNumberParamFromTemplateRow(this._row, "initial_slide_index", 0);
                                                    +  }
                                                    +
                                                    +  /** Event emitter called when swiper initialised */
                                                    +  public handleSwiperInitialised(swiper: Swiper) {
                                                    +    this.swiper = swiper;
                                                    +    this.swiper.slideTo(this.initialSlide, 0, false);
                                                    +  }
                                                    +
                                                    +  /** When using carousel within task_group context set additional highlighted slide from task data */
                                                    +  private async hackSetHighlightedTask() {
                                                    +    const taskGroupsList = getStringParamFromTemplateRow(this._row, "task_group_data", null);
                                                    +    if (taskGroupsList) {
                                                    +      const highlightedTaskGroup = this.taskService.getHighlightedTaskGroup();
                                                    +      if (highlightedTaskGroup) {
                                                    +        this.initialSlide = await this.taskService.getHighlightedTaskGroupIndex(
                                                    +          highlightedTaskGroup,
                                                    +          taskGroupsList
                                                    +        );
                                                    +      }
                                                    +    }
                                                    +  }
                                                    +}
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    <div class="carousel-wrapper">
                                                    +  <swiper (swiper)="handleSwiperInitialised($event)" [config]="config">
                                                    +    <ng-template
                                                    +      swiperSlide
                                                    +      *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                    +    >
                                                    +      <plh-template-component [row]="childRow" [parent]="parent" [attr.data-rowname]="_row.name">
                                                    +      </plh-template-component>
                                                    +    </ng-template>
                                                    +  </swiper>
                                                    +</div>
                                                    +
                                                    +
                                                    + +
                                                    +

                                                    + ./carousel.component.scss +

                                                    +
                                                    .swiper {
                                                    +  width: 100%;
                                                    +}
                                                    +
                                                    +.swiper-slide {
                                                    +  padding: var(--small-padding);
                                                    +  width: fit-content;
                                                    +  height: auto;
                                                    +}
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    +
                                                    +
                                                    + Legend +
                                                    +
                                                    +
                                                    Html element +
                                                    +
                                                    +
                                                    Component +
                                                    +
                                                    +
                                                    Html element with directive +
                                                    +
                                                    +
                                                    + + +
                                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                                    +
                                                    +

                                                    results matching ""

                                                    +
                                                      +
                                                      +
                                                      +

                                                      No results matching ""

                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplComboBoxComponent.html b/documentation/docs/generated/components/TmplComboBoxComponent.html new file mode 100644 index 0000000000..d197ad7d0e --- /dev/null +++ b/documentation/docs/generated/components/TmplComboBoxComponent.html @@ -0,0 +1,879 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                      +
                                                      + + +
                                                      +
                                                      + + + + + + + + +
                                                      +

                                                      +

                                                      File

                                                      +

                                                      +

                                                      + src/app/shared/components/template/components/combo-box/combo-box.component.ts +

                                                      + + + +

                                                      +

                                                      Extends

                                                      +

                                                      +

                                                      + TemplateBaseComponent +

                                                      + +

                                                      +

                                                      Implements

                                                      +

                                                      +

                                                      + ITemplateRowProps + OnInit + OnDestroy +

                                                      + + +
                                                      +

                                                      Metadata

                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                      + +
                                                      +

                                                      Index

                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                      +
                                                      Properties
                                                      +
                                                      + +
                                                      +
                                                      Methods
                                                      +
                                                      + +
                                                      +
                                                      Inputs
                                                      +
                                                      + +
                                                      +
                                                      + +
                                                      +

                                                      Constructor

                                                      + + + + + + + + + + + + + +
                                                      +constructor(modalController: ModalController, templateService: TemplateService) +
                                                      + +
                                                      +
                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                      NameTypeOptional
                                                      modalController + ModalController + + No +
                                                      templateService + TemplateService + + No +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      Inputs

                                                      + + + + + + + + + + + + +
                                                      + + template +
                                                      + Type : FlowTypes.Template + +
                                                      + +
                                                      +
                                                      + + + +
                                                      + +

                                                      + Methods +

                                                      + + + + + + + + + + + + + + + + + + + +
                                                      + + + getParams + + +
                                                      +getParams() +
                                                      + +
                                                      + +
                                                      + Returns : void + +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + +
                                                      + + + getText + + +
                                                      +getText(aValue: string, listAnswers: string[]) +
                                                      + +
                                                      + +
                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                      NameTypeOptional
                                                      aValue + string + + No +
                                                      listAnswers + string[] + + No +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + Returns : string + +
                                                      +
                                                      + +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + +
                                                      + + + Async + openModal + + +
                                                      + + openModal() +
                                                      + +
                                                      + +
                                                      + Returns : any + +
                                                      +
                                                      +
                                                      +
                                                      + +

                                                      + Properties +

                                                      + + + + + + + + + + + + + + + + + +
                                                      + + + customAnswerSelected + + +
                                                      + Type : boolean + +
                                                      + Default value : false +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + + placeholder + + +
                                                      + Type : string + +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + + prioritisePlaceholder + + +
                                                      + Type : boolean + +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + + style + + +
                                                      + Type : string + +
                                                      + +
                                                      + + + + + + + + + + + + + + + + + +
                                                      + + + text + + +
                                                      + Type : string + +
                                                      + Default value : "" +
                                                      + +
                                                      +
                                                      + +
                                                      + + +
                                                      +
                                                      import { Component, Input, OnDestroy, OnInit } from "@angular/core";
                                                      +import { FlowTypes } from "../../../../model";
                                                      +import { ModalController } from "@ionic/angular";
                                                      +import { ComboBoxModalComponent } from "./combo-box-modal/combo-box-modal.component";
                                                      +import {
                                                      +  getBooleanParamFromTemplateRow,
                                                      +  getParamFromTemplateRow,
                                                      +  getStringParamFromTemplateRow,
                                                      +} from "src/app/shared/utils";
                                                      +import { TemplateBaseComponent } from "../base";
                                                      +import { ITemplateRowProps } from "../../models";
                                                      +import { TemplateService } from "../../services/template.service";
                                                      +import { ReplaySubject } from "rxjs";
                                                      +
                                                      +@Component({
                                                      +  selector: "plh-combo-box",
                                                      +  templateUrl: "./combo-box.component.html",
                                                      +  styleUrls: ["./combo-box.component.scss"],
                                                      +})
                                                      +export class TmplComboBoxComponent
                                                      +  extends TemplateBaseComponent
                                                      +  implements ITemplateRowProps, OnInit, OnDestroy
                                                      +{
                                                      +  @Input() template: FlowTypes.Template;
                                                      +  placeholder: string;
                                                      +  prioritisePlaceholder: boolean;
                                                      +  style: string;
                                                      +  text = "";
                                                      +  customAnswerSelected: boolean = false;
                                                      +  private componentDestroyed$ = new ReplaySubject(1);
                                                      +  constructor(private modalController: ModalController, private templateService: TemplateService) {
                                                      +    super();
                                                      +  }
                                                      +
                                                      +  ngOnInit(): void {
                                                      +    this.getParams();
                                                      +    const listAnswers: string[] = getParamFromTemplateRow(this._row, "answer_list", null);
                                                      +    this.customAnswerSelected =
                                                      +      listAnswers && this._row.value
                                                      +        ? !listAnswers.find((x) => x.includes(this._row.value))
                                                      +        : false;
                                                      +    this.text = this.getText(this._row.value, listAnswers);
                                                      +  }
                                                      +
                                                      +  getParams() {
                                                      +    this.placeholder = getStringParamFromTemplateRow(this._row, "placeholder", "");
                                                      +    this.prioritisePlaceholder = getBooleanParamFromTemplateRow(
                                                      +      this._row,
                                                      +      "prioritise_placeholder",
                                                      +      false
                                                      +    );
                                                      +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                      +  }
                                                      +
                                                      +  getText(aValue: string, listAnswers: string[]): string {
                                                      +    if (aValue) {
                                                      +      if (aValue === "other") {
                                                      +        return this._row.parameter_list["customAnswer"];
                                                      +      }
                                                      +      const textFromList = listAnswers
                                                      +        .find((answer: string) => answer.includes(aValue))
                                                      +        ?.match(/(?<=text:).+/)[0]
                                                      +        .trim();
                                                      +      return textFromList ? textFromList : aValue;
                                                      +    }
                                                      +  }
                                                      +
                                                      +  async openModal() {
                                                      +    const modal = await this.modalController.create({
                                                      +      component: ComboBoxModalComponent,
                                                      +      cssClass: "combo-box-modal",
                                                      +      componentProps: {
                                                      +        row: this._row,
                                                      +        template: this.template,
                                                      +        selectedValue: this.customAnswerSelected ? this.text : this._row.value,
                                                      +        customAnswerSelected: this.customAnswerSelected,
                                                      +        style: this.style,
                                                      +      },
                                                      +      showBackdrop: false,
                                                      +    });
                                                      +
                                                      +    modal.onDidDismiss().then(async (data) => {
                                                      +      this.prioritisePlaceholder = false;
                                                      +      const value = data?.data?.answer?.name;
                                                      +      this.text = data?.data?.answer?.text;
                                                      +      this.customAnswerSelected = data?.data?.customAnswerSelected;
                                                      +      if (this.customAnswerSelected) {
                                                      +        this._row.parameter_list["customAnswer"] = data?.data?.answer?.text;
                                                      +      } else {
                                                      +        this._row.parameter_list["customAnswer"] = null;
                                                      +      }
                                                      +      await this.setValue(value);
                                                      +      await this.triggerActions("changed");
                                                      +    });
                                                      +    await modal.present();
                                                      +  }
                                                      +
                                                      +  ngOnDestroy() {
                                                      +    this.componentDestroyed$.next(true);
                                                      +    this.componentDestroyed$.complete();
                                                      +  }
                                                      +}
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      <button
                                                      +  class="open-combobox margin-t-regular"
                                                      +  (click)="openModal()"
                                                      +  [class.placeholder-style]="(!_row.value && placeholder) || prioritisePlaceholder"
                                                      +  [ngClass]="{
                                                      +    'with-value': _row.value,
                                                      +    'no-value': !_row.value
                                                      +  }"
                                                      +  [disabled]="_row.disabled"
                                                      +>
                                                      +  {{ (text && !prioritisePlaceholder ? text : placeholder) | translate }}
                                                      +</button>
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      + ./combo-box.component.scss +

                                                      +
                                                      $placeholder-text: var(--combo-box-placeholder-text, var(--ion-color-primary-transparent));
                                                      +$background-no-value: var(--combo-box-background-no-value, transparent);
                                                      +$background-with-value: var(
                                                      +  --combo-box-background-with-value,
                                                      +  var(--gradient-primary-light-vertical)
                                                      +);
                                                      +
                                                      +.open-combobox {
                                                      +  outline: none;
                                                      +  width: 100%;
                                                      +  border: var(--ion-border-standard);
                                                      +  box-sizing: border-box;
                                                      +  filter: drop-shadow(var(--ion-default-box-shadow));
                                                      +  border-radius: var(--ion-border-radius-secondary);
                                                      +  font-weight: var(--font-weight-standard);
                                                      +  background: $background-no-value;
                                                      +  font-size: var(--combo-box-font-size-standard);
                                                      +  line-height: var(--line-height-text-large);
                                                      +  text-align: center;
                                                      +  color: var(--ion-color-primary);
                                                      +  min-height: var(--combo-box-min-height);
                                                      +  @media (max-width: 400px) {
                                                      +    min-width: var(--combo-box-min-width);
                                                      +  }
                                                      +}
                                                      +
                                                      +.placeholder-style {
                                                      +  color: $placeholder-text;
                                                      +}
                                                      +.with-value {
                                                      +  background: $background-with-value;
                                                      +}
                                                      +.no-value {
                                                      +  background: $background-no-value;
                                                      +}
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      + Legend +
                                                      +
                                                      +
                                                      Html element +
                                                      +
                                                      +
                                                      Component +
                                                      +
                                                      +
                                                      Html element with directive +
                                                      +
                                                      +
                                                      + + +
                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                      +
                                                      +

                                                      results matching ""

                                                      +
                                                        +
                                                        +
                                                        +

                                                        No results matching ""

                                                        +
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplDashedBoxComponent.html b/documentation/docs/generated/components/TmplDashedBoxComponent.html new file mode 100644 index 0000000000..fc2a6d49c0 --- /dev/null +++ b/documentation/docs/generated/components/TmplDashedBoxComponent.html @@ -0,0 +1,614 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                        +
                                                        + + +
                                                        +
                                                        + + + + + + + + +
                                                        +

                                                        +

                                                        File

                                                        +

                                                        +

                                                        + src/app/shared/components/template/components/dashed-box/dashed-box.component.ts +

                                                        + + + +

                                                        +

                                                        Extends

                                                        +

                                                        +

                                                        + TemplateBaseComponent +

                                                        + +

                                                        +

                                                        Implements

                                                        +

                                                        +

                                                        + ITemplateRowProps + OnInit +

                                                        + + +
                                                        +

                                                        Metadata

                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        + +
                                                        +

                                                        Index

                                                        + + + + + + + + + + + + + + + + + + + + + +
                                                        +
                                                        Properties
                                                        +
                                                        + +
                                                        +
                                                        Methods
                                                        +
                                                        + +
                                                        +
                                                        + +
                                                        +

                                                        Constructor

                                                        + + + + + + + + + + + + + +
                                                        +constructor(domSanitizer: DomSanitizer) +
                                                        + +
                                                        +
                                                        + Parameters : + + + + + + + + + + + + + + + + + + +
                                                        NameTypeOptional
                                                        domSanitizer + DomSanitizer + + No +
                                                        +
                                                        +
                                                        +
                                                        + + + + + +
                                                        + +

                                                        + Methods +

                                                        + + + + + + + + + + + + + + + + + + + +
                                                        + + + getParams + + +
                                                        +getParams() +
                                                        + +
                                                        + +
                                                        + Returns : void + +
                                                        +
                                                        +
                                                        +
                                                        + +

                                                        + Properties +

                                                        + + + + + + + + + + + + + + +
                                                        + + + icon_position + + +
                                                        + Type : string + +
                                                        + +
                                                        + + + + + + + + + + + + + + +
                                                        + + + icon_src + + +
                                                        + Type : string | null + +
                                                        + +
                                                        + + + + + + + + + + + + + + +
                                                        + + + innerHTML + + +
                                                        + Type : SafeHtml + +
                                                        + +
                                                        + + + + + + + + + + + + + + +
                                                        + + + style + + +
                                                        + Type : string + +
                                                        + +
                                                        +
                                                        + +
                                                        + + +
                                                        +
                                                        import { Component, OnInit } from "@angular/core";
                                                        +import { TemplateBaseComponent } from "../base";
                                                        +import { ITemplateRowProps } from "../../models";
                                                        +import { getStringParamFromTemplateRow } from "../../../../utils";
                                                        +import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
                                                        +
                                                        +@Component({
                                                        +  selector: "plh-dashed-box",
                                                        +  templateUrl: "./dashed-box.component.html",
                                                        +  styleUrls: ["./dashed-box.component.scss"],
                                                        +})
                                                        +export class TmplDashedBoxComponent
                                                        +  extends TemplateBaseComponent
                                                        +  implements ITemplateRowProps, OnInit
                                                        +{
                                                        +  style: string;
                                                        +  icon_src: string | null;
                                                        +  icon_position: string;
                                                        +  innerHTML: SafeHtml;
                                                        +  constructor(private domSanitizer: DomSanitizer) {
                                                        +    super();
                                                        +  }
                                                        +
                                                        +  ngOnInit() {
                                                        +    this.getParams();
                                                        +    this.innerHTML = this.domSanitizer.bypassSecurityTrustHtml(this._row.value);
                                                        +  }
                                                        +
                                                        +  getParams() {
                                                        +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", "");
                                                        +    this.style = getStringParamFromTemplateRow(this._row, "style", "default");
                                                        +    this.icon_position = getStringParamFromTemplateRow(this._row, "icon_position", "top-left");
                                                        +  }
                                                        +}
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        <div class="box-wrapper">
                                                        +  <div class="item margin-t-regular" [class]="style">
                                                        +    <div *ngIf="innerHTML" class="text" [innerHTML]="innerHTML"></div>
                                                        +    <div class="icon" [class]="icon_position" *ngIf="icon_src">
                                                        +      <img [src]="icon_src | plhAsset" alt="" />
                                                        +    </div>
                                                        +  </div>
                                                        +</div>
                                                        +
                                                        +
                                                        + +
                                                        +

                                                        + ./dashed-box.component.scss +

                                                        +
                                                        @use "/src/theme/mixins";
                                                        +
                                                        +.box-wrapper {
                                                        +  .item {
                                                        +    @include mixins.flex-centered;
                                                        +    margin-left: auto;
                                                        +    margin-right: auto;
                                                        +    width: 100%;
                                                        +    min-height: var(--dashed-box-item-min-height);
                                                        +    padding: var(--regular-padding) var(--largest-padding);
                                                        +    border: 1px dashed transparent;
                                                        +    border-radius: var(--ion-border-radius-secondary);
                                                        +    position: relative;
                                                        +    .text {
                                                        +      text-align: center;
                                                        +      font-size: var(--font-size-text-medium);
                                                        +      line-height: var(--line-height-text-largest);
                                                        +    }
                                                        +    .icon {
                                                        +      @include mixins.small-square;
                                                        +      position: absolute;
                                                        +      img {
                                                        +        width: 100%;
                                                        +        height: 100%;
                                                        +      }
                                                        +    }
                                                        +    .top-left {
                                                        +      left: -8px;
                                                        +      top: -10px;
                                                        +    }
                                                        +    .top-right {
                                                        +      right: -8px;
                                                        +      top: -10px;
                                                        +    }
                                                        +    .bottom-left {
                                                        +      left: -8px;
                                                        +      bottom: -10px;
                                                        +    }
                                                        +    .bottom-right {
                                                        +      right: -8px;
                                                        +      bottom: -10px;
                                                        +    }
                                                        +  }
                                                        +  .default {
                                                        +    background: var(--ion-color-primary-contrast);
                                                        +    border-color: var(--ion-color-primary);
                                                        +    .text {
                                                        +      color: var(--ion-color-primary);
                                                        +    }
                                                        +  }
                                                        +  .alert {
                                                        +    background: var(--ion-color-primary-contrast);
                                                        +    border-color: var(--ion-color-secondary);
                                                        +    .text {
                                                        +      color: var(--ion-color-secondary);
                                                        +    }
                                                        +  }
                                                        +}
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        +
                                                        +
                                                        + Legend +
                                                        +
                                                        +
                                                        Html element +
                                                        +
                                                        +
                                                        Component +
                                                        +
                                                        +
                                                        Html element with directive +
                                                        +
                                                        +
                                                        + + +
                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                        +
                                                        +

                                                        results matching ""

                                                        +
                                                          +
                                                          +
                                                          +

                                                          No results matching ""

                                                          +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplDataItemsComponent.html b/documentation/docs/generated/components/TmplDataItemsComponent.html new file mode 100644 index 0000000000..0d7db5bd7c --- /dev/null +++ b/documentation/docs/generated/components/TmplDataItemsComponent.html @@ -0,0 +1,708 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                          +
                                                          + + +
                                                          +
                                                          + + + + + + + + +
                                                          +

                                                          +

                                                          File

                                                          +

                                                          +

                                                          + src/app/shared/components/template/components/data-items/data-items.component.ts +

                                                          + + + +

                                                          +

                                                          Extends

                                                          +

                                                          +

                                                          + TemplateBaseComponent +

                                                          + + + +
                                                          +

                                                          Metadata

                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          + +
                                                          +

                                                          Index

                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          +
                                                          Properties
                                                          +
                                                          + +
                                                          +
                                                          Inputs
                                                          +
                                                          + +
                                                          +
                                                          Accessors
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          +

                                                          Constructor

                                                          + + + + + + + + + + + + + +
                                                          +constructor(dynamicDataService: DynamicDataService, templateVariablesService: TemplateVariablesService, injector: Injector, cdr: ChangeDetectorRef) +
                                                          + +
                                                          +
                                                          + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          NameTypeOptional
                                                          dynamicDataService + DynamicDataService + + No +
                                                          templateVariablesService + TemplateVariablesService + + No +
                                                          injector + Injector + + No +
                                                          cdr + ChangeDetectorRef + + No +
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          +

                                                          Inputs

                                                          + + + + + + + + + + + + +
                                                          + + row +
                                                          + Type : FlowTypes.TemplateRow + +
                                                          + +
                                                          +
                                                          + + + + +
                                                          + +

                                                          + Properties +

                                                          + + + + + + + + + + + + + + + + + +
                                                          + + + Public + itemRows + + +
                                                          + Type : FlowTypes.TemplateRow[] + +
                                                          + Default value : [] +
                                                          + +
                                                          +
                                                          + +
                                                          +

                                                          + Accessors +

                                                          + + + + + + + + + + + + + + + + + +
                                                          + + row +
                                                          + setrow(row: FlowTypes.TemplateRow) +
                                                          + +
                                                          + +
                                                          + Parameters : + + + + + + + + + + + + + + + + + + +
                                                          NameTypeOptional
                                                          row + FlowTypes.TemplateRow + + No +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + Returns : void + +
                                                          +
                                                          +
                                                          +
                                                          + + +
                                                          +
                                                          import {
                                                          +  ChangeDetectionStrategy,
                                                          +  ChangeDetectorRef,
                                                          +  Component,
                                                          +  Injector,
                                                          +  Input,
                                                          +} from "@angular/core";
                                                          +import { debounceTime, Subscription } from "rxjs";
                                                          +import { DynamicDataService } from "src/app/shared/services/dynamic-data/dynamic-data.service";
                                                          +import { FlowTypes } from "../../models";
                                                          +import { ItemProcessor } from "../../processors/item";
                                                          +import { TemplateRowService } from "../../services/instance/template-row.service";
                                                          +import { TemplateVariablesService } from "../../services/template-variables.service";
                                                          +import { TemplateBaseComponent } from "../base";
                                                          +
                                                          +@Component({
                                                          +  selector: "plh-data-items",
                                                          +  templateUrl: "./data-items.component.html",
                                                          +  styleUrls: ["./data-items.component.scss"],
                                                          +  changeDetection: ChangeDetectionStrategy.OnPush,
                                                          +})
                                                          +/**
                                                          + * Data Items are a structural row component that subscribes to a dynamic data list
                                                          + * and re-renders child components on change
                                                          + *
                                                          + * TODO
                                                          + * - Would be better if can render children without container (like regular items)
                                                          + * - Should be refactored into structural container instead of display component
                                                          + * - Could possibly refactor to feature module including services
                                                          + */
                                                          +export class TmplDataItemsComponent extends TemplateBaseComponent {
                                                          +  public itemRows: FlowTypes.TemplateRow[] = [];
                                                          +
                                                          +  private dataListName: string;
                                                          +  private parameterList: Record<string, string>;
                                                          +
                                                          +  private dataQuery$: Subscription;
                                                          +
                                                          +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                          +    this._row = row;
                                                          +    this.dataListName = this.hackGetRawDataListName(row);
                                                          +    this.parameterList = this.hackGetRawParameterList(row);
                                                          +    this.subscribeToData();
                                                          +  }
                                                          +
                                                          +  constructor(
                                                          +    private dynamicDataService: DynamicDataService,
                                                          +    private templateVariablesService: TemplateVariablesService,
                                                          +    private injector: Injector,
                                                          +    private cdr: ChangeDetectorRef
                                                          +  ) {
                                                          +    super();
                                                          +  }
                                                          +
                                                          +  private async subscribeToData() {
                                                          +    if (this.dataQuery$) {
                                                          +      this.dataQuery$.unsubscribe();
                                                          +    }
                                                          +    if (this.dataListName) {
                                                          +      await this.dynamicDataService.ready();
                                                          +      const query = await this.dynamicDataService.query$("data_list", this.dataListName);
                                                          +      this.dataQuery$ = query.pipe(debounceTime(50)).subscribe(async (data) => {
                                                          +        await this.renderItems(data, this._row.rows, this.parameterList);
                                                          +      });
                                                          +    } else {
                                                          +      await this.renderItems([], [], {});
                                                          +    }
                                                          +  }
                                                          +
                                                          +  private async renderItems(
                                                          +    itemDataList: any[],
                                                          +    rows: FlowTypes.TemplateRow[],
                                                          +    parameterList: any
                                                          +  ) {
                                                          +    const parsedItemDataList = await this.parseDataList(itemDataList);
                                                          +    const itemRows = new ItemProcessor(parsedItemDataList, parameterList).process(rows);
                                                          +    const parsedItemRows = await this.hackProcessRows(itemRows);
                                                          +    const replacedActionRows = this.setActionListMeta(parsedItemRows, parsedItemDataList);
                                                          +    // TODO - deep diff and only update changed
                                                          +    this.itemRows = replacedActionRows;
                                                          +    this.cdr.markForCheck();
                                                          +  }
                                                          +
                                                          +  /**
                                                          +   * Update any action list set_item args to contain name of current data list and item id
                                                          +   * and set_items action to include all currently displayed rows
                                                          +   * */
                                                          +  private setActionListMeta(
                                                          +    rows: FlowTypes.TemplateRow[],
                                                          +    dataList: {
                                                          +      [index: string]: any;
                                                          +    }
                                                          +  ) {
                                                          +    return rows.map((r) => {
                                                          +      if (r.action_list) {
                                                          +        r.action_list = r.action_list.map((a) => {
                                                          +          if (a.action_id === "set_item") {
                                                          +            a.args = [this.dataListName, r._evalContext.itemContext.id];
                                                          +          }
                                                          +          if (a.action_id === "set_items") {
                                                          +            // TODO - add a check for @item refs and replace parameter list with correct values
                                                          +            // for each individual item (default will be just to pick the first)
                                                          +            a.args = [this.dataListName, Object.values(dataList).map((v) => v.id)];
                                                          +          }
                                                          +          return a;
                                                          +        });
                                                          +      }
                                                          +      return r;
                                                          +    });
                                                          +  }
                                                          +
                                                          +  /**
                                                          +   * Ordinarily rows would be processed as part of the regular template processing,
                                                          +   * however this must be bypassed to allow multiple reprocessing on item updates
                                                          +   */
                                                          +  private async hackProcessRows(rows) {
                                                          +    const processor = new TemplateRowService(this.injector, {
                                                          +      name: "",
                                                          +      template: {
                                                          +        rows,
                                                          +      },
                                                          +      row: {
                                                          +        rows: [],
                                                          +      },
                                                          +    } as any);
                                                          +    await processor.processContainerTemplateRows();
                                                          +    return processor.renderedRows;
                                                          +  }
                                                          +
                                                          +  /**
                                                          +   * If datalist referenced as @data.some_list it will already be parsed, so extract
                                                          +   * name from raw values.
                                                          +   * Alternatively any list provided as a string value can be returned directly
                                                          +   * */
                                                          +  private hackGetRawDataListName(row: FlowTypes.TemplateRow) {
                                                          +    if (!row.value) return;
                                                          +    if (typeof row.value === "string") {
                                                          +      return row.value;
                                                          +    }
                                                          +    // HACK - if list name contains '_list' template.parser will parse as an array instead of string
                                                          +    if (Array.isArray(row.value)) {
                                                          +      return row.value[0];
                                                          +    }
                                                          +    // Extract raw name in case full datalist object supplied in place of name
                                                          +    return row._dynamicFields?.value?.[0]?.fieldName;
                                                          +  }
                                                          +
                                                          +  /** Copied from template-row service */
                                                          +  private hackGetRawParameterList(row: FlowTypes.TemplateRow) {
                                                          +    const list = row.parameter_list;
                                                          +    const unparsedFilter = row._dynamicFields?.parameter_list?.filter?.[0].fullExpression;
                                                          +    if (list && unparsedFilter) {
                                                          +      list.filter = unparsedFilter;
                                                          +    }
                                                          +    return list;
                                                          +  }
                                                          +  /** Copied from template-row service */
                                                          +  private async parseDataList(dataList: { [id: string]: any }) {
                                                          +    const parsed: { [id: string]: any } = {};
                                                          +    for (const [listKey, listValue] of Object.entries(dataList)) {
                                                          +      parsed[listKey] = listValue;
                                                          +      for (const [itemKey, itemValue] of Object.entries(listValue)) {
                                                          +        if (typeof itemValue === "string") {
                                                          +          parsed[listKey][itemKey] = await this.templateVariablesService.evaluateConditionString(
                                                          +            itemValue
                                                          +          );
                                                          +        }
                                                          +      }
                                                          +    }
                                                          +    return parsed;
                                                          +  }
                                                          +}
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          <plh-template-component
                                                          +  *ngFor="let row of itemRows"
                                                          +  [row]="row"
                                                          +  [parent]="parent"
                                                          +  [attr.data-rowname]="row.name"
                                                          +  trackBy:row.name
                                                          +></plh-template-component>
                                                          +
                                                          +
                                                          + +
                                                          +

                                                          + ./data-items.component.scss +

                                                          +
                                                          :host {
                                                          +  display: contents;
                                                          +}
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          +
                                                          +
                                                          + Legend +
                                                          +
                                                          +
                                                          Html element +
                                                          +
                                                          +
                                                          Component +
                                                          +
                                                          +
                                                          Html element with directive +
                                                          +
                                                          +
                                                          + + +
                                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                                          +
                                                          +

                                                          results matching ""

                                                          +
                                                            +
                                                            +
                                                            +

                                                            No results matching ""

                                                            +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplDisplayGridComponent.html b/documentation/docs/generated/components/TmplDisplayGridComponent.html new file mode 100644 index 0000000000..f607de0d89 --- /dev/null +++ b/documentation/docs/generated/components/TmplDisplayGridComponent.html @@ -0,0 +1,594 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                            +
                                                            + + +
                                                            +
                                                            + + + + + + + + +
                                                            +

                                                            +

                                                            File

                                                            +

                                                            +

                                                            + src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts +

                                                            + + + +

                                                            +

                                                            Extends

                                                            +

                                                            +

                                                            + TemplateBaseComponent +

                                                            + +

                                                            +

                                                            Implements

                                                            +

                                                            +

                                                            + ITemplateRowProps +

                                                            + + +
                                                            +

                                                            Metadata

                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                            + +
                                                            +

                                                            Index

                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                            +
                                                            Properties
                                                            +
                                                            + +
                                                            +
                                                            Inputs
                                                            +
                                                            + +
                                                            +
                                                            Accessors
                                                            +
                                                            + +
                                                            +
                                                            + + +
                                                            +

                                                            Inputs

                                                            + + + + + + + + + + + + +
                                                            + + row +
                                                            + Type : FlowTypes.TemplateRow + +
                                                            + +
                                                            +
                                                            + + + + +
                                                            + +

                                                            + Properties +

                                                            + + + + + + + + + + + + + + + + + +
                                                            + + + Public + itemStyle + + +
                                                            + Type : Partial<CSSStyleDeclaration> + +
                                                            + +
                                                            +

                                                            Computed grid style from input parameters

                                                            +
                                                            +
                                                            + + + + + + + + + + + + + + + + + +
                                                            + + + Public + parameter_list + + +
                                                            + Type : IDisplayGridParams + +
                                                            + +
                                                            +

                                                            Authoring parameters

                                                            +
                                                            +
                                                            +
                                                            + +
                                                            +

                                                            + Accessors +

                                                            + + + + + + + + + + + + + + + + + +
                                                            + + row +
                                                            + setrow(row: FlowTypes.TemplateRow) +
                                                            + +
                                                            + +
                                                            + Parameters : + + + + + + + + + + + + + + + + + + +
                                                            NameTypeOptional
                                                            row + FlowTypes.TemplateRow + + No +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + Returns : void + +
                                                            +
                                                            +
                                                            +
                                                            + + +
                                                            +
                                                            import { Component, Input } from "@angular/core";
                                                            +import { TemplateBaseComponent } from "../../base";
                                                            +import { FlowTypes, ITemplateRowProps } from "../../../models";
                                                            +
                                                            +interface IDisplayGridParams {
                                                            +  /**
                                                            +   * Item border outline style.
                                                            +   * Default: "solid"
                                                            +   */
                                                            +  item_border?: "solid" | "dashed" | "none";
                                                            +
                                                            +  /**
                                                            +   * Minimum item width, will increase to fit grid.
                                                            +   * Default '200px'
                                                            +   **/
                                                            +  item_width: string;
                                                            +  /**
                                                            +   * Maximum grid width, if specified will center items in available space.
                                                            +   * Default '100%'
                                                            +   **/
                                                            +  grid_width: string;
                                                            +  /**
                                                            +   * Spacing between grid items.
                                                            +   * Default '16px'
                                                            +   **/
                                                            +  grid_gap: string;
                                                            +}
                                                            +
                                                            +@Component({
                                                            +  selector: "plh-display-grid",
                                                            +  templateUrl: "./display-grid.component.html",
                                                            +  styleUrls: ["./display-grid.component.scss"],
                                                            +})
                                                            +export class TmplDisplayGridComponent extends TemplateBaseComponent implements ITemplateRowProps {
                                                            +  /**
                                                            +   * Computed grid style from input parameters
                                                            +   * @ignore
                                                            +   */
                                                            +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                            +  /**
                                                            +   * Computed grid style from input parameters
                                                            +   *
                                                            +   */
                                                            +  public itemStyle: Partial<CSSStyleDeclaration>;
                                                            +
                                                            +  /**
                                                            +   * Authoring parameters
                                                            +   */
                                                            +  public parameter_list: IDisplayGridParams;
                                                            +
                                                            +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                            +    this._row = row;
                                                            +    this.setParams();
                                                            +  }
                                                            +
                                                            +  private setParams() {
                                                            +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                            +    const { gridStyle, itemStyle } = this.generateStyles();
                                                            +    this.gridStyle = gridStyle;
                                                            +    this.itemStyle = itemStyle;
                                                            +  }
                                                            +
                                                            +  /**
                                                            +   * Create a list of styles to be passed into ngStyle for grid and item components
                                                            +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                            +   */
                                                            +  private generateStyles() {
                                                            +    const minItemWidth = this.parameter_list.item_width || "200px";
                                                            +    const maxGridWidth = this.parameter_list.grid_width || "100%";
                                                            +    const gridGap = this.parameter_list.grid_gap || "16px";
                                                            +    const borderStyle = this.parameter_list.item_border || "solid";
                                                            +
                                                            +    const gridStyle: Partial<CSSStyleDeclaration> = {
                                                            +      // center grid with maximum width
                                                            +      maxWidth: maxGridWidth,
                                                            +      margin: "auto",
                                                            +      // apply fixed gap between grid items
                                                            +      gap: gridGap,
                                                            +      // fit columns with target item width
                                                            +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                            +      // make all rows same height
                                                            +      gridAutoRows: "1fr",
                                                            +    };
                                                            +
                                                            +    const itemStyle: Partial<CSSStyleDeclaration> = {
                                                            +      // assign item border outline style
                                                            +      borderStyle,
                                                            +    };
                                                            +    return { gridStyle, itemStyle };
                                                            +  }
                                                            +}
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            <div class="display-grid" [ngStyle]="gridStyle">
                                                            +  <plh-template-component
                                                            +    *ngFor="let childRow of _row.rows; trackBy: trackByRow"
                                                            +    [row]="childRow"
                                                            +    [parent]="parent"
                                                            +    [attr.data-rowname]="_row.name"
                                                            +    class="grid-item"
                                                            +    [ngStyle]="itemStyle"
                                                            +  >
                                                            +  </plh-template-component>
                                                            +</div>
                                                            +
                                                            +
                                                            + +
                                                            +

                                                            + ./display-grid.component.scss +

                                                            +
                                                            $border: var(--ion-border-standard);
                                                            +$border-radius: var(--ion-border-radius-standard, 15px);
                                                            +
                                                            +.display-grid {
                                                            +  display: grid;
                                                            +}
                                                            +.grid-item {
                                                            +  border: $border;
                                                            +  border-radius: $border-radius;
                                                            +}
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            +
                                                            +
                                                            + Legend +
                                                            +
                                                            +
                                                            Html element +
                                                            +
                                                            +
                                                            Component +
                                                            +
                                                            +
                                                            Html element with directive +
                                                            +
                                                            +
                                                            + + +
                                                            + + + + + + + + + + + + + + + + + + + + + + + +
                                                            +
                                                            +

                                                            results matching ""

                                                            +
                                                              +
                                                              +
                                                              +

                                                              No results matching ""

                                                              +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplDisplayGroupComponent.html b/documentation/docs/generated/components/TmplDisplayGroupComponent.html new file mode 100644 index 0000000000..3f97e725f0 --- /dev/null +++ b/documentation/docs/generated/components/TmplDisplayGroupComponent.html @@ -0,0 +1,646 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                              +
                                                              + + +
                                                              +
                                                              + + + + + + + + +
                                                              +

                                                              +

                                                              File

                                                              +

                                                              +

                                                              + src/app/shared/components/template/components/layout/display_group.ts +

                                                              + + + +

                                                              +

                                                              Extends

                                                              +

                                                              +

                                                              + TemplateBaseComponent +

                                                              + +

                                                              +

                                                              Implements

                                                              +

                                                              +

                                                              + OnInit +

                                                              + + +
                                                              +

                                                              Metadata

                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              + +
                                                              +

                                                              Index

                                                              + + + + + + + + + + + + + + + + + + + + + +
                                                              +
                                                              Properties
                                                              +
                                                              + +
                                                              +
                                                              Methods
                                                              +
                                                              + +
                                                              +
                                                              + + + + + + +
                                                              + +

                                                              + Methods +

                                                              + + + + + + + + + + + + + + + + + + + +
                                                              + + + clickDisplayGroup + + +
                                                              +clickDisplayGroup() +
                                                              + +
                                                              + +
                                                              + Returns : void + +
                                                              +
                                                              + + + + + + + + + + + + + + + + + + + +
                                                              + + + getParams + + +
                                                              +getParams() +
                                                              + +
                                                              + +
                                                              + Returns : void + +
                                                              +
                                                              +
                                                              +
                                                              + +

                                                              + Properties +

                                                              + + + + + + + + + + + + + + +
                                                              + + + bgColor + + +
                                                              + Type : string + +
                                                              + +
                                                              + + + + + + + + + + + + + + + + + +
                                                              + + + params + + +
                                                              + Type : literal type + +
                                                              + Default value : {} as any +
                                                              + +
                                                              + + + + + + + + + + + + + + +
                                                              + + + type + + +
                                                              + Type : "form" | "dashed_box" | "default" + +
                                                              + +
                                                              +
                                                              + +
                                                              + + +
                                                              +
                                                              import { Component, OnInit } from "@angular/core";
                                                              +import { TemplateBaseComponent } from "../base";
                                                              +import { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from "../../../../utils";
                                                              +
                                                              +@Component({
                                                              +  selector: "plh-tmpl-display-group",
                                                              +  template: ` <div
                                                              +    (click)="clickDisplayGroup()"
                                                              +    class="display-group-wrapper"
                                                              +    [attr.data-param-style]="params.style"
                                                              +    [attr.data-rowname]="_row.name"
                                                              +    [style.marginBottom.px]="params.offset"
                                                              +    [ngSwitch]="type"
                                                              +    [style]="_row.style_list | styleList"
                                                              +  >
                                                              +    <!-- Default Layout -->
                                                              +    <ng-container *ngSwitchDefault>
                                                              +      <plh-template-component
                                                              +        *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                              +        [row]="childRow"
                                                              +        [parent]="parent"
                                                              +        [attr.data-rowname]="_row.name"
                                                              +      >
                                                              +      </plh-template-component>
                                                              +    </ng-container>
                                                              +    <!-- Dashed-box -->
                                                              +    <plh-advanced-dashed-box
                                                              +      *ngSwitchCase="'dashed_box'"
                                                              +      [inputRow]="_row"
                                                              +      [parent]="parent"
                                                              +      style="flex:1"
                                                              +    ></plh-advanced-dashed-box>
                                                              +    <!-- Form layout -->
                                                              +    <plh-tmpl-form *ngSwitchCase="'form'" [inputRow]="_row" [parent]="parent"></plh-tmpl-form>
                                                              +  </div>`,
                                                              +  styleUrls: ["../tmpl-components-common.scss", "./display_group.scss"],
                                                              +})
                                                              +export class TmplDisplayGroupComponent extends TemplateBaseComponent implements OnInit {
                                                              +  params: { style: string | null; offset: number } = {} as any;
                                                              +  bgColor: string;
                                                              +  type: "form" | "dashed_box" | "default";
                                                              +
                                                              +  ngOnInit() {
                                                              +    this.getParams();
                                                              +  }
                                                              +
                                                              +  clickDisplayGroup() {
                                                              +    this.triggerActions("click");
                                                              +  }
                                                              +
                                                              +  getParams() {
                                                              +    this.params.style = getStringParamFromTemplateRow(this._row, "style", "row");
                                                              +    this.params.offset = getNumberParamFromTemplateRow(this._row, "offset", 0);
                                                              +    this.type = this.getTypeFromStyles(this.params.style || "");
                                                              +  }
                                                              +
                                                              +  private getTypeFromStyles(styles: string) {
                                                              +    if (styles) {
                                                              +      if (styles.includes("form")) return "form";
                                                              +      if (styles.includes("dashed_box")) return "dashed_box";
                                                              +    }
                                                              +    return "default";
                                                              +  }
                                                              +}
                                                              +
                                                              +
                                                              + + +
                                                              +

                                                              + ../tmpl-components-common.scss +

                                                              +
                                                              @use "/src/theme/mixins.scss";
                                                              +
                                                              +.tmpl-video-container {
                                                              +  width: 100%;
                                                              +  display: flex;
                                                              +  justify-content: center;
                                                              +
                                                              +  video {
                                                              +    width: 100%;
                                                              +    max-width: var(--video-max-width);
                                                              +    border-radius: var(--ion-border-radius-secondary);
                                                              +  }
                                                              +}
                                                              +
                                                              +.left {
                                                              +  justify-content: start;
                                                              +}
                                                              +.right {
                                                              +  justify-content: flex-end;
                                                              +}
                                                              +.center {
                                                              +  justify-content: center;
                                                              +}
                                                              +.rounded_corners {
                                                              +  border-radius: var(--ion-border-radius-standard);
                                                              +
                                                              +  img {
                                                              +    border-radius: var(--ion-border-radius-standard);
                                                              +  }
                                                              +}
                                                              +.whiteText {
                                                              +  color: var(--ion-color-primary-contrast);
                                                              +}
                                                              +
                                                              +

                                                              + ./display_group.scss +

                                                              +
                                                              :host {
                                                              +  width: 100%;
                                                              +}
                                                              +.display-group-wrapper {
                                                              +  display: flex;
                                                              +  align-items: center;
                                                              +}
                                                              +/// In flex box components should try to fill height, but not width (leave to flex property)
                                                              +.display-group-wrapper > plh-template-component {
                                                              +  height: 100%;
                                                              +  width: unset;
                                                              +}
                                                              +/// In columns we want the opposite, so that width full but not necessarily height
                                                              +.display-group-wrapper[data-param-style~="column"] {
                                                              +  flex-direction: column;
                                                              +}
                                                              +.display-group-wrapper[data-param-style~="column"] > plh-template-component {
                                                              +  height: unset;
                                                              +  width: 100%;
                                                              +}
                                                              +.display-group-wrapper[data-param-style~="wrap"] {
                                                              +  flex-wrap: wrap;
                                                              +}
                                                              +
                                                              +// Default spacing within display groups. Adapted from `template-component.scss`
                                                              +.display-group-wrapper[data-param-style~="row"] > plh-template-component:not([data-hidden="true"]) {
                                                              +  margin: 0;
                                                              +}
                                                              +.display-group-wrapper[data-param-style~="row"]
                                                              +  > plh-template-component:not([data-hidden="true"])
                                                              +  ~ plh-template-component:not([data-hidden="true"]) {
                                                              +  margin: 0 0 0 1em;
                                                              +}
                                                              +
                                                              +.display-group-wrapper[data-param-style~="column"]
                                                              +  > plh-template-component:not([data-hidden="true"]) {
                                                              +  margin: 0;
                                                              +}
                                                              +.display-group-wrapper[data-param-style~="column"]
                                                              +  > plh-template-component:not([data-hidden="true"])
                                                              +  ~ plh-template-component:not([data-hidden="true"]) {
                                                              +  margin: 1em 0 0 0;
                                                              +}
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              +
                                                              + Legend +
                                                              +
                                                              +
                                                              Html element +
                                                              +
                                                              +
                                                              Component +
                                                              +
                                                              +
                                                              Html element with directive +
                                                              +
                                                              +
                                                              + + +
                                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                                              +
                                                              +

                                                              results matching ""

                                                              +
                                                                +
                                                                +
                                                                +

                                                                No results matching ""

                                                                +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplDrawerComponent.html b/documentation/docs/generated/components/TmplDrawerComponent.html new file mode 100644 index 0000000000..11e604de6b --- /dev/null +++ b/documentation/docs/generated/components/TmplDrawerComponent.html @@ -0,0 +1,610 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                +
                                                                + + +
                                                                +
                                                                + + + + + + + + +
                                                                +

                                                                +

                                                                File

                                                                +

                                                                +

                                                                + src/app/shared/components/template/components/drawer/drawer.component.ts +

                                                                + + + +

                                                                +

                                                                Extends

                                                                +

                                                                +

                                                                + TemplateBaseComponent +

                                                                + +

                                                                +

                                                                Implements

                                                                +

                                                                +

                                                                + OnInit +

                                                                + + +
                                                                +

                                                                Metadata

                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                + +
                                                                +

                                                                Index

                                                                + + + + + + + + + + + + + + + + + + + + + +
                                                                +
                                                                Properties
                                                                +
                                                                + +
                                                                +
                                                                Methods
                                                                +
                                                                + +
                                                                +
                                                                + + + + + + +
                                                                + +

                                                                + Methods +

                                                                + + + + + + + + + + + + + + + + + + + +
                                                                + + + getParams + + +
                                                                +getParams() +
                                                                + +
                                                                + +
                                                                + Returns : void + +
                                                                +
                                                                + + + + + + + + + + + + + + + + + + + +
                                                                + + + toggleDrawer + + +
                                                                +toggleDrawer() +
                                                                + +
                                                                + +
                                                                + Returns : void + +
                                                                +
                                                                +
                                                                +
                                                                + +

                                                                + Properties +

                                                                + + + + + + + + + + + + + + + + + +
                                                                + + + drawer + + +
                                                                + Type : ElementRef + +
                                                                + Decorators : +
                                                                + + @ViewChild('drawer')
                                                                +
                                                                +
                                                                + +
                                                                + + + + + + + + + + + + + + +
                                                                + + + isOpen + + +
                                                                + Default value : false +
                                                                + +
                                                                + + + + + + + + + + + + + + +
                                                                + + + style + + +
                                                                + Type : string + +
                                                                + +
                                                                +
                                                                + +
                                                                + + +
                                                                +
                                                                import { Component, ElementRef, ViewChild, OnInit } from "@angular/core";
                                                                +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                +import { TemplateBaseComponent } from "../base";
                                                                +
                                                                +@Component({
                                                                +  selector: "plh-drawer",
                                                                +  templateUrl: "./drawer.component.html",
                                                                +  styleUrls: ["./drawer.component.scss"],
                                                                +})
                                                                +export class TmplDrawerComponent extends TemplateBaseComponent implements OnInit {
                                                                +  @ViewChild("drawer") drawer: ElementRef;
                                                                +
                                                                +  isOpen = false;
                                                                +  style: string;
                                                                +
                                                                +  ngOnInit() {
                                                                +    this.getParams();
                                                                +  }
                                                                +
                                                                +  getParams() {
                                                                +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                                                                +  }
                                                                +
                                                                +  toggleDrawer() {
                                                                +    const drawer = this.drawer.nativeElement;
                                                                +    if (this.isOpen) {
                                                                +      drawer.style.transition = "transform .3s ease-out";
                                                                +      drawer.style.transform = "";
                                                                +      this.isOpen = false;
                                                                +    } else {
                                                                +      drawer.style.transition = "transform .3s ease-out";
                                                                +      drawer.style.transform = `translateY(${-this.getOpenHeight()}px)`;
                                                                +      this.isOpen = true;
                                                                +    }
                                                                +  }
                                                                +
                                                                +  private getOpenHeight() {
                                                                +    const drawer = this.drawer.nativeElement;
                                                                +    const handle = drawer.children[0];
                                                                +    return drawer.offsetHeight - handle.offsetHeight - 10;
                                                                +  }
                                                                +}
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                <div class="bottom-spacer"></div>
                                                                +<div [class]="'drawer ' + style" #drawer>
                                                                +  <div class="handle" (click)="toggleDrawer()">
                                                                +    <div class="handle-icon"></div>
                                                                +    <p>{{ _row.value }}</p>
                                                                +  </div>
                                                                +
                                                                +  <div class="content">
                                                                +    <plh-template-component
                                                                +      *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                                +      [row]="childRow"
                                                                +      [parent]="parent"
                                                                +      [attr.data-rowname]="_row.name"
                                                                +    >
                                                                +    </plh-template-component>
                                                                +  </div>
                                                                +</div>
                                                                +
                                                                +
                                                                + +
                                                                +

                                                                + ./drawer.component.scss +

                                                                +
                                                                @use "/src/theme/mixins";
                                                                +
                                                                +$navigation-bar-height: var(--navigation-bar-height);
                                                                +$handle-height: var(--drawer-handle-height);
                                                                +// The value of the property --min-height applied to ion-toolbar, not directly accessible
                                                                +$header-height: 56px;
                                                                +
                                                                +// Element to remain inline within scrollable content to ensure no content lost behind drawer handle
                                                                +.bottom-spacer {
                                                                +  width: 100%;
                                                                +  height: $handle-height;
                                                                +}
                                                                +
                                                                +.drawer {
                                                                +  position: fixed;
                                                                +  top: calc(100vh - $header-height - $navigation-bar-height - $handle-height);
                                                                +  left: 0px;
                                                                +  width: 100%;
                                                                +  border-style: solid solid none solid;
                                                                +  border-color: var(--ion-color-primary);
                                                                +  border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0;
                                                                +  background-color: var(--ion-background-color);
                                                                +  z-index: 100;
                                                                +
                                                                +  &.secondary {
                                                                +    background-color: var(--ion-color-secondary);
                                                                +    border: none;
                                                                +    .handle {
                                                                +      &:active {
                                                                +        background-color: var(--ion-color-secondary-600);
                                                                +      }
                                                                +      p {
                                                                +        color: white;
                                                                +      }
                                                                +      .handle-icon {
                                                                +        background-color: white;
                                                                +      }
                                                                +    }
                                                                +  }
                                                                +
                                                                +  .handle {
                                                                +    height: $handle-height;
                                                                +    @include mixins.flex-centered;
                                                                +    flex-direction: column;
                                                                +    border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0;
                                                                +    p {
                                                                +      text-align: center;
                                                                +      font-weight: var(--font-weight-bold);
                                                                +      font-size: var(--font-size-subtitle-small);
                                                                +      color: var(--ion-color-primary);
                                                                +      margin: 0px;
                                                                +    }
                                                                +    .handle-icon {
                                                                +      width: 50px;
                                                                +      height: 2px;
                                                                +      margin: 8px 0;
                                                                +      background-color: var(--ion-color-primary);
                                                                +    }
                                                                +    &:active {
                                                                +      background-color: var(--ion-color-gray-100);
                                                                +    }
                                                                +  }
                                                                +
                                                                +  .content {
                                                                +    padding: var(--regular-padding) var(--regular-padding) 30px;
                                                                +  }
                                                                +}
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                +
                                                                +
                                                                + Legend +
                                                                +
                                                                +
                                                                Html element +
                                                                +
                                                                +
                                                                Component +
                                                                +
                                                                +
                                                                Html element with directive +
                                                                +
                                                                +
                                                                + + +
                                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                                +
                                                                +

                                                                results matching ""

                                                                +
                                                                  +
                                                                  +
                                                                  +

                                                                  No results matching ""

                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplHelpIconComponent.html b/documentation/docs/generated/components/TmplHelpIconComponent.html new file mode 100644 index 0000000000..47851f3654 --- /dev/null +++ b/documentation/docs/generated/components/TmplHelpIconComponent.html @@ -0,0 +1,449 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + + + + + + + +
                                                                  +

                                                                  +

                                                                  File

                                                                  +

                                                                  +

                                                                  + src/app/shared/components/template/components/help-icon.ts +

                                                                  + + + +

                                                                  +

                                                                  Extends

                                                                  +

                                                                  +

                                                                  + TemplateBaseComponent +

                                                                  + +

                                                                  +

                                                                  Implements

                                                                  +

                                                                  +

                                                                  + OnInit +

                                                                  + + +
                                                                  +

                                                                  Metadata

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + +
                                                                  +

                                                                  Index

                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                  +
                                                                  Properties
                                                                  +
                                                                  + +
                                                                  +
                                                                  Methods
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Constructor

                                                                  + + + + + + + + + + +
                                                                  +constructor() +
                                                                  + +
                                                                  +
                                                                  + + + + + +
                                                                  + +

                                                                  + Methods +

                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                  + + + getParams + + +
                                                                  +getParams() +
                                                                  + +
                                                                  + +
                                                                  + Returns : void + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +

                                                                  + Properties +

                                                                  + + + + + + + + + + + + + + +
                                                                  + + + Public + icon_src + + +
                                                                  + Type : string | null + +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  + + +
                                                                  +
                                                                  import { Component, OnInit } from "@angular/core";
                                                                  +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                  +import { TemplateBaseComponent } from "./base";
                                                                  +
                                                                  +@Component({
                                                                  +  selector: "plh-tmpl-help-icon",
                                                                  +  template: ` <div (click)="triggerActions('click')" class="wrapper-icon">
                                                                  +    <ion-icon [name]="icon_src"></ion-icon>
                                                                  +  </div>`,
                                                                  +  styles: [
                                                                  +    `
                                                                  +      .wrapper-icon {
                                                                  +        margin-top: var(--regular-margin);
                                                                  +        height: 100%;
                                                                  +      }
                                                                  +      ion-icon {
                                                                  +        width: 40px;
                                                                  +        height: 40px;
                                                                  +        --ionicon-stroke-width: 10px;
                                                                  +      }
                                                                  +    `,
                                                                  +  ],
                                                                  +})
                                                                  +export class TmplHelpIconComponent extends TemplateBaseComponent implements OnInit {
                                                                  +  public icon_src: string | null;
                                                                  +
                                                                  +  constructor() {
                                                                  +    super();
                                                                  +  }
                                                                  +
                                                                  +  ngOnInit() {
                                                                  +    this.getParams();
                                                                  +  }
                                                                  +
                                                                  +  getParams() {
                                                                  +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", "help-circle-outline");
                                                                  +  }
                                                                  +}
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  
                                                                  +      .wrapper-icon {
                                                                  +        margin-top: var(--regular-margin);
                                                                  +        height: 100%;
                                                                  +      }
                                                                  +      ion-icon {
                                                                  +        width: 40px;
                                                                  +        height: 40px;
                                                                  +        --ionicon-stroke-width: 10px;
                                                                  +      }
                                                                  +    
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + Legend +
                                                                  +
                                                                  +
                                                                  Html element +
                                                                  +
                                                                  +
                                                                  Component +
                                                                  +
                                                                  +
                                                                  Html element with directive +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  +
                                                                  +

                                                                  results matching ""

                                                                  +
                                                                    +
                                                                    +
                                                                    +

                                                                    No results matching ""

                                                                    +
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplIconBannerComponent.html b/documentation/docs/generated/components/TmplIconBannerComponent.html new file mode 100644 index 0000000000..4b82ce85f2 --- /dev/null +++ b/documentation/docs/generated/components/TmplIconBannerComponent.html @@ -0,0 +1,573 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    + + + + + + + + +
                                                                    +

                                                                    +

                                                                    File

                                                                    +

                                                                    +

                                                                    + src/app/shared/components/template/components/icon-banner/icon-banner.component.ts +

                                                                    + + + +

                                                                    +

                                                                    Extends

                                                                    +

                                                                    +

                                                                    + TemplateBaseComponent +

                                                                    + +

                                                                    +

                                                                    Implements

                                                                    +

                                                                    +

                                                                    + ITemplateRowProps + OnInit +

                                                                    + + +
                                                                    +

                                                                    Metadata

                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                    + +
                                                                    +

                                                                    Index

                                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                                    +
                                                                    Properties
                                                                    +
                                                                    + +
                                                                    +
                                                                    Methods
                                                                    +
                                                                    + +
                                                                    +
                                                                    + +
                                                                    +

                                                                    Constructor

                                                                    + + + + + + + + + + +
                                                                    +constructor() +
                                                                    + +
                                                                    +
                                                                    + + + + + +
                                                                    + +

                                                                    + Methods +

                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                    + + + getParams + + +
                                                                    +getParams() +
                                                                    + +
                                                                    + +
                                                                    + Returns : void + +
                                                                    +
                                                                    +
                                                                    +
                                                                    + +

                                                                    + Properties +

                                                                    + + + + + + + + + + + + + + +
                                                                    + + + image_src + + +
                                                                    + Type : string | null + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + style + + +
                                                                    + Type : string | null + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + text + + +
                                                                    + Type : string | null + +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + + title + + +
                                                                    + Type : string | null + +
                                                                    + +
                                                                    +
                                                                    + +
                                                                    + + +
                                                                    +
                                                                    import { Component, OnInit } from "@angular/core";
                                                                    +import { TemplateBaseComponent } from "../base";
                                                                    +import { ITemplateRowProps } from "../../models";
                                                                    +import { getStringParamFromTemplateRow } from "../../../../utils";
                                                                    +
                                                                    +@Component({
                                                                    +  selector: "plh-icon-banner",
                                                                    +  templateUrl: "./icon-banner.component.html",
                                                                    +  styleUrls: ["./icon-banner.component.scss"],
                                                                    +})
                                                                    +export class TmplIconBannerComponent
                                                                    +  extends TemplateBaseComponent
                                                                    +  implements ITemplateRowProps, OnInit
                                                                    +{
                                                                    +  image_src: string | null;
                                                                    +  title: string | null;
                                                                    +  text: string | null;
                                                                    +  style: string | null;
                                                                    +  constructor() {
                                                                    +    super();
                                                                    +  }
                                                                    +
                                                                    +  ngOnInit() {
                                                                    +    this.getParams();
                                                                    +  }
                                                                    +
                                                                    +  getParams() {
                                                                    +    this.image_src = getStringParamFromTemplateRow(this._row, "image_src", null);
                                                                    +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
                                                                    +    this.text = getStringParamFromTemplateRow(this._row, "text", null);
                                                                    +    this.style = getStringParamFromTemplateRow(this._row, "style", "primary");
                                                                    +  }
                                                                    +}
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    <div class="icon-banner-wrapper" [class]="style">
                                                                    +  <div class="title">
                                                                    +    {{ title }}
                                                                    +  </div>
                                                                    +  <div class="text">
                                                                    +    {{ text }}
                                                                    +  </div>
                                                                    +  <div class="image" *ngIf="image_src">
                                                                    +    <img [src]="image_src | plhAsset" alt="" />
                                                                    +  </div>
                                                                    +</div>
                                                                    +
                                                                    +
                                                                    + +
                                                                    +

                                                                    + ./icon-banner.component.scss +

                                                                    +
                                                                    @use "/src/theme/mixins";
                                                                    +
                                                                    +.icon-banner-wrapper {
                                                                    +  width: 373px;
                                                                    +  min-height: 70px;
                                                                    +  box-shadow: var(--ion-default-box-shadow);
                                                                    +  border-radius: var(--ion-border-radius-secondary);
                                                                    +  padding: 25px 39px 25px 25px;
                                                                    +  margin: 5px auto;
                                                                    +  position: relative;
                                                                    +  .title,
                                                                    +  .text {
                                                                    +    font-size: 19px;
                                                                    +    line-height: 22px;
                                                                    +    color: var(--ion-color-primary-contrast);
                                                                    +  }
                                                                    +  .title {
                                                                    +    font-weight: 700;
                                                                    +    margin-bottom: 10px;
                                                                    +  }
                                                                    +  .image {
                                                                    +    @include mixins.flex-centered;
                                                                    +    width: 73px;
                                                                    +    height: 73px;
                                                                    +    background: var(--ion-color-primary-contrast);
                                                                    +    border-radius: 50%;
                                                                    +    position: absolute;
                                                                    +    right: -6px;
                                                                    +    padding: 5px;
                                                                    +    top: -11px;
                                                                    +    img {
                                                                    +      width: 100%;
                                                                    +      height: 100%;
                                                                    +    }
                                                                    +  }
                                                                    +}
                                                                    +.primary {
                                                                    +  background: #0f8ab2;
                                                                    +}
                                                                    +.secondary {
                                                                    +  background: #ffcc03;
                                                                    +}
                                                                    +.red {
                                                                    +  background: #ff7a00;
                                                                    +}
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    + Legend +
                                                                    +
                                                                    +
                                                                    Html element +
                                                                    +
                                                                    +
                                                                    Component +
                                                                    +
                                                                    +
                                                                    Html element with directive +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                                                    +
                                                                    +

                                                                    results matching ""

                                                                    +
                                                                      +
                                                                      +
                                                                      +

                                                                      No results matching ""

                                                                      +
                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplImageComponent.html b/documentation/docs/generated/components/TmplImageComponent.html new file mode 100644 index 0000000000..0076a2a11b --- /dev/null +++ b/documentation/docs/generated/components/TmplImageComponent.html @@ -0,0 +1,433 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + + + + + + +
                                                                      +

                                                                      +

                                                                      File

                                                                      +

                                                                      +

                                                                      + src/app/shared/components/template/components/image.ts +

                                                                      + + + +

                                                                      +

                                                                      Extends

                                                                      +

                                                                      +

                                                                      + TemplateBaseComponent +

                                                                      + +

                                                                      +

                                                                      Implements

                                                                      +

                                                                      +

                                                                      + OnInit +

                                                                      + + +
                                                                      +

                                                                      Metadata

                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      + +
                                                                      +

                                                                      Index

                                                                      + + + + + + + + + + + + + + + +
                                                                      +
                                                                      Properties
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + + + + + +
                                                                      + +

                                                                      + Properties +

                                                                      + + + + + + + + + + + + + + +
                                                                      + + + style + + +
                                                                      + Default value : null +
                                                                      + +
                                                                      +
                                                                      + +
                                                                      + + +
                                                                      +
                                                                      import { Component, OnInit } from "@angular/core";
                                                                      +import { TemplateBaseComponent } from "./base";
                                                                      +import { getStringParamFromTemplateRow } from "../../../utils";
                                                                      +
                                                                      +@Component({
                                                                      +  selector: "plh-tmpl-image",
                                                                      +  template: `
                                                                      +    <div class="tmpl-image-container" [class]="style" [attr.data-param-style]="style">
                                                                      +      <img *ngIf="_row.value" [src]="_row.value | plhAsset" />
                                                                      +    </div>
                                                                      +  `,
                                                                      +  styleUrls: ["./tmpl-components-common.scss"],
                                                                      +  styles: [
                                                                      +    `
                                                                      +      :host {
                                                                      +        display: contents;
                                                                      +      }
                                                                      +      img {
                                                                      +        width: 100%;
                                                                      +        height: 100%;
                                                                      +        object-fit: contain;
                                                                      +        padding: var(--tiny-padding);
                                                                      +      }
                                                                      +      img[data-param-style~="no-padding"] {
                                                                      +        padding: 0;
                                                                      +      }
                                                                      +      .tmpl-image-container {
                                                                      +        width: 100%;
                                                                      +        height: 100%;
                                                                      +      }
                                                                      +    `,
                                                                      +  ],
                                                                      +})
                                                                      +export class TmplImageComponent extends TemplateBaseComponent implements OnInit {
                                                                      +  style: "no-padding" = null;
                                                                      +
                                                                      +  ngOnInit() {
                                                                      +    if (this._row && this._row.parameter_list) {
                                                                      +      this.style = getStringParamFromTemplateRow(this._row, "style", null) as any;
                                                                      +    }
                                                                      +  }
                                                                      +}
                                                                      +
                                                                      +
                                                                      + + +
                                                                      +

                                                                      + ./tmpl-components-common.scss +

                                                                      +
                                                                      @use "/src/theme/mixins.scss";
                                                                      +
                                                                      +.tmpl-video-container {
                                                                      +  width: 100%;
                                                                      +  display: flex;
                                                                      +  justify-content: center;
                                                                      +
                                                                      +  video {
                                                                      +    width: 100%;
                                                                      +    max-width: var(--video-max-width);
                                                                      +    border-radius: var(--ion-border-radius-secondary);
                                                                      +  }
                                                                      +}
                                                                      +
                                                                      +.left {
                                                                      +  justify-content: start;
                                                                      +}
                                                                      +.right {
                                                                      +  justify-content: flex-end;
                                                                      +}
                                                                      +.center {
                                                                      +  justify-content: center;
                                                                      +}
                                                                      +.rounded_corners {
                                                                      +  border-radius: var(--ion-border-radius-standard);
                                                                      +
                                                                      +  img {
                                                                      +    border-radius: var(--ion-border-radius-standard);
                                                                      +  }
                                                                      +}
                                                                      +.whiteText {
                                                                      +  color: var(--ion-color-primary-contrast);
                                                                      +}
                                                                      +
                                                                      +
                                                                      
                                                                      +      :host {
                                                                      +        display: contents;
                                                                      +      }
                                                                      +      img {
                                                                      +        width: 100%;
                                                                      +        height: 100%;
                                                                      +        object-fit: contain;
                                                                      +        padding: var(--tiny-padding);
                                                                      +      }
                                                                      +      img[data-param-style~="no-padding"] {
                                                                      +        padding: 0;
                                                                      +      }
                                                                      +      .tmpl-image-container {
                                                                      +        width: 100%;
                                                                      +        height: 100%;
                                                                      +      }
                                                                      +    
                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      +
                                                                      +
                                                                      + Legend +
                                                                      +
                                                                      +
                                                                      Html element +
                                                                      +
                                                                      +
                                                                      Component +
                                                                      +
                                                                      +
                                                                      Html element with directive +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      +
                                                                      +

                                                                      results matching ""

                                                                      +
                                                                        +
                                                                        +
                                                                        +

                                                                        No results matching ""

                                                                        +
                                                                        +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplLatexComponent.html b/documentation/docs/generated/components/TmplLatexComponent.html new file mode 100644 index 0000000000..07c8a12e44 --- /dev/null +++ b/documentation/docs/generated/components/TmplLatexComponent.html @@ -0,0 +1,247 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        + + + + + + + + +
                                                                        +

                                                                        +

                                                                        File

                                                                        +

                                                                        +

                                                                        + src/app/shared/components/template/components/latex/latex.component.ts +

                                                                        + + + +

                                                                        +

                                                                        Extends

                                                                        +

                                                                        +

                                                                        + TemplateBaseComponent +

                                                                        + + + +
                                                                        +

                                                                        Metadata

                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                        + + + + + + + + + +
                                                                        + + +
                                                                        +
                                                                        import { Component, OnInit } from "@angular/core";
                                                                        +import { TemplateBaseComponent } from "src/app/shared/components/template/components/base";
                                                                        +
                                                                        +@Component({
                                                                        +  selector: "template-latex-component",
                                                                        +  template: ` <span [innerHTML]="this._row.value | latex"> </span> `,
                                                                        +})
                                                                        +/** Render text that includes LaTeX equations **/
                                                                        +export class TmplLatexComponent extends TemplateBaseComponent {}
                                                                        +
                                                                        +
                                                                        + + + +
                                                                        +
                                                                        +
                                                                        +
                                                                        + Legend +
                                                                        +
                                                                        +
                                                                        Html element +
                                                                        +
                                                                        +
                                                                        Component +
                                                                        +
                                                                        +
                                                                        Html element with directive +
                                                                        +
                                                                        +
                                                                        + + +
                                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                                        +
                                                                        +

                                                                        results matching ""

                                                                        +
                                                                          +
                                                                          +
                                                                          +

                                                                          No results matching ""

                                                                          +
                                                                          +
                                                                          +
                                                                          + +
                                                                          +
                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplLottieAnimation.html b/documentation/docs/generated/components/TmplLottieAnimation.html new file mode 100644 index 0000000000..36070a1f60 --- /dev/null +++ b/documentation/docs/generated/components/TmplLottieAnimation.html @@ -0,0 +1,611 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                          +
                                                                          + + +
                                                                          +
                                                                          + + + + + + + + +
                                                                          +

                                                                          +

                                                                          File

                                                                          +

                                                                          +

                                                                          + src/app/shared/components/template/components/lottie-animation.ts +

                                                                          + + + +

                                                                          +

                                                                          Extends

                                                                          +

                                                                          +

                                                                          + TemplateBaseComponent +

                                                                          + +

                                                                          +

                                                                          Implements

                                                                          +

                                                                          +

                                                                          + OnInit +

                                                                          + + +
                                                                          +

                                                                          Metadata

                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                          + +
                                                                          +

                                                                          Index

                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                          +
                                                                          Properties
                                                                          +
                                                                          + +
                                                                          +
                                                                          Inputs
                                                                          +
                                                                          + +
                                                                          +
                                                                          Accessors
                                                                          +
                                                                          + +
                                                                          +
                                                                          + +
                                                                          +

                                                                          Constructor

                                                                          + + + + + + + + + + + + + +
                                                                          +constructor(templateAssetService: TemplateAssetService) +
                                                                          + +
                                                                          +
                                                                          + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                          NameTypeOptional
                                                                          templateAssetService + TemplateAssetService + + No +
                                                                          +
                                                                          +
                                                                          +
                                                                          + +
                                                                          +

                                                                          Inputs

                                                                          + + + + + + + + + + + + +
                                                                          + + row +
                                                                          + Type : FlowTypes.TemplateRow + +
                                                                          + +
                                                                          +
                                                                          + + + + +
                                                                          + +

                                                                          + Properties +

                                                                          + + + + + + + + + + + + + + +
                                                                          + + + animOptions + + +
                                                                          + Type : AnimationOptions + +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + + style + + +
                                                                          + Type : string + +
                                                                          + +
                                                                          +
                                                                          + +
                                                                          +

                                                                          + Accessors +

                                                                          + + + + + + + + + + + + + + + + + +
                                                                          + + row +
                                                                          + setrow(r: FlowTypes.TemplateRow) +
                                                                          + +
                                                                          + +
                                                                          + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                          NameTypeOptional
                                                                          r + FlowTypes.TemplateRow + + No +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          + Returns : void + +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + +
                                                                          +
                                                                          import { Component, Input, OnInit } from "@angular/core";
                                                                          +import { FlowTypes } from "data-models";
                                                                          +import { TemplateBaseComponent } from "./base";
                                                                          +import { getStringParamFromTemplateRow } from "../../../utils";
                                                                          +import { AnimationOptions } from "ngx-lottie";
                                                                          +import { TemplateAssetService } from "../services/template-asset.service";
                                                                          +
                                                                          +@Component({
                                                                          +  selector: "plh-tmpl-lottie-animation",
                                                                          +  template: `
                                                                          +    <div class="tmpl-lottie-anim-container" [class]="style">
                                                                          +      <ng-lottie *ngIf="animOptions" [options]="animOptions"></ng-lottie>
                                                                          +    </div>
                                                                          +  `,
                                                                          +  styleUrls: ["./tmpl-components-common.scss"],
                                                                          +  styles: [
                                                                          +    `
                                                                          +      :host {
                                                                          +        width: 100%;
                                                                          +      }
                                                                          +    `,
                                                                          +  ],
                                                                          +})
                                                                          +export class TmplLottieAnimation extends TemplateBaseComponent implements OnInit {
                                                                          +  style: string;
                                                                          +  animOptions: AnimationOptions;
                                                                          +
                                                                          +  constructor(private templateAssetService: TemplateAssetService) {
                                                                          +    super();
                                                                          +  }
                                                                          +
                                                                          +  @Input() set row(r: FlowTypes.TemplateRow) {
                                                                          +    this.loadAnimation(r);
                                                                          +  }
                                                                          +
                                                                          +  private loadAnimation(r: FlowTypes.TemplateRow) {
                                                                          +    // Loop by default
                                                                          +    const loop = r?.parameter_list?.loop === "false" ? false : true;
                                                                          +    if (r.value) {
                                                                          +      const path = this.templateAssetService.getTranslatedAssetPath(r.value);
                                                                          +      this.animOptions = {
                                                                          +        path,
                                                                          +        loop,
                                                                          +      };
                                                                          +    }
                                                                          +  }
                                                                          +
                                                                          +  ngOnInit() {
                                                                          +    if (this._row && this._row.parameter_list) {
                                                                          +      this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                                          +    }
                                                                          +  }
                                                                          +}
                                                                          +
                                                                          +
                                                                          + + +
                                                                          +

                                                                          + ./tmpl-components-common.scss +

                                                                          +
                                                                          @use "/src/theme/mixins.scss";
                                                                          +
                                                                          +.tmpl-video-container {
                                                                          +  width: 100%;
                                                                          +  display: flex;
                                                                          +  justify-content: center;
                                                                          +
                                                                          +  video {
                                                                          +    width: 100%;
                                                                          +    max-width: var(--video-max-width);
                                                                          +    border-radius: var(--ion-border-radius-secondary);
                                                                          +  }
                                                                          +}
                                                                          +
                                                                          +.left {
                                                                          +  justify-content: start;
                                                                          +}
                                                                          +.right {
                                                                          +  justify-content: flex-end;
                                                                          +}
                                                                          +.center {
                                                                          +  justify-content: center;
                                                                          +}
                                                                          +.rounded_corners {
                                                                          +  border-radius: var(--ion-border-radius-standard);
                                                                          +
                                                                          +  img {
                                                                          +    border-radius: var(--ion-border-radius-standard);
                                                                          +  }
                                                                          +}
                                                                          +.whiteText {
                                                                          +  color: var(--ion-color-primary-contrast);
                                                                          +}
                                                                          +
                                                                          +
                                                                          
                                                                          +      :host {
                                                                          +        width: 100%;
                                                                          +      }
                                                                          +    
                                                                          +
                                                                          +
                                                                          + +
                                                                          +
                                                                          +
                                                                          +
                                                                          + Legend +
                                                                          +
                                                                          +
                                                                          Html element +
                                                                          +
                                                                          +
                                                                          Component +
                                                                          +
                                                                          +
                                                                          Html element with directive +
                                                                          +
                                                                          +
                                                                          + + +
                                                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                                                          +
                                                                          +

                                                                          results matching ""

                                                                          +
                                                                            +
                                                                            +
                                                                            +

                                                                            No results matching ""

                                                                            +
                                                                            +
                                                                            +
                                                                            + +
                                                                            +
                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplNavigationBarComponent.html b/documentation/docs/generated/components/TmplNavigationBarComponent.html new file mode 100644 index 0000000000..17184632b7 --- /dev/null +++ b/documentation/docs/generated/components/TmplNavigationBarComponent.html @@ -0,0 +1,458 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                            +
                                                                            + + +
                                                                            +
                                                                            + + + + + + + + +
                                                                            +

                                                                            +

                                                                            File

                                                                            +

                                                                            +

                                                                            + src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts +

                                                                            + + + +

                                                                            +

                                                                            Extends

                                                                            +

                                                                            +

                                                                            + TemplateBaseComponent +

                                                                            + +

                                                                            +

                                                                            Implements

                                                                            +

                                                                            +

                                                                            + OnInit +

                                                                            + + +
                                                                            +

                                                                            Metadata

                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                            + +
                                                                            +

                                                                            Index

                                                                            + + + + + + + + + + + + + + + + + + + + + +
                                                                            +
                                                                            Properties
                                                                            +
                                                                            + +
                                                                            +
                                                                            Methods
                                                                            +
                                                                            + +
                                                                            +
                                                                            + + + + + + +
                                                                            + +

                                                                            + Methods +

                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                            + + + getParams + + +
                                                                            +getParams() +
                                                                            + +
                                                                            + +
                                                                            + Returns : void + +
                                                                            +
                                                                            +
                                                                            +
                                                                            + +

                                                                            + Properties +

                                                                            + + + + + + + + + + + + + + +
                                                                            + + + buttonList + + +
                                                                            + Type : IButton[] + +
                                                                            + +
                                                                            +
                                                                            + +
                                                                            + + +
                                                                            +
                                                                            import { Component, OnInit } from "@angular/core";
                                                                            +import { TemplateBaseComponent } from "../base";
                                                                            +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                            +import { parseValueListItems } from "../../utils";
                                                                            +
                                                                            +interface IButton {
                                                                            +  image: string | null;
                                                                            +  text: string | null;
                                                                            +  target_template: string | null;
                                                                            +  name: string | null;
                                                                            +}
                                                                            +
                                                                            +@Component({
                                                                            +  selector: "plh-navigation-bar",
                                                                            +  templateUrl: "./navigation-bar.component.html",
                                                                            +  styleUrls: ["./navigation-bar.component.scss"],
                                                                            +})
                                                                            +export class TmplNavigationBarComponent extends TemplateBaseComponent implements OnInit {
                                                                            +  buttonList: IButton[];
                                                                            +
                                                                            +  ngOnInit() {
                                                                            +    this.getParams();
                                                                            +  }
                                                                            +
                                                                            +  getParams() {
                                                                            +    const buttonListRaw: string[] = getParamFromTemplateRow(this._row, "button_list", []);
                                                                            +    this.buttonList = parseValueListItems(buttonListRaw);
                                                                            +  }
                                                                            +}
                                                                            +
                                                                            +
                                                                            + +
                                                                            +
                                                                            <div class="navigation-bar-wrapper">
                                                                            +  <a
                                                                            +    *ngFor="let button of buttonList"
                                                                            +    class="button-wrapper"
                                                                            +    routerLinkActive="active-link"
                                                                            +    [routerLink]="'template/' + button.target_template"
                                                                            +    [attr.data-name]="button.name"
                                                                            +  >
                                                                            +    <div class="image-wrapper">
                                                                            +      <img [src]="button.image | plhAsset" />
                                                                            +    </div>
                                                                            +    <p>{{ button.text }}</p>
                                                                            +  </a>
                                                                            +</div>
                                                                            +
                                                                            +
                                                                            + +
                                                                            +

                                                                            + ./navigation-bar.component.scss +

                                                                            +
                                                                            @use "src/theme/mixins";
                                                                            +
                                                                            +$navigation-bar-height: var(--navigation-bar-height);
                                                                            +
                                                                            +.navigation-bar-wrapper {
                                                                            +  @include mixins.flex-space-between;
                                                                            +  height: $navigation-bar-height;
                                                                            +  padding: var(--tiny-margin) var(--tiny-margin);
                                                                            +
                                                                            +  .button-wrapper {
                                                                            +    @include mixins.flex-centered;
                                                                            +    flex-direction: column;
                                                                            +    height: 80%;
                                                                            +    width: 30%;
                                                                            +    opacity: 50%;
                                                                            +    &.active-link {
                                                                            +      opacity: 100%;
                                                                            +    }
                                                                            +
                                                                            +    .image-wrapper {
                                                                            +      @include mixins.flex-centered;
                                                                            +      height: 50%;
                                                                            +      width: 80%;
                                                                            +
                                                                            +      img {
                                                                            +        height: 100%;
                                                                            +      }
                                                                            +    }
                                                                            +
                                                                            +    p {
                                                                            +      color: var(--ion-color-primary-contrast);
                                                                            +      text-align: center;
                                                                            +      font-size: var(--font-size-text-tiny);
                                                                            +      margin-bottom: 0;
                                                                            +    }
                                                                            +  }
                                                                            +}
                                                                            +
                                                                            +
                                                                            + +
                                                                            +
                                                                            +
                                                                            +
                                                                            + Legend +
                                                                            +
                                                                            +
                                                                            Html element +
                                                                            +
                                                                            +
                                                                            Component +
                                                                            +
                                                                            +
                                                                            Html element with directive +
                                                                            +
                                                                            +
                                                                            + + +
                                                                            + + + + + + + + + + + + + + + + + + + + + + + +
                                                                            +
                                                                            +

                                                                            results matching ""

                                                                            +
                                                                              +
                                                                              +
                                                                              +

                                                                              No results matching ""

                                                                              +
                                                                              +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplNumberComponent.html b/documentation/docs/generated/components/TmplNumberComponent.html new file mode 100644 index 0000000000..5e055a6128 --- /dev/null +++ b/documentation/docs/generated/components/TmplNumberComponent.html @@ -0,0 +1,1187 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                              +
                                                                              + + +
                                                                              +
                                                                              + + + + + + + + +
                                                                              +

                                                                              +

                                                                              File

                                                                              +

                                                                              +

                                                                              + src/app/shared/components/template/components/number-selector/number-selector.component.ts +

                                                                              + + + +

                                                                              +

                                                                              Extends

                                                                              +

                                                                              +

                                                                              + TemplateBaseComponent +

                                                                              + +

                                                                              +

                                                                              Implements

                                                                              +

                                                                              +

                                                                              + ITemplateRowProps + OnInit +

                                                                              + + +
                                                                              +

                                                                              Metadata

                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              + +
                                                                              +

                                                                              Index

                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              +
                                                                              Properties
                                                                              +
                                                                              + +
                                                                              +
                                                                              Methods
                                                                              +
                                                                              + +
                                                                              +
                                                                              Inputs
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + +
                                                                              +

                                                                              Inputs

                                                                              + + + + + + + + + + + + +
                                                                              + + parent +
                                                                              + Type : TemplateContainerComponent + +
                                                                              + +
                                                                              +
                                                                              + + + +
                                                                              + +

                                                                              + Methods +

                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                              + + + checkIfContainsNextArrayItem + + +
                                                                              +checkIfContainsNextArrayItem(array: string[], expression: "gt" | "lt") +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              array + string[] + + No +
                                                                              expression + "gt" | "lt" + + No +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + Returns : boolean + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                              + + + getMinOrMaxFromCategoryListItem + + +
                                                                              +getMinOrMaxFromCategoryListItem(item: string) +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              item + string + + No +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + Returns : ICategoryList + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                              + + + getParams + + +
                                                                              +getParams() +
                                                                              + +
                                                                              + +
                                                                              + Returns : void + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                              + + + Async + increment + + +
                                                                              + + increment(param: "gt" | "lt") +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              param + "gt" | "lt" + + No +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + Returns : any + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                              + + + updateData + + +
                                                                              +updateData(param: "gt" | "lt") +
                                                                              + +
                                                                              + +
                                                                              + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                              NameTypeOptional
                                                                              param + "gt" | "lt" + + No +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + Returns : void + +
                                                                              +
                                                                              + +
                                                                              +
                                                                              +
                                                                              +
                                                                              + +

                                                                              + Properties +

                                                                              + + + + + + + + + + + + + + +
                                                                              + + + category_list + + +
                                                                              + Type : string[] + +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + + category_size + + +
                                                                              + Type : number + +
                                                                              + +
                                                                              + + + + + + + + + + + + + + + + + +
                                                                              + + + displayValue + + +
                                                                              + Type : any + +
                                                                              + Default value : 0 +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + + first_display_term + + +
                                                                              + Type : number + +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + + height + + +
                                                                              + Type : string + +
                                                                              + +
                                                                              + + + + + + + + + + + + + + + + + +
                                                                              + + + max_value + + +
                                                                              + Type : number | null + +
                                                                              + Default value : 0 +
                                                                              + +
                                                                              + + + + + + + + + + + + + + + + + +
                                                                              + + + min_value + + +
                                                                              + Type : number | null + +
                                                                              + Default value : 0 +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + + title + + +
                                                                              + Type : string | null + +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + + valuesFromCategoryList + + +
                                                                              + Type : string[] + +
                                                                              + +
                                                                              +
                                                                              + +
                                                                              + + +
                                                                              +
                                                                              import { Component, Input, OnInit } from "@angular/core";
                                                                              +import { FlowTypes } from "../../../../model";
                                                                              +import {
                                                                              +  getNumberParamFromTemplateRow,
                                                                              +  getStringParamFromTemplateRow,
                                                                              +  getParamFromTemplateRow,
                                                                              +} from "src/app/shared/utils";
                                                                              +import { ITemplateRowProps } from "../../models";
                                                                              +import { TemplateBaseComponent } from "../base";
                                                                              +import { TemplateContainerComponent } from "../../template-container.component";
                                                                              +
                                                                              +interface ICategoryList {
                                                                              +  from: number;
                                                                              +  to: number;
                                                                              +}
                                                                              +
                                                                              +@Component({
                                                                              +  selector: "plh-number-selector",
                                                                              +  templateUrl: "./number-selector.component.html",
                                                                              +  styleUrls: ["./number-selector.component.scss"],
                                                                              +})
                                                                              +export class TmplNumberComponent
                                                                              +  extends TemplateBaseComponent
                                                                              +  implements ITemplateRowProps, OnInit
                                                                              +{
                                                                              +  @Input() parent: TemplateContainerComponent;
                                                                              +
                                                                              +  title: string | null;
                                                                              +  min_value: number | null = 0;
                                                                              +  displayValue: any = 0;
                                                                              +  max_value: number | null = 0;
                                                                              +  category_list: string[];
                                                                              +  height: string;
                                                                              +  category_size: number;
                                                                              +  first_display_term: number;
                                                                              +  valuesFromCategoryList: string[];
                                                                              +
                                                                              +  ngOnInit() {
                                                                              +    this.getParams();
                                                                              +  }
                                                                              +
                                                                              +  getParams() {
                                                                              +    this.category_list = getParamFromTemplateRow(this._row, "category_list", null);
                                                                              +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
                                                                              +    this.height = getStringParamFromTemplateRow(this._row, "height", "short");
                                                                              +    this.height = this.height === "short" || "normal" ? this.height : "short";
                                                                              +    if (this.category_list) {
                                                                              +      this.valuesFromCategoryList = this.category_list;
                                                                              +      this.first_display_term =
                                                                              +        getNumberParamFromTemplateRow(this._row, "first_display_term", 1) - 1;
                                                                              +      this.displayValue = this.valuesFromCategoryList[this.first_display_term];
                                                                              +    } else {
                                                                              +      this.min_value = getNumberParamFromTemplateRow(this._row, "min_value", 0);
                                                                              +      this.max_value = getNumberParamFromTemplateRow(this._row, "max_value", 6);
                                                                              +      this.category_size = getNumberParamFromTemplateRow(this._row, "category_size", 1);
                                                                              +      this.displayValue = this.min_value;
                                                                              +    }
                                                                              +    // assign any previously saved value
                                                                              +    if (this._row.value) {
                                                                              +      this.displayValue = this._row.value;
                                                                              +    }
                                                                              +  }
                                                                              +
                                                                              +  async increment(param: "gt" | "lt") {
                                                                              +    if (this.category_list) {
                                                                              +      if (this.checkIfContainsNextArrayItem(this.valuesFromCategoryList, param)) {
                                                                              +        this.updateData(param);
                                                                              +      }
                                                                              +    } else {
                                                                              +      if (param === "gt") {
                                                                              +        if (this.displayValue + this.category_size <= this.max_value) {
                                                                              +          if (this.category_size === 1) {
                                                                              +            this.displayValue++;
                                                                              +          } else {
                                                                              +            this.displayValue += this.category_size;
                                                                              +          }
                                                                              +        }
                                                                              +      } else {
                                                                              +        if (
                                                                              +          this.displayValue > this.min_value - this.category_size &&
                                                                              +          this.displayValue - this.category_size >= this.min_value
                                                                              +        ) {
                                                                              +          if (this.displayValue === 1) {
                                                                              +            this.displayValue--;
                                                                              +          } else {
                                                                              +            this.displayValue -= this.category_size;
                                                                              +          }
                                                                              +        }
                                                                              +      }
                                                                              +    }
                                                                              +    await this.setValue(this.displayValue);
                                                                              +    this.triggerActions("changed");
                                                                              +  }
                                                                              +
                                                                              +  getMinOrMaxFromCategoryListItem(item: string): ICategoryList {
                                                                              +    return {
                                                                              +      from: Number(item.split("-")[0].trim()),
                                                                              +      to: Number(item.split("-")[1].trim()),
                                                                              +    };
                                                                              +  }
                                                                              +
                                                                              +  checkIfContainsNextArrayItem(array: string[], expression: "gt" | "lt") {
                                                                              +    return expression === "gt"
                                                                              +      ? this.first_display_term < array.length - 1
                                                                              +      : this.first_display_term === array.length - 1 ||
                                                                              +          (this.first_display_term < array.length - 1 && this.first_display_term !== 0);
                                                                              +  }
                                                                              +
                                                                              +  updateData(param: "gt" | "lt") {
                                                                              +    this.first_display_term =
                                                                              +      param === "gt" ? (this.first_display_term += 1) : (this.first_display_term -= 1);
                                                                              +    this.displayValue = this.valuesFromCategoryList[this.first_display_term];
                                                                              +    this.setValue(this.displayValue);
                                                                              +  }
                                                                              +}
                                                                              +
                                                                              +
                                                                              + +
                                                                              +
                                                                              <div class="container margin-t-large" [class]="height">
                                                                              +  <div class="left">
                                                                              +    <ion-button (click)="increment('lt')">
                                                                              +      <div class="line"></div>
                                                                              +    </ion-button>
                                                                              +  </div>
                                                                              +  <div class="center">
                                                                              +    <div class="title" *ngIf="title">{{ title }}</div>
                                                                              +    <div class="num" *ngIf="!category_list">{{ displayValue }}</div>
                                                                              +    <div class="category" *ngIf="category_list">
                                                                              +      <span>{{ _row.value }}</span>
                                                                              +    </div>
                                                                              +  </div>
                                                                              +  <div class="right">
                                                                              +    <ion-button (click)="increment('gt')">
                                                                              +      <ion-icon name="add-circle-outline"></ion-icon>
                                                                              +      <div class="line"></div>
                                                                              +      <div class="line plus"></div>
                                                                              +    </ion-button>
                                                                              +  </div>
                                                                              +</div>
                                                                              +
                                                                              +
                                                                              + +
                                                                              +

                                                                              + ./number-selector.component.scss +

                                                                              +
                                                                              @use "/src/theme/mixins";
                                                                              +.container {
                                                                              +  width: calc(100% - 10px);
                                                                              +  background: var(--ion-color-primary-contrast);
                                                                              +  border: var(--ion-border-standard);
                                                                              +  box-shadow: var(--ion-default-box-shadow);
                                                                              +  border-radius: var(--ion-border-radius-secondary);
                                                                              +  @include mixins.flex-space-between;
                                                                              +  padding: 0 var(--tiny-padding);
                                                                              +  margin-left: var(--tiny-margin);
                                                                              +  margin-right: var(--tiny-margin);
                                                                              +  .left,
                                                                              +  .right {
                                                                              +    flex: 1 1 20%;
                                                                              +  }
                                                                              +  .center {
                                                                              +    flex: 1 1 60%;
                                                                              +  }
                                                                              +  .right {
                                                                              +    display: flex;
                                                                              +    justify-content: flex-end;
                                                                              +  }
                                                                              +  ion-button {
                                                                              +    --background: transparent;
                                                                              +    --box-shadow: none;
                                                                              +    border-radius: var(--ion-border-radius-rounded);
                                                                              +    border: var(--ion-border-standard);
                                                                              +    @include mixins.tiny-square;
                                                                              +    @include mixins.flex-centered;
                                                                              +    .line {
                                                                              +      position: absolute;
                                                                              +      width: 8px;
                                                                              +      height: 2px;
                                                                              +      background: var(--ion-color-primary);
                                                                              +    }
                                                                              +    .plus {
                                                                              +      transform: rotate(90deg);
                                                                              +    }
                                                                              +  }
                                                                              +  .center {
                                                                              +    @include mixins.flex-centered;
                                                                              +    flex-direction: column;
                                                                              +    .title,
                                                                              +    .num {
                                                                              +      text-align: center;
                                                                              +      font-weight: var(--font-weight-standard);
                                                                              +      color: var(--ion-color-primary);
                                                                              +      max-width: var(--number-selector-title-max-width);
                                                                              +    }
                                                                              +    .category {
                                                                              +      max-width: var(--number-selector-category-max-width);
                                                                              +      span {
                                                                              +        font-weight: var(--font-weight-standard);
                                                                              +        font-size: var(--font-size-text-small);
                                                                              +        line-height: var(--line-height-text-tiny);
                                                                              +        color: var(--ion-color-primary);
                                                                              +      }
                                                                              +    }
                                                                              +  }
                                                                              +}
                                                                              +.short {
                                                                              +  min-height: var(--number-selector-short-min-heigh);
                                                                              +  .center {
                                                                              +    .title,
                                                                              +    .num {
                                                                              +      font-size: var(--number-selector-short-font-size);
                                                                              +    }
                                                                              +  }
                                                                              +  ion-button {
                                                                              +    @include mixins.small-square;
                                                                              +    .line {
                                                                              +      width: 15px;
                                                                              +      height: 3px;
                                                                              +    }
                                                                              +  }
                                                                              +}
                                                                              +.normal {
                                                                              +  min-height: var(--number-selector-mormal-min-height);
                                                                              +  .center {
                                                                              +    .title,
                                                                              +    .num {
                                                                              +      font-size: var(--number-selector-normal-font-size);
                                                                              +    }
                                                                              +  }
                                                                              +}
                                                                              +
                                                                              +
                                                                              + +
                                                                              +
                                                                              +
                                                                              +
                                                                              + Legend +
                                                                              +
                                                                              +
                                                                              Html element +
                                                                              +
                                                                              +
                                                                              Component +
                                                                              +
                                                                              +
                                                                              Html element with directive +
                                                                              +
                                                                              +
                                                                              + + +
                                                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                                                              +
                                                                              +

                                                                              results matching ""

                                                                              +
                                                                                +
                                                                                +
                                                                                +

                                                                                No results matching ""

                                                                                +
                                                                                +
                                                                                +
                                                                                + +
                                                                                +
                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplOdkFormComponent.html b/documentation/docs/generated/components/TmplOdkFormComponent.html new file mode 100644 index 0000000000..efe65fc1b6 --- /dev/null +++ b/documentation/docs/generated/components/TmplOdkFormComponent.html @@ -0,0 +1,748 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                +
                                                                                + + +
                                                                                +
                                                                                + + + + + + + + +
                                                                                +

                                                                                +

                                                                                File

                                                                                +

                                                                                +

                                                                                + src/app/shared/components/template/components/odk-form/odk-form.component.ts +

                                                                                + + + +

                                                                                +

                                                                                Extends

                                                                                +

                                                                                +

                                                                                + TemplateBaseComponent +

                                                                                + +

                                                                                +

                                                                                Implements

                                                                                +

                                                                                +

                                                                                + OnInit +

                                                                                + + +
                                                                                +

                                                                                Metadata

                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                + +
                                                                                +

                                                                                Index

                                                                                + + + + + + + + + + + + + + + + + + + + + +
                                                                                +
                                                                                Properties
                                                                                +
                                                                                + +
                                                                                +
                                                                                Methods
                                                                                +
                                                                                +
                                                                                  +
                                                                                • + Public + Async + save +
                                                                                • +
                                                                                +
                                                                                +
                                                                                + +
                                                                                +

                                                                                Constructor

                                                                                + + + + + + + + + + + + + +
                                                                                +constructor(templateAssetService: TemplateAssetService) +
                                                                                + +
                                                                                +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptional
                                                                                templateAssetService + TemplateAssetService + + No +
                                                                                +
                                                                                +
                                                                                +
                                                                                + + + + + +
                                                                                + +

                                                                                + Methods +

                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                + + + Public + Async + save + + +
                                                                                + + save(opts: object) +
                                                                                + +
                                                                                + +
                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                NameTypeOptionalDefault value
                                                                                opts + object + + No + + { draft: false } +
                                                                                +
                                                                                +
                                                                                +
                                                                                +
                                                                                + Returns : any + +
                                                                                +
                                                                                + +
                                                                                +
                                                                                +
                                                                                +
                                                                                + +

                                                                                + Properties +

                                                                                + + + + + + + + + + + + + + + + + +
                                                                                + + + Public + parameter_list + + +
                                                                                + Type : IODKFormComponentParameters + +
                                                                                + +
                                                                                +

                                                                                Authoring parameters

                                                                                +
                                                                                +
                                                                                +
                                                                                + +
                                                                                + + +
                                                                                +
                                                                                import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from "@angular/core";
                                                                                +
                                                                                +import Events from "./libs/enketo/js/event";
                                                                                +import { Form } from "./libs/enketo/js/form";
                                                                                +import { TemplateBaseComponent } from "../base";
                                                                                +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                +
                                                                                +/** Enketo-transformed form representation */
                                                                                +interface IEnketoFormData {
                                                                                +  enketoId: string;
                                                                                +  externalData: [];
                                                                                +  /** html string representation of form */
                                                                                +  form: string;
                                                                                +  hash: string;
                                                                                +  languageMap: {};
                                                                                +  maxSize: number;
                                                                                +  media: {};
                                                                                +  /** xml string representation of model */
                                                                                +  model: string;
                                                                                +  theme: "grid";
                                                                                +}
                                                                                +
                                                                                +interface IFormEntry {
                                                                                +  created: number;
                                                                                +  draft: boolean;
                                                                                +  enketoId: string;
                                                                                +  files: any[];
                                                                                +  instanceId: string;
                                                                                +  name: string;
                                                                                +  // TODO - check if actually updated
                                                                                +  updated: number;
                                                                                +  xml: string;
                                                                                +}
                                                                                +
                                                                                +interface IEventFormSaved {
                                                                                +  entry: IFormEntry;
                                                                                +}
                                                                                +
                                                                                +interface IODKFormComponentParameters {
                                                                                +  /**
                                                                                +   * Path to asset file containing form data in enketo-transformed json format
                                                                                +   */
                                                                                +  form_asset?: string;
                                                                                +}
                                                                                +
                                                                                +@Component({
                                                                                +  selector: "tmpl-odk-form",
                                                                                +  templateUrl: "./odk-form.component.html",
                                                                                +  styleUrls: ["./odk-form.component.scss"],
                                                                                +  encapsulation: ViewEncapsulation.None,
                                                                                +})
                                                                                +/**
                                                                                + * A lightweight port of enketo-core to render a form within an angular component
                                                                                + *
                                                                                + * NOTE - this component is also under development as part of an external repo,
                                                                                + * and as such the implementation included may be lacking features
                                                                                + *
                                                                                + * It is preferable to import from external project when available to remove additional
                                                                                + * imports as noted below
                                                                                + *
                                                                                + * Opt-Out (additional changes to make if removing component)
                                                                                + * - Remove modules:
                                                                                + *   jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge
                                                                                + * - Remove js file import in tsconfig.app.json
                                                                                + * - Reduce build budget styles 200kb -> 16kb
                                                                                + * - Reduce build budget js 5MB -> 4MB
                                                                                + */
                                                                                +export class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {
                                                                                +  /** Authoring parameters */
                                                                                +  public parameter_list: IODKFormComponentParameters;
                                                                                +
                                                                                +  /**
                                                                                +   * Form container element binding to render form
                                                                                +   * @ignore
                                                                                +   */
                                                                                +  @ViewChild("formContainerEl", { static: true }) formContainerEl: ElementRef<HTMLDivElement>;
                                                                                +
                                                                                +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                +    super();
                                                                                +  }
                                                                                +
                                                                                +  ngOnInit() {
                                                                                +    this.processParameterList();
                                                                                +  }
                                                                                +
                                                                                +  private async processParameterList() {
                                                                                +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                +    // load form from form_asset parameter
                                                                                +    const { form_asset } = this.parameter_list;
                                                                                +    if (!form_asset) {
                                                                                +      console.error("[odk_form] form_asset parameter required");
                                                                                +      return;
                                                                                +    }
                                                                                +    const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);
                                                                                +    if (!formData) {
                                                                                +      console.error("[odk_form] form_asset does not exist");
                                                                                +      return;
                                                                                +    }
                                                                                +    this.loadForm(formData);
                                                                                +  }
                                                                                +
                                                                                +  private enketoForm: Form;
                                                                                +
                                                                                +  public async save(opts = { draft: false }) {
                                                                                +    await this.setValue(this.xmlFormValue);
                                                                                +    await this.triggerActions("changed");
                                                                                +  }
                                                                                +
                                                                                +  private get xmlFormValue() {
                                                                                +    return this.enketoForm.getDataStr();
                                                                                +  }
                                                                                +
                                                                                +  private async handleEventDataUpdate(e: ReturnType<typeof Events.DataUpdate>) {
                                                                                +    await this.setValue(this.xmlFormValue);
                                                                                +    await this.triggerActions("changed");
                                                                                +  }
                                                                                +
                                                                                +  private async handleEventXmlFormChange(e: ReturnType<typeof Events.XFormsValueChanged>) {
                                                                                +    // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js
                                                                                +    // await this.setValue(this.xmlFormValue);
                                                                                +  }
                                                                                +
                                                                                +  /**
                                                                                +   * Load the form xml and data models and render intial form components
                                                                                +   * https://github.com/enketo/enketo-core#usage-as-a-library
                                                                                +   */
                                                                                +  private loadForm(formData: IEnketoFormData) {
                                                                                +    const { formContainerEl } = this;
                                                                                +    const { form, model } = formData;
                                                                                +    console.log({ form, model, formContainerEl });
                                                                                +    if (form && model && formContainerEl) {
                                                                                +      this.formContainerEl.nativeElement.innerHTML = form;
                                                                                +      const formEl = this.formContainerEl.nativeElement.querySelector("form");
                                                                                +      if (formEl) {
                                                                                +        this.enketoForm = new Form(formEl, model, {});
                                                                                +        // Initialize the form and capture any load errors
                                                                                +        let loadErrors = this.enketoForm.init();
                                                                                +        if (loadErrors.length > 0) {
                                                                                +          console.error(loadErrors);
                                                                                +        }
                                                                                +        // If desired, scroll to a specific question with any XPath location expression,
                                                                                +        // and aggregate any loadErrors.
                                                                                +        loadErrors = loadErrors.concat(this.enketoForm.goTo("//repeat[3]/node"));
                                                                                +
                                                                                +        // Additional events can be bound directly to form (as opposed to component-propogated)
                                                                                +        this.enketoForm.model.events.addEventListener(
                                                                                +          Events.DataUpdate().type,
                                                                                +          this.handleEventDataUpdate.bind(this)
                                                                                +        );
                                                                                +
                                                                                +        // Extract updated form xml on change (triggered at document and form level)
                                                                                +        this.enketoForm.view.html.addEventListener(
                                                                                +          Events.XFormsValueChanged().type,
                                                                                +          this.handleEventXmlFormChange.bind(this)
                                                                                +        );
                                                                                +      }
                                                                                +    }
                                                                                +  }
                                                                                +}
                                                                                +
                                                                                +
                                                                                + +
                                                                                +
                                                                                <ng-container *ngTemplateOutlet="enketoLogo"> </ng-container>
                                                                                +
                                                                                +<div #formContainerEl></div>
                                                                                +<section id="form-footer">
                                                                                +  <button class="btn btn-default" id="save-draft" (click)="save({ draft: true })">
                                                                                +    <i class="icon icon-pencil"> </i>
                                                                                +    <span data-i18n="formfooter.savedraft.btn">Save Draft</span>
                                                                                +  </button>
                                                                                +  <button class="btn btn-primary" id="submit-form" (click)="save()">
                                                                                +    <i class="icon icon-check">✔️</i>
                                                                                +    <span data-i18n="formfooter.submit.btn">Submit</span>
                                                                                +  </button>
                                                                                +  <!--  TODO - add next/prev page button and bindings (remove custom css to display all)  -->
                                                                                +</section>
                                                                                +
                                                                                +<!-- enketo logo (rendered above but kept here for tidiness) -->
                                                                                +<ng-template #enketoLogo>
                                                                                +  <svg xmlns="http://www.w3.org/2000/svg" width="220" height="100">
                                                                                +    <path
                                                                                +      d="M17.952 72.482V38.541a4.75 4.75 0 0 1 4.786-4.787h13.758a4.298 4.298 0 0 1 4.29 4.29c0 2.363-1.927 4.227-4.29 4.227h-9.032v8.827h6.235a4.299 4.299 0 0 1 4.29 4.29c0 2.362-1.928 4.227-4.29 4.227h-6.235v9.139h9.344a4.298 4.298 0 0 1 4.29 4.289c0 2.361-1.928 4.227-4.29 4.227H22.739a4.75 4.75 0 0 1-4.787-4.788zM117.918 72.482V38.541a4.75 4.75 0 0 1 4.787-4.787h13.758a4.298 4.298 0 0 1 4.289 4.29c0 2.363-1.927 4.227-4.289 4.227h-9.033v8.827h6.237a4.298 4.298 0 0 1 4.288 4.29c0 2.362-1.927 4.227-4.288 4.227h-6.237v9.139h9.345a4.298 4.298 0 0 1 4.289 4.289c0 2.361-1.928 4.227-4.289 4.227h-14.069a4.751 4.751 0 0 1-4.788-4.788zM153.902 42.582h-4.021c-2.424 0-4.414-1.989-4.414-4.414 0-2.424 1.99-4.414 4.414-4.414h17.612c2.424 0 4.414 1.989 4.414 4.414s-1.99 4.414-4.414 4.414h-4.02v30.273a4.748 4.748 0 0 1-4.785 4.787 4.748 4.748 0 0 1-4.787-4.787V42.582zM74.383 77.977a4.483 4.483 0 0 1-3.811-2.116l-21.9-35.227a4.48 4.48 0 0 1 1.44-6.172 4.48 4.48 0 0 1 6.171 1.439l21.9 35.227a4.48 4.48 0 0 1-3.8 6.849z"
                                                                                +    />
                                                                                +    <path
                                                                                +      d="M75.001 77.976a4.481 4.481 0 0 1-4.481-4.48V38.268a4.482 4.482 0 0 1 8.962 0v35.228a4.48 4.48 0 0 1-4.481 4.48zM51.053 77.976a4.48 4.48 0 0 1-4.481-4.48V38.268a4.48 4.48 0 1 1 8.962 0v35.228a4.48 4.48 0 0 1-4.481 4.48zM89.648 77.976a4.48 4.48 0 0 1-4.481-4.48V38.268a4.481 4.481 0 0 1 8.962 0v35.228a4.48 4.48 0 0 1-4.481 4.48z"
                                                                                +    />
                                                                                +    <path
                                                                                +      d="M90.679 68.004a4.483 4.483 0 0 1-3.706-6.994l17.095-25.255a4.482 4.482 0 0 1 7.424 5.024L94.396 66.034a4.48 4.48 0 0 1-3.717 1.97z"
                                                                                +    />
                                                                                +    <path
                                                                                +      d="M109.08 77.977a4.482 4.482 0 0 1-3.741-2.007L92.433 56.495a4.482 4.482 0 0 1 7.472-4.951l12.906 19.475a4.481 4.481 0 0 1-3.731 6.958zM188.191 78.028c-7.642 0-13.858-6.217-13.858-13.858V47.593c0-7.641 6.217-13.857 13.858-13.857 7.641 0 13.857 6.216 13.857 13.857V64.17c0 7.641-6.216 13.858-13.857 13.858zm0-35.227a4.797 4.797 0 0 0-4.793 4.792V64.17a4.798 4.798 0 0 0 4.793 4.793 4.798 4.798 0 0 0 4.792-4.793V47.593a4.797 4.797 0 0 0-4.792-4.792z"
                                                                                +    />
                                                                                +    <path
                                                                                +      fill="#F15A29"
                                                                                +      d="m127.483 29.343-.101-.001a4.145 4.145 0 0 1-2.923-1.309l-5.825-6.215a4.144 4.144 0 1 1 6.046-5.668l2.944 3.14 9.442-9.148a4.144 4.144 0 1 1 5.767 5.953l-12.469 12.079a4.128 4.128 0 0 1-2.881 1.169z"
                                                                                +    />
                                                                                +  </svg>
                                                                                +</ng-template>
                                                                                +
                                                                                +
                                                                                + +
                                                                                +

                                                                                + ./odk-form.component.scss +

                                                                                +
                                                                                @import "./libs/enketo/sass/grid/grid.scss";
                                                                                +
                                                                                +// apply :host style bindings for non-encapsulated component
                                                                                +tmpl-odk-form {
                                                                                +  background: white;
                                                                                +  padding: 8px;
                                                                                +  display: block;
                                                                                +  position: relative;
                                                                                +}
                                                                                +// apply margin to fit section dropdown arrows. Breakpoints defined in
                                                                                +// ./libs/enketo/sass/core/_responsive.scss
                                                                                +tmpl-odk-form form {
                                                                                +  margin-left: 30px;
                                                                                +  @media screen and (max-width: 600px) {
                                                                                +    margin-left: 24px;
                                                                                +  }
                                                                                +}
                                                                                +#form-title {
                                                                                +  margin: 0;
                                                                                +}
                                                                                +#form-unavailable {
                                                                                +  // give form a chance to load/render before showing unavailable message
                                                                                +  animation: appearDelayed 2s;
                                                                                +  -webkit-animation: appearDelayed 2s;
                                                                                +  -moz-animation: appearDelayed 2s;
                                                                                +  -o-animation: appearDelayed 2s;
                                                                                +  -ms-animation: appearDelayed 2s;
                                                                                +}
                                                                                +
                                                                                +.enketo-logo-container {
                                                                                +  display: flex;
                                                                                +  justify-content: end;
                                                                                +  align-items: center;
                                                                                +  margin-bottom: -25px;
                                                                                +  font-size: 18px;
                                                                                +}
                                                                                +.enketo-logo {
                                                                                +  height: 25px;
                                                                                +}
                                                                                +// HACK - show all form sections (need to add buttons for page nave)
                                                                                +.pages.or .or-group-data {
                                                                                +  display: block !important;
                                                                                +}
                                                                                +// HACK - using emojis instead of icons so recolor as required
                                                                                +.icon {
                                                                                +  color: transparent;
                                                                                +  text-shadow: 0 0 0 white;
                                                                                +  margin-left: -12px;
                                                                                +  margin-right: 12px;
                                                                                +}
                                                                                +
                                                                                +#form-footer {
                                                                                +  display: flex;
                                                                                +  padding: 20px;
                                                                                +  justify-content: center;
                                                                                +}
                                                                                +#form-footer > button {
                                                                                +  min-width: 180px;
                                                                                +  min-height: 48px;
                                                                                +  margin: 0 10px;
                                                                                +}
                                                                                +
                                                                                +// Animations
                                                                                +@keyframes appearDelayed {
                                                                                +  0% {
                                                                                +    opacity: 0;
                                                                                +  }
                                                                                +  90% {
                                                                                +    opacity: 0;
                                                                                +  }
                                                                                +  100% {
                                                                                +    opacity: 1;
                                                                                +  }
                                                                                +}
                                                                                +
                                                                                +
                                                                                + +
                                                                                +
                                                                                +
                                                                                +
                                                                                + Legend +
                                                                                +
                                                                                +
                                                                                Html element +
                                                                                +
                                                                                +
                                                                                Component +
                                                                                +
                                                                                +
                                                                                Html element with directive +
                                                                                +
                                                                                +
                                                                                + + +
                                                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                +
                                                                                +

                                                                                results matching ""

                                                                                +
                                                                                  +
                                                                                  +
                                                                                  +

                                                                                  No results matching ""

                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplParentPointBoxComponent.html b/documentation/docs/generated/components/TmplParentPointBoxComponent.html new file mode 100644 index 0000000000..f396f5b562 --- /dev/null +++ b/documentation/docs/generated/components/TmplParentPointBoxComponent.html @@ -0,0 +1,1367 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  + + +
                                                                                  +
                                                                                  + + + + + + + + +
                                                                                  +

                                                                                  +

                                                                                  File

                                                                                  +

                                                                                  +

                                                                                  + src/app/shared/components/template/components/points-item/points-item.component.ts +

                                                                                  + + + +

                                                                                  +

                                                                                  Extends

                                                                                  +

                                                                                  +

                                                                                  + TemplateBaseComponent +

                                                                                  + +

                                                                                  +

                                                                                  Implements

                                                                                  +

                                                                                  +

                                                                                  + ITemplateRowProps + OnInit +

                                                                                  + + +
                                                                                  +

                                                                                  Metadata

                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + +
                                                                                  +

                                                                                  Index

                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  Properties
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  Methods
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  Inputs
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  HostListeners
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  +

                                                                                  Constructor

                                                                                  + + + + + + + + + + + + + +
                                                                                  +constructor(templateAssetService: TemplateAssetService) +
                                                                                  + +
                                                                                  +
                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                  NameTypeOptional
                                                                                  templateAssetService + TemplateAssetService + + No +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +

                                                                                  Inputs

                                                                                  + + + + + + + + + + + + +
                                                                                  + + template +
                                                                                  + Type : FlowTypes.Template + +
                                                                                  + +
                                                                                  +
                                                                                  + + +
                                                                                  +

                                                                                  HostListeners

                                                                                  + + + + + + + + + + + + + + + + + + +
                                                                                  + + + window:resize + + +
                                                                                  + Arguments : '$event' +
                                                                                  +window:resize(event) +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  + Methods +

                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + Async + clickInfo + + +
                                                                                  + + clickInfo(event) +
                                                                                  + +
                                                                                  + +
                                                                                  + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                  NameOptional
                                                                                  event + No +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Returns : any + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + Async + clickPointItem + + +
                                                                                  + + clickPointItem() +
                                                                                  + +
                                                                                  + +
                                                                                  + Returns : any + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + getParams + + +
                                                                                  +getParams() +
                                                                                  + +
                                                                                  + +
                                                                                  + Returns : void + +
                                                                                  +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  + + + onResize + + +
                                                                                  +onResize(event) +
                                                                                  + Decorators : +
                                                                                  + @HostListener('window:resize', ['$event'])
                                                                                  +
                                                                                  + +
                                                                                  + +
                                                                                  + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                  NameOptional
                                                                                  event + No +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Returns : void + +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + +

                                                                                  + Properties +

                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + animCelebrationOptions + + +
                                                                                  + Type : AnimationOptions + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + animOptions + + +
                                                                                  + Type : AnimationOptions + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + icon_src + + +
                                                                                  + Type : string | null + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + info_icon_src + + +
                                                                                  + Type : string | null + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + + + item + + +
                                                                                  + Type : ElementRef + +
                                                                                  + Decorators : +
                                                                                  + + @ViewChild('item', {static: false})
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + lottie_src + + +
                                                                                  + Type : string | null + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + play_celebration + + +
                                                                                  + Type : boolean + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + showCelebrationAnimation + + +
                                                                                  + Default value : false +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + + + star + + +
                                                                                  + Type : ElementRef + +
                                                                                  + Decorators : +
                                                                                  + + @ViewChild('star', {static: false})
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + text + + +
                                                                                  + Type : string | null + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + + + value + + +
                                                                                  + Type : number | null + +
                                                                                  + Default value : 0 +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + video_src + + +
                                                                                  + Type : string | null + +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                  + + + wasClicked + + +
                                                                                  + Type : boolean + +
                                                                                  + Default value : false +
                                                                                  + +
                                                                                  + + + + + + + + + + + + + + +
                                                                                  + + + windowWidth + + +
                                                                                  + Type : number + +
                                                                                  + +
                                                                                  +
                                                                                  + +
                                                                                  + + +
                                                                                  +
                                                                                  import {
                                                                                  +  Component,
                                                                                  +  ElementRef,
                                                                                  +  HostBinding,
                                                                                  +  HostListener,
                                                                                  +  Input,
                                                                                  +  OnInit,
                                                                                  +  ViewChild,
                                                                                  +} from "@angular/core";
                                                                                  +import { TemplateBaseComponent } from "../base";
                                                                                  +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                  +import { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from "../../../../utils";
                                                                                  +import { AnimationOptions } from "ngx-lottie";
                                                                                  +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                  +
                                                                                  +@Component({
                                                                                  +  selector: "plh-points-item",
                                                                                  +  templateUrl: "./points-item.component.html",
                                                                                  +  styleUrls: ["./points-item.component.scss"],
                                                                                  +})
                                                                                  +// TODO - why does the class name not match the file name??
                                                                                  +export class TmplParentPointBoxComponent
                                                                                  +  extends TemplateBaseComponent
                                                                                  +  implements ITemplateRowProps, OnInit
                                                                                  +{
                                                                                  +  @Input() template: FlowTypes.Template;
                                                                                  +  @ViewChild("star", { static: false }) star: ElementRef;
                                                                                  +  @ViewChild("item", { static: false }) item: ElementRef;
                                                                                  +  icon_src: string | null;
                                                                                  +  info_icon_src: string | null;
                                                                                  +  lottie_src: string | null;
                                                                                  +  video_src: string | null;
                                                                                  +  windowWidth: number;
                                                                                  +  text: string | null;
                                                                                  +  wasClicked: boolean = false;
                                                                                  +  value: number | null = 0;
                                                                                  +  animOptions: AnimationOptions;
                                                                                  +  animCelebrationOptions: AnimationOptions;
                                                                                  +  play_celebration: boolean;
                                                                                  +  showCelebrationAnimation = false;
                                                                                  +  @HostListener("window:resize", ["$event"]) onResize(event) {
                                                                                  +    this.windowWidth = event.target.innerWidth - 10;
                                                                                  +  }
                                                                                  +
                                                                                  +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                  +    super();
                                                                                  +  }
                                                                                  +
                                                                                  +  ngOnInit() {
                                                                                  +    this.getParams();
                                                                                  +    if (this.lottie_src) {
                                                                                  +      this.lottie_src = this.templateAssetService.getTranslatedAssetPath(this.lottie_src);
                                                                                  +      this.animOptions = {
                                                                                  +        path: this.lottie_src,
                                                                                  +        name: this.text,
                                                                                  +        autoplay: true,
                                                                                  +        loop: true,
                                                                                  +      };
                                                                                  +    }
                                                                                  +    const celebrationAnimationPath = this.templateAssetService.getTranslatedAssetPath(
                                                                                  +      "/plh_lottie/habits/cascading_stars.json"
                                                                                  +    );
                                                                                  +    this.animCelebrationOptions = {
                                                                                  +      path: celebrationAnimationPath,
                                                                                  +      name: "celebration",
                                                                                  +      autoplay: true,
                                                                                  +      loop: false,
                                                                                  +      rendererSettings: {
                                                                                  +        // svg scaling options: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio
                                                                                  +        preserveAspectRatio: "xMinYMin slice",
                                                                                  +      },
                                                                                  +    };
                                                                                  +  }
                                                                                  +
                                                                                  +  getParams() {
                                                                                  +    this.video_src = getStringParamFromTemplateRow(this._row, "video_src", null);
                                                                                  +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", null);
                                                                                  +    this.info_icon_src = getStringParamFromTemplateRow(this._row, "info_icon_src", null);
                                                                                  +    this.lottie_src = getStringParamFromTemplateRow(this._row, "lottie_src", null);
                                                                                  +    this.play_celebration = getBooleanParamFromTemplateRow(this._row, "play_celebration", true);
                                                                                  +    this.text = getStringParamFromTemplateRow(this._row, "text", null);
                                                                                  +    this.windowWidth = window.innerWidth - 10;
                                                                                  +    if (!this._row.value) {
                                                                                  +      this._row.value = 0;
                                                                                  +    }
                                                                                  +  }
                                                                                  +
                                                                                  +  async clickPointItem() {
                                                                                  +    if (this._row.disabled) {
                                                                                  +      return;
                                                                                  +    }
                                                                                  +    this._row.value = parseInt(this._row.value) + 1;
                                                                                  +    this.value = this._row.value;
                                                                                  +    this.star.nativeElement.classList.add("on-add");
                                                                                  +    if (this.play_celebration) {
                                                                                  +      this.showCelebrationAnimation = true;
                                                                                  +    }
                                                                                  +    setTimeout((_) => {
                                                                                  +      this.star.nativeElement.classList.remove("on-add");
                                                                                  +      this.showCelebrationAnimation = false;
                                                                                  +    }, 1000);
                                                                                  +    if (!this.wasClicked) {
                                                                                  +      this.item.nativeElement.classList.add("complete");
                                                                                  +    }
                                                                                  +    this.wasClicked = true;
                                                                                  +    await this.setValue(this.value);
                                                                                  +    await this.triggerActions("click");
                                                                                  +    await this.triggerActions("changed");
                                                                                  +  }
                                                                                  +
                                                                                  +  async clickInfo(event) {
                                                                                  +    event.stopPropagation();
                                                                                  +    await this.triggerActions("info_click");
                                                                                  +  }
                                                                                  +}
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  <div class="wrapper-point">
                                                                                  +  <div *ngIf="showCelebrationAnimation" class="celebrationAnim">
                                                                                  +    <ng-lottie [options]="animCelebrationOptions"></ng-lottie>
                                                                                  +  </div>
                                                                                  +  <div class="item" #item (click)="clickPointItem()">
                                                                                  +    <div class="star" #star>
                                                                                  +      <img [src]="'plh_images/icons/star.svg' | plhAsset" alt="" />
                                                                                  +      <div class="star-value">
                                                                                  +        {{ _row.value }}
                                                                                  +      </div>
                                                                                  +    </div>
                                                                                  +    <div *ngIf="info_icon_src" class="info-button" (click)="clickInfo($event)">
                                                                                  +      <img [src]="info_icon_src | plhAsset" alt="" />
                                                                                  +    </div>
                                                                                  +    <div class="image">
                                                                                  +      <!-- order of preference - video, lottie, img -->
                                                                                  +      <video
                                                                                  +        *ngIf="video_src"
                                                                                  +        style="width: 100%; height: 100%"
                                                                                  +        [src]="video_src | plhAsset"
                                                                                  +        autoplay
                                                                                  +        loop
                                                                                  +      ></video>
                                                                                  +      <ng-lottie *ngIf="lottie_src && !video_src" [options]="animOptions"></ng-lottie>
                                                                                  +      <img *ngIf="icon_src && !lottie_src && !video_src" [src]="icon_src | plhAsset" alt="" />
                                                                                  +    </div>
                                                                                  +    <div class="text" *ngIf="text">
                                                                                  +      {{ text }}
                                                                                  +    </div>
                                                                                  +  </div>
                                                                                  +</div>
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +

                                                                                  + ./points-item.component.scss +

                                                                                  +
                                                                                  @use "/src/theme/mixins";
                                                                                  +
                                                                                  +$item-background: var(--points-item-background, var(--ion-color-primary-200));
                                                                                  +$item-background-complete: var(
                                                                                  +  --points-item-background-complete,
                                                                                  +  var(--ion-color-primary-contrast)
                                                                                  +);
                                                                                  +$item-border: var(--points-item-border, none);
                                                                                  +
                                                                                  +.wrapper-point {
                                                                                  +  padding: var(--regular-padding) 5px;
                                                                                  +  .item {
                                                                                  +    @include mixins.flex-centered;
                                                                                  +    margin: 0 auto;
                                                                                  +    padding: 20px 0;
                                                                                  +    width: var(--points-item-width);
                                                                                  +    max-width: 100%; // Don't allow overlap
                                                                                  +    height: var(--points-item-height);
                                                                                  +    background: $item-background;
                                                                                  +    filter: drop-shadow(var(--ion-default-box-shadow));
                                                                                  +    border: 1px solid $item-border;
                                                                                  +    border-radius: var(--ion-border-radius-standard);
                                                                                  +    position: relative;
                                                                                  +    flex-direction: column;
                                                                                  +
                                                                                  +    .star {
                                                                                  +      @include mixins.flex-centered;
                                                                                  +      position: absolute;
                                                                                  +      left: -12px;
                                                                                  +      top: -16px;
                                                                                  +      .star-value {
                                                                                  +        padding-top: 4px;
                                                                                  +        font-weight: var(--font-weight-standard);
                                                                                  +        font-size: var(--line-height-text-tiny);
                                                                                  +        color: var(--ion-color-primary);
                                                                                  +        position: absolute;
                                                                                  +      }
                                                                                  +      img {
                                                                                  +        width: 47px;
                                                                                  +        height: 47px;
                                                                                  +      }
                                                                                  +    }
                                                                                  +    .info-button {
                                                                                  +      position: absolute;
                                                                                  +      right: 6px;
                                                                                  +      top: 6px;
                                                                                  +      img {
                                                                                  +        width: 28px;
                                                                                  +        height: 28px;
                                                                                  +      }
                                                                                  +    }
                                                                                  +    .image {
                                                                                  +      max-height: 100%;
                                                                                  +      img {
                                                                                  +        width: 100%;
                                                                                  +        height: 100%;
                                                                                  +      }
                                                                                  +    }
                                                                                  +    .text {
                                                                                  +      margin: var(--tiny-margin) 0;
                                                                                  +      font-weight: var(--font-weight-standard);
                                                                                  +      font-size: var(--font-size-text-small);
                                                                                  +      line-height: var(--line-height-text-small);
                                                                                  +      text-align: center;
                                                                                  +      color: var(--ion-color-primary);
                                                                                  +      padding: 0 var(--tiny-padding);
                                                                                  +    }
                                                                                  +  }
                                                                                  +  .complete {
                                                                                  +    background: $item-background-complete;
                                                                                  +  }
                                                                                  +}
                                                                                  +.celebrationAnim {
                                                                                  +  position: fixed;
                                                                                  +  top: 0;
                                                                                  +  left: 0;
                                                                                  +  right: 0;
                                                                                  +  bottom: 0;
                                                                                  +  z-index: 1;
                                                                                  +  width: 100%;
                                                                                  +}
                                                                                  +.on-add {
                                                                                  +  animation: bounce;
                                                                                  +  animation-duration: 1s;
                                                                                  +  animation-iteration-count: 1;
                                                                                  +}
                                                                                  +
                                                                                  +@keyframes bounce {
                                                                                  +  from,
                                                                                  +  20%,
                                                                                  +  53%,
                                                                                  +  to {
                                                                                  +    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
                                                                                  +    transform: translate3d(0, 0, 0);
                                                                                  +  }
                                                                                  +
                                                                                  +  40%,
                                                                                  +  43% {
                                                                                  +    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
                                                                                  +    transform: translate3d(0, -30px, 0) scaleY(1.1);
                                                                                  +  }
                                                                                  +
                                                                                  +  70% {
                                                                                  +    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
                                                                                  +    transform: translate3d(0, -15px, 0) scaleY(1.05);
                                                                                  +  }
                                                                                  +
                                                                                  +  80% {
                                                                                  +    transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
                                                                                  +    transform: translate3d(0, 0, 0) scaleY(0.95);
                                                                                  +  }
                                                                                  +
                                                                                  +  90% {
                                                                                  +    transform: translate3d(0, -4px, 0) scaleY(1.02);
                                                                                  +  }
                                                                                  +}
                                                                                  +
                                                                                  +
                                                                                  + +
                                                                                  +
                                                                                  +
                                                                                  +
                                                                                  + Legend +
                                                                                  +
                                                                                  +
                                                                                  Html element +
                                                                                  +
                                                                                  +
                                                                                  Component +
                                                                                  +
                                                                                  +
                                                                                  Html element with directive +
                                                                                  +
                                                                                  +
                                                                                  + + +
                                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                  +
                                                                                  +

                                                                                  results matching ""

                                                                                  +
                                                                                    +
                                                                                    +
                                                                                    +

                                                                                    No results matching ""

                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplParentPointCounterComponent.html b/documentation/docs/generated/components/TmplParentPointCounterComponent.html new file mode 100644 index 0000000000..4e840f31d1 --- /dev/null +++ b/documentation/docs/generated/components/TmplParentPointCounterComponent.html @@ -0,0 +1,504 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    + + +
                                                                                    +
                                                                                    + + + + + + + + +
                                                                                    +

                                                                                    +

                                                                                    File

                                                                                    +

                                                                                    +

                                                                                    + src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts +

                                                                                    + + + +

                                                                                    +

                                                                                    Extends

                                                                                    +

                                                                                    +

                                                                                    + TemplateBaseComponent +

                                                                                    + +

                                                                                    +

                                                                                    Implements

                                                                                    +

                                                                                    +

                                                                                    + OnInit + OnChanges +

                                                                                    + + +
                                                                                    +

                                                                                    Metadata

                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    + +
                                                                                    +

                                                                                    Index

                                                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    Properties
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    Methods
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    + +
                                                                                    +

                                                                                    Constructor

                                                                                    + + + + + + + + + + +
                                                                                    +constructor() +
                                                                                    + +
                                                                                    +
                                                                                    + + + + + +
                                                                                    + +

                                                                                    + Methods +

                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                    + + + getParams + + +
                                                                                    +getParams() +
                                                                                    + +
                                                                                    + +
                                                                                    + Returns : void + +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + +

                                                                                    + Properties +

                                                                                    + + + + + + + + + + + + + + +
                                                                                    + + + Public + count + + +
                                                                                    + Type : number | null + +
                                                                                    + +
                                                                                    + + + + + + + + + + + + + + +
                                                                                    + + + Public + icon_src + + +
                                                                                    + Type : string | null + +
                                                                                    + +
                                                                                    +
                                                                                    + +
                                                                                    + + +
                                                                                    +
                                                                                    import { Component, OnChanges, OnInit } from "@angular/core";
                                                                                    +import { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                    +import { TemplateBaseComponent } from "../base";
                                                                                    +
                                                                                    +@Component({
                                                                                    +  selector: "plh-parent-point-counter",
                                                                                    +  templateUrl: "./parent-point-counter.component.html",
                                                                                    +  styleUrls: ["./parent-point-counter.component.scss"],
                                                                                    +})
                                                                                    +export class TmplParentPointCounterComponent
                                                                                    +  extends TemplateBaseComponent
                                                                                    +  implements OnInit, OnChanges
                                                                                    +{
                                                                                    +  public icon_src: string | null;
                                                                                    +  public count: number | null;
                                                                                    +
                                                                                    +  constructor() {
                                                                                    +    super();
                                                                                    +  }
                                                                                    +
                                                                                    +  ngOnInit() {
                                                                                    +    this.getParams();
                                                                                    +  }
                                                                                    +
                                                                                    +  ngOnChanges() {
                                                                                    +    this.count = getNumberParamFromTemplateRow(this._row, "count", null);
                                                                                    +  }
                                                                                    +
                                                                                    +  getParams() {
                                                                                    +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", null);
                                                                                    +    this.count = getNumberParamFromTemplateRow(this._row, "count", null);
                                                                                    +  }
                                                                                    +}
                                                                                    +
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    <div class="point_wrapper margin-t-regular">
                                                                                    +  <div class="container">
                                                                                    +    <div class="icon">
                                                                                    +      <img *ngIf="icon_src" [src]="icon_src | plhAsset" />
                                                                                    +      <div *ngIf="count && count >= 0" class="count">{{ count }}</div>
                                                                                    +    </div>
                                                                                    +    <div class="text">{{ _row.value }}</div>
                                                                                    +  </div>
                                                                                    +</div>
                                                                                    +
                                                                                    +
                                                                                    + +
                                                                                    +

                                                                                    + ./parent-point-counter.component.scss +

                                                                                    +
                                                                                    .point_wrapper {
                                                                                    +  display: flex;
                                                                                    +  justify-content: center;
                                                                                    +  .container {
                                                                                    +    display: flex;
                                                                                    +    align-items: center;
                                                                                    +    width: 100%;
                                                                                    +  }
                                                                                    +  .icon {
                                                                                    +    flex: 1;
                                                                                    +    max-width: 40px;
                                                                                    +    max-height: 40px;
                                                                                    +    position: relative;
                                                                                    +    margin-right: var(--regular-margin);
                                                                                    +    margin-left: var(--regular-margin);
                                                                                    +    img {
                                                                                    +      width: 100%;
                                                                                    +    }
                                                                                    +    .count {
                                                                                    +      position: absolute;
                                                                                    +      color: var(--ion-color-primary);
                                                                                    +      top: 50%;
                                                                                    +      left: 50%;
                                                                                    +      transform: translate(-50%, -50%);
                                                                                    +    }
                                                                                    +  }
                                                                                    +  .text {
                                                                                    +    flex: 4;
                                                                                    +    font-size: var(--font-size-text-large);
                                                                                    +    color: var(--ion-color-primary);
                                                                                    +  }
                                                                                    +}
                                                                                    +
                                                                                    +
                                                                                    + +
                                                                                    +
                                                                                    +
                                                                                    +
                                                                                    + Legend +
                                                                                    +
                                                                                    +
                                                                                    Html element +
                                                                                    +
                                                                                    +
                                                                                    Component +
                                                                                    +
                                                                                    +
                                                                                    Html element with directive +
                                                                                    +
                                                                                    +
                                                                                    + + +
                                                                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                    +
                                                                                    +

                                                                                    results matching ""

                                                                                    +
                                                                                      +
                                                                                      +
                                                                                      +

                                                                                      No results matching ""

                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplPdfComponent.html b/documentation/docs/generated/components/TmplPdfComponent.html new file mode 100644 index 0000000000..ce4ddcd6e6 --- /dev/null +++ b/documentation/docs/generated/components/TmplPdfComponent.html @@ -0,0 +1,542 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                      +
                                                                                      + + +
                                                                                      +
                                                                                      + + + + + + + + +
                                                                                      +

                                                                                      +

                                                                                      File

                                                                                      +

                                                                                      +

                                                                                      + src/app/shared/components/template/components/pdf/pdf.component.ts +

                                                                                      + + + +

                                                                                      +

                                                                                      Extends

                                                                                      +

                                                                                      +

                                                                                      + TemplateBaseComponent +

                                                                                      + +

                                                                                      +

                                                                                      Implements

                                                                                      +

                                                                                      +

                                                                                      + OnInit +

                                                                                      + + +
                                                                                      +

                                                                                      Metadata

                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                      + +
                                                                                      +

                                                                                      Index

                                                                                      + + + + + + + + + + + + + + + + + + + + + +
                                                                                      +
                                                                                      Properties
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      Methods
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      + +
                                                                                      +

                                                                                      Constructor

                                                                                      + + + + + + + + + + +
                                                                                      +constructor() +
                                                                                      + +
                                                                                      +
                                                                                      + + + + + +
                                                                                      + +

                                                                                      + Methods +

                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                      + + + getParams + + +
                                                                                      +getParams() +
                                                                                      + +
                                                                                      + +
                                                                                      + Returns : void + +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + +

                                                                                      + Properties +

                                                                                      + + + + + + + + + + + + + + +
                                                                                      + + + errorMessage + + +
                                                                                      + Type : string + +
                                                                                      + +
                                                                                      + + + + + + + + + + + + + + +
                                                                                      + + + legacyBrowser + + +
                                                                                      + Default value : false +
                                                                                      + +
                                                                                      + + + + + + + + + + + + + + +
                                                                                      + + + startingPage + + +
                                                                                      + Type : number + +
                                                                                      + +
                                                                                      +
                                                                                      + +
                                                                                      + + +
                                                                                      +
                                                                                      import { Component, OnInit, ViewEncapsulation } from "@angular/core";
                                                                                      +import { TemplateBaseComponent } from "../base";
                                                                                      +import { pdfDefaultOptions } from "ngx-extended-pdf-viewer";
                                                                                      +import { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                      +import { isLegacyBrowser } from "src/app/shared/utils";
                                                                                      +
                                                                                      +@Component({
                                                                                      +  selector: "plh-pdf",
                                                                                      +  templateUrl: "./pdf.component.html",
                                                                                      +  styleUrls: ["./pdf.component.scss"],
                                                                                      +  // Allow override of global pdf viewer styles
                                                                                      +  encapsulation: ViewEncapsulation.None,
                                                                                      +})
                                                                                      +export class TmplPdfComponent extends TemplateBaseComponent implements OnInit {
                                                                                      +  startingPage: number;
                                                                                      +  legacyBrowser = false;
                                                                                      +  errorMessage: string;
                                                                                      +
                                                                                      +  constructor() {
                                                                                      +    super();
                                                                                      +    // name of folder pdf viewer assets copied to as declared in `angular.json`
                                                                                      +    pdfDefaultOptions.assetsFolder = "assets/comp-pdf";
                                                                                      +    // additional locales are currently excluded from main build
                                                                                      +    pdfDefaultOptions.locale = "en-GB";
                                                                                      +  }
                                                                                      +
                                                                                      +  ngOnInit() {
                                                                                      +    this.getParams();
                                                                                      +    this.legacyBrowser = isLegacyBrowser();
                                                                                      +  }
                                                                                      +
                                                                                      +  getParams() {
                                                                                      +    this.startingPage = getNumberParamFromTemplateRow(this._row, "starting_page", 1);
                                                                                      +    this.errorMessage = getStringParamFromTemplateRow(
                                                                                      +      this._row,
                                                                                      +      "error_message",
                                                                                      +      "Embedded PDFs are not supported in this browser, please use an up-to-date version of Google Chrome to view"
                                                                                      +    );
                                                                                      +  }
                                                                                      +}
                                                                                      +
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      <div class="pdf-viewer">
                                                                                      +  <ngx-extended-pdf-viewer
                                                                                      +    *ngIf="!legacyBrowser"
                                                                                      +    [src]="_row.value | plhAsset"
                                                                                      +    [page]="startingPage"
                                                                                      +    [customToolbar]="customToolbar"
                                                                                      +    [showBorders]="false"
                                                                                      +    [mobileFriendlyZoom]="'1.3'"
                                                                                      +    [height]="'80%'"
                                                                                      +    [textLayer]="false"
                                                                                      +    [backgroundColor]="'var(--ion-color-gray-light)'"
                                                                                      +    [zoom]="'page-width'"
                                                                                      +  >
                                                                                      +  </ngx-extended-pdf-viewer>
                                                                                      +  <div class="error-message" *ngIf="legacyBrowser">
                                                                                      +    {{ errorMessage }}
                                                                                      +  </div>
                                                                                      +</div>
                                                                                      +
                                                                                      +<!-- Custom toolbar examples here: https://pdfviewer.net/extended-pdf-viewer/custom-toolbar -->
                                                                                      +<ng-template #customToolbar>
                                                                                      +  <div id="toolbarViewer">
                                                                                      +    <div [class.invisible]="false" id="toolbarViewerMiddle">
                                                                                      +      <pdf-zoom-out id="zoomOut"></pdf-zoom-out>
                                                                                      +      <pdf-zoom-in id="zoomIn"></pdf-zoom-in>
                                                                                      +    </div>
                                                                                      +  </div>
                                                                                      +</ng-template>
                                                                                      +
                                                                                      +
                                                                                      + +
                                                                                      +

                                                                                      + ./pdf.component.scss +

                                                                                      +
                                                                                      ngx-extended-pdf-viewer {
                                                                                      +  #toolbarViewer {
                                                                                      +    background-color: var(--ion-color-primary);
                                                                                      +  }
                                                                                      +  #mainContainer {
                                                                                      +    min-width: 250px !important;
                                                                                      +  }
                                                                                      +  .toolbarButton {
                                                                                      +    color: var(--ion-color-primary-contrast) !important;
                                                                                      +  }
                                                                                      +}
                                                                                      +
                                                                                      +.pdf-viewer > .error-message {
                                                                                      +  font-size: var(--buttons-font-size-small);
                                                                                      +  font-weight: var(--font-weight-standard);
                                                                                      +  color: var(--ion-color-primary);
                                                                                      +}
                                                                                      +
                                                                                      +
                                                                                      + +
                                                                                      +
                                                                                      +
                                                                                      +
                                                                                      + Legend +
                                                                                      +
                                                                                      +
                                                                                      Html element +
                                                                                      +
                                                                                      +
                                                                                      Component +
                                                                                      +
                                                                                      +
                                                                                      Html element with directive +
                                                                                      +
                                                                                      +
                                                                                      + + +
                                                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                      +
                                                                                      +

                                                                                      results matching ""

                                                                                      +
                                                                                        +
                                                                                        +
                                                                                        +

                                                                                        No results matching ""

                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplQRCodeComponent.html b/documentation/docs/generated/components/TmplQRCodeComponent.html new file mode 100644 index 0000000000..0c049e463f --- /dev/null +++ b/documentation/docs/generated/components/TmplQRCodeComponent.html @@ -0,0 +1,275 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                        +
                                                                                        + + +
                                                                                        +
                                                                                        + + + + + + + + +
                                                                                        +

                                                                                        +

                                                                                        File

                                                                                        +

                                                                                        +

                                                                                        + src/app/shared/components/template/components/qr-code/qr-code.component.ts +

                                                                                        + + + +

                                                                                        +

                                                                                        Extends

                                                                                        +

                                                                                        +

                                                                                        + TemplateBaseComponent +

                                                                                        + + + +
                                                                                        +

                                                                                        Metadata

                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                        + + + + + + + + + +
                                                                                        + + +
                                                                                        +
                                                                                        import { Component } from "@angular/core";
                                                                                        +import { TemplateBaseComponent } from "../base";
                                                                                        +
                                                                                        +@Component({
                                                                                        +  selector: "plh-qr-code",
                                                                                        +  templateUrl: "./qr-code.component.html",
                                                                                        +  styleUrls: ["./qr-code.component.scss"],
                                                                                        +})
                                                                                        +export class TmplQRCodeComponent extends TemplateBaseComponent {}
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        <div class="image-wrapper">
                                                                                        +  <img src="{{ _row.value | qrCode | async }}" alt="{{ _row.value }}" />
                                                                                        +</div>
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        +

                                                                                        + ./qr-code.component.scss +

                                                                                        +
                                                                                        @use "/src/theme/mixins";
                                                                                        +
                                                                                        +.image-wrapper {
                                                                                        +  @include mixins.flex-centered;
                                                                                        +  width: 100%;
                                                                                        +}
                                                                                        +
                                                                                        +
                                                                                        + +
                                                                                        +
                                                                                        +
                                                                                        +
                                                                                        + Legend +
                                                                                        +
                                                                                        +
                                                                                        Html element +
                                                                                        +
                                                                                        +
                                                                                        Component +
                                                                                        +
                                                                                        +
                                                                                        Html element with directive +
                                                                                        +
                                                                                        +
                                                                                        + + +
                                                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                        +
                                                                                        +

                                                                                        results matching ""

                                                                                        +
                                                                                          +
                                                                                          +
                                                                                          +

                                                                                          No results matching ""

                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplRadioButtonGridComponent.html b/documentation/docs/generated/components/TmplRadioButtonGridComponent.html new file mode 100644 index 0000000000..1549656000 --- /dev/null +++ b/documentation/docs/generated/components/TmplRadioButtonGridComponent.html @@ -0,0 +1,625 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          + + +
                                                                                          +
                                                                                          + + + + + + + + +
                                                                                          +

                                                                                          +

                                                                                          File

                                                                                          +

                                                                                          +

                                                                                          + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts +

                                                                                          + + + +

                                                                                          +

                                                                                          Extends

                                                                                          +

                                                                                          +

                                                                                          + TemplateBaseComponent +

                                                                                          + +

                                                                                          +

                                                                                          Implements

                                                                                          +

                                                                                          +

                                                                                          + ITemplateRowProps +

                                                                                          + + +
                                                                                          +

                                                                                          Metadata

                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                          + +
                                                                                          +

                                                                                          Index

                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          Properties
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          Inputs
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          Accessors
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          + + +
                                                                                          +

                                                                                          Inputs

                                                                                          + + + + + + + + + + + + +
                                                                                          + + row +
                                                                                          + Type : FlowTypes.TemplateRow + +
                                                                                          + +
                                                                                          +
                                                                                          + + + + +
                                                                                          + +

                                                                                          + Properties +

                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                          + + + Public + parameter_list + + +
                                                                                          + Type : IRadioButtonGridParams + +
                                                                                          + +
                                                                                          +

                                                                                          Authoring parameters

                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +

                                                                                          + Accessors +

                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                          + + row +
                                                                                          + setrow(row: FlowTypes.TemplateRow) +
                                                                                          + +
                                                                                          + +
                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                          NameTypeOptional
                                                                                          row + FlowTypes.TemplateRow + + No +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + Returns : void + +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + + +
                                                                                          +
                                                                                          import { Component, Input } from "@angular/core";
                                                                                          +import { TemplateBaseComponent } from "../base";
                                                                                          +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                          +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                          +import { objectToArray } from "../../utils";
                                                                                          +
                                                                                          +interface IAnswerListItem {
                                                                                          +  name: string;
                                                                                          +  image?: string;
                                                                                          +  text?: string;
                                                                                          +}
                                                                                          +
                                                                                          +interface IRadioButtonGridParams {
                                                                                          +  /** List of options presented as radio items */
                                                                                          +  answer_list: IAnswerListItem[];
                                                                                          +  /**
                                                                                          +   * Minimum item width, will increase to fit grid.
                                                                                          +   * Default '200px'
                                                                                          +   **/
                                                                                          +  item_width: string;
                                                                                          +  /**
                                                                                          +   * Maximum grid width, if specified will center items in available space.
                                                                                          +   * Default '100%'
                                                                                          +   **/
                                                                                          +  grid_width: string;
                                                                                          +  /**
                                                                                          +   * Spacing between grid items.
                                                                                          +   * Default '16px'
                                                                                          +   **/
                                                                                          +  grid_gap: string;
                                                                                          +}
                                                                                          +
                                                                                          +@Component({
                                                                                          +  selector: "plh-radio-button-grid",
                                                                                          +  templateUrl: "./radio-button-grid.component.html",
                                                                                          +  styleUrls: ["./radio-button-grid.component.scss"],
                                                                                          +})
                                                                                          +export class TmplRadioButtonGridComponent
                                                                                          +  extends TemplateBaseComponent
                                                                                          +  implements ITemplateRowProps
                                                                                          +{
                                                                                          +  /**
                                                                                          +   * Computed item array from input parameters
                                                                                          +   * @ignore
                                                                                          +   */
                                                                                          +  public radioItems: Array<IAnswerListItem>;
                                                                                          +
                                                                                          +  /**
                                                                                          +   * Computed grid style from input parameters
                                                                                          +   * @ignore
                                                                                          +   */
                                                                                          +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                          +
                                                                                          +  /**
                                                                                          +   * Authoring parameters
                                                                                          +   */
                                                                                          +  public parameter_list: IRadioButtonGridParams;
                                                                                          +
                                                                                          +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                          +    this._row = row;
                                                                                          +    this.setParams();
                                                                                          +  }
                                                                                          +
                                                                                          +  /**
                                                                                          +   * S
                                                                                          +   * @ignore
                                                                                          +   */
                                                                                          +  public async handleItemClick(item: IAnswerListItem) {
                                                                                          +    await this.setValue(item.name);
                                                                                          +    this.triggerActions("changed");
                                                                                          +  }
                                                                                          +
                                                                                          +  private setParams() {
                                                                                          +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                          +    this.radioItems = this.generateItemList();
                                                                                          +    this.gridStyle = this.generateGridStyle();
                                                                                          +  }
                                                                                          +
                                                                                          +  /**
                                                                                          +   * Create a list of styles to be passed into ngStyle
                                                                                          +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                          +   */
                                                                                          +  private generateGridStyle() {
                                                                                          +    const minItemWidth = this.parameter_list.item_width || "200px";
                                                                                          +    const maxGridWidth = this.parameter_list.grid_width || "100%";
                                                                                          +    const gridGap = this.parameter_list.grid_gap || "16px";
                                                                                          +
                                                                                          +    const style: Partial<CSSStyleDeclaration> = {
                                                                                          +      // center grid with maximum width
                                                                                          +      maxWidth: maxGridWidth,
                                                                                          +      margin: "auto",
                                                                                          +      // apply fixed gap between grid items
                                                                                          +      gap: gridGap,
                                                                                          +      // fit columns with target item width
                                                                                          +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                          +      // make all rows same height
                                                                                          +      gridAutoRows: "1fr",
                                                                                          +    };
                                                                                          +    return style;
                                                                                          +  }
                                                                                          +
                                                                                          +  /**
                                                                                          +   * Adapted from radio-group.component
                                                                                          +   * Convert input answer_list to rendered item list
                                                                                          +   */
                                                                                          +  private generateItemList() {
                                                                                          +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                          +    // Convert if datalist input (hashmap to array)
                                                                                          +    if (answerList.constructor === {}.constructor) {
                                                                                          +      answerList = objectToArray(answerList);
                                                                                          +    }
                                                                                          +    const radioItems: IAnswerListItem[] = answerList.map(
                                                                                          +      (item: string | Record<string, string>) => {
                                                                                          +        if (typeof item === "string") {
                                                                                          +          return this.parseAnswerListItemString(item);
                                                                                          +        }
                                                                                          +        return item as any;
                                                                                          +      }
                                                                                          +    );
                                                                                          +    return radioItems;
                                                                                          +  }
                                                                                          +
                                                                                          +  /**
                                                                                          +   * convert string to relevant mappings
                                                                                          +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                          +   */
                                                                                          +  private parseAnswerListItemString(item: string) {
                                                                                          +    const itemObj: IAnswerListItem = {} as any;
                                                                                          +    const stringProperties = item.split("|");
                                                                                          +    stringProperties.forEach((s) => {
                                                                                          +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                          +      if (field && value) {
                                                                                          +        itemObj[field] = value;
                                                                                          +      }
                                                                                          +    });
                                                                                          +    return itemObj;
                                                                                          +  }
                                                                                          +}
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          <div class="radio-grid" [ngStyle]="gridStyle">
                                                                                          +  <div
                                                                                          +    *ngFor="let item of radioItems"
                                                                                          +    class="item"
                                                                                          +    (click)="handleItemClick(item)"
                                                                                          +    [attr.data-selected]="item.name === _row.value"
                                                                                          +  >
                                                                                          +    <div class="item-image-container" *ngIf="item.image">
                                                                                          +      <img class="item-image" [src]="item.image | plhAsset" />
                                                                                          +    </div>
                                                                                          +    <div class="item-text">{{ item.text }}</div>
                                                                                          +  </div>
                                                                                          +</div>
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +

                                                                                          + ./radio-button-grid.component.scss +

                                                                                          +
                                                                                          // @use "/src/theme/mixins";
                                                                                          +
                                                                                          +$background-selected: var(
                                                                                          +  --radio-group-background-selected,
                                                                                          +  var(--gradient-primary-light-vertical)
                                                                                          +);
                                                                                          +$border: var(--ion-border-standard);
                                                                                          +$border-radius: var(--ion-border-radius-standard);
                                                                                          +$text-size: var(--radio-button-font-size, 1.25rem);
                                                                                          +$text-color: var(--radio-button-font-color, var(--ion-color-primary));
                                                                                          +
                                                                                          +.radio-grid {
                                                                                          +  display: grid;
                                                                                          +}
                                                                                          +.item {
                                                                                          +  border: $border;
                                                                                          +  border-radius: 15px;
                                                                                          +  text-align: center;
                                                                                          +  padding: 8px;
                                                                                          +  background: white;
                                                                                          +  cursor: pointer;
                                                                                          +}
                                                                                          +.item[data-selected="true"] {
                                                                                          +  background: $background-selected;
                                                                                          +}
                                                                                          +.item-text {
                                                                                          +  font-size: $text-size;
                                                                                          +  color: $text-color;
                                                                                          +}
                                                                                          +
                                                                                          +
                                                                                          + +
                                                                                          +
                                                                                          +
                                                                                          +
                                                                                          + Legend +
                                                                                          +
                                                                                          +
                                                                                          Html element +
                                                                                          +
                                                                                          +
                                                                                          Component +
                                                                                          +
                                                                                          +
                                                                                          Html element with directive +
                                                                                          +
                                                                                          +
                                                                                          + + +
                                                                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                          +
                                                                                          +

                                                                                          results matching ""

                                                                                          +
                                                                                            +
                                                                                            +
                                                                                            +

                                                                                            No results matching ""

                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplRadioGroupComponent.html b/documentation/docs/generated/components/TmplRadioGroupComponent.html new file mode 100644 index 0000000000..e074458865 --- /dev/null +++ b/documentation/docs/generated/components/TmplRadioGroupComponent.html @@ -0,0 +1,1253 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                            +
                                                                                            + + +
                                                                                            +
                                                                                            + + + + + + + + +
                                                                                            +

                                                                                            +

                                                                                            File

                                                                                            +

                                                                                            +

                                                                                            + src/app/shared/components/template/components/radio-group/radio-group.component.ts +

                                                                                            + + + +

                                                                                            +

                                                                                            Extends

                                                                                            +

                                                                                            +

                                                                                            + TemplateBaseComponent +

                                                                                            + +

                                                                                            +

                                                                                            Implements

                                                                                            +

                                                                                            +

                                                                                            + ITemplateRowProps + OnInit + OnDestroy +

                                                                                            + + +
                                                                                            +

                                                                                            Metadata

                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                            + +
                                                                                            +

                                                                                            Index

                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                            +
                                                                                            Properties
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            Methods
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            Inputs
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            + + +
                                                                                            +

                                                                                            Inputs

                                                                                            + + + + + + + + + + + + +
                                                                                            + + changeTheme +
                                                                                            + Type : EventEmitter<boolean> + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + +
                                                                                            + + parent +
                                                                                            + Type : TemplateContainerComponent + +
                                                                                            + +
                                                                                            +
                                                                                            + + + +
                                                                                            + +

                                                                                            + Methods +

                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                            + + + createArrayBtnElement + + +
                                                                                            +createArrayBtnElement(answer_list: string[]) +
                                                                                            + +
                                                                                            +

                                                                                            Answer lists are formatted as strings with to indicate properties, e.g. +[ +"name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg", +"name:unhappy | image:plh_images/stickers/faces/unhappy.svg" +] +Convert to an object array, with key value pairs extracted from the string values

                                                                                            +
                                                                                            + +
                                                                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                            NameTypeOptional
                                                                                            answer_list + string[] + + No +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + Returns : any + +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                            + + + getFlexWidth + + +
                                                                                            +getFlexWidth() +
                                                                                            + +
                                                                                            + +
                                                                                            + Returns : void + +
                                                                                            +
                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                            + + + getParams + + +
                                                                                            +getParams() +
                                                                                            + +
                                                                                            + +
                                                                                            + Returns : void + +
                                                                                            +
                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                            + + + Public + Async + handleRadioButtonClick + + +
                                                                                            + + handleRadioButtonClick(selectedValue: string) +
                                                                                            + +
                                                                                            + +
                                                                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                            NameTypeOptional
                                                                                            selectedValue + string + + No +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + Returns : any + +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + +

                                                                                            + Properties +

                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + answer_list + + +
                                                                                            + Type : string[] + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + arrayOfBtn + + +
                                                                                            + Type : Array<IButton> + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + flexWidth + + +
                                                                                            + Type : string + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + groupName + + +
                                                                                            + Type : string + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                            + + + labelImage + + +
                                                                                            + Type : ElementRef + +
                                                                                            + Decorators : +
                                                                                            + + @ViewChild('labelImage', {static: false, read: true})
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + options_per_row + + +
                                                                                            + Type : number + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + radioButtonType + + +
                                                                                            + Type : string | null + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + style + + +
                                                                                            + Type : string + +
                                                                                            + +
                                                                                            + + + + + + + + + + + + + + +
                                                                                            + + + windowWidth + + +
                                                                                            + Type : number + +
                                                                                            + +
                                                                                            +
                                                                                            + +
                                                                                            + + +
                                                                                            +
                                                                                            import {
                                                                                            +  Component,
                                                                                            +  ElementRef,
                                                                                            +  EventEmitter,
                                                                                            +  Input,
                                                                                            +  OnDestroy,
                                                                                            +  OnInit,
                                                                                            +  ViewChild,
                                                                                            +} from "@angular/core";
                                                                                            +import { TemplateBaseComponent } from "../base";
                                                                                            +import { ITemplateRowProps } from "../../models";
                                                                                            +import { TemplateContainerComponent } from "../../template-container.component";
                                                                                            +import {
                                                                                            +  getNumberParamFromTemplateRow,
                                                                                            +  getParamFromTemplateRow,
                                                                                            +  getStringParamFromTemplateRow,
                                                                                            +} from "../../../../utils";
                                                                                            +import { ReplaySubject } from "rxjs";
                                                                                            +import { objectToArray } from "../../utils/template-utils";
                                                                                            +
                                                                                            +interface IButton {
                                                                                            +  name: string | null;
                                                                                            +  image: string | null;
                                                                                            +  text: string | null;
                                                                                            +  image_checked: string | null;
                                                                                            +}
                                                                                            +
                                                                                            +@Component({
                                                                                            +  selector: "plh-radio-group",
                                                                                            +  templateUrl: "./radio-group.component.html",
                                                                                            +  styleUrls: ["./radio-group.component.scss"],
                                                                                            +})
                                                                                            +export class TmplRadioGroupComponent
                                                                                            +  extends TemplateBaseComponent
                                                                                            +  implements ITemplateRowProps, OnInit, OnDestroy
                                                                                            +{
                                                                                            +  @Input() changeTheme: EventEmitter<boolean>;
                                                                                            +  @Input() parent: TemplateContainerComponent;
                                                                                            +  @ViewChild("labelImage", { static: false, read: true }) labelImage: ElementRef;
                                                                                            +  arrayOfBtn: Array<IButton>;
                                                                                            +  groupName: string;
                                                                                            +  windowWidth: number;
                                                                                            +  private componentDestroyed$ = new ReplaySubject(1);
                                                                                            +  flexWidth: string;
                                                                                            +
                                                                                            +  // Parameters
                                                                                            +  answer_list: string[];
                                                                                            +  options_per_row: number;
                                                                                            +  radioButtonType: string | null;
                                                                                            +  style: string;
                                                                                            +
                                                                                            +  ngOnInit() {
                                                                                            +    this.getParams();
                                                                                            +  }
                                                                                            +
                                                                                            +  getParams() {
                                                                                            +    const row = this._row;
                                                                                            +    // extract properties from parameters
                                                                                            +    this.radioButtonType = getParamFromTemplateRow(row, "radio_button_type", "btn_text");
                                                                                            +    this.options_per_row = getNumberParamFromTemplateRow(this._row, "options_per_row", 3);
                                                                                            +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                                                            +    this.windowWidth = window.innerWidth;
                                                                                            +
                                                                                            +    // convert string answer lists to formatted objects
                                                                                            +    this.answer_list = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                            +    this.arrayOfBtn = this.createArrayBtnElement(this.answer_list);
                                                                                            +
                                                                                            +    this.getFlexWidth();
                                                                                            +    this.groupName = this._row._nested_name;
                                                                                            +  }
                                                                                            +
                                                                                            +  public async handleRadioButtonClick(selectedValue: string) {
                                                                                            +    await this.setValue(selectedValue);
                                                                                            +    this.triggerActions("changed");
                                                                                            +  }
                                                                                            +
                                                                                            +  /**
                                                                                            +   * Answer lists are formatted as strings with to indicate properties, e.g.
                                                                                            +   * [
                                                                                            +   * "name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg",
                                                                                            +   * "name:unhappy | image:plh_images/stickers/faces/unhappy.svg"
                                                                                            +   * ]
                                                                                            +   * Convert to an object array, with key value pairs extracted from the string values
                                                                                            +   */
                                                                                            +  createArrayBtnElement(answer_list: string[]) {
                                                                                            +    if (answer_list) {
                                                                                            +      // NOTE CC 2021-08-07 - datalists might be used which currently only format as objects
                                                                                            +      // manually convert to array if required (temp method until better handling found)
                                                                                            +      if (typeof answer_list === "object") {
                                                                                            +        answer_list = objectToArray(answer_list);
                                                                                            +      }
                                                                                            +      const arrayOfBtn = answer_list.map((item) => {
                                                                                            +        // convert string to relevant mappings
                                                                                            +        let itemObj: IButton = {} as any;
                                                                                            +        if (typeof item === "string") {
                                                                                            +          const stringProperties = item.split("|");
                                                                                            +          stringProperties.forEach((s) => {
                                                                                            +            const [field, value] = s.split(":").map((v) => v.trim());
                                                                                            +            if (field && value) {
                                                                                            +              itemObj[field] = value;
                                                                                            +            }
                                                                                            +          });
                                                                                            +        }
                                                                                            +        // NOTE CC 2021-08-07 - allow passing of object, not just string for conversion
                                                                                            +        else {
                                                                                            +          itemObj = item;
                                                                                            +        }
                                                                                            +        const processed = this.processButtonFields(itemObj);
                                                                                            +        return processed;
                                                                                            +      });
                                                                                            +      // TODO - CC 2023-03-15 could lead to strange behaviour, to review
                                                                                            +      // (checks every item but keeps overriding the button type depending on what it finds)
                                                                                            +      arrayOfBtn.forEach((item) => {
                                                                                            +        if (item.image && item.text) {
                                                                                            +          this.radioButtonType = "btn_both";
                                                                                            +        } else if (!item.image && item.text) {
                                                                                            +          this.radioButtonType = "btn_text";
                                                                                            +        } else if (item.image && !item.text) {
                                                                                            +          this.radioButtonType = "btn_image";
                                                                                            +        }
                                                                                            +      });
                                                                                            +      return arrayOfBtn;
                                                                                            +    }
                                                                                            +  }
                                                                                            +  private processButtonFields(button: IButton) {
                                                                                            +    const processed: IButton = {
                                                                                            +      text: null,
                                                                                            +      image: null,
                                                                                            +      name: null,
                                                                                            +      image_checked: null,
                                                                                            +    };
                                                                                            +    Object.entries(button).forEach(([field, value]) => {
                                                                                            +      switch (field) {
                                                                                            +        case "image":
                                                                                            +          processed[field] = value;
                                                                                            +          break;
                                                                                            +        case "image_checked":
                                                                                            +          processed[field] = value;
                                                                                            +          break;
                                                                                            +        default:
                                                                                            +          processed[field] = value;
                                                                                            +      }
                                                                                            +    });
                                                                                            +    return processed;
                                                                                            +  }
                                                                                            +
                                                                                            +  getFlexWidth() {
                                                                                            +    this.flexWidth = `0 1 ${100 / this.options_per_row - 7}%`;
                                                                                            +  }
                                                                                            +
                                                                                            +  ngOnDestroy() {
                                                                                            +    this.componentDestroyed$.next(true);
                                                                                            +    this.componentDestroyed$.complete();
                                                                                            +  }
                                                                                            +}
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            <div class="wrapper-radio-group margin-t-large">
                                                                                            +  <div class="container" [ngSwitch]="radioButtonType">
                                                                                            +    <div class="btn_triangle dse" *ngSwitchCase="'btn_text'">
                                                                                            +      <div
                                                                                            +        class="btn_triangle_container center"
                                                                                            +        [style.flex]="flexWidth"
                                                                                            +        [class]="style"
                                                                                            +        *ngFor="let item of arrayOfBtn"
                                                                                            +      >
                                                                                            +        <label class="center standard-label" [class.checked]="item.name === _row.value">
                                                                                            +          <input
                                                                                            +            #el
                                                                                            +            type="radio"
                                                                                            +            [value]="item.name"
                                                                                            +            [checked]="el.value === _row.value"
                                                                                            +            (click)="handleRadioButtonClick(el.value)"
                                                                                            +            [name]="groupName"
                                                                                            +            [disabled]="_row.disabled"
                                                                                            +          />
                                                                                            +          <span>{{ item.text | translate }}</span>
                                                                                            +        </label>
                                                                                            +      </div>
                                                                                            +    </div>
                                                                                            +    <div class="btn_square dse" *ngSwitchCase="'btn_both'">
                                                                                            +      <div
                                                                                            +        class="btn_square_container center"
                                                                                            +        [class]="style"
                                                                                            +        *ngFor="let item of arrayOfBtn"
                                                                                            +        [style.flex]="flexWidth"
                                                                                            +      >
                                                                                            +        <label class="center standard-label" [class.checked]="item.name === _row.value">
                                                                                            +          <img
                                                                                            +            [src]="(el.checked && item.image_checked ? item.image_checked : item.image) | plhAsset"
                                                                                            +          />
                                                                                            +
                                                                                            +          <input
                                                                                            +            #el
                                                                                            +            type="radio"
                                                                                            +            [value]="item.name"
                                                                                            +            [checked]="el.value === _row.value"
                                                                                            +            (click)="handleRadioButtonClick(el.value)"
                                                                                            +            [name]="groupName"
                                                                                            +            [disabled]="_row.disabled"
                                                                                            +          />
                                                                                            +          <span>{{ item.text | translate }}</span>
                                                                                            +        </label>
                                                                                            +      </div>
                                                                                            +    </div>
                                                                                            +    <div class="btn_image dse" *ngSwitchCase="'btn_image'">
                                                                                            +      <div
                                                                                            +        class="btn_image_container center"
                                                                                            +        [class]="style"
                                                                                            +        *ngFor="let item of arrayOfBtn"
                                                                                            +        [style.flex]="flexWidth"
                                                                                            +      >
                                                                                            +        <label class="center standard-label" [class.checked]="item.name === _row.value">
                                                                                            +          <img
                                                                                            +            [src]="(el.checked && item.image_checked ? item.image_checked : item.image) | plhAsset"
                                                                                            +          />
                                                                                            +          <input
                                                                                            +            #el
                                                                                            +            type="radio"
                                                                                            +            [value]="item.name"
                                                                                            +            [checked]="el.value === _row.value"
                                                                                            +            (click)="handleRadioButtonClick(el.value)"
                                                                                            +            [name]="groupName"
                                                                                            +            [disabled]="_row.disabled"
                                                                                            +          />
                                                                                            +          <span> {{ item.text | translate }} </span>
                                                                                            +        </label>
                                                                                            +      </div>
                                                                                            +    </div>
                                                                                            +    <div *ngSwitchDefault>Invalid type button</div>
                                                                                            +  </div>
                                                                                            +</div>
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            +

                                                                                            + ./radio-group.component.scss +

                                                                                            +
                                                                                            @use "/src/theme/mixins";
                                                                                            +
                                                                                            +$background-selected: var(
                                                                                            +  --radio-group-background-selected,
                                                                                            +  var(--gradient-primary-light-vertical)
                                                                                            +);
                                                                                            +$primary-radio-border: 2px solid;
                                                                                            +$primary-radio-border-rd: 15px;
                                                                                            +
                                                                                            +img {
                                                                                            +  padding: 5px;
                                                                                            +}
                                                                                            +
                                                                                            +.wrapper-radio-group {
                                                                                            +  width: 100%;
                                                                                            +  height: 100%;
                                                                                            +
                                                                                            +  .container {
                                                                                            +    @include mixins.flex-centered;
                                                                                            +    margin-bottom: var(--regular-margin);
                                                                                            +
                                                                                            +    .btn_triangle {
                                                                                            +      &_container {
                                                                                            +        width: 150px;
                                                                                            +        height: 44px;
                                                                                            +        margin: 5px;
                                                                                            +
                                                                                            +        label {
                                                                                            +          height: 44px;
                                                                                            +          background-color: var(--ion-color-primary-contrast);
                                                                                            +        }
                                                                                            +        .checked {
                                                                                            +          background: $background-selected;
                                                                                            +          transition: 0.3s linear;
                                                                                            +        }
                                                                                            +      }
                                                                                            +    }
                                                                                            +
                                                                                            +    .dse {
                                                                                            +      display: flex;
                                                                                            +      flex-wrap: wrap;
                                                                                            +      justify-content: space-around;
                                                                                            +      width: 100%;
                                                                                            +      height: 100%;
                                                                                            +    }
                                                                                            +
                                                                                            +    .btn_square {
                                                                                            +      &_container {
                                                                                            +        label {
                                                                                            +          width: 115px;
                                                                                            +          height: 115px;
                                                                                            +          padding: 5px;
                                                                                            +          max-width: calc(6rem * 0.9);
                                                                                            +          max-height: calc(115px * 0.9);
                                                                                            +          min-height: calc(115px * 0.9);
                                                                                            +          min-width: unset;
                                                                                            +          @media (max-width: 320px) {
                                                                                            +            max-height: calc(100px * 0.9);
                                                                                            +            max-width: calc(5rem * 0.9);
                                                                                            +            min-height: calc(115px * 0.8);
                                                                                            +          }
                                                                                            +          @media (max-width: 319px) {
                                                                                            +            max-height: 27vw;
                                                                                            +            max-width: 27vw;
                                                                                            +            min-height: unset;
                                                                                            +          }
                                                                                            +        }
                                                                                            +      }
                                                                                            +    }
                                                                                            +
                                                                                            +    .btn_image {
                                                                                            +      &_container {
                                                                                            +        label {
                                                                                            +          width: 115px;
                                                                                            +          height: 115px;
                                                                                            +          min-width: unset;
                                                                                            +          max-width: calc(6rem * 0.9);
                                                                                            +          max-height: calc(115px * 0.9);
                                                                                            +          padding: 5px;
                                                                                            +          @media (max-width: 320px) {
                                                                                            +            max-height: calc(100px * 0.9);
                                                                                            +            max-width: calc(5rem * 0.9);
                                                                                            +            min-height: calc(115px * 0.8);
                                                                                            +          }
                                                                                            +          @media (max-width: 319px) {
                                                                                            +            max-height: 27vw;
                                                                                            +            max-width: 27vw;
                                                                                            +            min-height: unset;
                                                                                            +          }
                                                                                            +        }
                                                                                            +      }
                                                                                            +      .transparent {
                                                                                            +        .standard-label {
                                                                                            +          border: 2px solid transparent;
                                                                                            +          box-shadow: none;
                                                                                            +        }
                                                                                            +        .checked {
                                                                                            +          transition: 0.3s linear;
                                                                                            +          border: var(--ion-border-standard);
                                                                                            +          box-shadow: var(--ion-default-box-shadow);
                                                                                            +        }
                                                                                            +      }
                                                                                            +    }
                                                                                            +  }
                                                                                            +}
                                                                                            +
                                                                                            +.standard-label {
                                                                                            +  border-radius: $primary-radio-border-rd;
                                                                                            +  transition: 0.3s linear;
                                                                                            +  max-width: fit-content;
                                                                                            +  min-width: 100%;
                                                                                            +  box-shadow: var(--ion-default-box-shadow);
                                                                                            +  border: var(--ion-border-standard);
                                                                                            +  color: var(--ion-color-primary);
                                                                                            +  background: var(--ion-color-primary-contrast);
                                                                                            +}
                                                                                            +
                                                                                            +.checked {
                                                                                            +  background: $background-selected;
                                                                                            +  transition: 0.3s linear;
                                                                                            +}
                                                                                            +
                                                                                            +.smile-checked {
                                                                                            +  color: var(--ion-color-primary);
                                                                                            +  border: $primary-radio-border !important;
                                                                                            +  border-color: var(--ion-color-primary);
                                                                                            +}
                                                                                            +
                                                                                            +.center {
                                                                                            +  @include mixins.flex-centered;
                                                                                            +  flex-direction: column;
                                                                                            +}
                                                                                            +
                                                                                            +input {
                                                                                            +  width: 100%;
                                                                                            +  height: 100%;
                                                                                            +  display: none;
                                                                                            +}
                                                                                            +
                                                                                            +label {
                                                                                            +  height: 100%;
                                                                                            +  font-weight: 700;
                                                                                            +  text-align: center;
                                                                                            +  transition: 0.3s linear;
                                                                                            +}
                                                                                            +
                                                                                            +
                                                                                            + +
                                                                                            +
                                                                                            +
                                                                                            +
                                                                                            + Legend +
                                                                                            +
                                                                                            +
                                                                                            Html element +
                                                                                            +
                                                                                            +
                                                                                            Component +
                                                                                            +
                                                                                            +
                                                                                            Html element with directive +
                                                                                            +
                                                                                            +
                                                                                            + + +
                                                                                            + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                            +
                                                                                            +

                                                                                            results matching ""

                                                                                            +
                                                                                              +
                                                                                              +
                                                                                              +

                                                                                              No results matching ""

                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplRadioGroupGridComponent.html b/documentation/docs/generated/components/TmplRadioGroupGridComponent.html new file mode 100644 index 0000000000..deae31bf3a --- /dev/null +++ b/documentation/docs/generated/components/TmplRadioGroupGridComponent.html @@ -0,0 +1,610 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              + + +
                                                                                              +
                                                                                              + + + + + + + + +
                                                                                              +

                                                                                              +

                                                                                              File

                                                                                              +

                                                                                              +

                                                                                              + src/app/shared/components/template/components/radio-group-grid/radio-group-grid.component.ts +

                                                                                              + + + +

                                                                                              +

                                                                                              Extends

                                                                                              +

                                                                                              +

                                                                                              + TemplateBaseComponent +

                                                                                              + +

                                                                                              +

                                                                                              Implements

                                                                                              +

                                                                                              +

                                                                                              + ITemplateRowProps +

                                                                                              + + +
                                                                                              +

                                                                                              Metadata

                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                              + +
                                                                                              +

                                                                                              Index

                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              Properties
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              Inputs
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              Accessors
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              + + +
                                                                                              +

                                                                                              Inputs

                                                                                              + + + + + + + + + + + + +
                                                                                              + + row +
                                                                                              + Type : FlowTypes.TemplateRow + +
                                                                                              + +
                                                                                              +
                                                                                              + + + + +
                                                                                              + +

                                                                                              + Properties +

                                                                                              + + + + + + + + + + + + + + + + + +
                                                                                              + + + Protected + parameter_list + + +
                                                                                              + Type : IAuthorParameterList + +
                                                                                              + +
                                                                                              +

                                                                                              Authoring parameters

                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +

                                                                                              + Accessors +

                                                                                              + + + + + + + + + + + + + + + + + +
                                                                                              + + row +
                                                                                              + setrow(row: FlowTypes.TemplateRow) +
                                                                                              + +
                                                                                              + +
                                                                                              + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                              NameTypeOptional
                                                                                              row + FlowTypes.TemplateRow + + No +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + Returns : void + +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + + +
                                                                                              +
                                                                                              import { Component, Input } from "@angular/core";
                                                                                              +import { TemplateBaseComponent } from "../base";
                                                                                              +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                              +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                              +import { objectToArray } from "../../utils";
                                                                                              +
                                                                                              +interface IAnswerListItem {
                                                                                              +  name: string;
                                                                                              +  image?: string;
                                                                                              +  text?: string;
                                                                                              +}
                                                                                              +
                                                                                              +interface IAuthorParameterList {
                                                                                              +  /** List of options presented as radio items */
                                                                                              +  answer_list: IAnswerListItem[];
                                                                                              +  /**
                                                                                              +   * Minimum item width, will increase to fit grid
                                                                                              +   * default '200px'
                                                                                              +   **/
                                                                                              +  item_width: string;
                                                                                              +  /**
                                                                                              +   * Maximum grid width, if specified will center items in available space
                                                                                              +   * default '100%'
                                                                                              +   **/
                                                                                              +  grid_width: string;
                                                                                              +}
                                                                                              +
                                                                                              +@Component({
                                                                                              +  selector: "plh-radio-group-grid",
                                                                                              +  templateUrl: "./radio-group-grid.component.html",
                                                                                              +  styleUrls: ["./radio-group-grid.component.scss"],
                                                                                              +})
                                                                                              +export class TmplRadioGroupGridComponent
                                                                                              +  extends TemplateBaseComponent
                                                                                              +  implements ITemplateRowProps
                                                                                              +{
                                                                                              +  /**
                                                                                              +   * Computed item array from input parameters
                                                                                              +   * @ignore
                                                                                              +   */
                                                                                              +  public radioItems: Array<IAnswerListItem>;
                                                                                              +
                                                                                              +  /**
                                                                                              +   * Computed grid style from input parameters
                                                                                              +   * @ignore
                                                                                              +   */
                                                                                              +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                              +
                                                                                              +  /**
                                                                                              +   * Authoring parameters
                                                                                              +   */
                                                                                              +  protected parameter_list: IAuthorParameterList;
                                                                                              +
                                                                                              +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                              +    this._row = row;
                                                                                              +    this.setParams();
                                                                                              +  }
                                                                                              +
                                                                                              +  /**
                                                                                              +   * S
                                                                                              +   * @ignore
                                                                                              +   */
                                                                                              +  public async handleItemClick(item: IAnswerListItem) {
                                                                                              +    await this.setValue(item.name);
                                                                                              +    this.triggerActions("changed");
                                                                                              +  }
                                                                                              +
                                                                                              +  private setParams() {
                                                                                              +    this.radioItems = this.generateItemList();
                                                                                              +    this.gridStyle = this.generateGridStyle();
                                                                                              +  }
                                                                                              +
                                                                                              +  /**
                                                                                              +   * Create a list of styles to be passed into ngStyle
                                                                                              +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                              +   */
                                                                                              +  private generateGridStyle() {
                                                                                              +    const minItemWidth = getParamFromTemplateRow(this._row, "item_width", "200px");
                                                                                              +    const maxGridWidth = getParamFromTemplateRow(this._row, "grid_width", "100%");
                                                                                              +    const style: Partial<CSSStyleDeclaration> = {
                                                                                              +      // center grid with maximum width
                                                                                              +      maxWidth: maxGridWidth,
                                                                                              +      margin: "auto",
                                                                                              +      // fit columns with target item width
                                                                                              +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                              +      // make all rows same height
                                                                                              +      gridAutoRows: "1fr",
                                                                                              +    };
                                                                                              +    return style;
                                                                                              +  }
                                                                                              +
                                                                                              +  /**
                                                                                              +   * Adapted from radio-group.component
                                                                                              +   * Convert input answer_list to rendered item list
                                                                                              +   */
                                                                                              +  private generateItemList() {
                                                                                              +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                              +    // Convert if datalist input (hashmap to array)
                                                                                              +    if (answerList.constructor === {}.constructor) {
                                                                                              +      answerList = objectToArray(answerList);
                                                                                              +    }
                                                                                              +    const radioItems: IAnswerListItem[] = answerList.map(
                                                                                              +      (item: string | Record<string, string>) => {
                                                                                              +        if (typeof item === "string") {
                                                                                              +          return this.parseAnswerListItemString(item);
                                                                                              +        }
                                                                                              +        return item as any;
                                                                                              +      }
                                                                                              +    );
                                                                                              +    return radioItems;
                                                                                              +  }
                                                                                              +
                                                                                              +  /**
                                                                                              +   * convert string to relevant mappings
                                                                                              +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                              +   */
                                                                                              +  private parseAnswerListItemString(item: string) {
                                                                                              +    const itemObj: IAnswerListItem = {} as any;
                                                                                              +    const stringProperties = item.split("|");
                                                                                              +    stringProperties.forEach((s) => {
                                                                                              +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                              +      if (field && value) {
                                                                                              +        itemObj[field] = value;
                                                                                              +      }
                                                                                              +    });
                                                                                              +    return itemObj;
                                                                                              +  }
                                                                                              +}
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              <div class="radio-grid" [ngStyle]="gridStyle">
                                                                                              +  <div
                                                                                              +    *ngFor="let item of radioItems"
                                                                                              +    class="item"
                                                                                              +    (click)="handleItemClick(item)"
                                                                                              +    [attr.data-selected]="item.name === _row.value"
                                                                                              +  >
                                                                                              +    <div class="item-image-container" *ngIf="item.image">
                                                                                              +      <img class="item-image" [src]="item.image | plhAsset" />
                                                                                              +    </div>
                                                                                              +    <div class="item-text">{{ item.text }}</div>
                                                                                              +  </div>
                                                                                              +</div>
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +

                                                                                              + ./radio-group-grid.component.scss +

                                                                                              +
                                                                                              // @use "/src/theme/mixins";
                                                                                              +
                                                                                              +$background-selected: var(
                                                                                              +  --radio-group-background-selected,
                                                                                              +  var(--gradient-primary-light-vertical)
                                                                                              +);
                                                                                              +$border: var(--ion-border-standard);
                                                                                              +$border-radius: var(--ion-border-radius-standard);
                                                                                              +
                                                                                              +.radio-grid {
                                                                                              +  display: grid;
                                                                                              +  gap: 1rem;
                                                                                              +}
                                                                                              +.item {
                                                                                              +  border: $border;
                                                                                              +  border-radius: 15px;
                                                                                              +  text-align: center;
                                                                                              +  padding: 8px;
                                                                                              +  background: white;
                                                                                              +  cursor: pointer;
                                                                                              +}
                                                                                              +.item[data-selected="true"] {
                                                                                              +  background: $background-selected;
                                                                                              +}
                                                                                              +
                                                                                              +
                                                                                              + +
                                                                                              +
                                                                                              +
                                                                                              +
                                                                                              + Legend +
                                                                                              +
                                                                                              +
                                                                                              Html element +
                                                                                              +
                                                                                              +
                                                                                              Component +
                                                                                              +
                                                                                              +
                                                                                              Html element with directive +
                                                                                              +
                                                                                              +
                                                                                              + + +
                                                                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                              +
                                                                                              +

                                                                                              results matching ""

                                                                                              +
                                                                                                +
                                                                                                +
                                                                                                +

                                                                                                No results matching ""

                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplSimpleCheckboxComponent.html b/documentation/docs/generated/components/TmplSimpleCheckboxComponent.html new file mode 100644 index 0000000000..17adfa0caa --- /dev/null +++ b/documentation/docs/generated/components/TmplSimpleCheckboxComponent.html @@ -0,0 +1,684 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                + + +
                                                                                                +
                                                                                                + + + + + + + + +
                                                                                                +

                                                                                                +

                                                                                                File

                                                                                                +

                                                                                                +

                                                                                                + src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts +

                                                                                                + + + +

                                                                                                +

                                                                                                Extends

                                                                                                +

                                                                                                +

                                                                                                + TemplateBaseComponent +

                                                                                                + +

                                                                                                +

                                                                                                Implements

                                                                                                +

                                                                                                +

                                                                                                + ITemplateRowProps + OnInit +

                                                                                                + + +
                                                                                                +

                                                                                                Metadata

                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                + +
                                                                                                +

                                                                                                Index

                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                Properties
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                Methods
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                Inputs
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                + +
                                                                                                +

                                                                                                Constructor

                                                                                                + + + + + + + + + + +
                                                                                                +constructor() +
                                                                                                + +
                                                                                                +
                                                                                                + +
                                                                                                +

                                                                                                Inputs

                                                                                                + + + + + + + + + + + + +
                                                                                                + + parent +
                                                                                                + Type : TemplateContainerComponent + +
                                                                                                + +
                                                                                                +
                                                                                                + + + +
                                                                                                + +

                                                                                                + Methods +

                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                + + + getParams + + +
                                                                                                +getParams() +
                                                                                                + +
                                                                                                + +
                                                                                                + Returns : void + +
                                                                                                +
                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                + + + Public + Async + handleChange + + +
                                                                                                + + handleChange(isChecked: boolean) +
                                                                                                + +
                                                                                                + +
                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                NameTypeOptional
                                                                                                isChecked + boolean + + No +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + Returns : any + +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + +

                                                                                                + Properties +

                                                                                                + + + + + + + + + + + + + + +
                                                                                                + + + label_text + + +
                                                                                                + Type : string | null + +
                                                                                                + +
                                                                                                + + + + + + + + + + + + + + +
                                                                                                + + + position + + +
                                                                                                + Type : string + +
                                                                                                + +
                                                                                                + + + + + + + + + + + + + + +
                                                                                                + + + reverse + + +
                                                                                                + Type : boolean + +
                                                                                                + +
                                                                                                + + + + + + + + + + + + + + +
                                                                                                + + + style + + +
                                                                                                + Type : string + +
                                                                                                + +
                                                                                                +
                                                                                                + +
                                                                                                + + +
                                                                                                +
                                                                                                import { Component, Input, OnInit } from "@angular/core";
                                                                                                +import { TemplateBaseComponent } from "../base";
                                                                                                +import { ITemplateRowProps } from "../../models";
                                                                                                +import { TemplateContainerComponent } from "../../template-container.component";
                                                                                                +import { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from "../../../../utils";
                                                                                                +
                                                                                                +@Component({
                                                                                                +  selector: "plh-simple-checkbox",
                                                                                                +  templateUrl: "./simple-checkbox.component.html",
                                                                                                +  styleUrls: ["./simple-checkbox.component.scss"],
                                                                                                +})
                                                                                                +export class TmplSimpleCheckboxComponent
                                                                                                +  extends TemplateBaseComponent
                                                                                                +  implements ITemplateRowProps, OnInit
                                                                                                +{
                                                                                                +  @Input() parent: TemplateContainerComponent;
                                                                                                +  position: string;
                                                                                                +  reverse: boolean;
                                                                                                +  label_text: string | null;
                                                                                                +  style: string;
                                                                                                +  constructor() {
                                                                                                +    super();
                                                                                                +  }
                                                                                                +
                                                                                                +  ngOnInit() {
                                                                                                +    this.getParams();
                                                                                                +  }
                                                                                                +  public async handleChange(isChecked: boolean) {
                                                                                                +    await this.setValue(isChecked);
                                                                                                +    this.triggerActions("changed");
                                                                                                +  }
                                                                                                +
                                                                                                +  getParams() {
                                                                                                +    this.reverse = getBooleanParamFromTemplateRow(this._row, "reverse", false);
                                                                                                +    this.position = getStringParamFromTemplateRow(this._row, "align", "center");
                                                                                                +    this.label_text = getStringParamFromTemplateRow(this._row, "label_text", null);
                                                                                                +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                                                                +  }
                                                                                                +}
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                <div
                                                                                                +  class="checkbox-wrapper margin-t-large"
                                                                                                +  [class]="style"
                                                                                                +  [class]="position"
                                                                                                +  [class.reverse]="reverse"
                                                                                                +>
                                                                                                +  <ion-checkbox
                                                                                                +    #checkbox
                                                                                                +    [checked]="_row.value"
                                                                                                +    (ionChange)="handleChange(checkbox.checked)"
                                                                                                +    color="primary"
                                                                                                +  ></ion-checkbox>
                                                                                                +  <label *ngIf="label_text" [innerHTML]="label_text | markdown">{{ label_text }}</label>
                                                                                                +</div>
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                +

                                                                                                + ./simple-checkbox.component.scss +

                                                                                                +
                                                                                                @use "/src/theme/mixins";
                                                                                                +
                                                                                                +.checkbox-wrapper {
                                                                                                +  padding: 0 var(--tiny-padding);
                                                                                                +  width: 100%;
                                                                                                +  height: 100%;
                                                                                                +  @include mixins.flex-centered;
                                                                                                +  &.left {
                                                                                                +    justify-content: start;
                                                                                                +  }
                                                                                                +  &.right {
                                                                                                +    justify-content: flex-end;
                                                                                                +  }
                                                                                                +  ion-checkbox {
                                                                                                +    --border-color: var(--ion-color-primary);
                                                                                                +    --border-width: var(--checkbox-border-width);
                                                                                                +    --background: var(--ion-color-primary-contrast);
                                                                                                +    --border-radius: var(--checkbox-border-radius);
                                                                                                +    --size: var(--checkbox-border-size);
                                                                                                +    margin: 0 var(--small-margin);
                                                                                                +  }
                                                                                                +
                                                                                                +  label {
                                                                                                +    max-width: var(--checkbox-label-max-width);
                                                                                                +    font-weight: var(--font-weight-bold);
                                                                                                +    font-size: var(--font-size-text-medium);
                                                                                                +    line-height: var(--line-height-text-largest);
                                                                                                +    color: var(--ion-color-primary);
                                                                                                +  }
                                                                                                +}
                                                                                                +.reverse {
                                                                                                +  flex-direction: row-reverse;
                                                                                                +}
                                                                                                +
                                                                                                +
                                                                                                + +
                                                                                                +
                                                                                                +
                                                                                                +
                                                                                                + Legend +
                                                                                                +
                                                                                                +
                                                                                                Html element +
                                                                                                +
                                                                                                +
                                                                                                Component +
                                                                                                +
                                                                                                +
                                                                                                Html element with directive +
                                                                                                +
                                                                                                +
                                                                                                + + +
                                                                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                +
                                                                                                +

                                                                                                results matching ""

                                                                                                +
                                                                                                  +
                                                                                                  +
                                                                                                  +

                                                                                                  No results matching ""

                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplSliderComponent.html b/documentation/docs/generated/components/TmplSliderComponent.html new file mode 100644 index 0000000000..91367b9387 --- /dev/null +++ b/documentation/docs/generated/components/TmplSliderComponent.html @@ -0,0 +1,1303 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  + + +
                                                                                                  +
                                                                                                  + + + + + + + + +
                                                                                                  +

                                                                                                  +

                                                                                                  File

                                                                                                  +

                                                                                                  +

                                                                                                  + src/app/shared/components/template/components/slider/slider.component.ts +

                                                                                                  + + + +

                                                                                                  +

                                                                                                  Extends

                                                                                                  +

                                                                                                  +

                                                                                                  + TemplateBaseComponent +

                                                                                                  + +

                                                                                                  +

                                                                                                  Implements

                                                                                                  +

                                                                                                  +

                                                                                                  + ITemplateRowProps + OnInit +

                                                                                                  + + +
                                                                                                  +

                                                                                                  Metadata

                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                  + +
                                                                                                  +

                                                                                                  Index

                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  Properties
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  Methods
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  Inputs
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + +
                                                                                                  +

                                                                                                  Inputs

                                                                                                  + + + + + + + + + + + + +
                                                                                                  + + template +
                                                                                                  + Type : FlowTypes.Template + +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + +
                                                                                                  + +

                                                                                                  + Methods +

                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + Async + changeValue + + +
                                                                                                  + + changeValue(value: number | "no_value") +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                  NameTypeOptional
                                                                                                  value + number | "no_value" + + No +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + Returns : any + +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + getParams + + +
                                                                                                  +getParams() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : void + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + Async + toggleNACheckbox + + +
                                                                                                  + + toggleNACheckbox() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : any + +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                  + + + updateConfigParams + + +
                                                                                                  +updateConfigParams() +
                                                                                                  + +
                                                                                                  + +
                                                                                                  + Returns : void + +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + +

                                                                                                  + Properties +

                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + disabled + + +
                                                                                                  + Type : boolean + +
                                                                                                  + Default value : false +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + +
                                                                                                  + + + help + + +
                                                                                                  + Type : string | null + +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + labels_count + + +
                                                                                                  + Type : number | null + +
                                                                                                  + Default value : 8 +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + listNumbers + + +
                                                                                                  + Type : Array<number> + +
                                                                                                  + Default value : [] +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + +
                                                                                                  + + + max_value_label + + +
                                                                                                  + Type : string | null + +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + maxValue + + +
                                                                                                  + Type : number + +
                                                                                                  + Default value : 7 +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + +
                                                                                                  + + + min_value_label + + +
                                                                                                  + Type : string | null + +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + minValue + + +
                                                                                                  + Type : number + +
                                                                                                  + Default value : 0 +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + no_value + + +
                                                                                                  + Type : boolean + +
                                                                                                  + Default value : false +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + no_value_text + + +
                                                                                                  + Type : string + +
                                                                                                  + Default value : "no_value" +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + previousValue + + +
                                                                                                  + Type : number + +
                                                                                                  + +
                                                                                                  +

                                                                                                  Track the previous value when toggling NA on/off

                                                                                                  +
                                                                                                  +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + slider + + +
                                                                                                  + Type : NouisliderComponent + +
                                                                                                  + Decorators : +
                                                                                                  + + @ViewChild('slider')
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + sliderConfig + + +
                                                                                                  + Type : Options + +
                                                                                                  + Default value : { + connect: true, + start: 0, + tooltips: true, + step: this.step, + behaviour: "tap", + range: { + min: this.minValue, + max: this.maxValue, + }, + pips: { + mode: "count", + density: 1, + values: 7, + stepped: true, + }, + } +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                  + + + step + + +
                                                                                                  + Type : number + +
                                                                                                  + Default value : 1 +
                                                                                                  + +
                                                                                                  + + + + + + + + + + + + + + +
                                                                                                  + + + title + + +
                                                                                                  + Type : string | null + +
                                                                                                  + +
                                                                                                  +
                                                                                                  + +
                                                                                                  + + +
                                                                                                  +
                                                                                                  import { Component, Input, OnInit, ViewChild } from "@angular/core";
                                                                                                  +import { FlowTypes } from "../../../../model";
                                                                                                  +import { TemplateBaseComponent } from "../base";
                                                                                                  +import { ITemplateRowProps } from "../../models";
                                                                                                  +import {
                                                                                                  +  getBooleanParamFromTemplateRow,
                                                                                                  +  getNumberParamFromTemplateRow,
                                                                                                  +  getStringParamFromTemplateRow,
                                                                                                  +} from "../../../../utils";
                                                                                                  +import { NouisliderComponent } from "ng2-nouislider";
                                                                                                  +import { Options } from "nouislider";
                                                                                                  +
                                                                                                  +@Component({
                                                                                                  +  selector: "plh-slider-new",
                                                                                                  +  templateUrl: "./slider.component.html",
                                                                                                  +  styleUrls: ["./slider.component.scss"],
                                                                                                  +})
                                                                                                  +export class TmplSliderComponent
                                                                                                  +  extends TemplateBaseComponent
                                                                                                  +  implements ITemplateRowProps, OnInit
                                                                                                  +{
                                                                                                  +  @Input() template: FlowTypes.Template;
                                                                                                  +  @ViewChild("slider") slider: NouisliderComponent;
                                                                                                  +  help: string | null;
                                                                                                  +  no_value_text: string = "no_value";
                                                                                                  +  minValue: number = 0;
                                                                                                  +  maxValue: number = 7;
                                                                                                  +  disabled: boolean = false;
                                                                                                  +  title: string | null;
                                                                                                  +  step: number = 1;
                                                                                                  +  min_value_label: string | null;
                                                                                                  +  max_value_label: string | null;
                                                                                                  +  listNumbers: Array<number> = [];
                                                                                                  +  no_value: boolean = false;
                                                                                                  +  labels_count: number | null = 8;
                                                                                                  +  /** Track the previous value when toggling NA on/off */
                                                                                                  +  previousValue: number;
                                                                                                  +
                                                                                                  +  // Note - not all config options are actually supported by ng2-nouislider (need to dig into code to see what is)
                                                                                                  +  sliderConfig: Options = {
                                                                                                  +    connect: true,
                                                                                                  +    start: 0,
                                                                                                  +    tooltips: true,
                                                                                                  +    step: this.step,
                                                                                                  +    behaviour: "tap",
                                                                                                  +    range: {
                                                                                                  +      min: this.minValue,
                                                                                                  +      max: this.maxValue,
                                                                                                  +    },
                                                                                                  +    pips: {
                                                                                                  +      mode: "count",
                                                                                                  +      density: 1,
                                                                                                  +      values: 7,
                                                                                                  +      stepped: true,
                                                                                                  +    },
                                                                                                  +  };
                                                                                                  +
                                                                                                  +  ngOnInit() {
                                                                                                  +    this.getParams();
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  getParams() {
                                                                                                  +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
                                                                                                  +    this.minValue = getNumberParamFromTemplateRow(this._row, "min", this.minValue);
                                                                                                  +    this.maxValue = getNumberParamFromTemplateRow(this._row, "max", this.maxValue);
                                                                                                  +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
                                                                                                  +    this.step = getNumberParamFromTemplateRow(this._row, "step", this.step);
                                                                                                  +    this.min_value_label = getStringParamFromTemplateRow(this._row, "min_value_label", null);
                                                                                                  +    this.max_value_label = getStringParamFromTemplateRow(this._row, "max_value_label", null);
                                                                                                  +    this.labels_count = getNumberParamFromTemplateRow(this._row, "labels_count", 8);
                                                                                                  +    this.no_value_text = getStringParamFromTemplateRow(this._row, "no_value_text", "no_value");
                                                                                                  +    this.updateConfigParams();
                                                                                                  +    this.no_value = getBooleanParamFromTemplateRow(this._row, "no_value", false);
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  async toggleNACheckbox() {
                                                                                                  +    if (this._row.value === "no_value") {
                                                                                                  +      // if restoring functionality assume the value reverts to last known (if a number)
                                                                                                  +      await this.changeValue(typeof this.previousValue === "number" ? this.previousValue : 0);
                                                                                                  +    } else {
                                                                                                  +      this.previousValue = this._row.value;
                                                                                                  +      // if removing functionality specify the value as no_value
                                                                                                  +      await this.changeValue("no_value");
                                                                                                  +    }
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  async changeValue(value: number | "no_value") {
                                                                                                  +    await this.setValue(value);
                                                                                                  +    await this.triggerActions("changed");
                                                                                                  +  }
                                                                                                  +
                                                                                                  +  updateConfigParams() {
                                                                                                  +    this.sliderConfig.range.min = this.minValue;
                                                                                                  +    this.sliderConfig.range.max = this.maxValue;
                                                                                                  +    this.sliderConfig.step = this.step;
                                                                                                  +    this.sliderConfig.start = Number(this._row.value) || 0;
                                                                                                  +    this.sliderConfig.pips.values = this.labels_count;
                                                                                                  +  }
                                                                                                  +}
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  <div class="slider-wrapper">
                                                                                                  +  <div class="title-slider">
                                                                                                  +    {{ title }}
                                                                                                  +  </div>
                                                                                                  +  <ion-icon
                                                                                                  +    *ngIf="help"
                                                                                                  +    name="help-circle-outline"
                                                                                                  +    class="help"
                                                                                                  +    [pTooltip]="help"
                                                                                                  +    tooltipPosition="left"
                                                                                                  +    tooltipEvent="click"
                                                                                                  +  ></ion-icon>
                                                                                                  +  <div class="slider-container">
                                                                                                  +    <nouislider
                                                                                                  +      #slider
                                                                                                  +      (change)="changeValue($event)"
                                                                                                  +      [class.hide-handle]="_row.value === 'no_value' || _row.value === undefined"
                                                                                                  +      [config]="sliderConfig"
                                                                                                  +      [style.width.%]="100"
                                                                                                  +    ></nouislider>
                                                                                                  +    <div class="checkbox-block" (click)="toggleNACheckbox()">
                                                                                                  +      <ion-checkbox
                                                                                                  +        class="custom-checkbox"
                                                                                                  +        [checked]="_row.value === 'no_value'"
                                                                                                  +        color="primary"
                                                                                                  +      ></ion-checkbox>
                                                                                                  +    </div>
                                                                                                  +  </div>
                                                                                                  +  <div class="labels">
                                                                                                  +    <div class="min">{{ min_value_label }}</div>
                                                                                                  +    <div class="max">{{ max_value_label }}</div>
                                                                                                  +  </div>
                                                                                                  +</div>
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  +

                                                                                                  + ./slider.component.scss +

                                                                                                  +
                                                                                                  @use "/src/theme/mixins";
                                                                                                  +
                                                                                                  +$ui-color: var(--slider-ui-color, var(--ion-color-primary-700));
                                                                                                  +
                                                                                                  +.slider-wrapper {
                                                                                                  +  min-width: 100%;
                                                                                                  +  padding: var(--regular-padding) 0 var(--regular-padding) var(--regular-padding);
                                                                                                  +  background: var(--ion-color-primary-contrast);
                                                                                                  +  border: var(--ion-border-standard);
                                                                                                  +  box-sizing: border-box;
                                                                                                  +  box-shadow: var(--ion-default-box-shadow);
                                                                                                  +  border-radius: var(--ion-border-radius-secondary);
                                                                                                  +  position: relative;
                                                                                                  +  min-height: var(--slider-wrapper-min-height);
                                                                                                  +  .help {
                                                                                                  +    color: $ui-color;
                                                                                                  +    height: var(--help-icon-standard-size);
                                                                                                  +    width: var(--help-icon-standard-size);
                                                                                                  +    position: absolute;
                                                                                                  +    right: 5px;
                                                                                                  +    top: 12px;
                                                                                                  +  }
                                                                                                  +  .title-slider {
                                                                                                  +    font-weight: var(--font-weight-bold);
                                                                                                  +    font-size: var(--font-size-title-tiny);
                                                                                                  +    color: var(--ion-color-primary);
                                                                                                  +    max-width: var(--slider-title-max-width) !important;
                                                                                                  +    margin-bottom: var(--regular-margin);
                                                                                                  +  }
                                                                                                  +  .slider-container {
                                                                                                  +    max-width: 95%;
                                                                                                  +    width: 100%;
                                                                                                  +    display: flex;
                                                                                                  +    .custom-slider {
                                                                                                  +      max-width: 100%;
                                                                                                  +    }
                                                                                                  +    .checkbox-block {
                                                                                                  +      @include mixins.flex-centered;
                                                                                                  +      @include mixins.tiny-square;
                                                                                                  +      margin-top: var(--tiny-margin);
                                                                                                  +      padding-left: var(--small-padding);
                                                                                                  +      margin-left: var(--tiny-margin);
                                                                                                  +    }
                                                                                                  +  }
                                                                                                  +  .labels {
                                                                                                  +    @include mixins.flex-space-between;
                                                                                                  +    max-width: var(--slider-labels-max-width);
                                                                                                  +    margin-left: -5px;
                                                                                                  +    margin-top: var(--large-margin);
                                                                                                  +    .min,
                                                                                                  +    .max {
                                                                                                  +      font-size: var(--font-size-text-tiny);
                                                                                                  +      color: $ui-color;
                                                                                                  +    }
                                                                                                  +  }
                                                                                                  +}
                                                                                                  +::ng-deep {
                                                                                                  +  .noUi-target {
                                                                                                  +    border: none;
                                                                                                  +    background: transparent;
                                                                                                  +    box-shadow: none;
                                                                                                  +  }
                                                                                                  +  .noUi-connects {
                                                                                                  +    border: 1px solid $ui-color;
                                                                                                  +    box-sizing: border-box;
                                                                                                  +    border-radius: var(--ion-border-radius-secondary);
                                                                                                  +    height: 10px;
                                                                                                  +  }
                                                                                                  +  .noUi-handle::before,
                                                                                                  +  .noUi-handle::after {
                                                                                                  +    content: none;
                                                                                                  +  }
                                                                                                  +  .noUi-horizontal .noUi-handle {
                                                                                                  +    @include mixins.tiny-square;
                                                                                                  +    border-radius: var(--ion-border-radius-rounded);
                                                                                                  +    background: $ui-color;
                                                                                                  +    border: none;
                                                                                                  +    box-shadow: none;
                                                                                                  +    outline: none;
                                                                                                  +    top: -7px;
                                                                                                  +    right: -11px;
                                                                                                  +  }
                                                                                                  +  .noUi-pips-horizontal {
                                                                                                  +    top: 25%;
                                                                                                  +  }
                                                                                                  +  .noUi-value-horizontal {
                                                                                                  +    font-size: var(--font-size-text-large);
                                                                                                  +    color: $ui-color;
                                                                                                  +  }
                                                                                                  +  .noUi-marker-horizontal {
                                                                                                  +    display: none;
                                                                                                  +  }
                                                                                                  +  .noUi-tooltip {
                                                                                                  +    display: none;
                                                                                                  +  }
                                                                                                  +  .noUi-active .noUi-tooltip {
                                                                                                  +    @include mixins.flex-centered;
                                                                                                  +    @include mixins.small-square;
                                                                                                  +    background: $ui-color;
                                                                                                  +    color: var(--ion-color-primary-contrast);
                                                                                                  +    border: none;
                                                                                                  +    border-radius: var(--ion-border-radius-rounded);
                                                                                                  +  }
                                                                                                  +  .hide-handle {
                                                                                                  +    .noUi-horizontal .noUi-handle {
                                                                                                  +      display: none;
                                                                                                  +    }
                                                                                                  +  }
                                                                                                  +}
                                                                                                  +.custom-checkbox {
                                                                                                  +  --border-radius: var(--ion-border-radius-rounded);
                                                                                                  +  --border-color: #{$ui-color};
                                                                                                  +  --background: transparent;
                                                                                                  +  --size: var(--font-size-text-small);
                                                                                                  +}
                                                                                                  +
                                                                                                  +
                                                                                                  + +
                                                                                                  +
                                                                                                  +
                                                                                                  +
                                                                                                  + Legend +
                                                                                                  +
                                                                                                  +
                                                                                                  Html element +
                                                                                                  +
                                                                                                  +
                                                                                                  Component +
                                                                                                  +
                                                                                                  +
                                                                                                  Html element with directive +
                                                                                                  +
                                                                                                  +
                                                                                                  + + +
                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                  +
                                                                                                  +

                                                                                                  results matching ""

                                                                                                  +
                                                                                                    +
                                                                                                    +
                                                                                                    +

                                                                                                    No results matching ""

                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplSubtitleComponent.html b/documentation/docs/generated/components/TmplSubtitleComponent.html new file mode 100644 index 0000000000..66c48caf05 --- /dev/null +++ b/documentation/docs/generated/components/TmplSubtitleComponent.html @@ -0,0 +1,479 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    + + +
                                                                                                    +
                                                                                                    + + + + + + + + +
                                                                                                    +

                                                                                                    +

                                                                                                    File

                                                                                                    +

                                                                                                    +

                                                                                                    + src/app/shared/components/template/components/subtitle.ts +

                                                                                                    + + + +

                                                                                                    +

                                                                                                    Extends

                                                                                                    +

                                                                                                    +

                                                                                                    + TemplateBaseComponent +

                                                                                                    + +

                                                                                                    +

                                                                                                    Implements

                                                                                                    +

                                                                                                    +

                                                                                                    + ITemplateRowProps + OnInit +

                                                                                                    + + +
                                                                                                    +

                                                                                                    Metadata

                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                    + +
                                                                                                    +

                                                                                                    Index

                                                                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    Properties
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    Methods
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    + +
                                                                                                    +

                                                                                                    Constructor

                                                                                                    + + + + + + + + + + +
                                                                                                    +constructor() +
                                                                                                    + +
                                                                                                    +
                                                                                                    + + + + + +
                                                                                                    + +

                                                                                                    + Methods +

                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                    + + + getParams + + +
                                                                                                    +getParams() +
                                                                                                    + +
                                                                                                    + +
                                                                                                    + Returns : void + +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    + +

                                                                                                    + Properties +

                                                                                                    + + + + + + + + + + + + + + +
                                                                                                    + + + style + + +
                                                                                                    + Type : string | null + +
                                                                                                    + +
                                                                                                    + + + + + + + + + + + + + + +
                                                                                                    + + + textAlign + + +
                                                                                                    + Type : string + +
                                                                                                    + +
                                                                                                    +
                                                                                                    + +
                                                                                                    + + +
                                                                                                    +
                                                                                                    import { Component, OnInit } from "@angular/core";
                                                                                                    +import { TemplateBaseComponent } from "./base";
                                                                                                    +import { ITemplateRowProps } from "../models";
                                                                                                    +import { getStringParamFromTemplateRow } from "../../../utils";
                                                                                                    +
                                                                                                    +@Component({
                                                                                                    +  selector: "plh-tmpl-subtitle",
                                                                                                    +  template: `
                                                                                                    +    <div class="subtitle-wrapper margin-t-regular" [class]="style">
                                                                                                    +      <h2 [style.text-align]="textAlign" [class]="'standard normal' + ' ' + style">
                                                                                                    +        <span [innerHTML]="_row.value | markdown"></span>
                                                                                                    +      </h2>
                                                                                                    +    </div>
                                                                                                    +  `,
                                                                                                    +  styleUrls: ["./subtitle.scss"],
                                                                                                    +})
                                                                                                    +export class TmplSubtitleComponent
                                                                                                    +  extends TemplateBaseComponent
                                                                                                    +  implements ITemplateRowProps, OnInit
                                                                                                    +{
                                                                                                    +  textAlign: string;
                                                                                                    +  style: string | null;
                                                                                                    +
                                                                                                    +  constructor() {
                                                                                                    +    super();
                                                                                                    +  }
                                                                                                    +
                                                                                                    +  ngOnInit() {
                                                                                                    +    this.getParams();
                                                                                                    +  }
                                                                                                    +
                                                                                                    +  getParams() {
                                                                                                    +    this.style = getStringParamFromTemplateRow(this._row, "style", "standard medium");
                                                                                                    +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "");
                                                                                                    +  }
                                                                                                    +}
                                                                                                    +
                                                                                                    +
                                                                                                    + + +
                                                                                                    +

                                                                                                    + ./subtitle.scss +

                                                                                                    +
                                                                                                    .subtitle-wrapper {
                                                                                                    +  display: flex;
                                                                                                    +  align-items: center;
                                                                                                    +  color: var(--ion-color-primary);
                                                                                                    +  h2 {
                                                                                                    +    line-height: var(--line-height-text);
                                                                                                    +    margin: 0;
                                                                                                    +    &.medium {
                                                                                                    +      font-size: var(--font-size-subtitle-medium);
                                                                                                    +    }
                                                                                                    +    &.small {
                                                                                                    +      font-size: var(--font-size-subtitle-small);
                                                                                                    +    }
                                                                                                    +    &.large {
                                                                                                    +      font-size: var(--font-size-subtitle-large);
                                                                                                    +    }
                                                                                                    +  }
                                                                                                    +}
                                                                                                    +
                                                                                                    +
                                                                                                    + +
                                                                                                    +
                                                                                                    +
                                                                                                    +
                                                                                                    + Legend +
                                                                                                    +
                                                                                                    +
                                                                                                    Html element +
                                                                                                    +
                                                                                                    +
                                                                                                    Component +
                                                                                                    +
                                                                                                    +
                                                                                                    Html element with directive +
                                                                                                    +
                                                                                                    +
                                                                                                    + + +
                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                    +
                                                                                                    +

                                                                                                    results matching ""

                                                                                                    +
                                                                                                      +
                                                                                                      +
                                                                                                      +

                                                                                                      No results matching ""

                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTaskCardComponent.html b/documentation/docs/generated/components/TmplTaskCardComponent.html new file mode 100644 index 0000000000..edab6b9718 --- /dev/null +++ b/documentation/docs/generated/components/TmplTaskCardComponent.html @@ -0,0 +1,1253 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      + + +
                                                                                                      +
                                                                                                      + + + + + + + + +
                                                                                                      +

                                                                                                      +

                                                                                                      File

                                                                                                      +

                                                                                                      +

                                                                                                      + src/app/shared/components/template/components/task-card/task-card.component.ts +

                                                                                                      + + + +

                                                                                                      +

                                                                                                      Extends

                                                                                                      +

                                                                                                      +

                                                                                                      + TemplateBaseComponent +

                                                                                                      + +

                                                                                                      +

                                                                                                      Implements

                                                                                                      +

                                                                                                      +

                                                                                                      + OnInit +

                                                                                                      + + +
                                                                                                      +

                                                                                                      Metadata

                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      + +
                                                                                                      +

                                                                                                      Index

                                                                                                      + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      Properties
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      Methods
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +

                                                                                                      Constructor

                                                                                                      + + + + + + + + + + + + + +
                                                                                                      +constructor(taskService: TaskService, templateFieldService: TemplateFieldService) +
                                                                                                      + +
                                                                                                      +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      taskService + TaskService + + No +
                                                                                                      templateFieldService + TemplateFieldService + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + + + + + +
                                                                                                      + +

                                                                                                      + Methods +

                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + checkProgressStatus + + +
                                                                                                      +checkProgressStatus() +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + getParams + + +
                                                                                                      +getParams() +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                      + + + handleNewlyCompleted + + +
                                                                                                      +handleNewlyCompleted(isNewlyCompleted: boolean) +
                                                                                                      + +
                                                                                                      + +
                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                      NameTypeOptional
                                                                                                      isNewlyCompleted + boolean + + No +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + Returns : void + +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + +

                                                                                                      + Properties +

                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + completedField + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + completedIcon + + +
                                                                                                      + Type : string + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + highlighted + + +
                                                                                                      + Type : boolean + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + highlightedText + + +
                                                                                                      + Type : string + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + image + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + inProgressIcon + + +
                                                                                                      + Type : string + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + isButton + + +
                                                                                                      + Type : boolean + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + + + + +
                                                                                                      + + + progressStatus + + +
                                                                                                      + Type : IProgressStatus + +
                                                                                                      + Default value : "notStarted" +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + progressUnitsName + + +
                                                                                                      + Type : string + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + style + + +
                                                                                                      + Type : string + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + subtitle + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + taskGroupDataList + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + taskGroupId + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + taskId + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      + + + + + + + + + + + + + + +
                                                                                                      + + + title + + +
                                                                                                      + Type : string | null + +
                                                                                                      + +
                                                                                                      +
                                                                                                      + +
                                                                                                      + + +
                                                                                                      +
                                                                                                      import { Component, OnInit } from "@angular/core";
                                                                                                      +import { TaskService } from "src/app/shared/services/task/task.service";
                                                                                                      +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                      +import { TemplateBaseComponent } from "../base";
                                                                                                      +import { IProgressStatus } from "src/app/shared/services/task/task.service";
                                                                                                      +import { TemplateFieldService } from "../../services/template-field.service";
                                                                                                      +
                                                                                                      +@Component({
                                                                                                      +  selector: "plh-task-card",
                                                                                                      +  templateUrl: "./task-card.component.html",
                                                                                                      +  styleUrls: ["./task-card.component.scss"],
                                                                                                      +})
                                                                                                      +export class TmplTaskCardComponent extends TemplateBaseComponent implements OnInit {
                                                                                                      +  style: string;
                                                                                                      +  highlighted: boolean;
                                                                                                      +  highlightedText: string;
                                                                                                      +  progressUnitsName: string;
                                                                                                      +  progressStatus: IProgressStatus = "notStarted";
                                                                                                      +  taskGroupId: string | null;
                                                                                                      +  taskGroupDataList: string | null;
                                                                                                      +  completedField: string | null;
                                                                                                      +  taskId: string | null;
                                                                                                      +  title: string | null;
                                                                                                      +  subtitle: string | null;
                                                                                                      +  image: string | null;
                                                                                                      +  completedIcon: string;
                                                                                                      +  inProgressIcon: string;
                                                                                                      +  isButton: boolean;
                                                                                                      +
                                                                                                      +  constructor(
                                                                                                      +    private taskService: TaskService,
                                                                                                      +    private templateFieldService: TemplateFieldService
                                                                                                      +  ) {
                                                                                                      +    super();
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  ngOnInit() {
                                                                                                      +    this.getParams();
                                                                                                      +    this.highlighted =
                                                                                                      +      this.taskGroupId && !this.taskId
                                                                                                      +        ? this.taskService.checkHighlightedTaskGroup(this.taskGroupId)
                                                                                                      +        : false;
                                                                                                      +    this.checkProgressStatus();
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  getParams() {
                                                                                                      +    this.taskGroupId = getStringParamFromTemplateRow(this._row, "task_group_id", null);
                                                                                                      +    this.taskGroupDataList = getStringParamFromTemplateRow(this._row, "task_group_data", null);
                                                                                                      +    this.completedField = getStringParamFromTemplateRow(this._row, "completed_field", null);
                                                                                                      +    this.taskId = getStringParamFromTemplateRow(this._row, "task_id", null);
                                                                                                      +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
                                                                                                      +    this.subtitle = getStringParamFromTemplateRow(this._row, "subtitle", null);
                                                                                                      +    this.image = getStringParamFromTemplateRow(this._row, "image", null);
                                                                                                      +    this.style = getStringParamFromTemplateRow(this._row, "style", "landscape");
                                                                                                      +    this.isButton = this.style.includes("button");
                                                                                                      +    this.completedIcon = getStringParamFromTemplateRow(this._row, "completed_icon", null);
                                                                                                      +    this.inProgressIcon = getStringParamFromTemplateRow(this._row, "in_progress_icon", null);
                                                                                                      +    this.highlightedText = getStringParamFromTemplateRow(this._row, "highlighted_text", "Active");
                                                                                                      +    this.progressUnitsName = getStringParamFromTemplateRow(
                                                                                                      +      this._row,
                                                                                                      +      "progress_units_name",
                                                                                                      +      "sections"
                                                                                                      +    );
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  checkProgressStatus() {
                                                                                                      +    if (this.taskId) {
                                                                                                      +      if (this.completedField && this.templateFieldService.getField(this.completedField))
                                                                                                      +        this.progressStatus = "completed";
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  handleNewlyCompleted(isNewlyCompleted: boolean) {
                                                                                                      +    if (isNewlyCompleted) {
                                                                                                      +      this.triggerActions("completed");
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +}
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      <div [class]="'card-wrapper landscape ' + style" (click)="triggerActions('click')">
                                                                                                      +  <ng-container *ngIf="highlighted; else showProgress">
                                                                                                      +    <span class="badge highlighted-badge">
                                                                                                      +      {{ highlightedText }}
                                                                                                      +    </span>
                                                                                                      +  </ng-container>
                                                                                                      +  <ng-template #showProgress>
                                                                                                      +    <span class="badge progress-badge">
                                                                                                      +      <span class="circle" [class]="progressStatus"></span>
                                                                                                      +      <img
                                                                                                      +        *ngIf="progressStatus === 'inProgress'"
                                                                                                      +        class="icon"
                                                                                                      +        src="{{ inProgressIcon | plhAsset }}"
                                                                                                      +      />
                                                                                                      +      <img
                                                                                                      +        *ngIf="progressStatus === 'completed'"
                                                                                                      +        class="icon completed"
                                                                                                      +        src="{{ completedIcon | plhAsset }}"
                                                                                                      +      />
                                                                                                      +    </span>
                                                                                                      +  </ng-template>
                                                                                                      +  <div class="content-wrapper">
                                                                                                      +    <ng-container *ngIf="!title">
                                                                                                      +      <plh-template-component
                                                                                                      +        *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                                                                      +        [row]="childRow"
                                                                                                      +        [parent]="parent"
                                                                                                      +        [attr.data-rowname]="_row.name"
                                                                                                      +      >
                                                                                                      +      </plh-template-component>
                                                                                                      +    </ng-container>
                                                                                                      +    <ng-container *ngIf="title">
                                                                                                      +      <ng-container *ngIf="isButton">
                                                                                                      +        <div class="button-content">
                                                                                                      +          <plh-template-component
                                                                                                      +            *ngFor="let childRow of _row.rows | filterDisplayComponent; trackBy: trackByRow"
                                                                                                      +            [row]="childRow"
                                                                                                      +            [parent]="parent"
                                                                                                      +            [attr.data-rowname]="_row.name"
                                                                                                      +          >
                                                                                                      +          </plh-template-component>
                                                                                                      +        </div>
                                                                                                      +      </ng-container>
                                                                                                      +      <div class="text-wrapper">
                                                                                                      +        <div *ngIf="title" class="title-wrapper">
                                                                                                      +          <h1>
                                                                                                      +            {{ title }}
                                                                                                      +          </h1>
                                                                                                      +        </div>
                                                                                                      +        <div *ngIf="subtitle" class="subtitle-wrapper">
                                                                                                      +          <p>
                                                                                                      +            {{ subtitle }}
                                                                                                      +          </p>
                                                                                                      +        </div>
                                                                                                      +        <!-- If a taskGroupId is provided, show the progress bar for the relevant task group -->
                                                                                                      +        <div *ngIf="taskGroupId && !taskId">
                                                                                                      +          <plh-task-progress-bar
                                                                                                      +            [taskGroupDataList]="taskGroupDataList"
                                                                                                      +            [taskGroupCompletedField]="completedField"
                                                                                                      +            [highlighted]="highlighted"
                                                                                                      +            [progressUnitsName]="progressUnitsName"
                                                                                                      +            [(progressStatus)]="progressStatus"
                                                                                                      +            (newlyCompleted)="handleNewlyCompleted($event)"
                                                                                                      +          ></plh-task-progress-bar>
                                                                                                      +        </div>
                                                                                                      +      </div>
                                                                                                      +      <div *ngIf="image" class="image-wrapper">
                                                                                                      +        <img [src]="image | plhAsset" />
                                                                                                      +      </div>
                                                                                                      +    </ng-container>
                                                                                                      +  </div>
                                                                                                      +</div>
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      +

                                                                                                      + ./task-card.component.scss +

                                                                                                      +
                                                                                                      .card-wrapper {
                                                                                                      +  position: relative;
                                                                                                      +  margin: auto;
                                                                                                      +  background-color: white;
                                                                                                      +  border: 1px solid rgba(black, 0.07);
                                                                                                      +  border-radius: var(--ion-border-radius-secondary);
                                                                                                      +  padding: var(--regular-padding);
                                                                                                      +  padding-right: var(--tiny-padding);
                                                                                                      +  max-width: 400px;
                                                                                                      +  filter: drop-shadow(var(--ion-default-box-shadow));
                                                                                                      +
                                                                                                      +  &.portrait {
                                                                                                      +    width: 165px;
                                                                                                      +    padding: var(--small-padding);
                                                                                                      +    .content-wrapper {
                                                                                                      +      flex-direction: column-reverse;
                                                                                                      +      .text-wrapper {
                                                                                                      +        width: 95%;
                                                                                                      +        h1 {
                                                                                                      +          padding-top: var(--tiny-padding);
                                                                                                      +          font-size: var(--font-size-subtitle-small);
                                                                                                      +          line-height: var(--line-height-text-small);
                                                                                                      +        }
                                                                                                      +        .subtitle-wrapper {
                                                                                                      +          p {
                                                                                                      +            line-height: inherit;
                                                                                                      +            margin: var(--small-margin) 0px 0px 0px;
                                                                                                      +            font-size: var(--font-size-text-tiny);
                                                                                                      +          }
                                                                                                      +        }
                                                                                                      +      }
                                                                                                      +      .image-wrapper {
                                                                                                      +        width: 85%;
                                                                                                      +      }
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  &.button {
                                                                                                      +    display: flex;
                                                                                                      +    align-items: center;
                                                                                                      +    padding: var(--small-padding);
                                                                                                      +    min-height: 56px;
                                                                                                      +    .content-wrapper {
                                                                                                      +      height: 100%;
                                                                                                      +      flex-direction: row-reverse;
                                                                                                      +      justify-content: flex-end;
                                                                                                      +      .image-wrapper {
                                                                                                      +        height: 36px;
                                                                                                      +        width: 44px;
                                                                                                      +        padding-left: 4px;
                                                                                                      +        flex-shrink: 0;
                                                                                                      +        img {
                                                                                                      +          height: 100%;
                                                                                                      +        }
                                                                                                      +      }
                                                                                                      +      .text-wrapper {
                                                                                                      +        width: auto;
                                                                                                      +        padding: 6px 8px;
                                                                                                      +        h1 {
                                                                                                      +          padding: 0px;
                                                                                                      +          font-size: var(--font-size-subtitle-medium);
                                                                                                      +          line-height: var(--line-height-text-small);
                                                                                                      +        }
                                                                                                      +      }
                                                                                                      +      .button-content {
                                                                                                      +        width: fit-content;
                                                                                                      +        margin-left: auto;
                                                                                                      +      }
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  .content-wrapper {
                                                                                                      +    height: 100%;
                                                                                                      +    width: 100%;
                                                                                                      +    display: flex;
                                                                                                      +    align-items: center;
                                                                                                      +
                                                                                                      +    .text-wrapper {
                                                                                                      +      width: 60%;
                                                                                                      +      h1 {
                                                                                                      +        margin: 0;
                                                                                                      +        line-height: var(--line-height-text-largest);
                                                                                                      +        font-weight: var(--font-weight-bold);
                                                                                                      +        @media (max-width: 375px) {
                                                                                                      +          font-size: var(--font-size-title-tiny);
                                                                                                      +        }
                                                                                                      +        @media (max-width: 320px) {
                                                                                                      +          font-size: var(--font-size-title-small-device);
                                                                                                      +        }
                                                                                                      +      }
                                                                                                      +      color: var(--ion-color-primary);
                                                                                                      +      .subtitle-wrapper {
                                                                                                      +        padding: 0;
                                                                                                      +      }
                                                                                                      +    }
                                                                                                      +
                                                                                                      +    .image-wrapper {
                                                                                                      +      width: 45%;
                                                                                                      +      padding-left: var(--small-padding);
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +
                                                                                                      +  .badge {
                                                                                                      +    position: absolute;
                                                                                                      +    top: -10px;
                                                                                                      +    filter: drop-shadow(var(--ion-default-box-shadow));
                                                                                                      +    &.highlighted-badge {
                                                                                                      +      right: -10px;
                                                                                                      +      padding: 5px 10px;
                                                                                                      +      border-radius: var(--ion-border-radius-small);
                                                                                                      +      background: var(--ion-color-secondary);
                                                                                                      +      color: white;
                                                                                                      +      font-weight: var(--font-weight-bold);
                                                                                                      +    }
                                                                                                      +    &.progress-badge {
                                                                                                      +      right: -12px;
                                                                                                      +      width: 36px;
                                                                                                      +    }
                                                                                                      +    .circle {
                                                                                                      +      height: 36px;
                                                                                                      +      width: 36px;
                                                                                                      +      border-radius: 50%;
                                                                                                      +      position: absolute;
                                                                                                      +      z-index: 1;
                                                                                                      +      &.completed {
                                                                                                      +        background-color: var(--ion-color-green);
                                                                                                      +      }
                                                                                                      +      &.inProgress {
                                                                                                      +        background-color: var(--ion-color-gray-light);
                                                                                                      +      }
                                                                                                      +    }
                                                                                                      +    .icon {
                                                                                                      +      position: absolute;
                                                                                                      +      z-index: 2;
                                                                                                      +      padding: 4px;
                                                                                                      +      &.completed {
                                                                                                      +        top: 2px;
                                                                                                      +        padding: 8px;
                                                                                                      +      }
                                                                                                      +    }
                                                                                                      +  }
                                                                                                      +}
                                                                                                      +
                                                                                                      +
                                                                                                      + +
                                                                                                      +
                                                                                                      +
                                                                                                      +
                                                                                                      + Legend +
                                                                                                      +
                                                                                                      +
                                                                                                      Html element +
                                                                                                      +
                                                                                                      +
                                                                                                      Component +
                                                                                                      +
                                                                                                      +
                                                                                                      Html element with directive +
                                                                                                      +
                                                                                                      +
                                                                                                      + + +
                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                      +
                                                                                                      +

                                                                                                      results matching ""

                                                                                                      +
                                                                                                        +
                                                                                                        +
                                                                                                        +

                                                                                                        No results matching ""

                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTaskProgressBarComponent.html b/documentation/docs/generated/components/TmplTaskProgressBarComponent.html new file mode 100644 index 0000000000..e4432123c4 --- /dev/null +++ b/documentation/docs/generated/components/TmplTaskProgressBarComponent.html @@ -0,0 +1,1021 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        + + +
                                                                                                        +
                                                                                                        + + + + + + + + +
                                                                                                        +

                                                                                                        +

                                                                                                        File

                                                                                                        +

                                                                                                        +

                                                                                                        + src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts +

                                                                                                        + + + +

                                                                                                        +

                                                                                                        Extends

                                                                                                        +

                                                                                                        +

                                                                                                        + TemplateBaseComponent +

                                                                                                        + +

                                                                                                        +

                                                                                                        Implements

                                                                                                        +

                                                                                                        +

                                                                                                        + OnInit +

                                                                                                        + + +
                                                                                                        +

                                                                                                        Metadata

                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        + +
                                                                                                        +

                                                                                                        Index

                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        Properties
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        Methods
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        Inputs
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        Outputs
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        Accessors
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        Constructor

                                                                                                        + + + + + + + + + + + + + +
                                                                                                        +constructor(taskService: TaskService, templateFieldService: TemplateFieldService, appDataService: AppDataService, campaignService: CampaignService) +
                                                                                                        + +
                                                                                                        +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        taskService + TaskService + + No +
                                                                                                        templateFieldService + TemplateFieldService + + No +
                                                                                                        appDataService + AppDataService + + No +
                                                                                                        campaignService + CampaignService + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        Inputs

                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + highlighted +
                                                                                                        + Type : boolean | null + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + progressStatus +
                                                                                                        + Type : IProgressStatus + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + progressUnitsName +
                                                                                                        + Type : string + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + taskGroupCompletedField +
                                                                                                        + Type : string | null + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + taskGroupDataList +
                                                                                                        + Type : string | null + +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        +

                                                                                                        Outputs

                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + newlyCompleted +
                                                                                                        + Type : EventEmitter + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + +
                                                                                                        + + progressStatusChange +
                                                                                                        + Type : EventEmitter + +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + +
                                                                                                        + +

                                                                                                        + Methods +

                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + evaluateTaskGroupData + + +
                                                                                                        + + evaluateTaskGroupData() +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Returns : any + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + getParams + + +
                                                                                                        +getParams() +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Returns : void + +
                                                                                                        +
                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                        + + + Async + setTaskGroupCompletedStatus + + +
                                                                                                        + + setTaskGroupCompletedStatus(taskGroupCompletedField: string, isCompleted: boolean) +
                                                                                                        + +
                                                                                                        + +
                                                                                                        + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        NameTypeOptional
                                                                                                        taskGroupCompletedField + string + + No +
                                                                                                        isCompleted + boolean + + No +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + Returns : any + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + +

                                                                                                        + Properties +

                                                                                                        + + + + + + + + + + + + + + +
                                                                                                        + + + showText + + +
                                                                                                        + Default value : true +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + + + +
                                                                                                        + + + subtasksCompleted + + +
                                                                                                        + Type : number + +
                                                                                                        + +
                                                                                                        + + + + + + + + + + + + + + +
                                                                                                        + + + subtasksTotal + + +
                                                                                                        + Type : number + +
                                                                                                        + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        + Accessors +

                                                                                                        + + + + + + + + + + + + + + +
                                                                                                        + + progressPercentage +
                                                                                                        + getprogressPercentage() +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        + + +
                                                                                                        +
                                                                                                        import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core";
                                                                                                        +import { TaskService } from "src/app/shared/services/task/task.service";
                                                                                                        +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                        +import { TemplateBaseComponent } from "../base";
                                                                                                        +import { TemplateFieldService } from "../../services/template-field.service";
                                                                                                        +import { AppDataService } from "src/app/shared/services/data/app-data.service";
                                                                                                        +import { IProgressStatus } from "src/app/shared/services/task/task.service";
                                                                                                        +import { CampaignService } from "src/app/feature/campaign/campaign.service";
                                                                                                        +
                                                                                                        +@Component({
                                                                                                        +  selector: "plh-task-progress-bar",
                                                                                                        +  templateUrl: "./task-progress-bar.component.html",
                                                                                                        +  styleUrls: ["./task-progress-bar.component.scss"],
                                                                                                        +})
                                                                                                        +export class TmplTaskProgressBarComponent extends TemplateBaseComponent implements OnInit {
                                                                                                        +  @Input() taskGroupDataList: string | null;
                                                                                                        +  @Input() taskGroupCompletedField: string | null;
                                                                                                        +  @Input() highlighted: boolean | null;
                                                                                                        +  @Input() progressStatus: IProgressStatus;
                                                                                                        +  @Input() progressUnitsName: string;
                                                                                                        +  @Output() progressStatusChange = new EventEmitter<IProgressStatus>();
                                                                                                        +  @Output() newlyCompleted = new EventEmitter<boolean>();
                                                                                                        +  subtasksTotal: number;
                                                                                                        +  subtasksCompleted: number;
                                                                                                        +  showText = true;
                                                                                                        +
                                                                                                        +  constructor(
                                                                                                        +    private taskService: TaskService,
                                                                                                        +    private templateFieldService: TemplateFieldService,
                                                                                                        +    private appDataService: AppDataService,
                                                                                                        +    private campaignService: CampaignService
                                                                                                        +  ) {
                                                                                                        +    super();
                                                                                                        +  }
                                                                                                        +
                                                                                                        +  ngOnInit() {
                                                                                                        +    this.getParams();
                                                                                                        +    this.evaluateTaskGroupData();
                                                                                                        +  }
                                                                                                        +
                                                                                                        +  getParams() {
                                                                                                        +    if (this._row) {
                                                                                                        +      this.taskGroupDataList = getStringParamFromTemplateRow(this._row, "task_group_data", null);
                                                                                                        +      this.taskGroupCompletedField = getStringParamFromTemplateRow(
                                                                                                        +        this._row,
                                                                                                        +        "completed_field",
                                                                                                        +        null
                                                                                                        +      );
                                                                                                        +      this.progressUnitsName = getStringParamFromTemplateRow(
                                                                                                        +        this._row,
                                                                                                        +        "progress_units_name",
                                                                                                        +        "sections"
                                                                                                        +      );
                                                                                                        +    }
                                                                                                        +  }
                                                                                                        +
                                                                                                        +  get progressPercentage() {
                                                                                                        +    return (this.subtasksCompleted / this.subtasksTotal) * 100;
                                                                                                        +  }
                                                                                                        +
                                                                                                        +  async evaluateTaskGroupData() {
                                                                                                        +    const dataList = await this.appDataService.getSheet("data_list", this.taskGroupDataList);
                                                                                                        +    const subtasks = dataList?.rows || [];
                                                                                                        +    this.subtasksTotal = subtasks.length;
                                                                                                        +    this.subtasksCompleted = subtasks.filter((task) =>
                                                                                                        +      this.templateFieldService.getField(task.completed_field)
                                                                                                        +    ).length;
                                                                                                        +    if (this.subtasksCompleted === this.subtasksTotal) {
                                                                                                        +      this.progressStatus = "completed";
                                                                                                        +      this.progressStatusChange.emit(this.progressStatus);
                                                                                                        +      // Check whether task group has already been completed
                                                                                                        +      if (this.templateFieldService.getField(this.taskGroupCompletedField) !== true) {
                                                                                                        +        // If not, set completed field to "true"
                                                                                                        +        await this.setTaskGroupCompletedStatus(this.taskGroupCompletedField, true);
                                                                                                        +        this.newlyCompleted.emit(true);
                                                                                                        +      }
                                                                                                        +    } else {
                                                                                                        +      await this.setTaskGroupCompletedStatus(this.taskGroupCompletedField, false);
                                                                                                        +      if (this.subtasksCompleted) {
                                                                                                        +        this.progressStatus = "inProgress";
                                                                                                        +        this.progressStatusChange.emit(this.progressStatus);
                                                                                                        +      }
                                                                                                        +    }
                                                                                                        +    const { previousHighlightedTaskGroup, newHighlightedTaskGroup } =
                                                                                                        +      this.taskService.evaluateHighlightedTaskGroup();
                                                                                                        +    // HACK - reschedule campaign notifications when the highlighted task group has changed,
                                                                                                        +    // in order to handle any that are conditional on the highlighted task group
                                                                                                        +    if (previousHighlightedTaskGroup !== newHighlightedTaskGroup) {
                                                                                                        +      this.campaignService.scheduleCampaignNotifications();
                                                                                                        +    }
                                                                                                        +  }
                                                                                                        +
                                                                                                        +  async setTaskGroupCompletedStatus(taskGroupCompletedField: string, isCompleted: boolean) {
                                                                                                        +    console.log(`Setting ${taskGroupCompletedField} to ${isCompleted}`);
                                                                                                        +    await this.templateFieldService.setField(taskGroupCompletedField, `${isCompleted}`);
                                                                                                        +  }
                                                                                                        +}
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        <div class="progress-bar-wrapper" [class.highlighted]="highlighted" [class]="progressStatus">
                                                                                                        +  <p *ngIf="showText" class="tiny progress-text">{{ subtasksTotal + " " + progressUnitsName }}</p>
                                                                                                        +  <div class="progress-bar-background">
                                                                                                        +    <div class="progress-bar" [style.width]="progressPercentage + '%'"></div>
                                                                                                        +  </div>
                                                                                                        +</div>
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        + ./task-progress-bar.component.scss +

                                                                                                        +
                                                                                                        @use "/src/theme/mixins";
                                                                                                        +
                                                                                                        +.progress-bar-wrapper {
                                                                                                        +  @include mixins.flex-space-between;
                                                                                                        +
                                                                                                        +  .progress-text {
                                                                                                        +    padding-right: var(--tiny-padding);
                                                                                                        +    white-space: nowrap;
                                                                                                        +  }
                                                                                                        +  .progress-bar-background {
                                                                                                        +    width: 100%;
                                                                                                        +    border-radius: var(--ion-border-radius-small);
                                                                                                        +    background-color: var(--ion-color-gray-100);
                                                                                                        +  }
                                                                                                        +  .progress-bar {
                                                                                                        +    width: 1%;
                                                                                                        +    height: 5px;
                                                                                                        +    border-radius: var(--ion-border-radius-small);
                                                                                                        +    background-color: var(--ion-color-gray-400);
                                                                                                        +  }
                                                                                                        +  &.completed {
                                                                                                        +    .progress-bar {
                                                                                                        +      background-color: var(--ion-color-green);
                                                                                                        +    }
                                                                                                        +  }
                                                                                                        +  &.highlighted {
                                                                                                        +    .progress-bar-background {
                                                                                                        +      background-color: var(--ion-color-secondary-100);
                                                                                                        +    }
                                                                                                        +    .progress-bar {
                                                                                                        +      background-color: var(--ion-color-secondary);
                                                                                                        +    }
                                                                                                        +  }
                                                                                                        +}
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + Legend +
                                                                                                        +
                                                                                                        +
                                                                                                        Html element +
                                                                                                        +
                                                                                                        +
                                                                                                        Component +
                                                                                                        +
                                                                                                        +
                                                                                                        Html element with directive +
                                                                                                        +
                                                                                                        +
                                                                                                        + + +
                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                        +
                                                                                                        +

                                                                                                        results matching ""

                                                                                                        +
                                                                                                          +
                                                                                                          +
                                                                                                          +

                                                                                                          No results matching ""

                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTextAreaComponent.html b/documentation/docs/generated/components/TmplTextAreaComponent.html new file mode 100644 index 0000000000..55aba8bfed --- /dev/null +++ b/documentation/docs/generated/components/TmplTextAreaComponent.html @@ -0,0 +1,535 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          + + +
                                                                                                          +
                                                                                                          + + + + + + + + +
                                                                                                          +

                                                                                                          +

                                                                                                          File

                                                                                                          +

                                                                                                          +

                                                                                                          + src/app/shared/components/template/components/text-area/text-area.component.ts +

                                                                                                          + + + +

                                                                                                          +

                                                                                                          Extends

                                                                                                          +

                                                                                                          +

                                                                                                          + TemplateBaseComponent +

                                                                                                          + +

                                                                                                          +

                                                                                                          Implements

                                                                                                          +

                                                                                                          +

                                                                                                          + ITemplateRowProps + OnInit +

                                                                                                          + + +
                                                                                                          +

                                                                                                          Metadata

                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                          + +
                                                                                                          +

                                                                                                          Index

                                                                                                          + + + + + + + + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          Properties
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          Methods
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          + +
                                                                                                          +

                                                                                                          Constructor

                                                                                                          + + + + + + + + + + +
                                                                                                          +constructor() +
                                                                                                          + +
                                                                                                          +
                                                                                                          + + + + + +
                                                                                                          + +

                                                                                                          + Methods +

                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                          + + + getParams + + +
                                                                                                          +getParams() +
                                                                                                          + +
                                                                                                          + +
                                                                                                          + Returns : void + +
                                                                                                          +
                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                          + + + Public + Async + handleChange + + +
                                                                                                          + + handleChange(value: any) +
                                                                                                          + +
                                                                                                          + +
                                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                          NameTypeOptional
                                                                                                          value + any + + No +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + Returns : any + +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + +

                                                                                                          + Properties +

                                                                                                          + + + + + + + + + + + + + + +
                                                                                                          + + + Public + placeholder + + +
                                                                                                          + Type : string + +
                                                                                                          + +
                                                                                                          +
                                                                                                          + +
                                                                                                          + + +
                                                                                                          +
                                                                                                          import { Component, OnInit } from "@angular/core";
                                                                                                          +import { TemplateBaseComponent } from "../base";
                                                                                                          +import { ITemplateRowProps } from "../../models";
                                                                                                          +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                          +
                                                                                                          +@Component({
                                                                                                          +  selector: "plh-text-area",
                                                                                                          +  templateUrl: "./text-area.component.html",
                                                                                                          +  styleUrls: ["./text-area.component.scss"],
                                                                                                          +})
                                                                                                          +export class TmplTextAreaComponent
                                                                                                          +  extends TemplateBaseComponent
                                                                                                          +  implements ITemplateRowProps, OnInit
                                                                                                          +{
                                                                                                          +  public placeholder: string;
                                                                                                          +
                                                                                                          +  constructor() {
                                                                                                          +    super();
                                                                                                          +  }
                                                                                                          +
                                                                                                          +  ngOnInit() {
                                                                                                          +    this.getParams();
                                                                                                          +  }
                                                                                                          +
                                                                                                          +  getParams() {
                                                                                                          +    this.placeholder = getStringParamFromTemplateRow(this._row, "placeholder", "");
                                                                                                          +  }
                                                                                                          +
                                                                                                          +  public async handleChange(value: any) {
                                                                                                          +    await this.setValue(value);
                                                                                                          +    this.triggerActions("changed");
                                                                                                          +  }
                                                                                                          +}
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          <div class="wrapper margin-t-regular">
                                                                                                          +  <ion-textarea
                                                                                                          +    #input
                                                                                                          +    class="text_area"
                                                                                                          +    [placeholder]="placeholder"
                                                                                                          +    (ionBlur)="handleChange(input.value)"
                                                                                                          +    [value]="_row.value"
                                                                                                          +    auto-grow="true"
                                                                                                          +  ></ion-textarea>
                                                                                                          +</div>
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          +

                                                                                                          + ./text-area.component.scss +

                                                                                                          +
                                                                                                          .wrapper {
                                                                                                          +  .text_area {
                                                                                                          +    background: var(--ion-color-primary-contrast);
                                                                                                          +    border: var(--ion-border-standard);
                                                                                                          +    font-size: var(--text-box-font-size);
                                                                                                          +    color: var(--ion-color-primary);
                                                                                                          +    font-weight: var(--font-weight-bold);
                                                                                                          +    box-shadow: var(--ion-default-box-shadow);
                                                                                                          +    border-radius: var(--ion-border-radius-standard);
                                                                                                          +    --padding-end: var(--small-padding);
                                                                                                          +    --padding-start: var(--small-padding);
                                                                                                          +    min-height: 30vh;
                                                                                                          +    max-height: 30vh;
                                                                                                          +    overflow: hidden;
                                                                                                          +  }
                                                                                                          +}
                                                                                                          +
                                                                                                          +
                                                                                                          + +
                                                                                                          +
                                                                                                          +
                                                                                                          +
                                                                                                          + Legend +
                                                                                                          +
                                                                                                          +
                                                                                                          Html element +
                                                                                                          +
                                                                                                          +
                                                                                                          Component +
                                                                                                          +
                                                                                                          +
                                                                                                          Html element with directive +
                                                                                                          +
                                                                                                          +
                                                                                                          + + +
                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                          +
                                                                                                          +

                                                                                                          results matching ""

                                                                                                          +
                                                                                                            +
                                                                                                            +
                                                                                                            +

                                                                                                            No results matching ""

                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTextBoxComponent.html b/documentation/docs/generated/components/TmplTextBoxComponent.html new file mode 100644 index 0000000000..d99d418270 --- /dev/null +++ b/documentation/docs/generated/components/TmplTextBoxComponent.html @@ -0,0 +1,670 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                            +
                                                                                                            + + +
                                                                                                            +
                                                                                                            + + + + + + + + +
                                                                                                            +

                                                                                                            +

                                                                                                            File

                                                                                                            +

                                                                                                            +

                                                                                                            + src/app/shared/components/template/components/text-box/text-box.component.ts +

                                                                                                            + + + +

                                                                                                            +

                                                                                                            Extends

                                                                                                            +

                                                                                                            +

                                                                                                            + TemplateBaseComponent +

                                                                                                            + +

                                                                                                            +

                                                                                                            Implements

                                                                                                            +

                                                                                                            +

                                                                                                            + OnInit +

                                                                                                            + + +
                                                                                                            +

                                                                                                            Metadata

                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            + +
                                                                                                            +

                                                                                                            Index

                                                                                                            + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            +
                                                                                                            Properties
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            Methods
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            + + + + + + +
                                                                                                            + +

                                                                                                            + Methods +

                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + + getParams + + +
                                                                                                            +getParams() +
                                                                                                            + +
                                                                                                            + +
                                                                                                            + Returns : void + +
                                                                                                            +
                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                            + + + Public + Async + handleChange + + +
                                                                                                            + + handleChange(value: any) +
                                                                                                            + +
                                                                                                            + +
                                                                                                            + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                            NameTypeOptional
                                                                                                            value + any + + No +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + Returns : any + +
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + +

                                                                                                            + Properties +

                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + isNumberInput + + +
                                                                                                            + Default value : false +
                                                                                                            + +
                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + maxLength + + +
                                                                                                            + Type : number + +
                                                                                                            + +
                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + placeholder + + +
                                                                                                            + Type : string + +
                                                                                                            + +
                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + prioritisePlaceholder + + +
                                                                                                            + Type : boolean + +
                                                                                                            + +
                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + style + + +
                                                                                                            + Type : string + +
                                                                                                            + +
                                                                                                            + + + + + + + + + + + + + + +
                                                                                                            + + + textAlign + + +
                                                                                                            + Type : string + +
                                                                                                            + +
                                                                                                            +
                                                                                                            + +
                                                                                                            + + +
                                                                                                            +
                                                                                                            import { Component, OnInit } from "@angular/core";
                                                                                                            +import {
                                                                                                            +  getBooleanParamFromTemplateRow,
                                                                                                            +  getNumberParamFromTemplateRow,
                                                                                                            +  getStringParamFromTemplateRow,
                                                                                                            +} from "../../../../utils";
                                                                                                            +import { TemplateBaseComponent } from "../base";
                                                                                                            +
                                                                                                            +@Component({
                                                                                                            +  selector: "plh-text-box",
                                                                                                            +  templateUrl: "./text-box.component.html",
                                                                                                            +  styleUrls: ["./text-box.component.scss"],
                                                                                                            +})
                                                                                                            +export class TmplTextBoxComponent extends TemplateBaseComponent implements OnInit {
                                                                                                            +  prioritisePlaceholder: boolean;
                                                                                                            +  isNumberInput = false;
                                                                                                            +  placeholder: string;
                                                                                                            +  textAlign: string;
                                                                                                            +  maxLength: number;
                                                                                                            +  style: string;
                                                                                                            +
                                                                                                            +  ngOnInit() {
                                                                                                            +    this.getParams();
                                                                                                            +  }
                                                                                                            +  public async handleChange(value: any) {
                                                                                                            +    await this.setValue(value);
                                                                                                            +    this.triggerActions("changed");
                                                                                                            +  }
                                                                                                            +
                                                                                                            +  getParams() {
                                                                                                            +    this.placeholder = getStringParamFromTemplateRow(this._row, "placeholder", "");
                                                                                                            +    this.maxLength = getNumberParamFromTemplateRow(this._row, "max_length", 30);
                                                                                                            +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "center");
                                                                                                            +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                                                                                                            +    this.isNumberInput = getBooleanParamFromTemplateRow(this._row, "number_input", false);
                                                                                                            +    this.prioritisePlaceholder = getBooleanParamFromTemplateRow(
                                                                                                            +      this._row,
                                                                                                            +      "prioritise_placeholder",
                                                                                                            +      false
                                                                                                            +    );
                                                                                                            +  }
                                                                                                            +}
                                                                                                            +
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            <div class="wrapper margin-t-regular" [class]="style">
                                                                                                            +  <ion-input
                                                                                                            +    #input
                                                                                                            +    class="text-box-input"
                                                                                                            +    [inputmode]="isNumberInput ? 'tel' : 'text'"
                                                                                                            +    (ionBlur)="handleChange(input.value)"
                                                                                                            +    [value]="prioritisePlaceholder ? '' : _row.value"
                                                                                                            +    [placeholder]="placeholder"
                                                                                                            +    [maxlength]="maxLength"
                                                                                                            +    [style.textAlign]="textAlign"
                                                                                                            +  ></ion-input>
                                                                                                            +</div>
                                                                                                            +
                                                                                                            +<!--  -->
                                                                                                            +
                                                                                                            +
                                                                                                            + +
                                                                                                            +

                                                                                                            + ./text-box.component.scss +

                                                                                                            +
                                                                                                            .wrapper {
                                                                                                            +  .text-box-input {
                                                                                                            +    background: var(--ion-color-primary-contrast);
                                                                                                            +    border: var(--ion-border-standard);
                                                                                                            +    width: 100%;
                                                                                                            +    height: var(--text-box-height);
                                                                                                            +    font-size: var(--text-box-font-size);
                                                                                                            +    color: var(--ion-color-primary);
                                                                                                            +    font-weight: var(--font-weight-bold);
                                                                                                            +    box-shadow: var(--ion-default-box-shadow);
                                                                                                            +    border-radius: var(--ion-border-radius-standard);
                                                                                                            +    --padding-end: var(--small-padding);
                                                                                                            +    --padding-start: var(--small-padding);
                                                                                                            +  }
                                                                                                            +}
                                                                                                            +
                                                                                                            +
                                                                                                            + +
                                                                                                            +
                                                                                                            +
                                                                                                            +
                                                                                                            + Legend +
                                                                                                            +
                                                                                                            +
                                                                                                            Html element +
                                                                                                            +
                                                                                                            +
                                                                                                            Component +
                                                                                                            +
                                                                                                            +
                                                                                                            Html element with directive +
                                                                                                            +
                                                                                                            +
                                                                                                            + + +
                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                            +
                                                                                                            +

                                                                                                            results matching ""

                                                                                                            +
                                                                                                              +
                                                                                                              +
                                                                                                              +

                                                                                                              No results matching ""

                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTextComponent.html b/documentation/docs/generated/components/TmplTextComponent.html new file mode 100644 index 0000000000..2317cb4082 --- /dev/null +++ b/documentation/docs/generated/components/TmplTextComponent.html @@ -0,0 +1,552 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                              +
                                                                                                              + + +
                                                                                                              +
                                                                                                              + + + + + + + + +
                                                                                                              +

                                                                                                              +

                                                                                                              File

                                                                                                              +

                                                                                                              +

                                                                                                              + src/app/shared/components/template/components/text.ts +

                                                                                                              + + + +

                                                                                                              +

                                                                                                              Extends

                                                                                                              +

                                                                                                              +

                                                                                                              + TemplateBaseComponent +

                                                                                                              + +

                                                                                                              +

                                                                                                              Implements

                                                                                                              +

                                                                                                              +

                                                                                                              + OnInit +

                                                                                                              + + +
                                                                                                              +

                                                                                                              Metadata

                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                              + +
                                                                                                              +

                                                                                                              Index

                                                                                                              + + + + + + + + + + + + + + + + + + + + + +
                                                                                                              +
                                                                                                              Properties
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              Methods
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              + +
                                                                                                              +

                                                                                                              Constructor

                                                                                                              + + + + + + + + + + +
                                                                                                              +constructor() +
                                                                                                              + +
                                                                                                              +
                                                                                                              + + + + + +
                                                                                                              + +

                                                                                                              + Methods +

                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                              + + + getParams + + +
                                                                                                              +getParams() +
                                                                                                              + +
                                                                                                              + +
                                                                                                              + Returns : void + +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + +

                                                                                                              + Properties +

                                                                                                              + + + + + + + + + + + + + + +
                                                                                                              + + + isFalsy + + +
                                                                                                              + Type : boolean + +
                                                                                                              + +
                                                                                                              + + + + + + + + + + + + + + +
                                                                                                              + + + style + + +
                                                                                                              + Type : string | null + +
                                                                                                              + +
                                                                                                              + + + + + + + + + + + + + + +
                                                                                                              + + + textAlign + + +
                                                                                                              + Type : string | null + +
                                                                                                              + +
                                                                                                              + + + + + + + + + + + + + + +
                                                                                                              + + + type + + +
                                                                                                              + Type : string + +
                                                                                                              + +
                                                                                                              +
                                                                                                              + +
                                                                                                              + + +
                                                                                                              +
                                                                                                              import { Component, OnInit } from "@angular/core";
                                                                                                              +import { TemplateBaseComponent } from "./base";
                                                                                                              +import { getStringParamFromTemplateRow } from "../../../utils";
                                                                                                              +
                                                                                                              +@Component({
                                                                                                              +  selector: "plh-tmpl-text",
                                                                                                              +  template: `<div
                                                                                                              +    *ngIf="_row && _row.value"
                                                                                                              +    class="large standard normal margin-t-large"
                                                                                                              +    [class]="style"
                                                                                                              +    [ngStyle]="isFalsy ? { display: 'none' } : { display: 'block' }"
                                                                                                              +    [innerHTML]="type === 'numbered' ? (_row.value | number) : (_row.value?.toString() | markdown)"
                                                                                                              +    [style.textAlign]="textAlign"
                                                                                                              +  ></div> `,
                                                                                                              +  styleUrls: ["./tmpl-components-common.scss"],
                                                                                                              +})
                                                                                                              +export class TmplTextComponent extends TemplateBaseComponent implements OnInit {
                                                                                                              +  textAlign: string | null;
                                                                                                              +  style: string | null;
                                                                                                              +  type: string;
                                                                                                              +  isFalsy: boolean;
                                                                                                              +  constructor() {
                                                                                                              +    super();
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  ngOnInit() {
                                                                                                              +    this.getParams();
                                                                                                              +  }
                                                                                                              +
                                                                                                              +  getParams() {
                                                                                                              +    this.isFalsy = ["undefined", "NaN", "null", '""'].includes(this._row.value);
                                                                                                              +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", null);
                                                                                                              +    this.type = this._row.parameter_list?.style?.includes("numbered") ? "numbered" : "marked";
                                                                                                              +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                                                                                                              +  }
                                                                                                              +}
                                                                                                              +
                                                                                                              +
                                                                                                              + + +
                                                                                                              +

                                                                                                              + ./tmpl-components-common.scss +

                                                                                                              +
                                                                                                              @use "/src/theme/mixins.scss";
                                                                                                              +
                                                                                                              +.tmpl-video-container {
                                                                                                              +  width: 100%;
                                                                                                              +  display: flex;
                                                                                                              +  justify-content: center;
                                                                                                              +
                                                                                                              +  video {
                                                                                                              +    width: 100%;
                                                                                                              +    max-width: var(--video-max-width);
                                                                                                              +    border-radius: var(--ion-border-radius-secondary);
                                                                                                              +  }
                                                                                                              +}
                                                                                                              +
                                                                                                              +.left {
                                                                                                              +  justify-content: start;
                                                                                                              +}
                                                                                                              +.right {
                                                                                                              +  justify-content: flex-end;
                                                                                                              +}
                                                                                                              +.center {
                                                                                                              +  justify-content: center;
                                                                                                              +}
                                                                                                              +.rounded_corners {
                                                                                                              +  border-radius: var(--ion-border-radius-standard);
                                                                                                              +
                                                                                                              +  img {
                                                                                                              +    border-radius: var(--ion-border-radius-standard);
                                                                                                              +  }
                                                                                                              +}
                                                                                                              +.whiteText {
                                                                                                              +  color: var(--ion-color-primary-contrast);
                                                                                                              +}
                                                                                                              +
                                                                                                              +
                                                                                                              + +
                                                                                                              +
                                                                                                              +
                                                                                                              +
                                                                                                              + Legend +
                                                                                                              +
                                                                                                              +
                                                                                                              Html element +
                                                                                                              +
                                                                                                              +
                                                                                                              Component +
                                                                                                              +
                                                                                                              +
                                                                                                              Html element with directive +
                                                                                                              +
                                                                                                              +
                                                                                                              + + +
                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                              +
                                                                                                              +

                                                                                                              results matching ""

                                                                                                              +
                                                                                                                +
                                                                                                                +
                                                                                                                +

                                                                                                                No results matching ""

                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTileComponent.html b/documentation/docs/generated/components/TmplTileComponent.html new file mode 100644 index 0000000000..2295eff2cf --- /dev/null +++ b/documentation/docs/generated/components/TmplTileComponent.html @@ -0,0 +1,1104 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                +
                                                                                                                + + +
                                                                                                                +
                                                                                                                + + + + + + + + +
                                                                                                                +

                                                                                                                +

                                                                                                                File

                                                                                                                +

                                                                                                                +

                                                                                                                + src/app/shared/components/template/components/tile-component/tile-component.component.ts +

                                                                                                                + + + +

                                                                                                                +

                                                                                                                Extends

                                                                                                                +

                                                                                                                +

                                                                                                                + TemplateBaseComponent +

                                                                                                                + +

                                                                                                                +

                                                                                                                Implements

                                                                                                                +

                                                                                                                +

                                                                                                                + ITemplateRowProps + OnInit +

                                                                                                                + + +
                                                                                                                +

                                                                                                                Metadata

                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                + +
                                                                                                                +

                                                                                                                Index

                                                                                                                + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                +
                                                                                                                Properties
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                Methods
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                + +
                                                                                                                +

                                                                                                                Constructor

                                                                                                                + + + + + + + + + + + + + +
                                                                                                                +constructor(elRef: ElementRef) +
                                                                                                                + +
                                                                                                                +
                                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                                                NameTypeOptional
                                                                                                                elRef + ElementRef + + No +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + + + + + +
                                                                                                                + +

                                                                                                                + Methods +

                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                + + + getParams + + +
                                                                                                                +getParams() +
                                                                                                                + +
                                                                                                                + +
                                                                                                                + Returns : void + +
                                                                                                                +
                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                + + + isPlayIcon + + +
                                                                                                                +isPlayIcon(iconSrc: string) +
                                                                                                                + +
                                                                                                                + +
                                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                NameTypeOptional
                                                                                                                iconSrc + string + + No +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + Returns : boolean + +
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + +

                                                                                                                + Properties +

                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + first_line_text + + +
                                                                                                                + Type : string | null + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + icon_result + + +
                                                                                                                + Type : string + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + icon_src + + +
                                                                                                                + Type : string | null + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + is_play_icon + + +
                                                                                                                + Type : boolean + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + isCustomIcon + + +
                                                                                                                + Type : boolean + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + left_icon_src + + +
                                                                                                                + Type : string | null + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + second_line_text + + +
                                                                                                                + Type : string | null + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + style + + +
                                                                                                                + Type : string | null + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + value + + +
                                                                                                                + Type : any + +
                                                                                                                + +
                                                                                                                + + + + + + + + + + + + + + +
                                                                                                                + + + windowWidth + + +
                                                                                                                + Type : number + +
                                                                                                                + +
                                                                                                                +
                                                                                                                + +
                                                                                                                + + +
                                                                                                                +
                                                                                                                import { Component, ElementRef, OnInit } from "@angular/core";
                                                                                                                +import { TemplateBaseComponent } from "../base";
                                                                                                                +import { ITemplateRowProps } from "../../models";
                                                                                                                +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                +
                                                                                                                +@Component({
                                                                                                                +  selector: "plh-tile-component",
                                                                                                                +  templateUrl: "./tile-component.component.html",
                                                                                                                +  styleUrls: ["./tile-component.component.scss"],
                                                                                                                +})
                                                                                                                +export class TmplTileComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
                                                                                                                +  first_line_text: string | null;
                                                                                                                +  second_line_text: string | null;
                                                                                                                +  icon_src: string | null;
                                                                                                                +  left_icon_src: string | null;
                                                                                                                +  value: any;
                                                                                                                +  style: string | null;
                                                                                                                +  icon_result: string;
                                                                                                                +  is_play_icon: boolean;
                                                                                                                +  windowWidth: number;
                                                                                                                +  isCustomIcon: boolean;
                                                                                                                +
                                                                                                                +  constructor(private elRef: ElementRef) {
                                                                                                                +    super();
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  ngOnInit() {
                                                                                                                +    this.getParams();
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  getParams() {
                                                                                                                +    this.first_line_text = getStringParamFromTemplateRow(this._row, "first_line_text", null);
                                                                                                                +    this.second_line_text = getStringParamFromTemplateRow(this._row, "second_line_text", null);
                                                                                                                +    this.icon_src = getStringParamFromTemplateRow(this._row, "icon_src", null);
                                                                                                                +    this.left_icon_src = getStringParamFromTemplateRow(this._row, "left_icon_src", "");
                                                                                                                +    this.value = this._row.value;
                                                                                                                +    this.windowWidth = window.innerWidth;
                                                                                                                +    this.style = `
                                                                                                                +      ${getStringParamFromTemplateRow(this._row, "style", "quick_start")} 
                                                                                                                +      ${this.isParentPoint() ? "parent_point" : ""}
                                                                                                                +      ${this.isTwoColumns() ? "two_columns" : ""}
                                                                                                                +      `;
                                                                                                                +    this.is_play_icon = this.isPlayIcon(this.icon_src);
                                                                                                                +    this.isCustomIcon = this.icon_src?.includes("/");
                                                                                                                +    // I had added the line below to have the option of including plh assets rather than pre-built ion icons.
                                                                                                                +    // Having this line made the parent_point style in the display group behave very strangely in the parent centre.
                                                                                                                +    // Commented it out for now as we don't need custom-made icons for the ime eng but will create an issue in GH.
                                                                                                                +    //this.isCustomIcon = this.left_icon_src.includes("/");
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private isParentPoint(): boolean {
                                                                                                                +    const displayGroupElement = this.elRef.nativeElement.closest(".display-group-wrapper");
                                                                                                                +    if (displayGroupElement) {
                                                                                                                +      return displayGroupElement.classList.contains("parent_point");
                                                                                                                +    } else {
                                                                                                                +      return false;
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  private isTwoColumns(): boolean {
                                                                                                                +    const displayGroupElement = this.elRef.nativeElement.closest(".display-group-wrapper");
                                                                                                                +    if (displayGroupElement) {
                                                                                                                +      return displayGroupElement.classList.contains("two_columns");
                                                                                                                +    } else {
                                                                                                                +      return false;
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  isPlayIcon(iconSrc: string): boolean {
                                                                                                                +    if (iconSrc) return iconSrc.includes("play");
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                <div [class]="style" class="tile-wrapper default_style" (click)="triggerActions('click')">
                                                                                                                +  <div *ngIf="left_icon_src" class="left-icon">
                                                                                                                +    <ion-icon *ngIf="!isCustomIcon" [name]="left_icon_src"></ion-icon>
                                                                                                                +  </div>
                                                                                                                +  <div class="text">
                                                                                                                +    <div class="first-line-text" *ngIf="first_line_text" [innerHTML]="first_line_text | markdown">
                                                                                                                +      {{ first_line_text }}
                                                                                                                +    </div>
                                                                                                                +    <div
                                                                                                                +      class="second-line-text"
                                                                                                                +      *ngIf="second_line_text"
                                                                                                                +      [innerHTML]="second_line_text | markdown"
                                                                                                                +    >
                                                                                                                +      {{ second_line_text }}
                                                                                                                +    </div>
                                                                                                                +  </div>
                                                                                                                +  <div class="button-wrapper" *ngIf="icon_src">
                                                                                                                +    <ion-button class="btn-tile">
                                                                                                                +      <img
                                                                                                                +        *ngIf="isCustomIcon"
                                                                                                                +        [style.max-width]="is_play_icon ? '' : 'initial'"
                                                                                                                +        [style.margin-left]="is_play_icon ? '5px' : '0'"
                                                                                                                +        [src]="icon_src | plhAsset"
                                                                                                                +        alt=""
                                                                                                                +      />
                                                                                                                +      <ion-icon *ngIf="!isCustomIcon" [name]="icon_src"></ion-icon>
                                                                                                                +    </ion-button>
                                                                                                                +  </div>
                                                                                                                +</div>
                                                                                                                +
                                                                                                                +
                                                                                                                + +
                                                                                                                +

                                                                                                                + ./tile-component.component.scss +

                                                                                                                +
                                                                                                                @use "/src/theme/mixins.scss";
                                                                                                                +
                                                                                                                +$background-default: var(--tile-button-background-default, var(--ion-color-primary-200));
                                                                                                                +$background-primary: var(--tile-button-background-primary, var(--gradient-primary-mid-vertical));
                                                                                                                +$background-primary-light: var(
                                                                                                                +  --tile-button-background-primary-light,
                                                                                                                +  var(--gradient-primary-light-vertical)
                                                                                                                +);
                                                                                                                +$background-secondary: var(
                                                                                                                +  --tile-button-background-secondary,
                                                                                                                +  var(--gradient-secondary-mid-vertical)
                                                                                                                +);
                                                                                                                +$background-secondary-light: var(
                                                                                                                +  --tile-button-background-secondary-light,
                                                                                                                +  var(--gradient-secondary-light-vertical)
                                                                                                                +);
                                                                                                                +
                                                                                                                +// NOTE CC 2021-12-16 - Presumably this is for case of rendered markdown
                                                                                                                +// (but ideally should be handled from within markdown itself)
                                                                                                                +.first-line-text ::ng-deep,
                                                                                                                +.second-line-text ::ng-deep {
                                                                                                                +  p {
                                                                                                                +    margin: 0;
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +.tile-wrapper {
                                                                                                                +  @include mixins.flex-space-between;
                                                                                                                +  .text > div {
                                                                                                                +    font-weight: var(--font-weight-bold);
                                                                                                                +    font-size: var(--font-size-text-large);
                                                                                                                +    line-height: var(--line-height-text-largest);
                                                                                                                +    color: var(--ion-color-primary-contrast);
                                                                                                                +  }
                                                                                                                +
                                                                                                                +  .button-wrapper {
                                                                                                                +    .btn-tile {
                                                                                                                +      width: var(--tile-button-width);
                                                                                                                +      height: var(--tile-button-height);
                                                                                                                +      --background: transparent;
                                                                                                                +      --box-shadow: none;
                                                                                                                +
                                                                                                                +      box-shadow: none;
                                                                                                                +      --ripple-color: transparent;
                                                                                                                +      img {
                                                                                                                +        width: 60px;
                                                                                                                +        height: 60px;
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +    // Note - CC 2021-12-21 - Currently not in use in any templates, but keeping in case we want
                                                                                                                +    // to expose as a parameter option in the future
                                                                                                                +    .circle-border {
                                                                                                                +      border: var(--ion-border-light-thicker);
                                                                                                                +      --border-radius: var(--ion-border-radius-rounded);
                                                                                                                +      border-radius: var(--ion-border-radius-rounded);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +.default_style {
                                                                                                                +  padding: var(--regular-padding, 10px);
                                                                                                                +  box-shadow: var(--ion-default-box-shadow);
                                                                                                                +  min-height: var(--tile-default-height);
                                                                                                                +  border-radius: var(--ion-border-radius-standard);
                                                                                                                +}
                                                                                                                +
                                                                                                                +/***********************************************************************************************
                                                                                                                +*     PLH-specific page type stylings
                                                                                                                +    TODO - CC 2022-01-13 - Most of this should be reviewed and ideally replaced with more
                                                                                                                +    simple components (e.g. display groups)
                                                                                                                +************************************************************************************************/
                                                                                                                +.workshop_page {
                                                                                                                +  display: flex;
                                                                                                                +  flex-direction: column;
                                                                                                                +  justify-content: space-between;
                                                                                                                +  width: 8rem;
                                                                                                                +  min-height: 7rem;
                                                                                                                +  border-radius: var(--ion-border-radius-standard);
                                                                                                                +  border: var(--ion-border-thin-standard);
                                                                                                                +  background: var(--ion-color-primary-contrast);
                                                                                                                +  text-align: center;
                                                                                                                +  padding: var(--tiny-padding);
                                                                                                                +  box-shadow: var(--ion-default-box-shadow);
                                                                                                                +
                                                                                                                +  .button-wrapper {
                                                                                                                +    order: 1;
                                                                                                                +    width: 100%;
                                                                                                                +
                                                                                                                +    .btn-tile {
                                                                                                                +      pointer-events: none;
                                                                                                                +      border: 0;
                                                                                                                +      margin: 0;
                                                                                                                +      --border-radius: unset;
                                                                                                                +      border-radius: unset;
                                                                                                                +      width: 100%;
                                                                                                                +      height: 100%;
                                                                                                                +
                                                                                                                +      img {
                                                                                                                +        width: 6rem;
                                                                                                                +        height: 4.5rem;
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +  .text {
                                                                                                                +    order: 2;
                                                                                                                +    div {
                                                                                                                +      color: var(--ion-color-primary);
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +.quick_start {
                                                                                                                +  background: $background-secondary-light;
                                                                                                                +}
                                                                                                                +
                                                                                                                +.quick_start_passive {
                                                                                                                +  background: $background-primary;
                                                                                                                +}
                                                                                                                +.quick_start_blue {
                                                                                                                +  background: $background-primary-light;
                                                                                                                +}
                                                                                                                +.quick_start_dark {
                                                                                                                +  background: $background-secondary;
                                                                                                                +}
                                                                                                                +.parent_centre_1 {
                                                                                                                +  background: $background-primary-light;
                                                                                                                +}
                                                                                                                +.parent_centre_2 {
                                                                                                                +  background: $background-secondary-light;
                                                                                                                +}
                                                                                                                +.parent_centre_3 {
                                                                                                                +  background: $background-secondary;
                                                                                                                +}
                                                                                                                +.parent_centre_4 {
                                                                                                                +  background: $background-primary;
                                                                                                                +}
                                                                                                                +
                                                                                                                +.image_text {
                                                                                                                +  display: flex;
                                                                                                                +  justify-content: space-evenly;
                                                                                                                +  align-items: center;
                                                                                                                +  margin: 0 auto;
                                                                                                                +  padding: var(--small-padding);
                                                                                                                +  width: 10rem;
                                                                                                                +  margin-bottom: var(--regular-margin);
                                                                                                                +  max-width: var(--tile-image-text-width);
                                                                                                                +  background: $background-default;
                                                                                                                +  box-shadow: var(--ion-default-box-shadow);
                                                                                                                +  border-radius: var(--ion-border-radius-standard);
                                                                                                                +  position: relative;
                                                                                                                +  flex-direction: column;
                                                                                                                +  align-content: center;
                                                                                                                +  flex-wrap: nowrap;
                                                                                                                +  .button-wrapper {
                                                                                                                +    order: 1;
                                                                                                                +    height: auto;
                                                                                                                +    width: 100%;
                                                                                                                +    margin-bottom: 1em;
                                                                                                                +    .btn-tile {
                                                                                                                +      pointer-events: none;
                                                                                                                +      border: 0;
                                                                                                                +      --border-radius: unset;
                                                                                                                +      border-radius: unset;
                                                                                                                +      width: 100%;
                                                                                                                +      height: 100%;
                                                                                                                +      img {
                                                                                                                +        width: auto;
                                                                                                                +        height: 100%;
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +  .text {
                                                                                                                +    order: 2;
                                                                                                                +    div {
                                                                                                                +      color: var(--ion-color-primary);
                                                                                                                +      text-align: center;
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +.two_columns {
                                                                                                                +  &.image_text {
                                                                                                                +    height: 100%;
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +.button_tile {
                                                                                                                +  background: $background-default;
                                                                                                                +  overflow: hidden;
                                                                                                                +  justify-content: space-between;
                                                                                                                +  height: var(--tile-button-style-height);
                                                                                                                +  &.default_style {
                                                                                                                +    min-height: unset;
                                                                                                                +    padding: var(--regular-padding);
                                                                                                                +  }
                                                                                                                +  .left-icon {
                                                                                                                +    flex: 1;
                                                                                                                +    height: 80%;
                                                                                                                +    img {
                                                                                                                +      height: 100%;
                                                                                                                +    }
                                                                                                                +    ion-icon {
                                                                                                                +      font-size: x-large;
                                                                                                                +      color: var(--ion-color-primary);
                                                                                                                +      .icon-inner {
                                                                                                                +        width: 60px;
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +  &.tile-wrapper {
                                                                                                                +    margin-bottom: 0;
                                                                                                                +    .text {
                                                                                                                +      flex: 6;
                                                                                                                +      div {
                                                                                                                +        font-size: var(--font-size-text-medium);
                                                                                                                +        line-height: var(--line-height-text-small);
                                                                                                                +        font-weight: var(--font-weight-standard);
                                                                                                                +        color: var(--ion-color-primary);
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +    .button-wrapper {
                                                                                                                +      width: 50px;
                                                                                                                +      ion-button::part(native) {
                                                                                                                +        padding-inline-end: 0;
                                                                                                                +      }
                                                                                                                +      .btn-tile {
                                                                                                                +        border: none;
                                                                                                                +        width: 100%;
                                                                                                                +        margin-left: 10px;
                                                                                                                +        img {
                                                                                                                +          width: 100%;
                                                                                                                +          margin-right: 10px;
                                                                                                                +        }
                                                                                                                +        ion-icon {
                                                                                                                +          font-size: xxx-large;
                                                                                                                +          color: var(--ion-color-primary);
                                                                                                                +          .icon-inner {
                                                                                                                +            width: 60px;
                                                                                                                +          }
                                                                                                                +        }
                                                                                                                +      }
                                                                                                                +    }
                                                                                                                +  }
                                                                                                                +}
                                                                                                                +
                                                                                                                +
                                                                                                                + +
                                                                                                                +
                                                                                                                +
                                                                                                                +
                                                                                                                + Legend +
                                                                                                                +
                                                                                                                +
                                                                                                                Html element +
                                                                                                                +
                                                                                                                +
                                                                                                                Component +
                                                                                                                +
                                                                                                                +
                                                                                                                Html element with directive +
                                                                                                                +
                                                                                                                +
                                                                                                                + + +
                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                +
                                                                                                                +

                                                                                                                results matching ""

                                                                                                                +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +

                                                                                                                  No results matching ""

                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTimerComponent.html b/documentation/docs/generated/components/TmplTimerComponent.html new file mode 100644 index 0000000000..1f03452aaf --- /dev/null +++ b/documentation/docs/generated/components/TmplTimerComponent.html @@ -0,0 +1,2172 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  +
                                                                                                                  + + + + + + + + +
                                                                                                                  +

                                                                                                                  +

                                                                                                                  File

                                                                                                                  +

                                                                                                                  +

                                                                                                                  + src/app/shared/components/template/components/timer/timer.component.ts +

                                                                                                                  + + + +

                                                                                                                  +

                                                                                                                  Extends

                                                                                                                  +

                                                                                                                  +

                                                                                                                  + TemplateBaseComponent +

                                                                                                                  + +

                                                                                                                  +

                                                                                                                  Implements

                                                                                                                  +

                                                                                                                  +

                                                                                                                  + ITemplateRowProps + OnInit +

                                                                                                                  + + +
                                                                                                                  +

                                                                                                                  Metadata

                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  Index

                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  +
                                                                                                                  Properties
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  Methods
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  Inputs
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  Accessors
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  Constructor

                                                                                                                  + + + + + + + + + + + + + +
                                                                                                                  +constructor(pickerController: PickerController, platform: Platform, audioService: AudioService, templateAssetService: TemplateAssetService) +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameTypeOptional
                                                                                                                  pickerController + PickerController + + No +
                                                                                                                  platform + Platform + + No +
                                                                                                                  audioService + AudioService + + No +
                                                                                                                  templateAssetService + TemplateAssetService + + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  Inputs

                                                                                                                  + + + + + + + + + + + + +
                                                                                                                  + + row +
                                                                                                                  + Type : FlowTypes.TemplateRow + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + +
                                                                                                                  + + template +
                                                                                                                  + Type : FlowTypes.Template + +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + +
                                                                                                                  + +

                                                                                                                  + Methods +

                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + changeState + + +
                                                                                                                  +changeState(state: TimerState) +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameTypeOptional
                                                                                                                  state + TimerState + + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + clickLeftButton + + +
                                                                                                                  +clickLeftButton() +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + clickRightButton + + +
                                                                                                                  +clickRightButton() +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + getColumnOptions + + +
                                                                                                                  +getColumnOptions(columnIndex, numOptions, columnOptions) +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameOptional
                                                                                                                  columnIndex + No +
                                                                                                                  numOptions + No +
                                                                                                                  columnOptions + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Returns : {} + +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + getColumns + + +
                                                                                                                  +getColumns(numColumns, columnOptions) +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameOptional
                                                                                                                  numColumns + No +
                                                                                                                  columnOptions + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Returns : {} + +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + getDurationFromParams + + +
                                                                                                                  +getDurationFromParams() +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Returns : any + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + getParams + + +
                                                                                                                  +getParams() +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + openPicker + + +
                                                                                                                  +openPicker() +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +

                                                                                                                  + Properties +

                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + _row + + +
                                                                                                                  + Type : FlowTypes.TemplateRow + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + _value + + +
                                                                                                                  + Type : number + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + help + + +
                                                                                                                  + Type : string | null + +
                                                                                                                  + Default value : null +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + is_editable_on_playing + + +
                                                                                                                  + Type : boolean + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + isTimerEditable + + +
                                                                                                                  + Type : boolean + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + leftButtonAction + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + leftButtonIcon + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + leftButtonName + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + minInput + + +
                                                                                                                  + Type : ElementRef + +
                                                                                                                  + Decorators : +
                                                                                                                  + + @ViewChild('min', {static: false})
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + minutes + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + ping + + +
                                                                                                                  + Type : string | null + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + player + + +
                                                                                                                  + Type : AudioPlayer | null + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + rightButtonAction + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + rightButtonIcon + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + rightButtonName + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + secInput + + +
                                                                                                                  + Type : ElementRef + +
                                                                                                                  + Decorators : +
                                                                                                                  + + @ViewChild('sec', {static: false})
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + seconds + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + starting_minutes + + +
                                                                                                                  + Type : number + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + starting_seconds + + +
                                                                                                                  + Type : number + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + state + + +
                                                                                                                  + Type : TimerState + +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                  + + + timerDurationExtension + + +
                                                                                                                  + Type : number + +
                                                                                                                  + Default value : 1 * 60 +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + timerStarted + + +
                                                                                                                  + Default value : false +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + timeValues + + +
                                                                                                                  + Default value : () => {...} +
                                                                                                                  + +
                                                                                                                  + + + + + + + + + + + + + + +
                                                                                                                  + + + title + + +
                                                                                                                  + Type : string + +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  + Accessors +

                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                  + + row +
                                                                                                                  + setrow(value: FlowTypes.TemplateRow) +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameTypeOptional
                                                                                                                  value + FlowTypes.TemplateRow + + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  + + value +
                                                                                                                  + getvalue() +
                                                                                                                  + +
                                                                                                                  + setvalue(val: number) +
                                                                                                                  + +
                                                                                                                  + +
                                                                                                                  + Parameters : + + + + + + + + + + + + + + + + + + +
                                                                                                                  NameTypeOptional
                                                                                                                  val + number + + No +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Returns : void + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  +
                                                                                                                  import { Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
                                                                                                                  +import { FlowTypes } from "data-models";
                                                                                                                  +import {
                                                                                                                  +  getBooleanParamFromTemplateRow,
                                                                                                                  +  getNumberParamFromTemplateRow,
                                                                                                                  +  getStringParamFromTemplateRow,
                                                                                                                  +} from "../../../../utils";
                                                                                                                  +import { PickerController, Platform } from "@ionic/angular";
                                                                                                                  +import { TemplateBaseComponent } from "../base";
                                                                                                                  +import { ITemplateRowProps } from "../../models";
                                                                                                                  +import { AudioService } from "src/app/shared/services/audio/audio.service";
                                                                                                                  +import { AudioPlayer } from "src/app/shared/services/audio/audio.player";
                                                                                                                  +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                  +
                                                                                                                  +@Component({
                                                                                                                  +  selector: "plh-timer",
                                                                                                                  +  templateUrl: "./timer.component.html",
                                                                                                                  +  styleUrls: ["./timer.component.scss"],
                                                                                                                  +})
                                                                                                                  +export class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
                                                                                                                  +  _row: FlowTypes.TemplateRow;
                                                                                                                  +  @Input() set row(value: FlowTypes.TemplateRow) {
                                                                                                                  +    this._row = value;
                                                                                                                  +  }
                                                                                                                  +  @Input() template: FlowTypes.Template;
                                                                                                                  +  @ViewChild("min", { static: false }) minInput: ElementRef;
                                                                                                                  +  @ViewChild("sec", { static: false }) secInput: ElementRef;
                                                                                                                  +  state: TimerState;
                                                                                                                  +  leftButtonAction: string;
                                                                                                                  +  leftButtonIcon: string;
                                                                                                                  +  leftButtonName: string;
                                                                                                                  +  rightButtonAction: string;
                                                                                                                  +  rightButtonIcon: string;
                                                                                                                  +  rightButtonName: string;
                                                                                                                  +  isTimerEditable: boolean;
                                                                                                                  +  is_editable_on_playing: boolean;
                                                                                                                  +  timerStarted = false;
                                                                                                                  +  timerDurationExtension: number = 1 * 60;
                                                                                                                  +  help: string | null = null;
                                                                                                                  +  title: string;
                                                                                                                  +  _value: number;
                                                                                                                  +  starting_minutes: number;
                                                                                                                  +  starting_seconds: number;
                                                                                                                  +  minutes: string;
                                                                                                                  +  seconds: string;
                                                                                                                  +  ping: string | null;
                                                                                                                  +  player: AudioPlayer | null;
                                                                                                                  +  timeValues = () => {
                                                                                                                  +    const data = [];
                                                                                                                  +    for (let i = 0; i <= 9; i++) {
                                                                                                                  +      data.push(i);
                                                                                                                  +    }
                                                                                                                  +    return [data.slice(0, 6), data, data.slice(0, 6), data];
                                                                                                                  +  };
                                                                                                                  +
                                                                                                                  +  get value() {
                                                                                                                  +    return this._value;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  set value(val: number) {
                                                                                                                  +    if (!val) val = 0;
                                                                                                                  +
                                                                                                                  +    this._value = val;
                                                                                                                  +
                                                                                                                  +    const _seconds = val % 60;
                                                                                                                  +    const _minutes = Math.floor(val / 60);
                                                                                                                  +    this.seconds = _seconds < 10 ? `0${_seconds}` : String(_seconds);
                                                                                                                  +    this.minutes = _minutes < 10 ? `0${_minutes}` : String(_minutes);
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  constructor(
                                                                                                                  +    private pickerController: PickerController,
                                                                                                                  +    private platform: Platform,
                                                                                                                  +    private audioService: AudioService,
                                                                                                                  +    private templateAssetService: TemplateAssetService
                                                                                                                  +  ) {
                                                                                                                  +    super();
                                                                                                                  +    this.changeState(new PausedState(this));
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  ngOnInit() {
                                                                                                                  +    this.getParams();
                                                                                                                  +    this.state.callOnInit();
                                                                                                                  +    if (this.ping) {
                                                                                                                  +      const pingSrc = this.templateAssetService.getTranslatedAssetPath(this.ping);
                                                                                                                  +      this.player = this.audioService.createPlayer(pingSrc);
                                                                                                                  +    }
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  changeState(state: TimerState) {
                                                                                                                  +    this.state = state;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  getParams() {
                                                                                                                  +    this.title = getStringParamFromTemplateRow(this._row, "title", "Timer");
                                                                                                                  +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
                                                                                                                  +    this.ping = getStringParamFromTemplateRow(this._row, "ping", null);
                                                                                                                  +    this.timerDurationExtension =
                                                                                                                  +      getNumberParamFromTemplateRow(this._row, "duration_extension", 1) * 60;
                                                                                                                  +    this.is_editable_on_playing = getBooleanParamFromTemplateRow(
                                                                                                                  +      this._row,
                                                                                                                  +      "is_editable_on_playing",
                                                                                                                  +      false
                                                                                                                  +    );
                                                                                                                  +    this.starting_minutes = getNumberParamFromTemplateRow(this._row, "starting_minutes", 10);
                                                                                                                  +    this.starting_seconds = getNumberParamFromTemplateRow(this._row, "starting_seconds", 0);
                                                                                                                  +    this.value = this.getDurationFromParams();
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  getDurationFromParams() {
                                                                                                                  +    return this._row.value ? this._row.value : this.starting_minutes * 60 + this.starting_seconds;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickLeftButton() {
                                                                                                                  +    this.state.clickLeftButton();
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickRightButton() {
                                                                                                                  +    this.state.clickRightButton();
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  openPicker() {
                                                                                                                  +    if (this.isTimerEditable) {
                                                                                                                  +      const numColumns = 4;
                                                                                                                  +      const columnOptions = this.timeValues();
                                                                                                                  +      this.pickerController
                                                                                                                  +        .create({
                                                                                                                  +          mode: this.platform.is("android") ? "md" : "ios" || "ios",
                                                                                                                  +          columns: this.getColumns(numColumns, columnOptions),
                                                                                                                  +          buttons: [
                                                                                                                  +            {
                                                                                                                  +              text: "Cancel",
                                                                                                                  +              role: "cancel",
                                                                                                                  +              handler: (_) => (this.timerStarted ? this.state.clickLeftButton() : null),
                                                                                                                  +            },
                                                                                                                  +            {
                                                                                                                  +              text: "Confirm",
                                                                                                                  +              handler: (value) => {
                                                                                                                  +                const min =
                                                                                                                  +                  Object.values(value["col-0"]).toString().split(",")[0].trim() +
                                                                                                                  +                  Object.values(value["col-1"]).toString().split(",")[0].trim();
                                                                                                                  +                const sec =
                                                                                                                  +                  Object.values(value["col-2"]).toString().split(",")[0].trim() +
                                                                                                                  +                  Object.values(value["col-3"]).toString().split(",")[0].trim();
                                                                                                                  +                this.state.editTimer(min, "mm");
                                                                                                                  +                this.state.editTimer(sec, "ss");
                                                                                                                  +              },
                                                                                                                  +            },
                                                                                                                  +          ],
                                                                                                                  +          cssClass: "picker",
                                                                                                                  +        })
                                                                                                                  +        .then((e) => e.present());
                                                                                                                  +    }
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  getColumns(numColumns, columnOptions) {
                                                                                                                  +    let columns = [];
                                                                                                                  +    for (let i = 0; i < numColumns; i++) {
                                                                                                                  +      columns.push({
                                                                                                                  +        name: `col-${i}`,
                                                                                                                  +        options: this.getColumnOptions(i, i % 2 === 0 ? 6 : 10, columnOptions),
                                                                                                                  +        selectedIndex: getIndex(i, this.minutes, this.seconds),
                                                                                                                  +      });
                                                                                                                  +    }
                                                                                                                  +
                                                                                                                  +    function getIndex(index: number, minutes: string, seconds: string): number {
                                                                                                                  +      switch (index) {
                                                                                                                  +        case 0:
                                                                                                                  +          return Number(minutes.charAt(0));
                                                                                                                  +        case 1:
                                                                                                                  +          return Number(minutes.charAt(1));
                                                                                                                  +        case 2:
                                                                                                                  +          return Number(seconds.charAt(0));
                                                                                                                  +        case 3:
                                                                                                                  +          return Number(seconds.charAt(1));
                                                                                                                  +        default:
                                                                                                                  +          return 0;
                                                                                                                  +      }
                                                                                                                  +    }
                                                                                                                  +
                                                                                                                  +    return columns;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  getColumnOptions(columnIndex, numOptions, columnOptions) {
                                                                                                                  +    let options = [];
                                                                                                                  +    for (let i = 0; i < numOptions; i++) {
                                                                                                                  +      options.push({
                                                                                                                  +        text: columnOptions[columnIndex][i % numOptions],
                                                                                                                  +        value: i,
                                                                                                                  +      });
                                                                                                                  +    }
                                                                                                                  +    return options;
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +interface TimerState {
                                                                                                                  +  timer: TmplTimerComponent;
                                                                                                                  +
                                                                                                                  +  clickLeftButton(): void;
                                                                                                                  +
                                                                                                                  +  clickRightButton(): void;
                                                                                                                  +
                                                                                                                  +  editTimer(val: string, type: "mm" | "ss"): void;
                                                                                                                  +
                                                                                                                  +  callOnInit(): void;
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +abstract class State {
                                                                                                                  +  constructor(public timer: TmplTimerComponent) {}
                                                                                                                  +
                                                                                                                  +  clickLeftButton() {}
                                                                                                                  +
                                                                                                                  +  clickRightButton() {}
                                                                                                                  +
                                                                                                                  +  clickTimer() {}
                                                                                                                  +
                                                                                                                  +  editTimer(val: string, type: "mm" | "ss") {
                                                                                                                  +    val = val.replace(/^0/, "");
                                                                                                                  +    let valNumber = Number.parseInt(val);
                                                                                                                  +
                                                                                                                  +    if (Number.isNaN(valNumber)) return;
                                                                                                                  +
                                                                                                                  +    if (type === "mm") {
                                                                                                                  +      this.timer.minInput.nativeElement.value = val;
                                                                                                                  +      this.timer.value = valNumber * 60 + Number(this.timer.seconds.replace(/^0/, ""));
                                                                                                                  +    } else if (type === "ss") {
                                                                                                                  +      this.timer.secInput.nativeElement.value = val;
                                                                                                                  +      this.timer.value = valNumber + Number(this.timer.minutes.replace(/^0/, "")) * 60;
                                                                                                                  +    }
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  callOnInit() {}
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +class PlayingState extends State {
                                                                                                                  +  private intervalRef;
                                                                                                                  +
                                                                                                                  +  constructor(timer: TmplTimerComponent) {
                                                                                                                  +    super(timer);
                                                                                                                  +    this.timer.leftButtonAction = "pause";
                                                                                                                  +    this.timer.leftButtonIcon = "pause-outline";
                                                                                                                  +    this.timer.leftButtonName = "pause_timer";
                                                                                                                  +    this.timer.rightButtonAction = "increase";
                                                                                                                  +    this.timer.rightButtonIcon = "reload-outline";
                                                                                                                  +    this.timer.rightButtonName = "increase_timer";
                                                                                                                  +    this.timer.timerStarted = true;
                                                                                                                  +    this.timer.isTimerEditable = this.timer.is_editable_on_playing;
                                                                                                                  +    this.countDown();
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickLeftButton() {
                                                                                                                  +    clearInterval(this.intervalRef);
                                                                                                                  +    this.timer.changeState(new PausedState(this.timer));
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickRightButton() {
                                                                                                                  +    this.timer.value += this.timer.timerDurationExtension;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  countDown() {
                                                                                                                  +    this.intervalRef = setInterval(() => {
                                                                                                                  +      if (this.timer.value === 0) {
                                                                                                                  +        clearInterval(this.intervalRef);
                                                                                                                  +        this.timer.changeState(new PausedState(this.timer));
                                                                                                                  +        if (this.timer.player) this.timer.player.play();
                                                                                                                  +        return;
                                                                                                                  +      }
                                                                                                                  +      this.timer.value -= 1;
                                                                                                                  +    }, 1000);
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +class PausedState extends State {
                                                                                                                  +  constructor(timer: TmplTimerComponent) {
                                                                                                                  +    super(timer);
                                                                                                                  +    this.timer.leftButtonAction = "play";
                                                                                                                  +    this.timer.leftButtonIcon = "play-outline";
                                                                                                                  +    this.timer.leftButtonName = "play_timer";
                                                                                                                  +    this.timer.rightButtonAction = "refresh";
                                                                                                                  +    this.timer.rightButtonIcon = "sync-outline";
                                                                                                                  +    this.timer.rightButtonName = "refresh_timer";
                                                                                                                  +    this.timer.timerStarted = false;
                                                                                                                  +    this.timer.isTimerEditable = true;
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickLeftButton() {
                                                                                                                  +    this.timer.changeState(new PlayingState(this.timer));
                                                                                                                  +  }
                                                                                                                  +
                                                                                                                  +  clickRightButton() {
                                                                                                                  +    this.timer.value = this.timer.getDurationFromParams();
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  <div
                                                                                                                  +  class="round-container wrapper-audio round-container-br-15 margin-t-large"
                                                                                                                  +  [style.paddingBottom.px]="timerRow.offsetHeight - timerRow.offsetHeight / 3"
                                                                                                                  +>
                                                                                                                  +  <div class="timer-row" #timerRow>
                                                                                                                  +    <h2 class="timer-title">{{ title }}</h2>
                                                                                                                  +    <ion-icon
                                                                                                                  +      *ngIf="help"
                                                                                                                  +      name="help-circle-outline"
                                                                                                                  +      class="timer-help"
                                                                                                                  +      [pTooltip]="help"
                                                                                                                  +      tooltipPosition="right"
                                                                                                                  +      tooltipEvent="click"
                                                                                                                  +    ></ion-icon>
                                                                                                                  +  </div>
                                                                                                                  +  <div class="timer-content">
                                                                                                                  +    <ion-button class="add-min" (click)="clickLeftButton()">
                                                                                                                  +      <img
                                                                                                                  +        [src]="!timerStarted ? '/assets/icon/timer/play.svg' : '/assets/icon/timer/pause.svg'"
                                                                                                                  +        alt=""
                                                                                                                  +      />
                                                                                                                  +    </ion-button>
                                                                                                                  +    <div class="timer-counter round-container round-container-br-15" (click)="openPicker()">
                                                                                                                  +      <div #min>
                                                                                                                  +        {{ minutes }}
                                                                                                                  +      </div>
                                                                                                                  +      <div>:</div>
                                                                                                                  +      <div #sec>
                                                                                                                  +        {{ seconds }}
                                                                                                                  +      </div>
                                                                                                                  +    </div>
                                                                                                                  +    <ion-button class="add-min" (click)="clickRightButton()">
                                                                                                                  +      <img
                                                                                                                  +        class="right-icon"
                                                                                                                  +        [class.left-icon]="timerStarted"
                                                                                                                  +        [src]="timerStarted ? '/assets/icon/timer/add-time.svg' : '/assets/icon/timer/repeat.svg'"
                                                                                                                  +        alt=""
                                                                                                                  +      />
                                                                                                                  +      <span class="time-rewind-value" *ngIf="timerStarted">+{{ timerDurationExtension / 60 }}</span>
                                                                                                                  +    </ion-button>
                                                                                                                  +  </div>
                                                                                                                  +</div>
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +

                                                                                                                  + ./timer.component.scss +

                                                                                                                  +
                                                                                                                  @use "/src/theme/mixins";
                                                                                                                  +
                                                                                                                  +$button-background: var(--timer-button-background, var(--ion-color-primary-500));
                                                                                                                  +
                                                                                                                  +.timer-counter {
                                                                                                                  +  @include mixins.flex-centered;
                                                                                                                  +  width: calc(100% - 10px);
                                                                                                                  +  height: var(--timer-counter-height);
                                                                                                                  +  margin: 0 var(--tiny-margin);
                                                                                                                  +  div {
                                                                                                                  +    font-weight: var(--font-weight-bold);
                                                                                                                  +    font-size: var(--timer-counter-font-size);
                                                                                                                  +    color: var(--ion-color-primary);
                                                                                                                  +    @media (max-width: 320px) {
                                                                                                                  +      font-size: 30px;
                                                                                                                  +    }
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +.timer-content {
                                                                                                                  +  @include mixins.flex-space-between;
                                                                                                                  +}
                                                                                                                  +.timer-title {
                                                                                                                  +  margin-left: var(--tiny-margin);
                                                                                                                  +  max-width: var(--timer-title-width);
                                                                                                                  +  font-size: var(--timer-title-size);
                                                                                                                  +  color: var(--ion-color-primary);
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +.timer-help {
                                                                                                                  +  margin-top: var(--regular-margin);
                                                                                                                  +  margin-left: var(--small-margin);
                                                                                                                  +  color: var(--ion-color-primary);
                                                                                                                  +  height: var(--help-icon-standard-size);
                                                                                                                  +  width: var(--help-icon-standard-size);
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +.timer-row {
                                                                                                                  +  display: flex;
                                                                                                                  +}
                                                                                                                  +.add-min {
                                                                                                                  +  @include mixins.large-square;
                                                                                                                  +  min-width: var(--buttons-size);
                                                                                                                  +  position: relative;
                                                                                                                  +  --background: #{$button-background};
                                                                                                                  +  --background-size: cover;
                                                                                                                  +  --border-radius: var(--ion-border-radius-rounded);
                                                                                                                  +  --padding: 0;
                                                                                                                  +  .right-icon {
                                                                                                                  +    max-width: none;
                                                                                                                  +    top: 0;
                                                                                                                  +  }
                                                                                                                  +  .time-rewind-value {
                                                                                                                  +    position: absolute;
                                                                                                                  +    font-size: var(--font-size-text-tiny);
                                                                                                                  +    font-weight: var(--font-weight-bold);
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +.round-container {
                                                                                                                  +  padding-left: var(--tiny-padding);
                                                                                                                  +  padding-right: var(--tiny-padding);
                                                                                                                  +  width: 100%;
                                                                                                                  +  background-color: var(--ion-color-primary-contrast);
                                                                                                                  +  box-sizing: border-box;
                                                                                                                  +  border: var(--ion-border-standard);
                                                                                                                  +  box-shadow: var(--ion-default-box-shadow);
                                                                                                                  +  border-radius: var(--ion-border-radius-secondary);
                                                                                                                  +
                                                                                                                  +  &-br-15 {
                                                                                                                  +    border-radius: var(--ion-border-radius-standard);
                                                                                                                  +  }
                                                                                                                  +}
                                                                                                                  +ion-button {
                                                                                                                  +  margin: 0;
                                                                                                                  +}
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + Legend +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  Html element +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  Component +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  Html element with directive +
                                                                                                                  +
                                                                                                                  +
                                                                                                                  + + +
                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                  +
                                                                                                                  +

                                                                                                                  results matching ""

                                                                                                                  +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +

                                                                                                                    No results matching ""

                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplTitleComponent.html b/documentation/docs/generated/components/TmplTitleComponent.html new file mode 100644 index 0000000000..5bea9502fd --- /dev/null +++ b/documentation/docs/generated/components/TmplTitleComponent.html @@ -0,0 +1,566 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    +
                                                                                                                    + + + + + + + + +
                                                                                                                    +

                                                                                                                    +

                                                                                                                    File

                                                                                                                    +

                                                                                                                    +

                                                                                                                    + src/app/shared/components/template/components/title.ts +

                                                                                                                    + + + +

                                                                                                                    +

                                                                                                                    Extends

                                                                                                                    +

                                                                                                                    +

                                                                                                                    + TemplateBaseComponent +

                                                                                                                    + +

                                                                                                                    +

                                                                                                                    Implements

                                                                                                                    +

                                                                                                                    +

                                                                                                                    + ITemplateRowProps + OnInit +

                                                                                                                    + + +
                                                                                                                    +

                                                                                                                    Metadata

                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    + +
                                                                                                                    +

                                                                                                                    Index

                                                                                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    +
                                                                                                                    Properties
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    Methods
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + + + + + + +
                                                                                                                    + +

                                                                                                                    + Methods +

                                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                                    + + + getParams + + +
                                                                                                                    +getParams() +
                                                                                                                    + +
                                                                                                                    + +
                                                                                                                    + Returns : void + +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + +

                                                                                                                    + Properties +

                                                                                                                    + + + + + + + + + + + + + + +
                                                                                                                    + + + help + + +
                                                                                                                    + Type : string | null + +
                                                                                                                    + +
                                                                                                                    + + + + + + + + + + + + + + +
                                                                                                                    + + + style + + +
                                                                                                                    + Type : string | null + +
                                                                                                                    + +
                                                                                                                    + + + + + + + + + + + + + + +
                                                                                                                    + + + textAlign + + +
                                                                                                                    + Type : string + +
                                                                                                                    + +
                                                                                                                    + + + + + + + + + + + + + + +
                                                                                                                    + + + tooltipPosition + + +
                                                                                                                    + Type : string + +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    + + +
                                                                                                                    +
                                                                                                                    import { Component, OnInit } from "@angular/core";
                                                                                                                    +import { TemplateBaseComponent } from "./base";
                                                                                                                    +import { ITemplateRowProps } from "../models";
                                                                                                                    +import { getStringParamFromTemplateRow } from "../../../utils";
                                                                                                                    +
                                                                                                                    +@Component({
                                                                                                                    +  selector: "plh-tmpl-title",
                                                                                                                    +  template: `
                                                                                                                    +    <div class="title-wrapper" [class]="style">
                                                                                                                    +      <h1
                                                                                                                    +        [style.textAlign]="textAlign"
                                                                                                                    +        [class]="'tiny standard' + ' ' + style"
                                                                                                                    +        [innerHTML]="_row.value | markdown"
                                                                                                                    +      ></h1>
                                                                                                                    +      <ion-icon
                                                                                                                    +        *ngIf="help"
                                                                                                                    +        name="help-circle-outline"
                                                                                                                    +        class="title-help"
                                                                                                                    +        [pTooltip]="help"
                                                                                                                    +        [tooltipPosition]="tooltipPosition"
                                                                                                                    +        tooltipEvent="click"
                                                                                                                    +      ></ion-icon>
                                                                                                                    +    </div>
                                                                                                                    +  `,
                                                                                                                    +  styleUrls: ["./title.scss"],
                                                                                                                    +})
                                                                                                                    +export class TmplTitleComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
                                                                                                                    +  help: string | null;
                                                                                                                    +  tooltipPosition: string;
                                                                                                                    +  textAlign: string;
                                                                                                                    +  style: string | null;
                                                                                                                    +
                                                                                                                    +  ngOnInit() {
                                                                                                                    +    this.getParams();
                                                                                                                    +  }
                                                                                                                    +
                                                                                                                    +  getParams() {
                                                                                                                    +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
                                                                                                                    +    this.tooltipPosition = getStringParamFromTemplateRow(this._row, "tooltip_position", "right");
                                                                                                                    +    this.style = getStringParamFromTemplateRow(this._row, "style", "tiny standard");
                                                                                                                    +    this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "left");
                                                                                                                    +  }
                                                                                                                    +}
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    +

                                                                                                                    + ./title.scss +

                                                                                                                    +
                                                                                                                    @use "/src/theme/mixins";
                                                                                                                    +
                                                                                                                    +.title-wrapper {
                                                                                                                    +  display: flex;
                                                                                                                    +  align-items: center;
                                                                                                                    +  h1 {
                                                                                                                    +    margin: 0;
                                                                                                                    +    line-height: var(--line-height-text-largest);
                                                                                                                    +    font-weight: var(--font-weight-bold);
                                                                                                                    +    @media (max-width: 375px) {
                                                                                                                    +      font-size: var(--font-size-title-tiny);
                                                                                                                    +    }
                                                                                                                    +    @media (max-width: 320px) {
                                                                                                                    +      font-size: var(--font-size-title-small-device);
                                                                                                                    +    }
                                                                                                                    +  }
                                                                                                                    +  .alternative {
                                                                                                                    +    line-height: var(--line-height-text-largest);
                                                                                                                    +    color: var(--ion-color-primary-contrast);
                                                                                                                    +    @media (max-width: 320px) {
                                                                                                                    +      font-size: var(--font-size-title-small-device);
                                                                                                                    +    }
                                                                                                                    +  }
                                                                                                                    +  .tiny {
                                                                                                                    +    font-size: var(--font-size-title-tiny);
                                                                                                                    +    @media (max-width: 320px) {
                                                                                                                    +      font-size: var(--font-size-title-small-device);
                                                                                                                    +    }
                                                                                                                    +  }
                                                                                                                    +  .small {
                                                                                                                    +    font-size: var(--font-size-title-small);
                                                                                                                    +  }
                                                                                                                    +  .medium {
                                                                                                                    +    font-size: var(--font-size-title-medium);
                                                                                                                    +  }
                                                                                                                    +  .large {
                                                                                                                    +    font-size: var(--font-size-title-large);
                                                                                                                    +  }
                                                                                                                    +  .huge {
                                                                                                                    +    font-size: var(--font-size-title-largest);
                                                                                                                    +  }
                                                                                                                    +
                                                                                                                    +  .title-help {
                                                                                                                    +    margin-left: var(--tiny-margin);
                                                                                                                    +    color: var(--ion-color-primary);
                                                                                                                    +    @include mixins.small-square;
                                                                                                                    +  }
                                                                                                                    +}
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + Legend +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    Html element +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    Component +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    Html element with directive +
                                                                                                                    +
                                                                                                                    +
                                                                                                                    + + +
                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                    +
                                                                                                                    +

                                                                                                                    results matching ""

                                                                                                                    +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +

                                                                                                                      No results matching ""

                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplToggleBarComponent.html b/documentation/docs/generated/components/TmplToggleBarComponent.html new file mode 100644 index 0000000000..6bf5041784 --- /dev/null +++ b/documentation/docs/generated/components/TmplToggleBarComponent.html @@ -0,0 +1,726 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      +
                                                                                                                      + + + + + + + + +
                                                                                                                      +

                                                                                                                      +

                                                                                                                      File

                                                                                                                      +

                                                                                                                      +

                                                                                                                      + src/app/shared/components/template/components/toggle-bar/toggle-bar.ts +

                                                                                                                      + + + +

                                                                                                                      +

                                                                                                                      Extends

                                                                                                                      +

                                                                                                                      +

                                                                                                                      + TemplateBaseComponent +

                                                                                                                      + +

                                                                                                                      +

                                                                                                                      Implements

                                                                                                                      +

                                                                                                                      +

                                                                                                                      + ITemplateRowProps + OnInit +

                                                                                                                      + + +
                                                                                                                      +

                                                                                                                      Metadata

                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                      + +
                                                                                                                      +

                                                                                                                      Index

                                                                                                                      + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                      +
                                                                                                                      Properties
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      Methods
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + + + + + + +
                                                                                                                      + +

                                                                                                                      + Methods +

                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                      + + + getParams + + +
                                                                                                                      +getParams() +
                                                                                                                      + +
                                                                                                                      + +
                                                                                                                      + Returns : void + +
                                                                                                                      +
                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                      + + + Public + Async + handleClick + + +
                                                                                                                      + + handleClick(e: Event) +
                                                                                                                      + +
                                                                                                                      +

                                                                                                                      As its not possible to stop click events bubbling from the ionChange event, +use click handlers to handle state change

                                                                                                                      +
                                                                                                                      + +
                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                      NameTypeOptional
                                                                                                                      e + Event + + No +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + Returns : any + +
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + +

                                                                                                                      + Properties +

                                                                                                                      + + + + + + + + + + + + + + +
                                                                                                                      + + + Public + false_text + + +
                                                                                                                      + Type : string + +
                                                                                                                      + +
                                                                                                                      + + + + + + + + + + + + + + +
                                                                                                                      + + + Public + position + + +
                                                                                                                      + Type : string + +
                                                                                                                      + +
                                                                                                                      + + + + + + + + + + + + + + +
                                                                                                                      + + + Public + showTickAndCross + + +
                                                                                                                      + Type : boolean + +
                                                                                                                      + +
                                                                                                                      + + + + + + + + + + + + + + +
                                                                                                                      + + + style + + +
                                                                                                                      + Type : string + +
                                                                                                                      + +
                                                                                                                      + + + + + + + + + + + + + + +
                                                                                                                      + + + Public + true_text + + +
                                                                                                                      + Type : string + +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      + + +
                                                                                                                      +
                                                                                                                      import { Component, OnInit } from "@angular/core";
                                                                                                                      +import { TemplateBaseComponent } from "../base";
                                                                                                                      +import { ITemplateRowProps } from "../../models";
                                                                                                                      +import {
                                                                                                                      +  getStringParamFromTemplateRow,
                                                                                                                      +  getBooleanParamFromTemplateRow,
                                                                                                                      +} from "src/app/shared/utils";
                                                                                                                      +
                                                                                                                      +@Component({
                                                                                                                      +  selector: "plh-tmpl-toggle-bar",
                                                                                                                      +  template: `
                                                                                                                      +    <div class="container" [class]="position" [attr.data-param-style]="style">
                                                                                                                      +      <div class="toggle_wrapper" [class.show-tick-cross]="showTickAndCross">
                                                                                                                      +        <ion-toggle mode="md" [checked]="_row.value" (click)="handleClick($event)"> </ion-toggle>
                                                                                                                      +      </div>
                                                                                                                      +      <span
                                                                                                                      +        class="label"
                                                                                                                      +        *ngIf="true_text && false_text"
                                                                                                                      +        [innerHTML]="true_text && false_text | markdown"
                                                                                                                      +        >{{ _row.value ? true_text : false_text }}</span
                                                                                                                      +      >
                                                                                                                      +    </div>
                                                                                                                      +  `,
                                                                                                                      +  styleUrls: ["./toggle-bar.scss"],
                                                                                                                      +})
                                                                                                                      +export class TmplToggleBarComponent
                                                                                                                      +  extends TemplateBaseComponent
                                                                                                                      +  implements ITemplateRowProps, OnInit
                                                                                                                      +{
                                                                                                                      +  public false_text: string;
                                                                                                                      +  public true_text: string;
                                                                                                                      +  public position: string;
                                                                                                                      +  public showTickAndCross: boolean;
                                                                                                                      +  style: string;
                                                                                                                      +
                                                                                                                      +  ngOnInit() {
                                                                                                                      +    this.getParams();
                                                                                                                      +  }
                                                                                                                      +
                                                                                                                      +  /**
                                                                                                                      +   * As its not possible to stop click events bubbling from the ionChange event,
                                                                                                                      +   * use click handlers to handle state change
                                                                                                                      +   */
                                                                                                                      +  public async handleClick(e: Event) {
                                                                                                                      +    e.stopImmediatePropagation();
                                                                                                                      +    await this.setValue(!this._row.value);
                                                                                                                      +    this.triggerActions("changed");
                                                                                                                      +  }
                                                                                                                      +
                                                                                                                      +  getParams() {
                                                                                                                      +    this.false_text = getStringParamFromTemplateRow(this._row, "false_text", "");
                                                                                                                      +    this.true_text = getStringParamFromTemplateRow(this._row, "true_text", "");
                                                                                                                      +    this.position = getStringParamFromTemplateRow(this._row, "position", "left");
                                                                                                                      +    this.showTickAndCross = getBooleanParamFromTemplateRow(this._row, "show_tick_and_cross", true);
                                                                                                                      +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                                                                                      +  }
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      +

                                                                                                                      + ./toggle-bar.scss +

                                                                                                                      +
                                                                                                                      $toggleHeight: 22px;
                                                                                                                      +$toggleWidth: 42px;
                                                                                                                      +$togglePadding: 12px;
                                                                                                                      +
                                                                                                                      +ion-toggle {
                                                                                                                      +  width: $toggleWidth;
                                                                                                                      +  height: $toggleHeight;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +ion-toggle {
                                                                                                                      +  --background: #b4b7b7;
                                                                                                                      +  --handle-spacing: 2px;
                                                                                                                      +  --background-checked: var(--ion-color-primary, "darkblue");
                                                                                                                      +  --handle-background: var(--ion-item-background, #fefefe);
                                                                                                                      +  --handle-background-checked: #fff;
                                                                                                                      +  --padding-inline: $togglePadding;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.show-tick-cross {
                                                                                                                      +  $iconPadding: 3px;
                                                                                                                      +  ion-toggle[aria-checked="true"]::before,
                                                                                                                      +  ion-toggle[aria-checked="false"]::after {
                                                                                                                      +    position: absolute;
                                                                                                                      +    top: $togglePadding + $iconPadding;
                                                                                                                      +    left: $togglePadding + $iconPadding;
                                                                                                                      +    color: white;
                                                                                                                      +    z-index: 1;
                                                                                                                      +    content: " ";
                                                                                                                      +    width: $toggleWidth - 2 * $iconPadding;
                                                                                                                      +    height: $toggleHeight - 2 * $iconPadding;
                                                                                                                      +  }
                                                                                                                      +  ion-toggle[aria-checked="true"]::before {
                                                                                                                      +    background: url(/assets/icon/shared/tick.svg) no-repeat left / contain;
                                                                                                                      +  }
                                                                                                                      +  ion-toggle[aria-checked="false"]::after {
                                                                                                                      +    background: url(/assets/icon/shared/cross.svg) no-repeat right / contain;
                                                                                                                      +  }
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.container {
                                                                                                                      +  position: relative;
                                                                                                                      +  display: flex;
                                                                                                                      +  align-items: center;
                                                                                                                      +  justify-content: space-between;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.container[data-param-style~="in_button"] {
                                                                                                                      +  flex-direction: row-reverse;
                                                                                                                      +  ion-toggle {
                                                                                                                      +    transform: translate($togglePadding, $togglePadding);
                                                                                                                      +  }
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.label {
                                                                                                                      +  margin-left: var(--small-margin);
                                                                                                                      +  margin-right: var(--small-margin);
                                                                                                                      +  text-align: right;
                                                                                                                      +  line-height: 27px;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.center {
                                                                                                                      +  justify-content: center;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.center .label {
                                                                                                                      +  position: absolute;
                                                                                                                      +  right: 0;
                                                                                                                      +  max-width: calc(50% - 45px);
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.right {
                                                                                                                      +  flex-direction: row-reverse;
                                                                                                                      +  .label {
                                                                                                                      +    text-align: left;
                                                                                                                      +  }
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +.toggle_wrapper {
                                                                                                                      +  align-self: baseline;
                                                                                                                      +  margin-top: 5px;
                                                                                                                      +}
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + Legend +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      Html element +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      Component +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      Html element with directive +
                                                                                                                      +
                                                                                                                      +
                                                                                                                      + + +
                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                      +
                                                                                                                      +

                                                                                                                      results matching ""

                                                                                                                      +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        No results matching ""

                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/TmplVideoComponent.html b/documentation/docs/generated/components/TmplVideoComponent.html new file mode 100644 index 0000000000..11a783b450 --- /dev/null +++ b/documentation/docs/generated/components/TmplVideoComponent.html @@ -0,0 +1,484 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        +
                                                                                                                        + + + + + + + + +
                                                                                                                        +

                                                                                                                        +

                                                                                                                        File

                                                                                                                        +

                                                                                                                        +

                                                                                                                        + src/app/shared/components/template/components/video.ts +

                                                                                                                        + + + +

                                                                                                                        +

                                                                                                                        Extends

                                                                                                                        +

                                                                                                                        +

                                                                                                                        + TemplateBaseComponent +

                                                                                                                        + +

                                                                                                                        +

                                                                                                                        Implements

                                                                                                                        +

                                                                                                                        +

                                                                                                                        + OnInit +

                                                                                                                        + + +
                                                                                                                        +

                                                                                                                        Metadata

                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                        + +
                                                                                                                        +

                                                                                                                        Index

                                                                                                                        + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                        +
                                                                                                                        Properties
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        Methods
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + + + + + + +
                                                                                                                        + +

                                                                                                                        + Methods +

                                                                                                                        + + + + + + + + + + + + + + + + + + + +
                                                                                                                        + + + getParams + + +
                                                                                                                        +getParams() +
                                                                                                                        + +
                                                                                                                        + +
                                                                                                                        + Returns : void + +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + +

                                                                                                                        + Properties +

                                                                                                                        + + + + + + + + + + + + + + +
                                                                                                                        + + + style + + +
                                                                                                                        + Type : string + +
                                                                                                                        + +
                                                                                                                        + + + + + + + + + + + + + + +
                                                                                                                        + + + subtitles_src + + +
                                                                                                                        + Type : string + +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        + + +
                                                                                                                        +
                                                                                                                        import { Component, OnInit } from "@angular/core";
                                                                                                                        +import { getStringParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                        +import { TemplateBaseComponent } from "./base";
                                                                                                                        +
                                                                                                                        +@Component({
                                                                                                                        +  selector: "plh-tmpl-video",
                                                                                                                        +  template: `<div class="tmpl-video-container margin-t-large" [class]="style">
                                                                                                                        +    <video [src]="_row.value | plhAsset" controls>
                                                                                                                        +      <track *ngIf="subtitles_src" [src]="subtitles_src | plhAsset" default label="Subtitles" />
                                                                                                                        +    </video>
                                                                                                                        +  </div>`,
                                                                                                                        +  styleUrls: ["./tmpl-components-common.scss"],
                                                                                                                        +  styles: [
                                                                                                                        +    `
                                                                                                                        +      ::cue {
                                                                                                                        +        font-size: var(--video-subtitles-medium);
                                                                                                                        +      }
                                                                                                                        +    `,
                                                                                                                        +  ],
                                                                                                                        +})
                                                                                                                        +export class TmplVideoComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                        +  style: string;
                                                                                                                        +  subtitles_src: string;
                                                                                                                        +
                                                                                                                        +  ngOnInit() {
                                                                                                                        +    this.getParams();
                                                                                                                        +  }
                                                                                                                        +
                                                                                                                        +  getParams() {
                                                                                                                        +    this.style = getStringParamFromTemplateRow(this._row, "style", null);
                                                                                                                        +    this.subtitles_src = getStringParamFromTemplateRow(this._row, "subtitles_src", null);
                                                                                                                        +  }
                                                                                                                        +}
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        +

                                                                                                                        + ./tmpl-components-common.scss +

                                                                                                                        +
                                                                                                                        @use "/src/theme/mixins.scss";
                                                                                                                        +
                                                                                                                        +.tmpl-video-container {
                                                                                                                        +  width: 100%;
                                                                                                                        +  display: flex;
                                                                                                                        +  justify-content: center;
                                                                                                                        +
                                                                                                                        +  video {
                                                                                                                        +    width: 100%;
                                                                                                                        +    max-width: var(--video-max-width);
                                                                                                                        +    border-radius: var(--ion-border-radius-secondary);
                                                                                                                        +  }
                                                                                                                        +}
                                                                                                                        +
                                                                                                                        +.left {
                                                                                                                        +  justify-content: start;
                                                                                                                        +}
                                                                                                                        +.right {
                                                                                                                        +  justify-content: flex-end;
                                                                                                                        +}
                                                                                                                        +.center {
                                                                                                                        +  justify-content: center;
                                                                                                                        +}
                                                                                                                        +.rounded_corners {
                                                                                                                        +  border-radius: var(--ion-border-radius-standard);
                                                                                                                        +
                                                                                                                        +  img {
                                                                                                                        +    border-radius: var(--ion-border-radius-standard);
                                                                                                                        +  }
                                                                                                                        +}
                                                                                                                        +.whiteText {
                                                                                                                        +  color: var(--ion-color-primary-contrast);
                                                                                                                        +}
                                                                                                                        +
                                                                                                                        +
                                                                                                                        
                                                                                                                        +      ::cue {
                                                                                                                        +        font-size: var(--video-subtitles-medium);
                                                                                                                        +      }
                                                                                                                        +    
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + Legend +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        Html element +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        Component +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        Html element with directive +
                                                                                                                        +
                                                                                                                        +
                                                                                                                        + + +
                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                        +
                                                                                                                        +

                                                                                                                        results matching ""

                                                                                                                        +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          No results matching ""

                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/components/WorkshopsComponent.html b/documentation/docs/generated/components/WorkshopsComponent.html new file mode 100644 index 0000000000..0dbd316158 --- /dev/null +++ b/documentation/docs/generated/components/WorkshopsComponent.html @@ -0,0 +1,569 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          +
                                                                                                                          + + + + + + + + +
                                                                                                                          +

                                                                                                                          +

                                                                                                                          File

                                                                                                                          +

                                                                                                                          +

                                                                                                                          + src/app/shared/components/template/components/layout/workshops_accordion.ts +

                                                                                                                          + + + +

                                                                                                                          +

                                                                                                                          Extends

                                                                                                                          +

                                                                                                                          +

                                                                                                                          + TemplateBaseComponent +

                                                                                                                          + +

                                                                                                                          +

                                                                                                                          Implements

                                                                                                                          +

                                                                                                                          +

                                                                                                                          + OnInit +

                                                                                                                          + + +
                                                                                                                          +

                                                                                                                          Metadata

                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                          + +
                                                                                                                          +

                                                                                                                          Index

                                                                                                                          + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                          +
                                                                                                                          Properties
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          Methods
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + + + + + + +
                                                                                                                          + +

                                                                                                                          + Methods +

                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                          + + + toggleState + + +
                                                                                                                          +toggleState(rowId: string) +
                                                                                                                          + +
                                                                                                                          + +
                                                                                                                          + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                          NameTypeOptional
                                                                                                                          rowId + string + + No +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + Returns : void + +
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + +

                                                                                                                          + Properties +

                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                          + + + rows + + +
                                                                                                                          + Type : FlowTypes.TemplateRow[] + +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          + + +
                                                                                                                          +
                                                                                                                          import { Component, OnInit } from "@angular/core";
                                                                                                                          +import { FlowTypes } from "src/app/shared/model";
                                                                                                                          +import { TemplateBaseComponent } from "../base";
                                                                                                                          +
                                                                                                                          +@Component({
                                                                                                                          +  selector: "plh-tmpl-workshops-accordion",
                                                                                                                          +  template: `<div class="workshops-accordion">
                                                                                                                          +    <div>
                                                                                                                          +      <plh-tmpl-accordion-section
                                                                                                                          +        *ngFor="let childRow of rows; let idx = index"
                                                                                                                          +        [row]="childRow"
                                                                                                                          +        [parent]="parent"
                                                                                                                          +        [id]="idx.toString()"
                                                                                                                          +        (toggleState)="toggleState($event)"
                                                                                                                          +      >
                                                                                                                          +      </plh-tmpl-accordion-section>
                                                                                                                          +    </div>
                                                                                                                          +  </div>`,
                                                                                                                          +  styleUrls: ["./accordion.scss"],
                                                                                                                          +})
                                                                                                                          +export class WorkshopsComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                          +  rows: FlowTypes.TemplateRow[];
                                                                                                                          +
                                                                                                                          +  ngOnInit() {
                                                                                                                          +    this.rows = [...this._row.rows];
                                                                                                                          +  }
                                                                                                                          +
                                                                                                                          +  toggleState(rowId: string) {
                                                                                                                          +    const updatedRows = this.rows.map((row, idx) => {
                                                                                                                          +      if (idx === +rowId) {
                                                                                                                          +        if (row.parameter_list.state === "open") {
                                                                                                                          +          row.parameter_list.state = "closed";
                                                                                                                          +        } else {
                                                                                                                          +          row.parameter_list.state = "open";
                                                                                                                          +        }
                                                                                                                          +      } else {
                                                                                                                          +        row.parameter_list.state = "closed";
                                                                                                                          +      }
                                                                                                                          +      return row;
                                                                                                                          +    });
                                                                                                                          +    this.rows = updatedRows;
                                                                                                                          +  }
                                                                                                                          +}
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          +

                                                                                                                          + ./accordion.scss +

                                                                                                                          +
                                                                                                                          @use "/src/theme/mixins";
                                                                                                                          +
                                                                                                                          +$background-highlight: var(--accordion-background-highlight, var(--gradient-primary-light-vertical));
                                                                                                                          +
                                                                                                                          +.workshops-accordion {
                                                                                                                          +  position: relative;
                                                                                                                          +  margin-top: var(--large-margin);
                                                                                                                          +  &::after {
                                                                                                                          +    content: "";
                                                                                                                          +    width: 1px;
                                                                                                                          +    height: calc(100% - 35px);
                                                                                                                          +    background: var(--ion-color-primary);
                                                                                                                          +    position: absolute;
                                                                                                                          +    left: 21px;
                                                                                                                          +    top: 0;
                                                                                                                          +    margin-top: var(--regular-margin);
                                                                                                                          +  }
                                                                                                                          +}
                                                                                                                          +.accordion-wrapper {
                                                                                                                          +  display: flex;
                                                                                                                          +  justify-content: space-between;
                                                                                                                          +  // align-items: center; // aligns dot in center while closed but open will connecting line looks off
                                                                                                                          +  margin-bottom: var(--regular-margin);
                                                                                                                          +  height: 100%;
                                                                                                                          +  .accordion-status {
                                                                                                                          +    @include mixins.medium-square;
                                                                                                                          +    border-radius: var(--ion-border-radius-rounded);
                                                                                                                          +    border: var(--ion-border-thin-standard);
                                                                                                                          +    padding: var(--tiny-padding);
                                                                                                                          +    background: var(--ion-color-primary-contrast);
                                                                                                                          +    display: flex;
                                                                                                                          +    justify-content: center;
                                                                                                                          +    z-index: 2;
                                                                                                                          +    &.inProgress {
                                                                                                                          +      background: $background-highlight;
                                                                                                                          +    }
                                                                                                                          +    &.disabled {
                                                                                                                          +      background: var(--ion-color-primary-contrast);
                                                                                                                          +    }
                                                                                                                          +    &.completed {
                                                                                                                          +      background: $background-highlight;
                                                                                                                          +    }
                                                                                                                          +  }
                                                                                                                          +  .accordion-section {
                                                                                                                          +    display: flex;
                                                                                                                          +    flex-direction: column;
                                                                                                                          +    position: relative;
                                                                                                                          +    width: var(--accordion-section-width);
                                                                                                                          +    border-radius: var(--ion-border-radius-standard);
                                                                                                                          +    overflow: hidden;
                                                                                                                          +    padding: var(--small-padding);
                                                                                                                          +    border: var(--ion-border-thin-standard);
                                                                                                                          +    transition: max-height 0.4s;
                                                                                                                          +    overflow-y: hidden;
                                                                                                                          +    &.completed {
                                                                                                                          +      background: $background-highlight;
                                                                                                                          +      color: var(--ion-color-primary);
                                                                                                                          +      .progress {
                                                                                                                          +        opacity: 0;
                                                                                                                          +      }
                                                                                                                          +    }
                                                                                                                          +    &.disabled {
                                                                                                                          +      background: var(--ion-color-primary-contrast);
                                                                                                                          +      color: var(--ion-color-primary);
                                                                                                                          +      .progress {
                                                                                                                          +        opacity: 0;
                                                                                                                          +      }
                                                                                                                          +    }
                                                                                                                          +    &.inProgress {
                                                                                                                          +      background: var(--ion-color-primary-contrast);
                                                                                                                          +      color: var(--ion-color-primary);
                                                                                                                          +    }
                                                                                                                          +    &.openSection {
                                                                                                                          +      background: $background-highlight;
                                                                                                                          +      transition: max-height 0.4s;
                                                                                                                          +      .progress {
                                                                                                                          +        opacity: 0;
                                                                                                                          +        transition: none !important;
                                                                                                                          +      }
                                                                                                                          +    }
                                                                                                                          +    .progress {
                                                                                                                          +      position: absolute;
                                                                                                                          +      height: 100%;
                                                                                                                          +      left: 0;
                                                                                                                          +      z-index: 1;
                                                                                                                          +      background: $background-highlight;
                                                                                                                          +      opacity: 1;
                                                                                                                          +      transition: opacity 0.4s ease-in;
                                                                                                                          +      margin-top: calc(var(--small-padding) * -1); // offset for padding in .accordion-section
                                                                                                                          +    }
                                                                                                                          +  }
                                                                                                                          +  .accordion-section {
                                                                                                                          +    h2 {
                                                                                                                          +      z-index: 2;
                                                                                                                          +      text-align: left;
                                                                                                                          +      margin: 0;
                                                                                                                          +      font-size: var(--font-size-subtitle-small);
                                                                                                                          +      font-weight: var(--font-weight-bold);
                                                                                                                          +      @media (max-width: 320px) {
                                                                                                                          +        font-size: var(--font-size-subtitle-small-device);
                                                                                                                          +      }
                                                                                                                          +    }
                                                                                                                          +  }
                                                                                                                          +  .accordion-section-content {
                                                                                                                          +    max-height: 0;
                                                                                                                          +    z-index: 2;
                                                                                                                          +    transition: max-height 0.4s;
                                                                                                                          +    &.openSection {
                                                                                                                          +      max-height: var(--accordion-section-open-height);
                                                                                                                          +    }
                                                                                                                          +  }
                                                                                                                          +}
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + Legend +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          Html element +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          Component +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          Html element with directive +
                                                                                                                          +
                                                                                                                          +
                                                                                                                          + + +
                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                          +
                                                                                                                          +

                                                                                                                          results matching ""

                                                                                                                          +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            No results matching ""

                                                                                                                            +
                                                                                                                            +
                                                                                                                            +
                                                                                                                            + +
                                                                                                                            +
                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/contributing.html b/documentation/docs/generated/contributing.html new file mode 100644 index 0000000000..fd302efb64 --- /dev/null +++ b/documentation/docs/generated/contributing.html @@ -0,0 +1,134 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                            +
                                                                                                                            + + +
                                                                                                                            +
                                                                                                                            + +

                                                                                                                            Contributing to the Parenting for Lifelong Health App

                                                                                                                            +

                                                                                                                            👍🎉 First off, thanks for taking the time to contribute! 🎉👍

                                                                                                                            +

                                                                                                                            The following is a set of guidelines for contributing to the Parenting for Lifelong Health (PLH) Mobile App. +By submitting code for inclusion in the PLH App you agree to this contributor agreement aswell as the software licence.

                                                                                                                            +

                                                                                                                            Code of Conduct

                                                                                                                            +

                                                                                                                            Everyone developing on this project yourself included, must adhere to the PLH App Code of Conduct

                                                                                                                            +

                                                                                                                            How to contribute

                                                                                                                            +

                                                                                                                            Create a Github issue if you want have a feature request or bug fix.

                                                                                                                            +

                                                                                                                            If you know how to make your changes in code please submit a pull request and mention your pull request in the Github issue you created.

                                                                                                                            +

                                                                                                                            Derivatives and Certification

                                                                                                                            +

                                                                                                                            You may create your own derivatives of this app using content from within the app. However all official organisation branding and trademarks must be removed unless you receive approval and certification from those organisations. These organisations include:

                                                                                                                            +
                                                                                                                              +
                                                                                                                            • Parenting For Lifelong Health
                                                                                                                            • +
                                                                                                                            • Clowns Without Borders
                                                                                                                            • +
                                                                                                                            • University of Cape Town
                                                                                                                            • +
                                                                                                                            • Oxford University
                                                                                                                            • +
                                                                                                                            • WHO
                                                                                                                            • +
                                                                                                                            • Unicef
                                                                                                                            • +
                                                                                                                            • CDC
                                                                                                                            • +
                                                                                                                            + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                            +
                                                                                                                            +

                                                                                                                            results matching ""

                                                                                                                            +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              No results matching ""

                                                                                                                              +
                                                                                                                              +
                                                                                                                              +
                                                                                                                              + +
                                                                                                                              +
                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/coverage.html b/documentation/docs/generated/coverage.html new file mode 100644 index 0000000000..1a0386e7ca --- /dev/null +++ b/documentation/docs/generated/coverage.html @@ -0,0 +1,2610 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                              +
                                                                                                                              + + +
                                                                                                                              +
                                                                                                                              + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                              + +
                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                              FileTypeIdentifierStatements
                                                                                                                              + + src/app/shared/components/template/components/accordion/accordion.component.ts + componentTmplAccordionComponent + 0 % + (0/2) +
                                                                                                                              + + src/app/shared/components/template/components/animated-slides/animated-slides.component.ts + componentTmplAnimatedSlidesComponent + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/audio/audio.component.ts + componentTmplAudioComponent + 0 % + (0/28) +
                                                                                                                              + + src/app/shared/components/template/components/base.ts + componentTemplateBaseComponent + 0 % + (0/2) +
                                                                                                                              + + src/app/shared/components/template/components/button/button.component.ts + componentTmplButtonComponent + 100 % + (6/6) +
                                                                                                                              + + src/app/shared/components/template/components/carousel/carousel.component.ts + componentTmplCarouselComponent + 14 % + (1/7) +
                                                                                                                              + + src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts + componentComboBoxModalComponent + 0 % + (0/22) +
                                                                                                                              + + src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts + interfaceAnswerBody + 0 % + (0/3) +
                                                                                                                              + + src/app/shared/components/template/components/combo-box/combo-box.component.ts + componentTmplComboBoxComponent + 0 % + (0/11) +
                                                                                                                              + + src/app/shared/components/template/components/dashed-box/dashed-box.component.ts + componentTmplDashedBoxComponent + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/data-items/data-items.component.ts + componentTmplDataItemsComponent + 0 % + (0/4) +
                                                                                                                              + + src/app/shared/components/template/components/debugger.ts + componentTemplateDebuggerComponent + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/drawer/drawer.component.ts + componentTmplDrawerComponent + 0 % + (0/6) +
                                                                                                                              + + src/app/shared/components/template/components/help-icon.ts + componentTmplHelpIconComponent + 0 % + (0/4) +
                                                                                                                              + + src/app/shared/components/template/components/html/html.component.ts + componentTemplateHTMLComponent + 0 % + (0/3) +
                                                                                                                              + + src/app/shared/components/template/components/icon-banner/icon-banner.component.ts + componentTmplIconBannerComponent + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/image.ts + componentTmplImageComponent + 0 % + (0/2) +
                                                                                                                              + + src/app/shared/components/template/components/index.ts + variableTEMPLATE_COMPONENT_MAPPING + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/index.ts + variableTEMPLATE_COMPONENTS + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/latex/latex.component.ts + componentTmplLatexComponent + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/layout/accordion_section.ts + componentAccordionSectionComponent + 14 % + (1/7) +
                                                                                                                              + + src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts + componentTmplAdvancedDashedBoxComponent + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/layout/animated_section.ts + componentAnimatedSectionComponent + 62 % + (5/8) +
                                                                                                                              + + src/app/shared/components/template/components/layout/animated_section_group.ts + componentAnimatedSectionGroupComponent + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts + componentTmplDisplayGridComponent + 50 % + (2/4) +
                                                                                                                              + + src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts + interfaceIDisplayGridParams + 80 % + (4/5) +
                                                                                                                              + + src/app/shared/components/template/components/layout/display_group.ts + componentTmplDisplayGroupComponent + 0 % + (0/6) +
                                                                                                                              + + src/app/shared/components/template/components/layout/form.ts + componentFormComponent + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/layout/layout.ts + componentTemplateLayoutComponent + 55 % + (5/9) +
                                                                                                                              + + src/app/shared/components/template/components/layout/nav_group.ts + componentNavGroupComponent + 46 % + (7/15) +
                                                                                                                              + + src/app/shared/components/template/components/layout/popup.ts + componentTemplatePopupComponent + 16 % + (1/6) +
                                                                                                                              + + src/app/shared/components/template/components/layout/popup.ts + interfaceITemplatePopupComponentProps + 33 % + (3/9) +
                                                                                                                              + + src/app/shared/components/template/components/layout/workshops_accordion.ts + componentWorkshopsComponent + 0 % + (0/3) +
                                                                                                                              + + src/app/shared/components/template/components/lottie-animation.ts + componentTmplLottieAnimation + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts + componentTmplNavigationBarComponent + 0 % + (0/3) +
                                                                                                                              + + src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts + interfaceIButton + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/number-selector/number-selector.component.ts + componentTmplNumberComponent + 0 % + (0/16) +
                                                                                                                              + + src/app/shared/components/template/components/number-selector/number-selector.component.ts + interfaceICategoryList + 0 % + (0/3) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + classMutationsTracker + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + function_getSiblingElements + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionclosestAncestorUntil + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionempty + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetAncestors + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetChild + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetChildren + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetRepeatIndex + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetSiblingElement + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetSiblingElements + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetSiblingElementsAndSelf + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functiongetXPath + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionhasNextSiblingElementSameName + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionhasPreviousCommentSiblingWithContent + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionhasPreviousSiblingElementSameName + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + functionhasSiblingElementSameName + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts + variableelementDataStore + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionAddRepeat + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionApplyFocus + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionBeforeSave + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionChange + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionChangeLanguage + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionChangeOption + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionDataUpdate + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionDePrintify + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionEdited + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionFakeFocus + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionGoToInvisible + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionGoToIrrelevant + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionInput + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionInputUpdate + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionInstanceFirstLoad + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionInvalidated + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionNewRepeat + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionPageFlip + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionPrintify + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionProgressUpdate + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionRemoved + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionRemoveRepeat + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionUpdateMaxSize + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionValidationComplete + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts + functionXFormsValueChanged + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/form.ts + classForm + 40 % + (24/59) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts + classWidget + 58 % + (7/12) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts + variablerange + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/enketo/js/xpath-evaluator-binding.ts + functionUnnamed function + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts + classBlankDate + 50 % + (1/2) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts + variablegetTimezoneOffsetAsTime + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts + variabletoISOLocalString + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + functionUnnamed function + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableAND + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableD + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableDIV + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableEQ + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableFUNCTION_NAME + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableGT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableGTE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableLT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableLTE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableMINUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableMOD + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableMULT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableNE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableOR + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variablePLUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts + variableUNION + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + function_distanceBetween + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + function_latLngsValid + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + function_toLatLngs + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + function_toRadians + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + functionarea + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + functionasGeopoints + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + functiondistance + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + variableEARTH_EQUATORIAL_RADIUS_METERS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts + variablePRECISION + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + function_zeroPad + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functionasDate + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functionasInteger + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functiongetNode + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functiongetNodeName + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functionisNodeish + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functionmapFn + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + functionuuid + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableEQ + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableGTE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableMINUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableNODEISH + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableopenrosa_xpath_extensions + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variablePLUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts + variableRAW_NUMBER + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-xpath.ts + variablecast + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/random-token.ts + function_random13chars + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/random-token.ts + functionrandomToken + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts + functiondateStringToDays + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts + functiondateToDays + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts + variableDATE_STRING + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts + variabledaysInMonth + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts + variableisValidDate + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts + functionconvertSubstringArgs + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts + functionpreprocessNativeArgs + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts + variablecast + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts + variablefns + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functionbothOf + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functioncastFor + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functionequalityCompare + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functionhandleOperation + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functiononeOf + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + functionrelationalCompare + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableAND + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableDIV + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableEQ + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableGT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableGTE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableLT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableLTE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableMINUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableMOD + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableMULT + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableNE + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableOR + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variablePLUS + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts + variableUNION + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/result.ts + functiontoSnapshotResult + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts + functionRandom + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts + functionshuffle + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts + variableMAX_INT32 + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts + variableMINSTD + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/sort-by-document-order.ts + functionbyDocumentOrder + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/sort-by-document-order.ts + functionUnnamed function + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts + functionasBoolean + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts + functionasNumber + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts + functionasString + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts + functionisDomNode + 100 % + (1/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts + functionnodeToString + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/odk-form.component.ts + componentTmplOdkFormComponent + 25 % + (1/4) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/odk-form.component.ts + interfaceIEnketoFormData + 30 % + (3/10) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/odk-form.component.ts + interfaceIEventFormSaved + 0 % + (0/2) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/odk-form.component.ts + interfaceIFormEntry + 0 % + (0/9) +
                                                                                                                              + + src/app/shared/components/template/components/odk-form/odk-form.component.ts + interfaceIODKFormComponentParameters + 50 % + (1/2) +
                                                                                                                              + + src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts + componentTmplParentPointCounterComponent + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/pdf/pdf.component.ts + componentTmplPdfComponent + 0 % + (0/6) +
                                                                                                                              + + src/app/shared/components/template/components/points-item/points-item.component.ts + componentTmplParentPointBoxComponent + 0 % + (0/22) +
                                                                                                                              + + src/app/shared/components/template/components/qr-code/qr-code.component.ts + componentTmplQRCodeComponent + 0 % + (0/1) +
                                                                                                                              + + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts + componentTmplRadioButtonGridComponent + 33 % + (1/3) +
                                                                                                                              + + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts + interfaceIAnswerListItem + 0 % + (0/4) +
                                                                                                                              + + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts + interfaceIRadioButtonGridParams + 80 % + (4/5) +
                                                                                                                              + + src/app/shared/components/template/components/radio-group/radio-group.component.ts + componentTmplRadioGroupComponent + 6 % + (1/16) +
                                                                                                                              + + src/app/shared/components/template/components/radio-group/radio-group.component.ts + interfaceIButton + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts + componentRoundIconButtonComponent + 0 % + (0/14) +
                                                                                                                              + + src/app/shared/components/template/components/select-text/select-text.component.ts + componentSelectTextComponent + 0 % + (0/13) +
                                                                                                                              + + src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts + componentTmplSimpleCheckboxComponent + 0 % + (0/9) +
                                                                                                                              + + src/app/shared/components/template/components/slider/slider.component.ts + componentTmplSliderComponent + 4 % + (1/21) +
                                                                                                                              + + src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts + componentSquareIconButtonComponent + 0 % + (0/8) +
                                                                                                                              + + src/app/shared/components/template/components/subtitle.ts + componentTmplSubtitleComponent + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/task-card/task-card.component.ts + componentTmplTaskCardComponent + 0 % + (0/20) +
                                                                                                                              + + src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts + componentTmplTaskProgressBarComponent + 0 % + (0/15) +
                                                                                                                              + + src/app/shared/components/template/components/text-area/text-area.component.ts + componentTmplTextAreaComponent + 0 % + (0/5) +
                                                                                                                              + + src/app/shared/components/template/components/text-box/text-box.component.ts + componentTmplTextBoxComponent + 0 % + (0/9) +
                                                                                                                              + + src/app/shared/components/template/components/text.ts + componentTmplTextComponent + 0 % + (0/7) +
                                                                                                                              + + src/app/shared/components/template/components/tile-component/tile-component.component.ts + componentTmplTileComponent + 0 % + (0/14) +
                                                                                                                              + + src/app/shared/components/template/components/timer/timer.component.ts + componentTmplTimerComponent + 0 % + (0/36) +
                                                                                                                              + + src/app/shared/components/template/components/timer/timer.component.ts + classPausedState + 0 % + (0/8) +
                                                                                                                              + + src/app/shared/components/template/components/timer/timer.component.ts + classPlayingState + 0 % + (0/9) +
                                                                                                                              + + src/app/shared/components/template/components/timer/timer.component.ts + classState + 0 % + (0/8) +
                                                                                                                              + + src/app/shared/components/template/components/timer/timer.component.ts + interfaceTimerState + 0 % + (0/6) +
                                                                                                                              + + src/app/shared/components/template/components/title.ts + componentTmplTitleComponent + 0 % + (0/6) +
                                                                                                                              + + src/app/shared/components/template/components/toggle-bar/toggle-bar.ts + componentTmplToggleBarComponent + 12 % + (1/8) +
                                                                                                                              + + src/app/shared/components/template/components/video.ts + componentTmplVideoComponent + 0 % + (0/4) +
                                                                                                                              + + + + + +
                                                                                                                              +
                                                                                                                              +

                                                                                                                              results matching ""

                                                                                                                              +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                No results matching ""

                                                                                                                                +
                                                                                                                                +
                                                                                                                                +
                                                                                                                                + +
                                                                                                                                +
                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/dependencies.html b/documentation/docs/generated/dependencies.html new file mode 100644 index 0000000000..cfa6d788cd --- /dev/null +++ b/documentation/docs/generated/dependencies.html @@ -0,0 +1,271 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                +
                                                                                                                                + + +
                                                                                                                                +
                                                                                                                                + + + + + + + + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                • + @angular/animations : ^15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/common : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/core : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/elements : ^15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/fire : ^7.3.0
                                                                                                                                • +
                                                                                                                                • + @angular/forms : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/platform-browser : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/platform-browser-dynamic : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @angular/router : ~15.0.4
                                                                                                                                • +
                                                                                                                                • + @capacitor-community/firebase-crashlytics : ^1.3.0
                                                                                                                                • +
                                                                                                                                • + @capacitor-firebase/authentication : ^1.2.0
                                                                                                                                • +
                                                                                                                                • + @capacitor-firebase/performance : ^1.2.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/android : ^4.6.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/app : ^4.1.1
                                                                                                                                • +
                                                                                                                                • + @capacitor/cli : ^4.6.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/clipboard : ^4.1.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/core : ^4.6.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/device : ^4.1.0
                                                                                                                                • +
                                                                                                                                • + @capacitor/filesystem : ^4.1.4
                                                                                                                                • +
                                                                                                                                • + @capacitor/local-notifications : ^4.1.4
                                                                                                                                • +
                                                                                                                                • + @capacitor/push-notifications : ^4.1.2
                                                                                                                                • +
                                                                                                                                • + @capacitor/splash-screen : ^4.1.2
                                                                                                                                • +
                                                                                                                                • + @capawesome/capacitor-app-update : ^2.0.1
                                                                                                                                • +
                                                                                                                                • + @ionic-native/core : ^5.36.0
                                                                                                                                • +
                                                                                                                                • + @ionic-native/device : ^5.36.0
                                                                                                                                • +
                                                                                                                                • + @ionic-native/http : ^5.36.0
                                                                                                                                • +
                                                                                                                                • + @ionic-native/media : ^5.36.0
                                                                                                                                • +
                                                                                                                                • + @ionic-native/status-bar : ^5.36.0
                                                                                                                                • +
                                                                                                                                • + @ionic/angular : ^6.4.1
                                                                                                                                • +
                                                                                                                                • + @ionic/pwa-elements : ^3.1.1
                                                                                                                                • +
                                                                                                                                • + @ngx-matomo/router : ^1.3.3
                                                                                                                                • +
                                                                                                                                • + @ngx-matomo/tracker : ^1.3.3
                                                                                                                                • +
                                                                                                                                • + @sentry/angular : ^7.21.1
                                                                                                                                • +
                                                                                                                                • + @supabase/supabase-js : ^2.13.1
                                                                                                                                • +
                                                                                                                                • + app-data : workspace:*
                                                                                                                                • +
                                                                                                                                • + bootstrap-datepicker : ^1.10.0
                                                                                                                                • +
                                                                                                                                • + capacitor-blob-writer : ^1.1.9
                                                                                                                                • +
                                                                                                                                • + capacitor-firebase-auth : ^3.0.0
                                                                                                                                • +
                                                                                                                                • + clone : ^2.1.2
                                                                                                                                • +
                                                                                                                                • + cordova-res : ^0.15.4
                                                                                                                                • +
                                                                                                                                • + core-js : ^3.27.1
                                                                                                                                • +
                                                                                                                                • + data-models : workspace:*
                                                                                                                                • +
                                                                                                                                • + date-fns : ^2.22.1
                                                                                                                                • +
                                                                                                                                • + deep-object-diff : ^1.1.9
                                                                                                                                • +
                                                                                                                                • + dexie : ^3.0.3
                                                                                                                                • +
                                                                                                                                • + dexie-observable : 3.0.0-beta.11
                                                                                                                                • +
                                                                                                                                • + dexie-syncable : ^3.0.0-beta.10
                                                                                                                                • +
                                                                                                                                • + document-register-element : ^1.14.10
                                                                                                                                • +
                                                                                                                                • + dompurify : ^2.3.6
                                                                                                                                • +
                                                                                                                                • + extract-math : ^1.2.3
                                                                                                                                • +
                                                                                                                                • + firebase : ^9.8.1
                                                                                                                                • +
                                                                                                                                • + globalthis : ^1.0.2
                                                                                                                                • +
                                                                                                                                • + howler : ^2.2.1
                                                                                                                                • +
                                                                                                                                • + html5sortable : ^0.13.3
                                                                                                                                • +
                                                                                                                                • + intro.js : ^3.2.1
                                                                                                                                • +
                                                                                                                                • + jquery : ^3.7.0
                                                                                                                                • +
                                                                                                                                • + jquery-touchswipe : ^1.6.19
                                                                                                                                • +
                                                                                                                                • + katex : ^0.15.3
                                                                                                                                • +
                                                                                                                                • + lottie-web : ^5.7.14
                                                                                                                                • +
                                                                                                                                • + marked : ^2.0.1
                                                                                                                                • +
                                                                                                                                • + mergexml : ^1.2.3
                                                                                                                                • +
                                                                                                                                • + ng2-nouislider : ^1.8.3
                                                                                                                                • +
                                                                                                                                • + ngx-color : ^6.1.0
                                                                                                                                • +
                                                                                                                                • + ngx-extended-pdf-viewer : 16.2.16
                                                                                                                                • +
                                                                                                                                • + ngx-lottie : ^7.0.4
                                                                                                                                • +
                                                                                                                                • + nouislider : ^14.6.3
                                                                                                                                • +
                                                                                                                                • + qrcode : ^1.5.1
                                                                                                                                • +
                                                                                                                                • + rxdb : ^13.15.3
                                                                                                                                • +
                                                                                                                                • + rxjs : ^7.8.0
                                                                                                                                • +
                                                                                                                                • + scripts : workspace:*
                                                                                                                                • +
                                                                                                                                • + shared : workspace:*
                                                                                                                                • +
                                                                                                                                • + signature_pad : ^4.1.5
                                                                                                                                • +
                                                                                                                                • + stacktrace-js : ^2.0.2
                                                                                                                                • +
                                                                                                                                • + swiper : ^8.4.4
                                                                                                                                • +
                                                                                                                                • + trusted-types : ^2.0.0
                                                                                                                                • +
                                                                                                                                • + zone.js : ~0.11.4
                                                                                                                                • +
                                                                                                                                + + + + + + + +
                                                                                                                                +
                                                                                                                                +

                                                                                                                                results matching ""

                                                                                                                                +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  No results matching ""

                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  +
                                                                                                                                  + +
                                                                                                                                  +
                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/fonts/ionicons.eot b/documentation/docs/generated/fonts/ionicons.eot new file mode 100644 index 0000000000..4b1fd0f48c Binary files /dev/null and b/documentation/docs/generated/fonts/ionicons.eot differ diff --git a/documentation/docs/generated/fonts/ionicons.svg b/documentation/docs/generated/fonts/ionicons.svg new file mode 100644 index 0000000000..b9f8359ca8 --- /dev/null +++ b/documentation/docs/generated/fonts/ionicons.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7ea66c720fae091c26c534f2e82c1c2c9a647d3236e0f6aec080b8bd326e8d2 +size 312749 diff --git a/documentation/docs/generated/fonts/ionicons.ttf b/documentation/docs/generated/fonts/ionicons.ttf new file mode 100644 index 0000000000..67bd84202a Binary files /dev/null and b/documentation/docs/generated/fonts/ionicons.ttf differ diff --git a/documentation/docs/generated/fonts/ionicons.woff b/documentation/docs/generated/fonts/ionicons.woff new file mode 100644 index 0000000000..ec1c1f8795 Binary files /dev/null and b/documentation/docs/generated/fonts/ionicons.woff differ diff --git a/documentation/docs/generated/fonts/ionicons.woff2 b/documentation/docs/generated/fonts/ionicons.woff2 new file mode 100644 index 0000000000..4233951c94 Binary files /dev/null and b/documentation/docs/generated/fonts/ionicons.woff2 differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-300.eot b/documentation/docs/generated/fonts/roboto-v15-latin-300.eot new file mode 100644 index 0000000000..826acfda91 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-300.eot differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-300.svg b/documentation/docs/generated/fonts/roboto-v15-latin-300.svg new file mode 100644 index 0000000000..2ad7e67c13 --- /dev/null +++ b/documentation/docs/generated/fonts/roboto-v15-latin-300.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdc613d60655fab5e7f78d7a4b573e8a72cd3110176d4cb85ef0ebd7e658d211 +size 49930 diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-300.ttf b/documentation/docs/generated/fonts/roboto-v15-latin-300.ttf new file mode 100644 index 0000000000..66bc5ab8e2 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-300.ttf differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-300.woff b/documentation/docs/generated/fonts/roboto-v15-latin-300.woff new file mode 100644 index 0000000000..7e6c479f2c Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-300.woff differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-300.woff2 b/documentation/docs/generated/fonts/roboto-v15-latin-300.woff2 new file mode 100644 index 0000000000..c34c128065 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-300.woff2 differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-700.eot b/documentation/docs/generated/fonts/roboto-v15-latin-700.eot new file mode 100644 index 0000000000..f89cad7b7f Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-700.eot differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-700.svg b/documentation/docs/generated/fonts/roboto-v15-latin-700.svg new file mode 100644 index 0000000000..a3fcf756fd --- /dev/null +++ b/documentation/docs/generated/fonts/roboto-v15-latin-700.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af2654240dc0e632782a4f919c6fe5885c7b9e6b856efa0a7ea989a14fb56fe +size 49092 diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-700.ttf b/documentation/docs/generated/fonts/roboto-v15-latin-700.ttf new file mode 100644 index 0000000000..19090afb10 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-700.ttf differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-700.woff b/documentation/docs/generated/fonts/roboto-v15-latin-700.woff new file mode 100644 index 0000000000..bf737c1c39 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-700.woff differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-700.woff2 b/documentation/docs/generated/fonts/roboto-v15-latin-700.woff2 new file mode 100644 index 0000000000..11cde5d04c Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-700.woff2 differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-italic.eot b/documentation/docs/generated/fonts/roboto-v15-latin-italic.eot new file mode 100644 index 0000000000..f2d020a874 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-italic.eot differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-italic.svg b/documentation/docs/generated/fonts/roboto-v15-latin-italic.svg new file mode 100644 index 0000000000..80a3bbacd1 --- /dev/null +++ b/documentation/docs/generated/fonts/roboto-v15-latin-italic.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea2903eaf37222d05d2c812d4305ae4107ace6a0f62c80ab331952f047e17740 +size 54099 diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-italic.ttf b/documentation/docs/generated/fonts/roboto-v15-latin-italic.ttf new file mode 100644 index 0000000000..b0dd4a1e52 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-italic.ttf differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff b/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff new file mode 100644 index 0000000000..a2b7704818 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff2 b/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff2 new file mode 100644 index 0000000000..1bb77f9d11 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-italic.woff2 differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-regular.eot b/documentation/docs/generated/fonts/roboto-v15-latin-regular.eot new file mode 100644 index 0000000000..d26bc8f519 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-regular.eot differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-regular.svg b/documentation/docs/generated/fonts/roboto-v15-latin-regular.svg new file mode 100644 index 0000000000..657b03e32b --- /dev/null +++ b/documentation/docs/generated/fonts/roboto-v15-latin-regular.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9d8f0f4fd1364ef57762589dce1c56c97c744043afdde55ca68ce977906a3d +size 48978 diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-regular.ttf b/documentation/docs/generated/fonts/roboto-v15-latin-regular.ttf new file mode 100644 index 0000000000..7b25f3ce94 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-regular.ttf differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff b/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff new file mode 100644 index 0000000000..941dfa4bae Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff differ diff --git a/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff2 b/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff2 new file mode 100644 index 0000000000..120796bb71 Binary files /dev/null and b/documentation/docs/generated/fonts/roboto-v15-latin-regular.woff2 differ diff --git a/documentation/docs/generated/graph/dependencies.svg b/documentation/docs/generated/graph/dependencies.svg new file mode 100644 index 0000000000..c44132d8ba --- /dev/null +++ b/documentation/docs/generated/graph/dependencies.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a5bea4ce4a8f9adaba81d3c92670ba2a38216d206df0931b7b7bba3dd58bc3f +size 721 diff --git a/documentation/docs/generated/images/compodoc-vectorise-inverted.png b/documentation/docs/generated/images/compodoc-vectorise-inverted.png new file mode 100644 index 0000000000..27fe42a9ef --- /dev/null +++ b/documentation/docs/generated/images/compodoc-vectorise-inverted.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97b51ff73ee7ac169b4b7fac179f229f3005a071e71b05fb005825e25120b1c4 +size 21782 diff --git a/documentation/docs/generated/images/compodoc-vectorise-inverted.svg b/documentation/docs/generated/images/compodoc-vectorise-inverted.svg new file mode 100644 index 0000000000..704f3354d2 --- /dev/null +++ b/documentation/docs/generated/images/compodoc-vectorise-inverted.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3df721f741ecebbb11cf767299ecb3ec8828606e8d8f4a56b0e563bce5f9905f +size 18459 diff --git a/documentation/docs/generated/images/compodoc-vectorise.png b/documentation/docs/generated/images/compodoc-vectorise.png new file mode 100644 index 0000000000..985597fd38 --- /dev/null +++ b/documentation/docs/generated/images/compodoc-vectorise.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44fd58d82c94482ac2f345a6b05f3a91c437a6f1e95948301eda52a6a9ceb607 +size 21325 diff --git a/documentation/docs/generated/images/compodoc-vectorise.svg b/documentation/docs/generated/images/compodoc-vectorise.svg new file mode 100644 index 0000000000..98557254c1 --- /dev/null +++ b/documentation/docs/generated/images/compodoc-vectorise.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f58b7cda4f6c611c69d0d7d6c1b0b66a7b2c33017f2ce35b3d0475bfed8e6e8 +size 18459 diff --git a/documentation/docs/generated/images/coverage-badge-documentation.svg b/documentation/docs/generated/images/coverage-badge-documentation.svg new file mode 100644 index 0000000000..82ea400c97 --- /dev/null +++ b/documentation/docs/generated/images/coverage-badge-documentation.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:169221dc68f79c9003729a667947bd471ef1b46d6212e6d911cc0540f7c8cd1b +size 894 diff --git a/documentation/docs/generated/images/favicon.ico b/documentation/docs/generated/images/favicon.ico new file mode 100644 index 0000000000..4144ee4613 Binary files /dev/null and b/documentation/docs/generated/images/favicon.ico differ diff --git a/documentation/docs/generated/index.html b/documentation/docs/generated/index.html new file mode 100644 index 0000000000..1cbb71043d --- /dev/null +++ b/documentation/docs/generated/index.html @@ -0,0 +1,151 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  + + +
                                                                                                                                  +
                                                                                                                                  + +

                                                                                                                                  Open in Gitpod

                                                                                                                                  +

                                                                                                                                  Parenting App UI

                                                                                                                                  +

                                                                                                                                  Online Documentation

                                                                                                                                  +

                                                                                                                                  Quickstart

                                                                                                                                  +

                                                                                                                                  Prequisites

                                                                                                                                  +
                                                                                                                                    +
                                                                                                                                  1. Download and install Git
                                                                                                                                    This will be used to download the repository

                                                                                                                                    +
                                                                                                                                  2. +
                                                                                                                                  3. Download and install Git LFS
                                                                                                                                    This will be used to download any required binary assets, such as images or pdfs

                                                                                                                                    +
                                                                                                                                  4. +
                                                                                                                                  5. Download and install Node
                                                                                                                                    This is the programming lanugage required to run the project

                                                                                                                                    +
                                                                                                                                  6. +
                                                                                                                                  7. Download and Install Yarn
                                                                                                                                    This manages all 3rd-party code dependencies

                                                                                                                                    +
                                                                                                                                  8. +
                                                                                                                                  +

                                                                                                                                  Installation

                                                                                                                                  +

                                                                                                                                  Download the repo with binary assets

                                                                                                                                  +
                                                                                                                                  $ git lfs clone https://github.com/IDEMSInternational/parenting-app-ui.git

                                                                                                                                  Note - if you do a regular git clone, you can always run git lfs fetch --all later to sync assets

                                                                                                                                  +

                                                                                                                                  Install required dependencies

                                                                                                                                  +
                                                                                                                                  $ cd parenting-app-ui
                                                                                                                                  +$ yarn install

                                                                                                                                  Note - you may have to do this from time to time when content is updated)

                                                                                                                                  +

                                                                                                                                  Configuration

                                                                                                                                  +

                                                                                                                                  Set Deployment

                                                                                                                                  +

                                                                                                                                  The app supports using different workspace or deployment configurations. These are stored in .idems_app/deployments

                                                                                                                                  +

                                                                                                                                  An initial deployment should be specified via the command

                                                                                                                                  +
                                                                                                                                  yarn workflow deployment set

                                                                                                                                  Firebase

                                                                                                                                  +

                                                                                                                                  To be able to run the full project a specific configuration file needs to be included to access +the online database and authentication methods.

                                                                                                                                  +
                                                                                                                                  $ cp src/environments/firebaseConfig.sample.ts src/environments/firebaseConfig.ts

                                                                                                                                  The default file is blank. It should be replaced with a version requested from the dev team.

                                                                                                                                  +

                                                                                                                                  (Note - this process will likely be simplified in the future)

                                                                                                                                  +

                                                                                                                                  Running locally

                                                                                                                                  +

                                                                                                                                  Start the local server

                                                                                                                                  +
                                                                                                                                  yarn start

                                                                                                                                  This will start a local server and serve the app in your browser on http://localhost:4200

                                                                                                                                  +

                                                                                                                                  For Content Coders

                                                                                                                                  +

                                                                                                                                  Please see Quickstart Authors

                                                                                                                                  +

                                                                                                                                  For Developers

                                                                                                                                  +

                                                                                                                                  Please see Quickstart Developers

                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                  +
                                                                                                                                  +

                                                                                                                                  results matching ""

                                                                                                                                  +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    No results matching ""

                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/AnswerBody.html b/documentation/docs/generated/interfaces/AnswerBody.html new file mode 100644 index 0000000000..6e398b7ed9 --- /dev/null +++ b/documentation/docs/generated/interfaces/AnswerBody.html @@ -0,0 +1,390 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    +

                                                                                                                                    File

                                                                                                                                    +

                                                                                                                                    +

                                                                                                                                    + src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts +

                                                                                                                                    + + + + +
                                                                                                                                    +

                                                                                                                                    Index

                                                                                                                                    + + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    Properties
                                                                                                                                    +
                                                                                                                                    + +
                                                                                                                                    +
                                                                                                                                    + + + +
                                                                                                                                    +

                                                                                                                                    Properties

                                                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                                                    + + name + + + + +
                                                                                                                                    + name: string | null + +
                                                                                                                                    + Type : string | null + +
                                                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                                                    + + text + + + + +
                                                                                                                                    + text: string | null + +
                                                                                                                                    + Type : string | null + +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + + +
                                                                                                                                    +
                                                                                                                                    import { Component, Input, OnInit } from "@angular/core";
                                                                                                                                    +import { FlowTypes } from "src/app/shared/model";
                                                                                                                                    +import {
                                                                                                                                    +  getBooleanParamFromTemplateRow,
                                                                                                                                    +  getNumberParamFromTemplateRow,
                                                                                                                                    +  getParamFromTemplateRow,
                                                                                                                                    +  getStringParamFromTemplateRow,
                                                                                                                                    +} from "src/app/shared/utils";
                                                                                                                                    +import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
                                                                                                                                    +import { ModalController } from "@ionic/angular";
                                                                                                                                    +
                                                                                                                                    +interface AnswerBody {
                                                                                                                                    +  name: string | null;
                                                                                                                                    +  text: string | null;
                                                                                                                                    +}
                                                                                                                                    +
                                                                                                                                    +@Component({
                                                                                                                                    +  selector: "combo-box-modal",
                                                                                                                                    +  templateUrl: "./combo-box-modal.component.html",
                                                                                                                                    +  styleUrls: ["./combo-box-modal.component.scss"],
                                                                                                                                    +})
                                                                                                                                    +export class ComboBoxModalComponent implements OnInit {
                                                                                                                                    +  @Input() row: FlowTypes.TemplateRow;
                                                                                                                                    +  @Input() template: FlowTypes.Template;
                                                                                                                                    +  @Input() selectedValue: string;
                                                                                                                                    +  @Input() customAnswerSelected: boolean;
                                                                                                                                    +  @Input() style: string;
                                                                                                                                    +  formData: FormGroup | null;
                                                                                                                                    +  valuesFromListAnswers: AnswerBody[];
                                                                                                                                    +  textTitle: string | null;
                                                                                                                                    +  inputAllowed: boolean = false;
                                                                                                                                    +  form: FormGroup;
                                                                                                                                    +  inputPosition: boolean = false;
                                                                                                                                    +  maxLength: number = 30;
                                                                                                                                    +  placeholder: string = "";
                                                                                                                                    +  constructor(private fb: FormBuilder, private modalController: ModalController) {}
                                                                                                                                    +
                                                                                                                                    +  ngOnInit() {
                                                                                                                                    +    this.getParams();
                                                                                                                                    +    this.calculateAnswer();
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  getParams() {
                                                                                                                                    +    this.valuesFromListAnswers = this.convertToObject(
                                                                                                                                    +      getParamFromTemplateRow(this.row, "answer_list", null)
                                                                                                                                    +    );
                                                                                                                                    +    this.textTitle = getStringParamFromTemplateRow(this.row, "text", null);
                                                                                                                                    +    this.inputAllowed = getBooleanParamFromTemplateRow(this.row, "input_allowed", false);
                                                                                                                                    +    this.inputPosition =
                                                                                                                                    +      getStringParamFromTemplateRow(this.row, "input_position", "bottom") === "top";
                                                                                                                                    +    this.maxLength = getNumberParamFromTemplateRow(this.row, "max_length", 30);
                                                                                                                                    +    this.placeholder = getStringParamFromTemplateRow(this.row, "answer_placeholder", "");
                                                                                                                                    +    if (this.formData) {
                                                                                                                                    +      this.form = this.formData;
                                                                                                                                    +    } else {
                                                                                                                                    +      this.buildForm();
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  calculateAnswer() {
                                                                                                                                    +    if (!this.customAnswerSelected) {
                                                                                                                                    +      this.form.get("answer").setValue(this.selectedValue);
                                                                                                                                    +    } else {
                                                                                                                                    +      this.form.get("customAnswer").setValue(this.selectedValue);
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  convertToObject(answers_list: string[]): AnswerBody[] {
                                                                                                                                    +    let answers: AnswerBody[] = [];
                                                                                                                                    +    if (answers_list) {
                                                                                                                                    +      answers_list.map((item) => {
                                                                                                                                    +        const obj: AnswerBody = {
                                                                                                                                    +          text: null,
                                                                                                                                    +          name: null,
                                                                                                                                    +        };
                                                                                                                                    +        const stringProperties = item.split("|");
                                                                                                                                    +        stringProperties.forEach((s) => {
                                                                                                                                    +          const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                    +          if (field && value) {
                                                                                                                                    +            obj[field] = value;
                                                                                                                                    +          }
                                                                                                                                    +        });
                                                                                                                                    +        answers.push(obj);
                                                                                                                                    +      });
                                                                                                                                    +      return answers;
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  buildForm() {
                                                                                                                                    +    this.form = this.fb.group({
                                                                                                                                    +      answer: new FormControl(null, []),
                                                                                                                                    +    });
                                                                                                                                    +    if (this.inputAllowed) {
                                                                                                                                    +      this.form.addControl("customAnswer", new FormControl("", []));
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  check(el) {
                                                                                                                                    +    if (this.form.get("answer").value === el.name) {
                                                                                                                                    +      this.form.get("answer").setValue(null);
                                                                                                                                    +      this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: null });
                                                                                                                                    +    } else {
                                                                                                                                    +      this.form.get("answer").setValue(el);
                                                                                                                                    +      if (this.inputAllowed) {
                                                                                                                                    +        this.form.get("customAnswer").setValue(null);
                                                                                                                                    +      }
                                                                                                                                    +      this.customAnswerSelected = false;
                                                                                                                                    +      this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: el });
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  closeModal(value) {
                                                                                                                                    +    setTimeout(async () => {
                                                                                                                                    +      await this.modalController.dismiss(value);
                                                                                                                                    +    }, 50);
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  enterCustomAnswer() {
                                                                                                                                    +    if (this.form.get("customAnswer").value !== "") {
                                                                                                                                    +      if (this.customAnswerSelected) {
                                                                                                                                    +        this.customAnswerSelected = true;
                                                                                                                                    +        this.closeModal({
                                                                                                                                    +          customAnswerSelected: this.customAnswerSelected,
                                                                                                                                    +          answer: { text: this.form.get("customAnswer").value, name: "other" },
                                                                                                                                    +        });
                                                                                                                                    +      } else {
                                                                                                                                    +        this.form.get("answer").setValue(null);
                                                                                                                                    +        this.customAnswerSelected = true;
                                                                                                                                    +        this.closeModal({
                                                                                                                                    +          customAnswerSelected: this.customAnswerSelected,
                                                                                                                                    +          answer: { text: this.form.get("customAnswer").value, name: "other" },
                                                                                                                                    +        });
                                                                                                                                    +      }
                                                                                                                                    +    }
                                                                                                                                    +  }
                                                                                                                                    +
                                                                                                                                    +  get customAnswerClass() {
                                                                                                                                    +    return this.customAnswerSelected ? "text-box-input checked-radion" : "text-box-input";
                                                                                                                                    +  }
                                                                                                                                    +}
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    +
                                                                                                                                    + + + + + + + + +
                                                                                                                                    +
                                                                                                                                    +

                                                                                                                                    results matching ""

                                                                                                                                    +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      No results matching ""

                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IAnswerListItem.html b/documentation/docs/generated/interfaces/IAnswerListItem.html new file mode 100644 index 0000000000..02348e13aa --- /dev/null +++ b/documentation/docs/generated/interfaces/IAnswerListItem.html @@ -0,0 +1,439 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      +

                                                                                                                                      File

                                                                                                                                      +

                                                                                                                                      +

                                                                                                                                      + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts +

                                                                                                                                      + + + + +
                                                                                                                                      +

                                                                                                                                      Index

                                                                                                                                      + + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      Properties
                                                                                                                                      +
                                                                                                                                      + +
                                                                                                                                      +
                                                                                                                                      + + + +
                                                                                                                                      +

                                                                                                                                      Properties

                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                      + + image + + + + +
                                                                                                                                      + image: string + +
                                                                                                                                      + Type : string + +
                                                                                                                                      + Optional +
                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                      + + name + + + + +
                                                                                                                                      + name: string + +
                                                                                                                                      + Type : string + +
                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                      + + text + + + + +
                                                                                                                                      + text: string + +
                                                                                                                                      + Type : string + +
                                                                                                                                      + Optional +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + + +
                                                                                                                                      +
                                                                                                                                      import { Component, Input } from "@angular/core";
                                                                                                                                      +import { TemplateBaseComponent } from "../base";
                                                                                                                                      +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                                                                      +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                                      +import { objectToArray } from "../../utils";
                                                                                                                                      +
                                                                                                                                      +interface IAnswerListItem {
                                                                                                                                      +  name: string;
                                                                                                                                      +  image?: string;
                                                                                                                                      +  text?: string;
                                                                                                                                      +}
                                                                                                                                      +
                                                                                                                                      +interface IRadioButtonGridParams {
                                                                                                                                      +  /** List of options presented as radio items */
                                                                                                                                      +  answer_list: IAnswerListItem[];
                                                                                                                                      +  /**
                                                                                                                                      +   * Minimum item width, will increase to fit grid.
                                                                                                                                      +   * Default '200px'
                                                                                                                                      +   **/
                                                                                                                                      +  item_width: string;
                                                                                                                                      +  /**
                                                                                                                                      +   * Maximum grid width, if specified will center items in available space.
                                                                                                                                      +   * Default '100%'
                                                                                                                                      +   **/
                                                                                                                                      +  grid_width: string;
                                                                                                                                      +  /**
                                                                                                                                      +   * Spacing between grid items.
                                                                                                                                      +   * Default '16px'
                                                                                                                                      +   **/
                                                                                                                                      +  grid_gap: string;
                                                                                                                                      +}
                                                                                                                                      +
                                                                                                                                      +@Component({
                                                                                                                                      +  selector: "plh-radio-button-grid",
                                                                                                                                      +  templateUrl: "./radio-button-grid.component.html",
                                                                                                                                      +  styleUrls: ["./radio-button-grid.component.scss"],
                                                                                                                                      +})
                                                                                                                                      +export class TmplRadioButtonGridComponent
                                                                                                                                      +  extends TemplateBaseComponent
                                                                                                                                      +  implements ITemplateRowProps
                                                                                                                                      +{
                                                                                                                                      +  /**
                                                                                                                                      +   * Computed item array from input parameters
                                                                                                                                      +   * @ignore
                                                                                                                                      +   */
                                                                                                                                      +  public radioItems: Array<IAnswerListItem>;
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * Computed grid style from input parameters
                                                                                                                                      +   * @ignore
                                                                                                                                      +   */
                                                                                                                                      +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * Authoring parameters
                                                                                                                                      +   */
                                                                                                                                      +  public parameter_list: IRadioButtonGridParams;
                                                                                                                                      +
                                                                                                                                      +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                                                                      +    this._row = row;
                                                                                                                                      +    this.setParams();
                                                                                                                                      +  }
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * S
                                                                                                                                      +   * @ignore
                                                                                                                                      +   */
                                                                                                                                      +  public async handleItemClick(item: IAnswerListItem) {
                                                                                                                                      +    await this.setValue(item.name);
                                                                                                                                      +    this.triggerActions("changed");
                                                                                                                                      +  }
                                                                                                                                      +
                                                                                                                                      +  private setParams() {
                                                                                                                                      +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                      +    this.radioItems = this.generateItemList();
                                                                                                                                      +    this.gridStyle = this.generateGridStyle();
                                                                                                                                      +  }
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * Create a list of styles to be passed into ngStyle
                                                                                                                                      +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                                                                      +   */
                                                                                                                                      +  private generateGridStyle() {
                                                                                                                                      +    const minItemWidth = this.parameter_list.item_width || "200px";
                                                                                                                                      +    const maxGridWidth = this.parameter_list.grid_width || "100%";
                                                                                                                                      +    const gridGap = this.parameter_list.grid_gap || "16px";
                                                                                                                                      +
                                                                                                                                      +    const style: Partial<CSSStyleDeclaration> = {
                                                                                                                                      +      // center grid with maximum width
                                                                                                                                      +      maxWidth: maxGridWidth,
                                                                                                                                      +      margin: "auto",
                                                                                                                                      +      // apply fixed gap between grid items
                                                                                                                                      +      gap: gridGap,
                                                                                                                                      +      // fit columns with target item width
                                                                                                                                      +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                                                                      +      // make all rows same height
                                                                                                                                      +      gridAutoRows: "1fr",
                                                                                                                                      +    };
                                                                                                                                      +    return style;
                                                                                                                                      +  }
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * Adapted from radio-group.component
                                                                                                                                      +   * Convert input answer_list to rendered item list
                                                                                                                                      +   */
                                                                                                                                      +  private generateItemList() {
                                                                                                                                      +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                                                                      +    // Convert if datalist input (hashmap to array)
                                                                                                                                      +    if (answerList.constructor === {}.constructor) {
                                                                                                                                      +      answerList = objectToArray(answerList);
                                                                                                                                      +    }
                                                                                                                                      +    const radioItems: IAnswerListItem[] = answerList.map(
                                                                                                                                      +      (item: string | Record<string, string>) => {
                                                                                                                                      +        if (typeof item === "string") {
                                                                                                                                      +          return this.parseAnswerListItemString(item);
                                                                                                                                      +        }
                                                                                                                                      +        return item as any;
                                                                                                                                      +      }
                                                                                                                                      +    );
                                                                                                                                      +    return radioItems;
                                                                                                                                      +  }
                                                                                                                                      +
                                                                                                                                      +  /**
                                                                                                                                      +   * convert string to relevant mappings
                                                                                                                                      +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                                                                      +   */
                                                                                                                                      +  private parseAnswerListItemString(item: string) {
                                                                                                                                      +    const itemObj: IAnswerListItem = {} as any;
                                                                                                                                      +    const stringProperties = item.split("|");
                                                                                                                                      +    stringProperties.forEach((s) => {
                                                                                                                                      +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                      +      if (field && value) {
                                                                                                                                      +        itemObj[field] = value;
                                                                                                                                      +      }
                                                                                                                                      +    });
                                                                                                                                      +    return itemObj;
                                                                                                                                      +  }
                                                                                                                                      +}
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      +
                                                                                                                                      + + + + + + + + +
                                                                                                                                      +
                                                                                                                                      +

                                                                                                                                      results matching ""

                                                                                                                                      +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        No results matching ""

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IAuthorParameterList.html b/documentation/docs/generated/interfaces/IAuthorParameterList.html new file mode 100644 index 0000000000..e7b04dd405 --- /dev/null +++ b/documentation/docs/generated/interfaces/IAuthorParameterList.html @@ -0,0 +1,437 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        + + +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        File

                                                                                                                                        +

                                                                                                                                        +

                                                                                                                                        + src/app/shared/components/template/components/radio-group-grid/radio-group-grid.component.ts +

                                                                                                                                        + + + + +
                                                                                                                                        +

                                                                                                                                        Index

                                                                                                                                        + + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        Properties
                                                                                                                                        +
                                                                                                                                        + +
                                                                                                                                        +
                                                                                                                                        + + + +
                                                                                                                                        +

                                                                                                                                        Properties

                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                        + + answer_list + + + + +
                                                                                                                                        + answer_list: IAnswerListItem[] + +
                                                                                                                                        + Type : IAnswerListItem[] + +
                                                                                                                                        +

                                                                                                                                        List of options presented as radio items

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                        + + grid_width + + + + +
                                                                                                                                        + grid_width: string + +
                                                                                                                                        + Type : string + +
                                                                                                                                        +

                                                                                                                                        Maximum grid width, if specified will center items in available space +default '100%'

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                        + + item_width + + + + +
                                                                                                                                        + item_width: string + +
                                                                                                                                        + Type : string + +
                                                                                                                                        +

                                                                                                                                        Minimum item width, will increase to fit grid +default '200px'

                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + +
                                                                                                                                        +
                                                                                                                                        import { Component, Input } from "@angular/core";
                                                                                                                                        +import { TemplateBaseComponent } from "../base";
                                                                                                                                        +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                                                                        +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                                        +import { objectToArray } from "../../utils";
                                                                                                                                        +
                                                                                                                                        +interface IAnswerListItem {
                                                                                                                                        +  name: string;
                                                                                                                                        +  image?: string;
                                                                                                                                        +  text?: string;
                                                                                                                                        +}
                                                                                                                                        +
                                                                                                                                        +interface IAuthorParameterList {
                                                                                                                                        +  /** List of options presented as radio items */
                                                                                                                                        +  answer_list: IAnswerListItem[];
                                                                                                                                        +  /**
                                                                                                                                        +   * Minimum item width, will increase to fit grid
                                                                                                                                        +   * default '200px'
                                                                                                                                        +   **/
                                                                                                                                        +  item_width: string;
                                                                                                                                        +  /**
                                                                                                                                        +   * Maximum grid width, if specified will center items in available space
                                                                                                                                        +   * default '100%'
                                                                                                                                        +   **/
                                                                                                                                        +  grid_width: string;
                                                                                                                                        +}
                                                                                                                                        +
                                                                                                                                        +@Component({
                                                                                                                                        +  selector: "plh-radio-group-grid",
                                                                                                                                        +  templateUrl: "./radio-group-grid.component.html",
                                                                                                                                        +  styleUrls: ["./radio-group-grid.component.scss"],
                                                                                                                                        +})
                                                                                                                                        +export class TmplRadioGroupGridComponent
                                                                                                                                        +  extends TemplateBaseComponent
                                                                                                                                        +  implements ITemplateRowProps
                                                                                                                                        +{
                                                                                                                                        +  /**
                                                                                                                                        +   * Computed item array from input parameters
                                                                                                                                        +   * @ignore
                                                                                                                                        +   */
                                                                                                                                        +  public radioItems: Array<IAnswerListItem>;
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * Computed grid style from input parameters
                                                                                                                                        +   * @ignore
                                                                                                                                        +   */
                                                                                                                                        +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * Authoring parameters
                                                                                                                                        +   */
                                                                                                                                        +  protected parameter_list: IAuthorParameterList;
                                                                                                                                        +
                                                                                                                                        +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                                                                        +    this._row = row;
                                                                                                                                        +    this.setParams();
                                                                                                                                        +  }
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * S
                                                                                                                                        +   * @ignore
                                                                                                                                        +   */
                                                                                                                                        +  public async handleItemClick(item: IAnswerListItem) {
                                                                                                                                        +    await this.setValue(item.name);
                                                                                                                                        +    this.triggerActions("changed");
                                                                                                                                        +  }
                                                                                                                                        +
                                                                                                                                        +  private setParams() {
                                                                                                                                        +    this.radioItems = this.generateItemList();
                                                                                                                                        +    this.gridStyle = this.generateGridStyle();
                                                                                                                                        +  }
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * Create a list of styles to be passed into ngStyle
                                                                                                                                        +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                                                                        +   */
                                                                                                                                        +  private generateGridStyle() {
                                                                                                                                        +    const minItemWidth = getParamFromTemplateRow(this._row, "item_width", "200px");
                                                                                                                                        +    const maxGridWidth = getParamFromTemplateRow(this._row, "grid_width", "100%");
                                                                                                                                        +    const style: Partial<CSSStyleDeclaration> = {
                                                                                                                                        +      // center grid with maximum width
                                                                                                                                        +      maxWidth: maxGridWidth,
                                                                                                                                        +      margin: "auto",
                                                                                                                                        +      // fit columns with target item width
                                                                                                                                        +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                                                                        +      // make all rows same height
                                                                                                                                        +      gridAutoRows: "1fr",
                                                                                                                                        +    };
                                                                                                                                        +    return style;
                                                                                                                                        +  }
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * Adapted from radio-group.component
                                                                                                                                        +   * Convert input answer_list to rendered item list
                                                                                                                                        +   */
                                                                                                                                        +  private generateItemList() {
                                                                                                                                        +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                                                                        +    // Convert if datalist input (hashmap to array)
                                                                                                                                        +    if (answerList.constructor === {}.constructor) {
                                                                                                                                        +      answerList = objectToArray(answerList);
                                                                                                                                        +    }
                                                                                                                                        +    const radioItems: IAnswerListItem[] = answerList.map(
                                                                                                                                        +      (item: string | Record<string, string>) => {
                                                                                                                                        +        if (typeof item === "string") {
                                                                                                                                        +          return this.parseAnswerListItemString(item);
                                                                                                                                        +        }
                                                                                                                                        +        return item as any;
                                                                                                                                        +      }
                                                                                                                                        +    );
                                                                                                                                        +    return radioItems;
                                                                                                                                        +  }
                                                                                                                                        +
                                                                                                                                        +  /**
                                                                                                                                        +   * convert string to relevant mappings
                                                                                                                                        +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                                                                        +   */
                                                                                                                                        +  private parseAnswerListItemString(item: string) {
                                                                                                                                        +    const itemObj: IAnswerListItem = {} as any;
                                                                                                                                        +    const stringProperties = item.split("|");
                                                                                                                                        +    stringProperties.forEach((s) => {
                                                                                                                                        +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                        +      if (field && value) {
                                                                                                                                        +        itemObj[field] = value;
                                                                                                                                        +      }
                                                                                                                                        +    });
                                                                                                                                        +    return itemObj;
                                                                                                                                        +  }
                                                                                                                                        +}
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        +
                                                                                                                                        + + + + + + + + +
                                                                                                                                        +
                                                                                                                                        +

                                                                                                                                        results matching ""

                                                                                                                                        +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          No results matching ""

                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          + +
                                                                                                                                          +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IButton-1.html b/documentation/docs/generated/interfaces/IButton-1.html new file mode 100644 index 0000000000..5281d5bc85 --- /dev/null +++ b/documentation/docs/generated/interfaces/IButton-1.html @@ -0,0 +1,483 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          + + +
                                                                                                                                          +
                                                                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          +

                                                                                                                                          File

                                                                                                                                          +

                                                                                                                                          +

                                                                                                                                          + src/app/shared/components/template/components/radio-group/radio-group.component.ts +

                                                                                                                                          + + + + +
                                                                                                                                          +

                                                                                                                                          Index

                                                                                                                                          + + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          Properties
                                                                                                                                          +
                                                                                                                                          + +
                                                                                                                                          +
                                                                                                                                          + + + +
                                                                                                                                          +

                                                                                                                                          Properties

                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                          + + image + + + + +
                                                                                                                                          + image: string | null + +
                                                                                                                                          + Type : string | null + +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                          + + image_checked + + + + +
                                                                                                                                          + image_checked: string | null + +
                                                                                                                                          + Type : string | null + +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                          + + name + + + + +
                                                                                                                                          + name: string | null + +
                                                                                                                                          + Type : string | null + +
                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                          + + text + + + + +
                                                                                                                                          + text: string | null + +
                                                                                                                                          + Type : string | null + +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          + + +
                                                                                                                                          +
                                                                                                                                          import {
                                                                                                                                          +  Component,
                                                                                                                                          +  ElementRef,
                                                                                                                                          +  EventEmitter,
                                                                                                                                          +  Input,
                                                                                                                                          +  OnDestroy,
                                                                                                                                          +  OnInit,
                                                                                                                                          +  ViewChild,
                                                                                                                                          +} from "@angular/core";
                                                                                                                                          +import { TemplateBaseComponent } from "../base";
                                                                                                                                          +import { ITemplateRowProps } from "../../models";
                                                                                                                                          +import { TemplateContainerComponent } from "../../template-container.component";
                                                                                                                                          +import {
                                                                                                                                          +  getNumberParamFromTemplateRow,
                                                                                                                                          +  getParamFromTemplateRow,
                                                                                                                                          +  getStringParamFromTemplateRow,
                                                                                                                                          +} from "../../../../utils";
                                                                                                                                          +import { ReplaySubject } from "rxjs";
                                                                                                                                          +import { objectToArray } from "../../utils/template-utils";
                                                                                                                                          +
                                                                                                                                          +interface IButton {
                                                                                                                                          +  name: string | null;
                                                                                                                                          +  image: string | null;
                                                                                                                                          +  text: string | null;
                                                                                                                                          +  image_checked: string | null;
                                                                                                                                          +}
                                                                                                                                          +
                                                                                                                                          +@Component({
                                                                                                                                          +  selector: "plh-radio-group",
                                                                                                                                          +  templateUrl: "./radio-group.component.html",
                                                                                                                                          +  styleUrls: ["./radio-group.component.scss"],
                                                                                                                                          +})
                                                                                                                                          +export class TmplRadioGroupComponent
                                                                                                                                          +  extends TemplateBaseComponent
                                                                                                                                          +  implements ITemplateRowProps, OnInit, OnDestroy
                                                                                                                                          +{
                                                                                                                                          +  @Input() changeTheme: EventEmitter<boolean>;
                                                                                                                                          +  @Input() parent: TemplateContainerComponent;
                                                                                                                                          +  @ViewChild("labelImage", { static: false, read: true }) labelImage: ElementRef;
                                                                                                                                          +  arrayOfBtn: Array<IButton>;
                                                                                                                                          +  groupName: string;
                                                                                                                                          +  windowWidth: number;
                                                                                                                                          +  private componentDestroyed$ = new ReplaySubject(1);
                                                                                                                                          +  flexWidth: string;
                                                                                                                                          +
                                                                                                                                          +  // Parameters
                                                                                                                                          +  answer_list: string[];
                                                                                                                                          +  options_per_row: number;
                                                                                                                                          +  radioButtonType: string | null;
                                                                                                                                          +  style: string;
                                                                                                                                          +
                                                                                                                                          +  ngOnInit() {
                                                                                                                                          +    this.getParams();
                                                                                                                                          +  }
                                                                                                                                          +
                                                                                                                                          +  getParams() {
                                                                                                                                          +    const row = this._row;
                                                                                                                                          +    // extract properties from parameters
                                                                                                                                          +    this.radioButtonType = getParamFromTemplateRow(row, "radio_button_type", "btn_text");
                                                                                                                                          +    this.options_per_row = getNumberParamFromTemplateRow(this._row, "options_per_row", 3);
                                                                                                                                          +    this.style = getStringParamFromTemplateRow(this._row, "style", "");
                                                                                                                                          +    this.windowWidth = window.innerWidth;
                                                                                                                                          +
                                                                                                                                          +    // convert string answer lists to formatted objects
                                                                                                                                          +    this.answer_list = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                                                                          +    this.arrayOfBtn = this.createArrayBtnElement(this.answer_list);
                                                                                                                                          +
                                                                                                                                          +    this.getFlexWidth();
                                                                                                                                          +    this.groupName = this._row._nested_name;
                                                                                                                                          +  }
                                                                                                                                          +
                                                                                                                                          +  public async handleRadioButtonClick(selectedValue: string) {
                                                                                                                                          +    await this.setValue(selectedValue);
                                                                                                                                          +    this.triggerActions("changed");
                                                                                                                                          +  }
                                                                                                                                          +
                                                                                                                                          +  /**
                                                                                                                                          +   * Answer lists are formatted as strings with to indicate properties, e.g.
                                                                                                                                          +   * [
                                                                                                                                          +   * "name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg",
                                                                                                                                          +   * "name:unhappy | image:plh_images/stickers/faces/unhappy.svg"
                                                                                                                                          +   * ]
                                                                                                                                          +   * Convert to an object array, with key value pairs extracted from the string values
                                                                                                                                          +   */
                                                                                                                                          +  createArrayBtnElement(answer_list: string[]) {
                                                                                                                                          +    if (answer_list) {
                                                                                                                                          +      // NOTE CC 2021-08-07 - datalists might be used which currently only format as objects
                                                                                                                                          +      // manually convert to array if required (temp method until better handling found)
                                                                                                                                          +      if (typeof answer_list === "object") {
                                                                                                                                          +        answer_list = objectToArray(answer_list);
                                                                                                                                          +      }
                                                                                                                                          +      const arrayOfBtn = answer_list.map((item) => {
                                                                                                                                          +        // convert string to relevant mappings
                                                                                                                                          +        let itemObj: IButton = {} as any;
                                                                                                                                          +        if (typeof item === "string") {
                                                                                                                                          +          const stringProperties = item.split("|");
                                                                                                                                          +          stringProperties.forEach((s) => {
                                                                                                                                          +            const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                          +            if (field && value) {
                                                                                                                                          +              itemObj[field] = value;
                                                                                                                                          +            }
                                                                                                                                          +          });
                                                                                                                                          +        }
                                                                                                                                          +        // NOTE CC 2021-08-07 - allow passing of object, not just string for conversion
                                                                                                                                          +        else {
                                                                                                                                          +          itemObj = item;
                                                                                                                                          +        }
                                                                                                                                          +        const processed = this.processButtonFields(itemObj);
                                                                                                                                          +        return processed;
                                                                                                                                          +      });
                                                                                                                                          +      // TODO - CC 2023-03-15 could lead to strange behaviour, to review
                                                                                                                                          +      // (checks every item but keeps overriding the button type depending on what it finds)
                                                                                                                                          +      arrayOfBtn.forEach((item) => {
                                                                                                                                          +        if (item.image && item.text) {
                                                                                                                                          +          this.radioButtonType = "btn_both";
                                                                                                                                          +        } else if (!item.image && item.text) {
                                                                                                                                          +          this.radioButtonType = "btn_text";
                                                                                                                                          +        } else if (item.image && !item.text) {
                                                                                                                                          +          this.radioButtonType = "btn_image";
                                                                                                                                          +        }
                                                                                                                                          +      });
                                                                                                                                          +      return arrayOfBtn;
                                                                                                                                          +    }
                                                                                                                                          +  }
                                                                                                                                          +  private processButtonFields(button: IButton) {
                                                                                                                                          +    const processed: IButton = {
                                                                                                                                          +      text: null,
                                                                                                                                          +      image: null,
                                                                                                                                          +      name: null,
                                                                                                                                          +      image_checked: null,
                                                                                                                                          +    };
                                                                                                                                          +    Object.entries(button).forEach(([field, value]) => {
                                                                                                                                          +      switch (field) {
                                                                                                                                          +        case "image":
                                                                                                                                          +          processed[field] = value;
                                                                                                                                          +          break;
                                                                                                                                          +        case "image_checked":
                                                                                                                                          +          processed[field] = value;
                                                                                                                                          +          break;
                                                                                                                                          +        default:
                                                                                                                                          +          processed[field] = value;
                                                                                                                                          +      }
                                                                                                                                          +    });
                                                                                                                                          +    return processed;
                                                                                                                                          +  }
                                                                                                                                          +
                                                                                                                                          +  getFlexWidth() {
                                                                                                                                          +    this.flexWidth = `0 1 ${100 / this.options_per_row - 7}%`;
                                                                                                                                          +  }
                                                                                                                                          +
                                                                                                                                          +  ngOnDestroy() {
                                                                                                                                          +    this.componentDestroyed$.next(true);
                                                                                                                                          +    this.componentDestroyed$.complete();
                                                                                                                                          +  }
                                                                                                                                          +}
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          +
                                                                                                                                          + + + + + + + + +
                                                                                                                                          +
                                                                                                                                          +

                                                                                                                                          results matching ""

                                                                                                                                          +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            No results matching ""

                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IButton.html b/documentation/docs/generated/interfaces/IButton.html new file mode 100644 index 0000000000..5f1cccb20f --- /dev/null +++ b/documentation/docs/generated/interfaces/IButton.html @@ -0,0 +1,357 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            +

                                                                                                                                            File

                                                                                                                                            +

                                                                                                                                            +

                                                                                                                                            + src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts +

                                                                                                                                            + + + + +
                                                                                                                                            +

                                                                                                                                            Index

                                                                                                                                            + + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            Properties
                                                                                                                                            +
                                                                                                                                            + +
                                                                                                                                            +
                                                                                                                                            + + + +
                                                                                                                                            +

                                                                                                                                            Properties

                                                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            + + image + + + + +
                                                                                                                                            + image: string | null + +
                                                                                                                                            + Type : string | null + +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            + + name + + + + +
                                                                                                                                            + name: string | null + +
                                                                                                                                            + Type : string | null + +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            + + target_template + + + + +
                                                                                                                                            + target_template: string | null + +
                                                                                                                                            + Type : string | null + +
                                                                                                                                            + + + + + + + + + + + + + + + + + + + +
                                                                                                                                            + + text + + + + +
                                                                                                                                            + text: string | null + +
                                                                                                                                            + Type : string | null + +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + +
                                                                                                                                            +
                                                                                                                                            import { Component, OnInit } from "@angular/core";
                                                                                                                                            +import { TemplateBaseComponent } from "../base";
                                                                                                                                            +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                                            +import { parseValueListItems } from "../../utils";
                                                                                                                                            +
                                                                                                                                            +interface IButton {
                                                                                                                                            +  image: string | null;
                                                                                                                                            +  text: string | null;
                                                                                                                                            +  target_template: string | null;
                                                                                                                                            +  name: string | null;
                                                                                                                                            +}
                                                                                                                                            +
                                                                                                                                            +@Component({
                                                                                                                                            +  selector: "plh-navigation-bar",
                                                                                                                                            +  templateUrl: "./navigation-bar.component.html",
                                                                                                                                            +  styleUrls: ["./navigation-bar.component.scss"],
                                                                                                                                            +})
                                                                                                                                            +export class TmplNavigationBarComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                                            +  buttonList: IButton[];
                                                                                                                                            +
                                                                                                                                            +  ngOnInit() {
                                                                                                                                            +    this.getParams();
                                                                                                                                            +  }
                                                                                                                                            +
                                                                                                                                            +  getParams() {
                                                                                                                                            +    const buttonListRaw: string[] = getParamFromTemplateRow(this._row, "button_list", []);
                                                                                                                                            +    this.buttonList = parseValueListItems(buttonListRaw);
                                                                                                                                            +  }
                                                                                                                                            +}
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            +
                                                                                                                                            + + + + + + + + +
                                                                                                                                            +
                                                                                                                                            +

                                                                                                                                            results matching ""

                                                                                                                                            +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              No results matching ""

                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/ICategoryList.html b/documentation/docs/generated/interfaces/ICategoryList.html new file mode 100644 index 0000000000..671718d70c --- /dev/null +++ b/documentation/docs/generated/interfaces/ICategoryList.html @@ -0,0 +1,365 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              + + + + + + + + + + + + + + + + + +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              +

                                                                                                                                              File

                                                                                                                                              +

                                                                                                                                              +

                                                                                                                                              + src/app/shared/components/template/components/number-selector/number-selector.component.ts +

                                                                                                                                              + + + + +
                                                                                                                                              +

                                                                                                                                              Index

                                                                                                                                              + + + + + + + + + +
                                                                                                                                              +
                                                                                                                                              Properties
                                                                                                                                              +
                                                                                                                                              + +
                                                                                                                                              +
                                                                                                                                              + + + +
                                                                                                                                              +

                                                                                                                                              Properties

                                                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                                                              + + from + + + + +
                                                                                                                                              + from: number + +
                                                                                                                                              + Type : number + +
                                                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                                                              + + to + + + + +
                                                                                                                                              + to: number + +
                                                                                                                                              + Type : number + +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + +
                                                                                                                                              +
                                                                                                                                              import { Component, Input, OnInit } from "@angular/core";
                                                                                                                                              +import { FlowTypes } from "../../../../model";
                                                                                                                                              +import {
                                                                                                                                              +  getNumberParamFromTemplateRow,
                                                                                                                                              +  getStringParamFromTemplateRow,
                                                                                                                                              +  getParamFromTemplateRow,
                                                                                                                                              +} from "src/app/shared/utils";
                                                                                                                                              +import { ITemplateRowProps } from "../../models";
                                                                                                                                              +import { TemplateBaseComponent } from "../base";
                                                                                                                                              +import { TemplateContainerComponent } from "../../template-container.component";
                                                                                                                                              +
                                                                                                                                              +interface ICategoryList {
                                                                                                                                              +  from: number;
                                                                                                                                              +  to: number;
                                                                                                                                              +}
                                                                                                                                              +
                                                                                                                                              +@Component({
                                                                                                                                              +  selector: "plh-number-selector",
                                                                                                                                              +  templateUrl: "./number-selector.component.html",
                                                                                                                                              +  styleUrls: ["./number-selector.component.scss"],
                                                                                                                                              +})
                                                                                                                                              +export class TmplNumberComponent
                                                                                                                                              +  extends TemplateBaseComponent
                                                                                                                                              +  implements ITemplateRowProps, OnInit
                                                                                                                                              +{
                                                                                                                                              +  @Input() parent: TemplateContainerComponent;
                                                                                                                                              +
                                                                                                                                              +  title: string | null;
                                                                                                                                              +  min_value: number | null = 0;
                                                                                                                                              +  displayValue: any = 0;
                                                                                                                                              +  max_value: number | null = 0;
                                                                                                                                              +  category_list: string[];
                                                                                                                                              +  height: string;
                                                                                                                                              +  category_size: number;
                                                                                                                                              +  first_display_term: number;
                                                                                                                                              +  valuesFromCategoryList: string[];
                                                                                                                                              +
                                                                                                                                              +  ngOnInit() {
                                                                                                                                              +    this.getParams();
                                                                                                                                              +  }
                                                                                                                                              +
                                                                                                                                              +  getParams() {
                                                                                                                                              +    this.category_list = getParamFromTemplateRow(this._row, "category_list", null);
                                                                                                                                              +    this.title = getStringParamFromTemplateRow(this._row, "title", null);
                                                                                                                                              +    this.height = getStringParamFromTemplateRow(this._row, "height", "short");
                                                                                                                                              +    this.height = this.height === "short" || "normal" ? this.height : "short";
                                                                                                                                              +    if (this.category_list) {
                                                                                                                                              +      this.valuesFromCategoryList = this.category_list;
                                                                                                                                              +      this.first_display_term =
                                                                                                                                              +        getNumberParamFromTemplateRow(this._row, "first_display_term", 1) - 1;
                                                                                                                                              +      this.displayValue = this.valuesFromCategoryList[this.first_display_term];
                                                                                                                                              +    } else {
                                                                                                                                              +      this.min_value = getNumberParamFromTemplateRow(this._row, "min_value", 0);
                                                                                                                                              +      this.max_value = getNumberParamFromTemplateRow(this._row, "max_value", 6);
                                                                                                                                              +      this.category_size = getNumberParamFromTemplateRow(this._row, "category_size", 1);
                                                                                                                                              +      this.displayValue = this.min_value;
                                                                                                                                              +    }
                                                                                                                                              +    // assign any previously saved value
                                                                                                                                              +    if (this._row.value) {
                                                                                                                                              +      this.displayValue = this._row.value;
                                                                                                                                              +    }
                                                                                                                                              +  }
                                                                                                                                              +
                                                                                                                                              +  async increment(param: "gt" | "lt") {
                                                                                                                                              +    if (this.category_list) {
                                                                                                                                              +      if (this.checkIfContainsNextArrayItem(this.valuesFromCategoryList, param)) {
                                                                                                                                              +        this.updateData(param);
                                                                                                                                              +      }
                                                                                                                                              +    } else {
                                                                                                                                              +      if (param === "gt") {
                                                                                                                                              +        if (this.displayValue + this.category_size <= this.max_value) {
                                                                                                                                              +          if (this.category_size === 1) {
                                                                                                                                              +            this.displayValue++;
                                                                                                                                              +          } else {
                                                                                                                                              +            this.displayValue += this.category_size;
                                                                                                                                              +          }
                                                                                                                                              +        }
                                                                                                                                              +      } else {
                                                                                                                                              +        if (
                                                                                                                                              +          this.displayValue > this.min_value - this.category_size &&
                                                                                                                                              +          this.displayValue - this.category_size >= this.min_value
                                                                                                                                              +        ) {
                                                                                                                                              +          if (this.displayValue === 1) {
                                                                                                                                              +            this.displayValue--;
                                                                                                                                              +          } else {
                                                                                                                                              +            this.displayValue -= this.category_size;
                                                                                                                                              +          }
                                                                                                                                              +        }
                                                                                                                                              +      }
                                                                                                                                              +    }
                                                                                                                                              +    await this.setValue(this.displayValue);
                                                                                                                                              +    this.triggerActions("changed");
                                                                                                                                              +  }
                                                                                                                                              +
                                                                                                                                              +  getMinOrMaxFromCategoryListItem(item: string): ICategoryList {
                                                                                                                                              +    return {
                                                                                                                                              +      from: Number(item.split("-")[0].trim()),
                                                                                                                                              +      to: Number(item.split("-")[1].trim()),
                                                                                                                                              +    };
                                                                                                                                              +  }
                                                                                                                                              +
                                                                                                                                              +  checkIfContainsNextArrayItem(array: string[], expression: "gt" | "lt") {
                                                                                                                                              +    return expression === "gt"
                                                                                                                                              +      ? this.first_display_term < array.length - 1
                                                                                                                                              +      : this.first_display_term === array.length - 1 ||
                                                                                                                                              +          (this.first_display_term < array.length - 1 && this.first_display_term !== 0);
                                                                                                                                              +  }
                                                                                                                                              +
                                                                                                                                              +  updateData(param: "gt" | "lt") {
                                                                                                                                              +    this.first_display_term =
                                                                                                                                              +      param === "gt" ? (this.first_display_term += 1) : (this.first_display_term -= 1);
                                                                                                                                              +    this.displayValue = this.valuesFromCategoryList[this.first_display_term];
                                                                                                                                              +    this.setValue(this.displayValue);
                                                                                                                                              +  }
                                                                                                                                              +}
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              +
                                                                                                                                              + + + + + + + + +
                                                                                                                                              +
                                                                                                                                              +

                                                                                                                                              results matching ""

                                                                                                                                              +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +

                                                                                                                                                No results matching ""

                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IDisplayGridParams.html b/documentation/docs/generated/interfaces/IDisplayGridParams.html new file mode 100644 index 0000000000..52e83ff327 --- /dev/null +++ b/documentation/docs/generated/interfaces/IDisplayGridParams.html @@ -0,0 +1,453 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                +
                                                                                                                                                + + +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + + + + + + + + + + +
                                                                                                                                                +
                                                                                                                                                +

                                                                                                                                                +

                                                                                                                                                File

                                                                                                                                                +

                                                                                                                                                +

                                                                                                                                                + src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts +

                                                                                                                                                + + + + +
                                                                                                                                                +

                                                                                                                                                Index

                                                                                                                                                + + + + + + + + + +
                                                                                                                                                +
                                                                                                                                                Properties
                                                                                                                                                +
                                                                                                                                                + +
                                                                                                                                                +
                                                                                                                                                + + + +
                                                                                                                                                +

                                                                                                                                                Properties

                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                + + grid_gap + + + + +
                                                                                                                                                + grid_gap: string + +
                                                                                                                                                + Type : string + +
                                                                                                                                                +

                                                                                                                                                Spacing between grid items. +Default '16px'

                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                + + grid_width + + + + +
                                                                                                                                                + grid_width: string + +
                                                                                                                                                + Type : string + +
                                                                                                                                                +

                                                                                                                                                Maximum grid width, if specified will center items in available space. +Default '100%'

                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                + + item_border + + + + +
                                                                                                                                                + item_border: "solid" | "dashed" | "none" + +
                                                                                                                                                + Type : "solid" | "dashed" | "none" + +
                                                                                                                                                + Optional +
                                                                                                                                                +

                                                                                                                                                Item border outline style. +Default: "solid"

                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                + + item_width + + + + +
                                                                                                                                                + item_width: string + +
                                                                                                                                                + Type : string + +
                                                                                                                                                +

                                                                                                                                                Minimum item width, will increase to fit grid. +Default '200px'

                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + +
                                                                                                                                                +
                                                                                                                                                import { Component, Input } from "@angular/core";
                                                                                                                                                +import { TemplateBaseComponent } from "../../base";
                                                                                                                                                +import { FlowTypes, ITemplateRowProps } from "../../../models";
                                                                                                                                                +
                                                                                                                                                +interface IDisplayGridParams {
                                                                                                                                                +  /**
                                                                                                                                                +   * Item border outline style.
                                                                                                                                                +   * Default: "solid"
                                                                                                                                                +   */
                                                                                                                                                +  item_border?: "solid" | "dashed" | "none";
                                                                                                                                                +
                                                                                                                                                +  /**
                                                                                                                                                +   * Minimum item width, will increase to fit grid.
                                                                                                                                                +   * Default '200px'
                                                                                                                                                +   **/
                                                                                                                                                +  item_width: string;
                                                                                                                                                +  /**
                                                                                                                                                +   * Maximum grid width, if specified will center items in available space.
                                                                                                                                                +   * Default '100%'
                                                                                                                                                +   **/
                                                                                                                                                +  grid_width: string;
                                                                                                                                                +  /**
                                                                                                                                                +   * Spacing between grid items.
                                                                                                                                                +   * Default '16px'
                                                                                                                                                +   **/
                                                                                                                                                +  grid_gap: string;
                                                                                                                                                +}
                                                                                                                                                +
                                                                                                                                                +@Component({
                                                                                                                                                +  selector: "plh-display-grid",
                                                                                                                                                +  templateUrl: "./display-grid.component.html",
                                                                                                                                                +  styleUrls: ["./display-grid.component.scss"],
                                                                                                                                                +})
                                                                                                                                                +export class TmplDisplayGridComponent extends TemplateBaseComponent implements ITemplateRowProps {
                                                                                                                                                +  /**
                                                                                                                                                +   * Computed grid style from input parameters
                                                                                                                                                +   * @ignore
                                                                                                                                                +   */
                                                                                                                                                +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                                +  /**
                                                                                                                                                +   * Computed grid style from input parameters
                                                                                                                                                +   *
                                                                                                                                                +   */
                                                                                                                                                +  public itemStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                                +
                                                                                                                                                +  /**
                                                                                                                                                +   * Authoring parameters
                                                                                                                                                +   */
                                                                                                                                                +  public parameter_list: IDisplayGridParams;
                                                                                                                                                +
                                                                                                                                                +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                                                                                +    this._row = row;
                                                                                                                                                +    this.setParams();
                                                                                                                                                +  }
                                                                                                                                                +
                                                                                                                                                +  private setParams() {
                                                                                                                                                +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                +    const { gridStyle, itemStyle } = this.generateStyles();
                                                                                                                                                +    this.gridStyle = gridStyle;
                                                                                                                                                +    this.itemStyle = itemStyle;
                                                                                                                                                +  }
                                                                                                                                                +
                                                                                                                                                +  /**
                                                                                                                                                +   * Create a list of styles to be passed into ngStyle for grid and item components
                                                                                                                                                +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                                                                                +   */
                                                                                                                                                +  private generateStyles() {
                                                                                                                                                +    const minItemWidth = this.parameter_list.item_width || "200px";
                                                                                                                                                +    const maxGridWidth = this.parameter_list.grid_width || "100%";
                                                                                                                                                +    const gridGap = this.parameter_list.grid_gap || "16px";
                                                                                                                                                +    const borderStyle = this.parameter_list.item_border || "solid";
                                                                                                                                                +
                                                                                                                                                +    const gridStyle: Partial<CSSStyleDeclaration> = {
                                                                                                                                                +      // center grid with maximum width
                                                                                                                                                +      maxWidth: maxGridWidth,
                                                                                                                                                +      margin: "auto",
                                                                                                                                                +      // apply fixed gap between grid items
                                                                                                                                                +      gap: gridGap,
                                                                                                                                                +      // fit columns with target item width
                                                                                                                                                +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                                                                                +      // make all rows same height
                                                                                                                                                +      gridAutoRows: "1fr",
                                                                                                                                                +    };
                                                                                                                                                +
                                                                                                                                                +    const itemStyle: Partial<CSSStyleDeclaration> = {
                                                                                                                                                +      // assign item border outline style
                                                                                                                                                +      borderStyle,
                                                                                                                                                +    };
                                                                                                                                                +    return { gridStyle, itemStyle };
                                                                                                                                                +  }
                                                                                                                                                +}
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                +
                                                                                                                                                + + + + + + + + +
                                                                                                                                                +
                                                                                                                                                +

                                                                                                                                                results matching ""

                                                                                                                                                +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +

                                                                                                                                                  No results matching ""

                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + +
                                                                                                                                                  +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IEnketoFormData.html b/documentation/docs/generated/interfaces/IEnketoFormData.html new file mode 100644 index 0000000000..d433ce49e4 --- /dev/null +++ b/documentation/docs/generated/interfaces/IEnketoFormData.html @@ -0,0 +1,695 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                  +
                                                                                                                                                  + + +
                                                                                                                                                  +
                                                                                                                                                  + + + + + + + + + + + + + + + + + +
                                                                                                                                                  +
                                                                                                                                                  +

                                                                                                                                                  +

                                                                                                                                                  File

                                                                                                                                                  +

                                                                                                                                                  +

                                                                                                                                                  + src/app/shared/components/template/components/odk-form/odk-form.component.ts +

                                                                                                                                                  + + +

                                                                                                                                                  +

                                                                                                                                                  Description

                                                                                                                                                  +

                                                                                                                                                  +

                                                                                                                                                  +

                                                                                                                                                  Enketo-transformed form representation

                                                                                                                                                  + +

                                                                                                                                                  + + +
                                                                                                                                                  +

                                                                                                                                                  Index

                                                                                                                                                  + + + + + + + + + +
                                                                                                                                                  +
                                                                                                                                                  Properties
                                                                                                                                                  +
                                                                                                                                                  + +
                                                                                                                                                  +
                                                                                                                                                  + + + +
                                                                                                                                                  +

                                                                                                                                                  Properties

                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + enketoId + + + + +
                                                                                                                                                  + enketoId: string + +
                                                                                                                                                  + Type : string + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + externalData + + + + +
                                                                                                                                                  + externalData: [] + +
                                                                                                                                                  + Type : [] + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + form + + + + +
                                                                                                                                                  + form: string + +
                                                                                                                                                  + Type : string + +
                                                                                                                                                  +

                                                                                                                                                  html string representation of form

                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + hash + + + + +
                                                                                                                                                  + hash: string + +
                                                                                                                                                  + Type : string + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + languageMap + + + + +
                                                                                                                                                  + languageMap: literal type + +
                                                                                                                                                  + Type : literal type + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + maxSize + + + + +
                                                                                                                                                  + maxSize: number + +
                                                                                                                                                  + Type : number + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + media + + + + +
                                                                                                                                                  + media: literal type + +
                                                                                                                                                  + Type : literal type + +
                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + model + + + + +
                                                                                                                                                  + model: string + +
                                                                                                                                                  + Type : string + +
                                                                                                                                                  +

                                                                                                                                                  xml string representation of model

                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + + + + + + + + + + + + + + + + +
                                                                                                                                                  + + theme + + + + +
                                                                                                                                                  + theme: + +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + + +
                                                                                                                                                  +
                                                                                                                                                  import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from "@angular/core";
                                                                                                                                                  +
                                                                                                                                                  +import Events from "./libs/enketo/js/event";
                                                                                                                                                  +import { Form } from "./libs/enketo/js/form";
                                                                                                                                                  +import { TemplateBaseComponent } from "../base";
                                                                                                                                                  +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                                                  +
                                                                                                                                                  +/** Enketo-transformed form representation */
                                                                                                                                                  +interface IEnketoFormData {
                                                                                                                                                  +  enketoId: string;
                                                                                                                                                  +  externalData: [];
                                                                                                                                                  +  /** html string representation of form */
                                                                                                                                                  +  form: string;
                                                                                                                                                  +  hash: string;
                                                                                                                                                  +  languageMap: {};
                                                                                                                                                  +  maxSize: number;
                                                                                                                                                  +  media: {};
                                                                                                                                                  +  /** xml string representation of model */
                                                                                                                                                  +  model: string;
                                                                                                                                                  +  theme: "grid";
                                                                                                                                                  +}
                                                                                                                                                  +
                                                                                                                                                  +interface IFormEntry {
                                                                                                                                                  +  created: number;
                                                                                                                                                  +  draft: boolean;
                                                                                                                                                  +  enketoId: string;
                                                                                                                                                  +  files: any[];
                                                                                                                                                  +  instanceId: string;
                                                                                                                                                  +  name: string;
                                                                                                                                                  +  // TODO - check if actually updated
                                                                                                                                                  +  updated: number;
                                                                                                                                                  +  xml: string;
                                                                                                                                                  +}
                                                                                                                                                  +
                                                                                                                                                  +interface IEventFormSaved {
                                                                                                                                                  +  entry: IFormEntry;
                                                                                                                                                  +}
                                                                                                                                                  +
                                                                                                                                                  +interface IODKFormComponentParameters {
                                                                                                                                                  +  /**
                                                                                                                                                  +   * Path to asset file containing form data in enketo-transformed json format
                                                                                                                                                  +   */
                                                                                                                                                  +  form_asset?: string;
                                                                                                                                                  +}
                                                                                                                                                  +
                                                                                                                                                  +@Component({
                                                                                                                                                  +  selector: "tmpl-odk-form",
                                                                                                                                                  +  templateUrl: "./odk-form.component.html",
                                                                                                                                                  +  styleUrls: ["./odk-form.component.scss"],
                                                                                                                                                  +  encapsulation: ViewEncapsulation.None,
                                                                                                                                                  +})
                                                                                                                                                  +/**
                                                                                                                                                  + * A lightweight port of enketo-core to render a form within an angular component
                                                                                                                                                  + *
                                                                                                                                                  + * NOTE - this component is also under development as part of an external repo,
                                                                                                                                                  + * and as such the implementation included may be lacking features
                                                                                                                                                  + *
                                                                                                                                                  + * It is preferable to import from external project when available to remove additional
                                                                                                                                                  + * imports as noted below
                                                                                                                                                  + *
                                                                                                                                                  + * Opt-Out (additional changes to make if removing component)
                                                                                                                                                  + * - Remove modules:
                                                                                                                                                  + *   jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge
                                                                                                                                                  + * - Remove js file import in tsconfig.app.json
                                                                                                                                                  + * - Reduce build budget styles 200kb -> 16kb
                                                                                                                                                  + * - Reduce build budget js 5MB -> 4MB
                                                                                                                                                  + */
                                                                                                                                                  +export class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                                                  +  /** Authoring parameters */
                                                                                                                                                  +  public parameter_list: IODKFormComponentParameters;
                                                                                                                                                  +
                                                                                                                                                  +  /**
                                                                                                                                                  +   * Form container element binding to render form
                                                                                                                                                  +   * @ignore
                                                                                                                                                  +   */
                                                                                                                                                  +  @ViewChild("formContainerEl", { static: true }) formContainerEl: ElementRef<HTMLDivElement>;
                                                                                                                                                  +
                                                                                                                                                  +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                                                                                  +    super();
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  ngOnInit() {
                                                                                                                                                  +    this.processParameterList();
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  private async processParameterList() {
                                                                                                                                                  +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                  +    // load form from form_asset parameter
                                                                                                                                                  +    const { form_asset } = this.parameter_list;
                                                                                                                                                  +    if (!form_asset) {
                                                                                                                                                  +      console.error("[odk_form] form_asset parameter required");
                                                                                                                                                  +      return;
                                                                                                                                                  +    }
                                                                                                                                                  +    const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);
                                                                                                                                                  +    if (!formData) {
                                                                                                                                                  +      console.error("[odk_form] form_asset does not exist");
                                                                                                                                                  +      return;
                                                                                                                                                  +    }
                                                                                                                                                  +    this.loadForm(formData);
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  private enketoForm: Form;
                                                                                                                                                  +
                                                                                                                                                  +  public async save(opts = { draft: false }) {
                                                                                                                                                  +    await this.setValue(this.xmlFormValue);
                                                                                                                                                  +    await this.triggerActions("changed");
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  private get xmlFormValue() {
                                                                                                                                                  +    return this.enketoForm.getDataStr();
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  private async handleEventDataUpdate(e: ReturnType<typeof Events.DataUpdate>) {
                                                                                                                                                  +    await this.setValue(this.xmlFormValue);
                                                                                                                                                  +    await this.triggerActions("changed");
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  private async handleEventXmlFormChange(e: ReturnType<typeof Events.XFormsValueChanged>) {
                                                                                                                                                  +    // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js
                                                                                                                                                  +    // await this.setValue(this.xmlFormValue);
                                                                                                                                                  +  }
                                                                                                                                                  +
                                                                                                                                                  +  /**
                                                                                                                                                  +   * Load the form xml and data models and render intial form components
                                                                                                                                                  +   * https://github.com/enketo/enketo-core#usage-as-a-library
                                                                                                                                                  +   */
                                                                                                                                                  +  private loadForm(formData: IEnketoFormData) {
                                                                                                                                                  +    const { formContainerEl } = this;
                                                                                                                                                  +    const { form, model } = formData;
                                                                                                                                                  +    console.log({ form, model, formContainerEl });
                                                                                                                                                  +    if (form && model && formContainerEl) {
                                                                                                                                                  +      this.formContainerEl.nativeElement.innerHTML = form;
                                                                                                                                                  +      const formEl = this.formContainerEl.nativeElement.querySelector("form");
                                                                                                                                                  +      if (formEl) {
                                                                                                                                                  +        this.enketoForm = new Form(formEl, model, {});
                                                                                                                                                  +        // Initialize the form and capture any load errors
                                                                                                                                                  +        let loadErrors = this.enketoForm.init();
                                                                                                                                                  +        if (loadErrors.length > 0) {
                                                                                                                                                  +          console.error(loadErrors);
                                                                                                                                                  +        }
                                                                                                                                                  +        // If desired, scroll to a specific question with any XPath location expression,
                                                                                                                                                  +        // and aggregate any loadErrors.
                                                                                                                                                  +        loadErrors = loadErrors.concat(this.enketoForm.goTo("//repeat[3]/node"));
                                                                                                                                                  +
                                                                                                                                                  +        // Additional events can be bound directly to form (as opposed to component-propogated)
                                                                                                                                                  +        this.enketoForm.model.events.addEventListener(
                                                                                                                                                  +          Events.DataUpdate().type,
                                                                                                                                                  +          this.handleEventDataUpdate.bind(this)
                                                                                                                                                  +        );
                                                                                                                                                  +
                                                                                                                                                  +        // Extract updated form xml on change (triggered at document and form level)
                                                                                                                                                  +        this.enketoForm.view.html.addEventListener(
                                                                                                                                                  +          Events.XFormsValueChanged().type,
                                                                                                                                                  +          this.handleEventXmlFormChange.bind(this)
                                                                                                                                                  +        );
                                                                                                                                                  +      }
                                                                                                                                                  +    }
                                                                                                                                                  +  }
                                                                                                                                                  +}
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  +
                                                                                                                                                  + + + + + + + + +
                                                                                                                                                  +
                                                                                                                                                  +

                                                                                                                                                  results matching ""

                                                                                                                                                  +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +

                                                                                                                                                    No results matching ""

                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    + +
                                                                                                                                                    +
                                                                                                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IEventFormSaved.html b/documentation/docs/generated/interfaces/IEventFormSaved.html new file mode 100644 index 0000000000..0bc8ff98b1 --- /dev/null +++ b/documentation/docs/generated/interfaces/IEventFormSaved.html @@ -0,0 +1,370 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                    +
                                                                                                                                                    + + +
                                                                                                                                                    +
                                                                                                                                                    + + + + + + + + + + + + + + + + + +
                                                                                                                                                    +
                                                                                                                                                    +

                                                                                                                                                    +

                                                                                                                                                    File

                                                                                                                                                    +

                                                                                                                                                    +

                                                                                                                                                    + src/app/shared/components/template/components/odk-form/odk-form.component.ts +

                                                                                                                                                    + + + + +
                                                                                                                                                    +

                                                                                                                                                    Index

                                                                                                                                                    + + + + + + + + + +
                                                                                                                                                    +
                                                                                                                                                    Properties
                                                                                                                                                    +
                                                                                                                                                    + +
                                                                                                                                                    +
                                                                                                                                                    + + + +
                                                                                                                                                    +

                                                                                                                                                    Properties

                                                                                                                                                    + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                    + + entry + + + + +
                                                                                                                                                    + entry: IFormEntry + +
                                                                                                                                                    + Type : IFormEntry + +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    + + +
                                                                                                                                                    +
                                                                                                                                                    import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from "@angular/core";
                                                                                                                                                    +
                                                                                                                                                    +import Events from "./libs/enketo/js/event";
                                                                                                                                                    +import { Form } from "./libs/enketo/js/form";
                                                                                                                                                    +import { TemplateBaseComponent } from "../base";
                                                                                                                                                    +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                                                    +
                                                                                                                                                    +/** Enketo-transformed form representation */
                                                                                                                                                    +interface IEnketoFormData {
                                                                                                                                                    +  enketoId: string;
                                                                                                                                                    +  externalData: [];
                                                                                                                                                    +  /** html string representation of form */
                                                                                                                                                    +  form: string;
                                                                                                                                                    +  hash: string;
                                                                                                                                                    +  languageMap: {};
                                                                                                                                                    +  maxSize: number;
                                                                                                                                                    +  media: {};
                                                                                                                                                    +  /** xml string representation of model */
                                                                                                                                                    +  model: string;
                                                                                                                                                    +  theme: "grid";
                                                                                                                                                    +}
                                                                                                                                                    +
                                                                                                                                                    +interface IFormEntry {
                                                                                                                                                    +  created: number;
                                                                                                                                                    +  draft: boolean;
                                                                                                                                                    +  enketoId: string;
                                                                                                                                                    +  files: any[];
                                                                                                                                                    +  instanceId: string;
                                                                                                                                                    +  name: string;
                                                                                                                                                    +  // TODO - check if actually updated
                                                                                                                                                    +  updated: number;
                                                                                                                                                    +  xml: string;
                                                                                                                                                    +}
                                                                                                                                                    +
                                                                                                                                                    +interface IEventFormSaved {
                                                                                                                                                    +  entry: IFormEntry;
                                                                                                                                                    +}
                                                                                                                                                    +
                                                                                                                                                    +interface IODKFormComponentParameters {
                                                                                                                                                    +  /**
                                                                                                                                                    +   * Path to asset file containing form data in enketo-transformed json format
                                                                                                                                                    +   */
                                                                                                                                                    +  form_asset?: string;
                                                                                                                                                    +}
                                                                                                                                                    +
                                                                                                                                                    +@Component({
                                                                                                                                                    +  selector: "tmpl-odk-form",
                                                                                                                                                    +  templateUrl: "./odk-form.component.html",
                                                                                                                                                    +  styleUrls: ["./odk-form.component.scss"],
                                                                                                                                                    +  encapsulation: ViewEncapsulation.None,
                                                                                                                                                    +})
                                                                                                                                                    +/**
                                                                                                                                                    + * A lightweight port of enketo-core to render a form within an angular component
                                                                                                                                                    + *
                                                                                                                                                    + * NOTE - this component is also under development as part of an external repo,
                                                                                                                                                    + * and as such the implementation included may be lacking features
                                                                                                                                                    + *
                                                                                                                                                    + * It is preferable to import from external project when available to remove additional
                                                                                                                                                    + * imports as noted below
                                                                                                                                                    + *
                                                                                                                                                    + * Opt-Out (additional changes to make if removing component)
                                                                                                                                                    + * - Remove modules:
                                                                                                                                                    + *   jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge
                                                                                                                                                    + * - Remove js file import in tsconfig.app.json
                                                                                                                                                    + * - Reduce build budget styles 200kb -> 16kb
                                                                                                                                                    + * - Reduce build budget js 5MB -> 4MB
                                                                                                                                                    + */
                                                                                                                                                    +export class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                                                    +  /** Authoring parameters */
                                                                                                                                                    +  public parameter_list: IODKFormComponentParameters;
                                                                                                                                                    +
                                                                                                                                                    +  /**
                                                                                                                                                    +   * Form container element binding to render form
                                                                                                                                                    +   * @ignore
                                                                                                                                                    +   */
                                                                                                                                                    +  @ViewChild("formContainerEl", { static: true }) formContainerEl: ElementRef<HTMLDivElement>;
                                                                                                                                                    +
                                                                                                                                                    +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                                                                                    +    super();
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  ngOnInit() {
                                                                                                                                                    +    this.processParameterList();
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  private async processParameterList() {
                                                                                                                                                    +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                    +    // load form from form_asset parameter
                                                                                                                                                    +    const { form_asset } = this.parameter_list;
                                                                                                                                                    +    if (!form_asset) {
                                                                                                                                                    +      console.error("[odk_form] form_asset parameter required");
                                                                                                                                                    +      return;
                                                                                                                                                    +    }
                                                                                                                                                    +    const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);
                                                                                                                                                    +    if (!formData) {
                                                                                                                                                    +      console.error("[odk_form] form_asset does not exist");
                                                                                                                                                    +      return;
                                                                                                                                                    +    }
                                                                                                                                                    +    this.loadForm(formData);
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  private enketoForm: Form;
                                                                                                                                                    +
                                                                                                                                                    +  public async save(opts = { draft: false }) {
                                                                                                                                                    +    await this.setValue(this.xmlFormValue);
                                                                                                                                                    +    await this.triggerActions("changed");
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  private get xmlFormValue() {
                                                                                                                                                    +    return this.enketoForm.getDataStr();
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  private async handleEventDataUpdate(e: ReturnType<typeof Events.DataUpdate>) {
                                                                                                                                                    +    await this.setValue(this.xmlFormValue);
                                                                                                                                                    +    await this.triggerActions("changed");
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  private async handleEventXmlFormChange(e: ReturnType<typeof Events.XFormsValueChanged>) {
                                                                                                                                                    +    // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js
                                                                                                                                                    +    // await this.setValue(this.xmlFormValue);
                                                                                                                                                    +  }
                                                                                                                                                    +
                                                                                                                                                    +  /**
                                                                                                                                                    +   * Load the form xml and data models and render intial form components
                                                                                                                                                    +   * https://github.com/enketo/enketo-core#usage-as-a-library
                                                                                                                                                    +   */
                                                                                                                                                    +  private loadForm(formData: IEnketoFormData) {
                                                                                                                                                    +    const { formContainerEl } = this;
                                                                                                                                                    +    const { form, model } = formData;
                                                                                                                                                    +    console.log({ form, model, formContainerEl });
                                                                                                                                                    +    if (form && model && formContainerEl) {
                                                                                                                                                    +      this.formContainerEl.nativeElement.innerHTML = form;
                                                                                                                                                    +      const formEl = this.formContainerEl.nativeElement.querySelector("form");
                                                                                                                                                    +      if (formEl) {
                                                                                                                                                    +        this.enketoForm = new Form(formEl, model, {});
                                                                                                                                                    +        // Initialize the form and capture any load errors
                                                                                                                                                    +        let loadErrors = this.enketoForm.init();
                                                                                                                                                    +        if (loadErrors.length > 0) {
                                                                                                                                                    +          console.error(loadErrors);
                                                                                                                                                    +        }
                                                                                                                                                    +        // If desired, scroll to a specific question with any XPath location expression,
                                                                                                                                                    +        // and aggregate any loadErrors.
                                                                                                                                                    +        loadErrors = loadErrors.concat(this.enketoForm.goTo("//repeat[3]/node"));
                                                                                                                                                    +
                                                                                                                                                    +        // Additional events can be bound directly to form (as opposed to component-propogated)
                                                                                                                                                    +        this.enketoForm.model.events.addEventListener(
                                                                                                                                                    +          Events.DataUpdate().type,
                                                                                                                                                    +          this.handleEventDataUpdate.bind(this)
                                                                                                                                                    +        );
                                                                                                                                                    +
                                                                                                                                                    +        // Extract updated form xml on change (triggered at document and form level)
                                                                                                                                                    +        this.enketoForm.view.html.addEventListener(
                                                                                                                                                    +          Events.XFormsValueChanged().type,
                                                                                                                                                    +          this.handleEventXmlFormChange.bind(this)
                                                                                                                                                    +        );
                                                                                                                                                    +      }
                                                                                                                                                    +    }
                                                                                                                                                    +  }
                                                                                                                                                    +}
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    +
                                                                                                                                                    + + + + + + + + +
                                                                                                                                                    +
                                                                                                                                                    +

                                                                                                                                                    results matching ""

                                                                                                                                                    +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +

                                                                                                                                                      No results matching ""

                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      + +
                                                                                                                                                      +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IFormEntry.html b/documentation/docs/generated/interfaces/IFormEntry.html new file mode 100644 index 0000000000..ab71754f50 --- /dev/null +++ b/documentation/docs/generated/interfaces/IFormEntry.html @@ -0,0 +1,643 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                      +
                                                                                                                                                      + + +
                                                                                                                                                      +
                                                                                                                                                      + + + + + + + + + + + + + + + + + +
                                                                                                                                                      +
                                                                                                                                                      +

                                                                                                                                                      +

                                                                                                                                                      File

                                                                                                                                                      +

                                                                                                                                                      +

                                                                                                                                                      + src/app/shared/components/template/components/odk-form/odk-form.component.ts +

                                                                                                                                                      + + + + +
                                                                                                                                                      +

                                                                                                                                                      Index

                                                                                                                                                      + + + + + + + + + +
                                                                                                                                                      +
                                                                                                                                                      Properties
                                                                                                                                                      +
                                                                                                                                                      + +
                                                                                                                                                      +
                                                                                                                                                      + + + +
                                                                                                                                                      +

                                                                                                                                                      Properties

                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + created + + + + +
                                                                                                                                                      + created: number + +
                                                                                                                                                      + Type : number + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + draft + + + + +
                                                                                                                                                      + draft: boolean + +
                                                                                                                                                      + Type : boolean + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + enketoId + + + + +
                                                                                                                                                      + enketoId: string + +
                                                                                                                                                      + Type : string + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + files + + + + +
                                                                                                                                                      + files: any[] + +
                                                                                                                                                      + Type : any[] + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + instanceId + + + + +
                                                                                                                                                      + instanceId: string + +
                                                                                                                                                      + Type : string + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + name + + + + +
                                                                                                                                                      + name: string + +
                                                                                                                                                      + Type : string + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + updated + + + + +
                                                                                                                                                      + updated: number + +
                                                                                                                                                      + Type : number + +
                                                                                                                                                      + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                      + + xml + + + + +
                                                                                                                                                      + xml: string + +
                                                                                                                                                      + Type : string + +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      + + +
                                                                                                                                                      +
                                                                                                                                                      import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from "@angular/core";
                                                                                                                                                      +
                                                                                                                                                      +import Events from "./libs/enketo/js/event";
                                                                                                                                                      +import { Form } from "./libs/enketo/js/form";
                                                                                                                                                      +import { TemplateBaseComponent } from "../base";
                                                                                                                                                      +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                                                      +
                                                                                                                                                      +/** Enketo-transformed form representation */
                                                                                                                                                      +interface IEnketoFormData {
                                                                                                                                                      +  enketoId: string;
                                                                                                                                                      +  externalData: [];
                                                                                                                                                      +  /** html string representation of form */
                                                                                                                                                      +  form: string;
                                                                                                                                                      +  hash: string;
                                                                                                                                                      +  languageMap: {};
                                                                                                                                                      +  maxSize: number;
                                                                                                                                                      +  media: {};
                                                                                                                                                      +  /** xml string representation of model */
                                                                                                                                                      +  model: string;
                                                                                                                                                      +  theme: "grid";
                                                                                                                                                      +}
                                                                                                                                                      +
                                                                                                                                                      +interface IFormEntry {
                                                                                                                                                      +  created: number;
                                                                                                                                                      +  draft: boolean;
                                                                                                                                                      +  enketoId: string;
                                                                                                                                                      +  files: any[];
                                                                                                                                                      +  instanceId: string;
                                                                                                                                                      +  name: string;
                                                                                                                                                      +  // TODO - check if actually updated
                                                                                                                                                      +  updated: number;
                                                                                                                                                      +  xml: string;
                                                                                                                                                      +}
                                                                                                                                                      +
                                                                                                                                                      +interface IEventFormSaved {
                                                                                                                                                      +  entry: IFormEntry;
                                                                                                                                                      +}
                                                                                                                                                      +
                                                                                                                                                      +interface IODKFormComponentParameters {
                                                                                                                                                      +  /**
                                                                                                                                                      +   * Path to asset file containing form data in enketo-transformed json format
                                                                                                                                                      +   */
                                                                                                                                                      +  form_asset?: string;
                                                                                                                                                      +}
                                                                                                                                                      +
                                                                                                                                                      +@Component({
                                                                                                                                                      +  selector: "tmpl-odk-form",
                                                                                                                                                      +  templateUrl: "./odk-form.component.html",
                                                                                                                                                      +  styleUrls: ["./odk-form.component.scss"],
                                                                                                                                                      +  encapsulation: ViewEncapsulation.None,
                                                                                                                                                      +})
                                                                                                                                                      +/**
                                                                                                                                                      + * A lightweight port of enketo-core to render a form within an angular component
                                                                                                                                                      + *
                                                                                                                                                      + * NOTE - this component is also under development as part of an external repo,
                                                                                                                                                      + * and as such the implementation included may be lacking features
                                                                                                                                                      + *
                                                                                                                                                      + * It is preferable to import from external project when available to remove additional
                                                                                                                                                      + * imports as noted below
                                                                                                                                                      + *
                                                                                                                                                      + * Opt-Out (additional changes to make if removing component)
                                                                                                                                                      + * - Remove modules:
                                                                                                                                                      + *   jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge
                                                                                                                                                      + * - Remove js file import in tsconfig.app.json
                                                                                                                                                      + * - Reduce build budget styles 200kb -> 16kb
                                                                                                                                                      + * - Reduce build budget js 5MB -> 4MB
                                                                                                                                                      + */
                                                                                                                                                      +export class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                                                      +  /** Authoring parameters */
                                                                                                                                                      +  public parameter_list: IODKFormComponentParameters;
                                                                                                                                                      +
                                                                                                                                                      +  /**
                                                                                                                                                      +   * Form container element binding to render form
                                                                                                                                                      +   * @ignore
                                                                                                                                                      +   */
                                                                                                                                                      +  @ViewChild("formContainerEl", { static: true }) formContainerEl: ElementRef<HTMLDivElement>;
                                                                                                                                                      +
                                                                                                                                                      +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                                                                                      +    super();
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  ngOnInit() {
                                                                                                                                                      +    this.processParameterList();
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  private async processParameterList() {
                                                                                                                                                      +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                      +    // load form from form_asset parameter
                                                                                                                                                      +    const { form_asset } = this.parameter_list;
                                                                                                                                                      +    if (!form_asset) {
                                                                                                                                                      +      console.error("[odk_form] form_asset parameter required");
                                                                                                                                                      +      return;
                                                                                                                                                      +    }
                                                                                                                                                      +    const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);
                                                                                                                                                      +    if (!formData) {
                                                                                                                                                      +      console.error("[odk_form] form_asset does not exist");
                                                                                                                                                      +      return;
                                                                                                                                                      +    }
                                                                                                                                                      +    this.loadForm(formData);
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  private enketoForm: Form;
                                                                                                                                                      +
                                                                                                                                                      +  public async save(opts = { draft: false }) {
                                                                                                                                                      +    await this.setValue(this.xmlFormValue);
                                                                                                                                                      +    await this.triggerActions("changed");
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  private get xmlFormValue() {
                                                                                                                                                      +    return this.enketoForm.getDataStr();
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  private async handleEventDataUpdate(e: ReturnType<typeof Events.DataUpdate>) {
                                                                                                                                                      +    await this.setValue(this.xmlFormValue);
                                                                                                                                                      +    await this.triggerActions("changed");
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  private async handleEventXmlFormChange(e: ReturnType<typeof Events.XFormsValueChanged>) {
                                                                                                                                                      +    // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js
                                                                                                                                                      +    // await this.setValue(this.xmlFormValue);
                                                                                                                                                      +  }
                                                                                                                                                      +
                                                                                                                                                      +  /**
                                                                                                                                                      +   * Load the form xml and data models and render intial form components
                                                                                                                                                      +   * https://github.com/enketo/enketo-core#usage-as-a-library
                                                                                                                                                      +   */
                                                                                                                                                      +  private loadForm(formData: IEnketoFormData) {
                                                                                                                                                      +    const { formContainerEl } = this;
                                                                                                                                                      +    const { form, model } = formData;
                                                                                                                                                      +    console.log({ form, model, formContainerEl });
                                                                                                                                                      +    if (form && model && formContainerEl) {
                                                                                                                                                      +      this.formContainerEl.nativeElement.innerHTML = form;
                                                                                                                                                      +      const formEl = this.formContainerEl.nativeElement.querySelector("form");
                                                                                                                                                      +      if (formEl) {
                                                                                                                                                      +        this.enketoForm = new Form(formEl, model, {});
                                                                                                                                                      +        // Initialize the form and capture any load errors
                                                                                                                                                      +        let loadErrors = this.enketoForm.init();
                                                                                                                                                      +        if (loadErrors.length > 0) {
                                                                                                                                                      +          console.error(loadErrors);
                                                                                                                                                      +        }
                                                                                                                                                      +        // If desired, scroll to a specific question with any XPath location expression,
                                                                                                                                                      +        // and aggregate any loadErrors.
                                                                                                                                                      +        loadErrors = loadErrors.concat(this.enketoForm.goTo("//repeat[3]/node"));
                                                                                                                                                      +
                                                                                                                                                      +        // Additional events can be bound directly to form (as opposed to component-propogated)
                                                                                                                                                      +        this.enketoForm.model.events.addEventListener(
                                                                                                                                                      +          Events.DataUpdate().type,
                                                                                                                                                      +          this.handleEventDataUpdate.bind(this)
                                                                                                                                                      +        );
                                                                                                                                                      +
                                                                                                                                                      +        // Extract updated form xml on change (triggered at document and form level)
                                                                                                                                                      +        this.enketoForm.view.html.addEventListener(
                                                                                                                                                      +          Events.XFormsValueChanged().type,
                                                                                                                                                      +          this.handleEventXmlFormChange.bind(this)
                                                                                                                                                      +        );
                                                                                                                                                      +      }
                                                                                                                                                      +    }
                                                                                                                                                      +  }
                                                                                                                                                      +}
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      +
                                                                                                                                                      + + + + + + + + +
                                                                                                                                                      +
                                                                                                                                                      +

                                                                                                                                                      results matching ""

                                                                                                                                                      +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +

                                                                                                                                                        No results matching ""

                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        + +
                                                                                                                                                        +
                                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IODKFormComponentParameters.html b/documentation/docs/generated/interfaces/IODKFormComponentParameters.html new file mode 100644 index 0000000000..0933c4f8b5 --- /dev/null +++ b/documentation/docs/generated/interfaces/IODKFormComponentParameters.html @@ -0,0 +1,382 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                        +
                                                                                                                                                        + + +
                                                                                                                                                        +
                                                                                                                                                        + + + + + + + + + + + + + + + + + +
                                                                                                                                                        +
                                                                                                                                                        +

                                                                                                                                                        +

                                                                                                                                                        File

                                                                                                                                                        +

                                                                                                                                                        +

                                                                                                                                                        + src/app/shared/components/template/components/odk-form/odk-form.component.ts +

                                                                                                                                                        + + + + +
                                                                                                                                                        +

                                                                                                                                                        Index

                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                        +
                                                                                                                                                        Properties
                                                                                                                                                        +
                                                                                                                                                        + +
                                                                                                                                                        +
                                                                                                                                                        + + + +
                                                                                                                                                        +

                                                                                                                                                        Properties

                                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                        + + form_asset + + + + +
                                                                                                                                                        + form_asset: string + +
                                                                                                                                                        + Type : string + +
                                                                                                                                                        + Optional +
                                                                                                                                                        +

                                                                                                                                                        Path to asset file containing form data in enketo-transformed json format

                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        + + +
                                                                                                                                                        +
                                                                                                                                                        import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from "@angular/core";
                                                                                                                                                        +
                                                                                                                                                        +import Events from "./libs/enketo/js/event";
                                                                                                                                                        +import { Form } from "./libs/enketo/js/form";
                                                                                                                                                        +import { TemplateBaseComponent } from "../base";
                                                                                                                                                        +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                                                        +
                                                                                                                                                        +/** Enketo-transformed form representation */
                                                                                                                                                        +interface IEnketoFormData {
                                                                                                                                                        +  enketoId: string;
                                                                                                                                                        +  externalData: [];
                                                                                                                                                        +  /** html string representation of form */
                                                                                                                                                        +  form: string;
                                                                                                                                                        +  hash: string;
                                                                                                                                                        +  languageMap: {};
                                                                                                                                                        +  maxSize: number;
                                                                                                                                                        +  media: {};
                                                                                                                                                        +  /** xml string representation of model */
                                                                                                                                                        +  model: string;
                                                                                                                                                        +  theme: "grid";
                                                                                                                                                        +}
                                                                                                                                                        +
                                                                                                                                                        +interface IFormEntry {
                                                                                                                                                        +  created: number;
                                                                                                                                                        +  draft: boolean;
                                                                                                                                                        +  enketoId: string;
                                                                                                                                                        +  files: any[];
                                                                                                                                                        +  instanceId: string;
                                                                                                                                                        +  name: string;
                                                                                                                                                        +  // TODO - check if actually updated
                                                                                                                                                        +  updated: number;
                                                                                                                                                        +  xml: string;
                                                                                                                                                        +}
                                                                                                                                                        +
                                                                                                                                                        +interface IEventFormSaved {
                                                                                                                                                        +  entry: IFormEntry;
                                                                                                                                                        +}
                                                                                                                                                        +
                                                                                                                                                        +interface IODKFormComponentParameters {
                                                                                                                                                        +  /**
                                                                                                                                                        +   * Path to asset file containing form data in enketo-transformed json format
                                                                                                                                                        +   */
                                                                                                                                                        +  form_asset?: string;
                                                                                                                                                        +}
                                                                                                                                                        +
                                                                                                                                                        +@Component({
                                                                                                                                                        +  selector: "tmpl-odk-form",
                                                                                                                                                        +  templateUrl: "./odk-form.component.html",
                                                                                                                                                        +  styleUrls: ["./odk-form.component.scss"],
                                                                                                                                                        +  encapsulation: ViewEncapsulation.None,
                                                                                                                                                        +})
                                                                                                                                                        +/**
                                                                                                                                                        + * A lightweight port of enketo-core to render a form within an angular component
                                                                                                                                                        + *
                                                                                                                                                        + * NOTE - this component is also under development as part of an external repo,
                                                                                                                                                        + * and as such the implementation included may be lacking features
                                                                                                                                                        + *
                                                                                                                                                        + * It is preferable to import from external project when available to remove additional
                                                                                                                                                        + * imports as noted below
                                                                                                                                                        + *
                                                                                                                                                        + * Opt-Out (additional changes to make if removing component)
                                                                                                                                                        + * - Remove modules:
                                                                                                                                                        + *   jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge
                                                                                                                                                        + * - Remove js file import in tsconfig.app.json
                                                                                                                                                        + * - Reduce build budget styles 200kb -> 16kb
                                                                                                                                                        + * - Reduce build budget js 5MB -> 4MB
                                                                                                                                                        + */
                                                                                                                                                        +export class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {
                                                                                                                                                        +  /** Authoring parameters */
                                                                                                                                                        +  public parameter_list: IODKFormComponentParameters;
                                                                                                                                                        +
                                                                                                                                                        +  /**
                                                                                                                                                        +   * Form container element binding to render form
                                                                                                                                                        +   * @ignore
                                                                                                                                                        +   */
                                                                                                                                                        +  @ViewChild("formContainerEl", { static: true }) formContainerEl: ElementRef<HTMLDivElement>;
                                                                                                                                                        +
                                                                                                                                                        +  constructor(private templateAssetService: TemplateAssetService) {
                                                                                                                                                        +    super();
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  ngOnInit() {
                                                                                                                                                        +    this.processParameterList();
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  private async processParameterList() {
                                                                                                                                                        +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                        +    // load form from form_asset parameter
                                                                                                                                                        +    const { form_asset } = this.parameter_list;
                                                                                                                                                        +    if (!form_asset) {
                                                                                                                                                        +      console.error("[odk_form] form_asset parameter required");
                                                                                                                                                        +      return;
                                                                                                                                                        +    }
                                                                                                                                                        +    const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);
                                                                                                                                                        +    if (!formData) {
                                                                                                                                                        +      console.error("[odk_form] form_asset does not exist");
                                                                                                                                                        +      return;
                                                                                                                                                        +    }
                                                                                                                                                        +    this.loadForm(formData);
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  private enketoForm: Form;
                                                                                                                                                        +
                                                                                                                                                        +  public async save(opts = { draft: false }) {
                                                                                                                                                        +    await this.setValue(this.xmlFormValue);
                                                                                                                                                        +    await this.triggerActions("changed");
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  private get xmlFormValue() {
                                                                                                                                                        +    return this.enketoForm.getDataStr();
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  private async handleEventDataUpdate(e: ReturnType<typeof Events.DataUpdate>) {
                                                                                                                                                        +    await this.setValue(this.xmlFormValue);
                                                                                                                                                        +    await this.triggerActions("changed");
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  private async handleEventXmlFormChange(e: ReturnType<typeof Events.XFormsValueChanged>) {
                                                                                                                                                        +    // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js
                                                                                                                                                        +    // await this.setValue(this.xmlFormValue);
                                                                                                                                                        +  }
                                                                                                                                                        +
                                                                                                                                                        +  /**
                                                                                                                                                        +   * Load the form xml and data models and render intial form components
                                                                                                                                                        +   * https://github.com/enketo/enketo-core#usage-as-a-library
                                                                                                                                                        +   */
                                                                                                                                                        +  private loadForm(formData: IEnketoFormData) {
                                                                                                                                                        +    const { formContainerEl } = this;
                                                                                                                                                        +    const { form, model } = formData;
                                                                                                                                                        +    console.log({ form, model, formContainerEl });
                                                                                                                                                        +    if (form && model && formContainerEl) {
                                                                                                                                                        +      this.formContainerEl.nativeElement.innerHTML = form;
                                                                                                                                                        +      const formEl = this.formContainerEl.nativeElement.querySelector("form");
                                                                                                                                                        +      if (formEl) {
                                                                                                                                                        +        this.enketoForm = new Form(formEl, model, {});
                                                                                                                                                        +        // Initialize the form and capture any load errors
                                                                                                                                                        +        let loadErrors = this.enketoForm.init();
                                                                                                                                                        +        if (loadErrors.length > 0) {
                                                                                                                                                        +          console.error(loadErrors);
                                                                                                                                                        +        }
                                                                                                                                                        +        // If desired, scroll to a specific question with any XPath location expression,
                                                                                                                                                        +        // and aggregate any loadErrors.
                                                                                                                                                        +        loadErrors = loadErrors.concat(this.enketoForm.goTo("//repeat[3]/node"));
                                                                                                                                                        +
                                                                                                                                                        +        // Additional events can be bound directly to form (as opposed to component-propogated)
                                                                                                                                                        +        this.enketoForm.model.events.addEventListener(
                                                                                                                                                        +          Events.DataUpdate().type,
                                                                                                                                                        +          this.handleEventDataUpdate.bind(this)
                                                                                                                                                        +        );
                                                                                                                                                        +
                                                                                                                                                        +        // Extract updated form xml on change (triggered at document and form level)
                                                                                                                                                        +        this.enketoForm.view.html.addEventListener(
                                                                                                                                                        +          Events.XFormsValueChanged().type,
                                                                                                                                                        +          this.handleEventXmlFormChange.bind(this)
                                                                                                                                                        +        );
                                                                                                                                                        +      }
                                                                                                                                                        +    }
                                                                                                                                                        +  }
                                                                                                                                                        +}
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        +
                                                                                                                                                        + + + + + + + + +
                                                                                                                                                        +
                                                                                                                                                        +

                                                                                                                                                        results matching ""

                                                                                                                                                        +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          No results matching ""

                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IRadioButton.html b/documentation/docs/generated/interfaces/IRadioButton.html new file mode 100644 index 0000000000..300f02dd94 --- /dev/null +++ b/documentation/docs/generated/interfaces/IRadioButton.html @@ -0,0 +1,454 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                          +
                                                                                                                                                          + + +
                                                                                                                                                          +
                                                                                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          +

                                                                                                                                                          File

                                                                                                                                                          +

                                                                                                                                                          +

                                                                                                                                                          + src/app/shared/components/template/components/radio-group-grid/radio-group-grid.component.ts +

                                                                                                                                                          + + + + +
                                                                                                                                                          +

                                                                                                                                                          Index

                                                                                                                                                          + + + + + + + + + +
                                                                                                                                                          +
                                                                                                                                                          Properties
                                                                                                                                                          +
                                                                                                                                                          + +
                                                                                                                                                          +
                                                                                                                                                          + + + +
                                                                                                                                                          +

                                                                                                                                                          Properties

                                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                          + + image + + + + +
                                                                                                                                                          + image: string | null + +
                                                                                                                                                          + Type : string | null + +
                                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                          + + image_checked + + + + +
                                                                                                                                                          + image_checked: string | null + +
                                                                                                                                                          + Type : string | null + +
                                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                          + + name + + + + +
                                                                                                                                                          + name: string | null + +
                                                                                                                                                          + Type : string | null + +
                                                                                                                                                          + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                          + + text + + + + +
                                                                                                                                                          + text: string | null + +
                                                                                                                                                          + Type : string | null + +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          + + +
                                                                                                                                                          +
                                                                                                                                                          import { Component, Input, OnInit } from "@angular/core";
                                                                                                                                                          +import { TemplateBaseComponent } from "../base";
                                                                                                                                                          +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                                                                                          +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                                                          +import { objectToArray } from "../../utils";
                                                                                                                                                          +
                                                                                                                                                          +interface IRadioButton {
                                                                                                                                                          +  name: string | null;
                                                                                                                                                          +  image: string | null;
                                                                                                                                                          +  text: string | null;
                                                                                                                                                          +  image_checked: string | null;
                                                                                                                                                          +}
                                                                                                                                                          +
                                                                                                                                                          +@Component({
                                                                                                                                                          +  selector: "plh-radio-group-grid",
                                                                                                                                                          +  templateUrl: "./radio-group-grid.component.html",
                                                                                                                                                          +  styleUrls: ["./radio-group-grid.component.scss"],
                                                                                                                                                          +})
                                                                                                                                                          +export class TmplRadioGroupGridComponent
                                                                                                                                                          +  extends TemplateBaseComponent
                                                                                                                                                          +  implements ITemplateRowProps
                                                                                                                                                          +{
                                                                                                                                                          +  /**
                                                                                                                                                          +   * Computed item array from input parameters
                                                                                                                                                          +   * @ignore
                                                                                                                                                          +   */
                                                                                                                                                          +  public radioButtons: Array<IRadioButton>;
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * Computed grid style from input parameters
                                                                                                                                                          +   * @ignore
                                                                                                                                                          +   */
                                                                                                                                                          +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * Authoring parameters
                                                                                                                                                          +   */
                                                                                                                                                          +  protected parameter_list: {
                                                                                                                                                          +    /** List of options presented as radio items */
                                                                                                                                                          +    answer_list: string[];
                                                                                                                                                          +    /**
                                                                                                                                                          +     * Minimum item width, will increase to fit grid
                                                                                                                                                          +     * default '200px'
                                                                                                                                                          +     **/
                                                                                                                                                          +    item_width: string;
                                                                                                                                                          +
                                                                                                                                                          +    /**
                                                                                                                                                          +     * Maximum grid width, if specified will center items in available space
                                                                                                                                                          +     * default '100%'
                                                                                                                                                          +     **/
                                                                                                                                                          +    grid_width: string;
                                                                                                                                                          +  };
                                                                                                                                                          +
                                                                                                                                                          +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                                                                                          +    this._row = row;
                                                                                                                                                          +    this.setParams();
                                                                                                                                                          +  }
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * S
                                                                                                                                                          +   * @ignore
                                                                                                                                                          +   */
                                                                                                                                                          +  public async handleRadioButtonClick(radioButton: IRadioButton) {
                                                                                                                                                          +    await this.setValue(radioButton.name);
                                                                                                                                                          +    this.triggerActions("changed");
                                                                                                                                                          +  }
                                                                                                                                                          +
                                                                                                                                                          +  private setParams() {
                                                                                                                                                          +    this.radioButtons = this.generateItemList();
                                                                                                                                                          +    this.gridStyle = this.generateGridStyle();
                                                                                                                                                          +  }
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * Create a list of styles to be passed into ngStyle
                                                                                                                                                          +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                                                                                          +   */
                                                                                                                                                          +  private generateGridStyle() {
                                                                                                                                                          +    const minItemWidth = getParamFromTemplateRow(this._row, "item_width", "200px");
                                                                                                                                                          +    const maxGridWidth = getParamFromTemplateRow(this._row, "grid_width", "100%");
                                                                                                                                                          +    const style: Partial<CSSStyleDeclaration> = {
                                                                                                                                                          +      // center grid with maximum width
                                                                                                                                                          +      maxWidth: maxGridWidth,
                                                                                                                                                          +      margin: "auto",
                                                                                                                                                          +      // fit columns with target item width
                                                                                                                                                          +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                                                                                          +      // make all rows same height
                                                                                                                                                          +      gridAutoRows: "1fr",
                                                                                                                                                          +    };
                                                                                                                                                          +    return style;
                                                                                                                                                          +  }
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * Adapted from radio-group.component
                                                                                                                                                          +   * Convert input answer_list to rendered item list
                                                                                                                                                          +   */
                                                                                                                                                          +  private generateItemList() {
                                                                                                                                                          +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                                                                                          +    // Convert if datalist input (hashmap to array)
                                                                                                                                                          +    if (answerList.constructor === {}.constructor) {
                                                                                                                                                          +      answerList = objectToArray(answerList);
                                                                                                                                                          +    }
                                                                                                                                                          +    const radioButtons: IRadioButton[] = answerList.map((item: string | Record<string, string>) => {
                                                                                                                                                          +      if (typeof item === "string") {
                                                                                                                                                          +        return this.parseAnswerListItemString(item);
                                                                                                                                                          +      }
                                                                                                                                                          +      return item as any;
                                                                                                                                                          +    });
                                                                                                                                                          +    return radioButtons;
                                                                                                                                                          +  }
                                                                                                                                                          +
                                                                                                                                                          +  /**
                                                                                                                                                          +   * convert string to relevant mappings
                                                                                                                                                          +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                                                                                          +   */
                                                                                                                                                          +  private parseAnswerListItemString(item: string) {
                                                                                                                                                          +    const itemObj: IRadioButton = {} as any;
                                                                                                                                                          +    const stringProperties = item.split("|");
                                                                                                                                                          +    stringProperties.forEach((s) => {
                                                                                                                                                          +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                                          +      if (field && value) {
                                                                                                                                                          +        itemObj[field] = value;
                                                                                                                                                          +      }
                                                                                                                                                          +    });
                                                                                                                                                          +    return itemObj;
                                                                                                                                                          +  }
                                                                                                                                                          +}
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          +
                                                                                                                                                          + + + + + + + + +
                                                                                                                                                          +
                                                                                                                                                          +

                                                                                                                                                          results matching ""

                                                                                                                                                          +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            No results matching ""

                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/IRadioButtonGridParams.html b/documentation/docs/generated/interfaces/IRadioButtonGridParams.html new file mode 100644 index 0000000000..bebe431932 --- /dev/null +++ b/documentation/docs/generated/interfaces/IRadioButtonGridParams.html @@ -0,0 +1,493 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                            +
                                                                                                                                                            + + +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + + + + + + + + + + +
                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            +

                                                                                                                                                            File

                                                                                                                                                            +

                                                                                                                                                            +

                                                                                                                                                            + src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts +

                                                                                                                                                            + + + + +
                                                                                                                                                            +

                                                                                                                                                            Index

                                                                                                                                                            + + + + + + + + + +
                                                                                                                                                            +
                                                                                                                                                            Properties
                                                                                                                                                            +
                                                                                                                                                            + +
                                                                                                                                                            +
                                                                                                                                                            + + + +
                                                                                                                                                            +

                                                                                                                                                            Properties

                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                            + + answer_list + + + + +
                                                                                                                                                            + answer_list: IAnswerListItem[] + +
                                                                                                                                                            + Type : IAnswerListItem[] + +
                                                                                                                                                            +

                                                                                                                                                            List of options presented as radio items

                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                            + + grid_gap + + + + +
                                                                                                                                                            + grid_gap: string + +
                                                                                                                                                            + Type : string + +
                                                                                                                                                            +

                                                                                                                                                            Spacing between grid items. +Default '16px'

                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                            + + grid_width + + + + +
                                                                                                                                                            + grid_width: string + +
                                                                                                                                                            + Type : string + +
                                                                                                                                                            +

                                                                                                                                                            Maximum grid width, if specified will center items in available space. +Default '100%'

                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                            + + item_width + + + + +
                                                                                                                                                            + item_width: string + +
                                                                                                                                                            + Type : string + +
                                                                                                                                                            +

                                                                                                                                                            Minimum item width, will increase to fit grid. +Default '200px'

                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + +
                                                                                                                                                            +
                                                                                                                                                            import { Component, Input } from "@angular/core";
                                                                                                                                                            +import { TemplateBaseComponent } from "../base";
                                                                                                                                                            +import { FlowTypes, ITemplateRowProps } from "../../models";
                                                                                                                                                            +import { getParamFromTemplateRow } from "src/app/shared/utils";
                                                                                                                                                            +import { objectToArray } from "../../utils";
                                                                                                                                                            +
                                                                                                                                                            +interface IAnswerListItem {
                                                                                                                                                            +  name: string;
                                                                                                                                                            +  image?: string;
                                                                                                                                                            +  text?: string;
                                                                                                                                                            +}
                                                                                                                                                            +
                                                                                                                                                            +interface IRadioButtonGridParams {
                                                                                                                                                            +  /** List of options presented as radio items */
                                                                                                                                                            +  answer_list: IAnswerListItem[];
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Minimum item width, will increase to fit grid.
                                                                                                                                                            +   * Default '200px'
                                                                                                                                                            +   **/
                                                                                                                                                            +  item_width: string;
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Maximum grid width, if specified will center items in available space.
                                                                                                                                                            +   * Default '100%'
                                                                                                                                                            +   **/
                                                                                                                                                            +  grid_width: string;
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Spacing between grid items.
                                                                                                                                                            +   * Default '16px'
                                                                                                                                                            +   **/
                                                                                                                                                            +  grid_gap: string;
                                                                                                                                                            +}
                                                                                                                                                            +
                                                                                                                                                            +@Component({
                                                                                                                                                            +  selector: "plh-radio-button-grid",
                                                                                                                                                            +  templateUrl: "./radio-button-grid.component.html",
                                                                                                                                                            +  styleUrls: ["./radio-button-grid.component.scss"],
                                                                                                                                                            +})
                                                                                                                                                            +export class TmplRadioButtonGridComponent
                                                                                                                                                            +  extends TemplateBaseComponent
                                                                                                                                                            +  implements ITemplateRowProps
                                                                                                                                                            +{
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Computed item array from input parameters
                                                                                                                                                            +   * @ignore
                                                                                                                                                            +   */
                                                                                                                                                            +  public radioItems: Array<IAnswerListItem>;
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Computed grid style from input parameters
                                                                                                                                                            +   * @ignore
                                                                                                                                                            +   */
                                                                                                                                                            +  public gridStyle: Partial<CSSStyleDeclaration>;
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Authoring parameters
                                                                                                                                                            +   */
                                                                                                                                                            +  public parameter_list: IRadioButtonGridParams;
                                                                                                                                                            +
                                                                                                                                                            +  @Input() set row(row: FlowTypes.TemplateRow) {
                                                                                                                                                            +    this._row = row;
                                                                                                                                                            +    this.setParams();
                                                                                                                                                            +  }
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * S
                                                                                                                                                            +   * @ignore
                                                                                                                                                            +   */
                                                                                                                                                            +  public async handleItemClick(item: IAnswerListItem) {
                                                                                                                                                            +    await this.setValue(item.name);
                                                                                                                                                            +    this.triggerActions("changed");
                                                                                                                                                            +  }
                                                                                                                                                            +
                                                                                                                                                            +  private setParams() {
                                                                                                                                                            +    this.parameter_list = this._row.parameter_list || ({} as any);
                                                                                                                                                            +    this.radioItems = this.generateItemList();
                                                                                                                                                            +    this.gridStyle = this.generateGridStyle();
                                                                                                                                                            +  }
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Create a list of styles to be passed into ngStyle
                                                                                                                                                            +   * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/
                                                                                                                                                            +   */
                                                                                                                                                            +  private generateGridStyle() {
                                                                                                                                                            +    const minItemWidth = this.parameter_list.item_width || "200px";
                                                                                                                                                            +    const maxGridWidth = this.parameter_list.grid_width || "100%";
                                                                                                                                                            +    const gridGap = this.parameter_list.grid_gap || "16px";
                                                                                                                                                            +
                                                                                                                                                            +    const style: Partial<CSSStyleDeclaration> = {
                                                                                                                                                            +      // center grid with maximum width
                                                                                                                                                            +      maxWidth: maxGridWidth,
                                                                                                                                                            +      margin: "auto",
                                                                                                                                                            +      // apply fixed gap between grid items
                                                                                                                                                            +      gap: gridGap,
                                                                                                                                                            +      // fit columns with target item width
                                                                                                                                                            +      gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,
                                                                                                                                                            +      // make all rows same height
                                                                                                                                                            +      gridAutoRows: "1fr",
                                                                                                                                                            +    };
                                                                                                                                                            +    return style;
                                                                                                                                                            +  }
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * Adapted from radio-group.component
                                                                                                                                                            +   * Convert input answer_list to rendered item list
                                                                                                                                                            +   */
                                                                                                                                                            +  private generateItemList() {
                                                                                                                                                            +    let answerList = getParamFromTemplateRow(this._row, "answer_list", []);
                                                                                                                                                            +    // Convert if datalist input (hashmap to array)
                                                                                                                                                            +    if (answerList.constructor === {}.constructor) {
                                                                                                                                                            +      answerList = objectToArray(answerList);
                                                                                                                                                            +    }
                                                                                                                                                            +    const radioItems: IAnswerListItem[] = answerList.map(
                                                                                                                                                            +      (item: string | Record<string, string>) => {
                                                                                                                                                            +        if (typeof item === "string") {
                                                                                                                                                            +          return this.parseAnswerListItemString(item);
                                                                                                                                                            +        }
                                                                                                                                                            +        return item as any;
                                                                                                                                                            +      }
                                                                                                                                                            +    );
                                                                                                                                                            +    return radioItems;
                                                                                                                                                            +  }
                                                                                                                                                            +
                                                                                                                                                            +  /**
                                                                                                                                                            +   * convert string to relevant mappings
                                                                                                                                                            +   * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime
                                                                                                                                                            +   */
                                                                                                                                                            +  private parseAnswerListItemString(item: string) {
                                                                                                                                                            +    const itemObj: IAnswerListItem = {} as any;
                                                                                                                                                            +    const stringProperties = item.split("|");
                                                                                                                                                            +    stringProperties.forEach((s) => {
                                                                                                                                                            +      const [field, value] = s.split(":").map((v) => v.trim());
                                                                                                                                                            +      if (field && value) {
                                                                                                                                                            +        itemObj[field] = value;
                                                                                                                                                            +      }
                                                                                                                                                            +    });
                                                                                                                                                            +    return itemObj;
                                                                                                                                                            +  }
                                                                                                                                                            +}
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            +
                                                                                                                                                            + + + + + + + + +
                                                                                                                                                            +
                                                                                                                                                            +

                                                                                                                                                            results matching ""

                                                                                                                                                            +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +

                                                                                                                                                              No results matching ""

                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + +
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/ITemplatePopupComponentProps.html b/documentation/docs/generated/interfaces/ITemplatePopupComponentProps.html new file mode 100644 index 0000000000..6ffb409c14 --- /dev/null +++ b/documentation/docs/generated/interfaces/ITemplatePopupComponentProps.html @@ -0,0 +1,679 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                              +
                                                                                                                                                              + + +
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + + + + + + + + + + +
                                                                                                                                                              +
                                                                                                                                                              +

                                                                                                                                                              +

                                                                                                                                                              File

                                                                                                                                                              +

                                                                                                                                                              +

                                                                                                                                                              + src/app/shared/components/template/components/layout/popup.ts +

                                                                                                                                                              + + + +

                                                                                                                                                              +

                                                                                                                                                              Extends

                                                                                                                                                              +

                                                                                                                                                              +

                                                                                                                                                              + ITemplateContainerProps +

                                                                                                                                                              + +
                                                                                                                                                              +

                                                                                                                                                              Index

                                                                                                                                                              + + + + + + + + + +
                                                                                                                                                              +
                                                                                                                                                              Properties
                                                                                                                                                              +
                                                                                                                                                              + +
                                                                                                                                                              +
                                                                                                                                                              + + + +
                                                                                                                                                              +

                                                                                                                                                              Properties

                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + dismissOnEmit + + + + +
                                                                                                                                                              + dismissOnEmit: boolean + +
                                                                                                                                                              + Type : boolean + +
                                                                                                                                                              + Optional +
                                                                                                                                                              +

                                                                                                                                                              Dismiss popup when completed or uncompleted is emitted from child template

                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + fullscreen + + + + +
                                                                                                                                                              + fullscreen: boolean + +
                                                                                                                                                              + Type : boolean + +
                                                                                                                                                              + Optional +
                                                                                                                                                              +

                                                                                                                                                              Display fullscreen overlayed on top of all other app content

                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + name + + + + +
                                                                                                                                                              + name: string + +
                                                                                                                                                              + Type : string + +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + parent + + + + +
                                                                                                                                                              + parent: TemplateContainerComponent + +
                                                                                                                                                              + Type : TemplateContainerComponent + +
                                                                                                                                                              + Optional +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + row + + + + +
                                                                                                                                                              + row: FlowTypes.TemplateRow + +
                                                                                                                                                              + Type : FlowTypes.TemplateRow + +
                                                                                                                                                              + Optional +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + showCloseButton + + + + +
                                                                                                                                                              + showCloseButton: boolean + +
                                                                                                                                                              + Type : boolean + +
                                                                                                                                                              + Optional +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + templatename + + + + +
                                                                                                                                                              + templatename: string + +
                                                                                                                                                              + Type : string + +
                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                              + + waitForDismiss + + + + +
                                                                                                                                                              + waitForDismiss: boolean + +
                                                                                                                                                              + Type : boolean + +
                                                                                                                                                              + Optional +
                                                                                                                                                              +

                                                                                                                                                              Wait for template to be self-dismissed before returning (default: True)

                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + + +
                                                                                                                                                              +
                                                                                                                                                              import { Component, Input } from "@angular/core";
                                                                                                                                                              +import { ModalController } from "@ionic/angular";
                                                                                                                                                              +import { FlowTypes, ITemplateContainerProps } from "../../models";
                                                                                                                                                              +import { TemplateContainerComponent } from "../../template-container.component";
                                                                                                                                                              +
                                                                                                                                                              +@Component({
                                                                                                                                                              +  template: `
                                                                                                                                                              +    <div
                                                                                                                                                              +      class="popup-backdrop"
                                                                                                                                                              +      (click)="dismissOnBackdrop($event)"
                                                                                                                                                              +      [attr.data-fullscreen]="props.fullscreen ? true : null"
                                                                                                                                                              +    >
                                                                                                                                                              +      <div class="popup-container">
                                                                                                                                                              +        <div (click)="dismiss()" class="close-button" fill="clear" *ngIf="props.showCloseButton">
                                                                                                                                                              +          <ion-icon slot="icon-only" name="close"></ion-icon>
                                                                                                                                                              +        </div>
                                                                                                                                                              +        <div class="popup-content" [attr.data-fullscreen]="props.fullscreen ? true : null">
                                                                                                                                                              +          <plh-template-container
                                                                                                                                                              +            class="template-container"
                                                                                                                                                              +            [name]="props.name"
                                                                                                                                                              +            [templatename]="props.templatename"
                                                                                                                                                              +            [parent]="props.parent"
                                                                                                                                                              +            [row]="props.row"
                                                                                                                                                              +            (emittedValue)="handleEmittedValue($event)"
                                                                                                                                                              +          ></plh-template-container>
                                                                                                                                                              +        </div>
                                                                                                                                                              +      </div>
                                                                                                                                                              +    </div>
                                                                                                                                                              +  `,
                                                                                                                                                              +  styles: [
                                                                                                                                                              +    `
                                                                                                                                                              +      .popup-backdrop {
                                                                                                                                                              +        height: 100vh;
                                                                                                                                                              +        width: 100%;
                                                                                                                                                              +        background: rgba(0, 0, 0, 0.6);
                                                                                                                                                              +        display: flex;
                                                                                                                                                              +        flex-direction: column;
                                                                                                                                                              +        justify-content: center;
                                                                                                                                                              +      }
                                                                                                                                                              +      .popup-backdrop[data-fullscreen] {
                                                                                                                                                              +        background: white;
                                                                                                                                                              +      }
                                                                                                                                                              +      .popup-container {
                                                                                                                                                              +        position: relative;
                                                                                                                                                              +        width: var(--content-max-width);
                                                                                                                                                              +        padding: 0 2rem;
                                                                                                                                                              +        margin: auto;
                                                                                                                                                              +      }
                                                                                                                                                              +
                                                                                                                                                              +      .popup-content {
                                                                                                                                                              +        margin: 30px auto;
                                                                                                                                                              +        max-height: calc(100vh - 60px);
                                                                                                                                                              +        background: white;
                                                                                                                                                              +        border-radius: 20px;
                                                                                                                                                              +        padding: 20px;
                                                                                                                                                              +        overflow: auto;
                                                                                                                                                              +      }
                                                                                                                                                              +      .popup-content[data-fullscreen] {
                                                                                                                                                              +        width: 100%;
                                                                                                                                                              +        height: 100vh;
                                                                                                                                                              +        max-height: 100vh;
                                                                                                                                                              +        border-radius: 0;
                                                                                                                                                              +        margin: 0;
                                                                                                                                                              +      }
                                                                                                                                                              +      .popup-content::-webkit-scrollbar {
                                                                                                                                                              +        display: none;
                                                                                                                                                              +      }
                                                                                                                                                              +      .close-button {
                                                                                                                                                              +        position: absolute;
                                                                                                                                                              +        top: 16px;
                                                                                                                                                              +        right: 22px;
                                                                                                                                                              +        background: white;
                                                                                                                                                              +        width: 40px;
                                                                                                                                                              +        height: 40px;
                                                                                                                                                              +        border-radius: 100%;
                                                                                                                                                              +        display: flex;
                                                                                                                                                              +        flex-direction: column;
                                                                                                                                                              +        align-items: center;
                                                                                                                                                              +        justify-content: center;
                                                                                                                                                              +        border: 1px solid var(--ion-color-primary);
                                                                                                                                                              +        font-size: 24px;
                                                                                                                                                              +        z-index: 1;
                                                                                                                                                              +        box-shadow: var(--ion-default-box-shadow);
                                                                                                                                                              +        color: var(--ion-color-primary);
                                                                                                                                                              +      }
                                                                                                                                                              +    `,
                                                                                                                                                              +  ],
                                                                                                                                                              +})
                                                                                                                                                              +/**
                                                                                                                                                              + * When opening a template as a popup, provide a minimal interface and load
                                                                                                                                                              + * the template directly as a regular template-container element
                                                                                                                                                              + */
                                                                                                                                                              +export class TemplatePopupComponent {
                                                                                                                                                              +  @Input() props: ITemplatePopupComponentProps;
                                                                                                                                                              +
                                                                                                                                                              +  constructor(private modalCtrl: ModalController) {}
                                                                                                                                                              +
                                                                                                                                                              +  /**
                                                                                                                                                              +   * When templates emit completed/uncompleted value from standalone popup close the popup
                                                                                                                                                              +   * NOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions
                                                                                                                                                              +   * */
                                                                                                                                                              +  handleEmittedValue(value: { emit_value: string; emit_data: any }) {
                                                                                                                                                              +    const { emit_value } = value;
                                                                                                                                                              +    if (this.props.dismissOnEmit) {
                                                                                                                                                              +      if (["completed", "uncompleted"].includes(emit_value)) {
                                                                                                                                                              +        this.dismiss(value);
                                                                                                                                                              +      }
                                                                                                                                                              +    }
                                                                                                                                                              +  }
                                                                                                                                                              +
                                                                                                                                                              +  dismissOnBackdrop(e: MouseEvent) {
                                                                                                                                                              +    const el = e.target as HTMLElement;
                                                                                                                                                              +    if (el.classList.contains("popup-backdrop")) {
                                                                                                                                                              +      this.dismiss();
                                                                                                                                                              +    }
                                                                                                                                                              +  }
                                                                                                                                                              +
                                                                                                                                                              +  dismiss(value?: { emit_value: string; emit_data: any }) {
                                                                                                                                                              +    this.modalCtrl.dismiss(value);
                                                                                                                                                              +  }
                                                                                                                                                              +}
                                                                                                                                                              +
                                                                                                                                                              +export interface ITemplatePopupComponentProps extends ITemplateContainerProps {
                                                                                                                                                              +  name: string;
                                                                                                                                                              +  templatename: string;
                                                                                                                                                              +  parent?: TemplateContainerComponent;
                                                                                                                                                              +  row?: FlowTypes.TemplateRow;
                                                                                                                                                              +  showCloseButton?: boolean;
                                                                                                                                                              +  /** Dismiss popup when completed or uncompleted is emitted from child template */
                                                                                                                                                              +  dismissOnEmit?: boolean;
                                                                                                                                                              +  /** Wait for template to be self-dismissed before returning (default: True) */
                                                                                                                                                              +  waitForDismiss?: boolean;
                                                                                                                                                              +  /** Display fullscreen overlayed on top of all other app content */
                                                                                                                                                              +  fullscreen?: boolean;
                                                                                                                                                              +}
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              +
                                                                                                                                                              + + + + + + + + +
                                                                                                                                                              +
                                                                                                                                                              +

                                                                                                                                                              results matching ""

                                                                                                                                                              +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +

                                                                                                                                                                No results matching ""

                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/interfaces/TimerState.html b/documentation/docs/generated/interfaces/TimerState.html new file mode 100644 index 0000000000..f6251adff7 --- /dev/null +++ b/documentation/docs/generated/interfaces/TimerState.html @@ -0,0 +1,736 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                +
                                                                                                                                                                + + +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + + + + + + + + + + +
                                                                                                                                                                +
                                                                                                                                                                +

                                                                                                                                                                +

                                                                                                                                                                File

                                                                                                                                                                +

                                                                                                                                                                +

                                                                                                                                                                + src/app/shared/components/template/components/timer/timer.component.ts +

                                                                                                                                                                + + + + +
                                                                                                                                                                +

                                                                                                                                                                Index

                                                                                                                                                                + + + + + + + + + + + + + + + +
                                                                                                                                                                +
                                                                                                                                                                Properties
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                Methods
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                + +

                                                                                                                                                                + Methods +

                                                                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                + + + callOnInit + + +
                                                                                                                                                                +callOnInit() +
                                                                                                                                                                + +
                                                                                                                                                                + +
                                                                                                                                                                + Returns : void + +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                + + + clickLeftButton + + +
                                                                                                                                                                +clickLeftButton() +
                                                                                                                                                                + +
                                                                                                                                                                + +
                                                                                                                                                                + Returns : void + +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                + + + clickRightButton + + +
                                                                                                                                                                +clickRightButton() +
                                                                                                                                                                + +
                                                                                                                                                                + +
                                                                                                                                                                + Returns : void + +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                + + + editTimer + + +
                                                                                                                                                                +editTimer(val: string, type: "mm" | "ss") +
                                                                                                                                                                + +
                                                                                                                                                                + +
                                                                                                                                                                + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                NameTypeOptional
                                                                                                                                                                val + string + + No +
                                                                                                                                                                type + "mm" | "ss" + + No +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + Returns : void + +
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + +
                                                                                                                                                                +

                                                                                                                                                                Properties

                                                                                                                                                                + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                + + timer + + + + +
                                                                                                                                                                + timer: TmplTimerComponent + +
                                                                                                                                                                + Type : TmplTimerComponent + +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + + +
                                                                                                                                                                +
                                                                                                                                                                import { Component, ElementRef, Input, OnInit, ViewChild } from "@angular/core";
                                                                                                                                                                +import { FlowTypes } from "data-models";
                                                                                                                                                                +import {
                                                                                                                                                                +  getBooleanParamFromTemplateRow,
                                                                                                                                                                +  getNumberParamFromTemplateRow,
                                                                                                                                                                +  getStringParamFromTemplateRow,
                                                                                                                                                                +} from "../../../../utils";
                                                                                                                                                                +import { PickerController, Platform } from "@ionic/angular";
                                                                                                                                                                +import { TemplateBaseComponent } from "../base";
                                                                                                                                                                +import { ITemplateRowProps } from "../../models";
                                                                                                                                                                +import { AudioService } from "src/app/shared/services/audio/audio.service";
                                                                                                                                                                +import { AudioPlayer } from "src/app/shared/services/audio/audio.player";
                                                                                                                                                                +import { TemplateAssetService } from "../../services/template-asset.service";
                                                                                                                                                                +
                                                                                                                                                                +@Component({
                                                                                                                                                                +  selector: "plh-timer",
                                                                                                                                                                +  templateUrl: "./timer.component.html",
                                                                                                                                                                +  styleUrls: ["./timer.component.scss"],
                                                                                                                                                                +})
                                                                                                                                                                +export class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {
                                                                                                                                                                +  _row: FlowTypes.TemplateRow;
                                                                                                                                                                +  @Input() set row(value: FlowTypes.TemplateRow) {
                                                                                                                                                                +    this._row = value;
                                                                                                                                                                +  }
                                                                                                                                                                +  @Input() template: FlowTypes.Template;
                                                                                                                                                                +  @ViewChild("min", { static: false }) minInput: ElementRef;
                                                                                                                                                                +  @ViewChild("sec", { static: false }) secInput: ElementRef;
                                                                                                                                                                +  state: TimerState;
                                                                                                                                                                +  leftButtonAction: string;
                                                                                                                                                                +  leftButtonIcon: string;
                                                                                                                                                                +  leftButtonName: string;
                                                                                                                                                                +  rightButtonAction: string;
                                                                                                                                                                +  rightButtonIcon: string;
                                                                                                                                                                +  rightButtonName: string;
                                                                                                                                                                +  isTimerEditable: boolean;
                                                                                                                                                                +  is_editable_on_playing: boolean;
                                                                                                                                                                +  timerStarted = false;
                                                                                                                                                                +  timerDurationExtension: number = 1 * 60;
                                                                                                                                                                +  help: string | null = null;
                                                                                                                                                                +  title: string;
                                                                                                                                                                +  _value: number;
                                                                                                                                                                +  starting_minutes: number;
                                                                                                                                                                +  starting_seconds: number;
                                                                                                                                                                +  minutes: string;
                                                                                                                                                                +  seconds: string;
                                                                                                                                                                +  ping: string | null;
                                                                                                                                                                +  player: AudioPlayer | null;
                                                                                                                                                                +  timeValues = () => {
                                                                                                                                                                +    const data = [];
                                                                                                                                                                +    for (let i = 0; i <= 9; i++) {
                                                                                                                                                                +      data.push(i);
                                                                                                                                                                +    }
                                                                                                                                                                +    return [data.slice(0, 6), data, data.slice(0, 6), data];
                                                                                                                                                                +  };
                                                                                                                                                                +
                                                                                                                                                                +  get value() {
                                                                                                                                                                +    return this._value;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  set value(val: number) {
                                                                                                                                                                +    if (!val) val = 0;
                                                                                                                                                                +
                                                                                                                                                                +    this._value = val;
                                                                                                                                                                +
                                                                                                                                                                +    const _seconds = val % 60;
                                                                                                                                                                +    const _minutes = Math.floor(val / 60);
                                                                                                                                                                +    this.seconds = _seconds < 10 ? `0${_seconds}` : String(_seconds);
                                                                                                                                                                +    this.minutes = _minutes < 10 ? `0${_minutes}` : String(_minutes);
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  constructor(
                                                                                                                                                                +    private pickerController: PickerController,
                                                                                                                                                                +    private platform: Platform,
                                                                                                                                                                +    private audioService: AudioService,
                                                                                                                                                                +    private templateAssetService: TemplateAssetService
                                                                                                                                                                +  ) {
                                                                                                                                                                +    super();
                                                                                                                                                                +    this.changeState(new PausedState(this));
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  ngOnInit() {
                                                                                                                                                                +    this.getParams();
                                                                                                                                                                +    this.state.callOnInit();
                                                                                                                                                                +    if (this.ping) {
                                                                                                                                                                +      const pingSrc = this.templateAssetService.getTranslatedAssetPath(this.ping);
                                                                                                                                                                +      this.player = this.audioService.createPlayer(pingSrc);
                                                                                                                                                                +    }
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  changeState(state: TimerState) {
                                                                                                                                                                +    this.state = state;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  getParams() {
                                                                                                                                                                +    this.title = getStringParamFromTemplateRow(this._row, "title", "Timer");
                                                                                                                                                                +    this.help = getStringParamFromTemplateRow(this._row, "help", null);
                                                                                                                                                                +    this.ping = getStringParamFromTemplateRow(this._row, "ping", null);
                                                                                                                                                                +    this.timerDurationExtension =
                                                                                                                                                                +      getNumberParamFromTemplateRow(this._row, "duration_extension", 1) * 60;
                                                                                                                                                                +    this.is_editable_on_playing = getBooleanParamFromTemplateRow(
                                                                                                                                                                +      this._row,
                                                                                                                                                                +      "is_editable_on_playing",
                                                                                                                                                                +      false
                                                                                                                                                                +    );
                                                                                                                                                                +    this.starting_minutes = getNumberParamFromTemplateRow(this._row, "starting_minutes", 10);
                                                                                                                                                                +    this.starting_seconds = getNumberParamFromTemplateRow(this._row, "starting_seconds", 0);
                                                                                                                                                                +    this.value = this.getDurationFromParams();
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  getDurationFromParams() {
                                                                                                                                                                +    return this._row.value ? this._row.value : this.starting_minutes * 60 + this.starting_seconds;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickLeftButton() {
                                                                                                                                                                +    this.state.clickLeftButton();
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickRightButton() {
                                                                                                                                                                +    this.state.clickRightButton();
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  openPicker() {
                                                                                                                                                                +    if (this.isTimerEditable) {
                                                                                                                                                                +      const numColumns = 4;
                                                                                                                                                                +      const columnOptions = this.timeValues();
                                                                                                                                                                +      this.pickerController
                                                                                                                                                                +        .create({
                                                                                                                                                                +          mode: this.platform.is("android") ? "md" : "ios" || "ios",
                                                                                                                                                                +          columns: this.getColumns(numColumns, columnOptions),
                                                                                                                                                                +          buttons: [
                                                                                                                                                                +            {
                                                                                                                                                                +              text: "Cancel",
                                                                                                                                                                +              role: "cancel",
                                                                                                                                                                +              handler: (_) => (this.timerStarted ? this.state.clickLeftButton() : null),
                                                                                                                                                                +            },
                                                                                                                                                                +            {
                                                                                                                                                                +              text: "Confirm",
                                                                                                                                                                +              handler: (value) => {
                                                                                                                                                                +                const min =
                                                                                                                                                                +                  Object.values(value["col-0"]).toString().split(",")[0].trim() +
                                                                                                                                                                +                  Object.values(value["col-1"]).toString().split(",")[0].trim();
                                                                                                                                                                +                const sec =
                                                                                                                                                                +                  Object.values(value["col-2"]).toString().split(",")[0].trim() +
                                                                                                                                                                +                  Object.values(value["col-3"]).toString().split(",")[0].trim();
                                                                                                                                                                +                this.state.editTimer(min, "mm");
                                                                                                                                                                +                this.state.editTimer(sec, "ss");
                                                                                                                                                                +              },
                                                                                                                                                                +            },
                                                                                                                                                                +          ],
                                                                                                                                                                +          cssClass: "picker",
                                                                                                                                                                +        })
                                                                                                                                                                +        .then((e) => e.present());
                                                                                                                                                                +    }
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  getColumns(numColumns, columnOptions) {
                                                                                                                                                                +    let columns = [];
                                                                                                                                                                +    for (let i = 0; i < numColumns; i++) {
                                                                                                                                                                +      columns.push({
                                                                                                                                                                +        name: `col-${i}`,
                                                                                                                                                                +        options: this.getColumnOptions(i, i % 2 === 0 ? 6 : 10, columnOptions),
                                                                                                                                                                +        selectedIndex: getIndex(i, this.minutes, this.seconds),
                                                                                                                                                                +      });
                                                                                                                                                                +    }
                                                                                                                                                                +
                                                                                                                                                                +    function getIndex(index: number, minutes: string, seconds: string): number {
                                                                                                                                                                +      switch (index) {
                                                                                                                                                                +        case 0:
                                                                                                                                                                +          return Number(minutes.charAt(0));
                                                                                                                                                                +        case 1:
                                                                                                                                                                +          return Number(minutes.charAt(1));
                                                                                                                                                                +        case 2:
                                                                                                                                                                +          return Number(seconds.charAt(0));
                                                                                                                                                                +        case 3:
                                                                                                                                                                +          return Number(seconds.charAt(1));
                                                                                                                                                                +        default:
                                                                                                                                                                +          return 0;
                                                                                                                                                                +      }
                                                                                                                                                                +    }
                                                                                                                                                                +
                                                                                                                                                                +    return columns;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  getColumnOptions(columnIndex, numOptions, columnOptions) {
                                                                                                                                                                +    let options = [];
                                                                                                                                                                +    for (let i = 0; i < numOptions; i++) {
                                                                                                                                                                +      options.push({
                                                                                                                                                                +        text: columnOptions[columnIndex][i % numOptions],
                                                                                                                                                                +        value: i,
                                                                                                                                                                +      });
                                                                                                                                                                +    }
                                                                                                                                                                +    return options;
                                                                                                                                                                +  }
                                                                                                                                                                +}
                                                                                                                                                                +
                                                                                                                                                                +interface TimerState {
                                                                                                                                                                +  timer: TmplTimerComponent;
                                                                                                                                                                +
                                                                                                                                                                +  clickLeftButton(): void;
                                                                                                                                                                +
                                                                                                                                                                +  clickRightButton(): void;
                                                                                                                                                                +
                                                                                                                                                                +  editTimer(val: string, type: "mm" | "ss"): void;
                                                                                                                                                                +
                                                                                                                                                                +  callOnInit(): void;
                                                                                                                                                                +}
                                                                                                                                                                +
                                                                                                                                                                +abstract class State {
                                                                                                                                                                +  constructor(public timer: TmplTimerComponent) {}
                                                                                                                                                                +
                                                                                                                                                                +  clickLeftButton() {}
                                                                                                                                                                +
                                                                                                                                                                +  clickRightButton() {}
                                                                                                                                                                +
                                                                                                                                                                +  clickTimer() {}
                                                                                                                                                                +
                                                                                                                                                                +  editTimer(val: string, type: "mm" | "ss") {
                                                                                                                                                                +    val = val.replace(/^0/, "");
                                                                                                                                                                +    let valNumber = Number.parseInt(val);
                                                                                                                                                                +
                                                                                                                                                                +    if (Number.isNaN(valNumber)) return;
                                                                                                                                                                +
                                                                                                                                                                +    if (type === "mm") {
                                                                                                                                                                +      this.timer.minInput.nativeElement.value = val;
                                                                                                                                                                +      this.timer.value = valNumber * 60 + Number(this.timer.seconds.replace(/^0/, ""));
                                                                                                                                                                +    } else if (type === "ss") {
                                                                                                                                                                +      this.timer.secInput.nativeElement.value = val;
                                                                                                                                                                +      this.timer.value = valNumber + Number(this.timer.minutes.replace(/^0/, "")) * 60;
                                                                                                                                                                +    }
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  callOnInit() {}
                                                                                                                                                                +}
                                                                                                                                                                +
                                                                                                                                                                +class PlayingState extends State {
                                                                                                                                                                +  private intervalRef;
                                                                                                                                                                +
                                                                                                                                                                +  constructor(timer: TmplTimerComponent) {
                                                                                                                                                                +    super(timer);
                                                                                                                                                                +    this.timer.leftButtonAction = "pause";
                                                                                                                                                                +    this.timer.leftButtonIcon = "pause-outline";
                                                                                                                                                                +    this.timer.leftButtonName = "pause_timer";
                                                                                                                                                                +    this.timer.rightButtonAction = "increase";
                                                                                                                                                                +    this.timer.rightButtonIcon = "reload-outline";
                                                                                                                                                                +    this.timer.rightButtonName = "increase_timer";
                                                                                                                                                                +    this.timer.timerStarted = true;
                                                                                                                                                                +    this.timer.isTimerEditable = this.timer.is_editable_on_playing;
                                                                                                                                                                +    this.countDown();
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickLeftButton() {
                                                                                                                                                                +    clearInterval(this.intervalRef);
                                                                                                                                                                +    this.timer.changeState(new PausedState(this.timer));
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickRightButton() {
                                                                                                                                                                +    this.timer.value += this.timer.timerDurationExtension;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  countDown() {
                                                                                                                                                                +    this.intervalRef = setInterval(() => {
                                                                                                                                                                +      if (this.timer.value === 0) {
                                                                                                                                                                +        clearInterval(this.intervalRef);
                                                                                                                                                                +        this.timer.changeState(new PausedState(this.timer));
                                                                                                                                                                +        if (this.timer.player) this.timer.player.play();
                                                                                                                                                                +        return;
                                                                                                                                                                +      }
                                                                                                                                                                +      this.timer.value -= 1;
                                                                                                                                                                +    }, 1000);
                                                                                                                                                                +  }
                                                                                                                                                                +}
                                                                                                                                                                +
                                                                                                                                                                +class PausedState extends State {
                                                                                                                                                                +  constructor(timer: TmplTimerComponent) {
                                                                                                                                                                +    super(timer);
                                                                                                                                                                +    this.timer.leftButtonAction = "play";
                                                                                                                                                                +    this.timer.leftButtonIcon = "play-outline";
                                                                                                                                                                +    this.timer.leftButtonName = "play_timer";
                                                                                                                                                                +    this.timer.rightButtonAction = "refresh";
                                                                                                                                                                +    this.timer.rightButtonIcon = "sync-outline";
                                                                                                                                                                +    this.timer.rightButtonName = "refresh_timer";
                                                                                                                                                                +    this.timer.timerStarted = false;
                                                                                                                                                                +    this.timer.isTimerEditable = true;
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickLeftButton() {
                                                                                                                                                                +    this.timer.changeState(new PlayingState(this.timer));
                                                                                                                                                                +  }
                                                                                                                                                                +
                                                                                                                                                                +  clickRightButton() {
                                                                                                                                                                +    this.timer.value = this.timer.getDurationFromParams();
                                                                                                                                                                +  }
                                                                                                                                                                +}
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                +
                                                                                                                                                                + + + + + + + + +
                                                                                                                                                                +
                                                                                                                                                                +

                                                                                                                                                                results matching ""

                                                                                                                                                                +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +

                                                                                                                                                                  No results matching ""

                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  +
                                                                                                                                                                  + +
                                                                                                                                                                  +
                                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/js/compodoc.js b/documentation/docs/generated/js/compodoc.js new file mode 100644 index 0000000000..8cc41d3354 --- /dev/null +++ b/documentation/docs/generated/js/compodoc.js @@ -0,0 +1,14 @@ +var compodoc = { + EVENTS: { + READY: 'compodoc.ready', + SEARCH_READY: 'compodoc.search.ready' + } +}; + +Object.assign( compodoc, EventDispatcher.prototype ); + +document.addEventListener('DOMContentLoaded', function() { + compodoc.dispatchEvent({ + type: compodoc.EVENTS.READY + }); +}); diff --git a/documentation/docs/generated/js/lazy-load-graphs.js b/documentation/docs/generated/js/lazy-load-graphs.js new file mode 100644 index 0000000000..2ef47cab9e --- /dev/null +++ b/documentation/docs/generated/js/lazy-load-graphs.js @@ -0,0 +1,44 @@ +document.addEventListener('DOMContentLoaded', function() { + var lazyGraphs = [].slice.call(document.querySelectorAll('[lazy]')); + var active = false; + + var lazyLoad = function() { + if (active === false) { + active = true; + + setTimeout(function() { + lazyGraphs.forEach(function(lazyGraph) { + if ( + lazyGraph.getBoundingClientRect().top <= window.innerHeight && + lazyGraph.getBoundingClientRect().bottom >= 0 && + getComputedStyle(lazyGraph).display !== 'none' + ) { + lazyGraph.data = lazyGraph.getAttribute('lazy'); + lazyGraph.removeAttribute('lazy'); + + lazyGraphs = lazyGraphs.filter(function(image) { return image !== lazyGraph}); + + if (lazyGraphs.length === 0) { + document.removeEventListener('scroll', lazyLoad); + window.removeEventListener('resize', lazyLoad); + window.removeEventListener('orientationchange', lazyLoad); + } + } + }); + + active = false; + }, 200); + } + }; + + // initial load + lazyLoad(); + + var container = document.querySelector('.container-fluid.modules'); + if (container) { + container.addEventListener('scroll', lazyLoad); + window.addEventListener('resize', lazyLoad); + window.addEventListener('orientationchange', lazyLoad); + } + +}); diff --git a/documentation/docs/generated/js/libs/EventDispatcher.js b/documentation/docs/generated/js/libs/EventDispatcher.js new file mode 100644 index 0000000000..f112877d70 --- /dev/null +++ b/documentation/docs/generated/js/libs/EventDispatcher.js @@ -0,0 +1,5 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var EventDispatcher=function(){};Object.assign(EventDispatcher.prototype,{addEventListener:function(i,t){void 0===this._listeners&&(this._listeners={});var e=this._listeners;void 0===e[i]&&(e[i]=[]),-1===e[i].indexOf(t)&&e[i].push(t)},hasEventListener:function(i,t){if(void 0===this._listeners)return!1;var e=this._listeners;return void 0!==e[i]&&-1!==e[i].indexOf(t)},removeEventListener:function(i,t){if(void 0!==this._listeners){var e=this._listeners[i];if(void 0!==e){var s=e.indexOf(t);-1!==s&&e.splice(s,1)}}},dispatchEvent:function(i){if(void 0!==this._listeners){var t=this._listeners[i.type];if(void 0!==t){i.target=this;var e=[],s=0,n=t.length;for(s=0;s1?t[t.length-1]:void 0:t[0]},this.getActiveContent=function(){var t=this.getActiveTab().getElementsByTagName("A")[0].getAttribute("href").replace("#","");return t&&document.getElementById("c-"+t)},this.tab.addEventListener("click",this.handle,!1)},d=document.querySelectorAll("[data-toggle='tab'], [data-toggle='pill']"),u=0,h=d.length;u0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])}); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/custom-elements-es5-adapter.js b/documentation/docs/generated/js/libs/custom-elements-es5-adapter.js new file mode 100644 index 0000000000..3a694b8f70 --- /dev/null +++ b/documentation/docs/generated/js/libs/custom-elements-es5-adapter.js @@ -0,0 +1,15 @@ +/** +@license @nocompile +Copyright (c) 2018 The Polymer Project Authors. All rights reserved. +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt +Code distributed by Google as part of the polymer project is also +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt +*/ +(function () { + 'use strict'; + + (function(){if(void 0===window.Reflect||void 0===window.customElements||window.customElements.hasOwnProperty('polyfillWrapFlushCallback'))return;const a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)},HTMLElement.prototype=a.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,a);})(); + +}()); diff --git a/documentation/docs/generated/js/libs/custom-elements.min.js b/documentation/docs/generated/js/libs/custom-elements.min.js new file mode 100644 index 0000000000..9b64a23caf --- /dev/null +++ b/documentation/docs/generated/js/libs/custom-elements.min.js @@ -0,0 +1,38 @@ +(function(){ + 'use strict';var h=new function(){};var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function m(b){var a=aa.has(b);b=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(b);return!a&&b}function n(b){var a=b.isConnected;if(void 0!==a)return a;for(;b&&!(b.__CE_isImportDocument||b instanceof Document);)b=b.parentNode||(window.ShadowRoot&&b instanceof ShadowRoot?b.host:void 0);return!(!b||!(b.__CE_isImportDocument||b instanceof Document))} + function p(b,a){for(;a&&a!==b&&!a.nextSibling;)a=a.parentNode;return a&&a!==b?a.nextSibling:null} + function t(b,a,c){c=c?c:new Set;for(var d=b;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;a(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)t(d,a,c);d=p(b,e);continue}else if("template"===f){d=p(b,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)t(e,a,c)}d=d.firstChild?d.firstChild:p(b,d)}}function u(b,a,c){b[a]=c};function v(){this.a=new Map;this.s=new Map;this.f=[];this.b=!1}function ba(b,a,c){b.a.set(a,c);b.s.set(c.constructor,c)}function w(b,a){b.b=!0;b.f.push(a)}function x(b,a){b.b&&t(a,function(a){return y(b,a)})}function y(b,a){if(b.b&&!a.__CE_patched){a.__CE_patched=!0;for(var c=0;ct?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);r>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);r>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===ho||n[0]===po?po+n:n}function s(n){return(n+="")[0]===po?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function d(){var n=0;for(var t in this._)++n;return n}function v(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function x(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function M(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=go.length;e=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=ko.get(n);return c&&(n=c,l=B),a?t?i:r:t?_:u}function $(n,t){return function(e){var r=to.event;to.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{to.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Eo,i="click"+r,u=to.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==No&&(No=!("onselectstart"in e)&&M(e.style,"userSelect")),No){var o=n(e).style,a=o[No];o[No]="none"}return function(n){if(u.on(r,null),No&&(o[No]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(Ao<0){var u=t(n);if(u.scrollX||u.scrollY){var o=(r=to.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important"))[0][0].getScreenCTM();Ao=!(o.f||o.e),r.remove()}}return Ao?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return to.event.changedTouches[0].identifier}function K(n){return n>0?1:n<0?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:n<-1?Lo:Math.acos(n)}function tn(n){return n>1?Ro:n<-1?-Ro:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):bn(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:n<0&&(n+=360),n<60?u+(o-u)*n/60:n<180?o:n<240?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:t<0?0:t>1?1:t,e=e<0?0:e>1?1:e,o=e<=.5?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=to.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Do)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=dn(i)*Zo,r=dn(r)*Vo,u=dn(u)*Xo,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Po,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function dn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(n<=.00304?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):bn(""+n,mn,cn):new mn(n,t,e)}function xn(n){return new mn(n>>16,n>>8&255,255&n)}function Mn(n){return xn(n)+""}function _n(n){return n<16?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function bn(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=Wo.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o|=o>>4,a=240&u,a|=a>>4,l=15&u,l|=l<<4):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=l<.5?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(t0&&l<1?0:r),new ln(r,i,l)}function Sn(n,t,e){var r=vn((.4124564*(n=kn(n))+.3575761*(t=kn(t))+.1804375*(e=kn(e)))/Zo),i=vn((.2126729*n+.7151522*t+.072175*e)/Vo);return hn(116*i-16,500*(r-i),200*(i-vn((.0193339*n+.119192*t+.9503041*e)/Xo)))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&t<300||304===t){try{n=e.call(u,l)}catch(n){return void o.error.call(u,n)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=to.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=to.event;to.event=n;try{o.progress.call(u,l)}finally{to.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(ro(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},to.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;r<2&&(t=0),r<3&&(e=Date.now());var i={c:n,t:e+t,n:null};return Go?Go.n=i:Jo=i,Go=i,Ko||(Qo=clearTimeout(Qo),Ko=1,na(Tn)),i}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(Qo),Qo=setTimeout(Tn,t)),Ko=0):(Ko=1,na(Tn))}function Rn(){for(var n=Date.now(),t=Jo;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=Jo,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Un(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ea.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,d="",v="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,v="%",p="f";break;case"p":g=100,v="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(d="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(d=i[0],v=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=ra.get(p)||Fn;var x=c&&s;return function(n){var e=v;if(y&&n%1)return"";var i=n<0||0===n&&1/n<0?(n=-n,"-"):"-"===a?"":a;if(g<0){var l=to.formatPrefix(n,h);n=l.scale(n),e=l.symbol+v}else n*=g;var M,_,b=(n=p(n,h)).lastIndexOf(".");if(b<0){var w=m?n.lastIndexOf("e"):-1;w<0?(M=n,_=""):(M=n.substring(0,w),_=n.substring(w))}else M=n.substring(0,b),_=t+n.substring(b+1);!c&&s&&(M=u(M,1/0));var S=d.length+M.length+_.length+(x?0:i.length),k=S"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(x?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return t-e1)for(;o=c)return-1;if(37===(i=t.charCodeAt(a++))){if(o=t.charAt(a++),!(u=C[o in aa?t.charAt(a++):o])||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){M.lastIndex=0;var r=M.exec(t.slice(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=x.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,d=n.days,v=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{var t=new(ua=Hn);return t._=n,r(t)}finally{ua=Date}}var r=t(n);return e.parse=function(n){try{ua=Hn;var t=r.parse(n);return t&&t._}finally{ua=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var x=to.map(),M=Vn(d),_=Xn(d),b=Vn(v),w=Xn(v),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){x.set(n.toLowerCase(),t)});var A={a:function(n){return v[n.getDay()]},A:function(n){return d[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ia.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ia.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ia.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=n<0?"-":"",i=(r?-n:n)+"",u=i.length;return r+(u68?1900:2e3)}function nt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){la.lastIndex=0;var r=la.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=so(t)/60|0,i=so(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){ca.lastIndex=0;var r=ca.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);da.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;va.point=function(o,a){va.point=n,r=(t=o)*Do,i=Math.cos(a=(e=a)*Do/2+Lo/4),u=Math.sin(a)},va.lineEnd=function(){n(t,e)}}function vt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function xt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function Mt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function _t(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function bt(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return so(n[0]-t[0])=0;--a)i.point((s=f[a])[0],s[1]);else r(p.x,p.p.x,-1,i);p=p.p}f=(p=p.o).z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(_||(u.polygonStart(),_=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,d,v=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=to.merge(p);var n=Ot(y,g);p.length?(_||(u.polygonStart(),_=!0),Lt(p,jt,n,e,u)):n&&(_||(u.polygonStart(),_=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),_&&(u.polygonEnd(),_=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},x=Pt(),M=t(x),_=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:_,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function jt(n,t){return((n=n.x)[0]<0?n[1]-Ro-Co:Ro-n[1])-((t=t.x)[0]<0?t[1]-Ro-Co:Ro-t[1])}function Ut(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Lo:-Lo,l=so(u-e);so(l-Lo)0?Ro:-Ro),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Lo&&(so(e-i)Co?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Ro,r.point(-Lo,i),r.point(0,i),r.point(Lo,i),r.point(Lo,0),r.point(Lo,-i),r.point(0,-i),r.point(-Lo,-i),r.point(-Lo,0),r.point(-Lo,i);else if(so(n[0]-t[0])>Co){var u=n[0]=0?1:-1,w=b*_,S=w>Lo,k=g*x;if(da.add(Math.atan2(k*b*Math.sin(w),d*M+k*Math.cos(w))),u+=S?_+b*qo:_,S^h>=e^y>=e){var N=mt(vt(s),vt(n));_t(N);var E=mt(i,N);_t(E);var A=(S^_>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^_>=0?1:-1)}if(!v++)break;h=y,g=x,d=M,s=n}}return(u<-Co||uu}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],d=t(s,h),v=o?d?0:i(s,h):d?i(s+(s<0?Lo:-Lo),h):0;if(!e&&(c=l=d)&&n.lineStart(),d!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Co,g[1]+=Co,d=t(g[0],g[1]))),d!==l)f=0,d?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^d){var y;v&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!d||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=d,u=v},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=[1,0,0],i=mt(vt(n),vt(t)),o=yt(i,i),a=i[0],l=o-a*a;if(!l)return!e&&n;var c=u*o/l,f=-u*a/l,s=mt(r,i),h=Mt(r,c);xt(h,Mt(i,f));var p=s,g=yt(h,p),d=yt(p,p),v=g*g-d*(yt(h,h)-1);if(!(v<0)){var y=Math.sqrt(v),m=Mt(p,(-g-y)/d);if(xt(m,h),m=bt(m),!e)return m;var x,M=n[0],_=t[0],b=n[1],w=t[1];_0^m[1]<(so(m[0]-M)Lo^(M<=m[0]&&m[0]<=_)){var E=Mt(p,(-g+y)/d);return xt(E,h),[m,bt(E)]}}}function i(t,e){var r=o?n:Lo-n,i=0;return t<-r?i|=1:t>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=so(u)>Co;return Rt(t,e,de(n,6*Do),o?[0,-n]:[-Lo,n-Lo])}function It(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=0,s=1,h=a.x-l,p=a.y-c;if(u=n-l,h||!(u>0)){if(u/=h,h<0){if(u0){if(u>s)return;u>f&&(f=u)}if(u=e-l,h||!(u<0)){if(u/=h,h<0){if(u>s)return;u>f&&(f=u)}else if(h>0){if(u0)){if(u/=p,p<0){if(u0){if(u>s)return;u>f&&(f=u)}if(u=r-c,p||!(u<0)){if(u/=p,p<0){if(u>s)return;u>f&&(f=u)}else if(p>0){if(u0&&(i.a={x:l+f*h,y:c+f*p}),s<1&&(i.b={x:l+s*h,y:c+s*p}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return so(r[0]-n)0?0:3:so(r[0]-e)0?2:1:so(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=v.length,r=n[1],i=0;ir&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0)do{c.point(0===f||3===f?n:e,f>1?r:t)}while((f=(f+l+4)%4)!==s);else c.point(a[0],a[1])}function f(i,u){return n<=i&&i<=e&&t<=u&&u<=r}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,v&&v.push(y=[]),S=!0,w=!1,_=b=NaN}function p(){d&&(g(m,x),M&&w&&E.rejoin(),d.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){var e=f(n=Math.max(-za,Math.min(za,n)),t=Math.max(-za,Math.min(za,t)));if(v&&y.push([n,t]),S)m=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var d,v,y,m,x,M,_,b,w,S,k,N=a,E=Pt(),A=It(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,d=[],v=[],k=!0},polygonEnd:function(){a=N,d=to.merge(d);var t=l([n,r]),e=k&&t,i=d.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(d,u,t,c,a),a.polygonEnd()),d=v=y=null}};return C}}function Vt(n){var t=0,e=Lo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Lo/180,e=n[1]*Lo/180):[t/Lo*180,e/Lo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){qa+=i*n-r*t,r=n,i=t}var t,e,r,i;ja.point=function(u,o){ja.point=n,t=r=u,e=i=o},ja.lineEnd=function(){n(t,e)}}function Bt(n,t){nDa&&(Da=n),tPa&&(Pa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){xa+=n,Ma+=t,++_a}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);ba+=o*(t+n)/2,wa+=o*(e+r)/2,Sa+=o,Gt(t=n,e=r)}var t,e;Fa.point=function(r,i){Fa.point=n,Gt(t=r,e=i)}}function Qt(){Fa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);ba+=o*(r+n)/2,wa+=o*(i+t)/2,Sa+=o,ka+=(o=i*n-r*t)*(r+n),Na+=o*(i+t),Ea+=3*o,Gt(r=n,i=t)}var t,e,r,i;Fa.point=function(u,o){Fa.point=n,Gt(t=r=u,e=i=o)},Fa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,qo)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:_};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=NaN,S.point=u,t.lineStart()}function u(e,r){var u=vt([e,r]),o=n(e,r);i(x,M,m,_,b,w,x=o[0],M=o[1],m=e,_=u[0],b=u[1],w=u[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=x,g=M,d=_,v=b,y=w,S.point=u}function f(){i(x,M,m,_,b,w,p,g,s,d,v,y,a,t),S.lineEnd=o,o()}var s,h,p,g,d,v,y,m,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,d,v,y){var m=f-t,x=s-e,M=m*m+x*x;if(M>4*u&&v--){var _=a+p,b=l+g,w=c+d,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),N=so(so(w)-1)u||so((m*z+x*L)/M-.5)>.3||a*p+l*g+c*d0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Po,e*Po])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Do,n[1]*Do),[n[0]*h+l,c-n[1]*h]}function e(n){return(n=a.invert((n[0]-l)/h,(c-n[1])/h))&&[n[0]*Po,n[1]*Po]}function r(){a=Ct(o=se(y,x,M),u);var n=u(d,v);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,d=0,v=0,y=0,x=0,M=0,_=Ca,b=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(_(o,s(b(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(_=null==n?(w=n,Ca):Yt((w=+n)*Do),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,b=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(d=n[0]%360*Do,v=n[1]%360*Do,r()):[d*Po,v*Po]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Do,x=n[1]%360*Do,M=n.length>2?n[2]%360*Do:0,r()):[y*Po,x*Po,M*Po]},to.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Do,e*Do)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Lo?n-qo:n<-Lo?n+qo:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Lo?t-qo:t<-Lo?t+qo:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function de(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=ve(e,i),u=ve(e,u),(o>0?iu)&&(i+=o*qo)):(i=n+o*qo,u=n-.5*l);for(var c,f=i;o>0?f>u:f0?t<-Ro+Co&&(t=-Ro+Co):t>Ro-Co&&(t=Ro-Co);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Lo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Ro]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return so(i)1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function je(n){var t=Qa.pop()||new Pe;return t.site=n,t}function Ue(n){Be(n),Ja.remove(n),Qa.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];Ue(n);for(var l=u;l.circle&&so(e-l.circle.x)Co)a=a.L;else{if(!((i=u-Ye(a,o))>Co)){r>-Co?(t=a.P,e=a):i>-Co?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=je(n);if(Ja.insert(t,l),t||e){if(t===e)return Be(t),e=je(t.site),Ja.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(e){Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,d=g.x-f,v=g.y-s,y=2*(h*v-p*d),m=h*h+p*p,x=d*d+v*v,M={x:(v*m-p*x)/y+f,y:(h*x-d*m)/y+s};nr(e.edge,c,g,M),l.edge=Ke(c,n,null,M),e.edge=Ke(n,g,null,M),$e(t),$e(e)}else l.edge=Ke(t.site,l.site)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-1/0;var a=(e=o.site).x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ye(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ie(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],d=Wa,v=d.length;v--;)if((u=d[v])&&u.prepare())for(l=(a=u.edges).length,o=0;oCo||so(i-e)>Co)&&(a.splice(o,0,new tr(Qe(u.site,f,so(r-s)Co?{x:s,y:so(t-s)Co?{x:so(e-g)Co?{x:h,y:so(t-h)Co?{x:so(e-p)=-zo)){var h=l*l+c*c,p=f*f+v*v,g=(v*h-c*p)/s,d=(l*p-f*h)/s,v=d+a,y=nl.pop()||new Xe;y.arc=n,y.site=i,y.x=g+o,y.y=v+Math.sqrt(g*g+d*d),y.cy=v,n.circle=y;for(var m=null,x=Ka._;x;)if(y.y=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:v,y:l};e={x:v,y:c}}else{if(u){if(u.y1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||h=_)<<1|t>=M,w=b+4;bu&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:vr(e,r)})),u=rl.lastIndex;return u=0&&!(e=to.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;e=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function br(n){return function(t){return.5*(t<.5?n(2*t):2-n(2-2*t))}}function wr(n){return n*n}function Sr(n){return n*n*n}function kr(n){if(n<=0)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(n<.5?e:3*(n-t)+e-.75)}function Nr(n){return function(t){return Math.pow(t,n)}}function Er(n){return 1-Math.cos(n*Ro)}function Ar(n){return Math.pow(2,10*(n-1))}function Cr(n){return 1-Math.sqrt(1-n*n)}function zr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/qo*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*qo/t)}}function Lr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qr(n){return n<1/2.75?7.5625*n*n:n<2/2.75?7.5625*(n-=1.5/2.75)*n+.75:n<2.5/2.75?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tr(n,t){n=to.hcl(n),t=to.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:u<-180&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Rr(n,t){n=to.hsl(n),t=to.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:u<-180&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=to.lab(n),t=to.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Fr(t),i=Ur(t,e),u=Fr(Hr(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Or(e)+"rotate(",null,")")-2,x:vr(n,t)})):t&&e.push(Or(e)+"rotate("+t+")")}function Zr(n,t,e,r){n!==t?r.push({i:e.push(Or(e)+"skewX(",null,")")-2,x:vr(n,t)}):t&&e.push(Or(e)+"skewX("+t+")")}function Vr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Or(e)+"scale(",null,",",null,")");r.push({i:i-4,x:vr(n[0],t[0])},{i:i-2,x:vr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Or(e)+"scale("+t+")")}function Xr(n,t){var e=[],r=[];return n=to.transform(n),t=to.transform(t),Yr(n.translate,t.translate,e,r),Ir(n.rotate,t.rotate,e,r),Zr(n.skew,t.skew,e,r),Vr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function ui(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oi&&(r=e,i=t);return r}function vi(n){return n.reduce(yi,0)}function yi(n,t){return n+t[1]}function mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function Mi(n){return[to.min(n),to.max(n)]}function _i(n,t){return n.value-t.value}function bi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function wi(n,t){n._pack_next=t,t._pack_prev=n}function Si(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function ki(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-1/0,h=1/0,p=-1/0;if(e.forEach(Ni),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(Ci(r,i,u=e[2]),t(u),bi(r,u),r._pack_prev=u,bi(u,i),i=r._pack_next,o=3;o2?Yi:Fi,l=r?Br:$r;return o=i(n,t,l,e),a=i(t,n,l,mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Pr)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return $i(n,t)},u.tickFormat=function(t,e){return Bi(n,t,e)},u.nice=function(t){return Vi(n,t),i()},u.copy=function(){return Ii(n,t,e,r)},i()}function Zi(n,t){return to.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Vi(n,t){return Hi(n,Oi(Xi(n,t)[2])),Hi(n,Oi(Xi(n,t)[2])),n}function Xi(n,t){null==t&&(t=10);var e=ji(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return u<=.15?i*=10:u<=.35?i*=5:u<=.75&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function $i(n,t){return to.range.apply(to,Xi(n,t))}function Bi(n,t,e){var r=Xi(n,t);if(e){var i=ea.exec(e);if(i.shift(),"s"===i[8]){var u=to.formatPrefix(Math.max(so(r[0]),so(r[1])));return i[7]||(i[7]="."+Wi(u.scale(r[2]))),i[8]="f",e=to.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+Ji(i[8],r)),e=i.join("")}else e=",."+Wi(r[2])+"f";return to.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Ji(n,t){var e=Wi(t[2]);return n in dl?Math.abs(e-Wi(Math.max(so(t[0]),so(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Gi(n,t,e,r){function i(n){return(e?Math.log(n<0?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Hi(r.map(i),e?Math:yl);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=ji(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;c0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return vl;arguments.length<2?e=vl:"function"!=typeof e&&(e=to.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return o*t0?a[e-1]:n[0],e0?0:1}function hu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,d=(s+p)/2,v=h-f,y=p-s,m=v*v+y*y,x=e-r,M=f*p-h*s,_=(y<0?-1:1)*Math.sqrt(Math.max(0,x*x*m-M*M)),b=(M*y-v*_)/m,w=(-M*v-y*_)/m,S=(M*y+v*_)/m,k=(-M*v+y*_)/m,N=b-g,E=w-d,A=S-g,C=k-d;return N*N+E*E>A*A+C*C&&(b=S,w=k),[[b-l,w-c],[b*e/x,w*e/x]]}function pu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function du(n){return n.join("L")+"Z"}function vu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function yu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r);for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Tu(n){return n.length<3?gu(n):n[0]+bu(n,qu(n))}function Ru(n){for(var t,e,r,i=-1,u=n.length;++i0;)p[--a].call(n,o);if(u>=1)return d.event&&d.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),d=g[r];d||(l=i.time,f=qn(u,0,l),d=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function Bu(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Wu(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Ju(n){return n.toISOString()}function Gu(n,t,e){function r(t){return n(t)}function i(n,e){var r=(n[1]-n[0])/e,i=to.bisect(Yl,r);return i==Yl.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[r/Yl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Ku(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Ku(+t+1);return t}}:n))},r.ticks=function(n,t){var e=ji(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],Ku(+e[1]+1),t<1?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Gu(n.copy(),t,e)},Zi(r,n)}function Ku(n){return new Date(n)}function Qu(n){return JSON.parse(n.responseText)}function no(n){var t=io.createRange();return t.selectNode(io.body),t.createContextualFragment(n.responseText)}var to={version:"3.5.17"},eo=[].slice,ro=function(n){return eo.call(n)},io=this.document;if(io)try{ro(io.documentElement.childNodes)[0].nodeType}catch(n){ro=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),io)try{io.createElement("DIV").style.setProperty("opacity",0,"")}catch(n){var uo=this.Element.prototype,oo=uo.setAttribute,ao=uo.setAttributeNS,lo=this.CSSStyleDeclaration.prototype,co=lo.setProperty;uo.setAttribute=function(n,t){oo.call(this,n,t+"")},uo.setAttributeNS=function(n,t,e){ao.call(this,n,t,e+"")},lo.setProperty=function(n,t,e){co.call(this,n,t+"",e)}}to.ascending=e,to.descending=function(n,t){return tn?1:t>=n?0:NaN},to.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},to.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},to.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),i=r){e=i=r;break}for(;++ur&&(e=r),i1)return l/(f-1)},to.deviation=function(){var n=to.variance.apply(this,arguments);return n?Math.sqrt(n):n};var fo=u(e);to.bisectLeft=fo.left,to.bisect=to.bisectRight=fo.right,to.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},to.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,u<2&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},to.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},to.pairs=function(n){for(var t=0,e=n.length-1,r=n[0],i=new Array(e<0?0:e);t=0;)for(t=(r=n[i]).length;--t>=0;)e[--o]=r[t];return e};var so=Math.abs;to.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e==1/0)throw new Error("infinite range");var r,i=[],u=a(so(e)),o=-1;if(n*=u,t*=u,(e*=u)<0)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,d=u[a++],v=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(to.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},to.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;e=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},to.event=null,to.requote=function(n){return n.replace(vo,"\\$&")};var vo=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,yo={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},mo=function(n,t){return t.querySelector(n)},xo=function(n,t){return t.querySelectorAll(n)},Mo=function(n,t){var e=n.matches||n[M(n,"matchesSelector")];return(Mo=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(mo=function(n,t){return Sizzle(n,t)[0]||null},xo=Sizzle,Mo=Sizzle.matchesSelector),to.selection=function(){return to.select(io.documentElement)};var _o=to.selection.prototype=[];_o.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),wo.hasOwnProperty(e)?{space:wo[e],local:n}:n}},_o.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=to.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},_o.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},_o.sort=function(n){n=Y.apply(this,arguments);for(var t=-1,e=this.length;++t0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){_&&_.domain(M.range().map(function(n){return(n-k.x)/k.k}).map(M.invert)),w&&w.domain(b.range().map(function(n){return(n-k.y)/k.k}).map(b.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),v=null)}function s(){function n(){a=1,u(to.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=to.select(t(i)).on(q,n).on(T,r),h=e(to.mouse(i)),p=W(i);ql.call(i),l(o)}function h(){function n(){var n=to.touches(g);return p=k.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=e(n))}),n}function t(){var t=to.event.target;to.select(t).on(M,r).on(_,a),b.push(t);for(var e=to.event.changedTouches,i=0,u=e.length;i1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=to.touches(g);ql.call(g);for(var a=0,l=o.length;a=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ra=to.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=to.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ia=to.time={},ua=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){oa.setUTCDate.apply(this._,arguments)},setDay:function(){oa.setUTCDay.apply(this._,arguments)},setFullYear:function(){oa.setUTCFullYear.apply(this._,arguments)},setHours:function(){oa.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){oa.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){oa.setUTCMinutes.apply(this._,arguments)},setMonth:function(){oa.setUTCMonth.apply(this._,arguments)},setSeconds:function(){oa.setUTCSeconds.apply(this._,arguments)},setTime:function(){oa.setTime.apply(this._,arguments)}};var oa=Date.prototype;ia.year=On(function(n){return(n=ia.day(n)).setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ia.years=ia.year.range,ia.years.utc=ia.year.utc.range,ia.day=On(function(n){var t=new ua(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ia.days=ia.day.range,ia.days.utc=ia.day.utc.range,ia.dayOfYear=function(n){var t=ia.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ia[n]=On(function(n){return(n=ia.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ia.year(n).getDay();return Math.floor((ia.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ia[n+"s"]=e.range,ia[n+"s"].utc=e.utc.range,ia[n+"OfYear"]=function(n){var e=ia.year(n).getDay();return Math.floor((ia.dayOfYear(n)+(e+t)%7)/7)}}),ia.week=ia.sunday,ia.weeks=ia.sunday.range,ia.weeks.utc=ia.sunday.utc.range,ia.weekOfYear=ia.sundayOfYear;var aa={"-":"",_:" ",0:"0"},la=/^\s*\d+/,ca=/^%/;to.locale=function(n){return{numberFormat:Un(n),timeFormat:In(n)}};var fa=to.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});to.format=fa.numberFormat,to.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,sa),st(sa.s,this.s,this),this.s?this.t+=sa.t:this.s=sa.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var sa=new ft;to.geo.stream=function(n,t){n&&ha.hasOwnProperty(n.type)?ha[n.type](n,t):ht(n,t)};var ha={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rp&&(p=t)}function t(t,e){var r=vt([t*Do,e*Do]);if(y){var i=mt(y,r),u=mt([i[1],-i[0],0],i);_t(u),u=bt(u);var o=t-g,l=o>0?1:-1,c=u[0]*Po*l,d=so(o)>180;if(d^(l*gp&&(p=v);else if(c=(c+360)%360-180,d^(l*gp&&(p=e);d?ta(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(th&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){_.point=t}function r(){M[0]=f,M[1]=h,_.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=so(r)>180?r+(r>0?360:-360):r}else d=n,v=e;va.point(n,e),t(n,e)}function u(){va.lineStart()}function o(){i(d,v),va.lineEnd(),so(m)>Co&&(f=-(h=180)),M[0]=f,M[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nCo?p=90:m<-Co&&(s=-90),M[0]=f,M[1]=h}};return function(n){p=h=-(f=s=1/0),x=[],to.geo.stream(n,_);var t=x.length;if(t){x.sort(l);for(var e=1,r=[g=x[0]];ea(g[0],g[1])&&(g[1]=u[1]),a(u[0],g[1])>a(g[0],g[1])&&(g[0]=u[0])):r.push(g=u);for(var i,u,o=-1/0,e=0,g=r[t=r.length-1];e<=t;g=u,++e)u=r[e],(i=a(g[1],u[0]))>o&&(o=i,f=u[0],h=g[1])}return x=M=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),to.geo.centroid=function(n){ya=ma=xa=Ma=_a=ba=wa=Sa=ka=Na=Ea=0,to.geo.stream(n,Aa);var t=ka,e=Na,r=Ea,i=t*t+e*e+r*r;return i=.12&&i<.234&&r>=-.425&&r<-.214?o:i>=.166&&i<.234&&r>=-.214&&r<-.115?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Co,s+.12*c+Co],[f-.214*c-Co,s+.234*c-Co]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Co,s+.166*c+Co],[f-.115*c-Co,s+.234*c-Co]]).stream(l).point,n},n.scale(1070)};var La,qa,Ta,Ra,Da,Pa,ja={point:_,lineStart:_,lineEnd:_,polygonStart:function(){qa=0,ja.lineStart=$t},polygonEnd:function(){ja.lineStart=ja.lineEnd=ja.point=_,La+=so(qa/2)}},Ua={point:Bt,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},Fa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Fa.lineStart=ne},polygonEnd:function(){Fa.point=Gt,Fa.lineStart=Kt,Fa.lineEnd=Qt}};to.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),to.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return La=0,to.geo.stream(n,i(ja)),La},n.centroid=function(n){return xa=Ma=_a=ba=wa=Sa=ka=Na=Ea=0,to.geo.stream(n,i(Fa)),Ea?[ka/Ea,Na/Ea]:Sa?[ba/Sa,wa/Sa]:_a?[xa/_a,Ma/_a]:[NaN,NaN]},n.bounds=function(n){return Da=Pa=-(Ta=Ra=1/0),to.geo.stream(n,i(Ua)),[[Ta,Ra],[Da,Pa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(to.geo.albersUsa()).context(null)},to.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},to.geo.projection=oe,to.geo.projectionMutator=ae,(to.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,to.geo.rotation=function(n){function t(t){return t=n(t[0]*Do,t[1]*Do),t[0]*=Po,t[1]*=Po,t}return n=se(n[0]%360*Do,n[1]*Do,n.length>2?n[2]*Do:0),t.invert=function(t){return t=n.invert(t[0]*Do,t[1]*Do),t[0]*=Po,t[1]*=Po,t},t},fe.invert=ce,to.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Do,-n[1]*Do,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Po,n[1]*=Po}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=de((t=+r)*Do,i*Do),n):t},n.precision=function(r){return arguments.length?(e=de(t*Do,(i=+r)*Do),n):i},n.angle(90)},to.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Do,i=n[1]*Do,u=t[1]*Do,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},to.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return to.range(Math.ceil(u/v)*v,i,v).map(h).concat(to.range(Math.ceil(c/y)*y,l,y).map(p)).concat(to.range(Math.ceil(r/g)*g,e,g).filter(function(n){return so(n%v)>Co}).map(f)).concat(to.range(Math.ceil(a/d)*d,o,d).filter(function(n){return so(n%y)>Co}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,d=g,v=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],y=+t[1],n):[v,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],d=+t[1],n):[g,d]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Co],[180,90-Co]]).minorExtent([[-180,-80-Co],[180,80+Co]])},to.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=xe,i=Me;return n.distance=function(){return to.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},to.geo.interpolate=function(n,t){return _e(n[0]*Do,n[1]*Do,t[0]*Do,t[1]*Do)},to.geo.length=function(n){return Ha=0,to.geo.stream(n,Oa),Ha};var Ha,Oa={sphere:_,point:_,lineStart:be,lineEnd:_,polygonStart:_,polygonEnd:_},Ya=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(to.geo.azimuthalEqualArea=function(){return oe(Ya)}).raw=Ya;var Ia=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(to.geo.azimuthalEquidistant=function(){return oe(Ia)}).raw=Ia,(to.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(to.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var Za=we(function(n){return 1/n},Math.atan);(to.geo.gnomonic=function(){return oe(Za)}).raw=Za,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ro]},(to.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var Va=we(function(){return 1},Math.asin);(to.geo.orthographic=function(){return oe(Va)}).raw=Va;var Xa=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(to.geo.stereographic=function(){return oe(Xa)}).raw=Xa,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ro]},(to.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,to.geom={},to.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;t=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[]).point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Co)*Co,y:Math.round(o(n,t)/Co)*Co,i:t}})}var r=Ce,i=ze,u=r,o=i,a=tl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u=e.site,o=e.edges.sort(Ve),a=-1,l=o.length,c=o[l-1].edge,f=c.l===u?c.r:c.l;++a=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]={leaf:!0,nodes:[],point:null,x:null,y:null}),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,d,v,y,m,x=En(a),M=En(l);if(null!=t)d=t,v=e,y=r,m=i;else if(y=m=-(d=v=1/0),s=[],h=[],g=n.length,o)for(p=0;py&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;py&&(y=_),b>m&&(m=b),s.push(_),h.push(b)}var w=y-d,S=m-v;w>S?m=v+w:y=d+S;var k={leaf:!0,nodes:[],point:null,x:null,y:null};if(k.add=function(n){u(k,n,+x(n,++p),+M(n,p),d,v,y,m)},k.visit=function(n){hr(n,k,d,v,y,m)},k.find=function(n){return pr(k,n[0],n[1],d,v,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=ul.get(e)||il,r=ol.get(r)||m,Mr(r(e.apply(null,eo.call(arguments,1))))},to.interpolateHcl=Tr,to.interpolateHsl=Rr,to.interpolateLab=Dr,to.interpolateRound=Pr,to.transform=function(n){var t=io.createElementNS(to.ns.prefix.svg,"g");return(to.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:al)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var al={a:1,b:0,c:0,d:1,e:0,f:0};to.interpolateTransform=Xr,to.layout={},to.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;l=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return ui(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=li,e=oi,r=ai;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ii(t,function(n){n.children&&(n.value=0)}),ui(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},to.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++ca&&(a=r),o.push(r)}for(e=0;e0)for(u=-1;++u=f[0]&&a<=f[1]&&((o=l[to.bisect(s,a,1,p)-1]).y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=Mi,i=mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},to.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,ui(a,function(n){n.r=+f(n.value)}),ui(a,ki),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;ui(a,function(n){n.r+=s}),ui(a,ki),ui(a,function(n){n.r-=s})}return Ai(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=to.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ri(n,e)},to.layout.tree=function(){function n(n,r){var u=M.call(this,n,r),o=t(u[0]);return N=o,e(o,0),i(o),g(o,0),m(o),u}function t(n){var e={t:n,prelim:0,mod:0,shift:0,change:0,msel:0,mser:0};if(n.x=0,n.y=0,w)e.x_size=1,e.y_size=1;else if("object"==typeof S)e.x_size=S[0],e.y_size=S[1];else{var r=S(n);e.x_size=r[0],e.y_size=r[1]}k&&(n.x_size=e.x_size,n.y_size=e.y_size);for(var i=[],u=n.children?n.children.length:0,o=0;oe.lowY&&(e=e.nxt);var p=i+r.prelim-(o+u.prelim);null!=_?p+=_(r.t,u.t)*N.x_size:null!=b&&(p+=r.x_size/2+u.x_size/2+b(r.t,u.t)),p>0?(o+=p,a(n,t,e.index,p)):1===t&&0===o&&0===r.num_children&&u.num_children>1&&p<0&&(o+=p,a(n,t,e.index,p));var g=f(r),d=f(u);g<=d&&null!=(r=c(r))&&(i+=r.mod),g>=d&&null!=(u=l(u))&&(o+=u.mod)}null==r&&null!=u?s(n,t,u,o):null!=r&&null==u&&h(n,t,r,i)}function a(n,t,e,r){n.children[t].mod+=r,n.children[t].msel+=r,n.children[t].mser+=r,d(n,t,e,r)}function l(n){return 0==n.num_children?n.tl:n.children[0]}function c(n){return 0==n.num_children?n.tr:n.children[n.num_children-1]}function f(n){return n.t.y+n.y_size}function s(n,t,e,r){var i=n.children[0].el;i.tl=e;var u=r-e.mod-n.children[0].msel;i.mod+=u,i.prelim-=u,n.children[0].el=n.children[t].el,n.children[0].msel=n.children[t].msel}function h(n,t,e,r){var i=n.children[t].er;i.tr=e;var u=r-e.mod-n.children[t].mser;i.mod+=u,i.prelim-=u,n.children[t].er=n.children[t-1].er,n.children[t].mser=n.children[t-1].mser}function p(n){n.prelim=(n.children[0].prelim+n.children[0].mod-n.children[0].x_size/2+n.children[n.num_children-1].mod+n.children[n.num_children-1].prelim+n.children[n.num_children-1].x_size/2)/2}function g(n,t){t+=n.mod,n.t.x=n.prelim+t,v(n);for(var e=0;e=e.lowY;)e=e.nxt;return{lowY:n,index:t,nxt:e}}function m(n){if(null!=w){for(var t,e=n,r=n,i=n,u=[n];t=u.pop();)(f=t.t).xr.t.x&&(r=t),f.depth>i.t.depth&&(i=t),t.children&&(u=u.concat(t.children));var o=null==_?.5:_(e.t,r.t)/2,a=o-e.t.x,l=w[0]/(r.t.x+o+a),c=w[1]/(i.t.depth>0?i.t.depth:1);for(u=[n];t=u.pop();){var f=t.t;f.x=(f.x+a)*l,f.y=f.depth*c,k&&(f.x_size*=l,f.y_size*=c),t.children&&(u=u.concat(t.children))}}else x(n,-n.t.x)}function x(n,t){n.t.x+=t;for(var e=0;e0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,d))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,d,c,!1),d=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,d,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oi&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0;if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++u1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=to.random.normal.apply(to,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=to.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;es?0:1;if(c=To)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,d,v,y,m,x,M,_,b,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(v=u===bl?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(v/c*Math.sin(y))),n&&(N=tn(v/n*Math.sin(y)))),c){m=c*Math.cos(f+E),x=c*Math.sin(f+E),M=c*Math.cos(s-E),_=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Lo?0:1;if(E&&su(m,x,M,_)===p^C){var z=(f+s)/2;m=c*Math.cos(z),x=c*Math.sin(z),M=_=null}}else m=x=0;if(n){b=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Lo?0:1;if(N&&su(b,w,S,k)===1-p^L){var q=(f+s)/2;b=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else b=w=0;if(h>Co&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){d=nLo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=xe,o=Me,a=Pu,l=lu,c=cu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},to.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return"M"+(l=l.map(r))[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=xe,e=Me,r=ju;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},to.svg.diagonal.radial=function(){var n=to.svg.diagonal(),t=ju,e=n.projection;return n.projection=function(n){return arguments.length?e(Uu(t=n)):t},n},to.svg.symbol=function(){function n(n,r){return(El.get(t.call(this,n,r))||Ou)(e.call(this,n,r))}var t=Hu,e=Fu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var El=to.map({circle:Ou,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Cl)),e=t*Cl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});to.svg.symbolTypes=El.keys();var Al=Math.sqrt(3),Cl=Math.tan(30*Do);_o.transition=function(n){for(var t,e,r=zl||++Rl,i=Xu(n),u=[],o=Ll||{time:Date.now(),ease:kr,delay:0,duration:250},a=-1,l=this.length;++arect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==to.event.keyCode&&(C||(x=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function d(){32==to.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function v(){var n=to.mouse(_),t=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(to.event.altKey?(x||(x=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]1)for(var r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return u.default.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:if(t={onlyLeaves:!1,circularReference:"leaf",search:"dfsPreOrder",iterateOverObject:!0,skipIteration:function(){return!1}},void 0!==o.onlyLeaves&&(t.onlyLeaves=o.onlyLeaves),void 0!==o.circularReference&&(t.circularReference=o.circularReference),void 0!==o.iterateOverObject&&(t.iterateOverObject=o.iterateOverObject),void 0!==o.skipIteration&&(t.skipIteration=o.skipIteration),void 0===o.search){i.next=9;break}if(o.search in s){i.next=8;break}throw new Error("The search algorithm "+o.search+" is incorrect.");case 8:t.search=o.search;case 9:return r=new l.default(e,t),n=(0,d.default)(t.circularReference),i.delegateYield(s[t.search](r,t.onlyLeaves,n),"t0",12);case 12:case"end":return i.stop()}},_[0],this)}Object.defineProperty(r,"__esModule",{value:!0});var a=e("babel-runtime/regenerator"),u=o(a);r.default=i;var c=e("./search"),s=n(c),f=e("./root-node"),l=o(f),p=e("./seen"),d=o(p),_=[i].map(u.default.mark)},{"./root-node":5,"./search":6,"./seen":7,"babel-runtime/regenerator":115}],3:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:r.t0=l.default.keys(e);case 1:if((r.t1=r.t0()).done){r.next=7;break}return t=r.t1.value,r.next=5,[t,e[t]];case 5:r.next=1;break;case 7:case"end":return r.stop()}},p[0],this)}function i(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:t=0;case 1:if(!(tf;)if(u=c[f++],u!=u)return!0}else for(;s>f;f++)if((e||f in c)&&c[f]===r)return e||f||0;return!e&&-1}}},{"./_to-index":88,"./_to-iobject":90,"./_to-length":91}],39:[function(e,t,r){var n=e("./_cof"),o=e("./_wks")("toStringTag"),i="Arguments"==n(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=a(t=Object(e),o))?r:i?n(t):"Object"==(u=n(t))&&"function"==typeof t.callee?"Arguments":u}},{"./_cof":40,"./_wks":97}],40:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],41:[function(e,t,r){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},{}],42:[function(e,t,r){"use strict";var n=e("./_object-dp"),o=e("./_property-desc");t.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},{"./_object-dp":70,"./_property-desc":81}],43:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":35}],44:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],45:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":50}],46:[function(e,t,r){var n=e("./_is-object"),o=e("./_global").document,i=n(o)&&n(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":51,"./_is-object":59}],47:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],48:[function(e,t,r){var n=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=n(e),r=o.f;if(r)for(var a,u=r(e),c=i.f,s=0;u.length>s;)c.call(e,a=u[s++])&&t.push(a);return t}},{"./_object-gops":75,"./_object-keys":78,"./_object-pie":79}],49:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_ctx"),a=e("./_hide"),u="prototype",c=function(e,t,r){var s,f,l,p=e&c.F,d=e&c.G,_=e&c.S,b=e&c.P,h=e&c.B,y=e&c.W,v=d?o:o[t]||(o[t]={}),m=v[u],g=d?n:_?n[t]:(n[t]||{})[u];d&&(r=t);for(s in r)f=!p&&g&&void 0!==g[s],f&&s in v||(l=f?g[s]:r[s],v[s]=d&&"function"!=typeof g[s]?r[s]:h&&f?i(l,n):y&&g[s]==l?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t[u]=e[u],t}(l):b&&"function"==typeof l?i(Function.call,l):l,b&&((v.virtual||(v.virtual={}))[s]=l,e&c.R&&m&&!m[s]&&a(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},{"./_core":41,"./_ctx":43,"./_global":51,"./_hide":53}],50:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],51:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],52:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],53:[function(e,t,r){var n=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":45,"./_object-dp":70,"./_property-desc":81}],54:[function(e,t,r){t.exports=e("./_global").document&&document.documentElement},{"./_global":51}],55:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":45,"./_dom-create":46,"./_fails":50}],56:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":40}],57:[function(e,t,r){var n=e("./_iterators"),o=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||i[o]===e)}},{"./_iterators":65,"./_wks":97}],58:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":40}],59:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],60:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},{"./_an-object":37}],61:[function(e,t,r){"use strict";var n=e("./_object-create"),o=e("./_property-desc"),i=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),i(e,t+" Iterator")}},{"./_hide":53,"./_object-create":69,"./_property-desc":81,"./_set-to-string-tag":84,"./_wks":97}],62:[function(e,t,r){"use strict";var n=e("./_library"),o=e("./_export"),i=e("./_redefine"),a=e("./_hide"),u=e("./_has"),c=e("./_iterators"),s=e("./_iter-create"),f=e("./_set-to-string-tag"),l=e("./_object-gpo"),p=e("./_wks")("iterator"),d=!([].keys&&"next"in[].keys()),_="@@iterator",b="keys",h="values",y=function(){return this};t.exports=function(e,t,r,v,m,g,j){s(r,t,v);var w,x,k,O=function(e){if(!d&&e in M)return M[e];switch(e){case b:return function(){return new r(this,e)};case h:return function(){return new r(this,e)}}return function(){return new r(this,e)}},E=t+" Iterator",S=m==h,L=!1,M=e.prototype,A=M[p]||M[_]||m&&M[m],P=A||O(m),T=m?S?O("entries"):P:void 0,F="Array"==t?M.entries||A:A;if(F&&(k=l(F.call(new e)),k!==Object.prototype&&(f(k,E,!0),n||u(k,p)||a(k,p,y))),S&&A&&A.name!==h&&(L=!0,P=function(){return A.call(this)}),n&&!j||!d&&!L&&M[p]||a(M,p,P),c[t]=P,c[E]=y,m)if(w={values:S?P:O(h),keys:g?P:O(b),entries:T},j)for(x in w)x in M||i(M,x,w[x]);else o(o.P+o.F*(d||L),t,w);return w}},{"./_export":49,"./_has":52,"./_hide":53,"./_iter-create":61,"./_iterators":65,"./_library":67,"./_object-gpo":76,"./_redefine":82,"./_set-to-string-tag":84,"./_wks":97}],63:[function(e,t,r){var n=e("./_wks")("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i=[7],a=i[n]();a.next=function(){return{done:r=!0}},i[n]=function(){return a},e(i)}catch(e){}return r}},{"./_wks":97}],64:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],65:[function(e,t,r){t.exports={}},{}],66:[function(e,t,r){var n=e("./_object-keys"),o=e("./_to-iobject");t.exports=function(e,t){for(var r,i=o(e),a=n(i),u=a.length,c=0;u>c;)if(i[r=a[c++]]===t)return r}},{"./_object-keys":78,"./_to-iobject":90}],67:[function(e,t,r){t.exports=!0},{}],68:[function(e,t,r){var n=e("./_uid")("meta"),o=e("./_is-object"),i=e("./_has"),a=e("./_object-dp").f,u=0,c=Object.isExtensible||function(){return!0},s=!e("./_fails")(function(){return c(Object.preventExtensions({}))}),f=function(e){a(e,n,{value:{i:"O"+ ++u,w:{}}})},l=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!c(e))return"F";if(!t)return"E";f(e)}return e[n].i},p=function(e,t){if(!i(e,n)){if(!c(e))return!0;if(!t)return!1;f(e)}return e[n].w},d=function(e){return s&&_.NEED&&c(e)&&!i(e,n)&&f(e),e},_=t.exports={KEY:n,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},{"./_fails":50,"./_has":52,"./_is-object":59,"./_object-dp":70,"./_uid":94}],69:[function(e,t,r){var n=e("./_an-object"),o=e("./_object-dps"),i=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),u=function(){},c="prototype",s=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),s=t.F;n--;)delete s[c][i[n]];return s()};t.exports=Object.create||function(e,t){var r;return null!==e?(u[c]=n(e),r=new u,u[c]=null,r[a]=e):r=s(),void 0===t?r:o(r,t)}},{"./_an-object":37,"./_dom-create":46,"./_enum-bug-keys":47,"./_html":54,"./_object-dps":71,"./_shared-key":85}],70:[function(e,t,r){var n=e("./_an-object"),o=e("./_ie8-dom-define"),i=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":37,"./_descriptors":45,"./_ie8-dom-define":55,"./_to-primitive":93}],71:[function(e,t,r){var n=e("./_object-dp"),o=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){o(e);for(var r,a=i(t),u=a.length,c=0;u>c;)n.f(e,r=a[c++],t[r]);return e}},{"./_an-object":37,"./_descriptors":45,"./_object-dp":70,"./_object-keys":78}],72:[function(e,t,r){ +var n=e("./_object-pie"),o=e("./_property-desc"),i=e("./_to-iobject"),a=e("./_to-primitive"),u=e("./_has"),c=e("./_ie8-dom-define"),s=Object.getOwnPropertyDescriptor;r.f=e("./_descriptors")?s:function(e,t){if(e=i(e),t=a(t,!0),c)try{return s(e,t)}catch(e){}if(u(e,t))return o(!n.f.call(e,t),e[t])}},{"./_descriptors":45,"./_has":52,"./_ie8-dom-define":55,"./_object-pie":79,"./_property-desc":81,"./_to-iobject":90,"./_to-primitive":93}],73:[function(e,t,r){var n=e("./_to-iobject"),o=e("./_object-gopn").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return o(e)}catch(e){return a.slice()}};t.exports.f=function(e){return a&&"[object Window]"==i.call(e)?u(e):o(n(e))}},{"./_object-gopn":74,"./_to-iobject":90}],74:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],75:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],76:[function(e,t,r){var n=e("./_has"),o=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},{"./_has":52,"./_shared-key":85,"./_to-object":92}],77:[function(e,t,r){var n=e("./_has"),o=e("./_to-iobject"),i=e("./_array-includes")(!1),a=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r,u=o(e),c=0,s=[];for(r in u)r!=a&&n(u,r)&&s.push(r);for(;t.length>c;)n(u,r=t[c++])&&(~i(s,r)||s.push(r));return s}},{"./_array-includes":38,"./_has":52,"./_shared-key":85,"./_to-iobject":90}],78:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],79:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],80:[function(e,t,r){var n=e("./_export"),o=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{"./_core":41,"./_export":49,"./_fails":50}],81:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],82:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":53}],83:[function(e,t,r){var n=e("./_is-object"),o=e("./_an-object"),i=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,n){try{n=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),n(t,[]),r=!(t instanceof Array)}catch(e){r=!0}return function(e,t){return i(e,t),r?e.__proto__=t:n(e,t),e}}({},!1):void 0),check:i}},{"./_an-object":37,"./_ctx":43,"./_is-object":59,"./_object-gopd":72}],84:[function(e,t,r){var n=e("./_object-dp").f,o=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},{"./_has":52,"./_object-dp":70,"./_wks":97}],85:[function(e,t,r){var n=e("./_shared")("keys"),o=e("./_uid");t.exports=function(e){return n[e]||(n[e]=o(e))}},{"./_shared":86,"./_uid":94}],86:[function(e,t,r){var n=e("./_global"),o="__core-js_shared__",i=n[o]||(n[o]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":51}],87:[function(e,t,r){var n=e("./_to-integer"),o=e("./_defined");t.exports=function(e){return function(t,r){var i,a,u=String(o(t)),c=n(r),s=u.length;return c<0||c>=s?e?"":void 0:(i=u.charCodeAt(c),i<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?e?u.charAt(c):i:e?u.slice(c,c+2):(i-55296<<10)+(a-56320)+65536)}}},{"./_defined":44,"./_to-integer":89}],88:[function(e,t,r){var n=e("./_to-integer"),o=Math.max,i=Math.min;t.exports=function(e,t){return e=n(e),e<0?o(e+t,0):i(e,t)}},{"./_to-integer":89}],89:[function(e,t,r){var n=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},{}],90:[function(e,t,r){var n=e("./_iobject"),o=e("./_defined");t.exports=function(e){return n(o(e))}},{"./_defined":44,"./_iobject":56}],91:[function(e,t,r){var n=e("./_to-integer"),o=Math.min;t.exports=function(e){return e>0?o(n(e),9007199254740991):0}},{"./_to-integer":89}],92:[function(e,t,r){var n=e("./_defined");t.exports=function(e){return Object(n(e))}},{"./_defined":44}],93:[function(e,t,r){var n=e("./_is-object");t.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":59}],94:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],95:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_library"),a=e("./_wks-ext"),u=e("./_object-dp").f;t.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},{"./_core":41,"./_global":51,"./_library":67,"./_object-dp":70,"./_wks-ext":96}],96:[function(e,t,r){r.f=e("./_wks")},{"./_wks":97}],97:[function(e,t,r){var n=e("./_shared")("wks"),o=e("./_uid"),i=e("./_global").Symbol,a="function"==typeof i,u=t.exports=function(e){return n[e]||(n[e]=a&&i[e]||(a?i:o)("Symbol."+e))};u.store=n},{"./_global":51,"./_shared":86,"./_uid":94}],98:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[n(e)]}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],99:[function(e,t,r){var n=e("./_an-object"),o=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return n(t.call(e))}},{"./_an-object":37,"./_core":41,"./core.get-iterator-method":98}],100:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(n(t))}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],101:[function(e,t,r){"use strict";var n=e("./_ctx"),o=e("./_export"),i=e("./_to-object"),a=e("./_iter-call"),u=e("./_is-array-iter"),c=e("./_to-length"),s=e("./_create-property"),f=e("./core.get-iterator-method");o(o.S+o.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function(e){var t,r,o,l,p=i(e),d="function"==typeof this?this:Array,_=arguments.length,b=_>1?arguments[1]:void 0,h=void 0!==b,y=0,v=f(p);if(h&&(b=n(b,_>2?arguments[2]:void 0,2)),void 0==v||d==Array&&u(v))for(t=c(p.length),r=new d(t);t>y;y++)s(r,y,h?b(p[y],y):p[y]);else for(l=v.call(p),r=new d;!(o=l.next()).done;y++)s(r,y,h?a(l,b,[o.value,y],!0):o.value);return r.length=y,r}})},{"./_create-property":42,"./_ctx":43,"./_export":49,"./_is-array-iter":57,"./_iter-call":60,"./_iter-detect":63,"./_to-length":91,"./_to-object":92,"./core.get-iterator-method":98}],102:[function(e,t,r){"use strict";var n=e("./_add-to-unscopables"),o=e("./_iter-step"),i=e("./_iterators"),a=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,r):"values"==t?o(0,e[r]):o(0,[r,e[r]])},"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},{"./_add-to-unscopables":36,"./_iter-define":62,"./_iter-step":64,"./_iterators":65,"./_to-iobject":90}],103:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{create:e("./_object-create")})},{"./_export":49,"./_object-create":69}],104:[function(e,t,r){var n=e("./_export");n(n.S+n.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":45,"./_export":49,"./_object-dp":70}],105:[function(e,t,r){var n=e("./_to-object"),o=e("./_object-gpo");e("./_object-sap")("getPrototypeOf",function(){return function(e){return o(n(e))}})},{"./_object-gpo":76,"./_object-sap":80,"./_to-object":92}],106:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":49,"./_set-proto":83}],107:[function(e,t,r){},{}],108:[function(e,t,r){"use strict";var n=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":62,"./_string-at":87}],109:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_has"),i=e("./_descriptors"),a=e("./_export"),u=e("./_redefine"),c=e("./_meta").KEY,s=e("./_fails"),f=e("./_shared"),l=e("./_set-to-string-tag"),p=e("./_uid"),d=e("./_wks"),_=e("./_wks-ext"),b=e("./_wks-define"),h=e("./_keyof"),y=e("./_enum-keys"),v=e("./_is-array"),m=e("./_an-object"),g=e("./_to-iobject"),j=e("./_to-primitive"),w=e("./_property-desc"),x=e("./_object-create"),k=e("./_object-gopn-ext"),O=e("./_object-gopd"),E=e("./_object-dp"),S=e("./_object-keys"),L=O.f,M=E.f,A=k.f,P=n.Symbol,T=n.JSON,F=T&&T.stringify,I="prototype",C=d("_hidden"),N=d("toPrimitive"),R={}.propertyIsEnumerable,G=f("symbol-registry"),D=f("symbols"),U=f("op-symbols"),Y=Object[I],W="function"==typeof P,B=n.QObject,q=!B||!B[I]||!B[I].findChild,J=i&&s(function(){return 7!=x(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=L(Y,t);n&&delete Y[t],M(e,t,r),n&&e!==Y&&M(Y,t,n)}:M,K=function(e){var t=D[e]=x(P[I]);return t._k=e,t},z=W&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},Q=function(e,t,r){return e===Y&&Q(U,t,r),m(e),t=j(t,!0),m(r),o(D,t)?(r.enumerable?(o(e,C)&&e[C][t]&&(e[C][t]=!1),r=x(r,{enumerable:w(0,!1)})):(o(e,C)||M(e,C,w(1,{})),e[C][t]=!0),J(e,t,r)):M(e,t,r)},H=function(e,t){m(e);for(var r,n=y(t=g(t)),o=0,i=n.length;i>o;)Q(e,r=n[o++],t[r]);return e},V=function(e,t){return void 0===t?x(e):H(x(e),t)},X=function(e){var t=R.call(this,e=j(e,!0));return!(this===Y&&o(D,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(D,e)||o(this,C)&&this[C][e])||t)},Z=function(e,t){if(e=g(e),t=j(t,!0),e!==Y||!o(D,t)||o(U,t)){var r=L(e,t);return!r||!o(D,t)||o(e,C)&&e[C][t]||(r.enumerable=!0),r}},$=function(e){for(var t,r=A(g(e)),n=[],i=0;r.length>i;)o(D,t=r[i++])||t==C||t==c||n.push(t);return n},ee=function(e){for(var t,r=e===Y,n=A(r?U:g(e)),i=[],a=0;n.length>a;)!o(D,t=n[a++])||r&&!o(Y,t)||i.push(D[t]);return i};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(r){this===Y&&t.call(U,r),o(this,C)&&o(this[C],e)&&(this[C][e]=!1),J(this,e,w(1,r))};return i&&q&&J(Y,e,{configurable:!0,set:t}),K(e)},u(P[I],"toString",function(){return this._k}),O.f=Z,E.f=Q,e("./_object-gopn").f=k.f=$,e("./_object-pie").f=X,e("./_object-gops").f=ee,i&&!e("./_library")&&u(Y,"propertyIsEnumerable",X,!0),_.f=function(e){return K(d(e))}),a(a.G+a.W+a.F*!W,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)d(te[re++]);for(var te=S(d.store),re=0;te.length>re;)b(te[re++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return o(G,e+="")?G[e]:G[e]=P(e)},keyFor:function(e){if(z(e))return h(G,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!W,"Object",{create:V,defineProperty:Q,defineProperties:H,getOwnPropertyDescriptor:Z,getOwnPropertyNames:$,getOwnPropertySymbols:ee}),T&&a(a.S+a.F*(!W||s(function(){var e=P();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!z(e)){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&v(t)||(t=function(e,t){if(r&&(t=r.call(this,e,t)),!z(t))return t}),n[1]=t,F.apply(T,n)}}}),P[I][N]||e("./_hide")(P[I],N,P[I].valueOf),l(P,"Symbol"),l(Math,"Math",!0),l(n.JSON,"JSON",!0)},{"./_an-object":37,"./_descriptors":45,"./_enum-keys":48,"./_export":49,"./_fails":50,"./_global":51,"./_has":52,"./_hide":53,"./_is-array":58,"./_keyof":66,"./_library":67,"./_meta":68,"./_object-create":69,"./_object-dp":70,"./_object-gopd":72,"./_object-gopn":74,"./_object-gopn-ext":73,"./_object-gops":75,"./_object-keys":78,"./_object-pie":79,"./_property-desc":81,"./_redefine":82,"./_set-to-string-tag":84,"./_shared":86,"./_to-iobject":90,"./_to-primitive":93,"./_uid":94,"./_wks":97,"./_wks-define":95,"./_wks-ext":96}],110:[function(e,t,r){e("./_wks-define")("asyncIterator")},{"./_wks-define":95}],111:[function(e,t,r){e("./_wks-define")("observable")},{"./_wks-define":95}],112:[function(e,t,r){e("./es6.array.iterator");for(var n=e("./_global"),o=e("./_hide"),i=e("./_iterators"),a=e("./_wks")("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],c=0;c<5;c++){var s=u[c],f=n[s],l=f&&f.prototype;l&&!l[a]&&o(l,a,s),i[s]=i.Array}},{"./_global":51,"./_hide":53,"./_iterators":65,"./_wks":97,"./es6.array.iterator":102}],113:[function(e,t,r){(function(r){var n="object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this,o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=e("./runtime"),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(e){n.regeneratorRuntime=void 0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./runtime":114}],114:[function(e,t,r){(function(e,r){!function(r){"use strict";function n(e,t,r,n){var o=t&&t.prototype instanceof i?t:i,a=Object.create(o.prototype),u=new _(n||[]);return a._invoke=f(e,r,u),a}function o(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function i(){}function a(){}function u(){}function c(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(t){function r(e,n,i,a){var u=o(t[e],t,n);if("throw"!==u.type){var c=u.arg,s=c.value;return s&&"object"==typeof s&&m.call(s,"__await")?Promise.resolve(s.__await).then(function(e){r("next",e,i,a)},function(e){r("throw",e,i,a)}):Promise.resolve(s).then(function(e){c.value=e,i(c)},a)}a(u.arg)}function n(e,t){function n(){return new Promise(function(n,o){r(e,t,n,o)})}return i=i?i.then(n,n):n()}"object"==typeof e&&e.domain&&(r=e.domain.bind(r));var i;this._invoke=n}function f(e,t,r){var n=O;return function(i,a){if(n===S)throw new Error("Generator is already running");if(n===L){if("throw"===i)throw a;return h()}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=l(u,r);if(c){if(c===M)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===O)throw n=L,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=S;var s=o(e,t,r);if("normal"===s.type){if(n=r.done?L:E,s.arg===M)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=L,r.method="throw",r.arg=s.arg)}}}function l(e,t){var r=e.iterator[t.method];if(r===y){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=y,l(e,t),"throw"===t.method))return M;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return M}var n=o(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,M;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=y),t.delegate=null,M):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,M)}function p(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function d(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(p,this),this.reset(!0)}function b(e){if(e){var t=e[j];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=m.call(o,"catchLoc"),u=m.call(o,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),d(r),M}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:b(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=y),M}}}("object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:1}],115:[function(e,t,r){t.exports=e("regenerator-runtime")},{"regenerator-runtime":113}]},{},[2])(2)}); diff --git a/documentation/docs/generated/js/libs/es6-shim.min.js b/documentation/docs/generated/js/libs/es6-shim.min.js new file mode 100644 index 0000000000..1c2d15c01b --- /dev/null +++ b/documentation/docs/generated/js/libs/es6-shim.min.js @@ -0,0 +1,11 @@ +/*! + * https://github.com/paulmillr/es6-shim + * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) + * and contributors, MIT License + * es6-shim: v0.35.1 + * see https://github.com/paulmillr/es6-shim/blob/0.35.1/LICENSE + * Details and documentation: + * https://github.com/paulmillr/es6-shim/ + */ +(function(e,t){if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(t){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(t){return false}};var u=o(i);var f=function(){return!i(function(){Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d=typeof/abc/==="function"?function IsCallableSlow(e){return typeof e==="function"&&g(e)==="[object Function]"}:function IsCallableFast(e){return typeof e==="function"};var O={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var m=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){O.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=m(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.shift);var A=Math.max;var R=Math.min;var _=Math.floor;var k=Math.abs;var F=Math.exp;var L=Math.log;var D=Math.sqrt;var z=Function.call.bind(Object.prototype.hasOwnProperty);var q;var W=function(){};var G=S.Symbol||{};var H=G.species||"@@species";var V=Number.isNaN||function isNaN(e){return e!==e};var B=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var $=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(V(t)){return t}return t<0?-1:1};var U=function isArguments(e){return g(e)==="[object Arguments]"};var J=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var X=U(arguments)?U:J;var K={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var Z=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);O.preserveToString(e[t],n)};var Y=typeof G==="function"&&typeof G["for"]==="function"&&K.symbol(G());var Q=K.symbol(G.iterator)?G.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){Q="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ee=S.Reflect;var te=String;var re={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!re.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(e==null){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"},ToObject:function(e,t){return Object(re.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return re.IsCallable(e)},ToInt32:function(e){return re.ToNumber(e)>>0},ToUint32:function(e){return re.ToNumber(e)>>>0},ToNumber:function(e){if(g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=re.ToNumber(e);if(V(t)){return 0}if(t===0||!B(t)){return t}return(t>0?1:-1)*_(k(t))},ToLength:function(e){var t=re.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return V(e)&&V(t)},SameValueZero:function(e,t){return e===t||V(e)&&V(t)},IsIterable:function(e){return re.TypeIsObject(e)&&(typeof e[Q]!=="undefined"||X(e))},GetIterator:function(e){if(X(e)){return new q(e,"value")}var t=re.GetMethod(e,Q);if(!re.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=re.Call(t,e);if(!re.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=re.ToObject(e)[t];if(r===void 0||r===null){return void 0}if(!re.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=re.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=re.Call(r,e)}catch(i){o=i}if(t){return}if(o){throw o}if(!re.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!re.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=re.IteratorNext(e);var r=re.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ee.construct){return ee.construct(e,t,o)}var i=o.prototype;if(!re.TypeIsObject(i)){i=Object.prototype}var a=m(i);var u=re.Call(e,a,t);return re.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!re.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[H];if(n===void 0||n===null){return t}if(!re.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=re.ToString(e);var i="<"+t;if(r!==""){var a=re.ToString(n);var u=a.replace(/"/g,""");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+""},IsRegExp:function IsRegExp(e){if(!re.TypeIsObject(e)){return false}var t=e[G.match];if(typeof t!=="undefined"){return!!t}return K.regex(e)},ToString:function ToString(e){return te(e)}};if(s&&Y){var ne=function defineWellKnownSymbol(e){if(K.symbol(G[e])){return G[e]}var t=G["for"]("Symbol."+e);Object.defineProperty(G,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!K.symbol(G.search)){var oe=ne("search");var ie=String.prototype.search;h(RegExp.prototype,oe,function search(e){return re.Call(ie,e,[this])});var ae=function search(e){var t=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var r=re.GetMethod(e,oe);if(typeof r!=="undefined"){return re.Call(r,e,[t])}}return re.Call(ie,t,[re.ToString(e)])};Z(String.prototype,"search",ae)}if(!K.symbol(G.replace)){var ue=ne("replace");var fe=String.prototype.replace;h(RegExp.prototype,ue,function replace(e,t){return re.Call(fe,e,[this,t])});var se=function replace(e,t){var r=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var n=re.GetMethod(e,ue);if(typeof n!=="undefined"){return re.Call(n,e,[r,t])}}return re.Call(fe,r,[re.ToString(e),t])};Z(String.prototype,"replace",se)}if(!K.symbol(G.split)){var ce=ne("split");var le=String.prototype.split;h(RegExp.prototype,ce,function split(e,t){return re.Call(le,e,[this,t])});var pe=function split(e,t){var r=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var n=re.GetMethod(e,ce);if(typeof n!=="undefined"){return re.Call(n,e,[r,t])}}return re.Call(le,r,[re.ToString(e),t])};Z(String.prototype,"split",pe)}var ve=K.symbol(G.match);var ye=ve&&function(){var e={};e[G.match]=function(){return 42};return"a".match(e)!==42}();if(!ve||ye){var he=ne("match");var be=String.prototype.match;h(RegExp.prototype,he,function match(e){return re.Call(be,e,[this])});var ge=function match(e){var t=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var r=re.GetMethod(e,he);if(typeof r!=="undefined"){return re.Call(r,e,[t])}}return re.Call(be,t,[re.ToString(e)])};Z(String.prototype,"match",ge)}}var de=function wrapConstructor(e,t,r){O.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in W||r[n]){return}O.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in W||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;O.redefine(e.prototype,"constructor",t)};var Oe=function(){return this};var me=function(e){if(s&&!z(e,H)){O.getter(e,H,Oe)}};var we=function(e,t){var r=t||function iterator(){return this};h(e,Q,r);if(!e[Q]&&K.symbol(Q)){e[Q]=r}};var je=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var Se=function createDataPropertyOrThrow(e,t,r){je(e,t,r);if(!re.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var Te=function(e,t,r,n){if(!re.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!re.TypeIsObject(o)){o=r}var i=m(o);for(var a in n){if(z(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Ie=String.fromCodePoint;Z(String,"fromCodePoint",function fromCodePoint(e){return re.Call(Ie,this,arguments)})}var Ee={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return t.join("")},raw:function raw(e){var t=re.ToObject(e,"bad callSite");var r=re.ToObject(t.raw,"bad raw value");var n=r.length;var o=re.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a=o){break}f=a+1=Ce){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return Pe(t,r)},startsWith:function startsWith(e){var t=re.ToString(re.RequireObjectCoercible(this));if(re.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=re.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=A(re.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=re.ToString(re.RequireObjectCoercible(this));if(re.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=re.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:re.ToInteger(o);var a=R(A(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(re.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=re.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=re.ToString(re.RequireObjectCoercible(this));var r=re.ToInteger(e);var n=t.length;if(r>=0&&r56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){Z(String.prototype,"includes",Me.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var xe=i(function(){"/a/".startsWith(/a/)});var Ne=a(function(){return"abc".startsWith("a",Infinity)===false});if(!xe||!Ne){Z(String.prototype,"startsWith",Me.startsWith);Z(String.prototype,"endsWith",Me.endsWith)}}if(Y){var Ae=a(function(){var e=/a/;e[G.match]=false;return"/a/".startsWith(e)});if(!Ae){Z(String.prototype,"startsWith",Me.startsWith)}var Re=a(function(){var e=/a/;e[G.match]=false;return"/a/".endsWith(e)});if(!Re){Z(String.prototype,"endsWith",Me.endsWith)}var _e=a(function(){var e=/a/;e[G.match]=false;return"/a/".includes(e)});if(!_e){Z(String.prototype,"includes",Me.includes)}}b(String.prototype,Me);var ke=[" \n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var Fe=new RegExp("(^["+ke+"]+)|(["+ke+"]+$)","g");var Le=function trim(){return re.ToString(re.RequireObjectCoercible(this)).replace(Fe,"")};var De=["\x85","\u200b","\ufffe"].join("");var ze=new RegExp("["+De+"]","g");var qe=/^[\-+]0x[0-9a-f]+$/i;var We=De.trim().length!==De.length;h(String.prototype,"trim",Le,We);var Ge=function(e){return{value:e,done:arguments.length===0}};var He=function(e){re.RequireObjectCoercible(e);this._s=re.ToString(e);this._i=0};He.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Ge()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Ge(e.substr(t,o))};we(He.prototype);we(String.prototype,function(){return new He(this)});var Ve={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!re.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(X(e)||re.GetMethod(e,Q))!=="undefined";var u,f,s;if(a){f=re.IsConstructor(r)?Object(new r):[];var c=re.GetIterator(e);var l,p;s=0;while(true){l=re.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(v){re.IteratorClose(c,true);throw v}s+=1}u=s}else{var y=re.ToObject(e);u=re.ToLength(y.length);f=re.IsConstructor(r)?Object(new r(u)):new Array(u);var h;for(s=0;s2){f=arguments[2]}var s=typeof f==="undefined"?n:re.ToInteger(f);var c=s<0?A(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=re.ToObject(this);var o=re.ToLength(n.length);t=re.ToInteger(typeof t==="undefined"?0:t);r=re.ToInteger(typeof r==="undefined"?o:r);var i=t<0?A(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u1?arguments[1]:null;for(var i=0,a;i1?arguments[1]:null;for(var i=0;i1&&typeof arguments[1]!=="undefined"){return re.Call(Ze,this,arguments)}else{return t(Ze,this,e)}})}var Ye=-(Math.pow(2,32)-1);var Qe=function(e,r){var n={length:Ye};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!Qe(Array.prototype.forEach)){var et=Array.prototype.forEach;Z(Array.prototype,"forEach",function forEach(e){return re.Call(et,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.map)){var tt=Array.prototype.map;Z(Array.prototype,"map",function map(e){return re.Call(tt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.filter)){var rt=Array.prototype.filter;Z(Array.prototype,"filter",function filter(e){return re.Call(rt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.some)){var nt=Array.prototype.some;Z(Array.prototype,"some",function some(e){return re.Call(nt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.every)){var ot=Array.prototype.every;Z(Array.prototype,"every",function every(e){return re.Call(ot,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.reduce)){var it=Array.prototype.reduce;Z(Array.prototype,"reduce",function reduce(e){return re.Call(it,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.reduceRight,true)){var at=Array.prototype.reduceRight;Z(Array.prototype,"reduceRight",function reduceRight(e){return re.Call(at,this.length>=0?this:[],arguments)},true)}var ut=Number("0o10")!==8;var ft=Number("0b10")!==2;var st=y(De,function(e){return Number(e+0+e)===0});if(ut||ft||st){var ct=Number;var lt=/^0b[01]+$/i;var pt=/^0o[0-7]+$/i;var vt=lt.test.bind(lt);var yt=pt.test.bind(pt);var ht=function(e){var t;if(typeof e.valueOf==="function"){t=e.valueOf();if(K.primitive(t)){return t}}if(typeof e.toString==="function"){t=e.toString();if(K.primitive(t)){return t}}throw new TypeError("No default value")};var bt=ze.test.bind(ze);var gt=qe.test.bind(qe);var dt=function(){var e=function Number(t){var r;if(arguments.length>0){r=K.primitive(t)?t:ht(t,"number")}else{r=0}if(typeof r==="string"){r=re.Call(Le,r);if(vt(r)){r=parseInt(C(r,2),2)}else if(yt(r)){r=parseInt(C(r,2),8)}else if(bt(r)||gt(r)){r=NaN}}var n=this;var o=a(function(){ct.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new ct(r)}return ct(r)};return e}();de(ct,dt,{});b(dt,{NaN:ct.NaN,MAX_VALUE:ct.MAX_VALUE,MIN_VALUE:ct.MIN_VALUE,NEGATIVE_INFINITY:ct.NEGATIVE_INFINITY,POSITIVE_INFINITY:ct.POSITIVE_INFINITY});Number=dt;O.redefine(S,"Number",dt)}var Ot=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Ot,MIN_SAFE_INTEGER:-Ot,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:B,isInteger:function isInteger(e){return B(e)&&re.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&k(e)<=Number.MAX_SAFE_INTEGER},isNaN:V});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if(![,1].find(function(e,t){return t===0})){Z(Array.prototype,"find",$e.find)}if([,1].findIndex(function(e,t){return t===0})!==0){Z(Array.prototype,"findIndex",$e.findIndex)}var mt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var wt=function ensureEnumerable(e,t){if(s&&mt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var jt=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o1){return NaN}if(t===-1){return-Infinity}if(t===1){return Infinity}if(t===0){return t}return.5*L((1+t)/(1-t))},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(L(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=re.ToUint32(t);if(r===0){return 32}return Or?re.Call(Or,r):31-_(L(r+.5)*gr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(V(t)){return NaN}if(!T(t)){return Infinity}if(t<0){t=-t}if(t>21){return F(t)/2}return(F(t)+F(-t))/2},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(k(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o0?i/n*(i/n):i}}return n===Infinity?Infinity:n*D(r)},log2:function log2(e){return L(e)*gr},log10:function log10(e){return L(e)*dr},log1p:function log1p(e){var t=Number(e);if(t<-1||V(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(L(1+t)/(1+t-1))},sign:$,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}if(k(t)<1){return(Math.expm1(t)-Math.expm1(-t))/2}return(F(t-1)-F(-t-1))*br/2},tanh:function tanh(e){var t=Number(e);if(V(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-_(-t):_(t)},imul:function imul(e,t){var r=re.ToUint32(e);var n=re.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||V(t)){return t}var r=$(t);var n=k(t);if(nyr||V(i)){return r*Infinity}return r*i}};b(Math,mr);h(Math,"log1p",mr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",mr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7));h(Math,"tanh",mr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",mr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"cbrt",mr.cbrt,Math.abs(1-Math.cbrt(1e-300)/1e-100)/Number.EPSILON>8);h(Math,"sinh",mr.sinh,Math.sinh(-2e-17)!==-2e-17);var wr=Math.expm1(10);h(Math,"expm1",mr.expm1,wr>22025.465794806718||wr<22025.465794806718);var jr=Math.round;var Sr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var Tr=lr+1;var Ir=2*lr-1;var Er=[Tr,Ir].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=_(e);var r=t===-1?-0:t+1;return e-t<.5?t:r},!Sr||!Er);O.preserveToString(Math.round,jr);var Pr=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=mr.imul;O.preserveToString(Math.imul,Pr)}if(Math.imul.length!==2){Z(Math,"imul",function imul(e,t){return re.Call(Pr,Math,arguments); +})}var Cr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}re.IsPromise=function(e){if(!re.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!re.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(re.IsCallable(t.resolve)&&re.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&re.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=N(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=re.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(re.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(i){n=i;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=re.IsCallable(e)?e:a;var d=re.IsCallable(t)?t:u;var O=n._promise;var m;if(O.state===f){if(O.reactionLength===0){O.fulfillReactionHandler0=g;O.rejectReactionHandler0=d;O.reactionCapability0=i}else{var w=3*(O.reactionLength-1);O[w+l]=g;O[w+p]=d;O[w+v]=i}O.reactionLength+=1}else if(O.state===s){m=O.result;h(g,i,m)}else if(O.state===c){m=O.result;h(d,i,m)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof Cr==="function"){b(S,{Promise:Cr});var Mr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var xr=!i(function(){S.Promise.reject(42).then(null,5).then(null,W)});var Nr=i(function(){S.Promise.call(3,W)});var Ar=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,W).then(null,W)}catch(n){return true}return t===r}(S.Promise);var Rr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var _r=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};_r.prototype=Promise.prototype;_r.all=Promise.all;var kr=a(function(){return!!_r.all([1,2])});if(!Mr||!xr||!Nr||Ar||!Rr||kr){Promise=Cr;Z(S,"Promise",Cr)}if(Promise.all.length!==1){var Fr=Promise.all;Z(Promise,"all",function all(e){return re.Call(Fr,this,arguments)})}if(Promise.race.length!==1){var Lr=Promise.race;Z(Promise,"race",function race(e){return re.Call(Lr,this,arguments)})}if(Promise.resolve.length!==1){var Dr=Promise.resolve;Z(Promise,"resolve",function resolve(e){return re.Call(Dr,this,arguments)})}if(Promise.reject.length!==1){var zr=Promise.reject;Z(Promise,"reject",function reject(e){return re.Call(zr,this,arguments)})}wt(Promise,"all");wt(Promise,"race");wt(Promise,"resolve");wt(Promise,"reject");me(Promise)}var qr=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Wr=qr(["z","a","bb"]);var Gr=qr(["z",1,"a","3",2]);if(s){var Hr=function fastkey(e){if(!Wr){return null}if(typeof e==="undefined"||e===null){return"^"+re.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Gr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var Vr=function emptyObject(){return Object.create?Object.create(null):{}};var Br=function addIterableToMap(e,n,o){if(r(o)||K.string(o)){l(o,function(e){if(!re.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(o!==null&&typeof o!=="undefined"){a=n.set;if(!re.IsCallable(a)){throw new TypeError("bad map")}i=re.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=re.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!re.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(s){re.IteratorClose(i,true);throw s}}}}};var $r=function addIterableToSet(e,n,o){if(r(o)||K.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(o!==null&&typeof o!=="undefined"){a=n.add;if(!re.IsCallable(a)){throw new TypeError("bad set")}i=re.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=re.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(s){re.IteratorClose(i,true);throw s}}}}};var Ur={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!re.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+re.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");this.head=e._head;this.i=this.head;this.kind=t};i.prototype={next:function next(){var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Ge()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Ge(n)}}this.i=void 0;return Ge()}};we(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=Te(this,Map,a,{_es6map:true,_head:null,_storage:Vr(),_size:0});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){Br(Map,e,arguments[0])}return e};a=u.prototype;O.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t=Hr(e);if(t!==null){var r=this._storage[t];if(r){return r.value}else{return}}var n=this._head;var i=n;while((i=i.next)!==n){if(re.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=Hr(e);if(t!==null){return typeof this._storage[t]!=="undefined"}var r=this._head;var n=r;while((n=n.next)!==r){if(re.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=Hr(e);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}else{a=this._storage[u]=new r(e,t);i=n.prev}}while((i=i.next)!==n){if(re.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(re.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},"delete":function(t){o(this,"delete");var r=this._head;var n=r;var i=Hr(t);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}while((n=n.next)!==r){if(re.SameValueZero(n.key,t)){n.key=n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._size=0;this._storage=Vr();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});we(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!re.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+re.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=Te(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:Vr()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){$r(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}else{var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=e["[[SetData]]"]=new Ur.Map;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};O.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=Hr(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=Hr(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},"delete":function(e){r(this,"delete");var t;if(this._storage&&(t=Hr(e))!==null){var n=z(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=Vr()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return this["[[SetData]]"].values()},entries:function entries(){r(this,"entries");u(this);return this["[[SetData]]"].entries()},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);we(i.prototype,i.prototype.values);return i}()};if(S.Map||S.Set){var Jr=a(function(){return new Map([[1,2]]).get(1)===2});if(!Jr){var Xr=S.Map;S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new Xr;if(arguments.length>0){Br(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=m(Xr.prototype);h(S.Map.prototype,"constructor",S.Map,true);O.preserveToString(S.Map,Xr)}var Kr=new Map;var Zr=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var Yr=Kr.set(1,2)===Kr;if(!Zr||!Yr){var Qr=Map.prototype.set;Z(Map.prototype,"set",function set(e,r){t(Qr,this,e===0?0:e,r);return this})}if(!Zr){var en=Map.prototype.get;var tn=Map.prototype.has;b(Map.prototype,{get:function get(e){return t(en,this,e===0?0:e)},has:function has(e){return t(tn,this,e===0?0:e)}},true);O.preserveToString(Map.prototype.get,en);O.preserveToString(Map.prototype.has,tn)}var rn=new Set;var nn=function(e){e["delete"](0);e.add(-0);return!e.has(0)}(rn);var on=rn.add(1)===rn;if(!nn||!on){var an=Set.prototype.add;Set.prototype.add=function add(e){t(an,this,e===0?0:e);return this};O.preserveToString(Set.prototype.add,an)}if(!nn){var un=Set.prototype.has;Set.prototype.has=function has(e){return t(un,this,e===0?0:e)};O.preserveToString(Set.prototype.has,un);var fn=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(fn,this,e===0?0:e)};O.preserveToString(Set.prototype["delete"],fn)}var sn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var cn=Object.setPrototypeOf&&!sn;var ln=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||cn||!ln){var pn=S.Map;S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new pn;if(arguments.length>0){Br(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=pn.prototype;h(S.Map.prototype,"constructor",S.Map,true);O.preserveToString(S.Map,pn)}var vn=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var yn=Object.setPrototypeOf&&!vn;var hn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||yn||!hn){var bn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new bn;if(arguments.length>0){$r(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=bn.prototype;h(S.Set.prototype,"constructor",S.Set,true);O.preserveToString(S.Set,bn)}var gn=new S.Map;var dn=!a(function(){return gn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||gn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof gn.keys().next!=="function"||dn||!sn){b(S,{Map:Ur.Map,Set:Ur.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}we(Object.getPrototypeOf((new S.Map).keys()));we(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var On=S.Set.prototype.has;Z(S.Set.prototype,"has",function has(e){return t(On,this,e)})}}b(S,Ur);me(S.Map);me(S.Set)}var mn=function throwUnlessTargetIsObject(e){if(!re.TypeIsObject(e)){throw new TypeError("target must be an object")}};var wn={apply:function apply(){return re.Call(re.Call,null,arguments)},construct:function construct(e,t){if(!re.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!re.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return re.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){mn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){mn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(wn,{ownKeys:function ownKeys(e){mn(e);var t=Object.getOwnPropertyNames(e);if(re.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var jn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(wn,{isExtensible:function isExtensible(e){mn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){mn(e);return jn(function(){Object.preventExtensions(e)})}})}if(s){var Sn=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return Sn(o,t,r)}if("value"in n){return n.value}if(n.get){return re.Call(n.get,r)}return void 0};var Tn=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return Tn(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!re.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ee.defineProperty(o,r,{value:n})}else{return ee.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}}if(i.set){t(i.set,o,n);return true}return false};Object.assign(wn,{defineProperty:function defineProperty(e,t,r){mn(e);return jn(function(){Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){mn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){mn(e);var r=arguments.length>2?arguments[2]:e;return Sn(e,t,r)},set:function set(e,t,r){mn(e);var n=arguments.length>3?arguments[3]:e;return Tn(e,t,r,n)}})}if(Object.getPrototypeOf){var In=Object.getPrototypeOf;wn.getPrototypeOf=function getPrototypeOf(e){mn(e);return In(e)}}if(Object.setPrototypeOf&&wn.getPrototypeOf){var En=function(e,t){var r=t;while(r){if(e===r){return true}r=wn.getPrototypeOf(r)}return false};Object.assign(wn,{setPrototypeOf:function setPrototypeOf(e,t){mn(e);if(t!==null&&!re.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ee.getPrototypeOf(e)){return true}if(ee.isExtensible&&!ee.isExtensible(e)){return false}if(En(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Pn=function(e,t){if(!re.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){Z(S.Reflect,e,t)}}};Object.keys(wn).forEach(function(e){Pn(e,wn[e])});var Cn=S.Reflect.getPrototypeOf;if(c&&Cn&&Cn.name!=="getPrototypeOf"){Z(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(Cn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){Z(S.Reflect,"setPrototypeOf",wn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){Z(S.Reflect,"defineProperty",wn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){Z(S.Reflect,"construct",wn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Mn=Date.prototype.toString;var xn=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return re.Call(Mn,this)};Z(Date.prototype,"toString",xn)}var Nn={anchor:function anchor(e){return re.CreateHTML(this,"a","name",e)},big:function big(){return re.CreateHTML(this,"big","","")},blink:function blink(){return re.CreateHTML(this,"blink","","")},bold:function bold(){return re.CreateHTML(this,"b","","")},fixed:function fixed(){return re.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return re.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return re.CreateHTML(this,"font","size",e)},italics:function italics(){return re.CreateHTML(this,"i","","")},link:function link(e){return re.CreateHTML(this,"a","href",e)},small:function small(){return re.CreateHTML(this,"small","","")},strike:function strike(){return re.CreateHTML(this,"strike","","")},sub:function sub(){return re.CreateHTML(this,"sub","","")},sup:function sub(){return re.CreateHTML(this,"sup","","")}};l(Object.keys(Nn),function(e){var r=String.prototype[e];var n=false;if(re.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){Z(String.prototype,e,Nn[e])}});var An=function(){if(!Y){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e(G())!=="undefined"){return true}if(e([G()])!=="[null]"){return true}var t={a:G()};t[G()]=true;if(e(t)!=="{}"){return true}return false}();var Rn=a(function(){if(!Y){return true}return JSON.stringify(Object(G()))==="{}"&&JSON.stringify([Object(G())])==="[{}]"});if(An||!Rn){var _n=JSON.stringify;Z(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=re.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(K.symbol(n)){return St({})(n)}else{return n}}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return _n.apply(this,o)})}return S}); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/htmlparser.js b/documentation/docs/generated/js/libs/htmlparser.js new file mode 100644 index 0000000000..522b39cae3 --- /dev/null +++ b/documentation/docs/generated/js/libs/htmlparser.js @@ -0,0 +1,23 @@ +/*********************************************** +Copyright 2010 - 2012 Chris Winberry . All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +***********************************************/ +/* v2.0.0 */ + +!function(){function t(t,e){var a=function(){};a.prototype=e.prototype,t.super_=e,t.prototype=new a,t.prototype.constructor=t}function e(t,e){this._options=e||{},this._validateBuilder(t);this._builder=t,this.reset()}function a(t,e){this.reset(),this._options=e||{},void 0===this._options.ignoreWhitespace&&(this._options.ignoreWhitespace=!1),void 0===this._options.includeLocation&&(this._options.includeLocation=!1),void 0===this._options.verbose&&(this._options.verbose=!0),void 0===this._options.enforceEmptyTags&&(this._options.enforceEmptyTags=!0),void 0===this._options.caseSensitiveTags&&(this._options.caseSensitiveTags=!1),void 0===this._options.caseSensitiveAttr&&(this._options.caseSensitiveAttr=!1),"function"==typeof t&&(this._callback=t)}function n(t){n.super_.call(this,t,{ignoreWhitespace:!0,verbose:!1,enforceEmptyTags:!1,caseSensitiveTags:!0})}var i;if("undefined"!=typeof module&&void 0!==module.exports)i=module.exports;else{if(i={},this.Tautologistics||(this.Tautologistics={}),this.Tautologistics.NodeHtmlParser)return;this.Tautologistics.NodeHtmlParser=i}var s={Text:"text",Tag:"tag",Attr:"attr",CData:"cdata",Doctype:"doctype",Comment:"comment"};"undefined"!=typeof module&&void 0!==module.exports&&(t(e,require("stream")),e.prototype.writable=!0,e.prototype.write=function(t){t instanceof Buffer&&(t=t.toString()),this.parseChunk(t)},e.prototype.end=function(t){arguments.length&&this.write(t),this.writable=!1,this.done()},e.prototype.destroy=function(){this.writable=!1}),e.prototype.reset=function(){this._state={mode:s.Text,pos:0,data:null,pendingText:null,pendingWrite:null,lastTag:null,isScript:!1,needData:!1,output:[],done:!1},this._builder.reset()},e.prototype.parseChunk=function(t){for(this._state.needData=!1,this._state.data=null!==this._state.data?this._state.data.substr(this.pos)+t:t;this._state.pos\/]+)(\s*)\??(>?)/g,e.prototype._parseTag=function(){var t=this._state;e.re_parseTag.lastIndex=t.pos;var a=e.re_parseTag.exec(t.data);if(a){if(!a[1]&&"!--"===a[2].substr(0,3))return t.mode=s.Comment,void(t.pos+=3);if(!a[1]&&"![CDATA["===a[2].substr(0,8))return t.mode=s.CData,void(t.pos+=8);if(!a[1]&&"!DOCTYPE"===a[2].substr(0,8))return t.mode=s.Doctype,void(t.pos+=8);if(!t.done&&t.pos+a[0].length===t.data.length)return void(t.needData=!0);var n;">"===a[4]?(t.mode=s.Text,n=a[0].substr(0,a[0].length-1)):(t.mode=s.Attr,n=a[0]),t.pos+=a[0].length;var i={type:s.Tag,name:a[1]+a[2],raw:n};t.mode===s.Attr&&(t.lastTag=i),"script"===i.name.toLowerCase()?t.isScript=!0:"/script"===i.name.toLowerCase()&&(t.isScript=!1),t.mode===s.Attr?this._writePending(i):this._write(i)}else t.needData=!0},e.re_parseAttr_findName=/\s*([^=<>\s'"\/]+)\s*/g,e.prototype._parseAttr_findName=function(){e.re_parseAttr_findName.lastIndex=this._state.pos;var t=e.re_parseAttr_findName.exec(this._state.data);return t?this._state.pos+t[0].length!==e.re_parseAttr_findName.lastIndex?null:{match:t[0],name:t[1]}:null},e.re_parseAttr_findValue=/\s*=\s*(?:'([^']*)'|"([^"]*)"|([^'"\s\/>]+))\s*/g,e.re_parseAttr_findValue_last=/\s*=\s*['"]?(.*)$/g,e.prototype._parseAttr_findValue=function(){var t=this._state;e.re_parseAttr_findValue.lastIndex=t.pos;var a=e.re_parseAttr_findValue.exec(t.data);return a?t.pos+a[0].length!==e.re_parseAttr_findValue.lastIndex?null:{match:a[0],value:a[1]||a[2]||a[3]}:t.done?(e.re_parseAttr_findValue_last.lastIndex=t.pos,a=e.re_parseAttr_findValue_last.exec(t.data),a?{match:a[0],value:""!==a[1]?a[1]:null}:null):null},e.re_parseAttr_splitValue=/\s*=\s*['"]?/g,e.re_parseAttr_selfClose=/(\s*\/\s*)(>?)/g,e.prototype._parseAttr=function(){var t=this._state,a=this._parseAttr_findName(t);if(a&&"?"!==a.name){if(!t.done&&t.pos+a.match.length===t.data.length)return t.needData=!0,null;t.pos+=a.match.length;var n=this._parseAttr_findValue(t);t.data.indexOf(" ",t.pos);if(n){if(!t.done&&t.pos+n.match.length===t.data.length)return t.needData=!0,void(t.pos-=a.match.length);t.pos+=n.match.length}else if(t.data.indexOf(" ",t.pos-1))n={match:"",value:a.name};else{if(e.re_parseAttr_splitValue.lastIndex=t.pos,e.re_parseAttr_splitValue.exec(t.data))return t.needData=!0,void(t.pos-=a.match.length);n={match:"",value:null}}t.lastTag.raw+=a.match+n.match,this._writePending({type:s.Attr,name:a.name,data:n.value})}else{e.re_parseAttr_selfClose.lastIndex=t.pos;var i=e.re_parseAttr_selfClose.exec(t.data);if(i&&i.index===t.pos){if(!t.done&&!i[2]&&t.pos+i[0].length===t.data.length)return void(t.needData=!0);t.lastTag.raw+=i[1],this._write({type:s.Tag,name:"/"+t.lastTag.name,raw:null}),t.pos+=i[1].length}var r=t.data.indexOf(">",t.pos);if(r<0){if(t.done)return t.lastTag.raw+=t.data.substr(t.pos),void(t.pos=t.data.length);t.needData=!0}else t.pos=r+1,t.mode=s.Text}},e.re_parseCData_findEnding=/\]{1,2}$/,e.prototype._parseCData=function(){var t=this._state,a=t.data.indexOf("]]>",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0){if(e.re_parseCData_findEnding.lastIndex=t.pos,e.re_parseCData_findEnding.exec(t.data))return void(t.needData=!0);t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0}else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.CData,data:n}),t.mode=s.Text,t.pos=a+3}},e.prototype._parseDoctype=function(){var t=this._state,a=t.data.indexOf(">",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0)e.re_parseCData_findEnding.lastIndex=t.pos,t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0;else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.Doctype,data:n}),t.mode=s.Text,t.pos=a+1}},e.re_parseComment_findEnding=/\-{1,2}$/,e.prototype._parseComment=function(){var t=this._state,a=t.data.indexOf("--\x3e",t.pos);if(a<0&&t.done&&(a=t.data.length),a<0){if(e.re_parseComment_findEnding.lastIndex=t.pos,e.re_parseComment_findEnding.exec(t.data))return void(t.needData=!0);t.pendingText||(t.pendingText=[]),t.pendingText.push(t.data.substr(t.pos,t.data.length)),t.pos=t.data.length,t.needData=!0}else{var n;t.pendingText?(t.pendingText.push(t.data.substring(t.pos,a)),n=t.pendingText.join(""),t.pendingText=null):n=t.data.substring(t.pos,a),this._write({type:s.Comment,data:n}),t.mode=s.Text,t.pos=a+3}},a._emptyTags={area:1,base:1,basefont:1,br:1,col:1,frame:1,hr:1,img:1,input:1,isindex:1,link:1,meta:1,param:1,embed:1,"?xml":1},a.reWhitespace=/^\s*$/,a.prototype.dom=null,a.prototype.reset=function(){this.dom=[],this._done=!1,this._tagStack=[],this._lastTag=null,this._tagStack.last=function(){return this.length?this[this.length-1]:null},this._line=1,this._col=1},a.prototype.done=function(){this._done=!0,this.handleCallback(null)},a.prototype.error=function(t){this.handleCallback(t)},a.prototype.handleCallback=function(t){if("function"==typeof this._callback)this._callback(t,this.dom);else if(t)throw t},a.prototype.isEmptyTag=function(t){var e=t.name.toLowerCase();return"?"==e.charAt(0)||("/"==e.charAt(0)&&(e=e.substring(1)),this._options.enforceEmptyTags&&!!a._emptyTags[e])},a.prototype._getLocation=function(){return{line:this._line,col:this._col}},a.prototype._updateLocation=function(t){var e=t.type===s.Tag?t.raw:t.data;if(null!==e){var a=e.split("\n");this._line+=a.length-1,a.length>1&&(this._col=1),this._col+=a[a.length-1].length,t.type===s.Tag?this._col+=2:t.type===s.Comment?this._col+=7:t.type===s.CData&&(this._col+=12)}},a.prototype._copyElement=function(t){var e={type:t.type};if(this._options.verbose&&void 0!==t.raw&&(e.raw=t.raw),void 0!==t.name)switch(t.type){case s.Tag:e.name=this._options.caseSensitiveTags?t.name:t.name.toLowerCase();break;case s.Attr:e.name=this._options.caseSensitiveAttr?t.name:t.name.toLowerCase();break;default:e.name=this._options.caseSensitiveTags?t.name:t.name.toLowerCase()}return void 0!==t.data&&(e.data=t.data),t.location&&(e.location={line:t.location.line,col:t.location.col}),e},a.prototype.write=function(t){if(this._done&&this.handleCallback(new Error("Writing to the builder after done() called is not allowed without a reset()")),this._options.includeLocation&&t.type!==s.Attr&&(t.location=this._getLocation(),this._updateLocation(t)),t.type!==s.Text||!this._options.ignoreWhitespace||!a.reWhitespace.test(t.data)){var e,n;if(this._tagStack.last())if(t.type===s.Tag)if("/"==t.name.charAt(0)){var i=this._options.caseSensitiveTags?t.name.substring(1):t.name.substring(1).toLowerCase();if(!this.isEmptyTag(t)){for(var r=this._tagStack.length-1;r>-1&&this._tagStack[r--].name!=i;);if(r>-1||this._tagStack[0].name==i)for(;r=0&&s.length>=n)return s;if(a&&e.children)i=e.children;else{if(!(e instanceof Array))return s;i=e}for(var d=0;d=0&&s.length>=n));d++);return s},getElementById:function(t,e,a){var n=r.getElements({id:t},e,a,1);return n.length?n[0]:null},getElementsByTagName:function(t,e,a,n){return r.getElements({tag_name:t},e,a,n)},getElementsByTagType:function(t,e,a,n){return r.getElements({tag_type:t},e,a,n)}};i.Parser=e,i.HtmlBuilder=a,i.RssBuilder=n,i.ElementType=s,i.DomUtils=r}(); diff --git a/documentation/docs/generated/js/libs/innersvg.js b/documentation/docs/generated/js/libs/innersvg.js new file mode 100644 index 0000000000..b1099deb2a --- /dev/null +++ b/documentation/docs/generated/js/libs/innersvg.js @@ -0,0 +1,9 @@ +/** + * innerHTML property for SVGElement + * Copyright(c) 2010, Jeff Schiller + * + * Licensed under the Apache License, Version 2 + * + * Minor modifications by Chris Price to only polyfill when required. + */ +!function(e){if(e&&!("innerHTML"in e.prototype)){var t=function(e,r){var i=e.nodeType;if(3==i)r.push(e.textContent.replace(/&/,"&").replace(/",">"));else if(1==i){if(r.push("<",e.tagName),e.hasAttributes())for(var n=e.attributes,s=0,o=n.length;s");for(var h=e.childNodes,s=0,o=h.length;s")}else r.push("/>")}else{if(8!=i)throw"Error serializing XML. Unhandled node of type: "+i;r.push("\x3c!--",e.nodeValue,"--\x3e")}};Object.defineProperty(e.prototype,"innerHTML",{get:function(){for(var e=[],r=this.firstChild;r;)t(r,e),r=r.nextSibling;return e.join("")},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser;t.async=!1,sXML=""+e+"";for(var r=t.parseFromString(sXML,"text/xml").documentElement.firstChild;r;)this.appendChild(this.ownerDocument.importNode(r,!0)),r=r.nextSibling}catch(e){throw new Error("Error parsing XML string")}}})}}((0,eval)("this").SVGElement); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/lit-html.js b/documentation/docs/generated/js/libs/lit-html.js new file mode 100644 index 0000000000..743deea173 --- /dev/null +++ b/documentation/docs/generated/js/libs/lit-html.js @@ -0,0 +1 @@ +"use strict";function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call}return _assertThisInitialized(self)}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function _get(target,property,receiver){if(typeof Reflect!=="undefined"&&Reflect.get){_get=Reflect.get}else{_get=function _get(target,property,receiver){var base=_superPropBase(target,property);if(!base)return;var desc=Object.getOwnPropertyDescriptor(base,property);if(desc.get){return desc.get.call(receiver)}return desc.value}}return _get(target,property,receiver||target)}function _superPropBase(object,property){while(!Object.prototype.hasOwnProperty.call(object,property)){object=_getPrototypeOf(object);if(object===null)break}return object}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _getPrototypeOf(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass)}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o};return _setPrototypeOf(o,p)}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _iterableToArray(iter){if(Symbol.iterator in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter)}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i2&&arguments[2]!==undefined?arguments[2]:null;var i=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var n=e;for(;n!==s;){var _e=n.nextSibling;t.insertBefore(n,i),n=_e}},o=function o(t,e){var s=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;var i=e;for(;i!==s;){var _e2=i.nextSibling;t.removeChild(i),i=_e2}},r={},a={},l="{{lit-".concat(String(Math.random()).slice(2),"}}"),h="\x3c!--".concat(l,"--\x3e"),d=new RegExp("".concat(l,"|").concat(h)),c="$lit$";var u=function u(t,e){var _this=this;_classCallCheck(this,u);this.parts=[],this.element=e;var s=-1,i=0;var n=[],o=function o(e){var r=e.content,a=document.createTreeWalker(r,133,null,!1);var h=0;for(;a.nextNode();){s++;var _e3=a.currentNode;if(1===_e3.nodeType){if(_e3.hasAttributes()){var _n=_e3.attributes;var _o=0;for(var _t=0;_t<_n.length;_t++){_n[_t].value.indexOf(l)>=0&&_o++}for(;_o-- >0;){var _n2=t.strings[i],_o2=g.exec(_n2)[2],_r=_o2.toLowerCase()+c,_a=_e3.getAttribute(_r).split(d);_this.parts.push({type:"attribute",index:s,name:_o2,strings:_a}),_e3.removeAttribute(_r),i+=_a.length-1}}"TEMPLATE"===_e3.tagName&&o(_e3)}else if(3===_e3.nodeType){var _t2=_e3.data;if(_t2.indexOf(l)>=0){var _o3=_e3.parentNode,_r2=_t2.split(d),_a2=_r2.length-1;for(var _t3=0;_t3<_a2;_t3++){_o3.insertBefore(""===_r2[_t3]?m():document.createTextNode(_r2[_t3]),_e3),_this.parts.push({type:"node",index:++s})}""===_r2[_a2]?(_o3.insertBefore(m(),_e3),n.push(_e3)):_e3.data=_r2[_a2],i+=_a2}}else if(8===_e3.nodeType)if(_e3.data===l){var _t4=_e3.parentNode;null!==_e3.previousSibling&&s!==h||(s++,_t4.insertBefore(m(),_e3)),h=s,_this.parts.push({type:"node",index:s}),null===_e3.nextSibling?_e3.data="":(n.push(_e3),s--),i++}else{var _t5=-1;for(;-1!==(_t5=_e3.data.indexOf(l,_t5+1));){_this.parts.push({type:"node",index:-1})}}}};o(e);for(var _i=0;_i=\/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;var v=function(){function v(t,e,s){_classCallCheck(this,v);this._parts=[],this.template=t,this.processor=e,this.options=s}_createClass(v,[{key:"update",value:function update(t){var e=0;var _iteratorNormalCompletion=true;var _didIteratorError=false;var _iteratorError=undefined;try{for(var _iterator=this._parts[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var _s=_step.value;void 0!==_s&&_s.setValue(t[e]),e++}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}var _iteratorNormalCompletion2=true;var _didIteratorError2=false;var _iteratorError2=undefined;try{for(var _iterator2=this._parts[Symbol.iterator](),_step2;!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=true){var _t7=_step2.value;void 0!==_t7&&_t7.commit()}}catch(err){_didIteratorError2=true;_iteratorError2=err}finally{try{if(!_iteratorNormalCompletion2&&_iterator2.return!=null){_iterator2.return()}}finally{if(_didIteratorError2){throw _iteratorError2}}}}},{key:"_clone",value:function _clone(){var _this2=this;var t=i?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),e=this.template.parts;var s=0,n=0;var o=function o(t){var i=document.createTreeWalker(t,133,null,!1);var r=i.nextNode();for(;s".concat(_get(_getPrototypeOf(x.prototype),"getHTML",this).call(this),"")}},{key:"getTemplateElement",value:function getTemplateElement(){var t=_get(_getPrototypeOf(x.prototype),"getTemplateElement",this).call(this),e=t.content,s=e.firstChild;return e.removeChild(s),n(e,s.firstChild),t}}]);return x}(f);var _=function _(t){return null===t||!("object"==_typeof(t)||"function"==typeof t)};var y=function(){function y(t,e,s){_classCallCheck(this,y);this.dirty=!0,this.element=t,this.name=e,this.strings=s,this.parts=[];for(var _t11=0;_t110&&arguments[0]!==undefined?arguments[0]:this.startNode;o(this.startNode.parentNode,t.nextSibling,this.endNode)}}]);return V}();var b=function(){function b(t,e,s){_classCallCheck(this,b);if(this.value=void 0,this._pendingValue=void 0,2!==s.length||""!==s[0]||""!==s[1])throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=e,this.strings=s}_createClass(b,[{key:"setValue",value:function setValue(t){this._pendingValue=t}},{key:"commit",value:function commit(){for(;s(this._pendingValue);){var _t15=this._pendingValue;this._pendingValue=r,_t15(this)}if(this._pendingValue===r)return;var t=!!this._pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name)),this.value=t,this._pendingValue=r}}]);return b}();var w=function(_y){_inherits(w,_y);function w(t,e,s){var _this3;_classCallCheck(this,w);_this3=_possibleConstructorReturn(this,_getPrototypeOf(w).call(this,t,e,s)),_this3.single=2===s.length&&""===s[0]&&""===s[1];return _this3}_createClass(w,[{key:"_createPart",value:function _createPart(){return new T(this)}},{key:"_getValue",value:function _getValue(){return this.single?this.parts[0].value:_get(_getPrototypeOf(w.prototype),"_getValue",this).call(this)}},{key:"commit",value:function commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}]);return w}(y);var T=function(_N){_inherits(T,_N);function T(){_classCallCheck(this,T);return _possibleConstructorReturn(this,_getPrototypeOf(T).apply(this,arguments))}return T}(N);var E=!1;try{var _t16={get capture(){return E=!0,!1}};window.addEventListener("test",_t16,_t16),window.removeEventListener("test",_t16,_t16)}catch(t){}var A=function(){function A(t,e,s){var _this4=this;_classCallCheck(this,A);this.value=void 0,this._pendingValue=void 0,this.element=t,this.eventName=e,this.eventContext=s,this._boundHandleEvent=function(t){return _this4.handleEvent(t)}}_createClass(A,[{key:"setValue",value:function setValue(t){this._pendingValue=t}},{key:"commit",value:function commit(){for(;s(this._pendingValue);){var _t17=this._pendingValue;this._pendingValue=r,_t17(this)}if(this._pendingValue===r)return;var t=this._pendingValue,e=this.value,i=null==t||null!=e&&(t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive),n=null!=t&&(null==e||i);i&&this.element.removeEventListener(this.eventName,this._boundHandleEvent,this._options),n&&(this._options=P(t),this.element.addEventListener(this.eventName,this._boundHandleEvent,this._options)),this.value=t,this._pendingValue=r}},{key:"handleEvent",value:function handleEvent(t){"function"==typeof this.value?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}]);return A}();var P=function P(t){return t&&(E?{capture:t.capture,passive:t.passive,once:t.once}:t.capture)};var S=function(){function S(){_classCallCheck(this,S)}_createClass(S,[{key:"handleAttributeExpressions",value:function handleAttributeExpressions(t,e,s,i){var n=e[0];if("."===n){return new w(t,e.slice(1),s).parts}return"@"===n?[new A(t,e.slice(1),i.eventContext)]:"?"===n?[new b(t,e.slice(1),s)]:new y(t,e,s).parts}},{key:"handleTextExpression",value:function handleTextExpression(t){return new V(t)}}]);return S}();var C=new S;function M(t){var e=L.get(t.type);void 0===e&&(e={stringsArray:new WeakMap,keyString:new Map},L.set(t.type,e));var s=e.stringsArray.get(t.strings);if(void 0!==s)return s;var i=t.strings.join(l);return void 0===(s=e.keyString.get(i))&&(s=new u(t,t.getTemplateElement()),e.keyString.set(i,s)),e.stringsArray.set(t.strings,s),s}var L=new Map,k=new WeakMap;(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.0.0");t.html=function(t){for(var _len=arguments.length,e=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){e[_key-1]=arguments[_key]}return new f(t,e,"html",C)},t.svg=function(t){for(var _len2=arguments.length,e=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){e[_key2-1]=arguments[_key2]}return new x(t,e,"svg",C)},t.DefaultTemplateProcessor=S,t.defaultTemplateProcessor=C,t.directive=function(t){return function(){var i=t.apply(void 0,arguments);return e.set(i,!0),i}},t.isDirective=s,t.removeNodes=o,t.reparentNodes=n,t.noChange=r,t.nothing=a,t.AttributeCommitter=y,t.AttributePart=N,t.BooleanAttributePart=b,t.EventPart=A,t.isPrimitive=_,t.NodePart=V,t.PropertyCommitter=w,t.PropertyPart=T,t.parts=k,t.render=function(t,e,s){var i=k.get(e);void 0===i&&(o(e,e.firstChild),k.set(e,i=new V(Object.assign({templateFactory:M},s))),i.appendInto(e)),i.setValue(t),i.commit()},t.templateCaches=L,t.templateFactory=M,t.TemplateInstance=v,t.SVGTemplateResult=x,t.TemplateResult=f,t.createMarker=m,t.isTemplatePartActive=p,t.Template=u,Object.defineProperty(t,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/prism.js b/documentation/docs/generated/js/libs/prism.js new file mode 100644 index 0000000000..bb9d7ebb45 --- /dev/null +++ b/documentation/docs/generated/js/libs/prism.js @@ -0,0 +1,46 @@ +/* PrismJS 1.23.0 +https://prismjs.com/download.html?#themes=prism&languages=markup+css+clike+javascript+apacheconf+aspnet+bash+c+csharp+cpp+coffeescript+dart+docker+elm+git+go+graphql+handlebars+haskell+http+ignore+java+json+kotlin+less+markdown+markup-templating+nginx+php+powershell+ruby+rust+sass+scss+sql+swift+typescript+wasm+yaml&plugins=line-highlight+line-numbers+toolbar+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var b=m.value;if(t.length>n.length)return;if(!(b instanceof W)){var k,x=1;if(h){if(!(k=z(v,y,n,f)))break;var w=k.index,A=k.index+k[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=N);var j=m.prev;O&&(j=I(t,j,O),y+=O.length),q(t,j,x);var C=new W(o,g?M.tokenize(S,g):S,d,S);if(m=I(t,j,C),L&&I(t,m,L),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var t=M.util.currentScript();function r(){M.manual||M.highlightAll()}if(t&&(M.filename=t.src,t.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var a=document.readyState;"loading"===a||"interactive"===a&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; +!function(s){var e=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),string:{pattern:e,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; +Prism.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^\s*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|Type|UserFile|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferSize|BufferedLogs|CGIDScriptTimeout|CGIMapExtension|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DTracePrivileges|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtFilterDefine|ExtFilterOptions|ExtendedStatus|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|KeepAlive|KeepAliveTimeout|KeptBodySize|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|LanguagePriority|Limit(?:InternalRecursion|Request(?:Body|FieldSize|Fields|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|MMapFile|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|ModMimeUsePathInfo|ModemStandard|MultiviewsMatch|Mutex|NWSSLTrustedCerts|NWSSLUpgradeable|NameVirtualHost|NoProxy|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|RLimitCPU|RLimitMEM|RLimitNPROC|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|SSIETag|SSIEndTag|SSIErrorMsg|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|SRPUnknownUserSeed|SRPVerifierFile|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UseStapling|UserName|VerifyClient|VerifyDepth)|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadStackSize|ThreadsPerChild|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/}; +!function(s){function a(e,s){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+s[+n]+")"})}function t(e,n,s){return RegExp(a(e,n),s||"")}function e(e,n){for(var s=0;s>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",i="class enum interface struct",r="add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var d=l(i),p=RegExp(l(n+" "+i+" "+r+" "+o)),c=l(i+" "+r+" "+o),u=l(n+" "+i+" "+o),g=e("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),b=e("\\((?:[^()]|<>)*\\)",2),h="@?\\b[A-Za-z_]\\w*\\b",f=a("<<0>>(?:\\s*<<1>>)?",[h,g]),m=a("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[c,f]),k="\\[\\s*(?:,\\s*)*\\]",y=a("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[m,k]),w=a("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[a("\\(<<0>>+(?:,<<0>>+)+\\)",[a("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[g,b,k])]),m,k]),v={keyword:p,punctuation:/[<>()?,.:[\]]/},x="'(?:[^\r\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'",$='"(?:\\\\.|[^\\\\"\r\n])*"';s.languages.csharp=s.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[$]),lookbehind:!0,greedy:!0},{pattern:RegExp(x),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[m]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[h,w]),lookbehind:!0,inside:v},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[h]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[d,f]),lookbehind:!0,inside:v},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[m]),lookbehind:!0,inside:v},{pattern:t("(\\bwhere\\s+)<<0>>",[h]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[y]),lookbehind:!0,inside:v},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[w,u,h]),inside:v}],keyword:p,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),s.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),s.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[h]),lookbehind:!0,alias:"punctuation"}}),s.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[h]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[b]),lookbehind:!0,alias:"class-name",inside:v},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[w,m]),inside:v,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[w]),lookbehind:!0,inside:v,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[h,g]),inside:{function:t("^<<0>>",[h]),generic:{pattern:RegExp(g),alias:"class-name",inside:v}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>)(?:\\s*,\\s*(?:<<3>>|<<4>>))*(?=\\s*(?:where|[{;]|=>|$))",[d,f,h,w,p.source]),lookbehind:!0,inside:{keyword:p,"class-name":{pattern:RegExp(w),greedy:!0,inside:v},punctuation:/,/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var _=$+"|"+x,B=a("/(?![*/])|//[^\r\n]*[\r\n]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>",[_]),E=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),R="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",P=a("<<0>>(?:\\s*\\(<<1>>*\\))?",[m,E]);s.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[R,P]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[R]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[E]),inside:s.languages.csharp},"class-name":{pattern:RegExp(m),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var z=":[^}\r\n]+",S=e(a("[^\"'/()]|<<0>>|\\(<>*\\)",[B]),2),j=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[S,z]),A=e(a("[^\"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)",[_]),2),F=a("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[A,z]);function U(e,n){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[e]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[n,z]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:s.languages.csharp}}},string:/[\s\S]+/}}s.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[j]),lookbehind:!0,greedy:!0,inside:U(j,S)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[F]),lookbehind:!0,greedy:!0,inside:U(F,A)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp; +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive":{pattern:/<%\s*@.*%>/i,alias:"tag",inside:{"page-directive":{pattern:/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,alias:"tag"},rest:Prism.languages.markup.tag.inside}},directive:{pattern:/<%.*%>/i,alias:"tag",inside:{directive:{pattern:/<%\s*?[$=%#:]{0,2}|%>/i,alias:"tag"},rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{directive:Prism.languages.aspnet.directive},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp-comment":{pattern:/<%--[\s\S]*?--%>/,alias:["asp","comment"]}}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp-script":{pattern:/(]*>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,alias:["asp","script"],inside:Prism.languages.csharp||{}}}); +!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var s=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],i=a.variable[1].inside,o=0;o>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c.boolean; +!function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n="\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b".replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp("(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+".replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp('(\\b(?:module|import)\\s+)(?:"(?:\\\\(?:\r\n|[^])|[^"\\\\\r\n])*"|<[^<>\r\n]*>|'+"(?:\\s*:\\s*)?|:\\s*".replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b[a-z_]\w*\s*<(?:[^<>]|<(?:[^<>])*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(Prism); +!function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(Prism); +!function(e){var a=[/\b(?:async|sync|yield)\*/,/\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extension|external|extends|factory|final|finally|for|get|hide|if|implements|interface|import|in|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\b/],t="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",s={pattern:RegExp(t+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}}}};e.languages.dart=e.languages.extend("clike",{string:[{pattern:/r?("""|''')[\s\S]*?\1/,greedy:!0},{pattern:/r?(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],"class-name":[s,{pattern:RegExp(t+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:s.inside}],keyword:a,operator:/\bis!|\b(?:as|is)\b|\+\+|--|&&|\|\||<<=?|>>=?|~(?:\/=?)?|[+\-*\/%&^|=!<>]=?|\?/}),e.languages.insertBefore("dart","function",{metadata:{pattern:/@\w+/,alias:"symbol"}}),e.languages.insertBefore("dart","class-name",{generics:{pattern:/<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/,inside:{"class-name":s,keyword:a,punctuation:/[<>(),.:]/,operator:/[?&|]/}}})}(Prism); +!function(e){var r="(?:[ \t]+(?![ \t])(?:)?|)".replace(//g,function(){return"\\\\[\r\n](?:\\s|\\\\[\r\n]|#.*(?!.))*(?![\\s#]|\\\\[\r\n])"}),n="\"(?:[^\"\\\\\r\n]|\\\\(?:\r\n|[^]))*\"|'(?:[^'\\\\\r\n]|\\\\(?:\r\n|[^]))*'",t="--[\\w-]+=(?:|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)".replace(//g,function(){return n}),o={pattern:RegExp(n),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function a(e,n){return e=e.replace(//g,function(){return t}).replace(//g,function(){return r}),RegExp(e,n)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:a("(^(?:ONBUILD)?\\w+)(?:)*","i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[o,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:a("(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b","i"),lookbehind:!0,greedy:!0},{pattern:a("(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\\\]+)AS","i"),lookbehind:!0,greedy:!0},{pattern:a("(^ONBUILD)\\w+","i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:o,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism); +Prism.languages.elm={comment:/--.*|{-[\s\S]*?-}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/^\s*import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/}; +Prism.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m}; +Prism.languages.go=Prism.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete Prism.languages.go["class-name"]; +Prism.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:Prism.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/}; +!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(a){e.languages["markup-templating"].buildPlaceholders(a,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(a){e.languages["markup-templating"].tokenizePlaceholders(a,"handlebars")})}(Prism); +Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\/].*|$)|{-[\s\S]*?-})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^\s*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[-!#$%*+=?&@|~:<>^\\\/]*\.[-!#$%*+=?&@|~.:<>^\\\/]+|[-!#$%*+=?&@|~.:<>^\\\/]+\.[-!#$%*+=?&@|~:<>^\\\/]*|[-!#$%*+=?&@|~:<>^\\\/]+|`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,hvariable:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*\b/,constant:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*\b/,punctuation:/[{}[\];(),.:]/},Prism.languages.hs=Prism.languages.haskell; +!function(t){t.languages.http={"request-line":{pattern:/^(?:GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH|PRI|SEARCH)\s(?:https?:\/\/|\/)\S*\sHTTP\/[0-9.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:t.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[0-9.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[0-9.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[0-9.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var a,e,s,n=t.languages,r={"application/javascript":n.javascript,"application/json":n.json||n.javascript,"application/xml":n.xml,"text/xml":n.xml,"text/html":n.html,"text/css":n.css},i={"application/json":!0,"application/xml":!0};for(var p in r)if(r[p]){a=a||{};var o=i[p]?(void 0,s=(e=p).replace(/^[a-z]+\//,""),"(?:"+e+"|\\w+/(?:[\\w.-]+\\+)+"+s+"(?![+\\w.-]))"):p;a[p.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+o+"(?:(?:\\r\\n?|\\n).+)*)(?:\\r?\\n|\\r){2}[\\s\\S]*","i"),lookbehind:!0,inside:r[p]}}a&&t.languages.insertBefore("http","header-name",a)}(Prism); +!function(n){n.languages.ignore={comment:/^#.*/m,entry:{pattern:/\S(?:.*(?:(?:\\ )|\S))?/,alias:"string",inside:{operator:/^!|\*\*?|\?/,regex:{pattern:/(^|[^\\])\[[^\[\]]*\]/,lookbehind:!0},punctuation:/\//}}},n.languages.gitignore=n.languages.ignore,n.languages.hgignore=n.languages.ignore,n.languages.npmignore=n.languages.ignore}(Prism); +!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,n="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",a={pattern:RegExp(n+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{"class-name":[a,{pattern:RegExp(n+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=())])"),lookbehind:!0,inside:a.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(\:\:\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":a,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(Prism); +Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json; +!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var n=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:n},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(Prism); +Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}); +!function(u){function n(n){return n=n.replace(//g,function(){return"(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?!\n|\r\n?))"}),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var e="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",t="\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))".replace(/__/g,function(){return e}),a="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)";u.languages.markdown=u.languages.extend("markup",{}),u.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:u.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+a+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+a+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(e),inside:u.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(e),alias:"important",inside:u.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~))+?\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(e){["url","bold","italic","strike"].forEach(function(n){e!==n&&(u.languages.markdown[e].inside.content.inside[n]=u.languages.markdown[n])})}),u.hooks.add("after-tokenize",function(n){"markdown"!==n.language&&"md"!==n.language||!function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?={))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[a-z0-9_|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[a-z0-9_|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:/\b\w+(?=\s*\()/,property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)*)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism); +!function(e){var i=Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*]|[^\[\]])*]|[^\[\]])*]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},r=i.string[0].inside;r.boolean=i.boolean,r.variable=i.variable,r.function.inside=i}(); +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin\s[\s\S]*?^=end/m,greedy:!0}],"class-name":{pattern:/(\b(?:class)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};delete e.languages.ruby.function,e.languages.insertBefore("ruby","keyword",{regex:[{pattern:RegExp("%r(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n}}],e.languages.rb=e.languages.ruby}(Prism); +!function(e){for(var a="/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|)*\\*/",t=0;t<2;t++)a=a.replace(//g,function(){return a});a=a.replace(//g,function(){return"[^\\s\\S]"}),e.languages.rust={comment:[{pattern:RegExp("(^|[^\\\\])"+a),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0,alias:"string"},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|Self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:[ui](?:8|16|32|64|128|size)|f(?:32|64)|bool|char|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64|size)?|f32|f64))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism); +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,a=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:a}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:a,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism); +Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; +Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}; +Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(?:\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[^(])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|some|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.languages.swift; +!function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},keyword:/\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(Prism); +Prism.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/}; +!function(e){var n=/[*&][^\s[\]{},]+/,r=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,t="(?:"+r.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+r.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),d="\"(?:[^\"\\\\\r\n]|\\\\.)*\"|'(?:[^'\\\\\r\n]|\\\\.)*'";function o(e,n){n=(n||"").replace(/m/g,"")+"m";var r="([:\\-,[{]\\s*(?:\\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|]|}|(?:[\r\n]\\s*)?#))".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return e});return RegExp(r,n)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return t})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp("((?:^|[:\\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\\s*:\\s)".replace(/<>/g,function(){return t}).replace(/<>/g,function(){return"(?:"+a+"|"+d+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:o("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:o("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:o("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:o(d),lookbehind:!0,greedy:!0},number:{pattern:o("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:r,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(Prism); +!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document&&document.querySelector){var t,o="line-numbers",s="linkable-line-numbers",a=function(){if(void 0===t){var e=document.createElement("div");e.style.fontSize="13px",e.style.lineHeight="1.5",e.style.padding="0",e.style.border="0",e.innerHTML=" 
                                                                                                                                                                   ",document.body.appendChild(e),t=38===e.offsetHeight,document.body.removeChild(e)}return t},l=!0,u=0;Prism.hooks.add("before-sanity-check",function(e){var t=e.element.parentElement;if(c(t)){var n=0;v(".line-highlight",t).forEach(function(e){n+=e.textContent.length,e.parentNode.removeChild(e)}),n&&/^( \n)+$/.test(e.code.slice(-n))&&(e.code=e.code.slice(0,-n))}}),Prism.hooks.add("complete",function e(t){var n=t.element.parentElement;if(c(n)){clearTimeout(u);var i=Prism.plugins.lineNumbers,r=t.plugins&&t.plugins.lineNumbers;if(b(n,o)&&i&&!r)Prism.hooks.add("line-numbers",e);else d(n)(),u=setTimeout(f,1)}}),window.addEventListener("hashchange",f),window.addEventListener("resize",function(){v("pre").filter(c).map(function(e){return d(e)}).forEach(y)})}function v(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function b(e,t){return e.classList.contains(t)}function y(e){e()}function c(e){return!(!e||!/pre/i.test(e.nodeName))&&(!!e.hasAttribute("data-line")||!(!e.id||!Prism.util.isActive(e,s)))}function d(u,e,c){var t=(e="string"==typeof e?e:u.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),d=+u.getAttribute("data-line-offset")||0,f=(a()?parseInt:parseFloat)(getComputedStyle(u).lineHeight),p=Prism.util.isActive(u,o),n=u.querySelector("code"),h=p?u:n||u,m=[],g=n&&h!=n?function(e,t){var n=getComputedStyle(e),i=getComputedStyle(t);function r(e){return+e.substr(0,e.length-2)}return t.offsetTop+r(i.borderTopWidth)+r(i.paddingTop)-r(n.paddingTop)}(u,n):0;t.forEach(function(e){var t=e.split("-"),n=+t[0],i=+t[1]||n,r=u.querySelector('.line-highlight[data-range="'+e+'"]')||document.createElement("div");if(m.push(function(){r.setAttribute("aria-hidden","true"),r.setAttribute("data-range",e),r.className=(c||"")+" line-highlight"}),p&&Prism.plugins.lineNumbers){var o=Prism.plugins.lineNumbers.getLine(u,n),s=Prism.plugins.lineNumbers.getLine(u,i);if(o){var a=o.offsetTop+g+"px";m.push(function(){r.style.top=a})}if(s){var l=s.offsetTop-o.offsetTop+s.offsetHeight+"px";m.push(function(){r.style.height=l})}}else m.push(function(){r.setAttribute("data-start",String(n)),n span",u).forEach(function(e,t){var n=t+r;e.onclick=function(){var e=i+"."+n;l=!1,location.hash=e,setTimeout(function(){l=!0},1)}})}return function(){m.forEach(y)}}function f(){var e=location.hash.slice(1);v(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var t=(e.match(/\.([\d,-]+)$/)||[,""])[1];if(t&&!document.getElementById(e)){var n=e.slice(0,e.lastIndexOf(".")),i=document.getElementById(n);if(i)i.hasAttribute("data-line")||i.setAttribute("data-line",""),d(i,t,"temporary ")(),l&&document.querySelector(".temporary.line-highlight").scrollIntoView()}}}(); +!function(){if("undefined"!=typeof Prism&&"undefined"!=typeof document){var o="line-numbers",a=/\n(?!$)/g,e=Prism.plugins.lineNumbers={getLine:function(e,n){if("PRE"===e.tagName&&e.classList.contains(o)){var t=e.querySelector(".line-numbers-rows");if(t){var i=parseInt(e.getAttribute("data-start"),10)||1,r=i+(t.children.length-1);n");(i=document.createElement("span")).setAttribute("aria-hidden","true"),i.className="line-numbers-rows",i.innerHTML=l,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(i),u([t]),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function u(e){if(0!=(e=e.filter(function(e){var n=t(e)["white-space"];return"pre-wrap"===n||"pre-line"===n})).length){var n=e.map(function(e){var n=e.querySelector("code"),t=e.querySelector(".line-numbers-rows");if(n&&t){var i=e.querySelector(".line-numbers-sizer"),r=n.textContent.split(a);i||((i=document.createElement("span")).className="line-numbers-sizer",n.appendChild(i)),i.innerHTML="0",i.style.display="block";var s=i.getBoundingClientRect().height;return i.innerHTML="",{element:e,lines:r,lineHeights:[],oneLinerHeight:s,sizer:i}}}).filter(Boolean);n.forEach(function(e){var i=e.sizer,n=e.lines,r=e.lineHeights,s=e.oneLinerHeight;r[n.length-1]=void 0,n.forEach(function(e,n){if(e&&1 + * Licensed under the New BSD License. + * https://github.com/stackp/promisejs + */ +(function(a){function b(){this._callbacks=[];}b.prototype.then=function(a,c){var d;if(this._isdone)d=a.apply(c,this.result);else{d=new b();this._callbacks.push(function(){var b=a.apply(c,arguments);if(b&&typeof b.then==='function')b.then(d.done,d);});}return d;};b.prototype.done=function(){this.result=arguments;this._isdone=true;for(var a=0;a=300)&&j.status!==304);h.done(a,j.responseText,j);}};j.send(k);return h;}function h(a){return function(b,c,d){return g(a,b,c,d);};}var i={Promise:b,join:c,chain:d,ajax:g,get:h('GET'),post:h('POST'),put:h('PUT'),del:h('DELETE'),ENOXHR:1,ETIMEOUT:2,ajaxTimeout:0};if(typeof define==='function'&&define.amd)define(function(){return i;});else a.promise=i;})(this); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/svg-pan-zoom.min.js b/documentation/docs/generated/js/libs/svg-pan-zoom.min.js new file mode 100644 index 0000000000..807f0e442e --- /dev/null +++ b/documentation/docs/generated/js/libs/svg-pan-zoom.min.js @@ -0,0 +1,3 @@ +// svg-pan-zoom v3.6.0 +// https://github.com/ariutta/svg-pan-zoom +!function t(e,o,n){function i(r,a){if(!o[r]){if(!e[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var h=o[r]={exports:{}};e[r][0].call(h.exports,function(t){var o=e[r][1][t];return i(o?o:t)},h,h.exports,t,e,o,n)}return o[r].exports}for(var s="function"==typeof require&&require,r=0;r=0;n--)this.eventListeners.hasOwnProperty(o[n])&&delete this.eventListeners[o[n]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!this.options.preventMouseEventsDefault&&h);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)};var e=!this.options.preventMouseEventsDefault;n.on(this.options.eventsListenerElement||this.svg,this.wheelListener,e),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){if(this.options.mouseWheelZoomEnabled){var t=!this.options.preventMouseEventsDefault;n.off(this.options.eventsListenerElement||this.svg,this.wheelListener,t),this.options.mouseWheelZoomEnabled=!1}},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,o=Date.now()-this.lastMouseWheelEventTime,n=3+Math.max(0,30-o);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=-.30?1:-1)*Math.log(Math.abs(e)+10)/n;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,o){var n=this.viewport.getOriginalState();o?(t=Math.max(this.options.minZoom*n.zoom,Math.min(this.options.maxZoom*n.zoom,t)),t/=this.getZoom()):this.getZoom()*tthis.options.maxZoom*n.zoom&&(t=this.options.maxZoom*n.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,o){if(o&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==s.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,o)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var o;o=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var n=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(o,n)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),o=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(o)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),o=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:o})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!this.options.preventMouseEventsDefault&&h);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),c=c.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,o){return t.publicZoomAtPoint(e,o,!0),t.pi},zoomAtPointBy:function(e,o){return t.publicZoomAtPoint(e,o,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var c=[],p=function(t,e){var o=s.getSvg(t);if(null===o)return null;for(var n=c.length-1;n>=0;n--)if(c[n].svg===o)return c[n].instance.getPublicInstance();return c.push({svg:o,instance:new l(o,e)}),c[c.length-1].instance.getPublicInstance()};e.exports=p},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,o){var n=t("./utilities"),i="unknown";document.documentMode&&(i="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var o=null;if(o=n.isElement(e)?e:t.querySelector(e),!o){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===i.length&&"g"===i[0].nodeName&&null===i[0].getAttribute("transform")&&(o=i[0])}if(!o){var s="viewport-"+(new Date).toISOString().replace(/\D/g,"");o=document.createElementNS(this.svgNS,"g"),o.setAttribute("id",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)"defs"!==r[r.length-a].nodeName&&o.appendChild(r[r.length-a]);t.appendChild(o)}var l=[];return o.getAttribute("class")&&(l=o.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),o.setAttribute("class",l.join(" "))),o},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";e.toLowerCase().indexOf("overflow")===-1&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:n.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,o=0;oe?(clearTimeout(a),a=null,l=h,s=t.apply(n,i),a||(n=i=null)):a||o.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&t<60&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||n(33):n(e)}}},{}]},{},[1]); \ No newline at end of file diff --git a/documentation/docs/generated/js/libs/tablesort.min.js b/documentation/docs/generated/js/libs/tablesort.min.js new file mode 100644 index 0000000000..09de2aed55 --- /dev/null +++ b/documentation/docs/generated/js/libs/tablesort.min.js @@ -0,0 +1,6 @@ +/*! + * tablesort v5.1.0 (2018-09-14) + * http://tristen.ca/tablesort/demo/ + * Copyright (c) 2018 ; Licensed MIT +*/ +!function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.trim().toLowerCase(),b=b.trim().toLowerCase(),a===b?0:a0)if(a.tHead&&a.tHead.rows.length>0){for(e=0;e0&&l.push(k),m++;if(!l)return}for(m=0;m2&&void 0!==arguments[2]&&arguments[2];for(var s in t)void 0!==i[s]&&(null===i[s]||"object"!==(0,c.default)(i[s])?n(t,i,s,o):"object"===(0,c.default)(t[s])&&e.fillIfDefined(t[s],i[s],o))},e.extend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r=0;r3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var r in o)if(o.hasOwnProperty(r)&&-1===t.indexOf(r))if(o[r]&&o[r].constructor===Object)void 0===i[r]&&(i[r]={}),i[r].constructor===Object?e.deepExtend(i[r],o[r]):n(i,o,r,s);else if(Array.isArray(o[r])){i[r]=[];for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];for(var r in i)if(i.hasOwnProperty(r)||!0===o)if(i[r]&&i[r].constructor===Object)void 0===t[r]&&(t[r]={}),t[r].constructor===Object?e.deepExtend(t[r],i[r],o):n(t,i,r,s);else if(Array.isArray(i[r])){t[r]=[];for(var a=0;a=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){var o;return-1!=t.indexOf("rgba")?t:-1!=t.indexOf("rgb")?(o=t.substr(t.indexOf("(")+1).replace(")","").split(","),"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"):(o=e.hexToRGB(t),null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")")},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(!0===e.isString(t)){if(!0===e.isValidRGB(t)){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(!0===e.isValidHex(t)){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t;return{h:60*((t==o?3:i==o?1:5)-s/(n-o))/360,s:(n-o)/n,v:n}};var v={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,l.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=v.split(t.style.cssText),n=v.split(i),s=e.extend(o,n);t.style.cssText=v.join(s)},e.removeCssText=function(t,e){var i=v.split(t.style.cssText),o=v.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=v.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)},e.isValidRGB=function(t){return t=t.replace(" ",""),/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t)},e.isValidRGBA=function(t){return t=t.replace(" ",""),/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t)},e.selectiveBridgeObject=function(t,i){if(null!==i&&"object"===(void 0===i?"undefined":(0,c.default)(i))){for(var o=(0,h.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=function(t){return null!==t&&void 0!==t},s=function(t){return null!==t&&"object"===(void 0===t?"undefined":(0,c.default)(t))};if(!s(t))throw new Error("Parameter mergeTarget must be an object");if(!s(e))throw new Error("Parameter options must be an object");if(!n(i))throw new Error("Parameter option must have a value");if(!s(o))throw new Error("Parameter globalOptions must be an object");var r=e[i],a=s(o)&&!function(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}(o),d=a?o[i]:void 0,l=d?d.enabled:void 0;if(void 0!==r){if("boolean"==typeof r)return s(t[i])||(t[i]={}),void(t[i].enabled=r);if(null===r&&!s(t[i])){if(!n(d))return;t[i]=(0,h.default)(d)}if(s(r)){var u=!0;void 0!==r.enabled?u=r.enabled:void 0!==l&&(u=d.enabled),function(t,e,i){s(t[i])||(t[i]={});var o=e[i],n=t[i];for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])}(t,e,i),t[i].enabled=u}}},e.binarySearchCustom=function(t,e,i,o){for(var n=0,s=0,r=t.length-1;s<=r&&n<1e4;){var a=Math.floor((s+r)/2),h=t[a],d=void 0===o?h[i]:h[i][o],l=e(d);if(0==l)return a;-1==l?s=a+1:r=a-1,n++}return-1},e.binarySearchValue=function(t,e,i,o,n){var s,r,a,h,d=0,l=0,u=t.length-1;for(n=void 0!=n?n:function(t,e){return t==e?0:t0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?l=h+1:u=h-1,d++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:(4-2*t)*t-1},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,s=void 0;try{for(var a,h=(0,r.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;ln?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;e0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.printStyle=void 0;var n=i(19),s=o(n),r=i(6),a=o(r),h=i(8),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=!1,v=void 0,g="background: #FFeeee; color: #dd0000",y=function(){function t(){(0,u.default)(this,t)}return(0,p.default)(t,null,[{key:"validate",value:function(e,i,o){m=!1,v=i;var n=i;return void 0!==o&&(n=i[o]),t.parse(e,n,[]),m}},{key:"parse",value:function(e,i,o){for(var n in e)e.hasOwnProperty(n)&&t.check(n,e,i,o)}},{key:"check",value:function(e,i,o,n){if(void 0===o[e]&&void 0===o.__any__)return void t.getSuggestion(e,o,n);var s=e,r=!0;void 0===o[e]&&void 0!==o.__any__&&(s="__any__",r="object"===t.getType(i[e]));var a=o[s];r&&void 0!==a.__type__&&(a=a.__type__),t.checkFields(e,i,o,s,a,n)}},{key:"checkFields",value:function(e,i,o,n,s,r){var a=function(i){console.log("%c"+i+t.printLocation(r,e),g)},h=t.getType(i[e]),l=s[h];void 0!==l?"array"===t.getType(l)&&-1===l.indexOf(i[e])?(a('Invalid option detected in "'+e+'". Allowed values are:'+t.print(l)+' not "'+i[e]+'". '),m=!0):"object"===h&&"__any__"!==n&&(r=f.copyAndExtendArray(r,e),t.parse(i[e],o[n],r)):void 0===s.any&&(a('Invalid type received for "'+e+'". Expected: '+t.print((0,d.default)(s))+". Received ["+h+'] "'+i[e]+'"'),m=!0)}},{key:"getType",value:function(t){var e=void 0===t?"undefined":(0,a.default)(t);return"object"===e?null===t?"null":t instanceof Boolean?"boolean":t instanceof Number?"number":t instanceof String?"string":Array.isArray(t)?"array":t instanceof Date?"date":void 0!==t.nodeType?"dom":!0===t._isAMomentObject?"moment":"object":"number"===e?"number":"boolean"===e?"boolean":"string"===e?"string":void 0===e?"undefined":e}},{key:"getSuggestion",value:function(e,i,o){var n=t.findInOptions(e,i,o,!1),s=t.findInOptions(e,v,[],!0),r=void 0 +;r=void 0!==n.indexMatch?" in "+t.printLocation(n.path,e,"")+'Perhaps it was incomplete? Did you mean: "'+n.indexMatch+'"?\n\n':s.distance<=4&&n.distance>s.distance?" in "+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""):n.distance<=8?'. Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e):". Did you mean one of these: "+t.print((0,d.default)(i))+t.printLocation(o,e),console.log('%cUnknown option detected: "'+e+'"'+r,g),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&!0===n){var c=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,d=c.indexMatch)}else-1!==l.toLowerCase().indexOf(h)&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n0&&(this.enableBorderDashes(t,e),t.stroke(),this.disableBorderDashes(t,e)),t.restore()}},{key:"performFill",value:function(t,e){this.enableShadow(t,e),t.fill(),this.disableShadow(t,e),this.performStroke(t,e)}},{key:"_addBoundingBoxMargin",value:function(t){this.boundingBox.left-=t,this.boundingBox.top-=t,this.boundingBox.bottom+=t,this.boundingBox.right+=t}},{key:"_updateBoundingBox",value:function(t,e,i,o,n){void 0!==i&&this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n)}},{key:"getDimensionsFromLabel",value:function(t,e,i){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width,n=this.textSize.height;return 0===o&&(o=14,n=14),{width:o,height:n}}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(this.needsRefresh(e,i)){this.labelModule.getTextSize(t,e,i);var n=2*o.size;this.width=n,this.height=n,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){if(this.resize(t,s,r,a),this.left=o-this.width/2,this.top=n-this.height/2,this.initContextForDraw(t,a),t[e](o,n,a.size),this.performFill(t,a),void 0!==this.options.label){this.labelModule.calculateLabelSize(t,s,r,o,n,"hanging");var h=n+.5*this.height+.5*this.labelModule.size.height;this.labelModule.draw(t,o,h,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height))}}]),e}(m.default);e.default=v},function(t,e,i){var o=i(78),n=i(51);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(20),n=i(39);t.exports=i(21)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(32);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){t.exports={default:i(138),__esModule:!0}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(188),s=o(n),r=i(77),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,h=(0,a.default)(t);!(o=(r=h.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&h.return&&h.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e){t.exports={}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){var o=i(84),n=i(58);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){function o(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}o.subtract=function(t,e){var i=new o;return i.x=t.x-e.x,i.y=t.y-e.y,i.z=t.z-e.z,i},o.add=function(t,e){var i=new o;return i.x=t.x+e.x,i.y=t.y+e.y,i.z=t.z+e.z,i},o.avg=function(t,e){return new o((t.x+e.x)/2,(t.y+e.y)/2,(t.z+e.z)/2)},o.crossProduct=function(t,e){var i=new o;return i.x=t.y*e.z-t.z*e.y,i.y=t.z*e.x-t.x*e.z,i.z=t.x*e.y-t.y*e.x,i},o.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=o},function(t,e,i){var o,n,s;!function(i,r){n=[],o=r,void 0!==(s="function"==typeof o?o.apply(e,n):o)&&(t.exports=s)}(0,function(){function t(t){var e,i=t&&t.preventDefault||!1,o=t&&t.container||window,n={},s={keydown:{},keyup:{}},r={};for(e=97;e<=122;e++)r[String.fromCharCode(e)]={code:e-97+65,shift:!1};for(e=65;e<=90;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;e<=9;e++)r[""+e]={code:48+e,shift:!1};for(e=1;e<=12;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;e<=9;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r.delete={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==s[e][t.keyCode]){for(var o=s[e][t.keyCode],n=0;n=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};return i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i),n=t.range.conversion(o,r),(i.valueOf()-n.offset)*n.scale}return i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i),n=t.range.conversion(o,r),(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a);return new Date(h+a+t.range.start)},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,h.default)(this.data)}for(var i=0;ithis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},o.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=o},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;n=.4*v}if(this.options.showMinorLabels&&m){var k=this._repaintMinorText(c,y,t,b);k.style.width=_+"px"}f&&this.options.showMajorLabels?(c>0&&(void 0==w&&(w=c),k=this._repaintMajorText(c,s.getLabelMajor(),t,b)),g=this._repaintMajorLine(c,_,t,b)):m?g=this._repaintMinorLine(c,_,t,b):g&&(g.style.width=parseInt(g.style.width)+_+"px")}if(1e3!==x||u||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to 1000 lines."),u=!0),this.options.showMajorLabels){var S=this.body.util.toTime(0),D=s.getLabelMajor(S),M=D.length*(this.props.majorCharWidth||10)+10;(void 0==w||Mt.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"updateGroupOptions",value:function(t,e,i){if(void 0!==i){var o=t.group;if(void 0!==e&&void 0!==e.group&&o!==e.group)throw new Error("updateGroupOptions: group values in options don't match.");if("number"==typeof o||"string"==typeof o&&""!=o){var n=i.get(o);h.selectiveNotDeepExtend(["font"],t,n),t.color=h.parseColor(t.color)}}}},{key:"parseOptions",value:function(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},s=arguments[4],r=["color","fixed","shadow"];if(h.selectiveNotDeepExtend(r,e,i,o),t.checkMass(i),h.mergeOptions(e,i,"shadow",n),void 0!==i.color&&null!==i.color){var a=h.parseColor(i.color);h.fillIfDefined(e.color,a)}else!0===o&&null===i.color&&(e.color=h.bridgeObject(n.color));void 0!==i.fixed&&null!==i.fixed&&("boolean"==typeof i.fixed?(e.fixed.x=i.fixed,e.fixed.y=i.fixed):(void 0!==i.fixed.x&&"boolean"==typeof i.fixed.x&&(e.fixed.x=i.fixed.x),void 0!==i.fixed.y&&"boolean"==typeof i.fixed.y&&(e.fixed.y=i.fixed.y))),!0===o&&null===i.font&&(e.font=h.bridgeObject(n.font)),t.updateGroupOptions(e,i,s),void 0!==i.scaling&&h.mergeOptions(e.scaling,i.scaling,"label",n.scaling)}},{key:"checkMass",value:function(t,e){if(void 0!==t.mass&&t.mass<=0){var i="";void 0!==e&&(i=" in node id: "+e),console.log("%cNegative or zero mass disallowed"+i+", setting mass to 1.",C),t.mass=1}}}]),t}();e.default=O},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(6),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(2),u=function(){function t(){(0,a.default)(this,t)}return(0,d.default)(t,null,[{key:"choosify",value:function(t,e){var i=["node","edge","label"],o=!0,n=l.topMost(e,"chosen");if("boolean"==typeof n)o=n;else if("object"===(void 0===n?"undefined":(0,s.default)(n))){if(-1===i.indexOf(t))throw new Error("choosify: subOption '"+t+"' should be one of '"+i.join("', '")+"'");var r=l.topMost(e,["chosen",t]);"boolean"!=typeof r&&"function"!=typeof r||(o=r)}return o}},{key:"pointInRect",value:function(t,e,i){if(t.width<=0||t.height<=0)return!1;if(void 0!==i){var o={x:e.x-i.x,y:e.y-i.y};if(0!==i.angle){var n=-i.angle;e={x:Math.cos(n)*o.x-Math.sin(n)*o.y,y:Math.sin(n)*o.x+Math.cos(n)*o.y}}else e=o}var s=t.x+t.width,r=t.y+t.width;return t.lefte.x&&t.tope.y}},{key:"isValidLabel",value:function(t){return"string"==typeof t&&""!==t}}]),t}();e.default=u},function(t,e,i){i(125);for(var o=i(18),n=i(26),s=i(31),r=i(13)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),h=0;hdocument.F=Object<\/script>"),t.close(),h=t.F;o--;)delete h.prototype[s[o]];return h()};t.exports=Object.create||function(t,e){var i;return null!==t?(a.prototype=o(t),i=new a,a.prototype=null,i[r]=t):i=h(),void 0===e?i:n(i,e)}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(57)("keys"),n=i(40);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(18),n=o["__core-js_shared__"]||(o["__core-js_shared__"]={});t.exports=function(t){return n[t]||(n[t]={})}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){var o=i(20).f,n=i(22),s=i(13)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(135)(!0);i(79)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){e.f=i(13)},function(t,e,i){var o=i(18),n=i(7),s=i(52),r=i(61),a=i(20).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){var i=p().hours(0).minutes(0).seconds(0).milliseconds(0),o=i.clone().add(-3,"days").valueOf(),n=i.clone().add(3,"days").valueOf();this.millisecondsPerPixelCache=void 0,void 0===e?(this.start=o,this.end=n):(this.start=e.start||o,this.end=e.end||n),this.rolling=!1,this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={rtl:!1,start:null,end:null,moment:p,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10,rollingMode:{follow:!1,offset:.5}},this.options=c.extend({},this.defaultOptions),this.props={touch:{}},this.animationTimer=null,this.body.emitter.on("panstart",this._onDragStart.bind(this)),this.body.emitter.on("panmove",this._onDrag.bind(this)),this.body.emitter.on("panend",this._onDragEnd.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.body.dom.rollingModeBtn.addEventListener("click",this.startRolling.bind(this)),this.setOptions(e)}function s(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}var r=i(8),a=o(r),h=i(19),d=o(h),l=i(6),u=o(l),c=i(2),p=i(9),f=i(16),m=i(36);n.prototype=new f,n.prototype.setOptions=function(t){if(t){var e=["animation","direction","min","max","zoomMin","zoomMax","moveable","zoomable","moment","activate","hiddenDates","zoomKey","rtl","showCurrentTime","rollingMode","horizontalScroll"];c.selectiveExtend(e,this.options,t),t.rollingMode&&t.rollingMode.follow&&this.startRolling(),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},n.prototype.startRolling=function(){function t(){e.stopRolling(),e.rolling=!0;var i=e.end-e.start,o=c.convert(new Date,"Date").valueOf(),n=o-i*e.options.rollingMode.offset,s=o+i*(1-e.options.rollingMode.offset),r={animation:!1};e.setRange(n,s,r),i=1/e.conversion(e.body.domProps.center.width).scale/10,i<30&&(i=30),i>1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){i||(i={}),!0!==i.byUser&&(i.byUser=!1);var s=this,r=void 0!=t?c.convert(t,"Date").valueOf():null,h=void 0!=e?c.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),this.millisecondsPerPixelCache=void 0,i.animation){var l=this.start,p=this.end,f="object"===(0,u.default)(i.animation)&&"duration"in i.animation?i.animation.duration:500,v="object"===(0,u.default)(i.animation)&&"easingFunction"in i.animation?i.animation.easingFunction:"easeInOutQuad",g=c.easingFunctions[v];if(!g)throw new Error("Unknown easing function "+(0,d.default)(v)+". Choose from: "+(0,a.default)(c.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1;return function t(){if(!s.props.touch.dragging){var e=(new Date).valueOf(),a=e-y,d=g(a/f),u=a>f,c=u||null===r?r:l+(r-l)*d,v=u||null===h?h:p+(h-p)*d;_=s._applyRange(c,v),m.updateHiddenDates(s.options.moment,s.body,s.options.hiddenDates),b=b||_;var w={start:new Date(s.start),end:new Date(s.end),byUser:i.byUser,event:i.event};if(n&&n(d,_,u),_&&s.body.emitter.emit("rangechange",w),u){if(b&&(s.body.emitter.emit("rangechanged",w),o))return o()}else s.animationTimer=setTimeout(t,20)}}()}var _=this._applyRange(r,h);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),_){var w={start:new Date(this.start),end:new Date(this.end),byUser:i.byUser,event:i.event};if(this.body.emitter.emit("rangechange",w),clearTimeout(s.timeoutID),s.timeoutID=setTimeout(function(){s.body.emitter.emit("rangechanged",w)},200),o)return o()}},n.prototype.getMillisecondsPerPixel=function(){return void 0===this.millisecondsPerPixelCache&&(this.millisecondsPerPixelCache=(this.end-this.start)/this.body.dom.center.clientWidth),this.millisecondsPerPixelCache},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?c.convert(t,"Date").valueOf():this.start,n=null!=e?c.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?c.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?c.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-.5&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var h=parseFloat(this.options.zoomMax);h<0&&(h=0),n-o>h&&(this.end-this.start===h&&othis.end?(o=this.start,n=this.end):(i=n-o-h,o+=i/2,n-=i/2))}var d=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,d},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start;o-=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);var n,r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;n=this.options.rtl?i/r*o:-i/r*o;var a=this.props.touch.start+n,h=this.props.touch.end+n,d=m.snapAwayFromHidden(this.body.hiddenDates,a,this.previousDelta-i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0);if(d!=a||l!=h)return this.deltaDifference+=i,this.props.touch.start=d,this.props.touch.end=l,void this._onDrag(t);this.previousDelta=i,this._applyRange(a,h);var u=new Date(this.start),c=new Date(this.end);this.body.emitter.emit("rangechange",{start:u,end:c,byUser:!0,event:t}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:t}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),!(this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable)&&this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var i;i=e<0?1-e/5:1/(1+e/5);var o;if(this.rolling)o=this.start+(this.end-this.start)*this.options.rollingMode.offset;else{var n=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);o=this._pointerToDate(n)}this.zoom(i,o,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0,c.preventDefault(t)},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){c.preventDefault(t),this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d);var l={animation:!1,byUser:!0,event:t};this.setRange(r,a,l),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e,i=t.center?t.center.x:t.clientX;e=this.options.rtl?i-c.getAbsoluteLeft(this.body.dom.centerContainer):c.getAbsoluteRight(this.body.dom.centerContainer)-i;var o=this.body.util.toTime(e);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:c.getAbsoluteRight(e)-t.x,y:t.y-c.getAbsoluteTop(e)}:{x:t.x-c.getAbsoluteLeft(e),y:t.y-c.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0) +;var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l);var u={animation:!1,byUser:!0,event:o};this.setRange(a,h,u),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i,s={animation:!1,byUser:!0,event:null};this.setRange(o,n,s)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(){}var s=i(19),r=o(s),a=i(6),h=o(a),d=i(44),l=i(10),u=i(37),c=i(2),p=i(45),f=i(97),m=i(36),v=i(46);d(n.prototype),n.prototype._create=function(t){function e(t){this.isActive()&&this.emit("mousewheel",t);var e=0,i=0;if("detail"in t&&(i=-1*t.detail),"wheelDelta"in t&&(i=t.wheelDelta),"wheelDeltaY"in t&&(i=t.wheelDeltaY),"wheelDeltaX"in t&&(e=-1*t.wheelDeltaX),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=-1*i,i=0),"deltaY"in t&&(i=-1*t.deltaY),"deltaX"in t&&(e=t.deltaX),this.options.zoomKey&&!t[this.options.zoomKey])if(t.preventDefault(),this.options.verticalScroll&&Math.abs(i)>=Math.abs(e)){var o=this.props.scrollTop,n=o+i;this.isActive()&&(this._setScrollTop(n),this._redraw(),this.emit("scroll",t))}else if(this.options.horizontalScroll){var s=Math.abs(e)>=Math.abs(i)?e:i,r=s/120*(this.range.end-this.range.start)/20,a=this.range.start+r,h=this.range.end+r,d={animation:!1,byUser:!0,event:t};this.range.setRange(a,h,d)}}function i(t){if(s.options.verticalScroll&&(t.preventDefault(),s.isActive())){var e=-t.target.scrollTop;s._setScrollTop(e),s._redraw(),s.emit("scrollSide",t)}}function o(t){if(t.preventDefault&&t.preventDefault(),!(!t.target.className.indexOf("vis")>-1||a))return t.dataTransfer.dropEffect="move",a=!0,!1}function n(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation();try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e||!e.content)return}catch(t){return!1}return a=!1,t.center={x:t.clientX,y:t.clientY},"item"!==e.target?s.itemSet._onAddItem(t):s.itemSet._onDropObjectOnItem(t),s.emit("drop",s.getEventProperties(t)),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"),this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){!0===this.initialDrawDone&&this._redraw()}.bind(this)),this.on("rangechanged",function(){this.initialRangeChangeDone||(this.initialRangeChangeDone=!0)}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=c.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={},["tap","doubletap","press","pinch","pan","panstart","panmove","panend"].forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var a=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,this.initialRangeChangeDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(c.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),"object"!==(0,h.default)(this.options.orientation)&&(this.options.orientation={item:void 0,axis:void 0}),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new p(this.body);i.setOptions=function(t){var e=t?c.extend({},t):{};e.orientation="top",p.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);-1!==o&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=c.deepExtend({},this.options);this.components.forEach(function(t){c.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?c.convert(t,"Date").valueOf():new Date;if(this.customTimes.some(function(t){return t.options.id===e}))throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var o=new v(this.body,c.extend({},this.options,{time:i,id:e}));return this.customTimes.push(o),this.components.push(o),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t,e){var i=this.getDataRange();if(null!==i.min||null!==i.max){var o=i.max-i.min,n=new Date(i.min.valueOf()-.01*o),s=new Date(i.max.valueOf()+.01*o),r=!t||void 0===t.animation||t.animation;this.range.setRange(n,s,{animation:r},e)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i,o){"function"==typeof arguments[2]&&(o=arguments[2],i={});var n,s;1==arguments.length?(s=arguments[0],n=void 0===s.animation||s.animation,this.range.setRange(s.start,s.end,{animation:n})):2==arguments.length&&"function"==typeof arguments[1]?(s=arguments[0],o=arguments[1],n=void 0===s.animation||s.animation,this.range.setRange(s.start,s.end,{animation:n},o)):(n=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,{animation:n},o))},n.prototype.moveTo=function(t,e,i){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.range.end-this.range.start,n=c.convert(t,"Date").valueOf(),s=n-o/2,r=n+o/2,a=!e||void 0===e.animation||e.animation;this.range.setRange(s,r,{animation:a},i)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t,e,i){if(!(!t||t<0||t>1)){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.getWindow(),n=o.start.valueOf(),s=o.end.valueOf(),r=s-n,a=r/(1+t),h=(r-a)/2,d=n+h,l=s-h;this.setWindow(d,l,e,i)}},n.prototype.zoomOut=function(t,e,i){if(!(!t||t<0||t>1)){"function"==typeof arguments[1]&&(i=arguments[1],e={});var o=this.getWindow(),n=o.start.valueOf(),s=o.end.valueOf(),r=s-n,a=n-r*t/2,h=s+r*t/2;this.setWindow(a,h,e,i)}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(c.addClassName(o.root,"vis-top"),c.removeClassName(o.root,"vis-bottom")):(c.removeClassName(o.root,"vis-top"),c.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=c.option.asSize(e.maxHeight,""),o.root.style.minHeight=c.option.asSize(e.minHeight,""),o.root.style.width=c.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=c.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=c.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});if(t){if(this.redrawCount<5)return void this.body.emitter.emit("_change");console.log("WARNING: infinite loop in redraw?")}else this.redrawCount=0;this.body.emitter.emit("changed")}},n.prototype._setDOM=function(){var t=this.props,e=this.dom;t.leftContainer.width=t.left.width,t.rightContainer.width=t.right.width;var i=t.root.width-t.left.width-t.right.width-t.borderRootWidth;t.center.width=i,t.centerContainer.width=i,t.top.width=i,t.bottom.width=i,e.background.style.height=t.background.height+"px",e.backgroundVertical.style.height=t.background.height+"px",e.backgroundHorizontal.style.height=t.centerContainer.height+"px",e.centerContainer.style.height=t.centerContainer.height+"px",e.leftContainer.style.height=t.leftContainer.height+"px",e.rightContainer.style.height=t.rightContainer.height+"px",e.background.style.width=t.background.width+"px",e.backgroundVertical.style.width=t.centerContainer.width+"px",e.backgroundHorizontal.style.width=t.background.width+"px",e.centerContainer.style.width=t.center.width+"px",e.top.style.width=t.top.width+"px",e.bottom.style.width=t.bottom.width+"px",e.background.style.left="0",e.background.style.top="0",e.backgroundVertical.style.left=t.left.width+t.border.left+"px",e.backgroundVertical.style.top="0",e.backgroundHorizontal.style.left="0",e.backgroundHorizontal.style.top=t.top.height+"px",e.centerContainer.style.left=t.left.width+"px",e.centerContainer.style.top=t.top.height+"px",e.leftContainer.style.left="0",e.leftContainer.style.top=t.top.height+"px",e.rightContainer.style.left=t.left.width+t.center.width+"px",e.rightContainer.style.top=t.top.height+"px",e.top.style.left=t.left.width+"px",e.top.style.top="0",e.bottom.style.left=t.left.width+"px",e.bottom.style.top=t.top.height+t.centerContainer.height+"px",e.center.style.left="0",e.left.style.left="0",e.right.style.left="0"},n.prototype.repaint=function(){throw new Error("Function repaint is deprecated. Use redraw instead.")},n.prototype.setCurrentTime=function(t){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");this.currentTime.setCurrentTime(t)},n.prototype.getCurrentTime=function(){if(!this.currentTime)throw new Error("Option showCurrentTime must be true");return this.currentTime.getCurrentTime()},n.prototype._toTime=function(t){return m.toTime(this,t,this.props.center.width)},n.prototype._toGlobalTime=function(t){return m.toTime(this,t,this.props.root.width)},n.prototype._toScreen=function(t){return m.toScreen(this,t,this.props.center.width)},n.prototype._toGlobalScreen=function(t){return m.toScreen(this,t,this.props.root.width)},n.prototype._initAutoResize=function(){1==this.options.autoResize?this._startAutoResize():this._stopAutoResize()},n.prototype._startAutoResize=function(){var t=this;this._stopAutoResize(),this._onResize=function(){if(1!=t.options.autoResize)return void t._stopAutoResize();t.dom.root&&(t.dom.root.offsetWidth==t.props.lastWidth&&t.dom.root.offsetHeight==t.props.lastHeight||(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight,t.props.scrollbarWidth=c.getScrollBarWidth(),t.body.emitter.emit("_change")))},c.addEventListener(window,"resize",this._onResize),t.dom.root&&(t.props.lastWidth=t.dom.root.offsetWidth,t.props.lastHeight=t.dom.root.offsetHeight),this.watchTimer=setInterval(this._onResize,1e3)},n.prototype._stopAutoResize=function(){this.watchTimer&&(clearInterval(this.watchTimer),this.watchTimer=void 0),this._onResize&&(c.removeEventListener(window,"resize",this._onResize),this._onResize=null)},n.prototype._onTouch=function(t){this.touch.allowDragging=!0,this.touch.initialScrollTop=this.props.scrollTop},n.prototype._onPinch=function(t){this.touch.allowDragging=!1},n.prototype._onDrag=function(t){if(t&&this.touch.allowDragging){var e=t.deltaY,i=this._getScrollTop(),o=this._setScrollTop(this.touch.initialScrollTop+e);this.options.verticalScroll&&(this.dom.left.parentNode.scrollTop=-this.props.scrollTop,this.dom.right.parentNode.scrollTop=-this.props.scrollTop),o!=i&&this.emit("verticalDrag")}},n.prototype._setScrollTop=function(t){return this.props.scrollTop=t,this._updateScrollTop(),this.props.scrollTop},n.prototype._updateScrollTop=function(){var t=Math.min(this.props.centerContainer.height-this.props.center.height,0);return t!=this.props.scrollTopMin&&("top"!=this.options.orientation.item&&(this.props.scrollTop+=t-this.props.scrollTopMin),this.props.scrollTopMin=t),this.props.scrollTop>0&&(this.props.scrollTop=0),this.props.scrollTop0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){31104e9>t&&(this.scale="year",this.step=1e3),15552e9>t&&(this.scale="year",this.step=500),31104e8>t&&(this.scale="year",this.step=100),15552e8>t&&(this.scale="year",this.step=50),31104e7>t&&(this.scale="year",this.step=10),15552e7>t&&(this.scale="year",this.step=5),31104e6>t&&(this.scale="year",this.step=1),7776e6>t&&(this.scale="month",this.step=3),2592e6>t&&(this.scale="month",this.step=1),432e6>t&&(this.scale="day",this.step=5),1728e5>t&&(this.scale="day",this.step=2),864e5>t&&(this.scale="day",this.step=1),432e5>t&&(this.scale="weekday",this.step=1),144e5>t&&(this.scale="hour",this.step=4),36e5>t&&(this.scale="hour",this.step=1),9e5>t&&(this.scale="minute",this.step=15),6e5>t&&(this.scale="minute",this.step=10),3e5>t&&(this.scale="minute",this.step=5),6e4>t&&(this.scale="minute",this.step=1),15e3>t&&(this.scale="second",this.step=15),1e4>t&&(this.scale="second",this.step=10),5e3>t&&(this.scale="second",this.step=5),1e3>t&&(this.scale="second",this.step=1),200>t&&(this.scale="millisecond",this.step=200),100>t&&(this.scale="millisecond",this.step=100),50>t&&(this.scale="millisecond",this.step=50),10>t&&(this.scale="millisecond",this.step=10),5>t&&(this.scale="millisecond",this.step=5),1>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("week"==e)o.weekday()>2?(o.weekday(0),o.add(1,"week")):o.weekday(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"week":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"week":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":case"week":return 1==t.date();case"month":return 0==t.month();case"year":default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];switch(this.scale){case"week":if(this.isMajor()&&0!==t.weekday())return"";default:return e&&e.length>0?this.moment(t).format(e):""}},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),t instanceof Date&&(t=this.moment(t)),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/a%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(n().add(1,"day"),"day")?" vis-tomorrow":t.isSame(n().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}var n=this.moment,s=this.moment(this.current),r=s.locale?s.locale("en"):s.lang("en"),a=this.step,h=[];switch(this.scale){case"millisecond":h.push(e(r)),h.push(t(r.milliseconds()));break;case"second":h.push(e(r)),h.push(t(r.seconds()));break;case"minute":h.push(e(r)),h.push(t(r.minutes()));break;case"hour":h.push("vis-h"+r.hours()+(4==this.step?"-h"+(r.hours()+4):"")),h.push(e(r)),h.push(t(r.hours()));break;case"weekday":h.push("vis-"+r.format("dddd").toLowerCase()),h.push(e(r)),h.push(i(r)),h.push(t(r.date()));break;case"day":h.push("vis-day"+r.date()),h.push("vis-"+r.format("MMMM").toLowerCase()),h.push(e(r)),h.push(o(r)),h.push(this.step<=2?e(r):""),h.push(this.step<=2?"vis-"+r.format("dddd").toLowerCase():""), +h.push(t(r.date()-1));break;case"week":h.push("vis-week"+r.format("w")),h.push(i(r)),h.push(t(r.week()));break;case"month":h.push("vis-"+r.format("MMMM").toLowerCase()),h.push(o(r)),h.push(t(r.month()));break;case"year":h.push("vis-year"+r.year()),h.push(function(t){return t.isSame(new Date,"year")?" vis-current-year":""}(r)),h.push(t(r.year()))}return h.filter(String).join(" ")},t.exports=o},function(t,e,i){function o(t,e){this.body=t,this.defaultOptions={rtl:!1,showCurrentTime:!0,moment:r,locales:a,locale:"en"},this.options=n.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var n=i(2),s=i(16),r=i(9),a=i(98);o.prototype=new s,o.prototype._create=function(){var t=document.createElement("div");t.className="vis-current-time",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},o.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},o.prototype.setOptions=function(t){t&&n.selectiveExtend(["rtl","showCurrentTime","moment","locale","locales"],this.options,t)},o.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=this.options.moment((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),o=this.options.locales[this.options.locale];o||(this.warned||(console.log("WARNING: options.locales['"+this.options.locale+"'] not found. See http://visjs.org/docs/timeline/#Localization"),this.warned=!0),o=this.options.locales.en);var n=o.current+" "+o.time+": "+e.format("dddd, MMMM Do YYYY, H:mm:ss");n=n.charAt(0).toUpperCase()+n.substring(1),this.options.rtl?this.bar.style.right=i+"px":this.bar.style.left=i+"px",this.bar.title=n}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},o.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,o=1/i/10;o<30&&(o=30),o>1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e,i){function o(t,e,i){if(this.groupId=t,this.subgroups={},this.subgroupStack={},this.subgroupStackAll=!1,this.doInnerStack=!1,this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,this.stackDirty=!0,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),e&&e.subgroupStack)if("boolean"==typeof e.subgroupStack)this.doInnerStack=e.subgroupStack,this.subgroupStackAll=e.subgroupStack;else for(var o in e.subgroupStack)this.subgroupStack[o]=e.subgroupStack[o],this.doInnerStack=this.doInnerStack||e.subgroupStack[o];this.nestedInGroup=null,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.itemsInRange=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var n=this;this.itemSet.body.emitter.on("checkRangedItems",function(){n.checkRangedItems=!0}),this._create(),this.setData(e)}var n=i(8),s=function(t){return t&&t.__esModule?t:{default:t}}(n),r=i(2),a=i(100);o.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.style.position="absolute",this.dom.marker.innerHTML="",this.dom.background.appendChild(this.dom.marker)},o.prototype.setData=function(t){var e,i;if(this.itemSet.options&&this.itemSet.options.groupTemplate?(i=this.itemSet.options.groupTemplate.bind(this),e=i(t,this.dom.inner)):e=t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):this.dom.inner.innerHTML=void 0!==e&&null!==e?e:this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?r.removeClassName(this.dom.inner,"vis-hidden"):r.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups){this.nestedGroups&&this.nestedGroups==t.nestedGroups||(this.nestedGroups=t.nestedGroups),void 0===t.showNested&&void 0!==this.showNested||(0==t.showNested?this.showNested=!1:this.showNested=!0),r.addClassName(this.dom.label,"vis-nesting-group");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";this.showNested?(r.removeClassName(this.dom.label,o),r.addClassName(this.dom.label,"expanded")):(r.removeClassName(this.dom.label,"expanded"),r.addClassName(this.dom.label,o))}else this.nestedGroups&&(this.nestedGroups=null,o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed",r.removeClassName(this.dom.label,o),r.removeClassName(this.dom.label,"expanded"),r.removeClassName(this.dom.label,"vis-nesting-group"));t&&t.nestedInGroup&&(r.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(r.removeClassName(this.dom.label,this.className),r.removeClassName(this.dom.foreground,this.className),r.removeClassName(this.dom.background,this.className),r.removeClassName(this.dom.axis,this.className)),r.addClassName(this.dom.label,n),r.addClassName(this.dom.foreground,n),r.addClassName(this.dom.background,n),r.addClassName(this.dom.axis,n),this.className=n),this.style&&(r.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(r.addCssText(this.dom.label,t.style),this.style=t.style)},o.prototype.getLabelWidth=function(){return this.props.label.width},o.prototype._didMarkerHeightChange=function(){var t=this.dom.marker.clientHeight;if(t!=this.lastMarkerHeight){this.lastMarkerHeight=t;var e={},i=0;r.forEach(this.items,function(t,o){if(t.dirty=!0,t.displayed){e[o]=t.redraw(!0),i=e[o].length}});if(i>0)for(var o=0;o0)for(var u=0;u0){var e=this;this.resetSubgroups(),r.forEach(this.visibleItems,function(i){void 0!==i.data.subgroup&&(e.subgroups[i.data.subgroup].height=Math.max(e.subgroups[i.data.subgroup].height,i.height+t.item.vertical),e.subgroups[i.data.subgroup].visible=!0)})}},o.prototype._isGroupVisible=function(t,e){return this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop},o.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(r.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,r.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},o.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},o.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},o.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),this.stackDirty=!0,void 0!==t.data.subgroup&&(this._addToSubgroup(t),this.orderSubgroups()),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},o.prototype._addToSubgroup=function(t,e){e=e||t.data.subgroup,void 0!=e&&void 0===this.subgroups[e]&&(this.subgroups[e]={height:0,top:0,start:t.data.start,end:t.data.end||t.data.start,visible:!1,index:this.subgroupIndex,items:[],stack:this.subgroupStackAll||this.subgroupStack[e]||!1},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[e].end)&&(this.subgroups[e].end=i),this.subgroups[e].items.push(t)},o.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.end||t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.start,n=i-1;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(n)&&(n=e)}),t.subgroups[e].start=o,t.subgroups[e].end=new Date(n-1)}},o.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t,e=[];if("string"==typeof this.subgroupOrderer){for(t in this.subgroups)e.push({subgroup:t,sortField:this.subgroups[t].items[0].data[this.subgroupOrderer]});e.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(t in this.subgroups)e.push(this.subgroups[t].items[0].data);e.sort(this.subgroupOrderer)}if(e.length>0)for(var i=0;i=0&&(i.items.splice(o,1),i.items.length?this._updateSubgroupsSizes():delete this.subgroups[e])}}},o.prototype.removeFromDataSet=function(t){this.itemSet.removeItem(t.id)},o.prototype.order=function(){for(var t=r.toArray(this.items),e=[],i=[],o=0;o0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}var p={},f=0;for(l=0;l0)for(var v=0;v=0&&(r=e[s],!n(r));s--)void 0===o[r.id]&&(o[r.id]=!0,i.push(r));for(s=t+1;st.start},o.prototype._createDomElement=function(){this.dom||(this.dom={},this.dom.box=document.createElement("div"),this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-item-overflow",this.dom.box.appendChild(this.dom.frame),this.dom.visibleFrame=document.createElement("div"),this.dom.visibleFrame.className="vis-item-visible-frame",this.dom.box.appendChild(this.dom.visibleFrame),this.dom.content=document.createElement("div"),this.dom.content.className="vis-item-content",this.dom.frame.appendChild(this.dom.content),this.dom.box["timeline-item"]=this,this.dirty=!0)},o.prototype._appendDomElement=function(){if(!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!this.dom.box.parentNode){var t=this.parent.dom.foreground;if(!t)throw new Error("Cannot redraw item: parent has no foreground container element");t.appendChild(this.dom.box)}this.displayed=!0},o.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var t=this.editable.updateTime||this.editable.updateGroup,e=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(t?" vis-editable":" vis-readonly");this.dom.box.className=this.baseClassName+e,this.dom.content.style.maxWidth="none"}},o.prototype._getDomComponentsSizes=function(){return this.overflow="hidden"!==window.getComputedStyle(this.dom.frame).overflow,{content:{width:this.dom.content.offsetWidth},box:{height:this.dom.box.offsetHeight}}},o.prototype._updateDomComponentsSizes=function(t){this.props.content.width=t.content.width,this.height=t.box.height,this.dom.content.style.maxWidth="",this.dirty=!1},o.prototype._repaintDomAdditionals=function(){this._repaintOnItemUpdateTimeTooltip(this.dom.box),this._repaintDeleteButton(this.dom.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.redraw=function(t){var e,i=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){this.dirty&&(e=this._getDomComponentsSizes.bind(this)())}.bind(this),function(){this.dirty&&this._updateDomComponentsSizes.bind(this)(e)}.bind(this),this._repaintDomAdditionals.bind(this)];if(t)return i;var o;return i.forEach(function(t){o=t()}),o},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end),r=void 0===this.data.align?this.options.align:this.data.align;!1===this.data.limitSize||void 0!==t&&!0!==t||(n<-o&&(n=-o),s>2*o&&(s=2*o));var a=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=a+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=a,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=a+"px",r){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(a-i,0)+"px":this.dom.content.style.left=Math.max(a-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((a-i)/2,0)+"px":this.dom.content.style.left=Math.max((a-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else this.selected||this.options.itemsAlwaysDraggable.range||!this.dom.dragLeft||(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if((this.selected||this.options.itemsAlwaysDraggable.range)&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else this.selected||this.options.itemsAlwaysDraggable.range||!this.dom.dragRight||(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(6),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(2),p=i(179).default,f=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},c.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new p(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===(void 0===t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),!1===this.options.filter&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,!0===this.options.enabled&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):!0!==e&&-1===e.indexOf(n)||(o=!0),!1!==o&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);if(!0===this.options.showButton){var s=document.createElement("div");s.className="vis-configuration vis-config-button",s.innerHTML="generate options",s.onclick=function(){t._printOptions()},s.onmouseover=function(){s.className="vis-configuration vis-config-button hover"},s.onmouseout=function(){s.className="vis-configuration vis-config-button"},this.optionsContainer=document.createElement("div"),this.optionsContainer.className="vis-configuration vis-config-option-container",this.domElements.push(this.optionsContainer),this.domElements.push(s)}this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?i-1:0),n=1;n2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,o.innerHTML=!0===i?""+t+":":t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&-1!==t.indexOf(e)&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(1.2*e),d=a.max,h="range increased"),a.value=e}else a.value=o;var l=document.createElement("input");l.className="vis-configuration vis-config-rangeinput",l.value=a.value;var u=this;a.onchange=function(){l.value=this.value,u._update(Number(this.value),i)},a.oninput=function(){l.value=this.value};var c=this._makeLabel(i[i.length-1],i),p=this._makeItem(i,c,a,l);""!==h&&this.popupHistory[p]!==d&&(this.popupHistory[p]=d,this._setupPopup(h,p))}},{key:"_setupPopup",value:function(t,e){var i=this;if(!0===this.initialized&&!0===this.allowCreation&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=c.copyAndExtendArray(e,r);if("function"==typeof n&&!1===(o=n(r,e))&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=!1===i),!1!==o){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(-1!==e.indexOf("physics")&&this.moduleOptions.physics.solver!==r&&(l=!1),!0===l)if(void 0!==a.enabled){var u=c.copyAndExtendArray(h,"enabled"),p=this._getValue(u);if(!0===p){var f=this._makeLabel(r,h,!0);this._makeItem(h,f),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,p,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;ethis.imageObj.height?i=this.imageObj.width/this.imageObj.height:o=this.imageObj.height/this.imageObj.width),t=2*this.options.size*i,e=2*this.options.size*o}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.radius=.5*this.width}},{key:"_drawRawCircle",value:function(t,e,i,o){this.initContextForDraw(t,o),t.circle(e,i,o.size),this.performFill(t,o)}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=1;!0===this.options.shapeProperties.interpolation&&(i=this.imageObj.width/this.width/this.body.view.scale),this.imageObj.drawImageAtPosition(t,i,this.left,this.top,this.width,this.height),this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(6),a=o(r),h=i(29),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(117).default,v=i(48).default,g=i(215).default,y=i(217).default,b=i(218).default,_=i(219).default,w=function(){function t(e,i,o,n){if((0,u.default)(this,t),void 0===i)throw new Error("No body provided");this.options=f.bridgeObject(o),this.globalOptions=o,this.defaultOptions=n,this.body=i,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.selected=!1,this.hover=!1,this.labelDirty=!0,this.baseWidth=this.options.width,this.baseFontSize=this.options.font.size,this.from=void 0,this.to=void 0,this.edgeType=void 0,this.connected=!1,this.labelModule=new m(this.body,this.options,!0),this.setOptions(e)}return(0,p.default)(t,[{key:"setOptions",value:function(e){if(e){t.parseOptions(this.options,e,!0,this.globalOptions),void 0!==e.id&&(this.id=e.id),void 0!==e.from&&(this.fromId=e.from),void 0!==e.to&&(this.toId=e.to),void 0!==e.title&&(this.title=e.title),void 0!==e.value&&(e.value=parseFloat(e.value));var i=[e,this.options,this.defaultOptions];this.chooser=v.choosify("edge",i),this.updateLabelModule(e);var o=this.updateEdgeType();return this._setInteractionWidths(),this.connect(),void 0===e.hidden&&void 0===e.physics||(o=!0),o}}},{key:"getFormattingValues",value:function(){var t=!0===this.options.arrows.to||!0===this.options.arrows.to.enabled,e=!0===this.options.arrows.from||!0===this.options.arrows.from.enabled,i=!0===this.options.arrows.middle||!0===this.options.arrows.middle.enabled,o=this.options.color.inherit,n={toArrow:t,toArrowScale:this.options.arrows.to.scaleFactor,toArrowType:this.options.arrows.to.type,middleArrow:i,middleArrowScale:this.options.arrows.middle.scaleFactor,middleArrowType:this.options.arrows.middle.type,fromArrow:e,fromArrowScale:this.options.arrows.from.scaleFactor,fromArrowType:this.options.arrows.from.type,arrowStrikethrough:this.options.arrowStrikethrough,color:o?void 0:this.options.color.color,inheritsColor:o,opacity:this.options.color.opacity,hidden:this.options.hidden,length:this.options.length,shadow:this.options.shadow.enabled,shadowColor:this.options.shadow.color,shadowSize:this.options.shadow.size,shadowX:this.options.shadow.x,shadowY:this.options.shadow.y,dashes:this.options.dashes,width:this.options.width};if(this.selected||this.hover)if(!0===this.chooser){if(this.selected){var s=this.options.selectionWidth;"function"==typeof s?n.width=s(n.width):"number"==typeof s&&(n.width+=s),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.highlight,n.shadow=this.options.shadow.enabled}else if(this.hover){var r=this.options.hoverWidth;"function"==typeof r?n.width=r(n.width):"number"==typeof r&&(n.width+=r),n.width=Math.max(n.width,.3/this.body.view.scale),n.color=this.options.color.hover,n.shadow=this.options.shadow.enabled}}else"function"==typeof this.chooser&&(this.chooser(n,this.options.id,this.selected,this.hover),void 0!==n.color&&(n.inheritsColor=!1),!1===n.shadow&&(n.shadowColor===this.options.shadow.color&&n.shadowSize===this.options.shadow.size&&n.shadowX===this.options.shadow.x&&n.shadowY===this.options.shadow.y||(n.shadow=!0)));else n.shadow=this.options.shadow.enabled,n.width=Math.max(n.width,.3/this.body.view.scale);return n}},{key:"updateLabelModule",value:function(t){var e=[t,this.options,this.globalOptions,this.defaultOptions];this.labelModule.update(this.options,e),void 0!==this.labelModule.baseSize&&(this.baseFontSize=this.labelModule.baseSize)}},{key:"updateEdgeType",value:function(){var t=this.options.smooth,e=!1,i=!0;return void 0!==this.edgeType&&((this.edgeType instanceof y&&!0===t.enabled&&"dynamic"===t.type||this.edgeType instanceof g&&!0===t.enabled&&"cubicBezier"===t.type||this.edgeType instanceof b&&!0===t.enabled&&"dynamic"!==t.type&&"cubicBezier"!==t.type||this.edgeType instanceof _&&!1===t.type.enabled)&&(i=!1),!0===i&&(e=this.cleanup())),!0===i?!0===t.enabled?"dynamic"===t.type?(e=!0,this.edgeType=new y(this.options,this.body,this.labelModule)):"cubicBezier"===t.type?this.edgeType=new g(this.options,this.body,this.labelModule):this.edgeType=new b(this.options,this.body,this.labelModule):this.edgeType=new _(this.options,this.body,this.labelModule):this.edgeType.setOptions(this.options),e}},{key:"connect",value:function(){this.disconnect(),this.from=this.body.nodes[this.fromId]||void 0,this.to=this.body.nodes[this.toId]||void 0,this.connected=void 0!==this.from&&void 0!==this.to,!0===this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)),this.edgeType.connect()}},{key:"disconnect",value:function(){this.from&&(this.from.detachEdge(this),this.from=void 0),this.to&&(this.to.detachEdge(this),this.to=void 0),this.connected=!1}},{key:"getTitle",value:function(){return this.title}},{key:"isSelected",value:function(){return this.selected}},{key:"getValue",value:function(){return this.options.value}},{key:"setValueRange",value:function(t,e,i){if(void 0!==this.options.value){var o=this.options.scaling.customScalingFunction(t,e,i,this.options.value),n=this.options.scaling.max-this.options.scaling.min;if(!0===this.options.scaling.label.enabled){var s=this.options.scaling.label.max-this.options.scaling.label.min;this.options.font.size=this.options.scaling.label.min+o*s}this.options.width=this.options.scaling.min+o*n}else this.options.width=this.baseWidth,this.options.font.size=this.baseFontSize;this._setInteractionWidths(),this.updateLabelModule()}},{key:"_setInteractionWidths",value:function(){"function"==typeof this.options.hoverWidth?this.edgeType.hoverWidth=this.options.hoverWidth(this.options.width):this.edgeType.hoverWidth=this.options.hoverWidth+this.options.width,"function"==typeof this.options.selectionWidth?this.edgeType.selectionWidth=this.options.selectionWidth(this.options.width):this.edgeType.selectionWidth=this.options.selectionWidth+this.options.width}},{key:"draw",value:function(t){var e=this.getFormattingValues();if(!e.hidden){var i=this.edgeType.getViaNode(),o={};this.edgeType.fromPoint=this.edgeType.from,this.edgeType.toPoint=this.edgeType.to,e.fromArrow&&(o.from=this.edgeType.getArrowData(t,"from",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.fromPoint=o.from.core)),e.toArrow&&(o.to=this.edgeType.getArrowData(t,"to",i,this.selected,this.hover,e),!1===e.arrowStrikethrough&&(this.edgeType.toPoint=o.to.core)),e.middleArrow&&(o.middle=this.edgeType.getArrowData(t,"middle",i,this.selected,this.hover,e)),this.edgeType.drawLine(t,e,this.selected,this.hover,i),this.drawArrows(t,o,e),this.drawLabel(t,i)}}},{key:"drawArrows",value:function(t,e,i){i.fromArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.from),i.middleArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.middle),i.toArrow&&this.edgeType.drawArrowHead(t,i,this.selected,this.hover,e.to)}},{key:"drawLabel",value:function(t,e){if(void 0!==this.options.label){var i=this.from,o=this.to;if(this.labelModule.differentState(this.selected,this.hover)&&this.labelModule.getTextSize(t,this.selected,this.hover),i.id!=o.id){this.labelModule.pointToSelf=!1;var n=this.edgeType.getPoint(.5,e);t.save();var s=this._getRotation(t);0!=s.angle&&(t.translate(s.x,s.y),t.rotate(s.angle)),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover),t.restore()}else{this.labelModule.pointToSelf=!0;var r,a,h=this.options.selfReferenceSize;i.shape.width>i.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),n=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,n.x,n.y,this.selected,this.hover)}}}},{key:"getItemsOnPoint",value:function(t){var e=[];if(this.labelModule.visible()){var i=this._getRotation();v.pointInRect(this.labelModule.getSize(),t,i)&&e.push({edgeId:this.id,labelId:0})}var o={left:t.x,top:t.y};return this.isOverlappingWith(o)&&e.push({edgeId:this.id}),e}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=this.from.x,i=this.from.y,o=this.to.x,n=this.to.y,s=t.left,r=t.top;return this.edgeType.getDistanceToEdge(e,i,o,n,s,r)<10}return!1}},{key:"_getRotation",value:function(t){var e=this.edgeType.getViaNode(),i=this.edgeType.getPoint(.5,e);void 0!==t&&this.labelModule.calculateLabelSize(t,this.selected,this.hover,i.x,i.y);var o={x:i.x,y:this.labelModule.size.yLine,angle:0};if(!this.labelModule.visible())return o;if("horizontal"===this.options.font.align)return o;var n=this.from.y-this.to.y,s=this.from.x-this.to.x,r=Math.atan2(n,s);return(r<-1&&s<0||r>0&&s<0)&&(r+=Math.PI),o.angle=r,o}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}},{key:"remove",value:function(){this.cleanup(),this.disconnect(),delete this.body.edges[this.id]}},{key:"endPointsValid",value:function(){return void 0!==this.body.nodes[this.fromId]&&void 0!==this.body.nodes[this.toId]}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=["arrowStrikethrough","id","from","hidden","hoverWidth","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width","font","chosen","widthConstraint"];if(f.selectiveDeepExtend(r,t,e,i),v.isValidLabel(e.label)?t.label=e.label:t.label=void 0,f.mergeOptions(t,e,"smooth",o),f.mergeOptions(t,e,"shadow",o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:!0===i&&null===e.dashes&&(t.dashes=(0,d.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),f.mergeOptions(t.scaling,e.scaling,"label",o.scaling)):!0===i&&null===e.scaling&&(t.scaling=(0,d.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var h=e.arrows.toLowerCase();t.arrows.to.enabled=-1!=h.indexOf("to"),t.arrows.middle.enabled=-1!=h.indexOf("middle"),t.arrows.from.enabled=-1!=h.indexOf("from")}else{if("object"!==(0,a.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));f.mergeOptions(t.arrows,e.arrows,"to",o.arrows),f.mergeOptions(t.arrows,e.arrows,"middle",o.arrows),f.mergeOptions(t.arrows,e.arrows,"from",o.arrows)}else!0===i&&null===e.arrows&&(t.arrows=(0,d.default)(o.arrows));if(void 0!==e.color&&null!==e.color){var l=e.color,u=t.color;if(n)f.deepExtend(u,o.color,!1,i);else for(var c in u)u.hasOwnProperty(c)&&delete u[c];if(f.isString(u))u.color=u,u.highlight=u,u.hover=u,u.inherit=!1,void 0===l.opacity&&(u.opacity=1);else{var p=!1;void 0!==l.color&&(u.color=l.color,p=!0),void 0!==l.highlight&&(u.highlight=l.highlight,p=!0),void 0!==l.hover&&(u.hover=l.hover,p=!0),void 0!==l.inherit&&(u.inherit=l.inherit),void 0!==l.opacity&&(u.opacity=Math.min(1,Math.max(0,l.opacity))),!0===p?u.inherit=!1:void 0===u.inherit&&(u.inherit="from")}}else!0===i&&null===e.color&&(t.color=f.bridgeObject(o.color));!0===i&&null===e.font&&(t.font=f.bridgeObject(o.font))}}]),t}();e.default=w},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(118),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_findBorderPositionBezier",value:function(t,e){var i,o,n,s,r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),h=0,d=0,l=1,u=this.to,c=!1;for(t.id===this.from.id&&(u=this.from,c=!0);d<=l&&h<10;){var p=.5*(d+l);if(i=this.getPoint(p,a),o=Math.atan2(u.y-i.y,u.x-i.x),n=u.distanceToBorder(e,o),s=Math.sqrt(Math.pow(i.x-u.x,2)+Math.pow(i.y-u.y,2)),r=n-s,Math.abs(r)<.2)break;r<0?!1===c?d=p:l=p:!1===c?l=p:d=p,h++}return i.t=p,i}},{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r){var a=1e9,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=t,f=e;for(d=1;d<10;d++)l=.1*d,u=Math.pow(1-l,2)*t+2*l*(1-l)*r.x+Math.pow(l,2)*i,c=Math.pow(1-l,2)*e+2*l*(1-l)*r.y+Math.pow(l,2)*o,d>0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=h1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),nh;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(22),n=i(41),s=i(56)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(50),n=i(13)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){var o=i(17),n=i(7),s=i(28);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){var o=i(84),n=i(58).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(42),n=i(39),s=i(25),r=i(53),a=i(22),h=i(81),d=Object.getOwnPropertyDescriptor;e.f=i(21)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e,i){t.exports={default:i(162),__esModule:!0}},function(t,e,i){function o(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=o},function(t,e,i){function o(t,e){if(void 0===t)throw new Error("No container element defined");if(this.container=t,this.visible=!e||void 0==e.visible||e.visible,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var n=i(2);o.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10;return t/(this.values.length-1)*e+3},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e,i){function o(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}o.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.prototype.setRange=function(t,e,i,o){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(i))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t||0,this._end=e||0,this.setStep(i,o)},o.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),!0===this.prettyStep?this._step=o.calculatePrettyStep(t):this._step=t)},o.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),s<=0&&(s=1),s},o.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},o.prototype.getStep=function(){return this._step},o.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=o},function(t,e,i){function o(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function n(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function s(t,e){return void 0===t||""===t?e:t+n(e)}function r(t,e,i,o){for(var n,r,a=0;ar&&(t=o(t)*r),i(e)>r&&(e=o(e)*r),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},o.prototype.getOffset=function(){return this.cameraOffset},o.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},o.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},o.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},o.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())}, +o.prototype.getArmLength=function(){return this.armLength},o.prototype.getCameraLocation=function(){return this.cameraLocation},o.prototype.getCameraRotation=function(){return this.cameraRotation},o.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=this.cameraRotation.z,i=this.cameraOffset.x,o=this.cameraOffset.y,n=Math.sin,s=Math.cos;this.cameraLocation.x=this.cameraLocation.x+i*s(e)+o*-n(e)*s(t),this.cameraLocation.y=this.cameraLocation.y+i*n(e)+o*s(e)*s(t),this.cameraLocation.z=this.cameraLocation.z+o*n(t)},t.exports=o},function(t,e,i){function o(t,e,i){this.dataGroup=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=t.getDistinctValues(this.column),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(12);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.dataGroup.getDataSet(),{filter:function(t){return t[i.column]==i.value}}).get();e=this.dataGroup._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0){var n=i.groupsData.getDataSet();n.get().forEach(function(t){if(t.nestedGroups){0!=t.showNested&&(t.showNested=!0);var e=[];t.nestedGroups.forEach(function(i){var o=n.get(i);o&&(o.nestedInGroup=t.id,0==t.showNested&&(o.visible=!1),e=e.concat(o))}),n.update(e,o)}})}},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.popup=null,this.touchParams={},this.groupTouchParams={},this._create(),this.setOptions(e)}var s=i(29),r=o(s),a=i(6),h=o(a),d=i(10),l=i(2),u=i(11),c=i(12),p=i(66),f=i(16),m=i(68),v=i(69),g=i(101),y=i(102),b=i(70),_=i(103),w=i(104).default,x="__ungrouped__",k="__background__";n.prototype=new f,n.types={background:_,box:g,range:b,point:y},n.prototype._create=function(){var t=document.createElement("div");t.className="vis-itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="vis-background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="vis-foreground",t.appendChild(i),this.dom.foreground=i;var o=document.createElement("div");o.className="vis-axis",this.dom.axis=o;var n=document.createElement("div");n.className="vis-labelset",this.dom.labelSet=n,this._updateUngrouped();var s=new v(k,null,this);s.show(),this.groups[k]=s,this.hammer=new d(this.body.dom.centerContainer),this.hammer.on("hammer.input",function(t){t.isFirst&&this._onTouch(t)}.bind(this)),this.hammer.on("panstart",this._onDragStart.bind(this)),this.hammer.on("panmove",this._onDrag.bind(this)),this.hammer.on("panend",this._onDragEnd.bind(this)),this.hammer.get("pan").set({threshold:5,direction:d.DIRECTION_HORIZONTAL}),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("press",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.options.rtl?this.groupHammer=new d(this.body.dom.rightContainer):this.groupHammer=new d(this.body.dom.leftContainer),this.groupHammer.on("tap",this._onGroupClick.bind(this)),this.groupHammer.on("panstart",this._onGroupDragStart.bind(this)),this.groupHammer.on("panmove",this._onGroupDrag.bind(this)),this.groupHammer.on("panend",this._onGroupDragEnd.bind(this)),this.groupHammer.get("pan").set({threshold:5,direction:d.DIRECTION_VERTICAL}),this.body.dom.centerContainer.addEventListener("mouseover",this._onMouseOver.bind(this)),this.body.dom.centerContainer.addEventListener("mouseout",this._onMouseOut.bind(this)),this.body.dom.centerContainer.addEventListener("mousemove",this._onMouseMove.bind(this)),this.body.dom.centerContainer.addEventListener("contextmenu",this._onDragEnd.bind(this)),this.body.dom.centerContainer.addEventListener("mousewheel",this._onMouseWheel.bind(this)),this.show()},n.prototype.setOptions=function(t){if(t){var e=["type","rtl","align","order","stack","stackSubgroups","selectable","multiselect","multiselectPerGroup","groupOrder","dataAttributes","template","groupTemplate","visibleFrameTemplate","hide","snap","groupOrderSwap","showTooltips","tooltip","tooltipOnItemUpdateTime"];l.selectiveExtend(e,this.options,t),"itemsAlwaysDraggable"in t&&("boolean"==typeof t.itemsAlwaysDraggable?(this.options.itemsAlwaysDraggable.item=t.itemsAlwaysDraggable,this.options.itemsAlwaysDraggable.range=!1):"object"===(0,h.default)(t.itemsAlwaysDraggable)&&(l.selectiveExtend(["item","range"],this.options.itemsAlwaysDraggable,t.itemsAlwaysDraggable),this.options.itemsAlwaysDraggable.item||(this.options.itemsAlwaysDraggable.range=!1))),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.item="top"===t.orientation?"top":"bottom":"object"===(0,h.default)(t.orientation)&&"item"in t.orientation&&(this.options.orientation.item=t.orientation.item)),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"===(0,h.default)(t.margin)&&(l.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"===(0,h.default)(t.margin.item)&&l.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable,this.options.editable.overrideItems=!1):"object"===(0,h.default)(t.editable)&&l.selectiveExtend(["updateTime","updateGroup","add","remove","overrideItems"],this.options.editable,t.editable)),"groupEditable"in t&&("boolean"==typeof t.groupEditable?(this.options.groupEditable.order=t.groupEditable,this.options.groupEditable.add=t.groupEditable,this.options.groupEditable.remove=t.groupEditable):"object"===(0,h.default)(t.groupEditable)&&l.selectiveExtend(["order","add","remove"],this.options.groupEditable,t.groupEditable));["onDropObjectOnItem","onAdd","onUpdate","onRemove","onMove","onMoving","onAddGroup","onMoveGroup","onRemoveGroup"].forEach(function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this)),this.markDirty()}},n.prototype.markDirty=function(t){this.groupIds=[],t&&t.refreshItems&&l.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()})},n.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},n.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},n.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||(this.options.rtl?this.body.dom.right.appendChild(this.dom.labelSet):this.body.dom.left.appendChild(this.dom.labelSet))},n.prototype.setSelection=function(t){var e,i,o,n;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;et&&o.push(h.id):h.lefte&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;i0){for(var w={},x=0;x<_;x++)l.forEach(b,function(t,e){w[e]=t[x]()});l.forEach(this.groups,function(t,e){if(e!==k){var i=w[e];s=i||s,g+=t.height}}),g=Math.max(g,y)}return g=Math.max(g,y),r.style.height=i(g),this.props.width=r.offsetWidth,this.props.height=g,this.dom.axis.style.top=i("top"==n?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.options.rtl?this.dom.axis.style.right="0":this.dom.axis.style.left="0",this.initialItemSetDrawn=!0,s=this._isResized()||s},n.prototype._firstGroup=function(){var t="top"==this.options.orientation.item?0:this.groupIds.length-1,e=this.groupIds[t];return this.groups[e]||this.groups[x]||null},n.prototype._updateUngrouped=function(){var t,e,i=this.groups[x];if(this.groupsData){if(i){i.hide(),delete this.groups[x];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)||t.hide()}}}else if(!i){i=new m(null,null,this),this.groups[x]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},n.prototype.getLabelSet=function(){return this.dom.labelSet},n.prototype.setItems=function(t){var e,i=this,o=this.itemsData;if(t){if(!(t instanceof u||t instanceof c))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(o&&(l.forEach(this.itemListeners,function(t,e){o.off(e,t)}),e=o.getIds(),this._onRemove(e)),this.itemsData){var n=this.id;l.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,n)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}this.body.emitter.emit("_change",{queue:!0})},n.prototype.getItems=function(){return this.itemsData},n.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(l.forEach(this.groupListeners,function(t,e){i.groupsData.off(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof u||t instanceof c))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var o=this.groupsData;this.groupsData instanceof c&&(o=this.groupsData.getDataSet()),o.get().forEach(function(t){t.nestedGroups&&t.nestedGroups.forEach(function(e){var i=o.get(e);i.nestedInGroup=t.id,0==t.showNested&&(i.visible=!1),o.update(i)})});var n=this.id;l.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,n)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("_change",{queue:!0})},n.prototype.getGroups=function(){return this.groupsData},n.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},n.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},n.prototype._getGroupId=function(t){return"background"==this._getType(t)&&void 0==t.group?k:this.groupsData?t.group:x},n.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i,o=e.itemsData.get(t,e.itemOptions),s=e.items[t],r=o?e._getType(o):null,a=n.types[r];if(s&&(a&&s instanceof a?e._updateItem(s,o):(i=s.selected,e._removeItem(s),s=null)),!s&&o){if(!a)throw"rangeoverflow"==r?new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: .vis-item.vis-range .vis-item-content {overflow: visible;}'):new TypeError('Unknown item type "'+r+'"');s=new a(o,e.conversion,e.options),s.id=t,e._addItem(s),i&&(this.selection.push(t),s.select())}}.bind(this)),this._order(),this.body.emitter.emit("_change",{queue:!0})},n.prototype._onAdd=n.prototype._onUpdate,n.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var o=i.items[t];o&&(e++,i._removeItem(o))}),e&&(this._order(),this.body.emitter.emit("_change",{queue:!0}))},n.prototype._order=function(){l.forEach(this.groups,function(t){t.order()})},n.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},n.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),o=e.groups[t];if(o)o.setData(i);else{if(t==x||t==k)throw new Error("Illegal group id. "+t+" is a reserved id.");var n=(0,r.default)(e.options);l.extend(n,{height:null}),o=new m(t,i,e),e.groups[t]=o;for(var s in e.items)if(e.items.hasOwnProperty(s)){var a=e.items[s];a.data.group==t&&o.add(a)}o.order(),o.show()}}),this.body.emitter.emit("_change",{queue:!0})},n.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("_change",{queue:!0})},n.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder});t=this._orderNestedGroups(t);var e=!l.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},n.prototype._orderNestedGroups=function(t){var e=[];return t.forEach(function(t){var i=this.groupsData.get(t);if(i.nestedInGroup||e.push(t),i.nestedGroups){var o=this.groupsData.get({filter:function(e){return e.nestedInGroup==t},order:this.options.groupOrder}),n=o.map(function(t){return t.id});e=e.concat(n)}},this),e},n.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i?i&&i.data&&i.data.showNested&&(t.groupShowing=!0):t.groupShowing=!1,i&&i.add(t)},n.prototype._updateItem=function(t,e){t.setData(e);var i=this._getGroupId(t.data),o=this.groups[i];o?o&&o.data&&o.data.showNested&&(t.groupShowing=!0):t.groupShowing=!1},n.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},n.prototype._constructByEndArray=function(t){for(var e=[],i=0;in)return}}if(i&&i!=this.groupTouchParams.group){var a=e.get(i.groupId),h=e.get(this.groupTouchParams.group.groupId);h&&a&&(this.options.groupOrderSwap(h,a,e),e.update(h),e.update(a));var d=e.getIds({order:this.options.groupOrder});if(!l.equalArray(d,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,f=Math.min(u.length,d.length),m=0,v=0,g=0;m=f)break;if(d[m+v]==p)v=1;else if(u[m+g]==p)g=1;else{var y=d.indexOf(u[m+g]),b=e.get(d[m+v]),_=e.get(u[m+g]);this.options.groupOrderSwap(b,_,e),e.update(b),e.update(_);var w=d[m+v];d[m+v]=u[m+g],d[y]=w,m++}}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=l.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!l.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),u=o.get(s[a]);e.options.groupOrderSwap(d,u,o),o.update(d),o.update(u);var c=n[a];n[a]=s[a],n[h]=c,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:t})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){if(e!==this.itemFromRelatedTarget(t)){var i=e.getTitle();if(this.options.showTooltips&&i){null==this.popup&&(this.popup=new w(this.body.dom.root,this.options.tooltip.overflowMethod||"flip")),this.popup.setText(i);var o=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-l.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-l.getAbsoluteTop(o)+o.offsetTop),this.popup.show()}else null!=this.popup&&this.popup.hide();this.body.emitter.emit("itemover",{item:e.id,event:t})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){e!==this.itemFromRelatedTarget(t)&&(null!=this.popup&&this.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:t}))}},n.prototype._onMouseMove=function(t){if(this.itemFromTarget(t)&&this.options.showTooltips&&this.options.tooltip.followMouse&&this.popup&&!this.popup.hidden){var e=this.body.dom.centerContainer;this.popup.setPosition(t.clientX-l.getAbsoluteLeft(e)+e.offsetLeft,t.clientY-l.getAbsoluteTop(e)+e.offsetTop),this.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onDropObjectOnItem=function(t){var e=this.itemFromTarget(t),i=JSON.parse(t.dataTransfer.getData("text"));this.options.onDropObjectOnItem(i,e)},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e,i,o=this,n=this.options.snap||null;this.options.rtl?(e=l.getAbsoluteRight(this.dom.frame),i=e-t.center.x):(e=l.getAbsoluteLeft(this.dom.frame),i=t.center.x-e);var s,r,a=this.body.util.toTime(i),h=this.body.util.getScale(),d=this.body.util.getStep();"drop"==t.type?(r=JSON.parse(t.dataTransfer.getData("text")),r.content=r.content?r.content:"new item",r.start=r.start?r.start:n?n(a,h,d):a,r.type=r.type||"box",r[this.itemsData._fieldId]=r.id||l.randomUUID(),"range"!=r.type||r.end||(s=this.body.util.toTime(i+this.props.width/5),r.end=n?n(s,h,d):s)):(r={start:n?n(a,h,d):a,content:"new item"},r[this.itemsData._fieldId]=l.randomUUID(),"range"===this.options.type&&(s=this.body.util.toTime(i+this.props.width/5),r.end=n?n(s,h,d):s));var u=this.groupFromTarget(t);u&&(r.group=u.groupId),r=this._cloneItemData(r),this.options.onAdd(r,function(e){e&&(o.itemsData.getDataSet().add(e),"drop"==t.type&&o.setSelection([e.id]))})}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){ +var i=this.options.multiselect?this.getSelection():[];if((t.srcEvent&&t.srcEvent.shiftKey||!1)&&this.options.multiselect){var o=this.itemsData.get(e.id).group,s=void 0;this.options.multiselectPerGroup&&i.length>0&&(s=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=s&&s!=o||i.push(e.id);var r=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||s==o){i=[];for(var a in this.items)if(this.items.hasOwnProperty(a)){var h=this.items[a],d=h.data.start,l=void 0!==h.data.end?h.data.end:d;!(d>=r.min&&l<=r.max)||this.options.multiselectPerGroup&&s!=this.itemsData.get(h.id).group||h instanceof _||i.push(h.id)}}}else{var u=i.indexOf(e.id);-1==u?i.push(e.id):i.splice(u,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:t})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){var e=t.center?t.center.y:t.clientY,i=this.groupIds;i.length<=0&&this.groupsData&&(i=this.groupsData.getIds({order:this.options.groupOrder}));for(var o=0;oa&&ea)return s}else if(0===o&&es&&(s=r.top+r.height)}while(a)}}o.height=s-o.top+.5*i.item.vertical},e.nostack=function(t,i,o,n){for(var s=0;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ao[h].index&&(o[r].top+=o[h].height);for(var d=t[r],l=0;le.right&&t.top-i.vertical+.001e.top:t.left-i.horizontal+.001e.left&&t.top-i.vertical+.001e.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},this.options=i,t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);n.call(this,t,e,i)}var n=i(38);o.prototype=new n(null,null,null),o.prototype.isVisible=function(t){var e=this.options.align,i=this.width*t.getMillisecondsPerPixel();return"right"==e?this.data.start.getTime()>t.start&&this.data.start.getTime()-it.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-i/2t.start&&this.data.startt.start},o.prototype._createDomElement=function(){this.dom||(this.dom={},this.dom.box=document.createElement("div"),this.dom.frame=document.createElement("div"),this.dom.frame.className="vis-item-overflow",this.dom.box.appendChild(this.dom.frame),this.dom.content=document.createElement("div"),this.dom.content.className="vis-item-content",this.dom.frame.appendChild(this.dom.content),this.dirty=!0)},o.prototype._appendDomElement=function(){if(!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!this.dom.box.parentNode){var t=this.parent.dom.background;if(!t)throw new Error("Cannot redraw item: parent has no background container element");t.appendChild(this.dom.box)}this.displayed=!0},o.prototype._updateDirtyDomComponents=function(){if(this.dirty){this._updateContents(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var t=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");this.dom.box.className=this.baseClassName+t}},o.prototype._getDomComponentsSizes=function(){return this.overflow="hidden"!==window.getComputedStyle(this.dom.content).overflow,{content:{width:this.dom.content.offsetWidth}}},o.prototype._updateDomComponentsSizes=function(t){this.props.content.width=t.content.width,this.height=0,this.dirty=!1},o.prototype._repaintDomAdditionals=function(){},o.prototype.redraw=function(t){var e,i=[this._createDomElement.bind(this),this._appendDomElement.bind(this),this._updateDirtyDomComponents.bind(this),function(){this.dirty&&(e=this._getDomComponentsSizes.bind(this)())}.bind(this),function(){this.dirty&&this._updateDomComponentsSizes.bind(this)(e)}.bind(this),this._repaintDomAdditionals.bind(this)];if(t)return i;var o;return i.forEach(function(t){o=t()}),o},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e,i=this.options.orientation.item;if(void 0!==this.data.subgroup){var o=this.data.subgroup;this.dom.box.style.height=this.parent.subgroups[o].height+"px",this.dom.box.style.top="top"==i?this.parent.top+this.parent.subgroups[o].top+"px":this.parent.top+this.parent.height-this.parent.subgroups[o].top-this.parent.subgroups[o].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.bottom="bottom"==i?"0":"",this.dom.box.style.top="top"==i?"0":""):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(e,i){(0,s.default)(this,t),this.container=e,this.overflowMethod=i||"cap",this.x=0,this.y=0,this.padding=5,this.hidden=!1,this.frame=document.createElement("div"),this.frame.className="vis-tooltip",this.container.appendChild(this.frame)}return(0,a.default)(t,[{key:"setPosition",value:function(t,e){this.x=parseInt(t),this.y=parseInt(e)}},{key:"setText",value:function(t){t instanceof Element?(this.frame.innerHTML="",this.frame.appendChild(t)):this.frame.innerHTML=t}},{key:"show",value:function(t){if(void 0===t&&(t=!0),!0===t){var e=this.frame.clientHeight,i=this.frame.clientWidth,o=this.frame.parentNode.clientHeight,n=this.frame.parentNode.clientWidth,s=0,r=0;if("flip"==this.overflowMethod){var a=!1,h=!0;this.y-en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0){var r={};for(this._getRelevantData(s,r,o,n),this._applySampling(s,r),e=0;e0)switch(t.options.style){case"line":d.hasOwnProperty(s[e])||(d[s[e]]=m.calcPath(r[s[e]],t)),m.draw(d[s[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||v.draw(r[s[e]],t,this.framework)}}}return a.cleanupElements(this.svgElements),!1},o.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break}}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,t[a].y=0==o?t[a].orginalY+r.y:t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},o.prototype._getRelevantData=function(t,e,i,o){var n,s,a,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],!0===r.stack&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(o):h=h.concat(o):i[t[s]]=n.getYRange(o,t[s]));f.getStackedYRange(a,i,t,"__barStackLeft","left"),f.getStackedYRange(h,i,t,"__barStackRight","right")}},o.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),!0===t.master&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var r=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(r=this.props.titleCharHeight);var h=!0===this.options.icons?Math.max(this.options.iconWidth,r)+this.options.labelOffsetX+15:r+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-h&&!0===this.options.visible?(this.width=this.maxLabelSize+h,this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+h),this.options.width=this.width+"px",a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(a.cleanupElements(this.DOMelements.lines),a.cleanupElements(this.DOMelements.labels),e=!1),e},o.prototype.convertValue=function(t){return this.scale.convertValue(t)},o.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},o.prototype._redrawLabel=function(t,e,i,o,n){var s=a.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>h.magnitudefactor*h.minorSteps[h.minorStepIdx]*.5?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}o.prototype.setCharHeight=function(t){this.majorCharHeight=t},o.prototype.setHeight=function(t){this.containerHeight=t},o.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(!0===n)break}},o.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])==0},o.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},o.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},o.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},o.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},o.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},o.prototype.getItems=function(){return this.itemsData},o.prototype.setZeroPosition=function(t){this.zeroPosition=t},o.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];r.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),r.mergeOptions(this.options,t,"interpolation"),r.mergeOptions(this.options,t,"drawPoints"),r.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,s.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},o.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},o.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){i={svg:document.createElementNS("http://www.w3.org/2000/svg","svg"),svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":h.drawIcon(this,o,n,t,e,i);break;case"points":case"point":d.drawIcon(this,o,n,t,e,i);break;case"bar":a.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},o.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){return 1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o,n=e;if(i)for(o=t.length-2;o>0;o--)n+=t[o][0]+","+t[o][1]+" ";else for(o=1;o0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i");this.dom.textArea.innerHTML=r,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},o.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,s.default)(this.groups);t.sort(function(t,e){return t=0;i--){var a=s[i];a.nodes||(a.nodes=[]),-1===a.nodes.indexOf(n)&&a.nodes.push(n)}e.attr&&(n.attr=h(n.attr,e.attr))}function u(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=h({},t.edge);e.attr=h(i,e.attr)}}function c(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=h({},t.edge)),s.attr=h(s.attr||{},n),s}function p(){for(F=I.NULL,L="";" "===z||"\t"===z||"\n"===z||"\r"===z;)s();do{var t=!1;if("#"===z){for(var e=A-1;" "===R.charAt(e)||"\t"===R.charAt(e);)e--;if("\n"===R.charAt(e)||""===R.charAt(e)){for(;""!=z&&"\n"!=z;)s();t=!0}}if("/"===z&&"/"===r()){for(;""!=z&&"\n"!=z;)s();t=!0}if("/"===z&&"*"===r()){for(;""!=z;){if("*"===z&&"/"===r()){s(),s();break}s()}t=!0}for(;" "===z||"\t"===z||"\n"===z||"\r"===z;)s()}while(t);if(""===z)return void(F=I.DELIMITER);var i=z+r();if(N[i])return F=I.DELIMITER,L=i,s(),void s();if(N[z])return F=I.DELIMITER,L=z,void s();if(a(z)||"-"===z){for(L+=z,s();a(z);)L+=z,s();return"false"===L?L=!1:"true"===L?L=!0:isNaN(Number(L))||(L=Number(L)),void(F=I.IDENTIFIER)}if('"'===z){for(s();""!=z&&('"'!=z||'"'===z&&'"'===r());)'"'===z?(L+=z,s()):"\\"===z&&"n"===r()?(L+="\n",s()):L+=z,s();if('"'!=z)throw x('End of string " expected');return s(),void(F=I.IDENTIFIER)}for(F=I.UNKNOWN;""!=z;)L+=z,s();throw new SyntaxError('Syntax error in part "'+k(L,30)+'"')}function f(){var t={};if(n(),p(),"strict"===L&&(t.strict=!0,p()),"graph"!==L&&"digraph"!==L||(t.type=L,p()),F===I.IDENTIFIER&&(t.id=L,p()),"{"!=L)throw x("Angle bracket { expected");if(p(),m(t),"}"!=L)throw x("Angle bracket } expected");if(p(),""!==L)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==L&&"}"!=L;)v(t),";"===L&&p()}function v(t){var e=g(t);if(e)return void _(t,e);if(!y(t)){if(F!=I.IDENTIFIER)throw x("Identifier expected");var i=L;if(p(),"="===L){if(p(),F!=I.IDENTIFIER)throw x("Identifier expected");t[i]=L,p()}else b(t,i)}}function g(t){var e=null;if("subgraph"===L&&(e={},e.type="subgraph",p(),F===I.IDENTIFIER&&(e.id=L,p())),"{"===L){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=L)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function y(t){return"node"===L?(p(),t.node=w(),"node"):"edge"===L?(p(),t.edge=w(),"edge"):"graph"===L?(p(),t.graph=w(),"graph"):null}function b(t,e){var i={id:e},o=w();o&&(i.attr=o),l(t,i),_(t,e)}function _(t,e){for(;"->"===L||"--"===L;){var i,o=L;p();var n=g(t);if(n)i=n;else{if(F!=I.IDENTIFIER)throw x("Identifier or subgraph expected");i=L,l(t,{id:i}),p()}u(t,c(t,e,i,o,w())),e=i}}function w(){for(var t=null,e={dashed:!0,solid:!1,dotted:[1,5]};"["===L;){for(p(),t={};""!==L&&"]"!=L;){if(F!=I.IDENTIFIER)throw x("Attribute name expected");var i=L;if(p(),"="!=L)throw x("Equal sign = expected");if(p(),F!=I.IDENTIFIER)throw x("Attribute value expected");var o=L;"style"===i&&(o=e[o]),d(t,i,o),p(),","==L&&p()}if("]"!=L)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+k(L,30)+'" (char '+A+")")}function k(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function S(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function D(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},R="",A=0,z="",L="",F=I.NULL,B=/[a-zA-Z_0-9.:#]/;e.parseDOT=o,e.DOTToGraph=C},function(t,e,i){function o(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a2&&void 0!==arguments[2]&&arguments[2];(0,d.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(this.elementOptions=t,this.initFontOptions(t.font),p.isValidLabel(t.label)?this.labelDirty=!0:t.label="",void 0!==t.font&&null!==t.font)if("string"==typeof t.font)this.baseSize=this.fontOptions.size;else if("object"===(0,a.default)(t.font)){var e=t.font.size;void 0!==e&&(this.baseSize=e)}}},{key:"initFontOptions",value:function(e){var i=this;if(c.forEach(m,function(t){i.fontOptions[t]={}}),t.parseFontString(this.fontOptions,e))return void(this.fontOptions.vadjust=0);c.forEach(e,function(t,e){void 0!==t&&null!==t&&"object"!==(void 0===t?"undefined":(0,a.default)(t))&&(i.fontOptions[e]=t)})}},{key:"constrain",value:function(t){var e={constrainWidth:!1,maxWdt:-1,minWdt:-1,constrainHeight:!1,minHgt:-1,valign:"middle"},i=c.topMost(t,"widthConstraint");if("number"==typeof i)e.maxWdt=Number(i),e.minWdt=Number(i);else if("object"===(void 0===i?"undefined":(0,a.default)(i))){var o=c.topMost(t,["widthConstraint","maximum"]);"number"==typeof o&&(e.maxWdt=Number(o));var n=c.topMost(t,["widthConstraint","minimum"]);"number"==typeof n&&(e.minWdt=Number(n))}var s=c.topMost(t,"heightConstraint");if("number"==typeof s)e.minHgt=Number(s);else if("object"===(void 0===s?"undefined":(0,a.default)(s))){var r=c.topMost(t,["heightConstraint","minimum"]);"number"==typeof r&&(e.minHgt=Number(r));var h=c.topMost(t,["heightConstraint","valign"]);"string"==typeof h&&("top"!==h&&"bottom"!==h||(e.valign=h))}return e}},{key:"update",value:function(t,e){this.setOptions(t,!0),this.propagateFonts(e),c.deepExtend(this.fontOptions,this.constrain(e)),this.fontOptions.chooser=p.choosify("label",e)}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"addFontOptionsToPile",value:function(t,e){for(var i=0;i5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r=this.elementOptions.scaling.label.maxVisible&&(r=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale),this.calculateLabelSize(t,o,n,e,i,s),this._drawBackground(t),this._drawText(t,e,this.size.yLine,s,r))}}},{key:"_drawBackground",value:function(t){if(void 0!==this.fontOptions.background&&"none"!==this.fontOptions.background){t.fillStyle=this.fontOptions.background;var e=this.getSize();t.fillRect(e.left,e.top,e.width,e.height)}}},{key:"_drawText",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"middle",n=arguments[4],r=this._setAlignment(t,e,i,o),a=(0,s.default)(r,2);e=a[0],i=a[1],t.textAlign="left",e-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(i-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(i+=(this.size.height-this.size.labelHeight)/2));for(var h=0;h0&&(t.lineWidth=c.strokeWidth,t.strokeStyle=v,t.lineJoin="round"),t.fillStyle=m,c.strokeWidth>0&&t.strokeText(c.text,e+l,i+c.vadjust),t.fillText(c.text,e+l,i+c.vadjust),l+=c.width}i+=d.height}}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&!1===this.pointToSelf){e=0,i=0;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=4):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=4):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=c.overrideOpacity(o,s),n=c.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"getSize",value:function(){var t=this.size.left,e=this.size.top-1;if(this.isEdgeLabel){var i=.5*-this.size.width;switch(this.fontOptions.align){case"middle":t=i,e=.5*-this.size.height;break;case"top":t=i,e=-(this.size.height+2);break;case"bottom":t=i,e=2}}return{left:t,top:e,width:this.size.width,height:this.size.height}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4)}},{key:"getFormattingValues",value:function(t,e,i,o){var n=function(t,e,i){return"normal"===e?"mod"===i?"":t[i]:void 0!==t[e][i]?t[e][i]:t[i]},s={color:n(this.fontOptions,o,"color"),size:n(this.fontOptions,o,"size"),face:n(this.fontOptions,o,"face"),mod:n(this.fontOptions,o,"mod"),vadjust:n(this.fontOptions,o,"vadjust"),strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};(e||i)&&("normal"===o&&!0===this.fontOptions.chooser&&this.elementOptions.labelHighlightBold?s.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(s,this.elementOptions.id,e,i));var r="";return void 0!==s.mod&&""!==s.mod&&(r+=s.mod+" "),r+=s.size+"px "+s.face,t.font=r.replace(/"/g,""),s.font=t.font,s.height=s.size,s}},{key:"differentState",value:function(t,e){return t!==this.selectedState||e!==this.hoverState}},{key:"_processLabelText",value:function(t,e,i,o){return new f(t,this,e,i).process(o)}},{key:"_processLabel",value:function(t,e,i){if(!1!==this.labelDirty||this.differentState(e,i)){var o=this._processLabelText(t,e,i,this.elementOptions.label);this.fontOptions.minWdt>0&&o.width0&&o.heighto.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=0,d=this.options.selfReferenceSize,l=void 0,u=void 0,c=void 0,p=void 0,f=void 0,m=.5*(s+r);s<=r&&h<10&&(m=.5*(s+r),l=this._pointOnCircle(o,n,d,m),u=Math.atan2(t.y-l.y,t.x-l.x),c=t.distanceToBorder(e,u),p=Math.sqrt(Math.pow(l.x-t.x,2)+Math.pow(l.y-t.y,2)),f=c-p,!(Math.abs(f)<.05));)f>0?a>0?s=m:r=m:a>0?r=m:s=m,h++;return l.t=m,l}},{key:"getLineWidth",value:function(t,e){return!0===t?Math.max(this.selectionWidth,.3/this.body.view.scale):!0===e?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(!1!==e.inheritsColor){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,!1===this.from.selected&&!1===this.to.selected?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):!0===this.from.selected&&!1===this.to.selected?r=this.to.options.color.border:!1===this.from.selected&&!0===this.to.selected&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle", +value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,h){var d=0;if(this.from!=this.to)d=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],p=u[1],f=u[2],m=c-n,v=p-r;d=Math.abs(Math.sqrt(m*m+v*v)-f)}return d}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:d<0&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=r.width;if("from"===e?(d=this.from,l=this.to,u=.1,c=r.fromArrowScale,p=r.fromArrowType):"to"===e?(d=this.to,l=this.from,u=-.1,c=r.toArrowScale,p=r.toArrowType):(d=this.to,l=this.from,c=r.middleArrowScale,p=r.middleArrowType),d!=l)if("middle"!==e)if(!0===this.options.smooth.enabled){h=this.findBorderPosition(d,t,{via:i});var m=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);a=Math.atan2(h.y-m.y,h.x-m.x)}else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.5,i);else{var v=this._getCircleData(t),g=(0,s.default)(v,3),y=g[0],b=g[1],_=g[2];"from"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),a=-2*h.t*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),a=-2*h.t*Math.PI+1.5*Math.PI-1.1*Math.PI):(h=this._pointOnCircle(y,b,_,.175),a=3.9269908169872414)}"middle"===e&&c<0&&(f*=-1);var w=15*c+3*f;return{point:h,core:{x:h.x-.9*w*Math.cos(a),y:h.y-.9*w*Math.sin(a)},angle:a,length:w,type:p}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,u.draw(t,n),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){!0===e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){!0===e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(4),a=o(r),h=i(5),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=function(){function t(){(0,u.default)(this,t)}return(0,p.default)(t,null,[{key:"transform",value:function(t,e){t instanceof Array||(t=[t]);for(var i=e.point.x,o=e.point.y,n=e.angle,s=e.length,r=0;r0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&this._getForceContributions(n.root,t)}}},{key:"_getForceContributions",value:function(t,e){this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?this._getForceContributions(t,e):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;h0&&(lr&&(r=l),ua&&(a=u))}var c=Math.abs(r-n)-Math.abs(a-s);c>0?(s-=.5*c,a+=.5*c):(n+=.5*c,r-=.5*c);var p=Math.max(1e-5,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var y=0;y0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.centerOfMass,o=t.mass+e.options.mass,n=1/o;i.x=i.x*t.mass+e.x*e.options.mass,i.x*=n,i.y=i.y*t.mass+e.y*e.options.mass,i.y*=n,t.mass=o;var s=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?o.maxY>e.y?"NW":"SW":o.maxY>e.y?"NE":"SE",this._placeInRegion(t,e,n)}},{key:"_placeInRegion",value:function(t,e,i){var o=t.children[i];switch(o.childrenCount){case 0:o.children.data=e,o.childrenCount=1,this._updateBranchMass(o,e);break;case 1:o.children.data.x===e.x&&o.children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(o),this._placeInTree(o,e));break;case 4:this._placeInTree(o,e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t=void 0,e=void 0,i=void 0,o=void 0,n=this.body.nodes,s=this.physicsBody.physicsNodeIndices,r=this.physicsBody.forces,a=0;a=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(54),n=i(39),s=i(59),r={};i(26)(r,i(13)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(20),n=i(27),s=i(33);t.exports=i(21)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(25),n=i(132),s=i(133);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if((a=h[l++])!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(55),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e,i){var o=i(55),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(18).document;t.exports=o&&o.documentElement},function(t,e,i){var o=i(55),n=i(51);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):r-56320+(s-55296<<10)+65536)}}},function(t,e,i){var o=i(27),n=i(137);t.exports=i(7).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(86),n=i(13)("iterator"),s=i(31);t.exports=i(7).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){i(139);var o=i(7).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(17);o(o.S,"Object",{create:i(54)})},function(t,e,i){i(141),t.exports=i(7).Object.keys},function(t,e,i){var o=i(41),n=i(33);i(87)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){t.exports={default:i(143),__esModule:!0}},function(t,e,i){i(60),i(49),t.exports=i(61).f("iterator")},function(t,e,i){t.exports={default:i(145),__esModule:!0}},function(t,e,i){i(146),i(151),i(152),i(153),t.exports=i(7).Symbol},function(t,e,i){var o=i(18),n=i(22),s=i(21),r=i(17),a=i(83),h=i(147).KEY,d=i(28),l=i(57),u=i(59),c=i(40),p=i(13),f=i(61),m=i(62),v=i(148),g=i(149),y=i(27),b=i(25),_=i(53),w=i(39),x=i(54),k=i(150),S=i(89),D=i(20),M=i(33),C=S.f,O=D.f,E=k.f,T=o.Symbol,P=o.JSON,I=P&&P.stringify,N=p("_hidden"),R=p("toPrimitive"),A={}.propertyIsEnumerable,z=l("symbol-registry"),L=l("symbols"),F=l("op-symbols"),B=Object.prototype,j="function"==typeof T,H=o.QObject,W=!H||!H.prototype||!H.prototype.findChild,Y=s&&d(function(){return 7!=x(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=C(B,e);o&&delete B[e],O(t,e,i),o&&t!==B&&O(B,e,o)}:O,G=function(t){var e=L[t]=x(T.prototype);return e._k=t,e},V=j&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},U=function(t,e,i){return t===B&&U(F,e,i),y(t),e=_(e,!0),y(i),n(L,e)?(i.enumerable?(n(t,N)&&t[N][e]&&(t[N][e]=!1),i=x(i,{enumerable:w(0,!1)})):(n(t,N)||O(t,N,w(1,{})),t[N][e]=!0),Y(t,e,i)):O(t,e,i)},q=function(t,e){y(t);for(var i,o=v(e=b(e)),n=0,s=o.length;s>n;)U(t,i=o[n++],e[i]);return t},X=function(t,e){return void 0===e?x(t):q(x(t),e)},Z=function(t){var e=A.call(this,t=_(t,!0));return!(this===B&&n(L,t)&&!n(F,t))&&(!(e||!n(this,t)||!n(L,t)||n(this,N)&&this[N][t])||e)},K=function(t,e){if(t=b(t),e=_(e,!0),t!==B||!n(L,e)||n(F,e)){var i=C(t,e);return!i||!n(L,e)||n(t,N)&&t[N][e]||(i.enumerable=!0),i}},J=function(t){for(var e,i=E(b(t)),o=[],s=0;i.length>s;)n(L,e=i[s++])||e==N||e==h||o.push(e);return o},$=function(t){for(var e,i=t===B,o=E(i?F:b(t)),s=[],r=0;o.length>r;)!n(L,e=o[r++])||i&&!n(B,e)||s.push(L[e]);return s};j||(T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===B&&e.call(F,i),n(this,N)&&n(this[N],t)&&(this[N][t]=!1),Y(this,t,w(1,i))};return s&&W&&Y(B,t,{configurable:!0,set:e}),G(t)},a(T.prototype,"toString",function(){return this._k}),S.f=K,D.f=U,i(88).f=k.f=J,i(42).f=Z,i(63).f=$,s&&!i(52)&&a(B,"propertyIsEnumerable",Z,!0),f.f=function(t){return G(p(t))}),r(r.G+r.W+r.F*!j,{Symbol:T});for(var Q="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),tt=0;Q.length>tt;)p(Q[tt++]);for(var et=M(p.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!j,"Symbol",{for:function(t){return n(z,t+="")?z[t]:z[t]=T(t)},keyFor:function(t){if(!V(t))throw TypeError(t+" is not a symbol!");for(var e in z)if(z[e]===t)return e},useSetter:function(){W=!0},useSimple:function(){W=!1}}),r(r.S+r.F*!j,"Object",{create:X,defineProperty:U,defineProperties:q,getOwnPropertyDescriptor:K,getOwnPropertyNames:J,getOwnPropertySymbols:$}),P&&r(r.S+r.F*(!j||d(function(){var t=T();return"[null]"!=I([t])||"{}"!=I({a:t})||"{}"!=I(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!V(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&g(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!V(e))return e}),o[1]=e,I.apply(P,o)}}}),T.prototype[R]||i(26)(T.prototype,R,T.prototype.valueOf),u(T,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(40)("meta"),n=i(32),s=i(22),r=i(20).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(28)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},p=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:p}},function(t,e,i){var o=i(33),n=i(63),s=i(42);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e,i){var o=i(50);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(25),n=i(88).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e){},function(t,e,i){i(62)("asyncIterator")},function(t,e,i){i(62)("observable")},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(0,function(){function e(){return Co.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function n(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}function s(t){return void 0===t}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i=0;i0?"future":"past"];return D(i)?i(e):i.replace(/%s/i,e)}function A(t,e){var i=t.toLowerCase();Lo[i]=Lo[i+"s"]=Lo[e]=t}function z(t){return"string"==typeof t?Lo[t]||Lo[t.toLowerCase()]:void 0}function L(t){var e,i,o={};for(i in t)d(t,i)&&(e=z(i))&&(o[e]=t[i]);return o}function F(t,e){Fo[t]=e}function B(t){var e=[];for(var i in t)e.push({unit:i,priority:Fo[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,e,i){var o=""+Math.abs(t),n=e-o.length;return(t>=0?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function H(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Wo[t]=n),e&&(Wo[e[0]]=function(){return j(n.apply(this,arguments),e[1],e[2])}),i&&(Wo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function W(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Y(t){var e,i,o=t.match(Bo);for(e=0,i=o.length;e=0&&jo.test(t);)t=t.replace(jo,i),jo.lastIndex=0,o-=1;return t}function U(t,e,i){an[t]=D(e)?e:function(t,o){return t&&i?i:e}}function q(t,e){return d(an,t)?an[t](e._strict,e._locale):new RegExp(X(t))}function X(t){return Z(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function Z(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function K(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=_(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i;return-(7+_t(t,0,o).getUTCDay()-e)%7+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=Q(s)+d):d>Q(t)?(s=t+1,r=d-Q(t)):(s=t,r=d),{year:s,dayOfYear:r}}function kt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+St(n,e,i)):r>St(t.year(),e,i)?(o=r-St(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function St(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(Q(t)-o+n)/7}function Dt(t){return kt(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function Ct(){return this._week.doy}function Ot(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Et(t){var e=kt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Tt(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?i(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:i(this._weekdays)?this._weekdays:this._weekdays.standalone}function Nt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Rt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function At(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=yn.call(this._weekdaysParse,r),-1!==n?n:null):"ddd"===e?(n=yn.call(this._shortWeekdaysParse,r),-1!==n?n:null):(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):"dddd"===e?-1!==(n=yn.call(this._weekdaysParse,r))?n:-1!==(n=yn.call(this._shortWeekdaysParse,r))?n:(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):"ddd"===e?-1!==(n=yn.call(this._shortWeekdaysParse,r))?n:-1!==(n=yn.call(this._weekdaysParse,r))?n:(n=yn.call(this._minWeekdaysParse,r),-1!==n?n:null):-1!==(n=yn.call(this._minWeekdaysParse,r))?n:-1!==(n=yn.call(this._weekdaysParse,r))?n:(n=yn.call(this._shortWeekdaysParse,r),-1!==n?n:null)}function zt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return At.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function Lt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Tt(t,this.localeData()),this.add(t-e,"d")):e}function Ft(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Bt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=En),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ht(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Tn),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Pn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=Z(a[e]),h[e]=Z(h[e]),d[e]=Z(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Gt(){return this.hours()%12||12}function Vt(){return this.hours()||24}function Ut(t,e){H(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Jt(t){for(var e,i,o,n,s=0;s0;){if(o=$t(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&w(n,i,!0)>=e-1)break;e--}s++}return null}function $t(e){var i=null;if(!zn[e]&&void 0!==t&&t&&t.exports)try{i=In._abbr;!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Qt(i)}catch(t){}return zn[e]}function Qt(t,e){var i;return t&&(i=s(e)?ie(t):te(t,e))&&(In=i),In._abbr}function te(t,e){if(null!==e){var i=An;if(e.abbr=t,null!=zn[t])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=zn[t]._config;else if(null!=e.parentLocale){if(null==zn[e.parentLocale])return Ln[e.parentLocale]||(Ln[e.parentLocale]=[]),Ln[e.parentLocale].push({name:t,config:e}),null;i=zn[e.parentLocale]._config}return zn[t]=new O(C(i,e)),Ln[t]&&Ln[t].forEach(function(t){te(t.name,t.config)}),Qt(t),zn[t]}return delete zn[t],null}function ee(t,e){if(null!=e){var i,o=An;null!=zn[t]&&(o=zn[t]._config),e=C(o,e),i=new O(e),i.parentLocale=zn[t],zn[t]=i,Qt(t)}else null!=zn[t]&&(null!=zn[t].parentLocale?zn[t]=zn[t].parentLocale:null!=zn[t]&&delete zn[t]);return zn[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return In;if(!i(t)){if(e=$t(t))return e;t=[t]}return Jt(t)}function oe(){return Io(zn)}function ne(t){var e,i=t._a;return i&&-2===p(t).overflow&&(e=i[ln]<0||i[ln]>11?ln:i[un]<1||i[un]>ht(i[dn],i[ln])?un:i[cn]<0||i[cn]>24||24===i[cn]&&(0!==i[pn]||0!==i[fn]||0!==i[mn])?cn:i[pn]<0||i[pn]>59?pn:i[fn]<0||i[fn]>59?fn:i[mn]<0||i[mn]>999?mn:-1,p(t)._overflowDayOfYear&&(eun)&&(e=un),p(t)._overflowWeeks&&-1===e&&(e=vn),p(t)._overflowWeekday&&-1===e&&(e=gn),p(t).overflow=e),t}function se(t,e,i){return null!=t?t:null!=e?e:i}function re(t){var i=new Date(e.now());return t._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()]}function ae(t){var e,i,o,n,s=[];if(!t._d){for(o=re(t),t._w&&null==t._a[un]&&null==t._a[ln]&&he(t),null!=t._dayOfYear&&(n=se(t._a[dn],o[dn]),(t._dayOfYear>Q(n)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[ln]=i.getUTCMonth(),t._a[un]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[cn]&&0===t._a[pn]&&0===t._a[fn]&&0===t._a[mn]&&(t._nextDay=!0,t._a[cn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[cn]=24),t._w&&void 0!==t._w.d&&t._w.d!==t._d.getDay()&&(p(t).weekdayMismatch=!0)}}function he(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=se(e.GG,t._a[dn],kt(De(),1,4).year),o=se(e.W,1),((n=se(e.E,1))<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=kt(De(),s,r);i=se(e.gg,t._a[dn],d.year),o=se(e.w,d.week),null!=e.d?((n=e.d)<0||n>6)&&(h=!0):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>St(i,s,r)?p(t)._overflowWeeks=!0:null!=h?p(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[dn]=a.year,t._dayOfYear=a.dayOfYear)}function de(t){var e,i,o,n,s,r,a=t._i,h=Fn.exec(a)||Bn.exec(a);if(h){for(p(t).iso=!0,e=0,i=Hn.length;e0&&p(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Wo[s]?(o?p(t).empty=!1:p(t).unusedTokens.push(s),$(s,o,t)):t._strict&&!o&&p(t).unusedTokens.push(s);p(t).charsLeftOver=h-d,a.length>0&&p(t).unusedInput.push(a),t._a[cn]<=12&&!0===p(t).bigHour&&t._a[cn]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[cn]=ye(t._locale,t._a[cn],t._meridiem),ae(t),ne(t)}function ye(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function be(t){var e,i,o,n,s;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ue(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(v(t,this),t=xe(t),t._a){var e=t._isUTC?u(t._a):De(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function qe(){return!!this.isValid()&&!this._isUTC}function Xe(){return!!this.isValid()&&this._isUTC}function Ze(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ke(t,e){var i,o,n,s=t,a=null;return Ne(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Jn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:_(a[un])*i,h:_(a[cn])*i,m:_(a[pn])*i,s:_(a[fn])*i,ms:_(Re(1e3*a[mn]))*i}):(a=$n.exec(t))?(i="-"===a[1]?-1:(a[1],1),s={y:Je(a[2],i),M:Je(a[3],i),w:Je(a[4],i),d:Je(a[5],i),h:Je(a[6],i),m:Je(a[7],i),s:Je(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Qe(De(s.from),De(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new Ie(s),Ne(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function Je(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function $e(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Qe(t,e){var i;return t.isValid()&&e.isValid()?(e=Le(e,t),t.isBefore(e)?i=$e(t,e):(i=$e(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function ti(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(S(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=Ke(i,o),ei(this,n,t),this}}function ei(t,i,o,n){var s=i._milliseconds,r=Re(i._days),a=Re(i._months);t.isValid()&&(n=null==n||n,a&&pt(t,ot(t,"Month")+a*o),r&&nt(t,"Date",ot(t,"Date")+r*o),s&&t._d.setTime(t._d.valueOf()+s*o),n&&e.updateOffset(t,r||a))}function ii(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function oi(t,i){var o=t||De(),n=Le(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(D(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,De(o)))}function ni(){return new g(this)}function si(t,e){var i=y(t)?t:De(t);return!(!this.isValid()||!i.isValid())&&(e=z(s(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()9999?G(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):D(Date.prototype.toISOString)?this.toDate().toISOString():G(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function mi(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var i="["+t+'("]',o=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=e+'[")]';return this.format(i+o+"-MM-DD[T]HH:mm:ss.SSS"+n)}function vi(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var i=G(this,t);return this.localeData().postformat(i)}function gi(t,e){return this.isValid()&&(y(t)&&t.isValid()||De(t).isValid())?Ke({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function yi(t){return this.from(De(),t)}function bi(t,e){return this.isValid()&&(y(t)&&t.isValid()||De(t).isValid())?Ke({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function _i(t){return this.to(De(),t)}function wi(t){var e;return void 0===t?this._locale._abbr:(e=ie(t),null!=e&&(this._locale=e),this)}function xi(){return this._locale}function ki(t){switch(t=z(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function Si(t){return void 0===(t=z(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function Di(){return this._d.valueOf()-6e4*(this._offset||0)}function Mi(){return Math.floor(this.valueOf()/1e3)}function Ci(){return new Date(this.valueOf())}function Oi(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Ei(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function Ti(){return this.isValid()?this.toISOString():null}function Pi(){return f(this)}function Ii(){return l({},p(this))}function Ni(){return p(this).overflow}function Ri(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Ai(t,e){H(0,[t,t.length],0,e)}function zi(t){return ji.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Li(t){return ji.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function Fi(){return St(this.year(),1,4)}function Bi(){var t=this.localeData()._week;return St(this.year(),t.dow,t.doy)}function ji(t,e,i,o,n){var s;return null==t?kt(this,o,n).year:(s=St(t,o,n),e>s&&(e=s),Hi.call(this,t,e,i,o,n))}function Hi(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Wi(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Yi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Gi(t,e){e[mn]=_(1e3*("0."+t))}function Vi(){return this._isUTC?"UTC":""}function Ui(){return this._isUTC?"Coordinated Universal Time":""}function qi(t){return De(1e3*t)}function Xi(){return De.apply(null,arguments).parseZone()}function Zi(t){return t}function Ki(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Ji(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return Ki(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=Ki(t,o,i,"month");return n}function $i(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return Ki(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=Ki(e,(a+s)%7,o,"day");return h}function Qi(t,e){return Ji(t,e,"months")}function to(t,e){return Ji(t,e,"monthsShort")}function eo(t,e,i){return $i(t,e,i,"weekdays")}function io(t,e,i){return $i(t,e,i,"weekdaysShort")}function oo(t,e,i){return $i(t,e,i,"weekdaysMin")}function no(){var t=this._data;return this._milliseconds=ds(this._milliseconds),this._days=ds(this._days),this._months=ds(this._months),t.milliseconds=ds(t.milliseconds),t.seconds=ds(t.seconds),t.minutes=ds(t.minutes),t.hours=ds(t.hours),t.months=ds(t.months),t.years=ds(t.years),this}function so(t,e,i,o){var n=Ke(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function ro(t,e){return so(this,t,e,1)}function ao(t,e){return so(this,t,e,-1)}function ho(t){return t<0?Math.floor(t):Math.ceil(t)}function lo(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*ho(co(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=b(s/1e3),h.seconds=t%60,e=b(t/60),h.minutes=e%60,i=b(e/60),h.hours=i%24,r+=b(i/24),n=b(uo(r)),a+=n, +r-=ho(co(n)),o=b(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function uo(t){return 4800*t/146097}function co(t){return 146097*t/4800}function po(t){if(!this.isValid())return NaN;var e,i,o=this._milliseconds;if("month"===(t=z(t))||"year"===t)return e=this._days+o/864e5,i=this._months+uo(e),"month"===t?i:i/12;switch(e=this._days+Math.round(co(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function fo(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12):NaN}function mo(t){return function(){return this.as(t)}}function vo(){return Ke(this)}function go(t){return t=z(t),this.isValid()?this[t+"s"]():NaN}function yo(t){return function(){return this.isValid()?this._data[t]:NaN}}function bo(){return b(this.days()/7)}function _o(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function wo(t,e,i){var o=Ke(t).abs(),n=Ds(o.as("s")),s=Ds(o.as("m")),r=Ds(o.as("h")),a=Ds(o.as("d")),h=Ds(o.as("M")),d=Ds(o.as("y")),l=n<=Ms.ss&&["s",n]||n0,l[4]=i,_o.apply(null,l)}function xo(t){return void 0===t?Ds:"function"==typeof t&&(Ds=t,!0)}function ko(t,e){return void 0!==Ms[t]&&(void 0===e?Ms[t]:(Ms[t]=e,"s"===t&&(Ms.ss=e-1),!0))}function So(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),i=wo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function Do(t){return(t>0)-(t<0)||+t}function Mo(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i,o=Cs(this._milliseconds)/1e3,n=Cs(this._days),s=Cs(this._months);t=b(o/60),e=b(t/60),o%=60,t%=60,i=b(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o?o.toFixed(3).replace(/\.?0+$/,""):"",c=this.asSeconds();if(!c)return"P0D";var p=c<0?"-":"",f=Do(this._months)!==Do(c)?"-":"",m=Do(this._days)!==Do(c)?"-":"",v=Do(this._milliseconds)!==Do(c)?"-":"";return p+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(h?m+h+"D":"")+(d||l||u?"T":"")+(d?v+d+"H":"")+(l?v+l+"M":"")+(u?v+u+"S":"")}var Co,Oo;Oo=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn,bn=it("FullYear",!0);yn=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;ethis?this:t:m()}),Xn=function(){return Date.now?Date.now():+new Date},Zn=["year","quarter","month","week","day","hour","minute","second","millisecond"];Ae("Z",":"),Ae("ZZ",""),U("Z",nn),U("ZZ",nn),K(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=ze(nn,t)});var Kn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Jn=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,$n=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;Ke.fn=Ie.prototype,Ke.invalid=Pe;var Qn=ti(1,"add"),ts=ti(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var es=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});H(0,["gg",2],0,function(){return this.weekYear()%100}),H(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ai("gggg","weekYear"),Ai("ggggg","weekYear"),Ai("GGGG","isoWeekYear"),Ai("GGGGG","isoWeekYear"),A("weekYear","gg"),A("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),U("G",en),U("g",en),U("GG",Xo,Go),U("gg",Xo,Go),U("GGGG",$o,Uo),U("gggg",$o,Uo),U("GGGGG",Qo,qo),U("ggggg",Qo,qo),J(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=_(t)}),J(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),H("Q",0,"Qo","quarter"),A("quarter","Q"),F("quarter",7),U("Q",Yo),K("Q",function(t,e){e[ln]=3*(_(t)-1)}),H("D",["DD",2],"Do","date"),A("date","D"),F("date",9),U("D",Xo),U("DD",Xo,Go),U("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),K(["D","DD"],un),K("Do",function(t,e){e[un]=_(t.match(Xo)[0],10)});var is=it("Date",!0);H("DDD",["DDDD",3],"DDDo","dayOfYear"),A("dayOfYear","DDD"),F("dayOfYear",4),U("DDD",Jo),U("DDDD",Vo),K(["DDD","DDDD"],function(t,e,i){i._dayOfYear=_(t)}),H("m",["mm",2],0,"minute"),A("minute","m"),F("minute",14),U("m",Xo),U("mm",Xo,Go),K(["m","mm"],pn);var os=it("Minutes",!1);H("s",["ss",2],0,"second"),A("second","s"),F("second",15),U("s",Xo),U("ss",Xo,Go),K(["s","ss"],fn);var ns=it("Seconds",!1);H("S",0,0,function(){return~~(this.millisecond()/100)}),H(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,function(){return 10*this.millisecond()}),H(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),H(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),H(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),H(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),H(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),A("millisecond","ms"),F("millisecond",16),U("S",Jo,Yo),U("SS",Jo,Go),U("SSS",Jo,Vo);var ss;for(ss="SSSS";ss.length<=9;ss+="S")U(ss,tn);for(ss="S";ss.length<=9;ss+="S")K(ss,Gi);var rs=it("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var as=g.prototype;as.add=Qn,as.calendar=oi,as.clone=ni,as.diff=ui,as.endOf=Si,as.format=vi,as.from=gi,as.fromNow=yi,as.to=bi,as.toNow=_i,as.get=st,as.invalidAt=Ni,as.isAfter=si,as.isBefore=ri,as.isBetween=ai,as.isSame=hi,as.isSameOrAfter=di,as.isSameOrBefore=li,as.isValid=Pi,as.lang=es,as.locale=wi,as.localeData=xi,as.max=qn,as.min=Un,as.parsingFlags=Ii,as.set=rt,as.startOf=ki,as.subtract=ts,as.toArray=Oi,as.toObject=Ei,as.toDate=Ci,as.toISOString=fi,as.inspect=mi,as.toJSON=Ti,as.toString=pi,as.unix=Mi,as.valueOf=Di,as.creationData=Ri,as.year=bn,as.isLeapYear=et,as.weekYear=zi,as.isoWeekYear=Li,as.quarter=as.quarters=Wi,as.month=ft,as.daysInMonth=mt,as.week=as.weeks=Ot,as.isoWeek=as.isoWeeks=Et,as.weeksInYear=Bi,as.isoWeeksInYear=Fi,as.date=is,as.day=as.days=Lt,as.weekday=Ft,as.isoWeekday=Bt,as.dayOfYear=Yi,as.hour=as.hours=Rn,as.minute=as.minutes=os,as.second=as.seconds=ns,as.millisecond=as.milliseconds=rs,as.utcOffset=Be,as.utc=He,as.local=We,as.parseZone=Ye,as.hasAlignedHourOffset=Ge,as.isDST=Ve,as.isLocal=qe,as.isUtcOffset=Xe,as.isUtc=Ze,as.isUTC=Ze,as.zoneAbbr=Vi,as.zoneName=Ui,as.dates=k("dates accessor is deprecated. Use date instead.",is),as.months=k("months accessor is deprecated. Use month instead",ft),as.years=k("years accessor is deprecated. Use year instead",bn),as.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",je),as.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ue);var hs=O.prototype;hs.calendar=E,hs.longDateFormat=T,hs.invalidDate=P,hs.ordinal=I,hs.preparse=Zi,hs.postformat=Zi,hs.relativeTime=N,hs.pastFuture=R,hs.set=M,hs.months=dt,hs.monthsShort=lt,hs.monthsParse=ct,hs.monthsRegex=gt,hs.monthsShortRegex=vt,hs.week=Dt,hs.firstDayOfYear=Ct,hs.firstDayOfWeek=Mt,hs.weekdays=It,hs.weekdaysMin=Rt,hs.weekdaysShort=Nt,hs.weekdaysParse=zt,hs.weekdaysRegex=jt,hs.weekdaysShortRegex=Ht,hs.weekdaysMinRegex=Wt,hs.isPM=Xt,hs.meridiem=Zt,Qt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===_(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),e.lang=k("moment.lang is deprecated. Use moment.locale instead.",Qt),e.langData=k("moment.langData is deprecated. Use moment.localeData instead.",ie);var ds=Math.abs,ls=mo("ms"),us=mo("s"),cs=mo("m"),ps=mo("h"),fs=mo("d"),ms=mo("w"),vs=mo("M"),gs=mo("y"),ys=yo("milliseconds"),bs=yo("seconds"),_s=yo("minutes"),ws=yo("hours"),xs=yo("days"),ks=yo("months"),Ss=yo("years"),Ds=Math.round,Ms={ss:44,s:45,m:45,h:22,d:26,M:11},Cs=Math.abs,Os=Ie.prototype;return Os.isValid=Te,Os.abs=no,Os.add=ro,Os.subtract=ao,Os.as=po,Os.asMilliseconds=ls,Os.asSeconds=us,Os.asMinutes=cs,Os.asHours=ps,Os.asDays=fs,Os.asWeeks=ms,Os.asMonths=vs,Os.asYears=gs,Os.valueOf=fo,Os._bubble=lo,Os.clone=vo,Os.get=go,Os.milliseconds=ys,Os.seconds=bs,Os.minutes=_s,Os.hours=ws,Os.days=xs,Os.weeks=bo,Os.months=ks,Os.years=Ss,Os.humanize=So,Os.toISOString=Mo,Os.toString=Mo,Os.toJSON=Mo,Os.locale=wi,Os.localeData=xi,Os.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Mo),Os.lang=es,H("X",0,0,"unix"),H("x",0,0,"valueOf"),U("x",en),U("X",sn),K("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),K("x",function(t,e,i){i._d=new Date(_(t))}),e.version="2.19.1",function(t){Co=t}(De),e.fn=as,e.min=Ce,e.max=Oe,e.now=Xn,e.utc=u,e.unix=qi,e.months=Qi,e.isDate=a,e.locale=Qt,e.invalid=m,e.duration=Ke,e.isMoment=y,e.weekdays=eo,e.parseZone=Xi,e.localeData=ie,e.isDuration=Ne,e.monthsShort=to,e.weekdaysMin=oo,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=io,e.normalizeUnits=z,e.relativeTimeRounding=xo,e.relativeTimeThreshold=ko,e.calendarFormat=ii,e.prototype=as,e})}).call(e,i(155)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=156},function(t,e,i){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;p<6;p++)s[n+p]=c[p];return e||o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:void 0!==e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0==(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,i(158))},function(t,e){var i;i=function(){return this}();try{i=i||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(i=window)}t.exports=i},function(t,e,i){e.util=i(2),e.DOMutil=i(14),e.DataSet=i(11),e.DataView=i(12),e.Queue=i(43),e.Graph3d=i(161),e.graph3d={Camera:i(95),Filter:i(96),Point2d:i(91),Point3d:i(34),Slider:i(92),StepNumber:i(93)},e.moment=i(9),e.Hammer=i(10),e.keycharm=i(35)},function(t,e,i){var o=i(7),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){function o(t,e,i){if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.dataGroup=new _,this.dataPoints=null,this.create(),f.setDefaults(o.DEFAULTS,this),this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.setOptions(i),this.setData(e)}function n(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function s(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(90),a=function(t){return t&&t.__esModule?t:{default:t}}(r),h=i(44),d=i(2),l=i(34),u=i(91),c=i(92),p=i(93),f=i(94),m=i(15).default,v=i(15),g=v.printStyle,y=i(172),b=y.allOptions,_=i(173);o.STYLE=f.STYLE;o.DEFAULTS={width:"400px",height:"400px",filterLabel:"time",legendLabel:"value",xLabel:"x",yLabel:"y",zLabel:"z",xValueLabel:function(t){return t},yValueLabel:function(t){return t},zValueLabel:function(t){return t},showXAxis:!0,showYAxis:!0,showZAxis:!0,showGrid:!0,showPerspective:!0,showShadow:!1,keepAspectRatio:!0,verticalRatio:.5,dotSizeRatio:.02,dotSizeMinFraction:.5,dotSizeMaxFraction:2.5,showAnimationControls:void 0,animationInterval:1e3,animationPreload:!1,animationAutoStart:void 0,axisColor:"#4D4D4D",gridColor:"#D3D3D3",xCenter:"55%",yCenter:"50%",style:o.STYLE.DOT,tooltip:!1,tooltipStyle:{content:{padding:"10px",border:"1px solid #4d4d4d",color:"#1a1a1a",background:"rgba(255,255,255,0.7)",borderRadius:"2px",boxShadow:"5px 5px 10px rgba(128,128,128,0.5)"},line:{height:"40px",width:"0",borderLeft:"1px solid #4d4d4d"},dot:{height:"0",width:"0",border:"5px solid #4d4d4d",borderRadius:"5px"}},dataColor:{fill:"#7DC1FF",stroke:"#3267D2",strokeWidth:1},cameraPosition:{horizontal:1,vertical:.5,distance:1.7},showLegend:void 0,backgroundColor:void 0,xBarWidth:void 0,yBarWidth:void 0,valueMin:void 0,valueMax:void 0,xMin:void 0,xMax:void 0,xStep:void 0,yMin:void 0,yMax:void 0,yStep:void 0,zMin:void 0,zMax:void 0,zStep:void 0},h(o.prototype),o.prototype._setScale=function(){this.scale=new l(1/this.xRange.range(),1/this.yRange.range(),1/this.zRange.range()),this.keepAspectRatio&&(this.scale.x0&&(r[n-1].pointNext=r[n]);return r},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)},r=function(t){e._onClick(t)};d.addEventListener(this.frame.canvas,"mousedown",i),d.addEventListener(this.frame.canvas,"touchstart",o),d.addEventListener(this.frame.canvas,"mousewheel",n),d.addEventListener(this.frame.canvas,"mousemove",s),d.addEventListener(this.frame.canvas,"click",r),this.containerElement.appendChild(this.frame)},o.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(this.animationAutoStart&&this.dataGroup.dataFilter){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()}},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this.dataPoints=this.dataGroup.initializeData(this,t,this.style),this._initializeRanges(),this._redrawFilter()},o.prototype.setData=function(t){void 0!==t&&null!==t&&(this._readData(t),this.redraw(),this.animationStart())},o.prototype.setOptions=function(t){if(void 0!==t){!0===m.validate(t,b)&&console.log("%cErrors have been found in the supplied options object.",g),this.animationStop(),f.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.setData(this.dataGroup.getDataTable()),this.animationStart()}},o.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case o.STYLE.BAR:t=o.prototype._redrawBarGraphPoint;break;case o.STYLE.BARCOLOR:t=o.prototype._redrawBarColorGraphPoint;break;case o.STYLE.BARSIZE:t=o.prototype._redrawBarSizeGraphPoint;break;case o.STYLE.DOT:t=o.prototype._redrawDotGraphPoint;break;case o.STYLE.DOTLINE:t=o.prototype._redrawDotLineGraphPoint;break;case o.STYLE.DOTCOLOR:t=o.prototype._redrawDotColorGraphPoint;break;case o.STYLE.DOTSIZE:t=o.prototype._redrawDotSizeGraphPoint;break;case o.STYLE.SURFACE:t=o.prototype._redrawSurfaceGraphPoint;break;case o.STYLE.GRID:t=o.prototype._redrawGridGraphPoint;break;case o.STYLE.LINE:t=o.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},o.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},o.prototype._redrawClear=function(){var t=this.frame.canvas;t.getContext("2d").clearRect(0,0,t.width,t.height)},o.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},o.prototype._getLegendWidth=function(){var t;if(this.style===o.STYLE.DOTSIZE){t=this._dotSize()*this.dotSizeMaxFraction}else t=this.style===o.STYLE.BARSIZE?this.xBarWidth:20;return t},o.prototype._redrawLegend=function(){if(!0===this.showLegend&&this.style!==o.STYLE.LINE&&this.style!==o.STYLE.BARSIZE){var t=this.style===o.STYLE.BARSIZE||this.style===o.STYLE.DOTSIZE,e=this.style===o.STYLE.DOTSIZE||this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.BARCOLOR,i=Math.max(.25*this.frame.clientHeight,100),n=this.margin,s=this._getLegendWidth(),r=this.frame.clientWidth-this.margin,a=r-s,h=n+i,d=this._getContext();if(d.lineWidth=1,d.font="14px arial",!1===t){var l,c=i;for(l=0;l0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelY=function(t,e,i,o,n){void 0===n&&(n=0);var s=this._convert3Dto2D(e);Math.cos(2*o)<0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelZ=function(t,e,i,o){void 0===o&&(o=0);var n=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(i,n.x-o,n.y)},o.prototype._line3d=function(t,e,i,o){var n=this._convert3Dto2D(e),s=this._convert3Dto2D(i);this._line(t,n,s,o)},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,c,f=this._getContext();f.font=24/this.camera.getArmLength()+"px arial";var m,v=.025/this.scale.x,g=.025/this.scale.y,y=5/this.camera.getArmLength(),b=this.camera.getArmRotation().horizontal,_=new u(Math.cos(b),Math.sin(b)),w=this.xRange,x=this.yRange,k=this.zRange;for(f.lineWidth=1,o=void 0===this.defaultXStep,i=new p(w.min,w.max,this.xStep,o),i.start(!0);!i.end();){var S=i.getCurrent();if(this.showGrid?(t=new l(S,x.min,k.min),e=new l(S,x.max,k.min),this._line3d(f,t,e,this.gridColor)):this.showXAxis&&(t=new l(S,x.min,k.min),e=new l(S,x.min+v,k.min),this._line3d(f,t,e,this.axisColor),t=new l(S,x.max,k.min),e=new l(S,x.max-v,k.min),this._line3d(f,t,e,this.axisColor)),this.showXAxis){r=_.x>0?x.min:x.max,m=new l(S,r,k.min);var D=" "+this.xValueLabel(S)+" ";this.drawAxisLabelX(f,m,D,b,y)}i.next()}for(f.lineWidth=1,o=void 0===this.defaultYStep,i=new p(x.min,x.max,this.yStep,o),i.start(!0);!i.end();){var M=i.getCurrent();if(this.showGrid?(t=new l(w.min,M,k.min),e=new l(w.max,M,k.min),this._line3d(f,t,e,this.gridColor)):this.showYAxis&&(t=new l(w.min,M,k.min),e=new l(w.min+g,M,k.min),this._line3d(f,t,e,this.axisColor),t=new l(w.max,M,k.min),e=new l(w.max-g,M,k.min),this._line3d(f,t,e,this.axisColor)),this.showYAxis){s=_.y>0?w.min:w.max,m=new l(s,M,k.min);var C=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(f,m,C,b,y)}i.next()}if(this.showZAxis){for(f.lineWidth=1,o=void 0===this.defaultZStep,i=new p(k.min,k.max,this.zStep,o),i.start(!0),s=_.x>0?w.min:w.max,r=_.y<0?x.min:x.max;!i.end();){var O=i.getCurrent(),E=new l(s,r,O),T=this._convert3Dto2D(E);e=new u(T.x-y,T.y),this._line(f,T,e,this.axisColor);var P=this.zValueLabel(O)+" ";this.drawAxisLabelZ(f,E,P,5),i.next()}f.lineWidth=1,t=new l(s,r,k.min),e=new l(s,r,k.max),this._line3d(f,t,e,this.axisColor)}if(this.showXAxis){var I,N;f.lineWidth=1,I=new l(w.min,x.min,k.min),N=new l(w.max,x.min,k.min),this._line3d(f,I,N,this.axisColor),I=new l(w.min,x.max,k.min),N=new l(w.max,x.max,k.min),this._line3d(f,I,N,this.axisColor)}this.showYAxis&&(f.lineWidth=1,t=new l(w.min,x.min,k.min),e=new l(w.min,x.max,k.min),this._line3d(f,t,e,this.axisColor),t=new l(w.max,x.min,k.min),e=new l(w.max,x.max,k.min),this._line3d(f,t,e,this.axisColor));var R=this.xLabel;R.length>0&&this.showXAxis&&(c=.1/this.scale.y,s=(w.max+3*w.min)/4,r=_.x>0?x.min-c:x.max+c,n=new l(s,r,k.min),this.drawAxisLabelX(f,n,R,b));var A=this.yLabel;A.length>0&&this.showYAxis&&(d=.1/this.scale.x,s=_.y>0?w.min-d:w.max+d,r=(x.max+3*x.min)/4,n=new l(s,r,k.min),this.drawAxisLabelY(f,n,A,b));var z=this.zLabel;z.length>0&&this.showZAxis&&(h=30,s=_.x>0?w.min:w.max,r=_.y<0?x.min:x.max,a=(k.max+3*k.min)/4,n=new l(s,r,a),this.drawAxisLabelZ(f,n,z,h))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-this.eye.z/this.camera.getArmLength()*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawBar=function(t,e,i,o,n,s){var r,a=this,h=e.point,d=this.zRange.min,u=[{point:new l(h.x-i,h.y-o,h.z)},{point:new l(h.x+i,h.y-o,h.z)},{point:new l(h.x+i,h.y+o,h.z)},{point:new l(h.x-i,h.y+o,h.z)}],c=[{point:new l(h.x-i,h.y-o,d)},{point:new l(h.x+i,h.y-o,d)},{point:new l(h.x+i,h.y+o,d)},{point:new l(h.x-i,h.y+o,d)}];u.forEach(function(t){t.screen=a._convert3Dto2D(t.point)}),c.forEach(function(t){t.screen=a._convert3Dto2D(t.point)});var p=[{corners:u,center:l.avg(c[0].point,c[2].point)},{corners:[u[0],u[1],c[1],c[0]],center:l.avg(c[1].point,c[0].point)},{corners:[u[1],u[2],c[2],c[1]],center:l.avg(c[2].point,c[1].point)},{corners:[u[2],u[3],c[3],c[2]],center:l.avg(c[3].point,c[2].point)},{corners:[u[3],u[0],c[0],c[3]],center:l.avg(c[0].point,c[3].point)}];e.surfaces=p;for(var f=0;f0}if(a){var p,f=(e.point.z+i.point.z+o.point.z+n.point.z)/4,m=240*(1-(f-this.zRange.min)*this.scale.z/this.verticalRatio);this.showShadow?(p=Math.min(1+u.x/c/2,1),s=this._hsv2rgb(m,1,p),r=s):(p=1,s=this._hsv2rgb(m,1,p),r=this.axisColor)}else s="gray",r=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var v=[e,i,n,o];this._polygon(t,v,s,r)}},o.prototype._drawGridLine=function(t,e,i){if(void 0!==e&&void 0!==i){var o=(e.point.z+i.point.z)/2,n=240*(1-(o-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(n,1,1),this._line(t,e.screen,i.screen)}},o.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},o.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},o.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=null,s=null,r=null,a=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var h=n.surfaces;if(h)for(var d=h.length-1;d>=0;d--){var l=h[d],c=l.corners,p=[c[0].screen,c[1].screen,c[2].screen],f=[c[2].screen,c[3].screen,c[0].screen];if(this._insideTriangle(a,p)||this._insideTriangle(a,f))return n}}else for(i=0;i"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,h=o.offsetWidth,d=o.offsetHeight,l=t.screen.x-n/2;l=Math.min(Math.max(l,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=l+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-h/2+"px",o.style.top=t.screen.y-d/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},o.prototype.setCameraPosition=function(t){f.setCameraPosition(t,this),this.redraw()},o.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=o},function(t,e,i){i(163),t.exports=i(7).Object.assign},function(t,e,i){var o=i(17);o(o.S+o.F,"Object",{assign:i(164)})},function(t,e,i){var o=i(33),n=i(63),s=i(42),r=i(41),a=i(78),h=Object.assign;t.exports=!h||i(28)(function(){var t={},e={},i=Symbol(),o="abcdefghijklmnopqrst";return t[i]=7,o.split("").forEach(function(t){e[t]=t}),7!=h({},t)[i]||Object.keys(h({},e)).join("")!=o})?function(t,e){for(var i=r(t),h=arguments.length,d=1,l=n.f,u=s.f;h>d;)for(var c,p=a(arguments[d++]),f=l?o(p).concat(l(p)):o(p),m=f.length,v=0;m>v;)u.call(p,c=f[v++])&&(i[c]=p[c]);return i}:h},function(t,e,i){t.exports={default:i(166),__esModule:!0}},function(t,e,i){i(167),t.exports=i(7).Math.sign},function(t,e,i){var o=i(17);o(o.S,"Math",{sign:i(168)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,i){t.exports={default:i(170),__esModule:!0}},function(t,e,i){i(171);var o=i(7).Object;t.exports=function(t,e,i){return o.defineProperty(t,e,i)}},function(t,e,i){var o=i(17);o(o.S+o.F*!i(21),"Object",{defineProperty:i(20).f})},function(t,e,i){Object.defineProperty(e,"__esModule",{value:!0});var o="string",n="boolean",s="number",r={fill:{string:o},stroke:{string:o},strokeWidth:{number:s},__type__:{string:o,object:"object",undefined:"undefined"}},a={animationAutoStart:{boolean:n,undefined:"undefined"},animationInterval:{number:s},animationPreload:{boolean:n},axisColor:{string:o},backgroundColor:r,xBarWidth:{number:s,undefined:"undefined"},yBarWidth:{number:s,undefined:"undefined"},cameraPosition:{distance:{number:s},horizontal:{number:s},vertical:{number:s},__type__:{object:"object"}},xCenter:{string:o},yCenter:{string:o},dataColor:r,dotSizeMinFraction:{number:s},dotSizeMaxFraction:{number:s},dotSizeRatio:{number:s},filterLabel:{string:o},gridColor:{string:o},onclick:{function:"function"},keepAspectRatio:{boolean:n},xLabel:{string:o},yLabel:{string:o},zLabel:{string:o},legendLabel:{string:o},xMin:{number:s,undefined:"undefined"},yMin:{number:s,undefined:"undefined"},zMin:{number:s,undefined:"undefined"},xMax:{number:s,undefined:"undefined"},yMax:{number:s,undefined:"undefined"},zMax:{number:s,undefined:"undefined"},showAnimationControls:{boolean:n,undefined:"undefined"},showGrid:{boolean:n},showLegend:{boolean:n,undefined:"undefined"},showPerspective:{boolean:n},showShadow:{boolean:n},showXAxis:{boolean:n},showYAxis:{boolean:n},showZAxis:{boolean:n},xStep:{number:s,undefined:"undefined"},yStep:{number:s,undefined:"undefined"},zStep:{number:s,undefined:"undefined"},style:{number:s,string:["bar","bar-color","bar-size","dot","dot-line","dot-color","dot-size","line","grid","surface"]},tooltip:{boolean:n,function:"function"},tooltipStyle:{content:{color:{string:o},background:{string:o},border:{string:o},borderRadius:{string:o},boxShadow:{string:o},padding:{string:o},__type__:{object:"object"}},line:{borderLeft:{string:o},height:{string:o},width:{string:o},__type__:{object:"object"}},dot:{border:{string:o},borderRadius:{string:o},height:{string:o},width:{string:o},__type__:{object:"object"}},__type__:{object:"object"}},xValueLabel:{function:"function"},yValueLabel:{function:"function"},zValueLabel:{function:"function"},valueMax:{number:s,undefined:"undefined"},valueMin:{number:s,undefined:"undefined"},verticalRatio:{number:s},height:{string:o},width:{string:o},__type__:{object:"object"}};e.allOptions=a},function(t,e,i){function o(){this.dataTable=null}var n=i(11),s=i(12),r=i(174),a=i(96),h=i(94),d=i(34);o.prototype.initializeData=function(t,e,i){if(void 0!==e){Array.isArray(e)&&(e=new n(e));var o;if(!(e instanceof n||e instanceof s))throw new Error("Array, DataSet, or DataView expected");if(o=e.get(),0!=o.length){this.style=i,this.dataSet&&this.dataSet.off("*",this._onChange),this.dataSet=e,this.dataTable=o;var r=this;this._onChange=function(){t.setData(r.dataSet)},this.dataSet.on("*",this._onChange),this.colX="x",this.colY="y",this.colZ="z";var h=t.hasBars(i);if(h&&(void 0!==t.defaultXBarWidth?this.xBarWidth=t.defaultXBarWidth:this.xBarWidth=this.getSmallestDifference(o,this.colX)||1,void 0!==t.defaultYBarWidth?this.yBarWidth=t.defaultYBarWidth:this.yBarWidth=this.getSmallestDifference(o,this.colY)||1),this._initializeRange(o,this.colX,t,h),this._initializeRange(o,this.colY,t,h),this._initializeRange(o,this.colZ,t,!1),o[0].hasOwnProperty("style")){this.colValue="style";var d=this.getColumnRange(o,this.colValue);this._setRangeDefaults(d,t.defaultValueMin,t.defaultValueMax),this.valueRange=d}this.getDataTable()[0].hasOwnProperty("filter")&&void 0===this.dataFilter&&(this.dataFilter=new a(this,"filter",t),this.dataFilter.setOnLoadCallback(function(){t.redraw()}));return this.dataFilter?this.dataFilter._getDataPoints():this._getDataPoints(this.getDataTable())}}},o.prototype._collectRangeSettings=function(t,e){if(-1==["x","y","z"].indexOf(t))throw new Error("Column '"+t+"' invalid");var i=t.toUpperCase();return{barWidth:this[t+"BarWidth"],min:e["default"+i+"Min"],max:e["default"+i+"Max"],step:e["default"+i+"Step"],range_label:t+"Range",step_label:t+"Step"}},o.prototype._initializeRange=function(t,e,i,o){var n=this._collectRangeSettings(e,i),s=this.getColumnRange(t,e);o&&"z"!=e&&s.expand(n.barWidth/2),this._setRangeDefaults(s,n.min,n.max),this[n.range_label]=s,this[n.step_label]=void 0!==n.step?n.step:s.range()/5},o.prototype.getDistinctValues=function(t,e){void 0===e&&(e=this.dataTable);for(var i=[],o=0;os)&&(o=s)}return o},o.prototype.getColumnRange=function(t,e){for(var i=new r,o=0;o0&&(e[i-1].pointNext=e[i]);return e},o.prototype._checkValueField=function(t){if(this.style===h.STYLE.BARCOLOR||this.style===h.STYLE.BARSIZE||this.style===h.STYLE.DOTCOLOR||this.style===h.STYLE.DOTSIZE){if(void 0===this.colValue)throw new Error("Expected data to have field 'style' for graph style '"+this.style+"'");if(void 0===t[0][this.colValue])throw new Error("Expected data to have field '"+this.colValue+"' for graph style '"+this.style+"'")}},t.exports=o},function(t,e,i){function o(){this.min=void 0,this.max=void 0}o.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxi)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=i}},o.prototype.range=function(){return this.max-this.min},o.prototype.center=function(){return(this.min+this.max)/2},t.exports=o},function(t,e,i){var o,n,s;!function(i){n=[],o=i,void 0!==(s="function"==typeof o?o.apply(e,n):o)&&(t.exports=s)}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);-1!==e&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&ft(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==gt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function S(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=R(o);e.timeStamp=_t(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=F(a,h),e.distance=L(a,h),P(i,e),e.offsetDirection=z(e.deltaX,e.deltaY);var d=A(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=bt(d.x)>bt(d.y)?d.x:d.y,e.scale=r?j(r.pointers,o):1,e.rotation=r?B(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==Et&&s.eventType!==Pt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=It&&(h>Ot||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=A(h,d,l);o=u.x,n=u.y,i=bt(u.x)>bt(u.y)?u.x:u.y,s=z(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=bt(e)?t<0?Rt:At:e<0?zt:Lt}function L(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function F(t,e,i){i||(i=Ht);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function B(t,e){return F(e[1],e[0],Wt)+F(t[1],t[0],Wt)}function j(t,e){return L(e[0],e[1],Wt)/L(t[0],t[1],Wt)}function H(){this.evEl=Gt,this.evWin=Vt,this.pressed=!1,C.apply(this,arguments)}function W(){this.evEl=Xt,this.evWin=Zt,C.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=Jt,this.evWin=$t,this.started=!1,C.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Pt|It)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=te,this.targetIds={},C.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(Et|Tt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===Et)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,ee)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o=fe&&e(i.options.event+tt(o))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=32},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return ot.prototype.attrTest.call(this,t)&&(this.state&ce||!(this.state&ce)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=et(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(st,ot,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ce)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(rt,Q,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[se]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Pt|It)&&!n)this.reset();else if(t.eventType&Et)this.reset(),this._timer=h(function(){this.state=me,this.tryEmit()},e.time,this);else if(t.eventType&Pt)return me;return 32},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===me&&(t&&t.eventType&Pt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=_t(),this.manager.emit(this.options.event,this._input)))}}),c(at,ot,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[ae]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ce)}}),c(ht,ot,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ft|Bt,pointers:1},getTouchAction:function(){return nt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Ft|Bt)?e=t.overallVelocity:i&Ft?e=t.overallVelocityX:i&Bt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&bt(e)>this.options.velocity&&t.eventType&Pt},emit:function(t){var e=et(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(dt,Q,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[re]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distanced+i?s+=h()+u-i+t.itemSet.options.margin.item.vertical:r=!1,s=Math.min(s,o-i),{shouldScroll:r,scrollOffset:s,itemTop:l}}var a=i(9),h=i(2),d=i(11),l=i(12),u=i(64),c=i(65),p=i(45),f=i(67),m=i(46),v=i(99),g=i(15).printStyle,y=i(105).allOptions,b=i(105).configureOptions,_=i(71).default,w=i(15).default;o.prototype=new c,o.prototype._createConfigurator=function(){return new _(this,this.dom.container,b)},o.prototype.redraw=function(){this.itemSet&&this.itemSet.markDirty({refreshItems:!0}),this._redraw()},o.prototype.setOptions=function(t){if(!0===w.validate(t,y)&&console.log("%cErrors have been found in the supplied options object.",g),c.prototype.setOptions.call(this,t),"type"in t&&t.type!==this.options.type){this.options.type=t.type;var e=this.itemsData;if(e){var i=this.getSelection();this.setItems(null),this.setItems(e),this.setSelection(i)}}},o.prototype.setItems=function(t){var e;e=t?t instanceof d||t instanceof l?t:new d(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e)},o.prototype.setGroups=function(t){var e;if(t){var i=function(t){return!1!==t.visible};e=t instanceof d||t instanceof l?new l(t,{filter:i}):new d(t.filter(i))}else e=null;this.groupsData=e,this.itemSet.setGroups(e)},o.prototype.setData=function(t){t&&t.groups&&this.setGroups(t.groups),t&&t.items&&this.setItems(t.items)},o.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},o.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},o.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],o=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),n=null,s=null;if(o.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===n||es)&&(s=i)}),null!==n&&null!==s){var a=this,h=this.itemSet.items[i[0]],d=-1*this._getScrollTop(),l=null,u=function(t,e,i){var o=r(a,h);if(l||(l=o),l.itemTop!=o.itemTop||l.shouldScroll){l.itemTop!=o.itemTop&&o.shouldScroll&&(l=o,d=-1*a._getScrollTop());var n=d,s=l.scrollOffset,u=i?s:n+(s-n)*t;a._setScrollTop(-u),e||a._redraw()}},c=function(){var t=r(a,h);t.shouldScroll&&t.itemTop!=l.itemTop&&(a._setScrollTop(-t.scrollOffset),a._redraw())},p=function(){c(),setTimeout(c,100)},f=(n+s)/2,m=Math.max(this.range.end-this.range.start,1.1*(s-n)),v=!e||void 0===e.animation||e.animation;v||(l={shouldScroll:!1,scrollOffset:-1,itemTop:-1}),this.range.setRange(f-m/2,f+m/2,{animation:v},p,u)}}},o.prototype.fit=function(t,e){var i,o=!t||void 0===t.animation||t.animation,n=this.itemsData&&this.itemsData.getDataSet();1===n.length&&void 0===n.get()[0].end?(i=this.getDataRange(),this.moveTo(i.min.valueOf(),{animation:o},e)):(i=this.getItemRange(),this.range.setRange(i.min,i.max,{animation:o},e))},o.prototype.getItemRange=function(){var t=this.getDataRange(),e=null!==t.min?t.min.valueOf():null,i=null!==t.max?t.max.valueOf():null,o=null,r=null;if(null!=e&&null!=i){var a=i-e;a<=0&&(a=10);var d=a/this.props.center.width,l={},u=0;h.forEach(this.itemSet.items,function(t,e){if(t.groupShowing){l[e]=t.redraw(!0),u=l[e].length}});if(u>0)for(var c=0;ci&&(i=h,r=t)}.bind(this)),o&&r){var p=o.getWidthLeft()+10,f=r.getWidthRight()+10,m=this.props.center.width-p-f;m>0&&(this.options.rtl?(e=n(o)-f*a/m,i=s(r)+p*a/m):(e=n(o)-p*a/m,i=s(r)+f*a/m))}}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},o.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=h.convert(i.start,"Date").valueOf(),n=h.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},o.prototype.getEventProperties=function(t){var e,i=t.center?t.center.x:t.clientX,o=t.center?t.center.y:t.clientY;e=this.options.rtl?h.getAbsoluteRight(this.dom.centerContainer)-i:i-h.getAbsoluteLeft(this.dom.centerContainer);var n=o-h.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=m.customTimeFromTarget(t),d=this.itemSet.options.snap||null,l=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(e),p=d?d(c,l,u):c,f=h.getTarget(t),v=null;return null!=s?v="item":null!=a?v="custom-time":h.hasParent(f,this.timeAxis.dom.foreground)?v="axis":this.timeAxis2&&h.hasParent(f,this.timeAxis2.dom.foreground)?v="axis":h.hasParent(f,this.itemSet.dom.labelSet)?v="group-label":h.hasParent(f,this.currentTime.bar)?v="current-time":h.hasParent(f,this.dom.center)&&(v="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:v,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:e,y:n,time:c,snappedTime:p}},o.prototype.toggleRollingMode=function(){this.range.rolling?this.range.stopRolling():(void 0==this.options.rollingMode&&this.setOptions(this.options),this.range.startRolling())},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(19),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(10),u=i(37),c=i(2),p=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),!0===c.isString(t)){if(!0===c.isValidRGB(t)){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(!0===c.isValidRGBA(t)){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(!0===c.isValidHex(t)){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0,s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this;!0===(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&(this.previousColor=c.extend({},this.color)),!0===this.applied&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){!0===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])&&(this.initialColor=c.extend({},t)),this.color=t;var e=c.RGBToHSV(t.r,t.g,t.b),i=2*Math.PI,o=this.r*e.s,n=this.centerCoordinates.x+o*Math.sin(i*e.h),s=this.centerCoordinates.y+o*Math.cos(i*e.h);this.colorPickerSelector.style.left=n-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=s-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d") +;this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(!1===this.generated){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/this.r,d=void 0;for(s=0;s<360;s++)for(r=0;rr?r:t,e=null==e?r:e0&&l.push(u.screenToValue(n)),!p.hidden&&this.itemsData.length>0&&l.push(p.screenToValue(n)),{event:t,what:d,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:r,value:l}},o.prototype._createConfigurator=function(){return new g(this,this.dom.container,v)},t.exports=o},function(t,e,i){e.util=i(2),e.DOMutil=i(14),e.DataSet=i(11),e.DataView=i(12),e.Queue=i(43),e.Network=i(182),e.network={Images:i(116),dotparser:i(114),gephiParser:i(115),allOptions:i(122)},e.network.convertDot=function(t){return e.network.dotparser.DOTToGraph(t)},e.network.convertGephi=function(t,i){return e.network.gephiParser.parseGephi(t,i)},e.moment=i(9),e.Hammer=i(10),e.keycharm=i(35)},function(t,e,i){function o(t,e,i){var n=this;if(!(this instanceof o))throw new SyntaxError("Constructor must be called with the new operator");this.options={},this.defaultOptions={locale:"en",locales:d,clickToUse:!1},s.extend(this.options,this.defaultOptions),this.body={container:t,nodes:{},nodeIndices:[],edges:{},edgeIndices:[],emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this),once:this.once.bind(this)},eventListeners:{onTap:function(){},onTouch:function(){},onDoubleTap:function(){},onHold:function(){},onDragStart:function(){},onDrag:function(){},onDragEnd:function(){},onMouseWheel:function(){},onPinch:function(){},onMouseMove:function(){},onRelease:function(){},onContext:function(){}},data:{nodes:null,edges:null},functions:{createNode:function(){},createEdge:function(){},getPointer:function(){}},modules:{},view:{scale:1,translation:{x:0,y:0}}},this.bindEventListeners(),this.images=new l(function(){return n.body.emitter.emit("_requestRedraw")}),this.groups=new u,this.canvas=new g(this.body),this.selectionHandler=new _(this.body,this.canvas),this.interactionHandler=new b(this.body,this.canvas,this.selectionHandler),this.view=new y(this.body,this.canvas),this.renderer=new v(this.body,this.canvas),this.physics=new f(this.body),this.layoutEngine=new w(this.body),this.clustering=new m(this.body),this.manipulation=new x(this.body,this.canvas,this.selectionHandler),this.nodesHandler=new c(this.body,this.images,this.groups,this.layoutEngine),this.edgesHandler=new p(this.body,this.images,this.groups),this.body.modules.kamadaKawai=new T(this.body,150,.05),this.body.modules.clustering=this.clustering,this.canvas._create(),this.setOptions(i),this.setData(e)}i(183);var n=i(44),s=i(2),r=i(114),a=i(115),h=i(97),d=i(184),l=i(116).default,u=i(186).default,c=i(187).default,p=i(214).default,f=i(220).default,m=i(227).default,v=i(229).default,g=i(230).default,y=i(231).default,b=i(232).default,_=i(234).default,w=i(235).default,x=i(237).default,k=i(71).default,S=i(15).default,D=i(15),M=D.printStyle,C=i(122),O=C.allOptions,E=C.configureOptions,T=i(238).default;n(o.prototype),o.prototype.setOptions=function(t){var e=this;if(void 0!==t){!0===S.validate(t,O)&&console.log("%cErrors have been found in the supplied options object.",M);var i=["locale","locales","clickToUse"];if(s.selectiveDeepExtend(i,this.options,t),t=this.layoutEngine.setOptions(t.layout,t),this.canvas.setOptions(t),this.groups.setOptions(t.groups),this.nodesHandler.setOptions(t.nodes),this.edgesHandler.setOptions(t.edges),this.physics.setOptions(t.physics),this.manipulation.setOptions(t.manipulation,t,this.options),this.interactionHandler.setOptions(t.interaction),this.renderer.setOptions(t.interaction),this.selectionHandler.setOptions(t.interaction),void 0!==t.groups&&this.body.emitter.emit("refreshNodes"),"configure"in t&&(this.configurator||(this.configurator=new k(this,this.body.container,E,this.canvas.pixelRatio)),this.configurator.setOptions(t.configure)),this.configurator&&!0===this.configurator.options.enabled){var o={nodes:{},edges:{},layout:{},interaction:{},manipulation:{},physics:{},global:{}};s.deepExtend(o.nodes,this.nodesHandler.options),s.deepExtend(o.edges,this.edgesHandler.options),s.deepExtend(o.layout,this.layoutEngine.options),s.deepExtend(o.interaction,this.selectionHandler.options),s.deepExtend(o.interaction,this.renderer.options),s.deepExtend(o.interaction,this.interactionHandler.options),s.deepExtend(o.manipulation,this.manipulation.options),s.deepExtend(o.physics,this.physics.options),s.deepExtend(o.global,this.canvas.options),s.deepExtend(o.global,this.options),this.configurator.setModuleOptions(o)}void 0!==t.clickToUse?!0===t.clickToUse?void 0===this.activator&&(this.activator=new h(this.canvas.frame),this.activator.on("change",function(){e.body.emitter.emit("activate")})):(void 0!==this.activator&&(this.activator.destroy(),delete this.activator),this.body.emitter.emit("activate")):this.body.emitter.emit("activate"),this.canvas.setSize(),this.body.emitter.emit("startSimulation")}},o.prototype._updateVisibleIndices=function(){var t=this.body.nodes,e=this.body.edges;this.body.nodeIndices=[],this.body.edgeIndices=[];for(var i in t)t.hasOwnProperty(i)&&(this.clustering._isClusteredNode(i)||!1!==t[i].options.hidden||this.body.nodeIndices.push(t[i].id));for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],s=t[n.fromId],r=t[n.toId],a=void 0!==s&&void 0!==r,h=!this.clustering._isClusteredEdge(o)&&!1===n.options.hidden&&a&&!1===s.options.hidden&&!1===r.options.hidden;h&&this.body.edgeIndices.push(n.id)}},o.prototype.bindEventListeners=function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.edgesHandler._updateState(),t.body.emitter.emit("_dataUpdated")}),this.body.emitter.on("_dataUpdated",function(){t.clustering._updateState(),t._updateVisibleIndices(),t._updateValueRange(t.body.nodes),t._updateValueRange(t.body.edges),t.body.emitter.emit("startSimulation"),t.body.emitter.emit("_requestRedraw")})},o.prototype.setData=function(t){if(this.body.emitter.emit("resetPhysics"),this.body.emitter.emit("_resetData"),this.selectionHandler.unselectAll(),t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(this.setOptions(t&&t.options),t&&t.dot){console.log("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");var e=r.DOTToGraph(t.dot);return void this.setData(e)}if(t&&t.gephi){console.log("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");var i=a.parseGephi(t.gephi);return void this.setData(i)}this.nodesHandler.setData(t&&t.nodes,!0),this.edgesHandler.setData(t&&t.edges,!0),this.body.emitter.emit("_dataChanged"),this.body.emitter.emit("_dataLoaded"),this.body.emitter.emit("initPhysics")},o.prototype.destroy=function(){this.body.emitter.emit("destroy"),this.body.emitter.off(),this.off(),delete this.groups,delete this.canvas,delete this.selectionHandler,delete this.interactionHandler,delete this.view,delete this.renderer,delete this.physics,delete this.layoutEngine,delete this.clustering,delete this.manipulation,delete this.nodesHandler,delete this.edgesHandler,delete this.configurator,delete this.images;for(var t in this.body.nodes)this.body.nodes.hasOwnProperty(t)&&delete this.body.nodes[t];for(var e in this.body.edges)this.body.edges.hasOwnProperty(e)&&delete this.body.edges[e];s.recursiveDOMDelete(this.body.container)},o.prototype._updateValueRange=function(t){var e,i=void 0,o=void 0,n=0;for(e in t)if(t.hasOwnProperty(e)){var s=t[e].getValue();void 0!==s&&(i=void 0===i?s:Math.min(s,i),o=void 0===o?s:Math.max(s,o),n+=s)}if(void 0!==i&&void 0!==o)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,o,n)},o.prototype.isActive=function(){return!this.activator||this.activator.active},o.prototype.setSize=function(){return this.canvas.setSize.apply(this.canvas,arguments)},o.prototype.canvasToDOM=function(){return this.canvas.canvasToDOM.apply(this.canvas,arguments)},o.prototype.DOMtoCanvas=function(){return this.canvas.DOMtoCanvas.apply(this.canvas,arguments)},o.prototype.findNode=function(){return this.clustering.findNode.apply(this.clustering,arguments)},o.prototype.isCluster=function(){return this.clustering.isCluster.apply(this.clustering,arguments)},o.prototype.openCluster=function(){return this.clustering.openCluster.apply(this.clustering,arguments)},o.prototype.cluster=function(){return this.clustering.cluster.apply(this.clustering,arguments)},o.prototype.getNodesInCluster=function(){return this.clustering.getNodesInCluster.apply(this.clustering,arguments)},o.prototype.clusterByConnection=function(){return this.clustering.clusterByConnection.apply(this.clustering,arguments)},o.prototype.clusterByHubsize=function(){return this.clustering.clusterByHubsize.apply(this.clustering,arguments)},o.prototype.clusterOutliers=function(){return this.clustering.clusterOutliers.apply(this.clustering,arguments)},o.prototype.getSeed=function(){return this.layoutEngine.getSeed.apply(this.layoutEngine,arguments)},o.prototype.enableEditMode=function(){return this.manipulation.enableEditMode.apply(this.manipulation,arguments)},o.prototype.disableEditMode=function(){return this.manipulation.disableEditMode.apply(this.manipulation,arguments)},o.prototype.addNodeMode=function(){return this.manipulation.addNodeMode.apply(this.manipulation,arguments)},o.prototype.editNode=function(){return this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.editNodeMode=function(){return console.log("Deprecated: Please use editNode instead of editNodeMode."),this.manipulation.editNode.apply(this.manipulation,arguments)},o.prototype.addEdgeMode=function(){return this.manipulation.addEdgeMode.apply(this.manipulation,arguments)},o.prototype.editEdgeMode=function(){return this.manipulation.editEdgeMode.apply(this.manipulation,arguments)},o.prototype.deleteSelected=function(){return this.manipulation.deleteSelected.apply(this.manipulation,arguments)},o.prototype.getPositions=function(){return this.nodesHandler.getPositions.apply(this.nodesHandler,arguments)},o.prototype.storePositions=function(){return this.nodesHandler.storePositions.apply(this.nodesHandler,arguments)},o.prototype.moveNode=function(){return this.nodesHandler.moveNode.apply(this.nodesHandler,arguments)},o.prototype.getBoundingBox=function(){return this.nodesHandler.getBoundingBox.apply(this.nodesHandler,arguments)},o.prototype.getConnectedNodes=function(t){return void 0!==this.body.nodes[t]?this.nodesHandler.getConnectedNodes.apply(this.nodesHandler,arguments):this.edgesHandler.getConnectedNodes.apply(this.edgesHandler,arguments)},o.prototype.getConnectedEdges=function(){return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler,arguments)},o.prototype.startSimulation=function(){return this.physics.startSimulation.apply(this.physics,arguments)},o.prototype.stopSimulation=function(){return this.physics.stopSimulation.apply(this.physics,arguments)},o.prototype.stabilize=function(){return this.physics.stabilize.apply(this.physics,arguments)},o.prototype.getSelection=function(){return this.selectionHandler.getSelection.apply(this.selectionHandler,arguments)},o.prototype.setSelection=function(){return this.selectionHandler.setSelection.apply(this.selectionHandler,arguments)},o.prototype.getSelectedNodes=function(){return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler,arguments)},o.prototype.getSelectedEdges=function(){return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler,arguments)},o.prototype.getNodeAt=function(){var t=this.selectionHandler.getNodeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},o.prototype.getEdgeAt=function(){var t=this.selectionHandler.getEdgeAt.apply(this.selectionHandler,arguments);return void 0!==t&&void 0!==t.id?t.id:t},o.prototype.selectNodes=function(){return this.selectionHandler.selectNodes.apply(this.selectionHandler,arguments)},o.prototype.selectEdges=function(){return this.selectionHandler.selectEdges.apply(this.selectionHandler,arguments)},o.prototype.unselectAll=function(){this.selectionHandler.unselectAll.apply(this.selectionHandler,arguments),this.redraw()},o.prototype.redraw=function(){return this.renderer.redraw.apply(this.renderer,arguments)},o.prototype.getScale=function(){return this.view.getScale.apply(this.view,arguments)},o.prototype.getViewPosition=function(){return this.view.getViewPosition.apply(this.view,arguments)},o.prototype.fit=function(){return this.view.fit.apply(this.view,arguments)},o.prototype.moveTo=function(){return this.view.moveTo.apply(this.view,arguments)},o.prototype.focus=function(){return this.view.focus.apply(this.view,arguments)},o.prototype.releaseNode=function(){return this.view.releaseNode.apply(this.view,arguments)},o.prototype.getOptionsFromConfigurator=function(){var t={};return this.configurator&&(t=this.configurator.getOptions.apply(this.configurator)),t},t.exports=o},function(t,e,i){"undefined"!=typeof CanvasRenderingContext2D&&(CanvasRenderingContext2D.prototype.circle=function(t,e,i){this.beginPath(),this.arc(t,e,i,0,2*Math.PI,!1),this.closePath()},CanvasRenderingContext2D.prototype.square=function(t,e,i){this.beginPath(),this.rect(t-i,e-i,2*i,2*i),this.closePath()},CanvasRenderingContext2D.prototype.triangle=function(t,e,i){this.beginPath(),i*=1.15,e+=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e-(r-s)),this.lineTo(t+n,e+s),this.lineTo(t-n,e+s),this.lineTo(t,e-(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.triangleDown=function(t,e,i){this.beginPath(),i*=1.15,e-=.275*i;var o=2*i,n=o/2,s=Math.sqrt(3)/6*o,r=Math.sqrt(o*o-n*n);this.moveTo(t,e+(r-s)),this.lineTo(t+n,e-s),this.lineTo(t-n,e-s),this.lineTo(t,e+(r-s)),this.closePath()},CanvasRenderingContext2D.prototype.star=function(t,e,i){this.beginPath(),i*=.82,e+=.1*i;for(var o=0;o<10;o++){var n=o%2==0?1.3*i:.5*i;this.lineTo(t+n*Math.sin(2*o*Math.PI/10),e-n*Math.cos(2*o*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.diamond=function(t,e,i){this.beginPath(),this.lineTo(t,e+i),this.lineTo(t+i,e),this.lineTo(t,e-i),this.lineTo(t-i,e),this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,o,n){var s=Math.PI/180;i-2*n<0&&(n=i/2),o-2*n<0&&(n=o/2),this.beginPath(),this.moveTo(t+n,e),this.lineTo(t+i-n,e),this.arc(t+i-n,e+n,n,270*s,360*s,!1),this.lineTo(t+i,e+o-n),this.arc(t+i-n,e+o-n,n,0,90*s,!1),this.lineTo(t+n,e+o),this.arc(t+n,e+o-n,n,90*s,180*s,!1),this.lineTo(t,e+n),this.arc(t+n,e+n,n,180*s,270*s,!1),this.closePath()},CanvasRenderingContext2D.prototype.ellipse_vis=function(t,e,i,o){var n=i/2*.5522848,s=o/2*.5522848,r=t+i,a=e+o,h=t+i/2,d=e+o/2;this.beginPath(),this.moveTo(t,d),this.bezierCurveTo(t,d-s,h-n,e,h,e),this.bezierCurveTo(h+n,e,r,d-s,r,d),this.bezierCurveTo(r,d+s,h+n,a,h,a),this.bezierCurveTo(h-n,a,t,d+s,t,d),this.closePath()},CanvasRenderingContext2D.prototype.database=function(t,e,i,o){var n=i,s=o*(1/3),r=n/2*.5522848,a=s/2*.5522848,h=t+n,d=e+s,l=t+n/2,u=e+s/2,c=e+(o-s/2),p=e+o;this.beginPath(),this.moveTo(h,u),this.bezierCurveTo(h,u+a,l+r,d,l,d),this.bezierCurveTo(l-r,d,t,u+a,t,u),this.bezierCurveTo(t,u-a,l-r,e,l,e),this.bezierCurveTo(l+r,e,h,u-a,h,u),this.lineTo(h,c),this.bezierCurveTo(h,c+a,l+r,p,l,p),this.bezierCurveTo(l-r,p,t,c+a,t,c),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,o,n){this.beginPath(),this.moveTo(t,e);for(var s=n.length,r=i-t,a=o-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,u=!0,c=0,p=n[0];d>=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=r<0?-c:c,t+=c,e+=h*c,!0===u?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u},CanvasRenderingContext2D.prototype.hexagon=function(t,e,i){this.beginPath();var o=2*Math.PI/6;this.moveTo(t+i,e);for(var n=1;n<6;n++)this.lineTo(t+i*Math.cos(o*n),e+i*Math.sin(o*n));this.closePath()})},function(t,e,i){e.en={edit:"Edit",del:"Delete selected",back:"Back",addNode:"Add Node",addEdge:"Add Edge",editNode:"Edit Node",editEdge:"Edit Edge",addDescription:"Click in an empty space to place a new node.",edgeDescription:"Click on a node and drag the edge to another node to connect them.",editEdgeDescription:"Click on the control points and drag them to a node to connect to it.",createEdgeError:"Cannot link edges to a cluster.",deleteClusterError:"Clusters cannot be deleted.",editClusterError:"Clusters cannot be edited."},e.en_EN=e.en,e.en_US=e.en,e.de={edit:"Editieren",del:"Lösche Auswahl",back:"Zurück",addNode:"Knoten hinzufügen",addEdge:"Kante hinzufügen",editNode:"Knoten editieren",editEdge:"Kante editieren",addDescription:"Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.",edgeDescription:"Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.",editEdgeDescription:"Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.",createEdgeError:"Es ist nicht möglich, Kanten mit Clustern zu verbinden.",deleteClusterError:"Cluster können nicht gelöscht werden.",editClusterError:"Cluster können nicht editiert werden."},e.de_DE=e.de,e.es={edit:"Editar",del:"Eliminar selección",back:"Átras",addNode:"Añadir nodo",addEdge:"Añadir arista",editNode:"Editar nodo",editEdge:"Editar arista",addDescription:"Haga clic en un lugar vacío para colocar un nuevo nodo.",edgeDescription:"Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.",editEdgeDescription:"Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.",createEdgeError:"No se puede conectar una arista a un grupo.",deleteClusterError:"No es posible eliminar grupos.",editClusterError:"No es posible editar grupos."},e.es_ES=e.es,e.it={edit:"Modifica",del:"Cancella la selezione",back:"Indietro",addNode:"Aggiungi un nodo",addEdge:"Aggiungi un vertice",editNode:"Modifica il nodo",editEdge:"Modifica il vertice",addDescription:"Clicca per aggiungere un nuovo nodo",edgeDescription:"Clicca su un nodo e trascinalo ad un altro nodo per connetterli.",editEdgeDescription:"Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.",createEdgeError:"Non si possono collegare vertici ad un cluster",deleteClusterError:"I cluster non possono essere cancellati",editClusterError:"I clusters non possono essere modificati."},e.it_IT=e.it,e.nl={edit:"Wijzigen",del:"Selectie verwijderen",back:"Terug",addNode:"Node toevoegen",addEdge:"Link toevoegen",editNode:"Node wijzigen",editEdge:"Link wijzigen",addDescription:"Klik op een leeg gebied om een nieuwe node te maken.",edgeDescription:"Klik op een node en sleep de link naar een andere node om ze te verbinden.",editEdgeDescription:"Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.",createEdgeError:"Kan geen link maken naar een cluster.",deleteClusterError:"Clusters kunnen niet worden verwijderd.",editClusterError:"Clusters kunnen niet worden aangepast."},e.nl_NL=e.nl,e.nl_BE=e.nl,e["pt-br"]={edit:"Editar",del:"Remover selecionado",back:"Voltar",addNode:"Adicionar nó",addEdge:"Adicionar aresta",editNode:"Editar nó",editEdge:"Editar aresta",addDescription:"Clique em um espaço em branco para adicionar um novo nó",edgeDescription:"Clique em um nó e arraste a aresta até outro nó para conectá-los",editEdgeDescription:"Clique nos pontos de controle e os arraste para um nó para conectá-los",createEdgeError:"Não foi possível linkar arestas a um cluster.",deleteClusterError:"Clusters não puderam ser removidos.",editClusterError:"Clusters não puderam ser editados."},e["pt-BR"]=e["pt-br"],e.pt_BR=e["pt-br"],e.pt_br=e["pt-br"],e.ru={edit:"Редактировать",del:"Удалить выбранное",back:"Назад",addNode:"Добавить узел",addEdge:"Добавить ребро",editNode:"Редактировать узел",editEdge:"Редактировать ребро",addDescription:"Кликните в свободное место, чтобы добавить новый узел.",edgeDescription:"Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.",editEdgeDescription:"Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.",createEdgeError:"Невозможно соединить ребра в кластер.",deleteClusterError:"Кластеры не могут быть удалены",editClusterError:"Кластеры недоступны для редактирования."},e.ru_RU=e.ru,e.cn={edit:"编辑",del:"åˆ é™¤é€‰å®š",back:"返回",addNode:"æ·»åŠ èŠ‚ç‚¹",addEdge:"æ·»åŠ è¿žæŽ¥çº¿",editNode:"编辑节点",editEdge:"编辑连接线",addDescription:"单击空白处放置新节点。",edgeDescription:"单击某个节点并将该连接线拖动到另一个节点以连接它们。",editEdgeDescription:"单击控制节点并将它们拖到节点上连接。",createEdgeError:"æ— æ³•å°†è¿žæŽ¥çº¿è¿žæŽ¥åˆ°ç¾¤é›†ã€‚",deleteClusterError:"æ— æ³•åˆ é™¤ç¾¤é›†ã€‚",editClusterError:"æ— æ³•ç¼–è¾‘ç¾¤é›†ã€‚"},e.zh_CN=e.cn},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=function(){function t(){(0,s.default)(this,t),this.NUM_ITERATIONS=4,this.image=new Image,this.canvas=document.createElement("canvas")}return(0,a.default)(t,[{key:"init",value:function(){if(!this.initialized()){this.src=this.image.src;var t=this.image.width,e=this.image.height;this.width=t,this.height=e;var i=Math.floor(e/2),o=Math.floor(e/4),n=Math.floor(e/8),s=Math.floor(e/16),r=Math.floor(t/2),a=Math.floor(t/4),h=Math.floor(t/8),d=Math.floor(t/16);this.canvas.width=3*a,this.canvas.height=i,this.coordinates=[[0,0,r,i],[r,0,a,o],[r,o,h,n],[5*h,o,d,s]],this._fillMipMap()}}},{key:"initialized",value:function(){return void 0!==this.coordinates}},{key:"_fillMipMap",value:function(){var t=this.canvas.getContext("2d"),e=this.coordinates[0];t.drawImage(this.image,e[0],e[1],e[2],e[3]);for(var i=1;i2){e*=.5;for(var r=0;e>2&&r=this.NUM_ITERATIONS&&(r=this.NUM_ITERATIONS-1);var a=this.coordinates[r];t.drawImage(this.canvas,a[0],a[1],a[2],a[3],i,o,n,s)}else t.drawImage(this.image,i,o,n,s)}}]),t}();e.default=h},function(t,e,i){ +function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=function(){function t(){(0,s.default)(this,t),this.clear(),this.defaultIndex=0,this.groupsArray=[],this.groupIndex=0,this.defaultGroups=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}},{border:"#990000",background:"#EE0000",highlight:{border:"#BB0000",background:"#FF3333"},hover:{border:"#BB0000",background:"#FF3333"}},{border:"#FF6000",background:"#FF6000",highlight:{border:"#FF6000",background:"#FF6000"},hover:{border:"#FF6000",background:"#FF6000"}},{border:"#97C2FC",background:"#2B7CE9",highlight:{border:"#D2E5FF",background:"#2B7CE9"},hover:{border:"#D2E5FF",background:"#2B7CE9"}},{border:"#399605",background:"#255C03",highlight:{border:"#399605",background:"#255C03"},hover:{border:"#399605",background:"#255C03"}},{border:"#B70054",background:"#FF007E",highlight:{border:"#B70054",background:"#FF007E"},hover:{border:"#B70054",background:"#FF007E"}},{border:"#AD85E4",background:"#7C29F0",highlight:{border:"#D3BDF0",background:"#7C29F0"},hover:{border:"#D3BDF0",background:"#7C29F0"}},{border:"#4557FA",background:"#000EA1",highlight:{border:"#6E6EFD",background:"#000EA1"},hover:{border:"#6E6EFD",background:"#000EA1"}},{border:"#FFC0CB",background:"#FD5A77",highlight:{border:"#FFD1D9",background:"#FD5A77"},hover:{border:"#FFD1D9",background:"#FD5A77"}},{border:"#C2FABC",background:"#74D66A",highlight:{border:"#E6FFE3",background:"#74D66A"},hover:{border:"#E6FFE3",background:"#74D66A"}},{border:"#EE0000",background:"#990000",highlight:{border:"#FF3333",background:"#BB0000"},hover:{border:"#FF3333",background:"#BB0000"}}],this.options={},this.defaultOptions={useDefaultGroups:!0},h.extend(this.options,this.defaultOptions)}return(0,a.default)(t,[{key:"setOptions",value:function(t){var e=["useDefaultGroups"];if(void 0!==t)for(var i in t)if(t.hasOwnProperty(i)&&-1===e.indexOf(i)){var o=t[i];this.add(i,o)}}},{key:"clear",value:function(){this.groups={},this.groupsArray=[]}},{key:"get",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.groups[t];if(void 0===i&&e)if(!1===this.options.useDefaultGroups&&this.groupsArray.length>0){var o=this.groupIndex%this.groupsArray.length;this.groupIndex++,i={},i.color=this.groups[this.groupsArray[o]],this.groups[t]=i}else{var n=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,i={},i.color=this.defaultGroups[n],this.groups[t]=i}return i}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(11),l=i(12),u=i(47).default,c=function(){function t(e,i,o,n){var r=this;if((0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data,e.oldData)},remove:function(t,e){r.remove(e.items)}},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"monospace",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},this.defaultOptions.mass<=0)throw"Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";this.options=h.bridgeObject(this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){h.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){if(u.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font)for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i].needsRefresh());if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o].needsRefresh();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.data.nodes;if(t instanceof d||t instanceof l)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new d,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new d}if(i&&h.forEach(this.nodesListeners,function(t,e){i.off(e,t)}),this.body.nodes={},this.body.data.nodes){var o=this;h.forEach(this.nodesListeners,function(t,e){o.body.data.nodes.on(e,t)});var n=this.body.data.nodes.getIds();this.add(n,!0)}!1===e&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:u)(t,this.body,this.images,this.groups,this.options,this.defaultOptions)}},{key:"refresh",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];h.forEach(this.body.nodes,function(i,o){var n=t.body.data.nodes.get(o);void 0!==n&&(!0===e&&i.setOptions({x:null,y:null}),i.setOptions({fixed:!1}),i.setOptions(n))})}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(!0===Array.isArray(t)){for(var i=0;i0)for(var r=0;r0)for(var p=0;p0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.positionthis.parent.fontOptions.maxWdt}},{key:"getLongestFit",value:function(t){for(var e="",i=0;i1&&void 0!==arguments[1]?arguments[1]:"normal",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t.replace(/^( +)/g,"$1\r"),t=t.replace(/([^\r][^ ]*)( +)/g,"$1\r$2\r");for(var o=t.split("\r");o.length>0;){var n=this.getLongestFit(o);if(0===n){var s=o[0],r=this.getLongestFitWord(s);this.lines.newLine(s.slice(0,r),e),o[0]=s.slice(r)}else{var a=n;" "===o[n-1]?n--:" "===o[a]&&a++;var h=o.slice(0,n).join("");n==o.length&&i?this.lines.append(h,e):this.lines.newLine(h,e),o=o.slice(a)}}}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(90),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=function(){function t(e){(0,a.default)(this,t),this.measureText=e,this.current=0,this.width=0,this.height=0,this.lines=[]}return(0,d.default)(t,[{key:"_add",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"normal";void 0===this.lines[t]&&(this.lines[t]={width:0,height:0,blocks:[]});var o=e;void 0!==e&&""!==e||(o=" ");var n=this.measureText(o,i),r=(0,s.default)({},n.values);r.text=e,r.width=n.width,r.mod=i,void 0!==e&&""!==e||(r.width=0),this.lines[t].blocks.push(r),this.lines[t].width+=r.width}},{key:"curWidth",value:function(){var t=this.lines[this.current];return void 0===t?0:t.width}},{key:"append",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e)}},{key:"newLine",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"normal";this._add(this.current,t,e),this.current++}},{key:"determineLineHeights",value:function(){for(var t=0;tt&&(t=o.width),e+=o.height}this.width=t,this.height=e}},{key:"removeEmptyBlocks",value:function(){for(var t=[],e=0;e1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.width=o.width+this.margin.right+this.margin.left,this.height=o.height+this.margin.top+this.margin.bottom,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this._updateBoundingBox(t,e,i,o,n);var s=this.options.shapeProperties.borderRadius;this._addBoundingBoxMargin(s)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){i(195),t.exports=i(7).Object.getPrototypeOf},function(t,e,i){var o=i(41),n=i(85);i(87)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){t.exports={default:i(197),__esModule:!0}},function(t,e,i){i(198),t.exports=i(7).Object.setPrototypeOf},function(t,e,i){var o=i(17);o(o.S,"Object",{setPrototypeOf:i(199).set})},function(t,e,i){var o=i(32),n=i(27),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(80)(Function.call,i(89).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=Math.max(o.width+this.margin.right+this.margin.left,o.height+this.margin.top+this.margin.bottom);this.options.size=n/2,this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,this.height=o,void(this.radius=.5*this.width)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i),n=o.width+this.margin.right+this.margin.left;this.width=n,this.height=n,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.initContextForDraw(t,s),t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(this.needsRefresh(e,i)){var o=this.getDimensionsFromLabel(t,e,i);this.height=2*o.height,this.width=o.width+o.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height,this.initContextForDraw(t,s),t.ellipse_vis(this.left,this.top,this.width,this.height),this.performFill(t,s),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+5,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+5)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(73),m=o(f),v=function(t){function e(t,i,o,n,r){(0,a.default)(this,e);var h=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return h.setImages(n,r),h}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height){var o=2*this.options.size;return this.width=o,void(this.height=o)}this.needsRefresh(e,i)&&this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.switchImages(o),this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,!0===this.options.shapeProperties.useBorderWithImage){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),this.performStroke(t,s),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this._updateBoundingBox(t,e),void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)} +}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"hexagon",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(23),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){this.needsRefresh(e,i)&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(24),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(11),l=i(12),u=i(74).default,c=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},h.deepExtend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){var i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];"dynamic"===e&&(e="continuous");var o=!1;for(var n in t.body.edges)if(t.body.edges.hasOwnProperty(n)){var s=t.body.edges[n],r=t.body.data.edges._data[n];if(void 0!==r){var a=r.smooth;void 0!==a&&!0===a.enabled&&"dynamic"===a.type&&(void 0===e?s.setOptions({smooth:!1}):s.setOptions({smooth:{type:e}}),o=!0)}}!0===i&&!0===o&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){h.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(void 0!==t){u.parseOptions(this.options,t,!0,this.defaultOptions,!0);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font)for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule();void 0===t.hidden&&void 0===t.physics&&!0!==e||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof d||t instanceof l)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new d,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new d}if(o&&h.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){h.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"),!1===i&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;n1&&void 0!==arguments[1])||arguments[1];if(0!==t.length){var i=this.body.edges;h.forEach(t,function(t){var e=i[t];void 0!==e&&e.remove()}),e&&this.body.emitter.emit("_dataChanged")}}},{key:"refresh",value:function(){var t=this;h.forEach(this.body.edges,function(e,i){var o=t.body.data.edges._data[i];void 0!==o&&e.setOptions(o)})}},{key:"create",value:function(t){return new u(t,this.body,this.options,this.defaultOptions)}},{key:"reconnectEdges",value:function(){var t,e=this.body.nodes,i=this.body.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[]);for(t in i)if(i.hasOwnProperty(t)){var o=i[t];o.from=null,o.to=null,o.connect()}}},{key:"getConnectedNodes",value:function(t){var e=[];if(void 0!==this.body.edges[t]){var i=this.body.edges[t];void 0!==i.fromId&&e.push(i.fromId),void 0!==i.toId&&e.push(i.toId)}return e}},{key:"_updateState",value:function(){this._addMissingEdges(),this._removeInvalidEdges()}},{key:"_removeInvalidEdges",value:function(){var t=this,e=[];h.forEach(this.body.edges,function(i,o){var n=t.body.nodes[i.toId],s=t.body.nodes[i.fromId];void 0!==n&&!0===n.isCluster||void 0!==s&&!0===s.isCluster||void 0!==n&&void 0!==s||e.push(o)}),this.remove(e,!1)}},{key:"_addMissingEdges",value:function(){var t=this.body.edges,e=this.body.data.edges,i=[];e.forEach(function(e,o){void 0===t[o]&&i.push(o)}),this.add(i,!0)}}]),t}();e.default=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(3),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(4),p=o(c),f=i(5),m=o(f),v=i(216),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];this._bezierCurve(t,e,o,n)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||!0===this.options.smooth.forceDirection||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];return a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3),{x:a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,y:a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(75),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){this._bezierCurve(t,e,i)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o){var r=void 0,a=void 0;r=a=n<=s?i*s:i*n,this.from.x>this.to.x&&(r=-r),this.from.y>=this.to.y&&(a=-a),t=this.from.x+r,e=this.from.y+a,"discrete"===o&&(n<=s?t=nthis.to.x&&(_=-_),this.from.y>=this.to.y&&(w=-w),t=this.from.x+_,e=this.from.y+w,n<=s?t=this.from.x<=this.to.x?this.to.xt?this.to.x:t:e=this.from.y>=this.to.y?this.to.y>e?this.to.y:e:this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t;return{x:Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,y:Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(118),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(120).default,u=i(221).default,c=i(222).default,p=i(223).default,f=i(224).default,m=i(121).default,v=i(225).default,g=i(226).default,y=i(2),b=i(119).default,_=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},y.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),!0===t.ready&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){!0===t.ready&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(!1===t?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):!0===t?(this.options.enabled=!0,this.physicsEnabled=!0,this.startSimulation()):(this.physicsEnabled=!0,y.selectiveNotDeepExtend(["stabilization"],this.options,t),y.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),!1===this.options.enabled&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new v(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new g(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new u(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new c(this.body,this.physicsBody,t),this.edgesSolver=new f(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new l(this.body,this.physicsBody,t),this.edgesSolver=new p(this.body,this.physicsBody,t),this.gravitySolver=new m(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?!0===this.options.stabilization.enabled?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){!0===this.physicsEnabled&&!0===this.options.enabled?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,!0===t&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,!0===t&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick(),(Date.now()-t<.4*this.simulationInterval||!0===this.runDoubleSpeed)&&!1===this.stabilized&&(this.physicsTick(),this.runDoubleSpeed=!0),!0===this.stabilized&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||!0===this.startedStabilization)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsStep",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve(),this.moveNodes()}},{key:"adjustTimeStep",value:function(){!0===this._evaluateStepQuality()?this.timestep=1.2*this.timestep:this.timestep/1.2.3))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=0,i=0,o=0;oo&&(t=t>0?o:-o),t}},{key:"_performStep",value:function(t){var e=this.body.nodes[t],i=this.physicsBody.forces[t],o=this.physicsBody.velocities[t];return this.previousStates[t]={x:e.x,y:e.y,vx:o.x,vy:o.y},!1===e.options.fixed.x?(o.x=this.calculateComponentVelocity(o.x,i.x,e.options.mass),e.x+=o.x*this.timestep):(i.x=0,o.x=0),!1===e.options.fixed.y?(o.y=this.calculateComponentVelocity(o.y,i.y,e.options.mass),e.y+=o.y*this.timestep):(i.y=0,o.y=0),Math.sqrt(Math.pow(o.x,2)+Math.pow(o.y,2))}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)if(t.hasOwnProperty(e)&&t[e].x&&t[e].y){var i=t[e].options.fixed;this.freezeCache[e]={x:i.x,y:i.y},i.x=!0,i.y=!0}}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;if("number"!=typeof e&&(e=this.options.stabilization.iterations,console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",e)),0===this.physicsBody.physicsNodeIndices.length)return void(this.ready=!0);this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,!0===this.options.stabilization.onlyDynamicEdges&&this._freezeNodes(),this.stabilizationIterations=0,setTimeout(function(){return t._stabilizationBatch()},0)}},{key:"_startStabilizing",value:function(){return!0!==this.startedStabilization&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0,!0)}},{key:"_stabilizationBatch",value:function(){var t=this,e=function(){return!1===t.stabilized&&t.stabilizationIterations0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(6),a=o(r),h=i(0),d=o(h),l=i(1),u=o(l),c=i(2),p=i(76).default,f=i(228).default,m=i(74).default,v=i(47).default,g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===(void 0===t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===e.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");e=this._checkOptions(e);var o={},n={};c.forEach(this.body.nodes,function(i,s){var r=p.cloneOptions(i);!0===e.joinCondition(r)&&(o[s]=i,c.forEach(i.edges,function(e){void 0===t.clusteredEdges[e.id]&&(n[e.id]=e)}))}),this._cluster(o,n,e,i)}},{key:"clusterByEdgeCount",value:function(t,e){var i=this,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var n=[],r={},a=void 0,h=void 0,d=void 0,l=0;l0&&(0,s.default)(m).length>0&&!0===b)if(c=function(){for(var t=0;t1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],p=0;p0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=c.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var h in t)if(t.hasOwnProperty(h)){var d=p.cloneOptions(t[h]);a.push(d)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var m=p.cloneOptions(e[u],"edge");l.push(m)}if(!(r=i.processProperties(r,a,l)))throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+c.randomUUID());var v=r.id;void 0===r.label&&(r.label="cluster");var g=void 0;void 0===r.x&&(g=this._getClusterPosition(t),r.x=g.x),void 0===r.y&&(void 0===g&&(g=this._getClusterPosition(t)),r.y=g.y),r.id=v;var y=this.body.functions.createNode(r,f);y.containedNodes=t,y.containedEdges=e,y.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=y,this._clusterEdges(t,e,r,i.clusterEdgeProperties),r.id=void 0,!0===o&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?!0===this.body.nodes[t].isCluster:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,h=1;ho?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");var o=this.body.nodes[t];if(void 0===o)throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(!0!==o.isCluster||void 0===o.containedNodes||void 0===o.containedEdges)throw new Error("The node:"+t+" is not a valid cluster.");var n=this.findNode(t),s=n.indexOf(t)-1;if(s>=0){var r=n[s];return this.body.nodes[r]._openChildCluster(t),delete this.body.nodes[t],void(!0===i&&this.body.emitter.emit("_dataChanged"))}var a=o.containedNodes,h=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var d={},l={x:o.x,y:o.y};for(var u in a)if(a.hasOwnProperty(u)){var p=this.body.nodes[u];d[u]={x:p.x,y:p.y}}var f=e.releaseFunction(l,d);for(var m in a)if(a.hasOwnProperty(m)){var v=this.body.nodes[m];void 0!==f[m]&&(v.x=void 0===f[m].x?o.x:f[m].x,v.y=void 0===f[m].y?o.y:f[m].y)}}else c.forEach(a,function(t){!1===t.options.fixed.x&&(t.x=o.x),!1===t.options.fixed.y&&(t.y=o.y)});for(var g in a)if(a.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_0&&n<100;){var s=e.pop();if(void 0!==s){var r=this.body.edges[s];if(void 0!==r){n++;var a=r.clusteringEdgeReplacingIds;if(void 0===a)o.push(s);else for(var h=0;ho&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}},{key:"_createClusteredEdge",value:function(t,e,i,o,n){var s=p.cloneOptions(i,"edge");c.deepExtend(s,o),s.from=t,s.to=e,s.id="clusterEdge:"+c.randomUUID(),void 0!==n&&c.deepExtend(s,n);var r=this.body.functions.createEdge(s);return r.clusteringEdgeReplacingIds=[i.id],r.connect(),this.body.edges[r.id]=r,r}},{key:"_clusterEdges",value:function(t,e,i,o){if(e instanceof m){var n=e,s={};s[n.id]=n,e=s}if(t instanceof v){var r=t,a={};a[r.id]=r,t=a}if(void 0===i||null===i)throw new Error("_clusterEdges: parameter clusterNode required");void 0===o&&(o=i.clusterEdgeProperties),this._createClusterEdges(t,e,i,o);for(var h in e)if(e.hasOwnProperty(h)&&void 0!==this.body.edges[h]){var d=this.body.edges[h];this._backupEdgeOptions(d),d.setOptions({physics:!1})}for(var l in t)t.hasOwnProperty(l)&&(this.clusteredNodes[l]={clusterId:i.id,node:this.body.nodes[l]},this.body.nodes[l].setOptions({physics:!1}))}},{key:"_getClusterNodeForNode",value:function(t){if(void 0!==t){var e=this.clusteredNodes[t];if(void 0!==e){var i=e.clusterId;if(void 0!==i)return this.body.nodes[i]}}}},{key:"_filter",value:function(t,e){var i=[];return c.forEach(t,function(t){e(t)&&i.push(t)}),i}},{key:"_updateState",value:function(){var t=this,e=void 0,i=[],o=[],n=function(e){c.forEach(t.body.nodes,function(t){!0===t.isCluster&&e(t)})};for(e in this.clusteredNodes)if(this.clusteredNodes.hasOwnProperty(e)){var r=this.body.nodes[e];void 0===r&&i.push(e)}n(function(t){for(var e=0;e0}e.endPointsValid()&&n||o.push(i)}),n(function(e){c.forEach(o,function(i){delete e.containedEdges[i],c.forEach(e.edges,function(n,s){if(n.id===i)return void(e.edges[s]=null);n.clusteringEdgeReplacingIds=t._filter(n.clusteringEdgeReplacingIds,function(t){return-1===o.indexOf(t)})}),e.edges=t._filter(e.edges,function(t){return null!==t})})}),c.forEach(o,function(e){delete t.clusteredEdges[e]}),c.forEach(o,function(e){delete t.body.edges[e]});var h=(0,s.default)(this.body.edges);c.forEach(h,function(e){var i=t.body.edges[e],o=t._isClusteredNode(i.fromId)||t._isClusteredNode(i.toId);if(o!==t._isClusteredEdge(i.id)){if(!o)throw new Error("remove edge from clustering not implemented!");var n=t._getClusterNodeForNode(i.fromId);void 0!==n&&t._clusterEdges(t.body.nodes[i.fromId],i,n);var s=t._getClusterNodeForNode(i.toId);void 0!==s&&t._clusterEdges(t.body.nodes[i.toId],i,s)}});for(var d=!1,l=!0;l;)!function(){var e=[];n(function(t){var i=(0,s.default)(t.containedNodes).length,o=!0===t.options.allowSingleNodeCluster;(o&&i<1||!o&&i<2)&&e.push(t.id)});for(var i=0;i0,d=d||l}();d&&this._updateState()}},{key:"_isClusteredNode",value:function(t){return void 0!==this.clusteredNodes[t]}},{key:"_isClusteredEdge",value:function(t){return void 0!==this.clusteredEdges[t]}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(3),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(4),u=o(l),c=i(5),p=o(c),f=i(2),m=i(47).default,v=function(t){function e(t,i,o,n,r,h){(0,a.default)(this,e);var d=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o,n,r,h));return d.isCluster=!0,d.containedNodes={},d.containedEdges={},d}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_openChildCluster",value:function(t){var e=this,i=this.body.nodes[t];if(void 0===this.containedNodes[t])throw new Error("node with id: "+t+" not in current cluster");if(!i.isCluster)throw new Error("node with id: "+t+" is not a cluster");delete this.containedNodes[t],f.forEach(i.edges,function(t){delete e.containedEdges[t.id]}),f.forEach(i.containedNodes,function(t,i){e.containedNodes[i]=t}),i.containedNodes={},f.forEach(i.containedEdges,function(t,i){e.containedEdges[i]=t}),i.containedEdges={},f.forEach(i.edges,function(t){f.forEach(e.edges,function(i){var o=i.clusteringEdgeReplacingIds.indexOf(t.id);-1!==o&&(f.forEach(t.clusteringEdgeReplacingIds,function(t){i.clusteringEdgeReplacingIds.push(t),e.body.edges[t].edgeReplacedById=i.id}),i.clusteringEdgeReplacingIds.splice(o,1))})}),i.edges=[]}}]),e}(m);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(){var t;void 0!==window&&(t=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),window.requestAnimationFrame=void 0===t?function(t){t()}:t}Object.defineProperty(e,"__esModule",{value:!0});var s=i(0),r=o(s),a=i(1),h=o(a),d=i(2),l=function(){function t(e,i){(0,r.default)(this,t),n(),this.body=e,this.canvas=i,this.redrawRequested=!1,this.renderTimer=void 0,this.requiresTimeout=!0,this.renderingActive=!1,this.renderRequests=0,this.allowRedraw=!0,this.dragging=!1,this.options={},this.defaultOptions={hideEdgesOnDrag:!1,hideNodesOnDrag:!1},d.extend(this.options,this.defaultOptions),this._determineBrowserMethod(),this.bindEventListeners()}return(0,h.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("dragStart",function(){t.dragging=!0}),this.body.emitter.on("dragEnd",function(){t.dragging=!1}),this.body.emitter.on("_resizeNodes",function(){t._resizeNodes()}),this.body.emitter.on("_redraw",function(){!1===t.renderingActive&&t._redraw()}),this.body.emitter.on("_blockRedraw",function(){t.allowRedraw=!1}),this.body.emitter.on("_allowRedraw",function(){t.allowRedraw=!0,t.redrawRequested=!1}),this.body.emitter.on("_requestRedraw",this._requestRedraw.bind(this)),this.body.emitter.on("_startRendering",function(){t.renderRequests+=1,t.renderingActive=!0,t._startRendering()}),this.body.emitter.on("_stopRendering",function(){t.renderRequests-=1,t.renderingActive=t.renderRequests>0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,!0===t.requiresTimeout?clearTimeout(t.renderTimer):window.cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];d.selectiveDeepExtend(e,this.options,t)}}},{key:"_requestNextFrame",value:function(t,e){if("undefined"!=typeof window){var i=void 0,o=window;return!0===this.requiresTimeout?i=o.setTimeout(t,e):o.requestAnimationFrame&&(i=o.requestAnimationFrame(t)),i}}},{key:"_startRendering",value:function(){!0===this.renderingActive&&void 0===this.renderTimer&&(this.renderTimer=this._requestNextFrame(this._renderStep.bind(this),this.simulationInterval))}},{key:"_renderStep",value:function(){!0===this.renderingActive&&(this.renderTimer=void 0,!0===this.requiresTimeout&&this._startRendering(),this._redraw(),!1===this.requiresTimeout&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;!0!==this.redrawRequested&&!1===this.renderingActive&&!0===this.allowRedraw&&(this.redrawRequested=!0,this._requestNextFrame(function(){t._redraw(!1)},0))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!0===this.allowRedraw){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1,0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.canvas.setTransform();var e=this.canvas.getContext(),i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),!1===t&&(!1===this.dragging||!0===this.dragging&&!1===this.options.hideEdgesOnDrag)&&this._drawEdges(e),(!1===this.dragging||!0===this.dragging&&!1===this.options.hideNodesOnDrag)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),!0===t&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){this.canvas.setTransform();var t=this.canvas.getContext();t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=this.canvas.DOMtoCanvas({x:-20,y:-20}),a=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+20,y:this.canvas.frame.canvas.clientHeight+20}),h={top:r.y,left:r.x,bottom:a.y,right:a.x},d=0;d0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;!0===this.initialized&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(-1!==t.indexOf("%")||-1!==t.indexOf("px"))return t;if(-1===t.indexOf("%"))return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext)this._setPixelRatio(),this.setTransform();else{var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.pixelRatio;if(this._setPixelRatio(),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e)this._getCameraState(s),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0;else{var r=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),a=Math.round(this.frame.canvas.clientHeight*this.pixelRatio);this.frame.canvas.width===r&&this.frame.canvas.height===a||this._getCameraState(s), +this.frame.canvas.width!==r&&(this.frame.canvas.width=r,i=!0),this.frame.canvas.height!==a&&(this.frame.canvas.height=a,i=!0)}return!0===i&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"getContext",value:function(){return this.frame.canvas.getContext("2d")}},{key:"_determinePixelRatio",value:function(){var t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");var e=1;return"undefined"!=typeof window&&(e=window.devicePixelRatio||1),e/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)}},{key:"_setPixelRatio",value:function(){this.pixelRatio=this._determinePixelRatio()}},{key:"setTransform",value:function(){var t=this.getContext();if(void 0===t)throw new Error("Could not get canvax context");t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(76).default,l=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,a.default)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),!0===e){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];!0===r.predefinedPosition&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=d.getRange(this.body.nodes,t.nodes);o=12.662/(this.body.nodeIndices.length+7.4147)+.0964822;o*=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600)}else{this.body.emitter.emit("_resizeNodes"),i=d.getRange(this.body.nodes,t.nodes);var a=1.1*Math.abs(i.maxX-i.minX),h=1.1*Math.abs(i.maxY-i.minY),l=this.canvas.frame.canvas.clientWidth/a,u=this.canvas.frame.canvas.clientHeight/h;o=l<=u?l:u}o>1?o=1:0===o&&(o=1);var c=d.findCenter(i),p={position:c,scale:o,animation:t.animation};this.moveTo(p)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){if(void 0===t)return void(t={});void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),!1===t.animation&&(t.animation={duration:0}),!0===t.animation&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),this.animateView(t)}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),!0===t.locked&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=!0===t?1:this.easingTime;var e=h.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(2),d=i(233).default,l=i(104).default,u=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new d(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},h.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];h.selectiveNotDeepExtend(e,this.options,t),h.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(h.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=h.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-h.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-h.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler.getSelection(),n=!1;n=!0===i?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var s=this.selectionHandler.getSelection(),r=this._determineDifference(o,s),a=this._determineDifference(s,o);r.edges.length>0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,o),n=!0),r.nodes.length>0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,o),n=!0),a.nodes.length>0&&(this.selectionHandler._generateClickEvent("selectNode",e,t),n=!0),a.edges.length>0&&(this.selectionHandler._generateClickEvent("selectEdge",e,t),n=!0),!0===n&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineDifference",value:function(t,e){var i=function(t,e){for(var i=[],o=0;o10&&(t=10);var o=void 0;void 0!==this.drag&&!0===this.drag.dragging&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=h[u[u.length-1]],s=!0)}if(void 0===this.popupObj&&!1===s){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new l(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&!0===(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e))){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));!1===i&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(10),d=i(37),l=i(35),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){!0===this.options.navigationButtons?!1===this.iconsCreated&&this.loadNavigationElements():!0===this.iconsCreated&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),!0===this.options.keyboard.enabled&&(!0===this.options.keyboard.bindToWindow?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),!0===this.activated&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(0),s=o(n),r=i(1),a=o(r),h=i(47).default,d=i(74).default,l=i(2),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},l.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,a.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];l.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(!0===this.options.selectable){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,!0===i.isSelected()?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_initBaseEvent",value:function(t,e){var i={};return i.pointer={DOM:{x:e.x,y:e.y},canvas:this.canvas.DOMtoCanvas(e)},i.event=t,i}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=this._initBaseEvent(e,i);if(!0===n)s.nodes=[],s.edges=[];else{var r=this.getSelection();s.nodes=r.nodes,s.edges=r.edges}void 0!==o&&(s.previousSelection=o),"click"==t&&(s.items=this.getClickedItems(i)),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof h&&!0===e&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){!0===t.isSelected()&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?!0===e?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties" +;if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},{key:"getClickedItems",value:function(t){for(var e=this.canvas.DOMtoCanvas(t),i=[],o=this.body.nodeIndices,n=this.body.nodes,s=o.length-1;s>=0;s--){var r=n[o[s]],a=r.getItemsOnPoint(e);i.push.apply(i,a)}for(var h=this.body.edgeIndices,d=this.body.edges,l=h.length-1;l>=0;l--){var u=d[h[l]],c=u.getItemsOnPoint(e);i.push.apply(i,c)}return i}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(6),a=o(r),h=i(8),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(76).default,v=i(236),g=v.HorizontalStrategy,y=v.VerticalStrategy,b=function(){function t(){(0,u.default)(this,t),this.childrenReference={},this.parentReference={},this.trees={},this.distributionOrdering={},this.levels={},this.distributionIndex={},this.isTree=!1,this.treeIndex=-1}return(0,p.default)(t,[{key:"addRelation",value:function(t,e){void 0===this.childrenReference[t]&&(this.childrenReference[t]=[]),this.childrenReference[t].push(e),void 0===this.parentReference[e]&&(this.parentReference[e]=[]),this.parentReference[e].push(t)}},{key:"checkIfTree",value:function(){for(var t in this.parentReference)if(this.parentReference[t].length>1)return void(this.isTree=!1);this.isTree=!0}},{key:"numTrees",value:function(){return this.treeIndex+1}},{key:"setTreeIndex",value:function(t,e){void 0!==e&&void 0===this.trees[t.id]&&(this.trees[t.id]=e,this.treeIndex=Math.max(e,this.treeIndex))}},{key:"ensureLevel",value:function(t){void 0===this.levels[t]&&(this.levels[t]=0)}},{key:"getMaxLevel",value:function(t){var e=this,i={};return function t(o){if(void 0!==i[o])return i[o];var n=e.levels[o];if(e.childrenReference[o]){var s=e.childrenReference[o];if(s.length>0)for(var r=0;r0&&(i.levelSeparation*=-1):i.levelSeparation<0&&(i.levelSeparation*=-1),this.setDirectionStrategy(),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(!0===o)return this.body.emitter.emit("refresh"),f.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(!0===this.options.hierarchical.enabled){var e=this.optionsBackup.physics;void 0===t.physics||!0===t.physics?(t.physics={enabled:void 0===e.enabled||e.enabled,solver:"hierarchicalRepulsion"},e.enabled=void 0===e.enabled||e.enabled,e.solver=e.solver||"barnesHut"):"object"===(0,a.default)(t.physics)?(e.enabled=void 0===t.physics.enabled||t.physics.enabled,e.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):!1!==t.physics&&(e.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var i=this.direction.curveType();if(void 0===t.edges)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1};else if(void 0===t.edges.smooth)this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1;else if("boolean"==typeof t.edges.smooth)this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:i};else{var o=t.edges.smooth;void 0!==o.type&&"dynamic"!==o.type&&(i=o.type),this.optionsBackup.edges={smooth:void 0===o.enabled||o.enabled,type:void 0===o.type?"dynamic":o.type,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection},t.edges.smooth={enabled:void 0===o.enabled||o.enabled,type:i,roundness:void 0===o.roundness?.5:o.roundness,forceDirection:void 0!==o.forceDirection&&o.forceDirection}}this.body.emitter.emit("_forceDisableDynamicCurves",i)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(!0!==this.options.hierarchical.enabled){this.randomSeed=this.initialRandomSeed;for(var e=t.length+50,i=0;i150){for(var s=t.length;t.length>150&&o<=10;){o+=1;var r=t.length;o%3==0?this.body.modules.clustering.clusterBridges(n):this.body.modules.clustering.clusterOutliers(n);if(r==t.length&&o%3!=0)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*s)})}o>10&&console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."),this.body.modules.kamadaKawai.solve(t,this.body.edgeIndices,!0),this._shiftToCenter();for(var a=0;a0){var t=void 0,e=void 0,i=!1,o=!1;this.lastNodeOnLevel={},this.hierarchical=new b;for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0!==t.options.level?(i=!0,this.hierarchical.levels[e]=t.options.level):o=!0);if(!0===o&&!0===i)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");if(!0===o){var n=this.options.hierarchical.sortMethod;"hubsize"===n?this._determineLevelsByHubsize():"directed"===n?this._determineLevelsDirected():"custom"===n&&this._determineLevelsCustomCallback()}for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&this.hierarchical.ensureLevel(s);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(e,i){var o=t.hierarchical.trees;for(var n in o)o.hasOwnProperty(n)&&o[n]===e&&t.direction.shift(n,i)},n=function(){for(var e=[],i=0;i0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,r=1e9,a=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchical.levels[d.id],u=t.direction.getPosition(d),c=t._getSpaceAroundNode(d,e),p=(0,s.default)(c,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),l<=i&&(r=Math.min(u,r),a=Math.max(u,a))}return[r,a,o,n]},h=function(e,i){var o=t.hierarchical.getMaxLevel(e.id),n=t.hierarchical.getMaxLevel(i.id);return Math.min(o,n)},d=function(e,i,o){for(var n=t.hierarchical,s=0;s1)for(var h=0;h2&&void 0!==arguments[2]&&arguments[2],s=t.direction.getPosition(i),d=t.direction.getPosition(o),l=Math.abs(d-s),u=t.options.hierarchical.nodeSpacing;if(l>u){var c={},p={};r(i,c),r(o,p);var f=h(i,o),m=a(c,f),v=a(p,f),g=m[1],y=v[0],b=v[2];if(Math.abs(g-y)>u){var _=g-y+u;_<-b+u&&(_=-b+u),_<0&&(t._shiftBlock(o.id,_),e=!0,!0===n&&t._centerParent(o))}}},u=function(o,n){for(var h=n.id,d=n.edges,l=t.hierarchical.levels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},p=[],f=0;f0?p=Math.min(c,u-t.options.hierarchical.nodeSpacing):c<0&&(p=-Math.min(-c,l-t.options.hierarchical.nodeSpacing)),0!=p&&(t._shiftBlock(n.id,p),e=!0)}(_),_=b(o,d),function(i){var o=t.direction.getPosition(n),r=t._getSpaceAroundNode(n),a=(0,s.default)(r,2),h=a[0],d=a[1],l=i-o,u=o;l>0?u=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t.direction.setPosition(n,u),e=!0)}(_)};!0===this.options.hierarchical.blockShifting&&(function(i){var o=t.hierarchical.getLevels();o=o.reverse();for(var n=0;n0&&Math.abs(p)0&&(a=this.direction.getPosition(i[n-1])+r),this.direction.setPosition(s,a,e),this._validatePositionAndContinue(s,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){var i=this.hierarchical.childrenReference[t];if(void 0!==i){for(var o=[],n=0;ne&&void 0===this.positionedNodes[r.id]))return;var h=this.options.hierarchical.nodeSpacing,d=void 0;d=0===s?this.direction.getPosition(this.body.nodes[t]):this.direction.getPosition(o[s-1])+h,this.direction.setPosition(r,d,a),this._validatePositionAndContinue(r,a,d)}var l=this._getCenterPosition(o);this.direction.setPosition(this.body.nodes[t],l,e)}}},{key:"_validatePositionAndContinue",value:function(t,e,i){if(this.hierarchical.isTree){if(void 0!==this.lastNodeOnLevel[e]){var o=this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[e]]);if(i-ot.hierarchical.levels[e.id]&&t.hierarchical.addRelation(e.id,i.id)};this._crawlNetwork(e),this.hierarchical.checkIfTree()}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=function i(n,s){if(void 0===o[n.id]){t.hierarchical.setTreeIndex(n,s),o[n.id]=!0;for(var r=void 0,a=t._getActiveEdges(n),h=0;h2&&void 0!==arguments[2]?arguments[2]:void 0;this.fake_use(t,e,i),this.abstract()}},{key:"getTreeSize",value:function(t){return this.fake_use(t),this.abstract()}},{key:"sort",value:function(t){this.fake_use(t),this.abstract()}},{key:"fix",value:function(t,e){this.fake_use(t,e),this.abstract()}},{key:"shift",value:function(t,e){this.fake_use(t,e),this.abstract()}}]),t}(),m=function(t){function e(t){(0,u.default)(this,e);var i=(0,a.default)(this,(e.__proto__||(0,s.default)(e)).call(this));return i.layout=t,i}return(0,d.default)(e,t),(0,p.default)(e,[{key:"curveType",value:function(){return"horizontal"}},{key:"getPosition",value:function(t){return t.x}},{key:"setPosition",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.x=e}},{key:"getTreeSize",value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_x,max:e.max_x}}},{key:"sort",value:function(t){t.sort(function(t,e){return void 0===t.x||void 0===e.x?0:t.x-e.x})}},{key:"fix",value:function(t,e){t.y=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.y=!0}},{key:"shift",value:function(t,e){this.layout.body.nodes[t].x+=e}}]),e}(f),v=function(t){function e(t){(0,u.default)(this,e);var i=(0,a.default)(this,(e.__proto__||(0,s.default)(e)).call(this));return i.layout=t,i}return(0,d.default)(e,t),(0,p.default)(e,[{key:"curveType",value:function(){return"vertical"}},{key:"getPosition",value:function(t){return t.y}},{key:"setPosition",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;void 0!==i&&this.layout.hierarchical.addToOrdering(t,i),t.y=e}},{key:"getTreeSize",value:function(t){var e=this.layout.hierarchical.getTreeSize(this.layout.body.nodes,t);return{min:e.min_y,max:e.max_y}}},{key:"sort",value:function(t){t.sort(function(t,e){return void 0===t.y||void 0===e.y?0:t.y-e.y})}},{key:"fix",value:function(t,e){t.x=this.layout.options.hierarchical.levelSeparation*e,t.options.fixed.x=!0}},{key:"shift",value:function(t,e){this.layout.body.nodes[t].y+=e}}]),e}(f);e.HorizontalStrategy=v,e.VerticalStrategy=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(8),s=o(n),r=i(19),a=o(r),h=i(6),d=o(h),l=i(0),u=o(l),c=i(1),p=o(c),f=i(2),m=i(10),v=i(37),g=function(){function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},f.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,p.default)(t,[{key:"_restore",value:function(){!1!==this.inMode&&(!0===this.options.initiallyActive?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,f.deepExtend(this.options,t)),!0===this.options.initiallyActive&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){!0===this.editMode?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),!0===this.guiEnabled&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},!0===this.guiEnabled){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;!1!==this.options.addNode&&(this._createAddNodeButton(o),n=!0),!1!==this.options.addEdge&&(!0===n?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(!0===n?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&!1!==this.options.editEdge&&(!0===n?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&!1!==this.options.deleteNode?(!0===n&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&!1!==this.options.deleteEdge&&(!0===n&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addNode",!0===this.guiEnabled){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;!0!==this.editMode&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(!0!==e.isCluster){var i=f.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="addEdge",!0===this.guiEnabled){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",this._dragStartEdge.bind(this)),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){if(!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,d.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var t=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(t.from,t.to)}if(!0===this.guiEnabled){var e=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(e),this._createSeperator(),this._createDescription(e.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}if(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId){var i=this.body.edges[this.edgeBeingEditedId],o=this._getNewTargetNode(i.from.x,i.from.y),n=this._getNewTargetNode(i.to.x,i.to.y);this.temporaryIds.nodes.push(o.id),this.temporaryIds.nodes.push(n.id),this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id),this.body.nodes[n.id]=n,this.body.nodeIndices.push(n.id),this._temporaryBindUI("onTouch",this._controlNodeTouch.bind(this)),this._temporaryBindUI("onTap",function(){}),this._temporaryBindUI("onHold",function(){}),this._temporaryBindUI("onDragStart",this._controlNodeDragStart.bind(this)),this._temporaryBindUI("onDrag",this._controlNodeDrag.bind(this)),this._temporaryBindUI("onDragEnd",this._controlNodeDragEnd.bind(this)),this._temporaryBindUI("onMouseMove",function(){}),this._temporaryBindEvent("beforeDrawing",function(t){var e=i.edgeType.findBorderPositions(t);!1===o.selected&&(o.x=e.from.x,o.y=e.from.y),!1===n.selected&&(n.x=e.to.x,n.y=e.to.y)}),this.body.emitter.emit("_redraw")}else this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;!0!==this.editMode&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i} +;if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){!0===this.options.enabled?(this.guiEnabled=!0,this._createWrappers(),!1===this.editMode?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",!0===this.editMode?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",!0===this.editMode?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=f.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+f.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},f.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,!0===this.guiEnabled&&(f.recursiveDOMDelete(this.editModeDiv),f.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){var e;e=this.options.rtl?"vis-button vis-delete-rtl":"vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(!0===s.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=f.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(!0===i.isCluster)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+f.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(-1===this.temporaryIds.nodes.indexOf(n[r])){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(!0===s.isCluster?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_dragStartEdge",value:function(t){var e=this.lastTouch;this.selectionHandler._generateClickEvent("dragStart",t,e,void 0,!0)}},{key:"_performAddNode",value:function(t){var e=this,i={id:f.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw this.showManipulatorToolbar(),new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===(void 0===n?"undefined":(0,d.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(30),s=o(n),r=i(0),a=o(r),h=i(1),d=o(h),l=i(239),u=o(l),c=function(){function t(e,i,o){(0,a.default)(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,d.default)(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o),this._createE_matrix();for(var n=0,r=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),a=1e9,h=0,d=0,l=0,u=0,c=0;a>.01&&n1&&c<5;){c+=1,this._moveNode(h,d,l);var m=this._getEnergy(h),v=(0,s.default)(m,3);u=v[0],d=v[1],l=v[2]}}}},{key:"_getHighestEnergyNode",value:function(t){for(var e=this.body.nodeIndices,i=this.body.nodes,o=0,n=e[0],r=0,a=0,h=0;h0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("
                                                                                                                                                                  ").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e}); \ No newline at end of file diff --git a/documentation/docs/generated/js/menu-wc.js b/documentation/docs/generated/js/menu-wc.js new file mode 100644 index 0000000000..3335bac173 --- /dev/null +++ b/documentation/docs/generated/js/menu-wc.js @@ -0,0 +1,343 @@ +'use strict'; + +customElements.define('compodoc-menu', class extends HTMLElement { + constructor() { + super(); + this.isNormalMode = this.getAttribute('mode') === 'normal'; + } + + connectedCallback() { + this.render(this.isNormalMode); + } + + render(isNormalMode) { + let tp = lithtml.html(` + + `); + this.innerHTML = tp.strings; + } +}); \ No newline at end of file diff --git a/documentation/docs/generated/js/menu-wc_es5.js b/documentation/docs/generated/js/menu-wc_es5.js new file mode 100644 index 0000000000..ef7e5acff9 --- /dev/null +++ b/documentation/docs/generated/js/menu-wc_es5.js @@ -0,0 +1,42 @@ +'use strict'; + +function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); } +function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); } +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } +customElements.define('compodoc-menu', /*#__PURE__*/function (_HTMLElement) { + _inherits(_class, _HTMLElement); + var _super = _createSuper(_class); + function _class() { + var _this; + _classCallCheck(this, _class); + _this = _super.call(this); + _this.isNormalMode = _this.getAttribute('mode') === 'normal'; + return _this; + } + _createClass(_class, [{ + key: "connectedCallback", + value: function connectedCallback() { + this.render(this.isNormalMode); + } + }, { + key: "render", + value: function render(isNormalMode) { + var tp = lithtml.html("\n \n ")); + this.innerHTML = tp.strings; + } + }]); + return _class; +}( /*#__PURE__*/_wrapNativeSuper(HTMLElement))); \ No newline at end of file diff --git a/documentation/docs/generated/js/menu.js b/documentation/docs/generated/js/menu.js new file mode 100644 index 0000000000..2c8439341d --- /dev/null +++ b/documentation/docs/generated/js/menu.js @@ -0,0 +1,321 @@ +document.addEventListener('DOMContentLoaded', function () { + var menuCollapsed = false, + mobileMenu = document.getElementById('mobile-menu'); + + var localContextInUrl = ''; + + if (COMPODOC_CURRENT_PAGE_CONTEXT !== '') { + switch (COMPODOC_CURRENT_PAGE_CONTEXT) { + case 'additional-page': + localContextInUrl = 'additional-documentation'; + break; + case 'class': + localContextInUrl = 'classes'; + break; + case 'miscellaneous-functions': + case 'miscellaneous-variables': + case 'miscellaneous-typealiases': + case 'miscellaneous-enumerations': + localContextInUrl = 'miscellaneous'; + default: + break; + } + } + + function hasClass(el, cls) { + return el.className && new RegExp('(\\s|^)' + cls + '(\\s|$)').test(el.className); + } + + var processLink = function (link, url) { + if (url.charAt(0) !== '.') { + var prefix = ''; + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 5: + prefix = '../../../../../'; + break; + case 4: + prefix = '../../../../'; + break; + case 3: + prefix = '../../../'; + break; + case 2: + prefix = '../../'; + break; + case 1: + prefix = '../'; + break; + case 0: + prefix = './'; + break; + } + link.setAttribute('href', prefix + url); + } + }; + + var processMenuLinks = function (links, dontAddClass) { + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var linkHref = link.getAttribute('href'); + if (linkHref) { + var linkHrefFile = linkHref.substr(linkHref.lastIndexOf('/') + 1, linkHref.length); + if ( + linkHrefFile.toLowerCase() === COMPODOC_CURRENT_PAGE_URL.toLowerCase() && + link.innerHTML.indexOf('Getting started') == -1 && + !dontAddClass && + linkHref.toLowerCase().indexOf(localContextInUrl.toLowerCase()) !== -1 + ) { + link.classList.add('active'); + } + processLink(link, linkHref); + } + } + }; + var chapterLinks = document.querySelectorAll('[data-type="chapter-link"]'); + processMenuLinks(chapterLinks); + var entityLinks = document.querySelectorAll('[data-type="entity-link"]'); + processMenuLinks(entityLinks); + var indexLinks = document.querySelectorAll('[data-type="index-link"]'); + processMenuLinks(indexLinks, true); + var compodocLogos = document.querySelectorAll('[data-type="compodoc-logo"]'); + var customLogo = document.querySelectorAll('[data-type="custom-logo"]'); + var processLogos = function (entityLogos) { + for (var i = 0; i < entityLogos.length; i++) { + var entityLogo = entityLogos[i]; + if (entityLogo) { + var url = entityLogo.getAttribute('data-src'); + // Dark mode + logo + let isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches; + if (isDarkMode && url.indexOf('compodoc') !== -1) { + url = 'images/compodoc-vectorise-inverted.png'; + } + if (url.charAt(0) !== '.') { + var prefix = ''; + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 5: + prefix = '../../../../../'; + break; + case 4: + prefix = '../../../../'; + break; + case 3: + prefix = '../../../'; + break; + case 2: + prefix = '../../'; + break; + case 1: + prefix = '../'; + break; + case 0: + prefix = './'; + break; + } + entityLogo.src = prefix + url; + } + } + } + }; + processLogos(compodocLogos); + processLogos(customLogo); + + setTimeout(function () { + document.getElementById('btn-menu').addEventListener('click', function () { + if (menuCollapsed) { + mobileMenu.style.display = 'none'; + } else { + mobileMenu.style.display = 'block'; + document.getElementsByTagName('body')[0].style['overflow-y'] = 'hidden'; + } + menuCollapsed = !menuCollapsed; + }); + + /** + * Native bootstrap doesn't wait DOMContentLoaded event to start his job, re do it here + */ + var Collapses = document.querySelectorAll('[data-toggle="collapse"]'); + for (var o = 0, cll = Collapses.length; o < cll; o++) { + var collapse = Collapses[o], + options = {}; + options.duration = collapse.getAttribute('data-duration'); + var c = new Collapse(collapse, options); + } + + // collapse menu + var classnameMenuToggler = document.getElementsByClassName('menu-toggler'), + faAngleUpClass = 'ion-ios-arrow-up', + faAngleDownClass = 'ion-ios-arrow-down', + toggleItemMenu = function (e) { + var element = $(e.target), + parent = element[0].parentNode, + parentLink, + elementIconChild; + if (parent) { + if (!$(parent).hasClass('linked')) { + e.preventDefault(); + } else { + parentLink = parent.parentNode; + if (parentLink && element.hasClass('link-name')) { + $(parentLink).trigger('click'); + } + } + elementIconChild = parent.getElementsByClassName(faAngleUpClass)[0]; + if (!elementIconChild) { + elementIconChild = parent.getElementsByClassName(faAngleDownClass)[0]; + } + if (elementIconChild) { + elementIconChild = $(elementIconChild); + if (elementIconChild.hasClass(faAngleUpClass)) { + elementIconChild.addClass(faAngleDownClass); + elementIconChild.removeClass(faAngleUpClass); + } else { + elementIconChild.addClass(faAngleUpClass); + elementIconChild.removeClass(faAngleDownClass); + } + } + } + }; + + for (var i = 0; i < classnameMenuToggler.length; i++) { + classnameMenuToggler[i].addEventListener('click', toggleItemMenu, false); + } + + // Scroll to active link + var menus = document.querySelectorAll('.menu'), + i = 0, + len = menus.length, + activeMenu, + activeMenuClass, + activeLink; + + for (i; i < len; i++) { + if (getComputedStyle(menus[i]).display != 'none') { + activeMenu = menus[i]; + activeMenuClass = activeMenu.getAttribute('class').split(' ')[0]; + } + } + + if (activeMenu) { + activeLink = document.querySelector('.' + activeMenuClass + ' .active'); + if (activeLink) { + var linkType = activeLink.getAttribute('data-type'); + var linkContext = activeLink.getAttribute('data-context'); + if (linkType === 'entity-link') { + var parentLi = activeLink.parentNode, + parentUl, + parentChapterMenu; + if (parentLi) { + parentUl = parentLi.parentNode; + if (parentUl) { + parentChapterMenu = parentUl.parentNode; + if (parentChapterMenu) { + var toggler = parentChapterMenu.querySelector('.menu-toggler'), + elementIconChild = + toggler.getElementsByClassName(faAngleUpClass)[0]; + if (toggler && !elementIconChild) { + toggler.click(); + } + } + } + } + if (linkContext && linkContext === 'sub-entity') { + // Toggle also the master parent menu + var linkContextId = activeLink.getAttribute('data-context-id'); + var toggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' a .menu-toggler' + ); + if (toggler) { + toggler.click(); + } + if (linkContextId === 'additional') { + var mainToggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' div.menu-toggler' + ); + if (mainToggler) { + mainToggler.click(); + } + } + } + } else if (linkType === 'chapter-link') { + var linkContextId = activeLink.getAttribute('data-context-id'); + var toggler = activeLink.querySelector('.menu-toggler'); + if (toggler) { + toggler.click(); + } + if (linkContextId === 'additional') { + var mainToggler = activeMenu.querySelector( + '.chapter.' + linkContextId + ' div.menu-toggler' + ); + if (mainToggler) { + mainToggler.click(); + } + } + } + setTimeout(function () { + activeMenu.scrollTop = activeLink.offsetTop; + if ( + activeLink.innerHTML.toLowerCase().indexOf('readme') != -1 || + activeLink.innerHTML.toLowerCase().indexOf('overview') != -1 + ) { + activeMenu.scrollTop = 0; + } + }, 300); + } + } + // Dark mode toggle button + var useDark = window.matchMedia('(prefers-color-scheme: dark)'); + var darkModeState = useDark.matches; + var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input'); + var $darkModeToggles = document.querySelectorAll('.dark-mode-switch'); + var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state'); + + function checkToggle(check) { + for (var i = 0; i < $darkModeToggleSwitchers.length; i++) { + $darkModeToggleSwitchers[i].checked = check; + } + } + + function toggleDarkMode(state) { + if (window.localStorage) { + localStorage.setItem('compodoc_darkmode-state', state); + } + + checkToggle(state); + + const hasClass = document.body.classList.contains('dark'); + + if (state) { + for (var i = 0; i < $darkModeToggles.length; i++) { + $darkModeToggles[i].classList.add('dark'); + } + if (!hasClass) { + document.body.classList.add('dark'); + } + } else { + for (var i = 0; i < $darkModeToggles.length; i++) { + $darkModeToggles[i].classList.remove('dark'); + } + if (hasClass) { + document.body.classList.remove('dark'); + } + } + } + + useDark.addEventListener('change', function (evt) { + toggleDarkMode(evt.matches); + }); + if (darkModeStateLocal) { + darkModeState = darkModeStateLocal === 'true'; + } + toggleDarkMode(darkModeState); + + if ($darkModeToggles.length > 0) { + for (var i = 0; i < $darkModeToggleSwitchers.length; i++) { + $darkModeToggleSwitchers[i].addEventListener('change', function (event) { + darkModeState = !darkModeState; + toggleDarkMode(darkModeState); + }); + } + } + }, 0); +}); diff --git a/documentation/docs/generated/js/routes.js b/documentation/docs/generated/js/routes.js new file mode 100644 index 0000000000..bfd875cce3 --- /dev/null +++ b/documentation/docs/generated/js/routes.js @@ -0,0 +1,280 @@ +document.addEventListener('DOMContentLoaded', function() { + + function htmlEntities(str) { + return String(str).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + } + + function foundLazyModuleWithPath(path) { + //path is like app/customers/customers.module#CustomersModule + var split = path.split('#'), + lazyModulePath = split[0], + lazyModuleName = split[1]; + return lazyModuleName; + } + + function getBB(selection) { + selection.each(function(d){d.bbox = this.getBBox();}) + } + + var test_cases, + test_case, + test_case_num, + engine; + + var tree = ROUTES_INDEX; + + function cleanStringChildren(obj) { + for (var property in obj) { + if (obj.hasOwnProperty(property)) { + if (property === 'children' && typeof obj[property] === 'object') { + for (var i = obj[property].length - 1; i >= 0 ; i--) { + if (typeof obj[property][i] === 'string') { + obj[property].splice(i, 1); + } + } + } + if (typeof obj[property] === 'object') { + cleanStringChildren(obj[property]); + } + } + } + } + cleanStringChildren(tree); + + engine = d3.layout.tree().setNodeSizes(true); + + engine.spacing(function(a, b) { + return a.parent == b.parent ? + 0 : engine.rootXSize(); + }) + + engine.nodeSize(function(d) { + return [document.getElementById(d.id).getBBox()["height"] + 70, document.getElementById(d.id).getBBox()["width"] + 30]; + }); + + var nodes = d3.layout.hierarchy()(tree), + + svg = d3.select("#body-routes").append('svg'), + svg_g = svg.append("g"), + svg_p = svg.append("g"), + last_id = 0, + + node = svg_g.selectAll(".node") + .data(nodes, function(d) { + return d.id || (d.id = ++last_id); + }) + .enter().append("g") + .attr("class", "node"); + + svg + .attr('id', 'main') + + svg_g + .attr("transform", "translate(20,0)") + .attr('id', 'main-group') + + svg_p + .attr("transform", "translate(20,0)") + .attr('id', 'paths') + + var infos_group = node.append("g") + .attr({ + "id": function(d) { + return d.id; + }, + dx: 0, + dy: 0, + }) + + //Node icon + infos_group.append("text") + .attr('font-family', 'Ionicons') + .attr("y", 5) + .attr("x", 0) + .attr('class', function(d) { + return d.children || d._children + ? "icon has-children" + : "icon"; + }) + .attr('font-size', function(d) { + return '15px' + }).text(function(d) { + return '\uf183' + }); + + //node infos + infos_group.append("svg:text") + .attr("x", function(d) { + return 0; + }) + .attr("y", function(d) { + return 10; + }) + .attr("dy", ".35em") + .attr('class', 'text') + .attr("text-anchor", function(d) { + return "start"; + }).html(function(d) { + // if kind === module name + module + // if kind === component component + path + var _name = ''; + if (d.kind === 'module') { + if (d.module) { + _name += '' + d.module + ''; + if (d.name) { + _name += '' + d.name + ''; + } + } else { + _name += '' + htmlEntities(d.name) + ''; + } + } else if (d.kind === 'component') { + _name += '' + d.path + '' + _name += '' + d.component + '' + if (d.outlet) { + _name += '<outlet> : ' + d.outlet + '' + } + } else { + _name += '/' + d.path + '' + if (d.component) { + _name += '' + d.component + '' + } + if (d.loadChildren) { + var moduleName = foundLazyModuleWithPath(d.loadChildren); + _name += '' + moduleName + '' + } + if (d.canActivate) { + _name += '✓ canActivate' + } + if (d.canDeactivate) { + _name += '×  canDeactivate' + } + if (d.canActivateChild) { + _name += '✓ canActivateChild' + } + if (d.canLoad) { + _name += '→ canLoad' + } + if (d.redirectTo) { + _name += '→ ' + d.redirectTo + '' + } + if (d.pathMatch) { + _name += '> ' + d.pathMatch + '' + } + if (d.outlet) { + _name += '<outlet> : ' + d.outlet + '' + } + } + return _name; + }) + .call(getBB); + + // + // Node lazy loaded ? + // + infos_group.append('svg:text') + .attr("y", function(d) { + return 45; + }) + .attr("x", function(d) { + return -18; + }) + .attr('font-family', 'Ionicons') + .attr('class', function(d) { + return "icon"; + }) + .attr('font-size', function(d) { + return '15px' + }).text(function(d) { + var _text = ''; + if (d.loadChildren) { + _text = '\uf4c1'; + } + if (d.guarded) { + _text = '\uf1b0'; + } + return _text; + }); + + //Node text background + infos_group.insert("rect","text") + .attr("width", function(d){ + return d.bbox.width; + }) + .attr("height", function(d){ + return d.bbox.height; + }) + .attr("y", function(d) { + return 15; + }) + .style("fill", "white") + .style("fill-opacity", 0.75); + + nodes = engine.nodes(tree); + + function node_extents(n) { + return [n.x - n.x_size / 2, n.y, + n.x + n.x_size / 2, n.y + n.y_size + ]; + } + var root_extents = node_extents(nodes[0]); + var xmin = root_extents[0], + ymin = root_extents[1], + xmax = root_extents[2], + ymax = root_extents[3], + area_sum = (xmax - xmin) * (ymax - ymin), + x_size_min = nodes[0].x_size, + y_size_min = nodes[0].y_size; + + nodes.slice(1).forEach(function(n) { + var ne = node_extents(n); + xmin = Math.min(xmin, ne[0]); + ymin = Math.min(ymin, ne[1]); + xmax = Math.max(xmax, ne[2]); + ymax = Math.max(ymax, ne[3]); + area_sum += (ne[2] - ne[0]) * (ne[3] - ne[1]); + x_size_min = Math.min(x_size_min, n.x_size); + y_size_min = Math.min(y_size_min, n.y_size); + }); + + var area_ave = area_sum / nodes.length; + var scale = 80 / Math.sqrt(area_ave); + + function svg_x(node_y) { + return (node_y - ymin); + } + + function svg_y(node_x) { + return (node_x - xmin) * scale; + } + + + var nodebox_right_margin = Math.min(x_size_min * scale, 10); + var nodebox_vertical_margin = Math.min(y_size_min * scale, 3); + + node.attr("transform", function(d) { + return "translate(" + svg_x(d.y) + "," + svg_y(d.x) + ")"; + }) + + var diagonal = d3.svg.diagonal() + .projection(function(d) { + return [svg_x(d.y), svg_y(d.x)]; + }); + + var links = engine.links(nodes); + var links = svg_p.selectAll(".link") + .data(links) + .enter().append("path") + .attr("class", "link") + .attr("d", diagonal); + + var _svg = document.getElementById('main'), + main_g = _svg.childNodes[0] + + _svg.removeChild(main_g); + _svg.appendChild(main_g); + + svg.attr({ + width: document.getElementById('main-group').getBBox()['width'] + 30, + height: document.getElementById('main-group').getBBox()['height'] + 50, + }); +}); diff --git a/documentation/docs/generated/js/search/lunr.min.js b/documentation/docs/generated/js/search/lunr.min.js new file mode 100644 index 0000000000..cdc94cd390 --- /dev/null +++ b/documentation/docs/generated/js/search/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/documentation/docs/generated/js/search/search-lunr.js b/documentation/docs/generated/js/search/search-lunr.js new file mode 100644 index 0000000000..35e7dde1d5 --- /dev/null +++ b/documentation/docs/generated/js/search/search-lunr.js @@ -0,0 +1,67 @@ +(function(compodoc) { + + function LunrSearchEngine() { + this.index = undefined; + this.store = {}; + this.name = 'LunrSearchEngine'; + } + + LunrSearchEngine.prototype.init = function() { + var that = this, + d = new promise.Promise(); + + that.index = lunr.Index.load(COMPODOC_SEARCH_INDEX.index); + that.store = COMPODOC_SEARCH_INDEX.store; + d.done(); + + return d; + }; + + LunrSearchEngine.prototype.search = function(q, offset, length) { + var that = this, + results = [], + d = new promise.Promise(); + + if (this.index) { + results = $.map(this.index.search('*' + q + '*'), function(result) { + var doc = that.store[result.ref]; + + return { + title: doc.title, + url: doc.url, + body: doc.summary || doc.body + }; + }); + } + + d.done({ + query: q, + results: length === 0 ? results : results.slice(0, length), + count: results.length + }); + + return d; + }; + + compodoc.addEventListener(compodoc.EVENTS.READY, function(event) { + var engine = new LunrSearchEngine(), + initialized = false; + + function query(q, offset, length) { + if (!initialized) throw new Error('Search has not been initialized'); + return engine.search(q, offset, length); + } + + compodoc.search = { + query: query + }; + + engine.init() + .then(function() { + initialized = true; + compodoc.dispatchEvent({ + type: compodoc.EVENTS.SEARCH_READY + }); + }); + }); +})(compodoc); diff --git a/documentation/docs/generated/js/search/search.js b/documentation/docs/generated/js/search/search.js new file mode 100644 index 0000000000..6451d3d71a --- /dev/null +++ b/documentation/docs/generated/js/search/search.js @@ -0,0 +1,268 @@ +(function(compodoc) { + var usePushState = (typeof history.pushState !== 'undefined'), + + // DOM Elements + $body = $('body'), + $searchResults, + $searchInput, + $searchList, + $searchTitle, + $searchResultsCount, + $searchQuery, + $mainContainer, + $xsMenu; + + // Throttle search + function throttle(fn, wait) { + var timeout; + + return function() { + var ctx = this, args = arguments; + if (!timeout) { + timeout = setTimeout(function() { + timeout = undefined; + fn.apply(ctx, args); + }, wait); + } + }; + } + + function displayResults(res) { + var noResults = res.count == 0; + var groups = {}; + $searchResults.toggleClass('no-results', noResults); + + // Clear old results + $searchList.empty(); + + // Display title for research + $searchResultsCount.text(res.count); + $searchQuery.text(res.query); + + // Group result by context + res.results.forEach(function(res) { + var context = res.title.split(' - ')[0]; + if (typeof groups[context] === 'undefined') { + groups[context] = { + results: [res] + } + } else { + groups[context].results.push(res) + } + }); + + var sortedGroups = Object.keys(groups).sort(); + + for (var i = 0; i < sortedGroups.length; i++) { + var property = sortedGroups[i]; + + var $li = $('
                                                                                                                                                                • ', { + 'class': 'search-results-group' + }); + var finalPropertyLabel = ''; + var propertyLabels = property.split('-'); + + if (propertyLabels.length === 2 && propertyLabels[0] !== 'miscellaneous' && propertyLabels[0] !== 'additional') { + finalPropertyLabel = propertyLabels[0].charAt(0).toUpperCase() + propertyLabels[0].substring(1) + ' - ' + propertyLabels[1].charAt(0).toUpperCase() + propertyLabels[1].substring(1) + ' (' + groups[property].results.length + ')'; + } else if (propertyLabels[0] === 'additional') { + finalPropertyLabel = 'Additional pages' + ' (' + groups[property].results.length + ')' + } else { + finalPropertyLabel = propertyLabels[0].charAt(0).toUpperCase() + propertyLabels[0].substring(1) + ' (' + groups[property].results.length + ')' + } + var $groupTitle = $('

                                                                                                                                                                  ', { + 'text': finalPropertyLabel + }); + $groupTitle.appendTo($li); + + var $ulResults = $('
                                                                                                                                                                    ', { + 'class': 'search-results-list' + }) + + groups[property].results.forEach(function(res) { + var link = ''; + var $liResult = $('
                                                                                                                                                                  • ', { + 'class': 'search-results-item' + }); + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 0: + link = './'; + break; + case 1: + case 2: + case 3: + case 4: + case 5: + link = '../'.repeat(COMPODOC_CURRENT_PAGE_DEPTH); + break; + }; + var finalResLabel = res.title.split(' - ')[1].charAt(0).toUpperCase() + res.title.split(' - ')[1].substring(1); + var $link = $('', { + 'href': link + res.url, + 'text': finalResLabel + }); + $link.appendTo($liResult); + $liResult.appendTo($ulResults); + }); + $ulResults.appendTo($li); + + $li.appendTo($searchList); + } + } + + function launchSearch(q) { + $body.addClass('with-search'); + + if ($xsMenu.css('display') === 'block') { + $mainContainer.css('height', 'calc(100% - 100px)'); + $mainContainer.css('margin-top', '100px'); + } + + throttle(compodoc.search.query(q, 0, MAX_SEARCH_RESULTS) + .then(function(results) { + displayResults(results); + }), 1000); + } + + function closeSearch() { + $body.removeClass('with-search'); + if ($xsMenu.css('display') === 'block') { + $mainContainer.css('height', 'calc(100% - 50px)'); + $mainContainer.css('margin-top', '50px'); + } + } + + function bindMenuButton() { + document.getElementById('btn-menu').addEventListener('click', function() { + if ($xsMenu.css('display') === 'none') { + $body.removeClass('with-search'); + $mainContainer.css('height', 'calc(100% - 50px)'); + $mainContainer.css('margin-top', '50px'); + } + $.each($searchInputs, function(index, item){ + var item = $(item); + item.val(''); + }); + }); + } + + function bindSearch() { + // Bind DOM + $searchInputs = $('#book-search-input input'); + + $searchResults = $('.search-results'); + $searchList = $searchResults.find('.search-results-list'); + $searchTitle = $searchResults.find('.search-results-title'); + $searchResultsCount = $searchTitle.find('.search-results-count'); + $searchQuery = $searchTitle.find('.search-query'); + $mainContainer = $('.container-fluid'); + $xsMenu = $('.xs-menu'); + + // Launch query based on input content + function handleUpdate(item) { + var q = item.val(); + + if (q.length == 0) { + closeSearch(); + window.location.href = window.location.href.replace(window.location.search, ''); + } else { + launchSearch(q); + } + } + + // Detect true content change in search input + var propertyChangeUnbound = false; + + $.each($searchInputs, function(index, item){ + var item = $(item); + // HTML5 (IE9 & others) + item.on('input', function(e) { + // Unbind propertychange event for IE9+ + if (!propertyChangeUnbound) { + $(this).unbind('propertychange'); + propertyChangeUnbound = true; + } + + handleUpdate($(this)); + }); + // Workaround for IE < 9 + item.on('propertychange', function(e) { + if (e.originalEvent.propertyName == 'value') { + handleUpdate($(this)); + } + }); + // Push to history on blur + item.on('blur', function(e) { + // Update history state + if (usePushState) { + var uri = updateQueryString('q', $(this).val()); + if ($(this).val() !== '') { + history.pushState({ path: uri }, null, uri); + } + } + }); + }); + } + + function launchSearchFromQueryString() { + var q = getParameterByName('q'); + if (q && q.length > 0) { + // Update search inputs + $.each($searchInputs, function(index, item){ + var item = $(item); + item.val(q) + }); + // Launch search + launchSearch(q); + } + } + + compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function(event) { + bindSearch(); + + bindMenuButton(); + + launchSearchFromQueryString(); + }); + + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + } + + function updateQueryString(key, value) { + value = encodeURIComponent(value); + + var url = window.location.href; + var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'), + hash; + + if (re.test(url)) { + if (typeof value !== 'undefined' && value !== null) + return url.replace(re, '$1' + key + '=' + value + '$2$3'); + else { + hash = url.split('#'); + url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + } + else { + if (typeof value !== 'undefined' && value !== null) { + var separator = url.indexOf('?') !== -1 ? '&' : '?'; + hash = url.split('#'); + url = hash[0] + separator + key + '=' + value; + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + else + return url; + } + } +})(compodoc); diff --git a/documentation/docs/generated/js/search/search_index.js b/documentation/docs/generated/js/search/search_index.js new file mode 100644 index 0000000000..e6327088a4 --- /dev/null +++ b/documentation/docs/generated/js/search/search_index.js @@ -0,0 +1,4 @@ +var COMPODOC_SEARCH_INDEX = { + "index": {"version":"2.3.9","fields":["title","body"],"fieldVectors":[["title/components/AccordionSectionComponent.html",[0,0.303,1,0.397]],["body/components/AccordionSectionComponent.html",[0,0.424,1,0.61,2,0.504,3,0.091,4,0.08,5,0.268,6,0.311,7,0.341,8,0.069,9,3.341,10,0.236,11,0.258,12,0.329,13,0.505,14,0.341,15,0.323,16,0.478,17,0.689,18,0.81,19,0.748,20,0.329,21,3.341,22,3.228,23,0.469,24,1.083,25,4.97,26,4.453,27,0.013,28,5.698,29,6.918,30,5.698,31,4.926,32,2.971,33,0.227,34,0.183,35,1.792,36,0.563,37,6.249,38,1.565,39,4.97,40,4.225,41,4.97,42,0.274,43,0.424,44,0.555,45,3.341,46,4.133,47,3.341,48,3.271,49,4.533,50,2.184,51,0.481,52,3.818,53,4.844,54,2.488,55,2.609,56,3.818,57,2.744,58,2.045,59,4.844,60,3.341,61,0.372,62,0.388,63,1.114,64,3.341,65,0.281,66,3.341,67,3.341,68,0.175,69,1.013,70,0.114,71,1.621,72,0.51,73,0.882,74,0.24,75,4.225,76,0.091,77,0.015,78,1.408,79,4.844,80,0.388,81,0.61,82,3.069,83,3.341,84,4.844,85,2.256,86,0.589,87,5.698,88,0.98,89,1.04,90,1.048,91,2.117,92,0.529,93,0.912,94,3.341,95,2.744,96,3.341,97,3.341,98,0.587,99,0.871,100,1.013,101,1.08,102,1.68,103,6.225,104,0.781,105,1.64,106,1.243,107,1.716,108,1.64,109,0.495,110,1.824,111,1.678,112,1.289,113,1.706,114,1.64,115,1.529,116,0.85,117,1.506,118,1.056,119,2.424,120,2.915,121,1.132,122,1.151,123,1.739,124,1.597,125,2.915,126,1.565,127,0.943,128,0.614,129,1.353,130,2.161,131,1.158,132,1.199,133,1.238,134,1.044,135,1.177,136,2.915,137,2.915,138,2.915,139,3.514,140,2.915,141,1.118,142,2.915,143,1.29,144,0.943,145,2.915,146,0.495,147,1.39,148,1.43,149,1.893,150,3.514,151,1.586,152,1.447,153,1.339,154,1.586,155,3.366,156,3.61,157,3.514,158,2.609,159,1.044,160,1.199,161,2.609,162,2.744,163,2.02,164,4.48,165,1.691,166,5.451,167,2.915,168,0.677,169,4.203,170,4.225,171,1.199,172,1.893,173,1.408,174,2.424,175,2.424,176,2.256,177,2.634,178,0.342,179,1.353,180,1.264,181,3.271,182,1.565,183,1.447,184,1.447,185,1.893,186,2.117,187,1.8,188,3.228,189,0.826,190,0.975,191,1.447,192,0.747,193,1.199,194,1.893,195,1.243,196,1.893,197,0.341,198,0.457,199,0.329,200,0.341,201,0.341,202,0.251,203,0.495,204,0.326,205,0.582,206,0.326,207,0.638,208,0.311,209,0.473,210,0.282,211,0.341,212,0.326,213,0.495,214,0.326,215,0.326,216,0.326,217,0.341,218,0.582,219,0.326,220,0.326,221,0.495,222,0.326,223,0.495,224,0.326,225,0.341,226,0.326,227,0.638,228,0.326,229,0.311,230,0.326,231,0.326,232,0.341,233,0.473,234,0.638,235,0.326,236,0.341,237,0.326,238,0.341,239,0.326,240,0.326,241,0.341,242,0.326,243,0.326,244,0.326,245,0.188,246,0.341,247,0.311,248,0.495,249,0.326,250,0.326,251,0.341,252,0.326,253,0.282,254,0.341,255,0.326,256,0.341,257,0.326,258,0.341,259,0.326,260,0.341,261,0.326,262,0.326,263,0.341,264,0.311,265,0.326,266,0.582,267,0.311,268,0.341,269,0.268,270,0.268,271,0.326,272,0.341,273,0.341,274,0.326,275,0.341,276,0.341,277,0.326,278,0.341,279,0.326,280,0.341,281,0.341,282,0.296,283,0.43,284,0.268,285,0.311,286,0.326,287,0.341,288,0.341,289,0.326,290,0.341,291,0.341,292,0.326,293,0.341,294,0.326,295,0.495,296,0.341,297,0.326,298,0.326,299,0.341,300,0.326,301,0.326,302,0.326,303,0.341,304,0.268,305,0.341,306,0.326,307,0.341,308,0.326,309,0.341,310,0.326,311,0.341,312,0.326,313,0.341,314,0.341,315,0.007,316,0.007]],["title/components/AnimatedSectionComponent.html",[0,0.303,204,0.397]],["body/components/AnimatedSectionComponent.html",[0,0.511,1,0.404,2,0.428,3,0.113,4,0.099,5,0.332,6,0.386,7,0.423,8,0.086,10,0.274,11,0.171,12,0.382,13,0.568,14,0.423,15,0.326,16,0.483,17,0.699,18,0.654,19,0.67,20,0.382,23,0.537,24,0.565,27,0.013,33,0.142,34,0.213,35,1.785,36,0.744,38,1.821,42,0.297,44,0.608,51,0.651,57,3.191,61,0.713,62,0.482,63,0.81,65,0.186,68,0.197,69,0.867,70,0.142,76,0.113,77,0.019,80,0.482,89,0.756,90,0.896,98,0.502,99,0.739,104,0.64,109,0.423,113,1.538,115,1.179,116,0.482,118,0.587,128,0.609,129,1.102,144,1.169,146,0.423,159,1.294,160,1.487,162,2.347,164,4.323,168,0.423,169,3.569,173,1.024,174,4.087,178,0.338,189,1.698,197,0.423,198,0.513,199,0.382,200,0.423,201,0.423,202,0.286,203,0.575,204,0.67,205,0.799,206,0.404,207,0.701,208,0.386,209,0.55,210,0.35,211,0.423,212,0.404,213,0.575,214,0.404,215,0.404,216,0.404,217,0.423,218,0.654,219,0.404,220,0.404,221,0.575,222,0.404,223,0.575,224,0.404,225,0.423,226,0.404,227,0.701,228,0.779,229,0.386,230,0.404,231,0.404,232,0.423,233,0.55,234,0.701,235,0.404,236,0.423,237,0.404,238,0.423,239,0.404,240,0.404,241,0.423,242,0.404,243,0.404,244,0.404,245,0.316,246,0.423,247,0.386,248,0.575,249,0.404,250,0.404,251,0.423,252,0.404,253,0.35,254,0.423,255,0.404,256,0.423,257,0.404,258,0.423,259,0.404,260,0.423,261,0.404,262,0.404,263,0.423,264,0.386,265,0.404,266,0.654,267,0.386,268,0.423,269,0.332,270,0.332,271,0.404,272,0.423,273,0.423,274,0.404,275,0.423,276,0.423,277,0.404,278,0.423,279,0.404,280,0.423,281,0.423,282,0.367,283,0.5,284,0.332,285,0.386,286,0.404,287,0.423,288,0.423,289,0.404,290,0.423,291,0.423,292,0.404,293,0.423,294,0.404,295,0.575,296,0.423,297,0.404,298,0.404,299,0.423,300,0.404,301,0.404,302,0.404,303,0.423,304,0.332,305,0.423,306,0.404,307,0.423,308,0.404,309,0.423,310,0.404,311,0.423,312,0.404,313,0.423,314,0.423,315,0.009,316,0.009,317,4.143,318,6.402,319,2.894,320,4.087,321,4.441,322,4.441,323,5.046,324,1.94,325,1.947,326,5.502,327,3.614,328,3.005,329,2.797,330,2.624,331,1.435,332,2.17,333,3.614,334,1.947,335,3.289,336,3.005,337,3.265,338,3.804,339,4.143,340,2.232,341,2.034,342,2.476,343,3.614,344,3.191,345,3.005,346,3.265,347,3.569,348,3.035,349,0.769,350,0.925,351,3.569,352,3.005,353,3.265,354,3.265,355,4.143,356,3.035,357,2.232,358,3.265,359,2.797,360,1.885,361,3.265,362,3.614,363,3.265,364,2.258,365,4.441,366,3.265,367,2.797,368,2.894,369,3.265,370,3.265,371,3.005,372,2.797,373,3.614,374,0.565,375,3.614,376,4.143,377,2.034,378,1.432,379,3.265,380,3.614,381,3.265,382,4.087,383,3.005,384,4.143,385,3.265,386,3.265,387,4.143,388,3.614,389,3.005,390,3.614,391,3.614,392,5.634,393,3.378,394,3.614,395,4.143,396,4.143,397,4.143,398,3.614,399,3.614,400,4.143,401,3.005,402,3.614,403,4.143,404,4.143,405,4.143,406,1.66,407,3.265,408,2.797,409,2.797,410,2.347,411,4.143,412,4.143,413,1.131,414,4.143,415,4.143,416,3.614,417,2.624,418,2.476,419,4.143,420,3.614,421,2.034]],["title/components/AnimatedSectionGroupComponent.html",[0,0.303,206,0.397]],["body/components/AnimatedSectionGroupComponent.html",[0,0.523,1,0.49,2,0.486,3,0.137,4,0.12,6,0.468,7,0.513,8,0.104,10,0.311,11,0.306,14,0.513,15,0.328,16,0.487,17,0.713,18,0.718,19,0.686,23,0.531,27,0.013,51,0.424,65,0.226,68,0.197,70,0.172,74,0.361,76,0.137,77,0.023,104,0.69,109,0.513,128,0.567,146,0.513,168,0.513,178,0.384,197,0.513,198,0.564,199,0.434,200,0.513,201,0.513,202,0.289,203,0.653,204,0.49,205,0.781,206,0.723,207,0.756,208,0.468,209,0.624,210,0.424,211,0.513,212,0.49,213,0.653,214,0.49,215,0.49,216,0.49,217,0.513,218,0.718,219,0.49,220,0.49,221,0.653,222,0.49,223,0.653,224,0.49,225,0.513,226,0.49,227,0.756,228,0.49,229,0.468,230,0.49,231,0.49,232,0.513,233,0.624,234,0.756,235,0.49,236,0.513,237,0.49,238,0.513,239,0.49,240,0.49,241,0.513,242,0.49,243,0.49,244,0.49,245,0.282,246,0.513,247,0.468,248,0.653,249,0.49,250,0.49,251,0.513,252,0.49,253,0.424,254,0.513,255,0.49,256,0.513,257,0.49,258,0.513,259,0.49,260,0.513,261,0.49,262,0.49,263,0.513,264,0.468,265,0.49,266,0.718,267,0.468,268,0.513,269,0.403,270,0.403,271,0.49,272,0.513,273,0.513,274,0.49,275,0.513,276,0.513,277,0.49,278,0.513,279,0.49,280,0.513,281,0.513,282,0.446,283,0.567,284,0.403,285,0.468,286,0.49,287,0.513,288,0.513,289,0.49,290,0.513,291,0.513,292,0.49,293,0.513,294,0.49,295,0.653,296,0.513,297,0.49,298,0.49,299,0.513,300,0.49,301,0.49,302,0.49,303,0.513,304,0.403,305,0.513,306,0.49,307,0.513,308,0.49,309,0.513,310,0.49,311,0.513,312,0.49,313,0.513,314,0.513,315,0.01,316,0.01,422,5.022,423,3.007]],["title/interfaces/AnswerBody.html",[424,0.881,425,3.208]],["body/interfaces/AnswerBody.html",[0,0.468,3,0.134,4,0.117,8,0.101,12,0.332,13,0.558,15,0.185,20,0.332,23,0.332,27,0.013,33,0.168,34,0.238,42,0.26,43,0.557,58,2.258,63,1.359,65,0.22,68,0.234,69,1.674,70,0.168,71,1.637,72,0.747,73,1.292,76,0.134,77,0.023,78,1.209,80,0.569,81,0.893,86,0.862,89,1.339,90,1.361,92,1.314,98,0.842,113,1.336,143,1.888,178,0.489,202,0.298,208,0.455,209,0.678,210,0.667,315,0.01,316,0.01,324,1.381,332,1.477,378,1.094,424,1.059,425,6.123,426,2.037,427,3.856,428,3.856,429,3.856,430,4.268,431,1.209,432,3.549,433,1.695,434,2.3,435,5.486,436,5.486,437,6.063,438,3.856,439,4.694,440,2.3,441,4.268,442,0.642,443,4.268,444,4.268,445,2.3,446,3.856,447,5.982,448,2.924,449,4.268,450,4.268,451,4.268,452,2.402,453,4.268,454,3.549,455,3.984,456,3.099,457,1.581,458,4.268,459,4.268,460,4.268,461,4.268,462,4.268,463,2.771,464,4.268,465,6.063,466,6.063,467,4.268,468,4.268,469,4.268,470,4.268,471,3.549,472,4.268,473,3.549,474,3.099,475,4.268,476,5.486,477,5.486,478,4.268,479,4.268,480,6.425,481,4.268,482,4.268,483,4.268,484,5.486,485,4.268,486,4.268,487,1.101,488,3.856,489,2.924,490,2.924,491,2.924,492,3.231,493,2.924,494,2.924,495,4.268,496,4.268,497,1.109,498,4.268,499,4.268,500,5.506,501,4.268,502,4.268,503,4.268,504,4.268,505,4.268,506,5.486,507,6.4,508,4.268,509,4.268,510,2.924,511,4.268,512,4.268,513,1.336,514,4.268,515,3.099,516,4.268,517,6.063,518,4.268,519,3.549,520,4.268]],["title/classes/BlankDate.html",[77,0.019,521,3.551]],["body/classes/BlankDate.html",[3,0.157,4,0.138,8,0.119,10,0.338,24,0.785,27,0.013,43,0.549,44,0.461,58,2.064,65,0.259,76,0.205,77,0.027,104,0.753,155,3.098,159,1.796,176,4.697,270,0.558,315,0.011,316,0.011,335,2.954,342,3.437,487,1.102,497,1.443,521,6.068,522,2.703,523,3.747,524,6.956,525,5.75,526,3.883,527,5.016,528,6.956,529,4.532,530,5.016,531,4.532,532,5.741,533,3.747,534,5.75,535,5.75,536,5.016,537,6.524,538,6.956,539,5.75,540,5.75,541,5.016,542,5.75,543,5.75,544,1.319,545,5.75,546,5.75,547,5.75,548,5.75,549,5.75,550,5.75,551,5.75,552,5.75,553,5.75,554,4.471,555,5.75,556,5.75,557,5.75,558,3.27,559,5.75,560,4.532,561,5.016,562,5.75,563,5.75,564,5.75,565,5.75,566,5.75,567,5.75,568,5.75,569,5.75,570,6.956,571,5.75,572,5.75,573,3.098,574,3.098,575,5.75,576,5.75,577,5.75,578,5.75,579,5.75,580,5.75,581,5.75,582,5.75,583,3.643,584,5.75,585,6.068]],["title/components/ComboBoxModalComponent.html",[0,0.303,208,0.379]],["body/components/ComboBoxModalComponent.html",[0,0.398,1,0.293,2,0.34,3,0.082,4,0.072,5,0.24,6,0.279,7,0.306,8,0.062,11,0.124,12,0.304,13,0.475,14,0.306,15,0.321,16,0.474,17,0.663,18,0.546,19,0.293,20,0.304,23,0.481,24,0.61,27,0.013,33,0.103,34,0.169,36,0.52,38,1.446,42,0.322,43,0.52,44,0.649,51,0.253,58,1.606,61,0.768,62,0.774,63,1.301,65,0.241,68,0.195,69,1.543,70,0.103,71,1.003,72,0.458,73,0.792,76,0.082,77,0.014,78,0.741,80,0.349,81,0.547,86,1.046,89,1.215,90,0.968,92,1.186,98,0.907,99,0.905,100,0.627,101,0.969,102,1.393,104,0.747,105,1.472,106,1.093,107,1.54,108,1.472,109,0.306,112,0.943,113,0.819,115,0.627,116,0.774,118,0.9,121,1.075,122,1.043,127,0.847,128,0.59,129,1.16,130,0.937,133,1.367,135,1.01,143,2.29,144,1.263,146,0.306,147,1.277,148,1.199,151,1.517,152,1.119,154,1.07,159,1.397,160,1.606,161,1.615,165,0.694,168,0.306,171,1.076,178,0.46,179,1.386,180,1.284,182,1.729,189,1.106,190,1.306,197,0.306,198,0.429,199,0.304,200,0.306,201,0.306,202,0.289,203,0.457,204,0.293,205,0.546,206,0.293,207,0.606,208,0.552,209,0.739,210,0.721,211,0.306,212,0.293,213,0.457,214,0.293,215,0.293,216,0.293,217,0.306,218,0.546,219,0.293,220,0.293,221,0.457,222,0.293,223,0.457,224,0.293,225,0.306,226,0.293,227,0.606,228,0.293,229,0.279,230,0.293,231,0.293,232,0.306,233,0.436,234,0.606,235,0.293,236,0.306,237,0.293,238,0.306,239,0.293,240,0.293,241,0.306,242,0.293,243,0.293,244,0.293,245,0.168,246,0.306,247,0.279,248,0.457,249,0.293,250,0.293,251,0.306,252,0.293,253,0.253,254,0.306,255,0.293,256,0.306,257,0.293,258,0.306,259,0.293,260,0.306,261,0.293,262,0.293,263,0.306,264,0.279,265,0.293,266,0.546,267,0.279,268,0.306,269,0.24,270,0.24,271,0.293,272,0.306,273,0.306,274,0.293,275,0.306,276,0.306,277,0.293,278,0.306,279,0.293,280,0.306,281,0.306,282,0.266,283,0.526,284,0.24,285,0.279,286,0.293,287,0.306,288,0.306,289,0.293,290,0.306,291,0.306,292,0.293,293,0.306,294,0.293,295,0.457,296,0.306,297,0.293,298,0.293,299,0.306,300,0.293,301,0.293,302,0.293,303,0.306,304,0.24,305,0.306,306,0.293,307,0.306,308,0.293,309,0.306,310,0.293,311,0.306,312,0.293,313,0.306,314,0.306,315,0.007,316,0.007,324,1.51,332,1.351,349,0.809,350,0.974,374,0.908,378,1.197,421,1.472,424,0.649,425,5.436,427,6.4,428,6.4,429,6.4,430,2.616,431,0.741,432,2.175,433,1.039,434,1.41,435,5.175,436,3.902,437,5.536,438,2.364,439,4.657,440,1.41,441,5.175,442,0.587,443,3.902,444,4.667,445,2.103,446,4.218,447,5.436,448,3.198,449,4.667,450,5.536,451,4.667,452,3.116,453,4.667,454,3.881,455,3.39,456,3.39,457,0.969,458,3.902,459,2.616,460,2.616,461,2.616,462,2.616,463,1.699,464,2.616,465,4.667,466,4.667,467,2.616,468,2.616,469,2.616,470,2.616,471,2.175,472,2.616,473,2.175,474,1.9,475,2.616,476,3.902,477,3.902,478,2.616,479,5.175,480,5.813,481,2.616,482,2.616,483,3.902,484,3.902,485,3.902,486,2.616,487,0.848,488,2.364,489,1.792,490,1.792,491,1.792,492,2.298,493,1.792,494,1.792,495,2.616,496,2.616,497,0.789,498,5.175,499,2.616,500,4.604,501,2.616,502,2.616,503,3.902,504,2.616,505,2.616,506,3.902,507,5.175,508,2.616,509,2.616,510,2.674,511,3.902,512,2.616,513,0.819,514,2.616,515,1.9,516,5.175,517,4.667,518,4.667,519,3.245,520,2.616,544,0.529,586,2.298,587,4.473,588,4.473,589,2.41,590,2.999,591,4.473,592,2.999,593,2.999,594,2.999,595,2.999,596,2.999,597,2.999,598,2.999,599,2.999,600,2.999,601,2.999,602,2.999,603,2.999,604,2.999,605,2.999,606,2.999,607,2.999,608,2.999,609,2.999,610,2.999,611,2.999,612,2.999,613,4.473,614,3.245,615,1.9,616,1.562,617,4.473,618,2.175,619,2.055,620,4.49,621,1.003,622,2.999,623,1.9,624,2.999,625,2.616,626,3.245,627,1.665,628,1.862,629,2.175,630,1.615,631,2.364]],["title/components/FormComponent.html",[0,0.303,212,0.397]],["body/components/FormComponent.html",[0,0.477,1,0.405,2,0.429,3,0.114,4,0.1,5,0.333,6,0.387,7,0.424,8,0.086,10,0.275,11,0.284,12,0.383,13,0.569,14,0.424,15,0.326,16,0.483,17,0.699,18,0.655,19,0.405,20,0.383,23,0.504,24,0.567,27,0.013,33,0.142,34,0.213,35,1.716,36,0.656,38,1.825,42,0.233,43,0.467,44,0.551,51,0.351,61,0.463,62,0.8,63,0.812,65,0.187,68,0.221,69,1.181,70,0.142,71,1.39,72,0.635,73,1.097,74,0.299,76,0.114,77,0.019,78,1.935,80,0.483,81,0.759,86,0.733,88,1.297,89,0.759,92,1.09,93,1.542,99,0.545,102,1.439,104,0.737,105,2.04,106,1.182,108,2.04,109,0.424,112,0.733,116,0.483,118,0.589,121,0.909,122,0.831,126,1.825,128,0.501,131,1.44,141,1.39,146,0.424,147,0.733,148,0.785,152,1.181,154,0.994,168,0.424,171,1.492,178,0.385,179,1.104,180,0.841,182,1.343,186,2.632,197,0.424,198,0.514,199,0.383,200,0.424,201,0.424,202,0.272,203,0.576,204,0.405,205,0.655,206,0.405,207,0.702,208,0.387,209,0.551,210,0.541,211,0.424,212,0.671,213,0.576,214,0.405,215,0.405,216,0.405,217,0.424,218,0.655,219,0.405,220,0.405,221,0.576,222,0.405,223,0.576,224,0.405,225,0.424,226,0.405,227,0.702,228,0.405,229,0.387,230,0.405,231,0.405,232,0.424,233,0.551,234,0.702,235,0.405,236,0.424,237,0.405,238,0.424,239,0.405,240,0.405,241,0.424,242,0.405,243,0.405,244,0.405,245,0.233,246,0.424,247,0.387,248,0.576,249,0.405,250,0.405,251,0.424,252,0.405,253,0.351,254,0.424,255,0.405,256,0.424,257,0.405,258,0.424,259,0.405,260,0.424,261,0.405,262,0.405,263,0.424,264,0.387,265,0.405,266,0.655,267,0.387,268,0.424,269,0.333,270,0.333,271,0.405,272,0.424,273,0.424,274,0.405,275,0.424,276,0.424,277,0.405,278,0.424,279,0.405,280,0.424,281,0.424,282,0.369,283,0.501,284,0.577,285,0.387,286,0.405,287,0.424,288,0.424,289,0.405,290,0.424,291,0.424,292,0.405,293,0.424,294,0.405,295,0.576,296,0.424,297,0.405,298,0.405,299,0.424,300,0.405,301,0.405,302,0.405,303,0.424,304,0.333,305,0.424,306,0.405,307,0.424,308,0.405,309,0.424,310,0.405,311,0.424,312,0.405,313,0.424,314,0.424,315,0.009,316,0.009,332,1.704,338,4.33,344,2.354,374,0.567,379,3.275,431,1.027,452,3.148,497,0.733,544,1.13,616,1.648,618,3.014,619,1.956,632,4.155,633,6.412,634,7.59,635,5.67,636,5.594,637,4.155,638,4.155,639,4.155,640,4.155,641,0.658,642,3.625,643,4.155,644,4.155,645,4.155,646,4.155,647,0.994,648,4.155,649,4.155,650,4.925,651,4.155,652,5.646,653,4.155,654,4.155,655,4.155,656,4.155,657,7.194,658,4.155,659,6.412,660,4.155,661,5.646,662,1.953,663,4.155,664,4.155,665,4.45,666,4.155,667,3.014,668,3.275,669,4.155,670,4.155,671,3.014,672,4.155,673,4.155,674,4.925,675,6.412,676,4.155,677,4.155,678,3.625,679,4.155,680,4.155,681,4.155,682,2.806,683,3.275,684,2.238,685,1.953,686,3.014,687,4.155,688,2.484]],["title/interfaces/IAnswerListItem.html",[424,0.881,689,2.953]],["body/interfaces/IAnswerListItem.html",[0,0.459,3,0.13,4,0.114,5,0.38,8,0.098,10,0.231,11,0.255,12,0.322,15,0.179,16,0.266,20,0.322,27,0.013,33,0.162,34,0.233,35,1.677,42,0.283,43,0.567,68,0.231,69,1.612,70,0.162,73,1.253,74,0.341,76,0.13,77,0.022,78,1.793,93,1.296,98,0.83,99,0.809,112,0.837,116,0.843,118,0.673,131,1.644,132,2.213,134,2.265,135,1.05,178,0.435,202,0.274,282,0.421,283,0.667,284,0.603,315,0.009,316,0.009,324,1.34,332,1.433,349,0.935,350,1.191,356,2.556,360,1.587,374,0.935,378,1.533,406,1.901,413,1.296,424,1.334,426,1.976,431,1.173,434,2.231,442,0.623,463,3.88,487,1.26,489,2.836,490,2.836,491,2.836,492,3.167,493,2.836,494,2.836,497,1.325,513,1.296,522,2.231,544,0.837,621,1.587,641,0.752,689,5.589,690,3.204,691,3.74,692,3.204,693,3.14,694,1.474,695,3.204,696,1.34,697,4.473,698,3.519,699,2.556,700,3.74,701,3.204,702,3.143,703,3.204,704,3.22,705,4.029,706,4.164,707,3.204,708,4.164,709,2.688,710,2.231,711,3.204,712,2.836,713,3.322,714,3.204,715,3.204,716,3.204,717,4.164,718,3.519,719,3.088,720,5.4,721,3.204,722,4.164,723,2.33,724,2.33,725,2.688,726,3.204,727,3.442,728,3.74,729,3.74,730,1.703,731,3.204,732,2.437,733,2.231,734,3.74,735,3.74,736,3.204,737,3.74,738,2.688,739,2.836,740,3.204,741,3.204,742,3.204,743,3.006,744,2.437,745,3.74,746,3.204,747,3.204,748,4.164,749,3.204,750,4.164,751,3.204,752,3.204,753,2.688,754,4.164,755,2.33,756,2.836,757,3.204,758,3.204,759,3.204,760,4.164,761,2.231,762,2.556,763,2.688,764,3.204,765,3.204,766,3.74,767,4.897,768,3.006,769,3.74,770,4.86,771,2.437,772,3.006,773,3.74,774,3.74,775,3.74,776,3.74,777,3.442,778,2.836,779,3.74,780,3.006,781,3.204,782,2.688,783,3.204,784,3.204,785,3.204,786,3.442,787,3.74,788,2.836,789,3.74,790,3.74,791,4.164,792,3.204]],["title/interfaces/IButton.html",[424,0.881,793,2.579]],["body/interfaces/IButton.html",[0,0.527,3,0.162,4,0.142,8,0.122,10,0.288,11,0.293,12,0.403,13,0.629,15,0.224,16,0.333,20,0.403,27,0.013,33,0.203,34,0.268,42,0.325,43,0.576,68,0.242,70,0.203,73,1.567,74,0.426,76,0.162,77,0.027,80,0.689,81,1.083,86,1.046,92,1.341,178,0.471,202,0.297,264,0.552,265,0.739,315,0.011,316,0.011,424,1.283,426,2.469,434,2.788,442,0.778,487,0.94,693,3.4,696,1.674,771,3.047,793,4.802,794,5.174,795,5.174,796,4.675,797,6.85,798,5.174,799,3.545,800,4.675,801,4.675,802,5.174,803,5.174,804,5.174,805,5.174,806,5.174]],["title/interfaces/IButton-1.html",[173,0.839,424,0.734,793,2.15]],["body/interfaces/IButton-1.html",[0,0.444,3,0.124,4,0.108,8,0.093,10,0.22,11,0.247,12,0.307,13,0.53,15,0.171,16,0.254,20,0.307,23,0.307,24,0.616,27,0.013,33,0.155,34,0.269,35,1.045,42,0.306,43,0.575,46,4.331,51,0.381,55,2.434,58,1.622,65,0.268,68,0.239,69,1.399,70,0.155,72,0.69,74,0.325,76,0.124,77,0.021,78,1.476,80,0.525,81,0.825,86,0.796,88,0.914,89,0.825,90,0.977,92,1.321,93,1.234,98,0.953,99,0.593,173,1.117,178,0.444,202,0.279,283,0.593,284,0.362,285,0.421,315,0.009,316,0.009,324,1.275,325,2.807,331,1.565,335,2.321,347,4.508,349,0.815,368,2.321,374,0.616,378,1.336,389,3.277,406,1.81,413,1.234,423,2.124,424,0.977,426,1.881,433,1.565,434,2.124,442,0.593,463,4.191,487,1.204,489,2.7,490,2.7,491,2.7,492,3.436,493,2.7,494,2.7,497,1.179,500,4.331,513,1.234,533,2.434,560,4.707,641,0.716,690,3.051,693,3.291,694,1.428,695,3.051,696,1.686,702,2.68,718,3.436,730,1.622,767,4.805,771,2.321,778,3.569,780,2.862,781,3.051,782,3.789,783,3.051,784,3.051,791,4.032,792,3.051,793,4.688,807,3.941,808,3.941,809,6.631,810,2.222,811,4.331,812,1.81,813,2.321,814,3.561,815,2.862,816,3.941,817,3.941,818,3.941,819,3.941,820,3.941,821,3.561,822,3.941,823,5.834,824,3.941,825,3.277,826,3.561,827,3.561,828,3.941,829,5.209,830,3.941,831,2.434,832,6.207,833,3.941,834,3.941,835,5.209,836,5.209,837,2.124,838,3.561,839,1.411,840,3.277,841,3.277,842,5.209,843,5.209,844,3.941,845,3.941,846,3.941,847,3.941,848,3.941,849,3.561,850,3.941,851,3.941,852,3.561,853,3.561,854,3.941,855,3.941,856,3.941,857,3.941,858,3.941,859,3.283,860,3.051,861,3.941,862,3.941,863,2.862,864,3.941,865,2.486,866,4.032,867,5.209,868,5.209,869,3.941,870,3.051,871,3.941,872,2.321,873,3.561,874,3.277,875,3.941,876,3.277,877,3.941,878,3.941,879,2.7,880,3.941,881,3.941,882,3.941,883,2.862,884,3.941,885,3.941,886,3.277,887,3.941,888,3.941,889,3.941,890,3.941,891,3.941,892,3.941,893,3.941,894,5.834,895,5.272,896,3.941,897,3.941,898,3.941,899,3.941,900,3.941,901,3.783,902,5.834,903,4.707,904,3.941,905,3.941,906,3.051,907,3.277,908,3.561,909,3.561]],["title/interfaces/ICategoryList.html",[424,0.881,910,3.208]],["body/interfaces/ICategoryList.html",[0,0.493,3,0.146,4,0.128,8,0.11,10,0.259,11,0.274,12,0.361,13,0.588,15,0.251,16,0.299,20,0.361,23,0.361,24,1.032,27,0.013,32,2.762,33,0.182,34,0.251,42,0.274,43,0.539,51,0.449,65,0.377,68,0.244,69,1.388,70,0.182,72,0.813,73,1.406,74,0.383,76,0.146,77,0.025,80,0.619,81,0.971,86,0.938,88,1.342,91,3.371,92,1.233,95,3.758,98,0.645,118,0.94,173,1.87,267,0.495,315,0.01,316,0.01,325,3.118,413,1.453,424,1.151,426,2.216,431,1.315,433,1.844,434,2.502,442,0.698,497,1.169,513,1.453,558,3.118,641,0.843,694,1.586,730,1.91,771,2.734,813,2.734,837,3.557,910,5.697,911,4.642,912,4.642,913,4.642,914,2.613,915,4.642,916,4.642,917,5.786,918,4.642,919,5.786,920,5.786,921,5.786,922,5.786,923,4.642,924,6.6,925,6.6,926,4.88,927,4.195,928,4.642,929,5.786,930,7.099,931,4.642,932,6.6,933,4.642,934,4.195,935,6.791,936,3.861,937,4.642,938,3.181,939,4.642,940,6.6,941,5.786,942,4.642,943,4.642,944,4.642,945,4.642,946,5.786,947,4.642,948,4.642,949,4.642,950,3.965]],["title/interfaces/IDisplayGridParams.html",[424,0.881,951,3.208]],["body/interfaces/IDisplayGridParams.html",[0,0.474,2,0.38,3,0.137,4,0.12,5,0.401,8,0.103,10,0.243,11,0.264,12,0.339,15,0.189,16,0.281,20,0.339,27,0.013,33,0.171,34,0.241,35,1.624,42,0.306,43,0.551,68,0.216,69,1.548,70,0.171,74,0.36,76,0.137,77,0.023,78,1.576,93,1.365,99,0.922,112,0.882,116,0.908,118,0.709,128,0.623,131,2.21,132,2.521,134,2.386,135,1.195,147,1.238,171,2.521,233,0.685,247,0.465,315,0.01,316,0.01,324,1.412,332,1.51,349,0.958,350,1.048,356,2.694,360,1.673,374,1.097,378,1.709,424,1.082,426,2.082,431,1.236,442,0.656,487,1.258,497,0.882,522,2.351,621,1.673,641,0.792,692,3.377,694,1.525,698,2.568,701,4.307,702,3.182,703,4.307,704,3.477,705,4.252,706,4.742,707,4.995,708,4.742,709,3.613,710,2.998,711,4.995,712,3.812,713,3.783,714,4.995,715,3.377,716,3.377,717,4.307,719,2.254,721,5.16,722,4.995,723,2.455,724,2.455,725,2.833,726,3.377,731,3.377,732,2.568,733,2.351,736,3.377,738,2.833,739,2.989,740,3.377,741,3.377,742,3.377,743,3.168,744,2.568,746,3.377,747,3.377,748,4.307,749,3.377,750,4.307,751,3.377,752,3.377,753,2.833,754,4.307,755,2.455,756,2.989,757,3.377,758,3.377,759,3.377,760,4.307,761,2.351,762,2.694,763,2.833,764,3.377,936,3.627,951,5.536,952,4.362,953,4.362,954,6.452,955,3.522,956,3.607,957,6.665,958,4.362,959,4.362,960,4.362,961,5.563,962,4.362]],["title/interfaces/IEnketoFormData.html",[424,0.881,963,2.579]],["body/interfaces/IEnketoFormData.html",[0,0.559,2,0.329,3,0.119,4,0.104,5,0.348,8,0.135,10,0.211,11,0.24,12,0.294,13,0.515,15,0.164,17,0.366,20,0.294,24,0.592,27,0.013,33,0.148,34,0.219,35,1.344,42,0.335,43,0.569,54,2.984,58,1.556,63,0.848,65,0.328,68,0.236,70,0.148,74,0.312,76,0.119,77,0.02,78,1.857,80,0.504,89,0.791,90,0.938,98,0.525,184,3.031,189,1.072,198,0.466,199,0.294,202,0.164,245,0.326,269,0.348,270,0.525,315,0.009,316,0.009,331,1.502,334,2.038,341,3.217,349,0.592,357,2.336,364,1.737,368,2.227,393,2.038,406,1.737,413,1.911,417,2.747,418,2.592,424,1.515,426,1.805,442,0.569,448,3.917,452,4.157,457,1.401,487,1.156,497,1.155,513,2.051,523,2.336,526,2.928,533,2.336,586,2.227,641,0.687,647,1.037,705,2.227,710,2.038,719,1.955,723,2.129,724,2.129,730,2.086,732,2.984,733,2.038,744,2.227,761,2.038,810,2.162,812,1.737,831,2.336,865,1.805,872,2.227,914,3.918,938,2.592,950,2.592,963,4.435,964,2.928,965,2.928,966,4.727,967,4.425,968,5.073,969,4.929,970,4.727,971,4.727,972,4.727,973,4.727,974,4.727,975,4.727,976,4.363,977,2.592,978,2.928,979,2.928,980,2.954,981,1.613,982,1.955,983,3.681,984,2.747,985,3.923,986,2.747,987,2.928,988,2.592,989,4.151,990,2.747,991,2.928,992,3.681,993,2.456,994,2.747,995,2.747,996,2.747,997,5.073,998,2.928,999,2.928,1000,2.592,1001,2.592,1002,2.928,1003,2.928,1004,2.747,1005,3.53,1006,2.747,1007,2.747,1008,2.456,1009,3.923,1010,2.747,1011,2.456,1012,2.592,1013,2.456,1014,2.928,1015,2.928,1016,2.928,1017,2.592,1018,4.151,1019,2.928,1020,2.928,1021,2.336,1022,2.928,1023,2.747,1024,2.592,1025,3.473,1026,2.747,1027,2.928,1028,2.747,1029,2.747,1030,2.747,1031,2.747,1032,2.747,1033,2.928,1034,3.681,1035,2.928,1036,3.923,1037,3.681,1038,3.923,1039,2.928,1040,2.928,1041,2.928,1042,2.928,1043,2.928,1044,2.928,1045,4.727,1046,2.928,1047,2.928,1048,3.712,1049,3.13,1050,3.923,1051,2.928,1052,2.747,1053,2.928,1054,2.928,1055,2.928,1056,4.425,1057,2.928,1058,2.928,1059,2.928,1060,3.923,1061,2.928,1062,2.928,1063,3.923,1064,2.928,1065,2.928,1066,2.928,1067,2.928,1068,2.747,1069,2.928,1070,2.928,1071,2.928,1072,3.923,1073,2.928,1074,2.928,1075,2.928,1076,2.747,1077,2.928,1078,2.928,1079,4.425,1080,2.928,1081,2.928,1082,2.928,1083,2.747,1084,2.747,1085,2.747,1086,2.928,1087,2.747,1088,2.928,1089,2.928,1090,2.129,1091,2.928,1092,2.928,1093,2.928,1094,2.928,1095,2.928,1096,2.336,1097,2.336,1098,2.928,1099,2.928,1100,2.928,1101,2.928]],["title/interfaces/IEventFormSaved.html",[424,0.881,990,2.579]],["body/interfaces/IEventFormSaved.html",[0,0.566,2,0.345,3,0.124,4,0.109,5,0.364,8,0.138,10,0.221,11,0.247,12,0.308,13,0.531,15,0.171,17,0.383,20,0.308,24,0.619,27,0.013,33,0.155,34,0.226,35,1.385,42,0.187,43,0.55,54,3.075,58,1.628,63,0.887,65,0.301,68,0.239,70,0.155,74,0.326,76,0.124,77,0.021,78,1.881,80,0.527,89,0.828,90,0.981,98,0.549,184,1.964,189,1.121,198,0.364,199,0.308,202,0.171,245,0.336,269,0.364,270,0.537,315,0.009,316,0.009,331,1.571,334,2.132,341,3.29,349,0.619,357,2.443,364,1.818,368,2.33,393,2.132,406,1.818,413,1.946,417,2.874,418,2.711,424,1.542,426,1.888,442,0.595,448,4.006,452,4.136,457,1.466,487,1.174,497,1.181,513,2.078,523,2.443,533,2.443,586,2.33,641,0.719,647,1.085,705,2.33,710,2.132,719,2.045,723,2.227,724,2.227,730,2.149,732,3.075,733,2.132,744,2.33,761,2.132,810,2.228,812,1.818,831,2.443,865,1.888,872,2.33,914,3.736,938,2.711,950,2.711,963,4.245,964,3.063,965,3.063,966,4.525,967,4.043,968,4.525,969,4.043,970,3.063,971,3.063,972,3.063,973,3.063,974,3.063,976,4.26,977,2.711,978,3.063,979,3.063,980,3.021,981,1.688,982,2.045,983,4.515,984,2.874,985,4.043,986,2.874,987,3.063,988,2.711,989,4.245,990,3.793,991,4.812,992,3.793,993,2.569,994,2.874,995,2.874,996,2.874,997,5.139,998,3.063,999,3.063,1000,2.711,1001,2.711,1002,3.063,1003,3.063,1004,2.874,1005,3.61,1006,2.874,1007,2.874,1008,2.569,1009,4.043,1010,2.874,1011,2.569,1012,2.711,1013,2.569,1014,3.063,1015,3.063,1016,3.063,1017,2.711,1018,4.245,1019,3.063,1020,3.063,1021,2.443,1022,3.063,1023,2.874,1024,2.711,1025,3.579,1026,2.874,1027,3.063,1028,2.874,1029,2.874,1030,2.874,1031,2.874,1032,2.874,1033,3.063,1034,3.793,1035,3.063,1036,4.043,1037,3.793,1038,4.043,1039,3.063,1040,3.063,1041,3.063,1042,3.063,1043,3.063,1044,3.063,1045,4.812,1046,3.063,1047,3.063,1048,3.796,1049,3.225,1050,4.043,1051,3.063,1052,2.874,1053,3.063,1054,3.063,1055,3.063,1056,4.525,1057,3.063,1058,3.063,1059,3.063,1060,4.043,1061,3.063,1062,3.063,1063,4.043,1064,3.063,1065,3.063,1066,3.063,1067,3.063,1068,2.874,1069,3.063,1070,3.063,1071,3.063,1072,4.043,1073,3.063,1074,3.063,1075,3.063,1076,2.874,1077,3.063,1078,3.063,1079,4.525,1080,3.063,1081,3.063,1082,3.063,1083,2.874,1084,2.874,1085,2.874,1086,3.063,1087,2.874,1088,3.063,1089,3.063,1090,2.227,1091,3.063,1092,3.063,1093,3.063,1094,3.063,1095,3.063,1096,2.443,1097,2.443,1098,3.063,1099,3.063,1100,3.063,1101,3.063]],["title/interfaces/IFormEntry.html",[424,0.881,983,2.579]],["body/interfaces/IFormEntry.html",[0,0.561,2,0.334,3,0.12,4,0.105,5,0.353,8,0.136,10,0.214,11,0.242,12,0.298,13,0.52,15,0.166,17,0.371,20,0.298,24,0.6,27,0.013,33,0.151,34,0.221,35,1.357,42,0.323,43,0.567,54,3.013,58,1.579,63,1.29,65,0.346,68,0.237,70,0.151,74,0.316,76,0.12,77,0.02,78,1.864,80,0.511,89,0.803,90,0.952,98,0.533,184,1.904,189,1.087,198,0.353,199,0.298,202,0.266,245,0.329,269,0.353,270,0.529,315,0.009,316,0.009,331,1.524,334,2.067,341,3.24,349,0.6,357,2.369,364,1.762,368,2.259,393,2.067,406,1.762,413,1.922,417,2.786,418,2.629,424,1.523,426,1.831,442,0.577,448,3.945,452,4.125,457,1.421,487,1.162,497,1.163,513,2.06,523,2.369,533,2.369,586,2.259,641,0.697,647,1.051,705,2.259,710,2.067,719,1.983,723,2.159,724,2.159,730,2.105,732,3.013,733,2.067,744,2.259,761,2.067,810,2.183,812,1.762,831,2.369,865,1.831,872,2.259,914,3.703,938,2.629,950,2.629,963,4.181,964,2.97,965,2.97,966,4.456,967,3.961,968,4.456,969,4.952,970,2.97,971,2.97,972,2.97,973,2.97,974,2.97,976,4.603,977,2.629,978,2.97,979,2.97,980,2.975,981,1.636,982,1.983,983,4.181,984,4.46,985,4.952,986,4.46,987,4.754,988,2.629,989,4.779,990,2.786,991,2.97,992,3.716,993,2.491,994,2.786,995,2.786,996,2.786,997,5.094,998,2.97,999,2.97,1000,2.629,1001,2.629,1002,2.97,1003,2.97,1004,2.786,1005,3.555,1006,2.786,1007,2.786,1008,2.491,1009,3.961,1010,2.786,1011,2.491,1012,2.629,1013,2.491,1014,2.97,1015,2.97,1016,2.97,1017,2.629,1018,4.181,1019,2.97,1020,2.97,1021,2.369,1022,2.97,1023,2.786,1024,2.629,1025,3.506,1026,2.786,1027,2.97,1028,2.786,1029,2.786,1030,2.786,1031,2.786,1032,2.786,1033,2.97,1034,3.716,1035,2.97,1036,3.961,1037,3.716,1038,3.961,1039,2.97,1040,2.97,1041,2.97,1042,2.97,1043,2.97,1044,2.97,1045,4.754,1046,2.97,1047,2.97,1048,3.738,1049,3.159,1050,3.961,1051,2.97,1052,2.786,1053,2.97,1054,2.97,1055,2.97,1056,4.456,1057,2.97,1058,2.97,1059,2.97,1060,3.961,1061,2.97,1062,2.97,1063,3.961,1064,2.97,1065,2.97,1066,2.97,1067,2.97,1068,2.786,1069,2.97,1070,2.97,1071,2.97,1072,3.961,1073,2.97,1074,2.97,1075,2.97,1076,2.786,1077,2.97,1078,2.97,1079,4.456,1080,2.97,1081,2.97,1082,2.97,1083,2.786,1084,2.786,1085,2.786,1086,2.97,1087,2.786,1088,2.97,1089,2.97,1090,2.159,1091,2.97,1092,2.97,1093,2.97,1094,2.97,1095,2.97,1096,2.369,1097,2.369,1098,2.97,1099,2.97,1100,2.97,1101,2.97]],["title/interfaces/IODKFormComponentParameters.html",[424,0.881,992,2.579]],["body/interfaces/IODKFormComponentParameters.html",[0,0.565,2,0.342,3,0.123,4,0.108,5,0.361,8,0.147,10,0.219,11,0.246,12,0.305,13,0.528,15,0.17,17,0.38,20,0.305,24,0.614,27,0.013,33,0.154,34,0.225,35,1.377,42,0.186,43,0.556,54,3.059,58,1.615,63,0.88,65,0.3,68,0.238,70,0.154,74,0.324,76,0.123,77,0.021,78,1.877,80,0.523,89,0.821,90,0.974,98,0.545,184,1.948,189,1.112,198,0.361,199,0.305,202,0.17,245,0.375,269,0.361,270,0.535,315,0.009,316,0.009,331,1.559,334,2.115,341,3.277,349,0.614,350,0.978,357,2.424,364,1.803,368,2.311,393,2.115,406,1.803,413,1.94,417,2.851,418,2.69,424,1.537,426,1.873,442,0.591,448,3.99,452,4.142,457,1.454,487,1.171,497,1.177,513,2.073,523,2.424,533,3.208,586,2.311,641,0.713,647,1.076,705,2.311,710,2.115,719,2.029,723,2.209,724,2.209,730,2.138,732,3.059,733,2.115,744,2.311,761,2.115,810,2.216,812,1.803,831,2.424,865,1.873,872,2.311,914,3.727,938,2.69,950,2.69,963,4.229,964,3.039,965,3.039,966,4.797,967,4.507,968,4.507,969,4.021,970,3.039,971,3.039,972,3.039,973,3.039,974,3.039,976,4.247,977,2.69,978,3.039,979,3.039,980,3.01,981,1.674,982,2.029,983,3.773,984,2.851,985,4.021,986,2.851,987,3.039,988,2.69,989,4.229,990,2.851,991,3.039,992,4.229,993,3.374,994,3.773,995,3.773,996,3.773,997,5.373,998,3.039,999,3.039,1000,2.69,1001,2.69,1002,3.039,1003,3.039,1004,2.851,1005,3.596,1006,2.851,1007,2.851,1008,2.549,1009,4.021,1010,2.851,1011,2.549,1012,2.69,1013,2.549,1014,3.039,1015,3.039,1016,3.039,1017,2.69,1018,4.229,1019,3.039,1020,3.039,1021,2.424,1022,3.039,1023,2.851,1024,2.69,1025,3.56,1026,2.851,1027,3.039,1028,2.851,1029,2.851,1030,2.851,1031,2.851,1032,2.851,1033,3.039,1034,3.773,1035,3.039,1036,4.021,1037,3.773,1038,4.021,1039,3.039,1040,3.039,1041,3.039,1042,3.039,1043,3.039,1044,3.039,1045,4.797,1046,3.039,1047,3.039,1048,3.781,1049,3.208,1050,4.021,1051,3.039,1052,2.851,1053,3.039,1054,3.039,1055,3.039,1056,4.507,1057,3.039,1058,3.039,1059,3.039,1060,4.021,1061,3.039,1062,3.039,1063,4.021,1064,3.039,1065,3.039,1066,3.039,1067,3.039,1068,2.851,1069,3.039,1070,3.039,1071,3.039,1072,4.021,1073,3.039,1074,3.039,1075,3.039,1076,2.851,1077,3.039,1078,3.039,1079,4.507,1080,3.039,1081,3.039,1082,3.039,1083,2.851,1084,2.851,1085,2.851,1086,3.039,1087,2.851,1088,3.039,1089,3.039,1090,2.209,1091,3.039,1092,3.039,1093,3.039,1094,3.039,1095,3.039,1096,2.424,1097,2.424,1098,3.039,1099,3.039,1100,3.039,1101,3.039]],["title/interfaces/IRadioButtonGridParams.html",[424,0.881,697,2.953]],["body/interfaces/IRadioButtonGridParams.html",[0,0.452,3,0.127,4,0.111,5,0.372,8,0.096,10,0.226,11,0.251,12,0.315,15,0.175,16,0.261,20,0.315,27,0.013,33,0.159,34,0.23,35,1.663,42,0.297,43,0.566,68,0.23,69,1.602,70,0.159,73,1.226,74,0.334,76,0.127,77,0.021,78,1.777,93,1.267,98,0.821,99,0.889,112,0.818,116,0.89,118,0.658,131,2.106,132,2.433,134,2.437,135,1.153,178,0.278,202,0.175,282,0.412,283,0.679,284,0.598,315,0.009,316,0.009,324,1.31,332,1.401,349,0.925,356,2.5,360,1.553,374,1.045,378,1.516,406,1.86,413,1.267,424,1.315,426,1.932,431,1.147,434,2.182,442,0.609,463,4.338,487,1.254,489,2.774,490,2.774,491,2.774,492,3.122,493,2.774,494,2.774,497,1.316,513,1.267,522,2.182,544,0.818,621,1.553,641,0.735,689,5.661,690,3.134,691,3.658,692,3.134,693,2.01,694,1.453,695,3.134,696,1.31,697,4.916,698,3.694,699,3.274,700,4.791,701,4.104,702,3.172,703,4.104,704,3.38,705,4.15,706,4.576,707,4.856,708,4.576,709,3.443,710,2.857,711,4.856,712,3.633,713,3.651,714,4.856,715,3.134,716,3.134,717,4.104,718,3.481,719,3.056,720,5.342,721,3.134,722,4.104,723,2.279,724,2.279,725,2.629,726,3.134,727,3.367,728,3.658,729,3.658,730,1.666,731,3.134,732,2.384,733,2.182,734,3.658,735,3.658,736,3.134,737,3.658,738,2.629,739,2.774,740,3.134,741,3.134,742,3.134,743,2.94,744,2.384,745,3.658,746,3.134,747,3.134,748,4.104,749,3.134,750,4.104,751,3.134,752,3.134,753,2.629,754,4.104,755,2.279,756,2.774,757,3.134,758,3.134,759,3.134,760,4.104,761,2.182,762,2.5,763,2.629,764,3.134,765,3.134,766,3.658,767,4.856,768,2.94,769,3.658,770,4.791,771,2.384,772,2.94,773,3.658,774,3.658,775,3.658,776,3.658,777,3.367,778,2.774,779,3.658,780,2.94,781,3.134,782,2.629,783,3.134,784,3.134,785,3.134,786,3.367,787,3.658,788,2.774,789,3.658,790,3.658,791,4.104,792,3.134]],["title/interfaces/ITemplatePopupComponentProps.html",[424,0.881,1102,3.208]],["body/interfaces/ITemplatePopupComponentProps.html",[0,0.458,3,0.13,4,0.114,5,0.38,8,0.098,10,0.299,23,0.55,24,1.025,26,4.091,27,0.013,33,0.211,34,0.233,42,0.329,43,0.539,48,3.198,51,0.612,52,3.732,56,4.854,63,1.606,68,0.223,69,1.288,70,0.162,76,0.168,77,0.022,90,1.332,98,0.746,99,0.898,102,1.516,104,0.675,106,1.011,110,1.798,111,1.641,112,1.206,113,1.869,115,1.64,116,0.873,117,2.135,118,1.065,121,0.97,122,1.007,123,1.7,126,1.53,128,0.666,129,1.417,130,1.923,133,1.21,134,1.479,135,1.165,147,1.278,148,1.293,152,1.288,155,2.551,159,1.923,160,2.21,161,2.551,165,1.583,171,1.7,173,1.17,179,0.926,180,0.958,189,1.522,192,1.059,199,0.321,202,0.274,210,0.52,215,0.462,229,0.441,284,0.38,315,0.009,316,0.009,324,2.046,325,3.407,332,2.066,344,2.682,350,1.349,374,0.934,409,4.158,424,1.332,426,1.971,431,1.17,439,4.158,440,2.226,457,1.53,487,0.976,510,2.83,619,2.133,620,3.901,621,2.289,641,0.75,685,3.217,713,2.551,813,2.432,865,1.971,955,2.135,1048,2.682,1090,2.325,1102,5.394,1103,4.131,1104,5.97,1105,6.321,1106,6.934,1107,6.321,1108,6.321,1109,6.321,1110,5.372,1111,7.123,1112,4.854,1113,5.372,1114,4.158,1115,5.372,1116,4.158,1117,4.854,1118,3.681,1119,4.854,1120,5.372,1121,5.372,1122,5.97,1123,3.732,1124,4.131,1125,4.131,1126,4.131,1127,3,1128,3.732,1129,3.732,1130,4.131,1131,3.732,1132,4.131,1133,3.435,1134,4.158,1135,3.732,1136,4.131,1137,3.435,1138,4.131,1139,3.732,1140,4.131,1141,4.854,1142,3.732,1143,5.372,1144,2.83,1145,3.198,1146,4.131,1147,3.732,1148,4.131,1149,5.97,1150,5.372,1151,4.131,1152,4.131,1153,4.131,1154,4.131,1155,3.732,1156,4.131,1157,4.131,1158,4.131,1159,4.131,1160,4.131,1161,4.131]],["title/classes/MutationsTracker.html",[77,0.019,1162,3.551]],["body/classes/MutationsTracker.html",[3,0.078,4,0.068,6,0.577,8,0.059,15,0.311,24,0.788,27,0.013,33,0.257,34,0.162,36,0.499,42,0.117,43,0.528,44,0.523,50,1.936,51,0.632,55,2.79,58,2.341,61,0.643,63,1.324,65,0.128,76,0.078,77,0.02,89,1.19,90,1.656,92,1.105,98,0.52,99,0.373,110,1.81,115,1.297,132,1.542,144,1.63,173,1.28,178,0.372,193,1.02,199,0.572,202,0.275,245,0.409,315,0.009,316,0.007,331,2.148,342,4.684,348,2.314,349,0.707,350,0.851,364,1.138,374,0.586,401,3.116,487,1.233,488,4.082,497,1.475,510,4.479,522,1.335,523,3.648,531,3.385,544,0.501,558,3.91,623,3.928,702,2.714,718,3.582,719,2.335,743,4.522,756,4.652,763,2.934,765,1.918,778,1.698,859,3.325,860,4.709,865,1.183,874,2.061,876,5.684,903,4.082,976,2.567,1012,1.698,1032,5.261,1052,1.8,1085,2.721,1097,3.11,1114,3.899,1118,1.698,1145,2.9,1162,4.518,1163,6.772,1164,2.84,1165,5.179,1166,5.179,1167,4.295,1168,4.295,1169,5.773,1170,4.295,1171,4.295,1172,5.773,1173,2.84,1174,4.295,1175,2.84,1176,4.295,1177,4.295,1178,6.2,1179,2.84,1180,2.84,1181,2.84,1182,5.179,1183,6.521,1184,5.773,1185,5.179,1186,5.179,1187,7.392,1188,6.2,1189,2.84,1190,3.657,1191,3.757,1192,5.179,1193,3.747,1194,1.8,1195,2.84,1196,4.913,1197,4.295,1198,4.295,1199,4.295,1200,5.179,1201,5.059,1202,2.84,1203,5.773,1204,5.773,1205,6.521,1206,3.747,1207,3.747,1208,4.295,1209,2.84,1210,4.295,1211,4.295,1212,2.84,1213,4.295,1214,5.179,1215,4.295,1216,4.295,1217,2.84,1218,5.036,1219,2.84,1220,2.84,1221,4.295,1222,2.84,1223,2.84,1224,5.179,1225,2.061,1226,2.061,1227,2.84,1228,2.84,1229,2.84,1230,4.295,1231,6.772,1232,4.295,1233,5.773,1234,5.179,1235,5.179,1236,5.179,1237,4.295,1238,4.295,1239,4.518,1240,3.747,1241,3.747,1242,5.773,1243,2.239,1244,4.295,1245,4.295,1246,2.84,1247,2.84,1248,3.747,1249,2.84,1250,5.179,1251,4.295,1252,2.84,1253,2.84,1254,2.84,1255,5.179,1256,2.84,1257,5.773,1258,2.84,1259,2.84,1260,2.84,1261,2.478,1262,2.84,1263,5.773,1264,4.295,1265,4.295,1266,2.84,1267,2.84,1268,2.84,1269,2.84,1270,2.84,1271,2.478,1272,2.84,1273,2.84,1274,5.179,1275,4.295,1276,2.84,1277,2.84,1278,5.338,1279,2.84,1280,2.84,1281,2.84,1282,2.84,1283,5.907,1284,2.84,1285,2.84,1286,2.478,1287,2.478,1288,2.84,1289,2.84,1290,3.385,1291,2.84,1292,4.295,1293,2.84,1294,2.84,1295,2.84,1296,2.84,1297,2.84,1298,2.84,1299,2.84,1300,2.84,1301,2.84,1302,4.295,1303,2.84,1304,2.84,1305,2.478,1306,2.84,1307,2.84,1308,2.84,1309,4.295,1310,2.84,1311,2.84,1312,2.84,1313,2.84,1314,6.2,1315,5.179,1316,2.84,1317,2.84,1318,2.84,1319,2.84,1320,2.84,1321,4.295,1322,2.84,1323,5.773,1324,2.84,1325,2.84,1326,2.84,1327,2.84,1328,2.84,1329,2.84,1330,2.84,1331,2.84,1332,2.84,1333,2.84,1334,2.84,1335,2.84,1336,4.295,1337,4.295,1338,5.179,1339,2.84,1340,4.295,1341,2.84,1342,2.478,1343,2.84,1344,2.478,1345,1.918,1346,2.84,1347,2.84,1348,4.295,1349,2.84,1350,2.84,1351,4.295,1352,2.84,1353,2.84,1354,1.918,1355,2.239,1356,2.84,1357,2.84,1358,2.84,1359,2.84,1360,2.84,1361,2.84,1362,2.84,1363,2.84,1364,2.84,1365,2.84,1366,2.84,1367,2.84,1368,2.84,1369,2.84,1370,2.84]],["title/components/NavGroupComponent.html",[0,0.303,214,0.397]],["body/components/NavGroupComponent.html",[0,0.444,1,0.297,2,0.343,3,0.083,4,0.073,5,0.432,6,0.283,7,0.31,8,0.063,10,0.22,11,0.126,14,0.31,15,0.322,16,0.475,17,0.672,18,0.551,19,0.694,23,0.51,24,1.048,26,1.817,27,0.013,33,0.229,34,0.171,35,1.381,36,0.525,38,1.461,42,0.306,43,0.433,44,0.621,48,3.643,51,0.614,55,1.638,57,3.056,61,0.745,62,0.353,63,0.594,65,0.327,68,0.213,70,0.104,76,0.083,77,0.014,78,0.751,89,0.555,90,0.658,92,0.482,98,0.81,99,0.708,100,0.636,102,1.4,104,0.715,106,1.099,109,0.31,110,1.575,111,1.869,112,0.951,113,0.83,115,1.489,116,0.627,118,0.948,121,1.031,122,1.119,128,0.666,129,1.608,130,1.685,131,1.869,132,1.091,146,0.31,147,1.179,148,1.264,151,1.29,152,1.129,159,2.271,160,2.555,165,1.381,168,0.776,173,1.829,178,0.271,189,0.751,192,1.497,197,0.31,198,0.432,199,0.307,200,0.31,201,0.31,202,0.279,203,0.461,204,0.297,205,0.551,206,0.297,207,0.61,208,0.283,209,0.441,210,0.257,211,0.31,212,0.297,213,0.461,214,0.583,215,0.777,216,0.297,217,0.31,218,0.551,219,0.297,220,0.297,221,0.461,222,0.297,223,0.461,224,0.297,225,0.31,226,0.297,227,0.61,228,0.733,229,0.283,230,0.297,231,0.297,232,0.31,233,0.441,234,0.61,235,0.297,236,0.31,237,0.297,238,0.31,239,0.297,240,0.297,241,0.31,242,0.297,243,0.297,244,0.297,245,0.376,246,0.31,247,0.283,248,0.461,249,0.297,250,0.297,251,0.31,252,0.297,253,0.257,254,0.31,255,0.297,256,0.31,257,0.297,258,0.31,259,0.297,260,0.31,261,0.297,262,0.297,263,0.31,264,0.283,265,0.297,266,0.551,267,0.283,268,0.31,269,0.244,270,0.244,271,0.297,272,0.31,273,0.31,274,0.297,275,0.31,276,0.31,277,0.297,278,0.31,279,0.297,280,0.31,281,0.31,282,0.27,283,0.401,284,0.244,285,0.283,286,0.297,287,0.31,288,0.31,289,0.297,290,0.551,291,0.31,292,0.297,293,0.31,294,0.297,295,0.461,296,0.31,297,0.297,298,0.297,299,0.31,300,0.297,301,0.297,302,0.297,303,0.31,304,0.244,305,0.31,306,0.297,307,0.31,308,0.297,309,0.31,310,0.297,311,0.31,312,0.297,313,0.31,314,0.31,315,0.007,316,0.007,319,2.322,320,3.279,321,3.562,322,3.562,323,4.252,324,2.053,325,1.429,326,5.025,327,2.652,328,2.205,329,2.053,330,1.926,331,1.053,332,2.02,333,2.652,334,1.429,335,1.562,336,2.205,337,3.562,338,3.643,342,3.999,344,3.056,347,1.926,349,0.871,350,1.048,351,2.863,354,3.562,360,1.017,362,2.652,363,2.396,364,1.218,365,3.562,366,2.396,367,2.053,368,2.322,369,2.396,370,2.396,371,2.205,372,2.053,373,2.652,374,0.815,375,2.652,381,2.396,382,2.205,410,1.722,413,1.827,420,2.652,421,2.648,423,2.125,431,0.751,457,0.983,487,1.011,492,1.562,497,1.221,513,0.83,544,0.536,554,1.817,558,2.125,641,0.482,647,0.727,665,5.46,668,3.562,671,2.205,698,3.279,718,2.771,723,1.493,739,1.817,772,1.926,859,2.932,863,2.863,873,3.562,879,1.817,901,2.863,981,1.131,1008,3.056,1090,1.493,1134,3.643,1142,3.562,1190,1.926,1194,1.926,1196,3.643,1371,3.04,1372,3.784,1373,5.394,1374,3.643,1375,4.252,1376,5.394,1377,5.394,1378,5.394,1379,4.252,1380,3.418,1381,4.706,1382,4.252,1383,4.706,1384,2.771,1385,5.394,1386,5.394,1387,5.394,1388,5.394,1389,5.394,1390,5.394,1391,5.394,1392,4.52,1393,5.394,1394,5.973,1395,2.652,1396,4.853,1397,4.52,1398,4.52,1399,3.04,1400,5.973,1401,4.52,1402,3.04,1403,4.52,1404,3.943,1405,4.52,1406,3.04,1407,3.04,1408,3.04,1409,3.643,1410,4.52,1411,5.394,1412,3.943,1413,3.04,1414,3.04,1415,2.652,1416,2.652,1417,3.04,1418,3.04,1419,3.04,1420,2.205,1421,3.04,1422,3.04,1423,5.973,1424,3.04,1425,3.04,1426,2.652,1427,3.225,1428,2.652,1429,3.04,1430,2.652,1431,6.383,1432,3.04,1433,4.52,1434,5.394,1435,5.568,1436,2.652,1437,3.04,1438,3.562,1439,5.394,1440,3.943,1441,3.04,1442,6.383,1443,3.04,1444,2.396,1445,3.04,1446,2.652,1447,2.652,1448,4.52,1449,3.04,1450,2.652,1451,2.205,1452,3.04,1453,3.04,1454,3.04,1455,2.053,1456,2.652,1457,3.04,1458,3.04,1459,3.04,1460,2.396,1461,4.52,1462,3.04,1463,3.04,1464,3.04,1465,3.04,1466,3.04,1467,3.04,1468,3.04,1469,2.652,1470,3.04,1471,3.04,1472,3.04,1473,3.04,1474,3.04,1475,3.04,1476,3.04]],["title/classes/PausedState.html",[77,0.019,1477,2.579]],["body/classes/PausedState.html",[0,0.466,3,0.133,4,0.117,8,0.101,10,0.337,11,0.259,12,0.331,13,0.556,15,0.184,16,0.274,20,0.331,23,0.331,24,0.947,27,0.013,32,2.028,33,0.167,34,0.237,35,1.451,36,0.729,42,0.313,43,0.562,44,0.633,61,0.845,62,0.881,63,1.226,65,0.329,68,0.249,69,1.451,70,0.167,71,1.63,72,0.744,74,0.35,76,0.133,77,0.029,89,1.337,90,1.054,92,1.201,93,1.33,98,0.76,173,1.55,178,0.292,202,0.237,245,0.352,253,0.411,304,0.608,315,0.01,316,0.01,319,2.502,326,5.629,331,2.173,332,1.894,349,0.856,350,1.03,360,1.63,377,3.966,431,1.204,433,1.688,440,2.29,442,0.639,445,2.29,487,1.099,497,0.859,522,2.29,544,0.859,573,2.624,574,2.624,583,3.086,616,1.422,641,0.994,694,1.5,696,1.375,755,2.391,810,2.581,812,1.952,956,3.222,980,2.196,981,1.813,982,2.196,1477,3.973,1478,3.289,1479,4.64,1480,4.946,1481,4.946,1482,5.032,1483,5.468,1484,4.55,1485,4.235,1486,4.871,1487,4.249,1488,4.871,1489,4.871,1490,4.249,1491,4.249,1492,3.534,1493,4.684,1494,4.684,1495,4.249,1496,3.289,1497,3.289,1498,3.289,1499,3.289,1500,3.289,1501,4.235,1502,3.289,1503,3.289,1504,3.289,1505,3.289,1506,3.289,1507,3.289,1508,3.289,1509,3.289,1510,3.086,1511,3.289,1512,3.289,1513,3.289,1514,3.289,1515,3.289,1516,3.289,1517,3.289,1518,3.289,1519,3.289,1520,3.289,1521,3.086,1522,3.289,1523,3.289,1524,3.289,1525,3.289,1526,3.086,1527,3.289,1528,3.289,1529,3.289,1530,3.289,1531,3.086,1532,4.946,1533,3.289,1534,3.289,1535,3.289,1536,3.289,1537,3.289,1538,3.289,1539,3.289,1540,3.289,1541,3.289,1542,3.289,1543,3.289,1544,3.289,1545,3.289,1546,4.684,1547,3.289,1548,4.235,1549,3.289,1550,3.289,1551,3.289,1552,3.289,1553,3.289,1554,3.973,1555,3.289,1556,3.289,1557,3.289,1558,3.289,1559,3.289,1560,3.289,1561,3.086,1562,3.289,1563,3.289,1564,3.289,1565,3.289,1566,3.289,1567,3.289]],["title/classes/PlayingState.html",[77,0.019,1568,3.551]],["body/classes/PlayingState.html",[0,0.465,3,0.132,4,0.116,8,0.1,10,0.336,11,0.258,12,0.329,13,0.554,15,0.183,16,0.272,20,0.329,23,0.329,24,0.944,27,0.013,32,2.016,33,0.166,34,0.236,35,1.445,36,0.726,42,0.313,43,0.562,44,0.64,61,0.863,62,0.901,63,1.222,65,0.329,68,0.248,69,1.447,70,0.166,71,1.62,72,0.74,74,0.348,76,0.132,77,0.029,89,1.334,90,1.048,92,1.199,93,1.322,98,0.757,173,1.544,178,0.291,202,0.236,245,0.351,253,0.409,304,0.606,315,0.01,316,0.01,319,2.488,326,5.62,331,2.165,332,1.887,349,0.853,350,1.026,360,1.62,377,3.962,431,1.197,433,1.678,440,2.277,442,0.636,445,2.277,487,1.096,497,0.854,522,2.277,544,0.854,573,2.609,574,2.609,583,3.068,616,1.414,641,0.99,694,1.494,696,1.367,755,2.378,810,2.574,812,1.941,956,3.21,980,2.184,981,1.802,982,2.184,1477,3.068,1478,3.271,1479,4.63,1480,4.936,1481,4.936,1482,5.018,1483,5.453,1484,4.533,1485,4.22,1487,4.225,1490,4.225,1491,4.225,1492,3.513,1493,4.671,1494,4.671,1495,4.225,1496,3.271,1497,3.271,1498,3.271,1499,3.271,1500,3.271,1501,4.22,1502,3.271,1503,3.271,1504,3.271,1505,3.271,1506,3.271,1507,3.271,1508,3.271,1509,3.271,1510,3.068,1511,3.271,1512,3.271,1513,3.271,1514,3.271,1515,3.271,1516,3.271,1517,3.271,1518,3.271,1519,3.271,1520,3.271,1521,3.068,1522,3.271,1523,3.271,1524,3.271,1525,3.271,1526,3.068,1527,3.271,1528,3.271,1529,3.271,1530,3.271,1531,3.068,1532,4.936,1533,3.271,1534,3.271,1535,3.271,1536,3.271,1537,3.271,1538,3.271,1539,3.271,1540,3.271,1541,3.271,1542,3.271,1543,3.271,1544,3.271,1545,3.271,1546,4.671,1547,3.271,1548,4.22,1549,3.271,1550,3.271,1551,3.271,1552,3.271,1553,3.271,1554,3.959,1555,3.271,1556,3.271,1557,3.271,1558,3.271,1559,3.271,1560,3.271,1561,3.068,1562,3.271,1563,3.271,1564,3.271,1565,3.271,1566,3.271,1567,3.271,1568,4.225,1569,6.918,1570,4.843,1571,4.843,1572,4.843,1573,4.843]],["title/components/RoundIconButtonComponent.html",[0,0.303,216,0.397]],["body/components/RoundIconButtonComponent.html",[0,0.364,1,0.253,2,0.304,3,0.071,4,0.062,5,0.208,6,0.241,7,0.264,8,0.053,10,0.195,11,0.227,12,0.272,13,0.434,14,0.264,15,0.319,16,0.471,17,0.646,18,0.499,19,0.253,20,0.272,23,0.472,24,1.078,27,0.013,33,0.089,34,0.151,36,0.465,38,1.294,42,0.303,43,0.482,44,0.596,50,2.481,51,0.464,61,0.446,62,0.465,63,1.23,65,0.116,68,0.194,69,1.023,70,0.089,71,0.867,72,0.396,74,0.186,76,0.071,77,0.012,80,0.301,81,0.473,82,1.641,85,1.749,86,0.97,88,1.113,89,1.197,90,0.56,98,0.593,99,0.86,100,0.542,101,0.837,102,1.759,104,0.793,105,2.921,106,1.324,107,3.056,108,2.921,109,0.264,110,1.168,111,0.897,112,1.35,113,1.336,115,1.245,116,0.948,117,1.168,118,1.153,121,1.183,122,1.205,123,0.93,124,1.25,126,0.837,127,1.775,128,0.617,129,1.324,131,1.695,133,1.607,134,1.528,135,0.937,141,1.637,143,2.124,144,1.381,146,0.409,147,1.31,148,1.386,149,2.771,151,1.316,152,1.485,153,2.384,154,1.698,158,2.964,163,2.119,165,1.642,168,0.264,171,1.975,172,2.267,173,0.64,175,1.879,178,0.446,179,1.484,180,1.462,182,1.779,183,1.121,184,2.383,185,1.467,186,3.486,189,0.989,190,2.336,192,1.231,193,0.93,197,0.264,198,0.392,199,0.272,200,0.264,201,0.264,202,0.248,203,0.409,204,0.253,205,0.499,206,0.253,207,0.562,208,0.241,209,0.39,210,0.553,211,0.264,212,0.253,213,0.409,214,0.253,215,0.253,216,0.537,217,0.81,218,0.499,219,0.253,220,0.253,221,0.409,222,0.253,223,0.847,224,0.253,225,0.264,226,0.253,227,0.562,228,0.253,229,0.241,230,0.253,231,0.253,232,0.264,233,0.39,234,0.562,235,0.253,236,0.264,237,0.253,238,0.264,239,0.253,240,0.253,241,0.264,242,0.253,243,0.253,244,0.253,245,0.225,246,0.264,247,0.241,248,0.409,249,0.253,250,0.253,251,0.264,252,0.253,253,0.219,254,0.264,255,0.253,256,0.264,257,0.253,258,0.264,259,0.253,260,0.264,261,0.253,262,0.253,263,0.264,264,0.241,265,0.58,266,0.499,267,0.241,268,0.264,269,0.208,270,0.208,271,0.253,272,0.264,273,0.264,274,0.253,275,0.264,276,0.264,277,0.253,278,0.264,279,0.253,280,0.264,281,0.264,282,0.23,283,0.355,284,0.648,285,0.241,286,0.253,287,0.264,288,0.264,289,0.253,290,0.264,291,0.264,292,0.253,293,0.264,294,0.253,295,0.409,296,0.264,297,0.253,298,0.253,299,0.264,300,0.253,301,0.253,302,0.253,303,0.264,304,0.208,305,0.264,306,0.253,307,0.264,308,0.253,309,0.264,310,0.253,311,0.264,312,0.253,313,0.264,314,0.264,315,0.006,316,0.006,325,2.3,348,2.635,349,0.546,350,0.657,374,0.858,378,1.407,406,1.038,408,1.749,421,1.272,423,1.218,431,0.64,442,0.525,445,1.882,457,0.837,487,0.41,510,2.393,544,0.457,558,2.3,615,1.641,616,2.215,619,2.179,621,2.266,623,2.536,627,0.964,628,1.666,641,0.634,647,0.619,662,1.218,682,4.427,684,2.635,685,2.587,686,3.549,694,1.17,696,0.731,699,2.156,704,2.797,782,1.467,810,2.048,813,1.33,839,0.809,866,1.749,926,3.303,955,1.168,1021,1.395,1118,1.548,1225,1.879,1374,1.749,1380,1.641,1384,2.513,1574,7.515,1575,7.515,1576,2.259,1577,4.267,1578,2.59,1579,3.856,1580,3.155,1581,4.267,1582,3.117,1583,3.856,1584,4.892,1585,2.924,1586,3.491,1587,2.042,1588,4.002,1589,2.903,1590,2.59,1591,2.259,1592,2.59,1593,3.491,1594,2.59,1595,2.59,1596,2.59,1597,2.259,1598,2.59,1599,2.259,1600,2.259,1601,2.59,1602,4.002,1603,2.259,1604,1.879,1605,2.259,1606,2.259,1607,2.042,1608,3.549,1609,3.155,1610,1.879,1611,1.467,1612,2.259,1613,2.259,1614,2.59,1615,2.59,1616,2.042,1617,2.259,1618,2.042,1619,4.403,1620,3.549,1621,3.155,1622,3.155,1623,3.155,1624,3.491,1625,3.155,1626,3.491,1627,1.882,1628,3.491,1629,2.259,1630,2.042,1631,2.259,1632,1.749,1633,2.259,1634,1.749,1635,2.259,1636,2.259,1637,2.703,1638,2.703,1639,1.749,1640,1.749,1641,3.491,1642,2.042,1643,2.259,1644,1.467,1645,2.042,1646,2.259,1647,2.259,1648,3.491,1649,3.491,1650,3.491,1651,2.903,1652,1.879,1653,1.641,1654,1.467,1655,1.548,1656,2.259,1657,1.965,1658,3.491,1659,2.259,1660,2.259,1661,2.042,1662,2.259,1663,2.259,1664,2.259,1665,1.879,1666,2.259,1667,3.549,1668,2.259,1669,2.042,1670,3.856,1671,5.503,1672,1.879,1673,2.259,1674,2.259,1675,6.289,1676,2.59,1677,3.155,1678,2.59,1679,2.59,1680,2.59,1681,2.59,1682,2.59,1683,2.59,1684,2.59,1685,2.59,1686,2.59,1687,2.59]],["title/components/SelectTextComponent.html",[0,0.303,219,0.397]],["body/components/SelectTextComponent.html",[0,0.449,1,0.362,2,0.396,3,0.101,4,0.157,5,0.297,6,0.345,7,0.378,8,0.076,10,0.254,11,0.271,12,0.354,13,0.535,14,0.378,15,0.324,16,0.481,17,0.684,18,0.616,19,0.362,20,0.354,23,0.469,24,0.506,27,0.013,33,0.127,34,0.197,35,1.937,36,0.606,42,0.323,43,0.518,44,0.633,48,2.503,49,2.688,50,1.671,51,0.313,61,0.673,62,0.431,63,1.4,65,0.271,68,0.22,70,0.127,71,1.745,72,0.566,73,0.979,74,0.266,76,0.101,77,0.017,80,0.431,81,0.677,86,1.155,88,1.221,89,1.196,92,0.587,93,1.012,98,0.794,99,0.792,100,0.775,101,1.198,102,1.091,104,0.755,106,1.134,109,0.378,110,1.082,111,1.284,112,1.064,113,1.012,114,1.819,116,0.761,118,0.979,121,1.015,122,1.124,124,0.947,126,1.686,127,1.046,128,0.463,129,0.725,133,0.947,135,0.888,141,1.745,144,1.046,146,0.378,147,1.155,148,0.986,152,1.444,154,0.886,159,1.157,160,1.33,165,0.857,168,0.378,173,0.916,178,0.464,179,1.02,180,1.055,190,1.082,192,0.829,197,0.378,198,0.484,199,0.354,200,0.378,201,0.378,202,0.27,203,0.533,204,0.362,205,0.616,206,0.362,207,0.669,208,0.345,209,0.509,210,0.509,211,0.378,212,0.362,213,0.533,214,0.362,215,0.362,216,0.362,217,0.378,218,0.616,219,0.639,220,0.733,221,0.533,222,0.362,223,0.616,224,0.362,225,0.378,226,0.362,227,0.669,228,0.362,229,0.345,230,0.362,231,0.362,232,0.378,233,0.639,234,0.669,235,0.362,236,0.378,237,0.362,238,0.378,239,0.362,240,0.362,241,0.378,242,0.362,243,0.362,244,0.362,245,0.293,246,0.378,247,0.345,248,0.533,249,0.362,250,0.362,251,0.378,252,0.362,253,0.313,254,0.378,255,0.362,256,0.378,257,0.362,258,0.378,259,0.362,260,0.378,261,0.362,262,0.362,263,0.378,264,0.345,265,0.362,266,0.616,267,0.345,268,0.378,269,0.297,270,0.297,271,0.362,272,0.378,273,0.378,274,0.362,275,0.378,276,0.378,277,0.362,278,0.378,279,0.362,280,0.378,281,0.378,282,0.329,283,0.463,284,0.418,285,0.345,286,0.362,287,0.378,288,0.378,289,0.362,290,0.378,291,0.378,292,0.362,293,0.378,294,0.362,295,0.533,296,0.378,297,0.362,298,0.362,299,0.378,300,0.362,301,0.362,302,0.362,303,0.378,304,0.297,305,0.378,306,0.362,307,0.378,308,0.362,309,0.669,310,0.362,311,0.378,312,0.362,313,0.378,314,0.378,315,0.008,316,0.008,319,3.1,332,1.822,349,0.506,350,0.609,374,0.712,378,1.466,385,2.921,413,1.955,431,0.916,433,1.284,442,0.685,454,4.379,455,2.348,456,4.15,471,2.688,473,2.688,474,2.348,487,0.587,513,1.424,616,1.523,621,2.019,627,1.379,628,1.543,641,0.587,662,1.742,693,1.605,694,1.443,702,1.485,713,1.996,815,2.348,837,1.742,839,1.157,1155,4.758,1384,1.904,1479,2.348,1585,3.608,1672,2.688,1688,7.961,1689,7.961,1690,3.706,1691,6.036,1692,5.216,1693,5.265,1694,4.758,1695,6.036,1696,6.551,1697,5.216,1698,3.706,1699,3.706,1700,5.216,1701,3.706,1702,3.706,1703,3.706,1704,3.706,1705,3.706,1706,5.216,1707,3.706,1708,3.706,1709,5.265,1710,3.706,1711,3.706,1712,3.706,1713,5.216,1714,3.233,1715,3.233,1716,2.348,1717,2.348,1718,3.233,1719,3.233,1720,2.921,1721,2.921,1722,6.551,1723,3.706,1724,3.706,1725,2.348,1726,3.706,1727,3.706,1728,3.706,1729,5.216,1730,5.216,1731,5.216,1732,5.216,1733,5.216,1734,3.118,1735,3.233,1736,2.503,1737,3.706,1738,3.706,1739,3.233,1740,3.233]],["title/components/SquareIconButtonComponent.html",[0,0.303,222,0.397]],["body/components/SquareIconButtonComponent.html",[0,0.471,1,0.395,2,0.422,3,0.111,4,0.097,5,0.325,6,0.377,7,0.414,8,0.084,10,0.27,11,0.281,12,0.377,13,0.561,14,0.414,15,0.326,16,0.482,17,0.692,18,0.646,19,0.395,20,0.377,23,0.484,24,0.757,27,0.013,33,0.139,34,0.21,36,0.645,42,0.304,43,0.462,44,0.604,50,3.069,51,0.342,61,0.618,62,0.645,63,1.331,65,0.182,68,0.209,70,0.139,71,1.355,72,0.619,73,1.07,74,0.291,76,0.111,77,0.019,80,0.471,81,0.74,82,2.566,85,2.736,86,1.2,88,1.122,89,1.302,90,0.877,98,0.672,100,0.848,101,1.309,102,1.629,104,0.752,105,2.724,106,1.118,108,2.724,109,0.414,112,1.116,114,1.989,115,0.848,116,0.645,118,0.787,121,1.044,127,1.566,128,0.561,129,0.792,130,1.265,135,0.69,146,0.804,147,0.978,148,1.048,151,0.969,152,1.161,153,2.223,158,3.667,161,2.182,162,2.295,168,0.414,178,0.333,179,0.792,180,0.819,190,1.987,192,1.241,197,0.414,198,0.507,199,0.377,200,0.414,201,0.414,202,0.285,203,0.567,204,0.395,205,0.646,206,0.395,207,0.695,208,0.377,209,0.541,210,0.342,211,0.414,212,0.395,213,0.567,214,0.395,215,0.395,216,0.395,217,0.414,218,0.646,219,0.395,220,0.395,221,0.567,222,0.664,223,0.86,224,0.395,225,0.414,226,0.395,227,0.695,228,0.395,229,0.377,230,0.395,231,0.395,232,0.414,233,0.541,234,0.695,235,0.395,236,0.414,237,0.395,238,0.414,239,0.395,240,0.395,241,0.414,242,0.395,243,0.395,244,0.395,245,0.227,246,0.414,247,0.377,248,0.567,249,0.395,250,0.395,251,0.414,252,0.395,253,0.342,254,0.414,255,0.395,256,0.414,257,0.395,258,0.414,259,0.395,260,0.414,261,0.395,262,0.395,263,0.414,264,0.377,265,0.617,266,0.646,267,0.377,268,0.414,269,0.325,270,0.325,271,0.395,272,0.414,273,0.414,274,0.395,275,0.414,276,0.414,277,0.395,278,0.414,279,0.395,280,0.414,281,0.414,282,0.359,283,0.492,284,0.615,285,0.377,286,0.395,287,0.414,288,0.414,289,0.395,290,0.414,291,0.414,292,0.395,293,0.414,294,0.395,295,0.567,296,0.414,297,0.395,298,0.395,299,0.414,300,0.395,301,0.395,302,0.395,303,0.414,304,0.325,305,0.414,306,0.395,307,0.414,308,0.395,309,0.414,310,0.395,311,0.414,312,0.395,313,0.414,314,0.414,315,0.008,316,0.008,348,2.182,349,0.757,350,0.911,374,0.757,378,1.523,423,1.904,442,0.728,457,1.309,487,0.642,510,3.317,544,0.714,616,1.847,621,1.355,641,0.642,647,0.969,662,1.904,682,3.747,694,1.513,810,2.533,839,1.265,1576,3.534,1577,5.521,1579,4.988,1580,4.374,1582,3.856,1583,4.988,1586,4.84,1587,3.193,1589,4.025,1591,3.534,1593,4.84,1597,3.534,1599,4.84,1600,3.534,1603,3.534,1604,2.939,1605,3.534,1606,3.534,1607,3.193,1608,4.025,1609,4.374,1611,2.295,1616,3.193,1617,3.534,1620,2.939,1621,3.193,1622,3.193,1623,3.193,1627,1.904,1741,7.677,1742,7.677,1743,4.051,1744,4.051,1745,3.534]],["title/classes/State.html",[77,0.019,377,1.998]],["body/classes/State.html",[0,0.469,3,0.135,4,0.118,8,0.102,10,0.307,11,0.261,12,0.334,13,0.56,15,0.186,16,0.276,20,0.334,23,0.334,24,0.951,27,0.013,32,2.049,33,0.168,34,0.238,35,1.46,36,0.734,42,0.314,43,0.563,44,0.634,61,0.847,62,0.884,63,1.234,65,0.331,68,0.249,69,1.458,70,0.168,71,1.646,72,0.752,74,0.354,76,0.135,77,0.029,89,1.342,90,1.065,92,1.205,93,1.344,98,0.765,173,1.56,178,0.295,202,0.238,245,0.354,253,0.415,304,0.609,315,0.01,316,0.01,319,2.528,331,2.187,332,1.906,349,0.861,350,1.037,360,1.646,377,3.422,431,1.216,433,1.705,440,2.313,442,0.646,445,2.313,487,1.104,497,0.867,522,2.313,544,0.867,573,2.651,574,2.651,583,3.117,616,1.436,641,1,694,1.509,696,1.389,755,2.416,810,2.594,812,1.972,956,3.243,980,2.218,981,1.831,982,2.218,1477,3.117,1478,3.323,1479,4.658,1480,4.965,1481,4.965,1482,5.056,1483,5.494,1484,4.579,1485,4.263,1492,3.569,1493,4.707,1494,4.707,1496,3.323,1497,3.323,1498,3.323,1499,3.323,1500,3.323,1501,4.263,1502,3.323,1503,3.323,1504,3.323,1505,3.323,1506,3.323,1507,3.323,1508,3.323,1509,3.323,1510,3.117,1511,3.323,1512,3.323,1513,3.323,1514,3.323,1515,3.323,1516,3.323,1517,3.323,1518,3.323,1519,3.323,1520,3.323,1521,3.117,1522,3.323,1523,3.323,1524,3.323,1525,3.323,1526,3.117,1527,3.323,1528,3.323,1529,3.323,1530,3.323,1531,3.117,1532,4.965,1533,3.323,1534,3.323,1535,3.323,1536,3.323,1537,3.323,1538,3.323,1539,3.323,1540,3.323,1541,3.323,1542,3.323,1543,3.323,1544,3.323,1545,3.323,1546,4.707,1547,3.323,1548,4.263,1549,3.323,1550,3.323,1551,3.323,1552,3.323,1553,3.323,1554,3.999,1555,3.323,1556,3.323,1557,3.323,1558,3.323,1559,3.323,1560,3.323,1561,3.117,1562,3.323,1563,3.323,1564,3.323,1565,3.323,1566,3.323,1567,3.323,1746,4.92,1747,4.92,1748,4.92,1749,4.92,1750,4.92,1751,4.92,1752,4.92]],["title/components/TemplateBaseComponent.html",[0,0.303,11,0.168]],["body/components/TemplateBaseComponent.html",[0,0.552,1,0.407,2,0.577,3,0.114,4,0.1,5,0.334,6,0.388,7,0.426,8,0.086,11,0.285,12,0.384,14,0.426,15,0.326,16,0.483,17,0.704,18,0.656,19,0.407,20,0.384,22,3.639,23,0.525,27,0.013,33,0.143,34,0.158,36,0.485,44,0.334,50,1.88,51,0.581,55,3.049,65,0.254,68,0.198,69,1.442,70,0.143,74,0.3,76,0.114,77,0.019,82,2.642,93,1.754,98,0.835,99,0.743,100,0.873,104,0.729,106,0.685,109,0.426,115,1.442,116,0.801,121,0.977,122,0.833,124,1.066,128,0.57,129,1.107,130,2.152,135,1.093,146,0.426,147,1.31,148,1.404,151,1.353,154,0.997,158,2.247,165,1.309,168,0.426,178,0.34,187,2.247,188,3.639,189,1.399,190,1.217,191,1.806,192,0.933,193,1.497,194,2.363,195,1.552,196,2.363,197,0.426,198,0.515,199,0.384,200,0.426,201,0.426,202,0.272,203,0.578,204,0.407,205,0.656,206,0.407,207,0.703,208,0.388,209,0.552,210,0.352,211,0.426,212,0.407,213,0.578,214,0.407,215,0.407,216,0.407,217,0.426,218,0.656,219,0.407,220,0.407,221,0.578,222,0.407,223,0.578,224,0.407,225,0.426,226,0.407,227,0.703,228,0.407,229,0.388,230,0.407,231,0.407,232,0.426,233,0.552,234,0.703,235,0.407,236,0.426,237,0.407,238,0.426,239,0.407,240,0.407,241,0.426,242,0.407,243,0.407,244,0.407,245,0.387,246,0.426,247,0.388,248,0.578,249,0.407,250,0.407,251,0.426,252,0.407,253,0.352,254,0.426,255,0.407,256,0.426,257,0.407,258,0.426,259,0.407,260,0.426,261,0.407,262,0.407,263,0.426,264,0.388,265,0.407,266,0.656,267,0.388,268,0.426,269,0.334,270,0.334,271,0.407,272,0.426,273,0.426,274,0.407,275,0.426,276,0.426,277,0.407,278,0.426,279,0.407,280,0.426,281,0.426,282,0.37,283,0.502,284,0.334,285,0.388,286,0.407,287,0.426,288,0.426,289,0.407,290,0.426,291,0.426,292,0.407,293,0.426,294,0.407,295,0.578,296,0.426,297,0.407,298,0.407,299,0.426,300,0.407,301,0.407,302,0.407,303,0.426,304,0.334,305,0.426,306,0.407,307,0.426,308,0.407,309,0.426,310,0.407,311,0.426,312,0.407,313,0.426,314,0.426,315,0.009,316,0.009,319,2.907,320,3.025,324,1.945,325,2.661,328,3.025,329,2.816,330,2.642,331,1.445,332,1.94,334,2.661,335,2.142,336,3.025,338,2.816,344,3.206,351,3.586,360,1.395,374,0.569,379,5.064,390,3.638,418,2.493,431,1.031,487,1.018,497,1.133,544,1.133,554,3.383,641,0.661,667,4.66,668,3.287,671,3.025,694,1.647,710,1.961,719,3.349,725,2.363,813,2.142,849,3.287,865,1.736,1193,3.638,1194,2.642,1196,2.816,1409,2.816,1427,2.493,1447,3.638,1531,2.642,1753,4.171,1754,4.171,1755,3.638,1756,3.287,1757,4.171,1758,4.171,1759,4.171,1760,4.171,1761,3.287,1762,3.638,1763,3.638,1764,3.287,1765,4.171,1766,3.287,1767,3.638,1768,4.171,1769,4.171,1770,4.171,1771,4.171,1772,4.171,1773,4.171,1774,4.171,1775,3.638,1776,3.638,1777,4.171,1778,4.171,1779,4.171,1780,4.171,1781,4.171,1782,4.171,1783,4.171,1784,4.171,1785,4.171,1786,4.171,1787,3.638]],["title/components/TemplateDebuggerComponent.html",[0,0.303,224,0.397]],["body/components/TemplateDebuggerComponent.html",[0,0.448,1,0.36,2,0.395,3,0.101,4,0.089,5,0.483,6,0.344,7,0.377,8,0.076,10,0.253,11,0.27,14,0.377,15,0.324,16,0.48,17,0.684,18,0.615,19,0.36,23,0.518,24,0.976,27,0.013,33,0.126,34,0.196,35,1.765,36,0.605,42,0.296,44,0.524,50,2.716,51,0.312,61,0.58,62,0.605,65,0.166,68,0.185,70,0.126,74,0.265,76,0.101,77,0.017,93,1.008,98,0.447,99,0.939,102,1.497,104,0.609,109,0.377,112,1.391,113,1.645,116,0.831,117,2.716,124,1.949,128,0.612,129,1.178,133,1.949,134,1.881,135,1.217,146,0.377,147,1.261,152,1.651,161,3.245,162,3.412,163,1.947,168,0.377,178,0.45,179,1.178,180,1.218,189,1.768,197,0.377,198,0.483,199,0.353,200,0.377,201,0.377,202,0.3,203,0.531,204,0.36,205,0.615,206,0.36,207,0.668,208,0.344,209,0.507,210,0.312,211,0.377,212,0.36,213,0.531,214,0.36,215,0.36,216,0.36,217,0.377,218,0.615,219,0.36,220,0.36,221,0.531,222,0.36,223,0.531,224,0.638,225,0.377,226,0.36,227,0.668,228,0.36,229,0.344,230,0.36,231,0.36,232,0.377,233,0.507,234,0.668,235,0.36,236,0.377,237,0.36,238,0.377,239,0.36,240,0.36,241,0.377,242,0.36,243,0.36,244,0.36,245,0.207,246,0.377,247,0.344,248,0.531,249,0.36,250,0.36,251,0.377,252,0.36,253,0.312,254,0.377,255,0.36,256,0.377,257,0.36,258,0.377,259,0.36,260,0.377,261,0.36,262,0.36,263,0.377,264,0.344,265,0.36,266,0.615,267,0.344,268,0.377,269,0.296,270,0.296,271,0.36,272,0.377,273,0.377,274,0.36,275,0.377,276,0.377,277,0.36,278,0.377,279,0.36,280,0.377,281,0.377,282,0.327,283,0.461,284,0.296,285,0.344,286,0.36,287,0.377,288,0.377,289,0.36,290,0.377,291,0.377,292,0.36,293,0.377,294,0.36,295,0.531,296,0.377,297,0.36,298,0.36,299,0.377,300,0.36,301,0.36,302,0.36,303,0.377,304,0.296,305,0.377,306,0.36,307,0.377,308,0.36,309,0.377,310,0.36,311,0.377,312,0.36,313,0.377,314,0.377,315,0.008,316,0.008,324,2.154,349,0.71,350,0.854,374,0.504,421,2.957,457,1.193,487,0.585,492,1.896,544,0.651,554,2.207,621,2.393,630,4.11,647,0.883,762,3.245,763,2.091,860,4.416,955,2.716,981,1.374,996,3.816,1123,4.748,1278,2.91,1384,3.674,1395,3.221,1396,5.189,1420,2.678,1654,3.412,1655,3.601,1764,2.91,1775,3.221,1776,4.538,1788,3.692,1789,5.202,1790,8.174,1791,6.023,1792,7.152,1793,6.023,1794,5.254,1795,5.254,1796,6.023,1797,6.023,1798,3.853,1799,6.023,1800,7.152,1801,6.023,1802,6.023,1803,6.023,1804,6.023,1805,6.023,1806,6.023,1807,6.023,1808,5.254,1809,6.023,1810,5.202,1811,6.539,1812,3.692,1813,5.202,1814,3.692,1815,2.678,1816,3.692,1817,5.202,1818,5.202,1819,3.692,1820,3.692,1821,3.221,1822,3.692,1823,5.202,1824,3.692,1825,3.692,1826,3.692,1827,3.221,1828,3.692,1829,3.692,1830,5.202,1831,3.692,1832,3.692,1833,3.692,1834,3.692,1835,3.221,1836,3.692,1837,2.493,1838,3.692,1839,3.692]],["title/components/TemplateHTMLComponent.html",[0,0.303,226,0.397]],["body/components/TemplateHTMLComponent.html",[0,0.563,1,0.473,2,0.475,3,0.133,4,0.116,6,0.452,7,0.495,8,0.1,10,0.304,11,0.302,12,0.424,13,0.614,14,0.495,15,0.328,16,0.486,17,0.707,18,0.707,19,0.473,23,0.542,27,0.013,33,0.166,34,0.236,42,0.259,44,0.501,51,0.409,65,0.218,68,0.213,70,0.166,76,0.133,77,0.022,80,0.564,104,0.681,109,0.495,128,0.555,146,0.495,168,0.495,178,0.375,197,0.495,198,0.647,199,0.424,200,0.495,201,0.495,202,0.293,203,0.639,204,0.473,205,0.707,206,0.473,207,0.747,208,0.452,209,0.61,210,0.409,211,0.495,212,0.473,213,0.639,214,0.473,215,0.473,216,0.473,217,0.495,218,0.707,219,0.473,220,0.473,221,0.639,222,0.473,223,0.639,224,0.473,225,0.495,226,0.713,227,0.747,228,0.473,229,0.452,230,0.473,231,0.473,232,0.495,233,0.61,234,0.747,235,0.473,236,0.495,237,0.473,238,0.495,239,0.473,240,0.473,241,0.495,242,0.473,243,0.473,244,0.473,245,0.272,246,0.495,247,0.452,248,0.639,249,0.473,250,0.473,251,0.495,252,0.473,253,0.409,254,0.495,255,0.473,256,0.495,257,0.473,258,0.495,259,0.473,260,0.495,261,0.473,262,0.473,263,0.495,264,0.452,265,0.473,266,0.707,267,0.452,268,0.495,269,0.389,270,0.389,271,0.473,272,0.495,273,0.495,274,0.473,275,0.495,276,0.495,277,0.473,278,0.495,279,0.473,280,0.495,281,0.495,282,0.43,283,0.555,284,0.389,285,0.452,286,0.473,287,0.495,288,0.495,289,0.473,290,0.495,291,0.495,292,0.473,293,0.495,294,0.473,295,0.639,296,0.495,297,0.473,298,0.473,299,0.495,300,0.473,301,0.473,302,0.473,303,0.495,304,0.389,305,0.495,306,0.473,307,0.495,308,0.473,309,0.495,310,0.473,311,0.495,312,0.473,313,0.495,314,0.495,315,0.01,316,0.01,349,0.662,350,0.797,457,1.568,544,0.855,647,1.16,1005,2.613,1840,4.85,1841,4.231,1842,6.761,1843,6.254,1844,6.039,1845,3.823,1846,3.275,1847,4.231,1848,4.231,1849,4.85,1850,4.231]],["title/components/TemplateLayoutComponent.html",[0,0.303,228,0.397]],["body/components/TemplateLayoutComponent.html",[0,0.526,1,0.349,2,0.538,3,0.098,4,0.086,5,0.287,6,0.333,7,0.365,8,0.074,11,0.148,12,0.345,13,0.525,14,0.365,15,0.324,16,0.479,17,0.692,18,0.604,19,0.496,20,0.345,22,3.353,23,0.544,24,0.694,27,0.013,33,0.174,34,0.192,35,1.815,36,0.749,38,1.643,42,0.293,44,0.607,51,0.692,55,1.926,61,0.759,62,0.591,63,0.699,65,0.229,68,0.182,69,1.425,70,0.122,76,0.098,77,0.016,78,0.884,80,0.416,89,1.08,90,1.281,93,0.976,98,0.433,99,0.667,100,0.748,104,0.705,106,0.587,109,0.365,113,1.388,115,1.584,116,0.749,121,0.914,122,0.749,124,0.913,128,0.525,129,1.157,130,2.013,132,1.283,135,1.007,146,0.365,147,1.248,148,1.337,151,1.216,154,0.855,165,1.176,168,0.365,178,0.305,187,1.926,188,3.353,189,1.956,190,1.044,191,1.548,192,0.8,193,1.283,194,2.025,195,1.33,196,2.025,197,0.365,198,0.474,199,0.345,200,0.365,201,0.365,202,0.281,203,0.519,204,0.349,205,0.658,206,0.349,207,0.658,208,0.333,209,0.496,210,0.429,211,0.365,212,0.349,213,0.519,214,0.349,215,0.349,216,0.349,217,0.365,218,0.604,219,0.349,220,0.349,221,0.519,222,0.349,223,0.519,224,0.349,225,0.365,226,0.349,227,0.658,228,0.629,229,0.333,230,0.349,231,0.349,232,0.365,233,0.496,234,0.658,235,0.349,236,0.365,237,0.349,238,0.365,239,0.349,240,0.349,241,0.365,242,0.349,243,0.349,244,0.349,245,0.362,246,0.365,247,0.333,248,0.519,249,0.349,250,0.349,251,0.365,252,0.349,253,0.302,254,0.365,255,0.349,256,0.365,257,0.349,258,0.365,259,0.349,260,0.365,261,0.349,262,0.349,263,0.365,264,0.333,265,0.349,266,0.604,267,0.333,268,0.365,269,0.287,270,0.287,271,0.349,272,0.365,273,0.365,274,0.349,275,0.365,276,0.365,277,0.349,278,0.365,279,0.349,280,0.365,281,0.365,282,0.317,283,0.451,284,0.408,285,0.333,286,0.349,287,0.365,288,0.365,289,0.349,290,0.365,291,0.365,292,0.349,293,0.365,294,0.349,295,0.519,296,0.365,297,0.349,298,0.349,299,0.365,300,0.349,301,0.349,302,0.349,303,0.365,304,0.287,305,0.365,306,0.349,307,0.365,308,0.349,309,0.365,310,0.349,311,0.365,312,0.349,313,0.365,314,0.365,315,0.008,316,0.008,319,3.04,320,4.293,321,4.008,322,4.008,323,5.081,324,2.234,325,2.782,328,4.676,329,3.434,330,3.222,331,1.762,332,2.346,334,3.03,335,3.74,336,4.676,337,4.008,338,3.996,340,3.188,341,2.496,342,3.04,343,4.436,344,4.125,345,3.689,346,4.008,347,3.749,348,3.188,349,0.808,350,0.972,351,4.315,352,3.689,353,4.665,354,4.008,356,2.739,357,2.739,358,4.008,359,3.434,360,1.98,361,4.008,363,4.008,364,2.038,365,5.081,366,4.008,367,3.434,368,2.612,369,4.008,370,4.008,371,3.689,372,3.434,374,0.488,381,2.818,413,0.976,431,0.884,487,0.806,497,1.248,536,3.119,544,1.043,589,2.739,641,0.566,667,2.594,694,1.415,725,2.025,762,2.739,768,3.222,813,1.836,886,2.594,1011,2.025,1083,2.265,1114,3.434,1144,3.04,1427,3.04,1460,2.818,1619,2.265,1787,3.119,1835,3.119,1851,3.575,1852,5.085,1853,5.085,1854,3.575,1855,3.575,1856,3.575,1857,3.575,1858,3.575,1859,2.594,1860,5.085,1861,5.085,1862,3.575,1863,3.575,1864,3.575,1865,2.818,1866,3.575,1867,3.575,1868,3.575,1869,3.119,1870,3.119,1871,3.575,1872,3.575,1873,2.818,1874,5.085,1875,3.575,1876,3.119,1877,3.575,1878,2.818,1879,3.575,1880,3.575,1881,3.575,1882,3.575,1883,3.575,1884,3.575,1885,3.575,1886,3.575,1887,3.575,1888,3.575,1889,3.575,1890,3.575,1891,3.575,1892,5.085,1893,3.575,1894,2.818]],["title/components/TemplatePopupComponent.html",[0,0.303,229,0.379]],["body/components/TemplatePopupComponent.html",[0,0.424,1,0.327,2,0.369,3,0.092,4,0.08,5,0.457,6,0.312,7,0.342,8,0.069,10,0.163,11,0.138,14,0.342,15,0.323,16,0.477,17,0.674,18,0.582,19,0.327,23,0.535,24,1.083,26,2.9,27,0.013,33,0.214,36,0.564,38,1.568,42,0.308,43,0.424,44,0.532,48,3.276,51,0.409,52,3.823,56,5.233,61,0.636,62,0.663,63,1.223,65,0.151,68,0.192,69,1.015,70,0.115,76,0.133,77,0.015,90,0.724,98,0.804,99,0.978,102,1.622,104,0.744,106,1.137,109,0.342,110,2.021,111,1.976,112,1.314,113,1.708,115,1.672,116,0.923,117,2.572,118,1.126,121,1.057,122,1.097,123,2.048,126,1.082,128,0.687,129,1.515,130,2.162,133,1.457,134,1.782,135,1.269,146,0.342,147,1.366,148,1.408,152,1.448,155,3.073,159,2.162,160,2.485,161,3.073,165,1.724,168,0.342,171,2.048,173,1.41,178,0.291,179,1.115,180,1.154,189,1.546,192,1.276,197,0.342,198,0.457,199,0.387,200,0.342,201,0.342,202,0.286,203,0.495,204,0.327,205,0.582,206,0.327,207,0.639,208,0.312,209,0.473,210,0.603,211,0.342,212,0.327,213,0.495,214,0.327,215,0.556,216,0.327,217,0.342,218,0.582,219,0.327,220,0.327,221,0.495,222,0.327,223,0.495,224,0.327,225,0.342,226,0.327,227,0.639,228,0.327,229,0.582,230,0.327,231,0.327,232,0.342,233,0.473,234,0.639,235,0.327,236,0.342,237,0.327,238,0.342,239,0.327,240,0.327,241,0.342,242,0.327,243,0.327,244,0.327,245,0.188,246,0.342,247,0.312,248,0.495,249,0.327,250,0.327,251,0.342,252,0.327,253,0.283,254,0.342,255,0.327,256,0.342,257,0.327,258,0.342,259,0.327,260,0.342,261,0.327,262,0.327,263,0.342,264,0.312,265,0.327,266,0.582,267,0.312,268,0.342,269,0.268,270,0.268,271,0.327,272,0.342,273,0.342,274,0.327,275,0.342,276,0.342,277,0.327,278,0.342,279,0.327,280,0.342,281,0.342,282,0.297,283,0.43,284,0.501,285,0.312,286,0.327,287,0.342,288,0.342,289,0.327,290,0.342,291,0.342,292,0.327,293,0.342,294,0.327,295,0.495,296,0.342,297,0.327,298,0.327,299,0.342,300,0.327,301,0.327,302,0.327,303,0.342,304,0.268,305,0.342,306,0.327,307,0.342,308,0.327,309,0.342,310,0.327,311,0.342,312,0.327,313,0.342,314,0.342,315,0.007,316,0.007,324,0.945,325,2.28,332,1.011,344,2.748,349,0.853,350,1.027,374,0.853,409,2.261,424,1.05,431,0.827,439,4.224,440,1.574,457,1.082,487,0.769,510,2.001,544,0.59,619,2.398,620,4.386,621,2.494,641,0.53,685,3.504,713,3.073,813,1.72,865,2.02,955,2.572,975,4.224,1048,1.896,1090,1.643,1102,4.496,1103,2.92,1104,4.231,1105,2.92,1106,6.379,1107,2.92,1108,2.92,1109,2.92,1110,4.976,1111,7.191,1112,2.639,1113,2.92,1114,2.261,1115,2.92,1116,2.261,1117,2.639,1118,2.001,1119,2.639,1120,2.92,1121,5.456,1122,6.502,1123,4.496,1124,4.976,1125,4.976,1126,4.976,1127,3.614,1128,4.496,1129,4.496,1130,4.976,1131,4.496,1132,4.976,1133,4.138,1134,4.675,1135,4.496,1136,2.92,1137,2.428,1138,2.92,1139,4.496,1140,4.231,1141,4.93,1142,3.823,1143,5.456,1144,2.9,1145,3.276,1146,4.231,1147,3.823,1148,4.231,1149,4.976,1150,4.231,1151,2.92,1152,2.92,1153,2.92,1154,4.231,1155,4.496,1156,2.92,1157,2.92,1158,2.92,1159,2.92,1160,4.231,1161,2.92,1815,2.428,1895,4.851,1896,4.851,1897,3.348,1898,4.851,1899,3.348,1900,3.348,1901,3.348,1902,3.348]],["title/interfaces/TimerState.html",[424,0.881,1510,2.579]],["body/interfaces/TimerState.html",[0,0.474,3,0.137,4,0.12,8,0.103,10,0.31,11,0.264,12,0.339,13,0.566,15,0.189,16,0.281,20,0.339,23,0.339,24,0.958,27,0.013,32,2.082,33,0.171,34,0.241,36,0.741,42,0.306,43,0.564,44,0.593,61,0.824,62,0.86,63,1.247,65,0.333,68,0.25,69,1.469,70,0.171,71,1.673,72,0.764,74,0.36,76,0.137,77,0.029,89,1.35,90,1.082,92,1.211,93,1.365,98,0.773,173,1.576,178,0.3,202,0.189,245,0.358,253,0.422,304,0.593,315,0.01,316,0.01,319,2.568,331,2.21,332,1.926,349,0.682,350,0.821,360,1.673,377,3.131,426,2.082,431,1.236,433,1.732,440,2.351,442,0.656,445,2.351,487,1.113,497,0.882,573,2.694,574,2.694,583,3.168,616,1.46,641,1.01,694,1.525,696,1.412,755,2.455,810,2.613,812,2.004,956,3.276,980,2.254,981,1.861,982,2.254,1477,3.168,1478,3.377,1479,4.686,1480,4.995,1481,4.995,1482,5.094,1484,4.627,1485,3.377,1492,3.627,1493,4.742,1494,4.742,1496,3.377,1497,3.377,1498,3.377,1499,3.377,1500,3.377,1501,4.307,1502,3.377,1503,3.377,1504,3.377,1505,3.377,1506,3.377,1507,3.377,1508,3.377,1509,3.377,1510,4.04,1511,3.377,1512,3.377,1513,3.377,1514,3.377,1515,3.377,1516,3.377,1517,3.377,1518,3.377,1519,3.377,1520,3.377,1521,3.168,1522,3.377,1523,3.377,1524,3.377,1525,3.377,1526,3.168,1527,3.377,1528,3.377,1529,3.377,1530,3.377,1531,3.168,1532,4.995,1533,3.377,1534,3.377,1535,3.377,1536,3.377,1537,3.377,1538,3.377,1539,3.377,1540,3.377,1541,3.377,1542,3.377,1543,3.377,1544,3.377,1545,3.377,1546,4.742,1547,3.377,1548,4.307,1549,3.377,1550,3.377,1551,3.377,1552,3.377,1553,3.377,1554,4.04,1555,3.377,1556,3.377,1557,3.377,1558,3.377,1559,3.377,1560,3.377,1561,3.168,1562,3.377,1563,3.377,1564,3.377,1565,3.377,1566,3.377,1567,3.377,1903,5,1904,5,1905,5,1906,5]],["title/components/TmplAccordionComponent.html",[0,0.303,230,0.397]],["body/components/TmplAccordionComponent.html",[0,0.553,1,0.447,2,0.458,3,0.125,4,0.11,5,0.367,6,0.427,7,0.468,8,0.095,10,0.293,11,0.296,12,0.409,13,0.597,14,0.468,15,0.327,16,0.485,17,0.702,18,0.779,19,0.657,20,0.409,23,0.504,27,0.013,32,1.908,33,0.157,34,0.228,35,1.558,42,0.249,44,0.367,51,0.387,65,0.206,68,0.185,70,0.157,74,0.329,76,0.125,77,0.021,80,0.533,98,0.73,102,0.959,104,0.724,106,0.99,109,0.468,112,1.062,113,1.954,115,0.959,117,2.066,121,1.103,122,0.991,128,0.535,139,4.885,143,1.769,146,0.468,147,1.062,148,0.866,152,1.409,168,0.468,178,0.362,179,0.896,180,0.927,197,0.468,198,0.54,199,0.409,200,0.468,201,0.468,202,0.281,203,0.615,204,0.447,205,0.688,206,0.447,207,0.73,208,0.427,209,0.588,210,0.568,211,0.468,212,0.447,213,0.615,214,0.447,215,0.447,216,0.447,217,0.468,218,0.688,219,0.447,220,0.447,221,0.615,222,0.447,223,0.615,224,0.447,225,0.468,226,0.447,227,0.73,228,0.447,229,0.427,230,0.698,231,0.447,232,0.468,233,0.588,234,0.73,235,0.447,236,0.468,237,0.447,238,0.468,239,0.447,240,0.447,241,0.468,242,0.447,243,0.447,244,0.447,245,0.257,246,0.468,247,0.427,248,0.615,249,0.447,250,0.447,251,0.468,252,0.447,253,0.387,254,0.468,255,0.447,256,0.468,257,0.447,258,0.468,259,0.447,260,0.468,261,0.447,262,0.447,263,0.468,264,0.427,265,0.447,266,0.688,267,0.427,268,0.468,269,0.367,270,0.367,271,0.447,272,0.468,273,0.468,274,0.447,275,0.468,276,0.468,277,0.447,278,0.468,279,0.447,280,0.468,281,0.468,282,0.406,283,0.535,284,0.367,285,0.427,286,0.447,287,0.468,288,0.468,289,0.447,290,0.468,291,0.468,292,0.447,293,0.468,294,0.447,295,0.615,296,0.468,297,0.447,298,0.447,299,0.468,300,0.447,301,0.447,302,0.447,303,0.468,304,0.367,305,0.468,306,0.447,307,0.468,308,0.447,309,0.468,310,0.447,311,0.468,312,0.447,313,0.468,314,0.468,315,0.009,316,0.009,374,0.822,377,2.249,442,0.791,619,2.088,685,2.154,698,2.353,738,2.595,955,2.066,1380,3.818,1739,3.997,1798,2.468,1837,3.094,1907,4.582,1908,6.735,1909,6.027,1910,6.735,1911,4.582,1912,3.997,1913,3.997,1914,4.582,1915,4.582,1916,4.582,1917,4.582,1918,4.582,1919,4.582,1920,6.027,1921,4.582,1922,3.997,1923,2.249,1924,2.739,1925,4.582,1926,4.582,1927,4.582,1928,4.582]],["title/components/TmplAdvancedDashedBoxComponent.html",[0,0.303,231,0.397]],["body/components/TmplAdvancedDashedBoxComponent.html",[0,0.47,1,0.394,2,0.421,3,0.11,4,0.097,5,0.324,6,0.376,7,0.412,8,0.083,10,0.269,11,0.281,12,0.376,13,0.56,14,0.412,15,0.326,16,0.482,17,0.692,18,0.645,19,0.394,20,0.376,23,0.483,27,0.013,33,0.138,34,0.209,36,0.643,38,1.789,42,0.281,43,0.499,44,0.59,51,0.341,61,0.45,62,0.469,65,0.181,68,0.209,69,1.158,70,0.138,72,0.617,73,1.066,74,0.29,76,0.11,77,0.019,80,0.469,81,0.737,86,1.198,88,1.278,92,0.877,93,1.102,99,0.829,100,0.845,101,1.305,102,1.158,104,0.763,106,1.116,109,0.412,110,1.616,111,1.399,112,1.198,113,2.057,116,0.643,117,1.82,118,1.01,121,1.068,122,1.159,123,1.449,124,1.879,126,1.305,127,1.14,128,0.491,129,0.789,133,1.031,135,0.687,141,1.852,143,2.624,144,1.563,146,0.565,147,1.255,148,1.046,152,1.322,154,1.323,159,1.261,160,1.449,168,0.412,176,2.726,178,0.46,179,1.082,180,1.12,190,1.844,192,1.593,195,1.502,197,0.412,198,0.506,199,0.376,200,0.412,201,0.412,202,0.269,203,0.565,204,0.394,205,0.645,206,0.394,207,0.694,208,0.376,209,0.54,210,0.621,211,0.412,212,0.394,213,0.565,214,0.394,215,0.394,216,0.394,217,0.412,218,0.645,219,0.394,220,0.394,221,0.565,222,0.394,223,0.694,224,0.394,225,0.412,226,0.394,227,0.694,228,0.394,229,0.376,230,0.394,231,0.663,232,0.783,233,0.82,234,0.694,235,0.394,236,0.412,237,0.394,238,0.412,239,0.394,240,0.394,241,0.412,242,0.394,243,0.394,244,0.394,245,0.227,246,0.412,247,0.376,248,0.565,249,0.394,250,0.394,251,0.412,252,0.394,253,0.341,254,0.412,255,0.394,256,0.412,257,0.394,258,0.412,259,0.394,260,0.412,261,0.394,262,0.394,263,0.412,264,0.376,265,0.394,266,0.645,267,0.376,268,0.412,269,0.324,270,0.324,271,0.394,272,0.412,273,0.412,274,0.394,275,0.412,276,0.412,277,0.394,278,0.412,279,0.394,280,0.412,281,0.412,282,0.358,283,0.491,284,0.324,285,0.376,286,0.394,287,0.412,288,0.412,289,0.394,290,0.412,291,0.412,292,0.394,293,0.412,294,0.394,295,0.565,296,0.412,297,0.394,298,0.394,299,0.412,300,0.394,301,0.394,302,0.394,303,0.412,304,0.324,305,0.412,306,0.394,307,0.412,308,0.394,309,0.412,310,0.394,311,0.412,312,0.394,313,0.412,314,0.412,315,0.008,316,0.008,332,1.671,340,2.174,374,0.551,378,1.521,431,0.998,432,2.928,442,0.726,544,1.114,616,1.616,621,1.852,627,1.502,628,1.681,636,5.51,647,0.965,650,4.828,702,2.218,839,1.261,1582,3.85,1611,2.287,1627,1.898,1657,1.982,1734,3.309,1798,3.836,1923,3.337,1929,7.532,1930,7.532,1931,2.928,1932,4.582,1933,4.015,1934,5.929,1935,4.828,1936,4.037,1937,3.521,1938,4.037,1939,4.037,1940,3.521,1941,2.557,1942,3.521,1943,3.521,1944,4.037,1945,4.037]],["title/components/TmplAnimatedSlidesComponent.html",[0,0.303,235,0.397]],["body/components/TmplAnimatedSlidesComponent.html",[0,0.502,1,0.387,2,0.416,3,0.108,4,0.095,5,0.318,6,0.369,7,0.405,8,0.082,10,0.266,11,0.279,12,0.371,13,0.555,14,0.405,15,0.325,16,0.482,17,0.69,18,0.639,19,0.69,20,0.371,23,0.509,24,1.058,27,0.013,33,0.136,34,0.207,36,0.636,42,0.279,43,0.425,44,0.601,50,1.788,51,0.335,57,2.247,58,1.424,61,0.609,62,0.728,65,0.246,68,0.208,70,0.136,72,0.606,73,1.047,74,0.285,76,0.108,77,0.018,78,1.547,80,0.461,81,0.724,86,1.189,88,1.106,89,0.724,90,0.858,92,0.992,98,0.758,99,0.821,102,1.309,104,0.659,109,0.405,110,1.969,111,1.374,112,1.103,113,1.842,115,1.144,116,0.728,118,0.775,121,0.562,122,0.805,123,2.247,124,1.599,127,1.12,128,0.649,129,1.384,130,1.708,133,1.397,134,1.708,135,1.148,146,0.405,159,1.708,160,1.963,165,1.265,168,0.405,169,3.464,173,0.98,178,0.328,179,0.775,180,0.802,189,0.98,192,1.223,197,0.405,198,0.502,199,0.371,200,0.405,201,0.405,202,0.267,203,0.558,204,0.387,205,0.809,206,0.387,207,0.689,208,0.369,209,0.533,210,0.335,211,0.405,212,0.387,213,0.558,214,0.387,215,0.387,216,0.387,217,0.405,218,0.639,219,0.387,220,0.387,221,0.558,222,0.387,223,0.558,224,0.387,225,0.405,226,0.387,227,0.689,228,0.387,229,0.369,230,0.387,231,0.387,232,0.405,233,0.533,234,0.689,235,0.658,236,0.405,237,0.387,238,0.405,239,0.387,240,0.387,241,0.405,242,0.387,243,0.387,244,0.387,245,0.307,246,0.405,247,0.369,248,0.558,249,0.387,250,0.387,251,0.405,252,0.387,253,0.335,254,0.405,255,0.387,256,0.405,257,0.387,258,0.405,259,0.387,260,0.405,261,0.387,262,0.387,263,0.405,264,0.369,265,0.387,266,0.639,267,0.369,268,0.405,269,0.318,270,0.318,271,0.387,272,0.405,273,0.405,274,0.387,275,0.405,276,0.405,277,0.387,278,0.405,279,0.387,280,0.405,281,0.405,282,0.352,283,0.485,284,0.438,285,0.369,286,0.387,287,0.405,288,0.405,289,0.387,290,0.405,291,0.405,292,0.387,293,0.405,294,0.387,295,0.558,296,0.405,297,0.387,298,0.387,299,0.405,300,0.387,301,0.387,302,0.387,303,0.405,304,0.318,305,0.405,306,0.387,307,0.405,308,0.387,309,0.405,310,0.387,311,0.405,312,0.387,313,0.405,314,0.405,315,0.008,316,0.008,324,1.12,341,1.947,374,0.854,378,1.509,382,2.877,393,2.571,398,3.46,409,3.693,410,3.545,413,1.083,433,1.374,442,0.718,497,0.699,513,1.083,554,2.371,558,1.864,574,2.136,586,2.037,620,2.512,621,1.829,709,2.247,839,1.239,883,2.512,1112,3.126,1117,3.126,1119,3.126,1243,3.126,1342,3.46,1344,3.46,1415,3.46,1416,3.46,1654,2.247,1837,2.678,1865,3.126,1870,5.459,1946,7.497,1947,7.497,1948,3.966,1949,6.258,1950,5.468,1951,6.258,1952,6.258,1953,7.077,1954,6.746,1955,3.966,1956,3.966,1957,3.966,1958,3.966,1959,3.966,1960,3.966,1961,3.966,1962,3.966,1963,3.966,1964,3.966,1965,4.31,1966,3.966,1967,3.966,1968,3.966,1969,3.966,1970,3.966,1971,5.468,1972,3.966,1973,3.126,1974,3.966,1975,3.966,1976,3.966,1977,3.966,1978,3.966,1979,3.966,1980,3.966,1981,5.468,1982,3.126,1983,2.877,1984,3.966,1985,3.966,1986,2.877,1987,3.966,1988,3.966,1989,3.966,1990,5.468,1991,3.46,1992,3.966,1993,3.966,1994,3.966,1995,3.46,1996,3.966,1997,3.126,1998,3.966,1999,3.966,2000,3.966,2001,3.46]],["title/components/TmplAudioComponent.html",[0,0.303,237,0.397]],["body/components/TmplAudioComponent.html",[0,0.387,1,0.28,2,0.329,3,0.078,4,0.069,5,0.23,6,0.267,7,0.293,8,0.059,10,0.21,11,0.24,12,0.294,13,0.462,14,0.293,15,0.321,16,0.474,17,0.658,18,0.532,19,0.28,20,0.294,23,0.475,24,1.064,27,0.013,32,2.415,33,0.098,34,0.163,36,0.503,38,1.398,42,0.322,43,0.495,44,0.655,51,0.242,54,1.473,58,1.029,61,0.826,62,0.832,63,1.426,65,0.261,68,0.215,69,0.905,70,0.098,71,0.959,72,0.438,74,0.206,76,0.078,77,0.013,80,0.333,81,0.523,86,1.023,88,1.054,89,1.412,90,1.127,92,1.189,95,1.624,98,0.884,99,0.684,100,0.6,101,0.927,102,1.55,104,0.774,106,1.149,109,0.293,110,1.693,111,0.993,112,1.198,113,1.584,114,1.407,116,0.832,118,0.991,121,1.125,122,1.105,123,1.87,124,0.732,126,0.927,128,0.515,129,1.018,131,1.804,132,1.87,133,1.331,134,0.895,135,0.886,141,1.447,144,1.848,146,0.592,147,1.339,148,1.321,149,2.45,150,2.08,151,1.488,152,1.302,154,0.685,158,1.544,159,0.895,160,1.029,163,1.683,165,0.663,168,0.636,171,1.029,178,0.393,179,1.217,180,1.374,182,1.398,183,1.241,189,0.709,190,0.837,192,0.968,195,2.316,197,0.293,198,0.417,199,0.294,200,0.293,201,0.293,202,0.247,203,0.442,204,0.28,205,0.532,206,0.28,207,0.592,208,0.267,209,0.422,210,0.59,211,0.293,212,0.28,213,0.442,214,0.28,215,0.28,216,0.28,217,0.293,218,0.532,219,0.28,220,0.28,221,0.442,222,0.28,223,0.636,224,0.28,225,0.293,226,0.28,227,0.592,228,0.28,229,0.267,230,0.28,231,0.28,232,0.293,233,0.422,234,0.592,235,0.28,236,0.293,237,0.566,238,0.293,239,0.28,240,0.28,241,0.293,242,0.28,243,0.28,244,0.28,245,0.161,246,0.293,247,0.267,248,0.442,249,0.28,250,0.28,251,0.293,252,0.28,253,0.604,254,0.293,255,0.28,256,0.293,257,0.28,258,0.293,259,0.28,260,0.293,261,0.28,262,0.28,263,0.293,264,0.267,265,0.28,266,0.532,267,0.267,268,0.293,269,0.23,270,0.23,271,0.28,272,0.293,273,0.293,274,0.28,275,0.293,276,0.293,277,0.28,278,0.293,279,0.28,280,0.293,281,0.293,282,0.254,283,0.384,284,0.347,285,0.267,286,0.28,287,0.293,288,0.293,289,0.28,290,0.293,291,0.293,292,0.28,293,0.293,294,0.28,295,0.442,296,0.293,297,0.28,298,0.28,299,0.293,300,0.28,301,0.28,302,0.28,303,0.293,304,0.23,305,0.293,306,0.28,307,0.293,308,0.28,309,0.293,310,0.28,311,0.293,312,0.28,313,0.293,314,0.293,315,0.007,316,0.007,324,0.809,331,1.498,349,0.391,350,0.471,374,1.011,408,1.936,410,1.624,431,0.709,433,0.993,440,1.348,442,0.568,445,2.033,457,0.927,497,0.918,532,3.917,544,0.505,574,3.353,616,1.52,618,2.08,619,2.157,627,1.938,641,0.454,647,0.685,662,1.348,684,1.544,688,2.585,694,1.245,696,0.809,799,3.721,811,3.778,812,1.149,837,1.348,883,3.3,907,2.08,914,1.407,980,2.951,981,1.067,982,1.293,1118,1.714,1226,2.08,1372,2.74,1404,2.501,1526,4.304,1554,3.3,1627,2.448,1638,1.936,1665,2.08,1736,1.936,1924,1.714,1941,1.816,1973,2.26,1997,3.409,2002,2.867,2003,7.408,2004,5.208,2005,4.325,2006,6.225,2007,6.225,2008,5.208,2009,5.208,2010,5.208,2011,4.572,2012,5.208,2013,5.208,2014,6.544,2015,5.208,2016,6.225,2017,5.8,2018,5.8,2019,5.8,2020,5.8,2021,5.8,2022,5.8,2023,6.793,2024,5.208,2025,5.8,2026,5.208,2027,2.08,2028,4.325,2029,2.867,2030,2.867,2031,2.867,2032,2.867,2033,2.867,2034,2.867,2035,2.867,2036,2.867,2037,2.867,2038,2.867,2039,2.867,2040,2.867,2041,2.867,2042,2.867,2043,2.867,2044,2.867,2045,2.867,2046,5.8,2047,2.867,2048,2.867,2049,5.208,2050,1.816,2051,2.867,2052,2.867,2053,2.867,2054,2.867,2055,2.867,2056,2.867,2057,2.867,2058,2.501,2059,2.867,2060,2.867,2061,5.208,2062,2.501,2063,2.867,2064,2.26,2065,2.867,2066,2.867,2067,4.325,2068,2.867,2069,2.867,2070,2.867,2071,6.993,2072,5.208,2073,4.325,2074,2.867,2075,2.867,2076,2.867,2077,4.325,2078,5.8,2079,2.867,2080,2.867,2081,2.867,2082,2.867,2083,2.867,2084,2.867,2085,2.867,2086,2.867,2087,2.867,2088,7.293,2089,5.208,2090,2.867,2091,4.325,2092,5.208,2093,5.208,2094,4.325,2095,2.867,2096,2.867,2097,5.8,2098,4.325,2099,4.325,2100,4.572,2101,2.08,2102,2.867,2103,2.867,2104,3.773,2105,4.325,2106,2.26,2107,2.867,2108,2.08,2109,4.325,2110,2.867,2111,2.26,2112,5.208,2113,3.773,2114,3.773,2115,2.867,2116,2.501]],["title/components/TmplButtonComponent.html",[0,0.303,239,0.397]],["body/components/TmplButtonComponent.html",[0,0.471,1,0.291,2,0.339,3,0.082,4,0.072,5,0.24,6,0.278,7,0.305,8,0.062,10,0.217,11,0.245,12,0.303,13,0.474,14,0.305,15,0.321,16,0.475,17,0.662,18,0.545,19,0.291,20,0.303,23,0.529,24,1.071,27,0.013,33,0.102,34,0.168,42,0.275,43,0.303,44,0.508,51,0.252,63,1.044,65,0.134,68,0.164,70,0.102,71,1,72,0.456,73,0.789,74,0.215,76,0.082,77,0.014,78,1.103,80,0.347,81,0.545,82,1.893,86,0.527,88,1.198,89,1.157,90,1.281,92,0.473,98,0.805,99,0.832,102,1.671,104,0.776,105,2.19,106,1.28,107,2.292,108,2.19,109,0.305,110,0.872,112,1.117,113,0.816,115,1.326,116,0.928,117,1.347,118,1.137,121,1.147,122,1.155,123,1.073,124,1.956,126,0.966,127,0.844,128,0.59,129,1.044,131,1.035,133,1.513,134,0.933,135,1.008,141,1,143,1.153,146,0.305,147,1.214,148,1.256,151,1.589,152,1.391,153,1.788,154,1.515,158,3.969,163,1.442,165,1.638,168,0.305,171,1.602,172,2.527,175,2.168,178,0.442,179,1.462,180,1.393,182,1.914,183,1.294,184,1.932,185,1.693,189,1.103,190,2.067,192,1.673,193,1.073,197,0.305,198,0.428,199,0.303,200,0.305,201,0.305,202,0.251,203,0.456,204,0.291,205,0.545,206,0.291,207,0.605,208,0.278,209,0.435,210,0.535,211,0.305,212,0.291,213,0.456,214,0.291,215,0.291,216,0.291,217,0.305,218,0.545,219,0.291,220,0.291,221,0.456,222,0.291,223,0.764,224,0.291,225,0.305,226,0.291,227,0.605,228,0.291,229,0.278,230,0.291,231,0.291,232,0.305,233,0.435,234,0.605,235,0.291,236,0.305,237,0.291,238,0.305,239,0.578,240,0.291,241,0.305,242,0.291,243,0.291,244,0.291,245,0.168,246,0.305,247,0.278,248,0.456,249,0.291,250,0.291,251,0.305,252,0.291,253,0.252,254,0.305,255,0.291,256,0.305,257,0.291,258,0.305,259,0.291,260,0.305,261,0.291,262,0.291,263,0.305,264,0.278,265,0.672,266,0.545,267,0.278,268,0.305,269,0.24,270,0.24,271,0.291,272,0.305,273,0.305,274,0.291,275,0.305,276,0.305,277,0.291,278,0.305,279,0.291,280,0.305,281,0.305,282,0.265,283,0.396,284,0.668,285,0.278,286,0.291,287,0.305,288,0.305,289,0.291,290,0.305,291,0.305,292,0.291,293,0.305,294,0.291,295,0.456,296,0.305,297,0.291,298,0.291,299,0.305,300,0.291,301,0.291,302,0.291,303,0.305,304,0.24,305,0.305,306,0.291,307,0.305,308,0.291,309,0.305,310,0.291,311,0.305,312,0.291,313,0.305,314,0.305,315,0.007,316,0.007,348,2.403,349,0.408,364,2.14,367,3.013,374,1.045,378,1.822,393,2.51,406,1.197,421,1.467,423,2.097,442,0.586,457,0.966,487,0.473,497,0.787,526,3.013,558,2.51,615,1.893,616,2.183,619,2.052,621,1.981,623,2.827,647,0.714,662,1.405,682,3.013,684,1.61,685,2.51,686,2.168,699,1.61,704,2.784,719,1.347,724,1.467,782,1.693,810,1.66,839,0.933,866,2.018,926,4.651,955,1.347,993,2.527,994,2.827,1021,1.61,1049,4.125,1118,1.786,1225,2.168,1290,3.517,1374,3.999,1384,2.743,1444,2.355,1469,2.607,1579,4.209,1580,3.517,1581,4.658,1585,3.192,1589,2.168,1604,2.168,1608,5.251,1609,3.517,1612,2.607,1613,5.798,1618,2.355,1619,4.585,1620,2.168,1621,2.355,1622,2.355,1623,2.355,1624,3.892,1625,3.517,1626,3.892,1627,2.097,1628,3.892,1629,2.607,1630,2.355,1631,2.607,1632,2.018,1633,2.607,1634,2.018,1635,2.607,1636,2.607,1637,3.013,1638,3.013,1639,2.018,1640,2.018,1641,3.892,1642,2.355,1643,2.607,1644,1.693,1645,2.355,1646,2.607,1647,2.607,1648,2.607,1649,3.892,1650,2.607,1651,4.296,1652,2.168,1653,1.893,1654,1.693,1655,3.54,1656,5.166,1657,3.263,1658,5.798,1659,3.892,1660,3.892,1661,4.209,1662,2.607,1663,2.607,1664,2.607,1665,2.168,1666,2.607,1667,2.168,1668,2.607,1669,2.355,1716,1.893,1717,4.211,1873,2.355,2117,2.988,2118,2.988,2119,3.892,2120,5.798,2121,2.988,2122,2.988,2123,4.462,2124,2.988,2125,2.988,2126,2.988,2127,2.988,2128,2.988,2129,2.607,2130,2.988,2131,2.988,2132,2.988,2133,2.988,2134,2.607,2135,2.988,2136,2.988,2137,5.922,2138,2.988,2139,5.922,2140,4.462,2141,4.658,2142,5.339,2143,2.607,2144,2.988,2145,2.988,2146,2.607,2147,3.892,2148,2.607]],["title/components/TmplCarouselComponent.html",[0,0.303,240,0.397]],["body/components/TmplCarouselComponent.html",[0,0.482,1,0.414,2,0.435,3,0.116,4,0.102,5,0.34,6,0.395,7,0.433,8,0.088,10,0.278,11,0.287,12,0.389,13,0.575,14,0.433,15,0.326,16,0.483,17,0.696,18,0.662,19,0.414,20,0.389,23,0.492,24,0.781,27,0.013,33,0.145,34,0.216,35,1.499,36,0.666,42,0.3,44,0.598,50,2.582,51,0.358,61,0.638,62,0.493,65,0.291,68,0.223,70,0.145,71,1.42,72,0.648,73,1.121,74,0.305,76,0.116,77,0.02,78,1.049,80,0.493,81,0.775,86,1.223,88,0.858,89,1.045,90,1.239,92,0.907,98,0.514,99,0.557,104,0.675,109,0.433,115,0.888,116,0.666,118,0.602,128,0.508,146,0.433,152,1.198,163,1.372,168,0.433,178,0.344,197,0.433,198,0.52,199,0.389,200,0.433,201,0.433,202,0.288,203,0.585,204,0.414,205,0.662,206,0.414,207,0.708,208,0.395,209,0.559,210,0.358,211,0.433,212,0.414,213,0.585,214,0.414,215,0.414,216,0.414,217,0.433,218,0.662,219,0.414,220,0.414,221,0.585,222,0.414,223,0.585,224,0.414,225,0.433,226,0.414,227,0.708,228,0.414,229,0.395,230,0.414,231,0.414,232,0.433,233,0.559,234,0.708,235,0.414,236,0.433,237,0.414,238,0.433,239,0.414,240,0.677,241,0.433,242,0.414,243,0.414,244,0.414,245,0.322,246,0.433,247,0.395,248,0.585,249,0.414,250,0.414,251,0.433,252,0.414,253,0.358,254,0.433,255,0.414,256,0.433,257,0.414,258,0.433,259,0.414,260,0.433,261,0.414,262,0.414,263,0.433,264,0.395,265,0.414,266,0.662,267,0.395,268,0.433,269,0.34,270,0.34,271,0.414,272,0.433,273,0.433,274,0.414,275,0.433,276,0.433,277,0.414,278,0.433,279,0.414,280,0.433,281,0.433,282,0.376,283,0.508,284,0.34,285,0.395,286,0.414,287,0.433,288,0.433,289,0.414,290,0.585,291,0.433,292,0.414,293,0.433,294,0.414,295,0.662,296,0.433,297,0.414,298,0.414,299,0.433,300,0.414,301,0.414,302,0.414,303,0.433,304,0.34,305,0.433,306,0.414,307,0.433,308,0.414,309,0.433,310,0.414,311,0.433,312,0.414,313,0.433,314,0.433,315,0.009,316,0.009,341,2.083,349,0.781,350,0.941,360,1.42,364,1.7,374,0.579,413,1.978,433,1.47,442,0.752,457,1.372,487,0.907,513,1.77,544,0.748,621,1.916,647,1.015,662,2.692,704,1.995,837,3.047,872,2.18,977,2.537,1000,3.423,1001,3.423,1345,2.866,2149,4.244,2150,6.482,2151,6.482,2152,5.727,2153,6.053,2154,6.482,2155,7.196,2156,5.727,2157,3.345,2158,5.885,2159,5.727,2160,4.244,2161,5.727,2162,4.244,2163,5.727,2164,4.514,2165,5.727,2166,6.482,2167,4.244,2168,4.244,2169,3.345,2170,4.244,2171,4.244,2172,4.244,2173,4.244,2174,4.244,2175,5.727,2176,4.514,2177,4.244,2178,4.244,2179,4.244,2180,4.244,2181,4.244,2182,4.244,2183,5.727,2184,4.244,2185,4.244,2186,4.244,2187,2.688,2188,4.244,2189,3.702,2190,3.345,2191,5.727,2192,4.244,2193,6.482,2194,3.345,2195,6.482,2196,4.244,2197,4.244]],["title/components/TmplComboBoxComponent.html",[0,0.303,242,0.397]],["body/components/TmplComboBoxComponent.html",[0,0.448,1,0.36,2,0.395,3,0.101,4,0.089,5,0.296,6,0.344,7,0.377,8,0.076,10,0.253,11,0.27,12,0.353,13,0.534,14,0.377,15,0.324,16,0.48,17,0.684,18,0.615,19,0.36,20,0.353,23,0.509,27,0.013,33,0.126,34,0.196,36,0.605,38,1.681,42,0.31,43,0.547,44,0.62,51,0.312,58,1.325,61,0.671,62,0.605,63,1.279,65,0.166,68,0.235,69,1.088,70,0.126,71,1.74,72,0.564,73,0.975,74,0.265,76,0.101,77,0.017,78,1.286,80,0.429,81,0.674,86,1.153,88,1.052,89,1.258,92,0.824,93,1.008,95,2.091,98,0.956,99,0.485,102,1.618,104,0.758,105,1.812,106,0.989,107,1.896,108,1.812,109,0.377,114,1.812,116,0.76,118,0.927,121,0.977,122,0.963,128,0.461,133,0.943,135,0.628,139,2.678,141,1.74,146,0.377,147,1.215,148,0.983,151,1.44,165,0.854,168,0.377,171,1.325,178,0.481,179,1.279,180,1.052,182,1.681,184,1.599,190,1.078,197,0.377,198,0.483,199,0.353,200,0.377,201,0.377,202,0.278,203,0.531,204,0.36,205,0.615,206,0.36,207,0.668,208,0.484,209,0.79,210,0.676,211,0.377,212,0.36,213,0.531,214,0.36,215,0.36,216,0.36,217,0.377,218,0.615,219,0.36,220,0.36,221,0.531,222,0.36,223,0.531,224,0.36,225,0.377,226,0.36,227,0.668,228,0.36,229,0.344,230,0.36,231,0.36,232,0.377,233,0.507,234,0.668,235,0.36,236,0.377,237,0.36,238,0.377,239,0.36,240,0.36,241,0.377,242,0.638,243,0.36,244,0.36,245,0.207,246,0.377,247,0.344,248,0.531,249,0.36,250,0.36,251,0.377,252,0.36,253,0.312,254,0.377,255,0.36,256,0.377,257,0.36,258,0.377,259,0.36,260,0.377,261,0.36,262,0.36,263,0.377,264,0.344,265,0.36,266,0.615,267,0.344,268,0.377,269,0.296,270,0.296,271,0.36,272,0.377,273,0.377,274,0.36,275,0.377,276,0.377,277,0.36,278,0.377,279,0.36,280,0.377,281,0.377,282,0.327,283,0.461,284,0.296,285,0.344,286,0.36,287,0.377,288,0.377,289,0.36,290,0.377,291,0.377,292,0.36,293,0.377,294,0.36,295,0.531,296,0.377,297,0.36,298,0.36,299,0.377,300,0.36,301,0.36,302,0.36,303,0.377,304,0.296,305,0.377,306,0.36,307,0.377,308,0.36,309,0.377,310,0.36,311,0.377,312,0.36,313,0.377,314,0.377,315,0.008,316,0.008,348,1.989,349,0.71,350,0.854,374,0.822,378,1.542,413,1.42,427,6.163,428,6.163,429,2.91,431,0.913,434,1.736,439,4.83,440,1.736,442,0.683,445,2.445,447,4.748,456,4.899,457,1.193,463,2.091,474,2.339,480,4.748,487,0.954,497,0.651,513,1.645,544,0.651,614,3.774,616,1.909,619,1.279,623,2.339,641,0.585,647,0.883,694,1.44,730,1.325,771,1.896,811,4.369,814,2.91,815,2.339,826,2.91,827,2.91,839,1.153,907,2.678,908,2.91,909,2.91,914,1.812,956,1.896,1610,3.774,1627,2.445,1639,2.493,1640,2.493,1694,5.434,1720,4.1,1721,2.91,1931,2.678,1932,4.369,1933,3.774,1937,3.221,2101,2.678,2198,5.202,2199,6.023,2200,3.692,2201,7.349,2202,3.221,2203,3.692,2204,3.692,2205,5.202,2206,7.349,2207,3.692,2208,6.023,2209,3.692,2210,3.221,2211,3.221,2212,3.692,2213,3.692,2214,3.692,2215,3.692,2216,3.692,2217,3.692,2218,3.692,2219,6.023,2220,3.692,2221,3.692,2222,3.692,2223,3.692,2224,5.202,2225,3.692,2226,2.678,2227,3.692,2228,3.692,2229,3.221]],["title/components/TmplDashedBoxComponent.html",[0,0.303,243,0.397]],["body/components/TmplDashedBoxComponent.html",[0,0.473,1,0.4,2,0.425,3,0.112,4,0.098,5,0.328,6,0.381,7,0.418,8,0.085,10,0.272,11,0.283,12,0.38,13,0.565,14,0.418,15,0.326,16,0.483,17,0.693,18,0.65,19,0.4,20,0.38,23,0.486,27,0.013,33,0.14,34,0.211,36,0.65,42,0.296,43,0.501,44,0.592,51,0.346,61,0.457,62,0.476,65,0.184,68,0.22,70,0.14,72,0.626,74,0.295,76,0.112,77,0.019,80,0.476,81,0.748,86,1.206,88,1.288,92,0.886,99,0.836,100,0.857,101,1.324,102,1.17,104,0.765,106,1.123,109,0.418,110,1.632,111,1.42,112,0.986,113,1.955,116,0.65,117,1.847,118,1.015,121,1.072,122,1.162,123,1.471,124,1.888,126,1.324,127,1.157,128,0.496,133,1.047,135,0.697,141,1.871,143,2.64,144,1.579,146,0.571,147,1.262,148,1.057,152,1.332,154,1.337,168,0.418,178,0.462,179,1.093,180,1.131,190,1.858,192,1.602,195,1.525,197,0.418,198,0.51,199,0.38,200,0.418,201,0.418,202,0.279,203,0.571,204,0.4,205,0.65,206,0.4,207,0.698,208,0.381,209,0.546,210,0.604,211,0.418,212,0.4,213,0.571,214,0.4,215,0.4,216,0.4,217,0.418,218,0.65,219,0.4,220,0.4,221,0.571,222,0.4,223,0.65,224,0.4,225,0.418,226,0.4,227,0.698,228,0.4,229,0.381,230,0.4,231,0.4,232,0.418,233,0.778,234,0.698,235,0.4,236,0.418,237,0.4,238,0.418,239,0.4,240,0.4,241,0.418,242,0.4,243,0.667,244,0.4,245,0.23,246,0.418,247,0.381,248,0.571,249,0.4,250,0.4,251,0.418,252,0.4,253,0.346,254,0.418,255,0.4,256,0.418,257,0.4,258,0.418,259,0.4,260,0.418,261,0.4,262,0.4,263,0.418,264,0.381,265,0.4,266,0.65,267,0.381,268,0.418,269,0.328,270,0.328,271,0.4,272,0.418,273,0.418,274,0.4,275,0.418,276,0.418,277,0.4,278,0.418,279,0.4,280,0.418,281,0.418,282,0.363,283,0.496,284,0.328,285,0.381,286,0.4,287,0.418,288,0.418,289,0.4,290,0.418,291,0.418,292,0.4,293,0.418,294,0.4,295,0.571,296,0.418,297,0.4,298,0.4,299,0.418,300,0.4,301,0.4,302,0.4,303,0.418,304,0.328,305,0.418,306,0.4,307,0.418,308,0.4,309,0.418,310,0.4,311,0.418,312,0.4,313,0.418,314,0.418,315,0.009,316,0.009,349,0.559,350,0.673,374,0.763,378,1.53,442,0.734,457,1.324,544,0.722,616,1.632,621,1.871,627,1.525,628,1.706,641,0.649,647,0.98,694,1.522,696,1.157,702,2.241,839,1.28,1582,3.874,1611,2.321,1627,1.926,1657,2.012,1734,3.343,1798,3.684,1841,3.574,1842,6.445,1844,5.553,1845,3.23,1846,2.767,1850,3.574,1923,3.358,1931,2.972,1932,4.618,1933,4.057,1934,5.966,1940,3.574,1941,2.596,1942,3.574,2210,3.574,2230,7.562,2231,7.562,2232,6.366,2233,4.878,2234,3.574,2235,3.574,2236,3.574,2237,4.098]],["title/components/TmplDataItemsComponent.html",[0,0.303,244,0.397]],["body/components/TmplDataItemsComponent.html",[0,0.503,1,0.342,2,0.445,3,0.096,4,0.084,5,0.281,6,0.327,7,0.358,8,0.072,10,0.244,11,0.264,14,0.358,15,0.324,16,0.479,17,0.679,18,0.598,19,0.342,20,0.341,23,0.512,27,0.013,33,0.172,34,0.19,35,1.355,38,1.622,39,5.111,42,0.264,43,0.503,44,0.512,51,0.296,58,1.802,61,0.391,62,0.408,65,0.158,68,0.228,69,1.05,70,0.12,74,0.252,76,0.096,77,0.016,78,1.964,93,0.959,98,0.608,104,0.595,109,0.358,126,1.622,128,0.567,134,1.997,144,0.991,146,0.358,168,0.358,178,0.301,189,1.241,197,0.358,198,0.47,199,0.341,200,0.358,201,0.358,202,0.298,203,0.512,204,0.342,205,0.598,206,0.342,207,0.653,208,0.327,209,0.49,210,0.296,211,0.358,212,0.342,213,0.512,214,0.342,215,0.342,216,0.342,217,0.358,218,0.598,219,0.342,220,0.342,221,0.512,222,0.342,223,0.512,224,0.342,225,0.358,226,0.342,227,0.653,228,0.342,229,0.327,230,0.342,231,0.342,232,0.358,233,0.49,234,0.653,235,0.342,236,0.358,237,0.342,238,0.358,239,0.342,240,0.342,241,0.358,242,0.342,243,0.342,244,0.624,245,0.439,246,0.358,247,0.327,248,0.512,249,0.342,250,0.342,251,0.358,252,0.342,253,0.296,254,0.358,255,0.342,256,0.358,257,0.342,258,0.358,259,0.342,260,0.358,261,0.342,262,0.342,263,0.358,264,0.327,265,0.342,266,0.598,267,0.327,268,0.358,269,0.281,270,0.281,271,0.342,272,0.358,273,0.358,274,0.342,275,0.358,276,0.358,277,0.342,278,0.358,279,0.342,280,0.358,281,0.358,282,0.311,283,0.445,284,0.281,285,0.327,286,0.342,287,0.358,288,0.358,289,0.342,290,0.358,291,0.358,292,0.342,293,0.358,294,0.342,295,0.512,296,0.358,297,0.342,298,0.342,299,0.358,300,0.342,301,0.342,302,0.342,303,0.358,304,0.281,305,0.358,306,0.342,307,0.358,308,0.342,309,0.358,310,0.342,311,0.358,312,0.342,313,0.358,314,0.358,315,0.008,316,0.008,324,2.159,332,2.31,340,1.891,347,2.224,349,0.685,350,0.824,351,3.18,360,1.174,374,0.685,383,2.547,389,2.547,406,2.348,413,1.746,421,1.723,431,0.868,442,0.659,487,1.227,497,1.349,513,2.022,544,0.885,586,1.803,589,2.704,615,2.224,641,0.556,647,0.839,671,2.547,698,3.873,702,2.562,718,1.803,725,1.989,762,3.79,772,3.712,777,2.547,778,3,788,3,815,2.224,831,2.704,859,1.723,863,3.18,870,2.371,879,2.098,901,2.224,981,1.306,1005,1.891,1008,1.989,1049,1.891,1090,1.723,1096,1.891,1114,2.371,1190,2.224,1194,2.224,1196,2.371,1225,2.547,1409,3.389,1435,5.111,1446,3.062,1450,3.062,1455,2.371,1645,2.767,1653,2.224,1655,2.098,1709,4.378,1837,2.371,1848,4.378,1859,2.547,1876,4.378,1878,2.767,1965,2.767,1986,2.547,2238,6.763,2239,6.763,2240,3.51,2241,5.019,2242,5.019,2243,5.859,2244,5.019,2245,6.393,2246,3.51,2247,7.035,2248,7.243,2249,7.243,2250,5.859,2251,6.393,2252,3.51,2253,5.019,2254,3.51,2255,3.51,2256,3.51,2257,3.51,2258,3.51,2259,3.062,2260,3.51,2261,3.51,2262,3.51,2263,3.51,2264,3.51,2265,3.51,2266,5.019,2267,3.51,2268,3.062,2269,3.51,2270,3.51,2271,2.767,2272,3.51,2273,3.51,2274,2.767,2275,3.51,2276,2.767,2277,3.51,2278,3.51,2279,5.019,2280,3.51,2281,6.763,2282,3.51,2283,5.019,2284,3.51,2285,3.51,2286,3.51,2287,5.019,2288,3.51,2289,3.51,2290,3.51,2291,3.51,2292,3.51,2293,3.51,2294,3.51,2295,3.51,2296,3.51,2297,5.019,2298,3.51,2299,3.51,2300,3.51,2301,3.51,2302,3.51,2303,5.019,2304,3.51,2305,3.062,2306,2.767,2307,3.51,2308,3.51,2309,5.019,2310,5.019,2311,3.062,2312,3.51,2313,3.51,2314,3.51,2315,5.019,2316,5.019,2317,3.51,2318,3.51,2319,3.51,2320,3.51,2321,3.062,2322,3.51,2323,3.51,2324,3.51,2325,3.51,2326,3.51,2327,3.51,2328,3.062,2329,3.51,2330,2.767,2331,3.51,2332,3.51,2333,3.51,2334,3.51,2335,3.51,2336,3.51,2337,3.51,2338,5.859,2339,3.51,2340,3.51,2341,3.51,2342,3.062,2343,3.51,2344,3.51,2345,3.51,2346,3.51,2347,3.062,2348,3.51,2349,4.378,2350,4.378,2351,3.51,2352,3.51,2353,5.859,2354,3.51,2355,3.51,2356,3.51,2357,3.51,2358,5.019,2359,3.51,2360,3.51,2361,3.51,2362,5.859,2363,3.51,2364,3.51,2365,3.51]],["title/components/TmplDisplayGridComponent.html",[0,0.303,247,0.379]],["body/components/TmplDisplayGridComponent.html",[0,0.467,1,0.39,2,0.478,3,0.109,4,0.096,5,0.441,6,0.372,7,0.408,8,0.083,10,0.267,11,0.28,12,0.373,14,0.408,15,0.325,16,0.482,17,0.691,18,0.642,19,0.39,20,0.373,23,0.482,27,0.013,33,0.137,34,0.208,35,1.738,38,1.777,42,0.28,43,0.427,44,0.543,51,0.337,61,0.446,62,0.465,65,0.18,68,0.193,69,1.485,70,0.137,74,0.287,76,0.109,77,0.018,78,1.359,93,1.092,99,0.722,104,0.683,109,0.408,112,0.705,116,0.787,118,0.567,121,0.78,128,0.704,131,1.385,132,1.974,134,1.963,135,0.936,146,0.408,147,1.385,148,1.279,151,1.315,168,0.408,171,1.435,178,0.33,197,0.408,198,0.504,199,0.373,200,0.408,201,0.408,202,0.277,203,0.561,204,0.39,205,0.642,206,0.39,207,0.691,208,0.372,209,0.536,210,0.337,211,0.408,212,0.39,213,0.561,214,0.39,215,0.39,216,0.39,217,0.408,218,0.642,219,0.39,220,0.39,221,0.561,222,0.39,223,0.561,224,0.39,225,0.408,226,0.39,227,0.691,228,0.39,229,0.372,230,0.39,231,0.39,232,0.408,233,0.613,234,0.691,235,0.39,236,0.408,237,0.39,238,0.408,239,0.39,240,0.39,241,0.408,242,0.39,243,0.39,244,0.39,245,0.225,246,0.408,247,0.63,248,0.561,249,0.39,250,0.39,251,0.408,252,0.39,253,0.337,254,0.408,255,0.39,256,0.408,257,0.39,258,0.408,259,0.39,260,0.408,261,0.39,262,0.39,263,0.408,264,0.372,265,0.39,266,0.642,267,0.372,268,0.408,269,0.321,270,0.321,271,0.39,272,0.408,273,0.408,274,0.39,275,0.408,276,0.408,277,0.39,278,0.408,279,0.39,280,0.408,281,0.408,282,0.355,283,0.488,284,0.321,285,0.372,286,0.39,287,0.408,288,0.408,289,0.39,290,0.408,291,0.408,292,0.39,293,0.408,294,0.39,295,0.561,296,0.408,297,0.39,298,0.39,299,0.408,300,0.39,301,0.39,302,0.39,303,0.408,304,0.321,305,0.408,306,0.39,307,0.408,308,0.39,309,0.408,310,0.39,311,0.408,312,0.39,313,0.408,314,0.408,315,0.008,316,0.008,324,2.07,332,2.044,349,1.001,350,0.657,356,2.154,360,1.338,374,0.924,378,1.588,424,0.865,431,0.988,442,0.722,487,1.19,497,0.705,522,1.88,589,2.962,621,1.338,641,0.634,688,2.39,692,2.7,694,1.503,698,2.054,701,2.7,702,2.939,703,2.7,704,2.955,705,4.164,706,3.713,707,2.7,708,3.713,709,2.265,710,1.88,711,2.7,712,2.39,713,2.962,714,2.7,715,3.713,716,4.244,717,4.244,719,1.803,721,4.793,722,4.793,723,2.7,724,3.086,725,2.265,726,2.7,731,2.7,732,2.054,733,1.88,736,2.7,738,2.265,739,2.39,740,2.7,741,2.7,742,2.7,743,2.533,744,2.054,746,2.7,747,2.7,748,3.713,749,2.7,750,3.713,751,2.7,752,2.7,753,2.265,754,3.713,755,1.963,756,2.39,757,2.7,758,2.7,759,2.7,760,3.713,761,1.88,762,2.154,763,2.265,764,2.7,936,2.901,951,4.954,952,6.191,953,6.191,954,3.488,955,2.834,956,2.825,957,6.554,958,3.488,959,3.488,960,3.488,961,4.797,962,3.488,1859,2.901,2366,5.499,2367,3.999,2368,3.999]],["title/components/TmplDisplayGroupComponent.html",[0,0.303,249,0.397]],["body/components/TmplDisplayGroupComponent.html",[0,0.524,1,0.383,2,0.554,3,0.107,4,0.094,5,0.435,6,0.365,7,0.4,8,0.081,10,0.264,11,0.278,12,0.368,13,0.552,14,0.4,15,0.325,16,0.484,17,0.703,18,0.635,19,0.383,20,0.368,22,3.074,23,0.552,24,1.055,27,0.013,33,0.134,34,0.205,36,0.631,42,0.309,43,0.456,44,0.565,51,0.331,61,0.605,62,0.631,65,0.244,68,0.191,70,0.134,72,0.599,74,0.282,76,0.107,77,0.018,78,0.969,80,0.456,81,0.716,85,2.649,86,1.184,88,0.793,92,0.621,98,0.475,99,0.925,100,0.821,104,0.72,106,0.644,109,0.4,112,1.184,115,1.405,116,0.899,118,0.952,121,0.952,122,0.799,124,1.002,127,1.532,128,0.725,129,1.461,130,2.097,133,1.002,134,1.225,135,1.143,146,0.4,147,1.285,148,1.378,151,1.298,154,0.938,159,1.225,160,1.408,165,1.255,168,0.4,176,3.664,178,0.326,187,2.113,188,3.525,189,0.969,190,1.145,191,1.698,192,0.878,193,1.408,194,2.222,195,1.46,196,2.222,197,0.4,198,0.499,199,0.368,200,0.4,201,0.4,202,0.266,203,0.554,204,0.383,205,0.635,206,0.383,207,0.685,208,0.365,209,0.529,210,0.458,211,0.4,212,0.383,213,0.554,214,0.383,215,0.383,216,0.383,217,0.4,218,0.635,219,0.383,220,0.383,221,0.554,222,0.383,223,0.554,224,0.383,225,0.4,226,0.383,227,0.685,228,0.383,229,0.365,230,0.383,231,0.383,232,0.4,233,0.529,234,0.685,235,0.383,236,0.4,237,0.383,238,0.4,239,0.383,240,0.383,241,0.4,242,0.383,243,0.383,244,0.383,245,0.22,246,0.4,247,0.365,248,0.554,249,0.655,250,0.383,251,0.4,252,0.383,253,0.331,254,0.4,255,0.383,256,0.4,257,0.383,258,0.4,259,0.383,260,0.4,261,0.383,262,0.383,263,0.4,264,0.365,265,0.383,266,0.635,267,0.365,268,0.4,269,0.314,270,0.314,271,0.383,272,0.4,273,0.4,274,0.383,275,0.4,276,0.4,277,0.383,278,0.4,279,0.383,280,0.4,281,0.4,282,0.348,283,0.481,284,0.314,285,0.365,286,0.383,287,0.4,288,0.4,289,0.383,290,0.4,291,0.4,292,0.383,293,0.4,294,0.383,295,0.554,296,0.4,297,0.383,298,0.383,299,0.4,300,0.383,301,0.383,302,0.383,303,0.4,304,0.314,305,0.4,306,0.383,307,0.4,308,0.383,309,0.4,310,0.383,311,0.4,312,0.383,313,0.4,314,0.4,315,0.008,316,0.008,324,1.107,364,1.572,374,0.962,378,1.214,421,1.926,423,3.718,433,1.359,452,3.055,497,1.097,558,3.514,696,1.107,712,2.345,755,1.926,765,2.649,837,1.844,975,2.649,1144,2.345,1380,3.438,1382,4.277,1451,2.845,1655,2.345,1795,6.36,1943,6.52,2369,3.922,2370,3.922,2371,6.222,2372,6.222,2373,6.714,2374,3.922,2375,3.922,2376,3.922,2377,3.922,2378,6.222,2379,3.922,2380,5.427,2381,3.922,2382,3.922,2383,3.422,2384,3.922,2385,3.922,2386,3.922,2387,3.922,2388,3.922,2389,3.922,2390,3.422,2391,3.422,2392,3.922,2393,6.714,2394,3.922,2395,4.277,2396,3.422,2397,3.922,2398,5.427,2399,7.291]],["title/components/TmplDrawerComponent.html",[0,0.303,250,0.397]],["body/components/TmplDrawerComponent.html",[0,0.464,1,0.385,2,0.414,3,0.108,4,0.095,5,0.316,6,0.367,7,0.403,8,0.081,10,0.265,11,0.278,12,0.37,13,0.554,14,0.403,15,0.325,16,0.482,17,0.69,18,0.637,19,0.385,20,0.37,23,0.479,24,0.964,27,0.013,33,0.187,34,0.206,36,0.634,42,0.225,43,0.37,44,0.566,51,0.333,61,0.607,62,0.634,65,0.177,68,0.192,70,0.135,72,0.603,73,1.043,74,0.284,76,0.108,77,0.018,78,0.976,80,0.459,81,0.721,86,1.187,88,0.799,89,1.14,90,0.854,92,0.625,98,0.66,99,0.884,100,0.826,101,1.276,102,1.567,104,0.774,106,1.025,109,0.403,110,1.152,112,0.961,113,1.078,115,1.306,116,0.726,118,1.147,121,1.132,122,1.203,124,1.009,126,1.762,128,0.483,129,0.772,133,1.009,135,0.672,143,1.524,144,1.114,146,0.403,147,1.365,148,1.38,151,1.61,152,1.306,155,2.126,159,1.233,160,1.417,163,1.276,168,0.403,171,1.957,174,3.954,178,0.375,179,1.316,180,1.103,181,2.666,182,1.762,183,1.709,190,1.822,197,0.403,198,0.5,199,0.424,200,0.403,201,0.403,202,0.267,203,0.556,204,0.385,205,0.637,206,0.385,207,0.687,208,0.367,209,0.532,210,0.333,211,0.403,212,0.385,213,0.556,214,0.385,215,0.385,216,0.385,217,0.403,218,0.637,219,0.385,220,0.385,221,0.556,222,0.385,223,0.687,224,0.385,225,0.403,226,0.385,227,0.687,228,0.385,229,0.367,230,0.385,231,0.385,232,0.403,233,0.532,234,0.687,235,0.385,236,0.403,237,0.385,238,0.403,239,0.385,240,0.385,241,0.403,242,0.385,243,0.385,244,0.385,245,0.222,246,0.403,247,0.367,248,0.556,249,0.385,250,0.657,251,0.403,252,0.385,253,0.333,254,0.403,255,0.385,256,0.403,257,0.385,258,0.403,259,0.385,260,0.403,261,0.385,262,0.385,263,0.403,264,0.367,265,0.657,266,0.637,267,0.367,268,0.403,269,0.316,270,0.316,271,0.385,272,0.403,273,0.403,274,0.385,275,0.403,276,0.403,277,0.385,278,0.403,279,0.385,280,0.403,281,0.403,282,0.35,283,0.483,284,0.316,285,0.367,286,0.385,287,0.403,288,0.403,289,0.385,290,0.403,291,0.403,292,0.385,293,0.403,294,0.385,295,0.556,296,0.403,297,0.385,298,0.385,299,0.403,300,0.385,301,0.385,302,0.385,303,0.403,304,0.316,305,0.403,306,0.385,307,0.403,308,0.385,309,0.403,310,0.385,311,0.403,312,0.385,313,0.403,314,0.403,315,0.008,316,0.008,330,2.501,359,2.666,364,1.582,371,2.864,374,0.539,378,1.581,393,2.562,442,0.715,487,0.989,497,0.696,616,1.152,625,4.755,627,1.469,628,1.643,631,3.111,684,2.936,685,2.562,753,2.236,799,3.732,810,2.323,812,1.582,839,1.233,955,2.815,1090,1.938,1127,2.501,1128,3.111,1345,2.666,1372,3.453,1384,2.028,1427,4.733,1451,2.864,1637,2.666,1654,3.088,1674,3.443,1725,3.453,1798,2.126,2050,2.501,2106,4.296,2108,2.864,2400,3.947,2401,7.839,2402,6.243,2403,5.451,2404,6.243,2405,6.732,2406,3.947,2407,3.947,2408,3.947,2409,3.947,2410,3.947,2411,3.947,2412,3.947,2413,5.451,2414,6.243,2415,5.451,2416,5.451,2417,5.451,2418,3.947,2419,3.947,2420,3.947,2421,3.947,2422,3.947,2423,3.947,2424,3.947,2425,3.443,2426,3.443,2427,3.443,2428,3.947,2429,3.947,2430,3.947]],["title/components/TmplHelpIconComponent.html",[0,0.303,252,0.397]],["body/components/TmplHelpIconComponent.html",[0,0.499,1,0.444,2,0.456,3,0.124,4,0.109,5,0.538,6,0.424,7,0.465,8,0.094,10,0.292,11,0.295,12,0.407,13,0.595,14,0.465,15,0.327,16,0.485,17,0.706,18,0.685,19,0.444,23,0.517,27,0.013,33,0.156,34,0.227,35,1.553,36,0.697,42,0.188,43,0.407,44,0.538,51,0.384,61,0.507,62,0.529,65,0.205,68,0.207,70,0.156,72,0.695,73,1.202,74,0.327,76,0.124,77,0.021,80,0.529,81,0.831,86,1.258,88,0.921,92,0.951,99,0.881,104,0.723,109,0.465,112,1.343,113,1.833,116,0.885,118,1.08,121,0.952,126,2.169,127,1.895,128,0.532,146,0.465,168,0.465,178,0.36,197,0.465,198,0.538,199,0.407,200,0.465,201,0.465,202,0.28,203,0.613,204,0.444,205,0.685,206,0.444,207,0.729,208,0.424,209,0.585,210,0.384,211,0.465,212,0.444,213,0.613,214,0.444,215,0.444,216,0.444,217,0.465,218,0.685,219,0.444,220,0.444,221,0.613,222,0.444,223,0.822,224,0.444,225,0.465,226,0.444,227,0.729,228,0.444,229,0.424,230,0.444,231,0.444,232,0.465,233,0.585,234,0.729,235,0.444,236,0.465,237,0.444,238,0.465,239,0.444,240,0.444,241,0.465,242,0.444,243,0.444,244,0.444,245,0.256,246,0.465,247,0.424,248,0.613,249,0.444,250,0.444,251,0.465,252,0.696,253,0.602,254,0.465,255,0.444,256,0.465,257,0.444,258,0.465,259,0.444,260,0.465,261,0.444,262,0.444,263,0.465,264,0.424,265,0.444,266,0.685,267,0.424,268,0.465,269,0.365,270,0.365,271,0.444,272,0.465,273,0.465,274,0.444,275,0.465,276,0.465,277,0.444,278,0.465,279,0.444,280,0.465,281,0.465,282,0.404,283,0.532,284,0.365,285,0.424,286,0.444,287,0.465,288,0.465,289,0.444,290,0.465,291,0.465,292,0.444,293,0.465,294,0.444,295,0.613,296,0.465,297,0.444,298,0.444,299,0.465,300,0.444,301,0.444,302,0.444,303,0.465,304,0.365,305,0.465,306,0.444,307,0.465,308,0.444,309,0.465,310,0.444,311,0.465,312,0.444,313,0.465,314,0.465,315,0.009,316,0.009,544,1.183,647,1.088,956,2.338,1134,5.143,1582,4.042,1611,2.578,1923,3.295,2431,7.136,2432,4.551,2433,6.712,2434,6.712,2435,6,2436,4.551,2437,3.587]],["title/components/TmplIconBannerComponent.html",[0,0.303,255,0.397]],["body/components/TmplIconBannerComponent.html",[0,0.48,1,0.41,2,0.433,3,0.115,4,0.101,5,0.337,6,0.392,7,0.429,8,0.087,10,0.277,11,0.286,12,0.386,13,0.572,14,0.429,15,0.326,16,0.483,17,0.695,18,0.659,19,0.41,20,0.386,23,0.49,27,0.013,32,3.225,33,0.144,34,0.215,36,0.662,42,0.286,43,0.526,44,0.597,51,0.355,61,0.469,62,0.489,65,0.189,68,0.213,70,0.144,72,0.643,74,0.302,76,0.115,77,0.019,80,0.489,81,0.768,86,1.219,88,1.399,91,2.665,92,1.269,99,0.747,100,0.88,101,1.36,102,1.447,104,0.721,106,1.136,109,0.429,110,1.662,111,1.457,112,1.004,113,1.149,116,0.75,118,0.98,121,0.98,122,0.95,123,1.51,127,1.188,128,0.505,141,1.407,143,1.624,144,1.188,146,0.429,147,1.138,148,1.219,152,1.191,154,1.361,168,0.429,178,0.471,179,1.113,180,0.851,182,1.36,190,1.662,192,0.941,195,1.565,197,0.429,198,0.517,199,0.386,200,0.429,201,0.429,202,0.273,203,0.581,204,0.41,205,0.659,206,0.41,207,0.706,208,0.392,209,0.555,210,0.545,211,0.429,212,0.41,213,0.581,214,0.41,215,0.41,216,0.41,217,0.429,218,0.659,219,0.41,220,0.41,221,0.581,222,0.41,223,0.81,224,0.41,225,0.429,226,0.41,227,0.706,228,0.41,229,0.392,230,0.41,231,0.41,232,0.429,233,0.555,234,0.706,235,0.41,236,0.429,237,0.41,238,0.429,239,0.41,240,0.41,241,0.429,242,0.41,243,0.41,244,0.41,245,0.236,246,0.429,247,0.392,248,0.581,249,0.41,250,0.41,251,0.429,252,0.41,253,0.355,254,0.429,255,0.675,256,0.429,257,0.41,258,0.429,259,0.41,260,0.429,261,0.41,262,0.41,263,0.429,264,0.392,265,0.41,266,0.659,267,0.392,268,0.429,269,0.337,270,0.337,271,0.41,272,0.429,273,0.429,274,0.41,275,0.429,276,0.429,277,0.41,278,0.429,279,0.41,280,0.429,281,0.429,282,0.373,283,0.505,284,0.337,285,0.392,286,0.41,287,0.429,288,0.429,289,0.41,290,0.429,291,0.429,292,0.41,293,0.429,294,0.41,295,0.581,296,0.429,297,0.41,298,0.41,299,0.429,300,0.41,301,0.41,302,0.41,303,0.429,304,0.337,305,0.429,306,0.41,307,0.429,308,0.41,309,0.429,310,0.41,311,0.429,312,0.41,313,0.429,314,0.429,315,0.009,316,0.009,374,0.574,378,1.547,442,0.747,515,2.665,544,1.138,616,1.228,619,1.972,621,1.407,627,1.565,628,1.751,630,3.067,641,0.667,647,1.006,683,5.086,693,1.822,694,1.543,696,1.188,839,1.314,1133,3.052,1610,3.052,1923,2.065,2438,7.614,2439,7.614,2440,4.207,2441,6.453,2442,6.453,2443,5.693,2444,6.914,2445,5.693,2446,4.207,2447,4.207,2448,4.207,2449,4.207,2450,4.207,2451,4.207,2452,4.207,2453,4.207,2454,4.207,2455,3.316,2456,5.693,2457,3.316,2458,3.67,2459,4.207,2460,4.207,2461,4.207,2462,4.207]],["title/components/TmplImageComponent.html",[0,0.303,257,0.397]],["body/components/TmplImageComponent.html",[0,0.483,1,0.416,2,0.551,3,0.117,4,0.102,5,0.521,6,0.397,7,0.435,8,0.088,10,0.279,11,0.287,12,0.39,13,0.576,14,0.435,15,0.326,16,0.484,17,0.713,18,0.663,19,0.416,20,0.39,22,3.68,23,0.507,24,0.886,27,0.013,33,0.146,34,0.217,44,0.342,51,0.36,65,0.192,68,0.2,70,0.146,72,0.651,74,0.306,76,0.117,77,0.02,80,0.495,88,0.862,92,1.029,93,1.164,98,0.516,99,1.074,100,0.892,104,0.753,106,0.7,109,0.435,115,1.454,116,0.925,118,1.06,121,0.986,122,0.845,124,1.089,128,0.663,129,1.123,130,2.171,135,1.106,146,0.435,147,1.318,148,1.413,151,1.373,152,1.702,153,2.603,154,1.019,165,1.328,168,0.435,178,0.345,187,2.296,188,3.68,189,1.718,190,1.244,191,1.846,192,0.954,193,1.53,194,2.414,195,2.587,196,2.414,197,0.435,198,0.521,199,0.39,200,0.435,201,0.435,202,0.274,203,0.586,204,0.416,205,0.663,206,0.416,207,0.71,208,0.397,209,0.56,210,0.36,211,0.435,212,0.416,213,0.586,214,0.416,215,0.416,216,0.416,217,0.435,218,0.663,219,0.416,220,0.416,221,0.586,222,0.416,223,0.586,224,0.416,225,0.435,226,0.416,227,0.71,228,0.416,229,0.397,230,0.416,231,0.416,232,0.435,233,0.56,234,0.71,235,0.416,236,0.435,237,0.416,238,0.435,239,0.416,240,0.416,241,0.435,242,0.416,243,0.416,244,0.416,245,0.239,246,0.435,247,0.397,248,0.586,249,0.416,250,0.416,251,0.435,252,0.416,253,0.36,254,0.435,255,0.416,256,0.435,257,0.678,258,0.435,259,0.416,260,0.435,261,0.416,262,0.416,263,0.435,264,0.397,265,0.416,266,0.663,267,0.397,268,0.435,269,0.342,270,0.342,271,0.416,272,0.435,273,0.435,274,0.416,275,0.435,276,0.435,277,0.416,278,0.435,279,0.416,280,0.435,281,0.435,282,0.378,283,0.509,284,0.342,285,0.397,286,0.416,287,0.435,288,0.435,289,0.416,290,0.435,291,0.435,292,0.416,293,0.435,294,0.416,295,0.586,296,0.435,297,0.416,298,0.416,299,0.435,300,0.416,301,0.416,302,0.416,303,0.435,304,0.342,305,0.435,306,0.416,307,0.435,308,0.416,309,0.435,310,0.416,311,0.435,312,0.416,313,0.435,314,0.435,315,0.009,316,0.009,374,0.582,378,1.555,421,3.189,558,3.054,615,4.115,693,3.142,696,1.203,704,3.054,733,2.004,839,1.331,859,3.189,1455,4.387,2463,4.262,2464,6.496,2465,6.496,2466,4.262]],["title/components/TmplLatexComponent.html",[0,0.303,259,0.397]],["body/components/TmplLatexComponent.html",[0,0.569,1,0.489,2,0.485,3,0.137,4,0.12,6,0.466,7,0.511,8,0.103,10,0.31,11,0.306,13,0.444,14,0.511,15,0.328,16,0.486,17,0.709,18,0.717,19,0.489,23,0.546,27,0.013,51,0.423,65,0.225,68,0.196,70,0.171,76,0.137,77,0.023,104,0.689,109,0.511,128,0.566,146,0.511,168,0.511,178,0.422,197,0.511,198,0.563,199,0.433,200,0.511,201,0.511,202,0.289,203,0.652,204,0.489,205,0.717,206,0.489,207,0.756,208,0.466,209,0.623,210,0.423,211,0.511,212,0.489,213,0.652,214,0.489,215,0.489,216,0.489,217,0.511,218,0.717,219,0.489,220,0.489,221,0.652,222,0.489,223,0.652,224,0.489,225,0.511,226,0.489,227,0.756,228,0.489,229,0.466,230,0.489,231,0.489,232,0.511,233,0.623,234,0.756,235,0.489,236,0.511,237,0.489,238,0.511,239,0.489,240,0.489,241,0.511,242,0.489,243,0.489,244,0.489,245,0.281,246,0.511,247,0.466,248,0.652,249,0.489,250,0.489,251,0.511,252,0.489,253,0.423,254,0.511,255,0.489,256,0.511,257,0.489,258,0.511,259,0.722,260,0.756,261,0.489,262,0.489,263,0.511,264,0.466,265,0.489,266,0.717,267,0.466,268,0.511,269,0.401,270,0.401,271,0.489,272,0.511,273,0.511,274,0.489,275,0.511,276,0.511,277,0.489,278,0.511,279,0.489,280,0.511,281,0.511,282,0.444,283,0.566,284,0.401,285,0.466,286,0.489,287,0.511,288,0.511,289,0.489,290,0.511,291,0.511,292,0.489,293,0.511,294,0.489,295,0.652,296,0.511,297,0.489,298,0.489,299,0.511,300,0.489,301,0.489,302,0.489,303,0.511,304,0.401,305,0.511,306,0.489,307,0.511,308,0.489,309,0.511,310,0.489,311,0.511,312,0.489,313,0.511,314,0.511,315,0.01,316,0.01,1005,2.698,1847,4.368,2467,5.008,2468,4.368,2469,5.008]],["title/components/TmplLottieAnimation.html",[0,0.303,261,0.397]],["body/components/TmplLottieAnimation.html",[0,0.48,1,0.41,2,0.549,3,0.115,4,0.101,5,0.517,6,0.391,7,0.429,8,0.087,10,0.277,11,0.286,12,0.386,13,0.572,14,0.429,15,0.326,16,0.483,17,0.708,18,0.658,19,0.41,20,0.386,22,3.653,23,0.505,27,0.013,33,0.144,34,0.215,38,1.838,42,0.298,43,0.386,44,0.579,51,0.355,61,0.468,62,0.488,65,0.189,68,0.229,69,1.19,70,0.144,72,0.642,74,0.302,76,0.115,77,0.019,78,1.038,80,0.488,88,0.85,89,1.038,90,0.909,93,1.147,99,0.948,100,0.879,104,0.731,106,0.69,109,0.429,115,1.446,116,0.885,121,0.98,122,0.837,124,1.074,128,0.572,129,1.112,130,2.158,135,1.098,146,0.429,147,1.312,148,1.407,151,1.36,154,1.005,165,1.316,168,0.429,178,0.341,187,2.263,188,3.653,189,1.038,190,1.227,191,1.819,192,0.94,193,1.508,194,2.38,195,1.563,196,2.38,197,0.429,198,0.517,199,0.386,200,0.429,201,0.429,202,0.287,203,0.581,204,0.41,205,0.658,206,0.41,207,0.706,208,0.391,209,0.555,210,0.355,211,0.429,212,0.41,213,0.581,214,0.41,215,0.41,216,0.41,217,0.429,218,0.658,219,0.41,220,0.41,221,0.581,222,0.41,223,0.581,224,0.41,225,0.429,226,0.41,227,0.706,228,0.41,229,0.391,230,0.41,231,0.41,232,0.429,233,0.555,234,0.706,235,0.41,236,0.429,237,0.41,238,0.429,239,0.41,240,0.41,241,0.429,242,0.41,243,0.41,244,0.41,245,0.319,246,0.429,247,0.391,248,0.581,249,0.41,250,0.41,251,0.429,252,0.41,253,0.355,254,0.429,255,0.41,256,0.429,257,0.41,258,0.429,259,0.41,260,0.429,261,0.674,262,0.674,263,0.429,264,0.391,265,0.41,266,0.658,267,0.391,268,0.429,269,0.337,270,0.337,271,0.41,272,0.429,273,0.429,274,0.41,275,0.429,276,0.429,277,0.41,278,0.429,279,0.41,280,0.429,281,0.429,282,0.373,283,0.505,284,0.337,285,0.391,286,0.41,287,0.429,288,0.429,289,0.41,290,0.429,291,0.429,292,0.41,293,0.429,294,0.41,295,0.581,296,0.429,297,0.41,298,0.41,299,0.429,300,0.41,301,0.41,302,0.41,303,0.429,304,0.337,305,0.429,306,0.41,307,0.429,308,0.41,309,0.429,310,0.41,311,0.429,312,0.41,313,0.429,314,0.429,315,0.009,316,0.009,324,1.951,332,2.18,349,0.776,350,0.934,360,1.406,374,0.573,378,1.546,421,3.166,431,1.038,457,1.358,487,0.901,544,0.741,589,3.064,641,0.666,647,1.005,674,3.665,696,1.186,733,1.975,839,1.312,980,3.356,981,1.563,982,1.894,993,3.222,1878,3.312,1983,4.126,2027,3.048,2176,5.083,2470,7.444,2471,4.202,2472,5.625,2473,5.688,2474,5.688,2475,5.625,2476,4.202,2477,4.202,2478,3.048,2479,4.202,2480,4.202,2481,4.202,2482,4.202,2483,4.202,2484,3.665]],["title/components/TmplNavigationBarComponent.html",[0,0.303,264,0.379]],["body/components/TmplNavigationBarComponent.html",[0,0.492,1,0.431,2,0.447,3,0.121,4,0.106,5,0.354,6,0.412,7,0.451,8,0.091,10,0.286,11,0.292,12,0.399,13,0.587,14,0.451,15,0.327,16,0.484,17,0.7,18,0.676,19,0.431,20,0.399,23,0.499,24,0.603,27,0.013,33,0.151,34,0.222,36,0.684,42,0.183,43,0.499,44,0.472,51,0.373,61,0.493,62,0.514,65,0.199,68,0.217,70,0.151,73,1.168,74,0.318,76,0.121,77,0.02,80,0.514,81,0.807,86,1.244,92,1.118,99,0.772,100,0.925,101,1.429,104,0.738,106,0.726,109,0.451,112,1.166,116,0.684,118,1.093,121,0.627,122,0.866,127,1.868,128,0.522,129,0.864,131,1.532,132,1.587,133,1.129,135,0.752,143,1.706,144,1.868,146,0.451,152,0.925,153,2.651,154,1.057,159,1.381,160,1.587,168,0.451,169,3.729,178,0.441,179,1.151,180,1.191,195,1.645,197,0.451,198,0.53,199,0.399,200,0.451,201,0.451,202,0.285,203,0.601,204,0.431,205,0.676,206,0.431,207,0.72,208,0.412,209,0.574,210,0.373,211,0.451,212,0.431,213,0.601,214,0.431,215,0.431,216,0.431,217,0.451,218,0.676,219,0.431,220,0.431,221,0.601,222,0.431,223,0.601,224,0.431,225,0.451,226,0.431,227,0.72,228,0.431,229,0.412,230,0.431,231,0.431,232,0.451,233,0.574,234,0.72,235,0.431,236,0.451,237,0.431,238,0.451,239,0.431,240,0.431,241,0.451,242,0.431,243,0.431,244,0.431,245,0.248,246,0.451,247,0.412,248,0.601,249,0.431,250,0.431,251,0.451,252,0.431,253,0.373,254,0.451,255,0.431,256,0.451,257,0.431,258,0.451,259,0.431,260,0.451,261,0.431,262,0.431,263,0.451,264,0.657,265,0.793,266,0.676,267,0.412,268,0.451,269,0.354,270,0.354,271,0.431,272,0.451,273,0.451,274,0.431,275,0.451,276,0.451,277,0.431,278,0.451,279,0.431,280,0.451,281,0.451,282,0.392,283,0.522,284,0.472,285,0.412,286,0.431,287,0.451,288,0.451,289,0.431,290,0.451,291,0.451,292,0.431,293,0.451,294,0.431,295,0.601,296,0.451,297,0.431,298,0.431,299,0.451,300,0.431,301,0.431,302,0.431,303,0.451,304,0.354,305,0.451,306,0.431,307,0.451,308,0.431,309,0.451,310,0.431,311,0.451,312,0.431,313,0.451,314,0.451,315,0.009,316,0.009,424,0.956,434,2.078,442,0.772,455,2.801,487,0.7,515,3.729,627,2.462,628,2.45,693,2.548,696,1.248,771,2.271,793,4.192,794,5.772,795,5.772,796,3.484,797,3.856,798,3.856,799,4.516,800,4.639,801,5.215,802,5.772,803,3.856,804,3.856,805,3.856,806,3.856,1355,3.484,1372,2.801,1654,2.504,2485,3.856,2486,3.856,2487,5.885,2488,4.639]],["title/components/TmplNumberComponent.html",[0,0.303,267,0.379]],["body/components/TmplNumberComponent.html",[0,0.418,1,0.319,2,0.362,3,0.089,4,0.078,5,0.262,6,0.304,7,0.334,8,0.067,10,0.232,11,0.256,12,0.323,13,0.499,14,0.334,15,0.324,16,0.477,17,0.672,18,0.574,19,0.319,20,0.323,23,0.466,24,0.991,27,0.013,32,3.134,33,0.112,34,0.18,36,0.554,38,1.54,42,0.325,43,0.533,44,0.634,51,0.522,61,0.733,62,0.554,63,0.639,65,0.37,68,0.211,69,0.997,70,0.112,72,0.499,73,0.863,74,0.235,76,0.089,77,0.015,80,0.38,81,0.596,86,1.09,88,0.964,91,2.07,92,1.151,95,2.7,98,0.749,100,0.684,101,1.056,102,1.177,104,0.769,106,1.016,109,0.334,110,0.954,112,1.09,115,0.684,116,0.824,118,1.081,119,2.37,121,1.081,122,1.01,123,1.173,124,1.218,128,0.499,129,1.286,130,1.02,131,1.132,132,1.173,133,0.835,135,1.119,141,2.069,144,1.856,146,0.574,147,1.281,148,1.168,149,1.851,151,1.479,152,0.997,153,2.478,154,0.781,159,1.02,160,1.173,163,1.056,165,1.43,168,0.334,171,1.173,173,1.795,178,0.394,179,1.472,180,1.389,182,1.998,189,0.808,190,0.954,192,1.259,193,1.173,197,0.334,198,0.451,199,0.323,200,0.334,201,0.334,202,0.28,203,0.487,204,0.319,205,0.574,206,0.319,207,0.631,208,0.304,209,0.465,210,0.522,211,0.334,212,0.319,213,0.487,214,0.319,215,0.319,216,0.319,217,0.334,218,0.574,219,0.319,220,0.319,221,0.487,222,0.319,223,0.487,224,0.319,225,0.334,226,0.319,227,0.631,228,0.319,229,0.304,230,0.319,231,0.319,232,0.334,233,0.465,234,0.631,235,0.319,236,0.334,237,0.319,238,0.334,239,0.319,240,0.319,241,0.334,242,0.319,243,0.319,244,0.319,245,0.183,246,0.334,247,0.304,248,0.487,249,0.319,250,0.319,251,0.334,252,0.319,253,0.276,254,0.334,255,0.319,256,0.334,257,0.319,258,0.334,259,0.319,260,0.334,261,0.319,262,0.319,263,0.334,264,0.304,265,0.319,266,0.574,267,0.576,268,0.334,269,0.262,270,0.262,271,0.319,272,0.334,273,0.334,274,0.319,275,0.334,276,0.334,277,0.319,278,0.334,279,0.319,280,0.334,281,0.334,282,0.29,283,0.423,284,0.451,285,0.304,286,0.319,287,0.334,288,0.334,289,0.319,290,0.334,291,0.334,292,0.319,293,0.334,294,0.319,295,0.487,296,0.334,297,0.319,298,0.319,299,0.334,300,0.319,301,0.319,302,0.319,303,0.334,304,0.262,305,0.334,306,0.319,307,0.334,308,0.319,309,0.334,310,0.319,311,0.334,312,0.319,313,0.334,314,0.334,315,0.007,316,0.007,325,2.645,349,0.844,350,1.016,374,0.844,413,1.536,424,0.707,431,0.808,433,1.132,434,1.536,442,0.625,497,0.84,513,0.892,558,2.907,573,1.76,616,1.805,619,1.949,627,2.093,628,1.984,641,0.518,684,1.76,688,1.953,694,1.345,702,1.309,718,1.678,730,1.173,771,1.678,813,1.678,837,2.907,910,4.434,911,6.944,912,6.944,913,2.85,914,1.604,915,4.157,916,4.907,917,5.394,918,5.735,919,5.394,920,5.394,921,5.394,922,5.394,923,4.907,924,5.394,925,5.394,926,4.635,927,4.434,928,2.85,929,4.157,930,6.337,931,2.85,932,5.394,933,2.85,934,2.575,935,5.735,936,2.37,937,2.85,938,1.953,939,4.157,940,6.566,941,6.337,942,2.85,943,2.85,944,2.85,945,4.157,946,4.157,947,2.85,948,2.85,949,4.157,950,3.696,1384,1.678,1618,2.575,1627,1.536,1634,2.206,1725,3.019,1798,1.76,1923,1.604,1941,2.07,1982,2.575,2111,2.575,2489,4.765,2490,4.765,2491,4.765,2492,4.765,2493,3.267,2494,3.267,2495,3.267,2496,3.267,2497,3.267,2498,3.267,2499,3.267,2500,3.267,2501,3.267,2502,3.267,2503,3.267,2504,3.267,2505,3.267,2506,3.267,2507,3.267,2508,3.267,2509,2.85,2510,3.267,2511,5.625,2512,4.765,2513,3.267,2514,3.267]],["title/components/TmplOdkFormComponent.html",[0,0.303,269,0.326]],["body/components/TmplOdkFormComponent.html",[0,0.54,1,0.318,2,0.427,3,0.089,4,0.078,5,0.382,6,0.304,7,0.333,8,0.116,10,0.232,11,0.255,12,0.323,13,0.499,14,0.333,15,0.323,16,0.477,17,0.685,18,0.574,19,0.464,20,0.323,23,0.446,24,1.01,27,0.013,32,1.358,33,0.112,34,0.18,35,1.587,36,0.553,42,0.232,43,0.518,44,0.495,51,0.275,54,2.445,57,1.848,58,1.171,61,0.364,63,0.638,65,0.278,68,0.223,70,0.112,74,0.235,76,0.089,77,0.015,78,1.696,80,0.379,89,0.869,90,0.706,98,0.577,99,0.428,102,0.683,104,0.575,109,0.333,110,0.952,111,1.13,112,1.28,115,0.996,116,0.553,118,0.675,122,0.48,124,1.436,128,0.609,129,0.931,130,1.487,133,0.834,134,1.019,135,0.81,143,1.259,146,0.333,152,0.996,165,0.755,168,0.333,169,3.561,172,1.848,173,0.806,178,0.337,179,0.638,180,0.66,184,2.061,189,1.177,192,0.73,193,1.171,197,0.333,198,0.495,199,0.381,200,0.333,201,0.333,202,0.274,203,0.486,204,0.318,205,0.574,206,0.318,207,0.631,208,0.304,209,0.464,210,0.275,211,0.333,212,0.318,213,0.486,214,0.318,215,0.318,216,0.318,217,0.333,218,0.574,219,0.318,220,0.318,221,0.486,222,0.318,223,0.574,224,0.318,225,0.333,226,0.318,227,0.631,228,0.318,229,0.304,230,0.318,231,0.318,232,0.333,233,0.464,234,0.631,235,0.318,236,0.333,237,0.318,238,0.333,239,0.318,240,0.318,241,0.333,242,0.318,243,0.318,244,0.318,245,0.347,246,0.333,247,0.304,248,0.486,249,0.318,250,0.318,251,0.333,252,0.318,253,0.275,254,0.333,255,0.318,256,0.333,257,0.318,258,0.333,259,0.318,260,0.333,261,0.318,262,0.318,263,0.333,264,0.304,265,0.318,266,0.574,267,0.304,268,0.333,269,0.495,270,0.603,271,0.318,272,0.333,273,0.333,274,0.318,275,0.333,276,0.333,277,0.318,278,0.333,279,0.318,280,0.333,281,0.333,282,0.289,283,0.422,284,0.382,285,0.304,286,0.318,287,0.333,288,0.333,289,0.318,290,0.333,291,0.333,292,0.318,293,0.333,294,0.318,295,0.486,296,0.333,297,0.318,298,0.318,299,0.333,300,0.318,301,0.318,302,0.318,303,0.333,304,0.262,305,0.333,306,0.318,307,0.333,308,0.318,309,0.333,310,0.318,311,0.333,312,0.318,313,0.333,314,0.333,315,0.007,316,0.007,331,1.13,334,1.534,340,1.757,341,2.759,349,0.843,350,0.782,356,2.564,357,1.757,364,1.307,368,1.676,372,2.203,374,0.445,378,0.73,382,2.367,383,3.453,393,1.534,406,1.307,408,3.215,409,2.203,413,1.873,417,2.067,418,1.95,421,1.602,423,1.534,424,1.337,442,0.625,448,3.36,452,4.097,457,1.054,487,1.041,497,0.991,513,1.873,523,3.329,533,1.757,544,0.575,586,1.676,616,1.39,619,1.13,620,2.067,635,3.752,641,0.517,647,0.78,683,3.752,685,2.238,704,1.534,705,1.676,710,1.534,719,1.471,723,2.337,724,2.759,730,1.709,732,2.445,733,1.534,744,1.676,761,1.534,788,1.95,810,1.771,812,1.307,831,1.757,859,2.337,865,1.358,872,2.445,914,3.368,938,1.95,950,1.95,963,3.561,964,4.173,965,2.203,966,4.437,967,3.215,968,3.796,969,3.215,970,2.203,971,2.203,972,2.203,973,2.203,974,2.203,976,3.694,977,1.95,978,2.203,979,2.203,980,3.093,981,1.214,982,1.471,983,3.016,984,2.067,985,4.437,986,2.067,987,2.203,988,1.95,989,3.561,990,2.067,991,2.203,992,3.561,993,1.848,994,2.067,995,2.067,996,2.067,997,4.633,998,3.215,999,3.796,1000,2.846,1001,2.846,1002,2.203,1003,2.203,1004,2.067,1005,3.028,1006,2.067,1007,2.067,1008,1.848,1009,3.215,1010,2.067,1011,1.848,1012,1.95,1013,1.848,1014,2.203,1015,2.203,1016,2.203,1017,1.95,1018,3.561,1019,2.203,1020,2.203,1021,1.757,1022,2.203,1023,2.067,1024,1.95,1025,2.846,1026,2.067,1027,2.203,1028,2.067,1029,2.067,1030,2.067,1031,2.067,1032,2.067,1033,2.203,1034,3.016,1035,2.203,1036,3.215,1037,3.016,1038,3.215,1039,2.203,1040,2.203,1041,2.203,1042,2.203,1043,2.203,1044,2.203,1045,4.173,1046,2.203,1047,2.203,1048,3.184,1049,2.564,1050,3.215,1051,2.203,1052,2.067,1053,2.203,1054,2.203,1055,3.215,1056,3.796,1057,2.203,1058,2.203,1059,2.203,1060,3.215,1061,2.203,1062,2.203,1063,3.215,1064,2.203,1065,2.203,1066,2.203,1067,2.203,1068,2.067,1069,2.203,1070,2.203,1071,2.203,1072,3.215,1073,2.203,1074,2.203,1075,2.203,1076,2.067,1077,2.203,1078,2.203,1079,3.796,1080,2.203,1081,2.203,1082,2.203,1083,2.067,1084,2.067,1085,2.067,1086,2.203,1087,2.067,1088,2.203,1089,2.203,1090,1.602,1091,2.203,1092,2.203,1093,2.203,1094,2.203,1095,2.203,1096,1.757,1097,1.757,1098,2.203,1099,2.203,1100,2.203,1101,2.203,1127,2.067,1131,2.572,1135,2.572,1145,2.203,1374,2.203,1619,2.067,1627,1.534,1798,1.757,1865,2.572,1923,1.602,1924,2.846,1983,4.767,1995,2.846,2027,2.367,2187,2.067,2515,6.179,2516,3.262,2517,3.262,2518,3.262,2519,3.262,2520,3.262,2521,3.262,2522,3.262,2523,3.262,2524,3.262,2525,3.262,2526,3.262,2527,3.262,2528,4.76,2529,2.846,2530,3.262,2531,3.262,2532,2.846,2533,6.861,2534,6.571,2535,3.262,2536,3.262,2537,4.76,2538,3.262,2539,2.572,2540,2.203,2541,3.262,2542,3.262,2543,3.262,2544,2.846,2545,3.262,2546,4.76,2547,3.262,2548,3.262,2549,2.846,2550,2.846]],["title/components/TmplParentPointBoxComponent.html",[0,0.303,271,0.397]],["body/components/TmplParentPointBoxComponent.html",[0,0.402,1,0.298,2,0.344,3,0.124,4,0.073,5,0.245,6,0.284,7,0.312,8,0.094,10,0.22,11,0.247,12,0.308,13,0.48,14,0.312,15,0.322,16,0.476,17,0.665,18,0.552,19,0.298,20,0.308,23,0.483,24,1.087,27,0.013,33,0.155,34,0.171,36,0.527,38,1.465,42,0.323,43,0.503,44,0.648,50,2.882,51,0.258,61,0.667,62,0.527,63,1.17,65,0.287,68,0.206,69,0.948,70,0.104,71,1.021,72,0.466,74,0.219,76,0.083,77,0.021,80,0.355,81,0.557,82,1.933,85,2.06,86,1.055,88,1.293,89,1.352,90,1.449,92,1.255,95,3.389,98,0.84,99,0.839,100,0.638,101,0.986,102,1.491,104,0.755,106,0.983,109,0.312,110,1.866,111,1.057,112,0.953,113,1.634,116,0.806,117,1.376,118,1.032,121,0.95,122,0.986,123,1.941,124,1.158,126,0.986,127,0.861,128,0.402,129,0.597,133,0.78,135,0.519,141,1.809,143,1.178,144,1.279,146,0.312,147,1.181,148,0.856,151,1.293,152,1.401,153,2.166,154,0.73,155,1.644,159,0.953,160,1.095,163,1.465,164,2.06,165,1.048,168,0.312,171,1.095,173,1.58,178,0.461,179,1.356,180,1.094,182,1.934,192,1.014,195,2.012,197,0.312,198,0.433,199,0.308,200,0.312,201,0.312,202,0.287,203,0.463,204,0.298,205,0.552,206,0.298,207,0.611,208,0.284,209,0.442,210,0.382,211,0.312,212,0.298,213,0.463,214,0.298,215,0.298,216,0.298,217,0.312,218,0.552,219,0.298,220,0.298,221,0.463,222,0.298,223,0.463,224,0.298,225,0.312,226,0.298,227,0.611,228,0.298,229,0.284,230,0.298,231,0.298,232,0.312,233,0.442,234,0.611,235,0.298,236,0.312,237,0.298,238,0.312,239,0.298,240,0.298,241,0.312,242,0.298,243,0.298,244,0.298,245,0.171,246,0.312,247,0.284,248,0.463,249,0.298,250,0.298,251,0.312,252,0.298,253,0.258,254,0.312,255,0.298,256,0.312,257,0.298,258,0.312,259,0.298,260,0.312,261,0.298,262,0.442,263,0.312,264,0.284,265,0.298,266,0.552,267,0.284,268,0.312,269,0.245,270,0.245,271,0.584,272,0.785,273,0.312,274,0.298,275,0.463,276,0.312,277,0.298,278,0.312,279,0.298,280,0.312,281,0.312,282,0.271,283,0.402,284,0.363,285,0.284,286,0.298,287,0.312,288,0.312,289,0.298,290,0.312,291,0.312,292,0.298,293,0.312,294,0.298,295,0.463,296,0.312,297,0.298,298,0.298,299,0.312,300,0.298,301,0.298,302,0.298,303,0.312,304,0.245,305,0.312,306,0.298,307,0.312,308,0.298,309,0.312,310,0.298,311,0.312,312,0.298,313,0.312,314,0.312,315,0.007,316,0.007,331,2.073,340,2.912,342,3.577,348,1.644,349,0.738,350,0.888,374,0.816,399,2.662,402,5.219,406,1.223,413,1.829,431,0.754,442,0.595,445,2.13,457,0.986,487,0.483,497,0.538,513,1.634,544,0.538,574,1.644,619,1.057,620,1.933,621,1.021,623,1.933,627,1.686,628,1.887,630,1.644,641,0.483,647,0.73,662,1.434,684,3.444,688,1.824,693,1.321,694,1.293,696,0.861,699,1.644,702,3.175,713,1.644,730,1.095,753,1.728,810,2.379,812,1.223,825,3.922,840,3.287,841,2.213,879,1.824,955,1.376,980,3.02,981,1.135,982,1.376,993,2.567,1127,1.933,1345,3.06,1582,3.389,1607,2.405,1610,3.287,1611,1.728,1634,2.06,1638,3.06,1639,2.06,1640,2.06,1672,2.213,1725,2.871,1924,1.824,1973,2.405,1983,4.859,2027,2.213,2050,3.425,2062,2.662,2176,3.572,2457,3.572,2472,4.716,2475,5.577,2478,2.213,2484,2.662,2488,2.405,2549,2.662,2550,2.662,2551,8.108,2552,8.108,2553,3.051,2554,5.406,2555,4.532,2556,5.406,2557,5.983,2558,5.983,2559,5.983,2560,5.406,2561,6.393,2562,5.983,2563,5.406,2564,4.532,2565,5.983,2566,4.532,2567,4.532,2568,4.532,2569,3.051,2570,3.051,2571,3.051,2572,3.051,2573,4.532,2574,4.532,2575,3.051,2576,3.051,2577,3.051,2578,4.532,2579,3.051,2580,3.051,2581,3.051,2582,3.051,2583,3.051,2584,3.051,2585,3.051,2586,3.051,2587,3.051,2588,3.051,2589,3.051,2590,3.051,2591,3.051,2592,3.051,2593,3.051,2594,3.051,2595,3.051,2596,3.051,2597,3.051,2598,3.051,2599,3.051,2600,3.051,2601,3.051,2602,5.983,2603,3.051,2604,4.532,2605,4.532,2606,3.051,2607,3.051,2608,3.051,2609,3.051,2610,3.051,2611,3.051,2612,3.051,2613,3.051,2614,3.051,2615,3.051,2616,3.051,2617,3.051,2618,3.051,2619,4.532,2620,3.051,2621,2.405,2622,3.051,2623,4.532,2624,3.051,2625,3.051,2626,4.532,2627,3.051,2628,3.051,2629,3.051,2630,2.662,2631,3.051,2632,4.532,2633,4.532,2634,3.051,2635,4.532,2636,3.051,2637,2.405,2638,3.051,2639,5.983,2640,5.983,2641,4.532,2642,4.532,2643,4.532,2644,6.393,2645,3.051,2646,3.051,2647,4.532,2648,4.532,2649,4.532,2650,4.532,2651,3.051,2652,3.051,2653,3.051,2654,3.051,2655,3.051]],["title/components/TmplParentPointCounterComponent.html",[0,0.303,274,0.397]],["body/components/TmplParentPointCounterComponent.html",[0,0.486,1,0.42,2,0.439,3,0.118,4,0.103,5,0.345,6,0.401,7,0.44,8,0.089,10,0.281,11,0.289,12,0.392,13,0.579,14,0.44,15,0.326,16,0.484,17,0.697,18,0.667,19,0.42,20,0.392,23,0.494,24,0.789,27,0.013,33,0.147,34,0.218,35,1.734,36,0.672,42,0.239,43,0.392,44,0.56,51,0.657,61,0.48,62,0.501,65,0.294,68,0.201,70,0.147,72,0.658,73,1.137,74,0.31,76,0.118,77,0.02,80,0.501,81,0.786,86,1.231,88,0.871,92,1.214,99,0.759,104,0.734,106,0.95,109,0.44,110,1.688,111,1.492,112,1.231,113,1.176,114,2.114,115,0.901,116,0.759,118,0.61,121,0.82,122,1.027,123,1.546,124,1.477,126,1.869,128,0.619,129,1.365,130,1.345,133,1.1,134,1.345,135,0.984,146,0.44,165,1.338,168,0.44,173,1.064,178,0.419,179,1.131,180,1.17,189,1.064,192,0.963,195,1.602,197,0.44,198,0.523,199,0.392,200,0.44,201,0.44,202,0.275,203,0.59,204,0.42,205,0.667,206,0.42,207,0.713,208,0.401,209,0.564,210,0.363,211,0.44,212,0.42,213,0.59,214,0.42,215,0.42,216,0.42,217,0.44,218,0.667,219,0.42,220,0.42,221,0.59,222,0.42,223,0.667,224,0.42,225,0.44,226,0.42,227,0.713,228,0.42,229,0.401,230,0.42,231,0.42,232,0.44,233,0.564,234,0.713,235,0.42,236,0.44,237,0.42,238,0.44,239,0.42,240,0.42,241,0.44,242,0.42,243,0.42,244,0.42,245,0.242,246,0.44,247,0.401,248,0.59,249,0.42,250,0.42,251,0.44,252,0.42,253,0.363,254,0.44,255,0.42,256,0.44,257,0.42,258,0.44,259,0.42,260,0.44,261,0.42,262,0.42,263,0.44,264,0.401,265,0.42,266,0.667,267,0.401,268,0.44,269,0.345,270,0.345,271,0.42,272,0.44,273,0.44,274,0.681,275,0.849,276,0.44,277,0.42,278,0.44,279,0.42,280,0.44,281,0.44,282,0.382,283,0.513,284,0.345,285,0.401,286,0.42,287,0.44,288,0.44,289,0.42,290,0.44,291,0.44,292,0.42,293,0.44,294,0.42,295,0.59,296,0.44,297,0.42,298,0.42,299,0.44,300,0.42,301,0.42,302,0.42,303,0.44,304,0.345,305,0.44,306,0.42,307,0.44,308,0.42,309,0.44,310,0.42,311,0.44,312,0.42,313,0.44,314,0.44,315,0.009,316,0.009,433,1.492,442,0.759,515,4.422,544,1.151,614,3.123,647,1.029,684,2.319,837,2.718,1134,3.905,1582,3.954,1611,2.439,1725,3.663,2637,6.137,2656,7.282,2657,7.282,2658,4.305,2659,6.529,2660,5.044,2661,6.529,2662,5.783,2663,5.783,2664,4.305,2665,4.305,2666,4.305,2667,5.783,2668,5.783,2669,4.305,2670,3.756]],["title/components/TmplPdfComponent.html",[0,0.303,277,0.397]],["body/components/TmplPdfComponent.html",[0,0.488,1,0.425,2,0.443,3,0.119,4,0.104,5,0.467,6,0.405,7,0.444,8,0.09,10,0.283,11,0.29,12,0.395,13,0.582,14,0.444,15,0.326,16,0.484,17,0.698,18,0.67,19,0.425,20,0.395,23,0.496,27,0.013,33,0.149,34,0.22,36,0.677,42,0.241,43,0.395,44,0.586,51,0.367,61,0.485,62,0.506,65,0.295,68,0.225,70,0.149,72,0.89,73,1.538,74,0.313,76,0.119,77,0.02,80,0.506,81,0.795,86,1.236,89,1.063,93,1.188,98,0.527,100,0.911,102,0.911,104,0.736,106,1.078,109,0.444,116,0.506,121,0.931,122,1.107,128,0.517,146,0.444,151,1.041,154,1.041,163,1.407,168,0.444,172,3.3,173,1.076,178,0.349,179,1.371,180,1.178,182,1.883,197,0.444,198,0.526,199,0.395,200,0.444,201,0.444,202,0.284,203,0.595,204,0.425,205,0.67,206,0.425,207,0.716,208,0.405,209,0.568,210,0.367,211,0.444,212,0.425,213,0.595,214,0.425,215,0.425,216,0.425,217,0.444,218,0.67,219,0.425,220,0.425,221,0.595,222,0.425,223,0.595,224,0.425,225,0.444,226,0.425,227,0.716,228,0.425,229,0.405,230,0.425,231,0.425,232,0.444,233,0.568,234,0.716,235,0.425,236,0.444,237,0.425,238,0.444,239,0.425,240,0.425,241,0.444,242,0.425,243,0.425,244,0.425,245,0.244,246,0.444,247,0.405,248,0.595,249,0.425,250,0.425,251,0.444,252,0.425,253,0.367,254,0.444,255,0.425,256,0.444,257,0.425,258,0.444,259,0.425,260,0.444,261,0.425,262,0.425,263,0.444,264,0.405,265,0.425,266,0.67,267,0.405,268,0.444,269,0.349,270,0.349,271,0.425,272,0.444,273,0.444,274,0.425,275,0.444,276,0.444,277,0.684,278,0.444,279,0.425,280,0.444,281,0.444,282,0.386,283,0.517,284,0.349,285,0.405,286,0.425,287,0.444,288,0.444,289,0.425,290,0.444,291,0.444,292,0.425,293,0.444,294,0.425,295,0.595,296,0.444,297,0.425,298,0.425,299,0.444,300,0.425,301,0.425,302,0.425,303,0.444,304,0.349,305,0.444,306,0.425,307,0.444,308,0.425,309,0.444,310,0.425,311,0.444,312,0.425,313,0.444,314,0.444,315,0.009,316,0.009,341,2.137,374,0.594,433,1.508,442,0.764,532,2.939,544,1.157,616,1.271,647,1.041,837,2.046,870,2.939,879,2.602,977,2.602,1000,3.482,1001,3.482,1037,2.757,1619,2.757,1767,3.797,1846,2.939,2116,3.797,2129,3.797,2349,3.797,2478,4.226,2532,3.797,2671,4.352,2672,6.809,2673,6.565,2674,5.825,2675,7.308,2676,6.565,2677,6.565,2678,5.825,2679,4.352,2680,4.352,2681,4.352,2682,4.352,2683,4.226,2684,6.375,2685,5.825,2686,4.352,2687,4.352,2688,4.352,2689,3.157,2690,4.352,2691,4.352,2692,4.352,2693,4.352,2694,3.797,2695,4.352,2696,4.352,2697,4.352,2698,4.352,2699,4.352,2700,4.352,2701,4.352,2702,4.352,2703,4.352,2704,4.352,2705,3.797,2706,3.797,2707,3.157,2708,4.352,2709,3.157,2710,4.352,2711,3.797,2712,4.352,2713,4.352,2714,4.352,2715,4.352]],["title/components/TmplQRCodeComponent.html",[0,0.303,279,0.397]],["body/components/TmplQRCodeComponent.html",[0,0.52,1,0.482,2,0.481,3,0.135,4,0.119,5,0.396,6,0.46,7,0.505,8,0.102,10,0.308,11,0.304,14,0.505,15,0.328,16,0.486,17,0.708,18,0.713,19,0.482,20,0.43,23,0.517,27,0.013,51,0.417,65,0.222,68,0.195,70,0.169,74,0.356,76,0.135,77,0.023,99,0.649,100,1.035,101,1.598,104,0.686,109,0.505,116,0.575,127,1.396,128,0.562,144,1.396,146,0.505,168,0.505,178,0.38,197,0.505,198,0.56,199,0.43,200,0.505,201,0.505,202,0.288,203,0.647,204,0.482,205,0.713,206,0.482,207,0.752,208,0.46,209,0.618,210,0.417,211,0.505,212,0.482,213,0.647,214,0.482,215,0.482,216,0.482,217,0.505,218,0.713,219,0.482,220,0.482,221,0.647,222,0.482,223,0.647,224,0.482,225,0.505,226,0.482,227,0.752,228,0.482,229,0.46,230,0.482,231,0.482,232,0.505,233,0.618,234,0.752,235,0.482,236,0.505,237,0.482,238,0.505,239,0.482,240,0.482,241,0.505,242,0.482,243,0.482,244,0.482,245,0.278,246,0.505,247,0.46,248,0.647,249,0.482,250,0.482,251,0.505,252,0.482,253,0.417,254,0.505,255,0.482,256,0.505,257,0.482,258,0.505,259,0.482,260,0.505,261,0.482,262,0.482,263,0.505,264,0.46,265,0.482,266,0.713,267,0.46,268,0.505,269,0.396,270,0.396,271,0.482,272,0.505,273,0.505,274,0.482,275,0.505,276,0.505,277,0.482,278,0.505,279,0.719,280,0.819,281,0.505,282,0.439,283,0.562,284,0.396,285,0.46,286,0.482,287,0.505,288,0.505,289,0.482,290,0.505,291,0.505,292,0.482,293,0.505,294,0.482,295,0.647,296,0.505,297,0.482,298,0.482,299,0.505,300,0.482,301,0.482,302,0.482,303,0.505,304,0.396,305,0.505,306,0.482,307,0.505,308,0.482,309,0.505,310,0.482,311,0.505,312,0.482,313,0.505,314,0.505,315,0.01,316,0.01,442,0.831,627,1.84,628,2.059,693,2.141,1644,3.588,2716,4.946,2717,4.946,2718,4.946,2719,6.986,2720,6.333]],["title/components/TmplRadioButtonGridComponent.html",[0,0.303,282,0.361]],["body/components/TmplRadioButtonGridComponent.html",[0,0.444,1,0.354,2,0.39,3,0.099,4,0.087,5,0.412,6,0.337,7,0.37,8,0.075,10,0.25,11,0.268,12,0.349,14,0.37,15,0.324,16,0.48,17,0.682,18,0.609,19,0.354,20,0.349,23,0.465,27,0.013,33,0.124,34,0.194,35,1.645,38,1.66,42,0.246,43,0.523,44,0.478,51,0.306,61,0.404,62,0.421,65,0.163,68,0.211,69,1.488,70,0.124,73,0.957,74,0.261,76,0.099,77,0.017,78,1.603,93,0.99,98,0.722,99,0.674,100,0.758,101,1.172,102,1.433,104,0.725,105,1.78,106,0.843,107,1.862,108,1.78,109,0.37,112,0.639,116,0.754,118,0.514,121,0.845,122,1.008,128,0.529,131,1.256,132,1.843,133,0.926,134,2.026,135,1.015,146,0.37,147,1.289,148,1.127,151,1.228,152,0.758,168,0.37,178,0.456,179,1.166,180,1.312,197,0.37,198,0.478,199,0.349,200,0.37,201,0.37,202,0.276,203,0.524,204,0.354,205,0.609,206,0.354,207,0.662,208,0.337,209,0.501,210,0.306,211,0.37,212,0.354,213,0.524,214,0.354,215,0.354,216,0.354,217,0.37,218,0.609,219,0.354,220,0.354,221,0.524,222,0.354,223,0.524,224,0.354,225,0.37,226,0.354,227,0.662,228,0.354,229,0.337,230,0.354,231,0.354,232,0.37,233,0.501,234,0.662,235,0.354,236,0.37,237,0.354,238,0.37,239,0.354,240,0.354,241,0.37,242,0.354,243,0.354,244,0.354,245,0.204,246,0.37,247,0.337,248,0.524,249,0.354,250,0.354,251,0.37,252,0.354,253,0.306,254,0.37,255,0.354,256,0.37,257,0.354,258,0.37,259,0.354,260,0.37,261,0.354,262,0.354,263,0.37,264,0.337,265,0.354,266,0.609,267,0.337,268,0.37,269,0.291,270,0.291,271,0.354,272,0.37,273,0.37,274,0.354,275,0.37,276,0.37,277,0.354,278,0.37,279,0.354,280,0.37,281,0.37,282,0.575,283,0.713,284,0.654,285,0.337,286,0.354,287,0.37,288,0.37,289,0.354,290,0.37,291,0.37,292,0.354,293,0.37,294,0.354,295,0.524,296,0.37,297,0.354,298,0.354,299,0.37,300,0.354,301,0.354,302,0.354,303,0.37,304,0.291,305,0.37,306,0.354,307,0.37,308,0.354,309,0.37,310,0.354,311,0.37,312,0.354,313,0.37,314,0.37,315,0.008,316,0.008,324,2.007,332,1.958,349,0.934,350,0.595,356,1.953,360,1.213,374,0.814,378,1.334,406,1.453,413,0.99,423,1.704,424,1.111,431,0.896,434,1.704,442,0.674,463,3.378,487,1.183,489,2.167,490,2.167,491,2.167,492,2.638,493,2.167,494,2.167,497,1.207,513,0.99,522,1.704,544,0.639,589,2.766,621,1.213,641,0.574,685,1.704,688,2.167,689,4.967,690,4.38,691,5.113,692,2.448,693,1.57,694,1.426,695,2.448,696,1.023,697,4.326,698,3.063,699,1.953,700,2.857,701,2.448,702,3.044,703,2.448,704,2.803,705,3.957,706,3.468,707,2.448,708,3.468,709,2.053,710,1.704,711,2.448,712,2.167,713,2.766,714,2.448,715,3.468,716,4.027,717,3.468,718,3.063,719,2.689,720,4.701,721,2.448,722,3.468,723,2.521,724,2.928,725,2.053,726,2.448,727,2.63,728,2.857,729,2.857,730,1.301,731,2.448,732,1.862,733,1.704,734,2.857,735,2.857,736,2.448,737,2.857,738,2.053,739,2.167,740,2.448,741,2.448,742,2.448,743,2.296,744,1.862,745,2.857,746,2.448,747,2.448,748,3.468,749,2.448,750,3.468,751,2.448,752,2.448,753,2.053,754,3.468,755,1.78,756,2.167,757,2.448,758,2.448,759,2.448,760,3.468,761,1.704,762,1.953,763,2.053,764,2.448,765,2.448,766,2.857,767,4.38,768,2.296,769,2.857,770,4.048,771,1.862,772,2.296,773,2.857,774,2.857,775,2.857,776,2.857,777,2.63,778,2.167,779,2.857,780,2.296,781,2.448,782,2.053,783,2.448,784,2.448,785,2.448,786,2.63,787,2.857,788,2.167,789,2.857,790,2.857,791,3.468,792,2.448,895,4.048,1379,4.701,1735,3.162,1736,2.448,1798,1.953,1859,2.63,2721,5.135,2722,3.625,2723,3.625,2724,3.625,2725,3.625]],["title/components/TmplRadioGroupComponent.html",[0,0.303,285,0.379]],["body/components/TmplRadioGroupComponent.html",[0,0.386,1,0.278,2,0.327,3,0.078,4,0.068,5,0.229,6,0.266,7,0.291,8,0.059,10,0.21,11,0.239,12,0.292,13,0.461,14,0.291,15,0.32,16,0.474,17,0.657,18,0.53,19,0.278,20,0.292,23,0.443,24,0.389,27,0.013,33,0.098,34,0.235,35,1.201,36,0.501,38,1.393,42,0.322,43,0.553,44,0.619,46,3.767,51,0.488,55,2.321,58,1.024,61,0.645,62,0.501,65,0.279,68,0.209,69,1.21,70,0.098,72,0.436,74,0.205,76,0.078,77,0.013,78,1.065,80,0.332,81,0.521,86,1.02,88,0.577,89,0.787,90,0.932,92,1.154,93,0.779,98,0.866,99,0.938,100,0.597,101,0.922,102,1.461,104,0.725,105,1.4,106,1.196,107,1.465,108,1.4,109,0.291,112,0.915,115,0.901,116,0.927,118,1.125,121,1.013,122,1.052,126,0.922,127,0.805,128,0.513,129,1.015,130,0.891,131,0.988,133,0.729,135,0.733,143,1.101,144,1.216,146,0.291,147,1.322,148,0.539,151,1.383,152,1.086,154,1.03,159,0.891,160,1.024,164,4.194,165,1.814,168,0.291,171,1.547,172,1.616,173,0.705,178,0.373,179,0.558,182,0.922,184,2.505,185,2.441,189,0.705,195,1.061,197,0.291,198,0.416,199,0.292,200,0.291,201,0.291,202,0.27,203,0.44,204,0.278,205,0.53,206,0.278,207,0.591,208,0.266,209,0.42,210,0.551,211,0.291,212,0.278,213,0.44,214,0.278,215,0.278,216,0.278,217,0.291,218,0.53,219,0.278,220,0.278,221,0.44,222,0.278,223,0.44,224,0.278,225,0.291,226,0.278,227,0.591,228,0.278,229,0.266,230,0.278,231,0.278,232,0.291,233,0.42,234,0.591,235,0.278,236,0.291,237,0.278,238,0.291,239,0.278,240,0.278,241,0.291,242,0.278,243,0.278,244,0.278,245,0.16,246,0.291,247,0.266,248,0.44,249,0.278,250,0.278,251,0.291,252,0.278,253,0.241,254,0.291,255,0.278,256,0.291,257,0.278,258,0.291,259,0.278,260,0.291,261,0.278,262,0.278,263,0.291,264,0.266,265,0.278,266,0.53,267,0.266,268,0.291,269,0.229,270,0.229,271,0.278,272,0.291,273,0.291,274,0.278,275,0.291,276,0.291,277,0.278,278,0.291,279,0.278,280,0.291,281,0.291,282,0.253,283,0.686,284,0.464,285,0.539,286,0.278,287,0.291,288,0.291,289,0.278,290,0.291,291,0.291,292,0.278,293,0.291,294,0.278,295,0.44,296,0.291,297,0.278,298,0.278,299,0.291,300,0.278,301,0.278,302,0.278,303,0.291,304,0.229,305,0.291,306,0.278,307,0.291,308,0.278,309,0.291,310,0.278,311,0.291,312,0.278,313,0.291,314,0.291,315,0.007,316,0.007,324,0.805,325,2.441,331,1.493,335,1.465,347,3.665,349,0.789,350,0.708,368,1.465,374,0.709,378,1.294,389,2.069,406,1.143,413,1.418,423,2.72,424,0.617,433,0.988,434,1.341,442,0.565,446,2.248,463,3.955,487,1.035,489,1.705,490,1.705,491,1.705,492,2.667,493,1.705,494,1.705,497,0.915,500,3.767,513,0.779,519,4.197,533,1.537,537,3.759,560,4.093,614,4.738,616,2.038,619,2.152,627,1.603,628,1.794,629,4.738,630,3.117,641,0.452,688,1.705,690,5.259,693,2.248,694,1.242,695,1.926,696,1.216,702,2.081,704,1.341,718,3.191,730,1.024,767,4.194,771,1.465,778,2.576,780,1.807,781,1.926,782,2.941,783,1.926,784,1.926,791,2.91,792,1.926,793,3.665,807,6.793,808,2.488,809,4.529,810,1.932,811,3.767,812,1.143,813,1.465,814,2.248,815,1.807,816,2.488,817,3.759,818,4.529,819,4.529,820,2.488,821,3.396,822,4.529,823,5.418,824,4.529,825,3.767,826,2.248,827,2.248,828,4.529,829,5.047,830,4.529,831,1.537,832,5.047,833,2.488,834,2.488,835,3.759,836,3.759,837,1.341,838,2.248,839,0.891,840,2.069,841,2.069,842,4.529,843,3.759,844,2.488,845,2.488,846,2.488,847,2.488,848,2.488,849,2.248,850,3.759,851,2.488,852,3.396,853,3.396,854,3.759,855,3.759,856,3.759,857,3.759,858,3.759,859,2.84,860,2.91,861,3.759,862,3.759,863,2.73,864,3.759,865,1.794,866,2.91,867,3.759,868,3.759,869,2.488,870,1.926,871,2.488,872,1.465,873,2.248,874,2.069,875,2.488,876,2.069,877,2.488,878,2.488,879,1.705,880,2.488,881,2.488,882,2.488,883,1.807,884,2.488,885,2.488,886,2.069,887,2.488,888,2.488,889,2.488,890,2.488,891,2.488,892,2.488,893,2.488,894,4.529,895,5.633,896,2.488,897,3.759,898,2.488,899,2.488,900,2.488,901,2.73,902,4.529,903,3.396,904,5.047,905,2.488,906,1.926,907,2.069,908,2.248,909,2.248,955,1.943,1379,4.56,1380,3.665,1384,2.213,1627,2.025,1630,4.896,2050,1.807,2395,3.396,2455,2.248,2726,4.309,2727,4.309,2728,2.852,2729,2.852,2730,2.852,2731,2.852,2732,2.852,2733,2.852,2734,2.852,2735,2.852,2736,2.852,2737,2.852,2738,2.852,2739,2.852,2740,2.852,2741,2.852,2742,2.852,2743,2.852,2744,4.309,2745,2.852,2746,5.192,2747,2.852,2748,3.759,2749,6.211,2750,2.852,2751,2.852,2752,2.852,2753,5.785,2754,4.309,2755,7.146,2756,6.211,2757,4.309,2758,4.309,2759,4.309,2760,4.309,2761,5.785,2762,2.852]],["title/components/TmplSimpleCheckboxComponent.html",[0,0.303,286,0.397]],["body/components/TmplSimpleCheckboxComponent.html",[0,0.475,1,0.402,2,0.427,3,0.113,4,0.099,5,0.33,6,0.384,7,0.421,8,0.085,10,0.273,11,0.283,12,0.381,13,0.566,14,0.421,15,0.326,16,0.483,17,0.694,18,0.652,19,0.402,20,0.381,23,0.502,24,0.766,27,0.013,33,0.141,34,0.212,35,1.477,36,0.652,38,1.814,42,0.306,43,0.502,44,0.618,51,0.579,61,0.626,62,0.479,63,1.402,65,0.185,68,0.221,69,1.174,70,0.141,71,1.378,72,0.629,74,0.296,76,0.113,77,0.019,80,0.479,81,0.752,86,1.209,88,1.291,89,0.752,92,1.011,99,0.737,100,0.862,101,1.332,102,0.862,104,0.765,106,1.049,109,0.421,110,1.864,112,0.99,115,1.174,116,0.834,118,0.905,121,0.972,122,1.056,124,1.053,127,1.163,128,0.498,129,1.098,130,1.753,133,1.053,135,0.701,141,1.878,144,1.163,146,0.421,147,1.305,148,1.061,152,1.174,153,1.651,154,0.985,159,1.287,163,1.332,165,1.298,168,0.421,178,0.411,179,1.34,180,1.387,182,1.814,183,1.784,191,1.784,192,0.922,193,1.479,197,0.421,198,0.512,199,0.381,200,0.421,201,0.421,202,0.279,203,0.573,204,0.402,205,0.652,206,0.402,207,0.7,208,0.384,209,0.548,210,0.348,211,0.421,212,0.402,213,0.573,214,0.402,215,0.402,216,0.402,217,0.421,218,0.652,219,0.402,220,0.402,221,0.573,222,0.402,223,0.573,224,0.402,225,0.421,226,0.402,227,0.7,228,0.402,229,0.384,230,0.402,231,0.402,232,0.421,233,0.548,234,0.7,235,0.402,236,0.421,237,0.402,238,0.421,239,0.402,240,0.402,241,0.421,242,0.402,243,0.402,244,0.402,245,0.231,246,0.421,247,0.384,248,0.573,249,0.402,250,0.402,251,0.421,252,0.402,253,0.348,254,0.421,255,0.402,256,0.421,257,0.402,258,0.421,259,0.402,260,0.421,261,0.402,262,0.402,263,0.421,264,0.384,265,0.402,266,0.652,267,0.384,268,0.421,269,0.33,270,0.33,271,0.402,272,0.421,273,0.421,274,0.402,275,0.421,276,0.421,277,0.402,278,0.421,279,0.402,280,0.421,281,0.421,282,0.365,283,0.498,284,0.33,285,0.384,286,0.669,287,0.787,288,0.421,289,0.402,290,0.421,291,0.421,292,0.402,293,0.421,294,0.402,295,0.573,296,0.421,297,0.402,298,0.402,299,0.421,300,0.402,301,0.402,302,0.402,303,0.421,304,0.33,305,0.421,306,0.402,307,0.421,308,0.402,309,0.421,310,0.402,311,0.421,312,0.402,313,0.421,314,0.421,315,0.009,316,0.009,324,1.163,325,3.001,349,0.562,350,0.677,378,1.534,413,1.743,442,0.737,513,1.125,544,1.125,626,5.369,627,1.533,628,1.715,629,4.072,641,0.653,647,0.985,662,1.937,694,1.526,696,1.163,730,1.479,813,2.116,839,1.287,1657,2.023,1734,2.463,2763,7.816,2764,7.816,2765,4.12,2766,6.724,2767,6.384,2768,5.613,2769,7.401,2770,4.424,2771,5.613,2772,4.12,2773,4.12,2774,5.613,2775,4.12,2776,4.12,2777,4.12,2778,4.12,2779,4.12,2780,4.12,2781,4.12,2782,3.594,2783,4.12]],["title/components/TmplSliderComponent.html",[0,0.303,289,0.397]],["body/components/TmplSliderComponent.html",[0,0.396,1,0.29,2,0.338,3,0.081,4,0.071,5,0.238,6,0.277,7,0.304,8,0.061,10,0.216,11,0.244,12,0.302,13,0.472,14,0.304,15,0.321,16,0.475,17,0.662,18,0.544,19,0.29,20,0.302,23,0.48,24,0.939,27,0.013,32,3.01,33,0.102,34,0.168,36,0.517,38,1.437,42,0.326,43,0.5,44,0.643,51,0.251,58,1.596,61,0.658,62,0.517,63,1.155,65,0.353,68,0.212,69,0.93,70,0.102,71,0.995,72,0.454,74,0.214,76,0.081,77,0.014,80,0.346,81,0.543,86,1.042,88,1.279,89,1.155,90,1.436,91,1.885,92,1.224,95,2.519,98,0.943,99,0.699,100,0.622,101,0.961,102,1.323,104,0.775,106,0.971,109,0.304,110,1.298,111,1.031,112,1.275,113,1.727,114,2.183,115,0.622,116,0.84,117,1.341,118,0.838,121,1.059,122,1.175,123,1.068,124,1.361,126,1.91,127,1.255,128,0.589,129,0.582,131,1.031,132,1.068,143,1.148,144,1.873,146,0.603,147,1.407,148,1.391,149,3.017,151,1.273,152,1.388,153,2.368,154,1.063,158,2.869,163,1.437,165,1.703,168,0.304,171,2.642,172,1.685,173,1.461,178,0.379,179,1.414,180,1.489,182,1.437,183,1.288,189,0.735,190,1.298,191,1.926,192,0.995,197,0.304,198,0.427,199,0.302,200,0.304,201,0.304,202,0.251,203,0.454,204,0.29,205,0.544,206,0.29,207,0.603,208,0.277,209,0.434,210,0.61,211,0.304,212,0.29,213,0.454,214,0.29,215,0.29,216,0.29,217,0.304,218,0.544,219,0.29,220,0.29,221,0.454,222,0.29,223,0.603,224,0.29,225,0.304,226,0.29,227,0.603,228,0.29,229,0.277,230,0.29,231,0.29,232,0.304,233,0.434,234,0.603,235,0.29,236,0.304,237,0.29,238,0.304,239,0.29,240,0.29,241,0.304,242,0.29,243,0.29,244,0.29,245,0.167,246,0.304,247,0.277,248,0.454,249,0.29,250,0.29,251,0.304,252,0.29,253,0.597,254,0.304,255,0.29,256,0.304,257,0.29,258,0.304,259,0.29,260,0.304,261,0.29,262,0.29,263,0.304,264,0.277,265,0.29,266,0.544,267,0.277,268,0.304,269,0.238,270,0.238,271,0.29,272,0.304,273,0.304,274,0.29,275,0.304,276,0.304,277,0.29,278,0.304,279,0.29,280,0.304,281,0.304,282,0.264,283,0.394,284,0.238,285,0.277,286,0.29,287,0.304,288,0.304,289,0.576,290,0.788,291,0.304,292,0.29,293,0.304,294,0.29,295,0.454,296,0.304,297,0.29,298,0.29,299,0.304,300,0.29,301,0.29,302,0.29,303,0.304,304,0.238,305,0.304,306,0.29,307,0.304,308,0.29,309,0.304,310,0.29,311,0.304,312,0.29,313,0.304,314,0.304,315,0.007,316,0.007,349,0.406,350,0.489,352,2.158,374,1.004,401,3.226,408,2.009,413,1.812,431,0.735,433,1.031,442,0.584,445,2.091,513,1.613,616,2.008,619,2.047,627,1.982,628,1.851,630,2.396,641,0.471,662,1.399,694,1.273,696,0.84,699,3.183,718,2.284,730,1.068,756,1.778,812,1.192,837,2.778,863,2.817,865,1.239,886,3.226,906,3.99,914,1.46,955,1.341,956,1.528,988,1.778,1023,1.885,1354,2.009,1372,1.885,1383,2.595,1427,3.183,1438,2.345,1456,2.595,1627,2.091,1644,1.685,1652,2.158,1653,1.885,1923,1.46,1924,1.778,1941,1.885,2011,3.505,2050,1.885,2064,2.345,2101,3.226,2141,5.517,2153,2.595,2226,2.158,2455,2.345,2458,2.595,2509,3.879,2540,2.009,2637,3.505,2706,2.595,2766,3.879,2784,2.975,2785,5.325,2786,4.447,2787,5.909,2788,5.325,2789,6.636,2790,5.325,2791,6.636,2792,5.325,2793,7.567,2794,5.909,2795,5.325,2796,5.325,2797,6.636,2798,4.447,2799,5.909,2800,5.909,2801,2.975,2802,4.447,2803,2.975,2804,2.975,2805,2.975,2806,2.975,2807,2.975,2808,2.975,2809,5.325,2810,2.975,2811,2.975,2812,2.975,2813,2.975,2814,2.975,2815,2.975,2816,2.975,2817,2.975,2818,2.975,2819,4.447,2820,4.447,2821,4.447,2822,4.447,2823,5.325,2824,2.975,2825,2.975,2826,4.447,2827,4.447,2828,6.325,2829,4.447,2830,6.325,2831,6.325,2832,5.325,2833,3.879,2834,4.447,2835,4.447,2836,2.975,2837,2.975,2838,2.975,2839,3.879,2840,4.645,2841,2.975,2842,2.975,2843,2.975,2844,2.975,2845,4.447,2846,2.975,2847,2.975,2848,2.975,2849,2.975,2850,3.879,2851,2.975,2852,2.975,2853,2.975,2854,5.325,2855,2.975,2856,2.975,2857,2.975,2858,2.975,2859,2.975,2860,2.975,2861,2.975,2862,6.306,2863,2.595,2864,3.879,2865,4.447,2866,7.722,2867,2.975,2868,2.975,2869,2.975,2870,2.975,2871,2.975,2872,4.447,2873,2.975]],["title/components/TmplSubtitleComponent.html",[0,0.303,292,0.397]],["body/components/TmplSubtitleComponent.html",[0,0.5,1,0.445,2,0.457,3,0.125,4,0.109,5,0.366,6,0.425,7,0.466,8,0.094,10,0.292,11,0.295,12,0.408,13,0.596,14,0.466,15,0.327,16,0.485,17,0.706,18,0.686,19,0.445,20,0.408,23,0.517,24,0.623,27,0.013,33,0.156,34,0.227,36,0.699,42,0.248,43,0.485,44,0.573,51,0.385,61,0.509,62,0.53,65,0.205,68,0.22,70,0.156,72,0.697,74,0.328,76,0.125,77,0.021,80,0.53,81,0.833,86,1.259,88,1.216,92,0.952,104,0.743,106,0.75,109,0.466,112,0.804,114,2.951,118,0.852,121,0.647,122,0.885,127,1.288,128,0.596,129,0.892,133,1.166,134,1.425,135,0.777,141,2.011,146,0.466,151,1.091,163,1.943,168,0.466,177,3.597,178,0.403,179,1.49,180,1.542,181,5.147,197,0.466,198,0.539,199,0.408,200,0.466,201,0.466,202,0.28,203,0.614,204,0.445,205,0.686,206,0.445,207,0.729,208,0.425,209,0.586,210,0.385,211,0.466,212,0.445,213,0.614,214,0.445,215,0.445,216,0.445,217,0.466,218,0.686,219,0.445,220,0.445,221,0.614,222,0.445,223,0.614,224,0.445,225,0.466,226,0.445,227,0.729,228,0.445,229,0.425,230,0.445,231,0.445,232,0.466,233,0.586,234,0.729,235,0.445,236,0.466,237,0.445,238,0.466,239,0.445,240,0.445,241,0.466,242,0.445,243,0.445,244,0.445,245,0.256,246,0.466,247,0.425,248,0.614,249,0.445,250,0.445,251,0.466,252,0.445,253,0.385,254,0.466,255,0.445,256,0.466,257,0.445,258,0.466,259,0.445,260,0.466,261,0.445,262,0.445,263,0.466,264,0.425,265,0.445,266,0.686,267,0.425,268,0.466,269,0.366,270,0.366,271,0.445,272,0.466,273,0.466,274,0.445,275,0.466,276,0.466,277,0.445,278,0.466,279,0.445,280,0.466,281,0.466,282,0.405,283,0.533,284,0.366,285,0.425,286,0.445,287,0.466,288,0.466,289,0.445,290,0.466,291,0.466,292,0.697,293,0.466,294,0.445,295,0.614,296,0.466,297,0.445,298,0.445,299,0.466,300,0.445,301,0.445,302,0.445,303,0.466,304,0.366,305,0.466,306,0.445,307,0.466,308,0.445,309,0.466,310,0.445,311,0.466,312,0.445,313,0.466,314,0.466,315,0.009,316,0.009,378,1.598,544,1.185,641,0.723,647,1.091,694,1.607,696,1.288,839,1.425,1585,4.018,1657,3.3,1716,2.891,1717,2.891,2874,4.563,2875,6.721,2876,6.011,2877,4.563,2878,4.563]],["title/components/TmplTaskCardComponent.html",[0,0.303,294,0.397]],["body/components/TmplTaskCardComponent.html",[0,0.408,1,0.305,2,0.351,3,0.086,4,0.075,5,0.251,6,0.291,7,0.319,8,0.065,10,0.224,11,0.25,12,0.313,13,0.487,14,0.319,15,0.322,16,0.476,17,0.667,18,0.56,19,0.305,20,0.313,23,0.438,24,0.748,25,4.026,26,3.278,27,0.013,32,2.987,33,0.188,34,0.174,36,0.536,42,0.329,43,0.555,44,0.644,51,0.264,57,1.771,61,0.611,62,0.638,63,1.367,65,0.141,68,0.208,70,0.107,72,0.705,73,0.826,74,0.225,76,0.086,77,0.014,78,1.141,80,0.364,81,0.571,86,1.068,88,1.528,89,0.571,91,1.981,92,1.293,93,0.854,98,0.379,99,0.795,102,1.267,104,0.768,106,0.514,107,1.606,109,0.319,110,1.768,111,1.083,112,1.139,113,1.498,115,1.414,116,0.906,117,1.41,118,1.095,121,1.017,122,1.078,123,1.969,124,1.401,126,1.011,127,2.159,128,0.537,129,1.321,130,0.977,133,1.179,134,1.441,135,0.785,141,2.339,146,0.319,147,1.191,148,1.22,152,1.681,153,2.426,155,2.486,156,1.981,157,2.268,159,1.441,160,1.123,163,2.368,165,1.269,168,0.471,173,0.773,178,0.439,179,1.524,180,1.507,181,5.031,182,1.957,183,1.998,184,1.998,185,1.771,186,1.981,190,1.347,192,1.227,193,1.123,195,1.164,197,0.319,198,0.44,199,0.313,200,0.319,201,0.319,202,0.264,203,0.471,204,0.305,205,0.56,206,0.305,207,0.618,208,0.291,209,0.45,210,0.463,211,0.319,212,0.305,213,0.471,214,0.305,215,0.305,216,0.305,217,0.319,218,0.56,219,0.305,220,0.305,221,0.471,222,0.305,223,0.56,224,0.305,225,0.319,226,0.305,227,0.618,228,0.305,229,0.291,230,0.305,231,0.305,232,0.319,233,0.45,234,0.618,235,0.305,236,0.319,237,0.305,238,0.319,239,0.305,240,0.305,241,0.319,242,0.305,243,0.305,244,0.305,245,0.176,246,0.319,247,0.291,248,0.471,249,0.305,250,0.305,251,0.319,252,0.305,253,0.264,254,0.319,255,0.305,256,0.319,257,0.305,258,0.319,259,0.305,260,0.319,261,0.305,262,0.305,263,0.319,264,0.291,265,0.305,266,0.56,267,0.291,268,0.319,269,0.251,270,0.251,271,0.305,272,0.319,273,0.319,274,0.305,275,0.319,276,0.319,277,0.305,278,0.319,279,0.305,280,0.319,281,0.319,282,0.277,283,0.409,284,0.44,285,0.291,286,0.305,287,0.319,288,0.319,289,0.305,290,0.319,291,0.319,292,0.305,293,0.319,294,0.591,295,0.748,296,0.319,297,0.305,298,0.305,299,0.319,300,0.305,301,0.305,302,0.305,303,0.319,304,0.251,305,0.319,306,0.305,307,0.319,308,0.305,309,0.319,310,0.305,311,0.319,312,0.305,313,0.319,314,0.319,315,0.007,316,0.007,324,0.883,348,2.486,349,0.63,350,0.758,374,0.748,378,1.355,442,0.606,515,1.981,544,0.814,573,1.685,616,0.913,619,1.599,621,1.835,626,3.348,630,1.685,647,0.748,685,2.169,693,3.027,704,1.47,839,0.977,955,1.41,981,1.164,1372,1.981,1384,1.606,1396,5.071,1420,2.268,1637,2.112,1638,3.116,1639,3.116,1640,3.116,1654,1.771,1657,1.535,1667,2.268,1734,1.869,1798,2.486,1923,2.693,1924,1.869,1991,2.728,1997,2.465,2106,4.773,2157,2.465,2158,5.327,2169,3.638,2190,4.773,2194,2.465,2229,2.728,2426,2.728,2437,2.465,2457,2.465,2748,2.728,2863,2.728,2879,7.04,2880,8.07,2881,3.127,2882,5.485,2883,5.485,2884,4.615,2885,5.485,2886,5.485,2887,6.458,2888,5.485,2889,5.485,2890,4.784,2891,4.784,2892,4.784,2893,5.485,2894,5.485,2895,6.055,2896,4.615,2897,4.615,2898,3.127,2899,3.127,2900,4.615,2901,3.127,2902,4.615,2903,3.127,2904,3.127,2905,3.127,2906,3.127,2907,3.127,2908,3.127,2909,4.784,2910,3.127,2911,3.127,2912,3.127,2913,3.127,2914,3.127,2915,3.127,2916,3.127,2917,3.127,2918,3.127,2919,4.615,2920,5.485,2921,3.127,2922,3.127,2923,3.127,2924,2.728,2925,4.615,2926,2.728,2927,3.127,2928,3.127,2929,3.127,2930,3.127,2931,3.127,2932,3.127,2933,3.127,2934,3.127,2935,3.127,2936,3.127,2937,3.127,2938,3.127,2939,2.728,2940,2.728,2941,3.127,2942,2.728,2943,3.127,2944,3.127,2945,3.127,2946,3.127,2947,4.784,2948,3.127,2949,6.055,2950,3.127,2951,3.127,2952,5.485,2953,2.728]],["title/components/TmplTaskProgressBarComponent.html",[0,0.303,297,0.397]],["body/components/TmplTaskProgressBarComponent.html",[0,0.434,1,0.34,2,0.379,3,0.095,4,0.083,5,0.279,6,0.324,7,0.355,8,0.072,10,0.243,11,0.263,12,0.339,13,0.517,14,0.355,15,0.324,16,0.479,17,0.678,18,0.595,19,0.34,20,0.339,23,0.458,26,3.807,27,0.013,33,0.119,34,0.188,36,0.58,38,1.613,40,4.353,42,0.319,43,0.511,44,0.64,46,4.891,49,4.231,51,0.294,57,1.972,58,1.791,61,0.65,62,0.405,63,1.318,65,0.303,68,0.227,69,1.468,70,0.119,72,0.891,73,0.92,74,0.25,76,0.095,77,0.016,78,1.574,80,0.405,81,0.636,86,1.123,88,0.704,89,0.636,90,1.459,92,1.171,93,1.592,98,0.422,99,0.836,100,0.728,101,1.125,102,1.512,104,0.727,109,0.355,116,0.58,118,0.494,121,1.024,122,1.124,127,0.983,128,0.443,131,1.729,132,1.25,144,0.983,146,0.355,147,1.123,148,1.203,152,1.044,153,1.395,157,2.526,163,1.613,168,0.87,173,0.861,178,0.35,190,1.457,192,0.779,197,0.355,198,0.467,199,0.339,200,0.355,201,0.355,202,0.273,203,0.509,204,0.34,205,0.595,206,0.34,207,0.65,208,0.324,209,0.487,210,0.294,211,0.355,212,0.34,213,0.509,214,0.34,215,0.34,216,0.34,217,0.355,218,0.595,219,0.34,220,0.34,221,0.509,222,0.34,223,0.509,224,0.34,225,0.355,226,0.34,227,0.65,228,0.34,229,0.324,230,0.34,231,0.34,232,0.355,233,0.487,234,0.65,235,0.34,236,0.355,237,0.34,238,0.355,239,0.34,240,0.34,241,0.355,242,0.34,243,0.34,244,0.34,245,0.195,246,0.355,247,0.324,248,0.509,249,0.34,250,0.34,251,0.355,252,0.34,253,0.294,254,0.355,255,0.34,256,0.355,257,0.34,258,0.355,259,0.34,260,0.355,261,0.34,262,0.34,263,0.355,264,0.324,265,0.34,266,0.595,267,0.324,268,0.355,269,0.279,270,0.279,271,0.34,272,0.355,273,0.355,274,0.34,275,0.355,276,0.355,277,0.34,278,0.355,279,0.34,280,0.355,281,0.355,282,0.309,283,0.443,284,0.279,285,0.324,286,0.34,287,0.355,288,0.355,289,0.34,290,0.355,291,0.355,292,0.34,293,0.355,294,0.34,295,0.797,296,0.355,297,0.621,298,0.34,299,0.355,300,0.34,301,0.34,302,0.34,303,0.355,304,0.279,305,0.355,306,0.34,307,0.355,308,0.34,309,0.355,310,0.34,311,0.355,312,0.34,313,0.355,314,0.355,315,0.008,316,0.008,349,0.681,350,0.82,360,1.165,374,0.475,383,2.526,413,1.916,423,2.742,442,0.655,487,0.924,492,1.788,497,0.614,513,1.739,544,0.88,586,1.788,589,2.688,627,1.296,630,1.876,647,0.832,685,1.637,772,2.206,796,2.744,799,4.418,800,3.933,801,4.597,981,1.296,1191,2.526,1201,2.526,1396,5.241,1420,2.526,1427,2.081,1637,3.369,1673,3.037,1986,2.526,2157,2.744,2158,5.53,2169,3.933,2190,5.53,2194,2.744,2259,3.037,2306,2.744,2485,4.353,2486,3.037,2879,7.009,2890,5.087,2891,5.881,2892,5.087,2909,5.087,2924,4.353,2926,3.037,2939,3.037,2940,3.037,2942,4.353,2953,3.037,2954,8.035,2955,5.832,2956,5.832,2957,6.742,2958,6.369,2959,4.99,2960,6.742,2961,5.832,2962,5.832,2963,5.832,2964,7.225,2965,7.225,2966,3.482,2967,3.482,2968,3.482,2969,3.482,2970,3.482,2971,3.482,2972,3.482,2973,3.482,2974,4.99,2975,6.742,2976,3.482,2977,3.482,2978,3.482,2979,3.482,2980,3.482,2981,3.482,2982,3.482,2983,3.482,2984,3.482,2985,6.369,2986,5.832,2987,3.482,2988,3.482,2989,3.482,2990,3.482,2991,3.482,2992,3.482,2993,3.482,2994,4.99,2995,3.482,2996,4.99,2997,3.482,2998,4.99,2999,4.99,3000,3.482,3001,3.482,3002,3.482,3003,3.037,3004,3.482,3005,3.482,3006,3.482,3007,3.482,3008,3.037]],["title/components/TmplTextAreaComponent.html",[0,0.303,298,0.397]],["body/components/TmplTextAreaComponent.html",[0,0.494,1,0.434,2,0.449,3,0.122,4,0.107,5,0.357,6,0.414,7,0.455,8,0.092,10,0.288,11,0.292,12,0.401,13,0.589,14,0.455,15,0.327,16,0.484,17,0.7,18,0.678,19,0.434,20,0.401,23,0.5,27,0.013,33,0.152,34,0.223,35,1.751,36,0.687,42,0.244,43,0.401,44,0.567,51,0.376,61,0.659,62,0.518,65,0.2,68,0.218,70,0.152,72,0.68,73,1.176,74,0.32,76,0.122,77,0.021,80,0.518,81,0.813,86,1.247,88,0.901,98,0.539,102,0.932,104,0.762,106,0.971,109,0.455,118,0.838,121,1.044,122,0.977,127,1.257,128,0.525,146,0.455,147,1.247,148,1.117,151,1.414,152,1.48,154,1.065,161,2.398,162,2.522,163,1.911,165,1.03,168,0.455,178,0.481,179,1.383,180,1.196,182,1.911,183,1.928,191,1.928,193,1.598,197,0.455,198,0.532,199,0.401,200,0.455,201,0.455,202,0.286,203,0.604,204,0.434,205,0.678,206,0.434,207,0.722,208,0.414,209,0.577,210,0.597,211,0.455,212,0.434,213,0.604,214,0.434,215,0.434,216,0.434,217,0.455,218,0.678,219,0.434,220,0.434,221,0.604,222,0.434,223,0.604,224,0.434,225,0.455,226,0.434,227,0.722,228,0.434,229,0.414,230,0.434,231,0.434,232,0.455,233,0.577,234,0.722,235,0.434,236,0.455,237,0.434,238,0.455,239,0.434,240,0.434,241,0.455,242,0.434,243,0.434,244,0.434,245,0.25,246,0.455,247,0.414,248,0.604,249,0.434,250,0.434,251,0.455,252,0.434,253,0.376,254,0.455,255,0.434,256,0.455,257,0.434,258,0.455,259,0.434,260,0.455,261,0.434,262,0.434,263,0.455,264,0.414,265,0.434,266,0.678,267,0.414,268,0.455,269,0.357,270,0.357,271,0.434,272,0.455,273,0.455,274,0.434,275,0.455,276,0.455,277,0.434,278,0.455,279,0.434,280,0.455,281,0.455,282,0.395,283,0.525,284,0.357,285,0.414,286,0.434,287,0.455,288,0.455,289,0.434,290,0.455,291,0.455,292,0.434,293,0.455,294,0.434,295,0.604,296,0.455,297,0.434,298,0.69,299,0.455,300,0.434,301,0.434,302,0.434,303,0.455,304,0.357,305,0.455,306,0.434,307,0.455,308,0.434,309,0.455,310,0.434,311,0.455,312,0.434,313,0.455,314,0.455,315,0.009,316,0.009,349,0.608,350,0.731,374,0.608,413,1.813,442,0.776,456,4.482,474,2.821,513,1.216,544,1.171,616,1.3,619,2.049,641,0.705,647,1.065,678,3.884,694,1.588,730,1.598,2226,3.23,2770,4.661,3009,6.424,3010,7.364,3011,4.452,3012,5.159,3013,6.64,3014,5.914,3015,5.914,3016,4.452,3017,5.159,3018,4.452,3019,5.914]],["title/components/TmplTextBoxComponent.html",[0,0.303,300,0.397]],["body/components/TmplTextBoxComponent.html",[0,0.483,1,0.416,2,0.437,3,0.117,4,0.102,5,0.342,6,0.397,7,0.435,8,0.088,10,0.279,11,0.287,12,0.39,13,0.576,14,0.435,15,0.326,16,0.484,17,0.697,18,0.663,19,0.416,20,0.39,23,0.493,27,0.013,33,0.146,34,0.217,35,1.503,36,0.668,42,0.309,43,0.507,44,0.623,51,0.36,61,0.64,62,0.496,63,1.124,65,0.292,68,0.2,69,0.892,70,0.146,71,1.922,72,0.652,74,0.307,76,0.117,77,0.02,80,0.496,81,0.779,86,1.226,88,1.314,89,1.269,92,0.676,93,1.165,98,0.696,99,0.56,102,0.892,104,0.762,106,0.944,109,0.435,116,0.496,118,0.815,121,1.029,122,0.957,127,1.204,128,0.51,135,0.726,146,0.435,147,1.226,148,1.086,151,1.374,152,1.455,154,1.02,163,1.857,168,0.435,178,0.485,179,1.36,180,1.162,182,1.857,183,1.847,191,1.847,193,1.531,197,0.435,198,0.521,199,0.39,200,0.435,201,0.435,202,0.282,203,0.587,204,0.416,205,0.663,206,0.416,207,0.71,208,0.397,209,0.561,210,0.656,211,0.435,212,0.416,213,0.587,214,0.416,215,0.416,216,0.416,217,0.435,218,0.663,219,0.416,220,0.416,221,0.587,222,0.416,223,0.587,224,0.416,225,0.435,226,0.416,227,0.71,228,0.416,229,0.397,230,0.416,231,0.416,232,0.435,233,0.561,234,0.71,235,0.416,236,0.435,237,0.416,238,0.435,239,0.416,240,0.416,241,0.435,242,0.416,243,0.416,244,0.416,245,0.239,246,0.435,247,0.397,248,0.587,249,0.416,250,0.416,251,0.435,252,0.416,253,0.36,254,0.435,255,0.416,256,0.435,257,0.416,258,0.435,259,0.416,260,0.435,261,0.416,262,0.416,263,0.435,264,0.397,265,0.416,266,0.663,267,0.397,268,0.435,269,0.342,270,0.342,271,0.416,272,0.435,273,0.435,274,0.416,275,0.435,276,0.435,277,0.416,278,0.435,279,0.416,280,0.435,281,0.435,282,0.378,283,0.51,284,0.342,285,0.397,286,0.416,287,0.435,288,0.435,289,0.416,290,0.435,291,0.435,292,0.416,293,0.435,294,0.416,295,0.587,296,0.435,297,0.416,298,0.416,299,0.435,300,0.678,301,0.416,302,0.416,303,0.435,304,0.342,305,0.435,306,0.416,307,0.435,308,0.416,309,0.435,310,0.416,311,0.435,312,0.416,313,0.435,314,0.435,315,0.009,316,0.009,349,0.582,350,0.701,374,0.784,378,1.556,413,1.774,433,1.478,442,0.754,454,4.714,455,2.702,456,4.405,471,3.094,473,3.094,474,2.702,513,1.165,619,1.991,662,2.005,696,1.204,730,1.531,837,2.005,839,1.332,1585,3.884,1693,5.669,1694,5.122,1716,2.702,1717,2.702,1718,3.72,1719,3.72,1720,3.362,1721,3.362,1931,3.094,1932,4.714,1933,4.168,1935,3.72,2202,3.72,2211,3.72,2226,3.094,2233,3.72,2234,3.72,2235,3.72,2236,3.72,2770,4.529,3009,6.867,3017,5.012,3020,7.872,3021,4.265]],["title/components/TmplTextComponent.html",[0,0.303,301,0.397]],["body/components/TmplTextComponent.html",[0,0.491,1,0.429,2,0.557,3,0.12,4,0.105,5,0.352,6,0.409,7,0.449,8,0.091,10,0.285,11,0.291,12,0.398,13,0.585,14,0.449,15,0.327,16,0.484,17,0.711,18,0.674,19,0.429,20,0.398,22,3.737,23,0.512,27,0.013,33,0.15,34,0.221,36,0.682,42,0.318,43,0.512,44,0.605,51,0.371,61,0.49,62,0.511,63,1.146,65,0.198,68,0.203,70,0.15,72,0.671,74,0.316,76,0.12,77,0.02,80,0.511,81,0.802,86,1.241,88,1.186,92,1.22,99,0.769,100,0.92,104,0.737,106,0.722,109,0.449,115,1.473,116,0.818,121,0.998,122,0.863,124,1.123,128,0.585,129,1.146,130,2.198,135,1.123,146,0.449,147,1.33,148,1.425,151,1.402,154,1.051,165,1.356,168,0.449,178,0.422,187,2.367,188,3.737,189,1.086,190,1.283,191,1.903,192,0.983,193,1.578,194,2.49,195,1.635,196,2.49,197,0.449,198,0.529,199,0.398,200,0.449,201,0.449,202,0.277,203,0.599,204,0.429,205,0.674,206,0.429,207,0.719,208,0.409,209,0.572,210,0.371,211,0.449,212,0.429,213,0.599,214,0.429,215,0.429,216,0.429,217,0.449,218,0.674,219,0.429,220,0.429,221,0.599,222,0.429,223,0.599,224,0.429,225,0.449,226,0.429,227,0.719,228,0.429,229,0.409,230,0.429,231,0.429,232,0.449,233,0.572,234,0.719,235,0.429,236,0.449,237,0.429,238,0.449,239,0.429,240,0.429,241,0.449,242,0.429,243,0.429,244,0.429,245,0.247,246,0.449,247,0.409,248,0.599,249,0.429,250,0.429,251,0.449,252,0.429,253,0.371,254,0.449,255,0.429,256,0.449,257,0.429,258,0.449,259,0.429,260,0.449,261,0.429,262,0.429,263,0.449,264,0.409,265,0.429,266,0.674,267,0.409,268,0.449,269,0.352,270,0.352,271,0.429,272,0.449,273,0.449,274,0.429,275,0.449,276,0.449,277,0.429,278,0.449,279,0.429,280,0.449,281,0.449,282,0.39,283,0.52,284,0.352,285,0.409,286,0.429,287,0.449,288,0.449,289,0.429,290,0.449,291,0.449,292,0.429,293,0.449,294,0.429,295,0.599,296,0.449,297,0.429,298,0.429,299,0.449,300,0.429,301,0.687,302,0.429,303,0.449,304,0.352,305,0.449,306,0.429,307,0.449,308,0.429,309,0.449,310,0.429,311,0.449,312,0.429,313,0.449,314,0.449,315,0.009,316,0.009,378,1.575,541,3.834,544,1.163,647,1.051,696,1.241,839,1.373,1226,3.188,1585,3.944,1716,2.784,1717,2.784,2383,3.834,3022,4.395,3023,6.597,3024,5.863,3025,4.395,3026,4.395,3027,4.395,3028,4.395,3029,4.395,3030,4.395,3031,4.395,3032,3.834,3033,3.464]],["title/components/TmplTileComponent.html",[0,0.303,302,0.397]],["body/components/TmplTileComponent.html",[0,0.459,1,0.274,2,0.391,3,0.077,4,0.067,5,0.225,6,0.262,7,0.287,8,0.058,10,0.207,11,0.237,12,0.289,13,0.457,14,0.287,15,0.32,16,0.474,17,0.656,18,0.525,19,0.274,20,0.289,23,0.419,24,0.921,27,0.013,33,0.096,34,0.161,36,0.495,42,0.313,43,0.523,44,0.606,51,0.36,54,2.189,55,1.514,61,0.475,62,0.327,63,1.359,65,0.231,68,0.177,70,0.096,72,0.429,73,0.742,74,0.202,76,0.077,77,0.013,78,1.053,80,0.327,81,0.513,86,1.012,88,1.248,89,0.778,92,1.198,95,1.592,98,0.623,99,0.968,100,0.892,102,1.727,104,0.784,105,2.819,106,1.293,107,3.788,108,2.819,109,0.287,110,0.821,111,0.974,112,1.255,114,2.527,115,1.202,116,0.915,118,1.133,121,1.138,122,1.135,124,1.089,126,1.663,127,1.962,128,0.576,129,1.319,130,1.607,131,1.99,132,1.847,133,1.467,134,0.878,135,0.977,141,2.325,143,1.987,144,0.794,146,0.287,147,1.415,148,1.444,149,2.414,150,2.039,151,1.476,152,1.489,153,1.126,154,1.019,156,2.7,159,1.331,160,1.53,161,1.514,162,1.592,163,1.377,165,0.65,168,0.287,171,2.215,173,1.272,178,0.462,179,1.419,180,1.314,182,1.856,183,1.217,187,1.514,190,2.118,192,0.629,193,1.009,195,2.297,197,0.287,198,0.413,199,0.289,200,0.287,201,0.287,202,0.255,203,0.435,204,0.274,205,0.525,206,0.274,207,0.586,208,0.262,209,0.416,210,0.601,211,0.287,212,0.274,213,0.435,214,0.274,215,0.274,216,0.274,217,0.287,218,0.525,219,0.274,220,0.274,221,0.435,222,0.274,223,0.689,224,0.274,225,0.287,226,0.274,227,0.586,228,0.274,229,0.262,230,0.274,231,0.274,232,0.287,233,0.416,234,0.586,235,0.274,236,0.287,237,0.274,238,0.287,239,0.274,240,0.274,241,0.287,242,0.274,243,0.274,244,0.274,245,0.158,246,0.287,247,0.262,248,0.435,249,0.274,250,0.274,251,0.287,252,0.274,253,0.237,254,0.287,255,0.274,256,0.287,257,0.274,258,0.287,259,0.274,260,0.287,261,0.274,262,0.274,263,0.287,264,0.262,265,0.274,266,0.525,267,0.262,268,0.287,269,0.225,270,0.225,271,0.274,272,0.287,273,0.287,274,0.274,275,0.287,276,0.287,277,0.274,278,0.287,279,0.274,280,0.287,281,0.287,282,0.249,283,0.378,284,0.606,285,0.262,286,0.274,287,0.435,288,0.287,289,0.274,290,0.287,291,0.287,292,0.274,293,0.287,294,0.274,295,0.435,296,0.287,297,0.274,298,0.274,299,0.287,300,0.274,301,0.274,302,0.56,303,0.825,304,0.225,305,0.287,306,0.274,307,0.287,308,0.274,309,0.287,310,0.274,311,0.287,312,0.274,313,0.287,314,0.287,315,0.007,316,0.007,334,1.321,346,2.216,349,0.581,350,0.7,364,1.126,372,1.898,374,0.948,378,1.453,393,1.321,406,1.126,423,2.419,442,0.559,457,0.909,487,0.675,497,1.088,544,0.496,585,2.452,616,1.502,619,2.408,621,1.722,627,1.046,631,2.216,641,0.445,647,0.672,682,2.878,686,2.039,693,1.217,694,1.231,738,1.592,768,1.781,782,2.915,785,1.898,786,3.091,810,2.137,825,3.733,839,0.878,840,2.039,841,2.039,865,1.774,866,2.878,870,1.898,901,2.7,934,2.216,1021,1.514,1049,1.514,1129,4.527,1141,2.216,1144,1.68,1190,1.781,1191,4.166,1380,3.91,1381,2.452,1382,2.216,1582,3.253,1583,4.057,1587,2.216,1589,3.091,1604,3.091,1611,1.592,1616,3.359,1620,2.039,1627,2.003,1632,1.898,1642,3.359,1652,3.091,1653,2.7,1654,1.592,1657,1.38,1661,3.359,1665,4.166,1669,2.216,1670,3.359,1672,2.039,1677,4.527,1715,2.452,1734,1.68,1736,2.878,1745,2.452,1756,3.359,1923,2.527,2108,2.039,2120,2.452,2143,2.452,2146,2.452,2147,5.009,2148,2.452,2276,2.216,2395,2.216,2396,2.452,2437,2.216,2488,2.216,2540,1.898,2544,3.717,2621,2.216,2630,2.452,2689,2.039,2864,2.452,3008,2.452,3034,7.64,3035,7.64,3036,2.811,3037,5.146,3038,4.261,3039,6.495,3040,5.146,3041,5.146,3042,5.743,3043,6.495,3044,4.261,3045,4.261,3046,2.811,3047,4.261,3048,2.811,3049,4.261,3050,2.811,3051,2.811,3052,2.811,3053,2.811,3054,2.811,3055,2.811,3056,2.811,3057,2.811,3058,2.811,3059,2.811,3060,2.811,3061,2.811,3062,4.261,3063,2.811,3064,4.261,3065,2.811,3066,2.811,3067,2.811,3068,2.452,3069,2.811,3070,2.452,3071,2.811,3072,2.811,3073,2.811,3074,2.811,3075,2.811,3076,2.811,3077,2.811,3078,2.452,3079,2.811,3080,2.811,3081,2.811,3082,2.811,3083,2.811,3084,2.811,3085,4.261,3086,2.452,3087,2.811,3088,2.811,3089,2.811,3090,2.811,3091,2.216,3092,2.811,3093,4.261,3094,2.811,3095,2.811,3096,2.811,3097,2.811,3098,2.452,3099,2.452,3100,2.811,3101,2.811,3102,2.811,3103,2.811,3104,2.811,3105,2.811,3106,2.811,3107,2.811,3108,2.811,3109,2.811,3110,2.811,3111,2.811,3112,4.261,3113,2.811,3114,4.261]],["title/components/TmplTimerComponent.html",[0,0.303,304,0.326]],["body/components/TmplTimerComponent.html",[0,0.398,1,0.292,2,0.34,3,0.082,4,0.072,5,0.24,6,0.279,7,0.306,8,0.062,10,0.26,11,0.245,12,0.303,13,0.474,14,0.306,15,0.321,16,0.475,17,0.663,18,0.546,19,0.292,20,0.303,23,0.481,24,0.941,27,0.013,32,2.95,33,0.103,34,0.169,36,0.52,38,1.444,42,0.34,43,0.549,44,0.671,51,0.253,61,0.822,62,0.801,63,1.159,65,0.336,68,0.223,69,1.119,70,0.103,71,1.002,72,0.457,74,0.215,76,0.082,77,0.021,86,0.943,89,1.258,90,0.648,92,1.147,93,0.818,98,0.893,99,0.393,100,0.627,101,0.968,102,1.392,104,0.771,106,1.042,109,0.306,110,1.305,111,1.038,112,1.277,113,1.22,115,0.627,116,0.824,118,0.758,119,2.172,121,1.061,122,1.066,123,1.075,124,1.366,126,0.968,128,0.474,129,0.586,131,1.038,132,1.075,144,1.509,146,0.456,147,1.277,148,1.257,149,1.696,151,1.417,152,1.327,153,2.542,154,0.716,163,0.968,165,1.237,168,0.306,171,1.075,173,1.321,178,0.356,179,1.442,180,1.514,182,1.916,183,1.935,184,1.297,185,1.696,189,0.74,190,0.874,192,1,197,0.306,198,0.429,199,0.303,200,0.306,201,0.306,202,0.283,203,0.456,204,0.292,205,0.546,206,0.292,207,0.605,208,0.279,209,0.436,210,0.535,211,0.306,212,0.292,213,0.456,214,0.292,215,0.292,216,0.292,217,0.456,218,0.546,219,0.292,220,0.292,221,0.456,222,0.292,223,0.648,224,0.292,225,0.306,226,0.292,227,0.605,228,0.292,229,0.279,230,0.292,231,0.292,232,0.306,233,0.436,234,0.605,235,0.292,236,0.306,237,0.292,238,0.306,239,0.292,240,0.292,241,0.306,242,0.292,243,0.292,244,0.292,245,0.3,246,0.306,247,0.279,248,0.456,249,0.292,250,0.292,251,0.306,252,0.292,253,0.582,254,0.306,255,0.292,256,0.306,257,0.292,258,0.306,259,0.292,260,0.306,261,0.292,262,0.292,263,0.306,264,0.279,265,0.292,266,0.546,267,0.279,268,0.306,269,0.24,270,0.24,271,0.292,272,0.306,273,0.306,274,0.292,275,0.306,276,0.306,277,0.292,278,0.306,279,0.292,280,0.306,281,0.306,282,0.266,283,0.396,284,0.508,285,0.279,286,0.292,287,0.306,288,0.306,289,0.292,290,0.306,291,0.306,292,0.292,293,0.306,294,0.292,295,0.456,296,0.306,297,0.292,298,0.292,299,0.306,300,0.292,301,0.292,302,0.292,303,0.306,304,0.508,305,0.306,306,0.292,307,0.306,308,0.292,309,0.306,310,0.292,311,0.306,312,0.292,313,0.306,314,0.306,315,0.007,316,0.007,319,2.746,324,1.791,331,2.054,332,2.008,340,1.613,349,0.908,350,1.093,360,1.002,374,0.865,377,3.114,410,1.696,431,0.74,433,1.038,440,1.408,442,0.587,445,2.101,487,0.847,497,0.528,544,0.528,573,3.193,574,1.613,583,4.018,589,2.407,616,1.561,618,2.172,619,1.548,627,1.663,628,1.247,641,0.708,694,1.278,696,0.845,755,1.47,810,2.36,812,1.2,883,1.897,956,2.296,980,2.86,981,1.114,982,1.35,1127,1.897,1477,1.897,1478,2.022,1479,4.801,1480,4.003,1481,4.003,1485,2.022,1493,2.022,1494,2.022,1496,2.022,1497,4.003,1498,4.283,1499,4.283,1500,2.022,1501,3.61,1502,2.022,1503,3.018,1504,3.61,1505,2.022,1506,2.022,1507,3.61,1508,2.022,1509,3.61,1510,3.756,1511,3.61,1512,3.61,1513,3.61,1514,3.61,1515,3.61,1516,3.61,1517,3.61,1518,3.61,1519,3.61,1520,4.283,1521,3.387,1522,3.61,1523,3.61,1524,4.283,1525,3.61,1526,3.387,1527,3.61,1528,2.022,1529,2.022,1530,2.022,1531,1.897,1532,4.003,1533,2.022,1534,2.022,1535,2.022,1536,2.022,1537,2.022,1538,2.022,1539,2.022,1540,2.022,1541,2.022,1542,2.022,1543,2.022,1544,3.018,1545,4.283,1546,3.61,1547,2.022,1548,3.018,1549,2.022,1550,2.022,1551,2.022,1552,2.022,1553,2.022,1554,2.831,1555,2.022,1556,2.022,1557,2.022,1558,2.022,1559,2.022,1560,2.022,1561,1.897,1562,2.022,1563,2.022,1564,2.022,1565,2.022,1566,2.022,1567,2.022,1619,1.897,1677,2.36,1923,1.47,2050,2.831,2101,2.172,2113,2.612,2114,2.612,2660,4.664,3115,4.469,3116,4.469,3117,4.469,3118,5.346,3119,5.346,3120,2.995,3121,2.995,3122,4.469,3123,2.995,3124,2.995,3125,2.995,3126,2.995,3127,2.995,3128,2.995,3129,4.469,3130,2.995,3131,2.995,3132,2.995,3133,2.995,3134,2.995,3135,2.995,3136,2.995,3137,2.995,3138,2.995,3139,2.995,3140,2.995,3141,2.995,3142,2.995,3143,2.995,3144,2.995,3145,2.995,3146,2.995,3147,2.995,3148,2.995,3149,2.995,3150,2.995,3151,2.995,3152,2.995,3153,2.995,3154,2.995,3155,2.995,3156,2.995,3157,2.995,3158,2.995,3159,2.995,3160,2.995,3161,2.995,3162,2.995,3163,2.995,3164,2.612,3165,2.995,3166,2.995,3167,2.995,3168,2.995,3169,2.995]],["title/components/TmplTitleComponent.html",[0,0.303,306,0.397]],["body/components/TmplTitleComponent.html",[0,0.478,1,0.408,2,0.431,3,0.114,4,0.1,5,0.335,6,0.389,7,0.427,8,0.086,10,0.276,11,0.285,12,0.385,13,0.571,14,0.427,15,0.326,16,0.483,17,0.7,18,0.657,19,0.408,20,0.385,23,0.504,24,0.57,27,0.013,32,3.378,33,0.143,34,0.214,36,0.659,42,0.285,43,0.525,44,0.578,51,0.353,61,0.466,62,0.486,65,0.188,68,0.212,70,0.143,72,0.639,74,0.301,76,0.114,77,0.019,80,0.486,81,0.763,86,1.216,88,1.395,92,1.142,100,0.875,101,1.351,104,0.774,106,0.931,109,0.427,112,1.134,114,2.783,116,0.802,118,0.978,121,0.804,122,1.015,124,1.448,127,1.18,128,0.571,129,0.817,133,1.068,134,1.306,135,0.712,141,2.307,144,1.18,146,0.579,151,1,153,2.889,154,1,163,2.33,165,1.595,168,0.427,178,0.414,179,1.631,180,1.678,182,1.832,183,1.81,184,2.986,185,3.644,186,4.075,192,0.935,197,0.427,198,0.516,199,0.385,200,0.427,201,0.427,202,0.272,203,0.579,204,0.408,205,0.657,206,0.408,207,0.704,208,0.389,209,0.553,210,0.353,211,0.427,212,0.408,213,0.579,214,0.408,215,0.408,216,0.408,217,0.427,218,0.657,219,0.408,220,0.408,221,0.579,222,0.408,223,0.579,224,0.408,225,0.427,226,0.408,227,0.704,228,0.408,229,0.389,230,0.408,231,0.408,232,0.427,233,0.553,234,0.704,235,0.408,236,0.427,237,0.408,238,0.427,239,0.408,240,0.408,241,0.427,242,0.408,243,0.408,244,0.408,245,0.235,246,0.427,247,0.389,248,0.579,249,0.408,250,0.408,251,0.427,252,0.408,253,0.627,254,0.427,255,0.408,256,0.427,257,0.408,258,0.427,259,0.408,260,0.427,261,0.408,262,0.408,263,0.427,264,0.389,265,0.408,266,0.657,267,0.389,268,0.427,269,0.335,270,0.335,271,0.408,272,0.427,273,0.427,274,0.408,275,0.427,276,0.427,277,0.408,278,0.427,279,0.408,280,0.427,281,0.427,282,0.371,283,0.503,284,0.335,285,0.389,286,0.408,287,0.427,288,0.427,289,0.408,290,0.427,291,0.427,292,0.408,293,0.427,294,0.408,295,0.579,296,0.427,297,0.408,298,0.408,299,0.427,300,0.408,301,0.408,302,0.408,303,0.427,304,0.335,305,0.427,306,0.673,307,0.427,308,0.408,309,0.427,310,0.408,311,0.427,312,0.408,313,0.427,314,0.427,315,0.009,316,0.009,378,1.543,641,0.662,694,1.538,696,1.18,839,1.306,1585,3.845,1651,3.033,1657,2.783,1667,3.033,1716,2.649,1717,2.649,1734,3.845,1941,2.649,2064,3.296,2947,3.647,3170,4.181,3171,6.432,3172,6.432,3173,4.181,3174,4.181,3175,4.181,3176,4.181,3177,4.181,3178,4.181,3179,4.181,3180,4.181]],["title/components/TmplToggleBarComponent.html",[0,0.303,308,0.397]],["body/components/TmplToggleBarComponent.html",[0,0.457,1,0.374,2,0.406,3,0.105,4,0.092,5,0.307,6,0.356,7,0.391,8,0.079,10,0.26,11,0.275,12,0.362,13,0.545,14,0.391,15,0.325,16,0.481,17,0.693,18,0.627,19,0.374,20,0.362,23,0.491,24,0.523,27,0.013,33,0.183,34,0.202,35,1.874,36,0.62,42,0.299,43,0.514,44,0.595,50,3.151,51,0.323,54,2.741,61,0.595,62,0.445,63,1.044,65,0.172,68,0.204,70,0.131,71,1.281,72,0.585,73,1.011,74,0.275,76,0.105,77,0.018,80,0.445,81,0.699,86,1.172,88,1.344,90,0.829,100,1.117,102,1.554,104,0.705,106,0.629,109,0.391,110,2.168,111,1.327,112,1.232,113,1.457,115,1.285,116,0.714,118,0.871,121,1.091,122,0.786,123,1.916,124,1.785,128,0.545,129,1.201,130,1.667,131,1.327,132,1.375,133,1.698,134,1.196,135,1.131,141,1.281,146,0.391,152,0.801,155,2.063,156,3.381,159,1.667,163,1.725,165,0.886,168,0.391,173,0.946,178,0.399,189,0.946,192,1.563,197,0.391,198,0.492,199,0.362,200,0.391,201,0.391,202,0.273,203,0.545,204,0.374,205,0.627,206,0.374,207,0.678,208,0.356,209,0.521,210,0.323,211,0.391,212,0.374,213,0.545,214,0.374,215,0.374,216,0.374,217,0.391,218,0.627,219,0.374,220,0.374,221,0.545,222,0.374,223,0.545,224,0.374,225,0.391,226,0.374,227,0.678,228,0.374,229,0.356,230,0.374,231,0.374,232,0.391,233,0.521,234,0.678,235,0.374,236,0.391,237,0.374,238,0.391,239,0.374,240,0.374,241,0.391,242,0.374,243,0.374,244,0.374,245,0.215,246,0.391,247,0.356,248,0.545,249,0.374,250,0.374,251,0.391,252,0.374,253,0.323,254,0.391,255,0.374,256,0.391,257,0.374,258,0.391,259,0.374,260,0.391,261,0.374,262,0.374,263,0.391,264,0.356,265,0.374,266,0.627,267,0.356,268,0.391,269,0.307,270,0.307,271,0.374,272,0.391,273,0.391,274,0.374,275,0.391,276,0.391,277,0.374,278,0.391,279,0.374,280,0.391,281,0.391,282,0.34,283,0.473,284,0.307,285,0.356,286,0.374,287,0.391,288,0.391,289,0.374,290,0.391,291,0.391,292,0.374,293,0.391,294,0.374,295,0.545,296,0.391,297,0.374,298,0.374,299,0.391,300,0.374,301,0.374,302,0.374,303,0.391,304,0.307,305,0.391,306,0.374,307,0.391,308,0.648,309,0.785,310,0.374,311,0.391,312,0.374,313,0.391,314,0.391,315,0.008,316,0.008,324,1.507,349,0.523,350,0.629,377,2.62,378,1.487,407,4.207,413,1.677,513,1.046,519,3.872,558,1.8,626,3.872,629,4.456,630,2.063,641,0.607,662,1.8,667,4.821,684,2.063,685,1.8,694,1.469,702,1.534,712,2.289,730,1.375,799,3.19,839,1.196,1096,2.875,1118,2.289,1133,2.778,1207,4.656,1239,4.656,1384,1.967,1427,4.177,1455,3.604,1725,3.892,1794,3.34,1815,2.778,1924,2.289,2001,3.34,2108,2.778,2111,3.018,2539,3.018,2782,3.34,3181,7.573,3182,7.573,3183,3.829,3184,6.143,3185,7.425,3186,7.425,3187,6.143,3188,5.337,3189,3.829,3190,5.337,3191,3.829,3192,5.337,3193,5.337,3194,5.337,3195,3.829,3196,3.829,3197,3.829,3198,3.829,3199,3.829,3200,3.829,3201,3.829,3202,3.829,3203,3.829,3204,3.829,3205,3.829,3206,6.143,3207,6.143,3208,3.829,3209,6.988,3210,3.829,3211,3.829,3212,3.829,3213,3.829,3214,3.34,3215,6.988,3216,6.645,3217,5.337,3218,5.337,3219,3.829,3220,3.829,3221,3.829,3222,3.829,3223,3.829,3224,3.829,3225,3.829,3226,3.829,3227,3.829]],["title/components/TmplVideoComponent.html",[0,0.303,310,0.397]],["body/components/TmplVideoComponent.html",[0,0.493,1,0.432,2,0.559,3,0.121,4,0.106,5,0.531,6,0.413,7,0.452,8,0.091,10,0.287,11,0.292,12,0.4,13,0.588,14,0.452,15,0.327,16,0.484,17,0.711,18,0.676,19,0.432,20,0.4,22,3.753,23,0.513,27,0.013,33,0.152,34,0.223,36,0.685,42,0.244,43,0.479,44,0.531,51,0.374,61,0.494,62,0.515,65,0.199,68,0.204,70,0.152,72,0.677,73,1.171,74,0.319,76,0.121,77,0.02,80,0.515,81,0.809,86,1.245,88,1.193,92,0.934,99,0.774,100,0.927,104,0.757,106,0.728,109,0.452,115,1.478,116,0.821,121,1.001,122,0.868,124,1.132,128,0.588,129,1.153,130,2.206,135,1.128,146,0.452,147,1.333,148,1.429,151,1.41,154,1.06,165,1.364,168,0.452,178,0.354,179,1.295,180,1.34,187,2.387,188,4.439,189,1.095,190,1.294,191,1.919,192,0.992,193,1.591,194,2.511,195,1.649,196,2.511,197,0.452,198,0.531,199,0.4,200,0.452,201,0.452,202,0.278,203,0.602,204,0.432,205,0.676,206,0.432,207,0.721,208,0.413,209,0.575,210,0.374,211,0.452,212,0.432,213,0.602,214,0.432,215,0.432,216,0.432,217,0.452,218,0.676,219,0.432,220,0.432,221,0.602,222,0.432,223,0.602,224,0.432,225,0.452,226,0.432,227,0.721,228,0.432,229,0.413,230,0.432,231,0.432,232,0.452,233,0.575,234,0.721,235,0.432,236,0.452,237,0.432,238,0.452,239,0.432,240,0.432,241,0.452,242,0.432,243,0.432,244,0.432,245,0.249,246,0.452,247,0.413,248,0.602,249,0.432,250,0.432,251,0.452,252,0.432,253,0.374,254,0.452,255,0.432,256,0.452,257,0.432,258,0.452,259,0.432,260,0.452,261,0.432,262,0.432,263,0.452,264,0.413,265,0.432,266,0.676,267,0.413,268,0.452,269,0.355,270,0.355,271,0.432,272,0.452,273,0.452,274,0.432,275,0.452,276,0.452,277,0.432,278,0.452,279,0.432,280,0.452,281,0.452,282,0.393,283,0.523,284,0.355,285,0.413,286,0.432,287,0.452,288,0.452,289,0.432,290,0.452,291,0.452,292,0.432,293,0.452,294,0.432,295,0.602,296,0.452,297,0.432,298,0.432,299,0.452,300,0.432,301,0.432,302,0.432,303,0.452,304,0.355,305,0.452,306,0.432,307,0.452,308,0.432,309,0.452,310,0.689,311,0.452,312,0.432,313,0.452,314,0.452,315,0.009,316,0.009,378,1.58,839,1.384,1657,3.252,3228,4.432,3229,6.625,3230,6.625,3231,7.062,3232,4.432,3233,4.432,3234,4.432,3235,4.432]],["title/classes/Widget.html",[77,0.019,3236,3.551]],["body/classes/Widget.html",[3,0.1,4,0.088,6,0.483,8,0.076,24,0.501,27,0.013,33,0.126,34,0.246,36,0.603,42,0.34,43,0.249,44,0.662,50,2.337,54,1.887,55,3.236,61,0.91,62,0.83,63,1.51,68,0.16,69,1.365,76,0.1,77,0.03,89,0.671,90,1.3,92,0.582,98,1,100,0.769,141,1.229,158,2.793,162,3.697,198,0.523,199,0.549,202,0.26,210,0.438,220,0.358,284,0.523,315,0.008,316,0.008,329,2.481,331,2.597,335,3.352,340,1.979,342,4.113,345,2.665,349,0.82,350,0.987,351,3.284,357,1.979,358,4.086,359,3.501,360,2.389,374,0.707,377,2.545,393,2.437,452,3.792,487,0.952,497,1.42,522,1.727,523,4.433,526,4.406,531,4.735,544,1.059,558,3.068,586,1.887,589,2.793,698,3.535,699,4.248,727,3.761,739,3.099,788,3.099,852,4.086,859,3.204,863,3.284,865,2.158,975,3.501,976,2.196,1048,2.081,1049,2.793,1076,2.327,1084,4.36,1096,1.979,1097,3.515,1137,3.761,1139,5.785,1194,3.284,1196,3.501,1201,3.761,1226,2.665,1271,5.692,1375,2.896,1409,4.406,1521,3.284,1644,2.081,1761,4.086,1913,4.522,2011,2.896,2100,5.908,2164,4.086,2187,3.284,2328,4.522,2330,5.144,2390,4.522,2391,4.522,2540,3.501,2621,2.896,2683,4.734,2850,4.522,3164,3.205,3236,7.392,3237,3.674,3238,4.522,3239,6.007,3240,6.525,3241,6.525,3242,6.525,3243,7.339,3244,5.692,3245,6.007,3246,6.007,3247,6.007,3248,5.184,3249,5.184,3250,5.184,3251,5.184,3252,3.674,3253,3.674,3254,3.674,3255,3.674,3256,6.525,3257,7.724,3258,5.184,3259,7.885,3260,5.184,3261,3.674,3262,4.522,3263,3.674,3264,5.184,3265,5.692,3266,7.141,3267,5.184,3268,6.525,3269,3.674,3270,5.184,3271,4.522,3272,4.522,3273,3.674,3274,5.184,3275,3.674,3276,4.522,3277,5.184,3278,5.184,3279,5.184,3280,3.674,3281,3.674,3282,3.674,3283,3.674,3284,6.525,3285,5.184,3286,3.674,3287,3.674,3288,4.522,3289,3.674,3290,3.674,3291,3.674,3292,5.184,3293,3.674,3294,3.674,3295,5.692,3296,3.674,3297,3.674,3298,3.674,3299,3.674,3300,3.674,3301,3.674,3302,3.674,3303,3.674,3304,3.674,3305,3.674,3306,3.674,3307,5.184,3308,3.674,3309,3.674,3310,3.674,3311,5.184,3312,3.674,3313,5.184,3314,3.674,3315,5.184,3316,3.674,3317,3.674,3318,5.184,3319,3.674,3320,3.674,3321,3.674,3322,3.674,3323,3.674,3324,3.674,3325,3.674,3326,3.674,3327,3.674,3328,3.674,3329,3.674,3330,3.674,3331,3.674,3332,5.184,3333,5.184,3334,3.674,3335,3.674,3336,3.674,3337,3.674,3338,3.674,3339,3.674,3340,3.205,3341,3.205,3342,3.674,3343,3.674,3344,3.674,3345,3.205,3346,3.674,3347,3.674,3348,3.674,3349,3.674,3350,3.674]],["title/components/WorkshopsComponent.html",[0,0.303,312,0.397]],["body/components/WorkshopsComponent.html",[0,0.455,1,0.37,2,0.403,3,0.104,4,0.091,5,0.304,6,0.353,7,0.387,8,0.078,10,0.258,11,0.274,12,0.36,13,0.542,14,0.387,15,0.325,16,0.481,17,0.692,18,0.826,19,0.722,20,0.36,23,0.49,24,1.011,26,3.169,27,0.013,31,2.99,33,0.238,34,0.2,36,0.616,41,4.625,42,0.219,43,0.415,44,0.425,51,0.32,61,0.423,62,0.441,65,0.171,68,0.188,70,0.13,74,0.273,75,5.332,76,0.104,77,0.018,80,0.441,99,0.696,100,0.794,101,1.226,102,1.709,103,6.46,104,0.783,105,1.862,106,1.261,107,1.948,108,1.862,109,0.676,110,1.932,111,1.837,112,1.332,113,1.807,114,1.862,115,1.385,116,0.769,117,1.71,118,1.088,119,2.752,120,3.309,121,1.124,122,1.157,123,1.903,124,1.562,125,3.309,126,1.713,127,1.071,128,0.618,129,1.294,130,1.656,131,1.314,132,1.362,133,1.355,134,1.185,135,1.04,136,3.309,137,3.309,138,5.332,139,4.801,140,3.309,141,1.269,142,3.309,143,1.464,144,1.071,145,3.309,146,0.541,147,1.332,148,1.25,149,2.149,150,3.846,151,1.461,152,1.51,153,1.52,154,1.582,155,3.565,156,3.872,157,3.846,158,2.856,159,1.185,160,1.362,161,2.856,162,3.003,163,2.139,164,4.702,165,1.669,166,5.773,167,3.309,168,0.711,169,4.411,170,4.625,171,1.362,172,2.149,173,1.511,174,2.752,175,2.752,176,2.561,177,2.99,178,0.367,179,1.411,180,1.339,181,3.58,182,1.713,183,1.642,184,1.642,185,2.149,186,2.403,197,0.387,198,0.49,199,0.36,200,0.387,201,0.387,202,0.272,203,0.541,204,0.37,205,0.624,206,0.37,207,0.676,208,0.353,209,0.517,210,0.32,211,0.387,212,0.37,213,0.541,214,0.37,215,0.37,216,0.37,217,0.387,218,0.624,219,0.37,220,0.37,221,0.541,222,0.37,223,0.541,224,0.37,225,0.387,226,0.37,227,0.676,228,0.37,229,0.353,230,0.37,231,0.37,232,0.387,233,0.517,234,0.676,235,0.37,236,0.387,237,0.37,238,0.387,239,0.37,240,0.37,241,0.387,242,0.37,243,0.37,244,0.37,245,0.213,246,0.387,247,0.353,248,0.541,249,0.37,250,0.37,251,0.387,252,0.37,253,0.32,254,0.387,255,0.37,256,0.387,257,0.37,258,0.387,259,0.37,260,0.387,261,0.37,262,0.37,263,0.387,264,0.353,265,0.37,266,0.624,267,0.353,268,0.387,269,0.304,270,0.304,271,0.37,272,0.387,273,0.387,274,0.37,275,0.387,276,0.387,277,0.37,278,0.387,279,0.37,280,0.387,281,0.387,282,0.336,283,0.47,284,0.304,285,0.353,286,0.37,287,0.387,288,0.387,289,0.37,290,0.387,291,0.387,292,0.37,293,0.387,294,0.37,295,0.541,296,0.387,297,0.37,298,0.37,299,0.387,300,0.37,301,0.37,302,0.37,303,0.387,304,0.304,305,0.387,306,0.37,307,0.387,308,0.37,309,0.387,310,0.37,311,0.387,312,0.646,313,0.387,314,0.387,315,0.008,316,0.008,324,1.071,332,1.601,349,0.518,350,0.623,431,0.938,432,2.752,487,0.601,497,0.669,762,3.292,1837,2.561,3351,3.793,3352,5.302,3353,3.793,3354,5.302,3355,3.793,3356,5.302,3357,5.302,3358,3.793,3359,5.302,3360,6.618]],["title/contributing.html",[3361,2.675,3362,2.675,3363,2.96]],["body/contributing.html",[16,0.431,27,0.012,115,1.278,144,1.724,315,0.011,316,0.011,357,3.29,360,2.043,364,2.447,410,3.46,529,4.814,635,4.814,738,4.085,761,2.871,984,3.869,1013,3.46,1017,3.651,1116,5.537,1144,3.651,1190,3.869,1241,5.327,1290,4.814,1644,4.491,1894,4.814,2187,3.869,2271,4.814,2274,4.814,2707,4.43,3078,6.291,3363,6.291,3364,6.694,3365,7.674,3366,7.674,3367,6.107,3368,6.107,3369,7.211,3370,6.107,3371,6.107,3372,6.107,3373,5.327,3374,5.327,3375,5.327,3376,5.327,3377,6.107,3378,5.327,3379,6.107,3380,7.211,3381,5.327,3382,6.107,3383,5.327,3384,6.107,3385,7.211,3386,7.674,3387,6.107,3388,5.327,3389,7.211,3390,6.107,3391,7.211,3392,7.211,3393,5.327,3394,6.107,3395,6.107,3396,5.327,3397,5.327,3398,6.107,3399,5.327,3400,7.211,3401,6.107,3402,6.107,3403,7.211,3404,6.107,3405,6.107,3406,6.107,3407,6.107,3408,6.107]],["title/dependencies.html",[3409,2.96,3410,3.861]],["body/dependencies.html",[27,0.013,70,0.18,122,0.775,199,0.358,245,0.37,262,0.643,315,0.01,316,0.01,380,4.595,386,4.152,438,4.152,440,2.477,532,3.557,641,0.835,642,4.595,799,3.149,815,3.337,831,2.838,859,2.586,1004,3.337,1025,3.94,1026,3.337,1028,3.337,1029,3.337,1030,3.337,1031,3.337,1034,4.557,1097,2.838,1116,4.451,1218,4.595,1374,3.557,1409,3.557,1653,3.337,1714,4.595,1845,5.196,1846,4.451,2058,4.595,2155,4.595,2268,4.595,2305,4.595,2478,5.63,2672,4.595,2683,3.822,2684,4.595,2839,4.595,2840,5.75,3003,5.75,3033,4.152,3410,4.152,3411,8.122,3412,5.268,3413,5.268,3414,5.268,3415,5.268,3416,5.268,3417,7.761,3418,5.268,3419,5.268,3420,5.268,3421,5.268,3422,6.591,3423,5.268,3424,5.268,3425,7.194,3426,5.268,3427,5.268,3428,5.268,3429,6.591,3430,5.268,3431,5.268,3432,6.591,3433,5.268,3434,5.268,3435,6.591,3436,5.268,3437,5.268,3438,6.591,3439,7.761,3440,5.268,3441,7.761,3442,5.268,3443,5.268,3444,5.268,3445,5.268,3446,5.268,3447,5.268,3448,5.268,3449,5.268,3450,6.591,3451,5.268,3452,5.268,3453,5.268,3454,5.268,3455,5.268,3456,6.576,3457,5.268,3458,5.268,3459,5.268,3460,6.591,3461,6.591,3462,5.268,3463,7.194,3464,4.595,3465,5.268,3466,5.268,3467,5.268,3468,5.268,3469,5.268,3470,5.268,3471,5.268,3472,7.194,3473,5.268,3474,5.268,3475,5.268,3476,5.268,3477,5.268,3478,5.268,3479,5.268,3480,5.268,3481,5.268,3482,5.268,3483,6.591,3484,5.268,3485,5.268,3486,5.268,3487,5.268,3488,5.268,3489,5.268,3490,5.268,3491,5.268,3492,5.268,3493,5.268,3494,5.268,3495,5.268,3496,5.268,3497,5.268,3498,5.268,3499,5.268,3500,5.268,3501,5.268,3502,5.268,3503,5.268,3504,5.268,3505,5.268,3506,5.268,3507,5.268,3508,4.595,3509,5.268,3510,5.268,3511,5.268,3512,5.268,3513,5.268,3514,5.268,3515,5.268,3516,5.268,3517,5.268]],["title/index.html",[33,0.116,3361,2.675,3362,2.675]],["body/index.html",[8,0.145,27,0.012,36,0.679,115,1.469,126,1.887,191,3.04,315,0.011,316,0.011,334,2.745,335,3.607,360,1.954,374,0.797,410,3.977,416,5.094,554,4.197,709,3.308,865,2.431,872,3.867,989,3.699,1010,3.699,1011,3.308,1013,3.308,1017,4.197,1116,5.397,1283,5.094,1354,4.741,1428,5.094,1460,4.603,1561,3.699,1644,3.308,1655,3.49,1766,4.603,1846,3.943,1912,5.094,2187,3.699,2689,5.462,2705,5.094,2707,5.093,2709,4.236,2862,6.125,3091,4.603,3098,5.094,3265,5.094,3288,7.16,3364,6.125,3410,5.534,3456,5.094,3464,6.125,3518,7.021,3519,5.839,3520,7.529,3521,5.839,3522,6.971,3523,5.839,3524,5.839,3525,7.812,3526,5.839,3527,7.021,3528,5.839,3529,5.839,3530,5.094,3531,5.839,3532,6.568,3533,5.839,3534,5.839,3535,5.839,3536,5.094,3537,5.094,3538,7.021,3539,5.839,3540,5.839,3541,5.839,3542,5.094,3543,5.839,3544,7.529,3545,5.839,3546,7.021,3547,7.812,3548,5.094,3549,5.094,3550,5.839,3551,5.839,3552,5.839,3553,5.839,3554,5.839,3555,5.839,3556,5.839,3557,5.839,3558,5.839,3559,5.839,3560,5.839,3561,5.839,3562,5.839,3563,5.839,3564,5.839,3565,5.094,3566,5.839,3567,6.125,3568,5.839,3569,5.839,3570,5.839,3571,5.839,3572,5.094,3573,6.125]],["title/license.html",[3361,2.675,3362,2.675,3574,2.675]],["body/license.html",[0,0.357,4,0.192,8,0.059,19,0.672,27,0.004,31,1.343,35,1.745,36,0.198,42,0.118,44,0.137,49,2.673,50,0.768,57,2.087,58,1.981,62,0.198,65,0.128,68,0.052,77,0.008,78,0.421,100,1.569,115,0.356,123,0.611,128,0.253,132,0.611,141,0.57,144,1.466,151,0.881,154,0.407,156,3.041,159,0.532,173,1.187,191,0.738,192,0.824,193,0.611,210,0.144,245,0.207,315,0.006,316,0.004,330,1.079,334,1.732,335,3.356,340,2.322,341,3.33,344,0.965,345,3.768,352,1.236,353,2.25,356,3.654,359,1.15,361,2.25,364,1.144,367,5.032,377,0.836,385,5.947,386,1.343,388,7.356,391,3.214,393,0.801,394,1.486,401,2.071,407,1.343,410,2.442,424,1.194,426,1.534,452,3.134,455,1.079,497,0.3,527,2.49,529,2.904,530,2.49,532,1.15,533,0.918,554,1.706,561,1.486,573,0.918,615,1.079,665,1.343,698,1.466,699,0.918,702,0.683,709,1.617,710,2.828,753,1.617,761,3.189,763,2.72,768,1.079,780,1.808,785,1.927,788,1.018,821,1.343,838,3.784,853,1.343,859,3.606,860,1.15,872,2.214,874,1.236,876,1.236,879,1.018,883,1.808,901,1.808,906,2.488,914,0.836,926,1.15,927,1.343,986,2.731,988,1.018,995,1.079,1005,0.918,1006,5.094,1007,1.079,1008,3.52,1011,4.161,1012,1.706,1013,2.087,1018,1.808,1021,0.918,1068,2.334,1087,2.334,1090,1.401,1096,2.586,1097,1.985,1137,3.483,1144,2.202,1145,4.063,1147,3.398,1190,1.808,1191,2.071,1194,4.223,1201,3.483,1206,1.486,1240,1.486,1243,1.343,1248,3.214,1261,1.486,1278,1.343,1286,1.486,1287,3.214,1305,1.486,1345,2.488,1354,2.488,1355,1.343,1375,1.343,1412,1.486,1426,5.049,1430,2.49,1436,1.486,1438,1.343,1440,2.49,1444,1.343,1451,1.236,1455,1.15,1608,4.198,1625,2.25,1632,1.15,1634,1.15,1644,4.442,1651,1.236,1655,1.018,1657,2.55,1670,2.904,1736,1.15,1740,4.531,1755,1.486,1756,2.25,1761,2.25,1762,4.531,1763,1.486,1764,4.349,1766,4.094,1808,2.49,1815,2.071,1821,1.486,1827,1.486,1869,1.486,1873,3.784,1894,3.784,1922,1.486,1965,4.897,1982,1.343,1986,1.236,2100,4.094,2104,1.486,2119,4.188,2134,1.486,2164,2.904,2187,2.731,2189,1.486,2271,4.349,2274,1.343,2276,4.562,2306,1.343,2311,1.486,2321,2.49,2330,1.343,2342,2.49,2347,4.188,2350,2.49,2425,1.486,2427,2.49,2468,3.761,2529,4.188,2539,4.094,2540,3.242,2670,3.214,2683,1.236,2689,1.236,2694,1.486,2707,1.236,2709,5.473,2711,1.486,2833,2.49,3012,1.486,3032,2.49,3033,2.25,3068,3.214,3070,2.49,3086,1.486,3091,2.25,3099,4.813,3214,1.486,3238,1.486,3244,1.486,3262,3.761,3271,6.009,3272,5.049,3276,2.49,3295,2.49,3340,1.486,3341,1.486,3345,1.486,3373,1.486,3374,1.486,3375,4.813,3376,3.214,3378,6.652,3381,2.49,3383,1.486,3388,2.49,3393,1.486,3396,1.486,3397,5.049,3399,5.917,3508,1.486,3522,3.761,3530,1.486,3532,5.049,3536,5.569,3537,3.761,3542,4.188,3548,1.486,3549,3.761,3565,3.214,3567,4.188,3572,4.813,3573,3.214,3574,6.666,3575,7.219,3576,1.703,3577,1.703,3578,3.684,3579,7.729,3580,5.787,3581,7.285,3582,5.194,3583,1.703,3584,1.703,3585,4.801,3586,4.801,3587,3.684,3588,6.783,3589,3.684,3590,1.703,3591,1.703,3592,2.854,3593,6.533,3594,5.194,3595,1.703,3596,5.194,3597,1.703,3598,1.703,3599,5.787,3600,2.854,3601,1.703,3602,1.703,3603,6.783,3604,8.099,3605,3.684,3606,6.016,3607,2.854,3608,5.194,3609,1.703,3610,4.311,3611,5.787,3612,2.854,3613,1.703,3614,1.703,3615,3.684,3616,7.219,3617,2.854,3618,4.311,3619,1.703,3620,1.703,3621,2.854,3622,4.311,3623,4.311,3624,2.854,3625,6.533,3626,2.854,3627,2.854,3628,4.311,3629,5.518,3630,1.703,3631,7.788,3632,5.518,3633,1.703,3634,1.703,3635,5.787,3636,2.854,3637,6.384,3638,6.213,3639,4.801,3640,2.854,3641,1.703,3642,1.703,3643,6.889,3644,2.854,3645,1.703,3646,1.703,3647,6.666,3648,3.684,3649,1.703,3650,1.703,3651,1.703,3652,1.703,3653,1.703,3654,1.703,3655,1.703,3656,1.703,3657,1.703,3658,2.854,3659,1.703,3660,1.703,3661,1.703,3662,2.854,3663,3.684,3664,2.854,3665,1.703,3666,1.703,3667,2.854,3668,2.854,3669,1.703,3670,2.854,3671,2.854,3672,1.703,3673,1.703,3674,3.684,3675,3.684,3676,2.854,3677,1.703,3678,1.703,3679,5.194,3680,1.703,3681,1.703,3682,1.703,3683,4.311,3684,1.703,3685,2.854,3686,3.684,3687,1.703,3688,1.703,3689,6.783,3690,4.311,3691,4.801,3692,5.194,3693,3.684,3694,1.703,3695,3.684,3696,7.148,3697,2.854,3698,1.703,3699,1.703,3700,1.703,3701,3.684,3702,1.703,3703,1.703,3704,2.854,3705,2.854,3706,1.703,3707,1.703,3708,4.311,3709,1.703,3710,3.684,3711,2.854,3712,7.99,3713,3.684,3714,6.016,3715,4.311,3716,1.703,3717,2.854,3718,3.684,3719,6.016,3720,6.213,3721,4.311,3722,1.703,3723,2.854,3724,2.854,3725,4.311,3726,1.703,3727,3.684,3728,7.587,3729,2.854,3730,5.787,3731,1.703,3732,3.684,3733,5.787,3734,1.703,3735,6.889,3736,4.311,3737,2.854,3738,5.787,3739,6.384,3740,5.194,3741,1.703,3742,1.703,3743,1.703,3744,5.787,3745,1.703,3746,2.854,3747,1.703,3748,3.684,3749,1.703,3750,3.684,3751,1.703,3752,1.703,3753,1.703,3754,3.684,3755,1.703,3756,1.703,3757,1.703,3758,6.213,3759,1.703,3760,1.703,3761,4.801,3762,3.684,3763,3.684,3764,3.684,3765,1.703,3766,4.801,3767,5.194,3768,1.703,3769,3.684,3770,1.703,3771,1.703,3772,1.703,3773,1.703,3774,1.703,3775,1.703,3776,7.452,3777,1.703,3778,2.854,3779,1.703,3780,1.703,3781,2.854,3782,2.854,3783,1.703,3784,1.703,3785,1.703,3786,2.854,3787,3.684,3788,4.801,3789,1.703,3790,2.854,3791,1.703,3792,5.194,3793,1.703,3794,6.213,3795,5.518,3796,4.311,3797,1.703,3798,4.801,3799,1.703,3800,2.854,3801,1.703,3802,1.703,3803,1.703,3804,1.703,3805,1.703,3806,3.684,3807,3.684,3808,1.703,3809,1.703,3810,2.854,3811,2.854,3812,1.703,3813,6.666,3814,2.854,3815,1.703,3816,1.703,3817,1.703,3818,1.703,3819,1.703,3820,3.684,3821,1.703,3822,1.703,3823,4.801,3824,4.801,3825,1.703,3826,1.703,3827,3.684,3828,1.703,3829,1.703,3830,4.311,3831,1.703,3832,2.854,3833,1.703,3834,1.703,3835,1.703,3836,1.703,3837,1.703,3838,2.854,3839,2.854,3840,1.703,3841,3.684,3842,1.703,3843,1.703,3844,2.854,3845,1.703,3846,1.703,3847,1.703,3848,1.703,3849,2.854,3850,2.854,3851,2.854,3852,6.016,3853,2.854,3854,1.703,3855,1.703,3856,2.854,3857,3.684,3858,3.684,3859,4.311,3860,4.311,3861,4.311,3862,1.703,3863,4.801,3864,1.703,3865,2.854,3866,4.801,3867,2.854,3868,4.311,3869,4.311,3870,2.854,3871,3.684,3872,4.801,3873,1.703,3874,1.703,3875,1.703,3876,3.684,3877,3.684,3878,2.854,3879,1.703,3880,1.703,3881,1.703,3882,1.703,3883,2.854,3884,1.703,3885,1.703,3886,1.703,3887,3.684,3888,2.854,3889,1.703,3890,1.703,3891,1.703,3892,1.703,3893,2.854,3894,2.854,3895,5.194,3896,7.345,3897,3.684,3898,2.854,3899,2.854,3900,2.854,3901,4.311,3902,4.311,3903,2.854,3904,1.703,3905,1.703,3906,1.703,3907,1.703,3908,5.194,3909,2.854,3910,1.703,3911,1.703,3912,1.703,3913,2.854,3914,1.703,3915,2.854,3916,1.703,3917,5.787,3918,1.703,3919,1.703,3920,1.703,3921,1.703,3922,1.703,3923,2.854,3924,1.703,3925,1.703,3926,3.684,3927,4.801,3928,4.311,3929,2.854,3930,1.703,3931,1.703,3932,2.854,3933,1.703,3934,1.703,3935,1.703,3936,2.854,3937,1.703,3938,4.311,3939,1.703,3940,2.854,3941,2.854,3942,1.703,3943,1.703,3944,3.684,3945,1.703,3946,1.703,3947,1.703,3948,1.703,3949,1.703,3950,1.703,3951,1.703,3952,2.854,3953,1.703,3954,3.684,3955,1.703,3956,1.703,3957,1.703,3958,1.703,3959,1.703,3960,1.703,3961,1.703,3962,1.703,3963,1.703,3964,1.703,3965,1.703,3966,1.703,3967,1.703,3968,1.703,3969,5.518,3970,1.703,3971,4.311,3972,1.703,3973,1.703,3974,3.684,3975,1.703,3976,1.703,3977,3.684,3978,1.703,3979,1.703,3980,1.703,3981,1.703,3982,1.703,3983,1.703,3984,1.703,3985,1.703,3986,2.854,3987,1.703,3988,1.703,3989,1.703,3990,1.703,3991,2.854,3992,2.854,3993,1.703,3994,3.684,3995,1.703,3996,1.703,3997,2.854,3998,1.703,3999,2.854,4000,1.703,4001,3.684,4002,5.518,4003,1.703,4004,1.703,4005,2.49,4006,1.703,4007,1.703,4008,1.703,4009,1.703,4010,4.311,4011,1.703,4012,4.801,4013,1.703,4014,1.703,4015,1.703,4016,1.703,4017,1.703,4018,2.854,4019,2.854,4020,2.854,4021,3.684,4022,1.703,4023,2.854,4024,1.703,4025,3.684,4026,1.703,4027,2.854,4028,1.703,4029,2.854,4030,3.684,4031,2.854,4032,1.703,4033,1.703,4034,2.854,4035,7.452,4036,2.854,4037,1.703,4038,4.801,4039,6.213,4040,3.684,4041,1.703,4042,1.703,4043,4.311,4044,1.703,4045,1.703,4046,3.684,4047,2.854,4048,1.703,4049,1.703,4050,1.703,4051,1.703,4052,1.703,4053,1.703,4054,1.703,4055,4.311,4056,2.854,4057,1.703,4058,1.703,4059,3.684,4060,1.703,4061,2.854,4062,3.684,4063,2.854,4064,1.703,4065,1.703,4066,1.703,4067,2.854,4068,3.684,4069,1.703,4070,1.703,4071,1.703,4072,2.854,4073,1.703,4074,2.854,4075,1.703,4076,1.703,4077,1.703,4078,1.703,4079,3.684,4080,2.854,4081,1.703,4082,4.311,4083,1.703,4084,3.684,4085,1.703,4086,1.703,4087,2.854,4088,1.703,4089,1.703,4090,1.703,4091,3.684,4092,2.854,4093,2.854,4094,1.703,4095,2.854,4096,3.684,4097,4.311,4098,1.703,4099,1.703,4100,2.854,4101,1.703,4102,3.684,4103,1.703,4104,1.703,4105,1.703,4106,1.703,4107,1.703,4108,2.854,4109,2.854,4110,1.703,4111,2.854,4112,1.703,4113,1.703,4114,2.854,4115,2.854,4116,1.703,4117,2.854,4118,1.703,4119,1.703,4120,1.703,4121,1.703,4122,3.684,4123,1.703,4124,1.703,4125,1.703,4126,1.703,4127,1.703,4128,4.311,4129,2.854,4130,3.684,4131,1.703,4132,1.703,4133,1.703,4134,1.703,4135,2.854,4136,1.703,4137,1.703,4138,1.703,4139,1.703,4140,1.703,4141,1.703,4142,1.703,4143,1.703,4144,1.703,4145,1.703,4146,1.703,4147,1.703,4148,1.703,4149,1.703,4150,4.311,4151,1.703,4152,2.854,4153,1.703,4154,1.703,4155,1.703,4156,1.703,4157,1.703,4158,1.703,4159,1.703,4160,1.703,4161,1.703,4162,3.684,4163,1.703,4164,1.703,4165,1.703,4166,2.854,4167,1.703,4168,1.703,4169,1.703,4170,1.703,4171,1.703,4172,1.703,4173,2.854,4174,3.684,4175,2.854,4176,1.703,4177,1.703,4178,1.703,4179,1.703,4180,3.684,4181,2.854,4182,1.703,4183,2.854,4184,2.854,4185,2.854,4186,1.703,4187,1.703,4188,1.703,4189,1.703,4190,2.854,4191,1.703,4192,1.703,4193,1.703,4194,2.854,4195,1.703,4196,3.684,4197,1.703,4198,1.703,4199,1.703,4200,1.703,4201,1.703,4202,1.703,4203,1.703,4204,1.703,4205,1.703,4206,1.703,4207,2.854,4208,1.703,4209,1.703,4210,1.703,4211,1.703,4212,1.703,4213,1.703,4214,1.703,4215,1.703,4216,1.703,4217,1.703,4218,1.703,4219,1.703,4220,1.703,4221,1.703,4222,1.703,4223,3.684,4224,2.854,4225,1.703,4226,1.703,4227,1.703,4228,1.703,4229,2.854,4230,1.703,4231,1.703,4232,1.703,4233,1.703,4234,1.703,4235,1.703,4236,2.854,4237,1.703,4238,1.703,4239,1.703,4240,1.703,4241,1.703,4242,1.703,4243,1.703,4244,1.703,4245,1.703,4246,1.703,4247,1.703,4248,1.703,4249,1.703,4250,1.703,4251,1.703,4252,1.703,4253,1.703,4254,1.703]],["title/modules.html",[1024,3.328]],["body/modules.html",[27,0.012,315,0.012,316,0.012,1024,4.02]],["title/overview.html",[4255,4.856]],["body/overview.html",[2,0.508,27,0.012,315,0.012,316,0.012,426,2.783,522,3.142,906,4.514,1632,4.514,4255,5.831,4256,6.685]],["title/properties.html",[34,0.185,3409,2.96]],["body/properties.html",[27,0.013,34,0.25,315,0.012,316,0.012,526,4.47,1354,4.47,2709,4.802,3574,5.956,4005,5.774,4257,6.619,4258,6.619,4259,6.619,4260,6.619,4261,6.619]],["title/miscellaneous/typealiases.html",[4262,2.96,4263,4.898]],["body/miscellaneous/typealiases.html",[27,0.011,33,0.222,42,0.339,315,0.011,316,0.011,523,4.019,859,3.178,975,5.454,1025,4.46,4262,5.648,4264,6.474,4265,7.461,4266,8.077,4267,8.212,4268,7.461,4269,7.461,4270,7.461,4271,7.461,4272,7.461,4273,6.474,4274,6.474]]],"invertedIndex":[["",{"_index":27,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{},"dependencies.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{}}}],["0",{"_index":24,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["0\"]).tostring().split(\",\")[0].trim",{"_index":1533,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["0.05",{"_index":2648,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["0.06",{"_index":2650,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["0.07",{"_index":2944,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["0.11.4",{"_index":3517,"title":{},"body":{"dependencies.html":{}}}],["0.13.3",{"_index":3488,"title":{},"body":{"dependencies.html":{}}}],["0.15.3",{"_index":3494,"title":{},"body":{"dependencies.html":{}}}],["0.15.4",{"_index":3468,"title":{},"body":{"dependencies.html":{}}}],["0.16.17",{"_index":4257,"title":{},"body":{"properties.html":{}}}],["0.3",{"_index":1999,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["0.355",{"_index":2643,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["0.3s",{"_index":2749,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["0.4s",{"_index":166,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["0.5",{"_index":1802,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["0.6",{"_index":1124,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["0.61",{"_index":2642,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["0.8",{"_index":2759,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["0.855",{"_index":2649,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["0.9",{"_index":2755,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["0.95",{"_index":1793,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["00:00",{"_index":2098,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["01",{"_index":3096,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["03",{"_index":784,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["04:00",{"_index":567,"title":{},"body":{"classes/BlankDate.html":{}}}],["05t12:57:00.000",{"_index":566,"title":{},"body":{"classes/BlankDate.html":{}}}],["07",{"_index":868,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["08",{"_index":867,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["09",{"_index":565,"title":{},"body":{"classes/BlankDate.html":{}}}],["0].trim",{"_index":947,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["0d3f60",{"_index":1385,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["0f8ab2",{"_index":2459,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["0px",{"_index":2106,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["1",{"_index":173,"title":{"interfaces/IButton-1.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["1\"]).tostring().split(\",\")[0].trim",{"_index":1534,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["1).then",{"_index":1459,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["1.0.2",{"_index":3486,"title":{},"body":{"dependencies.html":{}}}],["1.1.9",{"_index":3460,"title":{},"body":{"dependencies.html":{}}}],["1.10.0",{"_index":3457,"title":{},"body":{"dependencies.html":{}}}],["1.14.10",{"_index":3479,"title":{},"body":{"dependencies.html":{}}}],["1.2.0",{"_index":3422,"title":{},"body":{"dependencies.html":{}}}],["1.2.3",{"_index":3483,"title":{},"body":{"dependencies.html":{}}}],["1.25rem",{"_index":2723,"title":{},"body":{"components/TmplRadioButtonGridComponent.html":{}}}],["1.3.0",{"_index":3420,"title":{},"body":{"dependencies.html":{}}}],["1.3.3",{"_index":3450,"title":{},"body":{"dependencies.html":{}}}],["1.3rem",{"_index":1927,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["1.5.1",{"_index":3504,"title":{},"body":{"dependencies.html":{}}}],["1.6.19",{"_index":3492,"title":{},"body":{"dependencies.html":{}}}],["1.8.3",{"_index":3498,"title":{},"body":{"dependencies.html":{}}}],["10",{"_index":1345,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"license.html":{}}}],["100",{"_index":99,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["1000",{"_index":574,"title":{},"body":{"classes/BlankDate.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["100vh",{"_index":1122,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["100vw",{"_index":1377,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["10px",{"_index":1923,"title":{},"body":{"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["10rem",{"_index":1669,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["11",{"_index":3832,"title":{},"body":{"license.html":{}}}],["115px",{"_index":2753,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["11px",{"_index":2458,"title":{},"body":{"components/TmplIconBannerComponent.html":{},"components/TmplSliderComponent.html":{}}}],["11rem",{"_index":1668,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["12",{"_index":1642,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["12px",{"_index":1924,"title":{},"body":{"components/TmplAccordionComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["12rem",{"_index":1662,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["13",{"_index":1632,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{},"overview.html":{}}}],["13.15.3",{"_index":3506,"title":{},"body":{"dependencies.html":{}}}],["13px",{"_index":1684,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["14.6.3",{"_index":3502,"title":{},"body":{"dependencies.html":{}}}],["15",{"_index":883,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTimerComponent.html":{},"license.html":{}}}],["15.0.4",{"_index":3411,"title":{},"body":{"dependencies.html":{}}}],["1500",{"_index":1985,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["150px",{"_index":2747,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["15px",{"_index":688,"title":{},"body":{"components/FormComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["16",{"_index":785,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["16.2.16",{"_index":3500,"title":{},"body":{"dependencies.html":{}}}],["165px",{"_index":2946,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["16kb",{"_index":1040,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["16px",{"_index":713,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["180px",{"_index":2547,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["18px",{"_index":2538,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["19",{"_index":1643,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["1996",{"_index":3837,"title":{},"body":{"license.html":{}}}],["19px",{"_index":2454,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["1].trim",{"_index":948,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["1em",{"_index":1382,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["1fr",{"_index":760,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["1px",{"_index":117,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/WorkshopsComponent.html":{}}}],["1rem",{"_index":1739,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplAccordionComponent.html":{}}}],["1s",{"_index":399,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["2",{"_index":156,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["2\"]).tostring().split(\",\")[0].trim",{"_index":1536,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["2.0.0",{"_index":3515,"title":{},"body":{"dependencies.html":{}}}],["2.0.1",{"_index":3438,"title":{},"body":{"dependencies.html":{}}}],["2.0.2",{"_index":3511,"title":{},"body":{"dependencies.html":{}}}],["2.1.2",{"_index":3465,"title":{},"body":{"dependencies.html":{}}}],["2.13.1",{"_index":3455,"title":{},"body":{"dependencies.html":{}}}],["2.2.1",{"_index":3487,"title":{},"body":{"dependencies.html":{}}}],["2.22.1",{"_index":3471,"title":{},"body":{"dependencies.html":{}}}],["2.3.6",{"_index":3481,"title":{},"body":{"dependencies.html":{}}}],["20",{"_index":1634,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"license.html":{}}}],["200",{"_index":1672,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTileComponent.html":{}}}],["2007",{"_index":3578,"title":{},"body":{"license.html":{}}}],["200kb",{"_index":1039,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["200px",{"_index":706,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["2012",{"_index":564,"title":{},"body":{"classes/BlankDate.html":{}}}],["2021",{"_index":866,"title":{},"body":{"interfaces/IButton-1.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["2022",{"_index":3095,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["2023",{"_index":783,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["20px",{"_index":620,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["21",{"_index":3088,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["21px",{"_index":125,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["22px",{"_index":1133,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["23px",{"_index":2110,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["24px",{"_index":1135,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["25",{"_index":2870,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["250px",{"_index":2714,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["255",{"_index":1792,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["25px",{"_index":683,"title":{},"body":{"components/FormComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["27px",{"_index":3223,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["27vw",{"_index":2761,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["28",{"_index":4146,"title":{},"body":{"license.html":{}}}],["28px",{"_index":2633,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["29",{"_index":3576,"title":{},"body":{"license.html":{}}}],["2px",{"_index":1384,"title":{},"body":{"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["2rem",{"_index":1126,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["2s",{"_index":2534,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["3",{"_index":838,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["3\"]).tostring().split(\",\")[0].trim",{"_index":1537,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["3.0.0",{"_index":3463,"title":{},"body":{"dependencies.html":{}}}],["3.0.3",{"_index":3473,"title":{},"body":{"dependencies.html":{}}}],["3.1.1",{"_index":3448,"title":{},"body":{"dependencies.html":{}}}],["3.2.1",{"_index":3490,"title":{},"body":{"dependencies.html":{}}}],["3.27.1",{"_index":3469,"title":{},"body":{"dependencies.html":{}}}],["3.7.0",{"_index":3491,"title":{},"body":{"dependencies.html":{}}}],["30",{"_index":455,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"license.html":{}}}],["300px",{"_index":1996,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["30px",{"_index":1127,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["30vh",{"_index":3019,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["319px",{"_index":2760,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["320px",{"_index":185,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["32px",{"_index":1641,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["3339",{"_index":552,"title":{},"body":{"classes/BlankDate.html":{}}}],["35px",{"_index":120,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["36px",{"_index":2949,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["373px",{"_index":2451,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["375px",{"_index":1667,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTitleComponent.html":{}}}],["39px",{"_index":2453,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["3px",{"_index":2111,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["3rd",{"_index":3535,"title":{},"body":{"index.html":{}}}],["3s",{"_index":2416,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["4",{"_index":2670,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{},"license.html":{}}}],["4.1.0",{"_index":3429,"title":{},"body":{"dependencies.html":{}}}],["4.1.1",{"_index":3427,"title":{},"body":{"dependencies.html":{}}}],["4.1.2",{"_index":3435,"title":{},"body":{"dependencies.html":{}}}],["4.1.4",{"_index":3432,"title":{},"body":{"dependencies.html":{}}}],["4.1.5",{"_index":3509,"title":{},"body":{"dependencies.html":{}}}],["4.5rem",{"_index":3104,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["4.6.0",{"_index":3425,"title":{},"body":{"dependencies.html":{}}}],["40",{"_index":2645,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["400",{"_index":1673,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["400px",{"_index":2229,"title":{},"body":{"components/TmplComboBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["40px",{"_index":1134,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplParentPointCounterComponent.html":{}}}],["42px",{"_index":3208,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["43",{"_index":2646,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["44px",{"_index":2748,"title":{},"body":{"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["45",{"_index":2951,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["45px",{"_index":3225,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["47px",{"_index":2632,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["48px",{"_index":2548,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["4mb",{"_index":1042,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["4px",{"_index":1638,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["5",{"_index":3890,"title":{},"body":{"license.html":{}}}],["5.36.0",{"_index":3441,"title":{},"body":{"dependencies.html":{}}}],["5.7.14",{"_index":3496,"title":{},"body":{"dependencies.html":{}}}],["50",{"_index":515,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["500",{"_index":618,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{}}}],["50px",{"_index":631,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplTileComponent.html":{}}}],["53",{"_index":2638,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["54",{"_index":4256,"title":{},"body":{"overview.html":{}}}],["55px",{"_index":617,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["56px",{"_index":2426,"title":{},"body":{"components/TmplDrawerComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["5mb",{"_index":1041,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["5px",{"_index":630,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["5rem",{"_index":1666,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["6",{"_index":934,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{},"components/TmplTileComponent.html":{}}}],["6.1.0",{"_index":3499,"title":{},"body":{"dependencies.html":{}}}],["6.4.1",{"_index":3446,"title":{},"body":{"dependencies.html":{}}}],["60",{"_index":573,"title":{},"body":{"classes/BlankDate.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplNumberComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"license.html":{}}}],["600",{"_index":1674,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplDrawerComponent.html":{}}}],["600px",{"_index":2527,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["60px",{"_index":1129,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplTileComponent.html":{}}}],["6b",{"_index":3914,"title":{},"body":{"license.html":{}}}],["6d",{"_index":3934,"title":{},"body":{"license.html":{}}}],["6px",{"_index":2457,"title":{},"body":{"components/TmplIconBannerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["6rem",{"_index":3103,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["7",{"_index":906,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"license.html":{},"overview.html":{}}}],["7.0.4",{"_index":3501,"title":{},"body":{"dependencies.html":{}}}],["7.21.1",{"_index":3453,"title":{},"body":{"dependencies.html":{}}}],["7.3.0",{"_index":3415,"title":{},"body":{"dependencies.html":{}}}],["7.8.0",{"_index":3507,"title":{},"body":{"dependencies.html":{}}}],["70",{"_index":2652,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["700",{"_index":2455,"title":{},"body":{"components/TmplIconBannerComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{}}}],["70px",{"_index":2452,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["71px",{"_index":687,"title":{},"body":{"components/FormComponent.html":{}}}],["73px",{"_index":2456,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["75",{"_index":1681,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["7px",{"_index":1383,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplSliderComponent.html":{}}}],["7rem",{"_index":3102,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["8",{"_index":2809,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["8.4.4",{"_index":3512,"title":{},"body":{"dependencies.html":{}}}],["80",{"_index":2488,"title":{},"body":{"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTileComponent.html":{}}}],["80px",{"_index":1649,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["85",{"_index":1997,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["8px",{"_index":1798,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["8rem",{"_index":3101,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["9.8.1",{"_index":3484,"title":{},"body":{"dependencies.html":{}}}],["90",{"_index":2550,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["90vh",{"_index":622,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["95",{"_index":2863,"title":{},"body":{"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["_container",{"_index":2746,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["_dynamicfields",{"_index":1818,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["_getprops",{"_index":3240,"title":{},"body":{"classes/Widget.html":{}}}],["_getsiblingelements(element",{"_index":1182,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["_in",{"_index":1185,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["_init",{"_index":3241,"title":{},"body":{"classes/Widget.html":{}}}],["_isdismissed",{"_index":1967,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["_list",{"_index":1446,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["_props",{"_index":3239,"title":{},"body":{"classes/Widget.html":{}}}],["_resolvewhentrue",{"_index":1167,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["_resolvewhentrue(fn",{"_index":1174,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["_row",{"_index":319,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["_row._debug_name",{"_index":1804,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["_row.disabled",{"_index":28,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["_row.name",{"_index":1805,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["_row.parameter_list.copied_text",{"_index":1731,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["_row.parameter_list.copy_text",{"_index":1730,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["_row.parameter_list?.copy_text",{"_index":1733,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["_row.type",{"_index":1803,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["_row.value",{"_index":1725,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["_row?.parameter_list.copied_text",{"_index":1732,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["_row?.value",{"_index":1729,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["_row[key",{"_index":1806,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["_storage",{"_index":1293,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["_value",{"_index":1521,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["_wait(ms",{"_index":1993,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["a.action_id",{"_index":2315,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["a.args",{"_index":2316,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["a.trigger",{"_index":1780,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["ability",{"_index":3976,"title":{},"body":{"license.html":{}}}],["above",{"_index":4030,"title":{},"body":{"license.html":{}}}],["absence",{"_index":3862,"title":{},"body":{"license.html":{}}}],["absolute",{"_index":123,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["absolutely",{"_index":4235,"title":{},"body":{"license.html":{}}}],["abuse",{"_index":3661,"title":{},"body":{"license.html":{}}}],["accept",{"_index":4056,"title":{},"body":{"license.html":{}}}],["acceptance",{"_index":4055,"title":{},"body":{"license.html":{}}}],["access",{"_index":1766,"title":{},"body":{"components/TemplateBaseComponent.html":{},"index.html":{},"license.html":{}}}],["accessible",{"_index":2425,"title":{},"body":{"components/TmplDrawerComponent.html":{},"license.html":{}}}],["accessors",{"_index":589,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["accompanied",{"_index":3897,"title":{},"body":{"license.html":{}}}],["accompanies",{"_index":4218,"title":{},"body":{"license.html":{}}}],["accord",{"_index":3861,"title":{},"body":{"license.html":{}}}],["according",{"_index":561,"title":{},"body":{"classes/BlankDate.html":{},"license.html":{}}}],["accordion",{"_index":18,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["accordion.component.html",{"_index":1909,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["accordion.component.scss",{"_index":1908,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["accordion.scss",{"_index":75,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["accordion.scss,../tmpl",{"_index":21,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["accordion:first",{"_index":1925,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["accordion_section",{"_index":1773,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["accordionsectioncomponent",{"_index":1,"title":{"components/AccordionSectionComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["account",{"_index":1945,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["achieve",{"_index":4222,"title":{},"body":{"license.html":{}}}],["acknowledges",{"_index":3804,"title":{},"body":{"license.html":{}}}],["acquired",{"_index":4100,"title":{},"body":{"license.html":{}}}],["action",{"_index":351,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{}}}],["action_id",{"_index":668,"title":{},"body":{"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{}}}],["action_list",{"_index":1776,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{}}}],["action_list.filter((a",{"_index":1779,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["actions",{"_index":344,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"license.html":{}}}],["actions.filter((action",{"_index":1891,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["actionsfortrigger",{"_index":1778,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["activated",{"_index":1636,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["active",{"_index":1372,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["activities",{"_index":3727,"title":{},"body":{"license.html":{}}}],["activity",{"_index":4142,"title":{},"body":{"license.html":{}}}],["actual",{"_index":4120,"title":{},"body":{"license.html":{}}}],["actual_component",{"_index":314,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["actually",{"_index":988,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{},"license.html":{}}}],["adapt",{"_index":3706,"title":{},"body":{"license.html":{}}}],["adapted",{"_index":765,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["add",{"_index":340,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["added",{"_index":3068,"title":{},"body":{"components/TmplTileComponent.html":{},"license.html":{}}}],["additional",{"_index":341,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{},"license.html":{}}}],["addparentactionsfilter",{"_index":1889,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["address",{"_index":4170,"title":{},"body":{"license.html":{}}}],["addressed",{"_index":3703,"title":{},"body":{"license.html":{}}}],["adds",{"_index":1294,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["adhere",{"_index":3384,"title":{},"body":{"contributing.html":{}}}],["adopted",{"_index":3835,"title":{},"body":{"license.html":{}}}],["advanced",{"_index":232,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["adversely",{"_index":3981,"title":{},"body":{"license.html":{}}}],["advised",{"_index":4208,"title":{},"body":{"license.html":{}}}],["affect",{"_index":3344,"title":{},"body":{"classes/Widget.html":{}}}],["affects",{"_index":3982,"title":{},"body":{"license.html":{}}}],["affero",{"_index":4162,"title":{},"body":{"license.html":{}}}],["affirmed",{"_index":4083,"title":{},"body":{"license.html":{}}}],["affirms",{"_index":3801,"title":{},"body":{"license.html":{}}}],["afterviewinit",{"_index":1577,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["again",{"_index":1989,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["against",{"_index":3851,"title":{},"body":{"license.html":{}}}],["aggregate",{"_index":1087,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["agree",{"_index":3374,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["agreed",{"_index":4195,"title":{},"body":{"license.html":{}}}],["agreement",{"_index":3376,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["aim",{"_index":3657,"title":{},"body":{"license.html":{}}}],["aimed",{"_index":1280,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["alert",{"_index":1942,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["aliases",{"_index":4264,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["align",{"_index":133,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["aligned",{"_index":2139,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["alignment",{"_index":2142,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["aligns",{"_index":136,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["alleging",{"_index":4090,"title":{},"body":{"license.html":{}}}],["allow",{"_index":879,"title":{},"body":{"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["allowed",{"_index":3589,"title":{},"body":{"license.html":{}}}],["along",{"_index":3863,"title":{},"body":{"license.html":{}}}],["already",{"_index":1986,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"license.html":{}}}],["alternative",{"_index":1651,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTitleComponent.html":{},"license.html":{}}}],["alternatively",{"_index":2339,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["although",{"_index":3653,"title":{},"body":{"license.html":{}}}],["always",{"_index":416,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"index.html":{}}}],["ancestor",{"_index":1216,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["ancestors",{"_index":1203,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["ancestors.unshift(parent",{"_index":1212,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["ancillary",{"_index":4057,"title":{},"body":{"license.html":{}}}],["and/or",{"_index":3639,"title":{},"body":{"license.html":{}}}],["angular",{"_index":744,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["angular.json",{"_index":2690,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["angular/animations",{"_index":380,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"dependencies.html":{}}}],["angular/common",{"_index":3412,"title":{},"body":{"dependencies.html":{}}}],["angular/core",{"_index":70,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"dependencies.html":{}}}],["angular/elements",{"_index":3413,"title":{},"body":{"dependencies.html":{}}}],["angular/fire",{"_index":3414,"title":{},"body":{"dependencies.html":{}}}],["angular/forms",{"_index":438,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"dependencies.html":{}}}],["angular/platform",{"_index":1845,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{},"dependencies.html":{}}}],["angular/router",{"_index":3416,"title":{},"body":{"dependencies.html":{}}}],["animate",{"_index":376,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["animate(\"0.3s",{"_index":405,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["animate(\"1s",{"_index":403,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["animated",{"_index":205,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["animatedsectioncomponent",{"_index":204,"title":{"components/AnimatedSectionComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["animatedsectiongroupcomponent",{"_index":206,"title":{"components/AnimatedSectionGroupComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["animation",{"_index":1983,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["animation'},{'name",{"_index":263,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["animation.ts",{"_index":2471,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["animation.ts:25",{"_index":2476,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["animation.ts:26",{"_index":2473,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["animation.ts:32",{"_index":2474,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["animationoptions",{"_index":2475,"title":{},"body":{"components/TmplLottieAnimation.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["animations",{"_index":382,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["animcelebrationoptions",{"_index":2556,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["animoptions",{"_index":2472,"title":{},"body":{"components/TmplLottieAnimation.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["answer",{"_index":500,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["answer.includes(avalue",{"_index":2222,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["answer_list",{"_index":463,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["answer_list.map((item",{"_index":878,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["answer_placeholder",{"_index":475,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["answerbody",{"_index":425,"title":{"interfaces/AnswerBody.html":{}},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["answerlist",{"_index":770,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["answerlist.constructor",{"_index":774,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["answerlist.map",{"_index":776,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["answers",{"_index":484,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["answers.push(obj",{"_index":496,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["answers_list",{"_index":485,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["answers_list.map((item",{"_index":486,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["anti",{"_index":3822,"title":{},"body":{"license.html":{}}}],["any).classlist.contains(obj.classname",{"_index":1327,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["any).tostring",{"_index":2093,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["anyone",{"_index":3869,"title":{},"body":{"license.html":{}}}],["anything",{"_index":3715,"title":{},"body":{"license.html":{}}}],["api",{"_index":3337,"title":{},"body":{"classes/Widget.html":{}}}],["app",{"_index":1116,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"contributing.html":{},"dependencies.html":{},"index.html":{}}}],["appdataservice",{"_index":2964,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["appearance",{"_index":3326,"title":{},"body":{"classes/Widget.html":{}}}],["appearances",{"_index":3260,"title":{},"body":{"classes/Widget.html":{}}}],["appeardelayed",{"_index":2533,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["applicable",{"_index":3719,"title":{},"body":{"license.html":{}}}],["applications",{"_index":4251,"title":{},"body":{"license.html":{}}}],["applied",{"_index":359,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDrawerComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["applies",{"_index":1625,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"license.html":{}}}],["apply",{"_index":356,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"license.html":{}}}],["appropriate",{"_index":3738,"title":{},"body":{"license.html":{}}}],["appropriately",{"_index":3855,"title":{},"body":{"license.html":{}}}],["approval",{"_index":3398,"title":{},"body":{"contributing.html":{}}}],["approximates",{"_index":4214,"title":{},"body":{"license.html":{}}}],["area",{"_index":3012,"title":{},"body":{"components/TmplTextAreaComponent.html":{},"license.html":{}}}],["area'},{'name",{"_index":299,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["area.component.html",{"_index":3014,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area.component.scss",{"_index":3013,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area.component.ts",{"_index":3011,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area.component.ts:15",{"_index":3015,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area.component.ts:25",{"_index":3016,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area.component.ts:29",{"_index":3018,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["area/text",{"_index":3010,"title":{},"body":{"components/TmplTextAreaComponent.html":{}}}],["args",{"_index":671,"title":{},"body":{"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["args[0",{"_index":1457,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["arguments",{"_index":2571,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["arise",{"_index":3669,"title":{},"body":{"license.html":{}}}],["arising",{"_index":4199,"title":{},"body":{"license.html":{}}}],["around",{"_index":2751,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["arrange",{"_index":4117,"title":{},"body":{"license.html":{}}}],["arrangement",{"_index":4130,"title":{},"body":{"license.html":{}}}],["array",{"_index":718,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{}}}],["array.isarray(row.value",{"_index":2345,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["array.isarray(row?.value",{"_index":1448,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["arrayofbtn",{"_index":823,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["arrayofbtn.foreach((item",{"_index":893,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["arrows",{"_index":2524,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["article",{"_index":3831,"title":{},"body":{"license.html":{}}}],["asking",{"_index":3620,"title":{},"body":{"license.html":{}}}],["assert",{"_index":3634,"title":{},"body":{"license.html":{}}}],["asset",{"_index":994,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplButtonComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["asset.service",{"_index":982,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["assets",{"_index":2689,"title":{},"body":{"components/TmplPdfComponent.html":{},"components/TmplTileComponent.html":{},"index.html":{},"license.html":{}}}],["assets/comp",{"_index":2692,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["assign",{"_index":936,"title":{},"body":{"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNumberComponent.html":{}}}],["assigned",{"_index":1445,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["associated",{"_index":3783,"title":{},"body":{"license.html":{}}}],["assume",{"_index":1438,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplSliderComponent.html":{},"license.html":{}}}],["assumption",{"_index":4217,"title":{},"body":{"license.html":{}}}],["assumptions",{"_index":4020,"title":{},"body":{"license.html":{}}}],["assures",{"_index":3687,"title":{},"body":{"license.html":{}}}],["aswell",{"_index":3377,"title":{},"body":{"contributing.html":{}}}],["async",{"_index":413,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["asynchronously",{"_index":3311,"title":{},"body":{"classes/Widget.html":{}}}],["attach",{"_index":4224,"title":{},"body":{"license.html":{}}}],["attempt",{"_index":4033,"title":{},"body":{"license.html":{}}}],["attempting",{"_index":1988,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["attributed",{"_index":3649,"title":{},"body":{"license.html":{}}}],["attributeoldvalue",{"_index":1334,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["attributes",{"_index":1321,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["attributions",{"_index":4006,"title":{},"body":{"license.html":{}}}],["audio",{"_index":2003,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["audio'},{'name",{"_index":238,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["audio.component.html",{"_index":2005,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["audio.component.scss",{"_index":2004,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["audioplayer",{"_index":1501,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["audioservice",{"_index":1499,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["auth",{"_index":3462,"title":{},"body":{"dependencies.html":{}}}],["authentication",{"_index":3556,"title":{},"body":{"index.html":{}}}],["author",{"_index":4005,"title":{},"body":{"license.html":{},"properties.html":{}}}],["authoring",{"_index":723,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["authorization",{"_index":3962,"title":{},"body":{"license.html":{}}}],["authorized",{"_index":3998,"title":{},"body":{"license.html":{}}}],["authorizes",{"_index":4095,"title":{},"body":{"license.html":{}}}],["authorizing",{"_index":4134,"title":{},"body":{"license.html":{}}}],["authors",{"_index":3572,"title":{},"body":{"index.html":{},"license.html":{}}}],["auto",{"_index":621,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{}}}],["automatic",{"_index":4065,"title":{},"body":{"license.html":{}}}],["automatically",{"_index":3262,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["autoplay",{"_index":2604,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["autosave",{"_index":1062,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["available",{"_index":710,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TemplateBaseComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"license.html":{}}}],["avalue",{"_index":2208,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["avoid",{"_index":1375,"title":{},"body":{"components/NavGroupComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["await",{"_index":513,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["away",{"_index":3598,"title":{},"body":{"license.html":{}}}],["b",{"_index":3767,"title":{},"body":{"license.html":{}}}],["b4b7b7",{"_index":3210,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["back",{"_index":1405,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["backdrop",{"_index":1121,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["backdrop[data",{"_index":1125,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["background",{"_index":102,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["badge",{"_index":2952,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["banner",{"_index":2441,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner'},{'name",{"_index":256,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["banner.component.html",{"_index":2443,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.scss",{"_index":2442,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts",{"_index":2440,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts:15",{"_index":2447,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts:16",{"_index":2449,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts:17",{"_index":2448,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts:18",{"_index":2445,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner.component.ts:27",{"_index":2446,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["banner/icon",{"_index":2439,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["bar",{"_index":799,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplToggleBarComponent.html":{},"dependencies.html":{}}}],["bar'},{'name",{"_index":266,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["bar.component.html",{"_index":800,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.scss",{"_index":801,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts",{"_index":796,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:16",{"_index":2969,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:17",{"_index":2968,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:18",{"_index":2966,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:19",{"_index":2486,"title":{},"body":{"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:20",{"_index":2967,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:21",{"_index":2971,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:22",{"_index":2970,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:23",{"_index":2978,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:24",{"_index":2977,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:25",{"_index":2485,"title":{},"body":{"components/TmplNavigationBarComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:41",{"_index":2973,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:57",{"_index":2980,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:61",{"_index":2972,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.component.ts:93",{"_index":2976,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar.scss",{"_index":3184,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts",{"_index":3183,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:30",{"_index":3195,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:31",{"_index":3199,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:32",{"_index":3196,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:33",{"_index":3197,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:34",{"_index":3198,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:44",{"_index":3191,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar.ts:50",{"_index":3189,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["bar/navigation",{"_index":795,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["bar/task",{"_index":2954,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["bar/toggle",{"_index":3182,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["base",{"_index":74,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["based",{"_index":1740,"title":{},"body":{"components/SelectTextComponent.html":{},"license.html":{}}}],["baseline",{"_index":3227,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["basic",{"_index":3238,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["before",{"_index":409,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["behalf",{"_index":3815,"title":{},"body":{"license.html":{}}}],["behave",{"_index":3071,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["behavior",{"_index":538,"title":{},"body":{"classes/BlankDate.html":{}}}],["behaviour",{"_index":886,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{}}}],["behind",{"_index":2429,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["being",{"_index":3932,"title":{},"body":{"license.html":{}}}],["believe",{"_index":4126,"title":{},"body":{"license.html":{}}}],["below",{"_index":1021,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["benefit",{"_index":4119,"title":{},"body":{"license.html":{}}}],["best",{"_index":4221,"title":{},"body":{"license.html":{}}}],["beta.10",{"_index":3477,"title":{},"body":{"dependencies.html":{}}}],["beta.11",{"_index":3475,"title":{},"body":{"dependencies.html":{}}}],["better",{"_index":389,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["between",{"_index":132,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["beyond",{"_index":3886,"title":{},"body":{"license.html":{}}}],["bezier(0.215",{"_index":2641,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["bezier(0.755",{"_index":2647,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["bgcolor",{"_index":2371,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["binary",{"_index":3527,"title":{},"body":{"index.html":{}}}],["binding",{"_index":1043,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["bindings",{"_index":2521,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["blank",{"_index":3560,"title":{},"body":{"index.html":{}}}],["blankdate",{"_index":521,"title":{"classes/BlankDate.html":{}},"body":{"classes/BlankDate.html":{}}}],["blob",{"_index":3458,"title":{},"body":{"dependencies.html":{}}}],["block",{"_index":408,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{}}}],["body",{"_index":3757,"title":{},"body":{"license.html":{}}}],["bold",{"_index":183,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["boolean",{"_index":63,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{}}}],["boolean|{touch",{"_index":3301,"title":{},"body":{"classes/Widget.html":{}}}],["bootstrap",{"_index":1028,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["border",{"_index":147,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["borders",{"_index":3402,"title":{},"body":{"contributing.html":{}}}],["borderstyle",{"_index":961,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["both",{"_index":3644,"title":{},"body":{"license.html":{}}}],["bottom",{"_index":143,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["bounce",{"_index":2635,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["bound",{"_index":1089,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["box",{"_index":210,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["box'},{'name",{"_index":234,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["box.component.html",{"_index":1933,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.scss",{"_index":1932,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts",{"_index":1931,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:12",{"_index":1936,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["box.component.ts:13",{"_index":1939,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["box.component.ts:14",{"_index":1938,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["box.component.ts:15",{"_index":1935,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:16",{"_index":2236,"title":{},"body":{"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:17",{"_index":2235,"title":{},"body":{"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:18",{"_index":2234,"title":{},"body":{"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:19",{"_index":2233,"title":{},"body":{"components/TmplDashedBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:20",{"_index":3021,"title":{},"body":{"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:24",{"_index":2203,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:25",{"_index":2211,"title":{},"body":{"components/TmplComboBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:26",{"_index":1937,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:27",{"_index":2212,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:28",{"_index":2213,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:29",{"_index":2210,"title":{},"body":{"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["box.component.ts:30",{"_index":2202,"title":{},"body":{"components/TmplComboBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["box.component.ts:45",{"_index":2204,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:55",{"_index":2207,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box.component.ts:68",{"_index":2209,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["box/advanced",{"_index":1930,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["box/combo",{"_index":428,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["box/dashed",{"_index":2231,"title":{},"body":{"components/TmplDashedBoxComponent.html":{}}}],["box/text",{"_index":3020,"title":{},"body":{"components/TmplTextBoxComponent.html":{}}}],["br",{"_index":3169,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["branding",{"_index":3395,"title":{},"body":{"contributing.html":{}}}],["break",{"_index":903,"title":{},"body":{"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/TmplRadioGroupComponent.html":{}}}],["breakpoints",{"_index":2525,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["brightness(55",{"_index":1623,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["browser",{"_index":1846,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplPdfComponent.html":{},"dependencies.html":{},"index.html":{}}}],["btn",{"_index":1665,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["btn_both",{"_index":896,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["btn_image",{"_index":897,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["btn_square",{"_index":2752,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["btn_text",{"_index":835,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["btn_triangle",{"_index":2745,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["bubbling",{"_index":3192,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["budget",{"_index":1038,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["bug",{"_index":1241,"title":{},"body":{"classes/MutationsTracker.html":{},"contributing.html":{}}}],["build",{"_index":1037,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{}}}],["buildform",{"_index":498,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["built",{"_index":3069,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["business",{"_index":4139,"title":{},"body":{"license.html":{}}}],["button",{"_index":284,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["button'},{'name",{"_index":218,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["button.component.html",{"_index":1580,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button.component.scss",{"_index":1579,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button.component.ts",{"_index":1576,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:17",{"_index":1590,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:18",{"_index":1591,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:19",{"_index":1597,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:20",{"_index":1600,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:21",{"_index":1599,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:22",{"_index":1596,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:23",{"_index":1601,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:24",{"_index":1595,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:25",{"_index":1598,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:26",{"_index":1588,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:38",{"_index":1744,"title":{},"body":{"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:41",{"_index":1594,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.component.ts:43",{"_index":1743,"title":{},"body":{"components/SquareIconButtonComponent.html":{}}}],["button.component.ts:46",{"_index":1592,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.round",{"_index":1676,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button.text",{"_index":2487,"title":{},"body":{"components/TmplNavigationBarComponent.html":{}}}],["button/button.component.scss",{"_index":1602,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button/button.component.scss,./round",{"_index":1578,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button/round",{"_index":1575,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["button/square",{"_index":1742,"title":{},"body":{"components/SquareIconButtonComponent.html":{}}}],["button::part(native",{"_index":1620,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["button:disabled",{"_index":1621,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button[data",{"_index":1628,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button[disabled",{"_index":1622,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button_align",{"_index":1613,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["button_go_to",{"_index":660,"title":{},"body":{"components/FormComponent.html":{}}}],["button_list",{"_index":804,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["button_par_2_1",{"_index":2127,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["button_par_2_2",{"_index":2128,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["button_pop_up",{"_index":658,"title":{},"body":{"components/FormComponent.html":{}}}],["button_text",{"_index":634,"title":{},"body":{"components/FormComponent.html":{}}}],["button_tile",{"_index":3113,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["buttonalign",{"_index":1581,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["buttonlist",{"_index":802,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["buttonlistraw",{"_index":803,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["buttons",{"_index":1619,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplTimerComponent.html":{}}}],["bypassed",{"_index":2327,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["c",{"_index":3580,"title":{},"body":{"license.html":{}}}],["calc(100",{"_index":119,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["calc(100px",{"_index":2757,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["calc(100vh",{"_index":1128,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDrawerComponent.html":{}}}],["calc(115px",{"_index":2756,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["calc(50",{"_index":3224,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["calc(5rem",{"_index":2758,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["calc(6rem",{"_index":2754,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["calc(var",{"_index":175,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/WorkshopsComponent.html":{}}}],["calculateanswer",{"_index":479,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["calculated",{"_index":1913,"title":{},"body":{"components/TmplAccordionComponent.html":{},"classes/Widget.html":{}}}],["called",{"_index":2164,"title":{},"body":{"components/TmplCarouselComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["calloninit",{"_index":1482,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{}}}],["calls",{"_index":343,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["campaign",{"_index":3002,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["campaignservice",{"_index":2965,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["capacitor",{"_index":3417,"title":{},"body":{"dependencies.html":{}}}],["capacitor/android",{"_index":3424,"title":{},"body":{"dependencies.html":{}}}],["capacitor/app",{"_index":3426,"title":{},"body":{"dependencies.html":{}}}],["capacitor/cli",{"_index":3428,"title":{},"body":{"dependencies.html":{}}}],["capacitor/clipboard",{"_index":1714,"title":{},"body":{"components/SelectTextComponent.html":{},"dependencies.html":{}}}],["capacitor/core",{"_index":3430,"title":{},"body":{"dependencies.html":{}}}],["capacitor/device",{"_index":642,"title":{},"body":{"components/FormComponent.html":{},"dependencies.html":{}}}],["capacitor/filesystem",{"_index":3431,"title":{},"body":{"dependencies.html":{}}}],["capacitor/local",{"_index":3433,"title":{},"body":{"dependencies.html":{}}}],["capacitor/push",{"_index":3434,"title":{},"body":{"dependencies.html":{}}}],["capacitor/splash",{"_index":3436,"title":{},"body":{"dependencies.html":{}}}],["capawesome/capacitor",{"_index":3437,"title":{},"body":{"dependencies.html":{}}}],["cape",{"_index":3404,"title":{},"body":{"contributing.html":{}}}],["capture",{"_index":1077,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["card",{"_index":2882,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card'},{'name",{"_index":296,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["card.component.html",{"_index":2884,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.scss",{"_index":2883,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts",{"_index":2881,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:14",{"_index":2912,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:15",{"_index":2905,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:16",{"_index":2906,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:17",{"_index":2911,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:18",{"_index":2910,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:19",{"_index":2915,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:20",{"_index":2914,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:21",{"_index":2903,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:22",{"_index":2916,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:23",{"_index":2917,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:24",{"_index":2913,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:25",{"_index":2907,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:26",{"_index":2904,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:27",{"_index":2908,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:28",{"_index":2897,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:46",{"_index":2899,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:66",{"_index":2898,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card.component.ts:73",{"_index":2901,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["card/task",{"_index":2880,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["carousel",{"_index":2150,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["carousel'},{'name",{"_index":241,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["carousel.component.html",{"_index":2152,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["carousel.component.scss",{"_index":2151,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["carry",{"_index":3865,"title":{},"body":{"license.html":{}}}],["cascading",{"_index":3277,"title":{},"body":{"classes/Widget.html":{}}}],["case",{"_index":901,"title":{},"body":{"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["cases",{"_index":1430,"title":{},"body":{"components/NavGroupComponent.html":{},"license.html":{}}}],["category",{"_index":2512,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["category_list",{"_index":920,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["category_size",{"_index":921,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["cause",{"_index":3888,"title":{},"body":{"license.html":{}}}],["cc",{"_index":782,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["cd",{"_index":3543,"title":{},"body":{"index.html":{}}}],["cdc",{"_index":3408,"title":{},"body":{"contributing.html":{}}}],["cdr",{"_index":2250,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["cease",{"_index":4037,"title":{},"body":{"license.html":{}}}],["celebration",{"_index":2608,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["celebrationanim",{"_index":2634,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["celebrationanimationpath",{"_index":2605,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["center",{"_index":135,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["centered",{"_index":628,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["centered_slides",{"_index":2182,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["centre",{"_index":2120,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["centred",{"_index":2140,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["certain",{"_index":3623,"title":{},"body":{"license.html":{}}}],["certification",{"_index":3392,"title":{},"body":{"contributing.html":{}}}],["cessation",{"_index":4048,"title":{},"body":{"license.html":{}}}],["chance",{"_index":2530,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["change",{"_index":1096,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["changed",{"_index":2306,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"license.html":{}}}],["changedetection",{"_index":2241,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["changedetectionstrategy",{"_index":2255,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["changedetectionstrategy.onpush",{"_index":2242,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["changedetectorref",{"_index":2251,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["changes",{"_index":357,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{},"contributing.html":{}}}],["changestate",{"_index":3115,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["changestate(state",{"_index":3124,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["changetheme",{"_index":819,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["changevalue",{"_index":2798,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["changevalue(value",{"_index":2802,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["changing",{"_index":1869,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"license.html":{}}}],["character",{"_index":1236,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["characterdata",{"_index":1331,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["characterdataoldvalue",{"_index":1335,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["characterized",{"_index":3973,"title":{},"body":{"license.html":{}}}],["charge",{"_index":3611,"title":{},"body":{"license.html":{}}}],["check",{"_index":586,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"classes/Widget.html":{}}}],["check(el",{"_index":503,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["checkbox",{"_index":2766,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{}}}],["checkbox'},{'name",{"_index":288,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["checkbox.component.html",{"_index":2768,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.scss",{"_index":2767,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts",{"_index":2765,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:16",{"_index":2772,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:17",{"_index":2778,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:18",{"_index":2779,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:19",{"_index":2777,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:20",{"_index":2771,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:28",{"_index":2775,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox.component.ts:33",{"_index":2773,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkbox/simple",{"_index":2764,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["checkchange",{"_index":2017,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["checkclipboard",{"_index":1696,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["checked",{"_index":519,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["checked=\"false\"]::after",{"_index":3218,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["checked=\"true\"]::before",{"_index":3217,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["checkes",{"_index":1304,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["checkfocus",{"_index":2018,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["checkifcontainsnextarrayitem",{"_index":2489,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["checkifcontainsnextarrayitem(array",{"_index":949,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["checkinterval",{"_index":1336,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["checkprogressstatus",{"_index":2895,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["checks",{"_index":888,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["child",{"_index":1114,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["childlist",{"_index":1332,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["children",{"_index":1225,"title":{},"body":{"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["childrow.name",{"_index":1919,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["childrow.parameter_list?.state",{"_index":1917,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["childrow.value",{"_index":1920,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["choose",{"_index":4175,"title":{},"body":{"license.html":{}}}],["choosing",{"_index":4179,"title":{},"body":{"license.html":{}}}],["chrome",{"_index":2710,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["circle",{"_index":2437,"title":{},"body":{"components/TmplHelpIconComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{}}}],["circumstances",{"_index":3819,"title":{},"body":{"license.html":{}}}],["circumvention",{"_index":3823,"title":{},"body":{"license.html":{}}}],["civil",{"_index":4216,"title":{},"body":{"license.html":{}}}],["claim",{"_index":4087,"title":{},"body":{"license.html":{}}}],["claims",{"_index":4097,"title":{},"body":{"license.html":{}}}],["class",{"_index":77,"title":{"classes/BlankDate.html":{},"classes/MutationsTracker.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"classes/Widget.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["class=\"accordion",{"_index":30,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["class=\"count",{"_index":2668,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["classchanges",{"_index":1165,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["classes",{"_index":522,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"classes/Widget.html":{},"overview.html":{}}}],["classlist",{"_index":3318,"title":{},"body":{"classes/Widget.html":{}}}],["classname",{"_index":1178,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["classname).completed",{"_index":1353,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["clear",{"_index":3920,"title":{},"body":{"license.html":{}}}],["clearinterval(checkinterval",{"_index":1340,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["clearinterval(ref",{"_index":2090,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["clearinterval(this.intervalref",{"_index":1547,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["clearly",{"_index":3641,"title":{},"body":{"license.html":{}}}],["click",{"_index":667,"title":{},"body":{"components/FormComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["clickdisplaygroup",{"_index":2373,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["clickinfo",{"_index":2564,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["clickinfo(event",{"_index":2574,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["clickleftbutton",{"_index":1480,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["clickpointitem",{"_index":2565,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["clickrightbutton",{"_index":1481,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["clicktimer",{"_index":1483,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{}}}],["clipboard",{"_index":1713,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["clipboard.read",{"_index":1727,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["clipboard.write",{"_index":1726,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["clone",{"_index":3464,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["close",{"_index":56,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["closed",{"_index":138,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["closely",{"_index":4213,"title":{},"body":{"license.html":{}}}],["closemodal",{"_index":587,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["closemodal(value",{"_index":511,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["closest",{"_index":1215,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["closestancestoruntil",{"_index":1370,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["closestancestoruntil(element",{"_index":1217,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["clowns",{"_index":3401,"title":{},"body":{"contributing.html":{}}}],["cls.indexof(\"or",{"_index":3325,"title":{},"body":{"classes/Widget.html":{}}}],["cls.substring(14",{"_index":3328,"title":{},"body":{"classes/Widget.html":{}}}],["code",{"_index":1644,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplSliderComponent.html":{},"classes/Widget.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["code'},{'name",{"_index":281,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["code.component.html",{"_index":2720,"title":{},"body":{"components/TmplQRCodeComponent.html":{}}}],["code.component.scss",{"_index":2719,"title":{},"body":{"components/TmplQRCodeComponent.html":{}}}],["code.component.ts",{"_index":2718,"title":{},"body":{"components/TmplQRCodeComponent.html":{}}}],["code/qr",{"_index":2717,"title":{},"body":{"components/TmplQRCodeComponent.html":{}}}],["coders",{"_index":3571,"title":{},"body":{"index.html":{}}}],["collapse",{"_index":1800,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["collect",{"_index":4159,"title":{},"body":{"license.html":{}}}],["collected",{"_index":1289,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["color",{"_index":122,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"dependencies.html":{}}}],["colour",{"_index":2137,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["column",{"_index":160,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["columnindex",{"_index":3131,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["columnoptions",{"_index":1545,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["columns",{"_index":755,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTimerComponent.html":{}}}],["combination",{"_index":4165,"title":{},"body":{"license.html":{}}}],["combine",{"_index":4163,"title":{},"body":{"license.html":{}}}],["combined",{"_index":3883,"title":{},"body":{"license.html":{}}}],["combo",{"_index":209,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["combobox",{"_index":2228,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["comboboxmodalcomponent",{"_index":208,"title":{"components/ComboBoxModalComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["comes",{"_index":3870,"title":{},"body":{"license.html":{}}}],["command",{"_index":3552,"title":{},"body":{"index.html":{}}}],["commands",{"_index":3748,"title":{},"body":{"license.html":{}}}],["comment",{"_index":1233,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["commented",{"_index":3074,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["comments",{"_index":1817,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["commercial",{"_index":3958,"title":{},"body":{"license.html":{}}}],["commitment",{"_index":4109,"title":{},"body":{"license.html":{}}}],["common",{"_index":1755,"title":{},"body":{"components/TemplateBaseComponent.html":{},"license.html":{}}}],["common.scss",{"_index":22,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplTextComponent.html":{},"components/TmplVideoComponent.html":{}}}],["common.scss,./display_group.scss",{"_index":2370,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["communication",{"_index":3790,"title":{},"body":{"license.html":{}}}],["community/firebase",{"_index":3418,"title":{},"body":{"dependencies.html":{}}}],["compilation",{"_index":3878,"title":{},"body":{"license.html":{}}}],["compilation's",{"_index":3885,"title":{},"body":{"license.html":{}}}],["compilations",{"_index":4144,"title":{},"body":{"license.html":{}}}],["compiler",{"_index":3774,"title":{},"body":{"license.html":{}}}],["complete",{"_index":402,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["completed",{"_index":26,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["completed/uncompleted",{"_index":1142,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplatePopupComponent.html":{}}}],["completed_field",{"_index":2926,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["completed_icon",{"_index":2934,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["completedfield",{"_index":2885,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["completedicon",{"_index":2886,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["compliance",{"_index":4071,"title":{},"body":{"license.html":{}}}],["compliant",{"_index":553,"title":{},"body":{"classes/BlankDate.html":{}}}],["comply",{"_index":3812,"title":{},"body":{"license.html":{}}}],["component",{"_index":0,"title":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["component'},{'name",{"_index":227,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["component.component.html",{"_index":3038,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.scss",{"_index":3037,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts",{"_index":3036,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:12",{"_index":3050,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:13",{"_index":3055,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:14",{"_index":3052,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:15",{"_index":3054,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:16",{"_index":3057,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:17",{"_index":3056,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:18",{"_index":3051,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:19",{"_index":3053,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:20",{"_index":3058,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:21",{"_index":3045,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:31",{"_index":3046,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.component.ts:69",{"_index":3048,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component.scss",{"_index":2397,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["component/tile",{"_index":3035,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["component:not([data",{"_index":2399,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["component_template",{"_index":201,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["componentdestroyed",{"_index":826,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["components",{"_index":2,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"overview.html":{}}}],["computed",{"_index":717,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["computer",{"_index":3723,"title":{},"body":{"license.html":{}}}],["computers",{"_index":3682,"title":{},"body":{"license.html":{}}}],["concerning",{"_index":4164,"title":{},"body":{"license.html":{}}}],["concerns",{"_index":4171,"title":{},"body":{"license.html":{}}}],["condition",{"_index":3242,"title":{},"body":{"classes/Widget.html":{}}}],["conditional",{"_index":3004,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["conditioned",{"_index":4138,"title":{},"body":{"license.html":{}}}],["conditions",{"_index":3689,"title":{},"body":{"license.html":{}}}],["conduct",{"_index":3380,"title":{},"body":{"contributing.html":{}}}],["config",{"_index":2153,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplSliderComponent.html":{}}}],["configuration",{"_index":3546,"title":{},"body":{"index.html":{}}}],["configurations",{"_index":3550,"title":{},"body":{"index.html":{}}}],["confirm",{"_index":1530,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["connect",{"_index":2826,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["connecting",{"_index":140,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["connection",{"_index":4128,"title":{},"body":{"license.html":{}}}],["connects",{"_index":2867,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["consequence",{"_index":4059,"title":{},"body":{"license.html":{}}}],["consequences",{"_index":3343,"title":{},"body":{"classes/Widget.html":{}}}],["consequential",{"_index":4198,"title":{},"body":{"license.html":{}}}],["consider",{"_index":4249,"title":{},"body":{"license.html":{}}}],["considered",{"_index":4022,"title":{},"body":{"license.html":{}}}],["consistency",{"_index":542,"title":{},"body":{"classes/BlankDate.html":{}}}],["consistent",{"_index":527,"title":{},"body":{"classes/BlankDate.html":{},"license.html":{}}}],["console.error(\"[odk_form",{"_index":1050,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["console.error(loaderrors",{"_index":1082,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["console.group(this._row.type",{"_index":1828,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.groupend",{"_index":1838,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log",{"_index":1070,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["console.log(\"children",{"_index":1836,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log(\"click",{"_index":1774,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["console.log(\"fields",{"_index":1832,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log(\"globals",{"_index":1833,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log(\"parent",{"_index":1830,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log(\"row",{"_index":1829,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["console.log(\"setting",{"_index":1784,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["console.log(`got",{"_index":1728,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["console.log(`setting",{"_index":3006,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["console.log(this.form",{"_index":655,"title":{},"body":{"components/FormComponent.html":{}}}],["conspicuously",{"_index":3854,"title":{},"body":{"license.html":{}}}],["const",{"_index":487,"title":{},"body":{"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["constantly",{"_index":3678,"title":{},"body":{"license.html":{}}}],["constitutes",{"_index":3803,"title":{},"body":{"license.html":{}}}],["constructor",{"_index":544,"title":{},"body":{"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["constructor(domsanitizer",{"_index":1841,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["constructor(dynamicdataservice",{"_index":2246,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["constructor(el",{"_index":1170,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["constructor(element",{"_index":3248,"title":{},"body":{"classes/Widget.html":{}}}],["constructor(elref",{"_index":1587,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["constructor(fb",{"_index":590,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["constructor(modalcontroller",{"_index":2200,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["constructor(modalctrl",{"_index":1897,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["constructor(pickercontroller",{"_index":3120,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["constructor(private",{"_index":457,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTileComponent.html":{}}}],["constructor(taskservice",{"_index":2157,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["constructor(templateassetservice",{"_index":2027,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["constructor(templatefieldservice",{"_index":1395,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateDebuggerComponent.html":{}}}],["constructor(timer",{"_index":1485,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["construed",{"_index":4148,"title":{},"body":{"license.html":{}}}],["consumer",{"_index":3938,"title":{},"body":{"license.html":{}}}],["contact",{"_index":1827,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"license.html":{}}}],["contain",{"_index":1455,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["container",{"_index":189,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["container.component",{"_index":813,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{}}}],["container[data",{"_index":1794,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["containerrow",{"_index":1389,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["containers",{"_index":365,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["containing",{"_index":995,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["contains",{"_index":2342,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["content",{"_index":115,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["content[data",{"_index":1130,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["contents",{"_index":615,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplImageComponent.html":{},"license.html":{}}}],["context",{"_index":2189,"title":{},"body":{"components/TmplCarouselComponent.html":{},"license.html":{}}}],["continue",{"_index":353,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"license.html":{}}}],["continued",{"_index":3965,"title":{},"body":{"license.html":{}}}],["contractual",{"_index":4019,"title":{},"body":{"license.html":{}}}],["contradict",{"_index":4154,"title":{},"body":{"license.html":{}}}],["contrast",{"_index":154,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["contribute",{"_index":3369,"title":{},"body":{"contributing.html":{}}}],["contributing",{"_index":3363,"title":{"contributing.html":{}},"body":{"contributing.html":{}}}],["contributor",{"_index":3375,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["contributor's",{"_index":4096,"title":{},"body":{"license.html":{}}}],["control",{"_index":2100,"title":{},"body":{"components/TmplAudioComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["controlled",{"_index":4099,"title":{},"body":{"license.html":{}}}],["controls",{"_index":2112,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["convenient",{"_index":3741,"title":{},"body":{"license.html":{}}}],["conversion",{"_index":881,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["conversions",{"_index":535,"title":{},"body":{"classes/BlankDate.html":{}}}],["convert",{"_index":767,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["converts",{"_index":548,"title":{},"body":{"classes/BlankDate.html":{}}}],["converttoobject",{"_index":588,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["converttoobject(answers_list",{"_index":483,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["convey",{"_index":3728,"title":{},"body":{"license.html":{}}}],["conveyance",{"_index":4132,"title":{},"body":{"license.html":{}}}],["conveyed",{"_index":3974,"title":{},"body":{"license.html":{}}}],["conveying",{"_index":3735,"title":{},"body":{"license.html":{}}}],["conveys",{"_index":4018,"title":{},"body":{"license.html":{}}}],["copied",{"_index":2349,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"components/TmplPdfComponent.html":{}}}],["copies",{"_index":3588,"title":{},"body":{"license.html":{}}}],["copy",{"_index":385,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/SelectTextComponent.html":{},"license.html":{}}}],["copying",{"_index":3690,"title":{},"body":{"license.html":{}}}],["copyleft",{"_index":3591,"title":{},"body":{"license.html":{}}}],["copyright",{"_index":3579,"title":{},"body":{"license.html":{}}}],["copyrightable",{"_index":3700,"title":{},"body":{"license.html":{}}}],["copyrighted",{"_index":3816,"title":{},"body":{"license.html":{}}}],["cordova",{"_index":3466,"title":{},"body":{"dependencies.html":{}}}],["core",{"_index":1004,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["core#usage",{"_index":1067,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["correct",{"_index":2320,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["correction",{"_index":4193,"title":{},"body":{"license.html":{}}}],["corresponding",{"_index":3776,"title":{},"body":{"license.html":{}}}],["cost",{"_index":3909,"title":{},"body":{"license.html":{}}}],["count",{"_index":2637,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSliderComponent.html":{}}}],["countdown",{"_index":1569,"title":{},"body":{"classes/PlayingState.html":{}}}],["counter",{"_index":2660,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{},"components/TmplTimerComponent.html":{}}}],["counter'},{'name",{"_index":276,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["counter.component.html",{"_index":2662,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter.component.scss",{"_index":2661,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter.component.ts",{"_index":2658,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter.component.ts:14",{"_index":2665,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter.component.ts:15",{"_index":2663,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter.component.ts:29",{"_index":2664,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counter/parent",{"_index":2657,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["counterclaim",{"_index":4088,"title":{},"body":{"license.html":{}}}],["countries",{"_index":3726,"title":{},"body":{"license.html":{}}}],["country",{"_index":4122,"title":{},"body":{"license.html":{}}}],["course",{"_index":4240,"title":{},"body":{"license.html":{}}}],["court",{"_index":4153,"title":{},"body":{"license.html":{}}}],["courts",{"_index":4212,"title":{},"body":{"license.html":{}}}],["covenant",{"_index":4112,"title":{},"body":{"license.html":{}}}],["cover",{"_index":3168,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["coverage",{"_index":3952,"title":{},"body":{"license.html":{}}}],["covered",{"_index":3712,"title":{},"body":{"license.html":{}}}],["cp",{"_index":3557,"title":{},"body":{"index.html":{}}}],["crashlytics",{"_index":3419,"title":{},"body":{"dependencies.html":{}}}],["create",{"_index":738,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplAccordionComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTileComponent.html":{},"contributing.html":{}}}],["createactions",{"_index":664,"title":{},"body":{"components/FormComponent.html":{}}}],["createarraybtnelement",{"_index":2726,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["createarraybtnelement(answer_list",{"_index":864,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["created",{"_index":984,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"contributing.html":{}}}],["creates",{"_index":1254,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["creating",{"_index":742,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["criterion",{"_index":3752,"title":{},"body":{"license.html":{}}}],["cross",{"_index":3214,"title":{},"body":{"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["css",{"_index":743,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["cssclass",{"_index":1540,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["cubic",{"_index":2640,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["cue",{"_index":3229,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["cure",{"_index":4051,"title":{},"body":{"license.html":{}}}],["current",{"_index":1196,"title":{},"body":{"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{}}}],["current.matches(selector",{"_index":1198,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["current.nextelementsibling",{"_index":1199,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["currently",{"_index":870,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["currentmutations",{"_index":1314,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["currentprogress",{"_index":1461,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["currenttimesong",{"_index":2006,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["cursor",{"_index":1735,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["custom",{"_index":2864,"title":{},"body":{"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{}}}],["customanswerclass",{"_index":518,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["customanswerselected",{"_index":447,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["customarily",{"_index":3899,"title":{},"body":{"license.html":{}}}],["customer",{"_index":3906,"title":{},"body":{"license.html":{}}}],["customupdatewhenrewind",{"_index":2019,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["d",{"_index":3877,"title":{},"body":{"license.html":{}}}],["damages",{"_index":4196,"title":{},"body":{"license.html":{}}}],["danger",{"_index":3684,"title":{},"body":{"license.html":{}}}],["dark",{"_index":1671,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["dark_orange",{"_index":1687,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["darkblue",{"_index":3211,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["dashed",{"_index":233,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["dashed_box",{"_index":2378,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["data",{"_index":245,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"dependencies.html":{},"license.html":{}}}],["data.service",{"_index":2259,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["data.some_list",{"_index":2337,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["data/dynamic",{"_index":2258,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["data?.data?.answer?.name",{"_index":2223,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["data?.data?.answer?.text",{"_index":2224,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["data?.data?.customanswerselected",{"_index":2225,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["data_list",{"_index":1437,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["database",{"_index":3555,"title":{},"body":{"index.html":{}}}],["datalist",{"_index":772,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["datalist?.rows",{"_index":2989,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["datalistname",{"_index":2278,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["datalistobject",{"_index":1442,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["datalistobject[property].hasownproperty(\"template",{"_index":1452,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["datalists",{"_index":869,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["dataquery",{"_index":2280,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["date",{"_index":532,"title":{},"body":{"classes/BlankDate.html":{},"components/TmplAudioComponent.html":{},"components/TmplPdfComponent.html":{},"dependencies.html":{},"license.html":{}}}],["date(date",{"_index":534,"title":{},"body":{"classes/BlankDate.html":{}}}],["date(date.gettime",{"_index":571,"title":{},"body":{"classes/BlankDate.html":{}}}],["date.gettimezoneoffset",{"_index":572,"title":{},"body":{"classes/BlankDate.html":{}}}],["date.tostring",{"_index":569,"title":{},"body":{"classes/BlankDate.html":{}}}],["datepicker",{"_index":1029,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["datetime",{"_index":559,"title":{},"body":{"classes/BlankDate.html":{}}}],["days",{"_index":4047,"title":{},"body":{"license.html":{}}}],["deal",{"_index":1237,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["debouncetime",{"_index":2256,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["debug",{"_index":1790,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["debugfieldexclusions",{"_index":1809,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["debugger",{"_index":1789,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["debugger'},{'name",{"_index":225,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["december",{"_index":3836,"title":{},"body":{"license.html":{}}}],["decide",{"_index":4177,"title":{},"body":{"license.html":{}}}],["declared",{"_index":1767,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TmplPdfComponent.html":{}}}],["declining",{"_index":4011,"title":{},"body":{"license.html":{}}}],["decorators",{"_index":2050,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["deemed",{"_index":3825,"title":{},"body":{"license.html":{}}}],["deep",{"_index":1653,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"dependencies.html":{}}}],["def.ts",{"_index":4267,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["default",{"_index":374,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{},"index.html":{}}}],["default_style",{"_index":3093,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["defaults",{"_index":1256,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["defective",{"_index":4189,"title":{},"body":{"license.html":{}}}],["defenses",{"_index":4151,"title":{},"body":{"license.html":{}}}],["defined",{"_index":44,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["defining",{"_index":3336,"title":{},"body":{"classes/Widget.html":{}}}],["definition",{"_index":3782,"title":{},"body":{"license.html":{}}}],["definitions",{"_index":3694,"title":{},"body":{"license.html":{}}}],["delay",{"_index":400,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["demo",{"_index":2133,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["demolive",{"_index":2131,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["denied",{"_index":3979,"title":{},"body":{"license.html":{}}}],["denominated",{"_index":4110,"title":{},"body":{"license.html":{}}}],["density",{"_index":2834,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["deny",{"_index":3652,"title":{},"body":{"license.html":{}}}],["denying",{"_index":3619,"title":{},"body":{"license.html":{}}}],["dependencies",{"_index":3410,"title":{"dependencies.html":{}},"body":{"dependencies.html":{},"index.html":{}}}],["depending",{"_index":891,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["deployment",{"_index":3547,"title":{},"body":{"index.html":{}}}],["deprive",{"_index":4118,"title":{},"body":{"license.html":{}}}],["derivatives",{"_index":3391,"title":{},"body":{"contributing.html":{}}}],["description",{"_index":526,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/IEnketoFormData.html":{},"components/TmplButtonComponent.html":{},"classes/Widget.html":{},"properties.html":{}}}],["designated",{"_index":3916,"title":{},"body":{"license.html":{}}}],["designed",{"_index":3596,"title":{},"body":{"license.html":{}}}],["desired",{"_index":1083,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["detail",{"_index":4169,"title":{},"body":{"license.html":{}}}],["details",{"_index":1808,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"license.html":{}}}],["details.the",{"_index":4238,"title":{},"body":{"license.html":{}}}],["determine",{"_index":2145,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["determined",{"_index":2138,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["determining",{"_index":3948,"title":{},"body":{"license.html":{}}}],["dev",{"_index":3562,"title":{},"body":{"index.html":{}}}],["develop",{"_index":4219,"title":{},"body":{"license.html":{}}}],["developers",{"_index":3573,"title":{},"body":{"index.html":{},"license.html":{}}}],["developing",{"_index":3382,"title":{},"body":{"contributing.html":{}}}],["development",{"_index":1007,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["deviates",{"_index":539,"title":{},"body":{"classes/BlankDate.html":{}}}],["device",{"_index":186,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["device.getinfo",{"_index":649,"title":{},"body":{"components/FormComponent.html":{}}}],["deviceinfo",{"_index":643,"title":{},"body":{"components/FormComponent.html":{}}}],["devices",{"_index":3651,"title":{},"body":{"license.html":{}}}],["dexie",{"_index":3472,"title":{},"body":{"dependencies.html":{}}}],["diff",{"_index":2305,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"dependencies.html":{}}}],["differ",{"_index":4168,"title":{},"body":{"license.html":{}}}],["different",{"_index":3549,"title":{},"body":{"index.html":{},"license.html":{}}}],["differently",{"_index":4003,"title":{},"body":{"license.html":{}}}],["dig",{"_index":2842,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["direction",{"_index":159,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["directions",{"_index":3921,"title":{},"body":{"license.html":{}}}],["directive",{"_index":200,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["directives",{"_index":313,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["directly",{"_index":1090,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["disable",{"_index":3243,"title":{},"body":{"classes/Widget.html":{}}}],["disabled",{"_index":158,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplSliderComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["disables",{"_index":2135,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["disallow",{"_index":3270,"title":{},"body":{"classes/Widget.html":{}}}],["disclaim",{"_index":3847,"title":{},"body":{"license.html":{}}}],["disclaimer",{"_index":4180,"title":{},"body":{"license.html":{}}}],["disclaiming",{"_index":4000,"title":{},"body":{"license.html":{}}}],["discriminatory",{"_index":4135,"title":{},"body":{"license.html":{}}}],["dismiss",{"_index":1110,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["dismiss(value",{"_index":1160,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["dismissed",{"_index":1119,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["dismissonbackdrop",{"_index":1895,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["dismissonbackdrop(e",{"_index":1154,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["dismissonemit",{"_index":1105,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["dispatched",{"_index":1863,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["display",{"_index":128,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["display_group",{"_index":1860,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["display_group.scss",{"_index":2380,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["displayed",{"_index":2311,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["displaygroupelement",{"_index":2147,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["displaygroupelement.classlist.contains(\"parent_point",{"_index":3082,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["displaygroupelement.classlist.contains(\"two_columns",{"_index":2148,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["displays",{"_index":3737,"title":{},"body":{"license.html":{}}}],["displayvalue",{"_index":918,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["distinguishing",{"_index":4172,"title":{},"body":{"license.html":{}}}],["distribute",{"_index":3586,"title":{},"body":{"license.html":{}}}],["distributed",{"_index":4227,"title":{},"body":{"license.html":{}}}],["distributing",{"_index":4140,"title":{},"body":{"license.html":{}}}],["distribution",{"_index":3691,"title":{},"body":{"license.html":{}}}],["div",{"_index":1677,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["document",{"_index":1097,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{},"dependencies.html":{},"license.html":{}}}],["document.createrange",{"_index":3300,"title":{},"body":{"classes/Widget.html":{}}}],["document.documentelement",{"_index":1313,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["document.queryselectorall(\"ion",{"_index":1885,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["documentation",{"_index":3519,"title":{},"body":{"index.html":{}}}],["documented",{"_index":3987,"title":{},"body":{"license.html":{}}}],["doesn't",{"_index":1454,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["dom",{"_index":6,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["domains",{"_index":3671,"title":{},"body":{"license.html":{}}}],["dompurify",{"_index":3480,"title":{},"body":{"dependencies.html":{}}}],["domsanitizer",{"_index":1842,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["don't",{"_index":2630,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{},"components/TmplTileComponent.html":{}}}],["done",{"_index":1146,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["dot",{"_index":137,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["doubtful",{"_index":3949,"title":{},"body":{"license.html":{}}}],["download",{"_index":3288,"title":{},"body":{"classes/Widget.html":{},"index.html":{}}}],["downloadbuttonhtml",{"_index":3246,"title":{},"body":{"classes/Widget.html":{}}}],["downstream",{"_index":4067,"title":{},"body":{"license.html":{}}}],["draft",{"_index":985,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["drawer",{"_index":2401,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer'},{'name",{"_index":251,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["drawer.children[0",{"_index":2421,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer.component.html",{"_index":2403,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer.component.scss",{"_index":2402,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer.offsetheight",{"_index":2422,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer.style.transform",{"_index":2417,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drawer.style.transition",{"_index":2415,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["drop",{"_index":1639,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["dropdown",{"_index":2523,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["dse",{"_index":2750,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["dt",{"_index":570,"title":{},"body":{"classes/BlankDate.html":{}}}],["dt.indexof(\"t00:00:00.000",{"_index":578,"title":{},"body":{"classes/BlankDate.html":{}}}],["dt.split(\"t\")[0",{"_index":579,"title":{},"body":{"classes/BlankDate.html":{}}}],["durable",{"_index":3898,"title":{},"body":{"license.html":{}}}],["duration",{"_index":1973,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["durations",{"_index":1964,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["during",{"_index":3250,"title":{},"body":{"classes/Widget.html":{}}}],["dwelling",{"_index":3947,"title":{},"body":{"license.html":{}}}],["dynamic",{"_index":2268,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"dependencies.html":{}}}],["dynamically",{"_index":3784,"title":{},"body":{"license.html":{}}}],["dynamicdataservice",{"_index":2247,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["e",{"_index":1815,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["e.g",{"_index":55,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{}}}],["e.present",{"_index":1543,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["e.stopimmediatepropagation",{"_index":3200,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["e.stoppropagation",{"_index":1839,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["e.target",{"_index":1156,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["e2dcf0",{"_index":1797,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["each",{"_index":1965,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["earlier",{"_index":3711,"title":{},"body":{"license.html":{}}}],["ease",{"_index":174,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/TmplDrawerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["edittimer",{"_index":1484,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{}}}],["edittimer(val",{"_index":1492,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{}}}],["effect",{"_index":1922,"title":{},"body":{"components/TmplAccordionComponent.html":{},"license.html":{}}}],["effected",{"_index":3845,"title":{},"body":{"license.html":{}}}],["effective",{"_index":3826,"title":{},"body":{"license.html":{}}}],["effectively",{"_index":3685,"title":{},"body":{"license.html":{}}}],["efforts",{"_index":4081,"title":{},"body":{"license.html":{}}}],["el",{"_index":510,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{}}}],["el.classlist.contains(\"popup",{"_index":1158,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["el.classlist.value.includes(\"navigation",{"_index":1605,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["el.matches(selector",{"_index":1221,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["el.name",{"_index":505,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["el.nextsibling",{"_index":1245,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["el.nodename",{"_index":1242,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["el.previoussibling",{"_index":1232,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["el.remove",{"_index":1229,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["el.shadowroot.queryselector(\".inner",{"_index":1887,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["electronic",{"_index":4230,"title":{},"body":{"license.html":{}}}],["element",{"_index":199,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"dependencies.html":{}}}],["element.children].filter((el",{"_index":1220,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["element.children].find((el",{"_index":1223,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["element.children].foreach((el",{"_index":1228,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["element.closest(\".question",{"_index":3306,"title":{},"body":{"classes/Widget.html":{}}}],["element.parentelement",{"_index":1210,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["element.parentelement.firstelementchild",{"_index":1197,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["elementdatastore",{"_index":1292,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["elementref",{"_index":810,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["elements",{"_index":1218,"title":{},"body":{"classes/MutationsTracker.html":{},"dependencies.html":{}}}],["elref",{"_index":1589,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["embedded",{"_index":2704,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["embodied",{"_index":3894,"title":{},"body":{"license.html":{}}}],["emit",{"_index":48,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{}}}],["emit_data",{"_index":1150,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["emit_value",{"_index":1149,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["emitted",{"_index":1113,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["emitter",{"_index":2163,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["emitting",{"_index":1769,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["emojis",{"_index":2543,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["employer",{"_index":4242,"title":{},"body":{"license.html":{}}}],["empty",{"_index":531,"title":{},"body":{"classes/BlankDate.html":{},"classes/MutationsTracker.html":{},"classes/Widget.html":{}}}],["empty(element",{"_index":1227,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["en",{"_index":2697,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["enable",{"_index":3244,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["enables",{"_index":2134,"title":{},"body":{"components/TmplButtonComponent.html":{},"license.html":{}}}],["encapsulated",{"_index":2522,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["encapsulation",{"_index":1000,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{}}}],["end",{"_index":193,"title":{},"body":{"components/AccordionSectionComponent.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplVideoComponent.html":{},"license.html":{}}}],["endselector",{"_index":1205,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["enforce",{"_index":4111,"title":{},"body":{"license.html":{}}}],["enforcing",{"_index":3850,"title":{},"body":{"license.html":{}}}],["eng",{"_index":3077,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["enketo",{"_index":966,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["enketoform",{"_index":1054,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["enketoid",{"_index":969,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["ensure",{"_index":2427,"title":{},"body":{"components/TmplDrawerComponent.html":{},"license.html":{}}}],["ensures",{"_index":1295,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["entercustomanswer",{"_index":516,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["entered",{"_index":4145,"title":{},"body":{"license.html":{}}}],["entire",{"_index":3868,"title":{},"body":{"license.html":{}}}],["entirely",{"_index":4161,"title":{},"body":{"license.html":{}}}],["entity",{"_index":4072,"title":{},"body":{"license.html":{}}}],["entry",{"_index":991,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["equal",{"_index":1469,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplButtonComponent.html":{}}}],["equations",{"_index":2469,"title":{},"body":{"components/TmplLatexComponent.html":{}}}],["equivalent",{"_index":3806,"title":{},"body":{"license.html":{}}}],["erroneously",{"_index":3650,"title":{},"body":{"license.html":{}}}],["error",{"_index":2116,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplPdfComponent.html":{}}}],["error_message",{"_index":2703,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["errormessage",{"_index":2675,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["errors",{"_index":1078,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["errortxt",{"_index":2007,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["eslint",{"_index":3335,"title":{},"body":{"classes/Widget.html":{}}}],["essential",{"_index":3769,"title":{},"body":{"license.html":{}}}],["evaluatetaskgroupdata",{"_index":2958,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["even",{"_index":4207,"title":{},"body":{"license.html":{}}}],["evenly",{"_index":1381,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["event",{"_index":50,"title":{},"body":{"components/AccordionSectionComponent.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["event.stoppropagation",{"_index":1607,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["event.target.innerwidth",{"_index":2601,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["eventemitter",{"_index":46,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["events",{"_index":54,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplAudioComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{}}}],["events.dataupdate().type",{"_index":1094,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["events.xformsvaluechanged().type",{"_index":1100,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["everyone",{"_index":3381,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["everything",{"_index":370,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["exact",{"_index":3709,"title":{},"body":{"license.html":{}}}],["example",{"_index":1873,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"license.html":{}}}],["except",{"_index":3721,"title":{},"body":{"license.html":{}}}],["exceptions",{"_index":3992,"title":{},"body":{"license.html":{}}}],["excluded",{"_index":2694,"title":{},"body":{"components/TmplPdfComponent.html":{},"license.html":{}}}],["excluding",{"_index":4149,"title":{},"body":{"license.html":{}}}],["exclusion",{"_index":4226,"title":{},"body":{"license.html":{}}}],["exclusive",{"_index":4104,"title":{},"body":{"license.html":{}}}],["exclusively",{"_index":3810,"title":{},"body":{"license.html":{}}}],["excuse",{"_index":4155,"title":{},"body":{"license.html":{}}}],["executable",{"_index":3763,"title":{},"body":{"license.html":{}}}],["execute",{"_index":3963,"title":{},"body":{"license.html":{}}}],["executing",{"_index":3722,"title":{},"body":{"license.html":{}}}],["exercise",{"_index":4082,"title":{},"body":{"license.html":{}}}],["exercising",{"_index":3846,"title":{},"body":{"license.html":{}}}],["exist",{"_index":1052,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{}}}],["exists",{"_index":1987,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["expected",{"_index":3956,"title":{},"body":{"license.html":{}}}],["expects",{"_index":3955,"title":{},"body":{"license.html":{}}}],["explains",{"_index":3642,"title":{},"body":{"license.html":{}}}],["explicitly",{"_index":3800,"title":{},"body":{"license.html":{}}}],["export",{"_index":76,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["expose",{"_index":3090,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["express",{"_index":4108,"title":{},"body":{"license.html":{}}}],["express/blob/master/public/js/src/module/controller",{"_index":1064,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["expressed",{"_index":4182,"title":{},"body":{"license.html":{}}}],["expression",{"_index":950,"title":{},"body":{"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["expressly",{"_index":4032,"title":{},"body":{"license.html":{}}}],["extend",{"_index":1761,"title":{},"body":{"components/TemplateBaseComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["extended",{"_index":2683,"title":{},"body":{"components/TmplPdfComponent.html":{},"classes/Widget.html":{},"dependencies.html":{},"license.html":{}}}],["extending",{"_index":1765,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["extends",{"_index":10,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"classes/BlankDate.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["extensions",{"_index":3882,"title":{},"body":{"license.html":{}}}],["extensions.ts",{"_index":525,"title":{},"body":{"classes/BlankDate.html":{}}}],["extensions.ts:16",{"_index":545,"title":{},"body":{"classes/BlankDate.html":{}}}],["extent",{"_index":3740,"title":{},"body":{"license.html":{}}}],["external",{"_index":1009,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["externaldata",{"_index":970,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["externalinstance",{"_index":4265,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["extract",{"_index":831,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"dependencies.html":{}}}],["extracted",{"_index":862,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["f",{"_index":4016,"title":{},"body":{"license.html":{}}}],["f88923",{"_index":1388,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["facilities",{"_index":3811,"title":{},"body":{"license.html":{}}}],["factor",{"_index":1664,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["fade",{"_index":392,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["faded",{"_index":1966,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["fadeinout",{"_index":387,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["fadesection",{"_index":1951,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["fadetime",{"_index":1979,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["fadetimes",{"_index":1952,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["fading",{"_index":398,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["fails",{"_index":4044,"title":{},"body":{"license.html":{}}}],["failure",{"_index":4205,"title":{},"body":{"license.html":{}}}],["fair",{"_index":3805,"title":{},"body":{"license.html":{}}}],["false",{"_index":89,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["false_text",{"_index":3186,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["family",{"_index":3942,"title":{},"body":{"license.html":{}}}],["fashion",{"_index":3707,"title":{},"body":{"license.html":{}}}],["favor",{"_index":3951,"title":{},"body":{"license.html":{}}}],["fb",{"_index":458,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["feature",{"_index":2274,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"contributing.html":{},"license.html":{}}}],["features",{"_index":1015,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["fee",{"_index":3628,"title":{},"body":{"license.html":{}}}],["fefefe",{"_index":3212,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["fetch",{"_index":3541,"title":{},"body":{"index.html":{}}}],["ff7a00",{"_index":2462,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["ffcc03",{"_index":2460,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["fff",{"_index":2001,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["field",{"_index":492,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["field.service",{"_index":1420,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["fields",{"_index":1823,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["fields[key",{"_index":1825,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["file",{"_index":8,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"index.html":{},"license.html":{}}}],["files",{"_index":986,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["fill",{"_index":2389,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["fillinform",{"_index":672,"title":{},"body":{"components/FormComponent.html":{}}}],["filter",{"_index":348,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["filter((childrow",{"_index":1916,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["filter((cls",{"_index":3324,"title":{},"body":{"classes/Widget.html":{}}}],["filterselector",{"_index":1204,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["finally",{"_index":3676,"title":{},"body":{"license.html":{}}}],["find",{"_index":3923,"title":{},"body":{"license.html":{}}}],["find((answer",{"_index":2221,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["finds",{"_index":892,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["firebase",{"_index":3461,"title":{},"body":{"dependencies.html":{}}}],["firebase/authentication",{"_index":3421,"title":{},"body":{"dependencies.html":{}}}],["firebase/performance",{"_index":3423,"title":{},"body":{"dependencies.html":{}}}],["first",{"_index":1190,"title":{},"body":{"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplTileComponent.html":{},"contributing.html":{},"license.html":{}}}],["first_display_term",{"_index":922,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["first_line_text",{"_index":3039,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["fit",{"_index":704,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["fitness",{"_index":4185,"title":{},"body":{"license.html":{}}}],["fix",{"_index":3387,"title":{},"body":{"contributing.html":{}}}],["fixed",{"_index":753,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"license.html":{}}}],["flex",{"_index":129,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["flexible",{"_index":1656,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["flexwidth",{"_index":828,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["flow",{"_index":3791,"title":{},"body":{"license.html":{}}}],["flowtypes",{"_index":431,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["flowtypes.template",{"_index":445,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["flowtypes.templaterow",{"_index":332,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["flowtypes.templaterowaction",{"_index":338,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["flowtypes.templaterowaction[\"trigger",{"_index":1771,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["fn",{"_index":1176,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["fn.call(this",{"_index":1343,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["fns",{"_index":3470,"title":{},"body":{"dependencies.html":{}}}],["folder",{"_index":2688,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["follow",{"_index":3693,"title":{},"body":{"license.html":{}}}],["following",{"_index":529,"title":{},"body":{"classes/BlankDate.html":{},"contributing.html":{},"license.html":{}}}],["font",{"_index":179,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["footer",{"_index":2546,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["forbid",{"_index":3844,"title":{},"body":{"license.html":{}}}],["force",{"_index":3808,"title":{},"body":{"license.html":{}}}],["forge",{"_index":1033,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form",{"_index":452,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["form'},{'name",{"_index":213,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["form(formel",{"_index":1075,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form.component.html",{"_index":998,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form.component.scss",{"_index":999,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form.component.ts",{"_index":965,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form.component.ts:104",{"_index":2517,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["form.component.ts:70",{"_index":2519,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["form.component.ts:76",{"_index":2516,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["form.or\")?.classlist",{"_index":3320,"title":{},"body":{"classes/Widget.html":{}}}],["form.scss",{"_index":633,"title":{},"body":{"components/FormComponent.html":{}}}],["form/libs/enketo/js/dom",{"_index":1163,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["form/libs/enketo/js/form.ts",{"_index":4274,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["form/libs/enketo/js/type",{"_index":4273,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["form/libs/enketo/js/widget.ts",{"_index":3237,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:10",{"_index":3252,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:100",{"_index":3283,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:11",{"_index":3253,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:117",{"_index":3287,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:12",{"_index":3254,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:13",{"_index":3249,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:133",{"_index":3289,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:143",{"_index":3291,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:154",{"_index":3294,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:165",{"_index":3297,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:191",{"_index":3299,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:202",{"_index":3263,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:34",{"_index":3261,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:45",{"_index":3255,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:67",{"_index":3269,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:74",{"_index":3273,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:82",{"_index":3275,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/enketo/js/widget.ts:90",{"_index":3281,"title":{},"body":{"classes/Widget.html":{}}}],["form/libs/openrosa/date",{"_index":524,"title":{},"body":{"classes/BlankDate.html":{}}}],["form/odk",{"_index":964,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["form_asset",{"_index":997,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["format",{"_index":533,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["formatted",{"_index":560,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["formbuilder",{"_index":435,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["formcomponent",{"_index":212,"title":{"components/FormComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["formcontainerel",{"_index":1045,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["formcontrol",{"_index":436,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["formcontrol(null",{"_index":501,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["formdata",{"_index":448,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["formdataobj",{"_index":4268,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["formel",{"_index":1072,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["formgroup",{"_index":437,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["formoptions",{"_index":4269,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["forms",{"_index":3889,"title":{},"body":{"license.html":{}}}],["forward",{"_index":1404,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplAudioComponent.html":{}}}],["found",{"_index":876,"title":{},"body":{"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["foundation",{"_index":3582,"title":{},"body":{"license.html":{}}}],["fragment",{"_index":3284,"title":{},"body":{"classes/Widget.html":{}}}],["free",{"_index":3581,"title":{},"body":{"license.html":{}}}],["freedom",{"_index":3599,"title":{},"body":{"license.html":{}}}],["freedoms",{"_index":3630,"title":{},"body":{"license.html":{}}}],["fulfilling",{"_index":3829,"title":{},"body":{"license.html":{}}}],["full",{"_index":1655,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"index.html":{},"license.html":{}}}],["fullscreen",{"_index":1106,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["function",{"_index":342,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"classes/BlankDate.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"classes/Widget.html":{}}}],["functionality",{"_index":2850,"title":{},"body":{"components/TmplSliderComponent.html":{},"classes/Widget.html":{}}}],["functioning",{"_index":3966,"title":{},"body":{"license.html":{}}}],["fundamentally",{"_index":3655,"title":{},"body":{"license.html":{}}}],["further",{"_index":3917,"title":{},"body":{"license.html":{}}}],["future",{"_index":3091,"title":{},"body":{"components/TmplTileComponent.html":{},"index.html":{},"license.html":{}}}],["gap",{"_index":754,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["garbage",{"_index":1288,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["gb",{"_index":2698,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["general",{"_index":367,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"license.html":{}}}],["generally",{"_index":3780,"title":{},"body":{"license.html":{}}}],["generate",{"_index":3777,"title":{},"body":{"license.html":{}}}],["generategridstyle",{"_index":745,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["generateitemlist",{"_index":769,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["generatestyles",{"_index":960,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["get(element",{"_index":1301,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["get_device_info",{"_index":663,"title":{},"body":{"components/FormComponent.html":{}}}],["get_me_going",{"_index":1650,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["getactivesectionidx",{"_index":1392,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["getactivesectionidx(progressfield",{"_index":1398,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["getancestors",{"_index":1361,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getancestors(element",{"_index":1209,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getbooleanparamfromtemplaterow",{"_index":71,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["getbooleanparamfromtemplaterow(this._row",{"_index":662,"title":{},"body":{"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["getbooleanparamfromtemplaterow(this.row",{"_index":467,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["getchild",{"_index":1363,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getchild(element",{"_index":1222,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getchildren",{"_index":1362,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getchildren(element",{"_index":1219,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getcolumnoptions",{"_index":3116,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["getcolumnoptions(columnindex",{"_index":3128,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["getcolumns",{"_index":3117,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["getcolumns(numcolumns",{"_index":1544,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["getcustomanswerclass",{"_index":611,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["getdownloadbuttonhtml",{"_index":3286,"title":{},"body":{"classes/Widget.html":{}}}],["getdurationfromparams",{"_index":3118,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["getflexwidth",{"_index":904,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["getlist",{"_index":3298,"title":{},"body":{"classes/Widget.html":{}}}],["getminormaxfromcategorylistitem",{"_index":2490,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["getminormaxfromcategorylistitem(item",{"_index":945,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["getnumberparamfromtemplaterow",{"_index":433,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["getnumberparamfromtemplaterow(this._row",{"_index":837,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"components/SelectTextComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["getnumberparamfromtemplaterow(this.row",{"_index":472,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["getopenheight",{"_index":2420,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["getoriginalinputvalue",{"_index":3293,"title":{},"body":{"classes/Widget.html":{}}}],["getparamfromtemplaterow",{"_index":434,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["getparamfromtemplaterow(row",{"_index":833,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["getparamfromtemplaterow(this._row",{"_index":771,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["getparamfromtemplaterow(this.row",{"_index":462,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["getparams",{"_index":86,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["getprogresspercentage",{"_index":2979,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["getprops",{"_index":3280,"title":{},"body":{"classes/Widget.html":{}}}],["getrepeatindex",{"_index":1364,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getrepeatindex(node",{"_index":1265,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getrepeatindex(parent",{"_index":1267,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getresetbuttonhtml",{"_index":3282,"title":{},"body":{"classes/Widget.html":{}}}],["gets",{"_index":1183,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelement",{"_index":1360,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelement(element",{"_index":1195,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelements",{"_index":1359,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelements(element",{"_index":1189,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelementsandself",{"_index":1358,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getsiblingelementsandself(element",{"_index":1181,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getstringparamfromtemplaterow",{"_index":72,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["getstringparamfromtemplaterow(this._row",{"_index":88,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["getstringparamfromtemplaterow(this.row",{"_index":465,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["gettext",{"_index":2198,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["gettext(avalue",{"_index":2205,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["gettimezoneoffsetastime",{"_index":580,"title":{},"body":{"classes/BlankDate.html":{}}}],["gettimezoneoffsetastime(date",{"_index":577,"title":{},"body":{"classes/BlankDate.html":{}}}],["getting",{"_index":3361,"title":{"contributing.html":{},"index.html":{},"license.html":{}},"body":{}}],["gettypefromstyles(styles",{"_index":2385,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["getvalue",{"_index":3164,"title":{},"body":{"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["getxpath",{"_index":1365,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["getxpath(node",{"_index":1260,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["gh",{"_index":3079,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["git",{"_index":3525,"title":{},"body":{"index.html":{}}}],["github",{"_index":3385,"title":{},"body":{"contributing.html":{}}}],["gitthis",{"_index":3523,"title":{},"body":{"index.html":{}}}],["give",{"_index":2529,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["given",{"_index":1248,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["gives",{"_index":3874,"title":{},"body":{"license.html":{}}}],["giving",{"_index":3636,"title":{},"body":{"license.html":{}}}],["global",{"_index":2687,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["globalthis",{"_index":3485,"title":{},"body":{"dependencies.html":{}}}],["gnu",{"_index":3575,"title":{},"body":{"license.html":{}}}],["go_to",{"_index":670,"title":{},"body":{"components/FormComponent.html":{}}}],["go_to_action_arg",{"_index":646,"title":{},"body":{"components/FormComponent.html":{}}}],["google",{"_index":2129,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplPdfComponent.html":{}}}],["gotosection",{"_index":1393,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["gotosection(index",{"_index":1401,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["governed",{"_index":3994,"title":{},"body":{"license.html":{}}}],["gpl",{"_index":3632,"title":{},"body":{"license.html":{}}}],["gradient",{"_index":105,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["gradient(rgb(0",{"_index":1631,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["grant",{"_index":4012,"title":{},"body":{"license.html":{}}}],["granted",{"_index":3795,"title":{},"body":{"license.html":{}}}],["grants",{"_index":4062,"title":{},"body":{"license.html":{}}}],["gratis",{"_index":3627,"title":{},"body":{"license.html":{}}}],["gray",{"_index":1637,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["greatest",{"_index":4220,"title":{},"body":{"license.html":{}}}],["green",{"_index":2953,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["greyed",{"_index":2123,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["greys",{"_index":2136,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["grid",{"_index":705,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid'},{'name",{"_index":248,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["grid.component.html",{"_index":715,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid.component.scss",{"_index":716,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid.component.ts",{"_index":692,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid.component.ts:44",{"_index":2367,"title":{},"body":{"components/TmplDisplayGridComponent.html":{}}}],["grid.component.ts:49",{"_index":2368,"title":{},"body":{"components/TmplDisplayGridComponent.html":{}}}],["grid.component.ts:51",{"_index":2366,"title":{},"body":{"components/TmplDisplayGridComponent.html":{}}}],["grid.component.ts:57",{"_index":2722,"title":{},"body":{"components/TmplRadioButtonGridComponent.html":{}}}],["grid.component.ts:59",{"_index":2721,"title":{},"body":{"components/TmplRadioButtonGridComponent.html":{}}}],["grid/display",{"_index":953,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["grid/radio",{"_index":691,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid_gap",{"_index":714,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["grid_width",{"_index":711,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["gridautorows",{"_index":764,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["gridgap",{"_index":750,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["gridstyle",{"_index":721,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["gridtemplatecolumns",{"_index":757,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["group",{"_index":423,"title":{},"body":{"components/AnimatedSectionGroupComponent.html":{},"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{}}}],["group'},{'name",{"_index":207,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["group.component",{"_index":766,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["group.component.html",{"_index":817,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["group.component.scss",{"_index":818,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts",{"_index":808,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:147",{"_index":2731,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:37",{"_index":2728,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:38",{"_index":2729,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:39",{"_index":2739,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:40",{"_index":2735,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:41",{"_index":2737,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:42",{"_index":2743,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:44",{"_index":2736,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:47",{"_index":2734,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:48",{"_index":2740,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:49",{"_index":2741,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:50",{"_index":2742,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:56",{"_index":2732,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:72",{"_index":2733,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group.component.ts:85",{"_index":2730,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["group/radio",{"_index":807,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["grouped",{"_index":390,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateBaseComponent.html":{}}}],["groupname",{"_index":824,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["groups",{"_index":2396,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["grow",{"_index":1998,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["gt",{"_index":940,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["guarantee",{"_index":3602,"title":{},"body":{"license.html":{}}}],["gui",{"_index":4241,"title":{},"body":{"license.html":{}}}],["guidelines",{"_index":3370,"title":{},"body":{"contributing.html":{}}}],["h1",{"_index":2947,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTitleComponent.html":{}}}],["h2",{"_index":177,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["h3",{"_index":2103,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["hack",{"_index":383,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["hackaddrowwithdefaultactions",{"_index":1411,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["hackgetrawdatalistname(row",{"_index":2341,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["hackgetrawparameterlist(row",{"_index":2351,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["hackpopulatetemplatenames(row",{"_index":1441,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["hackprocessrows(rows",{"_index":2331,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["hacks",{"_index":1417,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["hacksethighlightedtask",{"_index":2192,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["handle",{"_index":1427,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["handle.offsetheight",{"_index":2423,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["handle::after",{"_index":2869,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["handle::before",{"_index":2868,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["handlechange",{"_index":2770,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["handlechange(ischecked",{"_index":2774,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["handlechange(value",{"_index":3017,"title":{},"body":{"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["handleclick",{"_index":3188,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["handleclick(e",{"_index":3190,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["handled",{"_index":346,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplTileComponent.html":{}}}],["handleemittedvalue",{"_index":1896,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["handleemittedvalue(value",{"_index":1148,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["handleeventdataupdate(e",{"_index":1059,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["handleeventxmlformchange(e",{"_index":1061,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["handleitemclick(item",{"_index":728,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["handlenewlycompleted",{"_index":2896,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["handlenewlycompleted(isnewlycompleted",{"_index":2900,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["handler",{"_index":1531,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["handleradiobuttonclick",{"_index":2727,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["handleradiobuttonclick(selectedvalue",{"_index":850,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["handlers",{"_index":3194,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["handlesummaryclick",{"_index":1810,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["handlesummaryclick(e",{"_index":1813,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["handleswiperinitialised",{"_index":2156,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["handleswiperinitialised(swiper",{"_index":2161,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["handling",{"_index":875,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["has(element",{"_index":1306,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hash",{"_index":971,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["hashmap",{"_index":773,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["hasicon=\"true",{"_index":1944,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["hasnextsiblingelementsamename",{"_index":1368,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hasnextsiblingelementsamename(el",{"_index":1244,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["haspreviouscommentsiblingwithcontent",{"_index":1366,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["haspreviouscommentsiblingwithcontent(node",{"_index":1249,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hasprevioussiblingelementsamename",{"_index":1367,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hasprevioussiblingelementsamename(el",{"_index":1230,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hassiblingelementsamename",{"_index":1369,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hassiblingelementsamename(el",{"_index":1246,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hassiblingelementsamename(parent",{"_index":1268,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["hasstarted",{"_index":2008,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["having",{"_index":3070,"title":{},"body":{"components/TmplTileComponent.html":{},"license.html":{}}}],["header",{"_index":625,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TmplDrawerComponent.html":{}}}],["health",{"_index":3366,"title":{},"body":{"contributing.html":{}}}],["heigh",{"_index":2513,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["height",{"_index":118,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["help",{"_index":253,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["here",{"_index":358,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"classes/Widget.html":{}}}],["hereafter",{"_index":4101,"title":{},"body":{"license.html":{}}}],["hidden",{"_index":162,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["hidden=\"true",{"_index":1795,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TmplDisplayGroupComponent.html":{}}}],["hide",{"_index":2873,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["highlight",{"_index":103,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["highlighted",{"_index":2190,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["highlighted_text",{"_index":2938,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["highlightedtaskgroup",{"_index":2195,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["highlightedtext",{"_index":2887,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["historical",{"_index":543,"title":{},"body":{"classes/BlankDate.html":{}}}],["holder",{"_index":4039,"title":{},"body":{"license.html":{}}}],["holders",{"_index":3999,"title":{},"body":{"license.html":{}}}],["home",{"_index":1682,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["home_screen",{"_index":1678,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["home_screen_wrapper",{"_index":1683,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["homepage",{"_index":4258,"title":{},"body":{"properties.html":{}}}],["hope",{"_index":4228,"title":{},"body":{"license.html":{}}}],["horizontal",{"_index":2141,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplSliderComponent.html":{}}}],["host",{"_index":421,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{}}}],["hostbinding",{"_index":2596,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["hostlistener",{"_index":2597,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["hostlistener(\"window:resize",{"_index":2600,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["hostlistener('window:resize",{"_index":2579,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["hostlisteners",{"_index":2567,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["hosts",{"_index":3924,"title":{},"body":{"license.html":{}}}],["hours",{"_index":582,"title":{},"body":{"classes/BlankDate.html":{}}}],["household",{"_index":3943,"title":{},"body":{"license.html":{}}}],["howl",{"_index":2046,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["howler",{"_index":2058,"title":{},"body":{"components/TmplAudioComponent.html":{},"dependencies.html":{}}}],["html",{"_index":198,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["html5sortable",{"_index":1031,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["htmlelement",{"_index":1157,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["http://localhost:4200",{"_index":3570,"title":{},"body":{"index.html":{}}}],["https://developer.mozilla.org/en",{"_index":2612,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["https://fsf.org",{"_index":3584,"title":{},"body":{"license.html":{}}}],["https://github.com/enketo/enketo",{"_index":1063,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["https://github.com/idemsinternational/parenting",{"_index":3539,"title":{},"body":{"index.html":{}}}],["https://idems.international",{"_index":4259,"title":{},"body":{"properties.html":{}}}],["https://stackoverflow.com/a/46522991/3071529",{"_index":1277,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["https://thesoftwayfarecoder.com/dynamically",{"_index":741,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["https://www.gnu.org/licenses",{"_index":4246,"title":{},"body":{"license.html":{}}}],["https://www.gnu.org/licenses/why",{"_index":4253,"title":{},"body":{"license.html":{}}}],["huge",{"_index":3180,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["hypothetical",{"_index":4239,"title":{},"body":{"license.html":{}}}],["ianswerlistitem",{"_index":689,"title":{"interfaces/IAnswerListItem.html":{}},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["ibutton",{"_index":793,"title":{"interfaces/IButton.html":{},"interfaces/IButton-1.html":{}},"body":{"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["icategorylist",{"_index":910,"title":{"interfaces/ICategoryList.html":{}},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["icon",{"_index":223,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["icon'},{'name",{"_index":254,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["icon.ts",{"_index":2432,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["icon.ts:25",{"_index":2435,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["icon.ts:35",{"_index":2436,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["icon_position",{"_index":1934,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["icon_result",{"_index":3040,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["icon_src",{"_index":1582,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplTileComponent.html":{}}}],["iconpadding",{"_index":3215,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["icons",{"_index":2544,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{}}}],["iconsrc",{"_index":3049,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["iconsrc.includes(\"play",{"_index":3083,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["id",{"_index":39,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["ideally",{"_index":786,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTileComponent.html":{}}}],["idems",{"_index":4260,"title":{},"body":{"properties.html":{}}}],["idems_app/deployments",{"_index":3551,"title":{},"body":{"index.html":{}}}],["identifiable",{"_index":4124,"title":{},"body":{"license.html":{}}}],["idisplaygridparams",{"_index":951,"title":{"interfaces/IDisplayGridParams.html":{}},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["idx",{"_index":3359,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["ienketoformdata",{"_index":963,"title":{"interfaces/IEnketoFormData.html":{}},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["ieventformsaved",{"_index":990,"title":{"interfaces/IEventFormSaved.html":{}},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["iff",{"_index":2178,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["iformentry",{"_index":983,"title":{"interfaces/IFormEntry.html":{}},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["ignore",{"_index":719,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TemplateBaseComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["image",{"_index":693,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/SelectTextComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{}}}],["image'},{'name",{"_index":258,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["image:plh_images/stickers/faces/happier.svg",{"_index":855,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["image:plh_images/stickers/faces/unhappy.svg",{"_index":858,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["image_checked",{"_index":809,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["image_checked:plh_images/stickers/faces/happier.svg",{"_index":856,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["image_src",{"_index":2444,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["image_text",{"_index":3112,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["imagemap",{"_index":3310,"title":{},"body":{"classes/Widget.html":{}}}],["images",{"_index":3528,"title":{},"body":{"index.html":{}}}],["ime",{"_index":3076,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["img",{"_index":195,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplVideoComponent.html":{}}}],["img[data",{"_index":2464,"title":{},"body":{"components/TmplImageComponent.html":{}}}],["implement",{"_index":1763,"title":{},"body":{"components/TemplateBaseComponent.html":{},"license.html":{}}}],["implementation",{"_index":1012,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["implements",{"_index":12,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["implied",{"_index":4150,"title":{},"body":{"license.html":{}}}],["import",{"_index":68,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["important",{"_index":172,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/WorkshopsComponent.html":{}}}],["importing",{"_index":4094,"title":{},"body":{"license.html":{}}}],["imports",{"_index":1019,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["impose",{"_index":4021,"title":{},"body":{"license.html":{}}}],["imposed",{"_index":4152,"title":{},"body":{"license.html":{}}}],["in_progress_icon",{"_index":2936,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["inability",{"_index":4200,"title":{},"body":{"license.html":{}}}],["inaccurate",{"_index":4202,"title":{},"body":{"license.html":{}}}],["inc",{"_index":3583,"title":{},"body":{"license.html":{}}}],["incidental",{"_index":4197,"title":{},"body":{"license.html":{}}}],["include",{"_index":144,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{},"license.html":{}}}],["included",{"_index":1013,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["includeposition",{"_index":1257,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["includes",{"_index":2468,"title":{},"body":{"components/TmplLatexComponent.html":{},"license.html":{}}}],["includes(date.tostring",{"_index":568,"title":{},"body":{"classes/BlankDate.html":{}}}],["includes(this._row.value",{"_index":3030,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["includeself",{"_index":1200,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["including",{"_index":2276,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["inclusion",{"_index":3373,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["inclusive",{"_index":1472,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["incompatible",{"_index":3656,"title":{},"body":{"license.html":{}}}],["incorporating",{"_index":4247,"title":{},"body":{"license.html":{}}}],["incorporation",{"_index":3946,"title":{},"body":{"license.html":{}}}],["increase",{"_index":703,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["increment",{"_index":2491,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["increment(param",{"_index":939,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["indemnification",{"_index":4017,"title":{},"body":{"license.html":{}}}],["independent",{"_index":3880,"title":{},"body":{"license.html":{}}}],["index",{"_index":33,"title":{"index.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"miscellaneous/typealiases.html":{}}}],["indicate",{"_index":853,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["indicating",{"_index":1206,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["individual",{"_index":2321,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["individuals",{"_index":3664,"title":{},"body":{"license.html":{}}}],["industrial",{"_index":3959,"title":{},"body":{"license.html":{}}}],["info",{"_index":3,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["info_icon_src",{"_index":2557,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["inform",{"_index":3930,"title":{},"body":{"license.html":{}}}],["information",{"_index":1608,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"license.html":{}}}],["infringe",{"_index":4063,"title":{},"body":{"license.html":{}}}],["infringed",{"_index":4091,"title":{},"body":{"license.html":{}}}],["infringement",{"_index":3718,"title":{},"body":{"license.html":{}}}],["inherit",{"_index":2948,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["inherited",{"_index":326,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{}}}],["init",{"_index":3312,"title":{},"body":{"classes/Widget.html":{}}}],["initial",{"_index":1912,"title":{},"body":{"components/TmplAccordionComponent.html":{},"index.html":{}}}],["initial_slide_index",{"_index":2184,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["initialised",{"_index":2165,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["initialize",{"_index":1076,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{}}}],["initialized",{"_index":2083,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["initializes",{"_index":3316,"title":{},"body":{"classes/Widget.html":{}}}],["initialslide",{"_index":2154,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["initiate",{"_index":4085,"title":{},"body":{"license.html":{}}}],["initplayer",{"_index":2020,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["injector",{"_index":2249,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["inline",{"_index":2108,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["inner",{"_index":3114,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["innerhtml",{"_index":2232,"title":{},"body":{"components/TmplDashedBoxComponent.html":{}}}],["inprogress",{"_index":157,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["inprogressicon",{"_index":2888,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["input",{"_index":69,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["input.getval(this.element",{"_index":3338,"title":{},"body":{"classes/Widget.html":{}}}],["input.setval(this.element",{"_index":3348,"title":{},"body":{"classes/Widget.html":{}}}],["input_allowed",{"_index":468,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["input_position",{"_index":470,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["inputallowed",{"_index":451,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["inputposition",{"_index":453,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["inputrow",{"_index":636,"title":{},"body":{"components/FormComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{}}}],["inputs",{"_index":38,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{}}}],["inside",{"_index":1444,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplButtonComponent.html":{},"license.html":{}}}],["install",{"_index":3522,"title":{},"body":{"index.html":{},"license.html":{}}}],["installation",{"_index":3537,"title":{},"body":{"index.html":{},"license.html":{}}}],["installed",{"_index":3977,"title":{},"body":{"license.html":{}}}],["installnote",{"_index":3545,"title":{},"body":{"index.html":{}}}],["instance",{"_index":1272,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["instanceid",{"_index":987,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["instantiate",{"_index":3268,"title":{},"body":{"classes/Widget.html":{}}}],["instantiated",{"_index":3266,"title":{},"body":{"classes/Widget.html":{}}}],["instantiation",{"_index":3251,"title":{},"body":{"classes/Widget.html":{}}}],["instead",{"_index":788,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["intact",{"_index":3858,"title":{},"body":{"license.html":{}}}],["integer",{"_index":1471,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["intended",{"_index":3601,"title":{},"body":{"license.html":{}}}],["intention",{"_index":3848,"title":{},"body":{"license.html":{}}}],["interaction",{"_index":3732,"title":{},"body":{"license.html":{}}}],["interactive",{"_index":3736,"title":{},"body":{"license.html":{}}}],["intercept",{"_index":1867,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["interceptors",{"_index":1871,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["intercepttemplatecontaineraction",{"_index":321,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["intercepttemplatecontaineraction(action",{"_index":337,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["interchange",{"_index":3900,"title":{},"body":{"license.html":{}}}],["interest",{"_index":4080,"title":{},"body":{"license.html":{}}}],["interface",{"_index":424,"title":{"interfaces/AnswerBody.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"interfaces/TimerState.html":{}},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["interfaces",{"_index":426,"title":{},"body":{"interfaces/AnswerBody.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"interfaces/TimerState.html":{},"license.html":{},"overview.html":{}}}],["interfered",{"_index":3968,"title":{},"body":{"license.html":{}}}],["internally",{"_index":1429,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["international",{"_index":4261,"title":{},"body":{"properties.html":{}}}],["interpretation",{"_index":4210,"title":{},"body":{"license.html":{}}}],["interpreter",{"_index":3775,"title":{},"body":{"license.html":{}}}],["intial",{"_index":1066,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["intimate",{"_index":3789,"title":{},"body":{"license.html":{}}}],["intro.js",{"_index":3489,"title":{},"body":{"dependencies.html":{}}}],["invalid",{"_index":537,"title":{},"body":{"classes/BlankDate.html":{},"components/TmplRadioGroupComponent.html":{}}}],["invalidate",{"_index":3875,"title":{},"body":{"license.html":{}}}],["iodkformcomponentparameters",{"_index":992,"title":{"interfaces/IODKFormComponentParameters.html":{}},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["ion",{"_index":121,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["ionchange",{"_index":3193,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["ioncontentcontainers",{"_index":1884,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["ioncontentcontainers.foreach((el",{"_index":1886,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["ionic",{"_index":3439,"title":{},"body":{"dependencies.html":{}}}],["ionic/angular",{"_index":440,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTimerComponent.html":{},"dependencies.html":{}}}],["ionic/pwa",{"_index":3447,"title":{},"body":{"dependencies.html":{}}}],["ionicon",{"_index":2433,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["ionrange",{"_index":2049,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["iprogressstatus",{"_index":2909,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["iradiobuttongridparams",{"_index":697,"title":{"interfaces/IRadioButtonGridParams.html":{}},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["irrevocable",{"_index":3797,"title":{},"body":{"license.html":{}}}],["is_editable_on_playing",{"_index":1518,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["is_play_icon",{"_index":3041,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["isalloweddeviceinfo",{"_index":644,"title":{},"body":{"components/FormComponent.html":{}}}],["isbutton",{"_index":2889,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["ischecked",{"_index":2776,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["iscompleted",{"_index":2975,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["iscustomicon",{"_index":1583,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["isfalsy",{"_index":3023,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["ishomescreen",{"_index":1584,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["islegacybrowser",{"_index":2685,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["ismute",{"_index":2009,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["isnewlycompleted",{"_index":2902,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["isnumberinput",{"_index":1693,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["isobject",{"_index":1418,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["isobject(row?.value",{"_index":1443,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["isobject(row?.value[0",{"_index":1449,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["isopen",{"_index":2404,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["isostring",{"_index":557,"title":{},"body":{"classes/BlankDate.html":{}}}],["isparentpoint",{"_index":3081,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["isplayed",{"_index":2010,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["isplayicon",{"_index":3044,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["isplayicon(iconsrc",{"_index":3047,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["issue",{"_index":3078,"title":{},"body":{"components/TmplTileComponent.html":{},"contributing.html":{}}}],["istimereditable",{"_index":1517,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["istwocolumns",{"_index":2146,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["it's",{"_index":1439,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["item",{"_index":702,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["item'},{'name",{"_index":273,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["item.accordion",{"_index":1928,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["item.component.html",{"_index":2555,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.scss",{"_index":2554,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts",{"_index":2553,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:111",{"_index":2575,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:26",{"_index":2570,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:27",{"_index":2590,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:28",{"_index":2585,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:29",{"_index":2582,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:30",{"_index":2583,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:31",{"_index":2586,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:32",{"_index":2593,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:33",{"_index":2595,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:34",{"_index":2591,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:35",{"_index":2594,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:36",{"_index":2592,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:37",{"_index":2581,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:38",{"_index":2580,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:39",{"_index":2587,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:40",{"_index":2588,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:41",{"_index":2573,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:43",{"_index":2569,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:75",{"_index":2577,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.component.ts:88",{"_index":2576,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item.get(key",{"_index":1303,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["item.has(key",{"_index":1307,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["item.image",{"_index":894,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["item.split",{"_index":490,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["item.text",{"_index":895,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["item/points",{"_index":2552,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["item[data",{"_index":2724,"title":{},"body":{"components/TmplRadioButtonGridComponent.html":{}}}],["item_border",{"_index":954,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["item_width",{"_index":707,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["itemdatalist",{"_index":2296,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["itemkey",{"_index":2361,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["itemobj",{"_index":791,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["itemobj[field",{"_index":792,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["itemplatecontainerprops",{"_index":1104,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["itemplatepopupcomponentprops",{"_index":1102,"title":{"interfaces/ITemplatePopupComponentProps.html":{}},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["itemplaterowprops",{"_index":694,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["itemprocessor",{"_index":2260,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["itemprocessor(parseditemdatalist",{"_index":2299,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["itemrows",{"_index":2245,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items",{"_index":134,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["items'},{'name",{"_index":246,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["items.component.html",{"_index":2244,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items.component.scss",{"_index":2243,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items.component.ts",{"_index":2240,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items.component.ts:32",{"_index":2254,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items.component.ts:39",{"_index":2253,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items.component.ts:44",{"_index":2252,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["items/data",{"_index":2239,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["itemstyle",{"_index":957,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["itemvalue",{"_index":2362,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["iterate",{"_index":1974,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["iteration",{"_index":2636,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["itself",{"_index":3086,"title":{},"body":{"components/TmplTileComponent.html":{},"license.html":{}}}],["javarosa",{"_index":528,"title":{},"body":{"classes/BlankDate.html":{}}}],["jquery",{"_index":1025,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{},"miscellaneous/typealiases.html":{}}}],["jquerys",{"_index":1282,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["js",{"_index":1034,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["json",{"_index":996,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["jump",{"_index":1376,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["june",{"_index":3577,"title":{},"body":{"license.html":{}}}],["justify",{"_index":130,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["katex",{"_index":3493,"title":{},"body":{"dependencies.html":{}}}],["keep",{"_index":3857,"title":{},"body":{"license.html":{}}}],["keeping",{"_index":3089,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["keeps",{"_index":889,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["kept",{"_index":1373,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["kernel",{"_index":3770,"title":{},"body":{"license.html":{}}}],["key",{"_index":860,"title":{},"body":{"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["keyframes",{"_index":2549,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["keys",{"_index":1821,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"license.html":{}}}],["kind",{"_index":3729,"title":{},"body":{"license.html":{}}}],["kinds",{"_index":3592,"title":{},"body":{"license.html":{}}}],["knob",{"_index":2105,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["know",{"_index":3388,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["knowingly",{"_index":4114,"title":{},"body":{"license.html":{}}}],["knowledge",{"_index":4121,"title":{},"body":{"license.html":{}}}],["known",{"_index":2852,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["label",{"_index":629,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["label.accordion",{"_index":1926,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["label_text",{"_index":2769,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["labelimage",{"_index":822,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["labels",{"_index":2865,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["labels_count",{"_index":2787,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["lacking",{"_index":1014,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["landscape",{"_index":2930,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["language",{"_index":3276,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["languagemap",{"_index":972,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["lanugage",{"_index":3531,"title":{},"body":{"index.html":{}}}],["large",{"_index":114,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["larger",{"_index":3884,"title":{},"body":{"license.html":{}}}],["largest",{"_index":1734,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{}}}],["last",{"_index":1456,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplSliderComponent.html":{}}}],["later",{"_index":3542,"title":{},"body":{"index.html":{},"license.html":{}}}],["latex",{"_index":260,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["launch_when_locked",{"_index":79,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["law",{"_index":3720,"title":{},"body":{"license.html":{}}}],["laws",{"_index":3697,"title":{},"body":{"license.html":{}}}],["lawsuit",{"_index":4089,"title":{},"body":{"license.html":{}}}],["layer",{"_index":1862,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["layout",{"_index":381,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["lead",{"_index":884,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["leave",{"_index":2390,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{},"classes/Widget.html":{}}}],["left",{"_index":124,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["left_icon_src",{"_index":3042,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["leftbuttonaction",{"_index":1511,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["leftbuttonicon",{"_index":1512,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["leftbuttonname",{"_index":1513,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["legacybrowser",{"_index":2676,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["legal",{"_index":3637,"title":{},"body":{"license.html":{}}}],["legend",{"_index":197,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["length",{"_index":2993,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["lesser",{"_index":4252,"title":{},"body":{"license.html":{}}}],["level",{"_index":1098,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["lfs",{"_index":3538,"title":{},"body":{"index.html":{}}}],["lfsthis",{"_index":3526,"title":{},"body":{"index.html":{}}}],["lgpl.html",{"_index":4254,"title":{},"body":{"license.html":{}}}],["liability",{"_index":4002,"title":{},"body":{"license.html":{}}}],["liable",{"_index":3717,"title":{},"body":{"license.html":{}}}],["libraries",{"_index":3762,"title":{},"body":{"license.html":{}}}],["library",{"_index":1068,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["libs/enketo/js/event",{"_index":978,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["libs/enketo/js/form",{"_index":979,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["libs/enketo/sass/core/_responsive.scss",{"_index":2526,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["libs/enketo/sass/grid/grid.scss",{"_index":2520,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["licence",{"_index":3379,"title":{},"body":{"contributing.html":{}}}],["license",{"_index":3574,"title":{"license.html":{}},"body":{"license.html":{},"properties.html":{}}}],["licensed",{"_index":3701,"title":{},"body":{"license.html":{}}}],["licensee",{"_index":3702,"title":{},"body":{"license.html":{}}}],["licensees",{"_index":3704,"title":{},"body":{"license.html":{}}}],["licenses",{"_index":3594,"title":{},"body":{"license.html":{}}}],["licensing",{"_index":4066,"title":{},"body":{"license.html":{}}}],["licensors",{"_index":4010,"title":{},"body":{"license.html":{}}}],["lifelong",{"_index":3365,"title":{},"body":{"contributing.html":{}}}],["light",{"_index":107,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["lightweight",{"_index":1002,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["likewise",{"_index":4060,"title":{},"body":{"license.html":{}}}],["limit",{"_index":3849,"title":{},"body":{"license.html":{}}}],["limitation",{"_index":4194,"title":{},"body":{"license.html":{}}}],["limited",{"_index":4183,"title":{},"body":{"license.html":{}}}],["limiting",{"_index":4001,"title":{},"body":{"license.html":{}}}],["line",{"_index":141,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["linear",{"_index":1630,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["link",{"_index":1355,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplNavigationBarComponent.html":{},"license.html":{}}}],["linked",{"_index":3785,"title":{},"body":{"license.html":{}}}],["linking",{"_index":4250,"title":{},"body":{"license.html":{}}}],["list",{"_index":698,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["list.filter",{"_index":2355,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["listanswers",{"_index":2206,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["listanswers.find((x",{"_index":2216,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["listkey",{"_index":2357,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["listnumbers",{"_index":2788,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["lists",{"_index":842,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["listvalue",{"_index":2358,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["literal",{"_index":975,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"classes/Widget.html":{},"miscellaneous/typealiases.html":{}}}],["litigation",{"_index":4086,"title":{},"body":{"license.html":{}}}],["load",{"_index":1048,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{}}}],["load/render",{"_index":2531,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["loadanimation(r",{"_index":2481,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["loaderrors",{"_index":1079,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["loaderrors.concat(this.enketoform.goto(\"//repeat[3]/node",{"_index":1088,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["loaderrors.length",{"_index":1081,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["loadform(formdata",{"_index":1069,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["local",{"_index":554,"title":{},"body":{"classes/BlankDate.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"index.html":{},"license.html":{}}}],["locales",{"_index":2693,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["locally",{"_index":3566,"title":{},"body":{"index.html":{}}}],["location",{"_index":1086,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["log",{"_index":1807,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["logdebuginfo",{"_index":1811,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["logo",{"_index":2537,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["long",{"_index":3807,"title":{},"body":{"license.html":{}}}],["look",{"_index":1247,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["looks",{"_index":142,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["loop",{"_index":2176,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["loopedslides",{"_index":2177,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["loss",{"_index":4201,"title":{},"body":{"license.html":{}}}],["losses",{"_index":4203,"title":{},"body":{"license.html":{}}}],["lost",{"_index":2428,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["lottie",{"_index":262,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"dependencies.html":{}}}],["lottie_src",{"_index":2558,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["lt",{"_index":941,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["machine",{"_index":3891,"title":{},"body":{"license.html":{}}}],["made",{"_index":1756,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["mail",{"_index":4232,"title":{},"body":{"license.html":{}}}],["main",{"_index":2695,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["maincontainer",{"_index":2713,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["maintain",{"_index":3919,"title":{},"body":{"license.html":{}}}],["major",{"_index":3766,"title":{},"body":{"license.html":{}}}],["make",{"_index":761,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"contributing.html":{},"license.html":{}}}],["make_me_smile",{"_index":1648,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["makes",{"_index":1286,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["making",{"_index":3272,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["manages",{"_index":3534,"title":{},"body":{"index.html":{}}}],["manner",{"_index":4102,"title":{},"body":{"license.html":{}}}],["manually",{"_index":871,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["manufacturer",{"_index":3654,"title":{},"body":{"license.html":{}}}],["map",{"_index":1299,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["map((childrow",{"_index":1918,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["map((cls",{"_index":3327,"title":{},"body":{"classes/Widget.html":{}}}],["map((r",{"_index":1875,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["mapping",{"_index":1759,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["mappings",{"_index":781,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["march",{"_index":4147,"title":{},"body":{"license.html":{}}}],["margin",{"_index":112,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["markdown",{"_index":3085,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["marked",{"_index":3033,"title":{},"body":{"components/TmplTextComponent.html":{},"dependencies.html":{},"license.html":{}}}],["marker",{"_index":2871,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["marks",{"_index":4015,"title":{},"body":{"license.html":{}}}],["masks",{"_index":3699,"title":{},"body":{"license.html":{}}}],["match",{"_index":623,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["matched",{"_index":1208,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["matches",{"_index":1193,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TemplateBaseComponent.html":{}}}],["matching",{"_index":316,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{},"dependencies.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{}}}],["material",{"_index":3813,"title":{},"body":{"license.html":{}}}],["materially",{"_index":3980,"title":{},"body":{"license.html":{}}}],["math",{"_index":3482,"title":{},"body":{"dependencies.html":{}}}],["math.floor((currentprogress",{"_index":1464,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["matomo/router",{"_index":3449,"title":{},"body":{"dependencies.html":{}}}],["matomo/tracker",{"_index":3451,"title":{},"body":{"dependencies.html":{}}}],["max",{"_index":165,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["max_length",{"_index":473,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["max_value",{"_index":919,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["max_value_label",{"_index":2789,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["maxgridwidth",{"_index":748,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["maximum",{"_index":708,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["maxlength",{"_index":454,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["maxsize",{"_index":973,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["maxvalue",{"_index":2790,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["maxwidth",{"_index":752,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["meaning",{"_index":4024,"title":{},"body":{"license.html":{}}}],["means",{"_index":3696,"title":{},"body":{"license.html":{}}}],["meant",{"_index":3256,"title":{},"body":{"classes/Widget.html":{}}}],["measure",{"_index":3828,"title":{},"body":{"license.html":{}}}],["measures",{"_index":3841,"title":{},"body":{"license.html":{}}}],["media",{"_index":184,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["medium",{"_index":1657,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"license.html":{}}}],["medium_round",{"_index":1659,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["meet",{"_index":3864,"title":{},"body":{"license.html":{}}}],["meets",{"_index":3751,"title":{},"body":{"license.html":{}}}],["mention",{"_index":3390,"title":{},"body":{"contributing.html":{}}}],["menu",{"_index":3749,"title":{},"body":{"license.html":{}}}],["merchantability",{"_index":4184,"title":{},"body":{"license.html":{}}}],["mere",{"_index":3731,"title":{},"body":{"license.html":{}}}],["mergexml",{"_index":3497,"title":{},"body":{"dependencies.html":{}}}],["mergexml/mergexml",{"_index":1027,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["merging",{"_index":4076,"title":{},"body":{"license.html":{}}}],["message",{"_index":2532,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{}}}],["met",{"_index":3799,"title":{},"body":{"license.html":{}}}],["metadata",{"_index":14,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["method",{"_index":368,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["methods",{"_index":36,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"index.html":{},"license.html":{}}}],["mid",{"_index":682,"title":{},"body":{"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["min",{"_index":616,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["min_value",{"_index":917,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["min_value_label",{"_index":2791,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["minimal",{"_index":1138,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["minimum",{"_index":701,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["mininput",{"_index":1507,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["minitemwidth",{"_index":746,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["minmax(${minitemwidth",{"_index":759,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["minutes",{"_index":583,"title":{},"body":{"classes/BlankDate.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["minvalue",{"_index":2792,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["miscellaneous",{"_index":4262,"title":{"miscellaneous/typealiases.html":{}},"body":{"miscellaneous/typealiases.html":{}}}],["misrepresentation",{"_index":4007,"title":{},"body":{"license.html":{}}}],["mixins.absolute",{"_index":1680,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["mixins.flex",{"_index":627,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["mixins.large",{"_index":2114,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{}}}],["mixins.largest",{"_index":1679,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["mixins.medium",{"_index":145,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["mixins.small",{"_index":1941,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTitleComponent.html":{}}}],["mixins.tiny",{"_index":2509,"title":{},"body":{"components/TmplNumberComponent.html":{},"components/TmplSliderComponent.html":{}}}],["mm",{"_index":1493,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["mm:ss",{"_index":2097,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["mobile",{"_index":3371,"title":{},"body":{"contributing.html":{}}}],["modal",{"_index":441,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["modal'},{'name",{"_index":211,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["modal.combo",{"_index":624,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component",{"_index":2214,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["modal.component.html",{"_index":443,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["modal.component.scss",{"_index":444,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts",{"_index":430,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:112",{"_index":600,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:118",{"_index":602,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:137",{"_index":612,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:23",{"_index":593,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:24",{"_index":596,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:25",{"_index":594,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:26",{"_index":592,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:27",{"_index":595,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:28",{"_index":605,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:29",{"_index":610,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:30",{"_index":609,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:31",{"_index":606,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:32",{"_index":604,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:33",{"_index":607,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:34",{"_index":608,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:35",{"_index":591,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:43",{"_index":603,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:60",{"_index":598,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:68",{"_index":601,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:89",{"_index":597,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.component.ts:98",{"_index":599,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["modal.present",{"_index":2227,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["modal/combo",{"_index":429,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["modalcontroller",{"_index":439,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["modalctrl",{"_index":1140,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["mode",{"_index":2833,"title":{},"body":{"components/TmplSliderComponent.html":{},"license.html":{}}}],["model",{"_index":914,"title":{},"body":{"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{},"license.html":{}}}],["models",{"_index":641,"title":{},"body":{"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"dependencies.html":{}}}],["modification",{"_index":3692,"title":{},"body":{"license.html":{}}}],["modifications",{"_index":3754,"title":{},"body":{"license.html":{}}}],["modified",{"_index":3647,"title":{},"body":{"license.html":{}}}],["modifies",{"_index":3867,"title":{},"body":{"license.html":{}}}],["modify",{"_index":3625,"title":{},"body":{"license.html":{}}}],["modifying",{"_index":3724,"title":{},"body":{"license.html":{}}}],["modifyrowsetter",{"_index":322,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["modifyrowsetter(row",{"_index":354,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["module",{"_index":2275,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["module:dom",{"_index":1356,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["modules",{"_index":1024,"title":{"modules.html":{}},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"modules.html":{}}}],["more",{"_index":3099,"title":{},"body":{"components/TmplTileComponent.html":{},"license.html":{}}}],["moreover",{"_index":4049,"title":{},"body":{"license.html":{}}}],["mormal",{"_index":2514,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["mouseevent",{"_index":1155,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{}}}],["move",{"_index":1403,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["moved",{"_index":1647,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["moving",{"_index":1977,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["moz",{"_index":2535,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["ms",{"_index":1995,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["much",{"_index":3346,"title":{},"body":{"classes/Widget.html":{}}}],["multiple",{"_index":2328,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{}}}],["mutation.attributename",{"_index":1322,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutation.target",{"_index":1326,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutation.type",{"_index":1320,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutationobserver",{"_index":1317,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutationobserver((mutations",{"_index":1318,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutationobserver.disconnect",{"_index":1339,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutationobserver.observe(el",{"_index":1330,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutations.foreach((mutation",{"_index":1319,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["mutationstracker",{"_index":1162,"title":{"classes/MutationsTracker.html":{}},"body":{"classes/MutationsTracker.html":{}}}],["na",{"_index":2821,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["name",{"_index":202,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["name:happy",{"_index":854,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["name:unhappy",{"_index":857,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["names",{"_index":1440,"title":{},"body":{"components/NavGroupComponent.html":{},"license.html":{}}}],["namespace",{"_index":1291,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["nan",{"_index":541,"title":{},"body":{"classes/BlankDate.html":{},"components/TmplTextComponent.html":{}}}],["native",{"_index":549,"title":{},"body":{"classes/BlankDate.html":{}}}],["native/core",{"_index":3440,"title":{},"body":{"dependencies.html":{}}}],["native/device",{"_index":3442,"title":{},"body":{"dependencies.html":{}}}],["native/http",{"_index":3443,"title":{},"body":{"dependencies.html":{}}}],["native/media",{"_index":3444,"title":{},"body":{"dependencies.html":{}}}],["native/status",{"_index":3445,"title":{},"body":{"dependencies.html":{}}}],["nature",{"_index":3881,"title":{},"body":{"license.html":{}}}],["nav",{"_index":215,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["nav_group",{"_index":1861,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["nave",{"_index":2541,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["navgroupcomponent",{"_index":214,"title":{"components/NavGroupComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["navigation",{"_index":265,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["necessarily",{"_index":2392,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["necessary",{"_index":4190,"title":{},"body":{"license.html":{}}}],["need",{"_index":2540,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["needed",{"_index":3675,"title":{},"body":{"license.html":{}}}],["needs",{"_index":3265,"title":{},"body":{"classes/Widget.html":{},"index.html":{}}}],["negative",{"_index":3342,"title":{},"body":{"classes/Widget.html":{}}}],["nested",{"_index":363,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["nested_color",{"_index":1624,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["network",{"_index":3733,"title":{},"body":{"license.html":{}}}],["new",{"_index":58,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"license.html":{}}}],["new'},{'name",{"_index":291,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["newhighlightedtaskgroup",{"_index":2999,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["newline",{"_index":1235,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["newlycompleted",{"_index":2961,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["newvalue",{"_index":2094,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["next",{"_index":1243,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplAnimatedSlidesComponent.html":{},"license.html":{}}}],["ng",{"_index":1652,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{}}}],["ng2",{"_index":2839,"title":{},"body":{"components/TmplSliderComponent.html":{},"dependencies.html":{}}}],["ngafterviewinit",{"_index":1603,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["ngonchanges",{"_index":2666,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["ngondestroy",{"_index":907,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["ngoninit",{"_index":80,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["ngstyle",{"_index":740,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["ngx",{"_index":2478,"title":{},"body":{"components/TmplLottieAnimation.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"dependencies.html":{}}}],["no_shadow",{"_index":1660,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["no_value",{"_index":2793,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["no_value_text",{"_index":2794,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["node",{"_index":1032,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{}}}],["node.comment_node",{"_index":1252,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["node.nodetype",{"_index":1251,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["node.parentelement",{"_index":1262,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["node.previoussibling",{"_index":1250,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["node.textcontent",{"_index":1253,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["nodename",{"_index":1231,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["nodes",{"_index":1188,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["nodethis",{"_index":3529,"title":{},"body":{"index.html":{}}}],["non",{"_index":1145,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/TemplatePopupComponent.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["noncommercially",{"_index":3912,"title":{},"body":{"license.html":{}}}],["none",{"_index":171,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["normal",{"_index":927,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{},"license.html":{}}}],["normally",{"_index":3941,"title":{},"body":{"license.html":{}}}],["note",{"_index":865,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/TemplateBaseComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{},"index.html":{}}}],["noted",{"_index":1020,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["nothing",{"_index":4061,"title":{},"body":{"license.html":{}}}],["nothing/undefined/null",{"_index":3317,"title":{},"body":{"classes/Widget.html":{}}}],["notice",{"_index":3744,"title":{},"body":{"license.html":{}}}],["notices",{"_index":3739,"title":{},"body":{"license.html":{}}}],["notifications",{"_index":3003,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{},"dependencies.html":{}}}],["notifies",{"_index":4050,"title":{},"body":{"license.html":{}}}],["notify",{"_index":4045,"title":{},"body":{"license.html":{}}}],["notstarted",{"_index":25,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["notwithstanding",{"_index":3997,"title":{},"body":{"license.html":{}}}],["noui",{"_index":2866,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["nouislider",{"_index":2840,"title":{},"body":{"components/TmplSliderComponent.html":{},"dependencies.html":{}}}],["nouislidercomponent",{"_index":2823,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["now",{"_index":3075,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["nowrap",{"_index":3008,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{}}}],["null",{"_index":92,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{}}}],["num",{"_index":2511,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["number",{"_index":65,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["number(item.split",{"_index":946,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["number(this._row.value",{"_index":2860,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["number_input",{"_index":1719,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["numbered",{"_index":3032,"title":{},"body":{"components/TmplTextComponent.html":{},"license.html":{}}}],["numcolumns",{"_index":3133,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["numoptions",{"_index":3129,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["o",{"_index":2536,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["obj",{"_index":488,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"classes/MutationsTracker.html":{}}}],["obj.classname",{"_index":1348,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["obj.completed",{"_index":1328,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["obj[field",{"_index":495,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["object",{"_index":859,"title":{},"body":{"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"classes/Widget.html":{},"dependencies.html":{},"license.html":{},"miscellaneous/typealiases.html":{}}}],["object.entries(button).foreach(([field",{"_index":899,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["object.entries(datalist",{"_index":2359,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["object.entries(listvalue",{"_index":2363,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["object.keys(localstorage).foreach",{"_index":1824,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["object.values(datalist).map((v",{"_index":2323,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["object.values(value[\"col",{"_index":1532,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["objects",{"_index":843,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["objecttoarray",{"_index":695,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["objecttoarray(answer_list",{"_index":877,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["objecttoarray(answerlist",{"_index":775,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["obligate",{"_index":4158,"title":{},"body":{"license.html":{}}}],["obligated",{"_index":3925,"title":{},"body":{"license.html":{}}}],["obligations",{"_index":3830,"title":{},"body":{"license.html":{}}}],["observable",{"_index":3474,"title":{},"body":{"dependencies.html":{}}}],["obtains",{"_index":1271,"title":{},"body":{"classes/MutationsTracker.html":{},"classes/Widget.html":{}}}],["occasionally",{"_index":3911,"title":{},"body":{"license.html":{}}}],["occurring",{"_index":4058,"title":{},"body":{"license.html":{}}}],["occurs",{"_index":3662,"title":{},"body":{"license.html":{}}}],["odk",{"_index":270,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["offer",{"_index":3635,"title":{},"body":{"license.html":{}}}],["offered",{"_index":3933,"title":{},"body":{"license.html":{}}}],["offering",{"_index":3915,"title":{},"body":{"license.html":{}}}],["official",{"_index":3393,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["offset",{"_index":176,"title":{},"body":{"components/AccordionSectionComponent.html":{},"classes/BlankDate.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/WorkshopsComponent.html":{}}}],["offsetminutestotal",{"_index":581,"title":{},"body":{"classes/BlankDate.html":{}}}],["offsets",{"_index":555,"title":{},"body":{"classes/BlankDate.html":{}}}],["on/off",{"_index":2822,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["onchanges",{"_index":2659,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["onclick",{"_index":1586,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["onclick(event",{"_index":1593,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["ondestroy",{"_index":811,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["one",{"_index":1762,"title":{},"body":{"components/TemplateBaseComponent.html":{},"license.html":{}}}],["onend",{"_index":2076,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["oninit",{"_index":13,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["online",{"_index":3518,"title":{},"body":{"index.html":{}}}],["onpause",{"_index":2080,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["onplay",{"_index":2070,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["onresize",{"_index":2566,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["onresize(event",{"_index":2578,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["opacity",{"_index":169,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/WorkshopsComponent.html":{}}}],["open",{"_index":139,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/WorkshopsComponent.html":{}}}],["open/close",{"_index":53,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["opened",{"_index":59,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["opening",{"_index":1136,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["openmodal",{"_index":2199,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["openpicker",{"_index":3119,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["opensection",{"_index":170,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["opensections",{"_index":1910,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["operate",{"_index":4206,"title":{},"body":{"license.html":{}}}],["operated",{"_index":3918,"title":{},"body":{"license.html":{}}}],["operating",{"_index":3772,"title":{},"body":{"license.html":{}}}],["operation",{"_index":361,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"license.html":{}}}],["opposed",{"_index":1091,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["opposite",{"_index":2391,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{},"classes/Widget.html":{}}}],["opt",{"_index":1022,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["option",{"_index":1670,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["optional",{"_index":350,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["optionally",{"_index":1192,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["options",{"_index":699,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSliderComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["options_per_row",{"_index":829,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["opts",{"_index":2518,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["orange",{"_index":1686,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["order",{"_index":1191,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["order_",{"_index":1186,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["ordinarily",{"_index":2325,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["organisation",{"_index":3394,"title":{},"body":{"contributing.html":{}}}],["organisations",{"_index":3400,"title":{},"body":{"contributing.html":{}}}],["organization",{"_index":4074,"title":{},"body":{"license.html":{}}}],["organizations",{"_index":3705,"title":{},"body":{"license.html":{}}}],["origin",{"_index":4008,"title":{},"body":{"license.html":{}}}],["original",{"_index":3295,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["originalinputvalue",{"_index":3247,"title":{},"body":{"classes/Widget.html":{}}}],["originalinputvalue(value",{"_index":3339,"title":{},"body":{"classes/Widget.html":{}}}],["others",{"_index":3618,"title":{},"body":{"license.html":{}}}],["otherwise",{"_index":345,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["out",{"_index":393,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["outline",{"_index":956,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["output",{"_index":49,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"license.html":{}}}],["outputs",{"_index":40,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["outside",{"_index":3817,"title":{},"body":{"license.html":{}}}],["over",{"_index":1975,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["overflow",{"_index":161,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["overlap",{"_index":2631,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["overlapping",{"_index":1921,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["overlayed",{"_index":1115,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["overridden",{"_index":3257,"title":{},"body":{"classes/Widget.html":{}}}],["override",{"_index":2686,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["overriding",{"_index":890,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["overview",{"_index":4255,"title":{"overview.html":{}},"body":{"overview.html":{}}}],["owned",{"_index":4098,"title":{},"body":{"license.html":{}}}],["oxford",{"_index":3406,"title":{},"body":{"contributing.html":{}}}],["p",{"_index":1654,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{}}}],["package",{"_index":3409,"title":{"dependencies.html":{},"properties.html":{}},"body":{}}],["packaged",{"_index":3873,"title":{},"body":{"license.html":{}}}],["packaging",{"_index":3765,"title":{},"body":{"license.html":{}}}],["pad2",{"_index":584,"title":{},"body":{"classes/BlankDate.html":{}}}],["padding",{"_index":152,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["page",{"_index":372,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{}}}],["pages",{"_index":366,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["pages.or",{"_index":2542,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["pairs",{"_index":861,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["paper",{"_index":4231,"title":{},"body":{"license.html":{}}}],["paragraph",{"_index":4036,"title":{},"body":{"license.html":{}}}],["paragraphs",{"_index":4107,"title":{},"body":{"license.html":{}}}],["param",{"_index":558,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/ICategoryList.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{}}}],["parameter",{"_index":1049,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{}}}],["parameter_list",{"_index":724,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["parameterlist",{"_index":2279,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parameterlist).process(rows",{"_index":2300,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parameters",{"_index":349,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["params",{"_index":2372,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["parent",{"_index":51,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["parent.elref",{"_index":1881,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["parent.elref.nativeelement.scrolltop",{"_index":1882,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["parent.matches(endselector",{"_index":1213,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["parent.matches(filterselector",{"_index":1211,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["parent.nodename",{"_index":1264,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["parent.parent",{"_index":1883,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["parent.parentelement",{"_index":1214,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["parent_centre_1",{"_index":3108,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["parent_centre_2",{"_index":3109,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["parent_centre_3",{"_index":3110,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["parent_centre_4",{"_index":3111,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["parent_point",{"_index":3064,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["parenting",{"_index":3364,"title":{},"body":{"contributing.html":{},"index.html":{}}}],["parentname",{"_index":1263,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["parse",{"_index":2344,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parseanswerlistitemstring(item",{"_index":790,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["parsed",{"_index":2338,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parsed[listkey",{"_index":2360,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parsed[listkey][itemkey",{"_index":2364,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parsedatalist(datalist",{"_index":2356,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parseditemdatalist",{"_index":2297,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parseditemrows",{"_index":2301,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["parseint(this._row.value",{"_index":2620,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["parsers",{"_index":787,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["parsevaluelistitems",{"_index":798,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["parsevaluelistitems(buttonlistraw",{"_index":806,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["part",{"_index":1008,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["part[data",{"_index":1386,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["partial",{"_index":722,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["particular",{"_index":3758,"title":{},"body":{"license.html":{}}}],["parties",{"_index":3730,"title":{},"body":{"license.html":{}}}],["parts",{"_index":3792,"title":{},"body":{"license.html":{}}}],["party",{"_index":3536,"title":{},"body":{"index.html":{},"license.html":{}}}],["party's",{"_index":4078,"title":{},"body":{"license.html":{}}}],["pass",{"_index":1412,"title":{},"body":{"components/NavGroupComponent.html":{},"license.html":{}}}],["passed",{"_index":739,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"classes/Widget.html":{}}}],["passing",{"_index":880,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["password",{"_index":3988,"title":{},"body":{"license.html":{}}}],["patent",{"_index":4035,"title":{},"body":{"license.html":{}}}],["patents",{"_index":3679,"title":{},"body":{"license.html":{}}}],["path",{"_index":993,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplButtonComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["path/to/repeat[2]/node",{"_index":1259,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["pattern",{"_index":3660,"title":{},"body":{"license.html":{}}}],["pausedstate",{"_index":1477,"title":{"classes/PausedState.html":{}},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["pausedstate(this.timer",{"_index":1549,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["payment",{"_index":4141,"title":{},"body":{"license.html":{}}}],["pdf",{"_index":2672,"title":{},"body":{"components/TmplPdfComponent.html":{},"dependencies.html":{}}}],["pdf'},{'name",{"_index":278,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["pdf.component.html",{"_index":2674,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["pdf.component.scss",{"_index":2673,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["pdfdefaultoptions",{"_index":2682,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["pdfdefaultoptions.assetsfolder",{"_index":2691,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["pdfdefaultoptions.locale",{"_index":2696,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["pdfs",{"_index":2705,"title":{},"body":{"components/TmplPdfComponent.html":{},"index.html":{}}}],["peer",{"_index":3928,"title":{},"body":{"license.html":{}}}],["peers",{"_index":3931,"title":{},"body":{"license.html":{}}}],["percentage",{"_index":1470,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["percentcomplete",{"_index":29,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["perform",{"_index":1868,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["performance",{"_index":3345,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["performing",{"_index":3781,"title":{},"body":{"license.html":{}}}],["performs",{"_index":3274,"title":{},"body":{"classes/Widget.html":{}}}],["period",{"_index":1976,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["permanently",{"_index":4043,"title":{},"body":{"license.html":{}}}],["permission",{"_index":3638,"title":{},"body":{"license.html":{}}}],["permissions",{"_index":3794,"title":{},"body":{"license.html":{}}}],["permissive",{"_index":3860,"title":{},"body":{"license.html":{}}}],["permit",{"_index":3887,"title":{},"body":{"license.html":{}}}],["permits",{"_index":4026,"title":{},"body":{"license.html":{}}}],["permitted",{"_index":3585,"title":{},"body":{"license.html":{}}}],["perpetuity",{"_index":3972,"title":{},"body":{"license.html":{}}}],["personal",{"_index":3940,"title":{},"body":{"license.html":{}}}],["pertinent",{"_index":4157,"title":{},"body":{"license.html":{}}}],["physical",{"_index":3895,"title":{},"body":{"license.html":{}}}],["physically",{"_index":3910,"title":{},"body":{"license.html":{}}}],["pick",{"_index":2322,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["picker",{"_index":1541,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["pickercontroller",{"_index":1497,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["pieces",{"_index":3613,"title":{},"body":{"license.html":{}}}],["pin",{"_index":2107,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["ping",{"_index":1525,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["pips",{"_index":2832,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["place",{"_index":2347,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["placeholder",{"_index":456,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["platform",{"_index":1498,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["play",{"_index":1554,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{}}}],["play_celebration",{"_index":2559,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["play_timer",{"_index":1557,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["player",{"_index":1526,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{}}}],["player.duration",{"_index":2099,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["playingstate",{"_index":1568,"title":{"classes/PlayingState.html":{}},"body":{"classes/PlayingState.html":{}}}],["playingstate(this.timer",{"_index":1566,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["please",{"_index":2707,"title":{},"body":{"components/TmplPdfComponent.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["plh",{"_index":16,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{}}}],["plh_lottie/habits/cascading_stars.json",{"_index":2606,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["plhanimations",{"_index":1415,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["plhanimations.fadeentryexit",{"_index":1421,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["plhanimations.fadeinout",{"_index":1961,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["plus",{"_index":1982,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplNumberComponent.html":{},"license.html":{}}}],["point",{"_index":275,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["point_wrapper",{"_index":2669,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["pointer",{"_index":1736,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["points",{"_index":272,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["pop_up",{"_index":669,"title":{},"body":{"components/FormComponent.html":{}}}],["pop_up_action_arg",{"_index":645,"title":{},"body":{"components/FormComponent.html":{}}}],["populate",{"_index":1433,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["populated",{"_index":1822,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["popup",{"_index":1111,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["port",{"_index":1003,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["portion",{"_index":3936,"title":{},"body":{"license.html":{}}}],["portrait",{"_index":2945,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["position",{"_index":110,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["positions",{"_index":1258,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["possesses",{"_index":3907,"title":{},"body":{"license.html":{}}}],["possession",{"_index":3871,"title":{},"body":{"license.html":{}}}],["possibility",{"_index":4209,"title":{},"body":{"license.html":{}}}],["possible",{"_index":407,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["possibly",{"_index":2272,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["power",{"_index":3843,"title":{},"body":{"license.html":{}}}],["practical",{"_index":3595,"title":{},"body":{"license.html":{}}}],["practice",{"_index":3668,"title":{},"body":{"license.html":{}}}],["pre",{"_index":686,"title":{},"body":{"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["preamble",{"_index":3590,"title":{},"body":{"license.html":{}}}],["precise",{"_index":3688,"title":{},"body":{"license.html":{}}}],["precisely",{"_index":3665,"title":{},"body":{"license.html":{}}}],["predecessor",{"_index":4079,"title":{},"body":{"license.html":{}}}],["preferable",{"_index":1016,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["preferred",{"_index":3753,"title":{},"body":{"license.html":{}}}],["prequisites",{"_index":3521,"title":{},"body":{"index.html":{}}}],["present",{"_index":1305,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["presented",{"_index":700,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["presents",{"_index":3747,"title":{},"body":{"license.html":{}}}],["preservation",{"_index":4004,"title":{},"body":{"license.html":{}}}],["preserveaspectratio",{"_index":2614,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["presumably",{"_index":3084,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["prevent",{"_index":3617,"title":{},"body":{"license.html":{}}}],["prevented",{"_index":3967,"title":{},"body":{"license.html":{}}}],["preview",{"_index":2132,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["previous",{"_index":401,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"classes/MutationsTracker.html":{},"components/TmplSliderComponent.html":{},"license.html":{}}}],["previoushighlightedtaskgroup",{"_index":2998,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["previously",{"_index":937,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["previousmutations",{"_index":1315,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["previousvalue",{"_index":2795,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["prevsibling",{"_index":1274,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["prevsibling.nodename",{"_index":1275,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["prevsibling.previoussibling",{"_index":1276,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["price",{"_index":3610,"title":{},"body":{"license.html":{}}}],["primarily",{"_index":4143,"title":{},"body":{"license.html":{}}}],["primary",{"_index":106,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["prior",{"_index":4046,"title":{},"body":{"license.html":{}}}],["prioritise_placeholder",{"_index":1721,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["prioritiseplaceholder",{"_index":1694,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["private",{"_index":78,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["problems",{"_index":3648,"title":{},"body":{"license.html":{}}}],["procedures",{"_index":3961,"title":{},"body":{"license.html":{}}}],["process",{"_index":1460,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"index.html":{}}}],["processbuttonfields(button",{"_index":898,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["processed",{"_index":347,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["processed[field",{"_index":902,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["processing",{"_index":2326,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["processor",{"_index":2332,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["processor.processcontainertemplaterows",{"_index":2334,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["processor.renderedrows",{"_index":2335,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["processors/item",{"_index":2261,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["processparameterlist",{"_index":1047,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["procuring",{"_index":4131,"title":{},"body":{"license.html":{}}}],["produce",{"_index":530,"title":{},"body":{"classes/BlankDate.html":{},"license.html":{}}}],["producing",{"_index":540,"title":{},"body":{"classes/BlankDate.html":{}}}],["product",{"_index":3896,"title":{},"body":{"license.html":{}}}],["products",{"_index":3663,"title":{},"body":{"license.html":{}}}],["program",{"_index":3604,"title":{},"body":{"license.html":{}}}],["program's",{"_index":3853,"title":{},"body":{"license.html":{}}}],["programmer",{"_index":4243,"title":{},"body":{"license.html":{}}}],["programming",{"_index":3530,"title":{},"body":{"index.html":{},"license.html":{}}}],["programs",{"_index":3608,"title":{},"body":{"license.html":{}}}],["progress",{"_index":168,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["progress_units_name",{"_index":2940,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["progress_variable",{"_index":1468,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["progressfield",{"_index":1400,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["progressfield.indexof",{"_index":1476,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["progressfieldmaximum",{"_index":1474,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["progresspercentage",{"_index":2963,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["progressstatus",{"_index":2890,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["progressstatuschange",{"_index":2962,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["progressunitsname",{"_index":2891,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["prohibit",{"_index":3667,"title":{},"body":{"license.html":{}}}],["prohibiting",{"_index":3839,"title":{},"body":{"license.html":{}}}],["prohibits",{"_index":4137,"title":{},"body":{"license.html":{}}}],["project",{"_index":1017,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"contributing.html":{},"index.html":{}}}],["prominent",{"_index":3750,"title":{},"body":{"license.html":{}}}],["prominently",{"_index":3742,"title":{},"body":{"license.html":{}}}],["promise",{"_index":3313,"title":{},"body":{"classes/Widget.html":{}}}],["promise((resolve",{"_index":1342,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["promise.reject",{"_index":1341,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["propagate",{"_index":3714,"title":{},"body":{"license.html":{}}}],["propagating",{"_index":4064,"title":{},"body":{"license.html":{}}}],["propagation",{"_index":3725,"title":{},"body":{"license.html":{}}}],["properties",{"_index":34,"title":{"properties.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"properties.html":{}}}],["property",{"_index":1451,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"license.html":{}}}],["propogate",{"_index":1872,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["propogated",{"_index":1092,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["proprietary",{"_index":3686,"title":{},"body":{"license.html":{}}}],["props",{"_index":1139,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"classes/Widget.html":{}}}],["protect",{"_index":3615,"title":{},"body":{"license.html":{}}}],["protecting",{"_index":3658,"title":{},"body":{"license.html":{}}}],["protection",{"_index":3640,"title":{},"body":{"license.html":{}}}],["protocols",{"_index":3985,"title":{},"body":{"license.html":{}}}],["prove",{"_index":4188,"title":{},"body":{"license.html":{}}}],["provide",{"_index":1137,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["provided",{"_index":1194,"title":{},"body":{"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["provider",{"_index":1914,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["provides",{"_index":1757,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["provision",{"_index":3674,"title":{},"body":{"license.html":{}}}],["provisionally",{"_index":4041,"title":{},"body":{"license.html":{}}}],["proxy",{"_index":4176,"title":{},"body":{"license.html":{}}}],["proxy's",{"_index":4178,"title":{},"body":{"license.html":{}}}],["public",{"_index":35,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["publicity",{"_index":4009,"title":{},"body":{"license.html":{}}}],["publicly",{"_index":3986,"title":{},"body":{"license.html":{}}}],["publish",{"_index":3856,"title":{},"body":{"license.html":{}}}],["published",{"_index":4174,"title":{},"body":{"license.html":{}}}],["pull",{"_index":3389,"title":{},"body":{"contributing.html":{}}}],["purpose",{"_index":2119,"title":{},"body":{"components/TmplButtonComponent.html":{},"license.html":{}}}],["purposes",{"_index":3944,"title":{},"body":{"license.html":{}}}],["pursuant",{"_index":4127,"title":{},"body":{"license.html":{}}}],["put(element",{"_index":1296,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["qr",{"_index":280,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["qrcode",{"_index":3503,"title":{},"body":{"dependencies.html":{}}}],["qualify",{"_index":4054,"title":{},"body":{"license.html":{}}}],["quality",{"_index":4187,"title":{},"body":{"license.html":{}}}],["query",{"_index":2290,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["query.pipe(debouncetime(50)).subscribe(async",{"_index":2292,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["question",{"_index":1084,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{}}}],["quick_start",{"_index":3062,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["quick_start_blue",{"_index":3106,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["quick_start_dark",{"_index":3107,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["quick_start_passive",{"_index":3105,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["quickstart",{"_index":3520,"title":{},"body":{"index.html":{}}}],["quiet",{"_index":1166,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["r",{"_index":1878,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplLottieAnimation.html":{}}}],["r._evalcontext.itemcontext.id",{"_index":2317,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["r.action_list",{"_index":1876,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["r.action_list.map((a",{"_index":2314,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["r.type",{"_index":675,"title":{},"body":{"components/FormComponent.html":{}}}],["r.value",{"_index":674,"title":{},"body":{"components/FormComponent.html":{},"components/TmplLottieAnimation.html":{}}}],["r?.parameter_list?.loop",{"_index":2482,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["radio",{"_index":283,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["radio.text",{"_index":613,"title":{},"body":{"components/ComboBoxModalComponent.html":{}}}],["radio_button_type",{"_index":834,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["radiobuttontype",{"_index":830,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["radioitems",{"_index":720,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["radion",{"_index":520,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["radius",{"_index":148,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["range",{"_index":2011,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplSliderComponent.html":{},"classes/Widget.html":{}}}],["range.createcontextualfragment",{"_index":3333,"title":{},"body":{"classes/Widget.html":{}}}],["range::part(bar",{"_index":2109,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["range_bar_disabled",{"_index":2066,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["rangebardisabled",{"_index":2012,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["rangebartouched",{"_index":2013,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["raw",{"_index":1848,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["rc3339",{"_index":562,"title":{},"body":{"classes/BlankDate.html":{}}}],["rd",{"_index":2744,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["re",{"_index":2269,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["read",{"_index":821,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["readable",{"_index":3892,"title":{},"body":{"license.html":{}}}],["readily",{"_index":4116,"title":{},"body":{"license.html":{}}}],["reading",{"_index":3990,"title":{},"body":{"license.html":{}}}],["readme",{"_index":2117,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["readonly",{"_index":3259,"title":{},"body":{"classes/Widget.html":{}}}],["ready",{"_index":3673,"title":{},"body":{"license.html":{}}}],["reason",{"_index":4125,"title":{},"body":{"license.html":{}}}],["reasonable",{"_index":3908,"title":{},"body":{"license.html":{}}}],["receipt",{"_index":4052,"title":{},"body":{"license.html":{}}}],["receive",{"_index":3397,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["received",{"_index":1426,"title":{},"body":{"components/NavGroupComponent.html":{},"license.html":{}}}],["receives",{"_index":4068,"title":{},"body":{"license.html":{}}}],["receiving",{"_index":4133,"title":{},"body":{"license.html":{}}}],["recipient",{"_index":3971,"title":{},"body":{"license.html":{}}}],["recipient's",{"_index":4123,"title":{},"body":{"license.html":{}}}],["recipients",{"_index":3629,"title":{},"body":{"license.html":{}}}],["recognized",{"_index":3755,"title":{},"body":{"license.html":{}}}],["recolor",{"_index":2545,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["recommend",{"_index":3258,"title":{},"body":{"classes/Widget.html":{}}}],["record",{"_index":777,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["red",{"_index":2461,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["redistribute",{"_index":4223,"title":{},"body":{"license.html":{}}}],["reduce",{"_index":1036,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["refactor",{"_index":2273,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["refactored",{"_index":1645,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["reference",{"_index":328,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["referenced",{"_index":2336,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["referring",{"_index":1436,"title":{},"body":{"components/NavGroupComponent.html":{},"license.html":{}}}],["refers",{"_index":3695,"title":{},"body":{"license.html":{}}}],["refrain",{"_index":4160,"title":{},"body":{"license.html":{}}}],["refresh",{"_index":1559,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["refresh_timer",{"_index":1563,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["refs",{"_index":2318,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["regard",{"_index":3995,"title":{},"body":{"license.html":{}}}],["regardless",{"_index":3872,"title":{},"body":{"license.html":{}}}],["regenerate",{"_index":3793,"title":{},"body":{"license.html":{}}}],["register",{"_index":3478,"title":{},"body":{"dependencies.html":{}}}],["regular",{"_index":126,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{},"index.html":{}}}],["reinstated",{"_index":4040,"title":{},"body":{"license.html":{}}}],["relationship",{"_index":3818,"title":{},"body":{"license.html":{}}}],["relative",{"_index":111,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["released",{"_index":3607,"title":{},"body":{"license.html":{}}}],["relevant",{"_index":780,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["relicensing",{"_index":4027,"title":{},"body":{"license.html":{}}}],["rely",{"_index":3347,"title":{},"body":{"classes/Widget.html":{}}}],["relying",{"_index":4115,"title":{},"body":{"license.html":{}}}],["remain",{"_index":330,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDrawerComponent.html":{},"license.html":{}}}],["remains",{"_index":3605,"title":{},"body":{"license.html":{}}}],["removal",{"_index":3996,"title":{},"body":{"license.html":{}}}],["remove",{"_index":1018,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["remove(element",{"_index":1308,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["removed",{"_index":1290,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplButtonComponent.html":{},"contributing.html":{}}}],["removes",{"_index":1224,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["removing",{"_index":1023,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{}}}],["render",{"_index":1005,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateHTMLComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["rendered",{"_index":768,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTileComponent.html":{},"license.html":{}}}],["renderersettings",{"_index":2609,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["rendering",{"_index":336,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["renderitems",{"_index":2295,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["renders",{"_index":2270,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["repair",{"_index":4192,"title":{},"body":{"license.html":{}}}],["repeat",{"_index":1239,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplToggleBarComponent.html":{}}}],["repeat(auto",{"_index":758,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["repeats",{"_index":1238,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["replace",{"_index":2319,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["replace(\"z",{"_index":576,"title":{},"body":{"classes/BlankDate.html":{}}}],["replaced",{"_index":3098,"title":{},"body":{"components/TmplTileComponent.html":{},"index.html":{}}}],["replacedactionrows",{"_index":2303,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["replaces",{"_index":556,"title":{},"body":{"classes/BlankDate.html":{}}}],["replacing",{"_index":1281,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["replaysubject",{"_index":814,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["replaysubject(1",{"_index":827,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["repo",{"_index":1010,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"index.html":{}}}],["repository",{"_index":3524,"title":{},"body":{"index.html":{}}}],["represent",{"_index":3960,"title":{},"body":{"license.html":{}}}],["representation",{"_index":968,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["reprocessing",{"_index":2329,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["request",{"_index":3386,"title":{},"body":{"contributing.html":{}}}],["requested",{"_index":3561,"title":{},"body":{"index.html":{}}}],["require",{"_index":3788,"title":{},"body":{"license.html":{}}}],["required",{"_index":872,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"index.html":{},"license.html":{}}}],["requirement",{"_index":3866,"title":{},"body":{"license.html":{}}}],["requirements",{"_index":3927,"title":{},"body":{"license.html":{}}}],["requires",{"_index":3646,"title":{},"body":{"license.html":{}}}],["requiring",{"_index":3708,"title":{},"body":{"license.html":{}}}],["res",{"_index":3467,"title":{},"body":{"dependencies.html":{}}}],["reschedule",{"_index":3001,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["reset",{"_index":3285,"title":{},"body":{"classes/Widget.html":{}}}],["resetbuttonhtml",{"_index":3245,"title":{},"body":{"classes/Widget.html":{}}}],["resolve",{"_index":1344,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["resolved",{"_index":3950,"title":{},"body":{"license.html":{}}}],["respect",{"_index":3626,"title":{},"body":{"license.html":{}}}],["respond",{"_index":52,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["responsibilities",{"_index":3624,"title":{},"body":{"license.html":{}}}],["responsible",{"_index":4070,"title":{},"body":{"license.html":{}}}],["restoring",{"_index":2849,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["restrict",{"_index":3681,"title":{},"body":{"license.html":{}}}],["restricting",{"_index":3840,"title":{},"body":{"license.html":{}}}],["restriction",{"_index":4025,"title":{},"body":{"license.html":{}}}],["restrictions",{"_index":4023,"title":{},"body":{"license.html":{}}}],["result",{"_index":665,"title":{},"body":{"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"license.html":{}}}],["result.push",{"_index":666,"title":{},"body":{"components/FormComponent.html":{}}}],["resulting",{"_index":3710,"title":{},"body":{"license.html":{}}}],["results",{"_index":315,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"contributing.html":{},"dependencies.html":{},"index.html":{},"license.html":{},"modules.html":{},"overview.html":{},"properties.html":{},"miscellaneous/typealiases.html":{}}}],["results.push(current",{"_index":1202,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["ret",{"_index":1309,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["retains",{"_index":3975,"title":{},"body":{"license.html":{}}}],["retrieve",{"_index":1820,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["return",{"_index":497,"title":{},"body":{"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["returned",{"_index":2340,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["returning",{"_index":1120,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["returns",{"_index":61,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["returntype",{"_index":1060,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["reverse",{"_index":626,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["reverts",{"_index":2851,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["review",{"_index":887,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["reviewed",{"_index":3097,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["reviewing",{"_index":4211,"title":{},"body":{"license.html":{}}}],["revised",{"_index":4166,"title":{},"body":{"license.html":{}}}],["rewind",{"_index":2113,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{}}}],["rewindnext",{"_index":2021,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["rewindprev",{"_index":2022,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["rfc",{"_index":551,"title":{},"body":{"classes/BlankDate.html":{}}}],["rgb(0",{"_index":1633,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["rgba(0",{"_index":1123,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{}}}],["rgba(255",{"_index":1791,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["rgba(black",{"_index":2943,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["right",{"_index":192,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"license.html":{}}}],["rightbuttonaction",{"_index":1514,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["rightbuttonicon",{"_index":1515,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["rightbuttonname",{"_index":1516,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["rights",{"_index":3616,"title":{},"body":{"license.html":{}}}],["ripple",{"_index":3087,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["risk",{"_index":4186,"title":{},"body":{"license.html":{}}}],["rom",{"_index":3978,"title":{},"body":{"license.html":{}}}],["rootnodename",{"_index":1255,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["rotate(180deg",{"_index":2115,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["rotate(90deg",{"_index":2510,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["rough",{"_index":384,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["round",{"_index":217,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["rounded",{"_index":149,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/WorkshopsComponent.html":{}}}],["rounded_corners",{"_index":194,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplTextComponent.html":{},"components/TmplVideoComponent.html":{}}}],["roundiconbuttoncomponent",{"_index":216,"title":{"components/RoundIconButtonComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["row",{"_index":324,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["row(r",{"_index":2479,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["row(row",{"_index":725,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["row(value",{"_index":1505,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["row._debug_name",{"_index":1424,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["row._dynamicfields?.parameter_list?.filter?.[0].fullexpression",{"_index":2354,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["row._dynamicfields?.value?.[0]?.fieldname",{"_index":2348,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["row.parameter_list",{"_index":2352,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["row.parameter_list.state",{"_index":3360,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["row.rows",{"_index":1874,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["row.service",{"_index":2264,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["row.value",{"_index":1435,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["row.value[0",{"_index":1450,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["rowid",{"_index":3354,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["rows",{"_index":762,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/WorkshopsComponent.html":{}}}],["rows.map((r",{"_index":2313,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["royalty",{"_index":4084,"title":{},"body":{"license.html":{}}}],["rules",{"_index":3984,"title":{},"body":{"license.html":{}}}],["run",{"_index":3532,"title":{},"body":{"index.html":{},"license.html":{}}}],["runfade",{"_index":1978,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["running",{"_index":3565,"title":{},"body":{"index.html":{},"license.html":{}}}],["runs",{"_index":3773,"title":{},"body":{"license.html":{}}}],["runtime",{"_index":789,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["rxdb",{"_index":3505,"title":{},"body":{"dependencies.html":{}}}],["rxjs",{"_index":815,"title":{},"body":{"interfaces/IButton-1.html":{},"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioGroupComponent.html":{},"dependencies.html":{}}}],["s",{"_index":727,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"classes/Widget.html":{}}}],["s.split(\":\").map((v",{"_index":493,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["safehtml",{"_index":1844,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["safest",{"_index":4225,"title":{},"body":{"license.html":{}}}],["sake",{"_index":3645,"title":{},"body":{"license.html":{}}}],["sale",{"_index":4093,"title":{},"body":{"license.html":{}}}],["same",{"_index":763,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"license.html":{}}}],["satisfy",{"_index":3926,"title":{},"body":{"license.html":{}}}],["save",{"_index":2515,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["save(opts",{"_index":1055,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["saved",{"_index":938,"title":{},"body":{"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["saying",{"_index":3922,"title":{},"body":{"license.html":{}}}],["scale",{"_index":1663,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["scaley(0.95",{"_index":2654,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["scaley(1.02",{"_index":2655,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["scaley(1.05",{"_index":2653,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["scaley(1.1",{"_index":2651,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["scaling",{"_index":2611,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["school",{"_index":4244,"title":{},"body":{"license.html":{}}}],["scope",{"_index":4136,"title":{},"body":{"license.html":{}}}],["screen",{"_index":1374,"title":{},"body":{"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["scripts",{"_index":3508,"title":{},"body":{"dependencies.html":{},"license.html":{}}}],["scroll",{"_index":417,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["scroll\").scrolltop",{"_index":1888,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["scrollable",{"_index":371,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDrawerComponent.html":{}}}],["scrollbar",{"_index":1132,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["scrolls",{"_index":369,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["scrolltotop",{"_index":323,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["sec",{"_index":1535,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["secinput",{"_index":1509,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["second",{"_index":1715,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplTileComponent.html":{}}}],["second_line_text",{"_index":3043,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["secondarily",{"_index":3716,"title":{},"body":{"license.html":{}}}],["secondary",{"_index":190,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplVideoComponent.html":{}}}],["seconds",{"_index":1524,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["section",{"_index":19,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["section'},{'name",{"_index":203,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["section.scss",{"_index":318,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["section[data",{"_index":1378,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["sectionindex",{"_index":1390,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["sections",{"_index":57,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"license.html":{}}}],["see",{"_index":1354,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplSliderComponent.html":{},"index.html":{},"license.html":{},"properties.html":{}}}],["seek",{"_index":2023,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["seen",{"_index":1387,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["select",{"_index":220,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["selected",{"_index":1379,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["selected=\"true",{"_index":2725,"title":{},"body":{"components/TmplRadioButtonGridComponent.html":{}}}],["selectedvalue",{"_index":446,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["selector",{"_index":15,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["selector'},{'name",{"_index":268,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["selector.component.html",{"_index":915,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["selector.component.scss",{"_index":916,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["selector.component.ts",{"_index":913,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["selector.component.ts:102",{"_index":2494,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:109",{"_index":2499,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:26",{"_index":2493,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:28",{"_index":2507,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:29",{"_index":2506,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:30",{"_index":2502,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:31",{"_index":2505,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:32",{"_index":2500,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:33",{"_index":2504,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:34",{"_index":2501,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:35",{"_index":2503,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:36",{"_index":2508,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:42",{"_index":2496,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:64",{"_index":2497,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector.component.ts:95",{"_index":2495,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["selector/number",{"_index":912,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["selectors",{"_index":1646,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["selects",{"_index":3278,"title":{},"body":{"classes/Widget.html":{}}}],["selecttextcomponent",{"_index":219,"title":{"components/SelectTextComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["self",{"_index":1118,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["sell",{"_index":4106,"title":{},"body":{"license.html":{}}}],["selling",{"_index":4092,"title":{},"body":{"license.html":{}}}],["semi",{"_index":1626,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["semiconductor",{"_index":3698,"title":{},"body":{"license.html":{}}}],["sentry/angular",{"_index":3452,"title":{},"body":{"dependencies.html":{}}}],["separable",{"_index":3935,"title":{},"body":{"license.html":{}}}],["separate",{"_index":3879,"title":{},"body":{"license.html":{}}}],["separately",{"_index":3876,"title":{},"body":{"license.html":{}}}],["series",{"_index":1273,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["serve",{"_index":3569,"title":{},"body":{"index.html":{}}}],["server",{"_index":3567,"title":{},"body":{"index.html":{},"license.html":{}}}],["serves",{"_index":3768,"title":{},"body":{"license.html":{}}}],["service",{"_index":2350,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"license.html":{}}}],["services",{"_index":2277,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["services/instance/template",{"_index":2263,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["services/template",{"_index":981,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{}}}],["services/template.service",{"_index":2215,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["servicing",{"_index":4191,"title":{},"body":{"license.html":{}}}],["set",{"_index":360,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{},"contributing.html":{},"index.html":{}}}],["set_item",{"_index":2309,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["set_items",{"_index":2310,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["set_local",{"_index":1785,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["setactionlistmeta",{"_index":2312,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["setfirebase",{"_index":3554,"title":{},"body":{"index.html":{}}}],["setinterval",{"_index":1337,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["setoriginalinputvalue(value",{"_index":3296,"title":{},"body":{"classes/Widget.html":{}}}],["setparams",{"_index":731,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["setrow(r",{"_index":2477,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["setrow(row",{"_index":1859,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["setrow(value",{"_index":3163,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["sets",{"_index":3292,"title":{},"body":{"classes/Widget.html":{}}}],["settaskgroupcompletedstatus",{"_index":2959,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["settaskgroupcompletedstatus(taskgroupcompletedfield",{"_index":2974,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["setter",{"_index":329,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"classes/Widget.html":{}}}],["setters",{"_index":1758,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["settimeout",{"_index":1994,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["settimeout((_",{"_index":2624,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["settimeout(async",{"_index":512,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["setting",{"_index":1782,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["setvalue(_value",{"_index":3290,"title":{},"body":{"classes/Widget.html":{}}}],["setvalue(val",{"_index":3166,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["setvalue(value",{"_index":1783,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["shade",{"_index":1738,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["shadow",{"_index":619,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["shadow(var",{"_index":1640,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["shall",{"_index":3824,"title":{},"body":{"license.html":{}}}],["share",{"_index":3600,"title":{},"body":{"license.html":{}}}],["shared",{"_index":386,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"dependencies.html":{},"license.html":{}}}],["sheet",{"_index":2130,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["short",{"_index":926,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplNumberComponent.html":{},"license.html":{}}}],["shouldhandlebyparent",{"_index":1892,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["show",{"_index":2539,"title":{},"body":{"components/TmplOdkFormComponent.html":{},"components/TmplToggleBarComponent.html":{},"license.html":{}}}],["show_tick_and_cross",{"_index":3205,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["showcelebrationanimation",{"_index":2560,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["showclosebutton",{"_index":1107,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["showing",{"_index":1865,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["shown",{"_index":1963,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["showtext",{"_index":2955,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["showtickandcross",{"_index":3187,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["shrink",{"_index":2950,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["sibling",{"_index":1187,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["siblings",{"_index":1184,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["sign",{"_index":4245,"title":{},"body":{"license.html":{}}}],["signature_pad",{"_index":1030,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["significant",{"_index":3341,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["similar",{"_index":3838,"title":{},"body":{"license.html":{}}}],["simple",{"_index":287,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["simple_checkbox",{"_index":677,"title":{},"body":{"components/FormComponent.html":{}}}],["simplified",{"_index":3564,"title":{},"body":{"index.html":{}}}],["simply",{"_index":1864,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["simultaneously",{"_index":4156,"title":{},"body":{"license.html":{}}}],["single",{"_index":4129,"title":{},"body":{"license.html":{}}}],["size",{"_index":180,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["sizing",{"_index":2101,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["skip",{"_index":1971,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["skip_text",{"_index":1970,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["skipintro",{"_index":1954,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["skiptext",{"_index":1953,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slice",{"_index":2616,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["slide",{"_index":2191,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["slider",{"_index":290,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["slider.component.html",{"_index":2786,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["slider.component.scss",{"_index":2785,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["sliderconfig",{"_index":2796,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["slides",{"_index":1870,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["slides'},{'name",{"_index":236,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["slides.component.html",{"_index":1950,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.scss",{"_index":1949,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts",{"_index":1948,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:13",{"_index":1959,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:15",{"_index":1957,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:17",{"_index":1958,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:19",{"_index":1960,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:26",{"_index":1955,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides.component.ts:53",{"_index":1956,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides/animated",{"_index":1947,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["slides_per_view",{"_index":2172,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["small",{"_index":163,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["smile",{"_index":2762,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["software",{"_index":3378,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["sold",{"_index":3945,"title":{},"body":{"license.html":{}}}],["sole",{"_index":3809,"title":{},"body":{"license.html":{}}}],["solely",{"_index":3820,"title":{},"body":{"license.html":{}}}],["solid",{"_index":955,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["solution",{"_index":1279,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["source",{"_index":4,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["space",{"_index":131,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["space_between",{"_index":2174,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["spacer",{"_index":2430,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["spacing",{"_index":712,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["span",{"_index":1618,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplNumberComponent.html":{}}}],["spare",{"_index":3905,"title":{},"body":{"license.html":{}}}],["speak",{"_index":3609,"title":{},"body":{"license.html":{}}}],["special",{"_index":3683,"title":{},"body":{"license.html":{}}}],["specific",{"_index":334,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"index.html":{},"license.html":{}}}],["specifically",{"_index":3787,"title":{},"body":{"license.html":{}}}],["specified",{"_index":709,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"index.html":{},"license.html":{}}}],["specifies",{"_index":4173,"title":{},"body":{"license.html":{}}}],["specify",{"_index":352,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplSliderComponent.html":{},"license.html":{}}}],["spirit",{"_index":4167,"title":{},"body":{"license.html":{}}}],["square",{"_index":146,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["squareiconbuttoncomponent",{"_index":222,"title":{"components/SquareIconButtonComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["src",{"_index":2014,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/.../form.ts",{"_index":4270,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["src/.../type",{"_index":4266,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["src/app/feature/campaign/campaign.service",{"_index":2982,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["src/app/shared/animations",{"_index":1416,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["src/app/shared/components/template/components/accordion/accordion.component.ts",{"_index":1907,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["src/app/shared/components/template/components/accordion/accordion.component.ts:10",{"_index":1911,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["src/app/shared/components/template/components/animated",{"_index":1946,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts",{"_index":2002,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:106",{"_index":2037,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:114",{"_index":2038,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:119",{"_index":2040,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:131",{"_index":2031,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:135",{"_index":2030,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:144",{"_index":2032,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:23",{"_index":2029,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:24",{"_index":2052,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:25",{"_index":2055,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:26",{"_index":2057,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:27",{"_index":2043,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:28",{"_index":2044,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:29",{"_index":2047,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:30",{"_index":2045,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:31",{"_index":2042,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:32",{"_index":2048,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:33",{"_index":2056,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:34",{"_index":2054,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:35",{"_index":2041,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:36",{"_index":2053,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:37",{"_index":2028,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:48",{"_index":2033,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:58",{"_index":2034,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:87",{"_index":2039,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:92",{"_index":2035,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/audio/audio.component.ts:97",{"_index":2036,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["src/app/shared/components/template/components/base",{"_index":1847,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplLatexComponent.html":{}}}],["src/app/shared/components/template/components/base.ts",{"_index":1753,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["src/app/shared/components/template/components/base.ts:34",{"_index":1754,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts",{"_index":2118,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts:18",{"_index":2125,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts:29",{"_index":2122,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts:31",{"_index":2126,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts:33",{"_index":2121,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/button/button.component.ts:35",{"_index":2124,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts",{"_index":2149,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts:18",{"_index":2167,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts:19",{"_index":2168,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts:20",{"_index":2159,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts:31",{"_index":2160,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/carousel/carousel.component.ts:45",{"_index":2162,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["src/app/shared/components/template/components/combo",{"_index":427,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["src/app/shared/components/template/components/dashed",{"_index":2230,"title":{},"body":{"components/TmplDashedBoxComponent.html":{}}}],["src/app/shared/components/template/components/data",{"_index":2238,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["src/app/shared/components/template/components/debugger.ts",{"_index":1788,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["src/app/shared/components/template/components/debugger.ts:101",{"_index":1814,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["src/app/shared/components/template/components/debugger.ts:80",{"_index":1812,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["src/app/shared/components/template/components/debugger.ts:84",{"_index":1819,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["src/app/shared/components/template/components/debugger.ts:85",{"_index":1816,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts",{"_index":2400,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts:11",{"_index":2409,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts:13",{"_index":2410,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts:14",{"_index":2411,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts:20",{"_index":2406,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/drawer/drawer.component.ts:24",{"_index":2407,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["src/app/shared/components/template/components/help",{"_index":2431,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["src/app/shared/components/template/components/html/html.component.ts",{"_index":1840,"title":{},"body":{"components/TemplateHTMLComponent.html":{}}}],["src/app/shared/components/template/components/html/html.component.ts:11",{"_index":1843,"title":{},"body":{"components/TemplateHTMLComponent.html":{}}}],["src/app/shared/components/template/components/icon",{"_index":2438,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["src/app/shared/components/template/components/image.ts",{"_index":2463,"title":{},"body":{"components/TmplImageComponent.html":{}}}],["src/app/shared/components/template/components/image.ts:35",{"_index":2466,"title":{},"body":{"components/TmplImageComponent.html":{}}}],["src/app/shared/components/template/components/latex/latex.component.ts",{"_index":2467,"title":{},"body":{"components/TmplLatexComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts",{"_index":9,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:61",{"_index":64,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:62",{"_index":66,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:63",{"_index":67,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:66",{"_index":45,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:68",{"_index":47,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/accordion_section.ts:74",{"_index":60,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/advanced",{"_index":1929,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{}}}],["src/app/shared/components/template/components/layout/animated_section.ts",{"_index":317,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["src/app/shared/components/template/components/layout/animated_section_group.ts",{"_index":422,"title":{},"body":{"components/AnimatedSectionGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display",{"_index":952,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts",{"_index":2369,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts:39",{"_index":2377,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts:40",{"_index":2376,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts:41",{"_index":2379,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts:47",{"_index":2374,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/display_group.ts:51",{"_index":2375,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/form.ts",{"_index":632,"title":{},"body":{"components/FormComponent.html":{}}}],["src/app/shared/components/template/components/layout/form.ts:25",{"_index":638,"title":{},"body":{"components/FormComponent.html":{}}}],["src/app/shared/components/template/components/layout/form.ts:29",{"_index":640,"title":{},"body":{"components/FormComponent.html":{}}}],["src/app/shared/components/template/components/layout/form.ts:32",{"_index":637,"title":{},"body":{"components/FormComponent.html":{}}}],["src/app/shared/components/template/components/layout/form.ts:44",{"_index":639,"title":{},"body":{"components/FormComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts",{"_index":1851,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:26",{"_index":1857,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:28",{"_index":1853,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:37",{"_index":1852,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:49",{"_index":1856,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:66",{"_index":1855,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:76",{"_index":1854,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/layout.ts:80",{"_index":1858,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts",{"_index":1371,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:155",{"_index":1399,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:171",{"_index":1402,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:181",{"_index":1408,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:79",{"_index":1414,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:80",{"_index":1413,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/nav_group.ts:83",{"_index":1397,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/app/shared/components/template/components/layout/popup.ts",{"_index":1103,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["src/app/shared/components/template/components/layout/popup.ts:102",{"_index":1902,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["src/app/shared/components/template/components/layout/popup.ts:111",{"_index":1901,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["src/app/shared/components/template/components/layout/popup.ts:118",{"_index":1899,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["src/app/shared/components/template/components/layout/popup.ts:94",{"_index":1898,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["src/app/shared/components/template/components/layout/workshops_accordion.ts",{"_index":3351,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["src/app/shared/components/template/components/layout/workshops_accordion.ts:22",{"_index":3355,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["src/app/shared/components/template/components/layout/workshops_accordion.ts:28",{"_index":3353,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["src/app/shared/components/template/components/lottie",{"_index":2470,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["src/app/shared/components/template/components/navigation",{"_index":794,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["src/app/shared/components/template/components/number",{"_index":911,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["src/app/shared/components/template/components/odk",{"_index":523,"title":{},"body":{"classes/BlankDate.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{},"miscellaneous/typealiases.html":{}}}],["src/app/shared/components/template/components/parent",{"_index":2656,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["src/app/shared/components/template/components/pdf/pdf.component.ts",{"_index":2671,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["src/app/shared/components/template/components/pdf/pdf.component.ts:15",{"_index":2681,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["src/app/shared/components/template/components/pdf/pdf.component.ts:16",{"_index":2680,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["src/app/shared/components/template/components/pdf/pdf.component.ts:17",{"_index":2678,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["src/app/shared/components/template/components/pdf/pdf.component.ts:32",{"_index":2679,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["src/app/shared/components/template/components/points",{"_index":2551,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["src/app/shared/components/template/components/qr",{"_index":2716,"title":{},"body":{"components/TmplQRCodeComponent.html":{}}}],["src/app/shared/components/template/components/radio",{"_index":690,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["src/app/shared/components/template/components/round",{"_index":1574,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["src/app/shared/components/template/components/select",{"_index":1688,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["src/app/shared/components/template/components/simple",{"_index":2763,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts",{"_index":2784,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:22",{"_index":2801,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:23",{"_index":2825,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:24",{"_index":2808,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:25",{"_index":2817,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:26",{"_index":2815,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:27",{"_index":2813,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:28",{"_index":2807,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:29",{"_index":2838,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:30",{"_index":2837,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:31",{"_index":2814,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:32",{"_index":2812,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:33",{"_index":2811,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:34",{"_index":2816,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:35",{"_index":2810,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:37",{"_index":2818,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:40",{"_index":2836,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:62",{"_index":2804,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:76",{"_index":2805,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:87",{"_index":2803,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/slider/slider.component.ts:92",{"_index":2806,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["src/app/shared/components/template/components/square",{"_index":1741,"title":{},"body":{"components/SquareIconButtonComponent.html":{}}}],["src/app/shared/components/template/components/subtitle.ts",{"_index":2874,"title":{},"body":{"components/TmplSubtitleComponent.html":{}}}],["src/app/shared/components/template/components/subtitle.ts:21",{"_index":2878,"title":{},"body":{"components/TmplSubtitleComponent.html":{}}}],["src/app/shared/components/template/components/subtitle.ts:22",{"_index":2876,"title":{},"body":{"components/TmplSubtitleComponent.html":{}}}],["src/app/shared/components/template/components/subtitle.ts:32",{"_index":2877,"title":{},"body":{"components/TmplSubtitleComponent.html":{}}}],["src/app/shared/components/template/components/task",{"_index":2879,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["src/app/shared/components/template/components/text",{"_index":3009,"title":{},"body":{"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["src/app/shared/components/template/components/text.ts",{"_index":3022,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/text.ts:18",{"_index":3027,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/text.ts:19",{"_index":3026,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/text.ts:20",{"_index":3028,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/text.ts:21",{"_index":3024,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/text.ts:30",{"_index":3025,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["src/app/shared/components/template/components/tile",{"_index":3034,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts",{"_index":1478,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:110",{"_index":3134,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:114",{"_index":3126,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:118",{"_index":3127,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:122",{"_index":3136,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:156",{"_index":3132,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:184",{"_index":3130,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:199",{"_index":1904,"title":{},"body":{"interfaces/TimerState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:201",{"_index":1905,"title":{},"body":{"interfaces/TimerState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:203",{"_index":1906,"title":{},"body":{"interfaces/TimerState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:205",{"_index":1903,"title":{},"body":{"interfaces/TimerState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:208",{"_index":1746,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:209",{"_index":1747,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:21",{"_index":3137,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:211",{"_index":1749,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:213",{"_index":1750,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:215",{"_index":1751,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:217",{"_index":1752,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:22",{"_index":3122,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:232",{"_index":1748,"title":{},"body":{"classes/State.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:236",{"_index":1570,"title":{},"body":{"classes/PlayingState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:25",{"_index":3123,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:26",{"_index":3146,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:260",{"_index":1573,"title":{},"body":{"classes/PlayingState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:27",{"_index":3154,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:273",{"_index":1486,"title":{},"body":{"classes/PausedState.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:28",{"_index":3158,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:29",{"_index":3142,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:30",{"_index":3143,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:31",{"_index":3144,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:32",{"_index":3150,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:33",{"_index":3151,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:34",{"_index":3152,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:35",{"_index":3141,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:36",{"_index":3140,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:37",{"_index":3160,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:38",{"_index":3159,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:39",{"_index":3139,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:40",{"_index":3162,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:41",{"_index":3138,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:42",{"_index":3156,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:43",{"_index":3157,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:44",{"_index":3147,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:45",{"_index":3155,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:46",{"_index":3148,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:47",{"_index":3149,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:48",{"_index":3161,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:56",{"_index":3165,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:60",{"_index":3167,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:69",{"_index":3121,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:90",{"_index":3125,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/timer/timer.component.ts:94",{"_index":3135,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["src/app/shared/components/template/components/title.ts",{"_index":3170,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/title.ts:28",{"_index":3174,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/title.ts:29",{"_index":3177,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/title.ts:30",{"_index":3176,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/title.ts:31",{"_index":3175,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/title.ts:37",{"_index":3173,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["src/app/shared/components/template/components/toggle",{"_index":3181,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["src/app/shared/components/template/components/video.ts",{"_index":3228,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["src/app/shared/components/template/components/video.ts:22",{"_index":3233,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["src/app/shared/components/template/components/video.ts:23",{"_index":3234,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["src/app/shared/components/template/components/video.ts:29",{"_index":3232,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["src/app/shared/model",{"_index":432,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/WorkshopsComponent.html":{}}}],["src/app/shared/services/audio/audio.player",{"_index":1502,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["src/app/shared/services/audio/audio.service",{"_index":1500,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["src/app/shared/services/data/app",{"_index":2981,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["src/app/shared/services/dynamic",{"_index":2257,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["src/app/shared/services/task/task.service",{"_index":2169,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["src/app/shared/utils",{"_index":73,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/ICategoryList.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["src/app/shared/utils/utils",{"_index":1419,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["src/environments/firebaseconfig.sample.ts",{"_index":3558,"title":{},"body":{"index.html":{}}}],["src/environments/firebaseconfig.tsthe",{"_index":3559,"title":{},"body":{"index.html":{}}}],["src/theme/mixins",{"_index":101,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["src/theme/mixins.scss",{"_index":187,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplVideoComponent.html":{}}}],["ss",{"_index":1494,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["stacktrace",{"_index":3510,"title":{},"body":{"dependencies.html":{}}}],["stand",{"_index":3672,"title":{},"body":{"license.html":{}}}],["standalone",{"_index":1143,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["standard",{"_index":151,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["standards",{"_index":3756,"title":{},"body":{"license.html":{}}}],["star",{"_index":2561,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["start",{"_index":191,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplVideoComponent.html":{},"index.html":{},"license.html":{}}}],["started",{"_index":3362,"title":{"contributing.html":{},"index.html":{},"license.html":{}},"body":{}}],["starting_minutes",{"_index":1522,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["starting_page",{"_index":2701,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["starting_seconds",{"_index":1523,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["startingpage",{"_index":2677,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["starts",{"_index":4234,"title":{},"body":{"license.html":{}}}],["startthis",{"_index":3568,"title":{},"body":{"index.html":{}}}],["state",{"_index":377,"title":{"classes/State.html":{}},"body":{"components/AnimatedSectionComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["state(\"in",{"_index":396,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["state(\"out",{"_index":397,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["state:209",{"_index":1487,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{}}}],["state:215",{"_index":1491,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{}}}],["state:217",{"_index":1495,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{}}}],["state:232",{"_index":1490,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{}}}],["state:251",{"_index":1571,"title":{},"body":{"classes/PlayingState.html":{}}}],["state:256",{"_index":1572,"title":{},"body":{"classes/PlayingState.html":{}}}],["state:286",{"_index":1488,"title":{},"body":{"classes/PausedState.html":{}}}],["state:290",{"_index":1489,"title":{},"body":{"classes/PausedState.html":{}}}],["stated",{"_index":3798,"title":{},"body":{"license.html":{}}}],["statement",{"_index":4029,"title":{},"body":{"license.html":{}}}],["states",{"_index":3680,"title":{},"body":{"license.html":{}}}],["static",{"_index":331,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["stating",{"_index":3859,"title":{},"body":{"license.html":{}}}],["status",{"_index":31,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["step",{"_index":2797,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["stepped",{"_index":2835,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["stepper",{"_index":1410,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["steps",{"_index":1261,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["steps.push(nodename",{"_index":1266,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["steps.push(parentname",{"_index":1269,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["steps.reverse().join",{"_index":1270,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["still",{"_index":536,"title":{},"body":{"classes/BlankDate.html":{},"components/TemplateLayoutComponent.html":{}}}],["stop",{"_index":1207,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplToggleBarComponent.html":{}}}],["storage",{"_index":1278,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TemplateDebuggerComponent.html":{},"license.html":{}}}],["stored",{"_index":1283,"title":{},"body":{"classes/MutationsTracker.html":{},"index.html":{}}}],["strange",{"_index":885,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["strangely",{"_index":3073,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["string",{"_index":43,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{}}}],["stringproperties",{"_index":489,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["stringproperties.foreach((s",{"_index":491,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["strings",{"_index":852,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{},"classes/Widget.html":{}}}],["stroke",{"_index":2434,"title":{},"body":{"components/TmplHelpIconComponent.html":{}}}],["structural",{"_index":2266,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["style",{"_index":378,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["styles",{"_index":5,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["styles.includes(\"dashed_box",{"_index":2387,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["styles.includes(\"form",{"_index":2386,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["styleurls",{"_index":20,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["style~=\"card",{"_index":1635,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["style~=\"column",{"_index":2393,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["style~=\"in_button",{"_index":3221,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["style~=\"light",{"_index":2000,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["style~=\"nested_color",{"_index":1629,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["style~=\"no",{"_index":2465,"title":{},"body":{"components/TmplImageComponent.html":{}}}],["style~=\"row",{"_index":2398,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["style~=\"wrap",{"_index":2394,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["stylings",{"_index":3094,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["subdividing",{"_index":4075,"title":{},"body":{"license.html":{}}}],["subject",{"_index":4069,"title":{},"body":{"license.html":{}}}],["sublicenses",{"_index":4103,"title":{},"body":{"license.html":{}}}],["sublicensing",{"_index":3821,"title":{},"body":{"license.html":{}}}],["submit",{"_index":635,"title":{},"body":{"components/FormComponent.html":{},"components/TmplOdkFormComponent.html":{},"contributing.html":{}}}],["submitting",{"_index":3372,"title":{},"body":{"contributing.html":{}}}],["subprograms",{"_index":3786,"title":{},"body":{"license.html":{}}}],["subroutine",{"_index":4248,"title":{},"body":{"license.html":{}}}],["subscribe",{"_index":1695,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["subscribes",{"_index":2267,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["subscribetodata",{"_index":2286,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["subscription",{"_index":1709,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplDataItemsComponent.html":{}}}],["subsection",{"_index":3913,"title":{},"body":{"license.html":{}}}],["substantial",{"_index":3957,"title":{},"body":{"license.html":{}}}],["substantially",{"_index":3670,"title":{},"body":{"license.html":{}}}],["subtasks",{"_index":2988,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["subtasks.filter((task",{"_index":2991,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["subtasks.length",{"_index":2990,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["subtaskscompleted",{"_index":2956,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["subtaskstotal",{"_index":2957,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["subtitle",{"_index":181,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/WorkshopsComponent.html":{}}}],["subtitle'},{'name",{"_index":293,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["subtitle.scss",{"_index":2875,"title":{},"body":{"components/TmplSubtitleComponent.html":{}}}],["subtitles",{"_index":3230,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["subtitles_src",{"_index":3231,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["subtree",{"_index":1333,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["such",{"_index":1011,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplOdkFormComponent.html":{},"index.html":{},"license.html":{}}}],["sue",{"_index":4113,"title":{},"body":{"license.html":{}}}],["suffice",{"_index":3964,"title":{},"body":{"license.html":{}}}],["summary",{"_index":1796,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["supabase/supabase",{"_index":3454,"title":{},"body":{"dependencies.html":{}}}],["super",{"_index":647,"title":{},"body":{"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{}}}],["super(nan",{"_index":546,"title":{},"body":{"classes/BlankDate.html":{}}}],["super(timer",{"_index":1552,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["supplement",{"_index":3991,"title":{},"body":{"license.html":{}}}],["supplied",{"_index":2346,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["support",{"_index":391,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"license.html":{}}}],["supported",{"_index":2706,"title":{},"body":{"components/TmplPdfComponent.html":{},"components/TmplSliderComponent.html":{}}}],["supports",{"_index":3548,"title":{},"body":{"index.html":{},"license.html":{}}}],["sure",{"_index":1287,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["surrender",{"_index":3621,"title":{},"body":{"license.html":{}}}],["survive",{"_index":4028,"title":{},"body":{"license.html":{}}}],["sustained",{"_index":4204,"title":{},"body":{"license.html":{}}}],["svg",{"_index":2610,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["swiper",{"_index":2155,"title":{},"body":{"components/TmplCarouselComponent.html":{},"dependencies.html":{}}}],["swiperoptions",{"_index":2166,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["switch",{"_index":900,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["sync",{"_index":1561,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{},"index.html":{}}}],["syncable",{"_index":3476,"title":{},"body":{"dependencies.html":{}}}],["system",{"_index":3761,"title":{},"body":{"license.html":{}}}],["systematic",{"_index":3659,"title":{},"body":{"license.html":{}}}],["tab",{"_index":1675,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["table",{"_index":1799,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["take",{"_index":3597,"title":{},"body":{"license.html":{}}}],["taking",{"_index":3368,"title":{},"body":{"contributing.html":{}}}],["tall",{"_index":1658,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["tangible",{"_index":3939,"title":{},"body":{"license.html":{}}}],["tap",{"_index":2829,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["target",{"_index":756,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplSliderComponent.html":{}}}],["target_template",{"_index":797,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["task",{"_index":295,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["task_group",{"_index":2188,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["task_group_data",{"_index":2194,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["task_group_id",{"_index":2923,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["task_id",{"_index":2927,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["taskgroupcompletedfield",{"_index":2960,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["taskgroupdatalist",{"_index":2892,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["taskgroupid",{"_index":2893,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["taskgroupslist",{"_index":2193,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["taskid",{"_index":2894,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["taskservice",{"_index":2158,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["td",{"_index":1801,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["team",{"_index":3563,"title":{},"body":{"index.html":{}}}],["technological",{"_index":3827,"title":{},"body":{"license.html":{}}}],["tells",{"_index":3745,"title":{},"body":{"license.html":{}}}],["temp",{"_index":873,"title":{},"body":{"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["template",{"_index":23,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["template.parser",{"_index":2343,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["templateassetservice",{"_index":980,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["templatebasecomponent",{"_index":11,"title":{"components/TemplateBaseComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["templatecontainercomponent",{"_index":325,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{}}}],["templatedebuggercomponent",{"_index":224,"title":{"components/TemplateDebuggerComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["templatefieldservice",{"_index":1396,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["templatehtmlcomponent",{"_index":226,"title":{"components/TemplateHTMLComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["templatelayoutcomponent",{"_index":228,"title":{"components/TemplateLayoutComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["templatelayoutcomponent:132",{"_index":1406,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:26",{"_index":373,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:28",{"_index":333,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:37",{"_index":327,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:49",{"_index":362,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:66",{"_index":355,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["templatelayoutcomponent:76",{"_index":339,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["templatelayoutcomponent:80",{"_index":375,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["templatelayoutcomponent:89",{"_index":1407,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["templatename",{"_index":1108,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["templatenames",{"_index":1391,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["templatepopupcomponent",{"_index":229,"title":{"components/TemplatePopupComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["templaterowservice",{"_index":2262,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["templaterowservice(this.injector",{"_index":2333,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["templates",{"_index":1141,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplTileComponent.html":{}}}],["templateservice",{"_index":2201,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["templateurl",{"_index":442,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{}}}],["templatevariablesservice",{"_index":2248,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["temporary",{"_index":414,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["term",{"_index":3796,"title":{},"body":{"license.html":{}}}],["terminal",{"_index":4233,"title":{},"body":{"license.html":{}}}],["terminate",{"_index":4034,"title":{},"body":{"license.html":{}}}],["terminated",{"_index":4053,"title":{},"body":{"license.html":{}}}],["terminates",{"_index":4042,"title":{},"body":{"license.html":{}}}],["termination",{"_index":4031,"title":{},"body":{"license.html":{}}}],["terms",{"_index":3631,"title":{},"body":{"license.html":{}}}],["tests",{"_index":3264,"title":{},"body":{"classes/Widget.html":{}}}],["text",{"_index":178,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["text'},{'name",{"_index":221,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["text.component.html",{"_index":1692,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.scss",{"_index":1691,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts",{"_index":1690,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:21",{"_index":1704,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:22",{"_index":1703,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:23",{"_index":1711,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:24",{"_index":1708,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:25",{"_index":1702,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:26",{"_index":1705,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:27",{"_index":1712,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:30",{"_index":1707,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:32",{"_index":1710,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:38",{"_index":1699,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:51",{"_index":1701,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text.component.ts:62",{"_index":1698,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text/select",{"_index":1689,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["text_align",{"_index":1717,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTitleComponent.html":{}}}],["text_area",{"_index":678,"title":{},"body":{"components/FormComponent.html":{},"components/TmplTextAreaComponent.html":{}}}],["text_box",{"_index":676,"title":{},"body":{"components/FormComponent.html":{}}}],["textalign",{"_index":1585,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTitleComponent.html":{}}}],["textfromlist",{"_index":2220,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["texttitle",{"_index":450,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["thanks",{"_index":3367,"title":{},"body":{"contributing.html":{}}}],["that.element.closest(\".question",{"_index":3319,"title":{},"body":{"classes/Widget.html":{}}}],["that.element.hasattribute(\"readonly",{"_index":3322,"title":{},"body":{"classes/Widget.html":{}}}],["that.element.nodename.tolowercase",{"_index":3321,"title":{},"body":{"classes/Widget.html":{}}}],["that.element.readonly",{"_index":3323,"title":{},"body":{"classes/Widget.html":{}}}],["theme",{"_index":974,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["then((e",{"_index":1542,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["therefore",{"_index":3622,"title":{},"body":{"license.html":{}}}],["thicker",{"_index":3092,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["thin",{"_index":150,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["things",{"_index":3614,"title":{},"body":{"license.html":{}}}],["third",{"_index":3852,"title":{},"body":{"license.html":{}}}],["this._getprops",{"_index":3308,"title":{},"body":{"classes/Widget.html":{}}}],["this._init",{"_index":3314,"title":{},"body":{"classes/Widget.html":{}}}],["this._isdismissed",{"_index":1990,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this._props",{"_index":3307,"title":{},"body":{"classes/Widget.html":{}}}],["this._resolvewhentrue",{"_index":1351,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._row",{"_index":93,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTimerComponent.html":{}}}],["this._row._debug_name",{"_index":1465,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this._row._nested_name",{"_index":849,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TemplateBaseComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this._row.action_list",{"_index":1777,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["this._row.disabled",{"_index":82,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["this._row.name",{"_index":1775,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{}}}],["this._row.parameter_list",{"_index":733,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this._row.parameter_list?.style?.includes(\"numbered",{"_index":3031,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["this._row.parameter_list[\"customanswer",{"_index":2219,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["this._row.parameter_list[\"max_progress_field",{"_index":1475,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this._row.parameter_list[\"progress_field",{"_index":1473,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this._row.rows",{"_index":1837,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/WorkshopsComponent.html":{}}}],["this._row.rows.foreach((r",{"_index":673,"title":{},"body":{"components/FormComponent.html":{}}}],["this._row.rows.length",{"_index":2180,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this._row.type",{"_index":1772,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["this._row.value",{"_index":95,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ICategoryList.html":{},"components/TmplAudioComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{}}}],["this._storage.delete(element",{"_index":1312,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.get(element",{"_index":1302,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.get(element).delete(key",{"_index":1310,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.get(element).set(key",{"_index":1300,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.get(key).size",{"_index":1311,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.has(element",{"_index":1297,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._storage.set(element",{"_index":1298,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this._wait(fadetime",{"_index":1984,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.actions",{"_index":652,"title":{},"body":{"components/FormComponent.html":{}}}],["this.addparentactionsfilter",{"_index":1880,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["this.addrowdefaultactions(r.action_list",{"_index":1877,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["this.animcelebrationoptions",{"_index":2607,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.animoptions",{"_index":2484,"title":{},"body":{"components/TmplLottieAnimation.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["this.answer_list",{"_index":844,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.appdataservice.getsheet(\"data_list",{"_index":2987,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.arrayofbtn",{"_index":845,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.buildform",{"_index":478,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.button_text",{"_index":656,"title":{},"body":{"components/FormComponent.html":{}}}],["this.buttonalign",{"_index":1612,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["this.buttonlist",{"_index":805,"title":{},"body":{"interfaces/IButton.html":{},"components/TmplNavigationBarComponent.html":{}}}],["this.calculateanswer",{"_index":459,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.campaignservice.schedulecampaignnotifications",{"_index":3005,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.category_list",{"_index":924,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.category_size",{"_index":935,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.cdr.markforcheck",{"_index":2308,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.changevalue(\"no_value",{"_index":2855,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.changevalue(typeof",{"_index":2853,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.checkifcontainsnextarrayitem(this.valuesfromcategorylist",{"_index":942,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.checkprogressstatus",{"_index":2922,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.classchanges",{"_index":1316,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.classchanges.get(element",{"_index":1346,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.classchanges.get(element).find((obj",{"_index":1352,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.classchanges.get(mutation.target",{"_index":1324,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.classchanges.set(element",{"_index":1350,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.classchanges.set(mutation.target",{"_index":1329,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.closemodal",{"_index":507,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.completed",{"_index":87,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["this.completedfield",{"_index":2925,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.completedicon",{"_index":2933,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.componentdestroyed$.complete",{"_index":909,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.componentdestroyed$.next(true",{"_index":908,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.config.centeredslides",{"_index":2181,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.config.loop",{"_index":2175,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.config.loopedslides",{"_index":2179,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.config.slidesperview",{"_index":2171,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.config.spacebetween",{"_index":2173,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.constructor.name",{"_index":3350,"title":{},"body":{"classes/Widget.html":{}}}],["this.converttoobject",{"_index":461,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.count",{"_index":2667,"title":{},"body":{"components/TmplParentPointCounterComponent.html":{}}}],["this.createactions",{"_index":653,"title":{},"body":{"components/FormComponent.html":{}}}],["this.createarraybtnelement(this.answer_list",{"_index":846,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.currenttimesong",{"_index":2078,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.customanswerselected",{"_index":480,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{}}}],["this.customupdatewhenrewind",{"_index":2087,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.datalistname",{"_index":2281,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.dataquery",{"_index":2287,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.dataquery$.unsubscribe",{"_index":2288,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.deviceinfo",{"_index":648,"title":{},"body":{"components/FormComponent.html":{}}}],["this.deviceinfo[\"__zone_symbol__value",{"_index":681,"title":{},"body":{"components/FormComponent.html":{}}}],["this.disabled",{"_index":1609,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{}}}],["this.dismiss",{"_index":1159,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["this.dismiss(value",{"_index":1153,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["this.displayvalue",{"_index":930,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.domsanitizer.bypasssecuritytrusthtml(this._row.value",{"_index":1850,"title":{},"body":{"components/TemplateHTMLComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["this.drawer.nativeelement",{"_index":2413,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["this.dynamicdataservice.query$(\"data_list",{"_index":2291,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.dynamicdataservice.ready",{"_index":2289,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.element",{"_index":3303,"title":{},"body":{"classes/Widget.html":{}}}],["this.element.disabled",{"_index":3330,"title":{},"body":{"classes/Widget.html":{}}}],["this.element.dispatchevent(event.change",{"_index":3349,"title":{},"body":{"classes/Widget.html":{}}}],["this.element.getattribute(\"data",{"_index":3331,"title":{},"body":{"classes/Widget.html":{}}}],["this.element.multiple",{"_index":3329,"title":{},"body":{"classes/Widget.html":{}}}],["this.elref.nativeelement.closest(\".display",{"_index":1604,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["this.elref.nativeelement.parentelement.parentelement.style.setproperty(\"flex",{"_index":1606,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["this.enketoform",{"_index":1074,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.enketoform.getdatastr",{"_index":1058,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.enketoform.init",{"_index":1080,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.enketoform.model.events.addeventlistener",{"_index":1093,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.enketoform.view.html.addeventlistener",{"_index":1099,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.errormessage",{"_index":2702,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["this.errortxt",{"_index":2082,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.evaluatetaskgroupdata",{"_index":2983,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.fadesection[i",{"_index":1981,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.fadetimes",{"_index":1980,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.fadetimes.push(getnumberparamfromtemplaterow(row",{"_index":1972,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.false_text",{"_index":3202,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["this.fb.group",{"_index":499,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.fillinform",{"_index":651,"title":{},"body":{"components/FormComponent.html":{}}}],["this.first_display_term",{"_index":929,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.first_line_text",{"_index":3059,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.flexwidth",{"_index":905,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.form",{"_index":477,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.addcontrol(\"customanswer",{"_index":502,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"answer\").setvalue(el",{"_index":508,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"answer\").setvalue(null",{"_index":506,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"answer\").setvalue(this.selectedvalue",{"_index":481,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"answer\").value",{"_index":504,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"customanswer\").setvalue(null",{"_index":509,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"customanswer\").setvalue(this.selectedvalue",{"_index":482,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form.get(\"customanswer\").value",{"_index":517,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.form[\"device_info",{"_index":680,"title":{},"body":{"components/FormComponent.html":{}}}],["this.form[r.name",{"_index":679,"title":{},"body":{"components/FormComponent.html":{}}}],["this.formcontainerel.nativeelement.innerhtml",{"_index":1071,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.formcontainerel.nativeelement.queryselector(\"form",{"_index":1073,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.formdata",{"_index":476,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.generategridstyle",{"_index":737,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.generateitemlist",{"_index":735,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.generatestyles",{"_index":958,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["this.getactivesectionidx(row?.parameter_list?.progress_field",{"_index":1432,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.getflexwidth",{"_index":847,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.getopenheight()}px",{"_index":2419,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["this.getparams",{"_index":81,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["this.gettext(this._row.value",{"_index":2218,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["this.gettypefromstyles(this.params.style",{"_index":2384,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["this.go_to_action_arg",{"_index":659,"title":{},"body":{"components/FormComponent.html":{}}}],["this.gotosection(this.sectionindex",{"_index":1458,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.gridstyle",{"_index":736,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.groupname",{"_index":848,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.hackgetrawdatalistname(row",{"_index":2282,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.hackgetrawparameterlist(row",{"_index":2284,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.hackpopulatetemplatenames(row",{"_index":1422,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.hackprocessrows(itemrows",{"_index":2302,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.hacksethighlightedtask",{"_index":2170,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.handleeventdataupdate.bind(this",{"_index":1095,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.handleeventxmlformchange.bind(this",{"_index":1101,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.hasstarted",{"_index":2073,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.height",{"_index":925,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.help",{"_index":2064,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTitleComponent.html":{}}}],["this.highlighted",{"_index":2918,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.highlightedtext",{"_index":2937,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.html",{"_index":1849,"title":{},"body":{"components/TemplateHTMLComponent.html":{}}}],["this.icon",{"_index":2144,"title":{},"body":{"components/TmplButtonComponent.html":{}}}],["this.icon_position",{"_index":1940,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{}}}],["this.icon_src",{"_index":1611,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplTileComponent.html":{}}}],["this.icon_src.includes",{"_index":1617,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{}}}],["this.icon_src?.includes",{"_index":3067,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.image",{"_index":2929,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.image_src",{"_index":2450,"title":{},"body":{"components/TmplIconBannerComponent.html":{}}}],["this.info_icon_src",{"_index":2618,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.initialslide",{"_index":2183,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.initplayer",{"_index":2060,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.innerhtml",{"_index":2237,"title":{},"body":{"components/TmplDashedBoxComponent.html":{}}}],["this.inprogressicon",{"_index":2935,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.inputallowed",{"_index":466,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.inputposition",{"_index":469,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.inputrow",{"_index":650,"title":{},"body":{"components/FormComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{}}}],["this.intercepttemplatecontaineraction(action",{"_index":1893,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["this.is_play_icon",{"_index":3065,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.isalloweddeviceinfo",{"_index":661,"title":{},"body":{"components/FormComponent.html":{}}}],["this.isbutton",{"_index":2931,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.iscustomicon",{"_index":1616,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["this.isfalsy",{"_index":3029,"title":{},"body":{"components/TmplTextComponent.html":{}}}],["this.ishomescreen",{"_index":1614,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["this.isnumberinput",{"_index":1718,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["this.isopen",{"_index":2414,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["this.isparentpoint",{"_index":3063,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.isplayed",{"_index":2071,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.isplayicon(this.icon_src",{"_index":3066,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.istwocolumns",{"_index":2143,"title":{},"body":{"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["this.item.nativeelement.classlist.add(\"complete",{"_index":2627,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.itemrows",{"_index":2307,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.itemstyle",{"_index":959,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["this.label_text",{"_index":2783,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["this.labels_count",{"_index":2845,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.launch_when_locked",{"_index":84,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["this.left_icon_src",{"_index":3061,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.left_icon_src.includes",{"_index":3080,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.legacybrowser",{"_index":2699,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["this.loadanimation(r",{"_index":2480,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["this.loadform(formdata",{"_index":1053,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.lottie_src",{"_index":2602,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.max_value",{"_index":933,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.max_value_label",{"_index":2844,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.maxlength",{"_index":471,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["this.maxvalue",{"_index":2831,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.min_value",{"_index":932,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.min_value_label",{"_index":2843,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.minvalue",{"_index":2830,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.modalcontroller.dismiss(value",{"_index":514,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.modalctrl.dismiss(value",{"_index":1161,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["this.modifyrowsetter(row",{"_index":1879,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["this.newlycompleted.emit(true",{"_index":2997,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.no_value",{"_index":2848,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.no_value_text",{"_index":2846,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.opensections",{"_index":1915,"title":{},"body":{"components/TmplAccordionComponent.html":{}}}],["this.options",{"_index":3304,"title":{},"body":{"classes/Widget.html":{}}}],["this.options_per_row",{"_index":836,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.originalinputvalue",{"_index":3315,"title":{},"body":{"classes/Widget.html":{}}}],["this.parameter_list",{"_index":732,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.parameter_list.grid_gap",{"_index":751,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.parameter_list.grid_width",{"_index":749,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.parameter_list.item_border",{"_index":962,"title":{},"body":{"interfaces/IDisplayGridParams.html":{},"components/TmplDisplayGridComponent.html":{}}}],["this.parameter_list.item_width",{"_index":747,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.parameterlist",{"_index":2283,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.params.offset",{"_index":2382,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["this.params.style",{"_index":2381,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["this.parent",{"_index":1835,"title":{},"body":{"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["this.parent.handleactions([action",{"_index":1786,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["this.parent.handleactions(actionsfortrigger",{"_index":1781,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["this.parent.handleactions(this.actions",{"_index":654,"title":{},"body":{"components/FormComponent.html":{}}}],["this.parent.templateactionservice.handleactionscallback",{"_index":412,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["this.parent.templateactionservice.handleactionsinterceptor",{"_index":1890,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["this.parent.templaterowmap",{"_index":1831,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["this.parent.trackbyrow(index",{"_index":1787,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["this.parseanswerlistitemstring(item",{"_index":779,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.parsedatalist(itemdatalist",{"_index":2298,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.percentcomplete",{"_index":94,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["this.placeholder",{"_index":474,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["this.play_celebration",{"_index":2619,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.player",{"_index":2069,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.duration",{"_index":2092,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.pause",{"_index":2085,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.play",{"_index":2084,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.seek",{"_index":2088,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.seek((this.player.seek",{"_index":2086,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.seek(duration",{"_index":2095,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.player.stop",{"_index":2096,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.pop_up_action_arg",{"_index":657,"title":{},"body":{"components/FormComponent.html":{}}}],["this.position",{"_index":2782,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["this.previousvalue",{"_index":2854,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.prioritiseplaceholder",{"_index":1720,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["this.processbuttonfields(itemobj",{"_index":882,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.processparameterlist",{"_index":1046,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.progress",{"_index":2091,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.progressstatus",{"_index":2942,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["this.progressstatuschange.emit(this.progressstatus",{"_index":2994,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.progressunitsname",{"_index":2939,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["this.props.dismissonemit",{"_index":1151,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["this.question",{"_index":3305,"title":{},"body":{"classes/Widget.html":{}}}],["this.quiet",{"_index":1338,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["this.radiobuttontype",{"_index":832,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.radioitems",{"_index":734,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.range.value",{"_index":2077,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.rangebardisabled",{"_index":2065,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.rangebartouched",{"_index":2089,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.renderitems",{"_index":2294,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.renderitems(data",{"_index":2293,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.reverse",{"_index":2781,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["this.rows",{"_index":3356,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["this.rows.map((row",{"_index":3358,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["this.runfade",{"_index":1968,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.scrolltotop",{"_index":420,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{}}}],["this.second_line_text",{"_index":3060,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["this.sectionindex",{"_index":1431,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.setactionlistmeta(parseditemrows",{"_index":2304,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.setparams",{"_index":726,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.settaskgroupcompletedstatus(this.taskgroupcompletedfield",{"_index":2996,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.setvalue(!this._row.value",{"_index":3201,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["this.setvalue(ischecked",{"_index":2780,"title":{},"body":{"components/TmplSimpleCheckboxComponent.html":{}}}],["this.setvalue(item.name",{"_index":729,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{}}}],["this.setvalue(selectedvalue",{"_index":851,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["this.setvalue(this.displayvalue",{"_index":944,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.setvalue(this.value",{"_index":2628,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.setvalue(this.xmlformvalue",{"_index":1056,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.setvalue(value",{"_index":2226,"title":{},"body":{"components/TmplComboBoxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{}}}],["this.showcelebrationanimation",{"_index":2623,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.showtickandcross",{"_index":3204,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["this.skiptext",{"_index":1969,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.sliderconfig.pips.values",{"_index":2861,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.sliderconfig.range.max",{"_index":2857,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.sliderconfig.range.min",{"_index":2856,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.sliderconfig.start",{"_index":2859,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.sliderconfig.step",{"_index":2858,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.source.subscribe((val",{"_index":1724,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["this.src",{"_index":2061,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.star.nativeelement.classlist.add(\"on",{"_index":2622,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.star.nativeelement.classlist.remove(\"on",{"_index":2625,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.startingpage",{"_index":2700,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["this.state.clickleftbutton",{"_index":1529,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.state.edittimer(min",{"_index":1538,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.state.edittimer(sec",{"_index":1539,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.step",{"_index":2828,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.style",{"_index":839,"title":{},"body":{"interfaces/IButton-1.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{}}}],["this.style.includes(\"button",{"_index":2932,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.style.includes(\"home_screen",{"_index":1615,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["this.subscribe",{"_index":1723,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["this.subscribetodata",{"_index":2285,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.subtaskscompleted",{"_index":2985,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.subtaskstotal",{"_index":2986,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.subtitle",{"_index":2928,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.subtitles_src",{"_index":3235,"title":{},"body":{"components/TmplVideoComponent.html":{}}}],["this.swiper",{"_index":2185,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.swiper.slideto(this.initialslide",{"_index":2186,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.taskgroupcompletedfield",{"_index":2984,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.taskgroupdatalist",{"_index":2924,"title":{},"body":{"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{}}}],["this.taskgroupid",{"_index":2919,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.taskid",{"_index":2920,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.taskservice.checkhighlightedtaskgroup(this.taskgroupid",{"_index":2921,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.taskservice.evaluatehighlightedtaskgroup",{"_index":3000,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.taskservice.gethighlightedtaskgroup",{"_index":2196,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.taskservice.gethighlightedtaskgroupindex",{"_index":2197,"title":{},"body":{"components/TmplCarouselComponent.html":{}}}],["this.templateassetservice.fetchasset(form_asset",{"_index":1051,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["this.templateassetservice.gettranslatedassetpath",{"_index":2062,"title":{},"body":{"components/TmplAudioComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["this.templateassetservice.gettranslatedassetpath(r.value",{"_index":2483,"title":{},"body":{"components/TmplLottieAnimation.html":{}}}],["this.templateassetservice.gettranslatedassetpath(this.lottie_src",{"_index":2603,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.templatefieldservice.getfield(key.replace(\"rp",{"_index":1826,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["this.templatefieldservice.getfield(progressfield",{"_index":1462,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatefieldservice.getfield(task.completed_field",{"_index":2992,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.templatefieldservice.getfield(this.completedfield",{"_index":2941,"title":{},"body":{"components/TmplTaskCardComponent.html":{}}}],["this.templatefieldservice.getfield(this.taskgroupcompletedfield",{"_index":2995,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.templatefieldservice.globals",{"_index":1834,"title":{},"body":{"components/TemplateDebuggerComponent.html":{}}}],["this.templatefieldservice.setfield(progressfield",{"_index":1463,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatefieldservice.setfield(taskgroupcompletedfield",{"_index":3007,"title":{},"body":{"components/TmplTaskProgressBarComponent.html":{}}}],["this.templatenames",{"_index":1434,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatenames.length",{"_index":1423,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatenames.push(datalistobject[property].template",{"_index":1453,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatenames[index",{"_index":1466,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatenames[this.sectionindex",{"_index":1425,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.templatevariablesservice.evaluateconditionstring",{"_index":2365,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["this.text",{"_index":1610,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["this.textalign",{"_index":1716,"title":{},"body":{"components/SelectTextComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTitleComponent.html":{}}}],["this.texttitle",{"_index":464,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.timer.changestate(new",{"_index":1548,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.getdurationfromparams",{"_index":1567,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.istimereditable",{"_index":1565,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.leftbuttonaction",{"_index":1553,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.leftbuttonicon",{"_index":1555,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.leftbuttonname",{"_index":1556,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.player",{"_index":1550,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.player.play",{"_index":1551,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.rightbuttonaction",{"_index":1558,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.rightbuttonicon",{"_index":1560,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.rightbuttonname",{"_index":1562,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.timerstarted",{"_index":1564,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timer.value",{"_index":1546,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timerstarted",{"_index":1528,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["this.timetorewind",{"_index":2067,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.title",{"_index":91,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ICategoryList.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["this.titleaudio",{"_index":2063,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.toggle",{"_index":1722,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["this.togglestate.emit(this.id",{"_index":83,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["this.tooltipposition",{"_index":3178,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["this.triggeractions(\"audio_end",{"_index":2079,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.triggeractions(\"audio_first_start",{"_index":2074,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.triggeractions(\"audio_pause",{"_index":2081,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.triggeractions(\"audio_play",{"_index":2075,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.triggeractions(\"changed",{"_index":730,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["this.triggeractions(\"click",{"_index":85,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplParentPointBoxComponent.html":{}}}],["this.triggeractions(\"completed",{"_index":1991,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{},"components/TmplTaskCardComponent.html":{}}}],["this.triggeractions(\"info_click",{"_index":2629,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.triggeractions(\"uncompleted",{"_index":1992,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["this.true_text",{"_index":3203,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["this.type",{"_index":2383,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{},"components/TmplTextComponent.html":{}}}],["this.updateconfigparams",{"_index":2847,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["this.updatedata(param",{"_index":943,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.updateprogress",{"_index":2072,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["this.updatesectionprogress",{"_index":1467,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["this.updatestatus(this.percentcomplete",{"_index":96,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["this.value",{"_index":2621,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{},"components/TmplTileComponent.html":{},"classes/Widget.html":{}}}],["this.valuesfromcategorylist",{"_index":928,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.valuesfromcategorylist[this.first_display_term",{"_index":931,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["this.valuesfromlistanswers",{"_index":460,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["this.video_src",{"_index":2617,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.wasclicked",{"_index":2626,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["this.windowwidth",{"_index":840,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["those",{"_index":3399,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["though",{"_index":1240,"title":{},"body":{"classes/MutationsTracker.html":{},"license.html":{}}}],["threatened",{"_index":3677,"title":{},"body":{"license.html":{}}}],["three",{"_index":3903,"title":{},"body":{"license.html":{}}}],["through",{"_index":1147,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"license.html":{}}}],["thus",{"_index":3814,"title":{},"body":{"license.html":{}}}],["tick",{"_index":3213,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["tile",{"_index":303,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["time",{"_index":410,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplTimerComponent.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["time_to_rewind",{"_index":2068,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["timer",{"_index":1479,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/SelectTextComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timer'},{'name",{"_index":305,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["timer(1000",{"_index":1706,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["timer.component.html",{"_index":1503,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timer.component.scss",{"_index":1504,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timerdurationextension",{"_index":1520,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timerstarted",{"_index":1519,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timerstate",{"_index":1510,"title":{"interfaces/TimerState.html":{}},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["times",{"_index":3279,"title":{},"body":{"classes/Widget.html":{}}}],["timetorewind",{"_index":2015,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["timevalues",{"_index":1527,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["timing",{"_index":2639,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["tiny",{"_index":153,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["title",{"_index":32,"title":{},"body":{"components/AccordionSectionComponent.html":{},"interfaces/ICategoryList.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{}}}],["title'},{'name",{"_index":307,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["title.scss",{"_index":3171,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["title_and_help",{"_index":2102,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["titleaudio",{"_index":2016,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["tmpl",{"_index":17,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplaccordioncomponent",{"_index":230,"title":{"components/TmplAccordionComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpladvanceddashedboxcomponent",{"_index":231,"title":{"components/TmplAdvancedDashedBoxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplanimatedslidescomponent",{"_index":235,"title":{"components/TmplAnimatedSlidesComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplaudiocomponent",{"_index":237,"title":{"components/TmplAudioComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplbuttoncomponent",{"_index":239,"title":{"components/TmplButtonComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplcarouselcomponent",{"_index":240,"title":{"components/TmplCarouselComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplcomboboxcomponent",{"_index":242,"title":{"components/TmplComboBoxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpldashedboxcomponent",{"_index":243,"title":{"components/TmplDashedBoxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpldataitemscomponent",{"_index":244,"title":{"components/TmplDataItemsComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpldisplaygridcomponent",{"_index":247,"title":{"components/TmplDisplayGridComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IDisplayGridParams.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpldisplaygroupcomponent",{"_index":249,"title":{"components/TmplDisplayGroupComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpldrawercomponent",{"_index":250,"title":{"components/TmplDrawerComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplhelpiconcomponent",{"_index":252,"title":{"components/TmplHelpIconComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpliconbannercomponent",{"_index":255,"title":{"components/TmplIconBannerComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplimagecomponent",{"_index":257,"title":{"components/TmplImageComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpllatexcomponent",{"_index":259,"title":{"components/TmplLatexComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpllottieanimation",{"_index":261,"title":{"components/TmplLottieAnimation.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplnavigationbarcomponent",{"_index":264,"title":{"components/TmplNavigationBarComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplnumbercomponent",{"_index":267,"title":{"components/TmplNumberComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ICategoryList.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplodkformcomponent",{"_index":269,"title":{"components/TmplOdkFormComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplparentpointboxcomponent",{"_index":271,"title":{"components/TmplParentPointBoxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplparentpointcountercomponent",{"_index":274,"title":{"components/TmplParentPointCounterComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplpdfcomponent",{"_index":277,"title":{"components/TmplPdfComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplqrcodecomponent",{"_index":279,"title":{"components/TmplQRCodeComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplradiobuttongridcomponent",{"_index":282,"title":{"components/TmplRadioButtonGridComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplradiogroupcomponent",{"_index":285,"title":{"components/TmplRadioGroupComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplsimplecheckboxcomponent",{"_index":286,"title":{"components/TmplSimpleCheckboxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplslidercomponent",{"_index":289,"title":{"components/TmplSliderComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplsubtitlecomponent",{"_index":292,"title":{"components/TmplSubtitleComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltaskcardcomponent",{"_index":294,"title":{"components/TmplTaskCardComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltaskprogressbarcomponent",{"_index":297,"title":{"components/TmplTaskProgressBarComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltextareacomponent",{"_index":298,"title":{"components/TmplTextAreaComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltextboxcomponent",{"_index":300,"title":{"components/TmplTextBoxComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltextcomponent",{"_index":301,"title":{"components/TmplTextComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltilecomponent",{"_index":302,"title":{"components/TmplTileComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltimercomponent",{"_index":304,"title":{"components/TmplTimerComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltitlecomponent",{"_index":306,"title":{"components/TmplTitleComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmpltogglebarcomponent",{"_index":308,"title":{"components/TmplToggleBarComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tmplvideocomponent",{"_index":310,"title":{"components/TmplVideoComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["todo",{"_index":406,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["toggle",{"_index":309,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["toggle[aria",{"_index":3216,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["toggle_wrapper",{"_index":3226,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["toggled=\"true",{"_index":1737,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["toggledrawer",{"_index":2405,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["toggleheight",{"_index":3206,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["togglemute",{"_index":2024,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["togglenacheckbox",{"_index":2799,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["toggleopen",{"_index":37,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["togglepadding",{"_index":3209,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["toggleplayer",{"_index":2025,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["togglestate",{"_index":41,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["togglestate(rowid",{"_index":3352,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["togglewidth",{"_index":3207,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["toggling",{"_index":2820,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["toisolocalstring",{"_index":563,"title":{},"body":{"classes/BlankDate.html":{}}}],["toisostring",{"_index":575,"title":{},"body":{"classes/BlankDate.html":{}}}],["toolbar",{"_index":2424,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["toolbarbutton",{"_index":2715,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["toolbarviewer",{"_index":2712,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["tools",{"_index":3779,"title":{},"body":{"license.html":{}}}],["tooltip",{"_index":2872,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["tooltip_position",{"_index":3179,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["tooltipposition",{"_index":3172,"title":{},"body":{"components/TmplTitleComponent.html":{}}}],["tooltips",{"_index":2827,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["top",{"_index":113,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["tostring",{"_index":547,"title":{},"body":{"classes/BlankDate.html":{}}}],["touch",{"_index":3302,"title":{},"body":{"classes/Widget.html":{}}}],["touchscreens",{"_index":3267,"title":{},"body":{"classes/Widget.html":{}}}],["touchswipe",{"_index":1026,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"dependencies.html":{}}}],["town",{"_index":3405,"title":{},"body":{"contributing.html":{}}}],["track",{"_index":2819,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["trackbyrow",{"_index":320,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{}}}],["trackedclasses",{"_index":1323,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["trackedclasses.foreach((obj",{"_index":1325,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["trackedclasses.push",{"_index":1349,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["trackedclasses.some((obj",{"_index":1347,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["tracker",{"_index":1962,"title":{},"body":{"components/TmplAnimatedSlidesComponent.html":{}}}],["trade",{"_index":4014,"title":{},"body":{"license.html":{}}}],["trademark",{"_index":4013,"title":{},"body":{"license.html":{}}}],["trademarks",{"_index":3396,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["transaction",{"_index":3969,"title":{},"body":{"license.html":{}}}],["transfer",{"_index":3734,"title":{},"body":{"license.html":{}}}],["transferred",{"_index":3970,"title":{},"body":{"license.html":{}}}],["transferring",{"_index":4073,"title":{},"body":{"license.html":{}}}],["transform",{"_index":684,"title":{},"body":{"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["transformed",{"_index":967,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["transition",{"_index":164,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/WorkshopsComponent.html":{}}}],["transition(\"in",{"_index":404,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["translate",{"_index":614,"title":{},"body":{"components/ComboBoxModalComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["translate($togglepadding",{"_index":3222,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["translate3d(0",{"_index":2644,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["translatey",{"_index":2418,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["transmission",{"_index":3929,"title":{},"body":{"license.html":{}}}],["transparent",{"_index":1627,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTileComponent.html":{}}}],["treated",{"_index":3993,"title":{},"body":{"license.html":{}}}],["treaty",{"_index":3834,"title":{},"body":{"license.html":{}}}],["tree",{"_index":7,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["trigger",{"_index":379,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"components/FormComponent.html":{},"components/TemplateBaseComponent.html":{}}}],["trigger(\"fadesection",{"_index":395,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["triggeractions(trigger",{"_index":1770,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["triggercopycontent",{"_index":1697,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["triggercopycontent($event",{"_index":1700,"title":{},"body":{"components/SelectTextComponent.html":{}}}],["triggered",{"_index":418,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TemplateBaseComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["true",{"_index":90,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplToggleBarComponent.html":{},"classes/Widget.html":{}}}],["true_text",{"_index":3185,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["trusted",{"_index":3513,"title":{},"body":{"dependencies.html":{}}}],["try",{"_index":2388,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{}}}],["tsconfig.app.json",{"_index":1035,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["two",{"_index":3633,"title":{},"body":{"license.html":{}}}],["two_columns",{"_index":1661,"title":{},"body":{"components/RoundIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["type",{"_index":42,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{},"miscellaneous/typealiases.html":{}}}],["typealiases",{"_index":4263,"title":{"miscellaneous/typealiases.html":{}},"body":{}}],["typeof",{"_index":778,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/MutationsTracker.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["types",{"_index":3514,"title":{},"body":{"dependencies.html":{}}}],["typical",{"_index":3953,"title":{},"body":{"license.html":{}}}],["ui",{"_index":2862,"title":{},"body":{"components/TmplSliderComponent.html":{},"index.html":{}}}],["ui.gitnote",{"_index":3540,"title":{},"body":{"index.html":{}}}],["unacceptable",{"_index":3666,"title":{},"body":{"license.html":{}}}],["unavailable",{"_index":2528,"title":{},"body":{"components/TmplOdkFormComponent.html":{}}}],["uncomment",{"_index":419,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["uncompleted",{"_index":1112,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["uncompleted\"].includes(emit_value",{"_index":1152,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["undefined",{"_index":1226,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplAudioComponent.html":{},"components/TmplTextComponent.html":{},"classes/Widget.html":{}}}],["under",{"_index":1006,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"license.html":{}}}],["unicef",{"_index":3407,"title":{},"body":{"contributing.html":{}}}],["university",{"_index":3403,"title":{},"body":{"contributing.html":{}}}],["unless",{"_index":1894,"title":{},"body":{"components/TemplateLayoutComponent.html":{},"contributing.html":{},"license.html":{}}}],["unlimited",{"_index":3802,"title":{},"body":{"license.html":{}}}],["unmodified",{"_index":3713,"title":{},"body":{"license.html":{}}}],["unnecessary",{"_index":3340,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["unpacking",{"_index":3989,"title":{},"body":{"license.html":{}}}],["unparsedfilter",{"_index":2353,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["unset",{"_index":1380,"title":{},"body":{"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["until",{"_index":874,"title":{},"body":{"interfaces/IButton-1.html":{},"classes/MutationsTracker.html":{},"components/TmplRadioGroupComponent.html":{},"license.html":{}}}],["up",{"_index":2708,"title":{},"body":{"components/TmplPdfComponent.html":{}}}],["update",{"_index":1409,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{},"dependencies.html":{}}}],["updateconfigparams",{"_index":2800,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["updated",{"_index":989,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{},"index.html":{}}}],["updatedata",{"_index":2492,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["updatedata(param",{"_index":2498,"title":{},"body":{"components/TmplNumberComponent.html":{}}}],["updateddatanodes",{"_index":4271,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["updatedrows",{"_index":3357,"title":{},"body":{"components/WorkshopsComponent.html":{}}}],["updateprogress",{"_index":2026,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["updates",{"_index":2330,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["updatesectionprogress",{"_index":1394,"title":{},"body":{"components/NavGroupComponent.html":{}}}],["updatestatus(value",{"_index":97,"title":{},"body":{"components/AccordionSectionComponent.html":{}}}],["url(/assets/icon/shared/cross.svg",{"_index":3220,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["url(/assets/icon/shared/tick.svg",{"_index":3219,"title":{},"body":{"components/TmplToggleBarComponent.html":{}}}],["us/docs/web/javascript/reference/global_objects/weakmap",{"_index":1285,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["us/docs/web/svg/attribute/preserveaspectratio",{"_index":2613,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["use",{"_index":100,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["used",{"_index":335,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"classes/BlankDate.html":{},"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplRadioGroupComponent.html":{},"classes/Widget.html":{},"index.html":{},"license.html":{}}}],["useful",{"_index":4229,"title":{},"body":{"license.html":{}}}],["user",{"_index":3271,"title":{},"body":{"classes/Widget.html":{},"license.html":{}}}],["users",{"_index":3606,"title":{},"body":{"license.html":{}}}],["uses",{"_index":3954,"title":{},"body":{"license.html":{}}}],["using",{"_index":2187,"title":{},"body":{"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{},"contributing.html":{},"index.html":{},"license.html":{}}}],["utc",{"_index":550,"title":{},"body":{"classes/BlankDate.html":{}}}],["utils",{"_index":696,"title":{},"body":{"interfaces/IAnswerListItem.html":{},"interfaces/IButton.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{}}}],["utils.ts",{"_index":1164,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils.ts:359",{"_index":1173,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils.ts:360",{"_index":1171,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils.ts:402",{"_index":1175,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils.ts:417",{"_index":1179,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils.ts:430",{"_index":1180,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["utils/template",{"_index":816,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["utils~elementdatastore|elementdatastore",{"_index":1357,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["v.id",{"_index":2324,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["v.trim",{"_index":494,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/IRadioButtonGridParams.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{}}}],["val",{"_index":1496,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["valid",{"_index":3902,"title":{},"body":{"license.html":{}}}],["validateinputresolution",{"_index":4272,"title":{},"body":{"miscellaneous/typealiases.html":{}}}],["value",{"_index":98,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IButton-1.html":{},"interfaces/ICategoryList.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"classes/Widget.html":{}}}],["value(_value",{"_index":3334,"title":{},"body":{"classes/Widget.html":{}}}],["values",{"_index":863,"title":{},"body":{"interfaces/IButton-1.html":{},"components/NavGroupComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"classes/Widget.html":{}}}],["valuesfromcategorylist",{"_index":923,"title":{},"body":{"interfaces/ICategoryList.html":{},"components/TmplNumberComponent.html":{}}}],["valuesfromlistanswers",{"_index":449,"title":{},"body":{"interfaces/AnswerBody.html":{},"components/ComboBoxModalComponent.html":{}}}],["var",{"_index":104,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"classes/BlankDate.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["variable",{"_index":1447,"title":{},"body":{"components/NavGroupComponent.html":{},"components/TemplateBaseComponent.html":{}}}],["variables",{"_index":1760,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["variables.service",{"_index":2265,"title":{},"body":{"components/TmplDataItemsComponent.html":{}}}],["verbatim",{"_index":3587,"title":{},"body":{"license.html":{}}}],["version",{"_index":2709,"title":{},"body":{"components/TmplPdfComponent.html":{},"index.html":{},"license.html":{},"properties.html":{}}}],["versions",{"_index":3603,"title":{},"body":{"license.html":{}}}],["vertical",{"_index":108,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{},"components/WorkshopsComponent.html":{}}}],["very",{"_index":3072,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["via",{"_index":1428,"title":{},"body":{"components/NavGroupComponent.html":{},"index.html":{}}}],["video",{"_index":188,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplTextComponent.html":{},"components/TmplVideoComponent.html":{}}}],["video'},{'name",{"_index":311,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["video_src",{"_index":2562,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["view",{"_index":2711,"title":{},"body":{"components/TmplPdfComponent.html":{},"license.html":{}}}],["viewchild",{"_index":812,"title":{},"body":{"interfaces/IButton-1.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplAudioComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTimerComponent.html":{}}}],["viewchild(\"drawer",{"_index":2412,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["viewchild(\"formcontainerel",{"_index":1044,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["viewchild(\"item",{"_index":2599,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["viewchild(\"labelimage",{"_index":820,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplRadioGroupComponent.html":{}}}],["viewchild(\"min",{"_index":1506,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["viewchild(\"range",{"_index":2059,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["viewchild(\"sec",{"_index":1508,"title":{},"body":{"classes/PausedState.html":{},"classes/PlayingState.html":{},"classes/State.html":{},"interfaces/TimerState.html":{},"components/TmplTimerComponent.html":{}}}],["viewchild(\"slider",{"_index":2841,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["viewchild(\"star",{"_index":2598,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["viewchild('drawer",{"_index":2408,"title":{},"body":{"components/TmplDrawerComponent.html":{}}}],["viewchild('item",{"_index":2584,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["viewchild('labelimage",{"_index":2738,"title":{},"body":{"components/TmplRadioGroupComponent.html":{}}}],["viewchild('min",{"_index":3145,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["viewchild('range",{"_index":2051,"title":{},"body":{"components/TmplAudioComponent.html":{}}}],["viewchild('sec",{"_index":3153,"title":{},"body":{"components/TmplTimerComponent.html":{}}}],["viewchild('slider",{"_index":2824,"title":{},"body":{"components/TmplSliderComponent.html":{}}}],["viewchild('star",{"_index":2589,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["viewencapsulation",{"_index":977,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{}}}],["viewencapsulation.none",{"_index":1001,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplCarouselComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplPdfComponent.html":{}}}],["viewer",{"_index":2684,"title":{},"body":{"components/TmplPdfComponent.html":{},"dependencies.html":{}}}],["violates",{"_index":3983,"title":{},"body":{"license.html":{}}}],["violation",{"_index":4038,"title":{},"body":{"license.html":{}}}],["visible",{"_index":3743,"title":{},"body":{"license.html":{}}}],["void",{"_index":62,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"classes/PausedState.html":{},"classes/PlayingState.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"classes/State.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"interfaces/TimerState.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"classes/Widget.html":{},"components/WorkshopsComponent.html":{},"license.html":{}}}],["volume",{"_index":2104,"title":{},"body":{"components/TmplAudioComponent.html":{},"license.html":{}}}],["w",{"_index":4236,"title":{},"body":{"license.html":{}}}],["wait",{"_index":1117,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{}}}],["waitforclasschange",{"_index":1168,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["waitforclasschange(element",{"_index":1177,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["waitfordismiss",{"_index":1109,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{}}}],["waitforquietness",{"_index":1169,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["waive",{"_index":3842,"title":{},"body":{"license.html":{}}}],["waiver",{"_index":4215,"title":{},"body":{"license.html":{}}}],["want",{"_index":1144,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplTileComponent.html":{},"contributing.html":{},"license.html":{}}}],["warranties",{"_index":3746,"title":{},"body":{"license.html":{}}}],["warranty",{"_index":3643,"title":{},"body":{"license.html":{}}}],["wasclicked",{"_index":2563,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["watch",{"_index":411,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["way",{"_index":1764,"title":{},"body":{"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"license.html":{}}}],["ways",{"_index":3893,"title":{},"body":{"license.html":{}}}],["weakmap",{"_index":1172,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["weakmap)[https://developer.mozilla.org/en",{"_index":1284,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["web",{"_index":3495,"title":{},"body":{"dependencies.html":{}}}],["webform.js",{"_index":1065,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["webkit",{"_index":1131,"title":{},"body":{"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplOdkFormComponent.html":{}}}],["weight",{"_index":182,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["welcome",{"_index":4237,"title":{},"body":{"license.html":{}}}],["well",{"_index":394,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"license.html":{}}}],["whatever",{"_index":4077,"title":{},"body":{"license.html":{}}}],["whenever",{"_index":1768,"title":{},"body":{"components/TemplateBaseComponent.html":{}}}],["whereas",{"_index":1866,"title":{},"body":{"components/TemplateLayoutComponent.html":{}}}],["whether",{"_index":1201,"title":{},"body":{"classes/MutationsTracker.html":{},"components/TmplTaskProgressBarComponent.html":{},"classes/Widget.html":{},"license.html":{}}}],["white",{"_index":685,"title":{},"body":{"components/FormComponent.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/RoundIconButtonComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplToggleBarComponent.html":{}}}],["whitespace",{"_index":1234,"title":{},"body":{"classes/MutationsTracker.html":{}}}],["whitetext",{"_index":196,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplTextComponent.html":{},"components/TmplVideoComponent.html":{}}}],["whole",{"_index":3764,"title":{},"body":{"license.html":{}}}],["whose",{"_index":3937,"title":{},"body":{"license.html":{}}}],["widely",{"_index":3759,"title":{},"body":{"license.html":{}}}],["widget",{"_index":3236,"title":{"classes/Widget.html":{}},"body":{"classes/Widget.html":{}}}],["widget.js",{"_index":3332,"title":{},"body":{"classes/Widget.html":{}}}],["widgets",{"_index":3309,"title":{},"body":{"classes/Widget.html":{}}}],["width",{"_index":116,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"interfaces/IAnswerListItem.html":{},"interfaces/IDisplayGridParams.html":{},"interfaces/IRadioButtonGridParams.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["window",{"_index":3771,"title":{},"body":{"license.html":{}}}],["window.innerwidth",{"_index":841,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["window:resize",{"_index":2568,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["window:resize(event",{"_index":2572,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["windowwidth",{"_index":825,"title":{},"body":{"interfaces/IButton-1.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["wipo",{"_index":3833,"title":{},"body":{"license.html":{}}}],["wish",{"_index":3612,"title":{},"body":{"license.html":{}}}],["within",{"_index":364,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/NavGroupComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplTileComponent.html":{},"contributing.html":{},"license.html":{}}}],["without",{"_index":2271,"title":{},"body":{"components/TmplDataItemsComponent.html":{},"contributing.html":{},"license.html":{}}}],["work",{"_index":388,"title":{},"body":{"components/AnimatedSectionComponent.html":{},"license.html":{}}}],["work's",{"_index":3778,"title":{},"body":{"license.html":{}}}],["workaround",{"_index":415,"title":{},"body":{"components/AnimatedSectionComponent.html":{}}}],["workflow",{"_index":3553,"title":{},"body":{"index.html":{}}}],["working",{"_index":3760,"title":{},"body":{"license.html":{}}}],["works",{"_index":3593,"title":{},"body":{"license.html":{}}}],["workshop_page",{"_index":3100,"title":{},"body":{"components/TmplTileComponent.html":{}}}],["workshops",{"_index":109,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["workshopscomponent",{"_index":312,"title":{"components/WorkshopsComponent.html":{}},"body":{"components/AccordionSectionComponent.html":{},"components/AnimatedSectionComponent.html":{},"components/AnimatedSectionGroupComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/FormComponent.html":{},"components/NavGroupComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TemplateBaseComponent.html":{},"components/TemplateDebuggerComponent.html":{},"components/TemplateHTMLComponent.html":{},"components/TemplateLayoutComponent.html":{},"components/TemplatePopupComponent.html":{},"components/TmplAccordionComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplAudioComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplCarouselComponent.html":{},"components/TmplComboBoxComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDataItemsComponent.html":{},"components/TmplDisplayGridComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplImageComponent.html":{},"components/TmplLatexComponent.html":{},"components/TmplLottieAnimation.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplNumberComponent.html":{},"components/TmplOdkFormComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplParentPointCounterComponent.html":{},"components/TmplPdfComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioButtonGridComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTextComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTimerComponent.html":{},"components/TmplTitleComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/TmplVideoComponent.html":{},"components/WorkshopsComponent.html":{}}}],["workspace",{"_index":3456,"title":{},"body":{"dependencies.html":{},"index.html":{}}}],["worldwide",{"_index":4105,"title":{},"body":{"license.html":{}}}],["wrap",{"_index":2395,"title":{},"body":{"components/TmplDisplayGroupComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplTileComponent.html":{}}}],["wrapper",{"_index":127,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/ComboBoxModalComponent.html":{},"components/RoundIconButtonComponent.html":{},"components/SelectTextComponent.html":{},"components/SquareIconButtonComponent.html":{},"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplAnimatedSlidesComponent.html":{},"components/TmplButtonComponent.html":{},"components/TmplDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{},"components/TmplHelpIconComponent.html":{},"components/TmplIconBannerComponent.html":{},"components/TmplNavigationBarComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplQRCodeComponent.html":{},"components/TmplRadioGroupComponent.html":{},"components/TmplSimpleCheckboxComponent.html":{},"components/TmplSliderComponent.html":{},"components/TmplSubtitleComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplTaskProgressBarComponent.html":{},"components/TmplTextAreaComponent.html":{},"components/TmplTextBoxComponent.html":{},"components/TmplTileComponent.html":{},"components/TmplTitleComponent.html":{},"components/WorkshopsComponent.html":{}}}],["wrapper[data",{"_index":1943,"title":{},"body":{"components/TmplAdvancedDashedBoxComponent.html":{},"components/TmplDisplayGroupComponent.html":{}}}],["writer",{"_index":3459,"title":{},"body":{"dependencies.html":{}}}],["writing",{"_index":4181,"title":{},"body":{"license.html":{}}}],["written",{"_index":3901,"title":{},"body":{"license.html":{}}}],["x",{"_index":585,"title":{},"body":{"classes/BlankDate.html":{},"components/TmplTileComponent.html":{}}}],["x.includes(this._row.value",{"_index":2217,"title":{},"body":{"components/TmplComboBoxComponent.html":{}}}],["xminymin",{"_index":2615,"title":{},"body":{"components/TmplParentPointBoxComponent.html":{}}}],["xml",{"_index":976,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{},"classes/Widget.html":{}}}],["xmlformvalue",{"_index":1057,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"components/TmplOdkFormComponent.html":{}}}],["xpath",{"_index":1085,"title":{},"body":{"interfaces/IEnketoFormData.html":{},"interfaces/IEventFormSaved.html":{},"interfaces/IFormEntry.html":{},"interfaces/IODKFormComponentParameters.html":{},"classes/MutationsTracker.html":{},"components/TmplOdkFormComponent.html":{}}}],["xxx",{"_index":1745,"title":{},"body":{"components/SquareIconButtonComponent.html":{},"components/TmplTileComponent.html":{}}}],["y",{"_index":167,"title":{},"body":{"components/AccordionSectionComponent.html":{},"components/WorkshopsComponent.html":{}}}],["yarn",{"_index":3544,"title":{},"body":{"index.html":{}}}],["yarnthis",{"_index":3533,"title":{},"body":{"index.html":{}}}],["years",{"_index":3904,"title":{},"body":{"license.html":{}}}],["yellow",{"_index":1685,"title":{},"body":{"components/RoundIconButtonComponent.html":{}}}],["yes",{"_index":1900,"title":{},"body":{"components/TemplatePopupComponent.html":{}}}],["yourself",{"_index":3383,"title":{},"body":{"contributing.html":{},"license.html":{}}}],["z",{"_index":155,"title":{},"body":{"components/AccordionSectionComponent.html":{},"classes/BlankDate.html":{},"interfaces/ITemplatePopupComponentProps.html":{},"components/TemplatePopupComponent.html":{},"components/TmplDrawerComponent.html":{},"components/TmplParentPointBoxComponent.html":{},"components/TmplTaskCardComponent.html":{},"components/TmplToggleBarComponent.html":{},"components/WorkshopsComponent.html":{}}}],["zone.js",{"_index":3516,"title":{},"body":{"dependencies.html":{}}}]],"pipeline":["stemmer"]}, + "store": {"components/AccordionSectionComponent.html":{"url":"components/AccordionSectionComponent.html","title":"component - AccordionSectionComponent","body":"\n \n\n\n\n\n\n Components\n \n AccordionSectionComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/accordion_section.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-accordion-section\n \n\n \n styleUrls\n ./accordion.scss,../tmpl-components-common.scss\n \n\n\n \n template\n 0,\n notStarted: !completed && !_row.disabled && percentComplete == 0\n }\"\n class=\"accordion-status\"\n >\n \n \n \n \n \n \n {{ title }}\n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n completed\n \n \n Public\n percentComplete\n \n \n Public\n title\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n toggleOpen\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n id\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n toggleState\n \n \n \n \n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n id\n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:66\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n toggleState\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:68\n \n \n \n \n Emit output event so parent can respond to open/close events (e.g. close other sections when new section opened)\n\n \n \n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n toggleOpen\n \n \n \n \n \n \n \n toggleOpen()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:74\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n completed\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:61\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n percentComplete\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:62\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/accordion_section.ts:63\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit, Output, EventEmitter, Input } from \"@angular/core\";\nimport {\n getBooleanParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-tmpl-accordion-section\",\n template: `\n 0,\n notStarted: !completed && !_row.disabled && percentComplete == 0\n }\"\n class=\"accordion-status\"\n >\n \n \n \n \n \n \n {{ title }}\n \n \n \n \n \n `,\n styleUrls: [\"./accordion.scss\", \"../tmpl-components-common.scss\"],\n})\nexport class AccordionSectionComponent extends TemplateBaseComponent implements OnInit {\n public completed: boolean;\n public percentComplete: number;\n public title: string;\n private launch_when_locked: boolean;\n\n @Input() id: string;\n /** Emit output event so parent can respond to open/close events (e.g. close other sections when new section opened) */\n @Output() toggleState = new EventEmitter();\n\n ngOnInit() {\n this.getParams();\n }\n\n public toggleOpen() {\n if (!this._row.disabled) {\n this.toggleState.emit(this.id);\n } else if (this._row.disabled && this.launch_when_locked) {\n this.triggerActions(\"click\");\n }\n }\n\n private getParams() {\n this.completed = getStringParamFromTemplateRow(this._row, \"completed\", \"false\") === \"true\";\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.launch_when_locked = getBooleanParamFromTemplateRow(\n this._row,\n \"launch_when_locked\",\n false\n );\n this.percentComplete = this._row.value ? this._row.value : 0;\n this.updateStatus(this.percentComplete);\n }\n\n private updateStatus(value: number) {\n if (value == 100) {\n this.completed = true;\n } else if (value > 0) {\n this.completed = false;\n }\n }\n}\n\n \n\n\n \n \n ./accordion.scss\n \n @use \"/src/theme/mixins\";\n\n$background-highlight: var(--accordion-background-highlight, var(--gradient-primary-light-vertical));\n\n.workshops-accordion {\n position: relative;\n margin-top: var(--large-margin);\n &::after {\n content: \"\";\n width: 1px;\n height: calc(100% - 35px);\n background: var(--ion-color-primary);\n position: absolute;\n left: 21px;\n top: 0;\n margin-top: var(--regular-margin);\n }\n}\n.accordion-wrapper {\n display: flex;\n justify-content: space-between;\n // align-items: center; // aligns dot in center while closed but open will connecting line looks off\n margin-bottom: var(--regular-margin);\n height: 100%;\n .accordion-status {\n @include mixins.medium-square;\n border-radius: var(--ion-border-radius-rounded);\n border: var(--ion-border-thin-standard);\n padding: var(--tiny-padding);\n background: var(--ion-color-primary-contrast);\n display: flex;\n justify-content: center;\n z-index: 2;\n &.inProgress {\n background: $background-highlight;\n }\n &.disabled {\n background: var(--ion-color-primary-contrast);\n }\n &.completed {\n background: $background-highlight;\n }\n }\n .accordion-section {\n display: flex;\n flex-direction: column;\n position: relative;\n width: var(--accordion-section-width);\n border-radius: var(--ion-border-radius-standard);\n overflow: hidden;\n padding: var(--small-padding);\n border: var(--ion-border-thin-standard);\n transition: max-height 0.4s;\n overflow-y: hidden;\n &.completed {\n background: $background-highlight;\n color: var(--ion-color-primary);\n .progress {\n opacity: 0;\n }\n }\n &.disabled {\n background: var(--ion-color-primary-contrast);\n color: var(--ion-color-primary);\n .progress {\n opacity: 0;\n }\n }\n &.inProgress {\n background: var(--ion-color-primary-contrast);\n color: var(--ion-color-primary);\n }\n &.openSection {\n background: $background-highlight;\n transition: max-height 0.4s;\n .progress {\n opacity: 0;\n transition: none !important;\n }\n }\n .progress {\n position: absolute;\n height: 100%;\n left: 0;\n z-index: 1;\n background: $background-highlight;\n opacity: 1;\n transition: opacity 0.4s ease-in;\n margin-top: calc(var(--small-padding) * -1); // offset for padding in .accordion-section\n }\n }\n .accordion-section {\n h2 {\n z-index: 2;\n text-align: left;\n margin: 0;\n font-size: var(--font-size-subtitle-small);\n font-weight: var(--font-weight-bold);\n @media (max-width: 320px) {\n font-size: var(--font-size-subtitle-small-device);\n }\n }\n }\n .accordion-section-content {\n max-height: 0;\n z-index: 2;\n transition: max-height 0.4s;\n &.openSection {\n max-height: var(--accordion-section-open-height);\n }\n }\n}\n\n \n ../tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' 0, notStarted: !completed && !_row.disabled && percentComplete == 0 }\" class=\"accordion-status\" > {{ title }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'AccordionSectionComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/AnimatedSectionComponent.html":{"url":"components/AnimatedSectionComponent.html","title":"component - AnimatedSectionComponent","body":"\n \n\n\n\n\n\n Components\n \n AnimatedSectionComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/animated_section.ts\n\n\n\n\n \n Extends\n \n \n TemplateLayoutComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-animated-section\n \n\n \n styleUrls\n ./animated-section.scss\n \n\n\n \n template\n \n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n _row\n \n \n Public\n trackByRow\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n interceptTemplateContainerAction\n \n \n Public\n modifyRowSetter\n \n \n Public\n scrollToTop\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n row\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:37\n\n \n \n \n \n reference to parent template container - does not have setter as should remain static\n\n \n \n \n \n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:28\n\n \n \n \n \n specific data used in component rendering\n\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n interceptTemplateContainerAction\n \n \n \n \n \n \n \n interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction)\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:76\n\n \n \n\n\n \n \n Add any additional methods or function calls to actions that would otherwise be handled by\nthe template container.\nbe processed by the template container parent (as it is used as a filter)\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n action\n \n FlowTypes.TemplateRowAction\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : boolean\n\n \n \n true or false to specify if the action should continue to also\nbe processed by the template container parent (as it is used as a filter)\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n modifyRowSetter\n \n \n \n \n \n \n \n modifyRowSetter(row: FlowTypes.TemplateRow)\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:66\n\n \n \n\n\n \n \n Apply any changes here to be applied the row @Input() set operation\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n FlowTypes.TemplateRow\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : FlowTypes.TemplateRow\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n scrollToTop\n \n \n \n \n \n \n \n scrollToTop()\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:49\n\n \n \n\n\n \n \n As content can be nested within containers or pages, a general\nmethod that scrolls everything scrollable (all parent containers and page content)\nto the top\n\n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n _row\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:26\n\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n trackByRow\n \n \n \n \n \n \n Default value : () => {...}\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:80\n\n \n \n\n\n \n \n\n\n\n\n\n \n import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { TemplateLayoutComponent } from \"./layout\";\n\n@Component({\n selector: \"plh-tmpl-animated-section\",\n template: `\n \n `,\n animations: [\n // HACK - rough copy of shared fadeInOut method\n // Would work better if all sections grouped to apply transition across sections (support fade out as well as in)\n trigger(\"fadeSection\", [\n state(\"in\", style({ opacity: 1 })),\n state(\"out\", style({ opacity: 0 })),\n // when fading in include 1s delay for previous animations to complete\n transition(\"* => in\", [animate(\"1s ease-in-out\")]),\n // transition(\"in => out\", [animate(\"0.3s ease-out\")]),\n // TODO - fade out not possible as parent block display set to hidden before time to watch\n ]),\n ],\n styleUrls: [\"./animated-section.scss\"],\n})\nexport class AnimatedSectionComponent extends TemplateLayoutComponent implements OnInit {\n ngOnInit() {\n this.parent.templateActionService.handleActionsCallback = async () => {\n // Temporary workaround to always scroll to top after actions triggered within animated section (uncomment)\n // this.scrollToTop();\n };\n }\n}\n\n \n\n\n \n \n ./animated-section.scss\n \n :host {\n width: 100%;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'AnimatedSectionComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/AnimatedSectionGroupComponent.html":{"url":"components/AnimatedSectionGroupComponent.html","title":"component - AnimatedSectionGroupComponent","body":"\n \n\n\n\n\n\n Components\n \n AnimatedSectionGroupComponent\n\n\n\n \n Info\n \n \n Source\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/animated_section_group.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-animated-section-group\n \n\n\n\n \n template\n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-tmpl-animated-section-group\",\n template: `\n \n `,\n})\nexport class AnimatedSectionGroupComponent extends TemplateBaseComponent {}\n\n \n\n\n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'AnimatedSectionGroupComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/AnswerBody.html":{"url":"interfaces/AnswerBody.html","title":"interface - AnswerBody","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n AnswerBody\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n name\n \n \n \n \n text\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n \n \n text: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"src/app/shared/model\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { FormBuilder, FormControl, FormGroup } from \"@angular/forms\";\nimport { ModalController } from \"@ionic/angular\";\n\ninterface AnswerBody {\n name: string | null;\n text: string | null;\n}\n\n@Component({\n selector: \"combo-box-modal\",\n templateUrl: \"./combo-box-modal.component.html\",\n styleUrls: [\"./combo-box-modal.component.scss\"],\n})\nexport class ComboBoxModalComponent implements OnInit {\n @Input() row: FlowTypes.TemplateRow;\n @Input() template: FlowTypes.Template;\n @Input() selectedValue: string;\n @Input() customAnswerSelected: boolean;\n @Input() style: string;\n formData: FormGroup | null;\n valuesFromListAnswers: AnswerBody[];\n textTitle: string | null;\n inputAllowed: boolean = false;\n form: FormGroup;\n inputPosition: boolean = false;\n maxLength: number = 30;\n placeholder: string = \"\";\n constructor(private fb: FormBuilder, private modalController: ModalController) {}\n\n ngOnInit() {\n this.getParams();\n this.calculateAnswer();\n }\n\n getParams() {\n this.valuesFromListAnswers = this.convertToObject(\n getParamFromTemplateRow(this.row, \"answer_list\", null)\n );\n this.textTitle = getStringParamFromTemplateRow(this.row, \"text\", null);\n this.inputAllowed = getBooleanParamFromTemplateRow(this.row, \"input_allowed\", false);\n this.inputPosition =\n getStringParamFromTemplateRow(this.row, \"input_position\", \"bottom\") === \"top\";\n this.maxLength = getNumberParamFromTemplateRow(this.row, \"max_length\", 30);\n this.placeholder = getStringParamFromTemplateRow(this.row, \"answer_placeholder\", \"\");\n if (this.formData) {\n this.form = this.formData;\n } else {\n this.buildForm();\n }\n }\n\n calculateAnswer() {\n if (!this.customAnswerSelected) {\n this.form.get(\"answer\").setValue(this.selectedValue);\n } else {\n this.form.get(\"customAnswer\").setValue(this.selectedValue);\n }\n }\n\n convertToObject(answers_list: string[]): AnswerBody[] {\n let answers: AnswerBody[] = [];\n if (answers_list) {\n answers_list.map((item) => {\n const obj: AnswerBody = {\n text: null,\n name: null,\n };\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n obj[field] = value;\n }\n });\n answers.push(obj);\n });\n return answers;\n }\n }\n\n buildForm() {\n this.form = this.fb.group({\n answer: new FormControl(null, []),\n });\n if (this.inputAllowed) {\n this.form.addControl(\"customAnswer\", new FormControl(\"\", []));\n }\n }\n\n check(el) {\n if (this.form.get(\"answer\").value === el.name) {\n this.form.get(\"answer\").setValue(null);\n this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: null });\n } else {\n this.form.get(\"answer\").setValue(el);\n if (this.inputAllowed) {\n this.form.get(\"customAnswer\").setValue(null);\n }\n this.customAnswerSelected = false;\n this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: el });\n }\n }\n\n closeModal(value) {\n setTimeout(async () => {\n await this.modalController.dismiss(value);\n }, 50);\n }\n\n enterCustomAnswer() {\n if (this.form.get(\"customAnswer\").value !== \"\") {\n if (this.customAnswerSelected) {\n this.customAnswerSelected = true;\n this.closeModal({\n customAnswerSelected: this.customAnswerSelected,\n answer: { text: this.form.get(\"customAnswer\").value, name: \"other\" },\n });\n } else {\n this.form.get(\"answer\").setValue(null);\n this.customAnswerSelected = true;\n this.closeModal({\n customAnswerSelected: this.customAnswerSelected,\n answer: { text: this.form.get(\"customAnswer\").value, name: \"other\" },\n });\n }\n }\n }\n\n get customAnswerClass() {\n return this.customAnswerSelected ? \"text-box-input checked-radion\" : \"text-box-input\";\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/BlankDate.html":{"url":"classes/BlankDate.html","title":"class - BlankDate","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n BlankDate\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts\n \n\n\n \n Description\n \n \n Consistent with JavaRosa, the following should produce an empty string:\n\ndate('')\nformat-date('')\nformat-date(date(''))\n\nConversions of date('') to a number is still invalid. This behavior\ndeviates from JavaRosa by producing 'Invalid Date' rather than NaN,\nfor consistency with historical behavior.\n\n \n\n \n Extends\n \n \n Date\n \n\n\n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts:16\n \n \n\n \n \n\n\n\n\n\n\n\n\n\n \n\n\n \n export class BlankDate extends Date {\n constructor() {\n super(NaN);\n }\n\n toString() {\n return \"\";\n }\n}\n\n/**\n * Converts a native Date UTC String to a RFC 3339-compliant date string with local offsets\n * used in ODK, so it replaces the Z in the ISOstring with a local offset\n * @param {Date} date\n * @return {string} a datetime string formatted according to RC3339 with local offset\n */\nexport const toISOLocalString = (date) => {\n //2012-09-05T12:57:00.000-04:00 (ODK)\n\n if ([\"Invalid Date\", \"\"].includes(date.toString())) {\n return date.toString();\n }\n\n var dt = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000)\n .toISOString()\n .replace(\"Z\", getTimezoneOffsetAsTime(date));\n\n if (dt.indexOf(\"T00:00:00.000\") > 0) {\n return dt.split(\"T\")[0];\n } else {\n return dt;\n }\n};\n\n/**\n * @param {Date} date\n * @return {string}\n */\nexport const getTimezoneOffsetAsTime = (date) => {\n var offsetMinutesTotal;\n var hours;\n var minutes;\n var direction;\n var pad2 = function (x) {\n return x \n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/ComboBoxModalComponent.html":{"url":"components/ComboBoxModalComponent.html","title":"component - ComboBoxModalComponent","body":"\n \n\n\n\n\n\n Components\n \n ComboBoxModalComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts\n\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n combo-box-modal\n \n\n \n styleUrls\n ./combo-box-modal.component.scss\n \n\n\n\n \n templateUrl\n ./combo-box-modal.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n form\n \n \n formData\n \n \n inputAllowed\n \n \n inputPosition\n \n \n maxLength\n \n \n placeholder\n \n \n textTitle\n \n \n valuesFromListAnswers\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n buildForm\n \n \n calculateAnswer\n \n \n check\n \n \n closeModal\n \n \n convertToObject\n \n \n enterCustomAnswer\n \n \n getParams\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n customAnswerSelected\n \n \n row\n \n \n selectedValue\n \n \n style\n \n \n template\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n customAnswerClass\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(fb: FormBuilder, modalController: ModalController)\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:35\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n fb\n \n \n FormBuilder\n \n \n \n No\n \n \n \n \n modalController\n \n \n ModalController\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n customAnswerSelected\n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:26\n \n \n \n \n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:23\n \n \n \n \n \n \n \n \n \n selectedValue\n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:25\n \n \n \n \n \n \n \n \n \n style\n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:27\n \n \n \n \n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:24\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n buildForm\n \n \n \n \n \n \nbuildForm()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:89\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n calculateAnswer\n \n \n \n \n \n \ncalculateAnswer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:60\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n check\n \n \n \n \n \n \ncheck(el)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:98\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n el\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n closeModal\n \n \n \n \n \n \ncloseModal(value)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:112\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n value\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n convertToObject\n \n \n \n \n \n \nconvertToObject(answers_list: string[])\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:68\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n answers_list\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : AnswerBody[]\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n enterCustomAnswer\n \n \n \n \n \n \nenterCustomAnswer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:118\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:43\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n form\n \n \n \n \n \n \n Type : FormGroup\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n formData\n \n \n \n \n \n \n Type : FormGroup | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n inputAllowed\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n inputPosition\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n maxLength\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 30\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n placeholder\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : \"\"\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n textTitle\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n valuesFromListAnswers\n \n \n \n \n \n \n Type : AnswerBody[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:29\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n customAnswerClass\n \n \n\n \n \n getcustomAnswerClass()\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts:137\n \n \n\n \n \n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"src/app/shared/model\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { FormBuilder, FormControl, FormGroup } from \"@angular/forms\";\nimport { ModalController } from \"@ionic/angular\";\n\ninterface AnswerBody {\n name: string | null;\n text: string | null;\n}\n\n@Component({\n selector: \"combo-box-modal\",\n templateUrl: \"./combo-box-modal.component.html\",\n styleUrls: [\"./combo-box-modal.component.scss\"],\n})\nexport class ComboBoxModalComponent implements OnInit {\n @Input() row: FlowTypes.TemplateRow;\n @Input() template: FlowTypes.Template;\n @Input() selectedValue: string;\n @Input() customAnswerSelected: boolean;\n @Input() style: string;\n formData: FormGroup | null;\n valuesFromListAnswers: AnswerBody[];\n textTitle: string | null;\n inputAllowed: boolean = false;\n form: FormGroup;\n inputPosition: boolean = false;\n maxLength: number = 30;\n placeholder: string = \"\";\n constructor(private fb: FormBuilder, private modalController: ModalController) {}\n\n ngOnInit() {\n this.getParams();\n this.calculateAnswer();\n }\n\n getParams() {\n this.valuesFromListAnswers = this.convertToObject(\n getParamFromTemplateRow(this.row, \"answer_list\", null)\n );\n this.textTitle = getStringParamFromTemplateRow(this.row, \"text\", null);\n this.inputAllowed = getBooleanParamFromTemplateRow(this.row, \"input_allowed\", false);\n this.inputPosition =\n getStringParamFromTemplateRow(this.row, \"input_position\", \"bottom\") === \"top\";\n this.maxLength = getNumberParamFromTemplateRow(this.row, \"max_length\", 30);\n this.placeholder = getStringParamFromTemplateRow(this.row, \"answer_placeholder\", \"\");\n if (this.formData) {\n this.form = this.formData;\n } else {\n this.buildForm();\n }\n }\n\n calculateAnswer() {\n if (!this.customAnswerSelected) {\n this.form.get(\"answer\").setValue(this.selectedValue);\n } else {\n this.form.get(\"customAnswer\").setValue(this.selectedValue);\n }\n }\n\n convertToObject(answers_list: string[]): AnswerBody[] {\n let answers: AnswerBody[] = [];\n if (answers_list) {\n answers_list.map((item) => {\n const obj: AnswerBody = {\n text: null,\n name: null,\n };\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n obj[field] = value;\n }\n });\n answers.push(obj);\n });\n return answers;\n }\n }\n\n buildForm() {\n this.form = this.fb.group({\n answer: new FormControl(null, []),\n });\n if (this.inputAllowed) {\n this.form.addControl(\"customAnswer\", new FormControl(\"\", []));\n }\n }\n\n check(el) {\n if (this.form.get(\"answer\").value === el.name) {\n this.form.get(\"answer\").setValue(null);\n this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: null });\n } else {\n this.form.get(\"answer\").setValue(el);\n if (this.inputAllowed) {\n this.form.get(\"customAnswer\").setValue(null);\n }\n this.customAnswerSelected = false;\n this.closeModal({ customAnswerSelected: this.customAnswerSelected, answer: el });\n }\n }\n\n closeModal(value) {\n setTimeout(async () => {\n await this.modalController.dismiss(value);\n }, 50);\n }\n\n enterCustomAnswer() {\n if (this.form.get(\"customAnswer\").value !== \"\") {\n if (this.customAnswerSelected) {\n this.customAnswerSelected = true;\n this.closeModal({\n customAnswerSelected: this.customAnswerSelected,\n answer: { text: this.form.get(\"customAnswer\").value, name: \"other\" },\n });\n } else {\n this.form.get(\"answer\").setValue(null);\n this.customAnswerSelected = true;\n this.closeModal({\n customAnswerSelected: this.customAnswerSelected,\n answer: { text: this.form.get(\"customAnswer\").value, name: \"other\" },\n });\n }\n }\n }\n\n get customAnswerClass() {\n return this.customAnswerSelected ? \"text-box-input checked-radion\" : \"text-box-input\";\n }\n}\n\n \n\n \n \n \n {{ textTitle }}\n \n \n \n \n \n \n \n {{ radio.text | translate }}\n \n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./combo-box-modal.component.scss\n \n @use \"/src/theme/mixins\";\n\n$background-with-value: var(\n --combo-box-background-with-value,\n var(--gradient-primary-light-vertical)\n);\n\n:host {\n display: contents;\n}\n\n.wrapper {\n padding: 0;\n .text-box-input {\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n border-radius: var(--ion-border-radius-secondary);\n width: 100%;\n min-height: 55px;\n font-size: var(--combo-box-font-size-standard);\n color: var(--ion-color-primary);\n text-align: center;\n font-weight: 500;\n box-shadow: var(--ion-default-box-shadow);\n margin-bottom: 20px;\n }\n}\n\n.container-modal {\n width: 100%;\n height: 100%;\n padding: 20px 20px 0 20px;\n overflow: auto;\n max-height: 90vh; // match ion-modal.combo-box-modal\n .header {\n font-size: 20px;\n text-align: center;\n color: var(--ion-color-primary);\n margin-bottom: 20px;\n }\n .form {\n display: flex;\n width: 100%;\n justify-content: center;\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n .reverse {\n flex-direction: column-reverse;\n }\n .container-radio {\n margin-bottom: 20px;\n min-height: 55px;\n width: 100%;\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n border-radius: var(--ion-border-radius-secondary);\n box-shadow: var(--ion-default-box-shadow);\n @include mixins.flex-centered;\n input {\n display: none;\n }\n label {\n padding: 5px;\n width: 100%;\n text-align: center;\n @include mixins.flex-centered;\n font-weight: var(--font-weight-standard);\n font-size: var(--combo-box-font-size-standard);\n color: var(--ion-color-primary);\n min-height: 50px;\n border-radius: 20px;\n }\n }\n .checked-radio {\n background: $background-with-value;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ textTitle }} {{ radio.text | translate }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'ComboBoxModalComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/FormComponent.html":{"url":"components/FormComponent.html","title":"component - FormComponent","body":"\n \n\n\n\n\n\n Components\n \n FormComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/form.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-form\n \n\n \n styleUrls\n ./form.scss\n \n\n\n \n template\n \n \n {{ button_text }}\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n button_text\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n submit\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n inputRow\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/form.ts:32\n \n \n\n \n \n\n\n \n Inputs\n \n \n \n \n \n inputRow\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/form.ts:25\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n submit\n \n \n \n \n \n \n \n submit()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/form.ts:44\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n button_text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/form.ts:29\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes } from \"../../models\";\nimport {\n getBooleanParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\n\nimport { Device } from \"@capacitor/device\";\n\n@Component({\n selector: \"plh-tmpl-form\",\n template: ` \n \n \n {{ button_text }}\n `,\n styleUrls: [\"./form.scss\"],\n})\nexport class FormComponent extends TemplateBaseComponent implements OnInit {\n @Input() inputRow: FlowTypes.TemplateRow;\n private deviceInfo;\n private form = {};\n private isAllowedDeviceInfo: boolean;\n public button_text: string;\n private pop_up_action_arg: string | null;\n private go_to_action_arg: string | null;\n private actions: FlowTypes.TemplateRowAction[];\n\n constructor() {\n super();\n this.deviceInfo = Device.getInfo();\n }\n\n ngOnInit() {\n if (this.inputRow) this._row = this.inputRow;\n this.getParams();\n }\n\n public submit(): void {\n this.fillInForm();\n this.actions = this.createActions();\n if (this.actions) this.parent.handleActions(this.actions, this._row);\n console.log(this.form);\n }\n\n private getParams(): void {\n this.button_text = getStringParamFromTemplateRow(this._row, \"button_text\", \"Submit\");\n this.pop_up_action_arg = getStringParamFromTemplateRow(this._row, \"button_pop_up\", null);\n this.go_to_action_arg = getStringParamFromTemplateRow(this._row, \"button_go_to\", null);\n this.isAllowedDeviceInfo = getBooleanParamFromTemplateRow(this._row, \"get_device_info\", false);\n }\n\n private createActions(): FlowTypes.TemplateRowAction[] {\n let result: FlowTypes.TemplateRowAction[] = [];\n if (this.pop_up_action_arg || this.go_to_action_arg) {\n result.push({\n trigger: \"click\",\n action_id: this.pop_up_action_arg ? \"pop_up\" : \"go_to\",\n args: [this.pop_up_action_arg ? this.pop_up_action_arg : this.go_to_action_arg],\n });\n }\n return result;\n }\n\n private fillInForm(): void {\n this._row.rows.forEach((r) => {\n if (\n r.value &&\n (r.type === \"text_box\" || r.type === \"simple_checkbox\" || r.type === \"text_area\")\n ) {\n this.form[r.name] = r.value;\n }\n });\n if (this.isAllowedDeviceInfo) {\n this.form[\"device_info\"] = this.deviceInfo[\"__zone_symbol__value\"];\n }\n }\n}\n\n \n\n\n \n \n ./form.scss\n \n $button-background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));\n\nion-button {\n font-size: 25px;\n font-weight: 500;\n color: var(--ion-color-primary-contrast);\n text-transform: none;\n white-space: pre-line;\n min-height: 71px;\n padding: var(--regular-margin) var(--regular-padding) 0;\n --border-radius: 15px;\n --box-shadow: var(--ion-default-box-shadow);\n min-width: 100%;\n --background: #{$button-background-primary};\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ button_text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'FormComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IAnswerListItem.html":{"url":"interfaces/IAnswerListItem.html","title":"interface - IAnswerListItem","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IAnswerListItem\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n image\n \n \n \n \n name\n \n \n \n Optional\n \n text\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n image\n \n \n \n \n \n \n \n \n image: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n \n \n text: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\nimport { getParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { objectToArray } from \"../../utils\";\n\ninterface IAnswerListItem {\n name: string;\n image?: string;\n text?: string;\n}\n\ninterface IRadioButtonGridParams {\n /** List of options presented as radio items */\n answer_list: IAnswerListItem[];\n /**\n * Minimum item width, will increase to fit grid.\n * Default '200px'\n **/\n item_width: string;\n /**\n * Maximum grid width, if specified will center items in available space.\n * Default '100%'\n **/\n grid_width: string;\n /**\n * Spacing between grid items.\n * Default '16px'\n **/\n grid_gap: string;\n}\n\n@Component({\n selector: \"plh-radio-button-grid\",\n templateUrl: \"./radio-button-grid.component.html\",\n styleUrls: [\"./radio-button-grid.component.scss\"],\n})\nexport class TmplRadioButtonGridComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps\n{\n /**\n * Computed item array from input parameters\n * @ignore\n */\n public radioItems: Array;\n\n /**\n * Computed grid style from input parameters\n * @ignore\n */\n public gridStyle: Partial;\n\n /**\n * Authoring parameters\n */\n public parameter_list: IRadioButtonGridParams;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.setParams();\n }\n\n /**\n * S\n * @ignore\n */\n public async handleItemClick(item: IAnswerListItem) {\n await this.setValue(item.name);\n this.triggerActions(\"changed\");\n }\n\n private setParams() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n this.radioItems = this.generateItemList();\n this.gridStyle = this.generateGridStyle();\n }\n\n /**\n * Create a list of styles to be passed into ngStyle\n * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/\n */\n private generateGridStyle() {\n const minItemWidth = this.parameter_list.item_width || \"200px\";\n const maxGridWidth = this.parameter_list.grid_width || \"100%\";\n const gridGap = this.parameter_list.grid_gap || \"16px\";\n\n const style: Partial = {\n // center grid with maximum width\n maxWidth: maxGridWidth,\n margin: \"auto\",\n // apply fixed gap between grid items\n gap: gridGap,\n // fit columns with target item width\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,\n // make all rows same height\n gridAutoRows: \"1fr\",\n };\n return style;\n }\n\n /**\n * Adapted from radio-group.component\n * Convert input answer_list to rendered item list\n */\n private generateItemList() {\n let answerList = getParamFromTemplateRow(this._row, \"answer_list\", []);\n // Convert if datalist input (hashmap to array)\n if (answerList.constructor === {}.constructor) {\n answerList = objectToArray(answerList);\n }\n const radioItems: IAnswerListItem[] = answerList.map(\n (item: string | Record) => {\n if (typeof item === \"string\") {\n return this.parseAnswerListItemString(item);\n }\n return item as any;\n }\n );\n return radioItems;\n }\n\n /**\n * convert string to relevant mappings\n * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime\n */\n private parseAnswerListItemString(item: string) {\n const itemObj: IAnswerListItem = {} as any;\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n itemObj[field] = value;\n }\n });\n return itemObj;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IButton.html":{"url":"interfaces/IButton.html","title":"interface - IButton","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IButton\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n image\n \n \n \n \n name\n \n \n \n \n target_template\n \n \n \n \n text\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n image\n \n \n \n \n \n \n \n \n image: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n target_template\n \n \n \n \n \n \n \n \n target_template: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n \n \n text: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { getParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { parseValueListItems } from \"../../utils\";\n\ninterface IButton {\n image: string | null;\n text: string | null;\n target_template: string | null;\n name: string | null;\n}\n\n@Component({\n selector: \"plh-navigation-bar\",\n templateUrl: \"./navigation-bar.component.html\",\n styleUrls: [\"./navigation-bar.component.scss\"],\n})\nexport class TmplNavigationBarComponent extends TemplateBaseComponent implements OnInit {\n buttonList: IButton[];\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n const buttonListRaw: string[] = getParamFromTemplateRow(this._row, \"button_list\", []);\n this.buttonList = parseValueListItems(buttonListRaw);\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IButton-1.html":{"url":"interfaces/IButton-1.html","title":"interface - IButton-1","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IButton\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/radio-group/radio-group.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n image\n \n \n \n \n image_checked\n \n \n \n \n name\n \n \n \n \n text\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n image\n \n \n \n \n \n \n \n \n image: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n image_checked\n \n \n \n \n \n \n \n \n image_checked: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n \n \n text: string | null\n\n \n \n\n\n \n \n Type : string | null\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\nimport {\n getNumberParamFromTemplateRow,\n getParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { ReplaySubject } from \"rxjs\";\nimport { objectToArray } from \"../../utils/template-utils\";\n\ninterface IButton {\n name: string | null;\n image: string | null;\n text: string | null;\n image_checked: string | null;\n}\n\n@Component({\n selector: \"plh-radio-group\",\n templateUrl: \"./radio-group.component.html\",\n styleUrls: [\"./radio-group.component.scss\"],\n})\nexport class TmplRadioGroupComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, OnDestroy\n{\n @Input() changeTheme: EventEmitter;\n @Input() parent: TemplateContainerComponent;\n @ViewChild(\"labelImage\", { static: false, read: true }) labelImage: ElementRef;\n arrayOfBtn: Array;\n groupName: string;\n windowWidth: number;\n private componentDestroyed$ = new ReplaySubject(1);\n flexWidth: string;\n\n // Parameters\n answer_list: string[];\n options_per_row: number;\n radioButtonType: string | null;\n style: string;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n const row = this._row;\n // extract properties from parameters\n this.radioButtonType = getParamFromTemplateRow(row, \"radio_button_type\", \"btn_text\");\n this.options_per_row = getNumberParamFromTemplateRow(this._row, \"options_per_row\", 3);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n this.windowWidth = window.innerWidth;\n\n // convert string answer lists to formatted objects\n this.answer_list = getParamFromTemplateRow(this._row, \"answer_list\", []);\n this.arrayOfBtn = this.createArrayBtnElement(this.answer_list);\n\n this.getFlexWidth();\n this.groupName = this._row._nested_name;\n }\n\n public async handleRadioButtonClick(selectedValue: string) {\n await this.setValue(selectedValue);\n this.triggerActions(\"changed\");\n }\n\n /**\n * Answer lists are formatted as strings with to indicate properties, e.g.\n * [\n * \"name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg\",\n * \"name:unhappy | image:plh_images/stickers/faces/unhappy.svg\"\n * ]\n * Convert to an object array, with key value pairs extracted from the string values\n */\n createArrayBtnElement(answer_list: string[]) {\n if (answer_list) {\n // NOTE CC 2021-08-07 - datalists might be used which currently only format as objects\n // manually convert to array if required (temp method until better handling found)\n if (typeof answer_list === \"object\") {\n answer_list = objectToArray(answer_list);\n }\n const arrayOfBtn = answer_list.map((item) => {\n // convert string to relevant mappings\n let itemObj: IButton = {} as any;\n if (typeof item === \"string\") {\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n itemObj[field] = value;\n }\n });\n }\n // NOTE CC 2021-08-07 - allow passing of object, not just string for conversion\n else {\n itemObj = item;\n }\n const processed = this.processButtonFields(itemObj);\n return processed;\n });\n // TODO - CC 2023-03-15 could lead to strange behaviour, to review\n // (checks every item but keeps overriding the button type depending on what it finds)\n arrayOfBtn.forEach((item) => {\n if (item.image && item.text) {\n this.radioButtonType = \"btn_both\";\n } else if (!item.image && item.text) {\n this.radioButtonType = \"btn_text\";\n } else if (item.image && !item.text) {\n this.radioButtonType = \"btn_image\";\n }\n });\n return arrayOfBtn;\n }\n }\n private processButtonFields(button: IButton) {\n const processed: IButton = {\n text: null,\n image: null,\n name: null,\n image_checked: null,\n };\n Object.entries(button).forEach(([field, value]) => {\n switch (field) {\n case \"image\":\n processed[field] = value;\n break;\n case \"image_checked\":\n processed[field] = value;\n break;\n default:\n processed[field] = value;\n }\n });\n return processed;\n }\n\n getFlexWidth() {\n this.flexWidth = `0 1 ${100 / this.options_per_row - 7}%`;\n }\n\n ngOnDestroy() {\n this.componentDestroyed$.next(true);\n this.componentDestroyed$.complete();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ICategoryList.html":{"url":"interfaces/ICategoryList.html","title":"interface - ICategoryList","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ICategoryList\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/number-selector/number-selector.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n from\n \n \n \n \n to\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n from\n \n \n \n \n \n \n \n \n from: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n to\n \n \n \n \n \n \n \n \n to: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"../../../../model\";\nimport {\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n getParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\n\ninterface ICategoryList {\n from: number;\n to: number;\n}\n\n@Component({\n selector: \"plh-number-selector\",\n templateUrl: \"./number-selector.component.html\",\n styleUrls: [\"./number-selector.component.scss\"],\n})\nexport class TmplNumberComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n @Input() parent: TemplateContainerComponent;\n\n title: string | null;\n min_value: number | null = 0;\n displayValue: any = 0;\n max_value: number | null = 0;\n category_list: string[];\n height: string;\n category_size: number;\n first_display_term: number;\n valuesFromCategoryList: string[];\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.category_list = getParamFromTemplateRow(this._row, \"category_list\", null);\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.height = getStringParamFromTemplateRow(this._row, \"height\", \"short\");\n this.height = this.height === \"short\" || \"normal\" ? this.height : \"short\";\n if (this.category_list) {\n this.valuesFromCategoryList = this.category_list;\n this.first_display_term =\n getNumberParamFromTemplateRow(this._row, \"first_display_term\", 1) - 1;\n this.displayValue = this.valuesFromCategoryList[this.first_display_term];\n } else {\n this.min_value = getNumberParamFromTemplateRow(this._row, \"min_value\", 0);\n this.max_value = getNumberParamFromTemplateRow(this._row, \"max_value\", 6);\n this.category_size = getNumberParamFromTemplateRow(this._row, \"category_size\", 1);\n this.displayValue = this.min_value;\n }\n // assign any previously saved value\n if (this._row.value) {\n this.displayValue = this._row.value;\n }\n }\n\n async increment(param: \"gt\" | \"lt\") {\n if (this.category_list) {\n if (this.checkIfContainsNextArrayItem(this.valuesFromCategoryList, param)) {\n this.updateData(param);\n }\n } else {\n if (param === \"gt\") {\n if (this.displayValue + this.category_size this.min_value - this.category_size &&\n this.displayValue - this.category_size >= this.min_value\n ) {\n if (this.displayValue === 1) {\n this.displayValue--;\n } else {\n this.displayValue -= this.category_size;\n }\n }\n }\n }\n await this.setValue(this.displayValue);\n this.triggerActions(\"changed\");\n }\n\n getMinOrMaxFromCategoryListItem(item: string): ICategoryList {\n return {\n from: Number(item.split(\"-\")[0].trim()),\n to: Number(item.split(\"-\")[1].trim()),\n };\n }\n\n checkIfContainsNextArrayItem(array: string[], expression: \"gt\" | \"lt\") {\n return expression === \"gt\"\n ? this.first_display_term \n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IDisplayGridParams.html":{"url":"interfaces/IDisplayGridParams.html","title":"interface - IDisplayGridParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IDisplayGridParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n grid_gap\n \n \n \n \n grid_width\n \n \n \n Optional\n \n item_border\n \n \n \n \n item_width\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n grid_gap\n \n \n \n \n \n \n \n \n grid_gap: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Spacing between grid items.\nDefault '16px'\n\n \n \n \n \n \n \n \n \n \n grid_width\n \n \n \n \n \n \n \n \n grid_width: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Maximum grid width, if specified will center items in available space.\nDefault '100%'\n\n \n \n \n \n \n \n \n \n \n item_border\n \n \n \n \n \n \n \n \n item_border: \"solid\" | \"dashed\" | \"none\"\n\n \n \n\n\n \n \n Type : \"solid\" | \"dashed\" | \"none\"\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n Item border outline style.\nDefault: \"solid\"\n\n \n \n \n \n \n \n \n \n \n item_width\n \n \n \n \n \n \n \n \n item_width: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Minimum item width, will increase to fit grid.\nDefault '200px'\n\n \n \n \n \n \n \n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../../models\";\n\ninterface IDisplayGridParams {\n /**\n * Item border outline style.\n * Default: \"solid\"\n */\n item_border?: \"solid\" | \"dashed\" | \"none\";\n\n /**\n * Minimum item width, will increase to fit grid.\n * Default '200px'\n **/\n item_width: string;\n /**\n * Maximum grid width, if specified will center items in available space.\n * Default '100%'\n **/\n grid_width: string;\n /**\n * Spacing between grid items.\n * Default '16px'\n **/\n grid_gap: string;\n}\n\n@Component({\n selector: \"plh-display-grid\",\n templateUrl: \"./display-grid.component.html\",\n styleUrls: [\"./display-grid.component.scss\"],\n})\nexport class TmplDisplayGridComponent extends TemplateBaseComponent implements ITemplateRowProps {\n /**\n * Computed grid style from input parameters\n * @ignore\n */\n public gridStyle: Partial;\n /**\n * Computed grid style from input parameters\n *\n */\n public itemStyle: Partial;\n\n /**\n * Authoring parameters\n */\n public parameter_list: IDisplayGridParams;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.setParams();\n }\n\n private setParams() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n const { gridStyle, itemStyle } = this.generateStyles();\n this.gridStyle = gridStyle;\n this.itemStyle = itemStyle;\n }\n\n /**\n * Create a list of styles to be passed into ngStyle for grid and item components\n * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/\n */\n private generateStyles() {\n const minItemWidth = this.parameter_list.item_width || \"200px\";\n const maxGridWidth = this.parameter_list.grid_width || \"100%\";\n const gridGap = this.parameter_list.grid_gap || \"16px\";\n const borderStyle = this.parameter_list.item_border || \"solid\";\n\n const gridStyle: Partial = {\n // center grid with maximum width\n maxWidth: maxGridWidth,\n margin: \"auto\",\n // apply fixed gap between grid items\n gap: gridGap,\n // fit columns with target item width\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,\n // make all rows same height\n gridAutoRows: \"1fr\",\n };\n\n const itemStyle: Partial = {\n // assign item border outline style\n borderStyle,\n };\n return { gridStyle, itemStyle };\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IEnketoFormData.html":{"url":"interfaces/IEnketoFormData.html","title":"interface - IEnketoFormData","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IEnketoFormData\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/odk-form.component.ts\n \n\n\n \n Description\n \n \n Enketo-transformed form representation\n\n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n enketoId\n \n \n \n \n externalData\n \n \n \n \n form\n \n \n \n \n hash\n \n \n \n \n languageMap\n \n \n \n \n maxSize\n \n \n \n \n media\n \n \n \n \n model\n \n \n \n \n theme\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n enketoId\n \n \n \n \n \n \n \n \n enketoId: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n externalData\n \n \n \n \n \n \n \n \n externalData: []\n\n \n \n\n\n \n \n Type : []\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n form\n \n \n \n \n \n \n \n \n form: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n html string representation of form\n\n \n \n \n \n \n \n \n \n \n hash\n \n \n \n \n \n \n \n \n hash: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n languageMap\n \n \n \n \n \n \n \n \n languageMap: literal type\n\n \n \n\n\n \n \n Type : literal type\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n maxSize\n \n \n \n \n \n \n \n \n maxSize: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n media\n \n \n \n \n \n \n \n \n media: literal type\n\n \n \n\n\n \n \n Type : literal type\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n model\n \n \n \n \n \n \n \n \n model: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n xml string representation of model\n\n \n \n \n \n \n \n \n \n \n theme\n \n \n \n \n \n \n \n \n theme: \n\n \n \n\n\n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\n\nimport Events from \"./libs/enketo/js/event\";\nimport { Form } from \"./libs/enketo/js/form\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n/** Enketo-transformed form representation */\ninterface IEnketoFormData {\n enketoId: string;\n externalData: [];\n /** html string representation of form */\n form: string;\n hash: string;\n languageMap: {};\n maxSize: number;\n media: {};\n /** xml string representation of model */\n model: string;\n theme: \"grid\";\n}\n\ninterface IFormEntry {\n created: number;\n draft: boolean;\n enketoId: string;\n files: any[];\n instanceId: string;\n name: string;\n // TODO - check if actually updated\n updated: number;\n xml: string;\n}\n\ninterface IEventFormSaved {\n entry: IFormEntry;\n}\n\ninterface IODKFormComponentParameters {\n /**\n * Path to asset file containing form data in enketo-transformed json format\n */\n form_asset?: string;\n}\n\n@Component({\n selector: \"tmpl-odk-form\",\n templateUrl: \"./odk-form.component.html\",\n styleUrls: [\"./odk-form.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * A lightweight port of enketo-core to render a form within an angular component\n *\n * NOTE - this component is also under development as part of an external repo,\n * and as such the implementation included may be lacking features\n *\n * It is preferable to import from external project when available to remove additional\n * imports as noted below\n *\n * Opt-Out (additional changes to make if removing component)\n * - Remove modules:\n * jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge\n * - Remove js file import in tsconfig.app.json\n * - Reduce build budget styles 200kb -> 16kb\n * - Reduce build budget js 5MB -> 4MB\n */\nexport class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {\n /** Authoring parameters */\n public parameter_list: IODKFormComponentParameters;\n\n /**\n * Form container element binding to render form\n * @ignore\n */\n @ViewChild(\"formContainerEl\", { static: true }) formContainerEl: ElementRef;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.processParameterList();\n }\n\n private async processParameterList() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n // load form from form_asset parameter\n const { form_asset } = this.parameter_list;\n if (!form_asset) {\n console.error(\"[odk_form] form_asset parameter required\");\n return;\n }\n const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);\n if (!formData) {\n console.error(\"[odk_form] form_asset does not exist\");\n return;\n }\n this.loadForm(formData);\n }\n\n private enketoForm: Form;\n\n public async save(opts = { draft: false }) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private get xmlFormValue() {\n return this.enketoForm.getDataStr();\n }\n\n private async handleEventDataUpdate(e: ReturnType) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private async handleEventXmlFormChange(e: ReturnType) {\n // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js\n // await this.setValue(this.xmlFormValue);\n }\n\n /**\n * Load the form xml and data models and render intial form components\n * https://github.com/enketo/enketo-core#usage-as-a-library\n */\n private loadForm(formData: IEnketoFormData) {\n const { formContainerEl } = this;\n const { form, model } = formData;\n console.log({ form, model, formContainerEl });\n if (form && model && formContainerEl) {\n this.formContainerEl.nativeElement.innerHTML = form;\n const formEl = this.formContainerEl.nativeElement.querySelector(\"form\");\n if (formEl) {\n this.enketoForm = new Form(formEl, model, {});\n // Initialize the form and capture any load errors\n let loadErrors = this.enketoForm.init();\n if (loadErrors.length > 0) {\n console.error(loadErrors);\n }\n // If desired, scroll to a specific question with any XPath location expression,\n // and aggregate any loadErrors.\n loadErrors = loadErrors.concat(this.enketoForm.goTo(\"//repeat[3]/node\"));\n\n // Additional events can be bound directly to form (as opposed to component-propogated)\n this.enketoForm.model.events.addEventListener(\n Events.DataUpdate().type,\n this.handleEventDataUpdate.bind(this)\n );\n\n // Extract updated form xml on change (triggered at document and form level)\n this.enketoForm.view.html.addEventListener(\n Events.XFormsValueChanged().type,\n this.handleEventXmlFormChange.bind(this)\n );\n }\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IEventFormSaved.html":{"url":"interfaces/IEventFormSaved.html","title":"interface - IEventFormSaved","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IEventFormSaved\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/odk-form.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n entry\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n entry\n \n \n \n \n \n \n \n \n entry: IFormEntry\n\n \n \n\n\n \n \n Type : IFormEntry\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\n\nimport Events from \"./libs/enketo/js/event\";\nimport { Form } from \"./libs/enketo/js/form\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n/** Enketo-transformed form representation */\ninterface IEnketoFormData {\n enketoId: string;\n externalData: [];\n /** html string representation of form */\n form: string;\n hash: string;\n languageMap: {};\n maxSize: number;\n media: {};\n /** xml string representation of model */\n model: string;\n theme: \"grid\";\n}\n\ninterface IFormEntry {\n created: number;\n draft: boolean;\n enketoId: string;\n files: any[];\n instanceId: string;\n name: string;\n // TODO - check if actually updated\n updated: number;\n xml: string;\n}\n\ninterface IEventFormSaved {\n entry: IFormEntry;\n}\n\ninterface IODKFormComponentParameters {\n /**\n * Path to asset file containing form data in enketo-transformed json format\n */\n form_asset?: string;\n}\n\n@Component({\n selector: \"tmpl-odk-form\",\n templateUrl: \"./odk-form.component.html\",\n styleUrls: [\"./odk-form.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * A lightweight port of enketo-core to render a form within an angular component\n *\n * NOTE - this component is also under development as part of an external repo,\n * and as such the implementation included may be lacking features\n *\n * It is preferable to import from external project when available to remove additional\n * imports as noted below\n *\n * Opt-Out (additional changes to make if removing component)\n * - Remove modules:\n * jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge\n * - Remove js file import in tsconfig.app.json\n * - Reduce build budget styles 200kb -> 16kb\n * - Reduce build budget js 5MB -> 4MB\n */\nexport class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {\n /** Authoring parameters */\n public parameter_list: IODKFormComponentParameters;\n\n /**\n * Form container element binding to render form\n * @ignore\n */\n @ViewChild(\"formContainerEl\", { static: true }) formContainerEl: ElementRef;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.processParameterList();\n }\n\n private async processParameterList() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n // load form from form_asset parameter\n const { form_asset } = this.parameter_list;\n if (!form_asset) {\n console.error(\"[odk_form] form_asset parameter required\");\n return;\n }\n const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);\n if (!formData) {\n console.error(\"[odk_form] form_asset does not exist\");\n return;\n }\n this.loadForm(formData);\n }\n\n private enketoForm: Form;\n\n public async save(opts = { draft: false }) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private get xmlFormValue() {\n return this.enketoForm.getDataStr();\n }\n\n private async handleEventDataUpdate(e: ReturnType) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private async handleEventXmlFormChange(e: ReturnType) {\n // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js\n // await this.setValue(this.xmlFormValue);\n }\n\n /**\n * Load the form xml and data models and render intial form components\n * https://github.com/enketo/enketo-core#usage-as-a-library\n */\n private loadForm(formData: IEnketoFormData) {\n const { formContainerEl } = this;\n const { form, model } = formData;\n console.log({ form, model, formContainerEl });\n if (form && model && formContainerEl) {\n this.formContainerEl.nativeElement.innerHTML = form;\n const formEl = this.formContainerEl.nativeElement.querySelector(\"form\");\n if (formEl) {\n this.enketoForm = new Form(formEl, model, {});\n // Initialize the form and capture any load errors\n let loadErrors = this.enketoForm.init();\n if (loadErrors.length > 0) {\n console.error(loadErrors);\n }\n // If desired, scroll to a specific question with any XPath location expression,\n // and aggregate any loadErrors.\n loadErrors = loadErrors.concat(this.enketoForm.goTo(\"//repeat[3]/node\"));\n\n // Additional events can be bound directly to form (as opposed to component-propogated)\n this.enketoForm.model.events.addEventListener(\n Events.DataUpdate().type,\n this.handleEventDataUpdate.bind(this)\n );\n\n // Extract updated form xml on change (triggered at document and form level)\n this.enketoForm.view.html.addEventListener(\n Events.XFormsValueChanged().type,\n this.handleEventXmlFormChange.bind(this)\n );\n }\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IFormEntry.html":{"url":"interfaces/IFormEntry.html","title":"interface - IFormEntry","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IFormEntry\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/odk-form.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n created\n \n \n \n \n draft\n \n \n \n \n enketoId\n \n \n \n \n files\n \n \n \n \n instanceId\n \n \n \n \n name\n \n \n \n \n updated\n \n \n \n \n xml\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n created\n \n \n \n \n \n \n \n \n created: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n draft\n \n \n \n \n \n \n \n \n draft: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n enketoId\n \n \n \n \n \n \n \n \n enketoId: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n files\n \n \n \n \n \n \n \n \n files: any[]\n\n \n \n\n\n \n \n Type : any[]\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n instanceId\n \n \n \n \n \n \n \n \n instanceId: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n updated\n \n \n \n \n \n \n \n \n updated: number\n\n \n \n\n\n \n \n Type : number\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n xml\n \n \n \n \n \n \n \n \n xml: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\n\nimport Events from \"./libs/enketo/js/event\";\nimport { Form } from \"./libs/enketo/js/form\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n/** Enketo-transformed form representation */\ninterface IEnketoFormData {\n enketoId: string;\n externalData: [];\n /** html string representation of form */\n form: string;\n hash: string;\n languageMap: {};\n maxSize: number;\n media: {};\n /** xml string representation of model */\n model: string;\n theme: \"grid\";\n}\n\ninterface IFormEntry {\n created: number;\n draft: boolean;\n enketoId: string;\n files: any[];\n instanceId: string;\n name: string;\n // TODO - check if actually updated\n updated: number;\n xml: string;\n}\n\ninterface IEventFormSaved {\n entry: IFormEntry;\n}\n\ninterface IODKFormComponentParameters {\n /**\n * Path to asset file containing form data in enketo-transformed json format\n */\n form_asset?: string;\n}\n\n@Component({\n selector: \"tmpl-odk-form\",\n templateUrl: \"./odk-form.component.html\",\n styleUrls: [\"./odk-form.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * A lightweight port of enketo-core to render a form within an angular component\n *\n * NOTE - this component is also under development as part of an external repo,\n * and as such the implementation included may be lacking features\n *\n * It is preferable to import from external project when available to remove additional\n * imports as noted below\n *\n * Opt-Out (additional changes to make if removing component)\n * - Remove modules:\n * jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge\n * - Remove js file import in tsconfig.app.json\n * - Reduce build budget styles 200kb -> 16kb\n * - Reduce build budget js 5MB -> 4MB\n */\nexport class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {\n /** Authoring parameters */\n public parameter_list: IODKFormComponentParameters;\n\n /**\n * Form container element binding to render form\n * @ignore\n */\n @ViewChild(\"formContainerEl\", { static: true }) formContainerEl: ElementRef;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.processParameterList();\n }\n\n private async processParameterList() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n // load form from form_asset parameter\n const { form_asset } = this.parameter_list;\n if (!form_asset) {\n console.error(\"[odk_form] form_asset parameter required\");\n return;\n }\n const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);\n if (!formData) {\n console.error(\"[odk_form] form_asset does not exist\");\n return;\n }\n this.loadForm(formData);\n }\n\n private enketoForm: Form;\n\n public async save(opts = { draft: false }) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private get xmlFormValue() {\n return this.enketoForm.getDataStr();\n }\n\n private async handleEventDataUpdate(e: ReturnType) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private async handleEventXmlFormChange(e: ReturnType) {\n // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js\n // await this.setValue(this.xmlFormValue);\n }\n\n /**\n * Load the form xml and data models and render intial form components\n * https://github.com/enketo/enketo-core#usage-as-a-library\n */\n private loadForm(formData: IEnketoFormData) {\n const { formContainerEl } = this;\n const { form, model } = formData;\n console.log({ form, model, formContainerEl });\n if (form && model && formContainerEl) {\n this.formContainerEl.nativeElement.innerHTML = form;\n const formEl = this.formContainerEl.nativeElement.querySelector(\"form\");\n if (formEl) {\n this.enketoForm = new Form(formEl, model, {});\n // Initialize the form and capture any load errors\n let loadErrors = this.enketoForm.init();\n if (loadErrors.length > 0) {\n console.error(loadErrors);\n }\n // If desired, scroll to a specific question with any XPath location expression,\n // and aggregate any loadErrors.\n loadErrors = loadErrors.concat(this.enketoForm.goTo(\"//repeat[3]/node\"));\n\n // Additional events can be bound directly to form (as opposed to component-propogated)\n this.enketoForm.model.events.addEventListener(\n Events.DataUpdate().type,\n this.handleEventDataUpdate.bind(this)\n );\n\n // Extract updated form xml on change (triggered at document and form level)\n this.enketoForm.view.html.addEventListener(\n Events.XFormsValueChanged().type,\n this.handleEventXmlFormChange.bind(this)\n );\n }\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IODKFormComponentParameters.html":{"url":"interfaces/IODKFormComponentParameters.html","title":"interface - IODKFormComponentParameters","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IODKFormComponentParameters\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/odk-form.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n form_asset\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n form_asset\n \n \n \n \n \n \n \n \n form_asset: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n Path to asset file containing form data in enketo-transformed json format\n\n \n \n \n \n \n \n\n\n \n import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\n\nimport Events from \"./libs/enketo/js/event\";\nimport { Form } from \"./libs/enketo/js/form\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n/** Enketo-transformed form representation */\ninterface IEnketoFormData {\n enketoId: string;\n externalData: [];\n /** html string representation of form */\n form: string;\n hash: string;\n languageMap: {};\n maxSize: number;\n media: {};\n /** xml string representation of model */\n model: string;\n theme: \"grid\";\n}\n\ninterface IFormEntry {\n created: number;\n draft: boolean;\n enketoId: string;\n files: any[];\n instanceId: string;\n name: string;\n // TODO - check if actually updated\n updated: number;\n xml: string;\n}\n\ninterface IEventFormSaved {\n entry: IFormEntry;\n}\n\ninterface IODKFormComponentParameters {\n /**\n * Path to asset file containing form data in enketo-transformed json format\n */\n form_asset?: string;\n}\n\n@Component({\n selector: \"tmpl-odk-form\",\n templateUrl: \"./odk-form.component.html\",\n styleUrls: [\"./odk-form.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * A lightweight port of enketo-core to render a form within an angular component\n *\n * NOTE - this component is also under development as part of an external repo,\n * and as such the implementation included may be lacking features\n *\n * It is preferable to import from external project when available to remove additional\n * imports as noted below\n *\n * Opt-Out (additional changes to make if removing component)\n * - Remove modules:\n * jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge\n * - Remove js file import in tsconfig.app.json\n * - Reduce build budget styles 200kb -> 16kb\n * - Reduce build budget js 5MB -> 4MB\n */\nexport class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {\n /** Authoring parameters */\n public parameter_list: IODKFormComponentParameters;\n\n /**\n * Form container element binding to render form\n * @ignore\n */\n @ViewChild(\"formContainerEl\", { static: true }) formContainerEl: ElementRef;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.processParameterList();\n }\n\n private async processParameterList() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n // load form from form_asset parameter\n const { form_asset } = this.parameter_list;\n if (!form_asset) {\n console.error(\"[odk_form] form_asset parameter required\");\n return;\n }\n const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);\n if (!formData) {\n console.error(\"[odk_form] form_asset does not exist\");\n return;\n }\n this.loadForm(formData);\n }\n\n private enketoForm: Form;\n\n public async save(opts = { draft: false }) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private get xmlFormValue() {\n return this.enketoForm.getDataStr();\n }\n\n private async handleEventDataUpdate(e: ReturnType) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private async handleEventXmlFormChange(e: ReturnType) {\n // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js\n // await this.setValue(this.xmlFormValue);\n }\n\n /**\n * Load the form xml and data models and render intial form components\n * https://github.com/enketo/enketo-core#usage-as-a-library\n */\n private loadForm(formData: IEnketoFormData) {\n const { formContainerEl } = this;\n const { form, model } = formData;\n console.log({ form, model, formContainerEl });\n if (form && model && formContainerEl) {\n this.formContainerEl.nativeElement.innerHTML = form;\n const formEl = this.formContainerEl.nativeElement.querySelector(\"form\");\n if (formEl) {\n this.enketoForm = new Form(formEl, model, {});\n // Initialize the form and capture any load errors\n let loadErrors = this.enketoForm.init();\n if (loadErrors.length > 0) {\n console.error(loadErrors);\n }\n // If desired, scroll to a specific question with any XPath location expression,\n // and aggregate any loadErrors.\n loadErrors = loadErrors.concat(this.enketoForm.goTo(\"//repeat[3]/node\"));\n\n // Additional events can be bound directly to form (as opposed to component-propogated)\n this.enketoForm.model.events.addEventListener(\n Events.DataUpdate().type,\n this.handleEventDataUpdate.bind(this)\n );\n\n // Extract updated form xml on change (triggered at document and form level)\n this.enketoForm.view.html.addEventListener(\n Events.XFormsValueChanged().type,\n this.handleEventXmlFormChange.bind(this)\n );\n }\n }\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/IRadioButtonGridParams.html":{"url":"interfaces/IRadioButtonGridParams.html","title":"interface - IRadioButtonGridParams","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n IRadioButtonGridParams\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n answer_list\n \n \n \n \n grid_gap\n \n \n \n \n grid_width\n \n \n \n \n item_width\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n answer_list\n \n \n \n \n \n \n \n \n answer_list: IAnswerListItem[]\n\n \n \n\n\n \n \n Type : IAnswerListItem[]\n\n \n \n\n\n\n\n\n \n \n List of options presented as radio items\n\n \n \n \n \n \n \n \n \n \n grid_gap\n \n \n \n \n \n \n \n \n grid_gap: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Spacing between grid items.\nDefault '16px'\n\n \n \n \n \n \n \n \n \n \n grid_width\n \n \n \n \n \n \n \n \n grid_width: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Maximum grid width, if specified will center items in available space.\nDefault '100%'\n\n \n \n \n \n \n \n \n \n \n item_width\n \n \n \n \n \n \n \n \n item_width: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n Minimum item width, will increase to fit grid.\nDefault '200px'\n\n \n \n \n \n \n \n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\nimport { getParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { objectToArray } from \"../../utils\";\n\ninterface IAnswerListItem {\n name: string;\n image?: string;\n text?: string;\n}\n\ninterface IRadioButtonGridParams {\n /** List of options presented as radio items */\n answer_list: IAnswerListItem[];\n /**\n * Minimum item width, will increase to fit grid.\n * Default '200px'\n **/\n item_width: string;\n /**\n * Maximum grid width, if specified will center items in available space.\n * Default '100%'\n **/\n grid_width: string;\n /**\n * Spacing between grid items.\n * Default '16px'\n **/\n grid_gap: string;\n}\n\n@Component({\n selector: \"plh-radio-button-grid\",\n templateUrl: \"./radio-button-grid.component.html\",\n styleUrls: [\"./radio-button-grid.component.scss\"],\n})\nexport class TmplRadioButtonGridComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps\n{\n /**\n * Computed item array from input parameters\n * @ignore\n */\n public radioItems: Array;\n\n /**\n * Computed grid style from input parameters\n * @ignore\n */\n public gridStyle: Partial;\n\n /**\n * Authoring parameters\n */\n public parameter_list: IRadioButtonGridParams;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.setParams();\n }\n\n /**\n * S\n * @ignore\n */\n public async handleItemClick(item: IAnswerListItem) {\n await this.setValue(item.name);\n this.triggerActions(\"changed\");\n }\n\n private setParams() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n this.radioItems = this.generateItemList();\n this.gridStyle = this.generateGridStyle();\n }\n\n /**\n * Create a list of styles to be passed into ngStyle\n * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/\n */\n private generateGridStyle() {\n const minItemWidth = this.parameter_list.item_width || \"200px\";\n const maxGridWidth = this.parameter_list.grid_width || \"100%\";\n const gridGap = this.parameter_list.grid_gap || \"16px\";\n\n const style: Partial = {\n // center grid with maximum width\n maxWidth: maxGridWidth,\n margin: \"auto\",\n // apply fixed gap between grid items\n gap: gridGap,\n // fit columns with target item width\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,\n // make all rows same height\n gridAutoRows: \"1fr\",\n };\n return style;\n }\n\n /**\n * Adapted from radio-group.component\n * Convert input answer_list to rendered item list\n */\n private generateItemList() {\n let answerList = getParamFromTemplateRow(this._row, \"answer_list\", []);\n // Convert if datalist input (hashmap to array)\n if (answerList.constructor === {}.constructor) {\n answerList = objectToArray(answerList);\n }\n const radioItems: IAnswerListItem[] = answerList.map(\n (item: string | Record) => {\n if (typeof item === \"string\") {\n return this.parseAnswerListItemString(item);\n }\n return item as any;\n }\n );\n return radioItems;\n }\n\n /**\n * convert string to relevant mappings\n * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime\n */\n private parseAnswerListItemString(item: string) {\n const itemObj: IAnswerListItem = {} as any;\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n itemObj[field] = value;\n }\n });\n return itemObj;\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/ITemplatePopupComponentProps.html":{"url":"interfaces/ITemplatePopupComponentProps.html","title":"interface - ITemplatePopupComponentProps","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n ITemplatePopupComponentProps\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/layout/popup.ts\n \n\n\n\n \n Extends\n \n \n ITemplateContainerProps\n \n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Optional\n \n dismissOnEmit\n \n \n \n Optional\n \n fullscreen\n \n \n \n \n name\n \n \n \n Optional\n \n parent\n \n \n \n Optional\n \n row\n \n \n \n Optional\n \n showCloseButton\n \n \n \n \n templatename\n \n \n \n Optional\n \n waitForDismiss\n \n \n \n \n \n \n \n \n\n\n\n \n Properties\n \n \n \n \n \n dismissOnEmit\n \n \n \n \n \n \n \n \n dismissOnEmit: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n Dismiss popup when completed or uncompleted is emitted from child template\n\n \n \n \n \n \n \n \n \n \n fullscreen\n \n \n \n \n \n \n \n \n fullscreen: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n Display fullscreen overlayed on top of all other app content\n\n \n \n \n \n \n \n \n \n \n name\n \n \n \n \n \n \n \n \n name: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n parent\n \n \n \n \n \n \n \n \n parent: TemplateContainerComponent\n\n \n \n\n\n \n \n Type : TemplateContainerComponent\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n row\n \n \n \n \n \n \n \n \n row: FlowTypes.TemplateRow\n\n \n \n\n\n \n \n Type : FlowTypes.TemplateRow\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n showCloseButton\n \n \n \n \n \n \n \n \n showCloseButton: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n \n \n \n \n \n templatename\n \n \n \n \n \n \n \n \n templatename: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n\n\n \n \n \n \n \n \n \n waitForDismiss\n \n \n \n \n \n \n \n \n waitForDismiss: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n \n \n Optional\n \n \n\n\n\n\n \n \n Wait for template to be self-dismissed before returning (default: True)\n\n \n \n \n \n \n \n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { ModalController } from \"@ionic/angular\";\nimport { FlowTypes, ITemplateContainerProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\n\n@Component({\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n styles: [\n `\n .popup-backdrop {\n height: 100vh;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .popup-backdrop[data-fullscreen] {\n background: white;\n }\n .popup-container {\n position: relative;\n width: var(--content-max-width);\n padding: 0 2rem;\n margin: auto;\n }\n\n .popup-content {\n margin: 30px auto;\n max-height: calc(100vh - 60px);\n background: white;\n border-radius: 20px;\n padding: 20px;\n overflow: auto;\n }\n .popup-content[data-fullscreen] {\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n margin: 0;\n }\n .popup-content::-webkit-scrollbar {\n display: none;\n }\n .close-button {\n position: absolute;\n top: 16px;\n right: 22px;\n background: white;\n width: 40px;\n height: 40px;\n border-radius: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--ion-color-primary);\n font-size: 24px;\n z-index: 1;\n box-shadow: var(--ion-default-box-shadow);\n color: var(--ion-color-primary);\n }\n `,\n ],\n})\n/**\n * When opening a template as a popup, provide a minimal interface and load\n * the template directly as a regular template-container element\n */\nexport class TemplatePopupComponent {\n @Input() props: ITemplatePopupComponentProps;\n\n constructor(private modalCtrl: ModalController) {}\n\n /**\n * When templates emit completed/uncompleted value from standalone popup close the popup\n * NOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions\n * */\n handleEmittedValue(value: { emit_value: string; emit_data: any }) {\n const { emit_value } = value;\n if (this.props.dismissOnEmit) {\n if ([\"completed\", \"uncompleted\"].includes(emit_value)) {\n this.dismiss(value);\n }\n }\n }\n\n dismissOnBackdrop(e: MouseEvent) {\n const el = e.target as HTMLElement;\n if (el.classList.contains(\"popup-backdrop\")) {\n this.dismiss();\n }\n }\n\n dismiss(value?: { emit_value: string; emit_data: any }) {\n this.modalCtrl.dismiss(value);\n }\n}\n\nexport interface ITemplatePopupComponentProps extends ITemplateContainerProps {\n name: string;\n templatename: string;\n parent?: TemplateContainerComponent;\n row?: FlowTypes.TemplateRow;\n showCloseButton?: boolean;\n /** Dismiss popup when completed or uncompleted is emitted from child template */\n dismissOnEmit?: boolean;\n /** Wait for template to be self-dismissed before returning (default: True) */\n waitForDismiss?: boolean;\n /** Display fullscreen overlayed on top of all other app content */\n fullscreen?: boolean;\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/MutationsTracker.html":{"url":"classes/MutationsTracker.html","title":"class - MutationsTracker","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n MutationsTracker\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n classChanges\n \n \n quiet\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n _resolveWhenTrue\n \n \n waitForClassChange\n \n \n waitForQuietness\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(el)\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:360\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Optional\n \n \n \n \n el\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n classChanges\n \n \n \n \n \n \n Default value : new WeakMap()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:359\n \n \n\n\n \n \n \n \n \n \n \n \n quiet\n \n \n \n \n \n \n Default value : true\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:360\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n _resolveWhenTrue\n \n \n \n \n \n \n_resolveWhenTrue(fn)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:402\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n fn\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n waitForClassChange\n \n \n \n \n \n \nwaitForClassChange(element, className)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:417\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n element\n\n \n No\n \n\n\n \n \n className\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n waitForQuietness\n \n \n \n \n \n \nwaitForQuietness()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts:430\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n function getSiblingElementsAndSelf(element, selector) {\n return _getSiblingElements(element, selector, true);\n}\n\n/**\n * Gets siblings that match selector _in DOM order_.\n *\n * @static\n * @param {Node} element - Target element.\n * @param {string} [selector] - A CSS selector.\n * @return {Array} Array of sibling nodes.\n */\nfunction getSiblingElements(element, selector) {\n return _getSiblingElements(element, selector);\n}\n\n/**\n * Returns first sibling element (in DOM order) that optionally matches the provided selector.\n *\n * @param {Node} element - Target element.\n * @param {string} [selector] - A CSS selector.\n * @return {Node} First sibling element in DOM order\n */\nfunction getSiblingElement(element, selector = \"*\"): Element {\n let found;\n let current = element.parentElement.firstElementChild;\n\n while (current && !found) {\n if (current !== element && current.matches(selector)) {\n found = current;\n }\n current = current.nextElementSibling;\n }\n\n return found;\n}\n\n/**\n * Gets siblings that match selector _in DOM order_.\n *\n * @param {Node} element - Target element.\n * @param {string} [selector] - A CSS selector.\n * @param {boolean} [includeSelf] - Whether to include self.\n * @return {Array} Array of sibling nodes.\n */\nfunction _getSiblingElements(element, selector = \"*\", includeSelf = false) {\n const results = [];\n let current = element.parentElement.firstElementChild;\n\n while (current) {\n if (\n (current === element && includeSelf) ||\n (current !== element && current.matches(selector))\n ) {\n results.push(current);\n }\n current = current.nextElementSibling;\n }\n\n return results;\n}\n\n/**\n * Gets ancestors that match selector _in DOM order_.\n *\n * @static\n * @param {Node} element - Target element.\n * @param {string} [filterSelector] - A CSS selector.\n * @param {string} [endSelector] - A CSS selector indicating where to stop. It will include this element if matched by the filter.\n * @return {Array} Array of ancestors.\n */\nfunction getAncestors(element, filterSelector = \"*\", endSelector = null) {\n const ancestors = [];\n let parent = element.parentElement;\n\n while (parent) {\n if (parent.matches(filterSelector)) {\n // document order\n ancestors.unshift(parent);\n }\n parent = endSelector && parent.matches(endSelector) ? null : parent.parentElement;\n }\n\n return ancestors;\n}\n\n/**\n * Gets closest ancestor that match selector until the end selector.\n *\n * @static\n * @param {Node} element - Target element.\n * @param {string} filterSelector - A CSS selector.\n * @param {string} [endSelector] - A CSS selector indicating where to stop. It will include this element if matched by the filter.\n * @return {Node} Closest ancestor.\n */\nfunction closestAncestorUntil(element, filterSelector = \"*\", endSelector = null) {\n let parent = element.parentElement;\n let found = null;\n\n while (parent && !found) {\n if (parent.matches(filterSelector)) {\n found = parent;\n }\n parent = endSelector && parent.matches(endSelector) ? null : parent.parentElement;\n }\n\n return found;\n}\n\n/**\n * Gets child elements, that (optionally) match a selector.\n *\n * @param {Node} element - Target element.\n * @param {string} selector - A CSS selector.\n * @return {Array} Array of child elements.\n */\nfunction getChildren(element, selector = \"*\") {\n return [...element.children].filter((el) => el.matches(selector));\n}\n\n/**\n * Gets first child element, that (optionally) matches a selector.\n *\n * @param {Node} element - Target element.\n * @param {string} selector - A CSS selector.\n * @return {Node} - First child element.\n */\nfunction getChild(element, selector = \"*\") {\n return [...element.children].find((el) => el.matches(selector));\n}\n\n/**\n * Removes all children elements.\n *\n * @static\n * @param {Node} element - Target element.\n * @return {undefined}\n */\nfunction empty(element) {\n [...element.children].forEach((el) => el.remove());\n}\n\n/**\n * @param {Element} el - Target node\n * @return {boolean} Whether previous sibling has the same node name\n */\nfunction hasPreviousSiblingElementSameName(el) {\n let found = false;\n const { nodeName } = el;\n el = el.previousSibling;\n\n while (el) {\n // Ignore any sibling text and comment nodes (e.g. whitespace with a newline character)\n // also deal with repeats that have non-repeat siblings in between them, event though that would be a bug.\n if (el.nodeName && el.nodeName === nodeName) {\n found = true;\n break;\n }\n el = el.previousSibling;\n }\n\n return found;\n}\n\n/**\n * @param {Element} el - Target node\n * @return {boolean} Whether next sibling has the same node name\n */\nfunction hasNextSiblingElementSameName(el) {\n let found = false;\n const { nodeName } = el;\n el = el.nextSibling;\n\n while (el) {\n // Ignore any sibling text and comment nodes (e.g. whitespace with a newline character)\n // also deal with repeats that have non-repeat siblings in between them, event though that would be a bug.\n if (el.nodeName && el.nodeName === nodeName) {\n found = true;\n break;\n }\n el = el.nextSibling;\n }\n\n return found;\n}\n\n/**\n * @param {Element} el - Target node\n * @return {boolean} Whether a sibling has the same node name\n */\nfunction hasSiblingElementSameName(el) {\n return hasNextSiblingElementSameName(el) || hasPreviousSiblingElementSameName(el);\n}\n\n/**\n * @param {Element} node - Target node\n * @param {string} content - Text content to look for\n * @return {boolean} Whether previous comment sibling has given text content\n */\nfunction hasPreviousCommentSiblingWithContent(node, content) {\n let found = false;\n node = node.previousSibling;\n\n while (node) {\n if (node.nodeType === Node.COMMENT_NODE && node.textContent === content) {\n found = true;\n break;\n }\n node = node.previousSibling;\n }\n\n return found;\n}\n\n/**\n * Creates an XPath from a node\n *\n * @param {Element} node - XML node\n * @param {string} [rootNodeName] - Defaults to #document\n * @param {boolean} [includePosition] - Whether or not to include the positions `/path/to/repeat[2]/node`\n * @return {string} XPath\n */\nfunction getXPath(node, rootNodeName = \"#document\", includePosition = false) {\n let index;\n const steps = [];\n let position = \"\";\n if (!node || node.nodeType !== 1) {\n return null;\n }\n const { nodeName } = node;\n let parent = node.parentElement;\n let parentName = parent ? parent.nodeName : null;\n\n if (includePosition) {\n index = getRepeatIndex(node);\n if (index > 0) {\n position = `[${index + 1}]`;\n }\n }\n\n steps.push(nodeName + position);\n\n while (parent && parentName !== rootNodeName && parentName !== \"#document\") {\n if (includePosition) {\n index = getRepeatIndex(parent);\n position = hasSiblingElementSameName(parent) ? `[${index + 1}]` : \"\";\n }\n steps.push(parentName + position);\n parent = parent.parentElement;\n parentName = parent ? parent.nodeName : null;\n }\n\n return `/${steps.reverse().join(\"/\")}`;\n}\n\n/**\n * Obtains the index of a repeat instance within its own series.\n *\n * @param {Element} node - XML node\n * @return {number} index\n */\nfunction getRepeatIndex(node) {\n let index = 0;\n const { nodeName } = node;\n let prevSibling = node.previousSibling;\n\n while (prevSibling) {\n // ignore any sibling text and comment nodes (e.g. whitespace with a newline character)\n if (prevSibling.nodeName && prevSibling.nodeName === nodeName) {\n index++;\n }\n prevSibling = prevSibling.previousSibling;\n }\n\n return index;\n}\n\n/**\n * Adapted from https://stackoverflow.com/a/46522991/3071529\n *\n * A storage solution aimed at replacing jQuerys data function.\n * Implementation Note: Elements are stored in a (WeakMap)[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap].\n * This makes sure the data is garbage collected when the node is removed.\n *\n * @namespace\n */\nconst elementDataStore = {\n /**\n * @type {WeakMap}\n */\n _storage: new WeakMap(),\n /**\n * Adds object to element storage. Ensures that element storage exist.\n *\n * @param {Node} element - target element\n * @param {string} key - name of the stored data\n * @param {object} obj - stored data\n */\n put(element, key, obj) {\n if (!this._storage.has(element)) {\n this._storage.set(element, new Map());\n }\n this._storage.get(element).set(key, obj);\n },\n /**\n * Return object from element storage.\n *\n * @param {Node} element - target element\n * @param {string} key - name of the stored data\n * @return {object} stored data object\n */\n get(element, key) {\n const item = this._storage.get(element);\n\n return item ? item.get(key) : item;\n },\n /**\n * Checkes whether element has given storage item.\n *\n * @param {Node} element - target element\n * @param {string} key - name of the stored data\n * @return {boolean} whether data is present\n */\n has(element, key) {\n const item = this._storage.get(element);\n\n return item && item.has(key);\n },\n /**\n * Removes item from element storage. Removes element storage if empty.\n *\n * @param {Node} element - target element\n * @param {string} key - name of the stored data\n * @return {object} removed data object\n */\n remove(element, key) {\n const ret = this._storage.get(element).delete(key);\n if (this._storage.get(key).size !== 0) {\n this._storage.delete(element);\n }\n\n return ret;\n },\n};\n\nclass MutationsTracker {\n classChanges = new WeakMap();\n quiet = true;\n constructor(el = document.documentElement) {\n let currentMutations = 0;\n let previousMutations = currentMutations;\n this.classChanges;\n\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n currentMutations++;\n if (mutation.type === \"attributes\" && mutation.attributeName === \"class\") {\n const trackedClasses = this.classChanges.get(mutation.target) || [];\n trackedClasses.forEach((obj) => {\n if ((mutation.target as any).classList.contains(obj.className)) {\n obj.completed = true;\n this.classChanges.set(mutation.target, trackedClasses);\n }\n });\n }\n });\n });\n\n mutationObserver.observe(el, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n attributeOldValue: true,\n characterDataOldValue: true,\n });\n\n const checkInterval = setInterval(() => {\n if (previousMutations === currentMutations) {\n this.quiet = true;\n mutationObserver.disconnect();\n clearInterval(checkInterval);\n } else {\n this.quiet = false;\n previousMutations = currentMutations;\n }\n }, 100);\n }\n\n _resolveWhenTrue(fn) {\n if (typeof fn !== \"function\") {\n return Promise.reject();\n }\n\n return new Promise((resolve) => {\n const checkInterval = setInterval(() => {\n if (fn.call(this)) {\n clearInterval(checkInterval);\n resolve();\n }\n }, 10);\n });\n }\n\n waitForClassChange(element, className) {\n const trackedClasses = this.classChanges.get(element) || [];\n\n if (!trackedClasses.some((obj) => obj.className === className)) {\n trackedClasses.push({ className });\n this.classChanges.set(element, trackedClasses);\n }\n\n return this._resolveWhenTrue(\n () => this.classChanges.get(element).find((obj) => obj.className === className).completed\n );\n }\n\n waitForQuietness() {\n return this._resolveWhenTrue(() => this.quiet);\n }\n}\n\nexport {\n /**\n * @static\n * @see {@link module:dom-utils~elementDataStore|elementDataStore}\n */\n elementDataStore,\n getSiblingElementsAndSelf,\n getSiblingElements,\n getSiblingElement,\n getAncestors,\n getChildren,\n getChild,\n getRepeatIndex,\n getXPath,\n hasPreviousCommentSiblingWithContent,\n hasPreviousSiblingElementSameName,\n hasNextSiblingElementSameName,\n hasSiblingElementSameName,\n closestAncestorUntil,\n empty,\n MutationsTracker,\n};\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/NavGroupComponent.html":{"url":"components/NavGroupComponent.html","title":"component - NavGroupComponent","body":"\n \n\n\n\n\n\n Components\n \n NavGroupComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/nav_group.ts\n\n\n\n\n \n Extends\n \n \n TemplateLayoutComponent\n \n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-nav-group\n \n\n\n \n styles\n \n :host {\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n .nav-section {\n display: flex;\n flex-direction: column;\n position: relative;\n /* sections not active are kept off-screen to avoid content height jump */\n right: 100vw;\n }\n .nav-section[data-selected] {\n flex: 1;\n right: unset;\n }\n .nav-progress {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n padding: 1em 0;\n }\n\n .nav-progress-part {\n height: 7px;\n flex: 1;\n margin: 0 2px;\n background-color: var(--ion-primary-color, #0d3f60);\n border-radius: var(--ion-border-radius-standard);\n max-width: 40px;\n }\n\n .nav-progress-part[data-seen] {\n background-color: var(--ion-primary-color, #f88923);\n }\n \n \n\n \n template\n \n \n\n\n\n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n containerRow\n \n \n sectionIndex\n \n \n templateNames\n \n \n _row\n \n \n Public\n trackByRow\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getActiveSectionIdx\n \n \n Async\n goToSection\n \n \n interceptTemplateContainerAction\n \n \n modifyRowSetter\n \n \n Async\n updateSectionProgress\n \n \n Public\n scrollToTop\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n row\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateFieldService: TemplateFieldService)\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:83\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateFieldService\n \n \n TemplateFieldService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:37\n\n \n \n \n \n reference to parent template container - does not have setter as should remain static\n\n \n \n \n \n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:28\n\n \n \n \n \n specific data used in component rendering\n\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getActiveSectionIdx\n \n \n \n \n \n \ngetActiveSectionIdx(progressField: string)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:155\n \n \n\n\n \n \n Function that will return Current Slider Index\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n progressField\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : number\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n goToSection\n \n \n \n \n \n \n \n goToSection(index: number)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:171\n \n \n\n\n \n \n Function that will move forward or back to Section\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n index\n \n number\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n interceptTemplateContainerAction\n \n \n \n \n \n \ninterceptTemplateContainerAction(action: FlowTypes.TemplateRowAction)\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:132\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n action\n \n FlowTypes.TemplateRowAction\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : boolean\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n modifyRowSetter\n \n \n \n \n \n \nmodifyRowSetter(row: FlowTypes.TemplateRow)\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:89\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n FlowTypes.TemplateRow\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : FlowTypes.TemplateRow\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n updateSectionProgress\n \n \n \n \n \n \n \n updateSectionProgress()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:181\n \n \n\n\n \n \n Function to Update Progress of Stepper\n\n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n scrollToTop\n \n \n \n \n \n \n \n scrollToTop()\n \n \n\n\n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:49\n\n \n \n\n\n \n \n As content can be nested within containers or pages, a general\nmethod that scrolls everything scrollable (all parent containers and page content)\nto the top\n\n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n containerRow\n \n \n \n \n \n \n Default value : hackAddRowWithDefaultActions()\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:83\n \n \n\n \n \n Temp row to pass emit completed/uncompleted actions to parent\n\n \n \n\n \n \n \n \n \n \n \n \n sectionIndex\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:80\n \n \n\n\n \n \n \n \n \n \n \n \n templateNames\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/nav_group.ts:79\n \n \n\n\n \n \n \n \n \n \n \n \n _row\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:26\n\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n trackByRow\n \n \n \n \n \n \n Default value : () => {...}\n \n \n \n \n Inherited from TemplateLayoutComponent\n\n \n \n \n \n Defined in TemplateLayoutComponent:80\n\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component } from \"@angular/core\";\nimport { PLHAnimations } from \"src/app/shared/animations\";\nimport { FlowTypes } from \"data-models\";\nimport { hackAddRowWithDefaultActions } from \"../../hacks\";\nimport { TemplateLayoutComponent } from \"./layout\";\nimport { isObject } from \"src/app/shared/utils/utils\";\nimport { TemplateFieldService } from \"../../services/template-field.service\";\n\n@Component({\n selector: \"plh-tmpl-nav-group\",\n animations: PLHAnimations.fadeEntryExit,\n template: `\n \n \n \n \n \n \n \n \n `,\n styles: [\n `\n :host {\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n .nav-section {\n display: flex;\n flex-direction: column;\n position: relative;\n /* sections not active are kept off-screen to avoid content height jump */\n right: 100vw;\n }\n .nav-section[data-selected] {\n flex: 1;\n right: unset;\n }\n .nav-progress {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n padding: 1em 0;\n }\n\n .nav-progress-part {\n height: 7px;\n flex: 1;\n margin: 0 2px;\n background-color: var(--ion-primary-color, #0d3f60);\n border-radius: var(--ion-border-radius-standard);\n max-width: 40px;\n }\n\n .nav-progress-part[data-seen] {\n background-color: var(--ion-primary-color, #f88923);\n }\n `,\n ],\n})\nexport class NavGroupComponent extends TemplateLayoutComponent {\n templateNames: string[] = [];\n sectionIndex: number;\n\n /** Temp row to pass emit completed/uncompleted actions to parent */\n containerRow = hackAddRowWithDefaultActions();\n\n constructor(private templateFieldService: TemplateFieldService) {\n super();\n }\n\n modifyRowSetter(row: FlowTypes.TemplateRow) {\n this.hackPopulateTemplateNames(row);\n if (this.templateNames.length > 0) {\n row._debug_name = this.templateNames[this.sectionIndex];\n // only set the active section the first time value received\n // (handle via goToSection method internally for other cases)\n if (!this.sectionIndex) {\n this.sectionIndex = this.getActiveSectionIdx(row?.parameter_list?.progress_field);\n }\n }\n return row;\n }\n\n /**\n * Populate this.templateNames: if row.value is an object referring to a data_list with a \"template\" column,\n * use these values, else if row.value is an array assume it's a list of template names.\n */\n private hackPopulateTemplateNames(row: any) {\n let dataListObject = null;\n // Handle case where data list object is passed in directly\n if (isObject(row?.value)) {\n dataListObject = row.value;\n }\n // Handle case where data list object is inside an array,\n // e.g. if assigned to a \"_list\" local variable in authoring\n else if (Array.isArray(row?.value) && isObject(row?.value[0])) {\n dataListObject = row.value[0];\n }\n if (dataListObject) {\n // If the data list has a \"template\" column, populate this.templateNames with these values\n for (const property in dataListObject) {\n if (dataListObject[property].hasOwnProperty(\"template\")) {\n this.templateNames.push(dataListObject[property].template);\n }\n }\n }\n // If row.value is an array that doesn't contain a datalist object,\n // assume it's a list of template names\n if (this.templateNames.length === 0 && Array.isArray(row?.value)) {\n this.templateNames = row.value;\n }\n }\n\n interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) {\n const { action_id, args } = action;\n // only allow actions to be processed by parent if last section\n if (action_id === \"emit\" && args[0] === \"completed\") {\n if (this.sectionIndex 0) {\n this.goToSection(this.sectionIndex - 1).then();\n return false;\n }\n }\n // default process on parent\n return true;\n }\n\n /**\n * Function that will return Current Slider Index\n * @param progressField\n */\n getActiveSectionIdx(progressField: string): number {\n let result: number;\n const currentProgress = this.templateFieldService.getField(progressField);\n if (+currentProgress === 100) {\n result = 0;\n this.templateFieldService.setField(progressField, `${result}`);\n return result;\n }\n result = Math.floor((currentProgress * this.templateNames.length) / 100 - 1);\n return result > 0 ? result : 0;\n }\n\n /**\n * Function that will move forward or back to Section\n * @param index\n */\n async goToSection(index: number) {\n this.sectionIndex = index;\n this.scrollToTop();\n this._row._debug_name = this.templateNames[index];\n await this.updateSectionProgress();\n }\n\n /**\n * Function to Update Progress of Stepper\n */\n async updateSectionProgress() {\n //update the field provided in progress_variable to be equal to the max of it's current value\n //and the percentage of this.sectionIndex from this.templateNames.length. the value should\n //be an integer between 0 and 100 inclusive.\n const progressField = this._row.parameter_list[\"progress_field\"];\n const progressFieldMaximum = this._row.parameter_list[\"max_progress_field\"];\n\n if (progressField && progressField.indexOf(\"{{\") \n \n\n\n \n \n :host {\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n .nav-section {\n display: flex;\n flex-direction: column;\n position: relative;\n /* sections not active are kept off-screen to avoid content height jump */\n right: 100vw;\n }\n .nav-section[data-selected] {\n flex: 1;\n right: unset;\n }\n .nav-progress {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n padding: 1em 0;\n }\n\n .nav-progress-part {\n height: 7px;\n flex: 1;\n margin: 0 2px;\n background-color: var(--ion-primary-color, #0d3f60);\n border-radius: var(--ion-border-radius-standard);\n max-width: 40px;\n }\n\n .nav-progress-part[data-seen] {\n background-color: var(--ion-primary-color, #f88923);\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'NavGroupComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/PausedState.html":{"url":"classes/PausedState.html","title":"class - PausedState","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n PausedState\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/timer/timer.component.ts\n \n\n\n\n \n Extends\n \n \n State\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n timer\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n clickLeftButton\n \n \n clickRightButton\n \n \n callOnInit\n \n \n clickTimer\n \n \n editTimer\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(timer: TmplTimerComponent)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:273\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n timer\n \n \n TmplTimerComponent\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n timer\n \n \n \n \n \n \n Type : TmplTimerComponent\n\n \n \n \n \n Inherited from State\n\n \n \n \n \n Defined in State:209\n\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n clickLeftButton\n \n \n \n \n \n \nclickLeftButton()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:286\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickRightButton\n \n \n \n \n \n \nclickRightButton()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:290\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n callOnInit\n \n \n \n \n \n \ncallOnInit()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:232\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickTimer\n \n \n \n \n \n \nclickTimer()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:215\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n editTimer\n \n \n \n \n \n \neditTimer(val: string, type: \"mm\" | \"ss\")\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:217\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n val\n \n string\n \n\n \n No\n \n\n\n \n \n type\n \n \"mm\" | \"ss\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { PickerController, Platform } from \"@ionic/angular\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { AudioService } from \"src/app/shared/services/audio/audio.service\";\nimport { AudioPlayer } from \"src/app/shared/services/audio/audio.player\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-timer\",\n templateUrl: \"./timer.component.html\",\n styleUrls: [\"./timer.component.scss\"],\n})\nexport class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n @Input() set row(value: FlowTypes.TemplateRow) {\n this._row = value;\n }\n @Input() template: FlowTypes.Template;\n @ViewChild(\"min\", { static: false }) minInput: ElementRef;\n @ViewChild(\"sec\", { static: false }) secInput: ElementRef;\n state: TimerState;\n leftButtonAction: string;\n leftButtonIcon: string;\n leftButtonName: string;\n rightButtonAction: string;\n rightButtonIcon: string;\n rightButtonName: string;\n isTimerEditable: boolean;\n is_editable_on_playing: boolean;\n timerStarted = false;\n timerDurationExtension: number = 1 * 60;\n help: string | null = null;\n title: string;\n _value: number;\n starting_minutes: number;\n starting_seconds: number;\n minutes: string;\n seconds: string;\n ping: string | null;\n player: AudioPlayer | null;\n timeValues = () => {\n const data = [];\n for (let i = 0; i (this.timerStarted ? this.state.clickLeftButton() : null),\n },\n {\n text: \"Confirm\",\n handler: (value) => {\n const min =\n Object.values(value[\"col-0\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-1\"]).toString().split(\",\")[0].trim();\n const sec =\n Object.values(value[\"col-2\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-3\"]).toString().split(\",\")[0].trim();\n this.state.editTimer(min, \"mm\");\n this.state.editTimer(sec, \"ss\");\n },\n },\n ],\n cssClass: \"picker\",\n })\n .then((e) => e.present());\n }\n }\n\n getColumns(numColumns, columnOptions) {\n let columns = [];\n for (let i = 0; i {\n if (this.timer.value === 0) {\n clearInterval(this.intervalRef);\n this.timer.changeState(new PausedState(this.timer));\n if (this.timer.player) this.timer.player.play();\n return;\n }\n this.timer.value -= 1;\n }, 1000);\n }\n}\n\nclass PausedState extends State {\n constructor(timer: TmplTimerComponent) {\n super(timer);\n this.timer.leftButtonAction = \"play\";\n this.timer.leftButtonIcon = \"play-outline\";\n this.timer.leftButtonName = \"play_timer\";\n this.timer.rightButtonAction = \"refresh\";\n this.timer.rightButtonIcon = \"sync-outline\";\n this.timer.rightButtonName = \"refresh_timer\";\n this.timer.timerStarted = false;\n this.timer.isTimerEditable = true;\n }\n\n clickLeftButton() {\n this.timer.changeState(new PlayingState(this.timer));\n }\n\n clickRightButton() {\n this.timer.value = this.timer.getDurationFromParams();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/PlayingState.html":{"url":"classes/PlayingState.html","title":"class - PlayingState","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n PlayingState\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/timer/timer.component.ts\n \n\n\n\n \n Extends\n \n \n State\n \n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n timer\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n clickLeftButton\n \n \n clickRightButton\n \n \n countDown\n \n \n callOnInit\n \n \n clickTimer\n \n \n editTimer\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(timer: TmplTimerComponent)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:236\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n timer\n \n \n TmplTimerComponent\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n timer\n \n \n \n \n \n \n Type : TmplTimerComponent\n\n \n \n \n \n Inherited from State\n\n \n \n \n \n Defined in State:209\n\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n clickLeftButton\n \n \n \n \n \n \nclickLeftButton()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:251\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickRightButton\n \n \n \n \n \n \nclickRightButton()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:256\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n countDown\n \n \n \n \n \n \ncountDown()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:260\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n callOnInit\n \n \n \n \n \n \ncallOnInit()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:232\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickTimer\n \n \n \n \n \n \nclickTimer()\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:215\n\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n editTimer\n \n \n \n \n \n \neditTimer(val: string, type: \"mm\" | \"ss\")\n \n \n\n\n \n \n Inherited from State\n\n \n \n \n \n Defined in State:217\n\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n val\n \n string\n \n\n \n No\n \n\n\n \n \n type\n \n \"mm\" | \"ss\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { PickerController, Platform } from \"@ionic/angular\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { AudioService } from \"src/app/shared/services/audio/audio.service\";\nimport { AudioPlayer } from \"src/app/shared/services/audio/audio.player\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-timer\",\n templateUrl: \"./timer.component.html\",\n styleUrls: [\"./timer.component.scss\"],\n})\nexport class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n @Input() set row(value: FlowTypes.TemplateRow) {\n this._row = value;\n }\n @Input() template: FlowTypes.Template;\n @ViewChild(\"min\", { static: false }) minInput: ElementRef;\n @ViewChild(\"sec\", { static: false }) secInput: ElementRef;\n state: TimerState;\n leftButtonAction: string;\n leftButtonIcon: string;\n leftButtonName: string;\n rightButtonAction: string;\n rightButtonIcon: string;\n rightButtonName: string;\n isTimerEditable: boolean;\n is_editable_on_playing: boolean;\n timerStarted = false;\n timerDurationExtension: number = 1 * 60;\n help: string | null = null;\n title: string;\n _value: number;\n starting_minutes: number;\n starting_seconds: number;\n minutes: string;\n seconds: string;\n ping: string | null;\n player: AudioPlayer | null;\n timeValues = () => {\n const data = [];\n for (let i = 0; i (this.timerStarted ? this.state.clickLeftButton() : null),\n },\n {\n text: \"Confirm\",\n handler: (value) => {\n const min =\n Object.values(value[\"col-0\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-1\"]).toString().split(\",\")[0].trim();\n const sec =\n Object.values(value[\"col-2\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-3\"]).toString().split(\",\")[0].trim();\n this.state.editTimer(min, \"mm\");\n this.state.editTimer(sec, \"ss\");\n },\n },\n ],\n cssClass: \"picker\",\n })\n .then((e) => e.present());\n }\n }\n\n getColumns(numColumns, columnOptions) {\n let columns = [];\n for (let i = 0; i {\n if (this.timer.value === 0) {\n clearInterval(this.intervalRef);\n this.timer.changeState(new PausedState(this.timer));\n if (this.timer.player) this.timer.player.play();\n return;\n }\n this.timer.value -= 1;\n }, 1000);\n }\n}\n\nclass PausedState extends State {\n constructor(timer: TmplTimerComponent) {\n super(timer);\n this.timer.leftButtonAction = \"play\";\n this.timer.leftButtonIcon = \"play-outline\";\n this.timer.leftButtonName = \"play_timer\";\n this.timer.rightButtonAction = \"refresh\";\n this.timer.rightButtonIcon = \"sync-outline\";\n this.timer.rightButtonName = \"refresh_timer\";\n this.timer.timerStarted = false;\n this.timer.isTimerEditable = true;\n }\n\n clickLeftButton() {\n this.timer.changeState(new PlayingState(this.timer));\n }\n\n clickRightButton() {\n this.timer.value = this.timer.getDurationFromParams();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/RoundIconButtonComponent.html":{"url":"components/RoundIconButtonComponent.html","title":"component - RoundIconButtonComponent","body":"\n \n\n\n\n\n\n Components\n \n RoundIconButtonComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n AfterViewInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-round-button\n \n\n \n styleUrls\n ../button/button.component.scss,./round-icon-button.component.scss\n \n\n\n\n \n templateUrl\n ./round-icon-button.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n buttonAlign\n \n \n disabled\n \n \n icon_src\n \n \n isCustomIcon\n \n \n isHomeScreen\n \n \n style\n \n \n text\n \n \n textAlign\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n onClick\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n template\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(elRef: ElementRef)\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:26\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n elRef\n \n \n ElementRef\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:17\n \n \n \n \n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:18\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:46\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n onClick\n \n \n \n \n \n \nonClick(event: Event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:41\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n event\n \n Event\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n buttonAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n disabled\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n isCustomIcon\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n isHomeScreen\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/round-icon-button/round-icon-button.component.ts:23\n \n \n\n\n \n \n\n\n\n\n\n \n import { AfterViewInit, Component, ElementRef, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from \"../../../../utils\";\n\n@Component({\n selector: \"plh-round-button\",\n templateUrl: \"./round-icon-button.component.html\",\n styleUrls: [\"../button/button.component.scss\", \"./round-icon-button.component.scss\"],\n})\nexport class RoundIconButtonComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, AfterViewInit\n{\n @Input() parent: TemplateContainerComponent;\n @Input() template: FlowTypes.Template;\n icon_src: string;\n text: string;\n style: string;\n disabled: boolean = false;\n textAlign: string;\n buttonAlign: string;\n isHomeScreen: boolean = false;\n isCustomIcon: boolean = false;\n constructor(private elRef: ElementRef) {\n super();\n }\n ngOnInit() {\n this.getParams();\n }\n\n ngAfterViewInit() {\n const el = this.elRef.nativeElement.closest(\".display-group-wrapper\");\n if (el && el.classList.value.includes(\"navigation\")) {\n this.elRef.nativeElement.parentElement.parentElement.style.setProperty(\"flex\", \"0\");\n }\n }\n\n onClick(event: Event) {\n this.triggerActions(\"click\");\n event.stopPropagation();\n }\n\n getParams() {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"information\");\n this.disabled = getBooleanParamFromTemplateRow(this._row, \"disabled\", false);\n if (this._row.disabled) {\n this.disabled = true;\n }\n this.text = getStringParamFromTemplateRow(this._row, \"text\", \"\");\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", \"\");\n this.buttonAlign = getStringParamFromTemplateRow(this._row, \"button_align\", \"center\");\n this.isHomeScreen = this.style.includes(\"home_screen\");\n this.isCustomIcon = this.icon_src.includes(\"/\");\n }\n}\n\n \n\n \n \n \n \n {{ text }}\n \n\n\n \n\n \n \n ../button/button.component.scss\n \n $background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));\n$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));\n\n:host {\n width: 100%;\n ion-button {\n height: 100%;\n }\n span {\n padding: var(--tiny-padding) 0;\n display: contents;\n }\n}\nion-button {\n font-size: var(--buttons-font-size-small);\n font-weight: var(--font-weight-standard);\n color: var(--ion-color-primary-contrast);\n text-transform: none;\n white-space: pre-line;\n min-height: var(--buttons-min-height);\n padding: var(--regular-margin) var(--tiny-padding) 0;\n --border-radius: var(--ion-border-radius-standard);\n --box-shadow: var(--ion-default-box-shadow);\n display: flex;\n width: fit-content;\n margin: 0 auto;\n}\n\nion-button::part(native) {\n height: auto;\n}\n\nion-button:disabled,\nion-button[disabled] {\n filter: brightness(55%);\n}\n\n/// nested_color style applies semi-transparent background to match container\nion-button[data-param-style~=\"nested_color\"] {\n --background: linear-gradient(rgb(0 0 0 / 13%) 0%, rgb(0 0 0 / 20%) 100%);\n}\n\n// nested_color style applies semi-transparent background to match container\nion-button[data-param-style~=\"card\"] {\n --background: white;\n --background-activated: var(--ion-color-gray-light);\n --padding-top: 4px;\n --padding-bottom: 4px;\n color: var(--ion-color-primary);\n font-weight: var(--font-weight-bold);\n border: 1px solid var(--ion-color-gray-light);\n border-radius: var(--ion-border-radius-secondary);\n min-height: var(--buttons-short-height);\n filter: drop-shadow(var(--ion-default-box-shadow));\n\n ion-icon {\n width: 32px;\n font-size: 32px;\n }\n\n .children {\n position: absolute;\n align-self: flex-end;\n right: 0;\n display: flex;\n align-items: center;\n }\n}\n\n/// TODO CC-2021-12-19 - the code below should likely be refactored to param selectors and moved\n\n.navigation {\n --background: #{$background-secondary};\n}\n\n.information {\n --background: #{$background-primary};\n}\n\n.make_me_smile {\n min-height: 80px !important;\n max-width: fit-content;\n --background: #{$background-primary};\n color: var(--ion-color-primary-contrast);\n}\n\n.get_me_going {\n min-height: 80px !important;\n max-width: fit-content;\n --background: #{$background-secondary};\n color: var(--ion-color-primary-contrast);\n}\n\n.options {\n --background: #{$background-primary};\n color: var(--ion-color-primary-contrast);\n}\n\n.standard {\n color: var(--ion-color-primary-contrast);\n}\n.alternative {\n color: var(--ion-color-primary);\n}\n\n.left ::ng-deep {\n margin: 0 auto 0 2px;\n text-align: left;\n p {\n margin: 0 0 0 2px;\n }\n}\n.right {\n margin: 0 2px 0 auto;\n text-align: right;\n}\n\n// width\n.full {\n width: 100%;\n}\n.flexible {\n width: fit-content;\n max-width: 100%;\n}\n// height\n.medium {\n min-height: var(--buttons-medium-height);\n}\n.short {\n min-height: var(--buttons-short-height);\n font-size: var(--buttons-font-size-small);\n}\n.tall {\n min-height: var(--buttons-tall-height);\n}\n\n.medium_round {\n --border-radius: var(--ion-border-radius-secondary);\n}\n.no_shadow {\n --box-shadow: none;\n}\n.two_columns {\n max-width: 12rem;\n min-height: var(--buttons-min-height);\n font-size: calc(var(--buttons-font-size) * var(--scale-factor-btn));\n min-width: 5rem;\n @media (max-width: 375px) {\n max-width: 11rem;\n }\n @media (max-width: 320px) {\n max-width: 10rem;\n }\n}\n\n \n ./round-icon-button.component.scss\n \n @use \"/src/theme/mixins\";\n\n$background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));\n$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));\n$background-option: (--button-background-option, var(--gradient-primary-dark-vertical));\n$background-secondary-light: var(--round-button-background-secondary-light, var(--ion-color-secondary-200));\n$background-secondary-mid: var(--round-button-background-secondary-mid, var(--ion-color-secondary-400));\n$background-secondary-dark: var(--round-button-background-secondary-dark, var(--ion-color-secondary-600));\n\nion-tab-button {\n color: var(--ion-color-primary-contrast);\n text-transform: none;\n white-space: pre-line;\n min-height: var(--round-button-min-height);\n background: $background-primary;\n box-shadow: var(--ion-default-box-shadow);\n width: var(--round-button-width);\n margin: 0 auto;\n padding: 0;\n display: flex;\n align-items: center;\n border-radius: var(--ion-border-radius-rounded);\n ion-icon {\n @include mixins.flex-centered;\n width: 100%;\n margin-bottom: 0;\n flex: auto;\n }\n}\n\nion-tab-button::part(native) {\n height: auto;\n flex: 1;\n}\n\nion-tab-button:disabled,\nion-tab-button[disabled] {\n filter: brightness(55%);\n}\n\nion-tab-button.round-icon-button::part(native) {\n border-radius: var(--ion-border-radius-rounded);\n padding: 0;\n height: 100%;\n}\nion-tab-button {\n div {\n font-size: var(--round-button-font-size);\n white-space: pre-line;\n margin-top: var(--tiny-margin);\n margin-bottom: var(--small-margin);\n display: flex;\n align-items: center;\n text-transform: none;\n }\n}\n.home_screen {\n @include mixins.largest-square;\n @include mixins.absolute-centered;\n padding: var(--tiny-padding);\n @media (max-width: 375px) {\n width: var(--round-button-small-device-width);\n height: var(--round-button-small-device-height);\n }\n ion-icon {\n width: 75%;\n }\n div {\n margin-top: unset;\n margin-bottom: var(--tiny-margin);\n display: block;\n font-size: var(--round-button-home-screen-font-size);\n }\n}\n.wrapper {\n display: flex;\n width: fit-content;\n}\n.home_screen_wrapper {\n width: var(--round-button-wrapper-width);\n height: var(--round-button-wrapper-height);\n border-radius: var(--ion-border-radius-rounded);\n background: var(--ion-background-color);\n position: relative;\n margin-left: auto;\n margin-right: -13px;\n @media (max-width: 375px) {\n width: var(--round-button-wrapper-small-device-width);\n height: var(--round-button-wrapper-small-device-height);\n }\n}\n.yellow {\n background: $background-secondary-light;\n}\n.orange {\n background: $background-secondary-mid;\n}\n.dark_orange {\n background: $background-secondary-dark;\n}\n\n.navigation {\n width: var(--round-button-navigation-width);\n min-height: var(--round-button-navigation-min-height);\n background: $background-secondary;\n}\n\n.information {\n background: $background-primary;\n}\n\n.make_me_smile {\n background: $background-primary;\n color: var(--ion-color-primary-contrast);\n}\n\n.get_me_going {\n background: $background-secondary;\n color: var(--ion-color-primary-contrast);\n}\n\n.options {\n background: $background-option;\n color: var(--ion-color-primary-contrast);\n}\n\n.standard {\n color: var(--ion-color-primary-contrast);\n}\n.alternative {\n color: var(--ion-color-primary);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'RoundIconButtonComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/SelectTextComponent.html":{"url":"components/SelectTextComponent.html","title":"component - SelectTextComponent","body":"\n \n\n\n\n\n\n Components\n \n SelectTextComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/select-text/select-text.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n ITemplateRowProps\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-select-text\n \n\n \n styleUrls\n ./select-text.component.scss\n \n\n\n\n \n templateUrl\n ./select-text.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n isNumberInput\n \n \n Public\n maxLength\n \n \n Public\n placeholder\n \n \n Public\n prioritisePlaceholder\n \n \n Public\n source\n \n \n Public\n style\n \n \n Public\n subscribe\n \n \n Public\n textAlign\n \n \n Public\n toggle\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n checkClipboard\n \n \n getParams\n \n \n Async\n triggerCopyContent\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n checkClipboard\n \n \n \n \n \n \n \n checkClipboard()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:62\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:38\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Async\n triggerCopyContent\n \n \n \n \n \n \n \n triggerCopyContent($event: MouseEvent, _row: FlowTypes.TemplateRow)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:51\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n $event\n \n MouseEvent\n \n\n \n No\n \n\n\n \n \n _row\n \n FlowTypes.TemplateRow\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n isNumberInput\n \n \n \n \n \n \n Type : boolean | any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n maxLength\n \n \n \n \n \n \n Type : number | string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n placeholder\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n prioritisePlaceholder\n \n \n \n \n \n \n Type : boolean | any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n source\n \n \n \n \n \n \n Default value : timer(1000)\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n style\n \n \n \n \n \n \n Type : string | any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n subscribe\n \n \n \n \n \n \n Type : Subscription\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n textAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:23\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n toggle\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/select-text/select-text.component.ts:27\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { Clipboard } from \"@capacitor/clipboard\";\nimport { Subscription, timer } from \"rxjs\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\n\n@Component({\n selector: \"plh-select-text\",\n templateUrl: \"./select-text.component.html\",\n styleUrls: [\"./select-text.component.scss\"],\n})\nexport class SelectTextComponent\n extends TemplateBaseComponent\n implements OnInit, ITemplateRowProps\n{\n public placeholder: string;\n public maxLength: number | string;\n public textAlign: string;\n public style: string | any;\n public isNumberInput: boolean | any;\n public prioritisePlaceholder: boolean | any;\n public toggle: boolean = false;\n\n //emit after 1 second\n public source = timer(1000);\n //output: 0\n public subscribe: Subscription;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.placeholder = getStringParamFromTemplateRow(this._row, \"placeholder\", \"\");\n this.maxLength = getNumberParamFromTemplateRow(this._row, \"max_length\", 30);\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", \"center\");\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n this.isNumberInput = getBooleanParamFromTemplateRow(this._row, \"number_input\", false);\n this.prioritisePlaceholder = getBooleanParamFromTemplateRow(\n this._row,\n \"prioritise_placeholder\",\n false\n );\n }\n\n async triggerCopyContent($event: MouseEvent, _row: FlowTypes.TemplateRow) {\n this.toggle = !this.toggle;\n\n this.subscribe = this.source.subscribe((val) => {\n this.toggle = !this.toggle;\n });\n\n let text = _row.value;\n await Clipboard.write({ string: text });\n }\n\n async checkClipboard() {\n const { type, value } = await Clipboard.read();\n console.log(`Got ${type} from clipboard: ${value}`);\n }\n}\n\n \n\n \n \n {{ _row?.value }}\n \n \n {{\n _row.parameter_list.copy_text\n }}\n {{ _row.parameter_list.copied_text }}\n \n\n \n \n \n \n\n \n {{ _row?.parameter_list.copied_text }}\n \n \n\n \n \n {{ _row.parameter_list?.copy_text }}\n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n\n\n \n\n \n \n ./select-text.component.scss\n \n @use \"/src/theme/mixins\";\n\n.box-wrapper {\n @include mixins.flex-centered;\n flex-direction: column;\n margin-left: auto;\n margin-right: auto;\n padding: var(--regular-padding);\n width: 100%;\n min-height: var(--dashed-box-item-min-height);\n padding: var(--regular-padding) var(--largest-padding);\n border: 2px dashed var(--ion-color-primary);\n background-color: var(--ion-color-primary-contrast);\n border-radius: var(--ion-border-radius-secondary);\n position: relative;\n cursor: pointer;\n color: var(--ion-color-primary);\n\n &[data-toggled=\"true\"] {\n background-color: var(--ion-color-primary-200);\n border-color: var(--ion-color-primary-shade);\n }\n\n .text {\n width: 100%;\n text-align: center;\n font-size: var(--font-size-text-large);\n line-height: var(--line-height-text-largest);\n }\n .copy-button {\n margin-top: 1rem;\n }\n}\n\n.image-based-icon {\n width: 100%;\n max-width: 16px;\n height: auto;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ _row?.value }} {{ _row.parameter_list.copy_text }} {{ _row.parameter_list.copied_text }} {{ _row?.parameter_list.copied_text }} {{ _row.parameter_list?.copy_text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'SelectTextComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/SquareIconButtonComponent.html":{"url":"components/SquareIconButtonComponent.html","title":"component - SquareIconButtonComponent","body":"\n \n\n\n\n\n\n Components\n \n SquareIconButtonComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n AfterViewInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-square-icon-button\n \n\n \n styleUrls\n ./square-icon-button.component.scss\n \n\n\n\n \n templateUrl\n ./square-icon-button.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n disabled\n \n \n icon_src\n \n \n isCustomIcon\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n onClick\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(elRef: ElementRef)\n \n \n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:21\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n elRef\n \n \n ElementRef\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:43\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n onClick\n \n \n \n \n \n \nonClick(event: Event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:38\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n event\n \n Event\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n disabled\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n isCustomIcon\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/square-icon-button/square-icon-button.component.ts:19\n \n \n\n\n \n \n\n\n\n\n\n \n import { AfterViewInit, Component, ElementRef, OnInit } from \"@angular/core\";\nimport {\n getStringParamFromTemplateRow,\n getBooleanParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-square-icon-button\",\n templateUrl: \"./square-icon-button.component.html\",\n styleUrls: [\"./square-icon-button.component.scss\"],\n})\nexport class SquareIconButtonComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, AfterViewInit\n{\n icon_src: string;\n style: string;\n disabled: boolean = false;\n isCustomIcon: boolean = false;\n\n constructor(private elRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n ngAfterViewInit() {\n const el = this.elRef.nativeElement.closest(\".display-group-wrapper\");\n if (el && el.classList.value.includes(\"navigation\")) {\n this.elRef.nativeElement.parentElement.parentElement.style.setProperty(\"flex\", \"0\");\n }\n }\n\n onClick(event: Event) {\n this.triggerActions(\"click\");\n event.stopPropagation();\n }\n\n getParams() {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"information\");\n this.disabled = getBooleanParamFromTemplateRow(this._row, \"disabled\", false);\n if (this._row.disabled) {\n this.disabled = true;\n }\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", \"\");\n this.isCustomIcon = this.icon_src.includes(\"/\");\n }\n}\n\n \n\n \n \n \n \n \n\n\n \n\n \n \n ./square-icon-button.component.scss\n \n @use \"/src/theme/mixins\";\n\n$background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));\n$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));\n\n.wrapper {\n width: var(--square-button-min-width);\n overflow: hidden;\n border-radius: var(--ion-border-radius-standard);\n display: flex;\n justify-content: center;\n margin-right: var(--tiny-margin);\n}\nion-button {\n margin: 0 auto;\n padding-right: var(--tiny-padding);\n ion-icon {\n font-size: xxx-large;\n }\n}\n\nion-button::part(native) {\n background: transparent;\n}\n\nion-button:disabled,\nion-button[disabled] {\n filter: brightness(55%);\n}\n\n.navigation {\n min-height: var(--square-button-navigation-min-height);\n background: $background-secondary;\n}\n\n.information {\n background: $background-primary;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'SquareIconButtonComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/State.html":{"url":"classes/State.html","title":"class - State","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n State\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/timer/timer.component.ts\n \n\n\n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n timer\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n callOnInit\n \n \n clickLeftButton\n \n \n clickRightButton\n \n \n clickTimer\n \n \n editTimer\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(timer: TmplTimerComponent)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:208\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n timer\n \n \n TmplTimerComponent\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n timer\n \n \n \n \n \n \n Type : TmplTimerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:209\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n callOnInit\n \n \n \n \n \n \ncallOnInit()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:232\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickLeftButton\n \n \n \n \n \n \nclickLeftButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:211\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickRightButton\n \n \n \n \n \n \nclickRightButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:213\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickTimer\n \n \n \n \n \n \nclickTimer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:215\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n editTimer\n \n \n \n \n \n \neditTimer(val: string, type: \"mm\" | \"ss\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:217\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n val\n \n string\n \n\n \n No\n \n\n\n \n \n type\n \n \"mm\" | \"ss\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n\n\n \n import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { PickerController, Platform } from \"@ionic/angular\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { AudioService } from \"src/app/shared/services/audio/audio.service\";\nimport { AudioPlayer } from \"src/app/shared/services/audio/audio.player\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-timer\",\n templateUrl: \"./timer.component.html\",\n styleUrls: [\"./timer.component.scss\"],\n})\nexport class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n @Input() set row(value: FlowTypes.TemplateRow) {\n this._row = value;\n }\n @Input() template: FlowTypes.Template;\n @ViewChild(\"min\", { static: false }) minInput: ElementRef;\n @ViewChild(\"sec\", { static: false }) secInput: ElementRef;\n state: TimerState;\n leftButtonAction: string;\n leftButtonIcon: string;\n leftButtonName: string;\n rightButtonAction: string;\n rightButtonIcon: string;\n rightButtonName: string;\n isTimerEditable: boolean;\n is_editable_on_playing: boolean;\n timerStarted = false;\n timerDurationExtension: number = 1 * 60;\n help: string | null = null;\n title: string;\n _value: number;\n starting_minutes: number;\n starting_seconds: number;\n minutes: string;\n seconds: string;\n ping: string | null;\n player: AudioPlayer | null;\n timeValues = () => {\n const data = [];\n for (let i = 0; i (this.timerStarted ? this.state.clickLeftButton() : null),\n },\n {\n text: \"Confirm\",\n handler: (value) => {\n const min =\n Object.values(value[\"col-0\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-1\"]).toString().split(\",\")[0].trim();\n const sec =\n Object.values(value[\"col-2\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-3\"]).toString().split(\",\")[0].trim();\n this.state.editTimer(min, \"mm\");\n this.state.editTimer(sec, \"ss\");\n },\n },\n ],\n cssClass: \"picker\",\n })\n .then((e) => e.present());\n }\n }\n\n getColumns(numColumns, columnOptions) {\n let columns = [];\n for (let i = 0; i {\n if (this.timer.value === 0) {\n clearInterval(this.intervalRef);\n this.timer.changeState(new PausedState(this.timer));\n if (this.timer.player) this.timer.player.play();\n return;\n }\n this.timer.value -= 1;\n }, 1000);\n }\n}\n\nclass PausedState extends State {\n constructor(timer: TmplTimerComponent) {\n super(timer);\n this.timer.leftButtonAction = \"play\";\n this.timer.leftButtonIcon = \"play-outline\";\n this.timer.leftButtonName = \"play_timer\";\n this.timer.rightButtonAction = \"refresh\";\n this.timer.rightButtonIcon = \"sync-outline\";\n this.timer.rightButtonName = \"refresh_timer\";\n this.timer.timerStarted = false;\n this.timer.isTimerEditable = true;\n }\n\n clickLeftButton() {\n this.timer.changeState(new PlayingState(this.timer));\n }\n\n clickRightButton() {\n this.timer.value = this.timer.getDurationFromParams();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemplateBaseComponent.html":{"url":"components/TemplateBaseComponent.html","title":"component - TemplateBaseComponent","body":"\n \n\n\n\n\n\n Components\n \n TemplateBaseComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/base.ts\n\n\n\n\n\n \n Implements\n \n \n ITemplateRowProps\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n styleUrls\n ./tmpl-components-common.scss\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/base.ts:34\n \n \n\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { FlowTypes, ITemplateRowProps } from \"../models\";\nimport { TemplateContainerComponent } from \"../template-container.component\";\n\n@Component({\n template: ``,\n styleUrls: [\"./tmpl-components-common.scss\"],\n})\n/**\n * Common methods and data made available to all other components\n * By default it provides input setters, and mapping to local variables\n *\n * Other components can either extend this one, or implement ITemplateRowProps\n * in their own way.\n * Note, if extending the base component access to data is provided by the declared properties,\n * e.g. `_row`\n */\nexport class TemplateBaseComponent implements ITemplateRowProps {\n /** @ignore */\n _row: FlowTypes.TemplateRow;\n\n /**\n * @ignore\n * specific data used in component rendering\n **/\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n }\n\n /**\n * @ignore\n * reference to parent template container - does not have setter as should remain static\n **/\n @Input() parent: TemplateContainerComponent;\n constructor() {}\n\n /**\n * Whenever actions are triggered handle in the parent template component\n * Actions are grouped by trigger, only emitting specific event handler (e.g. click)\n * @ignore\n */\n triggerActions(trigger: FlowTypes.TemplateRowAction[\"trigger\"] = \"click\") {\n if (this._row.disabled && this._row.type !== \"accordion_section\") {\n console.log(\"Click action disabled for \", this._row.name);\n return;\n }\n const action_list = this._row.action_list || [];\n const actionsForTrigger = action_list.filter((a) => a.trigger === trigger);\n return this.parent.handleActions(actionsForTrigger, this._row);\n }\n\n /**\n * Update the current value of the row by setting a local variable that matches\n * @ignore\n **/\n setValue(value: any) {\n // console.log(\"setting value\", value);\n const action: FlowTypes.TemplateRowAction = {\n action_id: \"set_local\",\n args: [this._row._nested_name, value],\n trigger: \"click\",\n };\n return this.parent.handleActions([action], this._row);\n }\n\n /** @ignore */\n trackByRow = (index: number, row: FlowTypes.TemplateRow) => this.parent.trackByRow(index, row);\n}\n\n \n\n\n \n \n ./tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemplateBaseComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemplateDebuggerComponent.html":{"url":"components/TemplateDebuggerComponent.html","title":"component - TemplateDebuggerComponent","body":"\n \n\n\n\n\n\n Components\n \n TemplateDebuggerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/debugger.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-template-debugger\n \n\n\n \n styles\n \n :host {\n width: 100%;\n }\n .debug-container {\n padding: 5px;\n background: rgba(255, 255, 255, 0.95);\n font-size: small;\n overflow: auto;\n }\n .debug-container > p {\n text-align: left;\n display: flex;\n align-items: center;\n width: 100%;\n text-align: center;\n }\n .debug-container[data-hidden=\"true\"] > summary {\n background: #e2dcf0;\n padding: 5px;\n margin: -5px;\n }\n .debug-row-type {\n }\n .debug-row-name {\n margin-left: auto;\n }\n .debug-row-hidden {\n margin-left: 8px;\n }\n table {\n padding: 2px;\n border-collapse: collapse;\n margin-top: 8px;\n }\n td {\n padding: 2px;\n border: 1px solid rgba(0, 0, 0, 0.5);\n }\n \n \n\n \n template\n \n \n {{ _row.type }}\n {{ _row._debug_name || _row.name || \"(no name)\" }}\n \n \n\n\n \n \n \n \n \n \n \n {{ key }}\n {{ _row[key] | json }}\n \n \n \n \n (log full details)\n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n debugFieldExclusions\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n handleSummaryClick\n \n \n Public\n logDebugInfo\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateFieldService: TemplateFieldService)\n \n \n \n \n Defined in src/app/shared/components/template/components/debugger.ts:80\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateFieldService\n \n \n TemplateFieldService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n handleSummaryClick\n \n \n \n \n \n \n \n handleSummaryClick(e: Event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/debugger.ts:101\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n e\n \n Event\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n logDebugInfo\n \n \n \n \n \n \n \n logDebugInfo()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/debugger.ts:85\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n debugFieldExclusions\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : [\"comments\", \"rows\", \"_dynamicFields\", \"action_list\"]\n \n \n \n \n Defined in src/app/shared/components/template/components/debugger.ts:84\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component } from \"@angular/core\";\nimport { TemplateFieldService } from \"../services/template-field.service\";\nimport { TemplateBaseComponent } from \"./base\";\n\n@Component({\n selector: \"plh-template-debugger\",\n template: `\n \n \n {{ _row.type }}\n {{ _row._debug_name || _row.name || \"(no name)\" }}\n \n \n \n \n \n \n \n \n \n \n \n {{ key }}\n {{ _row[key] | json }}\n \n \n \n \n (log full details)\n \n \n \n \n `,\n styles: [\n `\n :host {\n width: 100%;\n }\n .debug-container {\n padding: 5px;\n background: rgba(255, 255, 255, 0.95);\n font-size: small;\n overflow: auto;\n }\n .debug-container > p {\n text-align: left;\n display: flex;\n align-items: center;\n width: 100%;\n text-align: center;\n }\n .debug-container[data-hidden=\"true\"] > summary {\n background: #e2dcf0;\n padding: 5px;\n margin: -5px;\n }\n .debug-row-type {\n }\n .debug-row-name {\n margin-left: auto;\n }\n .debug-row-hidden {\n margin-left: 8px;\n }\n table {\n padding: 2px;\n border-collapse: collapse;\n margin-top: 8px;\n }\n td {\n padding: 2px;\n border: 1px solid rgba(0, 0, 0, 0.5);\n }\n `,\n ],\n})\nexport class TemplateDebuggerComponent extends TemplateBaseComponent {\n constructor(private templateFieldService: TemplateFieldService) {\n super();\n }\n public debugFieldExclusions = [\"comments\", \"rows\", \"_dynamicFields\", \"action_list\"];\n public logDebugInfo() {\n // retrieve local storage keys in the same way they would be populated in a template\n const fields = {};\n Object.keys(localStorage).forEach(\n (key) =>\n (fields[key] = this.templateFieldService.getField(key.replace(\"rp-contact-field.\", \"\")))\n );\n console.group(this._row.type, this._row.name);\n console.log(\"row\", this._row);\n console.log(\"parent rows\", this.parent.templateRowMap);\n console.log(\"fields\", fields);\n console.log(\"globals\", this.templateFieldService.globals);\n console.log(\"parent\", this.parent);\n console.log(\"children\", this._row.rows);\n console.groupEnd();\n }\n public handleSummaryClick(e: Event) {\n e.stopPropagation();\n }\n}\n\n \n\n\n \n \n :host {\n width: 100%;\n }\n .debug-container {\n padding: 5px;\n background: rgba(255, 255, 255, 0.95);\n font-size: small;\n overflow: auto;\n }\n .debug-container > p {\n text-align: left;\n display: flex;\n align-items: center;\n width: 100%;\n text-align: center;\n }\n .debug-container[data-hidden=\"true\"] > summary {\n background: #e2dcf0;\n padding: 5px;\n margin: -5px;\n }\n .debug-row-type {\n }\n .debug-row-name {\n margin-left: auto;\n }\n .debug-row-hidden {\n margin-left: 8px;\n }\n table {\n padding: 2px;\n border-collapse: collapse;\n margin-top: 8px;\n }\n td {\n padding: 2px;\n border: 1px solid rgba(0, 0, 0, 0.5);\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ _row.type }} {{ _row._debug_name || _row.name || \"(no name)\" }} {{ key }} {{ _row[key] | json }} (log full details) '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemplateDebuggerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemplateHTMLComponent.html":{"url":"components/TemplateHTMLComponent.html","title":"component - TemplateHTMLComponent","body":"\n \n\n\n\n\n\n Components\n \n TemplateHTMLComponent\n\n\n\n \n Info\n \n \n Source\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/html/html.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n template-html-component\n \n\n\n\n \n template\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n html\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(domSanitizer: DomSanitizer)\n \n \n \n \n Defined in src/app/shared/components/template/components/html/html.component.ts:11\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n domSanitizer\n \n \n DomSanitizer\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n html\n \n \n \n \n \n \n Type : SafeHtml\n\n \n \n \n \n Defined in src/app/shared/components/template/components/html/html.component.ts:11\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\nimport { TemplateBaseComponent } from \"src/app/shared/components/template/components/base\";\n\n@Component({\n selector: \"template-html-component\",\n template: ``,\n})\n/** Render raw html */\nexport class TemplateHTMLComponent extends TemplateBaseComponent implements OnInit {\n html: SafeHtml;\n\n constructor(private domSanitizer: DomSanitizer) {\n super();\n }\n\n ngOnInit() {\n this.html = this.domSanitizer.bypassSecurityTrustHtml(this._row.value);\n }\n}\n\n \n\n\n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemplateHTMLComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemplateLayoutComponent.html":{"url":"components/TemplateLayoutComponent.html","title":"component - TemplateLayoutComponent","body":"\n \n\n\n\n\n\n Components\n \n TemplateLayoutComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/layout.ts\n\n\n\n\n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n styleUrls\n ../tmpl-components-common.scss\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n _row\n \n \n Public\n trackByRow\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n interceptTemplateContainerAction\n \n \n Public\n modifyRowSetter\n \n \n Public\n scrollToTop\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n row\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:37\n \n \n\n \n \n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:37\n \n \n \n \n reference to parent template container - does not have setter as should remain static\n\n \n \n \n \n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:28\n \n \n \n \n specific data used in component rendering\n\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n interceptTemplateContainerAction\n \n \n \n \n \n \n \n interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:76\n \n \n\n\n \n \n Add any additional methods or function calls to actions that would otherwise be handled by\nthe template container.\nbe processed by the template container parent (as it is used as a filter)\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n action\n \n FlowTypes.TemplateRowAction\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : boolean\n\n \n \n true or false to specify if the action should continue to also\nbe processed by the template container parent (as it is used as a filter)\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n modifyRowSetter\n \n \n \n \n \n \n \n modifyRowSetter(row: FlowTypes.TemplateRow)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:66\n \n \n\n\n \n \n Apply any changes here to be applied the row @Input() set operation\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n FlowTypes.TemplateRow\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : FlowTypes.TemplateRow\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Public\n scrollToTop\n \n \n \n \n \n \n \n scrollToTop()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:49\n \n \n\n\n \n \n As content can be nested within containers or pages, a general\nmethod that scrolls everything scrollable (all parent containers and page content)\nto the top\n\n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n _row\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n trackByRow\n \n \n \n \n \n \n Default value : () => {...}\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:80\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(row: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/layout.ts:28\n \n \n \n \n specific data used in component rendering\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\n\n@Component({\n template: ``,\n styleUrls: [\"../tmpl-components-common.scss\"],\n})\n/**\n * Layout components such as a display_group, nav_group or animated section add a layer between\n * the template container and rendered child rows.\n *\n * Actions are still dispatched to the parent if rendered with reference to the parent container,\n * which may or may not be desired behaviour. E.g. a display_group which is simply showing buttons\n * in a flex-box will want the parent container to handle the button click actions, whereas a\n * nav_group may want to intercept the action to perform actions like changing slides.\n *\n * Action interceptors can be used to handle which actions propogate to the parent container or not\n *\n * @example template (rendering child rows with reference to this parent container)\n * ```\n * \n * ```\n */\nexport class TemplateLayoutComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n /** specific data used in component rendering */\n @Input() set row(row: FlowTypes.TemplateRow) {\n row.rows = (row.rows || []).map((r) => {\n // r.action_list = this.addRowDefaultActions(r.action_list);\n return r;\n });\n row = this.modifyRowSetter(row);\n this._row = row;\n }\n /** reference to parent template container - does not have setter as should remain static */\n @Input() parent: TemplateContainerComponent;\n constructor() {}\n\n ngOnInit() {\n this.addParentActionsFilter();\n }\n\n /**\n * As content can be nested within containers or pages, a general\n * method that scrolls everything scrollable (all parent containers and page content)\n * to the top\n */\n public scrollToTop() {\n let parent = this.parent;\n while (parent) {\n if (parent.elRef) {\n parent.elRef.nativeElement.scrollTop = 0;\n }\n parent = parent.parent;\n }\n const ionContentContainers = document.querySelectorAll(\"ion-content\") || [];\n ionContentContainers.forEach((el) => {\n el.shadowRoot.querySelector(\".inner-scroll\").scrollTop = 0;\n });\n }\n\n /**\n * Apply any changes here to be applied the row @Input() set operation\n */\n public modifyRowSetter(row: FlowTypes.TemplateRow) {\n return row;\n }\n\n /**\n * Add any additional methods or function calls to actions that would otherwise be handled by\n * the template container.\n * @returns `true` or `false` to specify if the action should continue to also\n * be processed by the template container parent (as it is used as a filter)\n */\n public interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) {\n return true;\n }\n\n public trackByRow = (index: number, row: FlowTypes.TemplateRow) =>\n this.parent.trackByRow(index, row);\n\n private addParentActionsFilter() {\n this.parent.templateActionService.handleActionsInterceptor = async (actions) => {\n return actions.filter((action) => {\n const shouldHandleByParent = this.interceptTemplateContainerAction(action);\n // continue to process on parent unless specific return says not to\n return shouldHandleByParent !== false;\n });\n };\n }\n}\n\n \n\n\n \n \n ../tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemplateLayoutComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TemplatePopupComponent.html":{"url":"components/TemplatePopupComponent.html","title":"component - TemplatePopupComponent","body":"\n \n\n\n\n\n\n Components\n \n TemplatePopupComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/popup.ts\n\n\n\n\n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n styles\n \n .popup-backdrop {\n height: 100vh;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .popup-backdrop[data-fullscreen] {\n background: white;\n }\n .popup-container {\n position: relative;\n width: var(--content-max-width);\n padding: 0 2rem;\n margin: auto;\n }\n\n .popup-content {\n margin: 30px auto;\n max-height: calc(100vh - 60px);\n background: white;\n border-radius: 20px;\n padding: 20px;\n overflow: auto;\n }\n .popup-content[data-fullscreen] {\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n margin: 0;\n }\n .popup-content::-webkit-scrollbar {\n display: none;\n }\n .close-button {\n position: absolute;\n top: 16px;\n right: 22px;\n background: white;\n width: 40px;\n height: 40px;\n border-radius: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--ion-color-primary);\n font-size: 24px;\n z-index: 1;\n box-shadow: var(--ion-default-box-shadow);\n color: var(--ion-color-primary);\n }\n \n \n\n \n template\n \n \n \n \n \n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n\n \n \n Methods\n \n \n \n \n \n \n dismiss\n \n \n dismissOnBackdrop\n \n \n handleEmittedValue\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n props\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(modalCtrl: ModalController)\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/popup.ts:94\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n modalCtrl\n \n \n ModalController\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n props\n \n \n \n \n Type : ITemplatePopupComponentProps\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/popup.ts:94\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n dismiss\n \n \n \n \n \n \ndismiss(value?: literal type)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/popup.ts:118\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n literal type\n \n\n \n Yes\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n dismissOnBackdrop\n \n \n \n \n \n \ndismissOnBackdrop(e: MouseEvent)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/popup.ts:111\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n e\n \n MouseEvent\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n handleEmittedValue\n \n \n \n \n \n \nhandleEmittedValue(value: literal type)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/popup.ts:102\n \n \n\n\n \n \n When templates emit completed/uncompleted value from standalone popup close the popup\nNOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n literal type\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n\n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { ModalController } from \"@ionic/angular\";\nimport { FlowTypes, ITemplateContainerProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\n\n@Component({\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n styles: [\n `\n .popup-backdrop {\n height: 100vh;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .popup-backdrop[data-fullscreen] {\n background: white;\n }\n .popup-container {\n position: relative;\n width: var(--content-max-width);\n padding: 0 2rem;\n margin: auto;\n }\n\n .popup-content {\n margin: 30px auto;\n max-height: calc(100vh - 60px);\n background: white;\n border-radius: 20px;\n padding: 20px;\n overflow: auto;\n }\n .popup-content[data-fullscreen] {\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n margin: 0;\n }\n .popup-content::-webkit-scrollbar {\n display: none;\n }\n .close-button {\n position: absolute;\n top: 16px;\n right: 22px;\n background: white;\n width: 40px;\n height: 40px;\n border-radius: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--ion-color-primary);\n font-size: 24px;\n z-index: 1;\n box-shadow: var(--ion-default-box-shadow);\n color: var(--ion-color-primary);\n }\n `,\n ],\n})\n/**\n * When opening a template as a popup, provide a minimal interface and load\n * the template directly as a regular template-container element\n */\nexport class TemplatePopupComponent {\n @Input() props: ITemplatePopupComponentProps;\n\n constructor(private modalCtrl: ModalController) {}\n\n /**\n * When templates emit completed/uncompleted value from standalone popup close the popup\n * NOTE - we do not want to respond to non-standalone templates as this is done through template nav-actions\n * */\n handleEmittedValue(value: { emit_value: string; emit_data: any }) {\n const { emit_value } = value;\n if (this.props.dismissOnEmit) {\n if ([\"completed\", \"uncompleted\"].includes(emit_value)) {\n this.dismiss(value);\n }\n }\n }\n\n dismissOnBackdrop(e: MouseEvent) {\n const el = e.target as HTMLElement;\n if (el.classList.contains(\"popup-backdrop\")) {\n this.dismiss();\n }\n }\n\n dismiss(value?: { emit_value: string; emit_data: any }) {\n this.modalCtrl.dismiss(value);\n }\n}\n\nexport interface ITemplatePopupComponentProps extends ITemplateContainerProps {\n name: string;\n templatename: string;\n parent?: TemplateContainerComponent;\n row?: FlowTypes.TemplateRow;\n showCloseButton?: boolean;\n /** Dismiss popup when completed or uncompleted is emitted from child template */\n dismissOnEmit?: boolean;\n /** Wait for template to be self-dismissed before returning (default: True) */\n waitForDismiss?: boolean;\n /** Display fullscreen overlayed on top of all other app content */\n fullscreen?: boolean;\n}\n\n \n\n\n \n \n .popup-backdrop {\n height: 100vh;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n .popup-backdrop[data-fullscreen] {\n background: white;\n }\n .popup-container {\n position: relative;\n width: var(--content-max-width);\n padding: 0 2rem;\n margin: auto;\n }\n\n .popup-content {\n margin: 30px auto;\n max-height: calc(100vh - 60px);\n background: white;\n border-radius: 20px;\n padding: 20px;\n overflow: auto;\n }\n .popup-content[data-fullscreen] {\n width: 100%;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n margin: 0;\n }\n .popup-content::-webkit-scrollbar {\n display: none;\n }\n .close-button {\n position: absolute;\n top: 16px;\n right: 22px;\n background: white;\n width: 40px;\n height: 40px;\n border-radius: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--ion-color-primary);\n font-size: 24px;\n z-index: 1;\n box-shadow: var(--ion-default-box-shadow);\n color: var(--ion-color-primary);\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TemplatePopupComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"interfaces/TimerState.html":{"url":"interfaces/TimerState.html","title":"interface - TimerState","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Interfaces\n \n TimerState\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/timer/timer.component.ts\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n \n timer\n \n \n \n \n \n \n \n Methods\n \n \n \n \n \n \n \n callOnInit\n \n \n \n \n clickLeftButton\n \n \n \n \n clickRightButton\n \n \n \n \n editTimer\n \n \n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n callOnInit\n \n \n \n \n \n \ncallOnInit()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:205\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickLeftButton\n \n \n \n \n \n \nclickLeftButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:199\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickRightButton\n \n \n \n \n \n \nclickRightButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:201\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n editTimer\n \n \n \n \n \n \neditTimer(val: string, type: \"mm\" | \"ss\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:203\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n val\n \n string\n \n\n \n No\n \n\n\n \n \n type\n \n \"mm\" | \"ss\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n\n \n Properties\n \n \n \n \n \n timer\n \n \n \n \n \n \n \n \n timer: TmplTimerComponent\n\n \n \n\n\n \n \n Type : TmplTimerComponent\n\n \n \n\n\n\n\n\n \n \n \n \n\n\n \n import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { PickerController, Platform } from \"@ionic/angular\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { AudioService } from \"src/app/shared/services/audio/audio.service\";\nimport { AudioPlayer } from \"src/app/shared/services/audio/audio.player\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-timer\",\n templateUrl: \"./timer.component.html\",\n styleUrls: [\"./timer.component.scss\"],\n})\nexport class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n @Input() set row(value: FlowTypes.TemplateRow) {\n this._row = value;\n }\n @Input() template: FlowTypes.Template;\n @ViewChild(\"min\", { static: false }) minInput: ElementRef;\n @ViewChild(\"sec\", { static: false }) secInput: ElementRef;\n state: TimerState;\n leftButtonAction: string;\n leftButtonIcon: string;\n leftButtonName: string;\n rightButtonAction: string;\n rightButtonIcon: string;\n rightButtonName: string;\n isTimerEditable: boolean;\n is_editable_on_playing: boolean;\n timerStarted = false;\n timerDurationExtension: number = 1 * 60;\n help: string | null = null;\n title: string;\n _value: number;\n starting_minutes: number;\n starting_seconds: number;\n minutes: string;\n seconds: string;\n ping: string | null;\n player: AudioPlayer | null;\n timeValues = () => {\n const data = [];\n for (let i = 0; i (this.timerStarted ? this.state.clickLeftButton() : null),\n },\n {\n text: \"Confirm\",\n handler: (value) => {\n const min =\n Object.values(value[\"col-0\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-1\"]).toString().split(\",\")[0].trim();\n const sec =\n Object.values(value[\"col-2\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-3\"]).toString().split(\",\")[0].trim();\n this.state.editTimer(min, \"mm\");\n this.state.editTimer(sec, \"ss\");\n },\n },\n ],\n cssClass: \"picker\",\n })\n .then((e) => e.present());\n }\n }\n\n getColumns(numColumns, columnOptions) {\n let columns = [];\n for (let i = 0; i {\n if (this.timer.value === 0) {\n clearInterval(this.intervalRef);\n this.timer.changeState(new PausedState(this.timer));\n if (this.timer.player) this.timer.player.play();\n return;\n }\n this.timer.value -= 1;\n }, 1000);\n }\n}\n\nclass PausedState extends State {\n constructor(timer: TmplTimerComponent) {\n super(timer);\n this.timer.leftButtonAction = \"play\";\n this.timer.leftButtonIcon = \"play-outline\";\n this.timer.leftButtonName = \"play_timer\";\n this.timer.rightButtonAction = \"refresh\";\n this.timer.rightButtonIcon = \"sync-outline\";\n this.timer.rightButtonName = \"refresh_timer\";\n this.timer.timerStarted = false;\n this.timer.isTimerEditable = true;\n }\n\n clickLeftButton() {\n this.timer.changeState(new PlayingState(this.timer));\n }\n\n clickRightButton() {\n this.timer.value = this.timer.getDurationFromParams();\n }\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplAccordionComponent.html":{"url":"components/TmplAccordionComponent.html","title":"component - TmplAccordionComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplAccordionComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/accordion/accordion.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-accordion-component\n \n\n \n styleUrls\n ./accordion.component.scss\n \n\n\n\n \n templateUrl\n accordion.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n openSections\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n openSections\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/accordion/accordion.component.ts:10\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-accordion-component\",\n templateUrl: \"accordion.component.html\",\n styleUrls: [\"./accordion.component.scss\"],\n})\nexport class TmplAccordionComponent extends TemplateBaseComponent implements OnInit {\n public openSections = [];\n ngOnInit() {\n // Initial list of section with state === 'open' must be calculated to provider open value\n this.openSections = this._row.rows\n .filter((childRow) => childRow.parameter_list?.state === \"open\")\n .map((childRow) => childRow.name);\n }\n}\n\n \n\n \n \n \n \n {{ childRow.value || \"\" }}\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n \n \n\n\n \n\n \n \n ./accordion.component.scss\n \n // Create overlapping effect\nion-accordion {\n background: white;\n border: 1px solid var(--ion-color-primary);\n border-radius: 10px;\n margin-top: -12px;\n padding-top: 8px;\n box-shadow: var(--ion-default-box-shadow);\n}\nion-accordion:first-of-type {\n margin-top: unset;\n padding-top: unset;\n}\nion-label.accordion-section-title {\n color: var(--ion-color-primary);\n font-size: 1.3rem;\n}\nion-item.accordion-content {\n padding-bottom: 1rem;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ childRow.value || \"\" }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplAccordionComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplAdvancedDashedBoxComponent.html":{"url":"components/TmplAdvancedDashedBoxComponent.html","title":"component - TmplAdvancedDashedBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplAdvancedDashedBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-advanced-dashed-box\n \n\n \n styleUrls\n ./advanced-dashed-box.component.scss\n \n\n\n\n \n templateUrl\n ./advanced-dashed-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n icon_position\n \n \n icon_src\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n inputRow\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:15\n \n \n\n \n \n\n\n \n Inputs\n \n \n \n \n \n inputRow\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:12\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:26\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n icon_position\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:14\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.ts:13\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"src/app/shared/model\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../../base\";\n\n@Component({\n selector: \"plh-advanced-dashed-box\",\n templateUrl: \"./advanced-dashed-box.component.html\",\n styleUrls: [\"./advanced-dashed-box.component.scss\"],\n})\nexport class TmplAdvancedDashedBoxComponent extends TemplateBaseComponent implements OnInit {\n @Input() inputRow: FlowTypes.TemplateRow;\n style: string;\n icon_src: string | null;\n icon_position: string;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n if (this.inputRow) this._row = this.inputRow;\n this.getParams();\n }\n\n getParams() {\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", \"\");\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n this.icon_position = getStringParamFromTemplateRow(this._row, \"icon_position\", \"top-left\");\n }\n}\n\n \n\n \n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./advanced-dashed-box.component.scss\n \n @use \"/src/theme/mixins\";\n\n.box-wrapper {\n .item {\n @include mixins.flex-centered;\n flex-direction: column;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n min-height: var(--dashed-box-item-min-height);\n padding: var(--regular-padding) var(--largest-padding);\n border: 1px dashed transparent;\n border-radius: var(--ion-border-radius-secondary);\n position: relative;\n .text {\n text-align: center;\n font-size: var(--font-size-text-medium);\n line-height: var(--line-height-text-largest);\n }\n .icon {\n @include mixins.small-square;\n position: absolute;\n img {\n width: 100%;\n height: 100%;\n }\n }\n .top-left {\n left: -8px;\n top: -10px;\n }\n .top-right {\n right: -8px;\n top: -10px;\n }\n .bottom-left {\n left: -8px;\n bottom: -10px;\n }\n .bottom-right {\n right: -8px;\n bottom: -10px;\n }\n }\n .default {\n background: var(--ion-color-primary-contrast);\n border-color: var(--ion-color-primary);\n .text {\n color: var(--ion-color-primary);\n }\n }\n .alert {\n background: var(--ion-color-primary-contrast);\n border-color: var(--ion-color-secondary);\n .text {\n color: var(--ion-color-secondary);\n }\n }\n}\n.box-wrapper[data-hasicon=\"true\"] {\n // add margin to top to account for offset icon\n margin-top: 8px;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplAdvancedDashedBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplAnimatedSlidesComponent.html":{"url":"components/TmplAnimatedSlidesComponent.html","title":"component - TmplAnimatedSlidesComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplAnimatedSlidesComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/animated-slides/animated-slides.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n template-animated-slides\n \n\n \n styleUrls\n ./animated-slides.component.scss\n \n\n\n\n \n templateUrl\n ./animated-slides.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n fadeSection\n \n \n fadeTimes\n \n \n skipText\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n skipIntro\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:26\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n skipIntro\n \n \n \n \n \n \nskipIntro()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:53\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n fadeSection\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n fadeTimes\n \n \n \n \n \n \n Type : []\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n skipText\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : \"\"\n \n \n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/animated-slides/animated-slides.component.ts:19\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { PLHAnimations } from \"src/app/shared/animations\";\nimport { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n animations: PLHAnimations.fadeInOut,\n selector: \"template-animated-slides\",\n templateUrl: \"./animated-slides.component.html\",\n styleUrls: [\"./animated-slides.component.scss\"],\n})\nexport class TmplAnimatedSlidesComponent extends TemplateBaseComponent implements OnInit {\n skipText = \"\";\n // local tracker for which sections have been shown\n fadeSection = [];\n // durations to display each faded section\n fadeTimes = [];\n private _isDismissed = false;\n style: string | null;\n\n ngOnInit(): void {\n this.getParams();\n this.runFade();\n }\n\n getParams() {\n this.skipText = getStringParamFromTemplateRow(this._row, \"skip_text\", \"Skip\");\n for (let row of this._row.rows) {\n this.fadeTimes.push(getNumberParamFromTemplateRow(row, \"duration\", 0) * 1000);\n }\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n }\n /**\n * Iterate over each section for display, showing for\n * a defined period of time before fading out and moving\n * on to the next\n */\n private async runFade() {\n let i = 0;\n for (let fadeTime of this.fadeTimes) {\n this.fadeSection[i] = \"in\";\n // wait specified time plus additional animation time\n await this._wait(fadeTime + 1500);\n this.fadeSection[i] = \"out\";\n i++;\n }\n /* component may have already been dismissed with \"uncompleted\" event,\n * so check it exists before attempting again */\n if (!this._isDismissed) {\n this.triggerActions(\"completed\");\n }\n }\n skipIntro() {\n this._isDismissed = true;\n this.triggerActions(\"uncompleted\");\n }\n private _wait(ms: number) {\n return new Promise((resolve) =>\n setTimeout(() => {\n resolve();\n }, ms)\n );\n }\n}\n\n \n\n \n \n \n \n {{ skipText }}\n \n \n \n \n \n \n\n\n \n\n \n \n ./animated-slides.component.scss\n \n .animated-slides-wrapper {\n p {\n font-size: 20px;\n }\n .section-container {\n position: relative;\n max-width: 300px;\n max-height: 85%;\n margin-top: 15%;\n margin-left: auto;\n margin-right: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n section {\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n width: 100%;\n display: flex;\n flex-grow: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n .skip-button {\n position: absolute;\n top: 0;\n right: 0;\n opacity: 0.3;\n }\n &[data-param-style~=\"light\"] {\n .background {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: var(--ion-background-color, #fff);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ skipText }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplAnimatedSlidesComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplAudioComponent.html":{"url":"components/TmplAudioComponent.html","title":"component - TmplAudioComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplAudioComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/audio/audio.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-audio\n \n\n \n styleUrls\n ./audio.component.scss\n \n\n\n\n \n templateUrl\n ./audio.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n currentTimeSong\n \n \n errorTxt\n \n \n hasStarted\n \n \n help\n \n \n isMute\n \n \n isPlayed\n \n \n player\n \n \n progress\n \n \n range\n \n \n rangeBarDisabled\n \n \n rangeBarTouched\n \n \n src\n \n \n timeToRewind\n \n \n titleAudio\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n checkChange\n \n \n checkFocus\n \n \n customUpdateWhenRewind\n \n \n getParams\n \n \n initPlayer\n \n \n rewindNext\n \n \n rewindPrev\n \n \n seek\n \n \n toggleMute\n \n \n togglePlayer\n \n \n updateProgress\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n template\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateAssetService: TemplateAssetService)\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:37\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateAssetService\n \n \n TemplateAssetService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:23\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n checkChange\n \n \n \n \n \n \ncheckChange()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:135\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n checkFocus\n \n \n \n \n \n \ncheckFocus()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:131\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n customUpdateWhenRewind\n \n \n \n \n \n \ncustomUpdateWhenRewind()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:144\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:48\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n initPlayer\n \n \n \n \n \n \ninitPlayer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:58\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n rewindNext\n \n \n \n \n \n \nrewindNext()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:92\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n rewindPrev\n \n \n \n \n \n \nrewindPrev()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:97\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n seek\n \n \n \n \n \n \nseek()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:106\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n toggleMute\n \n \n \n \n \n \ntoggleMute()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:114\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n togglePlayer\n \n \n \n \n \n \ntogglePlayer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:87\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n updateProgress\n \n \n \n \n \n \nupdateProgress()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:119\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n currentTimeSong\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : \"0\"\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n errorTxt\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n hasStarted\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:37\n \n \n\n\n \n \n \n \n \n \n \n \n help\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n isMute\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n isPlayed\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n player\n \n \n \n \n \n \n Type : Howl\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:29\n \n \n\n\n \n \n \n \n \n \n \n \n progress\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n range\n \n \n \n \n \n \n Type : IonRange\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('range', {static: false})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n rangeBarDisabled\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:36\n \n \n\n\n \n \n \n \n \n \n \n \n rangeBarTouched\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n timeToRewind\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 15\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n titleAudio\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/audio/audio.component.ts:26\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"../../../../model\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { Howl } from \"howler\";\nimport { IonRange } from \"@ionic/angular\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-audio\",\n templateUrl: \"./audio.component.html\",\n styleUrls: [\"./audio.component.scss\"],\n})\nexport class TmplAudioComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, OnDestroy\n{\n @Input() template: FlowTypes.Template;\n @ViewChild(\"range\", { static: false }) range: IonRange;\n src: string | null;\n titleAudio: string | null;\n help: string | null;\n isMute: boolean = false;\n player: Howl = null;\n isPlayed: boolean = false;\n errorTxt: string | null;\n progress = 0;\n timeToRewind: number = 15;\n rangeBarTouched: boolean = false;\n currentTimeSong: string = \"0\";\n rangeBarDisabled: boolean = false;\n hasStarted: boolean = false;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n this.initPlayer();\n }\n\n getParams() {\n this.src = this.templateAssetService.getTranslatedAssetPath(\n this._row.value || getStringParamFromTemplateRow(this._row, \"src\", null)\n );\n this.titleAudio = getStringParamFromTemplateRow(this._row, \"title\", \"Title\");\n this.help = getStringParamFromTemplateRow(this._row, \"help\", null);\n this.rangeBarDisabled = getBooleanParamFromTemplateRow(this._row, \"range_bar_disabled\", false);\n this.timeToRewind = getNumberParamFromTemplateRow(this._row, \"time_to_rewind\", 15);\n }\n\n initPlayer() {\n return this.src\n ? (this.player = new Howl({\n src: [this.src],\n onplay: () => {\n this.isPlayed = true;\n this.updateProgress();\n if (!this.hasStarted) {\n this.hasStarted = true;\n this.triggerActions(\"audio_first_start\");\n }\n this.triggerActions(\"audio_play\");\n },\n onend: () => {\n this.isPlayed = false;\n this.range.value = 0;\n this.currentTimeSong = \"0\";\n this.updateProgress();\n this.triggerActions(\"audio_end\");\n },\n onpause: () => {\n this.isPlayed = false;\n this.updateProgress();\n this.triggerActions(\"audio_pause\");\n },\n }))\n : (this.errorTxt = \"Src is undefined, player not initialized\");\n }\n\n togglePlayer() {\n this.isPlayed = !this.isPlayed;\n return this.isPlayed ? this.player.play() : this.player.pause();\n }\n\n rewindNext() {\n this.player.seek((this.player.seek() as any) + this.timeToRewind);\n this.customUpdateWhenRewind();\n }\n\n rewindPrev() {\n this.player.seek(\n (this.player.seek() as any) {\n if (!this.isPlayed || this.rangeBarTouched) {\n clearInterval(ref);\n return;\n }\n let seek: any = this.player.seek();\n this.progress = (seek / this.player.duration()) * 100 || 0;\n this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : \"0\";\n }, 1000);\n }\n\n checkFocus() {\n this.rangeBarTouched = true;\n }\n\n checkChange() {\n if (this.rangeBarTouched) {\n let newValue = +this.range.value;\n let duration = this.player.duration();\n this.player.seek(duration * (newValue / 100));\n this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : \"0\";\n }\n }\n\n customUpdateWhenRewind() {\n if (!this.isPlayed) {\n let seek: any = this.player.seek();\n this.progress = (seek / this.player.duration()) * 100 || 0;\n this.currentTimeSong = this.player.seek() ? (this.player.seek() as any).toString() : \"0\";\n }\n }\n\n ngOnDestroy() {\n this.player.stop();\n }\n}\n\n \n\n \n \n \n \n {{ titleAudio }}\n \n \n \n \n \n \n \n \n \n \n \n {{ +currentTimeSong * 1000 | date: \"mm:ss\" }}\n \n \n {{ !player ? \"00:00\" : (player.duration() * 1000 | date: \"mm:ss\") }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ errorTxt }}\n \n\n\n \n\n \n \n ./audio.component.scss\n \n @use \"/src/theme/mixins\";\n\n$control-background: var(--audio-control-background, var(--ion-color-primary-500));\n\n.container-player {\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n box-sizing: border-box;\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-standard);\n padding: var(--regular-padding);\n display: flex;\n position: relative;\n flex-direction: column;\n .top-row {\n @include mixins.flex-space-between;\n .title_and_help {\n width: 85%;\n display: flex;\n align-items: center;\n min-height: var(--audio-title-and-help-height);\n h3 {\n margin: 0;\n margin-right: var(--small-margin);\n color: var(--ion-color-primary);\n max-width: 85%;\n font-weight: var(--font-weight-bold);\n font-size: var(--audio-title-size);\n }\n .audio-help {\n color: var(--ion-color-primary);\n height: var(--help-icon-standard-size);\n width: var(--help-icon-standard-size);\n }\n }\n .volume {\n position: absolute;\n top: 15px;\n right: 15px;\n .volume-icon {\n color: var(--ion-color-primary);\n @include mixins.small-square;\n }\n }\n }\n .progress-block {\n .audio-range {\n --bar-background-active: #{$control-background};\n --bar-background: transparent;\n --bar-height: 4px;\n --bar-border-radius: var(--ion-border-radius-secondary);\n --knob-size: 0px;\n --pin-background: var(--ion-color-primary);\n --knob-background: var(--ion-color-primary);\n padding-inline: 0;\n }\n\n ion-range::part(bar) {\n border: var(--ion-border-thin-standard);\n height: var(--audio-bar-height);\n }\n\n ion-range::part(bar-active) {\n top: 23px;\n margin-left: 3px;\n }\n }\n .time {\n margin-top: -12px;\n @include mixins.flex-space-between;\n &-value {\n font-size: var(--font-size-text-large);\n line-height: var(--line-height-text-small);\n color: var(--ion-color-primary);\n }\n }\n .controls {\n @include mixins.flex-space-between;\n min-width: var(--audio-controls-width);\n align-self: center;\n .rewind,\n .forward {\n ion-button {\n @include mixins.large-square;\n --background: transparent;\n --padding: 0;\n --border-radius: var(--ion-border-radius-rounded);\n --box-shadow: transparent;\n img {\n position: absolute;\n min-width: var(--audio-controls-img-width);\n }\n }\n }\n .rewind {\n img {\n transform: rotate(180deg);\n }\n }\n .play {\n .btn-play {\n @include mixins.large-square;\n --background: #{$control-background};\n --border-radius: var(--ion-border-radius-rounded);\n --padding: 0;\n --box-shadow: var(--ion-default-box-shadow);\n img {\n position: absolute;\n width: var(--audio-play-img-width);\n }\n }\n }\n }\n .error-text {\n margin: var(--small-margin) 0;\n text-align: center;\n }\n}\n.disabled {\n pointer-events: none;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ titleAudio }} {{ +currentTimeSong * 1000 | date: \"mm:ss\" }} {{ !player ? \"00:00\" : (player.duration() * 1000 | date: \"mm:ss\") }} {{ errorTxt }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplAudioComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplButtonComponent.html":{"url":"components/TmplButtonComponent.html","title":"component - TmplButtonComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplButtonComponent\n\n\n\n \n Info\n \n \n README\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/button/button.component.ts\n\n\n\n \n Description\n \n \n A general-purpose button component\n\n \n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-button\n \n\n \n styleUrls\n ./button.component.scss\n \n\n\n\n \n templateUrl\n ./button.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n buttonAlign\n \n \n disabled\n \n \n icon\n \n \n style\n \n \n textAlign\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n buttonAlign\n \n \n \n \n \n \n Type : \"left\" | \"centre\" | \"right\"\n\n \n \n \n \n Default value : \"centre\"\n \n \n \n \n Defined in src/app/shared/components/template/components/button/button.component.ts:33\n \n \n\n \n \n TEMPLATE PARAMETER: \"button_align\"\n\n \n \n\n \n \n \n \n \n \n \n \n disabled\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/button/button.component.ts:29\n \n \n\n \n \n TEMPLATE PARAMETER: \"disabled\". If true, button is disabled and greyed out\n\n \n \n\n \n \n \n \n \n \n \n \n icon\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/button/button.component.ts:35\n \n \n\n \n \n TEMPLATE PARAMETER: \"icon\". The path to an icon asset\n\n \n \n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : \"information\" | \"navigation\" | \"full\" | \"flexible\" | \"medium\" | \"short\" | \"tall\" | \"standard\" | \"alternative\"\n\n \n \n \n \n Default value : \"information\"\n \n \n \n \n Defined in src/app/shared/components/template/components/button/button.component.ts:18\n \n \n\n \n \n TEMPLATE PARAMETER: \"style\"\n\n \n \n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : \"left\" | \"centre\" | \"right\"\n\n \n \n \n \n Default value : \"left\"\n \n \n \n \n Defined in src/app/shared/components/template/components/button/button.component.ts:31\n \n \n\n \n \n TEMPLATE PARAMETER: \"text_align\"\n\n \n \n\n \n \n\n\n\n\n \n Button\nExample\n\n\n\ntype\nname\nvalue\nparameter_list\n\n\n\n\nbutton\nbutton_par_2_1\nStyle parameter Information\nstyle: information\n\n\nbutton\nbutton_par_2_2\nStyle parameter Navigation\nstyle: navigation\n\n\n\n\nGoogle Sheet DemoLive Preview Demo\nParameters\n\n\n\nParameter\nValue\nDescription\n\n\n\n\ndisabled\nfalse (default)\nEnables the button\n\n\ndisabled\ntrue\nDisables the button and greys it out\n\n\nstyle\ninformation (default)\nButton colour primary\n\n\nstyle\nnavigation\nButton colour secondary\n\n\nstyle\nfull (default)\nButton width determined by screen width\n\n\nstyle\nflexible\nButton width equal to its content width\n\n\nstyle\nmedium (default)\nButton height medium\n\n\nstyle\nshort\nButton height short\n\n\nstyle\ntall\nButton height tall\n\n\nstyle\nstandard (default)\nButton text colour white\n\n\nstyle\nalternative\nButton text colour primary\n\n\nstyle\nmedium_round\nTo be removed\n\n\nstyle\nno_shadow\nTo be removed\n\n\ntext_align\nleft (default)\nButton text is left aligned within the button\n\n\ntext_align\ncenter\nButton text is centred within the button\n\n\ntext_align\nright\nButton text is right aligned within the button\n\n\nbutton_align\ncenter (default)\nHorizontal alignment of the button on the screen is centred\n\n\nbutton_align\nleft\nHorizontal alignment of the button on the screen is left aligned\n\n\nbutton_align\nright\nHorizontal alignment of the button on the screen is right aligned\n\n\n\n\n \n\n \n import { Component, ElementRef, OnInit } from \"@angular/core\";\nimport {\n getStringParamFromTemplateRow,\n getBooleanParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n/**\n * A general-purpose button component\n */\n@Component({\n selector: \"plh-button\",\n templateUrl: \"./button.component.html\",\n styleUrls: [\"./button.component.scss\"],\n})\nexport class TmplButtonComponent extends TemplateBaseComponent implements OnInit {\n /** TEMPLATE PARAMETER: \"style\" */\n style:\n | \"information\"\n | \"navigation\"\n | \"full\"\n | \"flexible\"\n | \"medium\"\n | \"short\"\n | \"tall\"\n | \"standard\"\n | \"alternative\" = \"information\";\n /** TEMPLATE PARAMETER: \"disabled\". If true, button is disabled and greyed out */\n disabled: boolean = false;\n /** TEMPLATE PARAMETER: \"text_align\" */\n textAlign: \"left\" | \"centre\" | \"right\" = \"left\";\n /** TEMPLATE PARAMETER: \"button_align\" */\n buttonAlign: \"left\" | \"centre\" | \"right\" = \"centre\";\n /** TEMPLATE PARAMETER: \"icon\". The path to an icon asset */\n icon: string;\n\n /** @ignore */\n constructor(private elRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n private getParams() {\n this.style = `${getStringParamFromTemplateRow(this._row, \"style\", \"information\")} ${\n this.isTwoColumns() ? \"two_columns\" : \"\"\n }` as any;\n this.disabled = getBooleanParamFromTemplateRow(this._row, \"disabled\", false);\n if (this._row.disabled) {\n this.disabled = true;\n }\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", \"left\") as any;\n this.buttonAlign = getStringParamFromTemplateRow(this._row, \"button_align\", \"center\") as any;\n this.icon = getStringParamFromTemplateRow(this._row, \"icon\", null);\n }\n\n /** Determine if the button is inside a display group with the style \"two_columns\" */\n private isTwoColumns(): boolean {\n const displayGroupElement = this.elRef.nativeElement.closest(\".display-group-wrapper\");\n if (displayGroupElement) {\n return displayGroupElement.classList.contains(\"two_columns\");\n } else {\n return false;\n }\n }\n}\n\n \n\n \n \n \n \n \n \n \n\n\n \n\n \n \n ./button.component.scss\n \n $background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical));\n$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical));\n\n:host {\n width: 100%;\n ion-button {\n height: 100%;\n }\n span {\n padding: var(--tiny-padding) 0;\n display: contents;\n }\n}\nion-button {\n font-size: var(--buttons-font-size-small);\n font-weight: var(--font-weight-standard);\n color: var(--ion-color-primary-contrast);\n text-transform: none;\n white-space: pre-line;\n min-height: var(--buttons-min-height);\n padding: var(--regular-margin) var(--tiny-padding) 0;\n --border-radius: var(--ion-border-radius-standard);\n --box-shadow: var(--ion-default-box-shadow);\n display: flex;\n width: fit-content;\n margin: 0 auto;\n}\n\nion-button::part(native) {\n height: auto;\n}\n\nion-button:disabled,\nion-button[disabled] {\n filter: brightness(55%);\n}\n\n/// nested_color style applies semi-transparent background to match container\nion-button[data-param-style~=\"nested_color\"] {\n --background: linear-gradient(rgb(0 0 0 / 13%) 0%, rgb(0 0 0 / 20%) 100%);\n}\n\n// nested_color style applies semi-transparent background to match container\nion-button[data-param-style~=\"card\"] {\n --background: white;\n --background-activated: var(--ion-color-gray-light);\n --padding-top: 4px;\n --padding-bottom: 4px;\n color: var(--ion-color-primary);\n font-weight: var(--font-weight-bold);\n border: 1px solid var(--ion-color-gray-light);\n border-radius: var(--ion-border-radius-secondary);\n min-height: var(--buttons-short-height);\n filter: drop-shadow(var(--ion-default-box-shadow));\n\n ion-icon {\n width: 32px;\n font-size: 32px;\n }\n\n .children {\n position: absolute;\n align-self: flex-end;\n right: 0;\n display: flex;\n align-items: center;\n }\n}\n\n/// TODO CC-2021-12-19 - the code below should likely be refactored to param selectors and moved\n\n.navigation {\n --background: #{$background-secondary};\n}\n\n.information {\n --background: #{$background-primary};\n}\n\n.make_me_smile {\n min-height: 80px !important;\n max-width: fit-content;\n --background: #{$background-primary};\n color: var(--ion-color-primary-contrast);\n}\n\n.get_me_going {\n min-height: 80px !important;\n max-width: fit-content;\n --background: #{$background-secondary};\n color: var(--ion-color-primary-contrast);\n}\n\n.options {\n --background: #{$background-primary};\n color: var(--ion-color-primary-contrast);\n}\n\n.standard {\n color: var(--ion-color-primary-contrast);\n}\n.alternative {\n color: var(--ion-color-primary);\n}\n\n.left ::ng-deep {\n margin: 0 auto 0 2px;\n text-align: left;\n p {\n margin: 0 0 0 2px;\n }\n}\n.right {\n margin: 0 2px 0 auto;\n text-align: right;\n}\n\n// width\n.full {\n width: 100%;\n}\n.flexible {\n width: fit-content;\n max-width: 100%;\n}\n// height\n.medium {\n min-height: var(--buttons-medium-height);\n}\n.short {\n min-height: var(--buttons-short-height);\n font-size: var(--buttons-font-size-small);\n}\n.tall {\n min-height: var(--buttons-tall-height);\n}\n\n.medium_round {\n --border-radius: var(--ion-border-radius-secondary);\n}\n.no_shadow {\n --box-shadow: none;\n}\n.two_columns {\n max-width: 12rem;\n min-height: var(--buttons-min-height);\n font-size: calc(var(--buttons-font-size) * var(--scale-factor-btn));\n min-width: 5rem;\n @media (max-width: 375px) {\n max-width: 11rem;\n }\n @media (max-width: 320px) {\n max-width: 10rem;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplButtonComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplCarouselComponent.html":{"url":"components/TmplCarouselComponent.html","title":"component - TmplCarouselComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplCarouselComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/carousel/carousel.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n \n encapsulation\n ViewEncapsulation.None\n \n\n\n\n\n\n\n\n\n\n \n selector\n plh-carousel\n \n\n \n styleUrls\n ./carousel.component.scss\n \n\n\n\n \n templateUrl\n ./carousel.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n config\n \n \n initialSlide\n \n \n swiper\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n getParams\n \n \n Public\n handleSwiperInitialised\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(taskService: TaskService)\n \n \n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:20\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n taskService\n \n \n TaskService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n getParams\n \n \n \n \n \n \n \n getParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:31\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n handleSwiperInitialised\n \n \n \n \n \n \n \n handleSwiperInitialised(swiper: Swiper)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:45\n \n \n\n\n \n \n Event emitter called when swiper initialised\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n swiper\n \n Swiper\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n config\n \n \n \n \n \n \n Type : SwiperOptions\n\n \n \n \n \n Default value : {}\n \n \n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n initialSlide\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n swiper\n \n \n \n \n \n \n Type : Swiper\n\n \n \n \n \n Defined in src/app/shared/components/template/components/carousel/carousel.component.ts:19\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { SwiperOptions, Swiper } from \"swiper\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { TaskService } from \"src/app/shared/services/task/task.service\";\n\n@Component({\n selector: \"plh-carousel\",\n templateUrl: \"./carousel.component.html\",\n styleUrls: [\"./carousel.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\nexport class TmplCarouselComponent extends TemplateBaseComponent implements OnInit {\n config: SwiperOptions = {};\n swiper: Swiper;\n initialSlide: number;\n\n constructor(private taskService: TaskService) {\n super();\n }\n\n async ngOnInit() {\n await this.getParams();\n await this.hackSetHighlightedTask();\n }\n\n async getParams() {\n this.config.slidesPerView =\n getNumberParamFromTemplateRow(this._row, \"slides_per_view\", null) || \"auto\";\n this.config.spaceBetween = getNumberParamFromTemplateRow(this._row, \"space_between\", 10);\n this.config.loop = getBooleanParamFromTemplateRow(this._row, \"loop\", false);\n // \"loopedSlides\" is required in the Slider config iff \"loop\" is true\n if (this.config.loop) {\n this.config.loopedSlides = this._row.rows.length;\n }\n this.config.centeredSlides = getBooleanParamFromTemplateRow(this._row, \"centered_slides\", true);\n this.initialSlide = getNumberParamFromTemplateRow(this._row, \"initial_slide_index\", 0);\n }\n\n /** Event emitter called when swiper initialised */\n public handleSwiperInitialised(swiper: Swiper) {\n this.swiper = swiper;\n this.swiper.slideTo(this.initialSlide, 0, false);\n }\n\n /** When using carousel within task_group context set additional highlighted slide from task data */\n private async hackSetHighlightedTask() {\n const taskGroupsList = getStringParamFromTemplateRow(this._row, \"task_group_data\", null);\n if (taskGroupsList) {\n const highlightedTaskGroup = this.taskService.getHighlightedTaskGroup();\n if (highlightedTaskGroup) {\n this.initialSlide = await this.taskService.getHighlightedTaskGroupIndex(\n highlightedTaskGroup,\n taskGroupsList\n );\n }\n }\n }\n}\n\n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./carousel.component.scss\n \n .swiper {\n width: 100%;\n}\n\n.swiper-slide {\n padding: var(--small-padding);\n width: fit-content;\n height: auto;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplCarouselComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplComboBoxComponent.html":{"url":"components/TmplComboBoxComponent.html","title":"component - TmplComboBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplComboBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/combo-box/combo-box.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-combo-box\n \n\n \n styleUrls\n ./combo-box.component.scss\n \n\n\n\n \n templateUrl\n ./combo-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n customAnswerSelected\n \n \n placeholder\n \n \n prioritisePlaceholder\n \n \n style\n \n \n text\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n getText\n \n \n Async\n openModal\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n template\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(modalController: ModalController, templateService: TemplateService)\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:30\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n modalController\n \n \n ModalController\n \n \n \n No\n \n \n \n \n templateService\n \n \n TemplateService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:24\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:45\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getText\n \n \n \n \n \n \ngetText(aValue: string, listAnswers: string[])\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:55\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n aValue\n \n string\n \n\n \n No\n \n\n\n \n \n listAnswers\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : string\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n openModal\n \n \n \n \n \n \n \n openModal()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:68\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n customAnswerSelected\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:29\n \n \n\n\n \n \n \n \n \n \n \n \n placeholder\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n prioritisePlaceholder\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : \"\"\n \n \n \n \n Defined in src/app/shared/components/template/components/combo-box/combo-box.component.ts:28\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"../../../../model\";\nimport { ModalController } from \"@ionic/angular\";\nimport { ComboBoxModalComponent } from \"./combo-box-modal/combo-box-modal.component\";\nimport {\n getBooleanParamFromTemplateRow,\n getParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateService } from \"../../services/template.service\";\nimport { ReplaySubject } from \"rxjs\";\n\n@Component({\n selector: \"plh-combo-box\",\n templateUrl: \"./combo-box.component.html\",\n styleUrls: [\"./combo-box.component.scss\"],\n})\nexport class TmplComboBoxComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, OnDestroy\n{\n @Input() template: FlowTypes.Template;\n placeholder: string;\n prioritisePlaceholder: boolean;\n style: string;\n text = \"\";\n customAnswerSelected: boolean = false;\n private componentDestroyed$ = new ReplaySubject(1);\n constructor(private modalController: ModalController, private templateService: TemplateService) {\n super();\n }\n\n ngOnInit(): void {\n this.getParams();\n const listAnswers: string[] = getParamFromTemplateRow(this._row, \"answer_list\", null);\n this.customAnswerSelected =\n listAnswers && this._row.value\n ? !listAnswers.find((x) => x.includes(this._row.value))\n : false;\n this.text = this.getText(this._row.value, listAnswers);\n }\n\n getParams() {\n this.placeholder = getStringParamFromTemplateRow(this._row, \"placeholder\", \"\");\n this.prioritisePlaceholder = getBooleanParamFromTemplateRow(\n this._row,\n \"prioritise_placeholder\",\n false\n );\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n }\n\n getText(aValue: string, listAnswers: string[]): string {\n if (aValue) {\n if (aValue === \"other\") {\n return this._row.parameter_list[\"customAnswer\"];\n }\n const textFromList = listAnswers\n .find((answer: string) => answer.includes(aValue))\n ?.match(/(? {\n this.prioritisePlaceholder = false;\n const value = data?.data?.answer?.name;\n this.text = data?.data?.answer?.text;\n this.customAnswerSelected = data?.data?.customAnswerSelected;\n if (this.customAnswerSelected) {\n this._row.parameter_list[\"customAnswer\"] = data?.data?.answer?.text;\n } else {\n this._row.parameter_list[\"customAnswer\"] = null;\n }\n await this.setValue(value);\n await this.triggerActions(\"changed\");\n });\n await modal.present();\n }\n\n ngOnDestroy() {\n this.componentDestroyed$.next(true);\n this.componentDestroyed$.complete();\n }\n}\n\n \n\n \n \n {{ (text && !prioritisePlaceholder ? text : placeholder) | translate }}\n\n\n \n\n \n \n ./combo-box.component.scss\n \n $placeholder-text: var(--combo-box-placeholder-text, var(--ion-color-primary-transparent));\n$background-no-value: var(--combo-box-background-no-value, transparent);\n$background-with-value: var(\n --combo-box-background-with-value,\n var(--gradient-primary-light-vertical)\n);\n\n.open-combobox {\n outline: none;\n width: 100%;\n border: var(--ion-border-standard);\n box-sizing: border-box;\n filter: drop-shadow(var(--ion-default-box-shadow));\n border-radius: var(--ion-border-radius-secondary);\n font-weight: var(--font-weight-standard);\n background: $background-no-value;\n font-size: var(--combo-box-font-size-standard);\n line-height: var(--line-height-text-large);\n text-align: center;\n color: var(--ion-color-primary);\n min-height: var(--combo-box-min-height);\n @media (max-width: 400px) {\n min-width: var(--combo-box-min-width);\n }\n}\n\n.placeholder-style {\n color: $placeholder-text;\n}\n.with-value {\n background: $background-with-value;\n}\n.no-value {\n background: $background-no-value;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ (text && !prioritisePlaceholder ? text : placeholder) | translate }}'\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplComboBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplDashedBoxComponent.html":{"url":"components/TmplDashedBoxComponent.html","title":"component - TmplDashedBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplDashedBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/dashed-box/dashed-box.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-dashed-box\n \n\n \n styleUrls\n ./dashed-box.component.scss\n \n\n\n\n \n templateUrl\n ./dashed-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n icon_position\n \n \n icon_src\n \n \n innerHTML\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(domSanitizer: DomSanitizer)\n \n \n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:19\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n domSanitizer\n \n \n DomSanitizer\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:29\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n icon_position\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n innerHTML\n \n \n \n \n \n \n Type : SafeHtml\n\n \n \n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/dashed-box/dashed-box.component.ts:16\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { getStringParamFromTemplateRow } from \"../../../../utils\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\n\n@Component({\n selector: \"plh-dashed-box\",\n templateUrl: \"./dashed-box.component.html\",\n styleUrls: [\"./dashed-box.component.scss\"],\n})\nexport class TmplDashedBoxComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n style: string;\n icon_src: string | null;\n icon_position: string;\n innerHTML: SafeHtml;\n constructor(private domSanitizer: DomSanitizer) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n this.innerHTML = this.domSanitizer.bypassSecurityTrustHtml(this._row.value);\n }\n\n getParams() {\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", \"\");\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"default\");\n this.icon_position = getStringParamFromTemplateRow(this._row, \"icon_position\", \"top-left\");\n }\n}\n\n \n\n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./dashed-box.component.scss\n \n @use \"/src/theme/mixins\";\n\n.box-wrapper {\n .item {\n @include mixins.flex-centered;\n margin-left: auto;\n margin-right: auto;\n width: 100%;\n min-height: var(--dashed-box-item-min-height);\n padding: var(--regular-padding) var(--largest-padding);\n border: 1px dashed transparent;\n border-radius: var(--ion-border-radius-secondary);\n position: relative;\n .text {\n text-align: center;\n font-size: var(--font-size-text-medium);\n line-height: var(--line-height-text-largest);\n }\n .icon {\n @include mixins.small-square;\n position: absolute;\n img {\n width: 100%;\n height: 100%;\n }\n }\n .top-left {\n left: -8px;\n top: -10px;\n }\n .top-right {\n right: -8px;\n top: -10px;\n }\n .bottom-left {\n left: -8px;\n bottom: -10px;\n }\n .bottom-right {\n right: -8px;\n bottom: -10px;\n }\n }\n .default {\n background: var(--ion-color-primary-contrast);\n border-color: var(--ion-color-primary);\n .text {\n color: var(--ion-color-primary);\n }\n }\n .alert {\n background: var(--ion-color-primary-contrast);\n border-color: var(--ion-color-secondary);\n .text {\n color: var(--ion-color-secondary);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplDashedBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplDataItemsComponent.html":{"url":"components/TmplDataItemsComponent.html","title":"component - TmplDataItemsComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplDataItemsComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/data-items/data-items.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n\n\n\n Metadata\n \n \n\n \n changeDetection\n ChangeDetectionStrategy.OnPush\n \n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-data-items\n \n\n \n styleUrls\n ./data-items.component.scss\n \n\n\n\n \n templateUrl\n ./data-items.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n itemRows\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n row\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(dynamicDataService: DynamicDataService, templateVariablesService: TemplateVariablesService, injector: Injector, cdr: ChangeDetectorRef)\n \n \n \n \n Defined in src/app/shared/components/template/components/data-items/data-items.component.ts:44\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n dynamicDataService\n \n \n DynamicDataService\n \n \n \n No\n \n \n \n \n templateVariablesService\n \n \n TemplateVariablesService\n \n \n \n No\n \n \n \n \n injector\n \n \n Injector\n \n \n \n No\n \n \n \n \n cdr\n \n \n ChangeDetectorRef\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/data-items/data-items.component.ts:39\n \n \n \n \n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n itemRows\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow[]\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/data-items/data-items.component.ts:32\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(row: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/data-items/data-items.component.ts:39\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n} from \"@angular/core\";\nimport { debounceTime, Subscription } from \"rxjs\";\nimport { DynamicDataService } from \"src/app/shared/services/dynamic-data/dynamic-data.service\";\nimport { FlowTypes } from \"../../models\";\nimport { ItemProcessor } from \"../../processors/item\";\nimport { TemplateRowService } from \"../../services/instance/template-row.service\";\nimport { TemplateVariablesService } from \"../../services/template-variables.service\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-data-items\",\n templateUrl: \"./data-items.component.html\",\n styleUrls: [\"./data-items.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Data Items are a structural row component that subscribes to a dynamic data list\n * and re-renders child components on change\n *\n * TODO\n * - Would be better if can render children without container (like regular items)\n * - Should be refactored into structural container instead of display component\n * - Could possibly refactor to feature module including services\n */\nexport class TmplDataItemsComponent extends TemplateBaseComponent {\n public itemRows: FlowTypes.TemplateRow[] = [];\n\n private dataListName: string;\n private parameterList: Record;\n\n private dataQuery$: Subscription;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.dataListName = this.hackGetRawDataListName(row);\n this.parameterList = this.hackGetRawParameterList(row);\n this.subscribeToData();\n }\n\n constructor(\n private dynamicDataService: DynamicDataService,\n private templateVariablesService: TemplateVariablesService,\n private injector: Injector,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n private async subscribeToData() {\n if (this.dataQuery$) {\n this.dataQuery$.unsubscribe();\n }\n if (this.dataListName) {\n await this.dynamicDataService.ready();\n const query = await this.dynamicDataService.query$(\"data_list\", this.dataListName);\n this.dataQuery$ = query.pipe(debounceTime(50)).subscribe(async (data) => {\n await this.renderItems(data, this._row.rows, this.parameterList);\n });\n } else {\n await this.renderItems([], [], {});\n }\n }\n\n private async renderItems(\n itemDataList: any[],\n rows: FlowTypes.TemplateRow[],\n parameterList: any\n ) {\n const parsedItemDataList = await this.parseDataList(itemDataList);\n const itemRows = new ItemProcessor(parsedItemDataList, parameterList).process(rows);\n const parsedItemRows = await this.hackProcessRows(itemRows);\n const replacedActionRows = this.setActionListMeta(parsedItemRows, parsedItemDataList);\n // TODO - deep diff and only update changed\n this.itemRows = replacedActionRows;\n this.cdr.markForCheck();\n }\n\n /**\n * Update any action list set_item args to contain name of current data list and item id\n * and set_items action to include all currently displayed rows\n * */\n private setActionListMeta(\n rows: FlowTypes.TemplateRow[],\n dataList: {\n [index: string]: any;\n }\n ) {\n return rows.map((r) => {\n if (r.action_list) {\n r.action_list = r.action_list.map((a) => {\n if (a.action_id === \"set_item\") {\n a.args = [this.dataListName, r._evalContext.itemContext.id];\n }\n if (a.action_id === \"set_items\") {\n // TODO - add a check for @item refs and replace parameter list with correct values\n // for each individual item (default will be just to pick the first)\n a.args = [this.dataListName, Object.values(dataList).map((v) => v.id)];\n }\n return a;\n });\n }\n return r;\n });\n }\n\n /**\n * Ordinarily rows would be processed as part of the regular template processing,\n * however this must be bypassed to allow multiple reprocessing on item updates\n */\n private async hackProcessRows(rows) {\n const processor = new TemplateRowService(this.injector, {\n name: \"\",\n template: {\n rows,\n },\n row: {\n rows: [],\n },\n } as any);\n await processor.processContainerTemplateRows();\n return processor.renderedRows;\n }\n\n /**\n * If datalist referenced as @data.some_list it will already be parsed, so extract\n * name from raw values.\n * Alternatively any list provided as a string value can be returned directly\n * */\n private hackGetRawDataListName(row: FlowTypes.TemplateRow) {\n if (!row.value) return;\n if (typeof row.value === \"string\") {\n return row.value;\n }\n // HACK - if list name contains '_list' template.parser will parse as an array instead of string\n if (Array.isArray(row.value)) {\n return row.value[0];\n }\n // Extract raw name in case full datalist object supplied in place of name\n return row._dynamicFields?.value?.[0]?.fieldName;\n }\n\n /** Copied from template-row service */\n private hackGetRawParameterList(row: FlowTypes.TemplateRow) {\n const list = row.parameter_list;\n const unparsedFilter = row._dynamicFields?.parameter_list?.filter?.[0].fullExpression;\n if (list && unparsedFilter) {\n list.filter = unparsedFilter;\n }\n return list;\n }\n /** Copied from template-row service */\n private async parseDataList(dataList: { [id: string]: any }) {\n const parsed: { [id: string]: any } = {};\n for (const [listKey, listValue] of Object.entries(dataList)) {\n parsed[listKey] = listValue;\n for (const [itemKey, itemValue] of Object.entries(listValue)) {\n if (typeof itemValue === \"string\") {\n parsed[listKey][itemKey] = await this.templateVariablesService.evaluateConditionString(\n itemValue\n );\n }\n }\n }\n return parsed;\n }\n}\n\n \n\n \n \n\n \n\n \n \n ./data-items.component.scss\n \n :host {\n display: contents;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplDataItemsComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplDisplayGridComponent.html":{"url":"components/TmplDisplayGridComponent.html","title":"component - TmplDisplayGridComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplDisplayGridComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-display-grid\n \n\n \n styleUrls\n ./display-grid.component.scss\n \n\n\n\n \n templateUrl\n ./display-grid.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n itemStyle\n \n \n Public\n parameter_list\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n row\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n \n \n \n \n\n\n\n \n Inputs\n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts:51\n \n \n \n \n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n itemStyle\n \n \n \n \n \n \n Type : Partial\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts:44\n \n \n\n \n \n Computed grid style from input parameters\n\n \n \n\n \n \n \n \n \n \n \n \n Public\n parameter_list\n \n \n \n \n \n \n Type : IDisplayGridParams\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts:49\n \n \n\n \n \n Authoring parameters\n\n \n \n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(row: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts:51\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../../models\";\n\ninterface IDisplayGridParams {\n /**\n * Item border outline style.\n * Default: \"solid\"\n */\n item_border?: \"solid\" | \"dashed\" | \"none\";\n\n /**\n * Minimum item width, will increase to fit grid.\n * Default '200px'\n **/\n item_width: string;\n /**\n * Maximum grid width, if specified will center items in available space.\n * Default '100%'\n **/\n grid_width: string;\n /**\n * Spacing between grid items.\n * Default '16px'\n **/\n grid_gap: string;\n}\n\n@Component({\n selector: \"plh-display-grid\",\n templateUrl: \"./display-grid.component.html\",\n styleUrls: [\"./display-grid.component.scss\"],\n})\nexport class TmplDisplayGridComponent extends TemplateBaseComponent implements ITemplateRowProps {\n /**\n * Computed grid style from input parameters\n * @ignore\n */\n public gridStyle: Partial;\n /**\n * Computed grid style from input parameters\n *\n */\n public itemStyle: Partial;\n\n /**\n * Authoring parameters\n */\n public parameter_list: IDisplayGridParams;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.setParams();\n }\n\n private setParams() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n const { gridStyle, itemStyle } = this.generateStyles();\n this.gridStyle = gridStyle;\n this.itemStyle = itemStyle;\n }\n\n /**\n * Create a list of styles to be passed into ngStyle for grid and item components\n * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/\n */\n private generateStyles() {\n const minItemWidth = this.parameter_list.item_width || \"200px\";\n const maxGridWidth = this.parameter_list.grid_width || \"100%\";\n const gridGap = this.parameter_list.grid_gap || \"16px\";\n const borderStyle = this.parameter_list.item_border || \"solid\";\n\n const gridStyle: Partial = {\n // center grid with maximum width\n maxWidth: maxGridWidth,\n margin: \"auto\",\n // apply fixed gap between grid items\n gap: gridGap,\n // fit columns with target item width\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,\n // make all rows same height\n gridAutoRows: \"1fr\",\n };\n\n const itemStyle: Partial = {\n // assign item border outline style\n borderStyle,\n };\n return { gridStyle, itemStyle };\n }\n}\n\n \n\n \n \n \n \n\n\n \n\n \n \n ./display-grid.component.scss\n \n $border: var(--ion-border-standard);\n$border-radius: var(--ion-border-radius-standard, 15px);\n\n.display-grid {\n display: grid;\n}\n.grid-item {\n border: $border;\n border-radius: $border-radius;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplDisplayGridComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplDisplayGroupComponent.html":{"url":"components/TmplDisplayGroupComponent.html","title":"component - TmplDisplayGroupComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplDisplayGroupComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/display_group.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-display-group\n \n\n \n styleUrls\n ../tmpl-components-common.scss,./display_group.scss\n \n\n\n \n template\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n bgColor\n \n \n params\n \n \n type\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n clickDisplayGroup\n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n clickDisplayGroup\n \n \n \n \n \n \nclickDisplayGroup()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/display_group.ts:47\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/display_group.ts:51\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n bgColor\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display_group.ts:40\n \n \n\n\n \n \n \n \n \n \n \n \n params\n \n \n \n \n \n \n Type : literal type\n\n \n \n \n \n Default value : {} as any\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display_group.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n type\n \n \n \n \n \n \n Type : \"form\" | \"dashed_box\" | \"default\"\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/display_group.ts:41\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from \"../../../../utils\";\n\n@Component({\n selector: \"plh-tmpl-display-group\",\n template: ` \n \n \n \n \n \n \n \n \n \n `,\n styleUrls: [\"../tmpl-components-common.scss\", \"./display_group.scss\"],\n})\nexport class TmplDisplayGroupComponent extends TemplateBaseComponent implements OnInit {\n params: { style: string | null; offset: number } = {} as any;\n bgColor: string;\n type: \"form\" | \"dashed_box\" | \"default\";\n\n ngOnInit() {\n this.getParams();\n }\n\n clickDisplayGroup() {\n this.triggerActions(\"click\");\n }\n\n getParams() {\n this.params.style = getStringParamFromTemplateRow(this._row, \"style\", \"row\");\n this.params.offset = getNumberParamFromTemplateRow(this._row, \"offset\", 0);\n this.type = this.getTypeFromStyles(this.params.style || \"\");\n }\n\n private getTypeFromStyles(styles: string) {\n if (styles) {\n if (styles.includes(\"form\")) return \"form\";\n if (styles.includes(\"dashed_box\")) return \"dashed_box\";\n }\n return \"default\";\n }\n}\n\n \n\n\n \n \n ../tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n ./display_group.scss\n \n :host {\n width: 100%;\n}\n.display-group-wrapper {\n display: flex;\n align-items: center;\n}\n/// In flex box components should try to fill height, but not width (leave to flex property)\n.display-group-wrapper > plh-template-component {\n height: 100%;\n width: unset;\n}\n/// In columns we want the opposite, so that width full but not necessarily height\n.display-group-wrapper[data-param-style~=\"column\"] {\n flex-direction: column;\n}\n.display-group-wrapper[data-param-style~=\"column\"] > plh-template-component {\n height: unset;\n width: 100%;\n}\n.display-group-wrapper[data-param-style~=\"wrap\"] {\n flex-wrap: wrap;\n}\n\n// Default spacing within display groups. Adapted from `template-component.scss`\n.display-group-wrapper[data-param-style~=\"row\"] > plh-template-component:not([data-hidden=\"true\"]) {\n margin: 0;\n}\n.display-group-wrapper[data-param-style~=\"row\"]\n > plh-template-component:not([data-hidden=\"true\"])\n ~ plh-template-component:not([data-hidden=\"true\"]) {\n margin: 0 0 0 1em;\n}\n\n.display-group-wrapper[data-param-style~=\"column\"]\n > plh-template-component:not([data-hidden=\"true\"]) {\n margin: 0;\n}\n.display-group-wrapper[data-param-style~=\"column\"]\n > plh-template-component:not([data-hidden=\"true\"])\n ~ plh-template-component:not([data-hidden=\"true\"]) {\n margin: 1em 0 0 0;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplDisplayGroupComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplDrawerComponent.html":{"url":"components/TmplDrawerComponent.html","title":"component - TmplDrawerComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplDrawerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/drawer/drawer.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-drawer\n \n\n \n styleUrls\n ./drawer.component.scss\n \n\n\n\n \n templateUrl\n ./drawer.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n drawer\n \n \n isOpen\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n toggleDrawer\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/drawer/drawer.component.ts:20\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n toggleDrawer\n \n \n \n \n \n \ntoggleDrawer()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/drawer/drawer.component.ts:24\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n drawer\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('drawer')\n \n \n \n \n \n Defined in src/app/shared/components/template/components/drawer/drawer.component.ts:11\n \n \n\n\n \n \n \n \n \n \n \n \n isOpen\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/drawer/drawer.component.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/drawer/drawer.component.ts:14\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, ElementRef, ViewChild, OnInit } from \"@angular/core\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-drawer\",\n templateUrl: \"./drawer.component.html\",\n styleUrls: [\"./drawer.component.scss\"],\n})\nexport class TmplDrawerComponent extends TemplateBaseComponent implements OnInit {\n @ViewChild(\"drawer\") drawer: ElementRef;\n\n isOpen = false;\n style: string;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n }\n\n toggleDrawer() {\n const drawer = this.drawer.nativeElement;\n if (this.isOpen) {\n drawer.style.transition = \"transform .3s ease-out\";\n drawer.style.transform = \"\";\n this.isOpen = false;\n } else {\n drawer.style.transition = \"transform .3s ease-out\";\n drawer.style.transform = `translateY(${-this.getOpenHeight()}px)`;\n this.isOpen = true;\n }\n }\n\n private getOpenHeight() {\n const drawer = this.drawer.nativeElement;\n const handle = drawer.children[0];\n return drawer.offsetHeight - handle.offsetHeight - 10;\n }\n}\n\n \n\n \n \n\n \n \n {{ _row.value }}\n \n\n \n \n \n \n\n\n \n\n \n \n ./drawer.component.scss\n \n @use \"/src/theme/mixins\";\n\n$navigation-bar-height: var(--navigation-bar-height);\n$handle-height: var(--drawer-handle-height);\n// The value of the property --min-height applied to ion-toolbar, not directly accessible\n$header-height: 56px;\n\n// Element to remain inline within scrollable content to ensure no content lost behind drawer handle\n.bottom-spacer {\n width: 100%;\n height: $handle-height;\n}\n\n.drawer {\n position: fixed;\n top: calc(100vh - $header-height - $navigation-bar-height - $handle-height);\n left: 0px;\n width: 100%;\n border-style: solid solid none solid;\n border-color: var(--ion-color-primary);\n border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0;\n background-color: var(--ion-background-color);\n z-index: 100;\n\n &.secondary {\n background-color: var(--ion-color-secondary);\n border: none;\n .handle {\n &:active {\n background-color: var(--ion-color-secondary-600);\n }\n p {\n color: white;\n }\n .handle-icon {\n background-color: white;\n }\n }\n }\n\n .handle {\n height: $handle-height;\n @include mixins.flex-centered;\n flex-direction: column;\n border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0;\n p {\n text-align: center;\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-subtitle-small);\n color: var(--ion-color-primary);\n margin: 0px;\n }\n .handle-icon {\n width: 50px;\n height: 2px;\n margin: 8px 0;\n background-color: var(--ion-color-primary);\n }\n &:active {\n background-color: var(--ion-color-gray-100);\n }\n }\n\n .content {\n padding: var(--regular-padding) var(--regular-padding) 30px;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ _row.value }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplDrawerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplHelpIconComponent.html":{"url":"components/TmplHelpIconComponent.html","title":"component - TmplHelpIconComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplHelpIconComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/help-icon.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-help-icon\n \n\n\n \n styles\n \n .wrapper-icon {\n margin-top: var(--regular-margin);\n height: 100%;\n }\n ion-icon {\n width: 40px;\n height: 40px;\n --ionicon-stroke-width: 10px;\n }\n \n \n\n \n template\n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n icon_src\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/help-icon.ts:25\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/help-icon.ts:35\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/help-icon.ts:25\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"./base\";\n\n@Component({\n selector: \"plh-tmpl-help-icon\",\n template: ` \n \n `,\n styles: [\n `\n .wrapper-icon {\n margin-top: var(--regular-margin);\n height: 100%;\n }\n ion-icon {\n width: 40px;\n height: 40px;\n --ionicon-stroke-width: 10px;\n }\n `,\n ],\n})\nexport class TmplHelpIconComponent extends TemplateBaseComponent implements OnInit {\n public icon_src: string | null;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", \"help-circle-outline\");\n }\n}\n\n \n\n\n \n \n .wrapper-icon {\n margin-top: var(--regular-margin);\n height: 100%;\n }\n ion-icon {\n width: 40px;\n height: 40px;\n --ionicon-stroke-width: 10px;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplHelpIconComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplIconBannerComponent.html":{"url":"components/TmplIconBannerComponent.html","title":"component - TmplIconBannerComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplIconBannerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/icon-banner/icon-banner.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-icon-banner\n \n\n \n styleUrls\n ./icon-banner.component.scss\n \n\n\n\n \n templateUrl\n ./icon-banner.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n image_src\n \n \n style\n \n \n text\n \n \n title\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:18\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:27\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n image_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/icon-banner/icon-banner.component.ts:16\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { getStringParamFromTemplateRow } from \"../../../../utils\";\n\n@Component({\n selector: \"plh-icon-banner\",\n templateUrl: \"./icon-banner.component.html\",\n styleUrls: [\"./icon-banner.component.scss\"],\n})\nexport class TmplIconBannerComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n image_src: string | null;\n title: string | null;\n text: string | null;\n style: string | null;\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.image_src = getStringParamFromTemplateRow(this._row, \"image_src\", null);\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.text = getStringParamFromTemplateRow(this._row, \"text\", null);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"primary\");\n }\n}\n\n \n\n \n \n \n {{ title }}\n \n \n {{ text }}\n \n \n \n \n\n\n \n\n \n \n ./icon-banner.component.scss\n \n @use \"/src/theme/mixins\";\n\n.icon-banner-wrapper {\n width: 373px;\n min-height: 70px;\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-secondary);\n padding: 25px 39px 25px 25px;\n margin: 5px auto;\n position: relative;\n .title,\n .text {\n font-size: 19px;\n line-height: 22px;\n color: var(--ion-color-primary-contrast);\n }\n .title {\n font-weight: 700;\n margin-bottom: 10px;\n }\n .image {\n @include mixins.flex-centered;\n width: 73px;\n height: 73px;\n background: var(--ion-color-primary-contrast);\n border-radius: 50%;\n position: absolute;\n right: -6px;\n padding: 5px;\n top: -11px;\n img {\n width: 100%;\n height: 100%;\n }\n }\n}\n.primary {\n background: #0f8ab2;\n}\n.secondary {\n background: #ffcc03;\n}\n.red {\n background: #ff7a00;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ title }} {{ text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplIconBannerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplImageComponent.html":{"url":"components/TmplImageComponent.html","title":"component - TmplImageComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplImageComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/image.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-image\n \n\n \n styleUrls\n ./tmpl-components-common.scss\n \n\n \n styles\n \n :host {\n display: contents;\n }\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: var(--tiny-padding);\n }\n img[data-param-style~=\"no-padding\"] {\n padding: 0;\n }\n .tmpl-image-container {\n width: 100%;\n height: 100%;\n }\n \n \n\n \n template\n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n style\n \n \n \n \n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/shared/components/template/components/image.ts:35\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"./base\";\nimport { getStringParamFromTemplateRow } from \"../../../utils\";\n\n@Component({\n selector: \"plh-tmpl-image\",\n template: `\n \n \n \n `,\n styleUrls: [\"./tmpl-components-common.scss\"],\n styles: [\n `\n :host {\n display: contents;\n }\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: var(--tiny-padding);\n }\n img[data-param-style~=\"no-padding\"] {\n padding: 0;\n }\n .tmpl-image-container {\n width: 100%;\n height: 100%;\n }\n `,\n ],\n})\nexport class TmplImageComponent extends TemplateBaseComponent implements OnInit {\n style: \"no-padding\" = null;\n\n ngOnInit() {\n if (this._row && this._row.parameter_list) {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null) as any;\n }\n }\n}\n\n \n\n\n \n \n ./tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n :host {\n display: contents;\n }\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n padding: var(--tiny-padding);\n }\n img[data-param-style~=\"no-padding\"] {\n padding: 0;\n }\n .tmpl-image-container {\n width: 100%;\n height: 100%;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplImageComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplLatexComponent.html":{"url":"components/TmplLatexComponent.html","title":"component - TmplLatexComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplLatexComponent\n\n\n\n \n Info\n \n \n Source\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/latex/latex.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n template-latex-component\n \n\n\n\n \n template\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"src/app/shared/components/template/components/base\";\n\n@Component({\n selector: \"template-latex-component\",\n template: ` `,\n})\n/** Render text that includes LaTeX equations **/\nexport class TmplLatexComponent extends TemplateBaseComponent {}\n\n \n\n\n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplLatexComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplLottieAnimation.html":{"url":"components/TmplLottieAnimation.html","title":"component - TmplLottieAnimation","body":"\n \n\n\n\n\n\n Components\n \n TmplLottieAnimation\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/lottie-animation.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-lottie-animation\n \n\n \n styleUrls\n ./tmpl-components-common.scss\n \n\n \n styles\n \n :host {\n width: 100%;\n }\n \n \n\n \n template\n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n animOptions\n \n \n style\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n row\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateAssetService: TemplateAssetService)\n \n \n \n \n Defined in src/app/shared/components/template/components/lottie-animation.ts:26\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateAssetService\n \n \n TemplateAssetService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/lottie-animation.ts:32\n \n \n \n \n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n animOptions\n \n \n \n \n \n \n Type : AnimationOptions\n\n \n \n \n \n Defined in src/app/shared/components/template/components/lottie-animation.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/lottie-animation.ts:25\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(r: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/lottie-animation.ts:32\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n r\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport { TemplateBaseComponent } from \"./base\";\nimport { getStringParamFromTemplateRow } from \"../../../utils\";\nimport { AnimationOptions } from \"ngx-lottie\";\nimport { TemplateAssetService } from \"../services/template-asset.service\";\n\n@Component({\n selector: \"plh-tmpl-lottie-animation\",\n template: `\n \n \n \n `,\n styleUrls: [\"./tmpl-components-common.scss\"],\n styles: [\n `\n :host {\n width: 100%;\n }\n `,\n ],\n})\nexport class TmplLottieAnimation extends TemplateBaseComponent implements OnInit {\n style: string;\n animOptions: AnimationOptions;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n @Input() set row(r: FlowTypes.TemplateRow) {\n this.loadAnimation(r);\n }\n\n private loadAnimation(r: FlowTypes.TemplateRow) {\n // Loop by default\n const loop = r?.parameter_list?.loop === \"false\" ? false : true;\n if (r.value) {\n const path = this.templateAssetService.getTranslatedAssetPath(r.value);\n this.animOptions = {\n path,\n loop,\n };\n }\n }\n\n ngOnInit() {\n if (this._row && this._row.parameter_list) {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n }\n }\n}\n\n \n\n\n \n \n ./tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n :host {\n width: 100%;\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplLottieAnimation'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplNavigationBarComponent.html":{"url":"components/TmplNavigationBarComponent.html","title":"component - TmplNavigationBarComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplNavigationBarComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-navigation-bar\n \n\n \n styleUrls\n ./navigation-bar.component.scss\n \n\n\n\n \n templateUrl\n ./navigation-bar.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n buttonList\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts:25\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n buttonList\n \n \n \n \n \n \n Type : IButton[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/navigation-bar/navigation-bar.component.ts:19\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { getParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { parseValueListItems } from \"../../utils\";\n\ninterface IButton {\n image: string | null;\n text: string | null;\n target_template: string | null;\n name: string | null;\n}\n\n@Component({\n selector: \"plh-navigation-bar\",\n templateUrl: \"./navigation-bar.component.html\",\n styleUrls: [\"./navigation-bar.component.scss\"],\n})\nexport class TmplNavigationBarComponent extends TemplateBaseComponent implements OnInit {\n buttonList: IButton[];\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n const buttonListRaw: string[] = getParamFromTemplateRow(this._row, \"button_list\", []);\n this.buttonList = parseValueListItems(buttonListRaw);\n }\n}\n\n \n\n \n \n \n \n \n \n {{ button.text }}\n \n\n\n \n\n \n \n ./navigation-bar.component.scss\n \n @use \"src/theme/mixins\";\n\n$navigation-bar-height: var(--navigation-bar-height);\n\n.navigation-bar-wrapper {\n @include mixins.flex-space-between;\n height: $navigation-bar-height;\n padding: var(--tiny-margin) var(--tiny-margin);\n\n .button-wrapper {\n @include mixins.flex-centered;\n flex-direction: column;\n height: 80%;\n width: 30%;\n opacity: 50%;\n &.active-link {\n opacity: 100%;\n }\n\n .image-wrapper {\n @include mixins.flex-centered;\n height: 50%;\n width: 80%;\n\n img {\n height: 100%;\n }\n }\n\n p {\n color: var(--ion-color-primary-contrast);\n text-align: center;\n font-size: var(--font-size-text-tiny);\n margin-bottom: 0;\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ button.text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplNavigationBarComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplNumberComponent.html":{"url":"components/TmplNumberComponent.html","title":"component - TmplNumberComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplNumberComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/number-selector/number-selector.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-number-selector\n \n\n \n styleUrls\n ./number-selector.component.scss\n \n\n\n\n \n templateUrl\n ./number-selector.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n category_list\n \n \n category_size\n \n \n displayValue\n \n \n first_display_term\n \n \n height\n \n \n max_value\n \n \n min_value\n \n \n title\n \n \n valuesFromCategoryList\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n checkIfContainsNextArrayItem\n \n \n getMinOrMaxFromCategoryListItem\n \n \n getParams\n \n \n Async\n increment\n \n \n updateData\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:26\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n checkIfContainsNextArrayItem\n \n \n \n \n \n \ncheckIfContainsNextArrayItem(array: string[], expression: \"gt\" | \"lt\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:102\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n array\n \n string[]\n \n\n \n No\n \n\n\n \n \n expression\n \n \"gt\" | \"lt\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : boolean\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getMinOrMaxFromCategoryListItem\n \n \n \n \n \n \ngetMinOrMaxFromCategoryListItem(item: string)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:95\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n item\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : ICategoryList\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:42\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Async\n increment\n \n \n \n \n \n \n \n increment(param: \"gt\" | \"lt\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:64\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n param\n \n \"gt\" | \"lt\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n updateData\n \n \n \n \n \n \nupdateData(param: \"gt\" | \"lt\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:109\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n param\n \n \"gt\" | \"lt\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n category_list\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n category_size\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n displayValue\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n first_display_term\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n height\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n max_value\n \n \n \n \n \n \n Type : number | null\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n min_value\n \n \n \n \n \n \n Type : number | null\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:29\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n valuesFromCategoryList\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/number-selector/number-selector.component.ts:36\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"../../../../model\";\nimport {\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n getParamFromTemplateRow,\n} from \"src/app/shared/utils\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\n\ninterface ICategoryList {\n from: number;\n to: number;\n}\n\n@Component({\n selector: \"plh-number-selector\",\n templateUrl: \"./number-selector.component.html\",\n styleUrls: [\"./number-selector.component.scss\"],\n})\nexport class TmplNumberComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n @Input() parent: TemplateContainerComponent;\n\n title: string | null;\n min_value: number | null = 0;\n displayValue: any = 0;\n max_value: number | null = 0;\n category_list: string[];\n height: string;\n category_size: number;\n first_display_term: number;\n valuesFromCategoryList: string[];\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.category_list = getParamFromTemplateRow(this._row, \"category_list\", null);\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.height = getStringParamFromTemplateRow(this._row, \"height\", \"short\");\n this.height = this.height === \"short\" || \"normal\" ? this.height : \"short\";\n if (this.category_list) {\n this.valuesFromCategoryList = this.category_list;\n this.first_display_term =\n getNumberParamFromTemplateRow(this._row, \"first_display_term\", 1) - 1;\n this.displayValue = this.valuesFromCategoryList[this.first_display_term];\n } else {\n this.min_value = getNumberParamFromTemplateRow(this._row, \"min_value\", 0);\n this.max_value = getNumberParamFromTemplateRow(this._row, \"max_value\", 6);\n this.category_size = getNumberParamFromTemplateRow(this._row, \"category_size\", 1);\n this.displayValue = this.min_value;\n }\n // assign any previously saved value\n if (this._row.value) {\n this.displayValue = this._row.value;\n }\n }\n\n async increment(param: \"gt\" | \"lt\") {\n if (this.category_list) {\n if (this.checkIfContainsNextArrayItem(this.valuesFromCategoryList, param)) {\n this.updateData(param);\n }\n } else {\n if (param === \"gt\") {\n if (this.displayValue + this.category_size this.min_value - this.category_size &&\n this.displayValue - this.category_size >= this.min_value\n ) {\n if (this.displayValue === 1) {\n this.displayValue--;\n } else {\n this.displayValue -= this.category_size;\n }\n }\n }\n }\n await this.setValue(this.displayValue);\n this.triggerActions(\"changed\");\n }\n\n getMinOrMaxFromCategoryListItem(item: string): ICategoryList {\n return {\n from: Number(item.split(\"-\")[0].trim()),\n to: Number(item.split(\"-\")[1].trim()),\n };\n }\n\n checkIfContainsNextArrayItem(array: string[], expression: \"gt\" | \"lt\") {\n return expression === \"gt\"\n ? this.first_display_term \n \n\n \n \n \n \n \n \n \n \n {{ title }}\n {{ displayValue }}\n \n {{ _row.value }}\n \n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./number-selector.component.scss\n \n @use \"/src/theme/mixins\";\n.container {\n width: calc(100% - 10px);\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-secondary);\n @include mixins.flex-space-between;\n padding: 0 var(--tiny-padding);\n margin-left: var(--tiny-margin);\n margin-right: var(--tiny-margin);\n .left,\n .right {\n flex: 1 1 20%;\n }\n .center {\n flex: 1 1 60%;\n }\n .right {\n display: flex;\n justify-content: flex-end;\n }\n ion-button {\n --background: transparent;\n --box-shadow: none;\n border-radius: var(--ion-border-radius-rounded);\n border: var(--ion-border-standard);\n @include mixins.tiny-square;\n @include mixins.flex-centered;\n .line {\n position: absolute;\n width: 8px;\n height: 2px;\n background: var(--ion-color-primary);\n }\n .plus {\n transform: rotate(90deg);\n }\n }\n .center {\n @include mixins.flex-centered;\n flex-direction: column;\n .title,\n .num {\n text-align: center;\n font-weight: var(--font-weight-standard);\n color: var(--ion-color-primary);\n max-width: var(--number-selector-title-max-width);\n }\n .category {\n max-width: var(--number-selector-category-max-width);\n span {\n font-weight: var(--font-weight-standard);\n font-size: var(--font-size-text-small);\n line-height: var(--line-height-text-tiny);\n color: var(--ion-color-primary);\n }\n }\n }\n}\n.short {\n min-height: var(--number-selector-short-min-heigh);\n .center {\n .title,\n .num {\n font-size: var(--number-selector-short-font-size);\n }\n }\n ion-button {\n @include mixins.small-square;\n .line {\n width: 15px;\n height: 3px;\n }\n }\n}\n.normal {\n min-height: var(--number-selector-mormal-min-height);\n .center {\n .title,\n .num {\n font-size: var(--number-selector-normal-font-size);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ title }} {{ displayValue }} {{ _row.value }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplNumberComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplOdkFormComponent.html":{"url":"components/TmplOdkFormComponent.html","title":"component - TmplOdkFormComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplOdkFormComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/odk-form/odk-form.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n \n encapsulation\n ViewEncapsulation.None\n \n\n\n\n\n\n\n\n\n\n \n selector\n tmpl-odk-form\n \n\n \n styleUrls\n ./odk-form.component.scss\n \n\n\n\n \n templateUrl\n ./odk-form.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n parameter_list\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Public\n Async\n save\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateAssetService: TemplateAssetService)\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/odk-form.component.ts:76\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateAssetService\n \n \n TemplateAssetService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Public\n Async\n save\n \n \n \n \n \n \n \n save(opts: object)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/odk-form.component.ts:104\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n Default value\n \n \n \n \n opts\n \n object\n \n\n \n No\n \n\n \n { draft: false }\n \n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n parameter_list\n \n \n \n \n \n \n Type : IODKFormComponentParameters\n\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/odk-form.component.ts:70\n \n \n\n \n \n Authoring parameters\n\n \n \n\n \n \n\n\n\n\n\n \n import { Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\n\nimport Events from \"./libs/enketo/js/event\";\nimport { Form } from \"./libs/enketo/js/form\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n/** Enketo-transformed form representation */\ninterface IEnketoFormData {\n enketoId: string;\n externalData: [];\n /** html string representation of form */\n form: string;\n hash: string;\n languageMap: {};\n maxSize: number;\n media: {};\n /** xml string representation of model */\n model: string;\n theme: \"grid\";\n}\n\ninterface IFormEntry {\n created: number;\n draft: boolean;\n enketoId: string;\n files: any[];\n instanceId: string;\n name: string;\n // TODO - check if actually updated\n updated: number;\n xml: string;\n}\n\ninterface IEventFormSaved {\n entry: IFormEntry;\n}\n\ninterface IODKFormComponentParameters {\n /**\n * Path to asset file containing form data in enketo-transformed json format\n */\n form_asset?: string;\n}\n\n@Component({\n selector: \"tmpl-odk-form\",\n templateUrl: \"./odk-form.component.html\",\n styleUrls: [\"./odk-form.component.scss\"],\n encapsulation: ViewEncapsulation.None,\n})\n/**\n * A lightweight port of enketo-core to render a form within an angular component\n *\n * NOTE - this component is also under development as part of an external repo,\n * and as such the implementation included may be lacking features\n *\n * It is preferable to import from external project when available to remove additional\n * imports as noted below\n *\n * Opt-Out (additional changes to make if removing component)\n * - Remove modules:\n * jquery jquery-touchswipe mergexml/mergexml bootstrap-datepicker signature_pad html5sortable node-forge\n * - Remove js file import in tsconfig.app.json\n * - Reduce build budget styles 200kb -> 16kb\n * - Reduce build budget js 5MB -> 4MB\n */\nexport class TmplOdkFormComponent extends TemplateBaseComponent implements OnInit {\n /** Authoring parameters */\n public parameter_list: IODKFormComponentParameters;\n\n /**\n * Form container element binding to render form\n * @ignore\n */\n @ViewChild(\"formContainerEl\", { static: true }) formContainerEl: ElementRef;\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.processParameterList();\n }\n\n private async processParameterList() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n // load form from form_asset parameter\n const { form_asset } = this.parameter_list;\n if (!form_asset) {\n console.error(\"[odk_form] form_asset parameter required\");\n return;\n }\n const formData: IEnketoFormData = await this.templateAssetService.fetchAsset(form_asset);\n if (!formData) {\n console.error(\"[odk_form] form_asset does not exist\");\n return;\n }\n this.loadForm(formData);\n }\n\n private enketoForm: Form;\n\n public async save(opts = { draft: false }) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private get xmlFormValue() {\n return this.enketoForm.getDataStr();\n }\n\n private async handleEventDataUpdate(e: ReturnType) {\n await this.setValue(this.xmlFormValue);\n await this.triggerActions(\"changed\");\n }\n\n private async handleEventXmlFormChange(e: ReturnType) {\n // Value saved in autoSave method of https://github.com/enketo/enketo-express/blob/master/public/js/src/module/controller-webform.js\n // await this.setValue(this.xmlFormValue);\n }\n\n /**\n * Load the form xml and data models and render intial form components\n * https://github.com/enketo/enketo-core#usage-as-a-library\n */\n private loadForm(formData: IEnketoFormData) {\n const { formContainerEl } = this;\n const { form, model } = formData;\n console.log({ form, model, formContainerEl });\n if (form && model && formContainerEl) {\n this.formContainerEl.nativeElement.innerHTML = form;\n const formEl = this.formContainerEl.nativeElement.querySelector(\"form\");\n if (formEl) {\n this.enketoForm = new Form(formEl, model, {});\n // Initialize the form and capture any load errors\n let loadErrors = this.enketoForm.init();\n if (loadErrors.length > 0) {\n console.error(loadErrors);\n }\n // If desired, scroll to a specific question with any XPath location expression,\n // and aggregate any loadErrors.\n loadErrors = loadErrors.concat(this.enketoForm.goTo(\"//repeat[3]/node\"));\n\n // Additional events can be bound directly to form (as opposed to component-propogated)\n this.enketoForm.model.events.addEventListener(\n Events.DataUpdate().type,\n this.handleEventDataUpdate.bind(this)\n );\n\n // Extract updated form xml on change (triggered at document and form level)\n this.enketoForm.view.html.addEventListener(\n Events.XFormsValueChanged().type,\n this.handleEventXmlFormChange.bind(this)\n );\n }\n }\n }\n}\n\n \n\n \n \n\n\n\n \n \n Save Draft\n \n \n ✔️\n Submit\n \n \n\n\n\n\n \n \n \n \n \n \n \n\n\n \n\n \n \n ./odk-form.component.scss\n \n @import \"./libs/enketo/sass/grid/grid.scss\";\n\n// apply :host style bindings for non-encapsulated component\ntmpl-odk-form {\n background: white;\n padding: 8px;\n display: block;\n position: relative;\n}\n// apply margin to fit section dropdown arrows. Breakpoints defined in\n// ./libs/enketo/sass/core/_responsive.scss\ntmpl-odk-form form {\n margin-left: 30px;\n @media screen and (max-width: 600px) {\n margin-left: 24px;\n }\n}\n#form-title {\n margin: 0;\n}\n#form-unavailable {\n // give form a chance to load/render before showing unavailable message\n animation: appearDelayed 2s;\n -webkit-animation: appearDelayed 2s;\n -moz-animation: appearDelayed 2s;\n -o-animation: appearDelayed 2s;\n -ms-animation: appearDelayed 2s;\n}\n\n.enketo-logo-container {\n display: flex;\n justify-content: end;\n align-items: center;\n margin-bottom: -25px;\n font-size: 18px;\n}\n.enketo-logo {\n height: 25px;\n}\n// HACK - show all form sections (need to add buttons for page nave)\n.pages.or .or-group-data {\n display: block !important;\n}\n// HACK - using emojis instead of icons so recolor as required\n.icon {\n color: transparent;\n text-shadow: 0 0 0 white;\n margin-left: -12px;\n margin-right: 12px;\n}\n\n#form-footer {\n display: flex;\n padding: 20px;\n justify-content: center;\n}\n#form-footer > button {\n min-width: 180px;\n min-height: 48px;\n margin: 0 10px;\n}\n\n// Animations\n@keyframes appearDelayed {\n 0% {\n opacity: 0;\n }\n 90% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Save Draft ✔️ Submit '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplOdkFormComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplParentPointBoxComponent.html":{"url":"components/TmplParentPointBoxComponent.html","title":"component - TmplParentPointBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplParentPointBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/points-item/points-item.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-points-item\n \n\n \n styleUrls\n ./points-item.component.scss\n \n\n\n\n \n templateUrl\n ./points-item.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n animCelebrationOptions\n \n \n animOptions\n \n \n icon_src\n \n \n info_icon_src\n \n \n item\n \n \n lottie_src\n \n \n play_celebration\n \n \n showCelebrationAnimation\n \n \n star\n \n \n text\n \n \n value\n \n \n video_src\n \n \n wasClicked\n \n \n windowWidth\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n clickInfo\n \n \n Async\n clickPointItem\n \n \n getParams\n \n \n onResize\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n template\n \n \n \n \n\n\n\n \n \n HostListeners\n \n \n \n \n \n \n window:resize\n \n \n \n \n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(templateAssetService: TemplateAssetService)\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:43\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n templateAssetService\n \n \n TemplateAssetService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:26\n \n \n \n \n\n\n\n \n HostListeners \n \n \n \n \n \n window:resize\n \n \n \n \n \n \n Arguments : '$event' \n \n \n \n \nwindow:resize(event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:41\n \n \n\n\n \n \n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n clickInfo\n \n \n \n \n \n \n \n clickInfo(event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:111\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n event\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Async\n clickPointItem\n \n \n \n \n \n \n \n clickPointItem()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:88\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:75\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n onResize\n \n \n \n \n \n \nonResize(event)\n \n \n\n \n \n Decorators : \n \n @HostListener('window:resize', ['$event'])\n \n \n\n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:41\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n event\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n animCelebrationOptions\n \n \n \n \n \n \n Type : AnimationOptions\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:38\n \n \n\n\n \n \n \n \n \n \n \n \n animOptions\n \n \n \n \n \n \n Type : AnimationOptions\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:37\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:29\n \n \n\n\n \n \n \n \n \n \n \n \n info_icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n item\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('item', {static: false})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n lottie_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n play_celebration\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n showCelebrationAnimation\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:40\n \n \n\n\n \n \n \n \n \n \n \n \n star\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('star', {static: false})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n text\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : number | null\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:36\n \n \n\n\n \n \n \n \n \n \n \n \n video_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n wasClicked\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n windowWidth\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/points-item/points-item.component.ts:33\n \n \n\n\n \n \n\n\n\n\n\n \n import {\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n ViewChild,\n} from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\nimport { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from \"../../../../utils\";\nimport { AnimationOptions } from \"ngx-lottie\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-points-item\",\n templateUrl: \"./points-item.component.html\",\n styleUrls: [\"./points-item.component.scss\"],\n})\n// TODO - why does the class name not match the file name??\nexport class TmplParentPointBoxComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n @Input() template: FlowTypes.Template;\n @ViewChild(\"star\", { static: false }) star: ElementRef;\n @ViewChild(\"item\", { static: false }) item: ElementRef;\n icon_src: string | null;\n info_icon_src: string | null;\n lottie_src: string | null;\n video_src: string | null;\n windowWidth: number;\n text: string | null;\n wasClicked: boolean = false;\n value: number | null = 0;\n animOptions: AnimationOptions;\n animCelebrationOptions: AnimationOptions;\n play_celebration: boolean;\n showCelebrationAnimation = false;\n @HostListener(\"window:resize\", [\"$event\"]) onResize(event) {\n this.windowWidth = event.target.innerWidth - 10;\n }\n\n constructor(private templateAssetService: TemplateAssetService) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n if (this.lottie_src) {\n this.lottie_src = this.templateAssetService.getTranslatedAssetPath(this.lottie_src);\n this.animOptions = {\n path: this.lottie_src,\n name: this.text,\n autoplay: true,\n loop: true,\n };\n }\n const celebrationAnimationPath = this.templateAssetService.getTranslatedAssetPath(\n \"/plh_lottie/habits/cascading_stars.json\"\n );\n this.animCelebrationOptions = {\n path: celebrationAnimationPath,\n name: \"celebration\",\n autoplay: true,\n loop: false,\n rendererSettings: {\n // svg scaling options: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio\n preserveAspectRatio: \"xMinYMin slice\",\n },\n };\n }\n\n getParams() {\n this.video_src = getStringParamFromTemplateRow(this._row, \"video_src\", null);\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", null);\n this.info_icon_src = getStringParamFromTemplateRow(this._row, \"info_icon_src\", null);\n this.lottie_src = getStringParamFromTemplateRow(this._row, \"lottie_src\", null);\n this.play_celebration = getBooleanParamFromTemplateRow(this._row, \"play_celebration\", true);\n this.text = getStringParamFromTemplateRow(this._row, \"text\", null);\n this.windowWidth = window.innerWidth - 10;\n if (!this._row.value) {\n this._row.value = 0;\n }\n }\n\n async clickPointItem() {\n if (this._row.disabled) {\n return;\n }\n this._row.value = parseInt(this._row.value) + 1;\n this.value = this._row.value;\n this.star.nativeElement.classList.add(\"on-add\");\n if (this.play_celebration) {\n this.showCelebrationAnimation = true;\n }\n setTimeout((_) => {\n this.star.nativeElement.classList.remove(\"on-add\");\n this.showCelebrationAnimation = false;\n }, 1000);\n if (!this.wasClicked) {\n this.item.nativeElement.classList.add(\"complete\");\n }\n this.wasClicked = true;\n await this.setValue(this.value);\n await this.triggerActions(\"click\");\n await this.triggerActions(\"changed\");\n }\n\n async clickInfo(event) {\n event.stopPropagation();\n await this.triggerActions(\"info_click\");\n }\n}\n\n \n\n \n \n \n \n \n \n \n \n \n {{ _row.value }}\n \n \n \n \n \n \n \n \n \n \n \n \n {{ text }}\n \n \n\n\n \n\n \n \n ./points-item.component.scss\n \n @use \"/src/theme/mixins\";\n\n$item-background: var(--points-item-background, var(--ion-color-primary-200));\n$item-background-complete: var(\n --points-item-background-complete,\n var(--ion-color-primary-contrast)\n);\n$item-border: var(--points-item-border, none);\n\n.wrapper-point {\n padding: var(--regular-padding) 5px;\n .item {\n @include mixins.flex-centered;\n margin: 0 auto;\n padding: 20px 0;\n width: var(--points-item-width);\n max-width: 100%; // Don't allow overlap\n height: var(--points-item-height);\n background: $item-background;\n filter: drop-shadow(var(--ion-default-box-shadow));\n border: 1px solid $item-border;\n border-radius: var(--ion-border-radius-standard);\n position: relative;\n flex-direction: column;\n\n .star {\n @include mixins.flex-centered;\n position: absolute;\n left: -12px;\n top: -16px;\n .star-value {\n padding-top: 4px;\n font-weight: var(--font-weight-standard);\n font-size: var(--line-height-text-tiny);\n color: var(--ion-color-primary);\n position: absolute;\n }\n img {\n width: 47px;\n height: 47px;\n }\n }\n .info-button {\n position: absolute;\n right: 6px;\n top: 6px;\n img {\n width: 28px;\n height: 28px;\n }\n }\n .image {\n max-height: 100%;\n img {\n width: 100%;\n height: 100%;\n }\n }\n .text {\n margin: var(--tiny-margin) 0;\n font-weight: var(--font-weight-standard);\n font-size: var(--font-size-text-small);\n line-height: var(--line-height-text-small);\n text-align: center;\n color: var(--ion-color-primary);\n padding: 0 var(--tiny-padding);\n }\n }\n .complete {\n background: $item-background-complete;\n }\n}\n.celebrationAnim {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n width: 100%;\n}\n.on-add {\n animation: bounce;\n animation-duration: 1s;\n animation-iteration-count: 1;\n}\n\n@keyframes bounce {\n from,\n 20%,\n 53%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n transform: translate3d(0, -30px, 0) scaleY(1.1);\n }\n\n 70% {\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n transform: translate3d(0, -15px, 0) scaleY(1.05);\n }\n\n 80% {\n transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: translate3d(0, 0, 0) scaleY(0.95);\n }\n\n 90% {\n transform: translate3d(0, -4px, 0) scaleY(1.02);\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ _row.value }} {{ text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplParentPointBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplParentPointCounterComponent.html":{"url":"components/TmplParentPointCounterComponent.html","title":"component - TmplParentPointCounterComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplParentPointCounterComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n OnChanges\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-parent-point-counter\n \n\n \n styleUrls\n ./parent-point-counter.component.scss\n \n\n\n\n \n templateUrl\n ./parent-point-counter.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n count\n \n \n Public\n icon_src\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts:15\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts:29\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n count\n \n \n \n \n \n \n Type : number | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/parent-point-counter/parent-point-counter.component.ts:14\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnChanges, OnInit } from \"@angular/core\";\nimport { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-parent-point-counter\",\n templateUrl: \"./parent-point-counter.component.html\",\n styleUrls: [\"./parent-point-counter.component.scss\"],\n})\nexport class TmplParentPointCounterComponent\n extends TemplateBaseComponent\n implements OnInit, OnChanges\n{\n public icon_src: string | null;\n public count: number | null;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n ngOnChanges() {\n this.count = getNumberParamFromTemplateRow(this._row, \"count\", null);\n }\n\n getParams() {\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", null);\n this.count = getNumberParamFromTemplateRow(this._row, \"count\", null);\n }\n}\n\n \n\n \n \n \n \n \n = 0\" class=\"count\">{{ count }}\n \n {{ _row.value }}\n \n\n\n \n\n \n \n ./parent-point-counter.component.scss\n \n .point_wrapper {\n display: flex;\n justify-content: center;\n .container {\n display: flex;\n align-items: center;\n width: 100%;\n }\n .icon {\n flex: 1;\n max-width: 40px;\n max-height: 40px;\n position: relative;\n margin-right: var(--regular-margin);\n margin-left: var(--regular-margin);\n img {\n width: 100%;\n }\n .count {\n position: absolute;\n color: var(--ion-color-primary);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n .text {\n flex: 4;\n font-size: var(--font-size-text-large);\n color: var(--ion-color-primary);\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' = 0\" class=\"count\">{{ count }} {{ _row.value }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplParentPointCounterComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplPdfComponent.html":{"url":"components/TmplPdfComponent.html","title":"component - TmplPdfComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplPdfComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/pdf/pdf.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n \n encapsulation\n ViewEncapsulation.None\n \n\n\n\n\n\n\n\n\n\n \n selector\n plh-pdf\n \n\n \n styleUrls\n ./pdf.component.scss\n \n\n\n\n \n templateUrl\n ./pdf.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n errorMessage\n \n \n legacyBrowser\n \n \n startingPage\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/pdf/pdf.component.ts:17\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/pdf/pdf.component.ts:32\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n errorMessage\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/pdf/pdf.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n legacyBrowser\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/pdf/pdf.component.ts:16\n \n \n\n\n \n \n \n \n \n \n \n \n startingPage\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/pdf/pdf.component.ts:15\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { pdfDefaultOptions } from \"ngx-extended-pdf-viewer\";\nimport { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { isLegacyBrowser } from \"src/app/shared/utils\";\n\n@Component({\n selector: \"plh-pdf\",\n templateUrl: \"./pdf.component.html\",\n styleUrls: [\"./pdf.component.scss\"],\n // Allow override of global pdf viewer styles\n encapsulation: ViewEncapsulation.None,\n})\nexport class TmplPdfComponent extends TemplateBaseComponent implements OnInit {\n startingPage: number;\n legacyBrowser = false;\n errorMessage: string;\n\n constructor() {\n super();\n // name of folder pdf viewer assets copied to as declared in `angular.json`\n pdfDefaultOptions.assetsFolder = \"assets/comp-pdf\";\n // additional locales are currently excluded from main build\n pdfDefaultOptions.locale = \"en-GB\";\n }\n\n ngOnInit() {\n this.getParams();\n this.legacyBrowser = isLegacyBrowser();\n }\n\n getParams() {\n this.startingPage = getNumberParamFromTemplateRow(this._row, \"starting_page\", 1);\n this.errorMessage = getStringParamFromTemplateRow(\n this._row,\n \"error_message\",\n \"Embedded PDFs are not supported in this browser, please use an up-to-date version of Google Chrome to view\"\n );\n }\n}\n\n \n\n \n \n \n \n \n {{ errorMessage }}\n \n\n\n\n\n \n \n \n \n \n \n\n\n \n\n \n \n ./pdf.component.scss\n \n ngx-extended-pdf-viewer {\n #toolbarViewer {\n background-color: var(--ion-color-primary);\n }\n #mainContainer {\n min-width: 250px !important;\n }\n .toolbarButton {\n color: var(--ion-color-primary-contrast) !important;\n }\n}\n\n.pdf-viewer > .error-message {\n font-size: var(--buttons-font-size-small);\n font-weight: var(--font-weight-standard);\n color: var(--ion-color-primary);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ errorMessage }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplPdfComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplQRCodeComponent.html":{"url":"components/TmplQRCodeComponent.html","title":"component - TmplQRCodeComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplQRCodeComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/qr-code/qr-code.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-qr-code\n \n\n \n styleUrls\n ./qr-code.component.scss\n \n\n\n\n \n templateUrl\n ./qr-code.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n \n import { Component } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-qr-code\",\n templateUrl: \"./qr-code.component.html\",\n styleUrls: [\"./qr-code.component.scss\"],\n})\nexport class TmplQRCodeComponent extends TemplateBaseComponent {}\n\n \n\n \n \n \n\n\n \n\n \n \n ./qr-code.component.scss\n \n @use \"/src/theme/mixins\";\n\n.image-wrapper {\n @include mixins.flex-centered;\n width: 100%;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplQRCodeComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplRadioButtonGridComponent.html":{"url":"components/TmplRadioButtonGridComponent.html","title":"component - TmplRadioButtonGridComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplRadioButtonGridComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-radio-button-grid\n \n\n \n styleUrls\n ./radio-button-grid.component.scss\n \n\n\n\n \n templateUrl\n ./radio-button-grid.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n parameter_list\n \n \n \n \n\n\n \n \n Inputs\n \n \n \n \n \n \n row\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n \n \n \n \n\n\n\n \n Inputs\n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts:59\n \n \n \n \n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n parameter_list\n \n \n \n \n \n \n Type : IRadioButtonGridParams\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts:57\n \n \n\n \n \n Authoring parameters\n\n \n \n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(row: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-button-grid/radio-button-grid.component.ts:59\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n row\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import { Component, Input } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { FlowTypes, ITemplateRowProps } from \"../../models\";\nimport { getParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { objectToArray } from \"../../utils\";\n\ninterface IAnswerListItem {\n name: string;\n image?: string;\n text?: string;\n}\n\ninterface IRadioButtonGridParams {\n /** List of options presented as radio items */\n answer_list: IAnswerListItem[];\n /**\n * Minimum item width, will increase to fit grid.\n * Default '200px'\n **/\n item_width: string;\n /**\n * Maximum grid width, if specified will center items in available space.\n * Default '100%'\n **/\n grid_width: string;\n /**\n * Spacing between grid items.\n * Default '16px'\n **/\n grid_gap: string;\n}\n\n@Component({\n selector: \"plh-radio-button-grid\",\n templateUrl: \"./radio-button-grid.component.html\",\n styleUrls: [\"./radio-button-grid.component.scss\"],\n})\nexport class TmplRadioButtonGridComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps\n{\n /**\n * Computed item array from input parameters\n * @ignore\n */\n public radioItems: Array;\n\n /**\n * Computed grid style from input parameters\n * @ignore\n */\n public gridStyle: Partial;\n\n /**\n * Authoring parameters\n */\n public parameter_list: IRadioButtonGridParams;\n\n @Input() set row(row: FlowTypes.TemplateRow) {\n this._row = row;\n this.setParams();\n }\n\n /**\n * S\n * @ignore\n */\n public async handleItemClick(item: IAnswerListItem) {\n await this.setValue(item.name);\n this.triggerActions(\"changed\");\n }\n\n private setParams() {\n this.parameter_list = this._row.parameter_list || ({} as any);\n this.radioItems = this.generateItemList();\n this.gridStyle = this.generateGridStyle();\n }\n\n /**\n * Create a list of styles to be passed into ngStyle\n * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/\n */\n private generateGridStyle() {\n const minItemWidth = this.parameter_list.item_width || \"200px\";\n const maxGridWidth = this.parameter_list.grid_width || \"100%\";\n const gridGap = this.parameter_list.grid_gap || \"16px\";\n\n const style: Partial = {\n // center grid with maximum width\n maxWidth: maxGridWidth,\n margin: \"auto\",\n // apply fixed gap between grid items\n gap: gridGap,\n // fit columns with target item width\n gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`,\n // make all rows same height\n gridAutoRows: \"1fr\",\n };\n return style;\n }\n\n /**\n * Adapted from radio-group.component\n * Convert input answer_list to rendered item list\n */\n private generateItemList() {\n let answerList = getParamFromTemplateRow(this._row, \"answer_list\", []);\n // Convert if datalist input (hashmap to array)\n if (answerList.constructor === {}.constructor) {\n answerList = objectToArray(answerList);\n }\n const radioItems: IAnswerListItem[] = answerList.map(\n (item: string | Record) => {\n if (typeof item === \"string\") {\n return this.parseAnswerListItemString(item);\n }\n return item as any;\n }\n );\n return radioItems;\n }\n\n /**\n * convert string to relevant mappings\n * TODO - CC 2023-03-16 - should ideally convert in parsers instead of at runtime\n */\n private parseAnswerListItemString(item: string) {\n const itemObj: IAnswerListItem = {} as any;\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n itemObj[field] = value;\n }\n });\n return itemObj;\n }\n}\n\n \n\n \n \n \n \n \n \n {{ item.text }}\n \n\n\n \n\n \n \n ./radio-button-grid.component.scss\n \n // @use \"/src/theme/mixins\";\n\n$background-selected: var(\n --radio-group-background-selected,\n var(--gradient-primary-light-vertical)\n);\n$border: var(--ion-border-standard);\n$border-radius: var(--ion-border-radius-standard);\n$text-size: var(--radio-button-font-size, 1.25rem);\n$text-color: var(--radio-button-font-color, var(--ion-color-primary));\n\n.radio-grid {\n display: grid;\n}\n.item {\n border: $border;\n border-radius: 15px;\n text-align: center;\n padding: 8px;\n background: white;\n cursor: pointer;\n}\n.item[data-selected=\"true\"] {\n background: $background-selected;\n}\n.item-text {\n font-size: $text-size;\n color: $text-color;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ item.text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplRadioButtonGridComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplRadioGroupComponent.html":{"url":"components/TmplRadioGroupComponent.html","title":"component - TmplRadioGroupComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplRadioGroupComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/radio-group/radio-group.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n OnDestroy\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-radio-group\n \n\n \n styleUrls\n ./radio-group.component.scss\n \n\n\n\n \n templateUrl\n ./radio-group.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n answer_list\n \n \n arrayOfBtn\n \n \n flexWidth\n \n \n groupName\n \n \n labelImage\n \n \n options_per_row\n \n \n radioButtonType\n \n \n style\n \n \n windowWidth\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n createArrayBtnElement\n \n \n getFlexWidth\n \n \n getParams\n \n \n Public\n Async\n handleRadioButtonClick\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n changeTheme\n \n \n parent\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n changeTheme\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:37\n \n \n \n \n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:38\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n createArrayBtnElement\n \n \n \n \n \n \ncreateArrayBtnElement(answer_list: string[])\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:85\n \n \n\n\n \n \n Answer lists are formatted as strings with to indicate properties, e.g.\n[\n\"name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg\",\n\"name:unhappy | image:plh_images/stickers/faces/unhappy.svg\"\n]\nConvert to an object array, with key value pairs extracted from the string values\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n answer_list\n \n string[]\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getFlexWidth\n \n \n \n \n \n \ngetFlexWidth()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:147\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:56\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n handleRadioButtonClick\n \n \n \n \n \n \n \n handleRadioButtonClick(selectedValue: string)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:72\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n selectedValue\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n answer_list\n \n \n \n \n \n \n Type : string[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:47\n \n \n\n\n \n \n \n \n \n \n \n \n arrayOfBtn\n \n \n \n \n \n \n Type : Array\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:40\n \n \n\n\n \n \n \n \n \n \n \n \n flexWidth\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:44\n \n \n\n\n \n \n \n \n \n \n \n \n groupName\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n labelImage\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('labelImage', {static: false, read: true})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n options_per_row\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:48\n \n \n\n\n \n \n \n \n \n \n \n \n radioButtonType\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:49\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:50\n \n \n\n\n \n \n \n \n \n \n \n \n windowWidth\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/radio-group/radio-group.component.ts:42\n \n \n\n\n \n \n\n\n\n\n\n \n import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\nimport {\n getNumberParamFromTemplateRow,\n getParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { ReplaySubject } from \"rxjs\";\nimport { objectToArray } from \"../../utils/template-utils\";\n\ninterface IButton {\n name: string | null;\n image: string | null;\n text: string | null;\n image_checked: string | null;\n}\n\n@Component({\n selector: \"plh-radio-group\",\n templateUrl: \"./radio-group.component.html\",\n styleUrls: [\"./radio-group.component.scss\"],\n})\nexport class TmplRadioGroupComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit, OnDestroy\n{\n @Input() changeTheme: EventEmitter;\n @Input() parent: TemplateContainerComponent;\n @ViewChild(\"labelImage\", { static: false, read: true }) labelImage: ElementRef;\n arrayOfBtn: Array;\n groupName: string;\n windowWidth: number;\n private componentDestroyed$ = new ReplaySubject(1);\n flexWidth: string;\n\n // Parameters\n answer_list: string[];\n options_per_row: number;\n radioButtonType: string | null;\n style: string;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n const row = this._row;\n // extract properties from parameters\n this.radioButtonType = getParamFromTemplateRow(row, \"radio_button_type\", \"btn_text\");\n this.options_per_row = getNumberParamFromTemplateRow(this._row, \"options_per_row\", 3);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n this.windowWidth = window.innerWidth;\n\n // convert string answer lists to formatted objects\n this.answer_list = getParamFromTemplateRow(this._row, \"answer_list\", []);\n this.arrayOfBtn = this.createArrayBtnElement(this.answer_list);\n\n this.getFlexWidth();\n this.groupName = this._row._nested_name;\n }\n\n public async handleRadioButtonClick(selectedValue: string) {\n await this.setValue(selectedValue);\n this.triggerActions(\"changed\");\n }\n\n /**\n * Answer lists are formatted as strings with to indicate properties, e.g.\n * [\n * \"name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg\",\n * \"name:unhappy | image:plh_images/stickers/faces/unhappy.svg\"\n * ]\n * Convert to an object array, with key value pairs extracted from the string values\n */\n createArrayBtnElement(answer_list: string[]) {\n if (answer_list) {\n // NOTE CC 2021-08-07 - datalists might be used which currently only format as objects\n // manually convert to array if required (temp method until better handling found)\n if (typeof answer_list === \"object\") {\n answer_list = objectToArray(answer_list);\n }\n const arrayOfBtn = answer_list.map((item) => {\n // convert string to relevant mappings\n let itemObj: IButton = {} as any;\n if (typeof item === \"string\") {\n const stringProperties = item.split(\"|\");\n stringProperties.forEach((s) => {\n const [field, value] = s.split(\":\").map((v) => v.trim());\n if (field && value) {\n itemObj[field] = value;\n }\n });\n }\n // NOTE CC 2021-08-07 - allow passing of object, not just string for conversion\n else {\n itemObj = item;\n }\n const processed = this.processButtonFields(itemObj);\n return processed;\n });\n // TODO - CC 2023-03-15 could lead to strange behaviour, to review\n // (checks every item but keeps overriding the button type depending on what it finds)\n arrayOfBtn.forEach((item) => {\n if (item.image && item.text) {\n this.radioButtonType = \"btn_both\";\n } else if (!item.image && item.text) {\n this.radioButtonType = \"btn_text\";\n } else if (item.image && !item.text) {\n this.radioButtonType = \"btn_image\";\n }\n });\n return arrayOfBtn;\n }\n }\n private processButtonFields(button: IButton) {\n const processed: IButton = {\n text: null,\n image: null,\n name: null,\n image_checked: null,\n };\n Object.entries(button).forEach(([field, value]) => {\n switch (field) {\n case \"image\":\n processed[field] = value;\n break;\n case \"image_checked\":\n processed[field] = value;\n break;\n default:\n processed[field] = value;\n }\n });\n return processed;\n }\n\n getFlexWidth() {\n this.flexWidth = `0 1 ${100 / this.options_per_row - 7}%`;\n }\n\n ngOnDestroy() {\n this.componentDestroyed$.next(true);\n this.componentDestroyed$.complete();\n }\n}\n\n \n\n \n \n \n \n \n \n \n {{ item.text | translate }}\n \n \n \n \n \n \n \n\n \n {{ item.text | translate }}\n \n \n \n \n \n \n \n \n {{ item.text | translate }} \n \n \n \n Invalid type button\n \n\n\n \n\n \n \n ./radio-group.component.scss\n \n @use \"/src/theme/mixins\";\n\n$background-selected: var(\n --radio-group-background-selected,\n var(--gradient-primary-light-vertical)\n);\n$primary-radio-border: 2px solid;\n$primary-radio-border-rd: 15px;\n\nimg {\n padding: 5px;\n}\n\n.wrapper-radio-group {\n width: 100%;\n height: 100%;\n\n .container {\n @include mixins.flex-centered;\n margin-bottom: var(--regular-margin);\n\n .btn_triangle {\n &_container {\n width: 150px;\n height: 44px;\n margin: 5px;\n\n label {\n height: 44px;\n background-color: var(--ion-color-primary-contrast);\n }\n .checked {\n background: $background-selected;\n transition: 0.3s linear;\n }\n }\n }\n\n .dse {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-around;\n width: 100%;\n height: 100%;\n }\n\n .btn_square {\n &_container {\n label {\n width: 115px;\n height: 115px;\n padding: 5px;\n max-width: calc(6rem * 0.9);\n max-height: calc(115px * 0.9);\n min-height: calc(115px * 0.9);\n min-width: unset;\n @media (max-width: 320px) {\n max-height: calc(100px * 0.9);\n max-width: calc(5rem * 0.9);\n min-height: calc(115px * 0.8);\n }\n @media (max-width: 319px) {\n max-height: 27vw;\n max-width: 27vw;\n min-height: unset;\n }\n }\n }\n }\n\n .btn_image {\n &_container {\n label {\n width: 115px;\n height: 115px;\n min-width: unset;\n max-width: calc(6rem * 0.9);\n max-height: calc(115px * 0.9);\n padding: 5px;\n @media (max-width: 320px) {\n max-height: calc(100px * 0.9);\n max-width: calc(5rem * 0.9);\n min-height: calc(115px * 0.8);\n }\n @media (max-width: 319px) {\n max-height: 27vw;\n max-width: 27vw;\n min-height: unset;\n }\n }\n }\n .transparent {\n .standard-label {\n border: 2px solid transparent;\n box-shadow: none;\n }\n .checked {\n transition: 0.3s linear;\n border: var(--ion-border-standard);\n box-shadow: var(--ion-default-box-shadow);\n }\n }\n }\n }\n}\n\n.standard-label {\n border-radius: $primary-radio-border-rd;\n transition: 0.3s linear;\n max-width: fit-content;\n min-width: 100%;\n box-shadow: var(--ion-default-box-shadow);\n border: var(--ion-border-standard);\n color: var(--ion-color-primary);\n background: var(--ion-color-primary-contrast);\n}\n\n.checked {\n background: $background-selected;\n transition: 0.3s linear;\n}\n\n.smile-checked {\n color: var(--ion-color-primary);\n border: $primary-radio-border !important;\n border-color: var(--ion-color-primary);\n}\n\n.center {\n @include mixins.flex-centered;\n flex-direction: column;\n}\n\ninput {\n width: 100%;\n height: 100%;\n display: none;\n}\n\nlabel {\n height: 100%;\n font-weight: 700;\n text-align: center;\n transition: 0.3s linear;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ item.text | translate }} {{ item.text | translate }} {{ item.text | translate }} Invalid type button '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplRadioGroupComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplSimpleCheckboxComponent.html":{"url":"components/TmplSimpleCheckboxComponent.html","title":"component - TmplSimpleCheckboxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplSimpleCheckboxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-simple-checkbox\n \n\n \n styleUrls\n ./simple-checkbox.component.scss\n \n\n\n\n \n templateUrl\n ./simple-checkbox.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n label_text\n \n \n position\n \n \n reverse\n \n \n style\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n Public\n Async\n handleChange\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n parent\n \n \n \n \n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:20\n \n \n\n \n \n\n\n \n Inputs\n \n \n \n \n \n parent\n \n \n \n \n Type : TemplateContainerComponent\n\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:16\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:33\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n handleChange\n \n \n \n \n \n \n \n handleChange(isChecked: boolean)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:28\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n isChecked\n \n boolean\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n label_text\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n position\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n reverse\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/simple-checkbox/simple-checkbox.component.ts:20\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { TemplateContainerComponent } from \"../../template-container.component\";\nimport { getBooleanParamFromTemplateRow, getStringParamFromTemplateRow } from \"../../../../utils\";\n\n@Component({\n selector: \"plh-simple-checkbox\",\n templateUrl: \"./simple-checkbox.component.html\",\n styleUrls: [\"./simple-checkbox.component.scss\"],\n})\nexport class TmplSimpleCheckboxComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n @Input() parent: TemplateContainerComponent;\n position: string;\n reverse: boolean;\n label_text: string | null;\n style: string;\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n public async handleChange(isChecked: boolean) {\n await this.setValue(isChecked);\n this.triggerActions(\"changed\");\n }\n\n getParams() {\n this.reverse = getBooleanParamFromTemplateRow(this._row, \"reverse\", false);\n this.position = getStringParamFromTemplateRow(this._row, \"align\", \"center\");\n this.label_text = getStringParamFromTemplateRow(this._row, \"label_text\", null);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n }\n}\n\n \n\n \n \n \n {{ label_text }}\n\n\n \n\n \n \n ./simple-checkbox.component.scss\n \n @use \"/src/theme/mixins\";\n\n.checkbox-wrapper {\n padding: 0 var(--tiny-padding);\n width: 100%;\n height: 100%;\n @include mixins.flex-centered;\n &.left {\n justify-content: start;\n }\n &.right {\n justify-content: flex-end;\n }\n ion-checkbox {\n --border-color: var(--ion-color-primary);\n --border-width: var(--checkbox-border-width);\n --background: var(--ion-color-primary-contrast);\n --border-radius: var(--checkbox-border-radius);\n --size: var(--checkbox-border-size);\n margin: 0 var(--small-margin);\n }\n\n label {\n max-width: var(--checkbox-label-max-width);\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-text-medium);\n line-height: var(--line-height-text-largest);\n color: var(--ion-color-primary);\n }\n}\n.reverse {\n flex-direction: row-reverse;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ label_text }}'\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplSimpleCheckboxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplSliderComponent.html":{"url":"components/TmplSliderComponent.html","title":"component - TmplSliderComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplSliderComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/slider/slider.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-slider-new\n \n\n \n styleUrls\n ./slider.component.scss\n \n\n\n\n \n templateUrl\n ./slider.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n disabled\n \n \n help\n \n \n labels_count\n \n \n listNumbers\n \n \n max_value_label\n \n \n maxValue\n \n \n min_value_label\n \n \n minValue\n \n \n no_value\n \n \n no_value_text\n \n \n previousValue\n \n \n slider\n \n \n sliderConfig\n \n \n step\n \n \n title\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n changeValue\n \n \n getParams\n \n \n Async\n toggleNACheckbox\n \n \n updateConfigParams\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n template\n \n \n \n \n\n\n\n\n \n \n\n\n\n \n Inputs\n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:22\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n changeValue\n \n \n \n \n \n \n \n changeValue(value: number | \"no_value\")\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:87\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n number | \"no_value\"\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:62\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Async\n toggleNACheckbox\n \n \n \n \n \n \n \n toggleNACheckbox()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:76\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n updateConfigParams\n \n \n \n \n \n \nupdateConfigParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:92\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n disabled\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n help\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n labels_count\n \n \n \n \n \n \n Type : number | null\n\n \n \n \n \n Default value : 8\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n listNumbers\n \n \n \n \n \n \n Type : Array\n\n \n \n \n \n Default value : []\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n max_value_label\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n maxValue\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 7\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n min_value_label\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n minValue\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 0\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n no_value\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n no_value_text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Default value : \"no_value\"\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n previousValue\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:37\n \n \n\n \n \n Track the previous value when toggling NA on/off\n\n \n \n\n \n \n \n \n \n \n \n \n slider\n \n \n \n \n \n \n Type : NouisliderComponent\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('slider')\n \n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:23\n \n \n\n\n \n \n \n \n \n \n \n \n sliderConfig\n \n \n \n \n \n \n Type : Options\n\n \n \n \n \n Default value : {\n connect: true,\n start: 0,\n tooltips: true,\n step: this.step,\n behaviour: \"tap\",\n range: {\n min: this.minValue,\n max: this.maxValue,\n },\n pips: {\n mode: \"count\",\n density: 1,\n values: 7,\n stepped: true,\n },\n }\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:40\n \n \n\n\n \n \n \n \n \n \n \n \n step\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 1\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/slider/slider.component.ts:29\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"../../../../model\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { NouisliderComponent } from \"ng2-nouislider\";\nimport { Options } from \"nouislider\";\n\n@Component({\n selector: \"plh-slider-new\",\n templateUrl: \"./slider.component.html\",\n styleUrls: [\"./slider.component.scss\"],\n})\nexport class TmplSliderComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n @Input() template: FlowTypes.Template;\n @ViewChild(\"slider\") slider: NouisliderComponent;\n help: string | null;\n no_value_text: string = \"no_value\";\n minValue: number = 0;\n maxValue: number = 7;\n disabled: boolean = false;\n title: string | null;\n step: number = 1;\n min_value_label: string | null;\n max_value_label: string | null;\n listNumbers: Array = [];\n no_value: boolean = false;\n labels_count: number | null = 8;\n /** Track the previous value when toggling NA on/off */\n previousValue: number;\n\n // Note - not all config options are actually supported by ng2-nouislider (need to dig into code to see what is)\n sliderConfig: Options = {\n connect: true,\n start: 0,\n tooltips: true,\n step: this.step,\n behaviour: \"tap\",\n range: {\n min: this.minValue,\n max: this.maxValue,\n },\n pips: {\n mode: \"count\",\n density: 1,\n values: 7,\n stepped: true,\n },\n };\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.help = getStringParamFromTemplateRow(this._row, \"help\", null);\n this.minValue = getNumberParamFromTemplateRow(this._row, \"min\", this.minValue);\n this.maxValue = getNumberParamFromTemplateRow(this._row, \"max\", this.maxValue);\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.step = getNumberParamFromTemplateRow(this._row, \"step\", this.step);\n this.min_value_label = getStringParamFromTemplateRow(this._row, \"min_value_label\", null);\n this.max_value_label = getStringParamFromTemplateRow(this._row, \"max_value_label\", null);\n this.labels_count = getNumberParamFromTemplateRow(this._row, \"labels_count\", 8);\n this.no_value_text = getStringParamFromTemplateRow(this._row, \"no_value_text\", \"no_value\");\n this.updateConfigParams();\n this.no_value = getBooleanParamFromTemplateRow(this._row, \"no_value\", false);\n }\n\n async toggleNACheckbox() {\n if (this._row.value === \"no_value\") {\n // if restoring functionality assume the value reverts to last known (if a number)\n await this.changeValue(typeof this.previousValue === \"number\" ? this.previousValue : 0);\n } else {\n this.previousValue = this._row.value;\n // if removing functionality specify the value as no_value\n await this.changeValue(\"no_value\");\n }\n }\n\n async changeValue(value: number | \"no_value\") {\n await this.setValue(value);\n await this.triggerActions(\"changed\");\n }\n\n updateConfigParams() {\n this.sliderConfig.range.min = this.minValue;\n this.sliderConfig.range.max = this.maxValue;\n this.sliderConfig.step = this.step;\n this.sliderConfig.start = Number(this._row.value) || 0;\n this.sliderConfig.pips.values = this.labels_count;\n }\n}\n\n \n\n \n \n \n {{ title }}\n \n \n \n \n \n \n \n \n \n {{ min_value_label }}\n {{ max_value_label }}\n \n\n\n \n\n \n \n ./slider.component.scss\n \n @use \"/src/theme/mixins\";\n\n$ui-color: var(--slider-ui-color, var(--ion-color-primary-700));\n\n.slider-wrapper {\n min-width: 100%;\n padding: var(--regular-padding) 0 var(--regular-padding) var(--regular-padding);\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n box-sizing: border-box;\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-secondary);\n position: relative;\n min-height: var(--slider-wrapper-min-height);\n .help {\n color: $ui-color;\n height: var(--help-icon-standard-size);\n width: var(--help-icon-standard-size);\n position: absolute;\n right: 5px;\n top: 12px;\n }\n .title-slider {\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-title-tiny);\n color: var(--ion-color-primary);\n max-width: var(--slider-title-max-width) !important;\n margin-bottom: var(--regular-margin);\n }\n .slider-container {\n max-width: 95%;\n width: 100%;\n display: flex;\n .custom-slider {\n max-width: 100%;\n }\n .checkbox-block {\n @include mixins.flex-centered;\n @include mixins.tiny-square;\n margin-top: var(--tiny-margin);\n padding-left: var(--small-padding);\n margin-left: var(--tiny-margin);\n }\n }\n .labels {\n @include mixins.flex-space-between;\n max-width: var(--slider-labels-max-width);\n margin-left: -5px;\n margin-top: var(--large-margin);\n .min,\n .max {\n font-size: var(--font-size-text-tiny);\n color: $ui-color;\n }\n }\n}\n::ng-deep {\n .noUi-target {\n border: none;\n background: transparent;\n box-shadow: none;\n }\n .noUi-connects {\n border: 1px solid $ui-color;\n box-sizing: border-box;\n border-radius: var(--ion-border-radius-secondary);\n height: 10px;\n }\n .noUi-handle::before,\n .noUi-handle::after {\n content: none;\n }\n .noUi-horizontal .noUi-handle {\n @include mixins.tiny-square;\n border-radius: var(--ion-border-radius-rounded);\n background: $ui-color;\n border: none;\n box-shadow: none;\n outline: none;\n top: -7px;\n right: -11px;\n }\n .noUi-pips-horizontal {\n top: 25%;\n }\n .noUi-value-horizontal {\n font-size: var(--font-size-text-large);\n color: $ui-color;\n }\n .noUi-marker-horizontal {\n display: none;\n }\n .noUi-tooltip {\n display: none;\n }\n .noUi-active .noUi-tooltip {\n @include mixins.flex-centered;\n @include mixins.small-square;\n background: $ui-color;\n color: var(--ion-color-primary-contrast);\n border: none;\n border-radius: var(--ion-border-radius-rounded);\n }\n .hide-handle {\n .noUi-horizontal .noUi-handle {\n display: none;\n }\n }\n}\n.custom-checkbox {\n --border-radius: var(--ion-border-radius-rounded);\n --border-color: #{$ui-color};\n --background: transparent;\n --size: var(--font-size-text-small);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ title }} {{ min_value_label }} {{ max_value_label }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplSliderComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplSubtitleComponent.html":{"url":"components/TmplSubtitleComponent.html","title":"component - TmplSubtitleComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplSubtitleComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/subtitle.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-subtitle\n \n\n \n styleUrls\n ./subtitle.scss\n \n\n\n \n template\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n style\n \n \n textAlign\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/subtitle.ts:22\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/subtitle.ts:32\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/subtitle.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/subtitle.ts:21\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"./base\";\nimport { ITemplateRowProps } from \"../models\";\nimport { getStringParamFromTemplateRow } from \"../../../utils\";\n\n@Component({\n selector: \"plh-tmpl-subtitle\",\n template: `\n \n \n \n \n \n `,\n styleUrls: [\"./subtitle.scss\"],\n})\nexport class TmplSubtitleComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n textAlign: string;\n style: string | null;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"standard medium\");\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", \"\");\n }\n}\n\n \n\n\n \n \n ./subtitle.scss\n \n .subtitle-wrapper {\n display: flex;\n align-items: center;\n color: var(--ion-color-primary);\n h2 {\n line-height: var(--line-height-text);\n margin: 0;\n &.medium {\n font-size: var(--font-size-subtitle-medium);\n }\n &.small {\n font-size: var(--font-size-subtitle-small);\n }\n &.large {\n font-size: var(--font-size-subtitle-large);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplSubtitleComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTaskCardComponent.html":{"url":"components/TmplTaskCardComponent.html","title":"component - TmplTaskCardComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTaskCardComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/task-card/task-card.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-task-card\n \n\n \n styleUrls\n ./task-card.component.scss\n \n\n\n\n \n templateUrl\n ./task-card.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n completedField\n \n \n completedIcon\n \n \n highlighted\n \n \n highlightedText\n \n \n image\n \n \n inProgressIcon\n \n \n isButton\n \n \n progressStatus\n \n \n progressUnitsName\n \n \n style\n \n \n subtitle\n \n \n taskGroupDataList\n \n \n taskGroupId\n \n \n taskId\n \n \n title\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n checkProgressStatus\n \n \n getParams\n \n \n handleNewlyCompleted\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(taskService: TaskService, templateFieldService: TemplateFieldService)\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:28\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n taskService\n \n \n TaskService\n \n \n \n No\n \n \n \n \n templateFieldService\n \n \n TemplateFieldService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n checkProgressStatus\n \n \n \n \n \n \ncheckProgressStatus()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:66\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:46\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n handleNewlyCompleted\n \n \n \n \n \n \nhandleNewlyCompleted(isNewlyCompleted: boolean)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:73\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n isNewlyCompleted\n \n boolean\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n completedField\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n completedIcon\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n highlighted\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n highlightedText\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:16\n \n \n\n\n \n \n \n \n \n \n \n \n image\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n inProgressIcon\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n isButton\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n progressStatus\n \n \n \n \n \n \n Type : IProgressStatus\n\n \n \n \n \n Default value : \"notStarted\"\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n progressUnitsName\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:14\n \n \n\n\n \n \n \n \n \n \n \n \n subtitle\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n taskGroupDataList\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n taskGroupId\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n taskId\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-card/task-card.component.ts:23\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TaskService } from \"src/app/shared/services/task/task.service\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { IProgressStatus } from \"src/app/shared/services/task/task.service\";\nimport { TemplateFieldService } from \"../../services/template-field.service\";\n\n@Component({\n selector: \"plh-task-card\",\n templateUrl: \"./task-card.component.html\",\n styleUrls: [\"./task-card.component.scss\"],\n})\nexport class TmplTaskCardComponent extends TemplateBaseComponent implements OnInit {\n style: string;\n highlighted: boolean;\n highlightedText: string;\n progressUnitsName: string;\n progressStatus: IProgressStatus = \"notStarted\";\n taskGroupId: string | null;\n taskGroupDataList: string | null;\n completedField: string | null;\n taskId: string | null;\n title: string | null;\n subtitle: string | null;\n image: string | null;\n completedIcon: string;\n inProgressIcon: string;\n isButton: boolean;\n\n constructor(\n private taskService: TaskService,\n private templateFieldService: TemplateFieldService\n ) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n this.highlighted =\n this.taskGroupId && !this.taskId\n ? this.taskService.checkHighlightedTaskGroup(this.taskGroupId)\n : false;\n this.checkProgressStatus();\n }\n\n getParams() {\n this.taskGroupId = getStringParamFromTemplateRow(this._row, \"task_group_id\", null);\n this.taskGroupDataList = getStringParamFromTemplateRow(this._row, \"task_group_data\", null);\n this.completedField = getStringParamFromTemplateRow(this._row, \"completed_field\", null);\n this.taskId = getStringParamFromTemplateRow(this._row, \"task_id\", null);\n this.title = getStringParamFromTemplateRow(this._row, \"title\", null);\n this.subtitle = getStringParamFromTemplateRow(this._row, \"subtitle\", null);\n this.image = getStringParamFromTemplateRow(this._row, \"image\", null);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"landscape\");\n this.isButton = this.style.includes(\"button\");\n this.completedIcon = getStringParamFromTemplateRow(this._row, \"completed_icon\", null);\n this.inProgressIcon = getStringParamFromTemplateRow(this._row, \"in_progress_icon\", null);\n this.highlightedText = getStringParamFromTemplateRow(this._row, \"highlighted_text\", \"Active\");\n this.progressUnitsName = getStringParamFromTemplateRow(\n this._row,\n \"progress_units_name\",\n \"sections\"\n );\n }\n\n checkProgressStatus() {\n if (this.taskId) {\n if (this.completedField && this.templateFieldService.getField(this.completedField))\n this.progressStatus = \"completed\";\n }\n }\n\n handleNewlyCompleted(isNewlyCompleted: boolean) {\n if (isNewlyCompleted) {\n this.triggerActions(\"completed\");\n }\n }\n}\n\n \n\n \n \n \n \n {{ highlightedText }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ title }}\n \n \n \n \n {{ subtitle }}\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./task-card.component.scss\n \n .card-wrapper {\n position: relative;\n margin: auto;\n background-color: white;\n border: 1px solid rgba(black, 0.07);\n border-radius: var(--ion-border-radius-secondary);\n padding: var(--regular-padding);\n padding-right: var(--tiny-padding);\n max-width: 400px;\n filter: drop-shadow(var(--ion-default-box-shadow));\n\n &.portrait {\n width: 165px;\n padding: var(--small-padding);\n .content-wrapper {\n flex-direction: column-reverse;\n .text-wrapper {\n width: 95%;\n h1 {\n padding-top: var(--tiny-padding);\n font-size: var(--font-size-subtitle-small);\n line-height: var(--line-height-text-small);\n }\n .subtitle-wrapper {\n p {\n line-height: inherit;\n margin: var(--small-margin) 0px 0px 0px;\n font-size: var(--font-size-text-tiny);\n }\n }\n }\n .image-wrapper {\n width: 85%;\n }\n }\n }\n\n &.button {\n display: flex;\n align-items: center;\n padding: var(--small-padding);\n min-height: 56px;\n .content-wrapper {\n height: 100%;\n flex-direction: row-reverse;\n justify-content: flex-end;\n .image-wrapper {\n height: 36px;\n width: 44px;\n padding-left: 4px;\n flex-shrink: 0;\n img {\n height: 100%;\n }\n }\n .text-wrapper {\n width: auto;\n padding: 6px 8px;\n h1 {\n padding: 0px;\n font-size: var(--font-size-subtitle-medium);\n line-height: var(--line-height-text-small);\n }\n }\n .button-content {\n width: fit-content;\n margin-left: auto;\n }\n }\n }\n\n .content-wrapper {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n\n .text-wrapper {\n width: 60%;\n h1 {\n margin: 0;\n line-height: var(--line-height-text-largest);\n font-weight: var(--font-weight-bold);\n @media (max-width: 375px) {\n font-size: var(--font-size-title-tiny);\n }\n @media (max-width: 320px) {\n font-size: var(--font-size-title-small-device);\n }\n }\n color: var(--ion-color-primary);\n .subtitle-wrapper {\n padding: 0;\n }\n }\n\n .image-wrapper {\n width: 45%;\n padding-left: var(--small-padding);\n }\n }\n\n .badge {\n position: absolute;\n top: -10px;\n filter: drop-shadow(var(--ion-default-box-shadow));\n &.highlighted-badge {\n right: -10px;\n padding: 5px 10px;\n border-radius: var(--ion-border-radius-small);\n background: var(--ion-color-secondary);\n color: white;\n font-weight: var(--font-weight-bold);\n }\n &.progress-badge {\n right: -12px;\n width: 36px;\n }\n .circle {\n height: 36px;\n width: 36px;\n border-radius: 50%;\n position: absolute;\n z-index: 1;\n &.completed {\n background-color: var(--ion-color-green);\n }\n &.inProgress {\n background-color: var(--ion-color-gray-light);\n }\n }\n .icon {\n position: absolute;\n z-index: 2;\n padding: 4px;\n &.completed {\n top: 2px;\n padding: 8px;\n }\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ highlightedText }} {{ title }} {{ subtitle }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTaskCardComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTaskProgressBarComponent.html":{"url":"components/TmplTaskProgressBarComponent.html","title":"component - TmplTaskProgressBarComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTaskProgressBarComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-task-progress-bar\n \n\n \n styleUrls\n ./task-progress-bar.component.scss\n \n\n\n\n \n templateUrl\n ./task-progress-bar.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n showText\n \n \n subtasksCompleted\n \n \n subtasksTotal\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n Async\n evaluateTaskGroupData\n \n \n getParams\n \n \n Async\n setTaskGroupCompletedStatus\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n highlighted\n \n \n progressStatus\n \n \n progressUnitsName\n \n \n taskGroupCompletedField\n \n \n taskGroupDataList\n \n \n \n \n\n \n \n Outputs\n \n \n \n \n \n \n newlyCompleted\n \n \n progressStatusChange\n \n \n \n \n\n\n\n \n \n Accessors\n \n \n \n \n \n \n progressPercentage\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(taskService: TaskService, templateFieldService: TemplateFieldService, appDataService: AppDataService, campaignService: CampaignService)\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:25\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n taskService\n \n \n TaskService\n \n \n \n No\n \n \n \n \n templateFieldService\n \n \n TemplateFieldService\n \n \n \n No\n \n \n \n \n appDataService\n \n \n AppDataService\n \n \n \n No\n \n \n \n \n campaignService\n \n \n CampaignService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n highlighted\n \n \n \n \n Type : boolean | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:18\n \n \n \n \n \n \n \n \n \n progressStatus\n \n \n \n \n Type : IProgressStatus\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:19\n \n \n \n \n \n \n \n \n \n progressUnitsName\n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:20\n \n \n \n \n \n \n \n \n \n taskGroupCompletedField\n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:17\n \n \n \n \n \n \n \n \n \n taskGroupDataList\n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:16\n \n \n \n \n\n \n Outputs\n \n \n \n \n \n newlyCompleted\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:22\n \n \n \n \n \n \n \n \n \n progressStatusChange\n \n \n \n \n Type : EventEmitter\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:21\n \n \n \n \n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n Async\n evaluateTaskGroupData\n \n \n \n \n \n \n \n evaluateTaskGroupData()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:61\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:41\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Async\n setTaskGroupCompletedStatus\n \n \n \n \n \n \n \n setTaskGroupCompletedStatus(taskGroupCompletedField: string, isCompleted: boolean)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:93\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n taskGroupCompletedField\n \n string\n \n\n \n No\n \n\n\n \n \n isCompleted\n \n boolean\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n showText\n \n \n \n \n \n \n Default value : true\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:25\n \n \n\n\n \n \n \n \n \n \n \n \n subtasksCompleted\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:24\n \n \n\n\n \n \n \n \n \n \n \n \n subtasksTotal\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:23\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n progressPercentage\n \n \n\n \n \n getprogressPercentage()\n \n \n \n \n Defined in src/app/shared/components/template/components/task-progress-bar/task-progress-bar.component.ts:57\n \n \n\n \n \n\n\n\n\n \n import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { TaskService } from \"src/app/shared/services/task/task.service\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { TemplateFieldService } from \"../../services/template-field.service\";\nimport { AppDataService } from \"src/app/shared/services/data/app-data.service\";\nimport { IProgressStatus } from \"src/app/shared/services/task/task.service\";\nimport { CampaignService } from \"src/app/feature/campaign/campaign.service\";\n\n@Component({\n selector: \"plh-task-progress-bar\",\n templateUrl: \"./task-progress-bar.component.html\",\n styleUrls: [\"./task-progress-bar.component.scss\"],\n})\nexport class TmplTaskProgressBarComponent extends TemplateBaseComponent implements OnInit {\n @Input() taskGroupDataList: string | null;\n @Input() taskGroupCompletedField: string | null;\n @Input() highlighted: boolean | null;\n @Input() progressStatus: IProgressStatus;\n @Input() progressUnitsName: string;\n @Output() progressStatusChange = new EventEmitter();\n @Output() newlyCompleted = new EventEmitter();\n subtasksTotal: number;\n subtasksCompleted: number;\n showText = true;\n\n constructor(\n private taskService: TaskService,\n private templateFieldService: TemplateFieldService,\n private appDataService: AppDataService,\n private campaignService: CampaignService\n ) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n this.evaluateTaskGroupData();\n }\n\n getParams() {\n if (this._row) {\n this.taskGroupDataList = getStringParamFromTemplateRow(this._row, \"task_group_data\", null);\n this.taskGroupCompletedField = getStringParamFromTemplateRow(\n this._row,\n \"completed_field\",\n null\n );\n this.progressUnitsName = getStringParamFromTemplateRow(\n this._row,\n \"progress_units_name\",\n \"sections\"\n );\n }\n }\n\n get progressPercentage() {\n return (this.subtasksCompleted / this.subtasksTotal) * 100;\n }\n\n async evaluateTaskGroupData() {\n const dataList = await this.appDataService.getSheet(\"data_list\", this.taskGroupDataList);\n const subtasks = dataList?.rows || [];\n this.subtasksTotal = subtasks.length;\n this.subtasksCompleted = subtasks.filter((task) =>\n this.templateFieldService.getField(task.completed_field)\n ).length;\n if (this.subtasksCompleted === this.subtasksTotal) {\n this.progressStatus = \"completed\";\n this.progressStatusChange.emit(this.progressStatus);\n // Check whether task group has already been completed\n if (this.templateFieldService.getField(this.taskGroupCompletedField) !== true) {\n // If not, set completed field to \"true\"\n await this.setTaskGroupCompletedStatus(this.taskGroupCompletedField, true);\n this.newlyCompleted.emit(true);\n }\n } else {\n await this.setTaskGroupCompletedStatus(this.taskGroupCompletedField, false);\n if (this.subtasksCompleted) {\n this.progressStatus = \"inProgress\";\n this.progressStatusChange.emit(this.progressStatus);\n }\n }\n const { previousHighlightedTaskGroup, newHighlightedTaskGroup } =\n this.taskService.evaluateHighlightedTaskGroup();\n // HACK - reschedule campaign notifications when the highlighted task group has changed,\n // in order to handle any that are conditional on the highlighted task group\n if (previousHighlightedTaskGroup !== newHighlightedTaskGroup) {\n this.campaignService.scheduleCampaignNotifications();\n }\n }\n\n async setTaskGroupCompletedStatus(taskGroupCompletedField: string, isCompleted: boolean) {\n console.log(`Setting ${taskGroupCompletedField} to ${isCompleted}`);\n await this.templateFieldService.setField(taskGroupCompletedField, `${isCompleted}`);\n }\n}\n\n \n\n \n \n {{ subtasksTotal + \" \" + progressUnitsName }}\n \n \n \n\n\n \n\n \n \n ./task-progress-bar.component.scss\n \n @use \"/src/theme/mixins\";\n\n.progress-bar-wrapper {\n @include mixins.flex-space-between;\n\n .progress-text {\n padding-right: var(--tiny-padding);\n white-space: nowrap;\n }\n .progress-bar-background {\n width: 100%;\n border-radius: var(--ion-border-radius-small);\n background-color: var(--ion-color-gray-100);\n }\n .progress-bar {\n width: 1%;\n height: 5px;\n border-radius: var(--ion-border-radius-small);\n background-color: var(--ion-color-gray-400);\n }\n &.completed {\n .progress-bar {\n background-color: var(--ion-color-green);\n }\n }\n &.highlighted {\n .progress-bar-background {\n background-color: var(--ion-color-secondary-100);\n }\n .progress-bar {\n background-color: var(--ion-color-secondary);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ subtasksTotal + \" \" + progressUnitsName }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTaskProgressBarComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTextAreaComponent.html":{"url":"components/TmplTextAreaComponent.html","title":"component - TmplTextAreaComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTextAreaComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/text-area/text-area.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-text-area\n \n\n \n styleUrls\n ./text-area.component.scss\n \n\n\n\n \n templateUrl\n ./text-area.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n placeholder\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n Public\n Async\n handleChange\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/text-area/text-area.component.ts:15\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/text-area/text-area.component.ts:25\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n handleChange\n \n \n \n \n \n \n \n handleChange(value: any)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/text-area/text-area.component.ts:29\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n placeholder\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-area/text-area.component.ts:15\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\n\n@Component({\n selector: \"plh-text-area\",\n templateUrl: \"./text-area.component.html\",\n styleUrls: [\"./text-area.component.scss\"],\n})\nexport class TmplTextAreaComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n public placeholder: string;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.placeholder = getStringParamFromTemplateRow(this._row, \"placeholder\", \"\");\n }\n\n public async handleChange(value: any) {\n await this.setValue(value);\n this.triggerActions(\"changed\");\n }\n}\n\n \n\n \n \n \n\n\n \n\n \n \n ./text-area.component.scss\n \n .wrapper {\n .text_area {\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n font-size: var(--text-box-font-size);\n color: var(--ion-color-primary);\n font-weight: var(--font-weight-bold);\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-standard);\n --padding-end: var(--small-padding);\n --padding-start: var(--small-padding);\n min-height: 30vh;\n max-height: 30vh;\n overflow: hidden;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTextAreaComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTextBoxComponent.html":{"url":"components/TmplTextBoxComponent.html","title":"component - TmplTextBoxComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTextBoxComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/text-box/text-box.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-text-box\n \n\n \n styleUrls\n ./text-box.component.scss\n \n\n\n\n \n templateUrl\n ./text-box.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n isNumberInput\n \n \n maxLength\n \n \n placeholder\n \n \n prioritisePlaceholder\n \n \n style\n \n \n textAlign\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n Public\n Async\n handleChange\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:30\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n handleChange\n \n \n \n \n \n \n \n handleChange(value: any)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:25\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n any\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n isNumberInput\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:16\n \n \n\n\n \n \n \n \n \n \n \n \n maxLength\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n placeholder\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n prioritisePlaceholder\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:20\n \n \n\n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text-box/text-box.component.ts:18\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-text-box\",\n templateUrl: \"./text-box.component.html\",\n styleUrls: [\"./text-box.component.scss\"],\n})\nexport class TmplTextBoxComponent extends TemplateBaseComponent implements OnInit {\n prioritisePlaceholder: boolean;\n isNumberInput = false;\n placeholder: string;\n textAlign: string;\n maxLength: number;\n style: string;\n\n ngOnInit() {\n this.getParams();\n }\n public async handleChange(value: any) {\n await this.setValue(value);\n this.triggerActions(\"changed\");\n }\n\n getParams() {\n this.placeholder = getStringParamFromTemplateRow(this._row, \"placeholder\", \"\");\n this.maxLength = getNumberParamFromTemplateRow(this._row, \"max_length\", 30);\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", \"center\");\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n this.isNumberInput = getBooleanParamFromTemplateRow(this._row, \"number_input\", false);\n this.prioritisePlaceholder = getBooleanParamFromTemplateRow(\n this._row,\n \"prioritise_placeholder\",\n false\n );\n }\n}\n\n \n\n \n \n \n\n\n\n\n \n\n \n \n ./text-box.component.scss\n \n .wrapper {\n .text-box-input {\n background: var(--ion-color-primary-contrast);\n border: var(--ion-border-standard);\n width: 100%;\n height: var(--text-box-height);\n font-size: var(--text-box-font-size);\n color: var(--ion-color-primary);\n font-weight: var(--font-weight-bold);\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-standard);\n --padding-end: var(--small-padding);\n --padding-start: var(--small-padding);\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTextBoxComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTextComponent.html":{"url":"components/TmplTextComponent.html","title":"component - TmplTextComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTextComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/text.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-text\n \n\n \n styleUrls\n ./tmpl-components-common.scss\n \n\n\n \n template\n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n isFalsy\n \n \n style\n \n \n textAlign\n \n \n type\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor()\n \n \n \n \n Defined in src/app/shared/components/template/components/text.ts:21\n \n \n\n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/text.ts:30\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n isFalsy\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n type\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/text.ts:20\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"./base\";\nimport { getStringParamFromTemplateRow } from \"../../../utils\";\n\n@Component({\n selector: \"plh-tmpl-text\",\n template: ` `,\n styleUrls: [\"./tmpl-components-common.scss\"],\n})\nexport class TmplTextComponent extends TemplateBaseComponent implements OnInit {\n textAlign: string | null;\n style: string | null;\n type: string;\n isFalsy: boolean;\n constructor() {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.isFalsy = [\"undefined\", \"NaN\", \"null\", '\"\"'].includes(this._row.value);\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", null);\n this.type = this._row.parameter_list?.style?.includes(\"numbered\") ? \"numbered\" : \"marked\";\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n }\n}\n\n \n\n\n \n \n ./tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ''\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTextComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTileComponent.html":{"url":"components/TmplTileComponent.html","title":"component - TmplTileComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTileComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/tile-component/tile-component.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tile-component\n \n\n \n styleUrls\n ./tile-component.component.scss\n \n\n\n\n \n templateUrl\n ./tile-component.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n first_line_text\n \n \n icon_result\n \n \n icon_src\n \n \n is_play_icon\n \n \n isCustomIcon\n \n \n left_icon_src\n \n \n second_line_text\n \n \n style\n \n \n value\n \n \n windowWidth\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n isPlayIcon\n \n \n \n \n\n\n\n\n\n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(elRef: ElementRef)\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:21\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n elRef\n \n \n ElementRef\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:31\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n isPlayIcon\n \n \n \n \n \n \nisPlayIcon(iconSrc: string)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:69\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n iconSrc\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : boolean\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n first_line_text\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:12\n \n \n\n\n \n \n \n \n \n \n \n \n icon_result\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:18\n \n \n\n\n \n \n \n \n \n \n \n \n icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:14\n \n \n\n\n \n \n \n \n \n \n \n \n is_play_icon\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:19\n \n \n\n\n \n \n \n \n \n \n \n \n isCustomIcon\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n left_icon_src\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:15\n \n \n\n\n \n \n \n \n \n \n \n \n second_line_text\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:17\n \n \n\n\n \n \n \n \n \n \n \n \n value\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:16\n \n \n\n\n \n \n \n \n \n \n \n \n windowWidth\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/tile-component/tile-component.component.ts:20\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, ElementRef, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\n\n@Component({\n selector: \"plh-tile-component\",\n templateUrl: \"./tile-component.component.html\",\n styleUrls: [\"./tile-component.component.scss\"],\n})\nexport class TmplTileComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n first_line_text: string | null;\n second_line_text: string | null;\n icon_src: string | null;\n left_icon_src: string | null;\n value: any;\n style: string | null;\n icon_result: string;\n is_play_icon: boolean;\n windowWidth: number;\n isCustomIcon: boolean;\n\n constructor(private elRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.first_line_text = getStringParamFromTemplateRow(this._row, \"first_line_text\", null);\n this.second_line_text = getStringParamFromTemplateRow(this._row, \"second_line_text\", null);\n this.icon_src = getStringParamFromTemplateRow(this._row, \"icon_src\", null);\n this.left_icon_src = getStringParamFromTemplateRow(this._row, \"left_icon_src\", \"\");\n this.value = this._row.value;\n this.windowWidth = window.innerWidth;\n this.style = `\n ${getStringParamFromTemplateRow(this._row, \"style\", \"quick_start\")} \n ${this.isParentPoint() ? \"parent_point\" : \"\"}\n ${this.isTwoColumns() ? \"two_columns\" : \"\"}\n `;\n this.is_play_icon = this.isPlayIcon(this.icon_src);\n this.isCustomIcon = this.icon_src?.includes(\"/\");\n // I had added the line below to have the option of including plh assets rather than pre-built ion icons.\n // Having this line made the parent_point style in the display group behave very strangely in the parent centre.\n // Commented it out for now as we don't need custom-made icons for the ime eng but will create an issue in GH.\n //this.isCustomIcon = this.left_icon_src.includes(\"/\");\n }\n\n private isParentPoint(): boolean {\n const displayGroupElement = this.elRef.nativeElement.closest(\".display-group-wrapper\");\n if (displayGroupElement) {\n return displayGroupElement.classList.contains(\"parent_point\");\n } else {\n return false;\n }\n }\n\n private isTwoColumns(): boolean {\n const displayGroupElement = this.elRef.nativeElement.closest(\".display-group-wrapper\");\n if (displayGroupElement) {\n return displayGroupElement.classList.contains(\"two_columns\");\n } else {\n return false;\n }\n }\n\n isPlayIcon(iconSrc: string): boolean {\n if (iconSrc) return iconSrc.includes(\"play\");\n }\n}\n\n \n\n \n \n \n \n \n \n \n {{ first_line_text }}\n \n \n {{ second_line_text }}\n \n \n \n \n \n \n \n \n\n\n \n\n \n \n ./tile-component.component.scss\n \n @use \"/src/theme/mixins.scss\";\n\n$background-default: var(--tile-button-background-default, var(--ion-color-primary-200));\n$background-primary: var(--tile-button-background-primary, var(--gradient-primary-mid-vertical));\n$background-primary-light: var(\n --tile-button-background-primary-light,\n var(--gradient-primary-light-vertical)\n);\n$background-secondary: var(\n --tile-button-background-secondary,\n var(--gradient-secondary-mid-vertical)\n);\n$background-secondary-light: var(\n --tile-button-background-secondary-light,\n var(--gradient-secondary-light-vertical)\n);\n\n// NOTE CC 2021-12-16 - Presumably this is for case of rendered markdown\n// (but ideally should be handled from within markdown itself)\n.first-line-text ::ng-deep,\n.second-line-text ::ng-deep {\n p {\n margin: 0;\n }\n}\n\n.tile-wrapper {\n @include mixins.flex-space-between;\n .text > div {\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-text-large);\n line-height: var(--line-height-text-largest);\n color: var(--ion-color-primary-contrast);\n }\n\n .button-wrapper {\n .btn-tile {\n width: var(--tile-button-width);\n height: var(--tile-button-height);\n --background: transparent;\n --box-shadow: none;\n\n box-shadow: none;\n --ripple-color: transparent;\n img {\n width: 60px;\n height: 60px;\n }\n }\n // Note - CC 2021-12-21 - Currently not in use in any templates, but keeping in case we want\n // to expose as a parameter option in the future\n .circle-border {\n border: var(--ion-border-light-thicker);\n --border-radius: var(--ion-border-radius-rounded);\n border-radius: var(--ion-border-radius-rounded);\n }\n }\n}\n.default_style {\n padding: var(--regular-padding, 10px);\n box-shadow: var(--ion-default-box-shadow);\n min-height: var(--tile-default-height);\n border-radius: var(--ion-border-radius-standard);\n}\n\n/***********************************************************************************************\n* PLH-specific page type stylings\n TODO - CC 2022-01-13 - Most of this should be reviewed and ideally replaced with more\n simple components (e.g. display groups)\n************************************************************************************************/\n.workshop_page {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 8rem;\n min-height: 7rem;\n border-radius: var(--ion-border-radius-standard);\n border: var(--ion-border-thin-standard);\n background: var(--ion-color-primary-contrast);\n text-align: center;\n padding: var(--tiny-padding);\n box-shadow: var(--ion-default-box-shadow);\n\n .button-wrapper {\n order: 1;\n width: 100%;\n\n .btn-tile {\n pointer-events: none;\n border: 0;\n margin: 0;\n --border-radius: unset;\n border-radius: unset;\n width: 100%;\n height: 100%;\n\n img {\n width: 6rem;\n height: 4.5rem;\n }\n }\n }\n .text {\n order: 2;\n div {\n color: var(--ion-color-primary);\n }\n }\n}\n\n.quick_start {\n background: $background-secondary-light;\n}\n\n.quick_start_passive {\n background: $background-primary;\n}\n.quick_start_blue {\n background: $background-primary-light;\n}\n.quick_start_dark {\n background: $background-secondary;\n}\n.parent_centre_1 {\n background: $background-primary-light;\n}\n.parent_centre_2 {\n background: $background-secondary-light;\n}\n.parent_centre_3 {\n background: $background-secondary;\n}\n.parent_centre_4 {\n background: $background-primary;\n}\n\n.image_text {\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n margin: 0 auto;\n padding: var(--small-padding);\n width: 10rem;\n margin-bottom: var(--regular-margin);\n max-width: var(--tile-image-text-width);\n background: $background-default;\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-standard);\n position: relative;\n flex-direction: column;\n align-content: center;\n flex-wrap: nowrap;\n .button-wrapper {\n order: 1;\n height: auto;\n width: 100%;\n margin-bottom: 1em;\n .btn-tile {\n pointer-events: none;\n border: 0;\n --border-radius: unset;\n border-radius: unset;\n width: 100%;\n height: 100%;\n img {\n width: auto;\n height: 100%;\n }\n }\n }\n .text {\n order: 2;\n div {\n color: var(--ion-color-primary);\n text-align: center;\n }\n }\n}\n\n.two_columns {\n &.image_text {\n height: 100%;\n }\n}\n\n.button_tile {\n background: $background-default;\n overflow: hidden;\n justify-content: space-between;\n height: var(--tile-button-style-height);\n &.default_style {\n min-height: unset;\n padding: var(--regular-padding);\n }\n .left-icon {\n flex: 1;\n height: 80%;\n img {\n height: 100%;\n }\n ion-icon {\n font-size: x-large;\n color: var(--ion-color-primary);\n .icon-inner {\n width: 60px;\n }\n }\n }\n &.tile-wrapper {\n margin-bottom: 0;\n .text {\n flex: 6;\n div {\n font-size: var(--font-size-text-medium);\n line-height: var(--line-height-text-small);\n font-weight: var(--font-weight-standard);\n color: var(--ion-color-primary);\n }\n }\n .button-wrapper {\n width: 50px;\n ion-button::part(native) {\n padding-inline-end: 0;\n }\n .btn-tile {\n border: none;\n width: 100%;\n margin-left: 10px;\n img {\n width: 100%;\n margin-right: 10px;\n }\n ion-icon {\n font-size: xxx-large;\n color: var(--ion-color-primary);\n .icon-inner {\n width: 60px;\n }\n }\n }\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ first_line_text }} {{ second_line_text }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTileComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTimerComponent.html":{"url":"components/TmplTimerComponent.html","title":"component - TmplTimerComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTimerComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Template\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/timer/timer.component.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-timer\n \n\n \n styleUrls\n ./timer.component.scss\n \n\n\n\n \n templateUrl\n ./timer.component.html\n \n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n _row\n \n \n _value\n \n \n help\n \n \n is_editable_on_playing\n \n \n isTimerEditable\n \n \n leftButtonAction\n \n \n leftButtonIcon\n \n \n leftButtonName\n \n \n minInput\n \n \n minutes\n \n \n ping\n \n \n player\n \n \n rightButtonAction\n \n \n rightButtonIcon\n \n \n rightButtonName\n \n \n secInput\n \n \n seconds\n \n \n starting_minutes\n \n \n starting_seconds\n \n \n state\n \n \n timerDurationExtension\n \n \n timerStarted\n \n \n timeValues\n \n \n title\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n changeState\n \n \n clickLeftButton\n \n \n clickRightButton\n \n \n getColumnOptions\n \n \n getColumns\n \n \n getDurationFromParams\n \n \n getParams\n \n \n openPicker\n \n \n \n \n\n \n \n Inputs\n \n \n \n \n \n \n row\n \n \n template\n \n \n \n \n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n value\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(pickerController: PickerController, platform: Platform, audioService: AudioService, templateAssetService: TemplateAssetService)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:69\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n pickerController\n \n \n PickerController\n \n \n \n No\n \n \n \n \n platform\n \n \n Platform\n \n \n \n No\n \n \n \n \n audioService\n \n \n AudioService\n \n \n \n No\n \n \n \n \n templateAssetService\n \n \n TemplateAssetService\n \n \n \n No\n \n \n \n \n \n \n \n \n \n \n\n\n \n Inputs\n \n \n \n \n \n row\n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:22\n \n \n \n \n \n \n \n \n \n template\n \n \n \n \n Type : FlowTypes.Template\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:25\n \n \n \n \n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n changeState\n \n \n \n \n \n \nchangeState(state: TimerState)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:90\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n state\n \n TimerState\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n clickLeftButton\n \n \n \n \n \n \nclickLeftButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:114\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n clickRightButton\n \n \n \n \n \n \nclickRightButton()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:118\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n getColumnOptions\n \n \n \n \n \n \ngetColumnOptions(columnIndex, numOptions, columnOptions)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:184\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n columnIndex\n\n \n No\n \n\n\n \n \n numOptions\n\n \n No\n \n\n\n \n \n columnOptions\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : {}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getColumns\n \n \n \n \n \n \ngetColumns(numColumns, columnOptions)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:156\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Optional\n \n \n \n \n numColumns\n\n \n No\n \n\n\n \n \n columnOptions\n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : {}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n getDurationFromParams\n \n \n \n \n \n \ngetDurationFromParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:110\n \n \n\n\n \n \n\n \n Returns : any\n\n \n \n \n \n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:94\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n openPicker\n \n \n \n \n \n \nopenPicker()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:122\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n _row\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:21\n \n \n\n\n \n \n \n \n \n \n \n \n _value\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:41\n \n \n\n\n \n \n \n \n \n \n \n \n help\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Default value : null\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:39\n \n \n\n\n \n \n \n \n \n \n \n \n is_editable_on_playing\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:36\n \n \n\n\n \n \n \n \n \n \n \n \n isTimerEditable\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:35\n \n \n\n\n \n \n \n \n \n \n \n \n leftButtonAction\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:29\n \n \n\n\n \n \n \n \n \n \n \n \n leftButtonIcon\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n leftButtonName\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n minInput\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('min', {static: false})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:26\n \n \n\n\n \n \n \n \n \n \n \n \n minutes\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:44\n \n \n\n\n \n \n \n \n \n \n \n \n ping\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:46\n \n \n\n\n \n \n \n \n \n \n \n \n player\n \n \n \n \n \n \n Type : AudioPlayer | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:47\n \n \n\n\n \n \n \n \n \n \n \n \n rightButtonAction\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n rightButtonIcon\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n rightButtonName\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n secInput\n \n \n \n \n \n \n Type : ElementRef\n\n \n \n \n \n Decorators : \n \n \n @ViewChild('sec', {static: false})\n \n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:27\n \n \n\n\n \n \n \n \n \n \n \n \n seconds\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:45\n \n \n\n\n \n \n \n \n \n \n \n \n starting_minutes\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:42\n \n \n\n\n \n \n \n \n \n \n \n \n starting_seconds\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:43\n \n \n\n\n \n \n \n \n \n \n \n \n state\n \n \n \n \n \n \n Type : TimerState\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n timerDurationExtension\n \n \n \n \n \n \n Type : number\n\n \n \n \n \n Default value : 1 * 60\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:38\n \n \n\n\n \n \n \n \n \n \n \n \n timerStarted\n \n \n \n \n \n \n Default value : false\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:37\n \n \n\n\n \n \n \n \n \n \n \n \n timeValues\n \n \n \n \n \n \n Default value : () => {...}\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:48\n \n \n\n\n \n \n \n \n \n \n \n \n title\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:40\n \n \n\n\n \n \n\n\n \n \n Accessors\n \n \n \n \n \n \n row\n \n \n\n\n \n \n setrow(value: FlowTypes.TemplateRow)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:22\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n value\n \n \n FlowTypes.TemplateRow\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n value\n \n \n\n \n \n getvalue()\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:56\n \n \n\n \n \n setvalue(val: number)\n \n \n \n \n Defined in src/app/shared/components/template/components/timer/timer.component.ts:60\n \n \n \n \n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n \n \n \n \n val\n \n \n number\n \n \n \n No\n \n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n \n import { Component, ElementRef, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { FlowTypes } from \"data-models\";\nimport {\n getBooleanParamFromTemplateRow,\n getNumberParamFromTemplateRow,\n getStringParamFromTemplateRow,\n} from \"../../../../utils\";\nimport { PickerController, Platform } from \"@ionic/angular\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport { AudioService } from \"src/app/shared/services/audio/audio.service\";\nimport { AudioPlayer } from \"src/app/shared/services/audio/audio.player\";\nimport { TemplateAssetService } from \"../../services/template-asset.service\";\n\n@Component({\n selector: \"plh-timer\",\n templateUrl: \"./timer.component.html\",\n styleUrls: [\"./timer.component.scss\"],\n})\nexport class TmplTimerComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n _row: FlowTypes.TemplateRow;\n @Input() set row(value: FlowTypes.TemplateRow) {\n this._row = value;\n }\n @Input() template: FlowTypes.Template;\n @ViewChild(\"min\", { static: false }) minInput: ElementRef;\n @ViewChild(\"sec\", { static: false }) secInput: ElementRef;\n state: TimerState;\n leftButtonAction: string;\n leftButtonIcon: string;\n leftButtonName: string;\n rightButtonAction: string;\n rightButtonIcon: string;\n rightButtonName: string;\n isTimerEditable: boolean;\n is_editable_on_playing: boolean;\n timerStarted = false;\n timerDurationExtension: number = 1 * 60;\n help: string | null = null;\n title: string;\n _value: number;\n starting_minutes: number;\n starting_seconds: number;\n minutes: string;\n seconds: string;\n ping: string | null;\n player: AudioPlayer | null;\n timeValues = () => {\n const data = [];\n for (let i = 0; i (this.timerStarted ? this.state.clickLeftButton() : null),\n },\n {\n text: \"Confirm\",\n handler: (value) => {\n const min =\n Object.values(value[\"col-0\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-1\"]).toString().split(\",\")[0].trim();\n const sec =\n Object.values(value[\"col-2\"]).toString().split(\",\")[0].trim() +\n Object.values(value[\"col-3\"]).toString().split(\",\")[0].trim();\n this.state.editTimer(min, \"mm\");\n this.state.editTimer(sec, \"ss\");\n },\n },\n ],\n cssClass: \"picker\",\n })\n .then((e) => e.present());\n }\n }\n\n getColumns(numColumns, columnOptions) {\n let columns = [];\n for (let i = 0; i {\n if (this.timer.value === 0) {\n clearInterval(this.intervalRef);\n this.timer.changeState(new PausedState(this.timer));\n if (this.timer.player) this.timer.player.play();\n return;\n }\n this.timer.value -= 1;\n }, 1000);\n }\n}\n\nclass PausedState extends State {\n constructor(timer: TmplTimerComponent) {\n super(timer);\n this.timer.leftButtonAction = \"play\";\n this.timer.leftButtonIcon = \"play-outline\";\n this.timer.leftButtonName = \"play_timer\";\n this.timer.rightButtonAction = \"refresh\";\n this.timer.rightButtonIcon = \"sync-outline\";\n this.timer.rightButtonName = \"refresh_timer\";\n this.timer.timerStarted = false;\n this.timer.isTimerEditable = true;\n }\n\n clickLeftButton() {\n this.timer.changeState(new PlayingState(this.timer));\n }\n\n clickRightButton() {\n this.timer.value = this.timer.getDurationFromParams();\n }\n}\n\n \n\n \n \n \n {{ title }}\n \n \n \n \n \n \n \n \n {{ minutes }}\n \n :\n \n {{ seconds }}\n \n \n \n \n +{{ timerDurationExtension / 60 }}\n \n \n\n\n \n\n \n \n ./timer.component.scss\n \n @use \"/src/theme/mixins\";\n\n$button-background: var(--timer-button-background, var(--ion-color-primary-500));\n\n.timer-counter {\n @include mixins.flex-centered;\n width: calc(100% - 10px);\n height: var(--timer-counter-height);\n margin: 0 var(--tiny-margin);\n div {\n font-weight: var(--font-weight-bold);\n font-size: var(--timer-counter-font-size);\n color: var(--ion-color-primary);\n @media (max-width: 320px) {\n font-size: 30px;\n }\n }\n}\n.timer-content {\n @include mixins.flex-space-between;\n}\n.timer-title {\n margin-left: var(--tiny-margin);\n max-width: var(--timer-title-width);\n font-size: var(--timer-title-size);\n color: var(--ion-color-primary);\n}\n\n.timer-help {\n margin-top: var(--regular-margin);\n margin-left: var(--small-margin);\n color: var(--ion-color-primary);\n height: var(--help-icon-standard-size);\n width: var(--help-icon-standard-size);\n}\n\n.timer-row {\n display: flex;\n}\n.add-min {\n @include mixins.large-square;\n min-width: var(--buttons-size);\n position: relative;\n --background: #{$button-background};\n --background-size: cover;\n --border-radius: var(--ion-border-radius-rounded);\n --padding: 0;\n .right-icon {\n max-width: none;\n top: 0;\n }\n .time-rewind-value {\n position: absolute;\n font-size: var(--font-size-text-tiny);\n font-weight: var(--font-weight-bold);\n }\n}\n\n.round-container {\n padding-left: var(--tiny-padding);\n padding-right: var(--tiny-padding);\n width: 100%;\n background-color: var(--ion-color-primary-contrast);\n box-sizing: border-box;\n border: var(--ion-border-standard);\n box-shadow: var(--ion-default-box-shadow);\n border-radius: var(--ion-border-radius-secondary);\n\n &-br-15 {\n border-radius: var(--ion-border-radius-standard);\n }\n}\nion-button {\n margin: 0;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ title }} {{ minutes }} : {{ seconds }} +{{ timerDurationExtension / 60 }} '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTimerComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplTitleComponent.html":{"url":"components/TmplTitleComponent.html","title":"component - TmplTitleComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplTitleComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/title.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-title\n \n\n \n styleUrls\n ./title.scss\n \n\n\n \n template\n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n help\n \n \n style\n \n \n textAlign\n \n \n tooltipPosition\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/title.ts:37\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n help\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/title.ts:28\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string | null\n\n \n \n \n \n Defined in src/app/shared/components/template/components/title.ts:31\n \n \n\n\n \n \n \n \n \n \n \n \n textAlign\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/title.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n tooltipPosition\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/title.ts:29\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"./base\";\nimport { ITemplateRowProps } from \"../models\";\nimport { getStringParamFromTemplateRow } from \"../../../utils\";\n\n@Component({\n selector: \"plh-tmpl-title\",\n template: `\n \n \n \n \n `,\n styleUrls: [\"./title.scss\"],\n})\nexport class TmplTitleComponent extends TemplateBaseComponent implements ITemplateRowProps, OnInit {\n help: string | null;\n tooltipPosition: string;\n textAlign: string;\n style: string | null;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.help = getStringParamFromTemplateRow(this._row, \"help\", null);\n this.tooltipPosition = getStringParamFromTemplateRow(this._row, \"tooltip_position\", \"right\");\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"tiny standard\");\n this.textAlign = getStringParamFromTemplateRow(this._row, \"text_align\", \"left\");\n }\n}\n\n \n\n\n \n \n ./title.scss\n \n @use \"/src/theme/mixins\";\n\n.title-wrapper {\n display: flex;\n align-items: center;\n h1 {\n margin: 0;\n line-height: var(--line-height-text-largest);\n font-weight: var(--font-weight-bold);\n @media (max-width: 375px) {\n font-size: var(--font-size-title-tiny);\n }\n @media (max-width: 320px) {\n font-size: var(--font-size-title-small-device);\n }\n }\n .alternative {\n line-height: var(--line-height-text-largest);\n color: var(--ion-color-primary-contrast);\n @media (max-width: 320px) {\n font-size: var(--font-size-title-small-device);\n }\n }\n .tiny {\n font-size: var(--font-size-title-tiny);\n @media (max-width: 320px) {\n font-size: var(--font-size-title-small-device);\n }\n }\n .small {\n font-size: var(--font-size-title-small);\n }\n .medium {\n font-size: var(--font-size-title-medium);\n }\n .large {\n font-size: var(--font-size-title-large);\n }\n .huge {\n font-size: var(--font-size-title-largest);\n }\n\n .title-help {\n margin-left: var(--tiny-margin);\n color: var(--ion-color-primary);\n @include mixins.small-square;\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplTitleComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplToggleBarComponent.html":{"url":"components/TmplToggleBarComponent.html","title":"component - TmplToggleBarComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplToggleBarComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/toggle-bar/toggle-bar.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n ITemplateRowProps\n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-toggle-bar\n \n\n \n styleUrls\n ./toggle-bar.scss\n \n\n\n \n template\n \n \n \n \n {{ _row.value ? true_text : false_text }}\n\n\n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n Public\n false_text\n \n \n Public\n position\n \n \n Public\n showTickAndCross\n \n \n style\n \n \n Public\n true_text\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n Public\n Async\n handleClick\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:50\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Public\n Async\n handleClick\n \n \n \n \n \n \n \n handleClick(e: Event)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:44\n \n \n\n\n \n \n As its not possible to stop click events bubbling from the ionChange event,\nuse click handlers to handle state change\n\n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n e\n \n Event\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : any\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n Public\n false_text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:30\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n position\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:32\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n showTickAndCross\n \n \n \n \n \n \n Type : boolean\n\n \n \n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:33\n \n \n\n\n \n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:34\n \n \n\n\n \n \n \n \n \n \n \n \n Public\n true_text\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/toggle-bar/toggle-bar.ts:31\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { TemplateBaseComponent } from \"../base\";\nimport { ITemplateRowProps } from \"../../models\";\nimport {\n getStringParamFromTemplateRow,\n getBooleanParamFromTemplateRow,\n} from \"src/app/shared/utils\";\n\n@Component({\n selector: \"plh-tmpl-toggle-bar\",\n template: `\n \n \n \n \n {{ _row.value ? true_text : false_text }}\n \n `,\n styleUrls: [\"./toggle-bar.scss\"],\n})\nexport class TmplToggleBarComponent\n extends TemplateBaseComponent\n implements ITemplateRowProps, OnInit\n{\n public false_text: string;\n public true_text: string;\n public position: string;\n public showTickAndCross: boolean;\n style: string;\n\n ngOnInit() {\n this.getParams();\n }\n\n /**\n * As its not possible to stop click events bubbling from the ionChange event,\n * use click handlers to handle state change\n */\n public async handleClick(e: Event) {\n e.stopImmediatePropagation();\n await this.setValue(!this._row.value);\n this.triggerActions(\"changed\");\n }\n\n getParams() {\n this.false_text = getStringParamFromTemplateRow(this._row, \"false_text\", \"\");\n this.true_text = getStringParamFromTemplateRow(this._row, \"true_text\", \"\");\n this.position = getStringParamFromTemplateRow(this._row, \"position\", \"left\");\n this.showTickAndCross = getBooleanParamFromTemplateRow(this._row, \"show_tick_and_cross\", true);\n this.style = getStringParamFromTemplateRow(this._row, \"style\", \"\");\n }\n}\n\n \n\n\n \n \n ./toggle-bar.scss\n \n $toggleHeight: 22px;\n$toggleWidth: 42px;\n$togglePadding: 12px;\n\nion-toggle {\n width: $toggleWidth;\n height: $toggleHeight;\n}\n\nion-toggle {\n --background: #b4b7b7;\n --handle-spacing: 2px;\n --background-checked: var(--ion-color-primary, \"darkblue\");\n --handle-background: var(--ion-item-background, #fefefe);\n --handle-background-checked: #fff;\n --padding-inline: $togglePadding;\n}\n\n.show-tick-cross {\n $iconPadding: 3px;\n ion-toggle[aria-checked=\"true\"]::before,\n ion-toggle[aria-checked=\"false\"]::after {\n position: absolute;\n top: $togglePadding + $iconPadding;\n left: $togglePadding + $iconPadding;\n color: white;\n z-index: 1;\n content: \" \";\n width: $toggleWidth - 2 * $iconPadding;\n height: $toggleHeight - 2 * $iconPadding;\n }\n ion-toggle[aria-checked=\"true\"]::before {\n background: url(/assets/icon/shared/tick.svg) no-repeat left / contain;\n }\n ion-toggle[aria-checked=\"false\"]::after {\n background: url(/assets/icon/shared/cross.svg) no-repeat right / contain;\n }\n}\n\n.container {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.container[data-param-style~=\"in_button\"] {\n flex-direction: row-reverse;\n ion-toggle {\n transform: translate($togglePadding, $togglePadding);\n }\n}\n\n.label {\n margin-left: var(--small-margin);\n margin-right: var(--small-margin);\n text-align: right;\n line-height: 27px;\n}\n\n.center {\n justify-content: center;\n}\n\n.center .label {\n position: absolute;\n right: 0;\n max-width: calc(50% - 45px);\n}\n\n.right {\n flex-direction: row-reverse;\n .label {\n text-align: left;\n }\n}\n\n.toggle_wrapper {\n align-self: baseline;\n margin-top: 5px;\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' {{ _row.value ? true_text : false_text }}'\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplToggleBarComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/TmplVideoComponent.html":{"url":"components/TmplVideoComponent.html","title":"component - TmplVideoComponent","body":"\n \n\n\n\n\n\n Components\n \n TmplVideoComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/video.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-video\n \n\n \n styleUrls\n ./tmpl-components-common.scss\n \n\n \n styles\n \n ::cue {\n font-size: var(--video-subtitles-medium);\n }\n \n \n\n \n template\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n style\n \n \n subtitles_src\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n getParams\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n getParams\n \n \n \n \n \n \ngetParams()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/video.ts:29\n \n \n\n\n \n \n\n \n Returns : void\n\n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n style\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/video.ts:22\n \n \n\n\n \n \n \n \n \n \n \n \n subtitles_src\n \n \n \n \n \n \n Type : string\n\n \n \n \n \n Defined in src/app/shared/components/template/components/video.ts:23\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { getStringParamFromTemplateRow } from \"src/app/shared/utils\";\nimport { TemplateBaseComponent } from \"./base\";\n\n@Component({\n selector: \"plh-tmpl-video\",\n template: `\n \n \n \n `,\n styleUrls: [\"./tmpl-components-common.scss\"],\n styles: [\n `\n ::cue {\n font-size: var(--video-subtitles-medium);\n }\n `,\n ],\n})\nexport class TmplVideoComponent extends TemplateBaseComponent implements OnInit {\n style: string;\n subtitles_src: string;\n\n ngOnInit() {\n this.getParams();\n }\n\n getParams() {\n this.style = getStringParamFromTemplateRow(this._row, \"style\", null);\n this.subtitles_src = getStringParamFromTemplateRow(this._row, \"subtitles_src\", null);\n }\n}\n\n \n\n\n \n \n ./tmpl-components-common.scss\n \n @use \"/src/theme/mixins.scss\";\n\n.tmpl-video-container {\n width: 100%;\n display: flex;\n justify-content: center;\n\n video {\n width: 100%;\n max-width: var(--video-max-width);\n border-radius: var(--ion-border-radius-secondary);\n }\n}\n\n.left {\n justify-content: start;\n}\n.right {\n justify-content: flex-end;\n}\n.center {\n justify-content: center;\n}\n.rounded_corners {\n border-radius: var(--ion-border-radius-standard);\n\n img {\n border-radius: var(--ion-border-radius-standard);\n }\n}\n.whiteText {\n color: var(--ion-color-primary-contrast);\n}\n\n \n ::cue {\n font-size: var(--video-subtitles-medium);\n }\n \n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'TmplVideoComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"classes/Widget.html":{"url":"classes/Widget.html","title":"class - Widget","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n Classes\n Widget\n\n\n\n \n Info\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts\n \n\n\n \n Description\n \n \n A Widget class that can be extended to provide some of the basic widget functionality out of the box.\n\n \n\n\n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n _props\n \n \n element\n \n \n options\n \n \n question\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n _getProps\n \n \n _init\n \n \n Static\n condition\n \n \n disable\n \n \n enable\n \n \n update\n \n \n \n \n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n props\n \n \n resetButtonHtml\n \n \n downloadButtonHtml\n \n \n value\n \n \n originalInputValue\n \n \n list\n \n \n \n \n \n \n\n\n \n Constructor\n \n \n \n \nconstructor(element: Element, options: boolean | literal type)\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:13\n \n \n\n \n \n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n element\n \n \n Element\n \n \n \n No\n \n \n \n \nThe DOM element the widget is applied on\n\n\n \n \n \n options\n \n \n boolean | literal type\n \n \n \n No\n \n \n \n \nOptions passed to the widget during instantiation\n\n\n \n \n \n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n \n \n _props\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:13\n \n \n\n\n \n \n \n \n \n \n \n \n element\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:10\n \n \n\n\n \n \n \n \n \n \n \n \n options\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:11\n \n \n\n\n \n \n \n \n \n \n \n \n question\n \n \n \n \n \n \n Type : any\n\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:12\n \n \n\n\n \n \n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n _getProps\n \n \n \n \n \n \n_getProps()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:45\n \n \n\n\n \n \n Not meant to be overridden, but could be. Recommend to extend get props() instead.\n\n\n \n \n \n Returns : { readonly readonly: any; appearances: any; multiple: boolean; disabled: boolean; type: any; }\n\n \n \n props object\n\n \n \n \n \n \n \n \n \n \n \n \n _init\n \n \n \n \n \n \n_init()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:34\n \n \n\n\n \n \n Meant to be overridden, but automatically called.\n\n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n Static\n condition\n \n \n \n \n \n \n \n condition()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:202\n \n \n\n\n \n \n Tests whether widget needs to be instantiated (e.g. if not to be used for touchscreens).\nNote that the Element (used in the constructor) will be provided as parameter.\n\n\n \n \n \n Returns : boolean\n\n \n \n to instantiate or not to instantiate, that is the question\n\n \n \n \n \n \n \n \n \n \n \n \n disable\n \n \n \n \n \n \ndisable()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:67\n \n \n\n\n \n \n Disallow user input into widget by making it readonly.\n\n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n enable\n \n \n \n \n \n \nenable()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:74\n \n \n\n\n \n \n Performs opposite action of disable() function.\n\n\n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n \n update\n \n \n \n \n \n \nupdate()\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:82\n \n \n\n\n \n \n Updates form-defined language strings, s (cascading selects, and (calculated) values.\nMost of the times, this function needs to be overridden in the widget.\n\n\n \n Returns : void\n\n \n \n \n \n \n\n\n\n\n\n\n \n \n Accessors\n \n \n \n \n \n \n props\n \n \n\n \n \n getprops()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:90\n \n \n \n \n Returns widget properties. May need to be extended.\n\n\n \n \n \n \n\n \n \n \n \n \n \n \n resetButtonHtml\n \n \n\n \n \n getresetButtonHtml()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:100\n \n \n \n \n Returns a HTML document fragment for a reset button.\n\n\n \n \n \n \n\n \n \n \n \n \n \n \n downloadButtonHtml\n \n \n\n \n \n getdownloadButtonHtml()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:117\n \n \n \n \n Returns a HTML document fragment for a download button.\n\n\n \n \n \n \n\n \n \n \n \n \n \n \n value\n \n \n\n \n \n getvalue()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:133\n \n \n \n \n Obtains the value from the current widget state. Should be overridden.\n\n\n \n \n \n \n\n \n \n setvalue(_value: any)\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:143\n \n \n \n \n Sets a value in the widget. Should be overridden.\n\n\n \n Parameters :\n \n \n \n Name\n Type\n Optional\n Description\n \n \n \n \n _value\n \n \n any\n \n \n \n No\n \n \n \n \nvalue to set\n\n\n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n originalInputValue\n \n \n\n \n \n getoriginalInputValue()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:154\n \n \n \n \n Obtains the value from the original form control the widget is instantiated on.\nThis form control is often hidden by the widget.\n\n\n \n \n \n \n\n \n \n setoriginalInputValue(value)\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:165\n \n \n \n \n Updates the value in the original form control the widget is instantiated on.\nThis form control is often hidden by the widget.\n\n\n \n Parameters :\n \n \n \n Name\n Optional\n Description\n \n \n \n \n value\n \n \n \n No\n \n \n \n \nvalue to set\n\n\n \n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n \n \n list\n \n \n\n \n \n getlist()\n \n \n \n \n Defined in src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts:191\n \n \n \n \n Returns true if the widget is using a list of options.\n\n\n \n \n \n \n\n \n \n\n \n\n\n \n import input from \"./input\";\nimport event from \"./event\";\n\nconst range = document.createRange();\n\n/**\n * A Widget class that can be extended to provide some of the basic widget functionality out of the box.\n */\nclass Widget {\n element: any;\n options: any;\n question: any;\n _props: any;\n\n /**\n * @class\n * @param {Element} element - The DOM element the widget is applied on\n * @param {(boolean|{touch: boolean})} [options] - Options passed to the widget during instantiation\n */\n constructor(element: Element, options: boolean | { touch: boolean }) {\n this.element = element;\n this.options = options || {};\n this.question = element.closest(\".question\");\n this._props = this._getProps();\n\n // Some widgets (e.g. ImageMap) initialize asynchronously and init returns a promise.\n return (this._init() as any) || this;\n }\n\n /**\n * Meant to be overridden, but automatically called.\n *\n */\n _init() {\n // load default value into the widget\n this.value = this.originalInputValue;\n // if widget initializes asynchronously return a promise here. Otherwise, return nothing/undefined/null.\n }\n\n /**\n * Not meant to be overridden, but could be. Recommend to extend `get props()` instead.\n *\n * @return {object} props object\n */\n _getProps() {\n const that = this;\n const classList = that.element.closest(\".question, form.or\")?.classList || [];\n return {\n get readonly() {\n return that.element.nodeName.toLowerCase() === \"select\"\n ? that.element.hasAttribute(\"readonly\")\n : !!that.element.readOnly;\n },\n\n appearances: [...classList]\n .filter((cls) => cls.indexOf(\"or-appearance-\") === 0)\n .map((cls) => cls.substring(14)),\n multiple: !!this.element.multiple,\n disabled: !!this.element.disabled,\n type: this.element.getAttribute(\"data-type-xml\"),\n };\n }\n\n /**\n * Disallow user input into widget by making it readonly.\n */\n disable() {\n // leave empty in Widget.js\n }\n\n /**\n * Performs opposite action of disable() function.\n */\n enable() {\n // leave empty in Widget.js\n }\n\n /**\n * Updates form-defined language strings, s (cascading selects, and (calculated) values.\n * Most of the times, this function needs to be overridden in the widget.\n */\n update() {}\n\n /**\n * Returns widget properties. May need to be extended.\n *\n * @readonly\n * @type {object}\n */\n get props() {\n return this._props;\n }\n\n /**\n * Returns a HTML document fragment for a reset button.\n *\n * @readonly\n * @type {Element}\n */\n get resetButtonHtml() {\n return range.createContextualFragment(\n `\n \n `\n );\n }\n\n /**\n * Returns a HTML document fragment for a download button.\n *\n * @readonly\n * @type {Element}\n */\n get downloadButtonHtml() {\n return range.createContextualFragment(\n ` `\n );\n }\n\n /**\n * Obtains the value from the current widget state. Should be overridden.\n *\n * @readonly\n * @type {*}\n */\n get value() {\n return undefined;\n }\n\n /**\n * Sets a value in the widget. Should be overridden.\n *\n * @param {*} _value - value to set\n * @type {*}\n */\n set value(_value: any) {\n //\n } // eslint-disable-line no-empty-function -- this is defining the API\n\n /**\n * Obtains the value from the original form control the widget is instantiated on.\n * This form control is often hidden by the widget.\n *\n * @readonly\n * @type {*}\n */\n get originalInputValue() {\n return input.getVal(this.element);\n }\n\n /**\n * Updates the value in the original form control the widget is instantiated on.\n * This form control is often hidden by the widget.\n *\n * @param {*} value - value to set\n * @type {*}\n */\n set originalInputValue(value) {\n // Avoid unnecessary change events as they could have significant negative consequences!\n // However, to add a check for this.originalInputValue !== value here would affect performance too much,\n // so we rely on widget code to only use this setter when the value changes.\n input.setVal(this.element, value, null);\n this.element.dispatchEvent(event.Change());\n }\n\n /**\n * Returns its own name.\n *\n * @static\n * @readonly\n * @type {string}\n */\n // static get name() {\n // return this.constructor.name;\n // }\n\n /**\n * Returns true if the widget is using a list of options.\n *\n * @readonly\n * @static\n * @type {boolean}\n */\n static get list() {\n return false;\n }\n\n /**\n * Tests whether widget needs to be instantiated (e.g. if not to be used for touchscreens).\n * Note that the Element (used in the constructor) will be provided as parameter.\n *\n * @static\n * @return {boolean} to instantiate or not to instantiate, that is the question\n */\n static condition() {\n return true;\n }\n}\n\nexport default Widget;\n\n \n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"components/WorkshopsComponent.html":{"url":"components/WorkshopsComponent.html","title":"component - WorkshopsComponent","body":"\n \n\n\n\n\n\n Components\n \n WorkshopsComponent\n\n\n\n \n Info\n \n \n Source\n \n \n Styles\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/shared/components/template/components/layout/workshops_accordion.ts\n\n\n\n\n \n Extends\n \n \n TemplateBaseComponent\n \n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n \n selector\n plh-tmpl-workshops-accordion\n \n\n \n styleUrls\n ./accordion.scss\n \n\n\n \n template\n \n \n \n \n \n \n\n\n\n\n\n\n\n\n\n \n \n\n\n \n Index\n \n \n \n \n Properties\n \n \n \n \n \n \n rows\n \n \n \n \n\n \n \n Methods\n \n \n \n \n \n \n toggleState\n \n \n \n \n\n\n\n\n\n \n \n\n\n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n \n \n toggleState\n \n \n \n \n \n \ntoggleState(rowId: string)\n \n \n\n\n \n \n Defined in src/app/shared/components/template/components/layout/workshops_accordion.ts:28\n \n \n\n\n \n \n\n \n Parameters :\n \n \n \n \n Name\n Type\n Optional\n \n \n \n \n rowId\n \n string\n \n\n \n No\n \n\n\n \n \n \n \n \n \n \n Returns : void\n\n \n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n \n \n rows\n \n \n \n \n \n \n Type : FlowTypes.TemplateRow[]\n\n \n \n \n \n Defined in src/app/shared/components/template/components/layout/workshops_accordion.ts:22\n \n \n\n\n \n \n\n\n\n\n\n \n import { Component, OnInit } from \"@angular/core\";\nimport { FlowTypes } from \"src/app/shared/model\";\nimport { TemplateBaseComponent } from \"../base\";\n\n@Component({\n selector: \"plh-tmpl-workshops-accordion\",\n template: `\n \n \n \n \n `,\n styleUrls: [\"./accordion.scss\"],\n})\nexport class WorkshopsComponent extends TemplateBaseComponent implements OnInit {\n rows: FlowTypes.TemplateRow[];\n\n ngOnInit() {\n this.rows = [...this._row.rows];\n }\n\n toggleState(rowId: string) {\n const updatedRows = this.rows.map((row, idx) => {\n if (idx === +rowId) {\n if (row.parameter_list.state === \"open\") {\n row.parameter_list.state = \"closed\";\n } else {\n row.parameter_list.state = \"open\";\n }\n } else {\n row.parameter_list.state = \"closed\";\n }\n return row;\n });\n this.rows = updatedRows;\n }\n}\n\n \n\n\n \n \n ./accordion.scss\n \n @use \"/src/theme/mixins\";\n\n$background-highlight: var(--accordion-background-highlight, var(--gradient-primary-light-vertical));\n\n.workshops-accordion {\n position: relative;\n margin-top: var(--large-margin);\n &::after {\n content: \"\";\n width: 1px;\n height: calc(100% - 35px);\n background: var(--ion-color-primary);\n position: absolute;\n left: 21px;\n top: 0;\n margin-top: var(--regular-margin);\n }\n}\n.accordion-wrapper {\n display: flex;\n justify-content: space-between;\n // align-items: center; // aligns dot in center while closed but open will connecting line looks off\n margin-bottom: var(--regular-margin);\n height: 100%;\n .accordion-status {\n @include mixins.medium-square;\n border-radius: var(--ion-border-radius-rounded);\n border: var(--ion-border-thin-standard);\n padding: var(--tiny-padding);\n background: var(--ion-color-primary-contrast);\n display: flex;\n justify-content: center;\n z-index: 2;\n &.inProgress {\n background: $background-highlight;\n }\n &.disabled {\n background: var(--ion-color-primary-contrast);\n }\n &.completed {\n background: $background-highlight;\n }\n }\n .accordion-section {\n display: flex;\n flex-direction: column;\n position: relative;\n width: var(--accordion-section-width);\n border-radius: var(--ion-border-radius-standard);\n overflow: hidden;\n padding: var(--small-padding);\n border: var(--ion-border-thin-standard);\n transition: max-height 0.4s;\n overflow-y: hidden;\n &.completed {\n background: $background-highlight;\n color: var(--ion-color-primary);\n .progress {\n opacity: 0;\n }\n }\n &.disabled {\n background: var(--ion-color-primary-contrast);\n color: var(--ion-color-primary);\n .progress {\n opacity: 0;\n }\n }\n &.inProgress {\n background: var(--ion-color-primary-contrast);\n color: var(--ion-color-primary);\n }\n &.openSection {\n background: $background-highlight;\n transition: max-height 0.4s;\n .progress {\n opacity: 0;\n transition: none !important;\n }\n }\n .progress {\n position: absolute;\n height: 100%;\n left: 0;\n z-index: 1;\n background: $background-highlight;\n opacity: 1;\n transition: opacity 0.4s ease-in;\n margin-top: calc(var(--small-padding) * -1); // offset for padding in .accordion-section\n }\n }\n .accordion-section {\n h2 {\n z-index: 2;\n text-align: left;\n margin: 0;\n font-size: var(--font-size-subtitle-small);\n font-weight: var(--font-weight-bold);\n @media (max-width: 320px) {\n font-size: var(--font-size-subtitle-small-device);\n }\n }\n }\n .accordion-section-content {\n max-height: 0;\n z-index: 2;\n transition: max-height 0.4s;\n &.openSection {\n max-height: var(--accordion-section-open-height);\n }\n }\n}\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' '\n var COMPONENTS = [{'name': 'AccordionSectionComponent', 'selector': 'plh-tmpl-accordion-section'},{'name': 'AnimatedSectionComponent', 'selector': 'plh-tmpl-animated-section'},{'name': 'AnimatedSectionGroupComponent', 'selector': 'plh-tmpl-animated-section-group'},{'name': 'ComboBoxModalComponent', 'selector': 'combo-box-modal'},{'name': 'FormComponent', 'selector': 'plh-tmpl-form'},{'name': 'NavGroupComponent', 'selector': 'plh-tmpl-nav-group'},{'name': 'RoundIconButtonComponent', 'selector': 'plh-round-button'},{'name': 'SelectTextComponent', 'selector': 'plh-select-text'},{'name': 'SquareIconButtonComponent', 'selector': 'plh-square-icon-button'},{'name': 'TemplateBaseComponent', 'selector': ''},{'name': 'TemplateDebuggerComponent', 'selector': 'plh-template-debugger'},{'name': 'TemplateHTMLComponent', 'selector': 'template-html-component'},{'name': 'TemplateLayoutComponent', 'selector': ''},{'name': 'TemplatePopupComponent', 'selector': ''},{'name': 'TmplAccordionComponent', 'selector': 'plh-accordion-component'},{'name': 'TmplAdvancedDashedBoxComponent', 'selector': 'plh-advanced-dashed-box'},{'name': 'TmplAnimatedSlidesComponent', 'selector': 'template-animated-slides'},{'name': 'TmplAudioComponent', 'selector': 'plh-audio'},{'name': 'TmplButtonComponent', 'selector': 'plh-button'},{'name': 'TmplCarouselComponent', 'selector': 'plh-carousel'},{'name': 'TmplComboBoxComponent', 'selector': 'plh-combo-box'},{'name': 'TmplDashedBoxComponent', 'selector': 'plh-dashed-box'},{'name': 'TmplDataItemsComponent', 'selector': 'plh-data-items'},{'name': 'TmplDisplayGridComponent', 'selector': 'plh-display-grid'},{'name': 'TmplDisplayGroupComponent', 'selector': 'plh-tmpl-display-group'},{'name': 'TmplDrawerComponent', 'selector': 'plh-drawer'},{'name': 'TmplHelpIconComponent', 'selector': 'plh-tmpl-help-icon'},{'name': 'TmplIconBannerComponent', 'selector': 'plh-icon-banner'},{'name': 'TmplImageComponent', 'selector': 'plh-tmpl-image'},{'name': 'TmplLatexComponent', 'selector': 'template-latex-component'},{'name': 'TmplLottieAnimation', 'selector': 'plh-tmpl-lottie-animation'},{'name': 'TmplNavigationBarComponent', 'selector': 'plh-navigation-bar'},{'name': 'TmplNumberComponent', 'selector': 'plh-number-selector'},{'name': 'TmplOdkFormComponent', 'selector': 'tmpl-odk-form'},{'name': 'TmplParentPointBoxComponent', 'selector': 'plh-points-item'},{'name': 'TmplParentPointCounterComponent', 'selector': 'plh-parent-point-counter'},{'name': 'TmplPdfComponent', 'selector': 'plh-pdf'},{'name': 'TmplQRCodeComponent', 'selector': 'plh-qr-code'},{'name': 'TmplRadioButtonGridComponent', 'selector': 'plh-radio-button-grid'},{'name': 'TmplRadioGroupComponent', 'selector': 'plh-radio-group'},{'name': 'TmplSimpleCheckboxComponent', 'selector': 'plh-simple-checkbox'},{'name': 'TmplSliderComponent', 'selector': 'plh-slider-new'},{'name': 'TmplSubtitleComponent', 'selector': 'plh-tmpl-subtitle'},{'name': 'TmplTaskCardComponent', 'selector': 'plh-task-card'},{'name': 'TmplTaskProgressBarComponent', 'selector': 'plh-task-progress-bar'},{'name': 'TmplTextAreaComponent', 'selector': 'plh-text-area'},{'name': 'TmplTextBoxComponent', 'selector': 'plh-text-box'},{'name': 'TmplTextComponent', 'selector': 'plh-tmpl-text'},{'name': 'TmplTileComponent', 'selector': 'plh-tile-component'},{'name': 'TmplTimerComponent', 'selector': 'plh-timer'},{'name': 'TmplTitleComponent', 'selector': 'plh-tmpl-title'},{'name': 'TmplToggleBarComponent', 'selector': 'plh-tmpl-toggle-bar'},{'name': 'TmplVideoComponent', 'selector': 'plh-tmpl-video'},{'name': 'WorkshopsComponent', 'selector': 'plh-tmpl-workshops-accordion'}];\n var DIRECTIVES = [];\n var ACTUAL_COMPONENT = {'name': 'WorkshopsComponent'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"contributing.html":{"url":"contributing.html","title":"getting-started - contributing","body":"\n \n\nContributing to the Parenting for Lifelong Health App\n👍🎉 First off, thanks for taking the time to contribute! 🎉👍\nThe following is a set of guidelines for contributing to the Parenting for Lifelong Health (PLH) Mobile App.\nBy submitting code for inclusion in the PLH App you agree to this contributor agreement aswell as the software licence.\nCode of Conduct\nEveryone developing on this project yourself included, must adhere to the PLH App Code of Conduct\nHow to contribute\nCreate a Github issue if you want have a feature request or bug fix.\nIf you know how to make your changes in code please submit a pull request and mention your pull request in the Github issue you created.\nDerivatives and Certification\nYou may create your own derivatives of this app using content from within the app. However all official organisation branding and trademarks must be removed unless you receive approval and certification from those organisations. These organisations include:\n\nParenting For Lifelong Health\nClowns Without Borders\nUniversity of Cape Town\nOxford University\nWHO\nUnicef\nCDC\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"dependencies.html":{"url":"dependencies.html","title":"package-dependencies - dependencies","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Dependencies\n \n \n \n @angular/animations : ^15.0.4\n \n @angular/common : ~15.0.4\n \n @angular/core : ~15.0.4\n \n @angular/elements : ^15.0.4\n \n @angular/fire : ^7.3.0\n \n @angular/forms : ~15.0.4\n \n @angular/platform-browser : ~15.0.4\n \n @angular/platform-browser-dynamic : ~15.0.4\n \n @angular/router : ~15.0.4\n \n @capacitor-community/firebase-crashlytics : ^1.3.0\n \n @capacitor-firebase/authentication : ^1.2.0\n \n @capacitor-firebase/performance : ^1.2.0\n \n @capacitor/android : ^4.6.0\n \n @capacitor/app : ^4.1.1\n \n @capacitor/cli : ^4.6.0\n \n @capacitor/clipboard : ^4.1.0\n \n @capacitor/core : ^4.6.0\n \n @capacitor/device : ^4.1.0\n \n @capacitor/filesystem : ^4.1.4\n \n @capacitor/local-notifications : ^4.1.4\n \n @capacitor/push-notifications : ^4.1.2\n \n @capacitor/splash-screen : ^4.1.2\n \n @capawesome/capacitor-app-update : ^2.0.1\n \n @ionic-native/core : ^5.36.0\n \n @ionic-native/device : ^5.36.0\n \n @ionic-native/http : ^5.36.0\n \n @ionic-native/media : ^5.36.0\n \n @ionic-native/status-bar : ^5.36.0\n \n @ionic/angular : ^6.4.1\n \n @ionic/pwa-elements : ^3.1.1\n \n @ngx-matomo/router : ^1.3.3\n \n @ngx-matomo/tracker : ^1.3.3\n \n @sentry/angular : ^7.21.1\n \n @supabase/supabase-js : ^2.13.1\n \n app-data : workspace:*\n \n bootstrap-datepicker : ^1.10.0\n \n capacitor-blob-writer : ^1.1.9\n \n capacitor-firebase-auth : ^3.0.0\n \n clone : ^2.1.2\n \n cordova-res : ^0.15.4\n \n core-js : ^3.27.1\n \n data-models : workspace:*\n \n date-fns : ^2.22.1\n \n deep-object-diff : ^1.1.9\n \n dexie : ^3.0.3\n \n dexie-observable : 3.0.0-beta.11\n \n dexie-syncable : ^3.0.0-beta.10\n \n document-register-element : ^1.14.10\n \n dompurify : ^2.3.6\n \n extract-math : ^1.2.3\n \n firebase : ^9.8.1\n \n globalthis : ^1.0.2\n \n howler : ^2.2.1\n \n html5sortable : ^0.13.3\n \n intro.js : ^3.2.1\n \n jquery : ^3.7.0\n \n jquery-touchswipe : ^1.6.19\n \n katex : ^0.15.3\n \n lottie-web : ^5.7.14\n \n marked : ^2.0.1\n \n mergexml : ^1.2.3\n \n ng2-nouislider : ^1.8.3\n \n ngx-color : ^6.1.0\n \n ngx-extended-pdf-viewer : 16.2.16\n \n ngx-lottie : ^7.0.4\n \n nouislider : ^14.6.3\n \n qrcode : ^1.5.1\n \n rxdb : ^13.15.3\n \n rxjs : ^7.8.0\n \n scripts : workspace:*\n \n shared : workspace:*\n \n signature_pad : ^4.1.5\n \n stacktrace-js : ^2.0.2\n \n swiper : ^8.4.4\n \n trusted-types : ^2.0.0\n \n zone.js : ~0.11.4\n \n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"index.html":{"url":"index.html","title":"getting-started - index","body":"\n \n\n\nParenting App UI\nOnline Documentation\nQuickstart\nPrequisites\n\nDownload and install GitThis will be used to download the repository\n\nDownload and install Git LFSThis will be used to download any required binary assets, such as images or pdfs\n\nDownload and install NodeThis is the programming lanugage required to run the project\n\nDownload and Install YarnThis manages all 3rd-party code dependencies\n\n\nInstallation\nDownload the repo with binary assets\n$ git lfs clone https://github.com/IDEMSInternational/parenting-app-ui.gitNote - if you do a regular git clone, you can always run git lfs fetch --all later to sync assets\nInstall required dependencies\n$ cd parenting-app-ui\n$ yarn installNote - you may have to do this from time to time when content is updated)\nConfiguration\nSet Deployment\nThe app supports using different workspace or deployment configurations. These are stored in .idems_app/deployments\nAn initial deployment should be specified via the command\nyarn workflow deployment setFirebase\nTo be able to run the full project a specific configuration file needs to be included to access\nthe online database and authentication methods.\n$ cp src/environments/firebaseConfig.sample.ts src/environments/firebaseConfig.tsThe default file is blank. It should be replaced with a version requested from the dev team.\n(Note - this process will likely be simplified in the future)\nRunning locally\nStart the local server\nyarn startThis will start a local server and serve the app in your browser on http://localhost:4200\nFor Content Coders\nPlease see Quickstart Authors\nFor Developers\nPlease see Quickstart Developers\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"license.html":{"url":"license.html","title":"getting-started - license","body":"\n \n\n GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. https://fsf.org/\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n Preamble The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users. We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors. You can apply it to\nyour programs, too.\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights. Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received. You must make sure that they, too, receive\nor can get the source code. And you must show them these terms so they\nknow their rights.\n Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software. For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so. This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software. The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable. Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts. If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary. To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n The precise terms and conditions for copying, distribution and\nmodification follow.\n TERMS AND CONDITIONS\nDefinitions.\n\n \"This License\" refers to version 3 of the GNU General Public License.\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\nSource Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n The Corresponding Source for a work in source code form is that\nsame work.\n\nBasic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\nProtecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\nConveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\nConveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\na) The work must carry prominent notices stating that you modified\nit, and giving a relevant date.\n\nb) The work must carry prominent notices stating that it is\nreleased under this License and any conditions added under section\n7. This requirement modifies the requirement in section 4 to\n\"keep intact all notices\".\n\nc) You must license the entire work, as a whole, under this\nLicense to anyone who comes into possession of a copy. This\nLicense will therefore apply, along with any applicable section 7\nadditional terms, to the whole of the work, and all its parts,\nregardless of how they are packaged. This License gives no\npermission to license the work in any other way, but it does not\ninvalidate such permission if you have separately received it.\n\nd) If the work has interactive user interfaces, each must display\nAppropriate Legal Notices; however, if the Program has interactive\ninterfaces that do not display Appropriate Legal Notices, your\nwork need not make them do so. A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\nConveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\na) Convey the object code in, or embodied in, a physical product\n(including a physical distribution medium), accompanied by the\nCorresponding Source fixed on a durable physical medium\ncustomarily used for software interchange.\n\nb) Convey the object code in, or embodied in, a physical product\n(including a physical distribution medium), accompanied by a\nwritten offer, valid for at least three years and valid for as\nlong as you offer spare parts or customer support for that product\nmodel, to give anyone who possesses the object code either (1) a\ncopy of the Corresponding Source for all the software in the\nproduct that is covered by this License, on a durable physical\nmedium customarily used for software interchange, for a price no\nmore than your reasonable cost of physically performing this\nconveying of source, or (2) access to copy the\nCorresponding Source from a network server at no charge.\n\nc) Convey individual copies of the object code with a copy of the\nwritten offer to provide the Corresponding Source. This\nalternative is allowed only occasionally and noncommercially, and\nonly if you received the object code with such an offer, in accord\nwith subsection 6b.\n\nd) Convey the object code by offering access from a designated\nplace (gratis or for a charge), and offer equivalent access to the\nCorresponding Source in the same way through the same place at no\nfurther charge. You need not require recipients to copy the\nCorresponding Source along with the object code. If the place to\ncopy the object code is a network server, the Corresponding Source\nmay be on a different server (operated by you or a third party)\nthat supports equivalent copying facilities, provided you maintain\nclear directions next to the object code saying where to find the\nCorresponding Source. Regardless of what server hosts the\nCorresponding Source, you remain obligated to ensure that it is\navailable for as long as needed to satisfy these requirements.\n\ne) Convey the object code using peer-to-peer transmission, provided\nyou inform other peers where the object code and Corresponding\nSource of the work are being offered to the general public at no\ncharge under subsection 6d. A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\nAdditional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\na) Disclaiming warranty or limiting liability differently from the\nterms of sections 15 and 16 of this License; or\n\nb) Requiring preservation of specified reasonable legal notices or\nauthor attributions in that material or in the Appropriate Legal\nNotices displayed by works containing it; or\n\nc) Prohibiting misrepresentation of the origin of that material, or\nrequiring that modified versions of such material be marked in\nreasonable ways as different from the original version; or\n\nd) Limiting the use for publicity purposes of names of licensors or\nauthors of the material; or\n\ne) Declining to grant rights under trademark law for use of some\ntrade names, trademarks, or service marks; or\n\nf) Requiring indemnification of licensors and authors of that\nmaterial by anyone who conveys the material (or modified versions of\nit) with contractual assumptions of liability to the recipient, for\nany liability that these contractual assumptions directly impose on\nthose licensors and authors. All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\nTermination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\nAcceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\nAutomatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\nPatents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\nNo Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\nUse with the GNU Affero General Public License.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\nRevised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time. Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\nDisclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\nLimitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\nInterpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\nCopyright (C) \n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see .Also add information on how to contact you by electronic and paper mail.\n If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n Copyright (C) \nThis program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions; type `show c' for details.The hypothetical commands show w' and show c' should show the appropriate\nparts of the General Public License. Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\nhttps://www.gnu.org/licenses/.\n The GNU General Public License does not permit incorporating your program\ninto proprietary programs. If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library. If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License. But first, please read\nhttps://www.gnu.org/licenses/why-not-lgpl.html.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"modules.html":{"url":"modules.html","title":"modules - modules","body":"\n \n\n\n\n\n Modules\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"overview.html":{"url":"overview.html","title":"overview - overview","body":"\n \n\n\n\n Overview\n\n \n\n \n \n \n \n \n 54 Components\n \n \n \n \n \n \n \n 7 Classes\n \n \n \n \n \n \n \n 13 Interfaces\n \n \n \n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"properties.html":{"url":"properties.html","title":"package-properties - properties","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n Properties\n \n \n \n Version : 0.16.17\n \n Description : \n \n Homepage : https://idems.international/\n \n License : See LICENSE\n \n Author : IDEMS International\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"miscellaneous/typealiases.html":{"url":"miscellaneous/typealiases.html","title":"miscellaneous-typealiases - typealiases","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n Type aliases\n\n\n\n Index\n \n \n \n \n \n \n ExternalInstance   (src/.../type-def.ts)\n \n \n FormDataObj   (src/.../type-def.ts)\n \n \n FormOptions   (src/.../form.ts)\n \n \n jQuery   (src/.../type-def.ts)\n \n \n UpdatedDataNodes   (src/.../type-def.ts)\n \n \n ValidateInputResolution   (src/.../form.ts)\n \n \n \n \n \n \n\n\n src/app/shared/components/template/components/odk-form/libs/enketo/js/type-def.ts\n \n \n \n \n \n \n ExternalInstance\n \n \n \n \n literal type\n\n \n \n \n \n \n \n \n \n \n FormDataObj\n \n \n \n \n literal type\n\n \n \n \n \n \n \n \n \n \n jQuery\n \n \n \n \n object\n\n \n \n \n \n \n \n \n \n \n UpdatedDataNodes\n \n \n \n \n any\n\n \n \n \n \n src/app/shared/components/template/components/odk-form/libs/enketo/js/form.ts\n \n \n \n \n \n \n FormOptions\n \n \n \n \n literal type\n\n \n \n \n \n \n \n \n \n \n ValidateInputResolution\n \n \n \n \n literal type\n\n \n \n \n \n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} +} diff --git a/documentation/docs/generated/js/sourceCode.js b/documentation/docs/generated/js/sourceCode.js new file mode 100644 index 0000000000..541dbd1160 --- /dev/null +++ b/documentation/docs/generated/js/sourceCode.js @@ -0,0 +1,58 @@ +document.addEventListener('DOMContentLoaded', function() { + var $tabSource = document.querySelector('#source-tab'), + $tabInfo = document.querySelector('#info-tab'), + $tabReadme = document.querySelector('#readme-tab'), + $tabTemplate = document.querySelector('#templateData-tab'), + $tabTree = document.querySelector('#tree-tab'), + $tabExample = document.querySelector('#example-tab'), + $prismPre = document.querySelector('pre.compodoc-sourcecode'); + if ($tabSource && $prismPre) { + $prismCode = $prismPre.querySelector('code'), + $content = document.querySelector('.content'), + prismLinks = document.querySelectorAll('.link-to-prism') + + for (var i = 0; i < prismLinks.length; i++) { + prismLinks[i].addEventListener('click', linkToPrism, false); + } + + function linkToPrism(event) { + var targetLine = event.target.getAttribute('data-line'); + event.preventDefault(); + + $prismPre.setAttribute('data-line', targetLine); + Prism.highlightElement($prismCode, function() {}); + + $tabSource.click(); + + setTimeout(function() { + var $prismHighlightLine = document.querySelector('.line-highlight'), + top = parseInt(getComputedStyle($prismHighlightLine)['top']); + $content.scrollTop = top; + }, 500); + }; + + window.onhashchange = function(event) { + switch (window.location.hash) { + case '': + case '#info': + $tabInfo.click(); + break; + case '#readme': + $tabReadme.click(); + break; + case '#source': + $tabSource.click(); + break; + case '#template': + $tabTemplate.click(); + break; + case '#dom-tree': + $tabTree.click(); + break; + case '#example': + $tabExample.click(); + break; + } + } + } +}); diff --git a/documentation/docs/generated/js/svg-pan-zoom.controls.js b/documentation/docs/generated/js/svg-pan-zoom.controls.js new file mode 100644 index 0000000000..ea6d138d5a --- /dev/null +++ b/documentation/docs/generated/js/svg-pan-zoom.controls.js @@ -0,0 +1,53 @@ +document.addEventListener('DOMContentLoaded', function() { + if (document.getElementById('module-graph-svg')) { + panZoom = svgPanZoom(document.getElementById('module-graph-svg').querySelector('svg'), { + zoomEnabled: true, + minZoom: 1, + maxZoom: 5 + }); + + document.getElementById('zoom-in').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomIn(); + }); + + document.getElementById('zoom-out').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomOut(); + }); + + document.getElementById('reset').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.resetZoom(); + panZoom.resetPan(); + }); + + var overviewFullscreen = false, + originalOverviewHeight; + + document.getElementById('fullscreen').addEventListener('click', function(ev) { + if (overviewFullscreen) { + document.getElementById('module-graph-svg').style.height = originalOverviewHeight; + overviewFullscreen = false; + if (ev.target) { + ev.target.classList.remove('ion-md-close'); + ev.target.classList.add('ion-ios-resize'); + } + } else { + originalOverviewHeight = document.getElementById('module-graph-svg').style.height; + document.getElementById('module-graph-svg').style.height = '85vh'; + overviewFullscreen = true; + if (ev.target) { + ev.target.classList.remove('ion-ios-resize'); + ev.target.classList.add('ion-md-close'); + } + } + document.getElementById('module-graph-svg').querySelector('svg').style.height = document.getElementById('module-graph-svg').clientHeight; + setTimeout(function() { + panZoom.resize(); + panZoom.fit(); + panZoom.center(); + }, 0) + }); + } +}); diff --git a/documentation/docs/generated/js/tabs.js b/documentation/docs/generated/js/tabs.js new file mode 100644 index 0000000000..dbe4c28784 --- /dev/null +++ b/documentation/docs/generated/js/tabs.js @@ -0,0 +1,21 @@ +document.addEventListener('DOMContentLoaded', function() { + var tabs = document.getElementsByClassName('nav-tabs'), + updateAddress = function(e) { + if(history.pushState && e.target.dataset.link) { + history.pushState(null, null, '#' + e.target.dataset.link); + } + }; + if (tabs.length > 0) { + tabs = tabs[0].querySelectorAll('li'); + for (var i = 0; i < tabs.length; i++) { + tabs[i].addEventListener('click', updateAddress); + var linkTag = tabs[i].querySelector('a'); + if (location.hash !== '') { + var currentHash = location.hash.substr(1); + if (currentHash === linkTag.dataset.link) { + linkTag.click(); + } + } + } + } +}); diff --git a/documentation/docs/generated/js/tree.js b/documentation/docs/generated/js/tree.js new file mode 100644 index 0000000000..f79e1d711e --- /dev/null +++ b/documentation/docs/generated/js/tree.js @@ -0,0 +1,147 @@ +document.addEventListener('DOMContentLoaded', function() { + var tabs = document.getElementsByClassName('nav-tabs')[0], + tabsCollection = tabs.getElementsByTagName('A'), + treeTab; + var len = tabsCollection.length; + for(var i = 0; i < len; i++) { + if (tabsCollection[i].getAttribute('id') === 'tree-tab') { + treeTab = tabsCollection[i]; + } + } + + // short-circuit if no tree tab + if (!treeTab) return; + + var handler = new Tautologistics.NodeHtmlParser.HtmlBuilder(function(error, dom) { + if (error) { + console.log('handler ko'); + } + }), + parser = new Tautologistics.NodeHtmlParser.Parser(handler), + currentLocation = window.location; + parser.parseComplete(COMPONENT_TEMPLATE); + + var newNodes = [], + newEdges = [], + parsedHtml = handler.dom[0], + nodeCount = 0, + nodeLevel = 0; + + newNodes.push({ + _id: 0, + label: parsedHtml.name, + type: parsedHtml.type + }) + //Add id for nodes + var traverseIds = function(o) { + for (i in o) { + if (!!o[i] && typeof(o[i]) == "object") { + if (!o[i].length && o[i].type === 'tag') { + nodeCount += 1; + o[i]._id = nodeCount; + } + traverseIds(o[i]); + } + } + } + parsedHtml._id = 0; + traverseIds(parsedHtml); + + + var DeepIterator = deepIterator.default, + it = DeepIterator(parsedHtml); + for (let { + value, + parent, + parentNode, + key, + type + } of it) { + if (type === 'NonIterableObject' && typeof key !== 'undefined' && value.type === 'tag') { + var newNode = { + id: value._id, + label: value.name, + type: value.type + }; + for(var i = 0; i < COMPONENTS.length; i++) { + if (COMPONENTS[i].selector === value.name) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FB7E81'; + newNode.name = COMPONENTS[i].name; + } + } + for(var i = 0; i < DIRECTIVES.length; i++) { + if (value.attributes) { + for(attr in value.attributes) { + if (DIRECTIVES[i].selector.indexOf(attr) !== -1) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FF9800'; + newNode.name = DIRECTIVES[i].name; + } + } + } + } + newNodes.push(newNode); + newEdges.push({ + from: parentNode._parent._id, + to: value._id, + arrows: 'to' + }); + } + } + + newNodes.shift(); + + var container = document.getElementById('tree-container'), + data = { + nodes: newNodes, + edges: newEdges + }, + options = { + layout: { + hierarchical: { + sortMethod: 'directed', + enabled: true + } + }, + nodes: { + shape: 'ellipse', + fixed: true + } + }, + + handleClickNode = function(params) { + var clickeNodeId; + if (params.nodes.length > 0) { + clickeNodeId = params.nodes[0]; + for(var i = 0; i < newNodes.length; i++) { + if (newNodes[i].id === clickeNodeId) { + for(var j = 0; j < COMPONENTS.length; j++) { + if (COMPONENTS[j].name === newNodes[i].name) { + document.location.href = currentLocation.origin + currentLocation.pathname.replace(ACTUAL_COMPONENT.name, newNodes[i].name); + } + } + } + } + } + }, + + loadTree = function () { + setTimeout(function() { + container.style.height = document.getElementsByClassName('content')[0].offsetHeight - 140 + 'px'; + var network = new vis.Network(container, data, options); + network.on('click', handleClickNode); + }, 200); // Fade is 0.150 + }; + + loadTree(); + treeTab.addEventListener('click', function() { + loadTree(); + }); +}); diff --git a/documentation/docs/generated/license.html b/documentation/docs/generated/license.html new file mode 100644 index 0000000000..aabbe5ee64 --- /dev/null +++ b/documentation/docs/generated/license.html @@ -0,0 +1,710 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                    +
                                                                                                                                                                    + + +
                                                                                                                                                                    +
                                                                                                                                                                    + +
                                                                                                                                                                                    GNU GENERAL PUBLIC LICENSE
                                                                                                                                                                    +                   Version 3, 29 June 2007

                                                                                                                                                                    Copyright (C) 2007 Free Software Foundation, Inc. https://fsf.org/ + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed.

                                                                                                                                                                    +
                                                                                                                                                                                            Preamble

                                                                                                                                                                    The GNU General Public License is a free, copyleft license for +software and other kinds of works.

                                                                                                                                                                    +

                                                                                                                                                                    The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too.

                                                                                                                                                                    +

                                                                                                                                                                    When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things.

                                                                                                                                                                    +

                                                                                                                                                                    To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others.

                                                                                                                                                                    +

                                                                                                                                                                    For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights.

                                                                                                                                                                    +

                                                                                                                                                                    Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it.

                                                                                                                                                                    +

                                                                                                                                                                    For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions.

                                                                                                                                                                    +

                                                                                                                                                                    Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users.

                                                                                                                                                                    +

                                                                                                                                                                    Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free.

                                                                                                                                                                    +

                                                                                                                                                                    The precise terms and conditions for copying, distribution and +modification follow.

                                                                                                                                                                    +
                                                                                                                                                                                       TERMS AND CONDITIONS
                                                                                                                                                                      +
                                                                                                                                                                    1. Definitions.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    "This License" refers to version 3 of the GNU General Public License.

                                                                                                                                                                    +

                                                                                                                                                                    "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks.

                                                                                                                                                                    +

                                                                                                                                                                    "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations.

                                                                                                                                                                    +

                                                                                                                                                                    To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work.

                                                                                                                                                                    +

                                                                                                                                                                    A "covered work" means either the unmodified Program or a work based +on the Program.

                                                                                                                                                                    +

                                                                                                                                                                    To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well.

                                                                                                                                                                    +

                                                                                                                                                                    To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying.

                                                                                                                                                                    +

                                                                                                                                                                    An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Source Code.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work.

                                                                                                                                                                    +

                                                                                                                                                                    A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language.

                                                                                                                                                                    +

                                                                                                                                                                    The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it.

                                                                                                                                                                    +

                                                                                                                                                                    The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work.

                                                                                                                                                                    +

                                                                                                                                                                    The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source.

                                                                                                                                                                    +

                                                                                                                                                                    The Corresponding Source for a work in source code form is that +same work.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Basic Permissions.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law.

                                                                                                                                                                    +

                                                                                                                                                                    You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you.

                                                                                                                                                                    +

                                                                                                                                                                    Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Protecting Users' Legal Rights From Anti-Circumvention Law.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures.

                                                                                                                                                                    +

                                                                                                                                                                    When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Conveying Verbatim Copies.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program.

                                                                                                                                                                    +

                                                                                                                                                                    You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Conveying Modified Source Versions.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions:

                                                                                                                                                                    +
                                                                                                                                                                    a) The work must carry prominent notices stating that you modified
                                                                                                                                                                    +it, and giving a relevant date.
                                                                                                                                                                    +
                                                                                                                                                                    +b) The work must carry prominent notices stating that it is
                                                                                                                                                                    +released under this License and any conditions added under section
                                                                                                                                                                    +7.  This requirement modifies the requirement in section 4 to
                                                                                                                                                                    +"keep intact all notices".
                                                                                                                                                                    +
                                                                                                                                                                    +c) You must license the entire work, as a whole, under this
                                                                                                                                                                    +License to anyone who comes into possession of a copy.  This
                                                                                                                                                                    +License will therefore apply, along with any applicable section 7
                                                                                                                                                                    +additional terms, to the whole of the work, and all its parts,
                                                                                                                                                                    +regardless of how they are packaged.  This License gives no
                                                                                                                                                                    +permission to license the work in any other way, but it does not
                                                                                                                                                                    +invalidate such permission if you have separately received it.
                                                                                                                                                                    +
                                                                                                                                                                    +d) If the work has interactive user interfaces, each must display
                                                                                                                                                                    +Appropriate Legal Notices; however, if the Program has interactive
                                                                                                                                                                    +interfaces that do not display Appropriate Legal Notices, your
                                                                                                                                                                    +work need not make them do so.

                                                                                                                                                                    A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Conveying Non-Source Forms.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways:

                                                                                                                                                                    +
                                                                                                                                                                    a) Convey the object code in, or embodied in, a physical product
                                                                                                                                                                    +(including a physical distribution medium), accompanied by the
                                                                                                                                                                    +Corresponding Source fixed on a durable physical medium
                                                                                                                                                                    +customarily used for software interchange.
                                                                                                                                                                    +
                                                                                                                                                                    +b) Convey the object code in, or embodied in, a physical product
                                                                                                                                                                    +(including a physical distribution medium), accompanied by a
                                                                                                                                                                    +written offer, valid for at least three years and valid for as
                                                                                                                                                                    +long as you offer spare parts or customer support for that product
                                                                                                                                                                    +model, to give anyone who possesses the object code either (1) a
                                                                                                                                                                    +copy of the Corresponding Source for all the software in the
                                                                                                                                                                    +product that is covered by this License, on a durable physical
                                                                                                                                                                    +medium customarily used for software interchange, for a price no
                                                                                                                                                                    +more than your reasonable cost of physically performing this
                                                                                                                                                                    +conveying of source, or (2) access to copy the
                                                                                                                                                                    +Corresponding Source from a network server at no charge.
                                                                                                                                                                    +
                                                                                                                                                                    +c) Convey individual copies of the object code with a copy of the
                                                                                                                                                                    +written offer to provide the Corresponding Source.  This
                                                                                                                                                                    +alternative is allowed only occasionally and noncommercially, and
                                                                                                                                                                    +only if you received the object code with such an offer, in accord
                                                                                                                                                                    +with subsection 6b.
                                                                                                                                                                    +
                                                                                                                                                                    +d) Convey the object code by offering access from a designated
                                                                                                                                                                    +place (gratis or for a charge), and offer equivalent access to the
                                                                                                                                                                    +Corresponding Source in the same way through the same place at no
                                                                                                                                                                    +further charge.  You need not require recipients to copy the
                                                                                                                                                                    +Corresponding Source along with the object code.  If the place to
                                                                                                                                                                    +copy the object code is a network server, the Corresponding Source
                                                                                                                                                                    +may be on a different server (operated by you or a third party)
                                                                                                                                                                    +that supports equivalent copying facilities, provided you maintain
                                                                                                                                                                    +clear directions next to the object code saying where to find the
                                                                                                                                                                    +Corresponding Source.  Regardless of what server hosts the
                                                                                                                                                                    +Corresponding Source, you remain obligated to ensure that it is
                                                                                                                                                                    +available for as long as needed to satisfy these requirements.
                                                                                                                                                                    +
                                                                                                                                                                    +e) Convey the object code using peer-to-peer transmission, provided
                                                                                                                                                                    +you inform other peers where the object code and Corresponding
                                                                                                                                                                    +Source of the work are being offered to the general public at no
                                                                                                                                                                    +charge under subsection 6d.

                                                                                                                                                                    A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work.

                                                                                                                                                                    +

                                                                                                                                                                    A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product.

                                                                                                                                                                    +

                                                                                                                                                                    "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made.

                                                                                                                                                                    +

                                                                                                                                                                    If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM).

                                                                                                                                                                    +

                                                                                                                                                                    The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network.

                                                                                                                                                                    +

                                                                                                                                                                    Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Additional Terms.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions.

                                                                                                                                                                    +

                                                                                                                                                                    When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission.

                                                                                                                                                                    +

                                                                                                                                                                    Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms:

                                                                                                                                                                    +
                                                                                                                                                                    a) Disclaiming warranty or limiting liability differently from the
                                                                                                                                                                    +terms of sections 15 and 16 of this License; or
                                                                                                                                                                    +
                                                                                                                                                                    +b) Requiring preservation of specified reasonable legal notices or
                                                                                                                                                                    +author attributions in that material or in the Appropriate Legal
                                                                                                                                                                    +Notices displayed by works containing it; or
                                                                                                                                                                    +
                                                                                                                                                                    +c) Prohibiting misrepresentation of the origin of that material, or
                                                                                                                                                                    +requiring that modified versions of such material be marked in
                                                                                                                                                                    +reasonable ways as different from the original version; or
                                                                                                                                                                    +
                                                                                                                                                                    +d) Limiting the use for publicity purposes of names of licensors or
                                                                                                                                                                    +authors of the material; or
                                                                                                                                                                    +
                                                                                                                                                                    +e) Declining to grant rights under trademark law for use of some
                                                                                                                                                                    +trade names, trademarks, or service marks; or
                                                                                                                                                                    +
                                                                                                                                                                    +f) Requiring indemnification of licensors and authors of that
                                                                                                                                                                    +material by anyone who conveys the material (or modified versions of
                                                                                                                                                                    +it) with contractual assumptions of liability to the recipient, for
                                                                                                                                                                    +any liability that these contractual assumptions directly impose on
                                                                                                                                                                    +those licensors and authors.

                                                                                                                                                                    All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying.

                                                                                                                                                                    +

                                                                                                                                                                    If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms.

                                                                                                                                                                    +

                                                                                                                                                                    Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Termination.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11).

                                                                                                                                                                    +

                                                                                                                                                                    However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation.

                                                                                                                                                                    +

                                                                                                                                                                    Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice.

                                                                                                                                                                    +

                                                                                                                                                                    Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Acceptance Not Required for Having Copies.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Automatic Licensing of Downstream Recipients.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License.

                                                                                                                                                                    +

                                                                                                                                                                    An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts.

                                                                                                                                                                    +

                                                                                                                                                                    You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Patents.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version".

                                                                                                                                                                    +

                                                                                                                                                                    A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License.

                                                                                                                                                                    +

                                                                                                                                                                    Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version.

                                                                                                                                                                    +

                                                                                                                                                                    In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party.

                                                                                                                                                                    +

                                                                                                                                                                    If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid.

                                                                                                                                                                    +

                                                                                                                                                                    If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it.

                                                                                                                                                                    +

                                                                                                                                                                    A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007.

                                                                                                                                                                    +

                                                                                                                                                                    Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. No Surrender of Others' Freedom.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Use with the GNU Affero General Public License.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Revised Versions of this License.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns.

                                                                                                                                                                    +

                                                                                                                                                                    Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation.

                                                                                                                                                                    +

                                                                                                                                                                    If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program.

                                                                                                                                                                    +

                                                                                                                                                                    Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Disclaimer of Warranty.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Limitation of Liability.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES.

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                    1. Interpretation of Sections 15 and 16.
                                                                                                                                                                    2. +
                                                                                                                                                                    +

                                                                                                                                                                    If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee.

                                                                                                                                                                    +
                                                                                                                                                                                     END OF TERMS AND CONDITIONS
                                                                                                                                                                    +
                                                                                                                                                                    +        How to Apply These Terms to Your New Programs

                                                                                                                                                                    If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms.

                                                                                                                                                                    +

                                                                                                                                                                    To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found.

                                                                                                                                                                    +
                                                                                                                                                                    <one line to give the program's name and a brief idea of what it does.>
                                                                                                                                                                    +Copyright (C) <year>  <name of author>
                                                                                                                                                                    +
                                                                                                                                                                    +This program is free software: you can redistribute it and/or modify
                                                                                                                                                                    +it under the terms of the GNU General Public License as published by
                                                                                                                                                                    +the Free Software Foundation, either version 3 of the License, or
                                                                                                                                                                    +(at your option) any later version.
                                                                                                                                                                    +
                                                                                                                                                                    +This program is distributed in the hope that it will be useful,
                                                                                                                                                                    +but WITHOUT ANY WARRANTY; without even the implied warranty of
                                                                                                                                                                    +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                                                                                                                                                                    +GNU General Public License for more details.
                                                                                                                                                                    +
                                                                                                                                                                    +You should have received a copy of the GNU General Public License
                                                                                                                                                                    +along with this program.  If not, see <https://www.gnu.org/licenses/>.

                                                                                                                                                                    Also add information on how to contact you by electronic and paper mail.

                                                                                                                                                                    +

                                                                                                                                                                    If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode:

                                                                                                                                                                    +
                                                                                                                                                                    <program>  Copyright (C) <year>  <name of author>
                                                                                                                                                                    +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
                                                                                                                                                                    +This is free software, and you are welcome to redistribute it
                                                                                                                                                                    +under certain conditions; type `show c' for details.

                                                                                                                                                                    The hypothetical commands show w' and show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box".

                                                                                                                                                                    +

                                                                                                                                                                    You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +https://www.gnu.org/licenses/.

                                                                                                                                                                    +

                                                                                                                                                                    The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +https://www.gnu.org/licenses/why-not-lgpl.html.

                                                                                                                                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                    +
                                                                                                                                                                    +

                                                                                                                                                                    results matching ""

                                                                                                                                                                    +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      No results matching ""

                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/miscellaneous/functions.html b/documentation/docs/generated/miscellaneous/functions.html new file mode 100644 index 0000000000..0ea3cbf986 --- /dev/null +++ b/documentation/docs/generated/miscellaneous/functions.html @@ -0,0 +1,4746 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                      +
                                                                                                                                                                      + + +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      +

                                                                                                                                                                      Index

                                                                                                                                                                      + + + + + + +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      + +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _distanceBetween + + +
                                                                                                                                                                      +_distanceBetween(p1, p2) +
                                                                                                                                                                      + + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      p1 + No +
                                                                                                                                                                      p2 + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _latLngsValid + + +
                                                                                                                                                                      +_latLngsValid(latLngs) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      latLngs + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _toLatLngs + + +
                                                                                                                                                                      +_toLatLngs(geopoints) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      geopoints + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _toRadians + + +
                                                                                                                                                                      +_toRadians(angle) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      angle + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + area + + +
                                                                                                                                                                      +area(geopoints) +
                                                                                                                                                                      + + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      geopoints + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asGeopoints + + +
                                                                                                                                                                      +asGeopoints(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + distance + + +
                                                                                                                                                                      +distance(geopoints) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      geopoints + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _getSiblingElements + + +
                                                                                                                                                                      +_getSiblingElements(element, selector: string, includeSelf) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets siblings that match selector in DOM order.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      selector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      includeSelf + + No + + false + +
                                                                                                                                                                        +
                                                                                                                                                                      • Whether to include self.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + closestAncestorUntil + + +
                                                                                                                                                                      +closestAncestorUntil(element, filterSelector: string, endSelector: null) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets closest ancestor that match selector until the end selector.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      filterSelector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      endSelector + null + + No + + null + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector indicating where to stop. It will include this element if matched by the filter.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + empty + + +
                                                                                                                                                                      +empty(element) +
                                                                                                                                                                      +

                                                                                                                                                                      Removes all children elements.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      element + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getAncestors + + +
                                                                                                                                                                      +getAncestors(element, filterSelector: string, endSelector: null) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets ancestors that match selector in DOM order.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      filterSelector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      endSelector + null + + No + + null + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector indicating where to stop. It will include this element if matched by the filter.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getChild + + +
                                                                                                                                                                      +getChild(element, selector: string) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets first child element, that (optionally) matches a selector.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      selector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getChildren + + +
                                                                                                                                                                      +getChildren(element, selector: string) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets child elements, that (optionally) match a selector.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      selector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getRepeatIndex + + +
                                                                                                                                                                      +getRepeatIndex(node) +
                                                                                                                                                                      +

                                                                                                                                                                      Obtains the index of a repeat instance within its own series.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      node + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • XML node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getSiblingElement + + +
                                                                                                                                                                      +getSiblingElement(element, selector: string) +
                                                                                                                                                                      +

                                                                                                                                                                      Returns first sibling element (in DOM order) that optionally matches the provided selector.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      element + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      selector + string + + No + + "*" + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + Returns : Element + +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      First sibling element in DOM order

                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getSiblingElements + + +
                                                                                                                                                                      +getSiblingElements(element, selector) +
                                                                                                                                                                      +

                                                                                                                                                                      Gets siblings that match selector in DOM order.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      element + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target element.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      selector + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • A CSS selector.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getSiblingElementsAndSelf + + +
                                                                                                                                                                      +getSiblingElementsAndSelf(element, selector) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      element + No +
                                                                                                                                                                      selector + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getXPath + + +
                                                                                                                                                                      +getXPath(node, rootNodeName: string, includePosition) +
                                                                                                                                                                      +

                                                                                                                                                                      Creates an XPath from a node

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptionalDefault valueDescription
                                                                                                                                                                      node + + No + + +
                                                                                                                                                                        +
                                                                                                                                                                      • XML node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      rootNodeName + string + + No + + "#document" + +
                                                                                                                                                                        +
                                                                                                                                                                      • Defaults to #document
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      includePosition + + No + + false + +
                                                                                                                                                                        +
                                                                                                                                                                      • Whether or not to include the positions /path/to/repeat[2]/node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + hasNextSiblingElementSameName + + +
                                                                                                                                                                      +hasNextSiblingElementSameName(el) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      el + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + hasPreviousCommentSiblingWithContent + + +
                                                                                                                                                                      +hasPreviousCommentSiblingWithContent(node, content) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      node + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      content + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Text content to look for
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + hasPreviousSiblingElementSameName + + +
                                                                                                                                                                      +hasPreviousSiblingElementSameName(el) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      el + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + hasSiblingElementSameName + + +
                                                                                                                                                                      +hasSiblingElementSameName(el) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      el + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Target node
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/random-token.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + +
                                                                                                                                                                      + + + _random13chars + + +
                                                                                                                                                                      +_random13chars() +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + randomToken + + +
                                                                                                                                                                      +randomToken(length) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      length + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + _zeroPad + + +
                                                                                                                                                                      +_zeroPad(n, len?) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      n + No +
                                                                                                                                                                      len + Yes +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asDate + + +
                                                                                                                                                                      +asDate(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asInteger + + +
                                                                                                                                                                      +asInteger(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getNode + + +
                                                                                                                                                                      +getNode(ctx, r) +
                                                                                                                                                                      +

                                                                                                                                                                      If r is supplied, returns the first Element or Attribute in r by document order. +If r is not supplied, returns the ctx iff it is an Element or Attribute.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      ctx + No +
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + getNodeName + + +
                                                                                                                                                                      +getNodeName(ctx, r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      ctx + No +
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + isNodeish + + +
                                                                                                                                                                      +isNodeish(__namedParameters: {nodeType}) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      nodeType + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + mapFn + + +
                                                                                                                                                                      +mapFn(fn, ..._args: any[]) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameTypeOptional
                                                                                                                                                                      fn + + No +
                                                                                                                                                                      _args + any[] + + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + uuid + + +
                                                                                                                                                                      +uuid() +
                                                                                                                                                                      +

                                                                                                                                                                      Implementation from https://stackoverflow.com/a/2117523, added in revision +https://stackoverflow.com/revisions/2117523/11, licensed under CC by SA 3.0 +(https://creativecommons.org/licenses/by-sa/3.0/), see +https://stackoverflow.com/posts/2117523/timeline. Formatting may have been +changed.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/enketo/js/event.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + AddRepeat + + +
                                                                                                                                                                      +AddRepeat(detail) +
                                                                                                                                                                      +

                                                                                                                                                                      The addrepeat event is similar but fired under different circumstances.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDefault valueDescription
                                                                                                                                                                      detail + No + + undefined + +
                                                                                                                                                                        +
                                                                                                                                                                      • Data to be passed with event.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + ApplyFocus + + +
                                                                                                                                                                      +ApplyFocus() +
                                                                                                                                                                      +

                                                                                                                                                                      Apply focus event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + BeforeSave + + +
                                                                                                                                                                      +BeforeSave() +
                                                                                                                                                                      +

                                                                                                                                                                      Before save event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Change + + +
                                                                                                                                                                      +Change() +
                                                                                                                                                                      +

                                                                                                                                                                      Change event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + ChangeLanguage + + +
                                                                                                                                                                      +ChangeLanguage() +
                                                                                                                                                                      +

                                                                                                                                                                      Change language event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + +
                                                                                                                                                                      + + + ChangeOption + + +
                                                                                                                                                                      +ChangeOption() +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + DataUpdate + + +
                                                                                                                                                                      +DataUpdate(detail) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDefault value
                                                                                                                                                                      detail + No + + undefined +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + DePrintify + + +
                                                                                                                                                                      +DePrintify() +
                                                                                                                                                                      +

                                                                                                                                                                      Go to deprintify text event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Edited + + +
                                                                                                                                                                      +Edited() +
                                                                                                                                                                      +

                                                                                                                                                                      Edited event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + FakeFocus + + +
                                                                                                                                                                      +FakeFocus() +
                                                                                                                                                                      +

                                                                                                                                                                      Fake focus event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + GoToInvisible + + +
                                                                                                                                                                      +GoToInvisible() +
                                                                                                                                                                      +

                                                                                                                                                                      Go to invisible event fired when the target has no form control. +This is event has prevalence of the "go to hidden" event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + GoToIrrelevant + + +
                                                                                                                                                                      +GoToIrrelevant() +
                                                                                                                                                                      +

                                                                                                                                                                      Go to hidden event fired when the goto target is not relevant.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Input + + +
                                                                                                                                                                      +Input() +
                                                                                                                                                                      +

                                                                                                                                                                      Input event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + InputUpdate + + +
                                                                                                                                                                      +InputUpdate() +
                                                                                                                                                                      +

                                                                                                                                                                      Input update event which fires when a form control value is updated programmatically.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + InstanceFirstLoad + + +
                                                                                                                                                                      +InstanceFirstLoad() +
                                                                                                                                                                      +

                                                                                                                                                                      The odk-instance-first-load event as defined in the ODK XForms spec.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Invalidated + + +
                                                                                                                                                                      +Invalidated() +
                                                                                                                                                                      +

                                                                                                                                                                      Invalidated event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + NewRepeat + + +
                                                                                                                                                                      +NewRepeat(detail) +
                                                                                                                                                                      +

                                                                                                                                                                      The odk-new-repeat event as defined in the ODK XForms spec.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDefault valueDescription
                                                                                                                                                                      detail + No + + undefined + +
                                                                                                                                                                        +
                                                                                                                                                                      • Data to be passed with event.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + PageFlip + + +
                                                                                                                                                                      +PageFlip() +
                                                                                                                                                                      +

                                                                                                                                                                      Page flip event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Printify + + +
                                                                                                                                                                      +Printify() +
                                                                                                                                                                      +

                                                                                                                                                                      Go to printify text event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + ProgressUpdate + + +
                                                                                                                                                                      +ProgressUpdate(detail) +
                                                                                                                                                                      +

                                                                                                                                                                      Progress update event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      detail + No + +
                                                                                                                                                                        +
                                                                                                                                                                      • Data to be passed with event
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Removed + + +
                                                                                                                                                                      +Removed(detail) +
                                                                                                                                                                      +

                                                                                                                                                                      Removed event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDefault valueDescription
                                                                                                                                                                      detail + No + + undefined + +
                                                                                                                                                                        +
                                                                                                                                                                      • Data to be passed with event
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + RemoveRepeat + + +
                                                                                                                                                                      +RemoveRepeat() +
                                                                                                                                                                      +

                                                                                                                                                                      Remove repeat event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + +
                                                                                                                                                                      + + + UpdateMaxSize + + +
                                                                                                                                                                      +UpdateMaxSize() +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + ValidationComplete + + +
                                                                                                                                                                      +ValidationComplete() +
                                                                                                                                                                      +

                                                                                                                                                                      Validation complete event.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + XFormsValueChanged + + +
                                                                                                                                                                      +XFormsValueChanged(detail) +
                                                                                                                                                                      +

                                                                                                                                                                      Xforms-value-changed event as defined in the ODK XForms spec.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDefault valueDescription
                                                                                                                                                                      detail + No + + undefined + +
                                                                                                                                                                        +
                                                                                                                                                                      • Data to be passed with event.
                                                                                                                                                                      • +
                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/xpath-cast.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asBoolean + + +
                                                                                                                                                                      +asBoolean(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asNumber + + +
                                                                                                                                                                      +asNumber(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + asString + + +
                                                                                                                                                                      +asString(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + isDomNode + + +
                                                                                                                                                                      +isDomNode(thing) +
                                                                                                                                                                      +

                                                                                                                                                                      Check if an object is a DOM Node, or one of its subtypes (e.g. Element).

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      thing + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + nodeToString + + +
                                                                                                                                                                      +nodeToString(node) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      node + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + bothOf + + +
                                                                                                                                                                      +bothOf(lhs, rhs, t) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      lhs + No +
                                                                                                                                                                      rhs + No +
                                                                                                                                                                      t + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + castFor + + +
                                                                                                                                                                      +castFor(r) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      r + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + equalityCompare + + +
                                                                                                                                                                      +equalityCompare(lhs, rhs, compareFn) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      lhs + No +
                                                                                                                                                                      rhs + No +
                                                                                                                                                                      compareFn + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + handleOperation + + +
                                                                                                                                                                      +handleOperation(lhs, op, rhs) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      lhs + No +
                                                                                                                                                                      op + No +
                                                                                                                                                                      rhs + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + oneOf + + +
                                                                                                                                                                      +oneOf(lhs, rhs, t) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      lhs + No +
                                                                                                                                                                      rhs + No +
                                                                                                                                                                      t + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + relationalCompare + + +
                                                                                                                                                                      +relationalCompare(lhs, rhs, compareFn) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      lhs + No +
                                                                                                                                                                      rhs + No +
                                                                                                                                                                      compareFn + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/sort-by-document-order.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + byDocumentOrder + + +
                                                                                                                                                                      +byDocumentOrder(a, b) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      a + No +
                                                                                                                                                                      b + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Unnamed function + + +
                                                                                                                                                                      +Unnamed function(ir) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      ir + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + convertSubstringArgs + + +
                                                                                                                                                                      +convertSubstringArgs(str, start, len) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      str + No +
                                                                                                                                                                      start + No +
                                                                                                                                                                      len + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + preprocessNativeArgs + + +
                                                                                                                                                                      +preprocessNativeArgs(name, args) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      name + No +
                                                                                                                                                                      args + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + dateStringToDays + + +
                                                                                                                                                                      +dateStringToDays(d) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      d + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + dateToDays + + +
                                                                                                                                                                      +dateToDays(d) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      d + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Random + + +
                                                                                                                                                                      +Random(seed) +
                                                                                                                                                                      +

                                                                                                                                                                      Creates a the Park-Miller PRNG pseudo-random value generator. +The seed must be an integer.

                                                                                                                                                                      +

                                                                                                                                                                      Adapted from: https://gist.github.com/blixt/f17b47c62508be59987b

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      seed + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      + + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + shuffle + + +
                                                                                                                                                                      +shuffle(array, seed) +
                                                                                                                                                                      +

                                                                                                                                                                      Performs the "inside-out" variant of the Fisher-Yates array shuffle.

                                                                                                                                                                      +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptionalDescription
                                                                                                                                                                      array + No + +
                                                                                                                                                                      seed + No + +

                                                                                                                                                                      the seed value

                                                                                                                                                                      + +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/utils/result.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + toSnapshotResult + + +
                                                                                                                                                                      +toSnapshotResult(arr, resultType, singleItem?) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      arr + No +
                                                                                                                                                                      resultType + No +
                                                                                                                                                                      singleItem + Yes +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + + + + +
                                                                                                                                                                      + + + Unnamed function + + +
                                                                                                                                                                      +Unnamed function(wrapped, extensions) +
                                                                                                                                                                      + +
                                                                                                                                                                      + Parameters : + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                      NameOptional
                                                                                                                                                                      wrapped + No +
                                                                                                                                                                      extensions + No +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      src/app/shared/components/template/components/odk-form/libs/enketo/js/xpath-evaluator-binding.ts

                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      + + + + + + + + + + + + +
                                                                                                                                                                      + + + Unnamed function + + +
                                                                                                                                                                      +Unnamed function() +
                                                                                                                                                                      +
                                                                                                                                                                      + + +
                                                                                                                                                                      +
                                                                                                                                                                      +

                                                                                                                                                                      results matching ""

                                                                                                                                                                      +
                                                                                                                                                                        +
                                                                                                                                                                        +
                                                                                                                                                                        +

                                                                                                                                                                        No results matching ""

                                                                                                                                                                        +
                                                                                                                                                                        +
                                                                                                                                                                        +
                                                                                                                                                                        + +
                                                                                                                                                                        +
                                                                                                                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/miscellaneous/typealiases.html b/documentation/docs/generated/miscellaneous/typealiases.html new file mode 100644 index 0000000000..7142e29ee6 --- /dev/null +++ b/documentation/docs/generated/miscellaneous/typealiases.html @@ -0,0 +1,250 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                        +
                                                                                                                                                                        + + +
                                                                                                                                                                        +
                                                                                                                                                                        + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                        +

                                                                                                                                                                        Index

                                                                                                                                                                        + + + + + + +
                                                                                                                                                                        + +
                                                                                                                                                                        +
                                                                                                                                                                        + +

                                                                                                                                                                        src/app/shared/components/template/components/odk-form/libs/enketo/js/type-def.ts

                                                                                                                                                                        +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + ExternalInstance +
                                                                                                                                                                        + literal type + +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + FormDataObj +
                                                                                                                                                                        + literal type + +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + jQuery +
                                                                                                                                                                        + object + +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + UpdatedDataNodes +
                                                                                                                                                                        + any + +
                                                                                                                                                                        +

                                                                                                                                                                        src/app/shared/components/template/components/odk-form/libs/enketo/js/form.ts

                                                                                                                                                                        +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + FormOptions +
                                                                                                                                                                        + literal type + +
                                                                                                                                                                        + + + + + + + + + +
                                                                                                                                                                        + + ValidateInputResolution +
                                                                                                                                                                        + literal type + +
                                                                                                                                                                        +
                                                                                                                                                                        + + +
                                                                                                                                                                        +
                                                                                                                                                                        +

                                                                                                                                                                        results matching ""

                                                                                                                                                                        +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          No results matching ""

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          + +
                                                                                                                                                                          +
                                                                                                                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/miscellaneous/variables.html b/documentation/docs/generated/miscellaneous/variables.html new file mode 100644 index 0000000000..3ab6b8e360 --- /dev/null +++ b/documentation/docs/generated/miscellaneous/variables.html @@ -0,0 +1,2520 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                          +
                                                                                                                                                                          + + +
                                                                                                                                                                          +
                                                                                                                                                                          + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                          +

                                                                                                                                                                          Index

                                                                                                                                                                          + + + + + + +
                                                                                                                                                                          + +
                                                                                                                                                                          +
                                                                                                                                                                          + +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/extended-xpath.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + AND + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b00100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + D + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0xdead +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + DIV + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10101 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + EQ + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01000 +
                                                                                                                                                                          + + + + + + + + + + + +
                                                                                                                                                                          + + + FUNCTION_NAME + + +
                                                                                                                                                                          + Default value : /^[a-z]/ +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + GT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01110 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + GTE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01111 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + LT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + LTE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01101 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MINUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10001 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MOD + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10110 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MULT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + NE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01001 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + OR + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b00000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + PLUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + UNION + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b11000 +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/utils/operation.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + AND + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b00100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + DIV + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10101 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + EQ + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + GT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01110 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + GTE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01111 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + LT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + LTE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01101 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MINUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10001 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MOD + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10110 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MULT + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + NE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01001 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + OR + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b00000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + PLUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + UNION + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b11000 +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-xpath.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + cast + + +
                                                                                                                                                                          + Type : object + +
                                                                                                                                                                          + Default value : { + string: asString, + boolean: asBoolean, + number: asNumber, +} +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/utils/native.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + cast + + +
                                                                                                                                                                          + Type : object + +
                                                                                                                                                                          + Default value : { num: asNumber, str: asString } +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + fns + + +
                                                                                                                                                                          + Type : object + +
                                                                                                                                                                          + Default value : { + ceiling: { min: 1, max: 1, cast: ["num"] }, + contains: { min: 2, max: 2, cast: ["str", "str"] }, + floor: { min: 1, max: 1, cast: ["num"] }, + id: { + min: 1, + max: 1, + conv: (r) => [xpr.string(r.t === "arr" ? r.v.map(asString).join(" ") : asString(r))], + }, + lang: { min: 1, max: 1, cast: ["str"] }, + "starts-with": { min: 2, max: 2, cast: ["str", "str"] }, + substring: { min: 2, max: 3, conv: convertSubstringArgs }, + "substring-after": { min: 2, max: 2, cast: ["str", "str"] }, + "substring-before": { min: 2, max: 2, cast: ["str", "str"] }, + translate: { min: 3, max: 3, cast: ["str", "str", "str"] }, +} +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/utils/date.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + +
                                                                                                                                                                          + + + DATE_STRING + + +
                                                                                                                                                                          + Default value : /^\d\d\d\d-\d{1,2}-\d{1,2}(?:T\d\d:\d\d:\d\d\.?\d?\d?(?:Z|[+-]\d\d:\d\d)|.*)?$/ +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + daysInMonth + + +
                                                                                                                                                                          + Default value : function (m, y) { + switch (m) { + case 1: + return (y % 4 == 0 && y % 100) || y % 400 == 0 ? 29 : 28; + case 8: + case 3: + case 5: + case 10: + return 30; + default: + return 31; + } +} +
                                                                                                                                                                          +

                                                                                                                                                                          Get the number of days in any particular month

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + isValidDate + + +
                                                                                                                                                                          + Default value : function (y, m, d) { + m = parseInt(m, 10) - 1; + return m >= 0 && m < 12 && d > 0 && d <= daysInMonth(m, y); +} +
                                                                                                                                                                          +

                                                                                                                                                                          Check if a date is valid

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/geo.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + EARTH_EQUATORIAL_RADIUS_METERS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 6378100 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + PRECISION + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 100 +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/enketo/js/dom-utils.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + elementDataStore + + +
                                                                                                                                                                          + Type : object + +
                                                                                                                                                                          + Default value : { + /** + * @type {WeakMap} + */ + _storage: new WeakMap(), + /** + * Adds object to element storage. Ensures that element storage exist. + * + * @param {Node} element - target element + * @param {string} key - name of the stored data + * @param {object} obj - stored data + */ + put(element, key, obj) { + if (!this._storage.has(element)) { + this._storage.set(element, new Map()); + } + this._storage.get(element).set(key, obj); + }, + /** + * Return object from element storage. + * + * @param {Node} element - target element + * @param {string} key - name of the stored data + * @return {object} stored data object + */ + get(element, key) { + const item = this._storage.get(element); + + return item ? item.get(key) : item; + }, + /** + * Checkes whether element has given storage item. + * + * @param {Node} element - target element + * @param {string} key - name of the stored data + * @return {boolean} whether data is present + */ + has(element, key) { + const item = this._storage.get(element); + + return item && item.has(key); + }, + /** + * Removes item from element storage. Removes element storage if empty. + * + * @param {Node} element - target element + * @param {string} key - name of the stored data + * @return {object} removed data object + */ + remove(element, key) { + const ret = this._storage.get(element).delete(key); + if (this._storage.get(key).size !== 0) { + this._storage.delete(element); + } + + return ret; + }, +} +
                                                                                                                                                                          +

                                                                                                                                                                          Adapted from https://stackoverflow.com/a/46522991/3071529

                                                                                                                                                                          +

                                                                                                                                                                          A storage solution aimed at replacing jQuerys data function. +Implementation Note: Elements are stored in a (WeakMap)[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap]. +This makes sure the data is garbage collected when the node is removed.

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/openrosa-extensions.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + EQ + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01000 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + GTE + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b01111 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MINUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10001 +
                                                                                                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + NODEISH + + +
                                                                                                                                                                          + Type : object + +
                                                                                                                                                                          + Default value : { + [Node.ELEMENT_NODE]: true, + [Node.ATTRIBUTE_NODE]: true, + [Node.PROCESSING_INSTRUCTION_NODE]: true, + [Node.DOCUMENT_TYPE_NODE]: true, +} +
                                                                                                                                                                          +

                                                                                                                                                                          I can't decode what a QName is from the spec, but it seems like only the +following nodeTypes are considered by XPath:

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          + + + + + + + + + + + +
                                                                                                                                                                          + + + openrosa_xpath_extensions + + +
                                                                                                                                                                          + Default value : function () { + const TOO_MANY_ARGS = new Error("too many args"), + TOO_FEW_ARGS = new Error("too few args"), + _round = function (num) { + if (num < 0) { + return -Math.round(-num); + } + return Math.round(num); + }, + format_date = function (date, format) { + date = asDate(date); + format = asString(format); + if ("" === date.toString() || isNaN(date)) return ""; + let c, + i, + sb = ""; + const year = 1900 + date.getYear(); + const month = 1 + date.getMonth(); + const day = date.getDate(); + const hour = date.getHours(); + const locale = (globalThis.window as any)?.enketoFormLocale; + + for (i = 0; i < format.length; ++i) { + c = format.charAt(i); + + if (c === "%") { + if (++i >= format.length) { + throw new Error("date format string ends with %"); + } + c = format.charAt(i); + + if (c === "%") { + // literal '%' + sb += "%"; + } else if (c === "Y") { + //4-digit year + sb += _zeroPad(year, 4); + } else if (c === "y") { + //2-digit year + sb += _zeroPad(year, 4).substring(2); + } else if (c === "m") { + //0-padded month + sb += _zeroPad(month, 2); + } else if (c === "n") { + //numeric month + sb += month; + } else if (c === "b") { + //short text month + sb += date.toLocaleDateString(locale, { month: "short" }); + } else if (c === "d") { + //0-padded day of month + sb += _zeroPad(day, 2); + } else if (c === "e") { + //day of month + sb += day; + } else if (c === "H") { + //0-padded hour (24-hr time) + sb += _zeroPad(hour, 2); + } else if (c === "h") { + //hour (24-hr time) + sb += hour; + } else if (c === "M") { + //0-padded minute + sb += _zeroPad(date.getMinutes(), 2); + } else if (c === "S") { + //0-padded second + sb += _zeroPad(date.getSeconds(), 2); + } else if (c === "3") { + //0-padded millisecond ticks (000-999) + sb += _zeroPad(date.getMilliseconds(), 3); + } else if (c === "a") { + //Three letter short text day + sb += date.toLocaleDateString(locale, { weekday: "short" }); + } else if (c === "Z" || c === "A" || c === "B") { + throw new Error("unsupported escape in date format string [%" + c + "]"); + } else { + throw new Error("unrecognized escape in date format string [%" + c + "]"); + } + } else { + sb += c; + } + } + + return sb; + }, + ret: { func; process; XPR; _now } = {} as any; + + const func = { + abs: function (r) { + return XPR.number(Math.abs(asNumber(r))); + }, + acos: function (r) { + return XPR.number(Math.acos(asNumber(r))); + }, + asin: function (r) { + return XPR.number(Math.asin(asNumber(r))); + }, + atan: function (r) { + return XPR.number(Math.atan(asNumber(r))); + }, + atan2: function (r) { + if (arguments.length > 1) { + const y = asNumber(arguments[0]); + const x = asNumber(arguments[1]); + return XPR.number(Math.atan2(y, x)); + } + return XPR.number(Math.atan2(asNumber(r), 0)); + }, + boolean: function (r) { + if (arguments.length === 0) throw new Error("too few args"); + if (arguments.length > 1) throw new Error("too few args"); + return XPR.boolean(asBoolean(r)); + }, + "boolean-from-string": function (r) { + if (r.t === "num" && r.v > 0 && !r.decimal) { + return XPR.boolean(true); + } + r = asString(r); + return XPR.boolean(r === "1" || r === "true"); + }, + area: function (r) { + if (arguments.length === 0) throw TOO_FEW_ARGS; + return XPR.number(area(asGeopoints(r))); + }, + checklist: function (min, max, ...list) { + min = asNumber(min); + max = asNumber(max); + const trues = mapFn(asBoolean, ...list).reduce((acc, v) => (v ? acc + 1 : acc), 0); + return XPR.boolean((min < 0 || trues >= min) && (max < 0 || trues <= max)); + }, + coalesce: function (a, b) { + return XPR.string(asString(a) || asString(b)); + }, + concat: function (...args) { + return XPR.string(mapFn(asString, ...args).join("")); + }, + cos: function (r) { + return XPR.number(Math.cos(asNumber(r))); + }, + count: function (selecter) { + // count() is part of XPath 1.0, but Chrome and Firefox disagree on how it should work. + if (arguments.length === 0) throw new Error("too few args"); + if (arguments.length > 1) throw new Error("too few args"); + if (selecter.t !== "arr") throw new Error("Unpexpected arg type: '" + selecter.t + "'"); + return XPR.number(selecter.v.length); + }, + "count-non-empty": function (r) { + if (arguments.length === 0) throw new Error("too few args"); + if (arguments.length > 1) throw new Error("too many args"); + if (r.t !== "arr") throw new Error("wrong arg type:" + JSON.stringify(r)); + return XPR.number(mapFn(asString, r).reduce((acc, v) => (v ? acc + 1 : acc), 0)); + }, + "count-selected": function (s) { + const parts = asString(s).split(" "); + let i = parts.length, + count = 0; + while (--i >= 0) if (parts[i].length) ++count; + return XPR.number(count); + }, + date: function (it) { + return XPR.date(asDate(it)); + }, + "decimal-date-time": function (r) { + if (arguments.length > 1) throw TOO_MANY_ARGS; + + const days = r.t === "num" ? asNumber(r) : dateStringToDays(asString(r)); + + return XPR.number(days); + }, + "decimal-time": function (r) { + if (arguments.length > 1) throw TOO_MANY_ARGS; + if (r.t === "num") return XPR.number(NaN); + const time = asString(r); + // There is no Time type, and so far we don't need it so we do all validation + // and conversion here, manually. + const m = time.match(/^(\d\d):(\d\d):(\d\d)(\.\d\d?\d?)?(\+|-)(\d\d):(\d\d)$/); + let dec; + if ( + m && + m[1] < 24 && + m[1] >= 0 && + m[2] < 60 && + m[2] >= 0 && + m[3] < 60 && + m[3] >= 0 && + m[6] < 24 && + m[6] >= 0 && // this could be tighter + m[7] < 60 && + m[7] >= 0 // this is probably either 0 or 30 + ) { + const today = new Date(); // use today to cater to daylight savings time. + const d = new Date( + today.getFullYear() + + "-" + + _zeroPad(today.getMonth() + 1) + + "-" + + _zeroPad(today.getDate()) + + "T" + + time + ); + if (d.toString() === "Invalid Date") { + dec = NaN; + } else { + dec = (d.getSeconds() / 3600 + d.getMinutes() / 60 + d.getHours()) / 24; + } + } else { + dec = NaN; + } + return XPR.number(dec); + }, + digest: function (msg, algo, encoding) { + return XPR.string(digest(msg, algo, encoding)); + }, + distance: function (r) { + if (arguments.length === 0) throw TOO_FEW_ARGS; + return XPR.number(distance(asGeopoints(r))); + }, + exp: function (r) { + return XPR.number(Math.exp(asNumber(r))); + }, + exp10: function (r) { + return XPR.number(Math.pow(10, asNumber(r))); + }, + false: function () { + if (arguments.length) throw TOO_MANY_ARGS; + return XPR.boolean(false); + }, + "format-date": function (date, format) { + if (arguments.length < 2) throw new Error("format-date() :: not enough args"); + return XPR.string(format_date(date, format)); + }, + if: function (con, a, b) { + return asBoolean(con) ? a : b; + }, + "ends-with": function (a, b) { + if (arguments.length > 2) throw TOO_MANY_ARGS; + if (arguments.length < 2) throw TOO_FEW_ARGS; + return XPR.boolean(asString(a).endsWith(asString(b))); + }, + int: function (v) { + return XPR.number(asInteger(v)); + }, + join: function (delim, ...args) { + return XPR.string(mapFn(asString, ...args).join(asString(delim))); + }, + last: function () { + if (arguments.length) throw new Error(`last() does not take arguments`); + return XPR.number(this.contextSize); + }, + "local-name": function (r) { + // This is actually supported natively, but currently it's simpler to implement + // ourselves than convert the supplied nodeset into a single node and pass this + // somehow to the native implementation. + // + // See: https://www.w3.org/TR/1999/REC-xpath-19991116/#function-local-name + const name = getNodeName(this, r); + return XPR.string(name.match(/^(?:[^:]*:)?(.*)/)[1]); + }, + name: function (r) { + // This is actually supported natively, but currently it's simpler to implement + // ourselves than convert the supplied nodeset into a single node and pass this + // somehow to the native implementation. + // + // See: https://www.w3.org/TR/1999/REC-xpath-19991116/#function-name + return XPR.string(getNodeName(this, r)); + }, + log: function (r) { + return XPR.number(Math.log(asNumber(r))); + }, + log10: function (r) { + return XPR.number(Math.log10(asNumber(r))); + }, + max: function (...args) { + const nums = mapFn(asNumber, ...args); + if (!nums.length || nums.some((v) => isNaN(v))) return XPR.number(NaN); + return XPR.number(Math.max(...nums)); + }, + min: function (...args) { + const nums = mapFn(asNumber, ...args); + if (!nums.length || nums.some((v) => isNaN(v))) return XPR.number(NaN); + return XPR.number(Math.min(...nums)); + }, + "namespace-uri": function (r) { + // This is actually supported natively, but currently it's simpler to implement + // ourselves than convert the supplied nodeset into a single node and pass this + // somehow to the native implementation. + // + // See: https://www.w3.org/TR/1999/REC-xpath-19991116/#function-namespace-uri + const node = getNode(this, r); + return XPR.string((node && node.namespaceURI) || ""); + }, + "normalize-space": function (r) { + // TODO this seems to do a lot more than the spec at https://www.w3.org/TR/1999/REC-xpath-19991116/#function-normalize-space + // I think we should just be able to return: XPR.string(asString(r || this.cN).replace(/[\t\r\n ]+/g, ' ').trim()); + if (arguments.length > 1) throw new Error("too many args"); + + let res = asString(r || this.cN); + + res = res.replace(/\f/g, "\\f"); + res = res.replace(/\r\v/g, "\v"); + res = res.replace(/\v/g, "\\v"); + res = res.replace(/\s+/g, " "); + res = res.replace(/^\s+|\s+$/g, ""); + res = res.replace(/\\v/g, "\v"); + res = res.replace(/\\f/g, "\f"); + + return XPR.string(res); + }, + /* + * As per https://github.com/alxndrsn/openrosa-xpath-evaluator/issues/15, + * the pass-through to the wrapped implementation always requests + * XPathResult.STRING_TYPE. This seems to cause an issue with the response + * from `not()` calls, which should ideally be handled by the built-in + * XPath implementation. The following method is supplied as a workaround, + * and ideally would be unnecessary. + */ + not: function (r) { + if (arguments.length === 0) throw TOO_FEW_ARGS; + if (arguments.length > 1) throw TOO_MANY_ARGS; + return XPR.boolean(!asBoolean(r)); + }, + now: function () { + return XPR.date(new Date()); + }, + number: function (r) { + if (arguments.length > 1) + throw new Error( + `number() passed wrong arg count (expected 0 or 1, but got ${arguments.length})` + ); + let arg = arguments.length ? r : this.cN; + const str = asString(arg); + if (DATE_STRING.test(str)) { + // TODO cleanup regex and splitting + return XPR.number(dateStringToDays(str)); + } + return XPR.number(asNumber(arg)); + }, + today: function () { + return XPR.date(ret._now()); + }, + /** + * The once function returns the value of the parameter if its own value + * is not empty, NaN, [Infinity or -Infinity]. The naming is therefore misleading! + * Also note that the parameter expr is always evaluated. + * This function simply decides whether to return the new result or the old value. + */ + once: function (r) { + const current = asString(this.cN); + return XPR.string(current || asString(r)); + }, + pi: function () { + return XPR.number(Math.PI); + }, + position: function (r) { + // N.B.: I suspect there is a bug here - this will return position within the parent node, rather than the evaluation context. + // I suspect this is contrary to the spec, which reads: + // > The position function returns a number equal to the context position from the expression evaluation context. + // - https://www.w3.org/TR/1999/REC-xpath-19991116/#function-position + // I'd have thought e.g. a union of all first-children in a doc would not all have position()=1 within that nodeset + if (arguments.length > 1) throw new Error("too many args"); + if (r && r.t !== "arr") + throw new Error("wrong arg type for position() - expected nodeset, but got: " + r.t); + if (r && !r.v.length) throw new Error("cannot call position() on an empty nodeset"); + + if (!r) return XPR.number(this.contextPosition); + + let position = 1; + let node = r.v[0]; + const nodeName = node.tagName; + while (node.previousElementSibling && node.previousElementSibling.tagName === nodeName) { + node = node.previousElementSibling; + position++; + } + + return XPR.number(position); + }, + pow: function (x, y) { + return XPR.number(Math.pow(asNumber(x), asNumber(y))); + }, + random: function () { + return XPR.number(parseFloat(Math.random().toFixed(15))); + }, + randomize: function (r, seed) { + if (!arguments.length) throw TOO_FEW_ARGS; //only rT passed + if (arguments.length > 2) throw TOO_MANY_ARGS; + if (!r || r.t !== "arr") throw new Error("randomize() must be called on a nodeset"); + + seed = seed && asNumber(seed); + + return { t: "arr", v: shuffle(r.v, seed) }; + }, + regex: function (haystack, pattern) { + return XPR.boolean(new RegExp(asString(pattern)).test(asString(haystack))); + }, + round: function (number, num_digits) { + if (arguments.length === 0) throw TOO_FEW_ARGS; + if (arguments.length > 2) throw TOO_MANY_ARGS; + number = asNumber(number); + if (!num_digits) { + return XPR.number(_round(number)); + } + num_digits = asInteger(num_digits); + const pow = Math.pow(10, Math.abs(num_digits)); + if (num_digits > 0) { + return XPR.number(_round(number * pow) / pow); + } else { + return XPR.number(pow * _round(number / pow)); + } + }, + selected: function (haystack, needle) { + return XPR.boolean(asString(haystack).split(" ").indexOf(asString(needle).trim()) !== -1); + }, + "selected-at": function (list, index) { + if (!index) + throw new Error( + "No index provided for selected-at() [index=" + index + "; list=" + JSON.stringify(list) + ); + return XPR.string(asString(list).split(" ")[asInteger(index)] || ""); + }, + sin: function (r) { + return XPR.number(Math.sin(asNumber(r))); + }, + sqrt: function (r) { + return XPR.number(Math.sqrt(asNumber(r))); + }, + string: function (r) { + if (arguments.length > 1) + throw new Error( + `string() passed wrong arg count (expected 0 or 1, but got ${arguments.length})` + ); + return XPR.string(asString(r || this.cN)); + }, // TODO this is not an extension - should be a "native" function + "string-length": function (r) { + if (arguments.length > 1) throw new Error("too many args"); + const str = asString(r || this.cN); + // implemented as per https://www.w3.org/TR/1999/REC-xpath-19991116/#function-string-length, rather than the restricted ODK implementation + return XPR.number(str.length); + }, + substr: function (s, startIndex, endIndex) { + return XPR.string(asString(s).slice(asNumber(startIndex), endIndex && asNumber(endIndex))); + }, + sum: function (r) { + if (!r || r.t !== "arr") throw new Error("sum() must be called on a nodeset"); + let sum = 0, + i = r.v.length; + while (i--) sum += asNumber(r.v[i]); + return XPR.number(sum); + }, + tan: function (r) { + return XPR.number(Math.tan(asNumber(r))); + }, + true: function () { + if (arguments.length) throw TOO_MANY_ARGS; + return XPR.boolean(true); + }, + uuid: function (r) { + if (r) return XPR.string(randomToken(asNumber(r))); + return XPR.string(uuid()); + }, + "weighted-checklist": function (min, max, ...list) { + min = asNumber(min); + max = asNumber(max); + let values = [], + weights = [], + weightedTrues = 0; + for (let i = 0; i < list.length; i += 2) { + const v = list[i]; + const w = list[i + 1]; + if (v && w) { + // value or weight might be a nodeset + values = values.concat(mapFn(asBoolean, v)); + weights = weights.concat(mapFn(asNumber, w)); + } + } + for (let i = 0; i < values.length; i++) { + if (values[i]) { + weightedTrues += weights[i] || 0; + } + } + return XPR.boolean((min < 0 || weightedTrues >= min) && (max < 0 || weightedTrues <= max)); + }, + }; + + // function aliases + func["date-time"] = func.date; + func["format-date-time"] = func["format-date"]; + + const process = { + toExternalResult: function (r, resultType) { + if (r.t === "arr" && resultType === XPathResult.NUMBER_TYPE) { + const str = asString(r); + if (DATE_STRING.test(str)) { + return { resultType, numberValue: dateStringToDays(str) }; + } + } + if (r.t === "date") { + switch (resultType) { + case XPathResult.BOOLEAN_TYPE: + return { resultType, booleanValue: !isNaN(r.v) }; + case XPathResult.NUMBER_TYPE: + return { resultType, numberValue: asNumber(r) }; + case XPathResult.ANY_TYPE: + case XPathResult.STRING_TYPE: + return { resultType, stringValue: asString(r) }; + default: + throw new Error( + `toExternalResult() doesn't know how to convert a date to ${resultType}` + ); + } + } + }, + typefor: function (val) { + if (val instanceof Date) return "date"; + }, + handleInfix: function (_err, lhs, op, rhs) { + if (lhs.t === "date" || rhs.t === "date") { + if (lhs.t === "bool" || rhs.t === "bool") { + // date comparisons with booleans should be coerced to boolean + return; + } + + // For comparisons and math, we must make sure that both values are numbers + if (lhs.t === "arr" || lhs.t === "str") lhs = XPR.date(asDate(lhs)); + if (rhs.t === "arr" || rhs.t === "str") rhs = XPR.date(asDate(rhs)); + + if (lhs.t === "date") lhs = { t: "num", v: dateToDays(lhs.v) }; + if (rhs.t === "date") rhs = { t: "num", v: dateToDays(rhs.v) }; + + return { t: "continue", lhs: lhs, op: op, rhs: rhs }; + } + + // try to coerce non-dates into dates :o + if (op === PLUS || op === MINUS) { + const lStr = asString(lhs); + if (DATE_STRING.test(lStr)) { + const lDays = dateStringToDays(lStr); + const rDays = asNumber(rhs); + const delta = op === PLUS ? lDays + rDays : lDays - rDays; + return delta; + } + + const rStr = asString(rhs); + if (DATE_STRING.test(rStr)) { + const rDays = dateStringToDays(rStr); + const lDays = asNumber(lhs); + const delta = op === PLUS ? lDays + rDays : lDays - rDays; + return delta; + } + } else if (op >= EQ && op <= GTE) { + const lStr = asString(lhs); + if (DATE_STRING.test(lStr)) lhs = XPR.number(dateStringToDays(lStr)); + + const rStr = asString(rhs); + if (DATE_STRING.test(rStr)) rhs = XPR.number(dateStringToDays(rStr)); + + return { t: "continue", lhs, op, rhs }; + } + }, + }; + + ret.func = func; + ret.process = process; + ret.XPR = XPR; + ret._now = function () { + // This is exposed in ret to allow for unit testing, although this is not currently utilised. + const t = new Date(); + return new Date(t.getFullYear(), t.getMonth(), t.getDate()); + }; + + return ret; +} +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + PLUS + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 0b10000 +
                                                                                                                                                                          + + + + + + + + + + + +
                                                                                                                                                                          + + + RAW_NUMBER + + +
                                                                                                                                                                          + Default value : /^-?[0-9]+(\.[0-9]+)?$/ +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/date-extensions.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + +
                                                                                                                                                                          + + + getTimezoneOffsetAsTime + + +
                                                                                                                                                                          + Default value : (date) => { + var offsetMinutesTotal; + var hours; + var minutes; + var direction; + var pad2 = function (x) { + return x < 10 ? "0" + x : x; + }; + + if (date.toString() === "Invalid Date") { + return date.toString(); + } + + offsetMinutesTotal = date.getTimezoneOffset(); + + direction = offsetMinutesTotal < 0 ? "+" : "-"; + hours = pad2(Math.floor(Math.abs(offsetMinutesTotal / 60))); + minutes = pad2(Math.floor(Math.abs(offsetMinutesTotal % 60))); + + return direction + hours + ":" + minutes; +} +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + toISOLocalString + + +
                                                                                                                                                                          + Default value : (date) => { + //2012-09-05T12:57:00.000-04:00 (ODK) + + if (["Invalid Date", ""].includes(date.toString())) { + return date.toString(); + } + + var dt = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000) + .toISOString() + .replace("Z", getTimezoneOffsetAsTime(date)); + + if (dt.indexOf("T00:00:00.000") > 0) { + return dt.split("T")[0]; + } else { + return dt; + } +} +
                                                                                                                                                                          +

                                                                                                                                                                          Converts a native Date UTC String to a RFC 3339-compliant date string with local offsets +used in ODK, so it replaces the Z in the ISOstring with a local offset

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/openrosa/utils/shuffle.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MAX_INT32 + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 2147483647 +
                                                                                                                                                                          + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + MINSTD + + +
                                                                                                                                                                          + Type : number + +
                                                                                                                                                                          + Default value : 16807 +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/odk-form/libs/enketo/js/widget.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + +
                                                                                                                                                                          + + + range + + +
                                                                                                                                                                          + Default value : document.createRange() +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          src/app/shared/components/template/components/index.ts

                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          + + + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + TEMPLATE_COMPONENT_MAPPING + + +
                                                                                                                                                                          + Type : Record<FlowTypes.TemplateRowType, Type<ITemplateRowProps>> + +
                                                                                                                                                                          + Default value : { + accordion: TmplAccordionComponent, + accordion_section: AccordionSectionComponent, + advanced_dashed_box: TmplAdvancedDashedBoxComponent, + animated_section: AnimatedSectionComponent, + animated_section_group: AnimatedSectionGroupComponent, + animated_slides: TmplAnimatedSlidesComponent, + audio: TmplAudioComponent, + button: TmplButtonComponent, + carousel: TmplCarouselComponent, + combo_box: TmplComboBoxComponent, + dashed_box: TmplDashedBoxComponent, + data_items: TmplDataItemsComponent, + debug_toggle: PLHDebugToggleComponent as any, + display_grid: TmplDisplayGridComponent, + display_group: TmplDisplayGroupComponent, + display_theme: null as any, + drawer: TmplDrawerComponent, + form: FormComponent, + help_icon: TmplHelpIconComponent, + html: TemplateHTMLComponent, + icon_banner: TmplIconBannerComponent, + image: TmplImageComponent, + items: null, + latex: TmplLatexComponent, + lottie_animation: TmplLottieAnimation, + nav_group: NavGroupComponent, + nav_section: AnimatedSectionComponent, + navigation_bar: TmplNavigationBarComponent, + nested_properties: null as any, + number_selector: TmplNumberComponent, + odk_form: TmplOdkFormComponent, + parent_point_box: TmplParentPointBoxComponent, + parent_point_counter: TmplParentPointCounterComponent, + pdf: TmplPdfComponent, + qr_code: TmplQRCodeComponent, + radio_button_grid: TmplRadioButtonGridComponent, + radio_group: TmplRadioGroupComponent, + round_button: RoundIconButtonComponent, + select_text: SelectTextComponent, + set_default: null as any, + set_field: null as any, + set_local: null as any, + set_variable: null as any, + simple_checkbox: TmplSimpleCheckboxComponent, + slider: TmplSliderComponent, + square_button: SquareIconButtonComponent, + subtitle: TmplSubtitleComponent, + task_card: TmplTaskCardComponent, + task_progress_bar: TmplTaskProgressBarComponent, + template: TemplateContainerComponent as any, + text: TmplTextComponent, + text_area: TmplTextAreaComponent, + text_box: TmplTextBoxComponent, + tile_component: TmplTileComponent, + timer: TmplTimerComponent, + title: TmplTitleComponent, + toggle_bar: TmplToggleBarComponent, + update_action_list: null as any, + video: TmplVideoComponent, + workshops_accordion: WorkshopsComponent, +} +
                                                                                                                                                                          +

                                                                                                                                                                          +

                                                                                                                                                                          Template component mapping

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          + + + + + + + + + + + + + + + + + +
                                                                                                                                                                          + + + TEMPLATE_COMPONENTS + + +
                                                                                                                                                                          + Type : [] + +
                                                                                                                                                                          + Default value : [ + // no prefix + AccordionSectionComponent, + AnimatedSectionComponent, + AnimatedSectionGroupComponent, + ComboBoxModalComponent, + FormComponent, + NavGroupComponent, + RoundIconButtonComponent, + SelectTextComponent, + SquareIconButtonComponent, + TemplateBaseComponent, + TemplateDebuggerComponent, + TemplateHTMLComponent, + TemplatePopupComponent, + // tmpl prefix + TmplAccordionComponent, + TmplAdvancedDashedBoxComponent, + TmplAnimatedSlidesComponent, + TmplAudioComponent, + TmplButtonComponent, + TmplCarouselComponent, + TmplComboBoxComponent, + TmplDashedBoxComponent, + TmplDataItemsComponent, + TmplDisplayGridComponent, + TmplDisplayGroupComponent, + TmplDrawerComponent, + TmplHelpIconComponent, + TmplIconBannerComponent, + TmplImageComponent, + TmplLatexComponent, + TmplLottieAnimation, + TmplNavigationBarComponent, + TmplNumberComponent, + TmplOdkFormComponent, + TmplParentPointBoxComponent, + TmplParentPointCounterComponent, + TmplPdfComponent, + TmplQRCodeComponent, + TmplRadioButtonGridComponent, + TmplRadioGroupComponent, + TmplSimpleCheckboxComponent, + TmplSliderComponent, + TmplSubtitleComponent, + TmplTaskCardComponent, + TmplTaskProgressBarComponent, + TmplTextAreaComponent, + TmplTextBoxComponent, + TmplTextComponent, + TmplTileComponent, + TmplTimerComponent, + TmplTitleComponent, + TmplToggleBarComponent, + TmplVideoComponent, + // no prefix + WorkshopsComponent, +] +
                                                                                                                                                                          +

                                                                                                                                                                          All components should be exported as a single array for easy module import

                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          +
                                                                                                                                                                          + + + +
                                                                                                                                                                          +
                                                                                                                                                                          +

                                                                                                                                                                          results matching ""

                                                                                                                                                                          +
                                                                                                                                                                            +
                                                                                                                                                                            +
                                                                                                                                                                            +

                                                                                                                                                                            No results matching ""

                                                                                                                                                                            +
                                                                                                                                                                            +
                                                                                                                                                                            +
                                                                                                                                                                            + +
                                                                                                                                                                            +
                                                                                                                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/modules.html b/documentation/docs/generated/modules.html new file mode 100644 index 0000000000..42c7ae79e3 --- /dev/null +++ b/documentation/docs/generated/modules.html @@ -0,0 +1,120 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                            +
                                                                                                                                                                            + + +
                                                                                                                                                                            +
                                                                                                                                                                            + + + + +
                                                                                                                                                                            +
                                                                                                                                                                            +
                                                                                                                                                                            +
                                                                                                                                                                            + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                            +
                                                                                                                                                                            +

                                                                                                                                                                            results matching ""

                                                                                                                                                                            +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +

                                                                                                                                                                              No results matching ""

                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              + +
                                                                                                                                                                              +
                                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/overview.html b/documentation/docs/generated/overview.html new file mode 100644 index 0000000000..ec273e0216 --- /dev/null +++ b/documentation/docs/generated/overview.html @@ -0,0 +1,146 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                              +
                                                                                                                                                                              + + +
                                                                                                                                                                              +
                                                                                                                                                                              + + + + +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +

                                                                                                                                                                              +

                                                                                                                                                                              54 Components

                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +

                                                                                                                                                                              +

                                                                                                                                                                              7 Classes

                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +

                                                                                                                                                                              +

                                                                                                                                                                              13 Interfaces

                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              +
                                                                                                                                                                              + + + + + + + + + + + + + + + + + + + + +
                                                                                                                                                                              +
                                                                                                                                                                              +

                                                                                                                                                                              results matching ""

                                                                                                                                                                              +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                +

                                                                                                                                                                                No results matching ""

                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                + +
                                                                                                                                                                                +
                                                                                                                                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/properties.html b/documentation/docs/generated/properties.html new file mode 100644 index 0000000000..c5d023f44f --- /dev/null +++ b/documentation/docs/generated/properties.html @@ -0,0 +1,128 @@ + + + + + + frontend documentation + + + + + + + + + + + + + + +
                                                                                                                                                                                +
                                                                                                                                                                                + + +
                                                                                                                                                                                +
                                                                                                                                                                                + + + + + + + + + + + + + + + + + +
                                                                                                                                                                                  +
                                                                                                                                                                                • + Version : 0.16.17
                                                                                                                                                                                • +
                                                                                                                                                                                • + Description :
                                                                                                                                                                                • +
                                                                                                                                                                                • + Homepage : https://idems.international/
                                                                                                                                                                                • +
                                                                                                                                                                                • + License : See LICENSE
                                                                                                                                                                                • +
                                                                                                                                                                                • + Author : IDEMS International
                                                                                                                                                                                • +
                                                                                                                                                                                + + + + + +
                                                                                                                                                                                +
                                                                                                                                                                                +

                                                                                                                                                                                results matching ""

                                                                                                                                                                                +
                                                                                                                                                                                  +
                                                                                                                                                                                  +
                                                                                                                                                                                  +

                                                                                                                                                                                  No results matching ""

                                                                                                                                                                                  +
                                                                                                                                                                                  +
                                                                                                                                                                                  +
                                                                                                                                                                                  + +
                                                                                                                                                                                  +
                                                                                                                                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/docs/generated/styles/bootstrap-card.css b/documentation/docs/generated/styles/bootstrap-card.css new file mode 100644 index 0000000000..0869c6890a --- /dev/null +++ b/documentation/docs/generated/styles/bootstrap-card.css @@ -0,0 +1,219 @@ +.card { + position: relative; + display: block; + margin-bottom: 20px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; +} + +.card-block { + padding: 15px; +} +.card-block:before, .card-block:after { + content: " "; + display: table; +} +.card-block:after { + clear: both; +} + +.card-title { + margin: 5px; + margin-bottom: 2px; + text-align: center; +} + +.card-subtitle { + margin-top: -10px; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; + margin-top: 10px; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: 15px; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.card-header { + padding: 10px 15px; + background-color: #f5f5f5; + border-bottom: 1px solid #ddd; +} +.card-header:before, .card-header:after { + content: " "; + display: table; +} +.card-header:after { + clear: both; +} +.card-header:first-child { + border-radius: 4px 4px 0 0; +} + +.card-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.card-footer:before, .card-footer:after { + content: " "; + display: table; +} +.card-footer:after { + clear: both; +} +.card-footer:last-child { + border-radius: 0 0 4px 4px; +} + +.card-header-tabs { + margin-right: -5px; + margin-bottom: -10px; + margin-left: -5px; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -5px; + margin-left: -5px; +} + +.card-primary { + background-color: #337ab7; + border-color: #337ab7; +} +.card-primary .card-header, +.card-primary .card-footer { + background-color: transparent; +} + +.card-success { + background-color: #5cb85c; + border-color: #5cb85c; +} +.card-success .card-header, +.card-success .card-footer { + background-color: transparent; +} + +.card-info { + background-color: #5bc0de; + border-color: #5bc0de; +} +.card-info .card-header, +.card-info .card-footer { + background-color: transparent; +} + +.card-warning { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.card-warning .card-header, +.card-warning .card-footer { + background-color: transparent; +} + +.card-danger { + background-color: #d9534f; + border-color: #d9534f; +} +.card-danger .card-header, +.card-danger .card-footer { + background-color: transparent; +} + +.card-outline-primary { + background-color: transparent; + border-color: #337ab7; +} + +.card-outline-secondary { + background-color: transparent; + border-color: #ccc; +} + +.card-outline-info { + background-color: transparent; + border-color: #5bc0de; +} + +.card-outline-success { + background-color: transparent; + border-color: #5cb85c; +} + +.card-outline-warning { + background-color: transparent; + border-color: #f0ad4e; +} + +.card-outline-danger { + background-color: transparent; + border-color: #d9534f; +} + +.card-inverse .card-header, +.card-inverse .card-footer { + border-color: rgba(255, 255, 255, 0.2); +} +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { + color: #fff; +} +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-subtitle, +.card-inverse .card-blockquote .blockquote-footer { + color: rgba(255, 255, 255, 0.65); +} +.card-inverse .card-link:hover, .card-inverse .card-link:focus { + color: #fff; +} + +.card-blockquote { + padding: 0; + margin-bottom: 0; + border-left: 0; +} + +.card-img { + border-radius: .25em; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 15px; +} + +.card-img-top { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.card-img-bottom { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} diff --git a/documentation/docs/generated/styles/bootstrap.min.css b/documentation/docs/generated/styles/bootstrap.min.css new file mode 100644 index 0000000000..5b96335ff6 --- /dev/null +++ b/documentation/docs/generated/styles/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:"Glyphicons Halflings";src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format("embedded-opentype"),url(../fonts/glyphicons-halflings-regular.woff2) format("woff2"),url(../fonts/glyphicons-halflings-regular.woff) format("woff"),url(../fonts/glyphicons-halflings-regular.ttf) format("truetype"),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/documentation/docs/generated/styles/compodoc.css b/documentation/docs/generated/styles/compodoc.css new file mode 100644 index 0000000000..63ecd13e44 --- /dev/null +++ b/documentation/docs/generated/styles/compodoc.css @@ -0,0 +1,1082 @@ +body { + position: absolute; + width: 100%; + height: 100%; + font-family: 'Roboto', sans-serif; +} + +/* roboto-300 - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: url('../fonts/roboto-v15-latin-300.eot'); + /* IE9 Compat Modes */ + src: local('Roboto Light'), local('Roboto-Light'), + url('../fonts/roboto-v15-latin-300.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-300.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-300.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-300.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-300.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +/* roboto-regular - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-v15-latin-regular.eot'); + /* IE9 Compat Modes */ + src: local('Roboto'), local('Roboto-Regular'), + url('../fonts/roboto-v15-latin-regular.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-regular.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-regular.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-regular.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-regular.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +/* roboto-700 - latin */ + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: url('../fonts/roboto-v15-latin-700.eot'); + /* IE9 Compat Modes */ + src: local('Roboto Bold'), local('Roboto-Bold'), + url('../fonts/roboto-v15-latin-700.eot?#iefix') format('embedded-opentype'), + /* IE6-IE8 */ url('../fonts/roboto-v15-latin-700.woff2') format('woff2'), + /* Super Modern Browsers */ url('../fonts/roboto-v15-latin-700.woff') format('woff'), + /* Modern Browsers */ url('../fonts/roboto-v15-latin-700.ttf') format('truetype'), + /* Safari, Android, iOS */ url('../fonts/roboto-v15-latin-700.svg#Roboto') format('svg'); + /* Legacy iOS */ +} + +h1 { + font-size: 26px; +} + +h2 { + font-size: 22px; +} + +h3 { + font-size: 20px; + font-weight: bold; +} + +h4, +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +a[href] { + cursor: pointer; +} + +/** + * Mobile navbar + */ + +.navbar { + min-height: 50px; +} + +.navbar-brand { + height: 50px; + font-size: 14px; + line-height: 20px; + padding: 15px; +} + +.navbar-static-top { + margin-bottom: 0; + height: 50px; +} + +/** + * Main container + */ + +.container-fluid { + overflow-y: hidden; + overflow-x: hidden; +} + +.container-fluid.main { + height: 100%; + padding: 0; +} + +.tab-content.overview { + margin-top: 50px; + margin-left: 15px; +} + +.container-fluid.modules, +.container-fluid.components, +.container-fluid.directives, +.container-fluid.classes, +.container-fluid.injectables, +.container-fluid.pipes, +.content.routes table { + margin-top: 25px; +} + +.container-fluid.modules { + width: 100%; + overflow-y: auto; +} + +.container-fluid.module { + padding: 0; + margin-top: 0; +} + +.container-fluid.module h3 a { + margin-left: 10px; + color: #333; +} + +.row.main { + height: 100%; + margin: 0; +} + +/** + * Copyright + */ + +.copyright { + margin: 0; + padding: 15px; + text-align: center; + display: flex; + flex-direction: column; + align-items: center; + z-index: 1; +} + +.copyright img { + width: 80px; + margin-top: 10px; +} + +.copyright a { + color: #009dff; + text-decoration: underline; +} + +/** + * Content + */ + +.content { + height: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + width: calc(100% - 320px); + position: absolute; + top: 0; + left: 320px; + padding: 15px 30px; +} + +.content > h1:first-of-type { + margin-top: 15px; +} + +.content > h3:first-of-type { + margin-top: 5px; +} + +.content.readme h1:first-of-type { + margin-top: 0; +} + +.content table { + margin-top: 20px; +} + +.content-data { + display: flex; + flex-direction: column; + height: 100%; +} + +.content-data .tab-content { + flex: 1; +} + +.content-data .tab-pane { + height: 100%; +} + +.content-data .exampleContainer { + height: 100%; + width: 100%; +} + +/** + * Icons + */ + +.glyphicon, +.icon { + margin-right: 10px; +} + +/** + * Menu + */ + +#book-search-input { + padding: 6px; + transition: top 0.5s ease; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.07); + border-top: 1px solid rgba(0, 0, 0, 0.07); + margin-bottom: 5px; + margin-top: -1px; +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + width: 100%; + background: 0 0; + border: 1px solid transparent; + box-shadow: none; + outline: 0; + line-height: 22px; + padding: 7px 7px; + color: inherit; +} + +.panel-body { + padding: 0px; +} + +.panel-group .panel-heading + .panel-collapse > .list-group, +.panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: 0; +} + +.panel-body table tr td { + padding-left: 15px; +} + +.panel-body .table { + margin-bottom: 0px; +} + +.panel-group .panel:first-child { + border-top: 0; +} + +.menu { + background: #fafafa; + border-right: 1px solid #e7e7e7; + height: 100%; + padding: 0; + width: 320px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.menu ul.list { + list-style: none; + margin: 0; + padding: 0; +} + +.menu ul.list li a { + display: block; + padding: 10px 15px; + border-bottom: none; + color: #364149; + background: 0 0; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + position: relative; +} + +.menu ul.list li a.active { + color: #008cff; +} + +.menu ul.list li.divider { + height: 1px; + margin: 7px 0; + overflow: hidden; + background: rgba(0, 0, 0, 0.07); +} + +.menu ul.list li.chapter ul.links { + padding-left: 20px; +} + +.menu ul.list li.for-chapter2 { + padding-left: 0; +} + +.menu ul.list li.for-chapter3 { + padding-left: 20px; +} + +.menu ul.list li.for-chapter4 { + padding-left: 40px; +} + +.menu ul.list li.for-chapter5 { + padding-left: 60px; +} + +.menu ul.list li.chapter .simple { + padding: 10px 15px; + position: relative; +} + +.menu ul.list li.chapter .inner .simple { + padding-left: 35px; +} + +.menu ul.list li.chapter .inner ul.links { + padding-left: 40px; +} + +.menu ul.list li.chapter.additional .inner ul.links { + padding-left: 20px; +} + +.menu .panel-group { + width: 100%; + height: 100%; + overflow-y: auto; +} + +.menu .panel-default { + border-right: none; + border-left: none; + border-bottom: none; +} + +.menu .panel-group .panel-heading + .panel-collapse > .panel-body { + border-top: none; + overflow-y: auto; + max-height: 350px; +} + +.menu .panel-default:last-of-type { + border-bottom: 1px solid #ddd; +} + +.panel-group .panel + .panel { + margin-top: 0; +} + +.panel-group .panel { + z-index: 2; + position: relative; + border-radius: 0; + box-shadow: none; + border-left: 0; + border-right: 0; +} + +.menu a { + color: #3c3c3c; +} + +.xs-menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.menu .title { + padding: 8px 0; +} + +.menu-toggler { + cursor: pointer; +} + +.menu-toggler .ion-ios-arrow-down, +.menu-toggler .ion-ios-arrow-up { + cursor: pointer; + padding: 5px 10px; + font-size: 16px; + position: absolute; + right: 0; + top: 7px; +} + +.overview .card-title .icon { + font-size: 50px; +} + +.overview .card-text a { + text-decoration: underline; + color: black; +} + +.overview .col-sm-3 { + width: 200px; +} + +.breadcrumb { + background: none; + padding-left: 0 !important; + margin-bottom: 10px; + font-size: 24px; + padding-top: 0; +} + +.breadcrumb a { + text-decoration: underline; + color: #333; +} + +.comment { + margin: 15px 0; +} + +.io-description { + margin: 10px 0; +} + +.io-file { + margin: 20px 0; +} + +.navbar .btn-menu { + position: absolute; + right: 0; + margin: 10px; +} + +.content ul.nav { + padding-left: 0; +} + +.xs-menu { + height: calc(100% - 50px); + display: none; + width: 100%; + overflow-y: scroll; + z-index: 1; + top: 50px; + position: absolute; +} + +.xs-menu .copyright { + margin-top: 20px; + position: relative; +} + +.tab-source-code { + padding: 10px 0; +} + +pre { + padding: 12px 12px; + border: none; + background: #23241f; +} + +code { + background: none; + padding: 2px 0; +} + +@media (max-width: 767px) { + .container-fluid { + margin-top: 50px; + } + + .container-fluid.main { + height: calc(100% - 50px); + } + + .content { + width: 100%; + left: 0; + position: relative; + } + + .menu ul.list li.title { + display: none; + } +} + +/** + * Search + */ + +.search-results { + display: none; + max-width: 800px; + margin: 0 auto; + padding: 20px 15px 40px 15px; +} + +.search-results .no-results { + display: none; +} + +.with-search .search-results { + display: block; +} + +.with-search .content-data { + display: none; +} + +.with-search .xs-menu { + height: 51px; +} + +.with-search .xs-menu nav { + display: none; +} + +.search-results.no-results .has-results { + display: none; +} + +.search-results.no-results .no-results { + display: block; +} + +.search-results .search-results-title { + text-transform: uppercase; + text-align: center; + font-weight: 200; + margin-bottom: 35px; + opacity: 0.6; +} + +.search-results ul.search-results-list { + list-style-type: none; + padding-left: 0; +} + +.search-results ul.search-results-list li { + margin-bottom: 1.5rem; + padding-bottom: 0.5rem; +} + +.search-results ul.search-results-list li p em { + background-color: rgba(255, 220, 0, 0.4); + font-style: normal; +} + +.search-results-item { + margin-bottom: 1rem !important; + margin-top: 1rem; + padding-bottom: 0 !important; +} + +.search-results-item a { + font-size: 18px; +} + +.search-results-group, +.search-results-group .search-results-list { + margin-bottom: 0 !important; +} + +.search-results-group h3 { + margin-top: 10px; +} + +.jsdoc-params { + list-style: square; + margin-top: 10px; + margin-bottom: 0 !important; +} + +.jsdoc-params li { + padding-bottom: 10px; +} + +.jsdoc-example-ul ul { + padding-left: 20px; +} + +example-url { + display: none; +} + +i { + font-style: italic; +} + +.coverage a { + color: #333; + text-decoration: underline; +} + +.coverage tr.low, +.coverage td.low { + background: rgba(216, 96, 75, 0.75); +} + +.coverage tr.medium, +.coverage td.medium { + background: rgba(218, 178, 38, 0.75); +} + +.coverage tr.good, +.coverage td.good { + background: rgba(143, 189, 8, 0.75); +} + +.coverage tr.very-good, +.coverage td.very-good { + background: rgba(77, 199, 31, 0.75); +} + +.coverage td.uncovered { + background: rgba(221, 221, 221, 0.75); +} + +.coverage-header { + background: #fafafa; +} + +thead.coverage-header > tr > td, +thead.coverage-header > tr > th { + border-bottom-width: 0; +} + +th[role='columnheader'].statements:not(.no-sort):after { + margin-left: 10px; +} + +.coverage-count { + color: grey; + font-size: 12px; + margin-left: 10px; + display: inline-block; + width: 50px; +} + +.coverage-badge { + background: #5d5d5d; + border-radius: 4px; + display: inline-block; + color: white; + padding: 4px; + padding-right: 0; + padding-left: 8px; +} + +.coverage-badge .count { + padding: 6px; + margin-left: 5px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.coverage-badge .count.low { + background: #d8624c; +} + +.coverage-badge .count.medium { + background: #dab226; +} + +.coverage-badge .count.good { + background: #8fbd08; +} + +.coverage-badge .count.very-good { + background: #4dc71f; +} + +.content ol { + list-style-type: decimal; + margin-top: 0; + padding-left: 20px; + margin-bottom: 16px; +} + +.content ul { + list-style: disc; + margin-top: 0; + padding-left: 20px; + margin-bottom: 16px; +} + +.content ul.list-group { + padding-left: 0; +} + +.content ul.list-group li.list-group-item a { + display: inline-block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.content ul ul { + list-style-type: circle; +} + +.compodoc-table { + width: inherit; +} + +.compodoc-table thead { + font-weight: bold; +} + +.modifier { + background: #9a9a9a; + padding: 1px 5px; + color: white; + border-radius: 4px; +} + +.modifier-icon { + color: #c7254e; +} + +.modifier-icon.method { + color: white; + background: #c7254e; + padding: 4px; + border-radius: 8px; + font-size: 10px; + margin-right: 2px; +} + +.modifier-icon.method.square { + border-radius: 4px; +} + +.modifier-icon.method.export { + display: none; +} + +.modifier-icon.method .ion-ios-radio-button-off, +.modifier-icon.method .ion-ios-square-outline { + display: none; +} + +.modifier-icon.method .ion-ios-lock { + margin-right: 0; +} + +.modifier-icon.ion-ios-reset { + margin-right: 0; +} + +/** + * Modules + */ + +.card-module { + min-height: 323px; +} + +/** + * Routes graph + */ + +.node text { + font-size: 12px; +} + +.node .icon { + font-size: 15px; + cursor: default; +} + +.node .icon.has-children { + cursor: pointer; +} + +path.link { + fill: none; + stroke: #9ecae1; + stroke-width: 1.5px; +} + +#body-routes a { + text-decoration: underline; +} + +#body-routes svg { + overflow: visible; +} + +/** + * Miscellaneous + */ + +.content.miscellaneous h2 { + margin-bottom: 20px; +} + +.content.miscellaneous h4 { + padding-top: 20px; +} + +/* highlight line */ + +.line-highlight { + background: linear-gradient(to right, hsla(0, 0%, 100%, 0.1) 70%, hsla(24, 20%, 50%, 0)); +} + +#tree-container { + width: 100%; + height: 100%; +} + +#tree { + position: relative; +} + +.tree-legend { + position: absolute; + bottom: 10px; + left: 10px; + border: 1px solid #ddd; + padding: 5px 10px; +} + +.tree-legend .title { + margin-bottom: 8px; +} + +.tree-legend .color { + width: 20px; + height: 12px; + display: inline-block; + margin-right: 5px; +} + +.tree-legend .htmlelement { + background: #97c2fc; +} + +.tree-legend .component { + background: #fb7e81; +} + +.tree-legend .directive { + background: #ff9800; +} + +#module-graph-svg { + width: 100%; + height: 250px; +} + +#module-graph-svg svg { + width: 100%; + height: 100%; +} + +.content ul.type-parameters { + margin-bottom: 5px; +} + +table.params { + width: 100%; + margin: 10px 0; + border-spacing: 0; + border: 0; + border-collapse: collapse; +} + +table.params thead { + background: #f5f5f5; + color: #525252; +} + +table.params td { + padding: 4px; + border: solid 1px #ddd; +} + +table.params td p { + margin: 0; +} + +.img-responsive { + display: inline-block; +} + +.index-table h6 { + margin-top: 5px; + margin-bottom: 5px; +} + +ul.index-list { + list-style: none; + padding: 0; + column-gap: 20px; + column-count: 3; + line-height: 25px; + margin-bottom: 0; +} + +.no-graph { + text-align: center; + height: 175px; + line-height: 175px; +} + +.name a { + display: none; + color: #6e6e6e; + margin-left: 5px; +} + +.name:hover a { + display: inline-block; +} + +.accessor b { + color: #808080; + margin-right: 8px; + font-weight: normal; +} + +.module-graph-container { + position: relative; +} + +.module-graph-container .size-buttons { + margin-top: 10px; +} + +.module-graph-fullscreen-btn { + position: absolute; + right: 5px; + top: 0; + cursor: pointer; +} + +/** + * Dependencies + */ + +.package-dependencies ul { + list-style: none; + margin: 0; +} + +.package-dependencies li { + margin: 5px 0; +} + +.deprecated { + color: #e73440; +} +.deprecated p { + margin-bottom: 0; +} +.deprecated-name, +.deprecated-name:hover { + text-decoration: line-through; +} +.deprecated-name::before { + text-decoration: none; + display: inline-block; +} + +/** + * Dark mode + */ + +.dark-mode-switch { + position: absolute; + top: 70px; + right: 15px; + display: inline-block; + width: 60px; + height: 34px; +} + +.dark-mode-switch input { + opacity: 0; + width: 0; + height: 0; +} + +.dark-mode-switch .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #5cc0ae80; + border-radius: 34px; + transition: 0.6s; +} + +.dark-mode-switch .slider:before { + position: absolute; + content: ''; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + border-radius: 50%; + transition: 0.4s; +} + +.dark-mode-switch input:checked + .slider { + background-color: #f1c40fb8; +} + +.dark-mode-switch.dark .slider-icon { + stroke: black; +} + +.dark-mode-switch input:checked + .slider:before { + transform: translateX(26px); +} + +.dark-mode-switch .slider-icon { + transform: rotate(250deg); + position: absolute; + right: 6px; + top: 7px; + stroke: white; +} + +@media (min-width: 768px) { + .dark-mode-switch { + top: 15px; + } +} + +ul.properties-list { + list-style: none; + padding-left: 0; +} +.properties-list li { + margin-bottom: 10px; +} diff --git a/documentation/docs/generated/styles/dark.css b/documentation/docs/generated/styles/dark.css new file mode 100644 index 0000000000..b309593939 --- /dev/null +++ b/documentation/docs/generated/styles/dark.css @@ -0,0 +1,117 @@ +body.dark { + background: #212121; + color: #fafafa; +} + +.dark code { + color: #e09393; +} + +.dark a, +.dark .menu ul.list li a.active { + color: #7fc9ff; +} + +.dark .menu { + background: #212121; + border-right: 1px solid #444; +} + +.dark .menu ul.list li a { + color: #fafafa; +} + +.dark .menu ul.list li.divider { + background: #444; +} + +.dark .xs-menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.dark .menu ul.list li:nth-child(2) { + margin: 0; + background: none; +} + +.dark #book-search-input { + background: #212121; + border-top: 1px solid #444; + border-bottom: 1px solid #444; + color: #fafafa; +} + +.dark .table.metadata > tbody > tr:hover { + color: #555; +} + +.dark .table-bordered { + border: 1px solid #444; +} + +.dark .table-bordered > tbody > tr > td, +.dark .table-bordered > tbody > tr > th, +.dark .table-bordered > tfoot > tr > td, +.dark .table-bordered > tfoot > tr > th, +.dark .table-bordered > thead > tr > td, +.dark .table-bordered > thead > tr > th { + border: 1px solid #444; +} + +.dark .coverage a, +.dark .coverage-count { + color: #fafafa; +} + +.dark .coverage-header { + color: black; +} + +.dark .routes svg text, +.dark .routes svg a { + fill: white; +} +.dark .routes svg rect { + fill: #212121 !important; +} + +.dark .navbar-default, +.dark .btn-default { + background-color: black; + border-color: #444; + color: #fafafa; +} + +.dark .navbar-default .navbar-brand { + color: #fafafa; +} + +.dark .overview .card, +.dark .modules .card { + background: #171717; + color: #fafafa; + border: 1px solid #444; +} +.dark .overview .card a { + color: #fafafa; +} + +.dark .modules .card-header { + background: none; + border-bottom: 1px solid #444; +} + +.dark .module .list-group-item { + background: none; + border: 1px solid #444; +} + +.dark .container-fluid.module h3 a { + color: #337ab7; +} + +.dark table.params thead { + background: #484848; + color: #fafafa; +} diff --git a/documentation/docs/generated/styles/ionicons.min.css b/documentation/docs/generated/styles/ionicons.min.css new file mode 100644 index 0000000000..e50e1bb378 --- /dev/null +++ b/documentation/docs/generated/styles/ionicons.min.css @@ -0,0 +1,11 @@ +/*! + Ionicons, v4.1.2 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=4.1.2");src:url("../fonts/ionicons.eot?v=4.1.2#iefix") format("embedded-opentype"),url("../fonts/ionicons.woff2?v=4.1.2") format("woff2"),url("../fonts/ionicons.woff?v=4.1.2") format("woff"),url("../fonts/ionicons.ttf?v=4.1.2") format("truetype"),url("../fonts/ionicons.svg?v=4.1.2#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-ios-add:before,.ion-ios-add-circle:before,.ion-ios-add-circle-outline:before,.ion-ios-airplane:before,.ion-ios-alarm:before,.ion-ios-albums:before,.ion-ios-alert:before,.ion-ios-american-football:before,.ion-ios-analytics:before,.ion-ios-aperture:before,.ion-ios-apps:before,.ion-ios-appstore:before,.ion-ios-archive:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-dropdown:before,.ion-ios-arrow-dropdown-circle:before,.ion-ios-arrow-dropleft:before,.ion-ios-arrow-dropleft-circle:before,.ion-ios-arrow-dropright:before,.ion-ios-arrow-dropright-circle:before,.ion-ios-arrow-dropup:before,.ion-ios-arrow-dropup-circle:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-round-back:before,.ion-ios-arrow-round-down:before,.ion-ios-arrow-round-forward:before,.ion-ios-arrow-round-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-attach:before,.ion-ios-backspace:before,.ion-ios-barcode:before,.ion-ios-baseball:before,.ion-ios-basket:before,.ion-ios-basketball:before,.ion-ios-battery-charging:before,.ion-ios-battery-dead:before,.ion-ios-battery-full:before,.ion-ios-beaker:before,.ion-ios-bed:before,.ion-ios-beer:before,.ion-ios-bicycle:before,.ion-ios-bluetooth:before,.ion-ios-boat:before,.ion-ios-body:before,.ion-ios-bonfire:before,.ion-ios-book:before,.ion-ios-bookmark:before,.ion-ios-bookmarks:before,.ion-ios-bowtie:before,.ion-ios-briefcase:before,.ion-ios-browsers:before,.ion-ios-brush:before,.ion-ios-bug:before,.ion-ios-build:before,.ion-ios-bulb:before,.ion-ios-bus:before,.ion-ios-business:before,.ion-ios-cafe:before,.ion-ios-calculator:before,.ion-ios-calendar:before,.ion-ios-call:before,.ion-ios-camera:before,.ion-ios-car:before,.ion-ios-card:before,.ion-ios-cart:before,.ion-ios-cash:before,.ion-ios-cellular:before,.ion-ios-chatboxes:before,.ion-ios-chatbubbles:before,.ion-ios-checkbox:before,.ion-ios-checkbox-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-circle:before,.ion-ios-checkmark-circle-outline:before,.ion-ios-clipboard:before,.ion-ios-clock:before,.ion-ios-close:before,.ion-ios-close-circle:before,.ion-ios-close-circle-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-circle:before,.ion-ios-cloud-done:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-code:before,.ion-ios-code-download:before,.ion-ios-code-working:before,.ion-ios-cog:before,.ion-ios-color-fill:before,.ion-ios-color-filter:before,.ion-ios-color-palette:before,.ion-ios-color-wand:before,.ion-ios-compass:before,.ion-ios-construct:before,.ion-ios-contact:before,.ion-ios-contacts:before,.ion-ios-contract:before,.ion-ios-contrast:before,.ion-ios-copy:before,.ion-ios-create:before,.ion-ios-crop:before,.ion-ios-cube:before,.ion-ios-cut:before,.ion-ios-desktop:before,.ion-ios-disc:before,.ion-ios-document:before,.ion-ios-done-all:before,.ion-ios-download:before,.ion-ios-easel:before,.ion-ios-egg:before,.ion-ios-exit:before,.ion-ios-expand:before,.ion-ios-eye:before,.ion-ios-eye-off:before,.ion-ios-fastforward:before,.ion-ios-female:before,.ion-ios-filing:before,.ion-ios-film:before,.ion-ios-finger-print:before,.ion-ios-fitness:before,.ion-ios-flag:before,.ion-ios-flame:before,.ion-ios-flash:before,.ion-ios-flash-off:before,.ion-ios-flashlight:before,.ion-ios-flask:before,.ion-ios-flower:before,.ion-ios-folder:before,.ion-ios-folder-open:before,.ion-ios-football:before,.ion-ios-funnel:before,.ion-ios-gift:before,.ion-ios-git-branch:before,.ion-ios-git-commit:before,.ion-ios-git-compare:before,.ion-ios-git-merge:before,.ion-ios-git-network:before,.ion-ios-git-pull-request:before,.ion-ios-glasses:before,.ion-ios-globe:before,.ion-ios-grid:before,.ion-ios-hammer:before,.ion-ios-hand:before,.ion-ios-happy:before,.ion-ios-headset:before,.ion-ios-heart:before,.ion-ios-heart-dislike:before,.ion-ios-heart-empty:before,.ion-ios-heart-half:before,.ion-ios-help:before,.ion-ios-help-buoy:before,.ion-ios-help-circle:before,.ion-ios-help-circle-outline:before,.ion-ios-home:before,.ion-ios-hourglass:before,.ion-ios-ice-cream:before,.ion-ios-image:before,.ion-ios-images:before,.ion-ios-infinite:before,.ion-ios-information:before,.ion-ios-information-circle:before,.ion-ios-information-circle-outline:before,.ion-ios-jet:before,.ion-ios-journal:before,.ion-ios-key:before,.ion-ios-keypad:before,.ion-ios-laptop:before,.ion-ios-leaf:before,.ion-ios-link:before,.ion-ios-list:before,.ion-ios-list-box:before,.ion-ios-locate:before,.ion-ios-lock:before,.ion-ios-log-in:before,.ion-ios-log-out:before,.ion-ios-magnet:before,.ion-ios-mail:before,.ion-ios-mail-open:before,.ion-ios-mail-unread:before,.ion-ios-male:before,.ion-ios-man:before,.ion-ios-map:before,.ion-ios-medal:before,.ion-ios-medical:before,.ion-ios-medkit:before,.ion-ios-megaphone:before,.ion-ios-menu:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-microphone:before,.ion-ios-moon:before,.ion-ios-more:before,.ion-ios-move:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-notifications:before,.ion-ios-notifications-off:before,.ion-ios-notifications-outline:before,.ion-ios-nuclear:before,.ion-ios-nutrition:before,.ion-ios-open:before,.ion-ios-options:before,.ion-ios-outlet:before,.ion-ios-paper:before,.ion-ios-paper-plane:before,.ion-ios-partly-sunny:before,.ion-ios-pause:before,.ion-ios-paw:before,.ion-ios-people:before,.ion-ios-person:before,.ion-ios-person-add:before,.ion-ios-phone-landscape:before,.ion-ios-phone-portrait:before,.ion-ios-photos:before,.ion-ios-pie:before,.ion-ios-pin:before,.ion-ios-pint:before,.ion-ios-pizza:before,.ion-ios-planet:before,.ion-ios-play:before,.ion-ios-play-circle:before,.ion-ios-podium:before,.ion-ios-power:before,.ion-ios-pricetag:before,.ion-ios-pricetags:before,.ion-ios-print:before,.ion-ios-pulse:before,.ion-ios-qr-scanner:before,.ion-ios-quote:before,.ion-ios-radio:before,.ion-ios-radio-button-off:before,.ion-ios-radio-button-on:before,.ion-ios-rainy:before,.ion-ios-recording:before,.ion-ios-redo:before,.ion-ios-refresh:before,.ion-ios-refresh-circle:before,.ion-ios-remove:before,.ion-ios-remove-circle:before,.ion-ios-remove-circle-outline:before,.ion-ios-reorder:before,.ion-ios-repeat:before,.ion-ios-resize:before,.ion-ios-restaurant:before,.ion-ios-return-left:before,.ion-ios-return-right:before,.ion-ios-reverse-camera:before,.ion-ios-rewind:before,.ion-ios-ribbon:before,.ion-ios-rocket:before,.ion-ios-rose:before,.ion-ios-sad:before,.ion-ios-save:before,.ion-ios-school:before,.ion-ios-search:before,.ion-ios-send:before,.ion-ios-settings:before,.ion-ios-share:before,.ion-ios-share-alt:before,.ion-ios-shirt:before,.ion-ios-shuffle:before,.ion-ios-skip-backward:before,.ion-ios-skip-forward:before,.ion-ios-snow:before,.ion-ios-speedometer:before,.ion-ios-square:before,.ion-ios-square-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stats:before,.ion-ios-stopwatch:before,.ion-ios-subway:before,.ion-ios-sunny:before,.ion-ios-swap:before,.ion-ios-switch:before,.ion-ios-sync:before,.ion-ios-tablet-landscape:before,.ion-ios-tablet-portrait:before,.ion-ios-tennisball:before,.ion-ios-text:before,.ion-ios-thermometer:before,.ion-ios-thumbs-down:before,.ion-ios-thumbs-up:before,.ion-ios-thunderstorm:before,.ion-ios-time:before,.ion-ios-timer:before,.ion-ios-today:before,.ion-ios-train:before,.ion-ios-transgender:before,.ion-ios-trash:before,.ion-ios-trending-down:before,.ion-ios-trending-up:before,.ion-ios-trophy:before,.ion-ios-tv:before,.ion-ios-umbrella:before,.ion-ios-undo:before,.ion-ios-unlock:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-volume-mute:before,.ion-ios-volume-off:before,.ion-ios-walk:before,.ion-ios-wallet:before,.ion-ios-warning:before,.ion-ios-watch:before,.ion-ios-water:before,.ion-ios-wifi:before,.ion-ios-wine:before,.ion-ios-woman:before,.ion-logo-android:before,.ion-logo-angular:before,.ion-logo-apple:before,.ion-logo-bitbucket:before,.ion-logo-bitcoin:before,.ion-logo-buffer:before,.ion-logo-chrome:before,.ion-logo-closed-captioning:before,.ion-logo-codepen:before,.ion-logo-css3:before,.ion-logo-designernews:before,.ion-logo-dribbble:before,.ion-logo-dropbox:before,.ion-logo-euro:before,.ion-logo-facebook:before,.ion-logo-flickr:before,.ion-logo-foursquare:before,.ion-logo-freebsd-devil:before,.ion-logo-game-controller-a:before,.ion-logo-game-controller-b:before,.ion-logo-github:before,.ion-logo-google:before,.ion-logo-googleplus:before,.ion-logo-hackernews:before,.ion-logo-html5:before,.ion-logo-instagram:before,.ion-logo-ionic:before,.ion-logo-ionitron:before,.ion-logo-javascript:before,.ion-logo-linkedin:before,.ion-logo-markdown:before,.ion-logo-model-s:before,.ion-logo-no-smoking:before,.ion-logo-nodejs:before,.ion-logo-npm:before,.ion-logo-octocat:before,.ion-logo-pinterest:before,.ion-logo-playstation:before,.ion-logo-polymer:before,.ion-logo-python:before,.ion-logo-reddit:before,.ion-logo-rss:before,.ion-logo-sass:before,.ion-logo-skype:before,.ion-logo-slack:before,.ion-logo-snapchat:before,.ion-logo-steam:before,.ion-logo-tumblr:before,.ion-logo-tux:before,.ion-logo-twitch:before,.ion-logo-twitter:before,.ion-logo-usd:before,.ion-logo-vimeo:before,.ion-logo-vk:before,.ion-logo-whatsapp:before,.ion-logo-windows:before,.ion-logo-wordpress:before,.ion-logo-xbox:before,.ion-logo-xing:before,.ion-logo-yahoo:before,.ion-logo-yen:before,.ion-logo-youtube:before,.ion-md-add:before,.ion-md-add-circle:before,.ion-md-add-circle-outline:before,.ion-md-airplane:before,.ion-md-alarm:before,.ion-md-albums:before,.ion-md-alert:before,.ion-md-american-football:before,.ion-md-analytics:before,.ion-md-aperture:before,.ion-md-apps:before,.ion-md-appstore:before,.ion-md-archive:before,.ion-md-arrow-back:before,.ion-md-arrow-down:before,.ion-md-arrow-dropdown:before,.ion-md-arrow-dropdown-circle:before,.ion-md-arrow-dropleft:before,.ion-md-arrow-dropleft-circle:before,.ion-md-arrow-dropright:before,.ion-md-arrow-dropright-circle:before,.ion-md-arrow-dropup:before,.ion-md-arrow-dropup-circle:before,.ion-md-arrow-forward:before,.ion-md-arrow-round-back:before,.ion-md-arrow-round-down:before,.ion-md-arrow-round-forward:before,.ion-md-arrow-round-up:before,.ion-md-arrow-up:before,.ion-md-at:before,.ion-md-attach:before,.ion-md-backspace:before,.ion-md-barcode:before,.ion-md-baseball:before,.ion-md-basket:before,.ion-md-basketball:before,.ion-md-battery-charging:before,.ion-md-battery-dead:before,.ion-md-battery-full:before,.ion-md-beaker:before,.ion-md-bed:before,.ion-md-beer:before,.ion-md-bicycle:before,.ion-md-bluetooth:before,.ion-md-boat:before,.ion-md-body:before,.ion-md-bonfire:before,.ion-md-book:before,.ion-md-bookmark:before,.ion-md-bookmarks:before,.ion-md-bowtie:before,.ion-md-briefcase:before,.ion-md-browsers:before,.ion-md-brush:before,.ion-md-bug:before,.ion-md-build:before,.ion-md-bulb:before,.ion-md-bus:before,.ion-md-business:before,.ion-md-cafe:before,.ion-md-calculator:before,.ion-md-calendar:before,.ion-md-call:before,.ion-md-camera:before,.ion-md-car:before,.ion-md-card:before,.ion-md-cart:before,.ion-md-cash:before,.ion-md-cellular:before,.ion-md-chatboxes:before,.ion-md-chatbubbles:before,.ion-md-checkbox:before,.ion-md-checkbox-outline:before,.ion-md-checkmark:before,.ion-md-checkmark-circle:before,.ion-md-checkmark-circle-outline:before,.ion-md-clipboard:before,.ion-md-clock:before,.ion-md-close:before,.ion-md-close-circle:before,.ion-md-close-circle-outline:before,.ion-md-cloud:before,.ion-md-cloud-circle:before,.ion-md-cloud-done:before,.ion-md-cloud-download:before,.ion-md-cloud-outline:before,.ion-md-cloud-upload:before,.ion-md-cloudy:before,.ion-md-cloudy-night:before,.ion-md-code:before,.ion-md-code-download:before,.ion-md-code-working:before,.ion-md-cog:before,.ion-md-color-fill:before,.ion-md-color-filter:before,.ion-md-color-palette:before,.ion-md-color-wand:before,.ion-md-compass:before,.ion-md-construct:before,.ion-md-contact:before,.ion-md-contacts:before,.ion-md-contract:before,.ion-md-contrast:before,.ion-md-copy:before,.ion-md-create:before,.ion-md-crop:before,.ion-md-cube:before,.ion-md-cut:before,.ion-md-desktop:before,.ion-md-disc:before,.ion-md-document:before,.ion-md-done-all:before,.ion-md-download:before,.ion-md-easel:before,.ion-md-egg:before,.ion-md-exit:before,.ion-md-expand:before,.ion-md-eye:before,.ion-md-eye-off:before,.ion-md-fastforward:before,.ion-md-female:before,.ion-md-filing:before,.ion-md-film:before,.ion-md-finger-print:before,.ion-md-fitness:before,.ion-md-flag:before,.ion-md-flame:before,.ion-md-flash:before,.ion-md-flash-off:before,.ion-md-flashlight:before,.ion-md-flask:before,.ion-md-flower:before,.ion-md-folder:before,.ion-md-folder-open:before,.ion-md-football:before,.ion-md-funnel:before,.ion-md-gift:before,.ion-md-git-branch:before,.ion-md-git-commit:before,.ion-md-git-compare:before,.ion-md-git-merge:before,.ion-md-git-network:before,.ion-md-git-pull-request:before,.ion-md-glasses:before,.ion-md-globe:before,.ion-md-grid:before,.ion-md-hammer:before,.ion-md-hand:before,.ion-md-happy:before,.ion-md-headset:before,.ion-md-heart:before,.ion-md-heart-dislike:before,.ion-md-heart-empty:before,.ion-md-heart-half:before,.ion-md-help:before,.ion-md-help-buoy:before,.ion-md-help-circle:before,.ion-md-help-circle-outline:before,.ion-md-home:before,.ion-md-hourglass:before,.ion-md-ice-cream:before,.ion-md-image:before,.ion-md-images:before,.ion-md-infinite:before,.ion-md-information:before,.ion-md-information-circle:before,.ion-md-information-circle-outline:before,.ion-md-jet:before,.ion-md-journal:before,.ion-md-key:before,.ion-md-keypad:before,.ion-md-laptop:before,.ion-md-leaf:before,.ion-md-link:before,.ion-md-list:before,.ion-md-list-box:before,.ion-md-locate:before,.ion-md-lock:before,.ion-md-log-in:before,.ion-md-log-out:before,.ion-md-magnet:before,.ion-md-mail:before,.ion-md-mail-open:before,.ion-md-mail-unread:before,.ion-md-male:before,.ion-md-man:before,.ion-md-map:before,.ion-md-medal:before,.ion-md-medical:before,.ion-md-medkit:before,.ion-md-megaphone:before,.ion-md-menu:before,.ion-md-mic:before,.ion-md-mic-off:before,.ion-md-microphone:before,.ion-md-moon:before,.ion-md-more:before,.ion-md-move:before,.ion-md-musical-note:before,.ion-md-musical-notes:before,.ion-md-navigate:before,.ion-md-notifications:before,.ion-md-notifications-off:before,.ion-md-notifications-outline:before,.ion-md-nuclear:before,.ion-md-nutrition:before,.ion-md-open:before,.ion-md-options:before,.ion-md-outlet:before,.ion-md-paper:before,.ion-md-paper-plane:before,.ion-md-partly-sunny:before,.ion-md-pause:before,.ion-md-paw:before,.ion-md-people:before,.ion-md-person:before,.ion-md-person-add:before,.ion-md-phone-landscape:before,.ion-md-phone-portrait:before,.ion-md-photos:before,.ion-md-pie:before,.ion-md-pin:before,.ion-md-pint:before,.ion-md-pizza:before,.ion-md-planet:before,.ion-md-play:before,.ion-md-play-circle:before,.ion-md-podium:before,.ion-md-power:before,.ion-md-pricetag:before,.ion-md-pricetags:before,.ion-md-print:before,.ion-md-pulse:before,.ion-md-qr-scanner:before,.ion-md-quote:before,.ion-md-radio:before,.ion-md-radio-button-off:before,.ion-md-radio-button-on:before,.ion-md-rainy:before,.ion-md-recording:before,.ion-md-redo:before,.ion-md-refresh:before,.ion-md-refresh-circle:before,.ion-md-remove:before,.ion-md-remove-circle:before,.ion-md-remove-circle-outline:before,.ion-md-reorder:before,.ion-md-repeat:before,.ion-md-resize:before,.ion-md-restaurant:before,.ion-md-return-left:before,.ion-md-return-right:before,.ion-md-reverse-camera:before,.ion-md-rewind:before,.ion-md-ribbon:before,.ion-md-rocket:before,.ion-md-rose:before,.ion-md-sad:before,.ion-md-save:before,.ion-md-school:before,.ion-md-search:before,.ion-md-send:before,.ion-md-settings:before,.ion-md-share:before,.ion-md-share-alt:before,.ion-md-shirt:before,.ion-md-shuffle:before,.ion-md-skip-backward:before,.ion-md-skip-forward:before,.ion-md-snow:before,.ion-md-speedometer:before,.ion-md-square:before,.ion-md-square-outline:before,.ion-md-star:before,.ion-md-star-half:before,.ion-md-star-outline:before,.ion-md-stats:before,.ion-md-stopwatch:before,.ion-md-subway:before,.ion-md-sunny:before,.ion-md-swap:before,.ion-md-switch:before,.ion-md-sync:before,.ion-md-tablet-landscape:before,.ion-md-tablet-portrait:before,.ion-md-tennisball:before,.ion-md-text:before,.ion-md-thermometer:before,.ion-md-thumbs-down:before,.ion-md-thumbs-up:before,.ion-md-thunderstorm:before,.ion-md-time:before,.ion-md-timer:before,.ion-md-today:before,.ion-md-train:before,.ion-md-transgender:before,.ion-md-trash:before,.ion-md-trending-down:before,.ion-md-trending-up:before,.ion-md-trophy:before,.ion-md-tv:before,.ion-md-umbrella:before,.ion-md-undo:before,.ion-md-unlock:before,.ion-md-videocam:before,.ion-md-volume-high:before,.ion-md-volume-low:before,.ion-md-volume-mute:before,.ion-md-volume-off:before,.ion-md-walk:before,.ion-md-wallet:before,.ion-md-warning:before,.ion-md-watch:before,.ion-md-water:before,.ion-md-wifi:before,.ion-md-wine:before,.ion-md-woman:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-ios-add:before{content:"\f102"}.ion-ios-add-circle:before{content:"\f101"}.ion-ios-add-circle-outline:before{content:"\f100"}.ion-ios-airplane:before{content:"\f137"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-alert:before{content:"\f104"}.ion-ios-american-football:before{content:"\f106"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-aperture:before{content:"\f108"}.ion-ios-apps:before{content:"\f10a"}.ion-ios-appstore:before{content:"\f10c"}.ion-ios-archive:before{content:"\f10e"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-dropdown:before{content:"\f110"}.ion-ios-arrow-dropdown-circle:before{content:"\f125"}.ion-ios-arrow-dropleft:before{content:"\f112"}.ion-ios-arrow-dropleft-circle:before{content:"\f129"}.ion-ios-arrow-dropright:before{content:"\f114"}.ion-ios-arrow-dropright-circle:before{content:"\f12b"}.ion-ios-arrow-dropup:before{content:"\f116"}.ion-ios-arrow-dropup-circle:before{content:"\f12d"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-round-back:before{content:"\f117"}.ion-ios-arrow-round-down:before{content:"\f118"}.ion-ios-arrow-round-forward:before{content:"\f119"}.ion-ios-arrow-round-up:before{content:"\f11a"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-attach:before{content:"\f11b"}.ion-ios-backspace:before{content:"\f11d"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-basket:before{content:"\f11f"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-battery-charging:before{content:"\f120"}.ion-ios-battery-dead:before{content:"\f121"}.ion-ios-battery-full:before{content:"\f122"}.ion-ios-beaker:before{content:"\f124"}.ion-ios-bed:before{content:"\f139"}.ion-ios-beer:before{content:"\f126"}.ion-ios-bicycle:before{content:"\f127"}.ion-ios-bluetooth:before{content:"\f128"}.ion-ios-boat:before{content:"\f12a"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-bonfire:before{content:"\f12c"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-bookmark:before{content:"\f12e"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bowtie:before{content:"\f130"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-brush:before{content:"\f132"}.ion-ios-bug:before{content:"\f134"}.ion-ios-build:before{content:"\f136"}.ion-ios-bulb:before{content:"\f138"}.ion-ios-bus:before{content:"\f13a"}.ion-ios-business:before{content:"\f1a3"}.ion-ios-cafe:before{content:"\f13c"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-call:before{content:"\f13e"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-car:before{content:"\f140"}.ion-ios-card:before{content:"\f142"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cash:before{content:"\f144"}.ion-ios-cellular:before{content:"\f13d"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatbubbles:before{content:"\f146"}.ion-ios-checkbox:before{content:"\f148"}.ion-ios-checkbox-outline:before{content:"\f147"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-circle:before{content:"\f14a"}.ion-ios-checkmark-circle-outline:before{content:"\f149"}.ion-ios-clipboard:before{content:"\f14c"}.ion-ios-clock:before{content:"\f403"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-circle:before{content:"\f14e"}.ion-ios-close-circle-outline:before{content:"\f14d"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-circle:before{content:"\f152"}.ion-ios-cloud-done:before{content:"\f154"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-code:before{content:"\f157"}.ion-ios-code-download:before{content:"\f155"}.ion-ios-code-working:before{content:"\f156"}.ion-ios-cog:before{content:"\f412"}.ion-ios-color-fill:before{content:"\f159"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-palette:before{content:"\f15b"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-compass:before{content:"\f15d"}.ion-ios-construct:before{content:"\f15f"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contacts:before{content:"\f161"}.ion-ios-contract:before{content:"\f162"}.ion-ios-contrast:before{content:"\f163"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-create:before{content:"\f165"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-cube:before{content:"\f168"}.ion-ios-cut:before{content:"\f16a"}.ion-ios-desktop:before{content:"\f16c"}.ion-ios-disc:before{content:"\f16e"}.ion-ios-document:before{content:"\f170"}.ion-ios-done-all:before{content:"\f171"}.ion-ios-download:before{content:"\f420"}.ion-ios-easel:before{content:"\f173"}.ion-ios-egg:before{content:"\f175"}.ion-ios-exit:before{content:"\f177"}.ion-ios-expand:before{content:"\f178"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-off:before{content:"\f17a"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-female:before{content:"\f17b"}.ion-ios-filing:before{content:"\f429"}.ion-ios-film:before{content:"\f42b"}.ion-ios-finger-print:before{content:"\f17c"}.ion-ios-fitness:before{content:"\f1ab"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flash:before{content:"\f17e"}.ion-ios-flash-off:before{content:"\f12f"}.ion-ios-flashlight:before{content:"\f141"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flower:before{content:"\f433"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-open:before{content:"\f180"}.ion-ios-football:before{content:"\f437"}.ion-ios-funnel:before{content:"\f182"}.ion-ios-gift:before{content:"\f191"}.ion-ios-git-branch:before{content:"\f183"}.ion-ios-git-commit:before{content:"\f184"}.ion-ios-git-compare:before{content:"\f185"}.ion-ios-git-merge:before{content:"\f186"}.ion-ios-git-network:before{content:"\f187"}.ion-ios-git-pull-request:before{content:"\f188"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-globe:before{content:"\f18a"}.ion-ios-grid:before{content:"\f18c"}.ion-ios-hammer:before{content:"\f18e"}.ion-ios-hand:before{content:"\f190"}.ion-ios-happy:before{content:"\f192"}.ion-ios-headset:before{content:"\f194"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-dislike:before{content:"\f13f"}.ion-ios-heart-empty:before{content:"\f19b"}.ion-ios-heart-half:before{content:"\f19d"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-buoy:before{content:"\f196"}.ion-ios-help-circle:before{content:"\f198"}.ion-ios-help-circle-outline:before{content:"\f197"}.ion-ios-home:before{content:"\f448"}.ion-ios-hourglass:before{content:"\f103"}.ion-ios-ice-cream:before{content:"\f19a"}.ion-ios-image:before{content:"\f19c"}.ion-ios-images:before{content:"\f19e"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-circle:before{content:"\f1a0"}.ion-ios-information-circle-outline:before{content:"\f19f"}.ion-ios-jet:before{content:"\f1a5"}.ion-ios-journal:before{content:"\f189"}.ion-ios-key:before{content:"\f1a7"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-laptop:before{content:"\f1a8"}.ion-ios-leaf:before{content:"\f1aa"}.ion-ios-link:before{content:"\f22a"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-box:before{content:"\f143"}.ion-ios-locate:before{content:"\f1ae"}.ion-ios-lock:before{content:"\f1b0"}.ion-ios-log-in:before{content:"\f1b1"}.ion-ios-log-out:before{content:"\f1b2"}.ion-ios-magnet:before{content:"\f1b4"}.ion-ios-mail:before{content:"\f1b8"}.ion-ios-mail-open:before{content:"\f1b6"}.ion-ios-mail-unread:before{content:"\f145"}.ion-ios-male:before{content:"\f1b9"}.ion-ios-man:before{content:"\f1bb"}.ion-ios-map:before{content:"\f1bd"}.ion-ios-medal:before{content:"\f1bf"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-megaphone:before{content:"\f1c1"}.ion-ios-menu:before{content:"\f1c3"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-microphone:before{content:"\f1c6"}.ion-ios-moon:before{content:"\f468"}.ion-ios-more:before{content:"\f1c8"}.ion-ios-move:before{content:"\f1cb"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-notifications:before{content:"\f1d3"}.ion-ios-notifications-off:before{content:"\f1d1"}.ion-ios-notifications-outline:before{content:"\f133"}.ion-ios-nuclear:before{content:"\f1d5"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-open:before{content:"\f1d7"}.ion-ios-options:before{content:"\f1d9"}.ion-ios-outlet:before{content:"\f1db"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-plane:before{content:"\f1dd"}.ion-ios-partly-sunny:before{content:"\f1df"}.ion-ios-pause:before{content:"\f478"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-people:before{content:"\f47c"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-add:before{content:"\f1e1"}.ion-ios-phone-landscape:before{content:"\f1e2"}.ion-ios-phone-portrait:before{content:"\f1e3"}.ion-ios-photos:before{content:"\f482"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pin:before{content:"\f1e5"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pizza:before{content:"\f1e7"}.ion-ios-planet:before{content:"\f1eb"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-circle:before{content:"\f113"}.ion-ios-podium:before{content:"\f1ed"}.ion-ios-power:before{content:"\f1ef"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-print:before{content:"\f1f1"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-qr-scanner:before{content:"\f1f3"}.ion-ios-quote:before{content:"\f1f5"}.ion-ios-radio:before{content:"\f1f9"}.ion-ios-radio-button-off:before{content:"\f1f6"}.ion-ios-radio-button-on:before{content:"\f1f7"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-recording:before{content:"\f497"}.ion-ios-redo:before{content:"\f499"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-circle:before{content:"\f135"}.ion-ios-remove:before{content:"\f1fc"}.ion-ios-remove-circle:before{content:"\f1fb"}.ion-ios-remove-circle-outline:before{content:"\f1fa"}.ion-ios-reorder:before{content:"\f1fd"}.ion-ios-repeat:before{content:"\f1fe"}.ion-ios-resize:before{content:"\f1ff"}.ion-ios-restaurant:before{content:"\f201"}.ion-ios-return-left:before{content:"\f202"}.ion-ios-return-right:before{content:"\f203"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-ribbon:before{content:"\f205"}.ion-ios-rocket:before{content:"\f14b"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-sad:before{content:"\f207"}.ion-ios-save:before{content:"\f1a6"}.ion-ios-school:before{content:"\f209"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-send:before{content:"\f20c"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-share:before{content:"\f211"}.ion-ios-share-alt:before{content:"\f20f"}.ion-ios-shirt:before{content:"\f213"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-skip-backward:before{content:"\f215"}.ion-ios-skip-forward:before{content:"\f217"}.ion-ios-snow:before{content:"\f218"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-square:before{content:"\f21a"}.ion-ios-square-outline:before{content:"\f15c"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stats:before{content:"\f21c"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-subway:before{content:"\f21e"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-swap:before{content:"\f21f"}.ion-ios-switch:before{content:"\f221"}.ion-ios-sync:before{content:"\f222"}.ion-ios-tablet-landscape:before{content:"\f223"}.ion-ios-tablet-portrait:before{content:"\f24e"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-text:before{content:"\f250"}.ion-ios-thermometer:before{content:"\f252"}.ion-ios-thumbs-down:before{content:"\f254"}.ion-ios-thumbs-up:before{content:"\f256"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-today:before{content:"\f14f"}.ion-ios-train:before{content:"\f258"}.ion-ios-transgender:before{content:"\f259"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trending-down:before{content:"\f25a"}.ion-ios-trending-up:before{content:"\f25b"}.ion-ios-trophy:before{content:"\f25d"}.ion-ios-tv:before{content:"\f115"}.ion-ios-umbrella:before{content:"\f25f"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-unlock:before{content:"\f261"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-volume-high:before{content:"\f11c"}.ion-ios-volume-low:before{content:"\f11e"}.ion-ios-volume-mute:before{content:"\f263"}.ion-ios-volume-off:before{content:"\f264"}.ion-ios-walk:before{content:"\f266"}.ion-ios-wallet:before{content:"\f18b"}.ion-ios-warning:before{content:"\f268"}.ion-ios-watch:before{content:"\f269"}.ion-ios-water:before{content:"\f26b"}.ion-ios-wifi:before{content:"\f26d"}.ion-ios-wine:before{content:"\f26f"}.ion-ios-woman:before{content:"\f271"}.ion-logo-android:before{content:"\f225"}.ion-logo-angular:before{content:"\f227"}.ion-logo-apple:before{content:"\f229"}.ion-logo-bitbucket:before{content:"\f193"}.ion-logo-bitcoin:before{content:"\f22b"}.ion-logo-buffer:before{content:"\f22d"}.ion-logo-chrome:before{content:"\f22f"}.ion-logo-closed-captioning:before{content:"\f105"}.ion-logo-codepen:before{content:"\f230"}.ion-logo-css3:before{content:"\f231"}.ion-logo-designernews:before{content:"\f232"}.ion-logo-dribbble:before{content:"\f233"}.ion-logo-dropbox:before{content:"\f234"}.ion-logo-euro:before{content:"\f235"}.ion-logo-facebook:before{content:"\f236"}.ion-logo-flickr:before{content:"\f107"}.ion-logo-foursquare:before{content:"\f237"}.ion-logo-freebsd-devil:before{content:"\f238"}.ion-logo-game-controller-a:before{content:"\f13b"}.ion-logo-game-controller-b:before{content:"\f181"}.ion-logo-github:before{content:"\f239"}.ion-logo-google:before{content:"\f23a"}.ion-logo-googleplus:before{content:"\f23b"}.ion-logo-hackernews:before{content:"\f23c"}.ion-logo-html5:before{content:"\f23d"}.ion-logo-instagram:before{content:"\f23e"}.ion-logo-ionic:before{content:"\f150"}.ion-logo-ionitron:before{content:"\f151"}.ion-logo-javascript:before{content:"\f23f"}.ion-logo-linkedin:before{content:"\f240"}.ion-logo-markdown:before{content:"\f241"}.ion-logo-model-s:before{content:"\f153"}.ion-logo-no-smoking:before{content:"\f109"}.ion-logo-nodejs:before{content:"\f242"}.ion-logo-npm:before{content:"\f195"}.ion-logo-octocat:before{content:"\f243"}.ion-logo-pinterest:before{content:"\f244"}.ion-logo-playstation:before{content:"\f245"}.ion-logo-polymer:before{content:"\f15e"}.ion-logo-python:before{content:"\f246"}.ion-logo-reddit:before{content:"\f247"}.ion-logo-rss:before{content:"\f248"}.ion-logo-sass:before{content:"\f249"}.ion-logo-skype:before{content:"\f24a"}.ion-logo-slack:before{content:"\f10b"}.ion-logo-snapchat:before{content:"\f24b"}.ion-logo-steam:before{content:"\f24c"}.ion-logo-tumblr:before{content:"\f24d"}.ion-logo-tux:before{content:"\f2ae"}.ion-logo-twitch:before{content:"\f2af"}.ion-logo-twitter:before{content:"\f2b0"}.ion-logo-usd:before{content:"\f2b1"}.ion-logo-vimeo:before{content:"\f2c4"}.ion-logo-vk:before{content:"\f10d"}.ion-logo-whatsapp:before{content:"\f2c5"}.ion-logo-windows:before{content:"\f32f"}.ion-logo-wordpress:before{content:"\f330"}.ion-logo-xbox:before{content:"\f34c"}.ion-logo-xing:before{content:"\f10f"}.ion-logo-yahoo:before{content:"\f34d"}.ion-logo-yen:before{content:"\f34e"}.ion-logo-youtube:before{content:"\f34f"}.ion-md-add:before{content:"\f273"}.ion-md-add-circle:before{content:"\f272"}.ion-md-add-circle-outline:before{content:"\f158"}.ion-md-airplane:before{content:"\f15a"}.ion-md-alarm:before{content:"\f274"}.ion-md-albums:before{content:"\f275"}.ion-md-alert:before{content:"\f276"}.ion-md-american-football:before{content:"\f277"}.ion-md-analytics:before{content:"\f278"}.ion-md-aperture:before{content:"\f279"}.ion-md-apps:before{content:"\f27a"}.ion-md-appstore:before{content:"\f27b"}.ion-md-archive:before{content:"\f27c"}.ion-md-arrow-back:before{content:"\f27d"}.ion-md-arrow-down:before{content:"\f27e"}.ion-md-arrow-dropdown:before{content:"\f280"}.ion-md-arrow-dropdown-circle:before{content:"\f27f"}.ion-md-arrow-dropleft:before{content:"\f282"}.ion-md-arrow-dropleft-circle:before{content:"\f281"}.ion-md-arrow-dropright:before{content:"\f284"}.ion-md-arrow-dropright-circle:before{content:"\f283"}.ion-md-arrow-dropup:before{content:"\f286"}.ion-md-arrow-dropup-circle:before{content:"\f285"}.ion-md-arrow-forward:before{content:"\f287"}.ion-md-arrow-round-back:before{content:"\f288"}.ion-md-arrow-round-down:before{content:"\f289"}.ion-md-arrow-round-forward:before{content:"\f28a"}.ion-md-arrow-round-up:before{content:"\f28b"}.ion-md-arrow-up:before{content:"\f28c"}.ion-md-at:before{content:"\f28d"}.ion-md-attach:before{content:"\f28e"}.ion-md-backspace:before{content:"\f28f"}.ion-md-barcode:before{content:"\f290"}.ion-md-baseball:before{content:"\f291"}.ion-md-basket:before{content:"\f292"}.ion-md-basketball:before{content:"\f293"}.ion-md-battery-charging:before{content:"\f294"}.ion-md-battery-dead:before{content:"\f295"}.ion-md-battery-full:before{content:"\f296"}.ion-md-beaker:before{content:"\f297"}.ion-md-bed:before{content:"\f160"}.ion-md-beer:before{content:"\f298"}.ion-md-bicycle:before{content:"\f299"}.ion-md-bluetooth:before{content:"\f29a"}.ion-md-boat:before{content:"\f29b"}.ion-md-body:before{content:"\f29c"}.ion-md-bonfire:before{content:"\f29d"}.ion-md-book:before{content:"\f29e"}.ion-md-bookmark:before{content:"\f29f"}.ion-md-bookmarks:before{content:"\f2a0"}.ion-md-bowtie:before{content:"\f2a1"}.ion-md-briefcase:before{content:"\f2a2"}.ion-md-browsers:before{content:"\f2a3"}.ion-md-brush:before{content:"\f2a4"}.ion-md-bug:before{content:"\f2a5"}.ion-md-build:before{content:"\f2a6"}.ion-md-bulb:before{content:"\f2a7"}.ion-md-bus:before{content:"\f2a8"}.ion-md-business:before{content:"\f1a4"}.ion-md-cafe:before{content:"\f2a9"}.ion-md-calculator:before{content:"\f2aa"}.ion-md-calendar:before{content:"\f2ab"}.ion-md-call:before{content:"\f2ac"}.ion-md-camera:before{content:"\f2ad"}.ion-md-car:before{content:"\f2b2"}.ion-md-card:before{content:"\f2b3"}.ion-md-cart:before{content:"\f2b4"}.ion-md-cash:before{content:"\f2b5"}.ion-md-cellular:before{content:"\f164"}.ion-md-chatboxes:before{content:"\f2b6"}.ion-md-chatbubbles:before{content:"\f2b7"}.ion-md-checkbox:before{content:"\f2b9"}.ion-md-checkbox-outline:before{content:"\f2b8"}.ion-md-checkmark:before{content:"\f2bc"}.ion-md-checkmark-circle:before{content:"\f2bb"}.ion-md-checkmark-circle-outline:before{content:"\f2ba"}.ion-md-clipboard:before{content:"\f2bd"}.ion-md-clock:before{content:"\f2be"}.ion-md-close:before{content:"\f2c0"}.ion-md-close-circle:before{content:"\f2bf"}.ion-md-close-circle-outline:before{content:"\f166"}.ion-md-cloud:before{content:"\f2c9"}.ion-md-cloud-circle:before{content:"\f2c2"}.ion-md-cloud-done:before{content:"\f2c3"}.ion-md-cloud-download:before{content:"\f2c6"}.ion-md-cloud-outline:before{content:"\f2c7"}.ion-md-cloud-upload:before{content:"\f2c8"}.ion-md-cloudy:before{content:"\f2cb"}.ion-md-cloudy-night:before{content:"\f2ca"}.ion-md-code:before{content:"\f2ce"}.ion-md-code-download:before{content:"\f2cc"}.ion-md-code-working:before{content:"\f2cd"}.ion-md-cog:before{content:"\f2cf"}.ion-md-color-fill:before{content:"\f2d0"}.ion-md-color-filter:before{content:"\f2d1"}.ion-md-color-palette:before{content:"\f2d2"}.ion-md-color-wand:before{content:"\f2d3"}.ion-md-compass:before{content:"\f2d4"}.ion-md-construct:before{content:"\f2d5"}.ion-md-contact:before{content:"\f2d6"}.ion-md-contacts:before{content:"\f2d7"}.ion-md-contract:before{content:"\f2d8"}.ion-md-contrast:before{content:"\f2d9"}.ion-md-copy:before{content:"\f2da"}.ion-md-create:before{content:"\f2db"}.ion-md-crop:before{content:"\f2dc"}.ion-md-cube:before{content:"\f2dd"}.ion-md-cut:before{content:"\f2de"}.ion-md-desktop:before{content:"\f2df"}.ion-md-disc:before{content:"\f2e0"}.ion-md-document:before{content:"\f2e1"}.ion-md-done-all:before{content:"\f2e2"}.ion-md-download:before{content:"\f2e3"}.ion-md-easel:before{content:"\f2e4"}.ion-md-egg:before{content:"\f2e5"}.ion-md-exit:before{content:"\f2e6"}.ion-md-expand:before{content:"\f2e7"}.ion-md-eye:before{content:"\f2e9"}.ion-md-eye-off:before{content:"\f2e8"}.ion-md-fastforward:before{content:"\f2ea"}.ion-md-female:before{content:"\f2eb"}.ion-md-filing:before{content:"\f2ec"}.ion-md-film:before{content:"\f2ed"}.ion-md-finger-print:before{content:"\f2ee"}.ion-md-fitness:before{content:"\f1ac"}.ion-md-flag:before{content:"\f2ef"}.ion-md-flame:before{content:"\f2f0"}.ion-md-flash:before{content:"\f2f1"}.ion-md-flash-off:before{content:"\f169"}.ion-md-flashlight:before{content:"\f16b"}.ion-md-flask:before{content:"\f2f2"}.ion-md-flower:before{content:"\f2f3"}.ion-md-folder:before{content:"\f2f5"}.ion-md-folder-open:before{content:"\f2f4"}.ion-md-football:before{content:"\f2f6"}.ion-md-funnel:before{content:"\f2f7"}.ion-md-gift:before{content:"\f199"}.ion-md-git-branch:before{content:"\f2fa"}.ion-md-git-commit:before{content:"\f2fb"}.ion-md-git-compare:before{content:"\f2fc"}.ion-md-git-merge:before{content:"\f2fd"}.ion-md-git-network:before{content:"\f2fe"}.ion-md-git-pull-request:before{content:"\f2ff"}.ion-md-glasses:before{content:"\f300"}.ion-md-globe:before{content:"\f301"}.ion-md-grid:before{content:"\f302"}.ion-md-hammer:before{content:"\f303"}.ion-md-hand:before{content:"\f304"}.ion-md-happy:before{content:"\f305"}.ion-md-headset:before{content:"\f306"}.ion-md-heart:before{content:"\f308"}.ion-md-heart-dislike:before{content:"\f167"}.ion-md-heart-empty:before{content:"\f1a1"}.ion-md-heart-half:before{content:"\f1a2"}.ion-md-help:before{content:"\f30b"}.ion-md-help-buoy:before{content:"\f309"}.ion-md-help-circle:before{content:"\f30a"}.ion-md-help-circle-outline:before{content:"\f16d"}.ion-md-home:before{content:"\f30c"}.ion-md-hourglass:before{content:"\f111"}.ion-md-ice-cream:before{content:"\f30d"}.ion-md-image:before{content:"\f30e"}.ion-md-images:before{content:"\f30f"}.ion-md-infinite:before{content:"\f310"}.ion-md-information:before{content:"\f312"}.ion-md-information-circle:before{content:"\f311"}.ion-md-information-circle-outline:before{content:"\f16f"}.ion-md-jet:before{content:"\f315"}.ion-md-journal:before{content:"\f18d"}.ion-md-key:before{content:"\f316"}.ion-md-keypad:before{content:"\f317"}.ion-md-laptop:before{content:"\f318"}.ion-md-leaf:before{content:"\f319"}.ion-md-link:before{content:"\f22e"}.ion-md-list:before{content:"\f31b"}.ion-md-list-box:before{content:"\f31a"}.ion-md-locate:before{content:"\f31c"}.ion-md-lock:before{content:"\f31d"}.ion-md-log-in:before{content:"\f31e"}.ion-md-log-out:before{content:"\f31f"}.ion-md-magnet:before{content:"\f320"}.ion-md-mail:before{content:"\f322"}.ion-md-mail-open:before{content:"\f321"}.ion-md-mail-unread:before{content:"\f172"}.ion-md-male:before{content:"\f323"}.ion-md-man:before{content:"\f324"}.ion-md-map:before{content:"\f325"}.ion-md-medal:before{content:"\f326"}.ion-md-medical:before{content:"\f327"}.ion-md-medkit:before{content:"\f328"}.ion-md-megaphone:before{content:"\f329"}.ion-md-menu:before{content:"\f32a"}.ion-md-mic:before{content:"\f32c"}.ion-md-mic-off:before{content:"\f32b"}.ion-md-microphone:before{content:"\f32d"}.ion-md-moon:before{content:"\f32e"}.ion-md-more:before{content:"\f1c9"}.ion-md-move:before{content:"\f331"}.ion-md-musical-note:before{content:"\f332"}.ion-md-musical-notes:before{content:"\f333"}.ion-md-navigate:before{content:"\f334"}.ion-md-notifications:before{content:"\f338"}.ion-md-notifications-off:before{content:"\f336"}.ion-md-notifications-outline:before{content:"\f337"}.ion-md-nuclear:before{content:"\f339"}.ion-md-nutrition:before{content:"\f33a"}.ion-md-open:before{content:"\f33b"}.ion-md-options:before{content:"\f33c"}.ion-md-outlet:before{content:"\f33d"}.ion-md-paper:before{content:"\f33f"}.ion-md-paper-plane:before{content:"\f33e"}.ion-md-partly-sunny:before{content:"\f340"}.ion-md-pause:before{content:"\f341"}.ion-md-paw:before{content:"\f342"}.ion-md-people:before{content:"\f343"}.ion-md-person:before{content:"\f345"}.ion-md-person-add:before{content:"\f344"}.ion-md-phone-landscape:before{content:"\f346"}.ion-md-phone-portrait:before{content:"\f347"}.ion-md-photos:before{content:"\f348"}.ion-md-pie:before{content:"\f349"}.ion-md-pin:before{content:"\f34a"}.ion-md-pint:before{content:"\f34b"}.ion-md-pizza:before{content:"\f354"}.ion-md-planet:before{content:"\f356"}.ion-md-play:before{content:"\f357"}.ion-md-play-circle:before{content:"\f174"}.ion-md-podium:before{content:"\f358"}.ion-md-power:before{content:"\f359"}.ion-md-pricetag:before{content:"\f35a"}.ion-md-pricetags:before{content:"\f35b"}.ion-md-print:before{content:"\f35c"}.ion-md-pulse:before{content:"\f35d"}.ion-md-qr-scanner:before{content:"\f35e"}.ion-md-quote:before{content:"\f35f"}.ion-md-radio:before{content:"\f362"}.ion-md-radio-button-off:before{content:"\f360"}.ion-md-radio-button-on:before{content:"\f361"}.ion-md-rainy:before{content:"\f363"}.ion-md-recording:before{content:"\f364"}.ion-md-redo:before{content:"\f365"}.ion-md-refresh:before{content:"\f366"}.ion-md-refresh-circle:before{content:"\f228"}.ion-md-remove:before{content:"\f368"}.ion-md-remove-circle:before{content:"\f367"}.ion-md-remove-circle-outline:before{content:"\f176"}.ion-md-reorder:before{content:"\f369"}.ion-md-repeat:before{content:"\f36a"}.ion-md-resize:before{content:"\f36b"}.ion-md-restaurant:before{content:"\f36c"}.ion-md-return-left:before{content:"\f36d"}.ion-md-return-right:before{content:"\f36e"}.ion-md-reverse-camera:before{content:"\f36f"}.ion-md-rewind:before{content:"\f370"}.ion-md-ribbon:before{content:"\f371"}.ion-md-rocket:before{content:"\f179"}.ion-md-rose:before{content:"\f372"}.ion-md-sad:before{content:"\f373"}.ion-md-save:before{content:"\f1a9"}.ion-md-school:before{content:"\f374"}.ion-md-search:before{content:"\f375"}.ion-md-send:before{content:"\f376"}.ion-md-settings:before{content:"\f377"}.ion-md-share:before{content:"\f379"}.ion-md-share-alt:before{content:"\f378"}.ion-md-shirt:before{content:"\f37a"}.ion-md-shuffle:before{content:"\f37b"}.ion-md-skip-backward:before{content:"\f37c"}.ion-md-skip-forward:before{content:"\f37d"}.ion-md-snow:before{content:"\f37e"}.ion-md-speedometer:before{content:"\f37f"}.ion-md-square:before{content:"\f381"}.ion-md-square-outline:before{content:"\f380"}.ion-md-star:before{content:"\f384"}.ion-md-star-half:before{content:"\f382"}.ion-md-star-outline:before{content:"\f383"}.ion-md-stats:before{content:"\f385"}.ion-md-stopwatch:before{content:"\f386"}.ion-md-subway:before{content:"\f387"}.ion-md-sunny:before{content:"\f388"}.ion-md-swap:before{content:"\f389"}.ion-md-switch:before{content:"\f38a"}.ion-md-sync:before{content:"\f38b"}.ion-md-tablet-landscape:before{content:"\f38c"}.ion-md-tablet-portrait:before{content:"\f38d"}.ion-md-tennisball:before{content:"\f38e"}.ion-md-text:before{content:"\f38f"}.ion-md-thermometer:before{content:"\f390"}.ion-md-thumbs-down:before{content:"\f391"}.ion-md-thumbs-up:before{content:"\f392"}.ion-md-thunderstorm:before{content:"\f393"}.ion-md-time:before{content:"\f394"}.ion-md-timer:before{content:"\f395"}.ion-md-today:before{content:"\f17d"}.ion-md-train:before{content:"\f396"}.ion-md-transgender:before{content:"\f397"}.ion-md-trash:before{content:"\f398"}.ion-md-trending-down:before{content:"\f399"}.ion-md-trending-up:before{content:"\f39a"}.ion-md-trophy:before{content:"\f39b"}.ion-md-tv:before{content:"\f17f"}.ion-md-umbrella:before{content:"\f39c"}.ion-md-undo:before{content:"\f39d"}.ion-md-unlock:before{content:"\f39e"}.ion-md-videocam:before{content:"\f39f"}.ion-md-volume-high:before{content:"\f123"}.ion-md-volume-low:before{content:"\f131"}.ion-md-volume-mute:before{content:"\f3a1"}.ion-md-volume-off:before{content:"\f3a2"}.ion-md-walk:before{content:"\f3a4"}.ion-md-wallet:before{content:"\f18f"}.ion-md-warning:before{content:"\f3a5"}.ion-md-watch:before{content:"\f3a6"}.ion-md-water:before{content:"\f3a7"}.ion-md-wifi:before{content:"\f3a8"}.ion-md-wine:before{content:"\f3a9"}.ion-md-woman:before{content:"\f3aa"} diff --git a/documentation/docs/generated/styles/laravel.css b/documentation/docs/generated/styles/laravel.css new file mode 100644 index 0000000000..bae0c3ab0e --- /dev/null +++ b/documentation/docs/generated/styles/laravel.css @@ -0,0 +1,113 @@ +.nav-tabs > li > a { + text-decoration: none; +} + +.navbar-default .navbar-brand { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: #525252; + border-bottom: 1px dashed rgba(0, 0, 0, 0.1); +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #f4645f; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a { + color: #f4645f; + text-decoration: none; +} +.menu ul.list li a.active { + color: #f4645f; + font-weight: bold; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #f0f2f1; + border-radius: 3px; + color: #b93d6a; + font-size: 13px; + line-height: 20px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238, 238, 238, 0.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li a[data-type='chapter-link'], +.dark .menu ul.list li.chapter .simple { + color: #fafafa; +} + +.dark .menu ul.list li.title a { + color: #fafafa; +} + +.dark .menu ul.list li a { + color: #fafafa; +} +.dark .menu ul.list li a.active { + color: #7fc9ff; +} diff --git a/documentation/docs/generated/styles/material.css b/documentation/docs/generated/styles/material.css new file mode 100644 index 0000000000..84d6c0ea70 --- /dev/null +++ b/documentation/docs/generated/styles/material.css @@ -0,0 +1,131 @@ +.menu { + background: none; +} + +a:hover { + text-decoration: none; +} + +/** LINK **/ + +.menu ul.list li a { + text-decoration: none; +} + +.menu ul.list li a:hover, +.menu ul.list li.chapter .simple:hover { + background-color: #f8f9fa; + text-decoration: none; +} + +#book-search-input { + margin-bottom: 0; +} + +.menu ul.list li.divider { + margin-top: 0; + background: #e9ecef; +} + +.menu .title:hover { + background-color: #f8f9fa; +} + +/** CARD **/ + +.card { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), + 0 1px 5px 0 rgba(0, 0, 0, 0.12); + border-radius: 0.125rem; + border: 0; + margin-top: 1px; +} + +.card-header { + background: none; +} + +/** BUTTON **/ + +.btn { + border-radius: 0.125rem; +} + +/** NAV BAR **/ + +.nav { + border: 0; +} +.nav-tabs > li > a { + border: 0; + border-bottom: 0.214rem solid transparent; + color: rgba(0, 0, 0, 0.54); + margin-right: 0; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:focus, +.nav-tabs > li.active > a:hover { + color: rgba(0, 0, 0, 0.87); + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 0.214rem solid transparent; + border-color: #008cff; + font-weight: bold; +} +.nav > li > a:focus, +.nav > li > a:hover { + background: none; +} + +/** LIST **/ + +.list-group-item:first-child { + border-top-left-radius: 0.125rem; + border-top-right-radius: 0.125rem; +} +.list-group-item:last-child { + border-bottom-left-radius: 0.125rem; + border-bottom-right-radius: 0.125rem; +} + +/** MISC **/ + +.modifier { + border-radius: 0.125rem; +} + +pre[class*='language-'] { + border-radius: 0.125rem; +} + +/** TABLE **/ + +.table-hover > tbody > tr:hover { + background: rgba(0, 0, 0, 0.075); +} + +table.params thead { + background: none; +} +table.params thead td { + color: rgba(0, 0, 0, 0.54); + font-weight: bold; +} + +.dark .menu .title:hover { + background-color: #2d2d2d; +} +.dark .menu ul.list li a:hover, +.dark .menu ul.list li.chapter .simple:hover { + background-color: #2d2d2d; +} +.dark .nav-tabs > li:not(.active) > a { + color: #fafafa; +} +.dark table.params thead { + background: #484848; +} +.dark table.params thead td { + color: #fafafa; +} diff --git a/documentation/docs/generated/styles/original.css b/documentation/docs/generated/styles/original.css new file mode 100644 index 0000000000..8e01814995 --- /dev/null +++ b/documentation/docs/generated/styles/original.css @@ -0,0 +1,51 @@ +.navbar-default .navbar-brand, +.menu ul.list li.title { + font-weight: bold; + color: #3c3c3c; + padding-bottom: 5px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + font-weight: bold; + font-size: 14px; +} + +.menu ul.list li a[href='./routes.html'] { + border-bottom: none; +} + +.menu ul.list > li:nth-child(2) { + display: none; +} + +.menu ul.list li.chapter ul.links { + background: #fff; + padding-left: 0; +} + +.menu ul.list li.chapter ul.links li { + border-bottom: 1px solid #ddd; + padding-left: 20px; +} + +.menu ul.list li.chapter ul.links li:last-child { + border-bottom: none; +} + +.menu ul.list li a.active { + color: #337ab7; + font-weight: bold; +} + +#book-search-input { + margin-bottom: 0; + border-bottom: none; +} +.menu ul.list li.divider { + margin: 0; +} + +.dark .menu ul.list li.chapter ul.links { + background: none; +} diff --git a/documentation/docs/generated/styles/postmark.css b/documentation/docs/generated/styles/postmark.css new file mode 100644 index 0000000000..ae8be3e960 --- /dev/null +++ b/documentation/docs/generated/styles/postmark.css @@ -0,0 +1,238 @@ +.navbar-default { + background: #ffde00; + border: none; +} + +.navbar-default .navbar-brand { + color: #333; + font-weight: bold; +} + +.menu { + background: #333; + color: #fcfcfc; +} + +.menu ul.list li a { + color: #333; +} + +.menu ul.list li.title { + background: #ffde00; + color: #333; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, +.menu ul.list li.chapter .simple { + color: white; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #949494; + text-transform: none; + padding-left: 35px; +} + +.menu ul.list li.chapter ul.links a:hover, +.menu ul.list li.chapter ul.links a.active { + color: #ffde00; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; + background: #272525; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #007dcc; +} + +.content a:visited { + color: #0165a5; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +.list-group-item:first-child, +.list-group-item:last-child { + border-radius: 0; +} + +.menu ul.list li.title a { + text-decoration: none; + font-weight: bold; +} + +.menu ul.list li.title a:hover { + background: rgba(255, 255, 255, 0.1); +} + +.breadcrumb > li + li:before { + content: '»\00a0'; +} + +.breadcrumb { + padding-bottom: 15px; + border-bottom: 1px solid #e1e4e5; +} + +code { + white-space: nowrap; + max-width: 100%; + background: #f5f5f5; + padding: 2px 5px; + color: #666666; + overflow-x: auto; + border-radius: 0; +} + +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: #f3f3f3; +} + +pre code.hljs { + border: none; + background: inherit; +} + +/* +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} + +.dark .content { + background: none; +} +.dark code { + background: none; + color: #e09393; +} +.dark .menu ul.list li.chapter a.active { + color: #ffde00; +} +.dark .menu { + background: #272525; +} diff --git a/documentation/docs/generated/styles/prism.css b/documentation/docs/generated/styles/prism.css new file mode 100644 index 0000000000..46a643b9bf --- /dev/null +++ b/documentation/docs/generated/styles/prism.css @@ -0,0 +1,301 @@ +/* PrismJS 1.24.0 +https://prismjs.com/download.html?#themes=prism-okaidia&languages=markup+css+clike+javascript+apacheconf+aspnet+bash+c+csharp+cpp+coffeescript+dart+docker+elm+git+go+graphql+handlebars+haskell+http+ignore+java+json+kotlin+less+markdown+markup-templating+nginx+php+powershell+ruby+rust+sass+scss+sql+swift+typescript+wasm+yaml&plugins=line-highlight+line-numbers+toolbar+copy-to-clipboard */ +/** + * okaidia theme for JavaScript, CSS and HTML + * Loosely based on Monokai textmate theme by http://www.monokai.nl/ + * @author ocodia + */ + +code[class*='language-'], +pre[class*='language-'] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*='language-'] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: #272822; +} + +/* Inline code */ +:not(pre) > code[class*='language-'] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #8292a2; +} + +.token.punctuation { + color: #f8f8f2; +} + +.token.namespace { + opacity: 0.7; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #f92672; +} + +.token.boolean, +.token.number { + color: #ae81ff; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #a6e22e; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} + +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #e6db74; +} + +.token.keyword { + color: #66d9ef; +} + +.token.regex, +.token.important { + color: #fd971f; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%, 0.08); + background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + +@media print { + .line-highlight { + /* + * This will prevent browsers from replacing the background color with white. + * It's necessary because the element is layered on top of the displayed code. + */ + -webkit-print-color-adjust: exact; + color-adjust: exact; + } +} + +.line-highlight:before, +.line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: 0.4em; + left: 0.6em; + min-width: 1em; + padding: 0 0.5em; + background-color: hsla(24, 20%, 50%, 0.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: 0.3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; +} + +.line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: 0.4em; +} + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; +} + +pre[id].linkable-line-numbers span.line-numbers-rows { + pointer-events: all; +} +pre[id].linkable-line-numbers span.line-numbers-rows > span:before { + cursor: pointer; +} +pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before { + background-color: rgba(128, 128, 128, 0.2); +} + +pre[class*='language-'].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*='language-'].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.line-numbers-rows > span { + display: block; + counter-increment: linenumber; +} + +.line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; +} + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: 0.3em; + right: 0.2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +/* Separate line b/c rules are thrown out if selector is invalid. + IE11 and old Edge versions don't support :focus-within. */ +div.code-toolbar:focus-within > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: 0.8em; + padding: 0 0.5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2); + border-radius: 0.5em; +} + +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar span:hover, +div.code-toolbar > .toolbar span:focus { + color: inherit; + text-decoration: none; +} diff --git a/documentation/docs/generated/styles/readthedocs.css b/documentation/docs/generated/styles/readthedocs.css new file mode 100644 index 0000000000..c3e9452fac --- /dev/null +++ b/documentation/docs/generated/styles/readthedocs.css @@ -0,0 +1,117 @@ +.navbar-default { + background: #2980b9; + border: none; +} + +.navbar-default .navbar-brand { + color: #fcfcfc; +} + +.menu { + background: #343131; + color: #fcfcfc; +} + +.menu ul.list li a { + color: #fcfcfc; +} + +.menu ul.list li.title { + background: #2980b9; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, +.menu ul.list li.chapter .simple { + color: #555; + text-transform: uppercase; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #b3b3b3; + text-transform: none; + padding-left: 35px; +} + +.menu ul.list li.chapter ul.links a:hover { + background: #4e4a4a; +} + +.menu ul.list li.chapter a.active, +.menu ul.list li.chapter ul.links a.active { + color: #0099e5; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, +#book-search-input input:focus, +#book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; + background: #272525; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #2980b9; +} + +.content a:hover { + color: #3091d1; +} + +.content a:visited { + color: #9b59b6; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +code { + white-space: nowrap; + max-width: 100%; + background: #fff; + padding: 2px 5px; + color: #e74c3c; + overflow-x: auto; + border-radius: 0; +} + +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: rgba(238, 238, 238, 0.35); +} + +.dark .content { + background: none; +} +.dark code { + background: none; + color: #e09393; +} diff --git a/documentation/docs/generated/styles/reset.css b/documentation/docs/generated/styles/reset.css new file mode 100644 index 0000000000..9a153b5269 --- /dev/null +++ b/documentation/docs/generated/styles/reset.css @@ -0,0 +1,129 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/documentation/docs/generated/styles/stripe.css b/documentation/docs/generated/styles/stripe.css new file mode 100644 index 0000000000..8e41582a33 --- /dev/null +++ b/documentation/docs/generated/styles/stripe.css @@ -0,0 +1,106 @@ +.navbar-default .navbar-brand { + color: #0099e5; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: #939da3; + text-transform: uppercase; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +.menu ul.list li.title { + padding: 5px 0; +} + +a { + color: #0099e5; + text-decoration: none; +} +a:hover { + color: #292e31; + text-decoration: none; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a, +.navbar a { + color: #0099e5; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a.active { + color: #0099e5; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #fafcfc; + border-radius: 4px; + color: #b93d6a; + font-size: 13px; + line-height: 20px; +} + +pre { + margin: 0; + padding: 12px 12px; + background: #272b2d; + border-radius: 5px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li a[data-type='chapter-link'], +.dark .menu ul.list li.chapter .simple { + color: #fafafa; +} + +.dark .menu ul.list li.title a { + color: #fafafa; +} + +.dark .menu ul.list li a { + color: #fafafa; +} +.dark .menu ul.list li a.active { + color: #7fc9ff; +} diff --git a/documentation/docs/generated/styles/style.css b/documentation/docs/generated/styles/style.css new file mode 100644 index 0000000000..09e9f1eb14 --- /dev/null +++ b/documentation/docs/generated/styles/style.css @@ -0,0 +1,7 @@ +@import "./reset.css"; +@import "./bootstrap.min.css"; +@import "./bootstrap-card.css"; +@import "./prism.css"; +@import "./ionicons.min.css"; +@import "./compodoc.css"; +@import "./tablesort.css"; diff --git a/documentation/docs/generated/styles/tablesort.css b/documentation/docs/generated/styles/tablesort.css new file mode 100644 index 0000000000..f71548380e --- /dev/null +++ b/documentation/docs/generated/styles/tablesort.css @@ -0,0 +1,33 @@ +th[role=columnheader]:not(.no-sort) { + cursor: pointer; +} + +th[role=columnheader]:not(.no-sort):after { + content: ''; + float: right; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: #404040 transparent; + visibility: visible; + opacity: 1; + -ms-user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +th[aria-sort=ascending]:not(.no-sort):after { + border-bottom: none; + border-width: 4px 4px 0; +} + +th[aria-sort]:not(.no-sort):after { + visibility: visible; + opacity: 0.4; +} + +th[role=columnheader]:not(.no-sort):hover:after { + visibility: visible; + opacity: 1; +} diff --git a/documentation/docs/generated/styles/vagrant.css b/documentation/docs/generated/styles/vagrant.css new file mode 100644 index 0000000000..f72edb0169 --- /dev/null +++ b/documentation/docs/generated/styles/vagrant.css @@ -0,0 +1,130 @@ +.navbar-default .navbar-brand { + background: white; + color: #8d9ba8; +} + +.menu .list { + background: #0c5593; +} + +.menu .chapter { + padding: 0 20px; +} + +.menu ul.list li a[data-type='chapter-link'], +.menu ul.list li.chapter .simple { + color: white; + text-transform: uppercase; + border-bottom: 1px solid rgba(255, 255, 255, 0.4); +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #0094bf; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li.title { + background: white; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +.menu ul.list li.title a { + padding: 10px 15px; +} + +.menu ul.list li.title a, +.navbar a { + color: #8d9ba8; + text-decoration: none; + font-size: 16px; + font-weight: 300; +} + +.menu ul.list li a { + color: white; + padding: 10px; + font-weight: 300; + text-decoration: none; +} +.menu ul.list li a.active { + color: white; + font-weight: bold; +} + +.copyright { + color: white; + background: #000; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: rgba(0, 148, 191, 0.1); + border-radius: 3px; + color: #0094bf; + font-size: 13px; + line-height: 20px; +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238, 238, 238, 0.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; +} + +.dark body { + color: #fafafa; +} +.dark .content h1, +.dark .content h2, +.dark .content h3, +.dark .content h4, +.dark .content h5 { + color: #fafafa; +} + +.dark code { + background: none; +} + +.dark .content { + color: #fafafa; +} + +.dark .menu ul.list li.title a, +.dark .navbar a { + color: #8d9ba8; +} + +.dark .menu ul.list li a { + color: #fafafa; +} diff --git a/documentation/docs/index.md b/documentation/docs/index.md index f9c677beb1..cb07363651 100644 --- a/documentation/docs/index.md +++ b/documentation/docs/index.md @@ -1,6 +1,6 @@ # Getting Setup -## Prequisites +## Prerequisites 1. Download and install [Git](https://git-scm.com/downloads) This will be used to download the repository @@ -9,7 +9,7 @@ This will be used to download any required binary assets, such as images or pdfs 3. Download and install [Node](https://nodejs.org/en/download/) - This is the programming lanugage required to run the project + This is the programming language required to run the project 4. Download and Install [Yarn](https://classic.yarnpkg.com/en/docs/install) This manages all 3rd-party code dependencies @@ -31,14 +31,15 @@ Note - you may have to do this from time to time when content is updated) ## Configuration ### Set Deployment -The app supports using different workspace or deployment configurations. These are stored in [.idems_app/deployments](../../.idems_app/deployments) +Deployments are used to configure data sources (such as google drive) and store generated content. -An initial deployment should be specified via the command +An initial deployment can be created via the command ``` -yarn scripts deployment set +yarn workflow deployment create ``` +You will be prompted to specify the deployment type, this should be a `New Local Deployment`. You will also be prompted to provide a name. -Deployments are used to configure data sources (such as google drive) and various processing steps. See [Deployment Documentation](./developers/deployments.md) for more information +See [Deployment Documentation](./developers/deployments.md) for more information about configuring deployments ### Firebase To be able to run the full project a specific configuration file needs to be included to access @@ -46,7 +47,7 @@ the online database and authentication methods. ``` $ cp src/environments/firebaseConfig.sample.ts src/environments/firebaseConfig.ts ``` -The default file is blank and so some features may not be availabe (e.g. testing google sign-in) +The default file is blank and so some features may not be available (e.g. testing google sign-in) It can be replaced with a version requested from the dev team. (Note - this process will likely be simplified in the future) diff --git a/documentation/docs/questions/dynamic_content.md b/documentation/docs/questions/dynamic_content.md new file mode 100644 index 0000000000..5547e6e752 --- /dev/null +++ b/documentation/docs/questions/dynamic_content.md @@ -0,0 +1,9 @@ +# Dynamic content + +**When does dynamic content get updated?** + +_Asked on 25 May 2022_ + +Typically content that depends on dynamic variables should update automatically if it is in the same sheet (and I think also any nested child templates of the template that triggered the action), however if a child template makes changes that affect the parent content (e.g. setting a field) then an additional emit: force_reprocess or emit: force_reload action may be required. For the case of app-wide changes (e.g. language change, enabling developer mode etc.) a full emit: force_restart action is required that will restart the app. + +_Answered on 25 May 2022 by CC_ diff --git a/documentation/docs/questions/hidden_condition.md b/documentation/docs/questions/hidden_condition.md new file mode 100644 index 0000000000..ec6153700d --- /dev/null +++ b/documentation/docs/questions/hidden_condition.md @@ -0,0 +1,9 @@ +# Hidden vs condition + +**What is the difference between the `hidden` and `condition` columns?** + +_Asked on 25 May 2022_ + +Right now the distinction I have is to always use a condition as this does not populate any content to the page. There may be some occasions where dynamic content is not updated correctly when updating condition that do display correctly with hidden (I can't remember the exact case any more), however these should be identified as bugs and fixed in the future. + +_Answered on 25 May 2022 by CC_ \ No newline at end of file diff --git a/documentation/docs/questions/images/display_group.png b/documentation/docs/questions/images/display_group.png new file mode 100644 index 0000000000..2bef052e67 --- /dev/null +++ b/documentation/docs/questions/images/display_group.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ddd3a1d58608377d5936d7a4a619d622dfc331ce3ac4b96cc044c763707ad21 +size 90507 diff --git a/documentation/docs/questions/parameters_styles.md b/documentation/docs/questions/parameters_styles.md new file mode 100644 index 0000000000..14ef7143b4 --- /dev/null +++ b/documentation/docs/questions/parameters_styles.md @@ -0,0 +1,11 @@ +# Parameters vs styles + +**I’m guessing the style_list stuff are specifications that are based on CSS. Although I know of its existence, I’ve never worked my way through CSS stuff. I guess that’s another thing to learn something about. I put `text-align: right` in the `parameter_list` column and it did nothing, but it did what I would have expected in the `style_list` column. Similarly, `style: large center` has an effect in the `parameter_list` column but not the `style_list` column.** + +_Asked on 10 February 2022_ + +The `parameter_list` takes only parameters that are specifically defined by us for every specific component. As such, these are going to be pretty impossible for you to guess without documentation. For what it's worth, [this file](https://github.com/IDEMSInternational/parenting-app-ui/blob/master/documentation/docs/authors/template-component-parameter-list.md) is the closest thing to documentation of those parameters that we have at the moment. + +Instead, the `style_list` does indeed interpret CSS directly. My knowledge of CSS is limited as well so I can't be of much help here, but [this documentation website](https://www.w3schools.com/cssref/default.asp) has proven handy to me in the past. + +_Answered on 14 February 2022 by ETW_ \ No newline at end of file diff --git a/documentation/docs/questions/positioning_components.md b/documentation/docs/questions/positioning_components.md new file mode 100644 index 0000000000..378c64f517 --- /dev/null +++ b/documentation/docs/questions/positioning_components.md @@ -0,0 +1,11 @@ +# Positioning components + +**Is it possible to do word wrapping around images, or must images be all by themselves on a row?** + +_Asked on 14 February 2022_ + +We don't exactly have a syntax to get text to wrap around an image. The system we use to get something similar (at least to get components to display side-by-side) is based on "display groups". To show you how these work I authored the template `example_dg`([sheet](https://docs.google.com/spreadsheets/d/1i6Th92RAkGfardxSJdJYWVoMtTkaNr-Xn2kIHDvtQoQ/edit#gid=1595229908) / [web preview](https://idems-debug.web.app/template/example_dg)), which corresponds to the screenshot below. + +![](images/display_group.png) + +_Answered on 14 February 2022 by ETW_ \ No newline at end of file diff --git a/documentation/mkdocs.yml b/documentation/mkdocs.yml index fb5de86a12..0096e01d0d 100644 --- a/documentation/mkdocs.yml +++ b/documentation/mkdocs.yml @@ -18,6 +18,7 @@ nav: - Advanced: - authors/advanced/looping-data.md - authors/advanced/overrides.md + - authors/local-sheets.md - Contributors: - contributors/documentation/running-server.md - contributors/documentation/authoring.md @@ -25,14 +26,34 @@ nav: - developers/quickstart.md - developers/adding-components.md - developers/deployments.md + - developers/server-development.md - developers/device-testing.md + - developers/android-assets.md + - developers/in-app-updates.md + - developers/error-logs.md + - developers/web-previews.md - Display Components: - components/audio.md - - components/html.md - components/button.md - - components/square_button.md + - components/simple_checkbox.md + - components/combo_box.md + - components/html.md + - components/latex.md + - components/pdf.md + - components/radio_group.md - components/round_button.md + - components/slider.md + - components/square_button.md - components/text.md + - components/timer.md + - components/video.md + - Q & A: + - questions/parameters_styles.md + - questions/positioning_components.md + - questions/hidden_condition.md + - questions/dynamic_content.md + - External: + - 'Compodoc Generated': ./generated/components/TmplButtonComponent.html" target="_blank # Enable all extension for authoring as per https://squidfunk.github.io/mkdocs-material/setup/extensions/ markdown_extensions: diff --git a/documentation/requirements.txt b/documentation/requirements.txt index 12670d597a..d4fb5e9f13 100644 Binary files a/documentation/requirements.txt and b/documentation/requirements.txt differ diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js deleted file mode 100644 index b95b8f5e8f..0000000000 --- a/e2e/protractor.conf.js +++ /dev/null @@ -1,28 +0,0 @@ -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter } = require('jasmine-spec-reporter'); - -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './src/**/*.e2e-spec.ts' - ], - capabilities: { - 'browserName': 'chrome' - }, - directConnect: true, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - onPrepare() { - require('ts-node').register({ - project: require('path').join(__dirname, './tsconfig.json') - }); - jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); - } -}; diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts deleted file mode 100644 index 33efa08de0..0000000000 --- a/e2e/src/app.e2e-spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { AppPage } from './app.po'; - -describe('new App', () => { - let page: AppPage; - - beforeEach(() => { - page = new AppPage(); - }); - - it('should be blank', () => { - page.navigateTo(); - expect(page.getParagraphText()).toContain('Start with Ionic UI Components'); - }); -}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts deleted file mode 100644 index c121fd9b86..0000000000 --- a/e2e/src/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class AppPage { - navigateTo() { - return browser.get('/'); - } - - getParagraphText() { - return element(by.deepCss('app-root ion-content')).getText(); - } -} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json deleted file mode 100644 index d696d43d8a..0000000000 --- a/e2e/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/app", - "module": "commonjs", - "target": "es2018", - "types": [ - "jasmine", - "jasminewd2", - "node" - ] - } -} diff --git a/firebase.json b/firebase.json index 406a793299..a41271f6db 100644 --- a/firebase.json +++ b/firebase.json @@ -43,6 +43,83 @@ "destination": "/index.html" } ] + }, + { + "target": "early_family_math", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "wash", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "perinatal", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "pfr", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "debug", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "plh_facilitator", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] + }, + { + "target": "plh_kids", + "public": "www", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "rewrites": [ + { + "source": "**", + "destination": "/index.html" + } + ] } ] } diff --git a/karma.conf.js b/karma.conf.js index ffd7c16c8d..729bbe1847 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,31 +1,38 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - module.exports = function (config) { config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], + basePath: "", + frameworks: ["jasmine", "@angular-devkit/build-angular"], plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') + require("karma-jasmine"), + require("karma-chrome-launcher"), + require("karma-jasmine-html-reporter"), + require("karma-coverage"), + require("@angular-devkit/build-angular/plugins/karma"), ], client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false, // leave Jasmine Spec Runner output visible in browser }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../coverage'), - reports: ['html', 'lcovonly', 'text-summary'], - fixWebpackSourcePaths: true + jasmineHtmlReporter: { + suppressAll: true, // removes the duplicated traces }, - reporters: ['progress', 'kjhtml'], + coverageReporter: { + dir: require("path").join(__dirname, "./coverage/"), + subdir: ".", + reporters: [{ type: "html" }, { type: "text-summary" }], + }, + reporters: ["progress", "kjhtml"], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, - browsers: ['Chrome'], - singleRun: false + browsers: ["Chrome"], + singleRun: false, + restartOnFileChange: true, }); }; diff --git a/package.json b/package.json index 2328b1dddd..b6d20e33aa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { "name": "frontend", - "version": "0.16.0", + "version": "0.16.18", "author": "IDEMS International", + "license": "See LICENSE", "homepage": "https://idems.international/", "description": "", "workspaces": [ @@ -10,133 +11,167 @@ ], "scripts": { "ng": "ng", - "start": "concurrently --kill-others --raw \"yarn data-models:serve\" \"yarn data:serve\" \"ng serve --open\"", - "precompile": "yarn scripts compile types", - "build": "yarn precompile && ng build --prod", - "build:dev": "yarn precompile && ng build --configuration=development", - "data:serve": "yarn workspace app-data serve", + "start": "yarn prepare && concurrently --kill-others --raw \"yarn data-models:serve\" \"ng serve --open\"", + "start:local": "yarn prepare && concurrently --kill-others --raw \"ng serve --open\" \"yarn workflow sync_local\"", + "prepare": "node .husky/prepare.js && yarn scripts compile types && yarn workflow populate_src_assets", + "build": "yarn prepare && ng build --configuration=production", "data-models:serve": "yarn workspace data-models serve", + "compodoc:generate": "compodoc --tsconfig tsconfig.docs.json --theme material --assetsFolder 'documentation/docs/assets' --output documentation/docs/generated --disablePrivate --disableLifeCycleHooks", + "compodoc:serve": "yarn compodoc:generate --serve --watch --open", "scripts": "yarn workspace scripts start", "workflow": "yarn scripts workflow run", "server": "yarn workspace server", "translations": "yarn workspace translations start", - "test": "ng test", + "test:workspaces": "yarn workspace shared test && yarn workspace scripts test", + "test:unit": "ng test", + "test:unit:ci": "ng test --no-watch --no-progress", "test:e2e": "yarn workspace test-e2e start", "lint": "ng lint", - "e2e": "ng e2e", - "analyse": "yarn build -- --stats-json && npx webpack-bundle-analyzer www/stats.json" + "lint:docs": "cspell \"documentation/docs/**/*.md\" --config \"cspell.config.yml\"", + "analyse": "ng build --configuration=production --stats-json && npx webpack-bundle-analyzer www/stats.json" }, "private": true, "dependencies": { - "@angular/animations": "^13.0.0", - "@angular/common": "~13.0.0", - "@angular/core": "~13.0.0", - "@angular/elements": "^13.0.0", - "@angular/fire": "^6.1.5", - "@angular/forms": "~13.0.0", - "@angular/platform-browser": "~13.0.0", - "@angular/platform-browser-dynamic": "~13.0.0", - "@angular/router": "~13.0.0", + "@angular/animations": "^15.0.4", + "@angular/common": "~15.0.4", + "@angular/core": "~15.0.4", + "@angular/elements": "^15.0.4", + "@angular/fire": "^7.3.0", + "@angular/forms": "~15.0.4", + "@angular/platform-browser": "~15.0.4", + "@angular/platform-browser-dynamic": "~15.0.4", + "@angular/router": "~15.0.4", "@capacitor-community/firebase-crashlytics": "^1.3.0", - "@capacitor-firebase/performance": "^0.2.0", - "@capacitor/android": "^3.4.0", - "@capacitor/app": "^1.1.0", - "@capacitor/cli": "^3.4.0", - "@capacitor/clipboard": "^1.0.7", - "@capacitor/core": "^3.4.0", - "@capacitor/device": "^1.1.2", - "@capacitor/local-notifications": "^1.1.0", - "@capacitor/push-notifications": "^1.0.9", - "@capacitor/splash-screen": "^1.2.1", + "@capacitor-firebase/authentication": "^1.2.0", + "@capacitor-firebase/performance": "^1.2.0", + "@capacitor/android": "^4.6.0", + "@capacitor/app": "^4.1.1", + "@capacitor/cli": "^4.6.0", + "@capacitor/clipboard": "^4.1.0", + "@capacitor/core": "^4.6.0", + "@capacitor/device": "^4.1.0", + "@capacitor/filesystem": "^4.1.4", + "@capacitor/local-notifications": "^4.1.4", + "@capacitor/push-notifications": "^4.1.2", + "@capacitor/share": "^4.1.1", + "@capacitor/splash-screen": "^4.1.2", + "@capawesome/capacitor-app-update": "^2.0.1", "@ionic-native/core": "^5.36.0", "@ionic-native/device": "^5.36.0", "@ionic-native/http": "^5.36.0", "@ionic-native/media": "^5.36.0", "@ionic-native/status-bar": "^5.36.0", - "@ionic/angular": "^6.0.3", + "@ionic/angular": "^6.4.1", "@ionic/pwa-elements": "^3.1.1", "@ngx-matomo/router": "^1.3.3", "@ngx-matomo/tracker": "^1.3.3", + "@sentry/angular": "^7.21.1", + "@supabase/supabase-js": "^2.13.1", "app-data": "workspace:*", + "bootstrap-datepicker": "^1.10.0", + "capacitor-blob-writer": "^1.1.9", "capacitor-firebase-auth": "^3.0.0", + "clone": "^2.1.2", + "cordova-res": "^0.15.4", + "core-js": "^3.27.1", "data-models": "workspace:*", "date-fns": "^2.22.1", + "deep-object-diff": "^1.1.9", "dexie": "^3.0.3", "dexie-observable": "3.0.0-beta.11", "dexie-syncable": "^3.0.0-beta.10", "document-register-element": "^1.14.10", - "firebase": "^8.6.8", + "dompurify": "^2.3.6", + "extract-math": "^1.2.3", + "firebase": "^9.8.1", "globalthis": "^1.0.2", "howler": "^2.2.1", + "html5sortable": "^0.13.3", "intro.js": "^3.2.1", - "jasmine-ts": "^0.4.0", - "karma-typescript": "^5.5.1", + "jquery": "^3.7.0", + "jquery-touchswipe": "^1.6.19", + "katex": "^0.15.3", "lottie-web": "^5.7.14", "marked": "^2.0.1", + "mergexml": "^1.2.3", "ng2-nouislider": "^1.8.3", "ngx-color": "^6.1.0", + "ngx-extended-pdf-viewer": "16.2.16", "ngx-lottie": "^7.0.4", "nouislider": "^14.6.3", - "rxjs": "^6.6.7", + "qrcode": "^1.5.1", + "rxdb": "^13.15.3", + "rxjs": "^7.8.0", + "scripts": "workspace:*", + "shared": "workspace:*", + "signature_pad": "^4.1.5", "stacktrace-js": "^2.0.2", + "swiper": "^8.4.4", + "trusted-types": "^2.0.0", "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/architect": "0.1300.1", - "@angular-devkit/build-angular": "~13.0.1", - "@angular-eslint/builder": "12.6.1", - "@angular-eslint/eslint-plugin": "12.6.1", - "@angular-eslint/eslint-plugin-template": "12.6.1", - "@angular-eslint/schematics": "12.6.1", - "@angular-eslint/template-parser": "12.6.1", - "@angular/cli": "~13.0.1", - "@angular/compiler": "~13.0.0", - "@angular/compiler-cli": "~13.0.0", - "@angular/language-service": "~13.0.0", - "@ionic/angular-toolkit": "^5.0.3", + "@angular-devkit/architect": "0.1500.4", + "@angular-devkit/build-angular": "~15.0.4", + "@angular-eslint/builder": "15.2.1", + "@angular-eslint/eslint-plugin": "15.2.1", + "@angular-eslint/eslint-plugin-template": "15.2.1", + "@angular-eslint/schematics": "15.2.1", + "@angular-eslint/template-parser": "15.2.1", + "@angular/cli": "~15.0.4", + "@angular/compiler": "~15.0.4", + "@angular/compiler-cli": "~15.0.4", + "@angular/language-service": "~15.0.4", + "@compodoc/compodoc": "^1.1.19", + "@ionic/angular-toolkit": "^7.0.0", "@ionic/cli": "^6.18.0", + "@types/clone": "^2.1.1", "@types/howler": "^2.2.2", "@types/intro.js": "^3.0.1", - "@types/jasmine": "~3.7.7", - "@types/jasminewd2": "~2.0.9", + "@types/jasmine": "~4.3.0", + "@types/lokijs": "^1.5.7", "@types/marked": "^2.0.3", - "@types/node": "^15.12.4", + "@types/node": "^16.18.9", "@types/nouislider": "^15.0.0", "@types/swiper": "~4.2.0", - "@typescript-eslint/eslint-plugin": "4.28.0", - "@typescript-eslint/eslint-plugin-tslint": "^4.28.0", - "@typescript-eslint/parser": "4.28.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "5.57.1", "codelyzer": "^6.0.2", "concurrently": "^6.2.0", - "eslint": "^7.29.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-import": "2.23.4", - "eslint-plugin-jsdoc": "35.4.0", + "cspell": "^6.20.1", + "eslint": "8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-config-standard-with-typescript": "latest", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jasmine": "^4.1.3", + "eslint-plugin-jsdoc": "40.1.1", + "eslint-plugin-n": "^15.7.0", "eslint-plugin-prefer-arrow": "1.2.3", + "eslint-plugin-promise": "^6.1.1", "firebase-tools": "^9.14.0", - "jasmine-core": "~3.7.1", + "husky": "^8.0.3", + "jasmine-core": "~4.5.0", "jasmine-spec-reporter": "~7.0.0", - "karma": "~6.3.4", + "karma": "~6.4.0", "karma-chrome-launcher": "~3.1.0", - "karma-coverage-istanbul-reporter": "~3.0.3", - "karma-jasmine": "~4.0.1", - "karma-jasmine-html-reporter": "^1.6.0", - "lint-staged": "^11.0.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "lint-staged": "^13.0.3", "prettier": "2.4.1", - "protractor": "~7.0.0", - "simple-git-hooks": "^2.4.1", - "typescript": "4.4.2" - }, - "simple-git-hooks": { - "pre-commit": "npx lint-staged" + "typescript": "4.8.4" }, "lint-staged": { "*.{ts,scss,html}": [ "prettier --write" ] }, + "browser": { + "__hack__": "add support for lokijs in browser by ignoring fs", + "fs": false + }, "engines": { - "node": ">=12.0.0" + "node": ">=14.20.0" }, - "packageManager": "yarn@3.1.0" + "packageManager": "yarn@3.3.1" } diff --git a/packages/@idemsInternational/gdrive-tools/credentials.dev.json b/packages/@idemsInternational/gdrive-tools/credentials.dev.json index 95040690b2..5109bac43c 100644 --- a/packages/@idemsInternational/gdrive-tools/credentials.dev.json +++ b/packages/@idemsInternational/gdrive-tools/credentials.dev.json @@ -6,6 +6,6 @@ "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_secret": "QJFmsL8w7Y0R3TFRlRVddHVf", - "redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"] + "redirect_uris": ["http://localhost:3003/oauth2callback"] } } diff --git a/packages/@idemsInternational/gdrive-tools/package.json b/packages/@idemsInternational/gdrive-tools/package.json index 95429f0406..33decaf96b 100644 --- a/packages/@idemsInternational/gdrive-tools/package.json +++ b/packages/@idemsInternational/gdrive-tools/package.json @@ -15,14 +15,14 @@ "chalk": "^4.1.0", "commander": "^8.3.0", "fs-extra": "^10.0.0", - "googleapis": "88.2.0", + "googleapis": "^108.0.0", "log-update": "^4.0.0", "p-queue": "^6.6.2" }, "devDependencies": { "@types/fs-extra": "^9.0.13", "@types/node": "^16.11.10", - "ts-node": "~7.0.0", + "ts-node": "^10.8.0", "ts-node-dev": "^1.0.0", "typescript": "^4.1.2" } diff --git a/packages/@idemsInternational/gdrive-tools/src/commands/authorize.ts b/packages/@idemsInternational/gdrive-tools/src/commands/authorize.ts index 446828fe6e..3a737d61b1 100644 --- a/packages/@idemsInternational/gdrive-tools/src/commands/authorize.ts +++ b/packages/@idemsInternational/gdrive-tools/src/commands/authorize.ts @@ -1,7 +1,9 @@ import fs from "fs"; -import readline from "readline"; -import { drive_v3, google } from "googleapis"; import chalk from "chalk"; +import { driveactivity_v2, drive_v3, google } from "googleapis"; +import http from "http"; +import opn from "open"; +import url from "url"; require("dotenv").config(); /*************************************************************************************** @@ -27,7 +29,6 @@ export default program ) .requiredOption("-a --auth-token-path ", "Path to token JSON", PATHS.DEFAULT_TOKEN) .action(async (opts: IProgramOptions) => { - console.log("authorize", opts); authorizeGDrive(opts); }); @@ -43,36 +44,22 @@ if (require.main === module) { * Main Methods *************************************************************************************/ -// If modifying these scopes, delete token.json. -const SCOPES = [ - "https://www.googleapis.com/auth/drive.readonly", - "https://www.googleapis.com/auth/drive.metadata.readonly", -]; - +/** Authorize access to the Gdrive api and return client */ export function authorizeGDrive( options: IProgramOptions, driveOptions?: drive_v3.Options -): Promise { +): Promise<{ drive: drive_v3.Drive }> { const { authTokenPath, credentialsPath } = options; + const authScopes = [ + "https://www.googleapis.com/auth/drive.readonly", + "https://www.googleapis.com/auth/drive.metadata.readonly", + ]; return new Promise((resolve, reject) => { try { - // The file token.json stores the user's access and refresh tokens, and is - // created automatically when the authorization flow completes for the first - // time. - - // Load client secrets from a local file or env variable - if (!fs.existsSync(credentialsPath)) { - logError({ - msg1: `No application credentials found in : ${credentialsPath}`, - msg2: "Application must be registered as per https://developers.google.com/identity/protocols/oauth2", - }); - } - const creds = getJSONFromEnvOrFile("GDRIVE_CREDENTIALS", credentialsPath); - - // Authorize a client with credentials, then call the Google Drive API. - authorize(creds, authTokenPath, SCOPES, (auth) => { + const credentials = getAuthCredentials(credentialsPath); + authorize(credentials, authTokenPath, authScopes, (auth) => { const drive = google.drive({ version: "v3", auth, ...driveOptions }); - resolve(drive); + resolve({ drive }); }); } catch (ex) { console.warn("Error authorizing google drive access", ex); @@ -81,6 +68,39 @@ export function authorizeGDrive( }); } +/** Authorize access to the GdriveActivity api and return client */ +export function authorizeGDriveActivity( + options: IProgramOptions, + activityOptions?: driveactivity_v2.Options +): Promise<{ driveactivity: driveactivity_v2.Driveactivity }> { + const { authTokenPath, credentialsPath } = options; + const authScopes = ["https://www.googleapis.com/auth/drive.activity.readonly"]; + return new Promise((resolve, reject) => { + try { + const credentials = getAuthCredentials(credentialsPath); + authorize(credentials, authTokenPath, authScopes, (auth) => { + const driveactivity = google.driveactivity({ version: "v2", auth, ...activityOptions }); + resolve({ driveactivity }); + }); + } catch (ex) { + console.warn("Error authorizing google drive access", ex); + reject(ex); + } + }); +} + +/** Verify application auth credentials exist and return */ +function getAuthCredentials(credentialsPath: string) { + if (!fs.existsSync(credentialsPath)) { + logError({ + msg1: `No application credentials found in : ${credentialsPath}`, + msg2: "Application must be registered as per https://developers.google.com/identity/protocols/oauth2", + }); + } + const credentials = getJSONFromEnvOrFile("GDRIVE_CREDENTIALS", credentialsPath); + return credentials; +} + function getJSONFromEnvOrFile(envVar: string, filepath: string) { if (process.env[envVar]) { try { @@ -106,40 +126,83 @@ function authorize( scopes: string[], callback: (authClient: OAuth2Client) => void ) { - const { client_secret, client_id, redirect_uris } = credentials.installed; + const { client_secret, client_id, redirect_uris } = credentials.web || credentials.installed; const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uris[0]); - // Check if we have previously stored a token. const token = getJSONFromEnvOrFile("GDRIVE_OAUTH_TOKEN", tokenPath); if (!token) { return getAccessToken(oAuth2Client, scopes, tokenPath, callback); } + if (doesTokenHaveRequiredScopes(token.scope, scopes) === false) { + return getAccessToken(oAuth2Client, scopes, tokenPath, callback); + } oAuth2Client.setCredentials(token); callback(oAuth2Client); } -/** */ -function getAccessToken(oAuth2Client, scopes, tokenPath, callback) { +/** + * Retrieve an access token from the google drive api + * The file token.json stores the user's access and refresh tokens, and is + * created automatically when the authorization flow completes for the first time. + * */ +function getAccessToken( + oAuth2Client: OAuth2Client, + scopes: string[], + tokenPath: string, + callback: (client: OAuth2Client) => void +) { + // Generate the url that will be used for the consent dialog. const authUrl = oAuth2Client.generateAuthUrl({ access_type: "offline", + prompt: "consent", scope: scopes, }); - console.log("Authorize this app by visiting this url:", authUrl); - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - rl.question("Enter the code from that page here: ", (code) => { - rl.close(); - oAuth2Client.getToken(code, (err, token) => { - if (err) return console.error("Error retrieving access token", err); - oAuth2Client.setCredentials(token); - // Store the token to disk for later program executions - fs.writeFile(tokenPath, JSON.stringify(token), (err) => { - if (err) return console.error(err); - console.log("Token stored to", tokenPath); - }); - callback(oAuth2Client); + console.log( + chalk.yellow( + "Authorize this app in your browser. If not automatically redirected, please manually visit:\n" + ) + ); + console.log(chalk.blue(authUrl + "\n")); + + // Open an http server to accept the oauth callback. + const server = http + .createServer(async (req, res) => { + try { + // The request endpoint of "/oauth2callback" is configured + // within Google Cloud's API Console Credentials page + if (req.url.indexOf("/oauth2callback") > -1) { + const qs = new url.URL(req.url, "http://localhost:3003").searchParams; + res.end( + "Authentication successful! Please close this browser window and return to the console." + ); + server.close(); + const { tokens } = await oAuth2Client.getToken(qs.get("code")); + oAuth2Client.setCredentials(tokens); + console.log(chalk.yellow("Authentication successful, saving token in local storage.")); + // Store the token to disk for later program executions + fs.writeFileSync(tokenPath, JSON.stringify(tokens)); + console.log(chalk.yellow("Token stored to", tokenPath)); + console.log(chalk.green("Authentication Complete.")); + callback(oAuth2Client); + process.exit(); + } + } catch (e) { + server.close(); + logError({ + msg1: "Error authenticating with Google", + msg2: e, + }); + return res.end(e); + } + }) + .listen(3003, () => { + // open the browser to the authorize url to start the workflow + opn(authUrl, { wait: false }).then((cp) => cp.unref()); }); - }); +} + +/** Check if generated token scope has access to all required scopes */ +function doesTokenHaveRequiredScopes(tokenScope: string, requiredScopes: string[]): boolean { + const tokenScopeArray = tokenScope.split(" "); + return requiredScopes.every((scope) => tokenScopeArray.includes(scope)); } diff --git a/packages/@idemsInternational/gdrive-tools/src/commands/download.ts b/packages/@idemsInternational/gdrive-tools/src/commands/download.ts index be5c466e31..5ff97c36cc 100644 --- a/packages/@idemsInternational/gdrive-tools/src/commands/download.ts +++ b/packages/@idemsInternational/gdrive-tools/src/commands/download.ts @@ -15,8 +15,8 @@ import { listGdriveFolder, generateFolderFlatMapStats, ILocalFileWithStats, - getGDriveFileById, logProgramHelp, + cleanupEmptyFolders, } from "../utils"; import { authorizeGDrive } from "./authorize"; @@ -28,12 +28,10 @@ const GOOGLE_FOLDER_MIMETYPE = "application/vnd.google-apps.folder"; *************************************************************************************/ interface IProgramOptions { folderId: string; - fileEntry64?: string; outputPath: string; credentialsPath: string; authTokenPath: string; logName: string; - contentsFileName: string; filterFunction64?: string; } @@ -41,10 +39,6 @@ const program = new Command("download"); export default program .description("Get active deployment") .requiredOption("-id --folder-id ", "Unique ID of folder to download (gdrive url suffix)") - .option( - "-f --file-entry-64 ", - "base64 encoded metadata of single file to download (read from cache entry). Default downloads all" - ) .requiredOption( "-o --output-path ", "Output path for downloaded files (default ./output)", @@ -61,17 +55,12 @@ export default program "Name provided for logs (defaults action.log)", "actions.log" ) - .requiredOption( - "-contents --contents-file-name ", - "Specify name of summary contents file to generate. Default `_contents.json`", - "_contents.json" - ) .option( "-filter --filter-function-64 ", "Function applied to omit downloads based on file entry, encoded as base64. e.g. decoded: (entry)=>entry.folderPath.includes('temp/')" ) .action(async (options: IProgramOptions) => { - new GDriveDownloader(options).run(); + return new GDriveDownloader(options).downloadFolder(options.folderId); }); // Run if called directly from Node @@ -86,47 +75,72 @@ if (require.main === module) { * Main Methods *************************************************************************************/ -class GDriveDownloader { +export class GDriveDownloader { private drive: drive_v3.Drive; + private contentsPath: string; + private contentsData: IGDriveFileWithFolder[] = []; + private contentsFileName = "_contents.json"; constructor(private options: IProgramOptions) { const { outputPath } = this.options; + this.contentsPath = path.resolve(outputPath, this.contentsFileName); // prepare folders fs.ensureDirSync(outputPath); fs.ensureDirSync(PATHS.LOGS_DIR); - console.log(chalk.yellow("Downloading GDrive Data")); + this.loadCacheContents(); } - public async run() { - const { fileEntry64, folderId, authTokenPath, credentialsPath } = this.options; - this.drive = await authorizeGDrive({ authTokenPath, credentialsPath }); - // Handle case of single or full download - if (fileEntry64) { - const cachedEntry: IGDriveFileWithFolder = JSON.parse( - Buffer.from(fileEntry64, "base64").toString() - ); - return this.processSingleFileDownload(cachedEntry); - } else { - return this.processFullFolderDownload(folderId); - } + /** Process entire folder download */ + public async downloadFolder(folderId: string) { + await this.setupGdrive(); + console.log(chalk.yellow("Retrieving list of files")); + const serverFiles = await this.listGdriveFilesRecursively(folderId); + return this.processDownloads(serverFiles); } /** - * Sync a single file, bypassing cache - * Note - requires a previous cache entry so that the full folder subpath of the file is - * known (otherwise would need recursive parents search) + * Process updates for a single file - used during watch mode + * NOTE - file must already exist in cache to know nested folder structure to output file to */ - private async processSingleFileDownload(cachedEntry: IGDriveFileWithFolder) { - const serverEntry = await getGDriveFileById(this.drive, cachedEntry.id); - const newEntry = { ...cachedEntry, ...serverEntry }; - await this.processSyncActions({ ...SYNC_ACTIONS_EMPTY, new: [newEntry] }); - this.updateCacheContentsFile(newEntry); - console.log(chalk.green("Download Complete")); + public async updateFileEntry(serverEntry: drive_v3.Schema$File) { + await this.setupGdrive(); + const cachedEntry = this.getCachedEntry(serverEntry); + if (!cachedEntry) { + console.log(chalk.red("Full sync required before updating file", serverEntry.name)); + return; + } + // HACK - gdrive ignores updates in quick succession, so ensure change detection whenever + // viewedByMeTime changes (e.g. gsheet page reload) + if (serverEntry.viewedByMeTime) { + serverEntry.modifiedTime = serverEntry.viewedByMeTime; + } + // we still call the main method used to download entire folder, just passing individual server file + const entryWithFolderPath = { ...serverEntry, folderPath: cachedEntry.folderPath }; + const actions = { ...SYNC_ACTIONS_EMPTY }; + actions.updated.push(entryWithFolderPath); + await this.processSyncActions(actions); + this.updateCacheContentsFile(entryWithFolderPath); + } + + public getCachedEntry(serverEntry: drive_v3.Schema$File) { + return this.contentsData.find((cached) => cached.id === serverEntry.id); + } + + private async setupGdrive() { + const { authTokenPath, credentialsPath } = this.options; + const { drive } = await authorizeGDrive({ authTokenPath, credentialsPath }); + this.drive = drive; + } + + private loadCacheContents() { + if (!fs.existsSync(this.contentsPath)) { + fs.writeJSONSync(this.contentsPath, []); + } + this.contentsData = fs.readJSONSync(this.contentsPath); } + /** Download a full folder */ - private async processFullFolderDownload(folderId: string) { - console.log(chalk.yellow("Retrieving list of files")); - const files = await this.listGdriveFilesRecursively(folderId); + private async processDownloads(files: IGDriveFileWithFolder[]) { // Generate list of files to download const actions = this.prepareSyncActionsList(files); await this.processSyncActions(actions); @@ -135,6 +149,7 @@ class GDriveDownloader { console.log(chalk.green("Download Complete")); } + /** Keep a local reference of all files in cache */ private writeCacheContentsFile(files: IGDriveFileWithFolder[]) { const { outputPath } = this.options; // also add a relativePath for full path to local file @@ -144,17 +159,17 @@ class GDriveDownloader { relativePath: getRelativeLocalPath(f), })) // only include files downloaded in contents - .filter((f) => fs.existsSync(path.resolve(outputPath, f.relativePath))); + .filter((f) => fs.existsSync(path.resolve(outputPath, f.relativePath))) + .sort((a, b) => (a.relativePath > b.relativePath ? 1 : -1)); const contents = JSON.stringify(filesWithRelativePath, null, 2); - const contentsPath = path.resolve(outputPath, this.options.contentsFileName); + const contentsPath = path.resolve(outputPath, this.contentsFileName); fs.writeFileSync(contentsPath, contents); } private updateCacheContentsFile(file: IGDriveFileWithFolder) { const { outputPath } = this.options; - const contentsPath = path.resolve(outputPath, this.options.contentsFileName); + const contentsPath = path.resolve(outputPath, this.contentsFileName); const contents: IGDriveFileWithFolder[] = fs.readJSONSync(contentsPath); const updateIndex = contents.findIndex((entry) => entry.id === file.id); - console.log("update contents", contents[updateIndex], file); if (updateIndex > -1) { contents[updateIndex] = file; } @@ -200,6 +215,8 @@ class GDriveDownloader { logUpdate.done(); queue.start(); await queue.onIdle(); + // Remove empty folders left after deletions + cleanupEmptyFolders(this.options.outputPath); // Update logs const actionsLogPath = path.resolve(PATHS.LOGS_DIR, `${this.options.logName}.json`); console.log(chalk.gray(actionsLogPath)); @@ -210,7 +227,7 @@ class GDriveDownloader { * Compare list of server files with local cache to determine new/updated/same/deleted */ private prepareSyncActionsList(serverFiles: IGDriveFileWithFolder[]) { - const { outputPath, filterFunction64, contentsFileName } = this.options; + const { outputPath, filterFunction64 } = this.options; const output: ISyncActions = { new: [], updated: [], same: [], deleted: [], ignored: [] }; // generate hashmaps for easier lookup and compare of server and local files @@ -228,6 +245,7 @@ class GDriveDownloader { // add to hashmap for use in local-server comparison const cacheRelativePath = getRelativeLocalPath(serverFile); serverFilesHashmap[cacheRelativePath] = serverFile; + const cacheFile = localFilesHashmap[cacheRelativePath]; // run a regex test for anything ending .abc(d) // gdrive keeps duplicate open office formats of gsheets without extension @@ -237,17 +255,22 @@ class GDriveDownloader { output.ignored.push(serverFile); return; } + // Apply any server filter functions, removing files that already exist and ignoring + // files that do not if (filterFn) { const included = filterFn(serverFile); if (!included) { - output.ignored.push(serverFile); - return; + if (cacheFile) { + output.deleted.push({ folderPath: cacheRelativePath }); + return; + } else { + output.ignored.push(serverFile); + return; + } } } - const cacheFile = localFilesHashmap[cacheRelativePath]; if (cacheFile) { - // compare with modified times instead of checksums const isSame = this.isServerFileSameAsLocalFile(serverFile, cacheFile); if (isSame) { @@ -262,7 +285,10 @@ class GDriveDownloader { } // compare local with server, mark for delete files no longer on server (except local contents file) Object.keys(localFilesHashmap).forEach((relativePath) => { - if (!serverFilesHashmap[relativePath] && path.basename(relativePath) !== contentsFileName) { + if ( + !serverFilesHashmap[relativePath] && + path.basename(relativePath) !== this.contentsFileName + ) { output.deleted.push({ folderPath: relativePath }); } }); @@ -370,6 +396,10 @@ class GDriveDownloader { } } +function getDownloader(options: IProgramOptions) { + return new GDriveDownloader(options); +} + /** * Gdrive file meta only includes extensions if a native file type (not gsheet, gdoc etc.), * It also separates out relative parent folder path with file name prefix. diff --git a/packages/@idemsInternational/gdrive-tools/src/commands/watch.ts b/packages/@idemsInternational/gdrive-tools/src/commands/watch.ts new file mode 100644 index 0000000000..0c8aac8ed9 --- /dev/null +++ b/packages/@idemsInternational/gdrive-tools/src/commands/watch.ts @@ -0,0 +1,286 @@ +#!/usr/bin/env node +import { Command } from "commander"; +import type { drive_v3 } from "googleapis"; +import { logProgramHelp } from "../utils"; +import { authorizeGDrive, authorizeGDriveActivity } from "./authorize"; +import { PATHS } from "../paths"; +import { randomUUID } from "crypto"; +import { GDriveDownloader } from "./download"; +import chalk from "chalk"; + +/*************************************************************************************** + * WiP Methods to enable streaming of live changes from google drive + * + * @example `yarn workspace @idemsInternational/gdrive-tools start watch --folder-id FOLDER_ID` + * + * Known Issues + * - First change fast to detect with both apis, subsequent much slower. Activity API tends not + * to pick up subsequent edits, changes API does with delay or manual page refresh + * (maybe just large shared folders?) + * - This can also be seen for the specific file api, so any methods that rely on reading file info + * will have same difficulties + * - Changes api webhook requires server, attempt to use localTunnel however unstable. + * Manual testing via ngrok shows working, but same lag issues as polling method + * - Only activity api supports filtered query, but not very responsive (at least for shared drives) + * - Whilst the revisions API does pick up newer changes it returns chronologically not ideal + * + * TODOs + * - Decide if limitations worth pursuing further + * (might be better to rely on desktop app/alt storage sources, if inconsistent could be frustrating) + * - Add file update handling + * - Add bindings for workflow methods + * - Remove localtunnel if no longer required + * - If using tunnel add express api or similar to listen on proxied port and respond + * + * + *************************************************************************************/ +interface IProgramOptions { + folderId: string; + outputPath: string; + credentialsPath: string; + authTokenPath: string; + logName: string; +} + +const program = new Command("watch"); +export default program + .description("Watch a folder for changes") + .requiredOption("-id --folder-id ", "Unique ID of folder to download (gdrive url suffix)") + .requiredOption( + "-o --output-path ", + "Output path for downloaded files (default ./output)", + PATHS.DEFAULT_OUTPUT_FOLDER + ) + .requiredOption( + "-c --credentials-path ", + "Path to credentials JSON", + PATHS.DEFAULT_CREDENTIALS + ) + .requiredOption("-a --auth-token-path ", "Path to token JSON", PATHS.DEFAULT_TOKEN) + .requiredOption( + "-l --log-name ", + "Name provided for logs (defaults action.log)", + "actions.log" + ) + + .action(async (options: IProgramOptions) => new GDriveWatcher(options).run()); + +// Run if called directly from Node +if (require.main === module) { + if (!process.argv.slice(2).length) { + logProgramHelp(program); + } + program.parse(process.argv); +} + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ + +class GDriveWatcher { + private lastSyncTime: string = new Date().toISOString(); + private recordedChanges = {}; + constructor(private options: IProgramOptions) {} + + public async run() { + await Promise.all([ + // this.wipPollActivityApi(), + this.wipPollDriveChangesApi(), + ]); + // await this.wipStreamDriveChangesApi(); + } + + /** + * Retrieve all drive changes since last sync. Currently not implemented but kept for ref * + * This could possibly used to manually poll changes instead of streaming watch# + * + * NOTE - requires API enabled https://console.cloud.google.com/apis/api/driveactivity.googleapis.com + */ + private async wipPollActivityApi(interval = 1000 * 3) { + const { folderId, authTokenPath, credentialsPath } = this.options; + const { driveactivity } = await authorizeGDriveActivity({ authTokenPath, credentialsPath }); + console.log("\nwatching user edits...\n"); + const executePoll = async (resolve: (value: any) => void, reject: (err: Error) => void) => { + const filter = `time > "${this.lastSyncTime}" detail.action_detail_case: EDIT`; + const res = await driveactivity.activity + .query({ + requestBody: { + pageSize: 1, // actual results may be more, this is a minimum + ancestorName: `items/${folderId}`, + // filter, + // consolidationStrategy: { none: {} }, + }, + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); + + if (res && res.data?.activities) { + // only update sync time if update received as could be latency between when + // sync timestamp not actually populate at time of polling + for (const activity of res.data.activities.slice(0, 1)) { + const { actors, targets, timestamp } = activity; + // only track edits (could be included in filter) + if (activity.primaryActionDetail.edit) { + // only track actions by current user + if (actors.find((actor) => actor?.user?.knownUser?.isCurrentUser)) { + this.lastSyncTime = timestamp; + for (const target of targets) { + const targetName = target.driveItem?.name; + if (targetName) { + const recordedChange = this.recordedChanges[targetName]; + if (!recordedChange || recordedChange.timestamp < timestamp) { + this.recordedChanges[targetName] = { ...target, timestamp }; + console.log(`${formatTimestamp()} [CHANGE] ${target.driveItem?.title}`); + // TODO - handle download target.driveItem.name + } + } + } + } + } + } + } + setTimeout(executePoll, interval, resolve, reject); + }; + return new Promise(executePoll); + } + + /** + * Send repeated requests to google drive changes api to check for file updates + * Queries against all files a user has access to + * TODO - see if there is better way to apply filtered query + **/ + private async wipPollDriveChangesApi(interval = 1000 * 3) { + const { authTokenPath, credentialsPath } = this.options; + const { drive } = await authorizeGDrive({ authTokenPath, credentialsPath }); + let pageToken = await this.getPageToken(drive); + console.log("watching file changes..."); + const executePoll = async (resolve: (value: any) => void, reject: (err: Error) => void) => { + if (!pageToken) { + pageToken = await this.getPageToken(drive); + } + const res = await drive.changes + .list({ + pageToken, + pageSize: 1, + includeItemsFromAllDrives: true, + supportsAllDrives: true, + fields: "*", // specific fields seems to not work, use all for debugging + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); + if (res && res.data) { + const { changes, newStartPageToken } = res.data; + if (changes?.length > 0) { + pageToken = newStartPageToken; + for (const change of changes) { + await this.handleFileChange(change); + } + } + } + setTimeout(executePoll, interval, resolve, reject); + }; + return new Promise(executePoll); + } + + /** Generate a token used to interact with drive changes API */ + private async getPageToken(drive: drive_v3.Drive) { + const initialTokenRes = await drive.changes.getStartPageToken(); + return initialTokenRes.data.startPageToken; + } + + private async handleFileChange(change: drive_v3.Schema$Change) { + const { file } = change; + // filter only files modified by me + const { name, lastModifyingUser } = file; + if (lastModifyingUser?.me) { + const gdriveDownloader = new GDriveDownloader(this.options); + // Filter only app cached entries (gdrive has full user drive scope) + if (gdriveDownloader.getCachedEntry(file)) { + console.log(chalk.blue(`${formatTimestamp()} [Change] ${name}`)); + await new GDriveDownloader(this.options).updateFileEntry(file); + } + } + } + + /** + * Create a new subscription to push google changes to a custom webhook. + */ + private async wipStreamDriveChangesApi() { + const { folderId, authTokenPath, credentialsPath } = this.options; + const { drive } = await authorizeGDrive({ authTokenPath, credentialsPath }); + const tunnel = await this.wipCreateStreamChangeTunnel(); + const startPageReq = await drive.changes.getStartPageToken(); + const expiration = `${new Date().getTime() + 1000 * 60 * 60}`; // default expiry after 1h + const changesReq = await drive.changes + .watch({ + pageToken: startPageReq.data.startPageToken, + // driveId: folderId, + // includeItemsFromAllDrives: true, + // supportsAllDrives: true, + requestBody: { + kind: "api#channel", + id: randomUUID(), + type: "web_hook", + address: tunnel.url, // can replace with custom ngrok or webhook.site tunnel for testing + expiration, + }, + }) + .catch((err) => { + console.error("change error", err.response.data.error.errors); + tunnel.close(); + }); + if (changesReq) { + console.log("changes", changesReq.data); + } + } + + /** + * + * TODO - loca.lt service very flaky, requires self-hosting server + * It may also be worth running full subscription on a server (just pass folderId) + * and supporting webhook back to any listeners + */ + private async wipCreateStreamChangeTunnel() { + return { url: "" }; + + let localTunnel: any; // TODO - requires import add adding package + // import localTunnel from "localtunnel"; + const tunnel = await localTunnel({ port: 3000, host: "http://loca.lt" }); + console.log("tunnel listening", tunnel.url); + + // TODO - check which events are recorded + tunnel.addListener("request", (req) => { + console.log("tunnel request received", req); + }); + tunnel.on("request", (stream) => { + console.log("on request", stream); + }); + tunnel.on("connection", (stream) => { + console.log("connection made", stream); + }); + tunnel.on("close", (stream) => { + console.log("tunnel closed", stream); + }); + tunnel.addListener("request", (stream) => { + console.log("on request", stream); + }); + tunnel.addListener("connection", (stream) => { + console.log("connection made", stream); + }); + tunnel.addListener("close", (stream) => { + console.log("tunnel closed", stream); + }); + return tunnel; + } +} + +function formatTimestamp(d = new Date()) { + let hours = d.getHours(); + let minutes = d.getMinutes(); + let seconds = d.getSeconds(); + return `${hours}:${minutes}:${seconds}`; +} diff --git a/packages/@idemsInternational/gdrive-tools/src/index.ts b/packages/@idemsInternational/gdrive-tools/src/index.ts index 11e15574ed..89f570bead 100644 --- a/packages/@idemsInternational/gdrive-tools/src/index.ts +++ b/packages/@idemsInternational/gdrive-tools/src/index.ts @@ -3,6 +3,7 @@ import { Command } from "commander"; import downloadCmd from "./commands/download"; import authorizeCmd from "./commands/authorize"; +import watchCmd from "./commands/watch"; import { logProgramHelp } from "./utils"; const program = new Command(); @@ -11,6 +12,7 @@ program.version("1.0.0").description("IDEMS Gdrive Tools"); /** add sub-commands from child folders */ program.addCommand(downloadCmd); program.addCommand(authorizeCmd); +program.addCommand(watchCmd); // Run if called directly from Node if (require.main === module) { diff --git a/packages/@idemsInternational/gdrive-tools/src/utils/file.utils.ts b/packages/@idemsInternational/gdrive-tools/src/utils/file.utils.ts index 5312312cf2..4595916143 100644 --- a/packages/@idemsInternational/gdrive-tools/src/utils/file.utils.ts +++ b/packages/@idemsInternational/gdrive-tools/src/utils/file.utils.ts @@ -86,3 +86,24 @@ export function getFileMD5Checksum(filePath: string) { const checksum = hash.digest("hex"); return checksum; } + +/** + * Recursively remove any empty folders + * (duplicate from scripts file-utils) + */ +export const cleanupEmptyFolders = (folder: string) => { + if (!fs.existsSync(folder)) return; + if (!fs.statSync(folder).isDirectory()) return; + let files = fs.readdirSync(folder); + + if (files.length > 0) { + files.forEach((file) => cleanupEmptyFolders(path.join(folder, file))); + // Re-evaluate files; after deleting subfolders we may have an empty parent + // folder now. + files = fs.readdirSync(folder); + } + + if (files.length === 0) { + fs.rmdirSync(folder); + } +}; diff --git a/packages/@idemsInternational/rapidpro-excel/tsconfig.spec.json b/packages/@idemsInternational/rapidpro-excel/tsconfig.spec.json index fe856caa07..54149559fd 100644 --- a/packages/@idemsInternational/rapidpro-excel/tsconfig.spec.json +++ b/packages/@idemsInternational/rapidpro-excel/tsconfig.spec.json @@ -1,17 +1,9 @@ { - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "mocha", - "chai", - "node" - ] - }, - "files": [], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] - } - \ No newline at end of file + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": ["mocha", "chai", "node"] + }, + "files": [], + "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] +} diff --git a/packages/@idemsInternational/xlsform-converter/Readme.md b/packages/@idemsInternational/xlsform-converter/Readme.md new file mode 100644 index 0000000000..8fffff7867 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/Readme.md @@ -0,0 +1,30 @@ +# XLSForm Converter + +This package converts xlsform to xml and enketo JSON + +This is a 2-step process, and is run in docker containers to ensure correct python and node environments to run conversions. +The steps use the following tools to convert xlsform to xml, and then xml to enketo json + +https://github.com/xlsform/pyxform +https://github.com/enketo/enketo-transformer + + + +## Prerequisites +- Docker + +## Use +Place any forms to be converted in the `forms` folder and then run script + +``` +yarn workspace @idemsInternational/xlsform-converter start +``` + +## TODO +- [x] XML conversion script +- [x] Enekto JSON conversion script +- [x] Docker runtime +- [ ] Media file support +- [ ] Public API +- [ ] Serverless Deployment +- [ ] Tests \ No newline at end of file diff --git a/packages/@idemsInternational/xlsform-converter/docker-compose.yml b/packages/@idemsInternational/xlsform-converter/docker-compose.yml new file mode 100644 index 0000000000..b00eede3b5 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/docker-compose.yml @@ -0,0 +1,6 @@ +services: + xlsform_converter: + image: idems/xlsform-converter + build: ./src + volumes: + - ./forms:/app/forms:rw diff --git a/packages/@idemsInternational/xlsform-converter/forms/.gitignore b/packages/@idemsInternational/xlsform-converter/forms/.gitignore new file mode 100644 index 0000000000..9c2368e057 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/forms/.gitignore @@ -0,0 +1,4 @@ +*.xls +*.xlsx +*.xml +*.json \ No newline at end of file diff --git a/packages/@idemsInternational/xlsform-converter/package.json b/packages/@idemsInternational/xlsform-converter/package.json new file mode 100644 index 0000000000..dfdbc59688 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/package.json @@ -0,0 +1,10 @@ +{ + "name": "@idemsInternational/xlsform-converter", + "version": "1.0.0", + "description": "", + "scripts": { + "start": "docker compose up --build --abort-on-container-exit" + }, + "author": "", + "license": "ISC" +} diff --git a/packages/@idemsInternational/xlsform-converter/src/Dockerfile b/packages/@idemsInternational/xlsform-converter/src/Dockerfile new file mode 100644 index 0000000000..628ea816ee --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/src/Dockerfile @@ -0,0 +1,24 @@ +# Use base image with both node and python installed and compatible with + +# https://github.com/enketo/enketo-transformer#prerequisites +# https://github.com/xlsform/pyxform +FROM nikolaik/python-nodejs:python3.9-nodejs14-alpine + +# Add deps for node-gyp +# https://stackoverflow.com/questions/54428608/docker-node-alpine-image-build-fails-on-node-gyp +RUN apk add --no-cache make g++ + +WORKDIR /app + +# Install python and node dependencies to convert forms +RUN pip3 install pyxform && npm install enketo-transformer + +COPY . . + +RUN mkdir /app/forms + +# Convert xlsform to xml using python and then xml to enketo-json using node +CMD python3 xlsform-to-xform.py && node xform-to-enketo.js && echo "Complete" + +# Debug +# ENTRYPOINT ["tail", "-f", "/dev/null"] \ No newline at end of file diff --git a/packages/@idemsInternational/xlsform-converter/src/xform-to-enketo.js b/packages/@idemsInternational/xlsform-converter/src/xform-to-enketo.js new file mode 100644 index 0000000000..4d18a9c598 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/src/xform-to-enketo.js @@ -0,0 +1,45 @@ +const { transform } = require("enketo-transformer"); +const fs = require("fs"); + +async function main() { + const formNames = fs.readdirSync("./forms").filter((p) => p.endsWith(".xml")); + for (const formName of formNames) { + const xform = fs.readFileSync(`./forms/${formName}`, "utf-8"); + const convertedForm = await convertForm(xform); + const outputName = formName.replace(".xml", ".json"); + fs.writeFileSync(`./forms/${outputName}`, JSON.stringify(convertedForm, null, 2), "utf-8"); + } +} + +async function convertForm(xform) { + return transform({ + // required string of XForm + xform: xform, + + // optional string, to add theme if no theme is defined in the XForm + theme: "grid", + + // optional map, to replace jr://..../myfile.png URLs + // media: { + // "myfile.png": "/path/to/somefile.png", + // "myfile.mp3": "/another/path/to/2.mp3", + // }, + + // optional ability to disable markdown rendering (default is true) + markdown: false, + + // optional preprocess function that transforms the XForm (as libXMLJs object) to + // e.g. correct incompatible XForm syntax before Enketo's transformation takes place + preprocess: (doc) => doc, + }); +} + +main() + .then((res) => { + console.log(res); + process.exit(0); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); diff --git a/packages/@idemsInternational/xlsform-converter/src/xlsform-to-xform.py b/packages/@idemsInternational/xlsform-converter/src/xlsform-to-xform.py new file mode 100644 index 0000000000..722bb5b3ed --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/src/xlsform-to-xform.py @@ -0,0 +1,13 @@ +from pathlib import Path +import subprocess + +directory_name= 'forms' + +# Convert all xls/xlsx to xml +open_files = Path(directory_name).glob('*.xls*') +for file in open_files: + # call xls2xform module from command line process + # NOTE - form validation requires java 8+ + process = subprocess.Popen(["xls2xform", "--skip_validate",file], stdout=subprocess.PIPE,stderr=subprocess.PIPE) + stdout, stderr = process.communicate() + stdout, stderr diff --git a/packages/@idemsInternational/xlsform-converter/test/.gitignore b/packages/@idemsInternational/xlsform-converter/test/.gitignore new file mode 100644 index 0000000000..17acd0fab4 --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/test/.gitignore @@ -0,0 +1,2 @@ +*.xml +*.json \ No newline at end of file diff --git a/packages/@idemsInternational/xlsform-converter/test/form.xlsx b/packages/@idemsInternational/xlsform-converter/test/form.xlsx new file mode 100644 index 0000000000..c161f9cc8b --- /dev/null +++ b/packages/@idemsInternational/xlsform-converter/test/form.xlsx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942ef6cd82d6d155302e711c09609916056692451411f0393c53370544978afd +size 7326 diff --git a/packages/actions/README.md b/packages/actions/README.md new file mode 100644 index 0000000000..97bf616a69 --- /dev/null +++ b/packages/actions/README.md @@ -0,0 +1,18 @@ +# Actions + +Github actions for use by deployment repos + +## Creating Action Templates +Action templates follow the same syntax as github-actions + +## Adding Variables +Action templates can be modified with user input variables. These are denoted with +``` +%{VARIABLE_NAME} +``` +Variables for replacement should be defined in the action template `config.ts` + +**Note** - when actions are triggered from main app workflows all active deployment variables will be available and can be set as default value for any inputs + +## Managing Secrets +Actions may additionally require github secrets to be configured. Currently these need to be configured manually \ No newline at end of file diff --git a/packages/actions/lib/index.ts b/packages/actions/lib/index.ts new file mode 100644 index 0000000000..dcdc3e6c75 --- /dev/null +++ b/packages/actions/lib/index.ts @@ -0,0 +1 @@ +export * from "./setup"; diff --git a/packages/actions/lib/setup.ts b/packages/actions/lib/setup.ts new file mode 100644 index 0000000000..8a3e68712f --- /dev/null +++ b/packages/actions/lib/setup.ts @@ -0,0 +1,145 @@ +import chalk from "chalk"; +import { ensureDirSync, writeFileSync } from "fs-extra"; +import * as inquirer from "inquirer"; +import { dirname, resolve } from "path"; + +import type { IDeploymentConfigJson } from "data-models"; + +import { loadActionYml } from "./utils"; +import { ACTION_TEMPLATES } from "../templates"; +import { IActionConfig } from "../models"; + +/** + * Select an action from available templates to configure and populate locally + * + * @param userInputValues list of default values to populate during setup + * Used when triggering actions from external lib, such as passing deployment information + */ +export async function setupActions(deployment: IDeploymentConfigJson) { + const { selected } = await inquirer.prompt<{ selected: IActionConfig }>([ + { + type: "list", + name: "selected", + message: "What action would you like to configure?\n", + choices: Object.values(ACTION_TEMPLATES).map((value) => { + const name = `${chalk.blue(value.name)}\n ${chalk.gray(value.description)}\n`; + return { value, name }; + }), + pageSize: 30, + }, + ]); + await handleActionRequires(selected); + await handleActionSecrets(selected); + const actionYml = await handleActionInputs(selected, deployment); + await writeActionOutput(selected, actionYml, deployment); +} + +/** + * Check action requirements, prompt user to process any required actions in advance + */ +async function handleActionRequires(config: IActionConfig) { + if (config.requires) { + for (const action of config.requires) { + // TODO - add automation to ensure setup has been completed for actions + const message = `Action requires [${action.name}] action to be manually configured in advance.\n\nProceed?`; + const { confirmed } = await inquirer.prompt([ + { type: "confirm", message, name: "confirmed" }, + ]); + if (!confirmed) { + process.exit(1); + } + } + } +} + +/** + * Check action requirements, prompt user to confirm any required secrets in advance + */ +async function handleActionSecrets(config: IActionConfig) { + if (config.secrets) { + console.log(""); + const secretsList = config.secrets + .map( + ({ name, description, required }) => + `${chalk.blue(name)}${required ? chalk.red("*") : ""}\n${chalk.gray(description)}\n` + ) + .join("\n"); + const message = `Action requires Github Secrets manually configured\n\n${secretsList}\nProceed?`; + const { confirmed } = await inquirer.prompt([{ type: "confirm", message, name: "confirmed" }]); + if (!confirmed) { + process.exit(1); + } + } +} + +/** + * Process inputs defined in action config file, prompting user input as required and replacing + * within action yml file + */ +async function handleActionInputs(config: IActionConfig, deployment: IDeploymentConfigJson) { + const userInputs: Record = {}; + console.log(chalk.blue("\nPlease provide the following inputs")); + // Record user input values + for (const { name, description, defaultValue, required } of config.inputs(deployment) || []) { + console.log(""); + const message = `${chalk.yellow(name)}\n${chalk.gray(description)}\n`; + const res = await inquirer.prompt([{ type: "input", name, message, default: defaultValue }]); + const value = res[name]; + if ((value === undefined || value === "") && required) { + throw new Error("Input required"); + } + userInputs[name] = value; + } + // Replace action values + const yaml = loadActionYml(config.templatePath); + let replacedYaml = yaml; + for (const [key, value] of Object.entries(userInputs)) { + const exp = new RegExp(`%{${key}}`, "g"); + replacedYaml = replacedYaml.replace(exp, value); + } + return replacedYaml; +} + +/** Write generated action yml to file */ +async function writeActionOutput( + config: IActionConfig, + actionYml: string, + deployment: IDeploymentConfigJson +) { + console.log(""); + let defaultName = dirname(config.templatePath) + ".yml"; + const message = "Specify action output filename\n"; + const { filename } = await inquirer.prompt([ + { type: "input", message, default: defaultName, name: "filename" }, + ]); + const filepath = resolve(deployment._workspace_path, ".github", "workflows", filename); + const ymlMetadata = generateMetadataTag(config); + const ymlContent = `${ymlMetadata}${actionYml}`; + ensureDirSync(dirname(filepath)); + writeFileSync(filepath, ymlContent); + console.log(chalk.blue("\nAction created successfully\n"), filepath); +} + +if (require.main === module) { + // when running direct assume no deployment configured + setupActions({} as any); +} + +/** + * Generate a local yml tag used to store metadata + * @returns tag representation of action config metadata, e.g. + * ```yaml + * # IDEMS Template Metadata + * %TAG !idems_meta! id:app_build,version:20230629 + * --- + * ``` + * + * Ideally we would just add key-value pairs directly to top-section of yaml file, + * however json-schema detection throws errors for properties not expected in github action yml + */ +function generateMetadataTag(config: IActionConfig) { + const metadataString = Object.entries(config.metadata) + .map(([key, value]) => `${key}:${value}`) + .join(","); + return `# IDEMS Template Metadata\n%TAG !idems_meta! ${metadataString}\n---\n`; +} diff --git a/packages/actions/lib/utils.ts b/packages/actions/lib/utils.ts new file mode 100644 index 0000000000..11bbdc4f5b --- /dev/null +++ b/packages/actions/lib/utils.ts @@ -0,0 +1,13 @@ +import { readFileSync } from "fs"; +import { load } from "js-yaml"; +import { resolve } from "path"; + +const ACTION_TEMPLATES_FOLDER = resolve(__dirname, "../", "templates"); + +export function loadActionYml(templatePath: string) { + return readFileSync(resolve(ACTION_TEMPLATES_FOLDER, templatePath), "utf-8"); +} + +export function parseYml(ymlString: string) { + return load(ymlString); +} diff --git a/packages/actions/models/index.ts b/packages/actions/models/index.ts new file mode 100644 index 0000000000..1178fceed9 --- /dev/null +++ b/packages/actions/models/index.ts @@ -0,0 +1,30 @@ +import type { IDeploymentConfig } from "data-models"; + +export interface IActionConfig { + name: string; + description: string; + /** relative path to template.yml */ + templatePath: string; + /** name of any additional templates required */ + requires?: { name: string }[]; + /** user inputs replaced within template yaml */ + inputs: (deployment: IDeploymentConfig) => { + name: string; + description: string; + required?: boolean; + defaultValue?: any; + }[]; + /** github secrets required on server */ + secrets: { + name: string; + description: string; + required?: boolean; + }[]; + /** Additional metadata populated to templates for use in debugging */ + metadata: { + /** unique id of action template (used for updating) */ + id: string; + /** template version, using semantic versioning, e.g. "1.0.0" */ + version: string; + }; +} diff --git a/packages/actions/package.json b/packages/actions/package.json new file mode 100644 index 0000000000..7e0b65948a --- /dev/null +++ b/packages/actions/package.json @@ -0,0 +1,21 @@ +{ + "name": "actions", + "version": "1.0.0", + "description": "", + "main": "lib", + "scripts": { + "start": "ts-node lib/index.ts" + }, + "dependencies": { + "chalk": "^4.1.0", + "fs-extra": "^10.0.0", + "inquirer": "^7.3.3", + "js-yaml": "^4.1.0" + }, + "devDependencies": { + "@types/fs-extra": "^9.0.13", + "@types/inquirer": "^7.3.1", + "@types/js-yaml": "^4.0.5", + "ts-node": "^10.8.0" + } +} diff --git a/packages/actions/templates/app-build/config.ts b/packages/actions/templates/app-build/config.ts new file mode 100644 index 0000000000..9ac94b414f --- /dev/null +++ b/packages/actions/templates/app-build/config.ts @@ -0,0 +1,29 @@ +import { IActionConfig } from "../../models"; + +export const AppBuild: IActionConfig = { + name: "App Build", + description: "Create main app build for use in deployments", + templatePath: "app-build/template.yml", + inputs: (deployment) => [ + { + name: "DEPLOYMENT_NAME", + description: "name of deployment used", + required: true, + defaultValue: deployment.name, + }, + ], + secrets: [ + { + name: "DEPLOYMENT_PRIVATE_KEY", + description: "(optional) Private key if using encrypted deployments", + }, + { + name: "FIREBASE_CONFIG", + description: "(optional) JSON export from firebase console if using firebase", + }, + ], + metadata: { + id: "app_build", + version: "1.0.0", + }, +}; diff --git a/packages/actions/templates/app-build/template.yml b/packages/actions/templates/app-build/template.yml new file mode 100644 index 0000000000..5dd99067a8 --- /dev/null +++ b/packages/actions/templates/app-build/template.yml @@ -0,0 +1,78 @@ +################################################################################## +# Configuration +################################################################################## +env: + DEPLOYMENT_NAME: "%{DEPLOYMENT_NAME}" + DEPLOYMENT_PRIVATE_KEY: ${{secrets.DEPLOYMENT_PRIVATE_KEY}} + FIREBASE_CONFIG: ${{secrets.FIREBASE_CONFIG}} + +################################################################################## +# Main Code +################################################################################## +name: App - Build +on: + workflow_call: + inputs: + artifact-name: + description: Name of the artifact to upload + type: string + default: www + build-flags: + description: Additional flags to pass to build command (e.g. base-href) + type: string + default: "" +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + lfs: true + repository: "IDEMSInternational/parenting-app-ui.git" + ref: master + - uses: actions/checkout@v3 + with: + lfs: true + path: ".idems_app/deployments/${{env.DEPLOYMENT_NAME}}" + - name: Populate Encryption key + if: env.DEPLOYMENT_PRIVATE_KEY != '' + run: echo "${{env.DEPLOYMENT_PRIVATE_KEY}}" > ./.idems_app/deployments/${{env.DEPLOYMENT_NAME}}/encrypted/private.key + + # TODO - populate firebase as part of deployment set + - name: Populate Firebase Config + if: env.FIREBASE_CONFIG != '' + run: echo 'export const firebaseConfig = ${{env.FIREBASE_CONFIG}}' > src/environments/firebaseConfig.ts + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Cache node modules + uses: actions/cache@v3 + with: + path: ./.yarn/cache + # If cachebusting required (e.g. breaking yarn changes on update) change `v1` to another number + key: ${{ runner.os }}-node-modules-yarn-v1-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node-modules-yarn-v1- + + - name: Install node modules + run: yarn install + + - name: Set deployment + run: yarn workflow deployment set $DEPLOYMENT_NAME + + - name: Build + run: yarn build ${{inputs.build-flags}} + + # Use github pages upload artifact action to compress and upload + - name: Upload artifact + uses: actions/upload-pages-artifact@v1.0.8 + with: + path: "www/" + name: ${{inputs.artifact-name}} +################################################################################## +# Links +################################################################################## + +# Create a reusable workflow to build deployment app +# https://colinsalmcorner.com/musings-on-reusable-workflows/ diff --git a/packages/actions/templates/deploy-firebase/config.ts b/packages/actions/templates/deploy-firebase/config.ts new file mode 100644 index 0000000000..4e40a1ddc6 --- /dev/null +++ b/packages/actions/templates/deploy-firebase/config.ts @@ -0,0 +1,38 @@ +import { IActionConfig } from "../../models"; + +export const DeployFirebase: IActionConfig = { + name: "Deploy to Firebase", + description: "Build and deploy to firebase hosting", + templatePath: "deploy-firebase/template.yml", + requires: [{ name: "App Build" }], + inputs: () => [ + { name: "FIREBASE_PROJECT_ID", description: "ID of firebase project used", required: true }, + { + name: "FIREBASE_HOSTING_CHANNEL", + description: + "Name of channel to deploy to (default 'live' is main site, any other word, e.g. 'pr' will create random temp preview site)", + defaultValue: "live", + }, + { + name: "FIREBASE_HOSTING_TARGET", + description: "Optional override target if using multiple hosting sites for firebase project", + defaultValue: "", + }, + { + name: "PUSH_TARGET_BRANCH", + description: "Name of branch used to trigger action on push", + defaultValue: "main", + }, + ], + secrets: [ + { + name: "FIREBASE_SERVICE_ACCOUNT", + description: "JSON export of firebase service account (from console)", + required: true, + }, + ], + metadata: { + id: "deploy_firebase", + version: "1.0.0", + }, +}; diff --git a/packages/actions/templates/deploy-firebase/template.yml b/packages/actions/templates/deploy-firebase/template.yml new file mode 100644 index 0000000000..63a7e7b79d --- /dev/null +++ b/packages/actions/templates/deploy-firebase/template.yml @@ -0,0 +1,120 @@ +################################################################################## +# About +################################################################################## +# Build and deploy app to firebase +# Supports deploying to custom hosting channel for long-lived preview urls (30d) +# Or using custom hosting target + +################################################################################## +# Configuration (updated per deployment) +################################################################################## + +env: + FIREBASE_PROJECT_ID: "%{FIREBASE_PROJECT_ID}" # | ID of firebase project used (in case of multiple deployment targets just specify default) + FIREBASE_HOSTING_CHANNEL: "%{FIREBASE_HOSTING_CHANNEL}" # | Name of channel to deploy to (default 'live' is main site, any other word, e.g. 'pr' will create random temp preview site) + FIREBASE_HOSTING_TARGET: "%{FIREBASE_HOSTING_TARGET}" # | Optional override if using multiple hosting target sites (default target project ID) + FIREBASE_SERVICE_ACCOUNT: ${{secrets.FIREBASE_SERVICE_ACCOUNT}} # | JSON export of firebase service account (from console) +################################################################################## +# Triggers +# Specify conditions to run workflow. # See more information at: +# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows +################################################################################## +on: + push: + branches: + - "%{PUSH_TARGET_BRANCH}" + +################################################################################## +# Main Code +################################################################################## +name: Deploy - Firebase +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +concurrency: + group: "deploy_firebase" + cancel-in-progress: true + +jobs: + build_action: + uses: ./.github/workflows/app-build.yml + with: + artifact-name: www + secrets: inherit + + deploy: + needs: build_action + runs-on: ubuntu-latest + outputs: + urls: ${{ steps.deploy.outputs.urls }} + steps: + # Extract build artifact + - uses: actions/checkout@v3 + - name: Download Build Artifact + uses: actions/download-artifact@v3 + with: + name: www + - name: Extract Build folder + run: | + mkdir www + tar -xf artifact.tar --directory www + + # Ensure FIREBASE_HOSTING_TARGET set (default fallback to projectId) + - name: Populate Env + if: ${{env.FIREBASE_HOSTING_TARGET == ''}} + run: echo "FIREBASE_HOSTING_TARGET=${{env.FIREBASE_PROJECT_ID}}" >> "$GITHUB_ENV" + + # Create a .firebaserc file mapping any firebase deployment host targets (required if multi-host projects) + # e.g. {"projects": {"default": "my_app"},"targets": {"my_app": {"hosting": {"my_app_dev":["my_app_dev"]} } } + - name: Populate Firebase Targets + run: | + FIREBASE_RC_TARGETS=$(jq -n \ + --argjson "${{env.FIREBASE_PROJECT_ID}}" \ + '{"hosting":{"${{env.FIREBASE_HOSTING_TARGET}}":["${{env.FIREBASE_HOSTING_TARGET}}"]}}' \ + '$ARGS.named' + ) + FIREBASE_RC=$(jq -n \ + --argjson projects '{"default":"${{env.FIREBASE_PROJECT_ID}}"}' \ + --argjson targets "$FIREBASE_RC_TARGETS" \ + '$ARGS.named' + ) + echo $FIREBASE_RC | jq '.' + echo $FIREBASE_RC > .firebaserc + + # Create a firebase.json file to handle single-page-app hosting redirects + # e.g. {"hosting": [{"target": "app","public": "www","ignore": ["firebase.json"], "rewrites": [{"source": "**","destination": "/index.html"}] }]} + - name: Populate Firebase JSON + run: | + FIREBASE_JSON_HOSTING=$(jq -n \ + --arg target "${{ env.FIREBASE_HOSTING_TARGET }}" \ + --arg public "www" \ + --argjson ignore '["firebase.json"]' \ + --argjson rewrites '[{"source": "**","destination": "/index.html"}]' \ + '$ARGS.named' + ) + FIREBASE_JSON=$(jq -n \ + --argjson hosting "[$FIREBASE_JSON_HOSTING]" \ + '$ARGS.named' + ) + echo $FIREBASE_JSON | jq '.' + echo $FIREBASE_JSON > firebase.json + + # Deploy to firebase + - id: deploy + uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: "${{ secrets.GITHUB_TOKEN }}" + firebaseServiceAccount: "${{ env.FIREBASE_SERVICE_ACCOUNT }}" + projectId: "${{ env.FIREBASE_PROJECT_ID }}" + channelId: "${{ env.FIREBASE_HOSTING_CHANNEL }}" + target: "${{ env.FIREBASE_HOSTING_TARGET }}" + expires: "30d" +################################################################################## +# Useful Links +################################################################################## +# https://firebase.google.com/docs/hosting/full-config +# https://firebase.google.com/docs/cli/targets + +# https://www.baeldung.com/linux/jq-command-json +# https://jqlang.github.io/jq/manual/ +# https://jqplay.org/ + +# echo $FIREBASE_JSON | jq '.hosting[0]' diff --git a/packages/actions/templates/index.ts b/packages/actions/templates/index.ts new file mode 100644 index 0000000000..b5495b34d7 --- /dev/null +++ b/packages/actions/templates/index.ts @@ -0,0 +1,6 @@ +import { AppBuild } from "./app-build/config"; +import { DeployFirebase } from "./deploy-firebase/config"; +import { PRCreateContent } from "./pr-create-content/config"; +import { PRPreviewFirebase } from "./pr-preview-firebase/config"; + +export const ACTION_TEMPLATES = { AppBuild, DeployFirebase, PRCreateContent, PRPreviewFirebase }; diff --git a/packages/actions/templates/pr-create-content/config.ts b/packages/actions/templates/pr-create-content/config.ts new file mode 100644 index 0000000000..914efb33f5 --- /dev/null +++ b/packages/actions/templates/pr-create-content/config.ts @@ -0,0 +1,25 @@ +import { IActionConfig } from "../../models"; + +export const PRCreateContent: IActionConfig = { + name: "PR Create Content", + description: "Automatically create a PR when content branches updated", + templatePath: "pr-create-content/template.yml", + inputs: () => [ + { + name: "PUSH_TARGET_BRANCH", + description: "Branch pattern matched for creating PRs from", + defaultValue: "content/*", + }, + ], + secrets: [ + { + name: "(permissions) see details", + description: + "https://github.com/marketplace/actions/create-pull-request#workflow-permissions", + }, + ], + metadata: { + id: "pr_create_content", + version: "1.0.0", + }, +}; diff --git a/packages/actions/templates/pr-create-content/template.yml b/packages/actions/templates/pr-create-content/template.yml new file mode 100644 index 0000000000..66ee9acdc6 --- /dev/null +++ b/packages/actions/templates/pr-create-content/template.yml @@ -0,0 +1,38 @@ +################################################################################## +# About +################################################################################## +# Create a PR whenever code pushed to new content branches +# Uses gh cli https://cli.github.com/manual/gh_pr_create + +################################################################################## +# Configuration +################################################################################## +# See https://github.com/marketplace/actions/create-pull-request#workflow-permissions + +################################################################################## +# Triggers +# Specify conditions to run workflow. # See more information at: +# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows +################################################################################## +on: + push: + branches: + - "%{PUSH_TARGET_BRANCH}" + +################################################################################## +# Main Code +################################################################################## + +name: PR - Create Content +jobs: + pr_create: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: | + gh pr list --base main --head ${{github.ref_name}} + gh pr create --base main --head ${{github.ref_name}} --title 'Merge ${{github.ref_name}}' --body 'Created by Github action' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Allow action to continue if PR already exists + continue-on-error: true diff --git a/packages/actions/templates/pr-preview-firebase/config.ts b/packages/actions/templates/pr-preview-firebase/config.ts new file mode 100644 index 0000000000..92c94fd5bd --- /dev/null +++ b/packages/actions/templates/pr-preview-firebase/config.ts @@ -0,0 +1,38 @@ +import { IActionConfig } from "../../models"; + +export const PRPreviewFirebase: IActionConfig = { + name: "PR Preview - Firebase", + description: "Build and deploy PR preview to firebase", + templatePath: "pr-preview-firebase/template.yml", + requires: [{ name: "App Build" }], + inputs: () => [ + { + name: "PR_LABEL_TRIGGER", + description: "Specific label that must be manually applied in order to trigger preview", + defaultValue: "Test - Preview", + }, + { + name: "PR_TARGET_BRANCH", + description: "Branch name or pattern required as target for PR to trigger", + defaultValue: "main", + }, + { name: "FIREBASE_PROJECT_ID", description: "ID of firebase project used", required: true }, + + { + name: "FIREBASE_HOSTING_TARGET", + description: "Optional override target if using multiple hosting sites for firebase project", + defaultValue: "", + }, + ], + secrets: [ + { + name: "FIREBASE_SERVICE_ACCOUNT", + description: "JSON export of firebase service account (from console)", + required: true, + }, + ], + metadata: { + id: "pr_preview_firebase", + version: "1.0.0", + }, +}; diff --git a/packages/actions/templates/pr-preview-firebase/template.yml b/packages/actions/templates/pr-preview-firebase/template.yml new file mode 100644 index 0000000000..d99fca980b --- /dev/null +++ b/packages/actions/templates/pr-preview-firebase/template.yml @@ -0,0 +1,120 @@ +################################################################################## +# About +################################################################################## +# Build and deploy app to firebase preview channel + +################################################################################## +# Configuration +################################################################################## + +env: + PR_LABEL_TRIGGER: "%{PR_LABEL_TRIGGER}" # | Specific label that must be manually applied in order to trigger preview + PR_TARGET_BRANCH: "%{PR_TARGET_BRANCH}" # | Branch name or pattern required as target for PR to trigger + FIREBASE_PROJECT_ID: "%{FIREBASE_PROJECT_ID}" # | ID of firebase project used (in case of multiple deployment targets just specify default) + FIREBASE_HOSTING_TARGET: "%{FIREBASE_HOSTING_TARGET}" # | Optional override if using multiple hosting target sites (default target project ID) + FIREBASE_SERVICE_ACCOUNT: ${{secrets.FIREBASE_SERVICE_ACCOUNT}} # | JSON export of firebase service account (from console) +################################################################################## +# Triggers +# Specify conditions to run workflow. # See more information at: +# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows +################################################################################## +on: + pull_request: + types: [labeled, synchronize] + branches: + - "%{PR_TARGET_BRANCH}" + +################################################################################## +# Main Code +################################################################################## +name: PR Preview - Firebase +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +concurrency: + group: "pr_preview_firebase" + cancel-in-progress: true + +jobs: + build_action: + if: contains(github.event.pull_request.labels.*.name, '%{PR_LABEL_TRIGGER}') + uses: ./.github/workflows/app-build.yml + with: + artifact-name: www + secrets: inherit + + deploy: + needs: build_action + runs-on: ubuntu-latest + outputs: + urls: ${{ steps.deploy.outputs.urls }} + steps: + # Extract build artifact + - uses: actions/checkout@v3 + - name: Download Build Artifact + uses: actions/download-artifact@v3 + with: + name: www + - name: Extract Build folder + run: | + mkdir www + tar -xf artifact.tar --directory www + + # Ensure FIREBASE_HOSTING_TARGET set (default fallback to projectId) + - name: Populate Env + if: ${{env.FIREBASE_HOSTING_TARGET == ''}} + run: echo "FIREBASE_HOSTING_TARGET=${{env.FIREBASE_PROJECT_ID}}" >> "$GITHUB_ENV" + + # Create a .firebaserc file mapping any firebase deployment host targets (required if multi-host projects) + # e.g. {"projects": {"default": "my_app"},"targets": {"my_app": {"hosting": {"my_app_dev":["my_app_dev"]} } } + - name: Populate Firebase Targets + run: | + FIREBASE_RC_TARGETS=$(jq -n \ + --argjson "${{env.FIREBASE_PROJECT_ID}}" \ + '{"hosting":{"${{env.FIREBASE_HOSTING_TARGET}}":["${{env.FIREBASE_HOSTING_TARGET}}"]}}' \ + '$ARGS.named' + ) + FIREBASE_RC=$(jq -n \ + --argjson projects '{"default":"${{env.FIREBASE_PROJECT_ID}}"}' \ + --argjson targets "$FIREBASE_RC_TARGETS" \ + '$ARGS.named' + ) + echo $FIREBASE_RC | jq '.' + echo $FIREBASE_RC > .firebaserc + + # Create a firebase.json file to handle single-page-app hosting redirects + # e.g. {"hosting": [{"target": "app","public": "www","ignore": ["firebase.json"], "rewrites": [{"source": "**","destination": "/index.html"}] }]} + - name: Populate Firebase JSON + run: | + FIREBASE_JSON_HOSTING=$(jq -n \ + --arg target "${{ env.FIREBASE_HOSTING_TARGET }}" \ + --arg public "www" \ + --argjson ignore '["firebase.json"]' \ + --argjson rewrites '[{"source": "**","destination": "/index.html"}]' \ + '$ARGS.named' + ) + FIREBASE_JSON=$(jq -n \ + --argjson hosting "[$FIREBASE_JSON_HOSTING]" \ + '$ARGS.named' + ) + echo $FIREBASE_JSON | jq '.' + echo $FIREBASE_JSON > firebase.json + + # Deploy to firebase + - id: deploy + uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: "${{ secrets.GITHUB_TOKEN }}" + firebaseServiceAccount: "${{ env.FIREBASE_SERVICE_ACCOUNT }}" + projectId: "${{ env.FIREBASE_PROJECT_ID }}" + target: "${{ env.FIREBASE_HOSTING_TARGET }}" + expires: "30d" +################################################################################## +# Useful Links +################################################################################## +# https://firebase.google.com/docs/hosting/full-config +# https://firebase.google.com/docs/cli/targets + +# https://www.baeldung.com/linux/jq-command-json +# https://jqlang.github.io/jq/manual/ +# https://jqplay.org/ + +# echo $FIREBASE_JSON | jq '.hosting[0]' diff --git a/packages/actions/tsconfig.json b/packages/actions/tsconfig.json new file mode 100644 index 0000000000..867f298cec --- /dev/null +++ b/packages/actions/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + /* Basic Options */ + "outDir": "dist", + "typeRoots": ["node_modules/@types"], + "declaration": true, + "skipLibCheck": true, + "lib": ["es2016", "dom"], + "target": "es5", + "esModuleInterop": true + }, + "include": ["lib/index.ts"], + "exclude": ["**/*.d.ts", "dist", "node_modules"] +} diff --git a/packages/api/.eslintrc.js b/packages/api/.eslintrc.js index 3f428e3def..463da61709 100644 --- a/packages/api/.eslintrc.js +++ b/packages/api/.eslintrc.js @@ -18,8 +18,20 @@ module.exports = { "@typescript-eslint/explicit-module-boundary-types": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-types": "off", + "no-restricted-imports": [ + "error", + { + paths: [ + { + name: "@nestjs/sequelize", + importNames: ["InjectConnection", "InjectModel"], + message: "Do not inject from sequelize. Use deployment service instead", + }, + ], + }, + ], "prettier/prettier": [ - "warning", + 1, { endOfLine: "auto", }, diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index eb35afb45b..b49431a967 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -49,4 +49,4 @@ EXPOSE 3000 HEALTHCHECK --interval=12s --timeout=12s --start-period=30s \ CMD node dist/healthcheck.js # Start server command -CMD ["node", "dist/main"] +CMD ["node", "dist/main.js"] diff --git a/packages/api/README.md b/packages/api/README.md index 1acf700521..450ab3c094 100644 --- a/packages/api/README.md +++ b/packages/api/README.md @@ -21,7 +21,7 @@ $ yarn workspaces focus api $ yarn start # watch mode -$ yarn start:dev +$ yarn start:watch # production mode $ yarn start:prod diff --git a/packages/api/package.json b/packages/api/package.json index 5721f61478..8f71ad8c15 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,12 +1,12 @@ { "name": "api", - "version": "1.2.7", + "version": "1.3.0", "scripts": { "prebuild": "rimraf dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "start": "nest start", - "start:dev": "nest start --watch", + "start:watch": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", @@ -19,25 +19,24 @@ "docker:run": "docker run -p 3000:3000 --name apps-api --rm idems/apps-api:$npm_package_version" }, "dependencies": { - "@nestjs/common": "7.6.15", - "@nestjs/config": "^0.6.3", - "@nestjs/core": "7.6.15", - "@nestjs/event-emitter": "^1.0.0", - "@nestjs/platform-express": "7.6.15", - "@nestjs/sequelize": "0.2.0", - "@nestjs/swagger": "^4.8.2", + "@nestjs/common": "9.4.0", + "@nestjs/config": "^2.3.1", + "@nestjs/core": "9.4.0", + "@nestjs/event-emitter": "^1.4.1", + "@nestjs/platform-express": "9.4.0", + "@nestjs/sequelize": "9.0.2", + "@nestjs/swagger": "^6.3.0", "dotenv": "^16.0.0", "fs-extra": "^10.0.0", "pg": "^8.6.0", "reflect-metadata": "^0.1.13", - "rimraf": "^3.0.2", - "rxjs": "^6.6.6", - "sequelize": "6.6.2", - "sequelize-typescript": "2.1.0", - "swagger-ui-express": "^4.1.6", - "ts-node": "10.0.0", + "rxjs": "^7.8.1", + "sequelize": "6.31.0", + "sequelize-typescript": "2.1.5", + "swagger-ui-express": "^4.6.2", + "ts-node": "^10.8.0", "typescript": "4.3.5", - "umzug": "3.0.0-beta.16" + "umzug": "3.2.1" }, "devDependencies": { "@nestjs/cli": "^7.6.0", @@ -49,13 +48,14 @@ "@types/sequelize": "4.28.9", "@types/supertest": "^2.0.10", "@types/ws": "^7.4.6", - "@typescript-eslint/eslint-plugin": "^4.19.0", - "@typescript-eslint/parser": "^4.19.0", - "eslint": "^7.22.0", + "@typescript-eslint/eslint-plugin": "^5.57.1", + "@typescript-eslint/parser": "5.57.1", + "eslint": "^8.12.0", "eslint-config-prettier": "^8.1.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^26.6.3", "prettier": "^2.4.1", + "rimraf": "^5.0.0", "supertest": "^6.1.3", "ts-jest": "^26.5.4", "ts-loader": "^8.0.18", diff --git a/packages/api/spec-export.json b/packages/api/spec-export.json index 484ef15531..fc4c4b9792 100644 --- a/packages/api/spec-export.json +++ b/packages/api/spec-export.json @@ -1,195 +1,21 @@ { "openapi": "3.0.0", - "info": { - "title": "IDEMS Apps API", - "description": "App-Server Communication", - "version": "1.2.7", - "contact": {} - }, - "tags": [ - { - "name": "api", - "description": "" - } - ], - "servers": [ - { - "url": "" - } - ], - "components": { - "schemas": { - "JSONB": { - "type": "object", - "properties": {} - }, - "ContactFieldDto": { - "type": "object", - "properties": { - "app_user_id": { - "type": "string", - "description": "App user ID" - }, - "app_deployment_name": { - "type": "string", - "description": "Name of app deployment", - "default": "" - }, - "app_version": { - "type": "string", - "description": "Current app version", - "default": "0.0.0" - }, - "contact_fields": { - "description": "Contact Fields from app", - "default": {}, - "allOf": [ - { - "$ref": "#/components/schemas/JSONB" - } - ] - }, - "device_info": { - "description": "Device info from app", - "default": {}, - "allOf": [ - { - "$ref": "#/components/schemas/JSONB" - } - ] - } - }, - "required": [ - "app_user_id", - "app_deployment_name", - "app_version", - "contact_fields", - "device_info" - ] - }, - "UserFeedbackDto": { - "type": "object", - "properties": { - "app_user_id": { - "type": "string", - "description": "App user ID" - }, - "app_deployment_name": { - "type": "string", - "description": "Name of app deployment", - "default": "" - }, - "app_version": { - "type": "string", - "description": "Current app version", - "default": "0.0.0" - }, - "app_user_record_id": { - "type": "number", - "description": "Local ID for local db record" - }, - "data": { - "description": "Feedback entry", - "allOf": [ - { - "$ref": "#/components/schemas/JSONB" - } - ] - } - }, - "required": [ - "app_user_id", - "app_deployment_name", - "app_version", - "app_user_record_id", - "data" - ] - }, - "UserNotificationInteractionDto": { - "type": "object", - "properties": { - "app_user_id": { - "type": "string", - "description": "App user ID" - }, - "app_deployment_name": { - "type": "string", - "description": "Name of app deployment", - "default": "" - }, - "app_version": { - "type": "string", - "description": "Current app version", - "default": "0.0.0" - }, - "app_user_record_id": { - "type": "number", - "description": "Local ID for local db record" - }, - "data": { - "description": "Notification interaction entry", - "allOf": [ - { - "$ref": "#/components/schemas/JSONB" - } - ] - } - }, - "required": [ - "app_user_id", - "app_deployment_name", - "app_version", - "app_user_record_id", - "data" - ] - }, - "STRING": { - "type": "object", - "properties": {} - }, - "TableColumnMappingDto": { - "type": "object", - "properties": { - "columns": { - "description": "Column Field Mapping", - "default": [ - { - "field_name": "test_text", - "field_type": "text" - }, - { - "field_name": "test_integer", - "field_type": "integer" - }, - { - "field_name": "test_number", - "field_type": "number" - }, - { - "field_name": "test_date", - "field_type": "date" - }, - { - "field_name": "test_boolean", - "field_type": "boolean" - } - ], - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["columns"] - } - } - }, "paths": { "/status": { "get": { "operationId": "DefaultController_checkStatus", "summary": "Check server status", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" @@ -201,13 +27,25 @@ "get": { "operationId": "AppUsersController_findAll", "summary": "List users", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" } }, - "tags": ["Users"] + "tags": [ + "Users" + ] } }, "/app_users/{app_user_id}": { @@ -222,6 +60,15 @@ "schema": { "type": "string" } + }, + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } } ], "responses": { @@ -229,12 +76,23 @@ "description": "" } }, - "tags": ["Users"] + "tags": [ + "Users" + ] }, "post": { "operationId": "AppUsersController_setUserData", "summary": "Update user profile", "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + }, { "name": "app_user_id", "required": true, @@ -266,27 +124,59 @@ } } }, - "tags": ["Users"] + "tags": [ + "Users" + ] } }, "/contact_fields": { "get": { "operationId": "ContactFieldController_findAll", "summary": "List contact field entries", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" } }, - "tags": ["Contact Fields"] + "tags": [ + "Contact Fields" + ] } }, "/contact_fields/{app_user_id}": { "post": { "operationId": "ContactFieldController_setUserContactFields", "summary": "Set User Contact Fields", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + }, + { + "name": "app_user_id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { @@ -309,25 +199,49 @@ } } }, - "tags": ["Contact Fields"] + "tags": [ + "Contact Fields" + ] } }, "/app_feedback": { "get": { "operationId": "AppFeedbackController_findAll", "summary": "List all feedback", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" } }, - "tags": ["Feedback"] + "tags": [ + "Feedback" + ] }, "post": { "operationId": "AppFeedbackController_addUserFeedback", "summary": "Add feedback entry", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "requestBody": { "required": true, "content": { @@ -350,25 +264,49 @@ } } }, - "tags": ["Feedback"] + "tags": [ + "Feedback" + ] } }, "/app_notification_interaction": { "get": { "operationId": "AppNotificationInteractionController_findAll", "summary": "List all notification interactions", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" } }, - "tags": ["Notification Interaction"] + "tags": [ + "Notification Interaction" + ] }, "post": { "operationId": "AppNotificationInteractionController_addUserNotificationInteraction", "summary": "Add notification interaction entry", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "requestBody": { "required": true, "content": { @@ -391,14 +329,26 @@ } } }, - "tags": ["Notification Interaction"] + "tags": [ + "Notification Interaction" + ] } }, "/tables": { "get": { "operationId": "TablesController_listTables", "summary": "List tables", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "List of table_names", @@ -414,27 +364,51 @@ } } }, - "tags": ["DB Tables"] + "tags": [ + "DB Tables" + ] } }, "/tables/{table_name}": { "get": { "operationId": "TablesController_getTableMeta", "summary": "Get table meta", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "responses": { "200": { "description": "" } }, - "tags": ["DB Tables"] + "tags": [ + "DB Tables" + ] } }, "/tables/{table_name}/columns": { "get": { "operationId": "TablesController_getTableColumns", "summary": "Add columns to map raw field data", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "requestBody": { "required": true, "content": { @@ -457,12 +431,24 @@ } } }, - "tags": ["DB Tables"] + "tags": [ + "DB Tables" + ] }, "post": { "operationId": "TablesController_addMappedTableColumns", "summary": "Add columns to map raw field data", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "requestBody": { "required": true, "content": { @@ -485,12 +471,24 @@ } } }, - "tags": ["DB Tables"] + "tags": [ + "DB Tables" + ] }, "delete": { "operationId": "TablesController_removeMappedTableColumns", "summary": "Remove columns used to map raw field data", - "parameters": [], + "parameters": [ + { + "name": "x-deployment-db-name", + "in": "header", + "description": "Name of db for deployment to populate", + "schema": { + "type": "string", + "default": "plh" + } + } + ], "requestBody": { "required": true, "content": { @@ -513,8 +511,196 @@ } } }, - "tags": ["DB Tables"] + "tags": [ + "DB Tables" + ] + } + } + }, + "info": { + "title": "IDEMS Apps API", + "description": "App-Server Communication", + "version": "1.3.0", + "contact": {} + }, + "tags": [ + { + "name": "api", + "description": "" + } + ], + "servers": [ + { + "url": "" + } + ], + "components": { + "schemas": { + "JSONB": { + "type": "object", + "properties": {} + }, + "ContactFieldDto": { + "type": "object", + "properties": { + "app_user_id": { + "type": "string", + "description": "App user ID" + }, + "app_deployment_name": { + "type": "string", + "description": "Name of app deployment", + "default": "" + }, + "app_version": { + "type": "string", + "description": "Current app version", + "default": "0.0.0" + }, + "contact_fields": { + "description": "Contact Fields from app", + "default": {}, + "allOf": [ + { + "$ref": "#/components/schemas/JSONB" + } + ] + }, + "device_info": { + "description": "Device info from app", + "default": {}, + "allOf": [ + { + "$ref": "#/components/schemas/JSONB" + } + ] + } + }, + "required": [ + "app_user_id", + "app_deployment_name", + "app_version", + "contact_fields", + "device_info" + ] + }, + "UserFeedbackDto": { + "type": "object", + "properties": { + "app_user_id": { + "type": "string", + "description": "App user ID" + }, + "app_deployment_name": { + "type": "string", + "description": "Name of app deployment", + "default": "" + }, + "app_version": { + "type": "string", + "description": "Current app version", + "default": "0.0.0" + }, + "app_user_record_id": { + "type": "number", + "description": "Local ID for local db record" + }, + "data": { + "description": "Feedback entry", + "allOf": [ + { + "$ref": "#/components/schemas/JSONB" + } + ] + } + }, + "required": [ + "app_user_id", + "app_deployment_name", + "app_version", + "app_user_record_id", + "data" + ] + }, + "UserNotificationInteractionDto": { + "type": "object", + "properties": { + "app_user_id": { + "type": "string", + "description": "App user ID" + }, + "app_deployment_name": { + "type": "string", + "description": "Name of app deployment", + "default": "" + }, + "app_version": { + "type": "string", + "description": "Current app version", + "default": "0.0.0" + }, + "app_user_record_id": { + "type": "number", + "description": "Local ID for local db record" + }, + "data": { + "description": "Notification interaction entry", + "allOf": [ + { + "$ref": "#/components/schemas/JSONB" + } + ] + } + }, + "required": [ + "app_user_id", + "app_deployment_name", + "app_version", + "app_user_record_id", + "data" + ] + }, + "STRING": { + "type": "object", + "properties": {} + }, + "TableColumnMappingDto": { + "type": "object", + "properties": { + "columns": { + "description": "Column Field Mapping", + "default": [ + { + "field_name": "test_text", + "field_type": "text" + }, + { + "field_name": "test_integer", + "field_type": "integer" + }, + { + "field_name": "test_number", + "field_type": "number" + }, + { + "field_name": "test_date", + "field_type": "date" + }, + { + "field_name": "test_boolean", + "field_type": "boolean" + } + ], + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "columns" + ] } } } -} +} \ No newline at end of file diff --git a/packages/api/src/app.module.ts b/packages/api/src/app.module.ts index f509af4516..b68052c3da 100644 --- a/packages/api/src/app.module.ts +++ b/packages/api/src/app.module.ts @@ -5,15 +5,19 @@ import { SequelizeModule } from "@nestjs/sequelize"; import { USER_DB_CONFIG } from "./db/config"; import * as Endpoints from "./endpoints"; import { DefaultModule } from "./endpoints/default"; +import { DeploymentModule } from "./modules"; @Module({ imports: [ ConfigModule.forRoot(), EventEmitterModule.forRoot(), + DeploymentModule, + // TODO - this should be removed when all tables connect via middleware service SequelizeModule.forRoot({ ...USER_DB_CONFIG, + // name: environment.APP_DB_NAME, autoLoadModels: true, - // tables will be initialised via sequelizer + // tables will be initialised via sequelize synchronize: false, // TODO - expose env pooling options pool: { @@ -21,6 +25,9 @@ import { DefaultModule } from "./endpoints/default"; min: 0, idle: 10000, }, + hooks: { + // TODO - consider disabling connections after bootstrap + }, }), DefaultModule, Endpoints.AppUsersModule, @@ -29,5 +36,6 @@ import { DefaultModule } from "./endpoints/default"; Endpoints.AppNotificationInteractionModule, Endpoints.TablesModule, ], + providers: [], }) export class AppModule {} diff --git a/packages/api/src/db/index.ts b/packages/api/src/db/index.ts index 2329cf6eda..846123aaf0 100644 --- a/packages/api/src/db/index.ts +++ b/packages/api/src/db/index.ts @@ -1,3 +1,4 @@ +// TODO - not working in prod - should check if still required require("ts-node/register"); import * as path from "path"; @@ -8,93 +9,97 @@ import { Umzug, SequelizeStorage } from "umzug"; import { ADMIN_CLIENT_CONFIG, USER_DB_CONFIG } from "./config"; const MIGRATIONS_DIR = path.resolve(__dirname, "migrations"); -const APP_DB_NAME = environment.APP_DB_NAME; const APP_DB_PASSWORD = environment.APP_DB_PASSWORD; const APP_DB_USER = environment.APP_DB_USER; -/** - * Bootstrap app database and initial user - * NOTE - this could all be done outside the app - */ -export async function setupDB() { - const adminClient = new Client(ADMIN_CLIENT_CONFIG); - try { - await adminClient.connect(); - await setupTables(adminClient); - await setupUsers(adminClient); - await adminClient.end(); - await runMigrations(); - } catch (error) { - console.error(error); - console.error("Could not bootstrap DB"); - process.exit(1); - } -} +export class DBInstance { + constructor(private dbName = environment.APP_DB_NAME) {} -/** Create DB (if not exist) */ -async function setupTables(client: Client) { - const dbNamesQuery = await client.query("SELECT datname FROM pg_database"); - const dbNames = dbNamesQuery.rows.map((r) => r.datname); - if (!dbNames.includes(APP_DB_NAME)) { - console.log("create app db", APP_DB_NAME); - const createDBQuery = `CREATE DATABASE ${APP_DB_NAME};`; - await client.query(createDBQuery); + /** + * Bootstrap app database and initial user + * NOTE - this could all be done outside the app + */ + public async setup() { + // create an admin client to create new tables and users as required + const adminClient = new Client(ADMIN_CLIENT_CONFIG); + try { + await adminClient.connect(); + await this.setupTables(adminClient); + await this.setupUsers(adminClient); + await adminClient.end(); + // create additional client on target db to perform migrations + const migrationClient = new Sequelize({ ...USER_DB_CONFIG, database: this.dbName }); + await this.runMigrations(migrationClient); + await migrationClient.close(); + } catch (error) { + console.error(error); + console.error("Could not bootstrap DB"); + process.exit(1); + } } -} -/** Create USER (if not exist)*/ -async function setupUsers(client: Client) { - const usersQuery = await client.query("SELECT usename FROM pg_catalog.pg_user"); - const userNames = usersQuery.rows.map((r) => r.usename); - if (!userNames.includes(APP_DB_USER)) { - const createUserQuery = `CREATE USER ${APP_DB_USER} WITH ENCRYPTED PASSWORD '${APP_DB_PASSWORD}';`; - await client.query(createUserQuery); - // Grant priviledges - console.log("grant priviledges"); - const privilegesQuery = `GRANT ALL PRIVILEGES ON DATABASE ${APP_DB_NAME} TO ${APP_DB_USER};`; - await client.query(privilegesQuery); + /** Create DB (if not exist) */ + private async setupTables(client: Client) { + const dbNamesQuery = await client.query("SELECT datname FROM pg_database"); + const dbNames = dbNamesQuery.rows.map((r) => r.datname); + if (!dbNames.includes(this.dbName)) { + console.log("create app db", this.dbName); + const createDBQuery = `CREATE DATABASE ${this.dbName};`; + await client.query(createDBQuery); + } } -} -/** - * Perform all listed database migration functions as found in local migrations folder - * For more info see: https://github.com/sequelize/umzug - */ -async function runMigrations() { - console.log("[Migration] start"); - const sequelize = new Sequelize(USER_DB_CONFIG); - const migrator = new Umzug({ - migrations: { - // files might be local typescript or the compiled js files - // in case compiled ignore type definitions - glob: ["*.{js,ts}", { cwd: MIGRATIONS_DIR, ignore: ["*.d.ts"] }], - }, - context: sequelize.getQueryInterface(), - storage: new SequelizeStorage({ sequelize }), - logger: console, - }); - const pending = await migrator.pending(); - console.log("[Migrations] pending", pending); - try { - await migrator.up(); - // await migrator.down({ to: "005-add-app_deployment-columns.js" }); - const executed = await migrator.executed(); - console.log("[Migrations] executed", executed); - console.log("[Migration] complete"); - } catch (error) { - console.error("[Migration] error", error); + /** Create USER (if not exist)*/ + private async setupUsers(client: Client) { + const usersQuery = await client.query("SELECT usename FROM pg_catalog.pg_user"); + const userNames = usersQuery.rows.map((r) => r.usename); + if (!userNames.includes(APP_DB_USER)) { + const createUserQuery = `CREATE USER ${APP_DB_USER} WITH ENCRYPTED PASSWORD '${APP_DB_PASSWORD}';`; + await client.query(createUserQuery); + // Grant priviledges + console.log("grant priviledges"); + const privilegesQuery = `GRANT ALL PRIVILEGES ON DATABASE ${this.dbName} TO ${APP_DB_USER};`; + await client.query(privilegesQuery); + } } - await sequelize.close(); -} + /** + * Perform all listed database migration functions as found in local migrations folder + * For more info see: https://github.com/sequelize/umzug + */ + private async runMigrations(client: Sequelize) { + console.log("[Migration] start"); + const migrator = new Umzug({ + migrations: { + // files might be local typescript or the compiled js files + // in case compiled ignore type definitions + glob: ["*.{js,ts}", { cwd: MIGRATIONS_DIR, ignore: ["*.d.ts"] }], + }, + context: client.getQueryInterface(), + storage: new SequelizeStorage({ sequelize: client }), + logger: console, + }); + const pending = await migrator.pending(); + console.log("[Migrations] pending", pending); + try { + await migrator.up(); + // await migrator.down({ to: "005-add-app_deployment-columns.js" }); + const executed = await migrator.executed(); + console.log("[Migrations] executed", executed); + console.log("[Migration] complete"); + } catch (error) { + console.error("[Migration] error", error); + } + } -/** - * Example to call migrator rollback to specific version - * Can be called before applying pending or calling up - * @param migrator - * @param migrationToRollback applies down methods on ALL migrations from latest to named migration inclusively - * @example await this.rollbackDB(migrator,"004-create-app_feedback.js") - */ -async function rollbackDB(migrator: Umzug, migrationToRollback: string) { - return migrator.down({ to: migrationToRollback }); + /** + * Example to call migrator rollback to specific version + * Can be called before applying pending or calling up + * @param migrator + * @param migrationToRollback applies down methods on ALL migrations from latest to named migration inclusively + * @example await this.rollbackDB(migrator,"004-create-app_feedback.js") + */ + private async rollbackDB(migrator: Umzug, migrationToRollback: string) { + return migrator.down({ to: migrationToRollback }); + } } diff --git a/packages/api/src/endpoints/app_feedback/app_feedback.controller.ts b/packages/api/src/endpoints/app_feedback/app_feedback.controller.ts index 08384b2395..531f21a417 100644 --- a/packages/api/src/endpoints/app_feedback/app_feedback.controller.ts +++ b/packages/api/src/endpoints/app_feedback/app_feedback.controller.ts @@ -3,6 +3,7 @@ import { UserFeedbackDto } from "./dto/add-user-feedback.dto"; import { AppFeedback } from "./app_feedback.model"; import { AppFeedbackService } from "./app_feedback.service"; import { ApiBody, ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; @ApiTags("Feedback") @Controller("app_feedback") @@ -11,6 +12,7 @@ export class AppFeedbackController { @Get() @ApiOperation({ summary: "List all feedback" }) + @DeploymentHeaders() findAll(): Promise { return this.appFeedbackService.findAll(); } @@ -23,6 +25,7 @@ export class AppFeedbackController { description: "Feedback Added", type: UserFeedbackDto, }) + @DeploymentHeaders() async addUserFeedback(@Body() data: UserFeedbackDto) { try { const res = await this.appFeedbackService.createOrUpdate(data); diff --git a/packages/api/src/endpoints/app_feedback/app_feedback.model.ts b/packages/api/src/endpoints/app_feedback/app_feedback.model.ts index 898542c506..7ccfdceea8 100644 --- a/packages/api/src/endpoints/app_feedback/app_feedback.model.ts +++ b/packages/api/src/endpoints/app_feedback/app_feedback.model.ts @@ -7,7 +7,7 @@ export class AppFeedback extends Model { app_user_id: string; @Column({ allowNull: false }) - app_user_record_id: string; + app_user_record_id: number; @Column({ allowNull: false }) app_deployment_name: string; diff --git a/packages/api/src/endpoints/app_feedback/app_feedback.service.ts b/packages/api/src/endpoints/app_feedback/app_feedback.service.ts index 7f10516231..e24fd8db10 100644 --- a/packages/api/src/endpoints/app_feedback/app_feedback.service.ts +++ b/packages/api/src/endpoints/app_feedback/app_feedback.service.ts @@ -1,16 +1,17 @@ import { Injectable } from "@nestjs/common"; -import { InjectModel } from "@nestjs/sequelize"; import { AppFeedback } from "./app_feedback.model"; import { UserFeedbackDto } from "./dto/add-user-feedback.dto"; +import { DeploymentService } from "src/modules/deployment.service"; @Injectable() export class AppFeedbackService { - constructor( - @InjectModel(AppFeedback) - private readonly model: typeof AppFeedback - ) {} + constructor(private deploymentService: DeploymentService) {} - async findAll(): Promise { + private get model() { + return this.deploymentService.model(AppFeedback); + } + + async findAll() { return this.model.findAll(); } diff --git a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.controller.ts b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.controller.ts index 42c0997295..f9292eff49 100644 --- a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.controller.ts +++ b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.controller.ts @@ -3,6 +3,7 @@ import { UserNotificationInteractionDto } from "./dto/add-user-notification-inte import { AppNotificationInteraction } from "./app_notification_interaction.model"; import { AppNotificationInteractionService } from "./app_notification_interaction.service"; import { ApiBody, ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; @ApiTags("Notification Interaction") @Controller("app_notification_interaction") @@ -13,6 +14,7 @@ export class AppNotificationInteractionController { @Get() @ApiOperation({ summary: "List all notification interactions" }) + @DeploymentHeaders() findAll(): Promise { return this.appNotificationInteractionService.findAll(); } @@ -25,6 +27,7 @@ export class AppNotificationInteractionController { description: "Notification Interaction Added", type: UserNotificationInteractionDto, }) + @DeploymentHeaders() async addUserNotificationInteraction(@Body() data: UserNotificationInteractionDto) { try { const res = await this.appNotificationInteractionService.createOrUpdate(data); diff --git a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.model.ts b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.model.ts index ac00dd13f9..d6c3e14284 100644 --- a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.model.ts +++ b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.model.ts @@ -1,4 +1,4 @@ -import { Column, DataType, Model, Table } from "sequelize-typescript"; +import { Column, DataType, Table } from "sequelize-typescript"; import { AppCommonModel } from "../common"; // NOTE - the table will not be created from this model, but instead via db migration scripts diff --git a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.service.ts b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.service.ts index 5e9e9e3478..121b4f0f7a 100644 --- a/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.service.ts +++ b/packages/api/src/endpoints/app_notification_interaction/app_notification_interaction.service.ts @@ -1,14 +1,15 @@ import { Injectable } from "@nestjs/common"; -import { InjectModel } from "@nestjs/sequelize"; import { AppNotificationInteraction } from "./app_notification_interaction.model"; import { UserNotificationInteractionDto } from "./dto/add-user-notification-interaction.dto"; +import { DeploymentService } from "src/modules/deployment.service"; @Injectable() export class AppNotificationInteractionService { - constructor( - @InjectModel(AppNotificationInteraction) - private readonly model: typeof AppNotificationInteraction - ) {} + constructor(private deploymentService: DeploymentService) {} + + get model() { + return this.deploymentService.model(AppNotificationInteraction); + } async findAll(): Promise { return this.model.findAll(); diff --git a/packages/api/src/endpoints/app_users/app_user.controller.ts b/packages/api/src/endpoints/app_users/app_user.controller.ts index 1d8eb1a56b..ca3bea546e 100644 --- a/packages/api/src/endpoints/app_users/app_user.controller.ts +++ b/packages/api/src/endpoints/app_users/app_user.controller.ts @@ -3,11 +3,16 @@ import { ContactFieldDto } from "./dto/set-user-data.dto"; import { AppUser } from "./app_user.model"; import { AppUsersService } from "./app_user.service"; import { ApiBody, ApiOperation, ApiParam, ApiResponse, ApiTags } from "@nestjs/swagger"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; +import { DeploymentService } from "src/modules/deployment.service"; @ApiTags("Users") @Controller("app_users") export class AppUsersController { - constructor(private readonly appUsersService: AppUsersService) {} + constructor( + private readonly appUsersService: AppUsersService, + private dbService: DeploymentService + ) {} // @Post() // create(@Body() createUserDto: CreateAppUserDto): Promise { @@ -16,8 +21,9 @@ export class AppUsersController { @Get() @ApiOperation({ summary: "List users" }) - findAll(): Promise { - return this.appUsersService.findAll(); + @DeploymentHeaders() + findAll() { + return this.dbService.model(AppUser).findAll(); } // @Get(":app_user_id") @@ -33,6 +39,7 @@ export class AppUsersController { @Get(":app_user_id") @ApiParam({ name: "app_user_id", type: String }) @ApiOperation({ summary: "Get user profile" }) + @DeploymentHeaders() findOne(@Param("app_user_id") app_user_id: string): Promise { return this.appUsersService.findOne(app_user_id); } @@ -46,6 +53,7 @@ export class AppUsersController { description: "User Updated", type: ContactFieldDto, }) + @DeploymentHeaders() async setUserData(@Param() params: { app_user_id: string }, @Body() data: ContactFieldDto) { try { const res = await this.appUsersService.setUserData(params.app_user_id, data); diff --git a/packages/api/src/endpoints/app_users/app_user.service.ts b/packages/api/src/endpoints/app_users/app_user.service.ts index c823ad1647..d9dcbbe043 100644 --- a/packages/api/src/endpoints/app_users/app_user.service.ts +++ b/packages/api/src/endpoints/app_users/app_user.service.ts @@ -1,14 +1,15 @@ import { Injectable } from "@nestjs/common"; -import { InjectModel } from "@nestjs/sequelize"; +import { DeploymentService } from "src/modules/deployment.service"; import { AppUser } from "./app_user.model"; import { ContactFieldDto } from "./dto/set-user-data.dto"; @Injectable() export class AppUsersService { - constructor( - @InjectModel(AppUser) - private readonly model: typeof AppUser - ) {} + constructor(private deploymentService: DeploymentService) {} + + get model() { + return this.deploymentService.model(AppUser); + } // create(app_user_id: string, createUserDto: ContactFieldDto): Promise { // const user = new AppUser(); @@ -18,10 +19,6 @@ export class AppUsersService { // return user.save(); // } - async findAll(): Promise { - return this.model.findAll(); - } - findOne(app_user_id: string): Promise { return this.model.findOne({ where: { diff --git a/packages/api/src/endpoints/contact_fields/contact_field.controller.ts b/packages/api/src/endpoints/contact_fields/contact_field.controller.ts index bff9b95fba..6c8eadb36f 100644 --- a/packages/api/src/endpoints/contact_fields/contact_field.controller.ts +++ b/packages/api/src/endpoints/contact_fields/contact_field.controller.ts @@ -1,18 +1,20 @@ import { Body, Controller, Get, HttpException, HttpStatus, Param, Post } from "@nestjs/common"; import { ContactFieldEntry } from "./contact_field.model"; import { ContactFieldService } from "./contact_field.service"; -import { ApiBody, ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; +import { ApiBody, ApiOperation, ApiParam, ApiResponse, ApiTags } from "@nestjs/swagger"; import { ContactFieldDto } from "../app_users/dto/set-user-data.dto"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; @ApiTags("Contact Fields") @Controller("contact_fields") export class ContactFieldController { - constructor(private readonly ContactFieldService: ContactFieldService) {} + constructor(private readonly contactFieldService: ContactFieldService) {} @Get() @ApiOperation({ summary: "List contact field entries" }) + @DeploymentHeaders() findAll(): Promise { - return this.ContactFieldService.findAll(); + return this.contactFieldService.findAll(); } // NOTE - assumes app_user_id will never be 'columns' -> Future refactor to own api endpoint @@ -20,15 +22,17 @@ export class ContactFieldController { @Post(":app_user_id") @ApiOperation({ summary: "Set User Contact Fields" }) @ApiBody({ type: ContactFieldDto }) + @ApiParam({ name: "app_user_id", type: "string" }) @ApiResponse({ status: 200, description: "User Updated", type: ContactFieldDto, }) + @DeploymentHeaders() async setUserContactFields(@Param() params: { app_user_id: string }, @Body() data: any) { const { app_user_id } = params; try { - const res = await this.ContactFieldService.setUserContactFields(app_user_id, data); + const res = await this.contactFieldService.setUserContactFields(app_user_id, data); return res; } catch (error) { throw new HttpException(error.message, HttpStatus.BAD_REQUEST); diff --git a/packages/api/src/endpoints/contact_fields/contact_field.service.ts b/packages/api/src/endpoints/contact_fields/contact_field.service.ts index 2194163dac..8dfc75fa19 100644 --- a/packages/api/src/endpoints/contact_fields/contact_field.service.ts +++ b/packages/api/src/endpoints/contact_fields/contact_field.service.ts @@ -1,34 +1,36 @@ import { Injectable } from "@nestjs/common"; -import { InjectConnection, InjectModel } from "@nestjs/sequelize"; import { EventEmitter2 } from "@nestjs/event-emitter"; -import { Sequelize } from "sequelize"; import { flattenJson } from "src/utils"; import { ContactFieldEntry } from "./contact_field.model"; import { CUSTOM_EVENTS } from "src/types"; +import { DeploymentService } from "src/modules/deployment.service"; /** Legacy binding to make it easier to track expected columns for a table - could be re-introduced for efficiency */ type ITableColumn = { column_name: string; data_type: string }; @Injectable() export class ContactFieldService { + private initialised = false; // columns: ITableColumn[]; // columnsHashmap: { [column_name: string]: ITableColumn }; - tableName: string; - constructor( - @InjectModel(ContactFieldEntry) - private readonly model: typeof ContactFieldEntry, - @InjectConnection() - private sequelize: Sequelize, - private eventEmitter: EventEmitter2 - ) { - this.tableName = this.model.tableName; - this.addFlattenJsonBindings(this.model); + constructor(private eventEmitter: EventEmitter2, private deploymentService: DeploymentService) {} + + get model() { + // only complete init on first request so that deployment service can configure db connections as required + if (!this.initialised) { + this.addFlattenJsonBindings(this.deploymentService.model(ContactFieldEntry)); + this.initialised = true; + } + return this.deploymentService.model(ContactFieldEntry); + } + get tableName() { + return this.model.tableName; } /** Add hook so that after docs are saved raw json is flattened */ - private async addFlattenJsonBindings(model: typeof ContactFieldEntry) { + private addFlattenJsonBindings(model: typeof ContactFieldEntry) { // Bind to db save to populate flattened json - model.addHook("afterSave", async (instance) => { + this.deploymentService.registerHook("afterSave", async (instance) => { const rawValuesChanged = instance.changed("raw" as any); if (rawValuesChanged) { await flattenJson({ @@ -45,7 +47,7 @@ export class ContactFieldService { async (columns) => { const existing = await this.model.findAll(); // force save hook to trigger by simpling updating the raw data field - await this.sequelize.transaction(async (t) => { + await this.deploymentService.client.transaction(async (t) => { const _updated = new Date().getTime(); return Promise.all( existing.map((entry) => { diff --git a/packages/api/src/endpoints/default/index.ts b/packages/api/src/endpoints/default/index.ts index cab8467838..7829936732 100644 --- a/packages/api/src/endpoints/default/index.ts +++ b/packages/api/src/endpoints/default/index.ts @@ -1,5 +1,7 @@ -import { Controller, Get, Module } from "@nestjs/common"; +import { Controller, Get, Headers, Module } from "@nestjs/common"; import { ApiOperation } from "@nestjs/swagger"; +import { environment } from "../../environment"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; @Controller() class DefaultController { @@ -8,10 +10,12 @@ class DefaultController { // redirect(@Res() res) { // return res.redirect("/api"); // } + @Get("status") @ApiOperation({ summary: "Check server status" }) - checkStatus() { - return "API Up"; + @DeploymentHeaders() + checkStatus(@Headers("x-deployment-db-name") db_name = environment.APP_DB_NAME) { + return `[${db_name}] API Up`; } } diff --git a/packages/api/src/endpoints/tables/tables.controller.ts b/packages/api/src/endpoints/tables/tables.controller.ts index aa35dcda10..8b1885c2d5 100644 --- a/packages/api/src/endpoints/tables/tables.controller.ts +++ b/packages/api/src/endpoints/tables/tables.controller.ts @@ -13,11 +13,12 @@ import { TableService } from "./tables.service"; import { ApiBody, ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; import { listTableColumns, listTableNames } from "src/utils"; import { DataType } from "sequelize-typescript"; +import { DeploymentHeaders } from "src/modules/deployment.decorators"; @ApiTags("DB Tables") @Controller("tables") export class TablesController { - constructor(private readonly TableService: TableService) {} + constructor(private readonly tableService: TableService) {} @Get() @ApiOperation({ summary: "List tables" }) @@ -27,6 +28,7 @@ export class TablesController { type: DataType.STRING, isArray: true, }) + @DeploymentHeaders() async listTables() { return listTableNames(); } @@ -36,6 +38,7 @@ export class TablesController { @ApiResponse({ status: 200, }) + @DeploymentHeaders() async getTableMeta(@Param() params: { table_name: string }) { // TODO - add general table meta get return or discovery doc return params.table_name; @@ -49,6 +52,7 @@ export class TablesController { description: "User Updated", type: TableColumnMappingDto, }) + @DeploymentHeaders() async getTableColumns(@Param() params: { table_name: string }) { return listTableColumns(params.table_name); } @@ -61,6 +65,7 @@ export class TablesController { description: "User Updated", type: TableColumnMappingDto, }) + @DeploymentHeaders() async addMappedTableColumns( @Param() params: { table_name: string }, @Body() data: TableColumnMappingDto @@ -68,7 +73,7 @@ export class TablesController { const { table_name } = params; const { columns } = data; try { - const res = await this.TableService.updateTableColumns(table_name, "add", columns); + const res = await this.tableService.updateTableColumns(table_name, "add", columns); // TODO re-map json (maybe param to pass?) return res; } catch (error) { @@ -84,6 +89,7 @@ export class TablesController { description: "User Updated", type: TableColumnMappingDto, }) + @DeploymentHeaders() async removeMappedTableColumns( @Param() params: { table_name: string }, @Body() data: TableColumnMappingDto @@ -91,7 +97,7 @@ export class TablesController { const { table_name } = params; const { columns } = data; try { - const res = await this.TableService.updateTableColumns(table_name, "drop", columns); + const res = await this.tableService.updateTableColumns(table_name, "drop", columns); return res; } catch (error) { throw new HttpException(error.message, HttpStatus.BAD_REQUEST); diff --git a/packages/api/src/endpoints/tables/tables.service.ts b/packages/api/src/endpoints/tables/tables.service.ts index 3b61b72249..9ac98ec6d3 100644 --- a/packages/api/src/endpoints/tables/tables.service.ts +++ b/packages/api/src/endpoints/tables/tables.service.ts @@ -1,17 +1,12 @@ import { Injectable } from "@nestjs/common"; import { EventEmitter2 } from "@nestjs/event-emitter"; -import { InjectConnection } from "@nestjs/sequelize"; -import { Sequelize } from "sequelize"; +import { DeploymentService } from "src/modules/deployment.service"; import { ColumnMappingType, CUSTOM_EVENTS, FieldDataTypeMapping } from "src/types"; import { arrayToHashmap, dropTableColumn, listTableColumns } from "src/utils"; @Injectable() export class TableService { - constructor( - @InjectConnection() - private sequelize: Sequelize, - private eventEmitter: EventEmitter2 - ) {} + constructor(private eventEmitter: EventEmitter2, private deploymentService: DeploymentService) {} /** Dynamically create or drop table columns */ async updateTableColumns(table_name: string, op: "add" | "drop", columns: ColumnMappingType[]) { @@ -23,7 +18,7 @@ export class TableService { // TODO - handle remapping of existing column // TODO - could process together as transaction for (const column of newColumns) { - const queryInterface = this.sequelize.getQueryInterface(); + const queryInterface = this.deploymentService.client.getQueryInterface(); const fieldTypeKey = column.field_type || "text"; if (!FieldDataTypeMapping.hasOwnProperty(fieldTypeKey)) { console.error(`[${fieldTypeKey}] not supported`); diff --git a/packages/api/src/environment/index.ts b/packages/api/src/environment/index.ts index 6adaad12e1..3253e2e97c 100644 --- a/packages/api/src/environment/index.ts +++ b/packages/api/src/environment/index.ts @@ -30,6 +30,7 @@ try { if (error) { // could not parse dotenv - either not provided or running in production without file console.error("dotenv parse fail, existing env keys:", Object.keys(process.env)); + console.error(error); } } catch (error) { console.error("caught error from parsed"); diff --git a/packages/api/src/main.ts b/packages/api/src/main.ts index 08e77db508..e44175aea0 100644 --- a/packages/api/src/main.ts +++ b/packages/api/src/main.ts @@ -2,13 +2,13 @@ import { NestFactory } from "@nestjs/core"; import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger"; import * as fs from "fs"; import { AppModule } from "./app.module"; -import { setupDB } from "./db"; +import { DBInstance } from "./db"; import { environment } from "./environment"; async function bootstrap() { // DB Bootstrap (could be managed outside repo) - await setupDB(); - // API Boostrap (auto connects to DB) + await new DBInstance().setup(); + // API Bootstrap (auto connects to DB) const app = await NestFactory.create(AppModule); app.enableCors(); // Make available on reverse proxy path (e.g. /api) diff --git a/packages/api/src/modules/deployment.decorators.ts b/packages/api/src/modules/deployment.decorators.ts new file mode 100644 index 0000000000..bc792415cb --- /dev/null +++ b/packages/api/src/modules/deployment.decorators.ts @@ -0,0 +1,57 @@ +import { applyDecorators } from "@nestjs/common"; +import { ApiHeader } from "@nestjs/swagger"; + +import { environment } from "src/environment"; + +/** + * Add query parameter to support db_name property used for deployments with default value + * NOTE - If excluded header will still be supported in queries, just not visible in API docs + * + * Shorthand for + * ``` + * @ApiHeader({ + name: "x-deployment-db-name", schema: { type: "string", default: environment.APP_DB_NAME } + }) + * ``` + * + * Can also include other decorators as required + * */ +export function DeploymentHeaders() { + return applyDecorators( + ApiHeader({ + name: "x-deployment-db-name", + description: "Name of db for deployment to populate", + schema: { type: "string", default: environment.APP_DB_NAME }, + }) + ); +} + +/** + * DEPRECATED CC 2023-04-28 - prefer use of service, keep for future reference + * Inject model for current deployment db in params + * + * @example + * ```ts + * '@'Get() + * findAll(@InjectDeploymentModel(AppUser) model: typeof AppUser): Promise { + * return model.findAll(); + * } + * ``` + */ +// export const InjectDeploymentModel = createParamDecorator( +// (entity: Function, ctx: ExecutionContext) => { +// console.log({ entity, ctx }); +// const connection = ctx.switchToHttp().getRequest(); +// const sequelize: Sequelize = connection.body.sequelize; +// console.log("inject deployment model", sequelize.config); +// const model = sequelize.model(entity.name); +// return model; +// } +// ); + +// https://stackoverflow.com/questions/60578332/use-global-nest-module-in-decorator/60608856#60608856 +// https://stackoverflow.com/questions/55560858/in-nest-js-is-it-possible-to-get-service-instance-inside-a-param-decorator + +// https://www.typescriptlang.org/docs/handbook/decorators.html + +// https://stackoverflow.com/questions/52106406/in-nest-js-how-to-get-a-service-instance-inside-a-decorator diff --git a/packages/api/src/modules/deployment.middleware.ts b/packages/api/src/modules/deployment.middleware.ts new file mode 100644 index 0000000000..29eef7a7b6 --- /dev/null +++ b/packages/api/src/modules/deployment.middleware.ts @@ -0,0 +1,37 @@ +import { Injectable, NestMiddleware } from "@nestjs/common"; +import { NextFunction, Request } from "express"; +import { environment } from "src/environment"; + +import { DeploymentService } from "./deployment.service"; + +/** + * Intercept all requests and use request headers to set the active connection to use + * as part of db operations + */ + +@Injectable() +export class DeploymentMiddleware implements NestMiddleware { + constructor(private service: DeploymentService) {} + + async use(req: Request, res: Response, next: NextFunction) { + // ensure all requests include a db_name parameter + if (!req.headers["x-deployment-db-name"]) { + req.headers["x-deployment-db-name"] = environment.APP_DB_NAME; + } + const dbName = req.headers["x-deployment-db-name"] as string; + + // Assign the correct sequelize client based on target deployment db + // Additionally update request itself to allow access to client + // either via service or request handler + await this.service.setDeploymentDB(dbName); + + /** + * DEPRECATED CC 2023-29-04 - prefer use service instead of parsing from body + * client returned from setDeploymentDB, also requires removing from any method + * that tries to convert full body to json + */ + // req.body.sequelize = client; + + next(); + } +} diff --git a/packages/api/src/modules/deployment.module.ts b/packages/api/src/modules/deployment.module.ts new file mode 100644 index 0000000000..70cc0ac5bb --- /dev/null +++ b/packages/api/src/modules/deployment.module.ts @@ -0,0 +1,23 @@ +import { Global, MiddlewareConsumer, Module, NestModule, RequestMethod } from "@nestjs/common"; +import { DeploymentMiddleware } from "./deployment.middleware"; +import { DeploymentService } from "./deployment.service"; + +@Global() +@Module({ + providers: [DeploymentService, DeploymentMiddleware], + exports: [DeploymentService, DeploymentMiddleware], +}) +/** + * Create a global module so that deployment services can be accessed from any controller/service + * + * Bind middleware so that all requests have db_name query param checked and relevent db connection + * attached to body of request + * + * Expose service and decorators to access model on relevant db + * + */ +export class DeploymentModule implements NestModule { + configure(consumer: MiddlewareConsumer) { + consumer.apply(DeploymentMiddleware).forRoutes({ path: "/**", method: RequestMethod.ALL }); + } +} diff --git a/packages/api/src/modules/deployment.service.ts b/packages/api/src/modules/deployment.service.ts new file mode 100644 index 0000000000..ab9d4d2347 --- /dev/null +++ b/packages/api/src/modules/deployment.service.ts @@ -0,0 +1,161 @@ +import { Injectable } from "@nestjs/common"; +import { ModuleRef } from "@nestjs/core"; +import { DBInstance } from "src/db"; + +import { Sequelize } from "sequelize-typescript"; +import { USER_DB_CONFIG } from "src/db/config"; +import { SequelizeModuleOptions } from "@nestjs/sequelize"; +import { EntitiesMetadataStorage } from "@nestjs/sequelize/dist/entities-metadata.storage"; +import { DEFAULT_CONNECTION_NAME } from "@nestjs/sequelize/dist/sequelize.constants"; +import { SequelizeHooks } from "sequelize/types/hooks"; + +@Injectable() +/** + * + * Keep track of connections to multiple admin and client databases + * Admin connections setup tables + * Client connections used for operations + * + * This is used instead of initialising sequelize via module import forRoot, + * as that will populate a single global service used in all requests whereas + * the api will want to switch connection depending on request + */ +export class DeploymentService { + /** Active sequelize client */ + public client: Sequelize; + + /** List of all user clients initialised */ + private userClients: Record = {}; + private globalClient: Sequelize; + private models: Function[]; + + private hooks: { hookType: keyof SequelizeHooks; fn: any }[] = []; + + constructor(private moduleRef: ModuleRef) { + DeploymentService.service = this; + } + + /** + * Provide access to any globally instantiated instance of service without injection + * (e.g. functional utilities) + * https://stackoverflow.com/questions/52665421/angular-inject-service-into-decorator + */ + public static getService(): DeploymentService { + if (!DeploymentService.service) { + throw new Error("DeploymentService not initialized"); + } + return DeploymentService.service; + } + private static service: DeploymentService | undefined = undefined; + + /** + * Access sequelize methods for a given model + * @param entity Sequelize model representation of db table and columns + */ + public model(entity: T) { + // Client init depends on middleware. Ensure currently in use + if (!this.client) { + throw new Error("Deployment client not initialized"); + } + const model = this.client.model(entity.name) as any; + return model as T; + } + + /** Specify sequelize hooks to apply to clients. Updates all existing clients and will be registered on future **/ + public registerHook(hookType: K, fn: SequelizeHooks[K]) { + for (const client of Object.values(this.userClients)) { + client.addHook(hookType, fn); + } + this.hooks.push({ hookType, fn }); + } + + /** Specify default db connection to be used for any subsequent operations */ + async setDeploymentDB(dbName: string) { + // Ensure sequelize has been initialised with default credentials to use as a base + if (!this.globalClient) { + this.globalClient = this.moduleRef.get(Sequelize, { strict: false }); + // TODO - want to prevent connection being used + this.models = EntitiesMetadataStorage.getEntitiesByConnection(DEFAULT_CONNECTION_NAME); + } + + // Create new client for custom db connection + if (!this.userClients[dbName]) { + await new DBInstance(dbName).setup(); + await this.createNewClient(dbName); + } + + this.client = this.userClients[dbName]; + return this.client; + } + + /** + * Create a new sequelize user client for the named DB + * @param dbName + */ + private async createNewClient(dbName: string) { + const userClient = await this.createConnectionFactory({ + ...USER_DB_CONFIG, + database: dbName, + autoLoadModels: true, + name: dbName, + // tables will be initialised via sequelize + synchronize: false, + // TODO - expose env pooling options + pool: { + max: 50, + min: 0, + idle: 10000, + }, + }); + // ensure all hooks are registered + for (const { hookType, fn } of this.hooks) { + userClient.addHook(hookType, fn); + } + // store globally to allow future access + this.userClients[dbName] = userClient; + } + + /** + * Adapted from nestjs/sequelize core module + * @param options + * @returns + */ + private async createConnectionFactory(options: SequelizeModuleOptions): Promise { + const sequelize = new Sequelize(options); + + if (!options.autoLoadModels) { + return sequelize; + } + + // Load default client models to new sequelize client + sequelize.addModels(this.models as any); + + await sequelize.authenticate(); + + if (typeof options.synchronize === "undefined" || options.synchronize) { + await sequelize.sync(options.sync); + } + return sequelize; + } +} + +// DEPRECATED - CC 2023-04-29 - prefer set sequelize client via service instead +// of extracting from request + +// @Injectable({ scope: Scope.REQUEST }) +// /** +// * Alternative to param decorator used for services +// * */ +// export class DeploymentRequestService { +// constructor(@Inject(REQUEST) private request: Request, private service: DeploymentService) {} + +// get(entity: T) { +// // TODO - add better typings +// const sequelize: Sequelize = (this.request.body as any).sequelize; +// const model = sequelize.model(entity.name) as any; +// return model as T; +// // NOTE - assumes already gone through middleware +// // const sequelize:Sequelize = this.request.body.sequelize +// // console.log("get model", this.request, this.service); +// } +// } diff --git a/packages/api/src/modules/index.ts b/packages/api/src/modules/index.ts new file mode 100644 index 0000000000..6df54a8617 --- /dev/null +++ b/packages/api/src/modules/index.ts @@ -0,0 +1 @@ +export * from "./deployment.module"; diff --git a/packages/api/src/utils/sequelize.utils.ts b/packages/api/src/utils/sequelize.utils.ts index 7dab5e4508..e661aad066 100644 --- a/packages/api/src/utils/sequelize.utils.ts +++ b/packages/api/src/utils/sequelize.utils.ts @@ -1,25 +1,39 @@ import { Sequelize } from "sequelize"; import SequelizeDefault from "sequelize"; -import { USER_DB_CONFIG } from "src/db/config"; import { arrayToHashmap } from "./data.utils"; import { listTableColumns } from "./sql.utils"; +import { DeploymentService } from "src/modules/deployment.service"; +import { USER_DB_CONFIG } from "src/db/config"; /** - * Wrapper methods provide access to a sequelize instance outside - * of regular providers + * Get the active client of the injected deployment service outside of provider environment */ -const sequelize = new Sequelize(USER_DB_CONFIG); +export function getActiveClient() { + return DeploymentService.getService().client; +} + +/** + * DEPRECATED CC 2023-04-29 + * Create a new client to interact with DB using default credentials + */ +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function createClient() { + return new Sequelize(USER_DB_CONFIG); +} export function getQueryInterface() { - return sequelize.getQueryInterface(); + const client = getActiveClient(); + return client.getQueryInterface(); } export function getSequelize() { - return sequelize; + const client = getActiveClient(); + return client; } export function getTableNames() { - return sequelize.getQueryInterface().showAllTables(); + const client = getActiveClient(); + return client.getQueryInterface().showAllTables(); } /** @@ -39,7 +53,8 @@ export async function flattenJson(options: { const { idColumnName, instance, tableName, jsonColumnName } = options; const jsonData: any = instance.toJSON(); const updateFields = await getMappedFieldsFromData(tableName, jsonData[jsonColumnName]); - const queryInterface = sequelize.getQueryInterface(); + const client = getActiveClient(); + const queryInterface = client.getQueryInterface(); return queryInterface.update(instance, tableName, updateFields, { [idColumnName]: jsonData[idColumnName], }); diff --git a/packages/api/src/utils/sql.utils.ts b/packages/api/src/utils/sql.utils.ts index 6c13f29240..090bf72a51 100644 --- a/packages/api/src/utils/sql.utils.ts +++ b/packages/api/src/utils/sql.utils.ts @@ -1,5 +1,5 @@ import { ITableColumn } from "../types"; -import { getSequelize } from "./sequelize.utils"; +import { getActiveClient } from "./sequelize.utils"; export async function listTableNames() { const query = ` @@ -44,8 +44,7 @@ export function dropTableColumn(table_name: string, column_name: string) { * */ export async function executeSQL(query: string, values: string[] = []) { - // TODO - might be way to pass existing connection - const sequelize = getSequelize(); + const sequelize = getActiveClient(); const res = await sequelize.query({ query, values }); return res; } diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 3dca3c1792..a56ecf5efa 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -13,5 +13,5 @@ "incremental": true, "typeRoots": ["./node_modules/@types"] }, - "include": ["src/**/*.ts","test/**/*.ts"] + "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/packages/app-data/assets/contents.json b/packages/app-data/assets/contents.json new file mode 100644 index 0000000000..b53b78609b --- /dev/null +++ b/packages/app-data/assets/contents.json @@ -0,0 +1,5685 @@ +{ + "android/icon-background.png": { + "filePath": "global/android/icon-background.png", + "md5Checksum": "4d74b997d4ac22f99b48f717ff9a3a07", + "size_kb": 6.4 + }, + "android/icon-foreground.png": { + "filePath": "global/android/icon-foreground.png", + "md5Checksum": "21703838b036bf47d9e7aadab8a0774d", + "size_kb": 31.4 + }, + "android/icon.png": { + "filePath": "global/android/icon.png", + "md5Checksum": "21703838b036bf47d9e7aadab8a0774d", + "size_kb": 31.4 + }, + "android/splash.png": { + "filePath": "global/android/splash.png", + "md5Checksum": "b0c03fe0d1c374ba04fa7d554f26bc01", + "size_kb": 123.3 + }, + "i18n/flags/gb.svg": { + "filePath": "global/i18n/flags/gb.svg", + "md5Checksum": "d3ddd6025a06a78535b0d432d14905bf", + "size_kb": 0.5 + }, + "i18n/flags/tz.svg": { + "filePath": "global/i18n/flags/tz.svg", + "md5Checksum": "4cba6f3545595d585cf1c89394955c71", + "size_kb": 0.5 + }, + "i18n/flags/za.svg": { + "filePath": "global/i18n/flags/za.svg", + "md5Checksum": "14e7052257d9914b613fc992186d2e90", + "size_kb": 0.8 + }, + "plh_audio/relax/relax_1.mp3": { + "filePath": "global/plh_audio/relax/relax_1.mp3", + "md5Checksum": "0d23366a438bc1a5faf3d445e389a39a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_1.mp3", + "md5Checksum": "936f7484ff27233427a9aba04af26cd3", + "size_kb": 356.2 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_1.mp3", + "md5Checksum": "f67195b5b8b16e13c27bea30e3daa3bf", + "size_kb": 425.5 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_1.mp3", + "md5Checksum": "661d966ecd4c3ac069007d4bf29d0a40", + "size_kb": 570 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_1.mp3", + "md5Checksum": "e50dbc959585eb83480887c083816412", + "size_kb": 521.3 + } + } + }, + "size_kb": 492.2 + }, + "plh_audio/relax/relax_10.mp3": { + "filePath": "global/plh_audio/relax/relax_10.mp3", + "md5Checksum": "f763a01ba394cb5b8d7ecc03e421d8e0", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_10.mp3", + "md5Checksum": "4cc3755f3c8c496de3e8fb9e8f59f65c", + "size_kb": 724.1 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_10.mp3", + "md5Checksum": "cb18fd93fb545ea1d800f554d21e47fd", + "size_kb": 804.3 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_10.mp3", + "md5Checksum": "690673d3804c5e2f5a96fc698910f854", + "size_kb": 942 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_10.mp3", + "md5Checksum": "b5dbea4ae785d3be159e155753815d39", + "size_kb": 813.8 + } + } + }, + "size_kb": 749 + }, + "plh_audio/relax/relax_11.mp3": { + "filePath": "global/plh_audio/relax/relax_11.mp3", + "md5Checksum": "b68baf7ff115191d18e42c0c6ad575b2", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_11.mp3", + "md5Checksum": "66e3c056942878fc3dc3956e5e406f54", + "size_kb": 400.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_11.mp3", + "md5Checksum": "d13d03fbf1cafa04bda723afc4dfaa7c", + "size_kb": 712.9 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_11.mp3", + "md5Checksum": "e0c4ac6bde25cd8b7c1a10410905b1dc", + "size_kb": 867 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_11.mp3", + "md5Checksum": "a2159af546cd63070cb48050aeeb46af", + "size_kb": 701.3 + } + } + }, + "size_kb": 806.5 + }, + "plh_audio/relax/relax_12.mp3": { + "filePath": "global/plh_audio/relax/relax_12.mp3", + "md5Checksum": "c752bb8fb7caeb3b13ed009c11e043c1", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_12.mp3", + "md5Checksum": "1a696c2ca734927203e0f99af05829e3", + "size_kb": 1027 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_12.mp3", + "md5Checksum": "38d7b22471d79595b0a00756e4cf5f9c", + "size_kb": 1152.9 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_12.mp3", + "md5Checksum": "90cd0e96caf4f8981c463f0f05e89447", + "size_kb": 1002 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_12.mp3", + "md5Checksum": "5fa21dee0c45a913b505e63b200ab528", + "size_kb": 537 + } + } + }, + "size_kb": 999.6 + }, + "plh_audio/relax/relax_13.mp3": { + "filePath": "global/plh_audio/relax/relax_13.mp3", + "md5Checksum": "93a3a74b2251968d06888ddab297e6ac", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_13.mp3", + "md5Checksum": "ef059cd6600700c3991bb1cf0a7d2642", + "size_kb": 666.2 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_13.mp3", + "md5Checksum": "88aecc28aeb0f09d5986557c30f0d902", + "size_kb": 728.4 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_13.mp3", + "md5Checksum": "b72428408ed5603d5f29c9beb80c2cc2", + "size_kb": 805.2 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_13.mp3", + "md5Checksum": "c18869efccd20b619546d194e63a8ac7", + "size_kb": 727.5 + } + } + }, + "size_kb": 721.6 + }, + "plh_audio/relax/relax_14.mp3": { + "filePath": "global/plh_audio/relax/relax_14.mp3", + "md5Checksum": "317c1409d3fd711862f044fde774fab4", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_14.mp3", + "md5Checksum": "27e51c9963e13613f31c2f72b8d83b9c", + "size_kb": 719.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_14.mp3", + "md5Checksum": "8de339d77e769aa27c3dc44073ee95f0", + "size_kb": 550 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_14.mp3", + "md5Checksum": "280835b8bca8e1537e33949ccb0c6b55", + "size_kb": 459.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_14.mp3", + "md5Checksum": "f3702f201ab1b56c014462b33a0b9e0d", + "size_kb": 338.3 + } + } + }, + "size_kb": 493.1 + }, + "plh_audio/relax/relax_15.mp3": { + "filePath": "global/plh_audio/relax/relax_15.mp3", + "md5Checksum": "a954491b926d1690d8975207f27b5b3a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_15.mp3", + "md5Checksum": "ba89eb53eb296e78fa5547d8dca32dbf", + "size_kb": 1001.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_15.mp3", + "md5Checksum": "226c3ceaa03d9531483ad2aeef04ea8d", + "size_kb": 626 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_15.mp3", + "md5Checksum": "cffb2b0b3e141b3b3f44af3642e516a9", + "size_kb": 648.8 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_15.mp3", + "md5Checksum": "93fbc698201eef2b010899d77286efe3", + "size_kb": 490.2 + } + } + }, + "size_kb": 516.7 + }, + "plh_audio/relax/relax_16.mp3": { + "filePath": "global/plh_audio/relax/relax_16.mp3", + "md5Checksum": "e05b7c0dec49d45225cf5311bd931233", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_16.mp3", + "md5Checksum": "3709f8502b6000d9c0c1245e28501c45", + "size_kb": 969.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_16.mp3", + "md5Checksum": "e2c9b173f2299a19300dda3297f0f49d", + "size_kb": 483.1 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_16.mp3", + "md5Checksum": "fa9f97cad1a7ecd52e41a3862a42386d", + "size_kb": 647.7 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_16.mp3", + "md5Checksum": "53c8f5f83ba4e4f756626dcbf35f54c6", + "size_kb": 428.3 + } + } + }, + "size_kb": 564.5 + }, + "plh_audio/relax/relax_17.mp3": { + "filePath": "global/plh_audio/relax/relax_17.mp3", + "md5Checksum": "7fa394d9131dd7a36ab842223644f82e", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_17.mp3", + "md5Checksum": "aacd24ca8bd4c98786d31e20a1ff7981", + "size_kb": 380.8 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_17.mp3", + "md5Checksum": "c3d9a77031fdea831f4d43069abf71c3", + "size_kb": 586.4 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_17.mp3", + "md5Checksum": "f5827ce4ba50660584b8c78b3f1f1f17", + "size_kb": 825.8 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_17.mp3", + "md5Checksum": "a29c36d1737e88714957a1ba7a56d7df", + "size_kb": 585.8 + } + } + }, + "size_kb": 544.1 + }, + "plh_audio/relax/relax_18.mp3": { + "filePath": "global/plh_audio/relax/relax_18.mp3", + "md5Checksum": "f1ced15e623ce6d21ea250317e602360", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_18.mp3", + "md5Checksum": "d5b61b234663e71f0c2abe98d5cee222", + "size_kb": 951.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_18.mp3", + "md5Checksum": "1d14318decf022374f050d4087e0b4b1", + "size_kb": 1384.3 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_18.mp3", + "md5Checksum": "304e682f2240cd8f2dd525a0367a2e1c", + "size_kb": 1096.9 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_18.mp3", + "md5Checksum": "7c4834c346ced3d97fbe20fac7a697ea", + "size_kb": 840 + } + } + }, + "size_kb": 1228.6 + }, + "plh_audio/relax/relax_19.mp3": { + "filePath": "global/plh_audio/relax/relax_19.mp3", + "md5Checksum": "91b71aa328f31c46b56bf7949448ae55", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_19.mp3", + "md5Checksum": "0c1b9a4fbc04151d5e4b8e5e3b8d941e", + "size_kb": 1708.6 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_19.mp3", + "md5Checksum": "6788460a6f2759c8832f4ea4b144d16b", + "size_kb": 2019.8 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_19.mp3", + "md5Checksum": "108d12711b2f9e1fd57a281c7f7934de", + "size_kb": 2070 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_19.mp3", + "md5Checksum": "e1d123c1eb56892fcd7ed298a13b3879", + "size_kb": 1796.3 + } + } + }, + "size_kb": 1746.5 + }, + "plh_audio/relax/relax_2.mp3": { + "filePath": "global/plh_audio/relax/relax_2.mp3", + "md5Checksum": "b3b6bf1fdc26305e89da438bb1a3657c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_2.mp3", + "md5Checksum": "e65e1dd6513bce7b8f972e3732f1b9f1", + "size_kb": 754.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_2.mp3", + "md5Checksum": "0afb1376968ba8140816e7ddc69b9850", + "size_kb": 688.8 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_2.mp3", + "md5Checksum": "d3ca3563a325e1a327f3c96aab1923bc", + "size_kb": 710.7 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_2.mp3", + "md5Checksum": "f02eddda65275a9c0047faeb4e7948ba", + "size_kb": 742.5 + } + } + }, + "size_kb": 712.7 + }, + "plh_audio/relax/relax_20.mp3": { + "filePath": "global/plh_audio/relax/relax_20.mp3", + "md5Checksum": "9131a3fecff580470e11d6735593260e", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_20.mp3", + "md5Checksum": "1e42cab3a5590772d47283bc16bdfaf3", + "size_kb": 1860 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_20.mp3", + "md5Checksum": "f56c7a4ce615ca6d13d8cec8f8961315", + "size_kb": 1847.3 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_20.mp3", + "md5Checksum": "981654ab1fe076d0e903ca3287d18d2b", + "size_kb": 2477.7 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_20.mp3", + "md5Checksum": "dcd84b8b857ea1c3b3f0503d77db1a95", + "size_kb": 1816.9 + } + } + }, + "size_kb": 1901.6 + }, + "plh_audio/relax/relax_21.mp3": { + "filePath": "global/plh_audio/relax/relax_21.mp3", + "md5Checksum": "9c12b2510304df021b5194d2b02a9899", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_21.mp3", + "md5Checksum": "5aedf4e1b5f9d5bb6ceef3cac9274ee0", + "size_kb": 768.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_21.mp3", + "md5Checksum": "753bd581f48c1b6af40f5fa13e03922b", + "size_kb": 611 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_21.mp3", + "md5Checksum": "d73af6510293a35dddc6efb4e9d4e214", + "size_kb": 878.3 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_21.mp3", + "md5Checksum": "edb41d0680a5a555eab7137cb470e7a3", + "size_kb": 607.5 + } + } + }, + "size_kb": 759.6 + }, + "plh_audio/relax/relax_22.mp3": { + "filePath": "global/plh_audio/relax/relax_22.mp3", + "md5Checksum": "aa62a24a6c519beb75c88e613acd2c71", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_22.mp3", + "md5Checksum": "2eda21db4b344f53af19aaca03c21cec", + "size_kb": 535 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_22.mp3", + "md5Checksum": "e4fad5a480de91bbf860007ebf3fa24d", + "size_kb": 377.8 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_22.mp3", + "md5Checksum": "645385ea855acd711ade67bbdd67a8d6", + "size_kb": 547.5 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_22.mp3", + "md5Checksum": "6f1ab9b6bd86483ddf26b0537e55b200", + "size_kb": 328.2 + } + } + }, + "size_kb": 429.8 + }, + "plh_audio/relax/relax_23.mp3": { + "filePath": "global/plh_audio/relax/relax_23.mp3", + "md5Checksum": "9550d5bac87fd1a97544dd886660d25e", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_23.mp3", + "md5Checksum": "cb86784350fbe8da26d0609d04cff9f3", + "size_kb": 637.5 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_23.mp3", + "md5Checksum": "0236b01f2f4b43d1f31bdcdfbf9a697b", + "size_kb": 360.6 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_23.mp3", + "md5Checksum": "62a89f08e6dad8b3906f1aba7bd410b8", + "size_kb": 459.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_23.mp3", + "md5Checksum": "6d51ee3f24248f30384b8b5c3ca0aaea", + "size_kb": 358.2 + } + } + }, + "size_kb": 500.4 + }, + "plh_audio/relax/relax_24.mp3": { + "filePath": "global/plh_audio/relax/relax_24.mp3", + "md5Checksum": "c3db4db42e097fcc942e15f6f067737a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_24.mp3", + "md5Checksum": "c438d32e3105b16e15ee735e98bc54e1", + "size_kb": 413.7 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_24.mp3", + "md5Checksum": "0403dd9016c3147205a1f62a0bccfa2a", + "size_kb": 404.3 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_24.mp3", + "md5Checksum": "6c8cc306f42e53b311554d10e7f2f47f", + "size_kb": 521.3 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_24.mp3", + "md5Checksum": "3912c232fce1a5e531673ccc32acffc0", + "size_kb": 371.3 + } + } + }, + "size_kb": 453.9 + }, + "plh_audio/relax/relax_3.mp3": { + "filePath": "global/plh_audio/relax/relax_3.mp3", + "md5Checksum": "54a8f411e01f5ef440d4275e3c111c3c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_3.mp3", + "md5Checksum": "7f5f5d8aead6b5e21ce7408f250f0773", + "size_kb": 349 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_3.mp3", + "md5Checksum": "66efb06717ae2e4fedc5b8cd0a3663f6", + "size_kb": 264.7 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_3.mp3", + "md5Checksum": "95988499b97fa9fc84f2caa41fee57b1", + "size_kb": 425.7 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_3.mp3", + "md5Checksum": "bc4af987d0a159c48d0df284b412dc92", + "size_kb": 296.3 + } + } + }, + "size_kb": 453.9 + }, + "plh_audio/relax/relax_4.mp3": { + "filePath": "global/plh_audio/relax/relax_4.mp3", + "md5Checksum": "f14b76a30bb3267a07968e7945bea98c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_4.mp3", + "md5Checksum": "19440f346688b5fbfabf8853a3083266", + "size_kb": 802.1 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_4.mp3", + "md5Checksum": "3cbc4995eb3cbcee1df0aa870588519c", + "size_kb": 862.4 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_4.mp3", + "md5Checksum": "709a455fe792883a25085e205e04dbc3", + "size_kb": 996.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_4.mp3", + "md5Checksum": "841f5fd8836bc8b24b65c19f4291e175", + "size_kb": 600.8 + } + } + }, + "size_kb": 998 + }, + "plh_audio/relax/relax_5.mp3": { + "filePath": "global/plh_audio/relax/relax_5.mp3", + "md5Checksum": "5cc39211a871f85a80d2d914ce2f9008", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_5.mp3", + "md5Checksum": "3002019be46830b48b31fb6b461d8416", + "size_kb": 463.6 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_5.mp3", + "md5Checksum": "c7c181194e648ddb9b2c4b7dc28465d3", + "size_kb": 590 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_5.mp3", + "md5Checksum": "1878a8b2fbb03cb9803099230a02cd6d", + "size_kb": 450.8 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_5.mp3", + "md5Checksum": "ad5435c21ec653ff99976a45d1df5e0f", + "size_kb": 291.4 + } + } + }, + "size_kb": 359.2 + }, + "plh_audio/relax/relax_6.mp3": { + "filePath": "global/plh_audio/relax/relax_6.mp3", + "md5Checksum": "cda7524dc0cf04d7567d8aba5cecb1ed", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_6.mp3", + "md5Checksum": "b2b2bbc830a774bec5c629c68265f27b", + "size_kb": 474.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_6.mp3", + "md5Checksum": "07ef8abe6d925b00d18e9ccb6a92fe15", + "size_kb": 499 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_6.mp3", + "md5Checksum": "77bdf5152bb13e4608228f87a994a2ae", + "size_kb": 606.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_6.mp3", + "md5Checksum": "f14f7e11292d3c00d67023d40c5b19a7", + "size_kb": 393.8 + } + } + }, + "size_kb": 526.5 + }, + "plh_audio/relax/relax_7.mp3": { + "filePath": "global/plh_audio/relax/relax_7.mp3", + "md5Checksum": "51ad97b7ea1e2344074ef130c4362682", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_7.mp3", + "md5Checksum": "9b1df7789e3f1de838ae8f80e7dfd733", + "size_kb": 582.3 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_7.mp3", + "md5Checksum": "64f40e3f980f0e827c0c37aea29f9051", + "size_kb": 412.1 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_7.mp3", + "md5Checksum": "eaf8ee0a20e047e137564430b0646fc5", + "size_kb": 536.3 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_7.mp3", + "md5Checksum": "0daf6960bbd80a6b43b5193b77abcb97", + "size_kb": 388.2 + } + } + }, + "size_kb": 504.9 + }, + "plh_audio/relax/relax_8.mp3": { + "filePath": "global/plh_audio/relax/relax_8.mp3", + "md5Checksum": "43e967ed477d23a2ac60b2786997e752", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_8.mp3", + "md5Checksum": "26bf4a56c2f1e5b7c91ec9686486422b", + "size_kb": 607.3 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_8.mp3", + "md5Checksum": "7d6358c593e39b4dfda57c9c47e19d22", + "size_kb": 574.9 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_8.mp3", + "md5Checksum": "c76c825f6c9cc8048cfd2826a966800f", + "size_kb": 708.8 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_8.mp3", + "md5Checksum": "de634a9ac19d4ba72622b969a2c7ca4c", + "size_kb": 493.2 + } + } + }, + "size_kb": 549 + }, + "plh_audio/relax/relax_9.mp3": { + "filePath": "global/plh_audio/relax/relax_9.mp3", + "md5Checksum": "4c28141c3416cf2df70d2a5464c3d34a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/relax/relax_9.mp3", + "md5Checksum": "c7bfae7afd4120361c6d66de32160ecc", + "size_kb": 1059.8 + }, + "za_af": { + "filePath": "za_af/plh_audio/relax/relax_9.mp3", + "md5Checksum": "956e35d8c688220448011c98f03eab8f", + "size_kb": 1040.2 + }, + "za_st": { + "filePath": "za_st/plh_audio/relax/relax_9.mp3", + "md5Checksum": "ef63484981f74f4a776705fe1aed576c", + "size_kb": 1290 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/relax/relax_9.mp3", + "md5Checksum": "8a5b0e6e6df556fb596471e748a98a13", + "size_kb": 990.8 + } + } + }, + "size_kb": 1057.1 + }, + "plh_audio/take_a_pause_64k.mp3": { + "filePath": "global/plh_audio/take_a_pause_64k.mp3", + "md5Checksum": "03a593d94debd98384bff908450aa0d3", + "size_kb": 1354.9 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3", + "md5Checksum": "36a24d6ad95cc402bb1681faa5b1e3a4", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3", + "md5Checksum": "5e22fd94ba57ffb2b6dd5d48cb773d2e", + "size_kb": 963.8 + } + } + }, + "size_kb": 737.7 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3", + "md5Checksum": "78ce55cffe940fc12314da045a546719", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3", + "md5Checksum": "62209e7ce4f830b33761acb792ef0b7a", + "size_kb": 1029.4 + } + } + }, + "size_kb": 905.7 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3", + "md5Checksum": "8fa7ec84159ca032796833995a1b2b62", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3", + "md5Checksum": "38a4723857cfe4307db769808f3d0e52", + "size_kb": 498.8 + } + } + }, + "size_kb": 516.4 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3", + "md5Checksum": "ee313a449c29f58ce9899698898997a7", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3", + "md5Checksum": "16fb71e6ac811f5f50eea28b1ffe897f", + "size_kb": 821.3 + } + } + }, + "size_kb": 800.7 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3", + "md5Checksum": "aa4cba93dc63a20f60a91e357780abed", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3", + "md5Checksum": "31645bfbc5382e7632efd13b25e9f4eb", + "size_kb": 875.7 + } + } + }, + "size_kb": 672 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3", + "md5Checksum": "019a0e6f0340875dbab6f912bd1d29ab", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3", + "md5Checksum": "847293fb338754b57d3129961b5d7f62", + "size_kb": 797.7 + } + } + }, + "size_kb": 836.4 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3", + "md5Checksum": "6b7b48df0e3aba9a41786c3487c21b04", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3", + "md5Checksum": "57e7afcb1b880ebbcd450e453da92e45", + "size_kb": 1089.4 + } + } + }, + "size_kb": 871.3 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3", + "md5Checksum": "d18a091db58024e72159b14e908d7430", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3", + "md5Checksum": "a8c4136de2bc98179954e7c7c1bae30a", + "size_kb": 826.9 + } + } + }, + "size_kb": 647.4 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3", + "md5Checksum": "212924f29d05c94e977952b06c7edb8c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3", + "md5Checksum": "6a4211ffc57ed7ce3e6e1815b55f9da3", + "size_kb": 666.4 + } + } + }, + "size_kb": 493.6 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3", + "md5Checksum": "a09239ee2cd722701f310e3a1e822d55", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3", + "md5Checksum": "9740f277632c276a3f00dc7da64c1692", + "size_kb": 683.3 + } + } + }, + "size_kb": 660.9 + }, + "plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3": { + "filePath": "global/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3", + "md5Checksum": "e1bee0b763b33787767eade301353b8a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3", + "md5Checksum": "a94a77f103dd62eaa0e35c74fa66ee67", + "size_kb": 612 + } + } + }, + "size_kb": 640.3 + }, + "plh_audio/testimonials/teen/teen_test_w_1on1.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_1on1.mp3", + "md5Checksum": "886782df5e6190139686e1c98e79cced", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_1on1.mp3", + "md5Checksum": "15eac715a662812f835b33d73ed4e5f3", + "size_kb": 850.2 + } + } + }, + "size_kb": 727.5 + }, + "plh_audio/testimonials/teen/teen_test_w_consequence.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_consequence.mp3", + "md5Checksum": "f3b2affc778840616ce13204d4f3831a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_consequence.mp3", + "md5Checksum": "536438fdfddc3715139085f89f68e79b", + "size_kb": 715.2 + } + } + }, + "size_kb": 701.3 + }, + "plh_audio/testimonials/teen/teen_test_w_crisis.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_crisis.mp3", + "md5Checksum": "3f28f38e13d9a877c83fe5392a07ded6", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_crisis.mp3", + "md5Checksum": "cb8b280f53034660e015b00dc1e07765", + "size_kb": 664.5 + } + } + }, + "size_kb": 641.3 + }, + "plh_audio/testimonials/teen/teen_test_w_instruct.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_instruct.mp3", + "md5Checksum": "f3e26c8ca87e9b80f20cb7512af72ef9", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_instruct.mp3", + "md5Checksum": "c61bd72db174a8fc546e14cf34b85dd3", + "size_kb": 874.5 + } + } + }, + "size_kb": 656.3 + }, + "plh_audio/testimonials/teen/teen_test_w_money.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_money.mp3", + "md5Checksum": "9eca027a2d822de03602edc7c7da1ef4", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_money.mp3", + "md5Checksum": "8d822632c0c5407b43cdc9d6f119bdc5", + "size_kb": 1073.3 + } + } + }, + "size_kb": 895.2 + }, + "plh_audio/testimonials/teen/teen_test_w_praise.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_praise.mp3", + "md5Checksum": "e1d3d018b6504d55b4319b0be983247b", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_praise.mp3", + "md5Checksum": "086429c5bab7a30163bfb02836f36231", + "size_kb": 943.2 + } + } + }, + "size_kb": 627.9 + }, + "plh_audio/testimonials/teen/teen_test_w_rules.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_rules.mp3", + "md5Checksum": "ead0d9c8db7ae7bc37d1b5d0f09e8f42", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_rules.mp3", + "md5Checksum": "a3be23673be75e12d2e1a882ae45c72e", + "size_kb": 673.2 + } + } + }, + "size_kb": 476.4 + }, + "plh_audio/testimonials/teen/teen_test_w_safe.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_safe.mp3", + "md5Checksum": "2acc28ceb14813ab3aeda1e2611928ba", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_safe.mp3", + "md5Checksum": "29e95aedc7172aef57ab77baf9bfa5f2", + "size_kb": 727.5 + } + } + }, + "size_kb": 543.9 + }, + "plh_audio/testimonials/teen/teen_test_w_self_care.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_self_care.mp3", + "md5Checksum": "391db824eecc4e32c782db868152fe3c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_self_care.mp3", + "md5Checksum": "99e2b7d10fd985b194e31595d0668f94", + "size_kb": 708.8 + } + } + }, + "size_kb": 727.5 + }, + "plh_audio/testimonials/teen/teen_test_w_solve.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_solve.mp3", + "md5Checksum": "5d683d6511cba0ae73bd52582769511c", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_solve.mp3", + "md5Checksum": "47735a7a44f02bc59104c5a441bbff45", + "size_kb": 803.3 + } + } + }, + "size_kb": 823.9 + }, + "plh_audio/testimonials/teen/teen_test_w_stress.mp3": { + "filePath": "global/plh_audio/testimonials/teen/teen_test_w_stress.mp3", + "md5Checksum": "62563cf30d74b03e727e3b0507994e1b", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/testimonials/teen/teen_test_w_stress.mp3", + "md5Checksum": "89ed4b16385bdf9418d43f14a7b3be6a", + "size_kb": 687 + } + } + }, + "size_kb": 864.4 + }, + "plh_audio/timer/bell_1.mp3": { + "filePath": "global/plh_audio/timer/bell_1.mp3", + "md5Checksum": "19700b739837b47ca934707f1c16e7b7", + "size_kb": 121.6 + }, + "plh_audio/timer/ping_1.wav": { + "filePath": "global/plh_audio/timer/ping_1.wav", + "md5Checksum": "000bdadc5c44489368e4320d987892a7", + "size_kb": 196.4 + }, + "plh_audio/timer/ping_2.wav": { + "filePath": "global/plh_audio/timer/ping_2.wav", + "md5Checksum": "a9cad2b710e4c0efc104be4eed375d80", + "size_kb": 829.6 + }, + "plh_audio/topic_intros/w_1on1_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_1on1_intro.mp3", + "md5Checksum": "e9138d16ef537979a4eeb81656e0bdaf", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_1on1_intro.mp3", + "md5Checksum": "e4c71e1a9779b795b555a1dfd4d1cfaf", + "size_kb": 343.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_1on1_intro.mp3", + "md5Checksum": "811cfc764585c5ab79c1340886891419", + "size_kb": 406 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_1on1_intro.mp3", + "md5Checksum": "6e2634ee14900dae30ae2f1669450868", + "size_kb": 460.2 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_1on1_intro.mp3", + "md5Checksum": "2eb1661c3f3fc1a878282c4dbf88b820", + "size_kb": 331.9 + } + } + }, + "size_kb": 377.6 + }, + "plh_audio/topic_intros/w_celebrate_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_celebrate_intro.mp3", + "md5Checksum": "472d6351714078d4c1977a7cb5880fdb", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_celebrate_intro.mp3", + "md5Checksum": "fddd25202ea375063f7034ff532bad4e", + "size_kb": 380.7 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_celebrate_intro.mp3", + "md5Checksum": "923ceea57639cb2b2e696246ab015a11", + "size_kb": 399.8 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_celebrate_intro.mp3", + "md5Checksum": "9eb739df0b814a4cde2d8172a30d13dc", + "size_kb": 466.9 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_celebrate_intro.mp3", + "md5Checksum": "1159eb2c500d833c6cb0616be545d458", + "size_kb": 432 + } + } + }, + "size_kb": 1292.7 + }, + "plh_audio/topic_intros/w_consequence_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_consequence_intro.mp3", + "md5Checksum": "3ac9ad359f08f0da75f614e321c10aae", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_consequence_intro.mp3", + "md5Checksum": "c3d140c0f60861809665bfc0784fd081", + "size_kb": 501.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_consequence_intro.mp3", + "md5Checksum": "095b73ace2faa99ccc1dc253b61b4c58", + "size_kb": 615.3 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_consequence_intro.mp3", + "md5Checksum": "dad77e92a12f98471f5b5085220bd63b", + "size_kb": 651.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_consequence_intro.mp3", + "md5Checksum": "ed915fcd8f82d7b1cdb3d20f8cff4952", + "size_kb": 620.7 + } + } + }, + "size_kb": 627.8 + }, + "plh_audio/topic_intros/w_crisis_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_crisis_intro.mp3", + "md5Checksum": "d1e8e52bd33407987894934de0bbf909", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_crisis_intro.mp3", + "md5Checksum": "9b751a9456997ff55c1e97a2b313f328", + "size_kb": 748.9 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_crisis_intro.mp3", + "md5Checksum": "823d431ece7fcd6882e9c07bdb5267d0", + "size_kb": 748.5 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_crisis_intro.mp3", + "md5Checksum": "08e1d61b052e3981eddc970f391d3569", + "size_kb": 807 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_crisis_intro.mp3", + "md5Checksum": "27b3edaba4bb792f8181baebe18544aa", + "size_kb": 766.9 + } + } + }, + "size_kb": 768.6 + }, + "plh_audio/topic_intros/w_instruct_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_instruct_intro.mp3", + "md5Checksum": "6f8021f84c5a941cc5a6d36faba92f29", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_instruct_intro.mp3", + "md5Checksum": "8ae1a4ebaa2886edd1a8790d814c76eb", + "size_kb": 371.3 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_instruct_intro.mp3", + "md5Checksum": "ea9b68aeb6f2fc03548589783f53473a", + "size_kb": 434.5 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_instruct_intro.mp3", + "md5Checksum": "7d1e2f4bb8b8f775319bb82d4561a972", + "size_kb": 472.5 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_instruct_intro.mp3", + "md5Checksum": "63f4abdac9002f7716be0fb941f22d25", + "size_kb": 443.3 + } + } + }, + "size_kb": 447.3 + }, + "plh_audio/topic_intros/w_money_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_money_intro.mp3", + "md5Checksum": "adb875428eebfb8874e44b4526c2e62b", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_money_intro.mp3", + "md5Checksum": "7e86548bd22ab5ce97955f596c6cdd37", + "size_kb": 516.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_money_intro.mp3", + "md5Checksum": "275a64674025711675c8a8123952b7cc", + "size_kb": 519 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_money_intro.mp3", + "md5Checksum": "5d1a7d71c0cbb527f1648dcfbfefb94c", + "size_kb": 643.2 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_money_intro.mp3", + "md5Checksum": "0a06cd3165613b3ae00f5414e64f0f57", + "size_kb": 571.9 + } + } + }, + "size_kb": 582 + }, + "plh_audio/topic_intros/w_praise_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_praise_intro.mp3", + "md5Checksum": "584fe9154663243393a3512aae2c2cfc", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_praise_intro.mp3", + "md5Checksum": "130555d0bc02cc219005190ccabba218", + "size_kb": 341.3 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_praise_intro.mp3", + "md5Checksum": "871c092067d1ff6c8f46880f8947eb5e", + "size_kb": 386 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_praise_intro.mp3", + "md5Checksum": "5ae1f0b5e553300cb63a5a9e949acbdd", + "size_kb": 423.8 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_praise_intro.mp3", + "md5Checksum": "85c3ac0e46e8db5432d3fb34a716bec6", + "size_kb": 313.2 + } + } + }, + "size_kb": 355.9 + }, + "plh_audio/topic_intros/w_rules_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_rules_intro.mp3", + "md5Checksum": "ab3df47339f5aaddab8293b014e788b2", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_rules_intro.mp3", + "md5Checksum": "a93189816550e5ef31896105daba8f98", + "size_kb": 390.8 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_rules_intro.mp3", + "md5Checksum": "6788de1f7c6de9c59b7f1048db2b3455", + "size_kb": 441.1 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_rules_intro.mp3", + "md5Checksum": "c0f2db025179b3d886542931ab88b3ac", + "size_kb": 493.9 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_rules_intro.mp3", + "md5Checksum": "aa011ca8d7561151ce0a54ccb64aa159", + "size_kb": 511.9 + } + } + }, + "size_kb": 510.2 + }, + "plh_audio/topic_intros/w_safe_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_safe_intro.mp3", + "md5Checksum": "bc984f7cc77a1e8945eaa7036dc0b6ab", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_safe_intro.mp3", + "md5Checksum": "979e2ac924073029250d80be46f79f7e", + "size_kb": 665.7 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_safe_intro.mp3", + "md5Checksum": "61fa78463d22adadfd3d589a6949f49a", + "size_kb": 812.5 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_safe_intro.mp3", + "md5Checksum": "29bd2544fc0dd1a56a483e54d4857d01", + "size_kb": 806.3 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_safe_intro.mp3", + "md5Checksum": "8df3db10e43cfcc23164ccb627de2d00", + "size_kb": 793.9 + } + } + }, + "size_kb": 955.5 + }, + "plh_audio/topic_intros/w_self_care_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_self_care_intro.mp3", + "md5Checksum": "9ae6c9fd0275d6dda0b5f4e0bdddeba7", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_self_care_intro.mp3", + "md5Checksum": "4b7d74b30f8a0c6f2599ea21daeae3cb", + "size_kb": 555.8 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_self_care_intro.mp3", + "md5Checksum": "f04da451ee1d6509b72d3f777ba0785e", + "size_kb": 620.8 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_self_care_intro.mp3", + "md5Checksum": "576de9754b768f09c6f2941dfca5e91e", + "size_kb": 637.5 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_self_care_intro.mp3", + "md5Checksum": "977f095f8358295dfab2182785456aa3", + "size_kb": 589.5 + } + } + }, + "size_kb": 716.7 + }, + "plh_audio/topic_intros/w_solve_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_solve_intro.mp3", + "md5Checksum": "2fe96fc09d75da24b11a5521159af31a", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_solve_intro.mp3", + "md5Checksum": "ec78f5b1c067c9f4087db4fb05ee5f2e", + "size_kb": 782.7 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_solve_intro.mp3", + "md5Checksum": "0d79fdb3c445a883c4a3ce1beec1c9a5", + "size_kb": 941.5 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_solve_intro.mp3", + "md5Checksum": "672779e0fc71e00ac9bc98b49ffc0ea6", + "size_kb": 868.9 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_solve_intro.mp3", + "md5Checksum": "d03247d4b9a6cb33910e58ffefa8749a", + "size_kb": 874.5 + } + } + }, + "size_kb": 931 + }, + "plh_audio/topic_intros/w_stress_intro.mp3": { + "filePath": "global/plh_audio/topic_intros/w_stress_intro.mp3", + "md5Checksum": "aea123ef6dc786c86e38325e1ad04e17", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/w_stress_intro.mp3", + "md5Checksum": "feec35b3113d6b9e8e04f9bd9d8ee8b4", + "size_kb": 609.4 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/w_stress_intro.mp3", + "md5Checksum": "2b0927863333c42ed1d4164c55bd53ca", + "size_kb": 598.6 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/w_stress_intro.mp3", + "md5Checksum": "374ebfa0bc1748f3cc5645ee1d00190c", + "size_kb": 744.4 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/w_stress_intro.mp3", + "md5Checksum": "949c4032e5b3b288cf291734e67159a8", + "size_kb": 628.9 + } + } + }, + "size_kb": 659.6 + }, + "plh_audio/topic_intros/workshops_reflection.mp3": { + "filePath": "global/plh_audio/topic_intros/workshops_reflection.mp3", + "md5Checksum": "4ca8a8f7fda21ecdbbfcbd7f38e69433", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_audio/topic_intros/workshops_reflection.mp3", + "md5Checksum": "7bfa7ab8fd751da76319b879127beec5", + "size_kb": 1245 + }, + "za_af": { + "filePath": "za_af/plh_audio/topic_intros/workshops_reflection.mp3", + "md5Checksum": "49d34276a5a04b73a330d5b972b0dee1", + "size_kb": 1158.2 + }, + "za_st": { + "filePath": "za_st/plh_audio/topic_intros/workshops_reflection.mp3", + "md5Checksum": "10a1b7763d64c7c809c0db38baa37205", + "size_kb": 1175.7 + }, + "za_tn": { + "filePath": "za_tn/plh_audio/topic_intros/workshops_reflection.mp3", + "md5Checksum": "e051706763b9593134cc68a319939bcc", + "size_kb": 1003.9 + } + } + }, + "size_kb": 1019.2 + }, + "plh_images/characters/elder/happy.svg": { + "filePath": "global/plh_images/characters/elder/happy.svg", + "md5Checksum": "068400da9fe7a6be617cb4b0dfa4178b", + "size_kb": 3 + }, + "plh_images/characters/elder/large.svg": { + "filePath": "global/plh_images/characters/elder/large.svg", + "md5Checksum": "aeda19589a78302bfd121a9bca1269ac", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/characters/elder/large.svg", + "md5Checksum": "5385148ef8aa32142adc3ad5bae77150", + "size_kb": 8.6 + } + } + }, + "size_kb": 3.1 + }, + "plh_images/characters/elder/neutral.svg": { + "filePath": "global/plh_images/characters/elder/neutral.svg", + "md5Checksum": "a57f8d7eb0a59aa5f27d56a273cab06b", + "size_kb": 3 + }, + "plh_images/characters/elder/sad.svg": { + "filePath": "global/plh_images/characters/elder/sad.svg", + "md5Checksum": "689c994745e5d1db7872b6c06490716f", + "size_kb": 3.1 + }, + "plh_images/characters/elder/small.svg": { + "filePath": "global/plh_images/characters/elder/small.svg", + "md5Checksum": "a5053e72e798597a40cd878d8ad2c84a", + "size_kb": 3.1 + }, + "plh_images/characters/friend/happy.svg": { + "filePath": "global/plh_images/characters/friend/happy.svg", + "md5Checksum": "544204ea7a2bc99269e36b89a3910bd5", + "size_kb": 2.8 + }, + "plh_images/characters/friend/neutral.svg": { + "filePath": "global/plh_images/characters/friend/neutral.svg", + "md5Checksum": "aadac5727b464abfcbe12843d7cabf33", + "size_kb": 2.7 + }, + "plh_images/characters/friend/sad.svg": { + "filePath": "global/plh_images/characters/friend/sad.svg", + "md5Checksum": "d6400cd9da2d938a90adbd5e874d0db7", + "size_kb": 2.7 + }, + "plh_images/characters/group/talk_together.png": { + "filePath": "global/plh_images/characters/group/talk_together.png", + "md5Checksum": "72f00ac85950a54bd22aad8619759120", + "size_kb": 161.6 + }, + "plh_images/characters/guide1/book.svg": { + "filePath": "global/plh_images/characters/guide1/book.svg", + "md5Checksum": "21d49ddc4f574533b9ce8b93e2276ad4", + "size_kb": 4 + }, + "plh_images/characters/guide1/busy.svg": { + "filePath": "global/plh_images/characters/guide1/busy.svg", + "md5Checksum": "79f06cfe237de1182bdf6e13d4f6e3a5", + "size_kb": 16.8 + }, + "plh_images/characters/guide1/frustrated.svg": { + "filePath": "global/plh_images/characters/guide1/frustrated.svg", + "md5Checksum": "759869f2dbde348c2591fb524359660a", + "size_kb": 13 + }, + "plh_images/characters/guide1/happy.svg": { + "filePath": "global/plh_images/characters/guide1/happy.svg", + "md5Checksum": "3be5c43a95c57a838086cb33f8147a8d", + "size_kb": 2.9 + }, + "plh_images/characters/guide1/high_five.svg": { + "filePath": "global/plh_images/characters/guide1/high_five.svg", + "md5Checksum": "a634fdcc98df7edfecaf8098975d4c31", + "size_kb": 5.9 + }, + "plh_images/characters/guide1/hug.svg": { + "filePath": "global/plh_images/characters/guide1/hug.svg", + "md5Checksum": "90988999f9be2c69ff20ef35457a1af0", + "size_kb": 620.6 + }, + "plh_images/characters/guide1/key.svg": { + "filePath": "global/plh_images/characters/guide1/key.svg", + "md5Checksum": "b53791b39e1b078fd74d6f6e69839f14", + "size_kb": 3.7 + }, + "plh_images/characters/guide1/neutral.svg": { + "filePath": "global/plh_images/characters/guide1/neutral.svg", + "md5Checksum": "0106c4aefd8bb85c8ea6fb138bdc1f0e", + "size_kb": 2.9 + }, + "plh_images/characters/guide1/play_ball.svg": { + "filePath": "global/plh_images/characters/guide1/play_ball.svg", + "md5Checksum": "b7f01c4e08369a817eb97d17b112956b", + "size_kb": 6.9 + }, + "plh_images/characters/guide1/right_on_time.svg": { + "filePath": "global/plh_images/characters/guide1/right_on_time.svg", + "md5Checksum": "c3f8798900b3ef15dcb63f404f50ee38", + "size_kb": 16.8 + }, + "plh_images/characters/guide1/sad.svg": { + "filePath": "global/plh_images/characters/guide1/sad.svg", + "md5Checksum": "a7b9bc93e95869314f758a8f7232bca9", + "size_kb": 2.9 + }, + "plh_images/characters/guide1/seated.svg": { + "filePath": "global/plh_images/characters/guide1/seated.svg", + "md5Checksum": "e2d1364ea336bb7362794b36dd4b656e", + "size_kb": 3.3 + }, + "plh_images/characters/guide1/shout.svg": { + "filePath": "global/plh_images/characters/guide1/shout.svg", + "md5Checksum": "93040ded0e93c8b431387b40e67e2c8c", + "size_kb": 5.8 + }, + "plh_images/characters/guide1/thumb.svg": { + "filePath": "global/plh_images/characters/guide1/thumb.svg", + "md5Checksum": "7d549bbb9a8d2b1fa8dee22a428a8947", + "size_kb": 3.2 + }, + "plh_images/characters/guide1/well_done.svg": { + "filePath": "global/plh_images/characters/guide1/well_done.svg", + "md5Checksum": "f1901fb6d85a3f2412d8ebb3e672ef56", + "size_kb": 8.3 + }, + "plh_images/characters/guide1/worried.svg": { + "filePath": "global/plh_images/characters/guide1/worried.svg", + "md5Checksum": "ac6a6a71fffd54a8fb4e5032f970c1c6", + "size_kb": 3 + }, + "plh_images/characters/guide2/book.svg": { + "filePath": "global/plh_images/characters/guide2/book.svg", + "md5Checksum": "20b38da55e7eaa7d4d35c76c765b4eb1", + "size_kb": 3.9 + }, + "plh_images/characters/guide2/busy.svg": { + "filePath": "global/plh_images/characters/guide2/busy.svg", + "md5Checksum": "438f1f529bf7e0ebef67553ad7136482", + "size_kb": 22.3 + }, + "plh_images/characters/guide2/frustrated.svg": { + "filePath": "global/plh_images/characters/guide2/frustrated.svg", + "md5Checksum": "7c438c23611e747ad5086d08d54a4c79", + "size_kb": 12.9 + }, + "plh_images/characters/guide2/happy.svg": { + "filePath": "global/plh_images/characters/guide2/happy.svg", + "md5Checksum": "373c9b788d76f28b4170375874eec539", + "size_kb": 3.1 + }, + "plh_images/characters/guide2/hug.svg": { + "filePath": "global/plh_images/characters/guide2/hug.svg", + "md5Checksum": "1228f43e804e8950cf039eb86b721077", + "size_kb": 626.8 + }, + "plh_images/characters/guide2/key.svg": { + "filePath": "global/plh_images/characters/guide2/key.svg", + "md5Checksum": "a4bd1ced5926d79ac9c118e8acb8512b", + "size_kb": 3.8 + }, + "plh_images/characters/guide2/neutral.svg": { + "filePath": "global/plh_images/characters/guide2/neutral.svg", + "md5Checksum": "a90a367acf23f0bbd34cfc4e8f638051", + "size_kb": 3.2 + }, + "plh_images/characters/guide2/play_ball.svg": { + "filePath": "global/plh_images/characters/guide2/play_ball.svg", + "md5Checksum": "90d5b4eaf3b276d61379d27fcf1d69f1", + "size_kb": 6.2 + }, + "plh_images/characters/guide2/right_on_time.svg": { + "filePath": "global/plh_images/characters/guide2/right_on_time.svg", + "md5Checksum": "1efda9c4059c3bb094409ec53c884371", + "size_kb": 16.7 + }, + "plh_images/characters/guide2/sad.svg": { + "filePath": "global/plh_images/characters/guide2/sad.svg", + "md5Checksum": "f4789124881e5901e5b4f5c78067263d", + "size_kb": 3.1 + }, + "plh_images/characters/guide2/seated.svg": { + "filePath": "global/plh_images/characters/guide2/seated.svg", + "md5Checksum": "688c7d86fe4b42406cba73f96c101aba", + "size_kb": 2.9 + }, + "plh_images/characters/guide2/shout.svg": { + "filePath": "global/plh_images/characters/guide2/shout.svg", + "md5Checksum": "98225618aca2f75c40844ed6ce0b037f", + "size_kb": 5.7 + }, + "plh_images/characters/guide2/thumb.svg": { + "filePath": "global/plh_images/characters/guide2/thumb.svg", + "md5Checksum": "c8df99e69883fdb22807f1883c38b23d", + "size_kb": 3.4 + }, + "plh_images/characters/guide2/well_done.svg": { + "filePath": "global/plh_images/characters/guide2/well_done.svg", + "md5Checksum": "ee5f8e8897623e45dc231338d5fb6eb5", + "size_kb": 8.3 + }, + "plh_images/characters/guide2/worried.svg": { + "filePath": "global/plh_images/characters/guide2/worried.svg", + "md5Checksum": "78c0540d59b7ff8dca56d55ae9cf777d", + "size_kb": 3.2 + }, + "plh_images/characters/neighbour/happy.svg": { + "filePath": "global/plh_images/characters/neighbour/happy.svg", + "md5Checksum": "5abdd6b09cc58da5b1b2d732a08b9650", + "size_kb": 3.1 + }, + "plh_images/characters/neighbour/neutral.svg": { + "filePath": "global/plh_images/characters/neighbour/neutral.svg", + "md5Checksum": "2c3360153880d1737d7c13b8728975d2", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/characters/neighbour/neutral.svg", + "md5Checksum": "8872a54ec15b8148b36382c161721d4e", + "size_kb": 11.4 + } + } + }, + "size_kb": 3.1 + }, + "plh_images/characters/neighbour/sad.svg": { + "filePath": "global/plh_images/characters/neighbour/sad.svg", + "md5Checksum": "f546109cb2c902dd5b905953e4f3ae4a", + "size_kb": 3.1 + }, + "plh_images/family.svg": { + "filePath": "global/plh_images/family.svg", + "md5Checksum": "4a88fa5e3141147eaac754f65d17342d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/family.svg", + "md5Checksum": "6b480cdb1b435f40059c705a3a9e5b38", + "size_kb": 45.3 + } + } + }, + "size_kb": 864.1 + }, + "plh_images/first_app_launch/frustrated.svg": { + "filePath": "global/plh_images/first_app_launch/frustrated.svg", + "md5Checksum": "e1a851ee35268d34d4948a13649b70d0", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/first_app_launch/frustrated.svg", + "md5Checksum": "23b81d9fc4c0db3713281de53d658618", + "size_kb": 22.5 + } + } + }, + "size_kb": 12 + }, + "plh_images/first_app_launch/join_parents.svg": { + "filePath": "global/plh_images/first_app_launch/join_parents.svg", + "md5Checksum": "0f0c41812fbb43e02a7e4cd6d8ae8fa6", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/first_app_launch/join_parents.svg", + "md5Checksum": "238c3d241862f588b148bbfbca470b5f", + "size_kb": 37.6 + } + } + }, + "size_kb": 8.3 + }, + "plh_images/first_app_launch/loving_parent.svg": { + "filePath": "global/plh_images/first_app_launch/loving_parent.svg", + "md5Checksum": "6f967d5476582da02692d65983f46d32", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/first_app_launch/loving_parent.svg", + "md5Checksum": "35ab1bf3969302fd3076c84ccd9ffeba", + "size_kb": 25.7 + } + } + }, + "size_kb": 864.2 + }, + "plh_images/first_app_launch/shield.svg": { + "filePath": "global/plh_images/first_app_launch/shield.svg", + "md5Checksum": "7bef996b92b5d2cadd4e1ca2bac7c2d1", + "size_kb": 2.8 + }, + "plh_images/habits/breathe.svg": { + "filePath": "global/plh_images/habits/breathe.svg", + "md5Checksum": "284285870cd683c71190ab4004cf4d70", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/breathe.svg", + "md5Checksum": "f0cd9c2695cc4611b182296ea1c8c4ac", + "size_kb": 13.1 + } + } + }, + "size_kb": 2.3 + }, + "plh_images/habits/habit_breathe.svg": { + "filePath": "global/plh_images/habits/habit_breathe.svg", + "md5Checksum": "284285870cd683c71190ab4004cf4d70", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_breathe.svg", + "md5Checksum": "e5ad9d538d089c88e131ab8d7722e903", + "size_kb": 22.8 + } + } + }, + "size_kb": 2.3 + }, + "plh_images/habits/habit_consequence.svg": { + "filePath": "global/plh_images/habits/habit_consequence.svg", + "md5Checksum": "f262bbeb5717f1e7b944c52b900c082d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_consequence.svg", + "md5Checksum": "543c4c6863150a9e4bbfd640d1735cbe", + "size_kb": 23.4 + } + } + }, + "size_kb": 5.3 + }, + "plh_images/habits/habit_instruct_positively.svg": { + "filePath": "global/plh_images/habits/habit_instruct_positively.svg", + "md5Checksum": "cfdd6ddb459a6e5c8c8d8b1f1b23db98", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_instruct_positively.svg", + "md5Checksum": "237a20e68e9b8292b9c1d19606192a96", + "size_kb": 34.1 + } + } + }, + "size_kb": 6.6 + }, + "plh_images/habits/habit_money.svg": { + "filePath": "global/plh_images/habits/habit_money.svg", + "md5Checksum": "3a0ce0a8eccb4ebb780b0bbd1de2d518", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_money.svg", + "md5Checksum": "cfec9744fba16fa141fc22173a05ec5d", + "size_kb": 9.8 + } + } + }, + "size_kb": 6.3 + }, + "plh_images/habits/habit_praise_teen.svg": { + "filePath": "global/plh_images/habits/habit_praise_teen.svg", + "md5Checksum": "05172e7b645fa68c76f7dc3dcc61fd16", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_praise_teen.svg", + "md5Checksum": "4a6153ba427aa82b42e5d650b3a94b93", + "size_kb": 40.5 + } + } + }, + "size_kb": 8.1 + }, + "plh_images/habits/habit_praise_yourself.svg": { + "filePath": "global/plh_images/habits/habit_praise_yourself.svg", + "md5Checksum": "19ecd9abda2b29944c950c4b0a7620ec", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_praise_yourself.svg", + "md5Checksum": "e45773c0b86afbca0f02789beb131c00", + "size_kb": 16.7 + } + } + }, + "size_kb": 3.2 + }, + "plh_images/habits/habit_relax.svg": { + "filePath": "global/plh_images/habits/habit_relax.svg", + "md5Checksum": "a5471b72e965e5cc243da1dfa92eb32e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_relax.svg", + "md5Checksum": "f63124cd38d7fb49dd569e5c56cecd30", + "size_kb": 15.5 + } + } + }, + "size_kb": 3.4 + }, + "plh_images/habits/habit_safe.svg": { + "filePath": "global/plh_images/habits/habit_safe.svg", + "md5Checksum": "e5e16e9747ef24e401a5d8d5ee4fe419", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_safe.svg", + "md5Checksum": "60891fb68f24bafd6208045b6ba7f5a1", + "size_kb": 23.2 + } + } + }, + "size_kb": 24.3 + }, + "plh_images/habits/habit_spend_time.svg": { + "filePath": "global/plh_images/habits/habit_spend_time.svg", + "md5Checksum": "e020b7920c72ab109569dea86e863147", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_spend_time.svg", + "md5Checksum": "99176158a8f1a3ae98bc6e785f0c40b8", + "size_kb": 23.3 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/habits/habit_treat_yourself.svg": { + "filePath": "global/plh_images/habits/habit_treat_yourself.svg", + "md5Checksum": "07d5cec72df949bb4b0f9d92431e3908", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/habits/habit_treat_yourself.svg", + "md5Checksum": "635c7f0c3150827268c39a7a9ce92176", + "size_kb": 14.9 + } + } + }, + "size_kb": 3.9 + }, + "plh_images/home_screen/parent_centre.svg": { + "filePath": "global/plh_images/home_screen/parent_centre.svg", + "md5Checksum": "aeb66979a24176e0ff745925b58e84c9", + "size_kb": 5.7 + }, + "plh_images/home_screen/parent_centre_shadow.svg": { + "filePath": "global/plh_images/home_screen/parent_centre_shadow.svg", + "md5Checksum": "6aa4a533ae853d89e1c389c4117a5d7b", + "size_kb": 5.8 + }, + "plh_images/home_screen/parent_points.svg": { + "filePath": "global/plh_images/home_screen/parent_points.svg", + "md5Checksum": "dc0605c19ffc6154a64dcfb8f7ea4004", + "size_kb": 6.1 + }, + "plh_images/home_screen/parent_points_shadow.svg": { + "filePath": "global/plh_images/home_screen/parent_points_shadow.svg", + "md5Checksum": "480d54442b6a6a3c6ce9f44693948f45", + "size_kb": 6.2 + }, + "plh_images/home_screen/weekly_workshops.svg": { + "filePath": "global/plh_images/home_screen/weekly_workshops.svg", + "md5Checksum": "1ba6d70f2e05716a93aa3687d7c8e9de", + "size_kb": 6.2 + }, + "plh_images/home_screen/weekly_workshops_shadow.svg": { + "filePath": "global/plh_images/home_screen/weekly_workshops_shadow.svg", + "md5Checksum": "6fcbe5c240b9add58abfb91cad479a05", + "size_kb": 6.3 + }, + "plh_images/icons/ask_question.svg": { + "filePath": "global/plh_images/icons/ask_question.svg", + "md5Checksum": "a442e88503da6639f07b956f55f935a8", + "size_kb": 1.4 + }, + "plh_images/icons/ask_question_white.svg": { + "filePath": "global/plh_images/icons/ask_question_white.svg", + "md5Checksum": "d52f43b75aacee5da8c3e33a76ecf3b7", + "size_kb": 1.4 + }, + "plh_images/icons/bell.svg": { + "filePath": "global/plh_images/icons/bell.svg", + "md5Checksum": "89db38d119eff950fda39efccdcd2f6d", + "size_kb": 1.2 + }, + "plh_images/icons/bell_circle.svg": { + "filePath": "global/plh_images/icons/bell_circle.svg", + "md5Checksum": "67b643250151cea4a8441a99357f39c3", + "size_kb": 0.8 + }, + "plh_images/icons/bell_white.svg": { + "filePath": "global/plh_images/icons/bell_white.svg", + "md5Checksum": "bd1a62fc8c4d3cbd2b3ff5f303d99903", + "size_kb": 1.2 + }, + "plh_images/icons/book.svg": { + "filePath": "global/plh_images/icons/book.svg", + "md5Checksum": "1b287c85e36a3375196a2a6ee7a0bca3", + "size_kb": 0.7 + }, + "plh_images/icons/book_white.svg": { + "filePath": "global/plh_images/icons/book_white.svg", + "md5Checksum": "12c477faa57812b7a16bc6a0d0424c06", + "size_kb": 0.7 + }, + "plh_images/icons/cogwheel.svg": { + "filePath": "global/plh_images/icons/cogwheel.svg", + "md5Checksum": "c8b581942faf5621c497523bf1a73306", + "size_kb": 1.7 + }, + "plh_images/icons/cogwheel_white.svg": { + "filePath": "global/plh_images/icons/cogwheel_white.svg", + "md5Checksum": "12bb1081cda0bfcab4b289be4f4fc912", + "size_kb": 1.7 + }, + "plh_images/icons/cross.svg": { + "filePath": "global/plh_images/icons/cross.svg", + "md5Checksum": "97f29794530016e7a240ad5e49f9ccab", + "size_kb": 0.4 + }, + "plh_images/icons/cross_circle.svg": { + "filePath": "global/plh_images/icons/cross_circle.svg", + "md5Checksum": "fc6c7bd4f566baa552ed833fc6837f03", + "size_kb": 2.3 + }, + "plh_images/icons/cross_outline.svg": { + "filePath": "global/plh_images/icons/cross_outline.svg", + "md5Checksum": "92f1b36e28b8427f732cb35a7efa1904", + "size_kb": 0.8 + }, + "plh_images/icons/documents.svg": { + "filePath": "global/plh_images/icons/documents.svg", + "md5Checksum": "80d27ca4ba944604c1b3ad72f15c0638", + "size_kb": 1.2 + }, + "plh_images/icons/documents_white.svg": { + "filePath": "global/plh_images/icons/documents_white.svg", + "md5Checksum": "a17a32c8e10c3f6cef859d878b16e4d5", + "size_kb": 1.2 + }, + "plh_images/icons/globe.svg": { + "filePath": "global/plh_images/icons/globe.svg", + "md5Checksum": "9b0f2fdb82fa507e805db5cbe818c929", + "size_kb": 1.4 + }, + "plh_images/icons/globe_circle.svg": { + "filePath": "global/plh_images/icons/globe_circle.svg", + "md5Checksum": "09762126162da34a86ad978f17ef1102", + "size_kb": 1.4 + }, + "plh_images/icons/hands_support_heart.svg": { + "filePath": "global/plh_images/icons/hands_support_heart.svg", + "md5Checksum": "d873a63af05f63526a5177a0d5a757f2", + "size_kb": 2.9 + }, + "plh_images/icons/hands_support_heart_white.svg": { + "filePath": "global/plh_images/icons/hands_support_heart_white.svg", + "md5Checksum": "770c1d7def0f0343a80515ab61220681", + "size_kb": 2.9 + }, + "plh_images/icons/heart.svg": { + "filePath": "global/plh_images/icons/heart.svg", + "md5Checksum": "3837dbad3c5c5b8158a5370064283c20", + "size_kb": 0.6 + }, + "plh_images/icons/heart_white.svg": { + "filePath": "global/plh_images/icons/heart_white.svg", + "md5Checksum": "870d6d4afc2a52aaa37e01460f5efc45", + "size_kb": 0.6 + }, + "plh_images/icons/house.svg": { + "filePath": "global/plh_images/icons/house.svg", + "md5Checksum": "9d7892c6dd14f51c1b51e303e8e87933", + "size_kb": 0.6 + }, + "plh_images/icons/house_circle.svg": { + "filePath": "global/plh_images/icons/house_circle.svg", + "md5Checksum": "5ce770fe6db43c80a07cb0ca583e0300", + "size_kb": 1.4 + }, + "plh_images/icons/house_heart.svg": { + "filePath": "global/plh_images/icons/house_heart.svg", + "md5Checksum": "01909d0663cbf9c5e3d0cafd0923b671", + "size_kb": 1.1 + }, + "plh_images/icons/house_heart_white.svg": { + "filePath": "global/plh_images/icons/house_heart_white.svg", + "md5Checksum": "1da725ad4fbf5359351ad80e0d9c8046", + "size_kb": 1.1 + }, + "plh_images/icons/house_white.svg": { + "filePath": "global/plh_images/icons/house_white.svg", + "md5Checksum": "f65ea96d7ff53e9bed8613e7f2fe3302", + "size_kb": 0.6 + }, + "plh_images/icons/hug_heart.svg": { + "filePath": "global/plh_images/icons/hug_heart.svg", + "md5Checksum": "8a9e54b8ad61b1137227eddd2bf63b31", + "size_kb": 2.1 + }, + "plh_images/icons/hug_heart_white.svg": { + "filePath": "global/plh_images/icons/hug_heart_white.svg", + "md5Checksum": "123870a84e30fc7fc1e328e6daf09cf4", + "size_kb": 2.1 + }, + "plh_images/icons/in_progress.svg": { + "filePath": "global/plh_images/icons/in_progress.svg", + "md5Checksum": "6105962bc0edd981675d874dc8a51035", + "size_kb": 1.1 + }, + "plh_images/icons/in_progress_white.svg": { + "filePath": "global/plh_images/icons/in_progress_white.svg", + "md5Checksum": "f7bdd991a067c30d0cb140d5b77745bb", + "size_kb": 1.1 + }, + "plh_images/icons/info.svg": { + "filePath": "global/plh_images/icons/info.svg", + "md5Checksum": "7b986b40add926369cceb28cec562094", + "size_kb": 0.7 + }, + "plh_images/icons/info_phone_white.svg": { + "filePath": "global/plh_images/icons/info_phone_white.svg", + "md5Checksum": "db231c074da114915aabd6211993a14a", + "size_kb": 1.4 + }, + "plh_images/icons/info_white.svg": { + "filePath": "global/plh_images/icons/info_white.svg", + "md5Checksum": "2bf484237672df94a3bd10dcf208386a", + "size_kb": 0.7 + }, + "plh_images/icons/letter.svg": { + "filePath": "global/plh_images/icons/letter.svg", + "md5Checksum": "640dabe883bbd3df3a8575efb78733e4", + "size_kb": 0.7 + }, + "plh_images/icons/letter_circle.svg": { + "filePath": "global/plh_images/icons/letter_circle.svg", + "md5Checksum": "4b83ed8d1d63fa68c12146030abb589e", + "size_kb": 0.6 + }, + "plh_images/icons/letter_white.svg": { + "filePath": "global/plh_images/icons/letter_white.svg", + "md5Checksum": "470ec0338d8e89efc6a6beadc80bfc8a", + "size_kb": 0.7 + }, + "plh_images/icons/light_bulb.svg": { + "filePath": "global/plh_images/icons/light_bulb.svg", + "md5Checksum": "1bb4aa716b44a53114e2d03f0aad1f3a", + "size_kb": 2.9 + }, + "plh_images/icons/light_bulb_circle.svg": { + "filePath": "global/plh_images/icons/light_bulb_circle.svg", + "md5Checksum": "7c195276a4265621f4d2c4c09a1d5730", + "size_kb": 2.5 + }, + "plh_images/icons/light_bulb_heart.svg": { + "filePath": "global/plh_images/icons/light_bulb_heart.svg", + "md5Checksum": "60b8b2d692c7bbed343471e29023236b", + "size_kb": 3.2 + }, + "plh_images/icons/light_bulb_heart_white.svg": { + "filePath": "global/plh_images/icons/light_bulb_heart_white.svg", + "md5Checksum": "7c4cb09a37a768996ce2858ec6346640", + "size_kb": 3.2 + }, + "plh_images/icons/light_bulb_white.svg": { + "filePath": "global/plh_images/icons/light_bulb_white.svg", + "md5Checksum": "1da5604970a2bee373b340b8a4fe944d", + "size_kb": 2.9 + }, + "plh_images/icons/lock.svg": { + "filePath": "global/plh_images/icons/lock.svg", + "md5Checksum": "4bf3cfe872a60a19216310a7da30c20d", + "size_kb": 0.8 + }, + "plh_images/icons/lock_circle.svg": { + "filePath": "global/plh_images/icons/lock_circle.svg", + "md5Checksum": "6b45fffbe7fda947bf5d13609f761da5", + "size_kb": 1 + }, + "plh_images/icons/lock_outline.svg": { + "filePath": "global/plh_images/icons/lock_outline.svg", + "md5Checksum": "628f519c6ce2529b71d6ec00beaddc99", + "size_kb": 0.9 + }, + "plh_images/icons/parent_child.svg": { + "filePath": "global/plh_images/icons/parent_child.svg", + "md5Checksum": "99747503b2023a185d20be8e5c7d8076", + "size_kb": 2 + }, + "plh_images/icons/parent_child_white.svg": { + "filePath": "global/plh_images/icons/parent_child_white.svg", + "md5Checksum": "5b0134d8d260ac9b7455aad15db462f8", + "size_kb": 2 + }, + "plh_images/icons/parent_heart.svg": { + "filePath": "global/plh_images/icons/parent_heart.svg", + "md5Checksum": "45a1616c608c4ef9c3517d78bfb714d4", + "size_kb": 0.9 + }, + "plh_images/icons/parent_heart_circle.svg": { + "filePath": "global/plh_images/icons/parent_heart_circle.svg", + "md5Checksum": "c76176c5f01aeea1c114e155073458ad", + "size_kb": 1.1 + }, + "plh_images/icons/parent_heart_white.svg": { + "filePath": "global/plh_images/icons/parent_heart_white.svg", + "md5Checksum": "4bbe9e6adcd28a4343c6a5154c800e70", + "size_kb": 1.5 + }, + "plh_images/icons/pause.svg": { + "filePath": "global/plh_images/icons/pause.svg", + "md5Checksum": "b9a01b9c0b6ed86d47ff094f22d23c73", + "size_kb": 0.7 + }, + "plh_images/icons/pause_circle.svg": { + "filePath": "global/plh_images/icons/pause_circle.svg", + "md5Checksum": "b8f1724f0631a4e03cfdd8e824b0713d", + "size_kb": 0.5 + }, + "plh_images/icons/pause_outline.svg": { + "filePath": "global/plh_images/icons/pause_outline.svg", + "md5Checksum": "b9a01b9c0b6ed86d47ff094f22d23c73", + "size_kb": 0.7 + }, + "plh_images/icons/pause_white.svg": { + "filePath": "global/plh_images/icons/pause_white.svg", + "md5Checksum": "f6989826fb94a865281b035fa155689d", + "size_kb": 0.7 + }, + "plh_images/icons/person.svg": { + "filePath": "global/plh_images/icons/person.svg", + "md5Checksum": "444b0881c42e0de9f28495b05de5db0c", + "size_kb": 0.5 + }, + "plh_images/icons/person_white.svg": { + "filePath": "global/plh_images/icons/person_white.svg", + "md5Checksum": "33f7d11059237e08c71f3266a622c864", + "size_kb": 0.5 + }, + "plh_images/icons/phone_heart.svg": { + "filePath": "global/plh_images/icons/phone_heart.svg", + "md5Checksum": "fe611f3865b881348abea8418f83d5f9", + "size_kb": 1.3 + }, + "plh_images/icons/phone_heart_white.svg": { + "filePath": "global/plh_images/icons/phone_heart_white.svg", + "md5Checksum": "61c5140fe55b34c11397b8c344e1c31c", + "size_kb": 1.3 + }, + "plh_images/icons/play.svg": { + "filePath": "global/plh_images/icons/play.svg", + "md5Checksum": "5393d2113acd3a4b7d5f03795067a678", + "size_kb": 0.5 + }, + "plh_images/icons/play_circle.svg": { + "filePath": "global/plh_images/icons/play_circle.svg", + "md5Checksum": "0cd51f5009f5bdbe65d13437d473facb", + "size_kb": 0.4 + }, + "plh_images/icons/play_outline.svg": { + "filePath": "global/plh_images/icons/play_outline.svg", + "md5Checksum": "5393d2113acd3a4b7d5f03795067a678", + "size_kb": 0.5 + }, + "plh_images/icons/play_white.svg": { + "filePath": "global/plh_images/icons/play_white.svg", + "md5Checksum": "6508bf39f8cb3c3ab0f30b96994a6cbc", + "size_kb": 0.5 + }, + "plh_images/icons/question_mark.svg": { + "filePath": "global/plh_images/icons/question_mark.svg", + "md5Checksum": "49e1d1e478068a24949d87d09c9ba07b", + "size_kb": 0.8 + }, + "plh_images/icons/question_mark_white.svg": { + "filePath": "global/plh_images/icons/question_mark_white.svg", + "md5Checksum": "779f1f9e3b84259d345015b601d89412", + "size_kb": 0.8 + }, + "plh_images/icons/smile_eyes_down.svg": { + "filePath": "global/plh_images/icons/smile_eyes_down.svg", + "md5Checksum": "ff1783c1fe1f01482ab6bfc1f4780fec", + "size_kb": 0.9 + }, + "plh_images/icons/smile_eyes_down_white.svg": { + "filePath": "global/plh_images/icons/smile_eyes_down_white.svg", + "md5Checksum": "30244517f7a0f05834b45bd964f675f1", + "size_kb": 1 + }, + "plh_images/icons/smile_eyes_up.svg": { + "filePath": "global/plh_images/icons/smile_eyes_up.svg", + "md5Checksum": "0fc25de0fd953eb65f9cb4a519aee45f", + "size_kb": 1 + }, + "plh_images/icons/smile_eyes_up_white.svg": { + "filePath": "global/plh_images/icons/smile_eyes_up_white.svg", + "md5Checksum": "b033b60520fbb70b53f2c97a91b6518a", + "size_kb": 1 + }, + "plh_images/icons/star.svg": { + "filePath": "global/plh_images/icons/star.svg", + "md5Checksum": "7d4e0f861269a6d8b84456aa7302fa8e", + "size_kb": 0.6 + }, + "plh_images/icons/star_circle.svg": { + "filePath": "global/plh_images/icons/star_circle.svg", + "md5Checksum": "2184a733c02c9f16c996a89859afff82", + "size_kb": 1.5 + }, + "plh_images/icons/star_outline.svg": { + "filePath": "global/plh_images/icons/star_outline.svg", + "md5Checksum": "db0b8e4ba99b48681840fc6ec93144c1", + "size_kb": 1 + }, + "plh_images/icons/star_white.svg": { + "filePath": "global/plh_images/icons/star_white.svg", + "md5Checksum": "0f9f695561b9bd2c21944bb6dd47d704", + "size_kb": 1 + }, + "plh_images/icons/temporarily_disabled.svg": { + "filePath": "global/plh_images/icons/temporarily_disabled.svg", + "md5Checksum": "7138e91fb739032209c9f3bee6d5ae1f", + "size_kb": 1.2 + }, + "plh_images/icons/temporarily_disabled_white.svg": { + "filePath": "global/plh_images/icons/temporarily_disabled_white.svg", + "md5Checksum": "5e779b9b284bc8170eb8a8ae54948a01", + "size_kb": 1.2 + }, + "plh_images/icons/tick.svg": { + "filePath": "global/plh_images/icons/tick.svg", + "md5Checksum": "b4e6f1e9ba6e5bcdd2e404bc432ba745", + "size_kb": 0.3 + }, + "plh_images/icons/tick_circle.svg": { + "filePath": "global/plh_images/icons/tick_circle.svg", + "md5Checksum": "d4ff6d5bcebe86bf95b4751cdf43a741", + "size_kb": 1.8 + }, + "plh_images/icons/tick_outline.svg": { + "filePath": "global/plh_images/icons/tick_outline.svg", + "md5Checksum": "7b2179b8376e693f466c5f997ec1c2b5", + "size_kb": 0.7 + }, + "plh_images/icons/tick_white.svg": { + "filePath": "global/plh_images/icons/tick_white.svg", + "md5Checksum": "81136e04436759812dc3f6e90c61de11", + "size_kb": 0.3 + }, + "plh_images/icons/unlock.svg": { + "filePath": "global/plh_images/icons/unlock.svg", + "md5Checksum": "83e81b32bf3e400a47dc89343db4718e", + "size_kb": 0.8 + }, + "plh_images/icons/unlock_circle.svg": { + "filePath": "global/plh_images/icons/unlock_circle.svg", + "md5Checksum": "aa719099a268681fdadd80fbd4d25fd6", + "size_kb": 1 + }, + "plh_images/icons/unlock_outline.svg": { + "filePath": "global/plh_images/icons/unlock_outline.svg", + "md5Checksum": "b2baf969abbe27383327d1d82f6a644c", + "size_kb": 0.9 + }, + "plh_images/logos/cwb.png": { + "filePath": "global/plh_images/logos/cwb.png", + "md5Checksum": "7d927cc9beb9ac5369f91b47b6c875c3", + "size_kb": 154.8 + }, + "plh_images/logos/cwb_blue.png": { + "filePath": "global/plh_images/logos/cwb_blue.png", + "md5Checksum": "96ca4be5f77d2647764c06c51bc5411f", + "size_kb": 56.3 + }, + "plh_images/logos/erc.png": { + "filePath": "global/plh_images/logos/erc.png", + "md5Checksum": "9a0b2473644eec219f148c38ba952fdf", + "size_kb": 105.3 + }, + "plh_images/logos/erc_blue.png": { + "filePath": "global/plh_images/logos/erc_blue.png", + "md5Checksum": "55f8f51b3463f962b3689b1dd7805d49", + "size_kb": 96.4 + }, + "plh_images/logos/gcrf.png": { + "filePath": "global/plh_images/logos/gcrf.png", + "md5Checksum": "829a9435aae650809619df6ffb4cf4fd", + "size_kb": 111.7 + }, + "plh_images/logos/gcrf_blue.png": { + "filePath": "global/plh_images/logos/gcrf_blue.png", + "md5Checksum": "68a32997af07aa3c721d318f7fa90050", + "size_kb": 56.4 + }, + "plh_images/logos/gisp.png": { + "filePath": "global/plh_images/logos/gisp.png", + "md5Checksum": "120676ea8e2ecfc6ec9b53665ea7d205", + "size_kb": 55.4 + }, + "plh_images/logos/gisp_blue.png": { + "filePath": "global/plh_images/logos/gisp_blue.png", + "md5Checksum": "413bbb0015d29c1201961bfbd5b05e09", + "size_kb": 53.9 + }, + "plh_images/logos/ics.png": { + "filePath": "global/plh_images/logos/ics.png", + "md5Checksum": "306de65a6168702dc582e20ddd72592d", + "size_kb": 367.9 + }, + "plh_images/logos/ics_blue.png": { + "filePath": "global/plh_images/logos/ics_blue.png", + "md5Checksum": "0cf239a90bf039f26613d4386db43a66", + "size_kb": 153 + }, + "plh_images/logos/idems.png": { + "filePath": "global/plh_images/logos/idems.png", + "md5Checksum": "31379d2c24b6ccacd13036ab50b6660e", + "size_kb": 75.6 + }, + "plh_images/logos/idems_blue.png": { + "filePath": "global/plh_images/logos/idems_blue.png", + "md5Checksum": "7a9836027993f71cbd19a871e16fe450", + "size_kb": 39.4 + }, + "plh_images/logos/innodems.png": { + "filePath": "global/plh_images/logos/innodems.png", + "md5Checksum": "21a95d3e386ed06e3097913311aa1364", + "size_kb": 87.3 + }, + "plh_images/logos/lego_foundation.png": { + "filePath": "global/plh_images/logos/lego_foundation.png", + "md5Checksum": "b65dda37d388c6f8aeea7213bf98fe54", + "size_kb": 54.4 + }, + "plh_images/logos/lego_foundation_blue.png": { + "filePath": "global/plh_images/logos/lego_foundation_blue.png", + "md5Checksum": "a1de5d3618c53d5a7016f2b67e4819bf", + "size_kb": 39.3 + }, + "plh_images/logos/nimr.png": { + "filePath": "global/plh_images/logos/nimr.png", + "md5Checksum": "5cd54334fa9fad5a129b165c1053cba6", + "size_kb": 66 + }, + "plh_images/logos/nimr_blue.png": { + "filePath": "global/plh_images/logos/nimr_blue.png", + "md5Checksum": "4937f247b3e71fa05eb9885beb40c66f", + "size_kb": 222.6 + }, + "plh_images/logos/oak_foundation.png": { + "filePath": "global/plh_images/logos/oak_foundation.png", + "md5Checksum": "eedd51376b0839bd7305a1adc4429c2b", + "size_kb": 69.2 + }, + "plh_images/logos/oak_foundation_blue.png": { + "filePath": "global/plh_images/logos/oak_foundation_blue.png", + "md5Checksum": "091e9aafa6eec611dd6717ee2583cfcb", + "size_kb": 48.2 + }, + "plh_images/logos/old/end_violence_against_children.png": { + "filePath": "global/plh_images/logos/old/end_violence_against_children.png", + "md5Checksum": "42a6b3a80ff26261d75ac38ccfdad863", + "size_kb": 21.4 + }, + "plh_images/logos/old/generali_human_safety_net.png": { + "filePath": "global/plh_images/logos/old/generali_human_safety_net.png", + "md5Checksum": "048861ee167499c5320a23786cd697f8", + "size_kb": 39.7 + }, + "plh_images/logos/old/newton_fund.png": { + "filePath": "global/plh_images/logos/old/newton_fund.png", + "md5Checksum": "97c52b2da9fc03641461ce8aa0174f36", + "size_kb": 14.3 + }, + "plh_images/logos/plh.png": { + "filePath": "global/plh_images/logos/plh.png", + "md5Checksum": "35ccb54756451169595910cb754c69cc", + "size_kb": 163.3 + }, + "plh_images/logos/plh_blue.png": { + "filePath": "global/plh_images/logos/plh_blue.png", + "md5Checksum": "63e24b7c8b6f77e1bb13546059203075", + "size_kb": 163.3 + }, + "plh_images/logos/tz_government.png": { + "filePath": "global/plh_images/logos/tz_government.png", + "md5Checksum": "d925d10404f9980f4ccaccd3077011f8", + "size_kb": 116.4 + }, + "plh_images/logos/tz_government_blue.png": { + "filePath": "global/plh_images/logos/tz_government_blue.png", + "md5Checksum": "38351450d8ecaa1f131635937750b03f", + "size_kb": 443.2 + }, + "plh_images/logos/uct.png": { + "filePath": "global/plh_images/logos/uct.png", + "md5Checksum": "0779b98857a25376c23efaf4854b9eb6", + "size_kb": 118 + }, + "plh_images/logos/uct_blue.png": { + "filePath": "global/plh_images/logos/uct_blue.png", + "md5Checksum": "00601e7a7eb016aa58cfd841d55219ab", + "size_kb": 131.5 + }, + "plh_images/logos/ukri.png": { + "filePath": "global/plh_images/logos/ukri.png", + "md5Checksum": "b909b91c3391b798483b6207b47c01d7", + "size_kb": 40.1 + }, + "plh_images/logos/ukri_blue.png": { + "filePath": "global/plh_images/logos/ukri_blue.png", + "md5Checksum": "321908826b3a1465ac61d4d4d80dfa3b", + "size_kb": 37.6 + }, + "plh_images/logos/unicef.png": { + "filePath": "global/plh_images/logos/unicef.png", + "md5Checksum": "801d6ef85266fb61fa1a754ed93f90a5", + "size_kb": 66 + }, + "plh_images/logos/unicef_blue.png": { + "filePath": "global/plh_images/logos/unicef_blue.png", + "md5Checksum": "893d4022f7d8ff914c4d5917efaf0356", + "size_kb": 49.3 + }, + "plh_images/logos/university_of_oxford.png": { + "filePath": "global/plh_images/logos/university_of_oxford.png", + "md5Checksum": "db31366ffa5b4e98892828b320c9e6ae", + "size_kb": 92.7 + }, + "plh_images/logos/university_of_oxford_blue.png": { + "filePath": "global/plh_images/logos/university_of_oxford_blue.png", + "md5Checksum": "0009af508ce7eb45c677828c7f9e4395", + "size_kb": 71.2 + }, + "plh_images/logos/usaid.png": { + "filePath": "global/plh_images/logos/usaid.png", + "md5Checksum": "09e502ad96ae7e446e100da130ec3b32", + "size_kb": 121.6 + }, + "plh_images/logos/usaid_blue.png": { + "filePath": "global/plh_images/logos/usaid_blue.png", + "md5Checksum": "7ba000baf996668a493b0af9a4bfa698", + "size_kb": 68.7 + }, + "plh_images/logos/vodacom.png": { + "filePath": "global/plh_images/logos/vodacom.png", + "md5Checksum": "9e97c78d03f479d05cbdf04b6990c9e3", + "size_kb": 58.6 + }, + "plh_images/logos/wellspring.png": { + "filePath": "global/plh_images/logos/wellspring.png", + "md5Checksum": "6da4d0647f09eb8fc8e0efb1a856f1ae", + "size_kb": 61.7 + }, + "plh_images/logos/wellspring_blue.png": { + "filePath": "global/plh_images/logos/wellspring_blue.png", + "md5Checksum": "e9e4f5d3205a0befe50dc8f219f65cb2", + "size_kb": 65.4 + }, + "plh_images/logos/who.png": { + "filePath": "global/plh_images/logos/who.png", + "md5Checksum": "a2bd1255743d407c6ede193fea813883", + "size_kb": 105 + }, + "plh_images/logos/who_blue.png": { + "filePath": "global/plh_images/logos/who_blue.png", + "md5Checksum": "297544696aaa8a242ac36ffd19f06849", + "size_kb": 108 + }, + "plh_images/logos/za_dsd.png": { + "filePath": "global/plh_images/logos/za_dsd.png", + "md5Checksum": "6f9397395b9fa9a195f73808844d5b87", + "size_kb": 154.5 + }, + "plh_images/logos/za_dsd_blue.png": { + "filePath": "global/plh_images/logos/za_dsd_blue.png", + "md5Checksum": "186e0729316e0bad64ede2908da972d4", + "size_kb": 112.5 + }, + "plh_images/parent_centre/ask.svg": { + "filePath": "global/plh_images/parent_centre/ask.svg", + "md5Checksum": "5812093b7abe8ec62a0ec0b1e3f80451", + "size_kb": 1 + }, + "plh_images/parent_centre/ask_white.svg": { + "filePath": "global/plh_images/parent_centre/ask_white.svg", + "md5Checksum": "f23ed615c94c89439a71a5ae84b6b8e3", + "size_kb": 1.5 + }, + "plh_images/parent_centre/bereavement/practical.svg": { + "filePath": "global/plh_images/parent_centre/bereavement/practical.svg", + "md5Checksum": "825f6d3d64262bb41abd986094828da6", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/bereavement/practical.svg", + "md5Checksum": "5e9397b0a722852fac6ca85586773c09", + "size_kb": 27.2 + } + } + }, + "size_kb": 6.8 + }, + "plh_images/parent_centre/bereavement/self.svg": { + "filePath": "global/plh_images/parent_centre/bereavement/self.svg", + "md5Checksum": "16ff8218ee6023f4e390a17219019d96", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/bereavement/self.svg", + "md5Checksum": "e276ce62651e73296471523156c3bba3", + "size_kb": 15.4 + } + } + }, + "size_kb": 3.9 + }, + "plh_images/parent_centre/bereavement/teen.svg": { + "filePath": "global/plh_images/parent_centre/bereavement/teen.svg", + "md5Checksum": "dc6214c976df912b76fe3fa1331862f0", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/bereavement/teen.svg", + "md5Checksum": "bc4cd6fd486efa806e4d90722474fa94", + "size_kb": 22 + } + } + }, + "size_kb": 4.5 + }, + "plh_images/parent_centre/covid/change_thoughts.svg": { + "filePath": "global/plh_images/parent_centre/covid/change_thoughts.svg", + "md5Checksum": "17da7fe8b1c7e89fe276d49bb4401264", + "size_kb": 3.3 + }, + "plh_images/parent_centre/covid/deal_with_news.svg": { + "filePath": "global/plh_images/parent_centre/covid/deal_with_news.svg", + "md5Checksum": "5d467475d3142f2a795f3fe91556e493", + "size_kb": 3 + }, + "plh_images/parent_centre/covid/help_teen_choose.svg": { + "filePath": "global/plh_images/parent_centre/covid/help_teen_choose.svg", + "md5Checksum": "504d535912d08889d5caabb312b9d236", + "size_kb": 6 + }, + "plh_images/parent_centre/covid/main.svg": { + "filePath": "global/plh_images/parent_centre/covid/main.svg", + "md5Checksum": "50366ba83be0d3bbdce07a43a94b4abc", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/covid/main.svg", + "md5Checksum": "5bbca46cfcf2b8ef3b106e6383703235", + "size_kb": 23.1 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/parent_centre/covid/talk_to_teen.svg": { + "filePath": "global/plh_images/parent_centre/covid/talk_to_teen.svg", + "md5Checksum": "bc05d895bd500c636a2deacdc1f975b3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/covid/talk_to_teen.svg", + "md5Checksum": "498c37573338e606712274917b9feba2", + "size_kb": 39.2 + } + } + }, + "size_kb": 6 + }, + "plh_images/parent_centre/covid/teen_feelings.svg": { + "filePath": "global/plh_images/parent_centre/covid/teen_feelings.svg", + "md5Checksum": "365fb9924dd72a28d130cd13708dee75", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/parent_centre/covid/teen_feelings.svg", + "md5Checksum": "146fdaf5c2ed41550302694c83e13c4a", + "size_kb": 23.7 + } + } + }, + "size_kb": 4.9 + }, + "plh_images/parent_centre/covid/teen_influences.svg": { + "filePath": "global/plh_images/parent_centre/covid/teen_influences.svg", + "md5Checksum": "0c2f8be2060200ffa59d4928e6eb5ffe", + "size_kb": 7.3 + }, + "plh_images/parent_centre/hands_carrying_heart.svg": { + "filePath": "global/plh_images/parent_centre/hands_carrying_heart.svg", + "md5Checksum": "4a299953a13ec4daf19b632bb73161b9", + "size_kb": 2.8 + }, + "plh_images/parent_centre/hands_carrying_heart_white.svg": { + "filePath": "global/plh_images/parent_centre/hands_carrying_heart_white.svg", + "md5Checksum": "8b346df1f084ea8fb6344ed8f8332131", + "size_kb": 3.3 + }, + "plh_images/parent_centre/hug_heart.svg": { + "filePath": "global/plh_images/parent_centre/hug_heart.svg", + "md5Checksum": "167ef34df9807381fc5438a8c4bdddf1", + "size_kb": 2.3 + }, + "plh_images/parent_centre/hug_heart_white.svg": { + "filePath": "global/plh_images/parent_centre/hug_heart_white.svg", + "md5Checksum": "c93c83ec30bf44fec991248ae3279646", + "size_kb": 2.6 + }, + "plh_images/parent_centre/info_circle.svg": { + "filePath": "global/plh_images/parent_centre/info_circle.svg", + "md5Checksum": "98b77c5dac5f73c97e47c418973d1640", + "size_kb": 0.6 + }, + "plh_images/parent_centre/info_circle_white.svg": { + "filePath": "global/plh_images/parent_centre/info_circle_white.svg", + "md5Checksum": "59246aa47a927a25f7ac9199103391de", + "size_kb": 1.1 + }, + "plh_images/parent_centre/info_phone.svg": { + "filePath": "global/plh_images/parent_centre/info_phone.svg", + "md5Checksum": "8d99de07c1e10ae6511e1da029bfc0a5", + "size_kb": 1 + }, + "plh_images/parent_centre/info_phone_white.svg": { + "filePath": "global/plh_images/parent_centre/info_phone_white.svg", + "md5Checksum": "85a6fbb11d058257a20d2914ccc4cc36", + "size_kb": 1.5 + }, + "plh_images/parent_centre/light_bulb.svg": { + "filePath": "global/plh_images/parent_centre/light_bulb.svg", + "md5Checksum": "d6f1a6f622f98dd77864f9e0089089d6", + "size_kb": 3.8 + }, + "plh_images/parent_centre/light_bulb_white.svg": { + "filePath": "global/plh_images/parent_centre/light_bulb_white.svg", + "md5Checksum": "b5ddfc27405c3be94371e9cbdd63ccf5", + "size_kb": 3.8 + }, + "plh_images/parent_centre/paper_stack.svg": { + "filePath": "global/plh_images/parent_centre/paper_stack.svg", + "md5Checksum": "0fd8aa1106f740a5dcb6b4e09f03817d", + "size_kb": 1 + }, + "plh_images/parent_centre/paper_stack_white.svg": { + "filePath": "global/plh_images/parent_centre/paper_stack_white.svg", + "md5Checksum": "a50a767318ba3662eb56469c3f5cf508", + "size_kb": 1.5 + }, + "plh_images/parent_centre/smile.svg": { + "filePath": "global/plh_images/parent_centre/smile.svg", + "md5Checksum": "9c5766e40b0bfa7adc03dd2e7ba52519", + "size_kb": 1.4 + }, + "plh_images/parent_centre/smile_white.svg": { + "filePath": "global/plh_images/parent_centre/smile_white.svg", + "md5Checksum": "d94f8b0535a84dbdf3161169d401451c", + "size_kb": 1.4 + }, + "plh_images/stickers/faces/angry.svg": { + "filePath": "global/plh_images/stickers/faces/angry.svg", + "md5Checksum": "4b611cabdc397449fde8d6ad00572514", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/angry.svg", + "md5Checksum": "6d192431f48bbb8af4b206967053796e", + "size_kb": 1.1 + } + } + }, + "size_kb": 1.6 + }, + "plh_images/stickers/faces/confused.svg": { + "filePath": "global/plh_images/stickers/faces/confused.svg", + "md5Checksum": "a018ac1dc24a55caaef36f6d17a10f77", + "size_kb": 2.5 + }, + "plh_images/stickers/faces/confused_question_mark.svg": { + "filePath": "global/plh_images/stickers/faces/confused_question_mark.svg", + "md5Checksum": "c0dcce9c87ac4126703a88949c1ec241", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/confused_question_mark.svg", + "md5Checksum": "2304dec77199f522899f7765b96e114e", + "size_kb": 1.9 + } + } + }, + "size_kb": 1.9 + }, + "plh_images/stickers/faces/happier.svg": { + "filePath": "global/plh_images/stickers/faces/happier.svg", + "md5Checksum": "3566fd7a04f57339d7cfcb3892ec106a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/happier.svg", + "md5Checksum": "971f8d822fb3d3d79163d0ed327b052d", + "size_kb": 1.3 + } + } + }, + "size_kb": 1.6 + }, + "plh_images/stickers/faces/happiest.svg": { + "filePath": "global/plh_images/stickers/faces/happiest.svg", + "md5Checksum": "ad04574a244f87eb5e4b4e5098d2032f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/happiest.svg", + "md5Checksum": "895e666c011de147560520819eda519b", + "size_kb": 1.6 + } + } + }, + "size_kb": 0.8 + }, + "plh_images/stickers/faces/happy.svg": { + "filePath": "global/plh_images/stickers/faces/happy.svg", + "md5Checksum": "a7b9e40d88b585db367be8a766280b03", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/happy.svg", + "md5Checksum": "944098603096a04cd988ebf9554aba5f", + "size_kb": 0.7 + } + } + }, + "size_kb": 0.9 + }, + "plh_images/stickers/faces/neutral.svg": { + "filePath": "global/plh_images/stickers/faces/neutral.svg", + "md5Checksum": "c5c06b436223337c72b3f9f0f0efdab6", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/neutral.svg", + "md5Checksum": "adc1012f5de15b8a2462eaca6cedcb36", + "size_kb": 0.5 + } + } + }, + "size_kb": 1.6 + }, + "plh_images/stickers/faces/sad.svg": { + "filePath": "global/plh_images/stickers/faces/sad.svg", + "md5Checksum": "5b7f24f15fcb959463c2505aa57b67d5", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/sad.svg", + "md5Checksum": "78c6d7693501b2e62af8ca9af4e0f92a", + "size_kb": 0.7 + } + } + }, + "size_kb": 1.3 + }, + "plh_images/stickers/faces/sadder.svg": { + "filePath": "global/plh_images/stickers/faces/sadder.svg", + "md5Checksum": "e7c00a5eab887ebe1d5ae258c03c2fd1", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/sadder.svg", + "md5Checksum": "9399ec18c80f26a1567df0ad709b0db6", + "size_kb": 1.1 + } + } + }, + "size_kb": 1.8 + }, + "plh_images/stickers/faces/saddest.svg": { + "filePath": "global/plh_images/stickers/faces/saddest.svg", + "md5Checksum": "96087c1704506ae5591860dd9b6b70e5", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/saddest.svg", + "md5Checksum": "14da2e51687b6ac5b5929665fa4a38e3", + "size_kb": 1.6 + } + } + }, + "size_kb": 1.2 + }, + "plh_images/stickers/faces/scared.svg": { + "filePath": "global/plh_images/stickers/faces/scared.svg", + "md5Checksum": "17a1d4f582bcc1bda88eedee1c53a851", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/scared.svg", + "md5Checksum": "e42757c3a1b799ff614fa6845e78a59e", + "size_kb": 1.8 + } + } + }, + "size_kb": 1.8 + }, + "plh_images/stickers/faces/tired.svg": { + "filePath": "global/plh_images/stickers/faces/tired.svg", + "md5Checksum": "1843c40d0c0b2f2116ca440e93578db3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/stickers/faces/tired.svg", + "md5Checksum": "db13dd14dbc30defa2633ae82b8bfc7b", + "size_kb": 2.4 + } + } + }, + "size_kb": 1.8 + }, + "plh_images/survey/welcome/busy.svg": { + "filePath": "global/plh_images/survey/welcome/busy.svg", + "md5Checksum": "a29aa4d7d1cd62b7dec1c970fe00efac", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/busy.svg", + "md5Checksum": "ce6f313ece29dd20d17d88e7ee049072", + "size_kb": 58.6 + } + } + }, + "size_kb": 22.5 + }, + "plh_images/survey/welcome/coffee.svg": { + "filePath": "global/plh_images/survey/welcome/coffee.svg", + "md5Checksum": "2d70896bbb01107b0f7c078d8a53765c", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/coffee.svg", + "md5Checksum": "7f8cd56c88c9adb4359d19ad2a55eb6a", + "size_kb": 12.7 + } + } + }, + "size_kb": 4.4 + }, + "plh_images/survey/welcome/guide_1_argument.svg": { + "filePath": "global/plh_images/survey/welcome/guide_1_argument.svg", + "md5Checksum": "f5f6660895ad44eb21d8a07a8d55d3cb", + "size_kb": 9.4 + }, + "plh_images/survey/welcome/guide_1_frustrated.svg": { + "filePath": "global/plh_images/survey/welcome/guide_1_frustrated.svg", + "md5Checksum": "160a753ba2b73c2ad88f979ccc2b770d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/guide_1_frustrated.svg", + "md5Checksum": "24d9965041cb9de69688c92551a09a05", + "size_kb": 41.1 + } + } + }, + "size_kb": 13.4 + }, + "plh_images/survey/welcome/guide_1_key.svg": { + "filePath": "global/plh_images/survey/welcome/guide_1_key.svg", + "md5Checksum": "f46f5010fb6dce0fe3db84a6e444d303", + "size_kb": 4.2 + }, + "plh_images/survey/welcome/guide_1_nervous.svg": { + "filePath": "global/plh_images/survey/welcome/guide_1_nervous.svg", + "md5Checksum": "7ef07ef283fec83f61b37d648d08493b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/guide_1_nervous.svg", + "md5Checksum": "722b7fe4c99ac50fb6936257e1726c66", + "size_kb": 16.3 + } + } + }, + "size_kb": 3.2 + }, + "plh_images/survey/welcome/guide_1_worried.svg": { + "filePath": "global/plh_images/survey/welcome/guide_1_worried.svg", + "md5Checksum": "1fb80e89545868a0021861de2a64a044", + "size_kb": 2.8 + }, + "plh_images/survey/welcome/guide_2_argument.svg": { + "filePath": "global/plh_images/survey/welcome/guide_2_argument.svg", + "md5Checksum": "118787ffc4af0f0ba4594e3febbc5bc4", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/guide_2_argument.svg", + "md5Checksum": "22b3c0b7aa0cba4f697f4bda3df73259", + "size_kb": 31.7 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/survey/welcome/guide_2_frustrated.svg": { + "filePath": "global/plh_images/survey/welcome/guide_2_frustrated.svg", + "md5Checksum": "470c92b1672274efad8a318d99f7a095", + "size_kb": 16.5 + }, + "plh_images/survey/welcome/guide_2_key.svg": { + "filePath": "global/plh_images/survey/welcome/guide_2_key.svg", + "md5Checksum": "cffd391706ed7fb4740c625e0dba6b3e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/welcome/guide_2_key.svg", + "md5Checksum": "410a56770329d3a5eecd4445738e1676", + "size_kb": 22.6 + } + } + }, + "size_kb": 4.1 + }, + "plh_images/survey/welcome/guide_2_nervous.svg": { + "filePath": "global/plh_images/survey/welcome/guide_2_nervous.svg", + "md5Checksum": "a41019192af698623a694caef34d440d", + "size_kb": 3.1 + }, + "plh_images/survey/welcome/guide_2_worried.svg": { + "filePath": "global/plh_images/survey/welcome/guide_2_worried.svg", + "md5Checksum": "f02789fbfc31a78bfab7cc0beb31f984", + "size_kb": 3.8 + }, + "plh_images/survey/workshop_setup/adults.svg": { + "filePath": "global/plh_images/survey/workshop_setup/adults.svg", + "md5Checksum": "51d018205f5a79ea5be088f32fe1af5a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/adults.svg", + "md5Checksum": "5cb3e6c2c728f5fbcfa22b1c4822d93a", + "size_kb": 36.9 + } + } + }, + "size_kb": 7.6 + }, + "plh_images/survey/workshop_setup/age_image.svg": { + "filePath": "global/plh_images/survey/workshop_setup/age_image.svg", + "md5Checksum": "f1411ce479a9e92b6a8dd891c84ca6da", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/age_image.svg", + "md5Checksum": "506105c4a957f1717b9a8b70ec8b9bd6", + "size_kb": 87.9 + } + } + }, + "size_kb": 12.2 + }, + "plh_images/survey/workshop_setup/babies.svg": { + "filePath": "global/plh_images/survey/workshop_setup/babies.svg", + "md5Checksum": "f2912796b782f7665896559d447df010", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/babies.svg", + "md5Checksum": "c54244310d13db192fba448b1c4360ed", + "size_kb": 12.7 + } + } + }, + "size_kb": 5.2 + }, + "plh_images/survey/workshop_setup/children.svg": { + "filePath": "global/plh_images/survey/workshop_setup/children.svg", + "md5Checksum": "055295df4acc07a21fd0d7666ec4cb98", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/children.svg", + "md5Checksum": "14e60138d7b8164c45df872ee874c8ea", + "size_kb": 31.2 + } + } + }, + "size_kb": 7.2 + }, + "plh_images/survey/workshop_setup/high_five.svg": { + "filePath": "global/plh_images/survey/workshop_setup/high_five.svg", + "md5Checksum": "39a9246a112f8ea116487ed0731eb44b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/high_five.svg", + "md5Checksum": "4a6153ba427aa82b42e5d650b3a94b93", + "size_kb": 40.5 + } + } + }, + "size_kb": 6 + }, + "plh_images/survey/workshop_setup/teens.svg": { + "filePath": "global/plh_images/survey/workshop_setup/teens.svg", + "md5Checksum": "d31a8c5417063c62eed128e98c530367", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/survey/workshop_setup/teens.svg", + "md5Checksum": "dea4ef69d77458e989575ee3b713a88c", + "size_kb": 26.9 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/workshop_modes/group/cup.svg": { + "filePath": "global/plh_images/workshop_modes/group/cup.svg", + "md5Checksum": "08eed96abcb06128573e5ccbf01c3616", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/cup.svg", + "md5Checksum": "74aa5202ef046297670ac09f91afc5b0", + "size_kb": 60.9 + } + } + }, + "size_kb": 149.5 + }, + "plh_images/workshop_modes/group/final/cup.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/cup.svg", + "md5Checksum": "317e835859b4faa82591e38e7f2cd4ad", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/final/cup.svg", + "md5Checksum": "286727168b16df1ec23dd855ff048cd5", + "size_kb": 106.5 + } + } + }, + "size_kb": 145.7 + }, + "plh_images/workshop_modes/group/final/light_bulb.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/light_bulb.svg", + "md5Checksum": "1083d38169935a6fc6dd69b0d2fbbfee", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/final/light_bulb.svg", + "md5Checksum": "3cb3f010fb7e7b91d141b16136d06fd0", + "size_kb": 109.9 + } + } + }, + "size_kb": 147.3 + }, + "plh_images/workshop_modes/group/final/notes.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/notes.svg", + "md5Checksum": "a53bbb2dcf12a5fef6beb7f13faf297b", + "size_kb": 145.9 + }, + "plh_images/workshop_modes/group/final/read.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/read.svg", + "md5Checksum": "89850820e3571977535839c954820df3", + "size_kb": 146.8 + }, + "plh_images/workshop_modes/group/final/relax.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/relax.svg", + "md5Checksum": "fdc0856e935e7d246401af6169a06e61", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/final/relax.svg", + "md5Checksum": "d93fbd88c0ec3bfba0b3ada47ca3dcc2", + "size_kb": 97.9 + } + } + }, + "size_kb": 144.4 + }, + "plh_images/workshop_modes/group/final/talk.svg": { + "filePath": "global/plh_images/workshop_modes/group/final/talk.svg", + "md5Checksum": "1bc7bf19c6f052cdb64a3d5e505b4df3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/final/talk.svg", + "md5Checksum": "a011afe34f59406a41e368048c566f9d", + "size_kb": 80.3 + } + } + }, + "size_kb": 144.3 + }, + "plh_images/workshop_modes/group/light_bulb.svg": { + "filePath": "global/plh_images/workshop_modes/group/light_bulb.svg", + "md5Checksum": "d0174c8ca586c73cf5c05c52138854bf", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/light_bulb.svg", + "md5Checksum": "a8372110fb41a71e4cdb54ef16f7343c", + "size_kb": 63.9 + } + } + }, + "size_kb": 143.6 + }, + "plh_images/workshop_modes/group/notes.svg": { + "filePath": "global/plh_images/workshop_modes/group/notes.svg", + "md5Checksum": "657c4a42011d747d0e3c1939edebfd54", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/notes.svg", + "md5Checksum": "8e63744098880f686dd4c1cca7667475", + "size_kb": 56.4 + } + } + }, + "size_kb": 142.2 + }, + "plh_images/workshop_modes/group/read.svg": { + "filePath": "global/plh_images/workshop_modes/group/read.svg", + "md5Checksum": "d518d1d0a2325d11d813ba71c5a128aa", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/read.svg", + "md5Checksum": "58cd8718803d98dc74deb88eb4ebce52", + "size_kb": 55.9 + } + } + }, + "size_kb": 143.2 + }, + "plh_images/workshop_modes/group/relax.svg": { + "filePath": "global/plh_images/workshop_modes/group/relax.svg", + "md5Checksum": "da1e1ee4e68ef744eb917c128ce426ff", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/relax.svg", + "md5Checksum": "f3a762477e7dafb81f1925fa8a43232c", + "size_kb": 50.8 + } + } + }, + "size_kb": 140.7 + }, + "plh_images/workshop_modes/group/talk.svg": { + "filePath": "global/plh_images/workshop_modes/group/talk.svg", + "md5Checksum": "c31e79168837723e0becf5210fd673b3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/talk.svg", + "md5Checksum": "beb4b6142432d3b8679fc0863b1d1804", + "size_kb": 33.5 + } + } + }, + "size_kb": 140.7 + }, + "plh_images/workshop_modes/group/with_teen.svg": { + "filePath": "global/plh_images/workshop_modes/group/with_teen.svg", + "md5Checksum": "d0f425c460bff0adf11be5bed24d483e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/group/with_teen.svg", + "md5Checksum": "1030b1e3df1ff98bca5f54c9c98ab495", + "size_kb": 24.3 + } + } + }, + "size_kb": 5.4 + }, + "plh_images/workshop_modes/individual/breathe.svg": { + "filePath": "global/plh_images/workshop_modes/individual/breathe.svg", + "md5Checksum": "284285870cd683c71190ab4004cf4d70", + "size_kb": 2.3 + }, + "plh_images/workshop_modes/individual/cup.svg": { + "filePath": "global/plh_images/workshop_modes/individual/cup.svg", + "md5Checksum": "6549a769cb31d831ef27234f91756041", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/cup.svg", + "md5Checksum": "ab5a1837be25fa9f6c07ea5b00d5ef9d", + "size_kb": 17.1 + } + } + }, + "size_kb": 5.8 + }, + "plh_images/workshop_modes/individual/explain.svg": { + "filePath": "global/plh_images/workshop_modes/individual/explain.svg", + "md5Checksum": "563c9632f379e12af0159f39256dcd81", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/explain.svg", + "md5Checksum": "b12fb7be38a646102df3443a85e8939d", + "size_kb": 8.9 + } + } + }, + "size_kb": 3.4 + }, + "plh_images/workshop_modes/individual/final/cup.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/cup.svg", + "md5Checksum": "54b84af382b03708d44ad0846572fe13", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/cup.svg", + "md5Checksum": "e725449da44a72eb62888d6913435dbc", + "size_kb": 35.6 + } + } + }, + "size_kb": 10.3 + }, + "plh_images/workshop_modes/individual/final/explain.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/explain.svg", + "md5Checksum": "563c9632f379e12af0159f39256dcd81", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/explain.svg", + "md5Checksum": "dab4ef8540105aa2cecb73ec7c9bf178", + "size_kb": 28.7 + } + } + }, + "size_kb": 3.4 + }, + "plh_images/workshop_modes/individual/final/light_bulb.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/light_bulb.svg", + "md5Checksum": "698fdc0e47cc97fc378ddaafbbe9c698", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/light_bulb.svg", + "md5Checksum": "47db8ce7ee4437e3f289e04560fd6035", + "size_kb": 42.2 + } + } + }, + "size_kb": 5.6 + }, + "plh_images/workshop_modes/individual/final/notes.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/notes.svg", + "md5Checksum": "a105ae26a2e7de1efc421f1e832acb65", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/notes.svg", + "md5Checksum": "a8192fe36173916dd69010ac8bb9cd53", + "size_kb": 33.3 + } + } + }, + "size_kb": 57.5 + }, + "plh_images/workshop_modes/individual/final/read.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/read.svg", + "md5Checksum": "37004d531d300bcba599761b8fde65c3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/read.svg", + "md5Checksum": "06f84c13446845bb5ee1d01b7b62b442", + "size_kb": 38.6 + } + } + }, + "size_kb": 3.7 + }, + "plh_images/workshop_modes/individual/final/relax.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/relax.svg", + "md5Checksum": "af45d95d4d9d7b5be6055cd90b0d6c33", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/relax.svg", + "md5Checksum": "5c4972d84b75189d1ceecf924794c341", + "size_kb": 45.9 + } + } + }, + "size_kb": 3.8 + }, + "plh_images/workshop_modes/individual/final/star.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/star.svg", + "md5Checksum": "627c2d07c624f9c4194c9967705f774d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/star.svg", + "md5Checksum": "934a93eb8bf91cc459360ca311a7c384", + "size_kb": 39.4 + } + } + }, + "size_kb": 4.7 + }, + "plh_images/workshop_modes/individual/final/thumbs_up.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/thumbs_up.svg", + "md5Checksum": "fed8fb95625b99aa3a612b2284869a96", + "size_kb": 4.4 + }, + "plh_images/workshop_modes/individual/final/wave.svg": { + "filePath": "global/plh_images/workshop_modes/individual/final/wave.svg", + "md5Checksum": "fbd12bcc51d17917bc96fa76fb8567ac", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/final/wave.svg", + "md5Checksum": "ad8e199e90b4c76647b3425797e009f2", + "size_kb": 28.2 + } + } + }, + "size_kb": 4 + }, + "plh_images/workshop_modes/individual/light_bulb.svg": { + "filePath": "global/plh_images/workshop_modes/individual/light_bulb.svg", + "md5Checksum": "056e44ecd0260d2d4f09be31031d3ab4", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/light_bulb.svg", + "md5Checksum": "7e595824abebdfd70ff7428bdae867d7", + "size_kb": 22.8 + } + } + }, + "size_kb": 4.6 + }, + "plh_images/workshop_modes/individual/notes.svg": { + "filePath": "global/plh_images/workshop_modes/individual/notes.svg", + "md5Checksum": "3c7d0fa4ee0e4443428a99b7a8c79249", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/notes.svg", + "md5Checksum": "e158bee5c77f18b9589077e151674848", + "size_kb": 17.5 + } + } + }, + "size_kb": 56.6 + }, + "plh_images/workshop_modes/individual/notes_left.svg": { + "filePath": "global/plh_images/workshop_modes/individual/notes_left.svg", + "md5Checksum": "f6096aa659c28c7b9aaa6734fee277dd", + "size_kb": 56.4 + }, + "plh_images/workshop_modes/individual/read.svg": { + "filePath": "global/plh_images/workshop_modes/individual/read.svg", + "md5Checksum": "37004d531d300bcba599761b8fde65c3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/read.svg", + "md5Checksum": "ecde3c483f913bf00ba3c32aa8520d76", + "size_kb": 17.8 + } + } + }, + "size_kb": 3.7 + }, + "plh_images/workshop_modes/individual/relax.svg": { + "filePath": "global/plh_images/workshop_modes/individual/relax.svg", + "md5Checksum": "671efe03765bebc98d71aa3ea3af095a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/relax.svg", + "md5Checksum": "8873ed6b0f8cbefcc970047588525ae1", + "size_kb": 27 + } + } + }, + "size_kb": 2.8 + }, + "plh_images/workshop_modes/individual/star.svg": { + "filePath": "global/plh_images/workshop_modes/individual/star.svg", + "md5Checksum": "50d12cee9cfc9ef994ca3de0d636e56b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/star.svg", + "md5Checksum": "68b253c4aee3d6462e09dbe40ddffacb", + "size_kb": 17.7 + } + } + }, + "size_kb": 3.7 + }, + "plh_images/workshop_modes/individual/wave.svg": { + "filePath": "global/plh_images/workshop_modes/individual/wave.svg", + "md5Checksum": "be9901f233124ed4a8ad189b219cc957", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/wave.svg", + "md5Checksum": "79d5f0d01dca4ab60d638b0d46d134f9", + "size_kb": 8.5 + } + } + }, + "size_kb": 3 + }, + "plh_images/workshop_modes/individual/with_teen.svg": { + "filePath": "global/plh_images/workshop_modes/individual/with_teen.svg", + "md5Checksum": "f4808b91a9a6b24c0a8ee3f1c826fc94", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/with_teen.svg", + "md5Checksum": "eb35a0457cf8dc12632cbb155536da00", + "size_kb": 41.1 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/workshop_modes/individual/write.svg": { + "filePath": "global/plh_images/workshop_modes/individual/write.svg", + "md5Checksum": "d85011b09a2953d05a49e784995492d3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshop_modes/individual/write.svg", + "md5Checksum": "c0488fd57d79f4b453a05b7a33196f1b", + "size_kb": 12.5 + } + } + }, + "size_kb": 3.8 + }, + "plh_images/workshops/options/individual.svg": { + "filePath": "global/plh_images/workshops/options/individual.svg", + "md5Checksum": "05efc1145c695a3cb2e512235a8f0206", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/options/individual.svg", + "md5Checksum": "bbfd0f81cb79c65da846f4370e736c29", + "size_kb": 28.3 + } + } + }, + "size_kb": 3.6 + }, + "plh_images/workshops/options/together.svg": { + "filePath": "global/plh_images/workshops/options/together.svg", + "md5Checksum": "6caaf8bf847e7bec5f8e83ce656d533f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/options/together.svg", + "md5Checksum": "9cc914b4711e11ccd2ad9b4b899252fa", + "size_kb": 31.9 + } + } + }, + "size_kb": 138.7 + }, + "plh_images/workshops/w_1on1/tools.svg": { + "filePath": "global/plh_images/workshops/w_1on1/tools.svg", + "md5Checksum": "73fa7ff26e4700c9ca379f473781de74", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_1on1/tools.svg", + "md5Checksum": "636e5c4f220204a4d3869f670f57f91b", + "size_kb": 52.5 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_celebrate/read/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_celebrate/read/slide_1.svg", + "md5Checksum": "44744c00550af7954c90ca14eccbdc7e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_celebrate/read/slide_1.svg", + "md5Checksum": "7bdcfc256ce3a7ffe9cf7115d9efbd68", + "size_kb": 152.3 + } + } + }, + "size_kb": 101.6 + }, + "plh_images/workshops/w_celebrate/read/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_celebrate/read/slide_2.svg", + "md5Checksum": "cb963e84d52a0be168632a0ed7877158", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_celebrate/read/slide_2.svg", + "md5Checksum": "74b185a86a389a3f4292bcf941687680", + "size_kb": 34.9 + } + } + }, + "size_kb": 6.4 + }, + "plh_images/workshops/w_celebrate/read/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_celebrate/read/slide_3.svg", + "md5Checksum": "7ed5739bfb9cab4b337dea4c6007fde3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_celebrate/read/slide_3.svg", + "md5Checksum": "a933d251cafacb24d1c3c7de394b1f7f", + "size_kb": 89.6 + } + } + }, + "size_kb": 7.2 + }, + "plh_images/workshops/w_celebrate/read/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_celebrate/read/slide_4.svg", + "md5Checksum": "a82455b066c7d27ab92bcc4328539da3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_celebrate/read/slide_4.svg", + "md5Checksum": "c5b513b36219519e35cd305b1f59a172", + "size_kb": 166.6 + } + } + }, + "size_kb": 16.4 + }, + "plh_images/workshops/w_celebrate/tools.svg": { + "filePath": "global/plh_images/workshops/w_celebrate/tools.svg", + "md5Checksum": "d174a38918eb7e8d3da081239eabc711", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_celebrate/tools.svg", + "md5Checksum": "63614c1d91b37cc93388b1f8dbd1bea7", + "size_kb": 37.4 + } + } + }, + "size_kb": 65.6 + }, + "plh_images/workshops/w_consequence/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_1/slide_1.svg", + "md5Checksum": "9adada1a627a28e2cc4bea77efba3b02", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_1.svg", + "md5Checksum": "7040133bb17ce167b4ba776fb08d8ba6", + "size_kb": 72.4 + } + } + }, + "size_kb": 7.4 + }, + "plh_images/workshops/w_consequence/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_1/slide_2.svg", + "md5Checksum": "88c78683801849e556a2dd74c17bbf22", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_2.svg", + "md5Checksum": "61c512edcea84a7f8f08e720df9f7c64", + "size_kb": 46.5 + } + } + }, + "size_kb": 6.4 + }, + "plh_images/workshops/w_consequence/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_1/slide_3.svg", + "md5Checksum": "cc6252f60461d819f698dcb4745811bb", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_3.svg", + "md5Checksum": "cefc86dfb7182a49015655bbf3ec5ad9", + "size_kb": 51.3 + } + } + }, + "size_kb": 5.5 + }, + "plh_images/workshops/w_consequence/read_1/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_1/slide_4.svg", + "md5Checksum": "5a6ae89e93e12707fce80018c2beeb7c", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_4.svg", + "md5Checksum": "b876dae82ca1a7c3b319b2953092cb89", + "size_kb": 46.4 + } + } + }, + "size_kb": 5.6 + }, + "plh_images/workshops/w_consequence/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_2/slide_1.svg", + "md5Checksum": "ce28a7931d27997a6e1707a68ae4ba3b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_1.svg", + "md5Checksum": "fc530b474db06087dadcd249c02c988f", + "size_kb": 73 + } + } + }, + "size_kb": 6.6 + }, + "plh_images/workshops/w_consequence/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_2/slide_2.svg", + "md5Checksum": "5066b8ac03c1f7e0dcf227ed98624c2e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_2.svg", + "md5Checksum": "05b60cb01d4d947e27922678c0270c91", + "size_kb": 46.7 + } + } + }, + "size_kb": 12.3 + }, + "plh_images/workshops/w_consequence/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_2/slide_3.svg", + "md5Checksum": "404cd530d1d497ad8d89d9d062482e1d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_3.svg", + "md5Checksum": "f833bf8bb6043d20c638c39ffe8a4ebd", + "size_kb": 117.4 + } + } + }, + "size_kb": 6.9 + }, + "plh_images/workshops/w_consequence/read_3/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_1.svg", + "md5Checksum": "366d250ef5c4c9f4de01037a3d02158b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_1.svg", + "md5Checksum": "50991d49400abc863cb23a276b560021", + "size_kb": 56 + } + } + }, + "size_kb": 7 + }, + "plh_images/workshops/w_consequence/read_3/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_2.svg", + "md5Checksum": "78d4e14cf36489060b24efa1e53ff900", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_2.svg", + "md5Checksum": "bb7a6df925242a0fccb5f5c458617fcb", + "size_kb": 61.2 + } + } + }, + "size_kb": 7.6 + }, + "plh_images/workshops/w_consequence/read_3/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_3.svg", + "md5Checksum": "a40884c0370aaad6b6ce7326bfb6ce32", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_3.svg", + "md5Checksum": "1a0b20d9b7c99079315890bb4cf8c4c9", + "size_kb": 56.1 + } + } + }, + "size_kb": 6 + }, + "plh_images/workshops/w_consequence/read_3/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_4.svg", + "md5Checksum": "70c491f40874abeb99e3e66ec3bf516b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_4.svg", + "md5Checksum": "b2401018a6250a573c594bae72266215", + "size_kb": 57.4 + } + } + }, + "size_kb": 6 + }, + "plh_images/workshops/w_consequence/read_3/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_5.svg", + "md5Checksum": "139c50b1168a0c6ce75ba56a604e6db3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_5.svg", + "md5Checksum": "587cca22fc92a06f4d0686464473eb9c", + "size_kb": 66.2 + } + } + }, + "size_kb": 6.6 + }, + "plh_images/workshops/w_consequence/read_3/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_6.svg", + "md5Checksum": "9a22f64d6aa10290e9ed7b7e2e9131cf", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_6.svg", + "md5Checksum": "585067902f000ac2f8f831007cb5e57c", + "size_kb": 47.1 + } + } + }, + "size_kb": 5.5 + }, + "plh_images/workshops/w_consequence/read_3/slide_7.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_7.svg", + "md5Checksum": "ea150fc7a10c2bb6c7e66dc1f18045f1", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_7.svg", + "md5Checksum": "1ef162e426aa4dd1038aa9350e10a5aa", + "size_kb": 48.4 + } + } + }, + "size_kb": 5.5 + }, + "plh_images/workshops/w_consequence/read_3/slide_8.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_8.svg", + "md5Checksum": "267e5f0cf8af301c0f9e8638187630b7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_8.svg", + "md5Checksum": "1e4c29fe72b0829846cd4b3f37b39024", + "size_kb": 47.1 + } + } + }, + "size_kb": 5.6 + }, + "plh_images/workshops/w_consequence/read_3/slide_9.svg": { + "filePath": "global/plh_images/workshops/w_consequence/read_3/slide_9.svg", + "md5Checksum": "153799c983867a1d9b7bfea89ad032ef", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_9.svg", + "md5Checksum": "712ccb3833ac6c0befcaf8d78d32ceec", + "size_kb": 53.1 + } + } + }, + "size_kb": 48.7 + }, + "plh_images/workshops/w_consequence/tools.svg": { + "filePath": "global/plh_images/workshops/w_consequence/tools.svg", + "md5Checksum": "e47046d8530f041f4b5e5a669ee8aa20", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_consequence/tools.svg", + "md5Checksum": "5cfeb47f0d56169785e4fa2d69ed13fa", + "size_kb": 21.2 + } + } + }, + "size_kb": 9.9 + }, + "plh_images/workshops/w_crisis/learn/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_crisis/learn/slide_1.svg", + "md5Checksum": "129c6e369d1f7be6c9c8bc5d478bc82d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/learn/slide_1.svg", + "md5Checksum": "2927c69dff6270c415f122353ee9cb27", + "size_kb": 42 + } + } + }, + "size_kb": 6.2 + }, + "plh_images/workshops/w_crisis/learn/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_crisis/learn/slide_2.svg", + "md5Checksum": "f8525c1b856cdcd03aa4195e8cb091bd", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/learn/slide_2.svg", + "md5Checksum": "ce44889f285faecb3ffec7be61057247", + "size_kb": 74.4 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_crisis/learn/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_crisis/learn/slide_3.svg", + "md5Checksum": "ceea5abe414793397d12ffde4261f92c", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/learn/slide_3.svg", + "md5Checksum": "6181f6897c5de4efffd7089d345e440d", + "size_kb": 38.5 + } + } + }, + "size_kb": 7.7 + }, + "plh_images/workshops/w_crisis/learn/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_crisis/learn/slide_4.svg", + "md5Checksum": "c739ec53c5c813e5a3449ba39415c948", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/learn/slide_4.svg", + "md5Checksum": "d816a0fd6b53cfd9a9a67a662c422b0b", + "size_kb": 81.6 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_crisis/learn/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_crisis/learn/slide_5.svg", + "md5Checksum": "36c2566f1ec362da2aa91273591a011f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/learn/slide_5.svg", + "md5Checksum": "3d9382856f1675506ffe21c4f72b640b", + "size_kb": 41.4 + } + } + }, + "size_kb": 8.7 + }, + "plh_images/workshops/w_crisis/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_1.svg", + "md5Checksum": "905ce2e34449b66f3820ac748e256ce7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_1.svg", + "md5Checksum": "9665fc4838a6fd5f821ab5afbb1bfe18", + "size_kb": 36.7 + } + } + }, + "size_kb": 8.8 + }, + "plh_images/workshops/w_crisis/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_2.svg", + "md5Checksum": "2308522ef3b37829891da711e790ba27", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_2.svg", + "md5Checksum": "1a0647306bc6c7981e61de95a1d66ba5", + "size_kb": 33.4 + } + } + }, + "size_kb": 8 + }, + "plh_images/workshops/w_crisis/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_3.svg", + "md5Checksum": "07b202d53762673ed5bb876cb621ca8e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_3.svg", + "md5Checksum": "44c2f05e85b6e25377642232bbc33b20", + "size_kb": 36.6 + } + } + }, + "size_kb": 7.3 + }, + "plh_images/workshops/w_crisis/read_1/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_4.svg", + "md5Checksum": "f1119565e17c281b1373aeb91677e6b1", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_4.svg", + "md5Checksum": "540276a1735fd2ce4fd861e6c9099060", + "size_kb": 34.3 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_crisis/read_1/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_5.svg", + "md5Checksum": "1d4a26d6a854bc0b8c65692354ed3a1b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_5.svg", + "md5Checksum": "97b05eb521512ca84135e986137f9565", + "size_kb": 37 + } + } + }, + "size_kb": 6.8 + }, + "plh_images/workshops/w_crisis/read_1/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_1/slide_6.svg", + "md5Checksum": "6d11e158015d3e86259802f3c8ab1a13", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_6.svg", + "md5Checksum": "7f4dc2d0dffd99103cf484f0411b5b5f", + "size_kb": 27.7 + } + } + }, + "size_kb": 47.9 + }, + "plh_images/workshops/w_crisis/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_1.svg", + "md5Checksum": "e5c9a8c3b44ba35326e34ad7c3f95973", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_1.svg", + "md5Checksum": "2d3deba1efb0bd1ba4914dd2715a7470", + "size_kb": 77.2 + } + } + }, + "size_kb": 5.5 + }, + "plh_images/workshops/w_crisis/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_2.svg", + "md5Checksum": "8036f779552ef710689a58a331780cf4", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_2.svg", + "md5Checksum": "ac88c338323484abad01f2ae6505da63", + "size_kb": 54.6 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/workshops/w_crisis/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_3.svg", + "md5Checksum": "e75f6aa65cc75a987dfc0afa9d61e03a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_3.svg", + "md5Checksum": "b0ad2f83e82eaac42a3aa4a48ccb4c7d", + "size_kb": 58 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/workshops/w_crisis/read_2/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_4.svg", + "md5Checksum": "11f0d6e69ae898591e0a64e5948ae282", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_4.svg", + "md5Checksum": "b80618520e8aad57bd8bac7b8118024e", + "size_kb": 55.5 + } + } + }, + "size_kb": 7 + }, + "plh_images/workshops/w_crisis/read_2/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_5.svg", + "md5Checksum": "368f0ffabb9cb38048feaee9a532d12a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_5.svg", + "md5Checksum": "76f2a353fda7f4de6d962ee4a5043cf5", + "size_kb": 55.5 + } + } + }, + "size_kb": 7 + }, + "plh_images/workshops/w_crisis/read_2/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_crisis/read_2/slide_6.svg", + "md5Checksum": "3d753b8316141a2890bc3fc00a4ca789", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_6.svg", + "md5Checksum": "5604a9cac4e9968542de188bd0fe007f", + "size_kb": 56 + } + } + }, + "size_kb": 6.2 + }, + "plh_images/workshops/w_crisis/tools.svg": { + "filePath": "global/plh_images/workshops/w_crisis/tools.svg", + "md5Checksum": "61bf31672e88435f3293b3e6ff164689", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_crisis/tools.svg", + "md5Checksum": "12e56e240b8a92617559e8f92ad5ff8f", + "size_kb": 57 + } + } + }, + "size_kb": 6.3 + }, + "plh_images/workshops/w_instruct/guide_1/teen_phone_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_1/teen_phone_1.svg", + "md5Checksum": "85561d7fbdde25bf262540a83d381402", + "size_kb": 6.6 + }, + "plh_images/workshops/w_instruct/guide_1/teen_phone_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_1/teen_phone_2.svg", + "md5Checksum": "d8b754e68283dd474d22f888eddcd5a2", + "size_kb": 6 + }, + "plh_images/workshops/w_instruct/guide_1/think/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_1/think/slide_1.svg", + "md5Checksum": "25fddfd0af410997b4371951491606ae", + "size_kb": 4.1 + }, + "plh_images/workshops/w_instruct/guide_1/think/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_1/think/slide_2.svg", + "md5Checksum": "8bdb4c76aafe1527ade318b7eff7f868", + "size_kb": 6.4 + }, + "plh_images/workshops/w_instruct/guide_1/think/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_1/think/slide_3.svg", + "md5Checksum": "6563885ff7830772dbbea806421ddff8", + "size_kb": 23.2 + }, + "plh_images/workshops/w_instruct/guide_2/teen_phone_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_2/teen_phone_1.svg", + "md5Checksum": "c3bdc6505aa0829ccde4787db5babbce", + "size_kb": 6.2 + }, + "plh_images/workshops/w_instruct/guide_2/teen_phone_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_2/teen_phone_2.svg", + "md5Checksum": "ab493568a672decae92940b209484e5d", + "size_kb": 6.1 + }, + "plh_images/workshops/w_instruct/guide_2/think/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_2/think/slide_1.svg", + "md5Checksum": "2273e90af65b4e4c24c6e23c3f146a43", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_1.svg", + "md5Checksum": "fe3ba5f73c0903d7f95b2c527815be07", + "size_kb": 7.9 + } + } + }, + "size_kb": 3.8 + }, + "plh_images/workshops/w_instruct/guide_2/think/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_2/think/slide_2.svg", + "md5Checksum": "930b7dd12a840820828fcc63ab18ff8e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_2.svg", + "md5Checksum": "aba26746ca4a06171364415b927b6bed", + "size_kb": 9.1 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/workshops/w_instruct/guide_2/think/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_instruct/guide_2/think/slide_3.svg", + "md5Checksum": "44867e50635910762876f447985cc4d2", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_3.svg", + "md5Checksum": "f527e415cab1c2b41c028424e08155a5", + "size_kb": 26.5 + } + } + }, + "size_kb": 23.3 + }, + "plh_images/workshops/w_instruct/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_1/slide_1.svg", + "md5Checksum": "2352ea623847d91a32ba02acaba08cdb", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_1.svg", + "md5Checksum": "6977de3cad285ec09b7c6cb5a21f70e9", + "size_kb": 47.3 + } + } + }, + "size_kb": 13.6 + }, + "plh_images/workshops/w_instruct/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_1/slide_2.svg", + "md5Checksum": "e25a55eaa80bf7408ceaf22173c23a54", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_2.svg", + "md5Checksum": "9089d28b3cfce97ec2d46043fe77b07a", + "size_kb": 37.4 + } + } + }, + "size_kb": 13.2 + }, + "plh_images/workshops/w_instruct/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_1/slide_3.svg", + "md5Checksum": "1719e7341ed6f66b47f5d0dd5b75fcbe", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_3.svg", + "md5Checksum": "c88d9ab48b3b500c338845f8f5f1b7c1", + "size_kb": 42.6 + } + } + }, + "size_kb": 13.3 + }, + "plh_images/workshops/w_instruct/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_2/slide_1.svg", + "md5Checksum": "8a783f018b98f3e7741d08ab782b4a2b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_1.svg", + "md5Checksum": "e459870f9f56c5db85be8fe8ef600c48", + "size_kb": 47 + } + } + }, + "size_kb": 13.7 + }, + "plh_images/workshops/w_instruct/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_2/slide_2.svg", + "md5Checksum": "0fecc8dc1e3f3f3881de2bbd5c234c5b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_2.svg", + "md5Checksum": "2b5f1b573da0cd9d6ebe9b06b96f116b", + "size_kb": 39.7 + } + } + }, + "size_kb": 13.1 + }, + "plh_images/workshops/w_instruct/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_2/slide_3.svg", + "md5Checksum": "57831972a8564f3cf949026a70ab8fc9", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_3.svg", + "md5Checksum": "a34d93aec47f4dcd9a015bf9e3d966d5", + "size_kb": 43.4 + } + } + }, + "size_kb": 13.2 + }, + "plh_images/workshops/w_instruct/read_2/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_2/slide_4.svg", + "md5Checksum": "43a3bad70ebe57788bbc7efcbb8eb501", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_4.svg", + "md5Checksum": "476a66b3dd60ca5de7d735a2dce648e4", + "size_kb": 42.5 + } + } + }, + "size_kb": 11 + }, + "plh_images/workshops/w_instruct/read_2/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_instruct/read_2/slide_5.svg", + "md5Checksum": "2ac7364286f00393a236404e22dbdec7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_5.svg", + "md5Checksum": "136750deb5d97ef1eaf47598aff65a2d", + "size_kb": 53.4 + } + } + }, + "size_kb": 10.4 + }, + "plh_images/workshops/w_instruct/tools.svg": { + "filePath": "global/plh_images/workshops/w_instruct/tools.svg", + "md5Checksum": "be953cb1a0f7dae1956aaf76862c3faa", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_instruct/tools.svg", + "md5Checksum": "7fb1a763780e827c5a939adab2fcbe5a", + "size_kb": 20.7 + } + } + }, + "size_kb": 9.6 + }, + "plh_images/workshops/w_money/learn/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_money/learn/slide_1.svg", + "md5Checksum": "fd30ef763b2ba38286fe790336f1a918", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/learn/slide_1.svg", + "md5Checksum": "765c284f07bf0a9bb1ab7fdf4743ffd9", + "size_kb": 702.9 + } + } + }, + "size_kb": 948.9 + }, + "plh_images/workshops/w_money/learn/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_money/learn/slide_2.svg", + "md5Checksum": "6fff099bc6031d2c5879e32d23c9e2be", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/learn/slide_2.svg", + "md5Checksum": "87be48edaaf39faab85f5e500076c1ad", + "size_kb": 61.8 + } + } + }, + "size_kb": 40 + }, + "plh_images/workshops/w_money/learn/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_money/learn/slide_3.svg", + "md5Checksum": "5cb6e031a601976c2c5a9dacde1cc38c", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/learn/slide_3.svg", + "md5Checksum": "7e7ce2a505ab75e2e869095e805d7ff9", + "size_kb": 717.1 + } + } + }, + "size_kb": 1266.8 + }, + "plh_images/workshops/w_money/learn/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_money/learn/slide_4.svg", + "md5Checksum": "82bfc942d7f0fa9c8f5175d85ce05314", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/learn/slide_4.svg", + "md5Checksum": "3c4db1843f2afa027a8d706513f00150", + "size_kb": 721.6 + } + } + }, + "size_kb": 1269.9 + }, + "plh_images/workshops/w_money/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_money/read_1/slide_1.svg", + "md5Checksum": "d35d65d66e927bebeb71212ba13771df", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_1/slide_1.svg", + "md5Checksum": "15d2158383f9367cba7d36a7bdcf7069", + "size_kb": 44.9 + } + } + }, + "size_kb": 36.8 + }, + "plh_images/workshops/w_money/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_money/read_1/slide_2.svg", + "md5Checksum": "3d879346507977366361a79b4e243f78", + "size_kb": 3.1 + }, + "plh_images/workshops/w_money/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_money/read_2/slide_1.svg", + "md5Checksum": "89527e7d37980f73134f8887ac8cb38b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_2/slide_1.svg", + "md5Checksum": "b45987866cd3ef0f1839c12f2a482799", + "size_kb": 38.9 + } + } + }, + "size_kb": 92.7 + }, + "plh_images/workshops/w_money/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_money/read_2/slide_2.svg", + "md5Checksum": "2f947ce64e70a4f57be5d1e27226ec5c", + "size_kb": 31.9 + }, + "plh_images/workshops/w_money/read_3/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_1.svg", + "md5Checksum": "32d3043b6eecba56d90143ef69fd29cd", + "size_kb": 11.6 + }, + "plh_images/workshops/w_money/read_3/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_2.svg", + "md5Checksum": "4b2732913aaf69a7d9e619b60a43c854", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_3/slide_2.svg", + "md5Checksum": "c007c6c8bdca5fe95dd232a1056ea9d5", + "size_kb": 35.3 + } + } + }, + "size_kb": 11.5 + }, + "plh_images/workshops/w_money/read_3/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_3.svg", + "md5Checksum": "f3d08f6abbfffe6c1e65ddebe4f02dad", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_3/slide_3.svg", + "md5Checksum": "4bac645041f65f12aa13fe1a692f2265", + "size_kb": 65 + } + } + }, + "size_kb": 18.3 + }, + "plh_images/workshops/w_money/read_3/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_4.svg", + "md5Checksum": "018270b873c91c7448bab867b7ebf863", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_3/slide_4.svg", + "md5Checksum": "95114326e00faa6192bda3732c194c50", + "size_kb": 17.8 + } + } + }, + "size_kb": 8.4 + }, + "plh_images/workshops/w_money/read_3/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_5.svg", + "md5Checksum": "6fe986fa7a4b09493580bfe5a03915aa", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_3/slide_5.svg", + "md5Checksum": "3dd39fbac80ce1f5135a20cdfc71b22c", + "size_kb": 58.2 + } + } + }, + "size_kb": 43.1 + }, + "plh_images/workshops/w_money/read_3/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_money/read_3/slide_6.svg", + "md5Checksum": "cd331d34ec95f2a267616198bc272755", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_3/slide_6.svg", + "md5Checksum": "e7875b5c1ee30d137221874c69943c51", + "size_kb": 51.9 + } + } + }, + "size_kb": 91 + }, + "plh_images/workshops/w_money/read_4/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_money/read_4/slide_1.svg", + "md5Checksum": "ab043bb71c85a071254cf552981990e1", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/read_4/slide_1.svg", + "md5Checksum": "341208ab432e7b2b9e1f17b1e9c34423", + "size_kb": 47.1 + } + } + }, + "size_kb": 27.5 + }, + "plh_images/workshops/w_money/tools.svg": { + "filePath": "global/plh_images/workshops/w_money/tools.svg", + "md5Checksum": "1019da9152557bade59a3a1c852c377b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_money/tools.svg", + "md5Checksum": "77de144e20d06a6da8d51e620c7e8616", + "size_kb": 33 + } + } + }, + "size_kb": 15.5 + }, + "plh_images/workshops/w_praise/read/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_praise/read/slide_1.svg", + "md5Checksum": "3861bcfd3f13b77d90266731755b888a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_praise/read/slide_1.svg", + "md5Checksum": "9d2b90604d379b24816e04ce136d31ff", + "size_kb": 164.8 + } + } + }, + "size_kb": 16.2 + }, + "plh_images/workshops/w_praise/read/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_praise/read/slide_2.svg", + "md5Checksum": "eaa20b358c00a63aa6e25d54d7e5c59d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_praise/read/slide_2.svg", + "md5Checksum": "b61b7b9fa390f802f89be5810cd20fdf", + "size_kb": 44.8 + } + } + }, + "size_kb": 761.1 + }, + "plh_images/workshops/w_praise/reflect_together/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_praise/reflect_together/slide_1.svg", + "md5Checksum": "751d618e870b3fadc28399d1667f416e", + "size_kb": 14.4 + }, + "plh_images/workshops/w_praise/reflect_together/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_praise/reflect_together/slide_2.svg", + "md5Checksum": "a99e13a19e87c4925bd3c863e7cd7c66", + "size_kb": 14.3 + }, + "plh_images/workshops/w_praise/reflect_together/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_praise/reflect_together/slide_3.svg", + "md5Checksum": "12f63ecf66211db8be929e04bf5ebf84", + "size_kb": 14.4 + }, + "plh_images/workshops/w_praise/tools.svg": { + "filePath": "global/plh_images/workshops/w_praise/tools.svg", + "md5Checksum": "c1361f5a07783b5901d6f4a7fce13210", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_praise/tools.svg", + "md5Checksum": "6b55c48aa2d51ead1b92cfdbd2c3fd2f", + "size_kb": 32 + } + } + }, + "size_kb": 5.8 + }, + "plh_images/workshops/w_rules/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_1.svg", + "md5Checksum": "62a23a6a871b1bd3e9b0766ba4885a9b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_1.svg", + "md5Checksum": "4e302e3930b961ae68a92610456de44c", + "size_kb": 30.5 + } + } + }, + "size_kb": 8.2 + }, + "plh_images/workshops/w_rules/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_3.svg", + "md5Checksum": "b61185658f2e4352a61b756801a97e5a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_3.svg", + "md5Checksum": "86c8eb3f20dbc38974cc700b55de8223", + "size_kb": 32.1 + } + } + }, + "size_kb": 7.4 + }, + "plh_images/workshops/w_rules/read_1/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_4.svg", + "md5Checksum": "19609316ca4d9ebb2bd3aa278a097333", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_4.svg", + "md5Checksum": "9386b38541a578ad2919dccded907440", + "size_kb": 29.6 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_rules/read_1/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_5.svg", + "md5Checksum": "ffc0ea6eb046ae71dfcfa3127dbfe6e2", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_5.svg", + "md5Checksum": "735170346d23cf06f23f902990574d31", + "size_kb": 29.5 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_rules/read_1/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_6.svg", + "md5Checksum": "cee09fe970424d41350add3b36c893a5", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_6.svg", + "md5Checksum": "88ec1339cf1eeb7480e8aecb6e35c54a", + "size_kb": 27.7 + } + } + }, + "size_kb": 7.6 + }, + "plh_images/workshops/w_rules/read_1/slide_7.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_7.svg", + "md5Checksum": "0dfcd94f6d55e7fc5a536e48ce68a1be", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_7.svg", + "md5Checksum": "ac4f43f990c4ff584bad392c22da996b", + "size_kb": 23.3 + } + } + }, + "size_kb": 44.1 + }, + "plh_images/workshops/w_rules/read_1/slide_8.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_1/slide_8.svg", + "md5Checksum": "a6a15529528eb9ec674038d12c1bff9a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_1/slide_8.svg", + "md5Checksum": "4b16c9bee11a9d44a5057aa57b3279d9", + "size_kb": 35.2 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_rules/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_2/slide_1.svg", + "md5Checksum": "72b8bdf8c551bccbb697a4f72d179b9f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_2/slide_1.svg", + "md5Checksum": "2624d29ba5c8151e50d8b3b3b8c0229d", + "size_kb": 417.7 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/workshops/w_rules/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_2/slide_2.svg", + "md5Checksum": "9eafea48b3be6b581a14212a373959d3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_2/slide_2.svg", + "md5Checksum": "329d295c0f94bb6289427b73dad95538", + "size_kb": 233.3 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_rules/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_2/slide_3.svg", + "md5Checksum": "b4cb2ee458af1abc22b58e6969fd4f54", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_2/slide_3.svg", + "md5Checksum": "62e80537fa73018fc0ee93bf6871e666", + "size_kb": 231.7 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_rules/read_2/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_2/slide_4.svg", + "md5Checksum": "fbbaec539740fd64e409073d0e2c9cb7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_2/slide_4.svg", + "md5Checksum": "c0382cc8964258c13c816709b4cba340", + "size_kb": 164.6 + } + } + }, + "size_kb": 66.2 + }, + "plh_images/workshops/w_rules/read_2/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_rules/read_2/slide_5.svg", + "md5Checksum": "c427f203f1915bcd0302921fc35d729a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/read_2/slide_5.svg", + "md5Checksum": "c0662b8f585a26bbb07a58e631059f48", + "size_kb": 423.4 + } + } + }, + "size_kb": 6.9 + }, + "plh_images/workshops/w_rules/tools.svg": { + "filePath": "global/plh_images/workshops/w_rules/tools.svg", + "md5Checksum": "4d74cd467f5f816face62deadc63aaf6", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_rules/tools.svg", + "md5Checksum": "ac18a9c7b31a23ae7f667418832acd5d", + "size_kb": 41.2 + } + } + }, + "size_kb": 9.1 + }, + "plh_images/workshops/w_safe/learn/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_safe/learn/slide_1.svg", + "md5Checksum": "c72385f05bd96def84ea4d5fa6896397", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/learn/slide_1.svg", + "md5Checksum": "3d22ff11baa8a8ddbe16beeb1c942786", + "size_kb": 1365.4 + } + } + }, + "size_kb": 1114.8 + }, + "plh_images/workshops/w_safe/learn/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_safe/learn/slide_2.svg", + "md5Checksum": "b1b50acd3c0d1ad56daa5ffe7b3f6741", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/learn/slide_2.svg", + "md5Checksum": "ea07eb7b0918b57b08362c31f0666079", + "size_kb": 1560.3 + } + } + }, + "size_kb": 1378.6 + }, + "plh_images/workshops/w_safe/learn/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_safe/learn/slide_3.svg", + "md5Checksum": "62b09f506cc9ee746ad103044cf149b0", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/learn/slide_3.svg", + "md5Checksum": "d6ee6efdb30cde4d8ea2a294810f1ade", + "size_kb": 1991.8 + } + } + }, + "size_kb": 1744.2 + }, + "plh_images/workshops/w_safe/learn/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_safe/learn/slide_4.svg", + "md5Checksum": "3ba9ac6fd9f023049b463b72342af1f8", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/learn/slide_4.svg", + "md5Checksum": "085c27d74f5c3eece0db91f24f68972d", + "size_kb": 926.4 + } + } + }, + "size_kb": 821.6 + }, + "plh_images/workshops/w_safe/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_1.svg", + "md5Checksum": "4523d5af947cbc7d01ce70ae989adf1a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_1.svg", + "md5Checksum": "a8fbfcb74a8a0d4b26c7c7e1a025eaad", + "size_kb": 32.5 + } + } + }, + "size_kb": 7.4 + }, + "plh_images/workshops/w_safe/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_2.svg", + "md5Checksum": "b120e564c9cd533631513d880667a882", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_2.svg", + "md5Checksum": "74124ce17d3b3a05ea2e83dded6dff70", + "size_kb": 68.7 + } + } + }, + "size_kb": 47.9 + }, + "plh_images/workshops/w_safe/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_3.svg", + "md5Checksum": "29988e93edf0db46fb602bb03292e188", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_3.svg", + "md5Checksum": "960ae7a334601c470b4833e1c17aca32", + "size_kb": 64.3 + } + } + }, + "size_kb": 46.6 + }, + "plh_images/workshops/w_safe/read_1/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_4.svg", + "md5Checksum": "e662be8ac20f7719ebbdba7006341ef6", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_4.svg", + "md5Checksum": "dccb53edd2fb759f8db985285f087f23", + "size_kb": 41 + } + } + }, + "size_kb": 10.6 + }, + "plh_images/workshops/w_safe/read_1/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_5.svg", + "md5Checksum": "911d552ba9b992e500b4fa231fd5663a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_5.svg", + "md5Checksum": "5dbf40b19aedb99608263255e36536b3", + "size_kb": 41 + } + } + }, + "size_kb": 10.5 + }, + "plh_images/workshops/w_safe/read_1/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_1/slide_6.svg", + "md5Checksum": "93a85ef9d94586f6a46e57b4f2942ece", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_1/slide_6.svg", + "md5Checksum": "daeadb17f758886b28521dcb6d6a3515", + "size_kb": 32.8 + } + } + }, + "size_kb": 6.9 + }, + "plh_images/workshops/w_safe/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_2/slide_1.svg", + "md5Checksum": "c400d59db95b04a49111b447c127ecef", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_2/slide_1.svg", + "md5Checksum": "f0e4b68b8c10861143869615870c64af", + "size_kb": 32.2 + } + } + }, + "size_kb": 7.4 + }, + "plh_images/workshops/w_safe/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_2/slide_2.svg", + "md5Checksum": "a4aba4c7a277d151a038465d35abda5c", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_2/slide_2.svg", + "md5Checksum": "932a38e2a7c24ae4633c00406a81ec4d", + "size_kb": 35 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_safe/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_safe/read_2/slide_3.svg", + "md5Checksum": "9f29cf4275c53513dc01df2bf5ad28d4", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/read_2/slide_3.svg", + "md5Checksum": "d4a6a0744c97c27965c391c46665102d", + "size_kb": 33 + } + } + }, + "size_kb": 6.9 + }, + "plh_images/workshops/w_safe/tools.svg": { + "filePath": "global/plh_images/workshops/w_safe/tools.svg", + "md5Checksum": "fe8e84f3f2b124d7a71a30dea507f9e7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_safe/tools.svg", + "md5Checksum": "f9c326c18bb27635730c7fafbf5aa8cc", + "size_kb": 23 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/workshops/w_self_care/individual/recognise.svg": { + "filePath": "global/plh_images/workshops/w_self_care/individual/recognise.svg", + "md5Checksum": "a84438c8ff0caacc78cc353e0f6b22f9", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_self_care/individual/recognise.svg", + "md5Checksum": "d49ac09071734c0db1a5b7bf3c900a71", + "size_kb": 34.7 + } + } + }, + "size_kb": 6.9 + }, + "plh_images/workshops/w_self_care/individual/reward.svg": { + "filePath": "global/plh_images/workshops/w_self_care/individual/reward.svg", + "md5Checksum": "681910eca8201998e670a0f3caffa9e7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_self_care/individual/reward.svg", + "md5Checksum": "51cccd20e23c68953db28b1361ef5a7f", + "size_kb": 27.9 + } + } + }, + "size_kb": 7.9 + }, + "plh_images/workshops/w_self_care/tools.svg": { + "filePath": "global/plh_images/workshops/w_self_care/tools.svg", + "md5Checksum": "3298c27b7df419a0fc43a59d22b37b81", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_self_care/tools.svg", + "md5Checksum": "e6e75db632b0178ac0692ec4ecac2431", + "size_kb": 10.4 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_solve/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_1/slide_1.svg", + "md5Checksum": "5373ec46be6f68b78e0910fe012d289b", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_1/slide_1.svg", + "md5Checksum": "899e3f6a17f07d24544561cbfc198d0c", + "size_kb": 35.6 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_solve/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_1/slide_2.svg", + "md5Checksum": "66c0284c41e74b3fb0f4349b1006fb78", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_1/slide_2.svg", + "md5Checksum": "596513cb7d271e8c8fa4e7cebbd432ab", + "size_kb": 33.4 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_solve/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_1/slide_3.svg", + "md5Checksum": "8f79134327f463694f40ba50c4ac865e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_1/slide_3.svg", + "md5Checksum": "8bb025dac71cb07c137b54d1dcca5644", + "size_kb": 33.6 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_solve/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_1.svg", + "md5Checksum": "3d69f149beb7c00133d740484a8f5fa2", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_1.svg", + "md5Checksum": "a46a9d0c38dcad7df22d60c8fcc567fb", + "size_kb": 49.2 + } + } + }, + "size_kb": 12.2 + }, + "plh_images/workshops/w_solve/read_2/slide_10.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_10.svg", + "md5Checksum": "1a45611d92cb8c7312fc0b5a9089048f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_10.svg", + "md5Checksum": "29338a585138f05f6d08a73335c02e3f", + "size_kb": 25.9 + } + } + }, + "size_kb": 51.9 + }, + "plh_images/workshops/w_solve/read_2/slide_11.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_11.svg", + "md5Checksum": "2177ef892e58c1ae192ce444a387fc5a", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_11.svg", + "md5Checksum": "22984eff1011b29e916f6219ce910fe7", + "size_kb": 34.5 + } + } + }, + "size_kb": 8.4 + }, + "plh_images/workshops/w_solve/read_2/slide_12.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_12.svg", + "md5Checksum": "9731db03ed8617bdc1b0c3d194e161d8", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_12.svg", + "md5Checksum": "4c2ab428accebcabe44c95a51fd33ff0", + "size_kb": 25.7 + } + } + }, + "size_kb": 7.3 + }, + "plh_images/workshops/w_solve/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_2.svg", + "md5Checksum": "2ed6bb078003b85f5e8edcb431040edd", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_2.svg", + "md5Checksum": "8d97b5a04e321548281234c9557b1f53", + "size_kb": 46.3 + } + } + }, + "size_kb": 11 + }, + "plh_images/workshops/w_solve/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_3.svg", + "md5Checksum": "f19438f969c1ba9b1809a1709085e54d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_3.svg", + "md5Checksum": "44bce638752d01e69f914c5723ded612", + "size_kb": 59.6 + } + } + }, + "size_kb": 28.3 + }, + "plh_images/workshops/w_solve/read_2/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_4.svg", + "md5Checksum": "27808bec9405582fc9f03e82fdd21a53", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_4.svg", + "md5Checksum": "00d9edffd01ad1f491948e019c2ff736", + "size_kb": 29.8 + } + } + }, + "size_kb": 28.2 + }, + "plh_images/workshops/w_solve/read_2/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_5.svg", + "md5Checksum": "45da09c31dd75b1dade5e26702860fb4", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_5.svg", + "md5Checksum": "c9b96f9d2b5dbe8eb8ae52266e195d58", + "size_kb": 33.1 + } + } + }, + "size_kb": 7.2 + }, + "plh_images/workshops/w_solve/read_2/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_6.svg", + "md5Checksum": "713c923cfc5be0b06d35b84047f11167", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_6.svg", + "md5Checksum": "bb316aef4ae7d048b1ef1f1e8140145e", + "size_kb": 33.8 + } + } + }, + "size_kb": 7.3 + }, + "plh_images/workshops/w_solve/read_2/slide_7.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_7.svg", + "md5Checksum": "b26d74f238f93e952c79c7e5c6540729", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_7.svg", + "md5Checksum": "164018cb66e0ec14f71f13fa5b06172d", + "size_kb": 34.7 + } + } + }, + "size_kb": 7.3 + }, + "plh_images/workshops/w_solve/read_2/slide_8.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_8.svg", + "md5Checksum": "f87c3c249f11da64be038ce829fea009", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_8.svg", + "md5Checksum": "49c6cecd2a5af1f8ebae1bdae068bc1e", + "size_kb": 38.3 + } + } + }, + "size_kb": 7.2 + }, + "plh_images/workshops/w_solve/read_2/slide_9.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_2/slide_9.svg", + "md5Checksum": "52f505b176de78c901c5eab7a116d830", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_2/slide_9.svg", + "md5Checksum": "ec4b8e228363bd564e1b88524daefee4", + "size_kb": 33.5 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/workshops/w_solve/read_3/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_3/slide_1.svg", + "md5Checksum": "e413d37ea5a999964f29d0c156baae87", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_3/slide_1.svg", + "md5Checksum": "f8b9c67d446224125fbb9df24a04c1d3", + "size_kb": 31.5 + } + } + }, + "size_kb": 6.6 + }, + "plh_images/workshops/w_solve/read_3/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_3/slide_2.svg", + "md5Checksum": "e9a7e9234f1cae498ca65e2a049f551f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_3/slide_2.svg", + "md5Checksum": "7f9f6bfe7b25b609b98f37cae1908607", + "size_kb": 31.9 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_solve/read_3/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_solve/read_3/slide_3.svg", + "md5Checksum": "e9a7e9234f1cae498ca65e2a049f551f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/read_3/slide_3.svg", + "md5Checksum": "fd9fdbad4c2ab99b42b6f2533af7c010", + "size_kb": 31.3 + } + } + }, + "size_kb": 7.5 + }, + "plh_images/workshops/w_solve/tools.svg": { + "filePath": "global/plh_images/workshops/w_solve/tools.svg", + "md5Checksum": "26faa69fe9cf041c664a3e57a1a0e096", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/tools.svg", + "md5Checksum": "6df9ca0c1475938765f9be70e62d36cd", + "size_kb": 51.3 + } + } + }, + "size_kb": 7.1 + }, + "plh_images/workshops/w_solve/tools/tool_1.svg": { + "filePath": "global/plh_images/workshops/w_solve/tools/tool_1.svg", + "md5Checksum": "2146c95f6b02a306a68525a3cf632187", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/tools/tool_1.svg", + "md5Checksum": "6e02fee362cb8d39f1f5890c76427bb0", + "size_kb": 42.1 + } + } + }, + "size_kb": 23.9 + }, + "plh_images/workshops/w_solve/tools/tool_2.svg": { + "filePath": "global/plh_images/workshops/w_solve/tools/tool_2.svg", + "md5Checksum": "80f47d033e2c1c0c609c61f3718b8434", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/tools/tool_2.svg", + "md5Checksum": "2b94a897942da380fb0cc8f858eda672", + "size_kb": 75.3 + } + } + }, + "size_kb": 40.1 + }, + "plh_images/workshops/w_solve/tools/tool_3.svg": { + "filePath": "global/plh_images/workshops/w_solve/tools/tool_3.svg", + "md5Checksum": "75d3c84ac20906956e7df9d0d3e4dc1e", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/tools/tool_3.svg", + "md5Checksum": "41ae24895ac002a548de6ac26a94a65b", + "size_kb": 39.4 + } + } + }, + "size_kb": 21.9 + }, + "plh_images/workshops/w_solve/tools/tool_4.svg": { + "filePath": "global/plh_images/workshops/w_solve/tools/tool_4.svg", + "md5Checksum": "26644ce6c4e959ef94ec48044b8d14b3", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_solve/tools/tool_4.svg", + "md5Checksum": "63058b01d65e5d7ea7a62db2f81fc6c1", + "size_kb": 33.4 + } + } + }, + "size_kb": 18 + }, + "plh_images/workshops/w_stress/read_1/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_1.svg", + "md5Checksum": "e08535d4d76dd927805b5e73f5bc53fd", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_1.svg", + "md5Checksum": "7a93680c1decf961ed2062ca3cc54bee", + "size_kb": 61.1 + } + } + }, + "size_kb": 3.8 + }, + "plh_images/workshops/w_stress/read_1/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_2.svg", + "md5Checksum": "6ee483d983b4e938f5bb81e5b0933150", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_2.svg", + "md5Checksum": "9c437e166e2d77eee71b4075a9bd650f", + "size_kb": 75.3 + } + } + }, + "size_kb": 6.1 + }, + "plh_images/workshops/w_stress/read_1/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_3.svg", + "md5Checksum": "01c66ddb9a924ee7f233f5ebe3f2fedd", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_3.svg", + "md5Checksum": "5c36b4846cd942b4dae46f2f1620539b", + "size_kb": 54.7 + } + } + }, + "size_kb": 8.2 + }, + "plh_images/workshops/w_stress/read_1/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_4.svg", + "md5Checksum": "fb8009b6a94e90294d64bd1b09ff293d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_4.svg", + "md5Checksum": "70509dcfd1b001c388d5a6ddb5cd41f7", + "size_kb": 243.7 + } + } + }, + "size_kb": 62.4 + }, + "plh_images/workshops/w_stress/read_1/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_5.svg", + "md5Checksum": "6fa52f7adadc2036af8503ce705dd2c7", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_5.svg", + "md5Checksum": "e9a19fb57b8d597f307e969c36243c56", + "size_kb": 228.4 + } + } + }, + "size_kb": 63.3 + }, + "plh_images/workshops/w_stress/read_1/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_1/slide_6.svg", + "md5Checksum": "752730c4dbe86d018bc990f39886f08d", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_1/slide_6.svg", + "md5Checksum": "9f012196bc84088aae3fd89cda416747", + "size_kb": 72.3 + } + } + }, + "size_kb": 9.8 + }, + "plh_images/workshops/w_stress/read_2/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_2/slide_1.svg", + "md5Checksum": "3f0e521672d9ea9a13ff52c5ac14f5ea", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_2/slide_1.svg", + "md5Checksum": "5850cf7ca3c4dc183eb560d33160be72", + "size_kb": 60.6 + } + } + }, + "size_kb": 3.8 + }, + "plh_images/workshops/w_stress/read_2/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_2/slide_2.svg", + "md5Checksum": "d185406b3e42bb12ede584d926587406", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_2/slide_2.svg", + "md5Checksum": "ddc3c22457b8be7265ddd131d526d3ef", + "size_kb": 75.1 + } + } + }, + "size_kb": 7.9 + }, + "plh_images/workshops/w_stress/read_2/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_2/slide_3.svg", + "md5Checksum": "657487acaa66e464338f9d0659836af8", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_2/slide_3.svg", + "md5Checksum": "9cb040fc1e45a4cf8d0add4146e86e55", + "size_kb": 59.4 + } + } + }, + "size_kb": 6.5 + }, + "plh_images/workshops/w_stress/read_2/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_2/slide_4.svg", + "md5Checksum": "f692ea3dbfc9c250cb0177d60359a476", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_2/slide_4.svg", + "md5Checksum": "8066e4c91f8a8e0f11cbfa5fd61621b6", + "size_kb": 55.3 + } + } + }, + "size_kb": 6.4 + }, + "plh_images/workshops/w_stress/read_2/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_2/slide_5.svg", + "md5Checksum": "1ef4b0d4790c13cea8c4c8e5d3bbf501", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_2/slide_5.svg", + "md5Checksum": "e5ae64b5af3371f03b6eadb37da3fd32", + "size_kb": 55.6 + } + } + }, + "size_kb": 112.9 + }, + "plh_images/workshops/w_stress/read_3/slide_1.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_1.svg", + "md5Checksum": "a9b51ccb5348160e9acbbfd95ba26e5f", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_1.svg", + "md5Checksum": "d14940e9c0b6abc8c00f0ddd58faef9f", + "size_kb": 24.3 + } + } + }, + "size_kb": 5.5 + }, + "plh_images/workshops/w_stress/read_3/slide_2.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_2.svg", + "md5Checksum": "641a9c66cf08b7a66db39f6c78c7c671", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_2.svg", + "md5Checksum": "d3053ef4fce4967ca28227e95a730401", + "size_kb": 42 + } + } + }, + "size_kb": 10.7 + }, + "plh_images/workshops/w_stress/read_3/slide_3.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_3.svg", + "md5Checksum": "8f0efce15850644762cfc0b6bc983ba0", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_3.svg", + "md5Checksum": "4cec497ee9afd4d388856c13d3679c97", + "size_kb": 38.5 + } + } + }, + "size_kb": 9.3 + }, + "plh_images/workshops/w_stress/read_3/slide_4.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_4.svg", + "md5Checksum": "32b7bdb827a67fd6cd8696d86f9aa504", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_4.svg", + "md5Checksum": "5921bdac4662f5df231e0a54879f03c8", + "size_kb": 103.5 + } + } + }, + "size_kb": 35.4 + }, + "plh_images/workshops/w_stress/read_3/slide_5.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_5.svg", + "md5Checksum": "16c5e7e893a1fc0e53a85ecc659f8707", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_5.svg", + "md5Checksum": "fd334d81f2cd55a9edfef5e8dec85f0d", + "size_kb": 71.4 + } + } + }, + "size_kb": 9.1 + }, + "plh_images/workshops/w_stress/read_3/slide_6.svg": { + "filePath": "global/plh_images/workshops/w_stress/read_3/slide_6.svg", + "md5Checksum": "cc2a3d7312025e21a1b1025bb7533c50", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/read_3/slide_6.svg", + "md5Checksum": "62a6d4c3fc8a490a5b641ae8643e1cd2", + "size_kb": 57.8 + } + } + }, + "size_kb": 10.3 + }, + "plh_images/workshops/w_stress/tools.svg": { + "filePath": "global/plh_images/workshops/w_stress/tools.svg", + "md5Checksum": "fc0219dbf6b39c6fe7eeaa36cc40c4cc", + "overrides": { + "theme_professional": { + "global": { + "filePath": "theme_professional/global/plh_images/workshops/w_stress/tools.svg", + "md5Checksum": "cd80f6c372affa44bd8fc927d0e9b701", + "size_kb": 10.3 + } + } + }, + "size_kb": 6.3 + }, + "plh_lottie/habits/cascading_stars.json": { + "filePath": "global/plh_lottie/habits/cascading_stars.json", + "md5Checksum": "131145b165cd19613a9e277a514eec2f", + "size_kb": 140.5 + }, + "plh_lottie/habits/habit_breathe.json": { + "filePath": "global/plh_lottie/habits/habit_breathe.json", + "md5Checksum": "e1b0e6df242d3a649f0631e5be7d410a", + "size_kb": 20.9 + }, + "plh_lottie/habits/habit_breathe.mp4": { + "filePath": "global/plh_lottie/habits/habit_breathe.mp4", + "md5Checksum": "abcdfe7c87f099419f26cc8d88fb1776", + "size_kb": 65.5 + }, + "plh_lottie/habits/habit_consequence.json": { + "filePath": "global/plh_lottie/habits/habit_consequence.json", + "md5Checksum": "73cce30c92adeae23d7ad31e67c793b2", + "size_kb": 52.3 + }, + "plh_lottie/habits/habit_instruct_positively.json": { + "filePath": "global/plh_lottie/habits/habit_instruct_positively.json", + "md5Checksum": "f9d365434fbb3addc2289ef4c37a731e", + "size_kb": 60.3 + }, + "plh_lottie/habits/habit_money.json": { + "filePath": "global/plh_lottie/habits/habit_money.json", + "md5Checksum": "85ebdee3bf1f34c8a73b2c8cf2fa8d12", + "size_kb": 63.3 + }, + "plh_lottie/habits/habit_praise_teen.json": { + "filePath": "global/plh_lottie/habits/habit_praise_teen.json", + "md5Checksum": "e09b35c05471c89cfda56caba72bc778", + "size_kb": 83.5 + }, + "plh_lottie/habits/habit_praise_yourself.json": { + "filePath": "global/plh_lottie/habits/habit_praise_yourself.json", + "md5Checksum": "0d44cbf5e7c9c3c12bd96a8560829cda", + "size_kb": 34.5 + }, + "plh_lottie/habits/habit_relax.json": { + "filePath": "global/plh_lottie/habits/habit_relax.json", + "md5Checksum": "02cc3ec16edb9faf0c35581ade5860a0", + "size_kb": 22.2 + }, + "plh_lottie/habits/habit_safe.json": { + "filePath": "global/plh_lottie/habits/habit_safe.json", + "md5Checksum": "0bbefd2bb09d66855f62dbad5182a4ec", + "size_kb": 48 + }, + "plh_lottie/habits/habit_spend_time.json": { + "filePath": "global/plh_lottie/habits/habit_spend_time.json", + "md5Checksum": "5361d4828cb2d1041e263bf107bfff50", + "size_kb": 69.4 + }, + "plh_lottie/habits/habit_treat_yourself.json": { + "filePath": "global/plh_lottie/habits/habit_treat_yourself.json", + "md5Checksum": "c8ca5c8cfcf81d2b253f5558eb939e61", + "size_kb": 33.8 + }, + "plh_lottie/parent_centre.json": { + "filePath": "global/plh_lottie/parent_centre.json", + "md5Checksum": "e99205d8d63f10544a1552b7e71a1629", + "size_kb": 81.3 + }, + "plh_lottie/parent_points.json": { + "filePath": "global/plh_lottie/parent_points.json", + "md5Checksum": "ad29799d976bba2bdbce1005d92e07b8", + "size_kb": 52.1 + }, + "plh_lottie/relax1.json": { + "filePath": "global/plh_lottie/relax1.json", + "md5Checksum": "4768b0cc4584501d722c0e844e0be49c", + "size_kb": 19.2 + }, + "plh_lottie/relax_clouds.json": { + "filePath": "global/plh_lottie/relax_clouds.json", + "md5Checksum": "7d746368115fb85e289a12b7d81f60c3", + "size_kb": 39.6 + }, + "plh_lottie/relax_individual.json": { + "filePath": "global/plh_lottie/relax_individual.json", + "md5Checksum": "ebeb4db7d932ab4eec331ac2715c533d", + "size_kb": 23.4 + }, + "plh_lottie/splash_screen_3.json": { + "filePath": "global/plh_lottie/splash_screen_3.json", + "md5Checksum": "15afeb419f6c44eb3f0092a25ae580bb", + "size_kb": 77.3 + }, + "plh_lottie/weekly_workshops.json": { + "filePath": "global/plh_lottie/weekly_workshops.json", + "md5Checksum": "60ccc0774f39602928ca80eb4fb19658", + "size_kb": 57.2 + }, + "plh_video/lets_slow_down.mp4": { + "filePath": "global/plh_video/lets_slow_down.mp4", + "md5Checksum": "62f06faa95a979d128b4356db9bb396e", + "size_kb": 13482.2 + }, + "plh_video/lets_slow_down.srt": { + "filePath": "global/plh_video/lets_slow_down.srt", + "md5Checksum": "77e6d4265f602b20745a738b9809bb15", + "size_kb": 1.7 + }, + "plh_video/lets_slow_down.vtt": { + "filePath": "global/plh_video/lets_slow_down.vtt", + "md5Checksum": "1c172282f4c58766a03562d1eb88a4a4", + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/plh_video/lets_slow_down.vtt", + "md5Checksum": "863b1dc416755fd6e7075e9da48862d4", + "size_kb": 1.7 + }, + "za_af": { + "filePath": "za_af/plh_video/lets_slow_down.vtt", + "md5Checksum": "bc171b6b66335b3ebb3e6e641bde0b78", + "size_kb": 2 + }, + "za_st": { + "filePath": "za_st/plh_video/lets_slow_down.vtt", + "md5Checksum": "0a82badf875cce535d3ed0504dd053fd", + "size_kb": 2 + }, + "za_tn": { + "filePath": "za_tn/plh_video/lets_slow_down.vtt", + "md5Checksum": "1108e9d18835084b836c046d82b443f3", + "size_kb": 1.9 + } + } + }, + "size_kb": 1.8 + } +} \ No newline at end of file diff --git a/packages/app-data/assets/global/android/icon-background.png b/packages/app-data/assets/global/android/icon-background.png new file mode 100644 index 0000000000..7a61ca8862 --- /dev/null +++ b/packages/app-data/assets/global/android/icon-background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5662665fdd683cacd222ef2dc9d1937841f692209a087d1193d14442bc61665 +size 6574 diff --git a/packages/app-data/assets/global/android/icon-foreground.png b/packages/app-data/assets/global/android/icon-foreground.png new file mode 100644 index 0000000000..380764b3ca --- /dev/null +++ b/packages/app-data/assets/global/android/icon-foreground.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f52efc2e1e4782fa6b4d90e94ed3ba1e2f492c90151b720c9ed9983ada58fb4 +size 32142 diff --git a/packages/app-data/assets/global/android/icon.png b/packages/app-data/assets/global/android/icon.png new file mode 100644 index 0000000000..380764b3ca --- /dev/null +++ b/packages/app-data/assets/global/android/icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f52efc2e1e4782fa6b4d90e94ed3ba1e2f492c90151b720c9ed9983ada58fb4 +size 32142 diff --git a/packages/app-data/assets/global/android/splash.png b/packages/app-data/assets/global/android/splash.png new file mode 100644 index 0000000000..b970174e2f --- /dev/null +++ b/packages/app-data/assets/global/android/splash.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989a13f45f70e0c1598fe406a8f68acddbc4e07a3529ed77f4e4735a9b172f3e +size 126266 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 new file mode 100644 index 0000000000..dbf93cd65e --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9d5a71b57a733da75c44110f717e07e6468d00940cbde52c95c7c7abb4b0fe1 +size 755373 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 new file mode 100644 index 0000000000..aec4afaf9a --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aadd4709c94a1cf7743bebdb0d9ba9003e8ad62cd1f882c9d2687a2464e56fbc +size 927405 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 new file mode 100644 index 0000000000..bfbda0790e --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32a3d3db2199b65c57bd953d947637f8ed3426593f9f1524354eb6e0f50c7c8f +size 528813 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 new file mode 100644 index 0000000000..ea4d878ad4 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9bb895e9fa3c7882c75cf3700b707c26e22345e0ccd6ef26f2daa5e475d46e +size 819885 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 new file mode 100644 index 0000000000..7874c339f9 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de0ceef81d405539698b28f74c5f47e5d7b4b7c875462dad0f7a439f345db313 +size 688173 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 new file mode 100644 index 0000000000..454ca49f3f --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edf061a95ccfe270bf8fe9968860d6b3815e94bc84013bb0ea1e0ac50e1306df +size 856458 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 new file mode 100644 index 0000000000..27cf6ae276 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fde70bca8974ab7da736245dd434357ddd0a7d0bad7059aeb925e1a06817a7f +size 892170 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 new file mode 100644 index 0000000000..1a1c1a652d --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5552c5e6b581599d3bd6caeb3149b0c682fd53fdc187986f95724cf01322ad03 +size 662922 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 new file mode 100644 index 0000000000..809a1f24bb --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ed6639958646888f978344523463179adeae1dffb996a761673e37a8ae2a8d2 +size 505482 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 new file mode 100644 index 0000000000..5af0525971 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:755fa4c0dfcc1d299987eb1e3b4e1ec827f8df374e218737d8ecf746d3fed581 +size 676746 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 new file mode 100644 index 0000000000..a91191ef3b --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:283e4937364897598be6a2da76288d282a7e4243911758f75eefe09029103eb6 +size 655626 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 new file mode 100644 index 0000000000..88ccabf09c --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7326c28700f8a61899a13d8320455811e205c0fb59b7ea96ee2145650d6ce9ee +size 745005 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 new file mode 100644 index 0000000000..a38e91fa65 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d6e9bca0d8367a02234466eba10923c170c63f47f0c36ad4120e7201bae2996 +size 718125 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 new file mode 100644 index 0000000000..f619853c7b --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddf5c411fb353a6f6200762752d1780140db28e7f2523a16706edecc3b00d292 +size 656685 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 new file mode 100644 index 0000000000..a763adde1c --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f065f03ed16685b49a7439a4e362fb816b38b0f015cc88596a7044f3564e50 +size 672045 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_money.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_money.mp3 new file mode 100644 index 0000000000..a71aecd42f --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_money.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8abfbfb99e75e19c4082a13eeb23391d94f93417b471d5d340b61fe763779390 +size 916653 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_praise.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_praise.mp3 new file mode 100644 index 0000000000..007d25a185 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_praise.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e93733d0ba9f969cefcd3fae3bb4f0597967a32f760b014994aab8211d296dd +size 642954 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_rules.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_rules.mp3 new file mode 100644 index 0000000000..c1e2369aaa --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_rules.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b28bc11dc3dbc97db365145dd835672af40c94203f99a910e4b75dfef2612a73 +size 487818 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_safe.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_safe.mp3 new file mode 100644 index 0000000000..c4899e6de7 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_safe.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60d84bef015ad465bdc7d1b64bf4ef0b74b1dd071f9fd322d43ce6f1a3fbd8be +size 556938 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 new file mode 100644 index 0000000000..4213639633 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f984df0bd3551c1ddb8aad5419a9c473d89fdde87c203d1ded9e49c065a13b4 +size 745005 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_solve.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_solve.mp3 new file mode 100644 index 0000000000..b8282f8998 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_solve.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9961f01fdfd2ddb09efee5eb9ac9ce3f840e68a9b25efd787831ace4109e0988 +size 843693 diff --git a/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_stress.mp3 b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_stress.mp3 new file mode 100644 index 0000000000..3da99fbf75 --- /dev/null +++ b/packages/app-data/assets/global/plh_audio/testimonials/teen/teen_test_w_stress.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60871d05ae33782ef9aa013392c24357eb5863f34dd8ab8526ba700efa9c76fb +size 885165 diff --git a/packages/app-data/assets/global/plh_audio/testimonies/teen/w_1on1.mp3 b/packages/app-data/assets/global/plh_audio/testimonies/teen/w_1on1.mp3 deleted file mode 100644 index 6c39369f49..0000000000 --- a/packages/app-data/assets/global/plh_audio/testimonies/teen/w_1on1.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7c8eb5effdd61dacc6fa94e4638abd1d87178cfacbfc1885023066b8f10a502f -size 322029 diff --git a/packages/app-data/assets/global/plh_audio/testimonies/teen/w_rules.mp3 b/packages/app-data/assets/global/plh_audio/testimonies/teen/w_rules.mp3 deleted file mode 100644 index 4311ab8e12..0000000000 --- a/packages/app-data/assets/global/plh_audio/testimonies/teen/w_rules.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:933a8ce7955d94e29182023638a9909ffb4f1c63adcd7e819171c3abcd42e99b -size 925101 diff --git a/packages/app-data/assets/global/plh_images/family.svg b/packages/app-data/assets/global/plh_images/family.svg new file mode 100644 index 0000000000..178fa9e3a1 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/family.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6979dbfc5b3c6aa4918480a78e63dcf753f143fefb389d4b171cf85d14f972d3 +size 884867 diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/frustrated.svg b/packages/app-data/assets/global/plh_images/first_app_launch/frustrated.svg index 90b74c2cb5..4822755369 100644 --- a/packages/app-data/assets/global/plh_images/first_app_launch/frustrated.svg +++ b/packages/app-data/assets/global/plh_images/first_app_launch/frustrated.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e1bb5ba37dfbf6d027202c635572f42bd696b4252d45c7821d7c6dae9410d782 -size 12152 +oid sha256:0b05799a8038bff7c22112d17c2159948995ff256693cb80ceb7616b9612dabc +size 12256 diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/frustrated_shadow.svg b/packages/app-data/assets/global/plh_images/first_app_launch/frustrated_shadow.svg deleted file mode 100644 index 4822755369..0000000000 --- a/packages/app-data/assets/global/plh_images/first_app_launch/frustrated_shadow.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b05799a8038bff7c22112d17c2159948995ff256693cb80ceb7616b9612dabc -size 12256 diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/parent_group_shadow.svg b/packages/app-data/assets/global/plh_images/first_app_launch/join_parents.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/first_app_launch/parent_group_shadow.svg rename to packages/app-data/assets/global/plh_images/first_app_launch/join_parents.svg diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent.svg b/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent.svg index 178fa9e3a1..bc0e04fdfd 100644 --- a/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent.svg +++ b/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6979dbfc5b3c6aa4918480a78e63dcf753f143fefb389d4b171cf85d14f972d3 -size 884867 +oid sha256:c943ca846c6383918d19ab19bd01c3891d83ec4ec3792c499b452051883e53d3 +size 884973 diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent_shadow.svg b/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent_shadow.svg deleted file mode 100644 index bc0e04fdfd..0000000000 --- a/packages/app-data/assets/global/plh_images/first_app_launch/loving_parent_shadow.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c943ca846c6383918d19ab19bd01c3891d83ec4ec3792c499b452051883e53d3 -size 884973 diff --git a/packages/app-data/assets/global/plh_images/first_app_launch/parent_group.svg b/packages/app-data/assets/global/plh_images/first_app_launch/parent_group.svg deleted file mode 100644 index 8c27634c15..0000000000 --- a/packages/app-data/assets/global/plh_images/first_app_launch/parent_group.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ed4dc8062e6b9a530182faf56f70ba1978a3fc1baf07c585f2a3692ff894c6b -size 8381 diff --git a/packages/app-data/assets/global/plh_images/habits/breathe.svg b/packages/app-data/assets/global/plh_images/habits/breathe.svg new file mode 100644 index 0000000000..6bcde0d368 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/habits/breathe.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a832f6339c58b55f15bddc8da19980d201d0225ac8071cf1616ee4b4d1332eb +size 2404 diff --git a/packages/app-data/assets/global/plh_images/icons/book.svg b/packages/app-data/assets/global/plh_images/icons/book.svg new file mode 100644 index 0000000000..25e0d1705e --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/book.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7dc8ea1a2bf0d54642781f6fa14255331a4a9fbd3f630d05e04492bee408770 +size 751 diff --git a/packages/app-data/assets/global/plh_images/icons/book_white.svg b/packages/app-data/assets/global/plh_images/icons/book_white.svg new file mode 100644 index 0000000000..38ba12f55a --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/book_white.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f7ad9d5dcd64c42421bf53bf96dbd15aa35b2f02762d68da7797e08be4c09c6 +size 748 diff --git a/packages/app-data/assets/global/plh_images/icons/house.svg b/packages/app-data/assets/global/plh_images/icons/house.svg new file mode 100644 index 0000000000..7d717f4403 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/house.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8644056d861d57126d986b41c4aae6d2d12e5696fca309c6f71f1f3a75161bc +size 628 diff --git a/packages/app-data/assets/global/plh_images/icons/house_white.svg b/packages/app-data/assets/global/plh_images/icons/house_white.svg new file mode 100644 index 0000000000..61b23aa515 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/house_white.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18bf46fee1859d859330f6233efe60a3caecedae6e8b9e297b9a06618419c961 +size 625 diff --git a/packages/app-data/assets/global/plh_images/icons/info_phone.svg b/packages/app-data/assets/global/plh_images/icons/info_phone.svg deleted file mode 100644 index c7b64b1662..0000000000 --- a/packages/app-data/assets/global/plh_images/icons/info_phone.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:006a8442d2ebace6b5335c26d9e0b81e9795c9ca6d38d6fb1ac1766ce4c26084 -size 978 diff --git a/packages/app-data/assets/global/plh_images/icons/info_phone_white.svg b/packages/app-data/assets/global/plh_images/icons/info_phone_white.svg index d76bc9dbad..c234a66c9e 100644 --- a/packages/app-data/assets/global/plh_images/icons/info_phone_white.svg +++ b/packages/app-data/assets/global/plh_images/icons/info_phone_white.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f9c4a7cd3604be95b47cee12ba3cdb3f525a46a835de1d1a6572cdc59887e4d -size 1004 +oid sha256:fe5c65900c0604f731dd386b6f1c92234e2ca1d166e2524a7002263692a95dff +size 1449 diff --git a/packages/app-data/assets/global/plh_images/icons/parent_child.svg b/packages/app-data/assets/global/plh_images/icons/parent_child.svg new file mode 100644 index 0000000000..02a07925ce --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/parent_child.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cc23db38e8f26c53dacbff114fa3d32acc3bd5fb0219e12572a84a5dac5aab3 +size 2056 diff --git a/packages/app-data/assets/global/plh_images/icons/parent_child_white.svg b/packages/app-data/assets/global/plh_images/icons/parent_child_white.svg new file mode 100644 index 0000000000..10a0568580 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/parent_child_white.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb36f960ce3bea45294ea4c741f94e92cf9a4ee27be81bf73fde233fdaad1296 +size 2053 diff --git a/packages/app-data/assets/global/plh_images/icons/person.svg b/packages/app-data/assets/global/plh_images/icons/person.svg new file mode 100644 index 0000000000..ac784ebcf0 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/person.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81dd6ae7db6cf9f102e02642ccf157040df2fb49cfc1e108986a849c86b375e3 +size 493 diff --git a/packages/app-data/assets/global/plh_images/icons/person_white.svg b/packages/app-data/assets/global/plh_images/icons/person_white.svg new file mode 100644 index 0000000000..333cc68f6e --- /dev/null +++ b/packages/app-data/assets/global/plh_images/icons/person_white.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d9a1cae3c1aa5e7aaa1d520b66a1aac725248c76c117cf0e488837065e45b5 +size 490 diff --git a/packages/app-data/assets/global/plh_images/icons/tick.svg b/packages/app-data/assets/global/plh_images/icons/tick.svg index 1fccbf994f..57d0d54c52 100644 --- a/packages/app-data/assets/global/plh_images/icons/tick.svg +++ b/packages/app-data/assets/global/plh_images/icons/tick.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a7f2033ed88b0e00d570ddf63444657d60d867cc61f9914e9a26081d0256cedb -size 420 +oid sha256:d1e3495d51c37724edd4c99ff131abdfc3ebd56e13b0b0e817897753ec86e21a +size 342 diff --git a/packages/app-data/assets/global/plh_images/logos/cwb.png b/packages/app-data/assets/global/plh_images/logos/cwb.png new file mode 100644 index 0000000000..2ea98f38f4 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/cwb.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caf463f3187f7354d8f571b1b782549f2361c8d8069d2323cefe79de992aaac3 +size 158516 diff --git a/packages/app-data/assets/global/plh_images/logos/cwb_blue.png b/packages/app-data/assets/global/plh_images/logos/cwb_blue.png new file mode 100644 index 0000000000..4cba586c82 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/cwb_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2be738b49f43a78a80a0c2dbd2502c90a8de58be999bda0f7010f1ae3d64b21c +size 57698 diff --git a/packages/app-data/assets/global/plh_images/logos/erc.png b/packages/app-data/assets/global/plh_images/logos/erc.png new file mode 100644 index 0000000000..741dc5dd12 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/erc.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad2173f229c58149c0fefbbdb860dcb2602b8fbf3392c49595a87a60a0ee44c2 +size 107800 diff --git a/packages/app-data/assets/global/plh_images/logos/erc_blue.png b/packages/app-data/assets/global/plh_images/logos/erc_blue.png new file mode 100644 index 0000000000..7d99b3986d --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/erc_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e07c03efd02d342827e03f6010cdcfa3b26b61e0fe6ab4222805fc0670651a5 +size 98689 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/erc.png b/packages/app-data/assets/global/plh_images/logos/funders/erc.png deleted file mode 100644 index ac539d4357..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/erc.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3158cc4d8bbabae5ae46b1bb5f51f5d68b97f22c5799ee19326c938145515507 -size 64778 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/gcrf.png b/packages/app-data/assets/global/plh_images/logos/funders/gcrf.png deleted file mode 100644 index a66d8fc662..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/gcrf.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3d0b67de8b6a6012c17ef6d544c77b37759e2fe75dedb0be035f0141ddc78c87 -size 27879 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/lego_foundation.png b/packages/app-data/assets/global/plh_images/logos/funders/lego_foundation.png deleted file mode 100644 index c6d6f11456..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/lego_foundation.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72d0f37874ba2be2085a13dc5a35e17a4bc70c5cab3a95dd61902960c615c8c5 -size 14604 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/oak_foundation.png b/packages/app-data/assets/global/plh_images/logos/funders/oak_foundation.png deleted file mode 100644 index 51e8c06fde..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/oak_foundation.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5e1f30faeeaf780603c45a1957ac3dec7c516c8f15cb92a1ce6ded5c24e1392 -size 22175 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/ukri.png b/packages/app-data/assets/global/plh_images/logos/funders/ukri.png deleted file mode 100644 index 306e9f56dd..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/ukri.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37e35249cf4043bb137a88e37ffd064351f40efa0e9bb1e7fcddb22a21ec2e49 -size 17357 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/unicef.png b/packages/app-data/assets/global/plh_images/logos/funders/unicef.png deleted file mode 100644 index 854dd08b99..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/unicef.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:003b4a4c4abdd7bdc07b12b692e5fcc4c83b421fb34781b5d355721b105f01ee -size 24170 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/university_of_oxford.png b/packages/app-data/assets/global/plh_images/logos/funders/university_of_oxford.png deleted file mode 100644 index ef6c93a021..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/funders/university_of_oxford.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ef1343f1893d67a2d60187fc3a873d4e68b5a06b6574a961ae8748b471b8716 -size 43032 diff --git a/packages/app-data/assets/global/plh_images/logos/gcrf.png b/packages/app-data/assets/global/plh_images/logos/gcrf.png new file mode 100644 index 0000000000..74ac3eb047 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/gcrf.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0af913c9b1bd11e341b3083e1aa085e19bb752de7752ecd8c107d377b6728919 +size 114371 diff --git a/packages/app-data/assets/global/plh_images/logos/gcrf_blue.png b/packages/app-data/assets/global/plh_images/logos/gcrf_blue.png new file mode 100644 index 0000000000..0d1353b9e8 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/gcrf_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e758ac5fe8dd52a789237a03f3be184742ca2ce288bbd856cb585548d0f5e93a +size 57798 diff --git a/packages/app-data/assets/global/plh_images/logos/gisp.png b/packages/app-data/assets/global/plh_images/logos/gisp.png new file mode 100644 index 0000000000..a6f92a9607 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/gisp.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef4cbdbd59f4f42e08486fd8dd2964371c6a4d689c49f0862ec15c0dc8251543 +size 56760 diff --git a/packages/app-data/assets/global/plh_images/logos/gisp_blue.png b/packages/app-data/assets/global/plh_images/logos/gisp_blue.png new file mode 100644 index 0000000000..5ad2d04ae7 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/gisp_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df5247227ef6fa0ebc430f8a3f4b12c6e7f8d400ef6faa54013ad1a546bbd9ae +size 55202 diff --git a/packages/app-data/assets/global/plh_images/logos/ics.png b/packages/app-data/assets/global/plh_images/logos/ics.png new file mode 100644 index 0000000000..0b13704bdb --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/ics.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfda6c88c2c831bfa04c50cd5c26a66170742703a6beaeded2b2eb51431ca56 +size 376777 diff --git a/packages/app-data/assets/global/plh_images/logos/ics_blue.png b/packages/app-data/assets/global/plh_images/logos/ics_blue.png new file mode 100644 index 0000000000..db4d048538 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/ics_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1b1cd10f5162b497ccb2e3b17b86e66c01efac9b55133b43c6e7f87bbad567a +size 156711 diff --git a/packages/app-data/assets/global/plh_images/logos/idems.png b/packages/app-data/assets/global/plh_images/logos/idems.png new file mode 100644 index 0000000000..dc33751b3c --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/idems.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0c424b031adaa41e8a18a0ccc83a56c677fc953098fb10e5cf1f45011fa7344 +size 77370 diff --git a/packages/app-data/assets/global/plh_images/logos/idems_blue.png b/packages/app-data/assets/global/plh_images/logos/idems_blue.png new file mode 100644 index 0000000000..18d0db6709 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/idems_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98fcf1cbf3b275d7b7558e7cbdd7b7eb78b7a3e7fdf1515b857de2755778734b +size 40320 diff --git a/packages/app-data/assets/global/plh_images/logos/innodems.png b/packages/app-data/assets/global/plh_images/logos/innodems.png new file mode 100644 index 0000000000..51138ebbe6 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/innodems.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7e89b945e65c032f0f675168fa6aa5df3e7b1e3378bfec3ddf167438e835d1 +size 89396 diff --git a/packages/app-data/assets/global/plh_images/logos/lego_foundation.png b/packages/app-data/assets/global/plh_images/logos/lego_foundation.png new file mode 100644 index 0000000000..2b6c8c7ef8 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/lego_foundation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:542ba97c1677023db16abb9a4efa1f5d223278b6c03addf65babeb576aabb9ab +size 55674 diff --git a/packages/app-data/assets/global/plh_images/logos/lego_foundation_blue.png b/packages/app-data/assets/global/plh_images/logos/lego_foundation_blue.png new file mode 100644 index 0000000000..9d2944b437 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/lego_foundation_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cead0e5ed9709dba56f3f1aa80cdbecb8a3d14cfbb096b72c1201877def4859 +size 40216 diff --git a/packages/app-data/assets/global/plh_images/logos/nimr.png b/packages/app-data/assets/global/plh_images/logos/nimr.png new file mode 100644 index 0000000000..8e1360b6a7 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/nimr.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92caae63ca0c81ec3d199780f5d01914a2439bda0f3c46cdd11e5d051ec43a6e +size 67566 diff --git a/packages/app-data/assets/global/plh_images/logos/nimr_blue.png b/packages/app-data/assets/global/plh_images/logos/nimr_blue.png new file mode 100644 index 0000000000..0521e22cd3 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/nimr_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e790e4a54a94606c9a79ba23d024f8ff52382397fa29b86913c178b5ed4e7ad8 +size 227897 diff --git a/packages/app-data/assets/global/plh_images/logos/oak_foundation.png b/packages/app-data/assets/global/plh_images/logos/oak_foundation.png new file mode 100644 index 0000000000..168e9ec6ec --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/oak_foundation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ebedb26dd587da754198da72d9e89c97470edfcf65c5b2cd5575116944348f +size 70870 diff --git a/packages/app-data/assets/global/plh_images/logos/oak_foundation_blue.png b/packages/app-data/assets/global/plh_images/logos/oak_foundation_blue.png new file mode 100644 index 0000000000..bb92691285 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/oak_foundation_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73b8ecf4375b5f4c65ff4652131d8856a005ecc9ffa0931446d1de3852806685 +size 49311 diff --git a/packages/app-data/assets/global/plh_images/logos/funders/end_violence_against_children.png b/packages/app-data/assets/global/plh_images/logos/old/end_violence_against_children.png similarity index 100% rename from packages/app-data/assets/global/plh_images/logos/funders/end_violence_against_children.png rename to packages/app-data/assets/global/plh_images/logos/old/end_violence_against_children.png diff --git a/packages/app-data/assets/global/plh_images/logos/funders/generali_human_safety_net.png b/packages/app-data/assets/global/plh_images/logos/old/generali_human_safety_net.png similarity index 100% rename from packages/app-data/assets/global/plh_images/logos/funders/generali_human_safety_net.png rename to packages/app-data/assets/global/plh_images/logos/old/generali_human_safety_net.png diff --git a/packages/app-data/assets/global/plh_images/logos/funders/newton_fund.png b/packages/app-data/assets/global/plh_images/logos/old/newton_fund.png similarity index 100% rename from packages/app-data/assets/global/plh_images/logos/funders/newton_fund.png rename to packages/app-data/assets/global/plh_images/logos/old/newton_fund.png diff --git a/packages/app-data/assets/global/plh_images/logos/partners/cwb.png b/packages/app-data/assets/global/plh_images/logos/partners/cwb.png deleted file mode 100644 index ff5038184e..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/partners/cwb.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b60e0b4e7ae4b9fdc3257dd74151aaed8bed6d4ca405e7c327401e47ce9d03be -size 28932 diff --git a/packages/app-data/assets/global/plh_images/logos/partners/idems.png b/packages/app-data/assets/global/plh_images/logos/partners/idems.png deleted file mode 100644 index 324f6d3536..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/partners/idems.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:228ed8b87715bc7576eba31dd1c79b1f700e9c62af4874fc0198fdddf5928e4b -size 17720 diff --git a/packages/app-data/assets/global/plh_images/logos/partners/plh.png b/packages/app-data/assets/global/plh_images/logos/partners/plh.png deleted file mode 100644 index 84fcc2e554..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/partners/plh.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f26277e8b154b0a19cae4acf042d6554cb787c9d29fd45cfa43d95326ae49484 -size 18863 diff --git a/packages/app-data/assets/global/plh_images/logos/partners/unicef.png b/packages/app-data/assets/global/plh_images/logos/partners/unicef.png deleted file mode 100644 index 561ebb5073..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/partners/unicef.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bd89ae2ccf666da1fbbffd1937f2f2e991d3c9a5b7c9b58fb8055887fdfeade -size 30616 diff --git a/packages/app-data/assets/global/plh_images/logos/partners/who.png b/packages/app-data/assets/global/plh_images/logos/partners/who.png deleted file mode 100644 index 593e421d16..0000000000 --- a/packages/app-data/assets/global/plh_images/logos/partners/who.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8121f7c694a78ffd8509df0bcf2590b798038fbaf54b987e92e3c802e8886791 -size 43898 diff --git a/packages/app-data/assets/global/plh_images/logos/plh.png b/packages/app-data/assets/global/plh_images/logos/plh.png new file mode 100644 index 0000000000..41af641fce --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/plh.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef0b59c877f305a70a63224d81061086fb87a26e736a761b52696a1e33d8188 +size 167232 diff --git a/packages/app-data/assets/global/plh_images/logos/plh_blue.png b/packages/app-data/assets/global/plh_images/logos/plh_blue.png new file mode 100644 index 0000000000..afd119b67a --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/plh_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70e36ae8bea99935e0ca1b4864e81fab064b4c666633dcce2c85a634b7444e96 +size 167241 diff --git a/packages/app-data/assets/global/plh_images/logos/tz_government.png b/packages/app-data/assets/global/plh_images/logos/tz_government.png new file mode 100644 index 0000000000..763a41960b --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/tz_government.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbd31782517aa0bd95063e64036fd06acb03a144dd93e4f9d883203c2fe7d602 +size 119163 diff --git a/packages/app-data/assets/global/plh_images/logos/tz_government_blue.png b/packages/app-data/assets/global/plh_images/logos/tz_government_blue.png new file mode 100644 index 0000000000..39d9516305 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/tz_government_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e82b1f48358d868d6bff996b72634fe0c524dbb12ae19ab1dddf322ec87bfaa0 +size 453863 diff --git a/packages/app-data/assets/global/plh_images/logos/uct.png b/packages/app-data/assets/global/plh_images/logos/uct.png new file mode 100644 index 0000000000..3859b6a954 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/uct.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe1991214ab920e90375a1214d287c41da8a4b0e18476a535d7bf51dc5945cd1 +size 120863 diff --git a/packages/app-data/assets/global/plh_images/logos/uct_blue.png b/packages/app-data/assets/global/plh_images/logos/uct_blue.png new file mode 100644 index 0000000000..e384f03df7 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/uct_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09431bc1111a5d28e9a04071d92f77c6557bf57fa2e584d702c6ec7a614c7233 +size 134686 diff --git a/packages/app-data/assets/global/plh_images/logos/ukri.png b/packages/app-data/assets/global/plh_images/logos/ukri.png new file mode 100644 index 0000000000..62468385af --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/ukri.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c9fddc6614b4c3626194820f5c242f6684a32281f224f9eacfca161b862b7f1 +size 41049 diff --git a/packages/app-data/assets/global/plh_images/logos/ukri_blue.png b/packages/app-data/assets/global/plh_images/logos/ukri_blue.png new file mode 100644 index 0000000000..a5ad0093d2 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/ukri_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08436342fab571cfdf643d6441f34053d777571e3ac3356a16fa660226892c43 +size 38508 diff --git a/packages/app-data/assets/global/plh_images/logos/unicef.png b/packages/app-data/assets/global/plh_images/logos/unicef.png new file mode 100644 index 0000000000..fbcc89c538 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/unicef.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c51f92725b7a8651917698a094ea72ee7bc83b76e7de6474e2b42f1494a2913 +size 67615 diff --git a/packages/app-data/assets/global/plh_images/logos/unicef_blue.png b/packages/app-data/assets/global/plh_images/logos/unicef_blue.png new file mode 100644 index 0000000000..16b4ca49fa --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/unicef_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84ce6ed8f9fbb29aedd2358fdb168e39506a682578a385b7b43537f5a86839a1 +size 50457 diff --git a/packages/app-data/assets/global/plh_images/logos/university_of_oxford.png b/packages/app-data/assets/global/plh_images/logos/university_of_oxford.png new file mode 100644 index 0000000000..4683132e6e --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/university_of_oxford.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e228386d1c42b065b532cc553c059c6667b110da0fce105ba34b45e2fa6e2c15 +size 94919 diff --git a/packages/app-data/assets/global/plh_images/logos/university_of_oxford_blue.png b/packages/app-data/assets/global/plh_images/logos/university_of_oxford_blue.png new file mode 100644 index 0000000000..b64e080c29 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/university_of_oxford_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7984fb6cf6a958490ea71951a4bfa336a84203aa2d927cba725370fa1a48c744 +size 72889 diff --git a/packages/app-data/assets/global/plh_images/logos/usaid.png b/packages/app-data/assets/global/plh_images/logos/usaid.png new file mode 100644 index 0000000000..a65a2c9d11 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/usaid.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2943bfca7f2fb0102c6af34b8cb4fe6350e53ea4d6ab6b6e446a3f204a7ae71 +size 124504 diff --git a/packages/app-data/assets/global/plh_images/logos/usaid_blue.png b/packages/app-data/assets/global/plh_images/logos/usaid_blue.png new file mode 100644 index 0000000000..b8bcb54d36 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/usaid_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b2135f78043849f17b4120e7ced91ef729d3c4faee6e2453ef2aa96aa212f9c +size 70388 diff --git a/packages/app-data/assets/global/plh_images/logos/vodacom.png b/packages/app-data/assets/global/plh_images/logos/vodacom.png new file mode 100644 index 0000000000..ad93d2bebe --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/vodacom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c01f1e99b47bab806415cd3c18bef3845454110152e9a3c44bf28b5bf5ce2b19 +size 59957 diff --git a/packages/app-data/assets/global/plh_images/logos/wellspring.png b/packages/app-data/assets/global/plh_images/logos/wellspring.png new file mode 100644 index 0000000000..09a817c386 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/wellspring.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e294b607b2695b43078e5a888cc0c1cbc017e57119ed12981b1ead10a5fe0c9b +size 63171 diff --git a/packages/app-data/assets/global/plh_images/logos/wellspring_blue.png b/packages/app-data/assets/global/plh_images/logos/wellspring_blue.png new file mode 100644 index 0000000000..1b8ffef60b --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/wellspring_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5891a3b515f7e541ea377b547701abd1d431fb99cc92ddbfce2e6cf2e82126ee +size 66945 diff --git a/packages/app-data/assets/global/plh_images/logos/who.png b/packages/app-data/assets/global/plh_images/logos/who.png new file mode 100644 index 0000000000..2b3af5ecbc --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/who.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8245f7c99d032d78c7fd19f7729cc02366c0a4b8e9c4af95971075be520960 +size 107556 diff --git a/packages/app-data/assets/global/plh_images/logos/who_blue.png b/packages/app-data/assets/global/plh_images/logos/who_blue.png new file mode 100644 index 0000000000..929f2e90d1 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/who_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:811ca4b46bf2ed9fe7f3d2ad761bf13b7a2302d34ed8226195d3548a18942668 +size 110585 diff --git a/packages/app-data/assets/global/plh_images/logos/za_dsd.png b/packages/app-data/assets/global/plh_images/logos/za_dsd.png new file mode 100644 index 0000000000..8712144fb4 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/za_dsd.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4de3868a3f832ab36b2109610a136529cfaea319e0067eea53f3b3dd9965494 +size 158254 diff --git a/packages/app-data/assets/global/plh_images/logos/za_dsd_blue.png b/packages/app-data/assets/global/plh_images/logos/za_dsd_blue.png new file mode 100644 index 0000000000..6fc9da499b --- /dev/null +++ b/packages/app-data/assets/global/plh_images/logos/za_dsd_blue.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec7104e502c5710130f1350ee38c425d553a68c7a32e3de88857dfd9ba7c32aa +size 115213 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happier.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happier.svg deleted file mode 100644 index c2723bac67..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happier.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03fd10043c629580beed4f11acd75f5df8d6001df8b463db6b6cbb5dda60c698 -size 474 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happiest.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happiest.svg deleted file mode 100644 index c42c3e422e..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happiest.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7239e9b66e290e7ba90ab64c2b74814db00368873fb6981e973d5c6661b713b7 -size 566 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happy.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happy.svg deleted file mode 100644 index 26e35ab452..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/happy.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ec22b1692479f3ebcb61cd8d5ea65b26ba8d1c4d17e51aed656b8670a8aaaea -size 471 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/neutral.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/neutral.svg deleted file mode 100644 index 32b7642840..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/neutral.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5890717be13b906493103eb4a00c86db86a7f32dbf0cb56110b869cbff18cccd -size 452 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sad.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sad.svg deleted file mode 100644 index 0350fd8ed4..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sad.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be8f6e45ee9c042a0c016c90e7a2c08c4c52f92d7af23cb2a8788cf3c2e913b3 -size 469 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sadder.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sadder.svg deleted file mode 100644 index 7563256d40..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/sadder.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f259b8f22b934fd0d2fb677fc881589686c3bb14930f09483bb6c7d8fb28890d -size 479 diff --git a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/saddest.svg b/packages/app-data/assets/global/plh_images/stickers/faces_yellow/saddest.svg deleted file mode 100644 index 6f9318453d..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/faces_yellow/saddest.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:53c003866b3640891a4e1822ad96c6ed19d9d50a288fe597b2b02e9b9e0048e8 -size 562 diff --git a/packages/app-data/assets/global/plh_images/stickers/sticker01.jpg b/packages/app-data/assets/global/plh_images/stickers/sticker01.jpg deleted file mode 100644 index 406f4b1f56..0000000000 --- a/packages/app-data/assets/global/plh_images/stickers/sticker01.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a92d5e940f9427c0d27d9f7713223730afece0a7297119f775acee23be97907f -size 141653 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/cup.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/cup.svg deleted file mode 100644 index 343f3cb494..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/cup.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4ecb1314824787ecd0a7433186907a78a02bbb7099b279fa98f28a4a10dafc76 -size 5682 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/cup.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/cup.svg deleted file mode 100644 index f48d911c4c..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/cup.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7df079b00de9b5aff1af12f8ec68a39b3c4fc9a7227e386cacaa0b48d424f481 -size 11886 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/light_bulb.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/light_bulb.svg deleted file mode 100644 index 130fc62c07..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/light_bulb.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b5270dec7f7ea2c4a2163bac0baf7586eef630837350c4c5d60d703fe32695f -size 5521 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/notes.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/notes.svg deleted file mode 100644 index 047857741f..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/notes.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:082ffe566c3b49fb8ee504332db53e62f2b7352457a7050cdf903704cbecd890 -size 56343 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/relax.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/relax.svg deleted file mode 100644 index 38f7768061..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/relax.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adafb2873eb5dea237cef647cc94d74355ca8173665d7d016a1f5b247a33c35f -size 4282 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/star.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/star.svg deleted file mode 100644 index 269a173f66..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/star.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f639a7370ebb2c251dd89e0e4ec91bfd4d523fcce9afbe262694bf3b7ac41e5f -size 4665 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/thumbs_up.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/thumbs_up.svg deleted file mode 100644 index 86ba5d1100..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/thumbs_up.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db52341b65f583be1bfc0997255ea2209c5d0ec225619903a17bdf53023e6853 -size 4319 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/wave.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/wave.svg deleted file mode 100644 index 4869e87cc2..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/final/wave.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bb4f641dd9ede61e34157ca23dc3770e833f1885e87807041a774c19e6253725 -size 3889 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/light_bulb.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/light_bulb.svg deleted file mode 100644 index 5524505b20..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/light_bulb.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:158e2836dbb4e563420e7cba4091f8b746785ffc872b36127fd39db137c88ed0 -size 4510 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes.svg deleted file mode 100644 index 55f4ec59f9..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8966927911dfd6dc14945333c228b3156651a8f4cdbb72e46a0c9afa6318f90f -size 55369 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes_left.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes_left.svg deleted file mode 100644 index 42ec081ec6..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/notes_left.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:17270f97767d33d4ebd0a8cccc264abbfc61e5e780cd1418002f1a26cf0bbcd8 -size 57229 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/read.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/read.svg deleted file mode 100644 index 9385bfeb58..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/read.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcb88be358970a16c928f5204ff7572ff982cbf031bd51b3b65826b77c041861 -size 3843 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/relax.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/relax.svg deleted file mode 100644 index 4cbc45d1f4..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/relax.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:05dbda05f2107ae3cb1e742608ecdc8fe4f586da97cf99ca9546e89380c58727 -size 3257 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/star.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/star.svg deleted file mode 100644 index d6410a8c9f..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/star.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2ffe194dddb5cf17ab6940d10b56ff5063539587c58bcc7028284d748807587 -size 3676 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/thumbs_up.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/thumbs_up.svg deleted file mode 100644 index 6539406aac..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/thumbs_up.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad8f6d0a45fc99187cc81bbd498d45b4a537701c72f67414e912d4a454f5afad -size 3301 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/wave.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/wave.svg deleted file mode 100644 index a0c60f4113..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/wave.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:953d6f59e322534a12ceb50480b6b15f7cfd251d647703ab7a840038b13d912b -size 2877 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/with_teen.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/with_teen.svg deleted file mode 100644 index 48705437b2..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/with_teen.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad7944de9ecbc571bb68caeee9f3eca6d7354ffbf97995f2888db39452a65190 -size 6076 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/write.svg b/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/write.svg deleted file mode 100644 index 637aebce9b..0000000000 --- a/packages/app-data/assets/global/plh_images/workshop_modes/guide_1/write.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:047bf664b7b95ac53e7f3f9013853f8bf82a9142ca02567e13b7d9738c738059 -size 3867 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/individual/breathe.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/breathe.svg new file mode 100644 index 0000000000..6bcde0d368 --- /dev/null +++ b/packages/app-data/assets/global/plh_images/workshop_modes/individual/breathe.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a832f6339c58b55f15bddc8da19980d201d0225ac8071cf1616ee4b4d1332eb +size 2404 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/cup.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/cup.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/cup.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/cup.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/thumbs_up.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/explain.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/thumbs_up.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/explain.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/cup.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/cup.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/cup.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/cup.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/explain.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/explain.svg new file mode 100644 index 0000000000..ba23e8e1ca --- /dev/null +++ b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/explain.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e79a0c1f221744d59ec1f0f9ff524b1a90106feceb775ca7188214ff07415163 +size 3434 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/light_bulb.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/light_bulb.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/light_bulb.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/light_bulb.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/notes.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/notes.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/notes.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/notes.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/read.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/read.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/read.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/read.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/relax.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/relax.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/relax.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/relax.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/star.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/star.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/star.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/star.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/thumbs_up.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/thumbs_up.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/thumbs_up.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/thumbs_up.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/wave.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/final/wave.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/final/wave.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/final/wave.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/light_bulb.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/light_bulb.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/light_bulb.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/light_bulb.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/notes.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/notes.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/notes.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/notes.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/notes_left.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/notes_left.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/notes_left.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/notes_left.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/individual/read.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/read.svg new file mode 100644 index 0000000000..25a816066a --- /dev/null +++ b/packages/app-data/assets/global/plh_images/workshop_modes/individual/read.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebd16442b91ab300f828406532ea43b587e945de4baffd6eb4ad00ad972ece89 +size 3810 diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/relax.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/relax.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/relax.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/relax.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/star.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/star.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/star.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/star.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/wave.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/wave.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/wave.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/wave.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/with_teen.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/with_teen.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/with_teen.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/with_teen.svg diff --git a/packages/app-data/assets/global/plh_images/workshop_modes/guide_2/write.svg b/packages/app-data/assets/global/plh_images/workshop_modes/individual/write.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshop_modes/guide_2/write.svg rename to packages/app-data/assets/global/plh_images/workshop_modes/individual/write.svg diff --git a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 1.svg b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 1.svg deleted file mode 100644 index b8ced7abdc..0000000000 --- a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 1.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:290e080a247c1dd7de672c2542ea1192e3e1ff3a52800818b9b7a0429bc1d09a -size 6789 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 2.svg b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 2.svg deleted file mode 100644 index 143b99449a..0000000000 --- a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 2.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98033ca14749d9e46b443f62631fd4b17c7a7d378799a67021c4a876bc74e6e9 -size 5680 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_5.svg b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_5.svg index eacd5fe5a9..b8ced7abdc 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_5.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_5.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51d65175bcb41d604e399b087d7b624651b0fc494bf12f330830f133d05748c5 -size 7536 +oid sha256:290e080a247c1dd7de672c2542ea1192e3e1ff3a52800818b9b7a0429bc1d09a +size 6789 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_6.svg b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_6.svg index 6116ffec43..143b99449a 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_6.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_consequence/read_3/slide_6.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b105b1fa0044df9fd1400b1814a8dfdcb9f23a7bae2d496af6acfc24e1fc4bbc -size 5700 +oid sha256:98033ca14749d9e46b443f62631fd4b17c7a7d378799a67021c4a876bc74e6e9 +size 5680 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_1.svg b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_1.svg index 7f6215139a..0ce3bfed9c 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_1.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_1.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b006882493a867dc2ff9078a2da9c76384908a8681b076d75ff26809606a56b7 -size 6618 +oid sha256:081ca0c56068b1afce72369d58b8bdc527d53a79961aa9097b55175af3e2b647 +size 6313 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_2.svg b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_2.svg index d7900573e4..7f6215139a 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_2.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_2.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dd4d8b6d688a4f8a9f18da6e5939df7283b8bf4b27810a7d542dea51411f728 -size 7877 +oid sha256:b006882493a867dc2ff9078a2da9c76384908a8681b076d75ff26809606a56b7 +size 6618 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_3.svg b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_3.svg index 1b1f84bb2e..d7900573e4 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_3.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_3.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:299400e633a616d4e062677c905c21d2fc04c46882a36529a85e86632091d9da -size 7699 +oid sha256:9dd4d8b6d688a4f8a9f18da6e5939df7283b8bf4b27810a7d542dea51411f728 +size 7877 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_4.svg b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_4.svg index c506c7f074..1b1f84bb2e 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_4.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_4.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1754e42c21115540ddeb51b3bcb453220790b109dac568792a7ab61c31d34a8e -size 8904 +oid sha256:299400e633a616d4e062677c905c21d2fc04c46882a36529a85e86632091d9da +size 7699 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_5.svg b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_5.svg index 0ce3bfed9c..c506c7f074 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_5.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_crisis/learn/slide_5.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:081ca0c56068b1afce72369d58b8bdc527d53a79961aa9097b55175af3e2b647 -size 6313 +oid sha256:1754e42c21115540ddeb51b3bcb453220790b109dac568792a7ab61c31d34a8e +size 8904 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_2.svg b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_2.svg index 23e5f2fb51..5b347ae994 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_2.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_2.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb7257b9d79ccc76c244cb979f5bcb56486ce738f5c21705fee51249b7e14f5c -size 13554 +oid sha256:3be75951ec20511c17895156c83d135649422f3c310161cdb3582f355b8cbbd4 +size 13428 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_3.svg b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_3.svg index ccda75c03b..23e5f2fb51 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_3.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_3.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b543825958226f2955c167e2afa15cd0958514168b5f2f492e8e1cd5509ea396 -size 11238 +oid sha256:cb7257b9d79ccc76c244cb979f5bcb56486ce738f5c21705fee51249b7e14f5c +size 13554 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_4.svg b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_4.svg index 1f14c9f39e..ccda75c03b 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_4.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_4.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b67ce4296ab93779dc2999b8fb3360e47ddb734a28efeb3406b35de87a492a6 -size 10645 +oid sha256:b543825958226f2955c167e2afa15cd0958514168b5f2f492e8e1cd5509ea396 +size 11238 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_5.svg b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_5.svg new file mode 100644 index 0000000000..1f14c9f39e --- /dev/null +++ b/packages/app-data/assets/global/plh_images/workshops/w_instruct/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b67ce4296ab93779dc2999b8fb3360e47ddb734a28efeb3406b35de87a492a6 +size 10645 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_2.svg b/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_2.svg index 4aefb0f7dc..869f4484a0 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_2.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_2.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4be71d6e4d5a8d738ab9d68bbb6e7b6834df1c6528a1dc24b78506c841ce5c9 -size 1786028 +oid sha256:bba2973632dde3576e60211e5740fad82686f9d75a9f60977a02d38b7d1452b6 +size 1411639 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_3.svg b/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_3.svg index 869f4484a0..4aefb0f7dc 100644 --- a/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_3.svg +++ b/packages/app-data/assets/global/plh_images/workshops/w_safe/learn/slide_3.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bba2973632dde3576e60211e5740fad82686f9d75a9f60977a02d38b7d1452b6 -size 1411639 +oid sha256:b4be71d6e4d5a8d738ab9d68bbb6e7b6834df1c6528a1dc24b78506c841ce5c9 +size 1786028 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/recognise.svg b/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/recognise.svg deleted file mode 100644 index 179b6b8a2f..0000000000 --- a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/recognise.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:59327ea47fc55fbea34406c1aa9b7065e34b8fb587d46a46ec8f8b70a776dcbd -size 7034 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/reward.svg b/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/reward.svg deleted file mode 100644 index 5337a56b57..0000000000 --- a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_1/reward.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a1cca4fab9693676c4c29cae2f13b6349a0c50c185bb7bd34aa764385f842ffe -size 8222 diff --git a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_2/recognise.svg b/packages/app-data/assets/global/plh_images/workshops/w_self_care/individual/recognise.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_2/recognise.svg rename to packages/app-data/assets/global/plh_images/workshops/w_self_care/individual/recognise.svg diff --git a/packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_2/reward.svg b/packages/app-data/assets/global/plh_images/workshops/w_self_care/individual/reward.svg similarity index 100% rename from packages/app-data/assets/global/plh_images/workshops/w_self_care/guide_2/reward.svg rename to packages/app-data/assets/global/plh_images/workshops/w_self_care/individual/reward.svg diff --git a/packages/app-data/assets/global/plh_images/workshops/w_solve/tools/tool_3_alternative.svg b/packages/app-data/assets/global/plh_images/workshops/w_solve/tools/tool_3_alternative.svg deleted file mode 100644 index 799eefcac9..0000000000 --- a/packages/app-data/assets/global/plh_images/workshops/w_solve/tools/tool_3_alternative.svg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3249444ea94d599d0bf8f2d4d30ff5da6c6a6e1eb7a0ebbfb22494536fc5c5fd -size 24853 diff --git a/packages/app-data/assets/global/plh_video/lets_slow_down.srt b/packages/app-data/assets/global/plh_video/lets_slow_down.srt new file mode 100644 index 0000000000..63ea35aa47 --- /dev/null +++ b/packages/app-data/assets/global/plh_video/lets_slow_down.srt @@ -0,0 +1,107 @@ +1 +00:00:06,592 --> 00:00:09,549 +When everything feels like it is falling apart + +2 +00:00:09,549 --> 00:00:11,901 +And you can't help but raise your voice + +3 +00:00:11,901 --> 00:00:14,794 +When all the frustrations are beginning to start + +4 +00:00:14,794 --> 00:00:17,343 +Remember that you have a choice + +5 +00:00:17,650 --> 00:00:19,890 +Let's slow down + +6 +00:00:20,450 --> 00:00:23,052 +Take a few deep breaths + +7 +00:00:23,591 --> 00:00:27,983 +Remember all we have to be grateful for + +8 +00:00:28,839 --> 00:00:31,146 +Let's slow down + +9 +00:00:31,806 --> 00:00:34,240 +Take a few deep breaths + +10 +00:00:34,480 --> 00:00:38,909 +Because I really couldn't love you more + +11 +00:00:42,301 --> 00:00:45,410 +You can take pause, you can count to 10 + +12 +00:00:45,410 --> 00:00:48,210 +Play a game or do something fun + +13 +00:00:48,070 --> 00:00:51,040 +You can phone a friend, someone to confide in + +14 +00:00:51,040 --> 00:00:54,227 +Remember you're not the only one + +15 +00:00:54,227 --> 00:00:56,558 +Let's slow down + +16 +00:00:56,558 --> 00:00:59,520 +Take a few deep breaths + +17 +00:00:59,520 --> 00:01:04,408 +Remember all we have to be grateful for + +18 +00:01:05,197 --> 00:01:07,779 +Let's slow down + +19 +00:01:08,298 --> 00:01:10,444 +Take a few deep breaths + +20 +00:01:10,444 --> 00:01:15,464 +Because I really couldn't love you more + +21 +00:01:16,530 --> 00:01:18,940 +Let's slow down + +22 +00:01:19,110 --> 00:01:21,579 +Take a few deep breaths + +23 +00:01:21,579 --> 00:01:27,344 +Remember all we have to be grateful for + +24 +00:01:27,344 --> 00:01:29,851 +Let's slow down + +25 +00:01:30,411 --> 00:01:33,011 +Take a few deep breaths + +26 +00:01:33,011 --> 00:01:37,763 +Because I really couldn't love you more + +27 +00:01:39,053 --> 00:01:43,544 +Because I really couldn't love you more \ No newline at end of file diff --git a/packages/app-data/assets/global/plh_video/lets_slow_down.vtt b/packages/app-data/assets/global/plh_video/lets_slow_down.vtt new file mode 100644 index 0000000000..c14f4639aa --- /dev/null +++ b/packages/app-data/assets/global/plh_video/lets_slow_down.vtt @@ -0,0 +1,110 @@ +WEBVTT + +1 +00:00:06.592 --> 00:00:09.549 +When everything feels like it is falling apart + +2 +00:00:09.549 --> 00:00:11.901 +And you can't help but raise your voice + +3 +00:00:11.901 --> 00:00:14.794 +When all the frustrations are beginning to start + +4 +00:00:14.794 --> 00:00:17.343 +Remember that you have a choice + +5 +00:00:17.650 --> 00:00:19.890 +Let's slow down + +6 +00:00:20.450 --> 00:00:23.052 +Take a few deep breaths + +7 +00:00:23.591 --> 00:00:27.983 +Remember all we have to be grateful for + +8 +00:00:28.839 --> 00:00:31.146 +Let's slow down + +9 +00:00:31.806 --> 00:00:34.240 +Take a few deep breaths + +10 +00:00:34.480 --> 00:00:38.909 +Because I really couldn't love you more + +11 +00:00:42.301 --> 00:00:45.410 +You can take pause, you can count to 10 + +12 +00:00:45.410 --> 00:00:48.210 +Play a game or do something fun + +13 +00:00:48.070 --> 00:00:51.040 +You can phone a friend, someone to confide in + +14 +00:00:51.040 --> 00:00:54.227 +Remember you're not the only one + +15 +00:00:54.227 --> 00:00:56.558 +Let's slow down + +16 +00:00:56.558 --> 00:00:59.520 +Take a few deep breaths + +17 +00:00:59.520 --> 00:01:04.408 +Remember all we have to be grateful for + +18 +00:01:05.197 --> 00:01:07.779 +Let's slow down + +19 +00:01:08.298 --> 00:01:10.444 +Take a few deep breaths + +20 +00:01:10.444 --> 00:01:15.464 +Because I really couldn't love you more + +21 +00:01:16.530 --> 00:01:18.940 +Let's slow down + +22 +00:01:19.110 --> 00:01:21.579 +Take a few deep breaths + +23 +00:01:21.579 --> 00:01:27.344 +Remember all we have to be grateful for + +24 +00:01:27.344 --> 00:01:29.851 +Let's slow down + +25 +00:01:30.411 --> 00:01:33.011 +Take a few deep breaths + +26 +00:01:33.011 --> 00:01:37.763 +Because I really couldn't love you more + +27 +00:01:39.053 --> 00:01:43.544 +Because I really couldn't love you more + diff --git a/packages/app-data/assets/global/quality_assurance/test_audio.mp3 b/packages/app-data/assets/global/quality_assurance/test_audio.mp3 deleted file mode 100644 index 224bac8022..0000000000 --- a/packages/app-data/assets/global/quality_assurance/test_audio.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a2cab0f76239cacd281a7f38d664a38ae7805b4160db3c4e61c5b1de1175d3e -size 44397 diff --git a/packages/app-data/assets/global/quality_assurance/test_image.png b/packages/app-data/assets/global/quality_assurance/test_image.png deleted file mode 100644 index d50bf1aa2a..0000000000 --- a/packages/app-data/assets/global/quality_assurance/test_image.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ece57e70ea27dd6bf1b85077145013b7770b98696c6d0623184773e5790e272 -size 2032 diff --git a/packages/app-data/assets/global/quality_assurance/test_image_no_translations.png b/packages/app-data/assets/global/quality_assurance/test_image_no_translations.png deleted file mode 100644 index 14708d0ae7..0000000000 --- a/packages/app-data/assets/global/quality_assurance/test_image_no_translations.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:84c649c052bcfae951a4533eeffd084d4fcbf4ae9e8c3a23f1d6f1a36b300a6d -size 2902 diff --git a/packages/app-data/assets/index.ts b/packages/app-data/assets/index.ts deleted file mode 100644 index 6517fa0a61..0000000000 --- a/packages/app-data/assets/index.ts +++ /dev/null @@ -1,2657 +0,0 @@ -export const UNTRACKED_ASSETS = ["es_sp/quality_assurance/test_image_untracked.png"]; -export const ASSETS_CONTENTS_LIST = { - "i18n/flags/gb.svg": { - size_kb: 0.5, - md5Checksum: "d3ddd6025a06a78535b0d432d14905bf", - }, - "i18n/flags/tz.svg": { - size_kb: 0.5, - md5Checksum: "4cba6f3545595d585cf1c89394955c71", - }, - "i18n/flags/za.svg": { - size_kb: 0.8, - md5Checksum: "14e7052257d9914b613fc992186d2e90", - }, - "plh_audio/relax/relax_1.mp3": { - size_kb: 492.2, - md5Checksum: "0d23366a438bc1a5faf3d445e389a39a", - translations: { - tz_sw: { - size_kb: 596.3, - md5Checksum: "4917b991b1da9d8dfb62b4cbea086b9a", - }, - za_af: { - size_kb: 425.5, - md5Checksum: "f67195b5b8b16e13c27bea30e3daa3bf", - }, - za_xh: { - size_kb: 669.4, - md5Checksum: "238987ea4d6aec7ca7824027a0c6b649", - }, - za_zu: { - size_kb: 593.3, - md5Checksum: "ba938165b8c01f8c047d5647db90c650", - }, - }, - }, - "plh_audio/relax/relax_10.mp3": { - size_kb: 749, - md5Checksum: "f763a01ba394cb5b8d7ecc03e421d8e0", - translations: { - tz_sw: { - size_kb: 849.4, - md5Checksum: "193cd2d42fab0d4ae887ff38cc2bb0a2", - }, - za_af: { - size_kb: 804.3, - md5Checksum: "cb18fd93fb545ea1d800f554d21e47fd", - }, - za_xh: { - size_kb: 693.8, - md5Checksum: "8a498af4dc9f5b031718c5c7926c08e5", - }, - za_zu: { - size_kb: 863.3, - md5Checksum: "0293c044353be4624877c231dac72f94", - }, - }, - }, - "plh_audio/relax/relax_11.mp3": { - size_kb: 806.5, - md5Checksum: "b68baf7ff115191d18e42c0c6ad575b2", - translations: { - tz_sw: { - size_kb: 613.2, - md5Checksum: "d717d9a3698d6bd50133b32042ada9e2", - }, - za_af: { - size_kb: 712.9, - md5Checksum: "d13d03fbf1cafa04bda723afc4dfaa7c", - }, - za_xh: { - size_kb: 1431.4, - md5Checksum: "037a9dab9a968a6f00fce104fd309852", - }, - za_zu: { - size_kb: 763.9, - md5Checksum: "c07d46d30b1fa3e6e4c83963abe94c6a", - }, - }, - }, - "plh_audio/relax/relax_12.mp3": { - size_kb: 999.6, - md5Checksum: "c752bb8fb7caeb3b13ed009c11e043c1", - translations: { - tz_sw: { - size_kb: 906.4, - md5Checksum: "f66b6cca6464032961e27798b622f1fe", - }, - za_af: { - size_kb: 1152.9, - md5Checksum: "38d7b22471d79595b0a00756e4cf5f9c", - }, - za_xh: { - size_kb: 723.8, - md5Checksum: "0bbfa57f85dc65e90a86358b00075d2d", - }, - za_zu: { - size_kb: 765.8, - md5Checksum: "d4919bfdcba87980a0eea35e314b48f3", - }, - }, - }, - "plh_audio/relax/relax_13.mp3": { - size_kb: 721.6, - md5Checksum: "93a3a74b2251968d06888ddab297e6ac", - translations: { - tz_sw: { - size_kb: 853.9, - md5Checksum: "93094bc353df67e1d0fb2325ecb173bd", - }, - za_af: { - size_kb: 728.4, - md5Checksum: "88aecc28aeb0f09d5986557c30f0d902", - }, - za_xh: { - size_kb: 759.4, - md5Checksum: "4ef06758895eb2c9aa948fae5962ac00", - }, - za_zu: { - size_kb: 714.4, - md5Checksum: "9e6746f63c6ba71adfe2945b0c827975", - }, - }, - }, - "plh_audio/relax/relax_14.mp3": { - size_kb: 493.1, - md5Checksum: "317c1409d3fd711862f044fde774fab4", - translations: { - tz_sw: { - size_kb: 375, - md5Checksum: "5d1bec8ce69159b55aa40e8f29565296", - }, - za_af: { - size_kb: 550, - md5Checksum: "8de339d77e769aa27c3dc44073ee95f0", - }, - za_xh: { - size_kb: 275.7, - md5Checksum: "56f1f49e2126ef417c42bf78c7d814ba", - }, - za_zu: { - size_kb: 525, - md5Checksum: "d0bf01d6b176f58bc6780ec4ea1b9e25", - }, - }, - }, - "plh_audio/relax/relax_15.mp3": { - size_kb: 516.7, - md5Checksum: "a954491b926d1690d8975207f27b5b3a", - translations: { - tz_sw: { - size_kb: 578.3, - md5Checksum: "c53c3327bc791a666dd2122d7e9b09b9", - }, - za_af: { - size_kb: 626, - md5Checksum: "226c3ceaa03d9531483ad2aeef04ea8d", - }, - za_xh: { - size_kb: 523.9, - md5Checksum: "6c8fe0ff21beab850431485b991475d2", - }, - za_zu: { - size_kb: 630.8, - md5Checksum: "4550d421e43aeb32ee83d16b94ba3c49", - }, - }, - }, - "plh_audio/relax/relax_16.mp3": { - size_kb: 564.5, - md5Checksum: "e05b7c0dec49d45225cf5311bd931233", - translations: { - tz_sw: { - size_kb: 613.2, - md5Checksum: "f6890d3d324b7675e20feb4ac5cc6410", - }, - za_af: { - size_kb: 483.1, - md5Checksum: "e2c9b173f2299a19300dda3297f0f49d", - }, - za_xh: { - size_kb: 630, - md5Checksum: "8cc1c5c6a411dd7ec4655279406694ab", - }, - za_zu: { - size_kb: 738.8, - md5Checksum: "2f50a6da8e35d993d24d2e381b0f89f7", - }, - }, - }, - "plh_audio/relax/relax_17.mp3": { - size_kb: 544.1, - md5Checksum: "7fa394d9131dd7a36ab842223644f82e", - translations: { - tz_sw: { - size_kb: 563.3, - md5Checksum: "c6e2994ac5324b110c6006d4236eacf6", - }, - za_af: { - size_kb: 586.4, - md5Checksum: "c3d9a77031fdea831f4d43069abf71c3", - }, - za_xh: { - size_kb: 485.7, - md5Checksum: "4584d92488fcba7248d1edfc5f36bc71", - }, - za_zu: { - size_kb: 643.2, - md5Checksum: "f2b6a8be8bbf7eaefef682e6597b09e4", - }, - }, - }, - "plh_audio/relax/relax_18.mp3": { - size_kb: 1228.6, - md5Checksum: "f1ced15e623ce6d21ea250317e602360", - translations: { - tz_sw: { - size_kb: 1241.3, - md5Checksum: "d703ab3f87d24d51345c1f4a82197c08", - }, - za_af: { - size_kb: 1384.3, - md5Checksum: "1d14318decf022374f050d4087e0b4b1", - }, - za_xh: { - size_kb: 1190.7, - md5Checksum: "5a7d6a8462b7aa1bfba333863b25b79f", - }, - za_zu: { - size_kb: 1497, - md5Checksum: "9ea13916a414222cc3c722093ba91ecb", - }, - }, - }, - "plh_audio/relax/relax_19.mp3": { - size_kb: 1746.5, - md5Checksum: "91b71aa328f31c46b56bf7949448ae55", - translations: { - tz_sw: { - size_kb: 1708.9, - md5Checksum: "042bb2801502595e7098cce2781ed0c1", - }, - za_af: { - size_kb: 2019.8, - md5Checksum: "6788460a6f2759c8832f4ea4b144d16b", - }, - za_xh: { - size_kb: 1665, - md5Checksum: "5bb720f14d469a2f3f9e80f3a2ac5c84", - }, - za_zu: { - size_kb: 2323.2, - md5Checksum: "969648b4fd406488a1fcefd445cdf8ff", - }, - }, - }, - "plh_audio/relax/relax_2.mp3": { - size_kb: 712.7, - md5Checksum: "b3b6bf1fdc26305e89da438bb1a3657c", - translations: { - tz_sw: { - size_kb: 829.5, - md5Checksum: "96ff16bcf5744f87e1a355093750d4a0", - }, - za_af: { - size_kb: 688.8, - md5Checksum: "0afb1376968ba8140816e7ddc69b9850", - }, - za_xh: { - size_kb: 896.3, - md5Checksum: "511b648f44b0d591d6cdae5d41ade36f", - }, - za_zu: { - size_kb: 949.5, - md5Checksum: "1b0abce098d63696cdef5925a628a8bf", - }, - }, - }, - "plh_audio/relax/relax_20.mp3": { - size_kb: 1901.6, - md5Checksum: "9131a3fecff580470e11d6735593260e", - translations: { - tz_sw: { - size_kb: 1527, - md5Checksum: "6aab73a8d8fe40e01fcc3223f0899f0e", - }, - za_af: { - size_kb: 1847.3, - md5Checksum: "f56c7a4ce615ca6d13d8cec8f8961315", - }, - za_xh: { - size_kb: 2392.5, - md5Checksum: "ddd18b67f338742c74e607992f4de6a9", - }, - za_zu: { - size_kb: 2212.5, - md5Checksum: "fa697400aacab25ca617003bfeb6591d", - }, - }, - }, - "plh_audio/relax/relax_21.mp3": { - size_kb: 759.6, - md5Checksum: "9c12b2510304df021b5194d2b02a9899", - translations: { - tz_sw: { - size_kb: 537, - md5Checksum: "880420297e583d3efb575a1cd8d6b927", - }, - za_af: { - size_kb: 611, - md5Checksum: "753bd581f48c1b6af40f5fa13e03922b", - }, - za_xh: { - size_kb: 457.3, - md5Checksum: "03c79e3e647be3511314778264f82a32", - }, - za_zu: { - size_kb: 665.7, - md5Checksum: "c0206105f0a4d7c142238a75d3e3ef3f", - }, - }, - }, - "plh_audio/relax/relax_22.mp3": { - size_kb: 429.8, - md5Checksum: "aa62a24a6c519beb75c88e613acd2c71", - translations: { - tz_sw: { - size_kb: 341.3, - md5Checksum: "f1d49bcf33ef8fe6f181f09ab3e44d35", - }, - za_af: { - size_kb: 377.8, - md5Checksum: "e4fad5a480de91bbf860007ebf3fa24d", - }, - za_xh: { - size_kb: 375.9, - md5Checksum: "953d5e6c04ba907a394bba4c955a4cb0", - }, - za_zu: { - size_kb: 369.4, - md5Checksum: "f798c84387f5c19e9ae7e2f3bec7e403", - }, - }, - }, - "plh_audio/relax/relax_23.mp3": { - size_kb: 500.4, - md5Checksum: "9550d5bac87fd1a97544dd886660d25e", - translations: { - tz_sw: { - size_kb: 397.5, - md5Checksum: "961bf53b510dfa1df727c5e684e6b3e9", - }, - za_af: { - size_kb: 360.6, - md5Checksum: "0236b01f2f4b43d1f31bdcdfbf9a697b", - }, - za_xh: { - size_kb: 528.8, - md5Checksum: "9c535b968f1cd7343be2f18d823eba3f", - }, - za_zu: { - size_kb: 573.8, - md5Checksum: "955de2717a7dfdc9a5a8600ca4246996", - }, - }, - }, - "plh_audio/relax/relax_24.mp3": { - size_kb: 453.9, - md5Checksum: "c3db4db42e097fcc942e15f6f067737a", - translations: { - tz_sw: { - size_kb: 351.4, - md5Checksum: "974a4c38faeb1390184d22890c9656d9", - }, - za_af: { - size_kb: 404.3, - md5Checksum: "0403dd9016c3147205a1f62a0bccfa2a", - }, - za_xh: { - size_kb: 401.3, - md5Checksum: "49465c745ea126d6273921f0c9000ed3", - }, - za_zu: { - size_kb: 486.4, - md5Checksum: "20f9eca6cd6d90aa57a1d7c7ff0ce1b4", - }, - }, - }, - "plh_audio/relax/relax_3.mp3": { - size_kb: 453.9, - md5Checksum: "54a8f411e01f5ef440d4275e3c111c3c", - translations: { - tz_sw: { - size_kb: 301.9, - md5Checksum: "973eb0d71cdfa5028f27f7d8865abb56", - }, - za_af: { - size_kb: 264.7, - md5Checksum: "66efb06717ae2e4fedc5b8cd0a3663f6", - }, - za_xh: { - size_kb: 286.3, - md5Checksum: "e82c07f03aeb155aadf0f3ebdd34233b", - }, - za_zu: { - size_kb: 401.3, - md5Checksum: "9cb874311438357d204e7141641b8e4f", - }, - }, - }, - "plh_audio/relax/relax_4.mp3": { - size_kb: 998, - md5Checksum: "f14b76a30bb3267a07968e7945bea98c", - translations: { - tz_sw: { - size_kb: 676.9, - md5Checksum: "6b23dc2a2b3390f0f12ab6f758eb6123", - }, - za_af: { - size_kb: 862.4, - md5Checksum: "3cbc4995eb3cbcee1df0aa870588519c", - }, - za_xh: { - size_kb: 1254.4, - md5Checksum: "8a66c4ca0b3ca3726a514d4ae4d4bc8f", - }, - za_zu: { - size_kb: 1249.5, - md5Checksum: "558adc62b004acf90aaf20b79443868a", - }, - }, - }, - "plh_audio/relax/relax_5.mp3": { - size_kb: 359.2, - md5Checksum: "5cc39211a871f85a80d2d914ce2f9008", - translations: { - tz_sw: { - size_kb: 358.9, - md5Checksum: "141b2e52096a5e1d9190781e05b929df", - }, - za_af: { - size_kb: 590, - md5Checksum: "c7c181194e648ddb9b2c4b7dc28465d3", - }, - za_xh: { - size_kb: 225, - md5Checksum: "b0d0afe22c7500ab8e38eb7cedba4a7a", - }, - za_zu: { - size_kb: 376.9, - md5Checksum: "549d78cdfec6b9f36ce60f17fd64b56d", - }, - }, - }, - "plh_audio/relax/relax_6.mp3": { - size_kb: 526.5, - md5Checksum: "cda7524dc0cf04d7567d8aba5cecb1ed", - translations: { - tz_sw: { - size_kb: 439.5, - md5Checksum: "0a8a22e454c127feddf6931edeb9b568", - }, - za_af: { - size_kb: 499, - md5Checksum: "07ef8abe6d925b00d18e9ccb6a92fe15", - }, - za_xh: { - size_kb: 482.8, - md5Checksum: "56f3281a068fedb641d346de12d37a26", - }, - za_zu: { - size_kb: 545.7, - md5Checksum: "2cc0ae7a65abb67f56b25edbda58da81", - }, - }, - }, - "plh_audio/relax/relax_7.mp3": { - size_kb: 504.9, - md5Checksum: "51ad97b7ea1e2344074ef130c4362682", - translations: { - tz_sw: { - size_kb: 424.5, - md5Checksum: "034ebacb13487a1a52936dbce0b500ed", - }, - za_af: { - size_kb: 412.1, - md5Checksum: "64f40e3f980f0e827c0c37aea29f9051", - }, - za_xh: { - size_kb: 371.4, - md5Checksum: "25521cbfeb54fdfd6d839bf928a0618a", - }, - za_zu: { - size_kb: 678.8, - md5Checksum: "59813428170576da03553236a3aa643f", - }, - }, - }, - "plh_audio/relax/relax_8.mp3": { - size_kb: 549, - md5Checksum: "43e967ed477d23a2ac60b2786997e752", - translations: { - tz_sw: { - size_kb: 499.5, - md5Checksum: "f4099a1de4e09f42a2cb1d802b8fadf5", - }, - za_af: { - size_kb: 574.9, - md5Checksum: "7d6358c593e39b4dfda57c9c47e19d22", - }, - za_xh: { - size_kb: 492.9, - md5Checksum: "13c65abf540fc49e2736c662954b3ddc", - }, - za_zu: { - size_kb: 579.4, - md5Checksum: "22d2efe916509ef36ac9184426145037", - }, - }, - }, - "plh_audio/relax/relax_9.mp3": { - size_kb: 1057.1, - md5Checksum: "4c28141c3416cf2df70d2a5464c3d34a", - translations: { - tz_sw: { - size_kb: 1137, - md5Checksum: "5e32d64ac15fcb6a21279576631facd3", - }, - za_af: { - size_kb: 1040.2, - md5Checksum: "956e35d8c688220448011c98f03eab8f", - }, - za_xh: { - size_kb: 960.8, - md5Checksum: "a4243b4b5c216c699fd2c440a758a021", - }, - za_zu: { - size_kb: 1055.7, - md5Checksum: "b8f116d0bb9bab6b21244f53ed648994", - }, - }, - }, - "plh_audio/take_a_pause_64k.mp3": { - size_kb: 1354.9, - md5Checksum: "03a593d94debd98384bff908450aa0d3", - }, - "plh_audio/testimonies/teen/w_1on1.mp3": { - size_kb: 314.5, - md5Checksum: "3fae469b0b11e65d64eb4d4896ec46ba", - }, - "plh_audio/testimonies/teen/w_rules.mp3": { - size_kb: 903.4, - md5Checksum: "7eca3329c62136c1fe76b776ba2e7dfe", - }, - "plh_audio/timer/bell_1.mp3": { - size_kb: 121.6, - md5Checksum: "19700b739837b47ca934707f1c16e7b7", - }, - "plh_audio/timer/ping_1.wav": { - size_kb: 196.4, - md5Checksum: "000bdadc5c44489368e4320d987892a7", - }, - "plh_audio/timer/ping_2.wav": { - size_kb: 829.6, - md5Checksum: "a9cad2b710e4c0efc104be4eed375d80", - }, - "plh_audio/topic_intros/workshops_reflection.mp3": { - size_kb: 1019.2, - md5Checksum: "4ca8a8f7fda21ecdbbfcbd7f38e69433", - translations: { - tz_sw: { - size_kb: 1245, - md5Checksum: "7bfa7ab8fd751da76319b879127beec5", - }, - za_af: { - size_kb: 1158.2, - md5Checksum: "49d34276a5a04b73a330d5b972b0dee1", - }, - za_xh: { - size_kb: 1536.4, - md5Checksum: "ee9d2fb65fe9b7fbdf6730cc9919a9c1", - }, - za_zu: { - size_kb: 1396.9, - md5Checksum: "8165057b52ea7a49fb9bc2df61becf3b", - }, - }, - }, - "plh_audio/topic_intros/w_1on1_intro.mp3": { - size_kb: 377.6, - md5Checksum: "e9138d16ef537979a4eeb81656e0bdaf", - translations: { - tz_sw: { - size_kb: 343.9, - md5Checksum: "e4c71e1a9779b795b555a1dfd4d1cfaf", - }, - za_af: { - size_kb: 406, - md5Checksum: "811cfc764585c5ab79c1340886891419", - }, - za_xh: { - size_kb: 408.8, - md5Checksum: "a95e480e954a956b8e42747103139d0c", - }, - za_zu: { - size_kb: 342, - md5Checksum: "13105f013ebbd029c23798196e7253b0", - }, - }, - }, - "plh_audio/topic_intros/w_celebrate_intro.mp3": { - size_kb: 1292.7, - md5Checksum: "472d6351714078d4c1977a7cb5880fdb", - translations: { - tz_sw: { - size_kb: 380.7, - md5Checksum: "fddd25202ea375063f7034ff532bad4e", - }, - za_af: { - size_kb: 399.8, - md5Checksum: "923ceea57639cb2b2e696246ab015a11", - }, - za_xh: { - size_kb: 424.5, - md5Checksum: "e2788bacf7f4de2d87c68528e2c95c97", - }, - za_zu: { - size_kb: 334.5, - md5Checksum: "f90737078d0f62afd960eba33d8536ad", - }, - }, - }, - "plh_audio/topic_intros/w_consequence_intro.mp3": { - size_kb: 627.8, - md5Checksum: "3ac9ad359f08f0da75f614e321c10aae", - translations: { - tz_sw: { - size_kb: 501.4, - md5Checksum: "c3d140c0f60861809665bfc0784fd081", - }, - za_af: { - size_kb: 615.3, - md5Checksum: "095b73ace2faa99ccc1dc253b61b4c58", - }, - za_xh: { - size_kb: 621.4, - md5Checksum: "f6060d16dd149bc6e2ccfe8a362e8929", - }, - za_zu: { - size_kb: 669.4, - md5Checksum: "15d21260df1f7f14d05e8d51000d829c", - }, - }, - }, - "plh_audio/topic_intros/w_crisis_intro.mp3": { - size_kb: 768.6, - md5Checksum: "d1e8e52bd33407987894934de0bbf909", - translations: { - tz_sw: { - size_kb: 748.9, - md5Checksum: "9b751a9456997ff55c1e97a2b313f328", - }, - za_af: { - size_kb: 748.5, - md5Checksum: "823d431ece7fcd6882e9c07bdb5267d0", - }, - za_xh: { - size_kb: 727.5, - md5Checksum: "1c8c36d03b4f03b4a3e7d31f8fafc6ec", - }, - za_zu: { - size_kb: 875.7, - md5Checksum: "4e76400aa7e4f313b502af5d0d3c351a", - }, - }, - }, - "plh_audio/topic_intros/w_instruct_intro.mp3": { - size_kb: 447.3, - md5Checksum: "6f8021f84c5a941cc5a6d36faba92f29", - translations: { - tz_sw: { - size_kb: 371.3, - md5Checksum: "8ae1a4ebaa2886edd1a8790d814c76eb", - }, - za_af: { - size_kb: 434.5, - md5Checksum: "ea9b68aeb6f2fc03548589783f53473a", - }, - za_xh: { - size_kb: 418.2, - md5Checksum: "97fd6c8e2c444c6f4b2e18dcc7511b2e", - }, - za_zu: { - size_kb: 559.5, - md5Checksum: "99f93b267c285008e4c3b01e46b3b7ca", - }, - }, - }, - "plh_audio/topic_intros/w_money_intro.mp3": { - size_kb: 582, - md5Checksum: "adb875428eebfb8874e44b4526c2e62b", - translations: { - tz_sw: { - size_kb: 516.4, - md5Checksum: "7e86548bd22ab5ce97955f596c6cdd37", - }, - za_af: { - size_kb: 519, - md5Checksum: "275a64674025711675c8a8123952b7cc", - }, - za_xh: { - size_kb: 478.9, - md5Checksum: "15cfb620209560f0fdfbeaa24cbca9de", - }, - za_zu: { - size_kb: 490.2, - md5Checksum: "caf3547156d28c0959453700aa3293f4", - }, - }, - }, - "plh_audio/topic_intros/w_praise_intro.mp3": { - size_kb: 355.9, - md5Checksum: "584fe9154663243393a3512aae2c2cfc", - translations: { - tz_sw: { - size_kb: 341.3, - md5Checksum: "130555d0bc02cc219005190ccabba218", - }, - za_af: { - size_kb: 386, - md5Checksum: "871c092067d1ff6c8f46880f8947eb5e", - }, - za_xh: { - size_kb: 328.2, - md5Checksum: "93debe5584a41f602a65e99f8a6e773d", - }, - za_zu: { - size_kb: 351.4, - md5Checksum: "44a5f15993c60d5328f6dedd108751ac", - }, - }, - }, - "plh_audio/topic_intros/w_rules_intro.mp3": { - size_kb: 510.2, - md5Checksum: "ab3df47339f5aaddab8293b014e788b2", - translations: { - tz_sw: { - size_kb: 390.8, - md5Checksum: "a93189816550e5ef31896105daba8f98", - }, - za_af: { - size_kb: 441.1, - md5Checksum: "6788de1f7c6de9c59b7f1048db2b3455", - }, - za_xh: { - size_kb: 411.4, - md5Checksum: "8a4c463da31edfaf6c6b14155e65b6c3", - }, - za_zu: { - size_kb: 523.2, - md5Checksum: "a2a9309f19ca1bf343550b50cb3b8fc8", - }, - }, - }, - "plh_audio/topic_intros/w_safe_intro.mp3": { - size_kb: 955.5, - md5Checksum: "bc984f7cc77a1e8945eaa7036dc0b6ab", - translations: { - tz_sw: { - size_kb: 665.7, - md5Checksum: "979e2ac924073029250d80be46f79f7e", - }, - za_af: { - size_kb: 812.5, - md5Checksum: "61fa78463d22adadfd3d589a6949f49a", - }, - za_xh: { - size_kb: 855.8, - md5Checksum: "8acfd0a97e2de9827213d0de8997a693", - }, - za_zu: { - size_kb: 871.9, - md5Checksum: "4558be041c9272bcc33df148f306b359", - }, - }, - }, - "plh_audio/topic_intros/w_self_care_intro.mp3": { - size_kb: 716.7, - md5Checksum: "9ae6c9fd0275d6dda0b5f4e0bdddeba7", - translations: { - tz_sw: { - size_kb: 555.8, - md5Checksum: "4b7d74b30f8a0c6f2599ea21daeae3cb", - }, - za_af: { - size_kb: 620.8, - md5Checksum: "f04da451ee1d6509b72d3f777ba0785e", - }, - za_xh: { - size_kb: 697.5, - md5Checksum: "d3866810032baa2d991034fd78519bc3", - }, - za_zu: { - size_kb: 765.8, - md5Checksum: "939e63092063e2229f65a7cbc533a602", - }, - }, - }, - "plh_audio/topic_intros/w_solve_intro.mp3": { - size_kb: 931, - md5Checksum: "2fe96fc09d75da24b11a5521159af31a", - translations: { - tz_sw: { - size_kb: 782.7, - md5Checksum: "ec78f5b1c067c9f4087db4fb05ee5f2e", - }, - za_af: { - size_kb: 941.5, - md5Checksum: "0d79fdb3c445a883c4a3ce1beec1c9a5", - }, - za_xh: { - size_kb: 832.5, - md5Checksum: "9ff632390f3fb6947f7e2637875742f1", - }, - za_zu: { - size_kb: 736.9, - md5Checksum: "2a7bb1a059af2bc4a86c723db83cdb0a", - }, - }, - }, - "plh_audio/topic_intros/w_stress_intro.mp3": { - size_kb: 659.6, - md5Checksum: "aea123ef6dc786c86e38325e1ad04e17", - translations: { - tz_sw: { - size_kb: 609.4, - md5Checksum: "feec35b3113d6b9e8e04f9bd9d8ee8b4", - }, - za_af: { - size_kb: 598.6, - md5Checksum: "2b0927863333c42ed1d4164c55bd53ca", - }, - za_xh: { - size_kb: 621.4, - md5Checksum: "1a0ef59590f509464cdf8cccf2ccb76d", - }, - za_zu: { - size_kb: 732, - md5Checksum: "afe1262013bbfb96ab05f32c5de77c01", - }, - }, - }, - "plh_images/characters/elder/happy.svg": { - size_kb: 3, - md5Checksum: "068400da9fe7a6be617cb4b0dfa4178b", - }, - "plh_images/characters/elder/large.svg": { - size_kb: 3.1, - md5Checksum: "aeda19589a78302bfd121a9bca1269ac", - }, - "plh_images/characters/elder/neutral.svg": { - size_kb: 3, - md5Checksum: "a57f8d7eb0a59aa5f27d56a273cab06b", - }, - "plh_images/characters/elder/sad.svg": { - size_kb: 3.1, - md5Checksum: "689c994745e5d1db7872b6c06490716f", - }, - "plh_images/characters/elder/small.svg": { - size_kb: 3.1, - md5Checksum: "a5053e72e798597a40cd878d8ad2c84a", - }, - "plh_images/characters/friend/happy.svg": { - size_kb: 2.8, - md5Checksum: "544204ea7a2bc99269e36b89a3910bd5", - }, - "plh_images/characters/friend/neutral.svg": { - size_kb: 2.7, - md5Checksum: "aadac5727b464abfcbe12843d7cabf33", - }, - "plh_images/characters/friend/sad.svg": { - size_kb: 2.7, - md5Checksum: "d6400cd9da2d938a90adbd5e874d0db7", - }, - "plh_images/characters/group/talk_together.png": { - size_kb: 161.6, - md5Checksum: "72f00ac85950a54bd22aad8619759120", - }, - "plh_images/characters/guide1/book.svg": { - size_kb: 4, - md5Checksum: "21d49ddc4f574533b9ce8b93e2276ad4", - }, - "plh_images/characters/guide1/busy.svg": { - size_kb: 16.8, - md5Checksum: "79f06cfe237de1182bdf6e13d4f6e3a5", - }, - "plh_images/characters/guide1/frustrated.svg": { - size_kb: 13, - md5Checksum: "759869f2dbde348c2591fb524359660a", - }, - "plh_images/characters/guide1/happy.svg": { - size_kb: 2.9, - md5Checksum: "3be5c43a95c57a838086cb33f8147a8d", - }, - "plh_images/characters/guide1/high_five.svg": { - size_kb: 5.9, - md5Checksum: "a634fdcc98df7edfecaf8098975d4c31", - }, - "plh_images/characters/guide1/hug.svg": { - size_kb: 620.6, - md5Checksum: "90988999f9be2c69ff20ef35457a1af0", - }, - "plh_images/characters/guide1/key.svg": { - size_kb: 3.7, - md5Checksum: "b53791b39e1b078fd74d6f6e69839f14", - }, - "plh_images/characters/guide1/neutral.svg": { - size_kb: 2.9, - md5Checksum: "0106c4aefd8bb85c8ea6fb138bdc1f0e", - }, - "plh_images/characters/guide1/play_ball.svg": { - size_kb: 6.9, - md5Checksum: "b7f01c4e08369a817eb97d17b112956b", - }, - "plh_images/characters/guide1/right_on_time.svg": { - size_kb: 16.8, - md5Checksum: "c3f8798900b3ef15dcb63f404f50ee38", - }, - "plh_images/characters/guide1/sad.svg": { - size_kb: 2.9, - md5Checksum: "a7b9bc93e95869314f758a8f7232bca9", - }, - "plh_images/characters/guide1/seated.svg": { - size_kb: 3.3, - md5Checksum: "e2d1364ea336bb7362794b36dd4b656e", - }, - "plh_images/characters/guide1/shout.svg": { - size_kb: 5.8, - md5Checksum: "93040ded0e93c8b431387b40e67e2c8c", - }, - "plh_images/characters/guide1/thumb.svg": { - size_kb: 3.2, - md5Checksum: "7d549bbb9a8d2b1fa8dee22a428a8947", - }, - "plh_images/characters/guide1/well_done.svg": { - size_kb: 8.3, - md5Checksum: "f1901fb6d85a3f2412d8ebb3e672ef56", - }, - "plh_images/characters/guide1/worried.svg": { - size_kb: 3, - md5Checksum: "ac6a6a71fffd54a8fb4e5032f970c1c6", - }, - "plh_images/characters/guide2/book.svg": { - size_kb: 3.9, - md5Checksum: "20b38da55e7eaa7d4d35c76c765b4eb1", - }, - "plh_images/characters/guide2/busy.svg": { - size_kb: 22.3, - md5Checksum: "438f1f529bf7e0ebef67553ad7136482", - }, - "plh_images/characters/guide2/frustrated.svg": { - size_kb: 12.9, - md5Checksum: "7c438c23611e747ad5086d08d54a4c79", - }, - "plh_images/characters/guide2/happy.svg": { - size_kb: 3.1, - md5Checksum: "373c9b788d76f28b4170375874eec539", - }, - "plh_images/characters/guide2/hug.svg": { - size_kb: 626.8, - md5Checksum: "1228f43e804e8950cf039eb86b721077", - }, - "plh_images/characters/guide2/key.svg": { - size_kb: 3.8, - md5Checksum: "a4bd1ced5926d79ac9c118e8acb8512b", - }, - "plh_images/characters/guide2/neutral.svg": { - size_kb: 3.2, - md5Checksum: "a90a367acf23f0bbd34cfc4e8f638051", - }, - "plh_images/characters/guide2/play_ball.svg": { - size_kb: 6.2, - md5Checksum: "90d5b4eaf3b276d61379d27fcf1d69f1", - }, - "plh_images/characters/guide2/right_on_time.svg": { - size_kb: 16.7, - md5Checksum: "1efda9c4059c3bb094409ec53c884371", - }, - "plh_images/characters/guide2/sad.svg": { - size_kb: 3.1, - md5Checksum: "f4789124881e5901e5b4f5c78067263d", - }, - "plh_images/characters/guide2/seated.svg": { - size_kb: 2.9, - md5Checksum: "688c7d86fe4b42406cba73f96c101aba", - }, - "plh_images/characters/guide2/shout.svg": { - size_kb: 5.7, - md5Checksum: "98225618aca2f75c40844ed6ce0b037f", - }, - "plh_images/characters/guide2/thumb.svg": { - size_kb: 3.4, - md5Checksum: "c8df99e69883fdb22807f1883c38b23d", - }, - "plh_images/characters/guide2/well_done.svg": { - size_kb: 8.3, - md5Checksum: "ee5f8e8897623e45dc231338d5fb6eb5", - }, - "plh_images/characters/guide2/worried.svg": { - size_kb: 3.2, - md5Checksum: "78c0540d59b7ff8dca56d55ae9cf777d", - }, - "plh_images/characters/neighbour/happy.svg": { - size_kb: 3.1, - md5Checksum: "5abdd6b09cc58da5b1b2d732a08b9650", - }, - "plh_images/characters/neighbour/neutral.svg": { - size_kb: 3.1, - md5Checksum: "2c3360153880d1737d7c13b8728975d2", - }, - "plh_images/characters/neighbour/sad.svg": { - size_kb: 3.1, - md5Checksum: "f546109cb2c902dd5b905953e4f3ae4a", - }, - "plh_images/first_app_launch/frustrated.svg": { - size_kb: 11.9, - md5Checksum: "9a2e9a5b9ccd2827abc842a0043dadb7", - }, - "plh_images/first_app_launch/frustrated_shadow.svg": { - size_kb: 12, - md5Checksum: "e1a851ee35268d34d4948a13649b70d0", - }, - "plh_images/first_app_launch/loving_parent.svg": { - size_kb: 864.1, - md5Checksum: "4a88fa5e3141147eaac754f65d17342d", - }, - "plh_images/first_app_launch/loving_parent_shadow.svg": { - size_kb: 864.2, - md5Checksum: "6f967d5476582da02692d65983f46d32", - }, - "plh_images/first_app_launch/parent_group.svg": { - size_kb: 8.2, - md5Checksum: "ced4c669fce01f8ba982a61be7b12ae0", - }, - "plh_images/first_app_launch/parent_group_shadow.svg": { - size_kb: 8.3, - md5Checksum: "0f0c41812fbb43e02a7e4cd6d8ae8fa6", - }, - "plh_images/first_app_launch/shield.svg": { - size_kb: 2.8, - md5Checksum: "7bef996b92b5d2cadd4e1ca2bac7c2d1", - }, - "plh_images/habits/habit_breathe.svg": { - size_kb: 2.3, - md5Checksum: "284285870cd683c71190ab4004cf4d70", - }, - "plh_images/habits/habit_consequence.svg": { - size_kb: 5.3, - md5Checksum: "f262bbeb5717f1e7b944c52b900c082d", - }, - "plh_images/habits/habit_instruct_positively.svg": { - size_kb: 6.6, - md5Checksum: "cfdd6ddb459a6e5c8c8d8b1f1b23db98", - }, - "plh_images/habits/habit_money.svg": { - size_kb: 6.3, - md5Checksum: "3a0ce0a8eccb4ebb780b0bbd1de2d518", - }, - "plh_images/habits/habit_praise_teen.svg": { - size_kb: 8.1, - md5Checksum: "05172e7b645fa68c76f7dc3dcc61fd16", - }, - "plh_images/habits/habit_praise_yourself.svg": { - size_kb: 3.2, - md5Checksum: "19ecd9abda2b29944c950c4b0a7620ec", - }, - "plh_images/habits/habit_relax.svg": { - size_kb: 3.4, - md5Checksum: "a5471b72e965e5cc243da1dfa92eb32e", - }, - "plh_images/habits/habit_safe.svg": { - size_kb: 24.3, - md5Checksum: "e5e16e9747ef24e401a5d8d5ee4fe419", - }, - "plh_images/habits/habit_spend_time.svg": { - size_kb: 7.1, - md5Checksum: "e020b7920c72ab109569dea86e863147", - }, - "plh_images/habits/habit_treat_yourself.svg": { - size_kb: 3.9, - md5Checksum: "07d5cec72df949bb4b0f9d92431e3908", - }, - "plh_images/home_screen/parent_centre.svg": { - size_kb: 5.7, - md5Checksum: "aeb66979a24176e0ff745925b58e84c9", - }, - "plh_images/home_screen/parent_centre_shadow.svg": { - size_kb: 5.8, - md5Checksum: "6aa4a533ae853d89e1c389c4117a5d7b", - }, - "plh_images/home_screen/parent_points.svg": { - size_kb: 6.1, - md5Checksum: "dc0605c19ffc6154a64dcfb8f7ea4004", - }, - "plh_images/home_screen/parent_points_shadow.svg": { - size_kb: 6.2, - md5Checksum: "480d54442b6a6a3c6ce9f44693948f45", - }, - "plh_images/home_screen/weekly_workshops.svg": { - size_kb: 6.2, - md5Checksum: "1ba6d70f2e05716a93aa3687d7c8e9de", - }, - "plh_images/home_screen/weekly_workshops_shadow.svg": { - size_kb: 6.3, - md5Checksum: "6fcbe5c240b9add58abfb91cad479a05", - }, - "plh_images/icons/ask_question.svg": { - size_kb: 1.4, - md5Checksum: "a442e88503da6639f07b956f55f935a8", - }, - "plh_images/icons/ask_question_white.svg": { - size_kb: 1.4, - md5Checksum: "d52f43b75aacee5da8c3e33a76ecf3b7", - }, - "plh_images/icons/bell.svg": { - size_kb: 1.2, - md5Checksum: "89db38d119eff950fda39efccdcd2f6d", - }, - "plh_images/icons/bell_circle.svg": { - size_kb: 0.8, - md5Checksum: "67b643250151cea4a8441a99357f39c3", - }, - "plh_images/icons/bell_white.svg": { - size_kb: 1.2, - md5Checksum: "bd1a62fc8c4d3cbd2b3ff5f303d99903", - }, - "plh_images/icons/cogwheel.svg": { - size_kb: 1.7, - md5Checksum: "c8b581942faf5621c497523bf1a73306", - }, - "plh_images/icons/cogwheel_white.svg": { - size_kb: 1.7, - md5Checksum: "12bb1081cda0bfcab4b289be4f4fc912", - }, - "plh_images/icons/cross.svg": { - size_kb: 0.4, - md5Checksum: "97f29794530016e7a240ad5e49f9ccab", - }, - "plh_images/icons/cross_circle.svg": { - size_kb: 2.3, - md5Checksum: "fc6c7bd4f566baa552ed833fc6837f03", - }, - "plh_images/icons/cross_outline.svg": { - size_kb: 0.8, - md5Checksum: "92f1b36e28b8427f732cb35a7efa1904", - }, - "plh_images/icons/documents.svg": { - size_kb: 1.2, - md5Checksum: "80d27ca4ba944604c1b3ad72f15c0638", - }, - "plh_images/icons/documents_white.svg": { - size_kb: 1.2, - md5Checksum: "a17a32c8e10c3f6cef859d878b16e4d5", - }, - "plh_images/icons/globe.svg": { - size_kb: 1.4, - md5Checksum: "9b0f2fdb82fa507e805db5cbe818c929", - }, - "plh_images/icons/globe_circle.svg": { - size_kb: 1.4, - md5Checksum: "09762126162da34a86ad978f17ef1102", - }, - "plh_images/icons/hands_support_heart.svg": { - size_kb: 2.9, - md5Checksum: "d873a63af05f63526a5177a0d5a757f2", - }, - "plh_images/icons/hands_support_heart_white.svg": { - size_kb: 2.9, - md5Checksum: "770c1d7def0f0343a80515ab61220681", - }, - "plh_images/icons/heart.svg": { - size_kb: 0.6, - md5Checksum: "3837dbad3c5c5b8158a5370064283c20", - }, - "plh_images/icons/heart_white.svg": { - size_kb: 0.6, - md5Checksum: "870d6d4afc2a52aaa37e01460f5efc45", - }, - "plh_images/icons/house_circle.svg": { - size_kb: 1.4, - md5Checksum: "5ce770fe6db43c80a07cb0ca583e0300", - }, - "plh_images/icons/house_heart.svg": { - size_kb: 1.1, - md5Checksum: "01909d0663cbf9c5e3d0cafd0923b671", - }, - "plh_images/icons/house_heart_white.svg": { - size_kb: 1.1, - md5Checksum: "1da725ad4fbf5359351ad80e0d9c8046", - }, - "plh_images/icons/hug_heart.svg": { - size_kb: 2.1, - md5Checksum: "8a9e54b8ad61b1137227eddd2bf63b31", - }, - "plh_images/icons/hug_heart_white.svg": { - size_kb: 2.1, - md5Checksum: "123870a84e30fc7fc1e328e6daf09cf4", - }, - "plh_images/icons/info.svg": { - size_kb: 0.7, - md5Checksum: "7b986b40add926369cceb28cec562094", - }, - "plh_images/icons/info_phone.svg": { - size_kb: 1, - md5Checksum: "c27473153ef232f797f0cecd231134a9", - }, - "plh_images/icons/info_phone_white.svg": { - size_kb: 1, - md5Checksum: "5285def8bda5af7280b384c35196d7ca", - }, - "plh_images/icons/info_white.svg": { - size_kb: 0.7, - md5Checksum: "2bf484237672df94a3bd10dcf208386a", - }, - "plh_images/icons/in_progress.svg": { - size_kb: 1.1, - md5Checksum: "6105962bc0edd981675d874dc8a51035", - }, - "plh_images/icons/in_progress_white.svg": { - size_kb: 1.1, - md5Checksum: "f7bdd991a067c30d0cb140d5b77745bb", - }, - "plh_images/icons/letter.svg": { - size_kb: 0.7, - md5Checksum: "640dabe883bbd3df3a8575efb78733e4", - }, - "plh_images/icons/letter_circle.svg": { - size_kb: 0.6, - md5Checksum: "4b83ed8d1d63fa68c12146030abb589e", - }, - "plh_images/icons/letter_white.svg": { - size_kb: 0.7, - md5Checksum: "470ec0338d8e89efc6a6beadc80bfc8a", - }, - "plh_images/icons/light_bulb.svg": { - size_kb: 2.9, - md5Checksum: "1bb4aa716b44a53114e2d03f0aad1f3a", - }, - "plh_images/icons/light_bulb_circle.svg": { - size_kb: 2.5, - md5Checksum: "7c195276a4265621f4d2c4c09a1d5730", - }, - "plh_images/icons/light_bulb_heart.svg": { - size_kb: 3.2, - md5Checksum: "60b8b2d692c7bbed343471e29023236b", - }, - "plh_images/icons/light_bulb_heart_white.svg": { - size_kb: 3.2, - md5Checksum: "7c4cb09a37a768996ce2858ec6346640", - }, - "plh_images/icons/light_bulb_white.svg": { - size_kb: 2.9, - md5Checksum: "1da5604970a2bee373b340b8a4fe944d", - }, - "plh_images/icons/lock.svg": { - size_kb: 0.8, - md5Checksum: "4bf3cfe872a60a19216310a7da30c20d", - }, - "plh_images/icons/lock_circle.svg": { - size_kb: 1, - md5Checksum: "6b45fffbe7fda947bf5d13609f761da5", - }, - "plh_images/icons/lock_outline.svg": { - size_kb: 0.9, - md5Checksum: "628f519c6ce2529b71d6ec00beaddc99", - }, - "plh_images/icons/parent_heart.svg": { - size_kb: 0.9, - md5Checksum: "45a1616c608c4ef9c3517d78bfb714d4", - }, - "plh_images/icons/parent_heart_circle.svg": { - size_kb: 1.1, - md5Checksum: "c76176c5f01aeea1c114e155073458ad", - }, - "plh_images/icons/parent_heart_white.svg": { - size_kb: 1.5, - md5Checksum: "4bbe9e6adcd28a4343c6a5154c800e70", - }, - "plh_images/icons/pause.svg": { - size_kb: 0.7, - md5Checksum: "b9a01b9c0b6ed86d47ff094f22d23c73", - }, - "plh_images/icons/pause_circle.svg": { - size_kb: 0.5, - md5Checksum: "b8f1724f0631a4e03cfdd8e824b0713d", - }, - "plh_images/icons/pause_outline.svg": { - size_kb: 0.7, - md5Checksum: "b9a01b9c0b6ed86d47ff094f22d23c73", - }, - "plh_images/icons/pause_white.svg": { - size_kb: 0.7, - md5Checksum: "f6989826fb94a865281b035fa155689d", - }, - "plh_images/icons/phone_heart.svg": { - size_kb: 1.3, - md5Checksum: "fe611f3865b881348abea8418f83d5f9", - }, - "plh_images/icons/phone_heart_white.svg": { - size_kb: 1.3, - md5Checksum: "61c5140fe55b34c11397b8c344e1c31c", - }, - "plh_images/icons/play.svg": { - size_kb: 0.5, - md5Checksum: "5393d2113acd3a4b7d5f03795067a678", - }, - "plh_images/icons/play_circle.svg": { - size_kb: 0.4, - md5Checksum: "0cd51f5009f5bdbe65d13437d473facb", - }, - "plh_images/icons/play_outline.svg": { - size_kb: 0.5, - md5Checksum: "5393d2113acd3a4b7d5f03795067a678", - }, - "plh_images/icons/play_white.svg": { - size_kb: 0.5, - md5Checksum: "6508bf39f8cb3c3ab0f30b96994a6cbc", - }, - "plh_images/icons/question_mark.svg": { - size_kb: 0.8, - md5Checksum: "49e1d1e478068a24949d87d09c9ba07b", - }, - "plh_images/icons/question_mark_white.svg": { - size_kb: 0.8, - md5Checksum: "779f1f9e3b84259d345015b601d89412", - }, - "plh_images/icons/smile_eyes_down.svg": { - size_kb: 0.9, - md5Checksum: "ff1783c1fe1f01482ab6bfc1f4780fec", - }, - "plh_images/icons/smile_eyes_down_white.svg": { - size_kb: 1, - md5Checksum: "30244517f7a0f05834b45bd964f675f1", - }, - "plh_images/icons/smile_eyes_up.svg": { - size_kb: 1, - md5Checksum: "0fc25de0fd953eb65f9cb4a519aee45f", - }, - "plh_images/icons/smile_eyes_up_white.svg": { - size_kb: 1, - md5Checksum: "b033b60520fbb70b53f2c97a91b6518a", - }, - "plh_images/icons/star.svg": { - size_kb: 0.6, - md5Checksum: "7d4e0f861269a6d8b84456aa7302fa8e", - }, - "plh_images/icons/star_circle.svg": { - size_kb: 1.5, - md5Checksum: "2184a733c02c9f16c996a89859afff82", - }, - "plh_images/icons/star_outline.svg": { - size_kb: 1, - md5Checksum: "db0b8e4ba99b48681840fc6ec93144c1", - }, - "plh_images/icons/star_white.svg": { - size_kb: 1, - md5Checksum: "0f9f695561b9bd2c21944bb6dd47d704", - }, - "plh_images/icons/temporarily_disabled.svg": { - size_kb: 1.2, - md5Checksum: "7138e91fb739032209c9f3bee6d5ae1f", - }, - "plh_images/icons/temporarily_disabled_white.svg": { - size_kb: 1.2, - md5Checksum: "5e779b9b284bc8170eb8a8ae54948a01", - }, - "plh_images/icons/tick.svg": { - size_kb: 0.4, - md5Checksum: "36c0ae7a400495b42e147e06698012b4", - }, - "plh_images/icons/tick_circle.svg": { - size_kb: 1.8, - md5Checksum: "d4ff6d5bcebe86bf95b4751cdf43a741", - }, - "plh_images/icons/tick_outline.svg": { - size_kb: 0.7, - md5Checksum: "7b2179b8376e693f466c5f997ec1c2b5", - }, - "plh_images/icons/tick_white.svg": { - size_kb: 0.3, - md5Checksum: "81136e04436759812dc3f6e90c61de11", - }, - "plh_images/icons/unlock.svg": { - size_kb: 0.8, - md5Checksum: "83e81b32bf3e400a47dc89343db4718e", - }, - "plh_images/icons/unlock_circle.svg": { - size_kb: 1, - md5Checksum: "aa719099a268681fdadd80fbd4d25fd6", - }, - "plh_images/icons/unlock_outline.svg": { - size_kb: 0.9, - md5Checksum: "b2baf969abbe27383327d1d82f6a644c", - }, - "plh_images/logos/funders/end_violence_against_children.png": { - size_kb: 21.4, - md5Checksum: "42a6b3a80ff26261d75ac38ccfdad863", - }, - "plh_images/logos/funders/erc.png": { - size_kb: 63.3, - md5Checksum: "4cd542dfa425f700924d1b823d047573", - }, - "plh_images/logos/funders/gcrf.png": { - size_kb: 27.2, - md5Checksum: "2df9eff2c10512be23db96dda5f8b712", - }, - "plh_images/logos/funders/generali_human_safety_net.png": { - size_kb: 39.7, - md5Checksum: "048861ee167499c5320a23786cd697f8", - }, - "plh_images/logos/funders/lego_foundation.png": { - size_kb: 14.3, - md5Checksum: "7fcc41d9c3df90a74bfd0e05e8acc4e5", - }, - "plh_images/logos/funders/newton_fund.png": { - size_kb: 14.3, - md5Checksum: "97c52b2da9fc03641461ce8aa0174f36", - }, - "plh_images/logos/funders/oak_foundation.png": { - size_kb: 21.7, - md5Checksum: "33c25310845e91c8b6034ee6c9113682", - }, - "plh_images/logos/funders/ukri.png": { - size_kb: 17, - md5Checksum: "a4122de03ae40177cd218dd37abb3b2d", - }, - "plh_images/logos/funders/unicef.png": { - size_kb: 23.6, - md5Checksum: "c5262d757c340125cc601c3dc368f37c", - }, - "plh_images/logos/funders/university_of_oxford.png": { - size_kb: 42, - md5Checksum: "a738b0e0c6d5601cac1d4ea299ee4281", - }, - "plh_images/logos/partners/cwb.png": { - size_kb: 28.3, - md5Checksum: "4813caff2be00e158e6f0d3fec5df6a2", - }, - "plh_images/logos/partners/idems.png": { - size_kb: 17.3, - md5Checksum: "963f0b32ea26bd9fdfddf47f0d42f340", - }, - "plh_images/logos/partners/plh.png": { - size_kb: 18.4, - md5Checksum: "5e85adf4533077a5335ec7c6a175299b", - }, - "plh_images/logos/partners/unicef.png": { - size_kb: 29.9, - md5Checksum: "0c9fb229c82fd604b1ad9b23a64804e8", - }, - "plh_images/logos/partners/who.png": { - size_kb: 42.9, - md5Checksum: "f05f8934b9b7f5565c2d9a589086de96", - }, - "plh_images/parent_centre/ask.svg": { - size_kb: 1, - md5Checksum: "5812093b7abe8ec62a0ec0b1e3f80451", - }, - "plh_images/parent_centre/ask_white.svg": { - size_kb: 1.5, - md5Checksum: "f23ed615c94c89439a71a5ae84b6b8e3", - }, - "plh_images/parent_centre/bereavement/practical.svg": { - size_kb: 6.8, - md5Checksum: "825f6d3d64262bb41abd986094828da6", - }, - "plh_images/parent_centre/bereavement/self.svg": { - size_kb: 3.9, - md5Checksum: "16ff8218ee6023f4e390a17219019d96", - }, - "plh_images/parent_centre/bereavement/teen.svg": { - size_kb: 4.5, - md5Checksum: "dc6214c976df912b76fe3fa1331862f0", - }, - "plh_images/parent_centre/covid/change_thoughts.svg": { - size_kb: 3.3, - md5Checksum: "17da7fe8b1c7e89fe276d49bb4401264", - }, - "plh_images/parent_centre/covid/deal_with_news.svg": { - size_kb: 3, - md5Checksum: "5d467475d3142f2a795f3fe91556e493", - }, - "plh_images/parent_centre/covid/help_teen_choose.svg": { - size_kb: 6, - md5Checksum: "504d535912d08889d5caabb312b9d236", - }, - "plh_images/parent_centre/covid/main.svg": { - size_kb: 6.1, - md5Checksum: "50366ba83be0d3bbdce07a43a94b4abc", - }, - "plh_images/parent_centre/covid/talk_to_teen.svg": { - size_kb: 6, - md5Checksum: "bc05d895bd500c636a2deacdc1f975b3", - }, - "plh_images/parent_centre/covid/teen_feelings.svg": { - size_kb: 4.9, - md5Checksum: "365fb9924dd72a28d130cd13708dee75", - }, - "plh_images/parent_centre/covid/teen_influences.svg": { - size_kb: 7.3, - md5Checksum: "0c2f8be2060200ffa59d4928e6eb5ffe", - }, - "plh_images/parent_centre/hands_carrying_heart.svg": { - size_kb: 2.8, - md5Checksum: "4a299953a13ec4daf19b632bb73161b9", - }, - "plh_images/parent_centre/hands_carrying_heart_white.svg": { - size_kb: 3.3, - md5Checksum: "8b346df1f084ea8fb6344ed8f8332131", - }, - "plh_images/parent_centre/hug_heart.svg": { - size_kb: 2.3, - md5Checksum: "167ef34df9807381fc5438a8c4bdddf1", - }, - "plh_images/parent_centre/hug_heart_white.svg": { - size_kb: 2.6, - md5Checksum: "c93c83ec30bf44fec991248ae3279646", - }, - "plh_images/parent_centre/info_circle.svg": { - size_kb: 0.6, - md5Checksum: "98b77c5dac5f73c97e47c418973d1640", - }, - "plh_images/parent_centre/info_circle_white.svg": { - size_kb: 1.1, - md5Checksum: "59246aa47a927a25f7ac9199103391de", - }, - "plh_images/parent_centre/info_phone.svg": { - size_kb: 1, - md5Checksum: "8d99de07c1e10ae6511e1da029bfc0a5", - }, - "plh_images/parent_centre/info_phone_white.svg": { - size_kb: 1.5, - md5Checksum: "85a6fbb11d058257a20d2914ccc4cc36", - }, - "plh_images/parent_centre/light_bulb.svg": { - size_kb: 3.8, - md5Checksum: "d6f1a6f622f98dd77864f9e0089089d6", - }, - "plh_images/parent_centre/light_bulb_white.svg": { - size_kb: 3.8, - md5Checksum: "b5ddfc27405c3be94371e9cbdd63ccf5", - }, - "plh_images/parent_centre/paper_stack.svg": { - size_kb: 1, - md5Checksum: "0fd8aa1106f740a5dcb6b4e09f03817d", - }, - "plh_images/parent_centre/paper_stack_white.svg": { - size_kb: 1.5, - md5Checksum: "a50a767318ba3662eb56469c3f5cf508", - }, - "plh_images/parent_centre/smile.svg": { - size_kb: 1.4, - md5Checksum: "9c5766e40b0bfa7adc03dd2e7ba52519", - }, - "plh_images/parent_centre/smile_white.svg": { - size_kb: 1.4, - md5Checksum: "d94f8b0535a84dbdf3161169d401451c", - }, - "plh_images/stickers/faces/angry.svg": { - size_kb: 1.6, - md5Checksum: "4b611cabdc397449fde8d6ad00572514", - }, - "plh_images/stickers/faces/confused.svg": { - size_kb: 2.5, - md5Checksum: "a018ac1dc24a55caaef36f6d17a10f77", - }, - "plh_images/stickers/faces/confused_question_mark.svg": { - size_kb: 1.9, - md5Checksum: "c0dcce9c87ac4126703a88949c1ec241", - }, - "plh_images/stickers/faces/happier.svg": { - size_kb: 1.6, - md5Checksum: "3566fd7a04f57339d7cfcb3892ec106a", - }, - "plh_images/stickers/faces/happiest.svg": { - size_kb: 0.8, - md5Checksum: "ad04574a244f87eb5e4b4e5098d2032f", - }, - "plh_images/stickers/faces/happy.svg": { - size_kb: 0.9, - md5Checksum: "a7b9e40d88b585db367be8a766280b03", - }, - "plh_images/stickers/faces/neutral.svg": { - size_kb: 1.6, - md5Checksum: "c5c06b436223337c72b3f9f0f0efdab6", - }, - "plh_images/stickers/faces/sad.svg": { - size_kb: 1.3, - md5Checksum: "5b7f24f15fcb959463c2505aa57b67d5", - }, - "plh_images/stickers/faces/sadder.svg": { - size_kb: 1.8, - md5Checksum: "e7c00a5eab887ebe1d5ae258c03c2fd1", - }, - "plh_images/stickers/faces/saddest.svg": { - size_kb: 1.2, - md5Checksum: "96087c1704506ae5591860dd9b6b70e5", - }, - "plh_images/stickers/faces/scared.svg": { - size_kb: 1.8, - md5Checksum: "17a1d4f582bcc1bda88eedee1c53a851", - }, - "plh_images/stickers/faces/tired.svg": { - size_kb: 1.8, - md5Checksum: "1843c40d0c0b2f2116ca440e93578db3", - }, - "plh_images/stickers/faces_yellow/happier.svg": { - size_kb: 0.5, - md5Checksum: "0ff00ec4309554a1a0132a20271a8ecd", - }, - "plh_images/stickers/faces_yellow/happiest.svg": { - size_kb: 0.6, - md5Checksum: "58e883ae90549e1e46f462e3be6157eb", - }, - "plh_images/stickers/faces_yellow/happy.svg": { - size_kb: 0.5, - md5Checksum: "2405a8c3be43542e483ef206f0fa694b", - }, - "plh_images/stickers/faces_yellow/neutral.svg": { - size_kb: 0.4, - md5Checksum: "a80a83665a9f57afd7e13c20580a15e7", - }, - "plh_images/stickers/faces_yellow/sad.svg": { - size_kb: 0.5, - md5Checksum: "93b584ea16291508621e1d4d55eb3b97", - }, - "plh_images/stickers/faces_yellow/sadder.svg": { - size_kb: 0.5, - md5Checksum: "e4ede97fa176d67ee98630cd70eb8405", - }, - "plh_images/stickers/faces_yellow/saddest.svg": { - size_kb: 0.5, - md5Checksum: "21ae58bb86a69ebf61edc706acb96857", - }, - "plh_images/stickers/sticker01.jpg": { - size_kb: 138.3, - md5Checksum: "7a0b28b310b289f09ac55160853711c2", - }, - "plh_images/survey/welcome/busy.svg": { - size_kb: 22.5, - md5Checksum: "a29aa4d7d1cd62b7dec1c970fe00efac", - }, - "plh_images/survey/welcome/coffee.svg": { - size_kb: 4.4, - md5Checksum: "2d70896bbb01107b0f7c078d8a53765c", - }, - "plh_images/survey/welcome/guide_1_argument.svg": { - size_kb: 9.4, - md5Checksum: "f5f6660895ad44eb21d8a07a8d55d3cb", - }, - "plh_images/survey/welcome/guide_1_frustrated.svg": { - size_kb: 13.4, - md5Checksum: "160a753ba2b73c2ad88f979ccc2b770d", - }, - "plh_images/survey/welcome/guide_1_key.svg": { - size_kb: 4.2, - md5Checksum: "f46f5010fb6dce0fe3db84a6e444d303", - }, - "plh_images/survey/welcome/guide_1_nervous.svg": { - size_kb: 3.2, - md5Checksum: "7ef07ef283fec83f61b37d648d08493b", - }, - "plh_images/survey/welcome/guide_1_worried.svg": { - size_kb: 2.8, - md5Checksum: "1fb80e89545868a0021861de2a64a044", - }, - "plh_images/survey/welcome/guide_2_argument.svg": { - size_kb: 7.5, - md5Checksum: "118787ffc4af0f0ba4594e3febbc5bc4", - }, - "plh_images/survey/welcome/guide_2_frustrated.svg": { - size_kb: 16.5, - md5Checksum: "470c92b1672274efad8a318d99f7a095", - }, - "plh_images/survey/welcome/guide_2_key.svg": { - size_kb: 4.1, - md5Checksum: "cffd391706ed7fb4740c625e0dba6b3e", - }, - "plh_images/survey/welcome/guide_2_nervous.svg": { - size_kb: 3.1, - md5Checksum: "a41019192af698623a694caef34d440d", - }, - "plh_images/survey/welcome/guide_2_worried.svg": { - size_kb: 3.8, - md5Checksum: "f02789fbfc31a78bfab7cc0beb31f984", - }, - "plh_images/survey/workshop_setup/adults.svg": { - size_kb: 7.6, - md5Checksum: "51d018205f5a79ea5be088f32fe1af5a", - }, - "plh_images/survey/workshop_setup/age_image.svg": { - size_kb: 12.2, - md5Checksum: "f1411ce479a9e92b6a8dd891c84ca6da", - }, - "plh_images/survey/workshop_setup/babies.svg": { - size_kb: 5.2, - md5Checksum: "f2912796b782f7665896559d447df010", - }, - "plh_images/survey/workshop_setup/children.svg": { - size_kb: 7.2, - md5Checksum: "055295df4acc07a21fd0d7666ec4cb98", - }, - "plh_images/survey/workshop_setup/high_five.svg": { - size_kb: 6, - md5Checksum: "39a9246a112f8ea116487ed0731eb44b", - }, - "plh_images/survey/workshop_setup/teens.svg": { - size_kb: 7.1, - md5Checksum: "d31a8c5417063c62eed128e98c530367", - }, - "plh_images/workshops/options/individual.svg": { - size_kb: 3.6, - md5Checksum: "05efc1145c695a3cb2e512235a8f0206", - }, - "plh_images/workshops/options/together.svg": { - size_kb: 138.7, - md5Checksum: "6caaf8bf847e7bec5f8e83ce656d533f", - }, - "plh_images/workshops/w_1on1/tools.svg": { - size_kb: 6.5, - md5Checksum: "73fa7ff26e4700c9ca379f473781de74", - }, - "plh_images/workshops/w_celebrate/read/slide_1.svg": { - size_kb: 101.6, - md5Checksum: "44744c00550af7954c90ca14eccbdc7e", - }, - "plh_images/workshops/w_celebrate/read/slide_2.svg": { - size_kb: 6.4, - md5Checksum: "cb963e84d52a0be168632a0ed7877158", - }, - "plh_images/workshops/w_celebrate/read/slide_3.svg": { - size_kb: 7.2, - md5Checksum: "7ed5739bfb9cab4b337dea4c6007fde3", - }, - "plh_images/workshops/w_celebrate/read/slide_4.svg": { - size_kb: 16.4, - md5Checksum: "a82455b066c7d27ab92bcc4328539da3", - }, - "plh_images/workshops/w_celebrate/tools.svg": { - size_kb: 65.6, - md5Checksum: "d174a38918eb7e8d3da081239eabc711", - }, - "plh_images/workshops/w_consequence/read_1/slide_1.svg": { - size_kb: 7.4, - md5Checksum: "9adada1a627a28e2cc4bea77efba3b02", - }, - "plh_images/workshops/w_consequence/read_1/slide_2.svg": { - size_kb: 6.4, - md5Checksum: "88c78683801849e556a2dd74c17bbf22", - }, - "plh_images/workshops/w_consequence/read_1/slide_3.svg": { - size_kb: 5.5, - md5Checksum: "cc6252f60461d819f698dcb4745811bb", - }, - "plh_images/workshops/w_consequence/read_1/slide_4.svg": { - size_kb: 5.6, - md5Checksum: "5a6ae89e93e12707fce80018c2beeb7c", - }, - "plh_images/workshops/w_consequence/read_2/slide_1.svg": { - size_kb: 6.6, - md5Checksum: "ce28a7931d27997a6e1707a68ae4ba3b", - }, - "plh_images/workshops/w_consequence/read_2/slide_2.svg": { - size_kb: 12.3, - md5Checksum: "5066b8ac03c1f7e0dcf227ed98624c2e", - }, - "plh_images/workshops/w_consequence/read_2/slide_3.svg": { - size_kb: 6.9, - md5Checksum: "404cd530d1d497ad8d89d9d062482e1d", - }, - "plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 1.svg": { - size_kb: 6.6, - md5Checksum: "139c50b1168a0c6ce75ba56a604e6db3", - }, - "plh_images/workshops/w_consequence/read_3/Calm conseqences_new image 2.svg": { - size_kb: 5.5, - md5Checksum: "9a22f64d6aa10290e9ed7b7e2e9131cf", - }, - "plh_images/workshops/w_consequence/read_3/slide_1.svg": { - size_kb: 7, - md5Checksum: "366d250ef5c4c9f4de01037a3d02158b", - }, - "plh_images/workshops/w_consequence/read_3/slide_2.svg": { - size_kb: 7.6, - md5Checksum: "78d4e14cf36489060b24efa1e53ff900", - }, - "plh_images/workshops/w_consequence/read_3/slide_3.svg": { - size_kb: 6, - md5Checksum: "a40884c0370aaad6b6ce7326bfb6ce32", - }, - "plh_images/workshops/w_consequence/read_3/slide_4.svg": { - size_kb: 6, - md5Checksum: "70c491f40874abeb99e3e66ec3bf516b", - }, - "plh_images/workshops/w_consequence/read_3/slide_5.svg": { - size_kb: 7.4, - md5Checksum: "98bc21fc0ae64ea8aabc03eaf9cd1441", - }, - "plh_images/workshops/w_consequence/read_3/slide_6.svg": { - size_kb: 5.6, - md5Checksum: "560d12de275c234c193b657be66ab286", - }, - "plh_images/workshops/w_consequence/read_3/slide_7.svg": { - size_kb: 5.5, - md5Checksum: "ea150fc7a10c2bb6c7e66dc1f18045f1", - }, - "plh_images/workshops/w_consequence/read_3/slide_8.svg": { - size_kb: 5.6, - md5Checksum: "267e5f0cf8af301c0f9e8638187630b7", - }, - "plh_images/workshops/w_consequence/read_3/slide_9.svg": { - size_kb: 48.7, - md5Checksum: "153799c983867a1d9b7bfea89ad032ef", - }, - "plh_images/workshops/w_consequence/tools.svg": { - size_kb: 9.9, - md5Checksum: "e47046d8530f041f4b5e5a669ee8aa20", - }, - "plh_images/workshops/w_crisis/learn/slide_1.svg": { - size_kb: 6.5, - md5Checksum: "f8525c1b856cdcd03aa4195e8cb091bd", - }, - "plh_images/workshops/w_crisis/learn/slide_2.svg": { - size_kb: 7.7, - md5Checksum: "ceea5abe414793397d12ffde4261f92c", - }, - "plh_images/workshops/w_crisis/learn/slide_3.svg": { - size_kb: 7.5, - md5Checksum: "c739ec53c5c813e5a3449ba39415c948", - }, - "plh_images/workshops/w_crisis/learn/slide_4.svg": { - size_kb: 8.7, - md5Checksum: "36c2566f1ec362da2aa91273591a011f", - }, - "plh_images/workshops/w_crisis/learn/slide_5.svg": { - size_kb: 6.2, - md5Checksum: "129c6e369d1f7be6c9c8bc5d478bc82d", - }, - "plh_images/workshops/w_crisis/read_1/slide_1.svg": { - size_kb: 8.8, - md5Checksum: "905ce2e34449b66f3820ac748e256ce7", - }, - "plh_images/workshops/w_crisis/read_1/slide_2.svg": { - size_kb: 8, - md5Checksum: "2308522ef3b37829891da711e790ba27", - }, - "plh_images/workshops/w_crisis/read_1/slide_3.svg": { - size_kb: 7.3, - md5Checksum: "07b202d53762673ed5bb876cb621ca8e", - }, - "plh_images/workshops/w_crisis/read_1/slide_4.svg": { - size_kb: 6.5, - md5Checksum: "f1119565e17c281b1373aeb91677e6b1", - }, - "plh_images/workshops/w_crisis/read_1/slide_5.svg": { - size_kb: 6.8, - md5Checksum: "1d4a26d6a854bc0b8c65692354ed3a1b", - }, - "plh_images/workshops/w_crisis/read_1/slide_6.svg": { - size_kb: 47.9, - md5Checksum: "6d11e158015d3e86259802f3c8ab1a13", - }, - "plh_images/workshops/w_crisis/read_2/slide_1.svg": { - size_kb: 5.5, - md5Checksum: "e5c9a8c3b44ba35326e34ad7c3f95973", - }, - "plh_images/workshops/w_crisis/read_2/slide_2.svg": { - size_kb: 6.1, - md5Checksum: "8036f779552ef710689a58a331780cf4", - }, - "plh_images/workshops/w_crisis/read_2/slide_3.svg": { - size_kb: 6.1, - md5Checksum: "e75f6aa65cc75a987dfc0afa9d61e03a", - }, - "plh_images/workshops/w_crisis/read_2/slide_4.svg": { - size_kb: 7, - md5Checksum: "11f0d6e69ae898591e0a64e5948ae282", - }, - "plh_images/workshops/w_crisis/read_2/slide_5.svg": { - size_kb: 7, - md5Checksum: "368f0ffabb9cb38048feaee9a532d12a", - }, - "plh_images/workshops/w_crisis/read_2/slide_6.svg": { - size_kb: 6.2, - md5Checksum: "3d753b8316141a2890bc3fc00a4ca789", - }, - "plh_images/workshops/w_crisis/tools.svg": { - size_kb: 6.3, - md5Checksum: "61bf31672e88435f3293b3e6ff164689", - }, - "plh_images/workshops/w_instruct/guide_1/teen_phone_1.svg": { - size_kb: 6.6, - md5Checksum: "85561d7fbdde25bf262540a83d381402", - }, - "plh_images/workshops/w_instruct/guide_1/teen_phone_2.svg": { - size_kb: 6, - md5Checksum: "d8b754e68283dd474d22f888eddcd5a2", - }, - "plh_images/workshops/w_instruct/guide_1/think/slide_1.svg": { - size_kb: 4.1, - md5Checksum: "25fddfd0af410997b4371951491606ae", - }, - "plh_images/workshops/w_instruct/guide_1/think/slide_2.svg": { - size_kb: 6.4, - md5Checksum: "8bdb4c76aafe1527ade318b7eff7f868", - }, - "plh_images/workshops/w_instruct/guide_1/think/slide_3.svg": { - size_kb: 23.2, - md5Checksum: "6563885ff7830772dbbea806421ddff8", - }, - "plh_images/workshops/w_instruct/guide_2/teen_phone_1.svg": { - size_kb: 6.2, - md5Checksum: "c3bdc6505aa0829ccde4787db5babbce", - }, - "plh_images/workshops/w_instruct/guide_2/teen_phone_2.svg": { - size_kb: 6.1, - md5Checksum: "ab493568a672decae92940b209484e5d", - }, - "plh_images/workshops/w_instruct/guide_2/think/slide_1.svg": { - size_kb: 3.8, - md5Checksum: "2273e90af65b4e4c24c6e23c3f146a43", - }, - "plh_images/workshops/w_instruct/guide_2/think/slide_2.svg": { - size_kb: 6.1, - md5Checksum: "930b7dd12a840820828fcc63ab18ff8e", - }, - "plh_images/workshops/w_instruct/guide_2/think/slide_3.svg": { - size_kb: 23.3, - md5Checksum: "44867e50635910762876f447985cc4d2", - }, - "plh_images/workshops/w_instruct/read_1/slide_1.svg": { - size_kb: 13.6, - md5Checksum: "2352ea623847d91a32ba02acaba08cdb", - }, - "plh_images/workshops/w_instruct/read_1/slide_2.svg": { - size_kb: 13.2, - md5Checksum: "e25a55eaa80bf7408ceaf22173c23a54", - }, - "plh_images/workshops/w_instruct/read_1/slide_3.svg": { - size_kb: 13.3, - md5Checksum: "1719e7341ed6f66b47f5d0dd5b75fcbe", - }, - "plh_images/workshops/w_instruct/read_2/slide_1.svg": { - size_kb: 13.7, - md5Checksum: "8a783f018b98f3e7741d08ab782b4a2b", - }, - "plh_images/workshops/w_instruct/read_2/slide_2.svg": { - size_kb: 13.2, - md5Checksum: "57831972a8564f3cf949026a70ab8fc9", - }, - "plh_images/workshops/w_instruct/read_2/slide_3.svg": { - size_kb: 11, - md5Checksum: "43a3bad70ebe57788bbc7efcbb8eb501", - }, - "plh_images/workshops/w_instruct/read_2/slide_4.svg": { - size_kb: 10.4, - md5Checksum: "2ac7364286f00393a236404e22dbdec7", - }, - "plh_images/workshops/w_instruct/tools.svg": { - size_kb: 9.6, - md5Checksum: "be953cb1a0f7dae1956aaf76862c3faa", - }, - "plh_images/workshops/w_money/learn/slide_1.svg": { - size_kb: 948.9, - md5Checksum: "fd30ef763b2ba38286fe790336f1a918", - }, - "plh_images/workshops/w_money/learn/slide_2.svg": { - size_kb: 40, - md5Checksum: "6fff099bc6031d2c5879e32d23c9e2be", - }, - "plh_images/workshops/w_money/learn/slide_3.svg": { - size_kb: 1266.8, - md5Checksum: "5cb6e031a601976c2c5a9dacde1cc38c", - }, - "plh_images/workshops/w_money/learn/slide_4.svg": { - size_kb: 1269.9, - md5Checksum: "82bfc942d7f0fa9c8f5175d85ce05314", - }, - "plh_images/workshops/w_money/read_1/slide_1.svg": { - size_kb: 36.8, - md5Checksum: "d35d65d66e927bebeb71212ba13771df", - }, - "plh_images/workshops/w_money/read_1/slide_2.svg": { - size_kb: 3.1, - md5Checksum: "3d879346507977366361a79b4e243f78", - }, - "plh_images/workshops/w_money/read_2/slide_1.svg": { - size_kb: 92.7, - md5Checksum: "89527e7d37980f73134f8887ac8cb38b", - }, - "plh_images/workshops/w_money/read_2/slide_2.svg": { - size_kb: 31.9, - md5Checksum: "2f947ce64e70a4f57be5d1e27226ec5c", - }, - "plh_images/workshops/w_money/read_3/slide_1.svg": { - size_kb: 11.6, - md5Checksum: "32d3043b6eecba56d90143ef69fd29cd", - }, - "plh_images/workshops/w_money/read_3/slide_2.svg": { - size_kb: 11.5, - md5Checksum: "4b2732913aaf69a7d9e619b60a43c854", - }, - "plh_images/workshops/w_money/read_3/slide_3.svg": { - size_kb: 18.3, - md5Checksum: "f3d08f6abbfffe6c1e65ddebe4f02dad", - }, - "plh_images/workshops/w_money/read_3/slide_4.svg": { - size_kb: 8.4, - md5Checksum: "018270b873c91c7448bab867b7ebf863", - }, - "plh_images/workshops/w_money/read_3/slide_5.svg": { - size_kb: 43.1, - md5Checksum: "6fe986fa7a4b09493580bfe5a03915aa", - }, - "plh_images/workshops/w_money/read_3/slide_6.svg": { - size_kb: 91, - md5Checksum: "cd331d34ec95f2a267616198bc272755", - }, - "plh_images/workshops/w_money/read_4/slide_1.svg": { - size_kb: 27.5, - md5Checksum: "ab043bb71c85a071254cf552981990e1", - }, - "plh_images/workshops/w_money/tools.svg": { - size_kb: 15.5, - md5Checksum: "1019da9152557bade59a3a1c852c377b", - }, - "plh_images/workshops/w_praise/read/slide_1.svg": { - size_kb: 16.2, - md5Checksum: "3861bcfd3f13b77d90266731755b888a", - }, - "plh_images/workshops/w_praise/read/slide_2.svg": { - size_kb: 761.1, - md5Checksum: "eaa20b358c00a63aa6e25d54d7e5c59d", - }, - "plh_images/workshops/w_praise/reflect_together/slide_1.svg": { - size_kb: 14.4, - md5Checksum: "751d618e870b3fadc28399d1667f416e", - }, - "plh_images/workshops/w_praise/reflect_together/slide_2.svg": { - size_kb: 14.3, - md5Checksum: "a99e13a19e87c4925bd3c863e7cd7c66", - }, - "plh_images/workshops/w_praise/reflect_together/slide_3.svg": { - size_kb: 14.4, - md5Checksum: "12f63ecf66211db8be929e04bf5ebf84", - }, - "plh_images/workshops/w_praise/tools.svg": { - size_kb: 5.8, - md5Checksum: "c1361f5a07783b5901d6f4a7fce13210", - }, - "plh_images/workshops/w_rules/read_1/slide_1.svg": { - size_kb: 8.2, - md5Checksum: "62a23a6a871b1bd3e9b0766ba4885a9b", - }, - "plh_images/workshops/w_rules/read_1/slide_3.svg": { - size_kb: 7.4, - md5Checksum: "b61185658f2e4352a61b756801a97e5a", - }, - "plh_images/workshops/w_rules/read_1/slide_4.svg": { - size_kb: 7.5, - md5Checksum: "19609316ca4d9ebb2bd3aa278a097333", - }, - "plh_images/workshops/w_rules/read_1/slide_5.svg": { - size_kb: 7.5, - md5Checksum: "ffc0ea6eb046ae71dfcfa3127dbfe6e2", - }, - "plh_images/workshops/w_rules/read_1/slide_6.svg": { - size_kb: 7.6, - md5Checksum: "cee09fe970424d41350add3b36c893a5", - }, - "plh_images/workshops/w_rules/read_1/slide_7.svg": { - size_kb: 44.1, - md5Checksum: "0dfcd94f6d55e7fc5a536e48ce68a1be", - }, - "plh_images/workshops/w_rules/read_1/slide_8.svg": { - size_kb: 7.5, - md5Checksum: "a6a15529528eb9ec674038d12c1bff9a", - }, - "plh_images/workshops/w_rules/read_2/slide_1.svg": { - size_kb: 7.1, - md5Checksum: "72b8bdf8c551bccbb697a4f72d179b9f", - }, - "plh_images/workshops/w_rules/read_2/slide_2.svg": { - size_kb: 6.5, - md5Checksum: "9eafea48b3be6b581a14212a373959d3", - }, - "plh_images/workshops/w_rules/read_2/slide_3.svg": { - size_kb: 6.5, - md5Checksum: "b4cb2ee458af1abc22b58e6969fd4f54", - }, - "plh_images/workshops/w_rules/read_2/slide_4.svg": { - size_kb: 66.2, - md5Checksum: "fbbaec539740fd64e409073d0e2c9cb7", - }, - "plh_images/workshops/w_rules/read_2/slide_5.svg": { - size_kb: 6.9, - md5Checksum: "c427f203f1915bcd0302921fc35d729a", - }, - "plh_images/workshops/w_rules/tools.svg": { - size_kb: 9.1, - md5Checksum: "4d74cd467f5f816face62deadc63aaf6", - }, - "plh_images/workshops/w_safe/learn/slide_1.svg": { - size_kb: 1114.8, - md5Checksum: "c72385f05bd96def84ea4d5fa6896397", - }, - "plh_images/workshops/w_safe/learn/slide_2.svg": { - size_kb: 1744.2, - md5Checksum: "62b09f506cc9ee746ad103044cf149b0", - }, - "plh_images/workshops/w_safe/learn/slide_3.svg": { - size_kb: 1378.6, - md5Checksum: "b1b50acd3c0d1ad56daa5ffe7b3f6741", - }, - "plh_images/workshops/w_safe/learn/slide_4.svg": { - size_kb: 821.6, - md5Checksum: "3ba9ac6fd9f023049b463b72342af1f8", - }, - "plh_images/workshops/w_safe/read_1/slide_1.svg": { - size_kb: 7.4, - md5Checksum: "4523d5af947cbc7d01ce70ae989adf1a", - }, - "plh_images/workshops/w_safe/read_1/slide_2.svg": { - size_kb: 47.9, - md5Checksum: "b120e564c9cd533631513d880667a882", - }, - "plh_images/workshops/w_safe/read_1/slide_3.svg": { - size_kb: 46.6, - md5Checksum: "29988e93edf0db46fb602bb03292e188", - }, - "plh_images/workshops/w_safe/read_1/slide_4.svg": { - size_kb: 10.6, - md5Checksum: "e662be8ac20f7719ebbdba7006341ef6", - }, - "plh_images/workshops/w_safe/read_1/slide_5.svg": { - size_kb: 10.5, - md5Checksum: "911d552ba9b992e500b4fa231fd5663a", - }, - "plh_images/workshops/w_safe/read_1/slide_6.svg": { - size_kb: 6.9, - md5Checksum: "93a85ef9d94586f6a46e57b4f2942ece", - }, - "plh_images/workshops/w_safe/read_2/slide_1.svg": { - size_kb: 7.4, - md5Checksum: "c400d59db95b04a49111b447c127ecef", - }, - "plh_images/workshops/w_safe/read_2/slide_2.svg": { - size_kb: 7.5, - md5Checksum: "a4aba4c7a277d151a038465d35abda5c", - }, - "plh_images/workshops/w_safe/read_2/slide_3.svg": { - size_kb: 6.9, - md5Checksum: "9f29cf4275c53513dc01df2bf5ad28d4", - }, - "plh_images/workshops/w_safe/tools.svg": { - size_kb: 7.1, - md5Checksum: "fe8e84f3f2b124d7a71a30dea507f9e7", - }, - "plh_images/workshops/w_self_care/guide_1/recognise.svg": { - size_kb: 6.9, - md5Checksum: "49344911ea9c25685fffed47728dadbc", - }, - "plh_images/workshops/w_self_care/guide_1/reward.svg": { - size_kb: 8, - md5Checksum: "a8992712e9a949e14bdaaf03f40575f4", - }, - "plh_images/workshops/w_self_care/guide_2/recognise.svg": { - size_kb: 6.9, - md5Checksum: "a84438c8ff0caacc78cc353e0f6b22f9", - }, - "plh_images/workshops/w_self_care/guide_2/reward.svg": { - size_kb: 7.9, - md5Checksum: "681910eca8201998e670a0f3caffa9e7", - }, - "plh_images/workshops/w_self_care/tools.svg": { - size_kb: 7.5, - md5Checksum: "3298c27b7df419a0fc43a59d22b37b81", - }, - "plh_images/workshops/w_solve/read_1/slide_1.svg": { - size_kb: 6.5, - md5Checksum: "5373ec46be6f68b78e0910fe012d289b", - }, - "plh_images/workshops/w_solve/read_1/slide_2.svg": { - size_kb: 6.5, - md5Checksum: "66c0284c41e74b3fb0f4349b1006fb78", - }, - "plh_images/workshops/w_solve/read_1/slide_3.svg": { - size_kb: 6.5, - md5Checksum: "8f79134327f463694f40ba50c4ac865e", - }, - "plh_images/workshops/w_solve/read_2/slide_1.svg": { - size_kb: 12.2, - md5Checksum: "3d69f149beb7c00133d740484a8f5fa2", - }, - "plh_images/workshops/w_solve/read_2/slide_10.svg": { - size_kb: 51.9, - md5Checksum: "1a45611d92cb8c7312fc0b5a9089048f", - }, - "plh_images/workshops/w_solve/read_2/slide_11.svg": { - size_kb: 8.4, - md5Checksum: "2177ef892e58c1ae192ce444a387fc5a", - }, - "plh_images/workshops/w_solve/read_2/slide_12.svg": { - size_kb: 7.3, - md5Checksum: "9731db03ed8617bdc1b0c3d194e161d8", - }, - "plh_images/workshops/w_solve/read_2/slide_2.svg": { - size_kb: 11, - md5Checksum: "2ed6bb078003b85f5e8edcb431040edd", - }, - "plh_images/workshops/w_solve/read_2/slide_3.svg": { - size_kb: 28.3, - md5Checksum: "f19438f969c1ba9b1809a1709085e54d", - }, - "plh_images/workshops/w_solve/read_2/slide_4.svg": { - size_kb: 28.2, - md5Checksum: "27808bec9405582fc9f03e82fdd21a53", - }, - "plh_images/workshops/w_solve/read_2/slide_5.svg": { - size_kb: 7.2, - md5Checksum: "45da09c31dd75b1dade5e26702860fb4", - }, - "plh_images/workshops/w_solve/read_2/slide_6.svg": { - size_kb: 7.3, - md5Checksum: "713c923cfc5be0b06d35b84047f11167", - }, - "plh_images/workshops/w_solve/read_2/slide_7.svg": { - size_kb: 7.3, - md5Checksum: "b26d74f238f93e952c79c7e5c6540729", - }, - "plh_images/workshops/w_solve/read_2/slide_8.svg": { - size_kb: 7.2, - md5Checksum: "f87c3c249f11da64be038ce829fea009", - }, - "plh_images/workshops/w_solve/read_2/slide_9.svg": { - size_kb: 7.1, - md5Checksum: "52f505b176de78c901c5eab7a116d830", - }, - "plh_images/workshops/w_solve/read_3/slide_1.svg": { - size_kb: 6.6, - md5Checksum: "e413d37ea5a999964f29d0c156baae87", - }, - "plh_images/workshops/w_solve/read_3/slide_2.svg": { - size_kb: 7.5, - md5Checksum: "e9a7e9234f1cae498ca65e2a049f551f", - }, - "plh_images/workshops/w_solve/read_3/slide_3.svg": { - size_kb: 7.5, - md5Checksum: "e9a7e9234f1cae498ca65e2a049f551f", - }, - "plh_images/workshops/w_solve/tools/tool_1.svg": { - size_kb: 23.9, - md5Checksum: "2146c95f6b02a306a68525a3cf632187", - }, - "plh_images/workshops/w_solve/tools/tool_2.svg": { - size_kb: 40.1, - md5Checksum: "80f47d033e2c1c0c609c61f3718b8434", - }, - "plh_images/workshops/w_solve/tools/tool_3.svg": { - size_kb: 21.9, - md5Checksum: "75d3c84ac20906956e7df9d0d3e4dc1e", - }, - "plh_images/workshops/w_solve/tools/tool_3_alternative.svg": { - size_kb: 24.3, - md5Checksum: "41610c268611c9f961bb596a87864428", - }, - "plh_images/workshops/w_solve/tools/tool_4.svg": { - size_kb: 18, - md5Checksum: "26644ce6c4e959ef94ec48044b8d14b3", - }, - "plh_images/workshops/w_solve/tools.svg": { - size_kb: 7.1, - md5Checksum: "26faa69fe9cf041c664a3e57a1a0e096", - }, - "plh_images/workshops/w_stress/read_1/slide_1.svg": { - size_kb: 3.8, - md5Checksum: "e08535d4d76dd927805b5e73f5bc53fd", - }, - "plh_images/workshops/w_stress/read_1/slide_2.svg": { - size_kb: 6.1, - md5Checksum: "6ee483d983b4e938f5bb81e5b0933150", - }, - "plh_images/workshops/w_stress/read_1/slide_3.svg": { - size_kb: 8.2, - md5Checksum: "01c66ddb9a924ee7f233f5ebe3f2fedd", - }, - "plh_images/workshops/w_stress/read_1/slide_4.svg": { - size_kb: 62.4, - md5Checksum: "fb8009b6a94e90294d64bd1b09ff293d", - }, - "plh_images/workshops/w_stress/read_1/slide_5.svg": { - size_kb: 63.3, - md5Checksum: "6fa52f7adadc2036af8503ce705dd2c7", - }, - "plh_images/workshops/w_stress/read_1/slide_6.svg": { - size_kb: 9.8, - md5Checksum: "752730c4dbe86d018bc990f39886f08d", - }, - "plh_images/workshops/w_stress/read_2/slide_1.svg": { - size_kb: 3.8, - md5Checksum: "3f0e521672d9ea9a13ff52c5ac14f5ea", - }, - "plh_images/workshops/w_stress/read_2/slide_2.svg": { - size_kb: 7.9, - md5Checksum: "d185406b3e42bb12ede584d926587406", - }, - "plh_images/workshops/w_stress/read_2/slide_3.svg": { - size_kb: 6.5, - md5Checksum: "657487acaa66e464338f9d0659836af8", - }, - "plh_images/workshops/w_stress/read_2/slide_4.svg": { - size_kb: 6.4, - md5Checksum: "f692ea3dbfc9c250cb0177d60359a476", - }, - "plh_images/workshops/w_stress/read_2/slide_5.svg": { - size_kb: 112.9, - md5Checksum: "1ef4b0d4790c13cea8c4c8e5d3bbf501", - }, - "plh_images/workshops/w_stress/read_3/slide_1.svg": { - size_kb: 5.5, - md5Checksum: "a9b51ccb5348160e9acbbfd95ba26e5f", - }, - "plh_images/workshops/w_stress/read_3/slide_2.svg": { - size_kb: 10.7, - md5Checksum: "641a9c66cf08b7a66db39f6c78c7c671", - }, - "plh_images/workshops/w_stress/read_3/slide_3.svg": { - size_kb: 9.3, - md5Checksum: "8f0efce15850644762cfc0b6bc983ba0", - }, - "plh_images/workshops/w_stress/read_3/slide_4.svg": { - size_kb: 35.4, - md5Checksum: "32b7bdb827a67fd6cd8696d86f9aa504", - }, - "plh_images/workshops/w_stress/read_3/slide_5.svg": { - size_kb: 9.1, - md5Checksum: "16c5e7e893a1fc0e53a85ecc659f8707", - }, - "plh_images/workshops/w_stress/read_3/slide_6.svg": { - size_kb: 10.3, - md5Checksum: "cc2a3d7312025e21a1b1025bb7533c50", - }, - "plh_images/workshops/w_stress/tools.svg": { - size_kb: 6.3, - md5Checksum: "fc0219dbf6b39c6fe7eeaa36cc40c4cc", - }, - "plh_images/workshop_modes/group/cup.svg": { - size_kb: 149.5, - md5Checksum: "08eed96abcb06128573e5ccbf01c3616", - }, - "plh_images/workshop_modes/group/final/cup.svg": { - size_kb: 145.7, - md5Checksum: "317e835859b4faa82591e38e7f2cd4ad", - }, - "plh_images/workshop_modes/group/final/light_bulb.svg": { - size_kb: 147.3, - md5Checksum: "1083d38169935a6fc6dd69b0d2fbbfee", - }, - "plh_images/workshop_modes/group/final/notes.svg": { - size_kb: 145.9, - md5Checksum: "a53bbb2dcf12a5fef6beb7f13faf297b", - }, - "plh_images/workshop_modes/group/final/read.svg": { - size_kb: 146.8, - md5Checksum: "89850820e3571977535839c954820df3", - }, - "plh_images/workshop_modes/group/final/relax.svg": { - size_kb: 144.4, - md5Checksum: "fdc0856e935e7d246401af6169a06e61", - }, - "plh_images/workshop_modes/group/final/talk.svg": { - size_kb: 144.3, - md5Checksum: "1bc7bf19c6f052cdb64a3d5e505b4df3", - }, - "plh_images/workshop_modes/group/light_bulb.svg": { - size_kb: 143.6, - md5Checksum: "d0174c8ca586c73cf5c05c52138854bf", - }, - "plh_images/workshop_modes/group/notes.svg": { - size_kb: 142.2, - md5Checksum: "657c4a42011d747d0e3c1939edebfd54", - }, - "plh_images/workshop_modes/group/read.svg": { - size_kb: 143.2, - md5Checksum: "d518d1d0a2325d11d813ba71c5a128aa", - }, - "plh_images/workshop_modes/group/relax.svg": { - size_kb: 140.7, - md5Checksum: "da1e1ee4e68ef744eb917c128ce426ff", - }, - "plh_images/workshop_modes/group/talk.svg": { - size_kb: 140.7, - md5Checksum: "c31e79168837723e0becf5210fd673b3", - }, - "plh_images/workshop_modes/group/with_teen.svg": { - size_kb: 5.4, - md5Checksum: "d0f425c460bff0adf11be5bed24d483e", - }, - "plh_images/workshop_modes/guide_1/cup.svg": { - size_kb: 5.5, - md5Checksum: "0f0029204ac24f52194b4ce85d4e7e45", - }, - "plh_images/workshop_modes/guide_1/final/cup.svg": { - size_kb: 11.6, - md5Checksum: "69d70e4001f78de9b0659412d199d9b8", - }, - "plh_images/workshop_modes/guide_1/final/light_bulb.svg": { - size_kb: 5.4, - md5Checksum: "bdd9a34056adfcf293479d8ee4f0654b", - }, - "plh_images/workshop_modes/guide_1/final/notes.svg": { - size_kb: 55, - md5Checksum: "9db02c2ba6c1d809424cedf9b66c223d", - }, - "plh_images/workshop_modes/guide_1/final/relax.svg": { - size_kb: 4.2, - md5Checksum: "76496e853f49382bb46ab7ae77d622bd", - }, - "plh_images/workshop_modes/guide_1/final/star.svg": { - size_kb: 4.6, - md5Checksum: "9b798f3f503826ffef4f73f461937666", - }, - "plh_images/workshop_modes/guide_1/final/thumbs_up.svg": { - size_kb: 4.2, - md5Checksum: "003b54f7152a451d81fe1396e17ef487", - }, - "plh_images/workshop_modes/guide_1/final/wave.svg": { - size_kb: 3.8, - md5Checksum: "dd1b3f1665c9679cb8af0d9c2f46bc03", - }, - "plh_images/workshop_modes/guide_1/light_bulb.svg": { - size_kb: 4.4, - md5Checksum: "3bb834d2dd6aa8e61f2a3e92d2526d5e", - }, - "plh_images/workshop_modes/guide_1/notes.svg": { - size_kb: 54.1, - md5Checksum: "b0c8fa7dfc16eba6a06b6b6579c1a309", - }, - "plh_images/workshop_modes/guide_1/notes_left.svg": { - size_kb: 55.9, - md5Checksum: "d1682bd9fcb4840d095a2c26545c5d40", - }, - "plh_images/workshop_modes/guide_1/read.svg": { - size_kb: 3.8, - md5Checksum: "eb4e8e608bee7c91033fccc7bf1c4191", - }, - "plh_images/workshop_modes/guide_1/relax.svg": { - size_kb: 3.2, - md5Checksum: "35a5e7bb71624377e802535964d00f4d", - }, - "plh_images/workshop_modes/guide_1/star.svg": { - size_kb: 3.6, - md5Checksum: "57df406149db93283faa59bf8e855f16", - }, - "plh_images/workshop_modes/guide_1/thumbs_up.svg": { - size_kb: 3.2, - md5Checksum: "76287b6693b8d83a5455e04d58c3bfaa", - }, - "plh_images/workshop_modes/guide_1/wave.svg": { - size_kb: 2.8, - md5Checksum: "da48a5a5b56099a7beee88bf8c4320bf", - }, - "plh_images/workshop_modes/guide_1/with_teen.svg": { - size_kb: 5.9, - md5Checksum: "3e880125f35030b4af11a25d17f6129f", - }, - "plh_images/workshop_modes/guide_1/write.svg": { - size_kb: 3.8, - md5Checksum: "d7859ca5ef124a376a5cf6a638ee3623", - }, - "plh_images/workshop_modes/guide_2/cup.svg": { - size_kb: 5.8, - md5Checksum: "6549a769cb31d831ef27234f91756041", - }, - "plh_images/workshop_modes/guide_2/final/cup.svg": { - size_kb: 10.3, - md5Checksum: "54b84af382b03708d44ad0846572fe13", - }, - "plh_images/workshop_modes/guide_2/final/light_bulb.svg": { - size_kb: 5.6, - md5Checksum: "698fdc0e47cc97fc378ddaafbbe9c698", - }, - "plh_images/workshop_modes/guide_2/final/notes.svg": { - size_kb: 57.5, - md5Checksum: "a105ae26a2e7de1efc421f1e832acb65", - }, - "plh_images/workshop_modes/guide_2/final/relax.svg": { - size_kb: 3.8, - md5Checksum: "af45d95d4d9d7b5be6055cd90b0d6c33", - }, - "plh_images/workshop_modes/guide_2/final/star.svg": { - size_kb: 4.7, - md5Checksum: "627c2d07c624f9c4194c9967705f774d", - }, - "plh_images/workshop_modes/guide_2/final/thumbs_up.svg": { - size_kb: 4.4, - md5Checksum: "fed8fb95625b99aa3a612b2284869a96", - }, - "plh_images/workshop_modes/guide_2/final/wave.svg": { - size_kb: 4, - md5Checksum: "fbd12bcc51d17917bc96fa76fb8567ac", - }, - "plh_images/workshop_modes/guide_2/light_bulb.svg": { - size_kb: 4.6, - md5Checksum: "056e44ecd0260d2d4f09be31031d3ab4", - }, - "plh_images/workshop_modes/guide_2/notes.svg": { - size_kb: 56.6, - md5Checksum: "3c7d0fa4ee0e4443428a99b7a8c79249", - }, - "plh_images/workshop_modes/guide_2/notes_left.svg": { - size_kb: 56.4, - md5Checksum: "f6096aa659c28c7b9aaa6734fee277dd", - }, - "plh_images/workshop_modes/guide_2/read.svg": { - size_kb: 3.7, - md5Checksum: "37004d531d300bcba599761b8fde65c3", - }, - "plh_images/workshop_modes/guide_2/relax.svg": { - size_kb: 2.8, - md5Checksum: "671efe03765bebc98d71aa3ea3af095a", - }, - "plh_images/workshop_modes/guide_2/star.svg": { - size_kb: 3.7, - md5Checksum: "50d12cee9cfc9ef994ca3de0d636e56b", - }, - "plh_images/workshop_modes/guide_2/thumbs_up.svg": { - size_kb: 3.4, - md5Checksum: "563c9632f379e12af0159f39256dcd81", - }, - "plh_images/workshop_modes/guide_2/wave.svg": { - size_kb: 3, - md5Checksum: "be9901f233124ed4a8ad189b219cc957", - }, - "plh_images/workshop_modes/guide_2/with_teen.svg": { - size_kb: 6.1, - md5Checksum: "f4808b91a9a6b24c0a8ee3f1c826fc94", - }, - "plh_images/workshop_modes/guide_2/write.svg": { - size_kb: 3.8, - md5Checksum: "d85011b09a2953d05a49e784995492d3", - }, - "plh_lottie/habits/cascading_stars.json": { - size_kb: 140.5, - md5Checksum: "131145b165cd19613a9e277a514eec2f", - }, - "plh_lottie/habits/habit_breathe.json": { - size_kb: 20.9, - md5Checksum: "e1b0e6df242d3a649f0631e5be7d410a", - }, - "plh_lottie/habits/habit_breathe.mp4": { - size_kb: 65.5, - md5Checksum: "abcdfe7c87f099419f26cc8d88fb1776", - }, - "plh_lottie/habits/habit_consequence.json": { - size_kb: 52.3, - md5Checksum: "73cce30c92adeae23d7ad31e67c793b2", - }, - "plh_lottie/habits/habit_instruct_positively.json": { - size_kb: 60.3, - md5Checksum: "f9d365434fbb3addc2289ef4c37a731e", - }, - "plh_lottie/habits/habit_money.json": { - size_kb: 63.3, - md5Checksum: "85ebdee3bf1f34c8a73b2c8cf2fa8d12", - }, - "plh_lottie/habits/habit_praise_teen.json": { - size_kb: 83.5, - md5Checksum: "e09b35c05471c89cfda56caba72bc778", - }, - "plh_lottie/habits/habit_praise_yourself.json": { - size_kb: 34.5, - md5Checksum: "0d44cbf5e7c9c3c12bd96a8560829cda", - }, - "plh_lottie/habits/habit_relax.json": { - size_kb: 22.2, - md5Checksum: "02cc3ec16edb9faf0c35581ade5860a0", - }, - "plh_lottie/habits/habit_safe.json": { - size_kb: 48, - md5Checksum: "0bbefd2bb09d66855f62dbad5182a4ec", - }, - "plh_lottie/habits/habit_spend_time.json": { - size_kb: 69.4, - md5Checksum: "5361d4828cb2d1041e263bf107bfff50", - }, - "plh_lottie/habits/habit_treat_yourself.json": { - size_kb: 33.8, - md5Checksum: "c8ca5c8cfcf81d2b253f5558eb939e61", - }, - "plh_lottie/parent_centre.json": { - size_kb: 81.3, - md5Checksum: "e99205d8d63f10544a1552b7e71a1629", - }, - "plh_lottie/parent_points.json": { - size_kb: 52.1, - md5Checksum: "ad29799d976bba2bdbce1005d92e07b8", - }, - "plh_lottie/relax1.json": { - size_kb: 19.2, - md5Checksum: "4768b0cc4584501d722c0e844e0be49c", - }, - "plh_lottie/relax_clouds.json": { - size_kb: 39.6, - md5Checksum: "7d746368115fb85e289a12b7d81f60c3", - }, - "plh_lottie/relax_individual.json": { - size_kb: 23.4, - md5Checksum: "ebeb4db7d932ab4eec331ac2715c533d", - }, - "plh_lottie/splash_screen_3.json": { - size_kb: 77.3, - md5Checksum: "15afeb419f6c44eb3f0092a25ae580bb", - }, - "plh_lottie/weekly_workshops.json": { - size_kb: 57.2, - md5Checksum: "60ccc0774f39602928ca80eb4fb19658", - }, - "plh_video/lets_slow_down.mp4": { - size_kb: 13482.2, - md5Checksum: "62f06faa95a979d128b4356db9bb396e", - }, - "quality_assurance/test_audio.mp3": { - size_kb: 43.4, - md5Checksum: "5ddddf934d2187d084c75b7e27797fae", - translations: { - es_sp: { - size_kb: 33.6, - md5Checksum: "a53e8b35c7985e051a7b9b9742879b03", - }, - }, - }, - "quality_assurance/test_image.png": { - size_kb: 2, - md5Checksum: "e6d6c6a12ca13a6277084e01c088378c", - translations: { - es_sp: { - size_kb: 1.8, - md5Checksum: "f44069fc2c1d641dae929631c17fdbec", - }, - }, - }, - "quality_assurance/test_image_no_translations.png": { - size_kb: 2.8, - md5Checksum: "f759667d7abedfa5aea2ac742e831ce3", - }, -}; diff --git a/packages/app-data/assets/theme_professional/global/plh_images/characters/elder/large.svg b/packages/app-data/assets/theme_professional/global/plh_images/characters/elder/large.svg new file mode 100644 index 0000000000..62d30aa248 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/characters/elder/large.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d8411a054c0ce982e5f6a6e47b1ad3de6f5813ed5f1f02bc58dc0f9466dc145 +size 8791 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/characters/neighbour/neutral.svg b/packages/app-data/assets/theme_professional/global/plh_images/characters/neighbour/neutral.svg new file mode 100644 index 0000000000..e3e92fc526 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/characters/neighbour/neutral.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aea3f2a4fd92b17e814bb84fa1512db27b1a7d73db44dc00ee2b5dbfcb8f9b12 +size 11678 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/family.svg b/packages/app-data/assets/theme_professional/global/plh_images/family.svg new file mode 100644 index 0000000000..413bb10c5b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/family.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20180e98e4d243b67d4064ac36f8e893317b9c557adcaf6a1e306ad156bc9505 +size 46375 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/frustrated.svg b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/frustrated.svg new file mode 100644 index 0000000000..5e07364c95 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/frustrated.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a68686a4afcd239279fd990227e9a333fea7cd7511f0bd128abd0e971bc312a5 +size 22995 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/join_parents.svg b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/join_parents.svg new file mode 100644 index 0000000000..14213df61c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/join_parents.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f76a31c49a47bc1a36ba022ceb53d2157384b41aba17910c79c97c58aa49a5cf +size 38519 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/loving_parent.svg b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/loving_parent.svg new file mode 100644 index 0000000000..e26b1d489a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/first_app_launch/loving_parent.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:695186ced1449d4ca9a91b84d913df6751d67eaf078b1e3488e371cb39c2dd8d +size 26290 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/breathe.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/breathe.svg new file mode 100644 index 0000000000..5a8850e9fa --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/breathe.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d80b0e81ba6f1d47cd430e36375247ba3aa87219918711947625745e0893f84 +size 13384 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_breathe.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_breathe.svg new file mode 100644 index 0000000000..3be96180d8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_breathe.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0888cc7be9911b514991cbb2c113591fc41efbb24a4f96bfdf87e5a4b71451fa +size 23302 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_consequence.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_consequence.svg new file mode 100644 index 0000000000..d13e11a9bf --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_consequence.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2586de1e7a626a610c32672bdd91378ccae737cb976748303c98e7d6bb16653 +size 23944 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_instruct_positively.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_instruct_positively.svg new file mode 100644 index 0000000000..3abf866d7f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_instruct_positively.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:162f1b7b15365e49107d1b4ef2735e8e30a8f8cc205132d28d1c9926effabf7f +size 34927 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_money.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_money.svg new file mode 100644 index 0000000000..8f9a912fa8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_money.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b12eaae7b7f4ea76ae769363706308854d32584a4d590b432b06d68bec97ec1 +size 9986 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_teen.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_teen.svg new file mode 100644 index 0000000000..abce72c84a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_teen.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db732a6d26ebb884f2d53bba1808a2819ec0bd63d361eb4c1b387825b7b6919b +size 41442 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_yourself.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_yourself.svg new file mode 100644 index 0000000000..a0015c006f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_praise_yourself.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59a2fa21e5679620d81cb6ea75735bea5e82b63ef098a6f75f888571b3b2c135 +size 17092 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_relax.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_relax.svg new file mode 100644 index 0000000000..5f94ce729d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_relax.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3ddb73c5309756c315871064d8c359891e9afa14265d93779e39f8b45c0f3c8 +size 15874 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_safe.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_safe.svg new file mode 100644 index 0000000000..17cc5b0ceb --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_safe.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77876cbbadaccdcaa2316670830abb63a42351e8fd183c2e84d3397a88c6e0d6 +size 23718 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_spend_time.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_spend_time.svg new file mode 100644 index 0000000000..146f68a00c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_spend_time.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d888e860dc3df9077e3371094a3c65a9306d0eb756b54535dd7a465becc0ac74 +size 23857 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_treat_yourself.svg b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_treat_yourself.svg new file mode 100644 index 0000000000..aa78a15794 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/habits/habit_treat_yourself.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8031e928207f17e0fdb5387f17e623b2b8fd86955cb3a1b5be23e06b734e74c +size 15256 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/practical.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/practical.svg new file mode 100644 index 0000000000..cede10012e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/practical.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd4362197908fad00b529ee93e510cd35f24618648806db2d29034074844afa +size 27883 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/self.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/self.svg new file mode 100644 index 0000000000..a0bdee96a4 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/self.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a484ea684cadc75f9fd5cf7b5c88cf881f145b11c7a56ea56f29e9c1628bbc7b +size 15753 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/teen.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/teen.svg new file mode 100644 index 0000000000..6d259f6218 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/bereavement/teen.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7cc0feb4d3ad1b5d2aac3d0ef5cf5a7be863634c4d5164e538f62916d4a4891 +size 22552 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/main.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/main.svg new file mode 100644 index 0000000000..1da18c0fea --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/main.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33acb8ebb6cb40a10937d5cc1779614b14e22822f7f9eb80dd6c0e5bcd9b898d +size 23624 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/talk_to_teen.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/talk_to_teen.svg new file mode 100644 index 0000000000..7ad3bd1c9f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/talk_to_teen.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d29617e1d10af7ba6967fc2811dc78c13a888879b41cb7c2d31b23254c215adf +size 40117 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/teen_feelings.svg b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/teen_feelings.svg new file mode 100644 index 0000000000..a94a2f23a8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/parent_centre/covid/teen_feelings.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e26cf42fc18888bb752817b56da930b94a1097f44451813caf5af7ec1ce5f067 +size 24318 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/angry.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/angry.svg new file mode 100644 index 0000000000..f4e5dd3897 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/angry.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c45cb447f7f829d9943092d3e731a7ec102cfcb46b6869ba8016768042a5c89f +size 1077 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/confused_question_mark.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/confused_question_mark.svg new file mode 100644 index 0000000000..5fd3543150 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/confused_question_mark.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5776f1b4549a38096fdb5cf6867abec2751c7dc037d65f0b3b7ae7745b3314bf +size 1904 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happier.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happier.svg new file mode 100644 index 0000000000..d45b6f9988 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happier.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2e9c4edd01b67ab8db4423306468036e60d6746b4d99a16d0f17f2a1da60f4 +size 1320 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happiest.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happiest.svg new file mode 100644 index 0000000000..f157c74f6d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happiest.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3e707d16b1d889f833b2d0c878a2f73c2a71ab9eaa87f07bc9b509030c70ebc +size 1618 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happy.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happy.svg new file mode 100644 index 0000000000..c9ab835aab --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/happy.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98e4dd22eaf6705c7fef714069eaf6387e7fc76a4b20ab9d80d92bbc008f4e40 +size 710 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/neutral.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/neutral.svg new file mode 100644 index 0000000000..7e58dd3e0c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/neutral.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dbfb9f0640a134b5adf736bc59db7500137c1e294926fcc166ace36c63c2985 +size 551 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sad.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sad.svg new file mode 100644 index 0000000000..7a65f77df6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sad.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ece88431ca29d1bb6d67b569eda112683e8d5d2ce4a100ba1eee5b2bb81a024 +size 702 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sadder.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sadder.svg new file mode 100644 index 0000000000..0265995f8d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/sadder.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e8f8661f219d5eb3896594f086425d262c6c8219d33b776d2c5787f74af73f0 +size 1080 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/saddest.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/saddest.svg new file mode 100644 index 0000000000..4921b8a86e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/saddest.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3088a07ead6557e6e50c6fc2b6644197ae829c13c3ef1c23164d3996143b191 +size 1643 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/scared.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/scared.svg new file mode 100644 index 0000000000..2ffce00b71 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/scared.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08eb935b00777973a2e183882c8b6bb8f3d93eced665cc1feedf14642093ba8d +size 1821 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/tired.svg b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/tired.svg new file mode 100644 index 0000000000..bdd55e26c4 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/stickers/faces/tired.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e210d4501fb395ba956bab78fdf2f3544bff68d2d90f9c0e76499192bc24b208 +size 2420 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/busy.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/busy.svg new file mode 100644 index 0000000000..80b0e23045 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/busy.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41dfc800b822b157f0b63a021fd14b0580b849f2f9e68078c832b1d88e4f2bc2 +size 60026 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/coffee.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/coffee.svg new file mode 100644 index 0000000000..87e4a19070 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/coffee.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b55427ae8590e9750540feb0c8e8c93d7b60a04123edf3bf53efed86198c918e +size 13043 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_frustrated.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_frustrated.svg new file mode 100644 index 0000000000..e5029d10fa --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_frustrated.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bbd59e04a10cf235496e97f20f978e3c0a51b2fd4f9066c37105a5dee4583af +size 42105 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_nervous.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_nervous.svg new file mode 100644 index 0000000000..654700110c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_1_nervous.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d0476af20ad2328af87e8644dc745eab15b1b1a9e3dd5a3799741e678dcce6b +size 16697 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_argument.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_argument.svg new file mode 100644 index 0000000000..d2441bd14b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_argument.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a777db6aadb35cfe196b2144a7145c500ec5d35a85236d3f55f32a70123f06e +size 32468 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_key.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_key.svg new file mode 100644 index 0000000000..6640d8b306 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/welcome/guide_2_key.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c20a63cd0cc8de3994185192abda77e2435cc4f58cf90fbeb28ec9e71a193aa +size 23170 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/adults.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/adults.svg new file mode 100644 index 0000000000..25712c03e7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/adults.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891b5351e4461fb93b2858e38fa964b63e8564272f2f1fe270e7bd0f396e82f1 +size 37812 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/age_image.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/age_image.svg new file mode 100644 index 0000000000..eab78e188f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/age_image.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37016c3837f5632fa5870ff47b38a90522706778da05eec34867c6a0011ed319 +size 89964 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/babies.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/babies.svg new file mode 100644 index 0000000000..6de659fd6f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/babies.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f09982a5b075f11433d55aa78758f66a050bfa1fe35564fcc5cd2f14df8633a +size 13035 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/children.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/children.svg new file mode 100644 index 0000000000..27f76a0d0b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/children.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90c953104f16ea666d7faea1916ff69ea6c1029a601656bfa4e207d1a2faf6ba +size 31960 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/high_five.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/high_five.svg new file mode 100644 index 0000000000..abce72c84a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/high_five.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db732a6d26ebb884f2d53bba1808a2819ec0bd63d361eb4c1b387825b7b6919b +size 41442 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/teens.svg b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/teens.svg new file mode 100644 index 0000000000..70fdc4e13d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/survey/workshop_setup/teens.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8d2c111290b97076bf14806170c3d230962373451d0a03ab233e7fd241aac1f +size 27584 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/cup.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/cup.svg new file mode 100644 index 0000000000..6dad04ef41 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/cup.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9ae39e10912a88045000c63da32fc66c497dc69a27002d2f906d5e630199735 +size 62314 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/cup.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/cup.svg new file mode 100644 index 0000000000..b53a9cc9b6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/cup.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72333307f6f0065641d32d89a2e2642d1a72df486c7b9fb8bd3469ecca6b591 +size 109058 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/light_bulb.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/light_bulb.svg new file mode 100644 index 0000000000..2935797292 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/light_bulb.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26ffba8e9ba5fc583a92509f514d99d5f205be4260466d11f47b3f784aa58352 +size 112546 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/relax.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/relax.svg new file mode 100644 index 0000000000..644f6608ce --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/relax.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0c508b987cbac366dcbe3e9a0f13ddd94908f15fb8eadadaebc6058f2e17c79 +size 100230 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/talk.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/talk.svg new file mode 100644 index 0000000000..0d5d4abe25 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/final/talk.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10267ac03c33324b5246e20637c0e2e25a44ce63af44f30194863da8e394910f +size 82203 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/light_bulb.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/light_bulb.svg new file mode 100644 index 0000000000..6d0fd12ed2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/light_bulb.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45aa44c3642e0e96191d898b69f1b8c7667f340210ab3bbbf0ad5c3a50ab3277 +size 65484 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/notes.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/notes.svg new file mode 100644 index 0000000000..03b17919eb --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/notes.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ac2ec2971b5fcfbf12c6353c7ca791c723b7264c4a7ca486a09c566b8a09935 +size 57718 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/read.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/read.svg new file mode 100644 index 0000000000..d43772adc9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/read.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d169a52781ad0f68fa78a3069d32de7a03f089322885c53463cbfb116122a10 +size 57226 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/relax.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/relax.svg new file mode 100644 index 0000000000..a9b29464e6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/relax.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f3ecc721ecdd6ef4d3ef87b5d45283ed09620fb50794a2ce3209e7413982608 +size 52030 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/talk.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/talk.svg new file mode 100644 index 0000000000..ea73833450 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/talk.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3de9bca70842b221ad3fac0994eb3f04632bd6a00b97641d8351fab8601c8da +size 34322 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/with_teen.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/with_teen.svg new file mode 100644 index 0000000000..44db4c0b82 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/group/with_teen.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe200ad391a8ae47a266aad18b759f0db02f73d661ab4cc7dd6e0b3f22b06ecb +size 24888 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/cup.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/cup.svg new file mode 100644 index 0000000000..17610954fe --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/cup.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:030b52359f2fe2a9f3e03835d56dfe636fd5058da8ce707edd380676425b9f75 +size 17537 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/explain.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/explain.svg new file mode 100644 index 0000000000..e57542cccd --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/explain.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9d75a188d7ab58b7bd56b6b5093e42e43a7d53edc00839fe3aa7a8055ccdb79 +size 9128 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/cup.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/cup.svg new file mode 100644 index 0000000000..04f4229b2f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/cup.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e0a1e5023c9bec09d4c900a806eb09dace55b012b267cd7e2389d2415af779c +size 36431 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/explain.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/explain.svg new file mode 100644 index 0000000000..09b4099201 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/explain.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11ad43c5fb01cc23f32a26f66dd8e19fc3535122139291a8dd0579e7cc632de4 +size 29342 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/light_bulb.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/light_bulb.svg new file mode 100644 index 0000000000..a505cf1e11 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/light_bulb.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84fcd5df92d06d52f23dc547746e0b8d5fef94e1eeab95bc3fa8290ee154bf85 +size 43189 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/notes.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/notes.svg new file mode 100644 index 0000000000..a8cc82fd3f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/notes.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ccff0c717d9a8c966a23f5585989e3cf661041e878f5803bbc0cbb9c84ead5f +size 34141 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/read.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/read.svg new file mode 100644 index 0000000000..338f1b285b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/read.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3153d4645d376108b1341c1c1bd0a6c0a1b7866df26acee2ea3aec3b9f81f74 +size 39555 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/relax.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/relax.svg new file mode 100644 index 0000000000..9c548ca814 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/relax.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a68819831eb4142a58fa09576306f4f4a125878dad6491cdbb4e246afc1f7b5 +size 47013 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/star.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/star.svg new file mode 100644 index 0000000000..fa22d1eab7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/star.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df169099576e5248b4bc6773e68330dc81b9e247b6c3892e4ec817df547220e0 +size 40394 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/wave.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/wave.svg new file mode 100644 index 0000000000..3d694e2805 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/final/wave.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc77e570d8e71ed6f9290a72dfa2080bd7a58484b46302abced27c8eb20ecec3 +size 28927 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/light_bulb.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/light_bulb.svg new file mode 100644 index 0000000000..f20a1d2d10 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/light_bulb.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c975957b246f442e4bbb99592724828c4213114a0232b37a7098bb62b4afb31 +size 23331 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/notes.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/notes.svg new file mode 100644 index 0000000000..3eb68b170d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/notes.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b874b8054e3af20151226d258a17f6ea987f35ba5f3f972f813475e9c9ef9ea0 +size 17911 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/read.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/read.svg new file mode 100644 index 0000000000..81aa2ca1e8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/read.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b123a49a6a995d0b64301d5f2aebd75650de8e9f542a07a96b29d8cc370e892c +size 18268 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/relax.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/relax.svg new file mode 100644 index 0000000000..9d27f702ae --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/relax.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e33a106c67ca21743004352efe042f3caec9dfa37d529aa498c21eef0b8dfc6f +size 27609 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/star.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/star.svg new file mode 100644 index 0000000000..cde1845bc6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/star.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceb7865b2774becf44a66aee9a1fa7279ce86960fdd1143d72f58491801950db +size 18168 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/wave.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/wave.svg new file mode 100644 index 0000000000..b368eea7ce --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/wave.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb876e414355c668fb6aace4c56e11008a5a42d7cc7cc31fcdeffcc85213dc16 +size 8734 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/with_teen.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/with_teen.svg new file mode 100644 index 0000000000..9b3d9117a2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/with_teen.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c955d445cbdcea209572f8fa67fbba9ff6c3c32628ba2122da6f8aef5039dc1c +size 42058 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/write.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/write.svg new file mode 100644 index 0000000000..98758d8656 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshop_modes/individual/write.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf164fad96cacc249b14ab1e2b07930cfb1fd5804a3ee0122f89683f2dd2f9e +size 12772 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/individual.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/individual.svg new file mode 100644 index 0000000000..20d85503e8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/individual.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8434c9e84343748527110469b4fbabe4103d47b88abc7551f44f516c17ad5cb +size 28941 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/together.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/together.svg new file mode 100644 index 0000000000..a2f590400b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/options/together.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd055fec90b8d1cc591a6be71d6f7fe560f353a37fce27e06ce134339dcced4 +size 32646 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_1on1/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_1on1/tools.svg new file mode 100644 index 0000000000..230d3bff97 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_1on1/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5309f67f48baa6f59076c6c28def60555cc34eb50c40915cf6b052d37e10338 +size 53798 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_1.svg new file mode 100644 index 0000000000..002dd51b97 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7903a2c810e12e0fc4970b6a4810cdbc601d8dbe299a831e758a3934d070516 +size 155920 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_2.svg new file mode 100644 index 0000000000..c4985a1337 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55ed866140ec9fa07ab28bf4cefc54bb26d180b667d0247431a6d9f87abbcf21 +size 35769 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_3.svg new file mode 100644 index 0000000000..3f1800ed2a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:993816dde6f64c5b338836efbdbf45e1f071c76187d8d64638dc90c4d9da0b3f +size 91735 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_4.svg new file mode 100644 index 0000000000..916fa48188 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/read/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04c8fc44d42551bdd8890b9b81607380abcfb596c2a0d895898ecb8db690eb5b +size 170647 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/tools.svg new file mode 100644 index 0000000000..72e6580a83 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_celebrate/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5339cf75ec03565ba43ddd14f2a3d0d19a85b8bed2c55c2079ea5d0e67e4cf8 +size 38343 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_1.svg new file mode 100644 index 0000000000..672e4f75f7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8e7329a12a4e457d865b84638682259d3cca2f8395b0f86a8ebff8ecd730319 +size 74173 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_2.svg new file mode 100644 index 0000000000..b9486c18e7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40a3119d7009e7b78b2d00620856ac66bf67627b924516f303a4e9f415241b3a +size 47642 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_3.svg new file mode 100644 index 0000000000..e874188620 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d6bfa3c037f5991d1752e2ef36bf2e654f4ca614767331181f3e1b844ea01df +size 52522 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_4.svg new file mode 100644 index 0000000000..b904b77353 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_1/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69944acbd69797cfd33edb5b62ba114fb3ecdbfe2c4e753baccb2e03bc51c8cb +size 47553 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_1.svg new file mode 100644 index 0000000000..5a0e34b427 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c86c0a26eae19ff71e6d4451b1afdee43e47077da1d70d6f0d6ecf5b0097a7b6 +size 74737 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_2.svg new file mode 100644 index 0000000000..375440a64a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5373d6ccc3d76b5aa103e864e044c1a9cf915a52f4e8a7edbccb573b28ff7b5e +size 47772 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_3.svg new file mode 100644 index 0000000000..fdc3f88d32 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bc34c1724f476994800b7f87edafc1b40470b566712690374a00a52bf38e454 +size 120182 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_1.svg new file mode 100644 index 0000000000..b344f44ea6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed75e07a7a4a71fddf843f9c1e68abaa87abc43864c2f8d2e1213c3b0cc22d11 +size 57318 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_2.svg new file mode 100644 index 0000000000..7180277cd3 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b62175eb76312423beba27d471c8c03ee1cd4595ebaf1ce81d6fdf8a4f1cbbd +size 62619 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_3.svg new file mode 100644 index 0000000000..99b39c65ba --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d82f4de226e2fbab26c78a27842301d62bebb0c25c307bfd1ee664a5e46c50c +size 57483 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_4.svg new file mode 100644 index 0000000000..55edcf8d7e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7885f96beca3de40b09c79340d8efd6eea93cedb534f100d90e6bb65af8ede58 +size 58787 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_5.svg new file mode 100644 index 0000000000..5697d1b8e9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22294c521ffb2031074d43e1364b7f32fbeb565475156ac9d1f5ffb32e459424 +size 67801 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_6.svg new file mode 100644 index 0000000000..fbec505fab --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89af69a509035d461a2b480dd9d303475e4c40f7e69adf7f1ae3e949f508cde1 +size 48229 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_7.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_7.svg new file mode 100644 index 0000000000..1056f54a68 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_7.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c2ab9fb656e9cf0eca969535cfb25a08c962fad93e5e69bd65eab746a229f8 +size 49554 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_8.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_8.svg new file mode 100644 index 0000000000..72d19e91bd --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_8.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c8a27befafd9a75b075fa33e191df0bad7569cbfe02d19aff34f73dde2c035b +size 48192 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_9.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_9.svg new file mode 100644 index 0000000000..296c8605bd --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/read_3/slide_9.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:852b6a908e160cd026608113776360894d650e3d69d34dc36e48017cbc1152e9 +size 54365 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/tools.svg new file mode 100644 index 0000000000..cc37321ade --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_consequence/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2b4324ea1051dccad92fb5d3be816c5f8faed55ca07a79984596e60b4ed310d +size 21742 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_1.svg new file mode 100644 index 0000000000..6fc56c263f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:468a70a14c72bd40e17ede8e4f7bdd9397fee4fc55c4b4e470bedd1474fc05aa +size 43031 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_2.svg new file mode 100644 index 0000000000..5742fb4508 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6da12487f6ae88057fdb1810d551c37586abcf8384bee99c7b8eabf40bde2f3 +size 76181 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_3.svg new file mode 100644 index 0000000000..b2434260a8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88ddc1f26b76b583cff8322551a99711ff8a9d74cf8f270d13ec6cf578efcf20 +size 39464 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_4.svg new file mode 100644 index 0000000000..ee7b94aa8d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7cb864c519c092d6b0128e885719190f21b291dad2ce2e6e6449b8ab78daa88 +size 83525 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_5.svg new file mode 100644 index 0000000000..e4e97c892e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/learn/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce976916caf46effc085c3889ec42eca4fc2d434a0d476cd141c90912115e0b9 +size 42358 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_1.svg new file mode 100644 index 0000000000..d91d26d57e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0966518d799f2c6b7b655030e9b1e98ea5f8fdda4a691f7b13b88986b68a0f3 +size 37582 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_2.svg new file mode 100644 index 0000000000..ef68ba5334 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03a2cecc152b18a547447b7fdb13a9df874a3d6490f4f5cc7fa07915fd7a7fe3 +size 34173 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_3.svg new file mode 100644 index 0000000000..d3663bad96 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a973003d9a890642012fd5b516fa8fb7a0e7ad3d9f9c3b55bacf293100a5851 +size 37501 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_4.svg new file mode 100644 index 0000000000..5b5f2db1e8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ca34d62053ccffa19ac7a1ecb097258662e421a4f1c4858face7d68b0392da0 +size 35137 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_5.svg new file mode 100644 index 0000000000..3250488b5b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5022205747be67cdd7bbb452a34a1c0deb8b39e65f55bae86b34528817af85de +size 37898 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_6.svg new file mode 100644 index 0000000000..68ba029ade --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_1/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1c111832d316980297a3326d9abea171c6b4a303b4f0b748838125c2eaf6b5 +size 28338 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_1.svg new file mode 100644 index 0000000000..148331bdf9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52257ca37c4668cae1b196f44e40d6261e57736d39dfc73747fc806b01011dc5 +size 79087 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_2.svg new file mode 100644 index 0000000000..b0f249ef40 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98410856ffd47c45ed3da77e433e31654069587eda4227c009b788dacb7fadfa +size 55880 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_3.svg new file mode 100644 index 0000000000..59b41c9030 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5b82cfbd287277551c0e76bd7aae9f279ba1afc67098f5b41d49e1c3bcfc7e8 +size 59353 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_4.svg new file mode 100644 index 0000000000..bbed5aa9aa --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81810b50c30e5514602c9cb027a395f33ce05a88af9c65ae75359f25e01835c2 +size 56874 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_5.svg new file mode 100644 index 0000000000..968d6f73f9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06e3eed30cbd0f8cf0dd7789e501d1f47a5f3cf76ab8db3fe03c9566ae795416 +size 56848 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_6.svg new file mode 100644 index 0000000000..411474101d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/read_2/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a506847fff6edb5a7bff106df3d335355503aa035c7aca0eb46779af9c1584d +size 57338 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/tools.svg new file mode 100644 index 0000000000..25c831f90b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_crisis/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff6450338726156ed48ff4dec69709a95c169f2d26b2a08e432fe0c3b1d17f0 +size 58346 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_1.svg new file mode 100644 index 0000000000..145bde3625 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a285707ee37f5874aeb88d05e1d162b4b8369a47654f1e840f21374c3c2d7499 +size 8039 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_2.svg new file mode 100644 index 0000000000..ba48f19273 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d93a0769b343f11573b6502c45bd9b3295b165c5e920e6e548e31e0ab35e406 +size 9347 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_3.svg new file mode 100644 index 0000000000..216e3e0949 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/guide_2/think/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d087314695ad2586c3e6852c93148095baf1f1ce0ec5a2d9c9c05d76544fb918 +size 27171 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_1.svg new file mode 100644 index 0000000000..c004faf63d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aae069d6fbde1b30cd8750c8097b6cb95042f4e740af3033e9c8e4aa4ec98b27 +size 48391 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_2.svg new file mode 100644 index 0000000000..dc7f703ae7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f046e2ad91d9044aaf87028364151a0c7a554e54d797edefb51725da407a09a4 +size 38302 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_3.svg new file mode 100644 index 0000000000..7e6f24a68a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5732cacd94ad0a5465b5ba836c5e4c2f718b4591bf81c0bc65354154d511e11e +size 43631 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_1.svg new file mode 100644 index 0000000000..d99aa2099e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:815c7c74da8ef728848b2ef59766cd50ecf50bf3e1bfcf91f7c4e68844597593 +size 48164 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_2.svg new file mode 100644 index 0000000000..4023a49789 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:903b15418894b6420cc6f507cd3f75d23a16805b8e431b8d6b075ac07130f04b +size 40668 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_3.svg new file mode 100644 index 0000000000..fbe38e0df3 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8634fb42ec190a3166f1d080155f8f36bfeb845ec8381d78aeb3c595b860d81 +size 44391 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_4.svg new file mode 100644 index 0000000000..3c4fadaf9d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8991ca3c5e230aaf329e419538da25dcbe9471c39b8d5e4d82350f78a14be67e +size 43516 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_5.svg new file mode 100644 index 0000000000..4be2e0995a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18f686574e5ecf7b6e461aa9a4e78aae6362e1c23c2326c7f2ec5662dbb37f13 +size 54653 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/tools.svg new file mode 100644 index 0000000000..cde0981be9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_instruct/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b54306989510bb6bd40fbe863dda8e0eab2a854c198a33110c30e0f075075776 +size 21174 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_1.svg new file mode 100644 index 0000000000..5027cad207 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44c549b9106d0587eb112dd7a20cfaca881c431f45dd777a77079dc2fc7ab162 +size 719735 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_2.svg new file mode 100644 index 0000000000..39e9bc2635 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45f03bedba7377e3aa9c130f7b1cca297082097e3bbf818ca1a8a4726b0031c3 +size 63236 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_3.svg new file mode 100644 index 0000000000..bd7725a8ea --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f0642900a82e69d2dfd6f08bec406d91b244008bfbff6d646ba104d1e01e662 +size 734299 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_4.svg new file mode 100644 index 0000000000..87b8cdef31 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/learn/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7f3ee8f53151b8bfc353f06245d3dfd578d2fddafda976756fa4cfe4f5a15f7 +size 738877 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_1/slide_1.svg new file mode 100644 index 0000000000..333c90a9de --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9526819afe9fd82319da4201eef777a562e8759ed4030aa65d359afae78f8f2 +size 45980 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_2/slide_1.svg new file mode 100644 index 0000000000..19dec84595 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28daa99aef1c0dc1d78e5accd86d1609359b08539ecc5129cd6ae11b403813b1 +size 39789 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_2.svg new file mode 100644 index 0000000000..b5207f46a4 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1447ae926b1d66cc91107c7798ad4cb1b69c691eccca2efeb142ef5ee96b1a2a +size 36154 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_3.svg new file mode 100644 index 0000000000..deeb95209e --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82aaf58bd4bc46170f326301b3a2ac79dbffc97e50646bda285fc6fead675429 +size 66524 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_4.svg new file mode 100644 index 0000000000..5d93487737 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f9d1d1b4ecfc5beceaa48c04819521933824690708d200cdd73a5b2eff4eb16 +size 18261 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_5.svg new file mode 100644 index 0000000000..1d08aae874 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04e5510cfcd33429bf2259d07016aaaf7d8d83c7aae8b0a2d081ffd39ffaadc2 +size 59635 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_6.svg new file mode 100644 index 0000000000..24abea40ac --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_3/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50e1d8a5073c763625d6a452dea1e2656bca3afe21f9bc707f1f971e94fb1680 +size 53169 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_4/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_4/slide_1.svg new file mode 100644 index 0000000000..d7fa72ec5b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/read_4/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c00a20b40e90baf2f6d6efa299c718df4104048fb354443b7573eda2c973ab0 +size 48202 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/tools.svg new file mode 100644 index 0000000000..3385476b11 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_money/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16f69c9c8479138873506c1204cf03f9335f388251fa829f5be9c5b88010a656 +size 33803 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_1.svg new file mode 100644 index 0000000000..a7ff5b2b29 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb6640e8cb240b8c6f5d06ae4e18c2a8bae0722f1b622dd0428a659d61a2d14f +size 168749 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_2.svg new file mode 100644 index 0000000000..3858f08ac2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/read/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1678b7d5e9cc9c5e818b92f64293c4ad425025f3482990fd61bf6b2cf9c2e69a +size 45839 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/tools.svg new file mode 100644 index 0000000000..0268b6bd94 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_praise/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1fe6d39439b6a00455cb6cfe97aa4de31c453cafe02853e3710312c20a8b6ae +size 32770 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_1.svg new file mode 100644 index 0000000000..e9769de76a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:510358357cccbced8ff9dfe889dd2937b0d39caca5a04fa7ea56b2e0079abcb5 +size 31235 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_3.svg new file mode 100644 index 0000000000..0452fc1650 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a39184babbcb00dc3765e4be9a6f2639a5e5d6318c3a0d707f788f134d61d23 +size 32885 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_4.svg new file mode 100644 index 0000000000..0a0cb079f1 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f9ed1fac8b7cb3ae35e3b093fc8d794324d2d6985684eb36b016296a78d464 +size 30331 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_5.svg new file mode 100644 index 0000000000..f1783333bc --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:908cf603bc8127ca6477b5a375783d22c3c0ec6ca3471a371b3ddea152c4f4f4 +size 30229 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_6.svg new file mode 100644 index 0000000000..a79c805229 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1760cadc9be721ed6e0c8473b49f9b9e84259a326176e614ebb3372d6ec7d0e5 +size 28386 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_7.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_7.svg new file mode 100644 index 0000000000..3e1c92a0d9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_7.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09ea8f0ce8171adfefaee27a077ae05560229f7aefe76961e91be4549b12dcf0 +size 23864 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_8.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_8.svg new file mode 100644 index 0000000000..571763b155 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_1/slide_8.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:056c692729a8fff22defb5e2469567344e1c900b45ff1cf5841155bf88dcccc5 +size 36051 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_1.svg new file mode 100644 index 0000000000..8fbe8e9932 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:689a7522c570a5ab18300a0311f5ef524d7f6495c568d4bec2181ed1d1fbe60f +size 427768 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_2.svg new file mode 100644 index 0000000000..8daeaf83ed --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f7a4090433678eb201c6f07cd1b33899a702b7ddfe27d3a77b78c87321b860b +size 238906 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_3.svg new file mode 100644 index 0000000000..2407fde099 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf1d7db6ffd3b39b697640409f92644fe31186cc07b3216f00ca17e37361dff3 +size 237292 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_4.svg new file mode 100644 index 0000000000..73d3a8b587 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:654614513f3476f8b84a4b10f3d0a846c564fd1dc2376dca85f69689dc58d7ac +size 168600 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_5.svg new file mode 100644 index 0000000000..513ec59351 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf1b1715a8580675021ca84cd019d529dd59d8e9b4ec1f2e31b48e916b65a33a +size 433530 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/tools.svg new file mode 100644 index 0000000000..27934e8120 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_rules/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b2e419cc337936098b4ecf6b4b6bf5849c8bb38c17a0a9c09c525b8277c260 +size 42194 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_1.svg new file mode 100644 index 0000000000..780ff7d089 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c397e6d3f14d47c8be07d2f9d5e1c56d36ab73f40e8b960ad5ada060353ef2d +size 1398175 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_2.svg new file mode 100644 index 0000000000..8ffc2d9d4c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b77e530dc61e3c0c5490a91b350fe782399773c3029a5540244dba74a57331 +size 1597793 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_3.svg new file mode 100644 index 0000000000..b42826c382 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46ad981c5ffdf0def251df83156fa795bde047d2998353195ba83d3fa64e6185 +size 2039651 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_4.svg new file mode 100644 index 0000000000..de6504a447 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/learn/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4db6e5ed876875ff1db7db4c5fe528dade4ea730384505fc1e2f1da30912f2b7 +size 948661 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_1.svg new file mode 100644 index 0000000000..826cceac1f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9e2ad0899d5b88f4135abd3f524573f7a8ee6e9a98237c51de3953b92c7a907 +size 33309 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_2.svg new file mode 100644 index 0000000000..11a25db18a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4b8e5f197109449a4a3d617568d925418407ba506062ec3175797ea8bb8df3f +size 70298 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_3.svg new file mode 100644 index 0000000000..b609370a5d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49105cf2b5c3151e9200ac70bfc4edf32db630e94fbeb42d71bdb57de0e36ce3 +size 65847 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_4.svg new file mode 100644 index 0000000000..8084e208d2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fcf207f447ec032415ff4a152504d57cc7dd4d8a9cf461ab8f929bed637b6c0 +size 41992 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_5.svg new file mode 100644 index 0000000000..5da9c9feec --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:468736a90759b4eb4fd98c0113b373299c1d612f1180706a69caac21bcb4869f +size 42020 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_6.svg new file mode 100644 index 0000000000..409d191d05 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_1/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa82819dc4641df34f30e09925418282a58706acd7a9007deb049b3c335816b0 +size 33625 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_1.svg new file mode 100644 index 0000000000..0640960bf3 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4b35c5ea3e6eae0086a973b341d5d63c11133cc9beedb232891bed4cd6925f7 +size 33008 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_2.svg new file mode 100644 index 0000000000..c1313658be --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:431af52d0c5d3189d3b17dae2e956e627e7894b00f63308f2c4eb50738781023 +size 35791 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_3.svg new file mode 100644 index 0000000000..28494d45b3 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fcaa09e25b4e1d0539b9b91044aff332dad057d6276cd7741f92d3e02e370cf +size 33793 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/tools.svg new file mode 100644 index 0000000000..7ea7665afb --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_safe/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abc4b5ebb89be5dee82820e7f7e985854133a5529471d533fc109362d6ce8494 +size 23510 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/recognise.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/recognise.svg new file mode 100644 index 0000000000..cbbdb61982 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/recognise.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cc97ea96f75868bece2e277b75f6104fb1c47d468500aabd27b80d1ef9ca03f +size 35574 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/reward.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/reward.svg new file mode 100644 index 0000000000..2132caf4a7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/individual/reward.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42f0f86d2574eb6b789fdbc3685fd195c903999acd29a52b21989a4a080ecf70 +size 28599 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/tools.svg new file mode 100644 index 0000000000..be260658f2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_self_care/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74c819b7475bfc5b7931fd0e20214ef555276fd3a10630c526c4744f9699f8aa +size 10618 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_1.svg new file mode 100644 index 0000000000..c46ba55a0c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d190bfb7fcb75ac63b432186ae9e45324c13fea3df7e4c3f1d5ee10a9085c22c +size 36427 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_2.svg new file mode 100644 index 0000000000..7f0bce9bd8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e89b744bb3140de37450ca0341816df9bf5ae692657c79c66624ce8081d17564 +size 34157 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_3.svg new file mode 100644 index 0000000000..ddfc7c0618 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16321b071fd06a3b9a0def985b910894dff7ec797a0a06995564dcb08470b95f +size 34394 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_1.svg new file mode 100644 index 0000000000..ae0d9f9d27 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef9184add3ea93aa92b01b2e7bcac0a90876066c9052ffff0042372292a8b90b +size 50371 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_10.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_10.svg new file mode 100644 index 0000000000..3354619280 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_10.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a4724b501d7686fe819a88de9a20ffb13e1747ce608c3df4df834e80d016b4c +size 26535 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_11.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_11.svg new file mode 100644 index 0000000000..0b6b4b8c5c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_11.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d77dee2b84222c1f8e26fb0ecf6f5fdf4b4545caac0bab6682809283eb0cf5 +size 35378 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_12.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_12.svg new file mode 100644 index 0000000000..418dc8e71a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_12.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d903d2ee33c47d4d26145e5d6da9e9b1b7702aecedbe92abd4b5f31ad083c09 +size 26318 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_2.svg new file mode 100644 index 0000000000..1c0799bbfa --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c0dbdd89549db0593b180ca1608e7753086ef6b3d73e8d9dc360655edfa3643 +size 47424 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_3.svg new file mode 100644 index 0000000000..5868dfa763 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f903c859bc038b1469c6075f4a38ef9537f36f4377e9ddfef53d0c44a75cc411 +size 61006 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_4.svg new file mode 100644 index 0000000000..437f6f8d9f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad02f64da51f784dd195b035252249c05f8b1710ff664a2b6fd58b6644e7e8e +size 30521 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_5.svg new file mode 100644 index 0000000000..10a4298557 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8ac18ea0cbad6780e69aff933f120f9273441f5ee5269665bb60bbabfaff4af +size 33928 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_6.svg new file mode 100644 index 0000000000..f58fe28242 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9f0f67d69d4e408bde0ec2fa207475173c98d75dda2e13092b5ff0a4e020ed2 +size 34569 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_7.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_7.svg new file mode 100644 index 0000000000..f7115f9081 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_7.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:806bb5c28c33801f3e9ce04e84d7dc6d5837e89e63974ecd515c354f7a294860 +size 35531 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_8.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_8.svg new file mode 100644 index 0000000000..6ad3189032 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_8.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85b540f766bb83cf2d198587294aeeb7f7f2868661c51a9ec26ad48404b3d15d +size 39233 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_9.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_9.svg new file mode 100644 index 0000000000..11abe77132 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_2/slide_9.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f8865184732a160fbc5f53f3be899926ce5a4cd940f7af8b66745653a4f6991 +size 34279 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_1.svg new file mode 100644 index 0000000000..46695eeb4d --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b21bc0863f26e9899d68dd3505971ff0939c9f17f57ecd63206ae11081259776 +size 32247 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_2.svg new file mode 100644 index 0000000000..fd9bd1b6af --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5b161758cb7656308adff76c3faefcf65a4f022046680393d69713bcf9d609c +size 32634 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_3.svg new file mode 100644 index 0000000000..b2f5207f5c --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/read_3/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f01303624ca6ffb36c53c7e96cf17189d87edbaaf42fba1a8baa75cc69f4a779 +size 32059 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools.svg new file mode 100644 index 0000000000..64a9131136 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baab954810043cb3fc546829ec0149481a3128e72ecf9867b79fd81f23c2ea1c +size 52566 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_1.svg new file mode 100644 index 0000000000..6c52586d77 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acbcf9702a32bf08914574b57da965c1312d8db4531f7577a31270c0f9c3f612 +size 43106 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_2.svg new file mode 100644 index 0000000000..558651e119 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d72a0da6273e60b83c042761c3f26450aa35adc57ed2fb7ef17e0ffc68ed3c91 +size 77113 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_3.svg new file mode 100644 index 0000000000..1bb1c9eb55 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0af3d2adf090cdfe3bfef078b66e35b3f7814758293004e21f6b3a9a94d98096 +size 40383 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_4.svg new file mode 100644 index 0000000000..bac82544e6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_solve/tools/tool_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5df64e72f6890cd7dcfd09580d28debfa742b205abc42b45d6f4e079970a175 +size 34227 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_1.svg new file mode 100644 index 0000000000..27e73d5d01 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad5c7b8cfa705c62cc46dee45bcc0d89c07b94062ba5d51693f0c9a988b499d8 +size 62610 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_2.svg new file mode 100644 index 0000000000..792c4691a7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e7aa836b34f650349ea29f4f167902f262aef2e330915c9d70a536cea0278c0 +size 77111 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_3.svg new file mode 100644 index 0000000000..ce3712be1f --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0b0bea0361cec284c55d241bbbb8e9c0f4efff3dce5e913c05c365b45106319 +size 55974 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_4.svg new file mode 100644 index 0000000000..a2900b4339 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ca8e13fa200711bcf24381ba582a403b79da087d4f36db6c462213345f068e +size 249588 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_5.svg new file mode 100644 index 0000000000..7bd810929b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ebe88e6af34b9069060de698a3338da713d247be3b219cf2ba218451cfcc256 +size 233875 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_6.svg new file mode 100644 index 0000000000..8cc8719448 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_1/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:502491a767375f2f18e3d9488b615b3ff097cd608674480e748f7008162ab130 +size 74056 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_1.svg new file mode 100644 index 0000000000..6b489aafc2 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5723e6d98647aed783dde7137fbf19cf22550abaf9eb2aa4378c23ed6698969 +size 62086 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_2.svg new file mode 100644 index 0000000000..7ece8c69dd --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ed402367f8bb936c8c57a9832bf4af13a65be4982cccbd3d50ad6d48f4c3123 +size 76919 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_3.svg new file mode 100644 index 0000000000..463fb0c525 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e34e66d82a3d3fffe16706bfbb3511fb55292a1b9a0e1653842a77d5cf1b9bfc +size 60838 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_4.svg new file mode 100644 index 0000000000..5d593c273a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:674d7d575a087ef20733ce6c5a2cb827a2f2d2f5ce863ae530dc9eebc317ef16 +size 56647 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_5.svg new file mode 100644 index 0000000000..767b1f16f6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_2/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de9fa622976a31fb43ad099a8f59d74e25e681b950cbf2ee6d132fadd2a57fe0 +size 56975 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_1.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_1.svg new file mode 100644 index 0000000000..7df757fa2a --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_1.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a1035c90b69857dd94da98781c8362b4282706b826e82744f35baee7e6d2c6c +size 24921 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_2.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_2.svg new file mode 100644 index 0000000000..4ab65821b6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_2.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a55cbaa08cd51cf88a0d6fd0110c7816374f2f8ce98aef6ae8a4bb0a1df00da9 +size 43016 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_3.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_3.svg new file mode 100644 index 0000000000..67f4c140a6 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_3.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75f00888926276a8cdf34f6f1dd397a5a698d6c83ba414fd9fc3cda36b14a99 +size 39436 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_4.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_4.svg new file mode 100644 index 0000000000..e2b04738d9 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_4.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cba1a66b0d75cc5bfbb57077658a75f38f59496cdf6ca34567900eaa5cb3e3b7 +size 106010 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_5.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_5.svg new file mode 100644 index 0000000000..3718f563d8 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_5.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e779729d0beda7d71e2cda2bc078362b194cab82d0b103bc5e6ddf681540c6b3 +size 73116 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_6.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_6.svg new file mode 100644 index 0000000000..69a7a799f7 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/read_3/slide_6.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdf4987ed374061e7c5c50188ff8e638a7d5c01cdc2bc8a4887545cdae42b4b7 +size 59187 diff --git a/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/tools.svg b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/tools.svg new file mode 100644 index 0000000000..67800062b3 --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/plh_images/workshops/w_stress/tools.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09b16e3fb328187c11bfd321788d8b01d16ba6bf4c53047938fe973c00e64eaa +size 10512 diff --git a/packages/app-data/assets/theme_professional/global/quality_assurance/debug_theme_language.png b/packages/app-data/assets/theme_professional/global/quality_assurance/debug_theme_language.png new file mode 100644 index 0000000000..7ac80a592b --- /dev/null +++ b/packages/app-data/assets/theme_professional/global/quality_assurance/debug_theme_language.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09046471471fcde921755ef58244dfa767d4c6485a04b18bb346efb7eda9556e +size 24080 diff --git a/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/debug_theme_language.png b/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/debug_theme_language.png new file mode 100644 index 0000000000..a673a2cd52 --- /dev/null +++ b/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/debug_theme_language.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0134fea0123f1cdb4f7f19bcd6c103168d774d5acfc5d1f513b5aa7242953033 +size 22901 diff --git a/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/test_folder_structure.png b/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/test_folder_structure.png new file mode 100644 index 0000000000..3a829c8513 --- /dev/null +++ b/packages/app-data/assets/theme_professional/tz_sw/quality_assurance/test_folder_structure.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f40b7f71eb61e15baa517c9d3fd74a07dfe5eb757f99ad6148a39b0e22ac1c36 +size 4607 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_1.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_1.mp3 index 811e898dfd..605eb14bc7 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_1.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_1.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9918b22682eb9a270d6fc7290b20beaa04812fbfbf83f269ed3996fb7fea3e93 -size 610605 +oid sha256:8f771c4b267f920dc86ca5e6ca72c6159e3d9f865d6c869af2c8f97704a1782b +size 364773 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_10.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_10.mp3 index 4245241d74..ea2de99662 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_10.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_10.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:32fa56425f2dd4ae4665396020caa31766f52434b1919c137c90125b43fb1b34 -size 869805 +oid sha256:31f16b10eeb8e2d22cd6cfe689b78a65593d2a0fc51ab34a8b5f8c9fd0e07600 +size 741477 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_11.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_11.mp3 index b792397060..1b4b6661e6 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_11.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_11.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29c8b4b8f324e86c4dbf69d335f1dd6ba86ffeb7a1ebece3c54aaba1ac737547 -size 627885 +oid sha256:b5c207e89832100a7fc07fffc7cd1a8cc5512e413d9db44a9bb6ec4666b220d5 +size 410517 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_12.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_12.mp3 index 7ac3dd7d2e..f3381d610c 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_12.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_12.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24e9d012b581867d9c53954f8f98743231e22200e3d18fea4ee8b12b011e8a96 -size 928173 +oid sha256:f99b76f3b4458cb58285be6017a6b49f2dd8e081e919fb95a15a567a89368d93 +size 1051630 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_13.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_13.mp3 index 996f922d46..f8563ca61e 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_13.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_13.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58cac1c5c6d266416cb5a870d5a8f7c40d36e3b8f593327da2d73fd61584c373 -size 874413 +oid sha256:70acf1bb62414281c83d2a0388e63ea13ab41eab9c361475b19d5cb887b45386 +size 682221 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_14.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_14.mp3 index 401df1693e..3e42b2bdfb 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_14.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_14.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bef3519560dd73cbebdae57f8f082295498cb8e5e8f386043a6b15b5c711c499 -size 384045 +oid sha256:27cde2de0e860addd40294628f098b8a7b735e95e36eb7146d49d4a867d567b5 +size 737134 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_15.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_15.mp3 index f36b7704dd..f6b1dd9453 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_15.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_15.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbcb6f30e7c71f51f56f418b795dd571382f123f5b78d054edf9cff8859fa634 -size 592173 +oid sha256:997a471d81b1fbda9f1bf25b52a356273ceaaaf8b42621cff2890aa30c4c5534 +size 1025422 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_16.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_16.mp3 index 04727767dd..418e5831a3 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_16.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_16.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8c79e62de5892c3a494d712b6bbcee2ea45d5c70c26056dc6ae6451af46d2ac -size 627885 +oid sha256:8d4e61fa4b67c1d25068d595c648cddad104732274fcb209cb0cf6586655f624 +size 992685 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_17.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_17.mp3 index 2a413a96e3..55f8eed394 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_17.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_17.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:906ab952ae26f86dfd261240c34446750a5fe3a12f60a3b26a77f8deed8e8185 -size 576813 +oid sha256:695078ee786668eefec3060e4f5755a7e142991adae87ce7cb4983396376bd83 +size 389973 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_18.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_18.mp3 index dc75cde7f9..4a90a470bc 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_18.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_18.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:70f593e799977e66df9e04e233a3b2adb41a2e2a50f799ebb4f50181dd1b37d6 -size 1271085 +oid sha256:f190274f5e2e86e393a0735a6300549d05ede6f7f7439b3ddda07348932361b7 +size 974757 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_19.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_19.mp3 index a2727f2c77..02942b5a46 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_19.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_19.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f01fd9c9eb24a3a970193627b9b4b15ec7648c94754b81c2dba8dadff36aac8a -size 1749933 +oid sha256:8665679f000bed8a2a10887a616730c8e76144961dca39e852d8bc527048dd0b +size 1749598 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_2.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_2.mp3 index e07ff20fe9..a78c4fcad9 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_2.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_2.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fdec082e2890c4c920a3213bd8e8d6c16da5adf4d6b6d53a5039b233298b211 -size 849453 +oid sha256:1685726c389065279fd03fd5e672ca733a0a9113352c8cac4275d230214a53fb +size 773013 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_20.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_20.mp3 index 48a0fe4d75..a9b599368f 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_20.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_20.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45d7c1c28bb35002ec7dc839d382ef38c580085b49a1501eff36b63fc7e587d8 -size 1563693 +oid sha256:8867bbca62302d12344910d3366202d3c9cb023c00ba26cd1f551746fb7ecd42 +size 1904638 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_21.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_21.mp3 index 554fa6940d..7dd73bf6a6 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_21.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_21.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abc6284cd4e121ae7690c76c2898344ab60fc7ba3d9f69f19cf5334a2e8bac9c -size 549933 +oid sha256:2fec85eaa23c7276d07287c31258633e179a2a344f1eed5cee985e6c2210c8a0 +size 787341 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_22.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_22.mp3 index 2ea8963461..044c4fe217 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_22.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_22.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4a5773f22ca4473b2633fa4f91efbace84e753e98625590e10a9d8f8c18e05e -size 349485 +oid sha256:70f50ae2ed924e913b12eb4ac93e969054ad8c045e29dec60c755f0382579894 +size 547821 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_23.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_23.mp3 index 827ddfb8dc..5fdec67406 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_23.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_23.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7353ff2cf175d2392fe151c68302b813187e2d18323cd0b9b5df2e1a44478c2c -size 407085 +oid sha256:0d7346fe0049b84ed26d075b0fdd874c9388de54d88aaafc3dc51ce59d6d2885 +size 652750 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_24.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_24.mp3 index 7eeefb8102..12d8b6ede5 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_24.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_24.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:721a08e170d90dae3fc786900ed81bfb0e082338fba379c2dec7d730ed2473ef -size 359853 +oid sha256:11da8aafff50943b311e19c2d6c88cd21aa770792b706f5494a9ec82231536a9 +size 423597 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_3.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_3.mp3 index 98958e44e4..1b9687a89e 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_3.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_3.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28e2cce6cd30f89433aa16860000ec62b0b56acf0cc726f9572f8f662603a903 -size 309165 +oid sha256:dae02693f5986e379addd0a480df6661e6d398acf699bb19539407cb84e9bf81 +size 357334 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_4.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_4.mp3 index 7f262c9c6c..5e74a4442f 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_4.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_4.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1353c72828930141dd778e25a88fa2cf69581d6722511da611f9767aed494a36 -size 693165 +oid sha256:f0a1a62dae7f6884ef94e5d271b9d50e39d47c3c47af2b29614a784280cb939f +size 821326 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_5.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_5.mp3 index e5781c09f7..fb5c730dc9 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_5.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_5.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:42887028bd013813524439e78d03e19ba6ce3d809e1b419c6a05a3f3207f43f6 -size 367533 +oid sha256:48cbdcdca5b468834f7ceb890fdde614163f27a22c64249728a42b6303d5bb56 +size 474766 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_6.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_6.mp3 index 62d8376bdf..1275e008bc 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_6.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_6.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97256584bf4a11ad94b94ac3be0e685221dd31e07e37bc66e75c1c1d62387dec -size 450093 +oid sha256:e2121de93319f08c61fcf616fbb34a373e766238ab450c5e32a7ac0df6f5c377 +size 485805 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_7.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_7.mp3 index 7c49d0f3df..15c07cc5a3 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_7.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_7.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:de2ec23d5b1e2e0b017b175672debc11554798eaf6fb2182f36dae5e22c52ee0 -size 434733 +oid sha256:7cb88f7e6ae1220b40818cfb9ea8f790d23fffe26a07b178010dc22242b8ca81 +size 596302 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_8.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_8.mp3 index a01f9e6f7a..dfca829c70 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_8.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_8.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:10fda7db21e0bb0f713fb1a9dc765809eac4bb4dafa89c5fb11ad5e6e4194275 -size 511533 +oid sha256:9e04e075880852f3a3534e432a1237fcce907dd008e23e5603e88f01f3b282c9 +size 621910 diff --git a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_9.mp3 b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_9.mp3 index e33a65bc74..b1ba35912e 100644 --- a/packages/app-data/assets/tz_sw/plh_audio/relax/relax_9.mp3 +++ b/packages/app-data/assets/tz_sw/plh_audio/relax/relax_9.mp3 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fbc759424158da10c2b3a3cf3001844efec14a594ce33fb041466fec012cd727 -size 1164333 +oid sha256:3ae4c32bcfdc0ab91ab9357f04744647f6269548fbe6249927018feca52915f6 +size 1085205 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 new file mode 100644 index 0000000000..2d4f80a3f3 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e202291baad8260651a6a4a2202e7933a1deac430cee3ff2ad5ad70ae3dc63a +size 986925 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 new file mode 100644 index 0000000000..e015e40dfe --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef93cd14a2b510427499f5e4587ee01a1b13d026091d666f23718db0afa1ffff +size 1054125 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 new file mode 100644 index 0000000000..5a65092fdb --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc4a549a0e5227df1b54ad889cc622075e95c28b0ff7bda8d432cb82d14cfd4a +size 510765 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 new file mode 100644 index 0000000000..9ae6137116 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e09df11d6a6ffc34ff523e741a40e6589d72f3dc22e5919f942bcdd80c8e8ee5 +size 841005 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 new file mode 100644 index 0000000000..ace81b1e32 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d730fe5b5a66162893b245f49388c6e2e881bfa00da5793415450d8c5afd490 +size 896685 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 new file mode 100644 index 0000000000..1f8348512c --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70d3cdfe3af36a98c36763ea282ca577af650263f71cf36bc4bf7d8eb1fe5e0b +size 816813 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 new file mode 100644 index 0000000000..5d7207e5e8 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9688a67269b8f378332fffb6cd0d5c851a505dc895e0c7f7cdb0c1ca1cadc3e6 +size 1115565 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 new file mode 100644 index 0000000000..8099702320 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62b8d3072c3f115ae085ada254b0dbe645513bedc5b32008dd8799b1b4d5b05d +size 846765 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 new file mode 100644 index 0000000000..a90e7b11d8 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04eb1c2981e5c78709f29ab8fe3ecc1b290ddbfa1392f22d04e73f09c4b86967 +size 682413 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 new file mode 100644 index 0000000000..27b655599b --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0051b3d9ff93f414685b6a33606b15d8959a7510ead7a817f098cd2f2d6959cb +size 699693 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 new file mode 100644 index 0000000000..b8c81524b1 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d283e9a93105c106adaa1b9367361638c1113133473c014d1bbd5997b0cd326 +size 626733 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 new file mode 100644 index 0000000000..f53ac1e001 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_1on1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17fb2fe967ad5ecfc68a997f4078ae9396824f92a719a8324138ea167a1f99aa +size 870573 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 new file mode 100644 index 0000000000..b76327c74b --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_consequence.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:653594b8fffeb9b04e33df7fe5af17c51c92704300f3263b7f46aa3437486a18 +size 732333 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 new file mode 100644 index 0000000000..ec66082fb9 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_crisis.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fcc2bea357d699857281c1b55cf4f62e129b59043ede2bde1f1897d0ffe2342 +size 680493 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 new file mode 100644 index 0000000000..1bbb6b21fc --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_instruct.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39ec7723db932a6ee3e8003fd48734a5dcd568cfd85012ebf37b64b8c4b7a8e3 +size 895533 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_money.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_money.mp3 new file mode 100644 index 0000000000..a07b74b7d9 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_money.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7237a61570f321accbc5cb8b4b2e8931c5f19f3a850792a6788369d4c878cb54 +size 1099053 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_praise.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_praise.mp3 new file mode 100644 index 0000000000..b048cb1a3b --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_praise.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cec7a60bc1c28556faaf5e6d2b090f9da5e7545cf5432401deeec8f93cb6635 +size 965805 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_rules.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_rules.mp3 new file mode 100644 index 0000000000..ef1b5a0c67 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_rules.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26064b500128f4caf56a444490db520c31a71598816aa21ea50bbb403020eb89 +size 689325 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_safe.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_safe.mp3 new file mode 100644 index 0000000000..6de73a5498 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_safe.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4941d10e6cdae84820469be2fa65712966e9a6aff8e5f4a979b17843a1b7aa1 +size 745005 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 new file mode 100644 index 0000000000..cb96661112 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_self_care.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe399dcc3afa21a3f8969e43ed516546e3256794f250b56336d47f4464d82dbb +size 725805 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_solve.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_solve.mp3 new file mode 100644 index 0000000000..d829175481 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_solve.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cbf1f9a0977df63e93371229db0c1830a9f128dc5a675b37da520f94935cd65 +size 822573 diff --git a/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_stress.mp3 b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_stress.mp3 new file mode 100644 index 0000000000..ff7e83e2ba --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_audio/testimonials/teen/teen_test_w_stress.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44d83232bfa6e845b43b9bbd75e2a92611645572cd9045538ec764e6addc092f +size 703533 diff --git a/packages/app-data/assets/tz_sw/plh_video/lets_slow_down.vtt b/packages/app-data/assets/tz_sw/plh_video/lets_slow_down.vtt new file mode 100644 index 0000000000..063e576048 --- /dev/null +++ b/packages/app-data/assets/tz_sw/plh_video/lets_slow_down.vtt @@ -0,0 +1,110 @@ +WEBVTT + +1 +00:00:06.592 --> 00:00:09.549 +Wakati kila kitu kinaonekana kunaharibika + +2 +00:00:09.549 --> 00:00:11.901 +Na huwezi kusaidia isipokuwa kupaza sauti + +3 +00:00:11.901 --> 00:00:14.794 +Wakati kuchanganyikiwa kote kunaanza kutokea + +4 +00:00:14.794 --> 00:00:17.343 +Kumbuka kwamba unalo chaguo + +5 +00:00:17.650 --> 00:00:19.890 +Twende taratibu + +6 +00:00:20.450 --> 00:00:23.052 +Vuta pumzi ndefu + +7 +00:00:23.591 --> 00:00:27.983 +Kumbuka tunatakiwa kushukuru kwa kila kitu + +8 +00:00:28.839 --> 00:00:31.146 +Twende taratibu + +9 +00:00:31.806 --> 00:00:34.240 +Vuta pumzi ndefu + +10 +00:00:34.480 --> 00:00:38.909 +Kwa sababu siwezi kuendelea kukupenda zaidi + +11 +00:00:42.301 --> 00:00:45.410 +Unaweza kupumzika, unaweza kuhesabu mpaka 10 + +12 +00:00:45.410 --> 00:00:48.210 +Cheza mchezo au fany kitu flani cha kufurahisha + +13 +00:00:48.070 --> 00:00:51.040 +Unaweza kumpigia simu rafiki, mtu flani unayemuamini + +14 +00:00:51.040 --> 00:00:54.227 +Kumbuka siyo wewe peke yako + +15 +00:00:54.227 --> 00:00:56.558 +Twende taratibu + +16 +00:00:56.558 --> 00:00:59.520 +Vuta pumzi ndefu + +17 +00:00:59.520 --> 00:01:04.408 +Kumbuka tunatakiwa kushukuru kwa kila kitu + +18 +00:01:05.197 --> 00:01:07.779 +Twende taratibu + +19 +00:01:08.298 --> 00:01:10.444 +Vuta pumzi ndefu + +20 +00:01:10.444 --> 00:01:15.464 +Kwa sababu siwezi kuendelea kukupenda zaidi + +21 +00:01:16.530 --> 00:01:18.940 +Twende taratibu + +22 +00:01:19.110 --> 00:01:21.579 +Vuta pumzi ndefu + +23 +00:01:21.579 --> 00:01:27.344 +Kumbuka tunatakiwa kushukuru kwa kila kitu + +24 +00:01:27.344 --> 00:01:29.851 +Twende taratibu + +25 +00:01:30.411 --> 00:01:33.011 +Vuta pumzi ndefu + +26 +00:01:33.011 --> 00:01:37.763 +Kwa sababu siwezi kuendelea kukupenda zaidi + +27 +00:01:39.053 --> 00:01:43.544 +Kwa sababu siwezi kuendelea kukupenda zaidi + diff --git a/packages/app-data/assets/tz_sw/quality_assurance/debug_theme_language.png b/packages/app-data/assets/tz_sw/quality_assurance/debug_theme_language.png new file mode 100644 index 0000000000..d643c3a8dc --- /dev/null +++ b/packages/app-data/assets/tz_sw/quality_assurance/debug_theme_language.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf5fd8b265788422bc5f3f4fdc5d2d9240efcc77bcb44e07691eae3a2a7a196 +size 22163 diff --git a/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_folder_structure.png b/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_folder_structure.png new file mode 100644 index 0000000000..ae4a489742 --- /dev/null +++ b/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_folder_structure.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4b4f47a98c3d63ef0b14f77c3615b023576392cc66833116acc195fe6ac216c +size 4772 diff --git a/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_image.png b/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_image.png new file mode 100644 index 0000000000..a673a2cd52 --- /dev/null +++ b/packages/app-data/assets/tz_sw/quality_assurance/theme_professional/test_image.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0134fea0123f1cdb4f7f19bcd6c103168d774d5acfc5d1f513b5aa7242953033 +size 22901 diff --git a/packages/app-data/assets/tz_sw/theme_professional/quality_assurance/test_folder_structure.png b/packages/app-data/assets/tz_sw/theme_professional/quality_assurance/test_folder_structure.png new file mode 100644 index 0000000000..4da24213b8 --- /dev/null +++ b/packages/app-data/assets/tz_sw/theme_professional/quality_assurance/test_folder_structure.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70145f5549ab2d917c0c7d5ecb95abd97c0f7fc87a9ee1c55e9acc1ad16cae8 +size 4901 diff --git a/packages/app-data/assets/untracked-assets.json b/packages/app-data/assets/untracked-assets.json new file mode 100644 index 0000000000..011fb11bc4 --- /dev/null +++ b/packages/app-data/assets/untracked-assets.json @@ -0,0 +1,76 @@ +{ + "quality_assurance/debug_theme_language.png": { + "overrides": { + "theme_default": { + "tz_sw": { + "filePath": "tz_sw/quality_assurance/debug_theme_language.png", + "md5Checksum": "d851eef52c8d12fdbf0497210961a407", + "size_kb": 21.6 + } + }, + "theme_professional": { + "global": { + "filePath": "theme_professional/global/quality_assurance/debug_theme_language.png", + "md5Checksum": "4bc61051e4d1a8e6cbb74902ae3dde88", + "size_kb": 23.5 + }, + "tz_sw": { + "filePath": "theme_professional/tz_sw/quality_assurance/debug_theme_language.png", + "md5Checksum": "cbf87a2865550f4d0330af13804383cf", + "size_kb": 22.4 + } + } + } + }, + "quality_assurance/test_audio.mp3": { + "overrides": { + "theme_default": { + "es_sp": { + "filePath": "es_sp/quality_assurance/test_audio.mp3", + "md5Checksum": "a53e8b35c7985e051a7b9b9742879b03", + "size_kb": 33.6 + } + } + } + }, + "quality_assurance/test_folder_structure.png": { + "overrides": { + "theme_professional": { + "tz_sw": { + "filePath": "tz_sw/theme_professional/quality_assurance/test_folder_structure.png", + "md5Checksum": "60cc489e7e1e510dbddd435957ed382a", + "size_kb": 4.8 + } + } + } + }, + "quality_assurance/test_image.png": { + "overrides": { + "theme_default": { + "es_sp": { + "filePath": "es_sp/quality_assurance/test_image.png", + "md5Checksum": "f44069fc2c1d641dae929631c17fdbec", + "size_kb": 1.8 + } + }, + "theme_professional": { + "tz_sw": { + "filePath": "tz_sw/quality_assurance/theme_professional/test_image.png", + "md5Checksum": "cbf87a2865550f4d0330af13804383cf", + "size_kb": 22.4 + } + } + } + }, + "quality_assurance/test_image_untracked.png": { + "overrides": { + "theme_default": { + "es_sp": { + "filePath": "es_sp/quality_assurance/test_image_untracked.png", + "md5Checksum": "72f88e0cd59ffd07a8cefdee51713ea6", + "size_kb": 12.8 + } + } + } + } +} \ No newline at end of file diff --git a/packages/app-data/assets/za_af/plh_video/lets_slow_down.vtt b/packages/app-data/assets/za_af/plh_video/lets_slow_down.vtt new file mode 100644 index 0000000000..8525655d3e --- /dev/null +++ b/packages/app-data/assets/za_af/plh_video/lets_slow_down.vtt @@ -0,0 +1,110 @@ +WEBVTT + +1 +00:00:06.592 --> 00:00:09.549 +Wanneer dit voel asof alles uitmekaar val + +2 +00:00:09.549 --> 00:00:11.901 +En jy kan nie help om te skree nie + +3 +00:00:11.901 --> 00:00:14.794 +Wanneer al die frustrasies begin opbou + +4 +00:00:14.794 --> 00:00:17.343 +Onthou dat jy 'n keuse het + +5 +00:00:17.650 --> 00:00:19.890 +Kom ons vat dit bietjie stadiger + +6 +00:00:20.450 --> 00:00:23.052 +Haal 'n paar keer diep asem + +7 +00:00:23.591 --> 00:00:27.983 +Onthou alles waarvoor ons dankbaar moet wees + +8 +00:00:28.839 --> 00:00:31.146 +Kom ons vat dit bietjie stadiger + +9 +00:00:31.806 --> 00:00:34.240 +Haal 'n paar keer diep asem + +10 +00:00:34.480 --> 00:00:38.909 +Want ek kan regtig nie liewer vir jou wees nie + +11 +00:00:42.301 --> 00:00:45.410 +Jy kan 'n blaaskans neem, jy kan tot 10 tel + +12 +00:00:45.410 --> 00:00:48.210 +Speel 'n speletjie of doen iets lekkers + +13 +00:00:48.070 --> 00:00:51.040 +Jy kan 'n vriend(in) bel, iemand wat jy in jou vertroue kan neem + +14 +00:00:51.040 --> 00:00:54.227 +Onthou dat jy nie die enigste een is nie + +15 +00:00:54.227 --> 00:00:56.558 +Kom ons vat dit bietjie stadiger + +16 +00:00:56.558 --> 00:00:59.520 +Haal 'n paar keer diep asem + +17 +00:00:59.520 --> 00:01:04.408 +Onthou alles waarvoor ons dankbaar moet wees + +18 +00:01:05.197 --> 00:01:07.779 +Kom ons vat dit bietjie stadiger + +19 +00:01:08.298 --> 00:01:10.444 +Haal 'n paar keer diep asem + +20 +00:01:10.444 --> 00:01:15.464 +Want ek kan regtig nie liewer vir jou wees nie + +21 +00:01:16.530 --> 00:01:18.940 +Kom ons vat dit bietjie stadiger + +22 +00:01:19.110 --> 00:01:21.579 +Haal 'n paar keer diep asem + +23 +00:01:21.579 --> 00:01:27.344 +Onthou alles waarvoor ons dankbaar moet wees + +24 +00:01:27.344 --> 00:01:29.851 +Kom ons vat dit bietjie stadiger + +25 +00:01:30.411 --> 00:01:33.011 +Haal 'n paar keer diep asem + +26 +00:01:33.011 --> 00:01:37.763 +Want ek kan regtig nie liewer vir jou wees nie + +27 +00:01:39.053 --> 00:01:43.544 +Want ek kan regtig nie liewer vir jou wees nie + diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_1.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_1.mp3 new file mode 100644 index 0000000000..03d7b4bf70 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c855b4ef1be9f6ee3f7854cadba693dd2209c9eac207badbe5871e7228e4d1 +size 583725 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_10.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_10.mp3 new file mode 100644 index 0000000000..de1f350295 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_10.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec182a345b5835866fe5ea7957db10b792adf9b47985a3a8ffb72209a37d3d68 +size 964653 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_11.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_11.mp3 new file mode 100644 index 0000000000..567b3e37e0 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_11.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb6cd9071285e3d48fbb917c6bba7c528605c3dac2a7a1aad88b135095f51af +size 887853 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_12.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_12.mp3 new file mode 100644 index 0000000000..a88fce347b --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_12.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf639d1d907fede5468cf5ed441db1f3ce7d1543eb8e2686e3b62a6baf2b9ab3 +size 1026093 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_13.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_13.mp3 new file mode 100644 index 0000000000..fc857c64c3 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_13.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1b4ba66d889b3fbfb4da2e97974658e48032a00d3373c2b585759a4a72b257d +size 824493 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_14.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_14.mp3 new file mode 100644 index 0000000000..bb3560b3c8 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_14.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ad1a58c509222372d2d953e4467e9a1b70e0d402ffe3d4151af5d196ae14e32 +size 470445 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_15.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_15.mp3 new file mode 100644 index 0000000000..dd348e54b0 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_15.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b599175dc3ecb8fb818815e537b95d012a91cd8903b604b782c80e47c1040dc +size 664365 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_16.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_16.mp3 new file mode 100644 index 0000000000..8100808953 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_16.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:956d2d5700ba8901ba4c948a5697a865258ed726a42f9b1ed374970ab7d9fca4 +size 663213 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_17.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_17.mp3 new file mode 100644 index 0000000000..94925d8769 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_17.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e27a3648d439e56d3988f36607c1377fa29615be9f8c4ad1595920729851a9d +size 845613 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_18.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_18.mp3 new file mode 100644 index 0000000000..889f543cfe --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_18.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98348cad77691cc6ad4a317f6be3b32674369fcd13177d174b83aec1977298ff +size 1123245 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_19.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_19.mp3 new file mode 100644 index 0000000000..a83e1e9d70 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_19.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5552b788109901ad97e59b49ac3c6774196ad4034b838bdc0bcd5b76c622de1d +size 2119725 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_2.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_2.mp3 new file mode 100644 index 0000000000..6509f4a27c --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_2.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b20c51ce73fa2b8e3175f4930cb1e00336c4dcff3376a5296536bb9f7083a8 +size 727725 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_20.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_20.mp3 new file mode 100644 index 0000000000..84952c2366 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_20.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9fcc68a0bd4e9a5c9fd087d29094dbae4154369e4842807d2afcafce5cbce1d +size 2537133 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_21.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_21.mp3 new file mode 100644 index 0000000000..a9e89386c4 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_21.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e45b907f30de771e84c2311031c0771283cd0224715bfab5837a22af9dc460b +size 899373 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_22.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_22.mp3 new file mode 100644 index 0000000000..bea3fb5f5b --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_22.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50cb8bd0c0bda89d77d4419d23ccd60222e875963c427bac68d340ba2b406428 +size 560685 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_23.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_23.mp3 new file mode 100644 index 0000000000..66291f1811 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_23.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d052d3aaeb2be0e97bca1f516b1a0fec41d041ae1671d70ad058c79720bc892 +size 470445 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_24.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_24.mp3 new file mode 100644 index 0000000000..2e2787f0d3 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_24.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c20d25bcfa4b088373e933f90ac92c1cfb9124ce3a16e777a387bbd763f073c2 +size 533805 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_3.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_3.mp3 new file mode 100644 index 0000000000..7c345d1d14 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_3.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1bda421fb7bf845d7c999c0dd0568d8d2aa50d73b63f1bca49f84894a243cc7 +size 435885 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_4.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_4.mp3 new file mode 100644 index 0000000000..e5df8ca683 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_4.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6199b25b0efcee29b4f95cb0b25d04136e52fba640158e74427e5335cae12733 +size 1020333 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_5.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_5.mp3 new file mode 100644 index 0000000000..bec19b04ea --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_5.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbd2172588bce39c7a8931b8cc29513c9c91b1142134cbcd962b000cc887073 +size 461613 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_6.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_6.mp3 new file mode 100644 index 0000000000..54fd229c6e --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_6.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e332dd0d0dc306ddde34a646f2bbe0f26926301a34c962824a03af4fd88e138 +size 620973 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_7.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_7.mp3 new file mode 100644 index 0000000000..0025121533 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_7.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e57ef1397e14a3474deef1da90cb3c8e62235efd190a4d1b3973ea068f2d39f3 +size 549165 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_8.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_8.mp3 new file mode 100644 index 0000000000..8bc04796db --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_8.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73f27d7b207e996c6e9c4e75d0f89ddc2ab5b644bd2f3ce70c141e602e6be1e7 +size 725805 diff --git a/packages/app-data/assets/za_st/plh_audio/relax/relax_9.mp3 b/packages/app-data/assets/za_st/plh_audio/relax/relax_9.mp3 new file mode 100644 index 0000000000..c05b239373 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/relax/relax_9.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b878d4177d5290a59ce98bbabeb3af5a8007b53bbc99476569b994df19fb6c7 +size 1321005 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_1on1_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_1on1_intro.mp3 new file mode 100644 index 0000000000..311ae9652b --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_1on1_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946ee7be0810a10db33d42796e93c80d2746009d13b1664441a248d53f69aef7 +size 471213 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_celebrate_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_celebrate_intro.mp3 new file mode 100644 index 0000000000..ec59a62146 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_celebrate_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b47c44ff921e6a01d4bcc22c65d1973db14b61e22a64a7bf740cd3110ff09649 +size 478125 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_consequence_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_consequence_intro.mp3 new file mode 100644 index 0000000000..e2f50d42c3 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_consequence_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ea55d4b745fe99f146728dff198cb9118d16d9d9bc1930e483e09c49b79bb29 +size 667053 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_crisis_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_crisis_intro.mp3 new file mode 100644 index 0000000000..e3cabf73a2 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_crisis_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a0020524013c4b4777612c2d9dfa6cf9463936810c90062a4f46da52effe426 +size 826413 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_instruct_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_instruct_intro.mp3 new file mode 100644 index 0000000000..6174fd46c5 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_instruct_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc02172027d48bf49bbabbed6dbae6de5d3313580fd60709766495cdce4c9a97 +size 483885 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_money_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_money_intro.mp3 new file mode 100644 index 0000000000..fc0d38d387 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_money_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6ce1e8fb7128826870efa589cb0d55fb040903efff896cab2f58cfbcbf3915e +size 658605 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_praise_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_praise_intro.mp3 new file mode 100644 index 0000000000..ebfb557685 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_praise_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:856374bfa81e38ee3ff607b809d025cafc168156b74af96934924e99ae8dcac2 +size 433965 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_rules_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_rules_intro.mp3 new file mode 100644 index 0000000000..9a22c55583 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_rules_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7266a439fc362308debdf819396e525bc14f5d22126a51976de3be048345fd2d +size 505773 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_safe_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_safe_intro.mp3 new file mode 100644 index 0000000000..92e3c4ebb1 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_safe_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bbaa3bc5e877a6263200975ae4acee3e29cf38b72ee3dc6416a466b3ac1c2e8 +size 825645 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_self_care_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_self_care_intro.mp3 new file mode 100644 index 0000000000..708e6c895a --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_self_care_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01e6f02af71bae28db4212aac85047ba2c48620f15cbd6252c7d4b6f5f9b2d64 +size 652845 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_solve_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_solve_intro.mp3 new file mode 100644 index 0000000000..e9fc6d597b --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_solve_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b6af8a40f0f1e6936dc179a811c7d9ee6daa18e536cb292f9e99b93b6d33997 +size 889773 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/w_stress_intro.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_stress_intro.mp3 new file mode 100644 index 0000000000..a14102e6c2 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/w_stress_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:877c1859de680ec1a3af0c80021c43987c30c2e5d9fa85181c49a3108a56b113 +size 762285 diff --git a/packages/app-data/assets/za_st/plh_audio/topic_intros/workshops_reflection.mp3 b/packages/app-data/assets/za_st/plh_audio/topic_intros/workshops_reflection.mp3 new file mode 100644 index 0000000000..a875e97a50 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_audio/topic_intros/workshops_reflection.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c281941f7f023475336667146c7126a5aa05174283d7f3a525024975a3c7574 +size 1203885 diff --git a/packages/app-data/assets/za_st/plh_video/lets_slow_down.vtt b/packages/app-data/assets/za_st/plh_video/lets_slow_down.vtt new file mode 100644 index 0000000000..bf1dde3403 --- /dev/null +++ b/packages/app-data/assets/za_st/plh_video/lets_slow_down.vtt @@ -0,0 +1,110 @@ +WEBVTT + +1 +00:00:06.592 --> 00:00:09.549 +Ha dintho tsohle di senyeha + +2 +00:00:09.549 --> 00:00:11.901 +Mme o sa kgone ho se phahamise lentswe + +3 +00:00:11.901 --> 00:00:14.794 +Ha litsietsi tsohle li qala ho qala + +4 +00:00:14.794 --> 00:00:17.343 +Hopola hore o nale khetho + +5 +00:00:17.650 --> 00:00:19.890 +Ha re fokotse lebelo + +6 +00:00:20.450 --> 00:00:23.052 +Phefumolohela hodimo ka makgetlo a mmalwa + +7 +00:00:23.591 --> 00:00:27.983 +Hopola hore rohle re tlameha ho leboha + +8 +00:00:28.839 --> 00:00:31.146 +Ha re fokotse lebelo + +9 +00:00:31.806 --> 00:00:34.240 +Phefumolohela hodimo ka makgetlo a mmalwa + +10 +00:00:34.480 --> 00:00:38.909 +Hobane ke ne ke se sa khone ho o rata ho feta + +11 +00:00:42.301 --> 00:00:45.410 +O ka nka khefu, o ka 'na oa bala ho fihlela ho 10 + +12 +00:00:45.410 --> 00:00:48.210 +Bapala papadi kapa etsa se seng se monate + +13 +00:00:48.070 --> 00:00:51.040 +O ka litsetsa motsoalle, motho eo o ka mo phetlelang sefuba + +14 +00:00:51.040 --> 00:00:54.227 +Hopola hore ha o mong + +15 +00:00:54.227 --> 00:00:56.558 +Ha re fokotse lebelo + +16 +00:00:56.558 --> 00:00:59.520 +Phefumolohela hodimo ka makgetlo a mmalwa + +17 +00:00:59.520 --> 00:01:04.408 +Hopola hore rohle re tlameha ho leboha + +18 +00:01:05.197 --> 00:01:07.779 +Ha re fokotse lebelo + +19 +00:01:08.298 --> 00:01:10.444 +Phefumolohela hodimo ka makgetlo a mmalwa + +20 +00:01:10.444 --> 00:01:15.464 +Hobane ke ne ke se sa khone ho o rata ho feta + +21 +00:01:16.530 --> 00:01:18.940 +Ha re fokotse lebelo + +22 +00:01:19.110 --> 00:01:21.579 +Phefumolohela hodimo ka makgetlo a mmalwa + +23 +00:01:21.579 --> 00:01:27.344 +Hopola hore rohle re tlameha ho leboha + +24 +00:01:27.344 --> 00:01:29.851 +Ha re fokotse lebelo + +25 +00:01:30.411 --> 00:01:33.011 +Phefumolohela hodimo ka makgetlo a mmalwa + +26 +00:01:33.011 --> 00:01:37.763 +Hobane ke ne ke se sa khone ho o rata ho feta + +27 +00:01:39.053 --> 00:01:43.544 +Hobane ke ne ke se sa khone ho o rata ho feta + diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_1.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_1.mp3 new file mode 100644 index 0000000000..421aaef2ce --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_1.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1ca5770c8764345cc6d949af43d79104c0cf4a7876d0fe49dc9cab62897e042 +size 533805 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_10.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_10.mp3 new file mode 100644 index 0000000000..1a30d16165 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_10.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0fadc742981db61c872a15bd381352e68833155cc1955fb44e2e38c9414b54d +size 833325 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_11.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_11.mp3 new file mode 100644 index 0000000000..9b17b4220b --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_11.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af1ffba3545425a481c5aac2ce993b789d2dca4a5d6609746020b97ddcc46429 +size 718125 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_12.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_12.mp3 new file mode 100644 index 0000000000..054351ca25 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_12.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cfde5137e3a82f06e41d9f8c13b2c0a5f87e42052a2ae3648eeed6d16d1b5fe +size 549933 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_13.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_13.mp3 new file mode 100644 index 0000000000..5492a0c366 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_13.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddfb51273d0efaacebbeec0624a5289f93ad485a0462759718d4906be04895ae +size 745005 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_14.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_14.mp3 new file mode 100644 index 0000000000..9b24423171 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_14.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:354af6acfe9830ff88b11b0b7dad922a5e861ea5b924480ad31e0331eac7f564 +size 346413 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_15.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_15.mp3 new file mode 100644 index 0000000000..8953f3f29f --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_15.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51272f9dc96ce2ee31fff55fa563c7cd0555fcd2fe57e11d1afcba0cf19871ff +size 501933 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_16.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_16.mp3 new file mode 100644 index 0000000000..53a526352d --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_16.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27c2d7085e6fc57f1d689f9fd9eda5a281e89f139c8c3d9558da1905080f9b41 +size 438573 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_17.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_17.mp3 new file mode 100644 index 0000000000..6bd70a1b69 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_17.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3253883485833cd25dff5c32d53f7030be30e0bad5df9e0153bb91f2a30d57d +size 599853 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_18.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_18.mp3 new file mode 100644 index 0000000000..5d760c6018 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_18.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58be357fbc36012208761837ccbcfb701448f776b89a76a565084252ac3cb0ed +size 860205 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_19.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_19.mp3 new file mode 100644 index 0000000000..ce230c1486 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_19.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8c59a93ffa3dc5fb93098601c04d3f5c3993c73f3e8b1685fef6701d6ff4cf4 +size 1839405 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_2.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_2.mp3 new file mode 100644 index 0000000000..e7350b4fe5 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_2.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0574289665996afb7d7c0f80c1a9e5655191ce6694d70ffe8a13a639cb30e691 +size 760365 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_20.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_20.mp3 new file mode 100644 index 0000000000..a9ae541728 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_20.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8faa599737fd54dad06590d4e8265182450de4d19c4ae16c5c756951f3104d85 +size 1860525 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_21.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_21.mp3 new file mode 100644 index 0000000000..d89b4b5d78 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_21.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4be2d65be63fa1cc09e389d231c2b2810b145af2fcc511916012cf99fb2a9abf +size 622125 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_22.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_22.mp3 new file mode 100644 index 0000000000..b876347ff2 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_22.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbb3cace21bdccc97a6d47db365494d5c58befce761b495b6f8e7bdaabb686ca +size 336045 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_23.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_23.mp3 new file mode 100644 index 0000000000..a3c54e12c0 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_23.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:823b424b2cdb65d333c7a07811b40627e008221e2901ac0222ef774a25b42709 +size 366765 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_24.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_24.mp3 new file mode 100644 index 0000000000..15ff094d9f --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_24.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08064a6e155757f1111a75248400cee36a2099f8387a0da5bdaad2aae592326d +size 380205 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_3.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_3.mp3 new file mode 100644 index 0000000000..085655b52e --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_3.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ce40938ffcaf39dd82415905cc889777b3a99b3fb3757ceb4343ca5be703cf5 +size 303405 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_4.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_4.mp3 new file mode 100644 index 0000000000..9a4bd5495b --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_4.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2df0d6882aac26123ce61094fff388d50830e795490ec954334e5400914ecd26 +size 615213 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_5.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_5.mp3 new file mode 100644 index 0000000000..0c5122960c --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_5.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6e14a397dbcfedae8a86f9f39d572e8eaf914708bb5f1664aa584358e5f44e1 +size 298413 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_6.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_6.mp3 new file mode 100644 index 0000000000..6cdc3c8c93 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_6.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f223303d97aa6d042bf685d63ea6e6a5d241c20651382504eed8d94892a4d20 +size 403245 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_7.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_7.mp3 new file mode 100644 index 0000000000..d46a6a6bae --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_7.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb0b39f224a1a232e261ef3b313fd743002c2f7403c1196d48c855869fdaffb6 +size 397485 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_8.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_8.mp3 new file mode 100644 index 0000000000..8f82b4fc92 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_8.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffee93fe9b12b08745289c14650a00b00e44ecbfe4ab6f75f86e2a6beab5efdf +size 505005 diff --git a/packages/app-data/assets/za_tn/plh_audio/relax/relax_9.mp3 b/packages/app-data/assets/za_tn/plh_audio/relax/relax_9.mp3 new file mode 100644 index 0000000000..7dc6a73518 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/relax/relax_9.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fde01145651b472ceffcb33138a87265e81188bd5e081106a74ae2e07f4dad1a +size 1014573 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_1on1_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_1on1_intro.mp3 new file mode 100644 index 0000000000..4ac4d75f66 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_1on1_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:553e120a9a1a3970502ffebcac0cf5bdec27363efbdd04767f8d211a667aaa4a +size 339885 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_celebrate_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_celebrate_intro.mp3 new file mode 100644 index 0000000000..22d8fca66e --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_celebrate_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2007d9e6193f9392b9685da3086e5a749c9339d8f637fcb7c08cc255e52693ca +size 442413 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_consequence_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_consequence_intro.mp3 new file mode 100644 index 0000000000..6ee3f73130 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_consequence_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963bc409b2b16fc54532acfe9ef3af705427bddd2422bae1aab5b14e5e491401 +size 635565 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_crisis_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_crisis_intro.mp3 new file mode 100644 index 0000000000..8c7c8b8ec8 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_crisis_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b339a69abbbc5fc7d95a87db161491a09a2b5068cdf8ab6e090997f79ee8c042 +size 785325 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_instruct_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_instruct_intro.mp3 new file mode 100644 index 0000000000..48b8d72d42 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_instruct_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe17016a93ca0141c6db3a5c7c63606a9ef661badbf56dd5b5d69d6b10e40c8 +size 453933 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_money_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_money_intro.mp3 new file mode 100644 index 0000000000..4b3c486448 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_money_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8f97e9b45e9bfea95cd1756322553e4ddb2cede494f0c709683ad11a42a32f1 +size 585645 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_praise_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_praise_intro.mp3 new file mode 100644 index 0000000000..92345c8f9c --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_praise_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72a128b2836521c56a4b274d7831383fcc7676ba09b8677c70e2d291051dbfc4 +size 320685 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_rules_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_rules_intro.mp3 new file mode 100644 index 0000000000..6704ad877f --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_rules_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d8c9784de2f8aed6d8d8b9a343cbac199051c4de5822269f28e19f26e071ed8 +size 524205 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_safe_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_safe_intro.mp3 new file mode 100644 index 0000000000..2380cc66d3 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_safe_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8450ec55c9db5c037291c8ca410dce1e154bc5a075479579f0cbbd72b1bff722 +size 812973 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_self_care_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_self_care_intro.mp3 new file mode 100644 index 0000000000..bc5cfd241b --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_self_care_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b471d7d76746e57f6e12c790469d4612e4a3f09f43e0bec1cba81325f557d751 +size 603693 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_solve_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_solve_intro.mp3 new file mode 100644 index 0000000000..2354b598c0 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_solve_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af5e0b593d2cac6ab3cc282b8df231f42de61863ceea29e96c873c2c1349635a +size 895533 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_stress_intro.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_stress_intro.mp3 new file mode 100644 index 0000000000..ba661b2858 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/w_stress_intro.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4091c18cb2449d268cac61ba6f40e5af8959ff13ef2c351c0798af6180a43d08 +size 644013 diff --git a/packages/app-data/assets/za_tn/plh_audio/topic_intros/workshops_reflection.mp3 b/packages/app-data/assets/za_tn/plh_audio/topic_intros/workshops_reflection.mp3 new file mode 100644 index 0000000000..0805fdae09 --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_audio/topic_intros/workshops_reflection.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93cf6f8dbcfea5af4286c0c912fe2e259ce58ec6251e6a49f82936fdd75aad47 +size 1028013 diff --git a/packages/app-data/assets/za_tn/plh_video/lets_slow_down.vtt b/packages/app-data/assets/za_tn/plh_video/lets_slow_down.vtt new file mode 100644 index 0000000000..b29ef5f02b --- /dev/null +++ b/packages/app-data/assets/za_tn/plh_video/lets_slow_down.vtt @@ -0,0 +1,110 @@ +WEBVTT + +1 +00:00:06.592 --> 00:00:09.549 +Fa tsotlhe di utlwalega okare di a phutlhama + +2 +00:00:09.549 --> 00:00:11.901 +Ebile o palela ke go itshwara mme o isa lentswe kwa godimo + +3 +00:00:11.901 --> 00:00:14.794 +Fa tsotlhe tse di kgobang marapo di simolola + +4 +00:00:14.794 --> 00:00:17.343 +Gopola gore o na le boikgethelo + +5 +00:00:17.650 --> 00:00:19.890 +A re fokotse lobelo + +6 +00:00:20.450 --> 00:00:23.052 +Hemela kwa teng makgetlhonyana + +7 +00:00:23.591 --> 00:00:27.983 +Gopola tsotlhe tse o ka di lebogelang + +8 +00:00:28.839 --> 00:00:31.146 +A re fokotse lobelo + +9 +00:00:31.806 --> 00:00:34.240 +Hemela kwa teng makgetlhonyana + +10 +00:00:34.480 --> 00:00:38.909 +Ka gonne ga go na gore nka go rata go fetisa + +11 +00:00:42.301 --> 00:00:45.410 +O ka emisa go se kae, o ka bala go fitlha ka 10 + +12 +00:00:45.410 --> 00:00:48.210 +Tshameka motshameko kgotsa dira sengwe se se monate + +13 +00:00:48.070 --> 00:00:51.040 +O ka letsetsa tsala, mongwe yo o ka buang le ene + +14 +00:00:51.040 --> 00:00:54.227 +Gopola gore ga se wena fela + +15 +00:00:54.227 --> 00:00:56.558 +A re fokotse lobelo + +16 +00:00:56.558 --> 00:00:59.520 +Hemela kwa teng makgetlhonyana + +17 +00:00:59.520 --> 00:01:04.408 +Gopola tsotlhe tse o ka di lebogelang + +18 +00:01:05.197 --> 00:01:07.779 +A re fokotse lobelo + +19 +00:01:08.298 --> 00:01:10.444 +Hemela kwa teng makgetlhonyana + +20 +00:01:10.444 --> 00:01:15.464 +Ka gonne ga go na gore nka go rata go fetisa + +21 +00:01:16.530 --> 00:01:18.940 +A re fokotse lobelo + +22 +00:01:19.110 --> 00:01:21.579 +Hemela kwa teng makgetlhonyana + +23 +00:01:21.579 --> 00:01:27.344 +Gopola tsotlhe tse o ka di lebogelang + +24 +00:01:27.344 --> 00:01:29.851 +A re fokotse lobelo + +25 +00:01:30.411 --> 00:01:33.011 +Hemela kwa teng makgetlhonyana + +26 +00:01:33.011 --> 00:01:37.763 +Ka gonne ga go na gore nka go rata go fetisa + +27 +00:01:39.053 --> 00:01:43.544 +Ka gonne ga go na gore nka go rata go fetisa + diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_1.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_1.mp3 deleted file mode 100644 index 9feeba39a4..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_1.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8bf72ce8ee5f86032d4cbf068894f4b6e8a917607a0b9a4df2a2ce0bc60dbaa0 -size 685485 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_10.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_10.mp3 deleted file mode 100644 index ed7b03b087..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_10.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cf5edccdf76cff30a14555a8656c8bc4f8c709aac0e312da8173a3fe560c3fcd -size 710445 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_11.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_11.mp3 deleted file mode 100644 index f357eec332..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_11.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:746481321b9d04de7b95de5c7c3bf202786b6384777d8adc310e98aa69258ec1 -size 1465773 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_12.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_12.mp3 deleted file mode 100644 index aaa1627286..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_12.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d0a216f2b92dbcd96b16d1bc3fc80497f4411b9dca5163b5918a61727276ea5 -size 741165 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_13.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_13.mp3 deleted file mode 100644 index b5b1bdc885..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_13.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2dca0ac9a803387244b91931932e0dbb5ed7d3aa651b30da16017d467ade34b1 -size 777645 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_14.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_14.mp3 deleted file mode 100644 index 8a5a01f822..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_14.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c417050afab7e57ec2fd277cd8702a4108898e76349d5d9a68c3d18633f07b1 -size 282285 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_15.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_15.mp3 deleted file mode 100644 index cd18d0e722..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_15.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:805bc4400e5329b9b50f0d6d744c3b23a9a9fa9df28c15c3d59f7bffc4b65e0e -size 536493 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_16.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_16.mp3 deleted file mode 100644 index ffb92e8203..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_16.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b3f3680c017872aabe69d5f449961b8e511c68716486da853055b9e52b078688 -size 645165 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_17.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_17.mp3 deleted file mode 100644 index a4883adcd1..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_17.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:071f9cc151acc13640d6aa6ad59c7fded6cea13bb929a6d2c384757bbe12e4e6 -size 497325 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_18.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_18.mp3 deleted file mode 100644 index 94b0e29e86..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_18.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:576722b1b5f2183789f81fc030e20b0d93712706a6605da8a3bbf90ca9061784 -size 1219245 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_19.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_19.mp3 deleted file mode 100644 index e9fbd2ead4..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_19.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e375d6c0c6d42f5c206a996c8215299ee38459750777bcc313744189a9beaa8e -size 1705005 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_2.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_2.mp3 deleted file mode 100644 index 3d9e3637ae..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_2.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:639685e8df12e8e9907fa75a7e685116ce4bcfcf4bc2dafc4f21ac936a042e58 -size 917805 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_20.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_20.mp3 deleted file mode 100644 index b4e8c3c755..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_20.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c05ace8e7a30ee1f5fa7024e886d223b7ffd790884a89540bd001e96c2fbcd27 -size 2449965 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_21.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_21.mp3 deleted file mode 100644 index 465551e6b8..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_21.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9e53d8ad6b398fab689a77ee19f715a606be9fbf120fe9a492a321ff67dd899 -size 468238 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_22.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_22.mp3 deleted file mode 100644 index 3329707dd2..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_22.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:34c8805ebeff1f3a56eff7e933f8e44ffe0967806ac9bd80b65206985ed4c89a -size 384910 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_23.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_23.mp3 deleted file mode 100644 index 68fb9d6733..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_23.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e9179a8d254e8df1409a65047e04498e256df22c6754684cbed0440be4eb432f -size 541485 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_24.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_24.mp3 deleted file mode 100644 index d20d8190d6..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_24.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f434afe5c3abf93cc1824ed9214e7df7f4d49b916f4e9a152d7f88a8629f051 -size 410925 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_3.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_3.mp3 deleted file mode 100644 index 3ef0e7a9fa..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_3.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7793403c1fa47300960ecd12d0b6d7d88ada3869d2a1fe26d47ef8c74fdbe4c1 -size 293134 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_4.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_4.mp3 deleted file mode 100644 index 09617ac7a6..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_4.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e003e1960acdba9c2621d67e92b5d42f1579e4393ee0c2b0facda689e4ee36fa -size 1284525 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_5.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_5.mp3 deleted file mode 100644 index b671e03346..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_5.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ffdea2214deb7637e2fc69e5111ab15378a5e1391bbc477dfcd7369dbec21976 -size 230445 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_6.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_6.mp3 deleted file mode 100644 index b974e88248..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_6.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2e498824f45d10117bb2ed579dc29cd284f9c696cbedc322d44d191de1d66df -size 494350 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_7.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_7.mp3 deleted file mode 100644 index 898cca3dbe..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_7.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa27be8c84da94e292b0a253c47da0b1d6c98909ba41dc682e943a8c9d6df173 -size 380302 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_8.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_8.mp3 deleted file mode 100644 index ea77a24b52..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_8.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:20e1b188535d42a02f9cbfd92c32d4d9fec9fae7999167d125cc8109c6076fe3 -size 504718 diff --git a/packages/app-data/assets/za_xh/plh_audio/relax/relax_9.mp3 b/packages/app-data/assets/za_xh/plh_audio/relax/relax_9.mp3 deleted file mode 100644 index eea590e55d..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/relax/relax_9.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d9b8c3831401b1620a3bfdd4eb5d2f2e52e716f24fbbb6c02004f3cb6b5cd973 -size 983853 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_1on1_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_1on1_intro.mp3 deleted file mode 100644 index d057dbb0fa..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_1on1_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a765054aa47013ca8336586a00de1fc31143748c9a1991ef600d4307fa5dc45c -size 418605 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_celebrate_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_celebrate_intro.mp3 deleted file mode 100644 index ba9ad8afbe..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_celebrate_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21c3534b3f51934509bfc17668e0c03a4ecaa43b83b594e3653ae06c3750c369 -size 434733 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_consequence_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_consequence_intro.mp3 deleted file mode 100644 index b35ed2ccb0..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_consequence_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:97e5b518c7a0c1cd5a9e64989508fdd34eeb4e1a7f574c906278e1ff505d0f5b -size 636333 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_crisis_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_crisis_intro.mp3 deleted file mode 100644 index 64b105d343..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_crisis_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e401a3ce9329bba6171d2582e37d2bc166d47bf5287d1e534e94a05c346967e -size 745005 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_instruct_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_instruct_intro.mp3 deleted file mode 100644 index da7170a8d1..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_instruct_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cbd70b4006e324779352e30dfd53b449aacb36c1177f4c73b6c013db37a2f201 -size 428205 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_money_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_money_intro.mp3 deleted file mode 100644 index a1e86d1fb9..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_money_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d9f990fc68926c8188b1d3c79bae5653fe903628b71eb94fecd0b2fda6a57ca4 -size 490413 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_praise_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_praise_intro.mp3 deleted file mode 100644 index 9ca46b387f..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_praise_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4fc11d1d73e55805371d422c36d5e5584daac8140e44cb8b47b4d14b23df1e12 -size 336045 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_rules_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_rules_intro.mp3 deleted file mode 100644 index 3b40f43bac..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_rules_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be1bfc91aa03e9d29176df3a3589b7a21bd261e5fc087401639fe847ea9fc083 -size 421293 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_safe_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_safe_intro.mp3 deleted file mode 100644 index 3863f45ca3..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_safe_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4e442d2cffcb638dec188d6e0e22170c63c39b7d3f07fd520b863ce02b66676d -size 876333 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_self_care_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_self_care_intro.mp3 deleted file mode 100644 index 10e1e2fbf8..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_self_care_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ce90114d3acf93c0854d5e06d9b1b95f69769cd5ed5bd3716efaa8de503f1d2 -size 714285 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_solve_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_solve_intro.mp3 deleted file mode 100644 index 7ca559b932..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_solve_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f36479df53fe33ef12de9405653d6d26004dcfb76940e1e48a558e8db560b310 -size 852525 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_stress_intro.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_stress_intro.mp3 deleted file mode 100644 index 86d8511dd8..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/w_stress_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a6365a645ed8a487c8e30a0fd063106b3173a69ea265f32f4485cb855a8791e9 -size 636333 diff --git a/packages/app-data/assets/za_xh/plh_audio/topic_intros/workshops_reflection.mp3 b/packages/app-data/assets/za_xh/plh_audio/topic_intros/workshops_reflection.mp3 deleted file mode 100644 index ab3af69e77..0000000000 --- a/packages/app-data/assets/za_xh/plh_audio/topic_intros/workshops_reflection.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8e6332b29e7c0fe7a3e599e5ee756bacafa2d80a8753ea1f4787593238351a8 -size 1573293 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_1.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_1.mp3 deleted file mode 100644 index 583633fc32..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_1.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2de64333e015e94b1307e49a11c5e1ac7b2291603f82c205944060c1f95e78ca -size 607533 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_10.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_10.mp3 deleted file mode 100644 index 45415cd197..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_10.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0073c951c3b8ac179d2555cab9b58a7a12582c139917e60337eb34bcaea5390d -size 884013 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_11.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_11.mp3 deleted file mode 100644 index de93feabf0..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_11.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:349d95dfec51c909da81b82d30fb8951792bdb7a68a39fcd4b183c0e8a78fa61 -size 782253 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_12.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_12.mp3 deleted file mode 100644 index ee83f6dc7b..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_12.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ef33bfb078eb27d32a6d4db65c3e8ad8377be0f1cc0625a0b087b88d24a8881 -size 784173 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_13.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_13.mp3 deleted file mode 100644 index b2e531d235..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_13.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14b66376c4fdc21494272d2d1775eb918b0bbcd38e9d77212388a0481e17b647 -size 731565 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_14.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_14.mp3 deleted file mode 100644 index 71923015ea..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_14.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9e75327567c133c75d2dcfdfc401488aa89615ef01efa11cfd5e14ebdb6c07d5 -size 537645 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_15.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_15.mp3 deleted file mode 100644 index 6e11d88fb4..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_15.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0cf647a5048950b10c9444793cfc84b4f728febe8fe0d00d5994ae2b5d250e6c -size 645933 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_16.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_16.mp3 deleted file mode 100644 index c9df17fdd8..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_16.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a4ba3d961407730e8a33dfe8ff274724dd98d4c96fbae375ab9effb2a7784c9 -size 756525 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_17.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_17.mp3 deleted file mode 100644 index 55ecc1c93b..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_17.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5869a1d946d44ccd2b2dde5c3a8158950973497125af419876e823138fa4413b -size 658605 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_18.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_18.mp3 deleted file mode 100644 index 6ae3d71fce..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_18.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a3ef1ba02c816fa1744a9e12bd3590480f8cb741abcaea7ffd9b21a1e9c0eae -size 1532973 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_19.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_19.mp3 deleted file mode 100644 index b2c8f298cf..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_19.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b4d4fcb4568ce27bfcad72d3632088e6d4aa3fe1bbaa28082caaca8facf345a -size 2378925 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_2.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_2.mp3 deleted file mode 100644 index 218f0ba53e..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_2.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63b1b66ae95aebdaec5b5571f18cd5d9184c11f00127d004254e0c183ca9e197 -size 972333 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_20.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_20.mp3 deleted file mode 100644 index 6a9bb16890..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_20.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2e8da1962f71a6cfb3c698ed55ea5dd3fb5b8edb3e5ab870f35e9f15e887545 -size 2265645 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_21.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_21.mp3 deleted file mode 100644 index 3c7bcce7f3..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_21.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3198f1f7b12a5e68ae5f938cc591dc9dfe129b4a19b0fb76f0d182685531d860 -size 681645 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_22.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_22.mp3 deleted file mode 100644 index aa11fb457e..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_22.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45fb3bb4902558bf3dfe11cbad53099e9a0173441379cf6b03e89aa3fd065d1a -size 378285 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_23.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_23.mp3 deleted file mode 100644 index f7dc507bda..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_23.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ddec6b1f23bcc8234c37f08638986d123afcf977b33f5ebba68f77280102f58 -size 587565 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_24.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_24.mp3 deleted file mode 100644 index cfaeb3030b..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_24.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92cea57c9b5fe362a510f16bed4599f714e3db8c419def45a224f900e6c10f56 -size 498093 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_3.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_3.mp3 deleted file mode 100644 index ad74f1e822..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_3.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eaf32e4ef17aab3470c1c39c517c4cb31ac45daf68130a677dea6b3107859bf3 -size 410925 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_4.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_4.mp3 deleted file mode 100644 index 5a08b72ba4..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_4.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc26f6ec8c8c3b0b299256240c191641a0e7344c80c0a4fafb73e851fcf607ba -size 1279533 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_5.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_5.mp3 deleted file mode 100644 index f8e7d6c7b7..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_5.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:addaca027d315bd4b9f3f9a85078c7a22ee58d963ed057fc336b59aa4b66b65b -size 385965 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_6.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_6.mp3 deleted file mode 100644 index c1cf7bb075..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_6.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b73f9b52e052483bfdbad53fab8b3803d8c4ddf07ea1d01a35ad9eb8f6df0e4 -size 558765 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_7.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_7.mp3 deleted file mode 100644 index 4f8bce5d33..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_7.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adfd5581e8cacd9ba533be5f9f3d2ea40a62f2772ec8fe9c8fd7345f33e6b712 -size 695085 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_8.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_8.mp3 deleted file mode 100644 index 2cdf641710..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_8.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c10a9783454014f0d4381457fb5fb08ead855c38528b0a26daa697b9090f27a9 -size 593325 diff --git a/packages/app-data/assets/za_zu/plh_audio/relax/relax_9.mp3 b/packages/app-data/assets/za_zu/plh_audio/relax/relax_9.mp3 deleted file mode 100644 index 62f59038fe..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/relax/relax_9.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2d5c2e9d9fc34c877f5cc2f72b951a61940505fa7dc06d2ef563aa46dd425a7 -size 1081005 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_1on1_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_1on1_intro.mp3 deleted file mode 100644 index 0bf66d0c2c..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_1on1_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:584c3e9bed346ae639766d32ce165bf5624cb5c4f707e6b2fc5da90f894858bb -size 350253 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_celebrate_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_celebrate_intro.mp3 deleted file mode 100644 index 2d346d1589..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_celebrate_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5cacdca69513d2a1561213ff9db7729899aa640c4dacbdccfbcfdd8f41ac8559 -size 342573 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_consequence_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_consequence_intro.mp3 deleted file mode 100644 index dcb1c509db..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_consequence_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c53f7d0ccc6b94433cfb049495ac312ccc8c92f1eff030b19fdd7500bdc31ca0 -size 685485 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_crisis_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_crisis_intro.mp3 deleted file mode 100644 index 966671f203..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_crisis_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9acb27336f16c1961d4928e6fb1e79632fbe3b6f472ee0f9c8641e987b489d64 -size 896685 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_instruct_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_instruct_intro.mp3 deleted file mode 100644 index fafc7eafed..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_instruct_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61800094133e8db5b5cb35f6a97032cfda8b8c2352fcf942366e3930e9ab849e -size 572973 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_money_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_money_intro.mp3 deleted file mode 100644 index b4b5db8481..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_money_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eb0abc3a2662205b8236061e7a80a2e190a3b842b8cb594bde4a767226c20bb2 -size 501933 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_praise_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_praise_intro.mp3 deleted file mode 100644 index 59829d9734..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_praise_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ccceaf47c2b0ff424caf524fbfeab2b957cbb4847d9c58348a6c05a7bba01fc3 -size 359853 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_rules_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_rules_intro.mp3 deleted file mode 100644 index c600d1ca5e..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_rules_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a0c19c124b73a77ad6c8c5699b1ba9f78938441cc2e1a3b79208f1d6257d875 -size 535725 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_safe_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_safe_intro.mp3 deleted file mode 100644 index 89f92ccfa0..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_safe_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7bc290044c24810e0737833a0c26f17eaab0535fe29cb8c296dbab129f012d0 -size 892845 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_self_care_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_self_care_intro.mp3 deleted file mode 100644 index 94b0a81bb0..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_self_care_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fd027341bbac688bb2001e37252ae24ebdb5328ac704275e1489477cba435b5 -size 784173 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_solve_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_solve_intro.mp3 deleted file mode 100644 index ac4e51a15b..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_solve_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6759cfc206676de9164fa3139c9429c4a2308f66625111e64115b7ecdb63dad -size 754605 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_stress_intro.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_stress_intro.mp3 deleted file mode 100644 index b7fcf7dc5b..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/w_stress_intro.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:25cc739eb4e48cdea13b9bf990463be6d7f8d639b685604cdaabe4afc4c58e37 -size 749613 diff --git a/packages/app-data/assets/za_zu/plh_audio/topic_intros/workshops_reflection.mp3 b/packages/app-data/assets/za_zu/plh_audio/topic_intros/workshops_reflection.mp3 deleted file mode 100644 index 64dc82b3fd..0000000000 --- a/packages/app-data/assets/za_zu/plh_audio/topic_intros/workshops_reflection.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94c0948cf2399fc9eafbf6893c634f3e9a05ffeda0fa9ffce8b2f40b781348f4 -size 1430445 diff --git a/packages/app-data/index.ts b/packages/app-data/index.ts deleted file mode 100644 index b076ce9ab5..0000000000 --- a/packages/app-data/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { ASSETS_CONTENTS_LIST } from "./assets"; -export { SHEETS_CONTENT_LIST } from "./sheets"; -export { TRANSLATIONS_CONTENT_LIST } from "./translations"; diff --git a/packages/app-data/package.json b/packages/app-data/package.json index c142699cef..4b057bbf16 100644 --- a/packages/app-data/package.json +++ b/packages/app-data/package.json @@ -1,17 +1,5 @@ { "name": "app-data", "version": "1.0.0", - "description": "", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "scripts": { - "build": "tsc -b", - "serve": "tsc -w", - "sync": "TODO - call scripts" - }, - "devDependencies": { - "@types/node": "^15.12.4", - "data-models": "workspace:*", - "typescript": "~4.2.4" - } + "description": "" } diff --git a/packages/app-data/sheets/contents.json b/packages/app-data/sheets/contents.json new file mode 100644 index 0000000000..921a8ad6e7 --- /dev/null +++ b/packages/app-data/sheets/contents.json @@ -0,0 +1,5266 @@ +{ + "data_list": { + "activity_data_list": { + "flow_type": "data_list", + "flow_name": "activity_data_list", + "data_list_name": "something_fun", + "_xlsxPath": "global/data/activity_data_list.xlsx" + }, + "language_data_list": { + "flow_type": "data_list", + "flow_name": "language_data_list", + "data_list_name": "language", + "flow_subtype": "app_config_language_list", + "_xlsxPath": "global/app_config/language_data_list.xlsx" + }, + "language_data_list_tz": { + "flow_type": "data_list", + "flow_name": "language_data_list_tz", + "data_list_name": "language_tz", + "flow_subtype": "app_config_language_list", + "_xlsxPath": "tz/app_config/language_data_list_tz.xlsx" + }, + "language_data_list_za": { + "flow_type": "data_list", + "flow_name": "language_data_list_za", + "data_list_name": "language_za", + "flow_subtype": "app_config_language_list", + "_xlsxPath": "za/app_config/language_data_list_za.xlsx" + }, + "bereavement_data_list": { + "flow_type": "data_list", + "flow_name": "bereavement_data_list", + "data_list_name": "bereavement", + "_xlsxPath": "global/data/parent_centre_data_list.xlsx" + }, + "campaign_hs_w_1on1": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_1on1", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_consequence": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_consequence", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_crisis": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_crisis", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_instruct": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_instruct", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_money": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_money", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_praise": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_praise", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_rules": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_rules", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_safe": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_safe", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_self_care": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_self_care", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_solve": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_solve", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_hs_w_stress": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_hs_w_stress", + "_xlsxPath": "global/campaigns/quick_start_home_screen.xlsx" + }, + "campaign_relax": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_relax", + "_xlsxPath": "global/campaigns/quick_start_parent_centre.xlsx" + }, + "campaign_something_fun": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_something_fun", + "_xlsxPath": "global/campaigns/quick_start_parent_centre.xlsx" + }, + "campaign_workshop_quick_start": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "campaign_workshop_quick_start", + "_xlsxPath": "global/campaigns/quick_start_weekly_workshops.xlsx" + }, + "nf_inactive_day": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_inactive_day", + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" + }, + "nf_inactive_progress": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_inactive_progress", + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" + }, + "nf_inactive_week_month": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_inactive_week_month", + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" + }, + "nf_w_1on1": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_1on1", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_consequence": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_consequence", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_crisis": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_crisis", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_instruct": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_instruct", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_money": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_money", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_praise": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_praise", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_rules": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_rules", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_safe": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_safe", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_self_care": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_self_care", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_solve": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_solve", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_w_stress": { + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_w_stress", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_schedule_in_week_messages": { + "flow_type": "data_list", + "flow_subtype": "campaign_schedule", + "flow_name": "nf_schedule_in_week_messages", + "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" + }, + "nf_schedule_inactive": { + "flow_type": "data_list", + "flow_subtype": "campaign_schedule", + "flow_name": "nf_schedule_inactive", + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" + }, + "check_in_data": { + "flow_type": "data_list", + "flow_name": "check_in_data", + "data_list_name": "check_in", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + }, + "common_workshop_task_gs": { + "flow_type": "data_list", + "flow_name": "common_workshop_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "common_workshop_tasks": { + "flow_type": "data_list", + "flow_name": "common_workshop_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "covid_data_list": { + "flow_type": "data_list", + "flow_name": "covid_data_list", + "data_list_name": "covid", + "_xlsxPath": "global/data/parent_centre_data_list.xlsx" + }, + "encouraging_messages": { + "flow_type": "data_list", + "flow_name": "encouraging_messages", + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" + }, + "funders_data_list": { + "flow_type": "data_list", + "flow_name": "funders_data_list", + "data_list_name": "funders", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "tg_w_consequence_read_1_ind": { + "flow_name": "tg_w_consequence_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_consequence_read_1_tog": { + "flow_name": "tg_w_consequence_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_consequence_read_2_ind": { + "flow_name": "tg_w_consequence_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_consequence_read_2_tog": { + "flow_name": "tg_w_consequence_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_crisis_read_1_ind": { + "flow_name": "tg_w_crisis_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_crisis_read_1_tog": { + "flow_name": "tg_w_crisis_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_crisis_read_2_ind": { + "flow_name": "tg_w_crisis_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_crisis_read_2_tog": { + "flow_name": "tg_w_crisis_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_instruct_read_1_ind": { + "flow_name": "tg_w_instruct_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_instruct_read_1_tog": { + "flow_name": "tg_w_instruct_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_instruct_read_2_ind": { + "flow_name": "tg_w_instruct_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_instruct_read_2_tog": { + "flow_name": "tg_w_instruct_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_money_read_2_ind": { + "flow_name": "tg_w_money_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_money_read_2_tog": { + "flow_name": "tg_w_money_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_money_read_3_ind": { + "flow_name": "tg_w_money_read_3_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_money_read_3_tog": { + "flow_name": "tg_w_money_read_3_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_praise_read_ind": { + "flow_name": "tg_w_praise_read_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_praise_read_tog": { + "flow_name": "tg_w_praise_read_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_rules_read_1_ind": { + "flow_name": "tg_w_rules_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_rules_read_1_tog": { + "flow_name": "tg_w_rules_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_safe_read_1_ind": { + "flow_name": "tg_w_safe_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_safe_read_1_tog": { + "flow_name": "tg_w_safe_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_safe_read_2_ind": { + "flow_name": "tg_w_safe_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_safe_read_2_tog": { + "flow_name": "tg_w_safe_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_solve_read_2_ind": { + "flow_name": "tg_w_solve_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_solve_read_2_tog": { + "flow_name": "tg_w_solve_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_stress_read_1_ind": { + "flow_name": "tg_w_stress_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_stress_read_1_tog": { + "flow_name": "tg_w_stress_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_stress_read_3_ind": { + "flow_name": "tg_w_stress_read_3_ind", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "tg_w_stress_read_3_tog": { + "flow_name": "tg_w_stress_read_3_tog", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_common_task_gs": { + "flow_name": "w_1on1_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_common_tasks": { + "flow_name": "w_1on1_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_ind_task_gs": { + "flow_name": "w_1on1_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_task_gs": { + "flow_name": "w_1on1_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_task_gs_temp_1": { + "flow_name": "w_1on1_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_tasks": { + "flow_name": "w_1on1_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_tasks_temp_1": { + "flow_name": "w_1on1_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_1on1_tog_task_gs": { + "flow_name": "w_1on1_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_common_task_gs": { + "flow_name": "w_celebrate_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_common_tasks": { + "flow_name": "w_celebrate_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_ind_task_gs": { + "flow_name": "w_celebrate_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_task_gs": { + "flow_name": "w_celebrate_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_task_gs_temp_1": { + "flow_name": "w_celebrate_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_tasks": { + "flow_name": "w_celebrate_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_tasks_temp_1": { + "flow_name": "w_celebrate_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_celebrate_tog_task_gs": { + "flow_name": "w_celebrate_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_common_task_gs": { + "flow_name": "w_consequence_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_common_tasks": { + "flow_name": "w_consequence_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_ind_task_gs": { + "flow_name": "w_consequence_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_task_gs": { + "flow_name": "w_consequence_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_task_gs_temp_1": { + "flow_name": "w_consequence_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_tasks": { + "flow_name": "w_consequence_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_tasks_temp_1": { + "flow_name": "w_consequence_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_consequence_tog_task_gs": { + "flow_name": "w_consequence_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_common_task_gs": { + "flow_name": "w_crisis_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_common_tasks": { + "flow_name": "w_crisis_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_ind_task_gs": { + "flow_name": "w_crisis_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_task_gs": { + "flow_name": "w_crisis_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_task_gs_temp_1": { + "flow_name": "w_crisis_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_tasks": { + "flow_name": "w_crisis_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_tasks_temp_1": { + "flow_name": "w_crisis_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_crisis_tog_task_gs": { + "flow_name": "w_crisis_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_common_task_gs": { + "flow_name": "w_instruct_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_common_tasks": { + "flow_name": "w_instruct_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_ind_task_gs": { + "flow_name": "w_instruct_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_task_gs": { + "flow_name": "w_instruct_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_task_gs_temp_1": { + "flow_name": "w_instruct_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_tasks": { + "flow_name": "w_instruct_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_tasks_temp_1": { + "flow_name": "w_instruct_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_instruct_tog_task_gs": { + "flow_name": "w_instruct_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_common_task_gs": { + "flow_name": "w_money_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_common_tasks": { + "flow_name": "w_money_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_ind_task_gs": { + "flow_name": "w_money_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_task_gs": { + "flow_name": "w_money_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_task_gs_temp_1": { + "flow_name": "w_money_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_tasks": { + "flow_name": "w_money_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_tasks_temp_1": { + "flow_name": "w_money_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_money_tog_task_gs": { + "flow_name": "w_money_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_common_task_gs": { + "flow_name": "w_praise_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_common_tasks": { + "flow_name": "w_praise_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_ind_task_gs": { + "flow_name": "w_praise_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_task_gs": { + "flow_name": "w_praise_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_task_gs_temp_1": { + "flow_name": "w_praise_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_tasks": { + "flow_name": "w_praise_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_tasks_temp_1": { + "flow_name": "w_praise_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_praise_tog_task_gs": { + "flow_name": "w_praise_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_common_task_gs": { + "flow_name": "w_rules_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_common_tasks": { + "flow_name": "w_rules_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_ind_task_gs": { + "flow_name": "w_rules_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_task_gs": { + "flow_name": "w_rules_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_task_gs_temp_1": { + "flow_name": "w_rules_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_tasks": { + "flow_name": "w_rules_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_tasks_temp_1": { + "flow_name": "w_rules_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_rules_tog_task_gs": { + "flow_name": "w_rules_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_common_task_gs": { + "flow_name": "w_safe_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_common_tasks": { + "flow_name": "w_safe_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_ind_task_gs": { + "flow_name": "w_safe_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_task_gs": { + "flow_name": "w_safe_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_task_gs_temp_1": { + "flow_name": "w_safe_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_tasks": { + "flow_name": "w_safe_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_tasks_temp_1": { + "flow_name": "w_safe_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_safe_tog_task_gs": { + "flow_name": "w_safe_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_common_task_gs": { + "flow_name": "w_self_care_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_common_tasks": { + "flow_name": "w_self_care_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_ind_task_gs": { + "flow_name": "w_self_care_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_task_gs": { + "flow_name": "w_self_care_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_task_gs_temp_1": { + "flow_name": "w_self_care_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_tasks": { + "flow_name": "w_self_care_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_tasks_temp_1": { + "flow_name": "w_self_care_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_self_care_tog_task_gs": { + "flow_name": "w_self_care_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_common_task_gs": { + "flow_name": "w_solve_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_common_tasks": { + "flow_name": "w_solve_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_ind_task_gs": { + "flow_name": "w_solve_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_task_gs": { + "flow_name": "w_solve_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_task_gs_temp_1": { + "flow_name": "w_solve_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_tasks": { + "flow_name": "w_solve_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_tasks_temp_1": { + "flow_name": "w_solve_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_solve_tog_task_gs": { + "flow_name": "w_solve_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_common_task_gs": { + "flow_name": "w_stress_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_common_tasks": { + "flow_name": "w_stress_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_ind_task_gs": { + "flow_name": "w_stress_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_task_gs": { + "flow_name": "w_stress_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_task_gs_temp_1": { + "flow_name": "w_stress_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_tasks": { + "flow_name": "w_stress_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_tasks_temp_1": { + "flow_name": "w_stress_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "w_stress_tog_task_gs": { + "flow_name": "w_stress_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "workshop_tasks": { + "flow_name": "workshop_tasks", + "flow_subtype": "generated", + "flow_type": "data_list" + }, + "habit_data_list": { + "flow_type": "data_list", + "flow_name": "habit_data_list", + "data_list_name": "habit", + "_xlsxPath": "global/data/habit_data_list.xlsx" + }, + "hp_challenges_data": { + "flow_type": "data_list", + "flow_name": "hp_challenges_data", + "data_list_name": "hp_challenges", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + }, + "hp_check_in_data": { + "flow_type": "data_list", + "flow_name": "hp_check_in_data", + "data_list_name": "hp_check_in", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + }, + "hp_praise_messages": { + "flow_type": "data_list", + "flow_name": "hp_praise_messages", + "data_list_name": "praise", + "_xlsxPath": "global/data/praise_data_list.xlsx" + }, + "launch_actions": { + "flow_type": "data_list", + "flow_subtype": "lifecycle_actions", + "flow_name": "launch_actions", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "number_data": { + "flow_type": "data_list", + "flow_name": "number_data", + "data_list_name": "number", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + }, + "organisations_tz_data_list": { + "flow_type": "data_list", + "flow_name": "organisations_tz_data_list", + "data_list_name": "organisations_plh_tz", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "organisations_za_data_list": { + "flow_type": "data_list", + "flow_name": "organisations_za_data_list", + "data_list_name": "organisations_plh_za", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "parent_centre_data_list": { + "flow_type": "data_list", + "flow_name": "parent_centre_data_list", + "data_list_name": "parent_centre", + "_xlsxPath": "global/data/parent_centre_data_list.xlsx" + }, + "partners_data_list": { + "flow_type": "data_list", + "flow_name": "partners_data_list", + "data_list_name": "partners", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "partners_tz_data_list": { + "flow_type": "data_list", + "flow_name": "partners_tz_data_list", + "data_list_name": "partners_plh_tz", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "partners_za_data_list": { + "flow_type": "data_list", + "flow_name": "partners_za_data_list", + "data_list_name": "partners_plh_za", + "_xlsxPath": "global/data/partners_data_lists.xlsx" + }, + "relax_list": { + "flow_type": "data_list", + "flow_name": "relax_list", + "data_list_name": "relax", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "safeguarding_categories_tz": { + "flow_type": "data_list", + "flow_name": "safeguarding_categories_tz", + "data_list_name": "safeguarding_categories_tz", + "_xlsxPath": "tz/data/safeguarding_data_tz.xlsx" + }, + "safeguarding_contacts_tz": { + "flow_type": "data_list", + "flow_name": "safeguarding_contacts_tz", + "data_list_name": "safeguarding_contacts_tz", + "_xlsxPath": "tz/data/safeguarding_data_tz.xlsx" + }, + "story_data": { + "flow_type": "data_list", + "flow_name": "story_data", + "data_list_name": "story", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + }, + "survey_question": { + "flow_type": "data_list", + "flow_name": "survey_question", + "data_list_name": "survey_question", + "_xlsxPath": "global/data/survey_data_list.xlsx" + }, + "survey_question_group": { + "flow_type": "data_list", + "flow_name": "survey_question_group", + "data_list_name": "survey_question_group", + "_xlsxPath": "global/data/survey_data_list.xlsx" + }, + "w_1on1_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_1on1_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_1on1_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_1on1_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_celebrate_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_celebrate_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_celebrate_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_celebrate_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_consequence_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_consequence_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_consequence_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_consequence_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_crisis_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_crisis_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_crisis_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_crisis_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_instruct_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_instruct_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_instruct_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_instruct_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_money_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_money_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_money_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_money_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_praise_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_praise_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_praise_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_praise_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_rules_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_rules_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_rules_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_rules_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_safe_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_safe_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_safe_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_safe_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_self_care_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_self_care_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_self_care_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_self_care_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_solve_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_solve_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_solve_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_solve_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "w_stress_specific_task_gs": { + "flow_type": "data_list", + "flow_name": "w_stress_specific_task_gs", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" + }, + "w_stress_specific_tasks": { + "flow_type": "data_list", + "flow_name": "w_stress_specific_tasks", + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" + }, + "workshop_data": { + "flow_type": "data_list", + "flow_name": "workshop_data", + "data_list_name": "workshop", + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" + } + }, + "data_pipe": { + "common_workshop_task_gs_filter": { + "flow_type": "data_pipe", + "flow_name": "common_workshop_task_gs_filter", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" + }, + "common_workshop_tasks_filter": { + "flow_type": "data_pipe", + "flow_name": "common_workshop_tasks_filter", + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" + }, + "single_tg_filter": { + "flow_type": "data_pipe", + "flow_name": "single_tg_filter", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" + }, + "workshop_data_pipe": { + "flow_type": "data_pipe", + "flow_name": "workshop_data_pipe", + "_xlsxPath": "global/data/workshop_data/workshop_data_pipes.xlsx" + }, + "workshop_task_gs_append": { + "flow_type": "data_pipe", + "flow_name": "workshop_task_gs_append", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" + }, + "workshop_task_gs_concat": { + "flow_type": "data_pipe", + "flow_name": "workshop_task_gs_concat", + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" + }, + "workshop_tasks_append": { + "flow_type": "data_pipe", + "flow_name": "workshop_tasks_append", + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" + }, + "workshop_tasks_concat": { + "flow_type": "data_pipe", + "flow_name": "workshop_tasks_concat", + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" + } + }, + "generator": {}, + "global": { + "activity_variables": { + "flow_type": "global", + "flow_name": "activity_variables", + "_xlsxPath": "global/data/parent_centre_globals.xlsx" + }, + "app_id": { + "flow_type": "global", + "flow_name": "app_id", + "_xlsxPath": "global/data/navigation_globals.xlsx" + }, + "app_id_tz": { + "flow_type": "global", + "flow_name": "app_id_tz", + "override_target": "app_id", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/data/navigation_globals_tz.xlsx" + }, + "app_menu_globals": { + "flow_type": "global", + "flow_name": "app_menu_globals", + "_xlsxPath": "global/data/app_menu_globals.xlsx" + }, + "button_texts": { + "flow_type": "global", + "flow_name": "button_texts", + "_xlsxPath": "global/data/navigation_globals.xlsx" + }, + "click_count_defaults": { + "flow_type": "global", + "flow_name": "click_count_defaults", + "_xlsxPath": "global/data/navigation_globals.xlsx" + }, + "consequences": { + "flow_type": "global", + "module": "consequence", + "flow_name": "consequences", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "crisis_skills": { + "flow_type": "global", + "module": "crisis", + "flow_name": "crisis_skills", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "data_warnings": { + "flow_type": "global", + "flow_name": "data_warnings", + "_xlsxPath": "global/data/app_menu_globals.xlsx" + }, + "financial_emergencies": { + "flow_type": "global", + "module": "money", + "flow_name": "financial_emergencies", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "home_screen_variables": { + "flow_type": "global", + "flow_name": "home_screen_variables", + "_xlsxPath": "global/data/navigation_globals.xlsx" + }, + "home_screen_variables_mod": { + "flow_type": "global", + "flow_name": "home_screen_variables_mod", + "override_target": "home_screen_variables", + "override_condition": "@fields._app_skin == \"modular\"", + "_xlsxPath": "global_modular/data/navigation_globals_modular.xlsx" + }, + "hp_review_phrases": { + "flow_type": "global", + "flow_name": "hp_review_phrases", + "_xlsxPath": "global/data/in_week_message_globals.xlsx" + }, + "in_week_message_options": { + "flow_type": "global", + "flow_name": "in_week_message_options", + "_xlsxPath": "global/data/in_week_message_globals.xlsx" + }, + "in_week_message_titles": { + "flow_type": "global", + "flow_name": "in_week_message_titles", + "_xlsxPath": "global/data/in_week_message_globals.xlsx" + }, + "localisation_options": { + "flow_type": "global", + "flow_name": "localisation_options", + "_xlsxPath": "global/data/localisation_globals.xlsx" + }, + "localisation_options_tz": { + "flow_type": "global", + "flow_name": "localisation_options_tz", + "override_target": "localisation_options", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/data/localisation_globals_tz.xlsx" + }, + "localisation_options_za": { + "flow_type": "global", + "flow_name": "localisation_options_za", + "override_target": "localisation_options", + "override_condition": "@fields._deployment_name == \"plh_za\"", + "_xlsxPath": "za/data/localisation_globals_za.xlsx" + }, + "localised_names": { + "flow_type": "global", + "flow_name": "localised_names", + "_xlsxPath": "global/data/localisation_globals.xlsx" + }, + "localised_names_tz": { + "flow_type": "global", + "flow_name": "localised_names_tz", + "override_target": "localised_names", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/data/localisation_globals_tz.xlsx" + }, + "localised_names_za": { + "flow_type": "global", + "flow_name": "localised_names_za", + "override_target": "localised_names", + "override_condition": "@fields._deployment_name == \"plh_za\"", + "_xlsxPath": "za/data/localisation_globals_za.xlsx" + }, + "names_of_characters": { + "flow_type": "global", + "flow_name": "names_of_characters", + "_xlsxPath": "global/data/localisation_globals.xlsx" + }, + "parent_point_variables": { + "flow_type": "global", + "flow_name": "parent_point_variables", + "_xlsxPath": "global/data/habit_globals.xlsx" + }, + "pc_click_count_defaults": { + "flow_type": "global", + "flow_name": "pc_click_count_defaults", + "_xlsxPath": "global/data/parent_centre_globals.xlsx" + }, + "relax_variables": { + "flow_type": "global", + "flow_name": "relax_variables", + "_xlsxPath": "global/data/parent_centre_globals.xlsx" + }, + "saving_goals": { + "flow_type": "global", + "module": "money", + "flow_name": "saving_goals", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "savings_options": { + "flow_type": "global", + "module": "money", + "flow_name": "savings_options", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "spend_time_ideas": { + "flow_type": "global", + "module": "1on1", + "flow_name": "spend_time_ideas", + "_xlsxPath": "global/data/suggestion_globals.xlsx" + }, + "survey_completed": { + "flow_type": "global", + "flow_name": "survey_completed", + "_xlsxPath": "global/data/survey_globals.xlsx" + }, + "workshop_completion_levels": { + "flow_type": "global", + "flow_name": "workshop_completion_levels", + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" + }, + "workshop_modes": { + "flow_type": "global", + "flow_name": "workshop_modes", + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" + }, + "workshop_options": { + "flow_type": "global", + "flow_name": "workshop_options", + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" + } + }, + "template": { + "accept_terms": { + "flow_type": "template", + "flow_name": "accept_terms", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "accept_terms_warning": { + "flow_type": "template", + "flow_name": "accept_terms_warning", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "activity_check_in_chat": { + "flow_type": "template", + "flow_name": "activity_check_in_chat", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_co_chef": { + "flow_type": "template", + "flow_name": "activity_co_chef", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_crazy_chicken": { + "flow_type": "template", + "flow_name": "activity_crazy_chicken", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_dance_moves": { + "flow_type": "template", + "flow_name": "activity_dance_moves", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_doing_what": { + "flow_type": "template", + "flow_name": "activity_doing_what", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_dream_travel": { + "flow_type": "template", + "flow_name": "activity_dream_travel", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_family_workout": { + "flow_type": "template", + "flow_name": "activity_family_workout", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_famous_party": { + "flow_type": "template", + "flow_name": "activity_famous_party", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_friendly_chat": { + "flow_type": "template", + "flow_name": "activity_friendly_chat", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_get_active": { + "flow_type": "template", + "flow_name": "activity_get_active", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_housework": { + "flow_type": "template", + "flow_name": "activity_housework", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_interrupter": { + "flow_type": "template", + "flow_name": "activity_interrupter", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_invent_story": { + "flow_type": "template", + "flow_name": "activity_invent_story", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_memory_game": { + "flow_type": "template", + "flow_name": "activity_memory_game", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_mirror": { + "flow_type": "template", + "flow_name": "activity_mirror", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_name_that_tune": { + "flow_type": "template", + "flow_name": "activity_name_that_tune", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_pass_the_snap": { + "flow_type": "template", + "flow_name": "activity_pass_the_snap", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_reflect_positive": { + "flow_type": "template", + "flow_name": "activity_reflect_positive", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_relax_1": { + "flow_type": "template", + "flow_name": "activity_relax_1", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_10": { + "flow_type": "template", + "flow_name": "activity_relax_10", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_11": { + "flow_type": "template", + "flow_name": "activity_relax_11", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_12": { + "flow_type": "template", + "flow_name": "activity_relax_12", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_13": { + "flow_type": "template", + "flow_name": "activity_relax_13", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_14": { + "flow_type": "template", + "flow_name": "activity_relax_14", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_15": { + "flow_type": "template", + "flow_name": "activity_relax_15", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_16": { + "flow_type": "template", + "flow_name": "activity_relax_16", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_17": { + "flow_type": "template", + "flow_name": "activity_relax_17", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_18": { + "flow_type": "template", + "flow_name": "activity_relax_18", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_19": { + "flow_type": "template", + "flow_name": "activity_relax_19", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_2": { + "flow_type": "template", + "flow_name": "activity_relax_2", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_20": { + "flow_type": "template", + "flow_name": "activity_relax_20", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_21": { + "flow_type": "template", + "flow_name": "activity_relax_21", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_22": { + "flow_type": "template", + "flow_name": "activity_relax_22", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_23": { + "flow_type": "template", + "flow_name": "activity_relax_23", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_24": { + "flow_type": "template", + "flow_name": "activity_relax_24", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_3": { + "flow_type": "template", + "flow_name": "activity_relax_3", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_4": { + "flow_type": "template", + "flow_name": "activity_relax_4", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_5": { + "flow_type": "template", + "flow_name": "activity_relax_5", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_6": { + "flow_type": "template", + "flow_name": "activity_relax_6", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_7": { + "flow_type": "template", + "flow_name": "activity_relax_7", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_8": { + "flow_type": "template", + "flow_name": "activity_relax_8", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_relax_9": { + "flow_type": "template", + "flow_name": "activity_relax_9", + "_xlsxPath": "global/data/relax_data_list.xlsx" + }, + "activity_superpowers": { + "flow_type": "template", + "flow_name": "activity_superpowers", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_three_options": { + "flow_type": "template", + "flow_name": "activity_three_options", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_time_machine": { + "flow_type": "template", + "flow_name": "activity_time_machine", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_two_truths": { + "flow_type": "template", + "flow_name": "activity_two_truths", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_whats_new": { + "flow_type": "template", + "flow_name": "activity_whats_new", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "activity_yes_no_maybe": { + "flow_type": "template", + "flow_name": "activity_yes_no_maybe", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_activities.xlsx" + }, + "app_launch_calculations": { + "flow_type": "template", + "flow_name": "app_launch_calculations", + "process_on_start": 2, + "_xlsxPath": "global/campaigns/timing_calculations.xlsx" + }, + "app_menu": { + "flow_type": "template", + "flow_name": "app_menu", + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" + }, + "app_menu_enter_dev_mode": { + "flow_type": "template", + "flow_name": "app_menu_enter_dev_mode", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "app_menu_exit_dev_mode": { + "flow_type": "template", + "flow_name": "app_menu_exit_dev_mode", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "app_menu_plh": { + "flow_type": "template", + "flow_name": "app_menu_plh", + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" + }, + "app_menu_reset_app_pop": { + "flow_type": "template", + "flow_name": "app_menu_reset_app_pop", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "app_menu_settings": { + "flow_type": "template", + "flow_name": "app_menu_settings", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "app_menu_unlock_workshops_pop": { + "flow_type": "template", + "flow_name": "app_menu_unlock_workshops_pop", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "app_update_complete": { + "flow_type": "template", + "flow_name": "app_update_complete", + "_xlsxPath": "global/core_templates/app_update.xlsx" + }, + "banner": { + "flow_type": "template", + "flow_name": "banner", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "bereavement_practical": { + "flow_type": "template", + "flow_name": "bereavement_practical", + "_xlsxPath": "global/top_templates/parent_centre_templates/bereavement.xlsx" + }, + "bereavement_section": { + "flow_type": "template", + "flow_name": "bereavement_section", + "_xlsxPath": "global/top_templates/parent_centre_templates/bereavement.xlsx" + }, + "bereavement_self": { + "flow_type": "template", + "flow_name": "bereavement_self", + "_xlsxPath": "global/top_templates/parent_centre_templates/bereavement.xlsx" + }, + "bereavement_teen": { + "flow_type": "template", + "flow_name": "bereavement_teen", + "_xlsxPath": "global/top_templates/parent_centre_templates/bereavement.xlsx" + }, + "box_audio": { + "flow_type": "template", + "flow_name": "box_audio", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_buttons": { + "flow_type": "template", + "flow_name": "box_buttons", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_combo_box": { + "flow_type": "template", + "flow_name": "box_combo_box", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_content": { + "flow_type": "template", + "flow_name": "box_content", + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" + }, + "box_duo": { + "flow_type": "template", + "flow_name": "box_duo", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "box_duo_combo_box": { + "flow_type": "template", + "flow_name": "box_duo_combo_box", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_duo_radio_buttons": { + "flow_type": "template", + "flow_name": "box_duo_radio_buttons", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_hp_review": { + "flow_type": "template", + "flow_name": "box_hp_review", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_image": { + "flow_type": "template", + "flow_name": "box_image", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_image_more": { + "flow_type": "template", + "flow_name": "box_image_more", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_multi_1": { + "flow_type": "template", + "flow_name": "box_multi_1", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_multi_2": { + "flow_type": "template", + "flow_name": "box_multi_2", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_multi_radio_buttons": { + "flow_type": "template", + "flow_name": "box_multi_radio_buttons", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_number_selector": { + "flow_type": "template", + "flow_name": "box_number_selector", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_parent_point_counter": { + "flow_type": "template", + "flow_name": "box_parent_point_counter", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_radio_buttons": { + "flow_type": "template", + "flow_name": "box_radio_buttons", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_radio_buttons_emo_temp": { + "flow_type": "template", + "flow_name": "box_radio_buttons_emo_temp", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_story": { + "flow_type": "template", + "flow_name": "box_story", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_story_pages": { + "flow_type": "template", + "flow_name": "box_story_pages", + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" + }, + "box_story_scroll": { + "flow_type": "template", + "flow_name": "box_story_scroll", + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" + }, + "box_survey_question": { + "flow_type": "template", + "flow_name": "box_survey_question", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_text_box": { + "flow_type": "template", + "flow_name": "box_text_box", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "box_timer": { + "flow_type": "template", + "flow_name": "box_timer", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "box_tools": { + "flow_type": "template", + "flow_name": "box_tools", + "_xlsxPath": "global/core_templates/core_templates_essential_tools.xlsx" + }, + "box_video": { + "flow_type": "template", + "flow_name": "box_video", + "_xlsxPath": "global/core_templates/core_templates_workshop_boxes.xlsx" + }, + "care_together": { + "flow_type": "template", + "flow_name": "care_together", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "caregiver_testimonial_text": { + "flow_type": "template", + "flow_name": "caregiver_testimonial_text", + "_xlsxPath": "global/mode_templates/listen.xlsx" + }, + "change_thoughts": { + "flow_type": "template", + "flow_name": "change_thoughts", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx" + }, + "change_thoughts_sect": { + "flow_type": "template", + "flow_name": "change_thoughts_sect", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx" + }, + "lets_slow_down_lyrics": { + "flow_type": "template", + "flow_name": "lets_slow_down_lyrics", + "flow_subtype": "common_with_parent_text", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "demo_emo_check_in": { + "flow_type": "template", + "flow_name": "demo_emo_check_in", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "demo_navigation": { + "flow_type": "template", + "flow_name": "demo_navigation", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "demo_reset_app_pop": { + "flow_type": "template", + "flow_name": "demo_reset_app_pop", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "demo_self_care_stepper": { + "flow_type": "template", + "flow_name": "demo_self_care_stepper", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "demo_workshop_unlock_pop": { + "flow_type": "template", + "flow_name": "demo_workshop_unlock_pop", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "demographics_teen_age": { + "flow_type": "template", + "flow_name": "demographics_teen_age", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "ending": { + "flow_type": "template", + "flow_name": "ending", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "essential_tool": { + "flow_type": "template", + "flow_name": "essential_tool", + "_xlsxPath": "global/core_templates/core_templates_essential_tools.xlsx" + }, + "essential_tools": { + "flow_type": "template", + "flow_name": "essential_tools", + "_xlsxPath": "global/core_templates/core_templates_essential_tools.xlsx" + }, + "feature_feedback_debug": { + "flow_type": "template", + "flow_name": "feature_feedback_debug", + "comments": "Used in /feedback debug page", + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" + }, + "feature_feedback_default": { + "flow_type": "template", + "flow_name": "feature_feedback_default", + "comments": "Default general feedback form", + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" + }, + "feature_feedback_text_select": { + "flow_type": "template", + "flow_name": "feature_feedback_text_select", + "comments": "Default text-select feedback form", + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" + }, + "footer": { + "flow_type": "template", + "flow_name": "footer", + "_xlsxPath": "global_modular/core_templates/footer.xlsx" + }, + "home_practice": { + "flow_type": "template", + "flow_name": "home_practice", + "_xlsxPath": "global/mode_templates/home_practice.xlsx" + }, + "home_practice_challenges": { + "flow_type": "template", + "flow_name": "home_practice_challenges", + "_xlsxPath": "global/mode_templates/home_practice.xlsx" + }, + "home_practice_review": { + "flow_type": "template", + "flow_name": "home_practice_review", + "_xlsxPath": "global/mode_templates/home_practice.xlsx" + }, + "home_screen": { + "flow_type": "template", + "flow_name": "home_screen", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx", + "_overrides": { + "home_screen_modular": "@fields._app_skin == \"modular\"" + } + }, + "home_screen_modular": { + "flow_type": "template", + "flow_name": "home_screen_modular", + "override_target": "home_screen", + "override_condition": "@fields._app_skin == \"modular\"", + "_xlsxPath": "global_modular/core_templates/home_screen_modular.xlsx" + }, + "hp_review_other_challenge": { + "flow_type": "template", + "flow_name": "hp_review_other_challenge", + "_xlsxPath": "global/mode_templates/home_practice.xlsx" + }, + "hp_review_tips_feedback": { + "flow_type": "template", + "flow_name": "hp_review_tips_feedback", + "_xlsxPath": "global/mode_templates/home_practice.xlsx" + }, + "in_week_message": { + "flow_type": "template", + "flow_name": "in_week_message", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "language_select": { + "flow_type": "template", + "flow_name": "language_select", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx", + "_overrides": { + "language_select_za": "@fields._deployment_name == \"plh_za\"", + "language_select_tz": "@fields._deployment_name == \"plh_tz\"" + } + }, + "language_select_tz": { + "flow_type": "template", + "flow_name": "language_select_tz", + "override_target": "language_select", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/core_templates/core_templates_settings_tz.xlsx" + }, + "language_select_za": { + "flow_type": "template", + "flow_name": "language_select_za", + "override_target": "language_select", + "override_condition": "@fields._deployment_name == \"plh_za\"", + "_xlsxPath": "za/core_templates/core_templates_settings_za.xlsx" + }, + "learn_temp": { + "flow_type": "template", + "flow_name": "learn_temp", + "_xlsxPath": "global/mode_templates/read.xlsx" + }, + "app_menu_privacy_policy": { + "flow_type": "template", + "flow_name": "app_menu_privacy_policy", + "flow_subtype": "legal_terms", + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" + }, + "app_menu_terms": { + "flow_type": "template", + "flow_name": "app_menu_terms", + "flow_subtype": "legal_terms", + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" + }, + "lib_act_change_thoughts": { + "flow_type": "template", + "flow_name": "lib_act_change_thoughts", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_covid": { + "flow_type": "template", + "flow_name": "lib_act_covid", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_deal_with_news": { + "flow_type": "template", + "flow_name": "lib_act_deal_with_news", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_help_teen_choose": { + "flow_type": "template", + "flow_name": "lib_act_help_teen_choose", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_something_fun": { + "flow_type": "template", + "flow_name": "lib_act_something_fun", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "lib_act_talk_to_teen": { + "flow_type": "template", + "flow_name": "lib_act_talk_to_teen", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_teen_feelings": { + "flow_type": "template", + "flow_name": "lib_act_teen_feelings", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_teen_influences": { + "flow_type": "template", + "flow_name": "lib_act_teen_influences", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx" + }, + "lib_act_tools": { + "flow_type": "template", + "flow_name": "lib_act_tools", + "_xlsxPath": "global/core_templates/core_templates_essential_tools.xlsx" + }, + "lib_act_w_1on1": { + "flow_type": "template", + "flow_name": "lib_act_w_1on1", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_celebrate": { + "flow_type": "template", + "flow_name": "lib_act_w_celebrate", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_consequence": { + "flow_type": "template", + "flow_name": "lib_act_w_consequence", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_crisis": { + "flow_type": "template", + "flow_name": "lib_act_w_crisis", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_instruct": { + "flow_type": "template", + "flow_name": "lib_act_w_instruct", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_money": { + "flow_type": "template", + "flow_name": "lib_act_w_money", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_praise": { + "flow_type": "template", + "flow_name": "lib_act_w_praise", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_rules": { + "flow_type": "template", + "flow_name": "lib_act_w_rules", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_safe": { + "flow_type": "template", + "flow_name": "lib_act_w_safe", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_self_care": { + "flow_type": "template", + "flow_name": "lib_act_w_self_care", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_solve": { + "flow_type": "template", + "flow_name": "lib_act_w_solve", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "lib_act_w_stress": { + "flow_type": "template", + "flow_name": "lib_act_w_stress", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx" + }, + "library_activity": { + "flow_type": "template", + "flow_name": "library_activity", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "listen": { + "flow_type": "template", + "flow_name": "listen", + "_xlsxPath": "global/mode_templates/listen.xlsx" + }, + "m_hp_reminder": { + "flow_type": "template", + "flow_name": "m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_parent_points_overview": { + "flow_type": "template", + "flow_name": "m_parent_points_overview", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_praise": { + "flow_type": "template", + "flow_name": "m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_relax": { + "flow_type": "template", + "flow_name": "m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_something_fun": { + "flow_type": "template", + "flow_name": "m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_workshop_in_progress": { + "flow_type": "template", + "flow_name": "m_workshop_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_workshop_released": { + "flow_type": "template", + "flow_name": "m_workshop_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_workshop_reminder": { + "flow_type": "template", + "flow_name": "m_workshop_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "m_workshop_tomorrow": { + "flow_type": "template", + "flow_name": "m_workshop_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" + }, + "message_navigation": { + "flow_type": "template", + "flow_name": "message_navigation", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "module_card": { + "flow_type": "template", + "flow_name": "module_card", + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" + }, + "module_details": { + "flow_type": "template", + "flow_name": "module_details", + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" + }, + "module_overview": { + "flow_type": "template", + "flow_name": "module_overview", + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" + }, + "nav_buttons": { + "flow_type": "template", + "flow_name": "nav_buttons", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "organisation_registration": { + "flow_type": "template", + "flow_name": "organisation_registration", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx", + "_overrides": { + "organisation_registration_za": "@fields._deployment_name == \"plh_za\"", + "organisation_registration_tz": "@fields._deployment_name == \"plh_tz\"" + } + }, + "organisation_registration_tz": { + "flow_type": "template", + "flow_name": "organisation_registration_tz", + "override_target": "organisation_registration", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/core_templates/core_templates_settings_tz.xlsx" + }, + "organisation_registration_za": { + "flow_type": "template", + "flow_name": "organisation_registration_za", + "override_target": "organisation_registration", + "override_condition": "@fields._deployment_name == \"plh_za\"", + "_xlsxPath": "za/core_templates/core_templates_settings_za.xlsx" + }, + "pair": { + "flow_type": "template", + "flow_name": "pair", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "pair_hidden": { + "flow_type": "template", + "flow_name": "pair_hidden", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "parent_centre": { + "flow_type": "template", + "flow_name": "parent_centre", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_activities": { + "flow_type": "template", + "flow_name": "parent_centre_activities", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "parent_centre_bereavement": { + "flow_type": "template", + "flow_name": "parent_centre_bereavement", + "_xlsxPath": "global/top_templates/parent_centre_templates/bereavement.xlsx" + }, + "parent_centre_covid": { + "flow_type": "template", + "flow_name": "parent_centre_covid", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid.xlsx" + }, + "parent_centre_covid_temp": { + "flow_type": "template", + "flow_name": "parent_centre_covid_temp", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_covid_uni_pop_up": { + "flow_type": "template", + "flow_name": "parent_centre_covid_uni_pop_up", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_covid_who_pop_up": { + "flow_type": "template", + "flow_name": "parent_centre_covid_who_pop_up", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_customisation": { + "flow_type": "template", + "flow_name": "parent_centre_customisation", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_essential_tools": { + "flow_type": "template", + "flow_name": "parent_centre_essential_tools", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_help": { + "flow_type": "template", + "flow_name": "parent_centre_help", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_message_archive": { + "flow_type": "template", + "flow_name": "parent_centre_message_archive", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_my_activities": { + "flow_type": "template", + "flow_name": "parent_centre_my_activities", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "parent_centre_my_relaxes": { + "flow_type": "template", + "flow_name": "parent_centre_my_relaxes", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "parent_centre_my_tips": { + "flow_type": "template", + "flow_name": "parent_centre_my_tips", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_relax_and_act": { + "flow_type": "template", + "flow_name": "parent_centre_relax_and_act", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "parent_centre_relaxes": { + "flow_type": "template", + "flow_name": "parent_centre_relaxes", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "parent_centre_support_category": { + "flow_type": "template", + "flow_name": "parent_centre_support_category", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_support_con": { + "flow_type": "template", + "flow_name": "parent_centre_support_con", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx", + "_overrides": { + "parent_centre_support_con_tz": "@fields._deployment_name == \"plh_tz\"" + } + }, + "parent_centre_support_con_tz": { + "flow_type": "template", + "flow_name": "parent_centre_support_con_tz", + "override_target": "parent_centre_support_con", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/core_templates/core_templates_parent_centre_tz.xlsx" + }, + "parent_centre_technical_support": { + "flow_type": "template", + "flow_name": "parent_centre_technical_support", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_centre_testimonies": { + "flow_type": "template", + "flow_name": "parent_centre_testimonies", + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" + }, + "parent_point_dashed_box": { + "flow_type": "template", + "flow_name": "parent_point_dashed_box", + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" + }, + "parent_point_info": { + "flow_type": "template", + "flow_name": "parent_point_info", + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" + }, + "parent_point_tile": { + "flow_type": "template", + "flow_name": "parent_point_tile", + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" + }, + "parent_point_tiles": { + "flow_type": "template", + "flow_name": "parent_point_tiles", + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" + }, + "parent_points": { + "flow_type": "template", + "flow_name": "parent_points", + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" + }, + "parenting_tips": { + "flow_type": "template", + "flow_name": "parenting_tips", + "_xlsxPath": "global/top_templates/parent_centre_templates/help_me_now.xlsx" + }, + "parenting_tips_content": { + "flow_type": "template", + "flow_name": "parenting_tips_content", + "_xlsxPath": "global/top_templates/parent_centre_templates/help_me_now.xlsx" + }, + "parenting_tips_reply": { + "flow_type": "template", + "flow_name": "parenting_tips_reply", + "_xlsxPath": "global/top_templates/parent_centre_templates/help_me_now.xlsx" + }, + "question_time": { + "flow_type": "template", + "flow_name": "question_time", + "_xlsxPath": "global/mode_templates/question_time.xlsx" + }, + "read": { + "flow_type": "template", + "flow_name": "read", + "_xlsxPath": "global/mode_templates/read.xlsx" + }, + "read_temp": { + "flow_type": "template", + "flow_name": "read_temp", + "_xlsxPath": "global/mode_templates/read.xlsx" + }, + "reflect_individual": { + "flow_type": "template", + "flow_name": "reflect_individual", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "reflect_together": { + "flow_type": "template", + "flow_name": "reflect_together", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "reflect_together_pop": { + "flow_type": "template", + "flow_name": "reflect_together_pop", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "relax": { + "flow_type": "template", + "flow_name": "relax", + "_xlsxPath": "global/mode_templates/relax.xlsx" + }, + "relax_10_text": { + "flow_type": "template", + "module": "consequence", + "flow_name": "relax_10_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_11_text": { + "flow_type": "template", + "module": "solve", + "flow_name": "relax_11_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_12_text": { + "flow_type": "template", + "module": "safe", + "flow_name": "relax_12_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_13_text": { + "flow_type": "template", + "module": "crisis", + "flow_name": "relax_13_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_14_text": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "relax_14_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_15_text": { + "flow_type": "template", + "flow_name": "relax_15_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_16_text": { + "flow_type": "template", + "flow_name": "relax_16_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_17_text": { + "flow_type": "template", + "flow_name": "relax_17_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_18_text": { + "flow_type": "template", + "flow_name": "relax_18_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_19_text": { + "flow_type": "template", + "flow_name": "relax_19_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_1_text": { + "flow_type": "template", + "flow_name": "relax_1_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_20_text": { + "flow_type": "template", + "flow_name": "relax_20_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_21_text": { + "flow_type": "template", + "flow_name": "relax_21_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_22_text": { + "flow_type": "template", + "flow_name": "relax_22_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_23_text": { + "flow_type": "template", + "flow_name": "relax_23_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_24_text": { + "flow_type": "template", + "flow_name": "relax_24_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_2_text": { + "flow_type": "template", + "module": "1on1", + "flow_name": "relax_2_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_3_text": { + "flow_type": "template", + "module": "praise", + "flow_name": "relax_3_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_4_text": { + "flow_type": "template", + "module": "instruct", + "flow_name": "relax_4_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_5_text": { + "flow_type": "template", + "module": "self_care", + "flow_name": "relax_5_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_6_text": { + "flow_type": "template", + "flow_name": "relax_6_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_7_text": { + "flow_type": "template", + "module": "stress", + "flow_name": "relax_7_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_8_text": { + "flow_type": "template", + "module": "money", + "flow_name": "relax_8_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_9_text": { + "flow_type": "template", + "module": "rules", + "flow_name": "relax_9_text", + "_xlsxPath": "global/top_templates/parent_centre_templates/databank_relax.xlsx" + }, + "relax_text": { + "flow_type": "template", + "flow_name": "relax_text", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "self_care_accordion_item": { + "flow_type": "template", + "flow_name": "self_care_accordion_item", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + }, + "settings_customise": { + "flow_type": "template", + "flow_name": "settings_customise", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "setup_and_survey_stepper": { + "flow_type": "template", + "flow_name": "setup_and_survey_stepper", + "_xlsxPath": "global/top_templates/survey_templates/merged_setup_and_survey_welcome.xlsx" + }, + "sign_in": { + "flow_type": "template", + "flow_name": "sign_in", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "skin_select": { + "flow_type": "template", + "flow_name": "skin_select", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "something_fun": { + "flow_type": "template", + "flow_name": "something_fun", + "_xlsxPath": "global/core_templates/core_templates_relax_and_activities.xlsx" + }, + "splash_funders": { + "flow_type": "template", + "flow_name": "splash_funders", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "splash_partners_1": { + "flow_type": "template", + "flow_name": "splash_partners_1", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "splash_partners_2": { + "flow_type": "template", + "flow_name": "splash_partners_2", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "splash_screens": { + "flow_type": "template", + "flow_name": "splash_screens", + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" + }, + "suggestions": { + "flow_type": "template", + "flow_name": "suggestions", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "suggestions_image": { + "flow_type": "template", + "flow_name": "suggestions_image", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "suggestions_ticks": { + "flow_type": "template", + "flow_name": "suggestions_ticks", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "survey_activity": { + "flow_type": "template", + "flow_name": "survey_activity", + "_xlsxPath": "global/mode_templates/survey_activity.xlsx" + }, + "survey_final_outro": { + "flow_type": "template", + "flow_name": "survey_final_outro", + "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" + }, + "survey_final_stepper": { + "flow_type": "template", + "flow_name": "survey_final_stepper", + "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" + }, + "survey_intro": { + "flow_type": "template", + "flow_name": "survey_intro", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_nav_buttons": { + "flow_type": "template", + "flow_name": "survey_nav_buttons", + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" + }, + "survey_outro": { + "flow_type": "template", + "flow_name": "survey_outro", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_cme": { + "flow_type": "template", + "flow_name": "survey_question_cme", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_cmp": { + "flow_type": "template", + "flow_name": "survey_question_cmp", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_fin": { + "flow_type": "template", + "flow_name": "survey_question_fin", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_orp": { + "flow_type": "template", + "flow_name": "survey_question_orp", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_pcsap": { + "flow_type": "template", + "flow_name": "survey_question_pcsap", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_pde": { + "flow_type": "template", + "flow_name": "survey_question_pde", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_ppf": { + "flow_type": "template", + "flow_name": "survey_question_ppf", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_ppp": { + "flow_type": "template", + "flow_name": "survey_question_ppp", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_pst": { + "flow_type": "template", + "flow_name": "survey_question_pst", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_psu": { + "flow_type": "template", + "flow_name": "survey_question_psu", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_question_ris": { + "flow_type": "template", + "flow_name": "survey_question_ris", + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" + }, + "survey_stepper": { + "flow_type": "template", + "flow_name": "survey_stepper", + "_xlsxPath": "global/core_templates/core_templates_surveys.xlsx" + }, + "survey_stepper_actions": { + "flow_type": "template", + "flow_name": "survey_stepper_actions", + "_xlsxPath": "global/core_templates/core_templates_surveys.xlsx" + }, + "survey_warning": { + "flow_type": "template", + "flow_name": "survey_warning", + "_xlsxPath": "global/top_templates/survey_templates/survey_warnings.xlsx" + }, + "survey_warning_na": { + "flow_type": "template", + "flow_name": "survey_warning_na", + "_xlsxPath": "global/top_templates/survey_templates/survey_warnings.xlsx" + }, + "survey_warning_no_adults": { + "flow_type": "template", + "flow_name": "survey_warning_no_adults", + "_xlsxPath": "global/top_templates/survey_templates/survey_warnings.xlsx" + }, + "survey_warning_no_teens": { + "flow_type": "template", + "flow_name": "survey_warning_no_teens", + "_xlsxPath": "global/top_templates/survey_templates/survey_warnings.xlsx" + }, + "survey_warning_skip_question": { + "flow_type": "template", + "flow_name": "survey_warning_skip_question", + "_xlsxPath": "global/top_templates/survey_templates/survey_warnings.xlsx" + }, + "survey_welcome_outro": { + "flow_type": "template", + "flow_name": "survey_welcome_outro", + "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" + }, + "survey_welcome_repeat_stepper": { + "flow_type": "template", + "flow_name": "survey_welcome_repeat_stepper", + "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" + }, + "survey_welcome_stepper": { + "flow_type": "template", + "flow_name": "survey_welcome_stepper", + "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" + }, + "talk_together": { + "flow_type": "template", + "flow_name": "talk_together", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "task_card": { + "flow_type": "template", + "flow_name": "task_card", + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" + }, + "task_group_pair": { + "flow_type": "template", + "flow_name": "task_group_pair", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "teen_testimonial_text": { + "flow_type": "template", + "flow_name": "teen_testimonial_text", + "_xlsxPath": "global/mode_templates/listen.xlsx" + }, + "things_to_do": { + "flow_type": "template", + "flow_name": "things_to_do", + "_xlsxPath": "global_modular/core_templates/home_screen_modular.xlsx" + }, + "think_temp": { + "flow_type": "template", + "flow_name": "think_temp", + "_xlsxPath": "global/mode_templates/read.xlsx" + }, + "timing_calculations": { + "flow_type": "template", + "flow_name": "timing_calculations", + "process_on_start": 1, + "_xlsxPath": "global/campaigns/timing_calculations.xlsx" + }, + "tool_tile": { + "flow_type": "template", + "flow_name": "tool_tile", + "_xlsxPath": "global/core_templates/core_templates_essential_tools.xlsx" + }, + "tools_activity": { + "flow_type": "template", + "flow_name": "tools_activity", + "_xlsxPath": "global/mode_templates/essential_tools_activity.xlsx" + }, + "tools_deal_with_news": { + "flow_type": "template", + "flow_name": "tools_deal_with_news", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx" + }, + "tools_help_teen_choose": { + "flow_type": "template", + "flow_name": "tools_help_teen_choose", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx" + }, + "tools_talk_to_teen": { + "flow_type": "template", + "flow_name": "tools_talk_to_teen", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx" + }, + "topic_intro": { + "flow_type": "template", + "flow_name": "topic_intro", + "_xlsxPath": "global/mode_templates/listen.xlsx" + }, + "try_together": { + "flow_type": "template", + "flow_name": "try_together", + "_xlsxPath": "global/mode_templates/talk_together.xlsx" + }, + "understand_acc_sect": { + "flow_type": "template", + "flow_name": "understand_acc_sect", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx" + }, + "understand_teen_feelings": { + "flow_type": "template", + "flow_name": "understand_teen_feelings", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx" + }, + "understand_teen_influences": { + "flow_type": "template", + "flow_name": "understand_teen_influences", + "_xlsxPath": "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx" + }, + "unlock_workshops": { + "flow_type": "template", + "flow_name": "unlock_workshops", + "process_on_start": 3, + "_xlsxPath": "global/campaigns/timing_calculations.xlsx" + }, + "user_code": { + "flow_type": "template", + "flow_name": "user_code", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "user_info": { + "flow_type": "template", + "flow_name": "user_info", + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + }, + "w_1on1_care_together": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_care_together_pop": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_care_together_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_ending": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_home_practice": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_hp_challenges": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + }, + "w_1on1_hp_highlights": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_hp_highlights", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + }, + "w_1on1_hp_review": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + }, + "w_1on1_intro": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_intro_text": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_m_hp_reminder": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_praise": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_relax": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_something_fun": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_w_in_progress": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_w_released": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_w_reminder": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_m_w_tomorrow": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + }, + "w_1on1_messages": { + "flow_type": "template", + "flow_name": "w_1on1_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_1on1_question": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_question", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_relax": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_stepper": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_summary": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_talk": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_talk", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_talk_pop": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_talk_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_tools": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_tools_activity": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_1on1_welcome_individual": { + "flow_type": "template", + "module": "1on1", + "flow_name": "w_1on1_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_1on1.xlsx" + }, + "w_celebrate_care_together": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_ending": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_intro": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_intro_text": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_reflect_individual": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_reflect_together": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_relax": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_stepper": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_summary": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_survey_activity": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_survey_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_talk_1": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_talk_2": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_think": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_think", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_think_text": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_think_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_tools": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_tools_activity": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_welcome_individual": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_celebrate_welcome_together": { + "flow_type": "template", + "module": "celebrate", + "flow_name": "w_celebrate_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_celebrate.xlsx" + }, + "w_consequence_care_together": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_ending": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_example_1": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_example_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_example_1_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_example_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_example_2": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_example_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_example_3": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_example_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_example_3_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_example_3_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_home_practice": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_home_practice_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_home_practice_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_hp_challenges": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" + }, + "w_consequence_hp_review": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" + }, + "w_consequence_intro": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_intro_text": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_learn_1_temp": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_learn_1_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_learn_2_temp": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_learn_2_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_m_hp_reminder": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_praise": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_relax": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_something_fun": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_w_in_progress": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_w_released": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_w_reminder": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_m_w_tomorrow": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + }, + "w_consequence_messages": { + "flow_type": "template", + "flow_name": "w_consequence_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_consequence_question_1": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_question_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_question_2": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_read_1": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_read_3": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_read_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_reflect_ind": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_reflect_ind", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_reflect_together": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_relax": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_stepper": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_summary": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_talk_1": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_talk_1_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_talk_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_talk_2": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_talk_3": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_talk_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_talk_3_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_talk_3_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_tools": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_tools_activity": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_try": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_try", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_try_pop": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_try_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_welcome_ind": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_welcome_ind", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_consequence_welcome_together": { + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" + }, + "w_crisis_care_together": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_ending": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_home_practice": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_hp_challenges": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_crisis_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" + }, + "w_crisis_hp_review": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_crisis_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" + }, + "w_crisis_intro": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_intro_text": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_learn_temp": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_learn_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_m_hp_reminder": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_praise": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_relax": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_something_fun": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_w_in_progress": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_w_released": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_w_reminder": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_m_w_tomorrow": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + }, + "w_crisis_messages": { + "flow_type": "template", + "flow_name": "w_crisis_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_crisis_question_1": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_question_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_question_2": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_read_1": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_read_2": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_reflect_individual": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_reflect_together": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_relax": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_stepper": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_summary": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_talk_1": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_talk_1_pop": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_talk_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_talk_2": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_tools": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_tools_activity": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_welcome_individual": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_crisis_welcome_together": { + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" + }, + "w_instruct_care_together": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_ending": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_home_practice": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_hp_challenges": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + }, + "w_instruct_hp_highlights": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_hp_highlights", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + }, + "w_instruct_hp_review": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + }, + "w_instruct_intro": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_intro_text": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_m_hp_reminder": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_praise": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_relax": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_something_fun": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_w_in_progress": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_w_released": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_w_reminder": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_m_w_tomorrow": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + }, + "w_instruct_messages": { + "flow_type": "template", + "flow_name": "w_instruct_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_instruct_question_1": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_question_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_question_2": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_read_1": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_read_2": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_reflect_individual": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_reflect_together": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_relax": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_stepper": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_summary": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_talk_1": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_talk_1_pop": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_talk_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_talk_2": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_talk_2_pop": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_talk_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_think_1_temp": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_think_1_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_tools": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_tools_activity": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_try": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_try", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_try_pop": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_try_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_welcome_individual": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_instruct_welcome_together": { + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" + }, + "w_money_care_together": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_ending": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_home_practice": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_hp_challenges": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" + }, + "w_money_hp_review": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" + }, + "w_money_intro": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_intro_text": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_1_temp": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_1_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_2_pop": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_2_temp": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_2_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_3_temp": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_3_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_4_temp": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_4_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_learn_5_temp": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_learn_5_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_m_hp_reminder": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_praise": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_relax": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_something_fun": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_w_in_progress": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_w_released": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_w_reminder": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_m_w_tomorrow": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + }, + "w_money_messages": { + "flow_type": "template", + "flow_name": "w_money_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_money_read_1": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_read_2": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_read_3": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_reflect_individual": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_reflect_together": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_relax": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_stepper": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_summary": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tools": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tools_activity": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_1": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_1_pop": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_2": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_2_pop": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_3": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_tq_3_pop": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_tq_3_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_welcome_individual": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_money_welcome_together": { + "flow_type": "template", + "module": "money", + "flow_name": "w_money_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" + }, + "w_praise_care_together": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_ending": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_home_practice": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_hp_challenges": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" + }, + "w_praise_hp_review": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" + }, + "w_praise_intro": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_intro_text": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_m_hp_reminder": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_praise": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_relax": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_something_fun": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_w_in_progress": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_w_released": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_w_reminder": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_m_w_tomorrow": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + }, + "w_praise_messages": { + "flow_type": "template", + "flow_name": "w_praise_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_praise_question_1": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_question_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_question_2": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_read": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_read", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_reflect_individual": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_reflect_together": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_relax": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_stepper": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_summary": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_talk_1": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_talk_2": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_talk_2_pop": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_talk_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_tools": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_tools_activity": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_try": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_try", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_try_pop": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_try_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_welcome_individual": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_praise_welcome_together": { + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" + }, + "w_rules_care_together": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_ending": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_home_practice": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_hp_challenges": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" + }, + "w_rules_hp_review": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" + }, + "w_rules_intro": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_intro_text": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_learn_temp": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_learn_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_m_hp_reminder": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_praise": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_relax": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_something_fun": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_w_in_progress": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_w_released": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_w_reminder": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_m_w_tomorrow": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + }, + "w_rules_messages": { + "flow_type": "template", + "flow_name": "w_rules_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_rules_question": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_question", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_read_1": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_read_2": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_reflect_individual": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_reflect_together": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_relax": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_stepper": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_summary": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_talk": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_talk", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_talk_pop_1": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_talk_pop_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_talk_pop_2": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_talk_pop_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_tools": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_tools_activity": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_try": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_try", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_try_pop": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_try_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_welcome_individual": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_rules_welcome_together": { + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" + }, + "w_safe_care_together": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_ending": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_home_practice": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_hp_challenges": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" + }, + "w_safe_hp_review": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" + }, + "w_safe_intro": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_intro_text": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_learn_individual_steps": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_learn_individual_steps", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_learn_individual_temp": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_learn_individual_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_learn_together_temp": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_learn_together_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_m_hp_reminder": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_praise": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_relax": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_something_fun": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_w_in_progress": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_w_released": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_w_reminder": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_m_w_tomorrow": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + }, + "w_safe_messages": { + "flow_type": "template", + "flow_name": "w_safe_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_safe_question_1": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_question_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_question_2": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_read_1": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_read_2": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_reflect_individual": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_reflect_together": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_relax": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_stepper": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_summary": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_talk_1": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_talk_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_talk_1_pop": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_talk_1_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_talk_2": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_talk_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_talk_2_pop": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_talk_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_tools": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_tools_activity": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_welcome_individual": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_safe_welcome_together": { + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" + }, + "w_self_care_ending": { + "flow_type": "template", + "flow_name": "w_self_care_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_home_practice": { + "flow_type": "template", + "flow_name": "w_self_care_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_intro": { + "flow_type": "template", + "flow_name": "w_self_care_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_intro_text": { + "flow_type": "template", + "flow_name": "w_self_care_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_m_hp_reminder": { + "flow_type": "template", + "module": "self_care", + "flow_name": "w_self_care_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + }, + "w_self_care_m_relax": { + "flow_type": "template", + "module": "self_care", + "flow_name": "w_self_care_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + }, + "w_self_care_m_w_tomorrow": { + "flow_type": "template", + "module": "self_care", + "flow_name": "w_self_care_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + }, + "w_self_care_messages": { + "flow_type": "template", + "flow_name": "w_self_care_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_self_care_recognise": { + "flow_type": "template", + "flow_name": "w_self_care_recognise", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_recognise_pop": { + "flow_type": "template", + "flow_name": "w_self_care_recognise_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_relax": { + "flow_type": "template", + "flow_name": "w_self_care_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_reward": { + "flow_type": "template", + "flow_name": "w_self_care_reward", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx", + "_overrides": { + "w_self_care_reward_tz": "@fields._deployment_name == \"plh_tz\"" + } + }, + "w_self_care_reward_pop": { + "flow_type": "template", + "flow_name": "w_self_care_reward_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx", + "_overrides": { + "w_self_care_reward_pop_tz": "@fields._deployment_name == \"plh_tz\"" + } + }, + "w_self_care_reward_pop_tz": { + "flow_type": "template", + "flow_name": "w_self_care_reward_pop_tz", + "override_target": "w_self_care_reward_pop", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/top_templates/workshop_templates/workshop_self_care_tz.xlsx" + }, + "w_self_care_reward_tz": { + "flow_type": "template", + "flow_name": "w_self_care_reward_tz", + "override_target": "w_self_care_reward", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "_xlsxPath": "tz/top_templates/workshop_templates/workshop_self_care_tz.xlsx" + }, + "w_self_care_stepper": { + "flow_type": "template", + "flow_name": "w_self_care_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_summary": { + "flow_type": "template", + "flow_name": "w_self_care_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_survey_activity": { + "flow_type": "template", + "flow_name": "w_self_care_survey_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_tools": { + "flow_type": "template", + "flow_name": "w_self_care_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_tools_activity": { + "flow_type": "template", + "flow_name": "w_self_care_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_self_care_welcome_individual": { + "flow_type": "template", + "flow_name": "w_self_care_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + }, + "w_solve_care_together": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_ending": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_home_practice": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_home_practice_pop": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_home_practice_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_hp_challenges": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" + }, + "w_solve_hp_review": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" + }, + "w_solve_intro": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_intro_text": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_learn_temp": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_learn_temp", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_m_hp_reminder": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_praise": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_relax": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_something_fun": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_w_in_progress": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_w_released": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_w_reminder": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_m_w_tomorrow": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + }, + "w_solve_messages": { + "flow_type": "template", + "flow_name": "w_solve_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_solve_read_1": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_read_2": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_reflect_individual": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_reflect_together": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_relax": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_solution_1": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_solution_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_solution_2": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_solution_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_solution_3": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_solution_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_stepper": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_summary": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_talk": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_talk", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_think": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_think", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_tools": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_tools_activity": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_try": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_try", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_welcome_individual": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_solve_welcome_together": { + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" + }, + "w_stress_care_together": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_care_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_ending": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_ending", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_home_practice": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_home_practice", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_hp_challenges": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_hp_challenges", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" + }, + "w_stress_hp_review": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_hp_review", + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" + }, + "w_stress_intro": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_intro", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_intro_text": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_intro_text", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_m_hp_reminder": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_hp_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_praise": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_praise", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_relax": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_relax", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_something_fun": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_something_fun", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_w_in_progress": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_w_in_progress", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_w_released": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_w_released", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_w_reminder": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_w_reminder", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_m_w_tomorrow": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_m_w_tomorrow", + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + }, + "w_stress_messages": { + "flow_type": "template", + "flow_name": "w_stress_messages", + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" + }, + "w_stress_question": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_question", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_question_2": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_question_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_question_2_pop": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_question_2_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_read_1": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_1", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_read_2": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_2", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_read_3": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_3", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_reflect_individual": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_reflect_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_reflect_together": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_reflect_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_relax": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_relax", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_stepper": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_stepper", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_summary": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_summary", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_talk": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_talk", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_talk_pop": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_talk_pop", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_tools": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_tools", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_tools_activity": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_tools_activity", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_welcome_individual": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_welcome_individual", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "w_stress_welcome_together": { + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_welcome_together", + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" + }, + "watch": { + "flow_type": "template", + "flow_name": "watch", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "weekly_workshops": { + "flow_type": "template", + "flow_name": "weekly_workshops", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + }, + "welcome_individual": { + "flow_type": "template", + "flow_name": "welcome_individual", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "welcome_together": { + "flow_type": "template", + "flow_name": "welcome_together", + "_xlsxPath": "global/mode_templates/welcome.xlsx" + }, + "workshop_accordion_item": { + "flow_type": "template", + "flow_name": "workshop_accordion_item", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + }, + "workshop_accordion_item_locked": { + "flow_type": "template", + "flow_name": "workshop_accordion_item_locked", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + }, + "workshop_activity": { + "flow_type": "template", + "flow_name": "workshop_activity", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "workshop_activity_old": { + "flow_type": "template", + "flow_name": "workshop_activity_old", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "workshop_completed_calc": { + "flow_type": "template", + "flow_name": "workshop_completed_calc", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "workshop_options_page": { + "flow_type": "template", + "flow_name": "workshop_options_page", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + }, + "workshop_setup_intro": { + "flow_type": "template", + "flow_name": "workshop_setup_intro", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "workshop_setup_q_1": { + "flow_type": "template", + "flow_name": "workshop_setup_q_1", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "workshop_setup_q_2": { + "flow_type": "template", + "flow_name": "workshop_setup_q_2", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "workshop_setup_q_3": { + "flow_type": "template", + "flow_name": "workshop_setup_q_3", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "workshop_setup_stepper": { + "flow_type": "template", + "flow_name": "workshop_setup_stepper", + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" + }, + "workshop_stepper": { + "flow_type": "template", + "flow_name": "workshop_stepper", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "workshop_stepper_actions": { + "flow_type": "template", + "flow_name": "workshop_stepper_actions", + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" + }, + "workshop_task_groups_test": { + "flow_type": "template", + "flow_name": "workshop_task_groups_test", + "_xlsxPath": "global/data/workshop_data/workshop_tasks_testing_templates.xlsx" + }, + "workshop_unlock": { + "flow_type": "template", + "flow_name": "workshop_unlock", + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + } + }, + "tour": { + "demo_essential_tools_tour": { + "flow_type": "tour", + "flow_name": "demo_essential_tools_tour", + "_xlsxPath": "global/demo_templates/demo_navigation.xlsx" + }, + "home_screen_modular_tour_intro": { + "flow_type": "tour", + "flow_name": "home_screen_modular_tour_intro", + "_xlsxPath": "global_modular/tours/home_screen_modular_tour.xlsx" + }, + "home_screen_modular_tour_menu": { + "flow_type": "tour", + "flow_name": "home_screen_modular_tour_menu", + "_xlsxPath": "global_modular/tours/home_screen_modular_tour.xlsx" + }, + "home_screen_tour_intro": { + "flow_type": "tour", + "flow_name": "home_screen_tour_intro", + "_xlsxPath": "global/tours/home_screen_tour.xlsx" + }, + "home_screen_tour_menu": { + "flow_type": "tour", + "flow_name": "home_screen_tour_menu", + "_xlsxPath": "global/tours/home_screen_tour.xlsx" + }, + "weekly_workshop_options_tour": { + "flow_type": "tour", + "flow_name": "weekly_workshop_options_tour", + "_xlsxPath": "global/tours/weekly_workshops_tour.xlsx" + } + } +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/activity_data_list.json b/packages/app-data/sheets/data_list/activity_data_list.json index 869cadf1bf..589c6c0c29 100644 --- a/packages/app-data/sheets/data_list/activity_data_list.json +++ b/packages/app-data/sheets/data_list/activity_data_list.json @@ -11,6 +11,8 @@ "favourite_field": "activity_reflect_positive_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "reflect_positive_completed", + "completed": "@fields.reflect_positive_completed", "title": "Reflect on the positive", "_translations": { "title": { @@ -35,6 +37,8 @@ "favourite_field": "activity_check_in_chat_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "check_in_chat_completed", + "completed": "@fields.check_in_chat_completed", "title": "Check-in chat", "_translations": { "title": { @@ -59,20 +63,15 @@ "favourite_field": "activity_dream_travel_favourite", "spend_time": true, "type": "chat_together", - "title": "Dream Travel", + "completed_field": "dream_travel_completed", + "completed": "@fields.dream_travel_completed", + "title": "Dream travel", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "Dream Travel" + "eng": "Dream travel" } } }, @@ -83,20 +82,15 @@ "favourite_field": "activity_famous_party_favourite", "spend_time": true, "type": "chat_together", - "title": "Famous Party", + "completed_field": "famous_party_completed", + "completed": "@fields.famous_party_completed", + "title": "Famous party", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "Famous Party" + "eng": "Famous party" } } }, @@ -107,6 +101,8 @@ "favourite_field": "activity_two_truths_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "two_truths_completed", + "completed": "@fields.two_truths_completed", "title": "Two truths, one lie", "_translations": { "title": { @@ -131,20 +127,15 @@ "favourite_field": "activity_time_machine_favourite", "spend_time": true, "type": "chat_together", - "title": "Time Machine", + "completed_field": "time_machine_completed", + "completed": "@fields.time_machine_completed", + "title": "Time machine", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "Time Machine" + "eng": "Time machine" } } }, @@ -155,6 +146,8 @@ "favourite_field": "activity_superpowers_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "superpowers_completed", + "completed": "@fields.superpowers_completed", "title": "Superpowers", "_translations": { "title": { @@ -178,6 +171,8 @@ "favourite_field": "activity_friendly_chat_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "friendly_chat_completed", + "completed": "@fields.friendly_chat_completed", "title": "Just a friendly chat", "_translations": { "title": { @@ -201,20 +196,15 @@ "favourite_field": "activity_interrupter_favourite", "spend_time": true, "type": "chat_together", - "title": "The Interrupter", + "completed_field": "interrupter_completed", + "completed": "@fields.interrupter_completed", + "title": "The interrupter", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "The Interrupter" + "eng": "The interrupter" } } }, @@ -224,6 +214,8 @@ "favourite_field": "activity_three_options_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "three_options_completed", + "completed": "@fields.three_options_completed", "title": "Three options", "_translations": { "title": { @@ -247,20 +239,15 @@ "favourite_field": "activity_yes_no_maybe_favourite", "spend_time": true, "type": "chat_together", - "title": "Yes, No or Maybe", + "completed_field": "yes_no_maybe_completed", + "completed": "@fields.yes_no_maybe_completed", + "title": "Yes, no or maybe", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "Yes, No or Maybe" + "eng": "Yes, no or maybe" } } }, @@ -270,6 +257,8 @@ "favourite_field": "activity_memory_game_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "memory_game_completed", + "completed": "@fields.memory_game_completed", "title": "Memory game - \"On Saturday...\"", "_translations": { "title": { @@ -293,6 +282,8 @@ "favourite_field": "activity_invent_story_favourite", "spend_time": true, "type": "chat_together", + "completed_field": "invent_story_completed", + "completed": "@fields.invent_story_completed", "title": "Make up a story", "_translations": { "title": { @@ -317,6 +308,8 @@ "favourite_field": "activity_co_chef_favourite", "spend_time": true, "type": "do_together", + "completed_field": "co_chef_completed", + "completed": "@fields.co_chef_completed", "title": "Co-chef", "_translations": { "title": { @@ -341,6 +334,8 @@ "favourite_field": "activity_dance_moves_favourite", "spend_time": true, "type": "do_together", + "completed_field": "dance_moves_completed", + "completed": "@fields.dance_moves_completed", "title": "Dance moves", "_translations": { "title": { @@ -365,6 +360,8 @@ "favourite_field": "activity_mirror_favourite", "spend_time": true, "type": "do_together", + "completed_field": "mirror_completed", + "completed": "@fields.mirror_completed", "title": "Mirror", "_translations": { "title": { @@ -388,6 +385,8 @@ "favourite_field": "activity_whats_new_favourite", "spend_time": true, "type": "do_together", + "completed_field": "whats_new_completed", + "completed": "@fields.whats_new_completed", "title": "What's new?", "_translations": { "title": { @@ -411,6 +410,8 @@ "favourite_field": "activity_get_active_favourite", "spend_time": true, "type": "do_together", + "completed_field": "get_active_completed", + "completed": "@fields.get_active_completed", "title": "Get active!", "_translations": { "title": { @@ -434,6 +435,8 @@ "favourite_field": "activity_name_that_tune_favourite", "spend_time": true, "type": "do_together", + "completed_field": "name_that_tune_completed", + "completed": "@fields.name_that_tune_completed", "title": "Name that tune", "_translations": { "title": { @@ -457,6 +460,8 @@ "favourite_field": "activity_pass_the_snap_favourite", "spend_time": true, "type": "do_together", + "completed_field": "pass_the_snap_completed", + "completed": "@fields.pass_the_snap_completed", "title": "Pass the snap", "_translations": { "title": { @@ -492,6 +497,8 @@ "favourite_field": "activity_family_workout_favourite", "spend_time": true, "type": "do_together", + "completed_field": "family_workout_completed", + "completed": "@fields.family_workout_completed", "title": "Family workout", "_translations": { "title": { @@ -516,6 +523,8 @@ "spend_time": true, "has_recording": true, "type": "do_together", + "completed_field": "housework_completed", + "completed": "@fields.housework_completed", "title": "Make housework fun", "_translations": { "title": { @@ -552,6 +561,8 @@ "spend_time": true, "has_recording": true, "type": "do_together", + "completed_field": "doing_what_completed", + "completed": "@fields.doing_what_completed", "title": "What are you doing?", "_translations": { "title": { @@ -587,6 +598,8 @@ "favourite_field": "activity_crazy_chicken_favourite", "spend_time": true, "type": "do_together", + "completed_field": "crazy_chicken_completed", + "completed": "@fields.crazy_chicken_completed", "title": "Crazy chicken", "_translations": { "title": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_1on1.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_1on1.json index 27d8d9e501..ec9112c16b 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_1on1.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_1on1.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_released.sent", + "w_1on1_m_w_released_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_released.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_released.sent : true" + "_raw": "click | set_field: w_1on1_m_w_released_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_released_sent : true" } ], "priority": 11.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2" }, - "_raw": "get_field | workshop_number : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_started", - "value": false - } - }, - "_raw": "get_field | w_1on1_started : false" + "_raw": "@fields.workshop_number == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_w_released.sent", - "value": true - } + "calc": "@fields.w_1on1_started" }, - "_raw": "get_field | w_1on1_m_w_released.sent : true" + "_raw": "@fields.w_1on1_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_relax.sent", + "w_1on1_m_relax_sent", true ], - "_raw": "click | set_field: w_1on1_m_relax.sent : true", - "_cleaned": "click | set_field: w_1on1_m_relax.sent : true" + "_raw": "click | set_field: w_1on1_m_relax_sent : true", + "_cleaned": "click | set_field: w_1on1_m_relax_sent : true" } ], "priority": 11.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_relax.sent", - "value": true - } + "calc": "@fields.w_1on1_m_relax_sent" }, - "_raw": "get_field | w_1on1_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_1on1_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_something_fun.sent", + "w_1on1_m_something_fun_sent", true ], - "_raw": "click | set_field: w_1on1_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_1on1_m_something_fun.sent : true" + "_raw": "click | set_field: w_1on1_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_1on1_m_something_fun_sent : true" } ], "priority": 11.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_1on1_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_1on1_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_praise.sent", + "w_1on1_m_praise_sent", true ], - "_raw": "click | set_field: w_1on1_m_praise.sent : true", - "_cleaned": "click | set_field: w_1on1_m_praise.sent : true" + "_raw": "click | set_field: w_1on1_m_praise_sent : true", + "_cleaned": "click | set_field: w_1on1_m_praise_sent : true" } ], "priority": 11.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_praise.sent", - "value": true - } + "calc": "@fields.w_1on1_m_praise_sent" }, - "_raw": "get_field | w_1on1_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_1on1_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_reminder.sent", + "w_1on1_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_reminder.sent : true" + "_raw": "click | set_field: w_1on1_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_reminder_sent : true" } ], "priority": 11.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } - }, - "_raw": "get_field | workshop_number : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_started", - "value": false - } + "calc": "@fields.workshop_number == 2 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_1on1_started : false" + "_raw": "@fields.workshop_number == 2 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_1on1_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_1on1_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_in_progress.sent", + "w_1on1_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_1on1_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_in_progress_sent : true" } ], "priority": 11.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.w_1on1_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2 && @fields.w_1on1_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_started", - "value": false - } + "calc": "@fields.w_1on1_completion_level == 100" }, - "_raw": "get_field | w_1on1_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_1on1_completion_level: 100" + "_raw": "@fields.w_1on1_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_hp_reminder.sent", + "w_1on1_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_1on1_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_1on1_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_1on1_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_1on1_m_hp_reminder_sent : true" } ], "priority": 11.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.w_1on1_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_1on1_completion_level: 100" + "_raw": "@fields.workshop_number == 2 && @fields.w_1on1_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_1on1_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_1on1_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_parent_points_overview.sent", + "w_1on1_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_1on1_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_1on1_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_1on1_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_1on1_m_parent_points_overview_sent : true" } ], "priority": 11.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_1on1_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_1on1_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_hp_review.sent", + "w_1on1_hp_review_sent", true ], - "_raw": "click | set_field: w_1on1_hp_review.sent : true", - "_cleaned": "click | set_field: w_1on1_hp_review.sent : true" + "_raw": "click | set_field: w_1on1_hp_review_sent : true", + "_cleaned": "click | set_field: w_1on1_hp_review_sent : true" } ], "priority": 11.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } - }, - "_raw": "get_field | workshop_number : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 2 && @fields.w_1on1_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_1on1_completion_level: 100" + "_raw": "@fields.workshop_number == 2 && @fields.w_1on1_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_1on1_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_1on1_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_1on1_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_tomorrow.sent", + "w_1on1_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_1on1_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_tomorrow_sent : true" } ], "priority": 11.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_1on1_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_1on1_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_1on1_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_consequence.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_consequence.json index a29dbda998..df0f0145d6 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_consequence.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_consequence.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_released.sent", + "w_consequence_m_w_released_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_released.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_released.sent : true" + "_raw": "click | set_field: w_consequence_m_w_released_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_released_sent : true" } ], "priority": 5.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8" }, - "_raw": "get_field | workshop_number : 8" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_started", - "value": false - } - }, - "_raw": "get_field | w_consequence_started : false" + "_raw": "@fields.workshop_number == 8" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_w_released.sent", - "value": true - } + "calc": "@fields.w_consequence_started" }, - "_raw": "get_field | w_consequence_m_w_released.sent : true" + "_raw": "@fields.w_consequence_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_relax.sent", + "w_consequence_m_relax_sent", true ], - "_raw": "click | set_field: w_consequence_m_relax.sent : true", - "_cleaned": "click | set_field: w_consequence_m_relax.sent : true" + "_raw": "click | set_field: w_consequence_m_relax_sent : true", + "_cleaned": "click | set_field: w_consequence_m_relax_sent : true" } ], "priority": 5.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_relax.sent", - "value": true - } + "calc": "@fields.w_consequence_m_relax_sent" }, - "_raw": "get_field | w_consequence_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_consequence_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_something_fun.sent", + "w_consequence_m_something_fun_sent", true ], - "_raw": "click | set_field: w_consequence_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_consequence_m_something_fun.sent : true" + "_raw": "click | set_field: w_consequence_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_consequence_m_something_fun_sent : true" } ], "priority": 5.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_consequence_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_consequence_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_praise.sent", + "w_consequence_m_praise_sent", true ], - "_raw": "click | set_field: w_consequence_m_praise.sent : true", - "_cleaned": "click | set_field: w_consequence_m_praise.sent : true" + "_raw": "click | set_field: w_consequence_m_praise_sent : true", + "_cleaned": "click | set_field: w_consequence_m_praise_sent : true" } ], "priority": 5.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_praise.sent", - "value": true - } + "calc": "@fields.w_consequence_m_praise_sent" }, - "_raw": "get_field | w_consequence_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_consequence_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_reminder.sent", + "w_consequence_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_reminder.sent : true" + "_raw": "click | set_field: w_consequence_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_reminder_sent : true" } ], "priority": 5.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } - }, - "_raw": "get_field | workshop_number : 8" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_started", - "value": false - } + "calc": "@fields.workshop_number == 8 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_consequence_started : false" + "_raw": "@fields.workshop_number == 8 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_consequence_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_consequence_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_in_progress.sent", + "w_consequence_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_consequence_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_in_progress_sent : true" } ], "priority": 5.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.w_consequence_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8 && @fields.w_consequence_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_started", - "value": false - } + "calc": "@fields.w_consequence_completion_level == 100" }, - "_raw": "get_field | w_consequence_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_consequence_completion_level: 100" + "_raw": "@fields.w_consequence_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_hp_reminder.sent", + "w_consequence_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_consequence_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_consequence_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_consequence_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_consequence_m_hp_reminder_sent : true" } ], "priority": 5.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.w_consequence_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 8" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_consequence_completion_level: 100" + "_raw": "@fields.workshop_number == 8 && @fields.w_consequence_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_consequence_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_consequence_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_parent_points_overview.sent", + "w_consequence_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_consequence_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_consequence_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_consequence_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_consequence_m_parent_points_overview_sent : true" } ], "priority": 5.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_consequence_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_consequence_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_hp_review.sent", + "w_consequence_hp_review_sent", true ], - "_raw": "click | set_field: w_consequence_hp_review.sent : true", - "_cleaned": "click | set_field: w_consequence_hp_review.sent : true" + "_raw": "click | set_field: w_consequence_hp_review_sent : true", + "_cleaned": "click | set_field: w_consequence_hp_review_sent : true" } ], "priority": 5.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } - }, - "_raw": "get_field | workshop_number : 8" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 8 && @fields.w_consequence_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_consequence_completion_level: 100" + "_raw": "@fields.workshop_number == 8 && @fields.w_consequence_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_consequence_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_consequence_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_consequence_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_tomorrow.sent", + "w_consequence_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_consequence_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_tomorrow_sent : true" } ], "priority": 5.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_consequence_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_consequence_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_consequence_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_crisis.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_crisis.json index 88770af874..5f95c8f720 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_crisis.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_crisis.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_released.sent", + "w_crisis_m_w_released_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_released.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_released.sent : true" + "_raw": "click | set_field: w_crisis_m_w_released_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_released_sent : true" } ], "priority": 2.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11" }, - "_raw": "get_field | workshop_number : 11" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_started", - "value": false - } - }, - "_raw": "get_field | w_crisis_started : false" + "_raw": "@fields.workshop_number == 11" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_w_released.sent", - "value": true - } + "calc": "@fields.w_crisis_started" }, - "_raw": "get_field | w_crisis_m_w_released.sent : true" + "_raw": "@fields.w_crisis_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_relax.sent", + "w_crisis_m_relax_sent", true ], - "_raw": "click | set_field: w_crisis_m_relax.sent : true", - "_cleaned": "click | set_field: w_crisis_m_relax.sent : true" + "_raw": "click | set_field: w_crisis_m_relax_sent : true", + "_cleaned": "click | set_field: w_crisis_m_relax_sent : true" } ], "priority": 2.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_relax.sent", - "value": true - } + "calc": "@fields.w_crisis_m_relax_sent" }, - "_raw": "get_field | w_crisis_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_crisis_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_something_fun.sent", + "w_crisis_m_something_fun_sent", true ], - "_raw": "click | set_field: w_crisis_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_crisis_m_something_fun.sent : true" + "_raw": "click | set_field: w_crisis_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_crisis_m_something_fun_sent : true" } ], "priority": 2.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_crisis_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_crisis_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_praise.sent", + "w_crisis_m_praise_sent", true ], - "_raw": "click | set_field: w_crisis_m_praise.sent : true", - "_cleaned": "click | set_field: w_crisis_m_praise.sent : true" + "_raw": "click | set_field: w_crisis_m_praise_sent : true", + "_cleaned": "click | set_field: w_crisis_m_praise_sent : true" } ], "priority": 2.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_praise.sent", - "value": true - } + "calc": "@fields.w_crisis_m_praise_sent" }, - "_raw": "get_field | w_crisis_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_crisis_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_reminder.sent", + "w_crisis_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_reminder.sent : true" + "_raw": "click | set_field: w_crisis_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_reminder_sent : true" } ], "priority": 2.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } - }, - "_raw": "get_field | workshop_number : 11" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_started", - "value": false - } + "calc": "@fields.workshop_number == 11 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_crisis_started : false" + "_raw": "@fields.workshop_number == 11 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_crisis_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_crisis_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_in_progress.sent", + "w_crisis_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_crisis_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_in_progress_sent : true" } ], "priority": 2.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.w_crisis_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11 && @fields.w_crisis_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_started", - "value": false - } + "calc": "@fields.w_crisis_completion_level == 100" }, - "_raw": "get_field | w_crisis_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_crisis_completion_level: 100" + "_raw": "@fields.w_crisis_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_hp_reminder.sent", + "w_crisis_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_crisis_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_crisis_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_crisis_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_crisis_m_hp_reminder_sent : true" } ], "priority": 2.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.w_crisis_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 11" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_crisis_completion_level: 100" + "_raw": "@fields.workshop_number == 11 && @fields.w_crisis_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_crisis_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_crisis_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_parent_points_overview.sent", + "w_crisis_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_crisis_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_crisis_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_crisis_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_crisis_m_parent_points_overview_sent : true" } ], "priority": 2.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_crisis_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_crisis_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_hp_review.sent", + "w_crisis_hp_review_sent", true ], - "_raw": "click | set_field: w_crisis_hp_review.sent : true", - "_cleaned": "click | set_field: w_crisis_hp_review.sent : true" + "_raw": "click | set_field: w_crisis_hp_review_sent : true", + "_cleaned": "click | set_field: w_crisis_hp_review_sent : true" } ], "priority": 2.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } - }, - "_raw": "get_field | workshop_number : 11" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 11 && @fields.w_crisis_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_crisis_completion_level: 100" + "_raw": "@fields.workshop_number == 11 && @fields.w_crisis_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_crisis_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_crisis_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_crisis_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_tomorrow.sent", + "w_crisis_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_crisis_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_tomorrow_sent : true" } ], "priority": 2.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_crisis_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_crisis_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_crisis_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_instruct.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_instruct.json index 32d8f7acbe..8288aa383d 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_instruct.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_instruct.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_released.sent", + "w_instruct_m_w_released_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_released.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_released.sent : true" + "_raw": "click | set_field: w_instruct_m_w_released_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_released_sent : true" } ], "priority": 9.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4" }, - "_raw": "get_field | workshop_number : 4" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_started", - "value": false - } - }, - "_raw": "get_field | w_instruct_started : false" + "_raw": "@fields.workshop_number == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_w_released.sent", - "value": true - } + "calc": "@fields.w_instruct_started" }, - "_raw": "get_field | w_instruct_m_w_released.sent : true" + "_raw": "@fields.w_instruct_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_relax.sent", + "w_instruct_m_relax_sent", true ], - "_raw": "click | set_field: w_instruct_m_relax.sent : true", - "_cleaned": "click | set_field: w_instruct_m_relax.sent : true" + "_raw": "click | set_field: w_instruct_m_relax_sent : true", + "_cleaned": "click | set_field: w_instruct_m_relax_sent : true" } ], "priority": 9.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_relax.sent", - "value": true - } + "calc": "@fields.w_instruct_m_relax_sent" }, - "_raw": "get_field | w_instruct_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_instruct_m_relax_sent" } ], "campaign_list": [ @@ -136,36 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_something_fun.sent", + "w_instruct_m_something_fun_sent", true ], - "_raw": "click | set_field: w_instruct_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_instruct_m_something_fun.sent : true" + "_raw": "click | set_field: w_instruct_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_instruct_m_something_fun_sent : true" } ], "priority": 9.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_something_fun.sent", - "value": true - } + "calc": "@fields.w_instruct_m_something_fun_sent" }, - "_raw": "get_field | w_instruct_m_something_fun.sent : true" + "_raw": "@fields.w_instruct_m_something_fun_sent" } ], "campaign_list": [ @@ -189,36 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_praise.sent", + "w_instruct_m_praise_sent", true ], - "_raw": "click | set_field: w_instruct_m_praise.sent : true", - "_cleaned": "click | set_field: w_instruct_m_praise.sent : true" + "_raw": "click | set_field: w_instruct_m_praise_sent : true", + "_cleaned": "click | set_field: w_instruct_m_praise_sent : true" } ], "priority": 9.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_praise.sent", - "value": true - } + "calc": "@fields.w_instruct_m_praise_sent" }, - "_raw": "get_field | w_instruct_m_praise.sent : true" + "_raw": "@fields.w_instruct_m_praise_sent" } ], "campaign_list": [ @@ -242,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_reminder.sent", + "w_instruct_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_reminder.sent : true" + "_raw": "click | set_field: w_instruct_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_reminder_sent : true" } ], "priority": 9.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } - }, - "_raw": "get_field | workshop_number : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_started", - "value": false - } + "calc": "@fields.workshop_number == 4 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_instruct_started : false" + "_raw": "@fields.workshop_number == 4 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_instruct_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } + "calc": "@fields.w_instruct_started" }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_instruct_started" } ], "campaign_list": [ @@ -335,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_in_progress.sent", + "w_instruct_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_instruct_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_in_progress_sent : true" } ], "priority": 9.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.w_instruct_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4 && @fields.w_instruct_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_instruct_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_instruct_completion_level == 100" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_started", - "value": false - } - }, - "_raw": "get_field | w_instruct_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_instruct_completion_level: 100" + "_raw": "@fields.w_instruct_completion_level == 100" } ], "campaign_list": [ @@ -438,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_hp_reminder.sent", + "w_instruct_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_instruct_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_instruct_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_instruct_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_instruct_m_hp_reminder_sent : true" } ], "priority": 9.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.w_instruct_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 4" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_instruct_completion_level: 100" + "_raw": "@fields.workshop_number == 4 && @fields.w_instruct_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_instruct_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_instruct_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_instruct_m_hp_reminder_sent" } ], "campaign_list": [ @@ -541,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_parent_points_overview.sent", + "w_instruct_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_instruct_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_instruct_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_instruct_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_instruct_m_parent_points_overview_sent : true" } ], "priority": 9.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_instruct_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_instruct_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_instruct_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -644,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_hp_review.sent", + "w_instruct_hp_review_sent", true ], - "_raw": "click | set_field: w_instruct_hp_review.sent : true", - "_cleaned": "click | set_field: w_instruct_hp_review.sent : true" + "_raw": "click | set_field: w_instruct_hp_review_sent : true", + "_cleaned": "click | set_field: w_instruct_hp_review_sent : true" } ], "priority": 9.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.w_instruct_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 4" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_instruct_completion_level: 100" + "_raw": "@fields.workshop_number == 4 && @fields.w_instruct_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_instruct_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_instruct_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_instruct_hp_review_completed" } ], "campaign_list": [ @@ -757,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_tomorrow.sent", + "w_instruct_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_instruct_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_tomorrow_sent : true" } ], "priority": 9.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_instruct_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_instruct_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_instruct_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_money.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_money.json index 8c744ef99b..e5e4322159 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_money.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_money.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_released.sent", + "w_money_m_w_released_sent", true ], - "_raw": "click | set_field: w_money_m_w_released.sent : true", - "_cleaned": "click | set_field: w_money_m_w_released.sent : true" + "_raw": "click | set_field: w_money_m_w_released_sent : true", + "_cleaned": "click | set_field: w_money_m_w_released_sent : true" } ], "priority": 7.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6" }, - "_raw": "get_field | workshop_number : 6" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_started", - "value": false - } - }, - "_raw": "get_field | w_money_started : false" + "_raw": "@fields.workshop_number == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_m_w_released.sent", - "value": true - } + "calc": "@fields.w_money_started" }, - "_raw": "get_field | w_money_m_w_released.sent : true" + "_raw": "@fields.w_money_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_relax.sent", + "w_money_m_relax_sent", true ], - "_raw": "click | set_field: w_money_m_relax.sent : true", - "_cleaned": "click | set_field: w_money_m_relax.sent : true" + "_raw": "click | set_field: w_money_m_relax_sent : true", + "_cleaned": "click | set_field: w_money_m_relax_sent : true" } ], "priority": 7.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_m_relax.sent", - "value": true - } + "calc": "@fields.w_money_m_relax_sent" }, - "_raw": "get_field | w_money_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_money_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_something_fun.sent", + "w_money_m_something_fun_sent", true ], - "_raw": "click | set_field: w_money_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_money_m_something_fun.sent : true" + "_raw": "click | set_field: w_money_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_money_m_something_fun_sent : true" } ], "priority": 7.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_money_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_money_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_praise.sent", + "w_money_m_praise_sent", true ], - "_raw": "click | set_field: w_money_m_praise.sent : true", - "_cleaned": "click | set_field: w_money_m_praise.sent : true" + "_raw": "click | set_field: w_money_m_praise_sent : true", + "_cleaned": "click | set_field: w_money_m_praise_sent : true" } ], "priority": 7.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_m_praise.sent", - "value": true - } + "calc": "@fields.w_money_m_praise_sent" }, - "_raw": "get_field | w_money_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_money_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_reminder.sent", + "w_money_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_money_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_money_m_w_reminder.sent : true" + "_raw": "click | set_field: w_money_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_money_m_w_reminder_sent : true" } ], "priority": 7.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } - }, - "_raw": "get_field | workshop_number : 6" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_started", - "value": false - } + "calc": "@fields.workshop_number == 6 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_money_started : false" + "_raw": "@fields.workshop_number == 6 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_money_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_money_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_in_progress.sent", + "w_money_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_money_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_money_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_money_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_money_m_w_in_progress_sent : true" } ], "priority": 7.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.w_money_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6 && @fields.w_money_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_started", - "value": false - } + "calc": "@fields.w_money_completion_level == 100" }, - "_raw": "get_field | w_money_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_money_completion_level:100" + "_raw": "@fields.w_money_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_hp_reminder.sent", + "w_money_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_money_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_money_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_money_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_money_m_hp_reminder_sent : true" } ], "priority": 7.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.w_money_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 6" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_money_completion_level: 100" + "_raw": "@fields.workshop_number == 6 && @fields.w_money_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_money_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_money_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_parent_points_overview.sent", + "w_money_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_money_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_money_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_money_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_money_m_parent_points_overview_sent : true" } ], "priority": 7.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_money_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_money_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_hp_review.sent", + "w_money_hp_review_sent", true ], - "_raw": "click | set_field: w_money_hp_review.sent : true", - "_cleaned": "click | set_field: w_money_hp_review.sent : true" + "_raw": "click | set_field: w_money_hp_review_sent : true", + "_cleaned": "click | set_field: w_money_hp_review_sent : true" } ], "priority": 7.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } - }, - "_raw": "get_field | workshop_number : 6" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 6 && @fields.w_money_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_money_completion_level: 100" + "_raw": "@fields.workshop_number == 6 && @fields.w_money_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_money_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_money_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_money_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_tomorrow.sent", + "w_money_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_money_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_money_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_money_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_money_m_w_tomorrow_sent : true" } ], "priority": 7.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_money_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_money_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_money_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_praise.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_praise.json index 624b985735..787ba8f9d3 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_praise.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_praise.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_released.sent", + "w_praise_m_w_released_sent", true ], - "_raw": "click | set_field: w_praise_m_w_released.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_released.sent : true" + "_raw": "click | set_field: w_praise_m_w_released_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_released_sent : true" } ], "priority": 10.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3" }, - "_raw": "get_field | workshop_number : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_started", - "value": false - } - }, - "_raw": "get_field | w_praise_started : false" + "_raw": "@fields.workshop_number == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_m_w_released.sent", - "value": true - } + "calc": "@fields.w_praise_started" }, - "_raw": "get_field | w_praise_m_w_released.sent : true" + "_raw": "@fields.w_praise_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_relax.sent", + "w_praise_m_relax_sent", true ], - "_raw": "click | set_field: w_praise_m_relax.sent : true", - "_cleaned": "click | set_field: w_praise_m_relax.sent : true" + "_raw": "click | set_field: w_praise_m_relax_sent : true", + "_cleaned": "click | set_field: w_praise_m_relax_sent : true" } ], "priority": 10.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_m_relax.sent", - "value": true - } + "calc": "@fields.w_praise_m_relax_sent" }, - "_raw": "get_field | w_praise_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_praise_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_something_fun.sent", + "w_praise_m_something_fun_sent", true ], - "_raw": "click | set_field: w_praise_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_praise_m_something_fun.sent : true" + "_raw": "click | set_field: w_praise_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_praise_m_something_fun_sent : true" } ], "priority": 10.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_praise_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_praise_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_praise.sent", + "w_praise_m_praise_sent", true ], - "_raw": "click | set_field: w_praise_m_praise.sent : true", - "_cleaned": "click | set_field: w_praise_m_praise.sent : true" + "_raw": "click | set_field: w_praise_m_praise_sent : true", + "_cleaned": "click | set_field: w_praise_m_praise_sent : true" } ], "priority": 10.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_m_praise.sent", - "value": true - } + "calc": "@fields.w_praise_m_praise_sent" }, - "_raw": "get_field | w_praise_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_praise_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_reminder.sent", + "w_praise_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_praise_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_reminder.sent : true" + "_raw": "click | set_field: w_praise_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_reminder_sent : true" } ], "priority": 10.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } - }, - "_raw": "get_field | workshop_number : 3" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_started", - "value": false - } + "calc": "@fields.workshop_number == 3 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_praise_started : false" + "_raw": "@fields.workshop_number == 3 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_praise_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_praise_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_in_progress.sent", + "w_praise_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_praise_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_praise_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_in_progress_sent : true" } ], "priority": 10.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.w_praise_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3 && @fields.w_praise_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_started", - "value": false - } + "calc": "@fields.w_praise_completion_level == 100" }, - "_raw": "get_field | w_praise_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_praise_completion_level: 100" + "_raw": "@fields.w_praise_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_hp_reminder.sent", + "w_praise_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_praise_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_praise_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_praise_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_praise_m_hp_reminder_sent : true" } ], "priority": 10.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.w_praise_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_praise_completion_level: 100" + "_raw": "@fields.workshop_number == 3 && @fields.w_praise_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_praise_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_praise_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_parent_points_overview.sent", + "w_praise_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_praise_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_praise_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_praise_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_praise_m_parent_points_overview_sent : true" } ], "priority": 10.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_praise_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_praise_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_hp_review.sent", + "w_praise_hp_review_sent", true ], - "_raw": "click | set_field: w_praise_hp_review.sent : true", - "_cleaned": "click | set_field: w_praise_hp_review.sent : true" + "_raw": "click | set_field: w_praise_hp_review_sent : true", + "_cleaned": "click | set_field: w_praise_hp_review_sent : true" } ], "priority": 10.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } - }, - "_raw": "get_field | workshop_number : 3" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 3 && @fields.w_praise_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_praise_completion_level: 100" + "_raw": "@fields.workshop_number == 3 && @fields.w_praise_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_praise_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_praise_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_praise_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_tomorrow.sent", + "w_praise_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_praise_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_praise_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_tomorrow_sent : true" } ], "priority": 10.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_praise_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_praise_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_praise_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_rules.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_rules.json index cba11886dc..6910fdbd53 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_rules.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_rules.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_released.sent", + "w_rules_m_w_released_sent", true ], - "_raw": "click | set_field: w_rules_m_w_released.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_released.sent : true" + "_raw": "click | set_field: w_rules_m_w_released_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_released_sent : true" } ], "priority": 6.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7" }, - "_raw": "get_field | workshop_number : 7" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_started", - "value": false - } - }, - "_raw": "get_field | w_rules_started : false" + "_raw": "@fields.workshop_number == 7" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_m_w_released.sent", - "value": true - } + "calc": "@fields.w_rules_started" }, - "_raw": "get_field | w_rules_m_w_released.sent : true" + "_raw": "@fields.w_rules_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_relax.sent", + "w_rules_m_relax_sent", true ], - "_raw": "click | set_field: w_rules_m_relax.sent : true", - "_cleaned": "click | set_field: w_rules_m_relax.sent : true" + "_raw": "click | set_field: w_rules_m_relax_sent : true", + "_cleaned": "click | set_field: w_rules_m_relax_sent : true" } ], "priority": 6.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_m_relax.sent", - "value": true - } + "calc": "@fields.w_rules_m_relax_sent" }, - "_raw": "get_field | w_rules_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_rules_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_something_fun.sent", + "w_rules_m_something_fun_sent", true ], - "_raw": "click | set_field: w_rules_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_rules_m_something_fun.sent : true" + "_raw": "click | set_field: w_rules_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_rules_m_something_fun_sent : true" } ], "priority": 6.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_rules_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_rules_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_praise.sent", + "w_rules_m_praise_sent", true ], - "_raw": "click | set_field: w_rules_m_praise.sent : true", - "_cleaned": "click | set_field: w_rules_m_praise.sent : true" + "_raw": "click | set_field: w_rules_m_praise_sent : true", + "_cleaned": "click | set_field: w_rules_m_praise_sent : true" } ], "priority": 6.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_m_praise.sent", - "value": true - } + "calc": "@fields.w_rules_m_praise_sent" }, - "_raw": "get_field | w_rules_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_rules_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_reminder.sent", + "w_rules_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_rules_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_reminder.sent : true" + "_raw": "click | set_field: w_rules_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_reminder_sent : true" } ], "priority": 6.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } - }, - "_raw": "get_field | workshop_number : 7" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_started", - "value": false - } + "calc": "@fields.workshop_number == 7 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_rules_started : false" + "_raw": "@fields.workshop_number == 7 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_rules_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_rules_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_in_progress.sent", + "w_rules_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_rules_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_rules_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_in_progress_sent : true" } ], "priority": 6.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.w_rules_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7 && @fields.w_rules_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_started", - "value": false - } + "calc": "@fields.w_rules_completion_level == 100" }, - "_raw": "get_field | w_rules_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_rules_completion_level: 100" + "_raw": "@fields.w_rules_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_hp_reminder.sent", + "w_rules_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_rules_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_rules_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_rules_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_rules_m_hp_reminder_sent : true" } ], "priority": 6.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.w_rules_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 7" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_rules_completion_level: 100" + "_raw": "@fields.workshop_number == 7 && @fields.w_rules_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_rules_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_rules_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_parent_points_overview.sent", + "w_rules_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_rules_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_rules_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_rules_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_rules_m_parent_points_overview_sent : true" } ], "priority": 6.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_rules_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_rules_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_hp_review.sent", + "w_rules_hp_review_sent", true ], - "_raw": "click | set_field: w_rules_hp_review.sent : true", - "_cleaned": "click | set_field: w_rules_hp_review.sent : true" + "_raw": "click | set_field: w_rules_hp_review_sent : true", + "_cleaned": "click | set_field: w_rules_hp_review_sent : true" } ], "priority": 6.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } - }, - "_raw": "get_field | workshop_number : 7" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 7 && @fields.w_rules_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_rules_completion_level: 100" + "_raw": "@fields.workshop_number == 7 && @fields.w_rules_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_rules_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_rules_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_rules_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_tomorrow.sent", + "w_rules_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_rules_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_rules_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_tomorrow_sent : true" } ], "priority": 6.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_rules_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_rules_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_rules_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_safe.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_safe.json index 4cad9115bc..216ba85179 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_safe.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_safe.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_released.sent", + "w_safe_m_w_released_sent", true ], - "_raw": "click | set_field: w_safe_m_w_released.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_released.sent : true" + "_raw": "click | set_field: w_safe_m_w_released_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_released_sent : true" } ], "priority": 3.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10" }, - "_raw": "get_field | workshop_number : 10" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_started", - "value": false - } - }, - "_raw": "get_field | w_safe_started : false" + "_raw": "@fields.workshop_number == 10" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_m_w_released.sent", - "value": true - } + "calc": "@fields.w_safe_started" }, - "_raw": "get_field | w_safe_m_w_released.sent : true" + "_raw": "@fields.w_safe_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_relax.sent", + "w_safe_m_relax_sent", true ], - "_raw": "click | set_field: w_safe_m_relax.sent : true", - "_cleaned": "click | set_field: w_safe_m_relax.sent : true" + "_raw": "click | set_field: w_safe_m_relax_sent : true", + "_cleaned": "click | set_field: w_safe_m_relax_sent : true" } ], "priority": 3.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_m_relax.sent", - "value": true - } + "calc": "@fields.w_safe_m_relax_sent" }, - "_raw": "get_field | w_safe_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_safe_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_something_fun.sent", + "w_safe_m_something_fun_sent", true ], - "_raw": "click | set_field: w_safe_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_safe_m_something_fun.sent : true" + "_raw": "click | set_field: w_safe_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_safe_m_something_fun_sent : true" } ], "priority": 3.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_safe_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_safe_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_praise.sent", + "w_safe_m_praise_sent", true ], - "_raw": "click | set_field: w_safe_m_praise.sent : true", - "_cleaned": "click | set_field: w_safe_m_praise.sent : true" + "_raw": "click | set_field: w_safe_m_praise_sent : true", + "_cleaned": "click | set_field: w_safe_m_praise_sent : true" } ], "priority": 3.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_m_praise.sent", - "value": true - } + "calc": "@fields.w_safe_m_praise_sent" }, - "_raw": "get_field | w_safe_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_safe_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_reminder.sent", + "w_safe_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_safe_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_reminder.sent : true" + "_raw": "click | set_field: w_safe_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_reminder_sent : true" } ], "priority": 3.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } - }, - "_raw": "get_field | workshop_number : 10" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_started", - "value": false - } + "calc": "@fields.workshop_number == 10 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_safe_started : false" + "_raw": "@fields.workshop_number == 10 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_safe_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_safe_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_in_progress.sent", + "w_safe_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_safe_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_safe_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_in_progress_sent : true" } ], "priority": 3.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.w_safe_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10 && @fields.w_safe_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_started", - "value": false - } + "calc": "@fields.w_safe_completion_level == 100" }, - "_raw": "get_field | w_safe_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_safe_completion_level: 100" + "_raw": "@fields.w_safe_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_hp_reminder.sent", + "w_safe_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_safe_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_safe_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_safe_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_safe_m_hp_reminder_sent : true" } ], "priority": 3.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.w_safe_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 10" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_safe_completion_level: 100" + "_raw": "@fields.workshop_number == 10 && @fields.w_safe_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_safe_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_safe_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_parent_points_overview.sent", + "w_safe_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_safe_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_safe_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_safe_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_safe_m_parent_points_overview_sent : true" } ], "priority": 3.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_safe_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_safe_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_hp_review.sent", + "w_safe_hp_review_sent", true ], - "_raw": "click | set_field: w_safe_hp_review.sent : true", - "_cleaned": "click | set_field: w_safe_hp_review.sent : true" + "_raw": "click | set_field: w_safe_hp_review_sent : true", + "_cleaned": "click | set_field: w_safe_hp_review_sent : true" } ], "priority": 3.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } - }, - "_raw": "get_field | workshop_number : 10" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 10 && @fields.w_safe_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_safe_completion_level: 100" + "_raw": "@fields.workshop_number == 10 && @fields.w_safe_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_safe_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_safe_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_safe_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_tomorrow.sent", + "w_safe_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_safe_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_safe_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_tomorrow_sent : true" } ], "priority": 3.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_safe_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_safe_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_safe_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_self_care.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_self_care.json index 0a2d948a3b..decbcabede 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_self_care.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_self_care.json @@ -11,11 +11,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "default.sent", + "default_sent", true ], - "_raw": "click | set_field: default.sent : true", - "_cleaned": "click | set_field: default.sent : true" + "_raw": "click | set_field: default_sent : true", + "_cleaned": "click | set_field: default_sent : true" } ], "priority": -1, @@ -42,36 +42,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "survey_welcome_quick_start.sent", + "survey_welcome_quick_start_sent", true ], - "_raw": "click | set_field: survey_welcome_quick_start.sent : true", - "_cleaned": "click | set_field: survey_welcome_quick_start.sent : true" + "_raw": "click | set_field: survey_welcome_quick_start_sent : true", + "_cleaned": "click | set_field: survey_welcome_quick_start_sent : true" } ], "priority": 13.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_started", - "value": true - } + "calc": "@fields.w_self_care_started" }, - "_raw": "get_field | w_self_care_started : true" + "_raw": "@fields.w_self_care_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "survey_welcome_completed", - "value": true - } + "calc": "@fields.survey_welcome_completed" }, - "_raw": "get_field | survey_welcome_completed : true" + "_raw": "@fields.survey_welcome_completed" } ], "campaign_list": [ @@ -95,36 +89,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "survey_final_quick_start.sent", + "survey_final_quick_start_sent", true ], - "_raw": "click | set_field: survey_final_quick_start.sent : true", - "_cleaned": "click | set_field: survey_final_quick_start.sent : true" + "_raw": "click | set_field: survey_final_quick_start_sent : true", + "_cleaned": "click | set_field: survey_final_quick_start_sent : true" } ], "priority": 13.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_celebrate_started", - "value": true - } + "calc": "@fields.w_celebrate_started" }, - "_raw": "get_field | w_celebrate_started : true" + "_raw": "@fields.w_celebrate_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "survey_final_completed", - "value": true - } + "calc": "@fields.survey_final_completed" }, - "_raw": "get_field | survey_final_completed : true" + "_raw": "@fields.survey_final_completed" } ], "campaign_list": [ @@ -148,46 +136,37 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_w_released.sent", + "w_self_care_m_w_released_sent", true ], - "_raw": "click | set_field: w_self_care_m_w_released.sent : true", - "_cleaned": "click | set_field: w_self_care_m_w_released.sent : true" + "_raw": "click | set_field: w_self_care_m_w_released_sent : true", + "_cleaned": "click | set_field: w_self_care_m_w_released_sent : true" } ], "priority": 12.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1" }, - "_raw": "get_field | workshop_number : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_started", - "value": false - } - }, - "_raw": "get_field | w_self_care_started : false" + "_raw": "@fields.workshop_number == 1" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", + "condition_args": { + "calc": "@fields.w_self_care_m_w_released_sent" + }, + "_raw": "@fields.w_self_care_m_w_released_sent" + }, + { + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_m_w_released.sent", - "value": true - } + "calc": "@fields.w_self_care_started" }, - "_raw": "get_field | w_self_care_m_w_released.sent : true" + "_raw": "@fields.w_self_care_started" } ], "campaign_list": [ @@ -211,46 +190,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_relax.sent", + "w_self_care_m_relax_sent", true ], - "_raw": "click | set_field: w_self_care_m_relax.sent : true", - "_cleaned": "click | set_field: w_self_care_m_relax.sent : true" + "_raw": "click | set_field: w_self_care_m_relax_sent : true", + "_cleaned": "click | set_field: w_self_care_m_relax_sent : true" } ], "priority": 12.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1 && @fields.w_self_care_completion_level == 100" }, - "_raw": "get_field | workshop_number : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_self_care_completion_level: 100" + "_raw": "@fields.workshop_number == 1 && @fields.w_self_care_completion_level == 100" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_m_relax.sent", - "value": true - } + "calc": "@fields.w_self_care_m_relax_sent" }, - "_raw": "get_field | w_self_care_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_self_care_m_relax_sent" } ], "campaign_list": [ @@ -274,86 +237,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_hp_reminder.sent", + "w_self_care_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_self_care_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_self_care_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_self_care_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_self_care_m_hp_reminder_sent : true" } ], "priority": 12.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1 && @fields.w_self_care_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_self_care_completion_level: 100" + "_raw": "@fields.workshop_number == 1 && @fields.w_self_care_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_self_care_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } + "calc": "@fields.w_self_care_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_self_care_m_hp_reminder_sent" } ], "campaign_list": [ @@ -377,86 +284,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_parent_points_overview.sent", + "w_self_care_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_self_care_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_self_care_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_self_care_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_self_care_m_parent_points_overview_sent : true" } ], "priority": 12.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 1" + "_raw": "@fields.workshop_number == 1 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_self_care_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_self_care_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_self_care_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -480,96 +331,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_w_tomorrow.sent", + "w_self_care_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_self_care_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_self_care_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_self_care_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_self_care_m_w_tomorrow_sent : true" } ], "priority": 12.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 1" + "_raw": "@fields.workshop_number == 1 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_self_care_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_self_care_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_self_care_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_solve.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_solve.json index 7059adea69..7eb3b70e13 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_solve.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_solve.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_released.sent", + "w_solve_m_w_released_sent", true ], - "_raw": "click | set_field: w_solve_m_w_released.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_released.sent : true" + "_raw": "click | set_field: w_solve_m_w_released_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_released_sent : true" } ], "priority": 4.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9" }, - "_raw": "get_field | workshop_number : 9" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_started", - "value": false - } - }, - "_raw": "get_field | w_solve_started : false" + "_raw": "@fields.workshop_number == 9" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_m_w_released.sent", - "value": true - } + "calc": "@fields.w_solve_started" }, - "_raw": "get_field | w_solve_m_w_released.sent : true" + "_raw": "@fields.w_solve_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_relax.sent", + "w_solve_m_relax_sent", true ], - "_raw": "click | set_field: w_solve_m_relax.sent : true", - "_cleaned": "click | set_field: w_solve_m_relax.sent : true" + "_raw": "click | set_field: w_solve_m_relax_sent : true", + "_cleaned": "click | set_field: w_solve_m_relax_sent : true" } ], "priority": 4.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_m_relax.sent", - "value": true - } + "calc": "@fields.w_solve_m_relax_sent" }, - "_raw": "get_field | w_solve_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_solve_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_something_fun.sent", + "w_solve_m_something_fun_sent", true ], - "_raw": "click | set_field: w_solve_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_solve_m_something_fun.sent : true" + "_raw": "click | set_field: w_solve_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_solve_m_something_fun_sent : true" } ], "priority": 4.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_solve_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_solve_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_praise.sent", + "w_solve_m_praise_sent", true ], - "_raw": "click | set_field: w_solve_m_praise.sent : true", - "_cleaned": "click | set_field: w_solve_m_praise.sent : true" + "_raw": "click | set_field: w_solve_m_praise_sent : true", + "_cleaned": "click | set_field: w_solve_m_praise_sent : true" } ], "priority": 4.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_m_praise.sent", - "value": true - } + "calc": "@fields.w_solve_m_praise_sent" }, - "_raw": "get_field | w_solve_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_solve_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_reminder.sent", + "w_solve_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_solve_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_reminder.sent : true" + "_raw": "click | set_field: w_solve_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_reminder_sent : true" } ], "priority": 4.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } - }, - "_raw": "get_field | workshop_number : 9" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_started", - "value": false - } + "calc": "@fields.workshop_number == 9 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_solve_started : false" + "_raw": "@fields.workshop_number == 9 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_solve_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_solve_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_in_progress.sent", + "w_solve_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_solve_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_solve_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_in_progress_sent : true" } ], "priority": 4.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.w_solve_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9 && @fields.w_solve_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_started", - "value": false - } + "calc": "@fields.w_solve_completion_level == 100" }, - "_raw": "get_field | w_solve_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_solve_completion_level: 100" + "_raw": "@fields.w_solve_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_hp_reminder.sent", + "w_solve_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_solve_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_solve_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_solve_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_solve_m_hp_reminder_sent : true" } ], "priority": 4.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.w_solve_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 9" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_solve_completion_level: 100" + "_raw": "@fields.workshop_number == 9 && @fields.w_solve_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_solve_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_solve_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_parent_points_overview.sent", + "w_solve_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_solve_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_solve_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_solve_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_solve_m_parent_points_overview_sent : true" } ], "priority": 4.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_solve_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_solve_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_hp_review.sent", + "w_solve_hp_review_sent", true ], - "_raw": "click | set_field: w_solve_hp_review.sent : true", - "_cleaned": "click | set_field: w_solve_hp_review.sent : true" + "_raw": "click | set_field: w_solve_hp_review_sent : true", + "_cleaned": "click | set_field: w_solve_hp_review_sent : true" } ], "priority": 4.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } - }, - "_raw": "get_field | workshop_number : 9" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 9 && @fields.w_solve_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_solve_completion_level: 100" + "_raw": "@fields.workshop_number == 9 && @fields.w_solve_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_solve_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_solve_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_solve_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_tomorrow.sent", + "w_solve_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_solve_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_solve_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_tomorrow_sent : true" } ], "priority": 4.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_solve_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_solve_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_solve_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_stress.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_stress.json index 52e3a92b75..4aa940e075 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_stress.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_hs_w_stress.json @@ -20,46 +20,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_released.sent", + "w_stress_m_w_released_sent", true ], - "_raw": "click | set_field: w_stress_m_w_released.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_released.sent : true" + "_raw": "click | set_field: w_stress_m_w_released_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_released_sent : true" } ], "priority": 8.99, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5" }, - "_raw": "get_field | workshop_number : 5" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_started", - "value": false - } - }, - "_raw": "get_field | w_stress_started : false" + "_raw": "@fields.workshop_number == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_m_w_released.sent", - "value": true - } + "calc": "@fields.w_stress_started" }, - "_raw": "get_field | w_stress_m_w_released.sent : true" + "_raw": "@fields.w_stress_started" } ], "campaign_list": [ @@ -83,36 +67,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_relax.sent", + "w_stress_m_relax_sent", true ], - "_raw": "click | set_field: w_stress_m_relax.sent : true", - "_cleaned": "click | set_field: w_stress_m_relax.sent : true" + "_raw": "click | set_field: w_stress_m_relax_sent : true", + "_cleaned": "click | set_field: w_stress_m_relax_sent : true" } ], "priority": 8.9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_m_relax.sent", - "value": true - } + "calc": "@fields.w_stress_m_relax_sent" }, - "_raw": "get_field | w_stress_m_relax.sent : true | before : 1 : day" + "_raw": "@fields.w_stress_m_relax_sent" } ], "campaign_list": [ @@ -136,56 +114,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_something_fun.sent", + "w_stress_m_something_fun_sent", true ], - "_raw": "click | set_field: w_stress_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_stress_m_something_fun.sent : true" + "_raw": "click | set_field: w_stress_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_stress_m_something_fun_sent : true" } ], "priority": 8.8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.workshop_day == 2" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5 && @fields.workshop_day == 2" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_something_fun.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_something_fun.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_stress_m_something_fun_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" + "_raw": "@fields.w_stress_m_something_fun_sent" } ], "campaign_list": [ @@ -209,66 +161,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_praise.sent", + "w_stress_m_praise_sent", true ], - "_raw": "click | set_field: w_stress_m_praise.sent : true", - "_cleaned": "click | set_field: w_stress_m_praise.sent : true" + "_raw": "click | set_field: w_stress_m_praise_sent : true", + "_cleaned": "click | set_field: w_stress_m_praise_sent : true" } ], "priority": 8.7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_m_praise.sent", - "value": true - } + "calc": "@fields.w_stress_m_praise_sent" }, - "_raw": "get_field | w_stress_m_praise.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_stress_m_praise_sent" } ], "campaign_list": [ @@ -292,76 +208,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_reminder.sent", + "w_stress_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_stress_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_reminder.sent : true" + "_raw": "click | set_field: w_stress_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_reminder_sent : true" } ], "priority": 8.6, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } - }, - "_raw": "get_field | workshop_number : 5" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_started", - "value": false - } + "calc": "@fields.workshop_number == 5 && @fields.workshop_day == 3" }, - "_raw": "get_field | w_stress_started : false" + "_raw": "@fields.workshop_number == 5 && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_w_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_w_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_stress_started" }, - "_raw": "get_field | workshop_day : 2" + "_raw": "@fields.w_stress_started" } ], "campaign_list": [ @@ -385,86 +255,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_in_progress.sent", + "w_stress_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_stress_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_stress_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_in_progress_sent : true" } ], "priority": 8.5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.w_stress_started && @fields.workshop_day == 3" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5 && @fields.w_stress_started && @fields.workshop_day == 3" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_w_in_progress.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_w_in_progress.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_started", - "value": false - } + "calc": "@fields.w_stress_completion_level == 100" }, - "_raw": "get_field | w_stress_started : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_stress_completion_level: 100" + "_raw": "@fields.w_stress_completion_level == 100" } ], "campaign_list": [ @@ -488,86 +302,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_hp_reminder.sent", + "w_stress_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_stress_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_stress_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_stress_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_stress_m_hp_reminder_sent : true" } ], "priority": 8.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.w_stress_completion_level == 100 && @fields.workshop_day == 4" }, - "_raw": "get_field | workshop_number : 5" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_completion_level", - "value": "100" - } - }, - "_raw": "get_field | w_stress_completion_level: 100" + "_raw": "@fields.workshop_number == 5 && @fields.w_stress_completion_level == 100 && @fields.workshop_day == 4" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_hp_reminder.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_hp_reminder.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } + "calc": "@fields.w_stress_m_hp_reminder_sent" }, - "_raw": "get_field | workshop_day : 3" + "_raw": "@fields.w_stress_m_hp_reminder_sent" } ], "campaign_list": [ @@ -591,86 +349,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_parent_points_overview.sent", + "w_stress_m_parent_points_overview_sent", true ], - "_raw": "click | set_field: w_stress_m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: w_stress_m_parent_points_overview.sent : true" + "_raw": "click | set_field: w_stress_m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: w_stress_m_parent_points_overview_sent : true" } ], "priority": 8.3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.workshop_day == 5" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_parent_points_overview.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_parent_points_overview.sent : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } + "calc": "@fields.w_stress_m_parent_points_overview_sent" }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_stress_m_parent_points_overview_sent" } ], "campaign_list": [ @@ -694,96 +396,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_hp_review.sent", + "w_stress_hp_review_sent", true ], - "_raw": "click | set_field: w_stress_hp_review.sent : true", - "_cleaned": "click | set_field: w_stress_hp_review.sent : true" + "_raw": "click | set_field: w_stress_hp_review_sent : true", + "_cleaned": "click | set_field: w_stress_hp_review_sent : true" } ], "priority": 8.2, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } - }, - "_raw": "get_field | workshop_number : 5" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_completion_level", - "value": "100" - } + "calc": "@fields.workshop_number == 5 && @fields.w_stress_completion_level == 100 && @fields.workshop_day == 5" }, - "_raw": "get_field | w_stress_completion_level: 100" + "_raw": "@fields.workshop_number == 5 && @fields.w_stress_completion_level == 100 && @fields.workshop_day == 5" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_hp_review_completed", - "value": true - } - }, - "_raw": "get_field | w_stress_hp_review_completed : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } + "calc": "@fields.w_stress_hp_review_completed" }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" + "_raw": "@fields.w_stress_hp_review_completed" } ], "campaign_list": [ @@ -807,96 +443,30 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_tomorrow.sent", + "w_stress_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_stress_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_stress_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_tomorrow_sent : true" } ], "priority": 8.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5 && @fields.workshop_day == 6" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5 && @fields.workshop_day == 6" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_m_w_tomorrow.sent", - "value": true - } - }, - "_raw": "get_field | w_stress_m_w_tomorrow.sent : true" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "0" - } - }, - "_raw": "get_field | workshop_day : 0" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "1" - } - }, - "_raw": "get_field | workshop_day : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "2" - } - }, - "_raw": "get_field | workshop_day : 2" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "3" - } - }, - "_raw": "get_field | workshop_day : 3" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "4" - } - }, - "_raw": "get_field | workshop_day : 4" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_day", - "value": "5" - } + "calc": "@fields.w_stress_m_w_tomorrow_sent" }, - "_raw": "get_field | workshop_day : 5" + "_raw": "@fields.w_stress_m_w_tomorrow_sent" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_relax.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_relax.json index babc86af62..c556945681 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_relax.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_relax.json @@ -50,24 +50,11 @@ "priority": 0.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "1" - } + "calc": "@fields.workshop_number == 1 && @fields.w_self_care_completed" }, - "_raw": "get_field | workshop_number : 1" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_completed", - "value": true - } - }, - "_raw": "get_field | w_self_care_completed : true" + "_raw": "@fields.workshop_number == 1 && @fields.w_self_care_completed" } ], "campaign_list": [ @@ -101,14 +88,11 @@ "priority": 1.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 2" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 2" } ], "campaign_list": [ @@ -142,14 +126,11 @@ "priority": 2.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 3" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 3" } ], "campaign_list": [ @@ -183,14 +164,11 @@ "priority": 3.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 4" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 4" } ], "campaign_list": [ @@ -224,14 +202,11 @@ "priority": 4.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 5" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 5" } ], "campaign_list": [ @@ -265,14 +240,11 @@ "priority": 5.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 6" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 6" } ], "campaign_list": [ @@ -306,14 +278,11 @@ "priority": 6.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 7" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 7" } ], "campaign_list": [ @@ -347,14 +316,11 @@ "priority": 7.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 8" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 8" } ], "campaign_list": [ @@ -388,14 +354,11 @@ "priority": 8.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 9" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 9" } ], "campaign_list": [ @@ -429,14 +392,11 @@ "priority": 9.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 10" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 10" } ], "campaign_list": [ @@ -470,14 +430,11 @@ "priority": 10.1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 11" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 11" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_something_fun.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_something_fun.json index ebf7afe275..ee9067618b 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_something_fun.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_something_fun.json @@ -50,14 +50,11 @@ "priority": 1.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "2" - } + "calc": "@fields.workshop_number == 1" }, - "_raw": "get_field | workshop_number : 2" + "_raw": "@fields.workshop_number == 1" } ], "campaign_list": [ @@ -91,14 +88,11 @@ "priority": 2.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "3" - } + "calc": "@fields.workshop_number == 2" }, - "_raw": "get_field | workshop_number : 3" + "_raw": "@fields.workshop_number == 2" } ], "campaign_list": [ @@ -132,14 +126,11 @@ "priority": 3.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "4" - } + "calc": "@fields.workshop_number == 3" }, - "_raw": "get_field | workshop_number : 4" + "_raw": "@fields.workshop_number == 3" } ], "campaign_list": [ @@ -173,14 +164,11 @@ "priority": 4.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "5" - } + "calc": "@fields.workshop_number == 4" }, - "_raw": "get_field | workshop_number : 5" + "_raw": "@fields.workshop_number == 4" } ], "campaign_list": [ @@ -214,14 +202,11 @@ "priority": 5.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "6" - } + "calc": "@fields.workshop_number == 5" }, - "_raw": "get_field | workshop_number : 6" + "_raw": "@fields.workshop_number == 5" } ], "campaign_list": [ @@ -255,14 +240,11 @@ "priority": 6.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "7" - } + "calc": "@fields.workshop_number == 6" }, - "_raw": "get_field | workshop_number : 7" + "_raw": "@fields.workshop_number == 6" } ], "campaign_list": [ @@ -296,14 +278,11 @@ "priority": 7.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "8" - } + "calc": "@fields.workshop_number == 7" }, - "_raw": "get_field | workshop_number : 8" + "_raw": "@fields.workshop_number == 7" } ], "campaign_list": [ @@ -337,14 +316,11 @@ "priority": 8.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "9" - } + "calc": "@fields.workshop_number == 8" }, - "_raw": "get_field | workshop_number : 9" + "_raw": "@fields.workshop_number == 8" } ], "campaign_list": [ @@ -378,14 +354,11 @@ "priority": 9.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "10" - } + "calc": "@fields.workshop_number == 9" }, - "_raw": "get_field | workshop_number : 10" + "_raw": "@fields.workshop_number == 9" } ], "campaign_list": [ @@ -419,14 +392,11 @@ "priority": 10.4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "workshop_number", - "value": "11" - } + "calc": "@fields.workshop_number == 10" }, - "_raw": "get_field | workshop_number : 11" + "_raw": "@fields.workshop_number == 10" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/campaign_workshop_quick_start.json b/packages/app-data/sheets/data_list/campaign_rows/campaign_workshop_quick_start.json index 19034e0399..80c9ab702f 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/campaign_workshop_quick_start.json +++ b/packages/app-data/sheets/data_list/campaign_rows/campaign_workshop_quick_start.json @@ -11,11 +11,10 @@ "trigger": "click", "action_id": "set_field", "args": [ - "default.sent", - true + "default.sent" ], - "_raw": "click | set_field: default.sent : true", - "_cleaned": "click | set_field: default.sent : true" + "_raw": "click | set_field: default.sent", + "_cleaned": "click | set_field: default.sent" } ], "priority": -1, @@ -41,26 +40,20 @@ "priority": 12, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_disabled", - "value": false - } + "calc": "!@fields.w_self_care_disabled" }, - "_raw": "get_field | w_self_care_disabled : false" + "_raw": "!@fields.w_self_care_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_started", - "value": true - } + "calc": "@fields.w_self_care_started" }, - "_raw": "get_field | w_self_care_started : true" + "_raw": "@fields.w_self_care_started" } ], "campaign_list": [ @@ -101,36 +94,20 @@ "priority": 12, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_disabled", - "value": false - } + "calc": "!@fields.w_self_care_disabled && @fields.w_self_care_started" }, - "_raw": "get_field | w_self_care_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_self_care_started", - "value": true - } - }, - "_raw": "get_field | w_self_care_started : true" + "_raw": "!@fields.w_self_care_disabled && @fields.w_self_care_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_completed", - "value": true - } + "calc": "@fields.w_self_care_completion_level == 100" }, - "_raw": "get_field | w_self_care_completed: true" + "_raw": "@fields.w_self_care_completion_level == 100" } ], "campaign_list": [ @@ -171,26 +148,20 @@ "priority": 11, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_disabled", - "value": false - } + "calc": "!@fields.w_1on1_disabled" }, - "_raw": "get_field | w_1on1_disabled : false" + "_raw": "!@fields.w_1on1_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_started", - "value": true - } + "calc": "@fields.w_1on1_started" }, - "_raw": "get_field | w_1on1_started : true" + "_raw": "@fields.w_1on1_started" } ], "campaign_list": [ @@ -231,36 +202,20 @@ "priority": 11, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_disabled", - "value": false - } + "calc": "!@fields.w_1on1_disabled && @fields.w_1on1_started" }, - "_raw": "get_field | w_1on1_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_1on1_started", - "value": true - } - }, - "_raw": "get_field | w_1on1_started : true" + "_raw": "!@fields.w_1on1_disabled && @fields.w_1on1_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_1on1_completed", - "value": true - } + "calc": "@fields.w_1on1_completion_level == 100" }, - "_raw": "get_field | w_1on1_completed: true" + "_raw": "@fields.w_1on1_completion_level == 100" } ], "campaign_list": [ @@ -301,26 +256,20 @@ "priority": 10, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_disabled", - "value": false - } + "calc": "!@fields.w_praise_disabled" }, - "_raw": "get_field | w_praise_disabled : false" + "_raw": "!@fields.w_praise_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_started", - "value": true - } + "calc": "@fields.w_praise_started" }, - "_raw": "get_field | w_praise_started : true" + "_raw": "@fields.w_praise_started" } ], "campaign_list": [ @@ -361,36 +310,20 @@ "priority": 10, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_praise_disabled", - "value": false - } - }, - "_raw": "get_field | w_praise_disabled : false" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_started", - "value": true - } + "calc": "!@fields.w_praise_disabled && @fields.w_praise_started" }, - "_raw": "get_field | w_praise_started : true" + "_raw": "!@fields.w_praise_disabled && @fields.w_praise_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_praise_completed", - "value": true - } + "calc": "@fields.w_praise_completion_level == 100" }, - "_raw": "get_field | w_praise_completed: true" + "_raw": "@fields.w_praise_completion_level == 100" } ], "campaign_list": [ @@ -431,26 +364,20 @@ "priority": 9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_disabled", - "value": false - } + "calc": "!@fields.w_instruct_disabled" }, - "_raw": "get_field | w_instruct_disabled : false" + "_raw": "!@fields.w_instruct_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_started", - "value": true - } + "calc": "@fields.w_instruct_started" }, - "_raw": "get_field | w_instruct_started : true" + "_raw": "@fields.w_instruct_started" } ], "campaign_list": [ @@ -491,36 +418,20 @@ "priority": 9, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_disabled", - "value": false - } + "calc": "!@fields.w_instruct_disabled && @fields.w_instruct_started" }, - "_raw": "get_field | w_instruct_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_instruct_started", - "value": true - } - }, - "_raw": "get_field | w_instruct_started : true" + "_raw": "!@fields.w_instruct_disabled && @fields.w_instruct_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_instruct_completed", - "value": true - } + "calc": "@fields.w_instruct_completion_level == 100" }, - "_raw": "get_field | w_instruct_completed: true" + "_raw": "@fields.w_instruct_completion_level == 100" } ], "campaign_list": [ @@ -561,26 +472,20 @@ "priority": 8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_disabled", - "value": false - } + "calc": "!@fields.w_stress_disabled" }, - "_raw": "get_field | w_stress_disabled : false" + "_raw": "!@fields.w_stress_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_started", - "value": true - } + "calc": "@fields.w_stress_started" }, - "_raw": "get_field | w_stress_started : true" + "_raw": "@fields.w_stress_started" } ], "campaign_list": [ @@ -621,36 +526,20 @@ "priority": 8, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_disabled", - "value": false - } + "calc": "!@fields.w_stress_disabled && @fields.w_stress_started" }, - "_raw": "get_field | w_stress_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_stress_started", - "value": true - } - }, - "_raw": "get_field | w_stress_started : true" + "_raw": "!@fields.w_stress_disabled && @fields.w_stress_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_stress_completed", - "value": true - } + "calc": "@fields.w_stress_completion_level == 100" }, - "_raw": "get_field | w_stress_completed: true" + "_raw": "@fields.w_stress_completion_level == 100" } ], "campaign_list": [ @@ -691,26 +580,20 @@ "priority": 7, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_disabled", - "value": false - } + "calc": "!@fields.w_money_disabled" }, - "_raw": "get_field | w_money_disabled : false" + "_raw": "!@fields.w_money_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_started", - "value": true - } + "calc": "@fields.w_money_started" }, - "_raw": "get_field | w_money_started : true" + "_raw": "@fields.w_money_started" } ], "campaign_list": [ @@ -751,36 +634,20 @@ "priority": 7, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_money_disabled", - "value": false - } - }, - "_raw": "get_field | w_money_disabled : false" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_started", - "value": true - } + "calc": "!@fields.w_money_disabled && @fields.w_money_started" }, - "_raw": "get_field | w_money_started : true" + "_raw": "!@fields.w_money_disabled && @fields.w_money_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_money_completed", - "value": true - } + "calc": "@fields.w_money_completion_level == 100" }, - "_raw": "get_field | w_money_completed: true" + "_raw": "@fields.w_money_completion_level == 100" } ], "campaign_list": [ @@ -821,26 +688,20 @@ "priority": 6, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_disabled", - "value": false - } + "calc": "!@fields.w_rules_disabled" }, - "_raw": "get_field | w_rules_disabled : false" + "_raw": "!@fields.w_rules_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_started", - "value": true - } + "calc": "@fields.w_rules_started" }, - "_raw": "get_field | w_rules_started : true" + "_raw": "@fields.w_rules_started" } ], "campaign_list": [ @@ -881,36 +742,20 @@ "priority": 6, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_disabled", - "value": false - } + "calc": "!@fields.w_rules_disabled && @fields.w_rules_started" }, - "_raw": "get_field | w_rules_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_rules_started", - "value": true - } - }, - "_raw": "get_field | w_rules_started : true" + "_raw": "!@fields.w_rules_disabled && @fields.w_rules_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_rules_completed", - "value": true - } + "calc": "@fields.w_rules_completion_level == 100" }, - "_raw": "get_field | w_rules_completed: true" + "_raw": "@fields.w_rules_completion_level == 100" } ], "campaign_list": [ @@ -951,26 +796,20 @@ "priority": 5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_disabled", - "value": false - } + "calc": "!@fields.w_consequence_disabled" }, - "_raw": "get_field | w_consequence_disabled : false" + "_raw": "!@fields.w_consequence_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_started", - "value": true - } + "calc": "@fields.w_consequence_started" }, - "_raw": "get_field | w_consequence_started : true" + "_raw": "@fields.w_consequence_started" } ], "campaign_list": [ @@ -1011,36 +850,20 @@ "priority": 5, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_disabled", - "value": false - } + "calc": "!@fields.w_consequence_disabled && @fields.w_consequence_started" }, - "_raw": "get_field | w_consequence_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_consequence_started", - "value": true - } - }, - "_raw": "get_field | w_consequence_started : true" + "_raw": "!@fields.w_consequence_disabled && @fields.w_consequence_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_consequence_completed", - "value": true - } + "calc": "@fields.w_consequence_completion_level == 100" }, - "_raw": "get_field | w_consequence_completed: true" + "_raw": "@fields.w_consequence_completion_level == 100" } ], "campaign_list": [ @@ -1081,26 +904,20 @@ "priority": 4, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_disabled", - "value": false - } + "calc": "!@fields.w_solve_disabled" }, - "_raw": "get_field | w_solve_disabled : false" + "_raw": "!@fields.w_solve_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_started", - "value": true - } + "calc": "@fields.w_solve_started" }, - "_raw": "get_field | w_solve_started : true" + "_raw": "@fields.w_solve_started" } ], "campaign_list": [ @@ -1141,36 +958,20 @@ "priority": 4, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_solve_disabled", - "value": false - } - }, - "_raw": "get_field | w_solve_disabled : false" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_started", - "value": true - } + "calc": "!@fields.w_solve_disabled && @fields.w_solve_started" }, - "_raw": "get_field | w_solve_started : true" + "_raw": "!@fields.w_solve_disabled && @fields.w_solve_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_solve_completed", - "value": true - } + "calc": "@fields.w_solve_completion_level == 100" }, - "_raw": "get_field | w_solve_completed: true" + "_raw": "@fields.w_solve_completion_level == 100" } ], "campaign_list": [ @@ -1211,26 +1012,20 @@ "priority": 3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_disabled", - "value": false - } + "calc": "!@fields.w_safe_disabled" }, - "_raw": "get_field | w_safe_disabled : false" + "_raw": "!@fields.w_safe_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_started", - "value": true - } + "calc": "@fields.w_safe_started" }, - "_raw": "get_field | w_safe_started : true" + "_raw": "@fields.w_safe_started" } ], "campaign_list": [ @@ -1271,36 +1066,20 @@ "priority": 3, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_disabled", - "value": false - } + "calc": "!@fields.w_safe_disabled && @fields.w_safe_started" }, - "_raw": "get_field | w_safe_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_safe_started", - "value": true - } - }, - "_raw": "get_field | w_safe_started : true" + "_raw": "!@fields.w_safe_disabled && @fields.w_safe_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_safe_completed", - "value": true - } + "calc": "@fields.w_safe_completion_level == 100" }, - "_raw": "get_field | w_safe_completed: true" + "_raw": "@fields.w_safe_completion_level == 100" } ], "campaign_list": [ @@ -1341,26 +1120,20 @@ "priority": 2, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_disabled", - "value": false - } + "calc": "!@fields.w_crisis_disabled" }, - "_raw": "get_field | w_crisis_disabled : false" + "_raw": "!@fields.w_crisis_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_started", - "value": true - } + "calc": "@fields.w_crisis_started" }, - "_raw": "get_field | w_crisis_started : true" + "_raw": "@fields.w_crisis_started" } ], "campaign_list": [ @@ -1401,36 +1174,20 @@ "priority": 2, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_disabled", - "value": false - } + "calc": "! @fields.w_crisis_disabled && @fields.w_crisis_started" }, - "_raw": "get_field | w_crisis_disabled : false" - }, - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_crisis_started", - "value": true - } - }, - "_raw": "get_field | w_crisis_started : true" + "_raw": "! @fields.w_crisis_disabled && @fields.w_crisis_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_crisis_completed", - "value": true - } + "calc": "@fields.w_crisis_completion_level == 100" }, - "_raw": "get_field | w_crisis_completed: true" + "_raw": "@fields.w_crisis_completion_level == 100" } ], "campaign_list": [ @@ -1471,26 +1228,20 @@ "priority": 1, "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_celebrate_disabled", - "value": false - } + "calc": "!@fields.w_celebrate_disabled" }, - "_raw": "get_field | w_celebrate_disabled : false" + "_raw": "!@fields.w_celebrate_disabled" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_celebrate_started", - "value": true - } + "calc": "@fields.w_celebrate_started" }, - "_raw": "get_field | w_celebrate_started : true" + "_raw": "@fields.w_celebrate_started" } ], "campaign_list": [ @@ -1531,36 +1282,20 @@ "priority": 1, "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "w_celebrate_disabled", - "value": false - } - }, - "_raw": "get_field | w_celebrate_disabled : false" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_celebrate_started", - "value": true - } + "calc": "!@fields.w_celebrate_disabled && @fields.w_celebrate_started" }, - "_raw": "get_field | w_celebrate_started : true" + "_raw": "!@fields.w_celebrate_disabled && @fields.w_celebrate_started" } ], "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_celebrate_completed", - "value": true - } + "calc": "@fields.w_celebrate_completion_level == 100" }, - "_raw": "get_field | w_celebrate_completed: true" + "_raw": "@fields.w_celebrate_completion_level == 100" } ], "campaign_list": [ diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_generic.json b/packages/app-data/sheets/data_list/campaign_rows/nf_generic.json deleted file mode 100644 index 654f747d5a..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_generic.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows", - "flow_name": "nf_generic", - "status": "released", - "rows": [ - { - "id": "nf_generic_1", - "workshop": "independent", - "message_type": "generic", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_generic_1.sent", - true - ], - "_raw": "sent | set_field: nf_generic_1.sent : true", - "_cleaned": "sent | set_field: nf_generic_1.sent : true" - } - ], - "priority": 1, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "nf_generic_1.sent", - "value": true - } - }, - "_raw": "get_field | nf_generic_1.sent : true" - } - ], - "campaign_list": [ - "nf_generic" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app." - } - }, - "text": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app." - }, - { - "id": "nf_generic_2", - "workshop": "independent", - "message_type": "generic", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_generic_2.sent", - true - ], - "_raw": "sent | set_field: nf_generic_2.sent : true", - "_cleaned": "sent | set_field: nf_generic_2.sent : true" - } - ], - "priority": 1, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "nf_generic_2.sent", - "value": true - } - }, - "_raw": "get_field | nf_generic_2.sent : true" - } - ], - "campaign_list": [ - "nf_generic" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app." - } - }, - "text": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app." - }, - { - "id": "nf_generic_3", - "workshop": "independent", - "message_type": "generic", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_generic_3.sent", - true - ], - "_raw": "sent | set_field: nf_generic_3.sent : true", - "_cleaned": "sent | set_field: nf_generic_3.sent : true" - } - ], - "priority": 1, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "nf_generic_3.sent", - "value": true - } - }, - "_raw": "get_field | nf_generic_3.sent : true" - } - ], - "campaign_list": [ - "nf_generic" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hi great parent! @global.parent_app is here to support you. Check it out now!" - } - }, - "text": "Hi great parent! @global.parent_app is here to support you. Check it out now!" - } - ], - "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_day.json b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_day.json index 3a9f4dcc48..a774e37252 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_day.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_day.json @@ -13,50 +13,42 @@ "trigger": "sent", "action_id": "set_field", "args": [ - "nf_inactive_day_1.sent", + "nf_inactive_day_1_sent", true ], - "_raw": "sent | set_field: nf_inactive_day_1.sent : true", - "_cleaned": "sent | set_field: nf_inactive_day_1.sent : true" + "_raw": "sent | set_field: nf_inactive_day_1_sent : true", + "_cleaned": "sent | set_field: nf_inactive_day_1_sent : true" } ], "priority": 1, "deactivation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "nf_inactive_day_1.sent", - "value": true - } + "calc": "@fields.nf_inactive_day_1_sent" }, - "_raw": "get_field | nf_inactive_day_1.sent : true" + "_raw": "@fields.nf_inactive_day_1_sent" } ], "campaign_list": [ "nf_inactive_day" ], - "title": "New message from PLH", + "text": "Welcome to @global.parent_app. Click here to start your journey!", "_translations": { - "title": { + "text": { "tz_sw": true, "za_af": true, "za_st": true, "za_tn": true, "za_xh": true, "za_zu": true - }, - "text": {} + } }, "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, "text": { "eng": "Welcome to @global.parent_app. Click here to start your journey!" } - }, - "text": "Welcome to @global.parent_app. Click here to start your journey!" + } } ], "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_month.json b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_month.json deleted file mode 100644 index 3ee30c54c8..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_month.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows", - "flow_name": "nf_inactive_month", - "status": "released", - "rows": [ - { - "id": "nf_inactive_month_1", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_month_1.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_month_1.sent : true", - "_cleaned": "sent | set_field: nf_inactive_month_1.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_month" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you." - } - }, - "text": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you." - }, - { - "id": "nf_inactive_month_2", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_month_2.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_month_2.sent : true", - "_cleaned": "sent | set_field: nf_inactive_month_2.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_month" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "@global.parent_app misses you! There is a lot to explore. We are still here to support you." - } - }, - "text": "@global.parent_app misses you! There is a lot to explore. We are still here to support you." - }, - { - "id": "nf_inactive_month_3", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_month_3.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_month_3.sent : true", - "_cleaned": "sent | set_field: nf_inactive_month_3.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_month" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life." - } - }, - "text": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life." - }, - { - "id": "nf_inactive_month_4", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_month_4.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_month_4.sent : true", - "_cleaned": "sent | set_field: nf_inactive_month_4.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_month" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!" - } - }, - "text": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!" - } - ], - "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_progress.json b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_progress.json new file mode 100644 index 0000000000..5ed1efc8d6 --- /dev/null +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_progress.json @@ -0,0 +1,693 @@ +{ + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_inactive_progress", + "status": "released", + "rows": [ + { + "id": "nf_inactive_w_self_care", + "workshop": "w_self_care", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_self_care_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_self_care_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_self_care_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_self_care\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_self_care\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_self_care_sent" + }, + "_raw": "@fields.nf_inactive_w_self_care_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Care for yourself with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Care for yourself with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, it is so good to have you on this parenting journey. Tap the @data.workshop.w_self_care.in_text_title and learn more on how you can care for yourself. A happy family starts with a happy YOU!" + } + }, + "text": "@fields.user_name, it is so good to have you on this parenting journey. Tap the @data.workshop.w_self_care.in_text_title and learn more on how you can care for yourself. A happy family starts with a happy YOU!" + }, + { + "id": "nf_inactive_w_1on1", + "workshop": "w_1on1", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_1on1_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_1on1_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_1on1_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_1on1\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_1on1\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_1on1_sent" + }, + "_raw": "@fields.nf_inactive_w_1on1_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Connect well through @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Connect well through @global.parent_app" + }, + "text": { + "eng": "Spending time with your teen helps build trust between you. Continue your @global.parent_app journey now by completing the @data.workshop.w_1on1.in_text_title. You and your family will see great results." + } + }, + "text": "Spending time with your teen helps build trust between you. Continue your @global.parent_app journey now by completing the @data.workshop.w_1on1.in_text_title. You and your family will see great results." + }, + { + "id": "nf_inactive_w_praise", + "workshop": "w_praise", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_praise_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_praise_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_praise_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_praise\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_praise\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_praise_sent" + }, + "_raw": "@fields.nf_inactive_w_praise_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Praise each other with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Praise each other with @global.parent_app" + }, + "text": { + "eng": "Praising makes all the difference. Complete the @data.workshop.w_praise.in_text_title to see how praise can change YOUR family." + } + }, + "text": "Praising makes all the difference. Complete the @data.workshop.w_praise.in_text_title to see how praise can change YOUR family." + }, + { + "id": "nf_inactive_w_instruct", + "workshop": "w_instruct", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_instruct_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_instruct_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_instruct_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_instruct\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_instruct\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_instruct_sent" + }, + "_raw": "@fields.nf_inactive_w_instruct_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Instruct well through @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Instruct well through @global.parent_app" + }, + "text": { + "eng": "Positive instructions help to see more and more good behaviour! Learn how this could work in your family, by completing the @data.workshop.w_instruct.in_text_title." + } + }, + "text": "Positive instructions help to see more and more good behaviour! Learn how this could work in your family, by completing the @data.workshop.w_instruct.in_text_title." + }, + { + "id": "nf_inactive_w_stress", + "workshop": "w_stress", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_stress_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_stress_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_stress_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_stress\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_stress\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_stress_sent" + }, + "_raw": "@fields.nf_inactive_w_stress_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Stay calm with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Stay calm with @global.parent_app" + }, + "text": { + "eng": "We all feel overwhelmed sometimes. Taking a deep breath helps! Complete the @data.workshop.w_stress.in_text_title to get some useful tools to deal with stress." + } + }, + "text": "We all feel overwhelmed sometimes. Taking a deep breath helps! Complete the @data.workshop.w_stress.in_text_title to get some useful tools to deal with stress." + }, + { + "id": "nf_inactive_w_money", + "workshop": "w_money", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_money_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_money_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_money_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_money\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_money\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_money_sent" + }, + "_raw": "@fields.nf_inactive_w_money_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Manage money with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Manage money with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, do you feel stressed about money? Does your teen keep asking for things you can’t afford? Tap the @data.workshop.w_money.in_text_title to get great tips on money and budgeting." + } + }, + "text": "@fields.user_name, do you feel stressed about money? Does your teen keep asking for things you can’t afford? Tap the @data.workshop.w_money.in_text_title to get great tips on money and budgeting." + }, + { + "id": "nf_inactive_w_rules", + "workshop": "w_rules", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_rules_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_rules_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_rules_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_rules\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_rules\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_rules_sent" + }, + "_raw": "@fields.nf_inactive_w_rules_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Rules that work with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Rules that work with @global.parent_app" + }, + "text": { + "eng": "Well done for using @global.parent_app and for committing to your parenting journey. The @data.workshop.w_rules.in_text_title shows you how to set rules in a way that helps your teen to understand and follow them better. Try it out today!" + } + }, + "text": "Well done for using @global.parent_app and for committing to your parenting journey. The @data.workshop.w_rules.in_text_title shows you how to set rules in a way that helps your teen to understand and follow them better. Try it out today!" + }, + { + "id": "nf_inactive_w_consequence", + "workshop": "w_consequence", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_consequence_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_consequence_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_consequence_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_consequence\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_consequence\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_consequence_sent" + }, + "_raw": "@fields.nf_inactive_w_consequence_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Motivate your teen with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Motivate your teen with @global.parent_app" + }, + "text": { + "eng": "You have build many great parenting skills already! Tap the @data.workshop.w_consequence.in_text_title to learn how to set one positive and one negative consequence of a behaviour together. You and your family will benefits!" + } + }, + "text": "You have build many great parenting skills already! Tap the @data.workshop.w_consequence.in_text_title to learn how to set one positive and one negative consequence of a behaviour together. You and your family will benefits!" + }, + { + "id": "nf_inactive_w_solve", + "workshop": "w_solve", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_solve_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_solve_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_solve_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_solve\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_solve\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_solve_sent" + }, + "_raw": "@fields.nf_inactive_w_solve_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Solve problems with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Solve problems with @global.parent_app" + }, + "text": { + "eng": "With teenagers, and in life, unexpected problems come up. Tap the @data.workshop.w_solve.in_text_title to learn how to resolve any challenge together with your teen." + } + }, + "text": "With teenagers, and in life, unexpected problems come up. Tap the @data.workshop.w_solve.in_text_title to learn how to resolve any challenge together with your teen." + }, + { + "id": "nf_inactive_w_safe", + "workshop": "w_safe", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_safe_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_safe_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_safe_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_safe\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_safe\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_safe_sent" + }, + "_raw": "@fields.nf_inactive_w_safe_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Stay safe through @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Stay safe through @global.parent_app" + }, + "text": { + "eng": "To keep your teen safe, it helps to chat together about your community and their online experiences. Complete the @data.workshop.w_safe.in_text_title and see how you can do this!" + } + }, + "text": "To keep your teen safe, it helps to chat together about your community and their online experiences. Complete the @data.workshop.w_safe.in_text_title and see how you can do this!" + }, + { + "id": "nf_inactive_w_crisis", + "workshop": "w_crisis", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_crisis_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_crisis_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_crisis_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_crisis\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_crisis\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_crisis_sent" + }, + "_raw": "@fields.nf_inactive_w_crisis_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Be ready with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Be ready with @global.parent_app" + }, + "text": { + "eng": "We never know when a crisis may happen, but we CAN be prepared! Tap the @data.workshop.w_crisis.in_text_title to explore how you can do this together with your teen." + } + }, + "text": "We never know when a crisis may happen, but we CAN be prepared! Tap the @data.workshop.w_crisis.in_text_title to explore how you can do this together with your teen." + }, + { + "id": "nf_inactive_w_celebrate", + "workshop": "w_celebrate", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_w_celebrate_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_w_celebrate_sent : true", + "_cleaned": "sent | set_field: nf_inactive_w_celebrate_sent : true" + } + ], + "priority": 1, + "activation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields._task_highlighted_group_id == \"w_celebrate\"" + }, + "_raw": "@fields._task_highlighted_group_id == \"w_celebrate\"" + } + ], + "deactivation_condition_list": [ + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.nf_inactive_w_celebrate_sent" + }, + "_raw": "@fields.nf_inactive_w_celebrate_sent" + } + ], + "campaign_list": [ + "nf_inactive_progress" + ], + "title": "Celebrate with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Celebrate with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, you deserve to celebrate and be celebrated! Tap the @data.workshop.w_celebrate.in_text_title to reflect on your journey and get ideas for how you can continue to invest in yourself and your family." + } + }, + "text": "@fields.user_name, you deserve to celebrate and be celebrated! Tap the @data.workshop.w_celebrate.in_text_title to reflect on your journey and get ideas for how you can continue to invest in yourself and your family." + } + ], + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week.json b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week.json deleted file mode 100644 index 8e63983d2a..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows", - "flow_name": "nf_inactive_week", - "status": "released", - "rows": [ - { - "id": "nf_inactive_week_1", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_week_1.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_week_1.sent : true", - "_cleaned": "sent | set_field: nf_inactive_week_1.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_week" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!" - } - }, - "text": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!" - }, - { - "id": "nf_inactive_week_2", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_week_2.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_week_2.sent : true", - "_cleaned": "sent | set_field: nf_inactive_week_2.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_week" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress." - } - }, - "text": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress." - }, - { - "id": "nf_inactive_week_3", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_week_3.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_week_3.sent : true", - "_cleaned": "sent | set_field: nf_inactive_week_3.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_week" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful." - } - }, - "text": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful." - }, - { - "id": "nf_inactive_week_4", - "workshop": "independent", - "message_type": "inactive", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "nf_inactive_week_4.sent", - true - ], - "_raw": "sent | set_field: nf_inactive_week_4.sent : true", - "_cleaned": "sent | set_field: nf_inactive_week_4.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "nf_inactive_week" - ], - "title": "New message from PLH", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "text": {} - }, - "_translatedFields": { - "title": { - "eng": "New message from PLH" - }, - "text": { - "eng": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour." - } - }, - "text": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour." - } - ], - "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week_month.json b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week_month.json new file mode 100644 index 0000000000..d146853852 --- /dev/null +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_inactive_week_month.json @@ -0,0 +1,809 @@ +{ + "flow_type": "data_list", + "flow_subtype": "campaign_rows", + "flow_name": "nf_inactive_week_month", + "status": "released", + "rows": [ + { + "id": "nf_inactive_1", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_1_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_1_sent : true", + "_cleaned": "sent | set_field: nf_inactive_1_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Take a break with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Take a break with @global.parent_app" + }, + "text": { + "eng": "Parenting can be hard, but @global.parent_app is here to help you win. Tap here to find practical tips for you and your family." + } + }, + "text": "Parenting can be hard, but @global.parent_app is here to help you win. Tap here to find practical tips for you and your family." + }, + { + "id": "nf_inactive_2", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_2_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_2_sent : true", + "_cleaned": "sent | set_field: nf_inactive_2_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app is here for you", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app is here for you" + }, + "text": { + "eng": "@fields.user_name, do you ever feel stressed as a parent? @global.parent_app is here to help you feel more calm and focused. Tap here to find out more." + } + }, + "text": "@fields.user_name, do you ever feel stressed as a parent? @global.parent_app is here to help you feel more calm and focused. Tap here to find out more." + }, + { + "id": "nf_inactive_3", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_3_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_3_sent : true", + "_cleaned": "sent | set_field: nf_inactive_3_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Get some help in @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Get some help in @global.parent_app" + }, + "text": { + "eng": "Millions of parents found the tips in @global.parent_app useful, and you can access them too. Tap here to explore." + } + }, + "text": "Millions of parents found the tips in @global.parent_app useful, and you can access them too. Tap here to explore." + }, + { + "id": "nf_inactive_4", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_4_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_4_sent : true", + "_cleaned": "sent | set_field: nf_inactive_4_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Make a difference with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Make a difference with @global.parent_app" + }, + "text": { + "eng": "Need some help with your teen's behaviour? @global.parent_app is here for you. Tap here to check it out." + } + }, + "text": "Need some help with your teen's behaviour? @global.parent_app is here for you. Tap here to check it out." + }, + { + "id": "nf_inactive_5", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_5_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_5_sent : true", + "_cleaned": "sent | set_field: nf_inactive_5_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app can help you", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app can help you" + }, + "text": { + "eng": "Want to invest in yourself and your family? 1 minute in @global.parent_app already makes a difference! Tap here to find out more." + } + }, + "text": "Want to invest in yourself and your family? 1 minute in @global.parent_app already makes a difference! Tap here to find out more." + }, + { + "id": "nf_inactive_6", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_6_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_6_sent : true", + "_cleaned": "sent | set_field: nf_inactive_6_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "See success with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "See success with @global.parent_app" + }, + "text": { + "eng": "Want to set your teen and family up for success? Get practical tips and more in @global.parent_app." + } + }, + "text": "Want to set your teen and family up for success? Get practical tips and more in @global.parent_app." + }, + { + "id": "nf_inactive_7", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_7_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_7_sent : true", + "_cleaned": "sent | set_field: nf_inactive_7_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Keep growing with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Keep growing with @global.parent_app" + }, + "text": { + "eng": "Remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app." + } + }, + "text": "Remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app." + }, + { + "id": "nf_inactive_8", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_8_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_8_sent : true", + "_cleaned": "sent | set_field: nf_inactive_8_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Enjoy and learn with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Enjoy and learn with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, @global.parent_app is here to support you. Tap here and check it out now." + } + }, + "text": "@fields.user_name, @global.parent_app is here to support you. Tap here and check it out now." + }, + { + "id": "nf_inactive_9", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_9_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_9_sent : true", + "_cleaned": "sent | set_field: nf_inactive_9_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "See the change with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "See the change with @global.parent_app" + }, + "text": { + "eng": "Do you want to enjoy family life more? Tap here and find practical tips in @global.parent_app." + } + }, + "text": "Do you want to enjoy family life more? Tap here and find practical tips in @global.parent_app." + }, + { + "id": "nf_inactive_10", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_10_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_10_sent : true", + "_cleaned": "sent | set_field: nf_inactive_10_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app will help you grow", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app will help you grow" + }, + "text": { + "eng": "You are not alone! @global.parent_app has lots of tips and activities that will help you and your family. Tap here to explore." + } + }, + "text": "You are not alone! @global.parent_app has lots of tips and activities that will help you and your family. Tap here to explore." + }, + { + "id": "nf_inactive_11", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_11_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_11_sent : true", + "_cleaned": "sent | set_field: nf_inactive_11_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Get key tips in @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Get key tips in @global.parent_app" + }, + "text": { + "eng": "We all need a break sometimes - and you can get one right now in @global.parent_app! Tap here to find relaxation activities and more." + } + }, + "text": "We all need a break sometimes - and you can get one right now in @global.parent_app! Tap here to find relaxation activities and more." + }, + { + "id": "nf_inactive_12", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_12_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_12_sent : true", + "_cleaned": "sent | set_field: nf_inactive_12_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Help your family with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Help your family with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, do you have five minutes to learn about parenting? @global.parent_app is here to help!" + } + }, + "text": "@fields.user_name, do you have five minutes to learn about parenting? @global.parent_app is here to help!" + }, + { + "id": "nf_inactive_13", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_13_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_13_sent : true", + "_cleaned": "sent | set_field: nf_inactive_13_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Keep going with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Keep going with @global.parent_app" + }, + "text": { + "eng": "Looking for help with your teen? @global.parent_app is here for you!" + } + }, + "text": "Looking for help with your teen? @global.parent_app is here for you!" + }, + { + "id": "nf_inactive_14", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_14_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_14_sent : true", + "_cleaned": "sent | set_field: nf_inactive_14_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app can help your family", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app can help your family" + }, + "text": { + "eng": "It’s time to learn about parenting, use @global.parent_app now for useful tips for your family." + } + }, + "text": "It’s time to learn about parenting, use @global.parent_app now for useful tips for your family." + }, + { + "id": "nf_inactive_15", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_15_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_15_sent : true", + "_cleaned": "sent | set_field: nf_inactive_15_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Get support in @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Get support in @global.parent_app" + }, + "text": { + "eng": "Parents are the best! Tap here to find tips to help you with your teen." + } + }, + "text": "Parents are the best! Tap here to find tips to help you with your teen." + }, + { + "id": "nf_inactive_16", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_16_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_16_sent : true", + "_cleaned": "sent | set_field: nf_inactive_16_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app = peaceful family", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app = peaceful family" + }, + "text": { + "eng": "Teens can turn your day upside down. Let @global.parent_app help you create a happy and peaceful home." + } + }, + "text": "Teens can turn your day upside down. Let @global.parent_app help you create a happy and peaceful home." + }, + { + "id": "nf_inactive_17", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_17_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_17_sent : true", + "_cleaned": "sent | set_field: nf_inactive_17_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "@global.parent_app helps you connect", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.parent_app helps you connect" + }, + "text": { + "eng": "Family is everything. @global.parent_app is here with many tips and activities to help you and your family." + } + }, + "text": "Family is everything. @global.parent_app is here with many tips and activities to help you and your family." + }, + { + "id": "nf_inactive_18", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_18_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_18_sent : true", + "_cleaned": "sent | set_field: nf_inactive_18_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Find good ideas in @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Find good ideas in @global.parent_app" + }, + "text": { + "eng": "Spending 1 minute learning about parenting makes a world of difference. Jump back into @global.parent_app here." + } + }, + "text": "Spending 1 minute learning about parenting makes a world of difference. Jump back into @global.parent_app here." + }, + { + "id": "nf_inactive_19", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_19_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_19_sent : true", + "_cleaned": "sent | set_field: nf_inactive_19_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Grow more with @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Grow more with @global.parent_app" + }, + "text": { + "eng": "@fields.user_name, you are doing amazing, keep up the good work. @global.parent_app is full of tips on how to look after yourself and your family." + } + }, + "text": "@fields.user_name, you are doing amazing, keep up the good work. @global.parent_app is full of tips on how to look after yourself and your family." + }, + { + "id": "nf_inactive_20", + "workshop": "independent", + "message_type": "inactive", + "action_list": [ + { + "trigger": "sent", + "action_id": "set_field", + "args": [ + "nf_inactive_20_sent", + true + ], + "_raw": "sent | set_field: nf_inactive_20_sent : true", + "_cleaned": "sent | set_field: nf_inactive_20_sent : true" + } + ], + "priority": 1, + "campaign_list": [ + "nf_inactive_week", + "nf_inactive_month" + ], + "title": "Add value through @global.parent_app", + "_translations": { + "title": { + "tz_sw": true + }, + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Add value through @global.parent_app" + }, + "text": { + "eng": "Wow, your teen is so lucky to have you as a parent. Learn more about parenting your teen with @global.parent_app." + } + }, + "text": "Wow, your teen is so lucky to have you as a parent. Learn more about parenting your teen with @global.parent_app." + } + ], + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_1on1.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_1on1.json index a4509269cb..4a59fca017 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_1on1.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_1on1.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_released.sent", + "w_1on1_m_w_released_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_released.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_released.sent : true" + "_raw": "click | set_field: w_1on1_m_w_released_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_released_sent : true" } ], "priority": 11.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_1on1_started" }, "_raw": "!@fields.w_1on1_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 2" }, "_raw": "@fields.workshop_number > 2" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -67,7 +67,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -101,11 +103,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_released.sent", + "w_1on1_m_w_released_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_released.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_released.sent : true" + "_raw": "click | set_field: w_1on1_m_w_released_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_released_sent : true" } ], "priority": 11.99, @@ -144,7 +146,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -177,11 +181,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_relax.sent", + "w_1on1_m_relax_sent", true ], - "_raw": "click | set_field: w_1on1_m_relax.sent : true", - "_cleaned": "click | set_field: w_1on1_m_relax.sent : true" + "_raw": "click | set_field: w_1on1_m_relax_sent : true", + "_cleaned": "click | set_field: w_1on1_m_relax_sent : true" } ], "priority": 11.9, @@ -233,11 +237,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_something_fun.sent", + "w_1on1_m_something_fun_sent", true ], - "_raw": "click | set_field: w_1on1_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_1on1_m_something_fun.sent : true" + "_raw": "click | set_field: w_1on1_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_1on1_m_something_fun_sent : true" } ], "priority": 11.8, @@ -288,11 +292,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_praise.sent", + "w_1on1_m_praise_sent", true ], - "_raw": "click | set_field: w_1on1_m_praise.sent : true", - "_cleaned": "click | set_field: w_1on1_m_praise.sent : true" + "_raw": "click | set_field: w_1on1_m_praise_sent : true", + "_cleaned": "click | set_field: w_1on1_m_praise_sent : true" } ], "priority": 11.7, @@ -314,7 +318,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -347,11 +353,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_reminder.sent", + "w_1on1_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_reminder.sent : true" + "_raw": "click | set_field: w_1on1_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_reminder_sent : true" } ], "priority": 11.6, @@ -384,7 +390,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -417,11 +425,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_in_progress.sent", + "w_1on1_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_1on1_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_in_progress_sent : true" } ], "priority": 11.5, @@ -461,7 +469,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -494,11 +504,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_hp_reminder.sent", + "w_1on1_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_1on1_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_1on1_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_1on1_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_1on1_m_hp_reminder_sent : true" } ], "priority": 11.4, @@ -567,11 +577,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 11.3, @@ -624,11 +634,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_1on1_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_1on1_hp_review_sent : true", + "_cleaned": "click | set_field: w_1on1_hp_review_sent : true" } ], "priority": 11.2, @@ -691,11 +701,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_tomorrow.sent", + "w_1on1_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_1on1_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_tomorrow_sent : true" } ], "priority": 11.1, @@ -727,8 +737,7 @@ "_translations": { "title": {}, "text": { - "tz_sw": true, - "za_st": true + "tz_sw": true } }, "_translatedFields": { @@ -736,10 +745,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!" + "eng": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!" } }, - "text": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!" + "text": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!" }, { "id": "w_tomorrow_w_1on1_incompl", @@ -761,11 +770,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_1on1_m_w_tomorrow.sent", + "w_1on1_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_1on1_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_1on1_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_1on1_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_1on1_m_w_tomorrow_sent : true" } ], "priority": 11.1, @@ -798,7 +807,9 @@ "title": {}, "text": { "tz_sw": true, - "za_st": true + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_consequence.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_consequence.json index 1eb39f2195..66aeede4c0 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_consequence.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_consequence.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_released.sent", + "w_consequence_m_w_released_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_released.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_released.sent : true" + "_raw": "click | set_field: w_consequence_m_w_released_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_released_sent : true" } ], "priority": 5.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_consequence_started" }, "_raw": "!@fields.w_consequence_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 8" }, "_raw": "@fields.workshop_number > 8" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -67,7 +67,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -100,11 +103,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_released.sent", + "w_consequence_m_w_released_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_released.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_released.sent : true" + "_raw": "click | set_field: w_consequence_m_w_released_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_released_sent : true" } ], "priority": 5.99, @@ -143,7 +146,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -175,11 +181,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_relax.sent", + "w_consequence_m_relax_sent", true ], - "_raw": "click | set_field: w_consequence_m_relax.sent : true", - "_cleaned": "click | set_field: w_consequence_m_relax.sent : true" + "_raw": "click | set_field: w_consequence_m_relax_sent : true", + "_cleaned": "click | set_field: w_consequence_m_relax_sent : true" } ], "priority": 5.9, @@ -233,11 +239,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_something_fun.sent", + "w_consequence_m_something_fun_sent", true ], - "_raw": "click | set_field: w_consequence_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_consequence_m_something_fun.sent : true" + "_raw": "click | set_field: w_consequence_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_consequence_m_something_fun_sent : true" } ], "priority": 5.8, @@ -290,11 +296,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_praise.sent", + "w_consequence_m_praise_sent", true ], - "_raw": "click | set_field: w_consequence_m_praise.sent : true", - "_cleaned": "click | set_field: w_consequence_m_praise.sent : true" + "_raw": "click | set_field: w_consequence_m_praise_sent : true", + "_cleaned": "click | set_field: w_consequence_m_praise_sent : true" } ], "priority": 5.7, @@ -317,7 +323,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +358,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_reminder.sent", + "w_consequence_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_reminder.sent : true" + "_raw": "click | set_field: w_consequence_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_reminder_sent : true" } ], "priority": 5.6, @@ -393,10 +402,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!" + "eng": "Well done - you’ve gained 6 parenting tools already! Do the next @global.workshop to get more!" } }, - "text": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!" + "text": "Well done - you’ve gained 6 parenting tools already! Do the next @global.workshop to get more!" }, { "id": "w_in_progress_w_consequence", @@ -417,11 +426,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_in_progress.sent", + "w_consequence_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_consequence_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_in_progress_sent : true" } ], "priority": 5.5, @@ -468,10 +477,10 @@ "eng": "@global.m_w_in_progress" }, "text": { - "eng": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour." + "eng": "Complete the @global.workshop and talk with your teen about a positive and a negative consequence of a behaviour." } }, - "text": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour." + "text": "Complete the @global.workshop and talk with your teen about a positive and a negative consequence of a behaviour." }, { "id": "hp_reminder_w_consequence", @@ -492,11 +501,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_hp_reminder.sent", + "w_consequence_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_consequence_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_consequence_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_consequence_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_consequence_m_hp_reminder_sent : true" } ], "priority": 5.4, @@ -528,7 +537,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -560,11 +572,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 5.3, @@ -617,11 +629,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_consequence_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_consequence_hp_review_sent : true", + "_cleaned": "click | set_field: w_consequence_hp_review_sent : true" } ], "priority": 5.2, @@ -684,11 +696,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_tomorrow.sent", + "w_consequence_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_consequence_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_tomorrow_sent : true" } ], "priority": 5.1, @@ -728,10 +740,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!" + "eng": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new @global.workshop tomorrow to help you enjoy and learn useful skills!" } }, - "text": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!" + "text": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new @global.workshop tomorrow to help you enjoy and learn useful skills!" }, { "id": "w_tomorrow_w_consequence_incompl", @@ -753,11 +765,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_consequence_m_w_tomorrow.sent", + "w_consequence_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_consequence_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_consequence_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_consequence_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_consequence_m_w_tomorrow_sent : true" } ], "priority": 5.1, @@ -789,7 +801,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_crisis.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_crisis.json index a52c048b38..73086fab58 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_crisis.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_crisis.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_released.sent", + "w_crisis_m_w_released_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_released.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_released.sent : true" + "_raw": "click | set_field: w_crisis_m_w_released_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_released_sent : true" } ], "priority": 2.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_crisis_started" }, "_raw": "!@fields.w_crisis_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 11" }, "_raw": "@fields.workshop_number > 11" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -75,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how." + "eng": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how." } }, - "text": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how." + "text": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how." }, { "id": "w_released_w_crisis_tog", @@ -100,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_released.sent", + "w_crisis_m_w_released_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_released.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_released.sent : true" + "_raw": "click | set_field: w_crisis_m_w_released_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_released_sent : true" } ], "priority": 2.99, @@ -151,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how." + "eng": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how." } }, - "text": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how." + "text": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how." }, { "id": "relax_w_crisis", @@ -175,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_relax.sent", + "w_crisis_m_relax_sent", true ], - "_raw": "click | set_field: w_crisis_m_relax.sent : true", - "_cleaned": "click | set_field: w_crisis_m_relax.sent : true" + "_raw": "click | set_field: w_crisis_m_relax_sent : true", + "_cleaned": "click | set_field: w_crisis_m_relax_sent : true" } ], "priority": 2.9, @@ -233,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_something_fun.sent", + "w_crisis_m_something_fun_sent", true ], - "_raw": "click | set_field: w_crisis_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_crisis_m_something_fun.sent : true" + "_raw": "click | set_field: w_crisis_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_crisis_m_something_fun_sent : true" } ], "priority": 2.8, @@ -290,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_praise.sent", + "w_crisis_m_praise_sent", true ], - "_raw": "click | set_field: w_crisis_m_praise.sent : true", - "_cleaned": "click | set_field: w_crisis_m_praise.sent : true" + "_raw": "click | set_field: w_crisis_m_praise_sent : true", + "_cleaned": "click | set_field: w_crisis_m_praise_sent : true" } ], "priority": 2.7, @@ -317,7 +317,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +352,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_reminder.sent", + "w_crisis_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_reminder.sent : true" + "_raw": "click | set_field: w_crisis_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_reminder_sent : true" } ], "priority": 2.6, @@ -393,10 +396,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen." + "eng": "Crises may happen, and we CAN be prepared!\n\nStart the next @global.workshop to see how with your teen." } }, - "text": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen." + "text": "Crises may happen, and we CAN be prepared!\n\nStart the next @global.workshop to see how with your teen." }, { "id": "w_in_progress_w_crisis", @@ -417,11 +420,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_in_progress.sent", + "w_crisis_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_crisis_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_in_progress_sent : true" } ], "priority": 2.5, @@ -460,7 +463,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -492,11 +498,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_hp_reminder.sent", + "w_crisis_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_crisis_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_crisis_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_crisis_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_crisis_m_hp_reminder_sent : true" } ], "priority": 2.4, @@ -528,7 +534,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -560,11 +569,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 2.3, @@ -617,11 +626,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_crisis_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_crisis_hp_review_sent : true", + "_cleaned": "click | set_field: w_crisis_hp_review_sent : true" } ], "priority": 2.2, @@ -684,11 +693,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_tomorrow.sent", + "w_crisis_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_crisis_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_tomorrow_sent : true" } ], "priority": 2.1, @@ -728,10 +737,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!" + "eng": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final @global.workshop to reflect on your journey and plan what to do next!" } }, - "text": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!" + "text": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final @global.workshop to reflect on your journey and plan what to do next!" }, { "id": "w_tomorrow_w_crisis_incompl", @@ -753,11 +762,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_crisis_m_w_tomorrow.sent", + "w_crisis_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_crisis_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_crisis_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_crisis_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_crisis_m_w_tomorrow_sent : true" } ], "priority": 2.1, @@ -797,10 +806,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next." + "eng": "The final @global.workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next." } }, - "text": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next." + "text": "The final @global.workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next." } ], "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_instruct.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_instruct.json index 413545f7d6..96ababe554 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_instruct.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_instruct.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_released.sent", + "w_instruct_m_w_released_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_released.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_released.sent : true" + "_raw": "click | set_field: w_instruct_m_w_released_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_released_sent : true" } ], "priority": 9.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_instruct_started" }, "_raw": "!@fields.w_instruct_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 4" }, "_raw": "@fields.workshop_number > 4" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -67,7 +67,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -100,11 +103,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_released.sent", + "w_instruct_m_w_released_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_released.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_released.sent : true" + "_raw": "click | set_field: w_instruct_m_w_released_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_released_sent : true" } ], "priority": 9.99, @@ -143,7 +146,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -175,11 +181,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_relax.sent", + "w_instruct_m_relax_sent", true ], - "_raw": "click | set_field: w_instruct_m_relax.sent : true", - "_cleaned": "click | set_field: w_instruct_m_relax.sent : true" + "_raw": "click | set_field: w_instruct_m_relax_sent : true", + "_cleaned": "click | set_field: w_instruct_m_relax_sent : true" } ], "priority": 9.9, @@ -233,11 +239,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_something_fun.sent", + "w_instruct_m_something_fun_sent", true ], - "_raw": "click | set_field: w_instruct_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_instruct_m_something_fun.sent : true" + "_raw": "click | set_field: w_instruct_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_instruct_m_something_fun_sent : true" } ], "priority": 9.8, @@ -290,11 +296,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_praise.sent", + "w_instruct_m_praise_sent", true ], - "_raw": "click | set_field: w_instruct_m_praise.sent : true", - "_cleaned": "click | set_field: w_instruct_m_praise.sent : true" + "_raw": "click | set_field: w_instruct_m_praise_sent : true", + "_cleaned": "click | set_field: w_instruct_m_praise_sent : true" } ], "priority": 9.7, @@ -317,7 +323,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +358,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_reminder.sent", + "w_instruct_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_reminder.sent : true" + "_raw": "click | set_field: w_instruct_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_reminder_sent : true" } ], "priority": 9.6, @@ -393,10 +402,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help." + "eng": "Teens don’t always listen. Look at this week's @global.workshop to learn how positive instructions can help." } }, - "text": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help." + "text": "Teens don’t always listen. Look at this week's @global.workshop to learn how positive instructions can help." }, { "id": "w_in_progress_w_instruct", @@ -417,11 +426,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_in_progress.sent", + "w_instruct_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_instruct_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_in_progress_sent : true" } ], "priority": 9.5, @@ -460,7 +469,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -493,11 +505,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_hp_reminder.sent", + "w_instruct_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_instruct_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_instruct_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_instruct_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_instruct_m_hp_reminder_sent : true" } ], "priority": 9.4, @@ -536,7 +548,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -569,11 +584,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_hp_reminder.sent", + "w_instruct_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_instruct_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_instruct_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_instruct_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_instruct_m_hp_reminder_sent : true" } ], "priority": 9.4, @@ -612,7 +627,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -644,11 +662,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 9.3, @@ -701,11 +719,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_instruct_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_instruct_hp_review_sent : true", + "_cleaned": "click | set_field: w_instruct_hp_review_sent : true" } ], "priority": 9.2, @@ -768,11 +786,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_tomorrow.sent", + "w_instruct_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_instruct_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_tomorrow_sent : true" } ], "priority": 9.1, @@ -812,10 +830,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!" + "eng": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you. See a big difference by making small changes!" } }, - "text": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!" + "text": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you. See a big difference by making small changes!" }, { "id": "w_tomorrow_w_instruct_incompl", @@ -837,11 +855,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_instruct_m_w_tomorrow.sent", + "w_instruct_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_instruct_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_instruct_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_instruct_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_instruct_m_w_tomorrow_sent : true" } ], "priority": 9.1, @@ -873,7 +891,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_money.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_money.json index 13a66390dc..5e889cdb93 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_money.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_money.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_released.sent", + "w_money_m_w_released_sent", true ], - "_raw": "click | set_field: w_money_m_w_released.sent : true", - "_cleaned": "click | set_field: w_money_m_w_released.sent : true" + "_raw": "click | set_field: w_money_m_w_released_sent : true", + "_cleaned": "click | set_field: w_money_m_w_released_sent : true" } ], "priority": 7.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_money_started" }, "_raw": "!@fields.w_money_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 6" }, "_raw": "@fields.workshop_number > 6" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -75,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month." + "eng": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month." } }, - "text": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month." + "text": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month." }, { "id": "w_released_w_money_tog", @@ -100,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_released.sent", + "w_money_m_w_released_sent", true ], - "_raw": "click | set_field: w_money_m_w_released.sent : true", - "_cleaned": "click | set_field: w_money_m_w_released.sent : true" + "_raw": "click | set_field: w_money_m_w_released_sent : true", + "_cleaned": "click | set_field: w_money_m_w_released_sent : true" } ], "priority": 7.99, @@ -151,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month." + "eng": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month." } }, - "text": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month." + "text": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month." }, { "id": "relax_w_money", @@ -175,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_relax.sent", + "w_money_m_relax_sent", true ], - "_raw": "click | set_field: w_money_m_relax.sent : true", - "_cleaned": "click | set_field: w_money_m_relax.sent : true" + "_raw": "click | set_field: w_money_m_relax_sent : true", + "_cleaned": "click | set_field: w_money_m_relax_sent : true" } ], "priority": 7.9, @@ -233,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_something_fun.sent", + "w_money_m_something_fun_sent", true ], - "_raw": "click | set_field: w_money_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_money_m_something_fun.sent : true" + "_raw": "click | set_field: w_money_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_money_m_something_fun_sent : true" } ], "priority": 7.8, @@ -290,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_praise.sent", + "w_money_m_praise_sent", true ], - "_raw": "click | set_field: w_money_m_praise.sent : true", - "_cleaned": "click | set_field: w_money_m_praise.sent : true" + "_raw": "click | set_field: w_money_m_praise_sent : true", + "_cleaned": "click | set_field: w_money_m_praise_sent : true" } ], "priority": 7.7, @@ -317,7 +317,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +352,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_reminder.sent", + "w_money_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_money_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_money_m_w_reminder.sent : true" + "_raw": "click | set_field: w_money_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_money_m_w_reminder_sent : true" } ], "priority": 7.6, @@ -385,7 +388,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -417,11 +423,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_in_progress.sent", + "w_money_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_money_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_money_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_money_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_money_m_w_in_progress_sent : true" } ], "priority": 7.5, @@ -460,7 +466,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -492,11 +501,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_hp_reminder.sent", + "w_money_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_money_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_money_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_money_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_money_m_hp_reminder_sent : true" } ], "priority": 7.4, @@ -565,11 +574,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 7.3, @@ -622,11 +631,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_money_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_money_hp_review_sent : true", + "_cleaned": "click | set_field: w_money_hp_review_sent : true" } ], "priority": 7.2, @@ -689,11 +698,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_tomorrow.sent", + "w_money_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_money_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_money_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_money_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_money_m_w_tomorrow_sent : true" } ], "priority": 7.1, @@ -733,10 +742,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work." + "eng": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new @global.workshop to help you set family rules that work." } }, - "text": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work." + "text": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new @global.workshop to help you set family rules that work." }, { "id": "w_tomorrow_w_money_incompl", @@ -758,11 +767,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_money_m_w_tomorrow.sent", + "w_money_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_money_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_money_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_money_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_money_m_w_tomorrow_sent : true" } ], "priority": 7.1, @@ -794,7 +803,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_praise.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_praise.json index f9c639a6be..9d4a26886a 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_praise.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_praise.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_released.sent", + "w_praise_m_w_released_sent", true ], - "_raw": "click | set_field: w_praise_m_w_released.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_released.sent : true" + "_raw": "click | set_field: w_praise_m_w_released_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_released_sent : true" } ], "priority": 10.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_praise_started" }, "_raw": "!@fields.w_praise_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 3" }, "_raw": "@fields.workshop_number > 3" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -67,8 +67,7 @@ "_translations": { "title": {}, "text": { - "tz_sw": true, - "za_st": true + "tz_sw": true } }, "_translatedFields": { @@ -76,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!" + "eng": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!" } }, - "text": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!" + "text": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!" }, { "id": "w_released_w_praise_tog", @@ -101,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_released.sent", + "w_praise_m_w_released_sent", true ], - "_raw": "click | set_field: w_praise_m_w_released.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_released.sent : true" + "_raw": "click | set_field: w_praise_m_w_released_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_released_sent : true" } ], "priority": 10.99, @@ -144,8 +143,7 @@ "_translations": { "title": {}, "text": { - "tz_sw": true, - "za_st": true + "tz_sw": true } }, "_translatedFields": { @@ -153,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!" + "eng": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!" } }, - "text": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!" + "text": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!" }, { "id": "relax_w_praise", @@ -177,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_relax.sent", + "w_praise_m_relax_sent", true ], - "_raw": "click | set_field: w_praise_m_relax.sent : true", - "_cleaned": "click | set_field: w_praise_m_relax.sent : true" + "_raw": "click | set_field: w_praise_m_relax_sent : true", + "_cleaned": "click | set_field: w_praise_m_relax_sent : true" } ], "priority": 10.9, @@ -235,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_something_fun.sent", + "w_praise_m_something_fun_sent", true ], - "_raw": "click | set_field: w_praise_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_praise_m_something_fun.sent : true" + "_raw": "click | set_field: w_praise_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_praise_m_something_fun_sent : true" } ], "priority": 10.8, @@ -292,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_praise.sent", + "w_praise_m_praise_sent", true ], - "_raw": "click | set_field: w_praise_m_praise.sent : true", - "_cleaned": "click | set_field: w_praise_m_praise.sent : true" + "_raw": "click | set_field: w_praise_m_praise_sent : true", + "_cleaned": "click | set_field: w_praise_m_praise_sent : true" } ], "priority": 10.7, @@ -319,7 +317,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -351,11 +352,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_reminder.sent", + "w_praise_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_praise_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_reminder.sent : true" + "_raw": "click | set_field: w_praise_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_reminder_sent : true" } ], "priority": 10.6, @@ -387,7 +388,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -419,11 +423,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_in_progress.sent", + "w_praise_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_praise_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_praise_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_in_progress_sent : true" } ], "priority": 10.5, @@ -462,7 +466,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -494,11 +501,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_hp_reminder.sent", + "w_praise_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_praise_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_praise_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_praise_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_praise_m_hp_reminder_sent : true" } ], "priority": 10.4, @@ -530,7 +537,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -562,11 +572,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 10.3, @@ -619,11 +629,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_praise_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_praise_hp_review_sent : true", + "_cleaned": "click | set_field: w_praise_hp_review_sent : true" } ], "priority": 10.2, @@ -686,11 +696,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_tomorrow.sent", + "w_praise_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_praise_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_praise_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_tomorrow_sent : true" } ], "priority": 10.1, @@ -730,10 +740,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour." + "eng": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new @global.workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour." } }, - "text": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour." + "text": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new @global.workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour." }, { "id": "w_tomorrow_w_praise_incompl", @@ -755,11 +765,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_praise_m_w_tomorrow.sent", + "w_praise_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_praise_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_praise_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_praise_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_praise_m_w_tomorrow_sent : true" } ], "priority": 10.1, @@ -799,10 +809,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes." + "eng": "Hi @global.user_name, a new @global.workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes." } }, - "text": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes." + "text": "Hi @global.user_name, a new @global.workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes." } ], "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_rules.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_rules.json index 8f34ea847f..8dedf2befc 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_rules.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_rules.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_released.sent", + "w_rules_m_w_released_sent", true ], - "_raw": "click | set_field: w_rules_m_w_released.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_released.sent : true" + "_raw": "click | set_field: w_rules_m_w_released_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_released_sent : true" } ], "priority": 6.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_rules_started" }, "_raw": "!@fields.w_rules_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 7" }, "_raw": "@fields.workshop_number > 7" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -75,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows." + "eng": "Hi @fields.user_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows." } }, - "text": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows." + "text": "Hi @fields.user_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows." }, { "id": "w_released_w_rules_tog", @@ -100,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_released.sent", + "w_rules_m_w_released_sent", true ], - "_raw": "click | set_field: w_rules_m_w_released.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_released.sent : true" + "_raw": "click | set_field: w_rules_m_w_released_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_released_sent : true" } ], "priority": 6.99, @@ -151,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows." + "eng": "Hi @fields.group_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows." } }, - "text": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows." + "text": "Hi @fields.group_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows." }, { "id": "relax_w_rules", @@ -175,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_relax.sent", + "w_rules_m_relax_sent", true ], - "_raw": "click | set_field: w_rules_m_relax.sent : true", - "_cleaned": "click | set_field: w_rules_m_relax.sent : true" + "_raw": "click | set_field: w_rules_m_relax_sent : true", + "_cleaned": "click | set_field: w_rules_m_relax_sent : true" } ], "priority": 6.9, @@ -233,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_something_fun.sent", + "w_rules_m_something_fun_sent", true ], - "_raw": "click | set_field: w_rules_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_rules_m_something_fun.sent : true" + "_raw": "click | set_field: w_rules_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_rules_m_something_fun_sent : true" } ], "priority": 6.8, @@ -290,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_praise.sent", + "w_rules_m_praise_sent", true ], - "_raw": "click | set_field: w_rules_m_praise.sent : true", - "_cleaned": "click | set_field: w_rules_m_praise.sent : true" + "_raw": "click | set_field: w_rules_m_praise_sent : true", + "_cleaned": "click | set_field: w_rules_m_praise_sent : true" } ], "priority": 6.7, @@ -317,7 +317,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +352,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_reminder.sent", + "w_rules_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_rules_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_reminder.sent : true" + "_raw": "click | set_field: w_rules_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_reminder_sent : true" } ], "priority": 6.6, @@ -385,7 +388,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -417,11 +423,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_in_progress.sent", + "w_rules_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_rules_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_rules_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_in_progress_sent : true" } ], "priority": 6.5, @@ -460,7 +466,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -492,11 +501,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_hp_reminder.sent", + "w_rules_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_rules_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_rules_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_rules_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_rules_m_hp_reminder_sent : true" } ], "priority": 6.4, @@ -528,7 +537,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -560,11 +572,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 6.3, @@ -617,11 +629,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_rules_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_rules_hp_review_sent : true", + "_cleaned": "click | set_field: w_rules_hp_review_sent : true" } ], "priority": 6.2, @@ -684,11 +696,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_tomorrow.sent", + "w_rules_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_rules_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_rules_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_tomorrow_sent : true" } ], "priority": 6.1, @@ -728,10 +740,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!" + "eng": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new @global.workshop! It will show you what to do when teens display bad (or good) behaviour!" } }, - "text": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!" + "text": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new @global.workshop! It will show you what to do when teens display bad (or good) behaviour!" }, { "id": "w_tomorrow_w_rules_incompl", @@ -753,11 +765,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_rules_m_w_tomorrow.sent", + "w_rules_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_rules_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_rules_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_rules_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_rules_m_w_tomorrow_sent : true" } ], "priority": 6.1, @@ -797,10 +809,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!" + "eng": "A brand-new @global.workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!" } }, - "text": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!" + "text": "A brand-new @global.workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!" } ], "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_safe.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_safe.json index a75ab32923..0a8606cf82 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_safe.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_safe.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_released.sent", + "w_safe_m_w_released_sent", true ], - "_raw": "click | set_field: w_safe_m_w_released.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_released.sent : true" + "_raw": "click | set_field: w_safe_m_w_released_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_released_sent : true" } ], "priority": 3.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_safe_started" }, "_raw": "!@fields.w_safe_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 10" }, "_raw": "@fields.workshop_number > 10" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -67,7 +67,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -100,11 +103,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_released.sent", + "w_safe_m_w_released_sent", true ], - "_raw": "click | set_field: w_safe_m_w_released.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_released.sent : true" + "_raw": "click | set_field: w_safe_m_w_released_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_released_sent : true" } ], "priority": 3.99, @@ -143,7 +146,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -175,11 +181,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_relax.sent", + "w_safe_m_relax_sent", true ], - "_raw": "click | set_field: w_safe_m_relax.sent : true", - "_cleaned": "click | set_field: w_safe_m_relax.sent : true" + "_raw": "click | set_field: w_safe_m_relax_sent : true", + "_cleaned": "click | set_field: w_safe_m_relax_sent : true" } ], "priority": 3.9, @@ -233,11 +239,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_something_fun.sent", + "w_safe_m_something_fun_sent", true ], - "_raw": "click | set_field: w_safe_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_safe_m_something_fun.sent : true" + "_raw": "click | set_field: w_safe_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_safe_m_something_fun_sent : true" } ], "priority": 3.8, @@ -290,11 +296,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_praise.sent", + "w_safe_m_praise_sent", true ], - "_raw": "click | set_field: w_safe_m_praise.sent : true", - "_cleaned": "click | set_field: w_safe_m_praise.sent : true" + "_raw": "click | set_field: w_safe_m_praise_sent : true", + "_cleaned": "click | set_field: w_safe_m_praise_sent : true" } ], "priority": 3.7, @@ -317,7 +323,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +358,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_reminder.sent", + "w_safe_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_safe_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_reminder.sent : true" + "_raw": "click | set_field: w_safe_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_reminder_sent : true" } ], "priority": 3.6, @@ -393,10 +402,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more." + "eng": "Think about all the parenting skills you've already gained!\n\nComplete the next @global.workshop to get more." } }, - "text": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more." + "text": "Think about all the parenting skills you've already gained!\n\nComplete the next @global.workshop to get more." }, { "id": "w_in_progress_w_safe", @@ -417,11 +426,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_in_progress.sent", + "w_safe_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_safe_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_safe_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_in_progress_sent : true" } ], "priority": 3.5, @@ -460,7 +469,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -492,11 +504,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_hp_reminder.sent", + "w_safe_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_safe_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_safe_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_safe_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_safe_m_hp_reminder_sent : true" } ], "priority": 3.4, @@ -565,11 +577,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 3.3, @@ -622,11 +634,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_safe_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_safe_hp_review_sent : true", + "_cleaned": "click | set_field: w_safe_hp_review_sent : true" } ], "priority": 3.2, @@ -689,11 +701,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_tomorrow.sent", + "w_safe_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_safe_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_safe_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_tomorrow_sent : true" } ], "priority": 3.1, @@ -733,10 +745,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!" + "eng": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new @global.workshop is ready tomorrow to help your family deal with any situation – together you can do so much!" } }, - "text": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!" + "text": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new @global.workshop is ready tomorrow to help your family deal with any situation – together you can do so much!" }, { "id": "w_tomorrow_w_safe_incompl", @@ -758,11 +770,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_safe_m_w_tomorrow.sent", + "w_safe_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_safe_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_safe_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_safe_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_safe_m_w_tomorrow_sent : true" } ], "priority": 3.1, @@ -794,7 +806,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_self_care.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_self_care.json index 5b29682a53..89097d9304 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_self_care.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_self_care.json @@ -23,11 +23,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_relax.sent", + "w_self_care_m_relax_sent", true ], - "_raw": "click | set_field: w_self_care_m_relax.sent : true", - "_cleaned": "click | set_field: w_self_care_m_relax.sent : true" + "_raw": "click | set_field: w_self_care_m_relax_sent : true", + "_cleaned": "click | set_field: w_self_care_m_relax_sent : true" } ], "priority": 12.9, @@ -80,11 +80,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_hp_reminder.sent", + "w_self_care_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_self_care_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_self_care_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_self_care_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_self_care_m_hp_reminder_sent : true" } ], "priority": 12.4, @@ -117,7 +117,9 @@ "title": {}, "text": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -150,11 +152,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 12.3, @@ -208,30 +210,28 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_w_tomorrow.sent", + "w_self_care_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_self_care_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_self_care_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_self_care_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_self_care_m_w_tomorrow_sent : true" } ], "priority": 12.1, - "activation_condition_list": [ + "deactivation_condition_list": [ { "condition_type": "calc", "condition_args": { - "calc": "!@fields.do_workshops_together" + "calc": "@fields.workshop_number > 1" }, - "_raw": "!@fields.do_workshops_together" - } - ], - "deactivation_condition_list": [ + "_raw": "@fields.workshop_number > 1" + }, { "condition_type": "calc", "condition_args": { - "calc": "@fields.workshop_number > 1" + "calc": "@fields.do_workshops_together" }, - "_raw": "@fields.workshop_number > 1" + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -244,9 +244,7 @@ "_translations": { "title": {}, "text": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "_translatedFields": { @@ -254,10 +252,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!" + "eng": "Start a brand new @global.parent_app @global.workshop tomorrow. You'll see great results!" } }, - "text": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!" + "text": "Start a brand new @global.parent_app @global.workshop tomorrow. You'll see great results!" }, { "id": "w_tomorrow_w_self_care_tog", @@ -279,11 +277,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_self_care_m_w_tomorrow.sent", + "w_self_care_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_self_care_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_self_care_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_self_care_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_self_care_m_w_tomorrow_sent : true" } ], "priority": 12.1, @@ -315,9 +313,7 @@ "_translations": { "title": {}, "text": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "_translatedFields": { @@ -325,10 +321,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!" + "eng": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app @global.workshops together!" } }, - "text": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!" + "text": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app @global.workshops together!" }, { "activation_condition_list": [] diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_solve.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_solve.json index 09ba972431..482b67423d 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_solve.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_solve.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_released.sent", + "w_solve_m_w_released_sent", true ], - "_raw": "click | set_field: w_solve_m_w_released.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_released.sent : true" + "_raw": "click | set_field: w_solve_m_w_released_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_released_sent : true" } ], "priority": 4.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_solve_started" }, "_raw": "!@fields.w_solve_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 9" }, "_raw": "@fields.workshop_number > 9" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -75,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them." + "eng": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This @global.workshop will show you how to deal with them." } }, - "text": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them." + "text": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This @global.workshop will show you how to deal with them." }, { "id": "w_released_w_solve_tog", @@ -100,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_released.sent", + "w_solve_m_w_released_sent", true ], - "_raw": "click | set_field: w_solve_m_w_released.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_released.sent : true" + "_raw": "click | set_field: w_solve_m_w_released_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_released_sent : true" } ], "priority": 4.99, @@ -151,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them." + "eng": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them." } }, - "text": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them." + "text": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them." }, { "id": "relax_w_solve", @@ -175,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_relax.sent", + "w_solve_m_relax_sent", true ], - "_raw": "click | set_field: w_solve_m_relax.sent : true", - "_cleaned": "click | set_field: w_solve_m_relax.sent : true" + "_raw": "click | set_field: w_solve_m_relax_sent : true", + "_cleaned": "click | set_field: w_solve_m_relax_sent : true" } ], "priority": 4.9, @@ -233,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_something_fun.sent", + "w_solve_m_something_fun_sent", true ], - "_raw": "click | set_field: w_solve_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_solve_m_something_fun.sent : true" + "_raw": "click | set_field: w_solve_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_solve_m_something_fun_sent : true" } ], "priority": 4.8, @@ -290,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_praise.sent", + "w_solve_m_praise_sent", true ], - "_raw": "click | set_field: w_solve_m_praise.sent : true", - "_cleaned": "click | set_field: w_solve_m_praise.sent : true" + "_raw": "click | set_field: w_solve_m_praise_sent : true", + "_cleaned": "click | set_field: w_solve_m_praise_sent : true" } ], "priority": 4.7, @@ -317,7 +317,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -349,11 +352,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_reminder.sent", + "w_solve_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_solve_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_reminder.sent : true" + "_raw": "click | set_field: w_solve_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_reminder_sent : true" } ], "priority": 4.6, @@ -393,10 +396,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop." + "eng": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next @global.workshop." } }, - "text": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop." + "text": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next @global.workshop." }, { "id": "w_in_progress_w_solve", @@ -417,11 +420,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_in_progress.sent", + "w_solve_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_solve_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_solve_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_in_progress_sent : true" } ], "priority": 4.5, @@ -460,7 +463,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -492,11 +498,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_hp_reminder.sent", + "w_solve_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_solve_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_solve_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_solve_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_solve_m_hp_reminder_sent : true" } ], "priority": 4.4, @@ -528,7 +534,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -560,11 +569,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 4.3, @@ -617,11 +626,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_solve_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_solve_hp_review_sent : true", + "_cleaned": "click | set_field: w_solve_hp_review_sent : true" } ], "priority": 4.2, @@ -684,11 +693,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_tomorrow.sent", + "w_solve_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_solve_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_solve_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_tomorrow_sent : true" } ], "priority": 4.1, @@ -728,10 +737,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe." + "eng": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you keep your teen safe." } }, - "text": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe." + "text": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you keep your teen safe." }, { "id": "w_tomorrow_w_solve_incompl", @@ -753,11 +762,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_solve_m_w_tomorrow.sent", + "w_solve_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_solve_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_solve_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_solve_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_solve_m_w_tomorrow_sent : true" } ], "priority": 4.1, @@ -797,10 +806,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together." + "eng": "Access a new @global.workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together." } }, - "text": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together." + "text": "Access a new @global.workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together." } ], "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows/nf_w_stress.json b/packages/app-data/sheets/data_list/campaign_rows/nf_w_stress.json index a73d7f2a40..5baad52f70 100644 --- a/packages/app-data/sheets/data_list/campaign_rows/nf_w_stress.json +++ b/packages/app-data/sheets/data_list/campaign_rows/nf_w_stress.json @@ -24,11 +24,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_released.sent", + "w_stress_m_w_released_sent", true ], - "_raw": "click | set_field: w_stress_m_w_released.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_released.sent : true" + "_raw": "click | set_field: w_stress_m_w_released_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_released_sent : true" } ], "priority": 8.99, @@ -39,13 +39,6 @@ "calc": "!@fields.w_stress_started" }, "_raw": "!@fields.w_stress_started" - }, - { - "condition_type": "calc", - "condition_args": { - "calc": "!@fields.do_workshops_together" - }, - "_raw": "!@fields.do_workshops_together" } ], "deactivation_condition_list": [ @@ -55,6 +48,13 @@ "calc": "@fields.workshop_number > 5" }, "_raw": "@fields.workshop_number > 5" + }, + { + "condition_type": "calc", + "condition_args": { + "calc": "@fields.do_workshops_together" + }, + "_raw": "@fields.do_workshops_together" } ], "campaign_list": [ @@ -75,10 +75,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy." + "eng": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy." } }, - "text": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy." + "text": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy." }, { "id": "w_released_w_stress_tog", @@ -100,11 +100,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_released.sent", + "w_stress_m_w_released_sent", true ], - "_raw": "click | set_field: w_stress_m_w_released.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_released.sent : true" + "_raw": "click | set_field: w_stress_m_w_released_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_released_sent : true" } ], "priority": 8.99, @@ -151,10 +151,10 @@ "eng": "@global.m_w_released" }, "text": { - "eng": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy." + "eng": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy." } }, - "text": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy." + "text": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy." }, { "id": "relax_w_stress", @@ -175,11 +175,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_relax.sent", + "w_stress_m_relax_sent", true ], - "_raw": "click | set_field: w_stress_m_relax.sent : true", - "_cleaned": "click | set_field: w_stress_m_relax.sent : true" + "_raw": "click | set_field: w_stress_m_relax_sent : true", + "_cleaned": "click | set_field: w_stress_m_relax_sent : true" } ], "priority": 8.9, @@ -233,11 +233,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_something_fun.sent", + "w_stress_m_something_fun_sent", true ], - "_raw": "click | set_field: w_stress_m_something_fun.sent : true", - "_cleaned": "click | set_field: w_stress_m_something_fun.sent : true" + "_raw": "click | set_field: w_stress_m_something_fun_sent : true", + "_cleaned": "click | set_field: w_stress_m_something_fun_sent : true" } ], "priority": 8.8, @@ -290,11 +290,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_praise.sent", + "w_stress_m_praise_sent", true ], - "_raw": "click | set_field: w_stress_m_praise.sent : true", - "_cleaned": "click | set_field: w_stress_m_praise.sent : true" + "_raw": "click | set_field: w_stress_m_praise_sent : true", + "_cleaned": "click | set_field: w_stress_m_praise_sent : true" } ], "priority": 8.7, @@ -325,10 +325,10 @@ "eng": "@global.m_praise" }, "text": { - "eng": "Manage anger and stress with this new workshop. It helps you take better care of yourself." + "eng": "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself." } }, - "text": "Manage anger and stress with this new workshop. It helps you take better care of yourself." + "text": "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself." }, { "id": "w_reminder_w_stress", @@ -349,11 +349,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_reminder.sent", + "w_stress_m_w_reminder_sent", true ], - "_raw": "click | set_field: w_stress_m_w_reminder.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_reminder.sent : true" + "_raw": "click | set_field: w_stress_m_w_reminder_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_reminder_sent : true" } ], "priority": 8.6, @@ -393,10 +393,10 @@ "eng": "@global.m_w_reminder" }, "text": { - "eng": "Manage anger and stress with this new workshop. It helps you take better care of yourself." + "eng": "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself." } }, - "text": "Manage anger and stress with this new workshop. It helps you take better care of yourself." + "text": "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself." }, { "id": "w_in_progress_w_stress", @@ -417,11 +417,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_in_progress.sent", + "w_stress_m_w_in_progress_sent", true ], - "_raw": "click | set_field: w_stress_m_w_in_progress.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_in_progress.sent : true" + "_raw": "click | set_field: w_stress_m_w_in_progress_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_in_progress_sent : true" } ], "priority": 8.5, @@ -460,7 +460,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -493,11 +496,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_hp_reminder.sent", + "w_stress_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_stress_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_stress_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_stress_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_stress_m_hp_reminder_sent : true" } ], "priority": 8.4, @@ -536,7 +539,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -569,11 +575,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_hp_reminder.sent", + "w_stress_m_hp_reminder_sent", true ], - "_raw": "click | set_field: w_stress_m_hp_reminder.sent : true", - "_cleaned": "click | set_field: w_stress_m_hp_reminder.sent : true" + "_raw": "click | set_field: w_stress_m_hp_reminder_sent : true", + "_cleaned": "click | set_field: w_stress_m_hp_reminder_sent : true" } ], "priority": 8.4, @@ -612,7 +618,10 @@ "_translations": { "title": {}, "text": { - "tz_sw": true + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true } }, "_translatedFields": { @@ -644,11 +653,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "m_parent_points_overview.sent", + "m_parent_points_overview_sent", true ], - "_raw": "click | set_field: m_parent_points_overview.sent : true", - "_cleaned": "click | set_field: m_parent_points_overview.sent : true" + "_raw": "click | set_field: m_parent_points_overview_sent : true", + "_cleaned": "click | set_field: m_parent_points_overview_sent : true" } ], "priority": 8.3, @@ -701,11 +710,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "undefined.sent", + "w_stress_hp_review_sent", true ], - "_raw": "click | set_field: undefined.sent : true", - "_cleaned": "click | set_field: undefined.sent : true" + "_raw": "click | set_field: w_stress_hp_review_sent : true", + "_cleaned": "click | set_field: w_stress_hp_review_sent : true" } ], "priority": 8.2, @@ -768,11 +777,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_tomorrow.sent", + "w_stress_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_stress_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_stress_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_tomorrow_sent : true" } ], "priority": 8.1, @@ -812,10 +821,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!" + "eng": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new @global.workshop to help you relax and build valuable skills!" } }, - "text": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!" + "text": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new @global.workshop to help you relax and build valuable skills!" }, { "id": "w_tomorrow_w_stress_incompl", @@ -837,11 +846,11 @@ "trigger": "click", "action_id": "set_field", "args": [ - "w_stress_m_w_tomorrow.sent", + "w_stress_m_w_tomorrow_sent", true ], - "_raw": "click | set_field: w_stress_m_w_tomorrow.sent : true", - "_cleaned": "click | set_field: w_stress_m_w_tomorrow.sent : true" + "_raw": "click | set_field: w_stress_m_w_tomorrow_sent : true", + "_cleaned": "click | set_field: w_stress_m_w_tomorrow_sent : true" } ], "priority": 8.1, @@ -881,10 +890,10 @@ "eng": "@global.m_w_tomorrow" }, "text": { - "eng": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!" + "eng": "Get ready for a new @global.workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!" } }, - "text": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!" + "text": "Get ready for a new @global.workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!" } ], "_xlsxPath": "global/campaigns/notifications_in_week_messages.xlsx" diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows.json deleted file mode 100644 index c69bf4e3ae..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows", - "status": "released", - "comments": "This contains content for schedules", - "rows": [ - { - "id": "debug_daily_1", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_1.sent", - true - ], - "_raw": "sent | set_field: debug_daily_1.sent: true", - "_cleaned": "sent | set_field: debug_daily_1.sent: true" - } - ], - "priority": 4, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_daily_1.sent", - "value": true - } - }, - "_raw": "get_field | debug_daily_1.sent: TRUE" - } - ], - "campaign_list": [ - "debug_daily" - ], - "text": "Text 1", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Text 1" - }, - "title": { - "eng": "Debug Notification 1" - } - }, - "title": "Debug Notification 1" - }, - { - "id": "debug_daily_2", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_2.sent", - true - ], - "_raw": "sent | set_field: debug_daily_2.sent: true", - "_cleaned": "sent | set_field: debug_daily_2.sent: true" - } - ], - "priority": 3, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_daily_2.sent", - "value": true - } - }, - "_raw": "get_field | debug_daily_2.sent: TRUE" - } - ], - "campaign_list": [ - "debug_daily" - ], - "text": "How are you feeling today?", - "_translations": { - "text": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "How are you feeling today?" - }, - "title": { - "eng": "Debug Notification 2" - } - }, - "title": "Debug Notification 2" - }, - { - "id": "debug_daily_3", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_3.sent", - true - ], - "_raw": "sent | set_field: debug_daily_3.sent: true", - "_cleaned": "sent | set_field: debug_daily_3.sent: true" - } - ], - "priority": 2, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_daily_3.sent", - "value": true - } - }, - "_raw": "get_field | debug_daily_3.sent: TRUE" - } - ], - "campaign_list": [ - "debug_daily" - ], - "text": "Text: @global.debug_variable_1", - "_translations": { - "text": { - "es_sp": true - }, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Text: @global.debug_variable_1" - }, - "title": { - "eng": "Debug Notification 3" - } - }, - "title": "Debug Notification 3" - }, - { - "id": "debug_daily_4a", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_1.sent", - false - ], - "_raw": "sent | set_field: debug_daily_1.sent: false", - "_cleaned": "sent | set_field: debug_daily_1.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_2.sent", - false - ], - "_raw": "sent | set_field: debug_daily_2.sent: false", - "_cleaned": "sent | set_field: debug_daily_2.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_3.sent", - false - ], - "_raw": "sent | set_field: debug_daily_3.sent: false", - "_cleaned": "sent | set_field: debug_daily_3.sent: false" - } - ], - "priority": 1, - "campaign_list": [ - "debug_daily" - ], - "text": "Text 4", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Text 4" - }, - "title": { - "eng": "Debug Notification 4a" - } - }, - "title": "Debug Notification 4a" - }, - { - "id": "debug_daily_4b", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_1.sent", - false - ], - "_raw": "sent | set_field: debug_daily_1.sent: false", - "_cleaned": "sent | set_field: debug_daily_1.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_2.sent", - false - ], - "_raw": "sent | set_field: debug_daily_2.sent: false", - "_cleaned": "sent | set_field: debug_daily_2.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_3.sent", - false - ], - "_raw": "sent | set_field: debug_daily_3.sent: false", - "_cleaned": "sent | set_field: debug_daily_3.sent: false" - } - ], - "priority": 1, - "campaign_list": [ - "debug_daily" - ], - "text": "Text 4", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Text 4" - }, - "title": { - "eng": "Debug Notification 4b" - } - }, - "title": "Debug Notification 4b" - }, - { - "id": "debug_daily_4c", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_1.sent", - false - ], - "_raw": "sent | set_field: debug_daily_1.sent: false", - "_cleaned": "sent | set_field: debug_daily_1.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_2.sent", - false - ], - "_raw": "sent | set_field: debug_daily_2.sent: false", - "_cleaned": "sent | set_field: debug_daily_2.sent: false" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_daily_3.sent", - false - ], - "_raw": "sent | set_field: debug_daily_3.sent: false", - "_cleaned": "sent | set_field: debug_daily_3.sent: false" - } - ], - "priority": 1, - "campaign_list": [ - "debug_daily" - ], - "text": "Text 4", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Text 4" - }, - "title": { - "eng": "Debug Notification 4c" - } - }, - "title": "Debug Notification 4c" - }, - { - "id": "debug_fixed_saturday", - "campaign_list": [ - "debug_fixed_saturday" - ], - "text": "We hope you are having a nice weekend", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "We hope you are having a nice weekend" - }, - "title": { - "eng": "Debug Fixed Saturday" - } - }, - "title": "Debug Fixed Saturday" - }, - { - "id": "debug_fixed_december_no_time", - "campaign_list": [ - "debug_fixed_december_no_time" - ], - "text": "December daily - no time specified", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "December daily - no time specified" - }, - "title": { - "eng": "Debug Fixed December No Time" - } - }, - "title": "Debug Fixed December No Time" - }, - { - "id": "debug_fixed_december_early", - "campaign_list": [ - "debug_fixed_december_early" - ], - "text": "December daily - early", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "December daily - early" - }, - "title": { - "eng": "Debug Fixed December Early" - } - }, - "title": "Debug Fixed December Early" - }, - { - "id": "debug_fixed_december_noon", - "campaign_list": [ - "debug_fixed_december_noon" - ], - "text": "December daily - noon", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "December daily - noon" - }, - "title": { - "eng": "Debug Fixed December Noon" - } - }, - "title": "Debug Fixed December Noon" - }, - { - "id": "debug_fixed_december_late", - "campaign_list": [ - "debug_fixed_december_late" - ], - "text": "December daily - late", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "December daily - late" - }, - "title": { - "eng": "Debug Fixed December Late" - } - }, - "title": "Debug Fixed December Late" - }, - { - "id": "debug_fixed_new_years_day", - "campaign_list": [ - "debug_fixed_new_years_day" - ], - "text": "Happy new year from PLH", - "_translations": { - "text": {}, - "title": {} - }, - "_translatedFields": { - "text": { - "eng": "Happy new year from PLH" - }, - "title": { - "eng": "Debug Fixed New Years Day" - } - }, - "title": "Debug Fixed New Years Day" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions.json deleted file mode 100644 index 25c23fa7d1..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows_actions", - "status": "released", - "rows": [ - { - "id": "debug_actions_1", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_field", - "value_set_through_notification_action" - ], - "_raw": "sent | set_field: debug_field : value_set_through_notification_action", - "_cleaned": "sent | set_field: debug_field : value_set_through_notification_action" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_1.sent", - true - ], - "_raw": "sent | set_field: debug_actions_1.sent : true", - "_cleaned": "sent | set_field: debug_actions_1.sent : true" - } - ], - "priority": 1, - "campaign_list": [ - "debug_actions" - ], - "text": "Set a global", - "title": "Debug Actions 1", - "icon": "plh_images/icons/bell_white.svg" - }, - { - "id": "debug_actions_2", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_2.sent", - true - ], - "_raw": "sent | set_field: debug_actions_2.sent : true", - "_cleaned": "sent | set_field: debug_actions_2.sent : true" - } - ], - "priority": 2, - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_actions_1.sent", - "value": true - } - }, - "_raw": "get_field | debug_actions_1.sent: TRUE" - } - ], - "campaign_list": [ - "debug_actions" - ], - "text": "Pop up a template", - "title": "Debug Actions 2", - "icon": "plh_images/icons/bell_white.svg" - }, - { - "id": "debug_actions_3", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@data.something_fun.co_chef.text_template" - ], - "_raw": "go_to: @data.something_fun.co_chef.text_template", - "_cleaned": "click | go_to: @data.something_fun.co_chef.text_template" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_1.sent", - false - ], - "_raw": "sent | set_field: debug_actions_1.sent: FALSE", - "_cleaned": "sent | set_field: debug_actions_1.sent: FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_2.sent", - false - ], - "_raw": "sent | set_field: debug_actions_2.sent: FALSE", - "_cleaned": "sent | set_field: debug_actions_2.sent: FALSE" - } - ], - "priority": 3, - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_actions_2.sent", - "value": true - } - }, - "_raw": "get_field | debug_actions_2.sent: TRUE" - } - ], - "campaign_list": [ - "debug_actions" - ], - "text": "Go to a template", - "title": "Debug Actions 3", - "icon": "plh_images/icons/bell_white.svg" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions_2.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions_2.json deleted file mode 100644 index aa556772d8..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_actions_2.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows_actions_2", - "status": "released", - "comments": "Can be merged into main actions once PR merged to support dismissed/sent actions", - "rows": [ - { - "id": "debug_actions_2a", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_actions_2a.clicked", - true - ], - "_raw": "click | set_field: debug_actions_2a.clicked: TRUE", - "_cleaned": "click | set_field: debug_actions_2a.clicked: TRUE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_2a.sent", - true - ], - "_raw": "sent | set_field: debug_actions_2a.sent: TRUE", - "_cleaned": "sent | set_field: debug_actions_2a.sent: TRUE" - } - ], - "priority": 1, - "campaign_list": [ - "debug_actions_2" - ] - }, - { - "id": "debug_actions_2b", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_actions_2b.clicked", - true - ], - "_raw": "click | set_field: debug_actions_2b.clicked: TRUE", - "_cleaned": "click | set_field: debug_actions_2b.clicked: TRUE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_2b.sent", - true - ], - "_raw": "sent | set_field: debug_actions_2b.sent: TRUE", - "_cleaned": "sent | set_field: debug_actions_2b.sent: TRUE" - } - ], - "priority": 2, - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_actions_2a.sent", - "value": true - } - }, - "_raw": "get_field | debug_actions_2a.sent: TRUE" - } - ], - "campaign_list": [ - "debug_actions_2" - ] - }, - { - "id": "debug_actions_2c", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_actions_2c.clicked", - true - ], - "_raw": "click | set_field: debug_actions_2c.clicked: TRUE", - "_cleaned": "click | set_field: debug_actions_2c.clicked: TRUE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_2c.sent", - true - ], - "_raw": "sent | set_field: debug_actions_2c.sent: TRUE", - "_cleaned": "sent | set_field: debug_actions_2c.sent: TRUE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_4.sent", - false - ], - "_raw": "sent | set_field: debug_actions_4.sent: FALSE", - "_cleaned": "sent | set_field: debug_actions_4.sent: FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_actions_5.sent", - false - ], - "_raw": "sent | set_field: debug_actions_5.sent: FALSE", - "_cleaned": "sent | set_field: debug_actions_5.sent: FALSE" - } - ], - "priority": 3, - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_actions_2b.sent", - "value": true - } - }, - "_raw": "get_field | debug_actions_2b.sent: TRUE" - } - ], - "campaign_list": [ - "debug_actions_2" - ] - }, - { - "id": "debug_actions_2d", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_1on1_stepper" - ], - "_raw": "click | go_to: w_1on1_stepper", - "_cleaned": "click | go_to: w_1on1_stepper" - } - ], - "priority": 4, - "campaign_list": [ - "debug_actions_2" - ], - "text": "Go to the workshop stepper", - "title": "Debug 1on1 stepper" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_calc.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_calc.json deleted file mode 100644 index 6b580f3b08..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_calc.json +++ /dev/null @@ -1,396 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows_calc", - "status": "released", - "rows": [ - { - "id": "debug_calc_1", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_1", - false - ], - "_raw": "sent | set_field: debug_calc_1 : FALSE", - "_cleaned": "sent | set_field: debug_calc_1 : FALSE" - } - ], - "priority": -1, - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_2", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_2", - false - ], - "_raw": "sent | set_field: debug_calc_2 : FALSE", - "_cleaned": "sent | set_field: debug_calc_2 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_2.sent", - true - ], - "_raw": "sent | set_field: debug_calc_2.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_2.sent : TRUE" - } - ], - "priority": 1, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "app_events", - "where": { - "event_id": "app_launch" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "@calc(Math.min(0.001,0.002))", - "unit": "day" - } - } - }, - "_raw": "first_launch | before : @calc(Math.min(0.001,0.002)) : day" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_2.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_2.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_3", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_3", - false - ], - "_raw": "sent | set_field: debug_calc_3 : FALSE", - "_cleaned": "sent | set_field: debug_calc_3 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_3.sent", - true - ], - "_raw": "sent | set_field: debug_calc_3.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_3.sent : TRUE" - } - ], - "priority": 2, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "app_events", - "where": { - "event_id": "app_launch" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "1", - "unit": "day" - } - } - }, - "_raw": "first_launch | before : 1 : day" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_3.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_3.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_4", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_4", - false - ], - "_raw": "sent | set_field: debug_calc_4 : FALSE", - "_cleaned": "sent | set_field: debug_calc_4 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_4.sent", - true - ], - "_raw": "sent | set_field: debug_calc_4.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_4.sent : TRUE" - } - ], - "priority": 3, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "app_events", - "where": { - "event_id": "app_launch" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "@calc(Math.min(1,3))", - "unit": "day" - } - } - }, - "_raw": "first_launch | before : @calc(Math.min(1,3)) : day" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_4.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_4.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_5", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_5", - false - ], - "_raw": "sent | set_field: debug_calc_5 : FALSE", - "_cleaned": "sent | set_field: debug_calc_5 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_5.sent", - true - ], - "_raw": "sent | set_field: debug_calc_5.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_5.sent : TRUE" - } - ], - "priority": 4, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "app_events", - "where": { - "event_id": "app_launch" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "@calc(Math.max(1,3))", - "unit": "day" - } - } - }, - "_raw": "first_launch | before : @calc(Math.max(1,3)) : day" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_5.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_5.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_6", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_6", - false - ], - "_raw": "sent | set_field: debug_calc_6 : FALSE", - "_cleaned": "sent | set_field: debug_calc_6 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_6.sent", - true - ], - "_raw": "sent | set_field: debug_calc_6.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_6.sent : TRUE" - } - ], - "priority": 5, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "data_events", - "where": { - "name": "w_self_care_started", - "value": "true" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "0.001", - "unit": "day" - } - } - }, - "_raw": "get_field:first | w_self_care_started: true | before : 0.001 : day" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_6.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_6.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - }, - { - "id": "debug_calc_7", - "action_list": [ - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_7", - false - ], - "_raw": "sent | set_field: debug_calc_7 : FALSE", - "_cleaned": "sent | set_field: debug_calc_7 : FALSE" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_calc_7.sent", - true - ], - "_raw": "sent | set_field: debug_calc_7.sent : TRUE", - "_cleaned": "sent | set_field: debug_calc_7.sent : TRUE" - } - ], - "priority": 5, - "activation_condition_list": [ - { - "condition_type": "db_lookup", - "condition_args": { - "db_lookup": { - "table_id": "data_events", - "where": { - "name": "w_self_care_started", - "value": "true" - }, - "order": "asc", - "evaluate": { - "operator": ">", - "value": "2", - "unit": "min" - } - } - }, - "_raw": "get_field:first | w_self_care_started: true | before : 2 : min" - } - ], - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_calc_7.sent", - "value": true - } - }, - "_raw": "get_field | debug_calc_7.sent: TRUE" - } - ], - "campaign_list": [ - "debug_calc" - ] - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_cond.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_cond.json deleted file mode 100644 index 87a566b825..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_cond.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows_cond", - "status": "released", - "rows": [ - { - "id": "debug_cond_bool", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - }, - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_boolean", - true - ], - "_raw": "click | set_field : debug_boolean : true", - "_cleaned": "click | set_field : debug_boolean : true" - } - ], - "priority": 4, - "deactivation_condition_list": [ - { - "condition_type": "calc", - "condition_args": { - "calc": "@fields.debug_boolean" - }, - "_raw": "@fields.debug_boolean" - } - ], - "campaign_list": [ - "debug_condition" - ] - }, - { - "id": "debug_cond_numb", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - }, - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_number", - "100" - ], - "_raw": "click | set_field : debug_number : 100", - "_cleaned": "click | set_field : debug_number : 100" - } - ], - "priority": 3, - "deactivation_condition_list": [ - { - "condition_type": "calc", - "condition_args": { - "calc": "@fields.debug_number == 100" - }, - "_raw": "@fields.debug_number == 100" - } - ], - "campaign_list": [ - "debug_condition" - ] - }, - { - "id": "debug_cond_row_bool", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - }, - { - "trigger": "sent", - "action_id": "set_field", - "args": [ - "debug_cond_row_bool.sent", - true - ], - "_raw": "sent | set_field : debug_cond_row_bool.sent : true", - "_cleaned": "sent | set_field : debug_cond_row_bool.sent : true" - } - ], - "priority": 2, - "deactivation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_cond_row_bool.sent", - "value": true - } - }, - "_raw": "get_field | debug_cond_row_bool.sent : true" - } - ], - "campaign_list": [ - "debug_condition" - ] - }, - { - "id": "debug_cond_string", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - }, - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_string", - "my_phrase" - ], - "_raw": "click | set_field : debug_string : my_phrase", - "_cleaned": "click | set_field : debug_string : my_phrase" - } - ], - "priority": 1, - "deactivation_condition_list": [ - { - "condition_type": "calc", - "condition_args": { - "calc": "@fields.debug_string == \"my_phrase\"" - }, - "_raw": "@fields.debug_string == \"my_phrase\"" - } - ], - "campaign_list": [ - "debug_condition" - ] - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_html.json b/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_html.json deleted file mode 100644 index 8c988a4b39..0000000000 --- a/packages/app-data/sheets/data_list/campaign_rows_debug/debug_campaign_rows_html.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_rows_debug", - "flow_name": "debug_campaign_rows_html", - "status": "released", - "rows": [ - { - "id": "debug_html_1", - "priority": 1, - "campaign_list": [ - "debug_html" - ], - "text": "Bold Text", - "title": "Bold" - }, - { - "id": "debug_html_2", - "priority": 2, - "campaign_list": [ - "debug_html" - ], - "text": "**Bold Markdown**", - "title": "Bold Markdown" - }, - { - "id": "debug_html_3", - "priority": 3, - "campaign_list": [ - "debug_html" - ], - "text": "

                                                                                                                                                                                  MultiColor Push

                                                                                                                                                                                  ", - "title": "Mixed HTML" - }, - { - "id": "debug_html_4", - "priority": 4, - "campaign_list": [ - "debug_html" - ], - "text": "Welcome to Android!", - "title": "Android HTML" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_schedule/debug_campaign_schedules.json b/packages/app-data/sheets/data_list/campaign_schedule/debug_campaign_schedules.json deleted file mode 100644 index 0a44105db0..0000000000 --- a/packages/app-data/sheets/data_list/campaign_schedule/debug_campaign_schedules.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "campaign_schedule", - "flow_name": "debug_campaign_schedules", - "status": "released", - "comments": "This contains schedules for notifications", - "rows": [ - { - "id": "debug_daily", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "batch_size": 5 - }, - "time": { - "hour": 19, - "minute": 30 - } - }, - { - "id": "debug_fixed_saturday", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "day_of_week": 6 - }, - "time": { - "hour": 19, - "minute": 30 - } - }, - { - "id": "debug_fixed_past", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "1990-11-01T00:00:00.000", - "end_date": "1990-11-30T00:00:00.000" - } - }, - { - "id": "debug_fixed_december_no_time", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "2021-12-01T00:00:00.000", - "end_date": "2021-12-31T00:00:00.000" - } - }, - { - "id": "debug_fixed_december_early", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "2021-12-01T00:00:00.000", - "end_date": "2021-12-31T00:00:00.000" - }, - "time": { - "hour": 6, - "minute": 0 - } - }, - { - "id": "debug_fixed_december_noon", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "2021-12-01T00:00:00.000", - "end_date": "2021-12-31T00:00:00.000" - }, - "time": { - "hour": 12, - "minute": 0 - } - }, - { - "id": "debug_fixed_december_late", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "2021-12-01T00:00:00.000", - "end_date": "2021-12-31T00:00:00.000" - }, - "time": { - "hour": 22, - "minute": 0 - } - }, - { - "id": "debug_fixed_new_years_day", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "start_date": "2022-01-01T00:00:00.000", - "end_date": "2022-01-01T00:00:00.000" - }, - "time": { - "hour": 13, - "minute": 0 - } - }, - { - "id": "debug_consecutive_days", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "batch_size": 5 - } - }, - { - "id": "debug_actions", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "time": { - "hour": 18, - "minute": 0 - } - }, - { - "id": "debug_actions_2", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "time": { - "hour": 18, - "minute": 1 - } - }, - { - "id": "debug_condition", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ], - "schedule": { - "day_of_week": 1 - }, - "time": { - "hour": 17, - "minute": 0 - } - }, - { - "id": "debug_html", - "activation_condition_list": [ - { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "debug_campaigns_enabled", - "value": true - } - }, - "_raw": "get_field | debug_campaigns_enabled:TRUE" - } - ] - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_in_week_messages.json b/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_in_week_messages.json index 73cfe12107..3ed88c349c 100644 --- a/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_in_week_messages.json +++ b/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_in_week_messages.json @@ -8,14 +8,11 @@ "id": "nf_w_released", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "deactivation_condition_list": [ @@ -39,24 +36,11 @@ "id": "nf_relax", "activation_condition_list": [ { - "condition_type": "field_evaluation", - "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } - }, - "_raw": "get_field | iwm_as_notifications : true" - }, - { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "w_self_care_started", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | w_self_care_started : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "time": { @@ -68,14 +52,11 @@ "id": "nf_something_fun", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "deactivation_condition_list": [ @@ -99,14 +80,11 @@ "id": "nf_praise", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "deactivation_condition_list": [ @@ -130,14 +108,11 @@ "id": "nf_w_reminder", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "deactivation_condition_list": [ @@ -161,14 +136,11 @@ "id": "nf_hp_reminder", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "schedule": { @@ -183,14 +155,11 @@ "id": "nf_parent_points_overview", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "schedule": { @@ -205,14 +174,11 @@ "id": "nf_hp_review", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "deactivation_condition_list": [ @@ -236,14 +202,11 @@ "id": "nf_w_tomorrow", "activation_condition_list": [ { - "condition_type": "field_evaluation", + "condition_type": "calc", "condition_args": { - "field_evaluation": { - "field": "iwm_as_notifications", - "value": true - } + "calc": "@fields._app_skin == \"weekly_workshop\"" }, - "_raw": "get_field | iwm_as_notifications : true" + "_raw": "@fields._app_skin == \"weekly_workshop\"" } ], "schedule": { diff --git a/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_inactive.json b/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_inactive.json index 76d5e77a5c..e9ec3e8ce2 100644 --- a/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_inactive.json +++ b/packages/app-data/sheets/data_list/campaign_schedule/nf_schedule_inactive.json @@ -14,6 +14,16 @@ "days": 0 } }, + { + "id": "nf_inactive_progress", + "time": { + "hour": 16, + "minute": 0 + }, + "delay": { + "days": 3 + } + }, { "id": "nf_inactive_week", "time": { @@ -33,16 +43,6 @@ "delay": { "days": 30 } - }, - { - "id": "nf_generic", - "schedule": { - "day_of_week": 6 - }, - "time": { - "hour": 12, - "minute": 0 - } } ], "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" diff --git a/packages/app-data/sheets/data_list/check_in_data.json b/packages/app-data/sheets/data_list/check_in_data.json new file mode 100644 index 0000000000..7e0290184e --- /dev/null +++ b/packages/app-data/sheets/data_list/check_in_data.json @@ -0,0 +1,777 @@ +{ + "flow_type": "data_list", + "flow_name": "check_in_data", + "status": "released", + "data_list_name": "check_in", + "rows": [ + { + "id": "w_self_care", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "intro_text": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "_translations": { + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs" + }, + "reply_happy": { + "eng": "Wonderful, I am so happy things are going well." + }, + "reply_ok": { + "eng": "Some days will have their challenges. That is okay. You are on the right path!" + }, + "reply_sad": { + "eng": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Wonderful, I am so happy things are going well.", + "reply_ok": "Some days will have their challenges. That is okay. You are on the right path!", + "reply_sad": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "activity_title": "Welcome, @fields.user_name!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_1on1", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Let’s take a moment for YOU. Looking after yourself well starts with noticing how you feel.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Let’s take a moment for YOU. Looking after yourself well starts with noticing how you feel." + }, + "reply_happy": { + "eng": "Great! So good to hear you are in a positive space." + }, + "reply_ok": { + "eng": "Things are not always easy. But that is how we can grow and learn every day!" + }, + "reply_sad": { + "eng": "Life can be hard. Whatever you are feeling, you can be proud of yourself for being here!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Great! So good to hear you are in a positive space.", + "reply_ok": "Things are not always easy. But that is how we can grow and learn every day!", + "reply_sad": "Life can be hard. Whatever you are feeling, you can be proud of yourself for being here!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_praise", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "You matter! Take a moment to check in with yourself.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "You matter! Take a moment to check in with yourself." + }, + "reply_happy": { + "eng": "Great to hear that you are doing well. You are a wonderful parent!" + }, + "reply_ok": { + "eng": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!" + }, + "reply_sad": { + "eng": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Great to hear that you are doing well. You are a wonderful parent!", + "reply_ok": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "reply_sad": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_instruct", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Recognising how you feel helps you care for yourself well. You deserve it.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": {}, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Recognising how you feel helps you care for yourself well. You deserve it." + }, + "reply_happy": { + "eng": "Wonderful, I am so happy! Keep up the good work." + }, + "reply_ok": { + "eng": "Sorry that things are difficult. All families struggle. @global.parent_app is here to help!" + }, + "reply_sad": { + "eng": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It is okay!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Wonderful, I am so happy! Keep up the good work.", + "reply_ok": "Sorry that things are difficult. All families struggle. @global.parent_app is here to help!", + "reply_sad": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It is okay!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_stress", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Looking after yourself matters. And how you feel matters too!", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": {}, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Looking after yourself matters. And how you feel matters too!" + }, + "reply_happy": { + "eng": "Great! So good to hear that you are in a good space today. What a wonderful feeling!" + }, + "reply_ok": { + "eng": "Sometimes things go great. Sometimes they do not. And sometimes we do not quite know what to think... and that is totally okay! Remember that you are not alone." + }, + "reply_sad": { + "eng": "Sorry that things are hard right now. You deserve good things, and @global.parent_app is here to support you every step of the way." + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "reply_ok": "Sometimes things go great. Sometimes they do not. And sometimes we do not quite know what to think... and that is totally okay! Remember that you are not alone.", + "reply_sad": "Sorry that things are hard right now. You deserve good things, and @global.parent_app is here to support you every step of the way.", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_money", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Caring for yourself is so essential. When you know how you feel, you can see what you need.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Caring for yourself is so essential. When you know how you feel, you can see what you need." + }, + "reply_happy": { + "eng": "Wonderful, I am so happy things are going well. Keep up the good work." + }, + "reply_ok": { + "eng": "We all have better and worse days. The fact that you are here shows courage and commitment!" + }, + "reply_sad": { + "eng": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Wonderful, I am so happy things are going well. Keep up the good work.", + "reply_ok": "We all have better and worse days. The fact that you are here shows courage and commitment!", + "reply_sad": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_rules", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Remember that YOU matter! Let’s check in with our emotions first.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": {}, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Remember that YOU matter! Let’s check in with our emotions first." + }, + "reply_happy": { + "eng": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!" + }, + "reply_ok": { + "eng": "Well done for recognising that you are not feeling great. Be kind to yourself, you deserve it." + }, + "reply_sad": { + "eng": "Well done for recognising a difficult feeling. It is okay not to be okay sometimes. Remember @global.parent_app is here to support you." + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "reply_ok": "Well done for recognising that you are not feeling great. Be kind to yourself, you deserve it.", + "reply_sad": "Well done for recognising a difficult feeling. It is okay not to be okay sometimes. Remember @global.parent_app is here to support you.", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_consequence", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Self-care is a key parenting tool. It starts with recognising how we feel.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Self-care is a key parenting tool. It starts with recognising how we feel." + }, + "reply_happy": { + "eng": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing." + }, + "reply_ok": { + "eng": "Every day has its highs and lows. Praise yourself for being here and trying - you are moving forward." + }, + "reply_sad": { + "eng": "Sorry that things are difficult right now. Take a deep breath and know that you are valued." + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "reply_ok": "Every day has its highs and lows. Praise yourself for being here and trying - you are moving forward.", + "reply_sad": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_solve", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Recognising how you feel is key to handling life well. Be real and kind to yourself.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Recognising how you feel is key to handling life well. Be real and kind to yourself." + }, + "reply_happy": { + "eng": "You are a star. And you are making a real difference. You can be proud of yourself." + }, + "reply_ok": { + "eng": "Everyone has good and bad days. Well done for using this app. It shows you are a committed parent. Remember to praise yourself for it!" + }, + "reply_sad": { + "eng": "Sorry that things are not easy today. All parents have these days. You are trying and moving forward!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "You are a star. And you are making a real difference. You can be proud of yourself.", + "reply_ok": "Everyone has good and bad days. Well done for using this app. It shows you are a committed parent. Remember to praise yourself for it!", + "reply_sad": "Sorry that things are not easy today. All parents have these days. You are trying and moving forward!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_safe", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Being a great parent also means taking time to care for yourself every day. It starts with recognising how you feel.", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": {}, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Being a great parent also means taking time to care for yourself every day. It starts with recognising how you feel." + }, + "reply_happy": { + "eng": "So good to hear you are feeling well today. You are incredible!" + }, + "reply_ok": { + "eng": "We all have days where we just don’t know. That is okay! You are here and that is what matters." + }, + "reply_sad": { + "eng": "Being a parent can be hard. But you are here and that shows you want to keep improving things. That is a big accomplishment already!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "So good to hear you are feeling well today. You are incredible!", + "reply_ok": "We all have days where we just don’t know. That is okay! You are here and that is what matters.", + "reply_sad": "Being a parent can be hard. But you are here and that shows you want to keep improving things. That is a big accomplishment already!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_crisis", + "activity_image": "plh_images/workshop_modes/individual/wave.svg", + "text": "Taking a moment for YOU makes a big difference for everyone!", + "_translations": { + "text": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text": { + "eng": "Taking a moment for YOU makes a big difference for everyone!" + }, + "reply_happy": { + "eng": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it." + }, + "reply_ok": { + "eng": "Every day has its good and hard parts. Praise yourself for everything you have done so far - you are amazing." + }, + "reply_sad": { + "eng": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family." + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_happy": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "reply_ok": "Every day has its good and hard parts. Praise yourself for everything you have done so far - you are amazing.", + "reply_sad": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + }, + { + "id": "w_celebrate", + "activity_image": "plh_images/workshop_modes/guide_2/final/wave.svg", + "reply_happy": "Fantastic! And well done for investing in yourself and your family - you have accomplished a lot.", + "_translations": { + "reply_happy": { + "tz_sw": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_text": { + "es_sp": true, + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "reply_happy": { + "eng": "Fantastic! And well done for investing in yourself and your family - you have accomplished a lot." + }, + "reply_ok": { + "eng": "Sorry that you are not having the best day. Well done for trying to figure everything out. @global.parent_app is here to help." + }, + "reply_sad": { + "eng": "Being a parent can be challenging. Take a deep breath and recognise all you have done for your family - you deserve praise!" + }, + "activity_title": { + "eng": "Welcome, @fields.user_name!" + }, + "intro_text": { + "eng": "It is great to see you again!" + }, + "question_text": { + "eng": "How are you feeling today?" + } + }, + "reply_ok": "Sorry that you are not having the best day. Well done for trying to figure everything out. @global.parent_app is here to help.", + "reply_sad": "Being a parent can be challenging. Take a deep breath and recognise all you have done for your family - you deserve praise!", + "activity_title": "Welcome, @fields.user_name!", + "intro_text": "It is great to see you again!", + "question_text": "How are you feeling today?" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/common_workshop_task_gs.json b/packages/app-data/sheets/data_list/common_workshop_task_gs.json new file mode 100644 index 0000000000..f2a245a176 --- /dev/null +++ b/packages/app-data/sheets/data_list/common_workshop_task_gs.json @@ -0,0 +1,163 @@ +{ + "flow_type": "data_list", + "flow_name": "common_workshop_task_gs", + "status": "released", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + } + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + } + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + } + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + } + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + } + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + } + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + } + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + } + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/common_workshop_tasks.json b/packages/app-data/sheets/data_list/common_workshop_tasks.json new file mode 100644 index 0000000000..340cfacdcb --- /dev/null +++ b/packages/app-data/sheets/data_list/common_workshop_tasks.json @@ -0,0 +1,62 @@ +{ + "flow_type": "data_list", + "flow_name": "common_workshop_tasks", + "status": "released", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/debug_data_list.json b/packages/app-data/sheets/data_list/debug/debug_data_list.json deleted file mode 100644 index 5d725ad9ce..0000000000 --- a/packages/app-data/sheets/data_list/debug/debug_data_list.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "flow_type": "data_list", - "flow_name": "debug_data_list", - "status": "released", - "data_list_name": "debug", - "flow_subtype": "debug", - "rows": [ - { - "id": "item_1", - "text": "Item 1 text", - "image_asset": "plh_images/habits/habit_relax.svg" - }, - { - "id": "item_2", - "text": "Item 2 text", - "image_asset": "plh_images/icons/play_white.svg" - }, - { - "id": "item_3", - "text": "Item 3 text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/debug_variable_data.json b/packages/app-data/sheets/data_list/debug/debug_variable_data.json deleted file mode 100644 index c5650bcf93..0000000000 --- a/packages/app-data/sheets/data_list/debug/debug_variable_data.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "data_list", - "flow_name": "debug_variable_data", - "status": "released", - "data_list_name": "debug_vars", - "flow_subtype": "debug", - "rows": [ - { - "id": "number_1", - "value": 1 - }, - { - "id": "bool_true", - "value": true - }, - { - "id": "bool_false", - "value": false - }, - { - "id": "number_0", - "value": 0 - }, - { - "id": "list_1", - "value_list": [ - "1", - "2", - "3" - ] - }, - { - "id": "text_1", - "value": "text1" - }, - { - "id": "collection_1", - "value_collection": { - "key1": "val1", - "key2": "val2" - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/example_calc_data_list.json b/packages/app-data/sheets/data_list/debug/example_calc_data_list.json deleted file mode 100644 index dcd71f38e9..0000000000 --- a/packages/app-data/sheets/data_list/debug/example_calc_data_list.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "debug", - "flow_name": "example_calc_data_list", - "status": "released", - "data_list_name": "example_calc", - "rows": [ - { - "id": "example_1", - "value_list": [ - "name:name_var_1 | text:Option 1", - "name:name_var_2 | text: Option 2", - "name:name_var_3 | text: Option 3" - ], - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_calc.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/example_data_list.json b/packages/app-data/sheets/data_list/debug/example_data_list.json deleted file mode 100644 index d156ca3f88..0000000000 --- a/packages/app-data/sheets/data_list/debug/example_data_list.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "debug", - "flow_name": "example_data_list", - "status": "released", - "data_list_name": "example", - "rows": [ - { - "id": "example1", - "value": "Success - Example 1", - "text": "some text" - }, - { - "id": "example3", - "value_list": [ - "name:name_var_1 | text:Option 1", - "name:name_var_2 | text: Option 2" - ], - "text": "any fields can be accessed" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/example_items_data_list.json b/packages/app-data/sheets/data_list/debug/example_items_data_list.json deleted file mode 100644 index 13802b4e0f..0000000000 --- a/packages/app-data/sheets/data_list/debug/example_items_data_list.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "flow_type": "data_list", - "flow_subtype": "debug", - "flow_name": "example_items_data_list", - "status": "released", - "data_list_name": "example_items", - "rows": [ - { - "id": "item_1", - "name": "first", - "field_value": 7, - "unlock_fieldname": "example_unlocked_item_1", - "unlock_week": 1 - }, - { - "id": "item_2", - "name": "second", - "field_value": 1, - "unlock_fieldname": "example_unlocked_item_2", - "unlock_week": 2 - }, - { - "id": "item_3", - "name": "third", - "field_value": 3, - "unlock_fieldname": "example_unlocked_item_3", - "unlock_week": 3 - }, - { - "id": "item_4", - "name": "fourth", - "field_value": 2, - "unlock_fieldname": "example_unlocked_item_4", - "unlock_week": 4 - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/example_lang_data_list.json b/packages/app-data/sheets/data_list/debug/example_lang_data_list.json deleted file mode 100644 index b019936307..0000000000 --- a/packages/app-data/sheets/data_list/debug/example_lang_data_list.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "flow_type": "data_list", - "flow_name": "example_lang_data_list", - "status": "released", - "data_list_name": "example_lang", - "flow_subtype": "debug", - "rows": [ - { - "id": "example_lang_1", - "image_asset": "plh_images/habits/habit_relax.svg", - "lottie_asset": "plh_lottie/habits/habit_relax.json", - "title": "Example Data List Title 1", - "_translations": { - "title": { - "es_sp": true - }, - "text": { - "es_sp": true - }, - "bold_title": {}, - "title_and_happy": {} - }, - "_translatedFields": { - "title": { - "eng": "Example Data List Title 1" - }, - "text": { - "eng": "This text is loaded through the first data row." - }, - "bold_title": { - "eng": "**Example Data List Title 1**" - }, - "title_and_happy": { - "eng": "Example Data List Title 1 happy" - } - }, - "text": "This text is loaded through the first data row.", - "bold_title": "**Example Data List Title 1**", - "title_and_happy": "Example Data List Title 1 happy" - }, - { - "id": "example_lang_2", - "image_asset": "plh_images/habits/habit_treat_yourself.svg", - "lottie_asset": "plh_lottie/habits/habit_treat_yourself.json", - "title": "Example Data List Title 2", - "_translations": { - "title": { - "es_sp": true - }, - "text": { - "es_sp": true - }, - "bold_title": {}, - "title_and_happy": {} - }, - "_translatedFields": { - "title": { - "eng": "Example Data List Title 2" - }, - "text": { - "eng": "This text is loaded through the second data row." - }, - "bold_title": { - "eng": "**Example Data List Title 2**" - }, - "title_and_happy": { - "eng": "Example Data List Title 2 happy" - } - }, - "text": "This text is loaded through the second data row.", - "bold_title": "**Example Data List Title 2**", - "title_and_happy": "Example Data List Title 2 happy" - }, - { - "id": "example_lang_3", - "text": "This text should define a default value for a field", - "_translations": { - "text": { - "es_sp": true - } - }, - "_translatedFields": { - "text": { - "eng": "This text should define a default value for a field" - } - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/debug/feature_items_data.json b/packages/app-data/sheets/data_list/debug/feature_items_data.json deleted file mode 100644 index 46f7eabbf3..0000000000 --- a/packages/app-data/sheets/data_list/debug/feature_items_data.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "flow_type": "data_list", - "flow_name": "feature_items_data", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "id": "item_1", - "title": "Item 1", - "button_text": "Button 1", - "link": "link_1" - }, - { - "id": "item_2", - "title": "Item 2", - "button_text": "Button 2", - "link": "link_2" - }, - { - "id": "item_3", - "title": "Item 3", - "button_text": "Button 3", - "link": "link_3" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/encouraging_messages.json b/packages/app-data/sheets/data_list/encouraging_messages.json new file mode 100644 index 0000000000..388a84c5de --- /dev/null +++ b/packages/app-data/sheets/data_list/encouraging_messages.json @@ -0,0 +1,64 @@ +{ + "flow_type": "data_list", + "flow_name": "encouraging_messages", + "status": "released", + "rows": [ + { + "id": "message_1", + "text": "You are doing amazing, keep up the good work.", + "_translations": { + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "text": { + "eng": "You are doing amazing, keep up the good work." + } + } + }, + { + "id": "message_2", + "text": "Your teen is so lucky to have you as a parent.", + "_translations": { + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "text": { + "eng": "Your teen is so lucky to have you as a parent." + } + } + }, + { + "id": "message_3", + "text": "Parenting can be hard, but @global.parent_app is here to help you win.", + "_translations": { + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "text": { + "eng": "Parenting can be hard, but @global.parent_app is here to help you win." + } + } + }, + { + "id": "message_4", + "text": "Spending 1 minute learning about parenting makes a world of difference.", + "_translations": { + "text": { + "tz_sw": true + } + }, + "_translatedFields": { + "text": { + "eng": "Spending 1 minute learning about parenting makes a world of difference." + } + } + } + ], + "_xlsxPath": "global/campaigns/notifications_inactive.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/funders_data_list.json b/packages/app-data/sheets/data_list/funders_data_list.json new file mode 100644 index 0000000000..4fc5837d9b --- /dev/null +++ b/packages/app-data/sheets/data_list/funders_data_list.json @@ -0,0 +1,58 @@ +{ + "flow_type": "data_list", + "flow_name": "funders_data_list", + "status": "released", + "data_list_name": "funders", + "rows": [ + { + "id": "ukri", + "name": "UKRI", + "image_asset": "plh_images/logos/ukri.png" + }, + { + "id": "gcrf", + "name": "GCRF", + "image_asset": "plh_images/logos/gcrf.png" + }, + { + "id": "oak_foundation", + "name": "Oak foundation", + "image_asset": "plh_images/logos/oak_foundation.png" + }, + { + "id": "lego_foundation", + "name": "LEGO foundation", + "image_asset": "plh_images/logos/lego_foundation.png" + }, + { + "id": "erc", + "name": "ERC", + "image_asset": "plh_images/logos/erc.png" + }, + { + "id": "university_of_oxford", + "name": "University of Oxford", + "image_asset": "plh_images/logos/university_of_oxford.png" + }, + { + "id": "wellspring", + "name": "Wellspring Philanthropic Fund", + "image_asset": "plh_images/logos/wellspring.png" + }, + { + "id": "private_family_foundation", + "description": "A private family foundation which wishes to remain anonymous", + "_translations": { + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "description": { + "eng": "A private family foundation which wishes to remain anonymous" + } + } + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_ind.json new file mode 100644 index 0000000000..a0e8f0d899 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_consequence_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_consequence_read_1", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_1_completed", + "completed": "@fields.task_w_consequence_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_consequence_question_1", + "rel_priority": 2, + "completed_field": "task_w_consequence_question_1_completed", + "completed": "@fields.task_w_consequence_question_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_tog.json new file mode 100644 index 0000000000..ceb1f7b507 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_consequence_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_consequence_read_1", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_1_completed", + "completed": "@fields.task_w_consequence_read_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_consequence_talk_1", + "rel_priority": 3, + "completed_field": "task_w_consequence_talk_1_completed", + "completed": "@fields.task_w_consequence_talk_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_ind.json new file mode 100644 index 0000000000..ad6fba5dc6 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_consequence_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_consequence_read_3", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_2_completed", + "completed": "@fields.task_w_consequence_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_consequence_question_2", + "rel_priority": 2, + "completed_field": "task_w_consequence_question_2_completed", + "completed": "@fields.task_w_consequence_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_tog.json new file mode 100644 index 0000000000..31ff00871d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_consequence_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_consequence_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_consequence_read_3", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_2_completed", + "completed": "@fields.task_w_consequence_read_2_completed" + }, + { + "id": "talk_3", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_3", + "rel_priority": 3, + "completed_field": "task_w_consequence_talk_3_completed", + "completed": "@fields.task_w_consequence_talk_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_ind.json new file mode 100644 index 0000000000..fd084fcb14 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_crisis_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_crisis_read_1", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_1_completed", + "completed": "@fields.task_w_crisis_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_crisis_question_1", + "rel_priority": 2, + "completed_field": "task_w_crisis_question_1_completed", + "completed": "@fields.task_w_crisis_question_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_tog.json new file mode 100644 index 0000000000..5f5859d158 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_crisis_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_crisis_read_1", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_1_completed", + "completed": "@fields.task_w_crisis_read_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_crisis_talk_1", + "rel_priority": 3, + "completed_field": "task_w_crisis_talk_1_completed", + "completed": "@fields.task_w_crisis_talk_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_ind.json new file mode 100644 index 0000000000..733193e8b8 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_crisis_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_crisis_read_2", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_2_completed", + "completed": "@fields.task_w_crisis_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_crisis_question_2", + "rel_priority": 2, + "completed_field": "task_w_crisis_question_2_completed", + "completed": "@fields.task_w_crisis_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_tog.json new file mode 100644 index 0000000000..926d36eb49 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_crisis_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_crisis_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_crisis_read_2", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_2_completed", + "completed": "@fields.task_w_crisis_read_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_crisis_talk_2", + "rel_priority": 3, + "completed_field": "task_w_crisis_talk_2_completed", + "completed": "@fields.task_w_crisis_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_ind.json new file mode 100644 index 0000000000..2fe3c7ed9e --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_instruct_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_instruct_read_1", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_1_completed", + "completed": "@fields.task_w_instruct_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_instruct_question_1", + "rel_priority": 2, + "completed_field": "task_w_instruct_question_1_completed", + "completed": "@fields.task_w_instruct_question_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_tog.json new file mode 100644 index 0000000000..7f7aadbbd3 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_instruct_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_instruct_read_1", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_1_completed", + "completed": "@fields.task_w_instruct_read_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_instruct_talk_1", + "rel_priority": 3, + "completed_field": "task_w_instruct_talk_1_completed", + "completed": "@fields.task_w_instruct_talk_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_ind.json new file mode 100644 index 0000000000..c2aea89b68 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_instruct_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_instruct_read_2", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_2_completed", + "completed": "@fields.task_w_instruct_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_instruct_question_2", + "rel_priority": 2, + "completed_field": "task_w_instruct_question_2_completed", + "completed": "@fields.task_w_instruct_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_tog.json new file mode 100644 index 0000000000..e620005259 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_instruct_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_instruct_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_instruct_read_2", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_2_completed", + "completed": "@fields.task_w_instruct_read_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_instruct_talk_2", + "rel_priority": 3, + "completed_field": "task_w_instruct_talk_2_completed", + "completed": "@fields.task_w_instruct_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_ind.json new file mode 100644 index 0000000000..f614bd7a41 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_money_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_money_read_2", + "rel_priority": 1, + "completed_field": "task_w_money_read_2_completed", + "completed": "@fields.task_w_money_read_2_completed" + }, + { + "id": "question_1", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_money_tq_1", + "rel_priority": 2, + "completed_field": "task_w_money_question_1_completed", + "completed": "@fields.task_w_money_question_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_tog.json new file mode 100644 index 0000000000..974b14917d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_money_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_money_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_money_read_2", + "rel_priority": 1, + "completed_field": "task_w_money_read_2_completed", + "completed": "@fields.task_w_money_read_2_completed" + }, + { + "id": "talk_1", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_money_tq_1", + "rel_priority": 3, + "completed_field": "task_w_money_talk_1_completed", + "completed": "@fields.task_w_money_talk_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_ind.json new file mode 100644 index 0000000000..7f71924aa9 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_ind.json @@ -0,0 +1,37 @@ +{ + "flow_name": "tg_w_money_read_3_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_money_read_3", + "rel_priority": 1, + "completed_field": "task_w_money_read_3_completed", + "completed": "@fields.task_w_money_read_3_completed" + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_2", + "rel_priority": 2, + "completed_field": "task_w_money_question_2_completed", + "completed": "@fields.task_w_money_question_2_completed" + }, + { + "id": "question_3", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_3", + "rel_priority": 4, + "completed_field": "task_w_money_question_3_completed", + "completed": "@fields.task_w_money_question_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_tog.json new file mode 100644 index 0000000000..cb343a2f5f --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_money_read_3_tog.json @@ -0,0 +1,37 @@ +{ + "flow_name": "tg_w_money_read_3_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_money_read_3", + "rel_priority": 1, + "completed_field": "task_w_money_read_3_completed", + "completed": "@fields.task_w_money_read_3_completed" + }, + { + "id": "talk_2", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_2", + "rel_priority": 3, + "completed_field": "task_w_money_talk_2_completed", + "completed": "@fields.task_w_money_talk_2_completed" + }, + { + "id": "talk_3", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_3", + "rel_priority": 5, + "completed_field": "task_w_money_talk_3_completed", + "completed": "@fields.task_w_money_talk_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_praise_read_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_praise_read_ind.json new file mode 100644 index 0000000000..f63002f892 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_praise_read_ind.json @@ -0,0 +1,29 @@ +{ + "flow_name": "tg_w_praise_read_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read", + "group": "read", + "individual": true, + "together": true, + "template": "w_praise_read", + "priority": 12, + "rel_priority": 1, + "completed_field": "task_w_praise_read_completed", + "completed": "@fields.task_w_praise_read_completed" + }, + { + "id": "question_2", + "group": "read", + "individual": true, + "together": false, + "template": "w_praise_question_2", + "priority": 13, + "rel_priority": 2, + "completed_field": "task_w_praise_question_2_completed", + "completed": "@fields.task_w_praise_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_praise_read_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_praise_read_tog.json new file mode 100644 index 0000000000..7d4b54d5d7 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_praise_read_tog.json @@ -0,0 +1,29 @@ +{ + "flow_name": "tg_w_praise_read_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read", + "group": "read", + "individual": true, + "together": true, + "template": "w_praise_read", + "priority": 12, + "rel_priority": 1, + "completed_field": "task_w_praise_read_completed", + "completed": "@fields.task_w_praise_read_completed" + }, + { + "id": "talk_2", + "group": "read", + "individual": false, + "together": true, + "template": "w_praise_talk_2", + "priority": 13, + "rel_priority": 3, + "completed_field": "task_w_praise_talk_2_completed", + "completed": "@fields.task_w_praise_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_ind.json new file mode 100644 index 0000000000..b3e0f9022d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_rules_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_rules_read_1", + "rel_priority": 1, + "completed_field": "task_w_rules_read_1_completed", + "completed": "@fields.task_w_rules_read_1_completed" + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_rules_question", + "rel_priority": 2, + "completed_field": "task_w_rules_question_completed", + "completed": "@fields.task_w_rules_question_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_tog.json new file mode 100644 index 0000000000..d3e1fc36ac --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_rules_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_rules_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_rules_read_1", + "rel_priority": 1, + "completed_field": "task_w_rules_read_1_completed", + "completed": "@fields.task_w_rules_read_1_completed" + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_rules_talk", + "rel_priority": 3, + "completed_field": "task_w_rules_talk_completed", + "completed": "@fields.task_w_rules_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_ind.json new file mode 100644 index 0000000000..f5d0f72b6d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_safe_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_safe_read_1", + "rel_priority": 1, + "completed_field": "task_w_safe_read_1_completed", + "completed": "@fields.task_w_safe_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_safe_question_1", + "rel_priority": 2, + "completed_field": "task_w_safe_question_1_completed", + "completed": "@fields.task_w_safe_question_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_tog.json new file mode 100644 index 0000000000..96fcd73ab3 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_safe_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_safe_read_1", + "rel_priority": 1, + "completed_field": "task_w_safe_read_1_completed", + "completed": "@fields.task_w_safe_read_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_safe_talk_1", + "rel_priority": 3, + "completed_field": "task_w_safe_talk_1_completed", + "completed": "@fields.task_w_safe_talk_1_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_ind.json new file mode 100644 index 0000000000..722d080215 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_safe_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_safe_read_2", + "rel_priority": 1, + "completed_field": "task_w_safe_read_2_completed", + "completed": "@fields.task_w_safe_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_safe_question_2", + "rel_priority": 2, + "completed_field": "task_w_safe_question_2_completed", + "completed": "@fields.task_w_safe_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_tog.json new file mode 100644 index 0000000000..926a8eff39 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_safe_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_safe_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_safe_read_2", + "rel_priority": 1, + "completed_field": "task_w_safe_read_2_completed", + "completed": "@fields.task_w_safe_read_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_safe_talk_2", + "rel_priority": 3, + "completed_field": "task_w_safe_talk_2_completed", + "completed": "@fields.task_w_safe_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_ind.json new file mode 100644 index 0000000000..d14f80e736 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_solve_read_2_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_solve_read_2", + "rel_priority": 1, + "completed_field": "task_w_solve_read_2_completed", + "completed": "@fields.task_w_solve_read_2_completed" + }, + { + "id": "think", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_solve_think", + "rel_priority": 2, + "completed_field": "task_w_solve_think_completed", + "completed": "@fields.task_w_solve_think_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_tog.json new file mode 100644 index 0000000000..6318c34c35 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_solve_read_2_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_solve_read_2_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_solve_read_2", + "rel_priority": 1, + "completed_field": "task_w_solve_read_2_completed", + "completed": "@fields.task_w_solve_read_2_completed" + }, + { + "id": "talk", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_solve_talk", + "rel_priority": 3, + "completed_field": "task_w_solve_talk_completed", + "completed": "@fields.task_w_solve_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_ind.json new file mode 100644 index 0000000000..680c66bcd9 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_ind.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_stress_read_1_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_stress_read_1", + "rel_priority": 1, + "completed_field": "task_w_stress_read_1_completed", + "completed": "@fields.task_w_stress_read_1_completed" + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_stress_question", + "rel_priority": 2, + "completed_field": "task_w_stress_question_completed", + "completed": "@fields.task_w_stress_question_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_tog.json new file mode 100644 index 0000000000..323fe58a31 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_1_tog.json @@ -0,0 +1,27 @@ +{ + "flow_name": "tg_w_stress_read_1_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_stress_read_1", + "rel_priority": 1, + "completed_field": "task_w_stress_read_1_completed", + "completed": "@fields.task_w_stress_read_1_completed" + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_stress_talk", + "rel_priority": 3, + "completed_field": "task_w_stress_talk_completed", + "completed": "@fields.task_w_stress_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_ind.json b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_ind.json new file mode 100644 index 0000000000..c24eeb1896 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_ind.json @@ -0,0 +1,26 @@ +{ + "flow_name": "tg_w_stress_read_3_ind", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_stress_read_3", + "completed_field": "task_w_stress_read_3_completed", + "completed": "@fields.task_w_stress_read_3_completed" + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_stress_question_2", + "rel_priority": 2, + "completed_field": "task_w_stress_question_2_completed", + "completed": "@fields.task_w_stress_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_tog.json b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_tog.json new file mode 100644 index 0000000000..99ee54bf15 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/tg_w_stress_read_3_tog.json @@ -0,0 +1,16 @@ +{ + "flow_name": "tg_w_stress_read_3_tog", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_stress_read_3", + "completed_field": "task_w_stress_read_3_completed", + "completed": "@fields.task_w_stress_read_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_1on1_common_task_gs.json new file mode 100644 index 0000000000..643a356bfe --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_common_task_gs.json @@ -0,0 +1,154 @@ +{ + "flow_name": "w_1on1_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_1on1_relax" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_1on1_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_1on1_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_1on1_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_1on1_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_1on1_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_1on1_common_tasks.json new file mode 100644 index 0000000000..e48b465ab1 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_common_tasks.json @@ -0,0 +1,63 @@ +{ + "flow_name": "w_1on1_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_1on1_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_1on1_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_1on1_relax" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_1on1_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_1on1_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_1on1_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_1on1_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_1on1_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_1on1_ind_task_gs.json new file mode 100644 index 0000000000..ed27a4199d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_ind_task_gs.json @@ -0,0 +1,170 @@ +{ + "flow_name": "w_1on1_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_welcome_individual", + "completed_field": "task_gp_w_1on1_welcome_individual_completed", + "completed": "@fields.task_gp_w_1on1_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_1on1_relax", + "completed_field": "task_gp_w_1on1_relax_completed", + "completed": "@fields.task_gp_w_1on1_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_1on1_intro", + "completed_field": "task_gp_w_1on1_intro_completed", + "completed": "@fields.task_gp_w_1on1_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_1on1_tools_activity", + "completed_field": "task_gp_w_1on1_tools_activity_completed", + "completed": "@fields.task_gp_w_1on1_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_1on1_home_practice", + "completed_field": "task_gp_w_1on1_home_practice_completed", + "completed": "@fields.task_gp_w_1on1_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_1on1_ending", + "completed_field": "task_gp_w_1on1_ending_completed", + "completed": "@fields.task_gp_w_1on1_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_1on1_hp_review", + "completed_field": "task_gp_w_1on1_hp_review_completed", + "completed": "@fields.task_gp_w_1on1_hp_review_completed" + }, + { + "id": "question", + "individual": true, + "together": false, + "priority": 14, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_1on1_question", + "completed_field": "task_gp_w_1on1_question_completed", + "completed": "@fields.task_gp_w_1on1_question_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_task_gs.json b/packages/app-data/sheets/data_list/generated/w_1on1_task_gs.json new file mode 100644 index 0000000000..116824bc10 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_task_gs.json @@ -0,0 +1,217 @@ +{ + "flow_name": "w_1on1_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_welcome_individual", + "completed_field": "task_gp_w_1on1_welcome_individual_completed", + "completed": "@fields.task_gp_w_1on1_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_care_together", + "completed_field": "task_gp_w_1on1_care_together_completed", + "completed": "@fields.task_gp_w_1on1_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_1on1_relax", + "completed_field": "task_gp_w_1on1_relax_completed", + "completed": "@fields.task_gp_w_1on1_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_1on1_intro", + "completed_field": "task_gp_w_1on1_intro_completed", + "completed": "@fields.task_gp_w_1on1_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_1on1_tools_activity", + "completed_field": "task_gp_w_1on1_tools_activity_completed", + "completed": "@fields.task_gp_w_1on1_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_1on1_home_practice", + "completed_field": "task_gp_w_1on1_home_practice_completed", + "completed": "@fields.task_gp_w_1on1_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_1on1_ending", + "completed_field": "task_gp_w_1on1_ending_completed", + "completed": "@fields.task_gp_w_1on1_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_1on1_hp_review", + "completed_field": "task_gp_w_1on1_hp_review_completed", + "completed": "@fields.task_gp_w_1on1_hp_review_completed" + }, + { + "id": "question", + "individual": true, + "together": false, + "priority": 14, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_1on1_question", + "completed_field": "task_gp_w_1on1_question_completed", + "completed": "@fields.task_gp_w_1on1_question_completed" + }, + { + "id": "talk", + "individual": false, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_1on1_talk", + "completed_field": "task_gp_w_1on1_talk_completed", + "completed": "@fields.task_gp_w_1on1_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_1on1_task_gs_temp_1.json new file mode 100644 index 0000000000..836db22a57 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_task_gs_temp_1.json @@ -0,0 +1,197 @@ +{ + "flow_name": "w_1on1_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_1on1_relax" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_1on1_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_1on1_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_1on1_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_1on1_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_1on1_hp_review" + }, + { + "id": "question", + "individual": true, + "together": false, + "priority": 14, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_1on1_question" + }, + { + "id": "talk", + "individual": false, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_1on1_talk" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_tasks.json b/packages/app-data/sheets/data_list/generated/w_1on1_tasks.json new file mode 100644 index 0000000000..b148bed0aa --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_tasks.json @@ -0,0 +1,97 @@ +{ + "flow_name": "w_1on1_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_1on1_welcome_individual", + "completed_field": "task_w_1on1_welcome_individual_completed", + "completed": "@fields.task_w_1on1_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_1on1_care_together", + "completed_field": "task_w_1on1_care_together_completed", + "completed": "@fields.task_w_1on1_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_1on1_relax", + "completed_field": "task_w_1on1_relax_completed", + "completed": "@fields.task_w_1on1_relax_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_1on1_intro", + "completed_field": "task_w_1on1_intro_completed", + "completed": "@fields.task_w_1on1_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_1on1_tools_activity", + "completed_field": "task_w_1on1_tools_activity_completed", + "completed": "@fields.task_w_1on1_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_1on1_home_practice", + "completed_field": "task_w_1on1_home_practice_completed", + "completed": "@fields.task_w_1on1_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_1on1_ending", + "completed_field": "task_w_1on1_ending_completed", + "completed": "@fields.task_w_1on1_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_1on1_hp_review", + "completed_field": "task_w_1on1_hp_review_completed", + "completed": "@fields.task_w_1on1_hp_review_completed" + }, + { + "id": "question", + "group": "question", + "individual": true, + "together": false, + "template": "w_1on1_question", + "completed_field": "task_w_1on1_question_completed", + "completed": "@fields.task_w_1on1_question_completed" + }, + { + "id": "talk", + "group": "talk", + "individual": false, + "together": true, + "template": "w_1on1_talk", + "completed_field": "task_w_1on1_talk_completed", + "completed": "@fields.task_w_1on1_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_1on1_tasks_temp_1.json new file mode 100644 index 0000000000..4853177cfa --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_tasks_temp_1.json @@ -0,0 +1,77 @@ +{ + "flow_name": "w_1on1_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_1on1_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_1on1_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_1on1_relax" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_1on1_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_1on1_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_1on1_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_1on1_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_1on1_hp_review" + }, + { + "id": "question", + "group": "question", + "individual": true, + "together": false, + "template": "w_1on1_question" + }, + { + "id": "talk", + "group": "talk", + "individual": false, + "together": true, + "template": "w_1on1_talk" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_1on1_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_1on1_tog_task_gs.json new file mode 100644 index 0000000000..78f35d1a2f --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_1on1_tog_task_gs.json @@ -0,0 +1,175 @@ +{ + "flow_name": "w_1on1_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_1on1_care_together", + "completed_field": "task_gp_w_1on1_care_together_completed", + "completed": "@fields.task_gp_w_1on1_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_1on1_relax", + "completed_field": "task_gp_w_1on1_relax_completed", + "completed": "@fields.task_gp_w_1on1_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_1on1_intro", + "completed_field": "task_gp_w_1on1_intro_completed", + "completed": "@fields.task_gp_w_1on1_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_1on1_tools_activity", + "completed_field": "task_gp_w_1on1_tools_activity_completed", + "completed": "@fields.task_gp_w_1on1_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_1on1_home_practice", + "completed_field": "task_gp_w_1on1_home_practice_completed", + "completed": "@fields.task_gp_w_1on1_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_1on1_ending", + "completed_field": "task_gp_w_1on1_ending_completed", + "completed": "@fields.task_gp_w_1on1_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_1on1_hp_review", + "completed_field": "task_gp_w_1on1_hp_review_completed", + "completed": "@fields.task_gp_w_1on1_hp_review_completed" + }, + { + "id": "talk", + "individual": false, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_1on1_talk", + "completed_field": "task_gp_w_1on1_talk_completed", + "completed": "@fields.task_gp_w_1on1_talk_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_celebrate_common_task_gs.json new file mode 100644 index 0000000000..3358392a03 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_common_task_gs.json @@ -0,0 +1,137 @@ +{ + "flow_name": "w_celebrate_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_celebrate_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_celebrate_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_celebrate_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_celebrate_tools_activity" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_celebrate_ending" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_celebrate_common_tasks.json new file mode 100644 index 0000000000..5f1878b90d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_common_tasks.json @@ -0,0 +1,56 @@ +{ + "flow_name": "w_celebrate_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_celebrate_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_celebrate_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_celebrate_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_celebrate_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_celebrate_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_celebrate_tools_activity" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_celebrate_ending" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_celebrate_ind_task_gs.json new file mode 100644 index 0000000000..66fa53db2f --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_ind_task_gs.json @@ -0,0 +1,137 @@ +{ + "flow_name": "w_celebrate_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_welcome_individual", + "completed_field": "task_gp_w_celebrate_welcome_individual_completed", + "completed": "@fields.task_gp_w_celebrate_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_celebrate_relax", + "completed_field": "task_gp_w_celebrate_relax_completed", + "completed": "@fields.task_gp_w_celebrate_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_celebrate_intro", + "completed_field": "task_gp_w_celebrate_intro_completed", + "completed": "@fields.task_gp_w_celebrate_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_celebrate_tools_activity", + "completed_field": "task_gp_w_celebrate_tools_activity_completed", + "completed": "@fields.task_gp_w_celebrate_tools_activity_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_celebrate_ending", + "completed_field": "task_gp_w_celebrate_ending_completed", + "completed": "@fields.task_gp_w_celebrate_ending_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_celebrate_think", + "completed_field": "task_gp_w_celebrate_think_completed", + "completed": "@fields.task_gp_w_celebrate_think_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs.json b/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs.json new file mode 100644 index 0000000000..329b918b60 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs.json @@ -0,0 +1,229 @@ +{ + "flow_name": "w_celebrate_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_welcome_individual", + "completed_field": "task_gp_w_celebrate_welcome_individual_completed", + "completed": "@fields.task_gp_w_celebrate_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_care_together", + "completed_field": "task_gp_w_celebrate_care_together_completed", + "completed": "@fields.task_gp_w_celebrate_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_celebrate_relax", + "completed_field": "task_gp_w_celebrate_relax_completed", + "completed": "@fields.task_gp_w_celebrate_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_celebrate_reflect_together", + "completed_field": "task_gp_w_celebrate_reflect_together_completed", + "completed": "@fields.task_gp_w_celebrate_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_celebrate_intro", + "completed_field": "task_gp_w_celebrate_intro_completed", + "completed": "@fields.task_gp_w_celebrate_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_celebrate_tools_activity", + "completed_field": "task_gp_w_celebrate_tools_activity_completed", + "completed": "@fields.task_gp_w_celebrate_tools_activity_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_celebrate_ending", + "completed_field": "task_gp_w_celebrate_ending_completed", + "completed": "@fields.task_gp_w_celebrate_ending_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_celebrate_think", + "completed_field": "task_gp_w_celebrate_think_completed", + "completed": "@fields.task_gp_w_celebrate_think_completed" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_1", + "completed_field": "task_gp_w_celebrate_talk_1_completed", + "completed": "@fields.task_gp_w_celebrate_talk_1_completed" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_2", + "completed_field": "task_gp_w_celebrate_talk_2_completed", + "completed": "@fields.task_gp_w_celebrate_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs_temp_1.json new file mode 100644 index 0000000000..76808feb97 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_task_gs_temp_1.json @@ -0,0 +1,209 @@ +{ + "flow_name": "w_celebrate_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_celebrate_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_celebrate_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_celebrate_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_celebrate_tools_activity" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_celebrate_ending" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_celebrate_think" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_1" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_2" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_tasks.json b/packages/app-data/sheets/data_list/generated/w_celebrate_tasks.json new file mode 100644 index 0000000000..add4c0df50 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_tasks.json @@ -0,0 +1,97 @@ +{ + "flow_name": "w_celebrate_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_celebrate_welcome_individual", + "completed_field": "task_w_celebrate_welcome_individual_completed", + "completed": "@fields.task_w_celebrate_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_celebrate_care_together", + "completed_field": "task_w_celebrate_care_together_completed", + "completed": "@fields.task_w_celebrate_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_celebrate_relax", + "completed_field": "task_w_celebrate_relax_completed", + "completed": "@fields.task_w_celebrate_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_celebrate_reflect_together", + "completed_field": "task_w_celebrate_reflect_together_completed", + "completed": "@fields.task_w_celebrate_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_celebrate_intro", + "completed_field": "task_w_celebrate_intro_completed", + "completed": "@fields.task_w_celebrate_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_celebrate_tools_activity", + "completed_field": "task_w_celebrate_tools_activity_completed", + "completed": "@fields.task_w_celebrate_tools_activity_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_celebrate_ending", + "completed_field": "task_w_celebrate_ending_completed", + "completed": "@fields.task_w_celebrate_ending_completed" + }, + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_celebrate_think", + "completed_field": "task_w_celebrate_think_completed", + "completed": "@fields.task_w_celebrate_think_completed" + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "template": "w_celebrate_talk_1", + "completed_field": "task_w_celebrate_talk_1_completed", + "completed": "@fields.task_w_celebrate_talk_1_completed" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_celebrate_talk_2", + "completed_field": "task_w_celebrate_talk_2_completed", + "completed": "@fields.task_w_celebrate_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_celebrate_tasks_temp_1.json new file mode 100644 index 0000000000..64d6917ef5 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_tasks_temp_1.json @@ -0,0 +1,77 @@ +{ + "flow_name": "w_celebrate_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_celebrate_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_celebrate_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_celebrate_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_celebrate_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_celebrate_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_celebrate_tools_activity" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_celebrate_ending" + }, + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_celebrate_think" + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "template": "w_celebrate_talk_1" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_celebrate_talk_2" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_celebrate_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_celebrate_tog_task_gs.json new file mode 100644 index 0000000000..8c2d09e40a --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_celebrate_tog_task_gs.json @@ -0,0 +1,208 @@ +{ + "flow_name": "w_celebrate_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_celebrate_care_together", + "completed_field": "task_gp_w_celebrate_care_together_completed", + "completed": "@fields.task_gp_w_celebrate_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_celebrate_relax", + "completed_field": "task_gp_w_celebrate_relax_completed", + "completed": "@fields.task_gp_w_celebrate_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_celebrate_reflect_together", + "completed_field": "task_gp_w_celebrate_reflect_together_completed", + "completed": "@fields.task_gp_w_celebrate_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_celebrate_intro", + "completed_field": "task_gp_w_celebrate_intro_completed", + "completed": "@fields.task_gp_w_celebrate_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_celebrate_tools_activity", + "completed_field": "task_gp_w_celebrate_tools_activity_completed", + "completed": "@fields.task_gp_w_celebrate_tools_activity_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_celebrate_ending", + "completed_field": "task_gp_w_celebrate_ending_completed", + "completed": "@fields.task_gp_w_celebrate_ending_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_celebrate_think", + "completed_field": "task_gp_w_celebrate_think_completed", + "completed": "@fields.task_gp_w_celebrate_think_completed" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_1", + "completed_field": "task_gp_w_celebrate_talk_1_completed", + "completed": "@fields.task_gp_w_celebrate_talk_1_completed" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_celebrate_talk_2", + "completed_field": "task_gp_w_celebrate_talk_2_completed", + "completed": "@fields.task_gp_w_celebrate_talk_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_consequence_common_task_gs.json new file mode 100644 index 0000000000..1399c86ecf --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_common_task_gs.json @@ -0,0 +1,152 @@ +{ + "flow_name": "w_consequence_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_consequence_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_consequence_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_consequence_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_consequence_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_consequence_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_consequence_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_consequence_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_consequence_common_tasks.json new file mode 100644 index 0000000000..7e27721da5 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_consequence_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_consequence_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_consequence_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_consequence_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_consequence_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_consequence_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_consequence_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_consequence_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_consequence_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_consequence_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_consequence_ind_task_gs.json new file mode 100644 index 0000000000..e83db64f36 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_ind_task_gs.json @@ -0,0 +1,239 @@ +{ + "flow_name": "w_consequence_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_consequence_relax", + "completed_field": "task_gp_w_consequence_relax_completed", + "completed": "@fields.task_gp_w_consequence_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_consequence_intro", + "completed_field": "task_gp_w_consequence_intro_completed", + "completed": "@fields.task_gp_w_consequence_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_consequence_tools_activity", + "completed_field": "task_gp_w_consequence_tools_activity_completed", + "completed": "@fields.task_gp_w_consequence_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_consequence_home_practice", + "completed_field": "task_gp_w_consequence_home_practice_completed", + "completed": "@fields.task_gp_w_consequence_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_consequence_ending", + "completed_field": "task_gp_w_consequence_ending_completed", + "completed": "@fields.task_gp_w_consequence_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_consequence_hp_review", + "completed_field": "task_gp_w_consequence_hp_review_completed", + "completed": "@fields.task_gp_w_consequence_hp_review_completed" + }, + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_welcome_ind", + "completed_field": "task_gp_w_consequence_welcome_individual_completed", + "completed": "@fields.task_gp_w_consequence_welcome_individual_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_consequence.title" + } + }, + "story_id": "neg_consequence", + "completed_field": "task_gp_w_consequence_read_1_completed", + "completed": "@fields.task_gp_w_consequence_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_1_temp", + "completed_field": "task_gp_w_consequence_learn_1_completed", + "completed": "@fields.task_gp_w_consequence_learn_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 72, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_consequence.title" + } + }, + "story_id": "pos_consequence", + "completed_field": "task_gp_w_consequence_read_2_completed", + "completed": "@fields.task_gp_w_consequence_read_2_completed" + }, + { + "id": "learn_2", + "individual": true, + "together": false, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_2_temp", + "completed_field": "task_gp_w_consequence_learn_2_completed", + "completed": "@fields.task_gp_w_consequence_learn_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_task_gs.json b/packages/app-data/sheets/data_list/generated/w_consequence_task_gs.json new file mode 100644 index 0000000000..1555502c41 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_task_gs.json @@ -0,0 +1,326 @@ +{ + "flow_name": "w_consequence_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_care_together", + "completed_field": "task_gp_w_consequence_care_together_completed", + "completed": "@fields.task_gp_w_consequence_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_consequence_relax", + "completed_field": "task_gp_w_consequence_relax_completed", + "completed": "@fields.task_gp_w_consequence_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_consequence_reflect_together", + "completed_field": "task_gp_w_consequence_reflect_together_completed", + "completed": "@fields.task_gp_w_consequence_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_consequence_intro", + "completed_field": "task_gp_w_consequence_intro_completed", + "completed": "@fields.task_gp_w_consequence_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_consequence_tools_activity", + "completed_field": "task_gp_w_consequence_tools_activity_completed", + "completed": "@fields.task_gp_w_consequence_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_consequence_home_practice", + "completed_field": "task_gp_w_consequence_home_practice_completed", + "completed": "@fields.task_gp_w_consequence_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_consequence_ending", + "completed_field": "task_gp_w_consequence_ending_completed", + "completed": "@fields.task_gp_w_consequence_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_consequence_hp_review", + "completed_field": "task_gp_w_consequence_hp_review_completed", + "completed": "@fields.task_gp_w_consequence_hp_review_completed" + }, + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_welcome_ind", + "completed_field": "task_gp_w_consequence_welcome_individual_completed", + "completed": "@fields.task_gp_w_consequence_welcome_individual_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_consequence.title" + } + }, + "story_id": "neg_consequence", + "completed_field": "task_gp_w_consequence_read_1_completed", + "completed": "@fields.task_gp_w_consequence_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_1_temp", + "completed_field": "task_gp_w_consequence_learn_1_completed", + "completed": "@fields.task_gp_w_consequence_learn_1_completed" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_consequence_talk_2", + "completed_field": "task_gp_w_consequence_talk_2_completed", + "completed": "@fields.task_gp_w_consequence_talk_2_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 72, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_consequence.title" + } + }, + "story_id": "pos_consequence", + "completed_field": "task_gp_w_consequence_read_2_completed", + "completed": "@fields.task_gp_w_consequence_read_2_completed" + }, + { + "id": "learn_2", + "individual": true, + "together": false, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_2_temp", + "completed_field": "task_gp_w_consequence_learn_2_completed", + "completed": "@fields.task_gp_w_consequence_learn_2_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_consequence_try", + "completed_field": "task_gp_w_consequence_try_completed", + "completed": "@fields.task_gp_w_consequence_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_consequence_task_gs_temp_1.json new file mode 100644 index 0000000000..fd6098d3b9 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_task_gs_temp_1.json @@ -0,0 +1,296 @@ +{ + "flow_name": "w_consequence_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_consequence_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_consequence_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_consequence_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_consequence_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_consequence_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_consequence_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_consequence_hp_review" + }, + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_welcome_ind" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_consequence.title" + } + }, + "story_id": "neg_consequence" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_1_temp" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_consequence_talk_2" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 72, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_consequence.title" + } + }, + "story_id": "pos_consequence" + }, + { + "id": "learn_2", + "individual": true, + "together": false, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_2_temp" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_consequence_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_tasks.json b/packages/app-data/sheets/data_list/generated/w_consequence_tasks.json new file mode 100644 index 0000000000..fe431f49a2 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_tasks.json @@ -0,0 +1,184 @@ +{ + "flow_name": "w_consequence_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_consequence_welcome_individual", + "completed_field": "task_w_consequence_welcome_individual_completed", + "completed": "@fields.task_w_consequence_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_consequence_care_together", + "completed_field": "task_w_consequence_care_together_completed", + "completed": "@fields.task_w_consequence_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_consequence_relax", + "completed_field": "task_w_consequence_relax_completed", + "completed": "@fields.task_w_consequence_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_consequence_reflect_together", + "completed_field": "task_w_consequence_reflect_together_completed", + "completed": "@fields.task_w_consequence_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_consequence_intro", + "completed_field": "task_w_consequence_intro_completed", + "completed": "@fields.task_w_consequence_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_consequence_tools_activity", + "completed_field": "task_w_consequence_tools_activity_completed", + "completed": "@fields.task_w_consequence_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_consequence_home_practice", + "completed_field": "task_w_consequence_home_practice_completed", + "completed": "@fields.task_w_consequence_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_consequence_ending", + "completed_field": "task_w_consequence_ending_completed", + "completed": "@fields.task_w_consequence_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_consequence_hp_review", + "completed_field": "task_w_consequence_hp_review_completed", + "completed": "@fields.task_w_consequence_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_consequence_read_1", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_1_completed", + "completed": "@fields.task_w_consequence_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_consequence_question_1", + "rel_priority": 2, + "completed_field": "task_w_consequence_question_1_completed", + "completed": "@fields.task_w_consequence_question_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_consequence_talk_1", + "rel_priority": 3, + "completed_field": "task_w_consequence_talk_1_completed", + "completed": "@fields.task_w_consequence_talk_1_completed" + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_consequence_learn_1_temp", + "completed_field": "task_w_consequence_learn_1_completed", + "completed": "@fields.task_w_consequence_learn_1_completed" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_2", + "completed_field": "task_w_consequence_talk_2_completed", + "completed": "@fields.task_w_consequence_talk_2_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_consequence_read_3", + "rel_priority": 1, + "completed_field": "task_w_consequence_read_2_completed", + "completed": "@fields.task_w_consequence_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_consequence_question_2", + "rel_priority": 2, + "completed_field": "task_w_consequence_question_2_completed", + "completed": "@fields.task_w_consequence_question_2_completed" + }, + { + "id": "talk_3", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_3", + "rel_priority": 3, + "completed_field": "task_w_consequence_talk_3_completed", + "completed": "@fields.task_w_consequence_talk_3_completed" + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": false, + "template": "w_consequence_learn_2_temp", + "completed_field": "task_w_consequence_learn_2_completed", + "completed": "@fields.task_w_consequence_learn_2_completed" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_consequence_try", + "completed_field": "task_w_consequence_try_completed", + "completed": "@fields.task_w_consequence_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_consequence_tasks_temp_1.json new file mode 100644 index 0000000000..51f1348094 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_tasks_temp_1.json @@ -0,0 +1,146 @@ +{ + "flow_name": "w_consequence_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_consequence_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_consequence_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_consequence_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_consequence_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_consequence_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_consequence_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_consequence_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_consequence_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_consequence_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_consequence_read_1", + "rel_priority": 1 + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_consequence_question_1", + "rel_priority": 2 + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_consequence_talk_1", + "rel_priority": 3 + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_consequence_learn_1_temp" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_2" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_consequence_read_3", + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_consequence_question_2", + "rel_priority": 2 + }, + { + "id": "talk_3", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_3", + "rel_priority": 3 + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": false, + "template": "w_consequence_learn_2_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_consequence_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_consequence_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_consequence_tog_task_gs.json new file mode 100644 index 0000000000..33d9ce56f2 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_consequence_tog_task_gs.json @@ -0,0 +1,279 @@ +{ + "flow_name": "w_consequence_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_consequence_care_together", + "completed_field": "task_gp_w_consequence_care_together_completed", + "completed": "@fields.task_gp_w_consequence_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_consequence_relax", + "completed_field": "task_gp_w_consequence_relax_completed", + "completed": "@fields.task_gp_w_consequence_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_consequence_reflect_together", + "completed_field": "task_gp_w_consequence_reflect_together_completed", + "completed": "@fields.task_gp_w_consequence_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_consequence_intro", + "completed_field": "task_gp_w_consequence_intro_completed", + "completed": "@fields.task_gp_w_consequence_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_consequence_tools_activity", + "completed_field": "task_gp_w_consequence_tools_activity_completed", + "completed": "@fields.task_gp_w_consequence_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_consequence_home_practice", + "completed_field": "task_gp_w_consequence_home_practice_completed", + "completed": "@fields.task_gp_w_consequence_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_consequence_ending", + "completed_field": "task_gp_w_consequence_ending_completed", + "completed": "@fields.task_gp_w_consequence_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_consequence_hp_review", + "completed_field": "task_gp_w_consequence_hp_review_completed", + "completed": "@fields.task_gp_w_consequence_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_consequence.title" + } + }, + "story_id": "neg_consequence", + "completed_field": "task_gp_w_consequence_read_1_completed", + "completed": "@fields.task_gp_w_consequence_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_consequence_learn_1_temp", + "completed_field": "task_gp_w_consequence_learn_1_completed", + "completed": "@fields.task_gp_w_consequence_learn_1_completed" + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_consequence_talk_2", + "completed_field": "task_gp_w_consequence_talk_2_completed", + "completed": "@fields.task_gp_w_consequence_talk_2_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 72, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_consequence.title" + } + }, + "story_id": "pos_consequence", + "completed_field": "task_gp_w_consequence_read_2_completed", + "completed": "@fields.task_gp_w_consequence_read_2_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_consequence_try", + "completed_field": "task_gp_w_consequence_try_completed", + "completed": "@fields.task_gp_w_consequence_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_crisis_common_task_gs.json new file mode 100644 index 0000000000..65b892e8da --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_crisis_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_crisis_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_crisis_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_crisis_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_crisis_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_crisis_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_crisis_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_crisis_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_crisis_common_tasks.json new file mode 100644 index 0000000000..5f7c8f54f0 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_crisis_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_crisis_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_crisis_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_crisis_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_crisis_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_crisis_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_crisis_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_crisis_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_crisis_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_crisis_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_crisis_ind_task_gs.json new file mode 100644 index 0000000000..d7ba3bc9dd --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_ind_task_gs.json @@ -0,0 +1,213 @@ +{ + "flow_name": "w_crisis_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_welcome_individual", + "completed_field": "task_gp_w_crisis_welcome_individual_completed", + "completed": "@fields.task_gp_w_crisis_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_crisis_relax", + "completed_field": "task_gp_w_crisis_relax_completed", + "completed": "@fields.task_gp_w_crisis_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_crisis_intro", + "completed_field": "task_gp_w_crisis_intro_completed", + "completed": "@fields.task_gp_w_crisis_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_crisis_tools_activity", + "completed_field": "task_gp_w_crisis_tools_activity_completed", + "completed": "@fields.task_gp_w_crisis_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_crisis_home_practice", + "completed_field": "task_gp_w_crisis_home_practice_completed", + "completed": "@fields.task_gp_w_crisis_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_crisis_ending", + "completed_field": "task_gp_w_crisis_ending_completed", + "completed": "@fields.task_gp_w_crisis_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_crisis_hp_review", + "completed_field": "task_gp_w_crisis_hp_review_completed", + "completed": "@fields.task_gp_w_crisis_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.rape.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.rape.title" + } + }, + "story_id": "rape", + "completed_field": "task_gp_w_crisis_read_1_completed", + "completed": "@fields.task_gp_w_crisis_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.violence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.violence.title" + } + }, + "story_id": "violence", + "completed_field": "task_gp_w_crisis_read_2_completed", + "completed": "@fields.task_gp_w_crisis_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_crisis_learn_temp", + "completed_field": "task_gp_w_crisis_learn_completed", + "completed": "@fields.task_gp_w_crisis_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_task_gs.json b/packages/app-data/sheets/data_list/generated/w_crisis_task_gs.json new file mode 100644 index 0000000000..d42b7063f2 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_task_gs.json @@ -0,0 +1,253 @@ +{ + "flow_name": "w_crisis_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_welcome_individual", + "completed_field": "task_gp_w_crisis_welcome_individual_completed", + "completed": "@fields.task_gp_w_crisis_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_care_together", + "completed_field": "task_gp_w_crisis_care_together_completed", + "completed": "@fields.task_gp_w_crisis_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_crisis_relax", + "completed_field": "task_gp_w_crisis_relax_completed", + "completed": "@fields.task_gp_w_crisis_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_crisis_reflect_together", + "completed_field": "task_gp_w_crisis_reflect_together_completed", + "completed": "@fields.task_gp_w_crisis_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_crisis_intro", + "completed_field": "task_gp_w_crisis_intro_completed", + "completed": "@fields.task_gp_w_crisis_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_crisis_tools_activity", + "completed_field": "task_gp_w_crisis_tools_activity_completed", + "completed": "@fields.task_gp_w_crisis_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_crisis_home_practice", + "completed_field": "task_gp_w_crisis_home_practice_completed", + "completed": "@fields.task_gp_w_crisis_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_crisis_ending", + "completed_field": "task_gp_w_crisis_ending_completed", + "completed": "@fields.task_gp_w_crisis_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_crisis_hp_review", + "completed_field": "task_gp_w_crisis_hp_review_completed", + "completed": "@fields.task_gp_w_crisis_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.rape.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.rape.title" + } + }, + "story_id": "rape", + "completed_field": "task_gp_w_crisis_read_1_completed", + "completed": "@fields.task_gp_w_crisis_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.violence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.violence.title" + } + }, + "story_id": "violence", + "completed_field": "task_gp_w_crisis_read_2_completed", + "completed": "@fields.task_gp_w_crisis_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_crisis_learn_temp", + "completed_field": "task_gp_w_crisis_learn_completed", + "completed": "@fields.task_gp_w_crisis_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_crisis_task_gs_temp_1.json new file mode 100644 index 0000000000..e1fbc6a017 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_task_gs_temp_1.json @@ -0,0 +1,229 @@ +{ + "flow_name": "w_crisis_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_crisis_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_crisis_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_crisis_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_crisis_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_crisis_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_crisis_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_crisis_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.rape.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.rape.title" + } + }, + "story_id": "rape" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.violence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.violence.title" + } + }, + "story_id": "violence" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_crisis_learn_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_tasks.json b/packages/app-data/sheets/data_list/generated/w_crisis_tasks.json new file mode 100644 index 0000000000..8b8739c30b --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_tasks.json @@ -0,0 +1,157 @@ +{ + "flow_name": "w_crisis_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_crisis_welcome_individual", + "completed_field": "task_w_crisis_welcome_individual_completed", + "completed": "@fields.task_w_crisis_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_crisis_care_together", + "completed_field": "task_w_crisis_care_together_completed", + "completed": "@fields.task_w_crisis_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_crisis_relax", + "completed_field": "task_w_crisis_relax_completed", + "completed": "@fields.task_w_crisis_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_crisis_reflect_together", + "completed_field": "task_w_crisis_reflect_together_completed", + "completed": "@fields.task_w_crisis_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_crisis_intro", + "completed_field": "task_w_crisis_intro_completed", + "completed": "@fields.task_w_crisis_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_crisis_tools_activity", + "completed_field": "task_w_crisis_tools_activity_completed", + "completed": "@fields.task_w_crisis_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_crisis_home_practice", + "completed_field": "task_w_crisis_home_practice_completed", + "completed": "@fields.task_w_crisis_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_crisis_ending", + "completed_field": "task_w_crisis_ending_completed", + "completed": "@fields.task_w_crisis_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_crisis_hp_review", + "completed_field": "task_w_crisis_hp_review_completed", + "completed": "@fields.task_w_crisis_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_crisis_read_1", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_1_completed", + "completed": "@fields.task_w_crisis_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_crisis_question_1", + "rel_priority": 2, + "completed_field": "task_w_crisis_question_1_completed", + "completed": "@fields.task_w_crisis_question_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_crisis_talk_1", + "rel_priority": 3, + "completed_field": "task_w_crisis_talk_1_completed", + "completed": "@fields.task_w_crisis_talk_1_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_crisis_read_2", + "rel_priority": 1, + "completed_field": "task_w_crisis_read_2_completed", + "completed": "@fields.task_w_crisis_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_crisis_question_2", + "rel_priority": 2, + "completed_field": "task_w_crisis_question_2_completed", + "completed": "@fields.task_w_crisis_question_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_crisis_talk_2", + "rel_priority": 3, + "completed_field": "task_w_crisis_talk_2_completed", + "completed": "@fields.task_w_crisis_talk_2_completed" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_crisis_learn_temp", + "completed_field": "task_w_crisis_learn_completed", + "completed": "@fields.task_w_crisis_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_crisis_tasks_temp_1.json new file mode 100644 index 0000000000..b30273e34b --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_tasks_temp_1.json @@ -0,0 +1,125 @@ +{ + "flow_name": "w_crisis_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_crisis_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_crisis_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_crisis_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_crisis_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_crisis_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_crisis_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_crisis_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_crisis_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_crisis_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_crisis_read_1", + "rel_priority": 1 + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_crisis_question_1", + "rel_priority": 2 + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_crisis_talk_1", + "rel_priority": 3 + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_crisis_read_2", + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_crisis_question_2", + "rel_priority": 2 + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_crisis_talk_2", + "rel_priority": 3 + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_crisis_learn_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_crisis_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_crisis_tog_task_gs.json new file mode 100644 index 0000000000..13e622adc0 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_crisis_tog_task_gs.json @@ -0,0 +1,232 @@ +{ + "flow_name": "w_crisis_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_crisis_care_together", + "completed_field": "task_gp_w_crisis_care_together_completed", + "completed": "@fields.task_gp_w_crisis_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_crisis_relax", + "completed_field": "task_gp_w_crisis_relax_completed", + "completed": "@fields.task_gp_w_crisis_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_crisis_reflect_together", + "completed_field": "task_gp_w_crisis_reflect_together_completed", + "completed": "@fields.task_gp_w_crisis_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_crisis_intro", + "completed_field": "task_gp_w_crisis_intro_completed", + "completed": "@fields.task_gp_w_crisis_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_crisis_tools_activity", + "completed_field": "task_gp_w_crisis_tools_activity_completed", + "completed": "@fields.task_gp_w_crisis_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_crisis_home_practice", + "completed_field": "task_gp_w_crisis_home_practice_completed", + "completed": "@fields.task_gp_w_crisis_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_crisis_ending", + "completed_field": "task_gp_w_crisis_ending_completed", + "completed": "@fields.task_gp_w_crisis_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_crisis_hp_review", + "completed_field": "task_gp_w_crisis_hp_review_completed", + "completed": "@fields.task_gp_w_crisis_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.rape.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.rape.title" + } + }, + "story_id": "rape", + "completed_field": "task_gp_w_crisis_read_1_completed", + "completed": "@fields.task_gp_w_crisis_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.violence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.violence.title" + } + }, + "story_id": "violence", + "completed_field": "task_gp_w_crisis_read_2_completed", + "completed": "@fields.task_gp_w_crisis_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_crisis_learn_temp", + "completed_field": "task_gp_w_crisis_learn_completed", + "completed": "@fields.task_gp_w_crisis_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_instruct_common_task_gs.json new file mode 100644 index 0000000000..717eb25bf0 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_instruct_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_instruct_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_instruct_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_instruct_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_instruct_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_instruct_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_instruct_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_instruct_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_instruct_common_tasks.json new file mode 100644 index 0000000000..37c3f8d8a0 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_instruct_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_instruct_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_instruct_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_instruct_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_instruct_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_instruct_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_instruct_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_instruct_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_instruct_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_instruct_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_instruct_ind_task_gs.json new file mode 100644 index 0000000000..1e1822bec3 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_ind_task_gs.json @@ -0,0 +1,213 @@ +{ + "flow_name": "w_instruct_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_welcome_individual", + "completed_field": "task_gp_w_instruct_welcome_individual_completed", + "completed": "@fields.task_gp_w_instruct_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_instruct_relax", + "completed_field": "task_gp_w_instruct_relax_completed", + "completed": "@fields.task_gp_w_instruct_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_instruct_intro", + "completed_field": "task_gp_w_instruct_intro_completed", + "completed": "@fields.task_gp_w_instruct_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_instruct_tools_activity", + "completed_field": "task_gp_w_instruct_tools_activity_completed", + "completed": "@fields.task_gp_w_instruct_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_instruct_home_practice", + "completed_field": "task_gp_w_instruct_home_practice_completed", + "completed": "@fields.task_gp_w_instruct_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_instruct_ending", + "completed_field": "task_gp_w_instruct_ending_completed", + "completed": "@fields.task_gp_w_instruct_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_instruct_hp_review", + "completed_field": "task_gp_w_instruct_hp_review_completed", + "completed": "@fields.task_gp_w_instruct_hp_review_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_instruct_think_1_temp", + "completed_field": "task_gp_w_instruct_think_completed", + "completed": "@fields.task_gp_w_instruct_think_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_instruct.title" + } + }, + "story_id": "neg_instruct", + "completed_field": "task_gp_w_instruct_read_1_completed", + "completed": "@fields.task_gp_w_instruct_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_instruct.title" + } + }, + "story_id": "pos_instruct", + "completed_field": "task_gp_w_instruct_read_2_completed", + "completed": "@fields.task_gp_w_instruct_read_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_task_gs.json b/packages/app-data/sheets/data_list/generated/w_instruct_task_gs.json new file mode 100644 index 0000000000..f7ba09b1ec --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_task_gs.json @@ -0,0 +1,274 @@ +{ + "flow_name": "w_instruct_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_welcome_individual", + "completed_field": "task_gp_w_instruct_welcome_individual_completed", + "completed": "@fields.task_gp_w_instruct_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_care_together", + "completed_field": "task_gp_w_instruct_care_together_completed", + "completed": "@fields.task_gp_w_instruct_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_instruct_relax", + "completed_field": "task_gp_w_instruct_relax_completed", + "completed": "@fields.task_gp_w_instruct_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_instruct_reflect_together", + "completed_field": "task_gp_w_instruct_reflect_together_completed", + "completed": "@fields.task_gp_w_instruct_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_instruct_intro", + "completed_field": "task_gp_w_instruct_intro_completed", + "completed": "@fields.task_gp_w_instruct_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_instruct_tools_activity", + "completed_field": "task_gp_w_instruct_tools_activity_completed", + "completed": "@fields.task_gp_w_instruct_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_instruct_home_practice", + "completed_field": "task_gp_w_instruct_home_practice_completed", + "completed": "@fields.task_gp_w_instruct_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_instruct_ending", + "completed_field": "task_gp_w_instruct_ending_completed", + "completed": "@fields.task_gp_w_instruct_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_instruct_hp_review", + "completed_field": "task_gp_w_instruct_hp_review_completed", + "completed": "@fields.task_gp_w_instruct_hp_review_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_instruct_think_1_temp", + "completed_field": "task_gp_w_instruct_think_completed", + "completed": "@fields.task_gp_w_instruct_think_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_instruct.title" + } + }, + "story_id": "neg_instruct", + "completed_field": "task_gp_w_instruct_read_1_completed", + "completed": "@fields.task_gp_w_instruct_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_instruct.title" + } + }, + "story_id": "pos_instruct", + "completed_field": "task_gp_w_instruct_read_2_completed", + "completed": "@fields.task_gp_w_instruct_read_2_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_instruct_try", + "completed_field": "task_gp_w_instruct_try_completed", + "completed": "@fields.task_gp_w_instruct_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_instruct_task_gs_temp_1.json new file mode 100644 index 0000000000..1181eebbe8 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_task_gs_temp_1.json @@ -0,0 +1,248 @@ +{ + "flow_name": "w_instruct_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_instruct_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_instruct_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_instruct_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_instruct_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_instruct_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_instruct_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_instruct_hp_review" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_instruct_think_1_temp" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_instruct.title" + } + }, + "story_id": "neg_instruct" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_instruct.title" + } + }, + "story_id": "pos_instruct" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_instruct_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_tasks.json b/packages/app-data/sheets/data_list/generated/w_instruct_tasks.json new file mode 100644 index 0000000000..05b2e37790 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_tasks.json @@ -0,0 +1,166 @@ +{ + "flow_name": "w_instruct_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_instruct_welcome_individual", + "completed_field": "task_w_instruct_welcome_individual_completed", + "completed": "@fields.task_w_instruct_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_instruct_care_together", + "completed_field": "task_w_instruct_care_together_completed", + "completed": "@fields.task_w_instruct_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_instruct_relax", + "completed_field": "task_w_instruct_relax_completed", + "completed": "@fields.task_w_instruct_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_instruct_reflect_together", + "completed_field": "task_w_instruct_reflect_together_completed", + "completed": "@fields.task_w_instruct_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_instruct_intro", + "completed_field": "task_w_instruct_intro_completed", + "completed": "@fields.task_w_instruct_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_instruct_tools_activity", + "completed_field": "task_w_instruct_tools_activity_completed", + "completed": "@fields.task_w_instruct_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_instruct_home_practice", + "completed_field": "task_w_instruct_home_practice_completed", + "completed": "@fields.task_w_instruct_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_instruct_ending", + "completed_field": "task_w_instruct_ending_completed", + "completed": "@fields.task_w_instruct_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_instruct_hp_review", + "completed_field": "task_w_instruct_hp_review_completed", + "completed": "@fields.task_w_instruct_hp_review_completed" + }, + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_instruct_think_1_temp", + "completed_field": "task_w_instruct_think_completed", + "completed": "@fields.task_w_instruct_think_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_instruct_read_1", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_1_completed", + "completed": "@fields.task_w_instruct_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_instruct_question_1", + "rel_priority": 2, + "completed_field": "task_w_instruct_question_1_completed", + "completed": "@fields.task_w_instruct_question_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_instruct_talk_1", + "rel_priority": 3, + "completed_field": "task_w_instruct_talk_1_completed", + "completed": "@fields.task_w_instruct_talk_1_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_instruct_read_2", + "rel_priority": 1, + "completed_field": "task_w_instruct_read_2_completed", + "completed": "@fields.task_w_instruct_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_instruct_question_2", + "rel_priority": 2, + "completed_field": "task_w_instruct_question_2_completed", + "completed": "@fields.task_w_instruct_question_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_instruct_talk_2", + "rel_priority": 3, + "completed_field": "task_w_instruct_talk_2_completed", + "completed": "@fields.task_w_instruct_talk_2_completed" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_instruct_try", + "completed_field": "task_w_instruct_try_completed", + "completed": "@fields.task_w_instruct_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_instruct_tasks_temp_1.json new file mode 100644 index 0000000000..8e46d52723 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_tasks_temp_1.json @@ -0,0 +1,132 @@ +{ + "flow_name": "w_instruct_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_instruct_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_instruct_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_instruct_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_instruct_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_instruct_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_instruct_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_instruct_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_instruct_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_instruct_hp_review" + }, + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_instruct_think_1_temp" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_instruct_read_1", + "rel_priority": 1 + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_instruct_question_1", + "rel_priority": 2 + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_instruct_talk_1", + "rel_priority": 3 + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_instruct_read_2", + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_instruct_question_2", + "rel_priority": 2 + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_instruct_talk_2", + "rel_priority": 3 + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_instruct_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_instruct_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_instruct_tog_task_gs.json new file mode 100644 index 0000000000..75fb34bb67 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_instruct_tog_task_gs.json @@ -0,0 +1,253 @@ +{ + "flow_name": "w_instruct_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_instruct_care_together", + "completed_field": "task_gp_w_instruct_care_together_completed", + "completed": "@fields.task_gp_w_instruct_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_instruct_relax", + "completed_field": "task_gp_w_instruct_relax_completed", + "completed": "@fields.task_gp_w_instruct_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_instruct_reflect_together", + "completed_field": "task_gp_w_instruct_reflect_together_completed", + "completed": "@fields.task_gp_w_instruct_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_instruct_intro", + "completed_field": "task_gp_w_instruct_intro_completed", + "completed": "@fields.task_gp_w_instruct_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_instruct_tools_activity", + "completed_field": "task_gp_w_instruct_tools_activity_completed", + "completed": "@fields.task_gp_w_instruct_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_instruct_home_practice", + "completed_field": "task_gp_w_instruct_home_practice_completed", + "completed": "@fields.task_gp_w_instruct_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_instruct_ending", + "completed_field": "task_gp_w_instruct_ending_completed", + "completed": "@fields.task_gp_w_instruct_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_instruct_hp_review", + "completed_field": "task_gp_w_instruct_hp_review_completed", + "completed": "@fields.task_gp_w_instruct_hp_review_completed" + }, + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + }, + "template": "w_instruct_think_1_temp", + "completed_field": "task_gp_w_instruct_think_completed", + "completed": "@fields.task_gp_w_instruct_think_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_instruct.title" + } + }, + "story_id": "neg_instruct", + "completed_field": "task_gp_w_instruct_read_1_completed", + "completed": "@fields.task_gp_w_instruct_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_instruct.title" + } + }, + "story_id": "pos_instruct", + "completed_field": "task_gp_w_instruct_read_2_completed", + "completed": "@fields.task_gp_w_instruct_read_2_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_instruct_try", + "completed_field": "task_gp_w_instruct_try_completed", + "completed": "@fields.task_gp_w_instruct_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_money_common_task_gs.json new file mode 100644 index 0000000000..f769116d81 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_money_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_money_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_money_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_money_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_money_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_money_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_money_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_money_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_money_common_tasks.json new file mode 100644 index 0000000000..4f8d296936 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_money_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_money_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_money_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_money_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_money_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_money_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_money_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_money_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_money_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_money_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_money_ind_task_gs.json new file mode 100644 index 0000000000..3cf82fe93b --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_ind_task_gs.json @@ -0,0 +1,312 @@ +{ + "flow_name": "w_money_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_welcome_individual", + "completed_field": "task_gp_w_money_welcome_individual_completed", + "completed": "@fields.task_gp_w_money_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_money_relax", + "completed_field": "task_gp_w_money_relax_completed", + "completed": "@fields.task_gp_w_money_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_money_intro", + "completed_field": "task_gp_w_money_intro_completed", + "completed": "@fields.task_gp_w_money_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_money_tools_activity", + "completed_field": "task_gp_w_money_tools_activity_completed", + "completed": "@fields.task_gp_w_money_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_money_home_practice", + "completed_field": "task_gp_w_money_home_practice_completed", + "completed": "@fields.task_gp_w_money_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_money_ending", + "completed_field": "task_gp_w_money_ending_completed", + "completed": "@fields.task_gp_w_money_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_money_hp_review", + "completed_field": "task_gp_w_money_hp_review_completed", + "completed": "@fields.task_gp_w_money_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.money_problems.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_problems.title" + } + }, + "template": "w_money_read_1", + "story_id": "money_problems", + "completed_field": "task_gp_w_money_read_1_completed", + "completed": "@fields.task_gp_w_money_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Learn - Budget preparation", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Budget preparation" + } + }, + "template": "w_money_learn_1_temp", + "completed_field": "task_gp_w_money_learn_1_completed", + "completed": "@fields.task_gp_w_money_learn_1_completed" + }, + { + "id": "learn_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn - Step 1: Think", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 1: Think" + } + }, + "template": "w_money_learn_2_temp", + "completed_field": "task_gp_w_money_learn_2_completed", + "completed": "@fields.task_gp_w_money_learn_2_completed" + }, + { + "id": "learn_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Learn - Step 2: Choose", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 2: Choose" + } + }, + "template": "w_money_learn_3_temp", + "completed_field": "task_gp_w_money_learn_3_completed", + "completed": "@fields.task_gp_w_money_learn_3_completed" + }, + { + "id": "learn_4", + "individual": true, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn - Step 3: Build", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 3: Build" + } + }, + "template": "w_money_learn_4_temp", + "completed_field": "task_gp_w_money_learn_4_completed", + "completed": "@fields.task_gp_w_money_learn_4_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 16, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_plan.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_plan.title" + } + }, + "story_id": "money_plan", + "completed_field": "task_gp_w_money_read_2_completed", + "completed": "@fields.task_gp_w_money_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 18, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_emergencies.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_emergencies.title" + } + }, + "story_id": "money_emergencies", + "completed_field": "task_gp_w_money_read_3_completed", + "completed": "@fields.task_gp_w_money_read_3_completed" + }, + { + "id": "learn_5", + "individual": true, + "together": true, + "priority": 21, + "has_single_task": true, + "title": "Learn - Step 4: Plan", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 4: Plan" + } + }, + "template": "w_money_learn_5_temp", + "completed_field": "task_gp_w_money_learn_5_completed", + "completed": "@fields.task_gp_w_money_learn_5_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_task_gs.json b/packages/app-data/sheets/data_list/generated/w_money_task_gs.json new file mode 100644 index 0000000000..0b20ad4a73 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_task_gs.json @@ -0,0 +1,352 @@ +{ + "flow_name": "w_money_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_welcome_individual", + "completed_field": "task_gp_w_money_welcome_individual_completed", + "completed": "@fields.task_gp_w_money_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_care_together", + "completed_field": "task_gp_w_money_care_together_completed", + "completed": "@fields.task_gp_w_money_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_money_relax", + "completed_field": "task_gp_w_money_relax_completed", + "completed": "@fields.task_gp_w_money_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_money_reflect_together", + "completed_field": "task_gp_w_money_reflect_together_completed", + "completed": "@fields.task_gp_w_money_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_money_intro", + "completed_field": "task_gp_w_money_intro_completed", + "completed": "@fields.task_gp_w_money_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_money_tools_activity", + "completed_field": "task_gp_w_money_tools_activity_completed", + "completed": "@fields.task_gp_w_money_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_money_home_practice", + "completed_field": "task_gp_w_money_home_practice_completed", + "completed": "@fields.task_gp_w_money_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_money_ending", + "completed_field": "task_gp_w_money_ending_completed", + "completed": "@fields.task_gp_w_money_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_money_hp_review", + "completed_field": "task_gp_w_money_hp_review_completed", + "completed": "@fields.task_gp_w_money_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.money_problems.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_problems.title" + } + }, + "template": "w_money_read_1", + "story_id": "money_problems", + "completed_field": "task_gp_w_money_read_1_completed", + "completed": "@fields.task_gp_w_money_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Learn - Budget preparation", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Budget preparation" + } + }, + "template": "w_money_learn_1_temp", + "completed_field": "task_gp_w_money_learn_1_completed", + "completed": "@fields.task_gp_w_money_learn_1_completed" + }, + { + "id": "learn_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn - Step 1: Think", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 1: Think" + } + }, + "template": "w_money_learn_2_temp", + "completed_field": "task_gp_w_money_learn_2_completed", + "completed": "@fields.task_gp_w_money_learn_2_completed" + }, + { + "id": "learn_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Learn - Step 2: Choose", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 2: Choose" + } + }, + "template": "w_money_learn_3_temp", + "completed_field": "task_gp_w_money_learn_3_completed", + "completed": "@fields.task_gp_w_money_learn_3_completed" + }, + { + "id": "learn_4", + "individual": true, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn - Step 3: Build", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 3: Build" + } + }, + "template": "w_money_learn_4_temp", + "completed_field": "task_gp_w_money_learn_4_completed", + "completed": "@fields.task_gp_w_money_learn_4_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 16, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_plan.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_plan.title" + } + }, + "story_id": "money_plan", + "completed_field": "task_gp_w_money_read_2_completed", + "completed": "@fields.task_gp_w_money_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 18, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_emergencies.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_emergencies.title" + } + }, + "story_id": "money_emergencies", + "completed_field": "task_gp_w_money_read_3_completed", + "completed": "@fields.task_gp_w_money_read_3_completed" + }, + { + "id": "learn_5", + "individual": true, + "together": true, + "priority": 21, + "has_single_task": true, + "title": "Learn - Step 4: Plan", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 4: Plan" + } + }, + "template": "w_money_learn_5_temp", + "completed_field": "task_gp_w_money_learn_5_completed", + "completed": "@fields.task_gp_w_money_learn_5_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_money_task_gs_temp_1.json new file mode 100644 index 0000000000..42fd0d8696 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_task_gs_temp_1.json @@ -0,0 +1,318 @@ +{ + "flow_name": "w_money_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_money_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_money_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_money_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_money_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_money_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_money_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_money_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.money_problems.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_problems.title" + } + }, + "template": "w_money_read_1", + "story_id": "money_problems" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Learn - Budget preparation", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Budget preparation" + } + }, + "template": "w_money_learn_1_temp" + }, + { + "id": "learn_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn - Step 1: Think", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 1: Think" + } + }, + "template": "w_money_learn_2_temp" + }, + { + "id": "learn_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Learn - Step 2: Choose", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 2: Choose" + } + }, + "template": "w_money_learn_3_temp" + }, + { + "id": "learn_4", + "individual": true, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn - Step 3: Build", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 3: Build" + } + }, + "template": "w_money_learn_4_temp" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 16, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_plan.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_plan.title" + } + }, + "story_id": "money_plan" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 18, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_emergencies.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_emergencies.title" + } + }, + "story_id": "money_emergencies" + }, + { + "id": "learn_5", + "individual": true, + "together": true, + "priority": 21, + "has_single_task": true, + "title": "Learn - Step 4: Plan", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 4: Plan" + } + }, + "template": "w_money_learn_5_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_tasks.json b/packages/app-data/sheets/data_list/generated/w_money_tasks.json new file mode 100644 index 0000000000..e76fb66f70 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_tasks.json @@ -0,0 +1,222 @@ +{ + "flow_name": "w_money_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_money_welcome_individual", + "completed_field": "task_w_money_welcome_individual_completed", + "completed": "@fields.task_w_money_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_money_care_together", + "completed_field": "task_w_money_care_together_completed", + "completed": "@fields.task_w_money_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_money_relax", + "completed_field": "task_w_money_relax_completed", + "completed": "@fields.task_w_money_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_money_reflect_together", + "completed_field": "task_w_money_reflect_together_completed", + "completed": "@fields.task_w_money_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_money_intro", + "completed_field": "task_w_money_intro_completed", + "completed": "@fields.task_w_money_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_money_tools_activity", + "completed_field": "task_w_money_tools_activity_completed", + "completed": "@fields.task_w_money_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_money_home_practice", + "completed_field": "task_w_money_home_practice_completed", + "completed": "@fields.task_w_money_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_money_ending", + "completed_field": "task_w_money_ending_completed", + "completed": "@fields.task_w_money_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_money_hp_review", + "completed_field": "task_w_money_hp_review_completed", + "completed": "@fields.task_w_money_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_money_read_1", + "completed_field": "task_w_money_read_1_completed", + "completed": "@fields.task_w_money_read_1_completed" + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_money_learn_1_temp", + "completed_field": "task_w_money_learn_1_completed", + "completed": "@fields.task_w_money_learn_1_completed" + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": true, + "template": "w_money_learn_2_temp", + "completed_field": "task_w_money_learn_2_completed", + "completed": "@fields.task_w_money_learn_2_completed" + }, + { + "id": "learn_3", + "group": "learn_3", + "individual": true, + "together": true, + "template": "w_money_learn_3_temp", + "completed_field": "task_w_money_learn_3_completed", + "completed": "@fields.task_w_money_learn_3_completed" + }, + { + "id": "learn_4", + "group": "learn_4", + "individual": true, + "together": true, + "template": "w_money_learn_4_temp", + "completed_field": "task_w_money_learn_4_completed", + "completed": "@fields.task_w_money_learn_4_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_money_read_2", + "rel_priority": 1, + "completed_field": "task_w_money_read_2_completed", + "completed": "@fields.task_w_money_read_2_completed" + }, + { + "id": "question_1", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_money_tq_1", + "rel_priority": 2, + "completed_field": "task_w_money_question_1_completed", + "completed": "@fields.task_w_money_question_1_completed" + }, + { + "id": "talk_1", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_money_tq_1", + "rel_priority": 3, + "completed_field": "task_w_money_talk_1_completed", + "completed": "@fields.task_w_money_talk_1_completed" + }, + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_money_read_3", + "rel_priority": 1, + "completed_field": "task_w_money_read_3_completed", + "completed": "@fields.task_w_money_read_3_completed" + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_2", + "rel_priority": 2, + "completed_field": "task_w_money_question_2_completed", + "completed": "@fields.task_w_money_question_2_completed" + }, + { + "id": "talk_2", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_2", + "rel_priority": 3, + "completed_field": "task_w_money_talk_2_completed", + "completed": "@fields.task_w_money_talk_2_completed" + }, + { + "id": "question_3", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_3", + "rel_priority": 4, + "completed_field": "task_w_money_question_3_completed", + "completed": "@fields.task_w_money_question_3_completed" + }, + { + "id": "talk_3", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_3", + "rel_priority": 5, + "completed_field": "task_w_money_talk_3_completed", + "completed": "@fields.task_w_money_talk_3_completed" + }, + { + "id": "learn_5", + "group": "learn_5", + "individual": true, + "together": true, + "template": "w_money_learn_5_temp", + "completed_field": "task_w_money_learn_5_completed", + "completed": "@fields.task_w_money_learn_5_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_money_tasks_temp_1.json new file mode 100644 index 0000000000..316574e23e --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_tasks_temp_1.json @@ -0,0 +1,176 @@ +{ + "flow_name": "w_money_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_money_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_money_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_money_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_money_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_money_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_money_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_money_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_money_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_money_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_money_read_1" + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_money_learn_1_temp" + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": true, + "template": "w_money_learn_2_temp" + }, + { + "id": "learn_3", + "group": "learn_3", + "individual": true, + "together": true, + "template": "w_money_learn_3_temp" + }, + { + "id": "learn_4", + "group": "learn_4", + "individual": true, + "together": true, + "template": "w_money_learn_4_temp" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_money_read_2", + "rel_priority": 1 + }, + { + "id": "question_1", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_money_tq_1", + "rel_priority": 2 + }, + { + "id": "talk_1", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_money_tq_1", + "rel_priority": 3 + }, + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_money_read_3", + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_2", + "rel_priority": 2 + }, + { + "id": "talk_2", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_2", + "rel_priority": 3 + }, + { + "id": "question_3", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_money_tq_3", + "rel_priority": 4 + }, + { + "id": "talk_3", + "group": "read_3", + "individual": false, + "together": true, + "template": "w_money_tq_3", + "rel_priority": 5 + }, + { + "id": "learn_5", + "group": "learn_5", + "individual": true, + "together": true, + "template": "w_money_learn_5_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_money_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_money_tog_task_gs.json new file mode 100644 index 0000000000..6fb818fd59 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_money_tog_task_gs.json @@ -0,0 +1,331 @@ +{ + "flow_name": "w_money_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_money_care_together", + "completed_field": "task_gp_w_money_care_together_completed", + "completed": "@fields.task_gp_w_money_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_money_relax", + "completed_field": "task_gp_w_money_relax_completed", + "completed": "@fields.task_gp_w_money_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_money_reflect_together", + "completed_field": "task_gp_w_money_reflect_together_completed", + "completed": "@fields.task_gp_w_money_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_money_intro", + "completed_field": "task_gp_w_money_intro_completed", + "completed": "@fields.task_gp_w_money_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_money_tools_activity", + "completed_field": "task_gp_w_money_tools_activity_completed", + "completed": "@fields.task_gp_w_money_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_money_home_practice", + "completed_field": "task_gp_w_money_home_practice_completed", + "completed": "@fields.task_gp_w_money_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_money_ending", + "completed_field": "task_gp_w_money_ending_completed", + "completed": "@fields.task_gp_w_money_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_money_hp_review", + "completed_field": "task_gp_w_money_hp_review_completed", + "completed": "@fields.task_gp_w_money_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.money_problems.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_problems.title" + } + }, + "template": "w_money_read_1", + "story_id": "money_problems", + "completed_field": "task_gp_w_money_read_1_completed", + "completed": "@fields.task_gp_w_money_read_1_completed" + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Learn - Budget preparation", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Budget preparation" + } + }, + "template": "w_money_learn_1_temp", + "completed_field": "task_gp_w_money_learn_1_completed", + "completed": "@fields.task_gp_w_money_learn_1_completed" + }, + { + "id": "learn_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Learn - Step 1: Think", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 1: Think" + } + }, + "template": "w_money_learn_2_temp", + "completed_field": "task_gp_w_money_learn_2_completed", + "completed": "@fields.task_gp_w_money_learn_2_completed" + }, + { + "id": "learn_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": true, + "title": "Learn - Step 2: Choose", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 2: Choose" + } + }, + "template": "w_money_learn_3_temp", + "completed_field": "task_gp_w_money_learn_3_completed", + "completed": "@fields.task_gp_w_money_learn_3_completed" + }, + { + "id": "learn_4", + "individual": true, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn - Step 3: Build", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 3: Build" + } + }, + "template": "w_money_learn_4_temp", + "completed_field": "task_gp_w_money_learn_4_completed", + "completed": "@fields.task_gp_w_money_learn_4_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 16, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_plan.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_plan.title" + } + }, + "story_id": "money_plan", + "completed_field": "task_gp_w_money_read_2_completed", + "completed": "@fields.task_gp_w_money_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 18, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_emergencies.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_emergencies.title" + } + }, + "story_id": "money_emergencies", + "completed_field": "task_gp_w_money_read_3_completed", + "completed": "@fields.task_gp_w_money_read_3_completed" + }, + { + "id": "learn_5", + "individual": true, + "together": true, + "priority": 21, + "has_single_task": true, + "title": "Learn - Step 4: Plan", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 4: Plan" + } + }, + "template": "w_money_learn_5_temp", + "completed_field": "task_gp_w_money_learn_5_completed", + "completed": "@fields.task_gp_w_money_learn_5_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_praise_common_task_gs.json new file mode 100644 index 0000000000..47fd368398 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_praise_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_praise_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_praise_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_praise_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_praise_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_praise_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_praise_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_praise_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_praise_common_tasks.json new file mode 100644 index 0000000000..455f6807b4 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_praise_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_praise_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_praise_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_praise_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_praise_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_praise_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_praise_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_praise_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_praise_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_praise_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_praise_ind_task_gs.json new file mode 100644 index 0000000000..b15580ebc6 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_ind_task_gs.json @@ -0,0 +1,189 @@ +{ + "flow_name": "w_praise_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_welcome_individual", + "completed_field": "task_gp_w_praise_welcome_individual_completed", + "completed": "@fields.task_gp_w_praise_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_praise_relax", + "completed_field": "task_gp_w_praise_relax_completed", + "completed": "@fields.task_gp_w_praise_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_praise_intro", + "completed_field": "task_gp_w_praise_intro_completed", + "completed": "@fields.task_gp_w_praise_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_praise_tools_activity", + "completed_field": "task_gp_w_praise_tools_activity_completed", + "completed": "@fields.task_gp_w_praise_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_praise_home_practice", + "completed_field": "task_gp_w_praise_home_practice_completed", + "completed": "@fields.task_gp_w_praise_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_praise_ending", + "completed_field": "task_gp_w_praise_ending_completed", + "completed": "@fields.task_gp_w_praise_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_praise_hp_review", + "completed_field": "task_gp_w_praise_hp_review_completed", + "completed": "@fields.task_gp_w_praise_hp_review_completed" + }, + { + "id": "question_1", + "individual": true, + "together": false, + "priority": 11, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_praise_question_1", + "completed_field": "task_gp_w_praise_question_1_completed", + "completed": "@fields.task_gp_w_praise_question_1_completed" + }, + { + "id": "read", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.praise.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.praise.title" + } + }, + "story_id": "praise", + "completed_field": "task_gp_w_praise_read_completed", + "completed": "@fields.task_gp_w_praise_read_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_task_gs.json b/packages/app-data/sheets/data_list/generated/w_praise_task_gs.json new file mode 100644 index 0000000000..b54ac16184 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_task_gs.json @@ -0,0 +1,276 @@ +{ + "flow_name": "w_praise_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_welcome_individual", + "completed_field": "task_gp_w_praise_welcome_individual_completed", + "completed": "@fields.task_gp_w_praise_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_care_together", + "completed_field": "task_gp_w_praise_care_together_completed", + "completed": "@fields.task_gp_w_praise_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_praise_relax", + "completed_field": "task_gp_w_praise_relax_completed", + "completed": "@fields.task_gp_w_praise_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_praise_reflect_together", + "completed_field": "task_gp_w_praise_reflect_together_completed", + "completed": "@fields.task_gp_w_praise_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_praise_intro", + "completed_field": "task_gp_w_praise_intro_completed", + "completed": "@fields.task_gp_w_praise_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_praise_tools_activity", + "completed_field": "task_gp_w_praise_tools_activity_completed", + "completed": "@fields.task_gp_w_praise_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_praise_home_practice", + "completed_field": "task_gp_w_praise_home_practice_completed", + "completed": "@fields.task_gp_w_praise_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_praise_ending", + "completed_field": "task_gp_w_praise_ending_completed", + "completed": "@fields.task_gp_w_praise_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_praise_hp_review", + "completed_field": "task_gp_w_praise_hp_review_completed", + "completed": "@fields.task_gp_w_praise_hp_review_completed" + }, + { + "id": "question_1", + "individual": true, + "together": false, + "priority": 11, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_praise_question_1", + "completed_field": "task_gp_w_praise_question_1_completed", + "completed": "@fields.task_gp_w_praise_question_1_completed" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_praise_talk_1", + "completed_field": "task_gp_w_praise_talk_1_completed", + "completed": "@fields.task_gp_w_praise_talk_1_completed" + }, + { + "id": "read", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.praise.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.praise.title" + } + }, + "story_id": "praise", + "completed_field": "task_gp_w_praise_read_completed", + "completed": "@fields.task_gp_w_praise_read_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_praise_try", + "completed_field": "task_gp_w_praise_try_completed", + "completed": "@fields.task_gp_w_praise_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_praise_task_gs_temp_1.json new file mode 100644 index 0000000000..d77f705e57 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_task_gs_temp_1.json @@ -0,0 +1,250 @@ +{ + "flow_name": "w_praise_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_praise_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_praise_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_praise_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_praise_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_praise_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_praise_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_praise_hp_review" + }, + { + "id": "question_1", + "individual": true, + "together": false, + "priority": 11, + "has_single_task": true, + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + }, + "template": "w_praise_question_1" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_praise_talk_1" + }, + { + "id": "read", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.praise.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.praise.title" + } + }, + "story_id": "praise" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_praise_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_tasks.json b/packages/app-data/sheets/data_list/generated/w_praise_tasks.json new file mode 100644 index 0000000000..7020321329 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_tasks.json @@ -0,0 +1,151 @@ +{ + "flow_name": "w_praise_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_praise_welcome_individual", + "completed_field": "task_w_praise_welcome_individual_completed", + "completed": "@fields.task_w_praise_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_praise_care_together", + "completed_field": "task_w_praise_care_together_completed", + "completed": "@fields.task_w_praise_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_praise_relax", + "completed_field": "task_w_praise_relax_completed", + "completed": "@fields.task_w_praise_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_praise_reflect_together", + "completed_field": "task_w_praise_reflect_together_completed", + "completed": "@fields.task_w_praise_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_praise_intro", + "completed_field": "task_w_praise_intro_completed", + "completed": "@fields.task_w_praise_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_praise_tools_activity", + "completed_field": "task_w_praise_tools_activity_completed", + "completed": "@fields.task_w_praise_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_praise_home_practice", + "completed_field": "task_w_praise_home_practice_completed", + "completed": "@fields.task_w_praise_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_praise_ending", + "completed_field": "task_w_praise_ending_completed", + "completed": "@fields.task_w_praise_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_praise_hp_review", + "completed_field": "task_w_praise_hp_review_completed", + "completed": "@fields.task_w_praise_hp_review_completed" + }, + { + "id": "question_1", + "group": "question_1", + "individual": true, + "together": false, + "template": "w_praise_question_1", + "priority": 11, + "completed_field": "task_w_praise_question_1_completed", + "completed": "@fields.task_w_praise_question_1_completed" + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "template": "w_praise_talk_1", + "priority": 11, + "completed_field": "task_w_praise_talk_1_completed", + "completed": "@fields.task_w_praise_talk_1_completed" + }, + { + "id": "read", + "group": "read", + "individual": true, + "together": true, + "template": "w_praise_read", + "priority": 12, + "rel_priority": 1, + "completed_field": "task_w_praise_read_completed", + "completed": "@fields.task_w_praise_read_completed" + }, + { + "id": "question_2", + "group": "read", + "individual": true, + "together": false, + "template": "w_praise_question_2", + "priority": 13, + "rel_priority": 2, + "completed_field": "task_w_praise_question_2_completed", + "completed": "@fields.task_w_praise_question_2_completed" + }, + { + "id": "talk_2", + "group": "read", + "individual": false, + "together": true, + "template": "w_praise_talk_2", + "priority": 13, + "rel_priority": 3, + "completed_field": "task_w_praise_talk_2_completed", + "completed": "@fields.task_w_praise_talk_2_completed" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_praise_try", + "priority": 71, + "completed_field": "task_w_praise_try_completed", + "completed": "@fields.task_w_praise_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_praise_tasks_temp_1.json new file mode 100644 index 0000000000..e5d340bc6d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_tasks_temp_1.json @@ -0,0 +1,121 @@ +{ + "flow_name": "w_praise_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_praise_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_praise_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_praise_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_praise_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_praise_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_praise_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_praise_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_praise_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_praise_hp_review" + }, + { + "id": "question_1", + "group": "question_1", + "individual": true, + "together": false, + "template": "w_praise_question_1", + "priority": 11 + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "template": "w_praise_talk_1", + "priority": 11 + }, + { + "id": "read", + "group": "read", + "individual": true, + "together": true, + "template": "w_praise_read", + "priority": 12, + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read", + "individual": true, + "together": false, + "template": "w_praise_question_2", + "priority": 13, + "rel_priority": 2 + }, + { + "id": "talk_2", + "group": "read", + "individual": false, + "together": true, + "template": "w_praise_talk_2", + "priority": 13, + "rel_priority": 3 + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_praise_try", + "priority": 71 + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_praise_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_praise_tog_task_gs.json new file mode 100644 index 0000000000..1f0ae43ebe --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_praise_tog_task_gs.json @@ -0,0 +1,234 @@ +{ + "flow_name": "w_praise_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_praise_care_together", + "completed_field": "task_gp_w_praise_care_together_completed", + "completed": "@fields.task_gp_w_praise_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_praise_relax", + "completed_field": "task_gp_w_praise_relax_completed", + "completed": "@fields.task_gp_w_praise_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_praise_reflect_together", + "completed_field": "task_gp_w_praise_reflect_together_completed", + "completed": "@fields.task_gp_w_praise_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_praise_intro", + "completed_field": "task_gp_w_praise_intro_completed", + "completed": "@fields.task_gp_w_praise_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_praise_tools_activity", + "completed_field": "task_gp_w_praise_tools_activity_completed", + "completed": "@fields.task_gp_w_praise_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_praise_home_practice", + "completed_field": "task_gp_w_praise_home_practice_completed", + "completed": "@fields.task_gp_w_praise_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_praise_ending", + "completed_field": "task_gp_w_praise_ending_completed", + "completed": "@fields.task_gp_w_praise_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_praise_hp_review", + "completed_field": "task_gp_w_praise_hp_review_completed", + "completed": "@fields.task_gp_w_praise_hp_review_completed" + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + }, + "template": "w_praise_talk_1", + "completed_field": "task_gp_w_praise_talk_1_completed", + "completed": "@fields.task_gp_w_praise_talk_1_completed" + }, + { + "id": "read", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.praise.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.praise.title" + } + }, + "story_id": "praise", + "completed_field": "task_gp_w_praise_read_completed", + "completed": "@fields.task_gp_w_praise_read_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_praise_try", + "completed_field": "task_gp_w_praise_try_completed", + "completed": "@fields.task_gp_w_praise_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_rules_common_task_gs.json new file mode 100644 index 0000000000..16ceb679ed --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_rules_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_rules_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_rules_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_rules_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_rules_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_rules_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_rules_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_rules_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_rules_common_tasks.json new file mode 100644 index 0000000000..24bbbed3ed --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_rules_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_rules_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_rules_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_rules_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_rules_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_rules_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_rules_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_rules_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_rules_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_rules_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_rules_ind_task_gs.json new file mode 100644 index 0000000000..842493f724 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_ind_task_gs.json @@ -0,0 +1,214 @@ +{ + "flow_name": "w_rules_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_welcome_individual", + "completed_field": "task_gp_w_rules_welcome_individual_completed", + "completed": "@fields.task_gp_w_rules_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_rules_relax", + "completed_field": "task_gp_w_rules_relax_completed", + "completed": "@fields.task_gp_w_rules_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_rules_intro", + "completed_field": "task_gp_w_rules_intro_completed", + "completed": "@fields.task_gp_w_rules_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_rules_tools_activity", + "completed_field": "task_gp_w_rules_tools_activity_completed", + "completed": "@fields.task_gp_w_rules_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_rules_home_practice", + "completed_field": "task_gp_w_rules_home_practice_completed", + "completed": "@fields.task_gp_w_rules_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_rules_ending", + "completed_field": "task_gp_w_rules_ending_completed", + "completed": "@fields.task_gp_w_rules_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_rules_hp_review", + "completed_field": "task_gp_w_rules_hp_review_completed", + "completed": "@fields.task_gp_w_rules_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.make_rule.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.make_rule.title" + } + }, + "story_id": "make_rule", + "completed_field": "task_gp_w_rules_read_1_completed", + "completed": "@fields.task_gp_w_rules_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.online_safety.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_safety.title" + } + }, + "template": "w_rules_read_2", + "story_id": "online_safety", + "completed_field": "task_gp_w_rules_read_2_completed", + "completed": "@fields.task_gp_w_rules_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": false, + "priority": 72, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_rules_learn_temp", + "completed_field": "task_gp_w_rules_learn_completed", + "completed": "@fields.task_gp_w_rules_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_task_gs.json b/packages/app-data/sheets/data_list/generated/w_rules_task_gs.json new file mode 100644 index 0000000000..a0d43d5561 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_task_gs.json @@ -0,0 +1,275 @@ +{ + "flow_name": "w_rules_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_welcome_individual", + "completed_field": "task_gp_w_rules_welcome_individual_completed", + "completed": "@fields.task_gp_w_rules_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_care_together", + "completed_field": "task_gp_w_rules_care_together_completed", + "completed": "@fields.task_gp_w_rules_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_rules_relax", + "completed_field": "task_gp_w_rules_relax_completed", + "completed": "@fields.task_gp_w_rules_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_rules_reflect_together", + "completed_field": "task_gp_w_rules_reflect_together_completed", + "completed": "@fields.task_gp_w_rules_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_rules_intro", + "completed_field": "task_gp_w_rules_intro_completed", + "completed": "@fields.task_gp_w_rules_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_rules_tools_activity", + "completed_field": "task_gp_w_rules_tools_activity_completed", + "completed": "@fields.task_gp_w_rules_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_rules_home_practice", + "completed_field": "task_gp_w_rules_home_practice_completed", + "completed": "@fields.task_gp_w_rules_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_rules_ending", + "completed_field": "task_gp_w_rules_ending_completed", + "completed": "@fields.task_gp_w_rules_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_rules_hp_review", + "completed_field": "task_gp_w_rules_hp_review_completed", + "completed": "@fields.task_gp_w_rules_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.make_rule.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.make_rule.title" + } + }, + "story_id": "make_rule", + "completed_field": "task_gp_w_rules_read_1_completed", + "completed": "@fields.task_gp_w_rules_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.online_safety.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_safety.title" + } + }, + "template": "w_rules_read_2", + "story_id": "online_safety", + "completed_field": "task_gp_w_rules_read_2_completed", + "completed": "@fields.task_gp_w_rules_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": false, + "priority": 72, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_rules_learn_temp", + "completed_field": "task_gp_w_rules_learn_completed", + "completed": "@fields.task_gp_w_rules_learn_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 73, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_rules_try", + "completed_field": "task_gp_w_rules_try_completed", + "completed": "@fields.task_gp_w_rules_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_rules_task_gs_temp_1.json new file mode 100644 index 0000000000..6fabe2ea81 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_task_gs_temp_1.json @@ -0,0 +1,249 @@ +{ + "flow_name": "w_rules_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_rules_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_rules_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_rules_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_rules_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_rules_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_rules_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_rules_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.make_rule.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.make_rule.title" + } + }, + "story_id": "make_rule" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.online_safety.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_safety.title" + } + }, + "template": "w_rules_read_2", + "story_id": "online_safety" + }, + { + "id": "learn", + "individual": true, + "together": false, + "priority": 72, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_rules_learn_temp" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 73, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_rules_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_tasks.json b/packages/app-data/sheets/data_list/generated/w_rules_tasks.json new file mode 100644 index 0000000000..be745c5bfd --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_tasks.json @@ -0,0 +1,145 @@ +{ + "flow_name": "w_rules_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_rules_welcome_individual", + "completed_field": "task_w_rules_welcome_individual_completed", + "completed": "@fields.task_w_rules_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_rules_care_together", + "completed_field": "task_w_rules_care_together_completed", + "completed": "@fields.task_w_rules_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_rules_relax", + "completed_field": "task_w_rules_relax_completed", + "completed": "@fields.task_w_rules_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_rules_reflect_together", + "completed_field": "task_w_rules_reflect_together_completed", + "completed": "@fields.task_w_rules_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_rules_intro", + "completed_field": "task_w_rules_intro_completed", + "completed": "@fields.task_w_rules_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_rules_tools_activity", + "completed_field": "task_w_rules_tools_activity_completed", + "completed": "@fields.task_w_rules_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_rules_home_practice", + "completed_field": "task_w_rules_home_practice_completed", + "completed": "@fields.task_w_rules_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_rules_ending", + "completed_field": "task_w_rules_ending_completed", + "completed": "@fields.task_w_rules_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_rules_hp_review", + "completed_field": "task_w_rules_hp_review_completed", + "completed": "@fields.task_w_rules_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_rules_read_1", + "rel_priority": 1, + "completed_field": "task_w_rules_read_1_completed", + "completed": "@fields.task_w_rules_read_1_completed" + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_rules_question", + "rel_priority": 2, + "completed_field": "task_w_rules_question_completed", + "completed": "@fields.task_w_rules_question_completed" + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_rules_talk", + "rel_priority": 3, + "completed_field": "task_w_rules_talk_completed", + "completed": "@fields.task_w_rules_talk_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_rules_read_2", + "completed_field": "task_w_rules_read_2_completed", + "completed": "@fields.task_w_rules_read_2_completed" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": false, + "template": "w_rules_learn_temp", + "completed_field": "task_w_rules_learn_completed", + "completed": "@fields.task_w_rules_learn_completed" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_rules_try", + "completed_field": "task_w_rules_try_completed", + "completed": "@fields.task_w_rules_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_rules_tasks_temp_1.json new file mode 100644 index 0000000000..85f0707543 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_tasks_temp_1.json @@ -0,0 +1,115 @@ +{ + "flow_name": "w_rules_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_rules_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_rules_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_rules_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_rules_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_rules_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_rules_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_rules_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_rules_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_rules_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_rules_read_1", + "rel_priority": 1 + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_rules_question", + "rel_priority": 2 + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_rules_talk", + "rel_priority": 3 + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_rules_read_2" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": false, + "template": "w_rules_learn_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_rules_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_rules_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_rules_tog_task_gs.json new file mode 100644 index 0000000000..7b1134ca1f --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_rules_tog_task_gs.json @@ -0,0 +1,228 @@ +{ + "flow_name": "w_rules_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_rules_care_together", + "completed_field": "task_gp_w_rules_care_together_completed", + "completed": "@fields.task_gp_w_rules_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_rules_relax", + "completed_field": "task_gp_w_rules_relax_completed", + "completed": "@fields.task_gp_w_rules_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_rules_reflect_together", + "completed_field": "task_gp_w_rules_reflect_together_completed", + "completed": "@fields.task_gp_w_rules_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_rules_intro", + "completed_field": "task_gp_w_rules_intro_completed", + "completed": "@fields.task_gp_w_rules_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_rules_tools_activity", + "completed_field": "task_gp_w_rules_tools_activity_completed", + "completed": "@fields.task_gp_w_rules_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_rules_home_practice", + "completed_field": "task_gp_w_rules_home_practice_completed", + "completed": "@fields.task_gp_w_rules_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_rules_ending", + "completed_field": "task_gp_w_rules_ending_completed", + "completed": "@fields.task_gp_w_rules_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_rules_hp_review", + "completed_field": "task_gp_w_rules_hp_review_completed", + "completed": "@fields.task_gp_w_rules_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.make_rule.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.make_rule.title" + } + }, + "story_id": "make_rule", + "completed_field": "task_gp_w_rules_read_1_completed", + "completed": "@fields.task_gp_w_rules_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.online_safety.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_safety.title" + } + }, + "template": "w_rules_read_2", + "story_id": "online_safety", + "completed_field": "task_gp_w_rules_read_2_completed", + "completed": "@fields.task_gp_w_rules_read_2_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 73, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_rules_try", + "completed_field": "task_gp_w_rules_try_completed", + "completed": "@fields.task_gp_w_rules_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_safe_common_task_gs.json new file mode 100644 index 0000000000..657a01ef41 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_safe_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_safe_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_safe_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_safe_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_safe_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_safe_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_safe_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_safe_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_safe_common_tasks.json new file mode 100644 index 0000000000..80a705a985 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_safe_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_safe_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_safe_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_safe_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_safe_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_safe_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_safe_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_safe_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_safe_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_safe_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_safe_ind_task_gs.json new file mode 100644 index 0000000000..360fa29f22 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_ind_task_gs.json @@ -0,0 +1,213 @@ +{ + "flow_name": "w_safe_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_welcome_individual", + "completed_field": "task_gp_w_safe_welcome_individual_completed", + "completed": "@fields.task_gp_w_safe_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_safe_relax", + "completed_field": "task_gp_w_safe_relax_completed", + "completed": "@fields.task_gp_w_safe_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_safe_intro", + "completed_field": "task_gp_w_safe_intro_completed", + "completed": "@fields.task_gp_w_safe_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_safe_tools_activity", + "completed_field": "task_gp_w_safe_tools_activity_completed", + "completed": "@fields.task_gp_w_safe_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_safe_home_practice", + "completed_field": "task_gp_w_safe_home_practice_completed", + "completed": "@fields.task_gp_w_safe_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_safe_ending", + "completed_field": "task_gp_w_safe_ending_completed", + "completed": "@fields.task_gp_w_safe_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_safe_hp_review", + "completed_field": "task_gp_w_safe_hp_review_completed", + "completed": "@fields.task_gp_w_safe_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.sugar_daddy.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.sugar_daddy.title" + } + }, + "story_id": "sugar_daddy", + "completed_field": "task_gp_w_safe_read_1_completed", + "completed": "@fields.task_gp_w_safe_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.online_contact.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_contact.title" + } + }, + "story_id": "online_contact", + "completed_field": "task_gp_w_safe_read_2_completed", + "completed": "@fields.task_gp_w_safe_read_2_completed" + }, + { + "id": "learn_ind", + "individual": true, + "together": false, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_individual_temp", + "completed_field": "task_gp_w_safe_learn_ind_completed", + "completed": "@fields.task_gp_w_safe_learn_ind_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_task_gs.json b/packages/app-data/sheets/data_list/generated/w_safe_task_gs.json new file mode 100644 index 0000000000..cfd28e0da7 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_task_gs.json @@ -0,0 +1,279 @@ +{ + "flow_name": "w_safe_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_welcome_individual", + "completed_field": "task_gp_w_safe_welcome_individual_completed", + "completed": "@fields.task_gp_w_safe_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_care_together", + "completed_field": "task_gp_w_safe_care_together_completed", + "completed": "@fields.task_gp_w_safe_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_safe_relax", + "completed_field": "task_gp_w_safe_relax_completed", + "completed": "@fields.task_gp_w_safe_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_safe_reflect_together", + "completed_field": "task_gp_w_safe_reflect_together_completed", + "completed": "@fields.task_gp_w_safe_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_safe_intro", + "completed_field": "task_gp_w_safe_intro_completed", + "completed": "@fields.task_gp_w_safe_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_safe_tools_activity", + "completed_field": "task_gp_w_safe_tools_activity_completed", + "completed": "@fields.task_gp_w_safe_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_safe_home_practice", + "completed_field": "task_gp_w_safe_home_practice_completed", + "completed": "@fields.task_gp_w_safe_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_safe_ending", + "completed_field": "task_gp_w_safe_ending_completed", + "completed": "@fields.task_gp_w_safe_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_safe_hp_review", + "completed_field": "task_gp_w_safe_hp_review_completed", + "completed": "@fields.task_gp_w_safe_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.sugar_daddy.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.sugar_daddy.title" + } + }, + "story_id": "sugar_daddy", + "completed_field": "task_gp_w_safe_read_1_completed", + "completed": "@fields.task_gp_w_safe_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.online_contact.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_contact.title" + } + }, + "story_id": "online_contact", + "completed_field": "task_gp_w_safe_read_2_completed", + "completed": "@fields.task_gp_w_safe_read_2_completed" + }, + { + "id": "learn_ind", + "individual": true, + "together": false, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_individual_temp", + "completed_field": "task_gp_w_safe_learn_ind_completed", + "completed": "@fields.task_gp_w_safe_learn_ind_completed" + }, + { + "id": "learn_tog", + "individual": false, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_together_temp", + "completed_field": "task_gp_w_safe_learn_tog_completed", + "completed": "@fields.task_gp_w_safe_learn_tog_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_safe_task_gs_temp_1.json new file mode 100644 index 0000000000..c67c4ccd30 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_task_gs_temp_1.json @@ -0,0 +1,253 @@ +{ + "flow_name": "w_safe_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_safe_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_safe_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_safe_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_safe_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_safe_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_safe_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_safe_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.sugar_daddy.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.sugar_daddy.title" + } + }, + "story_id": "sugar_daddy" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.online_contact.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_contact.title" + } + }, + "story_id": "online_contact" + }, + { + "id": "learn_ind", + "individual": true, + "together": false, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_individual_temp" + }, + { + "id": "learn_tog", + "individual": false, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_together_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_tasks.json b/packages/app-data/sheets/data_list/generated/w_safe_tasks.json new file mode 100644 index 0000000000..193c8a532d --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_tasks.json @@ -0,0 +1,166 @@ +{ + "flow_name": "w_safe_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_safe_welcome_individual", + "completed_field": "task_w_safe_welcome_individual_completed", + "completed": "@fields.task_w_safe_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_safe_care_together", + "completed_field": "task_w_safe_care_together_completed", + "completed": "@fields.task_w_safe_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_safe_relax", + "completed_field": "task_w_safe_relax_completed", + "completed": "@fields.task_w_safe_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_safe_reflect_together", + "completed_field": "task_w_safe_reflect_together_completed", + "completed": "@fields.task_w_safe_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_safe_intro", + "completed_field": "task_w_safe_intro_completed", + "completed": "@fields.task_w_safe_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_safe_tools_activity", + "completed_field": "task_w_safe_tools_activity_completed", + "completed": "@fields.task_w_safe_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_safe_home_practice", + "completed_field": "task_w_safe_home_practice_completed", + "completed": "@fields.task_w_safe_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_safe_ending", + "completed_field": "task_w_safe_ending_completed", + "completed": "@fields.task_w_safe_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_safe_hp_review", + "completed_field": "task_w_safe_hp_review_completed", + "completed": "@fields.task_w_safe_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_safe_read_1", + "rel_priority": 1, + "completed_field": "task_w_safe_read_1_completed", + "completed": "@fields.task_w_safe_read_1_completed" + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_safe_question_1", + "rel_priority": 2, + "completed_field": "task_w_safe_question_1_completed", + "completed": "@fields.task_w_safe_question_1_completed" + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_safe_talk_1", + "rel_priority": 3, + "completed_field": "task_w_safe_talk_1_completed", + "completed": "@fields.task_w_safe_talk_1_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_safe_read_2", + "rel_priority": 1, + "completed_field": "task_w_safe_read_2_completed", + "completed": "@fields.task_w_safe_read_2_completed" + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_safe_question_2", + "rel_priority": 2, + "completed_field": "task_w_safe_question_2_completed", + "completed": "@fields.task_w_safe_question_2_completed" + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_safe_talk_2", + "rel_priority": 3, + "completed_field": "task_w_safe_talk_2_completed", + "completed": "@fields.task_w_safe_talk_2_completed" + }, + { + "id": "learn_ind", + "group": "learn_ind", + "individual": true, + "together": false, + "template": "w_safe_learn_individual_temp", + "completed_field": "task_w_safe_learn_ind_completed", + "completed": "@fields.task_w_safe_learn_ind_completed" + }, + { + "id": "learn_tog", + "group": "learn_tog", + "individual": false, + "together": true, + "template": "w_safe_learn_together_temp", + "completed_field": "task_w_safe_learn_tog_completed", + "completed": "@fields.task_w_safe_learn_tog_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_safe_tasks_temp_1.json new file mode 100644 index 0000000000..2aca9d661e --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_tasks_temp_1.json @@ -0,0 +1,132 @@ +{ + "flow_name": "w_safe_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_safe_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_safe_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_safe_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_safe_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_safe_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_safe_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_safe_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_safe_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_safe_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_safe_read_1", + "rel_priority": 1 + }, + { + "id": "question_1", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_safe_question_1", + "rel_priority": 2 + }, + { + "id": "talk_1", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_safe_talk_1", + "rel_priority": 3 + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_safe_read_2", + "rel_priority": 1 + }, + { + "id": "question_2", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_safe_question_2", + "rel_priority": 2 + }, + { + "id": "talk_2", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_safe_talk_2", + "rel_priority": 3 + }, + { + "id": "learn_ind", + "group": "learn_ind", + "individual": true, + "together": false, + "template": "w_safe_learn_individual_temp" + }, + { + "id": "learn_tog", + "group": "learn_tog", + "individual": false, + "together": true, + "template": "w_safe_learn_together_temp" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_safe_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_safe_tog_task_gs.json new file mode 100644 index 0000000000..8d164ab6c6 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_safe_tog_task_gs.json @@ -0,0 +1,232 @@ +{ + "flow_name": "w_safe_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_safe_care_together", + "completed_field": "task_gp_w_safe_care_together_completed", + "completed": "@fields.task_gp_w_safe_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_safe_relax", + "completed_field": "task_gp_w_safe_relax_completed", + "completed": "@fields.task_gp_w_safe_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_safe_reflect_together", + "completed_field": "task_gp_w_safe_reflect_together_completed", + "completed": "@fields.task_gp_w_safe_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_safe_intro", + "completed_field": "task_gp_w_safe_intro_completed", + "completed": "@fields.task_gp_w_safe_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_safe_tools_activity", + "completed_field": "task_gp_w_safe_tools_activity_completed", + "completed": "@fields.task_gp_w_safe_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_safe_home_practice", + "completed_field": "task_gp_w_safe_home_practice_completed", + "completed": "@fields.task_gp_w_safe_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_safe_ending", + "completed_field": "task_gp_w_safe_ending_completed", + "completed": "@fields.task_gp_w_safe_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_safe_hp_review", + "completed_field": "task_gp_w_safe_hp_review_completed", + "completed": "@fields.task_gp_w_safe_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.sugar_daddy.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.sugar_daddy.title" + } + }, + "story_id": "sugar_daddy", + "completed_field": "task_gp_w_safe_read_1_completed", + "completed": "@fields.task_gp_w_safe_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.online_contact.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_contact.title" + } + }, + "story_id": "online_contact", + "completed_field": "task_gp_w_safe_read_2_completed", + "completed": "@fields.task_gp_w_safe_read_2_completed" + }, + { + "id": "learn_tog", + "individual": false, + "together": true, + "priority": 15, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_safe_learn_together_temp", + "completed_field": "task_gp_w_safe_learn_tog_completed", + "completed": "@fields.task_gp_w_safe_learn_tog_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_self_care_common_task_gs.json new file mode 100644 index 0000000000..fd4936cc18 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_common_task_gs.json @@ -0,0 +1,101 @@ +{ + "flow_name": "w_self_care_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_self_care_welcome_individual" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_self_care_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_self_care_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_self_care_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_self_care_ending" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_self_care_common_tasks.json new file mode 100644 index 0000000000..775f5aee74 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_common_tasks.json @@ -0,0 +1,49 @@ +{ + "flow_name": "w_self_care_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_self_care_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_self_care_care_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_self_care_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_self_care_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_self_care_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_self_care_ending" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_self_care_ind_task_gs.json new file mode 100644 index 0000000000..8aa7861f43 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_ind_task_gs.json @@ -0,0 +1,189 @@ +{ + "flow_name": "w_self_care_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_self_care_welcome_individual", + "completed_field": "task_gp_w_self_care_welcome_individual_completed", + "completed": "@fields.task_gp_w_self_care_welcome_individual_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_self_care_intro", + "completed_field": "task_gp_w_self_care_intro_completed", + "completed": "@fields.task_gp_w_self_care_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_self_care_tools_activity", + "completed_field": "task_gp_w_self_care_tools_activity_completed", + "completed": "@fields.task_gp_w_self_care_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_self_care_home_practice", + "completed_field": "task_gp_w_self_care_home_practice_completed", + "completed": "@fields.task_gp_w_self_care_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_self_care_ending", + "completed_field": "task_gp_w_self_care_ending_completed", + "completed": "@fields.task_gp_w_self_care_ending_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Relax", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Relax" + } + }, + "template": "w_self_care_relax", + "completed_field": "task_gp_w_self_care_relax_completed", + "completed": "@fields.task_gp_w_self_care_relax_completed" + }, + { + "id": "recognise", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Recognise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Recognise" + } + }, + "template": "w_self_care_recognise", + "completed_field": "task_gp_w_self_care_recognise_completed", + "completed": "@fields.task_gp_w_self_care_recognise_completed" + }, + { + "id": "reward", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Reward", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Reward" + } + }, + "template": "w_self_care_reward", + "completed_field": "task_gp_w_self_care_reward_completed", + "completed": "@fields.task_gp_w_self_care_reward_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_task_gs.json b/packages/app-data/sheets/data_list/generated/w_self_care_task_gs.json new file mode 100644 index 0000000000..845c404775 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_task_gs.json @@ -0,0 +1,189 @@ +{ + "flow_name": "w_self_care_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_self_care_welcome_individual", + "completed_field": "task_gp_w_self_care_welcome_individual_completed", + "completed": "@fields.task_gp_w_self_care_welcome_individual_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_self_care_intro", + "completed_field": "task_gp_w_self_care_intro_completed", + "completed": "@fields.task_gp_w_self_care_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_self_care_tools_activity", + "completed_field": "task_gp_w_self_care_tools_activity_completed", + "completed": "@fields.task_gp_w_self_care_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_self_care_home_practice", + "completed_field": "task_gp_w_self_care_home_practice_completed", + "completed": "@fields.task_gp_w_self_care_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_self_care_ending", + "completed_field": "task_gp_w_self_care_ending_completed", + "completed": "@fields.task_gp_w_self_care_ending_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Relax", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Relax" + } + }, + "template": "w_self_care_relax", + "completed_field": "task_gp_w_self_care_relax_completed", + "completed": "@fields.task_gp_w_self_care_relax_completed" + }, + { + "id": "recognise", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Recognise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Recognise" + } + }, + "template": "w_self_care_recognise", + "completed_field": "task_gp_w_self_care_recognise_completed", + "completed": "@fields.task_gp_w_self_care_recognise_completed" + }, + { + "id": "reward", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Reward", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Reward" + } + }, + "template": "w_self_care_reward", + "completed_field": "task_gp_w_self_care_reward_completed", + "completed": "@fields.task_gp_w_self_care_reward_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_self_care_task_gs_temp_1.json new file mode 100644 index 0000000000..26974b5b21 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_task_gs_temp_1.json @@ -0,0 +1,173 @@ +{ + "flow_name": "w_self_care_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_self_care_welcome_individual" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_self_care_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_self_care_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_self_care_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_self_care_ending" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Relax", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Relax" + } + }, + "template": "w_self_care_relax" + }, + { + "id": "recognise", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Recognise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Recognise" + } + }, + "template": "w_self_care_recognise" + }, + { + "id": "reward", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Reward", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Reward" + } + }, + "template": "w_self_care_reward" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_tasks.json b/packages/app-data/sheets/data_list/generated/w_self_care_tasks.json new file mode 100644 index 0000000000..dd3808a8ed --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_tasks.json @@ -0,0 +1,88 @@ +{ + "flow_name": "w_self_care_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_self_care_welcome_individual", + "completed_field": "task_w_self_care_welcome_individual_completed", + "completed": "@fields.task_w_self_care_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_self_care_care_together", + "completed_field": "task_w_self_care_care_together_completed", + "completed": "@fields.task_w_self_care_care_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_self_care_intro", + "completed_field": "task_w_self_care_intro_completed", + "completed": "@fields.task_w_self_care_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_self_care_tools_activity", + "completed_field": "task_w_self_care_tools_activity_completed", + "completed": "@fields.task_w_self_care_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_self_care_home_practice", + "completed_field": "task_w_self_care_home_practice_completed", + "completed": "@fields.task_w_self_care_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_self_care_ending", + "completed_field": "task_w_self_care_ending_completed", + "completed": "@fields.task_w_self_care_ending_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_self_care_relax", + "completed_field": "task_w_self_care_relax_completed", + "completed": "@fields.task_w_self_care_relax_completed" + }, + { + "id": "recognise", + "group": "recognise", + "individual": true, + "together": true, + "template": "w_self_care_recognise", + "completed_field": "task_w_self_care_recognise_completed", + "completed": "@fields.task_w_self_care_recognise_completed" + }, + { + "id": "reward", + "group": "reward", + "individual": true, + "together": true, + "template": "w_self_care_reward", + "completed_field": "task_w_self_care_reward_completed", + "completed": "@fields.task_w_self_care_reward_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_self_care_tasks_temp_1.json new file mode 100644 index 0000000000..d0dea81cbd --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_tasks_temp_1.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_self_care_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_self_care_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_self_care_care_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_self_care_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_self_care_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_self_care_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_self_care_ending" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_self_care_relax" + }, + { + "id": "recognise", + "group": "recognise", + "individual": true, + "together": true, + "template": "w_self_care_recognise" + }, + { + "id": "reward", + "group": "reward", + "individual": true, + "together": true, + "template": "w_self_care_reward" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_self_care_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_self_care_tog_task_gs.json new file mode 100644 index 0000000000..0d5c14f6ed --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_self_care_tog_task_gs.json @@ -0,0 +1,168 @@ +{ + "flow_name": "w_self_care_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_self_care_intro", + "completed_field": "task_gp_w_self_care_intro_completed", + "completed": "@fields.task_gp_w_self_care_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_self_care_tools_activity", + "completed_field": "task_gp_w_self_care_tools_activity_completed", + "completed": "@fields.task_gp_w_self_care_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_self_care_home_practice", + "completed_field": "task_gp_w_self_care_home_practice_completed", + "completed": "@fields.task_gp_w_self_care_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_self_care_ending", + "completed_field": "task_gp_w_self_care_ending_completed", + "completed": "@fields.task_gp_w_self_care_ending_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "Relax", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Relax" + } + }, + "template": "w_self_care_relax", + "completed_field": "task_gp_w_self_care_relax_completed", + "completed": "@fields.task_gp_w_self_care_relax_completed" + }, + { + "id": "recognise", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "title": "Recognise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Recognise" + } + }, + "template": "w_self_care_recognise", + "completed_field": "task_gp_w_self_care_recognise_completed", + "completed": "@fields.task_gp_w_self_care_recognise_completed" + }, + { + "id": "reward", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "Reward", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Reward" + } + }, + "template": "w_self_care_reward", + "completed_field": "task_gp_w_self_care_reward_completed", + "completed": "@fields.task_gp_w_self_care_reward_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_solve_common_task_gs.json new file mode 100644 index 0000000000..51d2a7b8ad --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_solve_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_solve_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_solve_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_solve_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_solve_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_solve_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_solve_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_solve_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_solve_common_tasks.json new file mode 100644 index 0000000000..eb34779942 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_solve_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_solve_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_solve_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_solve_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_solve_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_solve_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_solve_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_solve_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_solve_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_solve_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_solve_ind_task_gs.json new file mode 100644 index 0000000000..5d9ffa335c --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_ind_task_gs.json @@ -0,0 +1,214 @@ +{ + "flow_name": "w_solve_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_welcome_individual", + "completed_field": "task_gp_w_solve_welcome_individual_completed", + "completed": "@fields.task_gp_w_solve_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_solve_relax", + "completed_field": "task_gp_w_solve_relax_completed", + "completed": "@fields.task_gp_w_solve_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_solve_intro", + "completed_field": "task_gp_w_solve_intro_completed", + "completed": "@fields.task_gp_w_solve_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_solve_tools_activity", + "completed_field": "task_gp_w_solve_tools_activity_completed", + "completed": "@fields.task_gp_w_solve_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_solve_home_practice", + "completed_field": "task_gp_w_solve_home_practice_completed", + "completed": "@fields.task_gp_w_solve_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_solve_ending", + "completed_field": "task_gp_w_solve_ending_completed", + "completed": "@fields.task_gp_w_solve_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_solve_hp_review", + "completed_field": "task_gp_w_solve_hp_review_completed", + "completed": "@fields.task_gp_w_solve_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.neg_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_solve.title" + } + }, + "template": "w_solve_read_1", + "story_id": "neg_solve", + "completed_field": "task_gp_w_solve_read_1_completed", + "completed": "@fields.task_gp_w_solve_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_solve.title" + } + }, + "story_id": "pos_solve", + "completed_field": "task_gp_w_solve_read_2_completed", + "completed": "@fields.task_gp_w_solve_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_solve_learn_temp", + "completed_field": "task_gp_w_solve_learn_completed", + "completed": "@fields.task_gp_w_solve_learn_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_task_gs.json b/packages/app-data/sheets/data_list/generated/w_solve_task_gs.json new file mode 100644 index 0000000000..c80f58b7af --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_task_gs.json @@ -0,0 +1,275 @@ +{ + "flow_name": "w_solve_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_welcome_individual", + "completed_field": "task_gp_w_solve_welcome_individual_completed", + "completed": "@fields.task_gp_w_solve_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_care_together", + "completed_field": "task_gp_w_solve_care_together_completed", + "completed": "@fields.task_gp_w_solve_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_solve_relax", + "completed_field": "task_gp_w_solve_relax_completed", + "completed": "@fields.task_gp_w_solve_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_solve_reflect_together", + "completed_field": "task_gp_w_solve_reflect_together_completed", + "completed": "@fields.task_gp_w_solve_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_solve_intro", + "completed_field": "task_gp_w_solve_intro_completed", + "completed": "@fields.task_gp_w_solve_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_solve_tools_activity", + "completed_field": "task_gp_w_solve_tools_activity_completed", + "completed": "@fields.task_gp_w_solve_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_solve_home_practice", + "completed_field": "task_gp_w_solve_home_practice_completed", + "completed": "@fields.task_gp_w_solve_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_solve_ending", + "completed_field": "task_gp_w_solve_ending_completed", + "completed": "@fields.task_gp_w_solve_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_solve_hp_review", + "completed_field": "task_gp_w_solve_hp_review_completed", + "completed": "@fields.task_gp_w_solve_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.neg_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_solve.title" + } + }, + "template": "w_solve_read_1", + "story_id": "neg_solve", + "completed_field": "task_gp_w_solve_read_1_completed", + "completed": "@fields.task_gp_w_solve_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_solve.title" + } + }, + "story_id": "pos_solve", + "completed_field": "task_gp_w_solve_read_2_completed", + "completed": "@fields.task_gp_w_solve_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_solve_learn_temp", + "completed_field": "task_gp_w_solve_learn_completed", + "completed": "@fields.task_gp_w_solve_learn_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_solve_try", + "completed_field": "task_gp_w_solve_try_completed", + "completed": "@fields.task_gp_w_solve_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_solve_task_gs_temp_1.json new file mode 100644 index 0000000000..859bddcd56 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_task_gs_temp_1.json @@ -0,0 +1,249 @@ +{ + "flow_name": "w_solve_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_solve_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_solve_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_solve_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_solve_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_solve_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_solve_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_solve_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.neg_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_solve.title" + } + }, + "template": "w_solve_read_1", + "story_id": "neg_solve" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_solve.title" + } + }, + "story_id": "pos_solve" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_solve_learn_temp" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_solve_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_tasks.json b/packages/app-data/sheets/data_list/generated/w_solve_tasks.json new file mode 100644 index 0000000000..9ab80de2c5 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_tasks.json @@ -0,0 +1,145 @@ +{ + "flow_name": "w_solve_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_solve_welcome_individual", + "completed_field": "task_w_solve_welcome_individual_completed", + "completed": "@fields.task_w_solve_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_solve_care_together", + "completed_field": "task_w_solve_care_together_completed", + "completed": "@fields.task_w_solve_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_solve_relax", + "completed_field": "task_w_solve_relax_completed", + "completed": "@fields.task_w_solve_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_solve_reflect_together", + "completed_field": "task_w_solve_reflect_together_completed", + "completed": "@fields.task_w_solve_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_solve_intro", + "completed_field": "task_w_solve_intro_completed", + "completed": "@fields.task_w_solve_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_solve_tools_activity", + "completed_field": "task_w_solve_tools_activity_completed", + "completed": "@fields.task_w_solve_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_solve_home_practice", + "completed_field": "task_w_solve_home_practice_completed", + "completed": "@fields.task_w_solve_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_solve_ending", + "completed_field": "task_w_solve_ending_completed", + "completed": "@fields.task_w_solve_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_solve_hp_review", + "completed_field": "task_w_solve_hp_review_completed", + "completed": "@fields.task_w_solve_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_solve_read_1", + "completed_field": "task_w_solve_read_1_completed", + "completed": "@fields.task_w_solve_read_1_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_solve_read_2", + "rel_priority": 1, + "completed_field": "task_w_solve_read_2_completed", + "completed": "@fields.task_w_solve_read_2_completed" + }, + { + "id": "think", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_solve_think", + "rel_priority": 2, + "completed_field": "task_w_solve_think_completed", + "completed": "@fields.task_w_solve_think_completed" + }, + { + "id": "talk", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_solve_talk", + "rel_priority": 3, + "completed_field": "task_w_solve_talk_completed", + "completed": "@fields.task_w_solve_talk_completed" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_solve_learn_temp", + "completed_field": "task_w_solve_learn_completed", + "completed": "@fields.task_w_solve_learn_completed" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_solve_try", + "completed_field": "task_w_solve_try_completed", + "completed": "@fields.task_w_solve_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_solve_tasks_temp_1.json new file mode 100644 index 0000000000..bb1c17cfe3 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_tasks_temp_1.json @@ -0,0 +1,115 @@ +{ + "flow_name": "w_solve_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_solve_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_solve_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_solve_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_solve_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_solve_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_solve_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_solve_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_solve_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_solve_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_solve_read_1" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_solve_read_2", + "rel_priority": 1 + }, + { + "id": "think", + "group": "read_2", + "individual": true, + "together": false, + "template": "w_solve_think", + "rel_priority": 2 + }, + { + "id": "talk", + "group": "read_2", + "individual": false, + "together": true, + "template": "w_solve_talk", + "rel_priority": 3 + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_solve_learn_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_solve_try" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_solve_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_solve_tog_task_gs.json new file mode 100644 index 0000000000..d4527ae306 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_solve_tog_task_gs.json @@ -0,0 +1,254 @@ +{ + "flow_name": "w_solve_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_solve_care_together", + "completed_field": "task_gp_w_solve_care_together_completed", + "completed": "@fields.task_gp_w_solve_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_solve_relax", + "completed_field": "task_gp_w_solve_relax_completed", + "completed": "@fields.task_gp_w_solve_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_solve_reflect_together", + "completed_field": "task_gp_w_solve_reflect_together_completed", + "completed": "@fields.task_gp_w_solve_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_solve_intro", + "completed_field": "task_gp_w_solve_intro_completed", + "completed": "@fields.task_gp_w_solve_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_solve_tools_activity", + "completed_field": "task_gp_w_solve_tools_activity_completed", + "completed": "@fields.task_gp_w_solve_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_solve_home_practice", + "completed_field": "task_gp_w_solve_home_practice_completed", + "completed": "@fields.task_gp_w_solve_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_solve_ending", + "completed_field": "task_gp_w_solve_ending_completed", + "completed": "@fields.task_gp_w_solve_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_solve_hp_review", + "completed_field": "task_gp_w_solve_hp_review_completed", + "completed": "@fields.task_gp_w_solve_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.neg_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_solve.title" + } + }, + "template": "w_solve_read_1", + "story_id": "neg_solve", + "completed_field": "task_gp_w_solve_read_1_completed", + "completed": "@fields.task_gp_w_solve_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_solve.title" + } + }, + "story_id": "pos_solve", + "completed_field": "task_gp_w_solve_read_2_completed", + "completed": "@fields.task_gp_w_solve_read_2_completed" + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 74, + "has_single_task": true, + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + }, + "template": "w_solve_learn_temp", + "completed_field": "task_gp_w_solve_learn_completed", + "completed": "@fields.task_gp_w_solve_learn_completed" + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + }, + "template": "w_solve_try", + "completed_field": "task_gp_w_solve_try_completed", + "completed": "@fields.task_gp_w_solve_try_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_common_task_gs.json b/packages/app-data/sheets/data_list/generated/w_stress_common_task_gs.json new file mode 100644 index 0000000000..235800d509 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_common_task_gs.json @@ -0,0 +1,171 @@ +{ + "flow_name": "w_stress_common_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_stress_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_stress_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_stress_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_stress_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_stress_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_stress_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_stress_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_common_tasks.json b/packages/app-data/sheets/data_list/generated/w_stress_common_tasks.json new file mode 100644 index 0000000000..3af15dc9bc --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_common_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_name": "w_stress_common_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_stress_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_stress_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_stress_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_stress_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_stress_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_stress_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_stress_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_stress_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_stress_hp_review" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_ind_task_gs.json b/packages/app-data/sheets/data_list/generated/w_stress_ind_task_gs.json new file mode 100644 index 0000000000..05f02954bf --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_ind_task_gs.json @@ -0,0 +1,207 @@ +{ + "flow_name": "w_stress_ind_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_welcome_individual", + "completed_field": "task_gp_w_stress_welcome_individual_completed", + "completed": "@fields.task_gp_w_stress_welcome_individual_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_stress_relax", + "completed_field": "task_gp_w_stress_relax_completed", + "completed": "@fields.task_gp_w_stress_relax_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_stress_intro", + "completed_field": "task_gp_w_stress_intro_completed", + "completed": "@fields.task_gp_w_stress_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_stress_tools_activity", + "completed_field": "task_gp_w_stress_tools_activity_completed", + "completed": "@fields.task_gp_w_stress_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_stress_home_practice", + "completed_field": "task_gp_w_stress_home_practice_completed", + "completed": "@fields.task_gp_w_stress_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_stress_ending", + "completed_field": "task_gp_w_stress_ending_completed", + "completed": "@fields.task_gp_w_stress_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_stress_hp_review", + "completed_field": "task_gp_w_stress_hp_review_completed", + "completed": "@fields.task_gp_w_stress_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.ignore_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.ignore_emotions.title" + } + }, + "story_id": "ignore_emotions", + "completed_field": "task_gp_w_stress_read_1_completed", + "completed": "@fields.task_gp_w_stress_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.acknowledge_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.acknowledge_emotions.title" + } + }, + "template": "w_stress_read_2", + "story_id": "acknowledge_emotions", + "completed_field": "task_gp_w_stress_read_2_completed", + "completed": "@fields.task_gp_w_stress_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.safety_amnesty.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.safety_amnesty.title" + } + }, + "story_id": "safety_amnesty", + "completed_field": "task_gp_w_stress_read_3_completed", + "completed": "@fields.task_gp_w_stress_read_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_task_gs.json b/packages/app-data/sheets/data_list/generated/w_stress_task_gs.json new file mode 100644 index 0000000000..e6ff34681e --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_task_gs.json @@ -0,0 +1,247 @@ +{ + "flow_name": "w_stress_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_welcome_individual", + "completed_field": "task_gp_w_stress_welcome_individual_completed", + "completed": "@fields.task_gp_w_stress_welcome_individual_completed" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_care_together", + "completed_field": "task_gp_w_stress_care_together_completed", + "completed": "@fields.task_gp_w_stress_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_stress_relax", + "completed_field": "task_gp_w_stress_relax_completed", + "completed": "@fields.task_gp_w_stress_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_stress_reflect_together", + "completed_field": "task_gp_w_stress_reflect_together_completed", + "completed": "@fields.task_gp_w_stress_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_stress_intro", + "completed_field": "task_gp_w_stress_intro_completed", + "completed": "@fields.task_gp_w_stress_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_stress_tools_activity", + "completed_field": "task_gp_w_stress_tools_activity_completed", + "completed": "@fields.task_gp_w_stress_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_stress_home_practice", + "completed_field": "task_gp_w_stress_home_practice_completed", + "completed": "@fields.task_gp_w_stress_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_stress_ending", + "completed_field": "task_gp_w_stress_ending_completed", + "completed": "@fields.task_gp_w_stress_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_stress_hp_review", + "completed_field": "task_gp_w_stress_hp_review_completed", + "completed": "@fields.task_gp_w_stress_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.ignore_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.ignore_emotions.title" + } + }, + "story_id": "ignore_emotions", + "completed_field": "task_gp_w_stress_read_1_completed", + "completed": "@fields.task_gp_w_stress_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.acknowledge_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.acknowledge_emotions.title" + } + }, + "template": "w_stress_read_2", + "story_id": "acknowledge_emotions", + "completed_field": "task_gp_w_stress_read_2_completed", + "completed": "@fields.task_gp_w_stress_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.safety_amnesty.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.safety_amnesty.title" + } + }, + "story_id": "safety_amnesty", + "completed_field": "task_gp_w_stress_read_3_completed", + "completed": "@fields.task_gp_w_stress_read_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_task_gs_temp_1.json b/packages/app-data/sheets/data_list/generated/w_stress_task_gs_temp_1.json new file mode 100644 index 0000000000..d285eb3b2a --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_task_gs_temp_1.json @@ -0,0 +1,223 @@ +{ + "flow_name": "w_stress_task_gs_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_welcome_individual" + }, + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_care_together" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_stress_relax" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_stress_reflect_together" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_stress_intro" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_stress_tools_activity" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_stress_home_practice" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_stress_ending" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_stress_hp_review" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.ignore_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.ignore_emotions.title" + } + }, + "story_id": "ignore_emotions" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.acknowledge_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.acknowledge_emotions.title" + } + }, + "template": "w_stress_read_2", + "story_id": "acknowledge_emotions" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.safety_amnesty.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.safety_amnesty.title" + } + }, + "story_id": "safety_amnesty" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_tasks.json b/packages/app-data/sheets/data_list/generated/w_stress_tasks.json new file mode 100644 index 0000000000..0199d9d3ed --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_tasks.json @@ -0,0 +1,146 @@ +{ + "flow_name": "w_stress_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_stress_welcome_individual", + "completed_field": "task_w_stress_welcome_individual_completed", + "completed": "@fields.task_w_stress_welcome_individual_completed" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_stress_care_together", + "completed_field": "task_w_stress_care_together_completed", + "completed": "@fields.task_w_stress_care_together_completed" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_stress_relax", + "completed_field": "task_w_stress_relax_completed", + "completed": "@fields.task_w_stress_relax_completed" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_stress_reflect_together", + "completed_field": "task_w_stress_reflect_together_completed", + "completed": "@fields.task_w_stress_reflect_together_completed" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_stress_intro", + "completed_field": "task_w_stress_intro_completed", + "completed": "@fields.task_w_stress_intro_completed" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_stress_tools_activity", + "completed_field": "task_w_stress_tools_activity_completed", + "completed": "@fields.task_w_stress_tools_activity_completed" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_stress_home_practice", + "completed_field": "task_w_stress_home_practice_completed", + "completed": "@fields.task_w_stress_home_practice_completed" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_stress_ending", + "completed_field": "task_w_stress_ending_completed", + "completed": "@fields.task_w_stress_ending_completed" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_stress_hp_review", + "completed_field": "task_w_stress_hp_review_completed", + "completed": "@fields.task_w_stress_hp_review_completed" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_stress_read_1", + "rel_priority": 1, + "completed_field": "task_w_stress_read_1_completed", + "completed": "@fields.task_w_stress_read_1_completed" + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_stress_question", + "rel_priority": 2, + "completed_field": "task_w_stress_question_completed", + "completed": "@fields.task_w_stress_question_completed" + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_stress_talk", + "rel_priority": 3, + "completed_field": "task_w_stress_talk_completed", + "completed": "@fields.task_w_stress_talk_completed" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_stress_read_2", + "completed_field": "task_w_stress_read_2_completed", + "completed": "@fields.task_w_stress_read_2_completed" + }, + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_stress_read_3", + "completed_field": "task_w_stress_read_3_completed", + "completed": "@fields.task_w_stress_read_3_completed" + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_stress_question_2", + "rel_priority": 2, + "completed_field": "task_w_stress_question_2_completed", + "completed": "@fields.task_w_stress_question_2_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_tasks_temp_1.json b/packages/app-data/sheets/data_list/generated/w_stress_tasks_temp_1.json new file mode 100644 index 0000000000..99ae8ba015 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_tasks_temp_1.json @@ -0,0 +1,116 @@ +{ + "flow_name": "w_stress_tasks_temp_1", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "welcome_individual", + "group": "welcome_individual", + "individual": true, + "together": false, + "template": "w_stress_welcome_individual" + }, + { + "id": "care_together", + "group": "care_together", + "individual": false, + "together": true, + "template": "w_stress_care_together" + }, + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_stress_relax" + }, + { + "id": "reflect_together", + "group": "reflect_together", + "individual": false, + "together": true, + "template": "w_stress_reflect_together" + }, + { + "id": "intro", + "group": "intro", + "individual": true, + "together": true, + "template": "w_stress_intro" + }, + { + "id": "tools_activity", + "group": "tools_activity", + "individual": true, + "together": true, + "template": "w_stress_tools_activity" + }, + { + "id": "home_practice", + "group": "home_practice", + "individual": true, + "together": true, + "template": "w_stress_home_practice" + }, + { + "id": "ending", + "group": "ending", + "individual": true, + "together": true, + "template": "w_stress_ending" + }, + { + "id": "hp_review", + "group": "hp_review", + "individual": true, + "together": true, + "template": "w_stress_hp_review" + }, + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_stress_read_1", + "rel_priority": 1 + }, + { + "id": "question", + "group": "read_1", + "individual": true, + "together": false, + "template": "w_stress_question", + "rel_priority": 2 + }, + { + "id": "talk", + "group": "read_1", + "individual": false, + "together": true, + "template": "w_stress_talk", + "rel_priority": 3 + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_stress_read_2" + }, + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_stress_read_3" + }, + { + "id": "question_2", + "group": "read_3", + "individual": true, + "together": false, + "template": "w_stress_question_2", + "rel_priority": 2 + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/w_stress_tog_task_gs.json b/packages/app-data/sheets/data_list/generated/w_stress_tog_task_gs.json new file mode 100644 index 0000000000..339d9b6846 --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/w_stress_tog_task_gs.json @@ -0,0 +1,226 @@ +{ + "flow_name": "w_stress_tog_task_gs", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "care_together", + "individual": false, + "together": true, + "priority": 2, + "has_single_task": true, + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + }, + "template": "w_stress_care_together", + "completed_field": "task_gp_w_stress_care_together_completed", + "completed": "@fields.task_gp_w_stress_care_together_completed" + }, + { + "id": "relax", + "individual": true, + "together": true, + "priority": 3, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].relax_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].relax_title" + } + }, + "template": "w_stress_relax", + "completed_field": "task_gp_w_stress_relax_completed", + "completed": "@fields.task_gp_w_stress_relax_completed" + }, + { + "id": "reflect_together", + "individual": false, + "together": true, + "priority": 4, + "has_single_task": true, + "title": "@global.home_practice_problem_solving", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice_problem_solving" + } + }, + "template": "w_stress_reflect_together", + "completed_field": "task_gp_w_stress_reflect_together_completed", + "completed": "@fields.task_gp_w_stress_reflect_together_completed" + }, + { + "id": "intro", + "individual": true, + "together": true, + "priority": 5, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].intro_title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].intro_title" + } + }, + "template": "w_stress_intro", + "completed_field": "task_gp_w_stress_intro_completed", + "completed": "@fields.task_gp_w_stress_intro_completed" + }, + { + "id": "tools_activity", + "individual": true, + "together": true, + "priority": 70, + "has_single_task": true, + "title": "@data.workshop[@fields.current_workshop].tools", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@data.workshop[@fields.current_workshop].tools" + } + }, + "template": "w_stress_tools_activity", + "completed_field": "task_gp_w_stress_tools_activity_completed", + "completed": "@fields.task_gp_w_stress_tools_activity_completed" + }, + { + "id": "home_practice", + "individual": true, + "together": true, + "priority": 80, + "has_single_task": true, + "title": "@global.home_practice", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.home_practice" + } + }, + "template": "w_stress_home_practice", + "completed_field": "task_gp_w_stress_home_practice_completed", + "completed": "@fields.task_gp_w_stress_home_practice_completed" + }, + { + "id": "ending", + "individual": true, + "together": true, + "priority": 90, + "has_single_task": true, + "title": "Well done!", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Well done!" + } + }, + "template": "w_stress_ending", + "completed_field": "task_gp_w_stress_ending_completed", + "completed": "@fields.task_gp_w_stress_ending_completed" + }, + { + "id": "hp_review", + "individual": true, + "together": true, + "priority": 91, + "has_single_task": true, + "title": "@global.hp_review", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.hp_review" + } + }, + "template": "w_stress_hp_review", + "completed_field": "task_gp_w_stress_hp_review_completed", + "completed": "@fields.task_gp_w_stress_hp_review_completed" + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.ignore_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.ignore_emotions.title" + } + }, + "story_id": "ignore_emotions", + "completed_field": "task_gp_w_stress_read_1_completed", + "completed": "@fields.task_gp_w_stress_read_1_completed" + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "title": "@global.story @global.part_connector @data.story.acknowledge_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.acknowledge_emotions.title" + } + }, + "template": "w_stress_read_2", + "story_id": "acknowledge_emotions", + "completed_field": "task_gp_w_stress_read_2_completed", + "completed": "@fields.task_gp_w_stress_read_2_completed" + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.safety_amnesty.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.safety_amnesty.title" + } + }, + "story_id": "safety_amnesty", + "completed_field": "task_gp_w_stress_read_3_completed", + "completed": "@fields.task_gp_w_stress_read_3_completed" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/generated/workshop_tasks.json b/packages/app-data/sheets/data_list/generated/workshop_tasks.json new file mode 100644 index 0000000000..49c22dc8cd --- /dev/null +++ b/packages/app-data/sheets/data_list/generated/workshop_tasks.json @@ -0,0 +1,1017 @@ +{ + "flow_name": "workshop_tasks", + "flow_subtype": "generated", + "flow_type": "data_list", + "rows": [ + { + "id": "w_self_care", + "number": 1, + "image_asset": "plh_images/workshops/w_self_care/tools.svg", + "relax_data": "@data.relax.relax_5", + "relax_title": "@data.relax.relax_5.title", + "intro_audio_asset": "plh_audio/topic_intros/w_self_care_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_self_care.mp3", + "title": "Welcome and Self-Care", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "short_title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Welcome and Self-Care" + }, + "short_title": { + "eng": "Self-Care" + }, + "lower_case_title": { + "eng": "self-care" + }, + "in_text_title": { + "eng": "**Welcome and Self-Care** @global.workshop" + }, + "description": { + "eng": "This @global.workshop is about YOU. Looking after yourself is essential for a happy family." + }, + "intro_title": { + "eng": "Why self-care?" + }, + "tools": { + "eng": "How to do self-care" + }, + "caregiver_testimonial_script": { + "eng": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better." + }, + "teen_testimonial_script": { + "eng": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." + } + }, + "short_title": "Self-Care", + "lower_case_title": "self-care", + "in_text_title": "**Welcome and Self-Care** @global.workshop", + "description": "This @global.workshop is about YOU. Looking after yourself is essential for a happy family.", + "intro_title": "Why self-care?", + "tools": "How to do self-care", + "caregiver_testimonial_script": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "teen_testimonial_script": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.", + "completed_field": "task_w_self_care_completed", + "completed": "@fields.task_w_self_care_completed", + "skipped_field": "task_w_self_care_skipped" + }, + { + "id": "w_1on1", + "number": 2, + "image_asset": "plh_images/workshops/w_1on1/tools.svg", + "relax_data": "@data.relax.relax_2", + "relax_title": "@data.relax.relax_2.title", + "intro_audio_asset": "plh_audio/topic_intros/w_1on1_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_1on1.mp3", + "title": "One-on-One Time", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "One-on-One Time" + }, + "lower_case_title": { + "eng": "one-on-one time" + }, + "in_text_title": { + "eng": "**One-on-One Time** @global.workshop" + }, + "description": { + "eng": "Spending time with your teen builds a positive relationship." + }, + "intro_title": { + "eng": "Why one-on-one time?" + }, + "tools": { + "eng": "How to spend one-on-one time" + }, + "caregiver_testimonial_script": { + "eng": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!" + }, + "teen_testimonial_script": { + "eng": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." + } + }, + "lower_case_title": "one-on-one time", + "in_text_title": "**One-on-One Time** @global.workshop", + "description": "Spending time with your teen builds a positive relationship.", + "intro_title": "Why one-on-one time?", + "tools": "How to spend one-on-one time", + "caregiver_testimonial_script": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "teen_testimonial_script": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.", + "something_fun_data": "@data.something_fun.co_chef", + "completed_field": "task_w_1on1_completed", + "completed": "@fields.task_w_1on1_completed", + "skipped_field": "task_w_1on1_skipped" + }, + { + "id": "w_praise", + "number": 3, + "image_asset": "plh_images/workshops/w_praise/tools.svg", + "relax_data": "@data.relax.relax_3", + "relax_title": "@data.relax.relax_3.title", + "intro_audio_asset": "plh_audio/topic_intros/w_praise_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_praise.mp3", + "title": "Praise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": {}, + "teen_testimonial_script": {} + }, + "_translatedFields": { + "title": { + "eng": "Praise" + }, + "lower_case_title": { + "eng": "praise" + }, + "in_text_title": { + "eng": "**Praise** @global.workshop" + }, + "description": { + "eng": "Praise helps teens show more positive behaviour." + }, + "intro_title": { + "eng": "Why praise?" + }, + "tools": { + "eng": "How to praise" + }, + "caregiver_testimonial_script": { + "eng": "When we learned about this praising thing I thought, “We were never praised for things as teenagers, so why should we start now?” But I got interested when I learned what the benefits of praising could be.\n\nRight after the weekly workshop, I noticed my teen doing what they do every day: washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does.\n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!" + }, + "teen_testimonial_script": { + "eng": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.lower_case_title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." + } + }, + "lower_case_title": "praise", + "in_text_title": "**Praise** @global.workshop", + "description": "Praise helps teens show more positive behaviour.", + "intro_title": "Why praise?", + "tools": "How to praise", + "caregiver_testimonial_script": "When we learned about this praising thing I thought, “We were never praised for things as teenagers, so why should we start now?” But I got interested when I learned what the benefits of praising could be.\n\nRight after the weekly workshop, I noticed my teen doing what they do every day: washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does.\n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "teen_testimonial_script": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.lower_case_title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.", + "something_fun_data": "@data.something_fun.reflect_positive", + "completed_field": "task_w_praise_completed", + "completed": "@fields.task_w_praise_completed", + "skipped_field": "task_w_praise_skipped" + }, + { + "id": "w_instruct", + "number": 4, + "image_asset": "plh_images/workshops/w_instruct/tools.svg", + "relax_data": "@data.relax.relax_4", + "relax_title": "@data.relax.relax_4.title", + "intro_audio_asset": "plh_audio/topic_intros/w_instruct_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_instruct.mp3", + "title": "Positive Instructions", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Positive Instructions" + }, + "lower_case_title": { + "eng": "positive instructions" + }, + "in_text_title": { + "eng": "**Positive Instructions** @global.workshop" + }, + "description": { + "eng": "Teens follow instructions that are positive more easily." + }, + "intro_title": { + "eng": "Why positive instructions?" + }, + "tools": { + "eng": "How to give positive instructions" + }, + "caregiver_testimonial_script": { + "eng": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot." + }, + "teen_testimonial_script": { + "eng": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." + } + }, + "lower_case_title": "positive instructions", + "in_text_title": "**Positive Instructions** @global.workshop", + "description": "Teens follow instructions that are positive more easily.", + "intro_title": "Why positive instructions?", + "tools": "How to give positive instructions", + "caregiver_testimonial_script": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "teen_testimonial_script": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.", + "something_fun_data": "@data.something_fun.dance_moves", + "completed_field": "task_w_instruct_completed", + "completed": "@fields.task_w_instruct_completed", + "skipped_field": "task_w_instruct_skipped" + }, + { + "id": "w_stress", + "number": 5, + "image_asset": "plh_images/workshops/w_stress/tools.svg", + "relax_data": "@data.relax.relax_7", + "relax_title": "@data.relax.relax_7.title", + "intro_audio_asset": "plh_audio/topic_intros/w_stress_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_stress.mp3", + "title": "Managing Stress", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Managing Stress" + }, + "lower_case_title": { + "eng": "managing stress" + }, + "in_text_title": { + "eng": "**Managing Stress** @global.workshop" + }, + "description": { + "eng": "Life is stressful. Staying calm helps us handle any situation better." + }, + "intro_title": { + "eng": "Why managing stress?" + }, + "tools": { + "eng": "How to manage stress" + }, + "caregiver_testimonial_script": { + "eng": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!" + }, + "teen_testimonial_script": { + "eng": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." + } + }, + "lower_case_title": "managing stress", + "in_text_title": "**Managing Stress** @global.workshop", + "description": "Life is stressful. Staying calm helps us handle any situation better.", + "intro_title": "Why managing stress?", + "tools": "How to manage stress", + "caregiver_testimonial_script": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "teen_testimonial_script": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.", + "something_fun_data": "@data.something_fun.check_in_chat", + "completed_field": "task_w_stress_completed", + "completed": "@fields.task_w_stress_completed", + "skipped_field": "task_w_stress_skipped" + }, + { + "id": "w_solve", + "number": 6, + "image_asset": "plh_images/workshops/w_solve/tools.svg", + "relax_data": "@data.relax.relax_11", + "relax_title": "@data.relax.relax_11.title", + "intro_audio_asset": "plh_audio/topic_intros/w_solve_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_solve.mp3", + "title": "Problem Solving", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Problem Solving" + }, + "lower_case_title": { + "eng": "problem solving" + }, + "in_text_title": { + "eng": "**Problem Solving** @global.workshop" + }, + "description": { + "eng": "Together with your teen, you can handle any challenge." + }, + "intro_title": { + "eng": "Why problem solving?" + }, + "tools": { + "eng": "How to solve problems" + }, + "caregiver_testimonial_script": { + "eng": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now." + }, + "teen_testimonial_script": { + "eng": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." + } + }, + "lower_case_title": "problem solving", + "in_text_title": "**Problem Solving** @global.workshop", + "description": "Together with your teen, you can handle any challenge.", + "intro_title": "Why problem solving?", + "tools": "How to solve problems", + "caregiver_testimonial_script": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "teen_testimonial_script": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.", + "something_fun_data": "@data.something_fun.mirror", + "completed_field": "task_w_solve_completed", + "completed": "@fields.task_w_solve_completed", + "skipped_field": "task_w_solve_skipped" + }, + { + "id": "w_money", + "number": 7, + "image_asset": "plh_images/workshops/w_money/tools.svg", + "relax_data": "@data.relax.relax_8", + "relax_title": "@data.relax.relax_8.title", + "intro_audio_asset": "plh_audio/topic_intros/w_money_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_money.mp3", + "title": "Family Budgets", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Family Budgets" + }, + "lower_case_title": { + "eng": "family budgets" + }, + "in_text_title": { + "eng": "**Family Budgets** @global.workshop" + }, + "description": { + "eng": "Making a plan to budget and save as a family prevents disagreements." + }, + "intro_title": { + "eng": "Why family budgets?" + }, + "tools": { + "eng": "How to budget & save" + }, + "caregiver_testimonial_script": { + "eng": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account." + }, + "teen_testimonial_script": { + "eng": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." + } + }, + "lower_case_title": "family budgets", + "in_text_title": "**Family Budgets** @global.workshop", + "description": "Making a plan to budget and save as a family prevents disagreements.", + "intro_title": "Why family budgets?", + "tools": "How to budget & save", + "caregiver_testimonial_script": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "teen_testimonial_script": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.", + "something_fun_data": "@data.something_fun.dream_travel", + "completed_field": "task_w_money_completed", + "completed": "@fields.task_w_money_completed", + "skipped_field": "task_w_money_skipped" + }, + { + "id": "w_rules", + "number": 8, + "image_asset": "plh_images/workshops/w_rules/tools.svg", + "relax_data": "@data.relax.relax_9", + "relax_title": "@data.relax.relax_9.title", + "intro_audio_asset": "plh_audio/topic_intros/w_rules_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_rules.mp3", + "title": "Rules", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Rules" + }, + "lower_case_title": { + "eng": "rules" + }, + "in_text_title": { + "eng": "**Rules** @global.workshop" + }, + "description": { + "eng": "Teens follow rules more when you create them together." + }, + "intro_title": { + "eng": "Why rules?" + }, + "tools": { + "eng": "How to create rules" + }, + "caregiver_testimonial_script": { + "eng": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules." + }, + "teen_testimonial_script": { + "eng": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." + } + }, + "lower_case_title": "rules", + "in_text_title": "**Rules** @global.workshop", + "description": "Teens follow rules more when you create them together.", + "intro_title": "Why rules?", + "tools": "How to create rules", + "caregiver_testimonial_script": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "teen_testimonial_script": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.", + "something_fun_data": "@data.something_fun.famous_party", + "completed_field": "task_w_rules_completed", + "completed": "@fields.task_w_rules_completed", + "skipped_field": "task_w_rules_skipped" + }, + { + "id": "w_consequence", + "number": 9, + "image_asset": "plh_images/workshops/w_consequence/tools.svg", + "relax_data": "@data.relax.relax_10", + "relax_title": "@data.relax.relax_10.title", + "intro_audio_asset": "plh_audio/topic_intros/w_consequence_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_consequence.mp3", + "title": "Calm Consequences", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Calm Consequences" + }, + "lower_case_title": { + "eng": "calm consequences" + }, + "in_text_title": { + "eng": "**Calm Consequences** @global.workshop" + }, + "description": { + "eng": "Consequences help us discipline our teens in a calm way – it works." + }, + "intro_title": { + "eng": "Why calm consequences?" + }, + "tools": { + "eng": "How to give calm consequences" + }, + "caregiver_testimonial_script": { + "eng": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!" + }, + "teen_testimonial_script": { + "eng": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." + } + }, + "lower_case_title": "calm consequences", + "in_text_title": "**Calm Consequences** @global.workshop", + "description": "Consequences help us discipline our teens in a calm way – it works.", + "intro_title": "Why calm consequences?", + "tools": "How to give calm consequences", + "caregiver_testimonial_script": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "teen_testimonial_script": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.", + "something_fun_data": "@data.something_fun.two_truths", + "completed_field": "task_w_consequence_completed", + "completed": "@fields.task_w_consequence_completed", + "skipped_field": "task_w_consequence_skipped" + }, + { + "id": "w_safe", + "number": 10, + "image_asset": "plh_images/workshops/w_safe/tools.svg", + "relax_data": "@data.relax.relax_12", + "relax_title": "@data.relax.relax_12.title", + "intro_audio_asset": "plh_audio/topic_intros/w_safe_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_safe.mp3", + "title": "Teen Safety", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Teen Safety" + }, + "lower_case_title": { + "eng": "teen safety" + }, + "in_text_title": { + "eng": "**Teen Safety** @global.workshop" + }, + "description": { + "eng": "Talking and planning helps prevent dangerous situations, in-person and online." + }, + "intro_title": { + "eng": "Why teen safety?" + }, + "tools": { + "eng": "How to keep your teen safe" + }, + "caregiver_testimonial_script": { + "eng": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe." + }, + "teen_testimonial_script": { + "eng": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" + } + }, + "lower_case_title": "teen safety", + "in_text_title": "**Teen Safety** @global.workshop", + "description": "Talking and planning helps prevent dangerous situations, in-person and online.", + "intro_title": "Why teen safety?", + "tools": "How to keep your teen safe", + "caregiver_testimonial_script": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "teen_testimonial_script": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!", + "something_fun_data": "@data.something_fun.time_machine", + "completed_field": "task_w_safe_completed", + "completed": "@fields.task_w_safe_completed", + "skipped_field": "task_w_safe_skipped" + }, + { + "id": "w_crisis", + "number": 11, + "image_asset": "plh_images/workshops/w_crisis/tools.svg", + "relax_data": "@data.relax.relax_13", + "relax_title": "@data.relax.relax_13.title", + "intro_audio_asset": "plh_audio/topic_intros/w_crisis_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_crisis.mp3", + "title": "Dealing with Crisis", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Dealing with Crisis" + }, + "lower_case_title": { + "eng": "dealing with crisis" + }, + "in_text_title": { + "eng": "**Dealing with Crisis** @global.workshop" + }, + "description": { + "eng": "A crisis can happen in any family. You can be prepared." + }, + "intro_title": { + "eng": "Why dealing with crisis?" + }, + "tools": { + "eng": "How to deal with crisis" + }, + "caregiver_testimonial_script": { + "eng": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!" + }, + "teen_testimonial_script": { + "eng": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." + } + }, + "lower_case_title": "dealing with crisis", + "in_text_title": "**Dealing with Crisis** @global.workshop", + "description": "A crisis can happen in any family. You can be prepared.", + "intro_title": "Why dealing with crisis?", + "tools": "How to deal with crisis", + "caregiver_testimonial_script": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "teen_testimonial_script": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.", + "something_fun_data": "@data.something_fun.superpowers", + "completed_field": "task_w_crisis_completed", + "completed": "@fields.task_w_crisis_completed", + "skipped_field": "task_w_crisis_skipped" + }, + { + "id": "w_celebrate", + "number": 12, + "image_asset": "plh_images/workshops/w_celebrate/tools.svg", + "relax_data": "@data.relax.relax_14", + "relax_title": "@data.relax.relax_14.title", + "intro_audio_asset": "plh_audio/topic_intros/w_celebrate_intro.mp3", + "title": "Celebration and Next Steps", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Celebration and Next Steps" + }, + "lower_case_title": { + "eng": "celebration and next steps" + }, + "in_text_title": { + "eng": "**Celebration and Next Steps** @global.workshop" + }, + "description": { + "eng": "Celebrate everything you learned and continue to support your family." + }, + "intro_title": { + "eng": "Why celebration and next steps?" + }, + "tools": { + "eng": "How to support each other" + } + }, + "lower_case_title": "celebration and next steps", + "in_text_title": "**Celebration and Next Steps** @global.workshop", + "description": "Celebrate everything you learned and continue to support your family.", + "intro_title": "Why celebration and next steps?", + "tools": "How to support each other", + "completed_field": "task_w_celebrate_completed", + "completed": "@fields.task_w_celebrate_completed", + "skipped_field": "task_w_celebrate_skipped" + } + ] +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/habit_data_list.json b/packages/app-data/sheets/data_list/habit_data_list.json index 351e5f4378..382efdc9db 100644 --- a/packages/app-data/sheets/data_list/habit_data_list.json +++ b/packages/app-data/sheets/data_list/habit_data_list.json @@ -9,8 +9,6 @@ "task_id": "task_habit_relax", "image_asset": "plh_images/habits/habit_relax.svg", "lottie_asset": "plh_lottie/habits/habit_relax.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Relax", "_translations": { "title": { @@ -30,25 +28,14 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "mark_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, + "mark_text": {}, "short_mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -61,18 +48,18 @@ "eng": "**Relax** @global.parent_point" }, "description": { - "eng": "Doing a relaxation activity" + "eng": "Do a short relaxation activity: Take a deep breath or open one of the relaxation activities in @global.parent_app. You can do this anytime or anywhere. Taking care of yourself helps you to take care of others." }, "mark_text": { - "eng": "Every time you do a relax, tap the @global.parent_point and celebrate your success!" + "eng": "Every time you relax, tap the @global.parent_point and celebrate your success!" }, "short_mark_text": { "eng": "Did it? Tap it!" } }, "in_text_title": "**Relax** @global.parent_point", - "description": "Doing a relaxation activity", - "mark_text": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "description": "Do a short relaxation activity: Take a deep breath or open one of the relaxation activities in @global.parent_app. You can do this anytime or anywhere. Taking care of yourself helps you to take care of others.", + "mark_text": "Every time you relax, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, { @@ -80,8 +67,6 @@ "task_id": "task_habit_treat_yourself", "image_asset": "plh_images/habits/habit_treat_yourself.svg", "lottie_asset": "plh_lottie/habits/habit_treat_yourself.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Treat yourself well", "_translations": { "title": { @@ -101,12 +86,7 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, @@ -120,6 +100,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -132,7 +113,7 @@ "eng": "**Treat yourself well** @global.parent_point" }, "description": { - "eng": "Doing something they like for themselves" + "eng": "Even a bit of time for yourself will make a big difference in how you feel and respond in day-to-day life!\n\nDo something that makes you feel good: Have a hot drink, call a friend or relative, have a relaxing bath, read, or watch your favourite series." }, "mark_text": { "eng": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!" @@ -142,7 +123,7 @@ } }, "in_text_title": "**Treat yourself well** @global.parent_point", - "description": "Doing something they like for themselves", + "description": "Even a bit of time for yourself will make a big difference in how you feel and respond in day-to-day life!\n\nDo something that makes you feel good: Have a hot drink, call a friend or relative, have a relaxing bath, read, or watch your favourite series.", "mark_text": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -151,8 +132,6 @@ "task_id": "task_habit_praise_yourself", "image_asset": "plh_images/habits/habit_praise_yourself.svg", "lottie_asset": "plh_lottie/habits/habit_praise_yourself.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Praise yourself", "_translations": { "title": { @@ -172,16 +151,13 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -189,6 +165,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -201,7 +178,7 @@ "eng": "**Praise yourself** @global.parent_point" }, "description": { - "eng": "Praising themselves" + "eng": "Notice when you do something well and take a moment to appreciate yourself for it. Life can be challenging, but you are moving forward - you deserve praise for the big and the small things!" }, "mark_text": { "eng": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!" @@ -211,7 +188,7 @@ } }, "in_text_title": "**Praise yourself** @global.parent_point", - "description": "Praising themselves", + "description": "Notice when you do something well and take a moment to appreciate yourself for it. Life can be challenging, but you are moving forward - you deserve praise for the big and the small things!", "mark_text": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -220,8 +197,6 @@ "task_id": "task_habit_spend_time", "image_asset": "plh_images/habits/habit_spend_time.svg", "lottie_asset": "plh_lottie/habits/habit_spend_time.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "One-on-one time", "_translations": { "title": { @@ -241,12 +216,7 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, @@ -260,6 +230,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -272,7 +243,7 @@ "eng": "**One-on-one time** @global.parent_point" }, "description": { - "eng": "Spending time with their teen" + "eng": "Spend uninterrupted time together with your teen, doing something that THEY want or like to do. The more you do it the stronger your relationship gets." }, "mark_text": { "eng": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!" @@ -282,7 +253,7 @@ } }, "in_text_title": "**One-on-one time** @global.parent_point", - "description": "Spending time with their teen", + "description": "Spend uninterrupted time together with your teen, doing something that THEY want or like to do. The more you do it the stronger your relationship gets.", "mark_text": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -291,8 +262,6 @@ "task_id": "task_habit_praise_teen", "image_asset": "plh_images/habits/habit_praise_teen.svg", "lottie_asset": "plh_lottie/habits/habit_praise_teen.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Praise your teen", "_translations": { "title": { @@ -312,12 +281,7 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, @@ -331,6 +295,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -343,7 +308,7 @@ "eng": "**Praise your teen** @global.parent_point" }, "description": { - "eng": "Praising their teen when they did positive thing" + "eng": "Notice when your teen does something well and praise them right away - be specific and use their name. You can even praise them for trying.\n\nThe more you praise, the more positive behaviour you will see!" }, "mark_text": { "eng": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!" @@ -353,7 +318,7 @@ } }, "in_text_title": "**Praise your teen** @global.parent_point", - "description": "Praising their teen when they did positive thing", + "description": "Notice when your teen does something well and praise them right away - be specific and use their name. You can even praise them for trying.\n\nThe more you praise, the more positive behaviour you will see!", "mark_text": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -362,33 +327,16 @@ "task_id": "task_habit_instruct_positively", "image_asset": "plh_images/habits/habit_instruct_positively.svg", "lottie_asset": "plh_lottie/habits/habit_instruct_positively.json", - "fields::weekly_count": 0, - "fields::total_count": 0, - "title": "Get positive", + "title": "Positive instructions", "_translations": { "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, @@ -402,19 +350,20 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } }, "_translatedFields": { "title": { - "eng": "Get positive" + "eng": "Positive instructions" }, "in_text_title": { - "eng": "**Get positive** @global.parent_point" + "eng": "**Positive instructions** @global.parent_point" }, "description": { - "eng": "Giving their teen a positive instruction" + "eng": "Tell your teen what you DO want them to do, instead of what you DON'T want them to do. Be realistic, positive and specific when you give your teen instructions." }, "mark_text": { "eng": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!" @@ -423,8 +372,8 @@ "eng": "Did it? Tap it!" } }, - "in_text_title": "**Get positive** @global.parent_point", - "description": "Giving their teen a positive instruction", + "in_text_title": "**Positive instructions** @global.parent_point", + "description": "Tell your teen what you DO want them to do, instead of what you DON'T want them to do. Be realistic, positive and specific when you give your teen instructions.", "mark_text": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -433,37 +382,22 @@ "task_id": "task_habit_breathe", "image_asset": "plh_images/habits/habit_breathe.svg", "lottie_asset": "plh_lottie/habits/habit_breathe.json", - "fields::weekly_count": 0, - "fields::total_count": 0, - "title": "Breathe not yell", + "title": "Respond calmly", "_translations": { "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -471,19 +405,20 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } }, "_translatedFields": { "title": { - "eng": "Breathe not yell" + "eng": "Respond calmly" }, "in_text_title": { - "eng": "**Breathe not yell** @global.parent_point" + "eng": "**Respond calmly** @global.parent_point" }, "description": { - "eng": "Taking a pause before responding" + "eng": "When you are feeling angry or stressed, choose to take a breath, share how you feel and respond calmly." }, "mark_text": { "eng": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!" @@ -492,8 +427,8 @@ "eng": "Did it? Tap it!" } }, - "in_text_title": "**Breathe not yell** @global.parent_point", - "description": "Taking a pause before responding", + "in_text_title": "**Respond calmly** @global.parent_point", + "description": "When you are feeling angry or stressed, choose to take a breath, share how you feel and respond calmly.", "mark_text": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -502,8 +437,6 @@ "task_id": "task_habit_money", "image_asset": "plh_images/habits/habit_money.svg", "lottie_asset": "plh_lottie/habits/habit_money.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Good money choice", "_translations": { "title": { @@ -523,16 +456,13 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -540,6 +470,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -552,7 +483,7 @@ "eng": "**Good money choice** @global.parent_point" }, "description": { - "eng": "Keeping the budget" + "eng": "Make one of these good money choices:\n* Spend money according to your family budget. \n* Save extra money this week.\n* Respond well to a crisis that involves money.\n* Help a family member stick to your family budget.\n* Recognise something is a 'want' instead of a 'need'." }, "mark_text": { "eng": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!" @@ -562,7 +493,7 @@ } }, "in_text_title": "**Good money choice** @global.parent_point", - "description": "Keeping the budget", + "description": "Make one of these good money choices:\n* Spend money according to your family budget. \n* Save extra money this week.\n* Respond well to a crisis that involves money.\n* Help a family member stick to your family budget.\n* Recognise something is a 'want' instead of a 'need'.", "mark_text": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -571,8 +502,6 @@ "task_id": "task_habit_consequence", "image_asset": "plh_images/habits/habit_consequence.svg", "lottie_asset": "plh_lottie/habits/habit_consequence.json", - "fields::weekly_count": 0, - "fields::total_count": 0, "title": "Calm consequence", "_translations": { "title": { @@ -592,16 +521,13 @@ "za_zu": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -609,6 +535,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -621,7 +548,7 @@ "eng": "**Calm consequence** @global.parent_point" }, "description": { - "eng": "Giving their teen a consequence in a calm way" + "eng": "When your child is behaving badly, take a deep breath and give a consequence in a calm way.\n\nAgree on the calm consequence with your teen before the negative behaviour happens. Make sure it is realistic, manageable and fits the behaviour you are trying to correct." }, "mark_text": { "eng": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!" @@ -631,7 +558,7 @@ } }, "in_text_title": "**Calm consequence** @global.parent_point", - "description": "Giving their teen a consequence in a calm way", + "description": "When your child is behaving badly, take a deep breath and give a consequence in a calm way.\n\nAgree on the calm consequence with your teen before the negative behaviour happens. Make sure it is realistic, manageable and fits the behaviour you are trying to correct.", "mark_text": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" }, @@ -640,37 +567,22 @@ "task_id": "task_habit_safe", "image_asset": "plh_images/habits/habit_safe.svg", "lottie_asset": "plh_lottie/habits/habit_safe.json", - "fields::weekly_count": 0, - "fields::total_count": 0, - "title": "Safe", + "title": "Keep your teen safe", "_translations": { "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "description": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true + "tz_sw": true }, "mark_text": { "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -678,19 +590,20 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } }, "_translatedFields": { "title": { - "eng": "Safe" + "eng": "Keep your teen safe" }, "in_text_title": { - "eng": "**Safe** @global.parent_point" + "eng": "**Keep your teen safe** @global.parent_point" }, "description": { - "eng": "Planning or keeping a family safety plan" + "eng": "Help your teen stay safe by doing one of these things:\n* Map out or talk about safe and unsafe spaces in your community.\n* Map out or talk about safe and unsafe spaces online.\n* Make rules with your teen about how they can stay safe in the community and online.\n* Explain, remind, or use your teen's \"@global.safety_word\": Your teen can always tell you if they are in a dangerous or difficult situation, and you won't get angry or punish them." }, "mark_text": { "eng": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!" @@ -699,8 +612,8 @@ "eng": "Did it? Tap it!" } }, - "in_text_title": "**Safe** @global.parent_point", - "description": "Planning or keeping a family safety plan", + "in_text_title": "**Keep your teen safe** @global.parent_point", + "description": "Help your teen stay safe by doing one of these things:\n* Map out or talk about safe and unsafe spaces in your community.\n* Map out or talk about safe and unsafe spaces online.\n* Make rules with your teen about how they can stay safe in the community and online.\n* Explain, remind, or use your teen's \"@global.safety_word\": Your teen can always tell you if they are in a dangerous or difficult situation, and you won't get angry or punish them.", "mark_text": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", "short_mark_text": "Did it? Tap it!" } diff --git a/packages/app-data/sheets/data_list/hp_challenges_data.json b/packages/app-data/sheets/data_list/hp_challenges_data.json new file mode 100644 index 0000000000..3ad2a2d614 --- /dev/null +++ b/packages/app-data/sheets/data_list/hp_challenges_data.json @@ -0,0 +1,1111 @@ +{ + "flow_type": "data_list", + "flow_name": "hp_challenges_data", + "status": "released", + "data_list_name": "hp_challenges", + "rows": [ + { + "id": "w_praise", + "number_of_challenges": "3", + "question_text": "Did you have any challenges when trying to praise your teen?", + "_translations": { + "question_text": { + "tz_sw": true + }, + "text_challenge_1": { + "tz_sw": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to praise your teen?" + }, + "text_challenge_1": { + "eng": "I forgot to do it." + }, + "reply_challenge_1": { + "eng": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”." + }, + "text_challenge_2": { + "eng": "My teen was surprised or suspicious." + }, + "reply_challenge_2": { + "eng": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!" + }, + "text_challenge_3": { + "eng": "My teen did not like it." + }, + "reply_challenge_3": { + "eng": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!" + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "I forgot to do it.", + "reply_challenge_1": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text_challenge_2": "My teen was surprised or suspicious.", + "reply_challenge_2": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text_challenge_3": "My teen did not like it.", + "reply_challenge_3": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_stress", + "number_of_challenges": "5", + "question_text": "Did you have any challenges when sharing how you feel with your teen?", + "_translations": { + "question_text": { + "tz_sw": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": {}, + "text_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_5": {}, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when sharing how you feel with your teen?" + }, + "text_challenge_1": { + "eng": "I was afraid my teen would think I was weak." + }, + "reply_challenge_1": { + "eng": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better." + }, + "text_challenge_2": { + "eng": "I felt uncomfortable about naming specific difficult feelings." + }, + "reply_challenge_2": { + "eng": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding." + }, + "text_challenge_3": { + "eng": "My teen felt uncomfortable when I shared my feelings." + }, + "reply_challenge_3": { + "eng": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!" + }, + "text_challenge_4": { + "eng": "When I shared my feelings, my teen asked many questions, which made me uncomfortable." + }, + "reply_challenge_4": { + "eng": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It is up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight.”" + }, + "text_challenge_5": { + "eng": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that." + }, + "reply_challenge_5": { + "eng": "It is okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand." + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "I was afraid my teen would think I was weak.", + "reply_challenge_1": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text_challenge_2": "I felt uncomfortable about naming specific difficult feelings.", + "reply_challenge_2": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text_challenge_3": "My teen felt uncomfortable when I shared my feelings.", + "reply_challenge_3": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text_challenge_4": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "reply_challenge_4": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It is up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight.”", + "text_challenge_5": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "reply_challenge_5": "It is okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_money", + "number_of_challenges": "4", + "button_go_to_template_3_a": "lib_act_w_money", + "question_text": "Did you have any challenges when making your budget together?", + "_translations": { + "question_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": {}, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": {}, + "button_text_3_a": {}, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when making your budget together?" + }, + "text_challenge_1": { + "eng": "I did not want to tell my family how much I earn." + }, + "reply_challenge_1": { + "eng": "You do not have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”." + }, + "text_challenge_2": { + "eng": "When budgeting, we could not agree on what should fall under needs and what should fall under wants." + }, + "reply_challenge_2": { + "eng": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise." + }, + "text_challenge_3": { + "eng": "I did not understand what to do." + }, + "reply_challenge_3": { + "eng": "I am sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!" + }, + "button_text_3_a": { + "eng": "@data.workshop.w_money.tools" + }, + "text_challenge_4": { + "eng": "My teen did not want to do the budgeting with me." + }, + "reply_challenge_4": { + "eng": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!" + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "I did not want to tell my family how much I earn.", + "reply_challenge_1": "You do not have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text_challenge_2": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "reply_challenge_2": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text_challenge_3": "I did not understand what to do.", + "reply_challenge_3": "I am sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "button_text_3_a": "@data.workshop.w_money.tools", + "text_challenge_4": "My teen did not want to do the budgeting with me.", + "reply_challenge_4": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_rules", + "number_of_challenges": "6", + "question_text": "Did you have any challenges when trying to make a rule together?", + "_translations": { + "question_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to make a rule together?" + }, + "text_challenge_1": { + "eng": "My teen and I could not agree on a rule." + }, + "reply_challenge_1": { + "eng": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them." + }, + "text_challenge_2": { + "eng": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it." + }, + "reply_challenge_2": { + "eng": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities)." + }, + "text_challenge_3": { + "eng": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen." + }, + "reply_challenge_3": { + "eng": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules." + }, + "text_challenge_4": { + "eng": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen." + }, + "reply_challenge_4": { + "eng": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules." + }, + "text_challenge_5": { + "eng": "When we tried to set a rule, we got into an argument." + }, + "reply_challenge_5": { + "eng": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time." + }, + "text_challenge_6": { + "eng": "We were not able to stick to the rule." + }, + "reply_challenge_6": { + "eng": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?" + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "My teen and I could not agree on a rule.", + "reply_challenge_1": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text_challenge_2": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "reply_challenge_2": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text_challenge_3": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "reply_challenge_3": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text_challenge_4": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "reply_challenge_4": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text_challenge_5": "When we tried to set a rule, we got into an argument.", + "reply_challenge_5": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text_challenge_6": "We were not able to stick to the rule.", + "reply_challenge_6": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_consequence", + "number_of_challenges": "7", + "question_text": "Did you have any challenges when trying to introduce a consequence together?", + "_translations": { + "question_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_7": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_7": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to introduce a consequence together?" + }, + "text_challenge_1": { + "eng": "I got very angry when my teen broke the rule." + }, + "reply_challenge_1": { + "eng": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!" + }, + "text_challenge_2": { + "eng": "My teen got very angry with me after I gave the consequence." + }, + "reply_challenge_2": { + "eng": "When your teen gets angry, you might need to walk away until you are both calm.\n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and react calmly as you agreed if they used the “@global.safety_word” or broke a rule in order to stay safe." + }, + "text_challenge_3": { + "eng": "I introduced the consequence without first discussing it with my teen." + }, + "reply_challenge_3": { + "eng": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule." + }, + "text_challenge_4": { + "eng": "I forgot to follow through with the consequence." + }, + "reply_challenge_4": { + "eng": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future." + }, + "text_challenge_5": { + "eng": "Even with the consequence, my teen still does not follow the rule." + }, + "reply_challenge_5": { + "eng": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!" + }, + "text_challenge_6": { + "eng": "We only created a negative consequence, not a positive consequence." + }, + "reply_challenge_6": { + "eng": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!" + }, + "text_challenge_7": { + "eng": "My teen suggested being hit as a negative consequence." + }, + "reply_challenge_7": { + "eng": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!" + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "I got very angry when my teen broke the rule.", + "reply_challenge_1": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text_challenge_2": "My teen got very angry with me after I gave the consequence.", + "reply_challenge_2": "When your teen gets angry, you might need to walk away until you are both calm.\n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and react calmly as you agreed if they used the “@global.safety_word” or broke a rule in order to stay safe.", + "text_challenge_3": "I introduced the consequence without first discussing it with my teen.", + "reply_challenge_3": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text_challenge_4": "I forgot to follow through with the consequence.", + "reply_challenge_4": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text_challenge_5": "Even with the consequence, my teen still does not follow the rule.", + "reply_challenge_5": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text_challenge_6": "We only created a negative consequence, not a positive consequence.", + "reply_challenge_6": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text_challenge_7": "My teen suggested being hit as a negative consequence.", + "reply_challenge_7": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_solve", + "number_of_challenges": "5", + "button_go_to_template_1_a": "lib_act_w_solve", + "button_go_to_template_2_a": "lib_act_w_solve", + "question_text": "Did you have any challenges when trying to resolve the problem with your teen?", + "_translations": { + "question_text": { + "tz_sw": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "button_text_1_a": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "button_text_2_a": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to resolve the problem with your teen?" + }, + "text_challenge_1": { + "eng": "I forgot the steps of problem solving." + }, + "reply_challenge_1": { + "eng": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!" + }, + "button_text_1_a": { + "eng": "Four steps of problem solving" + }, + "text_challenge_2": { + "eng": "I started with the solutions right away." + }, + "reply_challenge_2": { + "eng": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions." + }, + "button_text_2_a": { + "eng": "Four steps of problem solving" + }, + "text_challenge_3": { + "eng": "We could not agree on a solution to try out and we got into an argument." + }, + "reply_challenge_3": { + "eng": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together." + }, + "text_challenge_4": { + "eng": "I got angry when the problem came up and I forgot to use the problem-solving steps." + }, + "reply_challenge_4": { + "eng": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing." + }, + "text_challenge_5": { + "eng": "My teen got angry and did not want to talk about the problem." + }, + "reply_challenge_5": { + "eng": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well." + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "I forgot the steps of problem solving.", + "reply_challenge_1": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "button_text_1_a": "Four steps of problem solving", + "text_challenge_2": "I started with the solutions right away.", + "reply_challenge_2": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "button_text_2_a": "Four steps of problem solving", + "text_challenge_3": "We could not agree on a solution to try out and we got into an argument.", + "reply_challenge_3": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text_challenge_4": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "reply_challenge_4": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text_challenge_5": "My teen got angry and did not want to talk about the problem.", + "reply_challenge_5": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_safe", + "number_of_challenges": "6", + "question_text": "Did you have any challenges when trying to map risks and support with your teen?", + "_translations": { + "question_text": { + "tz_sw": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": {}, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_5": {}, + "reply_challenge_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_6": {}, + "reply_challenge_6": {}, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to map risks and support with your teen?" + }, + "text_challenge_1": { + "eng": "My teen and I disagreed on which areas and online activities were unsafe." + }, + "reply_challenge_1": { + "eng": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts." + }, + "text_challenge_2": { + "eng": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do." + }, + "reply_challenge_2": { + "eng": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need." + }, + "text_challenge_3": { + "eng": "My teen insisted that the bar (or another place I do not feel is safe) is safe for them to visit. I do not know how to convince my teen." + }, + "reply_challenge_3": { + "eng": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe." + }, + "text_challenge_4": { + "eng": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry." + }, + "reply_challenge_4": { + "eng": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on." + }, + "text_challenge_5": { + "eng": "It was hard to identify support resources available in my community, because I do not know my community so well / there are few services available." + }, + "reply_challenge_5": { + "eng": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!" + }, + "text_challenge_6": { + "eng": "I do not know much about technology, so I do not know how to talk about it with my teen." + }, + "reply_challenge_6": { + "eng": "That is totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!" + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "My teen and I disagreed on which areas and online activities were unsafe.", + "reply_challenge_1": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text_challenge_2": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "reply_challenge_2": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text_challenge_3": "My teen insisted that the bar (or another place I do not feel is safe) is safe for them to visit. I do not know how to convince my teen.", + "reply_challenge_3": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text_challenge_4": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "reply_challenge_4": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text_challenge_5": "It was hard to identify support resources available in my community, because I do not know my community so well / there are few services available.", + "reply_challenge_5": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text_challenge_6": "I do not know much about technology, so I do not know how to talk about it with my teen.", + "reply_challenge_6": "That is totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "top_text": "Challenges other parents experience:" + }, + { + "id": "w_crisis", + "number_of_challenges": "3", + "button_go_to_template_1_a": "lib_act_w_solve", + "button_go_to_template_1_b": "parent_centre_help", + "question_text": "Did you have any challenges when trying to prepare for a possible crisis with your teen?", + "_translations": { + "question_text": { + "tz_sw": true + }, + "text_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "button_text_1_a": {}, + "button_text_1_b": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_challenge_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "top_text": { + "tz_sw": true + } + }, + "_translatedFields": { + "question_text": { + "eng": "Did you have any challenges when trying to prepare for a possible crisis with your teen?" + }, + "text_challenge_1": { + "eng": "My teen told me that something serious happened to them and I did not know how to handle it." + }, + "reply_challenge_1": { + "eng": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!" + }, + "button_text_1_a": { + "eng": "@data.workshop.w_solve.tools" + }, + "button_text_1_b": { + "eng": "Get support" + }, + "text_challenge_2": { + "eng": "The conversation made me very uncomfortable because I was reminded of a negative experience I had." + }, + "reply_challenge_2": { + "eng": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone." + }, + "text_challenge_3": { + "eng": "One of us did not feel comfortable." + }, + "reply_challenge_3": { + "eng": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared." + }, + "top_text": { + "eng": "Challenges other parents experience:" + } + }, + "text_challenge_1": "My teen told me that something serious happened to them and I did not know how to handle it.", + "reply_challenge_1": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "button_text_1_a": "@data.workshop.w_solve.tools", + "button_text_1_b": "Get support", + "text_challenge_2": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "reply_challenge_2": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text_challenge_3": "One of us did not feel comfortable.", + "reply_challenge_3": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "top_text": "Challenges other parents experience:" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/hp_check_in_data.json b/packages/app-data/sheets/data_list/hp_check_in_data.json new file mode 100644 index 0000000000..2f91ad17ab --- /dev/null +++ b/packages/app-data/sheets/data_list/hp_check_in_data.json @@ -0,0 +1,1029 @@ +{ + "flow_type": "data_list", + "flow_name": "hp_check_in_data", + "status": "released", + "data_list_name": "hp_check_in", + "rows": [ + { + "id": "w_1on1", + "habit_id": "spend_time", + "has_highlights": true, + "challenges_structure": "nested", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_1on1_home_practice", + "has_challenges": true, + "text_goal": "Your goal was to spend one-on-one time with your teen.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to spend one-on-one time with your teen." + }, + "reply_happy": { + "eng": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!" + }, + "reply_ok": { + "eng": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will definitely improve your relationship!" + }, + "reply_sad": { + "eng": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "reply_ok": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will definitely improve your relationship!", + "reply_sad": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + }, + { + "id": "w_praise", + "habit_id": "praise_teen", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_praise_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to praise your teen.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_no": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to praise your teen." + }, + "reply_no": { + "eng": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”." + }, + "reply_happy": { + "eng": "Great to hear it went well! Keep up the praise - you will see your teen do more and more of the behaviour you like to see!" + }, + "reply_ok": { + "eng": "It sometimes takes a bit of time to adjust to praising, but it makes a big difference, you will see." + }, + "reply_sad": { + "eng": "Sorry that you struggled with this. Starting with praise can take some practice, but you will see the positive results soon!" + }, + "outro_text": { + "eng": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + } + }, + "reply_no": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "reply_happy": "Great to hear it went well! Keep up the praise - you will see your teen do more and more of the behaviour you like to see!", + "reply_ok": "It sometimes takes a bit of time to adjust to praising, but it makes a big difference, you will see.", + "reply_sad": "Sorry that you struggled with this. Starting with praise can take some practice, but you will see the positive results soon!", + "outro_text": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?" + }, + { + "id": "w_instruct", + "habit_id": "instruct_positively", + "has_highlights": true, + "challenges_structure": "nested", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_instruct_home_practice", + "has_challenges": true, + "text_goal": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true + }, + "reply_ok": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_sad": {}, + "outro_text": {}, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen." + }, + "reply_happy": { + "eng": "Great to hear it went well. You are a star!" + }, + "reply_ok": { + "eng": "Sorry to hear it was difficult for you. Well done for trying!" + }, + "reply_sad": { + "eng": "Giving instructions in a new way takes some practice. Keep trying, you will soon see the difference it makes!" + }, + "outro_text": { + "eng": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU do as well!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + } + }, + "reply_happy": "Great to hear it went well. You are a star!", + "reply_ok": "Sorry to hear it was difficult for you. Well done for trying!", + "reply_sad": "Giving instructions in a new way takes some practice. Keep trying, you will soon see the difference it makes!", + "outro_text": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU do as well!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?" + }, + { + "id": "w_stress", + "habit_id": "breathe", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_stress_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. \n\nYour goal was also to talk to your teen about how you both felt in a stressful situation.", + "_translations": { + "text_goal": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. \n\nYour goal was also to talk to your teen about how you both felt in a stressful situation." + }, + "reply_happy": { + "eng": "Wonderful! You deserve all the happy times!" + }, + "reply_ok": { + "eng": "Sorry that this was difficult for you. You are a star for trying!" + }, + "reply_sad": { + "eng": "Life can be so stressful. Every small step counts. Keep up the good work!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "Wonderful! You deserve all the happy times!", + "reply_ok": "Sorry that this was difficult for you. You are a star for trying!", + "reply_sad": "Life can be so stressful. Every small step counts. Keep up the good work!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + }, + { + "id": "w_money", + "habit_id": "money", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_money_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to make a family budget and savings plan.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to make a family budget and savings plan." + }, + "reply_happy": { + "eng": "Great to hear it went well. Talking about your finances together really makes your family stronger!" + }, + "reply_ok": { + "eng": "It is never easy to talk about money. Well done on starting the conversation and teaching your teen about this." + }, + "reply_sad": { + "eng": "Sorry to hear it was difficult for you. Well done for trying. Helping your teen understand money better will benefit them so much in life!" + }, + "outro_text": { + "eng": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + } + }, + "reply_happy": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "reply_ok": "It is never easy to talk about money. Well done on starting the conversation and teaching your teen about this.", + "reply_sad": "Sorry to hear it was difficult for you. Well done for trying. Helping your teen understand money better will benefit them so much in life!", + "outro_text": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?" + }, + { + "id": "w_rules", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_rules_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to make ONE rule with your teen.", + "_translations": { + "text_goal": { + "tz_sw": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": {}, + "outro_text": {}, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to make ONE rule with your teen." + }, + "reply_happy": { + "eng": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!" + }, + "reply_ok": { + "eng": "It can be hard to create your first rule together, but you will see the benefits of involving your family. Keep trying!" + }, + "reply_sad": { + "eng": "Sorry that this has been difficult. Creating rules together requires some practice but it is worth it!" + }, + "outro_text": { + "eng": "Well done for this! It is not easy, and teenagers will not keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + } + }, + "reply_happy": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "reply_ok": "It can be hard to create your first rule together, but you will see the benefits of involving your family. Keep trying!", + "reply_sad": "Sorry that this has been difficult. Creating rules together requires some practice but it is worth it!", + "outro_text": "Well done for this! It is not easy, and teenagers will not keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?" + }, + { + "id": "w_consequence", + "habit_id": "consequence", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_consequence_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule)." + }, + "reply_happy": { + "eng": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer." + }, + "reply_ok": { + "eng": "Staying calm and consistent can be hard, but you are doing so well. You can do this!" + }, + "reply_sad": { + "eng": "Sorry that this was difficult for you. Setting consequences together will make your teen want to follow the rules more often!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "reply_ok": "Staying calm and consistent can be hard, but you are doing so well. You can do this!", + "reply_sad": "Sorry that this was difficult for you. Setting consequences together will make your teen want to follow the rules more often!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + }, + { + "id": "w_solve", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_solve_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to try and resolve a problem or conflict together with your teen.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to try and resolve a problem or conflict together with your teen." + }, + "reply_happy": { + "eng": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!" + }, + "reply_ok": { + "eng": "Solving problems together takes some practice. The more often you involve your teen when you are both calm, the better it will go. Well done for trying!" + }, + "reply_sad": { + "eng": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "reply_ok": "Solving problems together takes some practice. The more often you involve your teen when you are both calm, the better it will go. Well done for trying!", + "reply_sad": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + }, + { + "id": "w_safe", + "habit_id": "safe", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_safe_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to map risks and support systems with your teen - both in your community and online." + }, + "reply_happy": { + "eng": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe." + }, + "reply_ok": { + "eng": "Even if it did not go so well yet, you will get there! Mapping risks and support systems together will help your family. Well done for trying." + }, + "reply_sad": { + "eng": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "reply_ok": "Even if it did not go so well yet, you will get there! Mapping risks and support systems together will help your family. Well done for trying.", + "reply_sad": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + }, + { + "id": "w_crisis", + "habit_id": "safe", + "activity_image_ind": "plh_images/workshop_modes/individual/with_teen.svg", + "activity_image_tog": "plh_images/workshop_modes/group/with_teen.svg", + "button_no_go_to_template": "w_crisis_home_practice", + "has_highlights": false, + "has_challenges": true, + "challenges_structure": "plain", + "text_goal": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "_translations": { + "text_goal": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_happy": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_ok": { + "tz_sw": true + }, + "reply_sad": {}, + "activity_title": {}, + "intro_text": {}, + "question_done": { + "tz_sw": true + }, + "reply_no": {}, + "button_no_text": {}, + "question_how": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "outro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "text_goal": { + "eng": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it." + }, + "reply_happy": { + "eng": "Great to hear it went well!" + }, + "reply_ok": { + "eng": "It can be hard to think and talk about a crisis happening in your family. By trying you are already on the right path. Keep up the good work!" + }, + "reply_sad": { + "eng": "Sorry that it did not go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?" + }, + "activity_title": { + "eng": "@global.hp_review" + }, + "intro_text": { + "eng": "@global.text_hp_review" + }, + "question_done": { + "eng": "Did you have a chance to try this?" + }, + "reply_no": { + "eng": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can." + }, + "button_no_text": { + "eng": "@global.home_practice" + }, + "question_how": { + "eng": "How did it go?" + }, + "outro_text": { + "eng": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + }, + "reply_happy": "Great to hear it went well!", + "reply_ok": "It can be hard to think and talk about a crisis happening in your family. By trying you are already on the right path. Keep up the good work!", + "reply_sad": "Sorry that it did not go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "activity_title": "@global.hp_review", + "intro_text": "@global.text_hp_review", + "question_done": "Did you have a chance to try this?", + "reply_no": "That is okay, do not be too hard on yourself. We encourage you to try and do it when you can.", + "button_no_text": "@global.home_practice", + "question_how": "How did it go?", + "outro_text": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/hp_praise_messages.json b/packages/app-data/sheets/data_list/hp_praise_messages.json index fffbb0abd7..760df50d66 100644 --- a/packages/app-data/sheets/data_list/hp_praise_messages.json +++ b/packages/app-data/sheets/data_list/hp_praise_messages.json @@ -417,20 +417,13 @@ "ok", "sad" ], - "text": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Sorry that this has been difficult. Creating rules together requires some practice but it is worth it!", "_translations": { - "text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "text": {} }, "_translatedFields": { "text": { - "eng": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!" + "eng": "Sorry that this has been difficult. Creating rules together requires some practice but it is worth it!" } } }, diff --git a/packages/app-data/sheets/data_list/lifecycle_actions/launch_actions.json b/packages/app-data/sheets/data_list/lifecycle_actions/launch_actions.json new file mode 100644 index 0000000000..b22a2becd5 --- /dev/null +++ b/packages/app-data/sheets/data_list/lifecycle_actions/launch_actions.json @@ -0,0 +1,264 @@ +{ + "flow_type": "data_list", + "flow_subtype": "lifecycle_actions", + "flow_name": "launch_actions", + "status": "released", + "rows": [ + { + "lifecycle_event": "app_start", + "id": "app_start_update_complete", + "priority": 1, + "condition_list": [ + "@fields._app_update_downloaded" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "app_update", + "args": [ + "complete" + ], + "_raw": "app_update: complete", + "_cleaned": "click | app_update: complete" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_set_skin", + "priority": 2, + "condition_list": [ + "@fields._app_skin != \"modular\" && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "emit", + "args": [ + "set_skin", + "modular" + ], + "_raw": "emit: set_skin: modular", + "_cleaned": "click | emit: set_skin: modular" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_set_theme", + "priority": 3, + "condition_list": [ + "@fields._app_theme != \"professional\" && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "emit", + "args": [ + "set_theme", + "professional" + ], + "_raw": "emit: set_theme: professional", + "_cleaned": "click | emit: set_theme: professional" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_splash_screens", + "priority": 4, + "condition_list": [ + "!@fields.splash_screens_viewed && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "splash_screens" + ], + "_raw": "pop_up: splash_screens | fullscreen: true, showCloseButton: false", + "_cleaned": "click | pop_up: splash_screens | fullscreen: true, showCloseButton: false", + "params": { + "fullscreen": true, + "showCloseButton": false + } + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "splash_screens_viewed", + true + ], + "_raw": "set_field: splash_screens_viewed: true", + "_cleaned": "click | set_field: splash_screens_viewed: true" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_language_select", + "priority": 5, + "condition_list": [ + "!@fields.language_selected && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "language_select" + ], + "_raw": "pop_up: language_select | fullscreen: true, showCloseButton: false", + "_cleaned": "click | pop_up: language_select | fullscreen: true, showCloseButton: false", + "params": { + "fullscreen": true, + "showCloseButton": false + } + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "language_selected", + true + ], + "_raw": "set_field: language_selected: true", + "_cleaned": "click | set_field: language_selected: true" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_accept_terms", + "priority": 6, + "condition_list": [ + "!@fields.terms_v20230301_accepted && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "accept_terms" + ], + "_raw": "pop_up: accept_terms | fullscreen: true, showCloseButton: false", + "_cleaned": "click | pop_up: accept_terms | fullscreen: true, showCloseButton: false", + "params": { + "fullscreen": true, + "showCloseButton": false + } + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_user_info", + "priority": 7, + "condition_list": [ + "!@fields.user_info_submitted && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "user_info" + ], + "_raw": "pop_up: user_info | fullscreen: true, showCloseButton: false", + "_cleaned": "click | pop_up: user_info | fullscreen: true, showCloseButton: false", + "params": { + "fullscreen": true, + "showCloseButton": false + } + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "user_info_submitted", + true + ], + "_raw": "set_field: user_info_submitted: true", + "_cleaned": "click | set_field: user_info_submitted: true" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_home_screen_tour", + "priority": 8, + "condition_list": [ + "!@fields.home_screen_tour_viewed && @fields._app_skin ==\"weekly_workshop\" && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "start_tour", + "args": [ + "home_screen_tour_intro" + ], + "_raw": "start_tour: home_screen_tour_intro", + "_cleaned": "click | start_tour: home_screen_tour_intro" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "home_screen_tour_viewed", + true + ], + "_raw": "set_field: home_screen_tour_viewed: true", + "_cleaned": "click | set_field: home_screen_tour_viewed: true" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_home_screen_tour", + "priority": 9, + "condition_list": [ + "!@fields.home_screen_modular_tour_viewed && @fields._app_skin ==\"modular\" && @fields.user_mode" + ], + "action_list": [ + { + "trigger": "click", + "action_id": "start_tour", + "args": [ + "home_screen_modular_tour_intro" + ], + "_raw": "start_tour: home_screen_modular_tour_intro", + "_cleaned": "click | start_tour: home_screen_modular_tour_intro" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "home_screen_modular_tour_viewed", + true + ], + "_raw": "set_field: home_screen_modular_tour_viewed: true", + "_cleaned": "click | set_field: home_screen_modular_tour_viewed: true" + } + ] + }, + { + "lifecycle_event": "app_start", + "id": "app_start_update_prompt", + "priority": 10, + "action_list": [ + { + "trigger": "click", + "action_id": "app_update", + "args": [ + "prompt" + ], + "_raw": "app_update: prompt", + "_cleaned": "click | app_update: prompt" + } + ] + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/number_data.json b/packages/app-data/sheets/data_list/number_data.json new file mode 100644 index 0000000000..d6e3cc99f1 --- /dev/null +++ b/packages/app-data/sheets/data_list/number_data.json @@ -0,0 +1,57 @@ +{ + "flow_type": "data_list", + "flow_name": "number_data", + "status": "released", + "data_list_name": "number", + "rows": [ + { + "id": 1, + "teen_age": "teen_1_age" + }, + { + "id": 2, + "teen_age": "teen_2_age" + }, + { + "id": 3, + "teen_age": "teen_3_age" + }, + { + "id": 4, + "teen_age": "teen_4_age" + }, + { + "id": 5, + "teen_age": "teen_5_age" + }, + { + "id": 6, + "teen_age": "teen_6_age" + }, + { + "id": 7, + "teen_age": "teen_7_age" + }, + { + "id": 8, + "teen_age": "teen_8_age" + }, + { + "id": 9, + "teen_age": "teen_9_age" + }, + { + "id": 10, + "teen_age": "teen_10_age" + }, + { + "id": 11, + "teen_age": "teen_11_age" + }, + { + "id": 12, + "teen_age": "teen_12_age" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/organisations_tz_data_list.json b/packages/app-data/sheets/data_list/organisations_tz_data_list.json new file mode 100644 index 0000000000..f23e608e8f --- /dev/null +++ b/packages/app-data/sheets/data_list/organisations_tz_data_list.json @@ -0,0 +1,13 @@ +{ + "flow_type": "data_list", + "flow_name": "organisations_tz_data_list", + "status": "released", + "data_list_name": "organisations_plh_tz", + "rows": [ + { + "id": "organisation_1", + "name": "ICS" + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/organisations_za_data_list.json b/packages/app-data/sheets/data_list/organisations_za_data_list.json new file mode 100644 index 0000000000..28bc1cb1fc --- /dev/null +++ b/packages/app-data/sheets/data_list/organisations_za_data_list.json @@ -0,0 +1,33 @@ +{ + "flow_type": "data_list", + "flow_name": "organisations_za_data_list", + "status": "released", + "data_list_name": "organisations_plh_za", + "rows": [ + { + "id": "organisation_1", + "name": "Amathuba Collective" + }, + { + "id": "organisation_2", + "name": "Dlalanathi" + }, + { + "id": "organisation_3", + "name": "Hillcrest AIDS Centre Trust" + }, + { + "id": "organisation_4", + "name": "HPCCC" + }, + { + "id": "organisation_5", + "name": "Seven Passes Initiative" + }, + { + "id": "organisation_6", + "name": "Zlto" + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/parent_centre_data_list.json b/packages/app-data/sheets/data_list/parent_centre_data_list.json index d626c158cf..1d0c4c8bd5 100644 --- a/packages/app-data/sheets/data_list/parent_centre_data_list.json +++ b/packages/app-data/sheets/data_list/parent_centre_data_list.json @@ -6,7 +6,7 @@ "rows": [ { "id": "my_tips", - "show": true, + "show": "@fields._app_skin == \"weekly_workshop\"", "icon_asset": "plh_images/icons/light_bulb_heart_white.svg", "template": "parent_centre_my_tips", "tile_style": "parent_centre_1", @@ -76,79 +76,12 @@ }, "location_text": "**Essential Tools** in the @global.parent_centre" }, - { - "id": "customisation", - "show": "@fields.survey_welcome_completed", - "icon_asset": "plh_images/icons/phone_heart_white.svg", - "template": "setup_and_survey_stepper", - "tile_style": "parent_centre_4", - "click_count_field": "click_pc_customisation_count", - "title": "Customise @global.parent_app", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "location_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_translatedFields": { - "title": { - "eng": "Customise @global.parent_app" - }, - "location_text": { - "eng": "**Customise @global.parent_app** in the @global.parent_centre" - } - }, - "location_text": "**Customise @global.parent_app** in the @global.parent_centre" - }, - { - "id": "customise_again", - "show": "!@fields.survey_welcome_completed", - "icon_asset": "plh_images/icons/phone_heart_white.svg", - "template": "parent_centre_customisation", - "tile_style": "parent_centre_4", - "click_count_field": "click_pc_customise_again_count", - "title": "Customise Again", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "location_text": { - "tz_sw": true - } - }, - "_translatedFields": { - "title": { - "eng": "Customise Again" - }, - "location_text": { - "eng": "**Customise Again** in the @global.parent_centre" - } - }, - "location_text": "**Customise Again** in the @global.parent_centre" - }, { "id": "relax_and_activities", "show": true, "icon_asset": "plh_images/icons/smile_eyes_up_white.svg", "template": "parent_centre_relax_and_act", - "tile_style": "parent_centre_1", + "tile_style": "parent_centre_4", "click_count_field": "click_pc_relax_and_activities_count", "title": "Relax & Activities", "_translations": { @@ -184,7 +117,7 @@ "show": true, "icon_asset": "plh_images/icons/question_mark_white.svg", "template": "parent_centre_help", - "tile_style": "parent_centre_3", + "tile_style": "parent_centre_1", "click_count_field": "click_pc_help_count", "title": "Help", "_translations": { @@ -215,48 +148,12 @@ }, "location_text": "**Help** in the @global.parent_centre" }, - { - "id": "technical_support", - "show": true, - "icon_asset": "plh_images/icons/info_phone_white.svg", - "template": "parent_centre_technical_support", - "tile_style": "parent_centre_4", - "click_count_field": "click_pc_technical_support_count", - "title": "Technical Support", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "location_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_translatedFields": { - "title": { - "eng": "Technical Support" - }, - "location_text": { - "eng": "**Technical Support** in the @global.parent_centre" - } - }, - "location_text": "**Technical Support** in the @global.parent_centre" - }, { "id": "covid", "show": true, "icon_asset": "plh_images/icons/ask_question_white.svg", "template": "parent_centre_covid", - "tile_style": "parent_centre_1", + "tile_style": "parent_centre_3", "click_count_field": "click_pc_covid_count", "title": "Coping with @global.covid", "_translations": { @@ -264,6 +161,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -271,6 +169,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -290,7 +189,7 @@ "show": true, "icon_asset": "plh_images/icons/hands_support_heart_white.svg", "template": "parent_centre_bereavement", - "tile_style": "parent_centre_3", + "tile_style": "parent_centre_4", "click_count_field": "click_pc_bereavement_count", "title": "Coping with grief", "_translations": { @@ -298,6 +197,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true }, @@ -322,10 +222,10 @@ }, { "id": "message_archive", - "show": true, + "show": "@fields._app_skin == \"weekly_workshop\"", "icon_asset": "plh_images/icons/letter_white.svg", "template": "parent_centre_message_archive", - "tile_style": "parent_centre_4", + "tile_style": "parent_centre_1", "click_count_field": "click_pc_message_archive_count", "title": "Message Archive", "_translations": { @@ -355,76 +255,6 @@ } }, "location_text": "**Message Archive** in the @global.parent_centre" - }, - { - "id": "support_contacts", - "show": false, - "icon_asset": "plh_images/icons/hands_support_heart_white.svg", - "tile_style": "parent_centre_1", - "click_count_field": "click_pc_support_contacts_count", - "title": "Support Contacts", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "location_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_translatedFields": { - "title": { - "eng": "Support Contacts" - }, - "location_text": { - "eng": "**Support Contacts** in the @global.parent_centre" - } - }, - "location_text": "**Support Contacts** in the @global.parent_centre" - }, - { - "id": "evidence_base", - "show": false, - "icon_asset": "plh_images/icons/documents_white.svg", - "tile_style": "parent_centre_3", - "click_count_field": "click_pc_evidence_base_count", - "title": "Evidence Base", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "location_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_translatedFields": { - "title": { - "eng": "Evidence Base" - }, - "location_text": { - "eng": "**Evidence Base** in the @global.parent_centre" - } - }, - "location_text": "**Evidence Base** in the @global.parent_centre" } ], "_xlsxPath": "global/data/parent_centre_data_list.xlsx" diff --git a/packages/app-data/sheets/data_list/partners_data_list.json b/packages/app-data/sheets/data_list/partners_data_list.json new file mode 100644 index 0000000000..17e97bd11f --- /dev/null +++ b/packages/app-data/sheets/data_list/partners_data_list.json @@ -0,0 +1,69 @@ +{ + "flow_type": "data_list", + "flow_name": "partners_data_list", + "status": "released", + "data_list_name": "partners", + "rows": [ + { + "id": "plh", + "splash_page": 1, + "name": "PLH", + "image_asset": "plh_images/logos/plh.png" + }, + { + "id": "unicef", + "splash_page": 1, + "name": "UNICEF", + "image_asset": "plh_images/logos/unicef.png" + }, + { + "id": "who", + "splash_page": 1, + "name": "WHO", + "image_asset": "plh_images/logos/who.png" + }, + { + "id": "university_of_oxford", + "splash_page": 1, + "name": "University of Oxford", + "image_asset": "plh_images/logos/university_of_oxford.png" + }, + { + "id": "cwb", + "splash_page": 1, + "name": "Clowns Without Borders", + "image_asset": "plh_images/logos/cwb.png" + }, + { + "id": "uct", + "splash_page": 1, + "name": "UCT", + "image_asset": "plh_images/logos/uct.png" + }, + { + "id": "nimr", + "splash_page": 2, + "name": "NIMR", + "image_asset": "plh_images/logos/nimr.png" + }, + { + "id": "gisp", + "splash_page": 2, + "name": "Global Initiative to Support Parents", + "image_asset": "plh_images/logos/gisp.png" + }, + { + "id": "ics", + "splash_page": 2, + "name": "ICS", + "image_asset": "plh_images/logos/ics.png" + }, + { + "id": "idems", + "splash_page": 2, + "name": "IDEMS", + "image_asset": "plh_images/logos/idems.png" + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/partners_tz_data_list.json b/packages/app-data/sheets/data_list/partners_tz_data_list.json new file mode 100644 index 0000000000..726733d529 --- /dev/null +++ b/packages/app-data/sheets/data_list/partners_tz_data_list.json @@ -0,0 +1,27 @@ +{ + "flow_type": "data_list", + "flow_name": "partners_tz_data_list", + "status": "released", + "data_list_name": "partners_plh_tz", + "rows": [ + { + "id": "tz_government", + "splash_page": 2, + "name": "Tanzanian government", + "image_asset": "plh_images/logos/tz_government.png" + }, + { + "id": "usaid", + "splash_page": 2, + "name": "USAID", + "image_asset": "plh_images/logos/usaid.png" + }, + { + "id": "vodacom", + "splash_page": 2, + "name": "Vodacom Tanzania", + "image_asset": "plh_images/logos/vodacom.png" + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/partners_za_data_list.json b/packages/app-data/sheets/data_list/partners_za_data_list.json new file mode 100644 index 0000000000..f1a4adb698 --- /dev/null +++ b/packages/app-data/sheets/data_list/partners_za_data_list.json @@ -0,0 +1,15 @@ +{ + "flow_type": "data_list", + "flow_name": "partners_za_data_list", + "status": "released", + "data_list_name": "partners_plh_za", + "rows": [ + { + "id": "za_dsd", + "splash_page": 2, + "name": "South African Department of Social Development", + "image_asset": "plh_images/logos/za_dsd.png" + } + ], + "_xlsxPath": "global/data/partners_data_lists.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/relax_list.json b/packages/app-data/sheets/data_list/relax_list.json index 2611628378..f006b54579 100644 --- a/packages/app-data/sheets/data_list/relax_list.json +++ b/packages/app-data/sheets/data_list/relax_list.json @@ -6,12 +6,13 @@ "rows": [ { "id": "relax_1", - "task_id": "task_relax", "text_template": "relax_1_text", "activity_template": "activity_relax_1", "audio_asset": "plh_audio/relax/relax_1.mp3", "favourite_field": "relax_1_favourite", "type": "relax_passive_short", + "completed_field": "relax_1_completed", + "completed": "@fields.relax_1_completed", "title": "Quick pause", "_translations": { "title": { @@ -32,12 +33,13 @@ { "id": "relax_2", "workshop": "1on1", - "task_id": "task_relax", "text_template": "relax_2_text", "activity_template": "activity_relax_2", "audio_asset": "plh_audio/relax/relax_2.mp3", "favourite_field": "relax_2_favourite", "type": "relax_passive_short", + "completed_field": "relax_2_completed", + "completed": "@fields.relax_2_completed", "title": "Power of three", "_translations": { "title": { @@ -58,12 +60,13 @@ { "id": "relax_3", "workshop": "praise", - "task_id": "task_relax", "text_template": "relax_3_text", "activity_template": "activity_relax_3", "audio_asset": "plh_audio/relax/relax_3.mp3", "favourite_field": "relax_3_favourite", "type": "relax_passive_short", + "completed_field": "relax_3_completed", + "completed": "@fields.relax_3_completed", "title": "One thing today", "_translations": { "title": { @@ -84,12 +87,13 @@ { "id": "relax_4", "workshop": "instruct", - "task_id": "task_relax", "text_template": "relax_4_text", "activity_template": "activity_relax_4", "audio_asset": "plh_audio/relax/relax_4.mp3", "favourite_field": "relax_4_favourite", "type": "relax_passive_short", + "completed_field": "relax_4_completed", + "completed": "@fields.relax_4_completed", "title": "Breathe to three", "_translations": { "title": { @@ -110,12 +114,13 @@ { "id": "relax_5", "workshop": "self_care", - "task_id": "task_relax", "text_template": "relax_5_text", "activity_template": "activity_relax_5", "audio_asset": "plh_audio/relax/relax_5.mp3", "favourite_field": "relax_5_favourite", "type": "relax_passive_short", + "completed_field": "relax_5_completed", + "completed": "@fields.relax_5_completed", "title": "In and out", "_translations": { "title": { @@ -135,12 +140,13 @@ }, { "id": "relax_6", - "task_id": "task_relax", "text_template": "relax_6_text", "activity_template": "activity_relax_6", "audio_asset": "plh_audio/relax/relax_6.mp3", "favourite_field": "relax_6_favourite", "type": "relax_passive_short", + "completed_field": "relax_6_completed", + "completed": "@fields.relax_6_completed", "title": "Think about today", "_translations": { "title": { @@ -161,12 +167,13 @@ { "id": "relax_7", "workshop": "stress", - "task_id": "task_relax", "text_template": "relax_7_text", "activity_template": "activity_relax_7", "audio_asset": "plh_audio/relax/relax_7.mp3", "favourite_field": "relax_7_favourite", "type": "relax_passive_short", + "completed_field": "relax_7_completed", + "completed": "@fields.relax_7_completed", "title": "Pause to respond", "_translations": { "title": { @@ -187,12 +194,13 @@ { "id": "relax_8", "workshop": "money", - "task_id": "task_relax", "text_template": "relax_8_text", "activity_template": "activity_relax_8", "audio_asset": "plh_audio/relax/relax_8.mp3", "favourite_field": "relax_8_favourite", "type": "relax_passive_short", + "completed_field": "relax_8_completed", + "completed": "@fields.relax_8_completed", "title": "Small things", "_translations": { "title": { @@ -213,12 +221,13 @@ { "id": "relax_9", "workshop": "rules", - "task_id": "task_relax", "text_template": "relax_9_text", "activity_template": "activity_relax_9", "audio_asset": "plh_audio/relax/relax_9.mp3", "favourite_field": "relax_9_favourite", "type": "relax_passive_short", + "completed_field": "relax_9_completed", + "completed": "@fields.relax_9_completed", "title": "Body scan", "_translations": { "title": { @@ -239,12 +248,13 @@ { "id": "relax_10", "workshop": "consequence", - "task_id": "task_relax", "text_template": "relax_10_text", "activity_template": "activity_relax_10", "audio_asset": "plh_audio/relax/relax_10.mp3", "favourite_field": "relax_10_favourite", "type": "relax_passive_short", + "completed_field": "relax_10_completed", + "completed": "@fields.relax_10_completed", "title": "Feel the ground", "_translations": { "title": { @@ -265,12 +275,13 @@ { "id": "relax_11", "workshop": "solve", - "task_id": "task_relax", "text_template": "relax_11_text", "activity_template": "activity_relax_11", "audio_asset": "plh_audio/relax/relax_11.mp3", "favourite_field": "relax_11_favourite", "type": "relax_passive_short", + "completed_field": "relax_11_completed", + "completed": "@fields.relax_11_completed", "title": "Counting sounds", "_translations": { "title": { @@ -291,38 +302,33 @@ { "id": "relax_12", "workshop": "safe", - "task_id": "task_relax", "text_template": "relax_12_text", "activity_template": "activity_relax_12", "audio_asset": "plh_audio/relax/relax_12.mp3", "favourite_field": "relax_12_favourite", "type": "relax_passive_short", - "title": "Feel your feeling", + "completed_field": "relax_12_completed", + "completed": "@fields.relax_12_completed", + "title": "Feel your feelings", "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "title": {} }, "_translatedFields": { "title": { - "eng": "Feel your feeling" + "eng": "Feel your feelings" } } }, { "id": "relax_13", "workshop": "crisis", - "task_id": "task_relax", "text_template": "relax_13_text", "activity_template": "activity_relax_13", "audio_asset": "plh_audio/relax/relax_13.mp3", "favourite_field": "relax_13_favourite", "type": "relax_active", + "completed_field": "relax_13_completed", + "completed": "@fields.relax_13_completed", "title": "Your song", "_translations": { "title": { @@ -343,12 +349,13 @@ { "id": "relax_14", "workshop": "celebrate", - "task_id": "task_relax", "text_template": "relax_14_text", "activity_template": "activity_relax_14", "audio_asset": "plh_audio/relax/relax_14.mp3", "favourite_field": "relax_14_favourite", "type": "relax_passive_short", + "completed_field": "relax_14_completed", + "completed": "@fields.relax_14_completed", "title": "Ground & gratitude", "_translations": { "title": { @@ -368,12 +375,13 @@ }, { "id": "relax_15", - "task_id": "task_relax", "text_template": "relax_15_text", "activity_template": "activity_relax_15", "audio_asset": "plh_audio/relax/relax_15.mp3", "favourite_field": "relax_15_favourite", "type": "relax_passive_short", + "completed_field": "relax_15_completed", + "completed": "@fields.relax_15_completed", "title": "Notice how you feel", "_translations": { "title": { @@ -393,12 +401,13 @@ }, { "id": "relax_16", - "task_id": "task_relax", "text_template": "relax_16_text", "activity_template": "activity_relax_16", "audio_asset": "plh_audio/relax/relax_16.mp3", "favourite_field": "relax_16_favourite", "type": "relax_passive_short", + "completed_field": "relax_16_completed", + "completed": "@fields.relax_16_completed", "title": "Pause power", "_translations": { "title": { @@ -418,12 +427,13 @@ }, { "id": "relax_17", - "task_id": "task_relax", "text_template": "relax_17_text", "activity_template": "activity_relax_17", "audio_asset": "plh_audio/relax/relax_17.mp3", "favourite_field": "relax_17_favourite", "type": "relax_passive_short", + "completed_field": "relax_17_completed", + "completed": "@fields.relax_17_completed", "title": "Praise yourself", "_translations": { "title": { @@ -443,12 +453,13 @@ }, { "id": "relax_18", - "task_id": "task_relax", "text_template": "relax_18_text", "activity_template": "activity_relax_18", "audio_asset": "plh_audio/relax/relax_18.mp3", "favourite_field": "relax_18_favourite", "type": "relax_passive_long", + "completed_field": "relax_18_completed", + "completed": "@fields.relax_18_completed", "title": "Taking care of yourself", "_translations": { "title": { @@ -468,12 +479,13 @@ }, { "id": "relax_19", - "task_id": "task_relax", "text_template": "relax_19_text", "activity_template": "activity_relax_19", "audio_asset": "plh_audio/relax/relax_19.mp3", "favourite_field": "relax_19_favourite", "type": "relax_passive_long", + "completed_field": "relax_19_completed", + "completed": "@fields.relax_19_completed", "title": "Take a pause", "_translations": { "title": { @@ -493,12 +505,13 @@ }, { "id": "relax_20", - "task_id": "task_relax", "text_template": "relax_20_text", "activity_template": "activity_relax_20", "audio_asset": "plh_audio/relax/relax_20.mp3", "favourite_field": "relax_20_favourite", "type": "relax_active", + "completed_field": "relax_20_completed", + "completed": "@fields.relax_20_completed", "title": "Physical activity", "_translations": { "title": { @@ -518,12 +531,13 @@ }, { "id": "relax_21", - "task_id": "task_relax", "text_template": "relax_21_text", "activity_template": "activity_relax_21", "audio_asset": "plh_audio/relax/relax_21.mp3", "favourite_field": "relax_21_favourite", "type": "relax_active", + "completed_field": "relax_21_completed", + "completed": "@fields.relax_21_completed", "title": "List of things", "_translations": { "title": { @@ -543,12 +557,13 @@ }, { "id": "relax_22", - "task_id": "task_relax", "text_template": "relax_22_text", "activity_template": "activity_relax_22", "audio_asset": "plh_audio/relax/relax_22.mp3", "favourite_field": "relax_22_favourite", "type": "relax_active", + "completed_field": "relax_22_completed", + "completed": "@fields.relax_22_completed", "title": "Connect", "_translations": { "title": { @@ -568,12 +583,13 @@ }, { "id": "relax_23", - "task_id": "task_relax", "text_template": "relax_23_text", "activity_template": "activity_relax_23", "audio_asset": "plh_audio/relax/relax_23.mp3", "favourite_field": "relax_23_favourite", "type": "relax_active", + "completed_field": "relax_23_completed", + "completed": "@fields.relax_23_completed", "title": "Prevent anger", "_translations": { "title": { @@ -593,12 +609,13 @@ }, { "id": "relax_24", - "task_id": "task_relax", "text_template": "relax_24_text", "activity_template": "activity_relax_24", "audio_asset": "plh_audio/relax/relax_24.mp3", "favourite_field": "relax_24_favourite", "type": "relax_active", + "completed_field": "relax_24_completed", + "completed": "@fields.relax_24_completed", "title": "Angry? Take a break", "_translations": { "title": { diff --git a/packages/app-data/sheets/data_list/safeguarding_categories_tz.json b/packages/app-data/sheets/data_list/safeguarding_categories_tz.json new file mode 100644 index 0000000000..3df2c49934 --- /dev/null +++ b/packages/app-data/sheets/data_list/safeguarding_categories_tz.json @@ -0,0 +1,156 @@ +{ + "flow_type": "data_list", + "flow_name": "safeguarding_categories_tz", + "status": "released", + "data_list_name": "safeguarding_categories_tz", + "rows": [ + { + "id": "emergency", + "title": "An emergency", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "An emergency" + }, + "description": { + "eng": "Are you in need of emergent assistance?" + } + }, + "description": "Are you in need of emergent assistance?" + }, + { + "id": "substance_abuse", + "title": "A challenge with alcohol or drugs", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "A challenge with alcohol or drugs" + }, + "description": { + "eng": "Would you like to talk to someone about challenges you or a loved one are experiencing with alcohol or drugs?" + } + }, + "description": "Would you like to talk to someone about challenges you or a loved one are experiencing with alcohol or drugs?" + }, + { + "id": "legal", + "title": "A legal problem", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "A legal problem" + }, + "description": { + "eng": "Do you need legal assistance?" + } + }, + "description": "Do you need legal assistance?" + }, + { + "id": "violence", + "title": "Feeling unsafe at home or in my relationship", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Feeling unsafe at home or in my relationship" + }, + "description": { + "eng": "Would you like to talk to someone about feeling unsafe in your home or with your partner?" + } + }, + "description": "Would you like to talk to someone about feeling unsafe in your home or with your partner?" + }, + { + "id": "family_support", + "title": "A challenge in my family", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "A challenge in my family" + }, + "description": { + "eng": "Would you like to talk to someone about difficult experiences you are having with members of your family?" + } + }, + "description": "Would you like to talk to someone about difficult experiences you are having with members of your family?" + }, + { + "id": "mental_health", + "title": "Feeling anxious or sad", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Feeling anxious or sad" + }, + "description": { + "eng": "Would you like to talk to someone about feeling sad or anxious?" + } + }, + "description": "Would you like to talk to someone about feeling sad or anxious?" + }, + { + "id": "mental_health_support", + "title": "A loved one feeling anxious or sad", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "A loved one feeling anxious or sad" + }, + "description": { + "eng": "Do you have questions about what to do if you or a loved one may be feeling sad or anxious?" + } + }, + "description": "Do you have questions about what to do if you or a loved one may be feeling sad or anxious?" + } + ], + "_xlsxPath": "tz/data/safeguarding_data_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/safeguarding_contacts_tz.json b/packages/app-data/sheets/data_list/safeguarding_contacts_tz.json new file mode 100644 index 0000000000..2828f13487 --- /dev/null +++ b/packages/app-data/sheets/data_list/safeguarding_contacts_tz.json @@ -0,0 +1,274 @@ +{ + "flow_type": "data_list", + "flow_name": "safeguarding_contacts_tz", + "status": "released", + "data_list_name": "safeguarding_contacts_tz", + "rows": [ + { + "id": "police", + "category": "emergency", + "contact_number_1": 112, + "contact_number_2": "0222 117 362", + "title": "Police", + "_translations": { + "title": { + "tz_sw": true + }, + "contact_description_1": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Police" + }, + "contact_description_1": { + "eng": "Toll free" + } + }, + "contact_description_1": "Toll free" + }, + { + "id": "nch", + "category": "emergency", + "contact_number_1": 116, + "title": "National Child Helpline", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "contact_description_1": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "National Child Helpline" + }, + "description": { + "eng": "This helpline is free, available 24/7, and connects you with a professional that can help." + }, + "contact_description_1": { + "eng": "Toll free" + } + }, + "description": "This helpline is free, available 24/7, and connects you with a professional that can help.", + "contact_description_1": "Toll free" + }, + { + "id": "ambulance", + "category": "emergency", + "contact_number_1": "0754 760 790", + "title": "Ambulance", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Ambulance" + } + } + }, + { + "id": "aa", + "category": "substance_abuse", + "contact_number_1": "0689 297 702", + "contact_number_2": "0782 638 607", + "contact_number_3": "0754 752 705", + "title": "Alcoholics Anonymous (AA)", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Alcoholics Anonymous (AA)" + }, + "description": { + "eng": "AA supports men and women to help them recover from alcoholism. This service is free and completely anonymous." + } + }, + "description": "AA supports men and women to help them recover from alcoholism. This service is free and completely anonymous." + }, + { + "id": "tanlap", + "category": "legal", + "contact_number_1": "0222 761 806", + "contact_number_2": "0746 237 265", + "title": "Tanzania Legal Aid (TANLAP)", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Tanzania Legal Aid (TANLAP)" + }, + "description": { + "eng": "TANLAP connects you to groups providing affordable legal aid in Tanzania." + } + }, + "description": "TANLAP connects you to groups providing affordable legal aid in Tanzania." + }, + { + "id": "wlc", + "category": "violence", + "contact_number_1": "0800 780 100", + "title": "Women's Legal Aid Centre", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "contact_description_1": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Women's Legal Aid Centre" + }, + "description": { + "eng": "WLC is a non-profit organisation that helps to empower women to secure their rights across Tanzania." + }, + "contact_description_1": { + "eng": "Helpline" + } + }, + "description": "WLC is a non-profit organisation that helps to empower women to secure their rights across Tanzania.", + "contact_description_1": "Helpline" + }, + { + "id": "caflo", + "category": "family_support", + "contact_number_1": "0754 833 145", + "contact_number_2": "0717 977 370", + "contact_number_3": "0787 889 981", + "title": "Counselling and Family Life Organisation (CAFLO)", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Counselling and Family Life Organisation (CAFLO)" + }, + "description": { + "eng": "CAFLO offers counseling, empowerment and advocacy for families in Tanzania." + } + }, + "description": "CAFLO offers counseling, empowerment and advocacy for families in Tanzania." + }, + { + "id": "mhat", + "category": "mental_health", + "contact_number_1": "0757 528 295", + "title": "Mental Health Association of Tanzania", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Mental Health Association of Tanzania" + }, + "description": { + "eng": "Professional organisation with a long history of supporting mental health services in Tanzania." + } + }, + "description": "Professional organisation with a long history of supporting mental health services in Tanzania." + }, + { + "id": "tewwy", + "category": "mental_health", + "contact_number_1": "0737 773 982", + "contact_number_2": "0757 327 878", + "title": "Tap Elderly Women's Wisdom for Youth (TEWWY)", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "contact_description_1": { + "tz_sw": true + }, + "contact_description_2": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Tap Elderly Women's Wisdom for Youth (TEWWY)" + }, + "description": { + "eng": "TEWWY has local Wisdom & Wellness Counselors who provide free and accessible mental health services, support and resources in their communities." + }, + "contact_description_1": { + "eng": "WhatsApp" + }, + "contact_description_2": { + "eng": "Call" + } + }, + "description": "TEWWY has local Wisdom & Wellness Counselors who provide free and accessible mental health services, support and resources in their communities.", + "contact_description_1": "WhatsApp", + "contact_description_2": "Call" + }, + { + "id": "tewwy_booklet", + "category": "mental_health_support", + "contact_link_1": "img1.wsimg.com/blobby/go/49901642-c520-4f6a-9891-50a3e3530772/Afya%20ya%20Akili%20Booklet.pdf", + "title": "TEWWY's Mental Health Q&A booklet", + "_translations": { + "title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "contact_description_1": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "TEWWY's Mental Health Q&A booklet" + }, + "description": { + "eng": "This booklet answers some common questions about mental health and provides information that could be helpful for you or your loved one." + }, + "contact_description_1": { + "eng": "Booklet" + } + }, + "description": "This booklet answers some common questions about mental health and provides information that could be helpful for you or your loved one.", + "contact_description_1": "Booklet" + } + ], + "_xlsxPath": "tz/data/safeguarding_data_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/story_data.json b/packages/app-data/sheets/data_list/story_data.json new file mode 100644 index 0000000000..25e87ebae6 --- /dev/null +++ b/packages/app-data/sheets/data_list/story_data.json @@ -0,0 +1,1513 @@ +{ + "flow_type": "data_list", + "flow_name": "story_data", + "status": "released", + "data_list_name": "story", + "rows": [ + { + "id": "praise", + "workshop": "w_praise", + "image_1": "plh_images/workshops/w_praise/read/slide_1.svg", + "image_2": "plh_images/workshops/w_praise/read/slide_2.svg", + "title": "Notice the good", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Notice the good" + }, + "intro_text": { + "eng": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:" + }, + "text_1": { + "eng": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!" + }, + "text_2": { + "eng": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"" + } + }, + "intro_text": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text_1": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text_2": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"" + }, + { + "id": "neg_instruct", + "workshop": "w_instruct", + "image_1": "plh_images/workshops/w_instruct/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_instruct/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_instruct/read_1/slide_3.svg", + "title": "Negative instructions", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true + }, + "text_2": { + "tz_sw": true + }, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Negative instructions" + }, + "intro_text": { + "eng": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":" + }, + "text_1": { + "eng": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”" + }, + "text_2": { + "eng": "@global.w_instruct_teen_girl: “But I need to practise for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”" + }, + "text_3": { + "eng": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”" + } + }, + "intro_text": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text_1": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text_2": "@global.w_instruct_teen_girl: “But I need to practise for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text_3": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”" + }, + { + "id": "pos_instruct", + "workshop": "w_instruct", + "image_1": "plh_images/workshops/w_instruct/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_instruct/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_instruct/read_2/slide_3.svg", + "image_4": "plh_images/workshops/w_instruct/read_2/slide_4.svg", + "image_5": "plh_images/workshops/w_instruct/read_2/slide_5.svg", + "title": "Positive instructions", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true + }, + "text_2": { + "tz_sw": true + }, + "text_3": { + "tz_sw": true + }, + "text_4": { + "tz_sw": true + }, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Positive instructions" + }, + "intro_text": { + "eng": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:" + }, + "text_1": { + "eng": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practise dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"" + }, + "text_2": { + "eng": "@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”" + }, + "text_3": { + "eng": "@global.w_instruct_teen_girl and her friend enjoy practising their dance moves." + }, + "text_4": { + "eng": "@global.w_instruct_female_caregiver: \"Thank you for practising outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"" + }, + "text_5": { + "eng": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"" + } + }, + "intro_text": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text_1": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practise dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"", + "text_2": "@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text_3": "@global.w_instruct_teen_girl and her friend enjoy practising their dance moves.", + "text_4": "@global.w_instruct_female_caregiver: \"Thank you for practising outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text_5": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"" + }, + { + "id": "ignore_emotions", + "workshop": "w_stress", + "image_1": "plh_images/workshops/w_stress/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_stress/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_stress/read_1/slide_3.svg", + "image_4": "plh_images/workshops/w_stress/read_1/slide_4.svg", + "image_5": "plh_images/workshops/w_stress/read_1/slide_5.svg", + "image_6": "plh_images/workshops/w_stress/read_1/slide_6.svg", + "title": "Ignoring our emotions", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Ignoring our emotions" + }, + "intro_text": { + "eng": "Let’s look at an example of how stress can sometimes just get too much, for all of us:" + }, + "text_1": { + "eng": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered." + }, + "text_2": { + "eng": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”" + }, + "text_3": { + "eng": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”" + }, + "text_4": { + "eng": "@global.w_stress_girl: “Look! I have made a house!”" + }, + "text_5": { + "eng": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”" + } + }, + "intro_text": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text_1": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text_2": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text_3": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text_4": "@global.w_stress_girl: “Look! I have made a house!”", + "text_5": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”" + }, + { + "id": "acknowledge_emotions", + "workshop": "w_stress", + "outro_habit": "breathe", + "image_1": "plh_images/workshops/w_stress/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_stress/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_stress/read_2/slide_3.svg", + "image_4": "plh_images/workshops/w_stress/read_2/slide_4.svg", + "image_5": "plh_images/workshops/w_stress/read_2/slide_5.svg", + "title": "Acknowledging our emotions", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": {}, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Acknowledging our emotions" + }, + "intro_text": { + "eng": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:" + }, + "text_1": { + "eng": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered." + }, + "text_2": { + "eng": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”" + }, + "text_3": { + "eng": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, and your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”" + }, + "text_4": { + "eng": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”" + }, + "text_5": { + "eng": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”" + } + }, + "intro_text": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text_1": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text_2": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text_3": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, and your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text_4": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text_5": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”" + }, + { + "id": "safety_amnesty", + "workshop": "w_stress", + "outro_habit": "safe", + "image_1": "plh_images/workshops/w_stress/read_3/slide_1.svg", + "image_2": "plh_images/workshops/w_stress/read_3/slide_2.svg", + "image_3": "plh_images/workshops/w_stress/read_3/slide_3.svg", + "image_4": "plh_images/workshops/w_stress/read_3/slide_4.svg", + "image_5": "plh_images/workshops/w_stress/read_3/slide_5.svg", + "image_6": "plh_images/workshops/w_stress/read_3/slide_6.svg", + "title": "@global.safety_word", + "_translations": { + "title": {}, + "intro_text": {}, + "text_1": {}, + "text_2": {}, + "text_3": {}, + "text_4": {}, + "text_5": { + "tz_sw": true + }, + "text_6": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.safety_word" + }, + "intro_text": { + "eng": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you could not tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:" + }, + "text_1": { + "eng": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I am going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I have told them I am staying with my girlfriend, but I am actually going to a cool party.\"" + }, + "text_2": { + "eng": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they will be so angry!\"" + }, + "text_3": { + "eng": "@global.w_stress_teen_girl: \"I am scared. Everyone is too drunk to drive me home. This boy says he will take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"" + }, + "text_4": { + "eng": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nShall we use an imaginary ‘@global.safety_word_example_1’ as @global.safety_word? Just say something about @global.safety_word_example_1, I promise that I will try my best to help and I will not be angry – even if you are doing something you should not.\"" + }, + "text_5": { + "eng": "@global.w_stress_teen_girl: \"@global.w_stress_parent, how is @global.safety_word_example_1 doing now?\"\n\n@global.w_stress_parent (on the other side of the phone): \"Not well. We need you at home. I will come pick you up right away. Where are you?\"" + }, + "text_6": { + "eng": "@global.w_stress_teen_boy_2 (thinking): \"I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Maybe @global.w_stress_parent knows what to do.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, I just remembered, @global.safety_word_example_1 said she will come visit tomorrow.\"\n\n@global.w_stress_parent (on the other side of the phone): \"Okay, I need you at home to help get things ready. I will come pick you up now. Where are you?\"" + } + }, + "intro_text": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you could not tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text_1": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I am going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I have told them I am staying with my girlfriend, but I am actually going to a cool party.\"", + "text_2": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they will be so angry!\"", + "text_3": "@global.w_stress_teen_girl: \"I am scared. Everyone is too drunk to drive me home. This boy says he will take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text_4": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nShall we use an imaginary ‘@global.safety_word_example_1’ as @global.safety_word? Just say something about @global.safety_word_example_1, I promise that I will try my best to help and I will not be angry – even if you are doing something you should not.\"", + "text_5": "@global.w_stress_teen_girl: \"@global.w_stress_parent, how is @global.safety_word_example_1 doing now?\"\n\n@global.w_stress_parent (on the other side of the phone): \"Not well. We need you at home. I will come pick you up right away. Where are you?\"", + "text_6": "@global.w_stress_teen_boy_2 (thinking): \"I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Maybe @global.w_stress_parent knows what to do.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, I just remembered, @global.safety_word_example_1 said she will come visit tomorrow.\"\n\n@global.w_stress_parent (on the other side of the phone): \"Okay, I need you at home to help get things ready. I will come pick you up now. Where are you?\"" + }, + { + "id": "money_problems", + "workshop": "w_money", + "image_1": "plh_images/workshops/w_money/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_money/read_1/slide_1.svg", + "title": "Money problems", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": {} + }, + "_translatedFields": { + "title": { + "eng": "Money problems" + }, + "intro_text": { + "eng": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:" + }, + "text_1": { + "eng": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"" + }, + "text_2": { + "eng": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I am fighting with my teens over things they want – again.\"" + } + }, + "intro_text": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text_1": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text_2": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I am fighting with my teens over things they want – again.\"" + }, + { + "id": "money_plan", + "workshop": "w_money", + "image_1": "plh_images/workshops/w_money/read_3/slide_2.svg", + "image_2": "plh_images/workshops/w_money/read_3/slide_3.svg", + "image_3": "plh_images/workshops/w_money/read_3/slide_4.svg", + "image_4": "plh_images/workshops/w_money/read_3/slide_5.svg", + "image_5": "plh_images/workshops/w_money/read_3/slide_6.svg", + "title": "Preparing for the future", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": {}, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_4": {}, + "text_5": {} + }, + "_translatedFields": { + "title": { + "eng": "Preparing for the future" + }, + "intro_text": { + "eng": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:" + }, + "text_1": { + "eng": "\"I want the best future for my grandchildren, but I do not know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"" + }, + "text_2": { + "eng": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"" + }, + "text_3": { + "eng": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"" + }, + "text_4": { + "eng": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but do not need.\"" + }, + "text_5": { + "eng": "A few years later:\n\n\"Look, we reached our dreams! I did not borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”" + } + }, + "intro_text": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text_1": "\"I want the best future for my grandchildren, but I do not know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text_2": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text_3": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text_4": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but do not need.\"", + "text_5": "A few years later:\n\n\"Look, we reached our dreams! I did not borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”" + }, + { + "id": "money_emergencies", + "workshop": "w_money", + "image_1": "plh_images/workshops/w_money/read_4/slide_1.svg", + "title": "Coping with emergencies", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Coping with emergencies" + }, + "intro_text": { + "eng": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:" + }, + "text_1": { + "eng": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”" + } + }, + "intro_text": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text_1": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”" + }, + { + "id": "make_rule", + "workshop": "w_rules", + "image_1": "plh_images/workshops/w_rules/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_rules/read_1/slide_3.svg", + "image_3": "plh_images/workshops/w_rules/read_1/slide_4.svg", + "image_4": "plh_images/workshops/w_rules/read_1/slide_5.svg", + "image_5": "plh_images/workshops/w_rules/read_1/slide_6.svg", + "image_6": "plh_images/workshops/w_rules/read_1/slide_7.svg", + "image_7": "plh_images/workshops/w_rules/read_1/slide_8.svg", + "title": "Making a rule", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "dashed_box_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": {}, + "text_4": {}, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_7": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Making a rule" + }, + "intro_text": { + "eng": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:" + }, + "text_1": { + "eng": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"" + }, + "dashed_box_1": { + "eng": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?" + }, + "text_2": { + "eng": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”" + }, + "text_3": { + "eng": "@global.w_rules_female_caregiver_1: “That is right, and it is also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”" + }, + "text_4": { + "eng": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That is a bit late, what about 6pm? Or something in the middle?\"" + }, + "text_5": { + "eng": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”" + }, + "text_6": { + "eng": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”" + }, + "text_7": { + "eng": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”" + } + }, + "intro_text": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text_1": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "dashed_box_1": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text_2": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text_3": "@global.w_rules_female_caregiver_1: “That is right, and it is also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text_4": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That is a bit late, what about 6pm? Or something in the middle?\"", + "text_5": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text_6": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text_7": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”" + }, + { + "id": "online_safety", + "workshop": "w_rules", + "outro_habit": "safe", + "image_1": "plh_images/workshops/w_rules/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_rules/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_rules/read_2/slide_3.svg", + "image_4": "plh_images/workshops/w_rules/read_2/slide_4.svg", + "image_5": "plh_images/workshops/w_rules/read_2/slide_5.svg", + "title": "Online safety", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": {}, + "text_1": {}, + "text_2": {}, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": {} + }, + "_translatedFields": { + "title": { + "eng": "Online safety" + }, + "intro_text": { + "eng": "Rules are important to keep your teens safe - not only offline, but also online. There’s more about this in the @global.weekly_workshop on safety planning, but let’s already have a first look now!" + }, + "text_1": { + "eng": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video.\"" + }, + "text_2": { + "eng": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like @global.teen_social_medium.\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"" + }, + "text_3": { + "eng": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"" + }, + "text_4": { + "eng": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”" + }, + "text_5": { + "eng": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl!\"" + } + }, + "intro_text": "Rules are important to keep your teens safe - not only offline, but also online. There’s more about this in the @global.weekly_workshop on safety planning, but let’s already have a first look now!", + "text_1": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video.\"", + "text_2": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like @global.teen_social_medium.\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text_3": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text_4": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text_5": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl!\"" + }, + { + "id": "neg_consequence", + "workshop": "w_consequence", + "image_1": "plh_images/workshops/w_consequence/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_consequence/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_consequence/read_1/slide_3.svg", + "image_4": "plh_images/workshops/w_consequence/read_1/slide_4.svg", + "title": "Home late", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Home late" + }, + "intro_text": { + "eng": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:" + }, + "text_1": { + "eng": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”" + }, + "text_2": { + "eng": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”" + }, + "text_3": { + "eng": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”" + }, + "text_4": { + "eng": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”" + } + }, + "intro_text": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text_1": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text_2": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text_3": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text_4": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”" + }, + { + "id": "pos_consequence", + "workshop": "w_consequence", + "image_1": "plh_images/workshops/w_consequence/read_3/slide_1.svg", + "image_2": "plh_images/workshops/w_consequence/read_3/slide_2.svg", + "image_3": "plh_images/workshops/w_consequence/read_3/slide_3.svg", + "image_4": "plh_images/workshops/w_consequence/read_3/slide_4.svg", + "image_5": "plh_images/workshops/w_consequence/read_3/slide_5.svg", + "image_6": "plh_images/workshops/w_consequence/read_3/slide_6.svg", + "image_7": "plh_images/workshops/w_consequence/read_3/slide_7.svg", + "image_8": "plh_images/workshops/w_consequence/read_3/slide_8.svg", + "image_9": "plh_images/workshops/w_consequence/read_3/slide_9.svg", + "title": "Discussing and using consequences", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": {}, + "text_3": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_7": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_8": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_9": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Discussing and using consequences" + }, + "intro_text": { + "eng": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver" + }, + "text_1": { + "eng": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"" + }, + "text_2": { + "eng": "@global.w_consequence_male_caregiver: “That is a good idea! And what should we do if you don’t follow the rule?” \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm...”" + }, + "text_3": { + "eng": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"" + }, + "text_4": { + "eng": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"" + }, + "text_5": { + "eng": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”" + }, + "text_6": { + "eng": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”" + }, + "text_7": { + "eng": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”" + }, + "text_8": { + "eng": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”" + }, + "text_9": { + "eng": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”" + } + }, + "intro_text": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text_1": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text_2": "@global.w_consequence_male_caregiver: “That is a good idea! And what should we do if you don’t follow the rule?” \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm...”", + "text_3": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text_4": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text_5": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text_6": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text_7": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text_8": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text_9": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”" + }, + { + "id": "neg_solve", + "workshop": "w_solve", + "image_1": "plh_images/workshops/w_solve/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_solve/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_solve/read_1/slide_3.svg", + "title": "The new phone", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": {}, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": {} + }, + "_translatedFields": { + "title": { + "eng": "The new phone" + }, + "intro_text": { + "eng": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… can you believe it!" + }, + "text_1": { + "eng": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"" + }, + "text_2": { + "eng": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”" + }, + "text_3": { + "eng": "@global.w_solve_female_caregiver_1: “I do not want to hear it!” \n\n@global.w_solve_teen_girl: “You are not even trying to listen to me! I do not know why I even try with you!”" + } + }, + "intro_text": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… can you believe it!", + "text_1": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text_2": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text_3": "@global.w_solve_female_caregiver_1: “I do not want to hear it!” \n\n@global.w_solve_teen_girl: “You are not even trying to listen to me! I do not know why I even try with you!”" + }, + { + "id": "pos_solve", + "workshop": "w_solve", + "image_1": "plh_images/workshops/w_solve/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_solve/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_solve/read_2/slide_3.svg", + "image_4": "plh_images/workshops/w_solve/read_2/slide_4.svg", + "image_5": "plh_images/workshops/w_solve/read_2/slide_5.svg", + "image_6": "plh_images/workshops/w_solve/read_2/slide_6.svg", + "image_7": "plh_images/workshops/w_solve/read_2/slide_7.svg", + "image_8": "plh_images/workshops/w_solve/read_2/slide_8.svg", + "image_9": "plh_images/workshops/w_solve/read_2/slide_9.svg", + "image_10": "plh_images/workshops/w_solve/read_2/slide_10.svg", + "image_11": "plh_images/workshops/w_solve/read_2/slide_11.svg", + "image_12": "plh_images/workshops/w_solve/read_2/slide_12.svg", + "title": "Dealing with bullies", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": {}, + "text_3": {}, + "text_4": {}, + "dashed_box_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": {}, + "text_6": {}, + "dashed_box_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_7": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_8": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_9": {}, + "text_10": {}, + "dashed_box_10": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_11": {}, + "dashed_box_11": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_12": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Dealing with bullies" + }, + "intro_text": { + "eng": "Let’s see how problem solving works in practice." + }, + "text_1": { + "eng": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"" + }, + "text_2": { + "eng": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there will not be enough for us all!\"" + }, + "text_3": { + "eng": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a pause… just breathe…”" + }, + "text_4": { + "eng": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2.\"" + }, + "dashed_box_4": { + "eng": "Step 1: KNOW IT" + }, + "text_5": { + "eng": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There is a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"" + }, + "text_6": { + "eng": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It does not mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"" + }, + "dashed_box_6": { + "eng": "Step 2: SOLVE IT" + }, + "text_7": { + "eng": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"" + }, + "text_8": { + "eng": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"" + }, + "text_9": { + "eng": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2.\"" + }, + "text_10": { + "eng": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that does not work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2.\"" + }, + "dashed_box_10": { + "eng": "Step 3: TRY IT" + }, + "text_11": { + "eng": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It is going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"" + }, + "dashed_box_11": { + "eng": "Step 4: TEST IT" + }, + "text_12": { + "eng": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"" + } + }, + "intro_text": "Let’s see how problem solving works in practice.", + "text_1": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text_2": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there will not be enough for us all!\"", + "text_3": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a pause… just breathe…”", + "text_4": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2.\"", + "dashed_box_4": "Step 1: KNOW IT", + "text_5": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There is a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text_6": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It does not mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "dashed_box_6": "Step 2: SOLVE IT", + "text_7": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text_8": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text_9": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2.\"", + "text_10": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that does not work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2.\"", + "dashed_box_10": "Step 3: TRY IT", + "text_11": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It is going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "dashed_box_11": "Step 4: TEST IT", + "text_12": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"" + }, + { + "id": "sugar_daddy", + "workshop": "w_safe", + "image_1": "plh_images/workshops/w_safe/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_safe/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_safe/read_1/slide_3.svg", + "image_4": "plh_images/workshops/w_safe/read_1/slide_4.svg", + "image_5": "plh_images/workshops/w_safe/read_1/slide_5.svg", + "image_6": "plh_images/workshops/w_safe/read_1/slide_6.svg", + "title": "Man in car", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": {}, + "text_2": {}, + "text_3": {}, + "text_4": {}, + "text_5": {}, + "text_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Man in car" + }, + "intro_text": { + "eng": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:" + }, + "text_1": { + "eng": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1.\"" + }, + "text_2": { + "eng": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what is your name?\"\n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1.”" + }, + "text_3": { + "eng": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you will be back in time, I promise…”\n\n@global.w_safe_teen_girl_1: “I am not sure if that is a good idea…”" + }, + "text_4": { + "eng": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I am telling you, if you do not do this I’m going to tell everyone you are stupid!”" + }, + "text_5": { + "eng": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 do not go! Be careful! Let’s go home. It is dangerous to go with people you do not know. Besides, he is too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just do not know…”" + }, + "text_6": { + "eng": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"" + } + }, + "intro_text": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text_1": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1.\"", + "text_2": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what is your name?\"\n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1.”", + "text_3": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you will be back in time, I promise…”\n\n@global.w_safe_teen_girl_1: “I am not sure if that is a good idea…”", + "text_4": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I am telling you, if you do not do this I’m going to tell everyone you are stupid!”", + "text_5": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 do not go! Be careful! Let’s go home. It is dangerous to go with people you do not know. Besides, he is too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just do not know…”", + "text_6": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"" + }, + { + "id": "online_contact", + "workshop": "w_safe", + "image_1": "plh_images/workshops/w_safe/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_safe/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_safe/read_2/slide_3.svg", + "title": "Online contact", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": {}, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": {} + }, + "_translatedFields": { + "title": { + "eng": "Online contact" + }, + "intro_text": { + "eng": "Let's look at another example of a dangerous situation together." + }, + "text_1": { + "eng": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She is going to send him photos of herself. Is that better because he is our age?\"" + }, + "text_2": { + "eng": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"" + }, + "text_3": { + "eng": "@global.w_safe_female_caregiver: \"Sometimes people are not who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"" + } + }, + "intro_text": "Let's look at another example of a dangerous situation together.", + "text_1": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She is going to send him photos of herself. Is that better because he is our age?\"", + "text_2": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text_3": "@global.w_safe_female_caregiver: \"Sometimes people are not who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"" + }, + { + "id": "rape", + "workshop": "w_crisis", + "image_1": "plh_images/workshops/w_crisis/read_1/slide_1.svg", + "image_2": "plh_images/workshops/w_crisis/read_1/slide_2.svg", + "image_3": "plh_images/workshops/w_crisis/read_1/slide_3.svg", + "image_4": "plh_images/workshops/w_crisis/read_1/slide_4.svg", + "image_5": "plh_images/workshops/w_crisis/read_1/slide_5.svg", + "image_6": "plh_images/workshops/w_crisis/read_1/slide_6.svg", + "title": "@global.w_crisis_teen_girl_1's crisis", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": {}, + "text_3": {}, + "text_4": {}, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "@global.w_crisis_teen_girl_1's crisis" + }, + "intro_text": { + "eng": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:" + }, + "text_1": { + "eng": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"" + }, + "text_2": { + "eng": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen.\"\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I am listening.\"" + }, + "text_3": { + "eng": "@global.w_crisis_teen_girl_1: \"It is true, he… he… made me do it! He made me have sex with him! I did not want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"" + }, + "text_4": { + "eng": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see your friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It is okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"" + }, + "text_5": { + "eng": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"" + }, + "text_6": { + "eng": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"" + } + }, + "intro_text": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text_1": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text_2": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen.\"\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I am listening.\"", + "text_3": "@global.w_crisis_teen_girl_1: \"It is true, he… he… made me do it! He made me have sex with him! I did not want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text_4": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see your friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It is okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text_5": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text_6": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"" + }, + { + "id": "violence", + "workshop": "w_crisis", + "image_1": "plh_images/workshops/w_crisis/read_2/slide_1.svg", + "image_2": "plh_images/workshops/w_crisis/read_2/slide_2.svg", + "image_3": "plh_images/workshops/w_crisis/read_2/slide_3.svg", + "image_4": "plh_images/workshops/w_crisis/read_2/slide_4.svg", + "image_5": "plh_images/workshops/w_crisis/read_2/slide_5.svg", + "image_6": "plh_images/workshops/w_crisis/read_2/slide_6.svg", + "title": "The fight", + "_translations": { + "title": { + "tz_sw": true + }, + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_1": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_2": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_3": {}, + "text_4": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_5": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "text_6": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "The fight" + }, + "intro_text": { + "eng": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together." + }, + "text_1": { + "eng": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"" + }, + "text_2": { + "eng": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"" + }, + "text_3": { + "eng": "@global.w_crisis_teen_boy_1: \"I did not want to, but I could not just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"" + }, + "text_4": { + "eng": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"" + }, + "text_5": { + "eng": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"" + }, + "text_6": { + "eng": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"" + } + }, + "intro_text": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text_1": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text_2": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text_3": "@global.w_crisis_teen_boy_1: \"I did not want to, but I could not just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text_4": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text_5": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text_6": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/survey_question.json b/packages/app-data/sheets/data_list/survey_question.json new file mode 100644 index 0000000000..ccca67e73d --- /dev/null +++ b/packages/app-data/sheets/data_list/survey_question.json @@ -0,0 +1,4761 @@ +{ + "flow_type": "data_list", + "flow_name": "survey_question", + "status": "released", + "data_list_name": "survey_question", + "rows": [ + { + "id": "ppf", + "parent_app": true, + "version_no": "v1", + "outcome": "Positive parenting (fun)", + "group": "ppf", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 8, + "parent_text": true, + "threshold positive": ">=4", + "parent_text_question": "It is hard to find time to have fun with your children. How many days in the past week did you do something fun together? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "feedback_better::0": "Well done for spending time with your child, it makes all the difference!", + "feedback_better::1": "Well done for spending time to do something fun with your child! You are making great progress. Keep it up!", + "feedback_better::2": "Great that you are setting aside time with your child – it is THE foundation for a happy home!", + "feedback_better::3": "Amazing that you keep doing fun things with your child. You are the best parent they could wish for!", + "feedback_better::4": "So good that you and your child are having fun times together. Your hard work is paying off, you should be proud of yourself!", + "feedback_worse::0": "We know it is hard to find time in our busy lives. Well done for trying your best!", + "feedback_worse::1": "Give yourself credit for trying. A 5 minutes of fun activity with your child a day can make a BIG difference.", + "feedback_worse::2": "We understand that it can be difficult to find time to spend with your child. Well done for trying, you can do it!", + "feedback_worse::3": "Life can get so busy sometimes, I know! If you start spending time together doing one small activity, it will get easier over time!", + "feedback_worse::4": "Finding time to do something fun with your child can be hard, I understand! The great thing is that spending time together will make other things go easier – you will see!", + "intro_text": "It is hard to find time to do something nice with your teenager.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "It is hard to find time to do something nice with your teenager." + }, + "question": { + "eng": "How many times in the past month did you get involved in activities that your teen likes?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month did you get involved in activities that your teen likes?", + "range_description": "Times in the past month" + }, + { + "id": "ppp", + "parent_app": true, + "version_no": "v1", + "outcome": "Positive parenting (praise)", + "group": "ppp", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 8, + "parent_text": true, + "threshold positive": ">=6", + "parent_text_question": "In our busy lives, it's hard to focus on the positive. How many days in the past week have you praised your child? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "feedback_better::0": "Wonderful that you are praising your child! This helps them feel seen and loved – your encouragement means a lot.", + "feedback_better::1": "So good to hear you are telling your child when they are doing something well. With time, you will see them do that behaviour more and more. You are doing a great job!", + "feedback_better::2": "Well done for praising your child. Praise will help your child feel good about themselves, and they will show even more positive behaviour!", + "feedback_better::3": "Great work! By praising your child, yourself and your other family members, you are making your house a happy home!", + "feedback_better::4": "It is great that you are praising your child for things they do well. As you appreciate them, they will also start appreciating you and the others in your family more – you set the best example!", + "feedback_worse::0": "We all sometimes feel like our children are causing more negativity than positivity. Try to see through negative attitudes and praise any positive behaviour you notice. With time, you will see the change!", + "feedback_worse::1": "Sorry that it has been harder for you to praise your child. Try to find something positive, even if it is small. Over time, they will appreciate that you notice when they do something well.", + "feedback_worse::2": "I understand it can be hard to praise your child sometimes. Remember, your praise makes a big difference, even if you don’t see it right away!", + "feedback_worse::3": "With everything that is going on, it is not always easy to focus on the positive. Try to find 10 minutes to pay attention to what your child is doing – perhaps you can praise them for helping with a chore or for doing their homework? It helps a lot!", + "feedback_worse::4": "Sometime our children don’t seem to do or say many things that deserve praise. Start praising the small things, you will see your child showing more positive behaviour over time!", + "intro_text": "In our busy lives it is hard to focus on the positive.", + "_translations": { + "intro_text": {}, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "In our busy lives it is hard to focus on the positive." + }, + "question": { + "eng": "How many times in the past month have you praised your teen?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month have you praised your teen?", + "range_description": "Times in the past month" + }, + { + "id": "pst", + "parent_app": true, + "version_no": "v1", + "outcome": "Parenting stress", + "group": "pst", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 2, + "parent_text": true, + "threshold positive": "<=0", + "parent_text_question": "This is a very stressful time for families. How many days in the past week did you feel very stressed as a parent/caregiver? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "feedback_better::0": "Did you know that you are less stressed than you were last week? Amazing!", + "feedback_better::1": "It’s wonderful to hear you are feeling less stress than last week. Keep up the good work!", + "feedback_better::2": "Amazing that you are feeling less stressed! Remember to keep taking a deep breath every time something makes you feel anxious – you are doing a great job!", + "feedback_better::3": "It is great you are feeling less stressed. We all have our ups and downs – remember the good times whenever things get challenging!", + "feedback_better::4": "Well done for managing your stress! Life can get overwhelming sometimes, but remember you can always take a pause – you are doing amazing.", + "feedback_worse::0": "We understand that this is a stressful time. Remember that you are not alone. We are here to help!", + "feedback_worse::1": "Life can be overwhelming sometimes. Well done for trying your best, you are valued and appreciated!", + "feedback_worse::2": "We all feel stressed sometimes, it’s normal. Remember to be kind to yourself and take a minute for yourself when you need it, you are doing a great job!", + "feedback_worse::3": "It can be stressful to get through the day sometimes. At the end of each day, remember to praise yourself for doing your best!", + "feedback_worse::4": "It is okay to feel overwhelmed from time to time, we all do! Take a deep breath and remember that we are here to help.", + "intro_text": "Being a parent can be stressful.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Being a parent can be stressful." + }, + "question": { + "eng": "How many times in the past month did caring for your children make you feel very stressed?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month did caring for your children make you feel very stressed?", + "range_description": "Times in the past month" + }, + { + "id": "pde_d", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental depression (depressed)", + "group": "pde", + "part_id": "d", + "part_no": 1, + "type": "slider", + "range_min": 0, + "range_max": 7, + "parent_text": false, + "intro_text": "There are days in our lives where we feel sad and down, and days where we feel happy.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "There are days in our lives where we feel sad and down, and days where we feel happy." + }, + "question": { + "eng": "How many days in the past week have you felt depressed?" + }, + "range_description": { + "eng": "Days in the past week" + } + }, + "question": "How many days in the past week have you felt depressed?", + "range_description": "Days in the past week" + }, + { + "id": "pde_e", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental depression (effort)", + "group": "pde", + "part_id": "e", + "part_no": 2, + "type": "slider", + "range_min": 0, + "range_max": 7, + "parent_text": false, + "question": "How many days in the past week have you felt that everything you did was an effort?", + "_translations": { + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many days in the past week have you felt that everything you did was an effort?" + }, + "range_description": { + "eng": "Days in the past week" + } + }, + "range_description": "Days in the past week" + }, + { + "id": "pde_h", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental depression (hopeful)", + "group": "pde", + "part_id": "h", + "part_no": 3, + "type": "slider", + "range_min": 0, + "range_max": 7, + "parent_text": false, + "question": "How many days in the past week have you felt hopeful for the future?", + "_translations": { + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many days in the past week have you felt hopeful for the future?" + }, + "range_description": { + "eng": "Days in the past week" + } + }, + "range_description": "Days in the past week" + }, + { + "id": "cme_s", + "parent_app": true, + "version_no": "v1", + "outcome": "Child maltreatment (emotional, shout)", + "group": "cme", + "part_id": "s", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": true, + "threshold positive": "<=0", + "parent_text_question": "Sometimes our children make us really upset. How many days in the past week did you shout, scream, or yell at your children? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "feedback_better::0": "Well done! Brain science shows if you control your anger when your child misbehaves, you increase your child's brain development. Be proud of yourself when you manage to do it!", + "feedback_better::1": "Great work! When we respond calmly, our teens are more likely to do the same.", + "feedback_better::2": "Well done for keeping calm in difficult situations – that is definitely not easy to do! You are setting a great example for your child.", + "feedback_better::3": "It is great that you can address your child more and more calmly when they upset you. Working through challenges together will help your child so much in life – you are doing amazing!", + "feedback_better::4": "So good that you speak to your child calmly, even when they drive you crazy. You should be proud of yourself! Remember to keep taking deep breaths every time you feel they are testing your patience.", + "feedback_better::5": "Wonderful to hear that you are managing to stay calm in difficult situations. You should be proud of yourself – keep up the great work!", + "feedback_worse::0": "It can be difficult to control our anger, especially when they make us really angry. Take a deep breath, and be proud of yourself when you manage to do it!", + "feedback_worse::1": "Sorry that you are having a difficult time with your child. It happens to all of us. Remember, we can choose to behave differently next time.", + "feedback_worse::2": "We all get overwhelmed sometimes. Next time when you feel angry, try taking a deep breath before responding. This helps a lot!", + "feedback_worse::3": "When we get angry, it can be hard to stay calm. Try to recognise your emotions and those of your child, and talk about them later - this helps everyone to understand each other better next time. You can do it!", + "feedback_worse::4": "Being a parent is not easy. Try to be patient with yourself and your family, and take some space if you need it. By talking about our challenges calmly, we can solve them together!", + "feedback_worse::5": "Our children can really drive us crazy sometimes. By responding calmly, they will learn to do the same when something upsets them at home or outside. Your patience will pay off, you will see!", + "intro_text": "Sometimes our children make us really upset.", + "_translations": { + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Sometimes our children make us really upset." + }, + "question": { + "eng": "How many times in the past month did you shout, scream or yell at your teen?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month did you shout, scream or yell at your teen?", + "range_description": "Times in the past month" + }, + { + "id": "cme_i", + "parent_app": true, + "version_no": "v1", + "outcome": "Child maltreatment (emotional, insult)", + "group": "cme", + "part_id": "i", + "part_no": 2, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": false, + "question": "How many times in the past month did you insult your teen or call them names or stupid?", + "_translations": { + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many times in the past month did you insult your teen or call them names or stupid?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "range_description": "Times in the past month" + }, + { + "id": "fin_s", + "parent_app": true, + "version_no": "v1", + "outcome": "Finance (stress)", + "group": "fin", + "part_id": "s", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": true, + "parent_text_question": "Money is one of the biggest stresses for families now. How many days in the past week have you felt very worried or anxious about money? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "intro_text": "Money is one of the biggest stresses for families.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Money is one of the biggest stresses for families." + }, + "question": { + "eng": "How many times in the past month have you felt worried or anxious about money?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month have you felt worried or anxious about money?", + "range_description": "Times in the past month" + }, + { + "id": "fin_fi", + "parent_app": true, + "version_no": "v1", + "outcome": "Finance (food insecurity)", + "group": "fin", + "part_id": "fi", + "part_no": 2, + "type": "slider", + "range_min": 0, + "range_max": 30, + "threshold": 1, + "parent_text": true, + "parent_text_question": "How many days in the past month (30 days) did you run out of money to pay for food? (0, 1, 2, 3, ... 30)\n\nIf you don't want to answer, please type 99.", + "question": "How many days in the past month (30 days) did you run out of money to pay for food?", + "_translations": { + "question": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "range_description": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many days in the past month (30 days) did you run out of money to pay for food?" + }, + "range_description": { + "eng": "Days in the past month" + } + }, + "range_description": "Days in the past month" + }, + { + "id": "orp_e", + "parent_app": true, + "version_no": "v1", + "outcome": "Orphanhood (ever)", + "group": "orp", + "part_id": "e", + "part_no": 1, + "type": "yes_no", + "parent_text": false, + "intro_text": "Families also have difficult experiences like sickness and losing loved ones.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Families also have difficult experiences like sickness and losing loved ones." + }, + "question": { + "eng": "Has a caregiver of your teen (like a parent or grandparent) ever passed away?" + } + }, + "question": "Has a caregiver of your teen (like a parent or grandparent) ever passed away?" + }, + { + "id": "orp_t", + "parent_app": true, + "version_no": "v1", + "outcome": "Orphanhood (three)", + "group": "orp", + "part_id": "t", + "part_no": 2, + "previous_part_condition": "yes", + "type": "yes_no", + "parent_text": false, + "question": "Did they pass away in the last 3 years?", + "_translations": { + "question": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "Did they pass away in the last 3 years?" + } + } + }, + { + "id": "cmp_h", + "parent_app": true, + "version_no": "v1", + "outcome": "Child maltreatment (physical, hit)", + "group": "cmp", + "part_id": "h", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": true, + "threshold positive": "<=0", + "parent_text_question": "It is so stressful when children misbehave. How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt? (0, 1, 2, 3, 4, 5, 6, 7)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "feedback_better::0": "It is wonderful that you are responding in a calm way when your child does something upsetting. They can learn so much from you!", + "feedback_better::1": "Well done! Learning new ways of responding to your children when they misbehave will make a BIG difference in the way they learn how to resolve conflicts as they get older.", + "feedback_better::2": "Amazing! You are setting such a great example for your children on how to respond calmly in difficult situations – keep up the good work!", + "feedback_better::3": "Great to see you are managing to respond calmly to your child, that’s a big accomplishment! Celebrate this win, you are a star.", + "feedback_better::4": "Well done for managing your emotions! When things get tough, you can always take a pause and address the problem later on when everyone is calm. You are doing a great job.", + "feedback_better::5": "So good! Every time you choose to be calm and clear, you are showing your child how much you care about them. They will feel heard and loved, and will be more likely to listen to you!", + "feedback_worse::0": "It sounds like you are having a difficult time with your child. This can be really hard so be patient with yourself. Try to take a pause (even one deep breath!) next time and respond differently. You can do it!", + "feedback_worse::1": "It can be so difficult to keep calm when things get out of hand. Try again next time – each day is a new opportunity!", + "feedback_worse::2": "Our children sometimes drive us crazy. Remember, you can always take a pause and address the problem later on when everyone is calm. You can do it!", + "feedback_worse::3": "Sometimes everything gets too much! Remember to recognise when you feel that way and take a few deep breaths before responding. Your child will learn from your good example!", + "feedback_worse::4": "Sorry that things are not always easy with your child. When they upset you, try to remain calm, That way, you can keep clear boundaries and solve problems together. You can do it!", + "feedback_worse::5": "We all struggle to stay calm sometimes. Take a deep breath and remember that mistakes are human. Talking to your child will help more in the end – you are an awesome parent!", + "intro_text": "It is so stressful when children misbehave.", + "_translations": { + "intro_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "question": {}, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "It is so stressful when children misbehave." + }, + "question": { + "eng": "How many times in the past month did you physically discipline your teen by hitting, spanking, or slapping with your hand or an object like a stick or belt?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month did you physically discipline your teen by hitting, spanking, or slapping with your hand or an object like a stick or belt?", + "range_description": "Times in the past month" + }, + { + "id": "cmp_p", + "parent_app": true, + "version_no": "v1", + "outcome": "Child maltreatment (physical, push)", + "group": "cmp", + "part_id": "p", + "part_no": 2, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": false, + "question": "How many times in the past month did you discipline your teen with a push or grab?", + "_translations": { + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many times in the past month did you discipline your teen with a push or grab?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "range_description": "Times in the past month" + }, + { + "id": "psu_t", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental supervision (time)", + "group": "psu", + "part_id": "t", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": false, + "parent_text_question": "-", + "intro_text": "It is hard to keep track of our teenagers when they are becoming more independent.", + "_translations": { + "intro_text": {}, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "It is hard to keep track of our teenagers when they are becoming more independent." + }, + "question": { + "eng": "How many times in the past month did your teen stay out in the evening past the time that they are supposed to be home?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the past month did your teen stay out in the evening past the time that they are supposed to be home?", + "range_description": "Times in the past month" + }, + { + "id": "psu_pe", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental supervision (people)", + "group": "psu", + "part_id": "pe", + "part_no": 2, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": false, + "question": "How many times in the past month did your teen go out with friends you do not know?", + "_translations": { + "question": {}, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many times in the past month did your teen go out with friends you do not know?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "range_description": "Times in the past month" + }, + { + "id": "psu_pl", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental supervision (place)", + "group": "psu", + "part_id": "pl", + "part_no": 3, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "threshold": 1, + "parent_text": false, + "question": "How many times in the past month did your teen not let you know where they were going?", + "_translations": { + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many times in the past month did your teen not let you know where they were going?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "range_description": "Times in the past month" + }, + { + "id": "pcsap_e", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental Communication about Sexual Abuse Prevention (ever)", + "group": "pcsap", + "part_id": "e", + "part_no": 1, + "type": "yes_no", + "parent_text": true, + "threshold positive": ">=5", + "parent_text_question": "Bonus question: We all want to keep our children safe. In the past month, have you talked with your child about keeping safe from sexual violence online or offline? This could be when they are going out with friends, or talking about the websites they use.", + "improvement (condition on diff to get fb_better)": ">", + "intro_text": "Sometimes teenagers are hard to talk to.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Sometimes teenagers are hard to talk to." + }, + "question": { + "eng": "Have you ever talked with your teen about ways to avoid being touched or made to do sexual things with people or online?" + } + }, + "question": "Have you ever talked with your teen about ways to avoid being touched or made to do sexual things with people or online?" + }, + { + "id": "pcsap_m", + "parent_app": true, + "version_no": "v1", + "outcome": "Parental Communication about Sexual Abuse Prevention (month)", + "group": "pcsap", + "part_id": "m", + "part_no": 2, + "previous_part_condition": "yes", + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "parent_text": false, + "intro_text": "Well done for talking to your teen about keeping safe.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + }, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "Well done for talking to your teen about keeping safe." + }, + "question": { + "eng": "How many times in the last month have you had a talk like this?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "question": "How many times in the last month have you had a talk like this?", + "range_description": "Times in the past month" + }, + { + "id": "ris", + "parent_app": true, + "version_no": "v1", + "outcome": "Risk", + "group": "ris", + "part_no": 1, + "type": "slider", + "max_description": "8+", + "range_min": 0, + "range_max": 8, + "parent_text": false, + "question": "How many times in the past month has your teen walked home alone, taken a lift with someone they do not know or hung out in a place that made you worried for their safety?", + "_translations": { + "question": {}, + "range_description": { + "tz_sw": true + } + }, + "_translatedFields": { + "question": { + "eng": "How many times in the past month has your teen walked home alone, taken a lift with someone they do not know or hung out in a place that made you worried for their safety?" + }, + "range_description": { + "eng": "Times in the past month" + } + }, + "range_description": "Times in the past month" + }, + { + "id": "pse", + "parent_app": false, + "outcome": "Parental self-efficacy", + "parent_text": true, + "threshold positive": ">=6", + "parent_text_question": "It can sometimes be difficult to have a positive relationship with our children. How confident do you feel about your ability as a parent/caregiver to have a positive relationship with your children? (0=not confident to 7=extremely confident)\n\nIf you don't want to answer, please type 99.", + "improvement (condition on diff to get fb_better)": ">", + "intro_text": "It can sometimes be difficult to have a positive relationship with our children.", + "_translations": { + "intro_text": { + "tz_sw": true + }, + "question": { + "tz_sw": true + } + }, + "_translatedFields": { + "intro_text": { + "eng": "It can sometimes be difficult to have a positive relationship with our children." + }, + "question": { + "eng": "How confident do you feel about your ability as a parent/caregiver to have a positive relationship with your children?" + } + }, + "question": "How confident do you feel about your ability as a parent/caregiver to have a positive relationship with your children?" + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + }, + { + "parent_app": false, + "parent_text": false + } + ], + "_xlsxPath": "global/data/survey_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/survey_question_group.json b/packages/app-data/sheets/data_list/survey_question_group.json new file mode 100644 index 0000000000..4377a48bfe --- /dev/null +++ b/packages/app-data/sheets/data_list/survey_question_group.json @@ -0,0 +1,5192 @@ +{ + "flow_type": "data_list", + "flow_name": "survey_question_group", + "status": "released", + "data_list_name": "survey_question_group", + "rows": [ + { + "id": "ppf", + "outcome": "Positive parenting (fun)", + "workshop_1": "w_1on1", + "unlock_universal": false, + "unlock_less": true, + "unlock_greater_equal": false, + "reply_less": "Spending time with your teen is not always easy. You’ll find ideas about how to do this in the @data.workshop.w_1on1.in_text_title. You can also find information in @data.parent_centre.my_tips.location_text.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "Spending time with your teen is not always easy. You’ll find ideas about how to do this in the @data.workshop.w_1on1.in_text_title. You can also find information in @data.parent_centre.my_tips.location_text." + }, + "reply_greater_equal": { + "eng": "Well done! You’ll find more ideas about how to do this in the @data.workshop.w_1on1.in_text_title." + } + }, + "reply_greater_equal": "Well done! You’ll find more ideas about how to do this in the @data.workshop.w_1on1.in_text_title." + }, + { + "id": "ppp", + "outcome": "Positive parenting (praise)", + "image_asset": "plh_images/survey/welcome/guide_1_frustrated.svg", + "workshop_1": "w_praise", + "unlock_universal": false, + "unlock_less": true, + "unlock_greater_equal": false, + "reply_less": "It’s not always easy to praise. You’ll learn more about this skill in the @data.workshop.w_praise.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "It’s not always easy to praise. You’ll learn more about this skill in the @data.workshop.w_praise.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text." + }, + "reply_greater_equal": { + "eng": "Wonderful that you are praising your teen! This helps them feel valued." + } + }, + "reply_greater_equal": "Wonderful that you are praising your teen! This helps them feel valued." + }, + { + "id": "pst", + "outcome": "Parenting stress", + "workshop_1": "w_self_care", + "workshop_2": "w_stress", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": true, + "reply_less": "Great job managing your stress. You'll learn more about how to relax, recognise and reward yourself in the @data.workshop.w_self_care.in_text_title.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "Great job managing your stress. You'll learn more about how to relax, recognise and reward yourself in the @data.workshop.w_self_care.in_text_title." + }, + "reply_greater_equal": { + "eng": "Life can definitely get stressful. You'll learn more about taking care of yourself well in the @data.workshop.w_self_care.in_text_title and about managing stress in the @data.workshop.w_stress.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text." + } + }, + "reply_greater_equal": "Life can definitely get stressful. You'll learn more about taking care of yourself well in the @data.workshop.w_self_care.in_text_title and about managing stress in the @data.workshop.w_stress.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text." + }, + { + "id": "pde", + "outcome": "Parental depression", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false, + "reply_universal": "Thank you for answering these questions. When life gets difficult, it’s easy to forget about the good. You are the best parent your teen could have!", + "_translations": { + "reply_universal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_universal": { + "eng": "Thank you for answering these questions. When life gets difficult, it’s easy to forget about the good. You are the best parent your teen could have!" + } + } + }, + { + "id": "cme", + "outcome": "Child maltreatment (emotional)", + "image_asset": "plh_images/survey/welcome/guide_2_argument.svg", + "combination_method": "less_is_all_less", + "workshop_1": "w_consequence", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": true, + "reply_less": "Well done for controlling your anger. You'll learn more about how to respond calmly in the @data.workshop.w_self_care.in_text_title.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "Well done for controlling your anger. You'll learn more about how to respond calmly in the @data.workshop.w_self_care.in_text_title." + }, + "reply_greater_equal": { + "eng": "All parents use certain methods to teach children how to behave. Sometimes our children make us really angry or upset and we do things we wish we hadn’t. You’ll learn more effective methods to respond to your teen and help them behave well in the @data.workshop.w_consequence.in_text_title. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + } + }, + "reply_greater_equal": "All parents use certain methods to teach children how to behave. Sometimes our children make us really angry or upset and we do things we wish we hadn’t. You’ll learn more effective methods to respond to your teen and help them behave well in the @data.workshop.w_consequence.in_text_title. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + }, + { + "id": "fin", + "outcome": "Finance", + "workshop_1": "w_money", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": true, + "reply_less": "Money stress can affect any family. You can learn more about budgeting in the @data.workshop.w_money.in_text_title to help with money stress and reduce money-related arguments.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "Money stress can affect any family. You can learn more about budgeting in the @data.workshop.w_money.in_text_title to help with money stress and reduce money-related arguments." + }, + "reply_greater_equal": { + "eng": "Money stress can be overwhelming. The @data.workshop.w_money.in_text_title includes information that will help with budgeting. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + } + }, + "reply_greater_equal": "Money stress can be overwhelming. The @data.workshop.w_money.in_text_title includes information that will help with budgeting. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + }, + { + "id": "orp", + "outcome": "Orphanhood", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false, + "reply_universal": "Losing loved ones is hard. You can find ways to help you and your teen cope with grief in @data.parent_centre.bereavement.location_text.", + "_translations": { + "reply_universal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_universal": { + "eng": "Losing loved ones is hard. You can find ways to help you and your teen cope with grief in @data.parent_centre.bereavement.location_text." + } + } + }, + { + "id": "cmp", + "outcome": "Child maltreatment (physical)", + "combination_method": "less_is_all_less", + "workshop_1": "w_consequence", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": true, + "reply_less": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "_translations": { + "reply_less": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!" + }, + "reply_greater_equal": { + "eng": "We all feel overwhelmed sometimes. The information in the @data.workshop.w_consequence.in_text_title will help you feel less stressed and show you effective ways to teach your children the right behaviour. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + } + }, + "reply_greater_equal": "We all feel overwhelmed sometimes. The information in the @data.workshop.w_consequence.in_text_title will help you feel less stressed and show you effective ways to teach your children the right behaviour. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + }, + { + "id": "psu", + "outcome": "Parental supervision", + "image_asset": "plh_images/survey/welcome/guide_1_nervous.svg", + "combination_method": "less_is_all_less", + "workshop_1": "w_safe", + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": true, + "reply_less": "Great job keeping your teen safe. You’ll learn more about this in the @data.workshop.w_safe.in_text_title.", + "_translations": { + "reply_less": { + "tz_sw": true + }, + "reply_greater_equal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_less": { + "eng": "Great job keeping your teen safe. You’ll learn more about this in the @data.workshop.w_safe.in_text_title." + }, + "reply_greater_equal": { + "eng": "Keeping track of our teens is not easy. Information in the @data.workshop.w_safe.in_text_title will support with building communication and keeping your teen safe. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + } + }, + "reply_greater_equal": "Keeping track of our teens is not easy. Information in the @data.workshop.w_safe.in_text_title will support with building communication and keeping your teen safe. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text." + }, + { + "id": "pcsap", + "outcome": "Parental Communication about Sexual Abuse Prevention", + "workshop_1": "w_safe", + "unlock_universal": true, + "unlock_less": false, + "unlock_greater_equal": false, + "reply_universal": "It can be difficult to know how to keep our teens safe. We often feel powerless as parents. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.", + "_translations": { + "reply_universal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_universal": { + "eng": "It can be difficult to know how to keep our teens safe. We often feel powerless as parents. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time." + } + } + }, + { + "id": "ris", + "outcome": "Risk", + "workshop_1": "w_safe", + "unlock_universal": true, + "unlock_less": false, + "unlock_greater_equal": false, + "reply_universal": "It can be hard to know what your teen is doing and parents worry about their safety. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.", + "_translations": { + "reply_universal": { + "tz_sw": true + } + }, + "_translatedFields": { + "reply_universal": { + "eng": "It can be hard to know what your teen is doing and parents worry about their safety. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time." + } + } + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + }, + { + "unlock_universal": false, + "unlock_less": false, + "unlock_greater_equal": false + } + ], + "_xlsxPath": "global/data/survey_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_1on1_specific_task_gs.json b/packages/app-data/sheets/data_list/w_1on1_specific_task_gs.json new file mode 100644 index 0000000000..a07cdd777c --- /dev/null +++ b/packages/app-data/sheets/data_list/w_1on1_specific_task_gs.json @@ -0,0 +1,51 @@ +{ + "flow_type": "data_list", + "flow_name": "w_1on1_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "question", + "individual": true, + "together": false, + "priority": 14, + "has_single_task": true, + "template": "w_1on1_question", + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + } + }, + { + "id": "talk", + "individual": false, + "together": true, + "priority": 14, + "has_single_task": true, + "template": "w_1on1_talk", + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_1on1_specific_tasks.json b/packages/app-data/sheets/data_list/w_1on1_specific_tasks.json new file mode 100644 index 0000000000..dc1333581a --- /dev/null +++ b/packages/app-data/sheets/data_list/w_1on1_specific_tasks.json @@ -0,0 +1,22 @@ +{ + "flow_type": "data_list", + "flow_name": "w_1on1_specific_tasks", + "status": "released", + "rows": [ + { + "id": "question", + "group": "question", + "individual": true, + "together": false, + "template": "w_1on1_question" + }, + { + "id": "talk", + "group": "talk", + "individual": false, + "together": true, + "template": "w_1on1_talk" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_celebrate_specific_task_gs.json b/packages/app-data/sheets/data_list/w_celebrate_specific_task_gs.json new file mode 100644 index 0000000000..865a7ff09b --- /dev/null +++ b/packages/app-data/sheets/data_list/w_celebrate_specific_task_gs.json @@ -0,0 +1,80 @@ +{ + "flow_type": "data_list", + "flow_name": "w_celebrate_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "template": "w_celebrate_think", + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + } + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 12, + "has_single_task": true, + "template": "w_celebrate_talk_1", + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + } + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "template": "w_celebrate_talk_2", + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_celebrate_specific_tasks.json b/packages/app-data/sheets/data_list/w_celebrate_specific_tasks.json new file mode 100644 index 0000000000..837a650bcd --- /dev/null +++ b/packages/app-data/sheets/data_list/w_celebrate_specific_tasks.json @@ -0,0 +1,29 @@ +{ + "flow_type": "data_list", + "flow_name": "w_celebrate_specific_tasks", + "status": "released", + "rows": [ + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_celebrate_think" + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "template": "w_celebrate_talk_1" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_celebrate_talk_2" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_consequence_specific_task_gs.json b/packages/app-data/sheets/data_list/w_consequence_specific_task_gs.json new file mode 100644 index 0000000000..49730665d6 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_consequence_specific_task_gs.json @@ -0,0 +1,152 @@ +{ + "flow_type": "data_list", + "flow_name": "w_consequence_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "welcome_individual", + "individual": true, + "together": false, + "priority": 1, + "has_single_task": true, + "template": "w_consequence_welcome_ind", + "title": "How are you?", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "How are you?" + } + } + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "neg_consequence", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_consequence.title" + } + } + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "template": "w_consequence_learn_1_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + }, + { + "id": "talk_2", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "template": "w_consequence_talk_2", + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 72, + "story_id": "pos_consequence", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_consequence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_consequence.title" + } + } + }, + { + "id": "learn_2", + "individual": true, + "together": false, + "priority": 74, + "has_single_task": true, + "template": "w_consequence_learn_2_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "template": "w_consequence_try", + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_consequence_specific_tasks.json b/packages/app-data/sheets/data_list/w_consequence_specific_tasks.json new file mode 100644 index 0000000000..8167435d5c --- /dev/null +++ b/packages/app-data/sheets/data_list/w_consequence_specific_tasks.json @@ -0,0 +1,84 @@ +{ + "flow_type": "data_list", + "flow_name": "w_consequence_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_consequence_read_1" + }, + { + "id": "question_1", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_consequence_question_1" + }, + { + "id": "talk_1", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_consequence_talk_1" + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_consequence_learn_1_temp" + }, + { + "id": "talk_2", + "group": "talk_2", + "individual": false, + "together": true, + "template": "w_consequence_talk_2" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_consequence_read_3" + }, + { + "id": "question_2", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_consequence_question_2" + }, + { + "id": "talk_3", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_consequence_talk_3" + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": false, + "template": "w_consequence_learn_2_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_consequence_try" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_crisis_specific_task_gs.json b/packages/app-data/sheets/data_list/w_crisis_specific_task_gs.json new file mode 100644 index 0000000000..6c27179629 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_crisis_specific_task_gs.json @@ -0,0 +1,66 @@ +{ + "flow_type": "data_list", + "flow_name": "w_crisis_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "rape", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.rape.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.rape.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "story_id": "violence", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.violence.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.violence.title" + } + } + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 71, + "has_single_task": true, + "template": "w_crisis_learn_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_crisis_specific_tasks.json b/packages/app-data/sheets/data_list/w_crisis_specific_tasks.json new file mode 100644 index 0000000000..86103b5c00 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_crisis_specific_tasks.json @@ -0,0 +1,63 @@ +{ + "flow_type": "data_list", + "flow_name": "w_crisis_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_crisis_read_1" + }, + { + "id": "question_1", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_crisis_question_1" + }, + { + "id": "talk_1", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_crisis_talk_1" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_crisis_read_2" + }, + { + "id": "question_2", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_crisis_question_2" + }, + { + "id": "talk_2", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_crisis_talk_2" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_crisis_learn_temp" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_instruct_specific_task_gs.json b/packages/app-data/sheets/data_list/w_instruct_specific_task_gs.json new file mode 100644 index 0000000000..09f0dfab22 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_instruct_specific_task_gs.json @@ -0,0 +1,85 @@ +{ + "flow_type": "data_list", + "flow_name": "w_instruct_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "think", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "template": "w_instruct_think_1_temp", + "title": "Think", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Think" + } + } + }, + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 12, + "story_id": "neg_instruct", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.neg_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_instruct.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 14, + "story_id": "pos_instruct", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_instruct.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_instruct.title" + } + } + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "template": "w_instruct_try", + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_instruct_specific_tasks.json b/packages/app-data/sheets/data_list/w_instruct_specific_tasks.json new file mode 100644 index 0000000000..537d4d1f1b --- /dev/null +++ b/packages/app-data/sheets/data_list/w_instruct_specific_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_type": "data_list", + "flow_name": "w_instruct_specific_tasks", + "status": "released", + "rows": [ + { + "id": "think", + "group": "think", + "individual": true, + "together": true, + "template": "w_instruct_think_1_temp" + }, + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_instruct_read_1" + }, + { + "id": "question_1", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_instruct_question_1" + }, + { + "id": "talk_1", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_instruct_talk_1" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_instruct_read_2" + }, + { + "id": "question_2", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_instruct_question_2" + }, + { + "id": "talk_2", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_instruct_talk_2" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_instruct_try" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_money_specific_task_gs.json b/packages/app-data/sheets/data_list/w_money_specific_task_gs.json new file mode 100644 index 0000000000..c296731aa6 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_money_specific_task_gs.json @@ -0,0 +1,155 @@ +{ + "flow_type": "data_list", + "flow_name": "w_money_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "money_problems", + "has_single_task": true, + "template": "w_money_read_1", + "title": "@global.story @global.part_connector @data.story.money_problems.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_problems.title" + } + } + }, + { + "id": "learn_1", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "template": "w_money_learn_1_temp", + "title": "Learn - Budget preparation", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Budget preparation" + } + } + }, + { + "id": "learn_2", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "template": "w_money_learn_2_temp", + "title": "Learn - Step 1: Think", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 1: Think" + } + } + }, + { + "id": "learn_3", + "individual": true, + "together": true, + "priority": 14, + "has_single_task": true, + "template": "w_money_learn_3_temp", + "title": "Learn - Step 2: Choose", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 2: Choose" + } + } + }, + { + "id": "learn_4", + "individual": true, + "together": true, + "priority": 15, + "has_single_task": true, + "template": "w_money_learn_4_temp", + "title": "Learn - Step 3: Build", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 3: Build" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 16, + "story_id": "money_plan", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_plan.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_plan.title" + } + } + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 18, + "story_id": "money_emergencies", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.money_emergencies.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.money_emergencies.title" + } + } + }, + { + "id": "learn_5", + "individual": true, + "together": true, + "priority": 21, + "has_single_task": true, + "template": "w_money_learn_5_temp", + "title": "Learn - Step 4: Plan", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn - Step 4: Plan" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_money_specific_tasks.json b/packages/app-data/sheets/data_list/w_money_specific_tasks.json new file mode 100644 index 0000000000..83edcc8c29 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_money_specific_tasks.json @@ -0,0 +1,114 @@ +{ + "flow_type": "data_list", + "flow_name": "w_money_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_money_read_1" + }, + { + "id": "learn_1", + "group": "learn_1", + "individual": true, + "together": true, + "template": "w_money_learn_1_temp" + }, + { + "id": "learn_2", + "group": "learn_2", + "individual": true, + "together": true, + "template": "w_money_learn_2_temp" + }, + { + "id": "learn_3", + "group": "learn_3", + "individual": true, + "together": true, + "template": "w_money_learn_3_temp" + }, + { + "id": "learn_4", + "group": "learn_4", + "individual": true, + "together": true, + "template": "w_money_learn_4_temp" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_money_read_2" + }, + { + "id": "question_1", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_money_tq_1" + }, + { + "id": "talk_1", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_money_tq_1" + }, + { + "id": "read_3", + "group": "read_3", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_money_read_3" + }, + { + "id": "question_2", + "group": "read_3", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_money_tq_2" + }, + { + "id": "talk_2", + "group": "read_3", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_money_tq_2" + }, + { + "id": "question_3", + "group": "read_3", + "rel_priority": 4, + "individual": true, + "together": false, + "template": "w_money_tq_3" + }, + { + "id": "talk_3", + "group": "read_3", + "rel_priority": 5, + "individual": false, + "together": true, + "template": "w_money_tq_3" + }, + { + "id": "learn_5", + "group": "learn_5", + "individual": true, + "together": true, + "template": "w_money_learn_5_temp" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_praise_specific_task_gs.json b/packages/app-data/sheets/data_list/w_praise_specific_task_gs.json new file mode 100644 index 0000000000..a4008bd1ce --- /dev/null +++ b/packages/app-data/sheets/data_list/w_praise_specific_task_gs.json @@ -0,0 +1,87 @@ +{ + "flow_type": "data_list", + "flow_name": "w_praise_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "question_1", + "individual": true, + "together": false, + "priority": 11, + "has_single_task": true, + "template": "w_praise_question_1", + "title": "Question", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Question" + } + } + }, + { + "id": "talk_1", + "individual": false, + "together": true, + "priority": 11, + "has_single_task": true, + "template": "w_praise_talk_1", + "title": "Talk Together", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Talk Together" + } + } + }, + { + "id": "read", + "individual": true, + "together": true, + "priority": 12, + "story_id": "praise", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.praise.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.praise.title" + } + } + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 71, + "has_single_task": true, + "template": "w_praise_try", + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_praise_specific_tasks.json b/packages/app-data/sheets/data_list/w_praise_specific_tasks.json new file mode 100644 index 0000000000..cf64c33244 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_praise_specific_tasks.json @@ -0,0 +1,59 @@ +{ + "flow_type": "data_list", + "flow_name": "w_praise_specific_tasks", + "status": "released", + "rows": [ + { + "id": "question_1", + "group": "question_1", + "individual": true, + "together": false, + "priority": 11, + "template": "w_praise_question_1" + }, + { + "id": "talk_1", + "group": "talk_1", + "individual": false, + "together": true, + "priority": 11, + "template": "w_praise_talk_1" + }, + { + "id": "read", + "group": "read", + "rel_priority": 1, + "individual": true, + "together": true, + "priority": 12, + "template": "w_praise_read" + }, + { + "id": "question_2", + "group": "read", + "rel_priority": 2, + "individual": true, + "together": false, + "priority": 13, + "template": "w_praise_question_2" + }, + { + "id": "talk_2", + "group": "read", + "rel_priority": 3, + "individual": false, + "together": true, + "priority": 13, + "template": "w_praise_talk_2" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "priority": 71, + "template": "w_praise_try" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_rules_specific_task_gs.json b/packages/app-data/sheets/data_list/w_rules_specific_task_gs.json new file mode 100644 index 0000000000..d3e4604303 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_rules_specific_task_gs.json @@ -0,0 +1,86 @@ +{ + "flow_type": "data_list", + "flow_name": "w_rules_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "make_rule", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.make_rule.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.make_rule.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "story_id": "online_safety", + "has_single_task": true, + "template": "w_rules_read_2", + "title": "@global.story @global.part_connector @data.story.online_safety.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_safety.title" + } + } + }, + { + "id": "learn", + "individual": true, + "together": false, + "priority": 72, + "has_single_task": true, + "template": "w_rules_learn_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 73, + "has_single_task": true, + "template": "w_rules_try", + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_rules_specific_tasks.json b/packages/app-data/sheets/data_list/w_rules_specific_tasks.json new file mode 100644 index 0000000000..7af1f8751b --- /dev/null +++ b/packages/app-data/sheets/data_list/w_rules_specific_tasks.json @@ -0,0 +1,53 @@ +{ + "flow_type": "data_list", + "flow_name": "w_rules_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_rules_read_1" + }, + { + "id": "question", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_rules_question" + }, + { + "id": "talk", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_rules_talk" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_rules_read_2" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": false, + "template": "w_rules_learn_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_rules_try" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_safe_specific_task_gs.json b/packages/app-data/sheets/data_list/w_safe_specific_task_gs.json new file mode 100644 index 0000000000..64966bf656 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_safe_specific_task_gs.json @@ -0,0 +1,90 @@ +{ + "flow_type": "data_list", + "flow_name": "w_safe_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "sugar_daddy", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.sugar_daddy.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.sugar_daddy.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "story_id": "online_contact", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.online_contact.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.online_contact.title" + } + } + }, + { + "id": "learn_ind", + "individual": true, + "together": false, + "priority": 15, + "has_single_task": true, + "template": "w_safe_learn_individual_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + }, + { + "id": "learn_tog", + "individual": false, + "together": true, + "priority": 15, + "has_single_task": true, + "template": "w_safe_learn_together_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_safe_specific_tasks.json b/packages/app-data/sheets/data_list/w_safe_specific_tasks.json new file mode 100644 index 0000000000..2ee8ea135b --- /dev/null +++ b/packages/app-data/sheets/data_list/w_safe_specific_tasks.json @@ -0,0 +1,70 @@ +{ + "flow_type": "data_list", + "flow_name": "w_safe_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_safe_read_1" + }, + { + "id": "question_1", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_safe_question_1" + }, + { + "id": "talk_1", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_safe_talk_1" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_safe_read_2" + }, + { + "id": "question_2", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_safe_question_2" + }, + { + "id": "talk_2", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_safe_talk_2" + }, + { + "id": "learn_ind", + "group": "learn_ind", + "individual": true, + "together": false, + "template": "w_safe_learn_individual_temp" + }, + { + "id": "learn_tog", + "group": "learn_tog", + "individual": false, + "together": true, + "template": "w_safe_learn_together_temp" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_self_care_specific_task_gs.json b/packages/app-data/sheets/data_list/w_self_care_specific_task_gs.json new file mode 100644 index 0000000000..b98e5eb177 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_self_care_specific_task_gs.json @@ -0,0 +1,80 @@ +{ + "flow_type": "data_list", + "flow_name": "w_self_care_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "relax", + "individual": true, + "together": true, + "priority": 11, + "has_single_task": true, + "template": "w_self_care_relax", + "title": "Relax", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Relax" + } + } + }, + { + "id": "recognise", + "individual": true, + "together": true, + "priority": 12, + "has_single_task": true, + "template": "w_self_care_recognise", + "title": "Recognise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Recognise" + } + } + }, + { + "id": "reward", + "individual": true, + "together": true, + "priority": 13, + "has_single_task": true, + "template": "w_self_care_reward", + "title": "Reward", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Reward" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_self_care_specific_tasks.json b/packages/app-data/sheets/data_list/w_self_care_specific_tasks.json new file mode 100644 index 0000000000..ce0f16d3d8 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_self_care_specific_tasks.json @@ -0,0 +1,29 @@ +{ + "flow_type": "data_list", + "flow_name": "w_self_care_specific_tasks", + "status": "released", + "rows": [ + { + "id": "relax", + "group": "relax", + "individual": true, + "together": true, + "template": "w_self_care_relax" + }, + { + "id": "recognise", + "group": "recognise", + "individual": true, + "together": true, + "template": "w_self_care_recognise" + }, + { + "id": "reward", + "group": "reward", + "individual": true, + "together": true, + "template": "w_self_care_reward" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_solve_specific_task_gs.json b/packages/app-data/sheets/data_list/w_solve_specific_task_gs.json new file mode 100644 index 0000000000..670c291c51 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_solve_specific_task_gs.json @@ -0,0 +1,86 @@ +{ + "flow_type": "data_list", + "flow_name": "w_solve_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "neg_solve", + "has_single_task": true, + "template": "w_solve_read_1", + "title": "@global.story @global.part_connector @data.story.neg_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.neg_solve.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 71, + "story_id": "pos_solve", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.pos_solve.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.pos_solve.title" + } + } + }, + { + "id": "learn", + "individual": true, + "together": true, + "priority": 74, + "has_single_task": true, + "template": "w_solve_learn_temp", + "title": "Learn", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Learn" + } + } + }, + { + "id": "try", + "individual": false, + "together": true, + "priority": 75, + "has_single_task": true, + "template": "w_solve_try", + "title": "Try it out!", + "_translations": { + "title": { + "tz_sw": true + } + }, + "_translatedFields": { + "title": { + "eng": "Try it out!" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_solve_specific_tasks.json b/packages/app-data/sheets/data_list/w_solve_specific_tasks.json new file mode 100644 index 0000000000..bd27797158 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_solve_specific_tasks.json @@ -0,0 +1,53 @@ +{ + "flow_type": "data_list", + "flow_name": "w_solve_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "individual": true, + "together": true, + "template": "w_solve_read_1" + }, + { + "id": "read_2", + "group": "read_2", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_solve_read_2" + }, + { + "id": "think", + "group": "read_2", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_solve_think" + }, + { + "id": "talk", + "group": "read_2", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_solve_talk" + }, + { + "id": "learn", + "group": "learn", + "individual": true, + "together": true, + "template": "w_solve_learn_temp" + }, + { + "id": "try", + "group": "try", + "individual": false, + "together": true, + "template": "w_solve_try" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_stress_specific_task_gs.json b/packages/app-data/sheets/data_list/w_stress_specific_task_gs.json new file mode 100644 index 0000000000..dc853bcfe8 --- /dev/null +++ b/packages/app-data/sheets/data_list/w_stress_specific_task_gs.json @@ -0,0 +1,60 @@ +{ + "flow_type": "data_list", + "flow_name": "w_stress_specific_task_gs", + "status": "released", + "rows": [ + { + "id": "read_1", + "individual": true, + "together": true, + "priority": 11, + "story_id": "ignore_emotions", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.ignore_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.ignore_emotions.title" + } + } + }, + { + "id": "read_2", + "individual": true, + "together": true, + "priority": 13, + "story_id": "acknowledge_emotions", + "has_single_task": true, + "template": "w_stress_read_2", + "title": "@global.story @global.part_connector @data.story.acknowledge_emotions.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.acknowledge_emotions.title" + } + } + }, + { + "id": "read_3", + "individual": true, + "together": true, + "priority": 14, + "story_id": "safety_amnesty", + "has_single_task": false, + "title": "@global.story @global.part_connector @data.story.safety_amnesty.title", + "_translations": { + "title": {} + }, + "_translatedFields": { + "title": { + "eng": "@global.story @global.part_connector @data.story.safety_amnesty.title" + } + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/w_stress_specific_tasks.json b/packages/app-data/sheets/data_list/w_stress_specific_tasks.json new file mode 100644 index 0000000000..a56e3e46ad --- /dev/null +++ b/packages/app-data/sheets/data_list/w_stress_specific_tasks.json @@ -0,0 +1,54 @@ +{ + "flow_type": "data_list", + "flow_name": "w_stress_specific_tasks", + "status": "released", + "rows": [ + { + "id": "read_1", + "group": "read_1", + "rel_priority": 1, + "individual": true, + "together": true, + "template": "w_stress_read_1" + }, + { + "id": "question", + "group": "read_1", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_stress_question" + }, + { + "id": "talk", + "group": "read_1", + "rel_priority": 3, + "individual": false, + "together": true, + "template": "w_stress_talk" + }, + { + "id": "read_2", + "group": "read_2", + "individual": true, + "together": true, + "template": "w_stress_read_2" + }, + { + "id": "read_3", + "group": "read_3", + "individual": true, + "together": true, + "template": "w_stress_read_3" + }, + { + "id": "question_2", + "group": "read_3", + "rel_priority": 2, + "individual": true, + "together": false, + "template": "w_stress_question_2" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/workshop_data.json b/packages/app-data/sheets/data_list/workshop_data.json new file mode 100644 index 0000000000..afff5991ff --- /dev/null +++ b/packages/app-data/sheets/data_list/workshop_data.json @@ -0,0 +1,983 @@ +{ + "flow_type": "data_list", + "flow_name": "workshop_data", + "status": "released", + "data_list_name": "workshop", + "rows": [ + { + "id": "w_self_care", + "number": 1, + "image_asset": "plh_images/workshops/w_self_care/tools.svg", + "relax_data": "@data.relax.relax_5", + "relax_title": "@data.relax.relax_5.title", + "intro_audio_asset": "plh_audio/topic_intros/w_self_care_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_self_care.mp3", + "title": "Welcome and Self-Care", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "short_title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Welcome and Self-Care" + }, + "short_title": { + "eng": "Self-Care" + }, + "lower_case_title": { + "eng": "self-care" + }, + "in_text_title": { + "eng": "**Welcome and Self-Care** @global.workshop" + }, + "description": { + "eng": "This @global.workshop is about YOU. Looking after yourself is essential for a happy family." + }, + "intro_title": { + "eng": "Why self-care?" + }, + "tools": { + "eng": "How to do self-care" + }, + "caregiver_testimonial_script": { + "eng": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better." + }, + "teen_testimonial_script": { + "eng": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." + } + }, + "short_title": "Self-Care", + "lower_case_title": "self-care", + "in_text_title": "**Welcome and Self-Care** @global.workshop", + "description": "This @global.workshop is about YOU. Looking after yourself is essential for a happy family.", + "intro_title": "Why self-care?", + "tools": "How to do self-care", + "caregiver_testimonial_script": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "teen_testimonial_script": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." + }, + { + "id": "w_1on1", + "number": 2, + "image_asset": "plh_images/workshops/w_1on1/tools.svg", + "relax_data": "@data.relax.relax_2", + "relax_title": "@data.relax.relax_2.title", + "something_fun_data": "@data.something_fun.co_chef", + "intro_audio_asset": "plh_audio/topic_intros/w_1on1_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_1on1.mp3", + "title": "One-on-One Time", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "One-on-One Time" + }, + "lower_case_title": { + "eng": "one-on-one time" + }, + "in_text_title": { + "eng": "**One-on-One Time** @global.workshop" + }, + "description": { + "eng": "Spending time with your teen builds a positive relationship." + }, + "intro_title": { + "eng": "Why one-on-one time?" + }, + "tools": { + "eng": "How to spend one-on-one time" + }, + "caregiver_testimonial_script": { + "eng": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!" + }, + "teen_testimonial_script": { + "eng": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." + } + }, + "lower_case_title": "one-on-one time", + "in_text_title": "**One-on-One Time** @global.workshop", + "description": "Spending time with your teen builds a positive relationship.", + "intro_title": "Why one-on-one time?", + "tools": "How to spend one-on-one time", + "caregiver_testimonial_script": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "teen_testimonial_script": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." + }, + { + "id": "w_praise", + "number": 3, + "image_asset": "plh_images/workshops/w_praise/tools.svg", + "relax_data": "@data.relax.relax_3", + "relax_title": "@data.relax.relax_3.title", + "something_fun_data": "@data.something_fun.reflect_positive", + "intro_audio_asset": "plh_audio/topic_intros/w_praise_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_praise.mp3", + "title": "Praise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": {}, + "teen_testimonial_script": {} + }, + "_translatedFields": { + "title": { + "eng": "Praise" + }, + "lower_case_title": { + "eng": "praise" + }, + "in_text_title": { + "eng": "**Praise** @global.workshop" + }, + "description": { + "eng": "Praise helps teens show more positive behaviour." + }, + "intro_title": { + "eng": "Why praise?" + }, + "tools": { + "eng": "How to praise" + }, + "caregiver_testimonial_script": { + "eng": "When we learned about this praising thing I thought, “We were never praised for things as teenagers, so why should we start now?” But I got interested when I learned what the benefits of praising could be.\n\nRight after the weekly workshop, I noticed my teen doing what they do every day: washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does.\n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!" + }, + "teen_testimonial_script": { + "eng": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.lower_case_title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." + } + }, + "lower_case_title": "praise", + "in_text_title": "**Praise** @global.workshop", + "description": "Praise helps teens show more positive behaviour.", + "intro_title": "Why praise?", + "tools": "How to praise", + "caregiver_testimonial_script": "When we learned about this praising thing I thought, “We were never praised for things as teenagers, so why should we start now?” But I got interested when I learned what the benefits of praising could be.\n\nRight after the weekly workshop, I noticed my teen doing what they do every day: washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does.\n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "teen_testimonial_script": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.lower_case_title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." + }, + { + "id": "w_instruct", + "number": 4, + "image_asset": "plh_images/workshops/w_instruct/tools.svg", + "relax_data": "@data.relax.relax_4", + "relax_title": "@data.relax.relax_4.title", + "something_fun_data": "@data.something_fun.dance_moves", + "intro_audio_asset": "plh_audio/topic_intros/w_instruct_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_instruct.mp3", + "title": "Positive Instructions", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Positive Instructions" + }, + "lower_case_title": { + "eng": "positive instructions" + }, + "in_text_title": { + "eng": "**Positive Instructions** @global.workshop" + }, + "description": { + "eng": "Teens follow instructions that are positive more easily." + }, + "intro_title": { + "eng": "Why positive instructions?" + }, + "tools": { + "eng": "How to give positive instructions" + }, + "caregiver_testimonial_script": { + "eng": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot." + }, + "teen_testimonial_script": { + "eng": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." + } + }, + "lower_case_title": "positive instructions", + "in_text_title": "**Positive Instructions** @global.workshop", + "description": "Teens follow instructions that are positive more easily.", + "intro_title": "Why positive instructions?", + "tools": "How to give positive instructions", + "caregiver_testimonial_script": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "teen_testimonial_script": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." + }, + { + "id": "w_stress", + "number": 5, + "image_asset": "plh_images/workshops/w_stress/tools.svg", + "relax_data": "@data.relax.relax_7", + "relax_title": "@data.relax.relax_7.title", + "something_fun_data": "@data.something_fun.check_in_chat", + "intro_audio_asset": "plh_audio/topic_intros/w_stress_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_stress.mp3", + "title": "Managing Stress", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Managing Stress" + }, + "lower_case_title": { + "eng": "managing stress" + }, + "in_text_title": { + "eng": "**Managing Stress** @global.workshop" + }, + "description": { + "eng": "Life is stressful. Staying calm helps us handle any situation better." + }, + "intro_title": { + "eng": "Why managing stress?" + }, + "tools": { + "eng": "How to manage stress" + }, + "caregiver_testimonial_script": { + "eng": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!" + }, + "teen_testimonial_script": { + "eng": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." + } + }, + "lower_case_title": "managing stress", + "in_text_title": "**Managing Stress** @global.workshop", + "description": "Life is stressful. Staying calm helps us handle any situation better.", + "intro_title": "Why managing stress?", + "tools": "How to manage stress", + "caregiver_testimonial_script": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "teen_testimonial_script": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." + }, + { + "id": "w_solve", + "number": 6, + "image_asset": "plh_images/workshops/w_solve/tools.svg", + "relax_data": "@data.relax.relax_11", + "relax_title": "@data.relax.relax_11.title", + "something_fun_data": "@data.something_fun.mirror", + "intro_audio_asset": "plh_audio/topic_intros/w_solve_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_solve.mp3", + "title": "Problem Solving", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Problem Solving" + }, + "lower_case_title": { + "eng": "problem solving" + }, + "in_text_title": { + "eng": "**Problem Solving** @global.workshop" + }, + "description": { + "eng": "Together with your teen, you can handle any challenge." + }, + "intro_title": { + "eng": "Why problem solving?" + }, + "tools": { + "eng": "How to solve problems" + }, + "caregiver_testimonial_script": { + "eng": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now." + }, + "teen_testimonial_script": { + "eng": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." + } + }, + "lower_case_title": "problem solving", + "in_text_title": "**Problem Solving** @global.workshop", + "description": "Together with your teen, you can handle any challenge.", + "intro_title": "Why problem solving?", + "tools": "How to solve problems", + "caregiver_testimonial_script": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "teen_testimonial_script": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." + }, + { + "id": "w_money", + "number": 7, + "image_asset": "plh_images/workshops/w_money/tools.svg", + "relax_data": "@data.relax.relax_8", + "relax_title": "@data.relax.relax_8.title", + "something_fun_data": "@data.something_fun.dream_travel", + "intro_audio_asset": "plh_audio/topic_intros/w_money_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_money.mp3", + "title": "Family Budgets", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Family Budgets" + }, + "lower_case_title": { + "eng": "family budgets" + }, + "in_text_title": { + "eng": "**Family Budgets** @global.workshop" + }, + "description": { + "eng": "Making a plan to budget and save as a family prevents disagreements." + }, + "intro_title": { + "eng": "Why family budgets?" + }, + "tools": { + "eng": "How to budget & save" + }, + "caregiver_testimonial_script": { + "eng": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account." + }, + "teen_testimonial_script": { + "eng": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." + } + }, + "lower_case_title": "family budgets", + "in_text_title": "**Family Budgets** @global.workshop", + "description": "Making a plan to budget and save as a family prevents disagreements.", + "intro_title": "Why family budgets?", + "tools": "How to budget & save", + "caregiver_testimonial_script": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "teen_testimonial_script": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." + }, + { + "id": "w_rules", + "number": 8, + "image_asset": "plh_images/workshops/w_rules/tools.svg", + "relax_data": "@data.relax.relax_9", + "relax_title": "@data.relax.relax_9.title", + "something_fun_data": "@data.something_fun.famous_party", + "intro_audio_asset": "plh_audio/topic_intros/w_rules_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_rules.mp3", + "title": "Rules", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Rules" + }, + "lower_case_title": { + "eng": "rules" + }, + "in_text_title": { + "eng": "**Rules** @global.workshop" + }, + "description": { + "eng": "Teens follow rules more when you create them together." + }, + "intro_title": { + "eng": "Why rules?" + }, + "tools": { + "eng": "How to create rules" + }, + "caregiver_testimonial_script": { + "eng": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules." + }, + "teen_testimonial_script": { + "eng": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." + } + }, + "lower_case_title": "rules", + "in_text_title": "**Rules** @global.workshop", + "description": "Teens follow rules more when you create them together.", + "intro_title": "Why rules?", + "tools": "How to create rules", + "caregiver_testimonial_script": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "teen_testimonial_script": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." + }, + { + "id": "w_consequence", + "number": 9, + "image_asset": "plh_images/workshops/w_consequence/tools.svg", + "relax_data": "@data.relax.relax_10", + "relax_title": "@data.relax.relax_10.title", + "something_fun_data": "@data.something_fun.two_truths", + "intro_audio_asset": "plh_audio/topic_intros/w_consequence_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_consequence.mp3", + "title": "Calm Consequences", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Calm Consequences" + }, + "lower_case_title": { + "eng": "calm consequences" + }, + "in_text_title": { + "eng": "**Calm Consequences** @global.workshop" + }, + "description": { + "eng": "Consequences help us discipline our teens in a calm way – it works." + }, + "intro_title": { + "eng": "Why calm consequences?" + }, + "tools": { + "eng": "How to give calm consequences" + }, + "caregiver_testimonial_script": { + "eng": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!" + }, + "teen_testimonial_script": { + "eng": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." + } + }, + "lower_case_title": "calm consequences", + "in_text_title": "**Calm Consequences** @global.workshop", + "description": "Consequences help us discipline our teens in a calm way – it works.", + "intro_title": "Why calm consequences?", + "tools": "How to give calm consequences", + "caregiver_testimonial_script": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "teen_testimonial_script": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." + }, + { + "id": "w_safe", + "number": 10, + "image_asset": "plh_images/workshops/w_safe/tools.svg", + "relax_data": "@data.relax.relax_12", + "relax_title": "@data.relax.relax_12.title", + "something_fun_data": "@data.something_fun.time_machine", + "intro_audio_asset": "plh_audio/topic_intros/w_safe_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_safe.mp3", + "title": "Teen Safety", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Teen Safety" + }, + "lower_case_title": { + "eng": "teen safety" + }, + "in_text_title": { + "eng": "**Teen Safety** @global.workshop" + }, + "description": { + "eng": "Talking and planning helps prevent dangerous situations, in-person and online." + }, + "intro_title": { + "eng": "Why teen safety?" + }, + "tools": { + "eng": "How to keep your teen safe" + }, + "caregiver_testimonial_script": { + "eng": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe." + }, + "teen_testimonial_script": { + "eng": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" + } + }, + "lower_case_title": "teen safety", + "in_text_title": "**Teen Safety** @global.workshop", + "description": "Talking and planning helps prevent dangerous situations, in-person and online.", + "intro_title": "Why teen safety?", + "tools": "How to keep your teen safe", + "caregiver_testimonial_script": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "teen_testimonial_script": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" + }, + { + "id": "w_crisis", + "number": 11, + "image_asset": "plh_images/workshops/w_crisis/tools.svg", + "relax_data": "@data.relax.relax_13", + "relax_title": "@data.relax.relax_13.title", + "something_fun_data": "@data.something_fun.superpowers", + "intro_audio_asset": "plh_audio/topic_intros/w_crisis_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3", + "teen_testimonial_audio_asset": "plh_audio/testimonials/teen/teen_test_w_crisis.mp3", + "title": "Dealing with Crisis", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Dealing with Crisis" + }, + "lower_case_title": { + "eng": "dealing with crisis" + }, + "in_text_title": { + "eng": "**Dealing with Crisis** @global.workshop" + }, + "description": { + "eng": "A crisis can happen in any family. You can be prepared." + }, + "intro_title": { + "eng": "Why dealing with crisis?" + }, + "tools": { + "eng": "How to deal with crisis" + }, + "caregiver_testimonial_script": { + "eng": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!" + }, + "teen_testimonial_script": { + "eng": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." + } + }, + "lower_case_title": "dealing with crisis", + "in_text_title": "**Dealing with Crisis** @global.workshop", + "description": "A crisis can happen in any family. You can be prepared.", + "intro_title": "Why dealing with crisis?", + "tools": "How to deal with crisis", + "caregiver_testimonial_script": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "teen_testimonial_script": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." + }, + { + "id": "w_celebrate", + "number": 12, + "image_asset": "plh_images/workshops/w_celebrate/tools.svg", + "relax_data": "@data.relax.relax_14", + "relax_title": "@data.relax.relax_14.title", + "intro_audio_asset": "plh_audio/topic_intros/w_celebrate_intro.mp3", + "title": "Celebration and Next Steps", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "lower_case_title": {}, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "intro_title": {}, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Celebration and Next Steps" + }, + "lower_case_title": { + "eng": "celebration and next steps" + }, + "in_text_title": { + "eng": "**Celebration and Next Steps** @global.workshop" + }, + "description": { + "eng": "Celebrate everything you learned and continue to support your family." + }, + "intro_title": { + "eng": "Why celebration and next steps?" + }, + "tools": { + "eng": "How to support each other" + } + }, + "lower_case_title": "celebration and next steps", + "in_text_title": "**Celebration and Next Steps** @global.workshop", + "description": "Celebrate everything you learned and continue to support your family.", + "intro_title": "Why celebration and next steps?", + "tools": "How to support each other" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_list/workshop_data_list.json b/packages/app-data/sheets/data_list/workshop_data_list.json deleted file mode 100644 index a5bf83b32b..0000000000 --- a/packages/app-data/sheets/data_list/workshop_data_list.json +++ /dev/null @@ -1,753 +0,0 @@ -{ - "flow_type": "data_list", - "flow_name": "workshop_data_list", - "status": "released", - "data_list_name": "workshop", - "rows": [ - { - "id": "w_self_care", - "number": 1, - "image_asset": "plh_images/workshops/w_self_care/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": false, - "relax_data": "@data.relax.relax_5", - "intro_audio_asset": "plh_audio/topic_intros/w_self_care_intro.mp3", - "title": "Welcome and Self-Care", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "short_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Welcome and Self-Care" - }, - "in_text_title": { - "eng": "**Welcome and Self-Care** workshop" - }, - "short_title": { - "eng": "Self-Care" - }, - "tools": { - "eng": "How to do self-care" - }, - "caregiver_testimonial_script": { - "eng": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better." - }, - "teen_testimonial_script": { - "eng": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." - } - }, - "in_text_title": "**Welcome and Self-Care** workshop", - "short_title": "Self-Care", - "tools": "How to do self-care", - "caregiver_testimonial_script": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", - "teen_testimonial_script": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." - }, - { - "id": "w_1on1", - "number": 2, - "image_asset": "plh_images/workshops/w_1on1/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_2", - "something_fun_data": "@data.something_fun.co_chef", - "intro_audio_asset": "plh_audio/topic_intros/w_1on1_intro.mp3", - "title": "One-on-One Time", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "One-on-One Time" - }, - "in_text_title": { - "eng": "**One-on-One Time** workshop" - }, - "tools": { - "eng": "How to spend one-on-one time" - }, - "caregiver_testimonial_script": { - "eng": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!" - }, - "teen_testimonial_script": { - "eng": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." - } - }, - "in_text_title": "**One-on-One Time** workshop", - "tools": "How to spend one-on-one time", - "caregiver_testimonial_script": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", - "teen_testimonial_script": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." - }, - { - "id": "w_praise", - "number": 3, - "image_asset": "plh_images/workshops/w_praise/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_3", - "something_fun_data": "@data.something_fun.reflect_positive", - "intro_audio_asset": "plh_audio/topic_intros/w_praise_intro.mp3", - "title": "Praise", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Praise" - }, - "in_text_title": { - "eng": "**Praise** workshop" - }, - "tools": { - "eng": "How to praise" - }, - "caregiver_testimonial_script": { - "eng": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!" - }, - "teen_testimonial_script": { - "eng": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." - } - }, - "in_text_title": "**Praise** workshop", - "tools": "How to praise", - "caregiver_testimonial_script": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", - "teen_testimonial_script": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." - }, - { - "id": "w_instruct", - "number": 4, - "image_asset": "plh_images/workshops/w_instruct/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_4", - "something_fun_data": "@data.something_fun.dance_moves", - "intro_audio_asset": "plh_audio/topic_intros/w_instruct_intro.mp3", - "title": "Positive Instructions", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Positive Instructions" - }, - "in_text_title": { - "eng": "**Positive Instructions** workshop" - }, - "tools": { - "eng": "How to give positive instructions" - }, - "caregiver_testimonial_script": { - "eng": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot." - }, - "teen_testimonial_script": { - "eng": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." - } - }, - "in_text_title": "**Positive Instructions** workshop", - "tools": "How to give positive instructions", - "caregiver_testimonial_script": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", - "teen_testimonial_script": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." - }, - { - "id": "w_stress", - "number": 5, - "image_asset": "plh_images/workshops/w_stress/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_7", - "something_fun_data": "@data.something_fun.check_in_chat", - "intro_audio_asset": "plh_audio/topic_intros/w_stress_intro.mp3", - "title": "Managing Stress", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Managing Stress" - }, - "in_text_title": { - "eng": "**Managing Stress** workshop" - }, - "tools": { - "eng": "How to manage stress" - }, - "caregiver_testimonial_script": { - "eng": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!" - }, - "teen_testimonial_script": { - "eng": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." - } - }, - "in_text_title": "**Managing Stress** workshop", - "tools": "How to manage stress", - "caregiver_testimonial_script": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", - "teen_testimonial_script": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." - }, - { - "id": "w_money", - "number": 6, - "image_asset": "plh_images/workshops/w_money/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_8", - "something_fun_data": "@data.something_fun.dream_travel", - "intro_audio_asset": "plh_audio/topic_intros/w_money_intro.mp3", - "title": "Family Budgets", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Family Budgets" - }, - "in_text_title": { - "eng": "**Family Budgets** workshop" - }, - "tools": { - "eng": "How to budget & save" - }, - "caregiver_testimonial_script": { - "eng": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account." - }, - "teen_testimonial_script": { - "eng": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." - } - }, - "in_text_title": "**Family Budgets** workshop", - "tools": "How to budget & save", - "caregiver_testimonial_script": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", - "teen_testimonial_script": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." - }, - { - "id": "w_rules", - "number": 7, - "image_asset": "plh_images/workshops/w_rules/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_9", - "something_fun_data": "@data.something_fun.famous_party", - "intro_audio_asset": "plh_audio/topic_intros/w_rules_intro.mp3", - "title": "Rules", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Rules" - }, - "in_text_title": { - "eng": "**Rules** workshop" - }, - "tools": { - "eng": "How to create rules" - }, - "caregiver_testimonial_script": { - "eng": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules." - }, - "teen_testimonial_script": { - "eng": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." - } - }, - "in_text_title": "**Rules** workshop", - "tools": "How to create rules", - "caregiver_testimonial_script": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", - "teen_testimonial_script": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." - }, - { - "id": "w_consequence", - "number": 8, - "image_asset": "plh_images/workshops/w_consequence/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_10", - "something_fun_data": "@data.something_fun.two_truths", - "intro_audio_asset": "plh_audio/topic_intros/w_consequence_intro.mp3", - "title": "Calm Consequences", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Calm Consequences" - }, - "in_text_title": { - "eng": "**Calm Consequences** workshop" - }, - "tools": { - "eng": "How to give calm consequences" - }, - "caregiver_testimonial_script": { - "eng": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!" - }, - "teen_testimonial_script": { - "eng": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." - } - }, - "in_text_title": "**Calm Consequences** workshop", - "tools": "How to give calm consequences", - "caregiver_testimonial_script": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", - "teen_testimonial_script": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." - }, - { - "id": "w_solve", - "number": 9, - "image_asset": "plh_images/workshops/w_solve/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_11", - "something_fun_data": "@data.something_fun.mirror", - "intro_audio_asset": "plh_audio/topic_intros/w_solve_intro.mp3", - "title": "Problem Solving", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Problem Solving" - }, - "in_text_title": { - "eng": "**Problem Solving** workshop" - }, - "tools": { - "eng": "How to solve problems" - }, - "caregiver_testimonial_script": { - "eng": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now." - }, - "teen_testimonial_script": { - "eng": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." - } - }, - "in_text_title": "**Problem Solving** workshop", - "tools": "How to solve problems", - "caregiver_testimonial_script": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", - "teen_testimonial_script": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." - }, - { - "id": "w_safe", - "number": 10, - "image_asset": "plh_images/workshops/w_safe/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_12", - "something_fun_data": "@data.something_fun.time_machine", - "intro_audio_asset": "plh_audio/topic_intros/w_safe_intro.mp3", - "title": "Teen Safety", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Teen Safety" - }, - "in_text_title": { - "eng": "**Teen Safety** workshop" - }, - "tools": { - "eng": "How to keep your teen safe" - }, - "caregiver_testimonial_script": { - "eng": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe." - }, - "teen_testimonial_script": { - "eng": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" - } - }, - "in_text_title": "**Teen Safety** workshop", - "tools": "How to keep your teen safe", - "caregiver_testimonial_script": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", - "teen_testimonial_script": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" - }, - { - "id": "w_crisis", - "number": 11, - "image_asset": "plh_images/workshops/w_crisis/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_13", - "something_fun_data": "@data.something_fun.superpowers", - "intro_audio_asset": "plh_audio/topic_intros/w_crisis_intro.mp3", - "title": "Dealing with Crisis", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "caregiver_testimonial_script": {}, - "teen_testimonial_script": {} - }, - "_translatedFields": { - "title": { - "eng": "Dealing with Crisis" - }, - "in_text_title": { - "eng": "**Dealing with Crisis** workshop" - }, - "tools": { - "eng": "How to deal with crisis" - }, - "caregiver_testimonial_script": { - "eng": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!" - }, - "teen_testimonial_script": { - "eng": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." - } - }, - "in_text_title": "**Dealing with Crisis** workshop", - "tools": "How to deal with crisis", - "caregiver_testimonial_script": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", - "teen_testimonial_script": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." - }, - { - "id": "w_celebrate", - "number": 12, - "image_asset": "plh_images/workshops/w_celebrate/tools.svg", - "completion_level::default": 0, - "started": false, - "completed": false, - "disabled": true, - "relax_data": "@data.relax.relax_14", - "intro_audio_asset": "plh_audio/topic_intros/w_celebrate_intro.mp3", - "title": "Celebration and Next Steps", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "in_text_title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "tools": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_translatedFields": { - "title": { - "eng": "Celebration and Next Steps" - }, - "in_text_title": { - "eng": "**Celebration and Next Steps** workshop" - }, - "tools": { - "eng": "How to support each other" - } - }, - "in_text_title": "**Celebration and Next Steps** workshop", - "tools": "How to support each other" - } - ], - "_xlsxPath": "global/data/workshop_data_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/common_workshop_task_gs_filter.json b/packages/app-data/sheets/data_pipe/common_workshop_task_gs_filter.json new file mode 100644 index 0000000000..41e633c28c --- /dev/null +++ b/packages/app-data/sheets/data_pipe/common_workshop_task_gs_filter.json @@ -0,0 +1,156 @@ +{ + "flow_type": "data_pipe", + "flow_name": "common_workshop_task_gs_filter", + "status": "released", + "rows": [ + { + "operation": "filter", + "input_source": "common_workshop_task_gs", + "args_list": [ + "id != \"relax\"", + "id != \"reflect_together\"", + "id != \"hp_review\"", + "id != \"care_together\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_self_care_common_task_gs", + "args_list": [ + "template: w_self_care_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs", + "args_list": [ + "id != \"reflect_together\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_1on1_common_task_gs", + "args_list": [ + "template: w_1on1_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_praise_common_task_gs", + "args_list": [ + "template: w_praise_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_instruct_common_task_gs", + "args_list": [ + "template: w_instruct_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_stress_common_task_gs", + "args_list": [ + "template: w_stress_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_money_common_task_gs", + "args_list": [ + "template: w_money_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_rules_common_task_gs", + "args_list": [ + "template: w_rules_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs", + "args_list": [ + "id != \"welcome_individual\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_consequence_common_task_gs", + "args_list": [ + "template: w_consequence_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_solve_common_task_gs", + "args_list": [ + "template: w_solve_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_safe_common_task_gs", + "args_list": [ + "template: w_safe_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs" + }, + { + "operation": "append_columns", + "output_target": "w_crisis_common_task_gs", + "args_list": [ + "template: w_crisis_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_task_gs", + "args_list": [ + "id != \"home_practice\"", + "id != \"hp_review\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_celebrate_common_task_gs", + "args_list": [ + "template: w_celebrate_@row.id" + ] + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/common_workshop_tasks_filter.json b/packages/app-data/sheets/data_pipe/common_workshop_tasks_filter.json new file mode 100644 index 0000000000..3429f906b0 --- /dev/null +++ b/packages/app-data/sheets/data_pipe/common_workshop_tasks_filter.json @@ -0,0 +1,152 @@ +{ + "flow_type": "data_pipe", + "flow_name": "common_workshop_tasks_filter", + "status": "released", + "rows": [ + { + "operation": "filter", + "input_source": "common_workshop_tasks", + "args_list": [ + "id != \"relax\"", + "id != \"reflect_together\"", + "id != \"hp_review\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_self_care_common_tasks", + "args_list": [ + "template: w_self_care_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks", + "args_list": [ + "id != \"reflect_together\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_1on1_common_tasks", + "args_list": [ + "template: w_1on1_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_praise_common_tasks", + "args_list": [ + "template: w_praise_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_instruct_common_tasks", + "args_list": [ + "template: w_instruct_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_stress_common_tasks", + "args_list": [ + "template: w_stress_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_money_common_tasks", + "args_list": [ + "template: w_money_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_rules_common_tasks", + "args_list": [ + "template: w_rules_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_consequence_common_tasks", + "args_list": [ + "template: w_consequence_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_solve_common_tasks", + "args_list": [ + "template: w_solve_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_safe_common_tasks", + "args_list": [ + "template: w_safe_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks" + }, + { + "operation": "append_columns", + "output_target": "w_crisis_common_tasks", + "args_list": [ + "template: w_crisis_@row.id" + ] + }, + { + "operation": "filter", + "input_source": "common_workshop_tasks", + "args_list": [ + "id != \"home_practice\"", + "id != \"hp_review\"" + ] + }, + { + "operation": "append_columns", + "output_target": "w_celebrate_common_tasks", + "args_list": [ + "template: w_celebrate_@row.id" + ] + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/single_tg_filter.json b/packages/app-data/sheets/data_pipe/single_tg_filter.json new file mode 100644 index 0000000000..b1f6f63f3b --- /dev/null +++ b/packages/app-data/sheets/data_pipe/single_tg_filter.json @@ -0,0 +1,278 @@ +{ + "flow_type": "data_pipe", + "flow_name": "single_tg_filter", + "status": "released", + "rows": [ + { + "operation": "filter", + "input_source": "w_praise_tasks", + "output_target": "tg_w_praise_read_ind", + "args_list": [ + "group ==\"read\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_praise_tasks", + "output_target": "tg_w_praise_read_tog", + "args_list": [ + "group ==\"read\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_instruct_tasks", + "output_target": "tg_w_instruct_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_instruct_tasks", + "output_target": "tg_w_instruct_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_instruct_tasks", + "output_target": "tg_w_instruct_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_instruct_tasks", + "output_target": "tg_w_instruct_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_stress_tasks", + "output_target": "tg_w_stress_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_stress_tasks", + "output_target": "tg_w_stress_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_stress_tasks", + "output_target": "tg_w_stress_read_3_ind", + "args_list": [ + "group ==\"read_3\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_stress_tasks", + "output_target": "tg_w_stress_read_3_tog", + "args_list": [ + "group ==\"read_3\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_money_tasks", + "output_target": "tg_w_money_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_money_tasks", + "output_target": "tg_w_money_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_money_tasks", + "output_target": "tg_w_money_read_3_ind", + "args_list": [ + "group ==\"read_3\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_money_tasks", + "output_target": "tg_w_money_read_3_tog", + "args_list": [ + "group ==\"read_3\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_rules_tasks", + "output_target": "tg_w_rules_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_rules_tasks", + "output_target": "tg_w_rules_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_consequence_tasks", + "output_target": "tg_w_consequence_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_consequence_tasks", + "output_target": "tg_w_consequence_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_consequence_tasks", + "output_target": "tg_w_consequence_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_consequence_tasks", + "output_target": "tg_w_consequence_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_solve_tasks", + "output_target": "tg_w_solve_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_solve_tasks", + "output_target": "tg_w_solve_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_safe_tasks", + "output_target": "tg_w_safe_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_safe_tasks", + "output_target": "tg_w_safe_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_safe_tasks", + "output_target": "tg_w_safe_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_safe_tasks", + "output_target": "tg_w_safe_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_crisis_tasks", + "output_target": "tg_w_crisis_read_1_ind", + "args_list": [ + "group ==\"read_1\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_crisis_tasks", + "output_target": "tg_w_crisis_read_1_tog", + "args_list": [ + "group ==\"read_1\"", + "together" + ] + }, + { + "operation": "filter", + "input_source": "w_crisis_tasks", + "output_target": "tg_w_crisis_read_2_ind", + "args_list": [ + "group ==\"read_2\"", + "individual" + ] + }, + { + "operation": "filter", + "input_source": "w_crisis_tasks", + "output_target": "tg_w_crisis_read_2_tog", + "args_list": [ + "group ==\"read_2\"", + "together" + ] + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/workshop_data_pipe.json b/packages/app-data/sheets/data_pipe/workshop_data_pipe.json new file mode 100644 index 0000000000..2cc8bd57ce --- /dev/null +++ b/packages/app-data/sheets/data_pipe/workshop_data_pipe.json @@ -0,0 +1,18 @@ +{ + "flow_type": "data_pipe", + "flow_name": "workshop_data_pipe", + "status": "released", + "rows": [ + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_{@row.id}_completed", + "completed: @fields.@row.completed_field", + "skipped_field: task_{@row.id}_skipped" + ], + "input_source": "workshop_data", + "output_target": "workshop_tasks" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/workshop_task_gs_append.json b/packages/app-data/sheets/data_pipe/workshop_task_gs_append.json new file mode 100644 index 0000000000..8a8c385cba --- /dev/null +++ b/packages/app-data/sheets/data_pipe/workshop_task_gs_append.json @@ -0,0 +1,308 @@ +{ + "flow_type": "data_pipe", + "flow_name": "workshop_task_gs_append", + "status": "released", + "rows": [ + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_self_care_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_self_care_task_gs_temp_1", + "output_target": "w_self_care_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_1on1_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_1on1_task_gs_temp_1", + "output_target": "w_1on1_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_praise_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_praise_task_gs_temp_1", + "output_target": "w_praise_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_instruct_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_instruct_task_gs_temp_1", + "output_target": "w_instruct_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_stress_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_stress_task_gs_temp_1", + "output_target": "w_stress_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_money_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_money_task_gs_temp_1", + "output_target": "w_money_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_rules_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_rules_task_gs_temp_1", + "output_target": "w_rules_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_consequence_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_consequence_task_gs_temp_1", + "output_target": "w_consequence_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_solve_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_solve_task_gs_temp_1", + "output_target": "w_solve_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_safe_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_safe_task_gs_temp_1", + "output_target": "w_safe_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_crisis_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_crisis_task_gs_temp_1", + "output_target": "w_crisis_task_gs" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_gp_w_celebrate_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_celebrate_task_gs_temp_1", + "output_target": "w_celebrate_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_self_care_task_gs", + "output_target": "w_self_care_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_1on1_task_gs", + "output_target": "w_1on1_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_praise_task_gs", + "output_target": "w_praise_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_instruct_task_gs", + "output_target": "w_instruct_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_stress_task_gs", + "output_target": "w_stress_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_money_task_gs", + "output_target": "w_money_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_rules_task_gs", + "output_target": "w_rules_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_consequence_task_gs", + "output_target": "w_consequence_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_solve_task_gs", + "output_target": "w_solve_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_safe_task_gs", + "output_target": "w_safe_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_crisis_task_gs", + "output_target": "w_crisis_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "individual" + ], + "input_source": "w_celebrate_task_gs", + "output_target": "w_celebrate_ind_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_self_care_task_gs", + "output_target": "w_self_care_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_1on1_task_gs", + "output_target": "w_1on1_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_praise_task_gs", + "output_target": "w_praise_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_instruct_task_gs", + "output_target": "w_instruct_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_stress_task_gs", + "output_target": "w_stress_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_money_task_gs", + "output_target": "w_money_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_rules_task_gs", + "output_target": "w_rules_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_consequence_task_gs", + "output_target": "w_consequence_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_solve_task_gs", + "output_target": "w_solve_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_safe_task_gs", + "output_target": "w_safe_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_crisis_task_gs", + "output_target": "w_crisis_tog_task_gs" + }, + { + "operation": "filter", + "args_list": [ + "together" + ], + "input_source": "w_celebrate_task_gs", + "output_target": "w_celebrate_tog_task_gs" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/workshop_task_gs_concat.json b/packages/app-data/sheets/data_pipe/workshop_task_gs_concat.json new file mode 100644 index 0000000000..4b85a9f19a --- /dev/null +++ b/packages/app-data/sheets/data_pipe/workshop_task_gs_concat.json @@ -0,0 +1,116 @@ +{ + "flow_type": "data_pipe", + "flow_name": "workshop_task_gs_concat", + "status": "released", + "rows": [ + { + "operation": "concat", + "args_list": [ + "w_self_care_common_task_gs", + "w_self_care_specific_task_gs" + ], + "input_source": false, + "output_target": "w_self_care_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_1on1_common_task_gs", + "w_1on1_specific_task_gs" + ], + "input_source": false, + "output_target": "w_1on1_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_praise_common_task_gs", + "w_praise_specific_task_gs" + ], + "input_source": false, + "output_target": "w_praise_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_instruct_common_task_gs", + "w_instruct_specific_task_gs" + ], + "input_source": false, + "output_target": "w_instruct_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_stress_common_task_gs", + "w_stress_specific_task_gs" + ], + "input_source": false, + "output_target": "w_stress_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_money_common_task_gs", + "w_money_specific_task_gs" + ], + "input_source": false, + "output_target": "w_money_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_rules_common_task_gs", + "w_rules_specific_task_gs" + ], + "input_source": false, + "output_target": "w_rules_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_consequence_common_task_gs", + "w_consequence_specific_task_gs" + ], + "input_source": false, + "output_target": "w_consequence_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_solve_common_task_gs", + "w_solve_specific_task_gs" + ], + "input_source": false, + "output_target": "w_solve_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_safe_common_task_gs", + "w_safe_specific_task_gs" + ], + "input_source": false, + "output_target": "w_safe_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_crisis_common_task_gs", + "w_crisis_specific_task_gs" + ], + "input_source": false, + "output_target": "w_crisis_task_gs_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_celebrate_common_task_gs", + "w_celebrate_specific_task_gs" + ], + "input_source": false, + "output_target": "w_celebrate_task_gs_temp_1" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_task_groups_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/workshop_tasks_append.json b/packages/app-data/sheets/data_pipe/workshop_tasks_append.json new file mode 100644 index 0000000000..1e2163e134 --- /dev/null +++ b/packages/app-data/sheets/data_pipe/workshop_tasks_append.json @@ -0,0 +1,116 @@ +{ + "flow_type": "data_pipe", + "flow_name": "workshop_tasks_append", + "status": "released", + "rows": [ + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_self_care_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_self_care_tasks_temp_1", + "output_target": "w_self_care_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_1on1_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_1on1_tasks_temp_1", + "output_target": "w_1on1_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_praise_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_praise_tasks_temp_1", + "output_target": "w_praise_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_instruct_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_instruct_tasks_temp_1", + "output_target": "w_instruct_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_stress_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_stress_tasks_temp_1", + "output_target": "w_stress_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_money_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_money_tasks_temp_1", + "output_target": "w_money_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_rules_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_rules_tasks_temp_1", + "output_target": "w_rules_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_consequence_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_consequence_tasks_temp_1", + "output_target": "w_consequence_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_solve_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_solve_tasks_temp_1", + "output_target": "w_solve_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_safe_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_safe_tasks_temp_1", + "output_target": "w_safe_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_crisis_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_crisis_tasks_temp_1", + "output_target": "w_crisis_tasks" + }, + { + "operation": "append_columns", + "args_list": [ + "completed_field: task_w_celebrate_{@row.id}_completed", + "completed: @fields.@row.completed_field" + ], + "input_source": "w_celebrate_tasks_temp_1", + "output_target": "w_celebrate_tasks" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/data_pipe/workshop_tasks_concat.json b/packages/app-data/sheets/data_pipe/workshop_tasks_concat.json new file mode 100644 index 0000000000..bb875d8b5f --- /dev/null +++ b/packages/app-data/sheets/data_pipe/workshop_tasks_concat.json @@ -0,0 +1,116 @@ +{ + "flow_type": "data_pipe", + "flow_name": "workshop_tasks_concat", + "status": "released", + "rows": [ + { + "operation": "concat", + "args_list": [ + "w_self_care_common_tasks", + "w_self_care_specific_tasks" + ], + "input_source": false, + "output_target": "w_self_care_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_1on1_common_tasks", + "w_1on1_specific_tasks" + ], + "input_source": false, + "output_target": "w_1on1_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_praise_common_tasks", + "w_praise_specific_tasks" + ], + "input_source": false, + "output_target": "w_praise_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_instruct_common_tasks", + "w_instruct_specific_tasks" + ], + "input_source": false, + "output_target": "w_instruct_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_stress_common_tasks", + "w_stress_specific_tasks" + ], + "input_source": false, + "output_target": "w_stress_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_money_common_tasks", + "w_money_specific_tasks" + ], + "input_source": false, + "output_target": "w_money_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_rules_common_tasks", + "w_rules_specific_tasks" + ], + "input_source": false, + "output_target": "w_rules_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_consequence_common_tasks", + "w_consequence_specific_tasks" + ], + "input_source": false, + "output_target": "w_consequence_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_solve_common_tasks", + "w_solve_specific_tasks" + ], + "input_source": false, + "output_target": "w_solve_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_safe_common_tasks", + "w_safe_specific_tasks" + ], + "input_source": false, + "output_target": "w_safe_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_crisis_common_tasks", + "w_crisis_specific_tasks" + ], + "input_source": false, + "output_target": "w_crisis_tasks_temp_1" + }, + { + "operation": "concat", + "args_list": [ + "w_celebrate_common_tasks", + "w_celebrate_specific_tasks" + ], + "input_source": false, + "output_target": "w_celebrate_tasks_temp_1" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks_data_pipes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/global/app_id.json b/packages/app-data/sheets/global/app_id.json new file mode 100644 index 0000000000..b20027510b --- /dev/null +++ b/packages/app-data/sheets/global/app_id.json @@ -0,0 +1,17 @@ +{ + "flow_type": "global", + "flow_name": "app_id", + "status": "released", + "rows": [ + { + "type": "declare_global_constant", + "name": "app_id", + "value": "international.idems.plh_teens", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + } + ], + "_xlsxPath": "global/data/navigation_globals.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/global/app_id_tz.json b/packages/app-data/sheets/global/app_id_tz.json new file mode 100644 index 0000000000..708288927d --- /dev/null +++ b/packages/app-data/sheets/global/app_id_tz.json @@ -0,0 +1,19 @@ +{ + "flow_type": "global", + "flow_name": "app_id_tz", + "status": "released", + "override_target": "app_id", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "rows": [ + { + "type": "declare_global_constant", + "name": "app_id", + "value": "international.idems.plh_teens_tz", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + } + ], + "_xlsxPath": "tz/data/navigation_globals_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/global/app_menu_globals.json b/packages/app-data/sheets/global/app_menu_globals.json index ec293f512d..41b3c058b5 100644 --- a/packages/app-data/sheets/global/app_menu_globals.json +++ b/packages/app-data/sheets/global/app_menu_globals.json @@ -12,7 +12,16 @@ { "type": "declare_global_constant", "name": "dev_mode_code", - "value": "ParentApp_dev", + "value": "app_dev", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "test_mode_code", + "value": "ParentApp_Test", "_translations": { "value": {} }, @@ -71,6 +80,31 @@ "za_zu": true } } + }, + { + "type": "declare_global_constant", + "name": "language", + "value": "Language", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "user_info", + "value": "Your Profile", + "_translations": { + "value": { + "tz_sw": true + } + } } ], "_xlsxPath": "global/data/app_menu_globals.xlsx" diff --git a/packages/app-data/sheets/global/button_texts.json b/packages/app-data/sheets/global/button_texts.json index b348c8e83e..b792c83d49 100644 --- a/packages/app-data/sheets/global/button_texts.json +++ b/packages/app-data/sheets/global/button_texts.json @@ -72,6 +72,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/global/consequences.json b/packages/app-data/sheets/global/consequences.json index f3b35bc724..bf0057f551 100644 --- a/packages/app-data/sheets/global/consequences.json +++ b/packages/app-data/sheets/global/consequences.json @@ -22,16 +22,9 @@ { "type": "declare_global_constant", "name": "negative_consequence_2", - "value": "Take 5 minutes pause in separate part of the room", + "value": "Take 5 minutes' pause in a separate part of the room", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} } }, { @@ -127,16 +120,9 @@ { "type": "declare_global_constant", "name": "positive_consequence_4", - "value": "Watching teen’s T.V. show together", + "value": "Watching teen’s TV show together", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} } }, { diff --git a/packages/app-data/sheets/global/debug/debug_full_stop_golbals.json b/packages/app-data/sheets/global/debug/debug_full_stop_golbals.json deleted file mode 100644 index afbe838ebb..0000000000 --- a/packages/app-data/sheets/global/debug/debug_full_stop_golbals.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "debug_full_stop_golbals", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "declare_global_constant", - "name": "global_full_stop", - "value": "Global with a full stop", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "field_full_stop", - "value": "Field with a full stop", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_full_stop_after_var.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug/debug_set_global_1.json b/packages/app-data/sheets/global/debug/debug_set_global_1.json deleted file mode 100644 index 65100a6fb7..0000000000 --- a/packages/app-data/sheets/global/debug/debug_set_global_1.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "debug_set_global_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "declare_global_constant", - "name": "debug_variable_1", - "value": "Value of the first debug variable", - "_translations": { - "value": { - "es_sp": true - } - }, - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug/debug_some_globals.json b/packages/app-data/sheets/global/debug/debug_some_globals.json deleted file mode 100644 index 929ac3572a..0000000000 --- a/packages/app-data/sheets/global/debug/debug_some_globals.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "debug_some_globals", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "declare_global_constant", - "name": "debug_item_1", - "value": "Item 1 text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "debug_item_2", - "value": "Item 2 text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "debug_item_3", - "value": "Item 3 text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "debug_boolean", - "value": false - }, - { - "type": "declare_field_default", - "name": "debug_number", - "value": 5 - }, - { - "type": "declare_field_default", - "name": "debug_string", - "value": "some_text", - "_translations": { - "value": {} - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug/example_initialise_global.json b/packages/app-data/sheets/global/debug/example_initialise_global.json deleted file mode 100644 index 8c7b44b23c..0000000000 --- a/packages/app-data/sheets/global/debug/example_initialise_global.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "example_initialise_global", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "declare_global_constant", - "name": "example_global_constant_text", - "value": "Example Global Constant Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "example_global_constant_title", - "value": "Example Global Constant Title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "example_global_constant_image", - "value": "plh_images/habits/habit_relax_image.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "field_1", - "value": "Value of Field 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "field_0", - "value": "Value of field 0", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "field_4", - "value": true, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "field_5", - "value": 5, - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_global_field.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug/example_lang_global.json b/packages/app-data/sheets/global/debug/example_lang_global.json deleted file mode 100644 index f815c20841..0000000000 --- a/packages/app-data/sheets/global/debug/example_lang_global.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "example_lang_global", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "declare_global_constant", - "name": "language_global_1", - "value": "This is a global variable set in a global", - "_translations": { - "value": { - "es_sp": true - } - } - }, - { - "type": "declare_global_constant", - "name": "language_global_2", - "value": "@global.language_global_1", - "_translations": { - "value": {} - } - }, - { - "type": "declare_field_default", - "name": "language_field_1", - "value": "This is a field set by default", - "_translations": { - "value": { - "es_sp": true - } - } - }, - { - "type": "declare_field_default", - "name": "language_field_2", - "value": "@data.example_lang.example_lang_3.text", - "_translations": { - "value": {} - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug_override/example_glob_override_default.json b/packages/app-data/sheets/global/debug_override/example_glob_override_default.json deleted file mode 100644 index 2aa9ed93c0..0000000000 --- a/packages/app-data/sheets/global/debug_override/example_glob_override_default.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "example_glob_override_default", - "status": "released", - "flow_subtype": "debug_override", - "rows": [ - { - "type": "declare_global_constant", - "name": "example_glob_override", - "value": "Initial value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_overrides.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/debug_override/example_glob_override_es_sp.json b/packages/app-data/sheets/global/debug_override/example_glob_override_es_sp.json deleted file mode 100644 index 135c8831a5..0000000000 --- a/packages/app-data/sheets/global/debug_override/example_glob_override_es_sp.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "example_glob_override_es_sp", - "status": "released", - "flow_subtype": "debug_override", - "override_target": "example_glob_override_default", - "override_condition": "@fields._app_language.startsWith(\"es\")", - "rows": [ - { - "type": "declare_global_constant", - "name": "example_glob_override", - "value": "Overridden value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_overrides.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/home_screen_variables.json b/packages/app-data/sheets/global/home_screen_variables.json index 8b6ebc2d5b..557344f514 100644 --- a/packages/app-data/sheets/global/home_screen_variables.json +++ b/packages/app-data/sheets/global/home_screen_variables.json @@ -18,6 +18,21 @@ } } }, + { + "type": "declare_global_constant", + "name": "home_screen", + "value": "Home", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, { "type": "declare_global_constant", "name": "weekly_workshops", @@ -50,8 +65,8 @@ }, { "type": "declare_global_constant", - "name": "weekly_workshop_options", - "value": "Weekly Workshop Options", + "name": "options", + "value": "Options", "_translations": { "value": { "tz_sw": true, @@ -63,6 +78,55 @@ } } }, + { + "type": "declare_global_constant", + "name": "weekly_workshop_options", + "value": "@global.weekly_workshop @global.options", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "workshops", + "value": "workshops", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshop", + "value": "workshop", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshops_capital", + "value": "Workshops", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshop_capital", + "value": "Workshop", + "_translations": { + "value": { + "tz_sw": true + } + } + }, { "type": "declare_global_constant", "name": "parent_points", @@ -108,24 +172,6 @@ } } }, - { - "type": "declare_field_default", - "name": "workshops_setup", - "value": false, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "no_mail", - "value": false, - "exclude_from_translation": true - }, - { - "type": "declare_field_default", - "name": "daily_relax_done", - "value": true, - "exclude_from_translation": true - }, { "type": "declare_global_constant", "name": "in_week_messages", @@ -140,6 +186,16 @@ "za_zu": true } } + }, + { + "type": "declare_global_constant", + "name": "things_to_do", + "value": "Things to do", + "_translations": { + "value": { + "tz_sw": true + } + } } ], "_xlsxPath": "global/data/navigation_globals.xlsx" diff --git a/packages/app-data/sheets/global/home_screen_variables_mod.json b/packages/app-data/sheets/global/home_screen_variables_mod.json new file mode 100644 index 0000000000..ad0d52bd6c --- /dev/null +++ b/packages/app-data/sheets/global/home_screen_variables_mod.json @@ -0,0 +1,184 @@ +{ + "flow_type": "global", + "flow_name": "home_screen_variables_mod", + "status": "released", + "override_target": "home_screen_variables", + "override_condition": "@fields._app_skin == \"modular\"", + "rows": [ + { + "type": "declare_global_constant", + "name": "parent_app", + "value": "ParentApp", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "home_screen", + "value": "Home", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "weekly_workshops", + "value": "Modules", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "weekly_workshop", + "value": "Module", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "options", + "value": "Options", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "weekly_workshop_options", + "value": "@global.weekly_workshop @global.options", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "workshops", + "value": "modules", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshop", + "value": "module", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshops_capital", + "value": "Modules", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "workshop_capital", + "value": "Module", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "parent_points", + "value": "ParentPoints", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "parent_point", + "value": "ParentPoint", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "parent_centre", + "value": "Parent Library", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + }, + { + "type": "declare_global_constant", + "name": "in_week_messages", + "value": "In-Week Messages", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + } + } + ], + "_xlsxPath": "global_modular/data/navigation_globals_modular.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/global/in_week_message_options.json b/packages/app-data/sheets/global/in_week_message_options.json index e9e553cc18..4a2c056f59 100644 --- a/packages/app-data/sheets/global/in_week_message_options.json +++ b/packages/app-data/sheets/global/in_week_message_options.json @@ -6,7 +6,11 @@ { "type": "declare_field_default", "name": "iwm_as_notifications", - "value": true + "value": "@fields._app_skin != \"modular\"", + "_translations": { + "value": {} + }, + "exclude_from_translation": true } ], "_xlsxPath": "global/data/in_week_message_globals.xlsx" diff --git a/packages/app-data/sheets/global/in_week_message_titles.json b/packages/app-data/sheets/global/in_week_message_titles.json index e13bf9a1ac..d634d3132a 100644 --- a/packages/app-data/sheets/global/in_week_message_titles.json +++ b/packages/app-data/sheets/global/in_week_message_titles.json @@ -6,15 +6,10 @@ { "type": "declare_global_constant", "name": "m_w_tomorrow", - "value": "New workshop ready tomorrow!", + "value": "New @global.workshop ready tomorrow!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, @@ -36,15 +31,10 @@ { "type": "declare_global_constant", "name": "m_w_reminder", - "value": "Workshop Reminder", + "value": "@global.workshop_capital Reminder", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, @@ -104,15 +94,10 @@ { "type": "declare_global_constant", "name": "m_something_fun", - "value": "Something Fun", + "value": "Something fun", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, @@ -164,15 +149,10 @@ { "type": "declare_global_constant", "name": "m_hp_reminder", - "value": "Home Practice Reminder", + "value": "Remember to practise", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, diff --git a/packages/app-data/sheets/global/localisation_options.json b/packages/app-data/sheets/global/localisation_options.json index f5deeea10c..5bf9bf5451 100644 --- a/packages/app-data/sheets/global/localisation_options.json +++ b/packages/app-data/sheets/global/localisation_options.json @@ -8,14 +8,7 @@ "name": "teen_social_medium", "value": "TikTok", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, @@ -25,9 +18,7 @@ "value": "WhatsApp", "_translations": { "value": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "exclude_from_translation": true diff --git a/packages/app-data/sheets/global/localisation_options_tz.json b/packages/app-data/sheets/global/localisation_options_tz.json index 6c404a600a..7b6347514e 100644 --- a/packages/app-data/sheets/global/localisation_options_tz.json +++ b/packages/app-data/sheets/global/localisation_options_tz.json @@ -20,9 +20,7 @@ "value": "WhatsApp", "_translations": { "value": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "exclude_from_translation": true diff --git a/packages/app-data/sheets/global/localisation_options_za.json b/packages/app-data/sheets/global/localisation_options_za.json index fa2d150cc3..3676a72fe4 100644 --- a/packages/app-data/sheets/global/localisation_options_za.json +++ b/packages/app-data/sheets/global/localisation_options_za.json @@ -10,14 +10,7 @@ "name": "teen_social_medium", "value": "TikTok", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, @@ -27,9 +20,7 @@ "value": "WhatsApp", "_translations": { "value": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "exclude_from_translation": true diff --git a/packages/app-data/sheets/global/localised_names.json b/packages/app-data/sheets/global/localised_names.json index 0a0a008649..ffbf983abd 100644 --- a/packages/app-data/sheets/global/localised_names.json +++ b/packages/app-data/sheets/global/localised_names.json @@ -6,7 +6,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_1", - "value": "Grace", + "value": "Sara", "_translations": { "value": {} }, @@ -15,7 +15,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_2", - "value": "Anna", + "value": "Sandy", "_translations": { "value": {} }, @@ -24,7 +24,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_3", - "value": "Sara", + "value": "Olivia", "_translations": { "value": {} }, @@ -33,7 +33,97 @@ { "type": "declare_global_constant", "name": "female_adult_name_4", - "value": "Sandy", + "value": "Amelia", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_5", + "value": "Isla", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_6", + "value": "Lily", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_7", + "value": "Ava", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_8", + "value": "Freya", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_9", + "value": "Ivy", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_10", + "value": "Milly", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_11", + "value": "Mia", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_12", + "value": "Sophia", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_13", + "value": "Poppy", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_14", + "value": "Emily", "_translations": { "value": {} }, @@ -96,7 +186,7 @@ { "type": "declare_global_constant", "name": "female_caregiver_1", - "value": "Grandma", + "value": "Mother", "_translations": { "value": {} }, @@ -105,23 +195,16 @@ { "type": "declare_global_constant", "name": "female_caregiver_2", - "value": "Mother", + "value": "Grandma", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, { "type": "declare_global_constant", - "name": "female_caregiver_3", - "value": "Mom", + "name": "male_adult_name_1", + "value": "Noah", "_translations": { "value": {} }, @@ -129,8 +212,8 @@ }, { "type": "declare_global_constant", - "name": "female_caregiver_4", - "value": "Mama", + "name": "male_adult_name_2", + "value": "Theo", "_translations": { "value": {} }, @@ -138,8 +221,89 @@ }, { "type": "declare_global_constant", - "name": "male_adult_name_1", - "value": "Giles", + "name": "male_adult_name_3", + "value": "Oliver", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_4", + "value": "George", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_5", + "value": "Leo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_6", + "value": "Freddie", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_7", + "value": "Arthur", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_8", + "value": "Archie", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_9", + "value": "Alfie", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_10", + "value": "Charlie", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_11", + "value": "Oscar", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_12", + "value": "Henry", "_translations": { "value": {} }, @@ -194,22 +358,6 @@ "type": "declare_global_constant", "name": "male_caregiver_1", "value": "Father", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "male_caregiver_2", - "value": "Dad", "_translations": { "value": {} }, @@ -217,7 +365,7 @@ }, { "type": "declare_global_constant", - "name": "male_caregiver_3", + "name": "male_caregiver_2", "value": "Grandpa", "_translations": { "value": {} diff --git a/packages/app-data/sheets/global/localised_names_tz.json b/packages/app-data/sheets/global/localised_names_tz.json index 5d2e6d083b..faa211fd3f 100644 --- a/packages/app-data/sheets/global/localised_names_tz.json +++ b/packages/app-data/sheets/global/localised_names_tz.json @@ -8,7 +8,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_1", - "value": "Amina", + "value": "Rebeka", "_translations": { "value": {} }, @@ -17,7 +17,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_2", - "value": "Naomi", + "value": "Esta", "_translations": { "value": {} }, @@ -26,7 +26,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_3", - "value": "Rebeka", + "value": "Mtumwa", "_translations": { "value": {} }, @@ -35,7 +35,97 @@ { "type": "declare_global_constant", "name": "female_adult_name_4", - "value": "Esta", + "value": "Amina", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_5", + "value": "Asha", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_6", + "value": "Zulpha", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_7", + "value": "Naomi", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_8", + "value": "Salma", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_9", + "value": "Aisha", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_10", + "value": "Mira", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_11", + "value": "Miriam", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_12", + "value": "Salama", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_13", + "value": "Wanjiru", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_14", + "value": "Sabrina", "_translations": { "value": {} }, @@ -98,7 +188,7 @@ { "type": "declare_global_constant", "name": "female_caregiver_1", - "value": "Bibi", + "value": "Mama", "_translations": { "value": {} }, @@ -107,7 +197,7 @@ { "type": "declare_global_constant", "name": "female_caregiver_2", - "value": "Mama", + "value": "Bibi", "_translations": { "value": {} }, @@ -115,8 +205,8 @@ }, { "type": "declare_global_constant", - "name": "female_caregiver_3", - "value": "Mama", + "name": "male_adult_name_1", + "value": "Baraka", "_translations": { "value": {} }, @@ -124,8 +214,8 @@ }, { "type": "declare_global_constant", - "name": "female_caregiver_4", - "value": "Mama", + "name": "male_adult_name_2", + "value": "Petseo", "_translations": { "value": {} }, @@ -133,8 +223,89 @@ }, { "type": "declare_global_constant", - "name": "male_adult_name_1", - "value": "Baraka", + "name": "male_adult_name_3", + "value": "Sanka", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_4", + "value": "Jumanne", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_5", + "value": "Senge", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_6", + "value": "Sendeu", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_7", + "value": "Lonyori", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_8", + "value": "Fadhili", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_9", + "value": "Saguda", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_10", + "value": "Salmin", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_11", + "value": "Salim", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_12", + "value": "Gibu", "_translations": { "value": {} }, @@ -197,15 +368,6 @@ { "type": "declare_global_constant", "name": "male_caregiver_2", - "value": "Baba", - "_translations": { - "value": {} - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "male_caregiver_3", "value": "Babu", "_translations": { "value": {} diff --git a/packages/app-data/sheets/global/localised_names_za.json b/packages/app-data/sheets/global/localised_names_za.json index 581e5507ab..3de3dfd526 100644 --- a/packages/app-data/sheets/global/localised_names_za.json +++ b/packages/app-data/sheets/global/localised_names_za.json @@ -8,7 +8,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_1", - "value": "Thandie", + "value": "Nontlantla", "_translations": { "value": {} }, @@ -17,7 +17,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_2", - "value": "Lindiwe", + "value": "Zanele", "_translations": { "value": {} }, @@ -26,7 +26,7 @@ { "type": "declare_global_constant", "name": "female_adult_name_3", - "value": "Nontlantla", + "value": "Thandie", "_translations": { "value": {} }, @@ -35,7 +35,97 @@ { "type": "declare_global_constant", "name": "female_adult_name_4", - "value": "Zanele", + "value": "Lindiwe", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_5", + "value": "Sbo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_6", + "value": "Sussie", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_7", + "value": "Anele", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_8", + "value": "Blessing", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_9", + "value": "Elna", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_10", + "value": "Lerato", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_11", + "value": "Gamuchirai", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_12", + "value": "Keitumetse", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_13", + "value": "Marli", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "female_adult_name_14", + "value": "Masego", "_translations": { "value": {} }, @@ -98,7 +188,7 @@ { "type": "declare_global_constant", "name": "female_caregiver_1", - "value": "Gogo", + "value": "Mother", "_translations": { "value": {} }, @@ -107,55 +197,115 @@ { "type": "declare_global_constant", "name": "female_caregiver_2", - "value": "Mother", + "value": "Gogo", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, { "type": "declare_global_constant", - "name": "female_caregiver_3", - "value": "Mother", + "name": "male_adult_name_1", + "value": "Thabo", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, { "type": "declare_global_constant", - "name": "female_caregiver_4", - "value": "Mother", + "name": "male_adult_name_2", + "value": "Bandile", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, { "type": "declare_global_constant", - "name": "male_adult_name_1", - "value": "Thabo", + "name": "male_adult_name_3", + "value": "Kungawo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_4", + "value": "Siyabonga", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_5", + "value": "Lethabo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_6", + "value": "Khayone", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_7", + "value": "Mpho", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_8", + "value": "Bokamoso", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_9", + "value": "Kamogelo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_10", + "value": "Thato", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_11", + "value": "Sbusiso", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "male_adult_name_12", + "value": "Katlego", "_translations": { "value": {} }, @@ -211,36 +361,13 @@ "name": "male_caregiver_1", "value": "Father", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "exclude_from_translation": true }, { "type": "declare_global_constant", "name": "male_caregiver_2", - "value": "Father", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "male_caregiver_3", "value": "Mkhulu", "_translations": { "value": {} diff --git a/packages/app-data/sheets/global/names_of_characters.json b/packages/app-data/sheets/global/names_of_characters.json index 008767028a..4b1ac304ec 100644 --- a/packages/app-data/sheets/global/names_of_characters.json +++ b/packages/app-data/sheets/global/names_of_characters.json @@ -5,8 +5,8 @@ "rows": [ { "type": "declare_global_constant", - "name": "topic_intro_name", - "value": "Sbo", + "name": "topic_intro_name_1", + "value": "@global.female_adult_name_3", "_translations": { "value": {} }, @@ -14,8 +14,71 @@ }, { "type": "declare_global_constant", - "name": "guide_1_name", - "value": "@global.male_adult_name_1", + "name": "topic_intro_name_2", + "value": "@global.female_adult_name_4", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_3", + "value": "@global.female_adult_name_5", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_4", + "value": "@global.female_adult_name_6", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_5", + "value": "@global.female_adult_name_7", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_6", + "value": "@global.female_adult_name_8", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_7", + "value": "@global.female_adult_name_9", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_8", + "value": "@global.female_adult_name_10", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_9", + "value": "@global.female_adult_name_11", "_translations": { "value": {} }, @@ -23,8 +86,8 @@ }, { "type": "declare_global_constant", - "name": "guide_2_name", - "value": "@global.female_adult_name_1", + "name": "topic_intro_name_10", + "value": "@global.female_adult_name_12", "_translations": { "value": {} }, @@ -32,8 +95,17 @@ }, { "type": "declare_global_constant", - "name": "guide_teen_name", - "value": "@global.male_child_name_1", + "name": "topic_intro_name_11", + "value": "@global.female_adult_name_13", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "topic_intro_name_12", + "value": "@global.female_adult_name_14", "_translations": { "value": {} }, @@ -42,7 +114,7 @@ { "type": "declare_global_constant", "name": "w_praise_female_caregiver_name", - "value": "@global.female_adult_name_2", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -69,7 +141,7 @@ { "type": "declare_global_constant", "name": "w_instruct_teen_girl", - "value": "@global.female_child_name_2", + "value": "@global.female_child_name_3", "_translations": { "value": {} }, @@ -78,7 +150,7 @@ { "type": "declare_global_constant", "name": "w_instruct_female_caregiver", - "value": "@global.female_caregiver_1", + "value": "@global.female_caregiver_2", "_translations": { "value": {} }, @@ -96,7 +168,7 @@ { "type": "declare_global_constant", "name": "w_stress_girl", - "value": "@global.female_child_name_3", + "value": "@global.female_child_name_2", "_translations": { "value": {} }, @@ -114,7 +186,7 @@ { "type": "declare_global_constant", "name": "w_stress_female_caregiver", - "value": "@global.female_caregiver_2", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -123,7 +195,7 @@ { "type": "declare_global_constant", "name": "w_stress_teen_girl", - "value": "@global.female_child_name_4", + "value": "@global.female_child_name_1", "_translations": { "value": {} }, @@ -132,7 +204,7 @@ { "type": "declare_global_constant", "name": "w_stress_teen_boy_2", - "value": "@global.male_child_name_3", + "value": "@global.male_child_name_2", "_translations": { "value": {} }, @@ -141,7 +213,7 @@ { "type": "declare_global_constant", "name": "w_stress_parent", - "value": "@global.male_caregiver_2", + "value": "@global.male_caregiver_1", "_translations": { "value": {} }, @@ -159,7 +231,7 @@ { "type": "declare_global_constant", "name": "w_rules_female_caregiver_1", - "value": "@global.female_caregiver_2", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -168,7 +240,7 @@ { "type": "declare_global_constant", "name": "w_rules_teen_girl", - "value": "@global.female_child_name_6", + "value": "@global.female_child_name_2", "_translations": { "value": {} }, @@ -177,7 +249,7 @@ { "type": "declare_global_constant", "name": "w_rules_female_caregiver_2", - "value": "@global.female_caregiver_3", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -231,7 +303,7 @@ { "type": "declare_global_constant", "name": "w_consequence_female_caregiver", - "value": "@global.female_caregiver_2", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -240,7 +312,7 @@ { "type": "declare_global_constant", "name": "w_money_grandma", - "value": "@global.female_caregiver_1 @global.female_adult_name_3", + "value": "@global.female_caregiver_2 @global.female_adult_name_1", "_translations": { "value": {} }, @@ -267,7 +339,7 @@ { "type": "declare_global_constant", "name": "w_solve_female_caregiver_1", - "value": "@global.female_caregiver_2", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -276,7 +348,7 @@ { "type": "declare_global_constant", "name": "w_solve_female_caregiver_1_name", - "value": "@global.female_adult_name_4", + "value": "@global.female_adult_name_2", "_translations": { "value": {} }, @@ -285,7 +357,7 @@ { "type": "declare_global_constant", "name": "w_solve_teen_girl", - "value": "@global.female_child_name_1", + "value": "@global.female_child_name_2", "_translations": { "value": {} }, @@ -303,7 +375,7 @@ { "type": "declare_global_constant", "name": "w_solve_female_caregiver_2", - "value": "@global.female_caregiver_1", + "value": "@global.female_caregiver_2", "_translations": { "value": {} }, @@ -330,7 +402,7 @@ { "type": "declare_global_constant", "name": "w_safe_teen_girl_2", - "value": "@global.female_child_name_4", + "value": "@global.female_child_name_3", "_translations": { "value": {} }, @@ -348,7 +420,7 @@ { "type": "declare_global_constant", "name": "w_safe_female_caregiver", - "value": "@global.female_caregiver_3", + "value": "@global.female_caregiver_1", "_translations": { "value": {} }, @@ -363,10 +435,19 @@ }, "exclude_from_translation": true }, + { + "type": "declare_global_constant", + "name": "w_crisis_teen_girl_2", + "value": "@global.female_child_name_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, { "type": "declare_global_constant", "name": "w_crisis_adult_friend", - "value": "@global.female_caregiver_1", + "value": "@global.female_caregiver_2", "_translations": { "value": {} }, @@ -375,7 +456,7 @@ { "type": "declare_global_constant", "name": "w_crisis_female_caregiver", - "value": "@global.female_caregiver_1", + "value": "@global.female_caregiver_2", "_translations": { "value": {} }, @@ -402,7 +483,7 @@ { "type": "declare_global_constant", "name": "w_crisis_male_caregiver_1", - "value": "@global.male_caregiver_2", + "value": "@global.male_caregiver_1", "_translations": { "value": {} }, @@ -411,7 +492,7 @@ { "type": "declare_global_constant", "name": "w_crisis_male_caregiver_2", - "value": "@global.male_caregiver_3", + "value": "@global.male_caregiver_1", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/global/spend_time_ideas.json b/packages/app-data/sheets/global/spend_time_ideas.json index 3820369700..c75c5c59a4 100644 --- a/packages/app-data/sheets/global/spend_time_ideas.json +++ b/packages/app-data/sheets/global/spend_time_ideas.json @@ -97,16 +97,9 @@ { "type": "declare_global_constant", "name": "spend_time_idea_7", - "value": "Watch a T.V. show", + "value": "Watch a TV show", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} } }, { diff --git a/packages/app-data/sheets/global/thresholds.json b/packages/app-data/sheets/global/thresholds.json deleted file mode 100644 index 51840beaba..0000000000 --- a/packages/app-data/sheets/global/thresholds.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "thresholds", - "status": "released", - "rows": [ - { - "type": "declare_global_constant", - "name": "survey_welcome_t_1", - "value": 4, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_2", - "value": 5, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_3", - "value": 2, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_4", - "value": 2, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_5", - "value": 1, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_6", - "value": 1, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_7", - "value": 7, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_8", - "value": 5, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_welcome_t_9", - "value": 7, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_1", - "value": 4, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_2", - "value": 5, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_3", - "value": 2, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_4", - "value": 2, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_5", - "value": 1, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_6", - "value": 1, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_7", - "value": 7, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_8", - "value": 5, - "exclude_from_translation": true - }, - { - "type": "declare_global_constant", - "name": "survey_t_9", - "value": 7, - "exclude_from_translation": true - } - ], - "_xlsxPath": "global/data/survey_globals.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/global/workshop_completion_levels.json b/packages/app-data/sheets/global/workshop_completion_levels.json index 9d614a5627..b495c3ca7e 100644 --- a/packages/app-data/sheets/global/workshop_completion_levels.json +++ b/packages/app-data/sheets/global/workshop_completion_levels.json @@ -434,7 +434,73 @@ "name": "w_celebrate_tools_disabled", "value": true, "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_1on1_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_praise_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_instruct_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_stress_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_money_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_rules_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_consequence_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_solve_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_safe_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_crisis_hp_review_started", + "value": false, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "w_celebrate_hp_review_started", + "value": false, + "exclude_from_translation": true } ], - "_xlsxPath": "global/data/workshop_globals.xlsx" + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/global/workshop_modes.json b/packages/app-data/sheets/global/workshop_modes.json index bf5ee8f423..8d2484ab78 100644 --- a/packages/app-data/sheets/global/workshop_modes.json +++ b/packages/app-data/sheets/global/workshop_modes.json @@ -6,45 +6,30 @@ { "type": "declare_global_constant", "name": "home_practice", - "value": "Home Practice", + "value": "Ready to practise?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, { "type": "declare_global_constant", "name": "home_practice_problem_solving", - "value": "Talk about @global.home_practice", + "value": "Talk about home practice", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, { "type": "declare_global_constant", "name": "hp_review", - "value": "Home Practice Review", + "value": "How did your practice go?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, @@ -62,7 +47,26 @@ "za_zu": true } } + }, + { + "type": "declare_global_constant", + "name": "story", + "value": "Story", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "part_connector", + "value": "-", + "_translations": { + "value": {} + }, + "exclude_from_translation": true } ], - "_xlsxPath": "global/data/workshop_globals.xlsx" + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/global/workshop_options.json b/packages/app-data/sheets/global/workshop_options.json index d133e56e0f..f9bf2f457c 100644 --- a/packages/app-data/sheets/global/workshop_options.json +++ b/packages/app-data/sheets/global/workshop_options.json @@ -5,14 +5,23 @@ "rows": [ { "type": "declare_field_default", - "name": "do_workshops_together", + "name": "workshop_path", + "value": "individual", + "_translations": { + "value": {} + }, + "exclude_from_translation": true + }, + { + "type": "declare_field_default", + "name": "workshop_path_user_choice", "value": false, "exclude_from_translation": true }, { "type": "declare_field_default", - "name": "workshop_path", - "value": "individual", + "name": "do_workshops_together", + "value": "@fields.workshop_path==\"together\"", "_translations": { "value": {} }, @@ -60,7 +69,7 @@ { "type": "declare_global_constant", "name": "individual_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -78,16 +87,10 @@ { "type": "declare_global_constant", "name": "user_name_default", - "value": "awesome parent", + "value": "Awesome parent", "_translations": { "value": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } } }, @@ -141,7 +144,27 @@ "value": {} }, "exclude_from_translation": true + }, + { + "type": "declare_global_constant", + "name": "safety_word", + "value": "Safety Word", + "_translations": { + "value": { + "tz_sw": true + } + } + }, + { + "type": "declare_global_constant", + "name": "safety_word_example_1", + "value": "Aunty Cecilia", + "_translations": { + "value": { + "tz_sw": true + } + } } ], - "_xlsxPath": "global/data/workshop_globals.xlsx" + "_xlsxPath": "global/data/workshop_data/workshop_globals.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/global/workshop_titles.json b/packages/app-data/sheets/global/workshop_titles.json deleted file mode 100644 index 872b0fa404..0000000000 --- a/packages/app-data/sheets/global/workshop_titles.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "flow_type": "global", - "flow_name": "workshop_titles", - "status": "released", - "rows": [ - { - "type": "declare_global_constant", - "name": "w_self_care", - "value": "Welcome and Self-Care", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_self_care_only", - "value": "Self-Care", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_self_care_tools", - "value": "How to add self-care", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_1on1", - "value": "One-on-One Time", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_1on1_tools", - "value": "How to spend one-on-one time", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_praise", - "value": "Praise", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_praise_tools", - "value": "How to praise", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_instruct", - "value": "Positive Instructions", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_instruct_tools", - "value": "How to give positive instructions", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_stress", - "value": "Managing Stress", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_stress_tools", - "value": "How to manage stress", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_money", - "value": "Family Budgets", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_money_tools", - "value": "How to budget & save", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_rules", - "value": "Rules", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_rules_tools", - "value": "How to create rules", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_consequence", - "value": "Calm Consequences", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_consequence_tools", - "value": "How to give calm consequences", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_solve", - "value": "Problem Solving", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_solve_tools", - "value": "How to solve problems", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_safe", - "value": "Teen Safety", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_safe_tools", - "value": "How to keep your teen safe", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_crisis", - "value": "Dealing with Crisis", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_crisis_tools", - "value": "How to deal with crisis", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_celebrate", - "value": "Celebration and Next Steps", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - }, - { - "type": "declare_global_constant", - "name": "w_celebrate_tools", - "value": "How to support each other", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - } - } - ], - "_xlsxPath": "global/data/workshop_globals.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/index.ts b/packages/app-data/sheets/index.ts deleted file mode 100644 index 5ff7032f2f..0000000000 --- a/packages/app-data/sheets/index.ts +++ /dev/null @@ -1,5977 +0,0 @@ -import { FlowTypes } from "data-models"; -type ISheetContents = { - [flow_type in FlowTypes.FlowType]: { [flow_name: string]: FlowTypes.FlowTypeBase }; -}; -export const SHEETS_CONTENT_LIST: ISheetContents = { - data_list: { - activity_data_list: { - flow_type: "data_list", - flow_name: "activity_data_list", - data_list_name: "something_fun", - _xlsxPath: "global/data/activity_data_list.xlsx", - }, - language_data_list: { - flow_type: "data_list", - flow_name: "language_data_list", - data_list_name: "language", - flow_subtype: "app_config_language_list", - _xlsxPath: "global/app_config/language_data_list.xlsx", - }, - language_data_list_tz: { - flow_type: "data_list", - flow_name: "language_data_list_tz", - data_list_name: "language_tz", - flow_subtype: "app_config_language_list", - _xlsxPath: "tz/app_config/language_data_list_tz.xlsx", - }, - language_data_list_za: { - flow_type: "data_list", - flow_name: "language_data_list_za", - data_list_name: "language_za", - flow_subtype: "app_config_language_list", - _xlsxPath: "za/app_config/language_data_list_za.xlsx", - }, - bereavement_data_list: { - flow_type: "data_list", - flow_name: "bereavement_data_list", - data_list_name: "bereavement", - _xlsxPath: "global/data/parent_centre_data_list.xlsx", - }, - campaign_hs_w_1on1: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_1on1", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_consequence: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_consequence", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_crisis: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_crisis", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_instruct: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_instruct", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_money: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_money", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_praise: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_praise", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_rules: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_rules", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_safe: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_safe", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_self_care: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_self_care", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_solve: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_solve", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_hs_w_stress: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_hs_w_stress", - _xlsxPath: "global/campaigns/quick_start_home_screen.xlsx", - }, - campaign_relax: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_relax", - _xlsxPath: "global/campaigns/quick_start_parent_centre.xlsx", - }, - campaign_something_fun: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_something_fun", - _xlsxPath: "global/campaigns/quick_start_parent_centre.xlsx", - }, - campaign_workshop_quick_start: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "campaign_workshop_quick_start", - _xlsxPath: "global/campaigns/quick_start_weekly_workshops.xlsx", - }, - nf_generic: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_generic", - _xlsxPath: "global/campaigns/notifications_inactive.xlsx", - }, - nf_inactive_day: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_inactive_day", - _xlsxPath: "global/campaigns/notifications_inactive.xlsx", - }, - nf_inactive_month: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_inactive_month", - _xlsxPath: "global/campaigns/notifications_inactive.xlsx", - }, - nf_inactive_week: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_inactive_week", - _xlsxPath: "global/campaigns/notifications_inactive.xlsx", - }, - nf_w_1on1: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_1on1", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_consequence: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_consequence", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_crisis: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_crisis", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_instruct: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_instruct", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_money: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_money", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_praise: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_praise", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_rules: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_rules", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_safe: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_safe", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_self_care: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_self_care", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_solve: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_solve", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_w_stress: { - flow_type: "data_list", - flow_subtype: "campaign_rows", - flow_name: "nf_w_stress", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - debug_campaign_rows: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows", - comments: "This contains content for schedules", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_rows_actions: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows_actions", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_rows_actions_2: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows_actions_2", - comments: "Can be merged into main actions once PR merged to support dismissed/sent actions", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_rows_calc: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows_calc", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_rows_cond: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows_cond", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_rows_html: { - flow_type: "data_list", - flow_subtype: "campaign_rows_debug", - flow_name: "debug_campaign_rows_html", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_campaign_schedules: { - flow_type: "data_list", - flow_subtype: "campaign_schedule", - flow_name: "debug_campaign_schedules", - comments: "This contains schedules for notifications", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - nf_schedule_in_week_messages: { - flow_type: "data_list", - flow_subtype: "campaign_schedule", - flow_name: "nf_schedule_in_week_messages", - _xlsxPath: "global/campaigns/notifications_in_week_messages.xlsx", - }, - nf_schedule_inactive: { - flow_type: "data_list", - flow_subtype: "campaign_schedule", - flow_name: "nf_schedule_inactive", - _xlsxPath: "global/campaigns/notifications_inactive.xlsx", - }, - covid_data_list: { - flow_type: "data_list", - flow_name: "covid_data_list", - data_list_name: "covid", - _xlsxPath: "global/data/parent_centre_data_list.xlsx", - }, - debug_data_list: { - flow_type: "data_list", - flow_name: "debug_data_list", - data_list_name: "debug", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_data_lists.xlsx", - }, - debug_variable_data: { - flow_type: "data_list", - flow_name: "debug_variable_data", - data_list_name: "debug_vars", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - example_calc_data_list: { - flow_type: "data_list", - flow_subtype: "debug", - flow_name: "example_calc_data_list", - data_list_name: "example_calc", - _xlsxPath: "quality_assurance/example_templates/example_calc.xlsx", - }, - example_data_list: { - flow_type: "data_list", - flow_subtype: "debug", - flow_name: "example_data_list", - data_list_name: "example", - _xlsxPath: "quality_assurance/example_templates/example_data_lists.xlsx", - }, - example_items_data_list: { - flow_type: "data_list", - flow_subtype: "debug", - flow_name: "example_items_data_list", - data_list_name: "example_items", - _xlsxPath: "quality_assurance/example_templates/example_items.xlsx", - }, - example_lang_data_list: { - flow_type: "data_list", - flow_name: "example_lang_data_list", - data_list_name: "example_lang", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - feature_items_data: { - flow_type: "data_list", - flow_name: "feature_items_data", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_items.xlsx", - }, - habit_data_list: { - flow_type: "data_list", - flow_name: "habit_data_list", - data_list_name: "habit", - _xlsxPath: "global/data/habit_data_list.xlsx", - }, - hp_praise_messages: { - flow_type: "data_list", - flow_name: "hp_praise_messages", - data_list_name: "praise", - _xlsxPath: "global/data/praise_data_list.xlsx", - }, - parent_centre_data_list: { - flow_type: "data_list", - flow_name: "parent_centre_data_list", - data_list_name: "parent_centre", - _xlsxPath: "global/data/parent_centre_data_list.xlsx", - }, - relax_list: { - flow_type: "data_list", - flow_name: "relax_list", - data_list_name: "relax", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - workshop_data_list: { - flow_type: "data_list", - flow_name: "workshop_data_list", - data_list_name: "workshop", - _xlsxPath: "global/data/workshop_data_list.xlsx", - }, - }, - global: { - activity_variables: { - flow_type: "global", - flow_name: "activity_variables", - _xlsxPath: "global/data/parent_centre_globals.xlsx", - }, - app_menu_globals: { - flow_type: "global", - flow_name: "app_menu_globals", - _xlsxPath: "global/data/app_menu_globals.xlsx", - }, - button_texts: { - flow_type: "global", - flow_name: "button_texts", - _xlsxPath: "global/data/navigation_globals.xlsx", - }, - click_count_defaults: { - flow_type: "global", - flow_name: "click_count_defaults", - _xlsxPath: "global/data/navigation_globals.xlsx", - }, - consequences: { - flow_type: "global", - module: "consequence", - flow_name: "consequences", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - crisis_skills: { - flow_type: "global", - module: "crisis", - flow_name: "crisis_skills", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - data_warnings: { - flow_type: "global", - flow_name: "data_warnings", - _xlsxPath: "global/data/app_menu_globals.xlsx", - }, - debug_full_stop_golbals: { - flow_type: "global", - flow_name: "debug_full_stop_golbals", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_full_stop_after_var.xlsx", - }, - debug_set_global_1: { - flow_type: "global", - flow_name: "debug_set_global_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_some_globals: { - flow_type: "global", - flow_name: "debug_some_globals", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - example_initialise_global: { - flow_type: "global", - flow_name: "example_initialise_global", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_global_field.xlsx", - }, - example_lang_global: { - flow_type: "global", - flow_name: "example_lang_global", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_glob_override_default: { - flow_type: "global", - flow_name: "example_glob_override_default", - flow_subtype: "debug_override", - _xlsxPath: "quality_assurance/example_templates/example_overrides.xlsx", - }, - example_glob_override_es_sp: { - flow_type: "global", - flow_name: "example_glob_override_es_sp", - flow_subtype: "debug_override", - override_target: "example_glob_override_default", - override_condition: '@fields._app_language.startsWith("es")', - _xlsxPath: "quality_assurance/example_templates/example_overrides.xlsx", - }, - financial_emergencies: { - flow_type: "global", - module: "money", - flow_name: "financial_emergencies", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - home_screen_variables: { - flow_type: "global", - flow_name: "home_screen_variables", - _xlsxPath: "global/data/navigation_globals.xlsx", - }, - hp_review_phrases: { - flow_type: "global", - flow_name: "hp_review_phrases", - _xlsxPath: "global/data/in_week_message_globals.xlsx", - }, - in_week_message_options: { - flow_type: "global", - flow_name: "in_week_message_options", - _xlsxPath: "global/data/in_week_message_globals.xlsx", - }, - in_week_message_titles: { - flow_type: "global", - flow_name: "in_week_message_titles", - _xlsxPath: "global/data/in_week_message_globals.xlsx", - }, - localisation_options: { - flow_type: "global", - flow_name: "localisation_options", - _xlsxPath: "global/data/localisation_globals.xlsx", - }, - localisation_options_tz: { - flow_type: "global", - flow_name: "localisation_options_tz", - override_target: "localisation_options", - override_condition: '@fields._deployment_name == "plh_tz"', - _xlsxPath: "tz/data/localisation_globals_tz.xlsx", - }, - localisation_options_za: { - flow_type: "global", - flow_name: "localisation_options_za", - override_target: "localisation_options", - override_condition: '@fields._deployment_name == "plh_za"', - _xlsxPath: "za/data/localisation_globals_za.xlsx", - }, - localised_names: { - flow_type: "global", - flow_name: "localised_names", - _xlsxPath: "global/data/localisation_globals.xlsx", - }, - localised_names_tz: { - flow_type: "global", - flow_name: "localised_names_tz", - override_target: "localised_names", - override_condition: '@fields._deployment_name == "plh_tz"', - _xlsxPath: "tz/data/localisation_globals_tz.xlsx", - }, - localised_names_za: { - flow_type: "global", - flow_name: "localised_names_za", - override_target: "localised_names", - override_condition: '@fields._deployment_name == "plh_za"', - _xlsxPath: "za/data/localisation_globals_za.xlsx", - }, - names_of_characters: { - flow_type: "global", - flow_name: "names_of_characters", - _xlsxPath: "global/data/localisation_globals.xlsx", - }, - parent_point_variables: { - flow_type: "global", - flow_name: "parent_point_variables", - _xlsxPath: "global/data/habit_globals.xlsx", - }, - pc_click_count_defaults: { - flow_type: "global", - flow_name: "pc_click_count_defaults", - _xlsxPath: "global/data/parent_centre_globals.xlsx", - }, - relax_variables: { - flow_type: "global", - flow_name: "relax_variables", - _xlsxPath: "global/data/parent_centre_globals.xlsx", - }, - saving_goals: { - flow_type: "global", - module: "money", - flow_name: "saving_goals", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - savings_options: { - flow_type: "global", - module: "money", - flow_name: "savings_options", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - spend_time_ideas: { - flow_type: "global", - module: "1on1", - flow_name: "spend_time_ideas", - _xlsxPath: "global/data/suggestion_globals.xlsx", - }, - survey_completed: { - flow_type: "global", - flow_name: "survey_completed", - _xlsxPath: "global/data/survey_globals.xlsx", - }, - thresholds: { - flow_type: "global", - flow_name: "thresholds", - _xlsxPath: "global/data/survey_globals.xlsx", - }, - workshop_completion_levels: { - flow_type: "global", - flow_name: "workshop_completion_levels", - _xlsxPath: "global/data/workshop_globals.xlsx", - }, - workshop_modes: { - flow_type: "global", - flow_name: "workshop_modes", - _xlsxPath: "global/data/workshop_globals.xlsx", - }, - workshop_options: { - flow_type: "global", - flow_name: "workshop_options", - _xlsxPath: "global/data/workshop_globals.xlsx", - }, - workshop_titles: { - flow_type: "global", - flow_name: "workshop_titles", - _xlsxPath: "global/data/workshop_globals.xlsx", - }, - }, - template: { - accept_terms: { - flow_type: "template", - flow_name: "accept_terms", - _xlsxPath: "global/core_templates/core_templates_app_first_launch.xlsx", - }, - activity_check_in_chat: { - flow_type: "template", - flow_name: "activity_check_in_chat", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_co_chef: { - flow_type: "template", - flow_name: "activity_co_chef", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_crazy_chicken: { - flow_type: "template", - flow_name: "activity_crazy_chicken", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_dance_moves: { - flow_type: "template", - flow_name: "activity_dance_moves", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_doing_what: { - flow_type: "template", - flow_name: "activity_doing_what", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_dream_travel: { - flow_type: "template", - flow_name: "activity_dream_travel", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_family_workout: { - flow_type: "template", - flow_name: "activity_family_workout", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_famous_party: { - flow_type: "template", - flow_name: "activity_famous_party", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_friendly_chat: { - flow_type: "template", - flow_name: "activity_friendly_chat", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_get_active: { - flow_type: "template", - flow_name: "activity_get_active", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_housework: { - flow_type: "template", - flow_name: "activity_housework", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_interrupter: { - flow_type: "template", - flow_name: "activity_interrupter", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_invent_story: { - flow_type: "template", - flow_name: "activity_invent_story", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_memory_game: { - flow_type: "template", - flow_name: "activity_memory_game", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_mirror: { - flow_type: "template", - flow_name: "activity_mirror", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_name_that_tune: { - flow_type: "template", - flow_name: "activity_name_that_tune", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_pass_the_snap: { - flow_type: "template", - flow_name: "activity_pass_the_snap", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_reflect_positive: { - flow_type: "template", - flow_name: "activity_reflect_positive", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_relax_1: { - flow_type: "template", - flow_name: "activity_relax_1", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_10: { - flow_type: "template", - flow_name: "activity_relax_10", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_11: { - flow_type: "template", - flow_name: "activity_relax_11", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_12: { - flow_type: "template", - flow_name: "activity_relax_12", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_13: { - flow_type: "template", - flow_name: "activity_relax_13", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_14: { - flow_type: "template", - flow_name: "activity_relax_14", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_15: { - flow_type: "template", - flow_name: "activity_relax_15", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_16: { - flow_type: "template", - flow_name: "activity_relax_16", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_17: { - flow_type: "template", - flow_name: "activity_relax_17", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_18: { - flow_type: "template", - flow_name: "activity_relax_18", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_19: { - flow_type: "template", - flow_name: "activity_relax_19", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_2: { - flow_type: "template", - flow_name: "activity_relax_2", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_20: { - flow_type: "template", - flow_name: "activity_relax_20", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_21: { - flow_type: "template", - flow_name: "activity_relax_21", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_22: { - flow_type: "template", - flow_name: "activity_relax_22", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_23: { - flow_type: "template", - flow_name: "activity_relax_23", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_24: { - flow_type: "template", - flow_name: "activity_relax_24", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_3: { - flow_type: "template", - flow_name: "activity_relax_3", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_4: { - flow_type: "template", - flow_name: "activity_relax_4", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_5: { - flow_type: "template", - flow_name: "activity_relax_5", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_6: { - flow_type: "template", - flow_name: "activity_relax_6", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_7: { - flow_type: "template", - flow_name: "activity_relax_7", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_8: { - flow_type: "template", - flow_name: "activity_relax_8", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_relax_9: { - flow_type: "template", - flow_name: "activity_relax_9", - _xlsxPath: "global/data/relax_data_list.xlsx", - }, - activity_superpowers: { - flow_type: "template", - flow_name: "activity_superpowers", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_three_options: { - flow_type: "template", - flow_name: "activity_three_options", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_time_machine: { - flow_type: "template", - flow_name: "activity_time_machine", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_two_truths: { - flow_type: "template", - flow_name: "activity_two_truths", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_whats_new: { - flow_type: "template", - flow_name: "activity_whats_new", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - activity_yes_no_maybe: { - flow_type: "template", - flow_name: "activity_yes_no_maybe", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_activities.xlsx", - }, - app_launch_calculations: { - flow_type: "template", - flow_name: "app_launch_calculations", - process_on_start: 2, - _xlsxPath: "global/campaigns/timing_calculations.xlsx", - }, - app_menu: { - flow_type: "template", - flow_name: "app_menu", - _xlsxPath: "global/core_templates/core_templates_menu.xlsx", - }, - app_menu_enter_dev_mode: { - flow_type: "template", - flow_name: "app_menu_enter_dev_mode", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - app_menu_exit_dev_mode: { - flow_type: "template", - flow_name: "app_menu_exit_dev_mode", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - app_menu_plh: { - flow_type: "template", - flow_name: "app_menu_plh", - _xlsxPath: "global/core_templates/core_templates_menu.xlsx", - }, - app_menu_privacy_policy: { - flow_type: "template", - flow_name: "app_menu_privacy_policy", - _xlsxPath: "global/core_templates/core_templates_menu.xlsx", - }, - app_menu_reset_app_pop: { - flow_type: "template", - flow_name: "app_menu_reset_app_pop", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - app_menu_settings: { - flow_type: "template", - flow_name: "app_menu_settings", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - app_menu_terms: { - flow_type: "template", - flow_name: "app_menu_terms", - _xlsxPath: "global/core_templates/core_templates_menu.xlsx", - }, - app_menu_unlock_workshops_pop: { - flow_type: "template", - flow_name: "app_menu_unlock_workshops_pop", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - banner: { - flow_type: "template", - flow_name: "banner", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - bereavement_practical: { - flow_type: "template", - flow_name: "bereavement_practical", - _xlsxPath: "global/top_templates/parent_centre_templates/bereavement.xlsx", - }, - bereavement_section: { - flow_type: "template", - flow_name: "bereavement_section", - _xlsxPath: "global/top_templates/parent_centre_templates/bereavement.xlsx", - }, - bereavement_self: { - flow_type: "template", - flow_name: "bereavement_self", - _xlsxPath: "global/top_templates/parent_centre_templates/bereavement.xlsx", - }, - bereavement_teen: { - flow_type: "template", - flow_name: "bereavement_teen", - _xlsxPath: "global/top_templates/parent_centre_templates/bereavement.xlsx", - }, - box_audio: { - flow_type: "template", - flow_name: "box_audio", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_buttons: { - flow_type: "template", - flow_name: "box_buttons", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_combo_box: { - flow_type: "template", - flow_name: "box_combo_box", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_duo: { - flow_type: "template", - flow_name: "box_duo", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - box_duo_combo_box: { - flow_type: "template", - flow_name: "box_duo_combo_box", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_duo_radio_buttons: { - flow_type: "template", - flow_name: "box_duo_radio_buttons", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_image: { - flow_type: "template", - flow_name: "box_image", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_image_more: { - flow_type: "template", - flow_name: "box_image_more", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_multi_1: { - flow_type: "template", - flow_name: "box_multi_1", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_multi_2: { - flow_type: "template", - flow_name: "box_multi_2", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_multi_3_temp: { - flow_type: "template", - flow_name: "box_multi_3_temp", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_multi_4_temp: { - flow_type: "template", - flow_name: "box_multi_4_temp", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_multi_radio_buttons: { - flow_type: "template", - flow_name: "box_multi_radio_buttons", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_number_selector: { - flow_type: "template", - flow_name: "box_number_selector", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_parent_point_counter: { - flow_type: "template", - flow_name: "box_parent_point_counter", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_radio_buttons: { - flow_type: "template", - flow_name: "box_radio_buttons", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_radio_buttons_emo_temp: { - flow_type: "template", - flow_name: "box_radio_buttons_emo_temp", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_slider: { - flow_type: "template", - flow_name: "box_slider", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_slider_month_temp: { - flow_type: "template", - flow_name: "box_slider_month_temp", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_slider_week_temp: { - flow_type: "template", - flow_name: "box_slider_week_temp", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_story: { - flow_type: "template", - flow_name: "box_story", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_text_box: { - flow_type: "template", - flow_name: "box_text_box", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - box_timer: { - flow_type: "template", - flow_name: "box_timer", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - box_tools: { - flow_type: "template", - flow_name: "box_tools", - _xlsxPath: "global/core_templates/core_templates_essential_tools.xlsx", - }, - box_video: { - flow_type: "template", - flow_name: "box_video", - _xlsxPath: "global/core_templates/core_templates_workshop_boxes.xlsx", - }, - care_together: { - flow_type: "template", - flow_name: "care_together", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - caregiver_testimonial_text: { - flow_type: "template", - flow_name: "caregiver_testimonial_text", - _xlsxPath: "global/mode_templates/listen.xlsx", - }, - change_thoughts: { - flow_type: "template", - flow_name: "change_thoughts", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx", - }, - change_thoughts_sect: { - flow_type: "template", - flow_name: "change_thoughts_sect", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx", - }, - comp_button: { - flow_type: "template", - flow_name: "comp_button", - flow_subtype: "component_demo", - _xlsxPath: "quality_assurance/components_demo/component_button.xlsx", - }, - comp_checkbox_button: { - flow_type: "template", - flow_name: "comp_checkbox_button", - flow_subtype: "component_demo", - _xlsxPath: "quality_assurance/components_demo/component_simple_check_box .xlsx", - }, - comp_round_button: { - flow_type: "template", - flow_name: "comp_round_button", - flow_subtype: "component_demo", - _xlsxPath: "quality_assurance/components_demo/component_round_button .xlsx", - }, - comp_square_button: { - flow_type: "template", - flow_name: "comp_square_button", - flow_subtype: "component_demo", - _xlsxPath: "quality_assurance/components_demo/component_square_button.xlsx", - }, - comp_text: { - flow_type: "template", - flow_name: "comp_text", - flow_subtype: "component_demo", - _xlsxPath: "quality_assurance/components_demo/component_text.xlsx", - }, - bug_dashed_box: { - flow_type: "template", - flow_name: "bug_dashed_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - debug_actions_bottom: { - flow_type: "template", - flow_name: "debug_actions_bottom", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_overriding_action_list.xlsx", - }, - debug_actions_middle: { - flow_type: "template", - flow_name: "debug_actions_middle", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_overriding_action_list.xlsx", - }, - debug_actions_top: { - flow_type: "template", - flow_name: "debug_actions_top", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_overriding_action_list.xlsx", - }, - debug_advanced_dashed_box_1: { - flow_type: "template", - flow_name: "debug_advanced_dashed_box_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_advanced_dashed_box.xlsx", - }, - debug_advanced_dashed_box_2: { - flow_type: "template", - flow_name: "debug_advanced_dashed_box_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_advanced_dashed_box.xlsx", - }, - debug_audio_1: { - flow_type: "template", - flow_name: "debug_audio_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_audio_player_condition: { - flow_type: "template", - flow_name: "debug_audio_player_condition", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_audio_player.xlsx", - }, - debug_audio_player_hide: { - flow_type: "template", - flow_name: "debug_audio_player_hide", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_audio_player.xlsx", - }, - debug_campaign_tester: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "debug_campaign_tester", - _xlsxPath: "quality_assurance/debug_templates/debug_campaigns.xlsx", - }, - debug_changed_radio_group_1: { - flow_type: "template", - flow_name: "debug_changed_radio_group_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_changed_radio_group.xlsx", - }, - debug_changed_radio_group_2: { - flow_type: "template", - flow_name: "debug_changed_radio_group_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_changed_radio_group.xlsx", - }, - debug_changed_radio_group_3: { - flow_type: "template", - flow_name: "debug_changed_radio_group_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_changed_radio_group.xlsx", - }, - debug_changed_radio_group_4: { - flow_type: "template", - flow_name: "debug_changed_radio_group_4", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_changed_radio_group.xlsx", - }, - debug_combo_box_dynamic: { - flow_type: "template", - flow_name: "debug_combo_box_dynamic", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dynamic.xlsx", - }, - debug_combo_box_in_dg: { - flow_type: "template", - flow_name: "debug_combo_box_in_dg", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_combo_box_in_dg.xlsx", - }, - debug_combo_box_input: { - flow_type: "template", - flow_name: "debug_combo_box_input", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_combo_box.xlsx", - }, - debug_combo_box_input_var: { - flow_type: "template", - flow_name: "debug_combo_box_input_var", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_combo_box.xlsx", - }, - debug_combo_box_not_in_dg: { - flow_type: "template", - flow_name: "debug_combo_box_not_in_dg", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_combo_box_in_dg.xlsx", - }, - debug_combo_box_value: { - flow_type: "template", - flow_name: "debug_combo_box_value", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_combo_box.xlsx", - }, - debug_combo_box_variables: { - flow_type: "template", - flow_name: "debug_combo_box_variables", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_component_variables.xlsx", - }, - debug_conditional_messages_q1: { - flow_type: "template", - flow_name: "debug_conditional_messages_q1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_conditional_messages.xlsx", - }, - debug_conditional_messages_q2: { - flow_type: "template", - flow_name: "debug_conditional_messages_q2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_conditional_messages.xlsx", - }, - debug_conditional_texts: { - flow_type: "template", - flow_name: "debug_conditional_texts", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_conditional_messages.xlsx", - }, - debug_dashed_box_paragraphs: { - flow_type: "template", - flow_name: "debug_dashed_box_paragraphs", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_paragraphs.xlsx", - }, - debug_data_bottom: { - flow_type: "template", - flow_name: "debug_data_bottom", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_data_lists.xlsx", - }, - debug_data_image: { - flow_type: "template", - flow_name: "debug_data_image", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_data_lists.xlsx", - }, - debug_data_middle: { - flow_type: "template", - flow_name: "debug_data_middle", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_data_lists.xlsx", - }, - debug_data_top: { - flow_type: "template", - flow_name: "debug_data_top", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_data_lists.xlsx", - }, - debug_dg_button: { - flow_type: "template", - flow_name: "debug_dg_button", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_dg_center: { - flow_type: "template", - flow_name: "debug_dg_center", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_dg_form: { - flow_type: "template", - flow_name: "debug_dg_form", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_dg_tile: { - flow_type: "template", - flow_name: "debug_dg_tile", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_dg_tool: { - flow_type: "template", - flow_name: "debug_dg_tool", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_dg_var: { - flow_type: "template", - flow_name: "debug_dg_var", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dg.xlsx", - }, - debug_double_radio_group_1: { - flow_type: "template", - flow_name: "debug_double_radio_group_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_radio_group.xlsx", - }, - debug_double_radio_group_2: { - flow_type: "template", - flow_name: "debug_double_radio_group_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_radio_group.xlsx", - }, - debug_evaluate_hidden: { - flow_type: "template", - flow_name: "debug_evaluate_hidden", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_falsy_values: { - flow_type: "template", - flow_name: "debug_falsy_values", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_falsy_values.xlsx", - }, - debug_field_null: { - flow_type: "template", - flow_name: "debug_field_null", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_field_null.xlsx", - }, - debug_field_null_2: { - flow_type: "template", - flow_name: "debug_field_null_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_field_null.xlsx", - }, - debug_field_null_if: { - flow_type: "template", - flow_name: "debug_field_null_if", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_field_null.xlsx", - }, - debug_full_stop_after_var: { - flow_type: "template", - flow_name: "debug_full_stop_after_var", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_full_stop_after_var.xlsx", - }, - debug_global_bottom: { - flow_type: "template", - flow_name: "debug_global_bottom", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - debug_global_local: { - flow_type: "template", - flow_name: "debug_global_local", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - debug_global_middle: { - flow_type: "template", - flow_name: "debug_global_middle", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - debug_global_top: { - flow_type: "template", - flow_name: "debug_global_top", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - debug_go_to_1: { - flow_type: "template", - flow_name: "debug_go_to_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_double_go_to.xlsx", - }, - debug_go_to_2: { - flow_type: "template", - flow_name: "debug_go_to_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_double_go_to.xlsx", - }, - debug_go_to_3: { - flow_type: "template", - flow_name: "debug_go_to_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_double_go_to.xlsx", - }, - debug_go_to_nest_bottom: { - flow_type: "template", - flow_name: "debug_go_to_nest_bottom", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_go_to_nested.xlsx", - }, - debug_go_to_nest_top: { - flow_type: "template", - flow_name: "debug_go_to_nest_top", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_go_to_nested.xlsx", - }, - debug_hidden_buttons: { - flow_type: "template", - flow_name: "debug_hidden_buttons", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_hidden_text: { - flow_type: "template", - flow_name: "debug_hidden_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_hp_review: { - flow_type: "template", - flow_name: "debug_hp_review", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review.xlsx", - }, - debug_hp_review_2: { - flow_type: "template", - flow_name: "debug_hp_review_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review_2.xlsx", - }, - debug_hp_review_specific: { - flow_type: "template", - flow_name: "debug_hp_review_specific", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review.xlsx", - }, - debug_hp_review_specific_2: { - flow_type: "template", - flow_name: "debug_hp_review_specific_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review_2.xlsx", - }, - debug_items: { - flow_type: "template", - flow_name: "debug_items", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_items.xlsx", - }, - debug_lang_global_1: { - flow_type: "template", - flow_name: "debug_lang_global_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_languages.xlsx", - }, - debug_markdown: { - flow_type: "template", - flow_name: "debug_markdown", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_markdown.xlsx", - }, - debug_negation: { - flow_type: "template", - flow_name: "debug_negation", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_nested_same_name: { - flow_type: "template", - flow_name: "debug_nested_same_name", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nested_same_name.xlsx", - }, - debug_nesting_conditional: { - flow_type: "template", - flow_name: "debug_nesting_conditional", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_nesting_override_1: { - flow_type: "template", - flow_name: "debug_nesting_override_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_sheet_1: { - flow_type: "template", - flow_name: "debug_nesting_sheet_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_sheet_2: { - flow_type: "template", - flow_name: "debug_nesting_sheet_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_test_1: { - flow_type: "template", - flow_name: "debug_nesting_test_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_test_1_1: { - flow_type: "template", - flow_name: "debug_nesting_test_1_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_test_1_2: { - flow_type: "template", - flow_name: "debug_nesting_test_1_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_test_2: { - flow_type: "template", - flow_name: "debug_nesting_test_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_nesting_variables: { - flow_type: "template", - flow_name: "debug_nesting_variables", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_nesting_variables_2: { - flow_type: "template", - flow_name: "debug_nesting_variables_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_nesting_variables_3: { - flow_type: "template", - flow_name: "debug_nesting_variables_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_nesting_variables_global: { - flow_type: "template", - flow_name: "debug_nesting_variables_global", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_ordered_list: { - flow_type: "template", - flow_name: "debug_ordered_list", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_ordered_list.xlsx", - }, - debug_overriding_value: { - flow_type: "template", - flow_name: "debug_overriding_value", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_overriding_value.xlsx", - }, - debug_pop_ups_1: { - flow_type: "template", - flow_name: "debug_pop_ups_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_pop_ups.xlsx", - }, - debug_pop_ups_2: { - flow_type: "template", - flow_name: "debug_pop_ups_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_pop_ups.xlsx", - }, - debug_pop_ups_override: { - flow_type: "template", - flow_name: "debug_pop_ups_override", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting.xlsx", - }, - debug_pop_ups_variable: { - flow_type: "template", - flow_name: "debug_pop_ups_variable", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_pop_ups_variable.xlsx", - }, - debug_print_global: { - flow_type: "template", - flow_name: "debug_print_global", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_radio_group: { - flow_type: "template", - flow_name: "debug_radio_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_radio_group.xlsx", - }, - debug_radio_group_2: { - flow_type: "template", - flow_name: "debug_radio_group_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_radio_group_dynamic: { - flow_type: "template", - flow_name: "debug_radio_group_dynamic", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dynamic.xlsx", - }, - debug_radio_group_image_scale: { - flow_type: "template", - flow_name: "debug_radio_group_image_scale", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_radio_group.xlsx", - }, - debug_radio_group_replies: { - flow_type: "template", - flow_name: "debug_radio_group_replies", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_overriding_value.xlsx", - }, - debug_radio_group_size: { - flow_type: "template", - flow_name: "debug_radio_group_size", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_radio_group.xlsx", - }, - debug_radio_group_variables: { - flow_type: "template", - flow_name: "debug_radio_group_variables", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_component_variables.xlsx", - }, - debug_relax_checkbox: { - flow_type: "template", - flow_name: "debug_relax_checkbox", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_relax_checkbox.xlsx", - }, - debug_render_child: { - flow_type: "template", - flow_name: "debug_render_child", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx", - }, - debug_render_grandchild_1: { - flow_type: "template", - flow_name: "debug_render_grandchild_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx", - }, - debug_render_grandchild_2: { - flow_type: "template", - flow_name: "debug_render_grandchild_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx", - }, - debug_render_parent: { - flow_type: "template", - flow_name: "debug_render_parent", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx", - }, - debug_render_updates: { - flow_type: "template", - flow_name: "debug_render_updates", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_updates.xlsx", - }, - debug_render_updates_child_1: { - flow_type: "template", - flow_name: "debug_render_updates_child_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_updates.xlsx", - }, - debug_render_updates_child_2: { - flow_type: "template", - flow_name: "debug_render_updates_child_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_updates.xlsx", - }, - debug_rounded_corners: { - flow_type: "template", - flow_name: "debug_rounded_corners", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_rounded_corners.xlsx", - }, - debug_set_field_1: { - flow_type: "template", - flow_name: "debug_set_field_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_set_field_2: { - flow_type: "template", - flow_name: "debug_set_field_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_set_field_triggered: { - flow_type: "template", - flow_name: "debug_set_field_triggered", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_set_field_triggered.xlsx", - }, - debug_set_global_2: { - flow_type: "template", - flow_name: "debug_set_global_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_set_local: { - flow_type: "template", - flow_name: "debug_set_local", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_set_local_image: { - flow_type: "template", - flow_name: "debug_set_local_image", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_slider_dynamic: { - flow_type: "template", - flow_name: "debug_slider_dynamic", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_dynamic.xlsx", - }, - debug_slider_with_template: { - flow_type: "template", - flow_name: "debug_slider_with_template", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_slider_with_template.xlsx", - }, - debug_slider_without_template: { - flow_type: "template", - flow_name: "debug_slider_without_template", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_slider_with_template.xlsx", - }, - debug_stepper_nav_group: { - flow_type: "template", - flow_name: "debug_stepper_nav_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_stepper.xlsx", - }, - debug_stepper_step_1: { - flow_type: "template", - flow_name: "debug_stepper_step_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_stepper.xlsx", - }, - debug_stepper_step_2: { - flow_type: "template", - flow_name: "debug_stepper_step_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_stepper.xlsx", - }, - debug_stepper_step_3: { - flow_type: "template", - flow_name: "debug_stepper_step_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_stepper.xlsx", - }, - debug_stepper_step_4: { - flow_type: "template", - flow_name: "debug_stepper_step_4", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_stepper.xlsx", - }, - debug_text: { - flow_type: "template", - flow_name: "debug_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_text_and_blank_child_1: { - flow_type: "template", - flow_name: "debug_text_and_blank_child_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nested_same_name.xlsx", - }, - debug_text_and_blank_child_2: { - flow_type: "template", - flow_name: "debug_text_and_blank_child_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nested_same_name.xlsx", - }, - debug_text_paragraphs: { - flow_type: "template", - flow_name: "debug_text_paragraphs", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_paragraphs.xlsx", - }, - debug_text_wrapping: { - flow_type: "template", - flow_name: "debug_text_wrapping", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_text_wrapping.xlsx", - }, - debug_text_wrapping_popup: { - flow_type: "template", - flow_name: "debug_text_wrapping_popup", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_text_wrapping.xlsx", - }, - debug_tile_text: { - flow_type: "template", - flow_name: "debug_tile_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_tile_text.xlsx", - }, - debug_timer_icons_1: { - flow_type: "template", - flow_name: "debug_timer_icons_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_tour_template: { - flow_type: "template", - flow_name: "debug_tour_template", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_tour.xlsx", - }, - debug_translation_global: { - flow_type: "template", - flow_name: "debug_translation_global", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_translation.xlsx", - }, - debug_translation_radio_group: { - flow_type: "template", - flow_name: "debug_translation_radio_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_translation.xlsx", - }, - debug_translation_tile: { - flow_type: "template", - flow_name: "debug_translation_tile", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_translation.xlsx", - }, - debug_translation_trim: { - flow_type: "template", - flow_name: "debug_translation_trim", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_translation.xlsx", - }, - debug_two_texts: { - flow_type: "template", - flow_name: "debug_two_texts", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_update_child_1: { - flow_type: "template", - flow_name: "debug_update_child_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_update_child_2_a: { - flow_type: "template", - flow_name: "debug_update_child_2_a", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_update_child_2_b: { - flow_type: "template", - flow_name: "debug_update_child_2_b", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_update_sibling_1: { - flow_type: "template", - flow_name: "debug_update_sibling_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_update_sibling_2_a: { - flow_type: "template", - flow_name: "debug_update_sibling_2_a", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_update_sibling_2_b: { - flow_type: "template", - flow_name: "debug_update_sibling_2_b", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - debug_var_hyphen: { - flow_type: "template", - flow_name: "debug_var_hyphen", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - debug_var_in_bulleted_list: { - flow_type: "template", - flow_name: "debug_var_in_bulleted_list", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_var_in_bulleted_list.xlsx", - }, - debug_var_in_bulleted_list_2: { - flow_type: "template", - flow_name: "debug_var_in_bulleted_list_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_var_in_bulleted_list.xlsx", - }, - debug_variable_type: { - flow_type: "template", - flow_name: "debug_variable_type", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - debug_video_1: { - flow_type: "template", - flow_name: "debug_video_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_small_issues.xlsx", - }, - debug_w_accordion_padding: { - flow_type: "template", - flow_name: "debug_w_accordion_padding", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_accordion.xlsx", - }, - debug_w_accordion_section: { - flow_type: "template", - flow_name: "debug_w_accordion_section", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_accordion.xlsx", - }, - debug_workshop_activity: { - flow_type: "template", - flow_name: "debug_workshop_activity", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review.xlsx", - }, - debug_workshop_activity_2: { - flow_type: "template", - flow_name: "debug_workshop_activity_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_hp_review_2.xlsx", - }, - debug_wrapper: { - flow_type: "template", - flow_name: "debug_wrapper", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_nesting_variables.xlsx", - }, - example_accordion: { - flow_type: "template", - flow_name: "example_accordion", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_accordion.xlsx", - }, - example_analytics: { - flow_type: "template", - flow_name: "example_analytics", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_analytics.xlsx", - }, - example_audio_player: { - flow_type: "template", - flow_name: "example_audio_player", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_audio_player.xlsx", - }, - example_buttons_padding: { - flow_type: "template", - flow_name: "example_buttons_padding", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_buttons.xlsx", - }, - example_calc: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_calc", - _xlsxPath: "quality_assurance/example_templates/example_calc.xlsx", - }, - example_calc_2: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_calc_2", - _xlsxPath: "quality_assurance/example_templates/example_calc.xlsx", - }, - example_calc_3: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_calc_3", - _xlsxPath: "quality_assurance/example_templates/example_calc.xlsx", - }, - example_calc_date: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_calc_date", - _xlsxPath: "quality_assurance/example_templates/example_calc.xlsx", - }, - example_call_global_constants: { - flow_type: "template", - flow_name: "example_call_global_constants", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_global_field.xlsx", - }, - example_changed_action: { - flow_type: "template", - flow_name: "example_changed_action", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_changed_action.xlsx", - }, - example_condition_bottom: { - flow_type: "template", - flow_name: "example_condition_bottom", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_condition.xlsx", - }, - example_condition_top_1: { - flow_type: "template", - flow_name: "example_condition_top_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_condition.xlsx", - }, - example_condition_top_2: { - flow_type: "template", - flow_name: "example_condition_top_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_condition.xlsx", - }, - example_condition_top_3: { - flow_type: "template", - flow_name: "example_condition_top_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_condition.xlsx", - }, - example_data_from_id: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_data_from_id", - _xlsxPath: "quality_assurance/example_templates/example_data_lists.xlsx", - }, - example_data_template: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_data_template", - _xlsxPath: "quality_assurance/example_templates/example_data_lists.xlsx", - }, - example_dates: { - flow_type: "template", - flow_name: "example_dates", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_multiple_locals.xlsx", - }, - example_dg: { - flow_type: "template", - flow_name: "example_dg", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_dg.xlsx", - }, - example_double_ref_comp_var: { - flow_type: "template", - flow_name: "example_double_ref_comp_var", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_component_variables.xlsx", - }, - example_emit: { - flow_type: "template", - flow_name: "example_emit", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_go_to_1: { - flow_type: "template", - flow_name: "example_go_to_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_go_to_2: { - flow_type: "template", - flow_name: "example_go_to_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_go_to_3: { - flow_type: "template", - flow_name: "example_go_to_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_items: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_items", - _xlsxPath: "quality_assurance/example_templates/example_items.xlsx", - }, - example_items_unlock: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_items_unlock", - _xlsxPath: "quality_assurance/example_templates/example_items.xlsx", - }, - example_lang_select: { - flow_type: "template", - flow_name: "example_lang_select", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_template_1: { - flow_type: "template", - flow_name: "example_lang_template_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_template_2: { - flow_type: "template", - flow_name: "example_lang_template_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_template_3: { - flow_type: "template", - flow_name: "example_lang_template_3", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_template_pop_1: { - flow_type: "template", - flow_name: "example_lang_template_pop_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_template_pop_2: { - flow_type: "template", - flow_name: "example_lang_template_pop_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_lang_user_name: { - flow_type: "template", - flow_name: "example_lang_user_name", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_multiple_locals: { - flow_type: "template", - flow_name: "example_multiple_locals", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_multiple_locals.xlsx", - }, - example_navigation_style: { - flow_type: "template", - flow_name: "example_navigation_style", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_navigation_style.xlsx", - }, - example_navigation_style_2: { - flow_type: "template", - flow_name: "example_navigation_style_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_navigation_style.xlsx", - }, - example_nested_comp_var: { - flow_type: "template", - flow_name: "example_nested_comp_var", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_component_variables.xlsx", - }, - example_new_nav_buttons: { - flow_type: "template", - flow_name: "example_new_nav_buttons", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_new_nav_buttons.xlsx", - }, - example_pop_ups: { - flow_type: "template", - flow_name: "example_pop_ups", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_radio_group: { - flow_type: "template", - flow_name: "example_radio_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_radio_group.xlsx", - }, - example_radio_group_fb_con: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_radio_group_fb_con", - _xlsxPath: "quality_assurance/example_templates/example_options_feedback.xlsx", - }, - example_radio_group_fb_hid: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_radio_group_fb_hid", - _xlsxPath: "quality_assurance/example_templates/example_options_feedback.xlsx", - }, - example_set_fields_in_action: { - flow_type: "template", - flow_name: "example_set_fields_in_action", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_global_field.xlsx", - }, - example_startup_trigger: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_startup_trigger", - _xlsxPath: "quality_assurance/example_templates/example_startup.xlsx", - }, - example_text: { - flow_type: "template", - flow_name: "example_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_text_button: { - flow_type: "template", - flow_name: "example_text_button", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_condition.xlsx", - }, - example_text_image: { - flow_type: "template", - flow_name: "example_text_image", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_pop_ups.xlsx", - }, - example_text_option_1: { - flow_type: "template", - flow_name: "example_text_option_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - example_text_option_2: { - flow_type: "template", - flow_name: "example_text_option_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_update_sibling.xlsx", - }, - example_tiles: { - flow_type: "template", - flow_name: "example_tiles", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_tiles.xlsx", - }, - example_title_text: { - flow_type: "template", - flow_name: "example_title_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx", - }, - example_tour_template_1: { - flow_type: "template", - flow_name: "example_tour_template_1", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_tour.xlsx", - }, - example_update_actions: { - flow_type: "template", - flow_name: "example_update_actions", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_actions.xlsx", - }, - example_widget_audio_def: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_widget_audio_def", - _xlsxPath: "quality_assurance/example_templates/example_widgets.xlsx", - }, - example_widget_combo_box: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_widget_combo_box", - _xlsxPath: "quality_assurance/example_templates/example_widgets.xlsx", - }, - example_widget_nesting_audio: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_widget_nesting_audio", - _xlsxPath: "quality_assurance/example_templates/example_widgets.xlsx", - }, - example_widget_radio_button_box: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "example_widget_radio_button_box", - _xlsxPath: "quality_assurance/example_templates/example_widgets.xlsx", - }, - example_workshops_accordion: { - flow_type: "template", - flow_name: "example_workshops_accordion", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_accordion.xlsx", - }, - feature_audio: { - flow_type: "template", - flow_name: "feature_audio", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_checkbox: { - flow_type: "template", - flow_name: "feature_checkbox", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_combo_box: { - flow_type: "template", - flow_name: "feature_combo_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_combo_box_placeholder: { - flow_type: "template", - flow_name: "feature_combo_box_placeholder", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_prioritise_placeholder.xlsx", - }, - feature_dashed_box: { - flow_type: "template", - flow_name: "feature_dashed_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_dg_dashed_box: { - flow_type: "template", - flow_name: "feature_dg_dashed_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_dg_styles.xlsx", - }, - feature_dg_form: { - flow_type: "template", - flow_name: "feature_dg_form", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_dg_styles.xlsx", - }, - feature_display_group: { - flow_type: "template", - flow_name: "feature_display_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_essential_tools: { - flow_type: "template", - flow_name: "feature_essential_tools", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_feedback_debug: { - flow_type: "template", - flow_name: "feature_feedback_debug", - flow_subtype: "debug", - comments: "Used in /feedback debug page", - _xlsxPath: "quality_assurance/feature_templates/feature_feedback.xlsx", - }, - feature_feedback_default: { - flow_type: "template", - flow_name: "feature_feedback_default", - flow_subtype: "debug", - comments: "Default general feedback form", - _xlsxPath: "quality_assurance/feature_templates/feature_feedback.xlsx", - }, - feature_feedback_text_select: { - flow_type: "template", - flow_name: "feature_feedback_text_select", - flow_subtype: "debug", - comments: "Default text-select feedback form", - _xlsxPath: "quality_assurance/feature_templates/feature_feedback.xlsx", - }, - feature_formatting: { - flow_type: "template", - flow_name: "feature_formatting", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_home: { - flow_type: "template", - flow_name: "feature_home", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_items: { - flow_type: "template", - flow_name: "feature_items", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_items.xlsx", - }, - feature_lottie: { - flow_type: "template", - flow_name: "feature_lottie", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_lottie_habits: { - flow_type: "template", - flow_name: "feature_lottie_habits", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_lottie_habits.xlsx", - }, - feature_number_selector: { - flow_type: "template", - flow_name: "feature_number_selector", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_parent_point_box: { - flow_type: "template", - flow_name: "feature_parent_point_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_pop_ups: { - flow_type: "template", - flow_name: "feature_pop_ups", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_radio_group: { - flow_type: "template", - flow_name: "feature_radio_group", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_radio_group_2: { - flow_type: "template", - flow_name: "feature_radio_group_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_select_text: { - flow_type: "template", - flow_name: "feature_select_text", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_select_text.xlsx", - }, - feature_set_theme_2: { - flow_type: "template", - flow_name: "feature_set_theme_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_slider: { - flow_type: "template", - flow_name: "feature_slider", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_text_area: { - flow_type: "template", - flow_name: "feature_text_area", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_text_box: { - flow_type: "template", - flow_name: "feature_text_box", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_text_box_placeholder: { - flow_type: "template", - flow_name: "feature_text_box_placeholder", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_prioritise_placeholder.xlsx", - }, - feature_tile: { - flow_type: "template", - flow_name: "feature_tile", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_timer: { - flow_type: "template", - flow_name: "feature_timer", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_timer_ping: { - flow_type: "template", - flow_name: "feature_timer_ping", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_toggle_bar: { - flow_type: "template", - flow_name: "feature_toggle_bar", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_two_columns_images: { - flow_type: "template", - flow_name: "feature_two_columns_images", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - feature_two_columns_images_2: { - flow_type: "template", - flow_name: "feature_two_columns_images_2", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/feature_templates/feature_template_components.xlsx", - }, - w_example_ending: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_ending", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_home_practice: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_home_practice", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_listen: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_listen", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_read: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_read", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_stepper: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_stepper", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_talk_together: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_talk_together", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_tools: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_tools", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_tools_activity: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_tools_activity", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - w_example_welcome_together: { - flow_type: "template", - flow_subtype: "debug", - flow_name: "w_example_welcome_together", - _xlsxPath: "quality_assurance/example_templates/example_workshop.xlsx", - }, - example_temp_override_default: { - flow_type: "template", - flow_name: "example_temp_override_default", - flow_subtype: "debug_override", - _xlsxPath: "quality_assurance/example_templates/example_overrides.xlsx", - _overrides: { - example_temp_override_es_sp: '@fields._app_language.startsWith("es")', - }, - }, - example_temp_override_es_sp: { - flow_type: "template", - flow_name: "example_temp_override_es_sp", - flow_subtype: "debug_override", - override_target: "example_temp_override_default", - override_condition: '@fields._app_language.startsWith("es")', - comments: "condition used to apply override to all es users (e.g. es_sp)", - _xlsxPath: "quality_assurance/example_templates/example_overrides.xlsx", - }, - demo_emo_check_in: { - flow_type: "template", - flow_name: "demo_emo_check_in", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - demo_navigation: { - flow_type: "template", - flow_name: "demo_navigation", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - demo_reset_app_pop: { - flow_type: "template", - flow_name: "demo_reset_app_pop", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - demo_self_care_stepper: { - flow_type: "template", - flow_name: "demo_self_care_stepper", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - demo_workshop_unlock_pop: { - flow_type: "template", - flow_name: "demo_workshop_unlock_pop", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - ending: { - flow_type: "template", - flow_name: "ending", - _xlsxPath: "global/mode_templates/welcome.xlsx", - }, - essential_tool: { - flow_type: "template", - flow_name: "essential_tool", - _xlsxPath: "global/core_templates/core_templates_essential_tools.xlsx", - }, - essential_tools: { - flow_type: "template", - flow_name: "essential_tools", - _xlsxPath: "global/core_templates/core_templates_essential_tools.xlsx", - }, - example_hardcoded_fields: { - flow_type: "template", - flow_subtype: "example_hardcoded", - flow_name: "example_hardcoded_fields", - comments: "List of fields automatically populated by app", - _xlsxPath: "quality_assurance/example_templates/hardcoded_variables.xlsx", - }, - home_practice: { - flow_type: "template", - flow_name: "home_practice", - _xlsxPath: "global/mode_templates/home_practice.xlsx", - }, - home_practice_challenges: { - flow_type: "template", - flow_name: "home_practice_challenges", - _xlsxPath: "global/mode_templates/home_practice.xlsx", - }, - home_practice_review: { - flow_type: "template", - flow_name: "home_practice_review", - _xlsxPath: "global/mode_templates/home_practice.xlsx", - }, - home_screen: { - flow_type: "template", - flow_name: "home_screen", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - hp_review_other_challenge: { - flow_type: "template", - flow_name: "hp_review_other_challenge", - _xlsxPath: "global/mode_templates/home_practice.xlsx", - }, - hp_review_tips_feedback: { - flow_type: "template", - flow_name: "hp_review_tips_feedback", - _xlsxPath: "global/mode_templates/home_practice.xlsx", - }, - in_week_message: { - flow_type: "template", - flow_name: "in_week_message", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - language_select: { - flow_type: "template", - flow_name: "language_select", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - language_select_tz: { - flow_type: "template", - flow_name: "language_select_tz", - override_target: "language_select", - override_condition: '@fields._deployment_name == "plh_tz"', - _xlsxPath: "tz/core_templates/core_templates_settings_tz.xlsx", - }, - language_select_za: { - flow_type: "template", - flow_name: "language_select_za", - override_target: "language_select", - override_condition: '@fields._deployment_name == "plh_za"', - _xlsxPath: "za/core_templates/core_templates_settings_za.xlsx", - }, - learn_temp: { - flow_type: "template", - flow_name: "learn_temp", - _xlsxPath: "global/mode_templates/read.xlsx", - }, - lib_act_change_thoughts: { - flow_type: "template", - flow_name: "lib_act_change_thoughts", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_covid: { - flow_type: "template", - flow_name: "lib_act_covid", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_deal_with_news: { - flow_type: "template", - flow_name: "lib_act_deal_with_news", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_help_teen_choose: { - flow_type: "template", - flow_name: "lib_act_help_teen_choose", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_something_fun: { - flow_type: "template", - flow_name: "lib_act_something_fun", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - lib_act_talk_to_teen: { - flow_type: "template", - flow_name: "lib_act_talk_to_teen", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_teen_feelings: { - flow_type: "template", - flow_name: "lib_act_teen_feelings", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_teen_influences: { - flow_type: "template", - flow_name: "lib_act_teen_influences", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/databank_covid_lib_act.xlsx", - }, - lib_act_tools: { - flow_type: "template", - flow_name: "lib_act_tools", - _xlsxPath: "global/core_templates/core_templates_essential_tools.xlsx", - }, - lib_act_w_1on1: { - flow_type: "template", - flow_name: "lib_act_w_1on1", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_celebrate: { - flow_type: "template", - flow_name: "lib_act_w_celebrate", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_consequence: { - flow_type: "template", - flow_name: "lib_act_w_consequence", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_crisis: { - flow_type: "template", - flow_name: "lib_act_w_crisis", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_instruct: { - flow_type: "template", - flow_name: "lib_act_w_instruct", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_money: { - flow_type: "template", - flow_name: "lib_act_w_money", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_praise: { - flow_type: "template", - flow_name: "lib_act_w_praise", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_rules: { - flow_type: "template", - flow_name: "lib_act_w_rules", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_safe: { - flow_type: "template", - flow_name: "lib_act_w_safe", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_self_care: { - flow_type: "template", - flow_name: "lib_act_w_self_care", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_solve: { - flow_type: "template", - flow_name: "lib_act_w_solve", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - lib_act_w_stress: { - flow_type: "template", - flow_name: "lib_act_w_stress", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_essential_tools.xlsx", - }, - library_activity: { - flow_type: "template", - flow_name: "library_activity", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - listen: { - flow_type: "template", - flow_name: "listen", - _xlsxPath: "global/mode_templates/listen.xlsx", - }, - m_hp_reminder: { - flow_type: "template", - flow_name: "m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_parent_points_overview: { - flow_type: "template", - flow_name: "m_parent_points_overview", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_praise: { - flow_type: "template", - flow_name: "m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_relax: { - flow_type: "template", - flow_name: "m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_something_fun: { - flow_type: "template", - flow_name: "m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_workshop_in_progress: { - flow_type: "template", - flow_name: "m_workshop_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_workshop_released: { - flow_type: "template", - flow_name: "m_workshop_released", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_workshop_reminder: { - flow_type: "template", - flow_name: "m_workshop_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - m_workshop_tomorrow: { - flow_type: "template", - flow_name: "m_workshop_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_types.xlsx", - }, - message_navigation: { - flow_type: "template", - flow_name: "message_navigation", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - nav_buttons: { - flow_type: "template", - flow_name: "nav_buttons", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - organisation_registration: { - flow_type: "template", - flow_name: "organisation_registration", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - organisation_registration_tz: { - flow_type: "template", - flow_name: "organisation_registration_tz", - override_target: "organisation_registration", - override_condition: '@fields._deployment_name == "plh_tz"', - _xlsxPath: "tz/core_templates/core_templates_settings_tz.xlsx", - }, - organisation_registration_za: { - flow_type: "template", - flow_name: "organisation_registration_za", - override_target: "organisation_registration", - override_condition: '@fields._deployment_name == "plh_za"', - _xlsxPath: "za/core_templates/core_templates_settings_za.xlsx", - }, - pair: { - flow_type: "template", - flow_name: "pair", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - pair_hidden: { - flow_type: "template", - flow_name: "pair_hidden", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - parent_centre: { - flow_type: "template", - flow_name: "parent_centre", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_activities: { - flow_type: "template", - flow_name: "parent_centre_activities", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - parent_centre_bereavement: { - flow_type: "template", - flow_name: "parent_centre_bereavement", - _xlsxPath: "global/top_templates/parent_centre_templates/bereavement.xlsx", - }, - parent_centre_covid: { - flow_type: "template", - flow_name: "parent_centre_covid", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid.xlsx", - }, - parent_centre_covid_temp: { - flow_type: "template", - flow_name: "parent_centre_covid_temp", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_covid_uni_pop_up: { - flow_type: "template", - flow_name: "parent_centre_covid_uni_pop_up", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_covid_who_pop_up: { - flow_type: "template", - flow_name: "parent_centre_covid_who_pop_up", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_customisation: { - flow_type: "template", - flow_name: "parent_centre_customisation", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_essential_tools: { - flow_type: "template", - flow_name: "parent_centre_essential_tools", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_help: { - flow_type: "template", - flow_name: "parent_centre_help", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_message_archive: { - flow_type: "template", - flow_name: "parent_centre_message_archive", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_my_activities: { - flow_type: "template", - flow_name: "parent_centre_my_activities", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - parent_centre_my_relaxes: { - flow_type: "template", - flow_name: "parent_centre_my_relaxes", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - parent_centre_my_tips: { - flow_type: "template", - flow_name: "parent_centre_my_tips", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_relax_and_act: { - flow_type: "template", - flow_name: "parent_centre_relax_and_act", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - parent_centre_relaxes: { - flow_type: "template", - flow_name: "parent_centre_relaxes", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - parent_centre_technical_support: { - flow_type: "template", - flow_name: "parent_centre_technical_support", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_centre_testimonies: { - flow_type: "template", - flow_name: "parent_centre_testimonies", - _xlsxPath: "global/core_templates/core_templates_parent_centre.xlsx", - }, - parent_point_dashed_box: { - flow_type: "template", - flow_name: "parent_point_dashed_box", - _xlsxPath: "global/core_templates/core_templates_parent_points.xlsx", - }, - parent_point_tile: { - flow_type: "template", - flow_name: "parent_point_tile", - _xlsxPath: "global/core_templates/core_templates_parent_points.xlsx", - }, - parent_point_tiles: { - flow_type: "template", - flow_name: "parent_point_tiles", - _xlsxPath: "global/core_templates/core_templates_parent_points.xlsx", - }, - parent_points: { - flow_type: "template", - flow_name: "parent_points", - _xlsxPath: "global/core_templates/core_templates_parent_points.xlsx", - }, - parenting_tips: { - flow_type: "template", - flow_name: "parenting_tips", - _xlsxPath: "global/top_templates/parent_centre_templates/help_me_now.xlsx", - }, - parenting_tips_content: { - flow_type: "template", - flow_name: "parenting_tips_content", - _xlsxPath: "global/top_templates/parent_centre_templates/help_me_now.xlsx", - }, - parenting_tips_reply: { - flow_type: "template", - flow_name: "parenting_tips_reply", - _xlsxPath: "global/top_templates/parent_centre_templates/help_me_now.xlsx", - }, - question_time: { - flow_type: "template", - flow_name: "question_time", - _xlsxPath: "global/mode_templates/question_time.xlsx", - }, - read_temp: { - flow_type: "template", - flow_name: "read_temp", - _xlsxPath: "global/mode_templates/read.xlsx", - }, - reflect_individual: { - flow_type: "template", - flow_name: "reflect_individual", - _xlsxPath: "global/mode_templates/welcome.xlsx", - }, - reflect_together: { - flow_type: "template", - flow_name: "reflect_together", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - reflect_together_pop: { - flow_type: "template", - flow_name: "reflect_together_pop", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - relax: { - flow_type: "template", - flow_name: "relax", - _xlsxPath: "global/mode_templates/relax.xlsx", - }, - relax_10_text: { - flow_type: "template", - module: "consequence", - flow_name: "relax_10_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_11_text: { - flow_type: "template", - module: "solve", - flow_name: "relax_11_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_12_text: { - flow_type: "template", - module: "safe", - flow_name: "relax_12_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_13_text: { - flow_type: "template", - module: "crisis", - flow_name: "relax_13_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_14_text: { - flow_type: "template", - module: "celebrate", - flow_name: "relax_14_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_15_text: { - flow_type: "template", - flow_name: "relax_15_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_16_text: { - flow_type: "template", - flow_name: "relax_16_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_17_text: { - flow_type: "template", - flow_name: "relax_17_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_18_text: { - flow_type: "template", - flow_name: "relax_18_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_19_text: { - flow_type: "template", - flow_name: "relax_19_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_1_text: { - flow_type: "template", - flow_name: "relax_1_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_20_text: { - flow_type: "template", - flow_name: "relax_20_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_21_text: { - flow_type: "template", - flow_name: "relax_21_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_22_text: { - flow_type: "template", - flow_name: "relax_22_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_23_text: { - flow_type: "template", - flow_name: "relax_23_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_24_text: { - flow_type: "template", - flow_name: "relax_24_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_2_text: { - flow_type: "template", - module: "1on1", - flow_name: "relax_2_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_3_text: { - flow_type: "template", - module: "praise", - flow_name: "relax_3_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_4_text: { - flow_type: "template", - module: "instruct", - flow_name: "relax_4_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_5_text: { - flow_type: "template", - module: "self_care", - flow_name: "relax_5_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_6_text: { - flow_type: "template", - flow_name: "relax_6_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_7_text: { - flow_type: "template", - module: "stress", - flow_name: "relax_7_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_8_text: { - flow_type: "template", - module: "money", - flow_name: "relax_8_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_9_text: { - flow_type: "template", - module: "rules", - flow_name: "relax_9_text", - _xlsxPath: "global/top_templates/parent_centre_templates/databank_relax.xlsx", - }, - relax_text: { - flow_type: "template", - flow_name: "relax_text", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - self_care_accordion_item: { - flow_type: "template", - flow_name: "self_care_accordion_item", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - setup_and_survey_stepper: { - flow_type: "template", - flow_name: "setup_and_survey_stepper", - _xlsxPath: "global/top_templates/survey_templates/merged_setup_and_survey_welcome.xlsx", - }, - something_fun: { - flow_type: "template", - flow_name: "something_fun", - _xlsxPath: "global/core_templates/core_templates_relax_and_activities.xlsx", - }, - suggestions: { - flow_type: "template", - flow_name: "suggestions", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - suggestions_image: { - flow_type: "template", - flow_name: "suggestions_image", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - suggestions_ticks: { - flow_type: "template", - flow_name: "suggestions_ticks", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - survey_activity: { - flow_type: "template", - flow_name: "survey_activity", - _xlsxPath: "global/mode_templates/survey_activity.xlsx", - }, - survey_final_intro: { - flow_type: "template", - flow_name: "survey_final_intro", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_outro: { - flow_type: "template", - flow_name: "survey_final_outro", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_1: { - flow_type: "template", - flow_name: "survey_final_q_1", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_2: { - flow_type: "template", - flow_name: "survey_final_q_2", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_3: { - flow_type: "template", - flow_name: "survey_final_q_3", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_4: { - flow_type: "template", - flow_name: "survey_final_q_4", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_5: { - flow_type: "template", - flow_name: "survey_final_q_5", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_6: { - flow_type: "template", - flow_name: "survey_final_q_6", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_7: { - flow_type: "template", - flow_name: "survey_final_q_7", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_8: { - flow_type: "template", - flow_name: "survey_final_q_8", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_q_9: { - flow_type: "template", - flow_name: "survey_final_q_9", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_final_stepper: { - flow_type: "template", - flow_name: "survey_final_stepper", - _xlsxPath: "global/top_templates/survey_templates/survey_final.xlsx", - }, - survey_intro: { - flow_type: "template", - flow_name: "survey_intro", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_nav_buttons: { - flow_type: "template", - flow_name: "survey_nav_buttons", - _xlsxPath: "global/core_templates/core_templates_survey_boxes.xlsx", - }, - survey_outro: { - flow_type: "template", - flow_name: "survey_outro", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_1: { - flow_type: "template", - flow_name: "survey_q_1", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_2: { - flow_type: "template", - flow_name: "survey_q_2", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_3: { - flow_type: "template", - flow_name: "survey_q_3", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_4: { - flow_type: "template", - flow_name: "survey_q_4", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_5: { - flow_type: "template", - flow_name: "survey_q_5", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_6: { - flow_type: "template", - flow_name: "survey_q_6", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_7: { - flow_type: "template", - flow_name: "survey_q_7", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_8: { - flow_type: "template", - flow_name: "survey_q_8", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_q_9: { - flow_type: "template", - flow_name: "survey_q_9", - _xlsxPath: "global/top_templates/survey_templates/survey.xlsx", - }, - survey_stepper: { - flow_type: "template", - flow_name: "survey_stepper", - _xlsxPath: "global/core_templates/core_templates_surveys.xlsx", - }, - survey_stepper_actions: { - flow_type: "template", - flow_name: "survey_stepper_actions", - _xlsxPath: "global/core_templates/core_templates_surveys.xlsx", - }, - survey_warning: { - flow_type: "template", - flow_name: "survey_warning", - _xlsxPath: "global/top_templates/survey_templates/survey_warnings.xlsx", - }, - survey_warning_na: { - flow_type: "template", - flow_name: "survey_warning_na", - _xlsxPath: "global/top_templates/survey_templates/survey_warnings.xlsx", - }, - survey_warning_no_adults: { - flow_type: "template", - flow_name: "survey_warning_no_adults", - _xlsxPath: "global/top_templates/survey_templates/survey_warnings.xlsx", - }, - survey_warning_no_teens: { - flow_type: "template", - flow_name: "survey_warning_no_teens", - _xlsxPath: "global/top_templates/survey_templates/survey_warnings.xlsx", - }, - survey_warning_skip_question: { - flow_type: "template", - flow_name: "survey_warning_skip_question", - _xlsxPath: "global/top_templates/survey_templates/survey_warnings.xlsx", - }, - survey_welcome_intro: { - flow_type: "template", - flow_name: "survey_welcome_intro", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_outro: { - flow_type: "template", - flow_name: "survey_welcome_outro", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_1: { - flow_type: "template", - flow_name: "survey_welcome_q_1", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_2: { - flow_type: "template", - flow_name: "survey_welcome_q_2", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_3: { - flow_type: "template", - flow_name: "survey_welcome_q_3", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_4: { - flow_type: "template", - flow_name: "survey_welcome_q_4", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_5: { - flow_type: "template", - flow_name: "survey_welcome_q_5", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_6: { - flow_type: "template", - flow_name: "survey_welcome_q_6", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_7: { - flow_type: "template", - flow_name: "survey_welcome_q_7", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_8: { - flow_type: "template", - flow_name: "survey_welcome_q_8", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_q_9: { - flow_type: "template", - flow_name: "survey_welcome_q_9", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - survey_welcome_repeat_intro: { - flow_type: "template", - flow_name: "survey_welcome_repeat_intro", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_outro: { - flow_type: "template", - flow_name: "survey_welcome_repeat_outro", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_1: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_1", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_2: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_2", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_3: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_3", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_4: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_4", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_5: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_5", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_6: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_6", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_7: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_7", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_8: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_8", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_q_9: { - flow_type: "template", - flow_name: "survey_welcome_repeat_q_9", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_repeat_stepper: { - flow_type: "template", - flow_name: "survey_welcome_repeat_stepper", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome_repeat.xlsx", - }, - survey_welcome_stepper: { - flow_type: "template", - flow_name: "survey_welcome_stepper", - _xlsxPath: "global/top_templates/survey_templates/survey_welcome.xlsx", - }, - talk_together: { - flow_type: "template", - flow_name: "talk_together", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - teen_testimonial_text: { - flow_type: "template", - flow_name: "teen_testimonial_text", - _xlsxPath: "global/mode_templates/listen.xlsx", - }, - think_temp: { - flow_type: "template", - flow_name: "think_temp", - _xlsxPath: "global/mode_templates/read.xlsx", - }, - timing_calculations: { - flow_type: "template", - flow_name: "timing_calculations", - process_on_start: 1, - _xlsxPath: "global/campaigns/timing_calculations.xlsx", - }, - tool_tile: { - flow_type: "template", - flow_name: "tool_tile", - _xlsxPath: "global/core_templates/core_templates_essential_tools.xlsx", - }, - tools_activity: { - flow_type: "template", - flow_name: "tools_activity", - _xlsxPath: "global/mode_templates/essential_tools_activity.xlsx", - }, - tools_deal_with_news: { - flow_type: "template", - flow_name: "tools_deal_with_news", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx", - }, - tools_help_teen_choose: { - flow_type: "template", - flow_name: "tools_help_teen_choose", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx", - }, - tools_talk_to_teen: { - flow_type: "template", - flow_name: "tools_talk_to_teen", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_tools.xlsx", - }, - topic_intro: { - flow_type: "template", - flow_name: "topic_intro", - _xlsxPath: "global/mode_templates/listen.xlsx", - }, - try_together: { - flow_type: "template", - flow_name: "try_together", - _xlsxPath: "global/mode_templates/talk_together.xlsx", - }, - understand_acc_sect: { - flow_type: "template", - flow_name: "understand_acc_sect", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx", - }, - understand_teen_feelings: { - flow_type: "template", - flow_name: "understand_teen_feelings", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx", - }, - understand_teen_influences: { - flow_type: "template", - flow_name: "understand_teen_influences", - _xlsxPath: "global/top_templates/parent_centre_templates/covid/covid_reflect.xlsx", - }, - unlock_workshops: { - flow_type: "template", - flow_name: "unlock_workshops", - process_on_start: 3, - _xlsxPath: "global/campaigns/timing_calculations.xlsx", - }, - user_code: { - flow_type: "template", - flow_name: "user_code", - _xlsxPath: "global/core_templates/core_templates_settings.xlsx", - }, - w_1on1_box_1: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_box_1", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx", - }, - w_1on1_box_2: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_box_2", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx", - }, - w_1on1_care_together: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_care_together_pop: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_care_together_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_ending: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_home_practice: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_hp_challenges: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx", - }, - w_1on1_hp_highlights: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_hp_highlights", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx", - }, - w_1on1_hp_review: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx", - }, - w_1on1_intro: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_intro_text: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_m_hp_reminder: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_praise: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_relax: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_something_fun: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_w_in_progress: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_w_released: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_w_reminder: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_m_w_tomorrow: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx", - }, - w_1on1_messages: { - flow_type: "template", - flow_name: "w_1on1_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_1on1_question: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_question", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_relax: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_stepper: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_summary: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_talk: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_talk", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_talk_pop: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_talk_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_tools: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_tools_activity: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_1on1_welcome_individual: { - flow_type: "template", - module: "1on1", - flow_name: "w_1on1_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_1on1.xlsx", - }, - w_celebrate_care_together: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_ending: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_intro: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_intro_text: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_reflect_individual: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_reflect_together: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_relax: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_stepper: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_summary: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_survey_activity: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_survey_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_talk_1: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_talk_2: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_think: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_think", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_think_text: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_think_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_tools: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_tools_activity: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_welcome_individual: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_celebrate_welcome_together: { - flow_type: "template", - module: "celebrate", - flow_name: "w_celebrate_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_celebrate.xlsx", - }, - w_consequence_care_together: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_ending: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_example_1: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_example_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_example_1_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_example_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_example_2: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_example_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_example_3: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_example_3", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_example_3_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_example_3_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_home_practice: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_home_practice_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_home_practice_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_hp_challenges: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx", - }, - w_consequence_hp_review: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx", - }, - w_consequence_intro: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_intro_text: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_learn_1_temp: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_learn_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_learn_2_temp: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_learn_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_m_hp_reminder: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_praise: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_relax: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_something_fun: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_w_in_progress: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_w_released: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_w_reminder: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_m_w_tomorrow: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx", - }, - w_consequence_messages: { - flow_type: "template", - flow_name: "w_consequence_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_consequence_question_1: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_question_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_question_2: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_question_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_read_1_temp: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_read_3_temp: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_read_3_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_reflect_ind: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_reflect_ind", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_reflect_together: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_relax: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_stepper: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_summary: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_talk_1: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_talk_1_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_talk_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_talk_2: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_talk_3: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_talk_3", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_talk_3_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_talk_3_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_tools: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_tools_activity: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_try: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_try", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_try_pop: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_try_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_welcome_ind: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_welcome_ind", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_consequence_welcome_together: { - flow_type: "template", - module: "consequence", - flow_name: "w_consequence_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_consequence.xlsx", - }, - w_crisis_care_together: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_ending: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_home_practice: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_hp_challenges: { - flow_type: "template", - module: "solve", - flow_name: "w_crisis_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx", - }, - w_crisis_hp_review: { - flow_type: "template", - module: "solve", - flow_name: "w_crisis_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx", - }, - w_crisis_intro: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_intro_text: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_learn_temp: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_learn_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_m_hp_reminder: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_praise: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_relax: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_something_fun: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_w_in_progress: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_w_released: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_w_reminder: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_m_w_tomorrow: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx", - }, - w_crisis_messages: { - flow_type: "template", - flow_name: "w_crisis_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_crisis_question_1: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_question_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_question_2: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_question_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_read_1_temp: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_read_2_temp: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_reflect_individual: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_reflect_together: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_relax: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_stepper: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_summary: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_talk_1: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_talk_1_pop: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_talk_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_talk_2: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_tools: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_tools_activity: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_welcome_individual: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_crisis_welcome_together: { - flow_type: "template", - module: "crisis", - flow_name: "w_crisis_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_crisis.xlsx", - }, - w_instruct_care_together: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_ending: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_home_practice: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_hp_box_1: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_hp_box_1", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx", - }, - w_instruct_hp_box_2: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_hp_box_2", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx", - }, - w_instruct_hp_challenges: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx", - }, - w_instruct_hp_highlights: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_hp_highlights", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx", - }, - w_instruct_hp_review: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx", - }, - w_instruct_intro: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_intro_text: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_m_hp_reminder: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_praise: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_relax: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_something_fun: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_w_in_progress: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_w_released: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_w_reminder: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_m_w_tomorrow: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx", - }, - w_instruct_messages: { - flow_type: "template", - flow_name: "w_instruct_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_instruct_question_1: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_question_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_question_2: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_question_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_read_1_temp: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_read_2_temp: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_reflect_individual: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_reflect_together: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_relax: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_stepper: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_summary: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_talk_1: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_talk_1_pop: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_talk_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_talk_2: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_talk_2_pop: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_talk_2_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_think_1_temp: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_think_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_tools: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_tools_activity: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_try: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_try", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_try_pop: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_try_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_welcome_individual: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_instruct_welcome_together: { - flow_type: "template", - module: "instruct", - flow_name: "w_instruct_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_instruct.xlsx", - }, - w_money_care_together: { - flow_type: "template", - module: "money", - flow_name: "w_money_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_ending: { - flow_type: "template", - module: "money", - flow_name: "w_money_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_home_practice: { - flow_type: "template", - module: "money", - flow_name: "w_money_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_hp_challenges: { - flow_type: "template", - module: "money", - flow_name: "w_money_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx", - }, - w_money_hp_review: { - flow_type: "template", - module: "money", - flow_name: "w_money_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx", - }, - w_money_intro: { - flow_type: "template", - module: "money", - flow_name: "w_money_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_intro_text: { - flow_type: "template", - module: "money", - flow_name: "w_money_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_1_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_2_pop: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_2_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_2_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_3_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_3_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_4_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_4_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_learn_5_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_learn_5_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_m_hp_reminder: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_praise: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_relax: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_something_fun: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_w_in_progress: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_w_released: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_w_reminder: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_m_w_tomorrow: { - flow_type: "template", - module: "money", - flow_name: "w_money_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx", - }, - w_money_messages: { - flow_type: "template", - flow_name: "w_money_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_money_read_1_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_read_2_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_read_3_temp: { - flow_type: "template", - module: "money", - flow_name: "w_money_read_3_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_reflect_individual: { - flow_type: "template", - module: "money", - flow_name: "w_money_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_reflect_together: { - flow_type: "template", - module: "money", - flow_name: "w_money_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_relax: { - flow_type: "template", - module: "money", - flow_name: "w_money_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_stepper: { - flow_type: "template", - module: "money", - flow_name: "w_money_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_summary: { - flow_type: "template", - module: "money", - flow_name: "w_money_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tools: { - flow_type: "template", - module: "money", - flow_name: "w_money_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tools_activity: { - flow_type: "template", - module: "money", - flow_name: "w_money_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_1: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_1_pop: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_2: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_2_pop: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_2_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_3: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_3", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_tq_3_pop: { - flow_type: "template", - module: "money", - flow_name: "w_money_tq_3_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_welcome_individual: { - flow_type: "template", - module: "money", - flow_name: "w_money_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_money_welcome_together: { - flow_type: "template", - module: "money", - flow_name: "w_money_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_money.xlsx", - }, - w_praise_care_together: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_ending: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_home_practice: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_hp_content: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_hp_content", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx", - }, - w_praise_hp_review: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx", - }, - w_praise_intro: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_intro_text: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_m_hp_reminder: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_praise: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_relax: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_something_fun: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_w_in_progress: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_w_released: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_w_reminder: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_m_w_tomorrow: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx", - }, - w_praise_messages: { - flow_type: "template", - flow_name: "w_praise_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_praise_question_1: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_question_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_question_2: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_question_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_read_temp: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_read_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_reflect_individual: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_reflect_together: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_relax: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_stepper: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_summary: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_talk_1: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_talk_2: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_talk_2_pop: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_talk_2_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_tools: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_tools_activity: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_try: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_try", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_try_pop: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_try_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_welcome_individual: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_praise_welcome_together: { - flow_type: "template", - module: "praise", - flow_name: "w_praise_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_praise.xlsx", - }, - w_rules_care_together: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_ending: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_home_practice: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_hp_challenges: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx", - }, - w_rules_hp_review: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx", - }, - w_rules_intro: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_intro_text: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_learn_temp: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_learn_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_m_hp_reminder: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_praise: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_relax: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_something_fun: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_w_in_progress: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_w_released: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_w_reminder: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_m_w_tomorrow: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx", - }, - w_rules_messages: { - flow_type: "template", - flow_name: "w_rules_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_rules_question: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_question", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_read_1_temp: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_read_2_temp: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_reflect_individual: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_reflect_together: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_relax: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_stepper: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_summary: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_talk: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_talk", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_talk_pop_1: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_talk_pop_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_talk_pop_2: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_talk_pop_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_tools: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_tools_activity: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_try: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_try", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_try_pop: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_try_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_welcome_individual: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_rules_welcome_together: { - flow_type: "template", - module: "rules", - flow_name: "w_rules_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_rules.xlsx", - }, - w_safe_care_together: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_ending: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_home_practice: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_hp_challenges: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx", - }, - w_safe_hp_review: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx", - }, - w_safe_intro: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_intro_text: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_learn_individual_steps: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_learn_individual_steps", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_learn_individual_temp: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_learn_individual_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_learn_together_temp: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_learn_together_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_m_hp_reminder: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_praise: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_relax: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_something_fun: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_w_in_progress: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_w_released: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_w_reminder: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_m_w_tomorrow: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx", - }, - w_safe_messages: { - flow_type: "template", - flow_name: "w_safe_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_safe_question_1: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_question_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_question_2: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_question_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_read_1_temp: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_read_2_temp: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_reflect_individual: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_reflect_together: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_relax: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_stepper: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_summary: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_talk_1: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_talk_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_talk_1_pop: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_talk_1_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_talk_2: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_talk_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_talk_2_pop: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_talk_2_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_tools: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_tools_activity: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_welcome_individual: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_safe_welcome_together: { - flow_type: "template", - module: "safe", - flow_name: "w_safe_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_safe.xlsx", - }, - w_self_care_ending: { - flow_type: "template", - flow_name: "w_self_care_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_home_practice: { - flow_type: "template", - flow_name: "w_self_care_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_intro: { - flow_type: "template", - flow_name: "w_self_care_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_intro_text: { - flow_type: "template", - flow_name: "w_self_care_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_m_hp_reminder: { - flow_type: "template", - module: "self_care", - flow_name: "w_self_care_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx", - }, - w_self_care_m_relax: { - flow_type: "template", - module: "self_care", - flow_name: "w_self_care_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx", - }, - w_self_care_m_w_tomorrow: { - flow_type: "template", - module: "self_care", - flow_name: "w_self_care_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx", - }, - w_self_care_messages: { - flow_type: "template", - flow_name: "w_self_care_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_self_care_recognise: { - flow_type: "template", - flow_name: "w_self_care_recognise", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_recognise_pop: { - flow_type: "template", - flow_name: "w_self_care_recognise_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_relax: { - flow_type: "template", - flow_name: "w_self_care_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_reward: { - flow_type: "template", - flow_name: "w_self_care_reward", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_reward_pop: { - flow_type: "template", - flow_name: "w_self_care_reward_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_stepper: { - flow_type: "template", - flow_name: "w_self_care_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_summary: { - flow_type: "template", - flow_name: "w_self_care_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_survey_activity: { - flow_type: "template", - flow_name: "w_self_care_survey_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_tools: { - flow_type: "template", - flow_name: "w_self_care_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_tools_activity: { - flow_type: "template", - flow_name: "w_self_care_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_self_care_welcome_individual: { - flow_type: "template", - flow_name: "w_self_care_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_self_care.xlsx", - }, - w_solve_care_together: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_ending: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_home_practice: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_home_practice_pop: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_home_practice_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_hp_challenges: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx", - }, - w_solve_hp_review: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx", - }, - w_solve_intro: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_intro_text: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_learn_temp: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_learn_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_m_hp_reminder: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_praise: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_relax: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_something_fun: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_w_in_progress: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_w_released: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_w_reminder: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_m_w_tomorrow: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx", - }, - w_solve_messages: { - flow_type: "template", - flow_name: "w_solve_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_solve_read_1_temp: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_read_2_temp: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_reflect_individual: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_reflect_together: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_relax: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_solution_1: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_solution_1", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_solution_2: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_solution_2", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_solution_3: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_solution_3", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_stepper: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_summary: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_talk: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_talk", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_think: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_think", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_tools: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_tools_activity: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_try: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_try", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_welcome_individual: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_solve_welcome_together: { - flow_type: "template", - module: "solve", - flow_name: "w_solve_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_solve.xlsx", - }, - w_stress_care_together: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_care_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_ending: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_ending", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_home_practice: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_home_practice", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_hp_challenges: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_hp_challenges", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx", - }, - w_stress_hp_review: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_hp_review", - _xlsxPath: "global/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx", - }, - w_stress_intro: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_intro", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_intro_text: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_intro_text", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_m_hp_reminder: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_hp_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_praise: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_praise", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_relax: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_relax", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_something_fun: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_something_fun", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_w_in_progress: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_w_in_progress", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_w_released: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_w_released", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_w_reminder: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_w_reminder", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_m_w_tomorrow: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_m_w_tomorrow", - _xlsxPath: "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx", - }, - w_stress_messages: { - flow_type: "template", - flow_name: "w_stress_messages", - _xlsxPath: "global/in_week_messages/message_navigation.xlsx", - }, - w_stress_question: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_question", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_read_1_temp: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_read_1_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_read_2_temp: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_read_2_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_read_3_temp: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_read_3_temp", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_reflect_individual: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_reflect_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_reflect_together: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_reflect_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_relax: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_relax", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_stepper: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_stepper", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_summary: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_summary", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_talk: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_talk", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_talk_pop: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_talk_pop", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_tools: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_tools", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_tools_activity: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_tools_activity", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_welcome_individual: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_welcome_individual", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - w_stress_welcome_together: { - flow_type: "template", - module: "stress", - flow_name: "w_stress_welcome_together", - _xlsxPath: "global/top_templates/workshop_templates/workshop_stress.xlsx", - }, - watch: { - flow_type: "template", - flow_name: "watch", - _xlsxPath: "global/mode_templates/welcome.xlsx", - }, - weekly_workshops: { - flow_type: "template", - flow_name: "weekly_workshops", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - welcome_individual: { - flow_type: "template", - flow_name: "welcome_individual", - _xlsxPath: "global/mode_templates/welcome.xlsx", - }, - welcome_together: { - flow_type: "template", - flow_name: "welcome_together", - _xlsxPath: "global/mode_templates/welcome.xlsx", - }, - workshop_accordion_item: { - flow_type: "template", - flow_name: "workshop_accordion_item", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - workshop_accordion_item_locked: { - flow_type: "template", - flow_name: "workshop_accordion_item_locked", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - workshop_activity: { - flow_type: "template", - flow_name: "workshop_activity", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - workshop_completed_calc: { - flow_type: "template", - flow_name: "workshop_completed_calc", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - workshop_options_page: { - flow_type: "template", - flow_name: "workshop_options_page", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - workshop_setup_intro: { - flow_type: "template", - flow_name: "workshop_setup_intro", - _xlsxPath: "global/top_templates/survey_templates/workshop_setup.xlsx", - }, - workshop_setup_q_1: { - flow_type: "template", - flow_name: "workshop_setup_q_1", - _xlsxPath: "global/top_templates/survey_templates/workshop_setup.xlsx", - }, - workshop_setup_q_2: { - flow_type: "template", - flow_name: "workshop_setup_q_2", - _xlsxPath: "global/top_templates/survey_templates/workshop_setup.xlsx", - }, - workshop_setup_q_3: { - flow_type: "template", - flow_name: "workshop_setup_q_3", - _xlsxPath: "global/top_templates/survey_templates/workshop_setup.xlsx", - }, - workshop_setup_stepper: { - flow_type: "template", - flow_name: "workshop_setup_stepper", - _xlsxPath: "global/top_templates/survey_templates/workshop_setup.xlsx", - }, - workshop_stepper: { - flow_type: "template", - flow_name: "workshop_stepper", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - workshop_stepper_actions: { - flow_type: "template", - flow_name: "workshop_stepper_actions", - _xlsxPath: "global/core_templates/core_templates_workshops.xlsx", - }, - workshop_unlock: { - flow_type: "template", - flow_name: "workshop_unlock", - _xlsxPath: "global/core_templates/core_templates_navigation.xlsx", - }, - }, - tour: { - debug_tour: { - flow_type: "tour", - flow_name: "debug_tour", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_tour.xlsx", - }, - debug_tour_var_hyphen: { - flow_type: "tour", - flow_name: "debug_tour_var_hyphen", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_global.xlsx", - }, - example_lang_tour: { - flow_type: "tour", - flow_name: "example_lang_tour", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/example_templates/example_languages.xlsx", - }, - example_tour_templates: { - flow_type: "tour", - flow_name: "example_tour_templates", - flow_subtype: "debug", - _xlsxPath: "quality_assurance/debug_templates/debug_tour.xlsx", - }, - demo_essential_tools_tour: { - flow_type: "tour", - flow_name: "demo_essential_tools_tour", - _xlsxPath: "global/demo_templates/demo_navigation.xlsx", - }, - intro_tour: { - flow_type: "tour", - flow_name: "intro_tour", - _xlsxPath: "global/tutorials/home_screen_tour.xlsx", - }, - weekly_workshop_options_tour: { - flow_type: "tour", - flow_name: "weekly_workshop_options_tour", - _xlsxPath: "global/tutorials/weekly_workshops_tour.xlsx", - }, - }, -}; diff --git a/packages/app-data/sheets/template/accept_terms.json b/packages/app-data/sheets/template/accept_terms.json index dd46c1a77d..3fbac07379 100644 --- a/packages/app-data/sheets/template/accept_terms.json +++ b/packages/app-data/sheets/template/accept_terms.json @@ -11,50 +11,51 @@ "value": {} }, "style_list": [ - "max-height: 150px" + "max-height: 100px" ], "_nested_name": "image" }, { "type": "text", "name": "text_1", - "value": "By pressing @global.continue_button, you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.", + "value": "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, - "exclude_from_translation": true, "_nested_name": "text_1", "_dynamicFields": { "value": [ { - "fullExpression": "By pressing @global.continue_button, you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.", - "matchedExpression": "@global.continue_button", - "type": "global", - "fieldName": "continue_button" - }, - { - "fullExpression": "By pressing @global.continue_button, you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.", + "fullExpression": "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.", "matchedExpression": "@global.terms_and_conditions", "type": "global", "fieldName": "terms_and_conditions" }, { - "fullExpression": "By pressing @global.continue_button, you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.", + "fullExpression": "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.", "matchedExpression": "@global.privacy_policy", "type": "global", "fieldName": "privacy_policy" + }, + { + "fullExpression": "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" } ] }, "_dynamicDependencies": { - "@global.continue_button": [ - "value" - ], "@global.terms_and_conditions": [ "value" ], "@global.privacy_policy": [ "value" + ], + "@global.parent_app": [ + "value" ] } }, @@ -133,14 +134,136 @@ "name": "text_2", "value": "These policies are still under construction. We value advice and input to improve them.", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, - "exclude_from_translation": true, "_nested_name": "text_2" }, + { + "name": "consent_text", + "value": "I consent to the commitments stated above.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "consent_text" + }, + { + "type": "display_group", + "name": "dg_checkbox", + "rows": [ + { + "type": "simple_checkbox", + "name": "checkbox", + "parameter_list": { + "align": "left" + }, + "_nested_name": "dg_checkbox.checkbox" + }, + { + "type": "text", + "name": "text", + "value": "@local.consent_text", + "_translations": { + "value": {} + }, + "parameter_list": { + "style": "emphasised" + }, + "style_list": [ + "flex:1" + ], + "_nested_name": "dg_checkbox.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.consent_text", + "matchedExpression": "@local.consent_text", + "type": "local", + "fieldName": "consent_text" + } + ] + }, + "_dynamicDependencies": { + "@local.consent_text": [ + "value" + ] + } + } + ], + "_nested_name": "dg_checkbox" + }, + { + "type": "template", + "name": "nav_buttons_no_consent", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "pop_up", + "args": [ + "accept_terms_warning" + ], + "_raw": "completed | pop_up: accept_terms_warning", + "_cleaned": "completed | pop_up: accept_terms_warning" + } + ], + "condition": "!@local.checkbox", + "rows": [ + { + "name": "display_back", + "value": false, + "type": "set_variable", + "_nested_name": "nav_buttons_no_consent.display_back" + }, + { + "name": "button_completed", + "value": "@global.continue_button", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "nav_buttons_no_consent.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.continue_button", + "matchedExpression": "@global.continue_button", + "type": "global", + "fieldName": "continue_button" + } + ] + }, + "_dynamicDependencies": { + "@global.continue_button": [ + "value" + ] + } + } + ], + "_nested_name": "nav_buttons_no_consent", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@local.checkbox", + "matchedExpression": "!@local.checkbox", + "type": "local", + "fieldName": "checkbox" + } + ] + }, + "_dynamicDependencies": { + "!@local.checkbox": [ + "condition" + ] + } + }, { "type": "template", - "name": "nav_buttons", + "name": "nav_buttons_consent", "value": "nav_buttons", "action_list": [ { @@ -152,6 +275,16 @@ "_raw": "completed | emit:completed", "_cleaned": "completed | emit:completed" }, + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "terms_v20230301_accepted", + true + ], + "_raw": "completed | set_field: terms_v20230301_accepted: true", + "_cleaned": "completed | set_field: terms_v20230301_accepted: true" + }, { "trigger": "uncompleted", "action_id": "emit", @@ -162,12 +295,13 @@ "_cleaned": "uncompleted | emit:uncompleted" } ], + "condition": "@local.checkbox", "rows": [ { "name": "display_back", "value": false, "type": "set_variable", - "_nested_name": "nav_buttons.display_back" + "_nested_name": "nav_buttons_consent.display_back" }, { "name": "button_completed", @@ -176,7 +310,7 @@ "value": {} }, "type": "set_variable", - "_nested_name": "nav_buttons.button_completed", + "_nested_name": "nav_buttons_consent.button_completed", "_dynamicFields": { "value": [ { @@ -194,8 +328,23 @@ } } ], - "_nested_name": "nav_buttons" + "_nested_name": "nav_buttons_consent", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.checkbox", + "matchedExpression": "@local.checkbox", + "type": "local", + "fieldName": "checkbox" + } + ] + }, + "_dynamicDependencies": { + "@local.checkbox": [ + "condition" + ] + } } ], - "_xlsxPath": "global/core_templates/core_templates_app_first_launch.xlsx" + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/accept_terms_warning.json b/packages/app-data/sheets/template/accept_terms_warning.json new file mode 100644 index 0000000000..dc80b727f6 --- /dev/null +++ b/packages/app-data/sheets/template/accept_terms_warning.json @@ -0,0 +1,19 @@ +{ + "flow_type": "template", + "flow_name": "accept_terms_warning", + "status": "released", + "rows": [ + { + "type": "text", + "name": "text", + "value": "You can only move on and access the app if you provide your consent.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text" + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/activity_housework.json b/packages/app-data/sheets/template/activity_housework.json index 3d3a0829a3..b81620b617 100644 --- a/packages/app-data/sheets/template/activity_housework.json +++ b/packages/app-data/sheets/template/activity_housework.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "value": "Take turns being the “leader”. Say the intro sentences to get everybody started. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_interrupter.json b/packages/app-data/sheets/template/activity_interrupter.json index d0f48ea29a..bad5e9640c 100644 --- a/packages/app-data/sheets/template/activity_interrupter.json +++ b/packages/app-data/sheets/template/activity_interrupter.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "value": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* The storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_invent_story.json b/packages/app-data/sheets/template/activity_invent_story.json index c80a8be954..07d9e048a5 100644 --- a/packages/app-data/sheets/template/activity_invent_story.json +++ b/packages/app-data/sheets/template/activity_invent_story.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "value": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what their favourite part of the story was!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_memory_game.json b/packages/app-data/sheets/template/activity_memory_game.json index 426d579ff4..dfa9be28e3 100644 --- a/packages/app-data/sheets/template/activity_memory_game.json +++ b/packages/app-data/sheets/template/activity_memory_game.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "value": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”.\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_mirror.json b/packages/app-data/sheets/template/activity_mirror.json index d3ef8be012..707e390eb3 100644 --- a/packages/app-data/sheets/template/activity_mirror.json +++ b/packages/app-data/sheets/template/activity_mirror.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "value": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts. Move them up in the air or close to the ground.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_relax_14.json b/packages/app-data/sheets/template/activity_relax_14.json index bfbca01730..06d76c98c7 100644 --- a/packages/app-data/sheets/template/activity_relax_14.json +++ b/packages/app-data/sheets/template/activity_relax_14.json @@ -30,7 +30,7 @@ "rows": [ { "name": "relax_data", - "value": "@data.relax.relax_15", + "value": "@data.relax.relax_14", "_translations": { "value": {} }, @@ -39,15 +39,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@data.relax.relax_15", - "matchedExpression": "@data.relax.relax_15", + "fullExpression": "@data.relax.relax_14", + "matchedExpression": "@data.relax.relax_14", "type": "data", "fieldName": "relax" } ] }, "_dynamicDependencies": { - "@data.relax.relax_15": [ + "@data.relax.relax_14": [ "value" ] } diff --git a/packages/app-data/sheets/template/activity_whats_new.json b/packages/app-data/sheets/template/activity_whats_new.json index 20c27495d2..fdc8e5df27 100644 --- a/packages/app-data/sheets/template/activity_whats_new.json +++ b/packages/app-data/sheets/template/activity_whats_new.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "value": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or on your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/activity_yes_no_maybe.json b/packages/app-data/sheets/template/activity_yes_no_maybe.json index c8d950f1b0..0908ad6be4 100644 --- a/packages/app-data/sheets/template/activity_yes_no_maybe.json +++ b/packages/app-data/sheets/template/activity_yes_no_maybe.json @@ -45,16 +45,9 @@ }, { "name": "activity_text", - "value": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "value": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “yes”, “no” or “maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "lib_act_something_fun.activity_text" diff --git a/packages/app-data/sheets/template/app_menu.json b/packages/app-data/sheets/template/app_menu.json index 029803c995..b19498dd68 100644 --- a/packages/app-data/sheets/template/app_menu.json +++ b/packages/app-data/sheets/template/app_menu.json @@ -6,10 +6,6 @@ { "type": "debug_toggle", "name": "debug_toggle_bar", - "value": "The debug toggle bar would go here", - "_translations": { - "value": {} - }, "condition": "!@fields.user_mode", "exclude_from_translation": true, "_nested_name": "debug_toggle_bar", @@ -54,9 +50,6 @@ "_cleaned": "click | go_to:/home" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_1" }, { @@ -84,9 +77,6 @@ "_cleaned": "click | go_to:app_menu_plh" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_2", "_dynamicFields": { "value": [ @@ -129,9 +119,6 @@ "_cleaned": "click | go_to:app_menu_settings" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_3" }, { @@ -160,9 +147,6 @@ } ], "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_4", "_dynamicFields": { "condition": [ @@ -183,15 +167,13 @@ { "type": "button", "name": "button_5", - "value": "Tour", + "value": "How to use @global.parent_app", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, "action_list": [ @@ -199,29 +181,89 @@ "trigger": "click", "action_id": "start_tour", "args": [ - "intro_tour" + "home_screen_tour_menu" ], - "_raw": "click | start_tour:intro_tour", - "_cleaned": "click | start_tour:intro_tour" + "_raw": "click | start_tour:home_screen_tour_menu", + "_cleaned": "click | start_tour:home_screen_tour_menu" } ], - "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" + "condition": "@fields._app_skin == \"weekly_workshop\"", + "_nested_name": "button_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "How to use @global.parent_app", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ], + "condition": [ + { + "fullExpression": "@fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" + } + ] }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ], + "@fields._app_skin": [ + "condition" + ] + } + }, + { + "type": "button", + "name": "button_5", + "value": "How to use @global.parent_app", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "start_tour", + "args": [ + "home_screen_modular_tour_menu" + ], + "_raw": "click | start_tour:home_screen_modular_tour_menu", + "_cleaned": "click | start_tour:home_screen_modular_tour_menu" + } + ], + "condition": "@fields._app_skin == \"modular\"", "_nested_name": "button_5", "_dynamicFields": { + "value": [ + { + "fullExpression": "How to use @global.parent_app", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ], "condition": [ { - "fullExpression": "!@fields.user_mode", - "matchedExpression": "!@fields.user_mode", + "fullExpression": "@fields._app_skin == \"modular\"", + "matchedExpression": "@fields._app_skin", "type": "fields", - "fieldName": "user_mode" + "fieldName": "_app_skin" } ] }, "_dynamicDependencies": { - "!@fields.user_mode": [ + "@global.parent_app": [ + "value" + ], + "@fields._app_skin": [ "condition" ] } @@ -251,24 +293,30 @@ "_cleaned": "click | go_to:message_navigation" } ], - "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, + "condition": "!@fields.user_mode && @fields._app_skin == \"weekly_workshop\"", "_nested_name": "button_6", "_dynamicFields": { "condition": [ { - "fullExpression": "!@fields.user_mode", + "fullExpression": "!@fields.user_mode && @fields._app_skin == \"weekly_workshop\"", "matchedExpression": "!@fields.user_mode", "type": "fields", "fieldName": "user_mode" + }, + { + "fullExpression": "!@fields.user_mode && @fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" } ] }, "_dynamicDependencies": { "!@fields.user_mode": [ "condition" + ], + "@fields._app_skin": [ + "condition" ] } }, @@ -298,9 +346,6 @@ } ], "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_7", "_dynamicFields": { "condition": [ @@ -344,9 +389,6 @@ } ], "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_notifications", "_dynamicFields": { "condition": [ @@ -382,9 +424,6 @@ "_cleaned": "click | go_to:app_menu_privacy_policy" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_8", "_dynamicFields": { "value": [ @@ -420,9 +459,6 @@ "_cleaned": "click | go_to:app_menu_terms" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_9", "_dynamicFields": { "value": [ diff --git a/packages/app-data/sheets/template/app_menu_enter_dev_mode.json b/packages/app-data/sheets/template/app_menu_enter_dev_mode.json index f7a88dd6f9..2bf1689bbc 100644 --- a/packages/app-data/sheets/template/app_menu_enter_dev_mode.json +++ b/packages/app-data/sheets/template/app_menu_enter_dev_mode.json @@ -39,9 +39,10 @@ "name": "title", "value": "Entering Developer Mode", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, - "exclude_from_translation": true, "_nested_name": "title" }, { @@ -49,9 +50,10 @@ "name": "text_1", "value": "To launch the app in developer mode, enter your developer code in the box below and press @global.submit_button.", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, - "exclude_from_translation": true, "_nested_name": "text_1", "_dynamicFields": { "value": [ @@ -114,7 +116,7 @@ "_cleaned": "click | set_local:reply_entered:true" } ], - "hidden": "@local.text_box == @global.dev_mode_code", + "hidden": "@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code", "exclude_from_translation": true, "_nested_name": "button_incorrect_code", "_dynamicFields": { @@ -128,16 +130,28 @@ ], "hidden": [ { - "fullExpression": "@local.text_box == @global.dev_mode_code", + "fullExpression": "@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code", "matchedExpression": "@local.text_box", "type": "local", "fieldName": "text_box" }, { - "fullExpression": "@local.text_box == @global.dev_mode_code", + "fullExpression": "@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code", "matchedExpression": "@global.dev_mode_code", "type": "global", "fieldName": "dev_mode_code" + }, + { + "fullExpression": "@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code", + "matchedExpression": "@global.test_mode_code", + "type": "global", + "fieldName": "test_mode_code" } ] }, @@ -146,10 +160,14 @@ "value" ], "@local.text_box": [ + "hidden", "hidden" ], "@global.dev_mode_code": [ "hidden" + ], + "@global.test_mode_code": [ + "hidden" ] } }, @@ -191,7 +209,7 @@ "_cleaned": "click | emit:force_restart" } ], - "hidden": "@local.text_box != @global.dev_mode_code", + "hidden": "!(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", "exclude_from_translation": true, "_nested_name": "button_correct_code", "_dynamicFields": { @@ -205,16 +223,28 @@ ], "hidden": [ { - "fullExpression": "@local.text_box != @global.dev_mode_code", + "fullExpression": "!(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", "matchedExpression": "@local.text_box", "type": "local", "fieldName": "text_box" }, { - "fullExpression": "@local.text_box != @global.dev_mode_code", + "fullExpression": "!(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", "matchedExpression": "@global.dev_mode_code", "type": "global", "fieldName": "dev_mode_code" + }, + { + "fullExpression": "!(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "!(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@global.test_mode_code", + "type": "global", + "fieldName": "test_mode_code" } ] }, @@ -223,10 +253,14 @@ "value" ], "@local.text_box": [ + "hidden", "hidden" ], "@global.dev_mode_code": [ "hidden" + ], + "@global.test_mode_code": [ + "hidden" ] } }, diff --git a/packages/app-data/sheets/template/app_menu_exit_dev_mode.json b/packages/app-data/sheets/template/app_menu_exit_dev_mode.json index 21e44bc7aa..1c300fe778 100644 --- a/packages/app-data/sheets/template/app_menu_exit_dev_mode.json +++ b/packages/app-data/sheets/template/app_menu_exit_dev_mode.json @@ -51,33 +51,8 @@ "_cleaned": "click | emit:force_restart" } ], - "hidden": "@local.text_box == @global.dev_mode_code", "exclude_from_translation": true, - "_nested_name": "button_incorrect_code", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.text_box == @global.dev_mode_code", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - }, - { - "fullExpression": "@local.text_box == @global.dev_mode_code", - "matchedExpression": "@global.dev_mode_code", - "type": "global", - "fieldName": "dev_mode_code" - } - ] - }, - "_dynamicDependencies": { - "@local.text_box": [ - "hidden" - ], - "@global.dev_mode_code": [ - "hidden" - ] - } + "_nested_name": "button_incorrect_code" }, { "type": "display_group", diff --git a/packages/app-data/sheets/template/app_menu_privacy_policy.json b/packages/app-data/sheets/template/app_menu_privacy_policy.json deleted file mode 100644 index 1310fc4890..0000000000 --- a/packages/app-data/sheets/template/app_menu_privacy_policy.json +++ /dev/null @@ -1,478 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "app_menu_privacy_policy", - "status": "released", - "rows": [ - { - "name": "link_1_text", - "value": "Google Play Services", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_1_text" - }, - { - "name": "link_2_text", - "value": "Google Analytics for Firebase", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_2_text" - }, - { - "name": "link_3_text", - "value": "Sentry", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_3_text" - }, - { - "type": "title", - "name": "title_1", - "value": "@global.privacy_policy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.privacy_policy", - "matchedExpression": "@global.privacy_policy", - "type": "global", - "fieldName": "privacy_policy" - } - ] - }, - "_dynamicDependencies": { - "@global.privacy_policy": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "IDEMS International built the international.idems.plh_teens app as a Free app. This SERVICE is provided by IDEMS International at no cost and is intended for use as is.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "This page is used to inform visitors regarding our policies with the collection, use, and disclosure of Personal Information if anyone decided to use our Service.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "text_3", - "value": "If you choose to use our Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that we collect is used for providing and improving the Service. We will not use or share your information with anyone except as described in this Privacy Policy.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at international.idems.plh_teens unless otherwise defined in this Privacy Policy.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "title", - "name": "title_2", - "value": "Information Collection and Use", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_5", - "value": "For a better experience, while using our Service, we may require you to provide us with certain personally identifiable information. The information that we request will be retained by us and used as described in this privacy policy.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - }, - { - "type": "text", - "name": "text_6", - "value": "The app does use third party services that may collect information used to identify you.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6" - }, - { - "type": "text", - "name": "text_7", - "value": "Link to privacy policy of third party service providers used by the app", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7" - }, - { - "type": "tile_component", - "name": "link_1", - "value": "tile_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//policies.google.com/terms" - ], - "_raw": "click | go_to_url:https://policies.google.com/terms", - "_cleaned": "click | go_to_url:https://policies.google.com/terms" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_1_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_1_text", - "matchedExpression": "@local.link_1_text", - "type": "local", - "fieldName": "link_1_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_1_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "tile_component", - "name": "link_2", - "value": "tile_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//firebase.google.com/terms/analytics" - ], - "_raw": "click | go_to_url:https://firebase.google.com/terms/analytics", - "_cleaned": "click | go_to_url:https://firebase.google.com/terms/analytics" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_2_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_2_text", - "matchedExpression": "@local.link_2_text", - "type": "local", - "fieldName": "link_2_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_2_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "tile_component", - "name": "link_3", - "value": "tile_3", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//sentry.io/terms/" - ], - "_raw": "click | go_to_url:https://sentry.io/terms/", - "_cleaned": "click | go_to_url:https://sentry.io/terms/" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_3_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_3", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_3_text", - "matchedExpression": "@local.link_3_text", - "type": "local", - "fieldName": "link_3_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_3_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "title", - "name": "title_3", - "value": "Log Data", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "text", - "name": "text_8", - "value": "We want to inform you that whenever you use our Service, in a case of an error in the app we collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our Service, the time and date of your use of the Service, and other statistics.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8" - }, - { - "type": "title", - "name": "title_4", - "value": "Cookies", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_4" - }, - { - "type": "text", - "name": "text_9", - "value": "Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_9" - }, - { - "type": "text", - "name": "text_10", - "value": "This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_10" - }, - { - "type": "title", - "name": "title_5", - "value": "Service Providers", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_5" - }, - { - "type": "text", - "name": "text_11", - "value": "We may employ third-party companies and individuals due to the following reasons:\n1. To facilitate our Service\n2. To provide the Service on our behalf\n3. To perform Service-related services; or\n4. To assist us in analyzing how our Service is used.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11" - }, - { - "type": "text", - "name": "text_12", - "value": "We want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_12" - }, - { - "type": "title", - "name": "title_6", - "value": "Security", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_6" - }, - { - "type": "text", - "name": "text_13", - "value": "We value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_13" - }, - { - "type": "title", - "name": "title_7", - "value": "Links to Other Sites", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_7" - }, - { - "type": "text", - "name": "text_14", - "value": "This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by us. Therefore, we strongly advise you to review the Privacy Policy of these websites. We have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_14" - }, - { - "type": "title", - "name": "title_8", - "value": "Children’s Privacy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_8" - }, - { - "type": "text", - "name": "text_15", - "value": "These Services do not address anyone under the age of 13. We do not knowingly collect personally identifiable information from children under 13. In the case we discover that a child under 13 has provided us with personal information, we immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact us so that we will be able to do necessary actions.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_15" - }, - { - "type": "title", - "name": "title_9", - "value": "Changes to This Privacy Policy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_9" - }, - { - "type": "text", - "name": "text_16", - "value": "We may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Privacy Policy on this page.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_16" - }, - { - "type": "text", - "name": "text_17", - "value": "This policy is effective as of 2020-09-16", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_17" - }, - { - "type": "title", - "name": "title_10", - "value": "Contact Us", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_10" - }, - { - "type": "text", - "name": "text_18", - "value": "If you have any questions or suggestions about our Privacy Policy, do not hesitate to contact us at apps@idems.international.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_18" - }, - { - "type": "text", - "name": "text_19", - "value": "This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_19" - } - ], - "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/app_menu_settings.json b/packages/app-data/sheets/template/app_menu_settings.json index 780127744c..c95be9fc58 100644 --- a/packages/app-data/sheets/template/app_menu_settings.json +++ b/packages/app-data/sheets/template/app_menu_settings.json @@ -6,76 +6,79 @@ { "type": "button", "name": "button_1", - "value": "Open Survey", + "value": "@global.language", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "action_list": [ { "trigger": "click", "action_id": "go_to", "args": [ - "setup_and_survey_stepper" + "language_select" ], - "_raw": "click | go_to:setup_and_survey_stepper", - "_cleaned": "click | go_to:setup_and_survey_stepper" + "_raw": "click | go_to: language_select", + "_cleaned": "click | go_to: language_select" } ], - "parameter_list": { - "text_align": "centre" + "_nested_name": "button_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.language", + "matchedExpression": "@global.language", + "type": "global", + "fieldName": "language" + } + ] }, - "_nested_name": "button_1" + "_dynamicDependencies": { + "@global.language": [ + "value" + ] + } }, { "type": "button", - "name": "language_select", - "value": "Select Language", + "name": "button_1", + "value": "@global.user_info", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "action_list": [ { "trigger": "click", "action_id": "go_to", "args": [ - "language_select" + "user_info" ], - "_raw": "click | go_to:language_select", - "_cleaned": "click | go_to:language_select" + "_raw": "click | go_to: user_info", + "_cleaned": "click | go_to: user_info" } ], - "parameter_list": { - "text_align": "centre" + "_nested_name": "button_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.user_info", + "matchedExpression": "@global.user_info", + "type": "global", + "fieldName": "user_info" + } + ] }, - "_nested_name": "language_select" + "_dynamicDependencies": { + "@global.user_info": [ + "value" + ] + } }, { "type": "button", "name": "button_2", - "value": "Workshop Options", + "value": "@global.weekly_workshop_options", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "action_list": [ { @@ -84,14 +87,38 @@ "args": [ "workshop_options_page" ], - "_raw": "click | go_to:workshop_options_page", - "_cleaned": "click | go_to:workshop_options_page" + "_raw": "click | go_to: workshop_options_page", + "_cleaned": "click | go_to: workshop_options_page" } ], - "parameter_list": { - "text_align": "centre" + "condition": "@fields._app_skin == \"weekly_workshop\"", + "_nested_name": "button_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.weekly_workshop_options", + "matchedExpression": "@global.weekly_workshop_options", + "type": "global", + "fieldName": "weekly_workshop_options" + } + ], + "condition": [ + { + "fullExpression": "@fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" + } + ] }, - "_nested_name": "button_2" + "_dynamicDependencies": { + "@global.weekly_workshop_options": [ + "value" + ], + "@fields._app_skin": [ + "condition" + ] + } }, { "type": "button", @@ -119,9 +146,6 @@ } ], "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_3", "_dynamicFields": { "condition": [ @@ -164,24 +188,30 @@ "_cleaned": "click | pop_up:app_menu_unlock_workshops_pop" } ], - "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, + "condition": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", "_nested_name": "button_4", "_dynamicFields": { "condition": [ { - "fullExpression": "!@fields.user_mode", + "fullExpression": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", "matchedExpression": "!@fields.user_mode", "type": "fields", "fieldName": "user_mode" + }, + { + "fullExpression": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" } ] }, "_dynamicDependencies": { "!@fields.user_mode": [ "condition" + ], + "@fields._app_skin": [ + "condition" ] } }, @@ -206,28 +236,34 @@ "args": [ "demo_navigation" ], - "_raw": "click | go_to:demo_navigation", - "_cleaned": "click | go_to:demo_navigation" + "_raw": "click | go_to: demo_navigation", + "_cleaned": "click | go_to: demo_navigation" } ], - "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, + "condition": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", "_nested_name": "button_5", "_dynamicFields": { "condition": [ { - "fullExpression": "!@fields.user_mode", + "fullExpression": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", "matchedExpression": "!@fields.user_mode", "type": "fields", "fieldName": "user_mode" + }, + { + "fullExpression": "(!@fields.user_mode) && @fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" } ] }, "_dynamicDependencies": { "!@fields.user_mode": [ "condition" + ], + "@fields._app_skin": [ + "condition" ] } }, @@ -245,13 +281,10 @@ "args": [ "user_code" ], - "_raw": "click | go_to:user_code", - "_cleaned": "click | go_to:user_code" + "_raw": "click | go_to: user_code", + "_cleaned": "click | go_to: user_code" } ], - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_7", "_dynamicFields": { "value": [ @@ -290,13 +323,11 @@ "args": [ "organisation_registration" ], - "_raw": "click | go_to:organisation_registration", - "_cleaned": "click | go_to:organisation_registration" + "_raw": "click | go_to: organisation_registration", + "_cleaned": "click | go_to: organisation_registration" } ], - "parameter_list": { - "text_align": "centre" - }, + "condition": false, "_nested_name": "button_6" }, { @@ -320,14 +351,11 @@ "args": [ "app_menu_enter_dev_mode" ], - "_raw": "click | go_to:app_menu_enter_dev_mode", - "_cleaned": "click | go_to:app_menu_enter_dev_mode" + "_raw": "click | go_to: app_menu_enter_dev_mode", + "_cleaned": "click | go_to: app_menu_enter_dev_mode" } ], "condition": "@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_8", "_dynamicFields": { "condition": [ @@ -366,14 +394,11 @@ "args": [ "app_menu_exit_dev_mode" ], - "_raw": "click | go_to:app_menu_exit_dev_mode", - "_cleaned": "click | go_to:app_menu_exit_dev_mode" + "_raw": "click | go_to: app_menu_exit_dev_mode", + "_cleaned": "click | go_to: app_menu_exit_dev_mode" } ], "condition": "!@fields.user_mode", - "parameter_list": { - "text_align": "centre" - }, "_nested_name": "button_9", "_dynamicFields": { "condition": [ @@ -390,6 +415,29 @@ "condition" ] } + }, + { + "type": "button", + "name": "button_10", + "value": "Select Skin", + "_translations": { + "value": { + "tz_sw": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "skin_select" + ], + "_raw": "click | go_to: skin_select", + "_cleaned": "click | go_to: skin_select" + } + ], + "condition": false, + "_nested_name": "button_10" } ], "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" diff --git a/packages/app-data/sheets/template/app_menu_terms.json b/packages/app-data/sheets/template/app_menu_terms.json deleted file mode 100644 index 921ca56992..0000000000 --- a/packages/app-data/sheets/template/app_menu_terms.json +++ /dev/null @@ -1,358 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "app_menu_terms", - "status": "released", - "rows": [ - { - "name": "link_1_text", - "value": "Google Play Services", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_1_text" - }, - { - "name": "link_2_text", - "value": "Google Analytics for Firebase", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_2_text" - }, - { - "name": "link_3_text", - "value": "Sentry", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "link_3_text" - }, - { - "type": "title", - "name": "title_1", - "value": "@global.terms_and_conditions", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.terms_and_conditions", - "matchedExpression": "@global.terms_and_conditions", - "type": "global", - "fieldName": "terms_and_conditions" - } - ] - }, - "_dynamicDependencies": { - "@global.terms_and_conditions": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "By downloading or using the app, these terms will automatically apply to you – you should make sure therefore that you read them carefully before using the app. You’re not allowed to copy, or modify the app, any part of the app, or our trademarks in any way. You’re not allowed to attempt to extract the source code of the app, and you also shouldn’t try to translate the app into other languages, or make derivative versions. The app itself, and all the trade marks, copyright, database rights and other intellectual property rights related to it, still belong to IDEMS International.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "IDEMS International is committed to ensuring that the app is as useful and efficient as possible. For that reason, we reserve the right to make changes to the app or to charge for its services, at any time and for any reason. We will never charge you for the app or its services without making it very clear to you exactly what you’re paying for.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "text_3", - "value": "The international.idems.plh_teens app stores and processes personal data that you have provided to us, in order to provide our Service. It’s your responsibility to keep your phone and access to the app secure. We therefore recommend that you do not jailbreak or root your phone, which is the process of removing software restrictions and limitations imposed by the official operating system of your device. It could make your phone vulnerable to malware/viruses/malicious programs, compromise your phone’s security features and it could mean that the international.idems.plh_teens app won’t work properly or at all.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "The app does use third party services that declare their own Terms and Conditions.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "text", - "name": "text_5", - "value": "Link to Terms and Conditions of third party service providers used by the app:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - }, - { - "type": "tile_component", - "name": "link_1", - "value": "tile_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//policies.google.com/terms" - ], - "_raw": "click | go_to_url:https://policies.google.com/terms", - "_cleaned": "click | go_to_url:https://policies.google.com/terms" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_1_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_1_text", - "matchedExpression": "@local.link_1_text", - "type": "local", - "fieldName": "link_1_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_1_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "tile_component", - "name": "link_2", - "value": "tile_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//firebase.google.com/terms/analytics" - ], - "_raw": "click | go_to_url:https://firebase.google.com/terms/analytics", - "_cleaned": "click | go_to_url:https://firebase.google.com/terms/analytics" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_2_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_2_text", - "matchedExpression": "@local.link_2_text", - "type": "local", - "fieldName": "link_2_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_2_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "tile_component", - "name": "link_3", - "value": "tile_3", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to_url", - "args": [ - "https", - "//sentry.io/terms/" - ], - "_raw": "click | go_to_url:https://sentry.io/terms/", - "_cleaned": "click | go_to_url:https://sentry.io/terms/" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.link_3_text", - "left_icon_src": "globe-outline", - "style": "button_tile", - "icon_src": "chevron-forward-outline" - }, - "_nested_name": "link_3", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.link_3_text", - "matchedExpression": "@local.link_3_text", - "type": "local", - "fieldName": "link_3_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.link_3_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "You should be aware that there are certain things that IDEMS International will not take responsibility for. Certain functions of the app will require the app to have an active internet connection. The connection can be Wi-Fi, or provided by your mobile network provider, but IDEMS International cannot take responsibility for the app not working at full functionality if you don’t have access to Wi-Fi, and you don’t have any of your data allowance left.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6" - }, - { - "type": "text", - "name": "text_7", - "value": "If you’re using the app outside of an area with Wi-Fi, you should remember that your terms of the agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you’re accepting responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you’re using the app, please be aware that we assume that you have received permission from the bill payer for using the app.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7" - }, - { - "type": "text", - "name": "text_8", - "value": "Along the same lines, IDEMS International cannot always take responsibility for the way you use the app i.e. You need to make sure that your device stays charged – if it runs out of battery and you can’t turn it on to avail the Service, IDEMS International cannot accept responsibility.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8" - }, - { - "type": "text", - "name": "text_9", - "value": "With respect to IDEMS International’s responsibility for your use of the app, when you’re using the app, it’s important to bear in mind that although we endeavour to ensure that it is updated and correct at all times, we do rely on third parties to provide information to us so that we can make it available to you. IDEMS International accepts no liability for any loss, direct or indirect, you experience as a result of relying wholly on this functionality of the app.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_9" - }, - { - "type": "text", - "name": "text_10", - "value": "At some point, we may wish to update the app. The app is currently available on Android & iOS – the requirements for both systems (and for any additional systems we decide to extend the availability of the app to) may change, and you’ll need to download the updates if you want to keep using the app. IDEMS International does not promise that it will always update the app so that it is relevant to you and/or works with the Android & iOS version that you have installed on your device. However, you promise to always accept updates to the application when offered to you. We may also wish to stop providing the app, and may terminate use of it at any time without giving notice of termination to you. Unless we tell you otherwise, upon any termination, (a) the rights and licenses granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_10" - }, - { - "type": "title", - "name": "title_2", - "value": "Changes to This Terms and Conditions", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_11", - "value": "We may update our Terms and Conditions from time to time. Thus, you are advised to review this page periodically for any changes. We will notify you of any changes by posting the new Terms and Conditions on this page.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11" - }, - { - "type": "text", - "name": "text_12", - "value": "These terms and conditions are effective as of 2020-09-16", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_12" - }, - { - "type": "title", - "name": "title_3", - "value": "Contact Us", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "text", - "name": "text_13", - "value": "If you have any questions or suggestions about our Terms and Conditions, do not hesitate to contact us at apps@idems.international.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_13" - }, - { - "type": "text", - "name": "text_14", - "value": "This Terms and Conditions page was generated by App Privacy Policy Generator.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_14" - } - ], - "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/app_menu_unlock_workshops_pop.json b/packages/app-data/sheets/template/app_menu_unlock_workshops_pop.json index 500cd7763e..49210c83b0 100644 --- a/packages/app-data/sheets/template/app_menu_unlock_workshops_pop.json +++ b/packages/app-data/sheets/template/app_menu_unlock_workshops_pop.json @@ -202,20 +202,23 @@ { "type": "dashed_box", "name": "text_2", - "value": "All workshops are now unlocked.", + "value": "All @global.workshops are now unlocked.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": "!@fields.unlock_workshops_confirm", "_nested_name": "text_2", "_dynamicFields": { + "value": [ + { + "fullExpression": "All @global.workshops are now unlocked.", + "matchedExpression": "@global.workshops", + "type": "global", + "fieldName": "workshops" + } + ], "hidden": [ { "fullExpression": "!@fields.unlock_workshops_confirm", @@ -226,6 +229,9 @@ ] }, "_dynamicDependencies": { + "@global.workshops": [ + "value" + ], "!@fields.unlock_workshops_confirm": [ "hidden" ] diff --git a/packages/app-data/sheets/template/app_update_complete.json b/packages/app-data/sheets/template/app_update_complete.json new file mode 100644 index 0000000000..c58ca790d8 --- /dev/null +++ b/packages/app-data/sheets/template/app_update_complete.json @@ -0,0 +1,56 @@ +{ + "flow_type": "template", + "flow_name": "app_update_complete", + "status": "released", + "rows": [ + { + "type": "text", + "name": "text", + "value": "@global.parent_app has downloaded an update. Please restart the app to finish installation.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.parent_app has downloaded an update. Please restart the app to finish installation.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "button", + "name": "button", + "value": "Restart", + "_translations": { + "value": { + "tz_sw": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "app_update", + "args": [ + "complete" + ], + "_raw": "click | app_update: complete", + "_cleaned": "click | app_update: complete" + } + ], + "_nested_name": "button" + } + ], + "_xlsxPath": "global/core_templates/app_update.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/bereavement_practical.json b/packages/app-data/sheets/template/bereavement_practical.json index ee13948d71..6eacda6400 100644 --- a/packages/app-data/sheets/template/bereavement_practical.json +++ b/packages/app-data/sheets/template/bereavement_practical.json @@ -87,7 +87,9 @@ "_translations": { "value": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, diff --git a/packages/app-data/sheets/template/bereavement_self.json b/packages/app-data/sheets/template/bereavement_self.json index 0da4ae8f0c..cfaa4458fd 100644 --- a/packages/app-data/sheets/template/bereavement_self.json +++ b/packages/app-data/sheets/template/bereavement_self.json @@ -71,7 +71,9 @@ "_translations": { "value": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, diff --git a/packages/app-data/sheets/template/bereavement_teen.json b/packages/app-data/sheets/template/bereavement_teen.json index 25b8457dc5..84ef4e4b48 100644 --- a/packages/app-data/sheets/template/bereavement_teen.json +++ b/packages/app-data/sheets/template/bereavement_teen.json @@ -87,7 +87,9 @@ "_translations": { "value": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -100,7 +102,9 @@ "_translations": { "value": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, diff --git a/packages/app-data/sheets/template/box_audio.json b/packages/app-data/sheets/template/box_audio.json index b622402f5f..d17f741dd9 100644 --- a/packages/app-data/sheets/template/box_audio.json +++ b/packages/app-data/sheets/template/box_audio.json @@ -22,6 +22,15 @@ "name": "text", "_nested_name": "text" }, + { + "type": "image", + "name": "image_src", + "hidden": true, + "parameter_list": { + "style": "rounded_corners" + }, + "_nested_name": "image_src" + }, { "type": "lottie_animation", "name": "lottie_src", diff --git a/packages/app-data/sheets/template/box_content.json b/packages/app-data/sheets/template/box_content.json new file mode 100644 index 0000000000..c004347c38 --- /dev/null +++ b/packages/app-data/sheets/template/box_content.json @@ -0,0 +1,237 @@ +{ + "flow_type": "template", + "flow_name": "box_content", + "status": "released", + "rows": [ + { + "name": "use_scroll", + "value": "@fields.use_modular_skin", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "use_scroll", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.use_modular_skin", + "matchedExpression": "@fields.use_modular_skin", + "type": "fields", + "fieldName": "use_modular_skin" + } + ] + }, + "_dynamicDependencies": { + "@fields.use_modular_skin": [ + "value" + ] + } + }, + { + "name": "story_id", + "value": "w_praise", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "story_id" + }, + { + "name": "use_completed_chevron", + "value": true, + "type": "set_variable", + "_nested_name": "use_completed_chevron" + }, + { + "name": "use_completed_more", + "value": false, + "type": "set_variable", + "_nested_name": "use_completed_more" + }, + { + "type": "template", + "name": "box_story_pages", + "value": "box_story_pages", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "!@local.use_scroll", + "rows": [ + { + "name": "story_id", + "value": "@local.story_id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "box_story_pages.story_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.story_id", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ] + } + }, + { + "name": "use_completed_chevron", + "value": "@local.use_completed_chevron", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "box_story_pages.use_completed_chevron", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.use_completed_chevron", + "matchedExpression": "@local.use_completed_chevron", + "type": "local", + "fieldName": "use_completed_chevron" + } + ] + }, + "_dynamicDependencies": { + "@local.use_completed_chevron": [ + "value" + ] + } + }, + { + "name": "use_completed_more", + "value": "@local.use_completed_more", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "box_story_pages.use_completed_more", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.use_completed_more", + "matchedExpression": "@local.use_completed_more", + "type": "local", + "fieldName": "use_completed_more" + } + ] + }, + "_dynamicDependencies": { + "@local.use_completed_more": [ + "value" + ] + } + } + ], + "_nested_name": "box_story_pages", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@local.use_scroll", + "matchedExpression": "!@local.use_scroll", + "type": "local", + "fieldName": "use_scroll" + } + ] + }, + "_dynamicDependencies": { + "!@local.use_scroll": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "box_story_scroll", + "value": "box_story_scroll", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "@local.use_scroll", + "rows": [ + { + "name": "story_id", + "value": "@local.story_id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "box_story_scroll.story_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.story_id", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ] + } + } + ], + "_nested_name": "box_story_scroll", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.use_scroll", + "matchedExpression": "@local.use_scroll", + "type": "local", + "fieldName": "use_scroll" + } + ] + }, + "_dynamicDependencies": { + "@local.use_scroll": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_duo.json b/packages/app-data/sheets/template/box_duo.json index c41c08c4d3..8ec37be4e1 100644 --- a/packages/app-data/sheets/template/box_duo.json +++ b/packages/app-data/sheets/template/box_duo.json @@ -12,6 +12,26 @@ { "type": "template", "name": "box_2", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], "rows": [], "_nested_name": "box_2" } diff --git a/packages/app-data/sheets/template/box_hp_review.json b/packages/app-data/sheets/template/box_hp_review.json new file mode 100644 index 0000000000..4f9e92d215 --- /dev/null +++ b/packages/app-data/sheets/template/box_hp_review.json @@ -0,0 +1,636 @@ +{ + "flow_type": "template", + "flow_name": "box_hp_review", + "status": "released", + "rows": [ + { + "name": "yes", + "value": "Yes", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "yes" + }, + { + "name": "no", + "value": "No", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "no" + }, + { + "name": "radio_group_done_tracker", + "value": "radio_group_done_tracker", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "radio_group_done_tracker" + }, + { + "name": "answer_list", + "value": [ + "name: yes | text: @local.yes", + "name: no | text: @local.no" + ], + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "answer_list", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "name: yes | text: @local.yes", + "matchedExpression": "@local.yes", + "type": "local", + "fieldName": "yes" + } + ], + "1": [ + { + "fullExpression": "name: no | text: @local.no", + "matchedExpression": "@local.no", + "type": "local", + "fieldName": "no" + } + ] + } + }, + "_dynamicDependencies": { + "@local.yes": [ + "value.0" + ], + "@local.no": [ + "value.1" + ] + } + }, + { + "type": "text", + "name": "text_done", + "value": "text_done", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "text_done" + }, + { + "type": "text", + "name": "question_text_done", + "value": "question_text_done", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "question_text_done" + }, + { + "name": "radio_group_done_answered", + "value": false, + "type": "set_variable", + "_nested_name": "radio_group_done_answered" + }, + { + "type": "radio_group", + "name": "radio_group_done", + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.radio_group_done_tracker", + "this.value" + ], + "_raw": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done", + "_cleaned": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "radio_group_done_answered", + true + ], + "_raw": "changed | set_local : radio_group_done_answered: true", + "_cleaned": "changed | set_local : radio_group_done_answered: true" + } + ], + "parameter_list": { + "answer_list": "@local.answer_list" + }, + "_nested_name": "radio_group_done", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.radio_group_done_tracker", + "matchedExpression": "@local.radio_group_done_tracker", + "type": "local", + "fieldName": "radio_group_done_tracker" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done", + "matchedExpression": "@local.radio_group_done_tracker", + "type": "local", + "fieldName": "radio_group_done_tracker" + }, + { + "fullExpression": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done", + "matchedExpression": "@local.radio_group_done", + "type": "local", + "fieldName": "radio_group_done" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done", + "matchedExpression": "@local.radio_group_done_tracker", + "type": "local", + "fieldName": "radio_group_done_tracker" + }, + { + "fullExpression": "changed | set_field:@local.radio_group_done_tracker:@local.radio_group_done", + "matchedExpression": "@local.radio_group_done", + "type": "local", + "fieldName": "radio_group_done" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list", + "matchedExpression": "@local.answer_list", + "type": "local", + "fieldName": "answer_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.radio_group_done_tracker": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.radio_group_done": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.answer_list": [ + "parameter_list.answer_list" + ] + } + }, + { + "type": "display_group", + "name": "reply_no_dg", + "hidden": "@local.radio_group_done!=\"no\"", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_no", + "value": "reply_no", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "reply_no_dg.reply_no" + }, + { + "name": "button_no_go_to_template", + "type": "set_variable", + "_nested_name": "reply_no_dg.button_no_go_to_template" + }, + { + "name": "button_no_text", + "type": "set_variable", + "_nested_name": "reply_no_dg.button_no_text" + }, + { + "type": "button", + "name": "button_no", + "value": "@local.button_no_text", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.button_no_go_to_template" + ], + "_raw": "click | go_to: @local.button_no_go_to_template", + "_cleaned": "click | go_to: @local.button_no_go_to_template" + } + ], + "_nested_name": "reply_no_dg.button_no", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.button_no_text", + "matchedExpression": "@local.button_no_text", + "type": "local", + "fieldName": "button_no_text" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.button_no_go_to_template", + "matchedExpression": "@local.button_no_go_to_template", + "type": "local", + "fieldName": "button_no_go_to_template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.button_no_go_to_template", + "matchedExpression": "@local.button_no_go_to_template", + "type": "local", + "fieldName": "button_no_go_to_template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.button_no_go_to_template", + "matchedExpression": "@local.button_no_go_to_template", + "type": "local", + "fieldName": "button_no_go_to_template" + } + ] + } + } + }, + "_dynamicDependencies": { + "@local.button_no_text": [ + "value" + ], + "@local.button_no_go_to_template": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ] + } + } + ], + "_nested_name": "reply_no_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.radio_group_done!=\"no\"", + "matchedExpression": "@local.radio_group_done", + "type": "local", + "fieldName": "radio_group_done" + } + ] + }, + "_dynamicDependencies": { + "@local.radio_group_done": [ + "hidden" + ] + } + }, + { + "type": "display_group", + "name": "reply_yes_dg", + "hidden": "@local.radio_group_done!=\"yes\"", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "radio_group_mood_tracker", + "value": "radio_group_mood_tracker", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "reply_yes_dg.radio_group_mood_tracker" + }, + { + "name": "answer_list_mood", + "value": [ + "name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg", + "name:ok | image:plh_images/stickers/faces/neutral.svg | image_checked:plh_images/stickers/faces/neutral.svg", + "name:sad | image:plh_images/stickers/faces/sadder.svg | image_checked:plh_images/stickers/faces/sadder.svg" + ], + "type": "set_variable", + "_nested_name": "reply_yes_dg.answer_list_mood" + }, + { + "name": "options_per_row", + "value": 3, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "reply_yes_dg.options_per_row" + }, + { + "type": "text", + "name": "question_text_mood", + "value": "question_text_mood", + "_translations": { + "value": {} + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "reply_yes_dg.question_text_mood" + }, + { + "name": "radio_group_mood_answered", + "type": "set_variable", + "_nested_name": "reply_yes_dg.radio_group_mood_answered" + }, + { + "type": "radio_group", + "name": "radio_group_mood", + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.radio_group_mood_tracker", + "this.value" + ], + "_raw": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood", + "_cleaned": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood" + } + ], + "parameter_list": { + "answer_list": "@local.answer_list_mood", + "options_per_row": "@local.options_per_row" + }, + "_nested_name": "reply_yes_dg.radio_group_mood", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.radio_group_mood_tracker", + "matchedExpression": "@local.radio_group_mood_tracker", + "type": "local", + "fieldName": "radio_group_mood_tracker" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood", + "matchedExpression": "@local.radio_group_mood_tracker", + "type": "local", + "fieldName": "radio_group_mood_tracker" + }, + { + "fullExpression": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood", + "matchedExpression": "@local.radio_group_mood", + "type": "local", + "fieldName": "radio_group_mood" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood", + "matchedExpression": "@local.radio_group_mood_tracker", + "type": "local", + "fieldName": "radio_group_mood_tracker" + }, + { + "fullExpression": "changed | set_field:@local.radio_group_mood_tracker:@local.radio_group_mood", + "matchedExpression": "@local.radio_group_mood", + "type": "local", + "fieldName": "radio_group_mood" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list_mood", + "matchedExpression": "@local.answer_list_mood", + "type": "local", + "fieldName": "answer_list_mood" + } + ], + "options_per_row": [ + { + "fullExpression": "@local.options_per_row", + "matchedExpression": "@local.options_per_row", + "type": "local", + "fieldName": "options_per_row" + } + ] + } + }, + "_dynamicDependencies": { + "@local.radio_group_mood_tracker": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.radio_group_mood": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.answer_list_mood": [ + "parameter_list.answer_list" + ], + "@local.options_per_row": [ + "parameter_list.options_per_row" + ] + } + }, + { + "type": "display_group", + "name": "reply_happy_dg", + "hidden": "@local.radio_group_mood!=\"happy\"", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_happy", + "value": "reply_happy", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "reply_yes_dg.reply_happy_dg.reply_happy" + } + ], + "_nested_name": "reply_yes_dg.reply_happy_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.radio_group_mood!=\"happy\"", + "matchedExpression": "@local.radio_group_mood", + "type": "local", + "fieldName": "radio_group_mood" + } + ] + }, + "_dynamicDependencies": { + "@local.radio_group_mood": [ + "hidden" + ] + } + }, + { + "type": "display_group", + "name": "reply_ok_dg", + "hidden": "@local.radio_group_mood!=\"ok\"", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_ok", + "value": "reply_ok", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "reply_yes_dg.reply_ok_dg.reply_ok" + } + ], + "_nested_name": "reply_yes_dg.reply_ok_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.radio_group_mood!=\"ok\"", + "matchedExpression": "@local.radio_group_mood", + "type": "local", + "fieldName": "radio_group_mood" + } + ] + }, + "_dynamicDependencies": { + "@local.radio_group_mood": [ + "hidden" + ] + } + }, + { + "type": "display_group", + "name": "reply_sad_dg", + "hidden": "@local.radio_group_mood!=\"sad\"", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_sad", + "value": "reply_sad", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "reply_yes_dg.reply_sad_dg.reply_sad" + } + ], + "_nested_name": "reply_yes_dg.reply_sad_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.radio_group_mood!=\"sad\"", + "matchedExpression": "@local.radio_group_mood", + "type": "local", + "fieldName": "radio_group_mood" + } + ] + }, + "_dynamicDependencies": { + "@local.radio_group_mood": [ + "hidden" + ] + } + } + ], + "_nested_name": "reply_yes_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.radio_group_done!=\"yes\"", + "matchedExpression": "@local.radio_group_done", + "type": "local", + "fieldName": "radio_group_done" + } + ] + }, + "_dynamicDependencies": { + "@local.radio_group_done": [ + "hidden" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [], + "_nested_name": "nav_buttons" + } + ], + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_multi_3_temp.json b/packages/app-data/sheets/template/box_multi_3_temp.json deleted file mode 100644 index c4d2cd2187..0000000000 --- a/packages/app-data/sheets/template/box_multi_3_temp.json +++ /dev/null @@ -1,1205 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "box_multi_3_temp", - "status": "released", - "rows": [ - { - "name": "slider_1_min_value_label", - "value": "Days in the past week", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "slider_1_min_value_label" - }, - { - "name": "slider_2_min_value_label", - "value": "Days in the past month", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "slider_2_min_value_label" - }, - { - "name": "slider_1_tracker", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_tracker" - }, - { - "name": "slider_1_final", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_final" - }, - { - "type": "image", - "name": "image_src", - "hidden": true, - "style_list": [ - "height: 150px" - ], - "_nested_name": "image_src" - }, - { - "name": "slider_2_tracker", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_2_tracker" - }, - { - "name": "slider_2_final", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_2_final" - }, - { - "name": "threshold", - "value": 1, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "threshold" - }, - { - "type": "image", - "name": "image_src", - "hidden": true, - "style_list": [ - "height: 150px" - ], - "_nested_name": "image_src" - }, - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text", - "name": "question_text_1", - "value": "Question text 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text_1" - }, - { - "name": "slider_1_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_answered" - }, - { - "type": "slider", - "name": "slider_1", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_1_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "_cleaned": "changed | set_field:@local.slider_1_tracker: @local.slider_1" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_1_answered", - true - ], - "_raw": "changed | set_local: slider_1_answered: true", - "_cleaned": "changed | set_local: slider_1_answered: true" - } - ], - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_1_min_value_label", - "max": "7" - }, - "_nested_name": "slider_1", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_tracker", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_1_min_value_label", - "matchedExpression": "@local.slider_1_min_value_label", - "type": "local", - "fieldName": "slider_1_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_1_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_1_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies_slider_1", - "condition": "@local.slider_1_answered", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "question_text_2", - "value": "Question text 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "replies_slider_1.question_text_2" - }, - { - "name": "slider_2_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "replies_slider_1.slider_2_answered" - }, - { - "type": "slider", - "name": "slider_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_2_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "_cleaned": "changed | set_field:@local.slider_2_tracker: @local.slider_2" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_2_answered", - true - ], - "_raw": "changed | set_local: slider_2_answered: true", - "_cleaned": "changed | set_local: slider_2_answered: true" - } - ], - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_2_min_value_label", - "max": "30", - "labels_count": "7" - }, - "_nested_name": "replies_slider_1.slider_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_tracker", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_2_min_value_label", - "matchedExpression": "@local.slider_2_min_value_label", - "type": "local", - "fieldName": "slider_2_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_2_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_2_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies_sliders", - "condition": "@local.slider_2_answered && !(@local.slider_1==\"no_value\" && @local.slider_2==\"no_value\")", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_less", - "hidden": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_less", - "value": "You selected less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies_slider_1.replies_sliders.replies_less.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_sliders.replies_less", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - }, - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "(@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold )", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "hidden", - "hidden" - ], - "@local.threshold": [ - "hidden", - "hidden" - ], - "@local.slider_2": [ - "hidden", - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_greater_equal", - "hidden": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_greater_equal", - "value": "You selected @local.threshold or more", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies_slider_1.replies_sliders.replies_greater_equal.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or more", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_greater_equal", - "value": "Unlock for greater than or equal to @local.threshold", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies_slider_1.replies_sliders.replies_greater_equal.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for greater than or equal to @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_sliders.replies_greater_equal", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - }, - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "!((@local.slider_1 != \"no_value\" && @local.slider_1 >= @local.threshold) || (@local.slider_2 !=\"no_value\" && @local.slider_2 >= @local.threshold ))", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "hidden", - "hidden" - ], - "@local.threshold": [ - "hidden", - "hidden" - ], - "@local.slider_2": [ - "hidden", - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_sliders", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.slider_2_answered && !(@local.slider_1==\"no_value\" && @local.slider_2==\"no_value\")", - "matchedExpression": "@local.slider_2_answered", - "type": "local", - "fieldName": "slider_2_answered" - }, - { - "fullExpression": "@local.slider_2_answered && !(@local.slider_1==\"no_value\" && @local.slider_2==\"no_value\")", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "@local.slider_2_answered && !(@local.slider_1==\"no_value\" && @local.slider_2==\"no_value\")", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_2_answered": [ - "condition" - ], - "@local.slider_1": [ - "condition" - ], - "@local.slider_2": [ - "condition" - ] - } - } - ], - "_nested_name": "replies_slider_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.slider_1_answered", - "matchedExpression": "@local.slider_1_answered", - "type": "local", - "fieldName": "slider_1_answered" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1_answered": [ - "condition" - ] - } - }, - { - "name": "this_question_answered", - "value": "@local.slider_1_answered", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "this_question_answered", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_1_answered", - "matchedExpression": "@local.slider_1_answered", - "type": "local", - "fieldName": "slider_1_answered" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1_answered": [ - "value" - ] - } - }, - { - "name": "na_selected", - "value": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "na_selected", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "value" - ], - "@local.slider_2": [ - "value" - ] - } - }, - { - "name": "skip_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "skip_warning_popped_up" - }, - { - "name": "na_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "na_warning_popped_up" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_skip_question" - ], - "_raw": "completed | pop_up:survey_warning_skip_question", - "_cleaned": "completed | pop_up:survey_warning_skip_question" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "skip_warning_popped_up", - true - ], - "_raw": "completed | set_local: skip_warning_popped_up:true", - "_cleaned": "completed | set_local: skip_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_na" - ], - "_raw": "completed | pop_up:survey_warning_na", - "_cleaned": "completed | pop_up:survey_warning_na" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "na_warning_popped_up", - true - ], - "_raw": "completed | set_local: na_warning_popped_up:true", - "_cleaned": "completed | set_local: na_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_1_final", - "@local.slider_1" - ], - "_raw": "completed | set_field:@local.slider_1_final:@local.slider_1", - "_cleaned": "completed | set_field:@local.slider_1_final:@local.slider_1" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_1_final", - "@local.slider_1" - ], - "_raw": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "_cleaned": "uncompleted | set_field:@local.slider_1_final:@local.slider_1" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_2_final", - "@local.slider_2" - ], - "_raw": "completed | set_field:@local.slider_2_final:@local.slider_2", - "_cleaned": "completed | set_field:@local.slider_2_final:@local.slider_2" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_2_final", - "@local.slider_2" - ], - "_raw": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "_cleaned": "uncompleted | set_field:@local.slider_2_final:@local.slider_2" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_final", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "1": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_final", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "2": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_final", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "3": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_final", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - } - }, - "condition": [ - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.slider_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.1", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.slider_2_final": [ - "action_list.2.args.0", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.3.args.0", - "action_list.3._raw", - "action_list.3._cleaned" - ], - "@local.slider_2": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.3.args.1", - "action_list.3._raw", - "action_list.3._cleaned" - ], - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ], - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_multi_4_temp.json b/packages/app-data/sheets/template/box_multi_4_temp.json deleted file mode 100644 index 5dc33ae87c..0000000000 --- a/packages/app-data/sheets/template/box_multi_4_temp.json +++ /dev/null @@ -1,1652 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "box_multi_4_temp", - "status": "released", - "rows": [ - { - "name": "slider_min_value_label", - "value": "Days in the past week", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "slider_min_value_label" - }, - { - "name": "slider_1_tracker", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_tracker" - }, - { - "name": "slider_1_final", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_final" - }, - { - "name": "radio_group_tracker", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "radio_group_tracker" - }, - { - "name": "radio_group_final", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "radio_group_final" - }, - { - "name": "slider_2_tracker", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_2_tracker" - }, - { - "name": "slider_2_final", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_2_final" - }, - { - "name": "threshold", - "value": 7, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "threshold" - }, - { - "type": "image", - "name": "image_src", - "style_list": [ - "height: 150px" - ], - "_nested_name": "image_src" - }, - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text", - "name": "question_text", - "value": "Question text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text" - }, - { - "name": "slider_1_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_1_answered" - }, - { - "type": "slider", - "name": "slider_1", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_1_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "_cleaned": "changed | set_field:@local.slider_1_tracker: @local.slider_1" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_1_answered", - true - ], - "_raw": "changed | set_local: slider_1_answered: true", - "_cleaned": "changed | set_local: slider_1_answered: true" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_min_value_label", - "max": "7" - }, - "_nested_name": "slider_1", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_tracker", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1_tracker", - "type": "local", - "fieldName": "slider_1_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_1_tracker: @local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_min_value_label", - "matchedExpression": "@local.slider_min_value_label", - "type": "local", - "fieldName": "slider_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_1_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies_slider_1", - "hidden": "(!@local.slider_1_answered) || @local.slider_1==\"no_value\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_less_slider_1", - "hidden": "@local.slider_1 >= @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_less_1", - "value": "You selected less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "replies_slider_1.replies_less_slider_1.reply_less_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_less_1", - "value": "Unlock for less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies_slider_1.replies_less_slider_1.unlock_less_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_less_slider_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider_1 >= @local.threshold", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "@local.slider_1 >= @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_greater_equal_slider_1", - "hidden": "@local.slider_1 < @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_greater_equal_1", - "value": "You selected @local.threshold or more", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.reply_greater_equal_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or more", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "text", - "name": "question_greater_equal_1", - "value": "Question text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.question_greater_equal_1" - }, - { - "name": "answer_list", - "value": [ - "name:yes | text:Yes", - "name:no | text:No" - ], - "type": "set_variable", - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.answer_list" - }, - { - "name": "radio_group_answered", - "value": false, - "type": "set_variable", - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.radio_group_answered" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.radio_group_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.radio_group_tracker: @local.radio_group", - "_cleaned": "changed | set_field:@local.radio_group_tracker: @local.radio_group" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "radio_group_answered", - true - ], - "_raw": "changed | set_local: radio_group_answered: true", - "_cleaned": "changed | set_local: radio_group_answered: true" - } - ], - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_tracker", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.radio_group_tracker: @local.radio_group", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_tracker: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.radio_group_tracker: @local.radio_group", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_tracker: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "display_group", - "name": "replies_radio_group", - "hidden": "!@local.radio_group_answered", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_radio_group_no", - "hidden": "@local.radio_group!=\"no\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_no", - "value": "Reply no", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_no.reply_no" - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_no", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group!=\"no\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_radio_group_yes", - "hidden": "@local.radio_group!=\"yes\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "question_yes", - "value": "Question yes", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.question_yes" - }, - { - "name": "slider_2_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.slider_2_answered" - }, - { - "type": "slider", - "name": "slider_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_2_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "_cleaned": "changed | set_field:@local.slider_2_tracker: @local.slider_2" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_2_answered", - true - ], - "_raw": "changed | set_local: slider_2_answered: true", - "_cleaned": "changed | set_local: slider_2_answered: true" - } - ], - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_min_value_label", - "max": "7" - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.slider_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_tracker", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2_tracker", - "type": "local", - "fieldName": "slider_2_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_2_tracker: @local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_min_value_label", - "matchedExpression": "@local.slider_min_value_label", - "type": "local", - "fieldName": "slider_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_2_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies_slider_2", - "hidden": "(!@local.slider_2_answered) || @local.slider_2==\"no_value\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_less_slider_2", - "hidden": "@local.slider_2 >= @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_less_2", - "value": "You selected less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2.replies_less_slider_2.reply_less_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_less_2", - "value": "Unlock for less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2.replies_less_slider_2.unlock_less_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2.replies_less_slider_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider_2 >= @local.threshold", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "@local.slider_2 >= @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_2": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_greater_equal_slider_2", - "hidden": "@local.slider_2 < @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_greater_equal_2", - "value": "You selected @local.threshold or more", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2.replies_greater_equal_slider_2.reply_greater_equal_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or more", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2.replies_greater_equal_slider_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider_2 < @local.threshold", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - }, - { - "fullExpression": "@local.slider_2 < @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_2": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes.replies_slider_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "(!@local.slider_2_answered) || @local.slider_2==\"no_value\"", - "matchedExpression": "!@local.slider_2_answered", - "type": "local", - "fieldName": "slider_2_answered" - }, - { - "fullExpression": "(!@local.slider_2_answered) || @local.slider_2==\"no_value\"", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_dynamicDependencies": { - "!@local.slider_2_answered": [ - "hidden" - ], - "@local.slider_2": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group.replies_radio_group_yes", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group!=\"yes\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1.replies_radio_group", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.radio_group_answered", - "matchedExpression": "!@local.radio_group_answered", - "type": "local", - "fieldName": "radio_group_answered" - } - ] - }, - "_dynamicDependencies": { - "!@local.radio_group_answered": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1.replies_greater_equal_slider_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider_1 < @local.threshold", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "@local.slider_1 < @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_slider_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "(!@local.slider_1_answered) || @local.slider_1==\"no_value\"", - "matchedExpression": "!@local.slider_1_answered", - "type": "local", - "fieldName": "slider_1_answered" - }, - { - "fullExpression": "(!@local.slider_1_answered) || @local.slider_1==\"no_value\"", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_dynamicDependencies": { - "!@local.slider_1_answered": [ - "hidden" - ], - "@local.slider_1": [ - "hidden" - ] - } - }, - { - "name": "this_question_answered", - "value": "@local.slider_1_answered", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "this_question_answered", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_1_answered", - "matchedExpression": "@local.slider_1_answered", - "type": "local", - "fieldName": "slider_1_answered" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1_answered": [ - "value" - ] - } - }, - { - "name": "na_selected", - "value": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "na_selected", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - }, - { - "fullExpression": "@local.slider_1==\"no_value\" || @local.slider_2 ==\"no_value\"", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "value" - ], - "@local.slider_2": [ - "value" - ] - } - }, - { - "name": "skip_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "skip_warning_popped_up" - }, - { - "name": "na_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "na_warning_popped_up" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_skip_question" - ], - "_raw": "completed | pop_up:survey_warning_skip_question", - "_cleaned": "completed | pop_up:survey_warning_skip_question" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "skip_warning_popped_up", - true - ], - "_raw": "completed | set_local: skip_warning_popped_up:true", - "_cleaned": "completed | set_local: skip_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_na" - ], - "_raw": "completed | pop_up:survey_warning_na", - "_cleaned": "completed | pop_up:survey_warning_na" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "na_warning_popped_up", - true - ], - "_raw": "completed | set_local: na_warning_popped_up:true", - "_cleaned": "completed | set_local: na_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_1_final", - "@local.slider_1" - ], - "_raw": "completed | set_field:@local.slider_1_final:@local.slider_1", - "_cleaned": "completed | set_field:@local.slider_1_final:@local.slider_1" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.radio_group_final", - "@local.radio_group" - ], - "_raw": "completed | set_field:@local.radio_group_final:@local.radio_group", - "_cleaned": "completed | set_field:@local.radio_group_final:@local.radio_group" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_2_final", - "@local.slider_2" - ], - "_raw": "completed | set_field:@local.slider_2_final:@local.slider_2", - "_cleaned": "completed | set_field:@local.slider_2_final:@local.slider_2" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_1_final", - "@local.slider_1" - ], - "_raw": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "_cleaned": "uncompleted | set_field:@local.slider_1_final:@local.slider_1" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.radio_group_final", - "@local.radio_group" - ], - "_raw": "uncompleted | set_field:@local.radio_group_final:@local.radio_group", - "_cleaned": "uncompleted | set_field:@local.radio_group_final:@local.radio_group" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_2_final", - "@local.slider_2" - ], - "_raw": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "_cleaned": "uncompleted | set_field:@local.slider_2_final:@local.slider_2" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_final", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "1": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_final", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - } - ], - "1": [ - { - "fullExpression": "@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "completed | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "completed | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "2": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_final", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "3": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_1_final", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1_final", - "type": "local", - "fieldName": "slider_1_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_1_final:@local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "4": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_final", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - } - ], - "1": [ - { - "fullExpression": "@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "5": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_2_final", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2_final", - "type": "local", - "fieldName": "slider_2_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_2_final:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - } - }, - "condition": [ - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.3.args.0", - "action_list.3._raw", - "action_list.3._cleaned" - ], - "@local.slider_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.3.args.1", - "action_list.3._raw", - "action_list.3._cleaned" - ], - "@local.radio_group_final": [ - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned", - "action_list.4.args.0", - "action_list.4._raw", - "action_list.4._cleaned" - ], - "@local.radio_group": [ - "action_list.1.args.1", - "action_list.1._raw", - "action_list.1._cleaned", - "action_list.4.args.1", - "action_list.4._raw", - "action_list.4._cleaned" - ], - "@local.slider_2_final": [ - "action_list.2.args.0", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.5.args.0", - "action_list.5._raw", - "action_list.5._cleaned" - ], - "@local.slider_2": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" - ], - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ], - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_slider.json b/packages/app-data/sheets/template/box_slider.json deleted file mode 100644 index 9989293350..0000000000 --- a/packages/app-data/sheets/template/box_slider.json +++ /dev/null @@ -1,467 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "box_slider", - "status": "released", - "rows": [ - { - "name": "slider_tracker", - "value": "slider_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_tracker" - }, - { - "name": "slider_final", - "value": "slider_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_final" - }, - { - "name": "slider_title", - "hidden": true, - "type": "set_variable", - "_nested_name": "slider_title" - }, - { - "name": "help_text", - "type": "set_variable", - "_nested_name": "help_text" - }, - { - "name": "min_value", - "value": 0, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "min_value" - }, - { - "name": "min_value_label", - "value": "Days in the past week", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "min_value_label" - }, - { - "name": "max_value", - "value": 7, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "max_value" - }, - { - "name": "max_value_label", - "type": "set_variable", - "_nested_name": "max_value_label" - }, - { - "name": "step", - "value": 1, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "step" - }, - { - "name": "labels_count", - "value": 8, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "labels_count" - }, - { - "name": "threshold", - "value": 3, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "threshold" - }, - { - "type": "image", - "name": "image_src", - "hidden": true, - "_nested_name": "image_src" - }, - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text", - "name": "question_text", - "value": "Question text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text" - }, - { - "type": "slider", - "name": "slider", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_tracker:@local.slider", - "_cleaned": "changed | set_field:@local.slider_tracker:@local.slider" - } - ], - "parameter_list": { - "help": "@local.help_text", - "min": "@local.min_value", - "min_value_label": "@local.min_value_label", - "max": "@local.max_value", - "max_value_label": "@local.max_value_label", - "title": "@local.title", - "step": "@local.step", - "labels_count": "@local.labels_count" - }, - "_nested_name": "slider", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_tracker", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - }, - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ], - "min": [ - { - "fullExpression": "@local.min_value", - "matchedExpression": "@local.min_value", - "type": "local", - "fieldName": "min_value" - } - ], - "min_value_label": [ - { - "fullExpression": "@local.min_value_label", - "matchedExpression": "@local.min_value_label", - "type": "local", - "fieldName": "min_value_label" - } - ], - "max": [ - { - "fullExpression": "@local.max_value", - "matchedExpression": "@local.max_value", - "type": "local", - "fieldName": "max_value" - } - ], - "max_value_label": [ - { - "fullExpression": "@local.max_value_label", - "matchedExpression": "@local.max_value_label", - "type": "local", - "fieldName": "max_value_label" - } - ], - "title": [ - { - "fullExpression": "@local.title", - "matchedExpression": "@local.title", - "type": "local", - "fieldName": "title" - } - ], - "step": [ - { - "fullExpression": "@local.step", - "matchedExpression": "@local.step", - "type": "local", - "fieldName": "step" - } - ], - "labels_count": [ - { - "fullExpression": "@local.labels_count", - "matchedExpression": "@local.labels_count", - "type": "local", - "fieldName": "labels_count" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.help_text": [ - "parameter_list.help" - ], - "@local.min_value": [ - "parameter_list.min" - ], - "@local.min_value_label": [ - "parameter_list.min_value_label" - ], - "@local.max_value": [ - "parameter_list.max" - ], - "@local.max_value_label": [ - "parameter_list.max_value_label" - ], - "@local.title": [ - "parameter_list.title" - ], - "@local.step": [ - "parameter_list.step" - ], - "@local.labels_count": [ - "parameter_list.labels_count" - ] - } - }, - { - "type": "text", - "name": "reply_less_equal", - "value": "You selected @local.threshold or less", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "reply_less_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or less", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "text", - "name": "reply_greater", - "value": "You selected more than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "reply_greater", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected more than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_final", - "@local.slider" - ], - "_raw": "completed | set_field:@local.slider_final:@local.slider", - "_cleaned": "completed | set_field:@local.slider_final:@local.slider" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_final", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.slider_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_slider_month_temp.json b/packages/app-data/sheets/template/box_slider_month_temp.json deleted file mode 100644 index 57f6452ca5..0000000000 --- a/packages/app-data/sheets/template/box_slider_month_temp.json +++ /dev/null @@ -1,872 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "box_slider_month_temp", - "status": "released", - "rows": [ - { - "name": "slider_tracker", - "value": "slider_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_tracker" - }, - { - "name": "slider_final", - "value": "slider_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_final" - }, - { - "name": "slider_min_value_label", - "value": "Days in the past month", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "slider_min_value_label" - }, - { - "name": "threshold", - "value": 5, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "threshold" - }, - { - "type": "image", - "name": "image_src", - "hidden": true, - "_nested_name": "image_src" - }, - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text", - "name": "question_text", - "value": "Question text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text" - }, - { - "type": "text", - "name": "example_text", - "value": "Example text", - "_translations": { - "value": {} - }, - "hidden": true, - "exclude_from_translation": true, - "_nested_name": "example_text" - }, - { - "name": "slider_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_answered" - }, - { - "type": "slider", - "name": "slider", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_tracker:@local.slider", - "_cleaned": "changed | set_field:@local.slider_tracker:@local.slider" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_answered", - true - ], - "_raw": "changed | set_local : slider_answered : true", - "_cleaned": "changed | set_local : slider_answered : true" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_min_value_label", - "max": "30", - "labels_count": "7" - }, - "_nested_name": "slider", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_tracker", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_min_value_label", - "matchedExpression": "@local.slider_min_value_label", - "type": "local", - "fieldName": "slider_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies", - "hidden": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_less", - "hidden": "@local.slider >= @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_less", - "value": "You selected less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies.replies_less.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_less", - "value": "Unlock for less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies.replies_less.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies.replies_less", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider >= @local.threshold", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "@local.slider >= @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_greater_equal", - "hidden": "@local.slider < @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_greater_equal", - "value": "You selected @local.threshold or more", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies.replies_greater_equal.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or more", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_greater_equal", - "value": "Unlock for greater than or equal to @local.threshold", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies.replies_greater_equal.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for greater than or equal to @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies.replies_greater_equal", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider < @local.threshold", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "@local.slider < @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "!@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "!@local.slider": [ - "hidden" - ], - "@local.slider": [ - "hidden", - "hidden" - ] - } - }, - { - "name": "this_question_answered", - "value": "@local.slider_answered", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "this_question_answered", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_answered", - "matchedExpression": "@local.slider_answered", - "type": "local", - "fieldName": "slider_answered" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_answered": [ - "value" - ] - } - }, - { - "name": "na_selected", - "value": "@local.slider==\"no_value\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "na_selected", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "value" - ] - } - }, - { - "name": "skip_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "skip_warning_popped_up" - }, - { - "name": "na_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "na_warning_popped_up" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_skip_question" - ], - "_raw": "completed | pop_up:survey_warning_skip_question", - "_cleaned": "completed | pop_up:survey_warning_skip_question" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "skip_warning_popped_up", - true - ], - "_raw": "completed | set_local: skip_warning_popped_up:true", - "_cleaned": "completed | set_local: skip_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_na" - ], - "_raw": "completed | pop_up:survey_warning_na", - "_cleaned": "completed | pop_up:survey_warning_na" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "na_warning_popped_up", - true - ], - "_raw": "completed | set_local: na_warning_popped_up:true", - "_cleaned": "completed | set_local: na_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_final", - "@local.slider" - ], - "_raw": "completed | set_field:@local.slider_final:@local.slider", - "_cleaned": "completed | set_field:@local.slider_final:@local.slider" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_final", - "@local.slider" - ], - "_raw": "uncompleted | set_field:@local.slider_final:@local.slider", - "_cleaned": "uncompleted | set_field:@local.slider_final:@local.slider" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_final", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "1": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_final", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - }, - "condition": [ - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.slider": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.1", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ], - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_slider_week_temp.json b/packages/app-data/sheets/template/box_slider_week_temp.json deleted file mode 100644 index 63b48b5b9c..0000000000 --- a/packages/app-data/sheets/template/box_slider_week_temp.json +++ /dev/null @@ -1,950 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "box_slider_week_temp", - "status": "released", - "rows": [ - { - "name": "slider_tracker", - "value": "slider_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_tracker" - }, - { - "name": "slider_final", - "value": "slider_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_final" - }, - { - "name": "slider_min_value_label", - "value": "Days in the past week", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "slider_min_value_label" - }, - { - "name": "threshold", - "value": 3, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "threshold" - }, - { - "name": "less_includes_zero", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "less_includes_zero" - }, - { - "type": "image", - "name": "image_src", - "hidden": true, - "style_list": [ - "height: 150px" - ], - "_nested_name": "image_src" - }, - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text", - "name": "question_text", - "value": "Question text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text" - }, - { - "name": "slider_answered", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "slider_answered" - }, - { - "type": "slider", - "name": "slider", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.slider_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.slider_tracker:@local.slider", - "_cleaned": "changed | set_field:@local.slider_tracker:@local.slider" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "slider_answered", - true - ], - "_raw": "changed | set_local : slider_answered : true", - "_cleaned": "changed | set_local : slider_answered : true" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "min_value_label": "@local.slider_min_value_label", - "max": "7" - }, - "_nested_name": "slider", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_tracker", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider_tracker", - "type": "local", - "fieldName": "slider_tracker" - }, - { - "fullExpression": "changed | set_field:@local.slider_tracker:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - }, - "parameter_list": { - "min_value_label": [ - { - "fullExpression": "@local.slider_min_value_label", - "matchedExpression": "@local.slider_min_value_label", - "type": "local", - "fieldName": "slider_min_value_label" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.slider_min_value_label": [ - "parameter_list.min_value_label" - ] - } - }, - { - "type": "display_group", - "name": "replies", - "hidden": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "replies_less", - "hidden": "@local.slider >= @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "display_group", - "name": "dg_reply_zero", - "hidden": "@local.less_includes_zero || @local.slider >=1", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_zero", - "value": "You selected 0", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "replies.replies_less.dg_reply_zero.reply_zero" - } - ], - "_nested_name": "replies.replies_less.dg_reply_zero", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.less_includes_zero || @local.slider >=1", - "matchedExpression": "@local.less_includes_zero", - "type": "local", - "fieldName": "less_includes_zero" - }, - { - "fullExpression": "@local.less_includes_zero || @local.slider >=1", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "@local.less_includes_zero": [ - "hidden" - ], - "@local.slider": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "dg_reply_less", - "hidden": "!(@local.less_includes_zero || @local.slider >=1)", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_less", - "value": "You selected less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies.replies_less.dg_reply_less.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_less", - "value": "Unlock for less than @local.threshold", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies.replies_less.dg_reply_less.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for less than @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies.replies_less.dg_reply_less", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.less_includes_zero || @local.slider >=1)", - "matchedExpression": "@local.less_includes_zero", - "type": "local", - "fieldName": "less_includes_zero" - }, - { - "fullExpression": "!(@local.less_includes_zero || @local.slider >=1)", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "@local.less_includes_zero": [ - "hidden" - ], - "@local.slider": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies.replies_less", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider >= @local.threshold", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "@local.slider >= @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_greater_equal", - "hidden": "@local.slider < @local.threshold", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_greater_equal", - "value": "You selected @local.threshold or more", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "replies.replies_greater_equal.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.threshold or more", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "unlock_greater_equal", - "value": "Unlock for greater than or equal to @local.threshold", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/unlock_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "replies.replies_greater_equal.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Unlock for greater than or equal to @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.threshold": [ - "value" - ] - } - } - ], - "_nested_name": "replies.replies_greater_equal", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.slider < @local.threshold", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "@local.slider < @local.threshold", - "matchedExpression": "@local.threshold", - "type": "local", - "fieldName": "threshold" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "hidden" - ], - "@local.threshold": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "!@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - }, - { - "fullExpression": "( (!@local.slider) && @local.slider !=0) || @local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "!@local.slider": [ - "hidden" - ], - "@local.slider": [ - "hidden", - "hidden" - ] - } - }, - { - "name": "this_question_answered", - "value": "@local.slider_answered", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "this_question_answered", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider_answered", - "matchedExpression": "@local.slider_answered", - "type": "local", - "fieldName": "slider_answered" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_answered": [ - "value" - ] - } - }, - { - "name": "na_selected", - "value": "@local.slider==\"no_value\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "na_selected", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.slider==\"no_value\"", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_dynamicDependencies": { - "@local.slider": [ - "value" - ] - } - }, - { - "name": "skip_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "skip_warning_popped_up" - }, - { - "name": "na_warning_popped_up", - "value": false, - "type": "set_variable", - "_nested_name": "na_warning_popped_up" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_skip_question" - ], - "_raw": "completed | pop_up:survey_warning_skip_question", - "_cleaned": "completed | pop_up:survey_warning_skip_question" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "skip_warning_popped_up", - true - ], - "_raw": "completed | set_local: skip_warning_popped_up:true", - "_cleaned": "completed | set_local: skip_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "survey_warning_na" - ], - "_raw": "completed | pop_up:survey_warning_na", - "_cleaned": "completed | pop_up:survey_warning_na" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "na_warning_popped_up", - true - ], - "_raw": "completed | set_local: na_warning_popped_up:true", - "_cleaned": "completed | set_local: na_warning_popped_up:true" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.slider_final", - "@local.slider" - ], - "_raw": "completed | set_field:@local.slider_final:@local.slider", - "_cleaned": "completed | set_field:@local.slider_final:@local.slider" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "@local.slider_final", - "@local.slider" - ], - "_raw": "uncompleted | set_field:@local.slider_final:@local.slider", - "_cleaned": "uncompleted | set_field:@local.slider_final:@local.slider" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_final", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "completed | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "1": { - "args": { - "0": [ - { - "fullExpression": "@local.slider_final", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - } - ], - "1": [ - { - "fullExpression": "@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider_final", - "type": "local", - "fieldName": "slider_final" - }, - { - "fullExpression": "uncompleted | set_field:@local.slider_final:@local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - }, - "condition": [ - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.this_question_answered", - "type": "local", - "fieldName": "this_question_answered" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.skip_warning_popped_up", - "type": "local", - "fieldName": "skip_warning_popped_up" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "@local.na_selected", - "type": "local", - "fieldName": "na_selected" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@fields.survey_continue_na", - "type": "fields", - "fieldName": "survey_continue_na" - }, - { - "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", - "matchedExpression": "!@local.na_warning_popped_up", - "type": "local", - "fieldName": "na_warning_popped_up" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.slider": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned", - "action_list.1.args.1", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.this_question_answered": [ - "condition" - ], - "@local.skip_warning_popped_up": [ - "condition" - ], - "@local.na_selected": [ - "condition" - ], - "!@fields.survey_continue_na": [ - "condition" - ], - "!@local.na_warning_popped_up": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_story_pages.json b/packages/app-data/sheets/template/box_story_pages.json new file mode 100644 index 0000000000..1546f58f06 --- /dev/null +++ b/packages/app-data/sheets/template/box_story_pages.json @@ -0,0 +1,1801 @@ +{ + "flow_type": "template", + "flow_name": "box_story_pages", + "status": "released", + "rows": [ + { + "name": "story_id", + "value": "praise", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "story_id" + }, + { + "name": "use_completed_chevron", + "value": false, + "type": "set_variable", + "_nested_name": "use_completed_chevron" + }, + { + "name": "use_completed_more", + "value": false, + "type": "set_variable", + "_nested_name": "use_completed_more" + }, + { + "name": "show_page_number", + "value": 1, + "type": "set_variable", + "_nested_name": "show_page_number" + }, + { + "type": "items", + "value": "@data.number", + "rows": [ + { + "name": "image_src_temp", + "value": "image_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "image_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "image_src", + "value": "story.@local.story_id.@local.image_src_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.image_src_temp", + "type": "local", + "fieldName": "image_src_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.image_src_temp": [ + "value" + ] + } + }, + { + "name": "text_temp", + "value": "text_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "text_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "text", + "value": "story.@local.story_id.@local.text_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.text_temp", + "type": "local", + "fieldName": "text_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.text_temp": [ + "value" + ] + } + }, + { + "name": "dashed_box_temp", + "value": "dashed_box_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "dashed_box_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "dashed_box", + "value": "story.@local.story_id.@local.dashed_box_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.dashed_box_temp", + "type": "local", + "fieldName": "dashed_box_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.dashed_box_temp": [ + "value" + ] + } + }, + { + "name": "number_of_pages", + "value": "@item.id", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.number_of_pages", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@local.image_src": [ + "condition" + ], + "@local.text": [ + "condition" + ], + "@local.dashed_box": [ + "condition" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.number", + "matchedExpression": "@data.number", + "type": "data", + "fieldName": "number" + } + ] + }, + "_dynamicDependencies": { + "@data.number": [ + "value" + ] + } + }, + { + "type": "items", + "value": "@data.number", + "rows": [ + { + "name": "image_src_temp", + "value": "image_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "image_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "image_src", + "value": "story.@local.story_id.@local.image_src_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.image_src_temp", + "type": "local", + "fieldName": "image_src_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.image_src_temp": [ + "value" + ] + } + }, + { + "name": "text_temp", + "value": "text_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "text_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "text", + "value": "story.@local.story_id.@local.text_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.text_temp", + "type": "local", + "fieldName": "text_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.text_temp": [ + "value" + ] + } + }, + { + "name": "dashed_box_temp", + "value": "dashed_box_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "dashed_box_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "dashed_box", + "value": "story.@local.story_id.@local.dashed_box_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.dashed_box_temp", + "type": "local", + "fieldName": "dashed_box_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.dashed_box_temp": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "page_@item.id", + "condition": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "hidden": "@item.id != @local.show_page_number", + "rows": [ + { + "type": "template", + "name": "one_page_only", + "value": "box_image", + "action_list": [ + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit: uncompleted", + "_cleaned": "uncompleted | emit: uncompleted" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + } + ], + "condition": "@local.number_of_pages == 1", + "rows": [ + { + "name": "image_src", + "value": "@data.@local.image_src", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.one_page_only.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.image_src", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.image_src", + "matchedExpression": "@item.id.one_page_only.image_src", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.image_src": [ + "value", + "condition" + ], + "@item.id.one_page_only.image_src": [ + "_nested_name" + ] + } + }, + { + "name": "text", + "value": "@data.@local.text", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.text)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.one_page_only.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.text", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.text)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.text", + "matchedExpression": "@item.id.one_page_only.text", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.text": [ + "value", + "condition" + ], + "@item.id.one_page_only.text": [ + "_nested_name" + ] + } + }, + { + "name": "dashed_box", + "value": "@data.@local.dashed_box", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.one_page_only.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.dashed_box", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.dashed_box", + "matchedExpression": "@item.id.one_page_only.dashed_box", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.dashed_box": [ + "value", + "condition" + ], + "@item.id.one_page_only.dashed_box": [ + "_nested_name" + ] + } + }, + { + "type": "nested_properties", + "name": "nav_buttons", + "value": "nav_buttons", + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "condition": "@local.use_completed_chevron", + "type": "set_variable", + "_nested_name": "items.page_@item.id.one_page_only.nav_buttons.use_completed_chevron", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.use_completed_chevron", + "matchedExpression": "@local.use_completed_chevron", + "type": "local", + "fieldName": "use_completed_chevron" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.nav_buttons.use_completed_chevron", + "matchedExpression": "@item.id.one_page_only.nav_buttons.use_completed_chevron", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.use_completed_chevron": [ + "condition" + ], + "@item.id.one_page_only.nav_buttons.use_completed_chevron": [ + "_nested_name" + ] + } + }, + { + "name": "button_completed", + "value": "@global.more_button", + "_translations": { + "value": {} + }, + "condition": "@local.use_completed_more", + "type": "set_variable", + "_nested_name": "items.page_@item.id.one_page_only.nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.more_button", + "matchedExpression": "@global.more_button", + "type": "global", + "fieldName": "more_button" + } + ], + "condition": [ + { + "fullExpression": "@local.use_completed_more", + "matchedExpression": "@local.use_completed_more", + "type": "local", + "fieldName": "use_completed_more" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.nav_buttons.button_completed", + "matchedExpression": "@item.id.one_page_only.nav_buttons.button_completed", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@global.more_button": [ + "value" + ], + "@local.use_completed_more": [ + "condition" + ], + "@item.id.one_page_only.nav_buttons.button_completed": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.one_page_only.nav_buttons", + "_dynamicFields": { + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only.nav_buttons", + "matchedExpression": "@item.id.one_page_only.nav_buttons", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id.one_page_only.nav_buttons": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.one_page_only", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.number_of_pages == 1", + "matchedExpression": "@local.number_of_pages", + "type": "local", + "fieldName": "number_of_pages" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.one_page_only", + "matchedExpression": "@item.id.one_page_only", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.number_of_pages": [ + "condition" + ], + "@item.id.one_page_only": [ + "_nested_name" + ] + } + }, + { + "type": "template", + "name": "first_page", + "value": "box_image", + "action_list": [ + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit: uncompleted", + "_cleaned": "uncompleted | emit: uncompleted" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "show_page_number", + "@item.id + 1" + ], + "_raw": "completed | set_local: show_page_number: @item.id + 1", + "_cleaned": "completed | set_local: show_page_number: @item.id + 1" + } + ], + "condition": "@item.id == 1 && @local.number_of_pages != 1", + "rows": [ + { + "name": "image_src", + "value": "@data.@local.image_src", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.first_page.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.image_src", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.image_src", + "matchedExpression": "@item.id.first_page.image_src", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.image_src": [ + "value", + "condition" + ], + "@item.id.first_page.image_src": [ + "_nested_name" + ] + } + }, + { + "name": "text", + "value": "@data.@local.text", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.text)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.first_page.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.text", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.text)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.text", + "matchedExpression": "@item.id.first_page.text", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.text": [ + "value", + "condition" + ], + "@item.id.first_page.text": [ + "_nested_name" + ] + } + }, + { + "name": "dashed_box", + "value": "@data.@local.dashed_box", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.first_page.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.dashed_box", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.dashed_box", + "matchedExpression": "@item.id.first_page.dashed_box", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.dashed_box": [ + "value", + "condition" + ], + "@item.id.first_page.dashed_box": [ + "_nested_name" + ] + } + }, + { + "type": "nested_properties", + "name": "nav_buttons", + "value": "nav_buttons", + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "condition": "@local.use_completed_chevron", + "type": "set_variable", + "_nested_name": "items.page_@item.id.first_page.nav_buttons.use_completed_chevron", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.use_completed_chevron", + "matchedExpression": "@local.use_completed_chevron", + "type": "local", + "fieldName": "use_completed_chevron" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.nav_buttons.use_completed_chevron", + "matchedExpression": "@item.id.first_page.nav_buttons.use_completed_chevron", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.use_completed_chevron": [ + "condition" + ], + "@item.id.first_page.nav_buttons.use_completed_chevron": [ + "_nested_name" + ] + } + }, + { + "name": "button_completed", + "value": "@global.more_button", + "_translations": { + "value": {} + }, + "condition": "@local.use_completed_more", + "type": "set_variable", + "_nested_name": "items.page_@item.id.first_page.nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.more_button", + "matchedExpression": "@global.more_button", + "type": "global", + "fieldName": "more_button" + } + ], + "condition": [ + { + "fullExpression": "@local.use_completed_more", + "matchedExpression": "@local.use_completed_more", + "type": "local", + "fieldName": "use_completed_more" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.nav_buttons.button_completed", + "matchedExpression": "@item.id.first_page.nav_buttons.button_completed", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@global.more_button": [ + "value" + ], + "@local.use_completed_more": [ + "condition" + ], + "@item.id.first_page.nav_buttons.button_completed": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.first_page.nav_buttons", + "_dynamicFields": { + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page.nav_buttons", + "matchedExpression": "@item.id.first_page.nav_buttons", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id.first_page.nav_buttons": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.first_page", + "_dynamicFields": { + "action_list": { + "1": { + "args": { + "1": [ + { + "fullExpression": "@item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_local: show_page_number: @item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_local: show_page_number: @item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@item.id == 1 && @local.number_of_pages != 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id == 1 && @local.number_of_pages != 1", + "matchedExpression": "@local.number_of_pages", + "type": "local", + "fieldName": "number_of_pages" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.first_page", + "matchedExpression": "@item.id.first_page", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned", + "condition" + ], + "@local.number_of_pages": [ + "condition" + ], + "@item.id.first_page": [ + "_nested_name" + ] + } + }, + { + "type": "template", + "name": "middle_pages", + "value": "box_image", + "action_list": [ + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "show_page_number", + "@item.id - 1" + ], + "_raw": "uncompleted | set_local: show_page_number: @item.id - 1", + "_cleaned": "uncompleted | set_local: show_page_number: @item.id - 1" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "show_page_number", + "@item.id + 1" + ], + "_raw": "completed | set_local: show_page_number: @item.id + 1", + "_cleaned": "completed | set_local: show_page_number: @item.id + 1" + } + ], + "condition": "@item.id > 1 && @item.id < @local.number_of_pages", + "rows": [ + { + "name": "image_src", + "value": "@data.@local.image_src", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.middle_pages.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.image_src", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.image_src", + "matchedExpression": "@item.id.middle_pages.image_src", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.image_src": [ + "value", + "condition" + ], + "@item.id.middle_pages.image_src": [ + "_nested_name" + ] + } + }, + { + "name": "text", + "value": "@data.@local.text", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.text)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.middle_pages.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.text", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.text)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.text", + "matchedExpression": "@item.id.middle_pages.text", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.text": [ + "value", + "condition" + ], + "@item.id.middle_pages.text": [ + "_nested_name" + ] + } + }, + { + "name": "dashed_box", + "value": "@data.@local.dashed_box", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.middle_pages.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.dashed_box", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.dashed_box", + "matchedExpression": "@item.id.middle_pages.dashed_box", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.dashed_box": [ + "value", + "condition" + ], + "@item.id.middle_pages.dashed_box": [ + "_nested_name" + ] + } + }, + { + "type": "nested_properties", + "name": "nav_buttons", + "value": "nav_buttons", + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "condition": "@local.use_completed_chevron", + "type": "set_variable", + "_nested_name": "items.page_@item.id.middle_pages.nav_buttons.use_completed_chevron", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.use_completed_chevron", + "matchedExpression": "@local.use_completed_chevron", + "type": "local", + "fieldName": "use_completed_chevron" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.nav_buttons.use_completed_chevron", + "matchedExpression": "@item.id.middle_pages.nav_buttons.use_completed_chevron", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.use_completed_chevron": [ + "condition" + ], + "@item.id.middle_pages.nav_buttons.use_completed_chevron": [ + "_nested_name" + ] + } + }, + { + "name": "button_completed", + "value": "@global.more_button", + "_translations": { + "value": {} + }, + "condition": "@local.use_completed_more", + "type": "set_variable", + "_nested_name": "items.page_@item.id.middle_pages.nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.more_button", + "matchedExpression": "@global.more_button", + "type": "global", + "fieldName": "more_button" + } + ], + "condition": [ + { + "fullExpression": "@local.use_completed_more", + "matchedExpression": "@local.use_completed_more", + "type": "local", + "fieldName": "use_completed_more" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.nav_buttons.button_completed", + "matchedExpression": "@item.id.middle_pages.nav_buttons.button_completed", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@global.more_button": [ + "value" + ], + "@local.use_completed_more": [ + "condition" + ], + "@item.id.middle_pages.nav_buttons.button_completed": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.middle_pages.nav_buttons", + "_dynamicFields": { + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages.nav_buttons", + "matchedExpression": "@item.id.middle_pages.nav_buttons", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id.middle_pages.nav_buttons": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.middle_pages", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_local: show_page_number: @item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_local: show_page_number: @item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "1": { + "args": { + "1": [ + { + "fullExpression": "@item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_local: show_page_number: @item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_local: show_page_number: @item.id + 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@item.id > 1 && @item.id < @local.number_of_pages", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id > 1 && @item.id < @local.number_of_pages", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id > 1 && @item.id < @local.number_of_pages", + "matchedExpression": "@local.number_of_pages", + "type": "local", + "fieldName": "number_of_pages" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.middle_pages", + "matchedExpression": "@item.id.middle_pages", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned", + "condition", + "condition" + ], + "@local.number_of_pages": [ + "condition" + ], + "@item.id.middle_pages": [ + "_nested_name" + ] + } + }, + { + "type": "template", + "name": "last_page", + "value": "box_image", + "action_list": [ + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "show_page_number", + "@item.id - 1" + ], + "_raw": "uncompleted | set_local: show_page_number: @item.id - 1", + "_cleaned": "uncompleted | set_local: show_page_number: @item.id - 1" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + } + ], + "condition": "@item.id == @local.number_of_pages && @local.number_of_pages != 1", + "rows": [ + { + "name": "image_src", + "value": "@data.@local.image_src", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.last_page.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.image_src", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.last_page.image_src", + "matchedExpression": "@item.id.last_page.image_src", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.image_src": [ + "value", + "condition" + ], + "@item.id.last_page.image_src": [ + "_nested_name" + ] + } + }, + { + "name": "text", + "value": "@data.@local.text", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.text)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.last_page.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.text", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.text)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.last_page.text", + "matchedExpression": "@item.id.last_page.text", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.text": [ + "value", + "condition" + ], + "@item.id.last_page.text": [ + "_nested_name" + ] + } + }, + { + "name": "dashed_box", + "value": "@data.@local.dashed_box", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.page_@item.id.last_page.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.dashed_box", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.last_page.dashed_box", + "matchedExpression": "@item.id.last_page.dashed_box", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.dashed_box": [ + "value", + "condition" + ], + "@item.id.last_page.dashed_box": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id.last_page", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_local: show_page_number: @item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_local: show_page_number: @item.id - 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@item.id == @local.number_of_pages && @local.number_of_pages != 1", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id == @local.number_of_pages && @local.number_of_pages != 1", + "matchedExpression": "@local.number_of_pages", + "type": "local", + "fieldName": "number_of_pages" + }, + { + "fullExpression": "@item.id == @local.number_of_pages && @local.number_of_pages != 1", + "matchedExpression": "@local.number_of_pages", + "type": "local", + "fieldName": "number_of_pages" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id.last_page", + "matchedExpression": "@item.id.last_page", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "condition" + ], + "@local.number_of_pages": [ + "condition", + "condition" + ], + "@item.id.last_page": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.page_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "page_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "hidden": [ + { + "fullExpression": "@item.id != @local.show_page_number", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id != @local.show_page_number", + "matchedExpression": "@local.show_page_number", + "type": "local", + "fieldName": "show_page_number" + } + ], + "_nested_name": [ + { + "fullExpression": "items.page_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "hidden", + "_nested_name" + ], + "@local.image_src": [ + "condition" + ], + "@local.text": [ + "condition" + ], + "@local.dashed_box": [ + "condition" + ], + "@local.show_page_number": [ + "hidden" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.number", + "matchedExpression": "@data.number", + "type": "data", + "fieldName": "number" + } + ] + }, + "_dynamicDependencies": { + "@data.number": [ + "value" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_story_scroll.json b/packages/app-data/sheets/template/box_story_scroll.json new file mode 100644 index 0000000000..011cee4170 --- /dev/null +++ b/packages/app-data/sheets/template/box_story_scroll.json @@ -0,0 +1,455 @@ +{ + "flow_type": "template", + "flow_name": "box_story_scroll", + "status": "released", + "rows": [ + { + "name": "story_id", + "value": "praise", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "story_id" + }, + { + "type": "items", + "value": "@data.number", + "rows": [ + { + "name": "image_src_temp", + "value": "image_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "image_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "image_src", + "value": "story.@local.story_id.@local.image_src_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.image_src_temp", + "matchedExpression": "@local.image_src_temp", + "type": "local", + "fieldName": "image_src_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.image_src_temp": [ + "value" + ] + } + }, + { + "name": "text_temp", + "value": "text_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "text_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "text", + "value": "story.@local.story_id.@local.text_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.text_temp", + "matchedExpression": "@local.text_temp", + "type": "local", + "fieldName": "text_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.text_temp": [ + "value" + ] + } + }, + { + "name": "dashed_box_temp", + "value": "dashed_box_@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box_temp", + "_dynamicFields": { + "value": [ + { + "fullExpression": "dashed_box_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "name": "dashed_box", + "value": "story.@local.story_id.@local.dashed_box_temp", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + }, + { + "fullExpression": "story.@local.story_id.@local.dashed_box_temp", + "matchedExpression": "@local.dashed_box_temp", + "type": "local", + "fieldName": "dashed_box_temp" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ], + "@local.dashed_box_temp": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dashed_box_@item.id", + "parameter_list": { + "style": "dashed_box" + }, + "condition": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "rows": [ + { + "type": "template", + "name": "box_image", + "value": "box_image", + "rows": [ + { + "name": "image_src", + "value": "@data.@local.image_src", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.image_src)", + "type": "set_variable", + "_nested_name": "items.dashed_box_@item.id.box_image.image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.image_src", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id.box_image.image_src", + "matchedExpression": "@item.id.box_image.image_src", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.image_src": [ + "value", + "condition" + ], + "@item.id.box_image.image_src": [ + "_nested_name" + ] + } + }, + { + "name": "text", + "value": "@data.@local.text", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.text)", + "type": "set_variable", + "_nested_name": "items.dashed_box_@item.id.box_image.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.text", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.text)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id.box_image.text", + "matchedExpression": "@item.id.box_image.text", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.text": [ + "value", + "condition" + ], + "@item.id.box_image.text": [ + "_nested_name" + ] + } + }, + { + "name": "dashed_box", + "value": "@data.@local.dashed_box", + "_translations": { + "value": {} + }, + "condition": "!!(@data.@local.dashed_box)", + "type": "set_variable", + "_nested_name": "items.dashed_box_@item.id.box_image.dashed_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.dashed_box", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id.box_image.dashed_box", + "matchedExpression": "@item.id.box_image.dashed_box", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.dashed_box": [ + "value", + "condition" + ], + "@item.id.box_image.dashed_box": [ + "_nested_name" + ] + } + }, + { + "type": "nested_properties", + "name": "nav_buttons", + "hidden": true, + "rows": [], + "_nested_name": "items.dashed_box_@item.id.box_image.nav_buttons", + "_dynamicFields": { + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id.box_image.nav_buttons", + "matchedExpression": "@item.id.box_image.nav_buttons", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id.box_image.nav_buttons": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.dashed_box_@item.id.box_image", + "_dynamicFields": { + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id.box_image", + "matchedExpression": "@item.id.box_image", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id.box_image": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.dashed_box_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dashed_box_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "condition": [ + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.image_src", + "type": "local", + "fieldName": "image_src" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.text", + "type": "local", + "fieldName": "text" + }, + { + "fullExpression": "!!(@data.@local.image_src) || !!(@data.@local.text) || !!(@data.@local.dashed_box)", + "matchedExpression": "@local.dashed_box", + "type": "local", + "fieldName": "dashed_box" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dashed_box_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@local.image_src": [ + "condition" + ], + "@local.text": [ + "condition" + ], + "@local.dashed_box": [ + "condition" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.number", + "matchedExpression": "@data.number", + "type": "data", + "fieldName": "number" + } + ] + }, + "_dynamicDependencies": { + "@data.number": [ + "value" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/box_story.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_survey_question.json b/packages/app-data/sheets/template/box_survey_question.json new file mode 100644 index 0000000000..79e03c18f4 --- /dev/null +++ b/packages/app-data/sheets/template/box_survey_question.json @@ -0,0 +1,5276 @@ +{ + "flow_type": "template", + "flow_name": "box_survey_question", + "status": "released", + "rows": [ + { + "name": "survey_name", + "value": "@fields.current_survey_name", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "survey_name", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_survey_name", + "matchedExpression": "@fields.current_survey_name", + "type": "fields", + "fieldName": "current_survey_name" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_survey_name": [ + "value" + ] + } + }, + { + "name": "question_group_id", + "value": "ppp", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "question_group_id" + }, + { + "name": "survey_question_group_id", + "value": "survey_question_group.@local.question_group_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "survey_question_group_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "survey_question_group.@local.question_group_id", + "matchedExpression": "@local.question_group_id", + "type": "local", + "fieldName": "question_group_id" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_id": [ + "value" + ] + } + }, + { + "name": "question_group_data", + "value": "@data.@local.survey_question_group_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "question_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.survey_question_group_id", + "matchedExpression": "@local.survey_question_group_id", + "type": "local", + "fieldName": "survey_question_group_id" + } + ] + }, + "_dynamicDependencies": { + "@local.survey_question_group_id": [ + "value" + ] + } + }, + { + "name": "us", + "value": "_", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "us" + }, + { + "name": "version", + "value": "_version", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "version" + }, + { + "type": "image", + "name": "image_src", + "value": "@local.question_group_data.image_asset", + "_translations": { + "value": {} + }, + "condition": "@local.question_group_data.image_asset", + "exclude_from_translation": true, + "style_list": [ + "height: 150px" + ], + "_nested_name": "image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.image_asset", + "matchedExpression": "@local.question_group_data.image_asset", + "type": "local", + "fieldName": "question_group_data" + } + ], + "condition": [ + { + "fullExpression": "@local.question_group_data.image_asset", + "matchedExpression": "@local.question_group_data.image_asset", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.image_asset": [ + "value", + "condition" + ] + } + }, + { + "name": "answer_list", + "value": [ + "name:yes | text:Yes", + "name:no | text:No" + ], + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "answer_list" + }, + { + "name": "response_field_1", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_field_1" + }, + { + "name": "response_field_2", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_field_2" + }, + { + "name": "response_field_3", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_field_3" + }, + { + "type": "items", + "value": "@data.survey_question", + "exclude_from_translation": true, + "rows": [ + { + "type": "display_group", + "name": "filter_relevant_questions", + "condition": "@item.group == @local.question_group_id", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "id_part_@item.part_no", + "value": "@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.filter_relevant_questions.id_part_@item.part_no", + "_dynamicFields": { + "name": [ + { + "fullExpression": "id_part_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ], + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.filter_relevant_questions.id_part_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ] + }, + "_dynamicDependencies": { + "@item.part_no": [ + "name", + "_nested_name" + ], + "@item.id": [ + "value" + ] + } + }, + { + "name": "response_field_@item.part_no", + "value": "@local.survey_name@local.us@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.filter_relevant_questions.response_field_@item.part_no", + "_dynamicFields": { + "name": [ + { + "fullExpression": "response_field_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ], + "value": [ + { + "fullExpression": "@local.survey_name@local.us@item.id", + "matchedExpression": "@local.survey_name", + "type": "local", + "fieldName": "survey_name" + }, + { + "fullExpression": "@local.survey_name@local.us@item.id", + "matchedExpression": "@local.us", + "type": "local", + "fieldName": "us" + }, + { + "fullExpression": "@local.survey_name@local.us@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.filter_relevant_questions.response_field_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ] + }, + "_dynamicDependencies": { + "@item.part_no": [ + "name", + "_nested_name" + ], + "@local.survey_name": [ + "value" + ], + "@local.us": [ + "value" + ], + "@item.id": [ + "value" + ] + } + }, + { + "name": "version_field_@item.part_no", + "value": "@local.survey_name@local.us@item.id@local.version", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.filter_relevant_questions.version_field_@item.part_no", + "_dynamicFields": { + "name": [ + { + "fullExpression": "version_field_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ], + "value": [ + { + "fullExpression": "@local.survey_name@local.us@item.id@local.version", + "matchedExpression": "@local.survey_name", + "type": "local", + "fieldName": "survey_name" + }, + { + "fullExpression": "@local.survey_name@local.us@item.id@local.version", + "matchedExpression": "@local.us", + "type": "local", + "fieldName": "us" + }, + { + "fullExpression": "@local.survey_name@local.us@item.id@local.version", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@local.survey_name@local.us@item.id@local.version", + "matchedExpression": "@local.version", + "type": "local", + "fieldName": "version" + } + ], + "_nested_name": [ + { + "fullExpression": "items.filter_relevant_questions.version_field_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ] + }, + "_dynamicDependencies": { + "@item.part_no": [ + "name", + "_nested_name" + ], + "@local.survey_name": [ + "value" + ], + "@local.us": [ + "value" + ], + "@item.id": [ + "value" + ], + "@local.version": [ + "value" + ] + } + }, + { + "name": "version_no_@item.part_no", + "value": "@item.version_no", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.filter_relevant_questions.version_no_@item.part_no", + "_dynamicFields": { + "name": [ + { + "fullExpression": "version_no_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ], + "value": [ + { + "fullExpression": "@item.version_no", + "matchedExpression": "@item.version_no", + "type": "item", + "fieldName": "version_no" + } + ], + "_nested_name": [ + { + "fullExpression": "items.filter_relevant_questions.version_no_@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ] + }, + "_dynamicDependencies": { + "@item.part_no": [ + "name", + "_nested_name" + ], + "@item.version_no": [ + "value" + ] + } + }, + { + "name": "no_of_parts", + "value": "@item.part_no", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.filter_relevant_questions.no_of_parts", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.part_no", + "matchedExpression": "@item.part_no", + "type": "item", + "fieldName": "part_no" + } + ] + }, + "_dynamicDependencies": { + "@item.part_no": [ + "value" + ] + } + } + ], + "_nested_name": "items.filter_relevant_questions", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@item.group == @local.question_group_id", + "matchedExpression": "@item.group", + "type": "item", + "fieldName": "group" + }, + { + "fullExpression": "@item.group == @local.question_group_id", + "matchedExpression": "@local.question_group_id", + "type": "local", + "fieldName": "question_group_id" + } + ] + }, + "_dynamicDependencies": { + "@item.group": [ + "condition" + ], + "@local.question_group_id": [ + "condition" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.survey_question", + "matchedExpression": "@data.survey_question", + "type": "data", + "fieldName": "survey_question" + } + ] + }, + "_dynamicDependencies": { + "@data.survey_question": [ + "value" + ] + } + }, + { + "name": "answered_part_1", + "value": "!!@fields.@local.response_field_1 || @fields.@local.response_field_1 === 0", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "answered_part_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!!@fields.@local.response_field_1 || @fields.@local.response_field_1 === 0", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "!!@fields.@local.response_field_1 || @fields.@local.response_field_1 === 0", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + } + ] + }, + "_dynamicDependencies": { + "@local.response_field_1": [ + "value", + "value" + ] + } + }, + { + "name": "answered_part_2", + "value": "!!@fields.@local.response_field_2 || @fields.@local.response_field_2 === 0", + "_translations": { + "value": {} + }, + "condition": "@local.no_of_parts > 1", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "answered_part_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!!@fields.@local.response_field_2 || @fields.@local.response_field_2 === 0", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "!!@fields.@local.response_field_2 || @fields.@local.response_field_2 === 0", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + } + ], + "condition": [ + { + "fullExpression": "@local.no_of_parts > 1", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + } + ] + }, + "_dynamicDependencies": { + "@local.response_field_2": [ + "value", + "value" + ], + "@local.no_of_parts": [ + "condition" + ] + } + }, + { + "name": "answered_part_3", + "value": "!!@fields.@local.response_field_3 || @fields.@local.response_field_3 === 0", + "_translations": { + "value": {} + }, + "condition": "@local.no_of_parts > 2", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "answered_part_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!!@fields.@local.response_field_3 || @fields.@local.response_field_3 === 0", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "!!@fields.@local.response_field_3 || @fields.@local.response_field_3 === 0", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ], + "condition": [ + { + "fullExpression": "@local.no_of_parts > 2", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + } + ] + }, + "_dynamicDependencies": { + "@local.response_field_3": [ + "value", + "value" + ], + "@local.no_of_parts": [ + "condition" + ] + } + }, + { + "name": "response_local_1", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_local_1" + }, + { + "name": "response_local_2", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_local_2" + }, + { + "name": "response_local_3", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_local_3" + }, + { + "name": "response_1_geq_threshold", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_1_geq_threshold" + }, + { + "name": "response_2_geq_threshold", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_2_geq_threshold" + }, + { + "name": "response_3_geq_threshold", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "response_3_geq_threshold" + }, + { + "exclude_from_translation": true, + "type": "set_variable", + "name": "set_variable", + "_nested_name": "set_variable" + }, + { + "type": "display_group", + "name": "part_1", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "sq_part_1", + "value": "survey_question.@local.id_part_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.sq_part_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "survey_question.@local.id_part_1", + "matchedExpression": "@local.id_part_1", + "type": "local", + "fieldName": "id_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.id_part_1": [ + "value" + ] + } + }, + { + "name": "data_part_1", + "value": "@data.@local.sq_part_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.data_part_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.sq_part_1", + "matchedExpression": "@local.sq_part_1", + "type": "local", + "fieldName": "sq_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.sq_part_1": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1", + "value": "@local.data_part_1.intro_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "part_1.text_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_1.intro_text", + "matchedExpression": "@local.data_part_1.intro_text", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.intro_text": [ + "value" + ] + } + }, + { + "type": "text", + "name": "question_text_1", + "value": "@local.data_part_1.question", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "part_1.question_text_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_1.question", + "matchedExpression": "@local.data_part_1.question", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.question": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "slider_1_type", + "condition": "@local.data_part_1.type == \"slider\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "slider_1_min_value", + "value": "+@local.data_part_1.range_min", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_min_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_1.range_min", + "matchedExpression": "@local.data_part_1.range_min", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.range_min": [ + "value" + ] + } + }, + { + "name": "slider_1_min_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_min_value_label" + }, + { + "name": "slider_1_min_value_label", + "value": "@local.data_part_1.range_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_1.range_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_1.range_description", + "matchedExpression": "@local.data_part_1.range_description", + "type": "local", + "fieldName": "data_part_1" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_1.range_description", + "matchedExpression": "@local.data_part_1.range_description", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.range_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_1_min_value_label", + "value": "@local.data_part_1.min_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_1.min_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_1.min_description", + "matchedExpression": "@local.data_part_1.min_description", + "type": "local", + "fieldName": "data_part_1" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_1.min_description", + "matchedExpression": "@local.data_part_1.min_description", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.min_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_1_max_value", + "value": "+@local.data_part_1.range_max", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_max_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_1.range_max", + "matchedExpression": "@local.data_part_1.range_max", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.range_max": [ + "value" + ] + } + }, + { + "name": "slider_1_max_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_max_value_label" + }, + { + "name": "slider_1_max_value_label", + "value": "@local.data_part_1.max_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_1.max_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.slider_1_max_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_1.max_description", + "matchedExpression": "@local.data_part_1.max_description", + "type": "local", + "fieldName": "data_part_1" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_1.max_description", + "matchedExpression": "@local.data_part_1.max_description", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.max_description": [ + "value", + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 8, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.labels_count" + }, + { + "name": "labels_count", + "value": 5, + "condition": "@local.slider_1_max_value == 8", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_1_max_value == 8", + "matchedExpression": "@local.slider_1_max_value", + "type": "local", + "fieldName": "slider_1_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_1_max_value": [ + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 7, + "condition": "@local.slider_1_max_value == 30", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_1_max_value == 30", + "matchedExpression": "@local.slider_1_max_value", + "type": "local", + "fieldName": "slider_1_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_1_max_value": [ + "condition" + ] + } + }, + { + "type": "slider", + "name": "slider_1", + "value": "@fields.@local.response_field_1", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_1", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_1: @local.slider_1", + "_cleaned": "changed | set_field: @local.response_field_1: @local.slider_1" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_1", + "this.value" + ], + "_raw": "changed | set_local: response_local_1 : @local.slider_1", + "_cleaned": "changed | set_local: response_local_1 : @local.slider_1" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_1", + "@local.version_no_1" + ], + "_raw": "changed | set_field: @local.version_field_1: @local.version_no_1", + "_cleaned": "changed | set_field: @local.version_field_1: @local.version_no_1" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_1", + true + ], + "_raw": "changed | set_local: answered_part_1: true", + "_cleaned": "changed | set_local: answered_part_1: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "min": "@local.slider_1_min_value", + "min_value_label": "@local.slider_1_min_value_label", + "max": "@local.slider_1_max_value", + "max_value_label": "@local.slider_1_max_value_label", + "labels_count": "@local.labels_count" + }, + "_nested_name": "part_1.slider_1_type.slider_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.slider_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.slider_1", + "matchedExpression": "@local.slider_1", + "type": "local", + "fieldName": "slider_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.slider_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.slider_1", + "matchedExpression": "@local.slider_1", + "type": "local", + "fieldName": "slider_1" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_1 : @local.slider_1", + "matchedExpression": "@local.slider_1", + "type": "local", + "fieldName": "slider_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_1 : @local.slider_1", + "matchedExpression": "@local.slider_1", + "type": "local", + "fieldName": "slider_1" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + }, + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + }, + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ] + } + }, + "parameter_list": { + "min": [ + { + "fullExpression": "@local.slider_1_min_value", + "matchedExpression": "@local.slider_1_min_value", + "type": "local", + "fieldName": "slider_1_min_value" + } + ], + "min_value_label": [ + { + "fullExpression": "@local.slider_1_min_value_label", + "matchedExpression": "@local.slider_1_min_value_label", + "type": "local", + "fieldName": "slider_1_min_value_label" + } + ], + "max": [ + { + "fullExpression": "@local.slider_1_max_value", + "matchedExpression": "@local.slider_1_max_value", + "type": "local", + "fieldName": "slider_1_max_value" + } + ], + "max_value_label": [ + { + "fullExpression": "@local.slider_1_max_value_label", + "matchedExpression": "@local.slider_1_max_value_label", + "type": "local", + "fieldName": "slider_1_max_value_label" + } + ], + "labels_count": [ + { + "fullExpression": "@local.labels_count", + "matchedExpression": "@local.labels_count", + "type": "local", + "fieldName": "labels_count" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_1": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.slider_1": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_1": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_1": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.slider_1_min_value": [ + "parameter_list.min" + ], + "@local.slider_1_min_value_label": [ + "parameter_list.min_value_label" + ], + "@local.slider_1_max_value": [ + "parameter_list.max" + ], + "@local.slider_1_max_value_label": [ + "parameter_list.max_value_label" + ], + "@local.labels_count": [ + "parameter_list.labels_count" + ] + } + }, + { + "name": "threshold_1", + "value": "+@local.data_part_1.threshold", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.threshold_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_1.threshold", + "matchedExpression": "@local.data_part_1.threshold", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.threshold": [ + "value" + ] + } + }, + { + "name": "response_1_geq_threshold", + "value": "@local.response_local_1 >= @local.threshold_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_1.slider_1_type.response_1_geq_threshold", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.response_local_1 >= @local.threshold_1", + "matchedExpression": "@local.response_local_1", + "type": "local", + "fieldName": "response_local_1" + }, + { + "fullExpression": "@local.response_local_1 >= @local.threshold_1", + "matchedExpression": "@local.threshold_1", + "type": "local", + "fieldName": "threshold_1" + } + ] + }, + "_dynamicDependencies": { + "@local.response_local_1": [ + "value" + ], + "@local.threshold_1": [ + "value" + ] + } + } + ], + "_nested_name": "part_1.slider_1_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_1.type == \"slider\"", + "matchedExpression": "@local.data_part_1.type", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.type": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "yes_no_1_type", + "condition": "@local.data_part_1.type == \"yes_no\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "radio_group", + "name": "radio_group_1", + "value": "@fields.@local.response_field_1", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_1", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_1: @local.radio_group_1", + "_cleaned": "changed | set_field: @local.response_field_1: @local.radio_group_1" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_1", + "this.value" + ], + "_raw": "changed | set_local: response_local_1 : @local.radio_group_1", + "_cleaned": "changed | set_local: response_local_1 : @local.radio_group_1" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_1", + "@local.version_no_1" + ], + "_raw": "changed | set_field: @local.version_field_1: @local.version_no_1", + "_cleaned": "changed | set_field: @local.version_field_1: @local.version_no_1" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_1", + true + ], + "_raw": "changed | set_local: answered_part_1: true", + "_cleaned": "changed | set_local: answered_part_1: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "answer_list": "@local.answer_list", + "options_per_row": "2" + }, + "_nested_name": "part_1.yes_no_1_type.radio_group_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.radio_group_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.radio_group_1", + "matchedExpression": "@local.radio_group_1", + "type": "local", + "fieldName": "radio_group_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.radio_group_1", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "changed | set_field: @local.response_field_1: @local.radio_group_1", + "matchedExpression": "@local.radio_group_1", + "type": "local", + "fieldName": "radio_group_1" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_1 : @local.radio_group_1", + "matchedExpression": "@local.radio_group_1", + "type": "local", + "fieldName": "radio_group_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_1 : @local.radio_group_1", + "matchedExpression": "@local.radio_group_1", + "type": "local", + "fieldName": "radio_group_1" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + }, + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_field_1", + "type": "local", + "fieldName": "version_field_1" + }, + { + "fullExpression": "changed | set_field: @local.version_field_1: @local.version_no_1", + "matchedExpression": "@local.version_no_1", + "type": "local", + "fieldName": "version_no_1" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list", + "matchedExpression": "@local.answer_list", + "type": "local", + "fieldName": "answer_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_1": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.radio_group_1": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_1": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_1": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.answer_list": [ + "parameter_list.answer_list" + ] + } + } + ], + "_nested_name": "part_1.yes_no_1_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_1.type == \"yes_no\"", + "matchedExpression": "@local.data_part_1.type", + "type": "local", + "fieldName": "data_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_1.type": [ + "condition" + ] + } + } + ], + "_nested_name": "part_1" + }, + { + "exclude_from_translation": true, + "type": "set_variable", + "name": "set_variable", + "_nested_name": "set_variable" + }, + { + "type": "display_group", + "name": "part_2", + "condition": "@local.no_of_parts > 1 && @local.answered_part_1", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "sq_part_2", + "value": "survey_question.@local.id_part_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.sq_part_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "survey_question.@local.id_part_2", + "matchedExpression": "@local.id_part_2", + "type": "local", + "fieldName": "id_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.id_part_2": [ + "value" + ] + } + }, + { + "name": "data_part_2", + "value": "@data.@local.sq_part_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.data_part_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.sq_part_2", + "matchedExpression": "@local.sq_part_2", + "type": "local", + "fieldName": "sq_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.sq_part_2": [ + "value" + ] + } + }, + { + "name": "part_2_relevant", + "value": "(!@local.data_part_2.previous_part_condition) || @local.data_part_2.previous_part_condition == @local.response_local_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.part_2_relevant", + "_dynamicFields": { + "value": [ + { + "fullExpression": "(!@local.data_part_2.previous_part_condition) || @local.data_part_2.previous_part_condition == @local.response_local_1", + "matchedExpression": "!@local.data_part_2.previous_part_condition", + "type": "local", + "fieldName": "data_part_2" + }, + { + "fullExpression": "(!@local.data_part_2.previous_part_condition) || @local.data_part_2.previous_part_condition == @local.response_local_1", + "matchedExpression": "@local.data_part_2.previous_part_condition", + "type": "local", + "fieldName": "data_part_2" + }, + { + "fullExpression": "(!@local.data_part_2.previous_part_condition) || @local.data_part_2.previous_part_condition == @local.response_local_1", + "matchedExpression": "@local.response_local_1", + "type": "local", + "fieldName": "response_local_1" + } + ] + }, + "_dynamicDependencies": { + "!@local.data_part_2.previous_part_condition": [ + "value" + ], + "@local.data_part_2.previous_part_condition": [ + "value" + ], + "@local.response_local_1": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "condition_part_2", + "condition": "@local.part_2_relevant", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "text_2", + "value": "@local.data_part_2.intro_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "part_2.condition_part_2.text_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_2.intro_text", + "matchedExpression": "@local.data_part_2.intro_text", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.intro_text": [ + "value" + ] + } + }, + { + "type": "text", + "name": "question_text_2", + "value": "@local.data_part_2.question", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "part_2.condition_part_2.question_text_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_2.question", + "matchedExpression": "@local.data_part_2.question", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.question": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "slider_2_type", + "condition": "@local.data_part_2.type == \"slider\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "slider_2_min_value", + "value": "+@local.data_part_2.range_min", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_min_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_2.range_min", + "matchedExpression": "@local.data_part_2.range_min", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.range_min": [ + "value" + ] + } + }, + { + "name": "slider_2_min_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_min_value_label" + }, + { + "name": "slider_2_min_value_label", + "value": "@local.data_part_2.range_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_2.range_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_2.range_description", + "matchedExpression": "@local.data_part_2.range_description", + "type": "local", + "fieldName": "data_part_2" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_2.range_description", + "matchedExpression": "@local.data_part_2.range_description", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.range_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_2_min_value_label", + "value": "@local.data_part_2.min_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_2.min_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_2.min_description", + "matchedExpression": "@local.data_part_2.min_description", + "type": "local", + "fieldName": "data_part_2" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_2.min_description", + "matchedExpression": "@local.data_part_2.min_description", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.min_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_2_max_value", + "value": "+@local.data_part_2.range_max", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_max_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_2.range_max", + "matchedExpression": "@local.data_part_2.range_max", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.range_max": [ + "value" + ] + } + }, + { + "name": "slider_2_max_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_max_value_label" + }, + { + "name": "slider_2_max_value_label", + "value": "@local.data_part_2.max_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_2.max_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2_max_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_2.max_description", + "matchedExpression": "@local.data_part_2.max_description", + "type": "local", + "fieldName": "data_part_2" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_2.max_description", + "matchedExpression": "@local.data_part_2.max_description", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.max_description": [ + "value", + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 8, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.labels_count" + }, + { + "name": "labels_count", + "value": 5, + "condition": "@local.slider_2_max_value == 8", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_2_max_value == 8", + "matchedExpression": "@local.slider_2_max_value", + "type": "local", + "fieldName": "slider_2_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_2_max_value": [ + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 7, + "condition": "@local.slider_2_max_value == 30", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_2_max_value == 30", + "matchedExpression": "@local.slider_2_max_value", + "type": "local", + "fieldName": "slider_2_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_2_max_value": [ + "condition" + ] + } + }, + { + "type": "slider", + "name": "slider_2", + "value": "@fields.@local.response_field_2", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_2", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_2: @local.slider_2", + "_cleaned": "changed | set_field: @local.response_field_2: @local.slider_2" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_2", + "this.value" + ], + "_raw": "changed | set_local: response_local_2 : @local.slider_2", + "_cleaned": "changed | set_local: response_local_2 : @local.slider_2" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_2", + "@local.version_no_2" + ], + "_raw": "changed | set_field: @local.version_field_2: @local.version_no_2", + "_cleaned": "changed | set_field: @local.version_field_2: @local.version_no_2" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_2", + true + ], + "_raw": "changed | set_local: answered_part_2: true", + "_cleaned": "changed | set_local: answered_part_2: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "min": "@local.slider_2_min_value", + "min_value_label": "@local.slider_2_min_value_label", + "max": "@local.slider_2_max_value", + "max_value_label": "@local.slider_2_max_value_label", + "labels_count": "@local.labels_count" + }, + "_nested_name": "part_2.condition_part_2.slider_2_type.slider_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.slider_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.slider_2", + "matchedExpression": "@local.slider_2", + "type": "local", + "fieldName": "slider_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.slider_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.slider_2", + "matchedExpression": "@local.slider_2", + "type": "local", + "fieldName": "slider_2" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_2 : @local.slider_2", + "matchedExpression": "@local.slider_2", + "type": "local", + "fieldName": "slider_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_2 : @local.slider_2", + "matchedExpression": "@local.slider_2", + "type": "local", + "fieldName": "slider_2" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + }, + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + }, + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ] + } + }, + "parameter_list": { + "min": [ + { + "fullExpression": "@local.slider_2_min_value", + "matchedExpression": "@local.slider_2_min_value", + "type": "local", + "fieldName": "slider_2_min_value" + } + ], + "min_value_label": [ + { + "fullExpression": "@local.slider_2_min_value_label", + "matchedExpression": "@local.slider_2_min_value_label", + "type": "local", + "fieldName": "slider_2_min_value_label" + } + ], + "max": [ + { + "fullExpression": "@local.slider_2_max_value", + "matchedExpression": "@local.slider_2_max_value", + "type": "local", + "fieldName": "slider_2_max_value" + } + ], + "max_value_label": [ + { + "fullExpression": "@local.slider_2_max_value_label", + "matchedExpression": "@local.slider_2_max_value_label", + "type": "local", + "fieldName": "slider_2_max_value_label" + } + ], + "labels_count": [ + { + "fullExpression": "@local.labels_count", + "matchedExpression": "@local.labels_count", + "type": "local", + "fieldName": "labels_count" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_2": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.slider_2": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_2": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_2": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.slider_2_min_value": [ + "parameter_list.min" + ], + "@local.slider_2_min_value_label": [ + "parameter_list.min_value_label" + ], + "@local.slider_2_max_value": [ + "parameter_list.max" + ], + "@local.slider_2_max_value_label": [ + "parameter_list.max_value_label" + ], + "@local.labels_count": [ + "parameter_list.labels_count" + ] + } + }, + { + "name": "threshold_2", + "value": "+@local.data_part_2.threshold", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.threshold_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_2.threshold", + "matchedExpression": "@local.data_part_2.threshold", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.threshold": [ + "value" + ] + } + }, + { + "name": "response_2_geq_threshold", + "value": "@local.response_local_2 >= @local.threshold_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_2.condition_part_2.slider_2_type.response_2_geq_threshold", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.response_local_2 >= @local.threshold_2", + "matchedExpression": "@local.response_local_2", + "type": "local", + "fieldName": "response_local_2" + }, + { + "fullExpression": "@local.response_local_2 >= @local.threshold_2", + "matchedExpression": "@local.threshold_2", + "type": "local", + "fieldName": "threshold_2" + } + ] + }, + "_dynamicDependencies": { + "@local.response_local_2": [ + "value" + ], + "@local.threshold_2": [ + "value" + ] + } + } + ], + "_nested_name": "part_2.condition_part_2.slider_2_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_2.type == \"slider\"", + "matchedExpression": "@local.data_part_2.type", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.type": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "yes_no_2_type", + "condition": "@local.data_part_2.type == \"yes_no\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "radio_group", + "name": "radio_group_2", + "value": "@fields.@local.response_field_2", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_2", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_2: @local.radio_group_2", + "_cleaned": "changed | set_field: @local.response_field_2: @local.radio_group_2" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_2", + "this.value" + ], + "_raw": "changed | set_local: response_local_2 : @local.radio_group_2", + "_cleaned": "changed | set_local: response_local_2 : @local.radio_group_2" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_2", + "@local.version_no_2" + ], + "_raw": "changed | set_field: @local.version_field_2: @local.version_no_2", + "_cleaned": "changed | set_field: @local.version_field_2: @local.version_no_2" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_2", + true + ], + "_raw": "changed | set_local: answered_part_2: true", + "_cleaned": "changed | set_local: answered_part_2: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "answer_list": "@local.answer_list", + "options_per_row": "2" + }, + "_nested_name": "part_2.condition_part_2.yes_no_2_type.radio_group_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.radio_group_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.radio_group_2", + "matchedExpression": "@local.radio_group_2", + "type": "local", + "fieldName": "radio_group_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.radio_group_2", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "changed | set_field: @local.response_field_2: @local.radio_group_2", + "matchedExpression": "@local.radio_group_2", + "type": "local", + "fieldName": "radio_group_2" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_2 : @local.radio_group_2", + "matchedExpression": "@local.radio_group_2", + "type": "local", + "fieldName": "radio_group_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_2 : @local.radio_group_2", + "matchedExpression": "@local.radio_group_2", + "type": "local", + "fieldName": "radio_group_2" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + }, + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_field_2", + "type": "local", + "fieldName": "version_field_2" + }, + { + "fullExpression": "changed | set_field: @local.version_field_2: @local.version_no_2", + "matchedExpression": "@local.version_no_2", + "type": "local", + "fieldName": "version_no_2" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list", + "matchedExpression": "@local.answer_list", + "type": "local", + "fieldName": "answer_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_2": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.radio_group_2": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_2": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_2": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.answer_list": [ + "parameter_list.answer_list" + ] + } + } + ], + "_nested_name": "part_2.condition_part_2.yes_no_2_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_2.type == \"yes_no\"", + "matchedExpression": "@local.data_part_2.type", + "type": "local", + "fieldName": "data_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_2.type": [ + "condition" + ] + } + } + ], + "_nested_name": "part_2.condition_part_2", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.part_2_relevant", + "matchedExpression": "@local.part_2_relevant", + "type": "local", + "fieldName": "part_2_relevant" + } + ] + }, + "_dynamicDependencies": { + "@local.part_2_relevant": [ + "condition" + ] + } + } + ], + "_nested_name": "part_2", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.no_of_parts > 1 && @local.answered_part_1", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts > 1 && @local.answered_part_1", + "matchedExpression": "@local.answered_part_1", + "type": "local", + "fieldName": "answered_part_1" + } + ] + }, + "_dynamicDependencies": { + "@local.no_of_parts": [ + "condition" + ], + "@local.answered_part_1": [ + "condition" + ] + } + }, + { + "exclude_from_translation": true, + "type": "set_variable", + "name": "set_variable", + "_nested_name": "set_variable" + }, + { + "type": "display_group", + "name": "part_3", + "condition": "@local.no_of_parts > 2 && @local.answered_part_1 && @local.answered_part_2", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "sq_part_3", + "value": "survey_question.@local.id_part_3", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.sq_part_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "survey_question.@local.id_part_3", + "matchedExpression": "@local.id_part_3", + "type": "local", + "fieldName": "id_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.id_part_3": [ + "value" + ] + } + }, + { + "name": "data_part_3", + "value": "@data.@local.sq_part_3", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.data_part_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.sq_part_3", + "matchedExpression": "@local.sq_part_3", + "type": "local", + "fieldName": "sq_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.sq_part_3": [ + "value" + ] + } + }, + { + "name": "part_3_relevant", + "value": "(!@local.data_part_3.previous_part_condition) || @local.data_part_3.previous_part_condition == @local.response_local_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.part_3_relevant", + "_dynamicFields": { + "value": [ + { + "fullExpression": "(!@local.data_part_3.previous_part_condition) || @local.data_part_3.previous_part_condition == @local.response_local_1", + "matchedExpression": "!@local.data_part_3.previous_part_condition", + "type": "local", + "fieldName": "data_part_3" + }, + { + "fullExpression": "(!@local.data_part_3.previous_part_condition) || @local.data_part_3.previous_part_condition == @local.response_local_1", + "matchedExpression": "@local.data_part_3.previous_part_condition", + "type": "local", + "fieldName": "data_part_3" + }, + { + "fullExpression": "(!@local.data_part_3.previous_part_condition) || @local.data_part_3.previous_part_condition == @local.response_local_1", + "matchedExpression": "@local.response_local_1", + "type": "local", + "fieldName": "response_local_1" + } + ] + }, + "_dynamicDependencies": { + "!@local.data_part_3.previous_part_condition": [ + "value" + ], + "@local.data_part_3.previous_part_condition": [ + "value" + ], + "@local.response_local_1": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "condition_part_3", + "condition": "@local.part_3_relevant", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "text_3", + "value": "@local.data_part_3.intro_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "part_3.condition_part_3.text_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_3.intro_text", + "matchedExpression": "@local.data_part_3.intro_text", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.intro_text": [ + "value" + ] + } + }, + { + "type": "text", + "name": "question_text_3", + "value": "@local.data_part_3.question", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "part_3.condition_part_3.question_text_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_3.question", + "matchedExpression": "@local.data_part_3.question", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.question": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "slider_3_type", + "condition": "@local.data_part_3.type == \"slider\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "slider_3_min_value", + "value": "+@local.data_part_3.range_min", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_min_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_3.range_min", + "matchedExpression": "@local.data_part_3.range_min", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.range_min": [ + "value" + ] + } + }, + { + "name": "slider_3_min_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_min_value_label" + }, + { + "name": "slider_3_min_value_label", + "value": "@local.data_part_3.range_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_3.range_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_3.range_description", + "matchedExpression": "@local.data_part_3.range_description", + "type": "local", + "fieldName": "data_part_3" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_3.range_description", + "matchedExpression": "@local.data_part_3.range_description", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.range_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_3_min_value_label", + "value": "@local.data_part_3.min_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_3.min_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_min_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_3.min_description", + "matchedExpression": "@local.data_part_3.min_description", + "type": "local", + "fieldName": "data_part_3" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_3.min_description", + "matchedExpression": "@local.data_part_3.min_description", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.min_description": [ + "value", + "condition" + ] + } + }, + { + "name": "slider_3_max_value", + "value": "+@local.data_part_3.range_max", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_max_value", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_3.range_max", + "matchedExpression": "@local.data_part_3.range_max", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.range_max": [ + "value" + ] + } + }, + { + "name": "slider_3_max_value_label", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_max_value_label" + }, + { + "name": "slider_3_max_value_label", + "value": "@local.data_part_3.max_description", + "_translations": { + "value": {} + }, + "condition": "@local.data_part_3.max_description", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3_max_value_label", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.data_part_3.max_description", + "matchedExpression": "@local.data_part_3.max_description", + "type": "local", + "fieldName": "data_part_3" + } + ], + "condition": [ + { + "fullExpression": "@local.data_part_3.max_description", + "matchedExpression": "@local.data_part_3.max_description", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.max_description": [ + "value", + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 8, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.labels_count" + }, + { + "name": "labels_count", + "value": 5, + "condition": "@local.slider_3_max_value == 8", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_3_max_value == 8", + "matchedExpression": "@local.slider_3_max_value", + "type": "local", + "fieldName": "slider_3_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_3_max_value": [ + "condition" + ] + } + }, + { + "name": "labels_count", + "value": 7, + "condition": "@local.slider_3_max_value == 30", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.labels_count", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.slider_3_max_value == 30", + "matchedExpression": "@local.slider_3_max_value", + "type": "local", + "fieldName": "slider_3_max_value" + } + ] + }, + "_dynamicDependencies": { + "@local.slider_3_max_value": [ + "condition" + ] + } + }, + { + "type": "slider", + "name": "slider_3", + "value": "@fields.@local.response_field_3", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_3", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_3: @local.slider_3", + "_cleaned": "changed | set_field: @local.response_field_3: @local.slider_3" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_3", + "this.value" + ], + "_raw": "changed | set_local: response_local_3 : @local.slider_3", + "_cleaned": "changed | set_local: response_local_3 : @local.slider_3" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_3", + "@local.version_no_3" + ], + "_raw": "changed | set_field: @local.version_field_3: @local.version_no_3", + "_cleaned": "changed | set_field: @local.version_field_3: @local.version_no_3" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_3", + true + ], + "_raw": "changed | set_local: answered_part_3: true", + "_cleaned": "changed | set_local: answered_part_3: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "min": "@local.slider_3_min_value", + "min_value_label": "@local.slider_3_min_value_label", + "max": "@local.slider_3_max_value", + "max_value_label": "@local.slider_3_max_value_label", + "labels_count": "@local.labels_count" + }, + "_nested_name": "part_3.condition_part_3.slider_3_type.slider_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.slider_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.slider_3", + "matchedExpression": "@local.slider_3", + "type": "local", + "fieldName": "slider_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.slider_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.slider_3", + "matchedExpression": "@local.slider_3", + "type": "local", + "fieldName": "slider_3" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_3 : @local.slider_3", + "matchedExpression": "@local.slider_3", + "type": "local", + "fieldName": "slider_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_3 : @local.slider_3", + "matchedExpression": "@local.slider_3", + "type": "local", + "fieldName": "slider_3" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + }, + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + }, + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ] + } + }, + "parameter_list": { + "min": [ + { + "fullExpression": "@local.slider_3_min_value", + "matchedExpression": "@local.slider_3_min_value", + "type": "local", + "fieldName": "slider_3_min_value" + } + ], + "min_value_label": [ + { + "fullExpression": "@local.slider_3_min_value_label", + "matchedExpression": "@local.slider_3_min_value_label", + "type": "local", + "fieldName": "slider_3_min_value_label" + } + ], + "max": [ + { + "fullExpression": "@local.slider_3_max_value", + "matchedExpression": "@local.slider_3_max_value", + "type": "local", + "fieldName": "slider_3_max_value" + } + ], + "max_value_label": [ + { + "fullExpression": "@local.slider_3_max_value_label", + "matchedExpression": "@local.slider_3_max_value_label", + "type": "local", + "fieldName": "slider_3_max_value_label" + } + ], + "labels_count": [ + { + "fullExpression": "@local.labels_count", + "matchedExpression": "@local.labels_count", + "type": "local", + "fieldName": "labels_count" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_3": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.slider_3": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_3": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_3": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.slider_3_min_value": [ + "parameter_list.min" + ], + "@local.slider_3_min_value_label": [ + "parameter_list.min_value_label" + ], + "@local.slider_3_max_value": [ + "parameter_list.max" + ], + "@local.slider_3_max_value_label": [ + "parameter_list.max_value_label" + ], + "@local.labels_count": [ + "parameter_list.labels_count" + ] + } + }, + { + "name": "threshold_3", + "value": "+@local.data_part_3.threshold", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.threshold_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@local.data_part_3.threshold", + "matchedExpression": "@local.data_part_3.threshold", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.threshold": [ + "value" + ] + } + }, + { + "name": "response_3_geq_threshold", + "value": "@local.response_local_3 >= @local.threshold_3", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "part_3.condition_part_3.slider_3_type.response_3_geq_threshold", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.response_local_3 >= @local.threshold_3", + "matchedExpression": "@local.response_local_3", + "type": "local", + "fieldName": "response_local_3" + }, + { + "fullExpression": "@local.response_local_3 >= @local.threshold_3", + "matchedExpression": "@local.threshold_3", + "type": "local", + "fieldName": "threshold_3" + } + ] + }, + "_dynamicDependencies": { + "@local.response_local_3": [ + "value" + ], + "@local.threshold_3": [ + "value" + ] + } + } + ], + "_nested_name": "part_3.condition_part_3.slider_3_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_3.type == \"slider\"", + "matchedExpression": "@local.data_part_3.type", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.type": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "yes_no_3_type", + "condition": "@local.data_part_3.type == \"yes_no\"", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "radio_group", + "name": "radio_group_3", + "value": "@fields.@local.response_field_3", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.response_field_3", + "this.value" + ], + "_raw": "changed | set_field: @local.response_field_3: @local.radio_group_3", + "_cleaned": "changed | set_field: @local.response_field_3: @local.radio_group_3" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "response_local_3", + "this.value" + ], + "_raw": "changed | set_local: response_local_3 : @local.radio_group_3", + "_cleaned": "changed | set_local: response_local_3 : @local.radio_group_3" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.version_field_3", + "@local.version_no_3" + ], + "_raw": "changed | set_field: @local.version_field_3: @local.version_no_3", + "_cleaned": "changed | set_field: @local.version_field_3: @local.version_no_3" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "answered_part_3", + true + ], + "_raw": "changed | set_local: answered_part_3: true", + "_cleaned": "changed | set_local: answered_part_3: true" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "answer_list": "@local.answer_list", + "options_per_row": "2" + }, + "_nested_name": "part_3.condition_part_3.yes_no_3_type.radio_group_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.response_field_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.radio_group_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.radio_group_3", + "matchedExpression": "@local.radio_group_3", + "type": "local", + "fieldName": "radio_group_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.radio_group_3", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "changed | set_field: @local.response_field_3: @local.radio_group_3", + "matchedExpression": "@local.radio_group_3", + "type": "local", + "fieldName": "radio_group_3" + } + ] + }, + "1": { + "_raw": [ + { + "fullExpression": "changed | set_local: response_local_3 : @local.radio_group_3", + "matchedExpression": "@local.radio_group_3", + "type": "local", + "fieldName": "radio_group_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_local: response_local_3 : @local.radio_group_3", + "matchedExpression": "@local.radio_group_3", + "type": "local", + "fieldName": "radio_group_3" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.version_field_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + } + ], + "1": [ + { + "fullExpression": "@local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + }, + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_field_3", + "type": "local", + "fieldName": "version_field_3" + }, + { + "fullExpression": "changed | set_field: @local.version_field_3: @local.version_no_3", + "matchedExpression": "@local.version_no_3", + "type": "local", + "fieldName": "version_no_3" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list", + "matchedExpression": "@local.answer_list", + "type": "local", + "fieldName": "answer_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.response_field_3": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.radio_group_3": [ + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.version_field_3": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.version_no_3": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.answer_list": [ + "parameter_list.answer_list" + ] + } + } + ], + "_nested_name": "part_3.condition_part_3.yes_no_3_type", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.data_part_3.type == \"yes_no\"", + "matchedExpression": "@local.data_part_3.type", + "type": "local", + "fieldName": "data_part_3" + } + ] + }, + "_dynamicDependencies": { + "@local.data_part_3.type": [ + "condition" + ] + } + } + ], + "_nested_name": "part_3.condition_part_3", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.part_3_relevant", + "matchedExpression": "@local.part_3_relevant", + "type": "local", + "fieldName": "part_3_relevant" + } + ] + }, + "_dynamicDependencies": { + "@local.part_3_relevant": [ + "condition" + ] + } + } + ], + "_nested_name": "part_3", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.no_of_parts > 2 && @local.answered_part_1 && @local.answered_part_2", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts > 2 && @local.answered_part_1 && @local.answered_part_2", + "matchedExpression": "@local.answered_part_1", + "type": "local", + "fieldName": "answered_part_1" + }, + { + "fullExpression": "@local.no_of_parts > 2 && @local.answered_part_1 && @local.answered_part_2", + "matchedExpression": "@local.answered_part_2", + "type": "local", + "fieldName": "answered_part_2" + } + ] + }, + "_dynamicDependencies": { + "@local.no_of_parts": [ + "condition" + ], + "@local.answered_part_1": [ + "condition" + ], + "@local.answered_part_2": [ + "condition" + ] + } + }, + { + "exclude_from_translation": true, + "type": "set_variable", + "name": "set_variable", + "_nested_name": "set_variable" + }, + { + "name": "this_question_answered", + "value": "@local.answered_part_1 && @local.answered_part_2 && @local.answered_part_3", + "_translations": { + "value": {} + }, + "condition": "@local.no_of_parts == 3", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "this_question_answered", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.answered_part_1 && @local.answered_part_2 && @local.answered_part_3", + "matchedExpression": "@local.answered_part_1", + "type": "local", + "fieldName": "answered_part_1" + }, + { + "fullExpression": "@local.answered_part_1 && @local.answered_part_2 && @local.answered_part_3", + "matchedExpression": "@local.answered_part_2", + "type": "local", + "fieldName": "answered_part_2" + }, + { + "fullExpression": "@local.answered_part_1 && @local.answered_part_2 && @local.answered_part_3", + "matchedExpression": "@local.answered_part_3", + "type": "local", + "fieldName": "answered_part_3" + } + ], + "condition": [ + { + "fullExpression": "@local.no_of_parts == 3", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + } + ] + }, + "_dynamicDependencies": { + "@local.answered_part_1": [ + "value" + ], + "@local.answered_part_2": [ + "value" + ], + "@local.answered_part_3": [ + "value" + ], + "@local.no_of_parts": [ + "condition" + ] + } + }, + { + "name": "this_question_answered", + "value": "@local.answered_part_1 && @local.answered_part_2", + "_translations": { + "value": {} + }, + "condition": "@local.no_of_parts == 2 || (@local.no_of_parts > 2 && !@local.part_3_relevant)", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "this_question_answered", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.answered_part_1 && @local.answered_part_2", + "matchedExpression": "@local.answered_part_1", + "type": "local", + "fieldName": "answered_part_1" + }, + { + "fullExpression": "@local.answered_part_1 && @local.answered_part_2", + "matchedExpression": "@local.answered_part_2", + "type": "local", + "fieldName": "answered_part_2" + } + ], + "condition": [ + { + "fullExpression": "@local.no_of_parts == 2 || (@local.no_of_parts > 2 && !@local.part_3_relevant)", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts == 2 || (@local.no_of_parts > 2 && !@local.part_3_relevant)", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts == 2 || (@local.no_of_parts > 2 && !@local.part_3_relevant)", + "matchedExpression": "!@local.part_3_relevant", + "type": "local", + "fieldName": "part_3_relevant" + } + ] + }, + "_dynamicDependencies": { + "@local.answered_part_1": [ + "value" + ], + "@local.answered_part_2": [ + "value" + ], + "@local.no_of_parts": [ + "condition", + "condition" + ], + "!@local.part_3_relevant": [ + "condition" + ] + } + }, + { + "name": "this_question_answered", + "value": "@local.answered_part_1", + "_translations": { + "value": {} + }, + "condition": "@local.no_of_parts == 1 || (@local.no_of_parts > 1 && !@local.part_2_relevant)", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "this_question_answered", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.answered_part_1", + "matchedExpression": "@local.answered_part_1", + "type": "local", + "fieldName": "answered_part_1" + } + ], + "condition": [ + { + "fullExpression": "@local.no_of_parts == 1 || (@local.no_of_parts > 1 && !@local.part_2_relevant)", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts == 1 || (@local.no_of_parts > 1 && !@local.part_2_relevant)", + "matchedExpression": "@local.no_of_parts", + "type": "local", + "fieldName": "no_of_parts" + }, + { + "fullExpression": "@local.no_of_parts == 1 || (@local.no_of_parts > 1 && !@local.part_2_relevant)", + "matchedExpression": "!@local.part_2_relevant", + "type": "local", + "fieldName": "part_2_relevant" + } + ] + }, + "_dynamicDependencies": { + "@local.answered_part_1": [ + "value" + ], + "@local.no_of_parts": [ + "condition", + "condition" + ], + "!@local.part_2_relevant": [ + "condition" + ] + } + }, + { + "name": "na_selected", + "value": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "na_selected", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "matchedExpression": "@local.response_local_1", + "type": "local", + "fieldName": "response_local_1" + }, + { + "fullExpression": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "matchedExpression": "!@local.response_local_2", + "type": "local", + "fieldName": "response_local_2" + }, + { + "fullExpression": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "matchedExpression": "@local.response_local_2", + "type": "local", + "fieldName": "response_local_2" + }, + { + "fullExpression": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "matchedExpression": "!@local.response_local_3", + "type": "local", + "fieldName": "response_local_3" + }, + { + "fullExpression": "@local.response_local_1 ==\"no_value\" || (!!@local.response_local_2 && @local.response_local_2==\"no_value\") || (!!@local.response_local_3 && @local.response_local_3==\"no_value\")", + "matchedExpression": "@local.response_local_3", + "type": "local", + "fieldName": "response_local_3" + } + ] + }, + "_dynamicDependencies": { + "@local.response_local_1": [ + "value" + ], + "!@local.response_local_2": [ + "value" + ], + "@local.response_local_2": [ + "value" + ], + "!@local.response_local_3": [ + "value" + ], + "@local.response_local_3": [ + "value" + ] + } + }, + { + "name": "only_na_selected", + "value": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "only_na_selected", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "matchedExpression": "@local.response_field_1", + "type": "local", + "fieldName": "response_field_1" + }, + { + "fullExpression": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "matchedExpression": "@local.response_field_2", + "type": "local", + "fieldName": "response_field_2" + }, + { + "fullExpression": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + }, + { + "fullExpression": "@fields.@local.response_field_1 ==\"no_value\" && (!@fields.@local.response_field_2 || @fields.@local.response_field_2==\"no_value\") && (!@fields.@local.response_field_3 || @fields.@local.response_field_3==\"no_value\")", + "matchedExpression": "@local.response_field_3", + "type": "local", + "fieldName": "response_field_3" + } + ] + }, + "_dynamicDependencies": { + "@local.response_field_1": [ + "value" + ], + "@local.response_field_2": [ + "value", + "value" + ], + "@local.response_field_3": [ + "value", + "value" + ] + } + }, + { + "name": "relevant_content_1_disabled", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "relevant_content_1_disabled" + }, + { + "name": "relevant_content_2_disabled", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "relevant_content_2_disabled" + }, + { + "type": "display_group", + "name": "replies", + "condition": "@local.this_question_answered && !@local.only_na_selected", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "relevant_workshop_1", + "value": "@local.question_group_data.workshop_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.relevant_workshop_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.workshop_1", + "matchedExpression": "@local.question_group_data.workshop_1", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.workshop_1": [ + "value" + ] + } + }, + { + "name": "workshop_relevant_workshop_1", + "value": "workshop.@local.relevant_workshop_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.workshop_relevant_workshop_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.relevant_workshop_1", + "matchedExpression": "@local.relevant_workshop_1", + "type": "local", + "fieldName": "relevant_workshop_1" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_workshop_1": [ + "value" + ] + } + }, + { + "name": "relevant_content_1", + "value": "@data.@local.workshop_relevant_workshop_1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.relevant_content_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.workshop_relevant_workshop_1", + "matchedExpression": "@local.workshop_relevant_workshop_1", + "type": "local", + "fieldName": "workshop_relevant_workshop_1" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_relevant_workshop_1": [ + "value" + ] + } + }, + { + "name": "relevant_content_title_1", + "value": "@local.relevant_content_1.tools", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.relevant_content_title_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_1.tools", + "matchedExpression": "@local.relevant_content_1.tools", + "type": "local", + "fieldName": "relevant_content_1" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_1.tools": [ + "value" + ] + } + }, + { + "name": "tools_disabled", + "value": "_tools_disabled", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.tools_disabled" + }, + { + "name": "relevant_content_1_disabled", + "value": "@local.relevant_content_1.id@local.tools_disabled", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.relevant_content_1_disabled", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_1.id@local.tools_disabled", + "matchedExpression": "@local.relevant_content_1.id", + "type": "local", + "fieldName": "relevant_content_1" + }, + { + "fullExpression": "@local.relevant_content_1.id@local.tools_disabled", + "matchedExpression": "@local.tools_disabled", + "type": "local", + "fieldName": "tools_disabled" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_1.id": [ + "value" + ], + "@local.tools_disabled": [ + "value" + ] + } + }, + { + "name": "unlock_text", + "value": "@local.relevant_content_title_1 added to @data.parent_centre.my_tips.title.", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.unlock_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_title_1 added to @data.parent_centre.my_tips.title.", + "matchedExpression": "@local.relevant_content_title_1", + "type": "local", + "fieldName": "relevant_content_title_1" + }, + { + "fullExpression": "@local.relevant_content_title_1 added to @data.parent_centre.my_tips.title.", + "matchedExpression": "@data.parent_centre.my_tips.title", + "type": "data", + "fieldName": "parent_centre" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_title_1": [ + "value" + ], + "@data.parent_centre.my_tips.title": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "two_relevant_workshops", + "condition": "@local.question_group_data.workshop_2", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "relevant_workshop_2", + "value": "@local.question_group_data.workshop_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.relevant_workshop_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.workshop_2", + "matchedExpression": "@local.question_group_data.workshop_2", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.workshop_2": [ + "value" + ] + } + }, + { + "name": "workshop_relevant_workshop_2", + "value": "workshop.@local.relevant_workshop_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.workshop_relevant_workshop_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.relevant_workshop_2", + "matchedExpression": "@local.relevant_workshop_2", + "type": "local", + "fieldName": "relevant_workshop_2" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_workshop_2": [ + "value" + ] + } + }, + { + "name": "relevant_content_2", + "value": "@data.@local.workshop_relevant_workshop_2", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.relevant_content_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.workshop_relevant_workshop_2", + "matchedExpression": "@local.workshop_relevant_workshop_2", + "type": "local", + "fieldName": "workshop_relevant_workshop_2" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_relevant_workshop_2": [ + "value" + ] + } + }, + { + "name": "relevant_content_2_disabled", + "value": "@local.relevant_content_2.id@local.tools_disabled", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.relevant_content_2_disabled", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_2.id@local.tools_disabled", + "matchedExpression": "@local.relevant_content_2.id", + "type": "local", + "fieldName": "relevant_content_2" + }, + { + "fullExpression": "@local.relevant_content_2.id@local.tools_disabled", + "matchedExpression": "@local.tools_disabled", + "type": "local", + "fieldName": "tools_disabled" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_2.id": [ + "value" + ], + "@local.tools_disabled": [ + "value" + ] + } + }, + { + "name": "relevant_content_title_2", + "value": "@local.relevant_content_2.tools", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.relevant_content_title_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_2.tools", + "matchedExpression": "@local.relevant_content_2.tools", + "type": "local", + "fieldName": "relevant_content_2" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_2.tools": [ + "value" + ] + } + }, + { + "name": "unlock_text", + "value": "@local.relevant_content_title_1 and @local.relevant_content_title_2 added to @data.parent_centre.my_tips.title.", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.two_relevant_workshops.unlock_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.relevant_content_title_1 and @local.relevant_content_title_2 added to @data.parent_centre.my_tips.title.", + "matchedExpression": "@local.relevant_content_title_1", + "type": "local", + "fieldName": "relevant_content_title_1" + }, + { + "fullExpression": "@local.relevant_content_title_1 and @local.relevant_content_title_2 added to @data.parent_centre.my_tips.title.", + "matchedExpression": "@local.relevant_content_title_2", + "type": "local", + "fieldName": "relevant_content_title_2" + }, + { + "fullExpression": "@local.relevant_content_title_1 and @local.relevant_content_title_2 added to @data.parent_centre.my_tips.title.", + "matchedExpression": "@data.parent_centre.my_tips.title", + "type": "data", + "fieldName": "parent_centre" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_title_1": [ + "value" + ], + "@local.relevant_content_title_2": [ + "value" + ], + "@data.parent_centre.my_tips.title": [ + "value" + ] + } + } + ], + "_nested_name": "replies.two_relevant_workshops", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.question_group_data.workshop_2", + "matchedExpression": "@local.question_group_data.workshop_2", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.workshop_2": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "replies_universal", + "condition": "@local.question_group_data.reply_universal", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_universal", + "value": "@local.question_group_data.reply_universal", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "replies.replies_universal.reply_universal", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.reply_universal", + "matchedExpression": "@local.question_group_data.reply_universal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_universal": [ + "value" + ] + } + }, + { + "type": "dashed_box", + "name": "unlock_universal", + "value": "@local.unlock_text", + "_translations": { + "value": {} + }, + "condition": "@local.question_group_data.unlock_universal", + "exclude_from_translation": true, + "parameter_list": { + "icon_src": "plh_images/icons/unlock_circle.svg", + "icon_position": "top-left" + }, + "_nested_name": "replies.replies_universal.unlock_universal", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.unlock_text", + "matchedExpression": "@local.unlock_text", + "type": "local", + "fieldName": "unlock_text" + } + ], + "condition": [ + { + "fullExpression": "@local.question_group_data.unlock_universal", + "matchedExpression": "@local.question_group_data.unlock_universal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.unlock_text": [ + "value" + ], + "@local.question_group_data.unlock_universal": [ + "condition" + ] + } + } + ], + "_nested_name": "replies.replies_universal", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.question_group_data.reply_universal", + "matchedExpression": "@local.question_group_data.reply_universal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_universal": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "combined_slider", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "all_slider_responses_less_than_thresholds", + "value": "!(@local.response_1_geq_threshold || @local.response_2_geq_threshold || @local.response_3_geq_threshold)", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "replies.combined_slider.all_slider_responses_less_than_thresholds", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!(@local.response_1_geq_threshold || @local.response_2_geq_threshold || @local.response_3_geq_threshold)", + "matchedExpression": "@local.response_1_geq_threshold", + "type": "local", + "fieldName": "response_1_geq_threshold" + }, + { + "fullExpression": "!(@local.response_1_geq_threshold || @local.response_2_geq_threshold || @local.response_3_geq_threshold)", + "matchedExpression": "@local.response_2_geq_threshold", + "type": "local", + "fieldName": "response_2_geq_threshold" + }, + { + "fullExpression": "!(@local.response_1_geq_threshold || @local.response_2_geq_threshold || @local.response_3_geq_threshold)", + "matchedExpression": "@local.response_3_geq_threshold", + "type": "local", + "fieldName": "response_3_geq_threshold" + } + ] + }, + "_dynamicDependencies": { + "@local.response_1_geq_threshold": [ + "value" + ], + "@local.response_2_geq_threshold": [ + "value" + ], + "@local.response_3_geq_threshold": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "replies_greater_equal", + "condition": "@local.question_group_data.reply_greater_equal && !@local.all_slider_responses_less_than_thresholds", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_greater_equal", + "value": "@local.question_group_data.reply_greater_equal", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "replies.combined_slider.replies_greater_equal.reply_greater_equal", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.reply_greater_equal", + "matchedExpression": "@local.question_group_data.reply_greater_equal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_greater_equal": [ + "value" + ] + } + }, + { + "type": "dashed_box", + "name": "unlock_greater_equal", + "value": "@local.unlock_text", + "_translations": { + "value": {} + }, + "condition": "@local.question_group_data.unlock_greater_equal", + "exclude_from_translation": true, + "parameter_list": { + "icon_src": "plh_images/icons/unlock_circle.svg", + "icon_position": "top-left" + }, + "_nested_name": "replies.combined_slider.replies_greater_equal.unlock_greater_equal", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.unlock_text", + "matchedExpression": "@local.unlock_text", + "type": "local", + "fieldName": "unlock_text" + } + ], + "condition": [ + { + "fullExpression": "@local.question_group_data.unlock_greater_equal", + "matchedExpression": "@local.question_group_data.unlock_greater_equal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.unlock_text": [ + "value" + ], + "@local.question_group_data.unlock_greater_equal": [ + "condition" + ] + } + } + ], + "_nested_name": "replies.combined_slider.replies_greater_equal", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.question_group_data.reply_greater_equal && !@local.all_slider_responses_less_than_thresholds", + "matchedExpression": "@local.question_group_data.reply_greater_equal", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "@local.question_group_data.reply_greater_equal && !@local.all_slider_responses_less_than_thresholds", + "matchedExpression": "!@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_greater_equal": [ + "condition" + ], + "!@local.all_slider_responses_less_than_thresholds": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "replies_less", + "condition": "@local.question_group_data.reply_less && @local.all_slider_responses_less_than_thresholds", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply_less", + "value": "@local.question_group_data.reply_less", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "replies.combined_slider.replies_less.reply_less", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.question_group_data.reply_less", + "matchedExpression": "@local.question_group_data.reply_less", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_less": [ + "value" + ] + } + }, + { + "type": "dashed_box", + "name": "unlock_less", + "value": "@local.unlock_text", + "_translations": { + "value": {} + }, + "condition": "@local.question_group_data.unlock_less", + "exclude_from_translation": true, + "parameter_list": { + "icon_src": "plh_images/icons/unlock_circle.svg", + "icon_position": "top-left" + }, + "_nested_name": "replies.combined_slider.replies_less.unlock_less", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.unlock_text", + "matchedExpression": "@local.unlock_text", + "type": "local", + "fieldName": "unlock_text" + } + ], + "condition": [ + { + "fullExpression": "@local.question_group_data.unlock_less", + "matchedExpression": "@local.question_group_data.unlock_less", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.unlock_text": [ + "value" + ], + "@local.question_group_data.unlock_less": [ + "condition" + ] + } + } + ], + "_nested_name": "replies.combined_slider.replies_less", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.question_group_data.reply_less && @local.all_slider_responses_less_than_thresholds", + "matchedExpression": "@local.question_group_data.reply_less", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "@local.question_group_data.reply_less && @local.all_slider_responses_less_than_thresholds", + "matchedExpression": "@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + } + ] + }, + "_dynamicDependencies": { + "@local.question_group_data.reply_less": [ + "condition" + ], + "@local.all_slider_responses_less_than_thresholds": [ + "condition" + ] + } + } + ], + "_nested_name": "replies.combined_slider" + } + ], + "_nested_name": "replies", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.this_question_answered && !@local.only_na_selected", + "matchedExpression": "@local.this_question_answered", + "type": "local", + "fieldName": "this_question_answered" + }, + { + "fullExpression": "@local.this_question_answered && !@local.only_na_selected", + "matchedExpression": "!@local.only_na_selected", + "type": "local", + "fieldName": "only_na_selected" + } + ] + }, + "_dynamicDependencies": { + "@local.this_question_answered": [ + "condition" + ], + "!@local.only_na_selected": [ + "condition" + ] + } + }, + { + "exclude_from_translation": true, + "type": "set_variable", + "name": "set_variable", + "_nested_name": "set_variable" + }, + { + "name": "skip_warning_popped_up", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "skip_warning_popped_up" + }, + { + "name": "na_warning_popped_up", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "na_warning_popped_up" + }, + { + "type": "display_group", + "name": "pop_ups", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "pop_up", + "args": [ + "survey_warning_skip_question" + ], + "_raw": "completed | pop_up:survey_warning_skip_question", + "_cleaned": "completed | pop_up:survey_warning_skip_question" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "skip_warning_popped_up", + true + ], + "_raw": "completed | set_local: skip_warning_popped_up:true", + "_cleaned": "completed | set_local: skip_warning_popped_up:true" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "!(@local.this_question_answered || @local.skip_warning_popped_up)", + "exclude_from_translation": true, + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "pop_ups.nav_buttons.use_completed_chevron" + } + ], + "_nested_name": "pop_ups.nav_buttons", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", + "matchedExpression": "@local.this_question_answered", + "type": "local", + "fieldName": "this_question_answered" + }, + { + "fullExpression": "!(@local.this_question_answered || @local.skip_warning_popped_up)", + "matchedExpression": "@local.skip_warning_popped_up", + "type": "local", + "fieldName": "skip_warning_popped_up" + } + ] + }, + "_dynamicDependencies": { + "@local.this_question_answered": [ + "condition" + ], + "@local.skip_warning_popped_up": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "pop_up", + "args": [ + "survey_warning_na" + ], + "_raw": "completed | pop_up:survey_warning_na", + "_cleaned": "completed | pop_up:survey_warning_na" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "na_warning_popped_up", + true + ], + "_raw": "completed | set_local: na_warning_popped_up:true", + "_cleaned": "completed | set_local: na_warning_popped_up:true" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", + "exclude_from_translation": true, + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "pop_ups.nav_buttons.use_completed_chevron" + } + ], + "_nested_name": "pop_ups.nav_buttons", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", + "matchedExpression": "@local.na_selected", + "type": "local", + "fieldName": "na_selected" + }, + { + "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", + "matchedExpression": "!@fields.survey_continue_na", + "type": "fields", + "fieldName": "survey_continue_na" + }, + { + "fullExpression": "@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up", + "matchedExpression": "!@local.na_warning_popped_up", + "type": "local", + "fieldName": "na_warning_popped_up" + } + ] + }, + "_dynamicDependencies": { + "@local.na_selected": [ + "condition" + ], + "!@fields.survey_continue_na": [ + "condition" + ], + "!@local.na_warning_popped_up": [ + "condition" + ] + } + } + ], + "_nested_name": "pop_ups" + }, + { + "type": "display_group", + "name": "no_pop_ups", + "condition": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "exclude_from_translation": true, + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "@local.relevant_content_1_disabled", + false + ], + "_raw": "completed | set_field: @local.relevant_content_1_disabled: false", + "_cleaned": "completed | set_field: @local.relevant_content_1_disabled: false" + }, + { + "trigger": "uncompleted", + "action_id": "set_field", + "args": [ + "@local.relevant_content_1_disabled", + false + ], + "_raw": "uncompleted | set_field: @local.relevant_content_1_disabled: false", + "_cleaned": "uncompleted | set_field: @local.relevant_content_1_disabled: false" + }, + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "@local.relevant_content_2_disabled", + false + ], + "_raw": "completed | set_field: @local.relevant_content_2_disabled: false", + "_cleaned": "completed | set_field: @local.relevant_content_2_disabled: false" + }, + { + "trigger": "uncompleted", + "action_id": "set_field", + "args": [ + "@local.relevant_content_2_disabled", + false + ], + "_raw": "uncompleted | set_field: @local.relevant_content_2_disabled: false", + "_cleaned": "uncompleted | set_field: @local.relevant_content_2_disabled: false" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "exclude_from_translation": true, + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "no_pop_ups.nav_buttons.use_completed_chevron" + } + ], + "_nested_name": "no_pop_ups.nav_buttons", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.relevant_content_1_disabled", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_field: @local.relevant_content_1_disabled: false", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_field: @local.relevant_content_1_disabled: false", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.relevant_content_1_disabled", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_field: @local.relevant_content_1_disabled: false", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_field: @local.relevant_content_1_disabled: false", + "matchedExpression": "@local.relevant_content_1_disabled", + "type": "local", + "fieldName": "relevant_content_1_disabled" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.relevant_content_2_disabled", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_field: @local.relevant_content_2_disabled: false", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_field: @local.relevant_content_2_disabled: false", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ] + }, + "3": { + "args": { + "0": [ + { + "fullExpression": "@local.relevant_content_2_disabled", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_field: @local.relevant_content_2_disabled: false", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_field: @local.relevant_content_2_disabled: false", + "matchedExpression": "@local.relevant_content_2_disabled", + "type": "local", + "fieldName": "relevant_content_2_disabled" + } + ] + } + }, + "condition": [ + { + "fullExpression": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "matchedExpression": "!@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + }, + { + "fullExpression": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "matchedExpression": "@local.question_group_data.unlock_greater_equal", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "matchedExpression": "@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + }, + { + "fullExpression": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "matchedExpression": "@local.question_group_data.unlock_less", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "(!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal", + "matchedExpression": "@local.question_group_data.unlock_universal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.relevant_content_1_disabled": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.relevant_content_2_disabled": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned", + "action_list.3.args.0", + "action_list.3._raw", + "action_list.3._cleaned" + ], + "!@local.all_slider_responses_less_than_thresholds": [ + "condition" + ], + "@local.question_group_data.unlock_greater_equal": [ + "condition" + ], + "@local.all_slider_responses_less_than_thresholds": [ + "condition" + ], + "@local.question_group_data.unlock_less": [ + "condition" + ], + "@local.question_group_data.unlock_universal": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "exclude_from_translation": true, + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "no_pop_ups.nav_buttons.use_completed_chevron" + } + ], + "_nested_name": "no_pop_ups.nav_buttons", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "matchedExpression": "!@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + }, + { + "fullExpression": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "matchedExpression": "@local.question_group_data.unlock_greater_equal", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "matchedExpression": "@local.all_slider_responses_less_than_thresholds", + "type": "local", + "fieldName": "all_slider_responses_less_than_thresholds" + }, + { + "fullExpression": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "matchedExpression": "@local.question_group_data.unlock_less", + "type": "local", + "fieldName": "question_group_data" + }, + { + "fullExpression": "!((!@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_greater_equal) || (@local.all_slider_responses_less_than_thresholds && @local.question_group_data.unlock_less) || @local.question_group_data.unlock_universal)", + "matchedExpression": "@local.question_group_data.unlock_universal", + "type": "local", + "fieldName": "question_group_data" + } + ] + }, + "_dynamicDependencies": { + "!@local.all_slider_responses_less_than_thresholds": [ + "condition" + ], + "@local.question_group_data.unlock_greater_equal": [ + "condition" + ], + "@local.all_slider_responses_less_than_thresholds": [ + "condition" + ], + "@local.question_group_data.unlock_less": [ + "condition" + ], + "@local.question_group_data.unlock_universal": [ + "condition" + ] + } + } + ], + "_nested_name": "no_pop_ups", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "matchedExpression": "@local.this_question_answered", + "type": "local", + "fieldName": "this_question_answered" + }, + { + "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "matchedExpression": "@local.skip_warning_popped_up", + "type": "local", + "fieldName": "skip_warning_popped_up" + }, + { + "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "matchedExpression": "@local.na_selected", + "type": "local", + "fieldName": "na_selected" + }, + { + "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "matchedExpression": "!@fields.survey_continue_na", + "type": "fields", + "fieldName": "survey_continue_na" + }, + { + "fullExpression": "(@local.this_question_answered || @local.skip_warning_popped_up) && !(@local.na_selected && !@fields.survey_continue_na && !@local.na_warning_popped_up)", + "matchedExpression": "!@local.na_warning_popped_up", + "type": "local", + "fieldName": "na_warning_popped_up" + } + ] + }, + "_dynamicDependencies": { + "@local.this_question_answered": [ + "condition" + ], + "@local.skip_warning_popped_up": [ + "condition" + ], + "@local.na_selected": [ + "condition" + ], + "!@fields.survey_continue_na": [ + "condition" + ], + "!@local.na_warning_popped_up": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_survey_boxes.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/box_text_box.json b/packages/app-data/sheets/template/box_text_box.json index 0262908caf..6c46f39eb2 100644 --- a/packages/app-data/sheets/template/box_text_box.json +++ b/packages/app-data/sheets/template/box_text_box.json @@ -69,6 +69,10 @@ { "type": "text_box", "name": "text_box", + "value": "@fields.@local.text_box_tracker", + "_translations": { + "value": {} + }, "action_list": [ { "trigger": "changed", @@ -86,6 +90,14 @@ }, "_nested_name": "text_box", "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.text_box_tracker", + "matchedExpression": "@local.text_box_tracker", + "type": "local", + "fieldName": "text_box_tracker" + } + ], "action_list": { "0": { "args": { @@ -141,6 +153,7 @@ }, "_dynamicDependencies": { "@local.text_box_tracker": [ + "value", "action_list.0.args.0", "action_list.0._raw", "action_list.0._cleaned" @@ -154,6 +167,44 @@ ] } }, + { + "type": "button", + "name": "button", + "hidden": true, + "_nested_name": "button" + }, + { + "type": "display_group", + "name": "reply_dg", + "hidden": "!(@fields.@local.text_box_tracker)", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "text", + "name": "reply", + "exclude_from_translation": true, + "_nested_name": "reply_dg.reply" + } + ], + "_nested_name": "reply_dg", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "!(@fields.@local.text_box_tracker)", + "matchedExpression": "@local.text_box_tracker", + "type": "local", + "fieldName": "text_box_tracker" + } + ] + }, + "_dynamicDependencies": { + "@local.text_box_tracker": [ + "hidden" + ] + } + }, { "type": "template", "name": "nav_buttons", diff --git a/packages/app-data/sheets/template/box_video.json b/packages/app-data/sheets/template/box_video.json index 1e78a4f4ae..b1d02088d0 100644 --- a/packages/app-data/sheets/template/box_video.json +++ b/packages/app-data/sheets/template/box_video.json @@ -33,10 +33,41 @@ "name": "display_group", "_nested_name": "display_group" }, + { + "name": "subs_src", + "type": "set_variable", + "_nested_name": "subs_src" + }, { "type": "video", "name": "video_src", - "_nested_name": "video_src" + "parameter_list": { + "subtitles_src": "@local.subs_src" + }, + "_nested_name": "video_src", + "_dynamicFields": { + "parameter_list": { + "subtitles_src": [ + { + "fullExpression": "@local.subs_src", + "matchedExpression": "@local.subs_src", + "type": "local", + "fieldName": "subs_src" + } + ] + } + }, + "_dynamicDependencies": { + "@local.subs_src": [ + "parameter_list.subtitles_src" + ] + } + }, + { + "type": "button", + "name": "button", + "hidden": true, + "_nested_name": "button" }, { "type": "text", diff --git a/packages/app-data/sheets/template/change_thoughts.json b/packages/app-data/sheets/template/change_thoughts.json index 4549b22e50..ee3319f93d 100644 --- a/packages/app-data/sheets/template/change_thoughts.json +++ b/packages/app-data/sheets/template/change_thoughts.json @@ -14,7 +14,7 @@ }, { "name": "confused_face", - "value": "plh_images/stickers/faces/confused.svg", + "value": "plh_images/stickers/faces/confused_question_mark.svg", "_translations": { "value": {} }, @@ -140,6 +140,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -155,6 +156,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -191,6 +193,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -206,6 +209,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -221,6 +225,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -390,6 +395,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -413,6 +419,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -428,6 +435,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/change_thoughts_sect.json b/packages/app-data/sheets/template/change_thoughts_sect.json index a99472344a..3ee36f9af5 100644 --- a/packages/app-data/sheets/template/change_thoughts_sect.json +++ b/packages/app-data/sheets/template/change_thoughts_sect.json @@ -35,6 +35,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/common_with_parent_text/lets_slow_down_lyrics.json b/packages/app-data/sheets/template/common_with_parent_text/lets_slow_down_lyrics.json new file mode 100644 index 0000000000..0bf3458db6 --- /dev/null +++ b/packages/app-data/sheets/template/common_with_parent_text/lets_slow_down_lyrics.json @@ -0,0 +1,437 @@ +{ + "flow_type": "template", + "flow_name": "lets_slow_down_lyrics", + "status": "released", + "flow_subtype": "common_with_parent_text", + "rows": [ + { + "name": "verse_1_1", + "value": "When everything feels like it is falling apart", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_1_1" + }, + { + "name": "verse_1_2", + "value": "And you can't help but raise your voice", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_1_2" + }, + { + "name": "verse_1_3", + "value": "When all the frustrations are beginning to start", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_1_3" + }, + { + "name": "verse_1_4", + "value": "Remember that you have a choice", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_1_4" + }, + { + "name": "chorus_1", + "value": "Let's slow down", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_1" + }, + { + "name": "chorus_2", + "value": "Take a few deep breaths", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_2" + }, + { + "name": "chorus_3", + "value": "Remember all we have to be grateful for", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_3" + }, + { + "name": "chorus_4", + "value": "Let's slow down", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_4" + }, + { + "name": "chorus_5", + "value": "Take a few deep breaths", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_5" + }, + { + "name": "chorus_6", + "value": "Because I really couldn't love you more", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "chorus_6" + }, + { + "name": "verse_2_1", + "value": "You can take pause, you can count to 10", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_2_1" + }, + { + "name": "verse_2_2", + "value": "Play a game or do something fun", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_2_2" + }, + { + "name": "verse_2_3", + "value": "You can phone a friend, someone to confide in", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_2_3" + }, + { + "name": "verse_2_4", + "value": "Remember you're not the only one", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "type": "set_variable", + "_nested_name": "verse_2_4" + }, + { + "type": "text", + "name": "text", + "value": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "_translations": { + "value": {} + }, + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_1_1", + "type": "local", + "fieldName": "verse_1_1" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_1_2", + "type": "local", + "fieldName": "verse_1_2" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_1_3", + "type": "local", + "fieldName": "verse_1_3" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_1_4", + "type": "local", + "fieldName": "verse_1_4" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_1", + "type": "local", + "fieldName": "chorus_1" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_2", + "type": "local", + "fieldName": "chorus_2" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_3", + "type": "local", + "fieldName": "chorus_3" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_4", + "type": "local", + "fieldName": "chorus_4" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_5", + "type": "local", + "fieldName": "chorus_5" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_6", + "type": "local", + "fieldName": "chorus_6" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_2_1", + "type": "local", + "fieldName": "verse_2_1" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_2_2", + "type": "local", + "fieldName": "verse_2_2" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_2_3", + "type": "local", + "fieldName": "verse_2_3" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.verse_2_4", + "type": "local", + "fieldName": "verse_2_4" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_1", + "type": "local", + "fieldName": "chorus_1" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_2", + "type": "local", + "fieldName": "chorus_2" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_3", + "type": "local", + "fieldName": "chorus_3" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_4", + "type": "local", + "fieldName": "chorus_4" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_5", + "type": "local", + "fieldName": "chorus_5" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_6", + "type": "local", + "fieldName": "chorus_6" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_1", + "type": "local", + "fieldName": "chorus_1" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_2", + "type": "local", + "fieldName": "chorus_2" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_3", + "type": "local", + "fieldName": "chorus_3" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_4", + "type": "local", + "fieldName": "chorus_4" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_5", + "type": "local", + "fieldName": "chorus_5" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_6", + "type": "local", + "fieldName": "chorus_6" + }, + { + "fullExpression": "@local.verse_1_1\n@local.verse_1_2\n@local.verse_1_3\n@local.verse_1_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.verse_2_1\n@local.verse_2_2\n@local.verse_2_3\n@local.verse_2_4\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n\n@local.chorus_1\n@local.chorus_2\n@local.chorus_3\n@local.chorus_4\n@local.chorus_5\n@local.chorus_6\n@local.chorus_6", + "matchedExpression": "@local.chorus_6", + "type": "local", + "fieldName": "chorus_6" + } + ] + }, + "_dynamicDependencies": { + "@local.verse_1_1": [ + "value" + ], + "@local.verse_1_2": [ + "value" + ], + "@local.verse_1_3": [ + "value" + ], + "@local.verse_1_4": [ + "value" + ], + "@local.chorus_1": [ + "value", + "value", + "value" + ], + "@local.chorus_2": [ + "value", + "value", + "value" + ], + "@local.chorus_3": [ + "value", + "value", + "value" + ], + "@local.chorus_4": [ + "value", + "value", + "value" + ], + "@local.chorus_5": [ + "value", + "value", + "value" + ], + "@local.chorus_6": [ + "value", + "value", + "value", + "value" + ], + "@local.verse_2_1": [ + "value" + ], + "@local.verse_2_2": [ + "value" + ], + "@local.verse_2_3": [ + "value" + ], + "@local.verse_2_4": [ + "value" + ] + } + } + ], + "_xlsxPath": "global/mode_templates/welcome.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/component_demo/comp_button.json b/packages/app-data/sheets/template/component_demo/comp_button.json deleted file mode 100644 index 25b234e39d..0000000000 --- a/packages/app-data/sheets/template/component_demo/comp_button.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "comp_button", - "status": "released", - "flow_subtype": "component_demo", - "rows": [ - { - "type": "button", - "name": "button_default", - "value": "Default", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_text" - ], - "_raw": "click | go_to: example_text", - "_cleaned": "click | go_to: example_text" - } - ], - "_nested_name": "button_default" - }, - { - "type": "title", - "name": "title_1", - "value": "Disabled parameter", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "button", - "name": "button_par_1_1", - "value": "Disabled parameter FALSE", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "parameter_list": { - "disabled": "false" - }, - "_nested_name": "button_par_1_1" - }, - { - "type": "button", - "name": "button_par_1_2", - "value": "Disabled parameter TRUE", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "parameter_list": { - "disabled": "true" - }, - "_nested_name": "button_par_1_2" - }, - { - "type": "title", - "name": "title_2", - "value": "Button colour", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "button", - "name": "button_par_2_1", - "value": "Style parameter Information", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "information" - }, - "_nested_name": "button_par_2_1" - }, - { - "type": "button", - "name": "button_par_2_2", - "value": "Style parameter Navigation", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "navigation" - }, - "_nested_name": "button_par_2_2" - }, - { - "type": "title", - "name": "title_3", - "value": "Button width", - "_translations": { - "value": {} - }, - "_nested_name": "title_3" - }, - { - "type": "button", - "name": "button_par_2_3", - "value": "Style parameter Full", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "full" - }, - "_nested_name": "button_par_2_3" - }, - { - "type": "button", - "name": "button_par_2_4", - "value": "Style parameter Flexible", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "flexible" - }, - "_nested_name": "button_par_2_4" - }, - { - "type": "title", - "name": "title_4", - "value": "Button height", - "_translations": { - "value": {} - }, - "_nested_name": "title_4" - }, - { - "type": "button", - "name": "button_par_2_5", - "value": "Style parameter Medium", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "medium" - }, - "_nested_name": "button_par_2_5" - }, - { - "type": "button", - "name": "button_par_2_6", - "value": "Style parameter Short", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "short" - }, - "_nested_name": "button_par_2_6" - }, - { - "type": "button", - "name": "button_par_2_7", - "value": "Style parameter Tall", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "tall" - }, - "_nested_name": "button_par_2_7" - }, - { - "type": "title", - "name": "title_5", - "value": "Button text colour", - "_translations": { - "value": {} - }, - "_nested_name": "title_5" - }, - { - "type": "button", - "name": "button_par_2_8", - "value": "Style parameter Standard", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "standard" - }, - "_nested_name": "button_par_2_8" - }, - { - "type": "button", - "name": "button_par_2_9", - "value": "Style parameter Alternative", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "alternative" - }, - "_nested_name": "button_par_2_9" - }, - { - "type": "title", - "name": "title_6", - "value": "To be removed", - "_translations": { - "value": {} - }, - "_nested_name": "title_6" - }, - { - "type": "button", - "name": "button_par_2_10", - "value": "Style parameter Medium Round", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "medium round" - }, - "_nested_name": "button_par_2_10" - }, - { - "type": "button", - "name": "button_par_2_11", - "value": "Style parameter No shadow", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "no shadow" - }, - "_nested_name": "button_par_2_11" - }, - { - "type": "title", - "name": "title_7", - "value": "Text alignment", - "_translations": { - "value": {} - }, - "_nested_name": "title_7" - }, - { - "type": "button", - "name": "button_par_3_1", - "value": "Text align parameter left", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "left" - }, - "_nested_name": "button_par_3_1" - }, - { - "type": "button", - "name": "button_par_3_2", - "value": "Text align parameter centre", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "centre" - }, - "_nested_name": "button_par_3_2" - }, - { - "type": "button", - "name": "button_par_3_3", - "value": "Text align parameter right", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "right" - }, - "_nested_name": "button_par_3_3" - }, - { - "type": "title", - "name": "title_8", - "value": "Button alignment", - "_translations": { - "value": {} - }, - "_nested_name": "title_8" - }, - { - "type": "button", - "name": "button_par_4_1", - "value": "Button align parameter centre", - "_translations": { - "value": {} - }, - "parameter_list": { - "button_align": "centre", - "style": "flexible" - }, - "_nested_name": "button_par_4_1" - }, - { - "type": "button", - "name": "button_par_4_2", - "value": "Button align parameter left", - "_translations": { - "value": {} - }, - "parameter_list": { - "button_align": "left", - "style": "flexible" - }, - "_nested_name": "button_par_4_2" - }, - { - "type": "button", - "name": "button_par_4_3", - "value": "Button align parameter right", - "_translations": { - "value": {} - }, - "parameter_list": { - "button_align": "right", - "style": "flexible" - }, - "_nested_name": "button_par_4_3" - } - ], - "_xlsxPath": "quality_assurance/components_demo/component_button.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/component_demo/comp_checkbox_button.json b/packages/app-data/sheets/template/component_demo/comp_checkbox_button.json deleted file mode 100644 index 347c79aa70..0000000000 --- a/packages/app-data/sheets/template/component_demo/comp_checkbox_button.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "comp_checkbox_button", - "status": "released", - "flow_subtype": "component_demo", - "rows": [ - { - "type": "simple_checkbox", - "name": "default", - "_nested_name": "default" - }, - { - "type": "simple_checkbox", - "name": "par_1_1", - "parameter_list": { - "align": "center" - }, - "_nested_name": "par_1_1" - }, - { - "type": "simple_checkbox", - "name": "par_1_2", - "parameter_list": { - "align": "left" - }, - "_nested_name": "par_1_2" - }, - { - "type": "simple_checkbox", - "name": "par_1_3", - "parameter_list": { - "align": "right" - }, - "_nested_name": "par_1_3" - }, - { - "type": "simple_checkbox", - "name": "default", - "_nested_name": "default" - }, - { - "type": "simple_checkbox", - "name": "par_2_1", - "parameter_list": { - "label_text": "" - }, - "_nested_name": "par_2_1" - }, - { - "type": "simple_checkbox", - "name": "par_2_2", - "parameter_list": { - "label_text": "label text" - }, - "_nested_name": "par_2_2" - }, - { - "type": "simple_checkbox", - "name": "par_3_1", - "parameter_list": { - "style": "''" - }, - "_nested_name": "par_3_1" - }, - { - "type": "simple_checkbox", - "name": "button_par_4_1", - "parameter_list": { - "reverse": "false" - }, - "_nested_name": "button_par_4_1" - }, - { - "type": "simple_checkbox", - "name": "button_par_4_1", - "parameter_list": { - "reverse": "true" - }, - "_nested_name": "button_par_4_1" - } - ], - "_xlsxPath": "quality_assurance/components_demo/component_simple_check_box .xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/component_demo/comp_round_button.json b/packages/app-data/sheets/template/component_demo/comp_round_button.json deleted file mode 100644 index 764b0abd45..0000000000 --- a/packages/app-data/sheets/template/component_demo/comp_round_button.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "comp_round_button", - "status": "released", - "flow_subtype": "component_demo", - "rows": [ - { - "type": "round_button", - "name": "round_button_default", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_text" - ], - "_raw": "click | go_to: example_text", - "_cleaned": "click | go_to: example_text" - } - ], - "_nested_name": "round_button_default" - }, - { - "type": "title", - "name": "title_2", - "value": "Round button with icon", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "round_button", - "name": "round_button_par_2_1", - "parameter_list": { - "icon_src": "" - }, - "_nested_name": "round_button_par_2_1" - }, - { - "type": "round_button", - "name": "round_button_par_2_2", - "parameter_list": { - "icon_src": "plh_images/icons/play.svg" - }, - "_nested_name": "round_button_par_2_2" - }, - { - "type": "round_button", - "name": "round_button_par_2_3", - "parameter_list": { - "icon_src": "body-outline" - }, - "_nested_name": "round_button_par_2_3" - }, - { - "type": "title", - "name": "title_3", - "value": "Round button colour", - "_translations": { - "value": {} - }, - "_nested_name": "title_3" - }, - { - "type": "round_button", - "name": "round_button_par_3_1", - "parameter_list": { - "style": "information" - }, - "_nested_name": "round_button_par_3_1" - }, - { - "type": "round_button", - "name": "round_button_par_3_2", - "parameter_list": { - "style": "navigation" - }, - "_nested_name": "round_button_par_3_2" - }, - { - "type": "round_button", - "name": "round_button_par_3_3", - "parameter_list": { - "style": "yellow" - }, - "_nested_name": "round_button_par_3_3" - }, - { - "type": "round_button", - "name": "round_button_par_3_4", - "parameter_list": { - "style": "orange" - }, - "_nested_name": "round_button_par_3_4" - }, - { - "type": "round_button", - "name": "round_button_par_3_5", - "parameter_list": { - "style": "dark_orange" - }, - "_nested_name": "round_button_par_3_5" - }, - { - "type": "title", - "name": "title_4", - "value": "Round button positioning", - "_translations": { - "value": {} - }, - "_nested_name": "title_4" - }, - { - "type": "round_button", - "name": "round_button_par_4_1", - "parameter_list": { - "style": "home_screen" - }, - "_nested_name": "round_button_par_4_1" - }, - { - "type": "title", - "name": "title_5", - "value": "Button text", - "_translations": { - "value": {} - }, - "_nested_name": "title_5" - }, - { - "type": "round_button", - "name": "round_button_par_5_1", - "parameter_list": { - "text": "" - }, - "_nested_name": "round_button_par_5_1" - }, - { - "type": "round_button", - "name": "round_button_par_5_2", - "parameter_list": { - "text": "any string as a button text" - }, - "_nested_name": "round_button_par_5_2" - }, - { - "type": "title", - "name": "title_6", - "value": "To be removed", - "_translations": { - "value": {} - }, - "_nested_name": "title_6" - }, - { - "type": "round_button", - "name": "round_button_par_6_1", - "parameter_list": { - "starting_seconds": "0" - }, - "_nested_name": "round_button_par_6_1" - }, - { - "type": "round_button", - "name": "round_button_par_6_2", - "parameter_list": { - "starting_seconds": "5" - }, - "_nested_name": "round_button_par_6_2" - }, - { - "type": "round_button", - "name": "round_button_par_6_3", - "parameter_list": { - "ping": "plh_audio/timer/bell_1.mp3" - }, - "_nested_name": "round_button_par_6_3" - } - ], - "_xlsxPath": "quality_assurance/components_demo/component_round_button .xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/component_demo/comp_square_button.json b/packages/app-data/sheets/template/component_demo/comp_square_button.json deleted file mode 100644 index 9e0cfd4d9b..0000000000 --- a/packages/app-data/sheets/template/component_demo/comp_square_button.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "comp_square_button", - "status": "released", - "flow_subtype": "component_demo", - "rows": [ - { - "type": "square_button", - "name": "button_default", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_text" - ], - "_raw": "click | go_to: example_text", - "_cleaned": "click | go_to: example_text" - } - ], - "_nested_name": "button_default" - }, - { - "type": "title", - "name": "title_2", - "value": "Square button with icon", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "square_button", - "name": "square_button_par_2_1", - "parameter_list": { - "icon_src": "" - }, - "_nested_name": "square_button_par_2_1" - }, - { - "type": "square_button", - "name": "square_button_par_2_2", - "parameter_list": { - "icon_src": "plh_images/icons/play.svg" - }, - "_nested_name": "square_button_par_2_2" - }, - { - "type": "square_button", - "name": "square_button_par_2_3", - "parameter_list": { - "icon_src": "body-outline" - }, - "_nested_name": "square_button_par_2_3" - }, - { - "type": "title", - "name": "title_3", - "value": "Square button colour", - "_translations": { - "value": {} - }, - "_nested_name": "title_3" - }, - { - "type": "square_button", - "name": "square_button_par_3_1", - "parameter_list": { - "style": "information" - }, - "_nested_name": "square_button_par_3_1" - }, - { - "type": "square_button", - "name": "square_button_par_3_2", - "parameter_list": { - "style": "navigation" - }, - "_nested_name": "square_button_par_3_2" - }, - { - "type": "title", - "name": "title_4", - "value": "To be removed", - "_translations": { - "value": {} - }, - "_nested_name": "title_4" - }, - { - "type": "square_button", - "name": "square_button_par_4_1", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "parameter_list": { - "disabled": "false" - }, - "_nested_name": "square_button_par_4_1" - }, - { - "type": "square_button", - "name": "square_button_par_4_2", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "parameter_list": { - "disabled": "true" - }, - "_nested_name": "square_button_par_4_2" - } - ], - "_xlsxPath": "quality_assurance/components_demo/component_square_button.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/component_demo/comp_text.json b/packages/app-data/sheets/template/component_demo/comp_text.json deleted file mode 100644 index 881950a3b2..0000000000 --- a/packages/app-data/sheets/template/component_demo/comp_text.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "comp_text", - "status": "released", - "flow_subtype": "component_demo", - "rows": [ - { - "type": "text", - "name": "text_default", - "value": "Default", - "_translations": { - "value": {} - }, - "_nested_name": "text_default" - }, - { - "type": "title", - "name": "title_1", - "value": "Text alignment", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_align_1", - "value": "Left aligned text", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "left" - }, - "_nested_name": "text_align_1" - }, - { - "type": "text", - "name": "text_align_2", - "value": "Centered text", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "center" - }, - "_nested_name": "text_align_2" - }, - { - "type": "text", - "name": "text_align_3", - "value": "Right aligned text", - "_translations": { - "value": {} - }, - "parameter_list": { - "text_align": "right" - }, - "_nested_name": "text_align_3" - }, - { - "type": "title", - "name": "title_2", - "value": "Formatting", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_formatting_1", - "value": "Standard text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "standard" - }, - "_nested_name": "text_formatting_1" - }, - { - "type": "text", - "name": "text_formatting_2", - "value": "Contextual text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "contextual" - }, - "_nested_name": "text_formatting_2" - }, - { - "type": "text", - "name": "text_formatting_3", - "value": "Emphasised text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_formatting_3" - }, - { - "type": "text", - "name": "text_formatting_4", - "value": "Alternative text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "alternative" - }, - "_nested_name": "text_formatting_4" - }, - { - "type": "title", - "name": "title_3", - "value": "To be removed", - "_translations": { - "value": {} - }, - "_nested_name": "title_3" - }, - { - "type": "text", - "name": "text_size_1", - "value": "Small text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "small" - }, - "_nested_name": "text_size_1" - }, - { - "type": "text", - "name": "text_size_2", - "value": "Medium text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "medium" - }, - "_nested_name": "text_size_2" - }, - { - "type": "text", - "name": "text_size_3", - "value": "Large text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "large" - }, - "_nested_name": "text_size_3" - }, - { - "type": "text", - "name": "text_position_1", - "value": "Left aligned text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "left" - }, - "_nested_name": "text_position_1" - }, - { - "type": "text", - "name": "text_position_2", - "value": "Centered text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "center" - }, - "_nested_name": "text_position_2" - }, - { - "type": "text", - "name": "text_position_3", - "value": "Right aligned text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "right" - }, - "_nested_name": "text_position_3" - } - ], - "_xlsxPath": "quality_assurance/components_demo/component_text.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/bug_dashed_box.json b/packages/app-data/sheets/template/debug/bug_dashed_box.json deleted file mode 100644 index 43159ef88e..0000000000 --- a/packages/app-data/sheets/template/debug/bug_dashed_box.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "bug_dashed_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "dashed_box", - "name": "dashed_box_passive", - "value": "Every time you do a relax, mark your star.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dashed_box_passive" - }, - { - "type": "dashed_box", - "name": "dashed_box_active", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alert", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "top-right" - }, - "_nested_name": "dashed_box_active" - }, - { - "type": "dashed_box", - "name": "habit_text", - "value": "Every time you do a relax, \nclick the @global.parent_point \nand celebrate your success", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "habit_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Every time you do a relax, \nclick the @global.parent_point \nand celebrate your success", - "matchedExpression": "@global.parent_point", - "type": "global", - "fieldName": "parent_point" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_point": [ - "value" - ] - } - }, - { - "type": "dashed_box", - "name": "habit_text_2", - "value": "Every time you do a relax, click the @global.parent_point and celebrate your success", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star_circle.svg", - "icon_position": "top-left" - }, - "_nested_name": "habit_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Every time you do a relax, click the @global.parent_point and celebrate your success", - "matchedExpression": "@global.parent_point", - "type": "global", - "fieldName": "parent_point" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_point": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_actions_bottom.json b/packages/app-data/sheets/template/debug/debug_actions_bottom.json deleted file mode 100644 index e8d2c8febb..0000000000 --- a/packages/app-data/sheets/template/debug/debug_actions_bottom.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_actions_bottom", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "button", - "name": "button", - "value": "Button", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_overriding_action_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_actions_middle.json b/packages/app-data/sheets/template/debug/debug_actions_middle.json deleted file mode 100644 index 4a4e46fed5..0000000000 --- a/packages/app-data/sheets/template/debug/debug_actions_middle.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_actions_middle", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "field_1", - "value": "debug_actions_middle_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "field_1" - }, - { - "name": "value_1", - "value": "Value 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "value_1" - }, - { - "type": "text", - "name": "text_1", - "value": "Set the field debug_actions_middle_1 through a local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "template", - "name": "debug_actions_bottom_1", - "value": "debug_actions_bottom", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.field_1", - "@local.value_1" - ], - "_raw": "completed | set_field: @local.field_1 : @local.value_1", - "_cleaned": "completed | set_field: @local.field_1 : @local.value_1" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_bottom_1", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.field_1", - "matchedExpression": "@local.field_1", - "type": "local", - "fieldName": "field_1" - } - ], - "1": [ - { - "fullExpression": "@local.value_1", - "matchedExpression": "@local.value_1", - "type": "local", - "fieldName": "value_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: @local.field_1 : @local.value_1", - "matchedExpression": "@local.field_1", - "type": "local", - "fieldName": "field_1" - }, - { - "fullExpression": "completed | set_field: @local.field_1 : @local.value_1", - "matchedExpression": "@local.value_1", - "type": "local", - "fieldName": "value_1" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: @local.field_1 : @local.value_1", - "matchedExpression": "@local.field_1", - "type": "local", - "fieldName": "field_1" - }, - { - "fullExpression": "completed | set_field: @local.field_1 : @local.value_1", - "matchedExpression": "@local.value_1", - "type": "local", - "fieldName": "value_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.field_1": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.value_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Set the field debug_actions_middle_2 directly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "template", - "name": "debug_actions_bottom_2", - "value": "debug_actions_bottom", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_actions_middle_2", - "Value 2" - ], - "_raw": "completed | set_field: debug_actions_middle_2 : Value 2", - "_cleaned": "completed | set_field: debug_actions_middle_2 : Value 2" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_bottom_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_overriding_action_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_actions_top.json b/packages/app-data/sheets/template/debug/debug_actions_top.json deleted file mode 100644 index 0ef9351e69..0000000000 --- a/packages/app-data/sheets/template/debug/debug_actions_top.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_actions_top", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_0", - "value": "Example 0", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_0" - }, - { - "type": "template", - "name": "debug_actions_middle_0", - "value": "debug_actions_middle", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "Do not override the action list", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_0.text_1" - }, - { - "name": "text_2", - "value": "Do not override the action list", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_0.text_2" - } - ], - "_nested_name": "debug_actions_middle_0" - }, - { - "type": "title", - "name": "title_1", - "value": "Example 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "template", - "name": "debug_actions_middle_1", - "value": "debug_actions_middle", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "Set the field debug_actions_top_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_1.text_1" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_actions_top_1", - "Value 1" - ], - "_raw": "completed | set_field: debug_actions_top_1 : Value 1", - "_cleaned": "completed | set_field: debug_actions_top_1 : Value 1" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_1.debug_actions_bottom_1" - }, - { - "name": "text_2", - "value": "Set the field debug_actions_top_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_1.text_2" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_actions_top_2", - "Value 2" - ], - "_raw": "completed | set_field: debug_actions_top_2 : Value 2", - "_cleaned": "completed | set_field: debug_actions_top_2 : Value 2" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_1.debug_actions_bottom_2" - } - ], - "_nested_name": "debug_actions_middle_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Example 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "template", - "name": "debug_actions_middle_2", - "value": "debug_actions_middle", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "Set the field debug_actions_top_3 and emit completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_2.text_1" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_actions_top_3", - "Value 3" - ], - "_raw": "completed | set_field: debug_actions_top_3: Value 3", - "_cleaned": "completed | set_field: debug_actions_top_3: Value 3" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_2.debug_actions_bottom_1" - }, - { - "name": "text_2", - "value": "Set the field debug_actions_top_4 and emit completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_2.text_2" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_actions_top_4", - "Value 4" - ], - "_raw": "completed | set_field: debug_actions_top_4: Value 4", - "_cleaned": "completed | set_field: debug_actions_top_4: Value 4" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_2.debug_actions_bottom_2" - } - ], - "_nested_name": "debug_actions_middle_2" - }, - { - "type": "title", - "name": "title_3", - "value": "Example 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "template", - "name": "debug_actions_middle_3", - "value": "debug_actions_middle", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "Emit completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_3.text_1" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_3.debug_actions_bottom_1" - }, - { - "name": "text_2", - "value": "Emit completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_actions_middle_3.text_2" - }, - { - "type": "nested_properties", - "name": "debug_actions_bottom_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit: completed", - "_cleaned": "completed | emit: completed" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_actions_middle_3.debug_actions_bottom_2" - } - ], - "_nested_name": "debug_actions_middle_3" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_overriding_action_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_1.json b/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_1.json deleted file mode 100644 index 0225b29e65..0000000000 --- a/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_1.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_advanced_dashed_box_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "advanced_dashed_box", - "name": "dashed_box_test", - "exclude_from_translation": true, - "rows": [ - { - "type": "subtitle", - "value": "s simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised center" - }, - "exclude_from_translation": true, - "name": "subtitle", - "_nested_name": "dashed_box_test.subtitle" - }, - { - "type": "display_group", - "name": "display_group", - "exclude_from_translation": true, - "rows": [ - { - "type": "button", - "value": "test", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "button", - "_nested_name": "dashed_box_test.display_group.button" - } - ], - "_nested_name": "dashed_box_test.display_group" - } - ], - "_nested_name": "dashed_box_test" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "display_group", - "name": "display_group", - "parameter_list": { - "style": "dashed_box" - }, - "exclude_from_translation": true, - "rows": [ - { - "type": "subtitle", - "value": "Every time you do a relax, tap the ParentPoint and celebrate your success!", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised center", - "text_align": "center" - }, - "exclude_from_translation": true, - "name": "subtitle", - "_nested_name": "display_group.subtitle" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "exclude_from_translation": true, - "_nested_name": "display_group.points_example_1" - } - ], - "_nested_name": "display_group" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "display_group", - "name": "display_group", - "parameter_list": { - "style": "dashed_box" - }, - "exclude_from_translation": true, - "rows": [ - { - "type": "subtitle", - "value": "small text here", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised center" - }, - "exclude_from_translation": true, - "name": "subtitle", - "_nested_name": "display_group.subtitle" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "exclude_from_translation": true, - "_nested_name": "display_group.points_example_1" - } - ], - "_nested_name": "display_group" - }, - { - "type": "display_group", - "name": "display_group", - "exclude_from_translation": true, - "rows": [ - { - "type": "subtitle", - "value": "Every time you do a relax, tap the ParentPoint and celebrate your success!", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised center", - "text_align": "center" - }, - "exclude_from_translation": true, - "name": "subtitle", - "_nested_name": "display_group.subtitle" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "exclude_from_translation": true, - "_nested_name": "display_group.points_example_1" - } - ], - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_advanced_dashed_box.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_2.json b/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_2.json deleted file mode 100644 index 12f3ea849d..0000000000 --- a/packages/app-data/sheets/template/debug/debug_advanced_dashed_box_2.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_advanced_dashed_box_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "advanced_dashed_box", - "name": "dashed_box", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "dashed_box" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_advanced_dashed_box.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_audio_1.json b/packages/app-data/sheets/template/debug/debug_audio_1.json deleted file mode 100644 index 81a41795a2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_audio_1.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_audio_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "audio", - "name": "audio_src", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "title": "Test title" - }, - "_nested_name": "audio_src" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_audio_player_condition.json b/packages/app-data/sheets/template/debug/debug_audio_player_condition.json deleted file mode 100644 index e034f65cbc..0000000000 --- a/packages/app-data/sheets/template/debug/debug_audio_player_condition.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_audio_player_condition", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Show audio player" - }, - "_nested_name": "checkbox_1" - }, - { - "type": "audio", - "name": "audio_1", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "condition": "@local.checkbox_1", - "exclude_from_translation": true, - "parameter_list": { - "title": "Audio player" - }, - "_nested_name": "audio_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "condition" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_audio_player.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_audio_player_hide.json b/packages/app-data/sheets/template/debug/debug_audio_player_hide.json deleted file mode 100644 index 80c2dd6f03..0000000000 --- a/packages/app-data/sheets/template/debug/debug_audio_player_hide.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_audio_player_hide", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Hide audio player" - }, - "_nested_name": "checkbox_1" - }, - { - "type": "audio", - "name": "audio_1", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "hidden": "@local.checkbox_1", - "exclude_from_translation": true, - "parameter_list": { - "title": "Audio player" - }, - "_nested_name": "audio_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_audio_player.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_campaign_tester.json b/packages/app-data/sheets/template/debug/debug_campaign_tester.json deleted file mode 100644 index bf5bebcfe7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_campaign_tester.json +++ /dev/null @@ -1,299 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "debug_campaign_tester", - "status": "released", - "rows": [ - { - "type": "text", - "name": "text", - "value": "Campaign to be tested", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "name": "active", - "type": "set_variable", - "_nested_name": "active" - }, - { - "name": "campaign", - "value": "@campaign.", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "campaign" - }, - { - "name": "active_campaign", - "value": "@local.campaign@local.active", - "_translations": { - "value": {} - }, - "condition": "@local.active", - "type": "set_variable", - "_nested_name": "active_campaign", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.campaign@local.active", - "matchedExpression": "@local.campaign", - "type": "local", - "fieldName": "campaign" - }, - { - "fullExpression": "@local.campaign@local.active", - "matchedExpression": "@local.active", - "type": "local", - "fieldName": "active" - } - ], - "condition": [ - { - "fullExpression": "@local.active", - "matchedExpression": "@local.active", - "type": "local", - "fieldName": "active" - } - ] - }, - "_dynamicDependencies": { - "@local.campaign": [ - "value" - ], - "@local.active": [ - "value", - "condition" - ] - } - }, - { - "name": "answer_list", - "value": [ - "name: debug_daily | text: debug_daily", - "name: debug_actions | text: debug_actions", - "name: debug_calc | text: debug_calc" - ], - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "radio_group", - "name": "radio_group", - "value": "radio_group", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "active", - "this.value" - ], - "_raw": "changed | set_local: active: @local.radio_group", - "_cleaned": "changed | set_local: active: @local.radio_group" - }, - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "changed | emit: force_reprocess", - "_cleaned": "changed | emit: force_reprocess" - } - ], - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_local: active: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_local: active: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "display_group", - "condition": "@local.active", - "exclude_from_translation": true, - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "campaign_id", - "value": "Campaign id: @local.active_campaign.id", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.campaign_id", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Campaign id: @local.active_campaign.id", - "matchedExpression": "@local.active_campaign.id", - "type": "local", - "fieldName": "active_campaign" - } - ] - }, - "_dynamicDependencies": { - "@local.active_campaign.id": [ - "value" - ] - } - }, - { - "type": "round_button", - "name": "campaign_quickstart", - "action_list": [ - { - "trigger": "click", - "action_id": "trigger_actions", - "args": [ - "@local.active_campaign.action_list" - ], - "_raw": "click | trigger_actions: @local.active_campaign.action_list", - "_cleaned": "click | trigger_actions: @local.active_campaign.action_list" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "@local.active_campaign.icon", - "text": "@local.active_campaign.text", - "style": "home_screen yellow" - }, - "style_list": [ - "padding: 0" - ], - "_nested_name": "display_group.campaign_quickstart", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.active_campaign.action_list", - "matchedExpression": "@local.active_campaign.action_list", - "type": "local", - "fieldName": "active_campaign" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | trigger_actions: @local.active_campaign.action_list", - "matchedExpression": "@local.active_campaign.action_list", - "type": "local", - "fieldName": "active_campaign" - } - ], - "_cleaned": [ - { - "fullExpression": "click | trigger_actions: @local.active_campaign.action_list", - "matchedExpression": "@local.active_campaign.action_list", - "type": "local", - "fieldName": "active_campaign" - } - ] - } - }, - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@local.active_campaign.icon", - "matchedExpression": "@local.active_campaign.icon", - "type": "local", - "fieldName": "active_campaign" - } - ], - "text": [ - { - "fullExpression": "@local.active_campaign.text", - "matchedExpression": "@local.active_campaign.text", - "type": "local", - "fieldName": "active_campaign" - } - ] - } - }, - "_dynamicDependencies": { - "@local.active_campaign.action_list": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.active_campaign.icon": [ - "parameter_list.icon_src" - ], - "@local.active_campaign.text": [ - "parameter_list.text" - ] - } - } - ], - "name": "display_group", - "_nested_name": "display_group", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.active", - "matchedExpression": "@local.active", - "type": "local", - "fieldName": "active" - } - ] - }, - "_dynamicDependencies": { - "@local.active": [ - "condition" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_campaigns.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_changed_radio_group_1.json b/packages/app-data/sheets/template/debug/debug_changed_radio_group_1.json deleted file mode 100644 index f9b33a6031..0000000000 --- a/packages/app-data/sheets/template/debug/debug_changed_radio_group_1.json +++ /dev/null @@ -1,227 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_changed_radio_group_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "demo_changed_field_1", - "value": false, - "exclude_from_translation": true, - "_nested_name": "demo_changed_field_1" - }, - { - "name": "demo_changed_local", - "value": "demo_changed_field_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "demo_changed_local" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.demo_changed_local", - "this.value" - ], - "_raw": "changed | set_field: @local.demo_changed_local: @local.radio_group", - "_cleaned": "changed | set_field: @local.demo_changed_local: @local.radio_group" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.demo_changed_local", - "matchedExpression": "@local.demo_changed_local", - "type": "local", - "fieldName": "demo_changed_local" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field: @local.demo_changed_local: @local.radio_group", - "matchedExpression": "@local.demo_changed_local", - "type": "local", - "fieldName": "demo_changed_local" - }, - { - "fullExpression": "changed | set_field: @local.demo_changed_local: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: @local.demo_changed_local: @local.radio_group", - "matchedExpression": "@local.demo_changed_local", - "type": "local", - "fieldName": "demo_changed_local" - }, - { - "fullExpression": "changed | set_field: @local.demo_changed_local: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.demo_changed_local": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_1", - "type": "field", - "fieldName": "demo_changed_field_1" - }, - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_2", - "type": "field", - "fieldName": "demo_changed_field_2" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_1", - "type": "field", - "fieldName": "demo_changed_field_1" - }, - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_2", - "type": "field", - "fieldName": "demo_changed_field_2" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_1": [ - "value", - "hidden" - ], - "@field.demo_changed_field_2": [ - "value", - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_1", - "type": "field", - "fieldName": "demo_changed_field_1" - }, - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_2", - "type": "field", - "fieldName": "demo_changed_field_2" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_1", - "type": "field", - "fieldName": "demo_changed_field_1" - }, - { - "fullExpression": "@field.demo_changed_field_1 || @field.demo_changed_field_2==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_2", - "type": "field", - "fieldName": "demo_changed_field_2" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_1": [ - "value", - "hidden" - ], - "@field.demo_changed_field_2": [ - "value", - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_changed_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_changed_radio_group_2.json b/packages/app-data/sheets/template/debug/debug_changed_radio_group_2.json deleted file mode 100644 index bee130757e..0000000000 --- a/packages/app-data/sheets/template/debug/debug_changed_radio_group_2.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_changed_radio_group_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "demo_changed_field_3", - "value": false, - "exclude_from_translation": true, - "_nested_name": "demo_changed_field_3" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_4", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_4: @local.radio_group", - "_cleaned": "changed | set_field: demo_changed_field_4: @local.radio_group" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_4: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_4: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_3", - "type": "field", - "fieldName": "demo_changed_field_3" - }, - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_4", - "type": "field", - "fieldName": "demo_changed_field_4" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_3", - "type": "field", - "fieldName": "demo_changed_field_3" - }, - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_4", - "type": "field", - "fieldName": "demo_changed_field_4" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_3": [ - "value", - "hidden" - ], - "@field.demo_changed_field_4": [ - "value", - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_3", - "type": "field", - "fieldName": "demo_changed_field_3" - }, - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_4", - "type": "field", - "fieldName": "demo_changed_field_4" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_3", - "type": "field", - "fieldName": "demo_changed_field_3" - }, - { - "fullExpression": "@field.demo_changed_field_3 || @field.demo_changed_field_4==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_4", - "type": "field", - "fieldName": "demo_changed_field_4" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_3": [ - "value", - "hidden" - ], - "@field.demo_changed_field_4": [ - "value", - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_changed_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_changed_radio_group_3.json b/packages/app-data/sheets/template/debug/debug_changed_radio_group_3.json deleted file mode 100644 index 03516d62c4..0000000000 --- a/packages/app-data/sheets/template/debug/debug_changed_radio_group_3.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_changed_radio_group_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "demo_changed_field_5", - "value": false, - "exclude_from_translation": true, - "_nested_name": "demo_changed_field_5" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_6", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_6: @local.radio_group", - "_cleaned": "changed | set_field: demo_changed_field_6: @local.radio_group" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_6: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_6: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "template", - "name": "example_text_1", - "value": "example_text", - "hidden": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_5", - "type": "field", - "fieldName": "demo_changed_field_5" - }, - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_6", - "type": "field", - "fieldName": "demo_changed_field_6" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_5": [ - "value" - ], - "@field.demo_changed_field_6": [ - "value" - ] - } - } - ], - "_nested_name": "example_text_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_5", - "type": "field", - "fieldName": "demo_changed_field_5" - }, - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_6", - "type": "field", - "fieldName": "demo_changed_field_6" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_5": [ - "hidden" - ], - "@field.demo_changed_field_6": [ - "hidden" - ] - } - }, - { - "type": "template", - "name": "example_text_2", - "value": "example_text", - "hidden": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_5", - "type": "field", - "fieldName": "demo_changed_field_5" - }, - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_6", - "type": "field", - "fieldName": "demo_changed_field_6" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_5": [ - "value" - ], - "@field.demo_changed_field_6": [ - "value" - ] - } - } - ], - "_nested_name": "example_text_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_5", - "type": "field", - "fieldName": "demo_changed_field_5" - }, - { - "fullExpression": "@field.demo_changed_field_5 || @field.demo_changed_field_6==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_6", - "type": "field", - "fieldName": "demo_changed_field_6" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_5": [ - "hidden" - ], - "@field.demo_changed_field_6": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_changed_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_changed_radio_group_4.json b/packages/app-data/sheets/template/debug/debug_changed_radio_group_4.json deleted file mode 100644 index 0c67233a34..0000000000 --- a/packages/app-data/sheets/template/debug/debug_changed_radio_group_4.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_changed_radio_group_4", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "demo_changed_field_7", - "value": false, - "exclude_from_translation": true, - "_nested_name": "demo_changed_field_7" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_8", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_8: @local.radio_group", - "_cleaned": "changed | set_field: demo_changed_field_8: @local.radio_group" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_8: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_8: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "template", - "name": "box_duo", - "value": "box_duo", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "example_text", - "hidden": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_duo.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_7", - "type": "field", - "fieldName": "demo_changed_field_7" - }, - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_8", - "type": "field", - "fieldName": "demo_changed_field_8" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_7": [ - "value" - ], - "@field.demo_changed_field_8": [ - "value" - ] - } - } - ], - "_nested_name": "box_duo.box_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_7", - "type": "field", - "fieldName": "demo_changed_field_7" - }, - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_1\"", - "matchedExpression": "@field.demo_changed_field_8", - "type": "field", - "fieldName": "demo_changed_field_8" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_7": [ - "hidden" - ], - "@field.demo_changed_field_8": [ - "hidden" - ] - } - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "example_text", - "hidden": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_duo.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_7", - "type": "field", - "fieldName": "demo_changed_field_7" - }, - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_8", - "type": "field", - "fieldName": "demo_changed_field_8" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_7": [ - "value" - ], - "@field.demo_changed_field_8": [ - "value" - ] - } - } - ], - "_nested_name": "box_duo.box_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_7", - "type": "field", - "fieldName": "demo_changed_field_7" - }, - { - "fullExpression": "@field.demo_changed_field_7 || @field.demo_changed_field_8==\"name_var_2\"", - "matchedExpression": "@field.demo_changed_field_8", - "type": "field", - "fieldName": "demo_changed_field_8" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_7": [ - "hidden" - ], - "@field.demo_changed_field_8": [ - "hidden" - ] - } - } - ], - "_nested_name": "box_duo" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_changed_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_dynamic.json b/packages/app-data/sheets/template/debug/debug_combo_box_dynamic.json deleted file mode 100644 index cfa870ec69..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_dynamic.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_dynamic", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "combo_box_2_var", - "value": "combo_box_2_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_2_var" - }, - { - "type": "combo_box", - "name": "combo_box_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "local variable for combo box 1: @local.combo_box_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "local variable for combo box 1: @local.combo_box_1", - "matchedExpression": "@local.combo_box_1", - "type": "local", - "fieldName": "combo_box_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_1": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.combo_box_2_var", - "this.value" - ], - "_raw": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2", - "_cleaned": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "combo_box_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_2_var", - "matchedExpression": "@local.combo_box_2_var", - "type": "local", - "fieldName": "combo_box_2_var" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2_var", - "type": "local", - "fieldName": "combo_box_2_var" - }, - { - "fullExpression": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2", - "type": "local", - "fieldName": "combo_box_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2_var", - "type": "local", - "fieldName": "combo_box_2_var" - }, - { - "fullExpression": "changed | set_field:@local.combo_box_2_var:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2", - "type": "local", - "fieldName": "combo_box_2" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box_2_var": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.combo_box_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Local variable for combo box 2: @local.combo_box_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local variable for combo box 2: @local.combo_box_2", - "matchedExpression": "@local.combo_box_2", - "type": "local", - "fieldName": "combo_box_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "field for combo box 2: @field.combo_box_2_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "field for combo box 2: @field.combo_box_2_field", - "matchedExpression": "@field.combo_box_2_field", - "type": "field", - "fieldName": "combo_box_2_field" - } - ] - }, - "_dynamicDependencies": { - "@field.combo_box_2_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dynamic.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_in_dg.json b/packages/app-data/sheets/template/debug/debug_combo_box_in_dg.json deleted file mode 100644 index 5b2ec9ae1d..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_in_dg.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_in_dg", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "display_group_1", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Using the condition column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group_1.title_1" - }, - { - "name": "answer_list_challenge_1", - "value": [ - "name:choice_1_a | text: choice_1_a", - "name:choice_1_b | text: choice_1_b", - "name:choice_1_c | text: choice_1_c" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "display_group_1.answer_list_challenge_1" - }, - { - "type": "combo_box", - "name": "combo_box_challenge_1", - "parameter_list": { - "answer_list": "@local.answer_list_challenge_1", - "placeholder": "@global.tap_and_choose" - }, - "_nested_name": "display_group_1.combo_box_challenge_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_challenge_1", - "matchedExpression": "@local.answer_list_challenge_1", - "type": "local", - "fieldName": "answer_list_challenge_1" - } - ], - "placeholder": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_challenge_1": [ - "parameter_list.answer_list" - ], - "@global.tap_and_choose": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_a", - "value": "reply_choice_1_a", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_a\"", - "exclude_from_translation": true, - "_nested_name": "display_group_1.reply_choice_1_a", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_a\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_b", - "value": "reply_choice_1_b", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_b\"", - "exclude_from_translation": true, - "_nested_name": "display_group_1.reply_choice_1_b", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_b\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_c", - "value": "reply_choice_1_c", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_c\"", - "exclude_from_translation": true, - "_nested_name": "display_group_1.reply_choice_1_c", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_c\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - } - ], - "_nested_name": "display_group_1" - }, - { - "type": "display_group", - "name": "display_group_2", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "title", - "name": "title_2", - "value": "Using the hidden column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group_2.title_2" - }, - { - "name": "answer_list_challenge_2", - "value": [ - "name:choice_2_a | text: choice_2_a", - "name:choice_2_b | text: choice_2_b", - "name:choice_2_c | text: choice_2_c" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "display_group_2.answer_list_challenge_2" - }, - { - "type": "combo_box", - "name": "combo_box_challenge_2", - "parameter_list": { - "answer_list": "@local.answer_list_challenge_2", - "placeholder": "@global.tap_and_choose" - }, - "_nested_name": "display_group_2.combo_box_challenge_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_challenge_2", - "matchedExpression": "@local.answer_list_challenge_2", - "type": "local", - "fieldName": "answer_list_challenge_2" - } - ], - "placeholder": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_challenge_2": [ - "parameter_list.answer_list" - ], - "@global.tap_and_choose": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_a", - "value": "reply_choice_2_a", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_a\"", - "exclude_from_translation": true, - "_nested_name": "display_group_2.reply_choice_2_a", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_a\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_b", - "value": "reply_choice_2_b", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_b\"", - "exclude_from_translation": true, - "_nested_name": "display_group_2.reply_choice_2_b", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_b\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_c", - "value": "reply_choice_2_c", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_c\"", - "exclude_from_translation": true, - "_nested_name": "display_group_2.reply_choice_2_c", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_c\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - } - ], - "_nested_name": "display_group_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_combo_box_in_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_input.json b/packages/app-data/sheets/template/debug/debug_combo_box_input.json deleted file mode 100644 index 2eae5eefdb..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_input.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_input", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "combo_box", - "name": "combo_box", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer", - "input_allowed": "true", - "answer_placeholder": "Type your own" - }, - "_nested_name": "combo_box", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_result", - "value": "Local combo box variable: @local.combo_box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_result", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local combo box variable: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_combo_box.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_input_var.json b/packages/app-data/sheets/template/debug/debug_combo_box_input_var.json deleted file mode 100644 index 9b35f303e4..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_input_var.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_input_var", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "combo_box", - "name": "combo_box_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer", - "input_allowed": "true", - "answer_placeholder": "Type your own" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "input_allowed", - "value": true, - "type": "set_variable", - "_nested_name": "input_allowed" - }, - { - "type": "combo_box", - "name": "combo_box_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer", - "input_allowed": "@local.input_allowed", - "answer_placeholder": "Type your own" - }, - "_nested_name": "combo_box_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "input_allowed": [ - { - "fullExpression": "@local.input_allowed", - "matchedExpression": "@local.input_allowed", - "type": "local", - "fieldName": "input_allowed" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.input_allowed": [ - "parameter_list.input_allowed" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_combo_box.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_not_in_dg.json b/packages/app-data/sheets/template/debug/debug_combo_box_not_in_dg.json deleted file mode 100644 index 17e48ad825..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_not_in_dg.json +++ /dev/null @@ -1,281 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_not_in_dg", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Using the condition column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "name": "answer_list_challenge_1", - "value": [ - "name:choice_1_a | text: choice_1_a", - "name:choice_1_b | text: choice_1_b", - "name:choice_1_c | text: choice_1_c" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_challenge_1" - }, - { - "type": "combo_box", - "name": "combo_box_challenge_1", - "parameter_list": { - "answer_list": "@local.answer_list_challenge_1", - "placeholder": "@global.tap_and_choose" - }, - "_nested_name": "combo_box_challenge_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_challenge_1", - "matchedExpression": "@local.answer_list_challenge_1", - "type": "local", - "fieldName": "answer_list_challenge_1" - } - ], - "placeholder": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_challenge_1": [ - "parameter_list.answer_list" - ], - "@global.tap_and_choose": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_a", - "value": "reply_choice_1_a", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_a\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_1_a", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_a\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_b", - "value": "reply_choice_1_b", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_b\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_1_b", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_b\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "reply_choice_1_c", - "value": "reply_choice_1_c", - "_translations": { - "value": {} - }, - "condition": "@local.combo_box_challenge_1==\"choice_1_c\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_1_c", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.combo_box_challenge_1==\"choice_1_c\"", - "matchedExpression": "@local.combo_box_challenge_1", - "type": "local", - "fieldName": "combo_box_challenge_1" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_1": [ - "condition" - ] - } - }, - { - "type": "title", - "name": "title_2", - "value": "Using the hidden column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "name": "answer_list_challenge_2", - "value": [ - "name:choice_2_a | text: choice_2_a", - "name:choice_2_b | text: choice_2_b", - "name:choice_2_c | text: choice_2_c" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_challenge_2" - }, - { - "type": "combo_box", - "name": "combo_box_challenge_2", - "parameter_list": { - "answer_list": "@local.answer_list_challenge_2", - "placeholder": "@global.tap_and_choose" - }, - "_nested_name": "combo_box_challenge_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_challenge_2", - "matchedExpression": "@local.answer_list_challenge_2", - "type": "local", - "fieldName": "answer_list_challenge_2" - } - ], - "placeholder": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_challenge_2": [ - "parameter_list.answer_list" - ], - "@global.tap_and_choose": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_a", - "value": "reply_choice_2_a", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_a\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_2_a", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_a\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_b", - "value": "reply_choice_2_b", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_b\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_2_b", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_b\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_choice_2_c", - "value": "reply_choice_2_c", - "_translations": { - "value": {} - }, - "hidden": "@local.combo_box_challenge_2!=\"choice_2_c\"", - "exclude_from_translation": true, - "_nested_name": "reply_choice_2_c", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.combo_box_challenge_2!=\"choice_2_c\"", - "matchedExpression": "@local.combo_box_challenge_2", - "type": "local", - "fieldName": "combo_box_challenge_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_challenge_2": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_combo_box_in_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_value.json b/packages/app-data/sheets/template/debug/debug_combo_box_value.json deleted file mode 100644 index 99fea702cc..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_value.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_value", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "combo_box", - "name": "combo_box", - "value": "name_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "combo_box", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_combo_box.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_combo_box_variables.json b/packages/app-data/sheets/template/debug/debug_combo_box_variables.json deleted file mode 100644 index 96ce53c800..0000000000 --- a/packages/app-data/sheets/template/debug/debug_combo_box_variables.json +++ /dev/null @@ -1,572 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_combo_box_variables", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_1_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_1_list" - }, - { - "name": "option_1", - "value": "Option 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_1" - }, - { - "name": "option_2", - "value": "Option 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_2" - }, - { - "name": "option_3", - "value": "Option 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_3" - }, - { - "name": "answer_2_list", - "value": [ - "name: name_1 | text: @local.option_1", - "name: name_2 | text: @local.option_2", - "name: name_3 | text: @local.option_3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_2_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: name_1 | text: @local.option_1", - "matchedExpression": "@local.option_1", - "type": "local", - "fieldName": "option_1" - } - ], - "1": [ - { - "fullExpression": "name: name_2 | text: @local.option_2", - "matchedExpression": "@local.option_2", - "type": "local", - "fieldName": "option_2" - } - ], - "2": [ - { - "fullExpression": "name: name_3 | text: @local.option_3", - "matchedExpression": "@local.option_3", - "type": "local", - "fieldName": "option_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.option_1": [ - "value.0" - ], - "@local.option_2": [ - "value.1" - ], - "@local.option_3": [ - "value.2" - ] - } - }, - { - "name": "answer_3_list", - "value": [ - "name: name_1 | text: @global.example_global_constant_text", - "name: name_2 | text: @global.example_global_constant_title" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_3_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: name_1 | text: @global.example_global_constant_text", - "matchedExpression": "@global.example_global_constant_text", - "type": "global", - "fieldName": "example_global_constant_text" - } - ], - "1": [ - { - "fullExpression": "name: name_2 | text: @global.example_global_constant_title", - "matchedExpression": "@global.example_global_constant_title", - "type": "global", - "fieldName": "example_global_constant_title" - } - ] - } - }, - "_dynamicDependencies": { - "@global.example_global_constant_text": [ - "value.0" - ], - "@global.example_global_constant_title": [ - "value.1" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "This is the combo box variables debug template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Direct answer list (set through local variable)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "combo_box", - "name": "combo_box_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_1_list" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_1_list", - "matchedExpression": "@local.answer_1_list", - "type": "local", - "fieldName": "answer_1_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_1_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Answer list contains local variables", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "combo_box", - "name": "combo_box_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_2_list" - }, - "_nested_name": "combo_box_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_2_list", - "matchedExpression": "@local.answer_2_list", - "type": "local", - "fieldName": "answer_2_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_2_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "Answer list contains global variables", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "combo_box", - "name": "combo_box_3", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_3_list" - }, - "_nested_name": "combo_box_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_3_list", - "matchedExpression": "@local.answer_3_list", - "type": "local", - "fieldName": "answer_3_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_3_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "spend_time_idea_1", - "value": "Walking to the shops", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_1" - }, - { - "name": "spend_time_idea_2", - "value": "Get water together", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_2" - }, - { - "name": "spend_time_idea_3", - "value": "Doing a chore together", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_3" - }, - { - "name": "spend_time_idea_4", - "value": "Prepare dinner", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_4" - }, - { - "name": "spend_time_idea_5", - "value": "Eat breakfast/lunch/dinner", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_5" - }, - { - "name": "spend_time_idea_6", - "value": "Have tea after school", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_6" - }, - { - "name": "spend_time_idea_7", - "value": "Watch a T.V. show", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_7" - }, - { - "name": "spend_time_idea_8", - "value": "Review homework", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_8" - }, - { - "name": "spend_time_idea_9", - "value": "Chat before bedtime", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_9" - }, - { - "name": "spend_time_idea_10", - "value": "Play a game/sport", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "spend_time_idea_10" - }, - { - "name": "answer_list", - "value": [ - "name:name_1 | text:@local.spend_time_idea_1", - "name:name_2 | text:@local.spend_time_idea_2", - "name:name_3 | text:@local.spend_time_idea_3", - "name:name_4 | text:@local.spend_time_idea_4", - "name:name_5 | text:@local.spend_time_idea_5", - "name:name_6 | text:@local.spend_time_idea_6", - "name:name_7 | text:@local.spend_time_idea_7", - "name:name_8 | text:@local.spend_time_idea_8", - "name:name_9 | text:@local.spend_time_idea_9", - "name:name_10 | text:@local.spend_time_idea_10" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:name_1 | text:@local.spend_time_idea_1", - "matchedExpression": "@local.spend_time_idea_1", - "type": "local", - "fieldName": "spend_time_idea_1" - } - ], - "1": [ - { - "fullExpression": "name:name_2 | text:@local.spend_time_idea_2", - "matchedExpression": "@local.spend_time_idea_2", - "type": "local", - "fieldName": "spend_time_idea_2" - } - ], - "2": [ - { - "fullExpression": "name:name_3 | text:@local.spend_time_idea_3", - "matchedExpression": "@local.spend_time_idea_3", - "type": "local", - "fieldName": "spend_time_idea_3" - } - ], - "3": [ - { - "fullExpression": "name:name_4 | text:@local.spend_time_idea_4", - "matchedExpression": "@local.spend_time_idea_4", - "type": "local", - "fieldName": "spend_time_idea_4" - } - ], - "4": [ - { - "fullExpression": "name:name_5 | text:@local.spend_time_idea_5", - "matchedExpression": "@local.spend_time_idea_5", - "type": "local", - "fieldName": "spend_time_idea_5" - } - ], - "5": [ - { - "fullExpression": "name:name_6 | text:@local.spend_time_idea_6", - "matchedExpression": "@local.spend_time_idea_6", - "type": "local", - "fieldName": "spend_time_idea_6" - } - ], - "6": [ - { - "fullExpression": "name:name_7 | text:@local.spend_time_idea_7", - "matchedExpression": "@local.spend_time_idea_7", - "type": "local", - "fieldName": "spend_time_idea_7" - } - ], - "7": [ - { - "fullExpression": "name:name_8 | text:@local.spend_time_idea_8", - "matchedExpression": "@local.spend_time_idea_8", - "type": "local", - "fieldName": "spend_time_idea_8" - } - ], - "8": [ - { - "fullExpression": "name:name_9 | text:@local.spend_time_idea_9", - "matchedExpression": "@local.spend_time_idea_9", - "type": "local", - "fieldName": "spend_time_idea_9" - } - ], - "9": [ - { - "fullExpression": "name:name_10 | text:@local.spend_time_idea_10", - "matchedExpression": "@local.spend_time_idea_10", - "type": "local", - "fieldName": "spend_time_idea_10" - } - ] - } - }, - "_dynamicDependencies": { - "@local.spend_time_idea_1": [ - "value.0" - ], - "@local.spend_time_idea_2": [ - "value.1" - ], - "@local.spend_time_idea_3": [ - "value.2" - ], - "@local.spend_time_idea_4": [ - "value.3" - ], - "@local.spend_time_idea_5": [ - "value.4" - ], - "@local.spend_time_idea_6": [ - "value.5" - ], - "@local.spend_time_idea_7": [ - "value.6" - ], - "@local.spend_time_idea_8": [ - "value.7" - ], - "@local.spend_time_idea_9": [ - "value.8" - ], - "@local.spend_time_idea_10": [ - "value.9" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_4", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "combo_box_4", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_component_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_conditional_messages_q1.json b/packages/app-data/sheets/template/debug/debug_conditional_messages_q1.json deleted file mode 100644 index 4cc345cd3c..0000000000 --- a/packages/app-data/sheets/template/debug/debug_conditional_messages_q1.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_conditional_messages_q1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "answer_q1", - "value": "NA", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "answer_q1" - }, - { - "type": "slider", - "name": "slider_q1", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "answer_q1", - "this.value" - ], - "_raw": "changed | set_field:answer_q1:@local.slider_q1", - "_cleaned": "changed | set_field:answer_q1:@local.slider_q1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "title": "Question 1" - }, - "_nested_name": "slider_q1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:answer_q1:@local.slider_q1", - "matchedExpression": "@local.slider_q1", - "type": "local", - "fieldName": "slider_q1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:answer_q1:@local.slider_q1", - "matchedExpression": "@local.slider_q1", - "type": "local", - "fieldName": "slider_q1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.slider_q1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_q1", - "value": "answer to q1 saved in field answer_q1: @field.answer_q1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_q1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "answer to q1 saved in field answer_q1: @field.answer_q1", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "value" - ] - } - }, - { - "type": "button", - "name": "go_to_q2", - "value": "Go to Q2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_conditional_messages_q2" - ], - "_raw": "click | go_to:debug_conditional_messages_q2", - "_cleaned": "click | go_to:debug_conditional_messages_q2" - } - ], - "exclude_from_translation": true, - "_nested_name": "go_to_q2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_conditional_messages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_conditional_messages_q2.json b/packages/app-data/sheets/template/debug/debug_conditional_messages_q2.json deleted file mode 100644 index 80db136743..0000000000 --- a/packages/app-data/sheets/template/debug/debug_conditional_messages_q2.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_conditional_messages_q2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "answer_q2", - "value": "NA", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "answer_q2" - }, - { - "type": "slider", - "name": "slider_q2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "answer_q2", - "this.value" - ], - "_raw": "changed | set_field:answer_q2:@local.slider_q2", - "_cleaned": "changed | set_field:answer_q2:@local.slider_q2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "title": "Question 2" - }, - "_nested_name": "slider_q2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:answer_q2:@local.slider_q2", - "matchedExpression": "@local.slider_q2", - "type": "local", - "fieldName": "slider_q2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:answer_q2:@local.slider_q2", - "matchedExpression": "@local.slider_q2", - "type": "local", - "fieldName": "slider_q2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.slider_q2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_q2", - "value": "answer to q2 saved in field answer_q2: @field.answer_q2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_q2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "answer to q2 saved in field answer_q2: @field.answer_q2", - "matchedExpression": "@field.answer_q2", - "type": "field", - "fieldName": "answer_q2" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q2": [ - "value" - ] - } - }, - { - "type": "button", - "name": "back_to_q1", - "value": "Back to Q1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_conditional_messages_q1" - ], - "_raw": "click | go_to:debug_conditional_messages_q1", - "_cleaned": "click | go_to:debug_conditional_messages_q1" - } - ], - "exclude_from_translation": true, - "_nested_name": "back_to_q1" - }, - { - "type": "button", - "name": "conditional_texts", - "value": "Go to conditional texts", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_conditional_texts" - ], - "_raw": "click | go_to:debug_conditional_texts", - "_cleaned": "click | go_to:debug_conditional_texts" - } - ], - "exclude_from_translation": true, - "_nested_name": "conditional_texts" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_conditional_messages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_conditional_texts.json b/packages/app-data/sheets/template/debug/debug_conditional_texts.json deleted file mode 100644 index 7b3770318b..0000000000 --- a/packages/app-data/sheets/template/debug/debug_conditional_texts.json +++ /dev/null @@ -1,372 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_conditional_texts", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_q1", - "value": "answer to q1 saved in field answer_q1: @field.answer_q1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_q1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "answer to q1 saved in field answer_q1: @field.answer_q1", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_q2", - "value": "answer to q2 saved in field answer_q2: @field.answer_q2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_q2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "answer to q2 saved in field answer_q2: @field.answer_q2", - "matchedExpression": "@field.answer_q2", - "type": "field", - "fieldName": "answer_q2" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_1", - "value": "Hidden column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "conditional_text_1", - "value": "This text shows if the answer to Q1 is less than 4", - "_translations": { - "value": {} - }, - "hidden": "@field.answer_q1>=4", - "exclude_from_translation": true, - "_nested_name": "conditional_text_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.answer_q1>=4", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "conditional_text_2", - "value": "This text shows if the answer to Q2 is less than 4", - "_translations": { - "value": {} - }, - "hidden": "@field.answer_q2>=4", - "exclude_from_translation": true, - "_nested_name": "conditional_text_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.answer_q2>=4", - "matchedExpression": "@field.answer_q2", - "type": "field", - "fieldName": "answer_q2" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "conditional_text_3", - "value": "This text shows if the answer to Q1 is greater than or equal to 4 and the answer to Q2 is greater than or equal to 4", - "_translations": { - "value": {} - }, - "hidden": "@field.answer_q1<4 || @field.answer_q2<4", - "exclude_from_translation": true, - "_nested_name": "conditional_text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.answer_q1<4 || @field.answer_q2<4", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - }, - { - "fullExpression": "@field.answer_q1<4 || @field.answer_q2<4", - "matchedExpression": "@field.answer_q2", - "type": "field", - "fieldName": "answer_q2" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "hidden" - ], - "@field.answer_q2": [ - "hidden" - ] - } - }, - { - "type": "title", - "name": "title_2", - "value": "Condition column", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "conditional_text", - "value": "This text is created if the answer to Q1 is greater than or equal to 4", - "_translations": { - "value": {} - }, - "condition": "@field.answer_q1>=4", - "exclude_from_translation": true, - "_nested_name": "conditional_text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@field.answer_q1>=4", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "conditional_text", - "value": "This text is created if the answer to Q1 is less than 4", - "_translations": { - "value": {} - }, - "condition": "!(@field.answer_q1>=4)", - "exclude_from_translation": true, - "_nested_name": "conditional_text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@field.answer_q1>=4)", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "condition" - ] - } - }, - { - "type": "title", - "name": "title_2", - "value": "Condition column through a nested template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "template", - "name": "example_text_1", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "This text is created if the answer to Q1 is greater than or equal to 4", - "_translations": { - "value": {} - }, - "condition": "@field.answer_q1>=4", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@field.answer_q1>=4", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "This text is created if the answer to Q1 is less than 4", - "_translations": { - "value": {} - }, - "condition": "!(@field.answer_q1>=4)", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@field.answer_q1>=4)", - "matchedExpression": "@field.answer_q1", - "type": "field", - "fieldName": "answer_q1" - } - ] - }, - "_dynamicDependencies": { - "@field.answer_q1": [ - "condition" - ] - } - } - ], - "_nested_name": "example_text_1" - }, - { - "type": "button", - "name": "back_to_q1", - "value": "Back to Q2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_conditional_messages_q2" - ], - "_raw": "click | go_to:debug_conditional_messages_q2", - "_cleaned": "click | go_to:debug_conditional_messages_q2" - } - ], - "exclude_from_translation": true, - "_nested_name": "back_to_q1" - }, - { - "type": "template", - "name": "example_text_2", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "not printed", - "_translations": { - "value": {} - }, - "condition": "1>2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_2.text" - }, - { - "name": "text", - "value": "printed", - "_translations": { - "value": {} - }, - "condition": "2>1", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_2.text" - } - ], - "_nested_name": "example_text_2" - }, - { - "type": "template", - "name": "example_text_3", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "printed", - "_translations": { - "value": {} - }, - "condition": "2>1", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_3.text" - }, - { - "name": "text", - "value": "not printed", - "_translations": { - "value": {} - }, - "condition": "1>2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_3.text" - } - ], - "_nested_name": "example_text_3" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_conditional_messages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dashed_box_paragraphs.json b/packages/app-data/sheets/template/debug/debug_dashed_box_paragraphs.json deleted file mode 100644 index b525f8b4c1..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dashed_box_paragraphs.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dashed_box_paragraphs", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "text_paragraphs", - "value": "This is the first line in the first paragraph\nThis is the second line in the first paragraph.\n\nThis is the first line in the second paragraph\nThis is the second line in the second paragraph.\n\nThis is the first line in the third paragraph", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_paragraphs" - }, - { - "type": "dashed_box", - "name": "dashed_box_1", - "value": "@local.text_paragraphs", - "_translations": { - "value": {} - }, - "_nested_name": "dashed_box_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_paragraphs", - "matchedExpression": "@local.text_paragraphs", - "type": "local", - "fieldName": "text_paragraphs" - } - ] - }, - "_dynamicDependencies": { - "@local.text_paragraphs": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "@local.text_paragraphs", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_paragraphs", - "matchedExpression": "@local.text_paragraphs", - "type": "local", - "fieldName": "text_paragraphs" - } - ] - }, - "_dynamicDependencies": { - "@local.text_paragraphs": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_paragraphs.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_data_bottom.json b/packages/app-data/sheets/template/debug/debug_data_bottom.json deleted file mode 100644 index 9069cc9975..0000000000 --- a/packages/app-data/sheets/template/debug/debug_data_bottom.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_data_bottom", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "@data.debug.item_1.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_1.text", - "matchedExpression": "@data.debug.item_1.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_1.text": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "text_3", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "@data.debug.item_1.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_1.text", - "matchedExpression": "@data.debug.item_1.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_1.text": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_data_image.json b/packages/app-data/sheets/template/debug/debug_data_image.json deleted file mode 100644 index 0e36e498bd..0000000000 --- a/packages/app-data/sheets/template/debug/debug_data_image.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_data_image", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Print text and image of item 1:\n\n@data.debug.item_1.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Print text and image of item 1:\n\n@data.debug.item_1.text", - "matchedExpression": "@data.debug.item_1.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_1.text": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image_1", - "value": "@data.debug.item_1.image_asset", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "image_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_1.image_asset", - "matchedExpression": "@data.debug.item_1.image_asset", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_1.image_asset": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "The parent point box below shows that the icon_src is NOT found when called through a data field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "parent_point_box", - "name": "parent_point_box_1", - "exclude_from_translation": true, - "parameter_list": { - "text": "@data.debug.item_1.text", - "icon_src": "@data.debug.item_1.image_asset" - }, - "_nested_name": "parent_point_box_1", - "_dynamicFields": { - "parameter_list": { - "text": [ - { - "fullExpression": "@data.debug.item_1.text", - "matchedExpression": "@data.debug.item_1.text", - "type": "data", - "fieldName": "debug" - } - ], - "icon_src": [ - { - "fullExpression": "@data.debug.item_1.image_asset", - "matchedExpression": "@data.debug.item_1.image_asset", - "type": "data", - "fieldName": "debug" - } - ] - } - }, - "_dynamicDependencies": { - "@data.debug.item_1.text": [ - "parameter_list.text" - ], - "@data.debug.item_1.image_asset": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "The parent point box below shows that the icon_src IS found when called directly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "parent_point_box", - "name": "parent_point_box_2", - "exclude_from_translation": true, - "parameter_list": { - "text": "@data.debug.item_1.text", - "icon_src": "plh_images/habits/habit_relax.svg" - }, - "_nested_name": "parent_point_box_2", - "_dynamicFields": { - "parameter_list": { - "text": [ - { - "fullExpression": "@data.debug.item_1.text", - "matchedExpression": "@data.debug.item_1.text", - "type": "data", - "fieldName": "debug" - } - ] - } - }, - "_dynamicDependencies": { - "@data.debug.item_1.text": [ - "parameter_list.text" - ] - } - }, - { - "value": "The tile below shows that the icon_src is NOT found when called through a data field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "tile_component", - "name": "quick_start_tile_1", - "exclude_from_translation": true, - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@data.debug.item_2.text", - "second_line_text": "image through data", - "icon_src": "@data.debug.item_2.image_asset" - }, - "_nested_name": "quick_start_tile_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@data.debug.item_2.text", - "matchedExpression": "@data.debug.item_2.text", - "type": "data", - "fieldName": "debug" - } - ], - "icon_src": [ - { - "fullExpression": "@data.debug.item_2.image_asset", - "matchedExpression": "@data.debug.item_2.image_asset", - "type": "data", - "fieldName": "debug" - } - ] - } - }, - "_dynamicDependencies": { - "@data.debug.item_2.text": [ - "parameter_list.first_line_text" - ], - "@data.debug.item_2.image_asset": [ - "parameter_list.icon_src" - ] - } - }, - { - "value": "The tile below shows that the icon_src IS found when called directly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "tile_component", - "name": "quick_start_tile_2", - "exclude_from_translation": true, - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@data.debug.item_2.text", - "second_line_text": "image loaded directly", - "icon_src": "plh_images/icons/play_white.svg" - }, - "_nested_name": "quick_start_tile_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@data.debug.item_2.text", - "matchedExpression": "@data.debug.item_2.text", - "type": "data", - "fieldName": "debug" - } - ] - } - }, - "_dynamicDependencies": { - "@data.debug.item_2.text": [ - "parameter_list.first_line_text" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_data_middle.json b/packages/app-data/sheets/template/debug/debug_data_middle.json deleted file mode 100644 index bf6d36dab1..0000000000 --- a/packages/app-data/sheets/template/debug/debug_data_middle.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_data_middle", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_data_bottom", - "value": "debug_data_bottom", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "@data.debug.item_2.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_bottom.text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_2.text", - "matchedExpression": "@data.debug.item_2.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_2.text": [ - "value" - ] - } - }, - { - "name": "text_2", - "value": "@data.debug.item_2.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_bottom.text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_2.text", - "matchedExpression": "@data.debug.item_2.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_2.text": [ - "value" - ] - } - }, - { - "name": "text_3", - "value": "This text is overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_bottom.text_3" - } - ], - "_nested_name": "debug_data_bottom" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_data_top.json b/packages/app-data/sheets/template/debug/debug_data_top.json deleted file mode 100644 index 62dcb1a42b..0000000000 --- a/packages/app-data/sheets/template/debug/debug_data_top.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_data_top", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_data_middle", - "value": "debug_data_middle", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "debug_data_bottom", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_2", - "value": "@data.debug.item_3.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_middle.debug_data_bottom.text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_3.text", - "matchedExpression": "@data.debug.item_3.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_3.text": [ - "value" - ] - } - }, - { - "name": "text_3", - "value": "@data.debug.item_3.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_middle.debug_data_bottom.text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_3.text", - "matchedExpression": "@data.debug.item_3.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_3.text": [ - "value" - ] - } - }, - { - "name": "text_4", - "value": "@data.debug.item_3.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_data_middle.debug_data_bottom.text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug.item_3.text", - "matchedExpression": "@data.debug.item_3.text", - "type": "data", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@data.debug.item_3.text": [ - "value" - ] - } - } - ], - "_nested_name": "debug_data_middle.debug_data_bottom" - } - ], - "_nested_name": "debug_data_middle" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_button.json b/packages/app-data/sheets/template/debug/debug_dg_button.json deleted file mode 100644 index 23c21cce56..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_button.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_button", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "image_group", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "image_individual", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "type": "display_group", - "name": "dg_1", - "rows": [ - { - "type": "button", - "name": "button_1", - "value": "Text 1", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Text 2", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.button_2" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "display_group", - "name": "dg_2", - "rows": [ - { - "type": "button", - "name": "button_3", - "value": "Text 3", - "_translations": { - "value": {} - }, - "style_list": [ - "flex:1" - ], - "_nested_name": "dg_2.button_3" - }, - { - "type": "button", - "name": "button_4", - "value": "Text 4", - "_translations": { - "value": {} - }, - "style_list": [ - "flex:2" - ], - "_nested_name": "dg_2.button_4" - } - ], - "_nested_name": "dg_2" - }, - { - "type": "display_group", - "name": "dg_3", - "parameter_list": { - "style": "parent_point" - }, - "rows": [ - { - "type": "button", - "name": "button_5", - "value": "Text 5", - "_translations": { - "value": {} - }, - "_nested_name": "dg_3.button_5" - }, - { - "type": "button", - "name": "button_6", - "value": "Text 6", - "_translations": { - "value": {} - }, - "_nested_name": "dg_3.button_6" - } - ], - "_nested_name": "dg_3" - }, - { - "type": "display_group", - "name": "dg_4", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "button", - "name": "button_7", - "value": "Text 7", - "_translations": { - "value": {} - }, - "_nested_name": "dg_4.button_7" - }, - { - "type": "button", - "name": "button_8", - "value": "Text 8", - "_translations": { - "value": {} - }, - "_nested_name": "dg_4.button_8" - } - ], - "_nested_name": "dg_4" - }, - { - "type": "button", - "name": "button_9", - "value": "Text 9", - "_translations": { - "value": {} - }, - "_nested_name": "button_9" - }, - { - "type": "button", - "name": "button_10", - "value": "Text 10", - "_translations": { - "value": {} - }, - "_nested_name": "button_10" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_center.json b/packages/app-data/sheets/template/debug/debug_dg_center.json deleted file mode 100644 index 6e4bb2c01f..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_center.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_center", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Centering a title component", - "_translations": { - "value": {} - }, - "style_list": [ - "text-align: center" - ], - "_nested_name": "title_1" - }, - { - "type": "subtitle", - "name": "subtitle", - "value": "Centering a subtitle component", - "_translations": { - "value": {} - }, - "style_list": [ - "text-align: center" - ], - "_nested_name": "subtitle" - }, - { - "type": "text", - "name": "text", - "value": "Centering a text component", - "_translations": { - "value": {} - }, - "style_list": [ - "text-align: center" - ], - "_nested_name": "text" - }, - { - "type": "title", - "name": "title_2", - "value": "Three ways of centering an image component", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "image", - "name": "image_1", - "value": "plh_images/workshop_modes/guide_2/relax.svg", - "_translations": { - "value": {} - }, - "style_list": [ - "width:100px", - "margin:auto" - ], - "_nested_name": "image_1" - }, - { - "type": "display_group", - "name": "dg_1", - "style_list": [ - "justify-content: center" - ], - "rows": [ - { - "type": "image", - "name": "image_2", - "value": "plh_images/workshop_modes/guide_2/relax.svg", - "_translations": { - "value": {} - }, - "style_list": [ - "max-width:100px" - ], - "_nested_name": "dg_1.image_2" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "display_group", - "name": "dg_2", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "image", - "name": "image_3", - "value": "plh_images/workshop_modes/guide_2/relax.svg", - "_translations": { - "value": {} - }, - "style_list": [ - "width:100px" - ], - "_nested_name": "dg_2.image_3" - } - ], - "_nested_name": "dg_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_form.json b/packages/app-data/sheets/template/debug/debug_dg_form.json deleted file mode 100644 index 718929d709..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_form.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_form", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "form", - "value": "form", - "parameter_list": { - "style": "form", - "get_device_info": "true", - "button_text": "Send" - }, - "rows": [ - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox_1", - "this.value" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox_1:@local.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox_1:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 1", - "align": "left" - }, - "_nested_name": "form.checkbox_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox_1:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox_1:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox_2", - "@local.form.checkbox_1" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox_2:@local.form.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox_2:@local.form.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 2", - "align": "left" - }, - "_nested_name": "form.checkbox_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.form.checkbox_1", - "matchedExpression": "@local.form.checkbox_1", - "type": "local", - "fieldName": "form" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox_2:@local.form.checkbox_1", - "matchedExpression": "@local.form.checkbox_1", - "type": "local", - "fieldName": "form" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox_2:@local.form.checkbox_1", - "matchedExpression": "@local.form.checkbox_1", - "type": "local", - "fieldName": "form" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.form.checkbox_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "name": "text_checkbox_3", - "value": "Contact me via email", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "form.text_checkbox_3" - }, - { - "type": "simple_checkbox", - "name": "checkbox_3", - "parameter_list": { - "label_text": "checkbox 3", - "align": "left" - }, - "_nested_name": "form.checkbox_3" - }, - { - "type": "text", - "name": "text_checkbox_3", - "value": "Checkbox 3 text", - "_translations": { - "value": {} - }, - "hidden": "!@local.checkbox_3", - "_nested_name": "form.text_checkbox_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.checkbox_3", - "matchedExpression": "!@local.checkbox_3", - "type": "local", - "fieldName": "checkbox_3" - } - ] - }, - "_dynamicDependencies": { - "!@local.checkbox_3": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_checkbox_3_form", - "value": "Checkbox 3 form text", - "_translations": { - "value": {} - }, - "hidden": "!@local.form.checkbox_3", - "_nested_name": "form.text_checkbox_3_form", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.form.checkbox_3", - "matchedExpression": "!@local.form.checkbox_3", - "type": "local", - "fieldName": "form" - } - ] - }, - "_dynamicDependencies": { - "!@local.form.checkbox_3": [ - "hidden" - ] - } - } - ], - "_nested_name": "form" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_tile.json b/packages/app-data/sheets/template/debug/debug_dg_tile.json deleted file mode 100644 index e581dd4c73..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_tile.json +++ /dev/null @@ -1,535 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_tile", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "image_group", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "image_individual", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "type": "display_group", - "name": "dg_1", - "rows": [ - { - "type": "tile_component", - "name": "tile_1", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "dg_1.tile_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_2", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "dg_1.tile_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "dg_1" - }, - { - "type": "display_group", - "name": "dg_2", - "rows": [ - { - "type": "tile_component", - "name": "tile_3", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "style_list": [ - "flex: 1" - ], - "_nested_name": "dg_2.tile_3", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_4", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "style_list": [ - "flex: 1" - ], - "_nested_name": "dg_2.tile_4", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "dg_2" - }, - { - "type": "display_group", - "name": "dg_3", - "style_list": [ - "justify-content: center" - ], - "rows": [ - { - "type": "tile_component", - "name": "tile_5", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "dg_3.tile_5", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_6", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "dg_3.tile_6", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "dg_3" - }, - { - "type": "display_group", - "name": "dg_4", - "style_list": [ - "justify-content: space-evenly" - ], - "rows": [ - { - "type": "tile_component", - "name": "tile_7", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "dg_4.tile_7", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_8", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "dg_4.tile_8", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "dg_4" - }, - { - "type": "display_group", - "name": "dg_5", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "tile_component", - "name": "tile_9", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "dg_5.tile_9", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_10", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "dg_5.tile_10", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "dg_5" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_tool.json b/packages/app-data/sheets/template/debug/debug_dg_tool.json deleted file mode 100644 index 5a815c6742..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_tool.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_tool", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "tool_style", - "value": "tool_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "tool_style" - }, - { - "type": "display_group", - "name": "dg_1", - "parameter_list": { - "style": "tool_1 column" - }, - "rows": [ - { - "type": "title", - "name": "title", - "value": "Title", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "alternative" - }, - "_nested_name": "dg_1.title" - }, - { - "type": "subtitle", - "name": "subtitle_1", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "alternative" - }, - "_nested_name": "dg_1.subtitle_1" - }, - { - "type": "text", - "name": "text_1", - "value": "Text", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "alternative" - }, - "_nested_name": "dg_1.text_1" - }, - { - "type": "button", - "name": "button_1", - "value": "Button", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "navigation" - }, - "_nested_name": "dg_1.button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "information" - }, - "_nested_name": "dg_1.button_2" - }, - { - "type": "button", - "name": "button_3", - "value": "Third button", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.button_3" - }, - { - "type": "button", - "name": "button_4", - "value": "Button 4", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.button_4" - }, - { - "type": "image", - "name": "image_src", - "value": "plh_images/workshops/options/individual.svg", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.image_src" - } - ], - "_nested_name": "dg_1" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_dg_var.json b/packages/app-data/sheets/template/debug/debug_dg_var.json deleted file mode 100644 index 9bd0b1d5f6..0000000000 --- a/packages/app-data/sheets/template/debug/debug_dg_var.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_dg_var", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "var_1", - "value": "Value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_1" - }, - { - "type": "title", - "name": "title_1", - "value": "Correctly spaced dg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "display_group", - "name": "dg_1", - "rows": [ - { - "type": "number_selector", - "name": "number_selector_1", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_1.number_selector_1" - }, - { - "type": "number_selector", - "name": "number_selector_2", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_1.number_selector_2" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Correctly spaced dg with variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "display_group", - "name": "dg_2", - "rows": [ - { - "type": "number_selector", - "name": "number_selector_3", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_2.number_selector_3" - }, - { - "type": "number_selector", - "name": "number_selector_4", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_2.number_selector_4" - }, - { - "name": "var_2", - "value": "Value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg_2.var_2" - } - ], - "_nested_name": "dg_2" - }, - { - "type": "title", - "name": "title_3", - "value": "Awkwardly spaced dg with nested variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "display_group", - "name": "dg_3", - "rows": [ - { - "type": "number_selector", - "name": "number_selector_5", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_3.number_selector_5" - }, - { - "type": "number_selector", - "name": "number_selector_6", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_3.number_selector_6" - }, - { - "name": "var_3", - "value": "@local.var_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "dg_3.var_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_1", - "matchedExpression": "@local.var_1", - "type": "local", - "fieldName": "var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_1": [ - "value" - ] - } - } - ], - "_nested_name": "dg_3" - }, - { - "type": "title", - "name": "title_4", - "value": "Correctly spaced dg with nested variable (this flex should be the default)", - "_translations": { - "value": {} - }, - "_nested_name": "title_4" - }, - { - "type": "display_group", - "name": "dg_4", - "rows": [ - { - "type": "number_selector", - "name": "number_selector_7", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_4.number_selector_7" - }, - { - "type": "number_selector", - "name": "number_selector_8", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "dg_4.number_selector_8" - }, - { - "name": "var_4", - "value": "@local.var_1", - "_translations": { - "value": {} - }, - "style_list": [ - "flex: 0" - ], - "type": "set_variable", - "_nested_name": "dg_4.var_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_1", - "matchedExpression": "@local.var_1", - "type": "local", - "fieldName": "var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_1": [ - "value" - ] - } - } - ], - "_nested_name": "dg_4" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_double_radio_group_1.json b/packages/app-data/sheets/template/debug/debug_double_radio_group_1.json deleted file mode 100644 index 7aca192cab..0000000000 --- a/packages/app-data/sheets/template/debug/debug_double_radio_group_1.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_double_radio_group_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "template_name", - "value": "debug_radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "template_name" - }, - { - "type": "template", - "name": "debug_radio_group_1", - "value": "debug_radio_group", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "This is the first instance of @local.template_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is the first instance of @local.template_name", - "matchedExpression": "@local.template_name", - "type": "local", - "fieldName": "template_name" - } - ] - }, - "_dynamicDependencies": { - "@local.template_name": [ - "value" - ] - } - }, - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_1.answer_list" - } - ], - "_nested_name": "debug_radio_group_1" - }, - { - "type": "template", - "name": "debug_radio_group_2", - "value": "debug_radio_group", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "This is the second instance of debug_radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_2.text" - }, - { - "name": "answer_list", - "value": [ - "name:name_var_4 | text:1", - "name:name_var_5 | text:2", - "name:name_var_6 | text:3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_2.answer_list" - } - ], - "_nested_name": "debug_radio_group_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_double_radio_group_2.json b/packages/app-data/sheets/template/debug/debug_double_radio_group_2.json deleted file mode 100644 index b5c5cdab37..0000000000 --- a/packages/app-data/sheets/template/debug/debug_double_radio_group_2.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_double_radio_group_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "template_name", - "value": "debug_radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "template_name" - }, - { - "name": "answer_list_1_list", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1_list" - }, - { - "name": "answer_list_2_list", - "value": [ - "name:name_var_1 | text:1", - "name:name_var_2 | text:2", - "name:name_var_3 | text:3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2_list" - }, - { - "type": "template", - "name": "debug_radio_group_1", - "value": "debug_radio_group", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "This is the first instance of @local.template_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is the first instance of @local.template_name", - "matchedExpression": "@local.template_name", - "type": "local", - "fieldName": "template_name" - } - ] - }, - "_dynamicDependencies": { - "@local.template_name": [ - "value" - ] - } - }, - { - "name": "answer_list", - "value": [ - "@local.answer_list_1_list" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_1.answer_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "@local.answer_list_1_list", - "matchedExpression": "@local.answer_list_1_list", - "type": "local", - "fieldName": "answer_list_1_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1_list": [ - "value.0" - ] - } - } - ], - "_nested_name": "debug_radio_group_1" - }, - { - "type": "template", - "name": "debug_radio_group_2", - "value": "debug_radio_group", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "This is the second instance of debug_radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_2.text" - }, - { - "name": "answer_list", - "value": [ - "@local.answer_list_2_list" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_2.answer_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "@local.answer_list_2_list", - "matchedExpression": "@local.answer_list_2_list", - "type": "local", - "fieldName": "answer_list_2_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2_list": [ - "value.0" - ] - } - } - ], - "_nested_name": "debug_radio_group_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_evaluate_hidden.json b/packages/app-data/sheets/template/debug/debug_evaluate_hidden.json deleted file mode 100644 index 16c1b90725..0000000000 --- a/packages/app-data/sheets/template/debug/debug_evaluate_hidden.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_evaluate_hidden", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "var_true", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_true" - }, - { - "name": "var_number_1", - "value": 1, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_number_1" - }, - { - "type": "text", - "name": "true_true", - "value": "This text is hidden if var_true is true.", - "_translations": { - "value": {} - }, - "hidden": "@local.var_true", - "exclude_from_translation": true, - "_nested_name": "true_true", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_true", - "matchedExpression": "@local.var_true", - "type": "local", - "fieldName": "var_true" - } - ] - }, - "_dynamicDependencies": { - "@local.var_true": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "true_false", - "value": "This text is hidden if var_true is false.", - "_translations": { - "value": {} - }, - "hidden": "!@local.var_true", - "exclude_from_translation": true, - "_nested_name": "true_false", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.var_true", - "matchedExpression": "!@local.var_true", - "type": "local", - "fieldName": "var_true" - } - ] - }, - "_dynamicDependencies": { - "!@local.var_true": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "number_1", - "value": "This text is hidden if var_number_1 is 1.", - "_translations": { - "value": {} - }, - "hidden": "@local.var_number_1 == 1", - "exclude_from_translation": true, - "_nested_name": "number_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_number_1 == 1", - "matchedExpression": "@local.var_number_1", - "type": "local", - "fieldName": "var_number_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_number_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "number_not_1", - "value": "This text is hidden if var_number_1 not 1.", - "_translations": { - "value": {} - }, - "hidden": "@local.var_number_1 != 1", - "exclude_from_translation": true, - "_nested_name": "number_not_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_number_1 != 1", - "matchedExpression": "@local.var_number_1", - "type": "local", - "fieldName": "var_number_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_number_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "number_greater_1", - "value": "This text is hidden if var_number_1 is greater than 1.", - "_translations": { - "value": {} - }, - "hidden": "@local.var_number_1 > 1", - "exclude_from_translation": true, - "_nested_name": "number_greater_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_number_1 > 1", - "matchedExpression": "@local.var_number_1", - "type": "local", - "fieldName": "var_number_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_number_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "number_not_1", - "value": "This text is hidden if var_number_1 is not greater than 1.", - "_translations": { - "value": {} - }, - "hidden": "!(@local.var_number_1 > 1)", - "exclude_from_translation": true, - "_nested_name": "number_not_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.var_number_1 > 1)", - "matchedExpression": "@local.var_number_1", - "type": "local", - "fieldName": "var_number_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_number_1": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_falsy_values.json b/packages/app-data/sheets/template/debug/debug_falsy_values.json deleted file mode 100644 index b597078eec..0000000000 --- a/packages/app-data/sheets/template/debug/debug_falsy_values.json +++ /dev/null @@ -1,398 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_falsy_values", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "falsy_var_1", - "value": 0, - "type": "set_variable", - "_nested_name": "falsy_var_1" - }, - { - "name": "falsy_var_2", - "value": false, - "type": "set_variable", - "_nested_name": "falsy_var_2" - }, - { - "name": "falsy_var_3", - "value": "null", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "falsy_var_3" - }, - { - "name": "falsy_var_4", - "value": "NaN", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "falsy_var_4" - }, - { - "name": "falsy_var_5", - "value": "undefined", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "falsy_var_5" - }, - { - "name": "falsy_var_6", - "value": "\"\"", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "falsy_var_6" - }, - { - "name": "falsy_var_7", - "type": "set_variable", - "_nested_name": "falsy_var_7" - }, - { - "type": "text", - "name": "text_1a", - "value": "Example 1: @local.falsy_var_1", - "_translations": { - "value": {} - }, - "_nested_name": "text_1a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 1: @local.falsy_var_1", - "matchedExpression": "@local.falsy_var_1", - "type": "local", - "fieldName": "falsy_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1b", - "value": "@local.falsy_var_1", - "_translations": { - "value": {} - }, - "_nested_name": "text_1b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_1", - "matchedExpression": "@local.falsy_var_1", - "type": "local", - "fieldName": "falsy_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2a", - "value": "Example 2: @local.falsy_var_2", - "_translations": { - "value": {} - }, - "_nested_name": "text_2a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 2: @local.falsy_var_2", - "matchedExpression": "@local.falsy_var_2", - "type": "local", - "fieldName": "falsy_var_2" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2b", - "value": "@local.falsy_var_2", - "_translations": { - "value": {} - }, - "_nested_name": "text_2b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_2", - "matchedExpression": "@local.falsy_var_2", - "type": "local", - "fieldName": "falsy_var_2" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3a", - "value": "Example 3: @local.falsy_var_3", - "_translations": { - "value": {} - }, - "_nested_name": "text_3a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 3: @local.falsy_var_3", - "matchedExpression": "@local.falsy_var_3", - "type": "local", - "fieldName": "falsy_var_3" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3b", - "value": "@local.falsy_var_3", - "_translations": { - "value": {} - }, - "_nested_name": "text_3b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_3", - "matchedExpression": "@local.falsy_var_3", - "type": "local", - "fieldName": "falsy_var_3" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4a", - "value": "Example 4: @local.falsy_var_4", - "_translations": { - "value": {} - }, - "_nested_name": "text_4a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 4: @local.falsy_var_4", - "matchedExpression": "@local.falsy_var_4", - "type": "local", - "fieldName": "falsy_var_4" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4b", - "value": "@local.falsy_var_4", - "_translations": { - "value": {} - }, - "_nested_name": "text_4b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_4", - "matchedExpression": "@local.falsy_var_4", - "type": "local", - "fieldName": "falsy_var_4" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5a", - "value": "Example 5: @local.falsy_var_5", - "_translations": { - "value": {} - }, - "_nested_name": "text_5a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 5: @local.falsy_var_5", - "matchedExpression": "@local.falsy_var_5", - "type": "local", - "fieldName": "falsy_var_5" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_5": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5b", - "value": "@local.falsy_var_5", - "_translations": { - "value": {} - }, - "_nested_name": "text_5b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_5", - "matchedExpression": "@local.falsy_var_5", - "type": "local", - "fieldName": "falsy_var_5" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_5": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6a", - "value": "Example 6: @local.falsy_var_6", - "_translations": { - "value": {} - }, - "_nested_name": "text_6a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 6: @local.falsy_var_6", - "matchedExpression": "@local.falsy_var_6", - "type": "local", - "fieldName": "falsy_var_6" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_6": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6b", - "value": "@local.falsy_var_6", - "_translations": { - "value": {} - }, - "_nested_name": "text_6b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_6", - "matchedExpression": "@local.falsy_var_6", - "type": "local", - "fieldName": "falsy_var_6" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_6": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_7a", - "value": "Example 7: @local.falsy_var_7", - "_translations": { - "value": {} - }, - "_nested_name": "text_7a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example 7: @local.falsy_var_7", - "matchedExpression": "@local.falsy_var_7", - "type": "local", - "fieldName": "falsy_var_7" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_7": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_7b", - "value": "@local.falsy_var_7", - "_translations": { - "value": {} - }, - "_nested_name": "text_7b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.falsy_var_7", - "matchedExpression": "@local.falsy_var_7", - "type": "local", - "fieldName": "falsy_var_7" - } - ] - }, - "_dynamicDependencies": { - "@local.falsy_var_7": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_falsy_values.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_field_null.json b/packages/app-data/sheets/template/debug/debug_field_null.json deleted file mode 100644 index 1f3ad91f50..0000000000 --- a/packages/app-data/sheets/template/debug/debug_field_null.json +++ /dev/null @@ -1,678 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_field_null", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "local_var_1", - "value": "Hello", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "local_var_1" - }, - { - "type": "set_field", - "name": "debug_field_1", - "_nested_name": "debug_field_1" - }, - { - "type": "set_field", - "name": "debug_field_2", - "value": "@local.local_var_1", - "_translations": { - "value": {} - }, - "_nested_name": "debug_field_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Set debug_field_3 to blank", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_3", - "" - ], - "_raw": "click | set_field : debug_field_3 :", - "_cleaned": "click | set_field : debug_field_3 :" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Set debug_field_4 to a blank local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_4", - "@local.local_var_1" - ], - "_raw": "click | set_field : debug_field_4 : @local.local_var_1", - "_cleaned": "click | set_field : debug_field_4 : @local.local_var_1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "button", - "name": "button_3", - "value": "Set debug_field_5 to a non existing local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_5", - "@local.local_var_2" - ], - "_raw": "click | set_field : debug_field_5 : @local.local_var_2", - "_cleaned": "click | set_field : debug_field_5 : @local.local_var_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_3", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_2": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Value of local variable: @local.local_var_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of local variable: @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Value of debug_field_1: @fields.debug_field_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_1: @fields.debug_field_1", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "debug_field_1 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_1 == null", - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_1 == null", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "debug_field_1 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_1 != null", - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_1 != null", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Value of debug_field_2: @fields.debug_field_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_2: @fields.debug_field_2", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "debug_field_2 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_2 == null", - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_2 == null", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "debug_field_2 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_2 != null", - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_2 != null", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_8", - "value": "Value of debug_field_3: @fields.debug_field_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_3: @fields.debug_field_3", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_9", - "value": "debug_field_3 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_3 == null", - "exclude_from_translation": true, - "_nested_name": "text_9", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_3 == null", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_10", - "value": "debug_field_3 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_3 != null", - "exclude_from_translation": true, - "_nested_name": "text_10", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_3 != null", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_11", - "value": "Value of debug_field_4: @fields.debug_field_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_4: @fields.debug_field_4", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_12", - "value": "debug_field_4 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_4 == null", - "exclude_from_translation": true, - "_nested_name": "text_12", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_4 == null", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_13", - "value": "debug_field_4 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_4 != null", - "exclude_from_translation": true, - "_nested_name": "text_13", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_4 != null", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_14", - "value": "Value of debug_field_5: @fields.debug_field_5", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_14", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_5: @fields.debug_field_5", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_15", - "value": "debug_field_5 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_5 == null", - "exclude_from_translation": true, - "_nested_name": "text_15", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_5 == null", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_16", - "value": "debug_field_5 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_5 != null", - "exclude_from_translation": true, - "_nested_name": "text_16", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_5 != null", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_17", - "value": "Value of debug_field_6: @fields.debug_field_6", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_17", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_6: @fields.debug_field_6", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_18", - "value": "debug_field_6 is not null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_6 == null", - "exclude_from_translation": true, - "_nested_name": "text_18", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_6 == null", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_19", - "value": "debug_field_6 is null", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_6 != null", - "exclude_from_translation": true, - "_nested_name": "text_19", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_6 != null", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_field_null.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_field_null_2.json b/packages/app-data/sheets/template/debug/debug_field_null_2.json deleted file mode 100644 index ffb2ef6fbd..0000000000 --- a/packages/app-data/sheets/template/debug/debug_field_null_2.json +++ /dev/null @@ -1,678 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_field_null_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "local_var_1", - "value": "Hello", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "local_var_1" - }, - { - "type": "set_field", - "name": "debug_field_1", - "_nested_name": "debug_field_1" - }, - { - "type": "set_field", - "name": "debug_field_2", - "value": "@local.local_var_1", - "_translations": { - "value": {} - }, - "_nested_name": "debug_field_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Set debug_field_3 to blank", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_3", - "" - ], - "_raw": "click | set_field : debug_field_3 :", - "_cleaned": "click | set_field : debug_field_3 :" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Set debug_field_4 to a blank local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_4", - "@local.local_var_1" - ], - "_raw": "click | set_field : debug_field_4 : @local.local_var_1", - "_cleaned": "click | set_field : debug_field_4 : @local.local_var_1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "button", - "name": "button_3", - "value": "Set debug_field_5 to a non existing local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_5", - "@local.local_var_2" - ], - "_raw": "click | set_field : debug_field_5 : @local.local_var_2", - "_cleaned": "click | set_field : debug_field_5 : @local.local_var_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_3", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_2": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Value of local variable: @local.local_var_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of local variable: @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Value of debug_field_1: @fields.debug_field_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_1: @fields.debug_field_1", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "debug_field_1 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_1", - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_1", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "debug_field_1 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_1", - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_1", - "matchedExpression": "!@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_1": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Value of debug_field_2: @fields.debug_field_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_2: @fields.debug_field_2", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "debug_field_2 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_2", - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_2", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "debug_field_2 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_2", - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_2", - "matchedExpression": "!@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_2": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_8", - "value": "Value of debug_field_3: @fields.debug_field_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_3: @fields.debug_field_3", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_9", - "value": "debug_field_3 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_3", - "exclude_from_translation": true, - "_nested_name": "text_9", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_3", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_10", - "value": "debug_field_3 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_3", - "exclude_from_translation": true, - "_nested_name": "text_10", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_3", - "matchedExpression": "!@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_3": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_11", - "value": "Value of debug_field_4: @fields.debug_field_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_4: @fields.debug_field_4", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_12", - "value": "debug_field_4 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_4", - "exclude_from_translation": true, - "_nested_name": "text_12", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_4", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_13", - "value": "debug_field_4 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_4", - "exclude_from_translation": true, - "_nested_name": "text_13", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_4", - "matchedExpression": "!@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_14", - "value": "Value of debug_field_5: @fields.debug_field_5", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_14", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_5: @fields.debug_field_5", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_15", - "value": "debug_field_5 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_5", - "exclude_from_translation": true, - "_nested_name": "text_15", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_5", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_16", - "value": "debug_field_5 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_5", - "exclude_from_translation": true, - "_nested_name": "text_16", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_5", - "matchedExpression": "!@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_17", - "value": "Value of debug_field_6: @fields.debug_field_6", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_17", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_6: @fields.debug_field_6", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_18", - "value": "debug_field_6 evaluates to FALSE", - "_translations": { - "value": {} - }, - "hidden": "@fields.debug_field_6", - "exclude_from_translation": true, - "_nested_name": "text_18", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.debug_field_6", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_19", - "value": "debug_field_6 evaluates to TRUE", - "_translations": { - "value": {} - }, - "hidden": "!@fields.debug_field_6", - "exclude_from_translation": true, - "_nested_name": "text_19", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@fields.debug_field_6", - "matchedExpression": "!@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "!@fields.debug_field_6": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_field_null.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_field_null_if.json b/packages/app-data/sheets/template/debug/debug_field_null_if.json deleted file mode 100644 index 2b15e59d01..0000000000 --- a/packages/app-data/sheets/template/debug/debug_field_null_if.json +++ /dev/null @@ -1,786 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_field_null_if", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "local_var_1", - "value": "Hello", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "local_var_1" - }, - { - "type": "set_field", - "name": "debug_field_1", - "_nested_name": "debug_field_1" - }, - { - "type": "set_field", - "name": "debug_field_2", - "value": "@local.local_var_1", - "_translations": { - "value": {} - }, - "_nested_name": "debug_field_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Set debug_field_3 to blank", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_3", - "" - ], - "_raw": "click | set_field : debug_field_3 :", - "_cleaned": "click | set_field : debug_field_3 :" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Set debug_field_4 to a blank local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_4", - "@local.local_var_1" - ], - "_raw": "click | set_field : debug_field_4 : @local.local_var_1", - "_cleaned": "click | set_field : debug_field_4 : @local.local_var_1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_4 : @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "button", - "name": "button_3", - "value": "Set debug_field_5 to a non existing local variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "debug_field_5", - "@local.local_var_2" - ], - "_raw": "click | set_field : debug_field_5 : @local.local_var_2", - "_cleaned": "click | set_field : debug_field_5 : @local.local_var_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_3", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : debug_field_5 : @local.local_var_2", - "matchedExpression": "@local.local_var_2", - "type": "local", - "fieldName": "local_var_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.local_var_2": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Value of local variable: @local.local_var_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of local variable: @local.local_var_1", - "matchedExpression": "@local.local_var_1", - "type": "local", - "fieldName": "local_var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.local_var_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Value of debug_field_1: @fields.debug_field_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_1: @fields.debug_field_1", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "debug_field_1 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_1))", - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_1))", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_1))", - "matchedExpression": "!@calc(if(@fields.debug_field_1))", - "type": "calc", - "fieldName": "if(@fields.debug_field_1)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_1))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "debug_field_1 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_1))", - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_1))", - "matchedExpression": "@fields.debug_field_1", - "type": "fields", - "fieldName": "debug_field_1" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_1))", - "matchedExpression": "@calc(if(@fields.debug_field_1))", - "type": "calc", - "fieldName": "if(@fields.debug_field_1)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_1": [ - "hidden" - ], - "@calc(if(@fields.debug_field_1))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Value of debug_field_2: @fields.debug_field_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_2: @fields.debug_field_2", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "debug_field_2 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_2))", - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_2))", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_2))", - "matchedExpression": "!@calc(if(@fields.debug_field_2))", - "type": "calc", - "fieldName": "if(@fields.debug_field_2)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_2))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "debug_field_2 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_2))", - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_2))", - "matchedExpression": "@fields.debug_field_2", - "type": "fields", - "fieldName": "debug_field_2" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_2))", - "matchedExpression": "@calc(if(@fields.debug_field_2))", - "type": "calc", - "fieldName": "if(@fields.debug_field_2)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_2": [ - "hidden" - ], - "@calc(if(@fields.debug_field_2))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_8", - "value": "Value of debug_field_3: @fields.debug_field_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_3: @fields.debug_field_3", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_9", - "value": "debug_field_3 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_3))", - "exclude_from_translation": true, - "_nested_name": "text_9", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_3))", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_3))", - "matchedExpression": "!@calc(if(@fields.debug_field_3))", - "type": "calc", - "fieldName": "if(@fields.debug_field_3)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_3))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_10", - "value": "debug_field_3 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_3))", - "exclude_from_translation": true, - "_nested_name": "text_10", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_3))", - "matchedExpression": "@fields.debug_field_3", - "type": "fields", - "fieldName": "debug_field_3" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_3))", - "matchedExpression": "@calc(if(@fields.debug_field_3))", - "type": "calc", - "fieldName": "if(@fields.debug_field_3)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_3": [ - "hidden" - ], - "@calc(if(@fields.debug_field_3))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_11", - "value": "Value of debug_field_4: @fields.debug_field_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_4: @fields.debug_field_4", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_12", - "value": "debug_field_4 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_4))", - "exclude_from_translation": true, - "_nested_name": "text_12", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_4))", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_4))", - "matchedExpression": "!@calc(if(@fields.debug_field_4))", - "type": "calc", - "fieldName": "if(@fields.debug_field_4)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_4))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_13", - "value": "debug_field_4 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_4))", - "exclude_from_translation": true, - "_nested_name": "text_13", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_4))", - "matchedExpression": "@fields.debug_field_4", - "type": "fields", - "fieldName": "debug_field_4" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_4))", - "matchedExpression": "@calc(if(@fields.debug_field_4))", - "type": "calc", - "fieldName": "if(@fields.debug_field_4)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_4": [ - "hidden" - ], - "@calc(if(@fields.debug_field_4))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_14", - "value": "Value of debug_field_5: @fields.debug_field_5", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_14", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_5: @fields.debug_field_5", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_15", - "value": "debug_field_5 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_5))", - "exclude_from_translation": true, - "_nested_name": "text_15", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_5))", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_5))", - "matchedExpression": "!@calc(if(@fields.debug_field_5))", - "type": "calc", - "fieldName": "if(@fields.debug_field_5)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_5))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_16", - "value": "debug_field_5 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_5))", - "exclude_from_translation": true, - "_nested_name": "text_16", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_5))", - "matchedExpression": "@fields.debug_field_5", - "type": "fields", - "fieldName": "debug_field_5" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_5))", - "matchedExpression": "@calc(if(@fields.debug_field_5))", - "type": "calc", - "fieldName": "if(@fields.debug_field_5)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_5": [ - "hidden" - ], - "@calc(if(@fields.debug_field_5))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_17", - "value": "Value of debug_field_6: @fields.debug_field_6", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_17", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_field_6: @fields.debug_field_6", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_18", - "value": "debug_field_6 is not null", - "_translations": { - "value": {} - }, - "hidden": "!@calc(if(@fields.debug_field_6))", - "exclude_from_translation": true, - "_nested_name": "text_18", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@calc(if(@fields.debug_field_6))", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - }, - { - "fullExpression": "!@calc(if(@fields.debug_field_6))", - "matchedExpression": "!@calc(if(@fields.debug_field_6))", - "type": "calc", - "fieldName": "if(@fields.debug_field_6)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "hidden" - ], - "!@calc(if(@fields.debug_field_6))": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_19", - "value": "debug_field_6 is null", - "_translations": { - "value": {} - }, - "hidden": "@calc(if(@fields.debug_field_6))", - "exclude_from_translation": true, - "_nested_name": "text_19", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@calc(if(@fields.debug_field_6))", - "matchedExpression": "@fields.debug_field_6", - "type": "fields", - "fieldName": "debug_field_6" - }, - { - "fullExpression": "@calc(if(@fields.debug_field_6))", - "matchedExpression": "@calc(if(@fields.debug_field_6))", - "type": "calc", - "fieldName": "if(@fields.debug_field_6)" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_6": [ - "hidden" - ], - "@calc(if(@fields.debug_field_6))": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_field_null.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_full_stop_after_var.json b/packages/app-data/sheets/template/debug/debug_full_stop_after_var.json deleted file mode 100644 index 1f2feda4d6..0000000000 --- a/packages/app-data/sheets/template/debug/debug_full_stop_after_var.json +++ /dev/null @@ -1,346 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_full_stop_after_var", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "local_full_stop", - "value": "Local with a full stop", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "local_full_stop" - }, - { - "type": "text", - "name": "text_1", - "value": "This string ends with a local variable with a full stop at the end: @local.local_full_stop.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a local variable with a full stop at the end: @local.local_full_stop.", - "matchedExpression": "@local.local_full_stop", - "type": "local", - "fieldName": "local_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@local.local_full_stop": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "This string ends with a local variable with a space before a full stop at the end: @local.local_full_stop .", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a local variable with a space before a full stop at the end: @local.local_full_stop .", - "matchedExpression": "@local.local_full_stop", - "type": "local", - "fieldName": "local_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@local.local_full_stop": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "This string ends with a field variable with a full stop at the end: @field.field_full_stop.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a field variable with a full stop at the end: @field.field_full_stop.", - "matchedExpression": "@field.field_full_stop", - "type": "field", - "fieldName": "field_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@field.field_full_stop": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "This string ends with a field variable with a space before a full stop at the end: @field.field_full_stop .", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a field variable with a space before a full stop at the end: @field.field_full_stop .", - "matchedExpression": "@field.field_full_stop", - "type": "field", - "fieldName": "field_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@field.field_full_stop": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "This string ends with a global constant with a full stop at the end: @global.global_full_stop.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a global constant with a full stop at the end: @global.global_full_stop.", - "matchedExpression": "@global.global_full_stop", - "type": "global", - "fieldName": "global_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@global.global_full_stop": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "This string ends with a global constant with a space before a full stop at the end: @global.global_full_stop .", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This string ends with a global constant with a space before a full stop at the end: @global.global_full_stop .", - "matchedExpression": "@global.global_full_stop", - "type": "global", - "fieldName": "global_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@global.global_full_stop": [ - "value" - ] - } - }, - { - "type": "title", - "value": "Dynamic Texts", - "_translations": { - "value": {} - }, - "name": "title", - "_nested_name": "title" - }, - { - "name": "dynamic_lookup", - "value": "local_full_stop", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "dynamic_lookup" - }, - { - "name": "dynamic_text_1", - "value": "@local.@local.dynamic_lookup", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "dynamic_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.@local.dynamic_lookup", - "matchedExpression": "@local.dynamic_lookup", - "type": "local", - "fieldName": "dynamic_lookup" - } - ] - }, - "_dynamicDependencies": { - "@local.dynamic_lookup": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "Dyanmic with full stop: @local.dynamic_text_1.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Dyanmic with full stop: @local.dynamic_text_1.", - "matchedExpression": "@local.dynamic_text_1", - "type": "local", - "fieldName": "dynamic_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.dynamic_text_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_8", - "value": "@local.dynamic_text_1+\".\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.dynamic_text_1+\".\"", - "matchedExpression": "@local.dynamic_text_1", - "type": "local", - "fieldName": "dynamic_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.dynamic_text_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_9", - "value": "@local.dynamic_text_1.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_9", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.dynamic_text_1.", - "matchedExpression": "@local.dynamic_text_1", - "type": "local", - "fieldName": "dynamic_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.dynamic_text_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_10", - "value": "@local.@local.dynamic_lookup.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_10", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.@local.dynamic_lookup.", - "matchedExpression": "@local.dynamic_lookup", - "type": "local", - "fieldName": "dynamic_lookup" - } - ] - }, - "_dynamicDependencies": { - "@local.dynamic_lookup": [ - "value" - ] - } - }, - { - "type": "title", - "value": "Mixed Sentences", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "text", - "name": "text_11", - "value": "Start text: @local.local_full_stop. More text follows.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_11", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Start text: @local.local_full_stop. More text follows.", - "matchedExpression": "@local.local_full_stop", - "type": "local", - "fieldName": "local_full_stop" - } - ] - }, - "_dynamicDependencies": { - "@local.local_full_stop": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_full_stop_after_var.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_global_bottom.json b/packages/app-data/sheets/template/debug/debug_global_bottom.json deleted file mode 100644 index 43e3c3d10d..0000000000 --- a/packages/app-data/sheets/template/debug/debug_global_bottom.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_global_bottom", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "@global.debug_item_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_1", - "matchedExpression": "@global.debug_item_1", - "type": "global", - "fieldName": "debug_item_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "@global.debug_item_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_1", - "matchedExpression": "@global.debug_item_1", - "type": "global", - "fieldName": "debug_item_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "@global.debug_item_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_1", - "matchedExpression": "@global.debug_item_1", - "type": "global", - "fieldName": "debug_item_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "@global.debug_item_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_1", - "matchedExpression": "@global.debug_item_1", - "type": "global", - "fieldName": "debug_item_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - }, - { - "type": "text", - "name": "text_6", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6" - }, - { - "type": "text", - "name": "text_7", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7" - }, - { - "type": "text", - "name": "text_8", - "value": "This text is directly authored in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_global_local.json b/packages/app-data/sheets/template/debug/debug_global_local.json deleted file mode 100644 index 2763d473eb..0000000000 --- a/packages/app-data/sheets/template/debug/debug_global_local.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_global_local", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "template", - "value": "template", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template" - }, - { - "name": "debug_item_1", - "value": "_debug_item_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "debug_item_1" - }, - { - "type": "button", - "name": "button_pop_up", - "value": "Simple pop-up", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up" - }, - { - "type": "button", - "name": "button_go_to", - "value": "@global.debug_item_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@local.template@local.debug_item_1" - ], - "_raw": "click | go_to:@local.template@local.debug_item_1", - "_cleaned": "click | go_to:@local.template@local.debug_item_1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_1", - "matchedExpression": "@global.debug_item_1", - "type": "global", - "fieldName": "debug_item_1" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.template@local.debug_item_1", - "matchedExpression": "@local.template", - "type": "local", - "fieldName": "template" - }, - { - "fullExpression": "@local.template@local.debug_item_1", - "matchedExpression": "@local.debug_item_1", - "type": "local", - "fieldName": "debug_item_1" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | go_to:@local.template@local.debug_item_1", - "matchedExpression": "@local.template", - "type": "local", - "fieldName": "template" - }, - { - "fullExpression": "click | go_to:@local.template@local.debug_item_1", - "matchedExpression": "@local.debug_item_1", - "type": "local", - "fieldName": "debug_item_1" - } - ], - "_cleaned": [ - { - "fullExpression": "click | go_to:@local.template@local.debug_item_1", - "matchedExpression": "@local.template", - "type": "local", - "fieldName": "template" - }, - { - "fullExpression": "click | go_to:@local.template@local.debug_item_1", - "matchedExpression": "@local.debug_item_1", - "type": "local", - "fieldName": "debug_item_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@global.debug_item_1": [ - "value" - ], - "@local.template": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.debug_item_1": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_global_middle.json b/packages/app-data/sheets/template/debug/debug_global_middle.json deleted file mode 100644 index 272d5c33e2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_global_middle.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_global_middle", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_global_bottom", - "value": "debug_global_bottom", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_2", - "value": "@global.debug_item_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_2", - "matchedExpression": "@global.debug_item_2", - "type": "global", - "fieldName": "debug_item_2" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_2": [ - "value" - ] - } - }, - { - "name": "text_3", - "value": "@global.debug_item_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_2", - "matchedExpression": "@global.debug_item_2", - "type": "global", - "fieldName": "debug_item_2" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_2": [ - "value" - ] - } - }, - { - "name": "text_4", - "value": "This text is overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_4" - }, - { - "name": "text_6", - "value": "@global.debug_item_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_2", - "matchedExpression": "@global.debug_item_2", - "type": "global", - "fieldName": "debug_item_2" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_2": [ - "value" - ] - } - }, - { - "name": "text_7", - "value": "@global.debug_item_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_2", - "matchedExpression": "@global.debug_item_2", - "type": "global", - "fieldName": "debug_item_2" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_2": [ - "value" - ] - } - }, - { - "name": "text_8", - "value": "This text is overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_bottom.text_8" - } - ], - "_nested_name": "debug_global_bottom" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_global_top.json b/packages/app-data/sheets/template/debug/debug_global_top.json deleted file mode 100644 index 9e0ec54c08..0000000000 --- a/packages/app-data/sheets/template/debug/debug_global_top.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_global_top", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_global_middle", - "value": "debug_global_middle", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "debug_global_bottom", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - }, - { - "name": "text_2", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - }, - { - "name": "text_3", - "value": "This text is overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_3" - }, - { - "name": "text_4", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - }, - { - "name": "text_5", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - }, - { - "name": "text_6", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - }, - { - "name": "text_7", - "value": "This text is overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_7" - }, - { - "name": "text_8", - "value": "@global.debug_item_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_global_middle.debug_global_bottom.text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_item_3", - "matchedExpression": "@global.debug_item_3", - "type": "global", - "fieldName": "debug_item_3" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_item_3": [ - "value" - ] - } - } - ], - "_nested_name": "debug_global_middle.debug_global_bottom" - } - ], - "_nested_name": "debug_global_middle" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_go_to_1.json b/packages/app-data/sheets/template/debug/debug_go_to_1.json deleted file mode 100644 index 93e713a1e2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_go_to_1.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_go_to_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the first template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_go_to_1", - "value": "Go to the second template", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_go_to_2" - ], - "_raw": "click | go_to:debug_go_to_2", - "_cleaned": "click | go_to:debug_go_to_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_1" - }, - { - "type": "text", - "name": "go_to_field", - "value": "Value of debug_go_to_field: @fields.debug_go_to_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "go_to_field", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_go_to_field: @fields.debug_go_to_field", - "matchedExpression": "@fields.debug_go_to_field", - "type": "fields", - "fieldName": "debug_go_to_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_go_to_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_double_go_to.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_go_to_2.json b/packages/app-data/sheets/template/debug/debug_go_to_2.json deleted file mode 100644 index 3e5a0fa446..0000000000 --- a/packages/app-data/sheets/template/debug/debug_go_to_2.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_go_to_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the second template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "text_box", - "name": "debug_text_box", - "value": "@fields.debug_go_to_field", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "debug_go_to_field", - "this.value" - ], - "_raw": "changed | set_field:debug_go_to_field:@local.debug_text_box", - "_cleaned": "changed | set_field:debug_go_to_field:@local.debug_text_box" - } - ], - "exclude_from_translation": true, - "_nested_name": "debug_text_box", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.debug_go_to_field", - "matchedExpression": "@fields.debug_go_to_field", - "type": "fields", - "fieldName": "debug_go_to_field" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:debug_go_to_field:@local.debug_text_box", - "matchedExpression": "@local.debug_text_box", - "type": "local", - "fieldName": "debug_text_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:debug_go_to_field:@local.debug_text_box", - "matchedExpression": "@local.debug_text_box", - "type": "local", - "fieldName": "debug_text_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@fields.debug_go_to_field": [ - "value" - ], - "@local.debug_text_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "go_to_field", - "value": "Value of debug_go_to_field: \nlocal: @local.debug_text_box;\nfield: @fields.debug_go_to_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "go_to_field", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_go_to_field: \nlocal: @local.debug_text_box;\nfield: @fields.debug_go_to_field", - "matchedExpression": "@local.debug_text_box", - "type": "local", - "fieldName": "debug_text_box" - }, - { - "fullExpression": "Value of debug_go_to_field: \nlocal: @local.debug_text_box;\nfield: @fields.debug_go_to_field", - "matchedExpression": "@fields.debug_go_to_field", - "type": "fields", - "fieldName": "debug_go_to_field" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_text_box": [ - "value" - ], - "@fields.debug_go_to_field": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_go_to_1", - "value": "Go to the third template", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "debug_go_to_3" - ], - "_raw": "click | go_to:debug_go_to_3", - "_cleaned": "click | go_to:debug_go_to_3" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_1" - }, - { - "type": "button", - "name": "button_completed", - "value": "Complete the current template", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_completed" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_double_go_to.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_go_to_3.json b/packages/app-data/sheets/template/debug/debug_go_to_3.json deleted file mode 100644 index a08ee009b9..0000000000 --- a/packages/app-data/sheets/template/debug/debug_go_to_3.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_go_to_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the third template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_completed", - "value": "Complete the current template", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_completed" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_double_go_to.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_go_to_nest_bottom.json b/packages/app-data/sheets/template/debug/debug_go_to_nest_bottom.json deleted file mode 100644 index 6d798f469b..0000000000 --- a/packages/app-data/sheets/template/debug/debug_go_to_nest_bottom.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_go_to_nest_bottom", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "button", - "name": "button", - "value": "Go to example_emit and come back", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - } - ], - "exclude_from_translation": true, - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_go_to_nested.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_go_to_nest_top.json b/packages/app-data/sheets/template/debug/debug_go_to_nest_top.json deleted file mode 100644 index 8aa7b73ae8..0000000000 --- a/packages/app-data/sheets/template/debug/debug_go_to_nest_top.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_go_to_nest_top", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This text is followed by the template debug_go_to_nest_bottom", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "template", - "name": "name_debug_go_to_nest_bottom", - "value": "debug_go_to_nest_bottom", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "name_debug_go_to_nest_bottom" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_go_to_nested.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hidden_buttons.json b/packages/app-data/sheets/template/debug/debug_hidden_buttons.json deleted file mode 100644 index 9fa5e1d775..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hidden_buttons.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hidden_buttons", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Placeholder Text to create separation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "button", - "name": "button_1", - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Placeholder Text to create separation..", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "button_2", - "value": "Hidden Button", - "_translations": { - "value": {} - }, - "hidden": true, - "exclude_from_translation": true, - "_nested_name": "button_2" - }, - { - "type": "text", - "name": "text_3", - "value": "Placeholder Text to create separation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hidden_text.json b/packages/app-data/sheets/template/debug/debug_hidden_text.json deleted file mode 100644 index a392fdf093..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hidden_text.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hidden_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Placeholder Text to create separation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "text_3", - "value": "Placeholder Text to create separation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "This is text_4 which should be hidden as we set hidden to true", - "_translations": { - "value": {} - }, - "hidden": true, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "text", - "name": "text_5", - "value": "Placeholder Text to create separation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hp_review.json b/packages/app-data/sheets/template/debug/debug_hp_review.json deleted file mode 100644 index 3ae8c81963..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hp_review.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hp_review", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "workshop_data", - "type": "set_variable", - "_nested_name": "workshop_data" - }, - { - "name": "workshop", - "value": "@local.workshop_data.id", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ] - } - }, - { - "name": "debug", - "value": "_debug", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug" - }, - { - "name": "workshop_debug", - "value": "@local.workshop@local.debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_debug", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop@local.debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop@local.debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ] - } - }, - { - "type": "text", - "name": "debug_description", - "value": "This template should show the same information on both sections", - "_translations": { - "value": {} - }, - "_nested_name": "debug_description" - }, - { - "type": "template", - "name": "workshop_activity", - "value": "debug_workshop_activity", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "intro_text", - "value": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_debug", - "type": "local", - "fieldName": "workshop_debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ], - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ], - "@local.workshop_debug": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "example_title_text", - "rows": [ - { - "name": "title", - "value": "Content", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.content_box.title" - }, - { - "name": "text", - "value": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.content_box.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_debug", - "type": "local", - "fieldName": "workshop_debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ], - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ], - "@local.workshop_debug": [ - "value" - ] - } - } - ], - "_nested_name": "workshop_activity.content_box" - } - ], - "_nested_name": "workshop_activity" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hp_review_2.json b/packages/app-data/sheets/template/debug/debug_hp_review_2.json deleted file mode 100644 index c138d06796..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hp_review_2.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hp_review_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "workshop_data", - "type": "set_variable", - "_nested_name": "workshop_data" - }, - { - "name": "workshop", - "value": "@local.workshop_data.id", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ] - } - }, - { - "name": "debug", - "value": "_debug", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug" - }, - { - "name": "workshop_debug", - "value": "@local.workshop@local.debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_debug", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop@local.debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop@local.debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ] - } - }, - { - "type": "template", - "name": "workshop_activity", - "value": "debug_workshop_activity_2", - "rows": [ - { - "name": "intro_text", - "value": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_debug", - "type": "local", - "fieldName": "workshop_debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ], - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ], - "@local.workshop_debug": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "example_title_text", - "rows": [ - { - "name": "title", - "value": "Content", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.content_box.title" - }, - { - "name": "text", - "value": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_activity.content_box.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.debug", - "type": "local", - "fieldName": "debug" - }, - { - "fullExpression": "@local.workshop_data.id\n@local.workshop\n@local.debug\n@local.workshop_debug", - "matchedExpression": "@local.workshop_debug", - "type": "local", - "fieldName": "workshop_debug" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ], - "@local.workshop": [ - "value" - ], - "@local.debug": [ - "value" - ], - "@local.workshop_debug": [ - "value" - ] - } - } - ], - "_nested_name": "workshop_activity.content_box" - } - ], - "_nested_name": "workshop_activity" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hp_review_specific.json b/packages/app-data/sheets/template/debug/debug_hp_review_specific.json deleted file mode 100644 index b2e02ff66f..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hp_review_specific.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hp_review_specific", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "home_practice_review", - "value": "debug_hp_review", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "workshop_data", - "value": "@data.workshop.w_consequence", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_consequence", - "matchedExpression": "@data.workshop.w_consequence", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_consequence": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_hp_review_specific_2.json b/packages/app-data/sheets/template/debug/debug_hp_review_specific_2.json deleted file mode 100644 index c119471410..0000000000 --- a/packages/app-data/sheets/template/debug/debug_hp_review_specific_2.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_hp_review_specific_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "home_practice_review", - "value": "debug_hp_review_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "workshop_data", - "value": "@data.workshop.w_consequence", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_consequence", - "matchedExpression": "@data.workshop.w_consequence", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_consequence": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_items.json b/packages/app-data/sheets/template/debug/debug_items.json deleted file mode 100644 index 76869145e2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_items.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_items", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "@data.parent_centre.bereavement.title", - "_translations": { - "value": {} - }, - "_nested_name": "title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.parent_centre.bereavement.title", - "matchedExpression": "@data.parent_centre.bereavement.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.bereavement.title": [ - "value" - ] - } - }, - { - "type": "items", - "name": "idems_column", - "value": "@data.bereavement", - "rows": [ - { - "type": "button", - "name": "button_@item.id", - "value": "@item.title", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@item.content_template" - ], - "_raw": "click | go_to: @item.content_template", - "_cleaned": "click | go_to: @item.content_template" - } - ], - "_nested_name": "idems_column.button_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.title", - "matchedExpression": "@item.title", - "type": "item", - "fieldName": "title" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@item.content_template", - "matchedExpression": "@item.content_template", - "type": "item", - "fieldName": "content_template" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | go_to: @item.content_template", - "matchedExpression": "@item.content_template", - "type": "item", - "fieldName": "content_template" - } - ], - "_cleaned": [ - { - "fullExpression": "click | go_to: @item.content_template", - "matchedExpression": "@item.content_template", - "type": "item", - "fieldName": "content_template" - } - ] - } - }, - "_nested_name": [ - { - "fullExpression": "idems_column.button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.title": [ - "value" - ], - "@item.content_template": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "idems_column", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.bereavement", - "matchedExpression": "@data.bereavement", - "type": "data", - "fieldName": "bereavement" - } - ] - }, - "_dynamicDependencies": { - "@data.bereavement": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_lang_global_1.json b/packages/app-data/sheets/template/debug/debug_lang_global_1.json deleted file mode 100644 index 503a7a28e2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_lang_global_1.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_lang_global_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "lang_select", - "value": "example_lang_select", - "rows": [], - "_nested_name": "lang_select" - }, - { - "type": "text", - "name": "text_1", - "value": "@global.language_global_1", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.language_global_1", - "matchedExpression": "@global.language_global_1", - "type": "global", - "fieldName": "language_global_1" - } - ] - }, - "_dynamicDependencies": { - "@global.language_global_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Text and @global.language_global_1", - "_translations": { - "value": {} - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text and @global.language_global_1", - "matchedExpression": "@global.language_global_1", - "type": "global", - "fieldName": "language_global_1" - } - ] - }, - "_dynamicDependencies": { - "@global.language_global_1": [ - "value" - ] - } - }, - { - "name": "answer_list_1", - "value": [ - "name:happy | text:happy", - "name:ok | text:ok", - "name:sad | text:sad" - ], - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "name": "answer_list_2", - "value": [ - "name:happy | text:@global.language_global_1", - "name:ok | text:ok", - "name:sad | text:sad" - ], - "type": "set_variable", - "_nested_name": "answer_list_2", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:happy | text:@global.language_global_1", - "matchedExpression": "@global.language_global_1", - "type": "global", - "fieldName": "language_global_1" - } - ] - } - }, - "_dynamicDependencies": { - "@global.language_global_1": [ - "value.0" - ] - } - }, - { - "name": "answer_list_3", - "value": [ - "name:happy | text: Text and @global.language_global_1", - "name:ok | text:ok", - "name:sad | text:sad" - ], - "type": "set_variable", - "_nested_name": "answer_list_3", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:happy | text: Text and @global.language_global_1", - "matchedExpression": "@global.language_global_1", - "type": "global", - "fieldName": "language_global_1" - } - ] - } - }, - "_dynamicDependencies": { - "@global.language_global_1": [ - "value.0" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_1", - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_2", - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_3", - "parameter_list": { - "answer_list": "@local.answer_list_3" - }, - "_nested_name": "radio_group_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_3", - "matchedExpression": "@local.answer_list_3", - "type": "local", - "fieldName": "answer_list_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_3": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_1", - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_2", - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "combo_box_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_3", - "parameter_list": { - "answer_list": "@local.answer_list_3" - }, - "_nested_name": "combo_box_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_3", - "matchedExpression": "@local.answer_list_3", - "type": "local", - "fieldName": "answer_list_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_3": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_markdown.json b/packages/app-data/sheets/template/debug/debug_markdown.json deleted file mode 100644 index 83b42c2be9..0000000000 --- a/packages/app-data/sheets/template/debug/debug_markdown.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_markdown", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "some_text", - "value": "**bold text** and _italic text_ with markdown", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "some_text" - }, - { - "type": "text", - "name": "item_1", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "item_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "text", - "name": "item_2", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "item_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "text", - "name": "item_3", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "contextual" - }, - "_nested_name": "item_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "title", - "name": "item_4", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "item_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "subtitle", - "name": "item_5", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "item_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "button", - "name": "item_6", - "value": "@local.some_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "item_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - }, - "_dynamicDependencies": { - "@local.some_text": [ - "value" - ] - } - }, - { - "type": "tile_component", - "name": "item_7", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.some_text" - }, - "_nested_name": "item_7", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.some_text": [ - "parameter_list.first_line_text" - ] - } - }, - { - "type": "simple_checkbox", - "name": "item_8", - "exclude_from_translation": true, - "parameter_list": { - "label_text": "@local.some_text" - }, - "_nested_name": "item_8", - "_dynamicFields": { - "parameter_list": { - "label_text": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.some_text": [ - "parameter_list.label_text" - ] - } - }, - { - "type": "toggle_bar", - "name": "item_9", - "value": false, - "exclude_from_translation": true, - "parameter_list": { - "false_text": "@local.some_text", - "true_text": "@local.some_text" - }, - "_nested_name": "item_9", - "_dynamicFields": { - "parameter_list": { - "false_text": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ], - "true_text": [ - { - "fullExpression": "@local.some_text", - "matchedExpression": "@local.some_text", - "type": "local", - "fieldName": "some_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.some_text": [ - "parameter_list.false_text", - "parameter_list.true_text" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_markdown.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_negation.json b/packages/app-data/sheets/template/debug/debug_negation.json deleted file mode 100644 index 4a9f09229f..0000000000 --- a/packages/app-data/sheets/template/debug/debug_negation.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_negation", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "var_true", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_true" - }, - { - "name": "var_false", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_false" - }, - { - "type": "text", - "name": "true_true", - "value": "Variable true (this text is hidden)", - "_translations": { - "value": {} - }, - "hidden": "@local.var_true", - "exclude_from_translation": true, - "_nested_name": "true_true", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_true", - "matchedExpression": "@local.var_true", - "type": "local", - "fieldName": "var_true" - } - ] - }, - "_dynamicDependencies": { - "@local.var_true": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "true_false", - "value": "Variable true Hidden negated (this text is visible)", - "_translations": { - "value": {} - }, - "hidden": "!@local.var_true", - "exclude_from_translation": true, - "_nested_name": "true_false", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.var_true", - "matchedExpression": "!@local.var_true", - "type": "local", - "fieldName": "var_true" - } - ] - }, - "_dynamicDependencies": { - "!@local.var_true": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "false_true", - "value": "Variable false (this text is visible)", - "_translations": { - "value": {} - }, - "hidden": "@local.var_false", - "exclude_from_translation": true, - "_nested_name": "false_true", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.var_false", - "matchedExpression": "@local.var_false", - "type": "local", - "fieldName": "var_false" - } - ] - }, - "_dynamicDependencies": { - "@local.var_false": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "false_false", - "value": "Variable false Hidden negated (this text is hidden)", - "_translations": { - "value": {} - }, - "hidden": "!@local.var_false", - "exclude_from_translation": true, - "_nested_name": "false_false", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.var_false", - "matchedExpression": "!@local.var_false", - "type": "local", - "fieldName": "var_false" - } - ] - }, - "_dynamicDependencies": { - "!@local.var_false": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nested_same_name.json b/packages/app-data/sheets/template/debug/debug_nested_same_name.json deleted file mode 100644 index b46730370a..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nested_same_name.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nested_same_name", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Double nested 1", - "_translations": { - "value": {} - }, - "_nested_name": "title" - }, - { - "type": "template", - "name": "template_1", - "value": "debug_text_and_blank_child_1", - "rows": [ - { - "name": "text", - "value": "Text 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_1.text" - }, - { - "type": "nested_properties", - "name": "subtemplate_1", - "value": "debug_text_and_blank_child_1", - "rows": [ - { - "name": "text", - "value": "Text 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_1.subtemplate_1.text" - }, - { - "type": "nested_properties", - "name": "subtemplate_1", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "Text 3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_1.subtemplate_1.subtemplate_1.text" - } - ], - "_nested_name": "template_1.subtemplate_1.subtemplate_1" - } - ], - "_nested_name": "template_1.subtemplate_1" - } - ], - "_nested_name": "template_1" - }, - { - "type": "title", - "name": "title", - "value": "Double nested 2", - "_translations": { - "value": {} - }, - "_nested_name": "title" - }, - { - "type": "template", - "name": "template_2", - "value": "debug_text_and_blank_child_1", - "rows": [ - { - "name": "text", - "value": "Text 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_2.text" - }, - { - "type": "nested_properties", - "name": "subtemplate_1", - "value": "debug_text_and_blank_child_2", - "rows": [ - { - "name": "text", - "value": "Text 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_2.subtemplate_1.text" - }, - { - "type": "nested_properties", - "name": "subtemplate_2", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "Text 3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "template_2.subtemplate_1.subtemplate_2.text" - } - ], - "_nested_name": "template_2.subtemplate_1.subtemplate_2" - } - ], - "_nested_name": "template_2.subtemplate_1" - } - ], - "_nested_name": "template_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nested_same_name.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_conditional.json b/packages/app-data/sheets/template/debug/debug_nesting_conditional.json deleted file mode 100644 index ea9eb969a8..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_conditional.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_conditional", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "text_2", - "value": "Success: text_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "text_2" - }, - { - "name": "text_1_toggle", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "text_1_toggle" - }, - { - "type": "text", - "name": "var_toggle_text", - "value": "The value of the toggle is: @local.text_1_toggle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_toggle_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of the toggle is: @local.text_1_toggle", - "matchedExpression": "@local.text_1_toggle", - "type": "local", - "fieldName": "text_1_toggle" - } - ] - }, - "_dynamicDependencies": { - "@local.text_1_toggle": [ - "value" - ] - } - }, - { - "type": "text", - "name": "intro_1", - "value": "The following template should change text_1 value depending on the value of a variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "intro_1" - }, - { - "type": "template", - "name": "direct_template_2", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_text_1", - "value": "Success: text_1 - toggle TRUE", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "condition": "@local.text_1_toggle", - "_nested_name": "direct_template_2.child_text_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.text_1_toggle", - "matchedExpression": "@local.text_1_toggle", - "type": "local", - "fieldName": "text_1_toggle" - } - ] - }, - "_dynamicDependencies": { - "@local.text_1_toggle": [ - "condition" - ] - } - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "Success: text_1 - toggle FALSE", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "condition": "!@local.text_1_toggle", - "_nested_name": "direct_template_2.child_text_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.text_1_toggle", - "matchedExpression": "!@local.text_1_toggle", - "type": "local", - "fieldName": "text_1_toggle" - } - ] - }, - "_dynamicDependencies": { - "!@local.text_1_toggle": [ - "condition" - ] - } - }, - { - "type": "set_variable", - "name": "child_text_2", - "value": "Expected: \"Success: text_2\"\nResult: @local.text_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "direct_template_2.child_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Expected: \"Success: text_2\"\nResult: @local.text_2", - "matchedExpression": "@local.text_2", - "type": "local", - "fieldName": "text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.text_2": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "direct_template_2.child_local_variable" - } - ], - "_nested_name": "direct_template_2" - }, - { - "type": "button", - "name": "toggle text", - "value": "Toggle value of text_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [], - "_raw": "click | set_local | var_toggle: !@local.var_toggle", - "_cleaned": "click | set_local | var_toggle: !@local.var_toggle" - } - ], - "exclude_from_translation": true, - "_nested_name": "toggle text", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "click | set_local | var_toggle: !@local.var_toggle", - "matchedExpression": "!@local.var_toggle", - "type": "local", - "fieldName": "var_toggle" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_local | var_toggle: !@local.var_toggle", - "matchedExpression": "!@local.var_toggle", - "type": "local", - "fieldName": "var_toggle" - } - ] - } - } - }, - "_dynamicDependencies": { - "!@local.var_toggle": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_override_1.json b/packages/app-data/sheets/template/debug/debug_nesting_override_1.json deleted file mode 100644 index 27e54eade2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_override_1.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_override_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "template_wrapper", - "rows": [], - "_nested_name": "template_wrapper" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_sheet_1.json b/packages/app-data/sheets/template/debug/debug_nesting_sheet_1.json deleted file mode 100644 index 5ed80d9dc9..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_sheet_1.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_sheet_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Title of debug_nesting_sheet_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_sheet_2.json b/packages/app-data/sheets/template/debug/debug_nesting_sheet_2.json deleted file mode 100644 index dd645fb160..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_sheet_2.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_sheet_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "fail: title debug_nesting_sheet_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "fail: text debug_nesting_sheet_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_test_1.json b/packages/app-data/sheets/template/debug/debug_nesting_test_1.json deleted file mode 100644 index 1918a412dc..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_test_1.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_test_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "name_1", - "value": "debug_nesting_sheet_1", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "This title was overwritten", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "name_1.title" - } - ], - "_nested_name": "name_1" - }, - { - "type": "template", - "name": "name_2", - "value": "debug_nesting_sheet_1", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "This title was overwritten as well", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "name_2.title" - } - ], - "_nested_name": "name_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_test_1_1.json b/packages/app-data/sheets/template/debug/debug_nesting_test_1_1.json deleted file mode 100644 index 37aa13de08..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_test_1_1.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_test_1_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_sheet_1a", - "value": "debug_nesting_sheet_1", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "title for sheet 1a was overwritten", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_sheet_1a.title" - } - ], - "_nested_name": "debug_sheet_1a" - }, - { - "type": "template", - "name": "debug_sheet_2a", - "value": "debug_nesting_sheet_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "title for sheet 2 was overwritten", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_sheet_2a.title" - } - ], - "_nested_name": "debug_sheet_2a" - }, - { - "type": "template", - "name": "debug_sheet_2b", - "value": "debug_nesting_sheet_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "text for sheet 2 was overwritten", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_sheet_2b.text" - } - ], - "_nested_name": "debug_sheet_2b" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_test_1_2.json b/packages/app-data/sheets/template/debug/debug_nesting_test_1_2.json deleted file mode 100644 index 840b634822..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_test_1_2.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_test_1_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "value": "Test 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "set_variable", - "name": "test_1_text", - "value": "success: test1 text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "test_1_text" - }, - { - "type": "template", - "name": "debug_override_1", - "value": "debug_nesting_override_1", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "template_wrapper", - "value": "debug_nesting_sheet_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "success: test1 title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_override_1.template_wrapper.title" - }, - { - "name": "text", - "value": "@local.test_1_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_override_1.template_wrapper.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.test_1_text", - "matchedExpression": "@local.test_1_text", - "type": "local", - "fieldName": "test_1_text" - } - ] - }, - "_dynamicDependencies": { - "@local.test_1_text": [ - "value" - ] - } - } - ], - "_nested_name": "debug_override_1.template_wrapper" - } - ], - "_nested_name": "debug_override_1" - }, - { - "type": "text", - "value": "Test 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "set_variable", - "name": "test_2_text", - "value": "success: test2 text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "test_2_text" - }, - { - "type": "template", - "name": "debug_sheet_2", - "value": "debug_nesting_sheet_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "sucess: test2 title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_sheet_2.title" - }, - { - "name": "text", - "value": "@local.test_2_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_sheet_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.test_2_text", - "matchedExpression": "@local.test_2_text", - "type": "local", - "fieldName": "test_2_text" - } - ] - }, - "_dynamicDependencies": { - "@local.test_2_text": [ - "value" - ] - } - } - ], - "_nested_name": "debug_sheet_2" - }, - { - "type": "set_variable", - "name": "test_3_text", - "value": "success: text3_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "test_3_text" - }, - { - "type": "text", - "value": "Test 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "template", - "name": "wrapper", - "value": "debug_nesting_override_1", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "template_wrapper", - "value": "debug_nesting_override_1", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "template_wrapper", - "value": "debug_nesting_sheet_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "success: text3_title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "wrapper.template_wrapper.template_wrapper.title" - }, - { - "name": "text", - "value": "@local.test_3_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "wrapper.template_wrapper.template_wrapper.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.test_3_text", - "matchedExpression": "@local.test_3_text", - "type": "local", - "fieldName": "test_3_text" - } - ] - }, - "_dynamicDependencies": { - "@local.test_3_text": [ - "value" - ] - } - } - ], - "_nested_name": "wrapper.template_wrapper.template_wrapper" - } - ], - "_nested_name": "wrapper.template_wrapper" - } - ], - "_nested_name": "wrapper" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_test_2.json b/packages/app-data/sheets/template/debug/debug_nesting_test_2.json deleted file mode 100644 index 18d06ec1eb..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_test_2.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_test_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "other_name", - "value": "debug_test_1", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "name_1", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "title for sheet 1 was overwritten twice", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "other_name.name_1.title" - } - ], - "_nested_name": "other_name.name_1" - } - ], - "_nested_name": "other_name" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_variables.json b/packages/app-data/sheets/template/debug/debug_nesting_variables.json deleted file mode 100644 index d7d9107517..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_variables.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_variables", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "heading_1", - "value": "TEST 1: Override template variables", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "heading_1" - }, - { - "type": "template", - "name": "two_texts_a", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "two_texts_a.child_local_variable" - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "Success: text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "two_texts_a.child_text_1" - } - ], - "_nested_name": "two_texts_a" - }, - { - "type": "text", - "name": "heading_2", - "value": "TEST 2: Override template variables dynamic", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "heading_2" - }, - { - "type": "set_variable", - "name": "var_text_1", - "value": "Success: text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_text_1" - }, - { - "type": "template", - "name": "two_texts_b", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "two_texts_b.child_local_variable" - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "@local.var_text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "two_texts_b.child_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_text_1", - "matchedExpression": "@local.var_text_1", - "type": "local", - "fieldName": "var_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_text_1": [ - "value" - ] - } - } - ], - "_nested_name": "two_texts_b" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_variables_2.json b/packages/app-data/sheets/template/debug/debug_nesting_variables_2.json deleted file mode 100644 index 4077b0ac65..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_variables_2.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_variables_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_variable", - "name": "var_text_1", - "value": "Success: text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_text_1" - }, - { - "type": "text", - "name": "heading_1", - "value": "TEST 1 - Overwrite a general wrapper to display a named template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "heading_1" - }, - { - "type": "template", - "name": "debug_wrapper_1", - "value": "debug_wrapper", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "wrapper_template", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_1.wrapper_template.child_local_variable" - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "@local.var_text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_1.wrapper_template.child_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_text_1", - "matchedExpression": "@local.var_text_1", - "type": "local", - "fieldName": "var_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_text_1": [ - "value" - ] - } - } - ], - "_nested_name": "debug_wrapper_1.wrapper_template" - } - ], - "_nested_name": "debug_wrapper_1" - }, - { - "type": "text", - "name": "heading_2", - "value": "The template below should match the template above, and has been set by 2 levels of nested_properties", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "condition": false, - "_nested_name": "heading_2" - }, - { - "type": "template", - "name": "debug_wrapper_2", - "value": "debug_wrapper", - "exclude_from_translation": true, - "condition": false, - "rows": [ - { - "type": "nested_properties", - "name": "wrapper_template", - "value": "debug_wrapper", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "wrapper_template", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_2.wrapper_template.wrapper_template.child_local_variable" - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "@local.var_text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_2.wrapper_template.wrapper_template.child_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_text_1", - "matchedExpression": "@local.var_text_1", - "type": "local", - "fieldName": "var_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_text_1": [ - "value" - ] - } - } - ], - "_nested_name": "debug_wrapper_2.wrapper_template.wrapper_template" - } - ], - "_nested_name": "debug_wrapper_2.wrapper_template" - } - ], - "_nested_name": "debug_wrapper_2" - }, - { - "type": "text", - "name": "heading_3", - "value": "The content below adds additional content to the template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "heading_3" - }, - { - "type": "template", - "name": "debug_wrapper_1", - "value": "debug_wrapper", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "wrapper_template", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Success: nesting local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_1.wrapper_template.child_local_variable" - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "@local.var_text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_wrapper_1.wrapper_template.child_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_text_1", - "matchedExpression": "@local.var_text_1", - "type": "local", - "fieldName": "var_text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_text_1": [ - "value" - ] - } - } - ], - "_nested_name": "debug_wrapper_1.wrapper_template" - } - ], - "_nested_name": "debug_wrapper_1" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_variables_3.json b/packages/app-data/sheets/template/debug/debug_nesting_variables_3.json deleted file mode 100644 index 8f9adb3a5e..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_variables_3.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_variables_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "heading_1", - "value": "TEST 1: Conditional properties", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "heading_1" - }, - { - "type": "set_variable", - "name": "toggle_value", - "value": true, - "exclude_from_translation": true, - "_nested_name": "toggle_value" - }, - { - "type": "button", - "name": "toggle_button", - "value": "Value: @local.toggle_value", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "toggle_value", - "!@local.toggle_value" - ], - "_raw": "click | set_local : toggle_value:!@local.toggle_value", - "_cleaned": "click | set_local : toggle_value:!@local.toggle_value" - } - ], - "exclude_from_translation": true, - "_nested_name": "toggle_button", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value: @local.toggle_value", - "matchedExpression": "@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ], - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "!@local.toggle_value", - "matchedExpression": "!@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_local : toggle_value:!@local.toggle_value", - "matchedExpression": "!@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_local : toggle_value:!@local.toggle_value", - "matchedExpression": "!@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.toggle_value": [ - "value" - ], - "!@local.toggle_value": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "template", - "name": "two_texts_a", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Text variant 1 (toggle to change)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "condition": "@local.toggle_value", - "_nested_name": "two_texts_a.child_local_variable", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.toggle_value", - "matchedExpression": "@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ] - }, - "_dynamicDependencies": { - "@local.toggle_value": [ - "condition" - ] - } - }, - { - "type": "set_variable", - "name": "child_local_variable", - "value": "Text variant 2 (toggle to change)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "condition": "!@local.toggle_value", - "_nested_name": "two_texts_a.child_local_variable", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.toggle_value", - "matchedExpression": "!@local.toggle_value", - "type": "local", - "fieldName": "toggle_value" - } - ] - }, - "_dynamicDependencies": { - "!@local.toggle_value": [ - "condition" - ] - } - }, - { - "type": "set_variable", - "name": "child_text_1", - "value": "Success: text_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "two_texts_a.child_text_1" - } - ], - "_nested_name": "two_texts_a" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_nesting_variables_global.json b/packages/app-data/sheets/template/debug/debug_nesting_variables_global.json deleted file mode 100644 index 51763163d4..0000000000 --- a/packages/app-data/sheets/template/debug/debug_nesting_variables_global.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_nesting_variables_global", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "var_text_2", - "value": "This is text_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_text_2" - }, - { - "name": "var_text_4", - "value": "This is text_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_text_4" - }, - { - "type": "template", - "name": "debug_two_texts", - "value": "debug_two_texts", - "exclude_from_translation": true, - "rows": [ - { - "name": "child_text_1", - "value": "This is text_1 overridden directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_two_texts.child_text_1" - }, - { - "name": "child_text_2", - "value": "@global.teen_girl_1 overridden by calling a variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_two_texts.child_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.teen_girl_1 overridden by calling a variable", - "matchedExpression": "@global.teen_girl_1", - "type": "global", - "fieldName": "teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.teen_girl_1": [ - "value" - ] - } - } - ], - "_nested_name": "debug_two_texts" - }, - { - "type": "text", - "name": "text_3", - "value": "This is text_3 written directly in the value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "@local.var_text_4 calling a variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_text_4 calling a variable", - "matchedExpression": "@local.var_text_4", - "type": "local", - "fieldName": "var_text_4" - } - ] - }, - "_dynamicDependencies": { - "@local.var_text_4": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_ordered_list.json b/packages/app-data/sheets/template/debug/debug_ordered_list.json deleted file mode 100644 index c220c1afe7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_ordered_list.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_ordered_list", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_unordered", - "value": "This is a bulleted list", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_unordered" - }, - { - "type": "text", - "name": "text_unordered", - "value": "These are some ideas you can try:\n\n* first idea\n* second idea\n* third idea", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_unordered" - }, - { - "type": "title", - "name": "title_ordered", - "value": "This should be a numbered list", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_ordered" - }, - { - "type": "text", - "name": "text_ordered", - "value": "These are some ideas you can try:\n\n* first idea\n* second idea\n* third idea", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "numbered" - }, - "_nested_name": "text_ordered" - }, - { - "type": "title", - "name": "title_ordered", - "value": "This should be a numbered list", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_ordered" - }, - { - "type": "text", - "name": "text_ordered2", - "value": "* first idea\n* second idea\n* third idea", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "numbered" - }, - "_nested_name": "text_ordered2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_ordered_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_overriding_value.json b/packages/app-data/sheets/template/debug/debug_overriding_value.json deleted file mode 100644 index c0e0f28311..0000000000 --- a/packages/app-data/sheets/template/debug/debug_overriding_value.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_overriding_value", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Nested template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_1", - "value": "Hiding and conditions work correctly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "template", - "name": "debug_radio_group_replies_1", - "value": "debug_radio_group_replies", - "rows": [], - "_nested_name": "debug_radio_group_replies_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Nested template with overridden text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_2", - "value": "Hiding no longer works when specified on the same row as the text. When specified on the display group, hiding does work. Condition works fine.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "template", - "name": "debug_radio_group_replies_2", - "value": "debug_radio_group_replies", - "rows": [ - { - "name": "text_1_hidden", - "value": "New text first - hidden", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_1_hidden" - }, - { - "name": "text_1_condition", - "value": "New text first - condition", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_1_condition" - }, - { - "name": "text_1_display_group", - "value": "New text first - hidden on display group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_1_display_group" - }, - { - "name": "text_2_hidden", - "value": "New text second - hidden", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_2_hidden" - }, - { - "name": "text_2_condition", - "value": "New text second - condition", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_2_condition" - }, - { - "name": "text_2_display_group", - "value": "New text second - hidden on display group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_radio_group_replies_2.text_2_display_group" - } - ], - "_nested_name": "debug_radio_group_replies_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_overriding_value.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_pop_ups_1.json b/packages/app-data/sheets/template/debug/debug_pop_ups_1.json deleted file mode 100644 index 5963f99bea..0000000000 --- a/packages/app-data/sheets/template/debug/debug_pop_ups_1.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_pop_ups_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_2", - "value": "Button 1 is a simple text pop-up:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "button", - "name": "button_pop_up_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_1" - }, - { - "type": "text", - "name": "text_4", - "value": "Button 2 is a pop-up with a button:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "button", - "name": "button_pop_up_3", - "value": "Button 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_go_to_3" - ], - "_raw": "click | pop_up:example_go_to_3", - "_cleaned": "click | pop_up:example_go_to_3" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_3" - }, - { - "type": "text", - "name": "text_3", - "value": "Button 3 pops up the example_text_image template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "button", - "name": "button_pop_up_3", - "value": "Button 3", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text_image" - ], - "_raw": "click | pop_up:example_text_image", - "_cleaned": "click | pop_up:example_text_image" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_3" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_pop_ups.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_pop_ups_2.json b/packages/app-data/sheets/template/debug/debug_pop_ups_2.json deleted file mode 100644 index 3211b1b831..0000000000 --- a/packages/app-data/sheets/template/debug/debug_pop_ups_2.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_pop_ups_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "debug_pop_ups_1", - "value": "debug_pop_ups_1", - "rows": [], - "_nested_name": "debug_pop_ups_1" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_pop_ups.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_pop_ups_override.json b/packages/app-data/sheets/template/debug/debug_pop_ups_override.json deleted file mode 100644 index a9ce2342f1..0000000000 --- a/packages/app-data/sheets/template/debug/debug_pop_ups_override.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_pop_ups_override", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "example_pop_ups", - "value": "example_pop_ups", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "This is template shows how buttons can be overwritten.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.text_1" - }, - { - "name": "text_2", - "value": "Button 1 has a new button text, but the action_list is unaltered.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.text_2" - }, - { - "name": "button_pop_up_1", - "value": "New Button 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.button_pop_up_1" - }, - { - "name": "text_3", - "value": "Button 2 has an altered action_list. It now launches a simple text pop-up.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.text_3" - }, - { - "name": "button_pop_up_2", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.button_pop_up_2" - }, - { - "name": "text_4", - "value": "Button 3 is unaltered.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_pop_ups.text_4" - } - ], - "_nested_name": "example_pop_ups" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_pop_ups_variable.json b/packages/app-data/sheets/template/debug/debug_pop_ups_variable.json deleted file mode 100644 index cf13b2adf7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_pop_ups_variable.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_pop_ups_variable", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "template_name", - "value": "example_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "template_name" - }, - { - "type": "text", - "name": "text_1", - "value": "Button 1 pops up the template example_text directly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "button", - "name": "button_pop_up_1", - "value": "Button_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Button 2 pops up the template example_text using a local variable \"template_name\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "button", - "name": "button_pop_up_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "@local.template_name" - ], - "_raw": "click | pop_up:@local.template_name", - "_cleaned": "click | pop_up:@local.template_name" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.template_name", - "matchedExpression": "@local.template_name", - "type": "local", - "fieldName": "template_name" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | pop_up:@local.template_name", - "matchedExpression": "@local.template_name", - "type": "local", - "fieldName": "template_name" - } - ], - "_cleaned": [ - { - "fullExpression": "click | pop_up:@local.template_name", - "matchedExpression": "@local.template_name", - "type": "local", - "fieldName": "template_name" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.template_name": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_pop_ups_variable.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_print_global.json b/packages/app-data/sheets/template/debug/debug_print_global.json deleted file mode 100644 index 60b8732cb4..0000000000 --- a/packages/app-data/sheets/template/debug/debug_print_global.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_print_global", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "exclude_from_translation": true, - "rows": [ - { - "name": "intro_text", - "value": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.parent_point", - "type": "global", - "fieldName": "parent_point" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct", - "type": "global", - "fieldName": "w_instruct" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.guide_teen_name", - "type": "global", - "fieldName": "guide_teen_name" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ], - "@global.parent_point": [ - "value" - ], - "@global.w_instruct": [ - "value" - ], - "@global.guide_teen_name": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "box_image", - "exclude_from_translation": true, - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/instruct/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.parent_point", - "type": "global", - "fieldName": "parent_point" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.w_instruct", - "type": "global", - "fieldName": "w_instruct" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver @global.w_instruct_teen_girl @global.parent_point @global.w_instruct @global.guide_teen_name", - "matchedExpression": "@global.guide_teen_name", - "type": "global", - "fieldName": "guide_teen_name" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ], - "@global.parent_point": [ - "value" - ], - "@global.w_instruct": [ - "value" - ], - "@global.guide_teen_name": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group.json b/packages/app-data/sheets/template/debug/debug_radio_group.json deleted file mode 100644 index c1810e8a21..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group.json +++ /dev/null @@ -1,222 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the radio group debug template", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third" - ], - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "name": "answer_list_2", - "value": [ - "name: individual | text: @global.individual | image:@global.individual_image", - "name: together | text: @global.together | image:@global.together_image" - ], - "type": "set_variable", - "_nested_name": "answer_list_2", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: individual | text: @global.individual | image:@global.individual_image", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - }, - { - "fullExpression": "name: individual | text: @global.individual | image:@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ], - "1": [ - { - "fullExpression": "name: together | text: @global.together | image:@global.together_image", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - }, - { - "fullExpression": "name: together | text: @global.together | image:@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - } - }, - "_dynamicDependencies": { - "@global.individual": [ - "value.0" - ], - "@global.individual_image": [ - "value.0" - ], - "@global.together": [ - "value.1" - ], - "@global.together_image": [ - "value.1" - ] - } - }, - { - "name": "answer_list_3", - "value": [ - "name: individual | text: First | image:plh_images/workshop_modes/guide_2/wave.svg", - "name: together | text: Second| image:plh_images/workshop_modes/guide_1/wave.svg" - ], - "type": "set_variable", - "_nested_name": "answer_list_3" - }, - { - "type": "radio_group", - "name": "radio_group_1", - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_2", - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_3", - "parameter_list": { - "answer_list": "@local.answer_list_3" - }, - "_nested_name": "radio_group_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_3", - "matchedExpression": "@local.answer_list_3", - "type": "local", - "fieldName": "answer_list_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_3": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "display_group", - "rows": [ - { - "type": "image", - "name": "image_1", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "_nested_name": "display_group.image_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image_2", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "_nested_name": "display_group.image_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_2.json b/packages/app-data/sheets/template/debug/debug_radio_group_2.json deleted file mode 100644 index 072c2d3bfe..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_2.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "radio_group_final", - "value": "radio_group_final_temp", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "radio_group_final" - }, - { - "name": "answer_list", - "value": [ - "name:option_1 | text: Option 1", - "name: option_2 | text: Option 2" - ], - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "options_per_row", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "type": "radio_group", - "name": "radio_group", - "parameter_list": { - "answer_list": "@local.answer_list", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Local variable: @local.radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local variable: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Set field", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "@local.radio_group_final", - "@local.radio_group" - ], - "_raw": "click | set_field:@local.radio_group_final:@local.radio_group", - "_cleaned": "click | set_field:@local.radio_group_final:@local.radio_group" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_final", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - } - ], - "1": [ - { - "fullExpression": "@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "click | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - }, - { - "fullExpression": "click | set_field:@local.radio_group_final:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.radio_group_final": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.radio_group": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Field: @field.@local.radio_group_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Field: @field.@local.radio_group_final", - "matchedExpression": "@local.radio_group_final", - "type": "local", - "fieldName": "radio_group_final" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_final": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_2", - "value": "Emit completed", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_dynamic.json b/packages/app-data/sheets/template/debug/debug_radio_group_dynamic.json deleted file mode 100644 index 39430fe1c2..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_dynamic.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_dynamic", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "radio_group", - "name": "radio_group_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "local variable for radio group 1: @local.radio_group_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "local variable for radio group 1: @local.radio_group_1", - "matchedExpression": "@local.radio_group_1", - "type": "local", - "fieldName": "radio_group_1" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_1": [ - "value" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "radio_group_2_field", - "this.value" - ], - "_raw": "changed | set_field:radio_group_2_field:@local.radio_group_2", - "_cleaned": "changed | set_field:radio_group_2_field:@local.radio_group_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:radio_group_2_field:@local.radio_group_2", - "matchedExpression": "@local.radio_group_2", - "type": "local", - "fieldName": "radio_group_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:radio_group_2_field:@local.radio_group_2", - "matchedExpression": "@local.radio_group_2", - "type": "local", - "fieldName": "radio_group_2" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "local variable for radio group 2: @local.radio_group_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "local variable for radio group 2: @local.radio_group_2", - "matchedExpression": "@local.radio_group_2", - "type": "local", - "fieldName": "radio_group_2" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "field for radio group 2: @field.radio_group_2_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "field for radio group 2: @field.radio_group_2_field", - "matchedExpression": "@field.radio_group_2_field", - "type": "field", - "fieldName": "radio_group_2_field" - } - ] - }, - "_dynamicDependencies": { - "@field.radio_group_2_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dynamic.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_image_scale.json b/packages/app-data/sheets/template/debug/debug_radio_group_image_scale.json deleted file mode 100644 index ddc61d6081..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_image_scale.json +++ /dev/null @@ -1,279 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_image_scale", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "individual_text", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "individual_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "individual_image", - "value": "plh_images/workshops/options/individual.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "individual_image" - }, - { - "name": "together_text", - "value": "@global.together", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "together_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "together_image", - "value": "plh_images/workshops/options/together.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "together_image" - }, - { - "type": "title", - "name": "title_1", - "value": "Tiles", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "display_group", - "rows": [ - { - "type": "tile_component", - "name": "individual_workshop", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.individual_text", - "style": "workshop_page", - "icon_src": "@local.individual_image" - }, - "_nested_name": "display_group.individual_workshop", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.individual_text", - "matchedExpression": "@local.individual_text", - "type": "local", - "fieldName": "individual_text" - } - ], - "icon_src": [ - { - "fullExpression": "@local.individual_image", - "matchedExpression": "@local.individual_image", - "type": "local", - "fieldName": "individual_image" - } - ] - } - }, - "_dynamicDependencies": { - "@local.individual_text": [ - "parameter_list.first_line_text" - ], - "@local.individual_image": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "group_workshop", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "@local.together_text", - "style": "workshop_page", - "icon_src": "@local.together_image" - }, - "_nested_name": "display_group.group_workshop", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.together_text", - "matchedExpression": "@local.together_text", - "type": "local", - "fieldName": "together_text" - } - ], - "icon_src": [ - { - "fullExpression": "@local.together_image", - "matchedExpression": "@local.together_image", - "type": "local", - "fieldName": "together_image" - } - ] - } - }, - "_dynamicDependencies": { - "@local.together_text": [ - "parameter_list.first_line_text" - ], - "@local.together_image": [ - "parameter_list.icon_src" - ] - } - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "title", - "name": "title_2", - "value": "Radio group", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "name": "answer_list_1", - "value": [ - "name: individual | text: @local.individual_text | image: @local.individual_image", - "name: together | text: @local.together_text | image: @local.together_image" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: individual | text: @local.individual_text | image: @local.individual_image", - "matchedExpression": "@local.individual_text", - "type": "local", - "fieldName": "individual_text" - }, - { - "fullExpression": "name: individual | text: @local.individual_text | image: @local.individual_image", - "matchedExpression": "@local.individual_image", - "type": "local", - "fieldName": "individual_image" - } - ], - "1": [ - { - "fullExpression": "name: together | text: @local.together_text | image: @local.together_image", - "matchedExpression": "@local.together_text", - "type": "local", - "fieldName": "together_text" - }, - { - "fullExpression": "name: together | text: @local.together_text | image: @local.together_image", - "matchedExpression": "@local.together_image", - "type": "local", - "fieldName": "together_image" - } - ] - } - }, - "_dynamicDependencies": { - "@local.individual_text": [ - "value.0" - ], - "@local.individual_image": [ - "value.0" - ], - "@local.together_text": [ - "value.1" - ], - "@local.together_image": [ - "value.1" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_1", - "value": "@fields.workshop_path", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.workshop_path", - "matchedExpression": "@fields.workshop_path", - "type": "fields", - "fieldName": "workshop_path" - } - ], - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.workshop_path": [ - "value" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_replies.json b/packages/app-data/sheets/template/debug/debug_radio_group_replies.json deleted file mode 100644 index b121dea251..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_replies.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_replies", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "radio_group", - "name": "radio_group", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_1_hidden", - "value": "Text first - hidden", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group != \"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_1_hidden", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group != \"name_var_1\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_1_condition", - "value": "Text first - condition", - "_translations": { - "value": {} - }, - "condition": "@local.radio_group == \"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_1_condition", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.radio_group == \"name_var_1\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "condition" - ] - } - }, - { - "type": "display_group", - "name": "dg_1", - "hidden": "@local.radio_group != \"name_var_1\"", - "rows": [ - { - "type": "text", - "name": "text_1_display_group", - "value": "Text first - hidden on display group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_1.text_1_display_group" - } - ], - "_nested_name": "dg_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group != \"name_var_1\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2_hidden", - "value": "Text second - hidden", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group != \"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_2_hidden", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group != \"name_var_2\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2_condition", - "value": "Text second - condition", - "_translations": { - "value": {} - }, - "condition": "@local.radio_group == \"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_2_condition", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.radio_group == \"name_var_2\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "condition" - ] - } - }, - { - "type": "display_group", - "name": "dg_2", - "hidden": "@local.radio_group != \"name_var_2\"", - "rows": [ - { - "type": "text", - "name": "text_2_display_group", - "value": "Text second - hidden on display group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_2.text_2_display_group" - } - ], - "_nested_name": "dg_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group != \"name_var_2\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_overriding_value.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_size.json b/packages/app-data/sheets/template/debug/debug_radio_group_size.json deleted file mode 100644 index d99832db54..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_size.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_size", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "title", - "name": "title_row", - "value": "Options per row", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_row" - }, - { - "type": "radio_group", - "name": "radio_group_without_options_per_row", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_without_options_per_row", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_with_options_per_row", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1", - "options_per_row": "2" - }, - "_nested_name": "radio_group_with_options_per_row", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "title", - "name": "title_long_text", - "value": "Long text", - "_translations": { - "value": {} - }, - "_nested_name": "title_long_text" - }, - { - "name": "long_text", - "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit,", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "long_text" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:@local.long_text", - "name:name_var_2 | text:Second" - ], - "type": "set_variable", - "_nested_name": "answer_list_2", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:name_var_1 | text:@local.long_text", - "matchedExpression": "@local.long_text", - "type": "local", - "fieldName": "long_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.long_text": [ - "value.0" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_with_long_text_and_options_per_row", - "parameter_list": { - "answer_list": "@local.answer_list_2", - "options_per_row": "2" - }, - "_nested_name": "radio_group_with_long_text_and_options_per_row", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_with_long_text", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_with_long_text", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_radio_group_variables.json b/packages/app-data/sheets/template/debug/debug_radio_group_variables.json deleted file mode 100644 index d6a8be16a5..0000000000 --- a/packages/app-data/sheets/template/debug/debug_radio_group_variables.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_radio_group_variables", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "option_1", - "value": "Option 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_1" - }, - { - "name": "option_2", - "value": "Option 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_2" - }, - { - "name": "option_3", - "value": "Option 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "option_3" - }, - { - "name": "answer_1_list", - "value": [ - "name:name_1 | text:Text 1", - "name:name_2 | text: Text 2" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_1_list" - }, - { - "name": "answer_2_list", - "value": [ - "name:name_1 | text:@local.option_1", - "name:name_2 | text:@local.option_2" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_2_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:name_1 | text:@local.option_1", - "matchedExpression": "@local.option_1", - "type": "local", - "fieldName": "option_1" - } - ], - "1": [ - { - "fullExpression": "name:name_2 | text:@local.option_2", - "matchedExpression": "@local.option_2", - "type": "local", - "fieldName": "option_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.option_1": [ - "value.0" - ], - "@local.option_2": [ - "value.1" - ] - } - }, - { - "name": "answer_3_list", - "value": [ - "name:name_1 | text:@global.example_global_constant_text", - "name:name_2 | text:@global.example_global_constant_title" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_3_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name:name_1 | text:@global.example_global_constant_text", - "matchedExpression": "@global.example_global_constant_text", - "type": "global", - "fieldName": "example_global_constant_text" - } - ], - "1": [ - { - "fullExpression": "name:name_2 | text:@global.example_global_constant_title", - "matchedExpression": "@global.example_global_constant_title", - "type": "global", - "fieldName": "example_global_constant_title" - } - ] - } - }, - "_dynamicDependencies": { - "@global.example_global_constant_text": [ - "value.0" - ], - "@global.example_global_constant_title": [ - "value.1" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "This is the radio group variables debug template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Direct answer list (set through local variable)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "radio_group", - "name": "radio_group_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_1_list" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_1_list", - "matchedExpression": "@local.answer_1_list", - "type": "local", - "fieldName": "answer_1_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_1_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Answer list contains local variables", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "radio_group", - "name": "radio_group_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_2_list" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_2_list", - "matchedExpression": "@local.answer_2_list", - "type": "local", - "fieldName": "answer_2_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_2_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "Answer list contains global variables", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "radio_group", - "name": "radio_group_3", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_3_list" - }, - "_nested_name": "radio_group_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_3_list", - "matchedExpression": "@local.answer_3_list", - "type": "local", - "fieldName": "answer_3_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_3_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_component_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_relax_checkbox.json b/packages/app-data/sheets/template/debug/debug_relax_checkbox.json deleted file mode 100644 index 63266e79dd..0000000000 --- a/packages/app-data/sheets/template/debug/debug_relax_checkbox.json +++ /dev/null @@ -1,648 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_relax_checkbox", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "relax_3_favourite", - "value": false, - "exclude_from_translation": true, - "_nested_name": "relax_3_favourite" - }, - { - "type": "set_field", - "name": "which_relax", - "value": "relax_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "which_relax" - }, - { - "name": "favourite", - "value": "_favourite", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "favourite" - }, - { - "name": "relax", - "value": "@field.which_relax", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "relax", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.which_relax", - "matchedExpression": "@field.which_relax", - "type": "field", - "fieldName": "which_relax" - } - ] - }, - "_dynamicDependencies": { - "@field.which_relax": [ - "value" - ] - } - }, - { - "name": "relax_favourite", - "value": "@local.relax@local.favourite", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "relax_favourite", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.relax@local.favourite", - "matchedExpression": "@local.relax", - "type": "local", - "fieldName": "relax" - }, - { - "fullExpression": "@local.relax@local.favourite", - "matchedExpression": "@local.favourite", - "type": "local", - "fieldName": "favourite" - } - ] - }, - "_dynamicDependencies": { - "@local.relax": [ - "value" - ], - "@local.favourite": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "@local.relax_favourite", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.relax_favourite", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - } - ] - }, - "_dynamicDependencies": { - "@local.relax_favourite": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "This is @field.@local.relax_favourite", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is @field.@local.relax_favourite", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - } - ] - }, - "_dynamicDependencies": { - "@local.relax_favourite": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "@field.@local.relax@local.favourite", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.@local.relax@local.favourite", - "matchedExpression": "@local.relax", - "type": "local", - "fieldName": "relax" - }, - { - "fullExpression": "@field.@local.relax@local.favourite", - "matchedExpression": "@local.favourite", - "type": "local", - "fieldName": "favourite" - } - ] - }, - "_dynamicDependencies": { - "@local.relax": [ - "value" - ], - "@local.favourite": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": "@field.@local.relax_favourite", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.relax_favourite", - "this.value" - ], - "_raw": "changed | set_field:@local.relax_favourite:@local.checkbox_1", - "_cleaned": "changed | set_field:@local.relax_favourite:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 1" - }, - "_nested_name": "checkbox_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.@local.relax_favourite", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.relax_favourite", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_1", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - }, - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_1", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - }, - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.relax_favourite": [ - "value", - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "local_text_1", - "value": "checkbox local: @local.checkbox_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "local_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": "@field.relax_3_favourite", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "relax_3_favourite", - "this.value" - ], - "_raw": "changed | set_field:relax_3_favourite:@local.checkbox_2", - "_cleaned": "changed | set_field:relax_3_favourite:@local.checkbox_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 2" - }, - "_nested_name": "checkbox_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.relax_3_favourite", - "matchedExpression": "@field.relax_3_favourite", - "type": "field", - "fieldName": "relax_3_favourite" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:relax_3_favourite:@local.checkbox_2", - "matchedExpression": "@local.checkbox_2", - "type": "local", - "fieldName": "checkbox_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:relax_3_favourite:@local.checkbox_2", - "matchedExpression": "@local.checkbox_2", - "type": "local", - "fieldName": "checkbox_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@field.relax_3_favourite": [ - "value" - ], - "@local.checkbox_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "local_text_2", - "value": "checkbox local: @local.checkbox_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "local_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_2", - "matchedExpression": "@local.checkbox_2", - "type": "local", - "fieldName": "checkbox_2" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_2": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_3", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "relax_3_favourite", - "this.value" - ], - "_raw": "changed | set_field:relax_3_favourite:@local.checkbox_3", - "_cleaned": "changed | set_field:relax_3_favourite:@local.checkbox_3" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 3" - }, - "_nested_name": "checkbox_3", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:relax_3_favourite:@local.checkbox_3", - "matchedExpression": "@local.checkbox_3", - "type": "local", - "fieldName": "checkbox_3" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:relax_3_favourite:@local.checkbox_3", - "matchedExpression": "@local.checkbox_3", - "type": "local", - "fieldName": "checkbox_3" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_3": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "local_text_3", - "value": "checkbox local: @local.checkbox_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "local_text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_3", - "matchedExpression": "@local.checkbox_3", - "type": "local", - "fieldName": "checkbox_3" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_3": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_4", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.relax_favourite", - "this.value" - ], - "_raw": "changed | set_field:@local.relax_favourite:@local.checkbox_4", - "_cleaned": "changed | set_field:@local.relax_favourite:@local.checkbox_4" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 4" - }, - "_nested_name": "checkbox_4", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.relax_favourite", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_4", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - }, - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_4", - "matchedExpression": "@local.checkbox_4", - "type": "local", - "fieldName": "checkbox_4" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_4", - "matchedExpression": "@local.relax_favourite", - "type": "local", - "fieldName": "relax_favourite" - }, - { - "fullExpression": "changed | set_field:@local.relax_favourite:@local.checkbox_4", - "matchedExpression": "@local.checkbox_4", - "type": "local", - "fieldName": "checkbox_4" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.relax_favourite": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.checkbox_4": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "local_text_4", - "value": "checkbox local: @local.checkbox_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "local_text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_4", - "matchedExpression": "@local.checkbox_4", - "type": "local", - "fieldName": "checkbox_4" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_4": [ - "value" - ] - } - }, - { - "type": "animated_section", - "name": "dave", - "exclude_from_translation": true, - "rows": [ - { - "type": "simple_checkbox", - "name": "checkbox_5", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "checkbox_a_s_test", - "this.value" - ], - "_raw": "changed | set_field:checkbox_a_s_test:@local.checkbox_5", - "_cleaned": "changed | set_field:checkbox_a_s_test:@local.checkbox_5" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "checkbox 5" - }, - "_nested_name": "dave.checkbox_5", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:checkbox_a_s_test:@local.checkbox_5", - "matchedExpression": "@local.checkbox_5", - "type": "local", - "fieldName": "checkbox_5" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:checkbox_a_s_test:@local.checkbox_5", - "matchedExpression": "@local.checkbox_5", - "type": "local", - "fieldName": "checkbox_5" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_5": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "dave" - }, - { - "type": "text", - "name": "text_5", - "value": "the local for checkbox 5 in animates section is @local.checkbox_5 and the field is @fields.checkbox_a_s_test", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the local for checkbox 5 in animates section is @local.checkbox_5 and the field is @fields.checkbox_a_s_test", - "matchedExpression": "@local.checkbox_5", - "type": "local", - "fieldName": "checkbox_5" - }, - { - "fullExpression": "the local for checkbox 5 in animates section is @local.checkbox_5 and the field is @fields.checkbox_a_s_test", - "matchedExpression": "@fields.checkbox_a_s_test", - "type": "fields", - "fieldName": "checkbox_a_s_test" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_5": [ - "value" - ], - "@fields.checkbox_a_s_test": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_relax_checkbox.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_child.json b/packages/app-data/sheets/template/debug/debug_render_child.json deleted file mode 100644 index 1464e677fd..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_child.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_child", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Child", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "template", - "name": "debug_render_grandchild_1", - "value": "debug_render_grandchild_1", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_grandchild_1" - }, - { - "type": "template", - "name": "debug_render_grandchild_2a", - "value": "debug_render_grandchild_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 2a", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_2a.title" - }, - { - "name": "text_3", - "value": "(child) selected no", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"no\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_2a.text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"no\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "name": "text_4", - "value": "(child) selected yes", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"yes\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_2a.text_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"yes\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "name": "text_5", - "value": "(child) Value of test_render_updates_field: @fields.test_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_2a.text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "(child) Value of test_render_updates_field: @fields.test_render_updates_field", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ] - } - } - ], - "_nested_name": "debug_render_grandchild_2a" - }, - { - "type": "template", - "name": "debug_render_grandchild_2b", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_grandchild_2b" - }, - { - "type": "template", - "name": "debug_render_grandchild_3a", - "value": "example_title_text", - "hidden": "@fields.test_render_updates_field!=\"no\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 3a", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_3a.title" - }, - { - "name": "text", - "value": "(child) selected no", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_3a.text" - } - ], - "_nested_name": "debug_render_grandchild_3a", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"no\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "type": "template", - "name": "debug_render_grandchild_3b", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_grandchild_3b" - }, - { - "type": "template", - "name": "debug_render_grandchild_4a", - "value": "example_title_text", - "hidden": "@fields.test_render_updates_field!=\"yes\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 4a", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_4a.title" - }, - { - "name": "text", - "value": "(child) selected yes", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_grandchild_4a.text" - } - ], - "_nested_name": "debug_render_grandchild_4a", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"yes\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "type": "template", - "name": "debug_render_grandchild_4b", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_grandchild_4b" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_grandchild_1.json b/packages/app-data/sheets/template/debug/debug_render_grandchild_1.json deleted file mode 100644 index d6796977a8..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_grandchild_1.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_grandchild_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Grandchild 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "name": "answer_list_1", - "value": [ - "name: yes | text: Yes", - "name: no | text: No" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "radio_group", - "name": "radio_group", - "value": "@fields.test_render_updates_field", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "test_render_updates_field", - "this.value" - ], - "_raw": "changed | set_field:test_render_updates_field:@local.radio_group", - "_cleaned": "changed | set_field:test_render_updates_field:@local.radio_group" - }, - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "force_reload" - ], - "_raw": "changed | emit:force_reload", - "_cleaned": "changed | emit:force_reload" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1", - "radio_button_type": "btn_text", - "options_per_row": "2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.test_render_updates_field", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:test_render_updates_field:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:test_render_updates_field:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "go_to_field", - "value": "Value of test_render_updates_field: @fields.test_render_updates_field\n\nlocal: @local.radio_group;", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "go_to_field", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of test_render_updates_field: @fields.test_render_updates_field\n\nlocal: @local.radio_group;", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - }, - { - "fullExpression": "Value of test_render_updates_field: @fields.test_render_updates_field\n\nlocal: @local.radio_group;", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ], - "@local.radio_group": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_grandchild_2.json b/packages/app-data/sheets/template/debug/debug_render_grandchild_2.json deleted file mode 100644 index ee2424f9ba..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_grandchild_2.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_grandchild_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Grandchild 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "(grandchild) Value of test_render_updates_field: @fields.test_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "(grandchild) Value of test_render_updates_field: @fields.test_render_updates_field", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "(grandchild) selected no", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"no\"", - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"no\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "(grandchild) selected yes", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"yes\"", - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"yes\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Text 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "Text 4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "text", - "name": "text_5", - "value": "Text 5", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_parent.json b/packages/app-data/sheets/template/debug/debug_render_parent.json deleted file mode 100644 index ce7c8cc46d..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_parent.json +++ /dev/null @@ -1,239 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_parent", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Parent", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "Value of test_render_updates_field: \nfield: @fields.test_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of test_render_updates_field: \nfield: @fields.test_render_updates_field", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ] - } - }, - { - "type": "template", - "name": "debug_render_child", - "value": "debug_render_child", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "debug_render_grandchild_2b", - "value": "debug_render_grandchild_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 2b", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_2b.title" - }, - { - "name": "text_3", - "value": "(parent) selected no", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"no\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_2b.text_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"no\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "name": "text_4", - "value": "(parent) selected yes", - "_translations": { - "value": {} - }, - "hidden": "@fields.test_render_updates_field!=\"yes\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_2b.text_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@fields.test_render_updates_field!=\"yes\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "hidden" - ] - } - }, - { - "name": "text_5", - "value": "(parent) Value of test_render_updates_field: @fields.test_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_2b.text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "(parent) Value of test_render_updates_field: @fields.test_render_updates_field", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "value" - ] - } - } - ], - "_nested_name": "debug_render_child.debug_render_grandchild_2b" - }, - { - "type": "nested_properties", - "name": "debug_render_grandchild_3b", - "value": "example_title_text", - "condition": "@fields.test_render_updates_field==\"no\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 3b", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_3b.title" - }, - { - "name": "text", - "value": "(parent) selected no", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_3b.text" - } - ], - "_nested_name": "debug_render_child.debug_render_grandchild_3b", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.test_render_updates_field==\"no\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "condition" - ] - } - }, - { - "type": "nested_properties", - "name": "debug_render_grandchild_4b", - "value": "example_title_text", - "condition": "@fields.test_render_updates_field==\"yes\"", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Grandchild 4b", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_4b.title" - }, - { - "name": "text", - "value": "(parent) selected yes", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_render_child.debug_render_grandchild_4b.text" - } - ], - "_nested_name": "debug_render_child.debug_render_grandchild_4b", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.test_render_updates_field==\"yes\"", - "matchedExpression": "@fields.test_render_updates_field", - "type": "fields", - "fieldName": "test_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.test_render_updates_field": [ - "condition" - ] - } - } - ], - "_nested_name": "debug_render_child" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_updates.json b/packages/app-data/sheets/template/debug/debug_render_updates.json deleted file mode 100644 index 20262868b6..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_updates.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_updates", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "Parent", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "text", - "value": "Changing either child input should update the other sibling", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "text", - "value": "Value of debug_render_updates_field: \nfield: @fields.debug_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_render_updates_field: \nfield: @fields.debug_render_updates_field", - "matchedExpression": "@fields.debug_render_updates_field", - "type": "fields", - "fieldName": "debug_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_render_updates_field": [ - "value" - ] - } - }, - { - "type": "template", - "name": "debug_render_updates_child_1", - "value": "debug_render_updates_child_1", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_updates_child_1" - }, - { - "type": "template", - "name": "debug_render_updates_child_2", - "value": "debug_render_updates_child_2", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "debug_render_updates_child_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_updates.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_updates_child_1.json b/packages/app-data/sheets/template/debug/debug_render_updates_child_1.json deleted file mode 100644 index a4fc9326ba..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_updates_child_1.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_updates_child_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "Child 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "text_box", - "name": "debug_render_updates_text", - "value": "@fields.debug_render_updates_field", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "debug_render_updates_field", - "this.value" - ], - "_raw": "changed | set_field:debug_render_updates_field:@local.debug_render_updates_text", - "_cleaned": "changed | set_field:debug_render_updates_field:@local.debug_render_updates_text" - }, - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "changed | emit:force_reprocess", - "_cleaned": "changed | emit:force_reprocess" - } - ], - "exclude_from_translation": true, - "_nested_name": "debug_render_updates_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.debug_render_updates_field", - "matchedExpression": "@fields.debug_render_updates_field", - "type": "fields", - "fieldName": "debug_render_updates_field" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:debug_render_updates_field:@local.debug_render_updates_text", - "matchedExpression": "@local.debug_render_updates_text", - "type": "local", - "fieldName": "debug_render_updates_text" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:debug_render_updates_field:@local.debug_render_updates_text", - "matchedExpression": "@local.debug_render_updates_text", - "type": "local", - "fieldName": "debug_render_updates_text" - } - ] - } - } - }, - "_dynamicDependencies": { - "@fields.debug_render_updates_field": [ - "value" - ], - "@local.debug_render_updates_text": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "go_to_field", - "value": "Value of debug_render_updates_field: \nlocal: @local.debug_render_updates_text;\nfield: @fields.debug_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "go_to_field", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_render_updates_field: \nlocal: @local.debug_render_updates_text;\nfield: @fields.debug_render_updates_field", - "matchedExpression": "@local.debug_render_updates_text", - "type": "local", - "fieldName": "debug_render_updates_text" - }, - { - "fullExpression": "Value of debug_render_updates_field: \nlocal: @local.debug_render_updates_text;\nfield: @fields.debug_render_updates_field", - "matchedExpression": "@fields.debug_render_updates_field", - "type": "fields", - "fieldName": "debug_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_render_updates_text": [ - "value" - ], - "@fields.debug_render_updates_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_updates.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_render_updates_child_2.json b/packages/app-data/sheets/template/debug/debug_render_updates_child_2.json deleted file mode 100644 index 6799a6cb4f..0000000000 --- a/packages/app-data/sheets/template/debug/debug_render_updates_child_2.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_render_updates_child_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "Child 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "text", - "value": "Value of debug_render_updates_field: \nfield: @fields.debug_render_updates_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of debug_render_updates_field: \nfield: @fields.debug_render_updates_field", - "matchedExpression": "@fields.debug_render_updates_field", - "type": "fields", - "fieldName": "debug_render_updates_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_render_updates_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_updates.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_rounded_corners.json b/packages/app-data/sheets/template/debug/debug_rounded_corners.json deleted file mode 100644 index 5255aca2aa..0000000000 --- a/packages/app-data/sheets/template/debug/debug_rounded_corners.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_rounded_corners", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshops/solve/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "rounded_corners" - }, - "_nested_name": "image" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_rounded_corners.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_field_1.json b/packages/app-data/sheets/template/debug/debug_set_field_1.json deleted file mode 100644 index 9bb5b5ceac..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_field_1.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_field_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "variable", - "value": "Value of the field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "variable" - }, - { - "type": "text", - "name": "text_1", - "value": "Field value is @field.variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Field value is @field.variable", - "matchedExpression": "@field.variable", - "type": "field", - "fieldName": "variable" - } - ] - }, - "_dynamicDependencies": { - "@field.variable": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_field_2.json b/packages/app-data/sheets/template/debug/debug_set_field_2.json deleted file mode 100644 index a50069c672..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_field_2.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_field_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Field value is @field.variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Field value is @field.variable", - "matchedExpression": "@field.variable", - "type": "field", - "fieldName": "variable" - } - ] - }, - "_dynamicDependencies": { - "@field.variable": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_field_triggered.json b/packages/app-data/sheets/template/debug/debug_set_field_triggered.json deleted file mode 100644 index b57ae93dab..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_field_triggered.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_field_triggered", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text_box", - "name": "text_box", - "value": "@fields.debug_tracker_text_box", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "debug_tracker_undefined@local.text_box" - ], - "_raw": "changed | set_field:debug_tracker_undefined@local.text_box", - "_cleaned": "changed | set_field:debug_tracker_undefined@local.text_box" - } - ], - "exclude_from_translation": true, - "_nested_name": "text_box", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.debug_tracker_text_box", - "matchedExpression": "@fields.debug_tracker_text_box", - "type": "fields", - "fieldName": "debug_tracker_text_box" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "debug_tracker_undefined@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:debug_tracker_undefined@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:debug_tracker_undefined@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@fields.debug_tracker_text_box": [ - "value" - ], - "@local.text_box": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "value": "text_box\n---------------------------------------------------\nlocal: @local.text_box \nfield: @fields.debug_tracker_text_box \ntriggered: @fields.debug_triggered_text_box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "text_box\n---------------------------------------------------\nlocal: @local.text_box \nfield: @fields.debug_tracker_text_box \ntriggered: @fields.debug_triggered_text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - }, - { - "fullExpression": "text_box\n---------------------------------------------------\nlocal: @local.text_box \nfield: @fields.debug_tracker_text_box \ntriggered: @fields.debug_triggered_text_box", - "matchedExpression": "@fields.debug_tracker_text_box", - "type": "fields", - "fieldName": "debug_tracker_text_box" - }, - { - "fullExpression": "text_box\n---------------------------------------------------\nlocal: @local.text_box \nfield: @fields.debug_tracker_text_box \ntriggered: @fields.debug_triggered_text_box", - "matchedExpression": "@fields.debug_triggered_text_box", - "type": "fields", - "fieldName": "debug_triggered_text_box" - } - ] - }, - "_dynamicDependencies": { - "@local.text_box": [ - "value" - ], - "@fields.debug_tracker_text_box": [ - "value" - ], - "@fields.debug_triggered_text_box": [ - "value" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "debug_triggered_text_box", - "@local.text_box" - ], - "_raw": "completed | set_field:debug_triggered_text_box:@local.text_box", - "_cleaned": "completed | set_field:debug_triggered_text_box:@local.text_box" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "name": "use_completed_chevron", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nav_buttons.use_completed_chevron" - } - ], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:debug_triggered_text_box:@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:debug_triggered_text_box:@local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.text_box": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_set_field_triggered.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_global_2.json b/packages/app-data/sheets/template/debug/debug_set_global_2.json deleted file mode 100644 index 89744e9a8e..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_global_2.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_global_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "@global.debug_variable_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_variable_1", - "matchedExpression": "@global.debug_variable_1", - "type": "global", - "fieldName": "debug_variable_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_variable_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text", - "value": "Text that includes @global.debug_variable_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @global.debug_variable_1", - "matchedExpression": "@global.debug_variable_1", - "type": "global", - "fieldName": "debug_variable_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_variable_1": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_local.json b/packages/app-data/sheets/template/debug/debug_set_local.json deleted file mode 100644 index b66cf5dbdd..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_local.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_local", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "debug_variable_one", - "value": "Value of the first debug variable.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable_one" - }, - { - "name": "debug_variable_two", - "value": "Value of the second debug variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable_two" - }, - { - "name": "debug_variable_3", - "value": "Value of the third debug variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable_3" - }, - { - "name": "debug_variable_four", - "value": "Value of the fourth debug variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable_four" - }, - { - "name": "debug_variable_five", - "value": "Value of the fifth debug variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable_five" - }, - { - "type": "text", - "name": "debug_text_1", - "value": "Text that includes @local.debug_variable_one", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @local.debug_variable_one", - "matchedExpression": "@local.debug_variable_one", - "type": "local", - "fieldName": "debug_variable_one" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_variable_one": [ - "value" - ] - } - }, - { - "type": "text", - "name": "debug_text_2", - "value": "Text that includes @local.debug_variable_two", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @local.debug_variable_two", - "matchedExpression": "@local.debug_variable_two", - "type": "local", - "fieldName": "debug_variable_two" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_variable_two": [ - "value" - ] - } - }, - { - "type": "text", - "name": "debug_text_3", - "value": "Text that includes @local.debug_variable_3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @local.debug_variable_3", - "matchedExpression": "@local.debug_variable_3", - "type": "local", - "fieldName": "debug_variable_3" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_variable_3": [ - "value" - ] - } - }, - { - "type": "text", - "name": "debug_text_4", - "value": "Text that includes @local.debug_variable_four", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @local.debug_variable_four", - "matchedExpression": "@local.debug_variable_four", - "type": "local", - "fieldName": "debug_variable_four" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_variable_four": [ - "value" - ] - } - }, - { - "type": "text", - "name": "debug_text_5", - "value": "Text that includes @local.debug_variable-five", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "debug_text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @local.debug_variable-five", - "matchedExpression": "@local.debug_variable", - "type": "local", - "fieldName": "debug_variable" - } - ] - }, - "_dynamicDependencies": { - "@local.debug_variable": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_set_local_image.json b/packages/app-data/sheets/template/debug/debug_set_local_image.json deleted file mode 100644 index 2d9863af05..0000000000 --- a/packages/app-data/sheets/template/debug/debug_set_local_image.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_set_local_image", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "debug_variable", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "debug_variable" - }, - { - "type": "image", - "name": "direct_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "direct_image" - }, - { - "type": "text", - "name": "text", - "value": "Text below the direct image and above the variable image.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "image", - "name": "variable_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "variable_image" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_slider_dynamic.json b/packages/app-data/sheets/template/debug/debug_slider_dynamic.json deleted file mode 100644 index 60b3ed4caf..0000000000 --- a/packages/app-data/sheets/template/debug/debug_slider_dynamic.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_slider_dynamic", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "slider", - "name": "slider_1", - "exclude_from_translation": true, - "parameter_list": { - "title": "Slider 1" - }, - "_nested_name": "slider_1" - }, - { - "type": "text", - "name": "text_1", - "value": "local variable for slider 1: @local.slider_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "local variable for slider 1: @local.slider_1", - "matchedExpression": "@local.slider_1", - "type": "local", - "fieldName": "slider_1" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_1": [ - "value" - ] - } - }, - { - "type": "slider", - "name": "slider_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "slider_2_field", - "this.value" - ], - "_raw": "changed | set_field:slider_2_field:@local.slider_2", - "_cleaned": "changed | set_field:slider_2_field:@local.slider_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "title": "Slider 2" - }, - "_nested_name": "slider_2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:slider_2_field:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:slider_2_field:@local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.slider_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "local variable for slider 2: @local.slider_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "local variable for slider 2: @local.slider_2", - "matchedExpression": "@local.slider_2", - "type": "local", - "fieldName": "slider_2" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "field for slider 2: @field.slider_2_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "field for slider 2: @field.slider_2_field", - "matchedExpression": "@field.slider_2_field", - "type": "field", - "fieldName": "slider_2_field" - } - ] - }, - "_dynamicDependencies": { - "@field.slider_2_field": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_dynamic.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_slider_with_template.json b/packages/app-data/sheets/template/debug/debug_slider_with_template.json deleted file mode 100644 index fd223afea8..0000000000 --- a/packages/app-data/sheets/template/debug/debug_slider_with_template.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_slider_with_template", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "slider", - "name": "slider", - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "max": "5" - }, - "_nested_name": "slider" - }, - { - "type": "template", - "name": "example_text", - "value": "example_text", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "example_text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_slider_with_template.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_slider_without_template.json b/packages/app-data/sheets/template/debug/debug_slider_without_template.json deleted file mode 100644 index 8b91b3cfd7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_slider_without_template.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_slider_without_template", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "slider", - "name": "slider", - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "max": "5" - }, - "_nested_name": "slider" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_slider_with_template.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_stepper_nav_group.json b/packages/app-data/sheets/template/debug/debug_stepper_nav_group.json deleted file mode 100644 index c02c8b2c41..0000000000 --- a/packages/app-data/sheets/template/debug/debug_stepper_nav_group.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_stepper_nav_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "progress_field", - "value": "debug_stepper_progress_field", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "progress_field" - }, - { - "name": "max_progress_field", - "value": "debug_stepper_max_progress_field", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "max_progress_field" - }, - { - "type": "nav_group", - "name": "nav_template_list", - "value": [ - "debug_stepper_step_1", - "debug_stepper_step_2", - "debug_stepper_step_3", - "debug_stepper_step_4" - ], - "exclude_from_translation": true, - "parameter_list": { - "progress_field": "@local.progress_field", - "max_progress_field": "@local.max_progress_field" - }, - "_nested_name": "nav_template_list", - "_dynamicFields": { - "parameter_list": { - "progress_field": [ - { - "fullExpression": "@local.progress_field", - "matchedExpression": "@local.progress_field", - "type": "local", - "fieldName": "progress_field" - } - ], - "max_progress_field": [ - { - "fullExpression": "@local.max_progress_field", - "matchedExpression": "@local.max_progress_field", - "type": "local", - "fieldName": "max_progress_field" - } - ] - } - }, - "_dynamicDependencies": { - "@local.progress_field": [ - "parameter_list.progress_field" - ], - "@local.max_progress_field": [ - "parameter_list.max_progress_field" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_stepper.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_stepper_step_1.json b/packages/app-data/sheets/template/debug/debug_stepper_step_1.json deleted file mode 100644 index 4bc93c876e..0000000000 --- a/packages/app-data/sheets/template/debug/debug_stepper_step_1.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_stepper_step_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Step 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "This is the first step in the nav_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "nav_buttons" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_stepper.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_stepper_step_2.json b/packages/app-data/sheets/template/debug/debug_stepper_step_2.json deleted file mode 100644 index af7f3a370c..0000000000 --- a/packages/app-data/sheets/template/debug/debug_stepper_step_2.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_stepper_step_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Step 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "This is the second step in the nav_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "nav_buttons" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_stepper.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_stepper_step_3.json b/packages/app-data/sheets/template/debug/debug_stepper_step_3.json deleted file mode 100644 index a10ef19711..0000000000 --- a/packages/app-data/sheets/template/debug/debug_stepper_step_3.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_stepper_step_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Step 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "This is the third step in the nav_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "nav_buttons" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_stepper.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_stepper_step_4.json b/packages/app-data/sheets/template/debug/debug_stepper_step_4.json deleted file mode 100644 index 1eafea4b40..0000000000 --- a/packages/app-data/sheets/template/debug/debug_stepper_step_4.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_stepper_step_4", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Step 4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text", - "value": "This is the fourth and last step in the nav_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [], - "_nested_name": "nav_buttons" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_stepper.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text.json b/packages/app-data/sheets/template/debug/debug_text.json deleted file mode 100644 index bb36cbf358..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Some text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text_and_blank_child_1.json b/packages/app-data/sheets/template/debug/debug_text_and_blank_child_1.json deleted file mode 100644 index a96c436562..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text_and_blank_child_1.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text_and_blank_child_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "Initial text", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "type": "template", - "name": "subtemplate_1", - "rows": [], - "_nested_name": "subtemplate_1" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nested_same_name.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text_and_blank_child_2.json b/packages/app-data/sheets/template/debug/debug_text_and_blank_child_2.json deleted file mode 100644 index f2ab9b8672..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text_and_blank_child_2.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text_and_blank_child_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "Initial text", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "type": "template", - "name": "subtemplate_2", - "rows": [], - "_nested_name": "subtemplate_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nested_same_name.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text_paragraphs.json b/packages/app-data/sheets/template/debug/debug_text_paragraphs.json deleted file mode 100644 index 379b4e1bf0..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text_paragraphs.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text_paragraphs", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Spacing between two paragraphs of text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_1_a", - "value": "This is the first line in the first paragraph\nThis is the second line in the first paragraph.\n\nThis is the first line in the second paragraph\nThis is the second line in the second paragraph.\n\nThis is the first line in the third paragraph", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1_a" - }, - { - "type": "title", - "name": "title_2", - "value": "Spacing in and around bulleted lists", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_2", - "value": "This text is followed by a bulleted list. \n- First item\n- Second item\nSecond line of second item\n- Third item\n\nText below the bulleted list.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_paragraphs.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text_wrapping.json b/packages/app-data/sheets/template/debug/debug_text_wrapping.json deleted file mode 100644 index a43c7e08d1..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text_wrapping.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text_wrapping", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "thisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimes", - "_translations": { - "value": {} - }, - "style_list": [ - "overflow-wrap: anywhere" - ], - "_nested_name": "text" - }, - { - "type": "button", - "name": "button", - "value": "pop-up", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "debug_text_wrapping_popup" - ], - "_raw": "click | pop_up:debug_text_wrapping_popup", - "_cleaned": "click | pop_up:debug_text_wrapping_popup" - } - ], - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_text_wrapping.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_text_wrapping_popup.json b/packages/app-data/sheets/template/debug/debug_text_wrapping_popup.json deleted file mode 100644 index 8fe15678c0..0000000000 --- a/packages/app-data/sheets/template/debug/debug_text_wrapping_popup.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_text_wrapping_popup", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "thisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimesthisisaverylongstringwithoutobviousbreakpointstowraprepeatedmultipletimes", - "_translations": { - "value": {} - }, - "style_list": [ - "overflow-wrap: anywhere" - ], - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_text_wrapping.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_tile_text.json b/packages/app-data/sheets/template/debug/debug_tile_text.json deleted file mode 100644 index 3e23d08a7a..0000000000 --- a/packages/app-data/sheets/template/debug/debug_tile_text.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_tile_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "All the tiles in the display group below should be the same height. \n\nText in the tiles below should be vertically centred, not fixed to top. You can see how the text in the tiles with short text is not vertically centred.", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "type": "display_group", - "name": "tool_tiles", - "exclude_from_translation": true, - "parameter_list": { - "style": "two_columns" - }, - "rows": [ - { - "type": "tile_component", - "name": "tile_1", - "exclude_from_translation": true, - "parameter_list": { - "style": "image_text", - "first_line_text": "short text", - "icon_src": "@data.workshop.w_1on1.image_asset" - }, - "_nested_name": "tool_tiles.tile_1", - "_dynamicFields": { - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@data.workshop.w_1on1.image_asset", - "matchedExpression": "@data.workshop.w_1on1.image_asset", - "type": "data", - "fieldName": "workshop" - } - ] - } - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.image_asset": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_2", - "exclude_from_translation": true, - "parameter_list": { - "style": "image_text", - "first_line_text": "This is a very long text that should wrap into several lines within the tile component. Please go through this", - "icon_src": "@data.workshop.w_1on1.image_asset" - }, - "_nested_name": "tool_tiles.tile_2", - "_dynamicFields": { - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@data.workshop.w_1on1.image_asset", - "matchedExpression": "@data.workshop.w_1on1.image_asset", - "type": "data", - "fieldName": "workshop" - } - ] - } - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.image_asset": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_3", - "exclude_from_translation": true, - "parameter_list": { - "style": "image_text", - "first_line_text": "short text", - "icon_src": "@data.workshop.w_1on1.image_asset" - }, - "_nested_name": "tool_tiles.tile_3", - "_dynamicFields": { - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@data.workshop.w_1on1.image_asset", - "matchedExpression": "@data.workshop.w_1on1.image_asset", - "type": "data", - "fieldName": "workshop" - } - ] - } - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.image_asset": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "tile_4", - "exclude_from_translation": true, - "parameter_list": { - "style": "image_text", - "first_line_text": "short text", - "icon_src": "@data.workshop.w_1on1.image_asset" - }, - "_nested_name": "tool_tiles.tile_4", - "_dynamicFields": { - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@data.workshop.w_1on1.image_asset", - "matchedExpression": "@data.workshop.w_1on1.image_asset", - "type": "data", - "fieldName": "workshop" - } - ] - } - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.image_asset": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "tool_tiles" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_tile_text.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_timer_icons_1.json b/packages/app-data/sheets/template/debug/debug_timer_icons_1.json deleted file mode 100644 index 4a42c4d4fc..0000000000 --- a/packages/app-data/sheets/template/debug/debug_timer_icons_1.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_timer_icons_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "timer", - "name": "timer", - "exclude_from_translation": true, - "parameter_list": { - "duration_extension": "1", - "duration": "10" - }, - "_nested_name": "timer" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_tour_template.json b/packages/app-data/sheets/template/debug/debug_tour_template.json deleted file mode 100644 index b9b58d7efb..0000000000 --- a/packages/app-data/sheets/template/debug/debug_tour_template.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_tour_template", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Debug Tour", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "button", - "name": "button", - "value": "Go to debug_tour", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "start_tour", - "args": [ - "debug_tour" - ], - "_raw": "click | start_tour: debug_tour", - "_cleaned": "click | start_tour: debug_tour" - } - ], - "_nested_name": "button" - }, - { - "type": "text", - "name": "text_1", - "value": "global: @global.parent_app", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "global: @global.parent_app", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "data: @data.example.example1.text", - "_translations": { - "value": {} - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "data: @data.example.example1.text", - "matchedExpression": "@data.example.example1.text", - "type": "data", - "fieldName": "example" - } - ] - }, - "_dynamicDependencies": { - "@data.example.example1.text": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_tour.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_translation_global.json b/packages/app-data/sheets/template/debug/debug_translation_global.json deleted file mode 100644 index c752159723..0000000000 --- a/packages/app-data/sheets/template/debug/debug_translation_global.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_translation_global", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "The translation of the following strings exists but is not found", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "You can always find these tools in the @global.parent_centre", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You can always find these tools in the @global.parent_centre", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Welcome @fields.user_name", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Welcome @fields.user_name", - "matchedExpression": "@fields.user_name", - "type": "fields", - "fieldName": "user_name" - } - ] - }, - "_dynamicDependencies": { - "@fields.user_name": [ - "value" - ] - } - }, - { - "type": "button", - "name": "force_reprocess", - "value": "Force Reprocess", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "click | emit: force_reprocess", - "_cleaned": "click | emit: force_reprocess" - } - ], - "_nested_name": "force_reprocess" - }, - { - "type": "button", - "name": "force_reload", - "value": "Force Reload", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "force_reload" - ], - "_raw": "click | emit: force_reload", - "_cleaned": "click | emit: force_reload" - } - ], - "_nested_name": "force_reload" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_translation.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_translation_radio_group.json b/packages/app-data/sheets/template/debug/debug_translation_radio_group.json deleted file mode 100644 index ac89cbeb82..0000000000 --- a/packages/app-data/sheets/template/debug/debug_translation_radio_group.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_translation_radio_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "@global.together", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "type": "title", - "name": "text_3", - "value": "Radio group with globals (doesn't work)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_3" - }, - { - "name": "answer_list_1", - "value": [ - "name: individual | text: @global.individual", - "name: together | text: @global.together" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: individual | text: @global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ], - "1": [ - { - "fullExpression": "name: together | text: @global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - } - }, - "_dynamicDependencies": { - "@global.individual": [ - "value.0" - ], - "@global.together": [ - "value.1" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_1", - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "title", - "name": "text_4", - "value": "Radio group with locals (works)", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_4" - }, - { - "name": "individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "together", - "value": "@global.together", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "together", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "answer_list_2", - "value": [ - "name: individual | text: @local.individual", - "name: together | text: @local.together" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: individual | text: @local.individual", - "matchedExpression": "@local.individual", - "type": "local", - "fieldName": "individual" - } - ], - "1": [ - { - "fullExpression": "name: together | text: @local.together", - "matchedExpression": "@local.together", - "type": "local", - "fieldName": "together" - } - ] - } - }, - "_dynamicDependencies": { - "@local.individual": [ - "value.0" - ], - "@local.together": [ - "value.1" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_2", - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_translation.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_translation_tile.json b/packages/app-data/sheets/template/debug/debug_translation_tile.json deleted file mode 100644 index 95582a9736..0000000000 --- a/packages/app-data/sheets/template/debug/debug_translation_tile.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_translation_tile", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "quick_start_campaign", - "value": "@campaign.workshop_quick_start", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "quick_start_campaign", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@campaign.workshop_quick_start", - "matchedExpression": "@campaign.workshop_quick_start", - "type": "campaign", - "fieldName": "workshop_quick_start" - } - ] - }, - "_dynamicDependencies": { - "@campaign.workshop_quick_start": [ - "value" - ] - } - }, - { - "name": "start_or_continue", - "value": "@local.quick_start_campaign.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "start_or_continue", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.quick_start_campaign.text", - "matchedExpression": "@local.quick_start_campaign.text", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - }, - "_dynamicDependencies": { - "@local.quick_start_campaign.text": [ - "value" - ] - } - }, - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "The text on the first tile is set through locals. Translations are found.", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_1" - }, - { - "type": "tile_component", - "name": "tile_1", - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@local.start_or_continue", - "second_line_text": "@local.label_individual" - }, - "_nested_name": "tile_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.start_or_continue", - "matchedExpression": "@local.start_or_continue", - "type": "local", - "fieldName": "start_or_continue" - } - ], - "second_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.start_or_continue": [ - "parameter_list.first_line_text" - ], - "@local.label_individual": [ - "parameter_list.second_line_text" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "The text on the second tile is set through globals and a (local) data item in the parameter list. Translations are not found.", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_2" - }, - { - "type": "tile_component", - "name": "tile_2", - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@local.quick_start_campaign.text", - "second_line_text": "@global.individual" - }, - "_nested_name": "tile_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.quick_start_campaign.text", - "matchedExpression": "@local.quick_start_campaign.text", - "type": "local", - "fieldName": "quick_start_campaign" - } - ], - "second_line_text": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.quick_start_campaign.text": [ - "parameter_list.first_line_text" - ], - "@global.individual": [ - "parameter_list.second_line_text" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_translation.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_translation_trim.json b/packages/app-data/sheets/template/debug/debug_translation_trim.json deleted file mode 100644 index bd04e26766..0000000000 --- a/packages/app-data/sheets/template/debug/debug_translation_trim.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_translation_trim", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "The translation of the following string exists and works correctly:", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Sometimes our children make us really upset.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "text_2" - }, - { - "type": "text", - "name": "text_3", - "value": "The translation of the same string, **followed by a space**, is not found:", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "Sometimes our children make us really upset.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "text_4" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_translation.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_two_texts.json b/packages/app-data/sheets/template/debug/debug_two_texts.json deleted file mode 100644 index 3ca11e4e4c..0000000000 --- a/packages/app-data/sheets/template/debug/debug_two_texts.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_two_texts", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "child_local_variable", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "child_local_variable" - }, - { - "type": "text", - "name": "child_text_1", - "value": "Failed: \"text_1\" has not been overwritten", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "child_text_1" - }, - { - "type": "text", - "name": "child_text_from_local_variable", - "value": "@local.child_local_variable", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "@local.child_local_variable" - ], - "_raw": "click | emit:@local.child_local_variable", - "_cleaned": "click | emit:@local.child_local_variable" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "key_1": "@local.child_local_variable" - }, - "_nested_name": "child_text_from_local_variable", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.child_local_variable", - "matchedExpression": "@local.child_local_variable", - "type": "local", - "fieldName": "child_local_variable" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.child_local_variable", - "matchedExpression": "@local.child_local_variable", - "type": "local", - "fieldName": "child_local_variable" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | emit:@local.child_local_variable", - "matchedExpression": "@local.child_local_variable", - "type": "local", - "fieldName": "child_local_variable" - } - ], - "_cleaned": [ - { - "fullExpression": "click | emit:@local.child_local_variable", - "matchedExpression": "@local.child_local_variable", - "type": "local", - "fieldName": "child_local_variable" - } - ] - } - }, - "parameter_list": { - "key_1": [ - { - "fullExpression": "@local.child_local_variable", - "matchedExpression": "@local.child_local_variable", - "type": "local", - "fieldName": "child_local_variable" - } - ] - } - }, - "_dynamicDependencies": { - "@local.child_local_variable": [ - "value", - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned", - "parameter_list.key_1" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_child_1.json b/packages/app-data/sheets/template/debug/debug_update_child_1.json deleted file mode 100644 index 90ef3c331a..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_child_1.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_child_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "radio_group_final", - "value": "radio_group_final_temp", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "radio_group_final" - }, - { - "name": "answer_list", - "value": [ - "name:option_1 | text: Option 1", - "name: option_2 | text: Option 2" - ], - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "options_per_row", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "type": "radio_group", - "name": "radio_group", - "parameter_list": { - "answer_list": "@local.answer_list", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Local variable: @local.radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local variable: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - }, - { - "name": "show_first_template", - "value": "@local.radio_group == \"option_1\"", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "show_first_template", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group == \"option_1\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - }, - { - "type": "template", - "name": "example_text_button_1", - "value": "example_text_button", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "example_text_option_1" - ], - "_raw": "completed | pop_up : example_text_option_1", - "_cleaned": "completed | pop_up : example_text_option_1" - } - ], - "condition": "@local.show_first_template", - "rows": [ - { - "name": "text", - "value": "You selected option 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text_button_1.text" - } - ], - "_nested_name": "example_text_button_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.show_first_template", - "matchedExpression": "@local.show_first_template", - "type": "local", - "fieldName": "show_first_template" - } - ] - }, - "_dynamicDependencies": { - "@local.show_first_template": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "example_text_button_2", - "value": "example_text_button", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "example_text_option_2" - ], - "_raw": "completed | pop_up : example_text_option_2", - "_cleaned": "completed | pop_up : example_text_option_2" - } - ], - "condition": "!@local.show_first_template", - "rows": [ - { - "name": "text", - "value": "You selected option 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text_button_2.text" - } - ], - "_nested_name": "example_text_button_2", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.show_first_template", - "matchedExpression": "!@local.show_first_template", - "type": "local", - "fieldName": "show_first_template" - } - ] - }, - "_dynamicDependencies": { - "!@local.show_first_template": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "example_text", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "Local variable: @local.radio_group", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local variable: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - } - ], - "_nested_name": "example_text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_child_2_a.json b/packages/app-data/sheets/template/debug/debug_update_child_2_a.json deleted file mode 100644 index 51752fc5c5..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_child_2_a.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_child_2_a", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "radio_group_final", - "value": "radio_group_final_temp", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "radio_group_final" - }, - { - "name": "answer_list", - "value": [ - "name:option_1 | text: Option 1", - "name: option_2 | text: Option 2" - ], - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "options_per_row", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "type": "radio_group", - "name": "radio_group", - "parameter_list": { - "answer_list": "@local.answer_list", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Local variable: @local.radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Local variable: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - }, - { - "type": "template", - "name": "debug_update_child_2_b", - "value": "debug_update_child_2_b", - "rows": [ - { - "name": "show_first_template", - "value": "@local.radio_group == \"option_1\"", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "debug_update_child_2_b.show_first_template", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group == \"option_1\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - } - ], - "_nested_name": "debug_update_child_2_b" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_child_2_b.json b/packages/app-data/sheets/template/debug/debug_update_child_2_b.json deleted file mode 100644 index 4b11263c91..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_child_2_b.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_child_2_b", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "show_first_template", - "value": true, - "type": "set_variable", - "_nested_name": "show_first_template" - }, - { - "type": "template", - "name": "example_text_button_1", - "value": "example_text_button", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "example_text_option_1" - ], - "_raw": "completed | pop_up : example_text_option_1", - "_cleaned": "completed | pop_up : example_text_option_1" - } - ], - "condition": "@local.show_first_template", - "rows": [ - { - "name": "text", - "value": "You selected option 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text_button_1.text" - } - ], - "_nested_name": "example_text_button_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.show_first_template", - "matchedExpression": "@local.show_first_template", - "type": "local", - "fieldName": "show_first_template" - } - ] - }, - "_dynamicDependencies": { - "@local.show_first_template": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "example_text_button_2", - "value": "example_text_button", - "action_list": [ - { - "trigger": "completed", - "action_id": "pop_up", - "args": [ - "example_text_option_2" - ], - "_raw": "completed | pop_up : example_text_option_2", - "_cleaned": "completed | pop_up : example_text_option_2" - } - ], - "condition": "!@local.show_first_template", - "rows": [ - { - "name": "text", - "value": "You selected option 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text_button_2.text" - } - ], - "_nested_name": "example_text_button_2", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.show_first_template", - "matchedExpression": "!@local.show_first_template", - "type": "local", - "fieldName": "show_first_template" - } - ] - }, - "_dynamicDependencies": { - "!@local.show_first_template": [ - "condition" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_sibling_1.json b/packages/app-data/sheets/template/debug/debug_update_sibling_1.json deleted file mode 100644 index 660468f619..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_sibling_1.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_sibling_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "pair", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "debug_radio_group_2", - "rows": [], - "_nested_name": "pair.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "example_text_button", - "rows": [ - { - "name": "text", - "value": "Condition evaluates as option 1.\n\nValue of field: @fields.radio_group_final_temp", - "_translations": { - "value": {} - }, - "condition": "@fields.radio_group_final_temp == \"option_1\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "pair.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Condition evaluates as option 1.\n\nValue of field: @fields.radio_group_final_temp", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ], - "condition": [ - { - "fullExpression": "@fields.radio_group_final_temp == \"option_1\"", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ] - }, - "_dynamicDependencies": { - "@fields.radio_group_final_temp": [ - "value", - "condition" - ] - } - }, - { - "name": "text", - "value": "Condition evaluates as option 2.\n\nValue of field: @fields.radio_group_final_temp", - "_translations": { - "value": {} - }, - "condition": "@fields.radio_group_final_temp == \"option_2\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "pair.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Condition evaluates as option 2.\n\nValue of field: @fields.radio_group_final_temp", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ], - "condition": [ - { - "fullExpression": "@fields.radio_group_final_temp == \"option_2\"", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ] - }, - "_dynamicDependencies": { - "@fields.radio_group_final_temp": [ - "value", - "condition" - ] - } - }, - { - "name": "button", - "value": "Emit uncompleted", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "click | emit:uncompleted", - "_cleaned": "click | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "pair.box_2.button" - } - ], - "_nested_name": "pair.box_2" - } - ], - "_nested_name": "pair" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_sibling_2_a.json b/packages/app-data/sheets/template/debug/debug_update_sibling_2_a.json deleted file mode 100644 index ac4ce4a469..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_sibling_2_a.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_sibling_2_a", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "pair", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "debug_radio_group_2", - "rows": [], - "_nested_name": "pair.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "debug_update_sibling_2_b", - "rows": [], - "_nested_name": "pair.box_2" - } - ], - "_nested_name": "pair" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_update_sibling_2_b.json b/packages/app-data/sheets/template/debug/debug_update_sibling_2_b.json deleted file mode 100644 index be272d04c1..0000000000 --- a/packages/app-data/sheets/template/debug/debug_update_sibling_2_b.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_update_sibling_2_b", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "example_text_button", - "value": "example_text_button", - "action_list": [ - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "local_var", - "value": "@fields.radio_group_final_temp", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_text_button.local_var", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.radio_group_final_temp", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ] - }, - "_dynamicDependencies": { - "@fields.radio_group_final_temp": [ - "value" - ] - } - }, - { - "name": "text", - "value": "Condition evaluates as option 1.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "_translations": { - "value": {} - }, - "condition": "@fields.radio_group_final_temp == \"option_1\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Condition evaluates as option 1.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - }, - { - "fullExpression": "Condition evaluates as option 1.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "matchedExpression": "@local.local_var", - "type": "local", - "fieldName": "local_var" - } - ], - "condition": [ - { - "fullExpression": "@fields.radio_group_final_temp == \"option_1\"", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ] - }, - "_dynamicDependencies": { - "@fields.radio_group_final_temp": [ - "value", - "condition" - ], - "@local.local_var": [ - "value" - ] - } - }, - { - "name": "text", - "value": "Condition evaluates as option 2.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "_translations": { - "value": {} - }, - "condition": "@fields.radio_group_final_temp == \"option_2\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Condition evaluates as option 2.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - }, - { - "fullExpression": "Condition evaluates as option 2.\n\nValue of field: @fields.radio_group_final_temp \nValue of local that follows field: @local.local_var", - "matchedExpression": "@local.local_var", - "type": "local", - "fieldName": "local_var" - } - ], - "condition": [ - { - "fullExpression": "@fields.radio_group_final_temp == \"option_2\"", - "matchedExpression": "@fields.radio_group_final_temp", - "type": "fields", - "fieldName": "radio_group_final_temp" - } - ] - }, - "_dynamicDependencies": { - "@fields.radio_group_final_temp": [ - "value", - "condition" - ], - "@local.local_var": [ - "value" - ] - } - }, - { - "name": "button", - "value": "Emit uncompleted", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "click | emit:uncompleted", - "_cleaned": "click | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.button" - } - ], - "_nested_name": "example_text_button" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_var_hyphen.json b/packages/app-data/sheets/template/debug/debug_var_hyphen.json deleted file mode 100644 index 2e293920a7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_var_hyphen.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_var_hyphen", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "@global.parent_app-based learning", - "_translations": { - "value": {} - }, - "_nested_name": "title_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.parent_app-based learning", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Works in gb_en", - "_translations": { - "value": {} - }, - "_nested_name": "text_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Your @global.parent_app Code", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "_nested_name": "title_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your @global.parent_app Code", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Works in gb_en and in za_af", - "_translations": { - "value": {} - }, - "_nested_name": "text_2" - }, - { - "type": "button", - "name": "button", - "value": "Launch tour", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "start_tour", - "args": [ - "debug_tour_var_hyphen" - ], - "_raw": "click | start_tour: debug_tour_var_hyphen", - "_cleaned": "click | start_tour: debug_tour_var_hyphen" - } - ], - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list.json b/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list.json deleted file mode 100644 index c365e32f3d..0000000000 --- a/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_var_in_bulleted_list", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "List with last item global", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_1", - "value": "- First item\n- @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "- First item\n- @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_2", - "value": "List with first item global", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_2", - "value": "- @global.savings_option_1\n- Second item", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "- @global.savings_option_1\n- Second item", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_3", - "value": "List with only global", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "text", - "name": "text_3", - "value": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_4", - "value": "List with only global and a bit of text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_4" - }, - { - "type": "text", - "name": "text_4", - "value": "This is a bit of text before the list\n- @global.savings_option_1\n- @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a bit of text before the list\n- @global.savings_option_1\n- @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "This is a bit of text before the list\n- @global.savings_option_1\n- @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_5", - "value": "List with only global using *", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_5" - }, - { - "type": "text", - "name": "text_5", - "value": "* @global.savings_option_1\n* @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_6", - "value": "Ordered lists (hardcoded)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_6" - }, - { - "type": "text", - "name": "text_6", - "value": "1. @global.savings_option_1\nsome text as a second line\n2. @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "1. @global.savings_option_1\nsome text as a second line\n2. @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "1. @global.savings_option_1\nsome text as a second line\n2. @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_7", - "value": "Ordered lists (automated)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_7" - }, - { - "type": "text", - "name": "text_7", - "value": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "numbered" - }, - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "\"- \"+@global.savings_option_1\n\"- \"+@global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_var_in_bulleted_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list_2.json b/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list_2.json deleted file mode 100644 index 27ad024371..0000000000 --- a/packages/app-data/sheets/template/debug/debug_var_in_bulleted_list_2.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_var_in_bulleted_list_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "List with last item global", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_1", - "value": "* First item\n* @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "* First item\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_2", - "value": "List with first item global", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "text", - "name": "text_2", - "value": "* @global.savings_option_1\n* Second item", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "* @global.savings_option_1\n* Second item", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_4", - "value": "List with only global and a bit of text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_4" - }, - { - "type": "text", - "name": "text_4", - "value": "This is a bit of text before the list\n* @global.savings_option_1\n* @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a bit of text before the list\n* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "This is a bit of text before the list\n* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_5", - "value": "List with only global using *", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_5" - }, - { - "type": "text", - "name": "text_5", - "value": "* @global.savings_option_1\n* @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "* @global.savings_option_1\n* @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_6", - "value": "Ordered lists (hardcoded)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_6" - }, - { - "type": "text", - "name": "text_6", - "value": "1. @global.savings_option_1\n2. @global.savings_option_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "1. @global.savings_option_1\n2. @global.savings_option_2", - "matchedExpression": "@global.savings_option_1", - "type": "global", - "fieldName": "savings_option_1" - }, - { - "fullExpression": "1. @global.savings_option_1\n2. @global.savings_option_2", - "matchedExpression": "@global.savings_option_2", - "type": "global", - "fieldName": "savings_option_2" - } - ] - }, - "_dynamicDependencies": { - "@global.savings_option_1": [ - "value" - ], - "@global.savings_option_2": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_var_in_bulleted_list.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_variable_type.json b/packages/app-data/sheets/template/debug/debug_variable_type.json deleted file mode 100644 index 1873008ded..0000000000 --- a/packages/app-data/sheets/template/debug/debug_variable_type.json +++ /dev/null @@ -1,734 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_variable_type", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_variable", - "name": "var_counter", - "value": 1, - "exclude_from_translation": true, - "_nested_name": "var_counter" - }, - { - "type": "set_variable", - "name": "var_counter_calc", - "value": "10*@local.var_counter", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_counter_calc", - "_dynamicFields": { - "value": [ - { - "fullExpression": "10*@local.var_counter", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ] - }, - "_dynamicDependencies": { - "@local.var_counter": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_counter_addition", - "value": "@local.var_counter + @local.var_counter", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_counter_addition", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_counter + @local.var_counter", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - }, - { - "fullExpression": "@local.var_counter + @local.var_counter", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ] - }, - "_dynamicDependencies": { - "@local.var_counter": [ - "value", - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_bool_true", - "value": "@data.debug_vars.bool_true.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_bool_true", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug_vars.bool_true.value", - "matchedExpression": "@data.debug_vars.bool_true.value", - "type": "data", - "fieldName": "debug_vars" - } - ] - }, - "_dynamicDependencies": { - "@data.debug_vars.bool_true.value": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_recursive_lookup", - "value": "@local.var_bool_true", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_recursive_lookup", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_bool_true", - "matchedExpression": "@local.var_bool_true", - "type": "local", - "fieldName": "var_bool_true" - } - ] - }, - "_dynamicDependencies": { - "@local.var_bool_true": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_dynamic_nested_name", - "value": "var_bool_true", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_dynamic_nested_name" - }, - { - "type": "set_variable", - "name": "var_dynamic_nested", - "value": "@local.@local.var_dynamic_nested_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_dynamic_nested", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.@local.var_dynamic_nested_name", - "matchedExpression": "@local.var_dynamic_nested_name", - "type": "local", - "fieldName": "var_dynamic_nested_name" - } - ] - }, - "_dynamicDependencies": { - "@local.var_dynamic_nested_name": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_bool_false", - "value": "@data.debug_vars.bool_false.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_bool_false", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug_vars.bool_false.value", - "matchedExpression": "@data.debug_vars.bool_false.value", - "type": "data", - "fieldName": "debug_vars" - } - ] - }, - "_dynamicDependencies": { - "@data.debug_vars.bool_false.value": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_number_0", - "value": "@data.debug_vars.number_0.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_number_0", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug_vars.number_0.value", - "matchedExpression": "@data.debug_vars.number_0.value", - "type": "data", - "fieldName": "debug_vars" - } - ] - }, - "_dynamicDependencies": { - "@data.debug_vars.number_0.value": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_list_1", - "value": [ - "@data.debug_vars.list_1.value_list" - ], - "exclude_from_translation": true, - "_nested_name": "var_list_1", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "@data.debug_vars.list_1.value_list", - "matchedExpression": "@data.debug_vars.list_1.value_list", - "type": "data", - "fieldName": "debug_vars" - } - ] - } - }, - "_dynamicDependencies": { - "@data.debug_vars.list_1.value_list": [ - "value.0" - ] - } - }, - { - "type": "set_variable", - "name": "var_list_1_length", - "value": [ - "@local.var_list_1.length" - ], - "exclude_from_translation": true, - "_nested_name": "var_list_1_length", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "@local.var_list_1.length", - "matchedExpression": "@local.var_list_1.length", - "type": "local", - "fieldName": "var_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.var_list_1.length": [ - "value.0" - ] - } - }, - { - "type": "set_variable", - "name": "var_text_1", - "value": "@data.debug_vars.text_1.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug_vars.text_1.value", - "matchedExpression": "@data.debug_vars.text_1.value", - "type": "data", - "fieldName": "debug_vars" - } - ] - }, - "_dynamicDependencies": { - "@data.debug_vars.text_1.value": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "global_text", - "value": "@global.debug_variable_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.debug_variable_1", - "matchedExpression": "@global.debug_variable_1", - "type": "global", - "fieldName": "debug_variable_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_variable_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "List length Test: @local.var_list_1_length", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "List length Test: @local.var_list_1_length", - "matchedExpression": "@local.var_list_1_length", - "type": "local", - "fieldName": "var_list_1_length" - } - ] - }, - "_dynamicDependencies": { - "@local.var_list_1_length": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4wrong", - "value": "Expected fail calculation: 10*@local.var_counter", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4wrong", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Expected fail calculation: 10*@local.var_counter", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ] - }, - "_dynamicDependencies": { - "@local.var_counter": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4right", - "value": "Expected pass calculation: @local.var_counter_calc", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4right", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Expected pass calculation: @local.var_counter_calc", - "matchedExpression": "@local.var_counter_calc", - "type": "local", - "fieldName": "var_counter_calc" - } - ] - }, - "_dynamicDependencies": { - "@local.var_counter_calc": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Basic Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5" - }, - { - "type": "text", - "name": "text_6", - "value": "Multiple values: @local.var_bool_true and @local.var_bool_false", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Multiple values: @local.var_bool_true and @local.var_bool_false", - "matchedExpression": "@local.var_bool_true", - "type": "local", - "fieldName": "var_bool_true" - }, - { - "fullExpression": "Multiple values: @local.var_bool_true and @local.var_bool_false", - "matchedExpression": "@local.var_bool_false", - "type": "local", - "fieldName": "var_bool_false" - } - ] - }, - "_dynamicDependencies": { - "@local.var_bool_true": [ - "value" - ], - "@local.var_bool_false": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "Recursive lookup: @local.var_recursive_lookup", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Recursive lookup: @local.var_recursive_lookup", - "matchedExpression": "@local.var_recursive_lookup", - "type": "local", - "fieldName": "var_recursive_lookup" - } - ] - }, - "_dynamicDependencies": { - "@local.var_recursive_lookup": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_dynamic_nested", - "value": "Dynamic nested pass: @local.var_dynamic_nested", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_dynamic_nested", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Dynamic nested pass: @local.var_dynamic_nested", - "matchedExpression": "@local.var_dynamic_nested", - "type": "local", - "fieldName": "var_dynamic_nested" - } - ] - }, - "_dynamicDependencies": { - "@local.var_dynamic_nested": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_number_1_increment", - "value": "Counter value: @local.var_counter", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "var_counter", - "@local.var_counter+ 1" - ], - "_raw": "click | set_local:var_counter:@local.var_counter+ 1", - "_cleaned": "click | set_local:var_counter:@local.var_counter+ 1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_number_1_increment", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Counter value: @local.var_counter", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ], - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.var_counter+ 1", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_local:var_counter:@local.var_counter+ 1", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_local:var_counter:@local.var_counter+ 1", - "matchedExpression": "@local.var_counter", - "type": "local", - "fieldName": "var_counter" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.var_counter": [ - "value", - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "TODO - nested rows", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_7" - }, - { - "type": "text", - "name": "text_8", - "value": "Expected: global.debug_variable_1 lookup\nResult: @local.global_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Expected: global.debug_variable_1 lookup\nResult: @local.global_text", - "matchedExpression": "@local.global_text", - "type": "local", - "fieldName": "global_text" - } - ] - }, - "_dynamicDependencies": { - "@local.global_text": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_9", - "value": "Global text test: @global.debug_variable_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_9", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Global text test: @global.debug_variable_1", - "matchedExpression": "@global.debug_variable_1", - "type": "global", - "fieldName": "debug_variable_1" - } - ] - }, - "_dynamicDependencies": { - "@global.debug_variable_1": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_col_1", - "value": "@data.debug_vars.collection_1.value_collection", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_col_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.debug_vars.collection_1.value_collection", - "matchedExpression": "@data.debug_vars.collection_1.value_collection", - "type": "data", - "fieldName": "debug_vars" - } - ] - }, - "_dynamicDependencies": { - "@data.debug_vars.collection_1.value_collection": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "var_col_1_key1", - "value": "@local.var_col_1.key1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "var_col_1_key1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_col_1.key1", - "matchedExpression": "@local.var_col_1.key1", - "type": "local", - "fieldName": "var_col_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_col_1.key1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_col", - "value": "col_1 (object): @local.var_col_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_col", - "_dynamicFields": { - "value": [ - { - "fullExpression": "col_1 (object): @local.var_col_1", - "matchedExpression": "@local.var_col_1", - "type": "local", - "fieldName": "var_col_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_col_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_col_key", - "value": "key1: @local.var_col_1_key1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_col_key", - "_dynamicFields": { - "value": [ - { - "fullExpression": "key1: @local.var_col_1_key1", - "matchedExpression": "@local.var_col_1_key1", - "type": "local", - "fieldName": "var_col_1_key1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_col_1_key1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "test_col_key", - "value": "@local.var_col_1_key1 === \"val1\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "test_col_key", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.var_col_1_key1 === \"val1\"", - "matchedExpression": "@local.var_col_1_key1", - "type": "local", - "fieldName": "var_col_1_key1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_col_1_key1": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_video_1.json b/packages/app-data/sheets/template/debug/debug_video_1.json deleted file mode 100644 index 12445bddd9..0000000000 --- a/packages/app-data/sheets/template/debug/debug_video_1.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_video_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "video", - "name": "video_src", - "value": "plh_video/lets_slow_down.mp4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "video_src" - }, - { - "type": "video", - "name": "video_src", - "value": "https://www.w3schools.com/html/mov_bbb.mp4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "video_src" - }, - { - "type": "text", - "name": "my_text", - "value": "This is My Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "my_text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_small_issues.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_w_accordion_padding.json b/packages/app-data/sheets/template/debug/debug_w_accordion_padding.json deleted file mode 100644 index b6a6e9f855..0000000000 --- a/packages/app-data/sheets/template/debug/debug_w_accordion_padding.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_w_accordion_padding", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "image_group", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "image_individual", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "type": "workshops_accordion", - "name": "workshops_accordion", - "rows": [ - { - "type": "accordion_section", - "name": "fifth", - "parameter_list": { - "title": "Title 1" - }, - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Text 1", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.text_1" - }, - { - "type": "display_group", - "name": "sub", - "rows": [ - { - "type": "tile_component", - "name": "sub_1", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "workshops_accordion.fifth.sub.sub_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "sub_2", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "workshops_accordion.fifth.sub.sub_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "workshops_accordion.fifth.sub" - }, - { - "type": "button", - "name": "button_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.button_2" - } - ], - "_nested_name": "workshops_accordion.fifth" - }, - { - "type": "accordion_section", - "name": "sixth", - "parameter_list": { - "title": "Title 2" - }, - "rows": [ - { - "type": "template", - "name": "template", - "value": "debug_w_accordion_section", - "rows": [], - "_nested_name": "workshops_accordion.sixth.template" - } - ], - "_nested_name": "workshops_accordion.sixth" - } - ], - "_nested_name": "workshops_accordion" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_accordion.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_w_accordion_section.json b/packages/app-data/sheets/template/debug/debug_w_accordion_section.json deleted file mode 100644 index 1f3eab4143..0000000000 --- a/packages/app-data/sheets/template/debug/debug_w_accordion_section.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_w_accordion_section", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "image_group", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "image_individual", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Text 1", - "_translations": { - "value": {} - }, - "_nested_name": "text_1" - }, - { - "type": "display_group", - "name": "sub", - "rows": [ - { - "type": "tile_component", - "name": "sub_1", - "parameter_list": { - "first_line_text": "@local.label_individual", - "style": "workshop_page", - "icon_src": "@local.image_individual" - }, - "_nested_name": "sub.sub_1", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_individual", - "matchedExpression": "@local.image_individual", - "type": "local", - "fieldName": "image_individual" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_individual": [ - "parameter_list.first_line_text" - ], - "@local.image_individual": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "sub_2", - "parameter_list": { - "first_line_text": "@local.label_group", - "style": "workshop_page", - "icon_src": "@local.image_group" - }, - "_nested_name": "sub.sub_2", - "_dynamicFields": { - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.label_group", - "matchedExpression": "@local.label_group", - "type": "local", - "fieldName": "label_group" - } - ], - "icon_src": [ - { - "fullExpression": "@local.image_group", - "matchedExpression": "@local.image_group", - "type": "local", - "fieldName": "image_group" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_group": [ - "parameter_list.first_line_text" - ], - "@local.image_group": [ - "parameter_list.icon_src" - ] - } - } - ], - "_nested_name": "sub" - }, - { - "type": "button", - "name": "button_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "_nested_name": "button_2" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_accordion.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_workshop_activity.json b/packages/app-data/sheets/template/debug/debug_workshop_activity.json deleted file mode 100644 index 130c5db0f7..0000000000 --- a/packages/app-data/sheets/template/debug/debug_workshop_activity.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_workshop_activity", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "hide_intro", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "hide_intro" - }, - { - "name": "hide_content", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "hide_content" - }, - { - "type": "animated_section", - "name": "intro", - "hidden": "@local.hide_intro", - "rows": [ - { - "type": "title", - "name": "intro_title", - "value": "Intro", - "_translations": { - "value": {} - }, - "_nested_name": "intro.intro_title" - }, - { - "type": "text", - "name": "intro_text", - "_nested_name": "intro.intro_text" - }, - { - "type": "round_button", - "name": "button_completed_chevron", - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "hide_content", - false - ], - "_raw": "click | set_local:hide_content:false", - "_cleaned": "click | set_local:hide_content:false" - }, - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "hide_intro", - true - ], - "_raw": "click | set_local:hide_intro:true", - "_cleaned": "click | set_local:hide_intro:true" - } - ], - "parameter_list": { - "icon_src": "chevron-forward", - "style": "navigation" - }, - "_nested_name": "intro.button_completed_chevron" - } - ], - "_nested_name": "intro", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_intro", - "matchedExpression": "@local.hide_intro", - "type": "local", - "fieldName": "hide_intro" - } - ] - }, - "_dynamicDependencies": { - "@local.hide_intro": [ - "hidden" - ] - } - }, - { - "type": "animated_section", - "name": "content", - "hidden": "@local.hide_content", - "rows": [ - { - "type": "template", - "name": "content_box", - "rows": [], - "_nested_name": "content.content_box" - }, - { - "type": "round_button", - "name": "button_uncompleted_chevron", - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "hide_intro", - false - ], - "_raw": "click | set_local:hide_intro:false", - "_cleaned": "click | set_local:hide_intro:false" - }, - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "hide_content", - true - ], - "_raw": "click | set_local:hide_content:true", - "_cleaned": "click | set_local:hide_content:true" - } - ], - "parameter_list": { - "icon_src": "chevron-back", - "style": "navigation" - }, - "_nested_name": "content.button_uncompleted_chevron" - } - ], - "_nested_name": "content", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_content", - "matchedExpression": "@local.hide_content", - "type": "local", - "fieldName": "hide_content" - } - ] - }, - "_dynamicDependencies": { - "@local.hide_content": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_workshop_activity_2.json b/packages/app-data/sheets/template/debug/debug_workshop_activity_2.json deleted file mode 100644 index e4557d3483..0000000000 --- a/packages/app-data/sheets/template/debug/debug_workshop_activity_2.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_workshop_activity_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "intro_title", - "value": "Intro", - "_translations": { - "value": {} - }, - "_nested_name": "intro_title" - }, - { - "type": "text", - "name": "intro_text", - "_nested_name": "intro_text" - }, - { - "type": "template", - "name": "content_box", - "rows": [], - "_nested_name": "content_box" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_hp_review_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/debug_wrapper.json b/packages/app-data/sheets/template/debug/debug_wrapper.json deleted file mode 100644 index eb02d9e816..0000000000 --- a/packages/app-data/sheets/template/debug/debug_wrapper.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "debug_wrapper", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "wrapper_template", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "No text to display in wrapper_template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "wrapper_template.text_1" - } - ], - "_nested_name": "wrapper_template" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_nesting_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_accordion.json b/packages/app-data/sheets/template/debug/example_accordion.json deleted file mode 100644 index fd55c6c0b6..0000000000 --- a/packages/app-data/sheets/template/debug/example_accordion.json +++ /dev/null @@ -1,514 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_accordion", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "title_1", - "value": "First title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_1" - }, - { - "name": "text_1", - "value": "Text 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_1" - }, - { - "name": "title_2", - "value": "Second title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_2" - }, - { - "name": "text_2", - "value": "Text 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_2" - }, - { - "name": "button_text_2", - "value": "Button text 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "button_text_2" - }, - { - "name": "title_3", - "value": "Third title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_3" - }, - { - "name": "text_3", - "value": "Text 3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_3" - }, - { - "type": "title", - "name": "section_1", - "value": "Example - open multiple, custom icon", - "_translations": { - "value": {} - }, - "_nested_name": "section_1" - }, - { - "type": "accordion", - "name": "accordion", - "parameter_list": { - "open_icon_src": "add", - "close_icon_src": "remove", - "open_multiple": "true" - }, - "rows": [ - { - "type": "accordion_section", - "name": "first", - "value": "@local.title_1", - "parameter_list": { - "state": "open" - }, - "rows": [ - { - "type": "template", - "name": "template_1", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "@local.text_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "accordion.first.template_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_1", - "matchedExpression": "@local.text_1", - "type": "local", - "fieldName": "text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.text_1": [ - "value" - ] - } - } - ], - "_nested_name": "accordion.first.template_1" - } - ], - "_nested_name": "accordion.first", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_1", - "matchedExpression": "@local.title_1", - "type": "local", - "fieldName": "title_1" - } - ] - }, - "_dynamicDependencies": { - "@local.title_1": [ - "value" - ] - } - }, - { - "type": "accordion_section", - "name": "second", - "value": "@local.title_2", - "rows": [ - { - "type": "template", - "name": "template_2", - "value": "example_text_button", - "rows": [ - { - "name": "text", - "value": "@local.text_2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "accordion.second.template_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_2", - "matchedExpression": "@local.text_2", - "type": "local", - "fieldName": "text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.text_2": [ - "value" - ] - } - }, - { - "name": "button", - "value": "@local.button_text_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "type": "set_variable", - "_nested_name": "accordion.second.template_2.button", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.button_text_2", - "matchedExpression": "@local.button_text_2", - "type": "local", - "fieldName": "button_text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.button_text_2": [ - "value" - ] - } - } - ], - "_nested_name": "accordion.second.template_2" - } - ], - "_nested_name": "accordion.second", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_2", - "matchedExpression": "@local.title_2", - "type": "local", - "fieldName": "title_2" - } - ] - }, - "_dynamicDependencies": { - "@local.title_2": [ - "value" - ] - } - }, - { - "type": "accordion_section", - "name": "third", - "value": "@local.title_3", - "rows": [ - { - "type": "text", - "name": "text", - "value": "@local.text_3", - "_translations": { - "value": {} - }, - "_nested_name": "accordion.third.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_3", - "matchedExpression": "@local.text_3", - "type": "local", - "fieldName": "text_3" - } - ] - }, - "_dynamicDependencies": { - "@local.text_3": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshops/w_rules/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "_nested_name": "accordion.third.image" - } - ], - "_nested_name": "accordion.third", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_3", - "matchedExpression": "@local.title_3", - "type": "local", - "fieldName": "title_3" - } - ] - }, - "_dynamicDependencies": { - "@local.title_3": [ - "value" - ] - } - } - ], - "_nested_name": "accordion" - }, - { - "type": "title", - "name": "section_2", - "value": "Example - default settings", - "_translations": { - "value": {} - }, - "_nested_name": "section_2" - }, - { - "type": "accordion", - "name": "accordion", - "rows": [ - { - "type": "accordion_section", - "name": "first", - "value": "@local.title_1", - "rows": [ - { - "type": "template", - "name": "template_1", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "@local.text_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "accordion.first.template_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_1", - "matchedExpression": "@local.text_1", - "type": "local", - "fieldName": "text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.text_1": [ - "value" - ] - } - } - ], - "_nested_name": "accordion.first.template_1" - } - ], - "_nested_name": "accordion.first", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_1", - "matchedExpression": "@local.title_1", - "type": "local", - "fieldName": "title_1" - } - ] - }, - "_dynamicDependencies": { - "@local.title_1": [ - "value" - ] - } - }, - { - "type": "accordion_section", - "name": "second", - "value": "@local.title_2", - "rows": [ - { - "type": "template", - "name": "template_2", - "value": "example_text_button", - "rows": [ - { - "name": "text", - "value": "@local.text_2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "accordion.second.template_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_2", - "matchedExpression": "@local.text_2", - "type": "local", - "fieldName": "text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.text_2": [ - "value" - ] - } - }, - { - "name": "button", - "value": "@local.button_text_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "type": "set_variable", - "_nested_name": "accordion.second.template_2.button", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.button_text_2", - "matchedExpression": "@local.button_text_2", - "type": "local", - "fieldName": "button_text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.button_text_2": [ - "value" - ] - } - } - ], - "_nested_name": "accordion.second.template_2" - } - ], - "_nested_name": "accordion.second", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_2", - "matchedExpression": "@local.title_2", - "type": "local", - "fieldName": "title_2" - } - ] - }, - "_dynamicDependencies": { - "@local.title_2": [ - "value" - ] - } - }, - { - "type": "accordion_section", - "name": "third", - "value": "@local.title_3", - "rows": [ - { - "type": "text", - "name": "text", - "value": "@local.text_3", - "_translations": { - "value": {} - }, - "_nested_name": "accordion.third.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_3", - "matchedExpression": "@local.text_3", - "type": "local", - "fieldName": "text_3" - } - ] - }, - "_dynamicDependencies": { - "@local.text_3": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshops/w_rules/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "_nested_name": "accordion.third.image" - } - ], - "_nested_name": "accordion.third", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_3", - "matchedExpression": "@local.title_3", - "type": "local", - "fieldName": "title_3" - } - ] - }, - "_dynamicDependencies": { - "@local.title_3": [ - "value" - ] - } - } - ], - "_nested_name": "accordion" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_accordion.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_analytics.json b/packages/app-data/sheets/template/debug/example_analytics.json deleted file mode 100644 index 84ec1a007b..0000000000 --- a/packages/app-data/sheets/template/debug/example_analytics.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_analytics", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "Click to trigger custom analytics events", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_track_event_1", - "value": "Trigger example event", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "track_event", - "args": [ - "example_event" - ], - "_raw": "click | track_event : example_event", - "_cleaned": "click | track_event : example_event" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_track_event_1" - }, - { - "type": "button", - "name": "button_track_event_2", - "value": "Trigger advanced event", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "track_event", - "args": [ - "example_event" - ], - "_raw": "click | track_event : example_event | category:example_events, action:click", - "_cleaned": "click | track_event : example_event | category:example_events, action:click" - } - ], - "condition": false, - "exclude_from_translation": true, - "_nested_name": "button_track_event_2" - }, - { - "type": "text", - "name": "info_1", - "value": "Documentation about the Matomo Analytics platform used can be found at:\nhttps://matomo.org/", - "_translations": { - "value": {} - }, - "_nested_name": "info_1" - }, - { - "type": "text", - "name": "info_2", - "value": "Documentation about the angular integration can be found at:\nhttps://github.com/EmmanuelRoux/ngx-matomo", - "_translations": { - "value": {} - }, - "_nested_name": "info_2" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_analytics.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_audio_player.json b/packages/app-data/sheets/template/debug/example_audio_player.json deleted file mode 100644 index c532f153ac..0000000000 --- a/packages/app-data/sheets/template/debug/example_audio_player.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_audio_player", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "last_played_field", - "value": "debug_test_audio_last_played", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "last_played_field" - }, - { - "type": "text", - "name": "text_1", - "value": "The field @local.last_played_field is the timestamp of the last time the play button on the audio player was clicked.", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The field @local.last_played_field is the timestamp of the last time the play button on the audio player was clicked.", - "matchedExpression": "@local.last_played_field", - "type": "local", - "fieldName": "last_played_field" - } - ] - }, - "_dynamicDependencies": { - "@local.last_played_field": [ - "value" - ] - } - }, - { - "type": "audio", - "name": "audio_1", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "parameter_list": { - "last_played_field": "@local.last_played_field", - "title": "Audio player" - }, - "_nested_name": "audio_1", - "_dynamicFields": { - "parameter_list": { - "last_played_field": [ - { - "fullExpression": "@local.last_played_field", - "matchedExpression": "@local.last_played_field", - "type": "local", - "fieldName": "last_played_field" - } - ] - } - }, - "_dynamicDependencies": { - "@local.last_played_field": [ - "parameter_list.last_played_field" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Value of @local.last_played_field: @fields.@local.last_played_field", - "_translations": { - "value": {} - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of @local.last_played_field: @fields.@local.last_played_field", - "matchedExpression": "@local.last_played_field", - "type": "local", - "fieldName": "last_played_field" - }, - { - "fullExpression": "Value of @local.last_played_field: @fields.@local.last_played_field", - "matchedExpression": "@local.last_played_field", - "type": "local", - "fieldName": "last_played_field" - } - ] - }, - "_dynamicDependencies": { - "@local.last_played_field": [ - "value", - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_audio_player.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_buttons_padding.json b/packages/app-data/sheets/template/debug/example_buttons_padding.json deleted file mode 100644 index d636a36035..0000000000 --- a/packages/app-data/sheets/template/debug/example_buttons_padding.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_buttons_padding", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "tile_component", - "name": "tile_1", - "parameter_list": { - "style": "parent_centre_1", - "first_line_text": "Tile 1" - }, - "_nested_name": "tile_1" - }, - { - "type": "display_group", - "name": "dg_1", - "rows": [ - { - "type": "tile_component", - "name": "tile_2", - "parameter_list": { - "style": "parent_centre_1", - "first_line_text": "Tile 2" - }, - "_nested_name": "dg_1.tile_2" - }, - { - "type": "tile_component", - "name": "tile_3", - "parameter_list": { - "style": "parent_centre_1", - "first_line_text": "Tile 3" - }, - "_nested_name": "dg_1.tile_3" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "display_group", - "name": "dg_1", - "parameter_list": { - "style": "parent_point" - }, - "rows": [ - { - "type": "tile_component", - "name": "tile_2", - "parameter_list": { - "style": "parent_centre_1", - "first_line_text": "Tile 2" - }, - "_nested_name": "dg_1.tile_2" - }, - { - "type": "tile_component", - "name": "tile_3", - "parameter_list": { - "style": "parent_centre_1", - "first_line_text": "Tile 3" - }, - "_nested_name": "dg_1.tile_3" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "button", - "name": "button_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "_nested_name": "button_1" - }, - { - "type": "display_group", - "name": "dg_2", - "rows": [ - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.button_2" - }, - { - "type": "button", - "name": "button_3", - "value": "Button 3", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.button_3" - } - ], - "_nested_name": "dg_2" - }, - { - "type": "display_group", - "name": "dg_2", - "parameter_list": { - "style": "parent_point" - }, - "rows": [ - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.button_2" - }, - { - "type": "button", - "name": "button_3", - "value": "Button 3", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.button_3" - } - ], - "_nested_name": "dg_2" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_buttons.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_calc.json b/packages/app-data/sheets/template/debug/example_calc.json deleted file mode 100644 index 594299bcc1..0000000000 --- a/packages/app-data/sheets/template/debug/example_calc.json +++ /dev/null @@ -1,993 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_calc", - "status": "released", - "rows": [ - { - "type": "title", - "name": "example_1", - "value": "Calc JS Functions", - "_translations": { - "value": {} - }, - "_nested_name": "example_1" - }, - { - "type": "set_variable", - "name": "example_calc_1", - "value": "@calc(Math.floor(Math.random()*7))", - "_translations": { - "value": {} - }, - "_nested_name": "example_calc_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(Math.floor(Math.random()*7))", - "matchedExpression": "@calc(Math.floor(Math.random()*7))", - "type": "calc", - "fieldName": "Math.floor(Math.random()*7)" - } - ] - }, - "_dynamicDependencies": { - "@calc(Math.floor(Math.random()*7))": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "example_calc_2", - "value": "@local.example_calc_1 + 1", - "_translations": { - "value": {} - }, - "_nested_name": "example_calc_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.example_calc_1 + 1", - "matchedExpression": "@local.example_calc_1", - "type": "local", - "fieldName": "example_calc_1" - } - ] - }, - "_dynamicDependencies": { - "@local.example_calc_1": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "example_calc_3", - "value": "@calc(Math.ceil(Math.random()*3))", - "_translations": { - "value": {} - }, - "condition": "!@local.example_calc_3", - "_nested_name": "example_calc_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(Math.ceil(Math.random()*3))", - "matchedExpression": "@calc(Math.ceil(Math.random()*3))", - "type": "calc", - "fieldName": "Math.ceil(Math.random()*3)" - } - ], - "condition": [ - { - "fullExpression": "!@local.example_calc_3", - "matchedExpression": "!@local.example_calc_3", - "type": "local", - "fieldName": "example_calc_3" - } - ] - }, - "_dynamicDependencies": { - "@calc(Math.ceil(Math.random()*3))": [ - "value" - ], - "!@local.example_calc_3": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "calc_1: @local.example_calc_1\ncalc_2: @local.example_calc_2\ncalc_3: @local.example_calc_3 (fixed)", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "calc_1: @local.example_calc_1\ncalc_2: @local.example_calc_2\ncalc_3: @local.example_calc_3 (fixed)", - "matchedExpression": "@local.example_calc_1", - "type": "local", - "fieldName": "example_calc_1" - }, - { - "fullExpression": "calc_1: @local.example_calc_1\ncalc_2: @local.example_calc_2\ncalc_3: @local.example_calc_3 (fixed)", - "matchedExpression": "@local.example_calc_2", - "type": "local", - "fieldName": "example_calc_2" - }, - { - "fullExpression": "calc_1: @local.example_calc_1\ncalc_2: @local.example_calc_2\ncalc_3: @local.example_calc_3 (fixed)", - "matchedExpression": "@local.example_calc_3", - "type": "local", - "fieldName": "example_calc_3" - } - ] - }, - "_dynamicDependencies": { - "@local.example_calc_1": [ - "value" - ], - "@local.example_calc_2": [ - "value" - ], - "@local.example_calc_3": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "example_calc_max", - "value": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "_translations": { - "value": {} - }, - "_nested_name": "example_calc_max", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "matchedExpression": "@local.example_calc_1", - "type": "local", - "fieldName": "example_calc_1" - }, - { - "fullExpression": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "matchedExpression": "@local.example_calc_2", - "type": "local", - "fieldName": "example_calc_2" - }, - { - "fullExpression": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "matchedExpression": "@local.example_calc_3", - "type": "local", - "fieldName": "example_calc_3" - }, - { - "fullExpression": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "matchedExpression": "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))", - "type": "calc", - "fieldName": "Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3)" - } - ] - }, - "_dynamicDependencies": { - "@local.example_calc_1": [ - "value" - ], - "@local.example_calc_2": [ - "value" - ], - "@local.example_calc_3": [ - "value" - ], - "@calc(Math.max(@local.example_calc_1,@local.example_calc_2,@local.example_calc_3))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "The largest number is: @local.example_calc_max", - "_translations": { - "value": {} - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The largest number is: @local.example_calc_max", - "matchedExpression": "@local.example_calc_max", - "type": "local", - "fieldName": "example_calc_max" - } - ] - }, - "_dynamicDependencies": { - "@local.example_calc_max": [ - "value" - ] - } - }, - { - "type": "title", - "name": "example_2", - "value": "Calc Custom Functions", - "_translations": { - "value": {} - }, - "_nested_name": "example_2" - }, - { - "type": "subtitle", - "name": "example_2.1", - "value": "Calc Pick Random Array Item", - "_translations": { - "value": {} - }, - "_nested_name": "example_2.1" - }, - { - "type": "set_variable", - "name": "list_data", - "value": "@data.example_calc.example_1.value_list", - "_translations": { - "value": {} - }, - "_nested_name": "list_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_calc.example_1.value_list", - "matchedExpression": "@data.example_calc.example_1.value_list", - "type": "data", - "fieldName": "example_calc" - } - ] - }, - "_dynamicDependencies": { - "@data.example_calc.example_1.value_list": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "random_item", - "value": "@calc(pick_random(@local.list_data))", - "_translations": { - "value": {} - }, - "_nested_name": "random_item", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(pick_random(@local.list_data))", - "matchedExpression": "@local.list_data", - "type": "local", - "fieldName": "list_data" - }, - { - "fullExpression": "@calc(pick_random(@local.list_data))", - "matchedExpression": "@calc(pick_random(@local.list_data))", - "type": "calc", - "fieldName": "pick_random(@local.list_data)" - } - ] - }, - "_dynamicDependencies": { - "@local.list_data": [ - "value" - ], - "@calc(pick_random(@local.list_data))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Random Item: @local.random_item.name", - "_translations": { - "value": {} - }, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Random Item: @local.random_item.name", - "matchedExpression": "@local.random_item.name", - "type": "local", - "fieldName": "random_item" - } - ] - }, - "_dynamicDependencies": { - "@local.random_item.name": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Randomise", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "click | emit:force_reprocess", - "_cleaned": "click | emit:force_reprocess" - } - ], - "_nested_name": "button_1" - }, - { - "type": "subtitle", - "name": "example_2.2", - "value": "Calc Lookup Text", - "_translations": { - "value": {} - }, - "_nested_name": "example_2.2" - }, - { - "type": "radio_group", - "name": "selected_item", - "action_list": [ - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "changed | emit:force_reprocess", - "_cleaned": "changed | emit:force_reprocess" - } - ], - "parameter_list": { - "answer_list": "@local.list_data" - }, - "_nested_name": "selected_item", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.list_data", - "matchedExpression": "@local.list_data", - "type": "local", - "fieldName": "list_data" - } - ] - } - }, - "_dynamicDependencies": { - "@local.list_data": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "set_variable", - "name": "selected_item_text", - "value": "@calc(lookup_answer_list(@local.list_data,@local.selected_item))", - "_translations": { - "value": {} - }, - "_nested_name": "selected_item_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(lookup_answer_list(@local.list_data,@local.selected_item))", - "matchedExpression": "@local.list_data", - "type": "local", - "fieldName": "list_data" - }, - { - "fullExpression": "@calc(lookup_answer_list(@local.list_data,@local.selected_item))", - "matchedExpression": "@local.selected_item", - "type": "local", - "fieldName": "selected_item" - }, - { - "fullExpression": "@calc(lookup_answer_list(@local.list_data,@local.selected_item))", - "matchedExpression": "@calc(lookup_answer_list(@local.list_data,@local.selected_item))", - "type": "calc", - "fieldName": "lookup_answer_list(@local.list_data,@local.selected_item)" - } - ] - }, - "_dynamicDependencies": { - "@local.list_data": [ - "value" - ], - "@local.selected_item": [ - "value" - ], - "@calc(lookup_answer_list(@local.list_data,@local.selected_item))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2.2a", - "value": "Selected name: @local.selected_item", - "_translations": { - "value": {} - }, - "condition": "@local.selected_item", - "_nested_name": "text_2.2a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Selected name: @local.selected_item", - "matchedExpression": "@local.selected_item", - "type": "local", - "fieldName": "selected_item" - } - ], - "condition": [ - { - "fullExpression": "@local.selected_item", - "matchedExpression": "@local.selected_item", - "type": "local", - "fieldName": "selected_item" - } - ] - }, - "_dynamicDependencies": { - "@local.selected_item": [ - "value", - "condition" - ] - } - }, - { - "type": "text", - "name": "text_2.2b", - "value": "Selected text: @local.selected_item_text", - "_translations": { - "value": {} - }, - "condition": "@local.selected_item", - "_nested_name": "text_2.2b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Selected text: @local.selected_item_text", - "matchedExpression": "@local.selected_item_text", - "type": "local", - "fieldName": "selected_item_text" - } - ], - "condition": [ - { - "fullExpression": "@local.selected_item", - "matchedExpression": "@local.selected_item", - "type": "local", - "fieldName": "selected_item" - } - ] - }, - "_dynamicDependencies": { - "@local.selected_item_text": [ - "value" - ], - "@local.selected_item": [ - "condition" - ] - } - }, - { - "type": "title", - "name": "example_3", - "value": "Calc Date Utilities", - "_translations": { - "value": {} - }, - "_nested_name": "example_3" - }, - { - "type": "set_variable", - "name": "date_now", - "value": "@calc(now())", - "_translations": { - "value": {} - }, - "_nested_name": "date_now", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(now())", - "matchedExpression": "@calc(now())", - "type": "calc", - "fieldName": "now()" - } - ] - }, - "_dynamicDependencies": { - "@calc(now())": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3.1a", - "value": "Today is @local.date_now", - "_translations": { - "value": {} - }, - "_nested_name": "text_3.1a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Today is @local.date_now", - "matchedExpression": "@local.date_now", - "type": "local", - "fieldName": "date_now" - } - ] - }, - "_dynamicDependencies": { - "@local.date_now": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "timestamp", - "value": "@calc(timestamp())", - "_translations": { - "value": {} - }, - "_nested_name": "timestamp", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(timestamp())", - "matchedExpression": "@calc(timestamp())", - "type": "calc", - "fieldName": "timestamp()" - } - ] - }, - "_dynamicDependencies": { - "@calc(timestamp())": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3.1b", - "value": "This is a db-friendly timestamp: @local.timestamp", - "_translations": { - "value": {} - }, - "_nested_name": "text_3.1b", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a db-friendly timestamp: @local.timestamp", - "matchedExpression": "@local.timestamp", - "type": "local", - "fieldName": "timestamp" - } - ] - }, - "_dynamicDependencies": { - "@local.timestamp": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "date_formatted", - "value": "@calc(window.date_fns.format(now(),\"dd MMM yyyy\"))", - "_translations": { - "value": {} - }, - "_nested_name": "date_formatted", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.format(now(),\"dd MMM yyyy\"))", - "matchedExpression": "@calc(window.date_fns.format(now(),\"dd MMM yyyy\"))", - "type": "calc", - "fieldName": "window.date_fns.format(now(),\"dd MMM yyyy\")" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.format(now(),\"dd MMM yyyy\"))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3.1c", - "value": "Formatted: @local.date_formatted", - "_translations": { - "value": {} - }, - "_nested_name": "text_3.1c", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Formatted: @local.date_formatted", - "matchedExpression": "@local.date_formatted", - "type": "local", - "fieldName": "date_formatted" - } - ] - }, - "_dynamicDependencies": { - "@local.date_formatted": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "start_of_week", - "value": "@calc(window.date_fns.startOfWeek(now(),{ weekStartsOn: 1 }))", - "_translations": { - "value": {} - }, - "_nested_name": "start_of_week", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.startOfWeek(now(),{ weekStartsOn: 1 }))", - "matchedExpression": "@calc(window.date_fns.startOfWeek(now(),{ weekStartsOn: 1 }))", - "type": "calc", - "fieldName": "window.date_fns.startOfWeek(now(),{ weekStartsOn: 1 })" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.startOfWeek(now(),{ weekStartsOn: 1 }))": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "start_of_week_text", - "value": "The week started on @local.start_of_week", - "_translations": { - "value": {} - }, - "_nested_name": "start_of_week_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The week started on @local.start_of_week", - "matchedExpression": "@local.start_of_week", - "type": "local", - "fieldName": "start_of_week" - } - ] - }, - "_dynamicDependencies": { - "@local.start_of_week": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "days_to_xmas", - "value": "@calc(window.date_fns.differenceInDays(new Date(\"2021-12-25\"),now()))", - "_translations": { - "value": {} - }, - "_nested_name": "days_to_xmas", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.differenceInDays(new Date(\"2021-12-25\"),now()))", - "matchedExpression": "@calc(window.date_fns.differenceInDays(new Date(\"2021-12-25\"),now()))", - "type": "calc", - "fieldName": "window.date_fns.differenceInDays(new Date(\"2021-12-25\"),now())" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.differenceInDays(new Date(\"2021-12-25\"),now()))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3.2", - "value": "There are @local.days_to_xmas days to Christmas (2021)", - "_translations": { - "value": {} - }, - "_nested_name": "text_3.2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "There are @local.days_to_xmas days to Christmas (2021)", - "matchedExpression": "@local.days_to_xmas", - "type": "local", - "fieldName": "days_to_xmas" - } - ] - }, - "_dynamicDependencies": { - "@local.days_to_xmas": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "last_xmas_words", - "value": "@calc(window.date_fns.formatDistance(new Date(\"2020-12-25\"),now(),{ addSuffix: true }))", - "_translations": { - "value": {} - }, - "_nested_name": "last_xmas_words", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.formatDistance(new Date(\"2020-12-25\"),now(),{ addSuffix: true }))", - "matchedExpression": "@calc(window.date_fns.formatDistance(new Date(\"2020-12-25\"),now(),{ addSuffix: true }))", - "type": "calc", - "fieldName": "window.date_fns.formatDistance(new Date(\"2020-12-25\"),now(),{ addSuffix: true })" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.formatDistance(new Date(\"2020-12-25\"),now(),{ addSuffix: true }))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3.3", - "value": "The last christmas was @local.last_xmas_words", - "_translations": { - "value": {} - }, - "_nested_name": "text_3.3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The last christmas was @local.last_xmas_words", - "matchedExpression": "@local.last_xmas_words", - "type": "local", - "fieldName": "last_xmas_words" - } - ] - }, - "_dynamicDependencies": { - "@local.last_xmas_words": [ - "value" - ] - } - }, - { - "type": "title", - "name": "example_4", - "value": "Calc Context Variables", - "_translations": { - "value": {} - }, - "_nested_name": "example_4" - }, - { - "name": "app_day", - "value": "@calc(this.app_day)", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "app_day", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.app_day)", - "matchedExpression": "@calc(this.app_day)", - "type": "calc", - "fieldName": "this.app_day" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.app_day)": [ - "value" - ] - } - }, - { - "name": "app_first_launch", - "value": "@calc(this.app_first_launch)", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "app_first_launch", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.app_first_launch)", - "matchedExpression": "@calc(this.app_first_launch)", - "type": "calc", - "fieldName": "this.app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.app_first_launch)": [ - "value" - ] - } - }, - { - "name": "app_user_id", - "value": "@calc(this.app_user_id)", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "app_user_id", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.app_user_id)", - "matchedExpression": "@calc(this.app_user_id)", - "type": "calc", - "fieldName": "this.app_user_id" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.app_user_id)": [ - "value" - ] - } - }, - { - "name": "device_os", - "value": "@calc(this.device_info.operatingSystem)", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "device_os", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.device_info.operatingSystem)", - "matchedExpression": "@calc(this.device_info.operatingSystem)", - "type": "calc", - "fieldName": "this.device_info.operatingSystem" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.device_info.operatingSystem)": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4.1", - "value": "The current app day is @local.app_day", - "_translations": { - "value": {} - }, - "_nested_name": "text_4.1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The current app day is @local.app_day", - "matchedExpression": "@local.app_day", - "type": "local", - "fieldName": "app_day" - } - ] - }, - "_dynamicDependencies": { - "@local.app_day": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4.2", - "value": "The app was first launched on @local.app_first_launch", - "_translations": { - "value": {} - }, - "_nested_name": "text_4.2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The app was first launched on @local.app_first_launch", - "matchedExpression": "@local.app_first_launch", - "type": "local", - "fieldName": "app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@local.app_first_launch": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4.3", - "value": "The current user id is @local.app_user_id", - "_translations": { - "value": {} - }, - "_nested_name": "text_4.3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The current user id is @local.app_user_id", - "matchedExpression": "@local.app_user_id", - "type": "local", - "fieldName": "app_user_id" - } - ] - }, - "_dynamicDependencies": { - "@local.app_user_id": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4.4", - "value": "The device OS is @local.device_os", - "_translations": { - "value": {} - }, - "_nested_name": "text_4.4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The device OS is @local.device_os", - "matchedExpression": "@local.device_os", - "type": "local", - "fieldName": "device_os" - } - ] - }, - "_dynamicDependencies": { - "@local.device_os": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_calc.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_calc_2.json b/packages/app-data/sheets/template/debug/example_calc_2.json deleted file mode 100644 index a5c5065db7..0000000000 --- a/packages/app-data/sheets/template/debug/example_calc_2.json +++ /dev/null @@ -1,603 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_calc_2", - "status": "released", - "rows": [ - { - "name": "app_first_launch", - "value": "@calc(this.app_first_launch)", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "app_first_launch", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.app_first_launch)", - "matchedExpression": "@calc(this.app_first_launch)", - "type": "calc", - "fieldName": "this.app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.app_first_launch)": [ - "value" - ] - } - }, - { - "type": "text", - "name": "app_first_launch_text", - "value": "app_first_launch: @local.app_first_launch", - "_translations": { - "value": {} - }, - "_nested_name": "app_first_launch_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "app_first_launch: @local.app_first_launch", - "matchedExpression": "@local.app_first_launch", - "type": "local", - "fieldName": "app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@local.app_first_launch": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "workshop_start_day", - "value": "@calc(window.date_fns.getDay(new Date(this.app_first_launch)))", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_start_day", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.getDay(new Date(this.app_first_launch)))", - "matchedExpression": "@calc(window.date_fns.getDay(new Date(this.app_first_launch)))", - "type": "calc", - "fieldName": "window.date_fns.getDay(new Date(this.app_first_launch))" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.getDay(new Date(this.app_first_launch)))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "workshop_start_day_text", - "value": "workshop_start_day: @fields.workshop_start_day", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_start_day_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "workshop_start_day: @fields.workshop_start_day", - "matchedExpression": "@fields.workshop_start_day", - "type": "fields", - "fieldName": "workshop_start_day" - } - ] - }, - "_dynamicDependencies": { - "@fields.workshop_start_day": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "workshop_start_day_label", - "value": "@calc(window.date_fns.format(new Date(@local.app_first_launch), 'EEEE'))", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_start_day_label", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.format(new Date(@local.app_first_launch), 'EEEE'))", - "matchedExpression": "@local.app_first_launch", - "type": "local", - "fieldName": "app_first_launch" - }, - { - "fullExpression": "@calc(window.date_fns.format(new Date(@local.app_first_launch), 'EEEE'))", - "matchedExpression": "@calc(window.date_fns.format(new Date(@local.app_first_launch), 'EEEE'))", - "type": "calc", - "fieldName": "window.date_fns.format(new Date(@local.app_first_launch), 'EEEE')" - } - ] - }, - "_dynamicDependencies": { - "@local.app_first_launch": [ - "value" - ], - "@calc(window.date_fns.format(new Date(@local.app_first_launch), 'EEEE'))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "workshop_start_day_label_text", - "value": "workshop_start_day_label: @fields.workshop_start_day_label", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_start_day_label_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "workshop_start_day_label: @fields.workshop_start_day_label", - "matchedExpression": "@fields.workshop_start_day_label", - "type": "fields", - "fieldName": "workshop_start_day_label" - } - ] - }, - "_dynamicDependencies": { - "@fields.workshop_start_day_label": [ - "value" - ] - } - }, - { - "name": "today_end", - "value": "@calc(window.date_fns.endOfDay(new Date()))", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "today_end", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.endOfDay(new Date()))", - "matchedExpression": "@calc(window.date_fns.endOfDay(new Date()))", - "type": "calc", - "fieldName": "window.date_fns.endOfDay(new Date())" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.endOfDay(new Date()))": [ - "value" - ] - } - }, - { - "name": "days_since_app_first_launch", - "value": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "days_since_app_first_launch", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))", - "matchedExpression": "@local.today_end", - "type": "local", - "fieldName": "today_end" - }, - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))", - "matchedExpression": "@local.app_first_launch", - "type": "local", - "fieldName": "app_first_launch" - }, - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))", - "matchedExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))", - "type": "calc", - "fieldName": "window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch))" - } - ] - }, - "_dynamicDependencies": { - "@local.today_end": [ - "value" - ], - "@local.app_first_launch": [ - "value" - ], - "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@local.app_first_launch)))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "days_since_app_first_launch_text", - "value": "days_since_app_first_launch: @local.days_since_app_first_launch", - "_translations": { - "value": {} - }, - "_nested_name": "days_since_app_first_launch_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "days_since_app_first_launch: @local.days_since_app_first_launch", - "matchedExpression": "@local.days_since_app_first_launch", - "type": "local", - "fieldName": "days_since_app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@local.days_since_app_first_launch": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "benchmark_date", - "value": "@local.app_first_launch", - "_translations": { - "value": {} - }, - "_nested_name": "benchmark_date", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.app_first_launch", - "matchedExpression": "@local.app_first_launch", - "type": "local", - "fieldName": "app_first_launch" - } - ] - }, - "_dynamicDependencies": { - "@local.app_first_launch": [ - "value" - ] - } - }, - { - "type": "text", - "name": "benchmark_date_text", - "value": "benchmark_date: @fields.benchmark_date", - "_translations": { - "value": {} - }, - "_nested_name": "benchmark_date_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "benchmark_date: @fields.benchmark_date", - "matchedExpression": "@fields.benchmark_date", - "type": "fields", - "fieldName": "benchmark_date" - } - ] - }, - "_dynamicDependencies": { - "@fields.benchmark_date": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "benchmark_workshop_number", - "value": 1, - "_nested_name": "benchmark_workshop_number" - }, - { - "type": "text", - "name": "benchmark_workshop_number_text", - "value": "benchmark_workshop_number: @fields.benchmark_workshop_number", - "_translations": { - "value": {} - }, - "_nested_name": "benchmark_workshop_number_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "benchmark_workshop_number: @fields.benchmark_workshop_number", - "matchedExpression": "@fields.benchmark_workshop_number", - "type": "fields", - "fieldName": "benchmark_workshop_number" - } - ] - }, - "_dynamicDependencies": { - "@fields.benchmark_workshop_number": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "benchmark_day", - "value": "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)", - "_translations": { - "value": {} - }, - "_nested_name": "benchmark_day", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)", - "matchedExpression": "@fields.benchmark_date", - "type": "fields", - "fieldName": "benchmark_date" - }, - { - "fullExpression": "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)", - "matchedExpression": "@fields.workshop_start_day", - "type": "fields", - "fieldName": "workshop_start_day" - }, - { - "fullExpression": "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)", - "matchedExpression": "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)", - "type": "calc", - "fieldName": " (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7" - } - ] - }, - "_dynamicDependencies": { - "@fields.benchmark_date": [ - "value" - ], - "@fields.workshop_start_day": [ - "value" - ], - "@calc( (window.date_fns.getDay(new Date(@fields.benchmark_date)) - @fields.workshop_start_day +7) % 7)": [ - "value" - ] - } - }, - { - "type": "text", - "name": "benchmark_day_text", - "value": "benchmark_day: @fields.benchmark_day", - "_translations": { - "value": {} - }, - "_nested_name": "benchmark_day_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "benchmark_day: @fields.benchmark_day", - "matchedExpression": "@fields.benchmark_day", - "type": "fields", - "fieldName": "benchmark_day" - } - ] - }, - "_dynamicDependencies": { - "@fields.benchmark_day": [ - "value" - ] - } - }, - { - "name": "days_since_benchmark_date", - "value": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "days_since_benchmark_date", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))", - "matchedExpression": "@local.today_end", - "type": "local", - "fieldName": "today_end" - }, - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))", - "matchedExpression": "@fields.benchmark_date", - "type": "fields", - "fieldName": "benchmark_date" - }, - { - "fullExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))", - "matchedExpression": "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))", - "type": "calc", - "fieldName": "window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date))" - } - ] - }, - "_dynamicDependencies": { - "@local.today_end": [ - "value" - ], - "@fields.benchmark_date": [ - "value" - ], - "@calc(window.date_fns.differenceInDays(@local.today_end, new Date(@fields.benchmark_date)))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "days_since_benchmark_date_text", - "value": "days_since_benchmark_date: @local.days_since_benchmark_date", - "_translations": { - "value": {} - }, - "_nested_name": "days_since_benchmark_date_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "days_since_benchmark_date: @local.days_since_benchmark_date", - "matchedExpression": "@local.days_since_benchmark_date", - "type": "local", - "fieldName": "days_since_benchmark_date" - } - ] - }, - "_dynamicDependencies": { - "@local.days_since_benchmark_date": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "workshop_number", - "value": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_number", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "matchedExpression": "@fields.benchmark_workshop_number", - "type": "fields", - "fieldName": "benchmark_workshop_number" - }, - { - "fullExpression": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "matchedExpression": "@local.days_since_benchmark_date", - "type": "local", - "fieldName": "days_since_benchmark_date" - }, - { - "fullExpression": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "matchedExpression": "@fields.benchmark_day", - "type": "fields", - "fieldName": "benchmark_day" - }, - { - "fullExpression": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "matchedExpression": "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )", - "type": "calc", - "fieldName": " +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) " - } - ] - }, - "_dynamicDependencies": { - "@fields.benchmark_workshop_number": [ - "value" - ], - "@local.days_since_benchmark_date": [ - "value" - ], - "@fields.benchmark_day": [ - "value" - ], - "@calc( +@fields.benchmark_workshop_number + Math.floor((@local.days_since_benchmark_date + +@fields.benchmark_day)/7) )": [ - "value" - ] - } - }, - { - "type": "text", - "name": "workshop_number_text", - "value": "workshop_number: @fields.workshop_number", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_number_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "workshop_number: @fields.workshop_number", - "matchedExpression": "@fields.workshop_number", - "type": "fields", - "fieldName": "workshop_number" - } - ] - }, - "_dynamicDependencies": { - "@fields.workshop_number": [ - "value" - ] - } - }, - { - "type": "set_field", - "name": "workshop_day", - "value": "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_day", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )", - "matchedExpression": "@local.today_end", - "type": "local", - "fieldName": "today_end" - }, - { - "fullExpression": "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )", - "matchedExpression": "@fields.workshop_start_day", - "type": "fields", - "fieldName": "workshop_start_day" - }, - { - "fullExpression": "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )", - "matchedExpression": "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )", - "type": "calc", - "fieldName": " (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 " - } - ] - }, - "_dynamicDependencies": { - "@local.today_end": [ - "value" - ], - "@fields.workshop_start_day": [ - "value" - ], - "@calc( (window.date_fns.getDay(@local.today_end) - @fields.workshop_start_day + 7) % 7 )": [ - "value" - ] - } - }, - { - "type": "text", - "name": "workshop_day_text", - "value": "workshop_day: @fields.workshop_day", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_day_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "workshop_day: @fields.workshop_day", - "matchedExpression": "@fields.workshop_day", - "type": "fields", - "fieldName": "workshop_day" - } - ] - }, - "_dynamicDependencies": { - "@fields.workshop_day": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_calc.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_calc_3.json b/packages/app-data/sheets/template/debug/example_calc_3.json deleted file mode 100644 index e51c525380..0000000000 --- a/packages/app-data/sheets/template/debug/example_calc_3.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_calc_3", - "status": "released", - "rows": [ - { - "name": "disabled", - "value": "_disabled", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "disabled" - }, - { - "name": "workshop_number", - "value": "+@fields.workshop_number", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshop_number", - "_dynamicFields": { - "value": [ - { - "fullExpression": "+@fields.workshop_number", - "matchedExpression": "@fields.workshop_number", - "type": "fields", - "fieldName": "workshop_number" - } - ] - }, - "_dynamicDependencies": { - "@fields.workshop_number": [ - "value" - ] - } - }, - { - "type": "items", - "value": "@data.workshop", - "rows": [ - { - "type": "set_field", - "name": "@item.id@local.disabled", - "value": false, - "condition": "@calc(@item.number <= @local.workshop_number)", - "_nested_name": "items.@item.id@local.disabled", - "_dynamicFields": { - "name": [ - { - "fullExpression": "@item.id@local.disabled", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - }, - { - "fullExpression": "@item.id@local.disabled", - "matchedExpression": "@local.disabled", - "type": "local", - "fieldName": "disabled" - } - ], - "condition": [ - { - "fullExpression": "@calc(@item.number <= @local.workshop_number)", - "matchedExpression": "@item.number", - "type": "item", - "fieldName": "number" - }, - { - "fullExpression": "@calc(@item.number <= @local.workshop_number)", - "matchedExpression": "@local.workshop_number", - "type": "local", - "fieldName": "workshop_number" - }, - { - "fullExpression": "@calc(@item.number <= @local.workshop_number)", - "matchedExpression": "@calc(@item.number <= @local.workshop_number)", - "type": "calc", - "fieldName": "@item.number <= @local.workshop_number" - } - ], - "_nested_name": [ - { - "fullExpression": "items.@item.id@local.disabled", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - }, - { - "fullExpression": "items.@item.id@local.disabled", - "matchedExpression": "@local.disabled", - "type": "local", - "fieldName": "disabled" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@local.disabled": [ - "name", - "_nested_name" - ], - "@item.number": [ - "condition" - ], - "@local.workshop_number": [ - "condition" - ], - "@calc(@item.number <= @local.workshop_number)": [ - "condition" - ] - } - } - ], - "name": "items", - "_nested_name": "items", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop", - "matchedExpression": "@data.workshop", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_calc.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_calc_date.json b/packages/app-data/sheets/template/debug/example_calc_date.json deleted file mode 100644 index e693af6183..0000000000 --- a/packages/app-data/sheets/template/debug/example_calc_date.json +++ /dev/null @@ -1,387 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_calc_date", - "status": "released", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Today", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_1", - "value": "Today is @fields.current_date", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Today is @fields.current_date", - "matchedExpression": "@fields.current_date", - "type": "fields", - "fieldName": "current_date" - } - ] - }, - "_dynamicDependencies": { - "@fields.current_date": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "date", - "value": "@calc(Date())", - "_translations": { - "value": {} - }, - "_nested_name": "date", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(Date())", - "matchedExpression": "@calc(Date())", - "type": "calc", - "fieldName": "Date()" - } - ] - }, - "_dynamicDependencies": { - "@calc(Date())": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Today is @local.date", - "_translations": { - "value": {} - }, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Today is @local.date", - "matchedExpression": "@local.date", - "type": "local", - "fieldName": "date" - } - ] - }, - "_dynamicDependencies": { - "@local.date": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "day", - "value": "@calc((new Date()).getDay())", - "_translations": { - "value": {} - }, - "_nested_name": "day", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc((new Date()).getDay())", - "matchedExpression": "@calc((new Date()).getDay())", - "type": "calc", - "fieldName": "(new Date()).getDay()" - } - ] - }, - "_dynamicDependencies": { - "@calc((new Date()).getDay())": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Today is @local.day", - "_translations": { - "value": {} - }, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Today is @local.day", - "matchedExpression": "@local.day", - "type": "local", - "fieldName": "day" - } - ] - }, - "_dynamicDependencies": { - "@local.day": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "christmas", - "value": "@calc(new Date(2021,12, 25))", - "_translations": { - "value": {} - }, - "_nested_name": "christmas", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(new Date(2021,12, 25))", - "matchedExpression": "@calc(new Date(2021,12, 25))", - "type": "calc", - "fieldName": "new Date(2021,12, 25)" - } - ] - }, - "_dynamicDependencies": { - "@calc(new Date(2021,12, 25))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "Christmas is @local.christmas", - "_translations": { - "value": {} - }, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Christmas is @local.christmas", - "matchedExpression": "@local.christmas", - "type": "local", - "fieldName": "christmas" - } - ] - }, - "_dynamicDependencies": { - "@local.christmas": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "christmas_time", - "value": "@calc((new Date(2021,12, 25)).getTime())", - "_translations": { - "value": {} - }, - "_nested_name": "christmas_time", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc((new Date(2021,12, 25)).getTime())", - "matchedExpression": "@calc((new Date(2021,12, 25)).getTime())", - "type": "calc", - "fieldName": "(new Date(2021,12, 25)).getTime()" - } - ] - }, - "_dynamicDependencies": { - "@calc((new Date(2021,12, 25)).getTime())": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Christmas time is @local.christmas_time", - "_translations": { - "value": {} - }, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Christmas time is @local.christmas_time", - "matchedExpression": "@local.christmas_time", - "type": "local", - "fieldName": "christmas_time" - } - ] - }, - "_dynamicDependencies": { - "@local.christmas_time": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "days_to_christmas", - "value": "@calc( (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) )", - "_translations": { - "value": {} - }, - "_nested_name": "days_to_christmas", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc( (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) )", - "matchedExpression": "@local.christmas_time", - "type": "local", - "fieldName": "christmas_time" - }, - { - "fullExpression": "@calc( (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) )", - "matchedExpression": "@calc( (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) )", - "type": "calc", - "fieldName": " (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) " - } - ] - }, - "_dynamicDependencies": { - "@local.christmas_time": [ - "value" - ], - "@calc( (@local.christmas_time - (new Date()).getTime()) / (1000 * 3600 * 24) )": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_6", - "value": "Christmas is in @local.days_to_christmas days", - "_translations": { - "value": {} - }, - "_nested_name": "text_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Christmas is in @local.days_to_christmas days", - "matchedExpression": "@local.days_to_christmas", - "type": "local", - "fieldName": "days_to_christmas" - } - ] - }, - "_dynamicDependencies": { - "@local.days_to_christmas": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "midnight", - "value": "@calc((new Date()).setHours(0,0,0,0))", - "_translations": { - "value": {} - }, - "_nested_name": "midnight", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc((new Date()).setHours(0,0,0,0))", - "matchedExpression": "@calc((new Date()).setHours(0,0,0,0))", - "type": "calc", - "fieldName": "(new Date()).setHours(0,0,0,0)" - } - ] - }, - "_dynamicDependencies": { - "@calc((new Date()).setHours(0,0,0,0))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_7", - "value": "Midnight was at @local.midnight", - "_translations": { - "value": {} - }, - "_nested_name": "text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Midnight was at @local.midnight", - "matchedExpression": "@local.midnight", - "type": "local", - "fieldName": "midnight" - } - ] - }, - "_dynamicDependencies": { - "@local.midnight": [ - "value" - ] - } - }, - { - "type": "set_variable", - "name": "midnight_time", - "value": "@calc(((new Date()).setHours(0,0,0,0)))", - "_translations": { - "value": {} - }, - "_nested_name": "midnight_time", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(((new Date()).setHours(0,0,0,0)))", - "matchedExpression": "@calc(((new Date()).setHours(0,0,0,0)))", - "type": "calc", - "fieldName": "((new Date()).setHours(0,0,0,0))" - } - ] - }, - "_dynamicDependencies": { - "@calc(((new Date()).setHours(0,0,0,0)))": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_8", - "value": "Midnight time was @local.midnight_time", - "_translations": { - "value": {} - }, - "_nested_name": "text_8", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Midnight time was @local.midnight_time", - "matchedExpression": "@local.midnight_time", - "type": "local", - "fieldName": "midnight_time" - } - ] - }, - "_dynamicDependencies": { - "@local.midnight_time": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_calc.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_call_global_constants.json b/packages/app-data/sheets/template/debug/example_call_global_constants.json deleted file mode 100644 index e0d877b6cd..0000000000 --- a/packages/app-data/sheets/template/debug/example_call_global_constants.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_call_global_constants", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "@global.example_global_constant_title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.example_global_constant_title", - "matchedExpression": "@global.example_global_constant_title", - "type": "global", - "fieldName": "example_global_constant_title" - } - ] - }, - "_dynamicDependencies": { - "@global.example_global_constant_title": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Text that includes @global.example_global_constant_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text that includes @global.example_global_constant_text", - "matchedExpression": "@global.example_global_constant_text", - "type": "global", - "fieldName": "example_global_constant_text" - } - ] - }, - "_dynamicDependencies": { - "@global.example_global_constant_text": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image_src", - "value": "@global.example_global_constant_image", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "image_src", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.example_global_constant_image", - "matchedExpression": "@global.example_global_constant_image", - "type": "global", - "fieldName": "example_global_constant_image" - } - ] - }, - "_dynamicDependencies": { - "@global.example_global_constant_image": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "There should be an image above this text, whose source is example_global_image", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_global_field.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_changed_action.json b/packages/app-data/sheets/template/debug/example_changed_action.json deleted file mode 100644 index 42e2ae35a7..0000000000 --- a/packages/app-data/sheets/template/debug/example_changed_action.json +++ /dev/null @@ -1,466 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_changed_action", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_field", - "name": "demo_changed_combo_box", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "demo_changed_combo_box" - }, - { - "type": "set_field", - "name": "demo_changed_slider", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "demo_changed_slider" - }, - { - "type": "set_field", - "name": "demo_changed_radio_group", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "demo_changed_radio_group" - }, - { - "type": "set_field", - "name": "demo_changed_text_box", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "demo_changed_text_box" - }, - { - "name": "answer_list_1", - "value": [ - "First", - "Second", - "Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third", - "name:name_var_4 | text:Fourth" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "combo_box", - "name": "combo_box", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_combo_box", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_combo_box: @local.combo_box", - "_cleaned": "changed | set_field: demo_changed_combo_box: @local.combo_box" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1", - "placeholder": "Click and choose!" - }, - "_nested_name": "combo_box", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_combo_box: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_combo_box: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "comb_box_text", - "value": "the selected choice in combo box is @field.demo_changed_combo_box", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_combo_box==\"na\"", - "exclude_from_translation": true, - "_nested_name": "comb_box_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the selected choice in combo box is @field.demo_changed_combo_box", - "matchedExpression": "@field.demo_changed_combo_box", - "type": "field", - "fieldName": "demo_changed_combo_box" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_combo_box==\"na\"", - "matchedExpression": "@field.demo_changed_combo_box", - "type": "field", - "fieldName": "demo_changed_combo_box" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_combo_box": [ - "value", - "hidden" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_radio_group", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_radio_group: @local.radio_group", - "_cleaned": "changed | set_field: demo_changed_radio_group: @local.radio_group" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_radio_group: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_radio_group: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "radio_group_field_text", - "value": "The value of demo_changed_radio_group is @field.demo_changed_radio_group", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "radio_group_field_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of demo_changed_radio_group is @field.demo_changed_radio_group", - "matchedExpression": "@field.demo_changed_radio_group", - "type": "field", - "fieldName": "demo_changed_radio_group" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_radio_group": [ - "value" - ] - } - }, - { - "type": "text", - "name": "radio_group_text", - "value": "the selected choice in radio group is @field.demo_changed_radio_group", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_radio_group==\"na\"", - "exclude_from_translation": true, - "_nested_name": "radio_group_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the selected choice in radio group is @field.demo_changed_radio_group", - "matchedExpression": "@field.demo_changed_radio_group", - "type": "field", - "fieldName": "demo_changed_radio_group" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_radio_group==\"na\"", - "matchedExpression": "@field.demo_changed_radio_group", - "type": "field", - "fieldName": "demo_changed_radio_group" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_radio_group": [ - "value", - "hidden" - ] - } - }, - { - "type": "text_box", - "name": "text_box", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_text_box", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_text_box: @local.text_box", - "_cleaned": "changed | set_field: demo_changed_text_box: @local.text_box" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "Click and type!" - }, - "_nested_name": "text_box", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_text_box: @local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_text_box: @local.text_box", - "matchedExpression": "@local.text_box", - "type": "local", - "fieldName": "text_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.text_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_box_text", - "value": "The value in the text box is @field.demo_changed_text_box", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_text_box==\"na\"", - "exclude_from_translation": true, - "_nested_name": "text_box_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value in the text box is @field.demo_changed_text_box", - "matchedExpression": "@field.demo_changed_text_box", - "type": "field", - "fieldName": "demo_changed_text_box" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_text_box==\"na\"", - "matchedExpression": "@field.demo_changed_text_box", - "type": "field", - "fieldName": "demo_changed_text_box" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_text_box": [ - "value", - "hidden" - ] - } - }, - { - "type": "slider", - "name": "slider", - "value": 3, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_slider", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_slider: @local.slider", - "_cleaned": "changed | set_field: demo_changed_slider: @local.slider" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "max": "7", - "min_value_label": "least", - "max_value_label": "most", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_slider: @local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_slider: @local.slider", - "matchedExpression": "@local.slider", - "type": "local", - "fieldName": "slider" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.slider": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "slider_text", - "value": "the selected choice in slider is @field.demo_changed_slider", - "_translations": { - "value": {} - }, - "hidden": "@field.demo_changed_slider==\"na\"", - "exclude_from_translation": true, - "_nested_name": "slider_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the selected choice in slider is @field.demo_changed_slider", - "matchedExpression": "@field.demo_changed_slider", - "type": "field", - "fieldName": "demo_changed_slider" - } - ], - "hidden": [ - { - "fullExpression": "@field.demo_changed_slider==\"na\"", - "matchedExpression": "@field.demo_changed_slider", - "type": "field", - "fieldName": "demo_changed_slider" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_slider": [ - "value", - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_changed_action.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_condition_bottom.json b/packages/app-data/sheets/template/debug/example_condition_bottom.json deleted file mode 100644 index e49fd1bcb0..0000000000 --- a/packages/app-data/sheets/template/debug/example_condition_bottom.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_condition_bottom", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "field_name", - "value": "radio_button_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "field_name" - }, - { - "type": "radio_group", - "name": "radio_group_text", - "value": "nothing", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "radio_group_text", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_result", - "value": "You selected @local.radio_group_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_result", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.radio_group_text", - "matchedExpression": "@local.radio_group_text", - "type": "local", - "fieldName": "radio_group_text" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_text": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_reply", - "value": "Reply text", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group_text = \"nothing\"", - "exclude_from_translation": true, - "_nested_name": "text_reply", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group_text = \"nothing\"", - "matchedExpression": "@local.radio_group_text", - "type": "local", - "fieldName": "radio_group_text" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_text": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_condition.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_condition_top_1.json b/packages/app-data/sheets/template/debug/example_condition_top_1.json deleted file mode 100644 index 6af32446a7..0000000000 --- a/packages/app-data/sheets/template/debug/example_condition_top_1.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_condition_top_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "var_1", - "value": "\"val_1\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_1" - }, - { - "name": "var_2", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_2" - }, - { - "name": "var_3", - "value": 5, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "var_3" - }, - { - "type": "template", - "name": "example_text_1", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "The condition is not satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_1==\"val_2\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_1==\"val_2\"", - "matchedExpression": "@local.var_1", - "type": "local", - "fieldName": "var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_1": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "The condition is satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_1==\"val_1\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_1==\"val_1\"", - "matchedExpression": "@local.var_1", - "type": "local", - "fieldName": "var_1" - } - ] - }, - "_dynamicDependencies": { - "@local.var_1": [ - "condition" - ] - } - } - ], - "_nested_name": "example_text_1" - }, - { - "type": "template", - "name": "example_text_2", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "The condition is satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_3<9", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_2.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_3<9", - "matchedExpression": "@local.var_3", - "type": "local", - "fieldName": "var_3" - } - ] - }, - "_dynamicDependencies": { - "@local.var_3": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "The condition is not satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_3>9", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_2.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_3>9", - "matchedExpression": "@local.var_3", - "type": "local", - "fieldName": "var_3" - } - ] - }, - "_dynamicDependencies": { - "@local.var_3": [ - "condition" - ] - } - } - ], - "_nested_name": "example_text_2" - }, - { - "type": "template", - "name": "example_text_3", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "The condition is satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_3.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_2", - "matchedExpression": "@local.var_2", - "type": "local", - "fieldName": "var_2" - } - ] - }, - "_dynamicDependencies": { - "@local.var_2": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "The condition is not satisfied", - "_translations": { - "value": {} - }, - "condition": "!@local.var_2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_3.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.var_2", - "matchedExpression": "!@local.var_2", - "type": "local", - "fieldName": "var_2" - } - ] - }, - "_dynamicDependencies": { - "!@local.var_2": [ - "condition" - ] - } - } - ], - "_nested_name": "example_text_3" - }, - { - "type": "template", - "name": "example_text_4", - "value": "example_text", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "The condition is not satisfied", - "_translations": { - "value": {} - }, - "condition": "!@local.var_2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_4.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.var_2", - "matchedExpression": "!@local.var_2", - "type": "local", - "fieldName": "var_2" - } - ] - }, - "_dynamicDependencies": { - "!@local.var_2": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "The condition is satisfied", - "_translations": { - "value": {} - }, - "condition": "@local.var_2", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_4.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.var_2", - "matchedExpression": "@local.var_2", - "type": "local", - "fieldName": "var_2" - } - ] - }, - "_dynamicDependencies": { - "@local.var_2": [ - "condition" - ] - } - } - ], - "_nested_name": "example_text_4" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_condition.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_condition_top_2.json b/packages/app-data/sheets/template/debug/example_condition_top_2.json deleted file mode 100644 index d6dd8c9aff..0000000000 --- a/packages/app-data/sheets/template/debug/example_condition_top_2.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_condition_top_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "example_condition_bottom", - "value": "example_condition_bottom", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_result", - "value": "@local.radio_group_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_condition_bottom.text_result", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group_text", - "matchedExpression": "@local.radio_group_text", - "type": "local", - "fieldName": "radio_group_text" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_text": [ - "value" - ] - } - }, - { - "name": "text_reply", - "value": "Reply for selecting first", - "_translations": { - "value": {} - }, - "condition": "@field.radio_button_field==\"name_var_1\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_condition_bottom.text_reply", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@field.radio_button_field==\"name_var_1\"", - "matchedExpression": "@field.radio_button_field", - "type": "field", - "fieldName": "radio_button_field" - } - ] - }, - "_dynamicDependencies": { - "@field.radio_button_field": [ - "condition" - ] - } - }, - { - "name": "text_reply", - "value": "Reply for selecting second", - "_translations": { - "value": {} - }, - "condition": "@field.radio_button_field==\"name_var_2\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_condition_bottom.text_reply", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@field.radio_button_field==\"name_var_2\"", - "matchedExpression": "@field.radio_button_field", - "type": "field", - "fieldName": "radio_button_field" - } - ] - }, - "_dynamicDependencies": { - "@field.radio_button_field": [ - "condition" - ] - } - }, - { - "name": "text_reply", - "value": "Reply for selecting third", - "_translations": { - "value": {} - }, - "condition": "@field.radio_button_field==\"name_var_3\"", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_condition_bottom.text_reply", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@field.radio_button_field==\"name_var_3\"", - "matchedExpression": "@field.radio_button_field", - "type": "field", - "fieldName": "radio_button_field" - } - ] - }, - "_dynamicDependencies": { - "@field.radio_button_field": [ - "condition" - ] - } - } - ], - "_nested_name": "example_condition_bottom" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_condition.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_condition_top_3.json b/packages/app-data/sheets/template/debug/example_condition_top_3.json deleted file mode 100644 index cecb5bf89a..0000000000 --- a/packages/app-data/sheets/template/debug/example_condition_top_3.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_condition_top_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "variable", - "value": "initial_value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "variable" - }, - { - "type": "template", - "name": "example_text_button", - "value": "example_text_button", - "exclude_from_translation": true, - "rows": [ - { - "name": "text", - "value": "@local.variable is the secondary value", - "_translations": { - "value": {} - }, - "condition": "@local.variable==secondary_value", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.variable is the secondary value", - "matchedExpression": "@local.variable", - "type": "local", - "fieldName": "variable" - } - ], - "condition": [ - { - "fullExpression": "@local.variable==secondary_value", - "matchedExpression": "@local.variable", - "type": "local", - "fieldName": "variable" - } - ] - }, - "_dynamicDependencies": { - "@local.variable": [ - "value", - "condition" - ] - } - }, - { - "name": "text", - "value": "@local.variable is the initial value", - "_translations": { - "value": {} - }, - "condition": "@local.variable==initial_value", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.variable is the initial value", - "matchedExpression": "@local.variable", - "type": "local", - "fieldName": "variable" - } - ], - "condition": [ - { - "fullExpression": "@local.variable==initial_value", - "matchedExpression": "@local.variable", - "type": "local", - "fieldName": "variable" - } - ] - }, - "_dynamicDependencies": { - "@local.variable": [ - "value", - "condition" - ] - } - }, - { - "name": "button", - "value": "Set value to secondary", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "variable", - "secondary_value" - ], - "_raw": "click | set_local:variable:secondary_value", - "_cleaned": "click | set_local:variable:secondary_value" - } - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example_text_button.button" - } - ], - "_nested_name": "example_text_button" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_condition.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_data_from_id.json b/packages/app-data/sheets/template/debug/example_data_from_id.json deleted file mode 100644 index de71f004a0..0000000000 --- a/packages/app-data/sheets/template/debug/example_data_from_id.json +++ /dev/null @@ -1,168 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_data_from_id", - "status": "released", - "rows": [ - { - "name": "data_item_id", - "value": "@data.example.example1.id", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "data_item_id", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example.example1.id", - "matchedExpression": "@data.example.example1.id", - "type": "data", - "fieldName": "example" - } - ] - }, - "_dynamicDependencies": { - "@data.example.example1.id": [ - "value" - ] - } - }, - { - "name": "example", - "value": "example.@local.data_item_id", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "example", - "_dynamicFields": { - "value": [ - { - "fullExpression": "example.@local.data_item_id", - "matchedExpression": "@local.data_item_id", - "type": "local", - "fieldName": "data_item_id" - } - ] - }, - "_dynamicDependencies": { - "@local.data_item_id": [ - "value" - ] - } - }, - { - "name": "data_item", - "value": "@data.@local.example", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "data_item", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.@local.example", - "matchedExpression": "@local.example", - "type": "local", - "fieldName": "example" - } - ] - }, - "_dynamicDependencies": { - "@local.example": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "id: @local.data_item_id\nwhich is the same as\nid: @local.data_item.id", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "id: @local.data_item_id\nwhich is the same as\nid: @local.data_item.id", - "matchedExpression": "@local.data_item_id", - "type": "local", - "fieldName": "data_item_id" - }, - { - "fullExpression": "id: @local.data_item_id\nwhich is the same as\nid: @local.data_item.id", - "matchedExpression": "@local.data_item.id", - "type": "local", - "fieldName": "data_item" - } - ] - }, - "_dynamicDependencies": { - "@local.data_item_id": [ - "value" - ], - "@local.data_item.id": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "value: @local.data_item.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "value: @local.data_item.value", - "matchedExpression": "@local.data_item.value", - "type": "local", - "fieldName": "data_item" - } - ] - }, - "_dynamicDependencies": { - "@local.data_item.value": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "text: @local.data_item.text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "text: @local.data_item.text", - "matchedExpression": "@local.data_item.text", - "type": "local", - "fieldName": "data_item" - } - ] - }, - "_dynamicDependencies": { - "@local.data_item.text": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_data_template.json b/packages/app-data/sheets/template/debug/example_data_template.json deleted file mode 100644 index d20e28cf33..0000000000 --- a/packages/app-data/sheets/template/debug/example_data_template.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_data_template", - "status": "released", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "@data.example.example1.value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example.example1.value", - "matchedExpression": "@data.example.example1.value", - "type": "data", - "fieldName": "example" - } - ] - }, - "_dynamicDependencies": { - "@data.example.example1.value": [ - "value" - ] - } - }, - { - "type": "text", - "name": "broken_1", - "value": "@data.example.example1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "broken_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example.example1", - "matchedExpression": "@data.example.example1", - "type": "data", - "fieldName": "example" - } - ] - }, - "_dynamicDependencies": { - "@data.example.example1": [ - "value" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@data.example.example3.value_list" - }, - "_nested_name": "radio_group_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@data.example.example3.value_list", - "matchedExpression": "@data.example.example3.value_list", - "type": "data", - "fieldName": "example" - } - ] - } - }, - "_dynamicDependencies": { - "@data.example.example3.value_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_data_lists.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_dates.json b/packages/app-data/sheets/template/debug/example_dates.json deleted file mode 100644 index 37bf24d5bf..0000000000 --- a/packages/app-data/sheets/template/debug/example_dates.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_dates", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "first", - "value": "@field.first_app_open is the first time it opened", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "first", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.first_app_open is the first time it opened", - "matchedExpression": "@field.first_app_open", - "type": "field", - "fieldName": "first_app_open" - } - ] - }, - "_dynamicDependencies": { - "@field.first_app_open": [ - "value" - ] - } - }, - { - "type": "text", - "name": "today", - "value": "@field.current_date is today", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "today", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.current_date is today", - "matchedExpression": "@field.current_date", - "type": "field", - "fieldName": "current_date" - } - ] - }, - "_dynamicDependencies": { - "@field.current_date": [ - "value" - ] - } - }, - { - "type": "text", - "name": "week", - "value": "second_week is @field.second_week", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "week", - "_dynamicFields": { - "value": [ - { - "fullExpression": "second_week is @field.second_week", - "matchedExpression": "@field.second_week", - "type": "field", - "fieldName": "second_week" - } - ] - }, - "_dynamicDependencies": { - "@field.second_week": [ - "value" - ] - } - }, - { - "type": "text", - "name": "time_difference", - "value": "the time difference is @field.time_difference", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "time_difference", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the time difference is @field.time_difference", - "matchedExpression": "@field.time_difference", - "type": "field", - "fieldName": "time_difference" - } - ] - }, - "_dynamicDependencies": { - "@field.time_difference": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_multiple_locals.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_dg.json b/packages/app-data/sheets/template/debug/example_dg.json deleted file mode 100644 index ffaabf4ac5..0000000000 --- a/packages/app-data/sheets/template/debug/example_dg.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_dg", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "First example", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "display_group", - "name": "dg_1", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.text_1" - }, - { - "type": "button", - "name": "button_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "_nested_name": "dg_1.button_1" - } - ], - "_nested_name": "dg_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Second example", - "_translations": { - "value": {} - }, - "_nested_name": "title_2" - }, - { - "type": "display_group", - "name": "dg_2", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "text_2", - "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.text_2" - }, - { - "type": "button", - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "_nested_name": "dg_2.button_2" - } - ], - "_nested_name": "dg_2" - }, - { - "type": "title", - "name": "title_3", - "value": "Third example", - "_translations": { - "value": {} - }, - "_nested_name": "title_3" - }, - { - "type": "display_group", - "name": "dg_3", - "rows": [ - { - "type": "text", - "name": "text_3", - "value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", - "_translations": { - "value": {} - }, - "_nested_name": "dg_3.text_3" - }, - { - "type": "display_group", - "name": "dg_4", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "button", - "name": "button_3", - "value": "Button 3", - "_translations": { - "value": {} - }, - "_nested_name": "dg_3.dg_4.button_3" - }, - { - "type": "button", - "name": "button_4", - "value": "Button 4", - "_translations": { - "value": {} - }, - "_nested_name": "dg_3.dg_4.button_4" - } - ], - "_nested_name": "dg_3.dg_4" - } - ], - "_nested_name": "dg_3" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_dg.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_double_ref_comp_var.json b/packages/app-data/sheets/template/debug/example_double_ref_comp_var.json deleted file mode 100644 index 983d6c3331..0000000000 --- a/packages/app-data/sheets/template/debug/example_double_ref_comp_var.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_double_ref_comp_var", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "first_template", - "value": "example_component_variables", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "first_template" - }, - { - "type": "template", - "name": "second_template", - "value": "example_component_variables", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "second_template" - }, - { - "type": "text", - "name": "text_with_double_ref_options", - "value": "text should be what is in the comment", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_with_double_ref_options" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_component_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_emit.json b/packages/app-data/sheets/template/debug/example_emit.json deleted file mode 100644 index c344524eca..0000000000 --- a/packages/app-data/sheets/template/debug/example_emit.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_emit", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the example emit template.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_completed", - "value": "Emit completed", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_completed" - }, - { - "type": "button", - "name": "button_uncompleted", - "value": "Emit uncompleted", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "click | emit:uncompleted", - "_cleaned": "click | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_uncompleted" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_go_to_1.json b/packages/app-data/sheets/template/debug/example_go_to_1.json deleted file mode 100644 index adae1168f2..0000000000 --- a/packages/app-data/sheets/template/debug/example_go_to_1.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_go_to_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "text", - "name": "text", - "value": "This template demonstates 4 types of go-to buttons. \n\nWrite x for the template example_emit.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_go_to_1", - "value": "Go to x", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_1" - }, - { - "type": "button", - "name": "button_go_to_2", - "value": "Go to x and don't come back", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - }, - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_2" - }, - { - "type": "button", - "name": "button_go_to_3", - "value": "Go to x and come back if x uncompleted", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_3" - }, - { - "type": "button", - "name": "button_go_to_4", - "value": "Go to x and come back if x completed", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "uncompleted | emit:completed", - "_cleaned": "uncompleted | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_4" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_go_to_2.json b/packages/app-data/sheets/template/debug/example_go_to_2.json deleted file mode 100644 index 345982d3f2..0000000000 --- a/packages/app-data/sheets/template/debug/example_go_to_2.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_go_to_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Button 1: Go to example emit", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "button", - "name": "button_go_to_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to: example_emit", - "_cleaned": "click | go_to: example_emit" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Button 2: Go to example_emit and mark as completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "button", - "name": "button_go_to_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - }, - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to_2" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_go_to_3.json b/packages/app-data/sheets/template/debug/example_go_to_3.json deleted file mode 100644 index 9549f59139..0000000000 --- a/packages/app-data/sheets/template/debug/example_go_to_3.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_go_to_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "Button 1: Go to example_emit and emit completed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "button", - "name": "button_go_to", - "value": "Button 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "example_emit" - ], - "_raw": "click | go_to:example_emit", - "_cleaned": "click | go_to:example_emit" - }, - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit:completed", - "_cleaned": "click | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_go_to" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_items.json b/packages/app-data/sheets/template/debug/example_items.json deleted file mode 100644 index 97f6009d13..0000000000 --- a/packages/app-data/sheets/template/debug/example_items.json +++ /dev/null @@ -1,429 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_items", - "status": "released", - "rows": [ - { - "type": "title", - "name": "basic_example", - "value": "Basic Example", - "_translations": { - "value": {} - }, - "_nested_name": "basic_example" - }, - { - "type": "items", - "value": "@data.example_items", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "item_text_1_@item.id", - "value": "@item.id", - "_translations": { - "value": {} - }, - "_nested_name": "items.item_text_1_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "item_text_1_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "_nested_name": [ - { - "fullExpression": "items.item_text_1_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "value", - "_nested_name" - ] - } - }, - { - "type": "text", - "name": "item_text_2_@item.id", - "value": "@item.name", - "_translations": { - "value": {} - }, - "_nested_name": "items.item_text_2_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "item_text_2_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.name", - "matchedExpression": "@item.name", - "type": "item", - "fieldName": "name" - } - ], - "_nested_name": [ - { - "fullExpression": "items.item_text_2_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.name": [ - "value" - ] - } - }, - { - "type": "text", - "name": "item_text_3_@item.id", - "value": "+@item._index+1", - "_translations": { - "value": {} - }, - "_nested_name": "items.item_text_3_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "item_text_3_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "+@item._index+1", - "matchedExpression": "@item._index", - "type": "item", - "fieldName": "_index" - } - ], - "_nested_name": [ - { - "fullExpression": "items.item_text_3_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item._index": [ - "value" - ] - } - } - ], - "name": "items", - "_nested_name": "items", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_items", - "matchedExpression": "@data.example_items", - "type": "data", - "fieldName": "example_items" - } - ] - }, - "_dynamicDependencies": { - "@data.example_items": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title", - "value": "Setting conditional variables", - "_translations": { - "value": {} - }, - "_nested_name": "title" - }, - { - "type": "items", - "value": "@data.example_items", - "rows": [ - { - "type": "set_field", - "name": "example_items_field_@item.id", - "value": "@item.field_value", - "_translations": { - "value": {} - }, - "condition": "@item.field_value > 2", - "_nested_name": "items.example_items_field_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "example_items_field_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.field_value", - "matchedExpression": "@item.field_value", - "type": "item", - "fieldName": "field_value" - } - ], - "condition": [ - { - "fullExpression": "@item.field_value > 2", - "matchedExpression": "@item.field_value", - "type": "item", - "fieldName": "field_value" - } - ], - "_nested_name": [ - { - "fullExpression": "items.example_items_field_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.field_value": [ - "value", - "condition" - ] - } - } - ], - "name": "items", - "_nested_name": "items", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_items", - "matchedExpression": "@data.example_items", - "type": "data", - "fieldName": "example_items" - } - ] - }, - "_dynamicDependencies": { - "@data.example_items": [ - "value" - ] - } - }, - { - "type": "text", - "name": "conditional_var_1", - "value": "This should be set as 7: @fields.example_items_field_item_1", - "_translations": { - "value": {} - }, - "_nested_name": "conditional_var_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This should be set as 7: @fields.example_items_field_item_1", - "matchedExpression": "@fields.example_items_field_item_1", - "type": "fields", - "fieldName": "example_items_field_item_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.example_items_field_item_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "conditional_var_2", - "value": "This should be not set (blank): @fields.example_items_field_item_2", - "_translations": { - "value": {} - }, - "_nested_name": "conditional_var_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This should be not set (blank): @fields.example_items_field_item_2", - "matchedExpression": "@fields.example_items_field_item_2", - "type": "fields", - "fieldName": "example_items_field_item_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.example_items_field_item_2": [ - "value" - ] - } - }, - { - "type": "title", - "name": "workshop_example", - "value": "Workshop Example", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_example" - }, - { - "type": "items", - "value": "@data.workshop", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "item_id_@item.id", - "value": "@item.id", - "_translations": { - "value": {} - }, - "_nested_name": "items.item_id_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "item_id_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "_nested_name": [ - { - "fullExpression": "items.item_id_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "value", - "_nested_name" - ] - } - }, - { - "type": "text", - "name": "item_number_@item.id", - "value": "@item.number", - "_translations": { - "value": {} - }, - "_nested_name": "items.item_number_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "item_number_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.number", - "matchedExpression": "@item.number", - "type": "item", - "fieldName": "number" - } - ], - "_nested_name": [ - { - "fullExpression": "items.item_number_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.number": [ - "value" - ] - } - } - ], - "name": "items", - "_nested_name": "items", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop", - "matchedExpression": "@data.workshop", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_items_unlock.json b/packages/app-data/sheets/template/debug/example_items_unlock.json deleted file mode 100644 index 49e276ebbe..0000000000 --- a/packages/app-data/sheets/template/debug/example_items_unlock.json +++ /dev/null @@ -1,339 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_items_unlock", - "status": "released", - "rows": [ - { - "type": "title", - "name": "workshop_example", - "value": "Example Items Unlock", - "_translations": { - "value": {} - }, - "_nested_name": "workshop_example" - }, - { - "type": "set_variable", - "name": "current_week", - "value": "@calc(window.date_fns.differenceInWeeks(new Date(), new Date(\"2021-08-01\"))+1)", - "_translations": { - "value": {} - }, - "_nested_name": "current_week", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(window.date_fns.differenceInWeeks(new Date(), new Date(\"2021-08-01\"))+1)", - "matchedExpression": "@calc(window.date_fns.differenceInWeeks(new Date(), new Date(\"2021-08-01\"))+1)", - "type": "calc", - "fieldName": "window.date_fns.differenceInWeeks(new Date(), new Date(\"2021-08-01\"))+1" - } - ] - }, - "_dynamicDependencies": { - "@calc(window.date_fns.differenceInWeeks(new Date(), new Date(\"2021-08-01\"))+1)": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_current_week", - "value": "@local.current_week", - "_translations": { - "value": {} - }, - "_nested_name": "text_current_week", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.current_week", - "matchedExpression": "@local.current_week", - "type": "local", - "fieldName": "current_week" - } - ] - }, - "_dynamicDependencies": { - "@local.current_week": [ - "value" - ] - } - }, - { - "type": "items", - "value": "@data.example_items", - "rows": [ - { - "type": "set_field", - "name": "@item.unlock_fieldname", - "value": "@calc(@item.unlock_week > @local.current_week)", - "_translations": { - "value": {} - }, - "_nested_name": "items.@item.unlock_fieldname", - "_dynamicFields": { - "name": [ - { - "fullExpression": "@item.unlock_fieldname", - "matchedExpression": "@item.unlock_fieldname", - "type": "item", - "fieldName": "unlock_fieldname" - } - ], - "value": [ - { - "fullExpression": "@calc(@item.unlock_week > @local.current_week)", - "matchedExpression": "@item.unlock_week", - "type": "item", - "fieldName": "unlock_week" - }, - { - "fullExpression": "@calc(@item.unlock_week > @local.current_week)", - "matchedExpression": "@local.current_week", - "type": "local", - "fieldName": "current_week" - }, - { - "fullExpression": "@calc(@item.unlock_week > @local.current_week)", - "matchedExpression": "@calc(@item.unlock_week > @local.current_week)", - "type": "calc", - "fieldName": "@item.unlock_week > @local.current_week" - } - ], - "_nested_name": [ - { - "fullExpression": "items.@item.unlock_fieldname", - "matchedExpression": "@item.unlock_fieldname", - "type": "item", - "fieldName": "unlock_fieldname" - } - ] - }, - "_dynamicDependencies": { - "@item.unlock_fieldname": [ - "name", - "_nested_name" - ], - "@item.unlock_week": [ - "value" - ], - "@local.current_week": [ - "value" - ], - "@calc(@item.unlock_week > @local.current_week)": [ - "value" - ] - } - }, - { - "type": "display_group", - "name": "group_@item.id", - "rows": [ - { - "type": "text", - "name": "text_group_item_@item.id", - "value": "group item: @item.id", - "_translations": { - "value": {} - }, - "_nested_name": "items.group_@item.id.text_group_item_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_group_item_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "group item: @item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "_nested_name": [ - { - "fullExpression": "items.group_@item.id.text_group_item_@item.id", - "matchedExpression": "@item.id.text_group_item_", - "type": "item", - "fieldName": "id" - }, - { - "fullExpression": "items.group_@item.id.text_group_item_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "value", - "_nested_name" - ], - "@item.id.text_group_item_": [ - "_nested_name" - ] - } - }, - { - "type": "text", - "name": "text_workshop_unlock_week_@item.id", - "value": "Unlock week: @item.unlock_week", - "_translations": { - "value": {} - }, - "_nested_name": "items.group_@item.id.text_workshop_unlock_week_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_workshop_unlock_week_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "Unlock week: @item.unlock_week", - "matchedExpression": "@item.unlock_week", - "type": "item", - "fieldName": "unlock_week" - } - ], - "_nested_name": [ - { - "fullExpression": "items.group_@item.id.text_workshop_unlock_week_@item.id", - "matchedExpression": "@item.id.text_workshop_unlock_week_", - "type": "item", - "fieldName": "id" - }, - { - "fullExpression": "items.group_@item.id.text_workshop_unlock_week_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.unlock_week": [ - "value" - ], - "@item.id.text_workshop_unlock_week_": [ - "_nested_name" - ] - } - }, - { - "type": "text", - "name": "text_workshop_unlocked_@item.id", - "value": "Unlocked: @fields.@item.unlock_fieldname", - "_translations": { - "value": {} - }, - "_nested_name": "items.group_@item.id.text_workshop_unlocked_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_workshop_unlocked_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "Unlocked: @fields.@item.unlock_fieldname", - "matchedExpression": "@item.unlock_fieldname", - "type": "item", - "fieldName": "unlock_fieldname" - } - ], - "_nested_name": [ - { - "fullExpression": "items.group_@item.id.text_workshop_unlocked_@item.id", - "matchedExpression": "@item.id.text_workshop_unlocked_", - "type": "item", - "fieldName": "id" - }, - { - "fullExpression": "items.group_@item.id.text_workshop_unlocked_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.unlock_fieldname": [ - "value" - ], - "@item.id.text_workshop_unlocked_": [ - "_nested_name" - ] - } - } - ], - "_nested_name": "items.group_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "group_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "_nested_name": [ - { - "fullExpression": "items.group_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ] - } - } - ], - "name": "items", - "_nested_name": "items", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_items", - "matchedExpression": "@data.example_items", - "type": "data", - "fieldName": "example_items" - } - ] - }, - "_dynamicDependencies": { - "@data.example_items": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_select.json b/packages/app-data/sheets/template/debug/example_lang_select.json deleted file mode 100644 index 86fdb942a6..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_select.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_select", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "Language Select", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "name": "language_list", - "value": [ - "name: za_en | text: English", - "name: es_sp | text: Español" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "language_list" - }, - { - "type": "radio_group", - "name": "language_select", - "value": "@fields._app_language", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "set_language", - "this.value" - ], - "_raw": "changed | emit: set_language:@local.language_select", - "_cleaned": "changed | emit: set_language:@local.language_select" - }, - { - "trigger": "changed", - "action_id": "emit", - "args": [ - "force_reload" - ], - "_raw": "changed | emit: force_reload", - "_cleaned": "changed | emit: force_reload" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.language_list" - }, - "_nested_name": "language_select", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields._app_language", - "matchedExpression": "@fields._app_language", - "type": "fields", - "fieldName": "_app_language" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | emit: set_language:@local.language_select", - "matchedExpression": "@local.language_select", - "type": "local", - "fieldName": "language_select" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | emit: set_language:@local.language_select", - "matchedExpression": "@local.language_select", - "type": "local", - "fieldName": "language_select" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.language_list", - "matchedExpression": "@local.language_list", - "type": "local", - "fieldName": "language_list" - } - ] - } - }, - "_dynamicDependencies": { - "@fields._app_language": [ - "value" - ], - "@local.language_select": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.language_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_template_1.json b/packages/app-data/sheets/template/debug/example_lang_template_1.json deleted file mode 100644 index aabb62d532..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_template_1.json +++ /dev/null @@ -1,1047 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_template_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "lang_select", - "value": "example_lang_select", - "rows": [], - "_nested_name": "lang_select" - }, - { - "type": "title", - "name": "title", - "value": "Example Language Template", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "title" - }, - { - "type": "text", - "name": "text_1", - "value": "This is a default text that needs to be translated", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "text_1" - }, - { - "type": "subtitle", - "name": "subtitle_1", - "value": "How are you feeling today?", - "_translations": { - "value": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "parameter_list": { - "style": "large" - }, - "_nested_name": "subtitle_1" - }, - { - "name": "answer_list_1", - "value": [ - "name:happy | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg", - "name:ok | image:plh_images/stickers/faces/neutral.svg | image_checked:plh_images/stickers/faces/neutral.svg", - "name:sad | image:plh_images/stickers/faces/sadder.svg | image_checked:plh_images/stickers/faces/sadder.svg" - ], - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "name": "options_per_row", - "value": 3, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "name": "radio_group_field_name", - "value": "radio_group_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "radio_group_field_name" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.radio_group_field_name", - "this.value" - ], - "_raw": "changed | set_field:@local.radio_group_field_name:@local.radio_group", - "_cleaned": "changed | set_field:@local.radio_group_field_name:@local.radio_group" - } - ], - "parameter_list": { - "answer_list": "@local.answer_list_1", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_field_name", - "matchedExpression": "@local.radio_group_field_name", - "type": "local", - "fieldName": "radio_group_field_name" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.radio_group_field_name:@local.radio_group", - "matchedExpression": "@local.radio_group_field_name", - "type": "local", - "fieldName": "radio_group_field_name" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_field_name:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.radio_group_field_name:@local.radio_group", - "matchedExpression": "@local.radio_group_field_name", - "type": "local", - "fieldName": "radio_group_field_name" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_field_name:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group_field_name": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "display_group", - "name": "reply_happy_dg", - "hidden": "@local.radio_group!=\"happy\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_happy", - "value": "This is the default reply if the feeling response is happy, the first option.", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "reply_happy_dg.reply_happy" - } - ], - "_nested_name": "reply_happy_dg", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group!=\"happy\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "reply_ok_dg", - "hidden": "@local.radio_group!=\"ok\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_ok", - "value": "This is the default reply if the feeling response is ok, the second option.", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "reply_ok_dg.reply_ok" - } - ], - "_nested_name": "reply_ok_dg", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group!=\"ok\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "reply_sad_dg", - "hidden": "@local.radio_group!=\"sad\"", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_sad", - "value": "This is the default reply if the feeling response is sad, the third option.", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "reply_sad_dg.reply_sad" - } - ], - "_nested_name": "reply_sad_dg", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group!=\"sad\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "_translations": { - "value": { - "es_sp": true - } - }, - "hidden": "!@local.radio_group", - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "matchedExpression": "@local.radio_group_field_name", - "type": "local", - "fieldName": "radio_group_field_name" - }, - { - "fullExpression": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "matchedExpression": "@local.radio_group_field_name", - "type": "local", - "fieldName": "radio_group_field_name" - } - ], - "hidden": [ - { - "fullExpression": "!@local.radio_group", - "matchedExpression": "!@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_field_name": [ - "value", - "value" - ], - "!@local.radio_group": [ - "hidden" - ] - } - }, - { - "name": "answer_list_2", - "value": [ - "name:happy | text:happy", - "name:ok | text:ok", - "name:sad | text:sad" - ], - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "type": "radio_group", - "name": "radio_group_2", - "parameter_list": { - "answer_list": "@local.answer_list_2", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "subtitle", - "name": "subtitle_2", - "value": "Select one of the following options:", - "_translations": { - "value": { - "es_sp": true - } - }, - "parameter_list": { - "style": "large" - }, - "_nested_name": "subtitle_2" - }, - { - "name": "combo_box_answered", - "value": false, - "type": "set_variable", - "_nested_name": "combo_box_answered" - }, - { - "name": "answer_list_2", - "value": [ - "name: option_1 | text:This is the first default option for the combo box", - "name: option_2 | text:This is the second default option for the combo box", - "name: option_3 | text:This is the third default option for the combo box" - ], - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "name": "placeholder", - "value": "@global.tap_and_choose", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "placeholder", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - }, - "_dynamicDependencies": { - "@global.tap_and_choose": [ - "value" - ] - } - }, - { - "name": "input_allowed", - "value": true, - "type": "set_variable", - "_nested_name": "input_allowed" - }, - { - "name": "answer_placeholder", - "value": "@global.type_your_own", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "answer_placeholder", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.type_your_own", - "matchedExpression": "@global.type_your_own", - "type": "global", - "fieldName": "type_your_own" - } - ] - }, - "_dynamicDependencies": { - "@global.type_your_own": [ - "value" - ] - } - }, - { - "name": "combo_box_field_name", - "value": "radio_group_field", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_field_name" - }, - { - "type": "combo_box", - "name": "combo_box", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.combo_box_field_name", - "this.value" - ], - "_raw": "changed | set_field:@local.combo_box_field_name:@local.combo_box", - "_cleaned": "changed | set_field:@local.combo_box_field_name:@local.combo_box" - }, - { - "trigger": "changed", - "action_id": "set_local", - "args": [ - "combo_box_answered", - true - ], - "_raw": "changed | set_local: combo_box_answered: true", - "_cleaned": "changed | set_local: combo_box_answered: true" - } - ], - "parameter_list": { - "answer_list": "@local.answer_list_2", - "placeholder": "@local.placeholder", - "input_allowed": "@local.input_allowed", - "answer_placeholder": "@local.answer_placeholder" - }, - "_nested_name": "combo_box", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_field_name", - "matchedExpression": "@local.combo_box_field_name", - "type": "local", - "fieldName": "combo_box_field_name" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.combo_box_field_name:@local.combo_box", - "matchedExpression": "@local.combo_box_field_name", - "type": "local", - "fieldName": "combo_box_field_name" - }, - { - "fullExpression": "changed | set_field:@local.combo_box_field_name:@local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.combo_box_field_name:@local.combo_box", - "matchedExpression": "@local.combo_box_field_name", - "type": "local", - "fieldName": "combo_box_field_name" - }, - { - "fullExpression": "changed | set_field:@local.combo_box_field_name:@local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ], - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ], - "input_allowed": [ - { - "fullExpression": "@local.input_allowed", - "matchedExpression": "@local.input_allowed", - "type": "local", - "fieldName": "input_allowed" - } - ], - "answer_placeholder": [ - { - "fullExpression": "@local.answer_placeholder", - "matchedExpression": "@local.answer_placeholder", - "type": "local", - "fieldName": "answer_placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box_field_name": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.combo_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ], - "@local.input_allowed": [ - "parameter_list.input_allowed" - ], - "@local.answer_placeholder": [ - "parameter_list.answer_placeholder" - ] - } - }, - { - "type": "display_group", - "name": "reply_dg", - "hidden": "!@local.combo_box_answered", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "reply_combo_box", - "value": "The option selected was @local.combo_box.", - "_translations": { - "value": { - "es_sp": true - } - }, - "_nested_name": "reply_dg.reply_combo_box", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The option selected was @local.combo_box.", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "value" - ] - } - } - ], - "_nested_name": "reply_dg", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@local.combo_box_answered", - "matchedExpression": "!@local.combo_box_answered", - "type": "local", - "fieldName": "combo_box_answered" - } - ] - }, - "_dynamicDependencies": { - "!@local.combo_box_answered": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "_translations": { - "value": { - "es_sp": true - } - }, - "hidden": "!@local.combo_box", - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "matchedExpression": "@local.combo_box_field_name", - "type": "local", - "fieldName": "combo_box_field_name" - }, - { - "fullExpression": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "matchedExpression": "@local.combo_box_field_name", - "type": "local", - "fieldName": "combo_box_field_name" - } - ], - "hidden": [ - { - "fullExpression": "!@local.combo_box", - "matchedExpression": "!@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_field_name": [ - "value", - "value" - ], - "!@local.combo_box": [ - "hidden" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Pop-up 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_lang_template_pop_1" - ], - "_raw": "click | pop_up:example_lang_template_pop_1", - "_cleaned": "click | pop_up:example_lang_template_pop_1" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Pop-up 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_lang_template_pop_2" - ], - "_raw": "click | pop_up:example_lang_template_pop_2", - "_cleaned": "click | pop_up:example_lang_template_pop_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2" - }, - { - "type": "display_group", - "name": "global_box", - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "text", - "name": "text_4", - "value": "Globals are updated and translated on language change, e.g. global.user_name_default:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_4" - }, - { - "type": "text", - "name": "text_5", - "value": "@global.user_name_default", - "_translations": { - "value": {} - }, - "_nested_name": "global_box.text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.user_name_default", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - }, - "_dynamicDependencies": { - "@global.user_name_default": [ - "value" - ] - } - } - ], - "_nested_name": "global_box" - }, - { - "type": "display_group", - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "text", - "name": "text_6", - "value": "(don't translate) The following text is a field:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.text_6" - }, - { - "type": "text", - "name": "text_7", - "value": "@fields.language_field_1", - "_translations": { - "value": {} - }, - "_nested_name": "display_group.text_7", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.language_field_1", - "matchedExpression": "@fields.language_field_1", - "type": "fields", - "fieldName": "language_field_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.language_field_1": [ - "value" - ] - } - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "text", - "name": "text_8", - "value": "(don't translate) The following text is a field defined in a global from a data list:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.text_8" - }, - { - "type": "text", - "name": "text_9", - "value": "@fields.language_field_2", - "_translations": { - "value": {} - }, - "_nested_name": "display_group.text_9", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.language_field_2", - "matchedExpression": "@fields.language_field_2", - "type": "fields", - "fieldName": "language_field_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.language_field_2": [ - "value" - ] - } - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "name": "global_box", - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "text", - "name": "text_10", - "value": "This is a global default which will update when language changed", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_10" - }, - { - "type": "text", - "name": "text_11", - "value": "@global.language_global_1", - "_translations": { - "value": {} - }, - "_nested_name": "global_box.text_11", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.language_global_1", - "matchedExpression": "@global.language_global_1", - "type": "global", - "fieldName": "language_global_1" - } - ] - }, - "_dynamicDependencies": { - "@global.language_global_1": [ - "value" - ] - } - } - ], - "_nested_name": "global_box" - }, - { - "type": "title", - "name": "translated_media", - "value": "Translated Media", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "translated_media" - }, - { - "type": "text", - "name": "image_translated_text", - "value": "The image below should change with language", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "image_translated_text" - }, - { - "type": "image", - "name": "image_translated", - "value": "quality_assurance/test_image.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "max-width:250px" - ], - "_nested_name": "image_translated" - }, - { - "type": "text", - "name": "image_translation_missing_text", - "value": "The image below will not change as the translation file is missing", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "image_translation_missing_text" - }, - { - "type": "image", - "name": "image_translation_missing", - "value": "quality_assurance/test_image_no_translations.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "max-width:250px" - ], - "_nested_name": "image_translation_missing" - }, - { - "name": "audio_title", - "value": "Audio message (changes with language)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "audio_title" - }, - { - "name": "audio_src", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "audio_src" - }, - { - "type": "audio", - "name": "audio_player", - "value": "@local.audio_src", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "title": "@local.audio_title" - }, - "_nested_name": "audio_player", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.audio_src", - "matchedExpression": "@local.audio_src", - "type": "local", - "fieldName": "audio_src" - } - ], - "parameter_list": { - "title": [ - { - "fullExpression": "@local.audio_title", - "matchedExpression": "@local.audio_title", - "type": "local", - "fieldName": "audio_title" - } - ] - } - }, - "_dynamicDependencies": { - "@local.audio_src": [ - "value" - ], - "@local.audio_title": [ - "parameter_list.title" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_template_2.json b/packages/app-data/sheets/template/debug/example_lang_template_2.json deleted file mode 100644 index acaf5de8a6..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_template_2.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_template_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "example_lang_template_1", - "value": "example_lang_template_1", - "rows": [ - { - "name": "text_1", - "value": "This is a modified text that needs to be translated.\n\nThis is a nested text.", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "example_lang_template_1.text_1" - }, - { - "name": "reply_happy", - "value": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "example_lang_template_1.reply_happy" - }, - { - "name": "reply_ok", - "value": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "example_lang_template_1.reply_ok" - }, - { - "name": "reply_sad", - "value": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "example_lang_template_1.reply_sad" - }, - { - "name": "subtitle_2", - "value": "Which of the following do you like the most (this is modified)?", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "example_lang_template_1.subtitle_2" - }, - { - "name": "answer_list_2", - "value": [ - "name: option_1 | text:Cats (modified text in answer list)", - "name: option_2 | text:Dogs (modified text in answer list)", - "name: option_3 | text:Chinchillas (modified text in answer list)" - ], - "type": "set_variable", - "_nested_name": "example_lang_template_1.answer_list_2" - }, - { - "name": "input_allowed", - "value": false, - "type": "set_variable", - "_nested_name": "example_lang_template_1.input_allowed" - } - ], - "_nested_name": "example_lang_template_1" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_template_3.json b/packages/app-data/sheets/template/debug/example_lang_template_3.json deleted file mode 100644 index dce5d17265..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_template_3.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_template_3", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "lang_select", - "value": "example_lang_select", - "rows": [], - "_nested_name": "lang_select" - }, - { - "type": "text", - "name": "text_1", - "value": "**@data.example_lang.example_lang_1.title**", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "**@data.example_lang.example_lang_1.title**", - "matchedExpression": "@data.example_lang.example_lang_1.title", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.title": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "@data.example_lang.example_lang_1.bold_title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.bold_title", - "matchedExpression": "@data.example_lang.example_lang_1.bold_title", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.bold_title": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "@data.example_lang.example_lang_1.title happy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.title happy", - "matchedExpression": "@data.example_lang.example_lang_1.title", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.title": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "@data.example_lang.example_lang_1.title_and_happy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.title_and_happy", - "matchedExpression": "@data.example_lang.example_lang_1.title_and_happy", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.title_and_happy": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_template_pop_1.json b/packages/app-data/sheets/template/debug/example_lang_template_pop_1.json deleted file mode 100644 index cc7c868dde..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_template_pop_1.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_template_pop_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "@data.example_lang.example_lang_1.title", - "_translations": { - "value": {} - }, - "_nested_name": "title_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.title", - "matchedExpression": "@data.example_lang.example_lang_1.title", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.title": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "@data.example_lang.example_lang_1.text", - "_translations": { - "value": {} - }, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.text", - "matchedExpression": "@data.example_lang.example_lang_1.text", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.text": [ - "value" - ] - } - }, - { - "type": "image", - "name": "image_1", - "value": "@data.example_lang.example_lang_1.image_asset", - "_translations": { - "value": {} - }, - "_nested_name": "image_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.image_asset", - "matchedExpression": "@data.example_lang.example_lang_1.image_asset", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.image_asset": [ - "value" - ] - } - }, - { - "type": "lottie_animation", - "name": "lottie_1", - "value": "@data.example_lang.example_lang_1.lottie_asset", - "_translations": { - "value": {} - }, - "_nested_name": "lottie_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_1.lottie_asset", - "matchedExpression": "@data.example_lang.example_lang_1.lottie_asset", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_1.lottie_asset": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_template_pop_2.json b/packages/app-data/sheets/template/debug/example_lang_template_pop_2.json deleted file mode 100644 index 3e556d1abd..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_template_pop_2.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_template_pop_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "example_lang_template_pop_1", - "value": "example_lang_template_pop_1", - "rows": [ - { - "name": "title_1", - "value": "New title: @data.example_lang.example_lang_2.title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_lang_template_pop_1.title_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "New title: @data.example_lang.example_lang_2.title", - "matchedExpression": "@data.example_lang.example_lang_2.title", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_2.title": [ - "value" - ] - } - }, - { - "name": "text_1", - "value": "New text: @data.example_lang.example_lang_2.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_lang_template_pop_1.text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "New text: @data.example_lang.example_lang_2.text", - "matchedExpression": "@data.example_lang.example_lang_2.text", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_2.text": [ - "value" - ] - } - }, - { - "name": "image_1", - "value": "@data.example_lang.example_lang_2.image_asset", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_lang_template_pop_1.image_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_2.image_asset", - "matchedExpression": "@data.example_lang.example_lang_2.image_asset", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_2.image_asset": [ - "value" - ] - } - }, - { - "name": "lottie_1", - "value": "@data.example_lang.example_lang_2.lottie_asset", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_lang_template_pop_1.lottie_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.example_lang.example_lang_2.lottie_asset", - "matchedExpression": "@data.example_lang.example_lang_2.lottie_asset", - "type": "data", - "fieldName": "example_lang" - } - ] - }, - "_dynamicDependencies": { - "@data.example_lang.example_lang_2.lottie_asset": [ - "value" - ] - } - } - ], - "_nested_name": "example_lang_template_pop_1" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_lang_user_name.json b/packages/app-data/sheets/template/debug/example_lang_user_name.json deleted file mode 100644 index 2563a9cb89..0000000000 --- a/packages/app-data/sheets/template/debug/example_lang_user_name.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_lang_user_name", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "lang_select", - "value": "example_lang_select", - "rows": [], - "_nested_name": "lang_select" - }, - { - "type": "title", - "name": "title", - "value": "User name translation", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "display_group", - "name": "global_box", - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "global.user_name_default:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "@global.user_name_default", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.user_name_default", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - }, - "_dynamicDependencies": { - "@global.user_name_default": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "fields.user_name:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_3" - }, - { - "type": "text", - "name": "text_4", - "value": "@fields.user_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "global_box.text_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.user_name", - "matchedExpression": "@fields.user_name", - "type": "fields", - "fieldName": "user_name" - } - ] - }, - "_dynamicDependencies": { - "@fields.user_name": [ - "value" - ] - } - } - ], - "_nested_name": "global_box" - }, - { - "type": "button", - "name": "button_1", - "value": "Set user_name to Bob", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "user_name", - "Bob" - ], - "_raw": "click | set_field : user_name : Bob", - "_cleaned": "click | set_field : user_name : Bob" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "Set user_name back to default", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "user_name", - "@global.user_name_default" - ], - "_raw": "click | set_field : user_name : @global.user_name_default", - "_cleaned": "click | set_field : user_name : @global.user_name_default" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@global.user_name_default", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : user_name : @global.user_name_default", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : user_name : @global.user_name_default", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - } - } - }, - "_dynamicDependencies": { - "@global.user_name_default": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "button", - "name": "button_3", - "value": "Set user_name back to default with \"\"", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "user_name", - "\"@global.user_name_default\"" - ], - "_raw": "click | set_field : user_name : \"@global.user_name_default\"", - "_cleaned": "click | set_field : user_name : \"@global.user_name_default\"" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_3", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "\"@global.user_name_default\"", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : user_name : \"@global.user_name_default\"", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : user_name : \"@global.user_name_default\"", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - } - } - }, - "_dynamicDependencies": { - "@global.user_name_default": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "button", - "name": "button_4", - "value": "Set user_name back to default with ''", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "user_name", - "'@global.user_name_default'" - ], - "_raw": "click | set_field : user_name : '@global.user_name_default'", - "_cleaned": "click | set_field : user_name : '@global.user_name_default'" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_4", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "'@global.user_name_default'", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field : user_name : '@global.user_name_default'", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field : user_name : '@global.user_name_default'", - "matchedExpression": "@global.user_name_default", - "type": "global", - "fieldName": "user_name_default" - } - ] - } - } - }, - "_dynamicDependencies": { - "@global.user_name_default": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_multiple_locals.json b/packages/app-data/sheets/template/debug/example_multiple_locals.json deleted file mode 100644 index 783d7d47f9..0000000000 --- a/packages/app-data/sheets/template/debug/example_multiple_locals.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_multiple_locals", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "name_1", - "value": "This is text 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "name_1" - }, - { - "name": "name_2", - "value": "This is text 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "name_2" - }, - { - "name": "name_3", - "value": "This is text 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "name_3" - }, - { - "name": "answer_list", - "value": [ - "name: name_1 | text: @local.name_1", - "name: name_2 | text: @local.name_2", - "name: name_3 | text: @local.name_3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list", - "_dynamicFields": { - "value": { - "0": [ - { - "fullExpression": "name: name_1 | text: @local.name_1", - "matchedExpression": "@local.name_1", - "type": "local", - "fieldName": "name_1" - } - ], - "1": [ - { - "fullExpression": "name: name_2 | text: @local.name_2", - "matchedExpression": "@local.name_2", - "type": "local", - "fieldName": "name_2" - } - ], - "2": [ - { - "fullExpression": "name: name_3 | text: @local.name_3", - "matchedExpression": "@local.name_3", - "type": "local", - "fieldName": "name_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.name_1": [ - "value.0" - ], - "@local.name_2": [ - "value.1" - ], - "@local.name_3": [ - "value.2" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_defaults", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "style": "active" - }, - "_nested_name": "combo_box_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text", - "value": "@local.@local.combo_box_defaults", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.@local.combo_box_defaults", - "matchedExpression": "@local.combo_box_defaults", - "type": "local", - "fieldName": "combo_box_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_defaults": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_multiple_locals.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_navigation_style.json b/packages/app-data/sheets/template/debug/example_navigation_style.json deleted file mode 100644 index 4f2c99baa4..0000000000 --- a/packages/app-data/sheets/template/debug/example_navigation_style.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_navigation_style", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "hide_page_1", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "hide_page_1" - }, - { - "name": "hide_page_2", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "hide_page_2" - }, - { - "type": "animated_section", - "name": "page_1", - "hidden": "@local.hide_page_1", - "exclude_from_translation": true, - "rows": [ - { - "type": "title", - "name": "title_page_1", - "value": "Page 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_1.title_page_1" - }, - { - "type": "text", - "name": "text_page_1", - "value": "This is page 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_1.text_page_1" - }, - { - "parameter_list": { - "style": "navigation" - }, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "page_1.set_variable" - }, - { - "type": "template", - "name": "page_1_nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_page_1", - true - ], - "_raw": "completed | set_local:hide_page_1:true", - "_cleaned": "completed | set_local:hide_page_1:true" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_page_2", - false - ], - "_raw": "completed | set_local:hide_page_2:false", - "_cleaned": "completed | set_local:hide_page_2:false" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "name": "button_completed", - "value": "Let's go!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "page_1.page_1_nav_buttons.button_completed" - } - ], - "_nested_name": "page_1.page_1_nav_buttons" - } - ], - "_nested_name": "page_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_page_1", - "matchedExpression": "@local.hide_page_1", - "type": "local", - "fieldName": "hide_page_1" - } - ] - }, - "_dynamicDependencies": { - "@local.hide_page_1": [ - "hidden" - ] - } - }, - { - "type": "animated_section", - "name": "page_2", - "hidden": "@local.hide_page_2", - "exclude_from_translation": true, - "rows": [ - { - "type": "title", - "name": "title_page_2", - "value": "Page 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_2.title_page_2" - }, - { - "type": "text", - "name": "text_page_2", - "value": "This is page 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_2.text_page_2" - }, - { - "type": "template", - "name": "page_2_nav_buttons", - "value": "nav_buttons", - "exclude_from_translation": true, - "parameter_list": { - "style": "navigation" - }, - "rows": [ - { - "name": "button_completed", - "value": "Finish", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "home_screen" - ], - "_raw": "click | go_to:home_screen", - "_cleaned": "click | go_to:home_screen" - } - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "page_2.page_2_nav_buttons.button_completed" - } - ], - "_nested_name": "page_2.page_2_nav_buttons" - } - ], - "_nested_name": "page_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_page_2", - "matchedExpression": "@local.hide_page_2", - "type": "local", - "fieldName": "hide_page_2" - } - ] - }, - "_dynamicDependencies": { - "@local.hide_page_2": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_navigation_style.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_navigation_style_2.json b/packages/app-data/sheets/template/debug/example_navigation_style_2.json deleted file mode 100644 index ad63780005..0000000000 --- a/packages/app-data/sheets/template/debug/example_navigation_style_2.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_navigation_style_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "page_1_title", - "value": "This Page", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_1_title" - }, - { - "type": "text", - "name": "page_1_text", - "value": "This is the text for this page", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "page_1_text" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "navigation" - }, - "rows": [ - { - "type": "button", - "name": "button_1", - "value": "return", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "home_screen" - ], - "_raw": "click | go_to:home_screen", - "_cleaned": "click | go_to:home_screen" - } - ], - "exclude_from_translation": true, - "_nested_name": "display_group.button_1" - }, - { - "type": "button", - "name": "button_2", - "value": "go back", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "home_screen" - ], - "_raw": "click | go_to:home_screen", - "_cleaned": "click | go_to:home_screen" - } - ], - "exclude_from_translation": true, - "_nested_name": "display_group.button_2" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "text", - "name": "hidden", - "value": "hideme", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "hidden" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_navigation_style.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_nested_comp_var.json b/packages/app-data/sheets/template/debug/example_nested_comp_var.json deleted file mode 100644 index 5dbdd4b871..0000000000 --- a/packages/app-data/sheets/template/debug/example_nested_comp_var.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_nested_comp_var", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "template", - "name": "nested_options_template", - "value": "example_double_ref_comp_var", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "first_template", - "value": "example_component_variables", - "exclude_from_translation": true, - "rows": [ - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:Option a", - "name:name_var_2 | text: Option b", - "name:name_var_3 | text: Option c" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "nested_options_template.first_template.answer_list" - } - ], - "_nested_name": "nested_options_template.first_template" - } - ], - "_nested_name": "nested_options_template" - }, - { - "type": "text", - "name": "text_with_nested_options", - "value": "text should be what is in the comment", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_with_nested_options" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_component_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_new_nav_buttons.json b/packages/app-data/sheets/template/debug/example_new_nav_buttons.json deleted file mode 100644 index 992bc18027..0000000000 --- a/packages/app-data/sheets/template/debug/example_new_nav_buttons.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_new_nav_buttons", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner" - }, - "rows": [ - { - "type": "text", - "name": "left", - "value": "left button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "flex:1" - ], - "_nested_name": "display_group.left" - }, - { - "type": "text", - "name": "blank_text", - "value": "\"\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "flex:4" - ], - "_nested_name": "display_group.blank_text" - }, - { - "type": "text", - "name": "right", - "value": "right button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "flex:1" - ], - "_nested_name": "display_group.right" - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_new_nav_buttons.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_pop_ups.json b/packages/app-data/sheets/template/debug/example_pop_ups.json deleted file mode 100644 index 61f96074d8..0000000000 --- a/packages/app-data/sheets/template/debug/example_pop_ups.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_pop_ups", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "This is the main template demonstrating three types of pop-ups.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1" - }, - { - "type": "text", - "name": "text_2", - "value": "Button 1 is a simple text pop-up:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2" - }, - { - "type": "button", - "name": "button_pop_up_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_1" - }, - { - "type": "text", - "name": "text_3", - "value": "Button 2 (example_go_to_2) dismisses on all:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3" - }, - { - "type": "button", - "name": "button_pop_up_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_go_to_2" - ], - "_raw": "click | pop_up:example_go_to_2", - "_cleaned": "click | pop_up:example_go_to_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_2" - }, - { - "type": "text", - "name": "text_4", - "value": "Button 3 (example_go_to_3) dismisses on completed:", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "button", - "name": "button_pop_up_3", - "value": "Button 3", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_go_to_3" - ], - "_raw": "click | pop_up:example_go_to_3", - "_cleaned": "click | pop_up:example_go_to_3" - }, - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_3" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_radio_group.json b/packages/app-data/sheets/template/debug/example_radio_group.json deleted file mode 100644 index b8c6a3d76e..0000000000 --- a/packages/app-data/sheets/template/debug/example_radio_group.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_radio_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_3 | text: Third | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_4 | text:Fourth | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg" - ], - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "radio_group", - "name": "radio_group", - "parameter_list": { - "answer_list": "@local.answer_list_1", - "select_multiple": "true" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text", - "value": "Value of radio_group: @local.radio_group", - "_translations": { - "value": {} - }, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of radio_group: @local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_radio_group.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_radio_group_fb_con.json b/packages/app-data/sheets/template/debug/example_radio_group_fb_con.json deleted file mode 100644 index e3c895974e..0000000000 --- a/packages/app-data/sheets/template/debug/example_radio_group_fb_con.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_radio_group_fb_con", - "status": "released", - "rows": [ - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_3 | text: Third | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "radio_group", - "name": "radio_group_defaults", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_reply_1", - "value": "This is the feedback for option 1", - "_translations": { - "value": {} - }, - "condition": "@local.radio_group_defaults == \"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.radio_group_defaults == \"name_var_1\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_reply_2", - "value": "This is the feedback for option 2", - "_translations": { - "value": {} - }, - "condition": "@local.radio_group_defaults == \"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_2", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.radio_group_defaults == \"name_var_2\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_reply_3", - "value": "This is the feedback for option 3", - "_translations": { - "value": {} - }, - "condition": "@local.radio_group_defaults == \"name_var_3\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_3", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.radio_group_defaults == \"name_var_3\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "condition" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_options_feedback.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_radio_group_fb_hid.json b/packages/app-data/sheets/template/debug/example_radio_group_fb_hid.json deleted file mode 100644 index 664862dfe5..0000000000 --- a/packages/app-data/sheets/template/debug/example_radio_group_fb_hid.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_radio_group_fb_hid", - "status": "released", - "rows": [ - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_3 | text: Third | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "radio_group", - "name": "radio_group_defaults", - "value": "na", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_reply_1", - "value": "This is the feedback for option 1", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group_defaults != \"name_var_1\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group_defaults != \"name_var_1\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_reply_2", - "value": "This is the feedback for option 2", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group_defaults != \"name_var_2\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group_defaults != \"name_var_2\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_reply_3", - "value": "This is the feedback for option 3", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group_defaults != \"name_var_3\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group_defaults != \"name_var_3\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_reply_universal", - "value": "This is the universal feedback", - "_translations": { - "value": {} - }, - "hidden": "@local.radio_group_defaults == \"na\"", - "exclude_from_translation": true, - "_nested_name": "text_reply_universal", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.radio_group_defaults == \"na\"", - "matchedExpression": "@local.radio_group_defaults", - "type": "local", - "fieldName": "radio_group_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_defaults": [ - "hidden" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_options_feedback.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_set_fields_in_action.json b/packages/app-data/sheets/template/debug/example_set_fields_in_action.json deleted file mode 100644 index 1ad24edc67..0000000000 --- a/packages/app-data/sheets/template/debug/example_set_fields_in_action.json +++ /dev/null @@ -1,403 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_set_fields_in_action", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_0", - "value": "The value of field_0 is @field.field_0", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_0", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of field_0 is @field.field_0", - "matchedExpression": "@field.field_0", - "type": "field", - "fieldName": "field_0" - } - ] - }, - "_dynamicDependencies": { - "@field.field_0": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_1", - "value": "Override field_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "field_1", - "\"New value of Field 1\"" - ], - "_raw": "click | set_field:field_1:\"New value of Field 1\"", - "_cleaned": "click | set_field:field_1:\"New value of Field 1\"" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_1" - }, - { - "type": "text", - "name": "text_1", - "value": "The value of field_1 is @field.field_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of field_1 is @field.field_1", - "matchedExpression": "@field.field_1", - "type": "field", - "fieldName": "field_1" - } - ] - }, - "_dynamicDependencies": { - "@field.field_1": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_2", - "value": "Create field_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "field_2", - "\"Value of Field 2\"" - ], - "_raw": "click | set_field:field_2:\"Value of Field 2\"", - "_cleaned": "click | set_field:field_2:\"Value of Field 2\"" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_2" - }, - { - "type": "text", - "name": "text_2", - "value": "The value of field_2 is @field.field_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of field_2 is @field.field_2", - "matchedExpression": "@field.field_2", - "type": "field", - "fieldName": "field_2" - } - ] - }, - "_dynamicDependencies": { - "@field.field_2": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_hidden_4", - "value": "This should be hidden when field_4 is TRUE", - "_translations": { - "value": {} - }, - "hidden": "@field.field_4", - "exclude_from_translation": true, - "_nested_name": "text_hidden_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.field_4", - "matchedExpression": "@field.field_4", - "type": "field", - "fieldName": "field_4" - } - ] - }, - "_dynamicDependencies": { - "@field.field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_not_hidden_4", - "value": "This should be hidden when field_4 is FALSE", - "_translations": { - "value": {} - }, - "hidden": "!@field.field_4", - "exclude_from_translation": true, - "_nested_name": "text_not_hidden_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@field.field_4", - "matchedExpression": "!@field.field_4", - "type": "field", - "fieldName": "field_4" - } - ] - }, - "_dynamicDependencies": { - "!@field.field_4": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_hidden_5", - "value": "This should be hidden when field_5 is more than 2", - "_translations": { - "value": {} - }, - "hidden": "@field.field_5>2", - "exclude_from_translation": true, - "_nested_name": "text_hidden_5", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.field_5>2", - "matchedExpression": "@field.field_5", - "type": "field", - "fieldName": "field_5" - } - ] - }, - "_dynamicDependencies": { - "@field.field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_not_hidden_5_a", - "value": "This should be hidden when field_5 is less than or equal to 2", - "_translations": { - "value": {} - }, - "hidden": "@field.field_5<=2", - "exclude_from_translation": true, - "_nested_name": "text_not_hidden_5_a", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@field.field_5<=2", - "matchedExpression": "@field.field_5", - "type": "field", - "fieldName": "field_5" - } - ] - }, - "_dynamicDependencies": { - "@field.field_5": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_not_hidden_5_b", - "value": "This should be hidden when field_5 is less than or equal to 2", - "_translations": { - "value": {} - }, - "hidden": "!@field.field_5>2", - "exclude_from_translation": true, - "_nested_name": "text_not_hidden_5_b", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@field.field_5>2", - "matchedExpression": "!@field.field_5", - "type": "field", - "fieldName": "field_5" - } - ] - }, - "_dynamicDependencies": { - "!@field.field_5": [ - "hidden" - ] - } - }, - { - "type": "button", - "name": "button_set_raw", - "value": "set raw value", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "example_raw", - "`@global.example_global_constant_text`" - ], - "_raw": "click | set_field:example_raw:`@global.example_global_constant_text`", - "_cleaned": "click | set_field:example_raw:`@global.example_global_constant_text`" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_set_raw", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "`@global.example_global_constant_text`", - "matchedExpression": "`@global.example_global_constant_text", - "type": "raw", - "fieldName": "example_global_constant_text" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | set_field:example_raw:`@global.example_global_constant_text`", - "matchedExpression": "`@global.example_global_constant_text", - "type": "raw", - "fieldName": "example_global_constant_text" - } - ], - "_cleaned": [ - { - "fullExpression": "click | set_field:example_raw:`@global.example_global_constant_text`", - "matchedExpression": "`@global.example_global_constant_text", - "type": "raw", - "fieldName": "example_global_constant_text" - } - ] - } - } - }, - "_dynamicDependencies": { - "`@global.example_global_constant_text": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_raw", - "value": "raw: `@fields.example_raw`", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_raw", - "_dynamicFields": { - "value": [ - { - "fullExpression": "raw: `@fields.example_raw`", - "matchedExpression": "`@fields.example_raw", - "type": "raw", - "fieldName": "example_raw" - } - ] - }, - "_dynamicDependencies": { - "`@fields.example_raw": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_raw_parsed", - "value": "parsed: @fields.example_raw", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_raw_parsed", - "_dynamicFields": { - "value": [ - { - "fullExpression": "parsed: @fields.example_raw", - "matchedExpression": "@fields.example_raw", - "type": "fields", - "fieldName": "example_raw" - } - ] - }, - "_dynamicDependencies": { - "@fields.example_raw": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_raw_combined", - "value": "will not work when combined:\nraw: `@fields.example_raw`\nparsed: @fields.example_raw", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_raw_combined", - "_dynamicFields": { - "value": [ - { - "fullExpression": "will not work when combined:\nraw: `@fields.example_raw`\nparsed: @fields.example_raw", - "matchedExpression": "`@fields.example_raw", - "type": "raw", - "fieldName": "example_raw" - }, - { - "fullExpression": "will not work when combined:\nraw: `@fields.example_raw`\nparsed: @fields.example_raw", - "matchedExpression": "@fields.example_raw", - "type": "fields", - "fieldName": "example_raw" - } - ] - }, - "_dynamicDependencies": { - "`@fields.example_raw": [ - "value" - ], - "@fields.example_raw": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_global_field.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_startup_trigger.json b/packages/app-data/sheets/template/debug/example_startup_trigger.json deleted file mode 100644 index 43710e8d76..0000000000 --- a/packages/app-data/sheets/template/debug/example_startup_trigger.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_startup_trigger", - "status": "released", - "rows": [ - { - "type": "title", - "name": "example_1", - "value": "Example Startup Trigger", - "_translations": { - "value": {} - }, - "_nested_name": "example_1" - }, - { - "type": "text", - "name": "example_startup_text", - "value": "example_startup_field: @fields.example_startup_field", - "_translations": { - "value": {} - }, - "_nested_name": "example_startup_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "example_startup_field: @fields.example_startup_field", - "matchedExpression": "@fields.example_startup_field", - "type": "fields", - "fieldName": "example_startup_field" - } - ] - }, - "_dynamicDependencies": { - "@fields.example_startup_field": [ - "value" - ] - } - }, - { - "type": "button", - "name": "trigger_1", - "value": "Trigger example_startup_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "process_template", - "args": [ - "example_startup_1" - ], - "_raw": "click | process_template: example_startup_1", - "_cleaned": "click | process_template: example_startup_1" - }, - { - "trigger": "click", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "click | emit: force_reprocess", - "_cleaned": "click | emit: force_reprocess" - } - ], - "_nested_name": "trigger_1" - }, - { - "type": "button", - "name": "trigger_2", - "value": "Trigger example_startup_2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "process_template", - "args": [ - "example_startup_2" - ], - "_raw": "click | process_template: example_startup_2", - "_cleaned": "click | process_template: example_startup_2" - }, - { - "trigger": "click", - "action_id": "emit", - "args": [ - "force_reprocess" - ], - "_raw": "click | emit: force_reprocess", - "_cleaned": "click | emit: force_reprocess" - } - ], - "_nested_name": "trigger_2" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_startup.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_text.json b/packages/app-data/sheets/template/debug/example_text.json deleted file mode 100644 index 9687b00a5a..0000000000 --- a/packages/app-data/sheets/template/debug/example_text.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "This is the example text template.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_text_button.json b/packages/app-data/sheets/template/debug/example_text_button.json deleted file mode 100644 index b77e5377d7..0000000000 --- a/packages/app-data/sheets/template/debug/example_text_button.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_text_button", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "Text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button", - "value": "Emit completed", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "click | emit: completed", - "_cleaned": "click | emit: completed" - } - ], - "exclude_from_translation": true, - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_condition.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_text_image.json b/packages/app-data/sheets/template/debug/example_text_image.json deleted file mode 100644 index d71be19f9d..0000000000 --- a/packages/app-data/sheets/template/debug/example_text_image.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_text_image", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "style_list": [ - "height: 100px" - ], - "_nested_name": "image" - }, - { - "type": "text", - "name": "text", - "value": "Example text and image template", - "_translations": { - "value": {} - }, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_pop_ups.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_text_option_1.json b/packages/app-data/sheets/template/debug/example_text_option_1.json deleted file mode 100644 index ca11896992..0000000000 --- a/packages/app-data/sheets/template/debug/example_text_option_1.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_text_option_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "You selected option 1", - "_translations": { - "value": {} - }, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_text_option_2.json b/packages/app-data/sheets/template/debug/example_text_option_2.json deleted file mode 100644 index 40fdbee68b..0000000000 --- a/packages/app-data/sheets/template/debug/example_text_option_2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_text_option_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text", - "value": "You selected option 2", - "_translations": { - "value": {} - }, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_update_sibling.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_tiles.json b/packages/app-data/sheets/template/debug/example_tiles.json deleted file mode 100644 index b5b414a69b..0000000000 --- a/packages/app-data/sheets/template/debug/example_tiles.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_tiles", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "quick_start_passive" - }, - "_nested_name": "tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_2", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "quick_start" - }, - "_nested_name": "tile_example_2" - }, - { - "type": "tile_component", - "name": "tile_example_3", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "quick_start_blue" - }, - "_nested_name": "tile_example_3" - }, - { - "type": "tile_component", - "name": "tile_example_4", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "quick_start_dark" - }, - "_nested_name": "tile_example_4" - }, - { - "type": "tile_component", - "name": "tile_example_5", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "parent_centre_1" - }, - "_nested_name": "tile_example_5" - }, - { - "type": "tile_component", - "name": "tile_example_6", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "parent_centre_2" - }, - "_nested_name": "tile_example_6" - }, - { - "type": "tile_component", - "name": "tile_example_7", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "parent_centre_3" - }, - "_nested_name": "tile_example_7" - }, - { - "type": "tile_component", - "name": "tile_example_8", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_white.svg", - "first_line_text": "First text", - "second_line_text": "Second text", - "style": "parent_centre_4" - }, - "_nested_name": "tile_example_8" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_tiles.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_title_text.json b/packages/app-data/sheets/template/debug/example_title_text.json deleted file mode 100644 index f3cd4ebefe..0000000000 --- a/packages/app-data/sheets/template/debug/example_title_text.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_title_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Example Title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "subtitle", - "name": "subtitle", - "value": "Example Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "subtitle" - }, - { - "type": "text", - "name": "text", - "value": "Example text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_render_grandchild_2.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_tour_template_1.json b/packages/app-data/sheets/template/debug/example_tour_template_1.json deleted file mode 100644 index 2599b52918..0000000000 --- a/packages/app-data/sheets/template/debug/example_tour_template_1.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_tour_template_1", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Example Tour Template 1", - "_translations": { - "value": {} - }, - "_nested_name": "title_1" - }, - { - "type": "set_variable", - "name": "show_button_1", - "value": true, - "_nested_name": "show_button_1" - }, - { - "type": "text", - "name": "text", - "value": "Template 1", - "_translations": { - "value": {} - }, - "_nested_name": "text" - }, - { - "type": "button", - "name": "button_1", - "value": "Click Me", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_local", - "args": [ - "show_button_1", - false - ], - "_raw": "click | set_local:show_button_1:false", - "_cleaned": "click | set_local:show_button_1:false" - } - ], - "condition": "@local.show_button_1", - "_nested_name": "button_1", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.show_button_1", - "matchedExpression": "@local.show_button_1", - "type": "local", - "fieldName": "show_button_1" - } - ] - }, - "_dynamicDependencies": { - "@local.show_button_1": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Conditional logic works!", - "_translations": { - "value": {} - }, - "condition": "!@local.show_button_1", - "_nested_name": "text_2", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@local.show_button_1", - "matchedExpression": "!@local.show_button_1", - "type": "local", - "fieldName": "show_button_1" - } - ] - }, - "_dynamicDependencies": { - "!@local.show_button_1": [ - "condition" - ] - } - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_tour.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_update_actions.json b/packages/app-data/sheets/template/debug/example_update_actions.json deleted file mode 100644 index 41967d9778..0000000000 --- a/packages/app-data/sheets/template/debug/example_update_actions.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_update_actions", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "set_variable", - "name": "nav_resume_message", - "value": "Welcome Back!", - "_translations": { - "value": {} - }, - "_nested_name": "nav_resume_message" - }, - { - "type": "update_action_list", - "name": "custom_actions_1", - "action_list": [ - { - "trigger": "nav_resume", - "action_id": "set_local", - "args": [ - "text_1", - "@local.nav_resume_message" - ], - "_raw": "nav_resume | set_local:text_1:@local.nav_resume_message", - "_cleaned": "nav_resume | set_local:text_1:@local.nav_resume_message" - } - ], - "_nested_name": "custom_actions_1", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.nav_resume_message", - "matchedExpression": "@local.nav_resume_message", - "type": "local", - "fieldName": "nav_resume_message" - } - ] - }, - "_raw": [ - { - "fullExpression": "nav_resume | set_local:text_1:@local.nav_resume_message", - "matchedExpression": "@local.nav_resume_message", - "type": "local", - "fieldName": "nav_resume_message" - } - ], - "_cleaned": [ - { - "fullExpression": "nav_resume | set_local:text_1:@local.nav_resume_message", - "matchedExpression": "@local.nav_resume_message", - "type": "local", - "fieldName": "nav_resume_message" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.nav_resume_message": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "I will update after the popup has closed", - "_translations": { - "value": {} - }, - "_nested_name": "text_1" - }, - { - "type": "button", - "value": "Show Popup", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up:example_text", - "_cleaned": "click | pop_up:example_text" - } - ], - "name": "button", - "_nested_name": "button" - }, - { - "type": "set_field", - "name": "example_count", - "value": 1, - "condition": "!@fields.example_count", - "_nested_name": "example_count", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!@fields.example_count", - "matchedExpression": "!@fields.example_count", - "type": "fields", - "fieldName": "example_count" - } - ] - }, - "_dynamicDependencies": { - "!@fields.example_count": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "example_count_text", - "value": "Example count: @fields.example_count", - "_translations": { - "value": {} - }, - "_nested_name": "example_count_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Example count: @fields.example_count", - "matchedExpression": "@fields.example_count", - "type": "fields", - "fieldName": "example_count" - } - ] - }, - "_dynamicDependencies": { - "@fields.example_count": [ - "value" - ] - } - }, - { - "type": "update_action_list", - "name": "custom_actions_2", - "action_list": [ - { - "trigger": "nav_resume", - "action_id": "set_field", - "args": [ - "example_count", - "+@fields.example_count + 1" - ], - "_raw": "nav_resume | set_field: example_count: +@fields.example_count + 1", - "_cleaned": "nav_resume | set_field: example_count: +@fields.example_count + 1" - } - ], - "_nested_name": "custom_actions_2", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "+@fields.example_count + 1", - "matchedExpression": "@fields.example_count", - "type": "fields", - "fieldName": "example_count" - } - ] - }, - "_raw": [ - { - "fullExpression": "nav_resume | set_field: example_count: +@fields.example_count + 1", - "matchedExpression": "@fields.example_count", - "type": "fields", - "fieldName": "example_count" - } - ], - "_cleaned": [ - { - "fullExpression": "nav_resume | set_field: example_count: +@fields.example_count + 1", - "matchedExpression": "@fields.example_count", - "type": "fields", - "fieldName": "example_count" - } - ] - } - } - }, - "_dynamicDependencies": { - "@fields.example_count": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_actions.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_widget_audio_def.json b/packages/app-data/sheets/template/debug/example_widget_audio_def.json deleted file mode 100644 index 9d4c098afc..0000000000 --- a/packages/app-data/sheets/template/debug/example_widget_audio_def.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_widget_audio_def", - "status": "released", - "rows": [ - { - "type": "audio", - "name": "audio_1", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "audio_1" - }, - { - "name": "help_text", - "value": "This is the text for the questionmark icon", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "help_text" - }, - { - "type": "audio", - "name": "audio_2", - "exclude_from_translation": true, - "parameter_list": { - "src": "plh_audio/sample.mp3", - "title": "New Title Test", - "help": "@local.help_text", - "rangeBarDisabled": "true", - "timeToRewind": "2" - }, - "_nested_name": "audio_2", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "audio", - "name": "audio_3", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "title": "New Title Test", - "help": "@local.help_text", - "rangeBarDisabled": "true", - "timeToRewind": "2" - }, - "_nested_name": "audio_3", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_widgets.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_widget_combo_box.json b/packages/app-data/sheets/template/debug/example_widget_combo_box.json deleted file mode 100644 index 28b16ca2ab..0000000000 --- a/packages/app-data/sheets/template/debug/example_widget_combo_box.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_widget_combo_box", - "status": "released", - "rows": [ - { - "name": "question_text", - "value": "This is the question", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "question_text" - }, - { - "name": "answers_list", - "value": [ - "[Option 1", - "Option 2", - "Option 3]" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answers_list" - }, - { - "type": "text", - "name": "question", - "value": "@local.question_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "question", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.question_text", - "matchedExpression": "@local.question_text", - "type": "local", - "fieldName": "question_text" - } - ] - }, - "_dynamicDependencies": { - "@local.question_text": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_1", - "exclude_from_translation": true, - "parameter_list": { - "text": "@local.question_text", - "input_allowed": "true", - "input_position": "top", - "placeholder": "Answer Prompt", - "answer_placeholder": "Enter Your Own Answer", - "answers_list": "@local.answers_list" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "parameter_list": { - "text": [ - { - "fullExpression": "@local.question_text", - "matchedExpression": "@local.question_text", - "type": "local", - "fieldName": "question_text" - } - ], - "answers_list": [ - { - "fullExpression": "@local.answers_list", - "matchedExpression": "@local.answers_list", - "type": "local", - "fieldName": "answers_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.question_text": [ - "parameter_list.text" - ], - "@local.answers_list": [ - "parameter_list.answers_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_widgets.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_widget_nesting_audio.json b/packages/app-data/sheets/template/debug/example_widget_nesting_audio.json deleted file mode 100644 index 6a203057a5..0000000000 --- a/packages/app-data/sheets/template/debug/example_widget_nesting_audio.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_widget_nesting_audio", - "status": "released", - "rows": [ - { - "name": "source_file", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "source_file" - }, - { - "name": "title_name", - "value": "This title has been overridden correctly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "title_name" - }, - { - "name": "help_msg", - "value": "This help message has been overriden correctly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "help_msg" - }, - { - "name": "no_range_bar", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "no_range_bar" - }, - { - "name": "rew_time", - "value": 12, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "rew_time" - }, - { - "type": "template", - "name": "overridden_audio", - "value": "example_widget_audio_def", - "exclude_from_translation": true, - "rows": [ - { - "name": "audio_1", - "value": "@local.source_file", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "title": "@local.title_name" - }, - "type": "set_variable", - "_nested_name": "overridden_audio.audio_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.source_file", - "matchedExpression": "@local.source_file", - "type": "local", - "fieldName": "source_file" - } - ], - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_name", - "matchedExpression": "@local.title_name", - "type": "local", - "fieldName": "title_name" - } - ] - } - }, - "_dynamicDependencies": { - "@local.source_file": [ - "value" - ], - "@local.title_name": [ - "parameter_list.title" - ] - } - }, - { - "name": "audio_2", - "hidden": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "overridden_audio.audio_2" - } - ], - "_nested_name": "overridden_audio" - }, - { - "type": "audio", - "name": "audio_3", - "exclude_from_translation": true, - "parameter_list": { - "title": "@local.title_name", - "src": "@local.source_file", - "help": "@local.help_msg", - "rangeBarDisabled": "@local.no_range_bar", - "timeToRewind": "@local.rew_time" - }, - "_nested_name": "audio_3", - "_dynamicFields": { - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_name", - "matchedExpression": "@local.title_name", - "type": "local", - "fieldName": "title_name" - } - ], - "src": [ - { - "fullExpression": "@local.source_file", - "matchedExpression": "@local.source_file", - "type": "local", - "fieldName": "source_file" - } - ], - "help": [ - { - "fullExpression": "@local.help_msg", - "matchedExpression": "@local.help_msg", - "type": "local", - "fieldName": "help_msg" - } - ], - "rangeBarDisabled": [ - { - "fullExpression": "@local.no_range_bar", - "matchedExpression": "@local.no_range_bar", - "type": "local", - "fieldName": "no_range_bar" - } - ], - "timeToRewind": [ - { - "fullExpression": "@local.rew_time", - "matchedExpression": "@local.rew_time", - "type": "local", - "fieldName": "rew_time" - } - ] - } - }, - "_dynamicDependencies": { - "@local.title_name": [ - "parameter_list.title" - ], - "@local.source_file": [ - "parameter_list.src" - ], - "@local.help_msg": [ - "parameter_list.help" - ], - "@local.no_range_bar": [ - "parameter_list.rangeBarDisabled" - ], - "@local.rew_time": [ - "parameter_list.timeToRewind" - ] - } - }, - { - "type": "text", - "name": "helping_text", - "value": "@local.title_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "helping_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.title_name", - "matchedExpression": "@local.title_name", - "type": "local", - "fieldName": "title_name" - } - ] - }, - "_dynamicDependencies": { - "@local.title_name": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_widgets.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_widget_radio_button_box.json b/packages/app-data/sheets/template/debug/example_widget_radio_button_box.json deleted file mode 100644 index a3304ee794..0000000000 --- a/packages/app-data/sheets/template/debug/example_widget_radio_button_box.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "example_widget_radio_button_box", - "status": "released", - "rows": [ - { - "name": "answer_list", - "value": [ - "name:name_var_1 | text:happy", - "name:name_var_2 | text: ok", - "name:name_var_3 | text: sad" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "radio_group", - "name": "radio_group_square_ex_1", - "exclude_from_translation": true, - "parameter_list": { - "radio_button_type": "btn_triangle", - "answer_list": "@local.answer_list", - "style": "passive" - }, - "_nested_name": "radio_group_square_ex_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_widgets.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/example_workshops_accordion.json b/packages/app-data/sheets/template/debug/example_workshops_accordion.json deleted file mode 100644 index 8b54a5796c..0000000000 --- a/packages/app-data/sheets/template/debug/example_workshops_accordion.json +++ /dev/null @@ -1,501 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_workshops_accordion", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_group", - "value": "@global.together", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together", - "matchedExpression": "@global.together", - "type": "global", - "fieldName": "together" - } - ] - }, - "_dynamicDependencies": { - "@global.together": [ - "value" - ] - } - }, - { - "name": "image_group", - "value": "@global.together_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_group", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.together_image", - "matchedExpression": "@global.together_image", - "type": "global", - "fieldName": "together_image" - } - ] - }, - "_dynamicDependencies": { - "@global.together_image": [ - "value" - ] - } - }, - { - "name": "label_individual", - "value": "@global.individual", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "label_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual", - "matchedExpression": "@global.individual", - "type": "global", - "fieldName": "individual" - } - ] - }, - "_dynamicDependencies": { - "@global.individual": [ - "value" - ] - } - }, - { - "name": "image_individual", - "value": "@global.individual_image", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "image_individual", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.individual_image", - "matchedExpression": "@global.individual_image", - "type": "global", - "fieldName": "individual_image" - } - ] - }, - "_dynamicDependencies": { - "@global.individual_image": [ - "value" - ] - } - }, - { - "name": "title_1", - "value": "First title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_1" - }, - { - "name": "text_1", - "value": "Text 1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_1" - }, - { - "name": "title_2", - "value": "Second title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_2" - }, - { - "name": "text_2", - "value": "Text 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_2" - }, - { - "name": "title_3", - "value": "Third title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_3" - }, - { - "name": "text_3", - "value": "Text 3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "text_3" - }, - { - "name": "title_4", - "value": "Fourth title", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "title_4" - }, - { - "type": "set_field", - "name": "debug_completion_level", - "value": 0, - "_nested_name": "debug_completion_level" - }, - { - "type": "set_field", - "name": "debug_section_3_disabled", - "value": true, - "_nested_name": "debug_section_3_disabled" - }, - { - "type": "workshops_accordion", - "name": "workshops_accordion", - "rows": [ - { - "type": "accordion_section", - "name": "first", - "parameter_list": { - "state": "open", - "title": "@local.title_1" - }, - "rows": [ - { - "type": "template", - "name": "template_1", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "@local.text_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshops_accordion.first.template_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_1", - "matchedExpression": "@local.text_1", - "type": "local", - "fieldName": "text_1" - } - ] - }, - "_dynamicDependencies": { - "@local.text_1": [ - "value" - ] - } - } - ], - "_nested_name": "workshops_accordion.first.template_1" - } - ], - "_nested_name": "workshops_accordion.first", - "_dynamicFields": { - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_1", - "matchedExpression": "@local.title_1", - "type": "local", - "fieldName": "title_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.title_1": [ - "parameter_list.title" - ] - } - }, - { - "name": "completion_level_2", - "value": "+0", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshops_accordion.completion_level_2" - }, - { - "type": "accordion_section", - "name": "second", - "value": "@fields.debug_completion_level", - "parameter_list": { - "title": "@local.title_2" - }, - "rows": [ - { - "type": "template", - "name": "template_2", - "value": "example_text_button", - "rows": [ - { - "name": "text", - "value": "@local.text_2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshops_accordion.second.template_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_2", - "matchedExpression": "@local.text_2", - "type": "local", - "fieldName": "text_2" - } - ] - }, - "_dynamicDependencies": { - "@local.text_2": [ - "value" - ] - } - }, - { - "name": "button", - "value": "Button 2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshops_accordion.second.template_2.button" - } - ], - "_nested_name": "workshops_accordion.second.template_2" - } - ], - "_nested_name": "workshops_accordion.second", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.debug_completion_level", - "matchedExpression": "@fields.debug_completion_level", - "type": "fields", - "fieldName": "debug_completion_level" - } - ], - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_2", - "matchedExpression": "@local.title_2", - "type": "local", - "fieldName": "title_2" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.debug_completion_level": [ - "value" - ], - "@local.title_2": [ - "parameter_list.title" - ] - } - }, - { - "type": "accordion_section", - "name": "third", - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "example_text" - ], - "_raw": "click | pop_up: example_text", - "_cleaned": "click | pop_up: example_text" - } - ], - "parameter_list": { - "title": "@local.title_3", - "launch_when_locked": "true" - }, - "disabled": "@fields.debug_section_3_disabled", - "rows": [ - { - "type": "template", - "name": "template_3", - "value": "example_text", - "rows": [ - { - "name": "text", - "value": "@local.text_3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "workshops_accordion.third.template_3.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.text_3", - "matchedExpression": "@local.text_3", - "type": "local", - "fieldName": "text_3" - } - ] - }, - "_dynamicDependencies": { - "@local.text_3": [ - "value" - ] - } - } - ], - "_nested_name": "workshops_accordion.third.template_3" - } - ], - "_nested_name": "workshops_accordion.third", - "_dynamicFields": { - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_3", - "matchedExpression": "@local.title_3", - "type": "local", - "fieldName": "title_3" - } - ] - }, - "disabled": [ - { - "fullExpression": "@fields.debug_section_3_disabled", - "matchedExpression": "@fields.debug_section_3_disabled", - "type": "fields", - "fieldName": "debug_section_3_disabled" - } - ] - }, - "_dynamicDependencies": { - "@local.title_3": [ - "parameter_list.title" - ], - "@fields.debug_section_3_disabled": [ - "disabled" - ] - } - }, - { - "type": "accordion_section", - "name": "fourth", - "parameter_list": { - "title": "@local.title_4" - }, - "rows": [ - { - "type": "text", - "name": "text_4", - "value": "Text 4", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fourth.text_4" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshops/w_rules/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fourth.image" - } - ], - "_nested_name": "workshops_accordion.fourth", - "_dynamicFields": { - "parameter_list": { - "title": [ - { - "fullExpression": "@local.title_4", - "matchedExpression": "@local.title_4", - "type": "local", - "fieldName": "title_4" - } - ] - } - }, - "_dynamicDependencies": { - "@local.title_4": [ - "parameter_list.title" - ] - } - }, - { - "type": "accordion_section", - "name": "fifth", - "parameter_list": { - "title": "Title 5" - }, - "rows": [ - { - "type": "text", - "name": "text_5", - "value": "Text 5", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.text_5" - }, - { - "type": "button", - "name": "button_5", - "value": "Button 5", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.button_5" - }, - { - "type": "button", - "name": "button_6", - "value": "Button 6", - "_translations": { - "value": {} - }, - "_nested_name": "workshops_accordion.fifth.button_6" - } - ], - "_nested_name": "workshops_accordion.fifth" - } - ], - "_nested_name": "workshops_accordion" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_accordion.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_audio.json b/packages/app-data/sheets/template/debug/feature_audio.json deleted file mode 100644 index fd9df5bd96..0000000000 --- a/packages/app-data/sheets/template/debug/feature_audio.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_audio", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "audio", - "name": "audio_1", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "range_bar_disabled": "true", - "time_to_rewind": "5", - "title": "Audio player #1" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "audio_1" - }, - { - "type": "audio", - "name": "audio_2", - "value": "quality_assurance/test_audio.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "range_bar_disabled": "false", - "time_to_rewind": "3", - "title": "Audio player #2", - "help": "Example" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "audio_2" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_checkbox.json b/packages/app-data/sheets/template/debug/feature_checkbox.json deleted file mode 100644 index 1959efaa74..0000000000 --- a/packages/app-data/sheets/template/debug/feature_checkbox.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_checkbox", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "label_text", - "value": "Label text in local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "label_text" - }, - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox", - "this.value" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Reverse true", - "reverse": "true" - }, - "_nested_name": "checkbox_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "checkbox field: @field.demo_changed_field_checkbox", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox field: @field.demo_changed_field_checkbox", - "matchedExpression": "@field.demo_changed_field_checkbox", - "type": "field", - "fieldName": "demo_changed_field_checkbox" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_checkbox": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "checkbox local: @local.checkbox_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?", - "align": "left" - }, - "_nested_name": "checkbox_2" - }, - { - "type": "text", - "name": "text_3", - "value": "checkbox local: @local.checkbox_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "checkbox local: @local.checkbox_2", - "matchedExpression": "@local.checkbox_2", - "type": "local", - "fieldName": "checkbox_2" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_2": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_3", - "value": "@field.demo_changed_field_checkbox", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?", - "align": "center" - }, - "_nested_name": "checkbox_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@field.demo_changed_field_checkbox", - "matchedExpression": "@field.demo_changed_field_checkbox", - "type": "field", - "fieldName": "demo_changed_field_checkbox" - } - ] - }, - "_dynamicDependencies": { - "@field.demo_changed_field_checkbox": [ - "value" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_4", - "value": false, - "exclude_from_translation": true, - "_nested_name": "checkbox_4" - }, - { - "type": "simple_checkbox", - "name": "checkbox_5", - "value": true, - "exclude_from_translation": true, - "_nested_name": "checkbox_5" - }, - { - "type": "simple_checkbox", - "name": "checkbox_6", - "value": "@local.checkbox_4", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "checkbox_6", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.checkbox_4", - "matchedExpression": "@local.checkbox_4", - "type": "local", - "fieldName": "checkbox_4" - } - ] - }, - "_dynamicDependencies": { - "@local.checkbox_4": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_4", - "value": "Checkbox with label_text set through local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_4" - }, - { - "type": "simple_checkbox", - "name": "checkbox_7", - "exclude_from_translation": true, - "parameter_list": { - "label_text": "@local.label_text", - "align": "right" - }, - "_nested_name": "checkbox_7", - "_dynamicFields": { - "parameter_list": { - "label_text": [ - { - "fullExpression": "@local.label_text", - "matchedExpression": "@local.label_text", - "type": "local", - "fieldName": "label_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.label_text": [ - "parameter_list.label_text" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_combo_box.json b/packages/app-data/sheets/template/debug/feature_combo_box.json deleted file mode 100644 index 8be2e29ef5..0000000000 --- a/packages/app-data/sheets/template/debug/feature_combo_box.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_combo_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "type": "combo_box", - "name": "combo_box_defaults", - "value": "nothing", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "style": "active" - }, - "_nested_name": "combo_box_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_result", - "value": "You selected @local.combo_box_defaults", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_result", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.combo_box_defaults", - "matchedExpression": "@local.combo_box_defaults", - "type": "local", - "fieldName": "combo_box_defaults" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_defaults": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_text_in_pop_up", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "text": "Text above the answers", - "placeholder": "Click here to answer", - "style": "active" - }, - "_nested_name": "combo_box_text_in_pop_up", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_with_placeholder_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer" - }, - "_nested_name": "combo_box_with_placeholder_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_with_placeholder_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer" - }, - "_nested_name": "combo_box_with_placeholder_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_result", - "value": "You selected @local.combo_box_with_placeholder_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_result", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You selected @local.combo_box_with_placeholder_2", - "matchedExpression": "@local.combo_box_with_placeholder_2", - "type": "local", - "fieldName": "combo_box_with_placeholder_2" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box_with_placeholder_2": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_allow_input", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer", - "input_allowed": "true", - "answer_placeholder": "Type your own", - "style": "active" - }, - "_nested_name": "combo_box_allow_input", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "input_allowed", - "value": true, - "type": "set_variable", - "_nested_name": "input_allowed" - }, - { - "type": "combo_box", - "name": "combo_box_allow_input_through_var", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "Click here to answer", - "input_allowed": "@local.input_allowed", - "answer_placeholder": "Type your own", - "style": "active" - }, - "_nested_name": "combo_box_allow_input_through_var", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "input_allowed": [ - { - "fullExpression": "@local.input_allowed", - "matchedExpression": "@local.input_allowed", - "type": "local", - "fieldName": "input_allowed" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.input_allowed": [ - "parameter_list.input_allowed" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_combo_box_placeholder.json b/packages/app-data/sheets/template/debug/feature_combo_box_placeholder.json deleted file mode 100644 index 0aceab6fc8..0000000000 --- a/packages/app-data/sheets/template/debug/feature_combo_box_placeholder.json +++ /dev/null @@ -1,554 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_combo_box_placeholder", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list", - "value": [ - "name: name_1 | text: This is text 1", - "name: name_2 | text: This is text 2", - "name: name_3 | text: This is text 3" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list" - }, - { - "name": "placeholder", - "value": "placeholder", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "placeholder" - }, - { - "type": "set_field", - "name": "feature_default_choice", - "value": "name_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "feature_default_choice" - }, - { - "type": "text", - "name": "text_1", - "value": "Combo box 1: \nShows @local.placeholder when no user input is given and when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Combo box 1: \nShows @local.placeholder when no user input is given and when user input is deleted.", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_1", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_choice_tracker_1", - "this.value" - ], - "_raw": "changed | set_field:feature_choice_tracker_1:@local.combo_box_1", - "_cleaned": "changed | set_field:feature_choice_tracker_1:@local.combo_box_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "@local.placeholder" - }, - "_nested_name": "combo_box_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_1:@local.combo_box_1", - "matchedExpression": "@local.combo_box_1", - "type": "local", - "fieldName": "combo_box_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_1:@local.combo_box_1", - "matchedExpression": "@local.combo_box_1", - "type": "local", - "fieldName": "combo_box_1" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Combo box 2: \nShows the text associated to @fields.feature_default_choice before user input is given. Is blank when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Combo box 2: \nShows the text associated to @fields.feature_default_choice before user input is given. Is blank when user input is deleted.", - "matchedExpression": "@fields.feature_default_choice", - "type": "fields", - "fieldName": "feature_default_choice" - } - ] - }, - "_dynamicDependencies": { - "@fields.feature_default_choice": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_choice_tracker_2", - "this.value" - ], - "_raw": "changed | set_field:feature_choice_tracker_2:@local.combo_box_2", - "_cleaned": "changed | set_field:feature_choice_tracker_2:@local.combo_box_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list" - }, - "_nested_name": "combo_box_2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_2:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2", - "type": "local", - "fieldName": "combo_box_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_2:@local.combo_box_2", - "matchedExpression": "@local.combo_box_2", - "type": "local", - "fieldName": "combo_box_2" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Combo boxes 3 and 4: \nShows the text associated to @fields.feature_default_choice before user input is given. Shows @local.placeholder when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Combo boxes 3 and 4: \nShows the text associated to @fields.feature_default_choice before user input is given. Shows @local.placeholder when user input is deleted.", - "matchedExpression": "@fields.feature_default_choice", - "type": "fields", - "fieldName": "feature_default_choice" - }, - { - "fullExpression": "Combo boxes 3 and 4: \nShows the text associated to @fields.feature_default_choice before user input is given. Shows @local.placeholder when user input is deleted.", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@fields.feature_default_choice": [ - "value" - ], - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_3", - "value": "@fields.feature_default_choice", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_choice_tracker_3", - "this.value" - ], - "_raw": "changed | set_field:feature_choice_tracker_3:@local.combo_box_3", - "_cleaned": "changed | set_field:feature_choice_tracker_3:@local.combo_box_3" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "@local.placeholder" - }, - "_nested_name": "combo_box_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_choice", - "matchedExpression": "@fields.feature_default_choice", - "type": "fields", - "fieldName": "feature_default_choice" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_3:@local.combo_box_3", - "matchedExpression": "@local.combo_box_3", - "type": "local", - "fieldName": "combo_box_3" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_3:@local.combo_box_3", - "matchedExpression": "@local.combo_box_3", - "type": "local", - "fieldName": "combo_box_3" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_choice": [ - "value" - ], - "@local.combo_box_3": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_4", - "value": "@fields.feature_default_choice", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_choice_tracker_4", - "this.value" - ], - "_raw": "changed | set_field:feature_choice_tracker_4:@local.combo_box_4", - "_cleaned": "changed | set_field:feature_choice_tracker_4:@local.combo_box_4" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "@local.placeholder", - "prioritise_placeholder": "false" - }, - "_nested_name": "combo_box_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_choice", - "matchedExpression": "@fields.feature_default_choice", - "type": "fields", - "fieldName": "feature_default_choice" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_4:@local.combo_box_4", - "matchedExpression": "@local.combo_box_4", - "type": "local", - "fieldName": "combo_box_4" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_4:@local.combo_box_4", - "matchedExpression": "@local.combo_box_4", - "type": "local", - "fieldName": "combo_box_4" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_choice": [ - "value" - ], - "@local.combo_box_4": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Combo box 5: \nShows @local.placeholder when no user input is given and when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Combo box 5: \nShows @local.placeholder when no user input is given and when user input is deleted.", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "combo_box", - "name": "combo_box_5", - "value": "@fields.feature_default_choice", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_choice_tracker_5", - "this.value" - ], - "_raw": "changed | set_field:feature_choice_tracker_5:@local.combo_box_5", - "_cleaned": "changed | set_field:feature_choice_tracker_5:@local.combo_box_5" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list", - "placeholder": "@local.placeholder", - "prioritise_placeholder": "true" - }, - "_nested_name": "combo_box_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_choice", - "matchedExpression": "@fields.feature_default_choice", - "type": "fields", - "fieldName": "feature_default_choice" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_5:@local.combo_box_5", - "matchedExpression": "@local.combo_box_5", - "type": "local", - "fieldName": "combo_box_5" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:feature_choice_tracker_5:@local.combo_box_5", - "matchedExpression": "@local.combo_box_5", - "type": "local", - "fieldName": "combo_box_5" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list", - "matchedExpression": "@local.answer_list", - "type": "local", - "fieldName": "answer_list" - } - ], - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_choice": [ - "value" - ], - "@local.combo_box_5": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_prioritise_placeholder.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_dashed_box.json b/packages/app-data/sheets/template/debug/feature_dashed_box.json deleted file mode 100644 index 93961856b3..0000000000 --- a/packages/app-data/sheets/template/debug/feature_dashed_box.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_dashed_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "dashed_box", - "name": "dashed_box_passive", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alert", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "top-right" - }, - "_nested_name": "dashed_box_passive" - }, - { - "type": "dashed_box", - "name": "dashed_box_active", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "default", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "top-left" - }, - "_nested_name": "dashed_box_active" - }, - { - "type": "dashed_box", - "name": "dashed_box_passive", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alert", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "bottom-left" - }, - "_nested_name": "dashed_box_passive" - }, - { - "type": "dashed_box", - "name": "dashed_box_active", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "default", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "bottom-right" - }, - "_nested_name": "dashed_box_active" - }, - { - "type": "dashed_box", - "name": "dashed_box_active", - "value": "Every time you do a relax, mark your star in ParentPoints to track your success.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alert", - "icon_src": "plh_images/icons/star.svg", - "icon_position": "bottom-right" - }, - "_nested_name": "dashed_box_active" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_dg_dashed_box.json b/packages/app-data/sheets/template/debug/feature_dg_dashed_box.json deleted file mode 100644 index 3081b7d58f..0000000000 --- a/packages/app-data/sheets/template/debug/feature_dg_dashed_box.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_dg_dashed_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "dg_example_dashed_box", - "value": "dg_example_dashed_box", - "exclude_from_translation": true, - "parameter_list": { - "style": "dashed_box" - }, - "rows": [ - { - "type": "subtitle", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "subtitle", - "_nested_name": "dg_example_dashed_box.subtitle" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "exclude_from_translation": true, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "_nested_name": "dg_example_dashed_box.points_example_1" - }, - { - "type": "button", - "name": "btn_example", - "value": "Continue", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_dashed_box.btn_example" - } - ], - "_nested_name": "dg_example_dashed_box" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_dg_styles.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_dg_form.json b/packages/app-data/sheets/template/debug/feature_dg_form.json deleted file mode 100644 index 1e004b6faf..0000000000 --- a/packages/app-data/sheets/template/debug/feature_dg_form.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_dg_form", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "dg_example_form", - "value": "dg_example_form", - "exclude_from_translation": true, - "parameter_list": { - "style": "form", - "get_device_info": "true", - "button_text": "Send" - }, - "rows": [ - { - "type": "text_box", - "name": "user_name", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your name" - }, - "_nested_name": "dg_example_form.user_name" - }, - { - "type": "text_box", - "name": "user_phone", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your phone number" - }, - "_nested_name": "dg_example_form.user_phone" - }, - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox", - "this.value" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_2" - }, - { - "type": "title", - "value": "Some text here", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "dg_example_form.title" - }, - { - "type": "text_area", - "name": "text_area", - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "example placeholder" - }, - "_nested_name": "dg_example_form.text_area" - } - ], - "_nested_name": "dg_example_form" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_dg_styles.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_display_group.json b/packages/app-data/sheets/template/debug/feature_display_group.json deleted file mode 100644 index bcd1947679..0000000000 --- a/packages/app-data/sheets/template/debug/feature_display_group.json +++ /dev/null @@ -1,808 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_display_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "example_dp_gr", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_1" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title light_orange", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "example_dp_gr.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display light_orange", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "center" - }, - "_nested_name": "example_dp_gr.text_ex_text" - } - ], - "_nested_name": "example_dp_gr" - }, - { - "type": "display_group", - "name": "dg_example_2", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_2" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title orange", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_2.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display orange", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "right" - }, - "_nested_name": "dg_example_2.text_ex_text" - } - ], - "_nested_name": "dg_example_2" - }, - { - "type": "display_group", - "name": "dg_example_3", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_3" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title light_blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_3.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display light_blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left" - }, - "_nested_name": "dg_example_3.text_ex_text" - } - ], - "_nested_name": "dg_example_3" - }, - { - "type": "display_group", - "name": "dg_example_4", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_4" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_4.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "center" - }, - "_nested_name": "dg_example_4.text_ex_text" - } - ], - "_nested_name": "dg_example_4" - }, - { - "type": "display_group", - "name": "dg_example_6", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_5" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title dark_blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alternative" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_6.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display dark_blue", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "right" - }, - "_nested_name": "dg_example_6.text_ex_text" - } - ], - "_nested_name": "dg_example_6" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_active", - "offset": "30" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title with offset", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_7.title_ex_s" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/characters/group/talk_together.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "max-width: 250px" - ], - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_8", - "exclude_from_translation": true, - "parameter_list": { - "style": "white_box" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title white box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_8.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display white box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left" - }, - "_nested_name": "dg_example_8.text_ex_text" - } - ], - "_nested_name": "dg_example_8" - }, - { - "type": "display_group", - "name": "dg_example_8", - "exclude_from_translation": true, - "parameter_list": { - "style": "white_box" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title white box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "style_list": [ - "margin: 10px 10px" - ], - "_nested_name": "dg_example_8.title_ex_s" - }, - { - "type": "text", - "name": "text_ex_text", - "value": "Text for display white box", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left" - }, - "_nested_name": "dg_example_8.text_ex_text" - } - ], - "_nested_name": "dg_example_8" - }, - { - "type": "display_group", - "name": "dg_example_8", - "exclude_from_translation": true, - "parameter_list": { - "style": "navigation" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "button", - "name": "btn_example", - "value": "Continue", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "blue" - }, - "_nested_name": "dg_example_8.btn_example" - } - ], - "_nested_name": "dg_example_8" - }, - { - "type": "display_group", - "name": "dg_example_8", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_welcome" - }, - "style_list": [], - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_8.image" - } - ], - "_nested_name": "dg_example_8" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_short" - }, - "style_list": [], - "rows": [ - { - "type": "subtitle", - "name": "title_ex_s", - "value": "Example short banner", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "small emphasised" - }, - "_nested_name": "dg_example_7.title_ex_s" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_short" - }, - "rows": [ - { - "type": "subtitle", - "name": "title_ex_s", - "value": "Example short banner with more text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "small emphasised" - }, - "_nested_name": "dg_example_7.title_ex_s" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_welcome" - }, - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/guide_2/relax.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_dashed_box", - "exclude_from_translation": true, - "parameter_list": { - "style": "dashed_box", - "icon_src": "plh_images/icons/star.svg" - }, - "rows": [ - { - "type": "subtitle", - "value": "survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "right" - }, - "name": "subtitle", - "_nested_name": "dg_example_dashed_box.subtitle" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "exclude_from_translation": true, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "_nested_name": "dg_example_dashed_box.points_example_1" - }, - { - "type": "button", - "name": "btn_example", - "value": "Continue", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_dashed_box.btn_example" - } - ], - "_nested_name": "dg_example_dashed_box" - }, - { - "type": "title", - "value": "form with 'go to'", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "display_group", - "name": "dg_example_form", - "exclude_from_translation": true, - "parameter_list": { - "style": "form", - "get_device_info": "true", - "button_text": "Send", - "button_go_to": "feature_audio" - }, - "rows": [ - { - "type": "text_box", - "name": "user_name", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your name" - }, - "_nested_name": "dg_example_form.user_name" - }, - { - "type": "text_box", - "name": "user_phone", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your phone number" - }, - "_nested_name": "dg_example_form.user_phone" - }, - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox", - "this.value" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_2" - }, - { - "type": "title", - "value": "Some text here", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "dg_example_form.title" - }, - { - "type": "text_area", - "name": "text_area", - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "example placeholder" - }, - "_nested_name": "dg_example_form.text_area" - } - ], - "_nested_name": "dg_example_form" - }, - { - "type": "title", - "value": "pop up form", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "display_group", - "name": "dg_example_form", - "exclude_from_translation": true, - "parameter_list": { - "style": "form", - "get_device_info": "true", - "button_text": "Send", - "button_pop_up": "feature_audio" - }, - "rows": [ - { - "type": "text_box", - "name": "user_name", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your name" - }, - "_nested_name": "dg_example_form.user_name" - }, - { - "type": "text_box", - "name": "user_phone", - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "placeholder": "Add your phone number" - }, - "_nested_name": "dg_example_form.user_phone" - }, - { - "type": "simple_checkbox", - "name": "checkbox_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_checkbox", - "this.value" - ], - "_raw": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "_cleaned": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:demo_changed_field_checkbox:@local.checkbox_1", - "matchedExpression": "@local.checkbox_1", - "type": "local", - "fieldName": "checkbox_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.checkbox_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "simple_checkbox", - "name": "checkbox_2", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "label_text": "Example answer?" - }, - "_nested_name": "dg_example_form.checkbox_2" - }, - { - "type": "title", - "value": "Some text here", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "dg_example_form.title" - }, - { - "type": "text_area", - "name": "text_area", - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "example placeholder" - }, - "_nested_name": "dg_example_form.text_area" - } - ], - "_nested_name": "dg_example_form" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_essential_tools.json b/packages/app-data/sheets/template/debug/feature_essential_tools.json deleted file mode 100644 index ddb8eb3e87..0000000000 --- a/packages/app-data/sheets/template/debug/feature_essential_tools.json +++ /dev/null @@ -1,717 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_essential_tools", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_1" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "button", - "name": "bt_1", - "value": "Button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "nested_color full-width" - }, - "_nested_name": "display_group.bt_1" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_2" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "subtitle", - "name": "ss", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "display_group.ss" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "button", - "name": "bt_2", - "value": "Button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "nested_color full-width" - }, - "_nested_name": "display_group.bt_2" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_3" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "subtitle", - "name": "ss", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "display_group.ss" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "button", - "name": "bt_3", - "value": "Button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "nested_color full-width" - }, - "_nested_name": "display_group.bt_3" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_4" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "subtitle", - "name": "ss", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "display_group.ss" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "button", - "name": "bt_3", - "value": "Button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "nested_color full-width" - }, - "_nested_name": "display_group.bt_3" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_5" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "subtitle", - "name": "ss", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "display_group.ss" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "button", - "name": "bt_3", - "value": "Button", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "nested_color full-width" - }, - "_nested_name": "display_group.bt_3" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_5" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top:20px" - ], - "_nested_name": "display_group.ft" - }, - { - "type": "subtitle", - "name": "ss", - "value": "Subtitle", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "style_list": [ - "margin-top: 15px" - ], - "_nested_name": "display_group.ss" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 15px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/group/relax.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "corner" - }, - "_nested_name": "display_group.image" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_2" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "_nested_name": "display_group.ft" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 10px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "display_group", - "name": "bgg_1", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_1" - }, - "style_list": [ - "maggin-top:15px" - ], - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/group/relax.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.bgg_1.image" - } - ], - "_nested_name": "display_group.bgg_1" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_3" - }, - "style_list": [ - "padding: 10px 15px" - ], - "rows": [ - { - "type": "title", - "name": "ft", - "value": "GET REAL", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "white" - }, - "_nested_name": "display_group.ft" - }, - { - "type": "text", - "name": "ftt", - "value": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "text_align": "left", - "style": "whiteText" - }, - "style_list": [ - "margin-top: 10px", - "max-width: 320px" - ], - "_nested_name": "display_group.ftt" - }, - { - "type": "display_group", - "name": "bgg_1", - "exclude_from_translation": true, - "parameter_list": { - "style": "tool_2" - }, - "style_list": [ - "maggin-top:15px" - ], - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/workshop_modes/group/relax.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.bgg_1.image" - } - ], - "_nested_name": "display_group.bgg_1" - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_feedback_debug.json b/packages/app-data/sheets/template/debug/feature_feedback_debug.json deleted file mode 100644 index 8ff48b80d3..0000000000 --- a/packages/app-data/sheets/template/debug/feature_feedback_debug.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_feedback_debug", - "status": "released", - "flow_subtype": "debug", - "comments": "Used in /feedback debug page", - "rows": [ - { - "type": "title", - "value": "Fields", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "text", - "value": "_feedback_selected_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "title", - "value": "Actions", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "button", - "value": "Enable Feedback Mode", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "feedback", - "args": [ - "enable" - ], - "_raw": "click | feedback:enable", - "_cleaned": "click | feedback:enable" - } - ], - "exclude_from_translation": true, - "name": "button", - "_nested_name": "button" - }, - { - "type": "button", - "value": "Disable Feedback Mode", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "feedback", - "args": [ - "disable" - ], - "_raw": "click | feedback:disable", - "_cleaned": "click | feedback:disable" - } - ], - "exclude_from_translation": true, - "name": "button", - "_nested_name": "button" - }, - { - "type": "button", - "value": "Open Feedback Template", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "feedback", - "args": [ - "open", - "feature_feedback_default" - ], - "_raw": "click | feedback:open:feature_feedback_default", - "_cleaned": "click | feedback:open:feature_feedback_default" - } - ], - "exclude_from_translation": true, - "name": "button", - "_nested_name": "button" - }, - { - "type": "button", - "value": "Send Test Feedback", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "feedback", - "args": [ - "send", - "test feedback" - ], - "_raw": "click | feedback:send:test feedback", - "_cleaned": "click | feedback:send:test feedback" - } - ], - "exclude_from_translation": true, - "name": "button", - "_nested_name": "button" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_feedback.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_feedback_default.json b/packages/app-data/sheets/template/debug/feature_feedback_default.json deleted file mode 100644 index c7a0217482..0000000000 --- a/packages/app-data/sheets/template/debug/feature_feedback_default.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_feedback_default", - "status": "released", - "flow_subtype": "debug", - "comments": "Default general feedback form", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Feedback", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text_area", - "name": "feedback", - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "Write feedback here" - }, - "_nested_name": "feedback" - }, - { - "type": "display_group", - "name": "dg_buttons", - "exclude_from_translation": true, - "rows": [ - { - "type": "button", - "name": "button_cancel", - "value": "Cancel", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "click | emit:uncompleted", - "_cleaned": "click | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "_nested_name": "dg_buttons.button_cancel" - }, - { - "type": "button", - "name": "button_submit", - "value": "Submit", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true - } - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed", - "@local.feedback" - ], - "_raw": "click | emit:completed:@local.feedback", - "_cleaned": "click | emit:completed:@local.feedback" - } - ], - "exclude_from_translation": true, - "_nested_name": "dg_buttons.button_submit", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | emit:completed:@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ], - "_cleaned": [ - { - "fullExpression": "click | emit:completed:@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.feedback": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "dg_buttons" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_feedback.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_feedback_text_select.json b/packages/app-data/sheets/template/debug/feature_feedback_text_select.json deleted file mode 100644 index a4e7e69735..0000000000 --- a/packages/app-data/sheets/template/debug/feature_feedback_text_select.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_feedback_text_select", - "status": "released", - "flow_subtype": "debug", - "comments": "Default text-select feedback form", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "Suggest Change", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "selected_text", - "value": "@fields._feedback_selected_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "selected_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields._feedback_selected_text", - "matchedExpression": "@fields._feedback_selected_text", - "type": "fields", - "fieldName": "_feedback_selected_text" - } - ] - }, - "_dynamicDependencies": { - "@fields._feedback_selected_text": [ - "value" - ] - } - }, - { - "type": "text_area", - "name": "feedback", - "exclude_from_translation": true, - "_nested_name": "feedback" - }, - { - "type": "display_group", - "name": "dg_buttons", - "exclude_from_translation": true, - "rows": [ - { - "type": "button", - "name": "button_cancel", - "value": "Cancel", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "click | emit:uncompleted", - "_cleaned": "click | emit:uncompleted" - } - ], - "exclude_from_translation": true, - "_nested_name": "dg_buttons.button_cancel" - }, - { - "type": "button", - "name": "button_submit", - "value": "Submit", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_xh": true, - "za_zu": true - } - }, - "action_list": [ - { - "trigger": "click", - "action_id": "emit", - "args": [ - "completed", - "@local.feedback" - ], - "_raw": "click | emit:completed:@local.feedback", - "_cleaned": "click | emit:completed:@local.feedback" - } - ], - "exclude_from_translation": true, - "_nested_name": "dg_buttons.button_submit", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "1": [ - { - "fullExpression": "@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | emit:completed:@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ], - "_cleaned": [ - { - "fullExpression": "click | emit:completed:@local.feedback", - "matchedExpression": "@local.feedback", - "type": "local", - "fieldName": "feedback" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.feedback": [ - "action_list.0.args.1", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "dg_buttons" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_feedback.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_formatting.json b/packages/app-data/sheets/template/debug/feature_formatting.json deleted file mode 100644 index 7f2ac31183..0000000000 --- a/packages/app-data/sheets/template/debug/feature_formatting.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_formatting", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title1", - "value": "This is a title where part of it is italics", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title1" - }, - { - "type": "text", - "name": "text1", - "value": "This is text where part is bold part is in italics and part is both bold and italics (emphasised) ", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text1" - }, - { - "type": "dashed_box", - "name": "box1", - "value": "This is a dashed box where some of the text is bold and italics", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "box1" - }, - { - "type": "button", - "name": "button1", - "value": "Some of this button is bold. WOAH!", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "button1" - }, - { - "type": "text", - "name": "list1", - "value": "There is a - dash - betwen these words but it's not a list\nThis is text with a list in it\n* List item 1\n* List item 2\n* List item 3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "list1" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_home.json b/packages/app-data/sheets/template/debug/feature_home.json deleted file mode 100644 index 460766337d..0000000000 --- a/packages/app-data/sheets/template/debug/feature_home.json +++ /dev/null @@ -1,321 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_home", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "display_group", - "name": "dg_example_7", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "weekly_workshops" - ], - "_raw": "click | go_to:weekly_workshops", - "_cleaned": "click | go_to:weekly_workshops" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "style": "home_screen light" - }, - "style_list": [ - "margin: 40px 10px 0px 10px" - ], - "rows": [ - { - "type": "lottie_animation", - "name": "lottie_src", - "value": "plh_lottie/weekly_workshops.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.lottie_src" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "column" - }, - "style_list": [ - "padding: 0" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "@global.weekly_workshops", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alternative" - }, - "style_list": [ - "align-self: flex-start", - "margin-left: 20px", - "margin-bottom: 8px", - "margin-top: 15px" - ], - "_nested_name": "dg_example_7.display_group.title_ex_s", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.weekly_workshops", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshops": [ - "value" - ] - } - }, - { - "type": "round_button", - "name": "round_button_1", - "value": "Value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/letter_outline.svg", - "text": "Message", - "style": "home_screen yellow" - }, - "style_list": [ - "padding: 0" - ], - "_nested_name": "dg_example_7.display_group.round_button_1" - } - ], - "name": "display_group", - "_nested_name": "dg_example_7.display_group" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "parent_points" - ], - "_raw": "click | go_to:parent_points", - "_cleaned": "click | go_to:parent_points" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "style": "home_screen shade" - }, - "style_list": [ - "margin: 40px 10px 0px 10px" - ], - "rows": [ - { - "type": "lottie_animation", - "name": "lottie_src", - "value": "plh_lottie/parent_points.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.lottie_src" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "dg_example_7.set_variable" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "column" - }, - "style_list": [ - "padding: 0" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "@global.parent_points", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alternative" - }, - "style_list": [ - "align-self: flex-start", - "white-space: nowrap", - "margin-top: 15px" - ], - "_nested_name": "dg_example_7.display_group.title_ex_s", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.parent_points", - "matchedExpression": "@global.parent_points", - "type": "global", - "fieldName": "parent_points" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_points": [ - "value" - ] - } - }, - { - "type": "round_button", - "name": "round_button_1", - "value": "Value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_outline_white.svg", - "text": "Start", - "style": "home_screen orange" - }, - "style_list": [ - "padding: 0" - ], - "_nested_name": "dg_example_7.display_group.round_button_1" - } - ], - "name": "display_group", - "_nested_name": "dg_example_7.display_group" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "parent_centre" - ], - "_raw": "click | go_to:parent_centre", - "_cleaned": "click | go_to:parent_centre" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "style": "home_screen dark" - }, - "style_list": [ - "margin: 40px 10px 0px 10px" - ], - "rows": [ - { - "type": "lottie_animation", - "name": "lottie_src", - "value": "plh_lottie/parent_centre.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.lottie_src" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "parameter_list": { - "style": "column" - }, - "style_list": [ - "padding: 0" - ], - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "@global.parent_centre", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "alternative" - }, - "style_list": [ - "align-self: flex-start", - "white-space: nowrap", - "margin-top:15px" - ], - "_nested_name": "dg_example_7.display_group.title_ex_s", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.parent_centre", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ] - } - }, - { - "type": "round_button", - "name": "round_button_1", - "value": "Value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/play_outline_white.svg", - "style": "home_screen dark_orange" - }, - "style_list": [ - "padding: 0" - ], - "_nested_name": "dg_example_7.display_group.round_button_1" - } - ], - "name": "display_group", - "_nested_name": "dg_example_7.display_group" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "dg_example_7.set_variable" - } - ], - "_nested_name": "dg_example_7" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_items.json b/packages/app-data/sheets/template/debug/feature_items.json deleted file mode 100644 index c68f59c7a6..0000000000 --- a/packages/app-data/sheets/template/debug/feature_items.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_items", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_default", - "value": "Items - default", - "_translations": { - "value": {} - }, - "_nested_name": "title_default" - }, - { - "type": "items", - "name": "items_default", - "value": "@data.feature_items_data", - "rows": [ - { - "type": "text", - "name": "text_@item.id", - "value": "@item.title", - "_translations": { - "value": {} - }, - "_nested_name": "items_default.text_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.title", - "matchedExpression": "@item.title", - "type": "item", - "fieldName": "title" - } - ], - "_nested_name": [ - { - "fullExpression": "items_default.text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.title": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_@item.id", - "value": "@item.button_text", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@item.link" - ], - "_raw": "click | go_to: @item.link", - "_cleaned": "click | go_to: @item.link" - } - ], - "_nested_name": "items_default.button_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.button_text", - "matchedExpression": "@item.button_text", - "type": "item", - "fieldName": "button_text" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ], - "_cleaned": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - } - }, - "_nested_name": [ - { - "fullExpression": "items_default.button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.button_text": [ - "value" - ], - "@item.link": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "items_default", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.feature_items_data", - "matchedExpression": "@data.feature_items_data", - "type": "data", - "fieldName": "feature_items_data" - } - ] - }, - "_dynamicDependencies": { - "@data.feature_items_data": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_dg", - "value": "Items - display group", - "_translations": { - "value": {} - }, - "_nested_name": "title_dg" - }, - { - "type": "display_group", - "name": "dg", - "rows": [ - { - "type": "items", - "name": "items_dg", - "value": "@data.feature_items_data", - "rows": [ - { - "type": "text", - "name": "text_@item.id", - "value": "@item.title", - "_translations": { - "value": {} - }, - "_nested_name": "dg.items_dg.text_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.title", - "matchedExpression": "@item.title", - "type": "item", - "fieldName": "title" - } - ], - "_nested_name": [ - { - "fullExpression": "dg.items_dg.text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.title": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_@item.id", - "value": "@item.button_text", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@item.link" - ], - "_raw": "click | go_to: @item.link", - "_cleaned": "click | go_to: @item.link" - } - ], - "_nested_name": "dg.items_dg.button_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.button_text", - "matchedExpression": "@item.button_text", - "type": "item", - "fieldName": "button_text" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ], - "_cleaned": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - } - }, - "_nested_name": [ - { - "fullExpression": "dg.items_dg.button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.button_text": [ - "value" - ], - "@item.link": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "dg.items_dg", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.feature_items_data", - "matchedExpression": "@data.feature_items_data", - "type": "data", - "fieldName": "feature_items_data" - } - ] - }, - "_dynamicDependencies": { - "@data.feature_items_data": [ - "value" - ] - } - } - ], - "_nested_name": "dg" - }, - { - "type": "title", - "name": "title_dg2", - "value": "Items - group within group", - "_translations": { - "value": {} - }, - "_nested_name": "title_dg2" - }, - { - "type": "display_group", - "name": "dg2a", - "rows": [ - { - "type": "items", - "name": "items_dg", - "value": "@data.feature_items_data", - "rows": [ - { - "type": "display_group", - "name": "dg2b", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "text_@item.id", - "value": "@item.title", - "_translations": { - "value": {} - }, - "_nested_name": "dg2a.items_dg.dg2b.text_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.title", - "matchedExpression": "@item.title", - "type": "item", - "fieldName": "title" - } - ], - "_nested_name": [ - { - "fullExpression": "dg2a.items_dg.dg2b.text_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.title": [ - "value" - ] - } - }, - { - "type": "button", - "name": "button_@item.id", - "value": "@item.button_text", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "@item.link" - ], - "_raw": "click | go_to: @item.link", - "_cleaned": "click | go_to: @item.link" - } - ], - "_nested_name": "dg2a.items_dg.dg2b.button_@item.id", - "_dynamicFields": { - "name": [ - { - "fullExpression": "button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ], - "value": [ - { - "fullExpression": "@item.button_text", - "matchedExpression": "@item.button_text", - "type": "item", - "fieldName": "button_text" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ], - "_cleaned": [ - { - "fullExpression": "click | go_to: @item.link", - "matchedExpression": "@item.link", - "type": "item", - "fieldName": "link" - } - ] - } - }, - "_nested_name": [ - { - "fullExpression": "dg2a.items_dg.dg2b.button_@item.id", - "matchedExpression": "@item.id", - "type": "item", - "fieldName": "id" - } - ] - }, - "_dynamicDependencies": { - "@item.id": [ - "name", - "_nested_name" - ], - "@item.button_text": [ - "value" - ], - "@item.link": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - } - ], - "_nested_name": "dg2a.items_dg.dg2b" - } - ], - "_nested_name": "dg2a.items_dg", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.feature_items_data", - "matchedExpression": "@data.feature_items_data", - "type": "data", - "fieldName": "feature_items_data" - } - ] - }, - "_dynamicDependencies": { - "@data.feature_items_data": [ - "value" - ] - } - } - ], - "_nested_name": "dg2a" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_items.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_lottie.json b/packages/app-data/sheets/template/debug/feature_lottie.json deleted file mode 100644 index ca39c275d9..0000000000 --- a/packages/app-data/sheets/template/debug/feature_lottie.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_lottie", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "lottie_animation", - "name": "relax_anim", - "value": "plh_lottie/relax1.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "relax_anim" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_lottie_habits.json b/packages/app-data/sheets/template/debug/feature_lottie_habits.json deleted file mode 100644 index 348d2520cf..0000000000 --- a/packages/app-data/sheets/template/debug/feature_lottie_habits.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_lottie_habits", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "name": "title_breathe", - "value": "Breathe not yell", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_breathe" - }, - { - "type": "lottie_animation", - "name": "animation_breathe", - "value": "plh_lottie/habits/habit_breathe.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_breathe" - }, - { - "type": "title", - "name": "title_consequence", - "value": "Calm consequence", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_consequence" - }, - { - "type": "lottie_animation", - "name": "animation_consequence", - "value": "plh_lottie/habits/habit_consequence.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_consequence" - }, - { - "type": "title", - "name": "title_breathe", - "value": "Good money choice", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_breathe" - }, - { - "type": "lottie_animation", - "name": "animation_money", - "value": "plh_lottie/habits/habit_money.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_money" - }, - { - "type": "title", - "name": "title_praise_teen", - "value": "Praise your teen", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_praise_teen" - }, - { - "type": "lottie_animation", - "name": "animation_praise_teen", - "value": "plh_lottie/habits/habit_praise_teen.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_praise_teen" - }, - { - "type": "title", - "name": "title_praise_yourself", - "value": "Praise Yourself", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_praise_yourself" - }, - { - "type": "lottie_animation", - "name": "animation_praise_yourself", - "value": "plh_lottie/habits/habit_praise_yourself.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_praise_yourself" - }, - { - "type": "title", - "name": "title_relax", - "value": "Relax", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_relax" - }, - { - "type": "lottie_animation", - "name": "animation_relax", - "value": "plh_lottie/habits/habit_relax.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_relax" - }, - { - "type": "title", - "name": "title_safe", - "value": "Safe", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_safe" - }, - { - "type": "lottie_animation", - "name": "animation_safe", - "value": "plh_lottie/habits/habit_safe.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_safe" - }, - { - "type": "title", - "name": "title_spend_time", - "value": "One-on-one time", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "exclude_from_translation": true, - "_nested_name": "title_spend_time" - }, - { - "type": "lottie_animation", - "name": "animation_spend_time", - "value": "plh_lottie/habits/habit_spend_time.json", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "animation_spend_time" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_lottie_habits.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_number_selector.json b/packages/app-data/sheets/template/debug/feature_number_selector.json deleted file mode 100644 index da78464dea..0000000000 --- a/packages/app-data/sheets/template/debug/feature_number_selector.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_number_selector", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "category_list", - "value": [ - "0-10", - "11-20", - "21-30", - "31-40", - "41-50", - "51-60", - "61-70", - "71-80", - "80+" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "category_list" - }, - { - "type": "number_selector", - "name": "number_selector", - "exclude_from_translation": true, - "parameter_list": { - "category_list": "@local.category_list", - "first_display_term": "4" - }, - "_nested_name": "number_selector", - "_dynamicFields": { - "parameter_list": { - "category_list": [ - { - "fullExpression": "@local.category_list", - "matchedExpression": "@local.category_list", - "type": "local", - "fieldName": "category_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.category_list": [ - "parameter_list.category_list" - ] - } - }, - { - "name": "ten", - "value": 10, - "type": "set_variable", - "_nested_name": "ten" - }, - { - "type": "set_field", - "name": "debug_field_fifteen", - "value": 15, - "_nested_name": "debug_field_fifteen" - }, - { - "name": "fifteen", - "value": "+@fields.debug_field_fifteen", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "fifteen", - "_dynamicFields": { - "value": [ - { - "fullExpression": "+@fields.debug_field_fifteen", - "matchedExpression": "@fields.debug_field_fifteen", - "type": "fields", - "fieldName": "debug_field_fifteen" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_fifteen": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_1", - "value": "Default initial value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "number_selector", - "name": "number_selector_1", - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "number_selector_1" - }, - { - "type": "title", - "name": "title_2", - "value": "Initial value set directly", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_2" - }, - { - "type": "number_selector", - "name": "number_selector_2", - "value": 5, - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "number_selector_2" - }, - { - "type": "title", - "name": "title_3", - "value": "Initial value set through local variable", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_3" - }, - { - "type": "number_selector", - "name": "number_selector_3", - "value": "@local.ten", - "_translations": { - "value": {} - }, - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "number_selector_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.ten", - "matchedExpression": "@local.ten", - "type": "local", - "fieldName": "ten" - } - ] - }, - "_dynamicDependencies": { - "@local.ten": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_4", - "value": "Initial value set through field preceded by '+", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_4" - }, - { - "type": "number_selector", - "name": "number_selector_4", - "value": "+@fields.debug_field_fifteen", - "_translations": { - "value": {} - }, - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "number_selector_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "+@fields.debug_field_fifteen", - "matchedExpression": "@fields.debug_field_fifteen", - "type": "fields", - "fieldName": "debug_field_fifteen" - } - ] - }, - "_dynamicDependencies": { - "@fields.debug_field_fifteen": [ - "value" - ] - } - }, - { - "type": "title", - "name": "title_5", - "value": "Initial value set through local with field preceded by '+", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_5" - }, - { - "type": "number_selector", - "name": "number_selector_5", - "value": "@local.fifteen", - "_translations": { - "value": {} - }, - "parameter_list": { - "min_value": "0", - "max_value": "20" - }, - "_nested_name": "number_selector_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.fifteen", - "matchedExpression": "@local.fifteen", - "type": "local", - "fieldName": "fifteen" - } - ] - }, - "_dynamicDependencies": { - "@local.fifteen": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_parent_point_box.json b/packages/app-data/sheets/template/debug/feature_parent_point_box.json deleted file mode 100644 index 9fd0c9b940..0000000000 --- a/packages/app-data/sheets/template/debug/feature_parent_point_box.json +++ /dev/null @@ -1,477 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_parent_point_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text", - "name": "text_1", - "value": "value 1 is @fields.demo_changed_field_parent_point", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "value 1 is @fields.demo_changed_field_parent_point", - "matchedExpression": "@fields.demo_changed_field_parent_point", - "type": "fields", - "fieldName": "demo_changed_field_parent_point" - } - ] - }, - "_dynamicDependencies": { - "@fields.demo_changed_field_parent_point": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "value 2 is @fields.demo_changed_field_parent_point_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "value 2 is @fields.demo_changed_field_parent_point_1", - "matchedExpression": "@fields.demo_changed_field_parent_point_1", - "type": "fields", - "fieldName": "demo_changed_field_parent_point_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.demo_changed_field_parent_point_1": [ - "value" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "value 3 is @fields.demo_changed_field_parent_point_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "value 3 is @fields.demo_changed_field_parent_point_2", - "matchedExpression": "@fields.demo_changed_field_parent_point_2", - "type": "fields", - "fieldName": "demo_changed_field_parent_point_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.demo_changed_field_parent_point_2": [ - "value" - ] - } - }, - { - "type": "display_group", - "name": "dg", - "exclude_from_translation": true, - "parameter_list": { - "style": "parent_point" - }, - "style_list": [ - "flex-wrap: wrap" - ], - "rows": [ - { - "name": "init_value_1", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.init_value_1" - }, - { - "name": "icon_src1", - "value": "plh_images/habits/habit_money.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.icon_src1" - }, - { - "name": "text1", - "value": "Good money choice 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.text1" - }, - { - "type": "parent_point_box", - "name": "points_example", - "value": "@local.init_value_1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_parent_point", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_parent_point: @local.points_example", - "_cleaned": "changed | set_field: demo_changed_field_parent_point: @local.points_example" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "@local.icon_src1", - "text": "@local.text1" - }, - "_nested_name": "dg.points_example", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.init_value_1", - "matchedExpression": "@local.init_value_1", - "type": "local", - "fieldName": "init_value_1" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point: @local.points_example", - "matchedExpression": "@local.points_example", - "type": "local", - "fieldName": "points_example" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point: @local.points_example", - "matchedExpression": "@local.points_example", - "type": "local", - "fieldName": "points_example" - } - ] - } - }, - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@local.icon_src1", - "matchedExpression": "@local.icon_src1", - "type": "local", - "fieldName": "icon_src1" - } - ], - "text": [ - { - "fullExpression": "@local.text1", - "matchedExpression": "@local.text1", - "type": "local", - "fieldName": "text1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.init_value_1": [ - "value" - ], - "@local.points_example": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.icon_src1": [ - "parameter_list.icon_src" - ], - "@local.text1": [ - "parameter_list.text" - ] - } - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_parent_point_1", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_parent_point_1: @local.points_example_1", - "_cleaned": "changed | set_field: demo_changed_field_parent_point_1: @local.points_example_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "@local.icon_src1", - "text": "@local.text1" - }, - "_nested_name": "dg.points_example_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point_1: @local.points_example_1", - "matchedExpression": "@local.points_example_1", - "type": "local", - "fieldName": "points_example_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point_1: @local.points_example_1", - "matchedExpression": "@local.points_example_1", - "type": "local", - "fieldName": "points_example_1" - } - ] - } - }, - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@local.icon_src1", - "matchedExpression": "@local.icon_src1", - "type": "local", - "fieldName": "icon_src1" - } - ], - "text": [ - { - "fullExpression": "@local.text1", - "matchedExpression": "@local.text1", - "type": "local", - "fieldName": "text1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.points_example_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.icon_src1": [ - "parameter_list.icon_src" - ], - "@local.text1": [ - "parameter_list.text" - ] - } - }, - { - "type": "parent_point_box", - "name": "points_example_2", - "value": 3, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "demo_changed_field_parent_point_2", - "this.value" - ], - "_raw": "changed | set_field: demo_changed_field_parent_point_2: @local.points_example_2", - "_cleaned": "changed | set_field: demo_changed_field_parent_point_2: @local.points_example_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "@local.icon_src1", - "text": "@local.text1" - }, - "_nested_name": "dg.points_example_2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point_2: @local.points_example_2", - "matchedExpression": "@local.points_example_2", - "type": "local", - "fieldName": "points_example_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: demo_changed_field_parent_point_2: @local.points_example_2", - "matchedExpression": "@local.points_example_2", - "type": "local", - "fieldName": "points_example_2" - } - ] - } - }, - "parameter_list": { - "icon_src": [ - { - "fullExpression": "@local.icon_src1", - "matchedExpression": "@local.icon_src1", - "type": "local", - "fieldName": "icon_src1" - } - ], - "text": [ - { - "fullExpression": "@local.text1", - "matchedExpression": "@local.text1", - "type": "local", - "fieldName": "text1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.points_example_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.icon_src1": [ - "parameter_list.icon_src" - ], - "@local.text1": [ - "parameter_list.text" - ] - } - } - ], - "_nested_name": "dg" - }, - { - "type": "title", - "value": "lottie", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "title", - "_nested_name": "title" - }, - { - "type": "display_group", - "name": "dg", - "exclude_from_translation": true, - "parameter_list": { - "style": "parent_point" - }, - "style_list": [ - "flex-wrap: wrap" - ], - "rows": [ - { - "name": "init_value_1", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.init_value_1" - }, - { - "type": "parent_point_box", - "name": "points_example", - "value": "@local.init_value_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "lottie_src": "plh_lottie/parent_points.json", - "text": "no celebration", - "play_celebration": "false" - }, - "_nested_name": "dg.points_example", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.init_value_1", - "matchedExpression": "@local.init_value_1", - "type": "local", - "fieldName": "init_value_1" - } - ] - }, - "_dynamicDependencies": { - "@local.init_value_1": [ - "value" - ] - } - }, - { - "name": "text4", - "value": "text one", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.text4" - }, - { - "type": "parent_point_box", - "name": "points_example_1", - "value": 3, - "exclude_from_translation": true, - "parameter_list": { - "lottie_src": "plh_lottie/parent_centre.json", - "text": "text two" - }, - "_nested_name": "dg.points_example_1" - }, - { - "name": "text5", - "value": "text two", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.text5" - }, - { - "type": "parent_point_box", - "name": "points_example_2", - "value": 3, - "exclude_from_translation": true, - "parameter_list": { - "lottie_src": "plh_lottie/parent_points.json", - "text": "text three" - }, - "_nested_name": "dg.points_example_2" - }, - { - "name": "text6", - "value": "text three", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "dg.text6" - } - ], - "_nested_name": "dg" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_pop_ups.json b/packages/app-data/sheets/template/debug/feature_pop_ups.json deleted file mode 100644 index e448655b78..0000000000 --- a/packages/app-data/sheets/template/debug/feature_pop_ups.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_pop_ups", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "button", - "name": "button_pop_up_1", - "value": "Button 1", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "feature_tile" - ], - "_raw": "click | pop_up:feature_tile", - "_cleaned": "click | pop_up:feature_tile" - } - ], - "exclude_from_translation": true, - "_nested_name": "button_pop_up_1" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_radio_group.json b/packages/app-data/sheets/template/debug/feature_radio_group.json deleted file mode 100644 index 88b4bedb06..0000000000 --- a/packages/app-data/sheets/template/debug/feature_radio_group.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_radio_group", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer0_list", - "value": [ - "name:name_var_1 | text:Single", - "name:name_var_2 | text:Pair" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer0_list" - }, - { - "name": "options_per_row", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "type": "radio_group", - "name": "radio_group_square_1", - "value": "Pair", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer0_list" - }, - "_nested_name": "radio_group_square_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer0_list", - "matchedExpression": "@local.answer0_list", - "type": "local", - "fieldName": "answer0_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer0_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_square_2", - "value": "Pair", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer0_list", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group_square_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer0_list", - "matchedExpression": "@local.answer0_list", - "type": "local", - "fieldName": "answer0_list" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer0_list": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_square_3", - "value": "Pair", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer0_list", - "options_per_row": "2" - }, - "_nested_name": "radio_group_square_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer0_list", - "matchedExpression": "@local.answer0_list", - "type": "local", - "fieldName": "answer0_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer0_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "answer2_list", - "value": [ - "name:name_var_1 | text:Black| image:/plh_images/icons/heart.svg", - "name:name_var_2| image:/plh_images/icons/heart.svg | text:White", - "name:name_var_3| image:/plh_images/icons/heart.svg | text:Blue" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer2_list" - }, - { - "name": "answer3_list", - "value": [ - "name:name_var_1 | image:/plh_images/icons/heart.svg", - "name:name_var_2| image:/plh_images/icons/heart.svg", - "name:name_var_3| image:/plh_images/icons/heart.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer3_list" - }, - { - "type": "radio_group", - "name": "radio_group_square_4", - "value": "Black", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer2_list", - "options_per_row": "3" - }, - "_nested_name": "radio_group_square_4", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer2_list", - "matchedExpression": "@local.answer2_list", - "type": "local", - "fieldName": "answer2_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer2_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_square_5", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer3_list", - "options_per_row": "3" - }, - "_nested_name": "radio_group_square_5", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer3_list", - "matchedExpression": "@local.answer3_list", - "type": "local", - "fieldName": "answer3_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer3_list": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_radio_group_2.json b/packages/app-data/sheets/template/debug/feature_radio_group_2.json deleted file mode 100644 index 29e533ef35..0000000000 --- a/packages/app-data/sheets/template/debug/feature_radio_group_2.json +++ /dev/null @@ -1,589 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_radio_group_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer_list_1", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_3 | text: Third | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_4 | text:Fourth | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "name": "answer_list_2", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_2" - }, - { - "name": "answer_list_3", - "value": [ - "name:name_var_1 | text:First | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg", - "name:name_var_2 | text:Second | image:/plh_images/icons/heart.svg | image_checked: /plh_images/icons/tick.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_3" - }, - { - "name": "answer_list_4", - "value": [ - "name:name_var_1 | text:First", - "name:name_var_2 | text:Second", - "name:name_var_3 | text:Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_4" - }, - { - "name": "answer_list_5", - "value": [ - "name:happy | image:plh_images/stickers/faces/happy.svg | image_checked:plh_images/stickers/faces/happy.svg", - "name:happier | image:plh_images/stickers/faces/happier.svg | image_checked:plh_images/stickers/faces/happier.svg", - "name:happiest | image:plh_images/stickers/faces/happiest.svg | image_checked:plh_images/stickers/faces/happiest.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_5" - }, - { - "name": "answer_list_6", - "value": [ - "name:happy | image:plh_images/stickers/faces_yellow/happy.svg | image_checked:plh_images/stickers/faces_yellow/happy.svg", - "name:happier | image:plh_images/stickers/faces_yellow/happier.svg | image_checked:plh_images/stickers/faces_yellow/happier.svg", - "name:happiest | image:plh_images/stickers/faces_yellow/happiest.svg | image_checked:plh_images/stickers/faces_yellow/happiest.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_6" - }, - { - "name": "answer_list_7", - "value": [ - "name:happy | image:plh_images/stickers/faces_yellow/happy.svg | image_checked:plh_images/stickers/faces_yellow/happy.svg", - "name:happier | image:plh_images/stickers/faces_yellow/happier.svg | image_checked:plh_images/stickers/faces_yellow/happier.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer_list_7" - }, - { - "type": "radio_group", - "name": "radio_group_defaults", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1" - }, - "_nested_name": "radio_group_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_four_per_row", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1", - "options_per_row": "4" - }, - "_nested_name": "radio_group_four_per_row", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_two_per_row", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_1", - "options_per_row": "2" - }, - "_nested_name": "radio_group_two_per_row", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_two_options_1", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_two_options_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_two_options_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2", - "options_per_row": "2" - }, - "_nested_name": "radio_group_two_options_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_with_tick", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_3" - }, - "_nested_name": "radio_group_with_tick", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_3", - "matchedExpression": "@local.answer_list_3", - "type": "local", - "fieldName": "answer_list_3" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_3": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_text", - "value": "name_var_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_4" - }, - "_nested_name": "radio_group_text", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_4", - "matchedExpression": "@local.answer_list_4", - "type": "local", - "fieldName": "answer_list_4" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_4": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "name_result_1", - "value": "@local.radio_group_text", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "name_result_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group_text", - "matchedExpression": "@local.radio_group_text", - "type": "local", - "fieldName": "radio_group_text" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_text": [ - "value" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_image_1", - "value": "happy", - "_translations": { - "value": { - "es_sp": true - } - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_5" - }, - "_nested_name": "radio_group_image_1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_5", - "matchedExpression": "@local.answer_list_5", - "type": "local", - "fieldName": "answer_list_5" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_5": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "name_result_2", - "value": "@local.radio_group_image_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "name_result_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group_image_1", - "matchedExpression": "@local.radio_group_image_1", - "type": "local", - "fieldName": "radio_group_image_1" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_image_1": [ - "value" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_image_2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_6" - }, - "_nested_name": "radio_group_image_2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_6", - "matchedExpression": "@local.answer_list_6", - "type": "local", - "fieldName": "answer_list_6" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_6": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "happy", - "value": "happy", - "_translations": { - "value": { - "es_sp": true - } - }, - "type": "set_variable", - "_nested_name": "happy" - }, - { - "type": "radio_group", - "name": "radio_group_image_3", - "value": "@local.happy", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_5" - }, - "_nested_name": "radio_group_image_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.happy", - "matchedExpression": "@local.happy", - "type": "local", - "fieldName": "happy" - } - ], - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_5", - "matchedExpression": "@local.answer_list_5", - "type": "local", - "fieldName": "answer_list_5" - } - ] - } - }, - "_dynamicDependencies": { - "@local.happy": [ - "value" - ], - "@local.answer_list_5": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "title", - "name": "test", - "value": "test", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "test" - }, - { - "type": "text", - "value": "without options", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "radio_group", - "name": "radio_group_two_options_3", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2" - }, - "_nested_name": "radio_group_two_options_3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "value": "with options", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "radio_group", - "name": "radio_group_two_options_4", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_2", - "options_per_row": "2" - }, - "_nested_name": "radio_group_two_options_4", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_2": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "value": "with options", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "radio_group", - "name": "radio_group_image_4", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_7", - "options_per_row": "2" - }, - "_nested_name": "radio_group_image_4", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_7", - "matchedExpression": "@local.answer_list_7", - "type": "local", - "fieldName": "answer_list_7" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_7": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "value": "without options", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "name": "text", - "_nested_name": "text" - }, - { - "type": "radio_group", - "name": "radio_group_image_5", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer_list_7" - }, - "_nested_name": "radio_group_image_5", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_7", - "matchedExpression": "@local.answer_list_7", - "type": "local", - "fieldName": "answer_list_7" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer_list_7": [ - "parameter_list.answer_list" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_select_text.json b/packages/app-data/sheets/template/debug/feature_select_text.json deleted file mode 100644 index 7a962df3ef..0000000000 --- a/packages/app-data/sheets/template/debug/feature_select_text.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_select_text", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "user_id", - "value": "@calc(this.app_user_id)", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "user_id", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@calc(this.app_user_id)", - "matchedExpression": "@calc(this.app_user_id)", - "type": "calc", - "fieldName": "this.app_user_id" - } - ] - }, - "_dynamicDependencies": { - "@calc(this.app_user_id)": [ - "value" - ] - } - }, - { - "name": "copy_text", - "value": "Copy this", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copy_text" - }, - { - "name": "copy_icon_1", - "value": "clipboard-outline", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copy_icon_1" - }, - { - "name": "copy_icon_2", - "value": "copy-outline", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copy_icon_2" - }, - { - "name": "copied_text", - "value": "Copied!", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copied_text" - }, - { - "name": "copied_icon_1", - "value": "checkmark-outline", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copied_icon_1" - }, - { - "name": "copied_icon_2", - "value": "plh_images/icons/tick.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "copied_icon_2" - }, - { - "type": "select_text", - "name": "select_text_1", - "value": "@local.user_id", - "_translations": { - "value": {} - }, - "parameter_list": { - "copy_text": "@local.copy_text", - "copied_text": "@local.copied_text" - }, - "_nested_name": "select_text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.user_id", - "matchedExpression": "@local.user_id", - "type": "local", - "fieldName": "user_id" - } - ], - "parameter_list": { - "copy_text": [ - { - "fullExpression": "@local.copy_text", - "matchedExpression": "@local.copy_text", - "type": "local", - "fieldName": "copy_text" - } - ], - "copied_text": [ - { - "fullExpression": "@local.copied_text", - "matchedExpression": "@local.copied_text", - "type": "local", - "fieldName": "copied_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.user_id": [ - "value" - ], - "@local.copy_text": [ - "parameter_list.copy_text" - ], - "@local.copied_text": [ - "parameter_list.copied_text" - ] - } - }, - { - "type": "select_text", - "name": "select_text_2", - "value": "@local.user_id", - "_translations": { - "value": {} - }, - "parameter_list": { - "copy_icon": "@local.copy_icon_1", - "copied_text": "@local.copied_text" - }, - "_nested_name": "select_text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.user_id", - "matchedExpression": "@local.user_id", - "type": "local", - "fieldName": "user_id" - } - ], - "parameter_list": { - "copy_icon": [ - { - "fullExpression": "@local.copy_icon_1", - "matchedExpression": "@local.copy_icon_1", - "type": "local", - "fieldName": "copy_icon_1" - } - ], - "copied_text": [ - { - "fullExpression": "@local.copied_text", - "matchedExpression": "@local.copied_text", - "type": "local", - "fieldName": "copied_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.user_id": [ - "value" - ], - "@local.copy_icon_1": [ - "parameter_list.copy_icon" - ], - "@local.copied_text": [ - "parameter_list.copied_text" - ] - } - }, - { - "type": "select_text", - "name": "select_text_3", - "value": "@local.user_id", - "_translations": { - "value": {} - }, - "parameter_list": { - "copy_text": "@local.copy_text", - "copied_icon": "@local.copied_icon_1" - }, - "_nested_name": "select_text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.user_id", - "matchedExpression": "@local.user_id", - "type": "local", - "fieldName": "user_id" - } - ], - "parameter_list": { - "copy_text": [ - { - "fullExpression": "@local.copy_text", - "matchedExpression": "@local.copy_text", - "type": "local", - "fieldName": "copy_text" - } - ], - "copied_icon": [ - { - "fullExpression": "@local.copied_icon_1", - "matchedExpression": "@local.copied_icon_1", - "type": "local", - "fieldName": "copied_icon_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.user_id": [ - "value" - ], - "@local.copy_text": [ - "parameter_list.copy_text" - ], - "@local.copied_icon_1": [ - "parameter_list.copied_icon" - ] - } - }, - { - "type": "select_text", - "name": "select_text_4_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "value": "@local.user_id", - "_translations": { - "value": {} - }, - "parameter_list": { - "copy_icon": "@local.copy_icon_2", - "copied_icon": "@local.copied_icon_2" - }, - "_nested_name": "select_text_4_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.user_id", - "matchedExpression": "@local.user_id", - "type": "local", - "fieldName": "user_id" - } - ], - "parameter_list": { - "copy_icon": [ - { - "fullExpression": "@local.copy_icon_2", - "matchedExpression": "@local.copy_icon_2", - "type": "local", - "fieldName": "copy_icon_2" - } - ], - "copied_icon": [ - { - "fullExpression": "@local.copied_icon_2", - "matchedExpression": "@local.copied_icon_2", - "type": "local", - "fieldName": "copied_icon_2" - } - ] - } - }, - "_dynamicDependencies": { - "@local.user_id": [ - "value" - ], - "@local.copy_icon_2": [ - "parameter_list.copy_icon" - ], - "@local.copied_icon_2": [ - "parameter_list.copied_icon" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_select_text.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_set_theme_2.json b/packages/app-data/sheets/template/debug/feature_set_theme_2.json deleted file mode 100644 index 8b7bbf1453..0000000000 --- a/packages/app-data/sheets/template/debug/feature_set_theme_2.json +++ /dev/null @@ -1,390 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_set_theme_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "answer0_list", - "value": [ - "name:name_var_1 | text:Single", - "name:name_var_2 | text:Pair" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer0_list" - }, - { - "name": "options_per_row", - "value": 2, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "options_per_row" - }, - { - "type": "display_group", - "exclude_from_translation": true, - "rows": [ - { - "type": "button", - "name": "active_theme_button", - "value": "Active Theme", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_theme", - "args": [ - "active" - ], - "_raw": "click | set_theme:active", - "_cleaned": "click | set_theme:active" - } - ], - "exclude_from_translation": true, - "_nested_name": "display_group.active_theme_button" - }, - { - "type": "button", - "name": "passive_theme_button", - "value": "Passive Theme", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "set_theme", - "args": [ - "passive" - ], - "_raw": "click | set_theme:passive", - "_cleaned": "click | set_theme:passive" - } - ], - "exclude_from_translation": true, - "_nested_name": "display_group.passive_theme_button" - } - ], - "name": "display_group", - "_nested_name": "display_group" - }, - { - "type": "radio_group", - "name": "radio_group_square", - "value": "Pair", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer0_list", - "options_per_row": "@local.options_per_row" - }, - "_nested_name": "radio_group_square", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer0_list", - "matchedExpression": "@local.answer0_list", - "type": "local", - "fieldName": "answer0_list" - } - ], - "options_per_row": [ - { - "fullExpression": "@local.options_per_row", - "matchedExpression": "@local.options_per_row", - "type": "local", - "fieldName": "options_per_row" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer0_list": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] - } - }, - { - "name": "answer1_list", - "value": [ - "name:name_var_1 | text:Woman | image:/plh_images/icons/heart.svg", - "name:name_var_2 | text:Man | image:/plh_images/icons/heart.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer1_list" - }, - { - "exclude_from_translation": true, - "type": "set_variable", - "name": "set_variable", - "_nested_name": "set_variable" - }, - { - "type": "radio_group", - "name": "radio_group_square_ex1", - "value": "Black", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer2_list", - "options_per_row": "3" - }, - "_nested_name": "radio_group_square_ex1", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer2_list", - "matchedExpression": "@local.answer2_list", - "type": "local", - "fieldName": "answer2_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer2_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "answer2_list", - "value": [ - "name:name_var_1 | text:Black| image:/plh_images/icons/heart.svg", - "name:name_var_2| image:/plh_images/icons/heart.svg | text:White", - "name:name_var_3| image:/plh_images/icons/heart.svg | text:Blue" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer2_list" - }, - { - "type": "radio_group", - "name": "radio_group_square_ex2", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer3_list", - "options_per_row": "3" - }, - "_nested_name": "radio_group_square_ex2", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer3_list", - "matchedExpression": "@local.answer3_list", - "type": "local", - "fieldName": "answer3_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer3_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "answer3_list", - "value": [ - "name:name_var_1 | image:/plh_images/icons/heart.svg", - "name:name_var_2| image:/plh_images/icons/heart.svg", - "name:name_var_3| image:/plh_images/icons/heart.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer3_list" - }, - { - "name": "combo_answer_list", - "value": [ - "First", - "Second", - "Third" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_answer_list" - }, - { - "type": "combo_box", - "name": "combo_box_defaults", - "value": "nothing", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.combo_answer_list" - }, - "_nested_name": "combo_box_defaults", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.combo_answer_list", - "matchedExpression": "@local.combo_answer_list", - "type": "local", - "fieldName": "combo_answer_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_answer_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "radio_group", - "name": "radio_group_square_ex3", - "exclude_from_translation": true, - "parameter_list": { - "answer_list": "@local.answer4_list", - "options_per_row": "3", - "style": "transparent" - }, - "_nested_name": "radio_group_square_ex3", - "_dynamicFields": { - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer4_list", - "matchedExpression": "@local.answer4_list", - "type": "local", - "fieldName": "answer4_list" - } - ] - } - }, - "_dynamicDependencies": { - "@local.answer4_list": [ - "parameter_list.answer_list" - ] - } - }, - { - "name": "answer4_list", - "value": [ - "name:name_var_1 | image:/plh_images/icons/heart.svg", - "name:name_var_2| image:/plh_images/icons/heart.svg", - "name:name_var_3| image:/plh_images/icons/heart.svg" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "answer4_list" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_welcome" - }, - "style_list": [ - "margin: 10px 15px", - "min_height: 40px" - ], - "rows": [ - { - "type": "image", - "name": "image", - "value": "plh_images/characters/group/talk_together.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "style_list": [ - "max-width: 250px" - ], - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner_short" - }, - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title banner title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "_nested_name": "dg_example_7.title_ex_s" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/characters/group/talk_together.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - }, - { - "type": "display_group", - "name": "dg_example_7", - "exclude_from_translation": true, - "parameter_list": { - "style": "banner" - }, - "rows": [ - { - "type": "title", - "name": "title_ex_s", - "value": "Example title banner title", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "style": "primary" - }, - "_nested_name": "dg_example_7.title_ex_s" - }, - { - "type": "image", - "name": "image", - "value": "plh_images/characters/group/talk_together.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "dg_example_7.image" - } - ], - "_nested_name": "dg_example_7" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_slider.json b/packages/app-data/sheets/template/debug/feature_slider.json deleted file mode 100644 index ae79ad070f..0000000000 --- a/packages/app-data/sheets/template/debug/feature_slider.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_slider", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "help_text", - "value": "some help", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "help_text" - }, - { - "type": "slider", - "name": "slider_with_help", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "min": "0", - "max": "7", - "title": "test title", - "min_value_label": "0", - "max_value_label": "7", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider_with_help", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "slider", - "name": "slider_without_help", - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "max": "7", - "title": "without help", - "min_value_label": "0", - "max_value_label": "7", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider_without_help" - }, - { - "type": "slider", - "name": "slider_with_value_2", - "value": 2, - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "min": "0", - "max": "7", - "title": "with value 2", - "min_value_label": "0", - "max_value_label": "7", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider_with_value_2", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "slider", - "name": "slider_with_step_2", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "min": "0", - "max": "8", - "title": "step = 2", - "step": "2", - "min_value_label": "0", - "max_value_label": "8", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider_with_step_2", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "slider", - "name": "slider_without_value", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "min": "0", - "max": "7", - "title": "no value", - "min_value_label": "0", - "max_value_label": "7", - "labels_count": "8", - "no_value": "true" - }, - "_nested_name": "slider_without_value", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "slider", - "name": "slider_without_max_3", - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "help": "@local.help_text", - "max": "3", - "title": "with max = 3", - "min_value_label": "0", - "max_value_label": "3", - "labels_count": "8", - "no_value": "false" - }, - "_nested_name": "slider_without_max_3", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "slider", - "name": "slider_without_value_labels_1", - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "help": "@local.help_text", - "max": "3", - "title": "without value labels", - "no_value": "false" - }, - "_nested_name": "slider_without_value_labels_1", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "text", - "name": "text_1", - "value": "Value of last slider: @local.slider_without_value_labels_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of last slider: @local.slider_without_value_labels_1", - "matchedExpression": "@local.slider_without_value_labels_1", - "type": "local", - "fieldName": "slider_without_value_labels_1" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_without_value_labels_1": [ - "value" - ] - } - }, - { - "type": "slider", - "name": "slider_without_value_labels_2", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "temp_slider_field", - "this.value" - ], - "_raw": "changed | set_field:temp_slider_field:@local.slider_without_value_labels_2", - "_cleaned": "changed | set_field:temp_slider_field:@local.slider_without_value_labels_2" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "min": "0", - "help": "@local.help_text", - "max": "3", - "title": "without value labels", - "no_value": "false" - }, - "_nested_name": "slider_without_value_labels_2", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:temp_slider_field:@local.slider_without_value_labels_2", - "matchedExpression": "@local.slider_without_value_labels_2", - "type": "local", - "fieldName": "slider_without_value_labels_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:temp_slider_field:@local.slider_without_value_labels_2", - "matchedExpression": "@local.slider_without_value_labels_2", - "type": "local", - "fieldName": "slider_without_value_labels_2" - } - ] - } - }, - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.slider_without_value_labels_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Value of last slider: @local.slider_without_value_labels_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Value of last slider: @local.slider_without_value_labels_2", - "matchedExpression": "@local.slider_without_value_labels_2", - "type": "local", - "fieldName": "slider_without_value_labels_2" - } - ] - }, - "_dynamicDependencies": { - "@local.slider_without_value_labels_2": [ - "value" - ] - } - }, - { - "type": "template", - "name": "example_text", - "value": "example_text", - "rows": [], - "_nested_name": "example_text" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_text_area.json b/packages/app-data/sheets/template/debug/feature_text_area.json deleted file mode 100644 index 0c64adee5a..0000000000 --- a/packages/app-data/sheets/template/debug/feature_text_area.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_text_area", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "text_area", - "name": "text_area", - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "example placeholder" - }, - "_nested_name": "text_area" - }, - { - "type": "text", - "name": "text", - "value": "the text entered is:\n\n@local.text_area", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "the text entered is:\n\n@local.text_area", - "matchedExpression": "@local.text_area", - "type": "local", - "fieldName": "text_area" - } - ] - }, - "_dynamicDependencies": { - "@local.text_area": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_text_box.json b/packages/app-data/sheets/template/debug/feature_text_box.json deleted file mode 100644 index 5b01480c22..0000000000 --- a/packages/app-data/sheets/template/debug/feature_text_box.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_text_box", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "blank_display_text", - "value": "Click here to answer", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "blank_display_text" - }, - { - "type": "set_default", - "name": "_value", - "value": "@local.default_value", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "_value", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.default_value", - "matchedExpression": "@local.default_value", - "type": "local", - "fieldName": "default_value" - } - ] - }, - "_dynamicDependencies": { - "@local.default_value": [ - "value" - ] - } - }, - { - "type": "text_box", - "name": "text_box", - "exclude_from_translation": true, - "parameter_list": { - "blank_display_text": "@local.blank_display_text", - "help": "some help text", - "placeholder": "example placeholder" - }, - "_nested_name": "text_box", - "_dynamicFields": { - "parameter_list": { - "blank_display_text": [ - { - "fullExpression": "@local.blank_display_text", - "matchedExpression": "@local.blank_display_text", - "type": "local", - "fieldName": "blank_display_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.blank_display_text": [ - "parameter_list.blank_display_text" - ] - } - }, - { - "type": "text_box", - "name": "text_box_1", - "value": "Answer 1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "text_align": "right", - "placeholder": "Add your answer" - }, - "_nested_name": "text_box_1" - }, - { - "type": "text_box", - "name": "text_box_2", - "value": "Answer 2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "parameter_list": { - "help": "some help text", - "text_align": "left", - "placeholder": "Add your answer 2" - }, - "_nested_name": "text_box_2" - }, - { - "type": "text_box", - "name": "text_box_3", - "exclude_from_translation": true, - "parameter_list": { - "text_align": "center", - "placeholder": "Add your answer 3" - }, - "_nested_name": "text_box_3" - }, - { - "type": "text_box", - "name": "text_box_3", - "exclude_from_translation": true, - "parameter_list": { - "text_align": "center", - "placeholder": "Add your answer 3", - "number_input": "true" - }, - "_nested_name": "text_box_3" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_text_box_placeholder.json b/packages/app-data/sheets/template/debug/feature_text_box_placeholder.json deleted file mode 100644 index 214c2e9806..0000000000 --- a/packages/app-data/sheets/template/debug/feature_text_box_placeholder.json +++ /dev/null @@ -1,494 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_text_box_placeholder", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "placeholder", - "value": "placeholder", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "placeholder" - }, - { - "type": "set_field", - "name": "feature_default_input", - "value": "default input", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "feature_default_input" - }, - { - "type": "text", - "name": "text_1", - "value": "Text box 1: \nShows @local.placeholder before user input is given, and when user input is deleted", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text box 1: \nShows @local.placeholder before user input is given, and when user input is deleted", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "text_box", - "name": "text_box_1", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_input_tracker_1", - "this.value" - ], - "_raw": "changed | set_field: feature_input_tracker_1:@local.text_box_1", - "_cleaned": "changed | set_field: feature_input_tracker_1:@local.text_box_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "@local.placeholder" - }, - "_nested_name": "text_box_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_1:@local.text_box_1", - "matchedExpression": "@local.text_box_1", - "type": "local", - "fieldName": "text_box_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_1:@local.text_box_1", - "matchedExpression": "@local.text_box_1", - "type": "local", - "fieldName": "text_box_1" - } - ] - } - }, - "parameter_list": { - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@local.text_box_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Text box 2: \nShows @fields.feature_default_input before user input is given. Is blank when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text box 2: \nShows @fields.feature_default_input before user input is given. Is blank when user input is deleted.", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - } - ] - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ] - } - }, - { - "type": "text_box", - "name": "text_box_2", - "value": "@fields.feature_default_input", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_input_tracker_2", - "this.value" - ], - "_raw": "changed | set_field: feature_input_tracker_2:@local.text_box_2", - "_cleaned": "changed | set_field: feature_input_tracker_2:@local.text_box_2" - } - ], - "exclude_from_translation": true, - "_nested_name": "text_box_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_input", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_2:@local.text_box_2", - "matchedExpression": "@local.text_box_2", - "type": "local", - "fieldName": "text_box_2" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_2:@local.text_box_2", - "matchedExpression": "@local.text_box_2", - "type": "local", - "fieldName": "text_box_2" - } - ] - } - } - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ], - "@local.text_box_2": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "text", - "name": "text_3", - "value": "Text boxes 3 and 4: \nShows @fields.feature_default_input before user input is given. Shows @local.placeholder when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text boxes 3 and 4: \nShows @fields.feature_default_input before user input is given. Shows @local.placeholder when user input is deleted.", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - }, - { - "fullExpression": "Text boxes 3 and 4: \nShows @fields.feature_default_input before user input is given. Shows @local.placeholder when user input is deleted.", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ], - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "text_box", - "name": "text_box_3", - "value": "@fields.feature_default_input", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_input_tracker_3", - "this.value" - ], - "_raw": "changed | set_field: feature_input_tracker_3:@local.text_box_3", - "_cleaned": "changed | set_field: feature_input_tracker_3:@local.text_box_3" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "@local.placeholder" - }, - "_nested_name": "text_box_3", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_input", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_3:@local.text_box_3", - "matchedExpression": "@local.text_box_3", - "type": "local", - "fieldName": "text_box_3" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_3:@local.text_box_3", - "matchedExpression": "@local.text_box_3", - "type": "local", - "fieldName": "text_box_3" - } - ] - } - }, - "parameter_list": { - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ], - "@local.text_box_3": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text_box", - "name": "text_box_4", - "value": "@fields.feature_default_input", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_input_tracker_4", - "this.value" - ], - "_raw": "changed | set_field: feature_input_tracker_4:@local.text_box_4", - "_cleaned": "changed | set_field: feature_input_tracker_4:@local.text_box_4" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "@local.placeholder", - "prioritise_placeholder": "false" - }, - "_nested_name": "text_box_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_input", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_4:@local.text_box_4", - "matchedExpression": "@local.text_box_4", - "type": "local", - "fieldName": "text_box_4" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_4:@local.text_box_4", - "matchedExpression": "@local.text_box_4", - "type": "local", - "fieldName": "text_box_4" - } - ] - } - }, - "parameter_list": { - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ], - "@local.text_box_4": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "text_5", - "value": "Text box 5: \nShows @local.placeholder before user input is given, and when user input is deleted.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "text_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Text box 5: \nShows @local.placeholder before user input is given, and when user input is deleted.", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - }, - "_dynamicDependencies": { - "@local.placeholder": [ - "value" - ] - } - }, - { - "type": "text_box", - "name": "text_box_5", - "value": "@fields.feature_default_input", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "feature_input_tracker_5", - "this.value" - ], - "_raw": "changed | set_field: feature_input_tracker_5:@local.text_box_5", - "_cleaned": "changed | set_field: feature_input_tracker_5:@local.text_box_5" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "placeholder": "@local.placeholder", - "prioritise_placeholder": "true" - }, - "_nested_name": "text_box_5", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.feature_default_input", - "matchedExpression": "@fields.feature_default_input", - "type": "fields", - "fieldName": "feature_default_input" - } - ], - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_5:@local.text_box_5", - "matchedExpression": "@local.text_box_5", - "type": "local", - "fieldName": "text_box_5" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: feature_input_tracker_5:@local.text_box_5", - "matchedExpression": "@local.text_box_5", - "type": "local", - "fieldName": "text_box_5" - } - ] - } - }, - "parameter_list": { - "placeholder": [ - { - "fullExpression": "@local.placeholder", - "matchedExpression": "@local.placeholder", - "type": "local", - "fieldName": "placeholder" - } - ] - } - }, - "_dynamicDependencies": { - "@fields.feature_default_input": [ - "value" - ], - "@local.text_box_5": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_prioritise_placeholder.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_tile.json b/packages/app-data/sheets/template/debug/feature_tile.json deleted file mode 100644 index 49a4d86644..0000000000 --- a/packages/app-data/sheets/template/debug/feature_tile.json +++ /dev/null @@ -1,463 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_tile", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First item text", - "second_line_text": "Second item text", - "style": "quick_start_passive" - }, - "_nested_name": "tile_example_1" - }, - { - "name": "icon_src", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "icon_src" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "tile_component", - "name": "tile_example_2", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Second item text", - "second_line_text": "Second item text", - "style": "quick_start" - }, - "_nested_name": "tile_example_2" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "tile_component", - "name": "tile_example_3", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Third item text", - "second_line_text": "Third item text", - "style": "quick_start_blue" - }, - "_nested_name": "tile_example_3" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "tile_component", - "name": "tile_example_3", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Fourth item text", - "second_line_text": "Fourth item text", - "style": "quick_start_red" - }, - "_nested_name": "tile_example_3" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "tile_component", - "name": "tile_example_3", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "With Others", - "style": "workshop_page", - "icon_src": "plh_images/home_page/home_page_workshops.svg" - }, - "_nested_name": "tile_example_3" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "tile_component", - "name": "tile_example_3", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Alone", - "style": "workshop_page", - "icon_src": "plh_images/home_page/home_page_parent_points.svg" - }, - "_nested_name": "tile_example_3" - }, - { - "name": "first_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "first_line_text" - }, - { - "name": "second_line_text", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "second_line_text" - }, - { - "name": "style", - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "style" - }, - { - "type": "display_group", - "name": "dg", - "exclude_from_translation": true, - "parameter_list": { - "style": "parent_point" - }, - "rows": [ - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First itemt", - "second_line_text": "Second", - "style": "parent_centre_2" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First item", - "second_line_text": "Second", - "style": "parent_centre_3" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First itemt", - "second_line_text": "Second", - "style": "parent_centre_4" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First", - "second_line_text": "Second", - "style": "parent_centre_1" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First itemt", - "second_line_text": "Second", - "style": "parent_centre_1" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First item", - "second_line_text": "Second", - "style": "parent_centre_2" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "icon_src": "plh_images/icons/star.svg", - "first_line_text": "First itemt", - "second_line_text": "Second", - "style": "parent_centre_3" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "First", - "icon_src": "plh_images/icons/star.svg", - "second_line_text": "Second", - "style": "parent_centre_4" - }, - "_nested_name": "dg.tile_example_1" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "First", - "icon_src": "plh_images/icons/star.svg", - "second_line_text": "Second", - "style": "parent_centre_4" - }, - "_nested_name": "dg.tile_example_1" - } - ], - "_nested_name": "dg" - }, - { - "type": "tile_component", - "name": "tile_example_1", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "First", - "icon_src": "plh_images/icons/star.svg", - "second_line_text": "Second", - "style": "parent_centre_4" - }, - "_nested_name": "tile_example_1" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to add self-care", - "style": "image_text", - "icon_src": "plh_images/workshops/w_self_care/tools.svg" - }, - "name": "tile_component", - "_nested_name": "tile_component" - }, - { - "type": "display_group", - "parameter_list": { - "style": "two_columns" - }, - "rows": [ - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to add self-care", - "style": "image_text", - "icon_src": "plh_images/workshops/w_self_care/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to spend one-on-one time", - "style": "image_text", - "icon_src": "plh_images/workshops/w_1on1/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to Praise", - "style": "image_text", - "icon_src": "plh_images/workshops/w_praise/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to give positive instructions", - "style": "image_text", - "icon_src": "plh_images/workshops/w_instruct/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to manage stress", - "style": "image_text", - "icon_src": "plh_images/workshops/w_stress/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to budget and save", - "style": "image_text", - "icon_src": "plh_images/workshops/w_money/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to create rules", - "style": "image_text", - "icon_src": "plh_images/workshops/w_rules/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "How to give calm consequences", - "style": "image_text", - "icon_src": "plh_images/workshops/w_consequence/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Teen safety", - "style": "image_text", - "icon_src": "plh_images/workshops/w_safe/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Dealing with crisis", - "style": "image_text", - "icon_src": "plh_images/workshops/w_crisis/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - }, - { - "type": "tile_component", - "exclude_from_translation": true, - "parameter_list": { - "first_line_text": "Celebration", - "style": "image_text", - "icon_src": "plh_images/workshops/w_celebrate/tools.svg" - }, - "name": "tile_component", - "_nested_name": "display_group.tile_component" - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_timer.json b/packages/app-data/sheets/template/debug/feature_timer.json deleted file mode 100644 index 9616963a11..0000000000 --- a/packages/app-data/sheets/template/debug/feature_timer.json +++ /dev/null @@ -1,186 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_timer", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "name": "help_text", - "value": "Click to start the timer", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "help_text" - }, - { - "type": "timer", - "name": "timer_with_help", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "with help" - }, - "_nested_name": "timer_with_help", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "timer", - "name": "timer_is_editable_on_playing", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "is editable on playing", - "is_editable_on_playing": "true" - }, - "_nested_name": "timer_is_editable_on_playing", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "timer", - "name": "timer_with_starting_minutes_5", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "with starting minutes 5", - "starting_minutes": "5" - }, - "_nested_name": "timer_with_starting_minutes_5", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "timer", - "name": "timer_with_starting_seconds_20", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "with starting seconds 20", - "starting_seconds": "20" - }, - "_nested_name": "timer_with_starting_seconds_20", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "timer", - "name": "timer_with_duration_extension_2", - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "with duration_extension 2", - "duration_extension": "2" - }, - "_nested_name": "timer_with_duration_extension_2", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - }, - { - "type": "timer", - "name": "timer_with_value", - "value": 5, - "exclude_from_translation": true, - "parameter_list": { - "help": "@local.help_text", - "title": "with value 5" - }, - "_nested_name": "timer_with_value", - "_dynamicFields": { - "parameter_list": { - "help": [ - { - "fullExpression": "@local.help_text", - "matchedExpression": "@local.help_text", - "type": "local", - "fieldName": "help_text" - } - ] - } - }, - "_dynamicDependencies": { - "@local.help_text": [ - "parameter_list.help" - ] - } - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_timer_ping.json b/packages/app-data/sheets/template/debug/feature_timer_ping.json deleted file mode 100644 index c46df419c0..0000000000 --- a/packages/app-data/sheets/template/debug/feature_timer_ping.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_timer_ping", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "timer", - "name": "ping_1", - "exclude_from_translation": true, - "parameter_list": { - "title": "Example 1", - "ping": "plh_audio/timer/ping_1.wav", - "starting_minutes": "0", - "starting_seconds": "5" - }, - "_nested_name": "ping_1" - }, - { - "type": "timer", - "name": "ping_2", - "exclude_from_translation": true, - "parameter_list": { - "title": "Example 2", - "ping": "plh_audio/timer/ping_2.wav", - "starting_minutes": "0", - "starting_seconds": "5" - }, - "_nested_name": "ping_2" - }, - { - "type": "timer", - "name": "ping_3", - "exclude_from_translation": true, - "parameter_list": { - "title": "Example 3", - "ping": "plh_audio/timer/bell_1.mp3", - "starting_minutes": "0", - "starting_seconds": "5" - }, - "_nested_name": "ping_3" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_toggle_bar.json b/packages/app-data/sheets/template/debug/feature_toggle_bar.json deleted file mode 100644 index 34834f09d1..0000000000 --- a/packages/app-data/sheets/template/debug/feature_toggle_bar.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_toggle_bar", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "toggle_bar", - "name": "toggle_1", - "value": false, - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "changed_field_toggle", - "this.value" - ], - "_raw": "changed | set_field:changed_field_toggle:@local.toggle_1", - "_cleaned": "changed | set_field:changed_field_toggle:@local.toggle_1" - } - ], - "exclude_from_translation": true, - "parameter_list": { - "position": "right", - "true_text": "some text for true value", - "false_text": "text for false", - "show_tick_and_cross": "false" - }, - "_nested_name": "toggle_1", - "_dynamicFields": { - "action_list": { - "0": { - "_raw": [ - { - "fullExpression": "changed | set_field:changed_field_toggle:@local.toggle_1", - "matchedExpression": "@local.toggle_1", - "type": "local", - "fieldName": "toggle_1" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:changed_field_toggle:@local.toggle_1", - "matchedExpression": "@local.toggle_1", - "type": "local", - "fieldName": "toggle_1" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.toggle_1": [ - "action_list.0._raw", - "action_list.0._cleaned" - ] - } - }, - { - "type": "toggle_bar", - "name": "toggle_2", - "value": false, - "exclude_from_translation": true, - "parameter_list": { - "position": "center", - "true_text": "some text for true value" - }, - "_nested_name": "toggle_2" - }, - { - "type": "toggle_bar", - "name": "toggle_3", - "value": false, - "exclude_from_translation": true, - "parameter_list": { - "false_text": "false text" - }, - "_nested_name": "toggle_3" - }, - { - "type": "toggle_bar", - "name": "toggle_4", - "value": true, - "exclude_from_translation": true, - "parameter_list": { - "false_text": "false text" - }, - "_nested_name": "toggle_4" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_two_columns_images.json b/packages/app-data/sheets/template/debug/feature_two_columns_images.json deleted file mode 100644 index a555332bb5..0000000000 --- a/packages/app-data/sheets/template/debug/feature_two_columns_images.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_two_columns_images", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "Powered by Parenting for Lifelong Health and partners", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "center", - "text_align": "center" - }, - "name": "title", - "_nested_name": "title" - }, - { - "type": "display_group", - "parameter_list": { - "style": "two_columns_images" - }, - "rows": [ - { - "type": "image", - "name": "partner_1", - "value": "plh_images/logos/partners/plh.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.partner_1" - }, - { - "type": "image", - "name": "partner_2", - "value": "plh_images/logos/partners/unicef.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.partner_2" - }, - { - "type": "image", - "name": "partner_3", - "value": "plh_images/logos/partners/who.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.partner_3" - }, - { - "type": "image", - "name": "partner_4", - "value": "plh_images/logos/partners/cwb.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.partner_4" - }, - { - "type": "image", - "name": "partner_5", - "value": "plh_images/logos/partners/idems.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.partner_5" - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/feature_two_columns_images_2.json b/packages/app-data/sheets/template/debug/feature_two_columns_images_2.json deleted file mode 100644 index c896881d1d..0000000000 --- a/packages/app-data/sheets/template/debug/feature_two_columns_images_2.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "feature_two_columns_images_2", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "title", - "value": "ParentApp funded by", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "center", - "text_align": "center" - }, - "name": "title", - "_nested_name": "title" - }, - { - "type": "display_group", - "parameter_list": { - "style": "two_columns_images" - }, - "rows": [ - { - "type": "image", - "name": "funder_1", - "value": "plh_images/logos/funders/ukri.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_1" - }, - { - "type": "image", - "name": "funder_2", - "value": "plh_images/logos/funders/gcrf.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_2" - }, - { - "type": "image", - "name": "funder_3", - "value": "plh_images/logos/funders/newton_fund.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_3" - }, - { - "type": "image", - "name": "funder_4", - "value": "plh_images/logos/funders/lego_foundation.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_4" - }, - { - "type": "image", - "name": "funder_5", - "value": "plh_images/logos/funders/university_of_oxford.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_5" - }, - { - "type": "image", - "name": "funder_6", - "value": "plh_images/logos/funders/oak_foundation.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_6" - }, - { - "type": "image", - "name": "funder_7", - "value": "plh_images/logos/funders/unicef.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_7" - }, - { - "type": "image", - "name": "funder_8", - "value": "plh_images/logos/funders/end_violence_against_children.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_8" - }, - { - "type": "image", - "name": "funder_9", - "value": "plh_images/logos/funders/erc.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_9" - }, - { - "type": "image", - "name": "funder_10", - "value": "plh_images/logos/funders/generali_human_safety_net.png", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_group.funder_10" - } - ], - "name": "display_group", - "_nested_name": "display_group" - } - ], - "_xlsxPath": "quality_assurance/feature_templates/feature_template_components.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_ending.json b/packages/app-data/sheets/template/debug/w_example_ending.json deleted file mode 100644 index da8cc2f855..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_ending.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_ending", - "status": "released", - "rows": [ - { - "type": "template", - "name": "ending", - "value": "ending", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "ending" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_home_practice.json b/packages/app-data/sheets/template/debug/w_example_home_practice.json deleted file mode 100644 index e449232013..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_home_practice.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_home_practice", - "status": "released", - "rows": [ - { - "type": "template", - "name": "home_practice", - "value": "home_practice", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "exclude_from_translation": true, - "rows": [ - { - "name": "text_1", - "value": "First bit of text. The next button takes you to the story.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.text_1" - }, - { - "name": "button_1", - "value": "Pop-up button", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "pop_up", - "args": [ - "w_example_pop-up" - ], - "_raw": "click | pop_up:w_example_pop-up", - "_cleaned": "click | pop_up:w_example_pop-up" - } - ], - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.button_1" - }, - { - "name": "text_2", - "value": "Second bit of text. The button below takes you to the audio activity.", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.text_2" - }, - { - "name": "button_2", - "value": "Button 2", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_example_listen" - ], - "_raw": "click | go_to:w_example_listen", - "_cleaned": "click | go_to:w_example_listen" - } - ], - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.button_2" - } - ], - "_nested_name": "home_practice.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice.workshop_activity" - } - ], - "_nested_name": "home_practice" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_listen.json b/packages/app-data/sheets/template/debug/w_example_listen.json deleted file mode 100644 index 8429bafaad..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_listen.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_listen", - "status": "released", - "rows": [ - { - "type": "template", - "name": "listen", - "value": "listen", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "name": "audio_src", - "value": "plh_audio/sample.mp3", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "listen.audio_src" - } - ], - "_nested_name": "listen" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_read.json b/packages/app-data/sheets/template/debug/w_example_read.json deleted file mode 100644 index 506302ba5a..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_read.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_read", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "name": "number_of_slides", - "value": 3, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.number_of_slides" - }, - { - "name": "slide_image_src_1", - "value": "plh_images/modules/mod_instruct/thought_experiment/te_1.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_image_src_1" - }, - { - "name": "slide_text_1", - "value": "This is the text on the first slide.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_text_1" - }, - { - "name": "slide_image_src_2", - "value": "plh_images/modules/mod_instruct/thought_experiment/te_2.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_image_src_2" - }, - { - "name": "slide_text_2", - "value": "This is the text on the second slide.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_text_2" - }, - { - "name": "slide_image_src_3", - "value": "plh_images/modules/mod_instruct/thought_experiment/te_3.svg", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_image_src_3" - }, - { - "name": "slide_text_3", - "value": "This is the text on the third slide.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.slide_text_3" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_stepper.json b/packages/app-data/sheets/template/debug/w_example_stepper.json deleted file mode 100644 index f04347bcb4..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_stepper.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_stepper", - "status": "released", - "rows": [ - { - "type": "template", - "name": "workshop_stepper_together", - "value": "workshop_stepper", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "hidden": "!@field.do_workshops_together", - "exclude_from_translation": true, - "parameter_list": { - "theme": "@global.theme" - }, - "rows": [ - { - "name": "nav_template_list", - "value": [ - "w_example_welcome_together", - "w_example_listen", - "w_example_read", - "w_example_talk_together", - "w_example_tools_activity", - "w_example_home_practice", - "w_example_ending" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "workshop_stepper_together.nav_template_list" - } - ], - "_nested_name": "workshop_stepper_together", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", - "fieldName": "do_workshops_together" - } - ], - "parameter_list": { - "theme": [ - { - "fullExpression": "@global.theme", - "matchedExpression": "@global.theme", - "type": "global", - "fieldName": "theme" - } - ] - } - }, - "_dynamicDependencies": { - "!@field.do_workshops_together": [ - "hidden" - ], - "@global.theme": [ - "parameter_list.theme" - ] - } - }, - { - "type": "template", - "name": "workshop_stepper_individual", - "value": "workshop_stepper", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "hidden": true, - "exclude_from_translation": true, - "rows": [ - { - "name": "nav_template_list", - "value": [ - "w_example_listen" - ], - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "workshop_stepper_individual.nav_template_list" - } - ], - "_nested_name": "workshop_stepper_individual" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_talk_together.json b/packages/app-data/sheets/template/debug/w_example_talk_together.json deleted file mode 100644 index c1eee70e97..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_talk_together.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_talk_together", - "status": "released", - "rows": [ - { - "type": "template", - "name": "talk_together", - "value": "talk_together", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "name": "discussion_text", - "value": "This text describes what should be discussed.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "talk_together.discussion_text" - } - ], - "_nested_name": "talk_together" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_tools.json b/packages/app-data/sheets/template/debug/w_example_tools.json deleted file mode 100644 index 8edd909eea..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_tools.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_tools", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_tools", - "value": "box_tools", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "type": "title", - "name": "tools_title", - "value": "Example Workshop", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "box_tools.tools_title" - }, - { - "type": "nested_properties", - "name": "tool_1", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "First tool", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_1.title" - }, - { - "name": "text_1", - "value": "Text describing the first tool.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_1.text_1" - }, - { - "name": "button", - "value": "Button", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_1.button" - } - ], - "_nested_name": "box_tools.tool_1" - }, - { - "type": "nested_properties", - "name": "tool_2", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Second tool", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_2.title" - }, - { - "name": "subtitle_1", - "value": "Subtitle 1", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_2.subtitle_1" - }, - { - "name": "text_1", - "value": "Some text.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_2.text_1" - }, - { - "name": "subtitle_2", - "value": "Subtitle 2", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_2.subtitle_2" - }, - { - "name": "text_2", - "value": "More text.", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_2.text_2" - } - ], - "_nested_name": "box_tools.tool_2" - }, - { - "type": "nested_properties", - "name": "tool_3", - "exclude_from_translation": true, - "rows": [ - { - "name": "title", - "value": "Third tool", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_3.title" - }, - { - "name": "text_1", - "value": "Text describing the third tool.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_3.text_1" - }, - { - "name": "image", - "value": "plh_images/modules/mod_instruct/thought_experiment/te_1.svg", - "_translations": { - "value": {} - }, - "hidden": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_tools.tool_3.image" - } - ], - "_nested_name": "box_tools.tool_3" - } - ], - "_nested_name": "box_tools" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_tools_activity.json b/packages/app-data/sheets/template/debug/w_example_tools_activity.json deleted file mode 100644 index 59b2a4cc16..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_tools_activity.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_tools_activity", - "status": "released", - "rows": [ - { - "type": "template", - "name": "tools_activity", - "value": "tools_activity", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "value": "w_example_tools", - "exclude_from_translation": true, - "rows": [], - "_nested_name": "tools_activity.workshop_activity.content_box" - } - ], - "_nested_name": "tools_activity.workshop_activity" - } - ], - "_nested_name": "tools_activity" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug/w_example_welcome_together.json b/packages/app-data/sheets/template/debug/w_example_welcome_together.json deleted file mode 100644 index 80caf5b22e..0000000000 --- a/packages/app-data/sheets/template/debug/w_example_welcome_together.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "debug", - "flow_name": "w_example_welcome_together", - "status": "released", - "rows": [ - { - "type": "template", - "name": "welcome_together", - "value": "welcome_together", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - } - ], - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "watch", - "exclude_from_translation": true, - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "exclude_from_translation": true, - "rows": [ - { - "name": "intro_text", - "value": "This is the introduction text of the welcome together.", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "welcome_together.watch.workshop_activity.intro_text" - } - ], - "_nested_name": "welcome_together.watch.workshop_activity" - } - ], - "_nested_name": "welcome_together.watch" - } - ], - "_nested_name": "welcome_together" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_workshop.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug_override/example_temp_override_default.json b/packages/app-data/sheets/template/debug_override/example_temp_override_default.json deleted file mode 100644 index 1909c30373..0000000000 --- a/packages/app-data/sheets/template/debug_override/example_temp_override_default.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_temp_override_default", - "status": "released", - "flow_subtype": "debug_override", - "rows": [ - { - "type": "set_variable", - "name": "a_or_b", - "value": "a", - "_translations": { - "value": {} - }, - "_nested_name": "a_or_b" - }, - { - "type": "title", - "name": "title_1", - "value": "Override Template Default", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "text", - "name": "text_a", - "value": "Change language below to apply override", - "_translations": { - "value": {} - }, - "condition": "@local.a_or_b === \"a\"", - "_nested_name": "text_a", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.a_or_b === \"a\"", - "matchedExpression": "@local.a_or_b", - "type": "local", - "fieldName": "a_or_b" - } - ] - }, - "_dynamicDependencies": { - "@local.a_or_b": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_b", - "value": "Content has been overridden", - "_translations": { - "value": {} - }, - "condition": "@local.a_or_b === \"b\"", - "_nested_name": "text_b", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.a_or_b === \"b\"", - "matchedExpression": "@local.a_or_b", - "type": "local", - "fieldName": "a_or_b" - } - ] - }, - "_dynamicDependencies": { - "@local.a_or_b": [ - "condition" - ] - } - }, - { - "type": "text", - "name": "text_c", - "value": "The value of the global variable example_glob_override is: @global.example_glob_override", - "_translations": { - "value": {} - }, - "_nested_name": "text_c", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The value of the global variable example_glob_override is: @global.example_glob_override", - "matchedExpression": "@global.example_glob_override", - "type": "global", - "fieldName": "example_glob_override" - } - ] - }, - "_dynamicDependencies": { - "@global.example_glob_override": [ - "value" - ] - } - }, - { - "type": "template", - "name": "example_lang_select", - "value": "example_lang_select", - "rows": [], - "_nested_name": "example_lang_select" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_overrides.xlsx", - "_overrides": { - "example_temp_override_es_sp": "@fields._app_language.startsWith(\"es\")" - } -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/debug_override/example_temp_override_es_sp.json b/packages/app-data/sheets/template/debug_override/example_temp_override_es_sp.json deleted file mode 100644 index 4bfe689762..0000000000 --- a/packages/app-data/sheets/template/debug_override/example_temp_override_es_sp.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "example_temp_override_es_sp", - "status": "released", - "flow_subtype": "debug_override", - "override_target": "example_temp_override_default", - "override_condition": "@fields._app_language.startsWith(\"es\")", - "comments": "condition used to apply override to all es users (e.g. es_sp)", - "rows": [ - { - "type": "title", - "name": "title_1", - "value": "ES_SP Overridden Template", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title_1" - }, - { - "type": "template", - "name": "example_override_default", - "value": "example_temp_override_default", - "exclude_from_translation": true, - "is_override_target": true, - "rows": [ - { - "name": "a_or_b", - "value": "b", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "example_override_default.a_or_b" - } - ], - "_nested_name": "example_override_default" - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_overrides.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/demo_navigation.json b/packages/app-data/sheets/template/demo_navigation.json index b0d3cd4039..e06296082d 100644 --- a/packages/app-data/sheets/template/demo_navigation.json +++ b/packages/app-data/sheets/template/demo_navigation.json @@ -458,7 +458,7 @@ { "type": "button", "name": "pt_6_button_2", - "value": "Question Time (reflect individually)", + "value": "Question time (reflect individually)", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/demo_workshop_unlock_pop.json b/packages/app-data/sheets/template/demo_workshop_unlock_pop.json index cfadb41af6..0829100ba1 100644 --- a/packages/app-data/sheets/template/demo_workshop_unlock_pop.json +++ b/packages/app-data/sheets/template/demo_workshop_unlock_pop.json @@ -198,21 +198,24 @@ { "type": "dashed_box", "name": "text_2", - "value": "All workshops are now unlocked.", + "value": "All @global.workshops are now unlocked.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "exclude_from_translation": true, "hidden": "!@fields.unlock_workshops_confirm", "_nested_name": "text_2", "_dynamicFields": { + "value": [ + { + "fullExpression": "All @global.workshops are now unlocked.", + "matchedExpression": "@global.workshops", + "type": "global", + "fieldName": "workshops" + } + ], "hidden": [ { "fullExpression": "!@fields.unlock_workshops_confirm", @@ -223,6 +226,9 @@ ] }, "_dynamicDependencies": { + "@global.workshops": [ + "value" + ], "!@fields.unlock_workshops_confirm": [ "hidden" ] diff --git a/packages/app-data/sheets/template/demographics_teen_age.json b/packages/app-data/sheets/template/demographics_teen_age.json new file mode 100644 index 0000000000..43a1eb75ee --- /dev/null +++ b/packages/app-data/sheets/template/demographics_teen_age.json @@ -0,0 +1,603 @@ +{ + "flow_type": "template", + "flow_name": "demographics_teen_age", + "status": "released", + "rows": [ + { + "name": "teens_word", + "value": "Teens", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "teens_word" + }, + { + "name": "teen_word", + "value": "Teen", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "teen_word" + }, + { + "name": "age_of_teen", + "value": "Age of teen", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "age_of_teen" + }, + { + "name": "number_selector_teens_title", + "value": "@local.teens_word (@global.teen_age_bracket)", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "number_selector_teens_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.teens_word (@global.teen_age_bracket)", + "matchedExpression": "@local.teens_word", + "type": "local", + "fieldName": "teens_word" + }, + { + "fullExpression": "@local.teens_word (@global.teen_age_bracket)", + "matchedExpression": "@global.teen_age_bracket", + "type": "global", + "fieldName": "teen_age_bracket" + } + ] + }, + "_dynamicDependencies": { + "@local.teens_word": [ + "value" + ], + "@global.teen_age_bracket": [ + "value" + ] + } + }, + { + "name": "household_teens", + "value": "+@fields.household_teens", + "_translations": { + "value": {} + }, + "condition": "@fields.household_teens", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "household_teens", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@fields.household_teens", + "matchedExpression": "@fields.household_teens", + "type": "fields", + "fieldName": "household_teens" + } + ], + "condition": [ + { + "fullExpression": "@fields.household_teens", + "matchedExpression": "@fields.household_teens", + "type": "fields", + "fieldName": "household_teens" + } + ] + }, + "_dynamicDependencies": { + "@fields.household_teens": [ + "value", + "condition" + ] + } + }, + { + "name": "household_teens", + "value": 0, + "condition": "!@fields.household_teens", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "household_teens", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.household_teens", + "matchedExpression": "!@fields.household_teens", + "type": "fields", + "fieldName": "household_teens" + } + ] + }, + "_dynamicDependencies": { + "!@fields.household_teens": [ + "condition" + ] + } + }, + { + "name": "household_teens", + "value": "+@fields.household_teens_2", + "_translations": { + "value": {} + }, + "condition": "@fields.household_teens_2", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "household_teens", + "_dynamicFields": { + "value": [ + { + "fullExpression": "+@fields.household_teens_2", + "matchedExpression": "@fields.household_teens_2", + "type": "fields", + "fieldName": "household_teens_2" + } + ], + "condition": [ + { + "fullExpression": "@fields.household_teens_2", + "matchedExpression": "@fields.household_teens_2", + "type": "fields", + "fieldName": "household_teens_2" + } + ] + }, + "_dynamicDependencies": { + "@fields.household_teens_2": [ + "value", + "condition" + ] + } + }, + { + "type": "text", + "name": "text", + "value": "Let’s start with a few questions about your family.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text" + }, + { + "type": "text", + "name": "text_q_1", + "value": "How many teens are in your household?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "text_q_1" + }, + { + "type": "display_group", + "name": "select_total", + "rows": [ + { + "type": "image", + "name": "image_teens", + "value": "plh_images/survey/workshop_setup/teens.svg", + "_translations": { + "value": {} + }, + "style_list": [ + "flex:2" + ], + "_nested_name": "select_total.image_teens" + }, + { + "type": "number_selector", + "name": "number_selector_teens", + "value": "@local.household_teens", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "household_teens_2", + "this.value" + ], + "_raw": "changed | set_field: household_teens_2: this.value", + "_cleaned": "changed | set_field: household_teens_2: this.value" + }, + { + "trigger": "changed", + "action_id": "set_local", + "args": [ + "household_teens", + "this.value" + ], + "_raw": "changed | set_local: household_teens: this.value", + "_cleaned": "changed | set_local: household_teens: this.value" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "min_value": "0", + "max_value": "20", + "title": "@local.number_selector_teens_title" + }, + "style_list": [ + "flex:5" + ], + "_nested_name": "select_total.number_selector_teens", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.household_teens", + "matchedExpression": "@local.household_teens", + "type": "local", + "fieldName": "household_teens" + } + ], + "parameter_list": { + "title": [ + { + "fullExpression": "@local.number_selector_teens_title", + "matchedExpression": "@local.number_selector_teens_title", + "type": "local", + "fieldName": "number_selector_teens_title" + } + ] + } + }, + "_dynamicDependencies": { + "@local.household_teens": [ + "value" + ], + "@local.number_selector_teens_title": [ + "parameter_list.title" + ] + } + } + ], + "_nested_name": "select_total" + }, + { + "type": "text", + "name": "text_q_2", + "value": "How old are they?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "condition": "!!@local.household_teens", + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "text_q_2", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!!@local.household_teens", + "matchedExpression": "!@local.household_teens", + "type": "local", + "fieldName": "household_teens" + } + ] + }, + "_dynamicDependencies": { + "!@local.household_teens": [ + "condition" + ] + } + }, + { + "type": "items", + "value": "@data.number", + "rows": [ + { + "type": "display_group", + "name": "dg_sect_{@item.id}", + "condition": "@item.id != 0 && @item.id <= @local.household_teens", + "rows": [ + { + "type": "text", + "name": "text_age_{@item.id}", + "value": "@local.age_of_teen @item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "items.dg_sect_{@item.id}.text_age_{@item.id}", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_age_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@local.age_of_teen @item.id", + "matchedExpression": "@local.age_of_teen", + "type": "local", + "fieldName": "age_of_teen" + }, + { + "fullExpression": "@local.age_of_teen @item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_sect_{@item.id}.text_age_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_sect_{@item.id}.text_age_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "value", + "_nested_name", + "_nested_name" + ], + "@local.age_of_teen": [ + "value" + ] + } + }, + { + "type": "text_box", + "name": "number_box_{@item.id}", + "value": "@fields.@item.teen_age", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@item.teen_age", + "this.value" + ], + "_raw": "changed | set_field: @item.teen_age: this.value", + "_cleaned": "changed | set_field: @item.teen_age: this.value" + } + ], + "parameter_list": { + "text_align": "center", + "placeholder": "@global.tap_and_type", + "number_input": "true" + }, + "_nested_name": "items.dg_sect_{@item.id}.number_box_{@item.id}", + "_dynamicFields": { + "name": [ + { + "fullExpression": "number_box_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@fields.@item.teen_age", + "matchedExpression": "@item.teen_age", + "type": "item", + "fieldName": "teen_age" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.teen_age", + "matchedExpression": "@item.teen_age", + "type": "item", + "fieldName": "teen_age" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @item.teen_age: this.value", + "matchedExpression": "@item.teen_age", + "type": "item", + "fieldName": "teen_age" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @item.teen_age: this.value", + "matchedExpression": "@item.teen_age", + "type": "item", + "fieldName": "teen_age" + } + ] + } + }, + "parameter_list": { + "placeholder": [ + { + "fullExpression": "@global.tap_and_type", + "matchedExpression": "@global.tap_and_type", + "type": "global", + "fieldName": "tap_and_type" + } + ] + }, + "_nested_name": [ + { + "fullExpression": "items.dg_sect_{@item.id}.number_box_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_sect_{@item.id}.number_box_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name", + "_nested_name" + ], + "@item.teen_age": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@global.tap_and_type": [ + "parameter_list.placeholder" + ] + } + } + ], + "_nested_name": "items.dg_sect_{@item.id}", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_sect_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "condition": [ + { + "fullExpression": "@item.id != 0 && @item.id <= @local.household_teens", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id != 0 && @item.id <= @local.household_teens", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id != 0 && @item.id <= @local.household_teens", + "matchedExpression": "@local.household_teens", + "type": "local", + "fieldName": "household_teens" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_sect_{@item.id}", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "condition", + "condition", + "_nested_name" + ], + "@local.household_teens": [ + "condition" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.number", + "matchedExpression": "@data.number", + "type": "data", + "fieldName": "number" + } + ] + }, + "_dynamicDependencies": { + "@data.number": [ + "value" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "use_completed_chevron", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "nav_buttons.use_completed_chevron" + } + ], + "_nested_name": "nav_buttons" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/workshop_setup.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/ending.json b/packages/app-data/sheets/template/ending.json index b1f0d45cb3..2872aac3d7 100644 --- a/packages/app-data/sheets/template/ending.json +++ b/packages/app-data/sheets/template/ending.json @@ -75,7 +75,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/cup.svg", + "value": "plh_images/workshop_modes/individual/cup.svg", "_translations": { "value": {} }, @@ -116,19 +116,29 @@ }, { "name": "intro_text", - "value": "You’ve completed this week’s workshop.", + "value": "You’ve completed your @global.workshop.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "watch.workshop_activity.intro_text" + "_nested_name": "watch.workshop_activity.intro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "You’ve completed your @global.workshop.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } }, { "name": "activity_banner", @@ -180,6 +190,41 @@ "type": "set_variable", "_nested_name": "watch.workshop_activity.content_box.video_src" }, + { + "name": "subs_src", + "value": "plh_video/lets_slow_down.vtt", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "watch.workshop_activity.content_box.subs_src" + }, + { + "name": "button", + "value": "Read along", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "lets_slow_down_lyrics" + ], + "_raw": "click | pop_up : lets_slow_down_lyrics", + "_cleaned": "click | pop_up : lets_slow_down_lyrics" + } + ], + "hidden": false, + "type": "set_variable", + "_nested_name": "watch.workshop_activity.content_box.button" + }, { "name": "bottom_text", "value": "See you soon.", diff --git a/packages/app-data/sheets/template/example_hardcoded/example_hardcoded_fields.json b/packages/app-data/sheets/template/example_hardcoded/example_hardcoded_fields.json deleted file mode 100644 index 1853decd14..0000000000 --- a/packages/app-data/sheets/template/example_hardcoded/example_hardcoded_fields.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "flow_type": "template", - "flow_subtype": "example_hardcoded", - "flow_name": "example_hardcoded_fields", - "status": "released", - "comments": "List of fields automatically populated by app", - "rows": [ - { - "type": "title", - "name": "title", - "value": "Example Hardcoded Fields", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "title" - }, - { - "type": "subtitle", - "name": "deployment_name_label", - "value": "_deployment_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "deployment_name_label" - }, - { - "type": "text", - "name": "deployment_name_value", - "value": "@fields._deployment_name", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "deployment_name_value", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields._deployment_name", - "matchedExpression": "@fields._deployment_name", - "type": "fields", - "fieldName": "_deployment_name" - } - ] - }, - "_dynamicDependencies": { - "@fields._deployment_name": [ - "value" - ] - } - }, - { - "type": "subtitle", - "name": "server_sync_latest_label", - "value": "_server_sync_latest", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "server_sync_latest_label" - }, - { - "type": "text", - "name": "server_sync_latest_value", - "value": "@fields._server_sync_latest", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "server_sync_latest_value", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields._server_sync_latest", - "matchedExpression": "@fields._server_sync_latest", - "type": "fields", - "fieldName": "_server_sync_latest" - } - ] - }, - "_dynamicDependencies": { - "@fields._server_sync_latest": [ - "value" - ] - } - }, - { - "type": "subtitle", - "name": "app_language_label", - "value": "_app_language", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "app_language_label" - }, - { - "type": "text", - "name": "app_language_value", - "value": "@fields._app_language", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "app_language_value", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields._app_language", - "matchedExpression": "@fields._app_language", - "type": "fields", - "fieldName": "_app_language" - } - ] - }, - "_dynamicDependencies": { - "@fields._app_language": [ - "value" - ] - } - } - ], - "_xlsxPath": "quality_assurance/example_templates/hardcoded_variables.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/feature_feedback_debug.json b/packages/app-data/sheets/template/feature_feedback_debug.json new file mode 100644 index 0000000000..044b5da347 --- /dev/null +++ b/packages/app-data/sheets/template/feature_feedback_debug.json @@ -0,0 +1,279 @@ +{ + "flow_type": "template", + "flow_name": "feature_feedback_debug", + "status": "released", + "comments": "Used in /feedback debug page", + "rows": [ + { + "type": "title", + "value": "Fields", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "name": "title", + "_nested_name": "title" + }, + { + "type": "text", + "value": "_feedback_selected_text : @fields._feedback_selected_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "name": "text", + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "_feedback_selected_text : @fields._feedback_selected_text", + "matchedExpression": "@fields._feedback_selected_text", + "type": "fields", + "fieldName": "_feedback_selected_text" + } + ] + }, + "_dynamicDependencies": { + "@fields._feedback_selected_text": [ + "value" + ] + } + }, + { + "type": "text", + "value": "_feedback_sidebar_open : @fields._feedback_sidebar_open", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "name": "text", + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "_feedback_sidebar_open : @fields._feedback_sidebar_open", + "matchedExpression": "@fields._feedback_sidebar_open", + "type": "fields", + "fieldName": "_feedback_sidebar_open" + } + ] + }, + "_dynamicDependencies": { + "@fields._feedback_sidebar_open": [ + "value" + ] + } + }, + { + "type": "title", + "value": "Actions", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "name": "title", + "_nested_name": "title" + }, + { + "type": "button", + "value": "Sidebar Open", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "open" + ], + "_raw": "click | feedback:open", + "_cleaned": "click | feedback:open" + }, + { + "trigger": "click", + "action_id": "emit", + "args": [ + "force_reprocess" + ], + "_raw": "click | emit: force_reprocess", + "_cleaned": "click | emit: force_reprocess" + } + ], + "condition": "!@fields._feedback_sidebar_open", + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields._feedback_sidebar_open", + "matchedExpression": "!@fields._feedback_sidebar_open", + "type": "fields", + "fieldName": "_feedback_sidebar_open" + } + ] + }, + "_dynamicDependencies": { + "!@fields._feedback_sidebar_open": [ + "condition" + ] + } + }, + { + "type": "button", + "value": "Sidebar Close", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "close" + ], + "_raw": "click | feedback:close", + "_cleaned": "click | feedback:close" + }, + { + "trigger": "click", + "action_id": "emit", + "args": [ + "force_reprocess" + ], + "_raw": "click | emit: force_reprocess", + "_cleaned": "click | emit: force_reprocess" + } + ], + "condition": "@fields._feedback_sidebar_open", + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields._feedback_sidebar_open", + "matchedExpression": "@fields._feedback_sidebar_open", + "type": "fields", + "fieldName": "_feedback_sidebar_open" + } + ] + }, + "_dynamicDependencies": { + "@fields._feedback_sidebar_open": [ + "condition" + ] + } + }, + { + "type": "button", + "value": "Open Feedback Template", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "template", + "feature_feedback_default" + ], + "_raw": "click | feedback:template:feature_feedback_default", + "_cleaned": "click | feedback:template:feature_feedback_default" + } + ], + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button" + }, + { + "type": "button", + "value": "Send Test Feedback", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "send", + "test feedback" + ], + "_raw": "click | feedback:send:test feedback", + "_cleaned": "click | feedback:send:test feedback" + } + ], + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button" + }, + { + "type": "button", + "value": "Enable Feedback Mode", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "enable" + ], + "_raw": "click | feedback:enable", + "_cleaned": "click | feedback:enable" + } + ], + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button" + }, + { + "type": "button", + "value": "Disable Feedback Mode", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "disable" + ], + "_raw": "click | feedback:disable", + "_cleaned": "click | feedback:disable" + } + ], + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button" + }, + { + "type": "button", + "value": "Submit Test Feedback", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "submit", + "test feedback" + ], + "_raw": "click | feedback:submit:test feedback", + "_cleaned": "click | feedback:submit:test feedback" + } + ], + "exclude_from_translation": true, + "name": "button", + "_nested_name": "button" + } + ], + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/feature_feedback_default.json b/packages/app-data/sheets/template/feature_feedback_default.json new file mode 100644 index 0000000000..fd463e49fa --- /dev/null +++ b/packages/app-data/sheets/template/feature_feedback_default.json @@ -0,0 +1,125 @@ +{ + "flow_type": "template", + "flow_name": "feature_feedback_default", + "status": "released", + "comments": "Default general feedback form", + "rows": [ + { + "type": "title", + "name": "title_1", + "value": "Feedback", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "title_1" + }, + { + "type": "text_area", + "name": "feedback", + "exclude_from_translation": true, + "parameter_list": { + "placeholder": "Write feedback here" + }, + "_nested_name": "feedback" + }, + { + "type": "display_group", + "name": "dg_buttons", + "exclude_from_translation": true, + "rows": [ + { + "type": "button", + "name": "button_cancel", + "value": "Cancel", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "cancel" + ], + "_raw": "click | feedback:cancel", + "_cleaned": "click | feedback:cancel" + } + ], + "exclude_from_translation": true, + "_nested_name": "dg_buttons.button_cancel" + }, + { + "type": "button", + "name": "button_submit", + "value": "Submit", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "submit", + "@local.feedback" + ], + "_raw": "click | feedback:submit:@local.feedback", + "_cleaned": "click | feedback:submit:@local.feedback" + } + ], + "exclude_from_translation": true, + "_nested_name": "dg_buttons.button_submit", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | feedback:submit:@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ], + "_cleaned": [ + { + "fullExpression": "click | feedback:submit:@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ] + } + } + }, + "_dynamicDependencies": { + "@local.feedback": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned" + ] + } + } + ], + "_nested_name": "dg_buttons" + } + ], + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/feature_feedback_text_select.json b/packages/app-data/sheets/template/feature_feedback_text_select.json new file mode 100644 index 0000000000..a580d7c9cd --- /dev/null +++ b/packages/app-data/sheets/template/feature_feedback_text_select.json @@ -0,0 +1,166 @@ +{ + "flow_type": "template", + "flow_name": "feature_feedback_text_select", + "status": "released", + "comments": "Default text-select feedback form", + "rows": [ + { + "type": "title", + "name": "title_1", + "value": "Suggest Change", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "title_1" + }, + { + "type": "text", + "name": "selected_text", + "value": "@fields._feedback_selected_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "selected_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._feedback_selected_text", + "matchedExpression": "@fields._feedback_selected_text", + "type": "fields", + "fieldName": "_feedback_selected_text" + } + ] + }, + "_dynamicDependencies": { + "@fields._feedback_selected_text": [ + "value" + ] + } + }, + { + "type": "text_area", + "name": "feedback", + "value": "@fields._feedback_selected_text", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "feedback", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._feedback_selected_text", + "matchedExpression": "@fields._feedback_selected_text", + "type": "fields", + "fieldName": "_feedback_selected_text" + } + ] + }, + "_dynamicDependencies": { + "@fields._feedback_selected_text": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dg_buttons", + "exclude_from_translation": true, + "rows": [ + { + "type": "button", + "name": "button_cancel", + "value": "Cancel", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "cancel" + ], + "_raw": "click | feedback:cancel", + "_cleaned": "click | feedback:cancel" + } + ], + "exclude_from_translation": true, + "_nested_name": "dg_buttons.button_cancel" + }, + { + "type": "button", + "name": "button_submit", + "value": "Submit", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "feedback", + "args": [ + "submit", + "@local.feedback" + ], + "_raw": "click | feedback:submit:@local.feedback", + "_cleaned": "click | feedback:submit:@local.feedback" + } + ], + "exclude_from_translation": true, + "_nested_name": "dg_buttons.button_submit", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | feedback:submit:@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ], + "_cleaned": [ + { + "fullExpression": "click | feedback:submit:@local.feedback", + "matchedExpression": "@local.feedback", + "type": "local", + "fieldName": "feedback" + } + ] + } + } + }, + "_dynamicDependencies": { + "@local.feedback": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned" + ] + } + } + ], + "_nested_name": "dg_buttons" + } + ], + "_xlsxPath": "global/core_templates/feature_feedback.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/footer.json b/packages/app-data/sheets/template/footer.json new file mode 100644 index 0000000000..be3d239b26 --- /dev/null +++ b/packages/app-data/sheets/template/footer.json @@ -0,0 +1,43 @@ +{ + "flow_type": "template", + "flow_name": "footer", + "status": "released", + "rows": [ + { + "name": "button_list", + "value": [ + "image: plh_images/icons/house_white.svg | target_template: home_screen", + "image: plh_images/icons/star_white.svg | target_template: parent_points", + "image: plh_images/icons/book_white.svg | target_template: parent_centre" + ], + "type": "set_variable", + "_nested_name": "button_list" + }, + { + "type": "navigation_bar", + "parameter_list": { + "button_list": "@local.button_list" + }, + "name": "navigation_bar", + "_nested_name": "navigation_bar", + "_dynamicFields": { + "parameter_list": { + "button_list": [ + { + "fullExpression": "@local.button_list", + "matchedExpression": "@local.button_list", + "type": "local", + "fieldName": "button_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.button_list": [ + "parameter_list.button_list" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/footer.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/home_practice.json b/packages/app-data/sheets/template/home_practice.json index 890c93d79b..ff787a2c97 100644 --- a/packages/app-data/sheets/template/home_practice.json +++ b/packages/app-data/sheets/template/home_practice.json @@ -222,7 +222,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/with_teen.svg", + "value": "plh_images/workshop_modes/individual/with_teen.svg", "_translations": { "value": {} }, @@ -247,35 +247,53 @@ }, { "name": "activity_title", - "value": "Home Practice", + "value": "@global.home_practice", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", - "_nested_name": "workshop_activity.activity_title" + "_nested_name": "workshop_activity.activity_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.home_practice", + "matchedExpression": "@global.home_practice", + "type": "global", + "fieldName": "home_practice" + } + ] + }, + "_dynamicDependencies": { + "@global.home_practice": [ + "value" + ] + } }, { "name": "intro_text", - "value": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "value": "Small actions, big results! Parents who practice their @global.workshop skills at home get better results.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "workshop_activity.intro_text" + "_nested_name": "workshop_activity.intro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Small actions, big results! Parents who practice their @global.workshop skills at home get better results.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } }, { "name": "activity_banner", @@ -373,7 +391,12 @@ "name": "audio_title", "value": "Hear a teen's testimonial", "_translations": { - "value": {} + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } }, "type": "set_variable", "_nested_name": "workshop_activity.content_box.box_2.audio_title" @@ -406,7 +429,12 @@ "name": "button_1", "value": "Read a teen's testimonial", "_translations": { - "value": {} + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } }, "action_list": [ { diff --git a/packages/app-data/sheets/template/home_practice_challenges.json b/packages/app-data/sheets/template/home_practice_challenges.json index e9dc849244..3a651935ec 100644 --- a/packages/app-data/sheets/template/home_practice_challenges.json +++ b/packages/app-data/sheets/template/home_practice_challenges.json @@ -4,109 +4,140 @@ "status": "released", "rows": [ { - "name": "number_of_challenges", - "value": 5, + "name": "workshop", + "value": "w_crisis", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "number_of_challenges" + "_nested_name": "workshop" }, { - "name": "workshop_data", + "name": "data_list_row", + "value": [ + "hp_challenges.@local.workshop" + ], "type": "set_variable", - "_nested_name": "workshop_data" + "_nested_name": "data_list_row", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "hp_challenges.@local.workshop", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ] + } }, { - "name": "workshop", - "value": "@local.workshop_data.id", + "name": "row_data", + "value": "@data.@local.data_list_row", "_translations": { "value": {} }, - "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop", + "_nested_name": "row_data", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop_data.id", - "matchedExpression": "@local.workshop_data.id", + "fullExpression": "@data.@local.data_list_row", + "matchedExpression": "@local.data_list_row", "type": "local", - "fieldName": "workshop_data" + "fieldName": "data_list_row" } ] }, "_dynamicDependencies": { - "@local.workshop_data.id": [ + "@local.data_list_row": [ "value" ] } }, { - "name": "hp_review_mood", - "value": "_hp_review_mood", + "name": "hp_mood", + "value": "_hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_review_mood" + "_nested_name": "hp_mood" }, { - "name": "hp_challenge", - "value": "_hp_challenge", + "name": "workshop_hp_mood", + "value": "@local.workshop@local.hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_challenge" - }, - { - "name": "tracker", - "value": "_tracker", - "_translations": { - "value": {} + "_nested_name": "workshop_hp_mood", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop@local.hp_mood", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_mood", + "matchedExpression": "@local.hp_mood", + "type": "local", + "fieldName": "hp_mood" + } + ] }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "tracker" + "_dynamicDependencies": { + "@local.workshop": [ + "value" + ], + "@local.hp_mood": [ + "value" + ] + } }, { - "name": "final", - "value": "_final", + "name": "hp_challenge", + "value": "_hp_challenge", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "final" + "_nested_name": "hp_challenge" }, { - "name": "workshop_hp_review_mood", - "value": "@local.workshop@local.hp_review_mood@local.final", + "name": "workshop_hp_challenge", + "value": "@local.workshop@local.hp_challenge", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop_hp_review_mood", + "_nested_name": "workshop_hp_challenge", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", + "fullExpression": "@local.workshop@local.hp_challenge", "matchedExpression": "@local.workshop", "type": "local", "fieldName": "workshop" }, { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", - "matchedExpression": "@local.hp_review_mood", - "type": "local", - "fieldName": "hp_review_mood" - }, - { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", - "matchedExpression": "@local.final", + "fullExpression": "@local.workshop@local.hp_challenge", + "matchedExpression": "@local.hp_challenge", "type": "local", - "fieldName": "final" + "fieldName": "hp_challenge" } ] }, @@ -114,242 +145,303 @@ "@local.workshop": [ "value" ], - "@local.hp_review_mood": [ - "value" - ], - "@local.final": [ + "@local.hp_challenge": [ "value" ] } }, { - "name": "hp_description_third_plural", - "value": "talk to their teens about how they feel", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, + "name": "hp_challenge_list", + "value": [ + "_hp_challenge_list" + ], "type": "set_variable", - "_nested_name": "hp_description_third_plural" + "_nested_name": "hp_challenge_list" }, { - "name": "hp_description_second_singular", - "value": "talk to your teen about how you feel", - "_translations": { + "name": "workshop_hp_challenge_list", + "value": [ + "@local.workshop@local.hp_challenge_list" + ], + "type": "set_variable", + "_nested_name": "workshop_hp_challenge_list", + "_dynamicFields": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "0": [ + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.hp_challenge_list", + "type": "local", + "fieldName": "hp_challenge_list" + } + ] } }, - "type": "set_variable", - "_nested_name": "hp_description_second_singular" + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ], + "@local.hp_challenge_list": [ + "value.0" + ] + } }, { "name": "top_text", - "value": "Top @local.number_of_challenges challenges other parents experience:", + "value": "@local.row_data.top_text", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "top_text", "_dynamicFields": { "value": [ { - "fullExpression": "Top @local.number_of_challenges challenges other parents experience:", - "matchedExpression": "@local.number_of_challenges", + "fullExpression": "@local.row_data.top_text", + "matchedExpression": "@local.row_data.top_text", "type": "local", - "fieldName": "number_of_challenges" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.number_of_challenges": [ + "@local.row_data.top_text": [ "value" ] } }, { "type": "text", - "name": "question_text_happy", - "value": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "name": "question_text", + "value": "@local.row_data.question_text", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, - "condition": "!(@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\")", "parameter_list": { "style": "emphasised" }, - "_nested_name": "question_text_happy", + "_nested_name": "question_text", "_dynamicFields": { "value": [ { - "fullExpression": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "matchedExpression": "@local.hp_description_second_singular", - "type": "local", - "fieldName": "hp_description_second_singular" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\")", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - }, - { - "fullExpression": "!(@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\")", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.row_data.question_text", + "matchedExpression": "@local.row_data.question_text", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.hp_description_second_singular": [ + "@local.row_data.question_text": [ "value" - ], - "@local.workshop_hp_review_mood": [ - "condition", - "condition" ] } }, { - "type": "text", - "name": "question_text_ok_sad", - "value": "What was difficult for you when trying to @local.hp_description_second_singular?", + "name": "number_of_challenges", + "value": "@local.row_data.number_of_challenges", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "parameter_list": { - "style": "emphasised" + "value": {} }, - "_nested_name": "question_text_ok_sad", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "number_of_challenges", "_dynamicFields": { "value": [ { - "fullExpression": "What was difficult for you when trying to @local.hp_description_second_singular?", - "matchedExpression": "@local.hp_description_second_singular", - "type": "local", - "fieldName": "hp_description_second_singular" - } - ], - "condition": [ - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - }, - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.row_data.number_of_challenges", + "matchedExpression": "@local.row_data.number_of_challenges", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.hp_description_second_singular": [ + "@local.row_data.number_of_challenges": [ "value" - ], - "@local.workshop_hp_review_mood": [ - "condition", - "condition" ] } }, { "name": "text_challenge_1", - "value": "text_challenge_1", + "value": "@local.row_data.text_challenge_1", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_1" + "_nested_name": "text_challenge_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_1", + "matchedExpression": "@local.row_data.text_challenge_1", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_1": [ + "value" + ] + } }, { "name": "text_challenge_2", - "value": "text_challenge_2", + "value": "@local.row_data.text_challenge_2", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_2" + "_nested_name": "text_challenge_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_2", + "matchedExpression": "@local.row_data.text_challenge_2", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_2": [ + "value" + ] + } }, { "name": "text_challenge_3", - "value": "text_challenge_3", + "value": "@local.row_data.text_challenge_3", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_3" + "_nested_name": "text_challenge_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_3", + "matchedExpression": "@local.row_data.text_challenge_3", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_3": [ + "value" + ] + } }, { "name": "text_challenge_4", - "value": "text_challenge_4", + "value": "@local.row_data.text_challenge_4", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_4" + "_nested_name": "text_challenge_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_4", + "matchedExpression": "@local.row_data.text_challenge_4", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_4": [ + "value" + ] + } }, { "name": "text_challenge_5", - "value": "text_challenge_5", + "value": "@local.row_data.text_challenge_5", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_5" + "_nested_name": "text_challenge_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_5", + "matchedExpression": "@local.row_data.text_challenge_5", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_5": [ + "value" + ] + } }, { "name": "text_challenge_6", - "value": "text_challenge_6", + "value": "@local.row_data.text_challenge_6", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "text_challenge_6", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_6", + "matchedExpression": "@local.row_data.text_challenge_6", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_6": [ + "value" + ] + } + }, + { + "name": "text_challenge_7", + "value": "@local.row_data.text_challenge_7", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "text_challenge_6" + "_nested_name": "text_challenge_7", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_challenge_7", + "matchedExpression": "@local.row_data.text_challenge_7", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_challenge_7": [ + "value" + ] + } }, { "name": "text_other_challenge", @@ -862,90 +954,9 @@ } }, { - "name": "combo_box_tracker", - "value": "@local.workshop@local.hp_challenge@local.tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, + "name": "combo_box", "type": "set_variable", - "_nested_name": "combo_box_tracker", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop@local.hp_challenge@local.tracker", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop@local.hp_challenge@local.tracker", - "matchedExpression": "@local.hp_challenge", - "type": "local", - "fieldName": "hp_challenge" - }, - { - "fullExpression": "@local.workshop@local.hp_challenge@local.tracker", - "matchedExpression": "@local.tracker", - "type": "local", - "fieldName": "tracker" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop": [ - "value" - ], - "@local.hp_challenge": [ - "value" - ], - "@local.tracker": [ - "value" - ] - } - }, - { - "name": "combo_box_final", - "value": "@local.workshop@local.hp_challenge@local.final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_final", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop@local.hp_challenge@local.final", - "matchedExpression": "@local.workshop", - "type": "local", - "fieldName": "workshop" - }, - { - "fullExpression": "@local.workshop@local.hp_challenge@local.final", - "matchedExpression": "@local.hp_challenge", - "type": "local", - "fieldName": "hp_challenge" - }, - { - "fullExpression": "@local.workshop@local.hp_challenge@local.final", - "matchedExpression": "@local.final", - "type": "local", - "fieldName": "final" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop": [ - "value" - ], - "@local.hp_challenge": [ - "value" - ], - "@local.final": [ - "value" - ] - } + "_nested_name": "combo_box" }, { "type": "combo_box", @@ -955,11 +966,21 @@ "trigger": "changed", "action_id": "set_field", "args": [ - "@local.combo_box_tracker", + "@local.workshop_hp_challenge", "this.value" ], - "_raw": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "_cleaned": "changed | set_field: @local.combo_box_tracker: @local.combo_box" + "_raw": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.workshop_hp_challenge_list", + "@fields.@local.workshop_hp_challenge_list, @local.combo_box" + ], + "_raw": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box" } ], "parameter_list": { @@ -974,22 +995,22 @@ "args": { "0": [ { - "fullExpression": "@local.combo_box_tracker", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "@local.workshop_hp_challenge", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" } ] }, "_raw": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -997,13 +1018,79 @@ ], "_cleaned": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.workshop_hp_challenge_list", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + } + ], + "1": [ + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -1039,14 +1126,25 @@ } }, "_dynamicDependencies": { - "@local.combo_box_tracker": [ + "@local.workshop_hp_challenge": [ "action_list.0.args.0", "action_list.0._raw", "action_list.0._cleaned" ], "@local.combo_box": [ "action_list.0._raw", - "action_list.0._cleaned" + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.workshop_hp_challenge_list": [ + "action_list.1.args.0", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._raw", + "action_list.1._cleaned", + "action_list.1._cleaned" ], "@local.top_text": [ "parameter_list.text" @@ -1070,54 +1168,112 @@ { "type": "text", "name": "reply_challenge_1", + "value": "@local.row_data.reply_challenge_1", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_1.reply_challenge_1" - }, - { - "name": "reply_challenge_1_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_1.reply_challenge_1_has_button" - }, - { - "name": "reply_challenge_1_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_1.reply_challenge_1_has_2_buttons" + "_nested_name": "challenge_1.reply_challenge_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_1", + "matchedExpression": "@local.row_data.reply_challenge_1", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_1": [ + "value" + ] + } }, { "type": "button", "name": "button_1_a", - "value": "button_1_a", + "value": "@local.row_data.button_text_1_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_1_has_button || @local.reply_challenge_1_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_1_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_1_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_1_a" + } + ], + "condition": "@local.row_data.button_text_1_a&&@local.row_data.button_go_to_template_1_a", "exclude_from_translation": true, "_nested_name": "challenge_1.button_1_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_1_a", + "matchedExpression": "@local.row_data.button_text_1_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_1_has_button || @local.reply_challenge_1_has_2_buttons", - "matchedExpression": "@local.reply_challenge_1_has_button", + "fullExpression": "@local.row_data.button_text_1_a&&@local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_text_1_a", "type": "local", - "fieldName": "reply_challenge_1_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_1_has_button || @local.reply_challenge_1_has_2_buttons", - "matchedExpression": "@local.reply_challenge_1_has_2_buttons", + "fullExpression": "@local.row_data.button_text_1_a&&@local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", "type": "local", - "fieldName": "reply_challenge_1_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_1_has_button": [ + "@local.row_data.button_text_1_a": [ + "value", "condition" ], - "@local.reply_challenge_1_has_2_buttons": [ + "@local.row_data.button_go_to_template_1_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1125,25 +1281,87 @@ { "type": "button", "name": "button_1_b", - "value": "button_1_b", + "value": "@local.row_data.button_text_1_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_1_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_1_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_1_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_1_b" + } + ], + "condition": "@local.row_data.button_text_1_b&&@local.row_data.button_go_to_template_1_b", "exclude_from_translation": true, "_nested_name": "challenge_1.button_1_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_1_b", + "matchedExpression": "@local.row_data.button_text_1_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_1_has_2_buttons", - "matchedExpression": "@local.reply_challenge_1_has_2_buttons", + "fullExpression": "@local.row_data.button_text_1_b&&@local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_text_1_b", "type": "local", - "fieldName": "reply_challenge_1_has_2_buttons" + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_1_b&&@local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_1_has_2_buttons": [ + "@local.row_data.button_text_1_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_1_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1177,54 +1395,112 @@ { "type": "text", "name": "reply_challenge_2", + "value": "@local.row_data.reply_challenge_2", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_2.reply_challenge_2" - }, - { - "name": "reply_challenge_2_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_2.reply_challenge_2_has_button" - }, - { - "name": "reply_challenge_2_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_2.reply_challenge_2_has_2_buttons" + "_nested_name": "challenge_2.reply_challenge_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_2", + "matchedExpression": "@local.row_data.reply_challenge_2", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_2": [ + "value" + ] + } }, { "type": "button", "name": "button_2_a", - "value": "button_2_a", + "value": "@local.row_data.button_text_2_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_2_has_button || @local.reply_challenge_2_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_2_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_2_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_2_a" + } + ], + "condition": "@local.row_data.button_text_2_a&&@local.row_data.button_go_to_template_2_a", "exclude_from_translation": true, "_nested_name": "challenge_2.button_2_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_2_a", + "matchedExpression": "@local.row_data.button_text_2_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_2_a", + "matchedExpression": "@local.row_data.button_go_to_template_2_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_2_a", + "matchedExpression": "@local.row_data.button_go_to_template_2_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_2_a", + "matchedExpression": "@local.row_data.button_go_to_template_2_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_2_has_button || @local.reply_challenge_2_has_2_buttons", - "matchedExpression": "@local.reply_challenge_2_has_button", + "fullExpression": "@local.row_data.button_text_2_a&&@local.row_data.button_go_to_template_2_a", + "matchedExpression": "@local.row_data.button_text_2_a", "type": "local", - "fieldName": "reply_challenge_2_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_2_has_button || @local.reply_challenge_2_has_2_buttons", - "matchedExpression": "@local.reply_challenge_2_has_2_buttons", + "fullExpression": "@local.row_data.button_text_2_a&&@local.row_data.button_go_to_template_2_a", + "matchedExpression": "@local.row_data.button_go_to_template_2_a", "type": "local", - "fieldName": "reply_challenge_2_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_2_has_button": [ + "@local.row_data.button_text_2_a": [ + "value", "condition" ], - "@local.reply_challenge_2_has_2_buttons": [ + "@local.row_data.button_go_to_template_2_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1232,25 +1508,87 @@ { "type": "button", "name": "button_2_b", - "value": "button_2_b", + "value": "@local.row_data.button_text_2_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_2_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_2_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_2_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_2_b" + } + ], + "condition": "@local.row_data.button_text_2_b&&@local.row_data.button_go_to_template_2_b", "exclude_from_translation": true, "_nested_name": "challenge_2.button_2_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_2_b", + "matchedExpression": "@local.row_data.button_text_2_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_2_b", + "matchedExpression": "@local.row_data.button_go_to_template_2_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_2_b", + "matchedExpression": "@local.row_data.button_go_to_template_2_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_2_b", + "matchedExpression": "@local.row_data.button_go_to_template_2_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_2_has_2_buttons", - "matchedExpression": "@local.reply_challenge_2_has_2_buttons", + "fullExpression": "@local.row_data.button_text_2_b&&@local.row_data.button_go_to_template_2_b", + "matchedExpression": "@local.row_data.button_text_2_b", "type": "local", - "fieldName": "reply_challenge_2_has_2_buttons" + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_2_b&&@local.row_data.button_go_to_template_2_b", + "matchedExpression": "@local.row_data.button_go_to_template_2_b", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_2_has_2_buttons": [ + "@local.row_data.button_text_2_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_2_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1284,54 +1622,114 @@ { "type": "text", "name": "reply_challenge_3", + "value": "@local.row_data.reply_challenge_3", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_3.reply_challenge_3" - }, - { - "name": "reply_challenge_3_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_3.reply_challenge_3_has_button" - }, - { - "name": "reply_challenge_3_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_3.reply_challenge_3_has_2_buttons" + "_nested_name": "challenge_3.reply_challenge_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_3", + "matchedExpression": "@local.row_data.reply_challenge_3", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_3": [ + "value" + ] + } }, { "type": "button", "name": "button_3_a", - "value": "button_3_a", + "value": "@local.row_data.button_text_3_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_3_has_button || @local.reply_challenge_3_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_1_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_1_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_1_a" + } + ], + "condition": "@local.row_data.button_text_3_a&&@local.row_data.button_go_to_template_3_a", "exclude_from_translation": true, "_nested_name": "challenge_3.button_3_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_3_a", + "matchedExpression": "@local.row_data.button_text_3_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_a", + "matchedExpression": "@local.row_data.button_go_to_template_1_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_3_has_button || @local.reply_challenge_3_has_2_buttons", - "matchedExpression": "@local.reply_challenge_3_has_button", + "fullExpression": "@local.row_data.button_text_3_a&&@local.row_data.button_go_to_template_3_a", + "matchedExpression": "@local.row_data.button_text_3_a", "type": "local", - "fieldName": "reply_challenge_3_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_3_has_button || @local.reply_challenge_3_has_2_buttons", - "matchedExpression": "@local.reply_challenge_3_has_2_buttons", + "fullExpression": "@local.row_data.button_text_3_a&&@local.row_data.button_go_to_template_3_a", + "matchedExpression": "@local.row_data.button_go_to_template_3_a", "type": "local", - "fieldName": "reply_challenge_3_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_3_has_button": [ + "@local.row_data.button_text_3_a": [ + "value", "condition" ], - "@local.reply_challenge_3_has_2_buttons": [ + "@local.row_data.button_go_to_template_1_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.row_data.button_go_to_template_3_a": [ "condition" ] } @@ -1339,25 +1737,89 @@ { "type": "button", "name": "button_3_b", - "value": "button_3_b", + "value": "@local.row_data.button_text_3_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_3_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_1_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_1_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_1_b" + } + ], + "condition": "@local.row_data.button_text_3_b&&@local.row_data.button_go_to_template_3_b", "exclude_from_translation": true, "_nested_name": "challenge_3.button_3_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_3_b", + "matchedExpression": "@local.row_data.button_text_3_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_1_b", + "matchedExpression": "@local.row_data.button_go_to_template_1_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_3_has_2_buttons", - "matchedExpression": "@local.reply_challenge_3_has_2_buttons", + "fullExpression": "@local.row_data.button_text_3_b&&@local.row_data.button_go_to_template_3_b", + "matchedExpression": "@local.row_data.button_text_3_b", "type": "local", - "fieldName": "reply_challenge_3_has_2_buttons" + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_3_b&&@local.row_data.button_go_to_template_3_b", + "matchedExpression": "@local.row_data.button_go_to_template_3_b", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_3_has_2_buttons": [ + "@local.row_data.button_text_3_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_1_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.row_data.button_go_to_template_3_b": [ "condition" ] } @@ -1391,54 +1853,116 @@ { "type": "text", "name": "reply_challenge_4", + "value": "@local.row_data.reply_challenge_4", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_4.reply_challenge_4" - }, - { - "name": "reply_challenge_4_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_4.reply_challenge_4_has_button" - }, - { - "name": "reply_challenge_4_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_4.reply_challenge_4_has_2_buttons" + "_nested_name": "challenge_4.reply_challenge_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_4", + "matchedExpression": "@local.row_data.reply_challenge_4", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_4": [ + "value" + ] + } }, { "type": "button", "name": "button_4_a", - "value": "button_4_a", + "value": "@local.row_data.button_text_4_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_4_has_button || @local.reply_challenge_4_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_4_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_4_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_4_a" + } + ], + "condition": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", "exclude_from_translation": true, "_nested_name": "challenge_4.button_4_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_4_a", + "matchedExpression": "@local.row_data.button_text_4_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_4_a", + "matchedExpression": "@local.row_data.button_go_to_template_4_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_4_a", + "matchedExpression": "@local.row_data.button_go_to_template_4_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_4_a", + "matchedExpression": "@local.row_data.button_go_to_template_4_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_4_has_button || @local.reply_challenge_4_has_2_buttons", - "matchedExpression": "@local.reply_challenge_4_has_button", + "fullExpression": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_text_5_a", "type": "local", - "fieldName": "reply_challenge_4_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_4_has_button || @local.reply_challenge_4_has_2_buttons", - "matchedExpression": "@local.reply_challenge_4_has_2_buttons", + "fullExpression": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_go_to_template_5_a", "type": "local", - "fieldName": "reply_challenge_4_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_4_has_button": [ + "@local.row_data.button_text_4_a": [ + "value" + ], + "@local.row_data.button_go_to_template_4_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.row_data.button_text_5_a": [ "condition" ], - "@local.reply_challenge_4_has_2_buttons": [ + "@local.row_data.button_go_to_template_5_a": [ "condition" ] } @@ -1446,25 +1970,91 @@ { "type": "button", "name": "button_4_b", - "value": "button_4_b", + "value": "@local.row_data.button_text_4_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_4_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_4_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_4_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_4_b" + } + ], + "condition": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", "exclude_from_translation": true, "_nested_name": "challenge_4.button_4_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_4_b", + "matchedExpression": "@local.row_data.button_text_4_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_4_b", + "matchedExpression": "@local.row_data.button_go_to_template_4_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_4_b", + "matchedExpression": "@local.row_data.button_go_to_template_4_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_4_b", + "matchedExpression": "@local.row_data.button_go_to_template_4_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_4_has_2_buttons", - "matchedExpression": "@local.reply_challenge_4_has_2_buttons", + "fullExpression": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_text_5_b", + "type": "local", + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_go_to_template_5_b", "type": "local", - "fieldName": "reply_challenge_4_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_4_has_2_buttons": [ + "@local.row_data.button_text_4_b": [ + "value" + ], + "@local.row_data.button_go_to_template_4_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.row_data.button_text_5_b": [ + "condition" + ], + "@local.row_data.button_go_to_template_5_b": [ "condition" ] } @@ -1498,54 +2088,112 @@ { "type": "text", "name": "reply_challenge_5", + "value": "@local.row_data.reply_challenge_5", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_5.reply_challenge_5" - }, - { - "name": "reply_challenge_5_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_5.reply_challenge_5_has_button" - }, - { - "name": "reply_challenge_5_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_5.reply_challenge_5_has_2_buttons" + "_nested_name": "challenge_5.reply_challenge_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_5", + "matchedExpression": "@local.row_data.reply_challenge_5", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_5": [ + "value" + ] + } }, { "type": "button", "name": "button_5_a", - "value": "button_5_a", + "value": "@local.row_data.button_text_5_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_5_has_button || @local.reply_challenge_5_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_5_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_5_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_5_a" + } + ], + "condition": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", "exclude_from_translation": true, "_nested_name": "challenge_5.button_5_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_5_a", + "matchedExpression": "@local.row_data.button_text_5_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_go_to_template_5_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_go_to_template_5_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_go_to_template_5_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_5_has_button || @local.reply_challenge_5_has_2_buttons", - "matchedExpression": "@local.reply_challenge_5_has_button", + "fullExpression": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_text_5_a", "type": "local", - "fieldName": "reply_challenge_5_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_5_has_button || @local.reply_challenge_5_has_2_buttons", - "matchedExpression": "@local.reply_challenge_5_has_2_buttons", + "fullExpression": "@local.row_data.button_text_5_a&&@local.row_data.button_go_to_template_5_a", + "matchedExpression": "@local.row_data.button_go_to_template_5_a", "type": "local", - "fieldName": "reply_challenge_5_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_5_has_button": [ + "@local.row_data.button_text_5_a": [ + "value", "condition" ], - "@local.reply_challenge_5_has_2_buttons": [ + "@local.row_data.button_go_to_template_5_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1553,25 +2201,87 @@ { "type": "button", "name": "button_5_b", - "value": "button_5_b", + "value": "@local.row_data.button_text_5_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_5_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_5_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_5_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_5_b" + } + ], + "condition": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", "exclude_from_translation": true, "_nested_name": "challenge_5.button_5_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_5_b", + "matchedExpression": "@local.row_data.button_text_5_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_go_to_template_5_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_go_to_template_5_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_go_to_template_5_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_5_has_2_buttons", - "matchedExpression": "@local.reply_challenge_5_has_2_buttons", + "fullExpression": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_text_5_b", + "type": "local", + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_5_b&&@local.row_data.button_go_to_template_5_b", + "matchedExpression": "@local.row_data.button_go_to_template_5_b", "type": "local", - "fieldName": "reply_challenge_5_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_5_has_2_buttons": [ + "@local.row_data.button_text_5_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_5_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1605,54 +2315,112 @@ { "type": "text", "name": "reply_challenge_6", + "value": "@local.row_data.reply_challenge_6", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_6.reply_challenge_6" - }, - { - "name": "reply_challenge_6_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_6.reply_challenge_6_has_button" - }, - { - "name": "reply_challenge_6_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_6.reply_challenge_6_has_2_buttons" + "_nested_name": "challenge_6.reply_challenge_6", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_6", + "matchedExpression": "@local.row_data.reply_challenge_6", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_6": [ + "value" + ] + } }, { "type": "button", "name": "button_6_a", - "value": "button_6_a", + "value": "@local.row_data.button_text_6_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_6_has_button || @local.reply_challenge_6_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_6_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_6_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_6_a" + } + ], + "condition": "@local.row_data.button_text_6_a&&@local.row_data.button_go_to_template_6_a", "exclude_from_translation": true, "_nested_name": "challenge_6.button_6_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_6_a", + "matchedExpression": "@local.row_data.button_text_6_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_6_a", + "matchedExpression": "@local.row_data.button_go_to_template_6_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_6_a", + "matchedExpression": "@local.row_data.button_go_to_template_6_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_6_a", + "matchedExpression": "@local.row_data.button_go_to_template_6_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_6_has_button || @local.reply_challenge_6_has_2_buttons", - "matchedExpression": "@local.reply_challenge_6_has_button", + "fullExpression": "@local.row_data.button_text_6_a&&@local.row_data.button_go_to_template_6_a", + "matchedExpression": "@local.row_data.button_text_6_a", "type": "local", - "fieldName": "reply_challenge_6_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_6_has_button || @local.reply_challenge_6_has_2_buttons", - "matchedExpression": "@local.reply_challenge_6_has_2_buttons", + "fullExpression": "@local.row_data.button_text_6_a&&@local.row_data.button_go_to_template_6_a", + "matchedExpression": "@local.row_data.button_go_to_template_6_a", "type": "local", - "fieldName": "reply_challenge_6_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_6_has_button": [ + "@local.row_data.button_text_6_a": [ + "value", "condition" ], - "@local.reply_challenge_6_has_2_buttons": [ + "@local.row_data.button_go_to_template_6_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1660,25 +2428,87 @@ { "type": "button", "name": "button_6_b", - "value": "button_6_b", + "value": "@local.row_data.button_text_6_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_6_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_6_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_6_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_6_b" + } + ], + "condition": "@local.row_data.button_text_6_b&&@local.row_data.button_go_to_template_6_b", "exclude_from_translation": true, "_nested_name": "challenge_6.button_6_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_6_b", + "matchedExpression": "@local.row_data.button_text_6_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_6_b", + "matchedExpression": "@local.row_data.button_go_to_template_6_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_6_b", + "matchedExpression": "@local.row_data.button_go_to_template_6_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_6_b", + "matchedExpression": "@local.row_data.button_go_to_template_6_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_6_has_2_buttons", - "matchedExpression": "@local.reply_challenge_6_has_2_buttons", + "fullExpression": "@local.row_data.button_text_6_b&&@local.row_data.button_go_to_template_6_b", + "matchedExpression": "@local.row_data.button_text_6_b", + "type": "local", + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_6_b&&@local.row_data.button_go_to_template_6_b", + "matchedExpression": "@local.row_data.button_go_to_template_6_b", "type": "local", - "fieldName": "reply_challenge_6_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_6_has_2_buttons": [ + "@local.row_data.button_text_6_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_6_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1712,54 +2542,112 @@ { "type": "text", "name": "reply_challenge_7", + "value": "@local.row_data.reply_challenge_7", + "_translations": { + "value": {} + }, "exclude_from_translation": true, - "_nested_name": "challenge_7.reply_challenge_7" - }, - { - "name": "reply_challenge_7_has_button", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_7.reply_challenge_7_has_button" - }, - { - "name": "reply_challenge_7_has_2_buttons", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "challenge_7.reply_challenge_7_has_2_buttons" + "_nested_name": "challenge_7.reply_challenge_7", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_challenge_7", + "matchedExpression": "@local.row_data.reply_challenge_7", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_challenge_7": [ + "value" + ] + } }, { "type": "button", "name": "button_7_a", - "value": "button_7_a", + "value": "@local.row_data.button_text_7_a", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_7_has_button || @local.reply_challenge_7_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_7_a" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_7_a", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_7_a" + } + ], + "condition": "@local.row_data.button_text_7_a&&@local.row_data.button_go_to_template_7_a", "exclude_from_translation": true, "_nested_name": "challenge_7.button_7_a", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_7_a", + "matchedExpression": "@local.row_data.button_text_7_a", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_7_a", + "matchedExpression": "@local.row_data.button_go_to_template_7_a", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_7_a", + "matchedExpression": "@local.row_data.button_go_to_template_7_a", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_7_a", + "matchedExpression": "@local.row_data.button_go_to_template_7_a", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_7_has_button || @local.reply_challenge_7_has_2_buttons", - "matchedExpression": "@local.reply_challenge_7_has_button", + "fullExpression": "@local.row_data.button_text_7_a&&@local.row_data.button_go_to_template_7_a", + "matchedExpression": "@local.row_data.button_text_7_a", "type": "local", - "fieldName": "reply_challenge_7_has_button" + "fieldName": "row_data" }, { - "fullExpression": "@local.reply_challenge_7_has_button || @local.reply_challenge_7_has_2_buttons", - "matchedExpression": "@local.reply_challenge_7_has_2_buttons", + "fullExpression": "@local.row_data.button_text_7_a&&@local.row_data.button_go_to_template_7_a", + "matchedExpression": "@local.row_data.button_go_to_template_7_a", "type": "local", - "fieldName": "reply_challenge_7_has_2_buttons" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_7_has_button": [ + "@local.row_data.button_text_7_a": [ + "value", "condition" ], - "@local.reply_challenge_7_has_2_buttons": [ + "@local.row_data.button_go_to_template_7_a": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1767,25 +2655,87 @@ { "type": "button", "name": "button_7_b", - "value": "button_7_b", + "value": "@local.row_data.button_text_7_b", "_translations": { "value": {} }, - "condition": "@local.reply_challenge_7_has_2_buttons", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.row_data.button_go_to_template_7_b" + ], + "_raw": "click | go_to: @local.row_data.button_go_to_template_7_b", + "_cleaned": "click | go_to: @local.row_data.button_go_to_template_7_b" + } + ], + "condition": "@local.row_data.button_text_7_b&&@local.row_data.button_go_to_template_7_b", "exclude_from_translation": true, "_nested_name": "challenge_7.button_7_b", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_text_7_b", + "matchedExpression": "@local.row_data.button_text_7_b", + "type": "local", + "fieldName": "row_data" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.row_data.button_go_to_template_7_b", + "matchedExpression": "@local.row_data.button_go_to_template_7_b", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_7_b", + "matchedExpression": "@local.row_data.button_go_to_template_7_b", + "type": "local", + "fieldName": "row_data" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.row_data.button_go_to_template_7_b", + "matchedExpression": "@local.row_data.button_go_to_template_7_b", + "type": "local", + "fieldName": "row_data" + } + ] + } + }, "condition": [ { - "fullExpression": "@local.reply_challenge_7_has_2_buttons", - "matchedExpression": "@local.reply_challenge_7_has_2_buttons", + "fullExpression": "@local.row_data.button_text_7_b&&@local.row_data.button_go_to_template_7_b", + "matchedExpression": "@local.row_data.button_text_7_b", "type": "local", - "fieldName": "reply_challenge_7_has_2_buttons" + "fieldName": "row_data" + }, + { + "fullExpression": "@local.row_data.button_text_7_b&&@local.row_data.button_go_to_template_7_b", + "matchedExpression": "@local.row_data.button_go_to_template_7_b", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.reply_challenge_7_has_2_buttons": [ + "@local.row_data.button_text_7_b": [ + "value", + "condition" + ], + "@local.row_data.button_go_to_template_7_b": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", "condition" ] } @@ -1815,26 +2765,26 @@ "condition": "@local.combo_box==\"other_challenge\"", "rows": [ { - "name": "workshop_data", - "value": "@local.workshop_data", + "name": "workshop", + "value": "@local.workshop", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_review_other_challenge.workshop_data", + "_nested_name": "hp_review_other_challenge.workshop", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop_data", - "matchedExpression": "@local.workshop_data", + "fullExpression": "@local.workshop", + "matchedExpression": "@local.workshop", "type": "local", - "fieldName": "workshop_data" + "fieldName": "workshop" } ] }, "_dynamicDependencies": { - "@local.workshop_data": [ + "@local.workshop": [ "value" ] } @@ -1879,84 +2829,10 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.combo_box_final", - "@local.combo_box" - ], - "_raw": "completed | set_field:@local.combo_box_final: @local.combo_box", - "_cleaned": "completed | set_field:@local.combo_box_final: @local.combo_box" } ], "rows": [], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "2": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_final", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - } - ], - "1": [ - { - "fullExpression": "@local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.combo_box_final": [ - "action_list.2.args.0", - "action_list.2._raw", - "action_list.2._cleaned" - ], - "@local.combo_box": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned" - ] - } + "_nested_name": "nav_buttons" } ], "_xlsxPath": "global/mode_templates/home_practice.xlsx" diff --git a/packages/app-data/sheets/template/home_practice_review.json b/packages/app-data/sheets/template/home_practice_review.json index ec7402d8e1..af0175ac0a 100644 --- a/packages/app-data/sheets/template/home_practice_review.json +++ b/packages/app-data/sheets/template/home_practice_review.json @@ -4,64 +4,155 @@ "status": "released", "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_rules", + "name": "workshop", + "value": "w_rules", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop_data", + "_nested_name": "workshop" + }, + { + "name": "data_list_row", + "value": [ + "hp_check_in.@local.workshop" + ], + "type": "set_variable", + "_nested_name": "data_list_row", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "hp_check_in.@local.workshop", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ] + } + }, + { + "name": "row_data", + "value": "@data.@local.data_list_row", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "row_data", "_dynamicFields": { "value": [ { - "fullExpression": "@data.workshop.w_rules", - "matchedExpression": "@data.workshop.w_rules", - "type": "data", - "fieldName": "workshop" + "fullExpression": "@data.@local.data_list_row", + "matchedExpression": "@local.data_list_row", + "type": "local", + "fieldName": "data_list_row" } ] }, "_dynamicDependencies": { - "@data.workshop.w_rules": [ + "@local.data_list_row": [ "value" ] } }, { - "name": "workshop", - "value": "@local.workshop_data.id", + "name": "habit_id", + "value": "@local.row_data.habit_id", "_translations": { "value": {} }, - "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop", + "_nested_name": "habit_id", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop_data.id", - "matchedExpression": "@local.workshop_data.id", + "fullExpression": "@local.row_data.habit_id", + "matchedExpression": "@local.row_data.habit_id", "type": "local", - "fieldName": "workshop_data" + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@local.workshop_data.id": [ + "@local.row_data.habit_id": [ "value" ] } }, { - "name": "hp_review_mood", - "value": "_hp_review_mood", + "name": "habit_data_list_row", + "value": [ + "habit.@local.habit_id" + ], + "type": "set_variable", + "_nested_name": "habit_data_list_row", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "habit.@local.habit_id", + "matchedExpression": "@local.habit_id", + "type": "local", + "fieldName": "habit_id" + } + ] + } + }, + "_dynamicDependencies": { + "@local.habit_id": [ + "value.0" + ] + } + }, + { + "name": "habit_row_data", + "value": "@data.@local.habit_data_list_row", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "habit_row_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.habit_data_list_row", + "matchedExpression": "@local.habit_data_list_row", + "type": "local", + "fieldName": "habit_data_list_row" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_data_list_row": [ + "value" + ] + } + }, + { + "name": "hp_mood", + "value": "_hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_review_mood" + "_nested_name": "hp_mood" + }, + { + "name": "hp_done", + "value": "_hp_done", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "hp_done" }, { "name": "hp_challenges", @@ -93,6 +184,242 @@ "type": "set_variable", "_nested_name": "final" }, + { + "name": "hp_review_started", + "value": "_hp_review_started", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "hp_review_started" + }, + { + "name": "workshop_hp_review_started", + "value": "@local.workshop@local.hp_review_started", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_hp_review_started", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop@local.hp_review_started", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_review_started", + "matchedExpression": "@local.hp_review_started", + "type": "local", + "fieldName": "hp_review_started" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value" + ], + "@local.hp_review_started": [ + "value" + ] + } + }, + { + "name": "hp_review_completed", + "value": "_hp_review_completed", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "hp_review_completed" + }, + { + "name": "workshop_hp_review_completed", + "value": "@local.workshop@local.hp_review_completed", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_hp_review_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop@local.hp_review_completed", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_review_completed", + "matchedExpression": "@local.hp_review_completed", + "type": "local", + "fieldName": "hp_review_completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value" + ], + "@local.hp_review_completed": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "first_access", + "condition": "!@fields.@local.workshop_hp_review_started", + "rows": [ + { + "name": "timestamp", + "value": "_ts", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "first_access.timestamp" + }, + { + "type": "set_field", + "name": "@local.workshop_hp_review_started", + "value": true, + "exclude_from_translation": true, + "_nested_name": "first_access.@local.workshop_hp_review_started", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@local.workshop_hp_review_started", + "matchedExpression": "@local.workshop_hp_review_started", + "type": "local", + "fieldName": "workshop_hp_review_started" + } + ], + "_nested_name": [ + { + "fullExpression": "first_access.@local.workshop_hp_review_started", + "matchedExpression": "@local.workshop_hp_review_started", + "type": "local", + "fieldName": "workshop_hp_review_started" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_hp_review_started": [ + "name", + "_nested_name" + ] + } + }, + { + "name": "now", + "value": "@calc(timestamp())", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "first_access.now", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@calc(timestamp())", + "matchedExpression": "@calc(timestamp())", + "type": "calc", + "fieldName": "timestamp()" + } + ] + }, + "_dynamicDependencies": { + "@calc(timestamp())": [ + "value" + ] + } + }, + { + "type": "set_field", + "name": "@local.workshop_hp_review_started@local.timestamp", + "value": "@local.now", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "first_access.@local.workshop_hp_review_started@local.timestamp", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@local.workshop_hp_review_started@local.timestamp", + "matchedExpression": "@local.workshop_hp_review_started", + "type": "local", + "fieldName": "workshop_hp_review_started" + }, + { + "fullExpression": "@local.workshop_hp_review_started@local.timestamp", + "matchedExpression": "@local.timestamp", + "type": "local", + "fieldName": "timestamp" + } + ], + "value": [ + { + "fullExpression": "@local.now", + "matchedExpression": "@local.now", + "type": "local", + "fieldName": "now" + } + ], + "_nested_name": [ + { + "fullExpression": "first_access.@local.workshop_hp_review_started@local.timestamp", + "matchedExpression": "@local.workshop_hp_review_started", + "type": "local", + "fieldName": "workshop_hp_review_started" + }, + { + "fullExpression": "first_access.@local.workshop_hp_review_started@local.timestamp", + "matchedExpression": "@local.timestamp", + "type": "local", + "fieldName": "timestamp" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_hp_review_started": [ + "name", + "_nested_name" + ], + "@local.timestamp": [ + "name", + "_nested_name" + ], + "@local.now": [ + "value" + ] + } + } + ], + "_nested_name": "first_access", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.@local.workshop_hp_review_started", + "matchedExpression": "@local.workshop_hp_review_started", + "type": "local", + "fieldName": "workshop_hp_review_started" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_hp_review_started": [ + "condition" + ] + } + }, { "type": "template", "name": "workshop_activity", @@ -115,12 +442,22 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" + }, + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "@local.workshop_hp_review_completed", + true + ], + "_raw": "completed | set_field: @local.workshop_hp_review_completed: true", + "_cleaned": "completed | set_field: @local.workshop_hp_review_completed: true" } ], "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/group/with_teen.svg", + "value": "@local.row_data.activity_image_tog", "_translations": { "value": {} }, @@ -128,6 +465,14 @@ "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.activity_image_tog", + "matchedExpression": "@local.row_data.activity_image_tog", + "type": "local", + "fieldName": "row_data" + } + ], "condition": [ { "fullExpression": "@fields.do_this_workshop_together", @@ -138,6 +483,9 @@ ] }, "_dynamicDependencies": { + "@local.row_data.activity_image_tog": [ + "value" + ], "@fields.do_this_workshop_together": [ "condition" ] @@ -145,7 +493,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/with_teen.svg", + "value": "@local.row_data.activity_image_ind", "_translations": { "value": {} }, @@ -153,6 +501,14 @@ "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.activity_image_ind", + "matchedExpression": "@local.row_data.activity_image_ind", + "type": "local", + "fieldName": "row_data" + } + ], "condition": [ { "fullExpression": "!@fields.do_this_workshop_together", @@ -163,6 +519,9 @@ ] }, "_dynamicDependencies": { + "@local.row_data.activity_image_ind": [ + "value" + ], "!@fields.do_this_workshop_together": [ "condition" ] @@ -170,7 +529,7 @@ }, { "name": "activity_title", - "value": "@global.hp_review", + "value": "@local.row_data.activity_title", "_translations": { "value": {} }, @@ -179,22 +538,22 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@global.hp_review", - "matchedExpression": "@global.hp_review", - "type": "global", - "fieldName": "hp_review" + "fullExpression": "@local.row_data.activity_title", + "matchedExpression": "@local.row_data.activity_title", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@global.hp_review": [ + "@local.row_data.activity_title": [ "value" ] } }, { "name": "intro_text", - "value": "@global.text_hp_review", + "value": "@local.row_data.intro_text", "_translations": { "value": {} }, @@ -203,15 +562,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@global.text_hp_review", - "matchedExpression": "@global.text_hp_review", - "type": "global", - "fieldName": "text_hp_review" + "fullExpression": "@local.row_data.intro_text", + "matchedExpression": "@local.row_data.intro_text", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@global.text_hp_review": [ + "@local.row_data.intro_text": [ "value" ] } @@ -237,36 +596,30 @@ { "type": "nested_properties", "name": "box_1", - "value": "box_radio_buttons_emo_temp", + "value": "box_hp_review", "rows": [ { - "name": "radio_group_tracker", - "value": "@local.workshop@local.hp_review_mood@local.tracker", + "name": "radio_group_done_tracker", + "value": "@local.workshop@local.hp_done", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop_activity.content_box.box_1.radio_group_tracker", + "_nested_name": "workshop_activity.content_box.box_1.radio_group_done_tracker", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop@local.hp_review_mood@local.tracker", + "fullExpression": "@local.workshop@local.hp_done", "matchedExpression": "@local.workshop", "type": "local", "fieldName": "workshop" }, { - "fullExpression": "@local.workshop@local.hp_review_mood@local.tracker", - "matchedExpression": "@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_done", + "matchedExpression": "@local.hp_done", "type": "local", - "fieldName": "hp_review_mood" - }, - { - "fullExpression": "@local.workshop@local.hp_review_mood@local.tracker", - "matchedExpression": "@local.tracker", - "type": "local", - "fieldName": "tracker" + "fieldName": "hp_done" } ] }, @@ -274,42 +627,33 @@ "@local.workshop": [ "value" ], - "@local.hp_review_mood": [ - "value" - ], - "@local.tracker": [ + "@local.hp_done": [ "value" ] } }, { - "name": "radio_group_final", - "value": "@local.workshop@local.hp_review_mood@local.final", + "name": "radio_group_mood_tracker", + "value": "@local.workshop@local.hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "workshop_activity.content_box.box_1.radio_group_final", + "_nested_name": "workshop_activity.content_box.box_1.radio_group_mood_tracker", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", + "fullExpression": "@local.workshop@local.hp_mood", "matchedExpression": "@local.workshop", "type": "local", "fieldName": "workshop" }, { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", - "matchedExpression": "@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_mood", + "matchedExpression": "@local.hp_mood", "type": "local", - "fieldName": "hp_review_mood" - }, - { - "fullExpression": "@local.workshop@local.hp_review_mood@local.final", - "matchedExpression": "@local.final", - "type": "local", - "fieldName": "final" + "fieldName": "hp_mood" } ] }, @@ -317,29 +661,226 @@ "@local.workshop": [ "value" ], - "@local.hp_review_mood": [ + "@local.hp_mood": [ "value" - ], - "@local.final": [ + ] + } + }, + { + "name": "text_done", + "value": "@local.row_data.text_goal", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.text_done", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text_goal", + "matchedExpression": "@local.row_data.text_goal", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text_goal": [ "value" ] } }, { - "name": "question_text", - "value": "How did it go?", + "name": "question_text_done", + "value": "@local.row_data.question_done", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", - "_nested_name": "workshop_activity.content_box.box_1.question_text" + "_nested_name": "workshop_activity.content_box.box_1.question_text_done", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.question_done", + "matchedExpression": "@local.row_data.question_done", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.question_done": [ + "value" + ] + } + }, + { + "name": "reply_no", + "value": "@local.row_data.reply_no", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.reply_no", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_no", + "matchedExpression": "@local.row_data.reply_no", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_no": [ + "value" + ] + } + }, + { + "name": "button_no_text", + "value": "@local.row_data.button_no_text", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.button_no_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_no_text", + "matchedExpression": "@local.row_data.button_no_text", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.button_no_text": [ + "value" + ] + } + }, + { + "name": "button_no_go_to_template", + "value": "@local.row_data.button_no_go_to_template", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.button_no_go_to_template", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.button_no_go_to_template", + "matchedExpression": "@local.row_data.button_no_go_to_template", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.button_no_go_to_template": [ + "value" + ] + } + }, + { + "name": "question_text_mood", + "value": "@local.row_data.question_how", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.question_text_mood", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.question_how", + "matchedExpression": "@local.row_data.question_how", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.question_how": [ + "value" + ] + } + }, + { + "name": "reply_happy", + "value": "@local.row_data.reply_happy", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.reply_happy", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_happy", + "matchedExpression": "@local.row_data.reply_happy", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_happy": [ + "value" + ] + } + }, + { + "name": "reply_ok", + "value": "@local.row_data.reply_ok", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.reply_ok", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_ok", + "matchedExpression": "@local.row_data.reply_ok", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_ok": [ + "value" + ] + } + }, + { + "name": "reply_sad", + "value": "@local.row_data.reply_sad", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.box_1.reply_sad", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_sad", + "matchedExpression": "@local.row_data.reply_sad", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_sad": [ + "value" + ] + } } ], "_nested_name": "workshop_activity.content_box.box_1" @@ -380,22 +921,93 @@ }, { "name": "outro_text", - "value": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "value": "@local.row_data.outro_text", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.outro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.outro_text", + "matchedExpression": "@local.row_data.outro_text", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.outro_text": [ + "value" + ] + } + }, + { + "name": "outro_habit_data", + "value": "@local.habit_row_data", + "_translations": { + "value": {} }, "type": "set_variable", - "_nested_name": "workshop_activity.outro_text" + "_nested_name": "workshop_activity.outro_habit_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.habit_row_data", + "matchedExpression": "@local.habit_row_data", + "type": "local", + "fieldName": "habit_row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_row_data": [ + "value" + ] + } } ], - "_nested_name": "workshop_activity" + "_nested_name": "workshop_activity", + "_dynamicFields": { + "action_list": { + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.workshop_hp_review_completed", + "matchedExpression": "@local.workshop_hp_review_completed", + "type": "local", + "fieldName": "workshop_hp_review_completed" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_field: @local.workshop_hp_review_completed: true", + "matchedExpression": "@local.workshop_hp_review_completed", + "type": "local", + "fieldName": "workshop_hp_review_completed" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_field: @local.workshop_hp_review_completed: true", + "matchedExpression": "@local.workshop_hp_review_completed", + "type": "local", + "fieldName": "workshop_hp_review_completed" + } + ] + } + } + }, + "_dynamicDependencies": { + "@local.workshop_hp_review_completed": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ] + } } ], "_xlsxPath": "global/mode_templates/home_practice.xlsx" diff --git a/packages/app-data/sheets/template/home_screen.json b/packages/app-data/sheets/template/home_screen.json index 0ba1c37f48..726c60b18e 100644 --- a/packages/app-data/sheets/template/home_screen.json +++ b/packages/app-data/sheets/template/home_screen.json @@ -2236,5 +2236,8 @@ } } ], - "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx" + "_xlsxPath": "global/core_templates/core_templates_navigation.xlsx", + "_overrides": { + "home_screen_modular": "@fields._app_skin == \"modular\"" + } } \ No newline at end of file diff --git a/packages/app-data/sheets/template/home_screen_modular.json b/packages/app-data/sheets/template/home_screen_modular.json new file mode 100644 index 0000000000..b5477db4fe --- /dev/null +++ b/packages/app-data/sheets/template/home_screen_modular.json @@ -0,0 +1,302 @@ +{ + "flow_type": "template", + "flow_name": "home_screen_modular", + "status": "released", + "override_target": "home_screen", + "override_condition": "@fields._app_skin == \"modular\"", + "rows": [ + { + "type": "update_action_list", + "name": "custom_actions_1", + "action_list": [ + { + "trigger": "nav_resume", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "nav_resume | emit: force_reload", + "_cleaned": "nav_resume | emit: force_reload" + } + ], + "_nested_name": "custom_actions_1" + }, + { + "name": "highlighted_module", + "value": "@fields._task_highlighted_group_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "highlighted_module", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._task_highlighted_group_id", + "matchedExpression": "@fields._task_highlighted_group_id", + "type": "fields", + "fieldName": "_task_highlighted_group_id" + } + ] + }, + "_dynamicDependencies": { + "@fields._task_highlighted_group_id": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dg_highlighted_module", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "template", + "name": "highlighted_module_card", + "value": "module_card", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@local.highlighted_module", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_highlighted_module.highlighted_module_card.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.highlighted_module", + "matchedExpression": "@local.highlighted_module", + "type": "local", + "fieldName": "highlighted_module" + } + ] + }, + "_dynamicDependencies": { + "@local.highlighted_module": [ + "value" + ] + } + }, + { + "name": "card_style", + "value": "landscape", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_highlighted_module.highlighted_module_card.card_style" + } + ], + "_nested_name": "dg_highlighted_module.highlighted_module_card" + } + ], + "_nested_name": "dg_highlighted_module" + }, + { + "type": "display_group", + "name": "dg_all_modules", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "title", + "name": "title", + "value": "All @global.workshops_capital", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "dg_all_modules.title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "All @global.workshops_capital", + "matchedExpression": "@global.workshops_capital", + "type": "global", + "fieldName": "workshops_capital" + } + ] + }, + "_dynamicDependencies": { + "@global.workshops_capital": [ + "value" + ] + } + }, + { + "type": "carousel", + "name": "carousel", + "parameter_list": { + "space_between": "8", + "task_group_data": "workshop_tasks" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "items", + "value": "@data.workshop_tasks", + "exclude_from_translation": true, + "rows": [ + { + "type": "template", + "name": "module_card_@item.id", + "value": "module_card", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_all_modules.carousel.items.module_card_@item.id.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "dg_all_modules.carousel.items.module_card_@item.id.workshop_id", + "matchedExpression": "@item.id.workshop_id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@item.id.workshop_id": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "dg_all_modules.carousel.items.module_card_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "module_card_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "dg_all_modules.carousel.items.module_card_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ] + } + } + ], + "name": "items", + "_nested_name": "dg_all_modules.carousel.items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.workshop_tasks", + "matchedExpression": "@data.workshop_tasks", + "type": "data", + "fieldName": "workshop_tasks" + } + ] + }, + "_dynamicDependencies": { + "@data.workshop_tasks": [ + "value" + ] + } + } + ], + "_nested_name": "dg_all_modules.carousel" + } + ], + "_nested_name": "dg_all_modules" + }, + { + "name": "text_things_to_do", + "value": "Things to do", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "text_things_to_do" + }, + { + "type": "display_group", + "name": "dg_drawer", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "drawer", + "name": "drawer", + "value": "@local.text_things_to_do", + "parameter_list": { + "style": "secondary" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "template", + "name": "things_to_do_temp", + "value": "things_to_do", + "exclude_from_translation": true, + "rows": [], + "_nested_name": "dg_drawer.drawer.things_to_do_temp" + } + ], + "_nested_name": "dg_drawer.drawer", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.text_things_to_do", + "matchedExpression": "@local.text_things_to_do", + "type": "local", + "fieldName": "text_things_to_do" + } + ] + }, + "_dynamicDependencies": { + "@local.text_things_to_do": [ + "value" + ] + } + } + ], + "_nested_name": "dg_drawer" + } + ], + "_xlsxPath": "global_modular/core_templates/home_screen_modular.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/hp_review_other_challenge.json b/packages/app-data/sheets/template/hp_review_other_challenge.json index 35de1575a3..13fa8b35b5 100644 --- a/packages/app-data/sheets/template/hp_review_other_challenge.json +++ b/packages/app-data/sheets/template/hp_review_other_challenge.json @@ -3,34 +3,10 @@ "flow_name": "hp_review_other_challenge", "status": "released", "rows": [ - { - "name": "workshop_data", - "type": "set_variable", - "_nested_name": "workshop_data" - }, { "name": "workshop", - "value": "@local.workshop_data.id", - "_translations": { - "value": {} - }, "type": "set_variable", - "_nested_name": "workshop", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.workshop_data.id", - "matchedExpression": "@local.workshop_data.id", - "type": "local", - "fieldName": "workshop_data" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_data.id": [ - "value" - ] - } + "_nested_name": "workshop" }, { "name": "hp_challenge", diff --git a/packages/app-data/sheets/template/in_week_message.json b/packages/app-data/sheets/template/in_week_message.json index e2c76fc5bb..f588cdd491 100644 --- a/packages/app-data/sheets/template/in_week_message.json +++ b/packages/app-data/sheets/template/in_week_message.json @@ -196,5 +196,5 @@ "_nested_name": "button_2" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/language_select.json b/packages/app-data/sheets/template/language_select.json index 435dd54564..faa21c24dc 100644 --- a/packages/app-data/sheets/template/language_select.json +++ b/packages/app-data/sheets/template/language_select.json @@ -5,19 +5,27 @@ "rows": [ { "type": "title", - "value": "Language", + "name": "title", + "value": "@global.language", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, - "name": "title", - "_nested_name": "title" + "_nested_name": "title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.language", + "matchedExpression": "@global.language", + "type": "global", + "fieldName": "language" + } + ] + }, + "_dynamicDependencies": { + "@global.language": [ + "value" + ] + } }, { "name": "language_select_options", @@ -178,5 +186,9 @@ "_nested_name": "nav_buttons" } ], - "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx", + "_overrides": { + "language_select_za": "@fields._deployment_name == \"plh_za\"", + "language_select_tz": "@fields._deployment_name == \"plh_tz\"" + } } \ No newline at end of file diff --git a/packages/app-data/sheets/template/learn_temp.json b/packages/app-data/sheets/template/learn_temp.json index d978c57e02..aa44f650bd 100644 --- a/packages/app-data/sheets/template/learn_temp.json +++ b/packages/app-data/sheets/template/learn_temp.json @@ -34,21 +34,21 @@ "_translations": { "value": {} }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -66,78 +66,71 @@ "za_zu": true } }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } }, { "name": "intro_text", - "value": "It's time to learn and practice together!", + "value": "It is time to learn and practice together!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/notes.svg", + "value": "plh_images/workshop_modes/individual/notes.svg", "_translations": { "value": {} }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } @@ -155,53 +148,46 @@ "za_zu": true } }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } }, { "name": "intro_text", - "value": "It's time to learn and practice!", + "value": "It is time to learn and practice!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } diff --git a/packages/app-data/sheets/template/legal_terms/app_menu_privacy_policy.json b/packages/app-data/sheets/template/legal_terms/app_menu_privacy_policy.json new file mode 100644 index 0000000000..618a2b62ce --- /dev/null +++ b/packages/app-data/sheets/template/legal_terms/app_menu_privacy_policy.json @@ -0,0 +1,1456 @@ +{ + "flow_type": "template", + "flow_name": "app_menu_privacy_policy", + "status": "released", + "flow_subtype": "legal_terms", + "rows": [ + { + "type": "title", + "name": "title_0", + "value": "@global.privacy_policy", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "title_0", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.privacy_policy", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_0_1", + "value": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "matchedExpression": "@global.app_id", + "type": "global", + "fieldName": "app_id" + }, + { + "fullExpression": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ], + "@global.app_id": [ + "value" + ], + "@global.parent_app": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_0_2", + "value": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme, hosted by UNICEF and designed for parents and caregivers of adolescents aged 10 to 17 years.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme, hosted by UNICEF and designed for parents and caregivers of adolescents aged 10 to 17 years.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_0_3", + "value": "Parenting for Lifelong Health (PLH) - was designed through a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_3" + }, + { + "type": "text", + "name": "text_0_4", + "value": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_0_5", + "value": "Please read this @global.privacy_policy carefully. By downloading or using the app, you agree to the collection and use of information in relation to this policy. We will not use or share your information with anyone except as described in this @global.privacy_policy.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Please read this @global.privacy_policy carefully. By downloading or using the app, you agree to the collection and use of information in relation to this policy. We will not use or share your information with anyone except as described in this @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "Please read this @global.privacy_policy carefully. By downloading or using the app, you agree to the collection and use of information in relation to this policy. We will not use or share your information with anyone except as described in this @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_0_6", + "value": "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_0_6", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + }, + { + "fullExpression": "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value", + "value" + ], + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_1", + "value": "1. What information does the app collect about you and how do we use it?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_1" + }, + { + "type": "text", + "name": "subtitle_1_1", + "value": "Personal Data", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_1" + }, + { + "type": "text", + "name": "text_1_1_1", + "value": "For the purpose of this @global.privacy_policy, “personal data” means any information that enables us to identify an individual, directly or indirectly, by reference to an identifier such as email, name, @global.parent_app identification number, location data, or one or more factors specific to the individual. While using our app, we may require you to provide us with other personally identifiable information.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "For the purpose of this @global.privacy_policy, “personal data” means any information that enables us to identify an individual, directly or indirectly, by reference to an identifier such as email, name, @global.parent_app identification number, location data, or one or more factors specific to the individual. While using our app, we may require you to provide us with other personally identifiable information.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "For the purpose of this @global.privacy_policy, “personal data” means any information that enables us to identify an individual, directly or indirectly, by reference to an identifier such as email, name, @global.parent_app identification number, location data, or one or more factors specific to the individual. While using our app, we may require you to provide us with other personally identifiable information.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ], + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_1_2", + "value": "Specifically, this is data regarding chosen username, as well as gender. All data collected is linked to your unique @global.parent_app identification number. The @global.parent_app identification number produced within the app may also be used to link with any out of app surveys conducted.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Specifically, this is data regarding chosen username, as well as gender. All data collected is linked to your unique @global.parent_app identification number. The @global.parent_app identification number produced within the app may also be used to link with any out of app surveys conducted.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Specifically, this is data regarding chosen username, as well as gender. All data collected is linked to your unique @global.parent_app identification number. The @global.parent_app identification number produced within the app may also be used to link with any out of app surveys conducted.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_1_3", + "value": "We process your data to provide parenting support to you, communicate when you contact us, for security reasons as well as research purposes (see section ‘Information Sharing’). The primary research purpose includes optimising engagement of a digital parenting intervention (use of @global.parent_app) to prevent violence against adolescents. During the course of research, the study team may use aggregated and anonymised data from the app for further research projects. Finally, please note that we may process your data without your knowledge or consent, where this is required or permitted by law.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We process your data to provide parenting support to you, communicate when you contact us, for security reasons as well as research purposes (see section ‘Information Sharing’). The primary research purpose includes optimising engagement of a digital parenting intervention (use of @global.parent_app) to prevent violence against adolescents. During the course of research, the study team may use aggregated and anonymised data from the app for further research projects. Finally, please note that we may process your data without your knowledge or consent, where this is required or permitted by law.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_1_4", + "value": "The processing of your personal data is primarily based on:", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_4" + }, + { + "type": "text", + "name": "text_1_1_5", + "value": "The @global.parent_app team has legitimate interests in carrying out research activities, under Art. 6(1)(f) GDPR, regarding the sharing of limited details related to how you use the app; and", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The @global.parent_app team has legitimate interests in carrying out research activities, under Art. 6(1)(f) GDPR, regarding the sharing of limited details related to how you use the app; and", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_1_6", + "value": "Your consent, under Art. 6(1)(a) GDPR, regarding the email address you provide at the point of Google Sign-in and the sharing of answers you may provide to in-app questions (those involving as stated chosen username and gender which are entirely optional).", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1_6" + }, + { + "type": "text", + "name": "subtitle_1_2", + "value": "Log Data", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_2" + }, + { + "type": "text", + "name": "text_1_2", + "value": "Whenever you use our app, we collect data and information (through third party services) on your phone called Log Data. This Log Data includes information such as a truncated device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilising our app, the time, date and your intentions within the app (which include but are not limited to any app buttons clicked or pages visited.)", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_2" + }, + { + "type": "text", + "name": "subtitle_1_3", + "value": "Cookies", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_3" + }, + { + "type": "text", + "name": "text_1_3_1", + "value": "Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_3_1" + }, + { + "type": "text", + "name": "text_1_3_2", + "value": "This app does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. In particular, the app integrates GlitchTip and Matomo analytics as well as Firebase authentication software.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_3_2" + }, + { + "type": "text", + "name": "subtitle_1_4", + "value": "Legal", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_4" + }, + { + "type": "text", + "name": "text_1_4", + "value": "The information that we request will be retained by us and used as described in this @global.privacy_policy.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The information that we request will be retained by us and used as described in this @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "text", + "name": "subtitle_1_5", + "value": "Feedback Submissions", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_5" + }, + { + "type": "text", + "name": "text_1_5", + "value": "Your feedback on the app is important to us. We shall always anonymise your personal information when sharing and publishing your feedback verbatim more broadly.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_5" + }, + { + "type": "text", + "name": "subtitle_1_6", + "value": "Aggregate Data", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_6" + }, + { + "type": "text", + "name": "text_1_6", + "value": "Your data is important to the @global.parent_app team for broader research purposes. Aggregate data is always anonymised.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_6", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Your data is important to the @global.parent_app team for broader research purposes. Aggregate data is always anonymised.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "subtitle_1_7", + "value": "Push notifications", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "subtitle_1_7" + }, + { + "type": "text", + "name": "text_1_7", + "value": "You may opt out of push notifications which will be set up to inform you of certain account features or other notifications.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_7" + }, + { + "type": "subtitle", + "name": "title_2", + "value": "2. Information Sharing", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_2" + }, + { + "type": "text", + "name": "text_2_1", + "value": "Limited internal staff to IDEMS may have access to personal data collected via the app as well as log data, as necessary to perform their duties regarding the operation of the app. These data will only be accessed on a need-to-know basis, and all team members with access to the data are bound to confidentiality.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_2_1" + }, + { + "type": "text", + "name": "text_2_2", + "value": "You agree that your personal information may be shared with third parties such as researchers and partners involved in the improvement or implementation of the app including those outside your country. Prior to the disclosure of information with research partners we will make anonymous to the extent possible and where appropriate, information such as chosen username and email address (where collected). In reading and accepting this @global.privacy_policy , you permit us to use your anonymized data in published research.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_2_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "You agree that your personal information may be shared with third parties such as researchers and partners involved in the improvement or implementation of the app including those outside your country. Prior to the disclosure of information with research partners we will make anonymous to the extent possible and where appropriate, information such as chosen username and email address (where collected). In reading and accepting this @global.privacy_policy , you permit us to use your anonymized data in published research.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_2_3", + "value": "You agree that we may transfer your personal information outside your country, for example, to administer cloud services. We will ensure that any country, company or person that we pass your personal information to agrees to treat your information with the same level of protection as we are obliged to.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_2_3" + }, + { + "type": "subtitle", + "name": "title_3", + "value": "3. Third Party Service Providers and Websites", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_3" + }, + { + "type": "text", + "name": "text_3_1", + "value": "The app does use third party services that may collect information used to identify you. We do so for the following reasons:\n* To facilitate our app\n* To provide the app on our behalf\n* To perform app-related services; or\n* To assist us in analysing how our app is used.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_1" + }, + { + "type": "text", + "name": "text_3_2", + "value": "We want to inform users of this app that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_2" + }, + { + "type": "text", + "name": "text_3_3", + "value": "Links to the privacy policies of third-party service providers used by the app:", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_3" + }, + { + "name": "link_3_1_text", + "value": "Google Play Services", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_3_1_text" + }, + { + "type": "tile_component", + "name": "link_3_1", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//www.google.com/policies/privacy/" + ], + "_raw": "click | go_to_url:https://www.google.com/policies/privacy/", + "_cleaned": "click | go_to_url:https://www.google.com/policies/privacy/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_3_1_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_3_1", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_3_1_text", + "matchedExpression": "@local.link_3_1_text", + "type": "local", + "fieldName": "link_3_1_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_3_1_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_3_2_text", + "value": "Google Analytics for Firebase", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_3_2_text" + }, + { + "type": "tile_component", + "name": "link_3_2", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//firebase.google.com/policies/analytics" + ], + "_raw": "click | go_to_url:https://firebase.google.com/policies/analytics", + "_cleaned": "click | go_to_url:https://firebase.google.com/policies/analytics" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_3_2_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_3_2", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_3_2_text", + "matchedExpression": "@local.link_3_2_text", + "type": "local", + "fieldName": "link_3_2_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_3_2_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_3_3_text", + "value": "Sentry", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_3_3_text" + }, + { + "type": "tile_component", + "name": "link_3_3", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//sentry.io/privacy/" + ], + "_raw": "click | go_to_url:https://sentry.io/privacy/", + "_cleaned": "click | go_to_url:https://sentry.io/privacy/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_3_3_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_3_3", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_3_3_text", + "matchedExpression": "@local.link_3_3_text", + "type": "local", + "fieldName": "link_3_3_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_3_3_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_3_4_text", + "value": "Matomo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_3_4_text" + }, + { + "type": "tile_component", + "name": "link_3_4", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//matomo.org/privacy-policy/" + ], + "_raw": "click | go_to_url: https://matomo.org/privacy-policy/", + "_cleaned": "click | go_to_url: https://matomo.org/privacy-policy/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_3_4_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_3_4", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_3_4_text", + "matchedExpression": "@local.link_3_4_text", + "type": "local", + "fieldName": "link_3_4_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_3_4_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_3_5_text", + "value": "GlitchTip", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_3_5_text" + }, + { + "type": "tile_component", + "name": "link_3_5", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//glitchtip.com/legal/privacy" + ], + "_raw": "click | go_to_url: https://glitchtip.com/legal/privacy", + "_cleaned": "click | go_to_url: https://glitchtip.com/legal/privacy" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_3_5_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_3_5", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_3_5_text", + "matchedExpression": "@local.link_3_5_text", + "type": "local", + "fieldName": "link_3_5_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_3_5_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "type": "text", + "name": "text_3_4", + "value": "This app may contain links to other sites that are not covered by this @global.privacy_policy. If you click on a third-party link, you will be directed to that site. This @global.privacy_policy applies only to the processing of your information by this app. It does not address, and we are not responsible for, the privacy, information, or other practices of any third parties, including any third party operating any site or service to which this app links to.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "This app may contain links to other sites that are not covered by this @global.privacy_policy. If you click on a third-party link, you will be directed to that site. This @global.privacy_policy applies only to the processing of your information by this app. It does not address, and we are not responsible for, the privacy, information, or other practices of any third parties, including any third party operating any site or service to which this app links to.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "This app may contain links to other sites that are not covered by this @global.privacy_policy. If you click on a third-party link, you will be directed to that site. This @global.privacy_policy applies only to the processing of your information by this app. It does not address, and we are not responsible for, the privacy, information, or other practices of any third parties, including any third party operating any site or service to which this app links to.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value", + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_4", + "value": "4. How long do we keep your data?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_4" + }, + { + "type": "text", + "name": "text_4", + "value": "We will only retain your personal information for as long as we need it to fulfil our purposes, including any relating to app services as well as legal, accounting, or reporting requirements.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_4" + }, + { + "type": "subtitle", + "name": "title_5", + "value": "5. How do we keep your data secure?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_5" + }, + { + "type": "text", + "name": "text_5", + "value": "We value your trust in providing us your personal information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security. We also reserve the right to the storage of your data on third party servers or databases outside of the listed @global.parent_app team (refer to the section on Third Party Service Providers and Websites). Therefore usage of the app is at your own risk.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We value your trust in providing us your personal information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security. We also reserve the right to the storage of your data on third party servers or databases outside of the listed @global.parent_app team (refer to the section on Third Party Service Providers and Websites). Therefore usage of the app is at your own risk.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_6", + "value": "6. Children’s Privacy", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_6" + }, + { + "type": "text", + "name": "text_6", + "value": "This app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. As per our Terms and Conditions, In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_6" + }, + { + "type": "subtitle", + "name": "title_7", + "value": "7. Your rights", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_7" + }, + { + "type": "text", + "name": "text_7_1", + "value": "Under certain circumstances, by law you have the right to:\n* Request access to your data (commonly known as a \"subject access request\"). This enables you to receive a copy of your data and to check that we are lawfully processing it.\n* Request correction of your data. This enables you to ask us to correct any incomplete or inaccurate information we hold about you.\n* Request erasure of your data. This enables you to ask us to delete or remove your data under certain circumstances, for example, if you consider that there is no good reason for us continuing to process it. You also have the right to ask us to delete or remove your data where you have exercised your right to object to processing (see below).\n* Object to processing of your data where we are relying on our legitimate interests (or those of a third party) and there is something about your particular situation which makes you want to object to processing on this ground.\n* Request the restriction of processing of your data. This enables you to ask us to suspend the processing of your data, for example if you want us to establish its accuracy or the reason for processing it.\n* Request the transfer of your data to another party.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_7_1" + }, + { + "type": "text", + "name": "text_7_2", + "value": "Depending on the circumstances and the nature of your request it may not be possible for us to do what you have asked, for example, where there is a statutory or contractual requirement for us to process your data and it would not be possible to fulfil our legal obligations if we were to stop. Further information on your rights is available from the Information Commissioner’s Office (ICO).", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_7_2" + }, + { + "name": "link_7_1_text", + "value": "ICO", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "link_7_1_text" + }, + { + "type": "tile_component", + "name": "link_7_1", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//ico.org.uk/your-data-matters/" + ], + "_raw": "click | go_to_url: https://ico.org.uk/your-data-matters/", + "_cleaned": "click | go_to_url: https://ico.org.uk/your-data-matters/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_1_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_1", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_1_text", + "matchedExpression": "@local.link_7_1_text", + "type": "local", + "fieldName": "link_7_1_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_1_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "type": "subtitle", + "name": "title_8", + "value": "8. Removing the app", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_8" + }, + { + "type": "text", + "name": "text_8", + "value": "We are sorry if you find our app no longer useful. Should you decide to remove our app, we may still retain some of your data (although anonymised) to troubleshoot, aid in investigations, comply with legal requirements or to add to our existing research data sets.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_8" + }, + { + "type": "subtitle", + "name": "title_9", + "value": "9. Changes to the @global.privacy_policy", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_9", + "_dynamicFields": { + "value": [ + { + "fullExpression": "9. Changes to the @global.privacy_policy", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_9", + "value": "We may update our @global.privacy_policy from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.privacy_policy.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_9", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We may update our @global.privacy_policy from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "We may update our @global.privacy_policy from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value", + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_10", + "value": "10. Contact Us", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_10" + }, + { + "type": "text", + "name": "text_10_1", + "value": "If you have any questions or suggestions about our @global.privacy_policy, do not hesitate to contact us at apps@idems.international.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_10_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "If you have any questions or suggestions about our @global.privacy_policy, do not hesitate to contact us at apps@idems.international.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_10_2", + "value": "Last updated: 1 March 2023", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "text_10_2" + }, + { + "name": "link_10_1_text", + "value": "privacypolicytemplate.net", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_10_1_text" + }, + { + "name": "link_10_2_text", + "value": "App Privacy Policy Generator", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_10_2_text" + }, + { + "type": "text", + "name": "text_10_3", + "value": "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "contextual" + }, + "_nested_name": "text_10_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.", + "matchedExpression": "@local.link_10_1_text", + "type": "local", + "fieldName": "link_10_1_text" + }, + { + "fullExpression": "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.", + "matchedExpression": "@local.link_10_2_text", + "type": "local", + "fieldName": "link_10_2_text" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ], + "@local.link_10_1_text": [ + "value" + ], + "@local.link_10_2_text": [ + "value" + ] + } + }, + { + "type": "tile_component", + "name": "link_10_1", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//www.privacypolicytemplate.net/" + ], + "_raw": "click | go_to_url: https://www.privacypolicytemplate.net/", + "_cleaned": "click | go_to_url: https://www.privacypolicytemplate.net/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_10_1_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_10_1", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_10_1_text", + "matchedExpression": "@local.link_10_1_text", + "type": "local", + "fieldName": "link_10_1_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_10_1_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "type": "tile_component", + "name": "link_10_2", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//app-privacy-policy-generator.firebaseapp.com/" + ], + "_raw": "click | go_to_url: https://app-privacy-policy-generator.firebaseapp.com/", + "_cleaned": "click | go_to_url: https://app-privacy-policy-generator.firebaseapp.com/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_10_2_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_10_2", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_10_2_text", + "matchedExpression": "@local.link_10_2_text", + "type": "local", + "fieldName": "link_10_2_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_10_2_text": [ + "parameter_list.first_line_text" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/legal_terms/app_menu_terms.json b/packages/app-data/sheets/template/legal_terms/app_menu_terms.json new file mode 100644 index 0000000000..faf274cd0e --- /dev/null +++ b/packages/app-data/sheets/template/legal_terms/app_menu_terms.json @@ -0,0 +1,1013 @@ +{ + "flow_type": "template", + "flow_name": "app_menu_terms", + "status": "released", + "flow_subtype": "legal_terms", + "rows": [ + { + "type": "title", + "name": "title_0", + "value": "@global.terms_and_conditions", + "_translations": { + "value": {} + }, + "_nested_name": "title_0", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.terms_and_conditions", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_1", + "value": "1. User Agreement", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_1" + }, + { + "type": "text", + "name": "text_1_1", + "value": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + }, + { + "fullExpression": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "matchedExpression": "@global.app_id", + "type": "global", + "fieldName": "app_id" + }, + { + "fullExpression": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ], + "@global.app_id": [ + "value" + ], + "@global.parent_app": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_2", + "value": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme designed for parents and caregivers of adolescents aged 10 to 17 years.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme designed for parents and caregivers of adolescents aged 10 to 17 years.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_3", + "value": "Parenting for Lifelong Health (PLH) - was designed through a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_3" + }, + { + "type": "text", + "name": "text_1_4", + "value": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_5", + "value": "Please read these @global.terms_and_conditions carefully. By downloading or using the app, you agree that you have read, understood, and accepted the @global.terms_and_conditions contained below.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Please read these @global.terms_and_conditions carefully. By downloading or using the app, you agree that you have read, understood, and accepted the @global.terms_and_conditions contained below.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + }, + { + "fullExpression": "Please read these @global.terms_and_conditions carefully. By downloading or using the app, you agree that you have read, understood, and accepted the @global.terms_and_conditions contained below.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_1_6", + "value": "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_1_6", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + }, + { + "fullExpression": "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value", + "value" + ], + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_2", + "value": "2. Rules of Usage", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_2" + }, + { + "type": "text", + "name": "text_2_1", + "value": "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_2_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value", + "value", + "value" + ] + } + }, + { + "type": "text", + "name": "text_2_2", + "value": "Finally this app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_2_2" + }, + { + "type": "subtitle", + "name": "title_3", + "value": "3. Content Changes", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_3" + }, + { + "type": "text", + "name": "text_3_1", + "value": "The @global.parent_app team is committed to ensuring that the app is as useful and user friendly as possible. For that reason, we reserve the right to make changes to the app which will be delivered through updates. At present the app is free of charge and our intention is for it to stay that way.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The @global.parent_app team is committed to ensuring that the app is as useful and user friendly as possible. For that reason, we reserve the right to make changes to the app which will be delivered through updates. At present the app is free of charge and our intention is for it to stay that way.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_3_2", + "value": "In the future it is possible that some services may be offered that would incur a cost. We will never charge you for the app or its services without clearly making known to you first any access charges applicable.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_3_2" + }, + { + "type": "subtitle", + "name": "title_4", + "value": "4. Intellectual property", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_4" + }, + { + "type": "text", + "name": "text_4", + "value": "The app itself, the trademarks, copyright, database rights and other intellectual property rights related to it, belong to or are licensed to the various applicable collaborators of the @global.parent_app team (noting that code is covered under GPL 3 and content by CC BY). The use of names and emblems/logos of collaborating institutions are the exclusive property of those institutions and are protected under international and national laws. Unauthorised use is prohibited. They may not be copied or reproduced in any way without the prior written permission of said institution.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The app itself, the trademarks, copyright, database rights and other intellectual property rights related to it, belong to or are licensed to the various applicable collaborators of the @global.parent_app team (noting that code is covered under GPL 3 and content by CC BY). The use of names and emblems/logos of collaborating institutions are the exclusive property of those institutions and are protected under international and national laws. Unauthorised use is prohibited. They may not be copied or reproduced in any way without the prior written permission of said institution.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_5", + "value": "5. Submissions", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_5" + }, + { + "type": "text", + "name": "text_5", + "value": "Your feedback on the app is appreciated. So that we can improve, any comments are not considered confidential and will become available for further lawful use without additional approval or compensation. We shall therefore own exclusive rights and believe any feedback that you have made is original by you.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_5" + }, + { + "type": "subtitle", + "name": "title_6", + "value": "6. Security", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_6" + }, + { + "type": "text", + "name": "text_6_1", + "value": "Our app stores and processes personal data that you have provided to us, in order to offer our services. It is your responsibility to keep your phone and access to the app secure. Removal of software restrictions and limitations imposed by the official operating system of your device is therefore not recommended. Doing so could make your phone vulnerable to malware, viruses, malicious programs as well as compromise your phone’s security features and could mean that the app will not work properly or at all.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_6_1" + }, + { + "type": "text", + "name": "text_6_2", + "value": "To see how we handle your personal information, please see our @global.privacy_policy.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_6_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "To see how we handle your personal information, please see our @global.privacy_policy.", + "matchedExpression": "@global.privacy_policy", + "type": "global", + "fieldName": "privacy_policy" + } + ] + }, + "_dynamicDependencies": { + "@global.privacy_policy": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_7", + "value": "7. External links and resources", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_7" + }, + { + "type": "text", + "name": "text_7_1", + "value": "The app uses third party services that declare their own @global.terms_and_conditions and may link to other websites and resources that are not under the app’s control.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_7_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The app uses third party services that declare their own @global.terms_and_conditions and may link to other websites and resources that are not under the app’s control.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_7_2", + "value": "Link to @global.terms_and_conditions of third party service providers used by the app include:", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_7_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Link to @global.terms_and_conditions of third party service providers used by the app include:", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "name": "link_7_1_text", + "value": "Google Play Services", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_7_1_text" + }, + { + "type": "tile_component", + "name": "link_7_1", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//policies.google.com/terms" + ], + "_raw": "click | go_to_url: https://policies.google.com/terms", + "_cleaned": "click | go_to_url: https://policies.google.com/terms" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_1_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_1", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_1_text", + "matchedExpression": "@local.link_7_1_text", + "type": "local", + "fieldName": "link_7_1_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_1_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_7_2_text", + "value": "Google Analytics for Firebase", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_7_2_text" + }, + { + "type": "tile_component", + "name": "link_7_2", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//firebase.google.com/terms/analytics" + ], + "_raw": "click | go_to_url: https://firebase.google.com/terms/analytics", + "_cleaned": "click | go_to_url: https://firebase.google.com/terms/analytics" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_2_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_2", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_2_text", + "matchedExpression": "@local.link_7_2_text", + "type": "local", + "fieldName": "link_7_2_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_2_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_7_3_text", + "value": "Sentry", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_7_3_text" + }, + { + "type": "tile_component", + "name": "link_7_3", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//sentry.io/terms/" + ], + "_raw": "click | go_to_url: https://sentry.io/terms/", + "_cleaned": "click | go_to_url: https://sentry.io/terms/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_3_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_3", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_3_text", + "matchedExpression": "@local.link_7_3_text", + "type": "local", + "fieldName": "link_7_3_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_3_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_7_4_text", + "value": "Matomo", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_7_4_text" + }, + { + "type": "tile_component", + "name": "link_7_4", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//matomo.org/matomo-cloud-terms-of-service/" + ], + "_raw": "click | go_to_url: https://matomo.org/matomo-cloud-terms-of-service/", + "_cleaned": "click | go_to_url: https://matomo.org/matomo-cloud-terms-of-service/" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_4_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_4", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_4_text", + "matchedExpression": "@local.link_7_4_text", + "type": "local", + "fieldName": "link_7_4_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_4_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "name": "link_7_5_text", + "value": "GlitchTip", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "link_7_5_text" + }, + { + "type": "tile_component", + "name": "link_7_5", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "https", + "//glitchtip.com/legal/tos" + ], + "_raw": "click | go_to_url: https://glitchtip.com/legal/tos", + "_cleaned": "click | go_to_url: https://glitchtip.com/legal/tos" + } + ], + "exclude_from_translation": true, + "parameter_list": { + "first_line_text": "@local.link_7_5_text", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "_nested_name": "link_7_5", + "_dynamicFields": { + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.link_7_5_text", + "matchedExpression": "@local.link_7_5_text", + "type": "local", + "fieldName": "link_7_5_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.link_7_5_text": [ + "parameter_list.first_line_text" + ] + } + }, + { + "type": "text", + "name": "text_7_3", + "value": "The inclusion of such links does not imply an endorsement or approval by the app and/or its partners of any website, product, or service. Similarly, the app and the @global.parent_app team affiliated developers and collaborators do not assume any responsibility or liability in respect of such websites, product, or service, including, for example, responsibility or liability for the accuracy or reliability of any information, data, opinions, advice or statements made on those web sites.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_7_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The inclusion of such links does not imply an endorsement or approval by the app and/or its partners of any website, product, or service. Similarly, the app and the @global.parent_app team affiliated developers and collaborators do not assume any responsibility or liability in respect of such websites, product, or service, including, for example, responsibility or liability for the accuracy or reliability of any information, data, opinions, advice or statements made on those web sites.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_8", + "value": "8. Disclaimer", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_8" + }, + { + "type": "text", + "name": "text_8", + "value": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_8", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + }, + { + "fullExpression": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value", + "value", + "value", + "value", + "value", + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_9", + "value": "9. Changes to the @global.terms_and_conditions", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_9", + "_dynamicFields": { + "value": [ + { + "fullExpression": "9. Changes to the @global.terms_and_conditions", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_9", + "value": "We may update our @global.terms_and_conditions from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.terms_and_conditions.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_9", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We may update our @global.terms_and_conditions from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.terms_and_conditions.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + }, + { + "fullExpression": "We may update our @global.terms_and_conditions from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.terms_and_conditions.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value", + "value" + ] + } + }, + { + "type": "subtitle", + "name": "title_10", + "value": "10. Contact Us", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "title_10" + }, + { + "type": "text", + "name": "text_10_1", + "value": "If you have any questions or suggestions about our @global.terms_and_conditions, do not hesitate to contact us at apps@idems.international.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text_10_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "If you have any questions or suggestions about our @global.terms_and_conditions, do not hesitate to contact us at apps@idems.international.", + "matchedExpression": "@global.terms_and_conditions", + "type": "global", + "fieldName": "terms_and_conditions" + } + ] + }, + "_dynamicDependencies": { + "@global.terms_and_conditions": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_10_2", + "value": "Last updated: 1 March 2023", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "text_10_2" + } + ], + "_xlsxPath": "global/core_templates/core_templates_menu.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/listen.json b/packages/app-data/sheets/template/listen.json index b944046a72..ea73879e2b 100644 --- a/packages/app-data/sheets/template/listen.json +++ b/packages/app-data/sheets/template/listen.json @@ -39,7 +39,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/m_hp_reminder.json b/packages/app-data/sheets/template/m_hp_reminder.json index e25c55046a..71ffbcd30e 100644 --- a/packages/app-data/sheets/template/m_hp_reminder.json +++ b/packages/app-data/sheets/template/m_hp_reminder.json @@ -34,7 +34,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/with_teen.svg", + "value": "plh_images/workshop_modes/individual/with_teen.svg", "_translations": { "value": {} }, @@ -45,5 +45,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_parent_points_overview.json b/packages/app-data/sheets/template/m_parent_points_overview.json index d0c9acd29c..025026190f 100644 --- a/packages/app-data/sheets/template/m_parent_points_overview.json +++ b/packages/app-data/sheets/template/m_parent_points_overview.json @@ -449,7 +449,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/star.svg", + "value": "plh_images/workshop_modes/individual/star.svg", "_translations": { "value": {} }, @@ -863,5 +863,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_praise.json b/packages/app-data/sheets/template/m_praise.json index a52000a497..5ecbd17a3c 100644 --- a/packages/app-data/sheets/template/m_praise.json +++ b/packages/app-data/sheets/template/m_praise.json @@ -60,5 +60,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_relax.json b/packages/app-data/sheets/template/m_relax.json index 3fd19460f9..7bf2dc4795 100644 --- a/packages/app-data/sheets/template/m_relax.json +++ b/packages/app-data/sheets/template/m_relax.json @@ -175,16 +175,6 @@ ], "_raw": "click | emit:completed", "_cleaned": "click | emit:completed" - }, - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "daily_relax_done", - true - ], - "_raw": "click | set_field:daily_relax_done:true", - "_cleaned": "click | set_field:daily_relax_done:true" } ], "hidden": false, @@ -276,5 +266,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_something_fun.json b/packages/app-data/sheets/template/m_something_fun.json index 0036553e79..302c1fae7a 100644 --- a/packages/app-data/sheets/template/m_something_fun.json +++ b/packages/app-data/sheets/template/m_something_fun.json @@ -219,5 +219,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_workshop_in_progress.json b/packages/app-data/sheets/template/m_workshop_in_progress.json index 028307c63e..8d916e8c16 100644 --- a/packages/app-data/sheets/template/m_workshop_in_progress.json +++ b/packages/app-data/sheets/template/m_workshop_in_progress.json @@ -73,7 +73,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -256,5 +256,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_workshop_released.json b/packages/app-data/sheets/template/m_workshop_released.json index a4402a2e00..70eebe8886 100644 --- a/packages/app-data/sheets/template/m_workshop_released.json +++ b/packages/app-data/sheets/template/m_workshop_released.json @@ -73,7 +73,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -256,5 +256,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_workshop_reminder.json b/packages/app-data/sheets/template/m_workshop_reminder.json index 62caeae60e..9faf8245aa 100644 --- a/packages/app-data/sheets/template/m_workshop_reminder.json +++ b/packages/app-data/sheets/template/m_workshop_reminder.json @@ -73,7 +73,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -256,5 +256,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/m_workshop_tomorrow.json b/packages/app-data/sheets/template/m_workshop_tomorrow.json index 924c643ad2..c15ed42eed 100644 --- a/packages/app-data/sheets/template/m_workshop_tomorrow.json +++ b/packages/app-data/sheets/template/m_workshop_tomorrow.json @@ -126,7 +126,7 @@ }, { "name": "image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -370,5 +370,5 @@ "_nested_name": "in_week_message" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_types.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_types.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/message_navigation.json b/packages/app-data/sheets/template/message_navigation.json index 68e081b4e1..dcd3c86371 100644 --- a/packages/app-data/sheets/template/message_navigation.json +++ b/packages/app-data/sheets/template/message_navigation.json @@ -447,5 +447,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/module_card.json b/packages/app-data/sheets/template/module_card.json new file mode 100644 index 0000000000..2f69bab7f9 --- /dev/null +++ b/packages/app-data/sheets/template/module_card.json @@ -0,0 +1,833 @@ +{ + "flow_type": "template", + "flow_name": "module_card", + "status": "released", + "rows": [ + { + "name": "with_image_and_subtitle", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "with_image_and_subtitle" + }, + { + "name": "card_style", + "value": "portrait", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_style" + }, + { + "name": "workshop_id", + "value": "w_self_care", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id" + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "path", + "value": "_ind", + "_translations": { + "value": {} + }, + "condition": "@fields.workshop_path == \"individual\"", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.workshop_path == \"individual\"", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "path", + "value": "_tog", + "_translations": { + "value": {} + }, + "condition": "!(@fields.workshop_path == \"individual\")", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!(@fields.workshop_path == \"individual\")", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.path@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.path", + "type": "local", + "fieldName": "path" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.path": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "completed", + "value": "_completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed" + }, + { + "name": "completed_field", + "value": "task_@local.workshop_id@local.completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed_field", + "_dynamicFields": { + "value": [ + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.completed", + "type": "local", + "fieldName": "completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.completed": [ + "value" + ] + } + }, + { + "name": "ww_id", + "value": "workshop.@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "ww_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "workshop_data", + "value": "@data.@local.ww_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.ww_id", + "matchedExpression": "@local.ww_id", + "type": "local", + "fieldName": "ww_id" + } + ] + }, + "_dynamicDependencies": { + "@local.ww_id": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.title", + "matchedExpression": "@local.workshop_data.title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.title": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.short_title", + "_translations": { + "value": {} + }, + "condition": "@local.workshop_data.short_title", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ], + "condition": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.short_title": [ + "value", + "condition" + ] + } + }, + { + "name": "card_subtitle", + "value": "@local.workshop_data.description", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_subtitle", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.description", + "matchedExpression": "@local.workshop_data.description", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.description": [ + "value" + ] + } + }, + { + "name": "card_image", + "value": "@local.workshop_data.image_asset", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.image_asset", + "matchedExpression": "@local.workshop_data.image_asset", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.image_asset": [ + "value" + ] + } + }, + { + "name": "click_template", + "value": "module_overview", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "click_template" + }, + { + "name": "highlighted_text", + "value": "Active", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "highlighted_text" + }, + { + "name": "progress_units_name", + "value": "sections", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "progress_units_name" + }, + { + "type": "task_card", + "name": "task_card", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_workshop", + "@local.workshop_id" + ], + "_raw": "click | set_field: current_workshop: @local.workshop_id", + "_cleaned": "click | set_field: current_workshop: @local.workshop_id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.click_template" + ], + "_raw": "click | go_to: @local.click_template", + "_cleaned": "click | go_to: @local.click_template" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "completed | emit: force_reload", + "_cleaned": "completed | emit: force_reload" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "server_sync" + ], + "_raw": "completed | emit: server_sync", + "_cleaned": "completed | emit: server_sync" + } + ], + "parameter_list": { + "task_group_id": "@local.workshop_id", + "task_group_data": "@local.task_group_data", + "completed_field": "@local.completed_field", + "title": "@local.card_title", + "subtitle": "@local.card_subtitle", + "image": "@local.card_image", + "style": "@local.card_style", + "in_progress_icon": "plh_images/icons/in_progress.svg", + "completed_icon": "plh_images/icons/tick_white.svg", + "highlighted_text": "@local.highlighted_text", + "progress_units_name": "@local.progress_units_name" + }, + "condition": "@local.with_image_and_subtitle", + "exclude_from_translation": true, + "_nested_name": "task_card", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ] + } + }, + "parameter_list": { + "task_group_id": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "task_group_data": [ + { + "fullExpression": "@local.task_group_data", + "matchedExpression": "@local.task_group_data", + "type": "local", + "fieldName": "task_group_data" + } + ], + "completed_field": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "title": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ], + "subtitle": [ + { + "fullExpression": "@local.card_subtitle", + "matchedExpression": "@local.card_subtitle", + "type": "local", + "fieldName": "card_subtitle" + } + ], + "image": [ + { + "fullExpression": "@local.card_image", + "matchedExpression": "@local.card_image", + "type": "local", + "fieldName": "card_image" + } + ], + "style": [ + { + "fullExpression": "@local.card_style", + "matchedExpression": "@local.card_style", + "type": "local", + "fieldName": "card_style" + } + ], + "highlighted_text": [ + { + "fullExpression": "@local.highlighted_text", + "matchedExpression": "@local.highlighted_text", + "type": "local", + "fieldName": "highlighted_text" + } + ], + "progress_units_name": [ + { + "fullExpression": "@local.progress_units_name", + "matchedExpression": "@local.progress_units_name", + "type": "local", + "fieldName": "progress_units_name" + } + ] + }, + "condition": [ + { + "fullExpression": "@local.with_image_and_subtitle", + "matchedExpression": "@local.with_image_and_subtitle", + "type": "local", + "fieldName": "with_image_and_subtitle" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "parameter_list.task_group_id" + ], + "@local.click_template": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.task_group_data": [ + "parameter_list.task_group_data" + ], + "@local.completed_field": [ + "parameter_list.completed_field" + ], + "@local.card_title": [ + "parameter_list.title" + ], + "@local.card_subtitle": [ + "parameter_list.subtitle" + ], + "@local.card_image": [ + "parameter_list.image" + ], + "@local.card_style": [ + "parameter_list.style" + ], + "@local.highlighted_text": [ + "parameter_list.highlighted_text" + ], + "@local.progress_units_name": [ + "parameter_list.progress_units_name" + ], + "@local.with_image_and_subtitle": [ + "condition" + ] + } + }, + { + "type": "task_card", + "name": "task_card", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_workshop", + "@local.workshop_id" + ], + "_raw": "click | set_field: current_workshop: @local.workshop_id", + "_cleaned": "click | set_field: current_workshop: @local.workshop_id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.click_template" + ], + "_raw": "click | go_to: @local.click_template", + "_cleaned": "click | go_to: @local.click_template" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "completed | emit: force_reload", + "_cleaned": "completed | emit: force_reload" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "server_sync" + ], + "_raw": "completed | emit: server_sync", + "_cleaned": "completed | emit: server_sync" + } + ], + "parameter_list": { + "task_group_id": "@local.workshop_id", + "task_group_data": "@local.task_group_data", + "completed_field": "@local.completed_field", + "title": "@local.card_title", + "style": "@local.card_style", + "in_progress_icon": "plh_images/icons/in_progress.svg", + "completed_icon": "plh_images/icons/tick_white.svg", + "highlighted_text": "@local.highlighted_text", + "progress_units_name": "@local.progress_units_name" + }, + "condition": "!@local.with_image_and_subtitle", + "exclude_from_translation": true, + "_nested_name": "task_card", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.click_template", + "matchedExpression": "@local.click_template", + "type": "local", + "fieldName": "click_template" + } + ] + } + }, + "parameter_list": { + "task_group_id": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "task_group_data": [ + { + "fullExpression": "@local.task_group_data", + "matchedExpression": "@local.task_group_data", + "type": "local", + "fieldName": "task_group_data" + } + ], + "completed_field": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "title": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ], + "style": [ + { + "fullExpression": "@local.card_style", + "matchedExpression": "@local.card_style", + "type": "local", + "fieldName": "card_style" + } + ], + "highlighted_text": [ + { + "fullExpression": "@local.highlighted_text", + "matchedExpression": "@local.highlighted_text", + "type": "local", + "fieldName": "highlighted_text" + } + ], + "progress_units_name": [ + { + "fullExpression": "@local.progress_units_name", + "matchedExpression": "@local.progress_units_name", + "type": "local", + "fieldName": "progress_units_name" + } + ] + }, + "condition": [ + { + "fullExpression": "!@local.with_image_and_subtitle", + "matchedExpression": "!@local.with_image_and_subtitle", + "type": "local", + "fieldName": "with_image_and_subtitle" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "parameter_list.task_group_id" + ], + "@local.click_template": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.task_group_data": [ + "parameter_list.task_group_data" + ], + "@local.completed_field": [ + "parameter_list.completed_field" + ], + "@local.card_title": [ + "parameter_list.title" + ], + "@local.card_style": [ + "parameter_list.style" + ], + "@local.highlighted_text": [ + "parameter_list.highlighted_text" + ], + "@local.progress_units_name": [ + "parameter_list.progress_units_name" + ], + "!@local.with_image_and_subtitle": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/module_details.json b/packages/app-data/sheets/template/module_details.json new file mode 100644 index 0000000000..d269221b05 --- /dev/null +++ b/packages/app-data/sheets/template/module_details.json @@ -0,0 +1,582 @@ +{ + "flow_type": "template", + "flow_name": "module_details", + "status": "released", + "rows": [ + { + "name": "workshop_id", + "value": "@fields.current_workshop", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_workshop", + "matchedExpression": "@fields.current_workshop", + "type": "fields", + "fieldName": "current_workshop" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_workshop": [ + "value" + ] + } + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "completed", + "value": "_completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed" + }, + { + "name": "completed_field", + "value": "task_@local.workshop_id@local.completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed_field", + "_dynamicFields": { + "value": [ + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.completed", + "type": "local", + "fieldName": "completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.completed": [ + "value" + ] + } + }, + { + "name": "ww_id", + "value": "workshop.@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "ww_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "workshop_data", + "value": "@data.@local.ww_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.ww_id", + "matchedExpression": "@local.ww_id", + "type": "local", + "fieldName": "ww_id" + } + ] + }, + "_dynamicDependencies": { + "@local.ww_id": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.title", + "matchedExpression": "@local.workshop_data.title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.title": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.short_title", + "_translations": { + "value": {} + }, + "condition": "@local.workshop_data.short_title", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ], + "condition": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.short_title": [ + "value", + "condition" + ] + } + }, + { + "name": "card_subtitle", + "value": "@local.workshop_data.description", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_subtitle", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.description", + "matchedExpression": "@local.workshop_data.description", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.description": [ + "value" + ] + } + }, + { + "name": "card_image", + "value": "@local.workshop_data.image_asset", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.image_asset", + "matchedExpression": "@local.workshop_data.image_asset", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.image_asset": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "top", + "exclude_from_translation": true, + "rows": [ + { + "type": "title", + "name": "title", + "value": "@local.card_title", + "_translations": { + "value": {} + }, + "style_list": [ + "flex: 3" + ], + "exclude_from_translation": true, + "_nested_name": "top.title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ] + }, + "_dynamicDependencies": { + "@local.card_title": [ + "value" + ] + } + }, + { + "type": "image", + "name": "image", + "value": "@local.card_image", + "_translations": { + "value": {} + }, + "style_list": [ + "flex: 1" + ], + "exclude_from_translation": true, + "_nested_name": "top.image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.card_image", + "matchedExpression": "@local.card_image", + "type": "local", + "fieldName": "card_image" + } + ] + }, + "_dynamicDependencies": { + "@local.card_image": [ + "value" + ] + } + } + ], + "_nested_name": "top" + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "path", + "value": "_ind", + "_translations": { + "value": {} + }, + "condition": "@fields.workshop_path == \"individual\"", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.workshop_path == \"individual\"", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "path", + "value": "_tog", + "_translations": { + "value": {} + }, + "condition": "!(@fields.workshop_path == \"individual\")", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!(@fields.workshop_path == \"individual\")", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.path@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.path", + "type": "local", + "fieldName": "path" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.path": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "type": "items", + "value": "@data.@local.task_group_data", + "parameter_list": { + "sort": "priority" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "template", + "name": "card_@item.id", + "value": "task_card", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.card_@item.id.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.card_@item.id.workshop_id", + "matchedExpression": "@item.id.workshop_id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@item.id.workshop_id": [ + "_nested_name" + ] + } + }, + { + "name": "task_id", + "value": "@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.card_@item.id.task_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.card_@item.id.task_id", + "matchedExpression": "@item.id.task_id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@item.id.task_id": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.card_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "card_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.card_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.task_group_data", + "matchedExpression": "@local.task_group_data", + "type": "local", + "fieldName": "task_group_data" + } + ] + }, + "_dynamicDependencies": { + "@local.task_group_data": [ + "value" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/module_overview.json b/packages/app-data/sheets/template/module_overview.json new file mode 100644 index 0000000000..19c0e3c166 --- /dev/null +++ b/packages/app-data/sheets/template/module_overview.json @@ -0,0 +1,746 @@ +{ + "flow_type": "template", + "flow_name": "module_overview", + "status": "released", + "rows": [ + { + "type": "update_action_list", + "name": "custom_actions_1", + "action_list": [ + { + "trigger": "nav_resume", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "nav_resume | emit: force_reload", + "_cleaned": "nav_resume | emit: force_reload" + } + ], + "exclude_from_translation": true, + "_nested_name": "custom_actions_1" + }, + { + "name": "workshop_id", + "value": "@fields.current_workshop", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_workshop", + "matchedExpression": "@fields.current_workshop", + "type": "fields", + "fieldName": "current_workshop" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_workshop": [ + "value" + ] + } + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "completed", + "value": "_completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed" + }, + { + "name": "completed_field", + "value": "task_@local.workshop_id@local.completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed_field", + "_dynamicFields": { + "value": [ + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "task_@local.workshop_id@local.completed", + "matchedExpression": "@local.completed", + "type": "local", + "fieldName": "completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.completed": [ + "value" + ] + } + }, + { + "name": "ww_id", + "value": "workshop.@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "ww_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "workshop_data", + "value": "@data.@local.ww_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.ww_id", + "matchedExpression": "@local.ww_id", + "type": "local", + "fieldName": "ww_id" + } + ] + }, + "_dynamicDependencies": { + "@local.ww_id": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.title", + "matchedExpression": "@local.workshop_data.title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.title": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.workshop_data.short_title", + "_translations": { + "value": {} + }, + "condition": "@local.workshop_data.short_title", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ], + "condition": [ + { + "fullExpression": "@local.workshop_data.short_title", + "matchedExpression": "@local.workshop_data.short_title", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.short_title": [ + "value", + "condition" + ] + } + }, + { + "name": "card_subtitle", + "value": "@local.workshop_data.description", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_subtitle", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.description", + "matchedExpression": "@local.workshop_data.description", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.description": [ + "value" + ] + } + }, + { + "name": "card_image", + "value": "@local.workshop_data.image_asset", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.image_asset", + "matchedExpression": "@local.workshop_data.image_asset", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.image_asset": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "top", + "exclude_from_translation": true, + "rows": [ + { + "type": "title", + "name": "title", + "value": "@local.card_title", + "_translations": { + "value": {} + }, + "style_list": [ + "flex: 1" + ], + "exclude_from_translation": true, + "_nested_name": "top.title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ] + }, + "_dynamicDependencies": { + "@local.card_title": [ + "value" + ] + } + }, + { + "type": "image", + "name": "image", + "value": "@local.card_image", + "_translations": { + "value": {} + }, + "style_list": [ + "flex: 1" + ], + "exclude_from_translation": true, + "_nested_name": "top.image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.card_image", + "matchedExpression": "@local.card_image", + "type": "local", + "fieldName": "card_image" + } + ] + }, + "_dynamicDependencies": { + "@local.card_image": [ + "value" + ] + } + } + ], + "_nested_name": "top" + }, + { + "type": "text", + "name": "text", + "value": "@local.card_subtitle", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.card_subtitle", + "matchedExpression": "@local.card_subtitle", + "type": "local", + "fieldName": "card_subtitle" + } + ] + }, + "_dynamicDependencies": { + "@local.card_subtitle": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dg_full_module", + "rows": [ + { + "type": "template", + "name": "full_module", + "value": "module_card", + "exclude_from_translation": true, + "rows": [ + { + "name": "with_image_and_subtitle", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_full_module.full_module.with_image_and_subtitle" + }, + { + "name": "card_style", + "value": "landscape", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_full_module.full_module.card_style" + }, + { + "name": "workshop_id", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_full_module.full_module.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@global.workshop_capital", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_full_module.full_module.card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.workshop_capital", + "matchedExpression": "@global.workshop_capital", + "type": "global", + "fieldName": "workshop_capital" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop_capital": [ + "value" + ] + } + }, + { + "name": "click_template", + "value": "module_details", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_full_module.full_module.click_template" + } + ], + "_nested_name": "dg_full_module.full_module" + } + ], + "_nested_name": "dg_full_module" + }, + { + "type": "display_group", + "name": "dg_card_tools", + "rows": [ + { + "type": "template", + "name": "card_tools", + "value": "task_card", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_card_tools.card_tools.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "task_id", + "value": "tools_activity", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_card_tools.card_tools.task_id" + } + ], + "_nested_name": "dg_card_tools.card_tools" + } + ], + "_nested_name": "dg_card_tools" + }, + { + "name": "hp_completed", + "value": "_home_practice_completed", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "hp_completed" + }, + { + "name": "this_hp_completed", + "value": "task_gp_@local.workshop_id@local.hp_completed", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "this_hp_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "task_gp_@local.workshop_id@local.hp_completed", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "task_gp_@local.workshop_id@local.hp_completed", + "matchedExpression": "@local.hp_completed", + "type": "local", + "fieldName": "hp_completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.hp_completed": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dg_card_hp", + "condition": "!@fields.@local.this_hp_completed", + "rows": [ + { + "type": "template", + "name": "card_hp", + "value": "task_card", + "condition": "@local.workshop_id != \"w_celebrate\"", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_card_hp.card_hp.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "task_id", + "value": "home_practice", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "dg_card_hp.card_hp.task_id" + } + ], + "_nested_name": "dg_card_hp.card_hp", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.workshop_id != \"w_celebrate\"", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "condition" + ] + } + } + ], + "_nested_name": "dg_card_hp", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.@local.this_hp_completed", + "matchedExpression": "@local.this_hp_completed", + "type": "local", + "fieldName": "this_hp_completed" + } + ] + }, + "_dynamicDependencies": { + "@local.this_hp_completed": [ + "condition" + ] + } + }, + { + "type": "display_group", + "condition": "@fields.@local.this_hp_completed", + "rows": [ + { + "type": "template", + "name": "card_hp_review", + "value": "task_card", + "condition": "@local.workshop_id != \"w_self_care\" && @local.workshop_id != \"w_celebrate\"", + "exclude_from_translation": true, + "rows": [ + { + "name": "workshop_id", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "display_group.card_hp_review.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "task_id", + "value": "hp_review", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "display_group.card_hp_review.task_id" + } + ], + "_nested_name": "display_group.card_hp_review", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.workshop_id != \"w_self_care\" && @local.workshop_id != \"w_celebrate\"", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id != \"w_self_care\" && @local.workshop_id != \"w_celebrate\"", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "condition", + "condition" + ] + } + } + ], + "name": "display_group", + "_nested_name": "display_group", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.@local.this_hp_completed", + "matchedExpression": "@local.this_hp_completed", + "type": "local", + "fieldName": "this_hp_completed" + } + ] + }, + "_dynamicDependencies": { + "@local.this_hp_completed": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/organisation_registration.json b/packages/app-data/sheets/template/organisation_registration.json index ed555f283d..5259448cd5 100644 --- a/packages/app-data/sheets/template/organisation_registration.json +++ b/packages/app-data/sheets/template/organisation_registration.json @@ -244,6 +244,120 @@ ] } }, + { + "name": "organisation_name", + "value": "@local.@local.combo_box;", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "organisation_name", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.@local.combo_box;", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "_dynamicDependencies": { + "@local.combo_box": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text", + "value": "By selecting this organisation you are allowing them to have access to your anonymous usage data so that they can support you on this journey.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "condition": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "_nested_name": "text", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + }, + { + "fullExpression": "@fields.organisation_code == \"organisation_1\" || @fields.organisation_code == \"organisation_2\" || @fields.organisation_code == \"organisation_3\" || @fields.organisation_code == \"organisation_4\" || @fields.organisation_code == \"organisation_5\" || @fields.organisation_code == \"organisation_6\" || @fields.organisation_code == \"organisation_7\" || @fields.organisation_code == \"organisation_8\" || @fields.organisation_code == \"organisation_9\" || @fields.organisation_code == \"organisation_10\"", + "matchedExpression": "@fields.organisation_code", + "type": "fields", + "fieldName": "organisation_code" + } + ] + }, + "_dynamicDependencies": { + "@fields.organisation_code": [ + "condition", + "condition", + "condition", + "condition", + "condition", + "condition", + "condition", + "condition", + "condition", + "condition" + ] + } + }, { "type": "template", "name": "nav_buttons", @@ -294,5 +408,9 @@ "_nested_name": "nav_buttons" } ], - "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx", + "_overrides": { + "organisation_registration_za": "@fields._deployment_name == \"plh_za\"", + "organisation_registration_tz": "@fields._deployment_name == \"plh_tz\"" + } } \ No newline at end of file diff --git a/packages/app-data/sheets/template/organisation_registration_tz.json b/packages/app-data/sheets/template/organisation_registration_tz.json index 7b0bf24dfc..08e5ba9404 100644 --- a/packages/app-data/sheets/template/organisation_registration_tz.json +++ b/packages/app-data/sheets/template/organisation_registration_tz.json @@ -47,6 +47,17 @@ "type": "set_variable", "_nested_name": "organisation_1" }, + { + "name": "organisation_2", + "value": "NIMR", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "organisation_2" + }, { "type": "template", "name": "organisation_registration", @@ -64,12 +75,61 @@ ], "is_override_target": true, "rows": [ + { + "name": "organisation_1", + "value": "@local.organisation_1", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "organisation_registration.organisation_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.organisation_1", + "matchedExpression": "@local.organisation_1", + "type": "local", + "fieldName": "organisation_1" + } + ] + }, + "_dynamicDependencies": { + "@local.organisation_1": [ + "value" + ] + } + }, + { + "name": "organisation_2", + "value": "@local.organisation_2", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "organisation_registration.organisation_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.organisation_2", + "matchedExpression": "@local.organisation_2", + "type": "local", + "fieldName": "organisation_2" + } + ] + }, + "_dynamicDependencies": { + "@local.organisation_2": [ + "value" + ] + } + }, { "name": "answer_list", "value": [ "name:myself | text:@local.myself", "name:friend | text: @local.friend", - "name:organisation_1 | text: @local.organisation_1" + "name:organisation_1 | text: @local.organisation_1", + "name:organisation_2 | text: @local.organisation_2" ], "type": "set_variable", "_nested_name": "organisation_registration.answer_list", @@ -98,6 +158,14 @@ "type": "local", "fieldName": "organisation_1" } + ], + "3": [ + { + "fullExpression": "name:organisation_2 | text: @local.organisation_2", + "matchedExpression": "@local.organisation_2", + "type": "local", + "fieldName": "organisation_2" + } ] } }, @@ -110,6 +178,9 @@ ], "@local.organisation_1": [ "value.2" + ], + "@local.organisation_2": [ + "value.3" ] } } diff --git a/packages/app-data/sheets/template/pair.json b/packages/app-data/sheets/template/pair.json index dec4771bbd..446fbeaaff 100644 --- a/packages/app-data/sheets/template/pair.json +++ b/packages/app-data/sheets/template/pair.json @@ -20,7 +20,7 @@ { "type": "animated_section", "name": "animated_section_1", - "condition": "@local.show_animated_section_1", + "hidden": "!@local.show_animated_section_1", "rows": [ { "type": "template", @@ -62,25 +62,25 @@ ], "_nested_name": "animated_section_1", "_dynamicFields": { - "condition": [ + "hidden": [ { - "fullExpression": "@local.show_animated_section_1", - "matchedExpression": "@local.show_animated_section_1", + "fullExpression": "!@local.show_animated_section_1", + "matchedExpression": "!@local.show_animated_section_1", "type": "local", "fieldName": "show_animated_section_1" } ] }, "_dynamicDependencies": { - "@local.show_animated_section_1": [ - "condition" + "!@local.show_animated_section_1": [ + "hidden" ] } }, { "type": "animated_section", "name": "animated_section_2", - "condition": "@local.show_animated_section_2", + "hidden": "!@local.show_animated_section_2", "rows": [ { "type": "template", @@ -122,18 +122,18 @@ ], "_nested_name": "animated_section_2", "_dynamicFields": { - "condition": [ + "hidden": [ { - "fullExpression": "@local.show_animated_section_2", - "matchedExpression": "@local.show_animated_section_2", + "fullExpression": "!@local.show_animated_section_2", + "matchedExpression": "!@local.show_animated_section_2", "type": "local", "fieldName": "show_animated_section_2" } ] }, "_dynamicDependencies": { - "@local.show_animated_section_2": [ - "condition" + "!@local.show_animated_section_2": [ + "hidden" ] } } diff --git a/packages/app-data/sheets/template/parent_centre_customisation.json b/packages/app-data/sheets/template/parent_centre_customisation.json index 03b9f454d4..a36f861a19 100644 --- a/packages/app-data/sheets/template/parent_centre_customisation.json +++ b/packages/app-data/sheets/template/parent_centre_customisation.json @@ -146,15 +146,10 @@ { "type": "button", "name": "button_3", - "value": "Update my workshop options", + "value": "Update my @global.workshop options", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "action_list": [ @@ -168,7 +163,22 @@ "_cleaned": "click | go_to:workshop_options_page" } ], - "_nested_name": "button_3" + "_nested_name": "button_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Update my @global.workshop options", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" diff --git a/packages/app-data/sheets/template/parent_centre_help.json b/packages/app-data/sheets/template/parent_centre_help.json index aa13cad3cf..f1a6eb45d2 100644 --- a/packages/app-data/sheets/template/parent_centre_help.json +++ b/packages/app-data/sheets/template/parent_centre_help.json @@ -33,7 +33,7 @@ { "type": "button", "name": "button_1", - "value": "Give me quick parenting tips", + "value": "Support Contacts", "_translations": { "value": { "tz_sw": true, @@ -49,18 +49,34 @@ "trigger": "click", "action_id": "go_to", "args": [ - "parenting_tips" + "parent_centre_support_con" ], - "_raw": "click | go_to: parenting_tips", - "_cleaned": "click | go_to: parenting_tips" + "_raw": "click | go_to: parent_centre_support_con", + "_cleaned": "click | go_to: parent_centre_support_con" } ], - "_nested_name": "button_1" + "condition": "@fields._deployment_name == \"plh_tz\"", + "_nested_name": "button_1", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields._deployment_name == \"plh_tz\"", + "matchedExpression": "@fields._deployment_name", + "type": "fields", + "fieldName": "_deployment_name" + } + ] + }, + "_dynamicDependencies": { + "@fields._deployment_name": [ + "condition" + ] + } }, { "type": "button", "name": "button_2", - "value": "Something really bad happened", + "value": "Quick Parenting Tips", "_translations": { "value": { "tz_sw": true, @@ -71,13 +87,23 @@ "za_zu": true } }, - "hidden": true, + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "parenting_tips" + ], + "_raw": "click | go_to: parenting_tips", + "_cleaned": "click | go_to: parenting_tips" + } + ], "_nested_name": "button_2" }, { "type": "button", "name": "button_3", - "value": "I have technical problems with the app", + "value": "Technical Support", "_translations": { "value": { "tz_sw": true, @@ -99,7 +125,6 @@ "_cleaned": "click | go_to: parent_centre_technical_support" } ], - "hidden": true, "_nested_name": "button_3" } ], diff --git a/packages/app-data/sheets/template/parent_centre_message_archive.json b/packages/app-data/sheets/template/parent_centre_message_archive.json index 7b21d50f2d..3f85eee2d4 100644 --- a/packages/app-data/sheets/template/parent_centre_message_archive.json +++ b/packages/app-data/sheets/template/parent_centre_message_archive.json @@ -55,20 +55,23 @@ { "type": "text", "name": "text", - "value": "You will find the in-week messages from the previous workshops here.", + "value": "You will find the in-week messages from the previous @global.workshops here.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "condition": "@data.workshop.w_self_care.number == @local.workshop_number", "_nested_name": "text", "_dynamicFields": { + "value": [ + { + "fullExpression": "You will find the in-week messages from the previous @global.workshops here.", + "matchedExpression": "@global.workshops", + "type": "global", + "fieldName": "workshops" + } + ], "condition": [ { "fullExpression": "@data.workshop.w_self_care.number == @local.workshop_number", @@ -85,6 +88,9 @@ ] }, "_dynamicDependencies": { + "@global.workshops": [ + "value" + ], "@data.workshop.w_self_care.number": [ "condition" ], diff --git a/packages/app-data/sheets/template/parent_centre_my_tips.json b/packages/app-data/sheets/template/parent_centre_my_tips.json index 6009eda84a..e8c68a8836 100644 --- a/packages/app-data/sheets/template/parent_centre_my_tips.json +++ b/packages/app-data/sheets/template/parent_centre_my_tips.json @@ -29,8 +29,8 @@ }, { "type": "display_group", - "name": "survey_not_completed", - "condition": "!@field.survey_completed", + "name": "dg_if_empty", + "condition": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", "parameter_list": { "style": "column" }, @@ -49,7 +49,7 @@ "za_zu": true } }, - "_nested_name": "survey_not_completed.text_if_empty" + "_nested_name": "dg_if_empty.text_if_empty" }, { "type": "display_group", @@ -77,7 +77,7 @@ "icon_src": "@data.parent_centre.customisation.icon_asset", "first_line_text": "@data.parent_centre.customisation.title" }, - "_nested_name": "survey_not_completed.tile.tile_customisation", + "_nested_name": "dg_if_empty.tile.tile_customisation", "_dynamicFields": { "parameter_list": { "icon_src": [ @@ -108,22 +108,130 @@ } } ], - "_nested_name": "survey_not_completed.tile" + "_nested_name": "dg_if_empty.tile" } ], - "_nested_name": "survey_not_completed", + "_nested_name": "dg_if_empty", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.survey_completed", - "matchedExpression": "!@field.survey_completed", - "type": "field", + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "!@fields.survey_completed", + "type": "fields", "fieldName": "survey_completed" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_self_care_tools_disabled", + "type": "fields", + "fieldName": "w_self_care_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_1on1_tools_disabled", + "type": "fields", + "fieldName": "w_1on1_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_praise_tools_disabled", + "type": "fields", + "fieldName": "w_praise_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_instruct_tools_disabled", + "type": "fields", + "fieldName": "w_instruct_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_stress_tools_disabled", + "type": "fields", + "fieldName": "w_stress_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_money_tools_disabled", + "type": "fields", + "fieldName": "w_money_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_rules_tools_disabled", + "type": "fields", + "fieldName": "w_rules_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_consequence_tools_disabled", + "type": "fields", + "fieldName": "w_consequence_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_solve_tools_disabled", + "type": "fields", + "fieldName": "w_solve_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_safe_tools_disabled", + "type": "fields", + "fieldName": "w_safe_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_crisis_tools_disabled", + "type": "fields", + "fieldName": "w_crisis_tools_disabled" + }, + { + "fullExpression": "!@fields.survey_completed && @fields.w_self_care_tools_disabled && @fields.w_1on1_tools_disabled && @fields.w_praise_tools_disabled && @fields.w_instruct_tools_disabled && @fields.w_stress_tools_disabled && @fields.w_money_tools_disabled && @fields.w_rules_tools_disabled && @fields.w_consequence_tools_disabled && @fields.w_solve_tools_disabled && @fields.w_safe_tools_disabled && @fields.w_crisis_tools_disabled && @fields.w_celebrate_tools_disabled", + "matchedExpression": "@fields.w_celebrate_tools_disabled", + "type": "fields", + "fieldName": "w_celebrate_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.survey_completed": [ + "!@fields.survey_completed": [ + "condition" + ], + "@fields.w_self_care_tools_disabled": [ + "condition" + ], + "@fields.w_1on1_tools_disabled": [ + "condition" + ], + "@fields.w_praise_tools_disabled": [ + "condition" + ], + "@fields.w_instruct_tools_disabled": [ + "condition" + ], + "@fields.w_stress_tools_disabled": [ + "condition" + ], + "@fields.w_money_tools_disabled": [ + "condition" + ], + "@fields.w_rules_tools_disabled": [ + "condition" + ], + "@fields.w_consequence_tools_disabled": [ + "condition" + ], + "@fields.w_solve_tools_disabled": [ + "condition" + ], + "@fields.w_safe_tools_disabled": [ + "condition" + ], + "@fields.w_crisis_tools_disabled": [ + "condition" + ], + "@fields.w_celebrate_tools_disabled": [ "condition" ] } @@ -139,7 +247,7 @@ "type": "template", "name": "workshop_1", "value": "tool_tile", - "condition": "!@field.w_self_care_tools_disabled", + "condition": "!@fields.w_self_care_tools_disabled", "rows": [ { "name": "workshop_data", @@ -170,15 +278,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_self_care_tools_disabled", - "matchedExpression": "!@field.w_self_care_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_self_care_tools_disabled", + "matchedExpression": "!@fields.w_self_care_tools_disabled", + "type": "fields", "fieldName": "w_self_care_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_self_care_tools_disabled": [ + "!@fields.w_self_care_tools_disabled": [ "condition" ] } @@ -187,7 +295,7 @@ "type": "template", "name": "workshop_2", "value": "tool_tile", - "condition": "!@field.w_1on1_tools_disabled", + "condition": "!@fields.w_1on1_tools_disabled", "rows": [ { "name": "workshop_data", @@ -218,15 +326,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_1on1_tools_disabled", - "matchedExpression": "!@field.w_1on1_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_1on1_tools_disabled", + "matchedExpression": "!@fields.w_1on1_tools_disabled", + "type": "fields", "fieldName": "w_1on1_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_1on1_tools_disabled": [ + "!@fields.w_1on1_tools_disabled": [ "condition" ] } @@ -235,7 +343,7 @@ "type": "template", "name": "workshop_3", "value": "tool_tile", - "condition": "!@field.w_praise_tools_disabled", + "condition": "!@fields.w_praise_tools_disabled", "rows": [ { "name": "workshop_data", @@ -266,15 +374,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_praise_tools_disabled", - "matchedExpression": "!@field.w_praise_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_praise_tools_disabled", + "matchedExpression": "!@fields.w_praise_tools_disabled", + "type": "fields", "fieldName": "w_praise_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_praise_tools_disabled": [ + "!@fields.w_praise_tools_disabled": [ "condition" ] } @@ -283,7 +391,7 @@ "type": "template", "name": "workshop_4", "value": "tool_tile", - "condition": "!@field.w_instruct_tools_disabled", + "condition": "!@fields.w_instruct_tools_disabled", "rows": [ { "name": "workshop_data", @@ -314,15 +422,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_instruct_tools_disabled", - "matchedExpression": "!@field.w_instruct_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_instruct_tools_disabled", + "matchedExpression": "!@fields.w_instruct_tools_disabled", + "type": "fields", "fieldName": "w_instruct_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_instruct_tools_disabled": [ + "!@fields.w_instruct_tools_disabled": [ "condition" ] } @@ -331,7 +439,7 @@ "type": "template", "name": "workshop_5", "value": "tool_tile", - "condition": "!@field.w_stress_tools_disabled", + "condition": "!@fields.w_stress_tools_disabled", "rows": [ { "name": "workshop_data", @@ -362,15 +470,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_stress_tools_disabled", - "matchedExpression": "!@field.w_stress_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_stress_tools_disabled", + "matchedExpression": "!@fields.w_stress_tools_disabled", + "type": "fields", "fieldName": "w_stress_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_stress_tools_disabled": [ + "!@fields.w_stress_tools_disabled": [ "condition" ] } @@ -379,7 +487,7 @@ "type": "template", "name": "workshop_6", "value": "tool_tile", - "condition": "!@field.w_money_tools_disabled", + "condition": "!@fields.w_money_tools_disabled", "rows": [ { "name": "workshop_data", @@ -410,15 +518,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_money_tools_disabled", - "matchedExpression": "!@field.w_money_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_money_tools_disabled", + "matchedExpression": "!@fields.w_money_tools_disabled", + "type": "fields", "fieldName": "w_money_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_money_tools_disabled": [ + "!@fields.w_money_tools_disabled": [ "condition" ] } @@ -427,7 +535,7 @@ "type": "template", "name": "workshop_7", "value": "tool_tile", - "condition": "!@field.w_rules_tools_disabled", + "condition": "!@fields.w_rules_tools_disabled", "rows": [ { "name": "workshop_data", @@ -458,15 +566,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_rules_tools_disabled", - "matchedExpression": "!@field.w_rules_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_rules_tools_disabled", + "matchedExpression": "!@fields.w_rules_tools_disabled", + "type": "fields", "fieldName": "w_rules_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_rules_tools_disabled": [ + "!@fields.w_rules_tools_disabled": [ "condition" ] } @@ -475,7 +583,7 @@ "type": "template", "name": "workshop_8", "value": "tool_tile", - "condition": "!@field.w_consequence_tools_disabled", + "condition": "!@fields.w_consequence_tools_disabled", "rows": [ { "name": "workshop_data", @@ -506,15 +614,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_consequence_tools_disabled", - "matchedExpression": "!@field.w_consequence_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_consequence_tools_disabled", + "matchedExpression": "!@fields.w_consequence_tools_disabled", + "type": "fields", "fieldName": "w_consequence_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_consequence_tools_disabled": [ + "!@fields.w_consequence_tools_disabled": [ "condition" ] } @@ -523,7 +631,7 @@ "type": "template", "name": "workshop_9", "value": "tool_tile", - "condition": "!@field.w_solve_tools_disabled", + "condition": "!@fields.w_solve_tools_disabled", "rows": [ { "name": "workshop_data", @@ -554,15 +662,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_solve_tools_disabled", - "matchedExpression": "!@field.w_solve_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_solve_tools_disabled", + "matchedExpression": "!@fields.w_solve_tools_disabled", + "type": "fields", "fieldName": "w_solve_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_solve_tools_disabled": [ + "!@fields.w_solve_tools_disabled": [ "condition" ] } @@ -571,7 +679,7 @@ "type": "template", "name": "workshop_10", "value": "tool_tile", - "condition": "!@field.w_safe_tools_disabled", + "condition": "!@fields.w_safe_tools_disabled", "rows": [ { "name": "workshop_data", @@ -602,15 +710,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_safe_tools_disabled", - "matchedExpression": "!@field.w_safe_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_safe_tools_disabled", + "matchedExpression": "!@fields.w_safe_tools_disabled", + "type": "fields", "fieldName": "w_safe_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_safe_tools_disabled": [ + "!@fields.w_safe_tools_disabled": [ "condition" ] } @@ -619,7 +727,7 @@ "type": "template", "name": "workshop_11", "value": "tool_tile", - "condition": "!@field.w_crisis_tools_disabled", + "condition": "!@fields.w_crisis_tools_disabled", "rows": [ { "name": "workshop_data", @@ -650,15 +758,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_crisis_tools_disabled", - "matchedExpression": "!@field.w_crisis_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_crisis_tools_disabled", + "matchedExpression": "!@fields.w_crisis_tools_disabled", + "type": "fields", "fieldName": "w_crisis_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_crisis_tools_disabled": [ + "!@fields.w_crisis_tools_disabled": [ "condition" ] } @@ -667,7 +775,7 @@ "type": "template", "name": "workshop_12", "value": "tool_tile", - "condition": "!@field.w_celebrate_tools_disabled", + "condition": "!@fields.w_celebrate_tools_disabled", "rows": [ { "name": "workshop_data", @@ -698,15 +806,15 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.w_celebrate_tools_disabled", - "matchedExpression": "!@field.w_celebrate_tools_disabled", - "type": "field", + "fullExpression": "!@fields.w_celebrate_tools_disabled", + "matchedExpression": "!@fields.w_celebrate_tools_disabled", + "type": "fields", "fieldName": "w_celebrate_tools_disabled" } ] }, "_dynamicDependencies": { - "!@field.w_celebrate_tools_disabled": [ + "!@fields.w_celebrate_tools_disabled": [ "condition" ] } diff --git a/packages/app-data/sheets/template/parent_centre_support_category.json b/packages/app-data/sheets/template/parent_centre_support_category.json new file mode 100644 index 0000000000..40362e2e99 --- /dev/null +++ b/packages/app-data/sheets/template/parent_centre_support_category.json @@ -0,0 +1,1455 @@ +{ + "flow_type": "template", + "flow_name": "parent_centre_support_category", + "status": "released", + "rows": [ + { + "name": "category", + "value": "@fields.current_support_category", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "category", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_support_category", + "matchedExpression": "@fields.current_support_category", + "type": "fields", + "fieldName": "current_support_category" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_support_category": [ + "value" + ] + } + }, + { + "name": "categories_data", + "value": "safeguarding_categories_tz", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "categories_data" + }, + { + "name": "contacts_data", + "value": "safeguarding_contacts_tz", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "contacts_data" + }, + { + "name": "title", + "value": "title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "title" + }, + { + "name": "category_title", + "value": "@local.categories_data.@local.category.@local.title", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "category_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.categories_data.@local.category.@local.title", + "matchedExpression": "@local.categories_data", + "type": "local", + "fieldName": "categories_data" + }, + { + "fullExpression": "@local.categories_data.@local.category.@local.title", + "matchedExpression": "@local.category", + "type": "local", + "fieldName": "category" + }, + { + "fullExpression": "@local.categories_data.@local.category.@local.title", + "matchedExpression": "@local.title", + "type": "local", + "fieldName": "title" + } + ] + }, + "_dynamicDependencies": { + "@local.categories_data": [ + "value" + ], + "@local.category": [ + "value" + ], + "@local.title": [ + "value" + ] + } + }, + { + "type": "template", + "name": "banner", + "value": "banner", + "rows": [ + { + "name": "banner_title", + "value": "@data.@local.category_title", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "banner.banner_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.category_title", + "matchedExpression": "@local.category_title", + "type": "local", + "fieldName": "category_title" + } + ] + }, + "_dynamicDependencies": { + "@local.category_title": [ + "value" + ] + } + } + ], + "_nested_name": "banner" + }, + { + "name": "description", + "value": "description", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "description" + }, + { + "name": "category_description", + "value": "@local.categories_data.@local.category.@local.description", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "category_description", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.categories_data.@local.category.@local.description", + "matchedExpression": "@local.categories_data", + "type": "local", + "fieldName": "categories_data" + }, + { + "fullExpression": "@local.categories_data.@local.category.@local.description", + "matchedExpression": "@local.category", + "type": "local", + "fieldName": "category" + }, + { + "fullExpression": "@local.categories_data.@local.category.@local.description", + "matchedExpression": "@local.description", + "type": "local", + "fieldName": "description" + } + ] + }, + "_dynamicDependencies": { + "@local.categories_data": [ + "value" + ], + "@local.category": [ + "value" + ], + "@local.description": [ + "value" + ] + } + }, + { + "type": "text", + "name": "print_description", + "value": "@data.@local.category_description", + "_translations": { + "value": {} + }, + "_nested_name": "print_description", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.category_description", + "matchedExpression": "@local.category_description", + "type": "local", + "fieldName": "category_description" + } + ] + }, + "_dynamicDependencies": { + "@local.category_description": [ + "value" + ] + } + }, + { + "name": "copy_icon", + "value": "copy-outline", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "copy_icon" + }, + { + "name": "copied_icon", + "value": "plh_images/icons/tick.svg", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "copied_icon" + }, + { + "type": "items", + "value": "@data.@local.contacts_data", + "rows": [ + { + "type": "display_group", + "name": "condition_@item.id", + "parameter_list": { + "style": "column" + }, + "condition": "@local.category == @item.category", + "rows": [ + { + "type": "title", + "name": "title_@item.id", + "value": "@item.title", + "_translations": { + "value": {} + }, + "_nested_name": "items.condition_@item.id.title_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "title_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.title_@item.id", + "matchedExpression": "@item.id.title_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.title_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ], + "@item.id.title_": [ + "_nested_name" + ] + } + }, + { + "type": "text", + "name": "text_@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "_nested_name": "items.condition_@item.id.text_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.text_@item.id", + "matchedExpression": "@item.id.text_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.text_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value" + ], + "@item.id.text_": [ + "_nested_name" + ] + } + }, + { + "type": "display_group", + "name": "dg_contact_1_@item.id", + "rows": [ + { + "type": "text", + "name": "contact_description_1_@item.id", + "value": "@item.contact_description_1", + "_translations": { + "value": {} + }, + "condition": "@item.contact_description_1 && @item.contact_number_1", + "style_list": [ + "flex:1" + ], + "_nested_name": "items.condition_@item.id.dg_contact_1_@item.id.contact_description_1_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_description_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_description_1", + "matchedExpression": "@item.contact_description_1", + "type": "item", + "fieldName": "contact_description_1" + } + ], + "condition": [ + { + "fullExpression": "@item.contact_description_1 && @item.contact_number_1", + "matchedExpression": "@item.contact_description_1", + "type": "item", + "fieldName": "contact_description_1" + }, + { + "fullExpression": "@item.contact_description_1 && @item.contact_number_1", + "matchedExpression": "@item.contact_number_1", + "type": "item", + "fieldName": "contact_number_1" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_description_1_@item.id", + "matchedExpression": "@item.id.dg_contact_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_description_1_@item.id", + "matchedExpression": "@item.id.contact_description_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_description_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_description_1": [ + "value", + "condition" + ], + "@item.contact_number_1": [ + "condition" + ], + "@item.id.dg_contact_1_": [ + "_nested_name" + ], + "@item.id.contact_description_1_": [ + "_nested_name" + ] + } + }, + { + "type": "select_text", + "name": "contact_number_1_@item.id", + "value": "@item.contact_number_1", + "_translations": { + "value": {} + }, + "parameter_list": { + "copy_icon": "@local.copy_icon", + "copied_icon": "@local.copied_icon" + }, + "condition": "@item.contact_number_1", + "_nested_name": "items.condition_@item.id.dg_contact_1_@item.id.contact_number_1_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_number_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_number_1", + "matchedExpression": "@item.contact_number_1", + "type": "item", + "fieldName": "contact_number_1" + } + ], + "parameter_list": { + "copy_icon": [ + { + "fullExpression": "@local.copy_icon", + "matchedExpression": "@local.copy_icon", + "type": "local", + "fieldName": "copy_icon" + } + ], + "copied_icon": [ + { + "fullExpression": "@local.copied_icon", + "matchedExpression": "@local.copied_icon", + "type": "local", + "fieldName": "copied_icon" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_number_1", + "matchedExpression": "@item.contact_number_1", + "type": "item", + "fieldName": "contact_number_1" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_number_1_@item.id", + "matchedExpression": "@item.id.dg_contact_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_number_1_@item.id", + "matchedExpression": "@item.id.contact_number_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_number_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_number_1": [ + "value", + "condition" + ], + "@local.copy_icon": [ + "parameter_list.copy_icon" + ], + "@local.copied_icon": [ + "parameter_list.copied_icon" + ], + "@item.id.dg_contact_1_": [ + "_nested_name" + ], + "@item.id.contact_number_1_": [ + "_nested_name" + ] + } + }, + { + "type": "tile_component", + "name": "contact_link_1_@item.id", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "@item.contact_link_1" + ], + "_raw": "click | go_to_url: @item.contact_link_1", + "_cleaned": "click | go_to_url: @item.contact_link_1" + } + ], + "parameter_list": { + "first_line_text": "@item.contact_description_1", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "condition": "@item.contact_link_1", + "exclude_from_translation": true, + "_nested_name": "items.condition_@item.id.dg_contact_1_@item.id.contact_link_1_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_link_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.contact_link_1", + "matchedExpression": "@item.contact_link_1", + "type": "item", + "fieldName": "contact_link_1" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_1", + "matchedExpression": "@item.contact_link_1", + "type": "item", + "fieldName": "contact_link_1" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_1", + "matchedExpression": "@item.contact_link_1", + "type": "item", + "fieldName": "contact_link_1" + } + ] + } + }, + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@item.contact_description_1", + "matchedExpression": "@item.contact_description_1", + "type": "item", + "fieldName": "contact_description_1" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_link_1", + "matchedExpression": "@item.contact_link_1", + "type": "item", + "fieldName": "contact_link_1" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_link_1_@item.id", + "matchedExpression": "@item.id.dg_contact_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_link_1_@item.id", + "matchedExpression": "@item.id.contact_link_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id.contact_link_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_link_1": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "condition" + ], + "@item.contact_description_1": [ + "parameter_list.first_line_text" + ], + "@item.id.dg_contact_1_": [ + "_nested_name" + ], + "@item.id.contact_link_1_": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.condition_@item.id.dg_contact_1_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_contact_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id", + "matchedExpression": "@item.id.dg_contact_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.id.dg_contact_1_": [ + "_nested_name" + ] + } + }, + { + "type": "display_group", + "name": "dg_contact_2_@item.id", + "rows": [ + { + "type": "text", + "name": "contact_description_2_@item.id", + "value": "@item.contact_description_2", + "_translations": { + "value": {} + }, + "condition": "@item.contact_description_2 && @item.contact_number_2", + "style_list": [ + "flex:1" + ], + "_nested_name": "items.condition_@item.id.dg_contact_2_@item.id.contact_description_2_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_description_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_description_2", + "matchedExpression": "@item.contact_description_2", + "type": "item", + "fieldName": "contact_description_2" + } + ], + "condition": [ + { + "fullExpression": "@item.contact_description_2 && @item.contact_number_2", + "matchedExpression": "@item.contact_description_2", + "type": "item", + "fieldName": "contact_description_2" + }, + { + "fullExpression": "@item.contact_description_2 && @item.contact_number_2", + "matchedExpression": "@item.contact_number_2", + "type": "item", + "fieldName": "contact_number_2" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_description_2_@item.id", + "matchedExpression": "@item.id.dg_contact_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_description_2_@item.id", + "matchedExpression": "@item.id.contact_description_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_description_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_description_2": [ + "value", + "condition" + ], + "@item.contact_number_2": [ + "condition" + ], + "@item.id.dg_contact_2_": [ + "_nested_name" + ], + "@item.id.contact_description_2_": [ + "_nested_name" + ] + } + }, + { + "type": "select_text", + "name": "contact_number_2_@item.id", + "value": "@item.contact_number_2", + "_translations": { + "value": {} + }, + "parameter_list": { + "copy_icon": "@local.copy_icon", + "copied_icon": "@local.copied_icon" + }, + "condition": "@item.contact_number_2", + "_nested_name": "items.condition_@item.id.dg_contact_2_@item.id.contact_number_2_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_number_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_number_2", + "matchedExpression": "@item.contact_number_2", + "type": "item", + "fieldName": "contact_number_2" + } + ], + "parameter_list": { + "copy_icon": [ + { + "fullExpression": "@local.copy_icon", + "matchedExpression": "@local.copy_icon", + "type": "local", + "fieldName": "copy_icon" + } + ], + "copied_icon": [ + { + "fullExpression": "@local.copied_icon", + "matchedExpression": "@local.copied_icon", + "type": "local", + "fieldName": "copied_icon" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_number_2", + "matchedExpression": "@item.contact_number_2", + "type": "item", + "fieldName": "contact_number_2" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_number_2_@item.id", + "matchedExpression": "@item.id.dg_contact_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_number_2_@item.id", + "matchedExpression": "@item.id.contact_number_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_number_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_number_2": [ + "value", + "condition" + ], + "@local.copy_icon": [ + "parameter_list.copy_icon" + ], + "@local.copied_icon": [ + "parameter_list.copied_icon" + ], + "@item.id.dg_contact_2_": [ + "_nested_name" + ], + "@item.id.contact_number_2_": [ + "_nested_name" + ] + } + }, + { + "type": "tile_component", + "name": "contact_link_2_@item.id", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "@item.contact_link_2" + ], + "_raw": "click | go_to_url: @item.contact_link_2", + "_cleaned": "click | go_to_url: @item.contact_link_2" + } + ], + "parameter_list": { + "first_line_text": "@item.contact_description_2", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "condition": "@item.contact_link_2", + "exclude_from_translation": true, + "_nested_name": "items.condition_@item.id.dg_contact_2_@item.id.contact_link_2_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_link_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.contact_link_2", + "matchedExpression": "@item.contact_link_2", + "type": "item", + "fieldName": "contact_link_2" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_2", + "matchedExpression": "@item.contact_link_2", + "type": "item", + "fieldName": "contact_link_2" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_2", + "matchedExpression": "@item.contact_link_2", + "type": "item", + "fieldName": "contact_link_2" + } + ] + } + }, + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@item.contact_description_2", + "matchedExpression": "@item.contact_description_2", + "type": "item", + "fieldName": "contact_description_2" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_link_2", + "matchedExpression": "@item.contact_link_2", + "type": "item", + "fieldName": "contact_link_2" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_link_2_@item.id", + "matchedExpression": "@item.id.dg_contact_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_link_2_@item.id", + "matchedExpression": "@item.id.contact_link_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id.contact_link_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_link_2": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "condition" + ], + "@item.contact_description_2": [ + "parameter_list.first_line_text" + ], + "@item.id.dg_contact_2_": [ + "_nested_name" + ], + "@item.id.contact_link_2_": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.condition_@item.id.dg_contact_2_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_contact_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id", + "matchedExpression": "@item.id.dg_contact_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.id.dg_contact_2_": [ + "_nested_name" + ] + } + }, + { + "type": "display_group", + "name": "dg_contact_3_@item.id", + "rows": [ + { + "type": "text", + "name": "contact_description_3_@item.id", + "value": "@item.contact_description_3", + "_translations": { + "value": {} + }, + "condition": "@item.contact_description_3 && @item.contact_number_3", + "style_list": [ + "flex:1" + ], + "_nested_name": "items.condition_@item.id.dg_contact_3_@item.id.contact_description_3_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_description_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_description_3", + "matchedExpression": "@item.contact_description_3", + "type": "item", + "fieldName": "contact_description_3" + } + ], + "condition": [ + { + "fullExpression": "@item.contact_description_3 && @item.contact_number_3", + "matchedExpression": "@item.contact_description_3", + "type": "item", + "fieldName": "contact_description_3" + }, + { + "fullExpression": "@item.contact_description_3 && @item.contact_number_3", + "matchedExpression": "@item.contact_number_3", + "type": "item", + "fieldName": "contact_number_3" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_description_3_@item.id", + "matchedExpression": "@item.id.dg_contact_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_description_3_@item.id", + "matchedExpression": "@item.id.contact_description_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_description_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_description_3": [ + "value", + "condition" + ], + "@item.contact_number_3": [ + "condition" + ], + "@item.id.dg_contact_3_": [ + "_nested_name" + ], + "@item.id.contact_description_3_": [ + "_nested_name" + ] + } + }, + { + "type": "select_text", + "name": "contact_number_3_@item.id", + "value": "@item.contact_number_3", + "_translations": { + "value": {} + }, + "parameter_list": { + "copy_icon": "@local.copy_icon", + "copied_icon": "@local.copied_icon" + }, + "condition": "@item.contact_number_3", + "_nested_name": "items.condition_@item.id.dg_contact_3_@item.id.contact_number_3_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_number_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.contact_number_3", + "matchedExpression": "@item.contact_number_3", + "type": "item", + "fieldName": "contact_number_3" + } + ], + "parameter_list": { + "copy_icon": [ + { + "fullExpression": "@local.copy_icon", + "matchedExpression": "@local.copy_icon", + "type": "local", + "fieldName": "copy_icon" + } + ], + "copied_icon": [ + { + "fullExpression": "@local.copied_icon", + "matchedExpression": "@local.copied_icon", + "type": "local", + "fieldName": "copied_icon" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_number_3", + "matchedExpression": "@item.contact_number_3", + "type": "item", + "fieldName": "contact_number_3" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_number_3_@item.id", + "matchedExpression": "@item.id.dg_contact_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_number_3_@item.id", + "matchedExpression": "@item.id.contact_number_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_number_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_number_3": [ + "value", + "condition" + ], + "@local.copy_icon": [ + "parameter_list.copy_icon" + ], + "@local.copied_icon": [ + "parameter_list.copied_icon" + ], + "@item.id.dg_contact_3_": [ + "_nested_name" + ], + "@item.id.contact_number_3_": [ + "_nested_name" + ] + } + }, + { + "type": "tile_component", + "name": "contact_link_3_@item.id", + "action_list": [ + { + "trigger": "click", + "action_id": "go_to_url", + "args": [ + "@item.contact_link_3" + ], + "_raw": "click | go_to_url: @item.contact_link_3", + "_cleaned": "click | go_to_url: @item.contact_link_3" + } + ], + "parameter_list": { + "first_line_text": "@item.contact_description_3", + "left_icon_src": "globe-outline", + "style": "button_tile", + "icon_src": "chevron-forward-outline" + }, + "condition": "@item.contact_link_3", + "exclude_from_translation": true, + "_nested_name": "items.condition_@item.id.dg_contact_3_@item.id.contact_link_3_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "contact_link_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.contact_link_3", + "matchedExpression": "@item.contact_link_3", + "type": "item", + "fieldName": "contact_link_3" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_3", + "matchedExpression": "@item.contact_link_3", + "type": "item", + "fieldName": "contact_link_3" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to_url: @item.contact_link_3", + "matchedExpression": "@item.contact_link_3", + "type": "item", + "fieldName": "contact_link_3" + } + ] + } + }, + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@item.contact_description_3", + "matchedExpression": "@item.contact_description_3", + "type": "item", + "fieldName": "contact_description_3" + } + ] + }, + "condition": [ + { + "fullExpression": "@item.contact_link_3", + "matchedExpression": "@item.contact_link_3", + "type": "item", + "fieldName": "contact_link_3" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_link_3_@item.id", + "matchedExpression": "@item.id.dg_contact_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_link_3_@item.id", + "matchedExpression": "@item.id.contact_link_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id.contact_link_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.contact_link_3": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "condition" + ], + "@item.contact_description_3": [ + "parameter_list.first_line_text" + ], + "@item.id.dg_contact_3_": [ + "_nested_name" + ], + "@item.id.contact_link_3_": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.condition_@item.id.dg_contact_3_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_contact_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id", + "matchedExpression": "@item.id.dg_contact_3_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.condition_@item.id.dg_contact_3_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.id.dg_contact_3_": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.condition_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "condition_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "condition": [ + { + "fullExpression": "@local.category == @item.category", + "matchedExpression": "@local.category", + "type": "local", + "fieldName": "category" + }, + { + "fullExpression": "@local.category == @item.category", + "matchedExpression": "@item.category", + "type": "item", + "fieldName": "category" + } + ], + "_nested_name": [ + { + "fullExpression": "items.condition_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@local.category": [ + "condition" + ], + "@item.category": [ + "condition" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.contacts_data", + "matchedExpression": "@local.contacts_data", + "type": "local", + "fieldName": "contacts_data" + } + ] + }, + "_dynamicDependencies": { + "@local.contacts_data": [ + "value" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/parent_centre_support_con.json b/packages/app-data/sheets/template/parent_centre_support_con.json new file mode 100644 index 0000000000..9bfc872d14 --- /dev/null +++ b/packages/app-data/sheets/template/parent_centre_support_con.json @@ -0,0 +1,199 @@ +{ + "flow_type": "template", + "flow_name": "parent_centre_support_con", + "status": "released", + "rows": [ + { + "name": "categories_data", + "type": "set_variable", + "_nested_name": "categories_data" + }, + { + "type": "title", + "name": "title", + "value": "Support Contacts", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "exclude_from_translation": true, + "_nested_name": "title" + }, + { + "type": "text", + "name": "text", + "value": "I need help with:", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "text" + }, + { + "type": "items", + "value": "@data.@local.categories_data", + "condition": "@local.categories_data", + "rows": [ + { + "name": "category", + "value": "@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.category", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "type": "button", + "name": "button_@item.id", + "value": "@item.title", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_support_category", + "@item.id" + ], + "_raw": "click | set_field: current_support_category: @item.id", + "_cleaned": "click | set_field: current_support_category: @item.id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "parent_centre_support_category" + ], + "_raw": "click | go_to: parent_centre_support_category", + "_cleaned": "click | go_to: parent_centre_support_category" + } + ], + "_nested_name": "items.button_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "button_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_support_category: @item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_support_category: @item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + } + }, + "_nested_name": [ + { + "fullExpression": "items.button_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "_nested_name" + ], + "@item.title": [ + "value" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.categories_data", + "matchedExpression": "@local.categories_data", + "type": "local", + "fieldName": "categories_data" + } + ], + "condition": [ + { + "fullExpression": "@local.categories_data", + "matchedExpression": "@local.categories_data", + "type": "local", + "fieldName": "categories_data" + } + ] + }, + "_dynamicDependencies": { + "@local.categories_data": [ + "value", + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_parent_centre.xlsx", + "_overrides": { + "parent_centre_support_con_tz": "@fields._deployment_name == \"plh_tz\"" + } +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/parent_centre_support_con_tz.json b/packages/app-data/sheets/template/parent_centre_support_con_tz.json new file mode 100644 index 0000000000..8a1695c3c3 --- /dev/null +++ b/packages/app-data/sheets/template/parent_centre_support_con_tz.json @@ -0,0 +1,39 @@ +{ + "flow_type": "template", + "flow_name": "parent_centre_support_con_tz", + "status": "released", + "override_target": "parent_centre_support_con", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "rows": [ + { + "type": "template", + "name": "parent_centre_support_con", + "value": "parent_centre_support_con", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + } + ], + "is_override_target": true, + "rows": [ + { + "name": "categories_data", + "value": "safeguarding_categories_tz", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "parent_centre_support_con.categories_data" + } + ], + "_nested_name": "parent_centre_support_con" + } + ], + "_xlsxPath": "tz/core_templates/core_templates_parent_centre_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/parent_centre_technical_support.json b/packages/app-data/sheets/template/parent_centre_technical_support.json index f0f3239053..43cdcb08eb 100644 --- a/packages/app-data/sheets/template/parent_centre_technical_support.json +++ b/packages/app-data/sheets/template/parent_centre_technical_support.json @@ -6,29 +6,21 @@ { "type": "title", "name": "title", - "value": "@data.parent_centre.technical_support.title", + "value": "Technical Support", "_translations": { - "value": {} + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } }, "parameter_list": { "style": "tiny" }, - "_nested_name": "title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.parent_centre.technical_support.title", - "matchedExpression": "@data.parent_centre.technical_support.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.technical_support.title": [ - "value" - ] - } + "_nested_name": "title" }, { "type": "text", @@ -109,7 +101,9 @@ "_translations": { "value": { "tz_sw": true, + "za_af": true, "za_st": true, + "za_tn": true, "za_zu": true } }, @@ -682,11 +676,11 @@ "trigger": "click", "action_id": "feedback", "args": [ - "send", + "submit", "@local.form_data" ], - "_raw": "click | feedback:send:@local.form_data", - "_cleaned": "click | feedback:send:@local.form_data" + "_raw": "click | feedback:submit:@local.form_data", + "_cleaned": "click | feedback:submit:@local.form_data" }, { "trigger": "click", @@ -731,7 +725,7 @@ }, "_raw": [ { - "fullExpression": "click | feedback:send:@local.form_data", + "fullExpression": "click | feedback:submit:@local.form_data", "matchedExpression": "@local.form_data", "type": "local", "fieldName": "form_data" @@ -739,7 +733,7 @@ ], "_cleaned": [ { - "fullExpression": "click | feedback:send:@local.form_data", + "fullExpression": "click | feedback:submit:@local.form_data", "matchedExpression": "@local.form_data", "type": "local", "fieldName": "form_data" diff --git a/packages/app-data/sheets/template/parent_point_info.json b/packages/app-data/sheets/template/parent_point_info.json new file mode 100644 index 0000000000..434443e75d --- /dev/null +++ b/packages/app-data/sheets/template/parent_point_info.json @@ -0,0 +1,200 @@ +{ + "flow_type": "template", + "flow_name": "parent_point_info", + "status": "released", + "rows": [ + { + "name": "habit", + "value": "@fields.current_parent_point", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "habit", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_parent_point", + "matchedExpression": "@fields.current_parent_point", + "type": "fields", + "fieldName": "current_parent_point" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_parent_point": [ + "value" + ] + } + }, + { + "name": "habit_habit", + "value": "habit.@local.habit", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "habit_habit", + "_dynamicFields": { + "value": [ + { + "fullExpression": "habit.@local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ] + }, + "_dynamicDependencies": { + "@local.habit": [ + "value" + ] + } + }, + { + "name": "habit_data", + "value": "@data.@local.habit_habit", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "habit_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.habit_habit", + "matchedExpression": "@local.habit_habit", + "type": "local", + "fieldName": "habit_habit" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_habit": [ + "value" + ] + } + }, + { + "type": "title", + "name": "print_title", + "value": "@local.habit_data.title", + "_translations": { + "value": {} + }, + "_nested_name": "print_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.habit_data.title", + "matchedExpression": "@local.habit_data.title", + "type": "local", + "fieldName": "habit_data" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_data.title": [ + "value" + ] + } + }, + { + "type": "image", + "name": "print_image", + "value": "@local.habit_data.image_asset", + "_translations": { + "value": {} + }, + "condition": "@fields._app_theme == \"professional\"", + "_nested_name": "print_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.habit_data.image_asset", + "matchedExpression": "@local.habit_data.image_asset", + "type": "local", + "fieldName": "habit_data" + } + ], + "condition": [ + { + "fullExpression": "@fields._app_theme == \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_data.image_asset": [ + "value" + ], + "@fields._app_theme": [ + "condition" + ] + } + }, + { + "type": "lottie_animation", + "name": "print_lottie_animation", + "value": "@local.habit_data.lottie_asset", + "_translations": { + "value": {} + }, + "condition": "@fields._app_theme != \"professional\"", + "_nested_name": "print_lottie_animation", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.habit_data.lottie_asset", + "matchedExpression": "@local.habit_data.lottie_asset", + "type": "local", + "fieldName": "habit_data" + } + ], + "condition": [ + { + "fullExpression": "@fields._app_theme != \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_data.lottie_asset": [ + "value" + ], + "@fields._app_theme": [ + "condition" + ] + } + }, + { + "type": "text", + "name": "print_description", + "value": "@local.habit_data.description", + "_translations": { + "value": {} + }, + "_nested_name": "print_description", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.habit_data.description", + "matchedExpression": "@local.habit_data.description", + "type": "local", + "fieldName": "habit_data" + } + ] + }, + "_dynamicDependencies": { + "@local.habit_data.description": [ + "value" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_parent_points.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/parent_point_tile.json b/packages/app-data/sheets/template/parent_point_tile.json index c54359ee35..11e4e748a6 100644 --- a/packages/app-data/sheets/template/parent_point_tile.json +++ b/packages/app-data/sheets/template/parent_point_tile.json @@ -279,12 +279,32 @@ ], "_raw": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", "_cleaned": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1" + }, + { + "trigger": "info_click", + "action_id": "set_field", + "args": [ + "current_parent_point", + "@local.habit" + ], + "_raw": "info_click | set_field: current_parent_point: @local.habit", + "_cleaned": "info_click | set_field: current_parent_point: @local.habit" + }, + { + "trigger": "info_click", + "action_id": "pop_up", + "args": [ + "parent_point_info" + ], + "_raw": "info_click | pop_up: parent_point_info", + "_cleaned": "info_click | pop_up: parent_point_info" } ], + "condition": "@fields._app_theme == \"professional\"", "parameter_list": { "text": "@local.habit_data.title", - "lottie_src": "@local.habit_data.lottie_asset", - "video_src": "@local.habit_data.video_asset" + "icon_src": "@local.habit_data.image_asset", + "info_icon_src": "plh_images/icons/question_mark.svg" }, "_nested_name": "parent_point_box", "_dynamicFields": { @@ -392,8 +412,44 @@ "fieldName": "weekly_habit_count" } ] + }, + "2": { + "args": { + "1": [ + { + "fullExpression": "@local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ] + }, + "_raw": [ + { + "fullExpression": "info_click | set_field: current_parent_point: @local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ], + "_cleaned": [ + { + "fullExpression": "info_click | set_field: current_parent_point: @local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ] } }, + "condition": [ + { + "fullExpression": "@fields._app_theme == \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ], "parameter_list": { "text": [ { @@ -403,18 +459,265 @@ "fieldName": "habit_data" } ], - "lottie_src": [ + "icon_src": [ { - "fullExpression": "@local.habit_data.lottie_asset", - "matchedExpression": "@local.habit_data.lottie_asset", + "fullExpression": "@local.habit_data.image_asset", + "matchedExpression": "@local.habit_data.image_asset", + "type": "local", + "fieldName": "habit_data" + } + ] + } + }, + "_dynamicDependencies": { + "@local.weekly_habit_count": [ + "value", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.habit_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.habit_count": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.weekly_habit_field": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.habit": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@fields._app_theme": [ + "condition" + ], + "@local.habit_data.title": [ + "parameter_list.text" + ], + "@local.habit_data.image_asset": [ + "parameter_list.icon_src" + ] + } + }, + { + "type": "parent_point_box", + "name": "parent_point_box", + "value": "@local.weekly_habit_count", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@local.habit_field", + "@local.habit_count+1" + ], + "_raw": "click | set_field: @local.habit_field: @local.habit_count+1", + "_cleaned": "click | set_field: @local.habit_field: @local.habit_count+1" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@local.weekly_habit_field", + "@local.weekly_habit_count+1" + ], + "_raw": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", + "_cleaned": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1" + }, + { + "trigger": "info_click", + "action_id": "set_field", + "args": [ + "current_parent_point", + "@local.habit" + ], + "_raw": "info_click | set_field: current_parent_point: @local.habit", + "_cleaned": "info_click | set_field: current_parent_point: @local.habit" + }, + { + "trigger": "info_click", + "action_id": "pop_up", + "args": [ + "parent_point_info" + ], + "_raw": "info_click | pop_up: parent_point_info", + "_cleaned": "info_click | pop_up: parent_point_info" + } + ], + "condition": "@fields._app_theme != \"professional\"", + "parameter_list": { + "text": "@local.habit_data.title", + "lottie_src": "@local.habit_data.lottie_asset", + "info_icon_src": "plh_images/icons/question_mark.svg" + }, + "_nested_name": "parent_point_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.weekly_habit_count", + "matchedExpression": "@local.weekly_habit_count", + "type": "local", + "fieldName": "weekly_habit_count" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.habit_field", + "matchedExpression": "@local.habit_field", + "type": "local", + "fieldName": "habit_field" + } + ], + "1": [ + { + "fullExpression": "@local.habit_count+1", + "matchedExpression": "@local.habit_count", + "type": "local", + "fieldName": "habit_count" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @local.habit_field: @local.habit_count+1", + "matchedExpression": "@local.habit_field", + "type": "local", + "fieldName": "habit_field" + }, + { + "fullExpression": "click | set_field: @local.habit_field: @local.habit_count+1", + "matchedExpression": "@local.habit_count", + "type": "local", + "fieldName": "habit_count" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @local.habit_field: @local.habit_count+1", + "matchedExpression": "@local.habit_field", + "type": "local", + "fieldName": "habit_field" + }, + { + "fullExpression": "click | set_field: @local.habit_field: @local.habit_count+1", + "matchedExpression": "@local.habit_count", + "type": "local", + "fieldName": "habit_count" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.weekly_habit_field", + "matchedExpression": "@local.weekly_habit_field", + "type": "local", + "fieldName": "weekly_habit_field" + } + ], + "1": [ + { + "fullExpression": "@local.weekly_habit_count+1", + "matchedExpression": "@local.weekly_habit_count", + "type": "local", + "fieldName": "weekly_habit_count" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", + "matchedExpression": "@local.weekly_habit_field", + "type": "local", + "fieldName": "weekly_habit_field" + }, + { + "fullExpression": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", + "matchedExpression": "@local.weekly_habit_count", + "type": "local", + "fieldName": "weekly_habit_count" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", + "matchedExpression": "@local.weekly_habit_field", + "type": "local", + "fieldName": "weekly_habit_field" + }, + { + "fullExpression": "click | set_field: @local.weekly_habit_field: @local.weekly_habit_count+1", + "matchedExpression": "@local.weekly_habit_count", + "type": "local", + "fieldName": "weekly_habit_count" + } + ] + }, + "2": { + "args": { + "1": [ + { + "fullExpression": "@local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ] + }, + "_raw": [ + { + "fullExpression": "info_click | set_field: current_parent_point: @local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ], + "_cleaned": [ + { + "fullExpression": "info_click | set_field: current_parent_point: @local.habit", + "matchedExpression": "@local.habit", + "type": "local", + "fieldName": "habit" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@fields._app_theme != \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ], + "parameter_list": { + "text": [ + { + "fullExpression": "@local.habit_data.title", + "matchedExpression": "@local.habit_data.title", "type": "local", "fieldName": "habit_data" } ], - "video_src": [ + "lottie_src": [ { - "fullExpression": "@local.habit_data.video_asset", - "matchedExpression": "@local.habit_data.video_asset", + "fullExpression": "@local.habit_data.lottie_asset", + "matchedExpression": "@local.habit_data.lottie_asset", "type": "local", "fieldName": "habit_data" } @@ -443,14 +746,19 @@ "action_list.1._raw", "action_list.1._cleaned" ], + "@local.habit": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@fields._app_theme": [ + "condition" + ], "@local.habit_data.title": [ "parameter_list.text" ], "@local.habit_data.lottie_asset": [ "parameter_list.lottie_src" - ], - "@local.habit_data.video_asset": [ - "parameter_list.video_src" ] } } diff --git a/packages/app-data/sheets/template/question_time.json b/packages/app-data/sheets/template/question_time.json index 794c71b81d..cbf753ac98 100644 --- a/packages/app-data/sheets/template/question_time.json +++ b/packages/app-data/sheets/template/question_time.json @@ -30,23 +30,16 @@ "rows": [ { "name": "activity_title", - "value": "Question Time", + "value": "Question time", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "workshop_activity.activity_title" }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/write.svg", + "value": "plh_images/workshop_modes/individual/write.svg", "_translations": { "value": {} }, @@ -55,16 +48,9 @@ }, { "name": "intro_text", - "value": "It's time for some questions!", + "value": "It is time for some questions!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "workshop_activity.intro_text" diff --git a/packages/app-data/sheets/template/read.json b/packages/app-data/sheets/template/read.json new file mode 100644 index 0000000000..211c938aec --- /dev/null +++ b/packages/app-data/sheets/template/read.json @@ -0,0 +1,396 @@ +{ + "flow_type": "template", + "flow_name": "read", + "status": "released", + "rows": [ + { + "name": "story_id", + "value": "safety_amnesty", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "story_id" + }, + { + "name": "story_row", + "value": "story.@local.story_id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "story_row", + "_dynamicFields": { + "value": [ + { + "fullExpression": "story.@local.story_id", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ] + } + }, + { + "name": "story_row_data", + "value": "@data.@local.story_row", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "story_row_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.story_row", + "matchedExpression": "@local.story_row", + "type": "local", + "fieldName": "story_row" + } + ] + }, + "_dynamicDependencies": { + "@local.story_row": [ + "value" + ] + } + }, + { + "name": "outro_habit", + "value": "habit.@local.story_row_data.outro_habit", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "outro_habit", + "_dynamicFields": { + "value": [ + { + "fullExpression": "habit.@local.story_row_data.outro_habit", + "matchedExpression": "@local.story_row_data.outro_habit", + "type": "local", + "fieldName": "story_row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.story_row_data.outro_habit": [ + "value" + ] + } + }, + { + "type": "template", + "name": "workshop_activity", + "value": "workshop_activity", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "activity_image", + "value": "plh_images/workshop_modes/individual/read.svg", + "_translations": { + "value": {} + }, + "condition": "!@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.activity_image", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "!@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "activity_title", + "value": "Read", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "condition": "!@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.activity_title", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "!@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "intro_text", + "value": "Let's read a story!", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "condition": "!@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.intro_text", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "!@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "activity_image", + "value": "plh_images/workshop_modes/group/read.svg", + "_translations": { + "value": {} + }, + "condition": "@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.activity_image", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "activity_title", + "value": "Read Together", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "condition": "@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.activity_title", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "intro_text", + "value": "Let's read a story together!", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "condition": "@fields.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "workshop_activity.intro_text", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "intro_text", + "value": "@local.story_row_data.intro_text", + "_translations": { + "value": {} + }, + "condition": "@local.story_row_data.intro_text", + "type": "set_variable", + "_nested_name": "workshop_activity.intro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.story_row_data.intro_text", + "matchedExpression": "@local.story_row_data.intro_text", + "type": "local", + "fieldName": "story_row_data" + } + ], + "condition": [ + { + "fullExpression": "@local.story_row_data.intro_text", + "matchedExpression": "@local.story_row_data.intro_text", + "type": "local", + "fieldName": "story_row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.story_row_data.intro_text": [ + "value", + "condition" + ] + } + }, + { + "name": "outro_habit_data", + "value": "@data.@local.outro_habit", + "_translations": { + "value": {} + }, + "condition": "@data.@local.outro_habit", + "type": "set_variable", + "_nested_name": "workshop_activity.outro_habit_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.outro_habit", + "matchedExpression": "@local.outro_habit", + "type": "local", + "fieldName": "outro_habit" + } + ], + "condition": [ + { + "fullExpression": "@data.@local.outro_habit", + "matchedExpression": "@local.outro_habit", + "type": "local", + "fieldName": "outro_habit" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit": [ + "value", + "condition" + ] + } + }, + { + "type": "nested_properties", + "name": "content_box", + "value": "box_story_pages", + "rows": [ + { + "name": "story_id", + "value": "@local.story_id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.story_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.story_id", + "matchedExpression": "@local.story_id", + "type": "local", + "fieldName": "story_id" + } + ] + }, + "_dynamicDependencies": { + "@local.story_id": [ + "value" + ] + } + } + ], + "_nested_name": "workshop_activity.content_box" + } + ], + "_nested_name": "workshop_activity" + } + ], + "_xlsxPath": "global/mode_templates/read.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/read_temp.json b/packages/app-data/sheets/template/read_temp.json index 0321f25c1f..ea75e8346e 100644 --- a/packages/app-data/sheets/template/read_temp.json +++ b/packages/app-data/sheets/template/read_temp.json @@ -34,21 +34,21 @@ "_translations": { "value": {} }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -66,21 +66,21 @@ "za_zu": true } }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -98,46 +98,46 @@ "za_zu": true } }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/read.svg", + "value": "plh_images/workshop_modes/individual/read.svg", "_translations": { "value": {} }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } @@ -155,21 +155,21 @@ "za_zu": true } }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } @@ -187,21 +187,21 @@ "za_zu": true } }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } diff --git a/packages/app-data/sheets/template/reflect_individual.json b/packages/app-data/sheets/template/reflect_individual.json index ccf0df257d..de4b89d11d 100644 --- a/packages/app-data/sheets/template/reflect_individual.json +++ b/packages/app-data/sheets/template/reflect_individual.json @@ -30,7 +30,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/star.svg", + "value": "plh_images/workshop_modes/individual/star.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/relax.json b/packages/app-data/sheets/template/relax.json index 2a61bfcac6..2d92e1ec67 100644 --- a/packages/app-data/sheets/template/relax.json +++ b/packages/app-data/sheets/template/relax.json @@ -180,16 +180,6 @@ "_raw": "completed | emit:completed", "_cleaned": "completed | emit:completed" }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "daily_relax_done", - true - ], - "_raw": "completed | set_field:daily_relax_done:true", - "_cleaned": "completed | set_field:daily_relax_done:true" - }, { "trigger": "uncompleted", "action_id": "emit", @@ -267,7 +257,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/relax.svg", + "value": "plh_images/workshop_modes/individual/relax.svg", "_translations": { "value": {} }, @@ -324,15 +314,10 @@ }, { "name": "intro_text", - "value": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "value": "Let’s do a short relaxation activity together. It will only take a moment and you will feel more relaxed.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -434,9 +419,51 @@ "_translations": { "value": {} }, + "condition": "@fields._app_theme != \"professional\"", + "hidden": false, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.lottie_src", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields._app_theme != \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ] + }, + "_dynamicDependencies": { + "@fields._app_theme": [ + "condition" + ] + } + }, + { + "name": "image_src", + "value": "plh_images/habits/breathe.svg", + "_translations": { + "value": {} + }, + "condition": "@fields._app_theme == \"professional\"", "hidden": false, "type": "set_variable", - "_nested_name": "workshop_activity.content_box.lottie_src" + "_nested_name": "workshop_activity.content_box.image_src", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields._app_theme == \"professional\"", + "matchedExpression": "@fields._app_theme", + "type": "fields", + "fieldName": "_app_theme" + } + ] + }, + "_dynamicDependencies": { + "@fields._app_theme": [ + "condition" + ] + } }, { "name": "audio_title", diff --git a/packages/app-data/sheets/template/relax_10_text.json b/packages/app-data/sheets/template/relax_10_text.json index 71da7f2514..6bdbe6ca38 100644 --- a/packages/app-data/sheets/template/relax_10_text.json +++ b/packages/app-data/sheets/template/relax_10_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "activity_text", - "value": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "value": "Close your eyes.\n\nNotice your connection with the ground beneath you. \nWhat parts of your body touch the ground? What parts of your body do not?  \nNotice where it feels warm and where it feels cool. \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_12_text.json b/packages/app-data/sheets/template/relax_12_text.json index d68455cd87..e120e71357 100644 --- a/packages/app-data/sheets/template/relax_12_text.json +++ b/packages/app-data/sheets/template/relax_12_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "activity_text", - "value": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "value": "Close your eyes.\n\nDo you every feel something so strongly that you want to run away from it?\n\nInstead of moving away from the feeling, let’s move towards it for a moment.\nIt is ok. Close your eyes if you feel comfortable. Take a deep breath.\n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose?\nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_16_text.json b/packages/app-data/sheets/template/relax_16_text.json index ced7e484bb..1a016bb779 100644 --- a/packages/app-data/sheets/template/relax_16_text.json +++ b/packages/app-data/sheets/template/relax_16_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "activity_text", - "value": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "value": "Let’s practice a calming trick that we call ‘Pause Power’.\n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle.\n\nTa-da! Pause Power!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_19_text.json b/packages/app-data/sheets/template/relax_19_text.json index adffe68f7e..13aa3e4d21 100644 --- a/packages/app-data/sheets/template/relax_19_text.json +++ b/packages/app-data/sheets/template/relax_19_text.json @@ -26,16 +26,9 @@ }, { "name": "outro_text", - "value": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "value": "Well done for taking a pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also take a pause with your children!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.outro_text" diff --git a/packages/app-data/sheets/template/relax_20_text.json b/packages/app-data/sheets/template/relax_20_text.json index 990ff11a19..bb9e050188 100644 --- a/packages/app-data/sheets/template/relax_20_text.json +++ b/packages/app-data/sheets/template/relax_20_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "activity_text", - "value": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "value": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hands hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let them swing sideways while you turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from your ankles - remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_21_text.json b/packages/app-data/sheets/template/relax_21_text.json index 4520d45611..04413ba036 100644 --- a/packages/app-data/sheets/template/relax_21_text.json +++ b/packages/app-data/sheets/template/relax_21_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "activity_text", - "value": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "value": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if possible)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite TV show\n\nPick one and do it today!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_23_text.json b/packages/app-data/sheets/template/relax_23_text.json index eecbd24ca5..68d9e69465 100644 --- a/packages/app-data/sheets/template/relax_23_text.json +++ b/packages/app-data/sheets/template/relax_23_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "activity_text", - "value": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "value": "Think about what makes you angry. When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_24_text.json b/packages/app-data/sheets/template/relax_24_text.json index 1dfb7905f4..fc7d760db9 100644 --- a/packages/app-data/sheets/template/relax_24_text.json +++ b/packages/app-data/sheets/template/relax_24_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "activity_text", - "value": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "value": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have a safe outdoor space, go outside. You can get through this!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_2_text.json b/packages/app-data/sheets/template/relax_2_text.json index 06f3bfa755..378c3e9387 100644 --- a/packages/app-data/sheets/template/relax_2_text.json +++ b/packages/app-data/sheets/template/relax_2_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "activity_text", - "value": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "value": "Close your eyes.\n\nLet's use the magic power of three to stay present and relax.\n\nName three sounds you can hear right now.\nName three smells you can smell right now.\nName your three favourite foods.\n\nWhat are three things you can be grateful for right now? They do not have to be big.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_5_text.json b/packages/app-data/sheets/template/relax_5_text.json index b034553fc5..b17c5ff279 100644 --- a/packages/app-data/sheets/template/relax_5_text.json +++ b/packages/app-data/sheets/template/relax_5_text.json @@ -27,16 +27,9 @@ }, { "name": "outro_text", - "value": "When you are ready open your eyes again. You are in control!", + "value": "When you are ready, open your eyes again. You are in control!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.outro_text" diff --git a/packages/app-data/sheets/template/relax_7_text.json b/packages/app-data/sheets/template/relax_7_text.json index 5bbcbbacf5..05ce438a69 100644 --- a/packages/app-data/sheets/template/relax_7_text.json +++ b/packages/app-data/sheets/template/relax_7_text.json @@ -11,15 +11,10 @@ "rows": [ { "name": "activity_text", - "value": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "value": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breathe in and out slowly 5 times. \n\nThen try responding in a calmer way.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", diff --git a/packages/app-data/sheets/template/relax_8_text.json b/packages/app-data/sheets/template/relax_8_text.json index c92fefecc2..378524e7dc 100644 --- a/packages/app-data/sheets/template/relax_8_text.json +++ b/packages/app-data/sheets/template/relax_8_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "activity_text", - "value": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "value": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey do not have to be big. Sometimes the small things in life count the most!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/relax_9_text.json b/packages/app-data/sheets/template/relax_9_text.json index 57207538d3..fb1cf8ecb8 100644 --- a/packages/app-data/sheets/template/relax_9_text.json +++ b/packages/app-data/sheets/template/relax_9_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "activity_text", - "value": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "value": "Here is an activity to relax your body: \n\nSit comfortably and close your eyes if you can. \nImagine a golden ring scanning your body from your feet to your head.  \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?  \nFocus on those areas for a moment. Breathe into the area and, when you breathe out, try to let go of any tension or pain.  \nDo this for a few breaths.  \n\nOpen your eyes. How does your body feel now?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "relax_text.activity_text" diff --git a/packages/app-data/sheets/template/settings_customise.json b/packages/app-data/sheets/template/settings_customise.json new file mode 100644 index 0000000000..cc1e899868 --- /dev/null +++ b/packages/app-data/sheets/template/settings_customise.json @@ -0,0 +1,71 @@ +{ + "flow_type": "template", + "flow_name": "settings_customise", + "status": "released", + "rows": [ + { + "type": "title", + "name": "title", + "value": "@global.customise", + "_translations": { + "value": {} + }, + "_nested_name": "title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.customise", + "matchedExpression": "@global.customise", + "type": "global", + "fieldName": "customise" + } + ] + }, + "_dynamicDependencies": { + "@global.customise": [ + "value" + ] + } + }, + { + "type": "text", + "name": "language", + "value": "Choose your language", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "language" + }, + { + "type": "template", + "name": "language_select", + "value": "language_select", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + } + ], + "rows": [], + "_nested_name": "language_select" + }, + { + "type": "template", + "name": "user_info", + "value": "user_info", + "rows": [], + "_nested_name": "user_info" + } + ], + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/setup_and_survey_stepper.json b/packages/app-data/sheets/template/setup_and_survey_stepper.json index fd4460c048..0abe8b12df 100644 --- a/packages/app-data/sheets/template/setup_and_survey_stepper.json +++ b/packages/app-data/sheets/template/setup_and_survey_stepper.json @@ -3,6 +3,15 @@ "flow_name": "setup_and_survey_stepper", "status": "released", "rows": [ + { + "type": "set_field", + "name": "current_survey_name", + "value": "survey_welcome", + "_translations": { + "value": {} + }, + "_nested_name": "current_survey_name" + }, { "type": "template", "name": "survey_stepper_actions", @@ -59,16 +68,18 @@ "workshop_setup_q_1", "workshop_setup_q_2", "workshop_setup_q_3", - "survey_welcome_intro", - "survey_welcome_q_1", - "survey_welcome_q_2", - "survey_welcome_q_3", - "survey_welcome_q_4", - "survey_welcome_q_5", - "survey_welcome_q_6", - "survey_welcome_q_7", - "survey_welcome_q_8", - "survey_welcome_q_9", + "survey_intro", + "survey_question_ppf", + "survey_question_ppp", + "survey_question_pst", + "survey_question_pde", + "survey_question_cme", + "survey_question_fin", + "survey_question_orp", + "survey_question_cmp", + "survey_question_psu", + "survey_question_pcsap", + "survey_question_ris", "survey_welcome_outro" ], "exclude_from_translation": true, diff --git a/packages/app-data/sheets/template/sign_in.json b/packages/app-data/sheets/template/sign_in.json new file mode 100644 index 0000000000..3de8262fd7 --- /dev/null +++ b/packages/app-data/sheets/template/sign_in.json @@ -0,0 +1,48 @@ +{ + "flow_type": "template", + "flow_name": "sign_in", + "status": "released", + "rows": [ + { + "type": "text", + "value": "Please sign in with your Google account to use the app.", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "name": "text", + "_nested_name": "text" + }, + { + "type": "button", + "value": "Sign in with Google", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "action_list": [ + { + "trigger": "click", + "action_id": "google_auth", + "args": [], + "_raw": "click | google_auth", + "_cleaned": "click | google_auth" + } + ], + "parameter_list": { + "style": "flexible" + }, + "name": "button", + "_nested_name": "button" + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/skin_select.json b/packages/app-data/sheets/template/skin_select.json new file mode 100644 index 0000000000..5d3b8b22ad --- /dev/null +++ b/packages/app-data/sheets/template/skin_select.json @@ -0,0 +1,521 @@ +{ + "flow_type": "template", + "flow_name": "skin_select", + "status": "released", + "rows": [ + { + "type": "title", + "value": "App Skin", + "_translations": { + "value": { + "tz_sw": true + } + }, + "name": "title", + "_nested_name": "title" + }, + { + "name": "reply_entered", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "reply_entered" + }, + { + "type": "display_group", + "name": "not_first_access", + "condition": "@fields.accessed_skin_select", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "text_box_placeholder", + "value": "@global.tap_and_type", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "not_first_access.text_box_placeholder", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.tap_and_type", + "matchedExpression": "@global.tap_and_type", + "type": "global", + "fieldName": "tap_and_type" + } + ] + }, + "_dynamicDependencies": { + "@global.tap_and_type": [ + "value" + ] + } + }, + { + "type": "text", + "name": "text_1", + "value": "To get access to changing the app skin, enter your developer code in the box below and press @global.submit_button.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "_nested_name": "not_first_access.text_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "To get access to changing the app skin, enter your developer code in the box below and press @global.submit_button.", + "matchedExpression": "@global.submit_button", + "type": "global", + "fieldName": "submit_button" + } + ] + }, + "_dynamicDependencies": { + "@global.submit_button": [ + "value" + ] + } + }, + { + "type": "text_box", + "name": "text_box", + "exclude_from_translation": true, + "parameter_list": { + "placeholder": "@local.text_box_placeholder" + }, + "_nested_name": "not_first_access.text_box", + "_dynamicFields": { + "parameter_list": { + "placeholder": [ + { + "fullExpression": "@local.text_box_placeholder", + "matchedExpression": "@local.text_box_placeholder", + "type": "local", + "fieldName": "text_box_placeholder" + } + ] + } + }, + "_dynamicDependencies": { + "@local.text_box_placeholder": [ + "parameter_list.placeholder" + ] + } + }, + { + "type": "button", + "name": "button_enter_code", + "value": "@global.submit_button", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_local", + "args": [ + "reply_entered", + true + ], + "_raw": "click | set_local:reply_entered:true", + "_cleaned": "click | set_local:reply_entered:true" + } + ], + "exclude_from_translation": true, + "_nested_name": "not_first_access.button_enter_code", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.submit_button", + "matchedExpression": "@global.submit_button", + "type": "global", + "fieldName": "submit_button" + } + ] + }, + "_dynamicDependencies": { + "@global.submit_button": [ + "value" + ] + } + } + ], + "_nested_name": "not_first_access", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.accessed_skin_select", + "matchedExpression": "@fields.accessed_skin_select", + "type": "fields", + "fieldName": "accessed_skin_select" + } + ] + }, + "_dynamicDependencies": { + "@fields.accessed_skin_select": [ + "condition" + ] + } + }, + { + "type": "text", + "name": "text_incorrect", + "value": "You have entered an incorrect code.", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "condition": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "_nested_name": "text_incorrect", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@local.reply_entered", + "type": "local", + "fieldName": "reply_entered" + }, + { + "fullExpression": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@global.dev_mode_code", + "type": "global", + "fieldName": "dev_mode_code" + }, + { + "fullExpression": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "@local.reply_entered && !(@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)", + "matchedExpression": "@global.test_mode_code", + "type": "global", + "fieldName": "test_mode_code" + } + ] + }, + "_dynamicDependencies": { + "@local.reply_entered": [ + "condition" + ], + "@local.text_box": [ + "condition", + "condition" + ], + "@global.dev_mode_code": [ + "condition" + ], + "@global.test_mode_code": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "dg_correct", + "condition": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "name": "workshop_skin_text", + "value": "Workshop", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "dg_correct.workshop_skin_text" + }, + { + "name": "module_skin_text", + "value": "Module", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "dg_correct.module_skin_text" + }, + { + "name": "skins_list", + "value": [ + "name: weekly_workshop | text: @local.workshop_skin_text", + "name: modular | text: @local.module_skin_text" + ], + "type": "set_variable", + "_nested_name": "dg_correct.skins_list", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "name: weekly_workshop | text: @local.workshop_skin_text", + "matchedExpression": "@local.workshop_skin_text", + "type": "local", + "fieldName": "workshop_skin_text" + } + ], + "1": [ + { + "fullExpression": "name: modular | text: @local.module_skin_text", + "matchedExpression": "@local.module_skin_text", + "type": "local", + "fieldName": "module_skin_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop_skin_text": [ + "value.0" + ], + "@local.module_skin_text": [ + "value.1" + ] + } + }, + { + "type": "radio_group", + "name": "skin_select", + "value": "@fields._app_skin", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "emit", + "args": [ + "set_skin", + "this.value" + ], + "_raw": "changed | emit: set_skin:@local.skin_select", + "_cleaned": "changed | emit: set_skin:@local.skin_select" + }, + { + "trigger": "changed", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "changed | emit: force_reload", + "_cleaned": "changed | emit: force_reload" + } + ], + "parameter_list": { + "answer_list": "@local.skins_list", + "options_per_row": "2" + }, + "_nested_name": "dg_correct.skin_select", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._app_skin", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" + } + ], + "action_list": { + "0": { + "_raw": [ + { + "fullExpression": "changed | emit: set_skin:@local.skin_select", + "matchedExpression": "@local.skin_select", + "type": "local", + "fieldName": "skin_select" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | emit: set_skin:@local.skin_select", + "matchedExpression": "@local.skin_select", + "type": "local", + "fieldName": "skin_select" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.skins_list", + "matchedExpression": "@local.skins_list", + "type": "local", + "fieldName": "skins_list" + } + ] + } + }, + "_dynamicDependencies": { + "@fields._app_skin": [ + "value" + ], + "@local.skin_select": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.skins_list": [ + "parameter_list.answer_list" + ] + } + } + ], + "_nested_name": "dg_correct", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "@local.reply_entered", + "type": "local", + "fieldName": "reply_entered" + }, + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "@global.dev_mode_code", + "type": "global", + "fieldName": "dev_mode_code" + }, + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + }, + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "@global.test_mode_code", + "type": "global", + "fieldName": "test_mode_code" + }, + { + "fullExpression": "(@local.reply_entered && (@local.text_box == @global.dev_mode_code || @local.text_box == @global.test_mode_code)) || !@fields.accessed_skin_select", + "matchedExpression": "!@fields.accessed_skin_select", + "type": "fields", + "fieldName": "accessed_skin_select" + } + ] + }, + "_dynamicDependencies": { + "@local.reply_entered": [ + "condition" + ], + "@local.text_box": [ + "condition", + "condition" + ], + "@global.dev_mode_code": [ + "condition" + ], + "@global.test_mode_code": [ + "condition" + ], + "!@fields.accessed_skin_select": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + }, + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "accessed_skin_select", + true + ], + "_raw": "completed | set_field: accessed_skin_select: TRUE", + "_cleaned": "completed | set_field: accessed_skin_select: TRUE" + } + ], + "condition": "!@fields.accessed_skin_select", + "rows": [ + { + "name": "display_back", + "value": false, + "type": "set_variable", + "_nested_name": "nav_buttons.display_back" + }, + { + "name": "button_completed", + "value": "@global.next_button", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.next_button", + "matchedExpression": "@global.next_button", + "type": "global", + "fieldName": "next_button" + } + ] + }, + "_dynamicDependencies": { + "@global.next_button": [ + "value" + ] + } + } + ], + "_nested_name": "nav_buttons", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.accessed_skin_select", + "matchedExpression": "!@fields.accessed_skin_select", + "type": "fields", + "fieldName": "accessed_skin_select" + } + ] + }, + "_dynamicDependencies": { + "!@fields.accessed_skin_select": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/splash_funders.json b/packages/app-data/sheets/template/splash_funders.json new file mode 100644 index 0000000000..13446e0d24 --- /dev/null +++ b/packages/app-data/sheets/template/splash_funders.json @@ -0,0 +1,217 @@ +{ + "flow_type": "template", + "flow_name": "splash_funders", + "status": "released", + "rows": [ + { + "type": "text", + "value": "@global.parent_app funded by", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "parameter_list": { + "style": "large center" + }, + "name": "text", + "_nested_name": "text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.parent_app funded by", + "matchedExpression": "@global.parent_app", + "type": "global", + "fieldName": "parent_app" + } + ] + }, + "_dynamicDependencies": { + "@global.parent_app": [ + "value" + ] + } + }, + { + "name": "funders_data", + "value": "@data.funders", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "funders_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.funders", + "matchedExpression": "@data.funders", + "type": "data", + "fieldName": "funders" + } + ] + }, + "_dynamicDependencies": { + "@data.funders": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "global_funders", + "parameter_list": { + "style": "two_columns_images grid-spacing-sm" + }, + "rows": [ + { + "type": "items", + "name": "loop_funders_image", + "value": "@local.funders_data", + "rows": [ + { + "type": "image", + "name": "@item.id", + "value": "@item.image_asset", + "_translations": { + "value": {} + }, + "condition": "@item.image_asset", + "_nested_name": "global_funders.loop_funders_image.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "condition": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "_nested_name": [ + { + "fullExpression": "global_funders.loop_funders_image.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.image_asset": [ + "value", + "condition" + ] + } + }, + { + "type": "subtitle", + "name": "@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "condition": "!@item.image_asset && @item.description", + "parameter_list": { + "style": "center tiny" + }, + "_nested_name": "global_funders.loop_funders_image.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "condition": [ + { + "fullExpression": "!@item.image_asset && @item.description", + "matchedExpression": "!@item.image_asset", + "type": "item", + "fieldName": "image_asset" + }, + { + "fullExpression": "!@item.image_asset && @item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "_nested_name": [ + { + "fullExpression": "global_funders.loop_funders_image.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value", + "condition" + ], + "!@item.image_asset": [ + "condition" + ] + } + } + ], + "_nested_name": "global_funders.loop_funders_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.funders_data", + "matchedExpression": "@local.funders_data", + "type": "local", + "fieldName": "funders_data" + } + ] + }, + "_dynamicDependencies": { + "@local.funders_data": [ + "value" + ] + } + } + ], + "_nested_name": "global_funders" + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/splash_partners_1.json b/packages/app-data/sheets/template/splash_partners_1.json new file mode 100644 index 0000000000..30959b7105 --- /dev/null +++ b/packages/app-data/sheets/template/splash_partners_1.json @@ -0,0 +1,443 @@ +{ + "flow_type": "template", + "flow_name": "splash_partners_1", + "status": "released", + "rows": [ + { + "type": "text", + "value": "Powered by Parenting for Lifelong Health and partners", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "parameter_list": { + "style": "large center" + }, + "name": "text", + "_nested_name": "text" + }, + { + "type": "display_group", + "name": "global_partners", + "parameter_list": { + "style": "two_columns_images grid-spacing-sm" + }, + "rows": [ + { + "type": "items", + "name": "loop_partners", + "value": "@data.partners", + "rows": [ + { + "type": "image", + "name": "@item.id", + "value": "@item.image_asset", + "_translations": { + "value": {} + }, + "condition": "@item.splash_page == 1", + "_nested_name": "global_partners.loop_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "condition": [ + { + "fullExpression": "@item.splash_page == 1", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "global_partners.loop_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.image_asset": [ + "value" + ], + "@item.splash_page": [ + "condition" + ] + } + }, + { + "type": "subtitle", + "name": "@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "condition": "!@item.image_asset && @item.description && @item.splash_page == 1", + "parameter_list": { + "style": "center tiny" + }, + "_nested_name": "global_partners.loop_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "condition": [ + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "!@item.image_asset", + "type": "item", + "fieldName": "image_asset" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "global_partners.loop_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value", + "condition" + ], + "!@item.image_asset": [ + "condition" + ], + "@item.splash_page": [ + "condition" + ] + } + } + ], + "_nested_name": "global_partners.loop_partners", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.partners", + "matchedExpression": "@data.partners", + "type": "data", + "fieldName": "partners" + } + ] + }, + "_dynamicDependencies": { + "@data.partners": [ + "value" + ] + } + } + ], + "_nested_name": "global_partners" + }, + { + "name": "deployment", + "value": "@fields._deployment_name", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "deployment", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._deployment_name", + "matchedExpression": "@fields._deployment_name", + "type": "fields", + "fieldName": "_deployment_name" + } + ] + }, + "_dynamicDependencies": { + "@fields._deployment_name": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "additional_deployment_partners", + "condition": "@local.deployment != \"plh_global\"", + "parameter_list": { + "style": "two_columns_images grid-spacing-sm" + }, + "rows": [ + { + "name": "partners_deployment", + "value": "partners_@local.deployment", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "additional_deployment_partners.partners_deployment", + "_dynamicFields": { + "value": [ + { + "fullExpression": "partners_@local.deployment", + "matchedExpression": "@local.deployment", + "type": "local", + "fieldName": "deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.deployment": [ + "value" + ] + } + }, + { + "name": "partners_deployment_data", + "value": "@data.@local.partners_deployment", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "additional_deployment_partners.partners_deployment_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.partners_deployment", + "matchedExpression": "@local.partners_deployment", + "type": "local", + "fieldName": "partners_deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.partners_deployment": [ + "value" + ] + } + }, + { + "type": "items", + "name": "loop_deployment_partners", + "value": "@local.partners_deployment_data", + "rows": [ + { + "type": "image", + "name": "@item.id", + "value": "@item.image_asset", + "_translations": { + "value": {} + }, + "condition": "@item.splash_page == 1", + "_nested_name": "additional_deployment_partners.loop_deployment_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "condition": [ + { + "fullExpression": "@item.splash_page == 1", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "additional_deployment_partners.loop_deployment_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.image_asset": [ + "value" + ], + "@item.splash_page": [ + "condition" + ] + } + }, + { + "type": "subtitle", + "name": "@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "condition": "!@item.image_asset && @item.description && @item.splash_page == 1", + "parameter_list": { + "style": "center tiny" + }, + "_nested_name": "additional_deployment_partners.loop_deployment_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "condition": [ + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "!@item.image_asset", + "type": "item", + "fieldName": "image_asset" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 1", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "additional_deployment_partners.loop_deployment_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value", + "condition" + ], + "!@item.image_asset": [ + "condition" + ], + "@item.splash_page": [ + "condition" + ] + } + } + ], + "_nested_name": "additional_deployment_partners.loop_deployment_partners", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.partners_deployment_data", + "matchedExpression": "@local.partners_deployment_data", + "type": "local", + "fieldName": "partners_deployment_data" + } + ] + }, + "_dynamicDependencies": { + "@local.partners_deployment_data": [ + "value" + ] + } + } + ], + "_nested_name": "additional_deployment_partners", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.deployment != \"plh_global\"", + "matchedExpression": "@local.deployment", + "type": "local", + "fieldName": "deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.deployment": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/splash_partners_2.json b/packages/app-data/sheets/template/splash_partners_2.json new file mode 100644 index 0000000000..856d496f0f --- /dev/null +++ b/packages/app-data/sheets/template/splash_partners_2.json @@ -0,0 +1,443 @@ +{ + "flow_type": "template", + "flow_name": "splash_partners_2", + "status": "released", + "rows": [ + { + "type": "text", + "value": "Powered by Parenting for Lifelong Health and partners", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "parameter_list": { + "style": "large center" + }, + "name": "text", + "_nested_name": "text" + }, + { + "type": "display_group", + "name": "global_partners", + "parameter_list": { + "style": "two_columns_images grid-spacing-sm" + }, + "rows": [ + { + "type": "items", + "name": "loop_partners", + "value": "@data.partners", + "rows": [ + { + "type": "image", + "name": "@item.id", + "value": "@item.image_asset", + "_translations": { + "value": {} + }, + "condition": "@item.splash_page == 2", + "_nested_name": "global_partners.loop_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "condition": [ + { + "fullExpression": "@item.splash_page == 2", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "global_partners.loop_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.image_asset": [ + "value" + ], + "@item.splash_page": [ + "condition" + ] + } + }, + { + "type": "subtitle", + "name": "@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "condition": "!@item.image_asset && @item.description && @item.splash_page == 2", + "parameter_list": { + "style": "center tiny" + }, + "_nested_name": "global_partners.loop_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "condition": [ + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "!@item.image_asset", + "type": "item", + "fieldName": "image_asset" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "global_partners.loop_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value", + "condition" + ], + "!@item.image_asset": [ + "condition" + ], + "@item.splash_page": [ + "condition" + ] + } + } + ], + "_nested_name": "global_partners.loop_partners", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.partners", + "matchedExpression": "@data.partners", + "type": "data", + "fieldName": "partners" + } + ] + }, + "_dynamicDependencies": { + "@data.partners": [ + "value" + ] + } + } + ], + "_nested_name": "global_partners" + }, + { + "name": "deployment", + "value": "@fields._deployment_name", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "deployment", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._deployment_name", + "matchedExpression": "@fields._deployment_name", + "type": "fields", + "fieldName": "_deployment_name" + } + ] + }, + "_dynamicDependencies": { + "@fields._deployment_name": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "additional_deployment_partners", + "condition": "@local.deployment != \"plh_global\"", + "parameter_list": { + "style": "two_columns_images grid-spacing-sm" + }, + "rows": [ + { + "name": "partners_deployment", + "value": "partners_@local.deployment", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "additional_deployment_partners.partners_deployment", + "_dynamicFields": { + "value": [ + { + "fullExpression": "partners_@local.deployment", + "matchedExpression": "@local.deployment", + "type": "local", + "fieldName": "deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.deployment": [ + "value" + ] + } + }, + { + "name": "partners_deployment_data", + "value": "@data.@local.partners_deployment", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "additional_deployment_partners.partners_deployment_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.partners_deployment", + "matchedExpression": "@local.partners_deployment", + "type": "local", + "fieldName": "partners_deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.partners_deployment": [ + "value" + ] + } + }, + { + "type": "items", + "name": "loop_deployment_partners", + "value": "@local.partners_deployment_data", + "rows": [ + { + "type": "image", + "name": "@item.id", + "value": "@item.image_asset", + "_translations": { + "value": {} + }, + "condition": "@item.splash_page == 2", + "_nested_name": "additional_deployment_partners.loop_deployment_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.image_asset", + "matchedExpression": "@item.image_asset", + "type": "item", + "fieldName": "image_asset" + } + ], + "condition": [ + { + "fullExpression": "@item.splash_page == 2", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "additional_deployment_partners.loop_deployment_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.image_asset": [ + "value" + ], + "@item.splash_page": [ + "condition" + ] + } + }, + { + "type": "subtitle", + "name": "@item.id", + "value": "@item.description", + "_translations": { + "value": {} + }, + "condition": "!@item.image_asset && @item.description && @item.splash_page == 2", + "parameter_list": { + "style": "center tiny" + }, + "_nested_name": "additional_deployment_partners.loop_deployment_partners.@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.description", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + } + ], + "condition": [ + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "!@item.image_asset", + "type": "item", + "fieldName": "image_asset" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "@item.description", + "type": "item", + "fieldName": "description" + }, + { + "fullExpression": "!@item.image_asset && @item.description && @item.splash_page == 2", + "matchedExpression": "@item.splash_page", + "type": "item", + "fieldName": "splash_page" + } + ], + "_nested_name": [ + { + "fullExpression": "additional_deployment_partners.loop_deployment_partners.@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.description": [ + "value", + "condition" + ], + "!@item.image_asset": [ + "condition" + ], + "@item.splash_page": [ + "condition" + ] + } + } + ], + "_nested_name": "additional_deployment_partners.loop_deployment_partners", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.partners_deployment_data", + "matchedExpression": "@local.partners_deployment_data", + "type": "local", + "fieldName": "partners_deployment_data" + } + ] + }, + "_dynamicDependencies": { + "@local.partners_deployment_data": [ + "value" + ] + } + } + ], + "_nested_name": "additional_deployment_partners", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.deployment != \"plh_global\"", + "matchedExpression": "@local.deployment", + "type": "local", + "fieldName": "deployment" + } + ] + }, + "_dynamicDependencies": { + "@local.deployment": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/splash_screens.json b/packages/app-data/sheets/template/splash_screens.json new file mode 100644 index 0000000000..6e8bb0c64b --- /dev/null +++ b/packages/app-data/sheets/template/splash_screens.json @@ -0,0 +1,278 @@ +{ + "flow_type": "template", + "flow_name": "splash_screens", + "status": "released", + "rows": [ + { + "name": "number", + "value": 200, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "number" + }, + { + "name": "skip_text", + "value": "Skip intro", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "skip_text" + }, + { + "type": "animated_slides", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "parameter_list": { + "skip_text": "@local.skip_text", + "style": "light" + }, + "rows": [ + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "display_group", + "parameter_list": { + "style": "centre_image" + }, + "rows": [ + { + "type": "image", + "name": "image_1", + "value": "plh_images/first_app_launch/frustrated.svg", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "animated_slides.animated_section.display_group.image_1" + } + ], + "name": "display_group", + "_nested_name": "animated_slides.animated_section.display_group" + }, + { + "type": "text", + "name": "slogan_1", + "value": "Bringing teenagers up is hard", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "parameter_list": { + "text_align": "center" + }, + "_nested_name": "animated_slides.animated_section.slogan_1" + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + }, + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "display_group", + "parameter_list": { + "style": "centre_image" + }, + "rows": [ + { + "type": "image", + "name": "image_2", + "value": "plh_images/first_app_launch/loving_parent.svg", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "animated_slides.animated_section.display_group.image_2" + } + ], + "name": "display_group", + "_nested_name": "animated_slides.animated_section.display_group" + }, + { + "type": "text", + "name": "slogan_2", + "value": "You are the best parent your teen could have", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "parameter_list": { + "style": "large center" + }, + "_nested_name": "animated_slides.animated_section.slogan_2" + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + }, + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "display_group", + "parameter_list": { + "style": "centre_image" + }, + "rows": [ + { + "type": "image", + "name": "image_3", + "value": "plh_images/first_app_launch/join_parents.svg", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "animated_slides.animated_section.display_group.image_3" + } + ], + "name": "display_group", + "_nested_name": "animated_slides.animated_section.display_group" + }, + { + "type": "text", + "name": "slogan_3", + "value": "Join the over @local.number million parents who have used our resources", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "large center" + }, + "_nested_name": "animated_slides.animated_section.slogan_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Join the over @local.number million parents who have used our resources", + "matchedExpression": "@local.number", + "type": "local", + "fieldName": "number" + } + ] + }, + "_dynamicDependencies": { + "@local.number": [ + "value" + ] + } + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + }, + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "template", + "name": "splash_partners_1", + "value": "splash_partners_1", + "rows": [], + "_nested_name": "animated_slides.animated_section.splash_partners_1" + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + }, + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "template", + "name": "splash_partners_2", + "value": "splash_partners_2", + "rows": [], + "_nested_name": "animated_slides.animated_section.splash_partners_2" + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + }, + { + "type": "animated_section", + "parameter_list": { + "duration": "4" + }, + "rows": [ + { + "type": "template", + "name": "splash_funders", + "value": "splash_funders", + "rows": [], + "_nested_name": "animated_slides.animated_section.splash_funders" + } + ], + "name": "animated_section", + "_nested_name": "animated_slides.animated_section" + } + ], + "name": "animated_slides", + "_nested_name": "animated_slides", + "_dynamicFields": { + "parameter_list": { + "skip_text": [ + { + "fullExpression": "@local.skip_text", + "matchedExpression": "@local.skip_text", + "type": "local", + "fieldName": "skip_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.skip_text": [ + "parameter_list.skip_text" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_app_launch.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_activity.json b/packages/app-data/sheets/template/survey_activity.json index ecd8f78660..8167359771 100644 --- a/packages/app-data/sheets/template/survey_activity.json +++ b/packages/app-data/sheets/template/survey_activity.json @@ -30,7 +30,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/survey_final_intro.json b/packages/app-data/sheets/template/survey_final_intro.json deleted file mode 100644 index 2ed43022d8..0000000000 --- a/packages/app-data/sheets/template/survey_final_intro.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_intro", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_intro", - "value": "survey_intro", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "survey_final_started", - true - ], - "_raw": "completed | set_field: survey_final_started: true", - "_cleaned": "completed | set_field: survey_final_started: true" - } - ], - "rows": [], - "_nested_name": "survey_intro" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_outro.json b/packages/app-data/sheets/template/survey_final_outro.json index 358a23bcaa..b5a50feb21 100644 --- a/packages/app-data/sheets/template/survey_final_outro.json +++ b/packages/app-data/sheets/template/survey_final_outro.json @@ -32,15 +32,6 @@ "type": "nested_properties", "name": "box_image", "rows": [ - { - "name": "image_src", - "value": "plh_images/characters/neighbour/neutral.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "survey_outro.box_image.image_src" - }, { "name": "text", "value": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", @@ -77,358 +68,6 @@ } ], "_nested_name": "survey_outro" - }, - { - "type": "set_field", - "name": "w_1on1_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_1 < @global.survey_t_1", - "exclude_from_translation": true, - "_nested_name": "w_1on1_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_1 < @global.survey_t_1", - "matchedExpression": "@fields.survey_final_a_1", - "type": "fields", - "fieldName": "survey_final_a_1" - }, - { - "fullExpression": "@fields.survey_final_a_1 < @global.survey_t_1", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_praise_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_2 < @global.survey_t_2", - "exclude_from_translation": true, - "_nested_name": "w_praise_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_2 < @global.survey_t_2", - "matchedExpression": "@fields.survey_final_a_2", - "type": "fields", - "fieldName": "survey_final_a_2" - }, - { - "fullExpression": "@fields.survey_final_a_2 < @global.survey_t_2", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_3 >= @global.survey_t_3", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_3 >= @global.survey_t_3", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "@fields.survey_final_a_3 >= @global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_4 >= @global.survey_t_4", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_4 >= @global.survey_t_4", - "matchedExpression": "@fields.survey_final_a_4", - "type": "fields", - "fieldName": "survey_final_a_4" - }, - { - "fullExpression": "@fields.survey_final_a_4 >= @global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_5_part_1>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@fields.survey_final_a_5_part_1", - "type": "fields", - "fieldName": "survey_final_a_5_part_1" - }, - { - "fullExpression": "@fields.survey_final_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_5_part_2>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@fields.survey_final_a_5_part_2", - "type": "fields", - "fieldName": "survey_final_a_5_part_2" - }, - { - "fullExpression": "@fields.survey_final_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_5_part_2": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_6 >= @global.survey_t_6", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_6 >= @global.survey_t_6", - "matchedExpression": "@fields.survey_final_a_6", - "type": "fields", - "fieldName": "survey_final_a_6" - }, - { - "fullExpression": "@fields.survey_final_a_6 >= @global.survey_t_6", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_7_part_1<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@fields.survey_final_a_7_part_1", - "type": "fields", - "fieldName": "survey_final_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_7_part_3<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_final_a_7_part_3", - "type": "fields", - "fieldName": "survey_final_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_7_part_3": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_rules_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_rules_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_final_a_8", - "type": "fields", - "fieldName": "survey_final_a_8" - }, - { - "fullExpression": "@fields.survey_final_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_final_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_final_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_final_a_8", - "type": "fields", - "fieldName": "survey_final_a_8" - }, - { - "fullExpression": "@fields.survey_final_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_final_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } } ], "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" diff --git a/packages/app-data/sheets/template/survey_final_q_1.json b/packages/app-data/sheets/template/survey_final_q_1.json deleted file mode 100644 index cb51c11716..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_1.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_1", - "value": "survey_q_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - }, - { - "fullExpression": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "matchedExpression": "@data.workshop.w_1on1.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@data.workshop.w_1on1.in_text_title": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.unlock_less" - }, - { - "name": "reply_greater_equal", - "value": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "matchedExpression": "@data.workshop.w_1on1.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.in_text_title": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_1.box_slider" - } - ], - "_nested_name": "survey_q_1" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_2.json b/packages/app-data/sheets/template/survey_final_q_2.json deleted file mode 100644 index 00215d7010..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_2.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_2", - "value": "survey_q_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "matchedExpression": "@data.workshop.w_praise.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@data.workshop.w_praise.in_text_title": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.unlock_less" - }, - { - "name": "reply_greater_equal", - "value": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "matchedExpression": "@data.workshop.w_praise.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_praise.in_text_title": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_2.box_slider" - } - ], - "_nested_name": "survey_q_2" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_3.json b/packages/app-data/sheets/template/survey_final_q_3.json deleted file mode 100644 index 07c0a1f37c..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_3.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_3", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_3", - "value": "survey_q_3", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.slider_final" - }, - { - "name": "reply_zero", - "value": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_zero" - }, - { - "name": "reply_less", - "value": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_less" - }, - { - "name": "reply_greater_equal", - "value": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - }, - { - "fullExpression": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.unlock_greater_equal" - } - ], - "_nested_name": "survey_q_3.box_slider" - } - ], - "_nested_name": "survey_q_3" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_4.json b/packages/app-data/sheets/template/survey_final_q_4.json deleted file mode 100644 index 6043b0e351..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_4.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_4", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_4", - "value": "survey_q_4", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_4_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_4_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_less" - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_final_a_3>=@global.survey_t_3)", - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - }, - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_final_a_3>=@global.survey_t_3)", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_3>=@global.survey_t_3)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_final_a_3>=@global.survey_t_3", - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.unlock_greater_equal" - } - ], - "_nested_name": "survey_q_4.box_slider" - } - ], - "_nested_name": "survey_q_4" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_5.json b/packages/app-data/sheets/template/survey_final_q_5.json deleted file mode 100644 index 22354b8230..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_5.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_5", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_5", - "value": "survey_q_5", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_3_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_final_a_5_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_final_a_5_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_1_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_final_a_5_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_final_a_5_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_2_final" - }, - { - "name": "reply_less", - "value": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.workshop.w_money.in_text_title", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_money.in_text_title": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.workshop.w_money.in_text_title", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_money.in_text_title": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.unlock_greater_equal" - } - ], - "_nested_name": "survey_q_5.box_multi_3_temp" - } - ], - "_nested_name": "survey_q_5" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_6.json b/packages/app-data/sheets/template/survey_final_q_6.json deleted file mode 100644 index f72c901566..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_6.json +++ /dev/null @@ -1,316 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_6", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_6", - "value": "survey_q_6", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_6_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_6_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.slider_final" - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - }, - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4", - "matchedExpression": "@fields.survey_final_a_4", - "type": "fields", - "fieldName": "survey_final_a_4" - }, - { - "fullExpression": "@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_final_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_final_a_4", - "type": "fields", - "fieldName": "survey_final_a_4" - }, - { - "fullExpression": "@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ], - "@fields.survey_final_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_final_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_final_a_4", - "type": "fields", - "fieldName": "survey_final_a_4" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_final_a_3", - "type": "fields", - "fieldName": "survey_final_a_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_final_a_4", - "type": "fields", - "fieldName": "survey_final_a_4" - }, - { - "fullExpression": "!(@fields.survey_final_a_3<@global.survey_t_3 && @fields.survey_final_a_4<@global.survey_t_4) && !(@fields.survey_final_a_3>=@global.survey_t_3 && @fields.survey_final_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_3": [ - "condition", - "condition" - ], - "@global.survey_t_3": [ - "condition", - "condition" - ], - "@fields.survey_final_a_4": [ - "condition", - "condition" - ], - "@global.survey_t_4": [ - "condition", - "condition" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.unlock_greater_equal" - } - ], - "_nested_name": "survey_q_6.box_slider" - } - ], - "_nested_name": "survey_q_6" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_7.json b/packages/app-data/sheets/template/survey_final_q_7.json deleted file mode 100644 index d2dfa758d3..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_7.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_7", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_7", - "value": "survey_q_7", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_4_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_final_a_7_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_final_a_7_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_1_final" - }, - { - "name": "radio_group_tracker", - "value": "survey_final_a_7_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.radio_group_tracker" - }, - { - "name": "radio_group_final", - "value": "survey_final_a_7_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.radio_group_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_final_a_7_part_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_final_a_7_part_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_2_final" - }, - { - "name": "reply_less_1", - "value": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_less_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - }, - { - "fullExpression": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "unlock_less_1", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.unlock_less_1" - }, - { - "name": "reply_less_2", - "value": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_less_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - }, - { - "fullExpression": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "unlock_less_2", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.unlock_less_2" - }, - { - "name": "reply_greater_equal_2", - "value": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_greater_equal_2" - } - ], - "_nested_name": "survey_q_7.box_multi_4_temp" - } - ], - "_nested_name": "survey_q_7" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_8.json b/packages/app-data/sheets/template/survey_final_q_8.json deleted file mode 100644 index c486be4ab2..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_8.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_8", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_8", - "value": "survey_q_8", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_8_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_8_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7)", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_final_a_7_part_1", - "type": "fields", - "fieldName": "survey_final_a_7_part_1" - }, - { - "fullExpression": "!(@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_final_a_7_part_3", - "type": "fields", - "fieldName": "survey_final_a_7_part_3" - }, - { - "fullExpression": "!(@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_final_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "reply_less", - "value": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_final_a_7_part_1", - "type": "fields", - "fieldName": "survey_final_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_final_a_7_part_3", - "type": "fields", - "fieldName": "survey_final_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_final_a_7_part_1<@global.survey_t_7 || @fields.survey_final_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_final_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_final_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.unlock_less" - }, - { - "name": "reply_greater_equal", - "value": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "matchedExpression": "@data.workshop.w_safe.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe.in_text_title": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_8.box_slider" - } - ], - "_nested_name": "survey_q_8" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_q_9.json b/packages/app-data/sheets/template/survey_final_q_9.json deleted file mode 100644 index 0f5790b3a0..0000000000 --- a/packages/app-data/sheets/template/survey_final_q_9.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_final_q_9", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_9", - "value": "survey_q_9", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_final_a_9_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_9.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_final_a_9_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_9.box_slider.slider_final" - } - ], - "_nested_name": "survey_q_9.box_slider" - } - ], - "_nested_name": "survey_q_9" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_final.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_final_stepper.json b/packages/app-data/sheets/template/survey_final_stepper.json index 757dc5e53b..c90e8670e6 100644 --- a/packages/app-data/sheets/template/survey_final_stepper.json +++ b/packages/app-data/sheets/template/survey_final_stepper.json @@ -3,6 +3,21 @@ "flow_name": "survey_final_stepper", "status": "released", "rows": [ + { + "type": "set_field", + "name": "survey_final_started", + "value": true, + "_nested_name": "survey_final_started" + }, + { + "type": "set_field", + "name": "current_survey_name", + "value": "survey_final", + "_translations": { + "value": {} + }, + "_nested_name": "current_survey_name" + }, { "type": "template", "name": "survey_stepper_actions", @@ -45,16 +60,19 @@ { "name": "nav_template_list", "value": [ - "survey_final_intro", - "survey_final_q_1", - "survey_final_q_2", - "survey_final_q_3", - "survey_final_q_4", - "survey_final_q_5", - "survey_final_q_6", - "survey_final_q_7", - "survey_final_q_8", - "survey_final_q_9", + "survey_intro", + "demographics_teen_age", + "survey_question_ppf", + "survey_question_ppp", + "survey_question_pst", + "survey_question_pde", + "survey_question_cme", + "survey_question_fin", + "survey_question_orp", + "survey_question_cmp", + "survey_question_psu", + "survey_question_pcsap", + "survey_question_ris", "survey_final_outro" ], "exclude_from_translation": true, diff --git a/packages/app-data/sheets/template/survey_outro.json b/packages/app-data/sheets/template/survey_outro.json index 66e30ba7c6..329280554e 100644 --- a/packages/app-data/sheets/template/survey_outro.json +++ b/packages/app-data/sheets/template/survey_outro.json @@ -47,6 +47,10 @@ }, { "name": "image_src", + "value": "plh_images/characters/neighbour/neutral.svg", + "_translations": { + "value": {} + }, "style_list": [ "max-height: 300px" ], diff --git a/packages/app-data/sheets/template/survey_q_1.json b/packages/app-data/sheets/template/survey_q_1.json deleted file mode 100644 index f56a145694..0000000000 --- a/packages/app-data/sheets/template/survey_q_1.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "text", - "value": "It is hard to find time to have fun with your teenager.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_1", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_1", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_1": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "value": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_1on1.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal" - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_2.json b/packages/app-data/sheets/template/survey_q_2.json deleted file mode 100644 index 45c6fe9ff2..0000000000 --- a/packages/app-data/sheets/template/survey_q_2.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "image_src", - "value": "plh_images/survey/welcome/guide_1_frustrated.svg", - "_translations": { - "value": {} - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "box_slider.image_src" - }, - { - "name": "text", - "value": "In our busy lives it’s hard to focus on the positive.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past week have you praised your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_2", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_2", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_2": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "value": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_praise.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_praise.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal" - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_3.json b/packages/app-data/sheets/template/survey_q_3.json deleted file mode 100644 index 6fcf36cdf8..0000000000 --- a/packages/app-data/sheets/template/survey_q_3.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_3", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "less_includes_zero", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "box_slider.less_includes_zero" - }, - { - "name": "text", - "value": "This is a very stressful time for families.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_3", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_3": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less" - }, - { - "name": "unlock_greater_equal", - "value": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_stress.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_4.json b/packages/app-data/sheets/template/survey_q_4.json deleted file mode 100644 index d9795168cd..0000000000 --- a/packages/app-data/sheets/template/survey_q_4.json +++ /dev/null @@ -1,164 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_4", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "image_src", - "value": "plh_images/survey/welcome/guide_2_argument.svg", - "_translations": { - "value": {} - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "box_slider.image_src" - }, - { - "name": "text", - "value": "Sometimes our children make us really upset.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past week did you shout, scream or yell at your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_4", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_4": [ - "value" - ] - } - }, - { - "name": "reply_less", - "value": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.reply_less" - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less" - }, - { - "name": "unlock_greater_equal", - "value": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_stress.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_5.json b/packages/app-data/sheets/template/survey_q_5.json deleted file mode 100644 index dda61b150c..0000000000 --- a/packages/app-data/sheets/template/survey_q_5.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_5", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_multi_3_temp", - "value": "box_multi_3_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "text", - "value": "Money is one of the biggest stresses for families now.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_3_temp.text" - }, - { - "name": "question_text_1", - "value": "How many days in the past week have you worried or felt anxious about money?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_3_temp.question_text_1" - }, - { - "name": "question_text_2", - "value": "How many days in the past month (30 days) did you run out of money to pay for food?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_3_temp.question_text_2" - }, - { - "name": "threshold", - "value": "@global.survey_t_5", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_multi_3_temp.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_5": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "value": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_3_temp.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_money.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_money.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - } - ], - "_nested_name": "box_multi_3_temp" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_6.json b/packages/app-data/sheets/template/survey_q_6.json deleted file mode 100644 index d8a58f10ff..0000000000 --- a/packages/app-data/sheets/template/survey_q_6.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_6", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "text", - "value": "It is so stressful when children misbehave.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_6", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_6", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_6": [ - "value" - ] - } - }, - { - "name": "reply_less", - "value": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.reply_less" - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less" - }, - { - "name": "unlock_greater_equal", - "value": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_stress.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_7.json b/packages/app-data/sheets/template/survey_q_7.json deleted file mode 100644 index 70822e5009..0000000000 --- a/packages/app-data/sheets/template/survey_q_7.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_7", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_multi_4_temp", - "value": "box_multi_4_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "image_src", - "value": "plh_images/survey/welcome/guide_1_nervous.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.image_src" - }, - { - "name": "threshold", - "value": "@global.survey_t_7", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_7": [ - "value" - ] - } - }, - { - "name": "text", - "value": "It’s hard to keep track of your teenagers when they are becoming independent.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.text" - }, - { - "name": "question_text", - "value": "How many days in the past week did you know what your teen was doing and who they were with?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.question_text" - }, - { - "name": "unlock_less_1", - "value": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.unlock_less_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_safe.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - }, - { - "name": "reply_greater_equal_1", - "value": "This is good to hear.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.reply_greater_equal_1" - }, - { - "name": "question_greater_equal_1", - "value": "Were you in lockdown this week?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.question_greater_equal_1" - }, - { - "name": "reply_no", - "value": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.reply_no" - }, - { - "name": "question_yes", - "value": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.question_yes" - }, - { - "name": "unlock_less_2", - "value": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_multi_4_temp.unlock_less_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_safe.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ] - } - } - ], - "_nested_name": "box_multi_4_temp" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_8.json b/packages/app-data/sheets/template/survey_q_8.json deleted file mode 100644 index 080ac951fa..0000000000 --- a/packages/app-data/sheets/template/survey_q_8.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_8", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_month_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "text", - "value": "We all want to keep our children safe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "example_text", - "value": "This could be when they are going out with friends, or talking about the websites they use.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "box_slider.example_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_8", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_8": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal" - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_q_9.json b/packages/app-data/sheets/template/survey_q_9.json deleted file mode 100644 index 0c0ad6d40e..0000000000 --- a/packages/app-data/sheets/template/survey_q_9.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_q_9", - "status": "released", - "rows": [ - { - "type": "template", - "name": "box_slider", - "value": "box_slider_week_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "image_src", - "value": "plh_images/survey/welcome/guide_2_worried.svg", - "_translations": { - "value": {} - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "box_slider.image_src" - }, - { - "name": "text", - "value": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.text" - }, - { - "name": "question_text", - "value": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.question_text" - }, - { - "name": "threshold", - "value": "@global.survey_t_9", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "box_slider.threshold", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.survey_t_9", - "matchedExpression": "@global.survey_t_9", - "type": "global", - "fieldName": "survey_t_9" - } - ] - }, - "_dynamicDependencies": { - "@global.survey_t_9": [ - "value" - ] - } - }, - { - "name": "reply_less", - "value": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ] - } - }, - { - "name": "unlock_less", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_less" - }, - { - "name": "reply_greater_equal", - "value": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "type": "set_variable", - "_nested_name": "box_slider.unlock_greater_equal" - } - ], - "_nested_name": "box_slider" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_cme.json b/packages/app-data/sheets/template/survey_question_cme.json new file mode 100644 index 0000000000..edd56c170e --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_cme.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_cme", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "cme", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_cmp.json b/packages/app-data/sheets/template/survey_question_cmp.json new file mode 100644 index 0000000000..e65d10b2e7 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_cmp.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_cmp", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "cmp", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_fin.json b/packages/app-data/sheets/template/survey_question_fin.json new file mode 100644 index 0000000000..7569da7d41 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_fin.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_fin", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "fin", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_orp.json b/packages/app-data/sheets/template/survey_question_orp.json new file mode 100644 index 0000000000..f4c90f18b7 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_orp.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_orp", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "orp", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_pcsap.json b/packages/app-data/sheets/template/survey_question_pcsap.json new file mode 100644 index 0000000000..336c0ebb76 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_pcsap.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_pcsap", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "pcsap", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_pde.json b/packages/app-data/sheets/template/survey_question_pde.json new file mode 100644 index 0000000000..d49c095e25 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_pde.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_pde", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "pde", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_ppf.json b/packages/app-data/sheets/template/survey_question_ppf.json new file mode 100644 index 0000000000..5335888bd7 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_ppf.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_ppf", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "ppf", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_ppp.json b/packages/app-data/sheets/template/survey_question_ppp.json new file mode 100644 index 0000000000..dfa2d55f65 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_ppp.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_ppp", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "ppp", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_pst.json b/packages/app-data/sheets/template/survey_question_pst.json new file mode 100644 index 0000000000..047da1ff35 --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_pst.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_pst", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "pst", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_psu.json b/packages/app-data/sheets/template/survey_question_psu.json new file mode 100644 index 0000000000..00c8f0145a --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_psu.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_psu", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "psu", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_question_ris.json b/packages/app-data/sheets/template/survey_question_ris.json new file mode 100644 index 0000000000..5a2457f63b --- /dev/null +++ b/packages/app-data/sheets/template/survey_question_ris.json @@ -0,0 +1,64 @@ +{ + "flow_type": "template", + "flow_name": "survey_question_ris", + "status": "released", + "rows": [ + { + "type": "template", + "name": "box_survey_question", + "value": "box_survey_question", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "server_sync" + ], + "_raw": "completed | emit: server_sync", + "_cleaned": "completed | emit: server_sync" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "server_sync" + ], + "_raw": "uncompleted | emit: server_sync", + "_cleaned": "uncompleted | emit: server_sync" + } + ], + "rows": [ + { + "name": "question_group_id", + "value": "ris", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "box_survey_question.question_group_id" + } + ], + "_nested_name": "box_survey_question" + } + ], + "_xlsxPath": "global/top_templates/survey_templates/survey.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_warning_no_teens.json b/packages/app-data/sheets/template/survey_warning_no_teens.json index 0bf1d3ed23..67695bbe6e 100644 --- a/packages/app-data/sheets/template/survey_warning_no_teens.json +++ b/packages/app-data/sheets/template/survey_warning_no_teens.json @@ -26,23 +26,16 @@ }, { "name": "text", - "value": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "value": "This app focuses on families with teenagers aged @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "survey_warning.text", "_dynamicFields": { "value": [ { - "fullExpression": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "fullExpression": "This app focuses on families with teenagers aged @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", "matchedExpression": "@global.teen_age_bracket", "type": "global", "fieldName": "teen_age_bracket" diff --git a/packages/app-data/sheets/template/survey_welcome_intro.json b/packages/app-data/sheets/template/survey_welcome_intro.json deleted file mode 100644 index 2ba8b197b2..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_intro.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_intro", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_intro", - "value": "survey_intro", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "survey_welcome_started", - true - ], - "_raw": "completed | set_field: survey_welcome_started: true", - "_cleaned": "completed | set_field: survey_welcome_started: true" - } - ], - "rows": [], - "_nested_name": "survey_intro" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_outro.json b/packages/app-data/sheets/template/survey_welcome_outro.json index aa3f6d325a..29f2f639c4 100644 --- a/packages/app-data/sheets/template/survey_welcome_outro.json +++ b/packages/app-data/sheets/template/survey_welcome_outro.json @@ -25,16 +25,6 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "no_mail", - true - ], - "_raw": "completed | set_field:no_mail:true", - "_cleaned": "completed | set_field:no_mail:true" } ], "rows": [ @@ -64,7 +54,6 @@ "za_zu": true } }, - "condition": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", "type": "set_variable", "_nested_name": "survey_outro.box_image.text", "_dynamicFields": { @@ -75,416 +64,11 @@ "type": "data", "fieldName": "parent_centre" } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_1", - "type": "fields", - "fieldName": "survey_welcome_a_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_2", - "type": "fields", - "fieldName": "survey_welcome_a_2" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_2" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_6", - "type": "fields", - "fieldName": "survey_welcome_a_6" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } ] }, "_dynamicDependencies": { "@data.parent_centre.my_tips.location_text": [ "value" - ], - "@fields.survey_welcome_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ], - "@fields.survey_welcome_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ], - "@fields.survey_welcome_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_5_part_2": [ - "condition" - ], - "@fields.survey_welcome_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ], - "@fields.survey_welcome_a_8": [ - "condition", - "condition" - ], - "@global.survey_t_8": [ - "condition", - "condition" - ] - } - }, - { - "name": "text", - "value": "You have just unlocked the first workshop!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "type": "set_variable", - "_nested_name": "survey_outro.box_image.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_1", - "type": "fields", - "fieldName": "survey_welcome_a_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_2", - "type": "fields", - "fieldName": "survey_welcome_a_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_6", - "type": "fields", - "fieldName": "survey_welcome_a_6" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_1 < @global.survey_t_1 ||@fields.survey_welcome_a_2 < @global.survey_t_2 || @fields.survey_welcome_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_a_8 <@global.survey_t_8 ||@fields.survey_welcome_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ], - "@fields.survey_welcome_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ], - "@fields.survey_welcome_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_5_part_2": [ - "condition" - ], - "@fields.survey_welcome_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ], - "@fields.survey_welcome_a_8": [ - "condition", - "condition" - ], - "@global.survey_t_8": [ - "condition", - "condition" ] } } @@ -493,365 +77,6 @@ } ], "_nested_name": "survey_outro" - }, - { - "type": "set_field", - "name": "w_1on1_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_1 < @global.survey_t_1", - "exclude_from_translation": true, - "_nested_name": "w_1on1_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1", - "matchedExpression": "@fields.survey_welcome_a_1", - "type": "fields", - "fieldName": "survey_welcome_a_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_1 < @global.survey_t_1", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_praise_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_2 < @global.survey_t_2", - "exclude_from_translation": true, - "_nested_name": "w_praise_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_2 < @global.survey_t_2", - "matchedExpression": "@fields.survey_welcome_a_2", - "type": "fields", - "fieldName": "survey_welcome_a_2" - }, - { - "fullExpression": "@fields.survey_welcome_a_2 < @global.survey_t_2", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_3 >= @global.survey_t_3", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3 >= @global.survey_t_3", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3 >= @global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_4 >= @global.survey_t_4", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_4 >= @global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_4 >= @global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_5_part_1>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@fields.survey_welcome_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_5_part_2>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@fields.survey_welcome_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_a_5_part_2" - }, - { - "fullExpression": "@fields.survey_welcome_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_5_part_2": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_6 >= @global.survey_t_6", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_6 >= @global.survey_t_6", - "matchedExpression": "@fields.survey_welcome_a_6", - "type": "fields", - "fieldName": "survey_welcome_a_6" - }, - { - "fullExpression": "@fields.survey_welcome_a_6 >= @global.survey_t_6", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_rules_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_rules_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_a_8", - "type": "fields", - "fieldName": "survey_welcome_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "no_mail", - "value": true, - "exclude_from_translation": true, - "_nested_name": "no_mail" } ], "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" diff --git a/packages/app-data/sheets/template/survey_welcome_q_1.json b/packages/app-data/sheets/template/survey_welcome_q_1.json deleted file mode 100644 index f3a9c22101..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_1.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_1", - "value": "survey_q_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - }, - { - "fullExpression": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "matchedExpression": "@data.workshop.w_1on1.title", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@data.workshop.w_1on1.title": [ - "value" - ], - "@global.weekly_workshop": [ - "value" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_1.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "matchedExpression": "@global.weekly_workshop", - "type": "global", - "fieldName": "weekly_workshop" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshop": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_1.box_slider" - } - ], - "_nested_name": "survey_q_1" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_2.json b/packages/app-data/sheets/template/survey_welcome_q_2.json deleted file mode 100644 index 54026c8878..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_2.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_2", - "value": "survey_q_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "matchedExpression": "@data.workshop.w_praise.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@data.workshop.w_praise.in_text_title": [ - "value" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_2.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "matchedExpression": "@data.workshop.w_praise.in_text_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_praise.in_text_title": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_2.box_slider" - } - ], - "_nested_name": "survey_q_2" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_3.json b/packages/app-data/sheets/template/survey_welcome_q_3.json deleted file mode 100644 index 6d30bc58a4..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_3.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_3", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_3", - "value": "survey_q_3", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.slider_final" - }, - { - "name": "reply_zero", - "value": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_zero" - }, - { - "name": "reply_less", - "value": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_less" - }, - { - "name": "reply_greater_equal", - "value": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_3.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "matchedExpression": "@data.workshop.w_stress.number", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - }, - { - "fullExpression": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress.number": [ - "value" - ], - "@global.weekly_workshops": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_3.box_slider" - } - ], - "_nested_name": "survey_q_3" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_4.json b/packages/app-data/sheets/template/survey_welcome_q_4.json deleted file mode 100644 index cb2e17dacc..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_4.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_4", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_4", - "value": "survey_q_4", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_4_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_4_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_less" - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_a_3>=@global.survey_t_3)", - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "matchedExpression": "@data.workshop.w_stress.number", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - }, - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_a_3>=@global.survey_t_3)", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3>=@global.survey_t_3)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress.number": [ - "value" - ], - "@global.weekly_workshops": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "condition": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "type": "set_variable", - "_nested_name": "survey_q_4.box_slider.unlock_greater_equal", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - } - ], - "_nested_name": "survey_q_4.box_slider" - } - ], - "_nested_name": "survey_q_4" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_5.json b/packages/app-data/sheets/template/survey_welcome_q_5.json deleted file mode 100644 index f27e554346..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_5.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_5", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_5", - "value": "survey_q_5", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_3_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_welcome_a_5_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_welcome_a_5_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_1_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_welcome_a_5_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_welcome_a_5_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.slider_2_final" - }, - { - "name": "reply_less", - "value": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.reply_less" - }, - { - "name": "reply_greater_equal", - "value": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_5.box_multi_3_temp.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_5.box_multi_3_temp" - } - ], - "_nested_name": "survey_q_5" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_6.json b/packages/app-data/sheets/template/survey_welcome_q_6.json deleted file mode 100644 index fe3ac78e2f..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_6.json +++ /dev/null @@ -1,359 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_6", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_6", - "value": "survey_q_6", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_6_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_6_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.slider_final" - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - }, - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshops": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ], - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_3<@global.survey_t_3 && @fields.survey_welcome_a_4<@global.survey_t_4) && !(@fields.survey_welcome_a_3>=@global.survey_t_3 && @fields.survey_welcome_a_4>=@global.survey_t_4)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_3": [ - "condition", - "condition" - ], - "@global.survey_t_3": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition", - "condition" - ], - "@global.survey_t_4": [ - "condition", - "condition" - ] - } - }, - { - "name": "unlock_greater_equal", - "hidden": true, - "condition": "@fields.survey_welcome_a_3>=@global.survey_t_3 || @fields.survey_welcome_a_4>=@global.survey_t_4", - "type": "set_variable", - "_nested_name": "survey_q_6.box_slider.unlock_greater_equal", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 || @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_3", - "type": "fields", - "fieldName": "survey_welcome_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 || @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 || @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_a_4", - "type": "fields", - "fieldName": "survey_welcome_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_a_3>=@global.survey_t_3 || @fields.survey_welcome_a_4>=@global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - } - ], - "_nested_name": "survey_q_6.box_slider" - } - ], - "_nested_name": "survey_q_6" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_7.json b/packages/app-data/sheets/template/survey_welcome_q_7.json deleted file mode 100644 index 14b71a042b..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_7.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_7", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_7", - "value": "survey_q_7", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_4_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_welcome_a_7_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_welcome_a_7_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_1_final" - }, - { - "name": "radio_group_tracker", - "value": "survey_welcome_a_7_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.radio_group_tracker" - }, - { - "name": "radio_group_final", - "value": "survey_welcome_a_7_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.radio_group_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_welcome_a_7_part_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_welcome_a_7_part_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.slider_2_final" - }, - { - "name": "reply_less_1", - "value": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_less_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - }, - { - "fullExpression": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshops": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "reply_less_2", - "value": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_less_2", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - }, - { - "fullExpression": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshops": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ] - } - }, - { - "name": "reply_greater_equal_2", - "value": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_7.box_multi_4_temp.reply_greater_equal_2" - } - ], - "_nested_name": "survey_q_7.box_multi_4_temp" - } - ], - "_nested_name": "survey_q_7" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_8.json b/packages/app-data/sheets/template/survey_welcome_q_8.json deleted file mode 100644 index 83bdb0ce3e..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_8.json +++ /dev/null @@ -1,411 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_8", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_8", - "value": "survey_q_8", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_8_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_8_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.slider_final" - }, - { - "name": "reply_less", - "value": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "unlock_less", - "value": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_rules.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_safe.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_rules.tools": [ - "value" - ], - "@data.workshop.w_safe.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "reply_less", - "value": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@global.parent_centre", - "type": "global", - "fieldName": "parent_centre" - }, - { - "fullExpression": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_centre": [ - "value" - ], - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "unlock_less", - "value": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.unlock_less", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.workshop.w_rules.tools", - "type": "data", - "fieldName": "workshop" - }, - { - "fullExpression": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "matchedExpression": "@data.parent_centre.my_tips.title", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_a_7_part_1<@global.survey_t_7 || @fields.survey_welcome_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_rules.tools": [ - "value" - ], - "@data.parent_centre.my_tips.title": [ - "value" - ], - "@fields.survey_welcome_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_a_7_part_3": [ - "condition" - ] - } - }, - { - "name": "reply_greater_equal", - "value": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "survey_q_8.box_slider.reply_greater_equal", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "matchedExpression": "@global.weekly_workshops", - "type": "global", - "fieldName": "weekly_workshops" - } - ] - }, - "_dynamicDependencies": { - "@global.weekly_workshops": [ - "value" - ] - } - } - ], - "_nested_name": "survey_q_8.box_slider" - } - ], - "_nested_name": "survey_q_8" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_q_9.json b/packages/app-data/sheets/template/survey_welcome_q_9.json deleted file mode 100644 index 3dda57e6da..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_q_9.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_q_9", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_q_9", - "value": "survey_q_9", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_a_9_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_9.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_a_9_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_q_9.box_slider.slider_final" - } - ], - "_nested_name": "survey_q_9.box_slider" - } - ], - "_nested_name": "survey_q_9" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_intro.json b/packages/app-data/sheets/template/survey_welcome_repeat_intro.json deleted file mode 100644 index e065a61ebc..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_intro.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_intro", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_intro", - "value": "survey_intro", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [], - "_nested_name": "survey_intro" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_outro.json b/packages/app-data/sheets/template/survey_welcome_repeat_outro.json deleted file mode 100644 index 07d7d4e2c4..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_outro.json +++ /dev/null @@ -1,858 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_outro", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_outro", - "value": "survey_outro", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "no_mail", - true - ], - "_raw": "completed | set_field:no_mail:true", - "_cleaned": "completed | set_field:no_mail:true" - } - ], - "rows": [ - { - "type": "template", - "name": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/survey/welcome/guide_2_key.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "survey_outro.box_image.image_src" - }, - { - "name": "text", - "value": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "type": "set_variable", - "_nested_name": "survey_outro.box_image.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "matchedExpression": "@data.parent_centre.my_tips.location_text", - "type": "data", - "fieldName": "parent_centre" - } - ], - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_2" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_4", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_2" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_6", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_6" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@data.parent_centre.my_tips.location_text": [ - "value" - ], - "@fields.survey_welcome_repeat_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition", - "condition" - ], - "@fields.survey_welcome_repeat_a_5_part_2": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_repeat_a_7_part_3": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_8": [ - "condition", - "condition" - ], - "@global.survey_t_8": [ - "condition", - "condition" - ] - } - }, - { - "name": "text", - "value": "You have just unlocked the first workshop!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "type": "set_variable", - "_nested_name": "survey_outro.box_image.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_4", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_2" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_6", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_6" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_1" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_3" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "!(@fields.survey_welcome_repeat_a_1 < @global.survey_t_1 ||@fields.survey_welcome_repeat_a_2 < @global.survey_t_2 || @fields.survey_welcome_repeat_a_3 >= @global.survey_t_3 ||@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4 ||@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5 ||@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6 ||@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8 ||@fields.survey_welcome_repeat_a_8 <@global.survey_t_8)", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition", - "condition" - ], - "@fields.survey_welcome_repeat_a_5_part_2": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition", - "condition" - ], - "@fields.survey_welcome_repeat_a_7_part_3": [ - "condition" - ], - "@fields.survey_welcome_repeat_a_8": [ - "condition", - "condition" - ], - "@global.survey_t_8": [ - "condition", - "condition" - ] - } - } - ], - "_nested_name": "survey_outro.box_image" - } - ], - "_nested_name": "survey_outro" - }, - { - "type": "set_field", - "name": "w_1on1_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1", - "exclude_from_translation": true, - "_nested_name": "w_1on1_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1", - "matchedExpression": "@fields.survey_welcome_repeat_a_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_1 < @global.survey_t_1", - "matchedExpression": "@global.survey_t_1", - "type": "global", - "fieldName": "survey_t_1" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_1": [ - "condition" - ], - "@global.survey_t_1": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_praise_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_2 < @global.survey_t_2", - "exclude_from_translation": true, - "_nested_name": "w_praise_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_2 < @global.survey_t_2", - "matchedExpression": "@fields.survey_welcome_repeat_a_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_2" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_2 < @global.survey_t_2", - "matchedExpression": "@global.survey_t_2", - "type": "global", - "fieldName": "survey_t_2" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_2": [ - "condition" - ], - "@global.survey_t_2": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_3 >= @global.survey_t_3", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_3 >= @global.survey_t_3", - "matchedExpression": "@fields.survey_welcome_repeat_a_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_3" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_3 >= @global.survey_t_3", - "matchedExpression": "@global.survey_t_3", - "type": "global", - "fieldName": "survey_t_3" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_3": [ - "condition" - ], - "@global.survey_t_3": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4", - "matchedExpression": "@fields.survey_welcome_repeat_a_4", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_4" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_4 >= @global.survey_t_4", - "matchedExpression": "@global.survey_t_4", - "type": "global", - "fieldName": "survey_t_4" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_4": [ - "condition" - ], - "@global.survey_t_4": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_5_part_1>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_5_part_1": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_money_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5", - "exclude_from_translation": true, - "_nested_name": "w_money_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@fields.survey_welcome_repeat_a_5_part_2", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_5_part_2" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_5_part_2>=@global.survey_t_5", - "matchedExpression": "@global.survey_t_5", - "type": "global", - "fieldName": "survey_t_5" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_5_part_2": [ - "condition" - ], - "@global.survey_t_5": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_stress_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6", - "exclude_from_translation": true, - "_nested_name": "w_stress_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6", - "matchedExpression": "@fields.survey_welcome_repeat_a_6", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_6" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_6 >= @global.survey_t_6", - "matchedExpression": "@global.survey_t_6", - "type": "global", - "fieldName": "survey_t_6" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_6": [ - "condition" - ], - "@global.survey_t_6": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_1", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_1" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_7_part_1<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_7_part_1": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@fields.survey_welcome_repeat_a_7_part_3", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_7_part_3" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_7_part_3<@global.survey_t_7", - "matchedExpression": "@global.survey_t_7", - "type": "global", - "fieldName": "survey_t_7" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_7_part_3": [ - "condition" - ], - "@global.survey_t_7": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_rules_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_rules_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "w_safe_tools_disabled", - "value": false, - "condition": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "exclude_from_translation": true, - "_nested_name": "w_safe_tools_disabled", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@fields.survey_welcome_repeat_a_8", - "type": "fields", - "fieldName": "survey_welcome_repeat_a_8" - }, - { - "fullExpression": "@fields.survey_welcome_repeat_a_8 <@global.survey_t_8", - "matchedExpression": "@global.survey_t_8", - "type": "global", - "fieldName": "survey_t_8" - } - ] - }, - "_dynamicDependencies": { - "@fields.survey_welcome_repeat_a_8": [ - "condition" - ], - "@global.survey_t_8": [ - "condition" - ] - } - }, - { - "type": "set_field", - "name": "no_mail", - "value": true, - "exclude_from_translation": true, - "_nested_name": "no_mail" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_1.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_1.json deleted file mode 100644 index d6a27a54ce..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_1.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_1", - "value": "survey_welcome_q_1", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_1", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_1.survey_q_1.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_1.survey_q_1.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_1.survey_q_1.box_slider" - } - ], - "_nested_name": "survey_welcome_q_1.survey_q_1" - } - ], - "_nested_name": "survey_welcome_q_1" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_2.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_2.json deleted file mode 100644 index aefdeedc71..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_2.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_2", - "value": "survey_welcome_q_2", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_2", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_2.survey_q_2.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_2.survey_q_2.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_2.survey_q_2.box_slider" - } - ], - "_nested_name": "survey_welcome_q_2.survey_q_2" - } - ], - "_nested_name": "survey_welcome_q_2" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_3.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_3.json deleted file mode 100644 index 00c39c56ba..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_3.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_3", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_3", - "value": "survey_welcome_q_3", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_3", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_3.survey_q_3.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_3.survey_q_3.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_3.survey_q_3.box_slider" - } - ], - "_nested_name": "survey_welcome_q_3.survey_q_3" - } - ], - "_nested_name": "survey_welcome_q_3" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_4.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_4.json deleted file mode 100644 index 2b02b42746..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_4.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_4", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_4", - "value": "survey_welcome_q_4", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_4", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_4_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_4.survey_q_4.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_4_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_4.survey_q_4.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_4.survey_q_4.box_slider" - } - ], - "_nested_name": "survey_welcome_q_4.survey_q_4" - } - ], - "_nested_name": "survey_welcome_q_4" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_5.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_5.json deleted file mode 100644 index 43ebc82ba6..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_5.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_5", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_5", - "value": "survey_welcome_q_5", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_5", - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_3_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_welcome_repeat_a_5_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_5.survey_q_5.box_multi_3_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_welcome_repeat_a_5_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_5.survey_q_5.box_multi_3_temp.slider_1_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_welcome_repeat_a_5_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_5.survey_q_5.box_multi_3_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_welcome_repeat_a_5_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_5.survey_q_5.box_multi_3_temp.slider_2_final" - } - ], - "_nested_name": "survey_welcome_q_5.survey_q_5.box_multi_3_temp" - } - ], - "_nested_name": "survey_welcome_q_5.survey_q_5" - } - ], - "_nested_name": "survey_welcome_q_5" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_6.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_6.json deleted file mode 100644 index 9ff911f505..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_6.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_6", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_6", - "value": "survey_welcome_q_6", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_6", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_6_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_6.survey_q_6.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_6_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_6.survey_q_6.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_6.survey_q_6.box_slider" - } - ], - "_nested_name": "survey_welcome_q_6.survey_q_6" - } - ], - "_nested_name": "survey_welcome_q_6" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_7.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_7.json deleted file mode 100644 index da4fa86eb2..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_7.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_7", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_7", - "value": "survey_welcome_q_7", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_7", - "rows": [ - { - "type": "nested_properties", - "name": "box_multi_4_temp", - "rows": [ - { - "name": "slider_1_tracker", - "value": "survey_welcome_repeat_a_7_part_1_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.slider_1_tracker" - }, - { - "name": "slider_1_final", - "value": "survey_welcome_repeat_a_7_part_1_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.slider_1_final" - }, - { - "name": "radio_group_tracker", - "value": "survey_welcome_repeat_a_7_part_2_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.radio_group_tracker" - }, - { - "name": "radio_group_final", - "value": "survey_welcome_repeat_a_7_part_2_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.radio_group_final" - }, - { - "name": "slider_2_tracker", - "value": "survey_welcome_repeat_a_7_part_3_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.slider_2_tracker" - }, - { - "name": "slider_2_final", - "value": "survey_welcome_repeat_a_7_part_3_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp.slider_2_final" - } - ], - "_nested_name": "survey_welcome_q_7.survey_q_7.box_multi_4_temp" - } - ], - "_nested_name": "survey_welcome_q_7.survey_q_7" - } - ], - "_nested_name": "survey_welcome_q_7" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_8.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_8.json deleted file mode 100644 index 9513a045ad..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_8.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_8", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_8", - "value": "survey_welcome_q_8", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_8", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_8_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_8.survey_q_8.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_8_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_8.survey_q_8.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_8.survey_q_8.box_slider" - } - ], - "_nested_name": "survey_welcome_q_8.survey_q_8" - } - ], - "_nested_name": "survey_welcome_q_8" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_q_9.json b/packages/app-data/sheets/template/survey_welcome_repeat_q_9.json deleted file mode 100644 index 2de99f6e38..0000000000 --- a/packages/app-data/sheets/template/survey_welcome_repeat_q_9.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "flow_type": "template", - "flow_name": "survey_welcome_repeat_q_9", - "status": "released", - "rows": [ - { - "type": "template", - "name": "survey_welcome_q_9", - "value": "survey_welcome_q_9", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "survey_q_9", - "rows": [ - { - "type": "nested_properties", - "name": "box_slider", - "rows": [ - { - "name": "slider_tracker", - "value": "survey_welcome_repeat_a_9_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_9.survey_q_9.box_slider.slider_tracker" - }, - { - "name": "slider_final", - "value": "survey_welcome_repeat_a_9_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "survey_welcome_q_9.survey_q_9.box_slider.slider_final" - } - ], - "_nested_name": "survey_welcome_q_9.survey_q_9.box_slider" - } - ], - "_nested_name": "survey_welcome_q_9.survey_q_9" - } - ], - "_nested_name": "survey_welcome_q_9" - } - ], - "_xlsxPath": "global/top_templates/survey_templates/survey_welcome_repeat.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/survey_welcome_repeat_stepper.json b/packages/app-data/sheets/template/survey_welcome_repeat_stepper.json index b9a5d74369..b888bbb0f8 100644 --- a/packages/app-data/sheets/template/survey_welcome_repeat_stepper.json +++ b/packages/app-data/sheets/template/survey_welcome_repeat_stepper.json @@ -3,6 +3,21 @@ "flow_name": "survey_welcome_repeat_stepper", "status": "released", "rows": [ + { + "type": "set_field", + "name": "current_survey_name", + "value": "survey_welcome_repeat", + "_translations": { + "value": {} + }, + "_nested_name": "current_survey_name" + }, + { + "type": "set_field", + "name": "survey_welcome_repeat_started", + "value": true, + "_nested_name": "survey_welcome_repeat_started" + }, { "type": "template", "name": "survey_stepper_actions", @@ -45,17 +60,20 @@ { "name": "nav_template_list", "value": [ - "survey_welcome_repeat_intro", - "survey_welcome_repeat_q_1", - "survey_welcome_repeat_q_2", - "survey_welcome_repeat_q_3", - "survey_welcome_repeat_q_4", - "survey_welcome_repeat_q_5", - "survey_welcome_repeat_q_6", - "survey_welcome_repeat_q_7", - "survey_welcome_repeat_q_8", - "survey_welcome_repeat_q_9", - "survey_welcome_repeat_outro" + "survey_intro", + "demographics_teen_age", + "survey_question_ppf", + "survey_question_ppp", + "survey_question_pst", + "survey_question_pde", + "survey_question_cme", + "survey_question_fin", + "survey_question_orp", + "survey_question_cmp", + "survey_question_psu", + "survey_question_pcsap", + "survey_question_ris", + "survey_welcome_outro" ], "exclude_from_translation": true, "type": "set_variable", diff --git a/packages/app-data/sheets/template/survey_welcome_stepper.json b/packages/app-data/sheets/template/survey_welcome_stepper.json index d95f2b1e36..13ee848bc0 100644 --- a/packages/app-data/sheets/template/survey_welcome_stepper.json +++ b/packages/app-data/sheets/template/survey_welcome_stepper.json @@ -3,6 +3,21 @@ "flow_name": "survey_welcome_stepper", "status": "released", "rows": [ + { + "type": "set_field", + "name": "current_survey_name", + "value": "survey_welcome", + "_translations": { + "value": {} + }, + "_nested_name": "current_survey_name" + }, + { + "type": "set_field", + "name": "survey_welcome_started", + "value": true, + "_nested_name": "survey_welcome_started" + }, { "type": "template", "name": "survey_stepper_actions", @@ -45,16 +60,18 @@ { "name": "nav_template_list", "value": [ - "survey_welcome_intro", - "survey_welcome_q_1", - "survey_welcome_q_2", - "survey_welcome_q_3", - "survey_welcome_q_4", - "survey_welcome_q_5", - "survey_welcome_q_6", - "survey_welcome_q_7", - "survey_welcome_q_8", - "survey_welcome_q_9", + "survey_intro", + "survey_question_ppf", + "survey_question_ppp", + "survey_question_pst", + "survey_question_pde", + "survey_question_cme", + "survey_question_fin", + "survey_question_orp", + "survey_question_cmp", + "survey_question_psu", + "survey_question_pcsap", + "survey_question_ris", "survey_welcome_outro" ], "exclude_from_translation": true, diff --git a/packages/app-data/sheets/template/task_card.json b/packages/app-data/sheets/template/task_card.json new file mode 100644 index 0000000000..7d8d3b8bae --- /dev/null +++ b/packages/app-data/sheets/template/task_card.json @@ -0,0 +1,935 @@ +{ + "flow_type": "template", + "flow_name": "task_card", + "status": "released", + "rows": [ + { + "name": "with_image", + "value": false, + "type": "set_variable", + "_nested_name": "with_image" + }, + { + "name": "workshop_id", + "value": "w_1on1", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id" + }, + { + "name": "task_id", + "value": "welcome_individual", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_id" + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "join", + "value": "_", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "join" + }, + { + "name": "concat_tgd", + "value": "@local.task_group_data.@local.task_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "concat_tgd", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.task_group_data.@local.task_id", + "matchedExpression": "@local.task_group_data", + "type": "local", + "fieldName": "task_group_data" + }, + { + "fullExpression": "@local.task_group_data.@local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ] + }, + "_dynamicDependencies": { + "@local.task_group_data": [ + "value" + ], + "@local.task_id": [ + "value" + ] + } + }, + { + "name": "tgd", + "value": "@data.@local.concat_tgd", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "tgd", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.concat_tgd", + "matchedExpression": "@local.concat_tgd", + "type": "local", + "fieldName": "concat_tgd" + } + ] + }, + "_dynamicDependencies": { + "@local.concat_tgd": [ + "value" + ] + } + }, + { + "name": "has_single_task", + "value": "@local.tgd.has_single_task", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "has_single_task", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.tgd.has_single_task", + "matchedExpression": "@local.tgd.has_single_task", + "type": "local", + "fieldName": "tgd" + } + ] + }, + "_dynamicDependencies": { + "@local.tgd.has_single_task": [ + "value" + ] + } + }, + { + "name": "template", + "value": "@local.tgd.template", + "_translations": { + "value": {} + }, + "condition": "@local.has_single_task", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "template", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.tgd.template", + "matchedExpression": "@local.tgd.template", + "type": "local", + "fieldName": "tgd" + } + ], + "condition": [ + { + "fullExpression": "@local.has_single_task", + "matchedExpression": "@local.has_single_task", + "type": "local", + "fieldName": "has_single_task" + } + ] + }, + "_dynamicDependencies": { + "@local.tgd.template": [ + "value" + ], + "@local.has_single_task": [ + "condition" + ] + } + }, + { + "name": "template", + "value": "task_group_pair", + "_translations": { + "value": {} + }, + "condition": "!@local.has_single_task", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "template", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@local.has_single_task", + "matchedExpression": "!@local.has_single_task", + "type": "local", + "fieldName": "has_single_task" + } + ] + }, + "_dynamicDependencies": { + "!@local.has_single_task": [ + "condition" + ] + } + }, + { + "name": "completed", + "value": "_completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed" + }, + { + "name": "completed_field", + "value": "task_gp_@local.workshop_id@local.join@local.task_id@local.completed", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "completed_field", + "_dynamicFields": { + "value": [ + { + "fullExpression": "task_gp_@local.workshop_id@local.join@local.task_id@local.completed", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "task_gp_@local.workshop_id@local.join@local.task_id@local.completed", + "matchedExpression": "@local.join", + "type": "local", + "fieldName": "join" + }, + { + "fullExpression": "task_gp_@local.workshop_id@local.join@local.task_id@local.completed", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + }, + { + "fullExpression": "task_gp_@local.workshop_id@local.join@local.task_id@local.completed", + "matchedExpression": "@local.completed", + "type": "local", + "fieldName": "completed" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.join": [ + "value" + ], + "@local.task_id": [ + "value" + ], + "@local.completed": [ + "value" + ] + } + }, + { + "name": "card_title", + "value": "@local.tgd.title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.tgd.title", + "matchedExpression": "@local.tgd.title", + "type": "local", + "fieldName": "tgd" + } + ] + }, + "_dynamicDependencies": { + "@local.tgd.title": [ + "value" + ] + } + }, + { + "name": "card_image", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "card_image" + }, + { + "type": "task_card", + "name": "task_card_1", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@local.completed_field", + true + ], + "_raw": "click | set_field: @local.completed_field: true", + "_cleaned": "click | set_field: @local.completed_field: true" + }, + { + "trigger": "click", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "click | emit: force_reload", + "_cleaned": "click | emit: force_reload" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.template" + ], + "_raw": "click | go_to: @local.template", + "_cleaned": "click | go_to: @local.template" + } + ], + "parameter_list": { + "task_id": "@local.task_id", + "completed_field": "@local.completed_field", + "title": "@local.card_title", + "image": "@local.card_image", + "style": "button", + "in_progress_icon": "plh_images/icons/in_progress.svg", + "completed_icon": "plh_images/icons/tick_white.svg" + }, + "condition": "@local.with_image", + "exclude_from_translation": true, + "_nested_name": "task_card_1", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ] + } + }, + "parameter_list": { + "task_id": [ + { + "fullExpression": "@local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ], + "completed_field": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "title": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ], + "image": [ + { + "fullExpression": "@local.card_image", + "matchedExpression": "@local.card_image", + "type": "local", + "fieldName": "card_image" + } + ] + }, + "condition": [ + { + "fullExpression": "@local.with_image", + "matchedExpression": "@local.with_image", + "type": "local", + "fieldName": "with_image" + } + ] + }, + "_dynamicDependencies": { + "@local.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "parameter_list.completed_field" + ], + "@local.template": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.task_id": [ + "parameter_list.task_id" + ], + "@local.card_title": [ + "parameter_list.title" + ], + "@local.card_image": [ + "parameter_list.image" + ], + "@local.with_image": [ + "condition" + ] + } + }, + { + "type": "task_card", + "name": "task_card_2", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@local.completed_field", + true + ], + "_raw": "click | set_field: @local.completed_field: true", + "_cleaned": "click | set_field: @local.completed_field: true" + }, + { + "trigger": "click", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "click | emit: force_reload", + "_cleaned": "click | emit: force_reload" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@local.template" + ], + "_raw": "click | go_to: @local.template", + "_cleaned": "click | go_to: @local.template" + } + ], + "parameter_list": { + "task_id": "@local.task_id", + "completed_field": "@local.completed_field", + "title": "@local.card_title", + "style": "button", + "in_progress_icon": "plh_images/icons/in_progress.svg", + "completed_icon": "plh_images/icons/tick_white.svg" + }, + "condition": "!@local.with_image && @local.has_single_task", + "exclude_from_translation": true, + "_nested_name": "task_card_2", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "2": { + "args": { + "0": [ + { + "fullExpression": "@local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @local.template", + "matchedExpression": "@local.template", + "type": "local", + "fieldName": "template" + } + ] + } + }, + "parameter_list": { + "task_id": [ + { + "fullExpression": "@local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ], + "completed_field": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "title": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ] + }, + "condition": [ + { + "fullExpression": "!@local.with_image && @local.has_single_task", + "matchedExpression": "!@local.with_image", + "type": "local", + "fieldName": "with_image" + }, + { + "fullExpression": "!@local.with_image && @local.has_single_task", + "matchedExpression": "@local.has_single_task", + "type": "local", + "fieldName": "has_single_task" + } + ] + }, + "_dynamicDependencies": { + "@local.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "parameter_list.completed_field" + ], + "@local.template": [ + "action_list.2.args.0", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.task_id": [ + "parameter_list.task_id" + ], + "@local.card_title": [ + "parameter_list.title" + ], + "!@local.with_image": [ + "condition" + ], + "@local.has_single_task": [ + "condition" + ] + } + }, + { + "type": "task_card", + "name": "task_card_3", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@local.completed_field", + true + ], + "_raw": "click | set_field: @local.completed_field: true", + "_cleaned": "click | set_field: @local.completed_field: true" + }, + { + "trigger": "click", + "action_id": "emit", + "args": [ + "force_reload" + ], + "_raw": "click | emit: force_reload", + "_cleaned": "click | emit: force_reload" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + "@fields.do_workshops_together" + ], + "_raw": "click | set_field: do_this_workshop_together: @fields.do_workshops_together", + "_cleaned": "click | set_field: do_this_workshop_together: @fields.do_workshops_together" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_workshop", + "@local.workshop_id" + ], + "_raw": "click | set_field: current_workshop: @local.workshop_id", + "_cleaned": "click | set_field: current_workshop: @local.workshop_id" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_task_group", + "@local.task_id" + ], + "_raw": "click | set_field: current_task_group: @local.task_id", + "_cleaned": "click | set_field: current_task_group: @local.task_id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "task_group_pair" + ], + "_raw": "click | go_to: task_group_pair", + "_cleaned": "click | go_to: task_group_pair" + } + ], + "parameter_list": { + "task_id": "@local.task_id", + "completed_field": "@local.completed_field", + "title": "@local.card_title", + "style": "button", + "in_progress_icon": "plh_images/icons/in_progress.svg", + "completed_icon": "plh_images/icons/tick_white.svg" + }, + "condition": "!@local.with_image && !@local.has_single_task", + "exclude_from_translation": true, + "_nested_name": "task_card_3", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @local.completed_field: true", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ] + }, + "2": { + "args": { + "1": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: do_this_workshop_together: @fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: do_this_workshop_together: @fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "3": { + "args": { + "1": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "4": { + "args": { + "1": [ + { + "fullExpression": "@local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ] + } + }, + "parameter_list": { + "task_id": [ + { + "fullExpression": "@local.task_id", + "matchedExpression": "@local.task_id", + "type": "local", + "fieldName": "task_id" + } + ], + "completed_field": [ + { + "fullExpression": "@local.completed_field", + "matchedExpression": "@local.completed_field", + "type": "local", + "fieldName": "completed_field" + } + ], + "title": [ + { + "fullExpression": "@local.card_title", + "matchedExpression": "@local.card_title", + "type": "local", + "fieldName": "card_title" + } + ] + }, + "condition": [ + { + "fullExpression": "!@local.with_image && !@local.has_single_task", + "matchedExpression": "!@local.with_image", + "type": "local", + "fieldName": "with_image" + }, + { + "fullExpression": "!@local.with_image && !@local.has_single_task", + "matchedExpression": "!@local.has_single_task", + "type": "local", + "fieldName": "has_single_task" + } + ] + }, + "_dynamicDependencies": { + "@local.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned", + "parameter_list.completed_field" + ], + "@fields.do_workshops_together": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@local.workshop_id": [ + "action_list.3.args.1", + "action_list.3._raw", + "action_list.3._cleaned" + ], + "@local.task_id": [ + "action_list.4.args.1", + "action_list.4._raw", + "action_list.4._cleaned", + "parameter_list.task_id" + ], + "@local.card_title": [ + "parameter_list.title" + ], + "!@local.with_image": [ + "condition" + ], + "!@local.has_single_task": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/module_navigation.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/task_group_pair.json b/packages/app-data/sheets/template/task_group_pair.json new file mode 100644 index 0000000000..aaf459a33f --- /dev/null +++ b/packages/app-data/sheets/template/task_group_pair.json @@ -0,0 +1,367 @@ +{ + "flow_type": "template", + "flow_name": "task_group_pair", + "status": "released", + "rows": [ + { + "name": "workshop_id", + "value": "@fields.current_workshop", + "_translations": { + "value": {} + }, + "condition": "!@local.workshop_id", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_workshop", + "matchedExpression": "@fields.current_workshop", + "type": "fields", + "fieldName": "current_workshop" + } + ], + "condition": [ + { + "fullExpression": "!@local.workshop_id", + "matchedExpression": "!@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_workshop": [ + "value" + ], + "!@local.workshop_id": [ + "condition" + ] + } + }, + { + "name": "task_group_id", + "value": "@fields.current_task_group", + "_translations": { + "value": {} + }, + "condition": "!@local.task_group_id", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.current_task_group", + "matchedExpression": "@fields.current_task_group", + "type": "fields", + "fieldName": "current_task_group" + } + ], + "condition": [ + { + "fullExpression": "!@local.task_group_id", + "matchedExpression": "!@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ] + }, + "_dynamicDependencies": { + "@fields.current_task_group": [ + "value" + ], + "!@local.task_group_id": [ + "condition" + ] + } + }, + { + "name": "us", + "value": "_", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "us" + }, + { + "name": "setting", + "value": "_ind", + "_translations": { + "value": {} + }, + "condition": "!@fields.do_this_workshop_together", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "setting", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "!@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "setting", + "value": "_tog", + "_translations": { + "value": {} + }, + "condition": "@fields.do_this_workshop_together", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "setting", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "task_group", + "value": "tg_@local.workshop_id@local.us@local.task_group_id@local.setting", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group", + "_dynamicFields": { + "value": [ + { + "fullExpression": "tg_@local.workshop_id@local.us@local.task_group_id@local.setting", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "tg_@local.workshop_id@local.us@local.task_group_id@local.setting", + "matchedExpression": "@local.us", + "type": "local", + "fieldName": "us" + }, + { + "fullExpression": "tg_@local.workshop_id@local.us@local.task_group_id@local.setting", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + }, + { + "fullExpression": "tg_@local.workshop_id@local.us@local.task_group_id@local.setting", + "matchedExpression": "@local.setting", + "type": "local", + "fieldName": "setting" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.us": [ + "value" + ], + "@local.task_group_id": [ + "value" + ], + "@local.setting": [ + "value" + ] + } + }, + { + "name": "first_item", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "first_item" + }, + { + "type": "items", + "value": "@data.@local.task_group", + "rows": [ + { + "name": "template_1", + "value": "@item.template", + "_translations": { + "value": {} + }, + "condition": "@local.first_item", + "type": "set_variable", + "_nested_name": "items.template_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ], + "condition": [ + { + "fullExpression": "@local.first_item", + "matchedExpression": "@local.first_item", + "type": "local", + "fieldName": "first_item" + } + ] + }, + "_dynamicDependencies": { + "@item.template": [ + "value" + ], + "@local.first_item": [ + "condition" + ] + } + }, + { + "name": "template_2", + "value": "@item.template", + "_translations": { + "value": {} + }, + "condition": "!@local.first_item", + "type": "set_variable", + "_nested_name": "items.template_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ], + "condition": [ + { + "fullExpression": "!@local.first_item", + "matchedExpression": "!@local.first_item", + "type": "local", + "fieldName": "first_item" + } + ] + }, + "_dynamicDependencies": { + "@item.template": [ + "value" + ], + "!@local.first_item": [ + "condition" + ] + } + }, + { + "name": "first_item", + "value": false, + "type": "set_variable", + "_nested_name": "items.first_item" + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.task_group", + "matchedExpression": "@local.task_group", + "type": "local", + "fieldName": "task_group" + } + ] + }, + "_dynamicDependencies": { + "@local.task_group": [ + "value" + ] + } + }, + { + "type": "template", + "name": "pair", + "value": "pair", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit: completed", + "_cleaned": "completed | emit: completed" + } + ], + "rows": [ + { + "type": "nested_properties", + "name": "box_1", + "value": "@local.template_1", + "rows": [], + "_nested_name": "pair.box_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.template_1", + "matchedExpression": "@local.template_1", + "type": "local", + "fieldName": "template_1" + } + ] + }, + "_dynamicDependencies": { + "@local.template_1": [ + "value" + ] + } + }, + { + "type": "nested_properties", + "name": "box_2", + "value": "@local.template_2", + "rows": [], + "_nested_name": "pair.box_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.template_2", + "matchedExpression": "@local.template_2", + "type": "local", + "fieldName": "template_2" + } + ] + }, + "_dynamicDependencies": { + "@local.template_2": [ + "value" + ] + } + } + ], + "_nested_name": "pair" + } + ], + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/things_to_do.json b/packages/app-data/sheets/template/things_to_do.json new file mode 100644 index 0000000000..b596ec9621 --- /dev/null +++ b/packages/app-data/sheets/template/things_to_do.json @@ -0,0 +1,737 @@ +{ + "flow_type": "template", + "flow_name": "things_to_do", + "status": "released", + "rows": [ + { + "name": "workshop_id", + "value": "@fields._task_highlighted_group_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields._task_highlighted_group_id", + "matchedExpression": "@fields._task_highlighted_group_id", + "type": "fields", + "fieldName": "_task_highlighted_group_id" + } + ] + }, + "_dynamicDependencies": { + "@fields._task_highlighted_group_id": [ + "value" + ] + } + }, + { + "type": "set_field", + "name": "current_workshop", + "value": "@local.workshop_id", + "_translations": { + "value": {} + }, + "_nested_name": "current_workshop", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_groups" + }, + { + "name": "path", + "value": "_ind", + "_translations": { + "value": {} + }, + "condition": "@fields.workshop_path == \"individual\"", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@fields.workshop_path == \"individual\"", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "path", + "value": "_tog", + "_translations": { + "value": {} + }, + "condition": "!(@fields.workshop_path == \"individual\")", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "path", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!(@fields.workshop_path == \"individual\")", + "matchedExpression": "@fields.workshop_path", + "type": "fields", + "fieldName": "workshop_path" + } + ] + }, + "_dynamicDependencies": { + "@fields.workshop_path": [ + "condition" + ] + } + }, + { + "name": "task_group_data", + "value": "@local.workshop_id@local.path@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "task_group_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.path", + "type": "local", + "fieldName": "path" + }, + { + "fullExpression": "@local.workshop_id@local.path@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ], + "@local.path": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "ww_id", + "value": "workshop.@local.workshop_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "ww_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "workshop.@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_id": [ + "value" + ] + } + }, + { + "name": "workshop_data", + "value": "@data.@local.ww_id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.ww_id", + "matchedExpression": "@local.ww_id", + "type": "local", + "fieldName": "ww_id" + } + ] + }, + "_dynamicDependencies": { + "@local.ww_id": [ + "value" + ] + } + }, + { + "name": "workshop_image", + "value": "@local.workshop_data.image_asset", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_image", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.image_asset", + "matchedExpression": "@local.workshop_data.image_asset", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.image_asset": [ + "value" + ] + } + }, + { + "type": "items", + "value": "@data.@local.task_group_data", + "parameter_list": { + "filter": "!@item.completed && @item.individual", + "sort": "priority", + "limit": "1" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "button", + "name": "button_module", + "value": "@item.title", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@item.completed_field", + true + ], + "_raw": "click | set_field: @item.completed_field: true", + "_cleaned": "click | set_field: @item.completed_field: true" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@item.template" + ], + "_raw": "click | go_to: @item.template", + "_cleaned": "click | go_to: @item.template" + } + ], + "parameter_list": { + "style": "card", + "icon": "@local.workshop_image" + }, + "exclude_from_translation": true, + "_nested_name": "items.button_module", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.completed_field", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + } + }, + "parameter_list": { + "icon": [ + { + "fullExpression": "@local.workshop_image", + "matchedExpression": "@local.workshop_image", + "type": "local", + "fieldName": "workshop_image" + } + ] + } + }, + "_dynamicDependencies": { + "@item.title": [ + "value" + ], + "@item.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@item.template": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.workshop_image": [ + "parameter_list.icon" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.task_group_data", + "matchedExpression": "@local.task_group_data", + "type": "local", + "fieldName": "task_group_data" + } + ], + "parameter_list": { + "filter": [ + { + "fullExpression": "!@item.completed && @item.individual", + "matchedExpression": "!@item.completed", + "type": "item", + "fieldName": "completed" + }, + { + "fullExpression": "!@item.completed && @item.individual", + "matchedExpression": "@item.individual", + "type": "item", + "fieldName": "individual" + } + ] + } + }, + "_dynamicDependencies": { + "@local.task_group_data": [ + "value" + ], + "!@item.completed": [ + "parameter_list.filter" + ], + "@item.individual": [ + "parameter_list.filter" + ] + } + }, + { + "type": "items", + "value": "@data.relax", + "parameter_list": { + "filter": "!@item.completed", + "limit": "1" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "button", + "name": "button_parent_point", + "value": "@item.title", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@item.completed_field", + true + ], + "_raw": "click | set_field: @item.completed_field: true", + "_cleaned": "click | set_field: @item.completed_field: true" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@item.activity_template" + ], + "_raw": "click | go_to: @item.activity_template", + "_cleaned": "click | go_to: @item.activity_template" + } + ], + "parameter_list": { + "style": "card", + "icon": "plh_images/icons/star_outline.svg" + }, + "exclude_from_translation": true, + "_nested_name": "items.button_parent_point", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.completed_field", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ] + } + } + }, + "_dynamicDependencies": { + "@item.title": [ + "value" + ], + "@item.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@item.activity_template": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.relax", + "matchedExpression": "@data.relax", + "type": "data", + "fieldName": "relax" + } + ], + "parameter_list": { + "filter": [ + { + "fullExpression": "!@item.completed", + "matchedExpression": "!@item.completed", + "type": "item", + "fieldName": "completed" + } + ] + } + }, + "_dynamicDependencies": { + "@data.relax": [ + "value" + ], + "!@item.completed": [ + "parameter_list.filter" + ] + } + }, + { + "type": "items", + "value": "@data.something_fun", + "parameter_list": { + "filter": "!@item.completed", + "limit": "1" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "button", + "name": "button_parent_centre", + "value": "@item.title", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "@item.completed_field", + true + ], + "_raw": "click | set_field: @item.completed_field: true", + "_cleaned": "click | set_field: @item.completed_field: true" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@item.activity_template" + ], + "_raw": "click | go_to: @item.activity_template", + "_cleaned": "click | go_to: @item.activity_template" + } + ], + "parameter_list": { + "style": "card", + "icon": "plh_images/icons/book.svg" + }, + "exclude_from_translation": true, + "_nested_name": "items.button_parent_centre", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.completed_field", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: @item.completed_field: true", + "matchedExpression": "@item.completed_field", + "type": "item", + "fieldName": "completed_field" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @item.activity_template", + "matchedExpression": "@item.activity_template", + "type": "item", + "fieldName": "activity_template" + } + ] + } + } + }, + "_dynamicDependencies": { + "@item.title": [ + "value" + ], + "@item.completed_field": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@item.activity_template": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.something_fun", + "matchedExpression": "@data.something_fun", + "type": "data", + "fieldName": "something_fun" + } + ], + "parameter_list": { + "filter": [ + { + "fullExpression": "!@item.completed", + "matchedExpression": "!@item.completed", + "type": "item", + "fieldName": "completed" + } + ] + } + }, + "_dynamicDependencies": { + "@data.something_fun": [ + "value" + ], + "!@item.completed": [ + "parameter_list.filter" + ] + } + } + ], + "_xlsxPath": "global_modular/core_templates/home_screen_modular.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/think_temp.json b/packages/app-data/sheets/template/think_temp.json index cb19f115a2..c3447e8fa9 100644 --- a/packages/app-data/sheets/template/think_temp.json +++ b/packages/app-data/sheets/template/think_temp.json @@ -41,21 +41,21 @@ "za_zu": true } }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -73,21 +73,21 @@ "za_zu": true } }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -98,21 +98,21 @@ "_translations": { "value": {} }, - "condition": "@field.do_this_workshop_together", + "condition": "@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.do_this_workshop_together", - "matchedExpression": "@field.do_this_workshop_together", - "type": "field", + "fullExpression": "@fields.do_this_workshop_together", + "matchedExpression": "@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "@field.do_this_workshop_together": [ + "@fields.do_this_workshop_together": [ "condition" ] } @@ -130,21 +130,21 @@ "za_zu": true } }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } @@ -162,46 +162,46 @@ "za_zu": true } }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.intro_text", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, - "condition": "!@field.do_this_workshop_together", + "condition": "!@fields.do_this_workshop_together", "type": "set_variable", "_nested_name": "workshop_activity.activity_image", "_dynamicFields": { "condition": [ { - "fullExpression": "!@field.do_this_workshop_together", - "matchedExpression": "!@field.do_this_workshop_together", - "type": "field", + "fullExpression": "!@fields.do_this_workshop_together", + "matchedExpression": "!@fields.do_this_workshop_together", + "type": "fields", "fieldName": "do_this_workshop_together" } ] }, "_dynamicDependencies": { - "!@field.do_this_workshop_together": [ + "!@fields.do_this_workshop_together": [ "condition" ] } diff --git a/packages/app-data/sheets/template/tools_activity.json b/packages/app-data/sheets/template/tools_activity.json index 982f6ceb57..48b0464cc6 100644 --- a/packages/app-data/sheets/template/tools_activity.json +++ b/packages/app-data/sheets/template/tools_activity.json @@ -146,7 +146,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/light_bulb.svg", + "value": "plh_images/workshop_modes/individual/light_bulb.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/tools_deal_with_news.json b/packages/app-data/sheets/template/tools_deal_with_news.json index 4ba36fd72b..ad712538ca 100644 --- a/packages/app-data/sheets/template/tools_deal_with_news.json +++ b/packages/app-data/sheets/template/tools_deal_with_news.json @@ -12,6 +12,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/tools_help_teen_choose.json b/packages/app-data/sheets/template/tools_help_teen_choose.json index 4eb4469148..bc88109624 100644 --- a/packages/app-data/sheets/template/tools_help_teen_choose.json +++ b/packages/app-data/sheets/template/tools_help_teen_choose.json @@ -16,6 +16,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -52,6 +53,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -90,6 +92,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -112,6 +115,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/tools_talk_to_teen.json b/packages/app-data/sheets/template/tools_talk_to_teen.json index 9fda4f6495..888174fc31 100644 --- a/packages/app-data/sheets/template/tools_talk_to_teen.json +++ b/packages/app-data/sheets/template/tools_talk_to_teen.json @@ -36,6 +36,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -74,6 +75,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -112,6 +114,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -151,6 +154,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/topic_intro.json b/packages/app-data/sheets/template/topic_intro.json index 2723fc4672..4c67685735 100644 --- a/packages/app-data/sheets/template/topic_intro.json +++ b/packages/app-data/sheets/template/topic_intro.json @@ -51,6 +51,54 @@ ] } }, + { + "name": "workshop_number", + "value": "@local.workshop_data.number", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_number", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.workshop_data.number", + "matchedExpression": "@local.workshop_data.number", + "type": "local", + "fieldName": "workshop_data" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_data.number": [ + "value" + ] + } + }, + { + "name": "topic_intro_name", + "value": "topic_intro_name_@local.workshop_number", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "topic_intro_name", + "_dynamicFields": { + "value": [ + { + "fullExpression": "topic_intro_name_@local.workshop_number", + "matchedExpression": "@local.workshop_number", + "type": "local", + "fieldName": "workshop_number" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_number": [ + "value" + ] + } + }, { "name": "intro_text", "value": "_intro_text", @@ -246,33 +294,35 @@ "type": "nested_properties", "name": "workshop_activity", "rows": [ + { + "name": "activity_image", + "value": "plh_images/workshop_modes/individual/explain.svg", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "listen.workshop_activity.activity_image" + }, { "name": "intro_title", - "value": "Why @local.workshop_data.title?", + "value": "@local.workshop_data.intro_title", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "listen.workshop_activity.intro_title", "_dynamicFields": { "value": [ { - "fullExpression": "Why @local.workshop_data.title?", - "matchedExpression": "@local.workshop_data.title", + "fullExpression": "@local.workshop_data.intro_title", + "matchedExpression": "@local.workshop_data.intro_title", "type": "local", "fieldName": "workshop_data" } ] }, "_dynamicDependencies": { - "@local.workshop_data.title": [ + "@local.workshop_data.intro_title": [ "value" ] } @@ -344,24 +394,26 @@ "rows": [ { "name": "audio_title", - "value": "Hear @global.topic_intro_name's message", + "value": "Hear @global.@local.topic_intro_name's message", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, "type": "set_variable", "_nested_name": "listen.workshop_activity.content_box.box_1.audio_title", "_dynamicFields": { "value": [ { - "fullExpression": "Hear @global.topic_intro_name's message", - "matchedExpression": "@global.topic_intro_name", - "type": "global", + "fullExpression": "Hear @global.@local.topic_intro_name's message", + "matchedExpression": "@local.topic_intro_name", + "type": "local", "fieldName": "topic_intro_name" } ] }, "_dynamicDependencies": { - "@global.topic_intro_name": [ + "@local.topic_intro_name": [ "value" ] } @@ -392,9 +444,11 @@ }, { "name": "button_1", - "value": "Read @global.topic_intro_name's message", + "value": "Read @global.@local.topic_intro_name's message", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, "action_list": [ { @@ -413,9 +467,9 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Read @global.topic_intro_name's message", - "matchedExpression": "@global.topic_intro_name", - "type": "global", + "fullExpression": "Read @global.@local.topic_intro_name's message", + "matchedExpression": "@local.topic_intro_name", + "type": "local", "fieldName": "topic_intro_name" } ], @@ -451,7 +505,7 @@ } }, "_dynamicDependencies": { - "@global.topic_intro_name": [ + "@local.topic_intro_name": [ "value" ], "@local.workshop_intro_text": [ @@ -485,6 +539,7 @@ "_cleaned": "click | pop_up:@local.workshop_summary" } ], + "condition": "@fields._app_skin == \"weekly_workshop\"", "hidden": false, "type": "set_variable", "_nested_name": "listen.workshop_activity.content_box.box_1.button_2", @@ -518,13 +573,24 @@ } ] } - } + }, + "condition": [ + { + "fullExpression": "@fields._app_skin == \"weekly_workshop\"", + "matchedExpression": "@fields._app_skin", + "type": "fields", + "fieldName": "_app_skin" + } + ] }, "_dynamicDependencies": { "@local.workshop_summary": [ "action_list.0.args.0", "action_list.0._raw", "action_list.0._cleaned" + ], + "@fields._app_skin": [ + "condition" ] } } @@ -540,7 +606,12 @@ "name": "audio_title", "value": "Hear a caregiver's testimonial", "_translations": { - "value": {} + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } }, "type": "set_variable", "_nested_name": "listen.workshop_activity.content_box.box_2.audio_title" @@ -573,7 +644,12 @@ "name": "button_1", "value": "Read a caregiver's testimonial", "_translations": { - "value": {} + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } }, "action_list": [ { @@ -822,24 +898,26 @@ "rows": [ { "name": "audio_title", - "value": "Hear @global.topic_intro_name's message", + "value": "Hear @global.@local.topic_intro_name's message", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, "type": "set_variable", "_nested_name": "listen.workshop_activity.content_box.audio_title", "_dynamicFields": { "value": [ { - "fullExpression": "Hear @global.topic_intro_name's message", - "matchedExpression": "@global.topic_intro_name", - "type": "global", + "fullExpression": "Hear @global.@local.topic_intro_name's message", + "matchedExpression": "@local.topic_intro_name", + "type": "local", "fieldName": "topic_intro_name" } ] }, "_dynamicDependencies": { - "@global.topic_intro_name": [ + "@local.topic_intro_name": [ "value" ] } @@ -870,9 +948,11 @@ }, { "name": "button_1", - "value": "Read @global.topic_intro_name's message", + "value": "Read @global.@local.topic_intro_name's message", "_translations": { - "value": {} + "value": { + "tz_sw": true + } }, "action_list": [ { @@ -891,9 +971,9 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Read @global.topic_intro_name's message", - "matchedExpression": "@global.topic_intro_name", - "type": "global", + "fullExpression": "Read @global.@local.topic_intro_name's message", + "matchedExpression": "@local.topic_intro_name", + "type": "local", "fieldName": "topic_intro_name" } ], @@ -929,7 +1009,7 @@ } }, "_dynamicDependencies": { - "@global.topic_intro_name": [ + "@local.topic_intro_name": [ "value" ], "@local.workshop_intro_text": [ diff --git a/packages/app-data/sheets/template/understand_teen_feelings.json b/packages/app-data/sheets/template/understand_teen_feelings.json index 8d4daf3589..b4178ffb7b 100644 --- a/packages/app-data/sheets/template/understand_teen_feelings.json +++ b/packages/app-data/sheets/template/understand_teen_feelings.json @@ -175,6 +175,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -279,6 +280,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -475,6 +477,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -791,6 +794,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } @@ -806,6 +810,7 @@ "tz_sw": true, "za_af": true, "za_st": true, + "za_tn": true, "za_xh": true, "za_zu": true } diff --git a/packages/app-data/sheets/template/user_code.json b/packages/app-data/sheets/template/user_code.json index 67de8436d1..dfd9f4ee8c 100644 --- a/packages/app-data/sheets/template/user_code.json +++ b/packages/app-data/sheets/template/user_code.json @@ -66,6 +66,28 @@ "type": "set_variable", "_nested_name": "sync_button_clicked" }, + { + "name": "copy", + "value": "Copy code", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "copy" + }, + { + "name": "copied", + "value": "Copied!", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "copied" + }, { "type": "title", "name": "title", @@ -99,41 +121,80 @@ }, "rows": [ { - "type": "display_group", - "name": "dg_user_code", + "type": "qr_code", + "value": "@local.user_id", + "_translations": { + "value": {} + }, + "name": "qr_code", + "_nested_name": "has_ever_been_synced.qr_code", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.user_id", + "matchedExpression": "@local.user_id", + "type": "local", + "fieldName": "user_id" + } + ] + }, + "_dynamicDependencies": { + "@local.user_id": [ + "value" + ] + } + }, + { + "type": "select_text", + "name": "user_code", + "value": "@local.user_id", + "_translations": { + "value": {} + }, "parameter_list": { - "style": "dashed_box" + "copy_text": "@local.copy", + "copied_text": "@local.copied" }, - "rows": [ - { - "type": "subtitle", - "name": "code", - "value": "@local.user_id", - "_translations": { - "value": {} - }, - "parameter_list": { - "style": "center" - }, - "_nested_name": "has_ever_been_synced.dg_user_code.code", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.user_id", - "matchedExpression": "@local.user_id", - "type": "local", - "fieldName": "user_id" - } - ] - }, - "_dynamicDependencies": { - "@local.user_id": [ - "value" - ] + "_nested_name": "has_ever_been_synced.user_code", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.user_id", + "matchedExpression": "@local.user_id", + "type": "local", + "fieldName": "user_id" } + ], + "parameter_list": { + "copy_text": [ + { + "fullExpression": "@local.copy", + "matchedExpression": "@local.copy", + "type": "local", + "fieldName": "copy" + } + ], + "copied_text": [ + { + "fullExpression": "@local.copied", + "matchedExpression": "@local.copied", + "type": "local", + "fieldName": "copied" + } + ] } - ], - "_nested_name": "has_ever_been_synced.dg_user_code" + }, + "_dynamicDependencies": { + "@local.user_id": [ + "value" + ], + "@local.copy": [ + "parameter_list.copy_text" + ], + "@local.copied": [ + "parameter_list.copied_text" + ] + } }, { "type": "text", diff --git a/packages/app-data/sheets/template/user_info.json b/packages/app-data/sheets/template/user_info.json new file mode 100644 index 0000000000..deb6cccd00 --- /dev/null +++ b/packages/app-data/sheets/template/user_info.json @@ -0,0 +1,610 @@ +{ + "flow_type": "template", + "flow_name": "user_info", + "status": "released", + "rows": [ + { + "type": "title", + "name": "title", + "value": "@global.user_info", + "_translations": { + "value": {} + }, + "_nested_name": "title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.user_info", + "matchedExpression": "@global.user_info", + "type": "global", + "fieldName": "user_info" + } + ] + }, + "_dynamicDependencies": { + "@global.user_info": [ + "value" + ] + } + }, + { + "type": "text", + "name": "name", + "value": "What is your name or nickname?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "name" + }, + { + "name": "user_name", + "value": "@fields.user_name", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "user_name", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.user_name", + "matchedExpression": "@fields.user_name", + "type": "fields", + "fieldName": "user_name" + } + ] + }, + "_dynamicDependencies": { + "@fields.user_name": [ + "value" + ] + } + }, + { + "type": "text_box", + "name": "text_box", + "value": "@local.user_name", + "_translations": { + "value": {} + }, + "condition": "@local.user_name != @global.user_name_default", + "parameter_list": { + "placeholder": "@global.tap_and_type" + }, + "_nested_name": "text_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.user_name", + "matchedExpression": "@local.user_name", + "type": "local", + "fieldName": "user_name" + } + ], + "condition": [ + { + "fullExpression": "@local.user_name != @global.user_name_default", + "matchedExpression": "@local.user_name", + "type": "local", + "fieldName": "user_name" + }, + { + "fullExpression": "@local.user_name != @global.user_name_default", + "matchedExpression": "@global.user_name_default", + "type": "global", + "fieldName": "user_name_default" + } + ], + "parameter_list": { + "placeholder": [ + { + "fullExpression": "@global.tap_and_type", + "matchedExpression": "@global.tap_and_type", + "type": "global", + "fieldName": "tap_and_type" + } + ] + } + }, + "_dynamicDependencies": { + "@local.user_name": [ + "value", + "condition" + ], + "@global.user_name_default": [ + "condition" + ], + "@global.tap_and_type": [ + "parameter_list.placeholder" + ] + } + }, + { + "type": "text_box", + "name": "text_box", + "condition": "@local.user_name == @global.user_name_default", + "parameter_list": { + "placeholder": "@global.tap_and_type" + }, + "_nested_name": "text_box", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.user_name == @global.user_name_default", + "matchedExpression": "@local.user_name", + "type": "local", + "fieldName": "user_name" + }, + { + "fullExpression": "@local.user_name == @global.user_name_default", + "matchedExpression": "@global.user_name_default", + "type": "global", + "fieldName": "user_name_default" + } + ], + "parameter_list": { + "placeholder": [ + { + "fullExpression": "@global.tap_and_type", + "matchedExpression": "@global.tap_and_type", + "type": "global", + "fieldName": "tap_and_type" + } + ] + } + }, + "_dynamicDependencies": { + "@local.user_name": [ + "condition" + ], + "@global.user_name_default": [ + "condition" + ], + "@global.tap_and_type": [ + "parameter_list.placeholder" + ] + } + }, + { + "type": "text", + "name": "gender", + "value": "What is your gender?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "parameter_list": { + "style": "emphasised" + }, + "_nested_name": "gender" + }, + { + "name": "answer_list", + "value": [ + "name:male | text: Man", + "name:female | text: Woman", + "name:prefer_not_to_say | text: Prefer not to say" + ], + "type": "set_variable", + "_nested_name": "answer_list" + }, + { + "type": "combo_box", + "name": "combo_box", + "value": "@fields.user_gender", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "user_gender", + "this.value" + ], + "_raw": "changed | set_field: user_gender: @local.combo_box", + "_cleaned": "changed | set_field: user_gender: @local.combo_box" + } + ], + "parameter_list": { + "answer_list": "@local.answer_list", + "placeholder": "@global.tap_and_choose", + "input_allowed": "false" + }, + "_nested_name": "combo_box", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.user_gender", + "matchedExpression": "@fields.user_gender", + "type": "fields", + "fieldName": "user_gender" + } + ], + "action_list": { + "0": { + "_raw": [ + { + "fullExpression": "changed | set_field: user_gender: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: user_gender: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + } + }, + "parameter_list": { + "answer_list": [ + { + "fullExpression": "@local.answer_list", + "matchedExpression": "@local.answer_list", + "type": "local", + "fieldName": "answer_list" + } + ], + "placeholder": [ + { + "fullExpression": "@global.tap_and_choose", + "matchedExpression": "@global.tap_and_choose", + "type": "global", + "fieldName": "tap_and_choose" + } + ] + } + }, + "_dynamicDependencies": { + "@fields.user_gender": [ + "value" + ], + "@local.combo_box": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.answer_list": [ + "parameter_list.answer_list" + ], + "@global.tap_and_choose": [ + "parameter_list.placeholder" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "user_name", + "`@global.user_name_default`" + ], + "_raw": "completed | set_field: user_name:`@global.user_name_default`", + "_cleaned": "completed | set_field: user_name:`@global.user_name_default`" + }, + { + "trigger": "uncompleted", + "action_id": "set_field", + "args": [ + "user_name", + "`@global.user_name_default`" + ], + "_raw": "uncompleted | set_field: user_name:`@global.user_name_default`", + "_cleaned": "uncompleted | set_field: user_name:`@global.user_name_default`" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "!@local.text_box", + "rows": [ + { + "name": "display_back", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "nav_buttons.display_back" + }, + { + "name": "button_completed", + "value": "@global.save_button", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.save_button", + "matchedExpression": "@global.save_button", + "type": "global", + "fieldName": "save_button" + } + ] + }, + "_dynamicDependencies": { + "@global.save_button": [ + "value" + ] + } + } + ], + "_nested_name": "nav_buttons", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_field: user_name:`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_field: user_name:`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ] + }, + "1": { + "args": { + "1": [ + { + "fullExpression": "`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_field: user_name:`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_field: user_name:`@global.user_name_default`", + "matchedExpression": "`@global.user_name_default", + "type": "raw", + "fieldName": "user_name_default" + } + ] + } + }, + "condition": [ + { + "fullExpression": "!@local.text_box", + "matchedExpression": "!@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + }, + "_dynamicDependencies": { + "`@global.user_name_default": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "!@local.text_box": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_field", + "args": [ + "user_name", + "@local.text_box" + ], + "_raw": "completed | set_field: user_name: @local.text_box", + "_cleaned": "completed | set_field: user_name: @local.text_box" + }, + { + "trigger": "uncompleted", + "action_id": "set_field", + "args": [ + "user_name", + "@local.text_box" + ], + "_raw": "uncompleted | set_field: user_name: @local.text_box", + "_cleaned": "uncompleted | set_field: user_name: @local.text_box" + }, + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "condition": "@local.text_box", + "rows": [ + { + "name": "display_back", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "nav_buttons.display_back" + }, + { + "name": "button_completed", + "value": "@global.save_button", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.save_button", + "matchedExpression": "@global.save_button", + "type": "global", + "fieldName": "save_button" + } + ] + }, + "_dynamicDependencies": { + "@global.save_button": [ + "value" + ] + } + } + ], + "_nested_name": "nav_buttons", + "_dynamicFields": { + "action_list": { + "0": { + "args": { + "1": [ + { + "fullExpression": "@local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + }, + "_raw": [ + { + "fullExpression": "completed | set_field: user_name: @local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ], + "_cleaned": [ + { + "fullExpression": "completed | set_field: user_name: @local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + }, + "1": { + "args": { + "1": [ + { + "fullExpression": "@local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + }, + "_raw": [ + { + "fullExpression": "uncompleted | set_field: user_name: @local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ], + "_cleaned": [ + { + "fullExpression": "uncompleted | set_field: user_name: @local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@local.text_box", + "matchedExpression": "@local.text_box", + "type": "local", + "fieldName": "text_box" + } + ] + }, + "_dynamicDependencies": { + "@local.text_box": [ + "action_list.0.args.1", + "action_list.0._raw", + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned", + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_settings.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_box_1.json b/packages/app-data/sheets/template/w_1on1_box_1.json deleted file mode 100644 index 2e3bff3dfa..0000000000 --- a/packages/app-data/sheets/template/w_1on1_box_1.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "flow_type": "template", - "module": "1on1", - "flow_name": "w_1on1_box_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "w_1on1_hp_challenges", - "value": "w_1on1_hp_challenges", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "rows": [], - "_nested_name": "w_1on1_hp_challenges", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "matchedExpression": "@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - }, - { - "fullExpression": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "matchedExpression": "!@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_1on1_hp_review_mood": [ - "condition" - ], - "!@fields.w_1on1_hp_review_mood": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "w_1on1_hp_highlights", - "value": "w_1on1_hp_highlights", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "rows": [], - "_nested_name": "w_1on1_hp_highlights", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "matchedExpression": "@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - }, - { - "fullExpression": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "matchedExpression": "!@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_1on1_hp_review_mood": [ - "condition" - ], - "!@fields.w_1on1_hp_review_mood": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_box_2.json b/packages/app-data/sheets/template/w_1on1_box_2.json deleted file mode 100644 index a7c1a085ac..0000000000 --- a/packages/app-data/sheets/template/w_1on1_box_2.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "flow_type": "template", - "module": "1on1", - "flow_name": "w_1on1_box_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "w_1on1_hp_highlights", - "value": "w_1on1_hp_highlights", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "rows": [], - "_nested_name": "w_1on1_hp_highlights", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "matchedExpression": "@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - }, - { - "fullExpression": "!(@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood)", - "matchedExpression": "!@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_1on1_hp_review_mood": [ - "condition" - ], - "!@fields.w_1on1_hp_review_mood": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "w_1on1_hp_challenges", - "value": "w_1on1_hp_challenges", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "rows": [], - "_nested_name": "w_1on1_hp_challenges", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "matchedExpression": "@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - }, - { - "fullExpression": "@fields.w_1on1_hp_review_mood == \"happy\" || !@fields.w_1on1_hp_review_mood", - "matchedExpression": "!@fields.w_1on1_hp_review_mood", - "type": "fields", - "fieldName": "w_1on1_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_1on1_hp_review_mood": [ - "condition" - ], - "!@fields.w_1on1_hp_review_mood": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_care_together.json b/packages/app-data/sheets/template/w_1on1_care_together.json index 01f83dc47e..84f5498f45 100644 --- a/packages/app-data/sheets/template/w_1on1_care_together.json +++ b/packages/app-data/sheets/template/w_1on1_care_together.json @@ -143,15 +143,10 @@ "rows": [ { "name": "text_1", - "value": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "value": "You always can change your @global.workshop day and your group name in the @global.weekly_workshop_options.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -159,7 +154,13 @@ "_dynamicFields": { "value": [ { - "fullExpression": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "fullExpression": "You always can change your @global.workshop day and your group name in the @global.weekly_workshop_options.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "You always can change your @global.workshop day and your group name in the @global.weekly_workshop_options.", "matchedExpression": "@global.weekly_workshop_options", "type": "global", "fieldName": "weekly_workshop_options" @@ -167,6 +168,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@global.weekly_workshop_options": [ "value" ] diff --git a/packages/app-data/sheets/template/w_1on1_hp_challenges.json b/packages/app-data/sheets/template/w_1on1_hp_challenges.json index 10f16c70d4..a402414c73 100644 --- a/packages/app-data/sheets/template/w_1on1_hp_challenges.json +++ b/packages/app-data/sheets/template/w_1on1_hp_challenges.json @@ -53,36 +53,36 @@ } }, { - "name": "hp_review_mood", - "value": "_hp_review_mood", + "name": "hp_mood", + "value": "_hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_review_mood" + "_nested_name": "hp_mood" }, { - "name": "workshop_hp_review_mood", - "value": "@local.workshop@local.hp_review_mood", + "name": "workshop_hp_mood", + "value": "@local.workshop@local.hp_mood", "_translations": { "value": {} }, "type": "set_variable", - "_nested_name": "workshop_hp_review_mood", + "_nested_name": "workshop_hp_mood", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_mood", "matchedExpression": "@local.workshop", "type": "local", "fieldName": "workshop" }, { - "fullExpression": "@local.workshop@local.hp_review_mood", - "matchedExpression": "@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_mood", + "matchedExpression": "@local.hp_mood", "type": "local", - "fieldName": "hp_review_mood" + "fieldName": "hp_mood" } ] }, @@ -90,73 +90,118 @@ "@local.workshop": [ "value" ], - "@local.hp_review_mood": [ + "@local.hp_mood": [ "value" ] } }, { - "type": "text", - "name": "top_text", - "value": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "name": "hp_challenge", + "value": "_hp_challenge", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, - "_nested_name": "top_text" + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "hp_challenge" }, { - "type": "text", - "name": "question_text_happy", - "value": "Did you have any challenges when trying to spend time with your teen?", + "name": "workshop_hp_challenge", + "value": "@local.workshop@local.hp_challenge", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "parameter_list": { - "style": "emphasised" + "value": {} }, - "_nested_name": "question_text_happy", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_hp_challenge", "_dynamicFields": { - "condition": [ + "value": [ { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.workshop@local.hp_challenge", + "matchedExpression": "@local.workshop", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "workshop" }, { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.workshop@local.hp_challenge", + "matchedExpression": "@local.hp_challenge", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "hp_challenge" } ] }, "_dynamicDependencies": { - "@local.workshop_hp_review_mood": [ - "condition", - "condition" + "@local.workshop": [ + "value" + ], + "@local.hp_challenge": [ + "value" + ] + } + }, + { + "name": "hp_challenge_list", + "value": [ + "_hp_challenge_list" + ], + "type": "set_variable", + "_nested_name": "hp_challenge_list" + }, + { + "name": "workshop_hp_challenge_list", + "value": [ + "@local.workshop@local.hp_challenge_list" + ], + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_hp_challenge_list", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.hp_challenge_list", + "type": "local", + "fieldName": "hp_challenge_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ], + "@local.hp_challenge_list": [ + "value.0" ] } }, { "type": "text", - "name": "question_text_ok_sad", - "value": "What challenge did you have when trying to spend time with your teen?", + "name": "top_text", + "value": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_nested_name": "top_text" + }, + { + "type": "text", + "name": "question_text", + "value": "Did you have any challenges when trying to spend time with your teen?", "_translations": { "value": { "tz_sw": true, @@ -167,33 +212,10 @@ "za_zu": true } }, - "condition": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", "parameter_list": { "style": "emphasised" }, - "_nested_name": "question_text_ok_sad", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - }, - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_hp_review_mood": [ - "condition", - "condition" - ] - } + "_nested_name": "question_text" }, { "name": "text_challenge_1", @@ -468,26 +490,6 @@ ] } }, - { - "name": "combo_box_tracker", - "value": "w_1on1_hp_challenge_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_tracker" - }, - { - "name": "combo_box_final", - "value": "w_1on1_hp_challenge_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_final" - }, { "type": "combo_box", "name": "combo_box", @@ -496,11 +498,21 @@ "trigger": "changed", "action_id": "set_field", "args": [ - "@local.combo_box_tracker", + "@local.workshop_hp_challenge", "this.value" ], - "_raw": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "_cleaned": "changed | set_field: @local.combo_box_tracker: @local.combo_box" + "_raw": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.workshop_hp_challenge_list", + "@fields.@local.workshop_hp_challenge_list, @local.combo_box" + ], + "_raw": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box" } ], "parameter_list": { @@ -514,22 +526,82 @@ "args": { "0": [ { - "fullExpression": "@local.combo_box_tracker", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "@local.workshop_hp_challenge", + "matchedExpression": "@local.workshop_hp_challenge", + "type": "local", + "fieldName": "workshop_hp_challenge" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", + "type": "local", + "fieldName": "workshop_hp_challenge" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", + "type": "local", + "fieldName": "workshop_hp_challenge" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.workshop_hp_challenge_list", + "matchedExpression": "@local.workshop_hp_challenge_list", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge_list" + } + ], + "1": [ + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" } ] }, "_raw": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge_list" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -537,13 +609,19 @@ ], "_cleaned": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge_list" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -571,14 +649,25 @@ } }, "_dynamicDependencies": { - "@local.combo_box_tracker": [ + "@local.workshop_hp_challenge": [ "action_list.0.args.0", "action_list.0._raw", "action_list.0._cleaned" ], "@local.combo_box": [ "action_list.0._raw", - "action_list.0._cleaned" + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.workshop_hp_challenge_list": [ + "action_list.1.args.0", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._raw", + "action_list.1._cleaned", + "action_list.1._cleaned" ], "@local.answer_list": [ "parameter_list.answer_list" @@ -2431,85 +2520,11 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.combo_box_final", - "@local.combo_box" - ], - "_raw": "completed | set_field:@local.combo_box_final: @local.combo_box", - "_cleaned": "completed | set_field:@local.combo_box_final: @local.combo_box" } ], "rows": [], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "2": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_final", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - } - ], - "1": [ - { - "fullExpression": "@local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.combo_box_final": [ - "action_list.2.args.0", - "action_list.2._raw", - "action_list.2._cleaned" - ], - "@local.combo_box": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned" - ] - } + "_nested_name": "nav_buttons" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_hp_highlights.json b/packages/app-data/sheets/template/w_1on1_hp_highlights.json index 23ec3dffec..3b88296069 100644 --- a/packages/app-data/sheets/template/w_1on1_hp_highlights.json +++ b/packages/app-data/sheets/template/w_1on1_hp_highlights.json @@ -902,5 +902,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_hp_review.json b/packages/app-data/sheets/template/w_1on1_hp_review.json index 96940d323b..935e9a0de4 100644 --- a/packages/app-data/sheets/template/w_1on1_hp_review.json +++ b/packages/app-data/sheets/template/w_1on1_hp_review.json @@ -30,215 +30,23 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_1on1", + "name": "workshop", + "value": "w_1on1", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_1on1", - "matchedExpression": "@data.workshop.w_1on1", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_1on1": [ - "value" - ] - } + "_nested_name": "home_practice_review.workshop" }, { "type": "nested_properties", "name": "workshop_activity", "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.spend_time", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.spend_time", - "matchedExpression": "@data.habit.spend_time", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.spend_time": [ - "value" - ] - } - }, { "type": "nested_properties", "name": "content_box", "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_spend_time > 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "matchedExpression": "@data.habit.spend_time.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_spend_time > 0", - "matchedExpression": "@fields.weekly_parent_point_spend_time", - "type": "fields", - "fieldName": "weekly_parent_point_spend_time" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.spend_time.in_text_title": [ - "value" - ], - "@fields.weekly_parent_point_spend_time": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "Your goal was to spend one-on-one time with your teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_spend_time == 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_spend_time == 0", - "matchedExpression": "@fields.weekly_parent_point_spend_time", - "type": "fields", - "fieldName": "weekly_parent_point_spend_time" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_spend_time": [ - "condition" - ] - } - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_1.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_1.text", - "matchedExpression": "@data.praise.hp_praise_message_1.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_1.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_6.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_6.text", - "matchedExpression": "@data.praise.hp_praise_message_6.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_6.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_7.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_7.text", - "matchedExpression": "@data.praise.hp_praise_message_7.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_7.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, { "type": "nested_properties", "name": "box_2", @@ -247,14 +55,14 @@ { "type": "nested_properties", "name": "box_1", - "value": "w_1on1_box_1", + "value": "w_1on1_hp_challenges", "rows": [], "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1" }, { "type": "nested_properties", "name": "box_2", - "value": "w_1on1_box_2", + "value": "w_1on1_hp_highlights", "rows": [], "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_2" } @@ -263,22 +71,6 @@ } ], "_nested_name": "home_practice_review.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_text" } ], "_nested_name": "home_practice_review.workshop_activity" @@ -287,5 +79,5 @@ "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_1on1_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_intro_text.json b/packages/app-data/sheets/template/w_1on1_intro_text.json index 99c34fda87..d9c3e69142 100644 --- a/packages/app-data/sheets/template/w_1on1_intro_text.json +++ b/packages/app-data/sheets/template/w_1on1_intro_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "description_text", - "value": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "value": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them.\n\nRemember, a family with good understanding lives in harmony.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "suggestions.description_text" diff --git a/packages/app-data/sheets/template/w_1on1_m_hp_reminder.json b/packages/app-data/sheets/template/w_1on1_m_hp_reminder.json index 9a3f118f78..5de9ae9b1e 100644 --- a/packages/app-data/sheets/template/w_1on1_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_1on1_m_hp_reminder.json @@ -60,5 +60,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_praise.json b/packages/app-data/sheets/template/w_1on1_m_praise.json index c1e1fcabd0..259542fe29 100644 --- a/packages/app-data/sheets/template/w_1on1_m_praise.json +++ b/packages/app-data/sheets/template/w_1on1_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_relax.json b/packages/app-data/sheets/template/w_1on1_m_relax.json index 1af86ab8ff..b0496ff152 100644 --- a/packages/app-data/sheets/template/w_1on1_m_relax.json +++ b/packages/app-data/sheets/template/w_1on1_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_something_fun.json b/packages/app-data/sheets/template/w_1on1_m_something_fun.json index 7954452448..4ff9e8c5af 100644 --- a/packages/app-data/sheets/template/w_1on1_m_something_fun.json +++ b/packages/app-data/sheets/template/w_1on1_m_something_fun.json @@ -38,5 +38,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_w_in_progress.json b/packages/app-data/sheets/template/w_1on1_m_w_in_progress.json index 02740cf4cc..e9a1b68331 100644 --- a/packages/app-data/sheets/template/w_1on1_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_1on1_m_w_in_progress.json @@ -75,5 +75,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_w_released.json b/packages/app-data/sheets/template/w_1on1_m_w_released.json index 30bf9db717..b3db197b69 100644 --- a/packages/app-data/sheets/template/w_1on1_m_w_released.json +++ b/packages/app-data/sheets/template/w_1on1_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_1on1_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "name": "workshop_data", "value": "@data.workshop.w_1on1", @@ -105,7 +129,7 @@ "za_zu": true } }, - "condition": "!@fields.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { @@ -125,9 +149,9 @@ ], "condition": [ { - "fullExpression": "!@fields.do_workshops_together", - "matchedExpression": "!@fields.do_workshops_together", - "type": "fields", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] @@ -139,7 +163,7 @@ "@local.workshop_data.in_text_title": [ "value" ], - "!@fields.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } @@ -157,7 +181,7 @@ "za_zu": true } }, - "condition": "@fields.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { @@ -177,9 +201,9 @@ ], "condition": [ { - "fullExpression": "@fields.do_workshops_together", - "matchedExpression": "@fields.do_workshops_together", - "type": "fields", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] @@ -191,7 +215,7 @@ "@local.workshop_data.in_text_title": [ "value" ], - "@fields.do_workshops_together": [ + "@local.do_workshops_together": [ "condition" ] } @@ -203,5 +227,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_w_reminder.json b/packages/app-data/sheets/template/w_1on1_m_w_reminder.json index 53e8f52234..9442c43662 100644 --- a/packages/app-data/sheets/template/w_1on1_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_1on1_m_w_reminder.json @@ -108,5 +108,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_m_w_tomorrow.json b/packages/app-data/sheets/template/w_1on1_m_w_tomorrow.json index 4ab8cafe54..f90cc7b6aa 100644 --- a/packages/app-data/sheets/template/w_1on1_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_1on1_m_w_tomorrow.json @@ -90,15 +90,10 @@ }, { "name": "text_completed", - "value": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "value": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -106,16 +101,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@local.workshop_data.in_text_title": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -123,5 +127,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_1on1_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_messages.json b/packages/app-data/sheets/template/w_1on1_messages.json index 697c2a815e..f8669520d3 100644 --- a/packages/app-data/sheets/template/w_1on1_messages.json +++ b/packages/app-data/sheets/template/w_1on1_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_1on1_tools.json b/packages/app-data/sheets/template/w_1on1_tools.json index 354daef167..064dc84ef9 100644 --- a/packages/app-data/sheets/template/w_1on1_tools.json +++ b/packages/app-data/sheets/template/w_1on1_tools.json @@ -109,16 +109,9 @@ }, { "name": "text_1", - "value": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "value": "Switch off the TV and put phones aside. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_3.text_1" diff --git a/packages/app-data/sheets/template/w_1on1_welcome_individual.json b/packages/app-data/sheets/template/w_1on1_welcome_individual.json index bf3bc32ccf..1b818d5d63 100644 --- a/packages/app-data/sheets/template/w_1on1_welcome_individual.json +++ b/packages/app-data/sheets/template/w_1on1_welcome_individual.json @@ -52,68 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "reply_happy", - "value": "Great!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_celebrate_ending.json b/packages/app-data/sheets/template/w_celebrate_ending.json index 65cefc9590..48a4cc0d9c 100644 --- a/packages/app-data/sheets/template/w_celebrate_ending.json +++ b/packages/app-data/sheets/template/w_celebrate_ending.json @@ -64,7 +64,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/cup.svg", + "value": "plh_images/workshop_modes/individual/final/cup.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_celebrate_intro.json b/packages/app-data/sheets/template/w_celebrate_intro.json index efa9bca392..7541a262b3 100644 --- a/packages/app-data/sheets/template/w_celebrate_intro.json +++ b/packages/app-data/sheets/template/w_celebrate_intro.json @@ -111,7 +111,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/wave.svg", + "value": "plh_images/workshop_modes/individual/final/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_celebrate_reflect_individual.json b/packages/app-data/sheets/template/w_celebrate_reflect_individual.json index b3f6d453c4..d67c1dcd5b 100644 --- a/packages/app-data/sheets/template/w_celebrate_reflect_individual.json +++ b/packages/app-data/sheets/template/w_celebrate_reflect_individual.json @@ -35,7 +35,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/star.svg", + "value": "plh_images/workshop_modes/individual/final/star.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_celebrate_relax.json b/packages/app-data/sheets/template/w_celebrate_relax.json index 6eeb6354d4..ad8c884425 100644 --- a/packages/app-data/sheets/template/w_celebrate_relax.json +++ b/packages/app-data/sheets/template/w_celebrate_relax.json @@ -84,7 +84,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/relax.svg", + "value": "plh_images/workshop_modes/individual/final/relax.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_celebrate_think.json b/packages/app-data/sheets/template/w_celebrate_think.json index 4ac3316101..286cf286a4 100644 --- a/packages/app-data/sheets/template/w_celebrate_think.json +++ b/packages/app-data/sheets/template/w_celebrate_think.json @@ -60,7 +60,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/wave.svg", + "value": "plh_images/workshop_modes/individual/final/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_celebrate_think_text.json b/packages/app-data/sheets/template/w_celebrate_think_text.json index d8c92ade57..19a7ec7341 100644 --- a/packages/app-data/sheets/template/w_celebrate_think_text.json +++ b/packages/app-data/sheets/template/w_celebrate_think_text.json @@ -11,16 +11,9 @@ "rows": [ { "name": "description_text", - "value": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "value": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back on skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "suggestions.description_text" diff --git a/packages/app-data/sheets/template/w_celebrate_tools.json b/packages/app-data/sheets/template/w_celebrate_tools.json index 37541e5995..dbb9b8db54 100644 --- a/packages/app-data/sheets/template/w_celebrate_tools.json +++ b/packages/app-data/sheets/template/w_celebrate_tools.json @@ -100,16 +100,9 @@ }, { "name": "text_1", - "value": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "value": "Be ‘parenting buddies’ to call when you are upset or do not know what to do.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_2.text_1" @@ -149,16 +142,9 @@ }, { "name": "text_1", - "value": "Text each other every week to share what you’ve done well.", + "value": "Text each other every week to share what you have done well.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_3.text_1" diff --git a/packages/app-data/sheets/template/w_celebrate_tools_activity.json b/packages/app-data/sheets/template/w_celebrate_tools_activity.json index af34349280..aa403f25c2 100644 --- a/packages/app-data/sheets/template/w_celebrate_tools_activity.json +++ b/packages/app-data/sheets/template/w_celebrate_tools_activity.json @@ -52,6 +52,63 @@ "value" ] } + }, + { + "type": "nested_properties", + "name": "workshop_activity", + "rows": [ + { + "name": "activity_image", + "value": "plh_images/workshop_modes/group/final/light_bulb.svg", + "_translations": { + "value": {} + }, + "condition": "@field.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "tools_activity.workshop_activity.activity_image", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@field.do_this_workshop_together", + "matchedExpression": "@field.do_this_workshop_together", + "type": "field", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "@field.do_this_workshop_together": [ + "condition" + ] + } + }, + { + "name": "activity_image", + "value": "plh_images/workshop_modes/individual/final/light_bulb.svg", + "_translations": { + "value": {} + }, + "condition": "!@field.do_this_workshop_together", + "type": "set_variable", + "_nested_name": "tools_activity.workshop_activity.activity_image", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@field.do_this_workshop_together", + "matchedExpression": "!@field.do_this_workshop_together", + "type": "field", + "fieldName": "do_this_workshop_together" + } + ] + }, + "_dynamicDependencies": { + "!@field.do_this_workshop_together": [ + "condition" + ] + } + } + ], + "_nested_name": "tools_activity.workshop_activity" } ], "_nested_name": "tools_activity" diff --git a/packages/app-data/sheets/template/w_celebrate_welcome_individual.json b/packages/app-data/sheets/template/w_celebrate_welcome_individual.json index 5bd86e0db4..15c29bbb91 100644 --- a/packages/app-data/sheets/template/w_celebrate_welcome_individual.json +++ b/packages/app-data/sheets/template/w_celebrate_welcome_individual.json @@ -52,83 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/wave.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.activity_image" - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "hidden": true, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "Fantastic! We are proud of you for all you have done over the past weeks.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_celebrate_welcome_together.json b/packages/app-data/sheets/template/w_celebrate_welcome_together.json index a860dd45c0..10296ff065 100644 --- a/packages/app-data/sheets/template/w_celebrate_welcome_together.json +++ b/packages/app-data/sheets/template/w_celebrate_welcome_together.json @@ -39,7 +39,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/final/wave.svg", + "value": "plh_images/workshop_modes/individual/final/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_consequence_home_practice.json b/packages/app-data/sheets/template/w_consequence_home_practice.json index 8086541698..0ba1cf8a3f 100644 --- a/packages/app-data/sheets/template/w_consequence_home_practice.json +++ b/packages/app-data/sheets/template/w_consequence_home_practice.json @@ -67,16 +67,9 @@ "rows": [ { "name": "text_1", - "value": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "value": "Your home practice for this week will be to talk together with your teen about ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "home_practice.workshop_activity.content_box.box_1.text_1" diff --git a/packages/app-data/sheets/template/w_consequence_hp_challenges.json b/packages/app-data/sheets/template/w_consequence_hp_challenges.json index f5d233f832..43a3c992cb 100644 --- a/packages/app-data/sheets/template/w_consequence_hp_challenges.json +++ b/packages/app-data/sheets/template/w_consequence_hp_challenges.json @@ -30,311 +30,18 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 7, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_consequence", + "name": "workshop", + "value": "w_consequence", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_consequence", - "matchedExpression": "@data.workshop.w_consequence", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_consequence": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "introduce a consequence together", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "question_text_happy", - "value": "Did you have any challenges when trying to introduce a consequence together?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_happy" - }, - { - "name": "question_text_ok_sad", - "value": "What was difficult for you about introducing a consequence with your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_ok_sad" - }, - { - "name": "text_challenge_1", - "value": "I got very angry when my teen broke the rule.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "text_challenge_2", - "value": "My teen got very angry with me after I gave the consequence.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "I introduced the consequence without first discussing it with my teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "text_challenge_4", - "value": "I forgot to follow through with the consequence.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4" - }, - { - "name": "text_challenge_5", - "value": "Even with the consequence, my teen still does not follow the rule.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_5" - }, - { - "name": "reply_challenge_5", - "value": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_5" - }, - { - "name": "text_challenge_6", - "value": "We only created a negative consequence, not a positive consequence.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_6" - }, - { - "name": "reply_challenge_6", - "value": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_6" - }, - { - "name": "text_challenge_7", - "value": "My teen suggested being hit as a negative consequence.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_7" - }, - { - "name": "reply_challenge_7", - "value": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_7" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_hp_review.json b/packages/app-data/sheets/template/w_consequence_hp_review.json index 20dcf5ae73..26c0e6ae1e 100644 --- a/packages/app-data/sheets/template/w_consequence_hp_review.json +++ b/packages/app-data/sheets/template/w_consequence_hp_review.json @@ -30,231 +30,18 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_consequence", + "name": "workshop", + "value": "w_consequence", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_consequence", - "matchedExpression": "@data.workshop.w_consequence", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_consequence": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.consequence", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.consequence", - "matchedExpression": "@data.habit.consequence", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.consequence": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_consequence > 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "matchedExpression": "@data.habit.consequence.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_consequence > 0", - "matchedExpression": "@fields.weekly_parent_point_consequence", - "type": "fields", - "fieldName": "weekly_parent_point_consequence" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.consequence.in_text_title": [ - "value" - ], - "@fields.weekly_parent_point_consequence": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_consequence == 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_consequence == 0", - "matchedExpression": "@fields.weekly_parent_point_consequence", - "type": "fields", - "fieldName": "weekly_parent_point_consequence" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_consequence": [ - "condition" - ] - } - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_24.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_24.text", - "matchedExpression": "@data.praise.hp_praise_message_24.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_24.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_19.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_19.text", - "matchedExpression": "@data.praise.hp_praise_message_19.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_19.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_19.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_19.text", - "matchedExpression": "@data.praise.hp_praise_message_19.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_19.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_consequence_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_consequence_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_intro.json b/packages/app-data/sheets/template/w_consequence_intro.json index 931febb8a5..c992a27030 100644 --- a/packages/app-data/sheets/template/w_consequence_intro.json +++ b/packages/app-data/sheets/template/w_consequence_intro.json @@ -63,16 +63,9 @@ "rows": [ { "name": "intro_text", - "value": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "value": "Our actions have consequences: Some consequences happen naturally (“if you break something, you can’t use it anymore”). Other consequences we set as a family to motivate us to follow the rules (“if you come home late, you can’t go out with friends tomorrow”).\n\nHOW you set and use consequences together matters.\n\nGetting consequences right helps teens behave better and makes family life calmer.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "topic_intro.listen.workshop_activity.intro_text" diff --git a/packages/app-data/sheets/template/w_consequence_m_hp_reminder.json b/packages/app-data/sheets/template/w_consequence_m_hp_reminder.json index 5eca31aae2..d9ad8c32f9 100644 --- a/packages/app-data/sheets/template/w_consequence_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_consequence_m_hp_reminder.json @@ -96,5 +96,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_praise.json b/packages/app-data/sheets/template/w_consequence_m_praise.json index 9ddbba19fe..7d83d90789 100644 --- a/packages/app-data/sheets/template/w_consequence_m_praise.json +++ b/packages/app-data/sheets/template/w_consequence_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_relax.json b/packages/app-data/sheets/template/w_consequence_m_relax.json index 2edd1d81b7..e2392e8600 100644 --- a/packages/app-data/sheets/template/w_consequence_m_relax.json +++ b/packages/app-data/sheets/template/w_consequence_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_something_fun.json b/packages/app-data/sheets/template/w_consequence_m_something_fun.json index 3477cc4e0e..1c30ec34ee 100644 --- a/packages/app-data/sheets/template/w_consequence_m_something_fun.json +++ b/packages/app-data/sheets/template/w_consequence_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_w_in_progress.json b/packages/app-data/sheets/template/w_consequence_m_w_in_progress.json index 9fe1f7fdf8..25ed0abc9f 100644 --- a/packages/app-data/sheets/template/w_consequence_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_consequence_m_w_in_progress.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "value": "Complete the @global.workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_in_progress.in_week_message.text" + "_nested_name": "m_workshop_in_progress.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Complete the @global.workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_in_progress.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_w_released.json b/packages/app-data/sheets/template/w_consequence_m_w_released.json index 19361d6a07..1a568083f0 100644 --- a/packages/app-data/sheets/template/w_consequence_m_w_released.json +++ b/packages/app-data/sheets/template/w_consequence_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_consequence_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,104 +63,112 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "value": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "fullExpression": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "value": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "fullExpression": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +180,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_w_reminder.json b/packages/app-data/sheets/template/w_consequence_m_w_reminder.json index f3fd270a3d..5c5df14f8d 100644 --- a/packages/app-data/sheets/template/w_consequence_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_consequence_m_w_reminder.json @@ -39,15 +39,10 @@ "rows": [ { "name": "text", - "value": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "value": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next @global.workshop to get another parenting tool!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -55,16 +50,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "fullExpression": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next @global.workshop to get another parenting tool!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next @global.workshop to get another parenting tool!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@global.parent_app": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -75,5 +79,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_m_w_tomorrow.json b/packages/app-data/sheets/template/w_consequence_m_w_tomorrow.json index 63cf37fdb4..73a9c65da3 100644 --- a/packages/app-data/sheets/template/w_consequence_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_consequence_m_w_tomorrow.json @@ -90,12 +90,10 @@ }, { "name": "text_completed", - "value": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "value": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn useful skills!", "_translations": { "value": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -103,16 +101,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "fullExpression": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn useful skills!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn useful skills!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@local.workshop_data.in_text_title": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -120,5 +127,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_consequence_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_messages.json b/packages/app-data/sheets/template/w_consequence_messages.json index 9cf93b5b65..3d6e83e02b 100644 --- a/packages/app-data/sheets/template/w_consequence_messages.json +++ b/packages/app-data/sheets/template/w_consequence_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_read_1.json b/packages/app-data/sheets/template/w_consequence_read_1.json new file mode 100644 index 0000000000..1c579db793 --- /dev/null +++ b/packages/app-data/sheets/template/w_consequence_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "neg_consequence", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_read_1_temp.json b/packages/app-data/sheets/template/w_consequence_read_1_temp.json deleted file mode 100644 index 8497acee7c..0000000000 --- a/packages/app-data/sheets/template/w_consequence_read_1_temp.json +++ /dev/null @@ -1,348 +0,0 @@ -{ - "flow_type": "template", - "module": "consequence", - "flow_name": "w_consequence_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value", - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_read_3.json b/packages/app-data/sheets/template/w_consequence_read_3.json new file mode 100644 index 0000000000..f6cb48eb52 --- /dev/null +++ b/packages/app-data/sheets/template/w_consequence_read_3.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "consequence", + "flow_name": "w_consequence_read_3", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "pos_consequence", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_read_3_temp.json b/packages/app-data/sheets/template/w_consequence_read_3_temp.json deleted file mode 100644 index 5d9cf64e4d..0000000000 --- a/packages/app-data/sheets/template/w_consequence_read_3_temp.json +++ /dev/null @@ -1,714 +0,0 @@ -{ - "flow_type": "template", - "module": "consequence", - "flow_name": "w_consequence_read_3_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value", - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_male_caregiver": [ - "value" - ], - "@global.w_consequence_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_7.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "matchedExpression": "@global.w_consequence_female_caregiver", - "type": "global", - "fieldName": "w_consequence_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value", - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value", - "value" - ], - "@global.w_consequence_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_8.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_consequence/read_3/slide_9.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "matchedExpression": "@global.w_consequence_teen_boy_1", - "type": "global", - "fieldName": "w_consequence_teen_boy_1" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "matchedExpression": "@global.w_consequence_female_caregiver", - "type": "global", - "fieldName": "w_consequence_female_caregiver" - }, - { - "fullExpression": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "matchedExpression": "@global.w_consequence_male_caregiver", - "type": "global", - "fieldName": "w_consequence_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_consequence_teen_boy_1": [ - "value" - ], - "@global.w_consequence_female_caregiver": [ - "value" - ], - "@global.w_consequence_male_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_consequence.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_consequence_stepper.json b/packages/app-data/sheets/template/w_consequence_stepper.json index fcdca8e023..008cd514d2 100644 --- a/packages/app-data/sheets/template/w_consequence_stepper.json +++ b/packages/app-data/sheets/template/w_consequence_stepper.json @@ -50,12 +50,12 @@ "w_consequence_relax", "w_consequence_reflect_together", "w_consequence_intro", - "w_consequence_read_1_temp", + "w_consequence_read_1", "w_consequence_talk_1", "w_consequence_learn_1_temp", "w_consequence_tools_activity", "w_consequence_talk_2", - "w_consequence_read_3_temp", + "w_consequence_read_3", "w_consequence_talk_3", "w_consequence_try", "w_consequence_home_practice", @@ -87,11 +87,11 @@ "w_consequence_welcome_ind", "w_consequence_relax", "w_consequence_intro", - "w_consequence_read_1_temp", + "w_consequence_read_1", "w_consequence_question_1", "w_consequence_learn_1_temp", "w_consequence_tools_activity", - "w_consequence_read_3_temp", + "w_consequence_read_3", "w_consequence_question_2", "w_consequence_learn_2_temp", "w_consequence_home_practice", diff --git a/packages/app-data/sheets/template/w_consequence_tools.json b/packages/app-data/sheets/template/w_consequence_tools.json index 6b79a83dfa..099f8b6794 100644 --- a/packages/app-data/sheets/template/w_consequence_tools.json +++ b/packages/app-data/sheets/template/w_consequence_tools.json @@ -48,16 +48,9 @@ }, { "name": "text_1", - "value": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "value": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it is okay to say you are disappointed.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_1.text_1" @@ -176,16 +169,9 @@ }, { "name": "text_2", - "value": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "value": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away), CONSISTENT (same every time).", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "hidden": false, "type": "set_variable", diff --git a/packages/app-data/sheets/template/w_consequence_welcome_ind.json b/packages/app-data/sheets/template/w_consequence_welcome_ind.json index 92fadd27d7..539aeb8a9e 100644 --- a/packages/app-data/sheets/template/w_consequence_welcome_ind.json +++ b/packages/app-data/sheets/template/w_consequence_welcome_ind.json @@ -52,101 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "Self-care is a key parenting tool.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "question_text", - "value": "How are you feeling today?", - "_translations": { - "value": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.question_text" - }, - { - "name": "reply_happy", - "value": "So good to hear you are feeling well today. You are incredible!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_crisis_ending.json b/packages/app-data/sheets/template/w_crisis_ending.json index 1425cf850f..38b5a39208 100644 --- a/packages/app-data/sheets/template/w_crisis_ending.json +++ b/packages/app-data/sheets/template/w_crisis_ending.json @@ -39,21 +39,28 @@ "rows": [ { "name": "intro_text", - "value": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "value": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "@field.do_this_workshop_together", "type": "set_variable", "_nested_name": "ending.watch.workshop_activity.intro_text", "_dynamicFields": { + "value": [ + { + "fullExpression": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "@field.do_this_workshop_together", @@ -64,6 +71,10 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value", + "value" + ], "@field.do_this_workshop_together": [ "condition" ] @@ -71,21 +82,28 @@ }, { "name": "intro_text", - "value": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "value": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "!@field.do_this_workshop_together", "type": "set_variable", "_nested_name": "ending.watch.workshop_activity.intro_text", "_dynamicFields": { + "value": [ + { + "fullExpression": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "You have completed your @global.workshop. \n\nThe next @global.workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "!@field.do_this_workshop_together", @@ -96,6 +114,10 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value", + "value" + ], "!@field.do_this_workshop_together": [ "condition" ] diff --git a/packages/app-data/sheets/template/w_crisis_hp_challenges.json b/packages/app-data/sheets/template/w_crisis_hp_challenges.json index 7f4e69ef9d..8e365ea7c7 100644 --- a/packages/app-data/sheets/template/w_crisis_hp_challenges.json +++ b/packages/app-data/sheets/template/w_crisis_hp_challenges.json @@ -30,225 +30,17 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 3, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_crisis", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_crisis", - "matchedExpression": "@data.workshop.w_crisis", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_crisis": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "prepare for a possible crisis with their teens", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "hp_description_second_singular", - "value": "prepare for a possible crisis with your teen", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_second_singular" - }, - { - "name": "text_challenge_1", - "value": "My teen told me that something serious happened to them and I did not know how to handle it.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "reply_challenge_1_has_2_buttons", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1_has_2_buttons" - }, - { - "name": "button_1_a", - "value": "@global.w_solve_tools", + "name": "workshop", + "value": "w_crisis", "_translations": { "value": {} }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_solve_tools" - ], - "_raw": "click | go_to: w_solve_tools", - "_cleaned": "click | go_to: w_solve_tools" - } - ], - "type": "set_variable", - "_nested_name": "home_practice_challenges.button_1_a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_tools", - "matchedExpression": "@global.w_solve_tools", - "type": "global", - "fieldName": "w_solve_tools" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_tools": [ - "value" - ] - } - }, - { - "name": "button_1_b", - "value": "Get support", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.button_1_b" - }, - { - "name": "text_challenge_2", - "value": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "One of us did not feel comfortable.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_hp_review.json b/packages/app-data/sheets/template/w_crisis_hp_review.json index fe382640b9..a46481e115 100644 --- a/packages/app-data/sheets/template/w_crisis_hp_review.json +++ b/packages/app-data/sheets/template/w_crisis_hp_review.json @@ -30,172 +30,17 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_crisis", + "name": "workshop", + "value": "w_crisis", "_translations": { "value": {} }, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_crisis", - "matchedExpression": "@data.workshop.w_crisis", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_crisis": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.safe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.safe", - "matchedExpression": "@data.habit.safe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.safe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_18.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_18.text", - "matchedExpression": "@data.praise.hp_praise_message_18.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_18.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_23.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_23.text", - "matchedExpression": "@data.praise.hp_praise_message_23.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_23.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_23.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_23.text", - "matchedExpression": "@data.praise.hp_praise_message_23.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_23.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_crisis_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_crisis_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_learn_temp.json b/packages/app-data/sheets/template/w_crisis_learn_temp.json index 3e8a8637e7..f0fd2611ce 100644 --- a/packages/app-data/sheets/template/w_crisis_learn_temp.json +++ b/packages/app-data/sheets/template/w_crisis_learn_temp.json @@ -35,16 +35,9 @@ "rows": [ { "name": "intro_text", - "value": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "value": "It is helpful to practice dealing with crisis before something happens.\n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.intro_text" @@ -98,7 +91,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_crisis/learn/slide_5.svg", + "value": "plh_images/workshops/w_crisis/learn/slide_1.svg", "_translations": { "value": {} }, @@ -139,23 +132,16 @@ }, { "name": "text", - "value": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "value": "@global.w_crisis_teen_boy_2: \"I have never done this before. And now they will expel me.\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_1.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "fullExpression": "@global.w_crisis_teen_boy_2: \"I have never done this before. And now they will expel me.\"", "matchedExpression": "@global.w_crisis_teen_boy_2", "type": "global", "fieldName": "w_crisis_teen_boy_2" @@ -215,7 +201,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_crisis/learn/slide_1.svg", + "value": "plh_images/workshops/w_crisis/learn/slide_2.svg", "_translations": { "value": {} }, @@ -224,15 +210,10 @@ }, { "name": "title", - "value": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "value": "Crisis 2: @global.w_crisis_teen_girl_2 gets pregnant", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, @@ -241,44 +222,37 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "matchedExpression": "@global.w_crisis_teen_girl_1", + "fullExpression": "Crisis 2: @global.w_crisis_teen_girl_2 gets pregnant", + "matchedExpression": "@global.w_crisis_teen_girl_2", "type": "global", - "fieldName": "w_crisis_teen_girl_1" + "fieldName": "w_crisis_teen_girl_2" } ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ + "@global.w_crisis_teen_girl_2": [ "value" ] } }, { "name": "text", - "value": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "value": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, I am so ashamed. I do not know what to do.\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_2.box_1.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", + "fullExpression": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, I am so ashamed. I do not know what to do.\"", + "matchedExpression": "@global.w_crisis_teen_girl_2", "type": "global", - "fieldName": "w_crisis_teen_girl_1" + "fieldName": "w_crisis_teen_girl_2" }, { - "fullExpression": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "fullExpression": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, I am so ashamed. I do not know what to do.\"", "matchedExpression": "@global.w_crisis_male_caregiver_1", "type": "global", "fieldName": "w_crisis_male_caregiver_1" @@ -286,7 +260,7 @@ ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ + "@global.w_crisis_teen_girl_2": [ "value" ], "@global.w_crisis_male_caregiver_1": [ @@ -296,15 +270,10 @@ }, { "name": "dashed_box", - "value": "How could you respond to @global.w_crisis_teen_girl_1?", + "value": "How could you respond to @global.w_crisis_teen_girl_2?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, @@ -313,15 +282,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "How could you respond to @global.w_crisis_teen_girl_1?", - "matchedExpression": "@global.w_crisis_teen_girl_1", + "fullExpression": "How could you respond to @global.w_crisis_teen_girl_2?", + "matchedExpression": "@global.w_crisis_teen_girl_2", "type": "global", - "fieldName": "w_crisis_teen_girl_1" + "fieldName": "w_crisis_teen_girl_2" } ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ + "@global.w_crisis_teen_girl_2": [ "value" ] } @@ -341,7 +310,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_crisis/learn/slide_2.svg", + "value": "plh_images/workshops/w_crisis/learn/slide_3.svg", "_translations": { "value": {} }, @@ -350,15 +319,10 @@ }, { "name": "title", - "value": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "value": "Crisis 3: @global.w_crisis_teen_boy_1 makes a girl pregnant", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, @@ -367,70 +331,49 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "matchedExpression": "@global.w_crisis_teen_boy_2", + "fullExpression": "Crisis 3: @global.w_crisis_teen_boy_1 makes a girl pregnant", + "matchedExpression": "@global.w_crisis_teen_boy_1", "type": "global", - "fieldName": "w_crisis_teen_boy_2" + "fieldName": "w_crisis_teen_boy_1" } ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_boy_2": [ + "@global.w_crisis_teen_boy_1": [ "value" ] } }, { "name": "text", - "value": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "value": "@global.w_crisis_teen_boy_1: \"I do not want to have a baby.\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_2.box_2.box_1.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "matchedExpression": "@global.w_crisis_teen_boy_2", - "type": "global", - "fieldName": "w_crisis_teen_boy_2" - }, - { - "fullExpression": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "matchedExpression": "@global.w_crisis_male_caregiver_2", + "fullExpression": "@global.w_crisis_teen_boy_1: \"I do not want to have a baby.\"", + "matchedExpression": "@global.w_crisis_teen_boy_1", "type": "global", - "fieldName": "w_crisis_male_caregiver_2" + "fieldName": "w_crisis_teen_boy_1" } ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_boy_2": [ - "value" - ], - "@global.w_crisis_male_caregiver_2": [ + "@global.w_crisis_teen_boy_1": [ "value" ] } }, { "name": "dashed_box", - "value": "How could you respond to @global.w_crisis_teen_boy_2?", + "value": "How could you respond to @global.w_crisis_teen_boy_1?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, @@ -439,15 +382,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "How could you respond to @global.w_crisis_teen_boy_2?", - "matchedExpression": "@global.w_crisis_teen_boy_2", + "fullExpression": "How could you respond to @global.w_crisis_teen_boy_1?", + "matchedExpression": "@global.w_crisis_teen_boy_1", "type": "global", - "fieldName": "w_crisis_teen_boy_2" + "fieldName": "w_crisis_teen_boy_1" } ] }, "_dynamicDependencies": { - "@global.w_crisis_teen_boy_2": [ + "@global.w_crisis_teen_boy_1": [ "value" ] } @@ -467,7 +410,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_crisis/learn/slide_3.svg", + "value": "plh_images/workshops/w_crisis/learn/slide_4.svg", "_translations": { "value": {} }, @@ -476,15 +419,10 @@ }, { "name": "title", - "value": "Crisis 4: Someone in the family gets sick", + "value": "Crisis 4: Someone in the family may get sick", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, @@ -493,16 +431,9 @@ }, { "name": "text", - "value": "\"The test said I have HIV. I’m scared I’m going to die\"", + "value": "\"The test said I have HIV. I am scared I am going to die.\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_2.box_2.box_2.box_1.text" @@ -534,7 +465,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_crisis/learn/slide_4.svg", + "value": "plh_images/workshops/w_crisis/learn/slide_5.svg", "_translations": { "value": {} }, @@ -575,29 +506,22 @@ }, { "name": "text", - "value": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "value": "@global.w_crisis_teen_girl_1: \"I did not really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I am so scared...\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_2.box_2.box_2.box_2.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "fullExpression": "@global.w_crisis_teen_girl_1: \"I did not really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I am so scared...\"", "matchedExpression": "@global.w_crisis_teen_girl_1", "type": "global", "fieldName": "w_crisis_teen_girl_1" }, { - "fullExpression": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "fullExpression": "@global.w_crisis_teen_girl_1: \"I did not really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I am so scared...\"", "matchedExpression": "@global.w_crisis_female_caregiver", "type": "global", "fieldName": "w_crisis_female_caregiver" diff --git a/packages/app-data/sheets/template/w_crisis_m_hp_reminder.json b/packages/app-data/sheets/template/w_crisis_m_hp_reminder.json index b1f8defa1a..b6a20a9e67 100644 --- a/packages/app-data/sheets/template/w_crisis_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_crisis_m_hp_reminder.json @@ -89,5 +89,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_praise.json b/packages/app-data/sheets/template/w_crisis_m_praise.json index 2752a531a2..363248b106 100644 --- a/packages/app-data/sheets/template/w_crisis_m_praise.json +++ b/packages/app-data/sheets/template/w_crisis_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_relax.json b/packages/app-data/sheets/template/w_crisis_m_relax.json index 20d7b4bf4d..08b90fa756 100644 --- a/packages/app-data/sheets/template/w_crisis_m_relax.json +++ b/packages/app-data/sheets/template/w_crisis_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_something_fun.json b/packages/app-data/sheets/template/w_crisis_m_something_fun.json index 9dafaf7150..914bb7be5a 100644 --- a/packages/app-data/sheets/template/w_crisis_m_something_fun.json +++ b/packages/app-data/sheets/template/w_crisis_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_w_in_progress.json b/packages/app-data/sheets/template/w_crisis_m_w_in_progress.json index d466060d35..3ed7272a87 100644 --- a/packages/app-data/sheets/template/w_crisis_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_crisis_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_w_released.json b/packages/app-data/sheets/template/w_crisis_m_w_released.json index f2ab5d429f..72c91abd35 100644 --- a/packages/app-data/sheets/template/w_crisis_m_w_released.json +++ b/packages/app-data/sheets/template/w_crisis_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_crisis_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,86 +63,94 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "value": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" + }, + { + "fullExpression": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ + "value" + ], + "@global.workshop": [ "value" ], - "!@field.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "value": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" + }, + { + "fullExpression": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ + "value" + ], + "@global.workshop": [ "value" ], - "@field.do_workshops_together": [ + "@local.do_workshops_together": [ "condition" ] } @@ -130,5 +162,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_w_reminder.json b/packages/app-data/sheets/template/w_crisis_m_w_reminder.json index 3df33dc28b..90e1b56979 100644 --- a/packages/app-data/sheets/template/w_crisis_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_crisis_m_w_reminder.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "value": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next @global.workshop to explore how you can do this together with your teen.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_reminder.in_week_message.text" + "_nested_name": "m_workshop_reminder.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next @global.workshop to explore how you can do this together with your teen.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_reminder.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_m_w_tomorrow.json b/packages/app-data/sheets/template/w_crisis_m_w_tomorrow.json index ce7c2d6114..dc3e408c36 100644 --- a/packages/app-data/sheets/template/w_crisis_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_crisis_m_w_tomorrow.json @@ -59,15 +59,10 @@ }, { "name": "text_not_completed", - "value": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "value": "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -75,13 +70,19 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "fullExpression": "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" }, { - "fullExpression": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "fullExpression": "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" @@ -92,6 +93,9 @@ "@global.parent_app": [ "value" ], + "@global.workshop": [ + "value" + ], "@local.workshop_data.in_text_title": [ "value" ] @@ -99,15 +103,10 @@ }, { "name": "text_completed", - "value": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "value": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -115,13 +114,19 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" }, { - "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" @@ -132,6 +137,9 @@ "@local.workshop_data.in_text_title": [ "value" ], + "@global.workshop": [ + "value" + ], "@global.parent_app": [ "value" ] @@ -141,5 +149,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_crisis_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_messages.json b/packages/app-data/sheets/template/w_crisis_messages.json index 205dd1fee2..f5dd63910b 100644 --- a/packages/app-data/sheets/template/w_crisis_messages.json +++ b/packages/app-data/sheets/template/w_crisis_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_read_1.json b/packages/app-data/sheets/template/w_crisis_read_1.json new file mode 100644 index 0000000000..ab9a1a856c --- /dev/null +++ b/packages/app-data/sheets/template/w_crisis_read_1.json @@ -0,0 +1,47 @@ +{ + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "rape", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_read_1_temp.json b/packages/app-data/sheets/template/w_crisis_read_1_temp.json deleted file mode 100644 index 96e943b3ef..0000000000 --- a/packages/app-data/sheets/template/w_crisis_read_1_temp.json +++ /dev/null @@ -1,480 +0,0 @@ -{ - "flow_type": "template", - "module": "crisis", - "flow_name": "w_crisis_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - }, - { - "fullExpression": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ - "value" - ], - "@global.w_crisis_female_caregiver": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ - "value" - ], - "@global.w_crisis_female_caregiver": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ - "value" - ], - "@global.w_crisis_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "matchedExpression": "@global.w_crisis_adult_friend", - "type": "global", - "fieldName": "w_crisis_adult_friend" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - }, - { - "fullExpression": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_girl_1": [ - "value", - "value" - ], - "@global.w_crisis_adult_friend": [ - "value" - ], - "@global.w_crisis_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - }, - { - "fullExpression": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_female_caregiver": [ - "value" - ], - "@global.w_crisis_teen_girl_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_1/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "matchedExpression": "@global.w_crisis_female_caregiver", - "type": "global", - "fieldName": "w_crisis_female_caregiver" - }, - { - "fullExpression": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "matchedExpression": "@global.w_crisis_teen_girl_1", - "type": "global", - "fieldName": "w_crisis_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_female_caregiver": [ - "value" - ], - "@global.w_crisis_teen_girl_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_read_2.json b/packages/app-data/sheets/template/w_crisis_read_2.json new file mode 100644 index 0000000000..1b28e9c528 --- /dev/null +++ b/packages/app-data/sheets/template/w_crisis_read_2.json @@ -0,0 +1,47 @@ +{ + "flow_type": "template", + "module": "crisis", + "flow_name": "w_crisis_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "violence", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_read_2_temp.json b/packages/app-data/sheets/template/w_crisis_read_2_temp.json deleted file mode 100644 index 7d219047b6..0000000000 --- a/packages/app-data/sheets/template/w_crisis_read_2_temp.json +++ /dev/null @@ -1,440 +0,0 @@ -{ - "flow_type": "template", - "module": "crisis", - "flow_name": "w_crisis_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - }, - { - "fullExpression": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_male_caregiver_1": [ - "value" - ], - "@global.w_crisis_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - }, - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_boy_1": [ - "value" - ], - "@global.w_crisis_male_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - }, - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_boy_1": [ - "value" - ], - "@global.w_crisis_male_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - }, - { - "fullExpression": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_male_caregiver_1": [ - "value" - ], - "@global.w_crisis_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_crisis/read_2/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "matchedExpression": "@global.w_crisis_teen_boy_1", - "type": "global", - "fieldName": "w_crisis_teen_boy_1" - }, - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - }, - { - "fullExpression": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "matchedExpression": "@global.w_crisis_male_caregiver_1", - "type": "global", - "fieldName": "w_crisis_male_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_crisis_teen_boy_1": [ - "value" - ], - "@global.w_crisis_male_caregiver_1": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_crisis.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_crisis_reflect_together.json b/packages/app-data/sheets/template/w_crisis_reflect_together.json index 3db761f3cf..a222c99a7e 100644 --- a/packages/app-data/sheets/template/w_crisis_reflect_together.json +++ b/packages/app-data/sheets/template/w_crisis_reflect_together.json @@ -31,7 +31,7 @@ "rows": [ { "name": "workshop_data", - "value": "@data.workshop.w_safe", + "value": "@data.workshop.w_crisis", "_translations": { "value": {} }, @@ -40,15 +40,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@data.workshop.w_safe", - "matchedExpression": "@data.workshop.w_safe", + "fullExpression": "@data.workshop.w_crisis", + "matchedExpression": "@data.workshop.w_crisis", "type": "data", "fieldName": "workshop" } ] }, "_dynamicDependencies": { - "@data.workshop.w_safe": [ + "@data.workshop.w_crisis": [ "value" ] } diff --git a/packages/app-data/sheets/template/w_crisis_stepper.json b/packages/app-data/sheets/template/w_crisis_stepper.json index 50ea3113df..e5343bef51 100644 --- a/packages/app-data/sheets/template/w_crisis_stepper.json +++ b/packages/app-data/sheets/template/w_crisis_stepper.json @@ -50,9 +50,9 @@ "w_crisis_relax", "w_crisis_reflect_together", "w_crisis_intro", - "w_crisis_read_1_temp", + "w_crisis_read_1", "w_crisis_talk_1", - "w_crisis_read_2_temp", + "w_crisis_read_2", "w_crisis_talk_2", "w_crisis_tools_activity", "w_crisis_learn_temp", @@ -85,9 +85,9 @@ "w_crisis_welcome_individual", "w_crisis_relax", "w_crisis_intro", - "w_crisis_read_1_temp", + "w_crisis_read_1", "w_crisis_question_1", - "w_crisis_read_2_temp", + "w_crisis_read_2", "w_crisis_question_2", "w_crisis_tools_activity", "w_crisis_learn_temp", diff --git a/packages/app-data/sheets/template/w_crisis_tools.json b/packages/app-data/sheets/template/w_crisis_tools.json index f63ab97954..887c832a87 100644 --- a/packages/app-data/sheets/template/w_crisis_tools.json +++ b/packages/app-data/sheets/template/w_crisis_tools.json @@ -48,16 +48,9 @@ }, { "name": "text_1", - "value": "Stay calm. Ask yourself ‘what does my teen need right now’", + "value": "Stay calm. Ask yourself \"What does my teen need right now?\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_1.text_1" diff --git a/packages/app-data/sheets/template/w_crisis_welcome_individual.json b/packages/app-data/sheets/template/w_crisis_welcome_individual.json index 42bd4bba46..3e884e5212 100644 --- a/packages/app-data/sheets/template/w_crisis_welcome_individual.json +++ b/packages/app-data/sheets/template/w_crisis_welcome_individual.json @@ -52,101 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "We care about you, and how life is treating you.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "question_text", - "value": "How are you feeling today?", - "_translations": { - "value": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.question_text" - }, - { - "name": "reply_happy", - "value": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_instruct_hp_box_1.json b/packages/app-data/sheets/template/w_instruct_hp_box_1.json deleted file mode 100644 index 1ea465775b..0000000000 --- a/packages/app-data/sheets/template/w_instruct_hp_box_1.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "flow_type": "template", - "module": "instruct", - "flow_name": "w_instruct_hp_box_1", - "status": "released", - "rows": [ - { - "type": "template", - "name": "w_instruct_hp_challenges", - "value": "w_instruct_hp_challenges", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "rows": [], - "_nested_name": "w_instruct_hp_challenges", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "matchedExpression": "@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - }, - { - "fullExpression": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "matchedExpression": "!@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_instruct_hp_review_mood": [ - "condition" - ], - "!@fields.w_instruct_hp_review_mood": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "w_instruct_hp_highlights", - "value": "w_instruct_hp_highlights", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "rows": [], - "_nested_name": "w_instruct_hp_highlights", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "matchedExpression": "@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - }, - { - "fullExpression": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "matchedExpression": "!@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_instruct_hp_review_mood": [ - "condition" - ], - "!@fields.w_instruct_hp_review_mood": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_hp_box_2.json b/packages/app-data/sheets/template/w_instruct_hp_box_2.json deleted file mode 100644 index deff1e6f08..0000000000 --- a/packages/app-data/sheets/template/w_instruct_hp_box_2.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "flow_type": "template", - "module": "instruct", - "flow_name": "w_instruct_hp_box_2", - "status": "released", - "rows": [ - { - "type": "template", - "name": "w_instruct_hp_highlights", - "value": "w_instruct_hp_highlights", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "rows": [], - "_nested_name": "w_instruct_hp_highlights", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "matchedExpression": "@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - }, - { - "fullExpression": "!(@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood)", - "matchedExpression": "!@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_instruct_hp_review_mood": [ - "condition" - ], - "!@fields.w_instruct_hp_review_mood": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "w_instruct_hp_challenges", - "value": "w_instruct_hp_challenges", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "condition": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "rows": [], - "_nested_name": "w_instruct_hp_challenges", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "matchedExpression": "@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - }, - { - "fullExpression": "@fields.w_instruct_hp_review_mood == \"happy\" || !@fields.w_instruct_hp_review_mood", - "matchedExpression": "!@fields.w_instruct_hp_review_mood", - "type": "fields", - "fieldName": "w_instruct_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@fields.w_instruct_hp_review_mood": [ - "condition" - ], - "!@fields.w_instruct_hp_review_mood": [ - "condition" - ] - } - } - ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_hp_challenges.json b/packages/app-data/sheets/template/w_instruct_hp_challenges.json index 3801060ed0..10496f5227 100644 --- a/packages/app-data/sheets/template/w_instruct_hp_challenges.json +++ b/packages/app-data/sheets/template/w_instruct_hp_challenges.json @@ -53,36 +53,36 @@ } }, { - "name": "hp_review_mood", - "value": "_hp_review_mood", + "name": "hp_mood", + "value": "_hp_mood", "_translations": { "value": {} }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "hp_review_mood" + "_nested_name": "hp_mood" }, { - "name": "workshop_hp_review_mood", - "value": "@local.workshop@local.hp_review_mood", + "name": "workshop_hp_mood", + "value": "@local.workshop@local.hp_mood", "_translations": { "value": {} }, "type": "set_variable", - "_nested_name": "workshop_hp_review_mood", + "_nested_name": "workshop_hp_mood", "_dynamicFields": { "value": [ { - "fullExpression": "@local.workshop@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_mood", "matchedExpression": "@local.workshop", "type": "local", "fieldName": "workshop" }, { - "fullExpression": "@local.workshop@local.hp_review_mood", - "matchedExpression": "@local.hp_review_mood", + "fullExpression": "@local.workshop@local.hp_mood", + "matchedExpression": "@local.hp_mood", "type": "local", - "fieldName": "hp_review_mood" + "fieldName": "hp_mood" } ] }, @@ -90,64 +90,109 @@ "@local.workshop": [ "value" ], - "@local.hp_review_mood": [ + "@local.hp_mood": [ "value" ] } }, { - "name": "number_of_challenges", - "value": 4, + "name": "hp_challenge", + "value": "_hp_challenge", + "_translations": { + "value": {} + }, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "number_of_challenges" + "_nested_name": "hp_challenge" }, { - "type": "text", - "name": "question_text_happy", - "value": "Did you have any challenges?", + "name": "workshop_hp_challenge", + "value": "@local.workshop@local.hp_challenge", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "parameter_list": { - "style": "emphasised" + "value": {} }, - "_nested_name": "question_text_happy", + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_hp_challenge", "_dynamicFields": { - "condition": [ + "value": [ { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.workshop@local.hp_challenge", + "matchedExpression": "@local.workshop", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "workshop" }, { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"happy\" || !@fields.@local.workshop_hp_review_mood", - "matchedExpression": "@local.workshop_hp_review_mood", + "fullExpression": "@local.workshop@local.hp_challenge", + "matchedExpression": "@local.hp_challenge", "type": "local", - "fieldName": "workshop_hp_review_mood" + "fieldName": "hp_challenge" } ] }, "_dynamicDependencies": { - "@local.workshop_hp_review_mood": [ - "condition", - "condition" + "@local.workshop": [ + "value" + ], + "@local.hp_challenge": [ + "value" ] } }, + { + "name": "hp_challenge_list", + "value": [ + "_hp_challenge_list" + ], + "type": "set_variable", + "_nested_name": "hp_challenge_list" + }, + { + "name": "workshop_hp_challenge_list", + "value": [ + "@local.workshop@local.hp_challenge_list" + ], + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "workshop_hp_challenge_list", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + }, + { + "fullExpression": "@local.workshop@local.hp_challenge_list", + "matchedExpression": "@local.hp_challenge_list", + "type": "local", + "fieldName": "hp_challenge_list" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ], + "@local.hp_challenge_list": [ + "value.0" + ] + } + }, + { + "name": "number_of_challenges", + "value": 4, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "number_of_challenges" + }, { "type": "text", - "name": "question_text_ok_sad", - "value": "What challenge did you have?", + "name": "question_text_happy", + "value": "Did you have any challenges?", "_translations": { "value": { "tz_sw": true, @@ -158,33 +203,10 @@ "za_zu": true } }, - "condition": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", "parameter_list": { "style": "emphasised" }, - "_nested_name": "question_text_ok_sad", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - }, - { - "fullExpression": "@fields.@local.workshop_hp_review_mood == \"ok\" || @fields.@local.workshop_hp_review_mood == \"sad\"", - "matchedExpression": "@local.workshop_hp_review_mood", - "type": "local", - "fieldName": "workshop_hp_review_mood" - } - ] - }, - "_dynamicDependencies": { - "@local.workshop_hp_review_mood": [ - "condition", - "condition" - ] - } + "_nested_name": "question_text_happy" }, { "name": "text_challenge_1", @@ -378,26 +400,6 @@ ] } }, - { - "name": "combo_box_tracker", - "value": "w_instruct_hp_challenge_tracker", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_tracker" - }, - { - "name": "combo_box_final", - "value": "w_instruct_hp_challenge_final", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_final" - }, { "type": "combo_box", "name": "combo_box", @@ -406,15 +408,24 @@ "trigger": "changed", "action_id": "set_field", "args": [ - "@local.combo_box_tracker", + "@local.workshop_hp_challenge", "this.value" ], - "_raw": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "_cleaned": "changed | set_field: @local.combo_box_tracker: @local.combo_box" + "_raw": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.workshop_hp_challenge_list", + "@fields.@local.workshop_hp_challenge_list, @local.combo_box" + ], + "_raw": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "_cleaned": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box" } ], "parameter_list": { - "text": "@local.top_text", "answer_list": "@local.answer_list", "placeholder": "@global.tap_and_choose" }, @@ -425,22 +436,22 @@ "args": { "0": [ { - "fullExpression": "@local.combo_box_tracker", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "@local.workshop_hp_challenge", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" } ] }, "_raw": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -448,13 +459,79 @@ ], "_cleaned": [ { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge", "type": "local", - "fieldName": "combo_box_tracker" + "fieldName": "workshop_hp_challenge" }, { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", + "fullExpression": "changed | set_field: @local.workshop_hp_challenge: @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.workshop_hp_challenge_list", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + } + ], + "1": [ + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "@fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.combo_box", + "type": "local", + "fieldName": "combo_box" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", + "matchedExpression": "@local.workshop_hp_challenge_list", + "type": "local", + "fieldName": "workshop_hp_challenge_list" + }, + { + "fullExpression": "changed | set_field: @local.workshop_hp_challenge_list: @fields.@local.workshop_hp_challenge_list, @local.combo_box", "matchedExpression": "@local.combo_box", "type": "local", "fieldName": "combo_box" @@ -463,14 +540,6 @@ } }, "parameter_list": { - "text": [ - { - "fullExpression": "@local.top_text", - "matchedExpression": "@local.top_text", - "type": "local", - "fieldName": "top_text" - } - ], "answer_list": [ { "fullExpression": "@local.answer_list", @@ -490,17 +559,25 @@ } }, "_dynamicDependencies": { - "@local.combo_box_tracker": [ + "@local.workshop_hp_challenge": [ "action_list.0.args.0", "action_list.0._raw", "action_list.0._cleaned" ], "@local.combo_box": [ "action_list.0._raw", - "action_list.0._cleaned" + "action_list.0._cleaned", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" ], - "@local.top_text": [ - "parameter_list.text" + "@local.workshop_hp_challenge_list": [ + "action_list.1.args.0", + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._raw", + "action_list.1._cleaned", + "action_list.1._cleaned" ], "@local.answer_list": [ "parameter_list.answer_list" @@ -695,16 +772,9 @@ { "type": "text", "name": "reply_choice_2_c", - "value": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "value": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it is so important!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "hidden": "@local.combo_box_challenge_2!=\"choice_2_c\"", "_nested_name": "challenge_2.reply_choice_2_c", @@ -745,16 +815,9 @@ { "type": "text", "name": "reply_challenge_3", - "value": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "value": "Yes, it takes some time to get used to giving positive instructions – it is really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "@local.combo_box==\"challenge_3\"", "_nested_name": "reply_challenge_3", @@ -910,85 +973,11 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "@local.combo_box_final", - "@local.combo_box" - ], - "_raw": "completed | set_field:@local.combo_box_final: @local.combo_box", - "_cleaned": "completed | set_field:@local.combo_box_final: @local.combo_box" } ], "rows": [], - "_nested_name": "nav_buttons", - "_dynamicFields": { - "action_list": { - "2": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_final", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - } - ], - "1": [ - { - "fullExpression": "@local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box_final", - "type": "local", - "fieldName": "combo_box_final" - }, - { - "fullExpression": "completed | set_field:@local.combo_box_final: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - } - }, - "_dynamicDependencies": { - "@local.combo_box_final": [ - "action_list.2.args.0", - "action_list.2._raw", - "action_list.2._cleaned" - ], - "@local.combo_box": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned" - ] - } + "_nested_name": "nav_buttons" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_hp_highlights.json b/packages/app-data/sheets/template/w_instruct_hp_highlights.json index 20cc9975dc..b57cd31aff 100644 --- a/packages/app-data/sheets/template/w_instruct_hp_highlights.json +++ b/packages/app-data/sheets/template/w_instruct_hp_highlights.json @@ -507,5 +507,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_hp_review.json b/packages/app-data/sheets/template/w_instruct_hp_review.json index 7a31d3b268..515a1f6222 100644 --- a/packages/app-data/sheets/template/w_instruct_hp_review.json +++ b/packages/app-data/sheets/template/w_instruct_hp_review.json @@ -30,215 +30,23 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_instruct", + "name": "workshop", + "value": "w_instruct", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_instruct", - "matchedExpression": "@data.workshop.w_instruct", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_instruct": [ - "value" - ] - } + "_nested_name": "home_practice_review.workshop" }, { "type": "nested_properties", "name": "workshop_activity", "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.instruct_positively", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.instruct_positively", - "matchedExpression": "@data.habit.instruct_positively", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.instruct_positively": [ - "value" - ] - } - }, { "type": "nested_properties", "name": "content_box", "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_instruct_positively > 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "matchedExpression": "@data.habit.instruct_positively.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_instruct_positively > 0", - "matchedExpression": "@fields.weekly_parent_point_instruct_positively", - "type": "fields", - "fieldName": "weekly_parent_point_instruct_positively" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.instruct_positively.in_text_title": [ - "value" - ], - "@fields.weekly_parent_point_instruct_positively": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_instruct_positively == 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_instruct_positively == 0", - "matchedExpression": "@fields.weekly_parent_point_instruct_positively", - "type": "fields", - "fieldName": "weekly_parent_point_instruct_positively" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_instruct_positively": [ - "condition" - ] - } - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_8.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_8.text", - "matchedExpression": "@data.praise.hp_praise_message_8.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_8.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_9.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_9.text", - "matchedExpression": "@data.praise.hp_praise_message_9.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_9.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_9.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_9.text", - "matchedExpression": "@data.praise.hp_praise_message_9.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_9.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, { "type": "nested_properties", "name": "box_2", @@ -247,14 +55,14 @@ { "type": "nested_properties", "name": "box_1", - "value": "w_instruct_hp_box_1", + "value": "w_instruct_hp_challenges", "rows": [], "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1" }, { "type": "nested_properties", "name": "box_2", - "value": "w_instruct_hp_box_2", + "value": "w_instruct_hp_highlights", "rows": [], "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_2" } @@ -263,22 +71,6 @@ } ], "_nested_name": "home_practice_review.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_text" } ], "_nested_name": "home_practice_review.workshop_activity" @@ -287,5 +79,5 @@ "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_instruct_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_hp_reminder.json b/packages/app-data/sheets/template/w_instruct_m_hp_reminder.json index ef3e10a1e4..ce6299742a 100644 --- a/packages/app-data/sheets/template/w_instruct_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_instruct_m_hp_reminder.json @@ -26,7 +26,7 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_instruct_positively == 0", + "condition": "@fields.parent_point_count_instruct_positively == 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.text", "_dynamicFields": { @@ -46,9 +46,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively == 0", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively == 0", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -60,7 +60,7 @@ "@global.parent_points": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } @@ -82,7 +82,7 @@ "_cleaned": "click | go_to:w_instruct_tools" } ], - "condition": "@field.parent_point_count_instruct_positively == 0", + "condition": "@fields.parent_point_count_instruct_positively == 0", "hidden": "FALSE", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.button_1", @@ -97,9 +97,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively == 0", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively == 0", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -108,7 +108,7 @@ "@global.w_instruct_tools": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } @@ -119,7 +119,7 @@ "_translations": { "value": {} }, - "condition": "@field.parent_point_count_instruct_positively == 0", + "condition": "@fields.parent_point_count_instruct_positively == 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.habit_data", "_dynamicFields": { @@ -133,9 +133,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively == 0", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively == 0", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -144,7 +144,7 @@ "@data.habit.instruct_positively": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } @@ -162,21 +162,21 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_instruct_positively > 0", + "condition": "@fields.parent_point_count_instruct_positively > 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.title", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively > 0", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively > 0", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] }, "_dynamicDependencies": { - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } @@ -187,7 +187,7 @@ "_translations": { "value": {} }, - "condition": "@field.parent_point_count_instruct_positively > 0", + "condition": "@fields.parent_point_count_instruct_positively > 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.image", "_dynamicFields": { @@ -201,9 +201,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively > 0", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively > 0", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -212,7 +212,7 @@ "@data.habit.instruct_positively.image_asset": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } @@ -230,7 +230,7 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_instruct_positively == 1", + "condition": "@fields.parent_point_count_instruct_positively == 1", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.text", "_dynamicFields": { @@ -250,9 +250,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively == 1", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively == 1", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -264,53 +264,51 @@ "@data.habit.instruct_positively.title": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "condition" ] } }, { "name": "text", - "value": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", + "value": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, - "condition": "@field.parent_point_count_instruct_positively > 1", + "condition": "@fields.parent_point_count_instruct_positively > 1", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", + "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", "matchedExpression": "@global.parent_point", "type": "global", "fieldName": "parent_point" }, { - "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", + "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", "matchedExpression": "@data.habit.instruct_positively.title", "type": "data", "fieldName": "habit" }, { - "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ], "condition": [ { - "fullExpression": "@field.parent_point_count_instruct_positively > 1", - "matchedExpression": "@field.parent_point_count_instruct_positively", - "type": "field", + "fullExpression": "@fields.parent_point_count_instruct_positively > 1", + "matchedExpression": "@fields.parent_point_count_instruct_positively", + "type": "fields", "fieldName": "parent_point_count_instruct_positively" } ] @@ -322,7 +320,7 @@ "@data.habit.instruct_positively.title": [ "value" ], - "@field.parent_point_count_instruct_positively": [ + "@fields.parent_point_count_instruct_positively": [ "value", "condition" ] @@ -335,5 +333,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_praise.json b/packages/app-data/sheets/template/w_instruct_m_praise.json index 2ef862fcb8..64ab7d7204 100644 --- a/packages/app-data/sheets/template/w_instruct_m_praise.json +++ b/packages/app-data/sheets/template/w_instruct_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_relax.json b/packages/app-data/sheets/template/w_instruct_m_relax.json index 9b9a5bd53f..de06da39c5 100644 --- a/packages/app-data/sheets/template/w_instruct_m_relax.json +++ b/packages/app-data/sheets/template/w_instruct_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_something_fun.json b/packages/app-data/sheets/template/w_instruct_m_something_fun.json index b0ac0024f0..365e682f11 100644 --- a/packages/app-data/sheets/template/w_instruct_m_something_fun.json +++ b/packages/app-data/sheets/template/w_instruct_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_w_in_progress.json b/packages/app-data/sheets/template/w_instruct_m_w_in_progress.json index e98a0971ff..74a8687e59 100644 --- a/packages/app-data/sheets/template/w_instruct_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_instruct_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_w_released.json b/packages/app-data/sheets/template/w_instruct_m_w_released.json index f03b3420b8..fcab588302 100644 --- a/packages/app-data/sheets/template/w_instruct_m_w_released.json +++ b/packages/app-data/sheets/template/w_instruct_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_instruct_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,104 +63,112 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "value": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "value": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +180,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_w_reminder.json b/packages/app-data/sheets/template/w_instruct_m_w_reminder.json index bc99614f09..de4362e477 100644 --- a/packages/app-data/sheets/template/w_instruct_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_instruct_m_w_reminder.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "value": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's @global.workshop to learn how giving positive instructions can help - a lot.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_reminder.in_week_message.text" + "_nested_name": "m_workshop_reminder.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's @global.workshop to learn how giving positive instructions can help - a lot.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_reminder.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_m_w_tomorrow.json b/packages/app-data/sheets/template/w_instruct_m_w_tomorrow.json index 23175d9e88..4837c4203c 100644 --- a/packages/app-data/sheets/template/w_instruct_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_instruct_m_w_tomorrow.json @@ -35,15 +35,10 @@ }, { "name": "text_not_completed", - "value": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "value": "As usual, you can access a new workshop tomorrow. It will help to complete the previous @global.workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -51,7 +46,13 @@ "_dynamicFields": { "value": [ { - "fullExpression": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "fullExpression": "As usual, you can access a new workshop tomorrow. It will help to complete the previous @global.workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "As usual, you can access a new workshop tomorrow. It will help to complete the previous @global.workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" @@ -59,6 +60,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@global.parent_app": [ "value" ] @@ -66,15 +70,10 @@ }, { "name": "text_completed", - "value": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "value": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you: you will see a big difference by making small changes!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -82,16 +81,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "fullExpression": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you: you will see a big difference by making small changes!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you: you will see a big difference by making small changes!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@local.workshop_data.in_text_title": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -99,5 +107,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_instruct_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_messages.json b/packages/app-data/sheets/template/w_instruct_messages.json index bd9ff11112..debfac8f84 100644 --- a/packages/app-data/sheets/template/w_instruct_messages.json +++ b/packages/app-data/sheets/template/w_instruct_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_question_1.json b/packages/app-data/sheets/template/w_instruct_question_1.json index 3f0a9de796..d548164240 100644 --- a/packages/app-data/sheets/template/w_instruct_question_1.json +++ b/packages/app-data/sheets/template/w_instruct_question_1.json @@ -4,6 +4,84 @@ "flow_name": "w_instruct_question_1", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "Said something nice first", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1" + }, + { + "name": "answer_2", + "value": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "matchedExpression": "@global.w_instruct_teen_girl", + "type": "global", + "fieldName": "w_instruct_teen_girl" + } + ] + }, + "_dynamicDependencies": { + "@global.w_instruct_teen_girl": [ + "value" + ] + } + }, + { + "name": "answer_3", + "value": "Told @global.w_instruct_teen_girl what she wants her to do", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Told @global.w_instruct_teen_girl what she wants her to do", + "matchedExpression": "@global.w_instruct_teen_girl", + "type": "global", + "fieldName": "w_instruct_teen_girl" + } + ] + }, + "_dynamicDependencies": { + "@global.w_instruct_teen_girl": [ + "value" + ] + } + }, { "type": "template", "name": "question_time", @@ -102,7 +180,7 @@ "name": "answer_list", "value": [ "name:sad | text: Sad | image:plh_images/stickers/faces/sadder.svg | image_checked: plh_images/stickers/faces/sadder.svg", - "name:confused | text:Confused | image:plh_images/stickers/faces/confused.svg | image_checked:plh_images/stickers/faces/confused.svg", + "name:confused | text:Confused | image:plh_images/stickers/faces/confused_question_mark.svg | image_checked:plh_images/stickers/faces/confused_question_mark.svg", "name:angry | text: Angry | image:plh_images/stickers/faces/angry.svg | image_checked:plh_images/stickers/faces/angry.svg" ], "type": "set_variable", @@ -178,35 +256,48 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:Said something nice first", - "name:name_2 | text:Spoken to @global.w_instruct_teen_girl in a calm voice", - "name:name_3 | text:Told @global.w_instruct_teen_girl what she wants her to do" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3" ], "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.combo_box_2.answer_list", "_dynamicFields": { "value": { + "0": [ + { + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" + } + ], "1": [ { - "fullExpression": "name:name_2 | text:Spoken to @global.w_instruct_teen_girl in a calm voice", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" } ], "2": [ { - "fullExpression": "name:name_3 | text:Told @global.w_instruct_teen_girl what she wants her to do", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" } ] } }, "_dynamicDependencies": { - "@global.w_instruct_teen_girl": [ - "value.1", + "@local.answer_1": [ + "value.0" + ], + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ "value.2" ] } diff --git a/packages/app-data/sheets/template/w_instruct_question_2.json b/packages/app-data/sheets/template/w_instruct_question_2.json index 80c370e462..de59464863 100644 --- a/packages/app-data/sheets/template/w_instruct_question_2.json +++ b/packages/app-data/sheets/template/w_instruct_question_2.json @@ -4,6 +4,108 @@ "flow_name": "w_instruct_question_2", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "matchedExpression": "@global.w_instruct_teen_girl", + "type": "global", + "fieldName": "w_instruct_teen_girl" + }, + { + "fullExpression": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "matchedExpression": "@global.w_instruct_female_caregiver", + "type": "global", + "fieldName": "w_instruct_female_caregiver" + } + ] + }, + "_dynamicDependencies": { + "@global.w_instruct_teen_girl": [ + "value" + ], + "@global.w_instruct_female_caregiver": [ + "value" + ] + } + }, + { + "name": "answer_2", + "value": "@global.w_instruct_female_caregiver was able to stay calm", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_instruct_female_caregiver was able to stay calm", + "matchedExpression": "@global.w_instruct_female_caregiver", + "type": "global", + "fieldName": "w_instruct_female_caregiver" + } + ] + }, + "_dynamicDependencies": { + "@global.w_instruct_female_caregiver": [ + "value" + ] + } + }, + { + "name": "answer_3", + "value": "@global.w_instruct_female_caregiver kept a positive attitude", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_instruct_female_caregiver kept a positive attitude", + "matchedExpression": "@global.w_instruct_female_caregiver", + "type": "global", + "fieldName": "w_instruct_female_caregiver" + } + ] + }, + "_dynamicDependencies": { + "@global.w_instruct_female_caregiver": [ + "value" + ] + } + }, { "type": "template", "name": "question_time", @@ -209,9 +311,9 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "name:name_2 | text:@global.w_instruct_female_caregiver was able to stay calm", - "name:name_3 | text:@global.w_instruct_female_caregiver kept a positive attitude" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3" ], "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.combo_box_2.answer_list", @@ -219,43 +321,38 @@ "value": { "0": [ { - "fullExpression": "name:name_1 | text:@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "name:name_1 | text:@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" } ], "1": [ { - "fullExpression": "name:name_2 | text:@global.w_instruct_female_caregiver was able to stay calm", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" } ], "2": [ { - "fullExpression": "name:name_3 | text:@global.w_instruct_female_caregiver kept a positive attitude", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" } ] } }, "_dynamicDependencies": { - "@global.w_instruct_teen_girl": [ + "@local.answer_1": [ "value.0" ], - "@global.w_instruct_female_caregiver": [ - "value.0", - "value.1", + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ "value.2" ] } diff --git a/packages/app-data/sheets/template/w_instruct_read_1.json b/packages/app-data/sheets/template/w_instruct_read_1.json new file mode 100644 index 0000000000..49ba32d324 --- /dev/null +++ b/packages/app-data/sheets/template/w_instruct_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "neg_instruct", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_read_1_temp.json b/packages/app-data/sheets/template/w_instruct_read_1_temp.json deleted file mode 100644 index aee05d3346..0000000000 --- a/packages/app-data/sheets/template/w_instruct_read_1_temp.json +++ /dev/null @@ -1,278 +0,0 @@ -{ - "flow_type": "template", - "module": "instruct", - "flow_name": "w_instruct_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value", - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_teen_girl": [ - "value" - ], - "@global.w_instruct_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_teen_girl": [ - "value" - ], - "@global.w_instruct_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_read_2.json b/packages/app-data/sheets/template/w_instruct_read_2.json new file mode 100644 index 0000000000..cd34bcb4df --- /dev/null +++ b/packages/app-data/sheets/template/w_instruct_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "instruct", + "flow_name": "w_instruct_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "pos_instruct", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_read_2_temp.json b/packages/app-data/sheets/template/w_instruct_read_2_temp.json deleted file mode 100644 index bc1fc53511..0000000000 --- a/packages/app-data/sheets/template/w_instruct_read_2_temp.json +++ /dev/null @@ -1,321 +0,0 @@ -{ - "flow_type": "template", - "module": "instruct", - "flow_name": "w_instruct_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value", - "value", - "value" - ], - "@global.w_instruct_teen_girl": [ - "value", - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "hidden": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_instruct/read_2/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "matchedExpression": "@global.w_instruct_female_caregiver", - "type": "global", - "fieldName": "w_instruct_female_caregiver" - }, - { - "fullExpression": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "matchedExpression": "@global.w_instruct_teen_girl", - "type": "global", - "fieldName": "w_instruct_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_instruct_female_caregiver": [ - "value" - ], - "@global.w_instruct_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_instruct.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_instruct_stepper.json b/packages/app-data/sheets/template/w_instruct_stepper.json index 78f7c7696d..d3956fc6a2 100644 --- a/packages/app-data/sheets/template/w_instruct_stepper.json +++ b/packages/app-data/sheets/template/w_instruct_stepper.json @@ -51,9 +51,9 @@ "w_instruct_reflect_together", "w_instruct_intro", "w_instruct_think_1_temp", - "w_instruct_read_1_temp", + "w_instruct_read_1", "w_instruct_talk_1", - "w_instruct_read_2_temp", + "w_instruct_read_2", "w_instruct_talk_2", "w_instruct_tools_activity", "w_instruct_try", @@ -87,9 +87,9 @@ "w_instruct_relax", "w_instruct_intro", "w_instruct_think_1_temp", - "w_instruct_read_1_temp", + "w_instruct_read_1", "w_instruct_question_1", - "w_instruct_read_2_temp", + "w_instruct_read_2", "w_instruct_question_2", "w_instruct_tools_activity", "w_instruct_home_practice", diff --git a/packages/app-data/sheets/template/w_instruct_think_1_temp.json b/packages/app-data/sheets/template/w_instruct_think_1_temp.json index 6f6c26a72b..7311d63aa8 100644 --- a/packages/app-data/sheets/template/w_instruct_think_1_temp.json +++ b/packages/app-data/sheets/template/w_instruct_think_1_temp.json @@ -70,16 +70,9 @@ }, { "name": "text", - "value": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "value": "DO NOT THINK ABOUT AN ELEPHANT.\n\nWhat are you thinking about?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "think.workshop_activity.content_box.box_1.text" @@ -108,16 +101,9 @@ }, { "name": "text", - "value": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "value": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing.\n\nSometimes they do not understand what we DID want from them.\n\nAlso they often don’t like being told not to do things (just like most of us).", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "think.workshop_activity.content_box.box_2.box_1.text" diff --git a/packages/app-data/sheets/template/w_instruct_welcome_individual.json b/packages/app-data/sheets/template/w_instruct_welcome_individual.json index 0c91e96fbf..4e6ac97d9e 100644 --- a/packages/app-data/sheets/template/w_instruct_welcome_individual.json +++ b/packages/app-data/sheets/template/w_instruct_welcome_individual.json @@ -52,68 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "reply_happy", - "value": "Wonderful, I am so happy! Keep up the good work.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that things are difficult. All families struggle. We are here to help!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_money_hp_challenges.json b/packages/app-data/sheets/template/w_money_hp_challenges.json index 092fd27a7e..6849028f1d 100644 --- a/packages/app-data/sheets/template/w_money_hp_challenges.json +++ b/packages/app-data/sheets/template/w_money_hp_challenges.json @@ -30,312 +30,18 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 4, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_safe", + "name": "workshop", + "value": "w_money", "_translations": { "value": {} }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe", - "matchedExpression": "@data.workshop.w_safe", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "make a budget together with their family", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "question_text_happy", - "value": "Did you have any challenges when making your budget together?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_happy" - }, - { - "name": "question_text_ok_sad", - "value": "What whas difficult for you about making your budget together?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_ok_sad" - }, - { - "name": "text_challenge_1", - "value": "I did not want to tell my family how much I earn.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "matchedExpression": "@global.currency", - "type": "global", - "fieldName": "currency" - }, - { - "fullExpression": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "matchedExpression": "@global.monthly_income_estimate", - "type": "global", - "fieldName": "monthly_income_estimate" - }, - { - "fullExpression": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "matchedExpression": "@global.currency", - "type": "global", - "fieldName": "currency" - }, - { - "fullExpression": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "matchedExpression": "@global.monthly_income_precise", - "type": "global", - "fieldName": "monthly_income_precise" - } - ] - }, - "_dynamicDependencies": { - "@global.currency": [ - "value", - "value" - ], - "@global.monthly_income_estimate": [ - "value" - ], - "@global.monthly_income_precise": [ - "value" - ] - } - }, - { - "name": "text_challenge_2", - "value": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "I did not understand what to do.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "reply_challenge_3_has_button", - "value": true, "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3_has_button" - }, - { - "name": "button_3_a", - "value": "@data.workshop.w_money.tools", - "_translations": { - "value": {} - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_money_tools" - ], - "_raw": "click | go_to: w_money_tools", - "_cleaned": "click | go_to: w_money_tools" - } - ], - "type": "set_variable", - "_nested_name": "home_practice_challenges.button_3_a", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_money.tools", - "matchedExpression": "@data.workshop.w_money.tools", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_money.tools": [ - "value" - ] - } - }, - { - "name": "text_challenge_4", - "value": "My teen did not want to do the budgeting with me.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ] - } + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_hp_review.json b/packages/app-data/sheets/template/w_money_hp_review.json index 31ff20cc9c..2b9569512a 100644 --- a/packages/app-data/sheets/template/w_money_hp_review.json +++ b/packages/app-data/sheets/template/w_money_hp_review.json @@ -30,247 +30,18 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_money", + "name": "workshop", + "value": "w_money", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_money", - "matchedExpression": "@data.workshop.w_money", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_money": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.money", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.money", - "matchedExpression": "@data.habit.money", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.money": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_money > 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "matchedExpression": "@data.habit.money.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_money > 0", - "matchedExpression": "@fields.weekly_parent_point_money", - "type": "fields", - "fieldName": "weekly_parent_point_money" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.money.in_text_title": [ - "value" - ], - "@fields.weekly_parent_point_money": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "Your goal was to make a family budget and savings plan.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_money == 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_money == 0", - "matchedExpression": "@fields.weekly_parent_point_money", - "type": "fields", - "fieldName": "weekly_parent_point_money" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_money": [ - "condition" - ] - } - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_14.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_14.text", - "matchedExpression": "@data.praise.hp_praise_message_14.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_14.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_15.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_15.text", - "matchedExpression": "@data.praise.hp_praise_message_15.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_15.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_15.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_15.text", - "matchedExpression": "@data.praise.hp_praise_message_15.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_15.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_money_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_text" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_money_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_learn_3_temp.json b/packages/app-data/sheets/template/w_money_learn_3_temp.json index 6c2379f376..84bf5017d3 100644 --- a/packages/app-data/sheets/template/w_money_learn_3_temp.json +++ b/packages/app-data/sheets/template/w_money_learn_3_temp.json @@ -88,16 +88,9 @@ }, { "name": "text", - "value": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "value": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you cannot live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn_group_family.workshop_activity.content_box.text" @@ -219,16 +212,9 @@ }, { "name": "text", - "value": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "value": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you cannot live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn_alone.workshop_activity.content_box.text" diff --git a/packages/app-data/sheets/template/w_money_learn_4_temp.json b/packages/app-data/sheets/template/w_money_learn_4_temp.json index 64d7b7baaa..07cce42edc 100644 --- a/packages/app-data/sheets/template/w_money_learn_4_temp.json +++ b/packages/app-data/sheets/template/w_money_learn_4_temp.json @@ -178,47 +178,40 @@ }, { "name": "text", - "value": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "value": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn_alone.workshop_activity.content_box.text", "_dynamicFields": { "value": [ { - "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "matchedExpression": "@global.currency", "type": "global", "fieldName": "currency" }, { - "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "matchedExpression": "@local.monthly_income", "type": "local", "fieldName": "monthly_income" }, { - "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "matchedExpression": "@local.number_of_beans", "type": "local", "fieldName": "number_of_beans" }, { - "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "matchedExpression": "@global.currency", "type": "global", "fieldName": "currency" }, { - "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "fullExpression": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That is totally fine!", "matchedExpression": "@local.bean_value", "type": "local", "fieldName": "bean_value" diff --git a/packages/app-data/sheets/template/w_money_learn_5_temp.json b/packages/app-data/sheets/template/w_money_learn_5_temp.json index 37419f50af..2d6e04d072 100644 --- a/packages/app-data/sheets/template/w_money_learn_5_temp.json +++ b/packages/app-data/sheets/template/w_money_learn_5_temp.json @@ -210,16 +210,9 @@ }, { "name": "outro_text", - "value": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "value": "CONGRATULATIONS!!! You have made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "!@fields.do_this_workshop_together || (@fields.w_money_path==\"alone\" || !@fields.w_money_path)", "type": "set_variable", diff --git a/packages/app-data/sheets/template/w_money_m_hp_reminder.json b/packages/app-data/sheets/template/w_money_m_hp_reminder.json index 618b795849..147236456c 100644 --- a/packages/app-data/sheets/template/w_money_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_money_m_hp_reminder.json @@ -96,5 +96,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_praise.json b/packages/app-data/sheets/template/w_money_m_praise.json index 345d954464..8e9661985c 100644 --- a/packages/app-data/sheets/template/w_money_m_praise.json +++ b/packages/app-data/sheets/template/w_money_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_relax.json b/packages/app-data/sheets/template/w_money_m_relax.json index 0d366a2da2..d2d118dfbb 100644 --- a/packages/app-data/sheets/template/w_money_m_relax.json +++ b/packages/app-data/sheets/template/w_money_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_something_fun.json b/packages/app-data/sheets/template/w_money_m_something_fun.json index 75fe89486d..1144d837d2 100644 --- a/packages/app-data/sheets/template/w_money_m_something_fun.json +++ b/packages/app-data/sheets/template/w_money_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_w_in_progress.json b/packages/app-data/sheets/template/w_money_m_w_in_progress.json index 24bd57cb18..4a4d04038d 100644 --- a/packages/app-data/sheets/template/w_money_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_money_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_w_released.json b/packages/app-data/sheets/template/w_money_m_w_released.json index de3b3de7ef..3c56447c72 100644 --- a/packages/app-data/sheets/template/w_money_m_w_released.json +++ b/packages/app-data/sheets/template/w_money_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_money_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,104 +63,112 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "value": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "fullExpression": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "value": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "fullExpression": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +180,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_w_reminder.json b/packages/app-data/sheets/template/w_money_m_w_reminder.json index 1286106102..c7e73580a4 100644 --- a/packages/app-data/sheets/template/w_money_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_money_m_w_reminder.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "value": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s @global.workshop deals with money and budgeting.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_reminder.in_week_message.text" + "_nested_name": "m_workshop_reminder.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s @global.workshop deals with money and budgeting.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_reminder.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_m_w_tomorrow.json b/packages/app-data/sheets/template/w_money_m_w_tomorrow.json index 6d6c383995..a0c7552dcb 100644 --- a/packages/app-data/sheets/template/w_money_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_money_m_w_tomorrow.json @@ -90,15 +90,10 @@ }, { "name": "text_completed", - "value": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "value": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you set family rules that work.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -106,16 +101,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "fullExpression": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you set family rules that work.", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you set family rules that work.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@local.workshop_data.in_text_title": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -123,5 +127,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_money_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_money_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_messages.json b/packages/app-data/sheets/template/w_money_messages.json index e5d7dcef0d..dfce912fda 100644 --- a/packages/app-data/sheets/template/w_money_messages.json +++ b/packages/app-data/sheets/template/w_money_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_1.json b/packages/app-data/sheets/template/w_money_read_1.json new file mode 100644 index 0000000000..c228c5033d --- /dev/null +++ b/packages/app-data/sheets/template/w_money_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "money_problems", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_1_temp.json b/packages/app-data/sheets/template/w_money_read_1_temp.json deleted file mode 100644 index 5411323c48..0000000000 --- a/packages/app-data/sheets/template/w_money_read_1_temp.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "flow_type": "template", - "module": "money", - "flow_name": "w_money_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - }, - { - "fullExpression": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "matchedExpression": "@global.w_money_teen_girl", - "type": "global", - "fieldName": "w_money_teen_girl" - }, - { - "fullExpression": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "matchedExpression": "@global.w_money_teen_boy", - "type": "global", - "fieldName": "w_money_teen_boy" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ], - "@global.w_money_teen_girl": [ - "value" - ], - "@global.w_money_teen_boy": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_2.json b/packages/app-data/sheets/template/w_money_read_2.json new file mode 100644 index 0000000000..33475d9d78 --- /dev/null +++ b/packages/app-data/sheets/template/w_money_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "money_plan", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_2_temp.json b/packages/app-data/sheets/template/w_money_read_2_temp.json deleted file mode 100644 index ff45ab5f0c..0000000000 --- a/packages/app-data/sheets/template/w_money_read_2_temp.json +++ /dev/null @@ -1,296 +0,0 @@ -{ - "flow_type": "template", - "module": "money", - "flow_name": "w_money_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_3/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_3/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_3/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_3/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_3/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "matchedExpression": "@global.w_money_teen_boy", - "type": "global", - "fieldName": "w_money_teen_boy" - }, - { - "fullExpression": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "matchedExpression": "@global.w_money_teen_girl", - "type": "global", - "fieldName": "w_money_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_teen_boy": [ - "value" - ], - "@global.w_money_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_3.json b/packages/app-data/sheets/template/w_money_read_3.json new file mode 100644 index 0000000000..189f19d121 --- /dev/null +++ b/packages/app-data/sheets/template/w_money_read_3.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "money", + "flow_name": "w_money_read_3", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "money_emergencies", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_read_3_temp.json b/packages/app-data/sheets/template/w_money_read_3_temp.json deleted file mode 100644 index bbc296bda1..0000000000 --- a/packages/app-data/sheets/template/w_money_read_3_temp.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "flow_type": "template", - "module": "money", - "flow_name": "w_money_read_3_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "matchedExpression": "@global.w_money_grandma", - "type": "global", - "fieldName": "w_money_grandma" - } - ] - }, - "_dynamicDependencies": { - "@global.w_money_grandma": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_money/read_4/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.image_src" - }, - { - "name": "text", - "value": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.text" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_money.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_money_stepper.json b/packages/app-data/sheets/template/w_money_stepper.json index 2d756a8c0d..c1dfac21b0 100644 --- a/packages/app-data/sheets/template/w_money_stepper.json +++ b/packages/app-data/sheets/template/w_money_stepper.json @@ -50,14 +50,14 @@ "w_money_relax", "w_money_reflect_together", "w_money_intro", - "w_money_read_1_temp", + "w_money_read_1", "w_money_learn_1_temp", "w_money_learn_2_temp", "w_money_learn_3_temp", "w_money_learn_4_temp", - "w_money_read_2_temp", + "w_money_read_2", "w_money_tq_1", - "w_money_read_3_temp", + "w_money_read_3", "w_money_tq_2", "w_money_tq_3", "w_money_learn_5_temp", @@ -91,14 +91,14 @@ "w_money_welcome_individual", "w_money_relax", "w_money_intro", - "w_money_read_1_temp", + "w_money_read_1", "w_money_learn_1_temp", "w_money_learn_2_temp", "w_money_learn_3_temp", "w_money_learn_4_temp", - "w_money_read_2_temp", + "w_money_read_2", "w_money_tq_1", - "w_money_read_3_temp", + "w_money_read_3", "w_money_tq_2", "w_money_tq_3", "w_money_learn_5_temp", diff --git a/packages/app-data/sheets/template/w_money_welcome_individual.json b/packages/app-data/sheets/template/w_money_welcome_individual.json index 8eccdf64a7..520856cefb 100644 --- a/packages/app-data/sheets/template/w_money_welcome_individual.json +++ b/packages/app-data/sheets/template/w_money_welcome_individual.json @@ -52,84 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "Caring for yourself is so essential.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "Wonderful, I am so happy things are going well. Keep up the good work.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_praise_hp_challenges.json b/packages/app-data/sheets/template/w_praise_hp_challenges.json new file mode 100644 index 0000000000..c79df77ac1 --- /dev/null +++ b/packages/app-data/sheets/template/w_praise_hp_challenges.json @@ -0,0 +1,47 @@ +{ + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_hp_challenges", + "status": "released", + "rows": [ + { + "type": "template", + "name": "home_practice_challenges", + "value": "home_practice_challenges", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "workshop", + "value": "w_praise", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "home_practice_challenges.workshop" + } + ], + "_nested_name": "home_practice_challenges" + } + ], + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_hp_content.json b/packages/app-data/sheets/template/w_praise_hp_content.json deleted file mode 100644 index 5a1050cd96..0000000000 --- a/packages/app-data/sheets/template/w_praise_hp_content.json +++ /dev/null @@ -1,676 +0,0 @@ -{ - "flow_type": "template", - "module": "praise", - "flow_name": "w_praise_hp_content", - "status": "released", - "rows": [ - { - "name": "praise_teen_count", - "value": "@fields.weekly_parent_point_praise_teen", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "praise_teen_count", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.weekly_parent_point_praise_teen", - "matchedExpression": "@fields.weekly_parent_point_praise_teen", - "type": "fields", - "fieldName": "weekly_parent_point_praise_teen" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_praise_teen": [ - "value" - ] - } - }, - { - "name": "radio_group_tracker", - "value": "w_praise_hp_review_1", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "radio_group_tracker" - }, - { - "name": "combo_box_tracker", - "value": "w_praise_hp_review_2", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "combo_box_tracker" - }, - { - "type": "text", - "name": "text_1", - "value": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "@local.praise_teen_count == 0", - "_nested_name": "text_1", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "matchedExpression": "@data.habit.praise_teen.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "hidden": [ - { - "fullExpression": "@local.praise_teen_count == 0", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.praise_teen.in_text_title": [ - "value" - ], - "@local.praise_teen_count": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "text_2", - "value": "Your goal was to praise your teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "@local.praise_teen_count >= 1", - "_nested_name": "text_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.praise_teen_count >= 1", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - } - ] - }, - "_dynamicDependencies": { - "@local.praise_teen_count": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "question_text_1", - "value": "Did you have a chance to praise your teen this week?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "@local.praise_teen_count >= 1", - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "question_text_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.praise_teen_count >= 1", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - } - ] - }, - "_dynamicDependencies": { - "@local.praise_teen_count": [ - "hidden" - ] - } - }, - { - "name": "answer_list_1", - "value": [ - "name: yes | text: Yes", - "name: no | text: No" - ], - "type": "set_variable", - "_nested_name": "answer_list_1" - }, - { - "type": "radio_group", - "name": "radio_group", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.radio_group_tracker", - "this.value" - ], - "_raw": "changed | set_field:@local.radio_group_tracker:@local.radio_group", - "_cleaned": "changed | set_field:@local.radio_group_tracker:@local.radio_group" - } - ], - "hidden": "@local.praise_teen_count >= 1", - "parameter_list": { - "answer_list": "@local.answer_list_1", - "radio_button_type": "btn_text", - "options_per_row": "2" - }, - "_nested_name": "radio_group", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.radio_group_tracker", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field:@local.radio_group_tracker:@local.radio_group", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_tracker:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field:@local.radio_group_tracker:@local.radio_group", - "matchedExpression": "@local.radio_group_tracker", - "type": "local", - "fieldName": "radio_group_tracker" - }, - { - "fullExpression": "changed | set_field:@local.radio_group_tracker:@local.radio_group", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - } - }, - "hidden": [ - { - "fullExpression": "@local.praise_teen_count >= 1", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - } - ], - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_1", - "matchedExpression": "@local.answer_list_1", - "type": "local", - "fieldName": "answer_list_1" - } - ] - } - }, - "_dynamicDependencies": { - "@local.radio_group_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.praise_teen_count": [ - "hidden" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ] - } - }, - { - "type": "text", - "name": "reply_no", - "value": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"no\")", - "_nested_name": "reply_no", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"no\")", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - }, - { - "fullExpression": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"no\")", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.praise_teen_count": [ - "hidden" - ], - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_yes", - "value": "Well done - great job for remembering!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"yes\")", - "_nested_name": "reply_yes", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"yes\")", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - }, - { - "fullExpression": "@local.praise_teen_count >= 1 || !(@local.radio_group == \"yes\")", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.praise_teen_count": [ - "hidden" - ], - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "display_group", - "name": "replies_did_it", - "hidden": "@local.praise_teen_count ==0 && !(@local.radio_group == \"yes\" )", - "parameter_list": { - "style": "column" - }, - "rows": [ - { - "type": "text", - "name": "question_text_2", - "value": "How did your teen respond?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "parameter_list": { - "style": "emphasised" - }, - "_nested_name": "replies_did_it.question_text_2" - }, - { - "name": "answer_list_2", - "value": [ - "name:choice_1 | text: Surprised", - "name:choice_2 | text: Happy", - "name:choice_3 | text: My teen did not like it", - "name:choice_4 | text: I do not know" - ], - "type": "set_variable", - "_nested_name": "replies_did_it.answer_list_2" - }, - { - "type": "combo_box", - "name": "combo_box", - "action_list": [ - { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.combo_box_tracker", - "this.value" - ], - "_raw": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "_cleaned": "changed | set_field: @local.combo_box_tracker: @local.combo_box" - } - ], - "parameter_list": { - "answer_list": "@local.answer_list_2", - "placeholder": "@global.tap_and_choose" - }, - "_nested_name": "replies_did_it.combo_box", - "_dynamicFields": { - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.combo_box_tracker", - "matchedExpression": "@local.combo_box_tracker", - "type": "local", - "fieldName": "combo_box_tracker" - } - ] - }, - "_raw": [ - { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", - "type": "local", - "fieldName": "combo_box_tracker" - }, - { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box_tracker", - "type": "local", - "fieldName": "combo_box_tracker" - }, - { - "fullExpression": "changed | set_field: @local.combo_box_tracker: @local.combo_box", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - } - }, - "parameter_list": { - "answer_list": [ - { - "fullExpression": "@local.answer_list_2", - "matchedExpression": "@local.answer_list_2", - "type": "local", - "fieldName": "answer_list_2" - } - ], - "placeholder": [ - { - "fullExpression": "@global.tap_and_choose", - "matchedExpression": "@global.tap_and_choose", - "type": "global", - "fieldName": "tap_and_choose" - } - ] - } - }, - "_dynamicDependencies": { - "@local.combo_box_tracker": [ - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.combo_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ], - "@global.tap_and_choose": [ - "parameter_list.placeholder" - ] - } - }, - { - "type": "text", - "name": "reply_1", - "value": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "!(@local.combo_box==\"choice_1\")", - "_nested_name": "replies_did_it.reply_1", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.combo_box==\"choice_1\")", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_2", - "value": "Well done for observing how your teen felt; keep it up!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "!(@local.combo_box==\"choice_2\")", - "_nested_name": "replies_did_it.reply_2", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.combo_box==\"choice_2\")", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_3", - "value": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "!(@local.combo_box==\"choice_3\")", - "_nested_name": "replies_did_it.reply_3", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.combo_box==\"choice_3\")", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "hidden" - ] - } - }, - { - "type": "text", - "name": "reply_4", - "value": "No problem - try to observe how they respond the next time!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": "!(@local.combo_box==\"choice_4\")", - "_nested_name": "replies_did_it.reply_4", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "!(@local.combo_box==\"choice_4\")", - "matchedExpression": "@local.combo_box", - "type": "local", - "fieldName": "combo_box" - } - ] - }, - "_dynamicDependencies": { - "@local.combo_box": [ - "hidden" - ] - } - } - ], - "_nested_name": "replies_did_it", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.praise_teen_count ==0 && !(@local.radio_group == \"yes\" )", - "matchedExpression": "@local.praise_teen_count", - "type": "local", - "fieldName": "praise_teen_count" - }, - { - "fullExpression": "@local.praise_teen_count ==0 && !(@local.radio_group == \"yes\" )", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.praise_teen_count": [ - "hidden" - ], - "@local.radio_group": [ - "hidden" - ] - } - }, - { - "type": "template", - "name": "nav_buttons", - "value": "nav_buttons", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [], - "_nested_name": "nav_buttons" - } - ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_hp_review.json b/packages/app-data/sheets/template/w_praise_hp_review.json index b3f9809726..e8c5552957 100644 --- a/packages/app-data/sheets/template/w_praise_hp_review.json +++ b/packages/app-data/sheets/template/w_praise_hp_review.json @@ -26,115 +26,22 @@ ], "_raw": "uncompleted | emit:uncompleted", "_cleaned": "uncompleted | emit:uncompleted" - }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "w_praise_hp_review_completed", - true - ], - "_raw": "completed | set_field:w_praise_hp_review_completed: true", - "_cleaned": "completed | set_field:w_praise_hp_review_completed: true" } ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_praise", + "name": "workshop", + "value": "w_praise", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_praise", - "matchedExpression": "@data.workshop.w_praise", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_praise": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.praise_teen", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.praise_teen", - "matchedExpression": "@data.habit.praise_teen", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.praise_teen": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "w_praise_hp_content", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "matchedExpression": "@global.parent_app", - "type": "global", - "fieldName": "parent_app" - } - ] - }, - "_dynamicDependencies": { - "@global.parent_app": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_praise_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_hp_reminder.json b/packages/app-data/sheets/template/w_praise_m_hp_reminder.json index dae24ba2cc..40417ac28d 100644 --- a/packages/app-data/sheets/template/w_praise_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_praise_m_hp_reminder.json @@ -100,5 +100,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_praise.json b/packages/app-data/sheets/template/w_praise_m_praise.json index 6dd867de36..1813108e21 100644 --- a/packages/app-data/sheets/template/w_praise_m_praise.json +++ b/packages/app-data/sheets/template/w_praise_m_praise.json @@ -51,5 +51,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_relax.json b/packages/app-data/sheets/template/w_praise_m_relax.json index 781e93bb8f..a42fef5b1c 100644 --- a/packages/app-data/sheets/template/w_praise_m_relax.json +++ b/packages/app-data/sheets/template/w_praise_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_something_fun.json b/packages/app-data/sheets/template/w_praise_m_something_fun.json index d5de221dd2..1fda048273 100644 --- a/packages/app-data/sheets/template/w_praise_m_something_fun.json +++ b/packages/app-data/sheets/template/w_praise_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_w_in_progress.json b/packages/app-data/sheets/template/w_praise_m_w_in_progress.json index f5a54857bc..2b44419598 100644 --- a/packages/app-data/sheets/template/w_praise_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_praise_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_w_released.json b/packages/app-data/sheets/template/w_praise_m_w_released.json index f79071b26e..a94c0d9e37 100644 --- a/packages/app-data/sheets/template/w_praise_m_w_released.json +++ b/packages/app-data/sheets/template/w_praise_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_praise_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,104 +63,126 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "value": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "fullExpression": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "@global.workshop": [ + "value", + "value" + ], + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "value": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "fullExpression": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@global.workshop": [ + "value", + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +194,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_w_reminder.json b/packages/app-data/sheets/template/w_praise_m_w_reminder.json index aa751acc64..77448d1025 100644 --- a/packages/app-data/sheets/template/w_praise_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_praise_m_w_reminder.json @@ -108,5 +108,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_m_w_tomorrow.json b/packages/app-data/sheets/template/w_praise_m_w_tomorrow.json index 6fb010787e..bc15a8ddc5 100644 --- a/packages/app-data/sheets/template/w_praise_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_praise_m_w_tomorrow.json @@ -59,12 +59,10 @@ }, { "name": "text_not_completed", - "value": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "value": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", "_translations": { "value": { - "tz_sw": true, - "za_st": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -72,19 +70,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "fullExpression": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", "matchedExpression": "@global.user_name", "type": "global", "fieldName": "user_name" }, { - "fullExpression": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "fullExpression": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" }, { - "fullExpression": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "fullExpression": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" @@ -95,6 +99,9 @@ "@global.user_name": [ "value" ], + "@global.workshop": [ + "value" + ], "@local.workshop_data.in_text_title": [ "value" ], @@ -105,15 +112,10 @@ }, { "name": "text_completed", - "value": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "value": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -121,16 +123,25 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "fullExpression": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, "_dynamicDependencies": { "@local.workshop_data.in_text_title": [ "value" + ], + "@global.workshop": [ + "value" ] } } @@ -138,5 +149,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_praise_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_messages.json b/packages/app-data/sheets/template/w_praise_messages.json index 162d892bf6..6c59e58b39 100644 --- a/packages/app-data/sheets/template/w_praise_messages.json +++ b/packages/app-data/sheets/template/w_praise_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_question_1.json b/packages/app-data/sheets/template/w_praise_question_1.json index 2c18090b37..75782fc588 100644 --- a/packages/app-data/sheets/template/w_praise_question_1.json +++ b/packages/app-data/sheets/template/w_praise_question_1.json @@ -119,16 +119,9 @@ }, { "name": "text", - "value": "Parents usually don’t get thanked or praised enough.", + "value": "Parents usually do not get thanked or praised enough.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.radio_buttons_2.text" diff --git a/packages/app-data/sheets/template/w_praise_read.json b/packages/app-data/sheets/template/w_praise_read.json new file mode 100644 index 0000000000..0f5f330cb0 --- /dev/null +++ b/packages/app-data/sheets/template/w_praise_read.json @@ -0,0 +1,47 @@ +{ + "flow_type": "template", + "module": "praise", + "flow_name": "w_praise_read", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "praise", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_read_temp.json b/packages/app-data/sheets/template/w_praise_read_temp.json deleted file mode 100644 index 2ebeceea49..0000000000 --- a/packages/app-data/sheets/template/w_praise_read_temp.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "flow_type": "template", - "module": "praise", - "flow_name": "w_praise_read_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "matchedExpression": "@global.w_praise_female_caregiver_name", - "type": "global", - "fieldName": "w_praise_female_caregiver_name" - } - ] - }, - "_dynamicDependencies": { - "@global.w_praise_female_caregiver_name": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_praise/read/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "matchedExpression": "@global.w_praise_female_caregiver_name", - "type": "global", - "fieldName": "w_praise_female_caregiver_name" - } - ] - }, - "_dynamicDependencies": { - "@global.w_praise_female_caregiver_name": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_praise/read/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "matchedExpression": "@global.w_praise_female_caregiver_name", - "type": "global", - "fieldName": "w_praise_female_caregiver_name" - }, - { - "fullExpression": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "matchedExpression": "@global.w_praise_girl", - "type": "global", - "fieldName": "w_praise_girl" - }, - { - "fullExpression": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "matchedExpression": "@global.w_praise_teen_girl", - "type": "global", - "fieldName": "w_praise_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_praise_female_caregiver_name": [ - "value" - ], - "@global.w_praise_girl": [ - "value" - ], - "@global.w_praise_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_praise.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_praise_stepper.json b/packages/app-data/sheets/template/w_praise_stepper.json index 083bf0fb58..86ee1d32be 100644 --- a/packages/app-data/sheets/template/w_praise_stepper.json +++ b/packages/app-data/sheets/template/w_praise_stepper.json @@ -51,7 +51,7 @@ "w_praise_reflect_together", "w_praise_intro", "w_praise_talk_1", - "w_praise_read_temp", + "w_praise_read", "w_praise_talk_2", "w_praise_tools_activity", "w_praise_try", @@ -85,7 +85,7 @@ "w_praise_relax", "w_praise_intro", "w_praise_question_1", - "w_praise_read_temp", + "w_praise_read", "w_praise_question_2", "w_praise_tools_activity", "w_praise_home_practice", diff --git a/packages/app-data/sheets/template/w_praise_tools.json b/packages/app-data/sheets/template/w_praise_tools.json index eb417abaf5..9d83e81b73 100644 --- a/packages/app-data/sheets/template/w_praise_tools.json +++ b/packages/app-data/sheets/template/w_praise_tools.json @@ -31,16 +31,9 @@ }, { "name": "text_1", - "value": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "value": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you will see them doing that good thing again. It will also reassure them that you notice and care.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_1.text_1" diff --git a/packages/app-data/sheets/template/w_praise_try_pop.json b/packages/app-data/sheets/template/w_praise_try_pop.json index 9909944573..1b11fbbddd 100644 --- a/packages/app-data/sheets/template/w_praise_try_pop.json +++ b/packages/app-data/sheets/template/w_praise_try_pop.json @@ -11,16 +11,9 @@ "rows": [ { "name": "description_text", - "value": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "value": "Sometimes it is hard to think of what to praise your teen for! Here are some ideas from other parents:", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "suggestions.description_text" diff --git a/packages/app-data/sheets/template/w_praise_welcome_individual.json b/packages/app-data/sheets/template/w_praise_welcome_individual.json index ddb80b45ab..a6d304421b 100644 --- a/packages/app-data/sheets/template/w_praise_welcome_individual.json +++ b/packages/app-data/sheets/template/w_praise_welcome_individual.json @@ -52,68 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "reply_happy", - "value": "Great to hear that you are doing well. You are a wonderful parent!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_rules_hp_challenges.json b/packages/app-data/sheets/template/w_rules_hp_challenges.json index 114210819b..cb396bc626 100644 --- a/packages/app-data/sheets/template/w_rules_hp_challenges.json +++ b/packages/app-data/sheets/template/w_rules_hp_challenges.json @@ -30,279 +30,18 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 6, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_rules", + "name": "workshop", + "value": "w_rules", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_rules", - "matchedExpression": "@data.workshop.w_rules", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_rules": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "make rules with their teens", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "question_text_happy", - "value": "Did you have any challenges when trying to make a rule together?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_happy" - }, - { - "name": "question_text_ok_sad", - "value": "What was difficult for you about making a rule with your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_ok_sad" - }, - { - "name": "text_challenge_1", - "value": "My teen and I could not agree on a rule.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "text_challenge_2", - "value": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "text_challenge_4", - "value": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4" - }, - { - "name": "text_challenge_5", - "value": "When we tried to set a rule, we got into an argument.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_5" - }, - { - "name": "reply_challenge_5", - "value": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_5" - }, - { - "name": "text_challenge_6", - "value": "We were not able to stick to the rule.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_6" - }, - { - "name": "reply_challenge_6", - "value": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_6" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_hp_review.json b/packages/app-data/sheets/template/w_rules_hp_review.json index 30b3dbac64..eb54aa5efe 100644 --- a/packages/app-data/sheets/template/w_rules_hp_review.json +++ b/packages/app-data/sheets/template/w_rules_hp_review.json @@ -30,164 +30,18 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_rules", + "name": "workshop", + "value": "w_rules", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_rules", - "matchedExpression": "@data.workshop.w_rules", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_rules": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to make ONE rule with your teen this week.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_16.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_16.text", - "matchedExpression": "@data.praise.hp_praise_message_16.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_16.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_17.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_17.text", - "matchedExpression": "@data.praise.hp_praise_message_17.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_17.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_17.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_17.text", - "matchedExpression": "@data.praise.hp_praise_message_17.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_17.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_rules_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_text" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_rules_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_learn_temp.json b/packages/app-data/sheets/template/w_rules_learn_temp.json index 066ffa3b8b..2dfa8b13db 100644 --- a/packages/app-data/sheets/template/w_rules_learn_temp.json +++ b/packages/app-data/sheets/template/w_rules_learn_temp.json @@ -56,16 +56,9 @@ "rows": [ { "name": "text_1", - "value": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "value": "Write down one important rule you would like to make with your teenager – you will be doing this as your home practice this week. \n\nWhat will they think about it?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn_temp.workshop_activity.content_box.text_1" diff --git a/packages/app-data/sheets/template/w_rules_m_hp_reminder.json b/packages/app-data/sheets/template/w_rules_m_hp_reminder.json index 9f07fea71f..c12f0fe938 100644 --- a/packages/app-data/sheets/template/w_rules_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_rules_m_hp_reminder.json @@ -72,5 +72,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_praise.json b/packages/app-data/sheets/template/w_rules_m_praise.json index 07e5046ca9..b708434cc1 100644 --- a/packages/app-data/sheets/template/w_rules_m_praise.json +++ b/packages/app-data/sheets/template/w_rules_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_relax.json b/packages/app-data/sheets/template/w_rules_m_relax.json index 0d4dfc7e3f..4a673b71be 100644 --- a/packages/app-data/sheets/template/w_rules_m_relax.json +++ b/packages/app-data/sheets/template/w_rules_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_something_fun.json b/packages/app-data/sheets/template/w_rules_m_something_fun.json index 923ce9c691..7f6cdee912 100644 --- a/packages/app-data/sheets/template/w_rules_m_something_fun.json +++ b/packages/app-data/sheets/template/w_rules_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_w_in_progress.json b/packages/app-data/sheets/template/w_rules_m_w_in_progress.json index 55aa64b140..f73ead08db 100644 --- a/packages/app-data/sheets/template/w_rules_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_rules_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_w_released.json b/packages/app-data/sheets/template/w_rules_m_w_released.json index 086dc82079..a996e07dd6 100644 --- a/packages/app-data/sheets/template/w_rules_m_w_released.json +++ b/packages/app-data/sheets/template/w_rules_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_rules_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,86 +63,82 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "value": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], - "!@field.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "value": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], - "@field.do_workshops_together": [ + "@local.do_workshops_together": [ "condition" ] } @@ -130,5 +150,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_w_reminder.json b/packages/app-data/sheets/template/w_rules_m_w_reminder.json index 84c5d3887d..934f8c6390 100644 --- a/packages/app-data/sheets/template/w_rules_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_rules_m_w_reminder.json @@ -108,5 +108,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_m_w_tomorrow.json b/packages/app-data/sheets/template/w_rules_m_w_tomorrow.json index f9314c163c..2897a2b99f 100644 --- a/packages/app-data/sheets/template/w_rules_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_rules_m_w_tomorrow.json @@ -132,5 +132,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_rules_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_messages.json b/packages/app-data/sheets/template/w_rules_messages.json index 7dce66b3c5..34fd53d911 100644 --- a/packages/app-data/sheets/template/w_rules_messages.json +++ b/packages/app-data/sheets/template/w_rules_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_question.json b/packages/app-data/sheets/template/w_rules_question.json index 803e036a71..db6d525887 100644 --- a/packages/app-data/sheets/template/w_rules_question.json +++ b/packages/app-data/sheets/template/w_rules_question.json @@ -4,6 +4,118 @@ "flow_name": "w_rules_question", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "They discussed the reasons behind the rule", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1" + }, + { + "name": "answer_2", + "value": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "matchedExpression": "@global.w_rules_female_caregiver_1", + "type": "global", + "fieldName": "w_rules_female_caregiver_1" + }, + { + "fullExpression": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "matchedExpression": "@global.w_rules_teen_boy", + "type": "global", + "fieldName": "w_rules_teen_boy" + } + ] + }, + "_dynamicDependencies": { + "@global.w_rules_female_caregiver_1": [ + "value" + ], + "@global.w_rules_teen_boy": [ + "value" + ] + } + }, + { + "name": "answer_3", + "value": "The rule was clear, specific and fair", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3" + }, + { + "name": "answer_4", + "value": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "matchedExpression": "@global.w_rules_female_caregiver_1", + "type": "global", + "fieldName": "w_rules_female_caregiver_1" + }, + { + "fullExpression": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "matchedExpression": "@global.w_rules_teen_boy", + "type": "global", + "fieldName": "w_rules_teen_boy" + } + ] + }, + "_dynamicDependencies": { + "@global.w_rules_female_caregiver_1": [ + "value" + ], + "@global.w_rules_teen_boy": [ + "value" + ] + } + }, { "type": "template", "name": "question_time", @@ -92,52 +204,60 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:They discussed the reasons behind the rule", - "name:name_2 | text:@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "name:name_3 | text:The rule was clear, specific and fair", - "name:name_4 | text:@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3", + "name:name_4 | text:@local.answer_4" ], "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.combo_box_1.answer_list", "_dynamicFields": { "value": { + "0": [ + { + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" + } + ], "1": [ { - "fullExpression": "name:name_2 | text:@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" + } + ], + "2": [ { - "fullExpression": "name:name_2 | text:@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" } ], "3": [ { - "fullExpression": "name:name_4 | text:@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "name:name_4 | text:@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" + "fullExpression": "name:name_4 | text:@local.answer_4", + "matchedExpression": "@local.answer_4", + "type": "local", + "fieldName": "answer_4" } ] } }, "_dynamicDependencies": { - "@global.w_rules_female_caregiver_1": [ - "value.1", - "value.3" + "@local.answer_1": [ + "value.0" ], - "@global.w_rules_teen_boy": [ - "value.1", + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ + "value.2" + ], + "@local.answer_4": [ "value.3" ] } @@ -151,16 +271,9 @@ }, { "name": "reply", - "value": "That's right, making clear rules together in a calm and positive way works so well!", + "value": "That is right, making clear rules together in a calm and positive way works so well!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.combo_box_1.reply" diff --git a/packages/app-data/sheets/template/w_rules_read_1.json b/packages/app-data/sheets/template/w_rules_read_1.json new file mode 100644 index 0000000000..370a4716a9 --- /dev/null +++ b/packages/app-data/sheets/template/w_rules_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "make_rule", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_read_1_temp.json b/packages/app-data/sheets/template/w_rules_read_1_temp.json deleted file mode 100644 index d09ede448d..0000000000 --- a/packages/app-data/sheets/template/w_rules_read_1_temp.json +++ /dev/null @@ -1,598 +0,0 @@ -{ - "flow_type": "template", - "module": "rules", - "flow_name": "w_rules_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_teen_boy": [ - "value" - ], - "@global.w_rules_female_caregiver_1": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_1": [ - "value" - ], - "@global.w_rules_teen_boy": [ - "value" - ] - } - }, - { - "name": "dashed_box", - "value": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.dashed_box", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_teen_boy": [ - "value" - ], - "@global.w_rules_female_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_1": [ - "value", - "value" - ], - "@global.w_rules_teen_boy": [ - "value", - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_teen_boy": [ - "value" - ], - "@global.w_rules_female_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_teen_boy": [ - "value" - ], - "@global.w_rules_female_caregiver_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_7.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - }, - { - "fullExpression": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_teen_boy": [ - "value", - "value" - ], - "@global.w_rules_female_caregiver_1": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_1/slide_8.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "matchedExpression": "@global.w_rules_female_caregiver_1", - "type": "global", - "fieldName": "w_rules_female_caregiver_1" - }, - { - "fullExpression": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "matchedExpression": "@global.w_rules_teen_boy", - "type": "global", - "fieldName": "w_rules_teen_boy" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_1": [ - "value" - ], - "@global.w_rules_teen_boy": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_read_2.json b/packages/app-data/sheets/template/w_rules_read_2.json new file mode 100644 index 0000000000..5bedca7e2c --- /dev/null +++ b/packages/app-data/sheets/template/w_rules_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "rules", + "flow_name": "w_rules_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "online_safety", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_read_2_temp.json b/packages/app-data/sheets/template/w_rules_read_2_temp.json deleted file mode 100644 index d71d7a904b..0000000000 --- a/packages/app-data/sheets/template/w_rules_read_2_temp.json +++ /dev/null @@ -1,463 +0,0 @@ -{ - "flow_type": "template", - "module": "rules", - "flow_name": "w_rules_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "activity_title", - "value": "Online Safety", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.activity_title" - }, - { - "name": "include_outro", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.include_outro" - }, - { - "name": "outro_habit_data", - "value": "@data.habit.safe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.safe", - "matchedExpression": "@data.habit.safe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.safe": [ - "value" - ] - } - }, - { - "name": "intro_text", - "value": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "matchedExpression": "@global.w_rules_teen_girl", - "type": "global", - "fieldName": "w_rules_teen_girl" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "matchedExpression": "@global.w_rules_teen_girl", - "type": "global", - "fieldName": "w_rules_teen_girl" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "matchedExpression": "@global.teen_social_medium", - "type": "global", - "fieldName": "teen_social_medium" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_rules_teen_girl": [ - "value", - "value" - ], - "@global.teen_social_medium": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "matchedExpression": "@global.w_rules_teen_girl", - "type": "global", - "fieldName": "w_rules_teen_girl" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_rules_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "matchedExpression": "@global.w_rules_teen_girl", - "type": "global", - "fieldName": "w_rules_teen_girl" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "matchedExpression": "@global.teen_social_medium", - "type": "global", - "fieldName": "teen_social_medium" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_2": [ - "value" - ], - "@global.w_rules_teen_girl": [ - "value" - ], - "@global.teen_social_medium": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_2/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "matchedExpression": "@global.teen_social_medium", - "type": "global", - "fieldName": "teen_social_medium" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_2": [ - "value" - ], - "@global.teen_social_medium": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_rules/read_2/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "matchedExpression": "@global.w_rules_female_caregiver_2", - "type": "global", - "fieldName": "w_rules_female_caregiver_2" - }, - { - "fullExpression": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "matchedExpression": "@global.w_rules_teen_girl", - "type": "global", - "fieldName": "w_rules_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_rules_female_caregiver_2": [ - "value" - ], - "@global.w_rules_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_rules.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_rules_stepper.json b/packages/app-data/sheets/template/w_rules_stepper.json index 2a0dfc1149..cab34d9de5 100644 --- a/packages/app-data/sheets/template/w_rules_stepper.json +++ b/packages/app-data/sheets/template/w_rules_stepper.json @@ -50,10 +50,10 @@ "w_rules_relax", "w_rules_reflect_together", "w_rules_intro", - "w_rules_read_1_temp", + "w_rules_read_1", "w_rules_talk", "w_rules_tools_activity", - "w_rules_read_2_temp", + "w_rules_read_2", "w_rules_try", "w_rules_home_practice", "w_rules_ending" @@ -84,10 +84,10 @@ "w_rules_welcome_individual", "w_rules_relax", "w_rules_intro", - "w_rules_read_1_temp", + "w_rules_read_1", "w_rules_question", "w_rules_tools_activity", - "w_rules_read_2_temp", + "w_rules_read_2", "w_rules_learn_temp", "w_rules_home_practice", "w_rules_ending" diff --git a/packages/app-data/sheets/template/w_rules_tools.json b/packages/app-data/sheets/template/w_rules_tools.json index defd3d3601..dae1cf0903 100644 --- a/packages/app-data/sheets/template/w_rules_tools.json +++ b/packages/app-data/sheets/template/w_rules_tools.json @@ -87,16 +87,9 @@ }, { "name": "text_1", - "value": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "value": "Make them realistic for what your teenager can do, and be clear and specific so there is no misunderstanding. Not ‘on time’ but ‘by 7pm’.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_2.text_1" diff --git a/packages/app-data/sheets/template/w_rules_welcome_individual.json b/packages/app-data/sheets/template/w_rules_welcome_individual.json index d568b6e21a..5c75693c2a 100644 --- a/packages/app-data/sheets/template/w_rules_welcome_individual.json +++ b/packages/app-data/sheets/template/w_rules_welcome_individual.json @@ -52,84 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "Remember that YOU matter!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_safe_home_practice.json b/packages/app-data/sheets/template/w_safe_home_practice.json index 4033a706d2..6670397cec 100644 --- a/packages/app-data/sheets/template/w_safe_home_practice.json +++ b/packages/app-data/sheets/template/w_safe_home_practice.json @@ -67,16 +67,9 @@ "rows": [ { "name": "text_1", - "value": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "value": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you are both happy with the safety plan.\n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "@field.do_this_workshop_together", "type": "set_variable", @@ -99,16 +92,9 @@ }, { "name": "text_1", - "value": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "value": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you are both happy with the safety plan.\n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "condition": "!@field.do_this_workshop_together", "type": "set_variable", diff --git a/packages/app-data/sheets/template/w_safe_hp_challenges.json b/packages/app-data/sheets/template/w_safe_hp_challenges.json index ab51f9220f..5cbd1dc210 100644 --- a/packages/app-data/sheets/template/w_safe_hp_challenges.json +++ b/packages/app-data/sheets/template/w_safe_hp_challenges.json @@ -30,263 +30,18 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 6, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_safe", + "name": "workshop", + "value": "w_safe", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe", - "matchedExpression": "@data.workshop.w_safe", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "map risks and support with their teens", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "hp_description_second_singular", - "value": "map risks and support with your teen", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_second_singular" - }, - { - "name": "text_challenge_1", - "value": "My teen and I disagreed on which areas and online activities were unsafe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "text_challenge_2", - "value": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "text_challenge_4", - "value": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4" - }, - { - "name": "text_challenge_5", - "value": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_5" - }, - { - "name": "reply_challenge_5", - "value": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_5" - }, - { - "name": "text_challenge_6", - "value": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_6" - }, - { - "name": "reply_challenge_6", - "value": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_6" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_hp_review.json b/packages/app-data/sheets/template/w_safe_hp_review.json index d8cf78ecc4..a5ac977943 100644 --- a/packages/app-data/sheets/template/w_safe_hp_review.json +++ b/packages/app-data/sheets/template/w_safe_hp_review.json @@ -30,172 +30,17 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_safe", + "name": "workshop", + "value": "w_safe", "_translations": { "value": {} }, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe", - "matchedExpression": "@data.workshop.w_safe", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.safe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.safe", - "matchedExpression": "@data.habit.safe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.safe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_21.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_21.text", - "matchedExpression": "@data.praise.hp_praise_message_21.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_21.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_22.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_22.text", - "matchedExpression": "@data.praise.hp_praise_message_22.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_22.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_22.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_22.text", - "matchedExpression": "@data.praise.hp_praise_message_22.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_22.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_safe_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_safe_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_learn_individual_temp.json b/packages/app-data/sheets/template/w_safe_learn_individual_temp.json index 581ddc3e62..92338aed39 100644 --- a/packages/app-data/sheets/template/w_safe_learn_individual_temp.json +++ b/packages/app-data/sheets/template/w_safe_learn_individual_temp.json @@ -161,16 +161,9 @@ }, { "name": "text", - "value": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "value": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou will do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "learn.workshop_activity.content_box.box_1.text" diff --git a/packages/app-data/sheets/template/w_safe_m_hp_reminder.json b/packages/app-data/sheets/template/w_safe_m_hp_reminder.json index 5fb6a6b89c..0be486ba44 100644 --- a/packages/app-data/sheets/template/w_safe_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_safe_m_hp_reminder.json @@ -60,5 +60,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_praise.json b/packages/app-data/sheets/template/w_safe_m_praise.json index 0e95885c2e..0394254ed1 100644 --- a/packages/app-data/sheets/template/w_safe_m_praise.json +++ b/packages/app-data/sheets/template/w_safe_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_relax.json b/packages/app-data/sheets/template/w_safe_m_relax.json index 42eced8f36..c875502294 100644 --- a/packages/app-data/sheets/template/w_safe_m_relax.json +++ b/packages/app-data/sheets/template/w_safe_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_something_fun.json b/packages/app-data/sheets/template/w_safe_m_something_fun.json index 5051702391..564f1745b0 100644 --- a/packages/app-data/sheets/template/w_safe_m_something_fun.json +++ b/packages/app-data/sheets/template/w_safe_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_w_in_progress.json b/packages/app-data/sheets/template/w_safe_m_w_in_progress.json index 7e3ade8dc1..9309ffb1a8 100644 --- a/packages/app-data/sheets/template/w_safe_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_safe_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_w_released.json b/packages/app-data/sheets/template/w_safe_m_w_released.json index c11d2c2fd5..965bd7fa43 100644 --- a/packages/app-data/sheets/template/w_safe_m_w_released.json +++ b/packages/app-data/sheets/template/w_safe_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_safe_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,30 +63,28 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "value": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "fullExpression": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" @@ -70,51 +92,49 @@ ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "value": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", "_translations": { "value": { "tz_sw": true, "za_af": true, "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "za_tn": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "fullExpression": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" @@ -122,21 +142,21 @@ ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +168,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_w_reminder.json b/packages/app-data/sheets/template/w_safe_m_w_reminder.json index 765f7037b3..4cc50f29fa 100644 --- a/packages/app-data/sheets/template/w_safe_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_safe_m_w_reminder.json @@ -60,5 +60,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_m_w_tomorrow.json b/packages/app-data/sheets/template/w_safe_m_w_tomorrow.json index 7f55ecfd0d..db3343781a 100644 --- a/packages/app-data/sheets/template/w_safe_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_safe_m_w_tomorrow.json @@ -132,5 +132,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_safe_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_messages.json b/packages/app-data/sheets/template/w_safe_messages.json index c3f6a01466..c3b761e97c 100644 --- a/packages/app-data/sheets/template/w_safe_messages.json +++ b/packages/app-data/sheets/template/w_safe_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_question_1.json b/packages/app-data/sheets/template/w_safe_question_1.json index 7c44473b1b..e3c9cdf99a 100644 --- a/packages/app-data/sheets/template/w_safe_question_1.json +++ b/packages/app-data/sheets/template/w_safe_question_1.json @@ -4,6 +4,141 @@ "flow_name": "w_safe_question_1", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "matchedExpression": "@global.w_safe_teen_girl_1", + "type": "global", + "fieldName": "w_safe_teen_girl_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_safe_teen_girl_1": [ + "value" + ] + } + }, + { + "name": "answer_2", + "value": "@global.w_safe_teen_girl_1's friend was encouraging her", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.w_safe_teen_girl_1's friend was encouraging her", + "matchedExpression": "@global.w_safe_teen_girl_1", + "type": "global", + "fieldName": "w_safe_teen_girl_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_safe_teen_girl_1": [ + "value" + ] + } + }, + { + "name": "answer_3", + "value": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "matchedExpression": "@global.w_safe_teen_girl_1", + "type": "global", + "fieldName": "w_safe_teen_girl_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_safe_teen_girl_1": [ + "value" + ] + } + }, + { + "name": "answer_4", + "value": "Many girls in our communities get pregnant or catch HIV from older men", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_4" + }, + { + "name": "answer_5", + "value": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "matchedExpression": "@global.w_safe_teen_girl_1", + "type": "global", + "fieldName": "w_safe_teen_girl_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_safe_teen_girl_1": [ + "value" + ] + } + }, { "type": "template", "name": "question_time", @@ -103,11 +238,11 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "name:name_2 | text:@global.w_safe_teen_girl_1's friend was encouraging her", - "name:name_3 | text:Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "name:name_4 | text:Many girls in our communities get pregnant or catch HIV from older men", - "name:name_5 | text:There were no other trusted adults to advise @global.w_safe_teen_girl_1" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3", + "name:name_4 | text:@local.answer_4", + "name:name_5 | text:@local.answer_5" ], "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.answer_list", @@ -115,43 +250,60 @@ "value": { "0": [ { - "fullExpression": "name:name_1 | text:The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" } ], "1": [ { - "fullExpression": "name:name_2 | text:@global.w_safe_teen_girl_1's friend was encouraging her", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" } ], "2": [ { - "fullExpression": "name:name_3 | text:Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" + } + ], + "3": [ + { + "fullExpression": "name:name_4 | text:@local.answer_4", + "matchedExpression": "@local.answer_4", + "type": "local", + "fieldName": "answer_4" } ], "4": [ { - "fullExpression": "name:name_5 | text:There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" + "fullExpression": "name:name_5 | text:@local.answer_5", + "matchedExpression": "@local.answer_5", + "type": "local", + "fieldName": "answer_5" } ] } }, "_dynamicDependencies": { - "@global.w_safe_teen_girl_1": [ - "value.0", - "value.1", - "value.2", + "@local.answer_1": [ + "value.0" + ], + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ + "value.2" + ], + "@local.answer_4": [ + "value.3" + ], + "@local.answer_5": [ "value.4" ] } diff --git a/packages/app-data/sheets/template/w_safe_question_2.json b/packages/app-data/sheets/template/w_safe_question_2.json index a919ae6049..bf74914052 100644 --- a/packages/app-data/sheets/template/w_safe_question_2.json +++ b/packages/app-data/sheets/template/w_safe_question_2.json @@ -4,6 +4,86 @@ "flow_name": "w_safe_question_2", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1" + }, + { + "name": "answer_2", + "value": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2" + }, + { + "name": "answer_3", + "value": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3" + }, + { + "name": "answer_4", + "value": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_4" + }, + { + "name": "answer_5", + "value": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_5" + }, { "type": "template", "name": "question_time", @@ -88,14 +168,75 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "name:name_2 | text:People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "name:name_3 | text:People put things online to persuade teenagers to hurt themselves or commit suicide", - "name:name_4 | text:Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "name:name_5 | text:People can often be nasty to teenagers online – they feel like they can bully people safely" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3", + "name:name_4 | text:@local.answer_4", + "name:name_5 | text:@local.answer_5" ], "type": "set_variable", - "_nested_name": "question_time.workshop_activity.content_box.answer_list" + "_nested_name": "question_time.workshop_activity.content_box.answer_list", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" + } + ], + "1": [ + { + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" + } + ], + "2": [ + { + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" + } + ], + "3": [ + { + "fullExpression": "name:name_4 | text:@local.answer_4", + "matchedExpression": "@local.answer_4", + "type": "local", + "fieldName": "answer_4" + } + ], + "4": [ + { + "fullExpression": "name:name_5 | text:@local.answer_5", + "matchedExpression": "@local.answer_5", + "type": "local", + "fieldName": "answer_5" + } + ] + } + }, + "_dynamicDependencies": { + "@local.answer_1": [ + "value.0" + ], + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ + "value.2" + ], + "@local.answer_4": [ + "value.3" + ], + "@local.answer_5": [ + "value.4" + ] + } }, { "name": "reply", diff --git a/packages/app-data/sheets/template/w_safe_read_1.json b/packages/app-data/sheets/template/w_safe_read_1.json new file mode 100644 index 0000000000..c4dbe3a498 --- /dev/null +++ b/packages/app-data/sheets/template/w_safe_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "sugar_daddy", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_read_1_temp.json b/packages/app-data/sheets/template/w_safe_read_1_temp.json deleted file mode 100644 index b1b02a3328..0000000000 --- a/packages/app-data/sheets/template/w_safe_read_1_temp.json +++ /dev/null @@ -1,478 +0,0 @@ -{ - "flow_type": "template", - "module": "safe", - "flow_name": "w_safe_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "matchedExpression": "@global.w_safe_female_caregiver", - "type": "global", - "fieldName": "w_safe_female_caregiver" - }, - { - "fullExpression": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_female_caregiver": [ - "value" - ], - "@global.w_safe_teen_girl_1": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - }, - { - "fullExpression": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "matchedExpression": "@global.w_safe_teen_girl_2", - "type": "global", - "fieldName": "w_safe_teen_girl_2" - }, - { - "fullExpression": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "matchedExpression": "@global.w_safe_teen_girl_3", - "type": "global", - "fieldName": "w_safe_teen_girl_3" - }, - { - "fullExpression": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "matchedExpression": "@global.w_safe_female_caregiver", - "type": "global", - "fieldName": "w_safe_female_caregiver" - }, - { - "fullExpression": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_1": [ - "value", - "value" - ], - "@global.w_safe_teen_girl_2": [ - "value" - ], - "@global.w_safe_teen_girl_3": [ - "value" - ], - "@global.w_safe_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "matchedExpression": "@global.w_safe_teen_girl_2", - "type": "global", - "fieldName": "w_safe_teen_girl_2" - }, - { - "fullExpression": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_2": [ - "value" - ], - "@global.w_safe_teen_girl_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - }, - { - "fullExpression": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_1": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "matchedExpression": "@global.w_safe_teen_girl_2", - "type": "global", - "fieldName": "w_safe_teen_girl_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "matchedExpression": "@global.w_safe_teen_girl_3", - "type": "global", - "fieldName": "w_safe_teen_girl_3" - }, - { - "fullExpression": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - }, - { - "fullExpression": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_3": [ - "value" - ], - "@global.w_safe_teen_girl_1": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_1/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "matchedExpression": "@global.w_safe_female_caregiver", - "type": "global", - "fieldName": "w_safe_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_read_2.json b/packages/app-data/sheets/template/w_safe_read_2.json new file mode 100644 index 0000000000..38754f7764 --- /dev/null +++ b/packages/app-data/sheets/template/w_safe_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "safe", + "flow_name": "w_safe_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "online_contact", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_read_2_temp.json b/packages/app-data/sheets/template/w_safe_read_2_temp.json deleted file mode 100644 index 042907b3fb..0000000000 --- a/packages/app-data/sheets/template/w_safe_read_2_temp.json +++ /dev/null @@ -1,220 +0,0 @@ -{ - "flow_type": "template", - "module": "safe", - "flow_name": "w_safe_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let's look at another example of a dangerous situation together.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "matchedExpression": "@global.w_safe_teen_girl_1", - "type": "global", - "fieldName": "w_safe_teen_girl_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_teen_girl_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "matchedExpression": "@global.w_safe_female_caregiver", - "type": "global", - "fieldName": "w_safe_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_safe/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "matchedExpression": "@global.w_safe_female_caregiver", - "type": "global", - "fieldName": "w_safe_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_safe_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_safe.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_safe_stepper.json b/packages/app-data/sheets/template/w_safe_stepper.json index 786ebbf428..09cb50e861 100644 --- a/packages/app-data/sheets/template/w_safe_stepper.json +++ b/packages/app-data/sheets/template/w_safe_stepper.json @@ -50,9 +50,9 @@ "w_safe_relax", "w_safe_reflect_together", "w_safe_intro", - "w_safe_read_1_temp", + "w_safe_read_1", "w_safe_talk_1", - "w_safe_read_2_temp", + "w_safe_read_2", "w_safe_talk_2", "w_safe_learn_together_temp", "w_safe_tools_activity", @@ -85,9 +85,9 @@ "w_safe_welcome_individual", "w_safe_relax", "w_safe_intro", - "w_safe_read_1_temp", + "w_safe_read_1", "w_safe_question_1", - "w_safe_read_2_temp", + "w_safe_read_2", "w_safe_question_2", "w_safe_learn_individual_temp", "w_safe_tools_activity", diff --git a/packages/app-data/sheets/template/w_safe_tools.json b/packages/app-data/sheets/template/w_safe_tools.json index 6ac445c075..a8f5c6009b 100644 --- a/packages/app-data/sheets/template/w_safe_tools.json +++ b/packages/app-data/sheets/template/w_safe_tools.json @@ -98,15 +98,10 @@ }, { "name": "text_1", - "value": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "value": "Make RULES with your teen about how they can stay safe in your community (especially in risky areas that cannot be avoided) and how they can safely use the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -130,10 +125,10 @@ "trigger": "click", "action_id": "go_to", "args": [ - "w_rules_read_2_temp" + "w_rules_read_2" ], - "_raw": "click | go_to:w_rules_read_2_temp", - "_cleaned": "click | go_to:w_rules_read_2_temp" + "_raw": "click | go_to:w_rules_read_2", + "_cleaned": "click | go_to:w_rules_read_2" } ], "hidden": false, @@ -149,47 +144,74 @@ "rows": [ { "name": "title", - "value": "AMNESTY", + "value": "@global.safety_word", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", - "_nested_name": "essential_tools.tool_3.title" + "_nested_name": "essential_tools.tool_3.title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.safety_word", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } }, { "name": "text_1", - "value": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "value": "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "essential_tools.tool_3.text_1" + "_nested_name": "essential_tools.tool_3.text_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + }, + { + "fullExpression": "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + }, + { + "fullExpression": "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value", + "value", + "value" + ] + } }, { "name": "button_1", - "value": "Safety Amnesty Story", + "value": "@global.safety_word Story", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "action_list": [ @@ -197,15 +219,30 @@ "trigger": "click", "action_id": "go_to", "args": [ - "w_stress_read_3_temp" + "w_stress_read_3" ], - "_raw": "click | go_to:w_stress_read_3_temp", - "_cleaned": "click | go_to:w_stress_read_3_temp" + "_raw": "click | go_to:w_stress_read_3", + "_cleaned": "click | go_to:w_stress_read_3" } ], "hidden": false, "type": "set_variable", - "_nested_name": "essential_tools.tool_3.button_1" + "_nested_name": "essential_tools.tool_3.button_1", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.safety_word Story", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } } ], "_nested_name": "essential_tools.tool_3" @@ -226,40 +263,6 @@ "hidden": false, "type": "set_variable", "_nested_name": "essential_tools.bottom_text" - }, - { - "name": "button_1", - "value": "Resources to help in the community", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": true, - "type": "set_variable", - "_nested_name": "essential_tools.button_1" - }, - { - "name": "button_2", - "value": "Online Safety Resources", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": true, - "type": "set_variable", - "_nested_name": "essential_tools.button_2" } ], "_nested_name": "essential_tools" diff --git a/packages/app-data/sheets/template/w_safe_welcome_individual.json b/packages/app-data/sheets/template/w_safe_welcome_individual.json index 2ad3acbbbd..d68aeeb1d9 100644 --- a/packages/app-data/sheets/template/w_safe_welcome_individual.json +++ b/packages/app-data/sheets/template/w_safe_welcome_individual.json @@ -52,84 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "Being a great parent also means taking time to care for yourself every day.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_self_care_intro.json b/packages/app-data/sheets/template/w_self_care_intro.json index a4d5083b7a..cbff7333db 100644 --- a/packages/app-data/sheets/template/w_self_care_intro.json +++ b/packages/app-data/sheets/template/w_self_care_intro.json @@ -60,37 +60,6 @@ "type": "nested_properties", "name": "workshop_activity", "rows": [ - { - "name": "intro_title", - "value": "Why @data.workshop.w_self_care.short_title?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "topic_intro.listen.workshop_activity.intro_title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Why @data.workshop.w_self_care.short_title?", - "matchedExpression": "@data.workshop.w_self_care.short_title", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_self_care.short_title": [ - "value" - ] - } - }, { "name": "intro_text", "value": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", diff --git a/packages/app-data/sheets/template/w_self_care_intro_text.json b/packages/app-data/sheets/template/w_self_care_intro_text.json index 44b19add3d..3f43a52ae0 100644 --- a/packages/app-data/sheets/template/w_self_care_intro_text.json +++ b/packages/app-data/sheets/template/w_self_care_intro_text.json @@ -10,16 +10,9 @@ "rows": [ { "name": "description_text", - "value": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "value": "Greetings, everyone.\n\nToday's topic is self-care.\n\nThere are times when we experience challenges, face problems and do not know what to do. It is important to take care of ourselves to learn the techniques for keeping ourselves calm, in case problems, challenges or issues come up.\n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "suggestions.description_text" diff --git a/packages/app-data/sheets/template/w_self_care_m_hp_reminder.json b/packages/app-data/sheets/template/w_self_care_m_hp_reminder.json index 6006083d36..09fb4ac5d7 100644 --- a/packages/app-data/sheets/template/w_self_care_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_self_care_m_hp_reminder.json @@ -60,5 +60,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_m_relax.json b/packages/app-data/sheets/template/w_self_care_m_relax.json index 43107b848a..d4c56e5bb6 100644 --- a/packages/app-data/sheets/template/w_self_care_m_relax.json +++ b/packages/app-data/sheets/template/w_self_care_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_m_w_tomorrow.json b/packages/app-data/sheets/template/w_self_care_m_w_tomorrow.json index 64068744d1..15b6ccfb76 100644 --- a/packages/app-data/sheets/template/w_self_care_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_self_care_m_w_tomorrow.json @@ -4,6 +4,30 @@ "flow_name": "w_self_care_m_w_tomorrow", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_tomorrow", @@ -50,7 +74,7 @@ "za_zu": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_tomorrow.in_week_message.text", "_dynamicFields": { @@ -64,9 +88,9 @@ ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] @@ -75,47 +99,48 @@ "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "value": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_tomorrow.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "fullExpression": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" }, { - "fullExpression": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "fullExpression": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!", + "matchedExpression": "@global.workshops", + "type": "global", + "fieldName": "workshops" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] @@ -125,7 +150,10 @@ "value", "value" ], - "@field.do_workshops_together": [ + "@global.workshops": [ + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -137,5 +165,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_self_care_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_messages.json b/packages/app-data/sheets/template/w_self_care_messages.json index 26bc8da72f..d45ed1cb10 100644 --- a/packages/app-data/sheets/template/w_self_care_messages.json +++ b/packages/app-data/sheets/template/w_self_care_messages.json @@ -502,5 +502,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_recognise.json b/packages/app-data/sheets/template/w_self_care_recognise.json index e5e4d3eafa..23b6dbfc01 100644 --- a/packages/app-data/sheets/template/w_self_care_recognise.json +++ b/packages/app-data/sheets/template/w_self_care_recognise.json @@ -127,7 +127,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_self_care/guide_2/recognise.svg", + "value": "plh_images/workshops/w_self_care/individual/recognise.svg", "_translations": { "value": {} }, @@ -289,7 +289,7 @@ }, { "name": "activity_image", - "value": "@data.habit.treat_yourself.image_asset", + "value": "@data.habit.praise_yourself.image_asset", "_translations": { "value": {} }, @@ -298,15 +298,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@data.habit.treat_yourself.image_asset", - "matchedExpression": "@data.habit.treat_yourself.image_asset", + "fullExpression": "@data.habit.praise_yourself.image_asset", + "matchedExpression": "@data.habit.praise_yourself.image_asset", "type": "data", "fieldName": "habit" } ] }, "_dynamicDependencies": { - "@data.habit.treat_yourself.image_asset": [ + "@data.habit.praise_yourself.image_asset": [ "value" ] } @@ -375,7 +375,7 @@ }, { "name": "image_src", - "value": "plh_images/workshops/w_self_care/guide_2/recognise.svg", + "value": "plh_images/workshops/w_self_care/individual/recognise.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/w_self_care_relax.json b/packages/app-data/sheets/template/w_self_care_relax.json index eeb1f30b4b..86f1484ca2 100644 --- a/packages/app-data/sheets/template/w_self_care_relax.json +++ b/packages/app-data/sheets/template/w_self_care_relax.json @@ -154,13 +154,6 @@ } ], "_nested_name": "relax" - }, - { - "type": "set_field", - "name": "daily_relax_done", - "value": false, - "exclude_from_translation": true, - "_nested_name": "daily_relax_done" } ], "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" diff --git a/packages/app-data/sheets/template/w_self_care_reward.json b/packages/app-data/sheets/template/w_self_care_reward.json index 46d41b86e2..f0086f6cd8 100644 --- a/packages/app-data/sheets/template/w_self_care_reward.json +++ b/packages/app-data/sheets/template/w_self_care_reward.json @@ -67,22 +67,6 @@ "type": "set_variable", "_nested_name": "name_4" }, - { - "name": "name_5", - "value": "Watch TV", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "name_5" - }, { "type": "template", "name": "think", @@ -207,7 +191,7 @@ "rows": [ { "name": "image_src", - "value": "plh_images/workshops/w_self_care/guide_2/reward.svg", + "value": "plh_images/workshops/w_self_care/individual/reward.svg", "_translations": { "value": {} }, @@ -440,7 +424,7 @@ }, { "name": "image_src", - "value": "plh_images/workshops/w_self_care/guide_2/reward.svg", + "value": "plh_images/workshops/w_self_care/individual/reward.svg", "_translations": { "value": {} }, @@ -476,8 +460,7 @@ "name:name_1 | text:@local.name_1", "name:name_2 | text:@local.name_2", "name:name_3 | text:@local.name_3", - "name:name_4 | text:@local.name_4", - "name:name_5 | text:@local.name_5" + "name:name_4 | text:@local.name_4" ], "type": "set_variable", "_nested_name": "think.workshop_activity.content_box.answer_list", @@ -514,14 +497,6 @@ "type": "local", "fieldName": "name_4" } - ], - "4": [ - { - "fullExpression": "name:name_5 | text:@local.name_5", - "matchedExpression": "@local.name_5", - "type": "local", - "fieldName": "name_5" - } ] } }, @@ -537,9 +512,6 @@ ], "@local.name_4": [ "value.3" - ], - "@local.name_5": [ - "value.4" ] } }, @@ -564,218 +536,14 @@ }, { "name": "outro_text", - "value": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "value": "Try to do something to reward yourself every day.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@fields.w_self_care_reward_a == \"name_1\"", "type": "set_variable", - "_nested_name": "think.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "matchedExpression": "@local.name_1", - "type": "local", - "fieldName": "name_1" - } - ], - "condition": [ - { - "fullExpression": "@fields.w_self_care_reward_a == \"name_1\"", - "matchedExpression": "@fields.w_self_care_reward_a", - "type": "fields", - "fieldName": "w_self_care_reward_a" - } - ] - }, - "_dynamicDependencies": { - "@local.name_1": [ - "value" - ], - "@fields.w_self_care_reward_a": [ - "condition" - ] - } - }, - { - "name": "outro_text", - "value": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.w_self_care_reward_a == \"name_2\"", - "type": "set_variable", - "_nested_name": "think.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "matchedExpression": "@local.name_2", - "type": "local", - "fieldName": "name_2" - } - ], - "condition": [ - { - "fullExpression": "@fields.w_self_care_reward_a == \"name_2\"", - "matchedExpression": "@fields.w_self_care_reward_a", - "type": "fields", - "fieldName": "w_self_care_reward_a" - } - ] - }, - "_dynamicDependencies": { - "@local.name_2": [ - "value" - ], - "@fields.w_self_care_reward_a": [ - "condition" - ] - } - }, - { - "name": "outro_text", - "value": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.w_self_care_reward_a == \"name_3\"", - "type": "set_variable", - "_nested_name": "think.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "matchedExpression": "@local.name_3", - "type": "local", - "fieldName": "name_3" - } - ], - "condition": [ - { - "fullExpression": "@fields.w_self_care_reward_a == \"name_3\"", - "matchedExpression": "@fields.w_self_care_reward_a", - "type": "fields", - "fieldName": "w_self_care_reward_a" - } - ] - }, - "_dynamicDependencies": { - "@local.name_3": [ - "value" - ], - "@fields.w_self_care_reward_a": [ - "condition" - ] - } - }, - { - "name": "outro_text", - "value": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.w_self_care_reward_a == \"name_4\"", - "type": "set_variable", - "_nested_name": "think.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "matchedExpression": "@local.name_4", - "type": "local", - "fieldName": "name_4" - } - ], - "condition": [ - { - "fullExpression": "@fields.w_self_care_reward_a == \"name_4\"", - "matchedExpression": "@fields.w_self_care_reward_a", - "type": "fields", - "fieldName": "w_self_care_reward_a" - } - ] - }, - "_dynamicDependencies": { - "@local.name_4": [ - "value" - ], - "@fields.w_self_care_reward_a": [ - "condition" - ] - } - }, - { - "name": "outro_text", - "value": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.w_self_care_reward_a == \"name_5\"", - "type": "set_variable", - "_nested_name": "think.workshop_activity.outro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "matchedExpression": "@local.name_5", - "type": "local", - "fieldName": "name_5" - } - ], - "condition": [ - { - "fullExpression": "@fields.w_self_care_reward_a == \"name_5\"", - "matchedExpression": "@fields.w_self_care_reward_a", - "type": "fields", - "fieldName": "w_self_care_reward_a" - } - ] - }, - "_dynamicDependencies": { - "@local.name_5": [ - "value" - ], - "@fields.w_self_care_reward_a": [ - "condition" - ] - } + "_nested_name": "think.workshop_activity.outro_text" } ], "_nested_name": "think.workshop_activity" @@ -799,5 +567,8 @@ } } ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx", + "_overrides": { + "w_self_care_reward_tz": "@fields._deployment_name == \"plh_tz\"" + } } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_reward_pop.json b/packages/app-data/sheets/template/w_self_care_reward_pop.json index 7625c07383..a222662851 100644 --- a/packages/app-data/sheets/template/w_self_care_reward_pop.json +++ b/packages/app-data/sheets/template/w_self_care_reward_pop.json @@ -3,6 +3,70 @@ "flow_name": "w_self_care_reward_pop", "status": "released", "rows": [ + { + "name": "name_1", + "value": "Have a hot drink", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "name_1" + }, + { + "name": "name_2", + "value": "Call a friend or relative", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "name_2" + }, + { + "name": "name_3", + "value": "Have a relaxing bath", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "name_3" + }, + { + "name": "name_4", + "value": "Read", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "name_4" + }, { "type": "template", "name": "suggestions", @@ -26,23 +90,62 @@ }, { "name": "list_text", - "value": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "value": "* @local.name_1\n* @local.name_2\n* @local.name_3\n* @local.name_4", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "suggestions.list_text" + "_nested_name": "suggestions.list_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "* @local.name_1\n* @local.name_2\n* @local.name_3\n* @local.name_4", + "matchedExpression": "@local.name_1", + "type": "local", + "fieldName": "name_1" + }, + { + "fullExpression": "* @local.name_1\n* @local.name_2\n* @local.name_3\n* @local.name_4", + "matchedExpression": "@local.name_2", + "type": "local", + "fieldName": "name_2" + }, + { + "fullExpression": "* @local.name_1\n* @local.name_2\n* @local.name_3\n* @local.name_4", + "matchedExpression": "@local.name_3", + "type": "local", + "fieldName": "name_3" + }, + { + "fullExpression": "* @local.name_1\n* @local.name_2\n* @local.name_3\n* @local.name_4", + "matchedExpression": "@local.name_4", + "type": "local", + "fieldName": "name_4" + } + ] + }, + "_dynamicDependencies": { + "@local.name_1": [ + "value" + ], + "@local.name_2": [ + "value" + ], + "@local.name_3": [ + "value" + ], + "@local.name_4": [ + "value" + ] + } } ], "_nested_name": "suggestions" } ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx" + "_xlsxPath": "global/top_templates/workshop_templates/workshop_self_care.xlsx", + "_overrides": { + "w_self_care_reward_pop_tz": "@fields._deployment_name == \"plh_tz\"" + } } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_reward_pop_tz.json b/packages/app-data/sheets/template/w_self_care_reward_pop_tz.json new file mode 100644 index 0000000000..1ebcb5c3c0 --- /dev/null +++ b/packages/app-data/sheets/template/w_self_care_reward_pop_tz.json @@ -0,0 +1,63 @@ +{ + "flow_type": "template", + "flow_name": "w_self_care_reward_pop_tz", + "status": "released", + "override_target": "w_self_care_reward_pop", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "rows": [ + { + "type": "template", + "name": "w_self_care_reward_pop", + "value": "w_self_care_reward_pop", + "is_override_target": true, + "rows": [ + { + "name": "name_1", + "value": "Sleeping", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward_pop.name_1" + }, + { + "name": "name_2", + "value": "Talking with a friend", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward_pop.name_2" + }, + { + "name": "name_3", + "value": "Doing something I enjoy", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward_pop.name_3" + }, + { + "name": "name_4", + "value": "Doing something relaxing", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward_pop.name_4" + } + ], + "_nested_name": "w_self_care_reward_pop" + } + ], + "_xlsxPath": "tz/top_templates/workshop_templates/workshop_self_care_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_reward_tz.json b/packages/app-data/sheets/template/w_self_care_reward_tz.json new file mode 100644 index 0000000000..2c8f0a86b2 --- /dev/null +++ b/packages/app-data/sheets/template/w_self_care_reward_tz.json @@ -0,0 +1,83 @@ +{ + "flow_type": "template", + "flow_name": "w_self_care_reward_tz", + "status": "released", + "override_target": "w_self_care_reward", + "override_condition": "@fields._deployment_name == \"plh_tz\"", + "rows": [ + { + "type": "template", + "name": "w_self_care_reward", + "value": "w_self_care_reward", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "is_override_target": true, + "rows": [ + { + "name": "name_1", + "value": "Sleeping", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward.name_1" + }, + { + "name": "name_2", + "value": "Talking with a friend", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward.name_2" + }, + { + "name": "name_3", + "value": "Doing something I enjoy", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward.name_3" + }, + { + "name": "name_4", + "value": "Doing something relaxing", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "w_self_care_reward.name_4" + } + ], + "_nested_name": "w_self_care_reward" + } + ], + "_xlsxPath": "tz/top_templates/workshop_templates/workshop_self_care_tz.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_self_care_tools.json b/packages/app-data/sheets/template/w_self_care_tools.json index 65ae606e43..04a48dd0bd 100644 --- a/packages/app-data/sheets/template/w_self_care_tools.json +++ b/packages/app-data/sheets/template/w_self_care_tools.json @@ -97,16 +97,9 @@ }, { "name": "text_1", - "value": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "value": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can: \"Well done for …\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_2.text_1" @@ -164,16 +157,9 @@ }, { "name": "text_1", - "value": "Remember you deserve your quality time too! What makes you happy?", + "value": "Remember, you deserve your quality time too! What makes you happy?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_3.text_1" diff --git a/packages/app-data/sheets/template/w_self_care_welcome_individual.json b/packages/app-data/sheets/template/w_self_care_welcome_individual.json index 08c9a544a3..a93757ec67 100644 --- a/packages/app-data/sheets/template/w_self_care_welcome_individual.json +++ b/packages/app-data/sheets/template/w_self_care_welcome_individual.json @@ -51,84 +51,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "reply_happy", - "value": "Wonderful, I am so happy things are going well.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_solve_hp_challenges.json b/packages/app-data/sheets/template/w_solve_hp_challenges.json index f102a1f352..efcec062de 100644 --- a/packages/app-data/sheets/template/w_solve_hp_challenges.json +++ b/packages/app-data/sheets/template/w_solve_hp_challenges.json @@ -30,298 +30,17 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": 5, - "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges" - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_solve", + "name": "workshop", + "value": "w_solve", "_translations": { "value": {} }, "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_solve", - "matchedExpression": "@data.workshop.w_solve", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_solve": [ - "value" - ] - } - }, - { - "name": "hp_description_third_plural", - "value": "resolve problems with their teens", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_third_plural" - }, - { - "name": "hp_description_second_singular", - "value": "resolve the problem with your teen", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.hp_description_second_singular" - }, - { - "name": "text_challenge_1", - "value": "I forgot the steps of problem solving.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "reply_challenge_1_has_button", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1_has_button" - }, - { - "name": "button_1_a", - "value": "Four steps of problem solving", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_solve_tools" - ], - "_raw": "click | go_to: w_solve_tools", - "_cleaned": "click | go_to: w_solve_tools" - } - ], - "type": "set_variable", - "_nested_name": "home_practice_challenges.button_1_a" - }, - { - "name": "text_challenge_2", - "value": "I started with the solutions right away.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "reply_challenge_2_has_button", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2_has_button" - }, - { - "name": "button_2_a", - "value": "Four steps of problem solving", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "action_list": [ - { - "trigger": "click", - "action_id": "go_to", - "args": [ - "w_solve_tools" - ], - "_raw": "click | go_to: w_solve_tools", - "_cleaned": "click | go_to: w_solve_tools" - } - ], - "type": "set_variable", - "_nested_name": "home_practice_challenges.button_2_a" - }, - { - "name": "text_challenge_3", - "value": "We could not agree on a solution to try out and we got into an argument.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "text_challenge_4", - "value": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4" - }, - { - "name": "text_challenge_5", - "value": "My teen got angry and did not want to talk about the problem.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_5" - }, - { - "name": "reply_challenge_5", - "value": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_5" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_hp_review.json b/packages/app-data/sheets/template/w_solve_hp_review.json index 2daca87b73..1529f276fd 100644 --- a/packages/app-data/sheets/template/w_solve_hp_review.json +++ b/packages/app-data/sheets/template/w_solve_hp_review.json @@ -30,148 +30,18 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_solve", + "name": "workshop", + "value": "w_solve", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_solve", - "matchedExpression": "@data.workshop.w_solve", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_solve": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "Your goal was to try and resolve a problem or conflict together with your teen.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_25.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_25.text", - "matchedExpression": "@data.praise.hp_praise_message_25.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_25.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_20.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_20.text", - "matchedExpression": "@data.praise.hp_praise_message_20.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_20.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_20.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_20.text", - "matchedExpression": "@data.praise.hp_praise_message_20.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_20.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_solve_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_solve_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_hp_reminder.json b/packages/app-data/sheets/template/w_solve_m_hp_reminder.json index b7c7e5d6df..d99a1ac2ef 100644 --- a/packages/app-data/sheets/template/w_solve_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_solve_m_hp_reminder.json @@ -108,5 +108,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_praise.json b/packages/app-data/sheets/template/w_solve_m_praise.json index eedc9f86c5..d5e5e2caa6 100644 --- a/packages/app-data/sheets/template/w_solve_m_praise.json +++ b/packages/app-data/sheets/template/w_solve_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_relax.json b/packages/app-data/sheets/template/w_solve_m_relax.json index ea6d563555..de0a2a2004 100644 --- a/packages/app-data/sheets/template/w_solve_m_relax.json +++ b/packages/app-data/sheets/template/w_solve_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_something_fun.json b/packages/app-data/sheets/template/w_solve_m_something_fun.json index 89df1e523d..768544339d 100644 --- a/packages/app-data/sheets/template/w_solve_m_something_fun.json +++ b/packages/app-data/sheets/template/w_solve_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_w_in_progress.json b/packages/app-data/sheets/template/w_solve_m_w_in_progress.json index 918fcec2ba..7a2581647a 100644 --- a/packages/app-data/sheets/template/w_solve_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_solve_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_w_released.json b/packages/app-data/sheets/template/w_solve_m_w_released.json index 34fe34385f..eaff0c4e87 100644 --- a/packages/app-data/sheets/template/w_solve_m_w_released.json +++ b/packages/app-data/sheets/template/w_solve_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_solve_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,86 +63,94 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", + "value": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you how to deal with them.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you how to deal with them.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" + }, + { + "fullExpression": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you how to deal with them.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ + "value" + ], + "@global.workshop": [ "value" ], - "!@field.do_workshops_together": [ + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "value": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" + }, + { + "fullExpression": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ + "value" + ], + "@global.workshop": [ "value" ], - "@field.do_workshops_together": [ + "@local.do_workshops_together": [ "condition" ] } @@ -130,5 +162,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_w_reminder.json b/packages/app-data/sheets/template/w_solve_m_w_reminder.json index 707c1cb904..d6dde67ba2 100644 --- a/packages/app-data/sheets/template/w_solve_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_solve_m_w_reminder.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "value": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next @global.workshop to learn how to successfully address these problems.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_reminder.in_week_message.text" + "_nested_name": "m_workshop_reminder.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next @global.workshop to learn how to successfully address these problems.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_reminder.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_m_w_tomorrow.json b/packages/app-data/sheets/template/w_solve_m_w_tomorrow.json index 2611bc693f..8b542ed827 100644 --- a/packages/app-data/sheets/template/w_solve_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_solve_m_w_tomorrow.json @@ -59,15 +59,10 @@ }, { "name": "text_not_completed", - "value": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "value": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -75,16 +70,28 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" }, { - "fullExpression": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" + }, + { + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ] }, @@ -92,6 +99,10 @@ "@global.parent_app": [ "value" ], + "@global.workshop": [ + "value", + "value" + ], "@local.workshop_data.in_text_title": [ "value" ] @@ -132,5 +143,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_solve_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_messages.json b/packages/app-data/sheets/template/w_solve_messages.json index 899f912629..7139a1acab 100644 --- a/packages/app-data/sheets/template/w_solve_messages.json +++ b/packages/app-data/sheets/template/w_solve_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_read_1.json b/packages/app-data/sheets/template/w_solve_read_1.json new file mode 100644 index 0000000000..017bdcea3d --- /dev/null +++ b/packages/app-data/sheets/template/w_solve_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "neg_solve", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_read_1_temp.json b/packages/app-data/sheets/template/w_solve_read_1_temp.json deleted file mode 100644 index 7c950dbfe6..0000000000 --- a/packages/app-data/sheets/template/w_solve_read_1_temp.json +++ /dev/null @@ -1,308 +0,0 @@ -{ - "flow_type": "template", - "module": "solve", - "flow_name": "w_solve_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - }, - { - "fullExpression": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - }, - { - "fullExpression": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_teen_girl": [ - "value", - "value" - ], - "@global.w_solve_female_caregiver_1": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "matchedExpression": "@global.w_solve_teen_boy_1", - "type": "global", - "fieldName": "w_solve_teen_boy_1" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_1": [ - "value", - "value" - ], - "@global.w_solve_teen_girl": [ - "value", - "value" - ], - "@global.w_solve_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_1": [ - "value", - "value" - ], - "@global.w_solve_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "matchedExpression": "@global.w_solve_female_caregiver_1", - "type": "global", - "fieldName": "w_solve_female_caregiver_1" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "matchedExpression": "@global.w_solve_teen_girl", - "type": "global", - "fieldName": "w_solve_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_1": [ - "value" - ], - "@global.w_solve_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_read_2.json b/packages/app-data/sheets/template/w_solve_read_2.json new file mode 100644 index 0000000000..b6e78306fb --- /dev/null +++ b/packages/app-data/sheets/template/w_solve_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "solve", + "flow_name": "w_solve_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "pos_solve", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_read_2_temp.json b/packages/app-data/sheets/template/w_solve_read_2_temp.json deleted file mode 100644 index caab72f526..0000000000 --- a/packages/app-data/sheets/template/w_solve_read_2_temp.json +++ /dev/null @@ -1,947 +0,0 @@ -{ - "flow_type": "template", - "module": "solve", - "flow_name": "w_solve_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let’s see how problem solving works in practice.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_teen_boy_2": [ - "value" - ], - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - }, - { - "name": "dashed_box", - "value": "Step 1: KNOW IT", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.dashed_box" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value", - "value" - ] - } - }, - { - "name": "dashed_box", - "value": "Step 2: SOLVE IT", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1.dashed_box" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_7.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_8.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_9.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_10.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - }, - { - "name": "dashed_box", - "value": "Step 3: TRY IT", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.dashed_box" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_11.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value" - ] - } - }, - { - "name": "dashed_box", - "value": "Step 4: TEST IT", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "hidden": false, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1.dashed_box" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_solve/read_2/slide_12.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "matchedExpression": "@global.w_solve_teen_boy_2", - "type": "global", - "fieldName": "w_solve_teen_boy_2" - }, - { - "fullExpression": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "matchedExpression": "@global.w_solve_female_caregiver_2", - "type": "global", - "fieldName": "w_solve_female_caregiver_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_solve_female_caregiver_2": [ - "value", - "value" - ], - "@global.w_solve_teen_boy_2": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_solve.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_solve_solution_1.json b/packages/app-data/sheets/template/w_solve_solution_1.json index 470ae76e4c..c48e5a000e 100644 --- a/packages/app-data/sheets/template/w_solve_solution_1.json +++ b/packages/app-data/sheets/template/w_solve_solution_1.json @@ -72,23 +72,16 @@ }, { "name": "text", - "value": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "value": "@global.w_solve_female_caregiver_1: “You cannot go out for the next month”", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "box_image.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "fullExpression": "@global.w_solve_female_caregiver_1: “You cannot go out for the next month”", "matchedExpression": "@global.w_solve_female_caregiver_1", "type": "global", "fieldName": "w_solve_female_caregiver_1" diff --git a/packages/app-data/sheets/template/w_solve_solution_2.json b/packages/app-data/sheets/template/w_solve_solution_2.json index 7165aa824f..937d48095b 100644 --- a/packages/app-data/sheets/template/w_solve_solution_2.json +++ b/packages/app-data/sheets/template/w_solve_solution_2.json @@ -57,23 +57,16 @@ }, { "name": "text", - "value": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "value": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we will save up together so you can make your own decisions without owing him anything.\"", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "box_image.text", "_dynamicFields": { "value": [ { - "fullExpression": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "fullExpression": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we will save up together so you can make your own decisions without owing him anything.\"", "matchedExpression": "@global.w_solve_female_caregiver_1", "type": "global", "fieldName": "w_solve_female_caregiver_1" diff --git a/packages/app-data/sheets/template/w_solve_stepper.json b/packages/app-data/sheets/template/w_solve_stepper.json index 3bd44b37df..35c4d5bc9a 100644 --- a/packages/app-data/sheets/template/w_solve_stepper.json +++ b/packages/app-data/sheets/template/w_solve_stepper.json @@ -50,9 +50,9 @@ "w_solve_relax", "w_solve_reflect_together", "w_solve_intro", - "w_solve_read_1_temp", + "w_solve_read_1", "w_solve_tools_activity", - "w_solve_read_2_temp", + "w_solve_read_2", "w_solve_talk", "w_solve_learn_temp", "w_solve_try", @@ -85,9 +85,9 @@ "w_solve_welcome_individual", "w_solve_relax", "w_solve_intro", - "w_solve_read_1_temp", + "w_solve_read_1", "w_solve_tools_activity", - "w_solve_read_2_temp", + "w_solve_read_2", "w_solve_think", "w_solve_learn_temp", "w_solve_home_practice", diff --git a/packages/app-data/sheets/template/w_solve_welcome_individual.json b/packages/app-data/sheets/template/w_solve_welcome_individual.json index 01f9f5c758..f833df5356 100644 --- a/packages/app-data/sheets/template/w_solve_welcome_individual.json +++ b/packages/app-data/sheets/template/w_solve_welcome_individual.json @@ -52,84 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "We care about you, and how life is treating you.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "You are a star. And you are making a real difference. Be proud of yourself.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sorry that things are not easy today. All parents have these days.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sorry that things are not easy today. All parents have these days.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/w_stress_home_practice.json b/packages/app-data/sheets/template/w_stress_home_practice.json index b24e9d8d02..84432860a3 100644 --- a/packages/app-data/sheets/template/w_stress_home_practice.json +++ b/packages/app-data/sheets/template/w_stress_home_practice.json @@ -135,32 +135,37 @@ }, { "name": "text_2", - "value": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "value": "Choose a \"@global.safety_word\" with your teenager, and think of a situation together when you could use this.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "hidden": false, "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.box_1.text_2" + "_nested_name": "home_practice.workshop_activity.content_box.box_1.text_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Choose a \"@global.safety_word\" with your teenager, and think of a situation together when you could use this.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } }, { "name": "button_2", - "value": "Safety Amnesty Story", + "value": "@global.safety_word Story", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "action_list": [ @@ -168,15 +173,30 @@ "trigger": "click", "action_id": "go_to", "args": [ - "w_stress_read_3_temp" + "w_stress_read_3" ], - "_raw": "click | go_to:w_stress_read_3_temp", - "_cleaned": "click | go_to:w_stress_read_3_temp" + "_raw": "click | go_to:w_stress_read_3", + "_cleaned": "click | go_to:w_stress_read_3" } ], "hidden": false, "type": "set_variable", - "_nested_name": "home_practice.workshop_activity.content_box.box_1.button_2" + "_nested_name": "home_practice.workshop_activity.content_box.box_1.button_2", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.safety_word Story", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } }, { "name": "habit_text", diff --git a/packages/app-data/sheets/template/w_stress_hp_challenges.json b/packages/app-data/sheets/template/w_stress_hp_challenges.json index bf3e5de461..949cbd9300 100644 --- a/packages/app-data/sheets/template/w_stress_hp_challenges.json +++ b/packages/app-data/sheets/template/w_stress_hp_challenges.json @@ -4,12 +4,6 @@ "flow_name": "w_stress_hp_challenges", "status": "released", "rows": [ - { - "name": "number_of_challenges", - "value": 5, - "type": "set_variable", - "_nested_name": "number_of_challenges" - }, { "type": "template", "name": "home_practice_challenges", @@ -36,248 +30,18 @@ ], "rows": [ { - "name": "number_of_challenges", - "value": "@local.number_of_challenges", + "name": "workshop", + "value": "w_stress", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_challenges.number_of_challenges", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.number_of_challenges", - "matchedExpression": "@local.number_of_challenges", - "type": "local", - "fieldName": "number_of_challenges" - } - ] - }, - "_dynamicDependencies": { - "@local.number_of_challenges": [ - "value" - ] - } - }, - { - "name": "workshop_data", - "value": "@data.workshop.w_safe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_safe", - "matchedExpression": "@data.workshop.w_safe", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_safe": [ - "value" - ] - } - }, - { - "name": "question_text_happy", - "value": "Did you experience any of these challenges when sharing how you feel with your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_happy" - }, - { - "name": "question_text_ok_sad", - "value": "What was difficult for you about sharing how you feel with your teen?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.question_text_ok_sad" - }, - { - "name": "text_challenge_1", - "value": "I was afraid my teen would think I was weak.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_1" - }, - { - "name": "reply_challenge_1", - "value": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_1" - }, - { - "name": "text_challenge_2", - "value": "I felt uncomfortable about naming specific difficult feelings.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_2" - }, - { - "name": "reply_challenge_2", - "value": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_2" - }, - { - "name": "text_challenge_3", - "value": "My teen felt uncomfortable when I shared my feelings.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_3" - }, - { - "name": "reply_challenge_3", - "value": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_3" - }, - { - "name": "text_challenge_4", - "value": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_4" - }, - { - "name": "reply_challenge_4", - "value": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_4" - }, - { - "name": "text_challenge_5", - "value": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.text_challenge_5" - }, - { - "name": "reply_challenge_5", - "value": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_challenges.reply_challenge_5" + "_nested_name": "home_practice_challenges.workshop" } ], "_nested_name": "home_practice_challenges" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_hp_review.json b/packages/app-data/sheets/template/w_stress_hp_review.json index 38bbf4361b..2308042cfd 100644 --- a/packages/app-data/sheets/template/w_stress_hp_review.json +++ b/packages/app-data/sheets/template/w_stress_hp_review.json @@ -30,377 +30,18 @@ ], "rows": [ { - "name": "workshop_data", - "value": "@data.workshop.w_stress", + "name": "workshop", + "value": "w_stress", "_translations": { "value": {} }, + "exclude_from_translation": true, "type": "set_variable", - "_nested_name": "home_practice_review.workshop_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.workshop.w_stress", - "matchedExpression": "@data.workshop.w_stress", - "type": "data", - "fieldName": "workshop" - } - ] - }, - "_dynamicDependencies": { - "@data.workshop.w_stress": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "outro_habit_data", - "value": "@data.habit.breathe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.breathe", - "matchedExpression": "@data.habit.breathe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.breathe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "rows": [ - { - "name": "text", - "value": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "@fields.weekly_parent_point_breathe > 0", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "matchedExpression": "@data.habit.breathe.in_text_title", - "type": "data", - "fieldName": "habit" - } - ], - "condition": [ - { - "fullExpression": "@fields.weekly_parent_point_breathe > 0", - "matchedExpression": "@fields.weekly_parent_point_breathe", - "type": "fields", - "fieldName": "weekly_parent_point_breathe" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.breathe.in_text_title": [ - "value" - ], - "@fields.weekly_parent_point_breathe": [ - "condition" - ] - } - }, - { - "name": "text", - "value": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "condition": "!(@fields.weekly_parent_point_breathe > 0)", - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!(@fields.weekly_parent_point_breathe > 0)", - "matchedExpression": "@fields.weekly_parent_point_breathe", - "type": "fields", - "fieldName": "weekly_parent_point_breathe" - } - ] - }, - "_dynamicDependencies": { - "@fields.weekly_parent_point_breathe": [ - "condition" - ] - } - }, - { - "name": "question_text", - "value": "How did this work out?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.question_text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_10.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_10.text", - "matchedExpression": "@data.praise.hp_praise_message_10.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_10.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_11.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_11.text", - "matchedExpression": "@data.praise.hp_praise_message_11.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_11.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_11.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_11.text", - "matchedExpression": "@data.praise.hp_praise_message_11.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_11.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_radio_buttons_emo_temp", - "rows": [ - { - "name": "radio_group_final", - "value": "w_stress_hp_review_mood", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.radio_group_final" - }, - { - "name": "text", - "value": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.text" - }, - { - "name": "question_text", - "value": "How did this go?", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.question_text" - }, - { - "name": "reply_happy", - "value": "@data.praise.hp_praise_message_12.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.reply_happy", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_12.text", - "matchedExpression": "@data.praise.hp_praise_message_12.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_12.text": [ - "value" - ] - } - }, - { - "name": "reply_ok", - "value": "@data.praise.hp_praise_message_13.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.reply_ok", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_13.text", - "matchedExpression": "@data.praise.hp_praise_message_13.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_13.text": [ - "value" - ] - } - }, - { - "name": "reply_sad", - "value": "@data.praise.hp_praise_message_13.text", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1.reply_sad", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.praise.hp_praise_message_13.text", - "matchedExpression": "@data.praise.hp_praise_message_13.text", - "type": "data", - "fieldName": "praise" - } - ] - }, - "_dynamicDependencies": { - "@data.praise.hp_praise_message_13.text": [ - "value" - ] - } - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "w_stress_hp_challenges", - "rows": [], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "home_practice_review.workshop_activity.content_box" - } - ], - "_nested_name": "home_practice_review.workshop_activity" + "_nested_name": "home_practice_review.workshop" } ], "_nested_name": "home_practice_review" } ], - "_xlsxPath": "global/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/home_practice_reviews/w_stress_hp_review.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_intro_text.json b/packages/app-data/sheets/template/w_stress_intro_text.json index 534e1d808c..77c2960b03 100644 --- a/packages/app-data/sheets/template/w_stress_intro_text.json +++ b/packages/app-data/sheets/template/w_stress_intro_text.json @@ -11,15 +11,10 @@ "rows": [ { "name": "description_text", - "value": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "value": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that make us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", diff --git a/packages/app-data/sheets/template/w_stress_m_hp_reminder.json b/packages/app-data/sheets/template/w_stress_m_hp_reminder.json index 51179223b7..5571115930 100644 --- a/packages/app-data/sheets/template/w_stress_m_hp_reminder.json +++ b/packages/app-data/sheets/template/w_stress_m_hp_reminder.json @@ -26,21 +26,21 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_breathe == 0", + "condition": "@fields.parent_point_count_breathe == 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.text", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.parent_point_count_breathe == 0", - "matchedExpression": "@field.parent_point_count_breathe", - "type": "field", + "fullExpression": "@fields.parent_point_count_breathe == 0", + "matchedExpression": "@fields.parent_point_count_breathe", + "type": "fields", "fieldName": "parent_point_count_breathe" } ] }, "_dynamicDependencies": { - "@field.parent_point_count_breathe": [ + "@fields.parent_point_count_breathe": [ "condition" ] } @@ -51,7 +51,7 @@ "_translations": { "value": {} }, - "condition": "@field.parent_point_count_breathe == 0", + "condition": "@fields.parent_point_count_breathe == 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.habit_data", "_dynamicFields": { @@ -65,9 +65,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_breathe == 0", - "matchedExpression": "@field.parent_point_count_breathe", - "type": "field", + "fullExpression": "@fields.parent_point_count_breathe == 0", + "matchedExpression": "@fields.parent_point_count_breathe", + "type": "fields", "fieldName": "parent_point_count_breathe" } ] @@ -76,7 +76,7 @@ "@data.habit.breathe": [ "value" ], - "@field.parent_point_count_breathe": [ + "@fields.parent_point_count_breathe": [ "condition" ] } @@ -94,21 +94,21 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_breathe > 0", + "condition": "@fields.parent_point_count_breathe > 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.title", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.parent_point_count_breathe > 0", - "matchedExpression": "@field.parent_point_count_breathe", - "type": "field", + "fullExpression": "@fields.parent_point_count_breathe > 0", + "matchedExpression": "@fields.parent_point_count_breathe", + "type": "fields", "fieldName": "parent_point_count_breathe" } ] }, "_dynamicDependencies": { - "@field.parent_point_count_breathe": [ + "@fields.parent_point_count_breathe": [ "condition" ] } @@ -119,7 +119,7 @@ "_translations": { "value": {} }, - "condition": "@field.parent_point_count_breathe > 0", + "condition": "@fields.parent_point_count_breathe > 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.image", "_dynamicFields": { @@ -133,9 +133,9 @@ ], "condition": [ { - "fullExpression": "@field.parent_point_count_breathe > 0", - "matchedExpression": "@field.parent_point_count_breathe", - "type": "field", + "fullExpression": "@fields.parent_point_count_breathe > 0", + "matchedExpression": "@fields.parent_point_count_breathe", + "type": "fields", "fieldName": "parent_point_count_breathe" } ] @@ -144,7 +144,7 @@ "@data.habit.breathe.image_asset": [ "value" ], - "@field.parent_point_count_breathe": [ + "@fields.parent_point_count_breathe": [ "condition" ] } @@ -162,21 +162,21 @@ "za_zu": true } }, - "condition": "@field.parent_point_count_breathe > 0", + "condition": "@fields.parent_point_count_breathe > 0", "type": "set_variable", "_nested_name": "m_hp_reminder.in_week_message.text", "_dynamicFields": { "condition": [ { - "fullExpression": "@field.parent_point_count_breathe > 0", - "matchedExpression": "@field.parent_point_count_breathe", - "type": "field", + "fullExpression": "@fields.parent_point_count_breathe > 0", + "matchedExpression": "@fields.parent_point_count_breathe", + "type": "fields", "fieldName": "parent_point_count_breathe" } ] }, "_dynamicDependencies": { - "@field.parent_point_count_breathe": [ + "@fields.parent_point_count_breathe": [ "condition" ] } @@ -188,5 +188,5 @@ "_nested_name": "m_hp_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_praise.json b/packages/app-data/sheets/template/w_stress_m_praise.json index f68244cd92..dc6c2d2e4c 100644 --- a/packages/app-data/sheets/template/w_stress_m_praise.json +++ b/packages/app-data/sheets/template/w_stress_m_praise.json @@ -36,5 +36,5 @@ "_nested_name": "m_praise" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_relax.json b/packages/app-data/sheets/template/w_stress_m_relax.json index 003d9d78c6..a33ec6d6d6 100644 --- a/packages/app-data/sheets/template/w_stress_m_relax.json +++ b/packages/app-data/sheets/template/w_stress_m_relax.json @@ -37,5 +37,5 @@ "_nested_name": "m_relax" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_something_fun.json b/packages/app-data/sheets/template/w_stress_m_something_fun.json index 5c7c716db4..96aa7aa0a7 100644 --- a/packages/app-data/sheets/template/w_stress_m_something_fun.json +++ b/packages/app-data/sheets/template/w_stress_m_something_fun.json @@ -37,5 +37,5 @@ "_nested_name": "m_something_fun" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_w_in_progress.json b/packages/app-data/sheets/template/w_stress_m_w_in_progress.json index 83671cccab..f92d0394fa 100644 --- a/packages/app-data/sheets/template/w_stress_m_w_in_progress.json +++ b/packages/app-data/sheets/template/w_stress_m_w_in_progress.json @@ -99,5 +99,5 @@ "_nested_name": "m_workshop_in_progress" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_w_released.json b/packages/app-data/sheets/template/w_stress_m_w_released.json index 636aecf1da..06af5b84a8 100644 --- a/packages/app-data/sheets/template/w_stress_m_w_released.json +++ b/packages/app-data/sheets/template/w_stress_m_w_released.json @@ -4,6 +4,30 @@ "flow_name": "w_stress_m_w_released", "status": "released", "rows": [ + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "template", "name": "m_workshop_released", @@ -39,104 +63,112 @@ "rows": [ { "name": "text", - "value": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "value": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "!@field.do_workshops_together", + "condition": "!@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "matchedExpression": "@field.user_name", - "type": "field", + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "matchedExpression": "@fields.user_name", + "type": "fields", "fieldName": "user_name" }, { - "fullExpression": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "!@field.do_workshops_together", - "matchedExpression": "!@field.do_workshops_together", - "type": "field", + "fullExpression": "!@local.do_workshops_together", + "matchedExpression": "!@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.user_name": [ + "@fields.user_name": [ "value" ], "@global.parent_app": [ "value" ], - "!@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "!@local.do_workshops_together": [ "condition" ] } }, { "name": "text", - "value": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "value": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "condition": "@field.do_workshops_together", + "condition": "@local.do_workshops_together", "type": "set_variable", "_nested_name": "m_workshop_released.in_week_message.text", "_dynamicFields": { "value": [ { - "fullExpression": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "matchedExpression": "@field.group_name", - "type": "field", + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "matchedExpression": "@fields.group_name", + "type": "fields", "fieldName": "group_name" }, { - "fullExpression": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" + }, + { + "fullExpression": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" } ], "condition": [ { - "fullExpression": "@field.do_workshops_together", - "matchedExpression": "@field.do_workshops_together", - "type": "field", + "fullExpression": "@local.do_workshops_together", + "matchedExpression": "@local.do_workshops_together", + "type": "local", "fieldName": "do_workshops_together" } ] }, "_dynamicDependencies": { - "@field.group_name": [ + "@fields.group_name": [ "value" ], "@global.parent_app": [ "value" ], - "@field.do_workshops_together": [ + "@global.workshop": [ + "value" + ], + "@local.do_workshops_together": [ "condition" ] } @@ -148,5 +180,5 @@ "_nested_name": "m_workshop_released" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_w_reminder.json b/packages/app-data/sheets/template/w_stress_m_w_reminder.json index e2b2012097..af396a1c9c 100644 --- a/packages/app-data/sheets/template/w_stress_m_w_reminder.json +++ b/packages/app-data/sheets/template/w_stress_m_w_reminder.json @@ -39,19 +39,29 @@ "rows": [ { "name": "text", - "value": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "value": "We have a new @global.workshop available for you about managing anger and stress. It will help you take better care of yourself.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", - "_nested_name": "m_workshop_reminder.in_week_message.text" + "_nested_name": "m_workshop_reminder.in_week_message.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "We have a new @global.workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@global.workshop": [ + "value" + ] + } } ], "_nested_name": "m_workshop_reminder.in_week_message" @@ -60,5 +70,5 @@ "_nested_name": "m_workshop_reminder" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_m_w_tomorrow.json b/packages/app-data/sheets/template/w_stress_m_w_tomorrow.json index 2603febdea..8af7c3e0a2 100644 --- a/packages/app-data/sheets/template/w_stress_m_w_tomorrow.json +++ b/packages/app-data/sheets/template/w_stress_m_w_tomorrow.json @@ -59,15 +59,10 @@ }, { "name": "text_not_completed", - "value": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "value": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "type": "set_variable", @@ -75,13 +70,19 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", "matchedExpression": "@global.parent_app", "type": "global", "fieldName": "parent_app" }, { - "fullExpression": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + }, + { + "fullExpression": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", "matchedExpression": "@local.workshop_data.in_text_title", "type": "local", "fieldName": "workshop_data" @@ -92,6 +93,9 @@ "@global.parent_app": [ "value" ], + "@global.workshop": [ + "value" + ], "@local.workshop_data.in_text_title": [ "value" ] @@ -132,5 +136,5 @@ "_nested_name": "m_workshop_tomorrow" } ], - "_xlsxPath": "global/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/in_week_message_texts/w_stress_messages.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_messages.json b/packages/app-data/sheets/template/w_stress_messages.json index 9dea24e123..3b54cdfd79 100644 --- a/packages/app-data/sheets/template/w_stress_messages.json +++ b/packages/app-data/sheets/template/w_stress_messages.json @@ -1078,5 +1078,5 @@ } } ], - "_xlsxPath": "global/in_week_messages/message_navigation.xlsx" + "_xlsxPath": "global/top_templates/in_week_messages/message_navigation.xlsx" } \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_question.json b/packages/app-data/sheets/template/w_stress_question.json index 1b6a48ebd6..0547f2cc29 100644 --- a/packages/app-data/sheets/template/w_stress_question.json +++ b/packages/app-data/sheets/template/w_stress_question.json @@ -4,6 +4,116 @@ "flow_name": "w_stress_question", "status": "released", "rows": [ + { + "name": "answer_1", + "value": "Recognise why he feels stressed", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_1" + }, + { + "name": "answer_2", + "value": "Take a deep breath and speak calmly", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_2" + }, + { + "name": "answer_3", + "value": "Show he understands his teen’s feelings", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_3" + }, + { + "name": "answer_4", + "value": "Think about solutions together with @global.w_stress_teen_boy_1", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_4", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Think about solutions together with @global.w_stress_teen_boy_1", + "matchedExpression": "@global.w_stress_teen_boy_1", + "type": "global", + "fieldName": "w_stress_teen_boy_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_stress_teen_boy_1": [ + "value" + ] + } + }, + { + "name": "answer_5", + "value": "Do something positive together with @global.w_stress_teen_boy_1", + "_translations": { + "value": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "type": "set_variable", + "_nested_name": "answer_5", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Do something positive together with @global.w_stress_teen_boy_1", + "matchedExpression": "@global.w_stress_teen_boy_1", + "type": "global", + "fieldName": "w_stress_teen_boy_1" + } + ] + }, + "_dynamicDependencies": { + "@global.w_stress_teen_boy_1": [ + "value" + ] + } + }, { "type": "template", "name": "question_time", @@ -110,7 +220,7 @@ "value": [ "name:sad | text: Sad | image:plh_images/stickers/faces/sadder.svg", "name:scared | text: Scared | image:plh_images/stickers/faces/scared.svg", - "name:confused | text:Confused | image:plh_images/stickers/faces/confused.svg", + "name:confused | text:Confused | image:plh_images/stickers/faces/confused_question_mark.svg", "name:angry | text: Angry | image:plh_images/stickers/faces/angry.svg" ], "type": "set_variable", @@ -181,7 +291,7 @@ "value": [ "name:sad | text: Sad | image:plh_images/stickers/faces/sadder.svg", "name:scared | text: Scared | image:plh_images/stickers/faces/scared.svg", - "name:confused | text:Confused | image:plh_images/stickers/faces/confused.svg", + "name:confused | text:Confused | image:plh_images/stickers/faces/confused_question_mark.svg", "name:angry | text: Angry | image:plh_images/stickers/faces/angry.svg" ], "type": "set_variable", @@ -252,7 +362,7 @@ "value": [ "name:sad | text: Sad | image:plh_images/stickers/faces/sadder.svg", "name:scared | text: Scared | image:plh_images/stickers/faces/scared.svg", - "name:confused | text:Confused | image:plh_images/stickers/faces/confused.svg", + "name:confused | text:Confused | image:plh_images/stickers/faces/confused_question_mark.svg", "name:angry | text: Angry | image:plh_images/stickers/faces/angry.svg" ], "type": "set_variable", @@ -332,37 +442,72 @@ { "name": "answer_list", "value": [ - "name:name_1 | text:Recognise why he feels stressed", - "name:name_2 | text:Take a deep breath and speak calmly", - "name:name_3 | text:Show he understands his teen’s feelings", - "name:name_4 | text:Think about solutions together with @global.w_stress_teen_boy_1", - "name:name_5 | text:Do something positive together with @global.w_stress_teen_boy_1" + "name:name_1 | text:@local.answer_1", + "name:name_2 | text:@local.answer_2", + "name:name_3 | text:@local.answer_3", + "name:name_4 | text:@local.answer_4", + "name:name_5 | text:@local.answer_5" ], "type": "set_variable", "_nested_name": "question_time.workshop_activity.content_box.radio_buttons_4.answer_list", "_dynamicFields": { "value": { + "0": [ + { + "fullExpression": "name:name_1 | text:@local.answer_1", + "matchedExpression": "@local.answer_1", + "type": "local", + "fieldName": "answer_1" + } + ], + "1": [ + { + "fullExpression": "name:name_2 | text:@local.answer_2", + "matchedExpression": "@local.answer_2", + "type": "local", + "fieldName": "answer_2" + } + ], + "2": [ + { + "fullExpression": "name:name_3 | text:@local.answer_3", + "matchedExpression": "@local.answer_3", + "type": "local", + "fieldName": "answer_3" + } + ], "3": [ { - "fullExpression": "name:name_4 | text:Think about solutions together with @global.w_stress_teen_boy_1", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" + "fullExpression": "name:name_4 | text:@local.answer_4", + "matchedExpression": "@local.answer_4", + "type": "local", + "fieldName": "answer_4" } ], "4": [ { - "fullExpression": "name:name_5 | text:Do something positive together with @global.w_stress_teen_boy_1", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" + "fullExpression": "name:name_5 | text:@local.answer_5", + "matchedExpression": "@local.answer_5", + "type": "local", + "fieldName": "answer_5" } ] } }, "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value.3", + "@local.answer_1": [ + "value.0" + ], + "@local.answer_2": [ + "value.1" + ], + "@local.answer_3": [ + "value.2" + ], + "@local.answer_4": [ + "value.3" + ], + "@local.answer_5": [ "value.4" ] } diff --git a/packages/app-data/sheets/template/w_stress_question_2.json b/packages/app-data/sheets/template/w_stress_question_2.json new file mode 100644 index 0000000000..67f7241c5a --- /dev/null +++ b/packages/app-data/sheets/template/w_stress_question_2.json @@ -0,0 +1,187 @@ +{ + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_question_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "question_time", + "value": "question_time", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "type": "nested_properties", + "name": "workshop_activity", + "rows": [ + { + "name": "intro_text", + "value": "Having a @global.safety_word can help your teen stay safe too.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.intro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "Having a @global.safety_word can help your teen stay safe too.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } + }, + { + "type": "nested_properties", + "name": "content_box", + "value": "box_text_box", + "rows": [ + { + "name": "text_box_tracker", + "value": "w_stress_question_2_a", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.content_box.text_box_tracker" + }, + { + "name": "text", + "value": "You can choose any word as a @global.safety_word. Only your family knows it means ‘help’. \n\nYour teen can say this word to let you know they are in trouble without you getting angry or punishing them, so you can help them.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.content_box.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "You can choose any word as a @global.safety_word. Only your family knows it means ‘help’. \n\nYour teen can say this word to let you know they are in trouble without you getting angry or punishing them, so you can help them.", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } + }, + { + "name": "question_text", + "value": "What @global.safety_word can you choose with your teen?", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.content_box.question_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "What @global.safety_word can you choose with your teen?", + "matchedExpression": "@global.safety_word", + "type": "global", + "fieldName": "safety_word" + } + ] + }, + "_dynamicDependencies": { + "@global.safety_word": [ + "value" + ] + } + }, + { + "name": "button", + "value": "@global.ideas_button", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "click", + "action_id": "pop_up", + "args": [ + "w_stress_question_2_pop" + ], + "_raw": "click | pop_up: w_stress_question_2_pop", + "_cleaned": "click | pop_up: w_stress_question_2_pop" + } + ], + "hidden": false, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.content_box.button", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.ideas_button", + "matchedExpression": "@global.ideas_button", + "type": "global", + "fieldName": "ideas_button" + } + ] + }, + "_dynamicDependencies": { + "@global.ideas_button": [ + "value" + ] + } + }, + { + "name": "reply", + "value": "Your teen can say:\n\"I saw...\"\n\"I look forward to...\"\n\"Did you remember to…?\"\n\nYou respond calmly and give your teen an excuse why they need to come home.", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "question_time.workshop_activity.content_box.reply" + } + ], + "_nested_name": "question_time.workshop_activity.content_box" + } + ], + "_nested_name": "question_time.workshop_activity" + } + ], + "_nested_name": "question_time" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_question_2_pop.json b/packages/app-data/sheets/template/w_stress_question_2_pop.json new file mode 100644 index 0000000000..e90a04f762 --- /dev/null +++ b/packages/app-data/sheets/template/w_stress_question_2_pop.json @@ -0,0 +1,112 @@ +{ + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_question_2_pop", + "status": "released", + "rows": [ + { + "name": "item_1", + "value": "A specific food", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "item_1" + }, + { + "name": "item_2", + "value": "A specific family member", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "item_2" + }, + { + "name": "item_3", + "value": "A specific animal", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "item_3" + }, + { + "name": "item_4", + "value": "Something else", + "_translations": { + "value": { + "tz_sw": true + } + }, + "type": "set_variable", + "_nested_name": "item_4" + }, + { + "type": "template", + "name": "suggestions", + "value": "suggestions", + "rows": [ + { + "name": "list_text", + "value": "* @local.item_1\n* @local.item_2\n* @local.item_3\n* @local.item_4", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "suggestions.list_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "* @local.item_1\n* @local.item_2\n* @local.item_3\n* @local.item_4", + "matchedExpression": "@local.item_1", + "type": "local", + "fieldName": "item_1" + }, + { + "fullExpression": "* @local.item_1\n* @local.item_2\n* @local.item_3\n* @local.item_4", + "matchedExpression": "@local.item_2", + "type": "local", + "fieldName": "item_2" + }, + { + "fullExpression": "* @local.item_1\n* @local.item_2\n* @local.item_3\n* @local.item_4", + "matchedExpression": "@local.item_3", + "type": "local", + "fieldName": "item_3" + }, + { + "fullExpression": "* @local.item_1\n* @local.item_2\n* @local.item_3\n* @local.item_4", + "matchedExpression": "@local.item_4", + "type": "local", + "fieldName": "item_4" + } + ] + }, + "_dynamicDependencies": { + "@local.item_1": [ + "value" + ], + "@local.item_2": [ + "value" + ], + "@local.item_3": [ + "value" + ], + "@local.item_4": [ + "value" + ] + } + } + ], + "_nested_name": "suggestions" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_1.json b/packages/app-data/sheets/template/w_stress_read_1.json new file mode 100644 index 0000000000..bea4c523ce --- /dev/null +++ b/packages/app-data/sheets/template/w_stress_read_1.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_1", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "ignore_emotions", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_1_temp.json b/packages/app-data/sheets/template/w_stress_read_1_temp.json deleted file mode 100644 index bbcdc174ed..0000000000 --- a/packages/app-data/sheets/template/w_stress_read_1_temp.json +++ /dev/null @@ -1,390 +0,0 @@ -{ - "flow_type": "template", - "module": "stress", - "flow_name": "w_stress_read_1_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_male_caregiver": [ - "value" - ], - "@global.w_stress_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value" - ], - "@global.w_stress_male_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value" - ], - "@global.w_stress_male_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_girl: “Look! I have made a house!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_girl: “Look! I have made a house!”", - "matchedExpression": "@global.w_stress_girl", - "type": "global", - "fieldName": "w_stress_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "hidden": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.text" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_2.json b/packages/app-data/sheets/template/w_stress_read_2.json new file mode 100644 index 0000000000..f748b2ff98 --- /dev/null +++ b/packages/app-data/sheets/template/w_stress_read_2.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_2", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "acknowledge_emotions", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_2_temp.json b/packages/app-data/sheets/template/w_stress_read_2_temp.json deleted file mode 100644 index 2002ff5718..0000000000 --- a/packages/app-data/sheets/template/w_stress_read_2_temp.json +++ /dev/null @@ -1,469 +0,0 @@ -{ - "flow_type": "template", - "module": "stress", - "flow_name": "w_stress_read_2_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_text", - "value": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_male_caregiver": [ - "value" - ] - } - }, - { - "name": "include_outro", - "value": true, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.include_outro" - }, - { - "name": "outro_habit_data", - "value": "@data.habit.breathe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.breathe", - "matchedExpression": "@data.habit.breathe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.breathe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_1/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_male_caregiver": [ - "value" - ], - "@global.w_stress_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_2/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value" - ], - "@global.w_stress_male_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_2/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "matchedExpression": "@global.w_stress_female_caregiver", - "type": "global", - "fieldName": "w_stress_female_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value" - ], - "@global.w_stress_male_caregiver": [ - "value" - ], - "@global.w_stress_female_caregiver": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_2/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_1": [ - "value", - "value" - ], - "@global.w_stress_male_caregiver": [ - "value", - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_2/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - }, - { - "fullExpression": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "matchedExpression": "@global.w_stress_teen_boy_1", - "type": "global", - "fieldName": "w_stress_teen_boy_1" - }, - { - "fullExpression": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "matchedExpression": "@global.w_stress_male_caregiver", - "type": "global", - "fieldName": "w_stress_male_caregiver" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_male_caregiver": [ - "value", - "value" - ], - "@global.w_stress_teen_boy_1": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - }, - { - "name": "outro_text", - "value": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.outro_text" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_3.json b/packages/app-data/sheets/template/w_stress_read_3.json new file mode 100644 index 0000000000..091f4cd298 --- /dev/null +++ b/packages/app-data/sheets/template/w_stress_read_3.json @@ -0,0 +1,46 @@ +{ + "flow_type": "template", + "module": "stress", + "flow_name": "w_stress_read_3", + "status": "released", + "rows": [ + { + "type": "template", + "name": "read", + "value": "read", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "story_id", + "value": "safety_amnesty", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "read.story_id" + } + ], + "_nested_name": "read" + } + ], + "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_read_3_temp.json b/packages/app-data/sheets/template/w_stress_read_3_temp.json deleted file mode 100644 index 5d81c21a0c..0000000000 --- a/packages/app-data/sheets/template/w_stress_read_3_temp.json +++ /dev/null @@ -1,534 +0,0 @@ -{ - "flow_type": "template", - "module": "stress", - "flow_name": "w_stress_read_3_temp", - "status": "released", - "rows": [ - { - "type": "template", - "name": "read", - "value": "read_temp", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" - }, - { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" - ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "name": "intro_title", - "value": "Safety Amnesty", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_title" - }, - { - "name": "intro_text", - "value": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "matchedExpression": "@global.w_stress_teen_boy_2", - "type": "global", - "fieldName": "w_stress_teen_boy_2" - }, - { - "fullExpression": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "matchedExpression": "@global.w_stress_teen_girl", - "type": "global", - "fieldName": "w_stress_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_2": [ - "value" - ], - "@global.w_stress_teen_girl": [ - "value" - ] - } - }, - { - "name": "include_outro", - "value": true, - "type": "set_variable", - "_nested_name": "read.workshop_activity.include_outro" - }, - { - "name": "outro_habit_data", - "value": "@data.habit.safe", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.outro_habit_data", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@data.habit.safe", - "matchedExpression": "@data.habit.safe", - "type": "data", - "fieldName": "habit" - } - ] - }, - "_dynamicDependencies": { - "@data.habit.safe": [ - "value" - ] - } - }, - { - "type": "nested_properties", - "name": "intro_nav_buttons", - "rows": [ - { - "name": "button_completed", - "value": "@global.more_button", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.intro_nav_buttons.button_completed", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.more_button", - "matchedExpression": "@global.more_button", - "type": "global", - "fieldName": "more_button" - } - ] - }, - "_dynamicDependencies": { - "@global.more_button": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.intro_nav_buttons" - }, - { - "type": "nested_properties", - "name": "content_box", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_1.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "matchedExpression": "@global.w_stress_teen_boy_2", - "type": "global", - "fieldName": "w_stress_teen_boy_2" - }, - { - "fullExpression": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "matchedExpression": "@global.w_stress_teen_girl", - "type": "global", - "fieldName": "w_stress_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_2": [ - "value" - ], - "@global.w_stress_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_2.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "matchedExpression": "@global.w_stress_teen_boy_2", - "type": "global", - "fieldName": "w_stress_teen_boy_2" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_2": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_3.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "matchedExpression": "@global.w_stress_teen_girl", - "type": "global", - "fieldName": "w_stress_teen_girl" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_girl": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_4.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "matchedExpression": "@global.w_stress_teen_boy_2", - "type": "global", - "fieldName": "w_stress_teen_boy_2" - }, - { - "fullExpression": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "matchedExpression": "@global.w_stress_teen_girl", - "type": "global", - "fieldName": "w_stress_teen_girl" - }, - { - "fullExpression": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "matchedExpression": "@global.w_stress_parent", - "type": "global", - "fieldName": "w_stress_parent" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_2": [ - "value" - ], - "@global.w_stress_teen_girl": [ - "value" - ], - "@global.w_stress_parent": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "pair", - "rows": [ - { - "type": "nested_properties", - "name": "box_1", - "value": "box_story", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_5.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "matchedExpression": "@global.w_stress_teen_girl", - "type": "global", - "fieldName": "w_stress_teen_girl" - }, - { - "fullExpression": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "matchedExpression": "@global.w_stress_parent", - "type": "global", - "fieldName": "w_stress_parent" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_girl": [ - "value" - ], - "@global.w_stress_parent": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_1" - }, - { - "type": "nested_properties", - "name": "box_2", - "value": "box_image", - "rows": [ - { - "name": "image_src", - "value": "plh_images/workshops/w_stress/read_3/slide_6.svg", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.image_src" - }, - { - "name": "text", - "value": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2.text", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "matchedExpression": "@global.w_stress_teen_boy_2", - "type": "global", - "fieldName": "w_stress_teen_boy_2" - }, - { - "fullExpression": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "matchedExpression": "@global.w_stress_parent", - "type": "global", - "fieldName": "w_stress_parent" - } - ] - }, - "_dynamicDependencies": { - "@global.w_stress_teen_boy_2": [ - "value" - ], - "@global.w_stress_parent": [ - "value" - ] - } - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box.box_2" - } - ], - "_nested_name": "read.workshop_activity.content_box" - } - ], - "_nested_name": "read.workshop_activity" - } - ], - "_nested_name": "read" - } - ], - "_xlsxPath": "global/top_templates/workshop_templates/workshop_stress.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/template/w_stress_stepper.json b/packages/app-data/sheets/template/w_stress_stepper.json index 9c52047805..62da4dbf8e 100644 --- a/packages/app-data/sheets/template/w_stress_stepper.json +++ b/packages/app-data/sheets/template/w_stress_stepper.json @@ -50,10 +50,10 @@ "w_stress_relax", "w_stress_reflect_together", "w_stress_intro", - "w_stress_read_1_temp", + "w_stress_read_1", "w_stress_talk", - "w_stress_read_2_temp", - "w_stress_read_3_temp", + "w_stress_read_2", + "w_stress_read_3", "w_stress_tools_activity", "w_stress_home_practice", "w_stress_ending" @@ -84,10 +84,11 @@ "w_stress_welcome_individual", "w_stress_relax", "w_stress_intro", - "w_stress_read_1_temp", + "w_stress_read_1", "w_stress_question", - "w_stress_read_2_temp", - "w_stress_read_3_temp", + "w_stress_read_2", + "w_stress_read_3", + "w_stress_question_2", "w_stress_tools_activity", "w_stress_home_practice", "w_stress_ending" diff --git a/packages/app-data/sheets/template/w_stress_tools.json b/packages/app-data/sheets/template/w_stress_tools.json index 35c8697677..b5a6bca1a3 100644 --- a/packages/app-data/sheets/template/w_stress_tools.json +++ b/packages/app-data/sheets/template/w_stress_tools.json @@ -109,16 +109,9 @@ }, { "name": "text_1", - "value": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "value": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say \"I understand\". It can change everything.", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "essential_tools.tool_3.text_1" diff --git a/packages/app-data/sheets/template/w_stress_welcome_individual.json b/packages/app-data/sheets/template/w_stress_welcome_individual.json index 6cb90361c1..556651c607 100644 --- a/packages/app-data/sheets/template/w_stress_welcome_individual.json +++ b/packages/app-data/sheets/template/w_stress_welcome_individual.json @@ -52,84 +52,6 @@ "value" ] } - }, - { - "type": "nested_properties", - "name": "workshop_activity", - "rows": [ - { - "type": "nested_properties", - "name": "content_box", - "rows": [ - { - "name": "text", - "value": "Looking after yourself matters.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.text" - }, - { - "name": "reply_happy", - "value": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_happy" - }, - { - "name": "reply_ok", - "value": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_ok" - }, - { - "name": "reply_sad", - "value": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "type": "set_variable", - "_nested_name": "welcome_individual.workshop_activity.content_box.reply_sad" - } - ], - "_nested_name": "welcome_individual.workshop_activity.content_box" - } - ], - "_nested_name": "welcome_individual.workshop_activity" } ], "_nested_name": "welcome_individual" diff --git a/packages/app-data/sheets/template/watch.json b/packages/app-data/sheets/template/watch.json index 8e93f73c13..0b975ae63f 100644 --- a/packages/app-data/sheets/template/watch.json +++ b/packages/app-data/sheets/template/watch.json @@ -30,7 +30,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/weekly_workshops.json b/packages/app-data/sheets/template/weekly_workshops.json index f6d18814e2..2c7ab9a155 100644 --- a/packages/app-data/sheets/template/weekly_workshops.json +++ b/packages/app-data/sheets/template/weekly_workshops.json @@ -220,6 +220,30 @@ ] } }, + { + "name": "do_workshops_together", + "value": "@fields.do_workshops_together", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "do_workshops_together", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.do_workshops_together", + "matchedExpression": "@fields.do_workshops_together", + "type": "fields", + "fieldName": "do_workshops_together" + } + ] + }, + "_dynamicDependencies": { + "@fields.do_workshops_together": [ + "value" + ] + } + }, { "type": "update_action_list", "name": "custom_actions_2", @@ -276,16 +300,9 @@ { "type": "button", "name": "options_button", - "value": "Options", + "value": "@global.options", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "action_list": [ { @@ -298,481 +315,504 @@ "_cleaned": "click | go_to: workshop_options_page" } ], - "parameter_list": { - "style": "options short flexible" - }, "style_list": [ "flex: 1" ], - "_nested_name": "heading.options_button" + "_nested_name": "heading.options_button", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.options", + "matchedExpression": "@global.options", + "type": "global", + "fieldName": "options" + } + ] + }, + "_dynamicDependencies": { + "@global.options": [ + "value" + ] + } } ], "_nested_name": "heading" }, { - "type": "tile_component", - "name": "quick_start_self_care", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "do_this_workshop_together", - false - ], - "_raw": "click | set_field:do_this_workshop_together:false", - "_cleaned": "click | set_field:do_this_workshop_together:false" - }, - { - "trigger": "click", - "action_id": "trigger_actions", - "args": [ - "@local.quick_start_campaign.action_list" - ], - "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", - "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" - } - ], - "exclude_from_translation": true, - "condition": "@local.quick_start_workshop_id==\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", + "type": "display_group", + "name": "quick_start_button", + "condition": "@local.quick_start_campaign.id != \"default\"", "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "icon_src": "@local.quick_start_campaign.icon" + "style": "column" }, - "_nested_name": "quick_start_self_care", - "_dynamicFields": { - "action_list": { - "1": { - "args": { - "0": [ - { - "fullExpression": "@local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - }, - "_raw": [ - { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" - } - ], - "_cleaned": [ - { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - } - }, - "condition": [ - { - "fullExpression": "@local.quick_start_workshop_id==\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_workshop_id", - "type": "local", - "fieldName": "quick_start_workshop_id" - }, - { - "fullExpression": "@local.quick_start_workshop_id==\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_campaign.id", - "type": "local", - "fieldName": "quick_start_campaign" - } - ], - "parameter_list": { - "first_line_text": [ + "rows": [ + { + "type": "tile_component", + "name": "quick_start_self_care", + "action_list": [ { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.start_or_continue", - "type": "local", - "fieldName": "start_or_continue" + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + false + ], + "_raw": "click | set_field:do_this_workshop_together:false", + "_cleaned": "click | set_field:do_this_workshop_together:false" }, { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.quick_start_workshop_in_text_title", - "type": "local", - "fieldName": "quick_start_workshop_in_text_title" + "trigger": "click", + "action_id": "trigger_actions", + "args": [ + "@local.quick_start_campaign.action_list" + ], + "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", + "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" } ], - "icon_src": [ - { - "fullExpression": "@local.quick_start_campaign.icon", - "matchedExpression": "@local.quick_start_campaign.icon", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - } - }, - "_dynamicDependencies": { - "@local.quick_start_campaign.action_list": [ - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.quick_start_workshop_id": [ - "condition" - ], - "@local.quick_start_campaign.id": [ - "condition" - ], - "@local.start_or_continue": [ - "parameter_list.first_line_text" - ], - "@local.quick_start_workshop_in_text_title": [ - "parameter_list.first_line_text" - ], - "@local.quick_start_campaign.icon": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "quick_start_individual", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "do_this_workshop_together", - false - ], - "_raw": "click | set_field:do_this_workshop_together:false", - "_cleaned": "click | set_field:do_this_workshop_together:false" - }, - { - "trigger": "click", - "action_id": "trigger_actions", - "args": [ - "@local.quick_start_campaign.action_list" - ], - "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", - "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" - } - ], - "exclude_from_translation": true, - "condition": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "second_line_text": "@local.label_individual", - "icon_src": "@local.quick_start_campaign.icon" - }, - "_nested_name": "quick_start_individual", - "_dynamicFields": { - "action_list": { - "1": { - "args": { - "0": [ + "exclude_from_translation": true, + "condition": "@local.quick_start_workshop_id==\"w_self_care\"", + "parameter_list": { + "style": "quick_start_dark", + "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "icon_src": "@local.quick_start_campaign.icon" + }, + "_nested_name": "quick_start_button.quick_start_self_care", + "_dynamicFields": { + "action_list": { + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ], + "_cleaned": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + } + }, + "condition": [ + { + "fullExpression": "@local.quick_start_workshop_id==\"w_self_care\"", + "matchedExpression": "@local.quick_start_workshop_id", + "type": "local", + "fieldName": "quick_start_workshop_id" + } + ], + "parameter_list": { + "first_line_text": [ { - "fullExpression": "@local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.start_or_continue", + "type": "local", + "fieldName": "start_or_continue" + }, + { + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.quick_start_workshop_in_text_title", + "type": "local", + "fieldName": "quick_start_workshop_in_text_title" + } + ], + "icon_src": [ + { + "fullExpression": "@local.quick_start_campaign.icon", + "matchedExpression": "@local.quick_start_campaign.icon", "type": "local", "fieldName": "quick_start_campaign" } ] - }, - "_raw": [ - { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" - } + } + }, + "_dynamicDependencies": { + "@local.quick_start_campaign.action_list": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" ], - "_cleaned": [ - { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" - } + "@local.quick_start_workshop_id": [ + "condition" + ], + "@local.start_or_continue": [ + "parameter_list.first_line_text" + ], + "@local.quick_start_workshop_in_text_title": [ + "parameter_list.first_line_text" + ], + "@local.quick_start_campaign.icon": [ + "parameter_list.icon_src" ] } }, - "condition": [ - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.workshop_day", - "type": "fields", - "fieldName": "workshop_day" - }, - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_workshop_id", - "type": "local", - "fieldName": "quick_start_workshop_id" - }, - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.workshop_id", - "type": "fields", - "fieldName": "workshop_id" - }, - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.do_workshops_together", - "type": "fields", - "fieldName": "do_workshops_together" - }, - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_workshop_id", - "type": "local", - "fieldName": "quick_start_workshop_id" + { + "type": "display_group", + "name": "not_self_care", + "condition": "@local.quick_start_workshop_id!=\"w_self_care\"", + "parameter_list": { + "style": "column" }, - { - "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_campaign.id", - "type": "local", - "fieldName": "quick_start_campaign" - } - ], - "parameter_list": { - "first_line_text": [ + "rows": [ { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.start_or_continue", - "type": "local", - "fieldName": "start_or_continue" + "type": "tile_component", + "name": "quick_start_individual", + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + false + ], + "_raw": "click | set_field:do_this_workshop_together:false", + "_cleaned": "click | set_field:do_this_workshop_together:false" + }, + { + "trigger": "click", + "action_id": "trigger_actions", + "args": [ + "@local.quick_start_campaign.action_list" + ], + "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", + "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" + } + ], + "exclude_from_translation": true, + "condition": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "parameter_list": { + "style": "quick_start_dark", + "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "second_line_text": "@local.label_individual", + "icon_src": "@local.quick_start_campaign.icon" + }, + "_nested_name": "quick_start_button.not_self_care.quick_start_individual", + "_dynamicFields": { + "action_list": { + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ], + "_cleaned": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + } + }, + "condition": [ + { + "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@fields.workshop_day", + "type": "fields", + "fieldName": "workshop_day" + }, + { + "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@local.quick_start_workshop_id", + "type": "local", + "fieldName": "quick_start_workshop_id" + }, + { + "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@fields.workshop_id", + "type": "fields", + "fieldName": "workshop_id" + }, + { + "fullExpression": "!(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@local.do_workshops_together", + "type": "local", + "fieldName": "do_workshops_together" + } + ], + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.start_or_continue", + "type": "local", + "fieldName": "start_or_continue" + }, + { + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.quick_start_workshop_in_text_title", + "type": "local", + "fieldName": "quick_start_workshop_in_text_title" + } + ], + "second_line_text": [ + { + "fullExpression": "@local.label_individual", + "matchedExpression": "@local.label_individual", + "type": "local", + "fieldName": "label_individual" + } + ], + "icon_src": [ + { + "fullExpression": "@local.quick_start_campaign.icon", + "matchedExpression": "@local.quick_start_campaign.icon", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + } + }, + "_dynamicDependencies": { + "@local.quick_start_campaign.action_list": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@fields.workshop_day": [ + "condition" + ], + "@local.quick_start_workshop_id": [ + "condition" + ], + "@fields.workshop_id": [ + "condition" + ], + "@local.do_workshops_together": [ + "condition" + ], + "@local.start_or_continue": [ + "parameter_list.first_line_text" + ], + "@local.quick_start_workshop_in_text_title": [ + "parameter_list.first_line_text" + ], + "@local.label_individual": [ + "parameter_list.second_line_text" + ], + "@local.quick_start_campaign.icon": [ + "parameter_list.icon_src" + ] + } }, { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.quick_start_workshop_in_text_title", - "type": "local", - "fieldName": "quick_start_workshop_in_text_title" - } - ], - "second_line_text": [ - { - "fullExpression": "@local.label_individual", - "matchedExpression": "@local.label_individual", - "type": "local", - "fieldName": "label_individual" - } - ], - "icon_src": [ - { - "fullExpression": "@local.quick_start_campaign.icon", - "matchedExpression": "@local.quick_start_campaign.icon", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - } - }, - "_dynamicDependencies": { - "@local.quick_start_campaign.action_list": [ - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@fields.workshop_day": [ - "condition" - ], - "@local.quick_start_workshop_id": [ - "condition", - "condition" - ], - "@fields.workshop_id": [ - "condition" - ], - "@fields.do_workshops_together": [ - "condition" - ], - "@local.quick_start_campaign.id": [ - "condition" - ], - "@local.start_or_continue": [ - "parameter_list.first_line_text" - ], - "@local.quick_start_workshop_in_text_title": [ - "parameter_list.first_line_text" - ], - "@local.label_individual": [ - "parameter_list.second_line_text" - ], - "@local.quick_start_campaign.icon": [ - "parameter_list.icon_src" - ] - } - }, - { - "type": "tile_component", - "name": "quick_start_together", - "action_list": [ - { - "trigger": "click", - "action_id": "set_field", - "args": [ - "do_this_workshop_together", - true - ], - "_raw": "click | set_field:do_this_workshop_together:true", - "_cleaned": "click | set_field:do_this_workshop_together:true" - }, - { - "trigger": "click", - "action_id": "trigger_actions", - "args": [ - "@local.quick_start_campaign.action_list" - ], - "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", - "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" - } - ], - "exclude_from_translation": true, - "condition": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "parameter_list": { - "style": "quick_start_dark", - "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "second_line_text": "@local.label_together", - "icon_src": "@local.quick_start_campaign.icon" - }, - "_nested_name": "quick_start_together", - "_dynamicFields": { - "action_list": { - "1": { - "args": { - "0": [ + "type": "tile_component", + "name": "quick_start_together", + "action_list": [ { - "fullExpression": "@local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + true + ], + "_raw": "click | set_field:do_this_workshop_together:true", + "_cleaned": "click | set_field:do_this_workshop_together:true" + }, + { + "trigger": "click", + "action_id": "trigger_actions", + "args": [ + "@local.quick_start_campaign.action_list" + ], + "_raw": "click | trigger_actions: @local.quick_start_campaign.action_list", + "_cleaned": "click | trigger_actions: @local.quick_start_campaign.action_list" } - ] - }, - "_raw": [ - { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", - "type": "local", - "fieldName": "quick_start_campaign" + ], + "exclude_from_translation": true, + "condition": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "parameter_list": { + "style": "quick_start_dark", + "first_line_text": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "second_line_text": "@local.label_together", + "icon_src": "@local.quick_start_campaign.icon" + }, + "_nested_name": "quick_start_button.not_self_care.quick_start_together", + "_dynamicFields": { + "action_list": { + "1": { + "args": { + "0": [ + { + "fullExpression": "@local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ], + "_cleaned": [ + { + "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", + "matchedExpression": "@local.quick_start_campaign.action_list", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + } + }, + "condition": [ + { + "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@fields.workshop_day", + "type": "fields", + "fieldName": "workshop_day" + }, + { + "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@local.quick_start_workshop_id", + "type": "local", + "fieldName": "quick_start_workshop_id" + }, + { + "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@fields.workshop_id", + "type": "fields", + "fieldName": "workshop_id" + }, + { + "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @local.do_workshops_together)", + "matchedExpression": "@local.do_workshops_together", + "type": "local", + "fieldName": "do_workshops_together" + } + ], + "parameter_list": { + "first_line_text": [ + { + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.start_or_continue", + "type": "local", + "fieldName": "start_or_continue" + }, + { + "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", + "matchedExpression": "@local.quick_start_workshop_in_text_title", + "type": "local", + "fieldName": "quick_start_workshop_in_text_title" + } + ], + "second_line_text": [ + { + "fullExpression": "@local.label_together", + "matchedExpression": "@local.label_together", + "type": "local", + "fieldName": "label_together" + } + ], + "icon_src": [ + { + "fullExpression": "@local.quick_start_campaign.icon", + "matchedExpression": "@local.quick_start_campaign.icon", + "type": "local", + "fieldName": "quick_start_campaign" + } + ] + } + }, + "_dynamicDependencies": { + "@local.quick_start_campaign.action_list": [ + "action_list.1.args.0", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@fields.workshop_day": [ + "condition" + ], + "@local.quick_start_workshop_id": [ + "condition" + ], + "@fields.workshop_id": [ + "condition" + ], + "@local.do_workshops_together": [ + "condition" + ], + "@local.start_or_continue": [ + "parameter_list.first_line_text" + ], + "@local.quick_start_workshop_in_text_title": [ + "parameter_list.first_line_text" + ], + "@local.label_together": [ + "parameter_list.second_line_text" + ], + "@local.quick_start_campaign.icon": [ + "parameter_list.icon_src" + ] } - ], - "_cleaned": [ + } + ], + "_nested_name": "quick_start_button.not_self_care", + "_dynamicFields": { + "condition": [ { - "fullExpression": "click | trigger_actions: @local.quick_start_campaign.action_list", - "matchedExpression": "@local.quick_start_campaign.action_list", + "fullExpression": "@local.quick_start_workshop_id!=\"w_self_care\"", + "matchedExpression": "@local.quick_start_workshop_id", "type": "local", - "fieldName": "quick_start_campaign" + "fieldName": "quick_start_workshop_id" } ] + }, + "_dynamicDependencies": { + "@local.quick_start_workshop_id": [ + "condition" + ] } - }, + } + ], + "_nested_name": "quick_start_button", + "_dynamicFields": { "condition": [ { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.workshop_day", - "type": "fields", - "fieldName": "workshop_day" - }, - { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_workshop_id", - "type": "local", - "fieldName": "quick_start_workshop_id" - }, - { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.workshop_id", - "type": "fields", - "fieldName": "workshop_id" - }, - { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@fields.do_workshops_together", - "type": "fields", - "fieldName": "do_workshops_together" - }, - { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", - "matchedExpression": "@local.quick_start_workshop_id", - "type": "local", - "fieldName": "quick_start_workshop_id" - }, - { - "fullExpression": "(@fields.workshop_day == 0 && @local.quick_start_workshop_id == @fields.workshop_id && @fields.do_workshops_together) && @local.quick_start_workshop_id!=\"w_self_care\" && @local.quick_start_campaign.id != \"default\"", + "fullExpression": "@local.quick_start_campaign.id != \"default\"", "matchedExpression": "@local.quick_start_campaign.id", "type": "local", "fieldName": "quick_start_campaign" } - ], - "parameter_list": { - "first_line_text": [ - { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.start_or_continue", - "type": "local", - "fieldName": "start_or_continue" - }, - { - "fullExpression": "@local.start_or_continue @local.quick_start_workshop_in_text_title", - "matchedExpression": "@local.quick_start_workshop_in_text_title", - "type": "local", - "fieldName": "quick_start_workshop_in_text_title" - } - ], - "second_line_text": [ - { - "fullExpression": "@local.label_together", - "matchedExpression": "@local.label_together", - "type": "local", - "fieldName": "label_together" - } - ], - "icon_src": [ - { - "fullExpression": "@local.quick_start_campaign.icon", - "matchedExpression": "@local.quick_start_campaign.icon", - "type": "local", - "fieldName": "quick_start_campaign" - } - ] - } + ] }, "_dynamicDependencies": { - "@local.quick_start_campaign.action_list": [ - "action_list.1.args.0", - "action_list.1._raw", - "action_list.1._cleaned" - ], - "@fields.workshop_day": [ - "condition" - ], - "@local.quick_start_workshop_id": [ - "condition", - "condition" - ], - "@fields.workshop_id": [ - "condition" - ], - "@fields.do_workshops_together": [ - "condition" - ], "@local.quick_start_campaign.id": [ "condition" - ], - "@local.start_or_continue": [ - "parameter_list.first_line_text" - ], - "@local.quick_start_workshop_in_text_title": [ - "parameter_list.first_line_text" - ], - "@local.label_together": [ - "parameter_list.second_line_text" - ], - "@local.quick_start_campaign.icon": [ - "parameter_list.icon_src" ] } }, diff --git a/packages/app-data/sheets/template/welcome_individual.json b/packages/app-data/sheets/template/welcome_individual.json index 46f5e1270c..5a684b098b 100644 --- a/packages/app-data/sheets/template/welcome_individual.json +++ b/packages/app-data/sheets/template/welcome_individual.json @@ -81,6 +81,55 @@ "type": "set_variable", "_nested_name": "final" }, + { + "name": "data_list_row", + "value": [ + "check_in.@local.workshop" + ], + "type": "set_variable", + "_nested_name": "data_list_row", + "_dynamicFields": { + "value": { + "0": [ + { + "fullExpression": "check_in.@local.workshop", + "matchedExpression": "@local.workshop", + "type": "local", + "fieldName": "workshop" + } + ] + } + }, + "_dynamicDependencies": { + "@local.workshop": [ + "value.0" + ] + } + }, + { + "name": "row_data", + "value": "@data.@local.data_list_row", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "row_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.data_list_row", + "matchedExpression": "@local.data_list_row", + "type": "local", + "fieldName": "data_list_row" + } + ] + }, + "_dynamicDependencies": { + "@local.data_list_row": [ + "value" + ] + } + }, { "type": "template", "name": "workshop_activity", @@ -108,7 +157,7 @@ "rows": [ { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, @@ -117,50 +166,51 @@ }, { "name": "activity_title", - "value": "Welcome @fields.user_name", + "value": "@local.row_data.activity_title", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", "_nested_name": "workshop_activity.activity_title", "_dynamicFields": { "value": [ { - "fullExpression": "Welcome @fields.user_name", - "matchedExpression": "@fields.user_name", - "type": "fields", - "fieldName": "user_name" + "fullExpression": "@local.row_data.activity_title", + "matchedExpression": "@local.row_data.activity_title", + "type": "local", + "fieldName": "row_data" } ] }, "_dynamicDependencies": { - "@fields.user_name": [ + "@local.row_data.activity_title": [ "value" ] } }, { "name": "intro_text", - "value": "It's great to see you again!", + "value": "@local.row_data.intro_text", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", - "_nested_name": "workshop_activity.intro_text" + "_nested_name": "workshop_activity.intro_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.intro_text", + "matchedExpression": "@local.row_data.intro_text", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.intro_text": [ + "value" + ] + } }, { "name": "activity_banner", @@ -259,22 +309,137 @@ ] } }, + { + "name": "text", + "value": "@local.row_data.text", + "_translations": { + "value": {} + }, + "hidden": "!@local.row_data.text", + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.text", + "matchedExpression": "@local.row_data.text", + "type": "local", + "fieldName": "row_data" + } + ], + "hidden": [ + { + "fullExpression": "!@local.row_data.text", + "matchedExpression": "!@local.row_data.text", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.text": [ + "value" + ], + "!@local.row_data.text": [ + "hidden" + ] + } + }, { "name": "question_text", - "value": "How are you feeling today?", + "value": "@local.row_data.question_text", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.question_text", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.question_text", + "matchedExpression": "@local.row_data.question_text", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.question_text": [ + "value" + ] + } + }, + { + "name": "reply_happy", + "value": "@local.row_data.reply_happy", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.reply_happy", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_happy", + "matchedExpression": "@local.row_data.reply_happy", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_happy": [ + "value" + ] + } + }, + { + "name": "reply_ok", + "value": "@local.row_data.reply_ok", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "workshop_activity.content_box.reply_ok", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_ok", + "matchedExpression": "@local.row_data.reply_ok", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_ok": [ + "value" + ] + } + }, + { + "name": "reply_sad", + "value": "@local.row_data.reply_sad", "_translations": { - "value": { - "es_sp": true, - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "type": "set_variable", - "_nested_name": "workshop_activity.content_box.question_text" + "_nested_name": "workshop_activity.content_box.reply_sad", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.row_data.reply_sad", + "matchedExpression": "@local.row_data.reply_sad", + "type": "local", + "fieldName": "row_data" + } + ] + }, + "_dynamicDependencies": { + "@local.row_data.reply_sad": [ + "value" + ] + } } ], "_nested_name": "workshop_activity.content_box" diff --git a/packages/app-data/sheets/template/welcome_together.json b/packages/app-data/sheets/template/welcome_together.json index d99ac387eb..37d3165adf 100644 --- a/packages/app-data/sheets/template/welcome_together.json +++ b/packages/app-data/sheets/template/welcome_together.json @@ -71,7 +71,7 @@ }, { "name": "activity_image", - "value": "plh_images/workshop_modes/guide_2/wave.svg", + "value": "plh_images/workshop_modes/individual/wave.svg", "_translations": { "value": {} }, diff --git a/packages/app-data/sheets/template/workshop_activity.json b/packages/app-data/sheets/template/workshop_activity.json index 28a5d6c323..9aac030b94 100644 --- a/packages/app-data/sheets/template/workshop_activity.json +++ b/packages/app-data/sheets/template/workshop_activity.json @@ -3,6 +3,54 @@ "flow_name": "workshop_activity", "status": "released", "rows": [ + { + "name": "use_scroll", + "value": "@fields.use_modular_skin", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "use_scroll", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.use_modular_skin", + "matchedExpression": "@fields.use_modular_skin", + "type": "fields", + "fieldName": "use_modular_skin" + } + ] + }, + "_dynamicDependencies": { + "@fields.use_modular_skin": [ + "value" + ] + } + }, + { + "name": "use_blobs", + "value": "!@fields.use_modular_skin", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "use_blobs", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!@fields.use_modular_skin", + "matchedExpression": "!@fields.use_modular_skin", + "type": "fields", + "fieldName": "use_modular_skin" + } + ] + }, + "_dynamicDependencies": { + "!@fields.use_modular_skin": [ + "value" + ] + } + }, { "name": "activity_image", "type": "set_variable", @@ -18,13 +66,6 @@ "type": "set_variable", "_nested_name": "activity_title" }, - { - "name": "include_outro", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "include_outro" - }, { "name": "hide_intro", "value": false, @@ -46,6 +87,16 @@ "type": "set_variable", "_nested_name": "hide_outro" }, + { + "name": "outro_text", + "type": "set_variable", + "_nested_name": "outro_text" + }, + { + "name": "outro_button", + "type": "set_variable", + "_nested_name": "outro_button" + }, { "name": "outro_habit_data", "type": "set_variable", @@ -56,6 +107,49 @@ "type": "set_variable", "_nested_name": "outro_habit_text" }, + { + "name": "include_outro", + "value": "!!@local.outro_text || !!@local.outro_button || !!@local.outro_habit_data", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "include_outro", + "_dynamicFields": { + "value": [ + { + "fullExpression": "!!@local.outro_text || !!@local.outro_button || !!@local.outro_habit_data", + "matchedExpression": "!@local.outro_text", + "type": "local", + "fieldName": "outro_text" + }, + { + "fullExpression": "!!@local.outro_text || !!@local.outro_button || !!@local.outro_habit_data", + "matchedExpression": "!@local.outro_button", + "type": "local", + "fieldName": "outro_button" + }, + { + "fullExpression": "!!@local.outro_text || !!@local.outro_button || !!@local.outro_habit_data", + "matchedExpression": "!@local.outro_habit_data", + "type": "local", + "fieldName": "outro_habit_data" + } + ] + }, + "_dynamicDependencies": { + "!@local.outro_text": [ + "value" + ], + "!@local.outro_button": [ + "value" + ], + "!@local.outro_habit_data": [ + "value" + ] + } + }, { "name": "outro_toggle_bar_text", "type": "set_variable", @@ -67,200 +161,428 @@ "_nested_name": "outro_toggle_bar_field" }, { - "type": "display_theme", - "name": "display_theme", - "value": "passive_theme", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "_nested_name": "display_theme" - }, - { - "type": "animated_section", - "name": "intro", - "value": "fade_in_out", - "hidden": "@local.hide_intro", - "exclude_from_translation": true, + "type": "display_group", + "name": "pages_activity", + "condition": "!@local.use_scroll", "rows": [ { - "type": "display_group", - "parameter_list": { - "style": "banner_welcome" - }, + "type": "animated_section", + "name": "intro", + "hidden": "@local.hide_intro", + "exclude_from_translation": true, "rows": [ { - "type": "image", - "name": "intro_image_src", - "value": "@local.activity_image", + "type": "display_group", + "parameter_list": { + "style": "banner_welcome" + }, + "rows": [ + { + "type": "image", + "name": "intro_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "pages_activity.intro.display_group.intro_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } + ], + "name": "display_group", + "_nested_name": "pages_activity.intro.display_group" + }, + { + "type": "title", + "name": "intro_title", + "value": "@local.activity_title", "_translations": { "value": {} }, - "parameter_list": { - "background_box": "true" - }, - "_nested_name": "intro.display_group.intro_image_src", + "_nested_name": "pages_activity.intro.intro_title", "_dynamicFields": { "value": [ { - "fullExpression": "@local.activity_image", - "matchedExpression": "@local.activity_image", + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", "type": "local", - "fieldName": "activity_image" + "fieldName": "activity_title" } ] }, "_dynamicDependencies": { - "@local.activity_image": [ + "@local.activity_title": [ "value" ] } + }, + { + "type": "text", + "name": "intro_text", + "_nested_name": "pages_activity.intro.intro_text" + }, + { + "type": "template", + "name": "intro_nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_content", + false + ], + "_raw": "completed | set_local:hide_content:false", + "_cleaned": "completed | set_local:hide_content:false" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_intro", + true + ], + "_raw": "completed | set_local:hide_intro:true", + "_cleaned": "completed | set_local:hide_intro:true" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "use_uncompleted_chevron", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "pages_activity.intro.intro_nav_buttons.use_uncompleted_chevron" + }, + { + "name": "button_completed", + "value": "@global.lets_go_button", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "pages_activity.intro.intro_nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.lets_go_button", + "matchedExpression": "@global.lets_go_button", + "type": "global", + "fieldName": "lets_go_button" + } + ] + }, + "_dynamicDependencies": { + "@global.lets_go_button": [ + "value" + ] + } + } + ], + "_nested_name": "pages_activity.intro.intro_nav_buttons" } ], - "name": "display_group", - "_nested_name": "intro.display_group" - }, - { - "type": "title", - "name": "intro_title", - "value": "@local.activity_title", - "_translations": { - "value": {} - }, - "_nested_name": "intro.intro_title", + "_nested_name": "pages_activity.intro", "_dynamicFields": { - "value": [ + "hidden": [ { - "fullExpression": "@local.activity_title", - "matchedExpression": "@local.activity_title", + "fullExpression": "@local.hide_intro", + "matchedExpression": "@local.hide_intro", "type": "local", - "fieldName": "activity_title" + "fieldName": "hide_intro" } ] }, "_dynamicDependencies": { - "@local.activity_title": [ - "value" + "@local.hide_intro": [ + "hidden" ] } }, { - "type": "text", - "name": "intro_text", - "_nested_name": "intro.intro_text" - }, - { - "type": "template", - "name": "intro_nav_buttons", - "value": "nav_buttons", - "action_list": [ + "type": "animated_section", + "name": "content", + "hidden": "@local.hide_content", + "rows": [ { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_content", - false + "type": "display_group", + "name": "activity_banner", + "hidden": true, + "parameter_list": { + "style": "banner_short" + }, + "rows": [ + { + "type": "subtitle", + "name": "banner_title", + "value": "@local.activity_title", + "_translations": { + "value": {} + }, + "parameter_list": { + "style": "small emphasised" + }, + "_nested_name": "pages_activity.content.activity_banner.banner_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", + "type": "local", + "fieldName": "activity_title" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_title": [ + "value" + ] + } + }, + { + "type": "image", + "name": "banner_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "pages_activity.content.activity_banner.banner_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } ], - "_raw": "completed | set_local:hide_content:false", - "_cleaned": "completed | set_local:hide_content:false" + "_nested_name": "pages_activity.content.activity_banner" }, { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_intro", - true + "type": "template", + "name": "content_box", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "completed | set_local:hide_content:true", + "_cleaned": "completed | set_local:hide_content:true" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_outro", + false + ], + "_raw": "completed | set_local:hide_outro:false", + "_cleaned": "completed | set_local:hide_outro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_intro", + false + ], + "_raw": "uncompleted | set_local:hide_intro:false", + "_cleaned": "uncompleted | set_local:hide_intro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "uncompleted | set_local:hide_content:true", + "_cleaned": "uncompleted | set_local:hide_content:true" + } ], - "_raw": "completed | set_local:hide_intro:true", - "_cleaned": "completed | set_local:hide_intro:true" + "condition": "@local.include_outro", + "rows": [], + "_nested_name": "pages_activity.content.content_box", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.include_outro", + "matchedExpression": "@local.include_outro", + "type": "local", + "fieldName": "include_outro" + } + ] + }, + "_dynamicDependencies": { + "@local.include_outro": [ + "condition" + ] + } }, { - "trigger": "uncompleted", - "action_id": "emit", - "args": [ - "uncompleted" + "type": "template", + "name": "content_box", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_intro", + false + ], + "_raw": "uncompleted | set_local:hide_intro:false", + "_cleaned": "uncompleted | set_local:hide_intro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "uncompleted | set_local:hide_content:true", + "_cleaned": "uncompleted | set_local:hide_content:true" + } ], - "_raw": "uncompleted | emit:uncompleted", - "_cleaned": "uncompleted | emit:uncompleted" - } - ], - "rows": [ - { - "name": "use_uncompleted_chevron", - "value": false, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "intro.intro_nav_buttons.use_uncompleted_chevron" - }, - { - "name": "button_completed", - "value": "@global.lets_go_button", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "intro.intro_nav_buttons.button_completed", + "condition": "!@local.include_outro", + "rows": [], + "_nested_name": "pages_activity.content.content_box", "_dynamicFields": { - "value": [ + "condition": [ { - "fullExpression": "@global.lets_go_button", - "matchedExpression": "@global.lets_go_button", - "type": "global", - "fieldName": "lets_go_button" + "fullExpression": "!@local.include_outro", + "matchedExpression": "!@local.include_outro", + "type": "local", + "fieldName": "include_outro" } ] }, "_dynamicDependencies": { - "@global.lets_go_button": [ - "value" + "!@local.include_outro": [ + "condition" ] } } ], - "_nested_name": "intro.intro_nav_buttons" - } - ], - "_nested_name": "intro", - "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_intro", - "matchedExpression": "@local.hide_intro", - "type": "local", - "fieldName": "hide_intro" + "_nested_name": "pages_activity.content", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.hide_content", + "matchedExpression": "@local.hide_content", + "type": "local", + "fieldName": "hide_content" + } + ] + }, + "_dynamicDependencies": { + "@local.hide_content": [ + "hidden" + ] } - ] - }, - "_dynamicDependencies": { - "@local.hide_intro": [ - "hidden" - ] - } - }, - { - "type": "animated_section", - "name": "content", - "hidden": "@local.hide_content", - "rows": [ + }, { - "type": "display_group", - "name": "activity_banner", - "hidden": true, - "parameter_list": { - "style": "banner_short" - }, + "type": "animated_section", + "name": "outro", + "hidden": "@local.hide_outro", + "condition": "@local.include_outro", + "exclude_from_translation": true, "rows": [ { - "type": "subtitle", - "name": "banner_title", + "type": "display_group", + "parameter_list": { + "style": "banner_welcome" + }, + "rows": [ + { + "type": "image", + "name": "outro_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "pages_activity.outro.display_group.outro_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } + ], + "name": "display_group", + "_nested_name": "pages_activity.outro.display_group" + }, + { + "type": "title", + "name": "outro_title", "value": "@local.activity_title", "_translations": { "value": {} }, - "parameter_list": { - "style": "small emphasised" - }, - "_nested_name": "content.activity_banner.banner_title", + "hidden": true, + "_nested_name": "pages_activity.outro.outro_title", "_dynamicFields": { "value": [ { @@ -278,481 +600,670 @@ } }, { - "type": "image", - "name": "banner_image_src", - "value": "@local.activity_image", - "_translations": { - "value": {} - }, - "parameter_list": { - "background_box": "true" - }, - "_nested_name": "content.activity_banner.banner_image_src", + "type": "text", + "name": "outro_text", + "_nested_name": "pages_activity.outro.outro_text" + }, + { + "type": "button", + "name": "outro_button", + "hidden": true, + "_nested_name": "pages_activity.outro.outro_button" + }, + { + "type": "template", + "name": "outro_habit_box", + "value": "parent_point_dashed_box", + "condition": "!!@local.outro_habit_data", + "rows": [ + { + "name": "use_short_mark_text", + "value": false, + "type": "set_variable", + "_nested_name": "pages_activity.outro.outro_habit_box.use_short_mark_text" + }, + { + "name": "habit_text_long", + "value": "@local.outro_habit_text", + "_translations": { + "value": {} + }, + "condition": "!!@local.outro_habit_text", + "type": "set_variable", + "_nested_name": "pages_activity.outro.outro_habit_box.habit_text_long", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_text", + "matchedExpression": "@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ], + "condition": [ + { + "fullExpression": "!!@local.outro_habit_text", + "matchedExpression": "!@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_text": [ + "value" + ], + "!@local.outro_habit_text": [ + "condition" + ] + } + }, + { + "name": "habit_1_data", + "value": "@local.outro_habit_data", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "pages_activity.outro.outro_habit_box.habit_1_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_data", + "matchedExpression": "@local.outro_habit_data", + "type": "local", + "fieldName": "outro_habit_data" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_data": [ + "value" + ] + } + } + ], + "_nested_name": "pages_activity.outro.outro_habit_box", "_dynamicFields": { - "value": [ + "condition": [ { - "fullExpression": "@local.activity_image", - "matchedExpression": "@local.activity_image", + "fullExpression": "!!@local.outro_habit_data", + "matchedExpression": "!@local.outro_habit_data", "type": "local", - "fieldName": "activity_image" + "fieldName": "outro_habit_data" } ] }, "_dynamicDependencies": { - "@local.activity_image": [ - "value" - ] - } - } - ], - "_nested_name": "content.activity_banner" - }, - { - "type": "template", - "name": "content_box", - "action_list": [ - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_content", - true - ], - "_raw": "completed | set_local:hide_content:true", - "_cleaned": "completed | set_local:hide_content:true" - }, - { - "trigger": "completed", - "action_id": "set_local", - "args": [ - "hide_outro", - false - ], - "_raw": "completed | set_local:hide_outro:false", - "_cleaned": "completed | set_local:hide_outro:false" - }, - { - "trigger": "uncompleted", - "action_id": "set_local", - "args": [ - "hide_intro", - false - ], - "_raw": "uncompleted | set_local:hide_intro:false", - "_cleaned": "uncompleted | set_local:hide_intro:false" - }, - { - "trigger": "uncompleted", - "action_id": "set_local", - "args": [ - "hide_content", - true - ], - "_raw": "uncompleted | set_local:hide_content:true", - "_cleaned": "uncompleted | set_local:hide_content:true" - } - ], - "condition": "@local.include_outro", - "rows": [], - "_nested_name": "content.content_box", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "@local.include_outro", - "matchedExpression": "@local.include_outro", - "type": "local", - "fieldName": "include_outro" - } - ] - }, - "_dynamicDependencies": { - "@local.include_outro": [ - "condition" - ] - } - }, - { - "type": "template", - "name": "content_box", - "action_list": [ - { - "trigger": "completed", - "action_id": "emit", - "args": [ - "completed" - ], - "_raw": "completed | emit:completed", - "_cleaned": "completed | emit:completed" + "!@local.outro_habit_data": [ + "condition" + ] + } }, { - "trigger": "uncompleted", - "action_id": "set_local", - "args": [ - "hide_intro", - false + "type": "display_group", + "name": "has_toggle_bar", + "condition": "!!@local.outro_toggle_bar_text", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "toggle_bar", + "name": "outro_toggle_bar", + "value": "@fields.@local.outro_toggle_bar_field", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.outro_toggle_bar_field", + "this.value" + ], + "_raw": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "_cleaned": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar" + } + ], + "parameter_list": { + "true_text": "@local.outro_toggle_bar_text", + "false_text": "@local.outro_toggle_bar_text" + }, + "_nested_name": "pages_activity.outro.has_toggle_bar.outro_toggle_bar", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.outro_toggle_bar_field", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.outro_toggle_bar_field", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ] + } + }, + "parameter_list": { + "true_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ], + "false_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.outro_toggle_bar_field": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar_text": [ + "parameter_list.true_text", + "parameter_list.false_text" + ] + } + } ], - "_raw": "uncompleted | set_local:hide_intro:false", - "_cleaned": "uncompleted | set_local:hide_intro:false" + "_nested_name": "pages_activity.outro.has_toggle_bar", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!!@local.outro_toggle_bar_text", + "matchedExpression": "!@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] + }, + "_dynamicDependencies": { + "!@local.outro_toggle_bar_text": [ + "condition" + ] + } }, { - "trigger": "uncompleted", - "action_id": "set_local", - "args": [ - "hide_content", - true + "type": "template", + "name": "outro_nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + false + ], + "_raw": "uncompleted | set_local:hide_content:false", + "_cleaned": "uncompleted | set_local:hide_content:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_outro", + true + ], + "_raw": "uncompleted | set_local:hide_outro:true", + "_cleaned": "uncompleted | set_local:hide_outro:true" + } ], - "_raw": "uncompleted | set_local:hide_content:true", - "_cleaned": "uncompleted | set_local:hide_content:true" + "rows": [], + "_nested_name": "pages_activity.outro.outro_nav_buttons" } ], - "condition": "!@local.include_outro", - "rows": [], - "_nested_name": "content.content_box", + "_nested_name": "pages_activity.outro", "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.hide_outro", + "matchedExpression": "@local.hide_outro", + "type": "local", + "fieldName": "hide_outro" + } + ], "condition": [ { - "fullExpression": "!@local.include_outro", - "matchedExpression": "!@local.include_outro", + "fullExpression": "@local.include_outro", + "matchedExpression": "@local.include_outro", "type": "local", "fieldName": "include_outro" } ] }, "_dynamicDependencies": { - "!@local.include_outro": [ + "@local.hide_outro": [ + "hidden" + ], + "@local.include_outro": [ "condition" ] } } ], - "_nested_name": "content", + "_nested_name": "pages_activity", "_dynamicFields": { - "hidden": [ + "condition": [ { - "fullExpression": "@local.hide_content", - "matchedExpression": "@local.hide_content", + "fullExpression": "!@local.use_scroll", + "matchedExpression": "!@local.use_scroll", "type": "local", - "fieldName": "hide_content" + "fieldName": "use_scroll" } ] }, "_dynamicDependencies": { - "@local.hide_content": [ - "hidden" + "!@local.use_scroll": [ + "condition" ] } }, { - "type": "animated_section", - "name": "outro", - "value": "fade_in_out", - "hidden": "@local.hide_outro", - "condition": "@local.include_outro", - "exclude_from_translation": true, + "type": "display_group", + "name": "scroll_activity", + "condition": "@local.use_scroll", + "parameter_list": { + "style": "column" + }, "rows": [ { "type": "display_group", + "name": "activity_banner", "parameter_list": { - "style": "banner_welcome" + "style": "banner_short" }, "rows": [ { - "type": "image", - "name": "outro_image_src", - "value": "@local.activity_image", + "type": "subtitle", + "name": "banner_title", + "value": "@local.activity_title", "_translations": { "value": {} }, "parameter_list": { - "background_box": "true" + "style": "small emphasised" }, - "_nested_name": "outro.display_group.outro_image_src", + "_nested_name": "scroll_activity.activity_banner.banner_title", "_dynamicFields": { "value": [ { - "fullExpression": "@local.activity_image", - "matchedExpression": "@local.activity_image", + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", "type": "local", - "fieldName": "activity_image" + "fieldName": "activity_title" } ] }, "_dynamicDependencies": { - "@local.activity_image": [ + "@local.activity_title": [ "value" ] } + }, + { + "type": "image", + "name": "banner_image_src", + "value": "plh_images/icons/person.svg", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "scroll_activity.activity_banner.banner_image_src" } ], - "name": "display_group", - "_nested_name": "outro.display_group" - }, - { - "type": "title", - "name": "outro_title", - "value": "@local.activity_title", - "_translations": { - "value": {} - }, - "hidden": true, - "_nested_name": "outro.outro_title", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.activity_title", - "matchedExpression": "@local.activity_title", - "type": "local", - "fieldName": "activity_title" - } - ] - }, - "_dynamicDependencies": { - "@local.activity_title": [ - "value" - ] - } + "_nested_name": "scroll_activity.activity_banner" }, { "type": "text", - "name": "outro_text", - "_nested_name": "outro.outro_text" + "name": "intro_text", + "_nested_name": "scroll_activity.intro_text" }, { - "type": "button", - "name": "outro_button", - "hidden": true, - "_nested_name": "outro.outro_button" + "type": "template", + "name": "content_box", + "rows": [], + "_nested_name": "scroll_activity.content_box" }, { - "type": "template", - "name": "outro_habit_box", - "value": "parent_point_dashed_box", - "condition": "!!@local.outro_habit_data", + "type": "display_group", + "condition": "@local.include_outro", "rows": [ { - "name": "use_short_mark_text", - "value": false, - "type": "set_variable", - "_nested_name": "outro.outro_habit_box.use_short_mark_text" + "type": "text", + "name": "outro_text", + "_nested_name": "scroll_activity.display_group.outro_text" }, { - "name": "habit_text_long", - "value": "@local.outro_habit_text", - "_translations": { - "value": {} - }, - "condition": "!!@local.outro_habit_text", - "type": "set_variable", - "_nested_name": "outro.outro_habit_box.habit_text_long", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.outro_habit_text", - "matchedExpression": "@local.outro_habit_text", - "type": "local", - "fieldName": "outro_habit_text" - } - ], - "condition": [ - { - "fullExpression": "!!@local.outro_habit_text", - "matchedExpression": "!@local.outro_habit_text", - "type": "local", - "fieldName": "outro_habit_text" - } - ] - }, - "_dynamicDependencies": { - "@local.outro_habit_text": [ - "value" - ], - "!@local.outro_habit_text": [ - "condition" - ] - } + "type": "button", + "name": "outro_button", + "hidden": true, + "_nested_name": "scroll_activity.display_group.outro_button" }, { - "name": "habit_1_data", - "value": "@local.outro_habit_data", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "outro.outro_habit_box.habit_1_data", + "type": "template", + "name": "outro_habit_box", + "value": "parent_point_dashed_box", + "condition": "!!@local.outro_habit_data", + "rows": [ + { + "name": "use_short_mark_text", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "scroll_activity.display_group.outro_habit_box.use_short_mark_text" + }, + { + "name": "habit_text_long", + "value": "@local.outro_habit_text", + "_translations": { + "value": {} + }, + "condition": "!!@local.outro_habit_text", + "type": "set_variable", + "_nested_name": "scroll_activity.display_group.outro_habit_box.habit_text_long", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_text", + "matchedExpression": "@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ], + "condition": [ + { + "fullExpression": "!!@local.outro_habit_text", + "matchedExpression": "!@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_text": [ + "value" + ], + "!@local.outro_habit_text": [ + "condition" + ] + } + }, + { + "name": "habit_1_data", + "value": "@local.outro_habit_data", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "scroll_activity.display_group.outro_habit_box.habit_1_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_data", + "matchedExpression": "@local.outro_habit_data", + "type": "local", + "fieldName": "outro_habit_data" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_data": [ + "value" + ] + } + }, + { + "name": "dashed_box", + "parameter_list": { + "style": "column" + }, + "type": "set_variable", + "_nested_name": "scroll_activity.display_group.outro_habit_box.dashed_box" + } + ], + "_nested_name": "scroll_activity.display_group.outro_habit_box", "_dynamicFields": { - "value": [ + "condition": [ { - "fullExpression": "@local.outro_habit_data", - "matchedExpression": "@local.outro_habit_data", + "fullExpression": "!!@local.outro_habit_data", + "matchedExpression": "!@local.outro_habit_data", "type": "local", "fieldName": "outro_habit_data" } ] }, "_dynamicDependencies": { - "@local.outro_habit_data": [ - "value" + "!@local.outro_habit_data": [ + "condition" ] } - } - ], - "_nested_name": "outro.outro_habit_box", - "_dynamicFields": { - "condition": [ - { - "fullExpression": "!!@local.outro_habit_data", - "matchedExpression": "!@local.outro_habit_data", - "type": "local", - "fieldName": "outro_habit_data" - } - ] - }, - "_dynamicDependencies": { - "!@local.outro_habit_data": [ - "condition" - ] - } - }, - { - "type": "display_group", - "name": "has_toggle_bar", - "condition": "!!@local.outro_toggle_bar_text", - "parameter_list": { - "style": "column" - }, - "rows": [ + }, { - "type": "toggle_bar", - "name": "outro_toggle_bar", - "value": "@fields.@local.outro_toggle_bar_field", - "_translations": { - "value": {} + "type": "display_group", + "name": "has_toggle_bar", + "condition": "!!@local.outro_toggle_bar_text", + "parameter_list": { + "style": "column" }, - "action_list": [ + "rows": [ { - "trigger": "changed", - "action_id": "set_field", - "args": [ - "@local.outro_toggle_bar_field", - "this.value" + "type": "toggle_bar", + "name": "outro_toggle_bar", + "value": "@fields.@local.outro_toggle_bar_field", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.outro_toggle_bar_field", + "this.value" + ], + "_raw": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "_cleaned": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar" + } ], - "_raw": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", - "_cleaned": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar" - } - ], - "parameter_list": { - "true_text": "@local.outro_toggle_bar_text", - "false_text": "@local.outro_toggle_bar_text" - }, - "_nested_name": "outro.has_toggle_bar.outro_toggle_bar", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@fields.@local.outro_toggle_bar_field", - "matchedExpression": "@local.outro_toggle_bar_field", - "type": "local", - "fieldName": "outro_toggle_bar_field" - } - ], - "action_list": { - "0": { - "args": { - "0": [ - { - "fullExpression": "@local.outro_toggle_bar_field", - "matchedExpression": "@local.outro_toggle_bar_field", - "type": "local", - "fieldName": "outro_toggle_bar_field" - } - ] - }, - "_raw": [ + "exclude_from_translation": true, + "parameter_list": { + "true_text": "@local.outro_toggle_bar_text", + "false_text": "@local.outro_toggle_bar_text" + }, + "_nested_name": "scroll_activity.display_group.has_toggle_bar.outro_toggle_bar", + "_dynamicFields": { + "value": [ { - "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "fullExpression": "@fields.@local.outro_toggle_bar_field", "matchedExpression": "@local.outro_toggle_bar_field", "type": "local", "fieldName": "outro_toggle_bar_field" - }, - { - "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", - "matchedExpression": "@local.outro_toggle_bar", - "type": "local", - "fieldName": "outro_toggle_bar" } ], - "_cleaned": [ - { - "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", - "matchedExpression": "@local.outro_toggle_bar_field", - "type": "local", - "fieldName": "outro_toggle_bar_field" - }, - { - "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", - "matchedExpression": "@local.outro_toggle_bar", - "type": "local", - "fieldName": "outro_toggle_bar" + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.outro_toggle_bar_field", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ] } + }, + "parameter_list": { + "true_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ], + "false_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.outro_toggle_bar_field": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar_text": [ + "parameter_list.true_text", + "parameter_list.false_text" ] } - }, - "parameter_list": { - "true_text": [ - { - "fullExpression": "@local.outro_toggle_bar_text", - "matchedExpression": "@local.outro_toggle_bar_text", - "type": "local", - "fieldName": "outro_toggle_bar_text" - } - ], - "false_text": [ - { - "fullExpression": "@local.outro_toggle_bar_text", - "matchedExpression": "@local.outro_toggle_bar_text", - "type": "local", - "fieldName": "outro_toggle_bar_text" - } - ] } + ], + "_nested_name": "scroll_activity.display_group.has_toggle_bar", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!!@local.outro_toggle_bar_text", + "matchedExpression": "!@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] }, "_dynamicDependencies": { - "@local.outro_toggle_bar_field": [ - "value", - "action_list.0.args.0", - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.outro_toggle_bar": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.outro_toggle_bar_text": [ - "parameter_list.true_text", - "parameter_list.false_text" + "!@local.outro_toggle_bar_text": [ + "condition" ] } } ], - "_nested_name": "outro.has_toggle_bar", + "name": "display_group", + "_nested_name": "scroll_activity.display_group", "_dynamicFields": { "condition": [ { - "fullExpression": "!!@local.outro_toggle_bar_text", - "matchedExpression": "!@local.outro_toggle_bar_text", + "fullExpression": "@local.include_outro", + "matchedExpression": "@local.include_outro", "type": "local", - "fieldName": "outro_toggle_bar_text" + "fieldName": "include_outro" } ] }, "_dynamicDependencies": { - "!@local.outro_toggle_bar_text": [ + "@local.include_outro": [ "condition" ] } }, { "type": "template", - "name": "outro_nav_buttons", + "name": "nav_buttons", "value": "nav_buttons", "action_list": [ { @@ -766,53 +1277,31 @@ }, { "trigger": "uncompleted", - "action_id": "set_local", - "args": [ - "hide_content", - false - ], - "_raw": "uncompleted | set_local:hide_content:false", - "_cleaned": "uncompleted | set_local:hide_content:false" - }, - { - "trigger": "uncompleted", - "action_id": "set_local", + "action_id": "emit", "args": [ - "hide_outro", - true + "uncompleted" ], - "_raw": "uncompleted | set_local:hide_outro:true", - "_cleaned": "uncompleted | set_local:hide_outro:true" + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" } ], "rows": [], - "_nested_name": "outro.outro_nav_buttons" + "_nested_name": "scroll_activity.nav_buttons" } ], - "_nested_name": "outro", + "_nested_name": "scroll_activity", "_dynamicFields": { - "hidden": [ - { - "fullExpression": "@local.hide_outro", - "matchedExpression": "@local.hide_outro", - "type": "local", - "fieldName": "hide_outro" - } - ], "condition": [ { - "fullExpression": "@local.include_outro", - "matchedExpression": "@local.include_outro", + "fullExpression": "@local.use_scroll", + "matchedExpression": "@local.use_scroll", "type": "local", - "fieldName": "include_outro" + "fieldName": "use_scroll" } ] }, "_dynamicDependencies": { - "@local.hide_outro": [ - "hidden" - ], - "@local.include_outro": [ + "@local.use_scroll": [ "condition" ] } diff --git a/packages/app-data/sheets/template/workshop_activity_old.json b/packages/app-data/sheets/template/workshop_activity_old.json new file mode 100644 index 0000000000..294d7b7368 --- /dev/null +++ b/packages/app-data/sheets/template/workshop_activity_old.json @@ -0,0 +1,822 @@ +{ + "flow_type": "template", + "flow_name": "workshop_activity_old", + "status": "released", + "rows": [ + { + "name": "activity_image", + "type": "set_variable", + "_nested_name": "activity_image" + }, + { + "name": "activity_title", + "value": "Title of this activity", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "activity_title" + }, + { + "name": "include_outro", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "include_outro" + }, + { + "name": "hide_intro", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "hide_intro" + }, + { + "name": "hide_content", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "hide_content" + }, + { + "name": "hide_outro", + "value": true, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "hide_outro" + }, + { + "name": "outro_habit_data", + "type": "set_variable", + "_nested_name": "outro_habit_data" + }, + { + "name": "outro_habit_text", + "type": "set_variable", + "_nested_name": "outro_habit_text" + }, + { + "name": "outro_toggle_bar_text", + "type": "set_variable", + "_nested_name": "outro_toggle_bar_text" + }, + { + "name": "outro_toggle_bar_field", + "type": "set_variable", + "_nested_name": "outro_toggle_bar_field" + }, + { + "type": "display_theme", + "name": "display_theme", + "value": "passive_theme", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "display_theme" + }, + { + "type": "animated_section", + "name": "intro", + "value": "fade_in_out", + "hidden": "@local.hide_intro", + "exclude_from_translation": true, + "rows": [ + { + "type": "display_group", + "parameter_list": { + "style": "banner_welcome" + }, + "rows": [ + { + "type": "image", + "name": "intro_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "intro.display_group.intro_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } + ], + "name": "display_group", + "_nested_name": "intro.display_group" + }, + { + "type": "title", + "name": "intro_title", + "value": "@local.activity_title", + "_translations": { + "value": {} + }, + "_nested_name": "intro.intro_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", + "type": "local", + "fieldName": "activity_title" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_title": [ + "value" + ] + } + }, + { + "type": "text", + "name": "intro_text", + "_nested_name": "intro.intro_text" + }, + { + "type": "template", + "name": "intro_nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_content", + false + ], + "_raw": "completed | set_local:hide_content:false", + "_cleaned": "completed | set_local:hide_content:false" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_intro", + true + ], + "_raw": "completed | set_local:hide_intro:true", + "_cleaned": "completed | set_local:hide_intro:true" + }, + { + "trigger": "uncompleted", + "action_id": "emit", + "args": [ + "uncompleted" + ], + "_raw": "uncompleted | emit:uncompleted", + "_cleaned": "uncompleted | emit:uncompleted" + } + ], + "rows": [ + { + "name": "use_uncompleted_chevron", + "value": false, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "intro.intro_nav_buttons.use_uncompleted_chevron" + }, + { + "name": "button_completed", + "value": "@global.lets_go_button", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "intro.intro_nav_buttons.button_completed", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@global.lets_go_button", + "matchedExpression": "@global.lets_go_button", + "type": "global", + "fieldName": "lets_go_button" + } + ] + }, + "_dynamicDependencies": { + "@global.lets_go_button": [ + "value" + ] + } + } + ], + "_nested_name": "intro.intro_nav_buttons" + } + ], + "_nested_name": "intro", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.hide_intro", + "matchedExpression": "@local.hide_intro", + "type": "local", + "fieldName": "hide_intro" + } + ] + }, + "_dynamicDependencies": { + "@local.hide_intro": [ + "hidden" + ] + } + }, + { + "type": "animated_section", + "name": "content", + "hidden": "@local.hide_content", + "rows": [ + { + "type": "display_group", + "name": "activity_banner", + "hidden": true, + "parameter_list": { + "style": "banner_short" + }, + "rows": [ + { + "type": "subtitle", + "name": "banner_title", + "value": "@local.activity_title", + "_translations": { + "value": {} + }, + "parameter_list": { + "style": "small emphasised" + }, + "_nested_name": "content.activity_banner.banner_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", + "type": "local", + "fieldName": "activity_title" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_title": [ + "value" + ] + } + }, + { + "type": "image", + "name": "banner_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "content.activity_banner.banner_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } + ], + "_nested_name": "content.activity_banner" + }, + { + "type": "template", + "name": "content_box", + "action_list": [ + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "completed | set_local:hide_content:true", + "_cleaned": "completed | set_local:hide_content:true" + }, + { + "trigger": "completed", + "action_id": "set_local", + "args": [ + "hide_outro", + false + ], + "_raw": "completed | set_local:hide_outro:false", + "_cleaned": "completed | set_local:hide_outro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_intro", + false + ], + "_raw": "uncompleted | set_local:hide_intro:false", + "_cleaned": "uncompleted | set_local:hide_intro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "uncompleted | set_local:hide_content:true", + "_cleaned": "uncompleted | set_local:hide_content:true" + } + ], + "condition": "@local.include_outro", + "rows": [], + "_nested_name": "content.content_box", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "@local.include_outro", + "matchedExpression": "@local.include_outro", + "type": "local", + "fieldName": "include_outro" + } + ] + }, + "_dynamicDependencies": { + "@local.include_outro": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "content_box", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_intro", + false + ], + "_raw": "uncompleted | set_local:hide_intro:false", + "_cleaned": "uncompleted | set_local:hide_intro:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + true + ], + "_raw": "uncompleted | set_local:hide_content:true", + "_cleaned": "uncompleted | set_local:hide_content:true" + } + ], + "condition": "!@local.include_outro", + "rows": [], + "_nested_name": "content.content_box", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!@local.include_outro", + "matchedExpression": "!@local.include_outro", + "type": "local", + "fieldName": "include_outro" + } + ] + }, + "_dynamicDependencies": { + "!@local.include_outro": [ + "condition" + ] + } + } + ], + "_nested_name": "content", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.hide_content", + "matchedExpression": "@local.hide_content", + "type": "local", + "fieldName": "hide_content" + } + ] + }, + "_dynamicDependencies": { + "@local.hide_content": [ + "hidden" + ] + } + }, + { + "type": "animated_section", + "name": "outro", + "value": "fade_in_out", + "hidden": "@local.hide_outro", + "condition": "@local.include_outro", + "exclude_from_translation": true, + "rows": [ + { + "type": "display_group", + "parameter_list": { + "style": "banner_welcome" + }, + "rows": [ + { + "type": "image", + "name": "outro_image_src", + "value": "@local.activity_image", + "_translations": { + "value": {} + }, + "parameter_list": { + "background_box": "true" + }, + "_nested_name": "outro.display_group.outro_image_src", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_image", + "matchedExpression": "@local.activity_image", + "type": "local", + "fieldName": "activity_image" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_image": [ + "value" + ] + } + } + ], + "name": "display_group", + "_nested_name": "outro.display_group" + }, + { + "type": "title", + "name": "outro_title", + "value": "@local.activity_title", + "_translations": { + "value": {} + }, + "hidden": true, + "_nested_name": "outro.outro_title", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.activity_title", + "matchedExpression": "@local.activity_title", + "type": "local", + "fieldName": "activity_title" + } + ] + }, + "_dynamicDependencies": { + "@local.activity_title": [ + "value" + ] + } + }, + { + "type": "text", + "name": "outro_text", + "_nested_name": "outro.outro_text" + }, + { + "type": "button", + "name": "outro_button", + "hidden": true, + "_nested_name": "outro.outro_button" + }, + { + "type": "template", + "name": "outro_habit_box", + "value": "parent_point_dashed_box", + "condition": "!!@local.outro_habit_data", + "rows": [ + { + "name": "use_short_mark_text", + "value": false, + "type": "set_variable", + "_nested_name": "outro.outro_habit_box.use_short_mark_text" + }, + { + "name": "habit_text_long", + "value": "@local.outro_habit_text", + "_translations": { + "value": {} + }, + "condition": "!!@local.outro_habit_text", + "type": "set_variable", + "_nested_name": "outro.outro_habit_box.habit_text_long", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_text", + "matchedExpression": "@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ], + "condition": [ + { + "fullExpression": "!!@local.outro_habit_text", + "matchedExpression": "!@local.outro_habit_text", + "type": "local", + "fieldName": "outro_habit_text" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_text": [ + "value" + ], + "!@local.outro_habit_text": [ + "condition" + ] + } + }, + { + "name": "habit_1_data", + "value": "@local.outro_habit_data", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "outro.outro_habit_box.habit_1_data", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@local.outro_habit_data", + "matchedExpression": "@local.outro_habit_data", + "type": "local", + "fieldName": "outro_habit_data" + } + ] + }, + "_dynamicDependencies": { + "@local.outro_habit_data": [ + "value" + ] + } + } + ], + "_nested_name": "outro.outro_habit_box", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!!@local.outro_habit_data", + "matchedExpression": "!@local.outro_habit_data", + "type": "local", + "fieldName": "outro_habit_data" + } + ] + }, + "_dynamicDependencies": { + "!@local.outro_habit_data": [ + "condition" + ] + } + }, + { + "type": "display_group", + "name": "has_toggle_bar", + "condition": "!!@local.outro_toggle_bar_text", + "parameter_list": { + "style": "column" + }, + "rows": [ + { + "type": "toggle_bar", + "name": "outro_toggle_bar", + "value": "@fields.@local.outro_toggle_bar_field", + "_translations": { + "value": {} + }, + "action_list": [ + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "@local.outro_toggle_bar_field", + "this.value" + ], + "_raw": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "_cleaned": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar" + } + ], + "parameter_list": { + "true_text": "@local.outro_toggle_bar_text", + "false_text": "@local.outro_toggle_bar_text" + }, + "_nested_name": "outro.has_toggle_bar.outro_toggle_bar", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.@local.outro_toggle_bar_field", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@local.outro_toggle_bar_field", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + } + ] + }, + "_raw": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ], + "_cleaned": [ + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar_field", + "type": "local", + "fieldName": "outro_toggle_bar_field" + }, + { + "fullExpression": "changed | set_field: @local.outro_toggle_bar_field : @local.outro_toggle_bar", + "matchedExpression": "@local.outro_toggle_bar", + "type": "local", + "fieldName": "outro_toggle_bar" + } + ] + } + }, + "parameter_list": { + "true_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ], + "false_text": [ + { + "fullExpression": "@local.outro_toggle_bar_text", + "matchedExpression": "@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] + } + }, + "_dynamicDependencies": { + "@local.outro_toggle_bar_field": [ + "value", + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar": [ + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@local.outro_toggle_bar_text": [ + "parameter_list.true_text", + "parameter_list.false_text" + ] + } + } + ], + "_nested_name": "outro.has_toggle_bar", + "_dynamicFields": { + "condition": [ + { + "fullExpression": "!!@local.outro_toggle_bar_text", + "matchedExpression": "!@local.outro_toggle_bar_text", + "type": "local", + "fieldName": "outro_toggle_bar_text" + } + ] + }, + "_dynamicDependencies": { + "!@local.outro_toggle_bar_text": [ + "condition" + ] + } + }, + { + "type": "template", + "name": "outro_nav_buttons", + "value": "nav_buttons", + "action_list": [ + { + "trigger": "completed", + "action_id": "emit", + "args": [ + "completed" + ], + "_raw": "completed | emit:completed", + "_cleaned": "completed | emit:completed" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_content", + false + ], + "_raw": "uncompleted | set_local:hide_content:false", + "_cleaned": "uncompleted | set_local:hide_content:false" + }, + { + "trigger": "uncompleted", + "action_id": "set_local", + "args": [ + "hide_outro", + true + ], + "_raw": "uncompleted | set_local:hide_outro:true", + "_cleaned": "uncompleted | set_local:hide_outro:true" + } + ], + "rows": [], + "_nested_name": "outro.outro_nav_buttons" + } + ], + "_nested_name": "outro", + "_dynamicFields": { + "hidden": [ + { + "fullExpression": "@local.hide_outro", + "matchedExpression": "@local.hide_outro", + "type": "local", + "fieldName": "hide_outro" + } + ], + "condition": [ + { + "fullExpression": "@local.include_outro", + "matchedExpression": "@local.include_outro", + "type": "local", + "fieldName": "include_outro" + } + ] + }, + "_dynamicDependencies": { + "@local.hide_outro": [ + "hidden" + ], + "@local.include_outro": [ + "condition" + ] + } + } + ], + "_xlsxPath": "global/core_templates/core_templates_workshops.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/template/workshop_options_page.json b/packages/app-data/sheets/template/workshop_options_page.json index 036ef3f739..5c1911f154 100644 --- a/packages/app-data/sheets/template/workshop_options_page.json +++ b/packages/app-data/sheets/template/workshop_options_page.json @@ -732,22 +732,32 @@ }, { "type": "text", - "name": "text_do_workshops_together", - "value": "I do the workshops...", + "name": "text_workshop_path", + "value": "I do the @global.workshops:", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "parameter_list": { "style": "emphasised" }, - "_nested_name": "text_do_workshops_together" + "_nested_name": "text_workshop_path", + "_dynamicFields": { + "value": [ + { + "fullExpression": "I do the @global.workshops:", + "matchedExpression": "@global.workshops", + "type": "global", + "fieldName": "workshops" + } + ] + }, + "_dynamicDependencies": { + "@global.workshops": [ + "value" + ] + } }, { "type": "radio_group", @@ -766,6 +776,16 @@ ], "_raw": "changed | set_field: workshop_path: @local.radio_group_1", "_cleaned": "changed | set_field: workshop_path: @local.radio_group_1" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "workshop_path_user_choice", + true + ], + "_raw": "changed | set_field: workshop_path_user_choice: TRUE", + "_cleaned": "changed | set_field: workshop_path_user_choice: TRUE" } ], "parameter_list": { @@ -825,31 +845,6 @@ ] } }, - { - "name": "local_do_workshops_together", - "value": "@local.radio_group_1===\"together\"", - "_translations": { - "value": {} - }, - "exclude_from_translation": true, - "type": "set_variable", - "_nested_name": "local_do_workshops_together", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group_1===\"together\"", - "matchedExpression": "@local.radio_group_1", - "type": "local", - "fieldName": "radio_group_1" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group_1": [ - "value" - ] - } - }, { "type": "display_group", "name": "reply_group_name", @@ -1027,15 +1022,10 @@ { "type": "text", "name": "text_what_group_workshop", - "value": "My group is now doing the workshop...", + "value": "My group is now doing the @global.workshop:", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "condition": "@local.radio_group_1==\"together\"", @@ -1044,6 +1034,14 @@ }, "_nested_name": "text_what_group_workshop", "_dynamicFields": { + "value": [ + { + "fullExpression": "My group is now doing the @global.workshop:", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "@local.radio_group_1==\"together\"", @@ -1054,6 +1052,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@local.radio_group_1": [ "condition" ] @@ -1062,15 +1063,10 @@ { "type": "text", "name": "text_what_individual_workshop", - "value": "I am now doing the workshop...", + "value": "I am now doing the @global.workshop:", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "condition": "@local.radio_group_1==\"individual\"", @@ -1079,6 +1075,14 @@ }, "_nested_name": "text_what_individual_workshop", "_dynamicFields": { + "value": [ + { + "fullExpression": "I am now doing the @global.workshop:", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "@local.radio_group_1==\"individual\"", @@ -1089,6 +1093,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@local.radio_group_1": [ "condition" ] @@ -1494,16 +1501,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -1629,34 +1626,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -1684,7 +1653,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -1712,7 +1681,7 @@ } ] }, - "3": { + "2": { "args": { "1": [ { @@ -1740,7 +1709,7 @@ } ] }, - "4": { + "3": { "args": { "1": [ { @@ -1768,7 +1737,7 @@ } ] }, - "5": { + "4": { "args": { "1": [ { @@ -1807,36 +1776,31 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "`@global.user_name_default": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "`@global.user_name_default": [ + "`@global.group_name_default": [ "action_list.1.args.1", "action_list.1._raw", "action_list.1._cleaned" ], - "`@global.group_name_default": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", "action_list.2._cleaned" ], - "@local.workshop_start_day": [ + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" ], - "@local.benchmark_date": [ + "@local.benchmark_workshop_number": [ "action_list.4.args.1", "action_list.4._raw", "action_list.4._cleaned" ], - "@local.benchmark_workshop_number": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" - ], "!@local.text_box_2": [ "condition" ] @@ -1847,16 +1811,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -1982,34 +1936,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -2037,7 +1963,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -2065,7 +1991,7 @@ } ] }, - "3": { + "2": { "args": { "1": [ { @@ -2093,7 +2019,7 @@ } ] }, - "4": { + "3": { "args": { "1": [ { @@ -2121,7 +2047,7 @@ } ] }, - "5": { + "4": { "args": { "1": [ { @@ -2160,36 +2086,31 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "`@global.user_name_default": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "`@global.user_name_default": [ + "@local.text_box_2": [ "action_list.1.args.1", "action_list.1._raw", - "action_list.1._cleaned" + "action_list.1._cleaned", + "condition" ], - "@local.text_box_2": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", - "action_list.2._cleaned", - "condition" + "action_list.2._cleaned" ], - "@local.workshop_start_day": [ + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" ], - "@local.benchmark_date": [ + "@local.benchmark_workshop_number": [ "action_list.4.args.1", "action_list.4._raw", "action_list.4._cleaned" - ], - "@local.benchmark_workshop_number": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" ] } } @@ -2221,16 +2142,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -2356,34 +2267,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -2411,7 +2294,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -2439,7 +2322,7 @@ } ] }, - "3": { + "2": { "args": { "1": [ { @@ -2467,7 +2350,7 @@ } ] }, - "4": { + "3": { "args": { "1": [ { @@ -2495,7 +2378,7 @@ } ] }, - "5": { + "4": { "args": { "1": [ { @@ -2534,36 +2417,31 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "@local.text_box_1": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "@local.text_box_1": [ + "`@global.group_name_default": [ "action_list.1.args.1", "action_list.1._raw", "action_list.1._cleaned" ], - "`@global.group_name_default": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", "action_list.2._cleaned" ], - "@local.workshop_start_day": [ + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" ], - "@local.benchmark_date": [ + "@local.benchmark_workshop_number": [ "action_list.4.args.1", "action_list.4._raw", "action_list.4._cleaned" ], - "@local.benchmark_workshop_number": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" - ], "!@local.text_box_2": [ "condition" ] @@ -2574,16 +2452,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -2709,34 +2577,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -2764,7 +2604,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -2792,7 +2632,7 @@ } ] }, - "3": { + "2": { "args": { "1": [ { @@ -2820,7 +2660,7 @@ } ] }, - "4": { + "3": { "args": { "1": [ { @@ -2848,7 +2688,7 @@ } ] }, - "5": { + "4": { "args": { "1": [ { @@ -2887,36 +2727,31 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "@local.text_box_1": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "@local.text_box_1": [ + "@local.text_box_2": [ "action_list.1.args.1", "action_list.1._raw", - "action_list.1._cleaned" + "action_list.1._cleaned", + "condition" ], - "@local.text_box_2": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", - "action_list.2._cleaned", - "condition" + "action_list.2._cleaned" ], - "@local.workshop_start_day": [ + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" ], - "@local.benchmark_date": [ + "@local.benchmark_workshop_number": [ "action_list.4.args.1", "action_list.4._raw", "action_list.4._cleaned" - ], - "@local.benchmark_workshop_number": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" ] } } @@ -2983,16 +2818,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -3061,34 +2886,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -3116,7 +2913,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -3155,21 +2952,16 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "`@global.user_name_default": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "`@global.user_name_default": [ + "`@global.group_name_default": [ "action_list.1.args.1", "action_list.1._raw", "action_list.1._cleaned" ], - "`@global.group_name_default": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned" - ], "!@local.text_box_2": [ "condition" ] @@ -3180,16 +2972,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -3258,34 +3040,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -3313,7 +3067,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -3352,20 +3106,15 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "`@global.user_name_default": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "`@global.user_name_default": [ + "@local.text_box_2": [ "action_list.1.args.1", "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.text_box_2": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", + "action_list.1._cleaned", "condition" ] } @@ -3398,16 +3147,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -3476,34 +3215,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -3531,7 +3242,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -3570,21 +3281,16 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "@local.text_box_1": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "@local.text_box_1": [ + "`@global.group_name_default": [ "action_list.1.args.1", "action_list.1._raw", "action_list.1._cleaned" ], - "`@global.group_name_default": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned" - ], "!@local.text_box_2": [ "condition" ] @@ -3595,16 +3301,6 @@ "name": "nav_buttons", "value": "nav_buttons", "action_list": [ - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -3673,34 +3369,6 @@ "_dynamicFields": { "action_list": { "0": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "1": { "args": { "1": [ { @@ -3728,7 +3396,7 @@ } ] }, - "2": { + "1": { "args": { "1": [ { @@ -3767,20 +3435,15 @@ ] }, "_dynamicDependencies": { - "@local.local_do_workshops_together": [ + "@local.text_box_1": [ "action_list.0.args.1", "action_list.0._raw", "action_list.0._cleaned" ], - "@local.text_box_1": [ + "@local.text_box_2": [ "action_list.1.args.1", "action_list.1._raw", - "action_list.1._cleaned" - ], - "@local.text_box_2": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", + "action_list.1._cleaned", "condition" ] } diff --git a/packages/app-data/sheets/template/workshop_setup_q_1.json b/packages/app-data/sheets/template/workshop_setup_q_1.json index e60240511b..8064bd5dcb 100644 --- a/packages/app-data/sheets/template/workshop_setup_q_1.json +++ b/packages/app-data/sheets/template/workshop_setup_q_1.json @@ -210,8 +210,8 @@ "user_gender", "this.value" ], - "_raw": "changed | set_field:user_gender:@local.radio_group", - "_cleaned": "changed | set_field:user_gender:@local.radio_group" + "_raw": "changed | set_field: user_gender: @local.radio_group", + "_cleaned": "changed | set_field: user_gender: @local.radio_group" } ], "parameter_list": { @@ -231,7 +231,7 @@ "0": { "_raw": [ { - "fullExpression": "changed | set_field:user_gender:@local.radio_group", + "fullExpression": "changed | set_field: user_gender: @local.radio_group", "matchedExpression": "@local.radio_group", "type": "local", "fieldName": "radio_group" @@ -239,7 +239,7 @@ ], "_cleaned": [ { - "fullExpression": "changed | set_field:user_gender:@local.radio_group", + "fullExpression": "changed | set_field: user_gender: @local.radio_group", "matchedExpression": "@local.radio_group", "type": "local", "fieldName": "radio_group" @@ -291,17 +291,8 @@ "_nested_name": "age" }, { - "type": "image", - "name": "age_image", - "value": "plh_images/survey/workshop_setup/age_image.svg", - "_translations": { - "value": {} - }, - "_nested_name": "age_image" - }, - { - "type": "slider", - "name": "slider", + "type": "text_box", + "name": "number_box", "value": "@fields.user_age", "_translations": { "value": {} @@ -314,16 +305,16 @@ "user_age", "this.value" ], - "_raw": "changed | set_field:user_age:@local.slider", - "_cleaned": "changed | set_field:user_age:@local.slider" + "_raw": "changed | set_field: user_age: @local.number_box", + "_cleaned": "changed | set_field: user_age: @local.number_box" } ], "parameter_list": { - "min": "0", - "max": "80", - "labels_count": "5" + "text_align": "center", + "placeholder": "@global.tap_and_type", + "number_input": "true" }, - "_nested_name": "slider", + "_nested_name": "number_box", "_dynamicFields": { "value": [ { @@ -337,33 +328,55 @@ "0": { "_raw": [ { - "fullExpression": "changed | set_field:user_age:@local.slider", - "matchedExpression": "@local.slider", + "fullExpression": "changed | set_field: user_age: @local.number_box", + "matchedExpression": "@local.number_box", "type": "local", - "fieldName": "slider" + "fieldName": "number_box" } ], "_cleaned": [ { - "fullExpression": "changed | set_field:user_age:@local.slider", - "matchedExpression": "@local.slider", + "fullExpression": "changed | set_field: user_age: @local.number_box", + "matchedExpression": "@local.number_box", "type": "local", - "fieldName": "slider" + "fieldName": "number_box" } ] } + }, + "parameter_list": { + "placeholder": [ + { + "fullExpression": "@global.tap_and_type", + "matchedExpression": "@global.tap_and_type", + "type": "global", + "fieldName": "tap_and_type" + } + ] } }, "_dynamicDependencies": { "@fields.user_age": [ "value" ], - "@local.slider": [ + "@local.number_box": [ "action_list.0._raw", "action_list.0._cleaned" + ], + "@global.tap_and_type": [ + "parameter_list.placeholder" ] } }, + { + "type": "image", + "name": "age_image", + "value": "plh_images/survey/workshop_setup/age_image.svg", + "_translations": { + "value": {} + }, + "_nested_name": "age_image" + }, { "type": "template", "name": "nav_buttons", diff --git a/packages/app-data/sheets/template/workshop_setup_q_3.json b/packages/app-data/sheets/template/workshop_setup_q_3.json index 488d6bbaee..277f37d7a1 100644 --- a/packages/app-data/sheets/template/workshop_setup_q_3.json +++ b/packages/app-data/sheets/template/workshop_setup_q_3.json @@ -6,30 +6,23 @@ { "type": "text", "name": "text_intro", - "value": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "value": "You can do the @global.workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It is up to you!", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "_nested_name": "text_intro", "_dynamicFields": { "value": [ { - "fullExpression": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "matchedExpression": "@global.weekly_workshops", + "fullExpression": "You can do the @global.workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It is up to you!", + "matchedExpression": "@global.workshops", "type": "global", - "fieldName": "weekly_workshops" + "fieldName": "workshops" } ] }, "_dynamicDependencies": { - "@global.weekly_workshops": [ + "@global.workshops": [ "value" ] } @@ -37,16 +30,9 @@ { "type": "text", "name": "text_q_1", - "value": "How would you like to do your @global.weekly_workshops?", + "value": "How would you like to do your @global.workshops?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "parameter_list": { "style": "emphasised" @@ -55,15 +41,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "How would you like to do your @global.weekly_workshops?", - "matchedExpression": "@global.weekly_workshops", + "fullExpression": "How would you like to do your @global.workshops?", + "matchedExpression": "@global.workshops", "type": "global", - "fieldName": "weekly_workshops" + "fieldName": "workshops" } ] }, "_dynamicDependencies": { - "@global.weekly_workshops": [ + "@global.workshops": [ "value" ] } @@ -140,6 +126,16 @@ ], "_raw": "changed | set_field: workshop_path: @local.radio_group", "_cleaned": "changed | set_field: workshop_path: @local.radio_group" + }, + { + "trigger": "changed", + "action_id": "set_field", + "args": [ + "workshop_path_user_choice", + true + ], + "_raw": "changed | set_field: workshop_path_user_choice: TRUE", + "_cleaned": "changed | set_field: workshop_path_user_choice: TRUE" } ], "parameter_list": { @@ -199,30 +195,6 @@ ] } }, - { - "name": "local_do_workshops_together", - "value": "@local.radio_group===\"together\"", - "_translations": { - "value": {} - }, - "type": "set_variable", - "_nested_name": "local_do_workshops_together", - "_dynamicFields": { - "value": [ - { - "fullExpression": "@local.radio_group===\"together\"", - "matchedExpression": "@local.radio_group", - "type": "local", - "fieldName": "radio_group" - } - ] - }, - "_dynamicDependencies": { - "@local.radio_group": [ - "value" - ] - } - }, { "type": "display_group", "name": "reply_group_name", @@ -250,14 +222,38 @@ }, "_nested_name": "reply_group_name.text_q_2" }, + { + "name": "initial_group_name", + "value": "@fields.group_name", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "reply_group_name.initial_group_name", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@fields.group_name", + "matchedExpression": "@fields.group_name", + "type": "fields", + "fieldName": "group_name" + } + ] + }, + "_dynamicDependencies": { + "@fields.group_name": [ + "value" + ] + } + }, { "type": "text_box", "name": "text_box", - "value": "@fields.group_name", + "value": "@local.initial_group_name", "_translations": { "value": {} }, - "condition": "@fields.group_name != @global.group_name_default", + "condition": "@local.initial_group_name != @global.group_name_default", "parameter_list": { "placeholder": "@global.tap_and_type" }, @@ -265,21 +261,21 @@ "_dynamicFields": { "value": [ { - "fullExpression": "@fields.group_name", - "matchedExpression": "@fields.group_name", - "type": "fields", - "fieldName": "group_name" + "fullExpression": "@local.initial_group_name", + "matchedExpression": "@local.initial_group_name", + "type": "local", + "fieldName": "initial_group_name" } ], "condition": [ { - "fullExpression": "@fields.group_name != @global.group_name_default", - "matchedExpression": "@fields.group_name", - "type": "fields", - "fieldName": "group_name" + "fullExpression": "@local.initial_group_name != @global.group_name_default", + "matchedExpression": "@local.initial_group_name", + "type": "local", + "fieldName": "initial_group_name" }, { - "fullExpression": "@fields.group_name != @global.group_name_default", + "fullExpression": "@local.initial_group_name != @global.group_name_default", "matchedExpression": "@global.group_name_default", "type": "global", "fieldName": "group_name_default" @@ -297,7 +293,7 @@ } }, "_dynamicDependencies": { - "@fields.group_name": [ + "@local.initial_group_name": [ "value", "condition" ], @@ -312,7 +308,7 @@ { "type": "text_box", "name": "text_box", - "condition": "@fields.group_name == @global.group_name_default", + "condition": "@local.initial_group_name == @global.group_name_default", "parameter_list": { "placeholder": "@global.tap_and_type" }, @@ -320,13 +316,13 @@ "_dynamicFields": { "condition": [ { - "fullExpression": "@fields.group_name == @global.group_name_default", - "matchedExpression": "@fields.group_name", - "type": "fields", - "fieldName": "group_name" + "fullExpression": "@local.initial_group_name == @global.group_name_default", + "matchedExpression": "@local.initial_group_name", + "type": "local", + "fieldName": "initial_group_name" }, { - "fullExpression": "@fields.group_name == @global.group_name_default", + "fullExpression": "@local.initial_group_name == @global.group_name_default", "matchedExpression": "@global.group_name_default", "type": "global", "fieldName": "group_name_default" @@ -344,7 +340,7 @@ } }, "_dynamicDependencies": { - "@fields.group_name": [ + "@local.initial_group_name": [ "condition" ], "@global.group_name_default": [ @@ -376,16 +372,9 @@ { "type": "text", "name": "text_q_3", - "value": "Which day of the week would you like to do your @global.weekly_workshops?", + "value": "Which day of the week would you like to do your @global.workshops?", "_translations": { - "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } + "value": {} }, "parameter_list": { "style": "emphasised" @@ -394,15 +383,15 @@ "_dynamicFields": { "value": [ { - "fullExpression": "Which day of the week would you like to do your @global.weekly_workshops?", - "matchedExpression": "@global.weekly_workshops", + "fullExpression": "Which day of the week would you like to do your @global.workshops?", + "matchedExpression": "@global.workshops", "type": "global", - "fieldName": "weekly_workshops" + "fieldName": "workshops" } ] }, "_dynamicDependencies": { - "@global.weekly_workshops": [ + "@global.workshops": [ "value" ] } @@ -799,20 +788,23 @@ { "type": "text", "name": "text_group", - "value": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "value": "Great! We will unlock a new @global.workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "condition": "@local.radio_group==\"together\"", "_nested_name": "combo_box_replies.text_group", "_dynamicFields": { + "value": [ + { + "fullExpression": "Great! We will unlock a new @global.workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "@local.radio_group==\"together\"", @@ -823,6 +815,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@local.radio_group": [ "condition" ] @@ -831,20 +826,23 @@ { "type": "text", "name": "text_individual", - "value": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "value": "Great! We will unlock a new @global.workshop for you every week. This allows you to try what you learned with your family before building the next skill.", "_translations": { "value": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, "condition": "@local.radio_group==\"individual\"", "_nested_name": "combo_box_replies.text_individual", "_dynamicFields": { + "value": [ + { + "fullExpression": "Great! We will unlock a new @global.workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "matchedExpression": "@global.workshop", + "type": "global", + "fieldName": "workshop" + } + ], "condition": [ { "fullExpression": "@local.radio_group==\"individual\"", @@ -855,6 +853,9 @@ ] }, "_dynamicDependencies": { + "@global.workshop": [ + "value" + ], "@local.radio_group": [ "condition" ] @@ -967,26 +968,6 @@ "_raw": "uncompleted | set_field: group_name: `@global.group_name_default`", "_cleaned": "uncompleted | set_field: group_name: `@global.group_name_default`" }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -1114,62 +1095,6 @@ ] }, "2": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "3": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "4": { "args": { "1": [ { @@ -1197,7 +1122,7 @@ } ] }, - "5": { + "3": { "args": { "1": [ { @@ -1244,24 +1169,16 @@ "action_list.1._raw", "action_list.1._cleaned" ], - "@local.local_do_workshops_together": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", - "action_list.2._cleaned", + "action_list.2._cleaned" + ], + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" ], - "@local.workshop_start_day": [ - "action_list.4.args.1", - "action_list.4._raw", - "action_list.4._cleaned" - ], - "@local.benchmark_date": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" - ], "!@local.text_box": [ "condition" ] @@ -1292,26 +1209,6 @@ "_raw": "uncompleted | set_field: group_name: @local.text_box", "_cleaned": "uncompleted | set_field: group_name: @local.text_box" }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "set_field", @@ -1439,62 +1336,6 @@ ] }, "2": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "3": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "4": { "args": { "1": [ { @@ -1522,7 +1363,7 @@ } ] }, - "5": { + "3": { "args": { "1": [ { @@ -1570,23 +1411,15 @@ "action_list.1._cleaned", "condition" ], - "@local.local_do_workshops_together": [ + "@local.workshop_start_day": [ "action_list.2.args.1", "action_list.2._raw", - "action_list.2._cleaned", + "action_list.2._cleaned" + ], + "@local.benchmark_date": [ "action_list.3.args.1", "action_list.3._raw", "action_list.3._cleaned" - ], - "@local.workshop_start_day": [ - "action_list.4.args.1", - "action_list.4._raw", - "action_list.4._cleaned" - ], - "@local.benchmark_date": [ - "action_list.5.args.1", - "action_list.5._raw", - "action_list.5._cleaned" ] } } @@ -1641,26 +1474,6 @@ "_raw": "uncompleted | set_field: group_name: `@global.group_name_default`", "_cleaned": "uncompleted | set_field: group_name: `@global.group_name_default`" }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "emit", @@ -1748,62 +1561,6 @@ "fieldName": "group_name_default" } ] - }, - "2": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "3": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] } }, "condition": [ @@ -1824,14 +1581,6 @@ "action_list.1._raw", "action_list.1._cleaned" ], - "@local.local_do_workshops_together": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.3.args.1", - "action_list.3._raw", - "action_list.3._cleaned" - ], "!@local.text_box": [ "condition" ] @@ -1862,26 +1611,6 @@ "_raw": "uncompleted | set_field: group_name: @local.text_box", "_cleaned": "uncompleted | set_field: group_name: @local.text_box" }, - { - "trigger": "completed", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "completed | set_field: do_workshops_together: @local.local_do_workshops_together" - }, - { - "trigger": "uncompleted", - "action_id": "set_field", - "args": [ - "do_workshops_together", - "@local.local_do_workshops_together" - ], - "_raw": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "_cleaned": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together" - }, { "trigger": "completed", "action_id": "emit", @@ -1969,62 +1698,6 @@ "fieldName": "text_box" } ] - }, - "2": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "completed | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "3": { - "args": { - "1": [ - { - "fullExpression": "@local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] - }, - "_raw": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ], - "_cleaned": [ - { - "fullExpression": "uncompleted | set_field: do_workshops_together: @local.local_do_workshops_together", - "matchedExpression": "@local.local_do_workshops_together", - "type": "local", - "fieldName": "local_do_workshops_together" - } - ] } }, "condition": [ @@ -2045,14 +1718,6 @@ "action_list.1._raw", "action_list.1._cleaned", "condition" - ], - "@local.local_do_workshops_together": [ - "action_list.2.args.1", - "action_list.2._raw", - "action_list.2._cleaned", - "action_list.3.args.1", - "action_list.3._raw", - "action_list.3._cleaned" ] } } diff --git a/packages/app-data/sheets/template/workshop_task_groups_test.json b/packages/app-data/sheets/template/workshop_task_groups_test.json new file mode 100644 index 0000000000..5329d457de --- /dev/null +++ b/packages/app-data/sheets/template/workshop_task_groups_test.json @@ -0,0 +1,1130 @@ +{ + "flow_type": "template", + "flow_name": "workshop_task_groups_test", + "status": "released", + "rows": [ + { + "type": "items", + "value": "@data.workshop", + "rows": [ + { + "name": "workshop_id", + "value": "@item.id", + "_translations": { + "value": {} + }, + "type": "set_variable", + "_nested_name": "items.workshop_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ] + } + }, + { + "type": "title", + "name": "title_@item.id", + "value": "@item.title", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "_nested_name": "items.title_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "title_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "_nested_name": [ + { + "fullExpression": "items.title_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ] + } + }, + { + "name": "tasks", + "value": "_tasks", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.tasks" + }, + { + "name": "task_groups", + "value": "_task_gs", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.task_groups" + }, + { + "name": "workshop_task_groups", + "value": "@item.id@local.task_groups", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.workshop_task_groups", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id@local.task_groups", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id@local.task_groups", + "matchedExpression": "@local.task_groups", + "type": "local", + "fieldName": "task_groups" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@local.task_groups": [ + "value" + ] + } + }, + { + "name": "workshop_tasks", + "value": "@item.id@local.tasks", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.workshop_tasks", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id@local.tasks", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "@item.id@local.tasks", + "matchedExpression": "@local.tasks", + "type": "local", + "fieldName": "tasks" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@local.tasks": [ + "value" + ] + } + }, + { + "type": "display_group", + "name": "dg_@item.id", + "exclude_from_translation": true, + "rows": [ + { + "type": "display_group", + "name": "dg_1_@item.id", + "parameter_list": { + "style": "column" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "items", + "value": "@data.@local.workshop_task_groups", + "parameter_list": { + "filter": "@item.individual", + "sort": "priority" + }, + "exclude_from_translation": true, + "rows": [ + { + "name": "task_group_id", + "value": "@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.dg_@item.id.dg_1_@item.id.items.task_group_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.task_group_id", + "matchedExpression": "@item.id.dg_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.task_group_id", + "matchedExpression": "@item.id.items.task_group_id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@item.id.dg_1_": [ + "_nested_name" + ], + "@item.id.items.task_group_id": [ + "_nested_name" + ] + } + }, + { + "type": "button", + "name": "text_ind_@item.id", + "value": "@item.title - S", + "_translations": { + "value": {} + }, + "condition": "@item.has_single_task", + "exclude_from_translation": true, + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@item.template" + ], + "_raw": "click | go_to: @item.template", + "_cleaned": "click | go_to: @item.template" + } + ], + "_nested_name": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_ind_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title - S", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "condition": [ + { + "fullExpression": "@item.has_single_task", + "matchedExpression": "@item.has_single_task", + "type": "item", + "fieldName": "has_single_task" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + } + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id.dg_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id.items.text_ind_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ], + "@item.has_single_task": [ + "condition" + ], + "@item.template": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@item.id.dg_1_": [ + "_nested_name" + ], + "@item.id.items.text_ind_": [ + "_nested_name" + ] + } + }, + { + "type": "button", + "name": "text_ind_@item.id", + "value": "@item.title - M", + "_translations": { + "value": {} + }, + "condition": "!@item.has_single_task", + "exclude_from_translation": true, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + false + ], + "_raw": "click | set_field: do_this_workshop_together: false", + "_cleaned": "click | set_field: do_this_workshop_together: false" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_workshop", + "@local.workshop_id" + ], + "_raw": "click | set_field: current_workshop: @local.workshop_id", + "_cleaned": "click | set_field: current_workshop: @local.workshop_id" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_task_group", + "@local.task_group_id" + ], + "_raw": "click | set_field: current_task_group: @local.task_group_id", + "_cleaned": "click | set_field: current_task_group: @local.task_group_id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "task_group_pair" + ], + "_raw": "click | go_to: task_group_pair", + "_cleaned": "click | go_to: task_group_pair" + } + ], + "_nested_name": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_ind_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title - M", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "condition": [ + { + "fullExpression": "!@item.has_single_task", + "matchedExpression": "!@item.has_single_task", + "type": "item", + "fieldName": "has_single_task" + } + ], + "action_list": { + "1": { + "args": { + "1": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "2": { + "args": { + "1": [ + { + "fullExpression": "@local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ] + } + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id.dg_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id.items.text_ind_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items.text_ind_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ], + "!@item.has_single_task": [ + "condition" + ], + "@local.workshop_id": [ + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.task_group_id": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@item.id.dg_1_": [ + "_nested_name" + ], + "@item.id.items.text_ind_": [ + "_nested_name" + ] + } + } + ], + "name": "items", + "_nested_name": "items.dg_@item.id.dg_1_@item.id.items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.workshop_task_groups", + "matchedExpression": "@local.workshop_task_groups", + "type": "local", + "fieldName": "workshop_task_groups" + } + ], + "parameter_list": { + "filter": [ + { + "fullExpression": "@item.individual", + "matchedExpression": "@item.individual", + "type": "item", + "fieldName": "individual" + } + ] + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items", + "matchedExpression": "@item.id.dg_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id.items", + "matchedExpression": "@item.id.items", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_task_groups": [ + "value" + ], + "@item.individual": [ + "parameter_list.filter" + ], + "@item.id.dg_1_": [ + "_nested_name" + ], + "@item.id.items": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.dg_@item.id.dg_1_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id", + "matchedExpression": "@item.id.dg_1_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_1_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.id.dg_1_": [ + "_nested_name" + ] + } + }, + { + "type": "display_group", + "name": "dg_2_@item.id", + "parameter_list": { + "style": "column" + }, + "exclude_from_translation": true, + "rows": [ + { + "type": "items", + "value": "@data.@local.workshop_task_groups", + "parameter_list": { + "filter": "@item.together", + "sort": "priority" + }, + "exclude_from_translation": true, + "rows": [ + { + "name": "task_group_id", + "value": "@item.id", + "_translations": { + "value": {} + }, + "exclude_from_translation": true, + "type": "set_variable", + "_nested_name": "items.dg_@item.id.dg_2_@item.id.items.task_group_id", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.task_group_id", + "matchedExpression": "@item.id.dg_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.task_group_id", + "matchedExpression": "@item.id.items.task_group_id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "value" + ], + "@item.id.dg_2_": [ + "_nested_name" + ], + "@item.id.items.task_group_id": [ + "_nested_name" + ] + } + }, + { + "type": "button", + "name": "text_tog_@item.id", + "value": "@item.title - S", + "_translations": { + "value": {} + }, + "condition": "@item.has_single_task", + "exclude_from_translation": true, + "action_list": [ + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "@item.template" + ], + "_raw": "click | go_to: @item.template", + "_cleaned": "click | go_to: @item.template" + } + ], + "_nested_name": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_tog_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title - S", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "condition": [ + { + "fullExpression": "@item.has_single_task", + "matchedExpression": "@item.has_single_task", + "type": "item", + "fieldName": "has_single_task" + } + ], + "action_list": { + "0": { + "args": { + "0": [ + { + "fullExpression": "@item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ], + "_cleaned": [ + { + "fullExpression": "click | go_to: @item.template", + "matchedExpression": "@item.template", + "type": "item", + "fieldName": "template" + } + ] + } + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id.dg_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id.items.text_tog_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ], + "@item.has_single_task": [ + "condition" + ], + "@item.template": [ + "action_list.0.args.0", + "action_list.0._raw", + "action_list.0._cleaned" + ], + "@item.id.dg_2_": [ + "_nested_name" + ], + "@item.id.items.text_tog_": [ + "_nested_name" + ] + } + }, + { + "type": "button", + "name": "text_tog_@item.id", + "value": "@item.title - M", + "_translations": { + "value": {} + }, + "condition": "!@item.has_single_task", + "exclude_from_translation": true, + "action_list": [ + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "do_this_workshop_together", + true + ], + "_raw": "click | set_field: do_this_workshop_together: true", + "_cleaned": "click | set_field: do_this_workshop_together: true" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_workshop", + "@local.workshop_id" + ], + "_raw": "click | set_field: current_workshop: @local.workshop_id", + "_cleaned": "click | set_field: current_workshop: @local.workshop_id" + }, + { + "trigger": "click", + "action_id": "set_field", + "args": [ + "current_task_group", + "@local.task_group_id" + ], + "_raw": "click | set_field: current_task_group: @local.task_group_id", + "_cleaned": "click | set_field: current_task_group: @local.task_group_id" + }, + { + "trigger": "click", + "action_id": "go_to", + "args": [ + "task_group_pair" + ], + "_raw": "click | go_to: task_group_pair", + "_cleaned": "click | go_to: task_group_pair" + } + ], + "_nested_name": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "text_tog_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "value": [ + { + "fullExpression": "@item.title - M", + "matchedExpression": "@item.title", + "type": "item", + "fieldName": "title" + } + ], + "condition": [ + { + "fullExpression": "!@item.has_single_task", + "matchedExpression": "!@item.has_single_task", + "type": "item", + "fieldName": "has_single_task" + } + ], + "action_list": { + "1": { + "args": { + "1": [ + { + "fullExpression": "@local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_workshop: @local.workshop_id", + "matchedExpression": "@local.workshop_id", + "type": "local", + "fieldName": "workshop_id" + } + ] + }, + "2": { + "args": { + "1": [ + { + "fullExpression": "@local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ] + }, + "_raw": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ], + "_cleaned": [ + { + "fullExpression": "click | set_field: current_task_group: @local.task_group_id", + "matchedExpression": "@local.task_group_id", + "type": "local", + "fieldName": "task_group_id" + } + ] + } + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id.dg_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id.items.text_tog_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items.text_tog_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.title": [ + "value" + ], + "!@item.has_single_task": [ + "condition" + ], + "@local.workshop_id": [ + "action_list.1.args.1", + "action_list.1._raw", + "action_list.1._cleaned" + ], + "@local.task_group_id": [ + "action_list.2.args.1", + "action_list.2._raw", + "action_list.2._cleaned" + ], + "@item.id.dg_2_": [ + "_nested_name" + ], + "@item.id.items.text_tog_": [ + "_nested_name" + ] + } + } + ], + "name": "items", + "_nested_name": "items.dg_@item.id.dg_2_@item.id.items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.@local.workshop_task_groups", + "matchedExpression": "@local.workshop_task_groups", + "type": "local", + "fieldName": "workshop_task_groups" + } + ], + "parameter_list": { + "filter": [ + { + "fullExpression": "@item.together", + "matchedExpression": "@item.together", + "type": "item", + "fieldName": "together" + } + ] + }, + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items", + "matchedExpression": "@item.id.dg_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id.items", + "matchedExpression": "@item.id.items", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@local.workshop_task_groups": [ + "value" + ], + "@item.together": [ + "parameter_list.filter" + ], + "@item.id.dg_2_": [ + "_nested_name" + ], + "@item.id.items": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.dg_@item.id.dg_2_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id", + "matchedExpression": "@item.id.dg_2_", + "type": "item", + "fieldName": "id" + }, + { + "fullExpression": "items.dg_@item.id.dg_2_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ], + "@item.id.dg_2_": [ + "_nested_name" + ] + } + } + ], + "_nested_name": "items.dg_@item.id", + "_dynamicFields": { + "name": [ + { + "fullExpression": "dg_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ], + "_nested_name": [ + { + "fullExpression": "items.dg_@item.id", + "matchedExpression": "@item.id", + "type": "item", + "fieldName": "id" + } + ] + }, + "_dynamicDependencies": { + "@item.id": [ + "name", + "_nested_name" + ] + } + } + ], + "name": "items", + "_nested_name": "items", + "_dynamicFields": { + "value": [ + { + "fullExpression": "@data.workshop", + "matchedExpression": "@data.workshop", + "type": "data", + "fieldName": "workshop" + } + ] + }, + "_dynamicDependencies": { + "@data.workshop": [ + "value" + ] + } + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_tasks_testing_templates.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/debug/debug_tour.json b/packages/app-data/sheets/tour/debug/debug_tour.json deleted file mode 100644 index a99040d775..0000000000 --- a/packages/app-data/sheets/tour/debug/debug_tour.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "flow_type": "tour", - "flow_name": "debug_tour", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "step", - "title": "Start of tour", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "This will navigate to the example_tour_template_1 and highlight the title_1 template component", - "template_component_name": "title_1", - "route": "template/example_tour_template_1", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Element example", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "The element column allows for my advanced/specific highlight selection (in rare cases where not created by a template row)", - "element": "plh-main-header", - "route": "template/example_tour_template_1", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Template example", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "The next step will render a template instead of a message", - "route": "template/example_tour_template_1" - }, - { - "type": "step", - "title": "Template example", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "This message will not be shown as a message_template is included", - "message_template": "example_tour_template_1", - "route": "template/example_tour_template_1", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Navigation example", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "The next step will navigate to the home_screen to continue the tour", - "route": "template/example_tour_template_1", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Title 1", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  Text

                                                                                                                                                                                  ", - "route": "template/home_screen", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Title 2", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  global: @global.parent_app

                                                                                                                                                                                  \n

                                                                                                                                                                                  data: @data.example.example1.text

                                                                                                                                                                                  ", - "template_component_name": "tile_weekly_workshops", - "route": "template/home_screen", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Title 3", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  Text

                                                                                                                                                                                  ", - "template_component_name": "quick_start_weekly_workshops", - "route": "template/home_screen", - "exclude_from_translation": true - }, - { - "type": "step", - "title": "Navigation example 2", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "This will navigate to same page as start\n(TODO - provide 'back' nav function)", - "route": "template/example_tour_template_1", - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_tour.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/debug/debug_tour_var_hyphen.json b/packages/app-data/sheets/tour/debug/debug_tour_var_hyphen.json deleted file mode 100644 index ebba2315ce..0000000000 --- a/packages/app-data/sheets/tour/debug/debug_tour_var_hyphen.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "flow_type": "tour", - "flow_name": "debug_tour_var_hyphen", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "step", - "title": "@global.parent_app-based learning", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  Does not work in gb_en

                                                                                                                                                                                  ", - "route": "template/debug_var_hyphen" - }, - { - "type": "step", - "title": "Your @global.parent_app Code", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  Works in gb_en, not in za_af

                                                                                                                                                                                  ", - "route": "template/debug_var_hyphen" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_global.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/debug/example_lang_tour.json b/packages/app-data/sheets/tour/debug/example_lang_tour.json deleted file mode 100644 index de617ee17e..0000000000 --- a/packages/app-data/sheets/tour/debug/example_lang_tour.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "flow_type": "tour", - "flow_name": "example_lang_tour", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "step", - "title": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", - "_translations": { - "title": { - "es_sp": true - }, - "message_text": { - "es_sp": true - } - }, - "message_text": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", - "route": "template/example_lang_template_1" - }, - { - "type": "step", - "title": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", - "_translations": { - "title": { - "es_sp": true - }, - "message_text": { - "es_sp": true - } - }, - "message_text": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", - "route": "template/example_lang_template_2" - }, - { - "type": "step", - "title": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", - "_translations": { - "title": { - "es_sp": true - }, - "message_text": { - "es_sp": true - } - }, - "message_text": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", - "template_component_name": "combo_box", - "route": "template/example_lang_template_1" - }, - { - "type": "step", - "title": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", - "_translations": { - "title": { - "es_sp": true - }, - "message_text": { - "es_sp": true - } - }, - "message_text": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", - "template_component_name": "button_1", - "route": "template/example_lang_template_1" - }, - { - "type": "step", - "title": "

                                                                                                                                                                                  Step without translation

                                                                                                                                                                                  ", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "

                                                                                                                                                                                  This step in the tour should not be translated as the exclude_from_translation column is TRUE.

                                                                                                                                                                                  ", - "route": "template/example_lang_template_1", - "exclude_from_translation": true - } - ], - "_xlsxPath": "quality_assurance/example_templates/example_languages.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/debug/example_tour_templates.json b/packages/app-data/sheets/tour/debug/example_tour_templates.json deleted file mode 100644 index 27a6aa49b8..0000000000 --- a/packages/app-data/sheets/tour/debug/example_tour_templates.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "flow_type": "tour", - "flow_name": "example_tour_templates", - "status": "released", - "flow_subtype": "debug", - "rows": [ - { - "type": "step", - "title": "Title 1", - "_translations": { - "title": {} - }, - "message_template": "example_tour_template_1" - }, - { - "type": "step", - "title": "Title 2", - "_translations": { - "title": {}, - "message_text": {} - }, - "message_text": "This is regular text" - } - ], - "_xlsxPath": "quality_assurance/debug_templates/debug_tour.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/home_screen_modular_tour_intro.json b/packages/app-data/sheets/tour/home_screen_modular_tour_intro.json new file mode 100644 index 0000000000..3b77da74be --- /dev/null +++ b/packages/app-data/sheets/tour/home_screen_modular_tour_intro.json @@ -0,0 +1,154 @@ +{ + "flow_type": "tour", + "flow_name": "home_screen_modular_tour_intro", + "status": "released", + "rows": [ + { + "type": "step", + "title": "Welcome to @global.parent_app", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "message_text": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "This big button takes you to the @global.workshop you are currently exploring. Tap this to find:", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_highlighted_module", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "A set of activities to help you build a parenting skill.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_full_module", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "Quick reminders on how to successfully use a parenting skill.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_card_tools", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "One easy idea on how you can apply a new skill with your family.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_card_hp", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "Here you can select any of the other @global.workshops in @global.parent_app. Each @global.workshop gives you one important parenting skill. Swipe to see the next @global.workshops.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_all_modules", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "You can explore any @global.workshop whenever you want. To see the biggest change in your family, complete all the activities in one @global.workshop before moving to the next one.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_all_modules", + "route": "template/home_screen" + }, + { + "type": "step", + "title": "Things to do", + "_translations": { + "title": { + "tz_sw": true + }, + "message_text": { + "tz_sw": true + } + }, + "message_text": "Tap here whenever you enter @global.parent_app! You will find 3 short activities that you can do next to help yourself and your family.", + "template_component_name": "dg_drawer", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "The HOUSE button brings you back to the home screen at any time.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "The STAR button takes you to the @global.parent_points. Each new parenting skill comes with a @global.parent_point. @global.parent_points help you celebrate your achievements.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/parent_points" + }, + { + "type": "step", + "message_text": "Tap the BOOK button to go to the @global.parent_centre. Check out the extra relaxation activities and ideas for fun things to do with your teen! You can also find contact details for support services in your area and for technical support with @global.parent_app.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/parent_centre" + }, + { + "type": "step", + "message_text": "Have a look around! Wherever you start, just the fact you are here shows you care.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "route": "template/home_screen" + } + ], + "_xlsxPath": "global_modular/tours/home_screen_modular_tour.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/home_screen_modular_tour_menu.json b/packages/app-data/sheets/tour/home_screen_modular_tour_menu.json new file mode 100644 index 0000000000..e4b264cb4d --- /dev/null +++ b/packages/app-data/sheets/tour/home_screen_modular_tour_menu.json @@ -0,0 +1,122 @@ +{ + "flow_type": "tour", + "flow_name": "home_screen_modular_tour_menu", + "status": "released", + "rows": [ + { + "type": "step", + "message_text": "This big button takes you to the @global.workshop you are currently exploring. Tap it to find:", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_highlighted_module", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "A set of activities to help you build a parenting skill.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_full_module", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "Quick reminders on how to successfully use a parenting skill.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_card_tools", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "One easy idea on how you can apply a new skill with your family.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_card_hp", + "route": "template/module_overview" + }, + { + "type": "step", + "message_text": "Here you can select any of the other @global.workshops in @global.parent_app. Each @global.workshop gives you one important parenting skill. Swipe to see the next @global.workshops.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_all_modules", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "You can explore any @global.workshop whenever you want. To see the biggest change in your family, complete all the activities in one @global.workshop before moving to the next one.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "dg_all_modules", + "route": "template/home_screen" + }, + { + "type": "step", + "title": "Things to do", + "_translations": { + "title": { + "tz_sw": true + }, + "message_text": { + "tz_sw": true + } + }, + "message_text": "Tap here whenever you enter @global.parent_app! You will find 3 short activities that you can do next to help yourself and your family.", + "template_component_name": "dg_drawer", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "The HOUSE button brings you back to the home screen at any time.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "The STAR button takes you to the @global.parent_points. Each new parenting skill comes with a @global.parent_point. @global.parent_points help you celebrate your achievements.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/parent_points" + }, + { + "type": "step", + "message_text": "Tap the BOOK button to go to the @global.parent_centre. Check out the extra relaxation activities and ideas for fun things to do with your teen! You can also find contact details for support services in your area and for technical support with @global.parent_app.", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "element": "plh-navigation-bar", + "route": "template/parent_centre" + } + ], + "_xlsxPath": "global_modular/tours/home_screen_modular_tour.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/home_screen_tour_intro.json b/packages/app-data/sheets/tour/home_screen_tour_intro.json new file mode 100644 index 0000000000..36f001300d --- /dev/null +++ b/packages/app-data/sheets/tour/home_screen_tour_intro.json @@ -0,0 +1,132 @@ +{ + "flow_type": "tour", + "flow_name": "home_screen_tour_intro", + "status": "released", + "rows": [ + { + "type": "step", + "title": "Welcome to @global.parent_app", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "message_text": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Each week you will unlock a new @global.workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  The round button appears when a new @global.workshop is ready for you.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_points", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_points", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Find lots of helpful resources in the @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can get instant access to the Essential Tools from all @global.weekly_workshops.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_parent_centre", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_centre", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "route": "template/home_screen" + } + ], + "_xlsxPath": "global/tours/home_screen_tour.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/home_screen_tour_menu.json b/packages/app-data/sheets/tour/home_screen_tour_menu.json new file mode 100644 index 0000000000..095ebaf35b --- /dev/null +++ b/packages/app-data/sheets/tour/home_screen_tour_menu.json @@ -0,0 +1,110 @@ +{ + "flow_type": "tour", + "flow_name": "home_screen_tour_menu", + "status": "released", + "rows": [ + { + "type": "step", + "message_text": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Each week you will unlock a new @global.workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  The round button appears when a new @global.workshop is ready for you.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_weekly_workshops", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_points", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_points", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Find lots of helpful resources in the @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can get instant access to the Essential Tools from all @global.weekly_workshops.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true + } + }, + "template_component_name": "tile_parent_centre", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "template_component_name": "tile_parent_centre", + "route": "template/home_screen" + }, + { + "type": "step", + "message_text": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "_translations": { + "message_text": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "route": "template/home_screen" + } + ], + "_xlsxPath": "global/tours/home_screen_tour.xlsx" +} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/intro_tour.json b/packages/app-data/sheets/tour/intro_tour.json deleted file mode 100644 index d74c2065b9..0000000000 --- a/packages/app-data/sheets/tour/intro_tour.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "flow_type": "tour", - "flow_name": "intro_tour", - "status": "released", - "rows": [ - { - "type": "step", - "title": "Welcome to @global.parent_app", - "_translations": { - "title": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - }, - "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "message_text": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "template_component_name": "home_screen", - "route": "template/home_screen" - }, - { - "type": "step", - "title": "@global.weekly_workshops", - "_translations": { - "title": {}, - "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "message_text": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "template_component_name": "tile_weekly_workshops", - "route": "template/home_screen" - }, - { - "type": "step", - "message_text": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "_translations": { - "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "template_component_name": "tile_weekly_workshops", - "route": "template/home_screen" - }, - { - "type": "step", - "title": "@global.parent_points", - "_translations": { - "title": {}, - "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "message_text": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "template_component_name": "tile_parent_points", - "route": "template/home_screen" - }, - { - "type": "step", - "title": "@global.parent_centre", - "_translations": { - "title": {}, - "message_text": { - "tz_sw": true, - "za_st": true, - "za_zu": true - } - }, - "message_text": "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ", - "template_component_name": "tile_parent_centre", - "route": "template/home_screen" - }, - { - "type": "step", - "message_text": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "_translations": { - "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true - } - }, - "route": "template/home_screen" - } - ], - "_xlsxPath": "global/tutorials/home_screen_tour.xlsx" -} \ No newline at end of file diff --git a/packages/app-data/sheets/tour/weekly_workshop_options_tour.json b/packages/app-data/sheets/tour/weekly_workshop_options_tour.json index 5ffbe2235d..976419c0b1 100644 --- a/packages/app-data/sheets/tour/weekly_workshop_options_tour.json +++ b/packages/app-data/sheets/tour/weekly_workshop_options_tour.json @@ -59,15 +59,10 @@ "_translations": { "title": {}, "message_text": { - "tz_sw": true, - "za_af": true, - "za_st": true, - "za_tn": true, - "za_xh": true, - "za_zu": true + "tz_sw": true } }, - "message_text": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", + "message_text": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your @global.workshop settings.

                                                                                                                                                                                  ", "route": "template/workshop_options_page" }, { @@ -151,5 +146,5 @@ "route": "template/workshop_options_page" } ], - "_xlsxPath": "global/tutorials/weekly_workshops_tour.xlsx" + "_xlsxPath": "global/tours/weekly_workshops_tour.xlsx" } \ No newline at end of file diff --git a/packages/app-data/test/index.ts b/packages/app-data/test/index.ts deleted file mode 100644 index f08e105d39..0000000000 --- a/packages/app-data/test/index.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { DB_TABLES, DB_VERSION } from "data-models/db.model"; -import { SHEETS_CONTENT_LIST } from "../sheets"; -const template = Object.values(SHEETS_CONTENT_LIST.template); - -/** List of template flow subtypes to test */ -const TEST_FLOW_SUBTYPES = ["debug"]; - -/** List of additional template names to test */ -const ADDITIONAL_TEMPLATE_NAMES = ["home_screen", "weekly_workshops"]; - -/** List of template names to skip */ -const SKIPPED_TEMPLATE_NAMES = []; - -/** Default time spent waiting to ensure page elements rendered fully */ -const PAGE_WAIT_DEFAULT = 1000; - -/** Default viewport height used for test, in pixels */ -const PAGE_WIDTH_DEFAULT = 360; - -/** Default viewport width used for test, in pixels */ -const PAGE_HEIGHT_DEFAULT = 1280; - -/** Custom wait times for pages that require longer loading */ -const PAGE_WAIT_OVERRIDES = { - example_lang_template_1: 2000, - debug_advanced_dashed_box_1: 2000, - home_screen: 2000, - example_calc_2: 2000, -}; - -/** Custom overrides to set height for larger pages, in pixels */ -const PAGE_HEIGHT_OVERRIDES = { - example_lang_template_1: 3600, -}; - -/** Combined list of templates to test and map properties */ -const VISUAL_TEST_TEMPLATE_LIST = template - .filter((t) => { - if (SKIPPED_TEMPLATE_NAMES.includes(t.flow_name)) return false; - if (ADDITIONAL_TEMPLATE_NAMES.includes(t.flow_name)) return true; - if (TEST_FLOW_SUBTYPES.includes(t.flow_subtype)) return true; - return false; - }) - .map((t) => ({ - name: t.flow_name, - url: `template/${t.flow_name}`, - selector: `plh-template-container[data-templatename="${t.flow_name}"]`, - pageWait: PAGE_WAIT_OVERRIDES[t.flow_name] || PAGE_WAIT_DEFAULT, - width: PAGE_WIDTH_DEFAULT, - height: PAGE_HEIGHT_OVERRIDES[t.flow_name] || PAGE_HEIGHT_DEFAULT, - })); - -/** Main export for use in test runner */ -export const VISUAL_TEST_CONFIG = { - localStorageFields: { _app_language: "za_en", name: "test default user" }, - dexieConfig: { - version: DB_VERSION, - tableSchema: DB_TABLES, - data: { - user_meta: [{ key: "first_app_open", value: "2021-09-02" }], - }, - }, - pageDefaults: { - width: PAGE_WIDTH_DEFAULT, - height: PAGE_HEIGHT_DEFAULT, - // TODO - allow passing function to calculate resize - // e.g. https://stackoverflow.com/questions/61886891/how-to-get-maximum-scroll-height-for-ion-content - }, - pageList: VISUAL_TEST_TEMPLATE_LIST, - appServerUrl: "http://localhost:4200", -} as const; diff --git a/packages/app-data/translations/contents.json b/packages/app-data/translations/contents.json new file mode 100644 index 0000000000..bcc6417f12 --- /dev/null +++ b/packages/app-data/translations/contents.json @@ -0,0 +1,20 @@ +{ + "tz_sw": { + "filename": "tz_sw/strings.json" + }, + "za_af": { + "filename": "za_af/strings.json" + }, + "za_st": { + "filename": "za_st/strings.json" + }, + "za_tn": { + "filename": "za_tn/strings.json" + }, + "za_xh": { + "filename": "za_xh/strings.json" + }, + "za_zu": { + "filename": "za_zu/strings.json" + } +} \ No newline at end of file diff --git a/packages/app-data/translations/es_sp/strings.json b/packages/app-data/translations/es_sp/strings.json deleted file mode 100644 index 343edc240c..0000000000 --- a/packages/app-data/translations/es_sp/strings.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "Example Language Template": "Plantilla de Ejemplo de Idioma", - "This is a default text that needs to be translated": "Esto es un texto predeterminado que necesita ser traducido", - "How are you feeling today?": "¿Cómo te sientes hoy?", - "This is the default reply if the feeling response is happy, the first option.": "Esta es la respuesta predeterminada si la respuesta es contento, la primera opción.", - "This is the default reply if the feeling response is ok, the second option.": "Esta es la respuesta predeterminada si la respuesta es normal, la segunda opción.", - "This is the default reply if the feeling response is sad, the third option.": "Esta es la respuesta predeterminada si la respuesta es triste, la tercer opción.", - "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.": "El campo determinado por medio del grupo radial es @local.radio_group_field_name y su valor es @fields.@local.radio_group_field_name.", - "Select one of the following options:": "Selecciona una de las siguientes opciones:", - "This is the first default option for the combo box": "Esta es la primera opción de la caja de combinaciones", - "This is the second default option for the combo box": "Esta es la segunda opción de la caja de combinaciones", - "This is the third default option for the combo box": "Esta es la tercer opción de la caja de combinaciones", - "The option selected was @local.combo_box.": "La opción seleccionada fue @local.combo_box.", - "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.": "El campo determinado por medio de la caja de combinaciones es @local.combo_box_field_name y su valor es @fields.@local.combo_box_field_name.", - "This is a modified text that needs to be translated.\n\nThis is a nested text.": "Este es un texto modificado que necesita ser traducido.\n\nEste es un texto anidado.", - "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.": "Esta es la respuesta modificada si la respuesta es alegre, la primera opción.\n\nEste es un texto anidado.", - "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.": "Esta es la respuesta modificada si la respuesta es normal, la segunda opción.\n\nEste es un texto anidado.", - "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.": "Esta es la respuesta modificada si la respuesta es triste, la tercer opción.\n\nEste es un texto anidado.", - "Which of the following do you like the most (this is modified)?": "¿Cuál de los siguientes te gusta más? (esto está modificado)?", - "Cats (modified text in answer list)": "Gatos (texto modificado en la lista de respuestas)", - "Dogs (modified text in answer list)": "Perros (texto modificado en la lista de respuestas)", - "Chinchillas (modified text in answer list)": "Chinchillas (texto modificado en la lista de respuestas)", - "Value of the first debug variable": "Valor de la primera variable debug", - "Title: @global.debug_variable_1": "Título: @global.debug_variable_1", - "Text: @global.debug_variable_1": "Texto: @global.debug_variable_1", - "This is a global variable set in a global": "Esta es una variable global determinada en una planilla global", - "This is a field set by default": "Este es un campo con valor predeterminado", - "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Plantilla estandar

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Esta es una planilla estandar que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Plantilla Anidada

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Esta es una planilla anidada que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción. Esto nos permitirá verificar que el sistema multilingual funciona cuando se anida.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Componente para traducir

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Este es un ejemplo de un componente que requiere ser traducido: el marcador de posición u la opción seleccionada deben ser traducidos

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Component que no debe ser traducido

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Este es un ejemplo de un componente que esta excluído de la traducción. El texto del botón debería mantenerse como Pop-up 1.

                                                                                                                                                                                  ", - "Example Data List Title 1": "Ejemplo 1 de Título de Listado de Datos", - "This text is loaded through the first data row.": "Este texto esta cargado por medio de la primera fila de datos.", - "Example Data List Title 2": "Ejemplo 2 de Título de Listado de Datos", - "This text is loaded through the second data row.": "Este texto esta cargado por medio de la segunda fila de datos.", - "This text should define a default value for a field": "Este texto debería definir el valor predeterminado de un campo", - "happy": "contento", - "ok": "bien", - "sad": "triste", - "awesome parent": "Padre asombroso", - "Audio message": "Mensaje de audio", - "@global.language_global_1: \"text\"": "@global.language_global_1: \"texto\"", - "@global.language_global_2: \"text\"": "@global.language_global_2: \"texto\"", - "@global.language_global_1: text": "@global.language_global_1: texto", - "@global.language_global_2: text": "@global.language_global_2: texto" -} \ No newline at end of file diff --git a/packages/app-data/translations/index.ts b/packages/app-data/translations/index.ts deleted file mode 100644 index 9ce0babda8..0000000000 --- a/packages/app-data/translations/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -type ITranslationContents = { [language_code: string]: { filename: string } }; -export const TRANSLATIONS_CONTENT_LIST: ITranslationContents = { - es_sp: { - filename: "es_sp/strings.json", - }, - tz_sw: { - filename: "tz_sw/strings.json", - }, - za_af: { - filename: "za_af/strings.json", - }, - za_st: { - filename: "za_st/strings.json", - }, - za_tn: { - filename: "za_tn/strings.json", - }, - za_xh: { - filename: "za_xh/strings.json", - }, - za_zu: { - filename: "za_zu/strings.json", - }, -}; diff --git a/packages/app-data/translations/tz_sw/strings.json b/packages/app-data/translations/tz_sw/strings.json index 6dbf835a60..3807580f0f 100644 --- a/packages/app-data/translations/tz_sw/strings.json +++ b/packages/app-data/translations/tz_sw/strings.json @@ -1,326 +1,520 @@ { - "Home Practice": "Zoezi la Nyumbani", - "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Matendo madogo, matokeo makubwa! Wazazi wanaofanyia kazi mazoezi ya nyumbani waliyopata kwenye warsha hupata matokeo mazuri zaidi.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Wiki ijayo, utashirikisha kikundi chako jinsi gani zoezi la nyumbani lilivyoenda. Pia mnaweza kusaidiana na kukumbushana na wengine wiki hii.", - "How did it go?": "Je, liliendaje?", - "talk to their teens about how they feel": "kuzungumza na vijana wao kuhusu wanavyohisi", - "talk to your teen about how you feel": "kuzungumza na kijana wako kuhusu unavyohisi", - "Did you experience any challenges when trying to @local.hp_description_second_singular?": "Je, ulikumbana na changamoto zozote ulipojaribu @local.hp_description_second_singular?", - "What was difficult for you when trying to @local.hp_description_second_singular?": "Je, jambo gani lilikuwia gumu ulipojaribu @local.hp_description_second_singular?", - "Sorry we missed this!": "Samahani, hatukuiona hii!", - "Do you want to share it with us?": "Je, ungependa kutushirikisha na sisi?", - "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.": "Asante kwa kutushirikisha changamoto yako! Tutatumia mrejesho huu ili kuboresha @global.parent_app.", - "Sorry to hear the tips did not help you.": "Tunasikitika kusikia kuwa vidokezo hivi havikukusaidia.", - "Do you want to share with us what you think would help you?": "Je, unataka kutushirikisha kitu gani unafikiri kingekusaidia?", - "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Asante sana kwa kushirikisha! Wewe ni mzazi mzuri sana kwa kujaribu kutumia muda wa pamoja na kijana wako. Kufanya hivi kunaleta mabadiliko. Endelea na kazi nzuri, na kumbuka, niko hapa kusaidia!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Hapa kuna ujuzi wa kujichukulia kwa wiki hii!\nutumie nyumbani na unaweza kuupata wakati wowote kwene maktaba ya mzazi @global.parent_centre.", - "Relax Together": "Chukua Pumziko Pamoja", - "Relax": "Chukua pumziko", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Hebu tufanye shughuli moja fupi ya kuchukua pumziko- itachukua chini ya dakika 1 na utajiskia vizuri zaidi.", - "Add this activity to @global.my_relaxes": "Ongeza shughuli hii kwenye @global.my_relaxes", - "Listen and relax": "Sikiliza na chukua pumziko", - "Read and relax": "Soma na chukua pumziko", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufanya uwe na furaha. Halafu vuta pumzi ndefu ili kujisikia vizuri.", - "Welcome @fields.user_name": "Karibu @fields.user_name", - "It's great to see you again!": "Tunafurahi sana kukuona tena!", - "Let's see how this week has been.": "Ngoja tuone wiki hii imeendaje.", - "This week you have done...": "Wiki hii ulifanya...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Unaonyesha kujitoa kwa dhati kama mzazi na kujithamini wewe mwenyewe.\n\nWewe ni mtu mzuri sana.", - "Watch Together": "Angalia Pamoja", - "Let's watch a video together!": "Hebu tuangalie video pamoja!", - "Watch": "Angalia", - "Let's watch a video!": "Ngoja tuangalie video!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Tunafurahi kuwaona tena! Hebu tuanze na wimbo wa familia popote zilipo.", - "Let's Slow Down": "Twende polepole", - "You’ve completed this week’s workshop.": "Umemaliza kipindi cha wiki hii.", - "See you soon.": "Tutaonana baadaye kidogo.", - "Talk Together": "Zungumza Pamoja", - "Share ideas, support each other!": "Shirikishana mawazo, saidiana kila mmoja!", - "Try it Together": "Jaribuni Pamoja", - "Let's practice together.": "Tufanye mazoezi pamoja.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Zoezi la nyumbani husaidia kuboresha maisha ya familia zetu kuwa mazuri zaidi. Lakini mara nyingi huleta changamoto.\n\nNgoja tushirikishane mafanikio na changamoto zetu, na kusaidiana kupata mawazo mapya ya kujaribu!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", - "Discussion example from @data.workshop.w_1on1.title": "Mfano wa majadiliano kutoka @data.workshop.w_1on1.title", - "Start Positively Together": "Anzeni Vizuri Pamoja", - "Welcome @fields.group_name": "Karibuni @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Tunafurahi kukuona tena!\n\nHebu tuanze na kukuthamini wewe.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Peaneni zamu:\n* Shirikisha wengine: Je, unajisikiaje leo?\n* Msifie mtu kwenye kikundi chako kwa jambo alilofanya vizuri wiki hii!\n\nKumbukeni kwamba bila kujali mnavyojisikia, nyinyi kuwa hapa ni jambo zuri sana. Nyote mnastahili kusifiwa.", - "Ideas from other families:": "Mawazo kutoka familia nyingine:", - "Question Time": "Muda wa Maswali", - "It's time for some questions!": "Sasa ni muda wa kuuliza maswali!", - "Listen Together": "Sikiliza Pamoja", - "Let's listen to an audio together!": "Hebu tusikilize pamoja!", - "Listen": "Sikiliza", - "Let's listen to an audio!": "Hebu tusikilize pamoja!", - "Why @local.workshop_data.title?": "Kwanini @local.workshop_data.title?", - "Hear Sbo's message": "Sikia ujumbe wa Sbo", - "Read Sbo's message": "Soma ujumbe wa Sbo", - "Today's steps": "Hatua za leo", - "Read Together": "Soma Pamoja", - "Let's read a story together!": "Hebu tusome simulizi pamoja!", - "Let's read a story!": "Tusome hadithi!", - "Think Together": "Fikiria Pamoja", - "It's time to think together!": "Sasa ni muda wa kufikiria pamoja!", - "Think": "Fikiria", - "It's time to think!": "Ni muda wa kufikiria!", - "Learn Together": "Kujifunza Pamoja", - "It's time to learn and practice together!": "Sasa ni muda wa kujifunza na kufanya mazoezi pamoja!", - "Learn": "Jifunze", - "It's time to learn and practice!": "Sasa ni muda wa kujifunza na kufanya mazoezi!", - "Customise @global.parent_app": "Rekebisha @global.parent_app", - "Give me quick parenting tips": "Nipe vidokezo vya malezi vya haraka", - "Something really bad happened": "Kitu kibaya sana kimetokea", - "I have technical problems with the app": "Nina matatizo ya kiufundi kwenye programu hii", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Utapata hapa vidokezo tunavyoona kuwa ni vya muhimu, kutokana na majibu uliyoyatoa wakati wa kurekebisha programu hii.", - "WHO Website": "Tovuti ya Shirika la Afya Duniani", - "UNICEF Website": "Tovuti ya UNICEF", - "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Malezi wakati wa UVIKO-19 ni magumu. Jisikie fahari kwa kufika mbali hivi.\n\nTunashughulikia maudhui mapya hapa ili kukusaidia kuzungumza na vijana na watoto wako kuhusu UVIKO-19.\n\nTaarifa mpya zaidi kuhusu UVIKO-19 zinapatikana kwenye tovuti za Shirika la Afya Duniani na UNICEF:", - "This button will take you to the Coronavirus section of the official WHO website.": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya Shirika la Afya Duniani.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "Anuani ya tovuti ni https://www.who.int/emergency/diseases/novel-coronavirus-2019", - "This button will take you to the Coronavirus section of the official UNICEF website.": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya UNICEF.", - "The URL is https://www.unicef.org/coronavirus/covid-19": "Anuani ya tovuti ni https://www.unicef.org/coronavirus/covid-19", - "Update my parenting experiences": "Sasisha uzoefu wangu wa malezi", - "Update my personal details": "Sasisha taarifa zangu binafsi", - "Update my workshop options": "Sasisha machaguo yangu ya kipindi", - "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Je, unapata matatizo yoyote ya kiufundi? Tujulishe ili kutusaidia kuboresha @global.parent_app!", - "Type your name (optional)": "Andika jina lako (hiari)", - "Contact me on @global.whatsapp": "Wasiliana nami kwa @global.whatsapp", - "Type your phone number": "Andika namba yako ya simu", - "Contact me via email": "Wasiliana nami kwa barua-pepe", - "Type your email address": "Andika anuani yako ya barua-pepe", - "Tell us about your issue": "Tueleze tatizo lako", - "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Mara ya kwanza mama yangu aliponiuliza kama ninataka kutumia muda pamoja naye, nilimwambia aniache kwa sababu nilikuwa katikati ya mchezo. Lakini alisisitiza kama anavyofanya kila wakati. Nilimwambia aniangalie ninavyocheza kama hicho ndicho alichokuwa anakitaka. Baada ya dakika kadhaa, alianza kuniuliza maswali kuhusu mchezo huo. Mwanzoni ilikuwa inakera, lakini baada ya muda nilifurahi kwamba hatimaye alikuwa akivutiwa na kile nilichokuwa nikikifanya. Aliweza hata kujaribu!", - "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Baba yangu aliniambia ninacheza mno mpira wa kikapu baada ya kutoka shule, kwa hiyo ni lazima tuweke sheria ya familia. Aliahidi kuwa tutafikiria suluhisho pamoja, ili sisi sote tujisikie vizuri kuhusu jambo hili. Sikuamini kuwa itawezekana lakini nikasema, \"Sawa, ngoja tujaribu\". Tulijadili na kukubaliana kuwa sheria itakuwa kwamba ninaruhusiwa kucheza mpira wa kikapu baada ya kufanya kazi ya nyumbani hadi tunapoenda kula chakula cha usiku. Inaniwia vigumu kwenda kucheza na marafiki zangu baada ya kutoka shule, kwa hiyo ninajitahidi kadri ya uwezo wangu kumaliza kwanza kazi ya nyumbani halafu ndipo ninaenda kucheza nao. Sasa hivi ninapata pia muda wote wa jioni kwa ajili ya kufanya mambo mengine, kama kutazama Ligi ya Mpira wa Kikapu ya Marekani.", - "You will find the in-week messages from the previous workshops here.": "Utapata jumbe za wiki kutoka vipindi vilivyopita hapa.", - "Start": "Anza", - "How would you like to do this workshop?": "Je, ungependa kufanyaje kipindi hiki?", - "Coming soon": "Inakuja hivi punde", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Tutahitaji kushughulikia masuala mengine ya malezi kabla ya kuanza kufanya kazi kwenye @local.workshop_data.title.\n\nUnaweza kupata nyenzo muhimu kwenye @local.workshop_data.title kupitia @global.parent_centre.", - "My name": "Jina langu", - "@global.weekly_workshop day": "Siku ya @global.weekly_workshop", - "I do the workshops...": "Ninafanya kipindi...", - "My group's name": "Jina la kikundi changu", - "My group is now doing the workshop...": "Sasa kikundi changu kinafanya kipindi...", - "I am now doing the workshop...": "Sasa ninafanya kipindi...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Je, una hakika kuwa unataka kufungua vipindi vyote? Ukishazifungua, hautaweza kuzifunga tena", - "You can always find these tools in the @global.parent_centre": "Wakati wote unaweza kupata nyenzo hizi kwenye @global.parent_centre", - "Add this activity to @global.my_activities": "Ongeza shughuli hii kwenye @global.my_activities", - "Relaxation activities": "Shughuli za kuburudisha", - "Something fun to do with your teen": "Kitu cha kufurahisha cha kufanya na kijana wako", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Bado haujaongeza shughuli zozote za kupumzika kwenye @global.my_relaxes. Kwanini usichague baadhi ya shughuli?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Bado haujaongeza shughuli zozote kwenye @global.my_activities. Kwanini usichague baadhi ya shughuli?", - "Open Survey": "Fungua Ukaguzi", - "Select Language": "Chagua Lugha", - "Workshop Options": "Machaguo ya vipindi", - "Unlock Workshops": "Fungua vipindi", - "Demo Presentation": "Video za Mfano", - "Organisation Registration": "Usajili wa Shirika", - "Developer Mode": "Njia ya Msanidi wa Programu", - "Unlock all workshops": "Fungua vipindi vyote", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Kwa kubonyeza kwenye kitufe hapa chini, utafungua vipindi vyote.\n\nANGALIZO: Watumiaji hawapaswi kutumia kitendaji hiki kufungua vipindi. Kufanya hivyo hakufai isipokuwa tu kama ni lazima.", - "Unlock workshops": "Fungua vipindi", - "All workshops are now unlocked.": "Vipindi vyote vimefunguliwa sasa.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Kwa kubofya kwenye kitufe hapo chini, utapangilia upya programu kwenye mipangilio yake ya awali.\n\nHii inamaanisha kuwa shughuli zako zote na data zilizotumiwa zitafutwa na programu yako itafanya kazi kama inaposakinishwa kwa mara ya kwanza.\n\nANGALIZO: Kupangilia upya programu ni tukio la kudumu na hautaweza kupata tena taarifa yoyote.", - "Reset App": "Pangilia Upya Programu", - "You have successfully entered developer mode.": "Umefanikiwa kuingia kwenye njia ya msanidi wa programu.", - "You have entered an incorrect code.": "Umeingiza namba isiyo sahihi.", - "Language": "Lugha", - "How did you hear about @global.parent_app?": "Uliijuaje @global.parent_app?", - "I found it myself": "Niliipata mwenyewe", - "A friend or family": "Rafiki au familia", - "Other": "Njia nyingine", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "Unaweza kuombwa kuwaonyesha namba hii watu watakaokusaidia katika safari yako ya @global.parent_app.", - "Last sync at: @local.sync_latest": "Imeoanishwa mara ya mwisho saa: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Kifaa hiki hakijawahi kulandanishwa. Landanisha kupata namba ya siri.", - "Sync now": "Landanisha sasa", - "Syncing...": "Inaoanisha...", - "You selected @local.threshold or less": "Umechagua @local.threshold au pungufu yake", - "You selected more than @local.threshold": "Umechagua zaidi kuliko @local.threshold", - "Reply": "Jibu", - "Days in the past month": "Siku za mwezi uliopita", - "Days in the past week": "Siku za wiki iliyopita", - "You selected less than @local.threshold": "Umechagua pungufu ya @local.threshold", - "Unlock for less than @local.threshold": "Fungua kwa pungufu ya @local.threshold", - "You selected @local.threshold or more": "Umechagua @local.threshold au zaidi", - "Video": "Video", - "Timer": "Kipima muda", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Binya pembetatu ili mjadala huu udumu kwa dakika @local.timer_duration.", - "Options": "Machaguo", - "Home": "Mwanzo", - "Settings": "Mipangilio", - "Template": "Kiolezo", - "Tour": "Ziara", - "In-Week Messages": "Jumbe za Wiki", - "Campaigns": "Kampeni", - "Notifications": "Arafa", - "About @global.parent_app": "Kuhusu @global.parent_app", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app iliundwa na taasisi ya Parenting for Lifelong Health (PLH) inayotokana na ushirikiano ulioanzishwa duniani kote wa wataalamu wa malezi kutoka Shirika la UNICEF, Shirika la Afya Duniani (WHO), vyuo vikuu vya nchini Afrika Kusini na Uingereza, mashirika yasiyo ya kiserikali barani Afrika, na familia na vijana mbalimbali kote barani Afrika. Wazazi na vijana walifanya kazi nasi kwenye programu hii na kutusaidia kuhakikisha kuwa programu hii inakuwa rahisi kutumia, inayofurahisha na inayoshughulisha. Baadhi ya maudhui yaliyomo kwenye programu hii, kama vile shughuli zinazopendekezwa na simulizi za mifano, yaliundwa kwa kuwashirikisha wazazi na vijana ili kuhakikisha kuwa maudhui hayo yanakidhi mahitaji ya familia.\n\nTaasisi ya PLH inajitolea kwa dhati ili kusaidia kuundwa kwa nyenzo na programu za malezi zisizouzwa na zinazoweza kusambazwa kwa watu wengine, ili kuwasaidia wazazi duniani kote waweze kuboresha ustawi wa watoto wao.", - "Finish current workshop": "Malizia kipindi cha sasa", - "Here is a fun activity to do with your teen!": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", - "Start @local.workshop_data.in_text_title": "Anza @local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Endelea na @local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Habari @fields.user_name! Wiki hii ulifanya:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", - "That’s wonderful!": "Hilo ni jambo zuri!", - "Nice work!": "Kazi nzuri!", - "Your commitment is not taken for granted.": "Kujitolea kwako si kwa bure.", - "Keep up the good work!": "Endeleza kazi hii nzuri!", - "This is lovely!": "Inafurahisha sana!", - "Tap yourself on the shoulder. You deserve this.": "Jipongeze. Unastahili.", - "Every @global.parent_point counts!": "Kila @global.parent_point ni ya muhimu sana!", - "Relax now": "Tulia sasa", - "Did you relax already? Tap it!": "Je, tayari umepumzika? Bofya!", - "Looking after yourself matters.": "Wewe kujithamini ni jambo muhimu.", + "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.": "Data yako ni muhimu kwetu. Hii @global.privacy_policy for @global.app_id (‘@global.parent_app’ ‘au programu’) huweka bayana sera zetu za ukusanyaji, matumizi na ufichuaji wa taarifa binafsi katika matumizi ya @global.parent_app.", + "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme, hosted by UNICEF and designed for parents and caregivers of adolescents aged 10 to 17 years.": "@global.parent_app ni toleo bure la programu tumishi ya Parenting for Lifelong Health for Parents and Teens inayosimamiwa na UNICEF na iliyoundwa kwa ajili ya wazazi na walezi wa vijana walio na umri wa miaka 10 hadi 17.", + "Please read this @global.privacy_policy carefully. By downloading or using the app, you agree to the collection and use of information in relation to this policy. We will not use or share your information with anyone except as described in this @global.privacy_policy.": "Tafadhali soma hii @global.privacy_policy kwa umakini. Kwa kupakua au kutumia programu tumishi hii, unakubali ukusanyaji na matumizi ya taarifa kuhusiana na sera hii. Hatutatumia au kushirikisha taarifa zako na mtu yeyote isipokuwa kama ilivyoelezwa katika sera hii ya @global.privacy_policy.", + "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.": "Masharti yanayotumika katika @global.privacy_policy yana maana sawa na yaliyopo katika @global.terms_and_conditions zetu, ambazo zinaweza kufikiwa ndani ya programu tumishi, isipokuwa kama imefafanuliwa vinginevyo katika @global.privacy_policy.", + "1. What information does the app collect about you and how do we use it?": "1. Programu tumishi inakusanya taarifa gani kukuhusu na tunaitumiaje taarifa hiyo?", + "Personal Data": "Data Binafsi", + "For the purpose of this @global.privacy_policy, “personal data” means any information that enables us to identify an individual, directly or indirectly, by reference to an identifier such as email, name, @global.parent_app identification number, location data, or one or more factors specific to the individual. While using our app, we may require you to provide us with other personally identifiable information.": "Kwa madhumuni ya @global.privacy_policy, \"data binafsi\" inamaanisha maelezo yoyote yanayotuwezesha kumtambua mtu, moja kwa moja au isivyo moja kwa moja, kwa kurejelea utambulisho kama vile barua pepe, jina, nambari ya utambulisho ya @global.parent_app, data ya eneo, au sababu moja au zaidi maalum kwa mtu binafsi. Tunapotumia programu tumishi yetu, tunaweza kukuhitaji utupe taarifa nyingine zinazoweza kukutambulisha.", + "Specifically, this is data regarding chosen username, as well as gender. All data collected is linked to your unique @global.parent_app identification number. The @global.parent_app identification number produced within the app may also be used to link with any out of app surveys conducted.": "Hasa, hizi ni taarifa zinazohusisha jina lililochaguliwa pamoja na jinsia. Taarifa zote zilizokusanywa zitaunganishwa na namba yako ya kipekee ya utambulisho @global.parent_app. namba yako ya utambulisho ya @global.parent_app itatolewa kupitia programu tumishi, pia itatumika kuunganisha na tafiti nyingine zitakazo fanyika nnje ya programu tumishi.", + "We process your data to provide parenting support to you, communicate when you contact us, for security reasons as well as research purposes (see section ‘Information Sharing’). The primary research purpose includes optimising engagement of a digital parenting intervention (use of @global.parent_app) to prevent violence against adolescents. During the course of research, the study team may use aggregated and anonymised data from the app for further research projects. Finally, please note that we may process your data without your knowledge or consent, where this is required or permitted by law.": "Tunachakata taarifa zako ili kukupa usaidizi wa malezi, unapowasiliana nasi, kwa sababu za usalama na pia madhumuni ya utafiti (angalia sehemu ya ‘Kushirikishana Taarifa’). Madhumuni ya kimsingi ya utafiti ni pamoja na kuboresha ushiriki katika malezi kwa njia ya kidijitali (matumizi ya @global.parent_app) ili kuzuia unyanyasaji dhidi ya vijana. Wakati wa utafiti, timu ya utafiti inaweza kutumia taarifa zilizojumlishwa na zisizokuwa na utambulisho kutoka katika programu tumishi kwa miradi zaidi ya utafiti. Hatimaye, tafadhali kumbuka kwamba tunaweza kuchakata taarifa yako bila ujuzi au idhini yako, ambapo hii inahitajika au inaruhusiwa na sheria.", + "The processing of your personal data is primarily based on:": "Uchakataji wa taarifa yako ya kibinafsi unategemea kimsingi:", + "The @global.parent_app team has legitimate interests in carrying out research activities, under Art. 6(1)(f) GDPR, regarding the sharing of limited details related to how you use the app; and": "Timu ya @global.parent_app ina maslahi halali katika kutekeleza shughuli za utafiti, chini ya Sanaa. 6(1)(f) GDPR, kuhusiana na kushirikisha maelezo machache yanayohusiana na jinsi unavyotumia programu tumishi; na", + "Your consent, under Art. 6(1)(a) GDPR, regarding the email address you provide at the point of Google Sign-in and the sharing of answers you may provide to in-app questions (those involving as stated chosen username and gender which are entirely optional).": "Idhini yako, chini ya Sanaa. 6(1)(a) GDPR, kuhusiana na anuani ya barua pepe unayotoa wakati wa Kuingia kwa Kutumia Google na kushiriki majibu ambayo unaweza kutoa kwa tafiti za ndani ya programu tumishi (ambazo ni za hiari kabisa).", + "Log Data": "Data ya Kumbukumbu", + "Whenever you use our app, we collect data and information (through third party services) on your phone called Log Data. This Log Data includes information such as a truncated device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilising our app, the time, date and your intentions within the app (which include but are not limited to any app buttons clicked or pages visited.)": "Wakati wowote unapotumia programu yetu, tunakusanya data na taarifa (kupitia huduma za watu wengine) kwenye simu yako inayoitwa Data ya Kumbukumbu. Data hii ya Kumbukumbu inajumuisha maelezo kama vile anuani ya Itifaki ya kifaa cha Mtandao kilichopunguzwa (\"IP\"), jina la kifaa, toleo la mfumo wa uendeshaji, usanidi wa programu tumishi unapotumia programu tumishi yetu, saa, tarehe na asili ya matumizi yako ya programu tumishi.)", + "Cookies": "Vidakuzi", + "Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.": "Vidakuzi ni faili zilizo na kiasi kidogo cha data ambazo hutumiwa kama vitambulishi vya kipekee visivyojulikana. Hizi hutumiwa kwa kivinjari chako kutoka kwa tovuti unazotembelea na kuhifadhiwa kwenye kumbukumbu ya ndani ya kifaa chako.", + "This app does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. In particular, the app integrates GlitchTip and Matomo analytics as well as Firebase authentication software.": "Programu tumishi hii haitumii \"vidakuzi\" hivi kwa uwazi. Hata hivyo, programu tumishi hii inaweza kutumia msimbo wa watu wengine na maktaba zinazotumia \"vidakuzi\" kukusanya maelezo na kuboresha huduma zao. Haswa, programu tumishi inaunganisha uchanganuzi wa Matomo na programu ya uthibitishaji wa kanzidata.", + "Legal": "Kisheria", + "The information that we request will be retained by us and used as described in this @global.privacy_policy.": "Taarifa tunazoomba tutazihifadhi na kuzitumia kama ilivyoelezwa katika @global.privacy_policy.", + "Feedback Submissions": "Mawasilisho ya Maoni", + "Your feedback on the app is important to us. We shall always anonymise your personal information when sharing and publishing your feedback verbatim more broadly.": "Maoni yako kuhusu programu tumishi hii ni muhimu kwetu. Daima tutaficha maelezo yako ya binafsi tunaposhiriki na kuchapisha maoni yako kwa upana zaidi.", + "Aggregate Data": "Taarifa ya Jumla", + "Your data is important to the @global.parent_app team for broader research purposes. Aggregate data is always anonymised.": "Taarifa yako ni muhimu kwa timu ya @global.parent_app kwa madhumuni ya utafiti mpana. Taarifa ya jumla haitambuliki kila wakati.", + "Push notifications": "Taarifa za kushinikiza", + "You may opt out of push notifications which will be set up to inform you of certain account features or other notifications.": "Unaweza kuchagua kutopokea arifa za kushinikiza ambazo zitazowekwa kukujulisha kuhusu vipengele fulani vya akaunti au arifa nyingine.", + "2. Information Sharing": "2. Kupeana Taarifa", + "Limited internal staff to IDEMS may have access to personal data collected via the app as well as log data, as necessary to perform their duties regarding the operation of the app. These data will only be accessed on a need-to-know basis, and all team members with access to the data are bound to confidentiality.": "Wafanyakazi wachache wa ndani wa IDEMS wanaweza kufikia data binafsi iliyokusanywa kupitia programu tumishi, inapohitajika ili kutekeleza majukumu yao kuhusu uendeshaji wa programu. Taarifa hizi zitafikiwa tu kwa msingi wa kuhitaji kujua, na timu nzima inayoweza kufikia taarifa hizo wanalazimika kuwa na siri.", + "You agree that your personal information may be shared with third parties such as researchers and partners involved in the improvement or implementation of the app including those outside your country. Prior to the disclosure of information with research partners we will make anonymous to the extent possible and where appropriate, information such as chosen username and email address (where collected). In reading and accepting this @global.privacy_policy , you permit us to use your anonymized data in published research.": "Unakubali kwamba maelezo yako ya binafsi yanaweza kushirikiwa na washirika wengine kama vile watafiti na wabia wanaohusika katika uboreshaji au utekelezaji wa programu tumishi ikiwa ni pamoja na wale walio nje ya nchi yako. Kabla ya kufichuliwa kwa habari na wabia wa utafiti, tutafanya bila utambulisho kwa kadiri tuwezavyo na inapofaa taarifa kama vile jina la mtumiaji lilochaguliwa na anwani ya barua pepe (zinapokusanywa). Katika kusoma na kukubali hii @global.privacy_policy, unaturuhusu kutumia data yako isiyojulikana katika utafiti uliochapishwa.", + "You agree that we may transfer your personal information outside your country, for example, to administer cloud services. We will ensure that any country, company or person that we pass your personal information to agrees to treat your information with the same level of protection as we are obliged to.": "Unakubali kwamba tunaweza kuhamisha taarifa yako binafsi nje ya nchi yako, kwa mfano, ili kusimamia huduma za uhifadhi mtandaoni. Tutahakikisha kwamba nchi, kampuni yooyote au mtu yeyote ambaye tunampatia taarifa zako za binafsi anakubali kushughulikia maelezo yako kwa kiwango sawa cha ulinzi tunachowajibika.", + "3. Third Party Service Providers and Websites": "3. Watoa Huduma na Tovuti za Wahusika wengine", + "The app does use third party services that may collect information used to identify you. We do so for the following reasons:\n* To facilitate our app\n* To provide the app on our behalf\n* To perform app-related services; or\n* To assist us in analysing how our app is used.": "Programu tumishi hii haitumii huduma za watu wengine ambazo zinaweza kukusanya taarifa zinazotumiwa kukutambulisha. Tunafanya hivyo kwa sababu zifuatazo:\n* Ili kuwezesha programu tumishi yetu\n* Ili kutoa programu tumishi kwa niaba yetu\n* Kufanya huduma zinazohusiana na programu tumishi; au\n* Ili kutusaidia katika kuchanganua jinsi programu tumishi yetu inatumiwa.", + "We want to inform users of this app that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.": "Tunataka kuwafahamisha watumiaji wa programu hii kwamba wahusika hawa wengine wanaweza kufikia Taarifa zako za Binafsi. Sababu ni kufanya kazi walizopewa kwa niaba yetu. Walakini, wanalazimika kutofichua au kutumia habari kwa madhumuni mengine yoyote.", + "Links to the privacy policies of third-party service providers used by the app:": "Viungo vya sera za faragha za watoa huduma wengine zinazotumiwa na programu tumishi hii:", + "This app may contain links to other sites that are not covered by this @global.privacy_policy. If you click on a third-party link, you will be directed to that site. This @global.privacy_policy applies only to the processing of your information by this app. It does not address, and we are not responsible for, the privacy, information, or other practices of any third parties, including any third party operating any site or service to which this app links to.": "Programu tumishi hii inaweza kuwa na viungo vya tovuti zingine ambazo hazijashughulikiwa na @global.privacy_policy. Ukibofya kiungo cha mtu wa tatu, utaelekezwa kwenye tovuti hiyo. Hii @global.privacy_policy inatumika tu kwa uchakataji wa maelezo yako na programu tumishi hii. Haishughulikii, na hatuwajibikii, faragha, taarifa, au desturi nyingine za wahusika wengine, ikiwa ni pamoja na wahusika wengine wanaoendesha tovuti au huduma yoyote ambayo programu tumishi hii inaunganisha nayo.", + "4. How long do we keep your data?": "4. Je, tunahifadhi data yako kwa muda gani?", + "We will only retain your personal information for as long as we need it to fulfil our purposes, including any relating to app services as well as legal, accounting, or reporting requirements.": "Tutahifadhi maelezo yako ya kibinafsi kwa muda tu tunapoyahitaji ili kutimiza madhumuni yetu, ikiwa ni pamoja na yoyote yanayohusiana na huduma za programu pamoja na mahitaji ya kisheria, uhasibu au kuripoti.", + "5. How do we keep your data secure?": "5. Je, tunawekaje data yako salama?", + "We value your trust in providing us your personal information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security. We also reserve the right to the storage of your data on third party servers or databases outside of the listed @global.parent_app team (refer to the section on Third Party Service Providers and Websites). Therefore usage of the app is at your own risk.": "Tunathamini uaminifu wako kwa kutupa taarifa zako za kibinafsi, kwa hivyo tunajitahidi kutumia njia zinazokubalika kibiashara kuzilinda. Lakini kumbuka kuwa hakuna njia ya uwasilishaji kupitia mtandao, au njia ya uhifadhi wa kielektroniki ambayo ni salama na ya kuaminika kwa 100%, na hatuwezi kuhakikisha usalama wake kamili. Pia tunahifadhi haki ya kutunza taarifa yako kwenye kanzidata za watu wengine au kuhifadhi taarifa nje ya timu iliyoorodheshwa ya @global.parent_app. Kwa hivyo matumizi ya programu ni kwa taadhari yako mwenyewe.", + "6. Children’s Privacy": "6. Faragha ya Watoto", + "This app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. As per our Terms and Conditions, In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.": "Programu tumishi hii haijalengwa mtu yeyote aliye na umri wa chini ya miaka 18. Hatukusanyi taarifa zinazoweza kumtambulisha mtu binafsi kutoka kwa watu walio chini ya umri wa miaka 18 kwa makusudi. Huwatuna kusanya taarifa kuhusu watoto chini ya miaka 18 maana programu tumishi imelenga walezi wa watoto wenye umri miala 10 - 17 ambao wanaweza kuulizwa maswali kuhusu tabia za watoto wao. Iwapo tutagundua kuwa mtu aliye na umri wa chini ya miaka 18 ametupa taarifa za binafsi, tutafuta data hii mara moja kutoka kwa seva zetu. Ikiwa wewe ni mzazi au mlezi na unafahamu kwamba mtoto wako ametupa taarifa za kibinafsi, tafadhali wasiliana nasi ili tuweze kuchukua hatua zinazohitajika.", + "7. Your rights": "7. Haki zako", + "Under certain circumstances, by law you have the right to:\n* Request access to your data (commonly known as a \"subject access request\"). This enables you to receive a copy of your data and to check that we are lawfully processing it.\n* Request correction of your data. This enables you to ask us to correct any incomplete or inaccurate information we hold about you.\n* Request erasure of your data. This enables you to ask us to delete or remove your data under certain circumstances, for example, if you consider that there is no good reason for us continuing to process it. You also have the right to ask us to delete or remove your data where you have exercised your right to object to processing (see below).\n* Object to processing of your data where we are relying on our legitimate interests (or those of a third party) and there is something about your particular situation which makes you want to object to processing on this ground.\n* Request the restriction of processing of your data. This enables you to ask us to suspend the processing of your data, for example if you want us to establish its accuracy or the reason for processing it.\n* Request the transfer of your data to another party.": "Chini ya hali fulani, kisheria una haki ya:\n* Omba ufikiaji wa data yako (inayojulikana kama \"ombi la ufikiaji wa mada\"). Hii hukuwezesha kupokea nakala ya data yako na kuangalia kama tunaichakata kihalali.\n* Omba marekebisho ya data yako. Hii hukuwezesha kutuuliza kusahihisha taarifa yoyote isiyo kamili au isiyo sahihi tunayoshikilia kukuhusu.\n* Omba kufutwa kwa data yako. Hii hukuwezesha kutuomba kufuta au kuondoa data yako chini ya hali fulani, kwa mfano, ikiwa unaona kuwa hakuna sababu nzuri ya sisi kuendelea kuichakata. Pia una haki ya kutuomba kufuta au kuondoa data yako ambapo umetumia haki yako ya kupinga kuchakatwa (tazama hapa chini).\n* Inapinga kuchakata data yako ambapo tunategemea maslahi yetu halali (au yale ya wahusika wengine) na kuna kitu kuhusu hali yako mahususi ambacho kinakufanya utake kukataa kuchakatwa kwa msingi huu.\n* Omba kizuizi cha usindikaji wa data yako. Hii hukuwezesha kutuuliza tuahirishe uchakataji wa data yako, kwa mfano ikiwa unataka tubainishe usahihi wake au sababu ya kuichakata.\n* Omba uhamishaji wa data yako kwa chama kingine.", + "Depending on the circumstances and the nature of your request it may not be possible for us to do what you have asked, for example, where there is a statutory or contractual requirement for us to process your data and it would not be possible to fulfil our legal obligations if we were to stop. Further information on your rights is available from the Information Commissioner’s Office (ICO).": "Kulingana na mazingira na aina ya ombi lako huenda isiwezekane kwetu kufanya ulichoomba, kwa mfano, pale ambapo kuna mahitaji ya kisheria au ya kimkataba ili sisi kuchakata data yako na haingewezekana kutimiza wajibu wetu. majukumu ya kisheria ikiwa tungeacha. Taarifa zaidi kuhusu haki zako zinapatikana kutoka Ofisi ya Kamishna wa Habari (ICO).", + "ICO": "ICO", + "8. Removing the app": "8. Kuondoa programu tumishi", + "We are sorry if you find our app no longer useful. Should you decide to remove our app, we may still retain some of your data (although anonymised) to troubleshoot, aid in investigations, comply with legal requirements or to add to our existing research data sets.": "Samahani ikiwa unaona programu tumishi yetu haina maana tena. Iwapo utaamua kuondoa programu tumishi yetu, bado tunaweza kuhifadhi baadhi ya data yako (ingawa hatujulikani) ili kutatua matatizo, kusaidia uchunguzi, kutii mahitaji ya kisheria au kuongeza kwenye seti zetu zilizopo za data za utafiti.", + "9. Changes to the @global.privacy_policy": "9. Mabadiliko ya @global.privacy_policy", + "We may update our @global.privacy_policy from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.privacy_policy.": "Tunaweza kuboresha @global.privacy_policy mara kwa mara. Unaachilia haki yako ya kuarifiwa moja kwa moja kuhusu mabadiliko na unashauriwa kukagua ukurasa huu mara kwa mara kwa masasisho yoyote. Kuendelea kwako kutumia programu kunapendekeza ukubali masahihisho yajayo ya sera ya @global.privacy_policy.", + "If you have any questions or suggestions about our @global.privacy_policy, do not hesitate to contact us at apps@idems.international.": "Ikiwa una maswali au mapendekezo kuhusu @global.privacy_policy, usisite kuwasiliana nasi kwa apps@idems.international.", + "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.": "Ukurasa huu wa @global.privacy_policy ulitokana na rasimu iliyoundwa katika maandishi ya @local.link_10_1_ na kurekebishwa/kutolewa na @local.link_10_2_text.", + "1. User Agreement": "1. Mkataba wa Mtumiaji", + "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.": "Haya @global.terms_and_conditions ni makubaliano kati yako na @global.app_id (‘@global.parent_app’ au ‘programu’) ambayo zaidi ya hayo yanaweka sheria za matumizi yako ya @global.parent_app.", + "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme designed for parents and caregivers of adolescents aged 10 to 17 years.": "@global.parent_app ni toleo la programu lisilolipishwa la mpango wa Uzazi kwa Afya ya Maisha Yote kwa Wazazi na Vijana iliyoundwa kwa ajili ya wazazi na walezi wa vijana waliobalehe walio na umri wa miaka 10 hadi 17.", + "Parenting for Lifelong Health (PLH) - was designed through a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa.": "Parenting for Lifelong Health (PLH) - ilitengenezwa kupitia ushirikiano wa wadau mbali mbali wa malezi ulimwenguni kutoka UNICEF, WHO na Chuo Kikuu cha Afrika ya Kusini na Uingereza, pamoja na taasisi zisizo za kiserikari za afrika na familia na vijana kote kote Afrika.", + "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).": "@global.parent_app inaletwa kwako kwa ushirikiano wa washirika wakiwemo Chuo Kikuu cha Oxford, IDEMS International, Chuo Kikuu cha Cape Town, Taasisi ya Kitaifa ya Utafiti wa Matibabu - Kituo cha Mwanza Tanzania, na Clowns Without Borders Afrika Kusini ('the @global.parent_app team').", + "Please read these @global.terms_and_conditions carefully. By downloading or using the app, you agree that you have read, understood, and accepted the @global.terms_and_conditions contained below.": "Tafadhali soma haya @global.terms_and_conditions kwa makini. Kwa kupakua au kutumia programu, unakubali kwamba umesoma, umeelewa, na umekubali @global.terms_and_conditions zilizo hapa chini.", + "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.": "\nFaragha yako ni muhimu kwetu - tafadhali soma pia sera yetu ya @global.privacy_policy, ambayo itaeleza kwa undani jinsi tunavyokusanya, kuhifadhi na kutumia maelezo ambayo unatupatia. Kwa kutumia @global.parent_app unatuthibitishia kuwa unakubali zaidi sera yetu ya @global.privacy_policy, kama ilivyowekwa kando.", + "2. Rules of Usage": "2. Kanuni za Matumizi", + "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.": "@global.parent_app ni chanzo huria na kwa hivyo msimbo wake wa chanzo unapatikana kwenye GitHub kwa matumizi na urekebishaji na jumuiya pana ya programu tumishi. Hata hivyo, huruhusiwi kurekebisha programu iliyopo kama ilivyo au yaliyomo au kunakili alama za biashara za timu ya @global.parent_app. Ingawa ni chanzo huria, hupaswi kutafsiri programu katika lugha nyingine au kutengeneza matoleo mengine bila kutambua timu ya @global.parent_app katika juhudi zako. Majaribio ya kupata maelezo nyeti ya akaunti au taarifa nyingine ya binafsi hairuhusiwi. Pia hupaswi kujiwakilisha kwa uwongo katika matumizi ya programu, kutoa madai yasiyo sahihi ya ushirika na programu au kutoa ripoti za kupotosha za utovu wa nidhamu wa programu. Matumizi ya programu haipaswi pia kukiuka sheria au kanuni zozote zinazotumika. ", + "Finally this app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.": "Programu tumishi hii haijaleng mtu yeyote aliye na umri wa chini ya miaka 18. Hatukusanyi taarifa zinazoweza kumtambulisha mtu binafsi kutoka kwa watu walio chini ya umri wa miaka 18 kwa makusudi. Iwapo tutagundua kuwa mtu aliye na umri wa chini ya miaka 18 ametupa taarifa za binafsi (kama vile jinsia/ jina au jina la utani), tutafuta taarifa hii mara moja kutoka kwa kanzidata zetu. Ikiwa wewe ni mzazi au mlezi na unafahamu kwamba mtoto wako ametupa taarifa binafsi, tafadhali wasiliana nasi ili tuweze kuchukua hatua zinazohitajika.", + "3. Content Changes": "3. Mabadiliko ya Maudhui", + "The @global.parent_app team is committed to ensuring that the app is as useful and user friendly as possible. For that reason, we reserve the right to make changes to the app which will be delivered through updates. At present the app is free of charge and our intention is for it to stay that way.": "Timu ya @global.parent_app imejitolea kuhakikisha kuwa programu ni muhimu na rahisi watumiaji iwezekanavyo. Kwa sababu hiyo, tunahifadhi haki ya kufanya mabadiliko kwenye programu ambayo yatawasilishwa kupitia masasisho. Kwa sasa programu haina malipo na nia yetu ni kukaa hivyo.", + "In the future it is possible that some services may be offered that would incur a cost. We will never charge you for the app or its services without clearly making known to you first any access charges applicable.": "Katika siku zijazo inawezekana kwamba huduma zingine zinaweza kutolewa ambazo zingesababisha gharama. Hatutakutoza kwa programu au huduma zake bila kukujulisha kwa uwazi kwanza ada zozote za ufikiaji zinazotumika.", + "4. Intellectual property": "4. Miliki", + "The app itself, the trademarks, copyright, database rights and other intellectual property rights related to it, belong to or are licensed to the various applicable collaborators of the @global.parent_app team (noting that code is covered under GPL 3 and content by CC BY). The use of names and emblems/logos of collaborating institutions are the exclusive property of those institutions and are protected under international and national laws. Unauthorised use is prohibited. They may not be copied or reproduced in any way without the prior written permission of said institution.": "Programu yenyewe, alama za biashara, hakimiliki, haki za hifadhidata na haki zingine za uvumbuzi zinazohusiana nayo, ni mali ya au imepewa leseni ya washiriki mbalimbali wanaohusika wa timu ya @global.parent_app (ikibainisha kuwa msimbo umejumuishwa chini ya GPL 3 na maudhui na CC KWA). Matumizi ya majina na nembo/nembo za taasisi shirikishi ni mali ya kipekee ya taasisi hizo na inalindwa chini ya sheria za kimataifa na kitaifa. Matumizi yasiyoidhinishwa ni marufuku. Haziwezi kunakiliwa au kunakiliwa kwa njia yoyote bila idhini ya maandishi ya taasisi hiyo.", + "5. Submissions": "5. Mawasilisho", + "Your feedback on the app is appreciated. So that we can improve, any comments are not considered confidential and will become available for further lawful use without additional approval or compensation. We shall therefore own exclusive rights and believe any feedback that you have made is original by you.": "Maoni yako kuhusu programu yanathaminiwa. Ili tuweze kuboresha, maoni yoyote hayachukuliwi kuwa siri na yatapatikana kwa matumizi zaidi halali bila idhini ya ziada au fidia. Kwa hivyo tutamiliki haki za kipekee na kuamini maoni yoyote ambayo umetoa ni asili yako.", + "6. Security": "6. Usalama", + "Our app stores and processes personal data that you have provided to us, in order to offer our services. It is your responsibility to keep your phone and access to the app secure. Removal of software restrictions and limitations imposed by the official operating system of your device is therefore not recommended. Doing so could make your phone vulnerable to malware, viruses, malicious programs as well as compromise your phone’s security features and could mean that the app will not work properly or at all.": "Programu tumishi yetu huhifadhi na kuchakata data ya kibinafsi ambayo umetupatia, ili kutoa huduma zetu. Ni jukumu lako kuweka simu yako na ufikiaji wa programu salama. Kuondolewa kwa vikwazo vya programu na vikwazo vilivyowekwa na mfumo rasmi wa uendeshaji wa kifaa chako haipendekezi. Kufanya hivyo kunaweza kufanya simu yako kuwa hatarini kwa programu hasidi, virusi, programu hasidi na pia kuathiri vipengele vya usalama vya simu yako na kunaweza kumaanisha kuwa programu haitafanya kazi ipasavyo au hata kidogo.", + "To see how we handle your personal information, please see our @global.privacy_policy.": "Ili kuona jinsi tunavyoshughulikia taarifa zako za binafsi, tafadhali tazama @global.privacy_policy.", + "7. External links and resources": "7. Viungo na rasilimali za nje", + "The app uses third party services that declare their own @global.terms_and_conditions and may link to other websites and resources that are not under the app’s control.": "Programu tumishi hutumia huduma za wahusika wengine ambazo zinatangaza @global.terms_and_conditions zao wenyewe na zinaweza kuunganisha kwenye tovuti na nyenzo zingine ambazo haziko chini ya udhibiti wa programu tumishi.", + "Link to @global.terms_and_conditions of third party service providers used by the app include:": "Kiungo cha @global.terms_and_conditions cha watoa huduma wengine wanaotumiwa na programu tumishi ni pamoja na:", + "The inclusion of such links does not imply an endorsement or approval by the app and/or its partners of any website, product, or service. Similarly, the app and the @global.parent_app team affiliated developers and collaborators do not assume any responsibility or liability in respect of such websites, product, or service, including, for example, responsibility or liability for the accuracy or reliability of any information, data, opinions, advice or statements made on those web sites.": "Kujumuishwa kwa kurasa za mitandao kama hizo (viunga), haimaanishi uidhinishaji wa programu na/au washirika wake wa tovuti, bidhaa au huduma yoyote. Vile vile, programu tumishi na Timu ya @global.parent_app watengenezaji na washirika walioshirikishwa hawachukui jukumu au dhima yoyote kuhusiana na tovuti, bidhaa au huduma kama hizo, ikijumuisha, kwa mfano, wajibu au dhima ya usahihi au kutegemewa kwa taarifa yoyote, data, maoni, ushauri au taarifa zilizotolewa kwenye tovuti hizo.", + "8. Disclaimer": "8. Kanusho", + "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.": "Tafadhali fahamu kuwa timu ya @global.parent_app haiwajibiki kwa majukumu kwa yafuatayo:\n\n\na. Baadhi ya utendakazi wa programu utahitaji programu kuwa na muunganisho wa intaneti. Timu ya @global.parent_app haiwezi kuwajibika kwa programu kutofanya kazi kikamilifu ikiwa huna ufikiaji wa Wi-Fi, au huna salio lolote la bando la data.\n\n\nb. Kutumia programu nje ya eneo lenye Wi-Fi, kutamaanisha kuwa masharti yako ya makubaliano na mtoa huduma wako wa mtandao wa simu bado yatatumika. Kwa hivyo, unaweza kutozwa na mtoa huduma wako wa simu kwa gharama ya data kwa muda wa muunganisho unapotumia programu, au gharama zingine za watu wengine. Katika kutumia programu, unakubali kuwajibika kwa gharama zozote kama hizo, ikiwa ni pamoja na gharama za data ya kutumia mitandao ya ng'ambo ikiwa unatumia programu nje ya eneo lako la nyumbani (yaani, eneo au nchi) bila kuzima utumiaji wa data nje ya mtandao wako. Ikiwa wewe si mlipaji wa bili wa kifaa ambacho unatumia programu, tafadhali fahamu kwamba tunadhania kuwa umepokea ruhusa kutoka kwa mlipaji wa bili kwa kutumia programu.\n\n\nc. Ingawa tunajitahidi kuhakikisha kuwa programu imesasishwa na maudhui yake ni sahihi, tunategemea washirika wengine kutupa maelezo ili tuweze kufanya ipatikane kwako. Hatuangalii tovuti zote za nje mara kwa mara na hatuwezi kuhakikisha kuwa ni sahihi au za kuaminika kila wakati.\n\n\nd. Timu ya @global.parent_app haikubali dhima yoyote ya uharibifu au hasara yoyote, ya moja kwa moja au isiyo ya moja kwa moja, unayopata kutokana na kutumia programu, au kutokana na utegemezi wowote unaoweza kuweka kwa ushauri au maelezo yanayotolewa kutoka kwa programu. Unapaswa kutumia busara na uamuzi wako kila wakati kulingana na hali yako kuhusiana na ushauri au taarifa yoyote iliyotolewa kutoka kwa programu.\n\n\ne. Matukio yoyote ya hitilafu za programu, virusi au nyenzo zingine hasidi zinazopitishwa na mtu mwingine kupitia tovuti yetu ni majuto, lakini hatuna jukumu.\n\n\nf. Masasisho ya programu hutokea mara kwa mara ili kuboresha utendaji na maudhui. Programu inapatikana kwenye Android - mahitaji ya mfumo huu (na kwa mifumo yoyote ya ziada tunayoamua kupanua upatikanaji wa programu) inaweza kubadilika. Ni wajibu wako kupakua masasisho ya programu ili kuendelea kutumia programu. Timu ya @global.parent_app haiahidi kuwa itasasisha programu kila wakati ili iwe muhimu kwako na/au kufanya kazi na toleo la Android ambalo umesakinisha kwenye kifaa chako. Hata hivyo, unakubali kwamba kila mara utakubali masasisho ya programu yanapotolewa kwako.\n\n\ng. Tovuti ya programu inaweza kuwa haipatikani kila wakati kwa sababu za matengenezo au changamoto inayohusiana na programu au vifaa husika. Ingawa tunaomba radhi kwa usumbufu, hatuwajibikii kwa hasara yoyote ambayo unaweza kupata ikiwa tovuti haitafikiwa au kuondolewa. Vile vile, tuna haki na chaguo la kusitisha ufikiaji na matumizi yako ya programu (ikiwa ni pamoja na upatikanaji wa data iliyonaswa) wakati wowote, bila onyo. Isipokuwa tukikuambia vinginevyo, baada ya kusitishwa, (a) haki na leseni ulizopewa katika masharti haya zitaisha; (b) lazima uache kutumia programu, na (kama ikihitajika) uifute kwenye kifaa chako.\n\n\nh. Unakubali kufidia, kwa gharama yako mwenyewe, timu ya @global.parent_app, maafisa wake, wafanyakazi, washauri na mawakala wake, dhidi ya madai yoyote, ikiwa ni pamoja na gharama na matumizi yako, na wahusika wengine, kutokana na matumizi yako ya programu.\n\n\ni. Makampuni au bidhaa zinazohusishwa na programu hazipaswi kutafsiriwa kama uidhinishaji na programu au timu ya @global.parent_app au kuonyesha nia ya kukiuka haki za umiliki.", + "9. Changes to the @global.terms_and_conditions": "9. Mabadiliko ya @global.terms_and_conditions", + "We may update our @global.terms_and_conditions from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.terms_and_conditions.": "Tunaweza kusasisha @global.terms_and_conditions zetu mara kwa mara. Unaachilia haki yako ya kuarifiwa moja kwa moja kuhusu mabadiliko na unashauriwa kukagua ukurasa huu mara kwa mara kwa masasisho yoyote. Kuendelea kwako kutumia programu kunapendekeza ukubali masahihisho yajayo ya @global.terms_and_conditions.", + "10. Contact Us": "10. Wasiliana Nasi", + "If you have any questions or suggestions about our @global.terms_and_conditions, do not hesitate to contact us at apps@idems.international.": "Ikiwa una maswali au mapendekezo kuhusu @global.terms_and_conditions zetu, usisite kuwasiliana nasi kwa apps@idems.international.", + "Last updated: 1 March 2023": "Mara ya mwisho imeboreshwa: 1 mwezi wa tatu 2023", + "When everything feels like it is falling apart": "Wakati kila kitu kinaonekana kunaharibika", + "And you can't help but raise your voice": "Na huwezi kusaidia isipokuwa kupaza sauti", + "When all the frustrations are beginning to start": "Wakati kuchanganyikiwa kote kunapoanza kutokea", + "Remember that you have a choice": "Kumbuka kwamba una chaguo", + "Remember all we have to be grateful for": "Kumbuka yote tuliyonayo tunayoweza kujivunia", + "Let's slow down": "Twende taratibu", + "Take a few deep breaths": "Vuta pumzi ndefu", + "Because I really couldn't love you more": "Kwa sababu siwezi kukupenda zaidi", + "You can take pause, you can count to 10": "Unaweza kupumzika, unaweza kuhesabu mpaka 10", + "Play a game or do something fun": "Cheza mchezo au fanya kitu fulani cha kufurahisha", + "You can phone a friend, someone to confide in": "Unaweza kumpigia simu rafiki, mtu flani unayemuamini", + "Remember you're not the only one": "Kumbuka siyo wewe peke yako", + "Reflect on the positive": "Tafakari mambo chanya", + "Check-in chat": "Simulizi ya kuanzia", + "Dream Travel": "Safari ya ndoto", + "Famous Party": "Chama Maarufu", + "Two truths, one lie": "Kweli mbili, uongo mmoja", + "Time Machine": "Mashine ya Wakati", + "Superpowers": "Nguvu kubwa", + "Just a friendly chat": "Maongezi ya kirafiki", + "The Interrupter": "Mdakizi", + "Three options": "Machaguo matatu", + "Yes, No or Maybe": "Ndiyo, Hapana au Labda", + "Memory game - \"On Saturday...\"": "Mchezo wa kukumbuka – \"Jumamosi...\"", + "Make up a story": "Buni Hadithi", + "Co-chef": "Mpishi mwenza", + "Dance moves": "Miondoko ya kucheza", + "Mirror": "Kioo", + "What's new?": "Kuna nini kipya?", + "Get active!": "Changamka!", + "Name that tune": "Taja jina la wimbo huo", + "Pass the snap": "Pitisha kitufe", + "Family workout": "Mazoezi ya familia", + "Make housework fun": "Fanya kazi za nyumbani zifurahishe", + "Household chores aren’t fun… or are they? You can make them into a game!": "Je, kazi za nyumbani hazifurahishi... au zinafurahisha? Unaweza kuzifanya kuwa mchezo!", + "What are you doing?": "Unafanya nini?", + "Here is a fun game you can do with your family!": "Huu hapa ni mchezo wa kufurahisha unaoweza kuucheza na familia yako!", + "Crazy chicken": "Kuku kichaa", + "Help yourself cope": "Jisaidie kwendana", + "Help your teen cope": "Msaidie kijana kwendana", + "Practical steps": "Hatua za vitendo", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Karibu! Tunafurahi sana kuwa nawe hapa. Wiki hii inahusu WEWE.\n\nKatika kipindi cha ukaribisho:\n* Utapata nyenzo za kujitunzia\n* Utarekebisha programu hii kulingana na mahitaji yako", + "Wonderful, I am so happy things are going well.": "Ni jambo la kuvutia sana, ninafurahi sana mambo yanaenda vizuri.", + "Some days will have their challenges. That is okay. You are on the right path!": "Baadhi ya siku zingine zitakuwa na changamoto zake. Hiyo ni sawa. Uko kwenye njia sahihi!", + "Let’s take a moment for YOU. Looking after yourself well starts with noticing how you feel.": "Hebu tuchukue muda kwa ajili YAKO. Kujitunza vizuri huanza na kugundua jinsi unavyohisi.", + "Great! So good to hear you are in a positive space.": "Hongera! ni vizuri sana kusikia uko katika nafasi nzuri", + "Things are not always easy. But that is how we can grow and learn every day!": "Mambo si rahisi kila wakati. Lakini hivyo ndivyo tunavyoweza kukua na kujifunza kila siku!", + "Life can be hard. Whatever you are feeling, you can be proud of yourself for being here!": "Maisha yanaweza kuwa magumu. Vyovyote unavyohisi, unaweza kujivunia kuwa hapa!", + "You matter! Take a moment to check in with yourself.": "Wewe ni wa muhimu! Chukua muda kujiangalia wewe mwenyewe.", + "Great to hear that you are doing well. You are a wonderful parent!": "Inafurahisha sana kusikia kuwa unaendelea vizuri. Wewe ni mzazi mzuri sana!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Pole kwa sababu leo siyo siku nzuri sana kwako. Hongera kwa kujaribu kuelewa kila kitu. Hakuna ajuaye kila kitu, lakini kwa kweli unajitahidi kwa kadri uwezavyo!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Tunasikitika kusikia kwamba leo siyo siku nzuri kwako. Hongera kwa kuamka kila asubuhi na kujaribu tena, hata unapokuwa umechoka. Huo ni ujasiri wa kweli na kujitoa kwa dhati! ", + "Recognising how you feel helps you care for yourself well. You deserve it.": "Kutambua jinsi unavyohisi husaidia kujijali vizuri. Unastahili.", + "Wonderful, I am so happy! Keep up the good work.": "Vizuri, nimefurahi sana! Endeleza kazi hiyo nzuri.", + "Sorry that things are difficult. All families struggle. @global.parent_app is here to help!": "Pole kwa mambo kuwa magumu. Familia zote zinapambana. @global.parent_app iko hapa kukusaidia!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Jambo lolote lililoenda 'vibaya' leo, hebu lisahau na ujaribu tena kesho. Itakuwa sawa!", + "Looking after yourself matters. And how you feel matters too!": "Kujitunza ni muhimu. Na jinsi unavyohisi ni muhimu pia!", "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Safi sana! Tunafurahi sana kusikia kwamba hali yako ni nzuri leo. Furaha iliyoje!", "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Wakati mwingine mambo huenda vizuri sana. Wakati mwingine hayaendi vizuri sana. Na wakati mwingine hatujui kabisa cha kufanya... na hii ni sawa kabisa! Kumbuka kwamba hauko peke yako.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Hiyo ni nzuri, hasa kwenye nyakati ngumu kama hizi. Wewe ni mshindi.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Tunajua jinsi kulea vijana katika nyakati hizi kunavyoleta msongo wa mawazo. Kujifunza namna ya kudhibiti msongo wa mawazo hukusaidia wewe – na familia yako.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Habari zenu?\n\nMada ya leo inahusu kudhibiti msongo wa mawazo.\n\nNi muhimu kwetu kujua jinsi ya kudhibiti msongo wa mawazo. Wakati mwingine watoto wetu wanaweza kuwa na tabia zinazotufanya tuwe na msongo wa mawazo. Sisi kama wazazi, tunaweza pia kuwafanya watoto wetu kuwa na msongo wa mawazo.\n\nKwa hiyo, ni muhimu kwetu kutambua wakati tunapokuwa na msongo wa mawazo ili tutulie na kuvuta pumzi. Kufanya hivyo kutatusaidia kudhibiti msongo wa mawazo.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONYESHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONESHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Hebu tuangalie mfano wa jinsi ambavyo wakati mwingine msongo wa mawazo unaweza kutuzidia sana, sisi sote:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver: \"Niache nilivyo, kafanye mambo yako!\"", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Nimekosea nini? Huwa hunisikilizi!”\n\n@global.w_stress_male_caregiver: \"Nimesema niache nilivyo, la sivyo utapata kipigo!\"", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: \"Ona! Nimejenga nyumba!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: \"Nani anajali nyumba yako ya kijinga hiyo!\"", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje? Na @global.w_stress_male_caregiver wake, je? Na @global.w_stress_girl, je?\n\nJe, @global.w_stress_male_caregiver angeweza kufanyaje badala yake?", - "How do you think @global.w_stress_teen_boy_1 felt?": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje?", - "And @global.w_stress_male_caregiver?": "Na @global.w_stress_male_caregiver, je?", - "And @global.w_stress_girl?": "Na @global.w_stress_girl, je?", - "Scared": "Kuogopa", - "Each of them was feeling upset for their own reason!": "Kila mmoja wao alihisi kufadhaika kwa sababu zake mwenyewe!", - "What could @global.w_stress_male_caregiver have done differently?": "Je, @global.w_stress_male_caregiver angeweza kufanyaje tofauti?", - "Recognise why he feels stressed": "Kutambua kwa nini anahisi msongo wa mawazo", - "Take a deep breath and speak calmly": "Kuvuta pumzi ndefu na kuzungumza kwa utulivu", - "Show he understands his teen’s feelings": "Kuonesha kuwa anaelewa hisia za kijana wake", - "Think about solutions together with @global.w_stress_teen_boy_1": "Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1", - "Do something positive together with @global.w_stress_teen_boy_1": "Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver angeweza...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Kutambua kwa nini anahisi msongo wa mawazo\n* Kuvuta pumzi ndefu na kuzungumza kwa utulivu\n* Kuonyesha kuwa anaelewa hisia za kijana wake\n* Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1\n* Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Asanteni kwa kufikiria pamoja! Hebu turudi siku za nyuma ili kuelewa @global.w_stress_male_caregiver anachokifanya sasa:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver amefukuzwa kazi. Alikuwa amekaa nyumbani akihisi kufadhaika na msongo wa mawazo, pindi @global.w_stress_teen_boy_1 alipoingia.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver (akishusha pumzi): “Samahani, mwanangu. Siku ya leo imeniendea vibaya. Bosi amenifukuza kazi.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Ooh, jamani! Ninahitaji sare mpya ya shule.”\n\n@global.w_stress_male_caregiver: \"Nitajaribu, mwanangu. Na kazi ya @global.w_stress_female_caregiver yako itatusukuma wakati ninatafuta kazi nyingine.\"", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: \"Je, ninaweza pia kusaidia kutafuta kazi, @global.w_stress_male_caregiver?\"\n\n@global.w_stress_male_caregiver: “Hapana, usijali, @global.w_stress_teen_boy_1. Ninashukuru kwa msaada wako. Jambo muhimu zaidi ni kwamba ufanye bidii shuleni. Ninakushukuru kwa kunisikiliza.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Hebu tukacheze mpira pamoja. Itanisaidia kidogo kuondokana na huu msongo wa mawazo.”\n\n@global.w_stress_teen_boy_1: “Sawa, @global.w_stress_male_caregiver!”", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Mazungumzo yalienda vizuri sana!\n\nUnapohisi hasira au msongo wa mawazo, kupumzika kidogo husaidia kujibu kwa utulivu. Jaribu kufanya hivyo, utajionea mwenyewe!", - "Safety Amnesty": "Msamaha wa Usalama", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Kumbuka wakati ulipokuwa kijana.\n\nJe, kulikuwa na wakati wowote ambao ulikuwa hatarini lakini hukuweza kuiambia familia yako kwa sababu wangekasirika?\n\nHali hiyo ILIKARIBIA KABISA kumtokea @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl! Hebu tuangalie:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Usiwaambie wakubwa, leo usiku nitaenda baa na marafiki zangu.\"\n\n@global.w_stress_teen_girl: \"Nenda ukale raha! Mimi nimewaambia nitakuwa na shoga yangu, lakini ninaenda kwenye bonge la sherehe.\"", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Nadhani hawa jamaa wanafanya biashara ya madawa ya kulevya. Sisi sote tunaweza kukamatwa. Lakini siwezi kuwaambia wazazi wangu – watakasirika sana.\"", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: \"Ninaogopa. Kila mtu amelewa chakari, hawezi kuendesha gari kunipeleka nyumbani. Huyu mvulana anasema atanipeleka lakini anataka twende kwanza nyumbani kwake. Siwezi kuwaambia wazazi wangu – niliwadanganya ili niweze kuja kwenye sherehe hii.\"", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Hizi ni hali za hatari! Kwa bahati nzuri, @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl walikumbuka kile @global.w_stress_parent alichowaambia:\n\n\"Ninajali sana usalama wenu kuliko kitu chochote. Mkipata shida yoyote, au kuogopa kitu, mnaweza kunipigia simu nije kuwasaidia wakati wowote, au kunieleza shida hiyo.\n\nSemeni tu 'NINAOMBA MSAMAHA WA USALAMA'. Ninaahidi kuwa nitajitahidi kadri ya uwezo wangu kuwasaidia na sitakasirika – hata mkiwa mnafanya jambo ambalo hampaswi kulifanya.\"", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ninaomba msamaha wa usalama. Unaweza kuja kunichukua? Ninahitaji sana usafiri wa kuja nyumbani.\"", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ninaomba msamaha wa usalama. Nadhani marafiki zangu wako matatani. Sitaki kuvunja urafiki wetu, lakini nina wasiwasi. Tunaweza kuzungumza?\"", - "BREATHE. Slowly. Pause.": "VUTA PUMZI. Polepole. Tulia.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Kabla ya kusema chochote, vuta pumzi polepole na kuzishusha mara tano. Kufanya hivyo kutakutuliza, na kukupa nafasi ya kufikiria.", - "SHARE how you feel": "SHIRIKISHA WENGINE jinsi unavyohisi", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Hili ni jambo gumu. Wengi wetu tuliambiwa tusilie, au kuonesha hisia zetu kwa watoto wetu. Lakini vuta pumzi ndefu na uwaambie kwa utulivu jinsi unavyohisi. Wataelewa vizuri, na pia watajifunza kutoka kwako jinsi ya kukabiliana na msongo wa mawazo.", - "SHOW them you care": "WAONESHE kuwa unawajali", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Hili pia ni jambo gumu! Msongo wa mawazo hutufanya tujiangalie sisi wenyewe. Lakini vijana wetu wanahitaji msaada wetu. Waulize wanajisikiaje. Wasikilize na uwafariji. Jaribu kuwakumbatia au sema 'Ninaelewa'. Kufanya hivyo kunaweza kubadilisha kila kitu.", - "SEEK the positive": "TAFUTA mambo chanya", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Je, wewe na kijana wako mnaweza kufikiria mawazo yanayoweza kusaidia? Je, mnaweza kufanya pamoja kitu chanya ili kuhamisha mawazo yako kutoka kwenye msongo wa mawazo?", - "If all else fails, breathe. You can do this.": "Kama mengine yote hayatafaulu, vuta pumzi. Unao uwezo wa kulishinda hili.", - "There are two home practices for this week.": "Kuna mazoezi mawili ya nyumbani wiki hii.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Wakati wowote unapohisi msongo wa mawazo au kufadhaika: vuta pumzi na kuzishusha mara tano kabla ya kufanya chochote.\n\nNyote wawili mtakapokuwa mmetulia, mshirikishe kijana wako jinsi unavyojisikia.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Jadili na kijana wako kuhusu \"msamaha wa usalama\", kisha fikirieni kwa pamoja mazingira ambamo mnaweza kuutumia.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Kila mara unapotulia kidogo kabla ya kujibu, au kila wakati unapofanya jambo fulani ili kumweka salama kijana wako, vuna @global.parent_points zako na usherehekee mafanikio yako!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Umemaliza kipindi cha wiki hii.\n\nWiki ijayo, tutazungumza kuhusu pesa – utahitaji:\n* kipande cha karatasi ya kawaida/karatasi nene\n* kalamu\n* mawe madogo/maharage/punje 20\n\nItakuwa raha!", + "Sorry that things are hard right now. You deserve good things, and @global.parent_app is here to support you every step of the way.": "Samahani kwamba mambo ni magumu kwa sasa. Unastahili mambo mazuri, na @global.parent_app iko hapa kukusaidia kila hatua unayopiga.", + "Caring for yourself is so essential. When you know how you feel, you can see what you need.": "Kujijali ni muhimu sana. Unapojua jinsi unavyohisi, unaweza kuona kile unachohitaji.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Ni jambo la kuvutia sana, ninafurahi sana mambo kuona yanaenda vizuri. Endeleza kazi hii nzuri.", + "We all have better and worse days. The fact that you are here shows courage and commitment!": "Sisi sote tuna siku nzuri na mbaya zaidi. Ukweli ni kwamba uko hapa unaonyesha ujasiri na kujitolea!", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Tunasikitika kuona kuwa mambo ni magumu sasa. Wakati mwingine ni jambo la kawaida kabisa kupata misukosuko. Kumbuka kwamba hauko peke yako!", + "Remember that YOU matter! Let’s check in with our emotions first.": "Kumbuka kwamba wewe ni muhimu! Hebu tuangalie hisia zetu kwanza.", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Hongera kwa kutambua hisia chanya. Nimefurahi kusikia kwamba unajisikia vizuri leo!", + "Well done for recognising that you are not feeling great. Be kind to yourself, you deserve it.": "Umefanya vizuri kwa kutambua kuwa hujisikii vizuri. Unastahili kuwa mwema kwako mwenyewe.", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember @global.parent_app is here to support you.": "Umefanya vizuri kutambua hisia ngumu. Ni sawa kutokuwa sawa wakati mwingine. Kumbuka @global.parent_app iko hapa kukusaidia.", + "Self-care is a key parenting tool. It starts with recognising how we feel.": "Kujithamini ni muhimu kwa malezi. Inaanza na kutambua jinsi tunavyohisi.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Safi sana. Na inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitoa kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", + "Every day has its highs and lows. Praise yourself for being here and trying - you are moving forward.": "Kila siku kuna kupanda na kushuka. Jisifie kwa kuwa hapa na kujaribu - unasonga mbele.", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Tunasikitika kuona kuwa mambo ni magumu sasa hivi. Vuta pumzi ndefu na ujue kuwa unathaminiwa.", + "Recognising how you feel is key to handling life well. Be real and kind to yourself.": "Kutambua jinsi unavyohisi ni muhimu ili kushughulikia maisha vizuri. Kuwa halisi na mkarimu kwako mwenyewe.", + "You are a star. And you are making a real difference. You can be proud of yourself.": "Wewe ni shujaa. Na unaleta mabadiliko ya kweli. Unaweza kujivunia mwenyewe.", + "Everyone has good and bad days. Well done for using this app. It shows you are a committed parent. Remember to praise yourself for it!": "Kila mtu ana siku nzuri na mbaya. Umefanya vizuri kutumia programu hii. Inaonyesha wewe ni mzazi unayejituma. Kumbuka kujipongeza kwa hilo!", + "Sorry that things are not easy today. All parents have these days. You are trying and moving forward!": "Pole kama mambo si rahisi leo. Wazazi wote wana siku kama hizi. Unajaribu na kusonga mbele!", + "Being a great parent also means taking time to care for yourself every day. It starts with recognising how you feel.": "Kuwa mzazi mahiri pia humaanisha kupata wakati wa kujitunza kila siku. Inaanza na kutambua jinsi unavyohisi.", + "So good to hear you are feeling well today. You are incredible!": "Tunafurahi sana kusikia kuwa unajisikia vizuri leo. Unastaajabisha!", + "We all have days where we just don’t know. That’s okay! You are here and that is what matters.": "Sisi sote tuna siku ambazo hatuzielewi. Hiyo ni sawa! Uko hapa na hicho ndicho cha muhimu.", + "Being a parent can be hard. But you are here and that shows you want to keep improving things. That is a big accomplishment already!": "Kuwa mzazi inaweza kuwa ngumu. Lakini uko hapa na hiyo inaonyesha kuwa unataka kuendelea kuboresha mambo. Hayo ni mafanikio makubwa tayari!", + "Taking a moment for YOU makes a big difference for everyone!": "Kuchukua muda kwa ajili yako mwenyewe huleta mabadiliko makubwa kwa kila mtu!", "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Ni jambo zuri sana kwamba leo inaenda vizuri! Je, ni jambo gani moja ambalo limeenda vizuri leo? Kumbuka kujisifia kwa hilo.", + "Every day has its good and hard parts. Praise yourself for everything you have done so far - you are amazing.": "Kila siku ina nyakati zake nzuri na ngumu. Jisifu kwa kila kitu ambacho umefanya hadi sasa - wewe unastaajabisha.", "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Tunasikitika kusikia kuwa leo unajisikia vibaya. Hongera kwa kutambua hisia hizo, na kujaribu kuwa mtulivu na kuwa mwema kwako mwenyewe. Unaweka mfano mzuri kwa familia yako.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Kila jambo dogo unalolifanya ni la muhimu. Tunatumaini kuwa unajionea fahari pia.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Kila familia hukabiliwa na hali ya hatari. Tunapojiandaa pamoja na kujua mahali pa kupata msaada KABLA ya kutokea kwa jambo baya, tunaweza kuishinda hali yoyote ya hatari.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Habari zenu?\n\nMada ya leo inahusu kushughulikia hali ya hatari.\n\nHali ya hatari inaweza kutokea mahali popote. Hali ya hatari inaweza kutokea wakati wowote. Kwa hiyo, kama familia, ni muhimu kuwa na mipango ya kukabiliana na hatari kwa ajili ya mwanafamilia yeyote atakayejikuta kwenye hali ya hatari.\n\nNi muhimu kuwa na mipango ili kila mwanafamilia ahisi kulindwa.\n\nUnaposhughulikia hali ya hatari, kumbuka kupumzika, kupumua, na kutulia. Kufanya hivyo kutakusaidia kushughulikia hali ya hatari vizuri zaidi.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano\n* Hadithi & majadiliano\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari\n* Hadithi & tafakari\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Hali ya hatari inaweza kumtokea mtu yeyote.\n\nHebu tuone kilichotokea kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Jamani, Mjukuu wangu, unaonekana unasikitika sana, unataka kuniambia kilichotokea?\"", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ni Mjomba wangu, ali-… ali-… alinigusa.\"\n\n@global.w_crisis_female_caregiver (akiwaza): \"Vuta pumzi kidogo... Mwanangu anataka nini? Anataka nitulie na nimsikilize.\"\n\n@global.w_crisis_female_caregiver: \"Njoo ukae karibu na mimi. Usiwe na haraka, ninakusikiliza.\"", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Ni kweli, ali-… ali-… alisabisha nifanye hivyo! Alisababisha nifanye naye mapenzi! Naapa, sikutaka; hadi nikasema HAPANA, lakini akaniambia nitapata shida.\"\n\n@global.w_crisis_female_caregiver: \"Asante kwa kunishirikisha mimi pia. Usihofu. Hili sio kosa lako.\"", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Jana ulipoenda kumwona @global.w_crisis_adult_friend, alikuja na ndipo ikatokea.\"\n\n@global.w_crisis_female_caregiver: \"Hakuna shida, ninakuamini mwanangu. Hili ni jambo kubwa na tutatafuta njia ya kupata msaada tunaohitaji. Tunaweza kupata msaada wapi?\"\n\n@global.w_crisis_teen_girl_1: \"Shuleni kwetu?\"", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Ah najua, twende kliniki. Wao watajua tufanye nini ili kukusaidia. Je, hiyo ni sawa kwako?\"\n\n@global.w_crisis_teen_girl_1: \"Ndiyo… Sawa… Lakini, je, tunaenda wote na wewe?\"", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Ni sawa kabisa. Na @global.w_crisis_teen_girl_1? Kumbuka hili siyo kosa lako. Ninakupenda. Wewe ni mtu mzuri. Tutalimaliza hili.\"", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver wake! Jambo hili linaweza kuwatokea wavulana na wasichana.", - "What skills did @global.w_crisis_female_caregiver use?": "Je, @global.w_crisis_female_caregiver alitumia ujuzi upi?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ndiyo, kwa hakika @global.w_crisis_female_caregiver alitumia ujuzi huo wote – na wewe pia unaweza!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Tatizo jingine ambalo wazazi wengi wana wasiwasi nalo ni vurugu na uhalifu. Hebu tuangalie pamoja mfano mmoja.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, unaonekana una wasiwasi tangu jana. Kuna tatizo gani?\"", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Jana, mimi na marafiki zangu tulienda kwenye mpira. Kuna vijana waliokuwa wamelewa, walianza kupigana na rafiki yangu.\"\n\n@global.w_crisis_male_caregiver_1: \"Endelea, ninakusikiliza. Natumaini haukupigana?\"", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Sikutaka kupigana, lakini nisingeweza kukaa tu hapo na kuwaacha wampige rafiki yangu, kwa hiyo...\"\n\n@global.w_crisis_male_caregiver_1: \"Kwa hiyo, ulipigana ili kumtetea rafiki yako?\"", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Kila mtu alikuwa anapigana. Niliona mtu mmoja amelala uwanjani kwenye dimbwi la damu. Alionekana... amefariki.\"", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Nimefurahi unaniambia kuhusu jambo hili, @global.w_crisis_teen_boy_1. Hebu tukae pamoja sasa na kujadili iwapo tunapaswa kuwahusisha polisi au mtu mwingine wa kutusaidia.\"", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Asante, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Tutalimaliza hili. Kumbuka, tutakusaidia kama familia.\"", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_boy_1 na @global.w_crisis_male_caregiver_1 wake!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "Je, @global.w_crisis_male_caregiver_1 alitumia ujuzi upi?", - "All these skills can help in a crisis.": "Ujuzi wote huu unaweza kusaidia kwenye hali ya hatari.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Mgogoro unaweza kutufanya tukasirike au tujione wanyonge. Lakini huo ndio wakati hasa ambao vijana wetu wanatuhitaji sisi. Tuvute pumzi, tusikilize na kufikiri.", - "BREATHE": "VUTA PUMZI", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Tulia. Jiulize 'kijana wangu anahitaji nini sasa hivi'", - "Tell them you are there for them and love them.": "Mwambie upo kwa ajili yake na mpende.", - "THINK": "FIKIRI", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Zungumza na kijana wako. Kitu gani kinaweza kusaidia kwenye hali hiyo? Unaweza kutakiwa kupanga mipango ya haraka sasa, halafu mipango ya muda mrefu baadaye.", - "You can be proud of yourself for exploring ways to get help!": "Jionee fahari kwa kutafuta njia za kupata msaada!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Inasaidia sana kufanyia mazoezi namna ya kukabiliana na hali ya matatizo kabla haijatokea.\n\nHebu angalia nyakati hizi tano za matatizo katika familia. Chukulia kwamba wewe ni mzazi: Ungefanya nini?\n\nKumbuka: VUTA PUMZI – SIKILIZA – FIKIRI", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Tatizo la kwanza: @global.w_crisis_teen_boy_2 amepigana shuleni", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Sijawahi kufanya hivi. Na sasa watanifukuza.\"", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Tatizo la Pili: @global.w_crisis_teen_girl_1 amepata ujauzito", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, ninaona aibu sana. Sijui cha kufanya.\"", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Tatizo la Tatu: @global.w_crisis_teen_boy_2 amempa msichana mimba", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, sitaki kupata mtoto.\"", - "How could you respond to @global.w_crisis_teen_boy_2?": "Utafanyaje kwa @global.w_crisis_teen_boy_2?", - "Crisis 4: Someone in the family gets sick": "Tatizo la Nne: Mwanafamilia anaugua", - "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Vipimo vimeonesha nina VVU. Ninaogopa, nitakufa\"", - "How could you respond in this situation?": "Je, unafanyaje kwenye hali hii?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Tatizo la Tano: @global.w_crisis_teen_girl_1 anashinikizwa kufanya ngono na mpenzi wake", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Kwa kweli sikutaka kabisa kufanya hivyo. Sasa nitapata mimba au nitaumwa. @global.w_crisis_female_caregiver, ninaogopa sana...\"", - "How could you respond to @global.w_crisis_teen_girl_1?": "Je, utafanyaje kwa @global.w_crisis_teen_girl_1?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Kumbukeni kusaidiana na kutiana moyo. Ni vigumu kuendelea kutulia na kusikilizana kwenye hali ya tatizo – tunawaonea fahari.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Chagua hali mojawapo kati ya hizi pamoja na kijana wako (au chagua mwenyewe!). Angalieni katuni, halafu mjadili pamoja mtafanya nini kama hali hiyo itatokea kwa rafiki au kwenye familia yenu.\n\nNa kumbukeni: VUTA PUMZI – SIKILIZA – FIKIRI", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Umemaliza kipindi cha wiki hii.\n\nWarsha ya wiki ijayo tutasherehekea nyinyi nyote, na kuwasaidia kupanga mipango ya siku zijazo.\n\nKwa nini msipange kufanya pamoja sherehe itakayokuwa na chakula, na kuandaa muziki kama mtapenda kucheza!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Umemaliza kipindi cha wiki hii.\n\nKipindi cha wiki ijayo tutakusherehekea wewe, na unaweza kuchagua msaada unaoutaka ili kusonga mbele.\n\nUnaweza kuandaa sherehe – kitu unachopenda kula, au muziki unaopenda kusikiliza!", - "Self-care is a key parenting tool.": "Kujithamini ni nyenzo muhimu ya malezi.", + "Fantastic! And well done for investing in yourself and your family - you have accomplished a lot.": "Hongera! umefanya vizuri kuwekeza kwako na familia yako - umefanikisha mengi.", + "Sorry that you are not having the best day. Well done for trying to figure everything out. @global.parent_app is here to help.": "Pole kwa kutokuwa na siku nzuri zaidi. Umefanya vizuri kwa kujaribu kubaini kila kitu. @global.parent_app iko hapa kukusaidia.", + "Being a parent can be challenging. Take a deep breath and recognise all you have done for your family - you deserve praise!": "Kuwa mzazi kunaweza kuwa changamoto. Vuta pumzi na tambua yote uliyoifanyia familia yako - unastahili kusifiwa!", + "Welcome @fields.user_name": "Karibu @fields.user_name", + "It's great to see you again!": "Tunafurahi sana kukuona tena!", "How are you feeling today?": "Unajisikiaje leo?", - "So good to hear you are feeling well today. You are incredible!": "Tunafurahi sana kusikia kuwa unajisikia vizuri leo. Unastaajabisha!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Tunasikitika kuona kuwa mambo ni magumu sasa hivi. Vuta pumzi ndefu na ujue kuwa unathaminiwa.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Unaweza kumsaidia kijana wako kuelewa kwamba kuvunja sheria za familia kunasababisha mtu kufanya malipo.\n\nLakini NAMNA unavyofanya jambo hilo ni muhimu.\n\nKuweka njia sahihi huwasaidia vijana kuwa na tabia nzuri zaidi na hufanya maisha ya familia kuwa tulivu zaidi...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Habari, kila mmoja.\n\nMaada ya leo ni adhabu tulivu.\n\nNi muhimu kwamba tunapotambulisha adhabu kwa vijana wetu tuwahusishe, lakini pia ni muhimu kwamba sisi ni watulivu tunapotambulisha adhabu.\n\nHiyo itatusaidia kukubaliana kwenye kutambulisha adhabu tulivu kwa vijana wetu na vijana wetu watazikumbuka kirahisi wakiwa wameshirikishwa na kwamba itawafanya kuwa wawajibikaji.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Mifano ya athari\n* Nyenzo: Jinsi ya kufanya athari nyepesi \nELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Mifano ya athari \n* Nyenzo: Jinsi ya kutoa athari \n* ELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari \n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "Well done!": "Hongera!", + "How to talk to my teen": "Jinsi ya kuongea na kijana wangu", + "Steps to deal with news": "Hatua za kukabiliana na habari", + "How can I help my teen choose well?": "Jinsi gani naweza kumsaidia kijana wangu kuchagua vizuri?", + "What influences teen decisions?": "Nini kinapelekea maamuzi ya kijana?", + "How does my teen feel?": "Kijana wangu anajisikiaje?", + "Changing negative to positive": "Kubadili hasi kuwa chanya", + "You are doing amazing, keep up the good work.": "Unafanya vizuri sana, endeleza kazi nzuri.", + "Your teen is so lucky to have you as a parent.": "Kijana wako ana bahati ya kuwa nawe kama mzazi wake.", + "Parenting can be hard, but @global.parent_app is here to help you win.": "Malezi yanaweza kuwa magumu lakini @global.parent_app iko hapa kukusaidi kushinda.", + "Spending 1 minute learning about parenting makes a world of difference.": "Kutumia dakika 1 kujifunza kuhusu malezi inaleta mabadiliko duniani.", + "A private family foundation which wishes to remain anonymous": "Msingi binafsi wa familia ambao ungependa kubaki bila kutambuliwa", + "**Relax** @global.parent_point": "@global.parent_point ya **Chukua pumziko**", + "Do a short relaxation activity: Take a deep breath or open one of the relaxation activities in @global.parent_app. You can do this anytime or anywhere. Taking care of yourself helps you to take care of others.": "Fanya zoezi fupi la kukutiliza: Vuta pumzi ndefu au fungua zoezi moja wapo la kukutuliza kwenye @global.parent_app. Unaweza kufanya hivi saa yoyote au mahali popote. Kujijali inakusaidia kuwajali wengine.", + "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Kila mara unapopumzika, bofya @global.parent_point na usherehekee mafanikio yako!", + "Treat yourself well": "Jitendee vizuri", + "**Treat yourself well** @global.parent_point": "@global.parent_point ya **Jitendee vizuri**", + "Even a bit of time for yourself will make a big difference in how you feel and respond in day-to-day life!\n\nDo something that makes you feel good: Have a hot drink, call a friend or relative, have a relaxing bath, read, or watch your favourite series.": "Hata muda mchache kwa ajili yako mwenyewe italeta tofauti kubwa katika namna unavyohisi na unavyokabiliana na maisha ya kila siku!\n\nFanya kitu kitachokufanya uhisi vizuri: Kunywa kinywaji cha moto, mpigie rafiki au jamaa, oga kwa ajili ya kutulia, soma au tazama kipindi ukipendacho.", + "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Kila mara unapojitendea vizuri, bofya @global.parent_point na usherehekee mafanikio yako!", + "**Praise yourself** @global.parent_point": "@global.parent_point ya **Jisifie**", + "Notice when you do something well and take a moment to appreciate yourself for it. Life can be challenging, but you are moving forward - you deserve praise for the big and the small things!": "Zingatia unapofanya kitu vizuri na uchukue muda kujipongeza. Maisha yanaweza kuwa magumu, lakini wasonga mbele - unastahili pongezi kwa makubwa na madogo!", + "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Kila mara unapojisifia, bofya @global.parent_point na usherehekee mafanikio yako!", + "One-on-one time": "Muda wa kutumia wawili", + "**One-on-one time** @global.parent_point": "@global.parent_point ya **Muda wa kutumia pamoja wawili**", + "Spend uninterrupted time together with your teen, doing something that THEY want or like to do. The more you do it the stronger your relationship gets.": "Tumia muda na kijana bila kuingiliwa, fanya kitu anachokitaka au anapenda kufanya. Kadiri mnapofanya zaidi ndivyo mahusiano yanaimarika.", + "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!": "Kila mara mnapotumia pamoja wawili, bofya @global.parent_point na usherehekee mafanikio yako!", + "Praise your teen": "Msifie kijana wako", + "**Praise your teen** @global.parent_point": "@global.parent_point ya **Msifie kijana wako**", + "Notice when your teen does something well and praise them right away - be specific and use their name. You can even praise them for trying.\n\nThe more you praise, the more positive behaviour you will see!": "Zingatia pale kijana wako anapofanya kitu vyema na umsifie papo hapo - kwa jambo maalumu alilolifanya na utumie jina lake. Unaweza ukamsifia kwa kujaribu.\n\nKadiri unavyo kumsifia, ndivyo utavyozidi kuona tabia chanya!", + "Every time you praise your teen, tap the @global.parent_point and celebrate your success!": "Kila mara unapomsifia kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", + "**Positive instructions** @global.parent_point": "**Maelekezo chanya** @global.parent_point", + "Tell your teen what you DO want them to do, instead of what you DON'T want them to do. Be realistic, positive and specific when you give your teen instructions.": "Mwambie kijana wako kile unachotaka akifanye badala ya kile usichotaka akifanye. Unapompa kijana wako maelekezo kuwa halisi, chanya na bayana.", + "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!": "Kila mara unapotoa maelekezo chanya, bofya @global.parent_point na usherehekee mafanikio yako!", + "Respond calmly": "Itikia kwa utulivu", + "**Respond calmly** @global.parent_point": "**Itikia kwa utulivu** @global.parent_point", + "When you are feeling angry or stressed, choose to take a breath, share how you feel and respond calmly.": "Wakati unapohisi hasira au mfadhaiko, chagua kuvuta pumzi, mshirikishe unavyohisi na itikia kwa utulivu.", + "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!": "Kila mara unapotulia kabla ya kujibu, bofya @global.parent_point na usherehekee mafanikio yako!", + "Good money choice": "Maamuzi mazuri kuhusu pesa", + "**Good money choice** @global.parent_point": "@global.parent_point ya **Maamuzi mazuri kuhusu pesa**", + "Make one of these good money choices:\n* Spend money according to your family budget. \n* Save extra money this week.\n* Respond well to a crisis that involves money.\n* Help a family member stick to your family budget.\n* Recognise something is a 'want' instead of a 'need'.": "Fanya mojawapo ya maamuzi haya mazuri ya kifedha: \n*Tumia fedha kulingana na bajeti ya familia yako.\n*Tunza fedha ya ziada wiki hii.\n*Itikia vyema katika changamoto zinazohusu fedha. \n*Msaidie mwana familia kuzingatia bajeti ya familia. \n*Tambua kitu ni 'tamanio' badala ya 'hitaji'.", + "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!": "Kila mara unapofanya maamuzi mazuri kuhusu mahitaji, matamanio na kujiwekea akiba, bofya @global.parent_point na usherehekee mafanikio yako!", + "Calm consequence": "Athari Nyepesi", + "**Calm consequence** @global.parent_point": "@global.parent_point ya **Athari nyepesi**", + "When your child is behaving badly, take a deep breath and give a consequence in a calm way.\n\nAgree on the calm consequence with your teen before the negative behaviour happens. Make sure it is realistic, manageable and fits the behaviour you are trying to correct.": "Pale mtoto wako anapokuwa na tabia mbaya, vuta pumzi ndefu na mpe adhabu kwa namna ya utulivu. \n\nKubaliana na kijana wako adhabu nyepesi kabla tabia mbaya haijatokea. Hakikisha kuwa ni halisi, inafanyika na inaendana na ile tabia unayojaribu kurekebisha.", + "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!": "Kila mara unapoamuru kufanywa kwa athari nyepesi, bofya @global.parent_point na usherehekee mafanikio yako!", + "Keep your teen safe": "Muweke kijana wako salama", + "**Keep your teen safe** @global.parent_point": "**Muweke kijana wako salama** @global.parent_point", + "Help your teen stay safe by doing one of these things:\n* Map out or talk about safe and unsafe spaces in your community.\n* Map out or talk about safe and unsafe spaces online.\n* Make rules with your teen about how they can stay safe in the community and online.\n* Explain, remind, or use your teen's \"@global.safety_word\": Your teen can always tell you if they are in a dangerous or difficult situation, and you won't get angry or punish them.": "Msaidie kijana wako kuwa salama kwa kufanya mojawapo ya vitu hivi:\n*Tambua au zungumza kuhusu sehemu salama na zisizo salama katika jamii yako.\n*Tambua au zungumza kuhusu sehemu salama na zisizo salama mtandaoni.\n* Tengeneza sheria na kijana wako kuhusu jinsi wanavyoweza kuwa salama katika jamii na mtandaoni.\n* Mueleze, mkumbushe au tumia \"@global.safety_word\": Kijana wako anaweza kukuambia kila wakati iwapo yupo katika hali hatarishi au ngumu, na hutokasirika au kuwaadhibu.", + "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!": "Kila mara unapofanya jambo ili kumweka salama kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", + "Did it? Tap it!": "Ulifanya hivyo? Bofya!", + "Did you have any challenges when trying to praise your teen?": "Je, ulikuwa na changamoto zozote ulipojaribu kumsifu kijana wako?", + "I forgot to do it.": "Nilisahau kufanya hivyo.", + "My teen was surprised or suspicious.": "Kijana wangu alishtushwa au kushangaa.", + "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!": "Kumbuka, inachukua muda kwa kijana wako kuzoea kukuona ukimsifu. Kadri unavyotumia muda mwingi pamoja naye, ndivyo itakavyokuwa bora zaidi!", + "My teen did not like it.": "Kijana wangu hakuipenda.", + "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Huwa inatokea - kuwa tu mvumilivu. Hakikisha unaendelea kutumia muda wa pamoja na kijana wako, kwa namna hiyo atathamini mawazo yako zaidi na zaidi. Ukimsifia kwa moyo wa dhati, utaona faida zake hivi karibuni!", + "Did you have any challenges when sharing how you feel with your teen?": "Je, ulipata changamoto ulipomshirikisha kijana wako hisia zako?", + "I was afraid my teen would think I was weak.": "Niliogopa kijana wangu angeniona mimi dhaifu.", + "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.": "Kushirikishana hisia, hasa zile ngumu, huonesha mfano wa kuigwa kwa kijana wako! Kwa hakika humfanya kila mtu kwenye familia kuwa imara zaidi, kwa sababu mnaweza kuelewana na kusaidiana vizuri zaidi.", + "I felt uncomfortable about naming specific difficult feelings.": "Sikujisikia vizuri kuhusu kutaja hisia fulani ngumu.", + "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.": "Kuwa mahususi si kukosa adabu au kutojali – husaidia sana wengine kukuelewa vizuri na hivyo kuzuia kutoelewana kwenye familia. Hisia kama hasira na msongo wa mawazo ni sehemu ya maisha yetu. Kitu pekee tunachohitaji kufanya tunapohisi hasira na msongo wa mawazo ni kudhibiti vizuri hisia zetu kwa kuvuta pumzi ndefu mara kadhaa kabla ya kuamua cha kujibu.", + "My teen felt uncomfortable when I shared my feelings.": "Kijana wangu hakujisikia vizuri nilipomshirikisha hisia zangu.", + "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!": "Kuanza kitu kipya mara zote ni vigumu. Jipe muda wa kuzoea na endelea kuonyesha mfano mzuri kwa kutambua hisia zako na kuwashirikisha wengine. Baada ya muda, kijana wako atajifunza kufanya hivyohivyo, na atahisi kupendwa na kutunzwa mno!", + "When I shared my feelings, my teen asked many questions, which made me uncomfortable.": "Nilipomshirikisha kijana wangu hisia zangu, aliuliza maswali mengi ambayo yalinifanya nisijikie raha.", + "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Kuwashirikisha wengine hisia zako humsaidia kijana wako kufahamu na kujifunza kufanya hivyohivyo. Unaweza kuchagua mambo unayotaka kuwashirikisha wengine kuhusu hali hiyo. Ni juu yako! Unaweza pia kuchagua kujibu maswali baadaye kwa kusema, “Sasa hivi ninahisi hasira/msongo wa mawazo. Unaweza kunipa muda, tafadhali? Tunaweza kuzungumza zaidi kuhusu jambo hili leo usiku”.", + "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Nilikuwa na hasira mno au msongo mkubwa wa mawazo kuweza kujaribu kuelezea hisia zangu – ninapendelea kuwa peke yangu ninapohisi hivyo.", + "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Si vibaya kutotaka kuwashirikisha wengine kwa wakati huo. Tafuta muda wa kuwaelezea baadaye, unapohisi utulivu zaidi, ili kila mtu aelewe.", + "Did you have any challenges when making your budget together?": "Je, mlipata changamoto zozote mlipokuwa mnatengeneza bajeti pamoja?", + "I did not want to tell my family how much I earn.": "Sikutaka kuwaambia familia yangu kiasi gani huwa napata.", + "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.": "Sio lazima kuwaambia kiwango halisi cha kipato chako; unaweza kuwaambia makadirio. Unaweza kusema, \"Katika kaya hii, tunapata @global.currency@global.monthly_income_estimate kila mwezi\" badala ya, \"Ninapata @global.currency@global.monthly_income_precise\".", + "When budgeting, we could not agree on what should fall under needs and what should fall under wants.": "Wakati wa kutengeneza bajeti, hatukuweza kukubaliana kitu gani kiwe mahitaji na kitu gani kiwe matamanio.", + "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.": "Wakati mwingine, matamanio na mahitaji ya watu hutofautiana. Kuyazungumzia pamoja hukusaidia wewe na kijana wako kuelewana, kuheshimu tofauti zenu, na kutafuta mnapoweza kuafikiana.", + "I did not understand what to do.": "Sikuelewa nini cha kufanya.", + "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Nasikitika kusikia hili. Najua inaweza kuwa vigumu! Kwa nini tusipitie tena? Kijana wako au wanafamilia wengine wanaweza kujiunga na kukusaidia!", + "My teen did not want to do the budgeting with me.": "Kijana wangu hakutaka kupanga bajeti na mimi.", + "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Jaribu kwanza kupanga bajeti na watu wazima wengine katika familia yako. Kijana wako anaweza kuvutiwa na kile mnachofanya.\n\nKutengeneza bajeti kunaweza kuonekana ni jambo zito, lakini jaribu kulifanya kuwa la kufurahisha - Lifanye kwa kutumia mchezo wakati wa muda wa pamoja! Au unaweza kujaribu kutengeneza bajeti kwa @global.w_money_grandma kwanza.\n\nKumbuka kuwasifia mnapomaliza!", + "Did you have any challenges when trying to make a rule together?": "Je, mlipata changamoto yoyote mlipojaribu kutengeneza sheria pamoja?", + "My teen and I could not agree on a rule.": "Mimi na kijana wangu hatukuweza kukubaliana kuhusu sheria fulani.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Fikiria kama sheria ina mantiki. Kijana wako anaweza kuifuata? Mnapotunga sheria kama familia, ni vizuri ukafikiria kuhusu kijana wako, umri wao, na nini ambacho ni muhimu kwao.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Kijana wangu alihisi kuwa haikuwa haki kwake kuifuata sheria hiyo wakati mimi sihitaji kuifuata.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Kila wakati, tunapaswa kukumbuka kuwa watoto hujifunza vizuri zaidi kutoka kwetu. Kadiri tunavyofuata sheria, ndivyo pia nao watakavyofuata sheria.\n\nUnaweza kurekebisha sheria ili kuhakikisha kuwa inaweza kufuatwa na kila mtu, kwa kuzingatia majukumu yako na majukumu ya kijana wako (kwa mfano, shughuli za shuleni au za kazini).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Nilijisikia vibaya, kwa sababu ninahisi kwamba mimi ndiye ninapaswa kuweka sheria hiyo, si kijana wangu.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Mwenza wangu alijisia vibaya, kwa sababu anahisi kwamba yeye ndiye anapaswa kuweka sheria hiyo, si kijana huyo.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Tunapoweka sheria pamoja na vijana wetu, husaidia familia kuelewana vizuri zaidi. Sheria hizo zitakuwa na uhalisia zaidi, na vijana wetu watakuwa na utayari zaidi na wataweza kuzifuata sheria hizo.", + "When we tried to set a rule, we got into an argument.": "Tulipojaribu kuweka sheria, tulijikuta tunabishana.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Je, kijana wako alikuwa na hali nzuri kihisia mlipojaribu kuweka sheria? Ni vizuri zaidi kutengeneza sheria wakati kukiwa na hali ya utulivu. Kama wewe au kijana wako atakuwa amechoka au ana njaa, ni vizuri zaidi kuzungumzia sheria baadaye.", + "We were not able to stick to the rule.": "Hatukuweza kufuata sheria.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Sheria zinapaswa ziwe mahususi na zinazotekelezeka. Hakikisha kuwa una sheria inayoweza kufuatwa kwa urahisi, kama vile kula mlo mmoja pamoja kila Jumapili badala ya kila siku usiku. Je, unahitaji kuwe na uwezekano zaidi wa kubadilisha sheria hiyo?", + "Did you have any challenges when trying to introduce a consequence together?": "Je, mlipata changamoto zozote mlipojaribu pamoja kuweka athari?", + "I got very angry when my teen broke the rule.": "Nilikasirika sana pale kijana wangu alipovunja sheria.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Kupumzika kabla ya kujibu kunatusaidia kutulia na kujibu vizuri zaidi.\n\nKijana wako akikukasirisha tena, jaribu kwanza kupumzika. Kuvuta pumzi ndefu chache tu kunaweza kuleta mabadiliko makubwa!", + "My teen got very angry with me after I gave the consequence.": "Kijana wangu alinikasirikia sana nilipomuamuru afanye athari.", + "When your teen gets angry, you might need to walk away until you are both calm.\n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and react calmly as you agreed if they used the “@global.safety_word” or broke a rule in order to stay safe.": "Kijana wako anapokasirika, unaweza kuhitaji kuondoka karibu nae hadi nyote mtakapokuwa mmetulia.\n\nTazama ili kuhakikisha kuwa madhara ni ya kawaida na ya busara. Sikiliza maelezo ya kijana wako, na hakikisha unatoa \"@global.safety_word” au kama alivunja sheria ili kuwa salama.", + "I introduced the consequence without first discussing it with my teen.": "Niliweka athari bila kuijadili kwanza na kijana wangu.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Je, unaweza kuweka athari kwa ajili ya jambo hili likitokea tena? Tunapoweka athari pamoja na vijana wetu, athari hizi zitakuwa na uwezekano mkubwa wa kutekelezeka, na vijana wetu watakuwa tayari zaidi na watakuwa na uwezo zaidi wa kufuata sheria hiyo.", + "I forgot to follow through with the consequence.": "Nilisahau kufuatilia athari mpaka mwisho.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sisi sote huwa tunakosea! Kadri tunavyokuwa na msimamo kwenye athari tulizoziweka, ndivyo watoto wetu watakavyokuwa na uwezekano mkubwa wa kuchagua kuwa na mwenendo chanya siku za usoni.", + "Even with the consequence, my teen still does not follow the rule.": "Pamoja na kuweka athari, bado kijana wangu hafuati sheria.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Kama kijana wako anaendelea kuvunja sheria, unaweza kuhitaji kutumia muda chanya zaidi pamoja naye.\n\nJaribu kuendelea na malengo yako mengine – kama kujithamini, muda wa kuzungumza wawili, na usifiaji. Ujuzi huu wote utamsaidia kijana wako kuhisi anapendwa zaidi na kulindwa… na wewe kupunguza msongo wa mawazo!", + "We only created a negative consequence, not a positive consequence.": "Tuliweka njia ya malipo hasi tu, na si malipo chanya.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Wakati mwingine ni vigumu kufikiria athari chanya. Athari zitamchochea kijana wako kuwajibika zaidi, na utaona mabadiliko!", + "My teen suggested being hit as a negative consequence.": "Kijana wangu alipendekeza kuchapwa kama athari hasi.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Vijana wanaweza kuzoea kuona kuchapwa ndo athari pekee ya kuvunja sheria.\n\nFikiria kwa undani pamoja nao kuhusu baadhi ya athari nyepesi zinazoweza kuwasaidia kuelewa kwamba wamefanya kosa. Hizi zitaleta ufanisi zaidi na kutoa mifano chanya!", + "Did you have any challenges when trying to resolve the problem with your teen?": "Je, ulipata changamoto yoyote ulipojaribu kutatua tatizo na kijana wako?", + "I forgot the steps of problem solving.": "Nilisahau hatua za kutatua matatizo.", + "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!": "Inachukua muda kidogo na mazoezi kuweza kutumia hatua zote nne za kutatua matatizo. Tatizo litakapotokea tena, pitia hatua hizi nne pamoja na kijana wako – kufanya hivyo kutaleta mabadiliko makubwa!", + "I started with the solutions right away.": "Nilianza na suluhisho moja kwa moja.", + "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.": "Tunapokuwa na tatizo, mara zote huwa tunataka kulitatua haraka sana na tunaweza kusahau hatua za kulitatua tatizo. Ili kupata suluhisho bora kwa pamoja, ni vema kwanza kulielewa tatizo kikamilifu na njia mbalimbali za kulitatua.", + "Four steps of problem solving": "Hatua nne za kutatua matatizo", + "We could not agree on a solution to try out and we got into an argument.": "Hatukuweza kukubaliana kuhusu suluhisho la kulijaribu hivyo tuliishia kulumbana.", + "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.": "Wakati mwingine inaweza kuwa vigumu kukubaliana na kila mtu katika familia, hasa kama kila mtu bado hajatulia. Mnaweza kukubaliana kujaribu suluhisho moja kwanza, na kisha mjaribu suluhisho lingine. Pia, kama mtakwama, jaribuni kukutana baadaye ili mkubaliane pamoja kuhusu suluhisho hilo.", + "I got angry when the problem came up and I forgot to use the problem-solving steps.": "Nilikasirika tatizo lilipotokea, nikasahau kutumia hatua za kutatua matatizo.", + "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Tatizo linapojitokeza, huwa tunakasirika au kufadhaika wakati mwingine. Kumbuka, unapohisi hasira au msongo wa mawazo, unaweza kupumzika kwanza ili utulie halafu ndipo utatue tatizo linalokukabili.", + "My teen got angry and did not want to talk about the problem.": "Kijana wangu alikasirika na hakutaka kuzungumzia tatizo hilo.", + "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Kijana wako anaweza kushindwa kabisa kushughulikia tatizo mara moja. Zitambue na kuzipa majina hisia zake, halafu tafuta muda baadaye siku hiyo au wiki hiyo mjadili na kutatua tatizo hilo pamoja. Unapotenga muda kwa ajili ya kijana wako, tatizo linaweza kutatuliwa vizuri.", + "Did you have any challenges when trying to map risks and support with your teen?": "Je, ulikuwa na changamoto yoyote ulipojaribu kuhainisha sehemu za hatari na za msaada ukiwa na kijana wako?", + "My teen and I disagreed on which areas and online activities were unsafe.": "Mimi na kijana wangu hatukukubaliana kuhusu maeneo na shughuli za mtandaoni ambazo hazikuwa salama.", + "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.": "Hongera kwa kujaribu shughuli hii! Tunapowasikiliza vijana wetu, hata kama hatukubaliani nao, tunajifunza kuelewa wanavyofikiri. Jaribu kutafuta muda wa kufanya shughuli hii tena – jaribu kusikiliza na kuonesha kuwa unawaelewa kabla ya kuwashirikisha mawazo yako.", + "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.": "Kijana wangu alitambua nyumba ya mtu ninayemwamini kuwa si salama. Nilishtuka na sikujua cha kufanya.", + "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.": "Ni jambo la kushtua kujua kwamba watu walio karibu nasi na tunaowaamini wanaweza kuwa hatari kwa vijana wetu. Kumbuka kuchukua pumziko unapokuwa umekasirika, na jaribu kumsikiliza kijana wako kwa utulivu. Tafuta mtu unayeweza kuzungumza naye kuhusu jambo hili, labda rafiki au huduma ya msaada, ili uweze kupata msaada unaohitaji.", + "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.": "Kijana wangu alisisitiza kwamba baa (au mahali pengine ninapohisi si salama) ni salama kwake kupatembelea. Sijui jinsi ya kumshawishi kijana wangu.", + "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.": "Jambo hili linaweza kukatisha tamaa sana. Ili kupata suluhisho, kijana wako anahitaji kuhisi kuwa anasikilizwa – kwa hiyo, sikiliza kwa utulivu sababu za kijana wako, halafu ndipo umshirikishe maoni yako. Kisha, shirikianeni kuweka sheria inayomruhusu kufurahi huku akiwa salama.", + "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.": "Kama mtu mzima, ninahisi ninawajibika kumlinda – lakini nilipomwambia kijana wangu kuhusu kilicho salama na kisicho salama, alikasirika.", + "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.": "Vijana wetu wanaweza kujua mambo yanayohusu jamii zetu na teknolojia ambayo hatuyajui. Tunapowashirikisha kikamilifu vijana wetu kwenye shughuli ya ubainishaji na kuwasikiliza, watajisikia kuwa wanasikilizwa na kuthaminiwa, na inaweza kuwa rahisi zaidi kupata mpango unaokubaliwa na kila mmoja.", + "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.": "Ilikuwa vigumu kutambua rasilimali zinazotoa msaada katika jamii yangu, kwa sababu siijui vizuri jamii yangu / kuna huduma chache zinazopatikana.", + "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Ni vigumu kujua kila kitu kuhusu jamii zetu. Shirikisha rafiki au mwanafamilia mwingine katika shughuli yako ya ubainishaji. Unaweza hata kutembelea baadhi ya huduma zinazopatikana na kuuliza wanachofanya. Kadri tunavyojua mengi, ndivyo tunavyoweza kuziweka salama familia zetu!", + "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Sifahamu mengi kuhusu teknolojia, kwa hiyo sijui jinsi ya kuizungumzia na kijana wangu.", + "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Hakuna shida kabisa! Bado unaweza kumsaidia kijana wako. Muulize kijana wako aeleze vifaa vya kielektroniki anavyotumia – unaweza kumuuliza wakati mnapozungumza wawili. Hii ni fursa nzuri sana ya kuonesha moyo wa kupenda kujua maisha ya kijana wako na kujadili pamoja hatari zinazoweza kutokea. Kama hamna uhakika muweke sheria gani, kila mara unaweza kukubaliana na kijana wako kujaribu sheria mpya kwa wiki mbili, kisha mtajadili jinsi mambo yanavyoenda na kubadilisha sheria ikibidi!", + "Did you have any challenges when trying to prepare for a possible crisis with your teen?": "Je, ulikuwa na changamoto yoyote ulipojaribu kujiandaa kwa ajili ya janga linaloweza kutokea na kijana wako?", + "My teen told me that something serious happened to them and I did not know how to handle it.": "Kijana wangu aliniambia kuwa kuna jambo kubwa limempata na sikujua jinsi ya kulishughulikia.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Msifie kijana wako kwa kukuambia; kufanya hivyo si jambo rahisi! Kumbuka, unaweza kutumia ujuzi wote uliojifunza kwenye kivungezana: Pumzika kidogo, tumia hatua nne za kutatua matatizo, halafu tafuta msaada unaouhitaji wewe na kijana wako!", + "Get support": "Pata msaada", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Mazungumzo hayo yalininyima raha kabisa kwa sababu yalinikumbusha wakati mbaya nilioupitia.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Tunapokumbushwa nyakati kama hizo, ni kawaida kuhisi kufadhaika au kukasirika. Ni muhimu kutafuta muda ambao umetulia, ili uweze kufikiria msaada unaouhitaji. Unaweza kuhitaji kuzungumza na mtu.", + "One of us did not feel comfortable.": "Mmoja wetu hakujisikia vizuri.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Haya ni mambo magumu kuyazungumzia. Tafuta muda wa utulivu kwa ajili hiyo. Tunajua ni rahisi zaidi kutozungumzia mambo haya na kuamini kuwa hayatakuja kututokea. Hata hivyo, kujifunza jinsi ya kushughulikia hali ya matatizo ni kama kupata bima; DAIMA ni bora zaidi kuifikiria na kujiandaa mapema.", + "Challenges other parents experience:": "Changamoto wanazopitia wazazi wengine:", + "Your goal was to spend one-on-one time with your teen.": "Lengo lilikuwa kuwa na muda wa pamoja na kijana wako.", + "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will definitely improve your relationship!": "Wakati mwingine ni rahisi na inafurahisha kutumia muda pamoja na vijana wako,na wakati mwingi inakuwa ina changamoto zaidi. Kutumia muda pamoja itaboresha mahusiano yenu!", + "Your goal was to praise your teen.": "Lengo lako lilikuwa kumsifia kijana wako.", + "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.": "Muda mwingine inaweza kuwa vigumu kukumbuka kuwasifia vijana wetu. Wakati mwingine ukiwa unatumia muda wa pamoja na kijana wako, jaribu na fikiria kitu kimoja unachoweza kumsifia. Unaweza hata ukasema, “ Asante kwa kutumia muda pamoja na mimi!”.", + "Great to hear it went well! Keep up the praise - you will see your teen do more and more of the behaviour you like to see!": "Ni vizuri sana kusikia ilienda vizuri! Endelea kusifia - utamuona kijana wako anafanya zaidi na zaidi tabia unazopenda kuziona akizifanya!", + "It sometimes takes a bit of time to adjust to praising, but it makes a big difference, you will see.": "Wakati mwingine inachukua muda kidogo kuanza kusifia, lakini huleta mabadiliko makubwa, utaona.", + "Sorry that you struggled with this. Starting with praise can take some practice, but you will see the positive results soon!": "Pole kwa kuwa ulipambana na hili. Kuanza kusifia kunaweza kunahitaji mazoezi, lakini utaona matokeo mazuri hivi karibuni!", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Unastahili pongezi pia. Asante kwa mara nyingine kwa kutumia @global.parent_app. Inaonesha unajali sana!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako.", + "Great to hear it went well. You are a star!": "Nimefurahi kusikia ilienda vizuri. Wewe ni shujaa!", + "Giving instructions in a new way takes some practice. Keep trying, you will soon see the difference it makes!": "Kutoa maagizo kwa njia mpya kunahitaji mazoezi fulani. Endelea kujaribu, hivi karibuni utaona tofauti yake!", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Asante kwa kushirikisha wengine! Hongera kwa kujaribu kumpa kijana wako maelekezo chanya na kwa kujenga uhusiano chanya na kijana wako.\n\nKijana wako anastahili kusifiwa na WEWE pia!", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. \n\nYour goal was also to talk to your teen about how you both felt in a stressful situation.": "Wiki hii, lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kukasirika, unavuta pumzi tano ndani na nje kabla ya kujibu.\n\nLengo lako lilikuwa pia kuzungumza na kijana wako kuhusu jinsi nyinyi wawili mlivyohisi katika hali ya msongo wa mawazo.", + "Life can be so stressful. Every small step counts. Keep up the good work!": "Maisha yanaweza kutupa msongo wa mawazo. Kila hatua ndogo inahesabiwa. Endelea na kazi nzuri!", + "Your goal was to make a family budget and savings plan.": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba.", + "It is never easy to talk about money. Well done on starting the conversation and teaching your teen about this.": "Haijawahi kuwa rahisi kamwe kuzungumza juu ya pesa. Hongera sana kwa kuanzisha mazungumzo na kumfundisha kijana wako kuhusu hili.", + "Sorry to hear it was difficult for you. Well done for trying. Helping your teen understand money better will benefit them so much in life!": "Pole kusikia ilikuwa ngumu kwako. Umefanya vizuri kujaribu. Kumsaidia kijana wako kuelewa pesa vizuri itamnufaisha sana maishani!", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Asante kwa kushirikisha uzoefu wako! Hongera sana kwa kufikiria jinsi unavyoweza kupanga bajeti na kuweka akiba na familia yako. Kufanya hivyo kutakusaidia sana kuweza kufikia malengo ya familia yako.\n\nKwa pamoja, mnaweza kufanikisha mambo mengi sana mazuri!", + "Your goal was to make ONE rule with your teen.": "Lengo lako ilikuwa kutengeneza sheria moja na kijana wako.", + "It can be hard to create your first rule together, but you will see the benefits of involving your family. Keep trying!": "Inaweza kuwa vigumu kuunda sheria yako ya kwanza pamoja, lakini utaona manufaa ya kuhusisha familia yako. Endelea kujaribu!", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Umefanya vizuri sana kwa hili! Si rahisi, na vijana hawawezi kutii sheria wakati wote, lakini kwa kutengeneza sheria muhimu kwa pamoja ni mwanzo mzuri. Jipongeze kwa kujaribu hili - tunajivunia wewe!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kuvunja sheria ya kaya).", + "Staying calm and consistent can be hard, but you are doing so well. You can do this!": "Kukaa kwa utulivu na thabiti inaweza kuwa ngumu, lakini unafanya vizuri sana. Unaweza kufanya hii!", + "Sorry that this was difficult for you. Setting consequences together will make your teen want to follow the rules more often!": "Pole kwamba hii ilikuwa ngumu kwako. Kuweka matokeo pamoja kutafanya kijana wako atake kufuata sheria mara nyingi zaidi!", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Lengo lako lilikuwa kujaribu kutatua tatizo au mgogoro pamoja na kijana wako.", + "Solving problems together takes some practice. The more often you involve your teen when you are both calm, the better it will go. Well done for trying!": "Kutatua matatizo pamoja kunahitaji mazoezi fulani. Kadiri unavyomhusisha kijana wako mara nyingi wakati wote mmetulia, ndivyo mambo yatakavyokuwa mazuri zaidi. Umefanya vizuri kwa kujaribu!", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Lengo lako lilikuwa kubainisha maeneo ya hatari na sehemu za msaada pamoja na kijana wako – kwenye jamii yako na mtandaoni.", + "Even if it did not go so well yet, you will get there! Mapping risks and support systems together will help your family. Well done for trying.": "Hata kama haijaenda vizuri bado, Utafanikiwa! Kubainisha maeneo hatari kwa pamoja na mifumo ya msaada itasaidia familia yako. Vizuri sana kwa kujaribu.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Lengo lako lilikuwa kujadili na kijana wako hali ya mgogoro inayoweza kutokea na kuweka mpango wa kukabiliana nayo.", + "It can be hard to think and talk about a crisis happening in your family. By trying you are already on the right path. Keep up the good work!": "Inaweza kuwa vigumu kuzungmzia majanga yanayotokea katika familia yako. Kwa kujaribu tu, tayari upo katika njia sahihi. Endelea na kazi nzuri!", + "Did you have a chance to try this?": "Je, ulipata nafasi ya kujaribu hili?", + "That's okay, don't be too hard on yourself. We encourage you to try and do it when you can.": "Hiyo ni sawa, usiwe mgumu sana kwako mwenyewe. Tunakuhimiza ujaribu kuifanya unapoweza.", + "How did it go?": "Je, liliendaje?", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Hongera sana kwa kutafuta njia za kutatua changamoto zako. Nenda ukazijaribu. Uhusiano wako na kijana wako utaimarika zaidi na zaidi!", + "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!": "Vizuri sana! Hongereni kwa kutumia muda pamoja. Kufanya hivyo kunaweka msingi wa uhusiano mzuri sana na kijana wako!", + "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!": "Heri yako! Kutumia muda wa pamoja unawaonesha vijana wako kuwa wao ni watu muhimu kwako. Kufanya hivyo kunaleta mabadiliko!", + "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!": "Vizuri sana! Kutumia muda pamoja na kijana wako kunaweza kumfanya kijana wako awe tayari kusaidia mara nyingi. Unafanya vizuri sana!", + "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!": "Hongera! Kutumia muda wa pamoja na kijana wako unakupa nafasi ya kujifunza zaidi kuhusu mambo anayoyapendelea na uwezo wake. Wewe ni mshindi!", + "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.": "Kazi nzuri sana! Kutumia muda pamoja kunasaidia kujenga uhusiano mzuri na imara kati yako na kijana wako.", + "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!": "Wakati mwingine, kutumia muda pamoja na vijana wako kutakuwa rahisi na kutafurahisha, na wakati mwingine kutakuwa kugumu zaidi. Kutumia muda pamoja kutaboresha sana uhusiano wenu; hongera kwa kujaribu!", + "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!": "Tunasikitika kusikia kwamba ilikuwa vigumu kwako kutumia muda pamoja na kijana wako. Wakati mwingine, sisi sote tunakabiliwa na changamoto. Jivumilie tu na mvumilie kijana wako – mambo yatakuwa mazuri. Hongera kwa kujaribu!", + "Great to hear it went well; you are a star!": "Ni jambo zuri sana kusikia kuwa mambo yameenda Wewe ni mshindi!", + "Wonderful! You deserve all the happy times!": "Vizuri sana! Unastahili kufurahi nyakati zote!", + "Sorry that this was difficult for you. You are a star for trying!": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Wewe ni mshindi kwa kujaribu!", + "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!": "Inafurahisha sana kuona umejisikia vizuri! Endeleza kazi hiyo nzuri sana. Kijana wako anajifunza mengi kutoka kwako!", + "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!": "Kuzungumza kuhusu tunavyohisi kunaweza kuwa kugumu mwanzoni, lakini wewe na kijana wako mtazoea. Endelea kujaribu, utaona matokeo mazuri!", + "Great to hear it went well. Talking about your finances together really makes your family stronger!": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri. Kuzungumzia fedha zako pamoja kunaimarisha zaidi familia yako!", + "Sorry to hear it was difficult for you. Well done for trying!": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Hongera kwa kujaribu!", + "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri! Sheria thabiti husaidia kuwafanya vijana wetu kujisikia salama, na kuwaweka salama!", + "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!": "Tunasikitika kuona kuwa jambo hili limekuwa gumu. Kuweka sheria pamoja kunahitaji mazoezi, lakini kuna faida!", + "Great to hear it went well!": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri!", + "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kutafuta pamoja njia za kufanya malipo kutamfanya kijana wako atake kufuata sheria mara nyingi!", + "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Wakati mwingine tunapaswa kuendelea kujaribu. Tafuta muda ambao wewe na kijana wako mtakuwa mmetulia halafu mjaribu tena kuzungumzia tatizo kwa kutumia hatua nne za kutatua matatizo. Pamoja, mnaweza kufanya makubwa!", + "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuzungumzia hatari na njia za msaada huzuia matatizo na husaidia sana kumweka salama kijana wako.", + "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kuonyesha maeneo ya hatari na ya kupata msaada kunaweza kuleta changamoto na hisia kali. Kufanya hivyo kunasaidia sana kumweka salama kijana wako!", + "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Tunasikitika kuona kuwa mambo hayakwenda vizuri sana. Si rahisi kufanya hivyo. Jaribu kukaa chini na kulijadili tena na kijana wako. Pia, je, kuna mtu ambaye kijana wako anamwamini anayeweza kuungana na wewe kwenye mazungumzo na kijana wako?", + "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuweka athari sahihi husaidia vijana kuwa na tabia nzuri zaidi na kufanya maisha ya familia kuwa tulivu zaidi.", + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kijana wako anapojifunza kutatua matatizo, anaweza kutumia ujuzi huo maishani mwake mwote. Zawadi iliyoje!", + "My Tips": "Vidokezo Vyangu", + "**My Tips** in the @global.parent_centre": "**Vidokezo Vyangu** kwenye @global.parent_centre", + "Essential Tools": "Nyenzo Muhimu", + "**Essential Tools** in the @global.parent_centre": "**Nyenzo Muhimu** kwenye @global.parent_centre", + "Relax & Activities": "Burudani & Shughuli", + "under **Relax & Activities** in the @global.parent_centre": "kwenye **Burudani & Shughuli** katika @global.parent_centre", + "Help": "Msaada", + "**Help** in the @global.parent_centre": "**Msaada** kwenye @global.parent_centre", + "Coping with @global.covid": "Kwendana na @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "**Kwendana na @global.covid** katika @global.parent_centre", + "Coping with grief": "Kwendana na majonzi", + "**Coping with grief** in the @global.parent_centre": "**Kwendana na majonzi**katika @global.parent_centre", + "Message Archive": "Hifadhi ya Ujumbe", + "**Message Archive** in the @global.parent_centre": "**Hifadhi ya Ujumbe** kwenye @global.parent_centre", + "Vodacom Tanzania": "Vodacom Tanzania", + "Quick pause": "Simama haraka", + "Power of three": "Nguvu ya tatu", + "One thing today": "Jambo moja leo", + "Breathe to three": "Vuta pumzi mara tatu", + "In and out": "Ndani na nje", + "Think about today": "Fikiria kuhusu leo", + "Pause to respond": "Simamisha ili ujibu", + "Small things": "Vitu vidogo", + "Body scan": "Uchunguzi wa mwili", + "Feel the ground": "Kuhisi ardhi", + "Counting sounds": "Sauti za kuhesabu", + "Feel your feeling": "Hisi hisia yako", + "Your song": "Wimbo wako", + "Ground & gratitude": "Ardhi & shukrani", + "Notice how you feel": "Chunguza unavyohisi", + "Pause power": "Nguvu ya kutulia", + "Praise yourself": "Jisifie", + "Taking care of yourself": "Kujithamini mwenyewe", + "Take a pause": "Tulia", + "Physical activity": "Shughuli ya kutumia nguvu", + "List of things": "Orodha ya vitu", + "Connect": "Unganisha", + "Prevent anger": "Zuia hasira", + "Angry? Take a break": "Je, umekasirika? Pumzika", + "An emergency": "Dharura", + "Are you in need of emergent assistance?": "Je unahitaji msaada wa dharura?", + "A challenge with alcohol or drugs": "Changamoto ya pombe na madawa ya kulevya", + "Would you like to talk to someone about challenges you or a loved one are experiencing with alcohol or drugs?": "Je ungependa kuongea na mtu kuhusu changamoto ya pombe au madawa wewe au mpendwa wako anapitia?", + "A legal problem": "Tatizo la kisheria", + "Do you need legal assistance?": "Je unahitaji msaada wa kisheria?", + "Feeling unsafe at home or in my relationship": "Kuhisi kutokuwa salama nyumbani au kwenye mahusiano yangu", + "Would you like to talk to someone about feeling unsafe in your home or with your partner?": "Je ungependa kuongea na mtu kuhusu kuhisi kutokuwa salama nyumbani kwako au na mwenza wako?", + "A challenge in my family": "Changamoto kwenye familia yangu", + "Would you like to talk to someone about difficult experiences you are having with members of your family?": "Je ungependa kuongea na mtu kuhusu mapito magumu unayopitia na wanafamilia?", + "Feeling anxious or sad": "Kuhisi hofu au huzuni", + "Would you like to talk to someone about feeling sad or anxious?": "Je ungependa kuongea na mtu kuhusu kuhisi huzuni au hofu?", + "A loved one feeling anxious or sad": "Mpendwa wako kuhisi hofu au huzuni", + "Do you have questions about what to do if you or a loved one may be feeling sad or anxious?": "Je unamaswali kuhusu nini cha kufanya kama wewe au mpendwa wako anahisi huzuni au hofu?", + "Police": "Askari", + "National Child Helpline": "Nambari ya Kitaifa ya msaada kwa Mtoto", + "This helpline is free, available 24/7, and connects you with a professional that can help.": "Namba hii ya msaada ni bure, inapatikana 24/7 na inakuunganisha na mtaalam atakaeweza kukusaidia.", + "Toll free": "Bila malipo", + "Ambulance": "Gari la kusafirishia wagonjwa", + "Alcoholics Anonymous (AA)": "Kikundi cha siri cha walevi (AA)", + "AA supports men and women to help them recover from alcoholism. This service is free and completely anonymous.": "AA husaidia wanaume na wanawake kupata nafuu kutokana na uraibu wa ulevi. Huduma hii ni bure na ya siri.", + "Tanzania Legal Aid (TANLAP)": "Msaada wa Kisheria Tanzania(TANLAP)", + "TANLAP connects you to groups providing affordable legal aid in Tanzania.": "TANLAP inakuunganisha na makundi yanayotoa msaada nafuu wa kisheria nchini Tanzania.", + "Women's Legal Aid Centre": "Kituo cha Msaada wa Kisheria wa Wanawake (WLC)", + "WLC is a non-profit organisation that helps to empower women to secure their rights across Tanzania.": "WLC ni shirika lisilo la faida linalosaidia kuwawezesha wanawake kupata haki zao nchini kote Tanzania.", + "Helpline": "Namba ya Msaada", + "Counselling and Family Life Organisation (CAFLO)": "Shirika la Ushauri na Maisha ya Kifamilia (CAFLO)", + "CAFLO offers counseling, empowerment and advocacy for families in Tanzania.": "CAFLO hutoa ushauri, uwezeshaji na utetezi wa familia nchini Tanzania.", + "Mental Health Association of Tanzania": "Chama cha Afya ya Akili Tanzania", + "Professional organisation with a long history of supporting mental health services in Tanzania.": "Shirika la kitaaluma lenye historia ndefu ya kusaidia huduma za afya ya akili nchini Tanzania.", + "Tap Elderly Women's Wisdom for Youth (TEWWY)": "Tap Elderly Women's Wisdom for Youth (TEWWY) - Shirika la ushauri kwa vijana kutoka kwa wanawake waliozeeka", + "TEWWY has local Wisdom & Wellness Counselors who provide free and accessible mental health services, support and resources in their communities.": "TEWWY ina washauri wa hekima na ubora katika jamii wanaotoa bure msaada na rasilimali za huduma za afya ya akili zinazofikika katika jamii zao.", + "WhatsApp": "WhatsApp", + "Call": "Piga", + "TEWWY's Mental Health Q&A booklet": "Kijitabu cha \"maswali na majibu\" ya Afya ya Akili cha TEWWY", + "This booklet answers some common questions about mental health and provides information that could be helpful for you or your loved one.": "Kijitabu hiki kinajibu baadhi ya maswali ya kawaida kuhusu afya ya akili na hutoa taarifa inayoweza kuwa ya msaada kwako wewe au mpendwa wako.", + "Booklet": "Kijitabu", + "Notice the good": "Tambua yaliyo mazuri", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Kusifia kuna nguvu sana.\n\nHebu tuangalie mfano wa @global.w_praise_female_caregiver_name na mabinti zake:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Pindi @global.w_praise_female_caregiver_name anapotingwa na shughuli, mara nyingi mabinti zake wawili hupigana. Lakini leo, binti yake mkubwa alimsaidia mdogo wake kufanya kazi yake ya shule!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Hongera kwa kufanya kazi yako ya shule, @global.w_praise_girl, na hongera kwa kumsaidia mdogo wako, @global.w_praise_teen_girl. Ninajivunia sana wewe!\"", + "Negative instructions": "Maelekezo hasi", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Hebu tuone ni nini kitatokea kama @global.w_instruct_female_caregiver atamwambia @global.w_instruct_teen_girl \"USIFANYE HIKI\":", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver alikuwa anasafisha nyumba wakati @global.w_instruct_teen_girl alikuwa anafanya mazoezi ya kucheza muziki na rafiki yake. \n\n@global.w_instruct_female_caregiver: \"Usivuruge/usichafue wakati ninasafisha nyumba. Unaniingilia!\"", + "@global.w_instruct_teen_girl: “But I need to practise for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: \"Lakini ninahitaji kufanya mazoezi kwa ajili ya mashindano ya shule. Hujawahi kuniruhusu kufanya kitu chochote.\" \n\n@global.w_instruct_female_caregiver: \"Usinijibu!\"", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Aah!! Kwanini huwa unanifokea kila wakati????”\n\n@global.w_instruct_female_caregiver (akijisemea): \"Huyu mtoto analeta shida kila wakati.\"", + "Positive instructions": "Maelekezo chanya", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Asanteni kwa kufikiria pamoja!\n\nHebu turudi nyuma tuone kinachoweza kutokea kama @global.w_instruct_female_caregiver atatoa maelekezo chanya:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practise dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"": "@global.w_instruct_female_caregiver alikuwa anasafisha nyumba wakati @global.w_instruct_teen_girl alikuwa akifanya mazoezi ya kucheza na rafiki yake.\n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ni vizuri kukuona ukifanya mazoezi ya kucheza na rafiki yako. Tafadhali kafanyieni nje ili niweze kumaliza kufanya usafi wa nyumba. Baadaye, unaweza kunionesha unavyocheza.\"", + "@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje!”", + "@global.w_instruct_teen_girl and her friend enjoy practising their dance moves.": "@global.w_instruct_teen_girl na rafiki yake wanafurahia mazoezi yao ya kucheza muziki.", + "@global.w_instruct_female_caregiver: \"Thank you for practising outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Asante kwa kufanyia mazoezi nje wakati nilipokuwa nikimalizia kufanya usafi, @global.w_instruct_teen_girl. Sasa ninamuda wakuangalia namna unavyocheza mziki.\"", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Waoow, @global.w_instruct_teen_girl! Unacheza vizuri sana!\"", + "Ignoring our emotions": "Anapuuzia hisia zetu", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Hebu tuangalie mfano wa jinsi ambavyo wakati mwingine msongo wa mawazo unaweza kutuzidia sana, sisi sote:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver: \"Niache nilivyo, kafanye mambo yako!\"", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Nimekosea nini? Huwa hunisikilizi!”\n\n@global.w_stress_male_caregiver: \"Nimesema niache nilivyo, la sivyo utapata kipigo!\"", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: \"Ona! Nimejenga nyumba!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: \"Nani anajali nyumba yako ya kijinga hiyo!\"", + "Acknowledging our emotions": "Kutambua hisia zetu", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Asanteni kwa kufikiria pamoja! Hebu turudi siku za nyuma ili kuelewa @global.w_stress_male_caregiver anachokifanya sasa:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver amefukuzwa kazi. Alikuwa amekaa nyumbani akihisi kufadhaika na msongo wa mawazo, pindi @global.w_stress_teen_boy_1 alipoingia.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver (akishusha pumzi): “Samahani, mwanangu. Siku ya leo imeniendea vibaya. Bosi amenifukuza kazi.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Ooh, jamani! Ninahitaji sare mpya ya shule.”\n\n@global.w_stress_male_caregiver: \"Nitajaribu, mwanangu. Na kazi ya @global.w_stress_female_caregiver yako itatusaidia wakati ninatafuta kazi nyingine.\"", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: \"Je, ninaweza pia kusaidia kutafuta kazi, @global.w_stress_male_caregiver?\"\n\n@global.w_stress_male_caregiver: “Hapana, usijali, @global.w_stress_teen_boy_1. Ninashukuru kwa msaada wako. Jambo muhimu zaidi ni kwamba ufanye bidii shuleni. Ninakushukuru kwa kunisikiliza.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Hebu tukacheze mpira pamoja. Itanisaidia kidogo kuondokana na huu msongo wa mawazo.”\n\n@global.w_stress_teen_boy_1: “Sawa, @global.w_stress_male_caregiver!”", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Kumbuka wakati ulipokuwa kijana.\n\nJe, kulikuwa na wakati wowote ambao ulikuwa hatarini lakini hukuweza kuiambia familia yako kwa sababu wangekasirika?\n\nHali hiyo ILIKARIBIA KABISA kumtokea @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl! Hebu tuangalie:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Usiwaambie wakubwa, leo usiku nitaenda baa na marafiki zangu.\"\n\n@global.w_stress_teen_girl: \"Nenda ukale raha! Mimi nimewaambia nitakuwa na shoga yangu, lakini ninaenda kwenye bonge la sherehe.\"", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Nadhani hawa jamaa wanafanya biashara ya madawa ya kulevya. Sisi sote tunaweza kukamatwa. Lakini siwezi kuwaambia wazazi wangu – watakasirika sana.\"", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: \"Ninaogopa. Kila mtu amelewa sana hawezi kuendesha gari kunipeleka nyumbani. Huyu mvulana anasema atanipeleka lakini anataka twende kwanza nyumbani kwake. Siwezi kuwaambia wazazi wangu – niliwadanganya ili niweze kuja kwenye sherehe hii.\"", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nShall we use an imaginary ‘@global.safety_word_example_1’ as @global.safety_word? Just say something about @global.safety_word_example_1, I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn’t.\"": "Hizi ni hali za hatari! Kwa bahati nzuri, @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl walikumbuka kile @global.w_stress_parent alichowaambia:\n\n\"Ninajali sana usalama wenu kuliko kitu chochote. Mkipata shida yoyote, au kuogopa kitu, mnaweza kunipigia simu nije kuwasaidia wakati wowote, au kunieleza shida hiyo.\n\nJe, tunaweza kutumia ya kufikirika '‘@global.safety_word_example_1 kama @global.safety_word? Sema tu kitu kuhusu @global.safety_word_example_1, Ninaahidi kuwa nitajitahidi kadri ya uwezo wangu kusaidia na sitakasirika – hata mkiwa mnafanya jambo ambalo hampaswi kulifanya.\"", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, how is @global.safety_word_example_1 doing now?\"\n\n@global.w_stress_parent (on the other side of the phone): \"Not well. We need you at home. I will come pick you up right away. Where are you?\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, unaendeleaje @global.safety_word_example_1 kwa sasa?\"\n\n@global.w_stress_parent (kwa upande mwingine wa simu): \"Sio sawa. Tunakuhitaji nyumbani. Nitakuja kukuchukua mara moja. Uko wapi?\"", + "@global.w_stress_teen_boy_2 (thinking): \"I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Maybe @global.w_stress_parent knows what to do.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, I just remembered, @global.safety_word_example_1 said she will come visit tomorrow.\"\n\n@global.w_stress_parent (on the other side of the phone): \"Okay, I need you at home to help get things ready. I will come pick you up now. Where are you?\"": "@global.w_stress_teen_boy_2 (anafikiri): \" Nadhani marafiki zangu wapo katika changamoto. Sitaki kuacha kuwa rafiki yao, lakini na wasiwasi. Labda @global.w_stress_parent anajua cha kufanya.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, nimekumbuka, @global.safety_word_example_1 alisema atakuja kututembelea kesho.\"\n\nBaba (katika upande mwingine wa simu): \"Sawa, ninakuhitaji nyumbani kusadia kuweka vitu tayari. Nitakuja kukuchukua sasa. Upo wapi?\"", + "Money problems": "Matatizo ya pesa", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kupata mahitaji ya kila siku linaweza kuwa jambo gumu. Familia nyingi zina tatizo hili!\n\nAkiwemo @global.w_money_grandma – hebu tuangalie:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Nimekuwa nikiwatunza wajukuu wangu, @global.w_money_teen_girl na @global.w_money_teen_boy, tangu wazazi wao walipofariki wakiwa wadogo. Mara nyingi tunahangaika sana kupata pesa, kwani ninapata kiasi kidogo tu cha msaada.\"", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Nina msongo mkubwa wa mawazo. Sina pesa yoyote iliyobaki. Na sasa – kwa mara nyingine – ninapambana na vijana wangu kuhusu vitu wanavyotaka.\"", + "Preparing for the future": "Kujianda kwa ajili ya wakati ujao", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Kazi nzuri sana, mmekamilisha hatua 3 za kwanza!\n\nHebu tuone jinsi @global.w_money_grandma alivyoweka mpango wa pesa zake, kama tu mnavyofanya:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ninataka wajukuu wangu wawe na maisha bora siku zijazo, lakini sijui mahali pa kupata pesa. Matapeli wa mikopo ni hatari na kuwalipa ni ghali sana.\n\nNinapaswa kuweka akiba, lakini ninahisi hilo haliwezekani!\"", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Lengo langu ni kuhakikisha mjukuu wangu wa kiume ataweza kupata elimu ya juu ya sekondari na mjukuu wangu wa kike anaweza kutimiza ndoto yake ya kusoma chuo kikuu. Ninawezaje kuweka akiba ya pesa nyingi kutokana na pesa kidogo nilizo nazo?\"", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Ninajua – hebu tuanze na mpango! Kwanza, ngoja nitengeneze bajeti – nipange ninavyoweza kuweka akiba ya pesa zangu. Halafu nitaweka akiba ya pesa kidogo tu kwa wakati mmoja – nitajiunga hata na kikundi cha kuweka na kukopa.\"", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Ninapaswa pia kuzungumza na wajukuu wangu wachague vitu vinavyotuwezesha kutumia pesa kidogo kila wiki. Watanisaidia kufikiria vitu tunavyovitaka lakini hatuvihitaji.\"", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Miaka michache baadaye:\n\n\"Ona, tumetimiza ndoto zetu! Sikukopa pesa yoyote kwa marafiki au kwa matapeli wa mikopo. Kwa kuweka akiba kidogokidogo kila wiki, niliweza kulipia ada ya sekondari kwa @global.w_money_teen_boy na kuweka akiba kwa ajili ya chuo kikuu ya @global.w_money_teen_girl. Ninajivunia sana jambo hili.”", + "Coping with emergencies": "Kuendana na dharura", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Kuweka akiba ni muhimu kwa sababu moja zaidi: dharura! @global.w_money_grandma naye alijifunza hivyo:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Usiku mmoja kulikuwa na dhoruba ya kutisha iliyoezua paa la nyumba yangu. Kila kitu kiliharibiwa na mafuriko. Ghafla ilibidi nitafute pesa za kukarabati paa. Nilihisi kushindwa kabisa.”", + "Making a rule": "Kutunga sheria", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Hebu tusome kilichotokea kwa @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"Kila wakati unachelewa kurudi nyumbani!\"\n\n@global.w_rules_teen_boy: \"Siyo kweli, hata sijui kuchelewa maana yake ni nini! Acha kunisumbua.\"", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Je, ni sheria ipi maalum ambayo @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1 wanaweza kutengeza kwa pamoja?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Hebu tuone jinsi gani,\n@global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy walivyofanya siku iliyofuata:\n\n@global.w_rules_female_caregiver_1: “Ninataka uburudike, @global.w_rules_teen_boy, lakini pia nina wasiwasi kuhusu wewe kuchelewa kurudi. \nUnajua ni kwa nini?\"\n\n@global.w_rules_teen_boy: \"Kwa sababu unataka nipate muda wa kutosha kufanya kazi yangu ya shule?\"", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: \"Hiyo ni kweli, na vilevile sio salama kwenye eneo hili kuwa huko nje baada ya jua kuzama. Unafikiri ni muda gani mzuri kwako kurudi nyumbani?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 4 usiku?\"\n\n@global.w_rules_female_caregiver_1: “Hapo utakuwa umechelewa kidogo, vipi saa 12 jioni? Au katikati hapo?\"", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 12 jioni siku ninazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi?”\n\n@global.w_rules_female_caregiver_1: “Ndiyo, safi sana. Kuanzia sasa, sheria yetu hapa nyumbani ni kwamba unatakiwa kurudi nyumbani saa 12 jioni siku unazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi. Lakini kila wakati uje nyumbani na rafiki. Sawa?\"", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Sawa, @global.w_rules_female_caregiver_1”\n\n@global.w_rules_female_caregiver_1: “Asante sana, @global.w_rules_teen_boy, kwa kusaidia kuweka sheria nzuri pamoja. Ninaona fahari kuona jinsi unavyowajibika.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Siku iliyofuata...\n\n@global.w_rules_female_caregiver_1: “Asante, @global.w_rules_teen_boy, kwa kuwahi kuja nyumbani. Ukimaliza kazi zako za darasani, uje tuandae chakula ambacho huwa unapendelea kwa ajili ya usiku wa leo.”", + "Online safety": "Usalama mitandaoni", + "Rules are important to keep your teens safe - also online. There’s more about this in the @global.weekly_workshop on safety planning, but let’s already have a first look now!": "Sheria ni muhimu ili kuwaweka salama vijana wako – hadi mtandaoni. Kuna mengi zaidi kuhusu jambo hili kwenye @global.weekly_workshop inayohusu kupanga usalama, lakini sasa ngoja tungalie kitu cha kwanza!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, umefanya kazi ya nyumbani?\"\n\n@global.w_rules_teen_girl: \"Subiri kidogo @global.w_rules_female_caregiver_2, ninamalizia hii video ya @global.teen_social_medium\"", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: \"Unajua kucheza vizuri! Niambie kwa nini unaipenda.\"\n\n@global.w_rules_teen_girl: \"Marafiki zangu wote wamejiunga, @global.w_rules_female_caregiver_2. Nina waipendao zaidi ya 600 na wafuasi 120.\"", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ninajuvia sana jinsi unavyocheza vizuri, @global.w_rules_teen_girl. Lakini tunahitaji kuhakikisha kuwa uko salama.\n\nNinajua marafiki zako wanaangalia @global.teen_social_medium, lakini unapotumia akaunti huria, elewa kwamba kuna watu wengine wanaotazama video za vijana ili kukidhi mahitaji yao ya kingono. Wakati mwingine wanawasiliana na vijana. Wanajifanya kuwa watu wema lakini wanaishia kuwatishia na kuwadhalilisha vijana.\"", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Hebu tuangalie pamoja mtandaoni jinsi unavyoweza kuendelea na hii burudani yako lakini ukiwa salama pia. Ona – unaweza kuifanya akaunti yako kuwa akaunti binafsi na kudhibiti wafuasi wako.\n\nKwa hiyo, utaweza kukubali watu unaowajua kutoka shuleni na kwenye jamii yetu, lakini si watu wanaowasiliana na wewe mtandaoni.\n\nJe, tunaweza kuweka sheria pamoja unayoweza kuitumia kwenye @global.teen_social_medium, lakini kupitia akaunti binafsi? Ninakuamini kwamba unawajua watu wa kuwakubali!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ninajivunia sana wewe @global.w_rules_teen_girl.\"", + "Home late": "Kuchelewa nyumbani", "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Hebu tusome kile kilichotokea kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa!\"", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa kurudi!\"", "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: \"Samahani @global.w_consequence_male_caregiver – unaweza kurudi kulala\".\n\n@global.w_consequence_male_caregiver: \"Muda uliotakiwa kurudi nyumbani umeshapita SANA!\"", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: \"@global.w_consequence_teen_boy_1, haufuati sheria yetu! Nitakutandika vibaya!”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Hiyo siyo haki! Huwa siku zote hunisikilizi!! Ninakuchukia!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Jadilini pamoja:\n* Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", - "Giving a consequence this way did not work well because...": "Kufanya athari kwa njia hii haikufanikiwa vizuri kwa sababu...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver alikuwa amekasirika", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver hakumruhusu @global.w_consequence_teen_boy_1 kujieleza", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Athari haikujadiliwa kabla na @global.w_consequence_teen_boy_1", - "The consequence was too strong": "Athari ilikuwa ngumu mno", - "Why did giving a consequence this way not work well?": "Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "Ndiyo, mwitikio mkubwa kama huo ulimfanya kila mtu kukasirika zaidi na kusikitika.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Mara nyingi vijana huvunja sheria. Wakati wa kukua ni wakati mgumu pindi wanapojifunza kwamba wao ni nani.\n\nKwa bahati nzuri, kuna njia za kumuadabisha kijana wako bila kukasirika au kutumia nguvu… na zinafanya kazi vizuri!\n\nKuweka athari husaidia kuwafundisha watoto wetu kuwajibika kwa kile wanachofanya – kiwe kizuri na kibaya.\n\nHapa kuna mifano kadhaa – hebu fikiria kuwa wewe ndiye mzazi:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Athari nyepesi zinapaswa kuwa...\n\nHAKI: Si kali sana na zinaweza kufanyika\n\nHARAKA: Zifanywe haraka iwezekanavyo\n\nTHABITI: athari zilezile kila wakati", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.\n\nJe, athari ipi ingesaidia hapa?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Athari hazifanani sana na adhabu: athari huwapa vijana wetu nafasi ya kujifunza kuwajibika kwa matendo yao.\n\nVilevile, athari zinadhibitiwa zaidi NA zina ufanisi zaidi kuliko kuchapa au kupiga kelele!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanapigania simu.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanagombania simu.\n\nJe, njia ipi ya athari ingesaidia hapa?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Athari hufanikiwa zaidi kama utazijadili na kukubaliana mapema pamoja na vijana wako kabla ya kuzitumia.\n\nNa: si kila athari ni hasi… Mnaweza pia kukubaliana kuhusu athari NJEMA kwa matendo MEMA ili kujenga zaidi tabia chanya!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.", - "What consequence would help here?": "Je, athari ipi ingesaidia hapa?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.\n\nJe, njia ipi ya athari chanya ingesaidia hapa?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Jinsi unavyoweka athari ni jambo muhimu. Kumbuka, unapomhusisha kijana wako, kwa kawaida mambo huenda vizuri!", - "EXPLAIN": "ELEZA", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Hakikisha nyote wawili mmetulia. Vuta pumzi mara kadhaa. Mweleze kijana wako kwa nini una wasiwasi na tabia zake.\n\nEleza kwa nini sheria hiyo ilikuwa muhimu. Unaweza kumshirikisha hisia zako – si vibaya kusema umesikitika.", - "AGREE": "KUBALI", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Panga na kijana wako athari za kufuata sheria na kutofuata sheria.\n\nMwombe atoe maoni yake. Zungumzeni hadi mtakapokubaliana kuhusu kitu halisi.\n\nWeka athari za KUTOFUATA sheria na upendeleo pindi WANAPOFUATA sheria.", - "ACT": "TENDA", - "When your teen follows the rule, give praise and privileges!": "Kijana wako anapofuata sheria, msifie na mpe upendeleo!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Atahisi kuheshimiwa na kuthaminiwa. Kumbuka: Kadri unavyomsifia, ndivyo atakavyozidi kuonyesha tabia hiyo nzuri!", - "When your teen does not follow the rule, follow through with the consequence.": "Kijana wako asipofuata sheria, amuru afanye athari.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Kijana wako anapovunja sheria, amuru kwa utulivu afanye athari. Athari ziwe za HAKI (zisiwe kali sana), za HARAKA (zitolewe papo hapo) na THABITI (ziwe zilezile kila wakati).", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Jadilini pamoja:\n* Je, vijana wako wanavunja sheria gani?\n* Je, unaweza kutumia athari zipi kwa kila sheria maalum iliyovunjwa?\n\nAthari zinapaswa kuwa ya:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati).\n\nSifianeni na kutiana moyo – tunaweza kupeana nguvu!", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: \"@global.w_consequence_teen_boy_1, haufuati sheria yetu! Nitakuchapa sana!”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Hiyo siyo sawa! Huwa siku zote hunisikilizi!! Ninakuchukia!”", + "Discussing and using consequences": "Kujadili na kutumia adhabu", "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Hebu turudi kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver", "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: \"Nina wasiwasi kuona mara nyingi bado unachelewa kurudi nyumbani, @global.w_consequence_teen_boy_1. Je, tufanye nini ili kukusaidia ukumbuke kuwahi kurudi nyumbani?\n\n@global.w_consequence_teen_boy_1: \"Je, nikiwahi kurudi nyumbani, ninaweza kuchelewa kulala kwa dakika 30 kuliko kawaida?\"", "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Hilo ni wazo zuri! Na usipofuata hiyo sheria, tufanyeje?\n\n@global.w_consequence_teen_boy_1 (akiumauma maneno): \"Mgmluuhm\"", @@ -331,299 +525,12 @@ "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, sasa hivi ni usiku wa manane na umerudi nyumbani baada ya muda tuliokubaliana. Hata uwe na sababu gani, ni lazima uelewe kwamba hii haikubaliki. Mimi na @global.w_consequence_female_caregiver tulikuwa na wasiwasi sana.\"", "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: \"Marafiki zangu walitaka niendelee kukaa nao. Walikuwa wananiita mtoto nilipotaka kuwahi kurudi nyumbani.”\n\n@global.w_consequence_male_caregiver: \"Najua ni vigumu kuwakatalia marafiki zako. Hebu tulale, tupumzike kwanza, halafu kesho asubuhi tutazungumza kuhusu jambo hili.\"", "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: \"Samahani, nilikupa wasiwasi wewe na @global.w_consequence_female_caregiver.\"\n\n@global.w_consequence_male_caregiver: \"Asante. Sasa nenda ulale, lakini ngoja nikukumbushe tena, ukichelewa kurudi nyumbani kuliko tulivyokubaliana, kesho usiku hautaruhusiwa kutoka nyumbani.”", - "Let's talk about this story": "Hebu tuzungumzie hadithi hii", - "Using a consequence worked well this time because...": "Kufanya athari kulifanikiwa vizuri mara hii kwa sababu...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake walijadili kuhusu athari pindi wote walipokuwa wametulia", - "They agreed on consequences together": "Walikubaliana pamoja kuhusu athari", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver aliitikia kwa utulivu lakini kwa msimamo pindi @global.w_consequence_teen_boy_1 alipovunja sheria", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver alimsikiliza @global.w_consequence_teen_boy_1", - "The consequence was realistic and appropriate": "Athari ziikuwa sahihi na zinazotekelezeka", - "Why did using a consequence work well this time?": "Kwa nini amri ya kufanya athari ilifanikiwa vizuri mara hii?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Je, athari gani nyepesi ambazo unaweza kuweka kwa vijana wako wanapogombana wakati wa chakula cha usiku?\n\nKumbuka malipo yanatakiwa kuwa ya:\nHAKI – HARAKA – THABITI", - "Not seeing any friends for a month": "Hakuna kumtembelea rafiki yeyote kwa mwezi mmoja", - "This may be hard to do for you and also too harsh!": "Kufanya hivyo kunaweza kuwa vigumu na ukatili kwako!", - "Cancelling their birthday plans in a month’s time": "Kufuta mipango yao ya kusherehekea siku ya kuzaliwa kwa muda wa mwezi mmoja", - "This is too far in the future, and too harsh as well!": "Hii ni mbali sana, na ni ukatili mno!", - "No TV this evening": "Hakuna kuangalia runinga jioni ya leo", - "Perfect, this sounds fair and can be done straight away": "Vizuri sana! Hiyo inaonekana kuwa ni haki na inaweza kufanywa mara moja", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Panga athari nyepesi kwa vijana wako wanapogombana wakati wa chakula cha usiku.\nKumbuka athari zinatakiwa kuwa\n\nHAKI – HARAKA – THABITI", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Zoezi lako la nyumbani la wiki hii litakuwa kuzungumza na kijana wako kuhusu athari MOJA hasi na athari MOJA chanya.\n\nAthari zinapaswa kuwa za:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Tabia Hasi: Kuja nyumbani baada ya muda uliokubaliwa.\n\nMalipo Hasi: Hataenda kuwatembelea marafiki siku inayofuata.\n\nTabia Hasi: Kuongea kwa jeuri.\n\nAthari Hasi: Kuandika barua ya kuomba msamaha.\n \nTabia Chanya: Kusaidia kufanya manunuzi.\n\nAthari Chanya: Kuongezewa dakika 30 za kufanya shughuli yoyote aipendayo.\n\nTabia Chanya: Kusaidia kuwalea wadogo zake.\n\nAthari Chanya: Kuongezewa muda wa saa moja ya kuwa na marafiki mwishoni mwa wiki.", - "Great!": "Vizuri sana!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ninajua maisha ni magumu. Ninakuonea fahari.\n\nVyovyote unavyohisi, ni jambo zuri kwamba uko hapa!", - "Using the app together": "Kutumia programu hii pamoja", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Tunafurahi sana kuwaona!\n\nKwanza, ngoja tulisaidie kundi lenu liweze kuanza.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Kubalianeni pamoja kuhusu sheria zenu za msingi:\n* Je, tutakutana siku/muda upi kwa wiki?\n* Je, wakati wa shughuli zetu, ni nani atakayeshikilia simu?\n* Je, tutahakikishaje kuwa kila mtu anaweza kushiriki kwa uhuru?\n* Je, tufanyaje ili sisi sote tuhisi kuwa tunaheshimiwa?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Wakati wote unaweza kubadilisha siku yako ya kipindi na jina la kikundi chako kwenye @global.weekly_workshop_options.", - "Some rules that other groups made:": "Baadhi ya sheria zilizowekwa na vikundi vingine:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Jumanne saa 1 jioni ni wakati wetu wa kuwa pamoja kwenye @global.parent_app\n* Peaneni zamu ya kushika simu (shughuli 1 kwa mtu mmoja)\n* Kubalianeni na uzoefu wa kila mmoja. Sisi sote tunatofautiana!\n* Peaneni zamu ya kuzungumza na kusikiliza\n* Mnaweza kuuliza maswali yoyote\n* Tunachoshirikishana ni siri yetu", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufurahisha. Halafu vuta pumzi ndefu ili kujisikia vizuri.\n\nKumbuka, unapata @global.parent_point kila unapojitunza – wewe ni mtu muhimu!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Kuwa mzazi ni kugumu sana. Wakati mwingine inaonekana kama watoto wetu hawatusikilizi kabisa.\n\nLakini sayansi inaonyesha kwamba kutumia dakika chache tu kila siku kutumia muda wa pamoja na kijana wako mkiwa wawili husaidia kujenga uaminifu na upendo.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Muda wa kuzungumza wawili ni ule ambao wewe unamzingatia yeye, bila kutazama runinga au kutumia simu. Hebu mruhusu aongoze kile mnachofanya au mnachozungumzia.\n\nNi jambo zuri zaidi kama utaweza kufanya hivyo kwa dakika ishirini kwa siku, lakini hata dakika tano kwa siku ni jambo zuri sana.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Habari!\n\nMada yetu ya leo inahusu kuzungumza na watoto wetu mkiwa wawili.\n\nNi muhimu kutumia muda tukiwa na watoto wetu ili waweze kutuelewa, na sisi kupata fursa ya kuwaelewa.\n\nKumbuka, familia inayoelewana vizuri huishi kwa utulivu.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Mawazo kwa ajili ya muda wa muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja wawili\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Shughuli za kujithamini\n* Mawazo kwa ajili ya muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Shirikishaneni mawazo!\n\nJe, ni mambo gani unayoweza kuyafanya ili kutumia muda wa pamoja na vijana wako mkiwa wawili?\n\nJe, unahisi kama HUNA MUDA na umechoka sana? Fikiria mambo ya kufanya wakati wa kutumia muda wa pamoja yasiyotumia muda wa ziada, kama kutembea pamoja kwenda dukani.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Mnaweza kuchukua muda kuzoea kuzungumza wawili, lakini kadri mtakavyofanya hivyo ndivyo itakavyokuwa bora zaidi!\n\nNyinyi ni wazazi wazuri sana kwa kujaribu jambo hili.", - "Let's think of ways to spend one-on-one time with your teen.": "Hebu tufikirie njia za kutumia muda wa pamoja na kijana wako mkiwa wawili.", - "What could you do to spend one-on-one time with your teen?": "Je, unaweza kuutumiaje muda wa pamoja na kijana wako mkiwa wawili?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Je, unahisi kama HUNA MUDA na umechoka sana? Kumbuka pia kufikiria mambo yasiyotumia muda wa ziada.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Unaweza kuchukua muda kuzoea kutumia muda wa pamoja wawili, lakini kadri utakavyofanya hivyo ndivyo itakavyokuwa rahisi zaidi!\n\nWewe ni mzazi wa kustaajabisha kwa kujaribu jambo hili.", - "DAY - Try to do it every day": "SIKU – Jaribu kufanya hivyo kila siku", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Tafuta dakika 5 (au zaidi!) kila siku wakati kijana wako hana kitu kingine anachotaka kufanya.", - "PLAY - Let your teen choose": "CHEZA – Mwache kijana wako achague", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Mwambie kijana wako kwamba ungependa kutumia muda pamoja naye na kwamba anaweza kuchagua cha kufanya au cha kuzungumzia. Mwanzoni, anaweza kuona kuwa hili ni jambo la ajabu, lakini baadaye atafurahia muda huu wa kuwa na wewe!", - "STAY - Focus on your teen": "KAA – Mzingatie kijana wako", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Zima runinga na weka simu kando. Mtazame kijana wako. Fanya ishara kwa kichwa au sema \"ndiyo\" ili kuonyesha kuwa unammakinikia. Kubali anachosema bila kumhukumu.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Muda wa pamoja na kijana wako mkiwa wawili unaweza kukufurahisha wewe pia! Unaweza hata kukupunguzia msongo wa mawazo.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Tumia dakika 5-20 za muda wa pamoja na kijana wako mkiwa wawili, kila siku unayoweza wiki hii.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Kumbuka – kila unapoweza, jipumzishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", - "Remember that YOU matter!": "Kumbuka kwamba WEWE ni mtu muhimu!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Hongera kwa kutambua hisia chanya. Nimefurahi kusikia kwamba unajisikia vizuri leo!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Hongera kwa kutambua hisia mbaya. Si ajabu kutojisikia vizuri wakati mwingine. Kumbuka kwamba hauko peke yako.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Hili ni jambo zuri sana. Kila mojawapo ya tabia hizi huifanya familia yako kuwa imara zaidi. Jivunie.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Sheria huwasaidia vijana kuelewa wanachotakiwa kukifanya.\n\nVijana wana uwezekano mkubwa wa kufuata sheria kama mtaweka sheria hizo PAMOJA na kumsifia anapozifuata!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Habari zenu?\n\nMada ya leo inahusu sheria.\n\nSheria huleta amani ndani ya kaya na maelewano miongoni mwa wanafamilia.\n\nSheria huleta uwajibikaji kwa kila mwanafamilia; kwa hiyo, ni muhimu kuwa na sheria za familia.\n\nKaya yenye sheria za familia huishi kwa amani.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Hebu tusome kilichotokea kwa @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"Kila wakati unachelewa kurudi nyumbani!\"\n\n@global.w_rules_teen_boy: \"Siyo kweli, hata sijui kuchelewa maana yake ni nini! Acha kunisumbua.\"", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Je, ni sheria ipi maalum ambayo @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1 wanaweza kutengeza kwa pamoja?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Hebu tuone jinsi\n@global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy walivyofanya siku iliyofuata:\n\n@global.w_rules_female_caregiver_1: “Ninataka uburudike, @global.w_rules_teen_boy, lakini pia nina wasiwasi kuhusu wewe kuchelewa kurudi nyumbani. Unajua ni kwa nini?\"\n\n@global.w_rules_teen_boy: \"Kwa sababu unataka nipate muda wa kutosha kufanya kazi yangu ya shule?\"", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: \"Hiyo ni kweli, na vilevile sio salama kwenye eneo hili kuwa huko nje baada ya jua kuzama. Unafikiri ni muda gani mzuri kwako kurudi nyumbani?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 4 usiku?\"\n\n@global.w_rules_female_caregiver_1: “Hapo utakuwa umechelewa kidogo, vipi saa 12 jioni? Au katikati hapo?\"", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 12 jioni siku ninazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi?”\n\n@global.w_rules_female_caregiver_1: “Ndiyo, safi sana. Kuanzia sasa, sheria yetu hapa nyumbani ni kwamba unatakiwa kurudi nyumbani saa 12 jioni siku unazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi. Lakini kila wakati uje nyumbani na rafiki. Sawa?\"", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Sawa, @global.w_rules_female_caregiver_1”\n\n@global.w_rules_female_caregiver_1: “Asante sana, @global.w_rules_teen_boy, kwa kusaidia kuweka sheria nzuri pamoja. Ninaona fahari kuona jinsi unavyowajibika.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Siku iliyofuata...\n\n@global.w_rules_female_caregiver_1: “Asante, @global.w_rules_teen_boy, kwa kuwahi kuja nyumbani. Ukimaliza kazi zako za darasani, uje tuandae chakula ambacho huwa unapendelea kwa ajili ya usiku wa leo.”", - "Making the rule together went well because...": "Kutengeneza sheria pamoja kulienda vizuri kwa sababu...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Walijadili sababu za kuwekwa kwa sheria hiyo\n* @global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy\n* Sheria hiyo ilikuwa wazi, maalum na ya haki\n* @global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria hiyo", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy alijua kuwa @global.w_rules_female_caregiver_1 wake alimthamini kwa sababu...", - "* She praised him\n* She rewarded him when he followed the rule": "* Alimsifia\n* Alimzawadia alipofuata sheria", - "Let's think about what happened in this story.": "Hebu tufikirie kuhusu kilichotokea kwenye Hadithi hii.", - "What went well here in making a rule together?": "Kwa kuweka sheria pamoja, jambo gani lilienda vizuri hapa?", - "They discussed the reasons behind the rule": "Walijadili sababu za kuwekwa kwa sheria hiyo", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy", - "The rule was clear, specific and fair": "Sheria hiyo ilikuwa wazi, maalum na ya haki", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria", - "That's right, making clear rules together in a calm and positive way works so well!": "Hiyo ni kweli, kuweka sheria zilizo wazi kwa kushirikiana na kwa njia ya utulivu na chanya huleta mafanikio makubwa!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Je, unafikiri @global.w_rules_teen_boy alijuaje kuwa @global.w_rules_female_caregiver_1 wake anamthamini?", - "She praised him": "Alimsifia", - "She rewarded him when he followed the rule": "Alimzawadia alipofuata sheria", - "Exactly - a positive response makes all the difference!": "Sawasawa – mwitikio chanya huleta mabadiliko makubwa!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Sheria za kaya husaidia kuwaweka vijana wetu salama, na kuelewa kinachotarajiwa kutoka kwao. Unapomhusisha kijana katika kutengeneza sheria, anakuwa na uwezekano mkubwa wa kuzifuata.", - "TEAM RULES": "SHERIA ZA KIKUNDI", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Panga sheria PAMOJA NA kijana wako. Anza kwanza na sheria mpya moja – unaweza kuongeza nyingine baadaye. Jadilini sababu za kuweka sheria na usikilize maoni yake.", - "REAL RULES": "SHERIA ZINAZOTEKELEZEKA", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Zifanye ziweze kutekelezeka kwa kijana wako, na uwe wazi na bayana ili kusitokee kutokuelewana. Usiseme 'kwa wakati', sema 'ifikapo saa 1 jioni'.", - "PRAISE RULES!": "SHERIA ZA USIFIAJI!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Msifie kijana wako kwa kuweka sheria pamoja na wewe, na msifie kwa kuifuata!", - "Online Safety": "Usalama Mtandaoni", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Sheria ni muhimu ili kuwaweka salama vijana wako – hadi mtandaoni. Kuna mengi zaidi kuhusu jambo hili kwenye kipindi hiki cha Wiki inayohusu kupanga usalama, lakini sasa ngoja tungalie kitu cha kwanza!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, umefanya kazi ya nyumbani?\"\n\n@global.w_rules_teen_girl: \"Subiri kidogo @global.w_rules_female_caregiver_2, ninamalizia hii video ya @global.teen_social_medium\"", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: \"Unajua kucheza kwelikweli! Niambie kwa nini unaipenda.\"\n\n@global.w_rules_teen_girl: \"Marafiki zangu wote wamejiunga, @global.w_rules_female_caregiver_2. Nina waipendao zaidi ya 600 na wafuasi 120.\"", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ninajuvia sana jinsi unavyocheza vizuri, @global.w_rules_teen_girl. Lakini tunahitaji kuhakikisha kuwa uko salama.\n\nNinajua marafiki zako wanaangalia @global.teen_social_medium, lakini unapotumia akaunti huria, elewa kwamba kuna watu wengine wanaotazama video za vijana ili kukidhi mahitaji yao ya kingono. Wakati mwingine wanawasiliana na vijana. Wanajifanya kuwa watu wema lakini wanaishia kuwatishia na kuwadhalilisha vijana.\"", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Hebu tuangalie pamoja mtandaoni jinsi unavyoweza kuendelea na hii burudani yako lakini ukiwa salama pia. Ona – unaweza kuifanya akaunti yako kuwa akaunti binafsi na kudhibiti wafuasi wako.\n\nKwa hiyo, utaweza kukubali watu unaowajua kutoka shuleni na kwenye jamii yetu, lakini si watu wanaowasiliana na wewe mtandaoni.\n\nJe, tunaweza kuweka sheria pamoja unayoweza kuitumia kwenye @global.teen_social_medium, lakini kupitia akaunti binafsi? Ninakuamini kwamba unawajua watu wa kuwakubali!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ninajivunia sana wewe @global.w_rules_teen_girl.\"", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Je, ni sheria gani moja muhimu ambayo kila mmoja wenu angependa kuiweka na kijana wake?\n* Je, unadhani kijana wako atafikiriaje kuhusu sheria hiyo?\n\nKumbuka, sheria ziwe bayana na zinazotekelezeka!", - "Here are some of the rules other families created:": "Hapa kuna baadhi ya sheria zilizowekwa na familia nyingine:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Kijana anaweza kucheza nje baada ya kumaliza kazi ya nyumbani\n* Wanafamilia wote watakula mlo wa usiku pamoja\n* Kijana \"A\" ataosha vyombo siku ya Jumapili na Jumatatu, Kijana \"B\" siku ya Jumanne na Jumatano\n* Tutazungumza baina yetu kwa adabu na kwa wema\n* Unaposikiliza muziki, unatakiwa kutumia vifaa vya kusikilizia", - "Let's practice making rules.": "Hebu tufanye mazoezi ya kutengeneza sheria.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Andika sheria moja muhimu ambayo ungependa kuiweka na kijana wako – hili ndilo litakuwa zoezi lako la nyumbani wiki hii.\n\nJe, atafikiria nini kuhusu sheria hii?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Wiki hii, tengeneza sheria moja pamoja na kijana wako.\n\nKumbuka kumsifia kijana wako baadaye!", - "Great to hear that you are doing well. You are a wonderful parent!": "Inafurahisha sana kusikia kuwa unaendelea vizuri. Wewe ni mzazi mzuri sana!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Pole kwa sababu leo siyo siku nzuri sana kwako. Hongera kwa kujaribu kuelewa kila kitu. Hakuna ajuaye kila kitu, lakini kwa kweli unajitahidi kwa kadri uwezavyo!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Tunasikitika kusikia kwamba leo siyo siku nzuri kwako. Hongera kwa kuamka kila asubuhi na kujaribu tena, hata unapokuwa umechoka. Huo ni ujasiri wa kweli na kujitoa kwa dhati!", - "Step 1: Share what went well and what was hard": "Hatua ya Kwanza: Shirikisha wengine mambo yaliyoenda vizuri na yaliyokuwa magumu", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "\"Nilijifunza mambo mengi zaidi kuhusu maisha ya kijana wangu tulipotumia muda wa pamoja wawili tu! Lakini baada ya siku ya kwanza, kijana wangu alitaka kucheza tu kwenye simu yake.\"", - "Step 2: Bring ideas!": "Hatua ya Pili: Changia mawazo!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "\"Hongera kwa kujaribu! Pengine unaweza kupendekeza mambo mengine ya kufurahisha unayoweza kufanya pamoja na kijana wako.\"\n\n\"Ndiyo, au mnaweza kufanya pamoja kitu fulani kwenye simu yake? Au anaweza kukuonyesha jinsi simu yake inavyofanya kazi?\"", - "Step 3: Pick and try one!": "Hatua ya Tatu: Chagua moja na ujaribu!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Asante kwa mawazo hayo mazuri sana! Ndiyo, nitamwomba kijana wangu anioneshe jinsi simu yake inavyofanya kazi kesho akitoka shule. Je, mmoja wenu anaweza kuigiza kama kijana wangu, ili nifanye mazoezi ya kuuliza?\"", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Kusifia ni ujuzi wenye nguvu katika malezi.\n\nKama tutawasifia vijana wetu wanapofanya jambo vizuri, tutawaona wakifanya mambo mazuri zaidi na zaidi!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Habari zenu?\n\nMada yetu ya leo inahusu kusifia.\n\nNi vizuri kuwasifia watoto wetu wanapofanya vizuri kwa sababu tunapofanya hivyo, watazidi kuifanya tabia nzuri tunayotaka kuiona.\n\nNa tusisahau pia kujisifia sisi wenyewe tunapofanya mazuri!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Matokeo ya usifiaji\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Jaribuni!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Matokeo ya usifiaji\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Mazoezi ya nyumbani yanayopendekezwa", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Shirikishaneni nyote:\n\n* Ni lini mara ya mwisho mtu alikushukuru au kusema umefanya jambo zuri sana? \n* Ulijisikiaje? \n* Je, unajisikiaje usiposhukuriwa au kusifiwa kwa kile unachokifanya? \n\nMara nyingi kama wazazi hatushukuriwi au kusifiwa vya kutosha. Pengine unaweza kuwapa vijana wako mfano sahihi kwa kuwasifia kwanza wanapofanya kitu vizuri!", - "Think about the last time someone thanked you, or said you did something great.": "Kumbuka mara ya mwisho mtu alipokushukuru, au kusema umefanya jambo zuri sana.", - "How did it make you feel?": "Ulijisikiaje?", - "Parents usually don’t get thanked or praised enough.": "Mara nyingi wazazi hawashukuriwi au kusifiwa vya kutosha.", - "How does it make you feel when nobody says \"thank you\"?": "Je, unajisikiaje usipoambiwa \"asante\" na mtu yeyote?", - "Tired": "Uchovu", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Kijana wako anaweza pia kujisikia hivyo. Hicho ndicho kinachofanya nyenzo ya malezi ya wiki hii iwe rahisi lakini muhimu: Msifie anapofanya vizuri.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Kusifia kuna nguvu sana.\n\nHebu tuangalie mfano wa @global.w_praise_female_caregiver_name na mabinti zake:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Pindi @global.w_praise_female_caregiver_name anapotingwa na shughuli, mara nyingi mabinti zake wawili hupigana. Lakini leo, binti yake mkubwa alimsaidia mdogo wake kufanya kazi yake ya shule!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Hongera kwa kufanya kazi yako ya shule, @global.w_praise_girl, na hongera kwa kumsaidia mdogo wako, @global.w_praise_teen_girl. Ninajivunia sana wewe!\"", - "Let's discuss this story.": "Hebu tujadili hadithi hii.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Jadili pamoja:\n\n* Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?\n* Kwa nini aliwasifia?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name aliwasifia vijana wake...", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ili kuwafanya wazidi kufanya hivyo mara nyingi\n* Ili kumsaidia amalize kazi zake \n* Ili kuwafanya wajisikie vizuri \n* Ili yeye mwenyewe ajisikie vizuri", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?", - "Why did she praise them?": "Kwa nini aliwasifia?", - "To get them to do it more often": "Ili kuwafanya wazidi kufanya hivyo mara nyingi", - "To help her finish her work": "Kumsaidia amalize kazi yake", - "To make them feel good": "Ili kuwafanya wajisikie vizuri", - "To make herself feel good": "Ili yeye mwenyewe ajisikie vizuri", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Mambo yote hayo ni ya kweli!\n\nPindi vijana wake wanapofurahi, @global.w_praise_female_caregiver_name hujisikia furaha. Na aliweza kufanya kazi zake.", - "The same can work for you!": "Wewe pia unaweza kufanya hivyo!", - "SEE IT": "ONA", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Tafuta kitu chochote anachofanya kijana wako kwa ajili ya kusaidia au kilicho kizuri, na umsifie kwa kitu hicho. Anaweza asioneshe furaha yake, lakini utamwona akifanya tena kitu hicho kizuri. Pia itamthibitishia kuwa unatambua anachokifanya na unajali.", - "SAY IT": "SEMA", - "Be enthusiastic – really mean it when you say it!": "Onyesha shauku – unaposema jambo, liseme kwa moyo wa dhati!", - "REPEAT IT": "RUDIA", - "Try to find something to thank them for every day. Even something really small.": "Jaribu kutafuta kitu cha kukufanya umshukuru kila siku. Hata kitu kidogo sana.", - "You can also praise other adults in your household, too. Notice how they respond!": "Unaweza pia kuwasifia watu wazima wengine kwenye kaya yako. Chunguza mwitikio utakavyokuwa!", - "Let's practice giving praise.": "Hebu tufanye mazoezi ya kusifia.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Shirikishaneni nyote:\n\n* Je, unaweza kumsifia kijana wako kwa kitu gani?\n* Je, ni kitu gani ambacho mtu mwingine amefanya vizuri kwenye kipindi hiki? Mwambie!\n* Je, ulijisikiaje kumsifia mtu?\n* Je, ulijisikiaje kusifiwa?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Wakati mwingine ni vigumu kufikiria kitu gani cha kumsifia kijana wako! Haya ni mawazo kutoka kwa wazazi wengine:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Kumtendea mtu wema\n* Kusafisha chumba chake\n* Kula pamoja na familia\n* Kuwasalimu wanafamilia wengine\n* Kuwatunza ndugu zake\n* Kuwahi kurudi nyumbani\n* Kuwafikiria wengine\n* Kusema 'tafadhali' au 'asante'\n* Kwenda shule\n* Kufanya kazi za nyumbani au kazi ya shule\n* Kumaliza wakati wa kula kwa amani", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Zoezi la nyumbani la wiki hii ni kumsifia kijana wako mara moja kwa siku. Utatumia sekunde 10 tu!", - "Caring for yourself is so essential.": "Kujithamini ni jambo muhimu sana.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Ni jambo la kuvutia sana, ninafurahi sana mambo kuona yanaenda vizuri. Endeleza kazi hii nzuri.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Tenga muda kidogo ili ufurahie mafanikio uliyoyapata, licha ya mambo mengine yote unayopaswa kuyafanya kila siku.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Familia nyingi zina msongo wa mawazo kutokana na pesa, hasa pale vijana wanapoendelea kuomba vitu!\n\nTunapotengeneza bajeti pamoja, tunaweza kukubaliana jinsi ya kufanya matumizi pamoja NA kuweka akiba ili kuzuia msongo wa mawazo na kutekeleza malengo ya familia zetu.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Habari zenu?\n\nMada ya leo inahusu kutengeneza bajeti ya familia.\n\nKutengeneza bajeti ni muhimu, lakini kutengeneza bajeti kwa kuhusisha familia nzima ni muhimu zaidi.\n\nKufanya hivyo pamoja husaidia kuongeza uelewa kuhusu jinsi mnavyotumia pesa kama familia na kiasi mnachoweka akiba kwa ajili ya familia, na mnaweza hata kubuni mipango ya kuweka akiba kama familia.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Hadithi – haikufanikiwa…\n* Zoezi la kutengeneza bajeti\n* Hadithi & majadiliano – ilifanikiwa!\n* Hadithi & majadiliano – hayakufanikiwa…\n* Majadiliano kuhusu njia za kuweka akiba\n* Zoezi la kuweka akiba\n*Nyenzo: Jinsi ya kutengeneza bajeti & kuweka akiba\nFIKIRI – CHAGUA – TENGENEZA – PANGA\n* Mazoezi ya nyumbani yanayopendekezwa", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kupata mahitaji ya kila siku linaweza kuwa jambo gumu. Familia nyingi zina tatizo hili!\n\nAkiwemo @global.w_money_grandma – hebu tuangalie:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Nimekuwa nikiwatunza wajukuu wangu, @global.w_money_teen_girl na @global.w_money_teen_boy, tangu wazazi wao walipofariki wakiwa wadogo. Mara nyingi tunahangaika sana kupata pesa, kwani ninapata kiasi kidogo tu cha msaada.\"", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Nina msongo mkubwa wa mawazo. Sina pesa yoyote iliyobaki. Na sasa – kwa mara nyingine – ninapambana na vijana wangu kuhusu vitu wanavyotaka.\"", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja. Unahitaji:\n\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", - "A family budget can help @global.w_money_grandma - and YOU!": "Bajeti ya familia inaweza kumsaidia @global.w_money_grandma – na WEWE!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Unahitaji:\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", - "Think about what we spend money on each month.": "Fikiria mambo tunayotumia pesa kila mwezi.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora picha za vitu vyote vinavyokufanya wewe na familia yako mtumie pesa kila mwezi.\n* Andika pembeni mwa kila picha kiasi ambacho kitu hicho kinagharimu kila mwezi. (Hakuna haja ya kuwashirikisha wengine viwango hivyo kama hautaki kufanya hivyo.)\n* Jumlisha kiasi cha pesa unazotakiwa kutumia kila mwezi.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Inastaajabisha! Umemaliza hatua ya kwanza!\n\nTuendelee!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* chakula\n* maji & umeme\n* mavazi\n* akaunti\n* king'amuzi cha runinga\n* vifaa vya usafi wa mwili\n* saluni\n* muda wa maongezi\n* ada ya shule\n* usafiri\n* bima\n* matibabu\n* michezo/burudani\n* kodi ya nyumba\n* mikopo\n* ibada", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Zungumzeni pamoja kuhusu mahitaji yenu na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Mara nyingi watu huona mambo kwa namna inayotofautiana. Tunapozungumzia mahitaji na matamanio yetu, tunaelewana vizuri zaidi na tunaweza kufanya uchaguzi mzuri zaidi pamoja kuhusu jinsi ya kutumia pesa zetu.\n\nAngalieni orodha yenu ya vitu mnavyotumia pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Fikirieni kuhusu mahitaji na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Angalieni orodha yenu ya vitu mnavyotumia, pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", - "Make a budget!": "Tengeneza bajeti!", - "Make a budget as one big family!": "Tengeneza bajeti kama familia moja kubwa!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Mtu mmoja ajitolee kuwashirikisha wengine orodha yake (Kama hakuna mtu anayejitolea, mnaweza kutengeneza orodha mpya pamoja)\n* Gawaneni majukumu – wengine watakuwa watu wazima, wengine watakuwa vijana.\n* Amueni kipato chenu kwa mwezi ni kiasi gani.\n* Chukueni hindi au maharage kadhaa au kitu chochote chenye chembechembe nyingi – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni pamoja mtatumia kiasi gani kwenye kitu gani, na muweke mawe/vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", - "Make a budget as a family!": "Tengeneza bajeti kama familia!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Andikeni kipato chenu kwa mwezi.\n* Chukueni hindi au maharage kadhaa au kitu chochote cha chembechembe – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni mtatumia kiasi gani kwenye kitu gani, na muweke hindi /vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Kazi nzuri sana, mmekamilisha hatua 3 za kwanza!\n\nHebu tuone jinsi @global.w_money_grandma alivyoweka mpango wa pesa zake, kama tu mnavyofanya:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ninataka wajukuu wangu wawe na maisha bora siku zijazo, lakini sijui mahali pa kupata pesa. Matapeli wa mikopo ni hatari na kuwalipa ni ghali sana.\n\nNinapaswa kuweka akiba, lakini ninahisi hilo haliwezekani!\"", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Lengo langu ni kuhakikisha mjukuu wangu wa kiume ataweza kupata elimu ya juu ya sekondari na mjukuu wangu wa kike anaweza kutimiza ndoto yake ya kusoma chuo kikuu. Ninawezaje kuweka akiba ya pesa nyingi kutokana na pesa kidogo nilizo nazo?\"", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Ninajua – hebu tuanze na mpango! Kwanza, ngoja nitengeneze bajeti – nipange ninavyoweza kuweka akiba ya pesa zangu. Halafu nitaweka akiba ya pesa kidogo tu kwa wakati mmoja – nitajiunga hata na kikundi cha kuweka na kukopa.\"", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Ninapaswa pia kuzungumza na wajukuu wangu wachague vitu vinavyotuwezesha kutumia pesa kidogo kila wiki. Watanisaidia kufikiria vitu tunavyovitaka lakini hatuvihitaji.\"", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Miaka michache baadaye:\n\n\"Ona, tumetimiza ndoto zetu! Sikukopa pesa yoyote kwa marafiki au kwa matapeli wa mikopo. Kwa kuweka akiba kidogokidogo kila wiki, niliweza kulipia ada ya sekondari kwa @global.w_money_teen_boy na kuweka akiba kwa ajili ya chuo kikuu ya @global.w_money_teen_girl. Ninajivunia sana jambo hili.”", - "What are your family savings goals?": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Hayo ni malengo mazuri sana!\n\nHilo ni lengo zuri sana! Tunapopanga pamoja bajeti nzuri na mpango mzuri wa kuweka akiba, tunaweza kufanikiwa na kuona fahari!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sisi sote tuna ndoto kwa ajili ya familia zetu, kama alivyo @global.w_money_grandma. Kwa kutenga pesa kidogokidogo kila mwezi, unaweza pia kuzitimiza malengo hayo!", - "What are your family savings goals?": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Hilo ni lengo zuri sana!\n\nKwa kutengeneza bajeti nzuri na mpango mzuri wa kuweka akiba, unaweza kufanikiwa na kuona fahari!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Kuweka akiba ni muhimu kwa sababu moja zaidi: dharura! @global.w_money_grandma naye alijifunza hivyo:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Usiku mmoja kulikuwa na dhoruba ya kutisha iliyoezua paa la nyumba yangu. Kila kitu kiliharibiwa na mafuriko. Ghafla ilibidi nitafute pesa za kukarabati paa. Nilihisi kushindwa kabisa.”", - "Let's talk about this story.": "Hebu tuzungumzie hadithi hii.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Kwa @global.w_money_grandma, dhoruba ilitokea.\n\nJe, kuna dharura gani nyingine zinazoweza kutokea?", - "Let's think about this story.": "Hebu tufikirie kuhusu hadithi hii.", - "For @global.w_money_grandma, a storm happened.": "Kwa @global.w_money_grandma, dhoruba ilitokea.", - "What other emergencies could come up for your family?": "Je, kuna dharura gani nyingine zinazoweza kutokea kwenye familia yako?", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Dharura zinaweza kutokea kwenye familia yoyote. Kuweka akiba ya pesa kwa ajili ya dharura hizi KABLA hazijatokea huzuia wasiwasi mwingi na msongo wa mawazo wa ghafla!", - "Let's talk about different ways we can save.": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Jadilini pamoja:\n* Je, kuna njia zipi tunazoweza kuzitumia kujiwekea akiba?\n* Je, kuna faida na hasara zipi kwa kila njia ya kujiwekea akiba?\n\nKuelewa vizuri kila njia kutawasaidia kuamua njia iliyo bora zaidi ya kuweka akiba kwa familia yenu.\n\nNjia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", - "Let's think about different ways we can save.": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kuna njia mbalimbali tunazoweza kuzitumia kujiwekea akiba: nyumbani, kununua vitu tunavyoweza kuviuza baadaye, benki, au kwenye kikundi cha kuweka akiba.\n\nFikiria faida na hasara za kila njia ya kujiwekea akiba.", - "What is the best savings option for your family?": "Je, njia ipi ya kujiwekea akiba ni bora zaidi kwa familia yenu?", - "Whatever savings plan you choose, it will really help your family move forward!": "Njia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Pangeni jinsi mnavyoweza kuweka akiba ya pesa, ili muweze kukabiliana na dharura na kutimiza malengo ya familia yenu!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Kama mnaweza kuweka akiba hata kiasi kidogo kwa ajili ya siku zijazo au dharura – kinaweza kusaidia sana.\n* Wekeni mduara uitwao \"dharura\".\n* Wekeni mduara uitwao \"malengo ya familia\".\n* Sasa jaribuni kugawanya pesa zenu ili muweze kuweka akiba kidogo kila mwezi kwa mambo yote haya.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "HONGERA!!! Mmetengeneza bajeti ya familia yenu – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu kwenye kikundi chenu anastahili kusifiwa, au sivyo?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "HONGERA!!! Mmetengeneza bajeti ya familia yako – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu katika familia yako anastahili kusifiwa, au sivyo?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "HONGERA!!! Umetengeneza bajeti yako – kumbuka kufanya zoezi hili tena na wanafamilia wengine – kama mtakubaliana kuhusu mpango fulani pamoja, mpango huo utaleta mabadiliko makubwa!", - "Step 1: THINK": "Hatua ya Kwanza: FIKIRI", - "What do we spend on now?": "Kwa sasa tunatumia pesa kwenye mambo gani?", - "THINK Activity": "Shughuli ya KUFIKIRI", - "Step 2: CHOOSE": "Hatua ya Pili: CHAGUA", - "Talk together about needs and wants": "Zungumzeni pamoja kuhusu mahitaji na matamanio", - "CHOOSE Activity": "Shughuli ya KUCHAGUA", - "Step 3: BUILD": "Hatua ya Tatu: TENGENEZA", - "Make your own budget": "Tengeneza bajeti yako mwenyewe", - "BUILD Activity": "Shughuli ya KUTENGENEZA", - "Step 4: PLAN": "Hatua ya Nne: PANGA", - "Emergencies and family goals": "Dharura na malengo ya familia", - "PLAN Activity": "Shughuli ya KUPANGA", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tengeneza tena bajeti – mara hii pamoja NA kijana wako na familia yako!\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – mtatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tengeneza bajeti na kijana wako na familia yako.\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – linatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Pitia tena bajeti yako na kijana wako na familia yako. Kufanya hivyo kutamkumbusha kila mtu kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile kwamba bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "Steps to make a budget": "Hatua za kutengeneza bajeti", - "Wonderful, I am so happy! Keep up the good work.": "Vizuri, nimefurahi sana! Endeleza kazi hiyo nzuri.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Tunasikitika kusikia kwamba mambo ni magumu. Kila familia inahangaika. Tuko hapa ili kusaidia!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Jambo lolote lililoenda 'vibaya' leo, hebu lisahau na ujaribu tena kesho. Itakuwa sawa!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Zingatia mambo chanya!\n\nKuwaambia vijana wetu kile hasa tunachotaka wafanye ni vizuri kuliko kuwakataza kufanya kitu.\n\nUtaona mabadiliko.", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Habari zenu?\n\nLeo mada yetu inahusu maelekezo chanya.\n\nNi muhimu kutoa maelekezo chanya kwa watoto wetu, kwa sababu tunapowapa maelekezo chanya, wanajua na kuelewa kile tunachotarajia wakifanye, na wanakifanya kwa namna tunavyotaka wakifanye.\n\nKwa hiyo, mwishowe kila mtu hufurahi.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Jaribio la kufikiria\n* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Jaribio la kufikiria\n* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Mazoezi ya nyumbani yanayopendekezwa", - "Let’s do a thought experiment!": "Hebu tufanye jaribio la kufikiria!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "USIFIKIRI KUHUSU TEMBO\n\nUnafikiri kuhusu nini?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Inawezekana ulifikiri kuhusu tembo...\n\nMaelekezo ya 'usifanye kitu hiki' huwafanya vijana wafikirie kuhusu kitu hicho.\n\nWakati mwingine huwa hawaelewi kile TULICHOTAKA wakifanye.\n\nPia, mara nyingi hawapendi kuambiwa wasifanye vitu fulani (kuna mtu yeyote anayependa?)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "SASA, FIKIRI KUHUSU DUMA!\n\nJe, unafikiri kuhusu nini?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Hapo sawa! Maelekezo chanya na bayana huwasaidia vijana kuzingatia kile wanachopaswa kufanya.\n\nKwa njia hiyo, vijana pia watahisi kuheshimiwa zaidi, na wana uwezekano mkubwa wa kusikiliza.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Hebu tuone ni nini kitatokea kama @global.w_instruct_female_caregiver atamwambia @global.w_instruct_teen_girl \"USIFANYE HIKI\":", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver alikuwa akisafisha nyumba wakati @global.w_instruct_teen_girl alipokuwa akifanya mazoezi ya kucheza na rafiki yake.\n\n@global.w_instruct_female_caregiver: \"Usifanye fujo kama hizi wakati ninaposafisha nyumba. Unanizuia! ”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Lakini ninahitaji kufanya mazoezi kwa ajili ya mashindano ya shule. Huwa hauniruhusu nifanye chochote.”\n\n@global.w_instruct_female_caregiver: \"Usinijibu hivyo!\"", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Aah!! Kwanini huwa unanifokea kila wakati????”\n\n@global.w_instruct_female_caregiver (akijisemea): \"Huyu mtoto analeta shida kila wakati.\"", - "Let's discuss what happened in this story.": "Hebu tujadili kilichotokea kwenye hadithi hii.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Jadilini pamoja:\n\n* Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?\n* Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver angeweza...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Kusema kitu kizuri kwanza\n* Angeongea na @global.w_instruct_teen_girl kwa sauti ya utulivu\n* Kumwambia @global.w_instruct_teen_girl kile anachotaka afanye", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?", - "Sad": "Huzuni", - "Confused": "Kuchanganyikiwa", - "Angry": "Hasira", - "What could @global.w_instruct_female_caregiver have done differently?": "Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", - "Said something nice first": "Alisema kitu kizuri kwanza", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ameongea na @global.w_instruct_teen_girl kwa sauti ya utulivu", - "Told @global.w_instruct_teen_girl what she wants her to do": "Alimwambia @global.w_instruct_teen_girl kile anachotaka afanye", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Asanteni kwa kufikiria pamoja!\n\nHebu turudi nyuma tuone kinachoweza kutokea kama @global.w_instruct_female_caregiver atatoa maelekezo chanya:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver alikuwa akisafisha nyumba huku @global.w_instruct_teen_girl akiwa na marafiki zake wakifanya mazoezi ya kucheza.\n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, inapendeza kukuona ukifanya mazoezi ya kucheza na rafiki yako. Tafadhali, fanyieni nje ili nimalize kusafisha nyumba. Baadaye, mtanionyesha mnavyocheza.\"\n\n@global.w_instruct_teen_girl: “Sawa, @global.w_instruct_female_caregiver!”", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Asante kwa kufanyia mazoezi nje nilipokuwa namalizia kufanya usafi, @global.w_instruct_teen_girl. Sasa nina muda wa kuangalia unavyocheza.\"", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Waoo, @global.w_instruct_teen_girl! Unacheza vizuri sana!\"", - "Let's discuss what happened this time.": "Hebu tujadili kilichotokea wakati huu.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Jadilini pamoja:\n\n* Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver wanajisikiaje sasa?\n* Je, mnadhani ni kwa nini mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", - "It worked better this time because...": "Mara hii mambo yalienda vizuri kwa sababu...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake\n* @global.w_instruct_female_caregiver aliweza kutulia \n* @global.w_instruct_female_caregiver alikuwa na mtazamo chanya", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Je, kwa nini unadhani mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver aliweza kutulia", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver alikuwa na mtazamo chanya", - "Positive instructions can work with your teen too!": "Maelekezo chanya yanaweza pia kufanya kazi kwa kijana wako!", - "GET REAL": "KUWA HALISI", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Je, kijana wako anaweza kweli kufanya kile unachotaka kumwambia? Inaweza kuwa vigumu kwao kusoma kimya kwa siku nzima, lakini ukimwambia afanye hivyo kwa nusu saa unapohitaji sana afanye hivyo, ni jambo linalotekelezeka.", - "GET POSITIVE": "KUWA NA MTAZAMO CHANYA", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Tabasamu, mwangalie machoni, na tumia maneno chanya. Msifie mara tu anapoanza kufanya kile unachotaka!", - "GET CLEAR": "KUWA BAYANA", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Mara nyingi tunajua nafsini mwetu kile tunachokitaka, lakini hakitusemi bayana kiasi cha kueleweka. Sema kile unachotaka kuona kijana wako akifanye. Jaribu kusema 'tafadhali, ifikapo saa 1 jioni uwe tayari umerudi nyumbani' badala ya kusema 'uwahi kurudi nyumbani'.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Hebu tufanye mazoezi ya kutoa maelekezo YANAYOTEKELEZEKA, CHANYA, na BAYANA. Kufanya mazoezi kutakusaidia kufanikiwa kwa kijana wako!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Chagueni watu wawili kwenye kikundi chenu:\n* Mtu mmoja ataigiza kama kijana\n* Mwingine ataigiza kama mzazi wa kijana\n* “Mzazi”: Mpe \"kijana\" wako maelekezo chanya kwa kumtia moyo na kumsifia\n* “Kijana”: Itikia kama unavyodhani kijana ataitikia maneno hayo\n\nJadilini pamoja jinsi mambo yalivyoenda:\n* Je, imekufanya ujisikieje kama \"mzazi\" na kama \"kijana\"?\n* Je, unaweza kufanya chochote vizuri zaidi?\n\nMpeni kila mtu nafasi ya kuwa \"mzazi\" na \"kijana\" kama mnaweza. Mazoezi huleta ufanisi!", - "Examples of positive instructions:": "Mifano ya maelekezo chanya:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ninapenda muziki wako. Je, unaweza kupunguza sauti wakati wa chakula ili tuweze kuzungumza? Asante – Ninashukuru sana kufanya hivyo.\n* Huo muziki ni mzuri sana. Umeimbwa na nani? Tafadhali zima muziki unapoingia nyumbani. Ukitaka, unaweza kuupiga chumbani mwako kwa sauti ya chini. Asante!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Zoezi la nyumbani la wiki hii ni kumpa kijana wako maelekezo chanya.\n\nKumbuka – KUTOA MAELEKEZO YANAYOTEKELEZEKA, KUWA NA MTAZAMO CHANYA, KUELEWEKA = KUPATA KILE HASA UNACHOKITAKA (kadri ya uwezo wa kijana!)", - "We care about you, and how life is treating you.": "Tunakuthamini wewe, na jinsi maisha yanavyokuendea.", - "You are a star. And you are making a real difference. Be proud of yourself.": "Wewe ni mshindi. Na unafanya mabadiliko ya kweli. Jionee fahari.", - "Sorry that things are not easy today. All parents have these days.": "Pole kwa sababu leo mambo siyo rahisi. Siku kama hizi huwatokea wazazi wote.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Fumba macho yako, vuta pumzi, na elewa kwamba kila kitu ulichokifanya ni cha muhimu sana.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Kila familia hukabiliwa na changamoto, lakini tunapofanya kazi pamoja tunaweza kushughulikia matatizo kwa njia iliyo bora na ya amani.\n\nNi ujuzi mzuri sana kwa kijana wako pia kujifunza!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Habari zenu?\n\nMada ya leo inahusu kutatua matatizo.\n\nSote tunajua kuwa katika maisha kuna nyakati tunakabiliwa na matatizo, na sote tunajua kwamba tunapojikuta katika nyakati hizo, ni vigumu kufikiria haraka ufumbuzi chanya.\n\nKwa hiyo, tunapokabiliwa na matatizo ni muhimu tupumzike, tupumue, tutulie na tufikirie ujuzi wa kutatua matatizo tunaoweza kuutumia. \n\nTunapotatua matatizo, tukumbuke kuwashirikisha vijana wetu. Kufanya hivyo kutawasaidia kuwajibika na kujifunza jinsi ya kutatua matatizo yao wenyewe siku zijazo.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadith & tafakari – ambayo haikufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Hebu tuangalie kile kilichotokea kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 yake pindi @global.w_solve_teen_girl alipopewa simu na mvulana… simu!", + "The new phone": "Simu mpya", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Hebu tuangalie kile kilichotokea kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 pindi @global.w_solve_teen_girl alipopewa simu na mvulana… simu!", "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: \"@global.w_solve_teen_girl, umekitoa wapi hicho?\"\n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 ameninunulia. Ni simu nzuri, @global.w_solve_female_caregiver_1. Inapiga picha nzuri sana!\"", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: \"Sitaki kuona hicho kitu cha bei mbaya! Huyo kijana si mtu mzuri! Hivi anafikiria utamlipaje hiyo simu?!”\n\n@global.w_solve_teen_girl: “Sio hivyo, @global.w_solve_female_caregiver_1! Hivyo sio vizuri!”", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: \"Sitaki kuona hicho kitu cha bei ghali! Huyo kijana si mtu mzuri! Hivi anafikiria utamlipaje hiyo simu?!”\n\n@global.w_solve_teen_girl: “Sio hivyo, @global.w_solve_female_caregiver_1! Hivyo sio sawa!”", "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: \"Sitaki kusikia hiyo habari!\"\n\n@global.w_solve_teen_girl: “Hutaki hata kunisikiliza! Hata sijui nikwambieje!”", - "Take a few deep breaths to calm down, and": "Vuta pumzi ndefu mara kadhaa upate kutulia, kisha", - "KNOW IT": "ELEWA", - "Identify the problem.": "Bainisha tatizo.", - "SOLVE IT": "TAFUTA UTATUZI", - "Think of possible solutions and what would happen if we used them.": "Fikiria njia za utatuzi zinazowezekana na kile kitakachotokea kama tutazitumia.", - "TRY IT": "CHAGUA", - "Choose a solution and try it out.": "Chagua njia ya utatuzi na uijaribu.", - "TEST IT": "JARIBU", - "Did it work? Great! If it did not work, then try another solution.": "Je, imefanikiwa? Safi sana! Kama haikufanikiwa, basi jaribu njia nyingine ya utatuzi.", + "Dealing with bullies": "Kukabiliana na uonevu", "Let’s see how problem solving works in practice.": "Hebu tuone jinsi utatuzi wa matatizo unavyofanya kazi katika maisha halisi.", "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 anarudi nyumbani kutoka kazini.\n\n@global.w_solve_female_caregiver_2 (akiwaza): \"Miguu yangu maskini! Ninahitaji kukaa chini kidogo na kunywa kikombe cha kahawa kabla ya kuanza kuandaa chakula cha wote.\"", "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Unafanya nini? Huo mkate ni wa chakula cha usiku! Sasa hautatutosha sisi sote!\"", @@ -634,286 +541,526 @@ "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo lakini nimefurahi kwamba umeniambia, @global.w_solve_teen_boy_2. Hata hivyo, hiyo siyo sababu ya wewe kula chakula cha kila mtu. Tukimaliza kuzungumza, uende dukani kununua mkate mwingine. Lakini kwanza: Unadhani tufanyeje kuhusu hili tatizo la kuonewa?\"\n\n@global.w_solve_teen_boy_2: Unajua... Nataka nije nimpige au nimlipizie kisasi.\"", "Step 2: SOLVE IT": "Hatua ya Pili: TAFUTA UTATUZI", "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… unafikiri nini kitakutokea ukifanya hivyo?\"\n\n@global.w_solve_teen_boy_2: \"Sijui. Yeye ni mkubwa kuliko mimi kwa hiyo anaweza akaniumiza mno. Na ninaweza kupata matatizo shuleni, nikafukuzwa.\"", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: \"Ndiyo, inaweza kuwa hivyo. Tunaweza kufanya nini badala yake?\"\n\n@global.w_solve_teen_boy_2: \"Nadhani ninaweza kumwambia mwalimu. Lakini watoto wengine wataniita poyoyo. Au ukazungumze na mwalimu?\"", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: \"Ndiyo, inaweza kuwa hivyo. Tunaweza kufanya nini badala yake?\"\n\n@global.w_solve_teen_boy_2: \"Nadhani ninaweza kumwambia mwalimu. Lakini watoto wengine wataniita mjinga. Au ukazungumze na mwalimu?\"", "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Nadhani hilo ni wazo zuri zaidi. Ninaweza pia kwenda kuzungumza na wazazi wake ukitaka nifanye hivyo.\"\n\n@global.w_solve_teen_boy_2: \"Ni sawa kama unadhani kufanya hivyo kutasaidia pia. Asante, @global.w_solve_female_caregiver_2.\"", "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Sema chochote unachohitaji, Mjukuu wangu. Usiku nikimaliza tu kula, nitafanya hivyo. Halafu unajua? Hilo lisipofanikiwa, tunaweza kujaribu njia nyingine pamoja.\"\n\n@global.w_solve_teen_boy_2: Asante, @global.w_solve_female_caregiver_2.\"", "Step 3: TRY IT": "Hatua ya Tatu: CHAGUA", "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Wiki moja baadaye...\n\n@global.w_solve_female_caregiver_2: \"Sasa hivi mambo yanaendaje shuleni?\"\n\n@global.w_solve_teen_boy_2: \"Yanaenda vizuri, yule kijana hachukui tena chakula changu. Lakini bado ananisumbua sana.\"", "Step 4: TEST IT": "Hatua ya Nne: JARIBU", "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo, @global.w_solve_teen_boy_2. Je, nimuombe mjomba wako aende kuongea na wazazi wake? Hilo lisipofanikiwa, tutajaribu njia nyingine!\"\n\n@global.w_solve_teen_boy_2: \"Sawa, asante @global.w_solve_female_caregiver_2. Angalau najua uko upande wangu.\"", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Jadilini pamoja:\n\nJe, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Je, unamkumbuka @global.w_solve_teen_girl na simu aliyopewa na mvulana?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Je, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Hebu turudi kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake ili tuone njia za utatuzi walizotumia.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake walipata njia tatu za utatuzi.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Kuwalea vijana ni kazi ngumu sana.\n\nMara nyingi huwa hakuna njia za utatuzi zilizo rahisi na zilizonyooka, lakini sasa @global.w_solve_female_caregiver_1 amejifunza kwamba kumbe anaweza kuzungumza mambo haya na binti yake.\n\nKabla, alikuwa akipata wasiwasi peke yake, lakini sasa wanaweza kutafuta pamoja njia za utatuzi!", - "Ground @global.w_solve_teen_girl for a month": "Mzuie @global.w_solve_teen_girl kwenda kutembea kwa mwezi mmoja", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: \"Mwezi ujao hutaweza kwenda huko nje kutembea.\"", - "That didn’t work... Let's try something else.": "Hiyo haikufanikiwa... Hebu tujaribu kitu kingine.", - "Return the phone and save up": "Rudisha simu na uanze kujiwekea akiba", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: \"Simlaumu rafiki yako wala sioni wivu. Nina wasiwasi kwamba mtu anapokupatia zawadi, ni vigumu kumkatalia atakapokuomba umlipe fadhila – kama vile ngono. Kama unataka kuwa na simu, tutajiwekea akiba pamoja ili uweze kufanya maamuzi yako mwenyewe bila yeye kukudai chochote.\"", - "This is great! Try the third option as well.": "Hilo ni jambo zuri sana! Jaribu pia chaguo la tatu.", - "Learn about safe sex": "Jifunze kuhusu ngono salama", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: \"Hii inanifanya nitambue kuwa tunapaswa kuzungumza kuhusu marafiki wa kiume na jinsi unavyoweza kujikinga. Vijana wengi wa rika lako wanapata mimba au VVU. Hebu twende kliniki uzungumze na muuguzi ili ujifunze jinsi unavyoweza kujikinga.”", - "This is great!": "Hilo ni jambo zuri sana!", - "Let's practice problem-solving!": "Hebu tufanye mazoezi ya kutatua matatizo!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Fanyeni mazoezi pamoja kuhusu tatizo lililopo sasa. Mmoja wenu awe mzazi na mwingine awe kijana.\n\nSifianeni na kutiana moyo – tunawaonea fahari!\n\nKumbukeni zile hatua:\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Wafundishe vijana wako hatua nne za kutatua matatizo:\nELEWA – TATUA – CHAGUA – JARIBU\n\nTumieni hatua hizi tatizo linapojitokeza.\n\nJambo baya linapotokea, mara nyingi tunafadhaika na kulaumu. Lakini kile ambacho vijana wetu wanahitaji ni mtu wa kuwasaidia kulitatua tatizo. Wasikilize, kubali jinsi wanavyoyaona mambo na kuyahisi, na washukuru kwa kukuamini.\n\nKumfundisha kijana wako jinsi ya kutatua matatizo kutamsaidia maishani mwake mwote. Zawadi iliyoje!", - "Some problems other parents solved with their teens:": "Baadhi ya matatizo ambayo wazazi waliyatatua na vijana wao:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Kijana wangu hataki kwenda shule\n* Nina wasiwasi kijana wangu atapata ujauzito au atampa mtu mjamzito\n* Nina wasiwasi kuhusu anachofanya kijana wangu mtandaoni\n* Kijana wangu ana marafiki wabaya\n* Kijana wangu ni mvivu\n* Kijana wangu hafanyi kazi zake za shuleni\n* Huenda kijana wangu anatumia madawa ya kulevya", - "Being a great parent also means taking time to care for yourself every day.": "Kuwa mzazi mzuri kunamaanisha pia kutumia muda ili kujithamini wewe mwenyewe kila siku.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Safi sana. Na inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitoa kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kuwa mzazi ni jambo gumu. Lakini inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitolea kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", - "Doing any of these makes you a great parent.": "Kufanya jambo lolote kati ya haya hukufanya uwe mzazi mzuri sana.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Vijana wanaweza kutumia muda mwingi nje ya nyumba au mtandaoni, ambako ni vigumu kwetu kuwaweka salama.\n\nKuzungumza pamoja kuhusu maeneo salama na yasiyo salama, na jinsi ya kuzuia matatizo, husaidia sana!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Habari zenu?\n\nLeo mada yetu inahusu usalama wa vijana.\n\nKama wazazi, ni jukumu letu kuwaweka salama vijana wetu wakati wote. Tunahitaji kuhakikisha kuwa vijana wetu wako salama katika jamii tunazoishi. Ni jukumu letu kuwafahamisha maeneo salama na yasiyo salama katika jamii hizo.\n\nPia ni jukumu letu kuhakikisha kwamba wanaelewa hatari zinazoweza kuwakabili wanapokuwa mtandaoni. Kwa njia hiyo, vijana wetu watawajibika na wataweza kufanya maamuzi sahihi ya kujiweka salama.", - "Today you will explore:": "Leo mtachunguza:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Man in car": "Mwanaume ndani ya gari", "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Mawasiliano ni jambo muhimu zaidi!\n\nHebu tuangalie kile kilichotokea kwa @global.w_safe_female_caregiver na @global.w_safe_teen_girl_1:", "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Kuna kitu kilitokea nilipoenda kutembea na marafiki zangu @global.w_safe_teen_girl_2 na @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Niambie, @global.w_safe_teen_girl_1\"", "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Mwanaume ndani ya gari: “Halo, mrembo. Nimekuwa nakuona kwa muda. Wewe ni mrembo sana, unaitwa nani?\n\n@global.w_safe_teen_girl_2: \"Anaitwa @global.w_safe_teen_girl_1\"", "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Mwanaume ndani ya gari: \"@global.w_safe_teen_girl_1, ungependa kuongozana nami tukapate chipsi na kinywaji? Twende, ingia, utawahi kurudi, nakuahidi… ”\n\n@global.w_safe_teen_girl_1: \"Sidhani kama hilo ni wazo zuri…\"", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Una bahati, shoga yangu. Natamani mwanamume aniombe MIMI tutoke akaninunulie zawadi. Ninakuambia, usipofanya hivyo, nitaenda nimwambie kila mtu kuwa wewe ni mjinga!”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Una bahati, rafiki yangu. Natamani mwanamume aniombe MIMI tutoke akaninunulie zawadi. Ninakuambia, usipofanya hivyo, nitaenda nimwambie kila mtu kuwa wewe ni mjinga!”", "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, usiende! Kuwa mwangalifu! Twende nyumbani. Ni hatari kwenda na watu usiowajua. Tena, mtu mwenyewe ni mkubwa sana kwako na anachokifanya sio sawa.\"\n\n@global.w_safe_teen_girl_1: \"Hata sijui nifanye nini…\"", "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: \"Ninafurahi sana kwamba hukuingia kwenye gari. Hiyo ilikuwa hali ya hatari, asante kwa kuniambia!\"", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "Hebu tuzungumzie kile kilichotokea kwa @global.w_safe_teen_girl_1", - "Discuss together: \n\nWhat was risky about that situation?": "Jadilini pamoja:\n\nKitu gani kilikuwa cha hatari kwenye tukio hilo?", - "The situation was risky because...": "Tukio hilo lilikuwa la hatari kwa sababu...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi\n* Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo\n* Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani\n* Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa\n* Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "Hebu tufikirie kuhusu kile kilichotokea kwa @global.w_safe_teen_girl_1:", - "What was risky about that situation?": "Kitu gani kilikuwa cha hatari kwenye tukio hilo?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Mwanaume wa ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi", - "@global.w_safe_teen_girl_1's friend was encouraging her": "Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani", - "Many girls in our communities get pregnant or catch HIV from older men": "Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", - "All those things are true!": "Mambo yote hayo ni ya kweli!", + "Online contact": "Mawasiliano mitandaoni", "Let's look at another example of a dangerous situation together.": "Hebu tuangalie pamoja mfano mwingine wa tukio la hatari.", "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: \"Rafiki yangu amekuwa akiwasiliana na mvulana wa rika letu mtandaoni... Atamtumia picha zake. Je, hilo ni jambo zuri kwa sababu yeye ni wa rika letu?\"", "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: \"Wewe ni rafiki mzuri kwa kumjali mwenzako. Kutuma picha zinazovutia kimapenzi ni hatari sana pia.\"", "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: \"Wakati mwingine watu wanadanganya mtandaoni – anaweza kusema ni wa rika lako kumbe ni mwanaume wa miaka 50. Au wakivunja mahusiano, anaweza kutuma picha hizo kwa kila mtu na rafiki yako akajisikia vibaya sana.\"", - "Let's talk about our teens' online safety.": "Hebu tuzungumzie usalama wa vijana wetu mtandaoni.", - "What are some of the online risks for teens these days?": "Je, ni zipi hatari za mtandaoni kwa vijana siku hizi?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono\n* Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine\n* Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua\n* Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha\n* Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", - "Let's think about our teens' online safety.": "Hebu tufikirie usalama wa vijana wetu mtandaoni.", - "What is the biggest online risk for teens these days?": "Je, ipi ni hatari iliyo kubwa zaidi kwa vijana mtandaoni siku hizi?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambazo wanaweza kuzijingiza!\n\nHebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nHebu sasa tuchore ramani hizo kama kikundi.\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Jadilini pamoja:\n\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n \n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", - "Safety Plan": "Mpango wa Usalama", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambamo wanaweza kujiingiza!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Kila wakati unapopanga mpango wa usalama au unapouzingatia, bofya @global.parent_point ili usherehekee mafanikio yako!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Hebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii – kama kijana wako yuko hapa sasa, mnaweza kufanya pamoja sasa!", - "My family can join in now!": "Familia yangu inaweza kujiunga sasa!", - "Let me try it out by myself": "Ngoja niijaribu peke yangu", - "Step 1: What are important places in your community?": "Hatua ya Kwanza: Je, yapi ni maeneo muhimu katika jamii yako?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora ramani ya jamii ya kijana wako, ikiwa na picha za maeneo yote muhimu kama barabara, nyumba yako, shule, maduka, maeneo anayotembelea kijana wako.", - "Step 2: Which places are safe and unsafe?": "Hatua ya Pili: Je, maeneo yapi ni salama na yapi si salama?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Jadilini pamoja:\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "Step 3: Where can you get support?": "Hatua ya Tatu: Je, unaweza kupata wapi msaada?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi. \n\nHapa chini kuna maeneo yanayoweza kukusaidia", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Wakati mwingine, tunaweza kujikuta matatani.\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", - "Step 4: What are risky places online and how can you make them safer?": "Hatua ya Nne: Je, maeneo gani mtandaoni ni ya hatari na unawezaje kuyafanya yawe salama zaidi?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Wasifie kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya mtandao yawe salama kwa vijana wenu na marafiki zao?", - "MAPS": "RAMANI", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Tengeneza RAMANI na kijana wako juu ya maeneo salama na yasiyo salama kwenye jamii yenu na mtandaoni. Zungumzieni jinsi ya kufanya taarifa, picha na video zake ziwe za faragha mtandaoni. Zungumzieni jinsi ambavyo kitu kikishawekwa mtandaoni, kitakaa hapo daima. Anaweza kuwa na mfano hai kutoka kwa marafiki zake.", - "RULES": "SHERIA", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Tengeneza SHERIA na kijana wako kuhusu kutumia kwa usalama programu na tovuti anazozipenda.\n\nJe, unakumbuka hadithi kuhusu Usalama Mtandaoni? Iangalie tena hapa.", - "Online Safety Story": "Hadithi ya Usalama Mtandaoni", - "AMNESTY": "MSAMAHA", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Wekeni makubaliano ya MSAMAHA. Kama kikitokea kitu kitakachomfadhaisha, kumnyima raha, au kumwogofya, anaweza kuzungumza na wewe na hautakasirika au kumwadhibu, hata kama alikuwa akifanya jambo baya.\n\nJe, unakumbuka hadithi kuhusu Msamaha wa Usalama? Iangalie tena hapa.", - "Safety Amnesty Story": "Hadithi ya Msamaha wa Usalama", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Malezi yanayohusu masuala ya kidijitali ni sawa tu na malezi ya masuala mengine maishani. Umepiga HATUA KUBWA ya kumweka salama kijana wako katika jamii NA mtandaoni. Ni jambo zuri kwako!", - "Resources to help in the community": "Rasilimali za msaada katika jamii", - "Online Safety Resources": "Rasilimali za Usalama Mtandaoni", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Wewe na kijana wako choreni ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote wawili mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Kama bado hamjafanya hivyo pamoja, choreni ramani mbili za maeneo salama na yasiyo salama wewe na kijana wako:\n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", - "Safety Plan Activity": "Shughuli ya Mpango wa Usalama", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Safi sana! Tunakuonea fahari kwa yote uliyoyafanya katika wiki zilizopita.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Tunasikitika kusikia kuwa leo ni siku mbaya kwako. Tunafuhari kwa yote uliyoyafanya katika wiki zilizopita.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye malezi.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye @global.parent_app.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Habari zenu?\n\nMada ya leo inahusu usherehekeaji na hatua zinazofuata.\n\nLimekuwa jambo zuri sana na la kufurahisha kuwa na wewe kwenye safari hii. Leo tunasherehekea safari yetu pamoja.\n\nLeo tunasherehekea mafunzo yote tuliyojifunza kwa muda wote.", - "Today you will celebrate, look back and look ahead:": "Leo utasherehekea, kuangalia tulikotoka na kufikiria yajayo:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Tafakari & majadiliano\n* Nyenzo: Jinsi ya kusaidiana\nKUTANA – ITA – TUMA UJUMBE – SHIRIKISHA\n* Msaada wa kupanga", - "Today you celebrate and reflect on your experiences.": "Leo tutasherehekea na kutafakari kuhusu uzoefu uliyopitia.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Wewe na familia yako mmejifunza mengi. Hebu tufikirie hali ilivyokuwa na tuone kilichobadilika.", - "Reflect": "Tafakari", - "Listen and reflect": "Sikiliza na utafakari", - "Read and reflect": "Soma na utafakari", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Fumba macho na chukua pumziko.\n\nFikiria maisha ya familia yako yalivyokuwa kabla ya kuanza safari yako kwenye programu hii.\n\nJikumbushe ujuzi uliojifunza:\n* Kujithamini\n* Muda wa kutumia pamoja wawili\n* Kusifia\n* Maelekezo chanya\n* Kudhibiti msongo wa mawazo\n* Kutengeneza bajeti ya familia\n* Sheria\n* Njia za kufanya athari nyepesi\n* Kutatua matatizo\n* Usalama wa vijana\n* Kushughulikia hali ya matatizo\n\n Tafakari kuhusu safari – je, ilikuwaje kwako:\n* Kushirikishana na wengine mawazo na uzoefu\n* Kutafakari na kujifunza kutokana na Hadithi\n* Kutumia ujuzi kwa kijana wako\n\nJe, kulikuwa na mabadiliko yoyote kwako na kwa familia yako?\n\nJe, unahitaji nini ili kuendelea kutumia ujuzi?", - "Let's talk about what has changed.": "Hebu tuzungumzie kilichobadilika.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Jadilini pamoja:\n* Je, ni nini kimebadilika kwenye familia yako?\n* Je, umefanya kitu gani unachokionea fahari?\n\nKumbukeni kusifiana na kutiana moyo!", - "MEET": "KUKUTANA", - "Keep meeting regularly to give each other parenting support.": "Endeleeni kukutana mara kwa mara ili kupeana msaada wa malezi.", - "CALL": "KUPIGIANA SIMU", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Kuweni 'marafiki wa malezi' wanaopigiana simu pindi mmoja wenu anaposikitika au asipojua cha kufanya.", - "TEXT": "KUTUMIANA UJUMBE WA MAANDISHI", - "Text each other every week to share what you’ve done well.": "Tumianeni ujumbe wa maandishi kila wiki ili kushirikishana kile mlichofanya vizuri.", - "SHARE": "KUSHIRIKISHANA", - "Share @global.parent_app and help other families start their journey.": "Sambaza @global.parent_app ili usaidie familia nyingine kuanza safari yao.", - "End of programme check-in": "Mwisho wa kuingia kwenye programu", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Umekuwa ukitumia @global.parent_app kwa miezi kadhaa iliyopita, lakini kumlea kijana ni mchakato wa muda mrefu zaidi! Maswali yanayofuata kuhusu uzoefu wako wa malezi yatatusaidia kutathmini malezi yako.\n\nKuwa mkweli. Kumbuka kuwa mamilioni ya wazazi wanahisi kama unavyohisi, na sote tunastahili kusaidiwa. Hauko peke yako!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Inaonekana tayari umemaliza mwisho wa kuingia kwenye programu. Sasa unaweza kuruka shughuli hii.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Pangeni jinsi mtakavyosaidiana siku zijazo.\n\nMnaweza kutumia mawazo kutoka familia nyingine, au kubuni yenu wenyewe!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Tunajivunia sana wewe. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri. Wewe ni mzuri.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Sisi tunajivunia sana nyie. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri sana. Wewe ni mzuri sana.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Karibu! Tunafurahi sana kuwa nawe hapa. Wiki hii inahusu WEWE.\n\nKatika kipindi cha ukaribisho:\n* Utapata nyenzo za kujitunzia\n* Utarekebisha programu hii kulingana na mahitaji yako", - "Wonderful, I am so happy things are going well.": "Ni jambo la kuvutia sana, ninafurahi sana mambo yanaenda vizuri.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Tunasikitika kuona kuwa mambo ni magumu sasa. Wakati mwingine ni jambo la kawaida kabisa kupata misukosuko. Kumbuka kwamba hauko peke yako!", - "Why @data.workshop.w_self_care.short_title?": "Kwa nini @data.workshop.w_self_care.short_title ni muhimu?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Mara nyingi hatujithamini vya kutosha. Lakini kufanya hivyo ni muhimu sana, hasa kwa mzazi!\n\nKupunguza msongo wa mawazo na kujithamini vizuri hutusaidia sisi PAMOJA NA vijana wetu.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Habari zenu?\n\nMada ya leo inahusu kujithamini wenyewe.\n\nKuna nyakati tunapata changamoto, ambapo tunakabiliwa na matatizo na hatujui cha kufanya. Ni muhimu kujithamini kwa kujifunza mbinu tunazoweza kuzitumia kuwa watulivu iwapo matatizo, changamoto au shida zitatokea.\n\nTunapokuwa watulivu, tunakuwa katika hali nzuri ya kufikiria vizuri na kupata ufumbuzi chanya wa changamoto zozote tunazoweza kukabiliwa nazo.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Leo utaona shughuli 3 zinazoweza kukusaidia kujithamini, na tutakuuliza maswali kadhaa ili kuhakikisha kuwa programu hii iko sawa kabisa kwa ajili yako.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Shughuli ya kujiburudisha\n* Shughuli ya kujitambua\n* Shughuli ya kujipongeza\n* Nyenzo: Jinsi ya kujithamini\n* Rekebisha programu hii\n* Mazoezi ya nyumbani yanayopendekezwa", - "Let's try it out and do a short relaxation activity together!": "Hebu tujaribu na kufanya pamoja shughuli fupi ya kujiburudisha!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Kama wazazi, mara nyingi hatuna muda wa kujithamini – lakini kujithamini ni muhimu sana! Kupunguza msongo wa mawazo hutusaidia sisi PAMOJA NA vijana wetu.\n\nHebu tupige hatua ya kwanza na tufanye pamoja shughuli fupi ya kujiburudisha.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Kumakinikia kile tunachokifanya vizuri hutusaidia kuzingatia mambo chanya.\n\nHebu tutumie muda kujisifia. Tutakuonyesha jinsi ya kujisifia.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.\n\nSemezaneni kwa sauti: \"Ninajipongeza kwa...\"\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", - "Recognise": "Tambua", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Tumia muda kujisifia.\n\nSasa tutakuonyesha jinsi ya kujisifia.", - "Think of one thing YOU have done well recently.": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.", - "\"Well done to me for...\"": "\"Ninajipongeza kwa...\"", - "Showing love to my children": "Kuonyesha upendo kwa watoto wangu", - "Getting up even though I felt tired": "Kuamka hata kama nilijisikia uchovu", - "Smiling at someone": "Kutabasamu", - "Making food to stay strong": "Kupika chakula cha kunipa nguvu", - "Spending time with my children": "Kutumia muda kukaa na watoto wangu", - "Helping my children with schoolwork": "Kuwasaidia watoto wangu kazi za shule", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Sema kwa sauti kama unaweza.\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", - "Well done! Try to do this every day.": "Hongera! Jaribu kufanya hivyo kila siku.", - "Things to praise yourself for:": "Mambo ya kujisifia:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Kuonyesha upendo kwa watoto wako\n* Kuamka hata kama ulihisi uchovu\n* Kutabasamu\n* Kupika chakula cha kukupa nguvu\n* Kutumia muda kukaa na watoto wako\n* Kuwasaidia watoto wako kazi za shule", - "Have a hot drink": "Kunywa kinywaji cha moto", - "Call a friend or relative": "Mpigie simu rafiki au jamaa", - "Have a relaxing bath": "Oga kwa kujiburudisha", - "Read": "Soma", - "Watch TV": "Kutazama runinga", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Kujithamini sisi wenyewe ni ujuzi muhimu wa malezi. Shirikishaneni nyote:\n\nJe, ni vitu gani vidogo vinavyokufurahisha?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Jaribu kufanya kitu cha kujipongeza kila siku.\n\nUnaweza kutumia ujuzi huu nyumbani. Utaupata wakati wowote kwenye @global.parent_centre!", - "Reward": "Tuzo", - "We all deserve to treat ourselves well!": "Sisi sote tunastahili kujitendea vizuri!", - "What small thing makes you happy?": "Je, ni kitu gani kidogo kinachokufurahisha?", - "Nice! Taking care of yourself is an important parenting skill!": "Safi! Kujithamini wewe mwenyewe ni ujuzi muhimu wa malezi!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_1 au kitu kingine chochote kinachokufurahisha.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_2 au kitu kingine chochote kinachokufurahisha.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_3 au kitu kingine chochote kinachokufurahisha.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_4 au kitu kingine chochote kinachokufurahisha.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_5 au kitu kingine chochote kinachokufurahisha.", - "Things you can do to reward yourself:": "Vitu unavyoweza kufanya ili kujipongeza:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Kunywa kinywaji cha moto\n* Kumpigia simu rafiki au jamaa\n* Oga wa kujiburudisha\n* Soma\n* Kutazama runinga", - "RELAX": "Chukua pumziko", - "Do a 30 second quick relaxation activity.": "Fanya shughuli ya kuchukua pumziko ya haraka kwa sekunde 30.", - "RECOGNISE": "TAMBUA", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni! Sema kwa sauti kama unaweza: \"Ninajipongeza kwa…\"", - "REWARD": "TUZO", - "Remember you deserve your quality time too! What makes you happy?": "Kumbuka unastahili pia kuwa na wakati bora! Ni nini kinachokufurahisha?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Sasa kwa kuwa tumejifunza kwa kiasi fulani ujuzi wa kujithamini, hebu tuhakikishe @global.weekly_workshops ziko sahihi kabisa kwa ajili yako.", - "You seem to have completed the customisation process already. You can now skip this activity.": "Inaonekana tayari umemaliza kufanya marekebisho. Sasa unaweza kuruka shughuli hii.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Kila mara uwezapo, jiburudishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", - "Relax activity": "Shughuli ya kujiburudisha", - "Recognise activity": "Shughuli ya kujitambua", - "Reward activity": "Shughuli ya kujipongeza", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Kila mara unapojiburudisha, tambua kitu ulichofanya vizuri au kujipongeza, vuna @global.parent_points ili kusherehekea mafanikio yako!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Umekamilisha kipindi cha wiki hii.\n\nTutafanya tena baadhi ya shughuli za kujithamini utakapokutana na kikundi chako kwa mara ya kwanza – nyote mnastahili muda wa ziada wa kujithamini.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Habari @field.user_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\nKipindi kipya cha malezikinakusubiri kikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Habari @field.group_name! Hongereni kwa kuanza wiki ya 5 ya @global.parent_app.\n\nkipindi kipya cha malezi kinawasubiri kikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Tuna kipindi kipya kwa ajili yako kinachohusu kudhibiti hasira na msongo wa mawazo. Itakusaidia kujithamini vizuri zaidi.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Je, una furaha, huzuni, hasira, taharuki au wasiwasi? Vizuri sana kwa kutambua jinsi wewe na wengine mlivyojisikia leo! Na kumbuka, kesho ni siku mpya.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Wakati mwingine sisi sote huhisi kulemewa. Kuvuta pumzi ndefu husaidia!\n\nMaliza @local.workshop_data.in_text_title ili kupata baadhi ya nyenzo muhimu za kukabiliana na msongo wa mawazo.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Je, hali yako ya msongo wa mawazo ilikuwaje wiki hii? Jaribu kuvuta pumzi ndefu mara kadhaa kabla ya kumjibu kijana wako – kufanya hivyo kunaleta mabadiliko makubwa.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kesho kipindi kipya kabisa ya @global.parent_app kitakuwa tayari kwa ajili yako.\n\nKwa kumalizia kwanza @local.workshop_data.in_text_title, utajiwekea msingi mzuri sana: Wewe utakapojisikia vizuri, familia yako nayo itajisikia vizuri!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya na kitakusaidia kupumzika na kujifunza ujuzi muhimu sana!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Halo @field.user_name! Leo tunaadhimisha miezi miwili ya kutumia @global.parent_app!\n\nUnafanya vizuri sana! Kipindi cha wiki hii kitakusaidia kujua cha kufanya pindi kijana wako asipofuata sheria za kaya.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Habari @field.group_name! Leo tunaadhimisha miezi miwili ya kutumia @global.parent_app!\n\nMnafanya vizuri sana! kipindi cha wiki hii kitawasaidia kujua nini cha kufanya pindi vijana wenu wasipofuata sheria za kaya.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Ni jambo zuri sana kwamba umekuwa ukitumia @global.parent_app. Tayari umeshapata nyenzo 6 za malezi!\n\nJifunze kipindi kinachofuata ili kupata nyenzo nyingine ya malezi!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Maliza kipindi hiki halafu ujaribu kujadili pamoja na kijana wako ili kupata athari moja chanya na athari moja hasi ya kurekebisha tabia.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Je, wewe na kijana wako mmeweza kupata athari moja chanya na athari moja hasi ya kurekebisha tabia?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Athari nyepesi humsaidia sana kijana wako kufuata sheria vizuri – zijaribu kabla ya kuendelea!\n\nHongera kwa kujitoa kwa dhati kwa ajili ya familia yako.", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi muhimu!", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Habari @field.user_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\nKipindi kipya kinakungoja! Je, unaweza kubuni mada ya kipindi kutokana na picha hii?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Habari @field.group_name! Hongereni kwa kuanza wiki yenu ya tatu ya @global.parent_app.\n\nKipindi cha wiki hii kinawangoja! Je, mnaweza kubuni mada ya kipindi hiki kutokana na picha hii?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Hongera kwa kutumia @global.parent_app ili kuwekeza kwa ajili yako na familia yako.\n\nJaribu @local.workshop_data.in_text_title ujipatie ujuzi mzuri sana wa malezi!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @local.workshop_data.in_text_title uone jinsi WEWE unavyoweza kutumia sifa kwenye familia yako.", - "Praise time!": "Muda wa kusifia!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Utakapomwona tena kijana wako, msifie kwa jambo moja analofanya vizuri!\n\nNa, je, ni lini mara ya mwisho ulipojisifia wewe mwenyewe au mtu mzima mwingine katika kaya yako? Jaribu kufanya hivyo!", - "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Halo @global.user_name, kipindi kipya kinakungoja kesho. Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kwa kweli ni fupi sana (amini ninakwambia!) – unaweza hata kuimalizia wakati unasubiri chakula cha usiku kiive. Kwa nini usiipitie ukipata muda?\n\nKwa mara nyingine, asante kwa kutumia @global.parent_app.", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, kipindi kipya kitafunguliwa. Jaribu – utaona mabadiliko kwenye tabia ya kijana wako.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Habari @field.user_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\nKipindi cha wiki hii kinahusu jinsi ya kuboresha uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Habari @field.group_name! Hongereni kwa kuanza wiki ya 4 ya @global.parent_app.\n\nKipindi cha wiki hii kinahusu jinsi ya kuboresha uwezo wenu wa kuwafanya vijana wenu wafanye kile mnachowaagiza kufanya.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Jipongeze kwa kazi kubwa unayoifanya. Hakuna mzazi aliye kamili, na tunafikiri unafanya vizuri sana!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Bado hujaweka alama yoyote kwenye @data.habit.instruct_positively.title @global.parent_points. \n\nIjaribu leo!", - "Well done!": "Hongera!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "Tayari umeweka alama ya @global.parent_point @data.habit.instruct_positively.title mara @field.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Je, kijana wako anakusikiliza kila mara? Kama hakusikilizi kila mara (kama ilivyo kwetu sisi wengine wote), angalia kipindi cha wiki hii ili ujifunze jinsi kutoa maelekezo chanya kunavyoweza kusaidia.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Maelekezo chanya husaidia kuleta tabia nzuri zaidi na zaidi!\n\nMaliza @local.workshop_data.in_text_title ili kupata mawazo kuhusu namna jambo hili linavyoweza kufanya kazi kwenye familia yako.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Kama kawaida, unaweza kupata kipindi kipya kesho. Litakuwa jambo zuri kumalizia kipindi kilichopita kabla ya wakati huo.\n\nWazazi wengine wanatumia programu hii wanaposafiri kwenda kazini. Kwa nini usitumie programu hii unapopata muda wa kutulia?\n\nAsante kwa mara nyingine kwa kutumia @global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, kipindi kipya kitakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", - "First @global.weekly_workshop!": "@global.weekly_workshop ya kwanza!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Halo @fields.user_name. @local.workshop_data.in_text_title iko tayari kwa ajili yako.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Halo @fields.group_name. @local.workshop_data.in_text_title iko tayari kwa ajili yenu.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Kutumia muda pamoja na kijana wako husaidia kujenga kuaminiana kati yenu.\n\nEndelea na safari yako ya @global.parent_app sasa – wewe na familia yako mtaona matokeo mazuri sana.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Hongera kwa kufanya jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", - "Have you spent time with your teen already?": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Asante kwa kutumia @global.parent_app na kujitolea kwa dhati katika malezi yako.\n\n@local.workshop_data.in_text_title yako iko tayari kwa ajili yako!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Haitachukua muda mrefu, na utapata taarifa muhimu sana.\n\nHongera kwa kujaribu kuwa mzazi bora. Kesho, utaweza kupata kipindi kipya.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Habari @field.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nKipindi hiki kitakuonyesha jinsi ya kujiandaa mapema.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Halo @field.user_name! Hali ya hatari inaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nKipindi hiki kitawaonesha jinsi ya kufanya hivyo.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Wewe ni mzazi makini. Jipongeze - haya ni mafanikio makubwa sana!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Hatujui lini matatizo yanaweza kutokea, lakini TUNAWEZA kujiandaa!\n\nAnza kipindi cha wiki ijayo kwa kutafuta jinsi gani unaweza kufanya hii pamoja na kijana wako.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @local.workshop_data.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", - "Have you discussed with your teen what you would do in a crisis situation?": "Je, umejadili na kijana wako kuhusu nini mnachoweza kufanya katika kipindi cha matatizo?", - "Crisis Examples": "Mifano ya Hali ya Tatizo", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kesho, kipindi cha mwisho cha @global.parent_app kitakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza kipindi kipya. Kwa njia hiyo, unaweza kukamilisha ujuzi wa malezi na kuamua ufanye nini baadaye!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata warsha ya mwisho ili kutafakari kuhusu safari yako kwenye @global.parent_app na kile unachoweza kufanya baadaye!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Habari @field.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Halo @field.group_name! Mnakaribia kumaliza warsha zenu za @global.parent_app! Hongereni kwa kujitolea kwenu kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahieni!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Huu ni wakati mgumu zaidi wa kuwa mzazi. Unapaswa kujionea fahari kwa kila kitu ulichofanya.\n\nKumbuka kila wakati ulipomfanya kijana wako atabasamu na matunzo yote uliyompa. Wazazi ni wazuri sana, na wewe pia ni mzuri!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Umepata ujuzi mwingi wa malezi kwa wiki kadhaa zilizopita!\n\nMaliza warsha inayofuata ili kupata ujuzi mwingine wa kukusaidia.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ili kijana wako awe salama, ni vizuri mpige soga pamoja kuhusu jamii yenu na shughuli zake mtandaoni.\n\nMaliza @local.workshop_data.in_text_title halafu utaona jinsi unavyoweza kufanya jambo hili!", - "Have you talked with your teen about safety measures?": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kuweka mpango pamoja na kijana wako kunaweza kuzuia matatizo mengi – jaribu kufanya hivyo kabla ya kuendelea!\n\nHongera kwa kutumia @global.parent_app ili kuisaidia familia yako.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Hongera, umemaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Habari @field.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Habari @field.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Kujitolea kwako ni mfano wa kuigwa na kila mtu. Tulia na uendelee!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Unapokuwa na vijana, na katika maisha haya, matatizo yasiyotarajiwa hutokea na tunapaswa kukabiliana nayo.\n\nAnza warsha inayofuata ili kujifunza jinsi ya kutatua matatizo hayo kwa mafanikio.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @local.workshop_data.in_text_title ili upate ujuzi mwingine muhimu wa malezi!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Je, tayari umejaribu kutumia hatua nne za kutatua matatizo na kijana wako?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Kesho, warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Kujua jinsi ya kutatua matatizo pamoja kutasaidia katika nyakati mbalimbali!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Habari @field.user_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Habari @field.group_name! Ni wiki mpya na warsha mpya! Jifunzeni jinsi ya kutengeneza sheria za kaya kwa namna itakayowaongezea vijana wenu uwezekano wa kuzifuata.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Wakati mwingine vijana wenu huonekana kama bado wamehamaki hata mnapokuwa mmefanya kadri muwezavyo. Kumbukeni kwamba mnafanya kazi nzuri sana, na mtapata pia nyakati nzuri za kufurahi nao pamoja!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Kwa mara nyingine, asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye safari yako ya malezi.\n\n@local.workshop_data.in_text_title itakuonesha jinsi ya kuweka sheria kwa namna itakayomsaidia kijana wako kuzielewa na kuzifuata vizuri zaidi.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @local.workshop_data.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", - "Have you managed to set a rule together with your teen?": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kesho warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Haitachukua muda mrefu na itamsaidia kijana wako kufuata sheria vizuri zaidi!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, warsha mpya itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Habari @field.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Habari @field.group_name! Mnaanza mwezi wenu wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itawapa nyenzo zitakazowasaidia kupanga matumizi yenu ili muweze kuwa na pesa za kutosha kumaliza mwezi.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Wakati wowote unapohisi upweke au kuzidiwa, jua kwamba hauko peke yako. Kuna wazazi duniani kote ambao wanapitia hali kama yako.\n\nKila siku unafanya kadri ya uwezo wako na sisi sote tunajivua wewe!", + "@global.w_crisis_teen_girl_1's crisis": "Matatizo ya @global.w_crisis_teen_girl_1's ", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Hali ya hatari inaweza kumtokea mtu yeyote.\n\nHebu tuone kilichotokea kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Jamani, Mjukuu wangu, unaonekana unasikitika sana, unataka kuniambia kilichotokea?\"", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ni Mjomba wangu, ali-… ali-… alinigusa.\"\n\n@global.w_crisis_female_caregiver (akiwaza): \"Vuta pumzi kidogo... Mwanangu anataka nini? Anataka nitulie na nimsikilize.\"\n\n@global.w_crisis_female_caregiver: \"Njoo ukae karibu na mimi. Usiwe na haraka, ninakusikiliza.\"", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Ni kweli, ali-… ali-… alisabisha nifanye hivyo! Alisababisha nifanye naye mapenzi! Naapa, sikutaka; hadi nikasema HAPANA, lakini akaniambia nitapata shida.\"\n\n@global.w_crisis_female_caregiver: \"Asante kwa kunishirikisha mimi pia. Usihofu. Hili sio kosa lako.\"", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see your friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Jana ulipoenda kumtembelea rafiki yako. Alikuja na ndipo ilipotokea.\"\n\n@global.w_crisis_female_caregiver: \"Usijali, ninakuamini mwanangu. Hili ni jambo kubwa na tutatafuta namna ya kupata msaada tunaohitaji. Ni wapi tunaweza kwenda kwa ajili ya msaada?\"\n\n@global.w_crisis_teen_girl_1: \"Shule yangu?\"", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Ah najua, twende kliniki. Wao watajua tufanye nini ili kukusaidia. Je, hiyo ni sawa kwako?\"\n\n@global.w_crisis_teen_girl_1: \"Ndiyo… Sawa… Lakini, je, tunaenda wote na wewe?\"", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Ni sawa kabisa. Na @global.w_crisis_teen_girl_1? Kumbuka hili siyo kosa lako. Ninakupenda. Wewe ni mtu mzuri. Tutalimaliza hili.\"", + "The fight": "Kupigana", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Tatizo jingine ambalo wazazi wengi wana wasiwasi nalo ni vurugu na uhalifu. Hebu tuangalie pamoja mfano mmoja.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, unaonekana una wasiwasi tangu jana. Kuna tatizo gani?\"", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Jana, mimi na marafiki zangu tulienda kwenye mpira. Kuna vijana waliokuwa wamelewa, walianza kupigana na rafiki yangu.\"\n\n@global.w_crisis_male_caregiver_1: \"Endelea, ninakusikiliza. Natumaini haukupigana?\"", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Sikutaka kupigana, lakini nisingeweza kukaa tu hapo na kuwaacha wampige rafiki yangu, kwa hiyo...\"\n\n@global.w_crisis_male_caregiver_1: \"Kwa hiyo, ulipigana ili kumtetea rafiki yako?\"", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Kila mtu alikuwa anapigana. Niliona mtu mmoja amelala uwanjani kwenye dimbwi la damu. Alionekana... amefariki.\"", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Nimefurahi unaniambia kuhusu jambo hili, @global.w_crisis_teen_boy_1. Hebu tukae pamoja sasa na kujadili iwapo tunapaswa kuwahusisha polisi au mtu mwingine wa kutusaidia.\"", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Asante, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Tutalimaliza hili. Kumbuka, tutakusaidia kama familia.\"", + "It is hard to find time to do something nice with your teenager.": "Ni ngumu kupata muda wa kufanya kitu kizuri na kijana wako.", + "How many times in the past month did you get involved in activities that your teen likes?": "Ni mara ngapi kwa mwezi uliopita ulijihusisha na shughuli ambazo kijana wako anapenda?", + "In our busy lives it’s hard to focus on the positive.": "Katika maisha yetu yenye shughuli nyingi ni vigumu kuzingatia mambo chanya.", + "How many times in the past month have you praised your teen?": "Ni mara ngapi katika mwezi uliopita ulimsifia kijana wako?", + "Being a parent can be stressful.": "Kuwa mzazi inaweza ikaleta mfadhaiko.", + "How many times in the past month did caring for your children make you feel very stressed?": "Ni mara ngapi katika mwezi uliopita kuwajali watoto wako kulikufanya uhisi mfadhaiko?", + "There are days in our lives where we feel sad and down, and days where we feel happy.": "Kuna siku maishani mwetu tunahisi huzuni na tunakuwa wanyonge na kunasiku ambazo tunahisi furaha.", + "How many days in the past week have you felt depressed?": "Ni siku ngapi katika wiki iliyopita umehisi sonona?", + "How many days in the past week have you felt that everything you did was an effort?": "Ni siku ngapi katika wiki iliyopita ulihisi kuwa kila kitu ulichofanya ulitumia jitihada?", + "How many days in the past week have you felt hopeful for the future?": "Ni siku ngapi katika wiki iliyopita ulikuwa na matumaini kwa ajili ya wakati ujao?", + "Days in the past week": "Siku za wiki iliyopita", + "Sometimes our children make us really upset.": "Wakati mwingine watoto wetu hutukasirisha sana.", + "How many times in the past month did you shout, scream or yell at your teen?": "Ni mara ngapi katika mwezi uliopita umempayukia, umepigia kelele au kumfokea kijana wako?", + "How many times in the past month did you insult your teen or call them names or stupid?": "Ni mara ngapi katika mwezi uliopita ulimtukana kijana wako au kumuita mjinga au majina mabaya?", + "Money is one of the biggest stresses for families.": "Pesa ni miongoni mwa vyanzo vikubwa zaidi vya msongo wa mawazo katika familia.", + "How many times in the past month have you felt worried or anxious about money?": "Ni mara ngapi katika mwezi uliopita ulihisi wasiwasi au uwoga kuhusu fedha?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulikosa pesa za kununulia chakula?", + "Days in the past month": "Siku katika mwezi uliopita", + "Families also have difficult experiences like sickness and losing loved ones.": "Familia pia hupitia wakati mgumu kama ugonjwa na kupoteza wapendwa wao.", + "Has a caregiver of your teen (like a parent or grandparent) ever passed away?": "Je kuna mlezi wa kijana wako (kama mzazi au bibi/babu) ambae amefariki?", + "Did they pass away in the last 3 years?": "Je alifariki katika kipindi cha miaka mitatu iliyopita?", + "It is so stressful when children misbehave.": "Watoto wanapokuwa na tabia mbaya wanaleta msongo wa mawazo.", + "How many times in the past month did you physically discipline your teen by hitting, spanking, or slapping with your hand or and object like a stick or belt?": "Ni mara ngapi katika mwezi uliopita ulimpatia mwanao adhabu za mwilini kwa kumpiga, kumchapa makalioni au kumpiga kofi au na kitu kama fimbo au mkanda?", + "How many times in the past month did you discipline your teen with a push or grab?": "Ni mara ngapi katika wiki iliyopita ulimuadhibu kwa kumsukuma au kumkamata kwa nguvu?", + "It’s hard to keep track of our teenagers when they are becoming more independent.": "Ni ngumu kuwafuatilia vijana wetu pale wanapoanza kuwa na uhuru.", + "How many times in the past month did your teen stay out in the evening past the time that they are supposed to be home?": "Ni mara ngapi katika mwezi uliopita, kijana wako alikaa nje mida ya jioni zaidi ya muda anaotakiwa kuwepo nyumbani?", + "How many times in the past month did your teen go out with friends you don’t know?": "Je, ni mara ngapi katika mwezi uliopita, kijana wako alitoka na marafiki usiowajua?", + "How many times in the past month did your teen not let you know where they were going?": "Je, mara ngapi katika mwezi uliopita kijana wako hakukuambia wapi wanapoenda?", + "Sometimes teenagers are hard to talk to.": "Muda mwingine ni vigumu kuongea na vijana.", + "Have you ever talked with your teen about ways to avoid being touched or made to do sexual things with people or online?": "Uliwahi kuongea na kijana wako kuhusiana na njia za kuzuia kushikwa au kulazimishwa kufanya matendo ya kingono na watu au mitandaoni?", + "Well done for talking to your teen about keeping safe.": "Vizuri kwa kuongea na kijana wako kuhusu kujiweka salama.", + "How many times in the last month have you had a talk like this?": "Ni mara ngapi katika mwezi uliopita mliweza kuwa na maongezi kama haya?", + "How many times in the past month has your teen walked home alone, taken a lift with someone they don’t know or hung out in a place that made you worried for their safety?": "Ni mara ngapi katika mwezi uliopita kijana wako alirudi nyumbani akiwa peke yake, kupewa lifti na mtu usiyemjua au kuwapo sehemu iliokufanya uwe na mashaka juu ya usalama wao?", + "Times in the past month": "Nyakati katika mwezi uliopita", + "It can sometimes be difficult to have a positive relationship with our children.": "Wakati mwingine inaweza kuwa vigumu kuwa na mahusiano chanya na watoto wetu.", + "How confident do you feel about your ability as a parent/caregiver to have a positive relationship with your children?": "Kwa kiwango gani unajiamini kuhusu uwezo wako kama mzazi/mlezi katika kujenga mahusiano chanya na watoto wako?", + "Spending time with your teen is not always easy. You’ll find ideas about how to do this in the @data.workshop.w_1on1.in_text_title. You can also find information in @data.parent_centre.my_tips.location_text.": "Kutumia muda na kijana wako daima sio rahisi . Unaweza kupata vidokezo ya namna ya kufanya hivi kupitia @data.workshop.w_1on1.in_text_title. Unaweza kutafuta taarifa katika @data.parent_centre.my_tips.location_text.", + "Well done! You’ll find more ideas about how to do this in the @data.workshop.w_1on1.in_text_title.": "Vizuri! Utakuta namna nyingi zaidi kuhusu jinsi ya kufanya hizi kupitia @data.workshop.w_1on1.in_text_title.", + "It’s not always easy to praise. You’ll learn more about this skill in the @data.workshop.w_praise.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text.": "Sio rahisi kusifia kila mara. Utajifunza ujuzi huu kupitia @data.workshop.w_praise.in_text_title. Ikiwa unataka msaada wa papo kwa hapo, unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "Wonderful that you are praising your teen! This helps them feel valued.": "Vizuri kuwa unawasifia vijana wako. Hii itasaidia wajihisi wanathaminiwa.", + "Great job managing your stress. You'll learn more about how to relax, recognise and reward yourself in the @data.workshop.w_self_care.in_text_title.": "Kazi nzuri katika kudhibiti mafadhaiko yako. Utajifunza zaidi jinsi ya kutulia, kutambua na kujipongeza ndani ya @data.workshop.w_self_care.in_text_title.", + "Life can definitely get stressful. You'll learn more about taking care of yourself well in the @data.workshop.w_self_care.in_text_title and about managing stress in the @data.workshop.w_stress.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text.": "Maisha yanaweza yakawa ya mafadhaiko. Utajifunza zaidi namna ya kujithamini vizuri ndani ya @data.workshop.w_self_care.in_text_title. Kama ukihitaji msaada wa papo kwa hapo unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "Thank you for answering these questions. When life gets difficult, it’s easy to forget about the good. You are the best parent your teen could have!": "Nashukuru kwa kujibu haya maswali. Maisha yanapokuwa magumu, ni rahisi kusahau mazuri. Wewe ni mzazi mzuri kijana wako anayeweza kuwa nae!", + "Well done for controlling your anger. You'll learn more about how to respond calmly in the @data.workshop.w_self_care.in_text_title.": "Vizuri sana kwa kudhibiti hasira yako. Utajifunza zaidi jinsi ya kujibu kwa utulivu ndani ya @data.workshop.w_self_care.in_text_title.", + "All parents use certain methods to teach children how to behave. Sometimes our children make us really angry or upset and we do things we wish we hadn’t. You’ll learn more effective methods to respond to your teen and help them behave well in the @data.workshop.w_consequence.in_text_title. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.": "Wazazi wote hutumia njia flani kuwafundisha watoto namna tabia zao zinapaswa kuwa. Wakati mwengine watoto wetu hutukasirisha sana na tunafanya vitu tunatamani tusingefanya. Utajifunza njia zenye matokeo za kukabiliana na kijana wako na kumsaidia kuwa na tabia njema ndani ya @data.workshop.w_consequence.in_text_title. Ikiwa unahitaji msaada wa papo kwa hapo unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "Money stress can affect any family. You can learn more about budgeting in the @data.workshop.w_money.in_text_title to help with money stress and reduce money-related arguments.": "Mfadhaiko wa kifedha unaweza kuathiri familia yoyote. Unaweza ukajifunza zaidi kuhusu kubajeti ndani ya @data.workshop.w_money.in_text_title kusaidia na mfadhaiko wa kifedha na kupunguza ugomvi unaohusiana na maswala ya kifedha.", + "Money stress can be overwhelming. The @data.workshop.w_money.in_text_title includes information that will help with budgeting. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.": "Mafadhaiko ya kifedha yanaweza kukusonga. @data.workshop.w_money.in_text_title inajumuisha taarifa ambazo zitakusaidia na kubajeti. Ikiwa unahitaji msaada wa papo kwa hapo unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "Losing loved ones is hard. You can find ways to help you and your teen cope with grief in @data.parent_centre.bereavement.location_text.": "Kuwapoteza wapendwa ni ngumu. Unaweza ukapata njia za kukusaidia wewe na kijana wako kukabiliana na majonzi @data.parent_centre.bereavement.location_text.", + "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Inafurahisha sana kuona unajibu kwa utulivu licha ya kijana wako kufanya jambo la kufadhaisha. Anaweza kujifunza mambo mengi sana kutoka kwako!", + "We all feel overwhelmed sometimes. The information in the @data.workshop.w_consequence.in_text_title will help you feel less stressed and show you effective ways to teach your children the right behaviour. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.": "Muda mwingine sote tunahisi kuzidiwa. Taarifa ndani ya @data.workshop.w_consequence.in_text_title itakusaidia kupunguza mfadhaiko na kuonyesha njia bora ya kumfundisha kijana wako tabia njema. Kama unahitaji msaada wa papo kwa hapo, unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "Great job keeping your teen safe. You’ll learn more about this in the @data.workshop.w_safe.in_text_title.": "Ni kazi nzuri kumuweka kijana wako salama. Utajifunza zaidi kuhusu hili ndani ya @data.workshop.w_safe.in_text_title.", + "Keeping track of our teens is not easy. Information in the @data.workshop.w_safe.in_text_title will support with building communication and keeping your teen safe. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.": "Kuwafuatilia vijana wetu si kazi rahisi. Taarifa ndani ya @data.workshop.w_safe.in_text_title itakusaidia kujenga mahusiano na kumuweka kijana wako salama. Ukihitaji msaada wa papo kwa hapo, unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "It can be difficult to know how to keep our teens safe. We often feel powerless as parents. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.": "Ni vigumu kujua namna ya kuweka vijana wetu salama. Mara nyingi wazazi tunahisi hatuna nguvu. Unaweza pata nyenzo muhimu kukusaidia kupanga usalama ndani ya @data.parent_centre.my_tips.location_text muda wowote.", + "It can be hard to know what your teen is doing and parents worry about their safety. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.": "Ni vigumu kujua namna ya kuweka vijana wetu salama. Mara nyingi wazazi tunahisi hatuna nguvu. Unaweza pata nyenzo muhimu kukusaidia kupanga usalama ndani ya @data.parent_centre.my_tips.location_text muda wowote.", + "Welcome and Self-Care": "Makaribisho na Kujithamini", + "**Welcome and Self-Care** @global.workshop": "**Ukaribisho na kujithamini** @global.workshop", + "This @global.workshop is about YOU. Looking after yourself is essential for a happy family.": "Hii @global.workshop ni kwa ajili YAKO. Kujiangalia mwenyewe ni muhimu kwenye familia yenye furaha.", + "Self-Care": "Kujithamini", + "Why Self-Care?": "Kwa nini Kujithamini ni muhimu?", + "How to do self-care": "Jinsi ya kujithamini", + "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.": "Kwa mimi kama mzazi, ilikuwa kama haiwezekani kupata muda kwa ajili yangu. Nilikuwa na kazi nyingi za kumwangalia kila mmoja. Kupitia @global.parent_app, niligundua ni jinsi gani ilivyo muhimu kujijali mwenyewe. Inanisaidia mimi na familia yangu!\n\nKuwa na muda kwa ajili yangu binafsi inanisaidia kupumua na kujua jinsi ninavyo hisi. Hata dakika 5 za kupata kikombe cha chai inaleta mabadiliko makubwa. Sasa naweza kushughulikia msongo wangu wa mawazo vizuri zaidi.", + "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.": "Mara nyingi Baba yangu alikuwa na kazi nyingi. Angweza kurudi kutoka kazini na kuwa mwenye haraka pale tunapoanza kumuuliza maswali.\n\n@global.parent_app imetusaidia sana. Hatugombani tena. sasa hivi, baba yangu akirudi nyumbani, anakaa kwanza chini kwa dakika 5 na baadae tunafanya pamoja zoezi la kupumzika kutoka katika @global.parent_app, hivyo wote tunaweza kuvuta pumzi ndefu na kupumzika. Baadae tunaweza kuongelea kuhusu siku yetu, kuhusu chochote kibaya au kizuri kilichotokea. Kila mmoja ni mwenye furaha zaidi sasa hivi.", + "One-on-One Time": "Muda wa Pamoja Wawili", + "**One-on-One Time** @global.workshop": "**Muda wa Pamoja Wawili** @global.workshop", + "Spending time with your teen builds a positive relationship.": "Kutumia muda pamoja na kijana wako hujenga mahusiano chanya.", + "Why One-on-One Time?": "Kwa nini Muda wa Pamoja Wawili ni muhimu?", + "How to spend one-on-one time": "Jinsi ya kutumia muda wa pamoja wawili", + "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!": "Niliposikia kwa mara ya kwanza ninatakiwa kuwa na muda wa pamoja na kijana wangu, ilikuwa vigumu kwangu. Sikujua wakati gani wa kufanya au nini cha kusema. Sikutaka kumharibu kijana wangu ili kwamba ajue tunatakiwa kufanya kila kitu pamoja.\n\nLakini nilitaka sana kujenga uhusiano wangu na kijana wangu na nilitaka awe muwazi kuhusu nini kinachomsumbua. Hivyo tulijaribu muda wa pamoja.\n\nMwanzo, ilionekana ajabu, lakini ilibadilika na kuwa ya kufurahisha! Sasa hivi tunaangalia pamoja vipindi vyake vya TV na tunaviongelea. Na tunaweza hata tukaongea kuhusu jinsi mtoto wangu wa kiume anavyobadilika, na hata kuhusu marafiki wa kike na vitu hivyo!", + "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.": "Mama yangu alipoomba kutumia muda na mimi, niliwaza \" Labda kitu flani hakiko sawa, labda anaumwa\". Lakini alisema \"Hapana, nahitaji tu kutumia muda. \"Nilikuwa na mashaka, lakini nilikubali.\n\nAliniuliza nini ninapenda kufanya. Kilikuwa kitu kigeni na sikuwa huru, kwa sababu hajawahi kutumia muda pamoja na mimi kwa ajili yangu.\n\nKadri alivyoendelea kujaribu na tulitumia muda pamoja, ilikuwa safi sana. Aliweza kinishirikisha utoto wake, vitu ambavyo sikuwa kusikia kabla. Hiyo ilinisaidia pia kusema kinachoendelea katika maisha yangu. Tuliongea hata kuhusu marafiki zangu wa kiume na kuhusu matatizo. Najua ninaweza kuongea na mama yangu sasa hivi.", + "Praise": "Kusifia", + "**Praise** @global.workshop": "**Kusifia** @global.workshop", + "Praise helps teens show more positive behaviour.": "Kusifia husaidia vijana kuwa na tabia chanya.", + "Why Praise?": "Kwa nini Kusifia ni muhimu?", + "How to praise": "Jinsi ya kusifia", + "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!": "Tulipojifunza kuhusu mambo ya kusifia, niliwaza \" Hatukuwahi kusifiwa kwa vitu kama vijana, hivyo kwa nini tuanze sasa?\". Lakini nilivutiwa nilipojifunza faida zinaweza kuwepo kwa kusifia.\n\nBaada ya warsha ya wiki, niligundua kijana wangu anafanya kile wanachofanya kila siku: Kuosha vyombo. Na nilisema \"Asante kwa kuosha vyombo, binti yangu, inanifanya nifurahi sana kwamba unasaidia\". Kijana wangu alikuwa anatabasamu na hata alikuja kunikumbatia, kitu ambacho hakuwahi kufanya.\n\nHili jambo la kusifia ni gumu. Bado ninasahau muda mwingine au kusifia wakati huo huo nakosoa. Lakini kusifia kunaleta mabadiliko. Sikuwahi kuwaza kwamba sifa kidogo inaweza kuleta mabadiliko hayo kwa mtu!", + "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.": "Nilishukuru kwamba Mama yangu alijifunza kuhusu kusifia.\n\nMama yangu mara nyingi aligundua pindi nilipofanya kitu kibaya.Alikuwa akinifokea na kunipiga.\n\nLakini Mama yangu alipohudhuria warsha,alinisifia kwa vitu vidogo.Mwanzoni niliwaza \" Nini kinaendelea?\"lakini kiliendelea.Nilikipenda hivyo niliendelea kufanya mambo mazuri zaidi na nilifikiri atapenda.\n\nNajihisi furaha kwamba Mama yangu anaona vitu vizuri ninavyofanya, na si mambo mabaya tu.\n\nNiliwahi kumwambia mara moja.Wakati wa @data.workshop.w_1on1.title,Nilisema \" Asante Mama, kwa kuniambia maneno mazuri wakati ninapofanya Jambo vyema, na si tu wakati ninapofanya jambo vibaya.\" Hii ilitufanya sote kuwa na furaha sana.", + "Positive Instructions": "Maelekezo Chanya", + "**Positive Instructions** @global.workshop": "**Maelekezo Chanya** @global.workshop", + "Teens follow instructions that are positive more easily.": "Vijana hufuata maelekezo chanya kwa urahisi zaidi.", + "Why Positive Instructions?": "Kwa nini Maelekezo Chanya ni muhimu?", + "How to give positive instructions": "Jinsi ya kutoa maelekezo chanya", + "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.": "Awali, Niliwalea vijana wangu kama vile nilivyolelewa mimi: Ningewaambia \" Usifanye hiki, Usifanye kile\" Tulikuwa tukigombana sana, lakini mambo yalibadilika sana pindi nilipo jifunza kutoa maelekezo chanya. \n\nSasa nimejikita katika tabia ninayotaka kuiona, na natoa maelekezo ya wazi na rahisi kwa vijana wangu. Ilinichukua muda kujifunza kusema \"Tafadhali fanya hivi\" badala ya \"Usifanye hivi\"\n\nVijana wangu na hata Mume wangu wanasema wanapenda namna hii ya ufanyaji vitu, kwa sababu sasa wanajua nini kinatakiwa kufanyika. Kijana wangu alisema siku moja \"Ninampenda sana huyu Mama mpya\", na msongo wangu wa mawazo umepungua kwa kiasi kikubwa.", + "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.": "Mwanzoni, sikujali kwamba Mama yangu alikuwa anafanya @global.parent_app. Lakini nilianza kuona Mama yangu anabadirisha namna ya kuzungumza na sisi.\n\nSiku moja,wakati nilipokuwa nikitoka na marafiki zangu aliniambia ni lazima nirudi nyumbani saa kumi na mbili jioni. Nilisema tu \" Hmmmm sawa\", kwa sababu kawaida hakutoa maelekezo ya wazi ya namna alivyotaka, Angeweza kukaa bila kusema chochote kisha akanifokea kwa kuchelewa kurudi pindi ninaporudi nyumbani.\n\nPindi niliporudi nyumbani muda wa saa kumi na moja jioni, Mama yangu alinikumbatia na kusema \" Asante kwa kuzingatia muda, ilikuwa ni ajabu lakini nilipenda.\n\nTangu hapo,tumekuwa na Mawasiliano ya wazi katika nyumba.", + "Managing Stress": "Kudhibiti Msongo wa Mawazo", + "**Managing Stress** @global.workshop": "**Kudhibiti Msongo wa Mawazo** @global.workshop", + "Life is stressful. Staying calm helps us handle any situation better.": "Maisha ni ya mafadhaiko. Kuwa na utulivu husaidia kukabiliana na hali yoyote vyema.", + "Why Managing Stress?": "Kwa nini Kudhibiti Msongo wa Mawazo ni muhimu?", + "How to manage stress": "Jinsi ya kudhibiti msongo wa mawazo", + "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!": "Maisha ni magumu wakati mwingine. Kabla sijajiunga na @global.parent_app,Nilikuwa mwenye hasira wakati wote. Nilitoa hasira zangu kwa watu wote katika familia, si kwa vijana wangu tu bali hata kwa Mume wangu pia. Walikuwa wakikimbia pindi niliporudi nyumbani, kwa sababu walijua nitaanza kuwafokea.\n\nKujifunza kupumzika na kuvuta pumzi awali ilikuwa ngumu, lakini wakati mwingi nilijaribu, Ilinisaidia kutulia. Sasa Vijana wangu hawakimbii tena pindi ninaporudi nyumbani, na wanasikiliza vizuri zaidi kuliko nilipokuwa nikiwafokea awali!", + "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.": "Pindi nilipofanya kitu kibaya, Baba yangu alinikasirikia sana na kunipiga. Alikuwa hanisikilizi na hii ilinifanya kumkasirikia yeye pamoja na watu wengine.\n\nSasa, pindi anapokuwa na hasira, anachukua dakika chache kuvuta pumzi ndefu kabla hajajibu chochote. Inafanya kila mtu kutulia badala ya kusababisha ugomvi mkubwa.\n\nHii inanisaidia sana nyumbani na hata shuleni, hata Mimi sasa siwakasirikii wengine na si mtu wa hisia kali. Pindi ninapojihisi hasira au mwenye msongo wa mawazo, Navuta pumzi ndefu kama Baba yangu anavyofanya. Nimekuwa mtu tofauti.", + "Problem Solving": "Kutatua Matatizo", + "**Problem Solving** @global.workshop": "**Kutatua matatizo** @global.workshop", + "Together with your teen, you can handle any challenge.": "Pamoja na kijana wako mnaweza kutatua changamoto yoyote.", + "Why Problem Solving?": "Kwa nini Kutatua Matatizo ni muhimu?", + "How to solve problems": "Jinsi ya kutatua matatizo", + "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.": "Sina mahusiano mazuri na binti yangu. Mara nyingi nilikuwa nikimfokea, na alikuwa akikataa kwenda shuleni.\n\nMara nilipoanza kutumia muda wangu pamoja naye, Nilitambua kwamba hakutaka kwenda shuleni kwa sababu alikuwa akionewa. Tulikaa chini na kutumia hatua sita za kutatua tatizo. Tulitambua tatizo, na kutafuta suluhisho kwa pamoja:\"Naweza kufanya nini kama mzazi ili uweze kuhudhuria shuleni na kujihisi salama?\"\n\nTulikubaliana kuwa nitakwenda kuzungumza na mwalimu kutafuta suluhisho. Ni kweli tulipata suluhisho kwa pamoja, na sasa tupo karibu.", + "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.": "Pindi Baba yangu aliponitambulisha hatua za kutatua tatizo, ilinisaidia mimi na familia yangu, lakini pia iliwasaidia marafiki zangu.\n\nNiliwaambia marafiki zangu kuhusu hatua hizo, na sasa wakati tunapobishana tunakaa chini na kila mmoja anakuja na suluhisho. Kisha tunaangalia madhara hasi na chanya ya kila suluhisho, na tunakubaliana\"sawa ngoja tujaribu hii moja,\"\n\nMarafiki zangu huchukua na kupeleka nyumbani kwao, na inawasaidia wao na familia zao pia!\n\nNi furaha pindi ambapo wengine wanakusikiliza na kukubaliana na mawazo yako hata kama wewe ni mdogo. Sote tunaweza kuleta maelewano na marafiki na familia.", + "Family Budgets": "Bajeti za Familia", + "**Family Budgets** @global.workshop": "**Bajeti za Familia** @global.workshop", + "Making a plan to budget and save as a family prevents disagreements.": "Kupanga bajeti na kuweka akiba kama familia husaidia kupunguza hali ya kutokuelewana.", + "Why Family Budgets?": "Kwa nini Bajeti za Familia ni muhimu?", + "How to budget & save": "Jinsi ya kutengeneza bajeti & kuweka akiba", + "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.": "Kuweka akiba na kupanga bajeti inanisaidia kama mzazi, na inawasaidia vijana wangu kuelewa mahali pesa inapokwenda.\n\nVijana wangu mara nyingi walikuwa wakiuliza vitu vingi na walikuwa hawaelewi pindi niliposema \"Sina pesa\" Walikuwa wakisema \"Lakini una kazi!\"\n\nNilikaa nao chini na kuwaonyesha vitu vyote tunavyolipa na kiasi kilichobaki. Sasa wanaelewa na wananipa mawazo namna ya kufanya ili kuweka akiba na kufanyia kazi malengo yetu kama viatu vipya au sherehe ya kuzaliwa na malengo makubwa kama ada yao ya shule. Kwa mkubwa mmoja, niliweza kufungua akaunti ya akiba.", + "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.": "Nilikuwa nikimwambia Mama yangu aninunulie nguo nzuri kila wakati, wakati mwingi alisema \" Sina pesa\", lakini nilikuwa najua kwamba anapata pesa kutoka kwa Mjomba. Sikuelewa kwanini alikuwa akikataa kuninunulia nguo. Nilifikiri kwa wakati fulani \" Kwamba hanipendi.\"\n\nLakini siku moja, aliniita na kunikalisha chini na kuniuliza \" Ni yapi mahitaji na matakwa katika nyumba yetu.\" Nilianza kuorodhesha mahitaji na matakwa yangu.\nKisha Mama alinisaidia kufikiri juu ya mahitaji ya familia. Sasa naelewa ni wapi pesa zetu zinakwenda, kwenye vitu tunavyohitaji kama familia.\nKuanzia siku hiyo, Nilielewa na siwezi kuja kila mara kuuliza. Sasa, ninapohitaji kitu fulani, nasubiri mpaka mwisho wa mwezi tunapojadili bajeti kwa pamoja kuona kama itawezekana. Tunaelewana kila mmoja kwa sasa.", + "Rules": "Sheria", + "**Rules** @global.workshop": "**Sheria** @global.workshop", + "Teens follow rules more when you create them together.": "Vijana hufuata sheria zaidi pale unapotengeneza nao pamoja.", + "Why Rules?": "Kwa nini Sheria ni muhimu?", + "How to create rules": "Jinsi ya kuunda sheria", + "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.": "Vijana wangu mara nyingi walipotea.Nilikuwa sijui walipokuwa, na nilipata wasiwasi na hasira juu yao. Nilikuwa nikisema \"Hii ni nyumba yangu, na hizi ni sheria zangu, kama hutaki kuzifuata unaweza kuondoka na kwenda kuishi kwako.\"\n\nPindi tulipojifunza kwenye @global.parent_app kuhusiana na sheria, Nilijifunza kwamba kuna sheria kwa ajili ya vijana, watu wazima na watu wengine wote. Kama tukifuata sheria kama wazazi, vijana wetu wataishi kwa kufuata mfano wetu.\n\nNilieleza wasiwasi wangu na wote tukakubaliana: Sote tunafuata sheria na kusema tunaenda wapi pindi tunapotoka nyumbani. Kuja na sheria kwa pamoja imetusaidia sana, kwa sababu vijana wangu hawanioni kama mzazi ninayekera ambaye naweka sheria zisizo za lazima.", + "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.": "Sikuwahi kupenda sheria na nilikuwa nikisahau sheria mara nyingi.\n\nSiku moja, nilikuwa nikicheza na marafiki zangu. Sheria ya nyumbani ilikuwa ni kwamba lazima tuwe nyumbani saa kumi na mbili jioni, lakini nilisahau tena. Ilipofika saa kumi na mbili na nusu ilikuwa usiku na bado nilikuwa nje nikichezea simu yangu. Kisha alikuja kijana, na kukwapua simu yangu na kukimbia.\n\nNilielewa kwamba sheria zinatusaidia kuwa salama, hivyo nilibadili tabia yangu na nilirudi nyumbani saa kumi na moja kwa wakati huo.", + "Calm Consequences": "Athari Nyepesi", + "**Calm Consequences** @global.workshop": "**Adhabu Nyepesi** @global.workshop", + "Consequences help us discipline our teens in a calm way – it works.": "Athari husaidia kuadabisha vijana wetu kwa namna ya utuilivu - inafanya kazi.", + "Why Calm Consequences?": "Kwa nini Athari Nyepesi ni muhimu?", + "How to give calm consequences": "Jinsi ya kuamuru athari nyepesi zifanywe", + "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!": "Pindi vijana wangu walipofanya kitu cha kunikasirisha, niliwafokea na kuwaadhibu muda huo huo. Lakini wakati uliofuata walifanya tena! Sikuelewa kwanini hawakunisikiliza hata nilipowafokea.\n\n@global.parent_app imenisaidia kuelewa kwamba vijana wangu wananisikiliza zaidi pindi ninapokuwa nimetulia. Kwahiyo, pindi kitu kinapotokea navuta pumzi ndefu na kusema \" Tutazungumza hili baadae wakati sote tumetulia.\"\n\nSasa tunakubaliana matokeo pamoja kabla kitu hakijaenda vibaya. Hii imefanya maajabu. Nimeshaona mabadiliko makubwa ya tabia kwa vijana wangu sasa wanahusishwa zaidi,na nimepunguza msongo wa mawazo.\n\nNatamani ningelijua hili muda mrefu, lakini sijachelwa sana kuanza!", + "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.": "Mama yangu na Baba yangu mara nyingi waliniadhibu pindi walipokuwa na hasira na mimi. Walinifokea na mimi nilipata hasira. Mara nyingi sikufuata sheria zao, kwa sababu zilikuwa kali, sikuelewa kile walichokuwa wakisema, au Nilikuwa sijihangaishi kuwasikiliza, kwa sababu wote tulikuwa na hasira.\n\nSiku moja, waliniuliza: Hebu tufikiri kwa pamoja madhara yanayoweza kukupata kwa kushindwa kurudi nyumbani kwa wakati. Ilikuwa ni furaha kubwa kutoa maoni yangu kabla kitu hakijatokea na kutufanya wote kuwa na hasira. Wote tulitulia na kukubaliana kwanza. Sasa ni rahisi kwangu kufuata sheria kwa sababu najua na nilikubali sheria hizo na madhara kama sitafuata sheria hizo.", + "Teen Safety": "Usalama wa Vijana", + "**Teen Safety** @global.workshop": "**Usalama wa kijana** @global.workshop", + "Talking and planning helps prevent dangerous situations, in-person and online.": "Kuongea na kupanga husaidia kuzuia hali hatarishi, ana kwa ana na mtandaoni.", + "Why Teen Safety?": "Kwa nini Usalama wa Vijana ni muhimu?", + "How to keep your teen safe": "Jinsi ya kumweka salama kijana wako", + "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.": "Nilikuwa mwenye furaha kufanya mipango salama na kijana wangu. Nilifikiri nilijua ni maeneo yapi ni salama kwa kijana wangu na yapi si salama. Lakini pindi tulipofanya mipango salama kwa pamoja, Niligundua kwamba binti yangu anajua zaidi maeneo ambayo mimi sikuyafahamu.\n\nPia nilifikiri kwamba alikuwa salama alipokuwa shuleni, lakini kwa shughuli hii niligundua kwamba alikuwa akionewa shuleni na walimu hawakufanya chochote kuhusu hilo.\n\nKadiri tulivyozidi kuongea, ndivyo nilivyozidi kuelewa na kupata taarifa kutoka kwa kijana wangu. Hii imenisaidia sana kumlinda kijana wangu na kumuweka salama.", + "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!": "Wakati marafiki zangu au mimi nilipoingia katika ugomvi, nilikuwa mara nyingi nikijaribu kuficha kwa mama angepata hasira na kunifokea.\n\nWakati tulitengeneza ramani ya maeneo salama na yasiyo salama, nilijifunza mengi-pia kwanini ni hatari kushirikisha kila picha kwenye mtandao wa kijamii. Mama yangu aliniambia kwamba naweza kumuuliza wakati wowote kama kuna tatizo na aliahidi kutokukasirika.\n\nAlitunza ahadi yake, hivyo sasa kama nina tatizo au sijihisi salama najua tunaweza kukaa na kuja na suluhisho la pamoja. Kwa sasa nawezi hata kuzungumza na Mama yangu kuhusu mambo ninayofanya kwenye mtandao!", + "Dealing with Crisis": "Kushughulikia Hali ya Matatizo", + "**Dealing with Crisis** @global.workshop": "**Kushughulikia Hali ya Hatari/Dharula** @global.workshop", + "A crisis can happen in any family. You can be prepared.": "Matatizo yanaweza kutokea katika familia yoyote. Unaweza kuwa tayari.", + "Why Dealing with Crisis?": "Kwa nini Kushughulikia Hali ya Hatari/Dharula ni muhimu?", + "How to deal with crisis": "Jinsi ya kushughulikia hali ya hatari", + "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!": "Kijana wangu alikuwa mwenye hasira muda wote. Alikuwa hasikilizi na tulikuwa tunajikuta katika marumbano makubwa kila siku. Kupitia @global.parent_app, nilianza kutumia muda zaidi na kijana wangu na kuimarisha uhusiano wetu. Siku moja alinishirikisha kwamba alikuwa sehemu ya genge lakini alikuwa anataka kujitoa.\n\nTuliweka pamoja mipango ya muda mfupi na ya muda mrefu jisni tunaweza kufanya hivyo. Maisha yetu yanaonekana tofauti sasa hivi!", + "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.": "Miaka miwili iliyopita, nilibakwa na mjomba wangu aliyekuwa anaishi nyumbani kwetu. Sikumwambia mama yangu, kwa sababu niliogopa angenipiga, kunifokea, au hata kunifukuza ndani ya nyumba. Sikuwa na mahali popote pengine pa kwenda.\n\nWakati mama yangu alipoanza @global.parent_app, alianza kutumia muda zaidi pamoja. Nilikuwa bado naogopa, lakini mwisho nilimshirikisha mama yangu.Mama yangu hakufoka, lakini alinisikiliza na kuniambia siyo kosa langu. Tulienda polisi na kliniki pamoja. Ninashukuru sana sihitaji kutunza zaidi siri hii.", + "Celebration and Next Steps": "Kusherehekea na Hatua Zinazofuata", + "**Celebration and Next Steps** @global.workshop": "**Kusherehekea na Hatua Zinazofuata** @global.workshop", + "Celebrate everything you learned and continue to support your family.": "Sherehekea kila unachojifunza na uendelee kusaidia familia yako.", + "Why Celebration and Next Steps?": "Kwa nini Kusherehekea na Hatua Zinazofuata ni muhimu?", + "How to support each other": "Jinsi ya kusaidiana", + "How are you?": "Habari yako?", + "Think": "Fikiria", + "Learn - Budget preparation": "Jifunze - Maandalizi ya bajeti", + "Learn - Step 1: Think": "Jifunze - Hatua ya 1: Fikiri", + "Learn - Step 2: Choose": "Jifunze - Hatua ya 2: Chagua", + "Learn - Step 3: Build": "Jifunze - Hatua ya 3: Jenga", + "Learn - Step 4: Plan": "Jifunze - Hatua ya 4: Panga", + "Question": "Swali", + "Talk Together": "Zungumza Pamoja", + "Relax": "Chukua pumziko", + "Recognise": "Tambua", + "Reward": "Tuzo", + "Learn": "Jifunze", + "Try it out!": "Ijaribu!", + "Start": "Anza", + "Continue": "Endelea", + "Welcome to @global.parent_app. Click here to start your journey!": "Karibu kwenye @global.parent_app. Bonyeza hapa kuanza safari yako!", + "Care for yourself with @global.parent_app": "Jithamini mwenyewe kutoka @global.parent_app", + "@fields.user_name, it is so good to have you on this parenting journey. Tap the @data.workshop.w_self_care.in_text_title and learn more on how you can care for yourself. A happy family starts with a happy YOU!": "@fields.user_name, ni vizuri sana kuwa na wewe katika safari ya malezi. Gusa @data.workshop.w_self_care.in_text_title na jifunze jinsi unavyoweza kujithamini mwenyewe. Familia yenye furaha huanza na WEWE mwenye furaha!", + "Connect well through @global.parent_app": "Jiunge vizuri kupitia @global.parent_app", + "Spending time with your teen helps build trust between you. Continue your @global.parent_app journey now by completing the @data.workshop.w_1on1.in_text_title. You and your family will see great results.": "Kutumia muda na kijana wako husaidia kujenga uaminifu kati yenu. Endelea na safari yako ya @global.parent_app kwa kujaza @data.workshop.w_1on1.in_text_title. Wewe na familia yako mtaona matokeo mazuri.", + "Praise each other with @global.parent_app": "Sifianeni kila mmoja na @global.parent_app", + "Praising makes all the difference. Complete the @data.workshop.w_praise.in_text_title to see how praise can change YOUR family.": "Kusifia huleta tofauti nyingi. Jaza @data.workshop.w_praise.in_text_title kuona jinsi kusifia inaweza kubadilisha familia YAKO.", + "Instruct well through @global.parent_app": "Elekeza vizuri kupitia @global.parent_app", + "Positive instructions help to see more and more good behaviour! Learn how this could work in your family, by completing the @data.workshop.w_instruct.in_text_title.": "Maelekezo chanya husaidia kuona tabia nzuri zaidi na zaidi! Jifunze hii inavyoweza kufanya katika familia yako, kwa kujaza @data.workshop.w_instruct.in_text_title.", + "Stay calm with @global.parent_app": "Baki mtulivu na @global.parent_app", + "We all feel overwhelmed sometimes. Taking a deep breath helps! Complete the @data.workshop.w_stress.in_text_title to get some useful tools to deal with stress.": "Wote huwa tunajisikia kuzidiwa wakati mwingine. Kuvuta pumzi ndefu husaidia! jaza @data.workshop.w_stress.in_text_title kupata baadhi ya nyenzo kukabiliana na msongo wa mawazo.", + "Manage money with @global.parent_app": "Simamia pesa na @global.parent_app", + "@fields.user_name, do you feel stressed about money? Does your teen keep asking for things you can’t afford? Tap the @data.workshop.w_money.in_text_title to get great tips on money and budgeting.": "@fields.user_name, je unajisikia kuwa na msongo wa mawazo kuhusu pesa? Je, kijana wako huendelea kuomba vitu ambavyo huwezi kumudu gharama? Gusa @data.workshop.w_money.in_text_title kupata dondoo kuhusu pesa nakupanga bajeti.", + "Rules that work with @global.parent_app": "Sheria zinazofanya kazi na @global.parent_app", + "Well done for using @global.parent_app and for committing to your parenting journey. The @data.workshop.w_rules.in_text_title shows you how to set rules in a way that helps your teen to understand and follow them better. Try it out today!": "Vizuri sana kwa kutumia @global.parent_app na kwa kujitolea muda wako katika safari ya malezi. @data.workshop.w_rules.in_text_title inakuonesha jinsi ya kutengeneza sheria kwa njia ambayo itamsaidia kijana wako kuelewa na kuzifuata vizuri zaidi. Jaribu leo!", + "Motivate your teen with @global.parent_app": "Mhamasishe kijana wako na @global.parent_app", + "You have build many great parenting skills already! Tap the @data.workshop.w_consequence.in_text_title to learn how to set one positive and one negative consequence of a behaviour together. You and your family will benefits!": "Umejenga ujuzi mwingi mzuri wa malezi tayari! Gusa @data.workshop.w_consequence.in_text_title kujifunza jinsi ya kutengeneza adhabu moja chanya na dhabu moja hasi ya tabia pamoja. Wewe na familia yako mtanufaika!", + "Solve problems with @global.parent_app": "Tatua matatizo na @global.parent_app", + "With teenagers, and in life, unexpected problems come up. Tap the @data.workshop.w_solve.in_text_title to learn how to resolve any challenge together with your teen.": "Pamoja na vijana, na katika maisha, matatizo yasiyotarajiwa hutokea. Gusa @data.workshop.w_solve.in_text_title kujifunza jinsi ya kutatua changamoto yoyote pamoja na kijana wako.", + "Stay safe through @global.parent_app": "Baki salama kupitia @global.parent_app", + "To keep your teen safe, it helps to chat together about your community and their online experiences. Complete the @data.workshop.w_safe.in_text_title and see how you can do this!": "Kumuweka kijana wako salama. inasaidia kuzungumza pamoja kuhusu jamii na uzoefu wao mitandaoni. Jaza @data.workshop.w_safe.in_text_title na uone jinsi unavyoweza kufanya hivi!", + "Be ready with @global.parent_app": "Kuwa tayari na @global.parent_app", + "We never know when a crisis may happen, but we CAN be prepared! Tap the @data.workshop.w_crisis.in_text_title to explore how you can do this together with your teen.": "Hatuwezi kujua ni wakati gani majanga yanaweza kutokea, lakini TUNAWEZA kujiandaa! Gusa @data.workshop.w_crisis.in_text_title kujua jinsi unavyoweza kufanya hivi pamoja na kijana wako.", + "Celebrate with @global.parent_app": "Sherekea na @global.parent_app", + "@fields.user_name, you deserve to celebrate and be celebrated! Tap the @data.workshop.w_celebrate.in_text_title to reflect on your journey and get ideas for how you can continue to invest in yourself and your family.": "@fields.user_name, Unastahili kusherekea na kusherekewa! Gusa @data.workshop.w_celebrate.in_text_title kujikumbusha safari yako na jinsi ya kupata mawazo ya jinsi unavoweza kuendelea kuwekeza kwako mwenyewe na familia yako.", + "Take a break with @global.parent_app": "Chukua pumziko na @global.parent_app", + "Parenting can be hard, but @global.parent_app is here to help you win. Tap here to find practical tips for you and your family.": "Malezi yanaweza kuwa magumu, lakini @global.parent_app ipo hapa kukusaidia kushinda. Bonyeza hapa kupata vidokezo muhimu kwa ajili yako na familia yako.", + "@global.parent_app is here for you": "@global.parent_app ipo hapa kwa ajili yako", + "@fields.user_name, do you ever feel stressed as a parent? @global.parent_app is here to help you feel more calm and focused. Tap here to find out more.": "@fields.user_name, je, umewahi kuhisi msongo wa mawazo kama mzazi? @global.parent_app ipo hapa kukusaidia kujisikia mtulivu zaidi. Gusa hapa kupata zaidi.", + "Get some help in @global.parent_app": "Pata msaada kutoka @global.parent_app", + "Millions of parents found the tips in @global.parent_app useful, and you can access them too. Tap here to explore.": "Mamilioni ya wazazi walipata vidokezo ndani ya @global.parent_app kuwa muhimu, na unaweza kuzipata pia. Bonyeza hapa kuchunguza.", + "Make a difference with @global.parent_app": "Fanya mabadiliko na @global.parent_app", + "Need some help with your teen's behaviour? @global.parent_app is here for you. Tap here to check it out.": "Unahitaji msaada kwa tabia za kijana wako? @global.parent_app ipo hapa kwa ajili yako. Bonyeza hapa kuangalia.", + "@global.parent_app can help you": "@global.parent_app inaweza kukusidia", + "Want to invest in yourself and your family? 1 minute in @global.parent_app already makes a difference! Tap here to find out more.": "Unataka kuwekeza kwa ajili yako na familia yako? Dakika 1 ndani ya @global.parent_app tayari inaleta utofauti! Bonyeza hapa na kujua zaidi.", + "See success with @global.parent_app": "Ona mafanikio na @global.parent_app", + "Want to set your teen and family up for success? Get practical tips and more in @global.parent_app.": "Je, unataka kumuweka kijana wako na familia yako kwa ajili ya mafanikio? Pata vidokezo na mengineyo ndani ya @global.parent_app.", + "Keep growing with @global.parent_app": "Endelea kukua na @global.parent_app", + "Remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Kumbuka kujithamini mwenyewe - itakusaidia wewe na familia yako! Pata vidokezo na mengineyo ndani ya @global.parent_app.", + "Enjoy and learn with @global.parent_app": "Furahia na jifunze na @global.parent_app", + "@fields.user_name, @global.parent_app is here to support you. Tap here and check it out now.": "@fields.user_name, @global.parent_app ipo hapa kukusaidia. Gusa hapa na uone sasa.", + "See the change with @global.parent_app": "Ona mabadiliko na @global.parent_app", + "Do you want to enjoy family life more? Tap here and find practical tips in @global.parent_app.": "Je, unataka kufurahia maisha ya familia zaidi? Bonyeza hapa na upate vidokezo ndani ya @global.parent_app.", + "@global.parent_app will help you grow": "@global.parent_app itakusidia kukua", + "You are not alone! @global.parent_app has lots of tips and activities that will help you and your family. Tap here to explore.": "Haupo peke yako! @global.parent_app ina vidokezo vingi na shughuli zitakazo kusaidia wewe na familia yako. Bonyeza hapa kuchunguza.", + "Get key tips in @global.parent_app": "Pata ndondoo muhimu kutoka @global.parent_app", + "We all need a break sometimes - and you can get one right now in @global.parent_app! Tap here to find relaxation activities and more.": "Sote tunahitaji mapumziko wakati mwingine - na unaweza pata mojawapo wakati huu ndani ya @global.parent_app! Bonyeza hapa kupata vidokezo vya shughuli za kujituliza na zaidi.", + "Help your family with @global.parent_app": "Saidia familia yako na @global.parent_app", + "@fields.user_name, do you have five minutes to learn about parenting? @global.parent_app is here to help!": "@fields.user_name, je, una dakika tano za kujifunza kuhusu malezi? @global.parent_app ipo hapa kusaidia!", + "Keep going with @global.parent_app": "Endela na @global.parent_app", + "Looking for help with your teen? @global.parent_app is here for you!": "Je, unatafuta msaada kwa ajili ya kijana wako? @global.parent_app ipo hapa kwa ajili yako!", + "@global.parent_app can help your family": "@global.parent_app inaweza kusaidia familia yako", + "It’s time to learn about parenting, use @global.parent_app now for useful tips for your family.": "Ni wakati wa kujifunza kuhusu malezi, tumia @global.parent_app sasa kwa vidokezo muhimu kwa ajili ya familia yako.", + "Get support in @global.parent_app": "Pata msaada kutoka @global.parent_app", + "Parents are the best! Tap here to find tips to help you with your teen.": "Wazazi ni wazuri! Bonyeza hapa kupata vidokezo vya kukusaidia kwa ajili ya kijana wako.", + "@global.parent_app = peaceful family": "@global.parent_app =Familia yenye amani", + "Teens can turn your day upside down. Let @global.parent_app help you create a happy and peaceful home.": "Vijana wanaweza kuharibu siku yako. Acha @global.parent_app ikusaidie kutengeneza mazingira ya furaha na amani nyumbani.", + "@global.parent_app helps you connect": "@global.parent_app inakusaidia kukuunganisha", + "Family is everything. @global.parent_app is here with many tips and activities to help you and your family.": "Familia ni kila kitu. @global.parent_app ipo hapa na vidokezo pamoja na shughuli za kukusaidia wewe na familia yako.", + "Find good ideas in @global.parent_app": "Pata mawazo mazuri kutoka @global.parent_app", + "Spending 1 minute learning about parenting makes a world of difference. Jump back into @global.parent_app here.": "Kutumia dakika 1 kujifunza kuhusu malezi inafanya ulimwengu wa utofauti. Rudi nyuma kwenye @global.parent_app hapa.", + "Grow more with @global.parent_app": "Kua zaidi na @global.parent_app", + "@fields.user_name, you are doing amazing, keep up the good work. @global.parent_app is full of tips on how to look after yourself and your family.": "fields.user_name, unafanya vizuri sana, endelea, kazi nzuri. @global.parent_app imejaa ndondoo jinsi ya kujiangalia wewe na familia yako.", + "Add value through @global.parent_app": "Ongeza thamani kupitia @global.parent_app", + "Wow, your teen is so lucky to have you as a parent. Learn more about parenting your teen with @global.parent_app.": "Hongera, kijana wako anabahati kuwa na mzazi kama wewe. Jifunze mengi kuhusu malezi ya kijana wako kwa @global.parent_app.", + "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Halo @fields.user_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", + "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Halo @fields.group_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", + "You've put so much effort into being a better parent. You are loved and appreciated!": "Umeweka jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", + "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Asante kwa kujitolea kwa dhati katika malezi yako.\n\n@data.workshop.w_1on1.in_text_title yako iko tayari kwa ajili yako!", + "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Kutumia muda pamoja na kijana wako hujenga kuaminiana.\n\nEndelea na safari yako ya @global.parent_app sasa –kwa matokeo mazuri sana.", + "Have you spent time with your teen already?": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", + "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!": "Hongera kwa kumaliza @data.workshop.w_1on1.in_text_title. Kesho, utaweza kupata @global.workshop kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", + "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Vizuri sana kwa kujaribu kuwa mzazi bora zaidi.", + "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.": "Habari @fields.user_name! Leo tunasherekea warsha mbili @global.parent_app months!\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", + "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.": "Habari @fields.group_name! Leo tunasherekea warsha mbili @global.parent_app months!\n\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", + "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.": "Fikiria kila muda uliomfanya kijana wako akatabasamu na matunzo yote uliyompa.\n\nUnatakiwa kujisifu - huu ni muda mgumu kuwa mzazi.", + "Well done - you’ve gained 6 parenting tools already! Do the next @global.workshop to get more!": "Vizuri sana - umeshapata nyenzo 6 za malezi tayari! Fanya @global.workshop inayofuata kupata zaidi!", + "Complete the @global.workshop and talk with your teen about a positive and a negative consequence of a behaviour.": "Maliza @global.workshop hii halafu ujaribu kujadili pamoja na kijana wako kuhusu matokeo ya tabia chanya na hasi.", + "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?": "Je, umewahi kufikiria matokeo chanya na hasi ya tabia na kijana wako?", + "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new @global.workshop tomorrow to help you enjoy and learn useful skills!": "Vizuri sana kwa kumaliza warsha @data.workshop.w_consequence.in_text_title. Pata @global.workshop mpya kesho kukusaidia kufurahia na kujifunza ujuzi muhimu!", + "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.": "Matokeo tulivu husaida kijana wako kufuata sheria.\nKama hujamaliza warsha @data.workshop.w_consequence.in_text_title, anza sasa!\n\nVizuri sana kwa kuonesha kujitolea sana.", + "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how.": "Habari @fields.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how.": "Habari @fields.group_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "Be proud, you are a committed parent. This is a big achievement!": "Jivunie, wewe ni mzazi unayejitolea sana. Haya ni mafanikio makubwa!", + "Crises may happen, and we CAN be prepared!\n\nStart the next @global.workshop to see how with your teen.": "Matatizo yanaweza kutokea, na TUNAWEZA kuwa na maandalizi! \n\nAnza @global.workshop inayofuata kuona jinsi ya kujiandaa mapema wewe na kijana wako.", + "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @data.workshop.w_crisis.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", + "Have you and your teen discussed what you would do in a crisis?": "Je, wewe na kijana wako mmejadili nini cha kufanya katika matatizo?", + "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final @global.workshop to reflect on your journey and plan what to do next!": "Vizuri sana kwa kumaliza warsha @data.workshop.w_crisis. Kesho, unaweza kupata @global.workshop ya mwisho kuvuta kumbukumbu ya safari na kupanga cha kufanya wakati ujao!", + "The final @global.workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.": "@global.workshop ya mwisho inafunguliwa kesho!\n\nKwanza jaribu kukamilisha warsha @data.workshop.w_crisis.in_text_title. Kwa njia hiyo, unaweza kukamilisha sehemu yako ya ujuzi wa malezi na kuamua nini cha kufanya kwa siku baadaye.", + "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Habari @fields.user_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", + "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Habari @fields.group_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", + "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!": "Kuwa mpole kwako mwenyewe. Hakuna mzazi aliyekamilika. Tumia @global.parent_app huoenesha unajari!", + "Teens don’t always listen. Look at this week's @global.workshop to learn how positive instructions can help.": "Vijana huwa wasikilizi daima. Angalia kwenye @global.workshop za wiki hii kujifunza jinsi maelekezo chanya yanaweza kusaidia.", + "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.": "Maelekezo chanya huboresha tabia.\n\nKamilisha warsha ya @data.workshop.w_instruct.in_text_title kwa mawazo ya jinsi gani hii inaweza kufanya kazi katika familia yako.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title mara @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you. See a big difference by making small changes!": "Hongera, umemaliza @data.workshop.w_instruct.in_text_title.\n\nKesho, @global.workshop mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", + "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?": "Wazazi baadhi hutumia program (app) baada ya chakula cha jioni. Kwa nini usimalize warsha ya @data.workshop.w_instruct.in_text_title ukiwa na muda wa dakika chache?", + "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month.": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month.": "Habari @fields.group_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!": "Hauko peke yako. Wazazi duniani kote wanapitia hali kama hii.\n\nUnajitaidi sana na tunajivunia wewe!", + "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", + "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!": "Tengeneza bajeti ya familia na kijana wako - itazuia mabishano ya fedha.\n\nKamilisha warsha @data.workshop.w_money.in_text_title kuona jinsi ilivyo rahisi - utaona!", "Have you talked with your teen about your family budget yet?": "Je, umeshazungumza na kijana wako kuhusu bajeti ya familia yenu?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Kuishirikisha familia yako kuhusu namna mnavyotumia fedha kunaweza kuondoa misongo mingi ya mawazo na ugomvi.\n\nMaliza @local.workshop_data.in_text_title ili kuisaidia familia yako kutengeneza bajeti na kuweka akiba. Kwa kweli ni rahisi – utajionea mwenyewe!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Wazazi wengi wanasema kuwa kutengeneza bajeti kumerudisha amani ndani ya nyumba zao – inaweza kukufaa pia.\n\nKwa mara nyingine, asante kwa kuwa mzazi makini.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Kumbuka - Hii wiki ni kuhusu WEWE! Tunatumaini unajitunza vizuri. Unastahili jambo hili!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Je, umeshawaambia washirika wako wa @global.parent_app kuhusu programu hii? Kuanzia kesho, mnaweza kuanza kufanya pamoja warsha zenu za @global.parent_app!", + "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new @global.workshop to help you set family rules that work.": "Umefanya vizuri sana kumaliza @data.workshop.w_money.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", + "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.": "Wazazi wengi wanasema kupanga bajeti huleta amani. Kama hujamaliza warsha @data.workshop.w_money.in_text_title, anza sasa.", + "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!": "Habari @fields.user_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\n@global.workshop mpya iko tayari!", + "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!": "Habari @fields.group_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\n@global.workshop mpya iko tayari!", + "Well done for using @global.parent_app! Remember, small things make a big difference.": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", + "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!": "Asante kwa kuwekeza kwa ajili yako na familia yako. Jaribu @data.workshop.w_praise.in_text_title ujipatie ujuzi mzuri sana wa malezi!", + "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @data.workshop.w_praise.in_text_title uone jinsi ya kuitumia kwenye familia YAKO.", + "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!": "Msifie kijana wako kwa kitu kimoja alichofanya vizuri.\n\nNa lini mara ya mwisho ulijisifia mwenyewe au kumsifia mtu mzima mwingine? Jaribu!", + "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new @global.workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.": "Safi sana, umemaliza warsha ya @data.workshop.w_praise.in_text_title. @global.workshop mpya ipo tayari kesho. Ijaribu - Utaona mabadiliko katika tabia za kijana wako.", + "Hi @global.user_name, a new @global.workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.": "Habari @global.user_name, @global.workshop mpya inakusubiri kesho!\n\nInaonekana kama hujamaliza warsha ya @data.workshop.w_praise.in_text_title, ni fupi(nakuhakikishia!) - ifanye muda ukipata muda wa dakika chache.", + "Hi @fields.user_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows.": "Habari @fields.user_name! Wiki mpya, @global.workshop mpya! Jifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", + "Hi @fields.group_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows.": "Habari @fields.group_name! Wiki mpya, @global.workshop mpya! Jifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", + "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!": "Umejaribu kadri uwezavyo lakini kijana wako bado ana huzuni?\nKumbuka, unafanya kazi nzuri - kutakuwa na muda mzuri pamoja nao pia!", + "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.": "Asante kwa kuwekeza katika malezi.\n\nFanya warsha ya @data.workshop.w_rules.in_text_title kusaidia kijana wako kuelewa na kufuata sheria za nyumbani.", + "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @data.workshop.w_rules.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", + "Have you managed to set a rule with your teen?": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new @global.workshop! It will show you what to do when teens display bad (or good) behaviour!": "Hongera, umemaliza warsha @local.workshop_data.in_text_title.\n\nKesho, pata @global.workshop mpya! itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", + "A brand-new @global.workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!": "@global.workshop kabisa itafunguliwa kesho!\n\nKamilisha warsha @local.workshop_data.in_text_title kabla hujaendelea Kwa dakika chache zaidi kumsaidia kijana wao kufuata sheria!", + "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", + "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Habari @fields.group_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", + "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!": "Malezi ni kitu kigumu, hasa kwa siku hizi. Jivunie mafanikio yako. Ya matunzo unayowapa. Ya kila muda unaowafanya watabasamu. Wewe ni mzuri sana!", + "Think about all the parenting skills you've already gained!\n\nComplete the next @global.workshop to get more.": "Fikiria kuhusu ujuzo wote wa malezi uliiupata!\n\nMalizi @global.workshop inayofuata kupata zaidi.", + "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.": "Kuongea pamoja kuhusu jamii yao na uzoefu wa mitandaoni husaidia kuwaweka vijana wako salama.\n\nMaliza warsha @data.workshop.w_safe.in_text_title kuona ni jinsi gani.", + "Have you talked with your teen about safety measures?": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", + "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new @global.workshop is ready tomorrow to help your family deal with any situation – together you can do so much!": "Hongera, umemaliza @data.workshop.w_safe.in_text_title. Kesho, @global.workshop mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", + "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.": "Maliza warsha @data.workshop.w_safe.in_text_title kabla ya kuendelea. Hii inaweza kuzuia matatizo mengi.\n\nVizuri sana kwa kutumia @global.parent_app kusaidia familia yako.", + "This week is about YOU! Treat yourself well. You deserve it!": "Wiki hii ni kuhusu WEWE! Jitunze vizuri. Unastahili!", + "Start a brand new @global.parent_app @global.workshop tomorrow. You'll see great results!": "Anza @global.workshop mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", + "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app @global.workshops together!": "Kumbuka kuwaambia washirika wako kwenye @global.parent_app kuhusu program. Kesho, unaweza kuanza kufanya @global.workshops pamoja kwenye @global.parent_app workshops!", + "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This @global.workshop will show you how to deal with them.": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa ya kushughulikia. @global.workshop hii itakuonesha jinsi ya kuyashughulika nayo.", + "Your commitment is inspiring. Keep calm and carry on!": "Kujitolea kwako ni mfano wa kunahamasisha. Tulia na uendelee!", + "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next @global.workshop.": "Matatizo yasiyotarajiwa hutokea tukiwa na vijana.\n\nJifunze jinsi ya kuyatatua katika @global.workshop inayofuata.", + "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @data.workshop.w_solve.in_text_title ili upate ujuzi mwingine muhimu wa malezi.", + "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Fanyia mazoezi hatua nne za kutatua matatizo na kijana wako?\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", + "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you keep your teen safe.": "Umefanya vizuri sana kumaliza @data.workshop.w_solve.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", + "Access a new @global.workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.": "Pata @global.workshop mpya kesho!\n\nKwa kukamilisha warsha @data.workshop.w_solve.in_text_title kwanza, utajua jinsi ya kutatua matatizo pamoja.", + "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5.\n\n@global.workshop mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", + "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5.\n\n@global.workshop mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", + "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself.": "Dhibiti hasira na msongo wa mawazo kwa hiki @global.workshop kipya. Hukusaidia wewe kujithamini vizuri zaidi.", + "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.": "Najisikia kuzidiwa? Kuvuta pumzi ndefu inasaidia.\n\nKamilisha warsha ya @data.workshop.w_stress.in_text_title kukusaidia kukabiliana na msongo wa mawazo.", + "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.": "Unajisikia mwenye msongo wa mawazo wiki hii? Jaribu kuvuta pumzi ndefu kabla hujamjibu kijana wako - inaleta mabadiliko makubwa.", + "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", + "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new @global.workshop to help you relax and build valuable skills!": "Hongera kwa kumaliza @data.workshop.w_stress.in_text_title. Kesho, utaweza kupata @global.workshop mpya itakayokusaidia kupumzika na kujifunza ujuzi muhimu sana!", + "Get ready for a new @global.workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!": "Kuwa tayari kwa @global.workshop mpya kesho.\n\nKwa kukamilishawarsha kwanza @data.workshop.w_stress.in_text_title. Unaweka msingi muhimu. Kama unajisikia vizuri, familia yako itajisikia vizuri pia!", + "My Favourite Activities": "Shughuli Zangu Pendwa", + "All Activities": "Shughuli Zote", + "Random Activity": "Shughuli Yoyote", + "This Week's Activity": "Shughuli ya Wiki Hii", + "Chat Together": "Kuongea Pamoja", + "Do Together": "Fanyeni Pamoja", + "Your @global.parent_app Code": "Namba yako ya @global.parent_app", + "Terms & Conditions": "Vigezo & Masharti", + "Privacy Policy": "Sera ya Faragha", + "Language": "Lugha", + "Your Profile": "Wasifu wako", + "Real-world ideas": "Mawazo ya ulimwengu halisi", + "Ideas": "Mawazo", + "Ideas from other families...": "Mawazo kutoka familia nyingine...", + "Challenges & solutions": "Changamoto & utatuzi", + "Submit": "Tuma", + "Find out more": "Pata maelezo zaidi", + "Show me how": "Nionyeshe jinsi ya kufanya", + "Tell me more!": "Nipe maelezo zaidi!", + "Let's go!": "Twende!", + "Check it out!": "Iangalie!", + "Done": "Imefanyika", + "Next": "Inayofuata", + "Previous": "Iliyopita", + "Save": "Tunza", + "Skip": "Ruka", + "Finish with a song": "Malizi kwa kuimba wimbo", + "Goodbye!": "Kwa heri!", + "No gadget use the next day": "Hakuna kutumia vifaa vya kielektroniki siku inayofuata", + "Take 5 minutes pause in separate part of the room": "Kutulia kwa dakika 5 ukiwa upande mwingine wa chumba", + "Write a letter of apology": "Kuandika barua ya kuomba msamaha", + "Cannot see friends the next day": "Haruhusiwi kuwatembelea marafiki siku inayofuata", + "Cannot play with phone after dinner (or next hour)": "Haruhusiwi kuchezea simu baada ya chakula cha usiku (au saa inayofuata)", + "Extra time with friends on weekend (1hr)": "Muda wa ziada na marafiki wikiendi (saa 1)", + "Cooking teen’s favourite meal": "Kupika chakula kipendwacho na kijana", + "Extra time with phone after dinner (30 min)": "Muda wa ziada akiwa na simu baada ya chakula cha usiku (dakika 30)", + "Watching teen’s T.V. show together": "Kuangalia pamoja kipindi cha vijana kwenye runinga", + "Extra one-on-one time on Sunday (30 min)": "Muda wa ziada wa kuzungumza wawili Jumapili (dakika 30)", + "Take a deep breath and pause before responding": "Vuta pumzi ndefu na utulie kabla ya kujibu", + "Listen to your teen": "Msikilize kijana wako", + "Praise your teen for sharing": "Msifie kijana wako kwa kukushirikisha", + "Use problem solving skills": "Tumia ujuzi wa kutatua matatizo", + "Work out where you can get help": "Fikiria mahali unapoweza kupata msaada", + "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Kuangalia video hii kunahitaji uwe na mtandao wa intaneti. Ili kupunguza matumizi ya data, tazama au pakua video hii unapokuwa kwenye WiFi.", + "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ili kutembelea tovuti hizi, unahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tembelea tovuti hizi ukiwa kwenye WiFi.", + "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Kutuma ujumbe huu kunahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tuma ujumbe huu ukiwa kwenye WiFi.", + "Severe illness or death of a friend or family member": "Ugonjwa mbaya au kifo cha rafiki au mwanafamilia", + "Robbery": "Unyang'anyi", + "Flooding": "Mafuriko", + "Political violence": "Vurugu za kisiasa", + "Losing my job": "Kufukuzwa kazi yangu", + "Pandemic (COVID-19)": "Janga (UVIKO-19)", + "Weekly Workshops": "Warsha za Wiki", + "Weekly Workshop": "Warsha ya Wiki", + "workshops": "warsha", + "workshop": "warsha", + "Workshops": "Warsha", + "Workshop": "Warsha", + "Things to do": "Vitu vya kufanya", + "ParentApp": "ParentApp", + "Home": "Mwanzo", + "Options": "Machaguo", + "modules": "vipindi", + "module": "kipindi", + "Modules": "Vipindi", + "Module": "Kipindi", + "ParentPoints": "Alama za Mzazi", + "ParentPoint": "Alama ya Mzazi", + "Parent Library": "Maktaba ya Mzazi", + "In-Week Messages": "Jumbe za Wiki", + "To solve this challenge, I will try to:": "Ili kutatua changamoto hii, nitajaribu:", + "Do you want to try one of the following things?": "Je, unataka kujaribu kitu kimojawapo kati ya hivi vifuatavyo?", + "My challenge is not listed here.": "Changamoto yangu haikuorodheshwa hapa.", + "New @global.workshop ready tomorrow!": "@global.workshop mpya itakuwa tayari kesho!", + "New workshop!": "Warsha mpya!", + "@global.workshop_capital Reminder": "@global.workshop_capital Ukumbusho", + "Nice progress!": "Maendeleo mazuri!", + "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Kumbuka kukaa chini na kutulia leo - kujuthamini mwenyewe ni ujuzi muhimu wa malezi.", + "You are appreciated!": "Unathaminiwa!", + "Something fun": "Kitu flani cha kufurahisha", + "Here is a fun activity to do with your teen!": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", + "Your @global.parent_points this week": "@global.parent_points zako wiki hii", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", + "Remember to practise": "Kumbuka kufanyia mazoezi", + "COVID": "UVIKO", + "Make me smile": "Nifanye nitabasamu", + "Get me going": "Nifanye niendelee", + "My Favourite Relaxes": "Burudani Zangu Pendwa", + "All Relaxes": "Burudani Zote", + "Random Relax": "Burudani Yoyote", + "This Week's Relax": "Burudani ya Wiki Hii", + "Listen & Relax (1-2 minutes)": "Sikiliza na chukua pumziko (dakika 1-2)", + "Listen & Relax (3-5 minutes)": "Sikiliza na chukua pumziko (dakika 3-5)", + "Do & Relax (5-10 minutes)": "Fanya na chukua pumziko (dakika 5-10)", + "At home": "Nyumbani", + "Buy things we can sell": "Kununua vitu tunavyoweza kuuza", + "At a bank": "Kwenye benki", + "In a savings group": "Kwenye kikundi cha kujiwekea akiba", + "Teens completing school/university": "Vijana kumaliza shule/chuo kikuu", + "Building/expanding a house for my family": "Kujenga/kupanua nyumba ya familia yangu", + "Starting a business": "Kuanzisha biashara", + "Buying a car for my family": "Kununua gari ya familia yangu", + "Walk to the shops": "Tembea kwenda madukani", + "Get water together": "Fuata maji pamoja", + "Do a chore together": "Kufanya pamoja shughuli ya nyumbani", + "Prepare dinner": "Andaa chakula cha usiku", + "Eat breakfast/lunch/dinner": "Kula kifungua kinywa/mlo wa mchana/mlo wa usiku", + "Have tea after school": "Kunywa chai akitoka shule", + "Watch a T.V. show": "Kutazama kipindi cha televisheni", + "Review homework": "Kupitia tena kazi ya nyumbani", + "Chat before bedtime": "Kuongea kabla ya kulala", + "Play a game/sport": "Kucheza mchezo", + "Tap and type": "Bonya na uandike", + "Tap and choose": "Bonya na uchague", + "Type your own": "Andika yako mwenyewe", + "I've understood this. Don't show me this message again.": "Nimeielewa hii. Usinionyeshe tena ujumbe huu.", + "Ready to practise?": "Uko tayari kufanya mazoezi?", + "Talk about home practice": "Zungumza kuhusu mazoezi ya nyumbani", + "How did your practice go?": "Zoezi lako liliendaje?", + "Let's talk about how your home practice went this week.": "Tuzungumzie jinsi zoezi la nyumbani lilivyoenda wiki hii.", + "Story": "Hadithi", + "In my group": "Kwenye kundi langu", + "By myself": "Peke yangu", + "Awesome parent": "Mzazi mzuri", + "friends": "marafiki", + "Safety Word": "Neno la Usalama", + "Aunty Cecilia": "Shangazi Cecilia", + "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.": "Kwa kutoa ridhaa hii hapa chini unakubali kusoma na kukubali @global.terms_and_conditions na @global.privacy_policy. Mambo muhimu ya kukubaliana nayo:\n1. Hii ni, na itazidi kuwa programu tumishi inayopatikana bure.\n2. Taarifa zako kamwe hazitouzwa. Sisi hatupo kwa faida ya kifedha.\n3. Kwa kutumia programu tumishi unasaidia kuiboresha programu tumishi kwa ajili yako na wengine. \n4. Taarifa zisizo na utambulisho zitatumika kwa ajili ya utafiti na timu yetu ya @global.parent_app.", + "These policies are still under construction. We value advice and input to improve them.": "Sera hizi bado zinatungwa. Tunathamini ushauri na nyongeza wa kuziboresha.", + "I consent to the commitments stated above.": "Ninaridhia na makubaliano yalioorodheshwa hapo juu.", + "You can only move on and access the app if you provide your consent.": "Utaweza kuendelea kutumia programu tumishi endapo utatoa ridhaa yako.", + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Ulizaneni, “Kitu gani kilikufurahisha leo?”\n* Ulizaneni, “Ulikabiliana na shida gani leo?”\n* Ulizaneni, “Ninaweza kukusaidiaje?”\n* Jaribuni kufanya hivyo pamoja kila siku; inaweza kuwa wakati mnapokula pamoja chakula cha usiku au kabla ya kwenda kulala.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Muulize kijana wako chakula gani angependa kula.\n* Kiandaeni pamoja!\n* Mwache ashike zamu ya kuwa mpishi mkuu - anaongoza, na unafuata maelekezo yake.\n* Unaweza hata ukamsaidia kutengeneza bajeti ya mahitaji!\n\nUnadhani itafanikiwa? Waulize vijana wako nini WANGEPENDA kwa wewe na wao kufanya pamoja.\nWaache waongoze. Tulia. Furahia.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Tingisheni mikono yenu ya kushoto hewani mara 8 huku mkihesabu hadi 8.\n* Fanyeni hivyo kwa haraka sana na kwa sauti kubwa kadri muwezavyo.\n* Rudieni kufanya hivyo kwa mkono mwingine. Rudieni kufanya hivyo kwa miguu yote miwili.\n* Fanyeni mara 7, kisha mara 6 na kuendelea hadi mara 1.\n* Kila mtu aite kwa sauti \"Kuku kichaa\" kisha acheze kama kuku kichaa kadri awezavyo!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Buni miondoko ya kucheza miziki inayopendwa na kijana wako.\n* Mtu mmoja anacheza mwondoko fulani halafu wengine wote wanafuatisha.\n* Kila mtu anapewa zamu ya kuongoza.\n* Chezeni mbele ya familia!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Mchezo huu unafaa kuchezwa na watu wawili au zaidi.\n* Mtu mmoja anajifanya kuwa anafanya jambo fulani – kwa mfano, kuchana nywele au kupika chakula cha usiku.\n* Mtu mwingine anauliza, “Unafanya nini?”\n* Mtu wa kwanza anatakiwa kusema jambo lisilohusiana na kuchana nywele, kwa mfano, “Ninafunga viatu vyangu.”\n* Kisha mtu wa pili anaanza kujifanya kuwa anafunga viatu vyake mpaka mtu mpya atakapouliza, “Unafanya nini?”\n\nKila mara, ni lazima jibu liwe tofauti na kile unachokifanya kweli!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Huwezi kusafiri kila wakati, lakini unaweza kuota kila wakati! Muulize kijana wako maswali haya:\n* Je, ungependa kusafiri kwenda wapi? Utakaa huko kwa muda gani? Utafungasha nini? Utafanya nini kwenye safari yako? Utaona nini?\n* Angalieni ramani pamoja au choreni ramani.\n* Chagua nchi ambayo kijana wako hajawahi kuisikia halafu mjifunze zaidi kuhusu nchi hiyo.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Chagueni mchezo au mazoezi ya kufanya pamoja. Amueni ratiba itakavyokuwa. Je, mtafanya kila siku? Kwa muda gani?\n\nJaribuni kwa wiki moja. Mwishoni mwa wiki, wewe na familia yako jiulizeni maswali haya:\n* Je, mchezo unaendeleaje?\n* Je, mlijisikiaje mwanzoni mwa wiki?\n* Je, mnajisikiaje mwishoni mwa wiki?\n* Je, jambo gani tunaweza kulifanya kwa njia tofauti wiki ijayo?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wewe na kijana wako mnaweza kuunda orodha ya wageni maarufu ambao mngependa kuwaalika kwenye sherehe yenu. Kila mmoja anaweza kuwa na watu watano – wanaweza kuwa watu wa zamani au wa sasa. Je, ungemwalika nani? Na, je, wageni wako wataweza kukaa pamoja vizuri?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Zungumza na kijana wako kuhusu jambo analopenda.\n\nLinaweza kuhusu kitu chochote atakachochagua kuzungumzia: michezo, marafiki, muziki, watu mashuhuri...\n\nJaribu kumsikiliza kijana wako na mpe nafasi ya kuzungumza.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Fikirieni pamoja aina tatu za mazoezi. Kwa mfano, kutembea, kukimbia polepole, kucheza muziki au mpira wa miguu.\n* Chagueni pamoja zoezi moja halafu mlijaribu.\n* Kama nyote wawili mnalipenda, amueni mtakuwa mnalifanya mara ngapi. Mara moja au mbili kwa wiki? Kila asubuhi?\n* Fikirieni pamoja njia za kulifanya liwe la kufurahisha zaidi. Je, mnaweza kukimbia polepole hadi kituo fulani? Je, mpeane zamu za kuwa kocha? Je, mpeane motisha kwa tuzo ndogo ya bure?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Peaneni zamu za kuwa \"kiongozi\". Sema sentensi za utangulizi ili kumchangamsha kila mtu. Kisha \"kiongozi\" atatoa maelekezo halafu kila mtu afanya shughuli haraka iwezekanavyo:\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Gusa kitu chekundu.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Ruka juu na chini mara kumi.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Weka viatu kwenye kabati ya viatu.\"", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Chagueni msimuliaji ili aanze kubuni hadithi.\n* Wasikilizaji wa simulizi hiyo wanaweza kumkatiza na kusema neno fulani wakati wowote.\n* Msimuliaji anatakiwa kuingiza neno hilo kwenye hadithi yake.\n* hadithi inapoisha, jaribuni kumpa nafasi msimuliaji mwingine!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Anza hadithi na \"Hapo zamani za kale kulikuwa na...\"\n* Muache kijana wako atengeneze sentensi inayofuata.\n* Kisha unatunga sentensi.\n* Fanyeni kwa zamu mpaka mpate hadithi nzuri mpya.\n* Hakikisha mnamaliza hadithi kwa kitu chanya.\n* Muulize kijana wako ni sehemu gani ya hadithi aliyoipenda zaidi!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Mtu wa kwanza anasema, “Siku ya Jumamosi, nitaenda… (k.m., kwenda kwenye bustani)”\n* Mtu wa pili anaongezea alichosema mtu wa kwanza, “Siku ya Jumamosi, nitaenda kwenye bustani na… (k.m., kumtembelea rafiki yangu wa karibu).\n* Kila mtu anaongezea kwenye kile kilichosemwa awali, akijaribu kufikiria mambo yote ya kufurahisha ya kufanya Jumamosi.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Mchezo huu unaweza kuchezwa na watu wawili wawili au na watu wengi wakiwa kwenye kikundi.\n* Simameni mkitazamana au kwa mduara.\n* Mtu mmoja aongoze kwanza halafu wengine wamfuatishe, wakijaribu kucheza kwa wakati mmoja na kiongozi.\n* Hakikisheni kiongozi anacheza polepole vya kutosha ili kila mtu aweze kumfuatisha! Jaribuni kuchezesha viungo tofauti vya mwili kwa viwango tofauti.\n* Baada ya muda, mtu mwingine awe kiongozi. Kila mtu apewe nafasi ya kuongoza.\n* Jaribuni kucheza bila kiongozi!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Mtu wa kwanza anachagua au anaimba wimbo.\n* Watu wengine wote wanatakiwa kutaja jina la wimbo huo (ili kufanya zoezi liwe ngumu zaidi, wanaweza pia kutaja jina la mwimbaji).\n* Mtu wa kwanza kutaja kwa usahihi ndiye atakayefuatia kuwaongoza wengine.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Mchezo huu unafaa mkiwa angalau watu watatu.\n* Anza katika mduara na mrushie \"kitufe\" mwingine kwenye mduara (au \"mpigie kofi\" kama huwezi kumkonyeza).\n* Unamrushia mara moja na yeye kudaka mara moja. Muangalie mtu unayemrushia.\n* Namna mtu mwingine atadaka itategemea na uelekeo (juu, chini, moja kwa moja, upande, kudunda juu ya ardhi) na nguvu uliyotumia kurusha.\n* Unaweza ukadunda kitufe, kukirusha hewani, na kukimata mda mfupi kabla hujakirusha kwa mwingine.\n* Kila mmoja akielewa vizuri, mnaweza kuanza kutembea chumbani, mkiendelea kurushiana kitufe.\n*Je unaweza kukirusha chini ya mguu? Nyuma ya mgongo? Kupitia kichwani kwako? Kukatisha pasi? Furahia kitufe!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Mwisho wa siku, chukua dakika chache:\n\n* Kuongea na kijana wako kuhusu kitu cha kufurahisha alichofanya\n* Jipongeze kwa kitu kimoja ulichofanya vizuri leo.\n* Wewe ni mshindi!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Fikiria kuhusu nguvu kuu. Kwa mfano, kwenda popote papo hapo, kusoma akili za wengine, kusafiri miaka ya mbele au nyuma.\n* Muulize kijana wako, “Kama ungekuwa na nguvu kuu ya […], ungeitumiaje?”\n* Mhimize kumpa shujaa wake jina na kumuigiza.\n* Sasa mwache kijana wako akuchagulie nguvu kuu.\n* Hakikisha unaigiza pia namna ya kuitumia hiyo nguvu kuu yako!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Fikiria kuhusu hali tatu tofauti. Kwa mfano, kuendesha gari, kusafiri kwa mashua au kurusha ndege.\n* Ziseme kwa kijana wako na muulize, \"Kipi ungependa?'\n* Muulize kwa nini?\n* Sasa fikiria kuhusu hali tatu zaidi au muombe kijana wako afanye kwa ajili yako.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Mwambie kijana wako jambo fulani kuhusu wewe mwenyewe ulipokuwa kijana. Je, ni vitu gani havikuwepo wakati huo? Simu zenye intaneti? Ulifanya mambo gani ili kujifurahisha? Mambo gani yalikupa wasiwasi? Usijali kama yeye hatakuambia chochote – cha muhimu ni kwamba anasikiliza na kukumbuka. Wakati mwingine vijana wetu wanasahau kuwa wazazi wao ni watu pia!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Fikiria kauli tatu kuhusu wewe. Mbili ni lazima ziwe za kweli na moja ni lazima iwe ya uongo.\n* Inaweza kusaidia kufikiria mambo ambayo ungetamani kuyapata, ndoto zako, mambo yalliyokutokea shuleni, mambo unayopenda au usiyopenda. Kwa mfano: Sipendi ndizi, somo ninalolipenda zaidi ni sayansi, na ninatamani sana ningejua kuimba.\n* Ziseme kwa kijana wako na mwambie akisie kauli ipi ni ya uongo.\n* Je, amekisia kwa usahihi? Je, alikushangaza?\n* Sasa mwambie na yeye afanye hivyohivyo. Je, mmejifunza jambo jipya kuhusu kila mmoja wenu?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Fikiria ujuzi mpya unaoweza kujifunza pamoja na kijana wako. Kwa mfano, kuchezea mpira hewani au kwa mguu wako bila kuudondosha, kupiga chenga, kupika supu?\n* Peaneni zamu za kujaribu ujuzi mpya.\n* Hakikisheni mnasifiana, na jaribuni kujifunza na kucheza pamoja!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Ulizaneni maswali. Yanaweza kuwa maswali yoyote kuhusu mambo mnayopenda au kile mlichofanya leo.\n* Sheria pekee ya mchezo huu ni kwamba huwezi kujibu \"Ndiyo\", \"Hapana\" au \"Labda\".\n* Je, unaweza kuendelea kufanya hivyo kwa muda gani? Je, majibu yako yanaweza kuwa na ubunifu kiasi gani?\n* Badilishaneni zamu za kuuliza na kujibu na mcheze tena!", + "Settings": "Mipangilio", + "Template": "Kiolezo", + "How to use @global.parent_app": "Jinsi ya kutumia @global.parent_app", + "Campaigns": "Kampeni", + "Notifications": "Arafa", + "Entering Developer Mode": "Unaingia kwenye ukurasa wa mtengenezaji", + "To launch the app in developer mode, enter your developer code in the box below and press @global.submit_button.": "Ili kuzindua programu katika hali ya kubuni, weka msimbo wako wa kubuni kwenye kisanduku kilicho hapa chini na ubonyeze @global.submit_button.", + "You have successfully entered developer mode.": "Umefanikiwa kuingia kwenye njia ya msanidi wa programu.", + "About @global.parent_app": "Kuhusu @global.parent_app", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app iliundwa na taasisi ya Parenting for Lifelong Health (PLH) inayotokana na ushirikiano ulioanzishwa duniani kote wa wataalamu wa malezi kutoka Shirika la UNICEF, Shirika la Afya Duniani (WHO), vyuo vikuu vya nchini Afrika Kusini na Uingereza, pamoja na mashirika yasiyo ya kiserikali barani Afrika, na familia na vijana mbalimbali kote barani Afrika. Wazazi na vijana walifanya kazi nasi kwenye programu hii na kutusaidia kuhakikisha kuwa programu hii inakuwa rahisi kutumia, inayofurahisha na inayoshughulisha. Baadhi ya maudhui yaliyomo kwenye programu hii, kama vile shughuli zinazopendekezwa na simulizi za mifano, ziliundwa kwa kuwashirikisha wazazi na vijana ili kuhakikisha kuwa maudhui hayo yanakidhi mahitaji ya familia.\n\nTaasisi ya PLH inajitolea kwa dhati ili kusaidia kuundwa kwa nyenzo na programu za malezi zisizouzwa na zinazoweza kusambazwa kwa watu wengine, ili kuwasaidia wazazi duniani kote waweze kuboresha ustawi wa watoto wao.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Kwa kubofya kwenye kitufe hapo chini, utapangilia upya programu kwenye mipangilio yake ya awali.\n\nHii inamaanisha kuwa shughuli zako zote na data zilizotumiwa zitafutwa na programu yako itafanya kazi kama inaposakinishwa kwa mara ya kwanza.\n\nANGALIZO: Kupangilia upya programu ni tukio la kudumu na hautaweza kupata tena taarifa yoyote.", + "Reset App": "Pangilia Upya Programu", + "Demo Presentation": "Uwasilishaji wa Mfano", + "Organisation Registration": "Usajili wa Shirika", + "Developer Mode": "Mtengenezaji wa programu", + "Select Skin": "Chagua Aina", + "Unlock all workshops": "Fungua vipindi vyote", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Kwa kubonyeza kwenye kitufe hapa chini, utafungua vipindi vyote.\n\nANGALIZO: Watumiaji hawapaswi kutumia kitendaji hiki kufungua vipindi. Kufanya hivyo hakufai isipokuwa tu kama ni lazima.", + "Unlock workshops": "Fungua vipindi", + "All @global.workshops are now unlocked.": "@global.workshops vyote vimefunguliwa sasa.", + "@global.parent_app has downloaded an update. Please restart the app to finish installation.": "@global.parent_app imesasishwa. Tafadhali anzisha tena programu tumishi kumalizia kuiweka swa.", + "Restart": "Anzisha upya tena", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Kumpoteza mtu unayempenda ni jambo zito mno. Hapa kuna vidokezo kadhaa vinavyoweza kukusaidia ukivikumbuka.", + "Ask for help": "Omba msaada", + "Say goodbye": "Sema kwa heri", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "Omba msaada kwa mtu unayemwamini – anaweza kukusaidia chakula au kuwatunza watoto. Unaweza kuhitaji nyaraka kwa ajili ya urithi, kwa ajili ya watoto wako, au kwa ajili ya kupata huduma mbalimbali.\n- Wakati mwingine watu hujaribu kuchukua pesa au urithi kutoka kwa mfiwa. Zijue haki zako.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Kumuaga mtu ni jambo gumu. Fanya kile unachohisi kuwa ni kizuri kwako na kwa kijana wako.\n- Familia, vijana na wazazi si wakamilifu. Mtu anapokuwa amefariki, si vibaya kuzungumzia mambo mazuri na mabaya tunayoyakumbuka.\n- Kumwandikia barua au kumchorea mchoro mtu aliyeondoka kunaweza kusaidia.\n- Baadhi ya watu hufanya sherehe au kuandaa chakula maalum ili kumpa heshima mtu aliyeondoka, na kumuaga.\n- Kutengeneza sanduku la kumbukumbu na kuweka vitu vinavyokukumbusha wewe na kijana wako kuhusu mtu aliyeondoka kunaweza kusaidia.\n- Kumzungumzia tu mtu aliyeondoka pindi unapomfikiria kunaweza kusaidia.", "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Kumpoteza rafiki au mtu unayempenda ni jambo gumu kwa kila mtu. Kujitendea vyema wewe mwenyewe na kufanya mambo ya kukusaidia kukabiliana na wakati huu mgumu humsaidia pia kijana wako!", "Take care of yourself": "Jithamini", "Find a support group": "Tafuta kikundi kinachotoa msaada", @@ -926,36 +1073,81 @@ "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Mwambie kijana wako kwamba fulani amefariki – wakati mwingine hajui.\n- Kumwambia ni mchakato, si tukio. Unaweza kulazimika kumwambia tena na tena.\n- Tumia maneno anayoyaelewa.\n- Kama vijana wadogo hawaelewi kifo ni nini, wasaidie kwa kuwaelezea kwamba mtu wanayempenda hatarudi tena. Jaribu kutosema kwamba 'amelala' au 'amesafiri kwenda mbali'. \n- Vijana wakubwa wanaweza kuelewa kifo ni nini, lakini wanaweza kuhangaika kuwaeleza wengine au kudhibiti hisia zao.\n- Vijana wanaweza kupokea hali hiyo kwa namna tofauti sana: kulia, kupiga kelele, kutokuamini au kunyamaza sana.\nYote haya si mabaya. Waambie kwamba uko pamoja nao.\n- Ruhusu maswali na mazungumzo. Kuwa mkweli. Kama hatujui jambo fulani, si vibaya kusema kwamba hatujui.", "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "- Vijana wanaweza kuhuzunika, kukasirika, kutoelewa au kutoamini, kuhisi mwili kufa ganzi, kujisikia vibaya au kupata maumivu, ndoto mbaya au matatizo shuleni. Kijana wako anaweza kuonekana mwenye furaha, lakini bado akawa na huzuni. Anaweza kujitenga na kutaka kutumia muda mwingi akiwa na marafiki. Anaweza pia kuonyesha tabia isiyotarajiwa au ya hatari. Hali hizi zinaweza zisilete maana kwako, lakini yote haya ni mambo ya kawaida.\n- Vijana wanaweza kuhisi kama lilikuwa kosa lao – kwamba walileta virusi, au kwamba walikuwa na tabia mbaya. Waambie waziwazi kwamba hawakufanya kosa lolote.", "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "Eleza kwamba kufiwa huambatana na hisia mbalimbali. Mwonyeshe kijana wako kwamba anapendwa na kutunzwa, na mtie moyo awashirikishe wengine hisia zake kwa kuzungumza, kuandika au kuchora.\n- Kama kuna kikundi kinachotoa msaada ambacho kijana wako anaweza kujiunga nacho, kinaweza kumsaidia.\n- Kama kijana anazungumzia kutaka kujidhuru au kujiua, omba msaada kwa mtu haraka iwezekanavyo.\n- Ukiweza, endelea na shughuli zako za kawaida za kila kila siku; kufanya hivyo kunaweza kuwafariji vijana.\n- Vijana kushiriki mila na desturi za msiba kunaweza kusaidia – kuchagua wimbo au kitu cha kusema.\n- Kutumia muda fulani kila siku kumjali kijana wako kunasaidia kumfanya ajisikie kuwa salama zaidi na mpe nafasi ya kuwa huru au kuzungumzia mambo yanayomfadhaisha.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Kumpoteza mtu unayempenda ni jambo zito mno. Hapa kuna vidokezo kadhaa vinavyoweza kukusaidia ukivikumbuka.", - "Ask for help": "Omba msaada", - "Say goodbye": "Aga", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "Omba msaada kwa mtu unayemwamini – anaweza kukusaidia chakula au kuwatunza watoto. Unaweza kuhitaji nyaraka kwa ajili ya urithi, kwa ajili ya watoto wako, au kwa ajili ya kupata huduma mbalimbali.\n- Wakati mwingine watu hujaribu kuchukua pesa au urithi kutoka kwa mfiwa. Zijue haki zako.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Kumuaga mtu ni jambo gumu. Fanya kile unachohisi kuwa ni kizuri kwako na kwa kijana wako.\n- Familia, vijana na wazazi si wakamilifu. Mtu anapokuwa amefariki, si vibaya kuzungumzia mambo mazuri na mabaya tunayoyakumbuka.\n- Kumwandikia barua au kumchorea mchoro mtu aliyeondoka kunaweza kusaidia.\n- Baadhi ya watu hufanya sherehe au kuandaa chakula maalum ili kumpa heshima mtu aliyeondoka, na kumuaga.\n- Kutengeneza sanduku la kumbukumbu na kuweka vitu vinavyokukumbusha wewe na kijana wako kuhusu mtu aliyeondoka kunaweza kusaidia.\n- Kumzungumzia tu mtu aliyeondoka pindi unapomfikiria kunaweza kusaidia.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Mwisho wa siku, chukua dakika chache:\n\n* Kuongea na kijana wako kuhusu kitu cha kufurahisha alichofanya\n* Jipongeze kwa kitu kimoja ulichofanya vizuri leo.\n* Wewe ni mshindi!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Ulizaneni, “Kitu gani kilikufurahisha leo?”\n* Ulizaneni, “Ulikabiliana na shida gani leo?”\n* Ulizaneni, “Ninaweza kukusaidiaje?”\n* Jaribuni kufanya hivyo pamoja kila siku; inaweza kuwa wakati mnapokula pamoja chakula cha usiku au kabla ya kwenda kulala.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Huwezi kusafiri kila wakati, lakini unaweza kuota kila wakati! Muulize kijana wako maswali haya:\n* Je, ungependa kusafiri kwenda wapi? Utakaa huko kwa muda gani? Utafungasha nini? Utafanya nini kwenye safari yako? Utaona nini?\n* Angalieni ramani pamoja au choreni ramani.\n* Chagua nchi ambayo kijana wako hajawahi kuisikia halafu mjifunze zaidi kuhusu nchi hiyo.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wewe na kijana wako mnaweza kuunda orodha ya wageni maarufu ambao mngependa kuwaalika kwenye sherehe yenu. Kila mmoja anaweza kuwa na watu watano – wanaweza kuwa watu wa zamani au wa sasa. Je, ungemwalika nani? Na, je, wageni wako wataweza kukaa pamoja vizuri?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Fikiria kauli tatu kuhusu wewe. Mbili ni lazima ziwe za kweli na moja ni lazima iwe ya uongo.\n* Inaweza kusaidia kufikiria mambo ambayo ungetamani kuyapata, ndoto zako, mambo yalliyokutokea shuleni, mambo unayopenda au usiyopenda. Kwa mfano: Sipendi ndizi, somo ninalolipenda zaidi ni sayansi, na ninatamani sana ningejua kuimba.\n* Ziseme kwa kijana wako na mwambie akisie kauli ipi ni ya uongo.\n* Je, amekisia kwa usahihi? Je, alikushangaza?\n* Sasa mwambie na yeye afanye hivyohivyo. Je, mmejifunza jambo jipya kuhusu kila mmoja wenu?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Mwambie kijana wako jambo fulani kuhusu wewe mwenyewe ulipokuwa kijana. Je, ni vitu gani havikuwepo wakati huo? Simu zenye intaneti? Ulifanya mambo gani ili kujifurahisha? Mambo gani yalikupa wasiwasi? Usijali kama yeye hatakuambia chochote – cha muhimu ni kwamba anasikiliza na kukumbuka. Wakati mwingine vijana wetu wanasahau kuwa wazazi wao ni watu pia!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Fikiria kuhusu nguvu kuu. Kwa mfano, kwenda popote papo hapo, kusoma akili za wengine, kusafiri miaka ya mbele au nyuma.\n* Muulize kijana wako, “Kama ungekuwa na nguvu kuu ya […], ungeitumiaje?”\n* Mhimize kumpa shujaa wake jina na kumuigiza.\n* Sasa mwache kijana wako akuchagulie nguvu kuu.\n* Hakikisha unaigiza pia namna ya kuitumia hiyo nguvu kuu yako!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Zungumza na kijana wako kuhusu jambo analopenda.\n\nLinaweza kuhusu kitu chochote atakachochagua kuzungumzia: michezo, marafiki, muziki, watu mashuhuri...\n\nJaribu kumsikiliza kijana wako na mpe nafasi ya kuzungumza.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Chagueni msimuliaji ili aanze kubuni hadithi.\n* Wasikilizaji wa simulizi hiyo wanaweza kumkatiza na kusema neno fulani wakati wowote.\n* Msimuliaji anatakiwa kuingiza neno hilo kwenye hadithi yake.\n* hadithi inapoisha, jaribuni kumpa nafasi msimuliaji mwingine!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Fikiria kuhusu hali tatu tofauti. Kwa mfano, kuendesha gari, kusafiri kwa mashua au kurusha ndege.\n* Ziseme kwa kijana wako na muulize, \"Kipi ungependa?'\n* Muulize kwa nini?\n* Sasa fikiria kuhusu hali tatu zaidi au muombe kijana wako afanye kwa ajili yako.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Ulizaneni maswali. Yanaweza kuwa maswali yoyote kuhusu mambo mnayopenda au kile mlichofanya leo.\n* Sheria pekee ya mchezo huu ni kwamba huwezi kujibu \"Ndiyo\", \"Hapana\" au \"Labda\".\n* Je, unaweza kuendelea kufanya hivyo kwa muda gani? Je, majibu yako yanaweza kuwa na ubunifu kiasi gani?\n* Badilishaneni zamu za kuuliza na kujibu na mcheze tena!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Mtu wa kwanza anasema, “Siku ya Jumamosi, nitaenda… (k.m., kwenda kwenye bustani)”\n* Mtu wa pili anaongezea alichosema mtu wa kwanza, “Siku ya Jumamosi, nitaenda kwenye bustani na… (k.m., kumtembelea rafiki yangu wa karibu).\n* Kila mtu anaongezea kwenye kile kilichosemwa awali, akijaribu kufikiria mambo yote ya kufurahisha ya kufanya Jumamosi.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Anza hadithi na \"Hapo zamani za kale kulikuwa na...\"\n* Muache kijana wako atengeneze sentensi inayofuata.\n* Kisha unatunga sentensi.\n* Fanyeni kwa zamu mpaka mpate hadithi nzuri mpya.\n* Hakikisha mnamaliza hadithi kwa kitu chanya.\n* Muulize kijana wako ni sehemu gani ya hadithi aliyoipenda zaidi!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Muulize kijana wako chakula gani angependa kula.\n* Kiandaeni pamoja!\n* Mwache ashike zamu ya kuwa mpishi mkuu - anaongoza, na unafuata maelekezo yake.\n* Unaweza hata ukamsaidia kutengeneza bajeti ya mahitaji!\n\nUnadhani itafanikiwa? Waulize vijana wako nini WANGEPENDA kwa wewe na wao kufanya pamoja.\nWaache waongoze. Tulia. Furahia.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Buni miondoko ya kucheza miziki inayopendwa na kijana wako.\n* Mtu mmoja anacheza mwondoko fulani halafu wengine wote wanafuatisha.\n* Kila mtu anapewa zamu ya kuongoza.\n* Chezeni mbele ya familia!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Mchezo huu unaweza kuchezwa na watu wawili wawili au na watu wengi wakiwa kwenye kikundi.\n* Simameni mkitazamana au kwa mduara.\n* Mtu mmoja aongoze kwanza halafu wengine wamfuatishe, wakijaribu kucheza kwa wakati mmoja na kiongozi.\n* Hakikisheni kiongozi anacheza polepole vya kutosha ili kila mtu aweze kumfuatisha! Jaribuni kuchezesha viungo tofauti vya mwili kwa viwango tofauti.\n* Baada ya muda, mtu mwingine awe kiongozi. Kila mtu apewe nafasi ya kuongoza.\n* Jaribuni kucheza bila kiongozi!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Fikiria ujuzi mpya unaoweza kujifunza pamoja na kijana wako. Kwa mfano, kuchezea mpira hewani au kwa mguu wako bila kuudondosha, kupiga chenga, kupika supu?\n* Peaneni zamu za kujaribu ujuzi mpya.\n* Hakikisheni mnasifiana, na jaribuni kujifunza na kucheza pamoja!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Fikirieni pamoja aina tatu za mazoezi. Kwa mfano, kutembea, kukimbia polepole, kucheza muziki au mpira wa miguu.\n* Chagueni pamoja zoezi moja halafu mlijaribu.\n* Kama nyote wawili mnalipenda, amueni mtakuwa mnalifanya mara ngapi. Mara moja au mbili kwa wiki? Kila asubuhi?\n* Fikirieni pamoja njia za kulifanya liwe la kufurahisha zaidi. Je, mnaweza kukimbia polepole hadi kituo fulani? Je, mpeane zamu za kuwa kocha? Je, mpeane motisha kwa tuzo ndogo ya bure?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Mtu wa kwanza anachagua au anaimba wimbo.\n* Watu wengine wote wanatakiwa kutaja jina la wimbo huo (ili kufanya zoezi liwe ngumu zaidi, wanaweza pia kutaja jina la mwimbaji).\n* Mtu wa kwanza kutaja kwa usahihi ndiye atakayefuatia kuwaongoza wengine.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Mchezo huu unafaa mkiwa angalau watu watatu.\n* Anza katika mduara na mrushie \"kitufe\" mwingine kwenye mduara (au \"mpigie kofi\" kama huwezi kumkonyeza).\n* Unamrushia mara moja na yeye kudaka mara moja. Muangalie mtu unayemrushia.\n* Namna mtu mwingine atadaka itategemea na uelekeo (juu, chini, moja kwa moja, upande, kudunda juu ya ardhi) na nguvu uliyotumia kurusha.\n* Unaweza ukadunda kitufe, kukirusha hewani, na kukimata mda mfupi kabla hujakirusha kwa mwingine.\n* Kila mmoja akielewa vizuri, mnaweza kuanza kutembea chumbani, mkiendelea kurushiana kitufe.\n*Je unaweza kukirusha chini ya mguu? Nyuma ya mgongo? Kupitia kichwani kwako? Kukatisha pasi? Furahia kitufe!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Chagueni mchezo au mazoezi ya kufanya pamoja. Amueni ratiba itakavyokuwa. Je, mtafanya kila siku? Kwa muda gani?\n\nJaribuni kwa wiki moja. Mwishoni mwa wiki, wewe na familia yako jiulizeni maswali haya:\n* Je, mchezo unaendeleaje?\n* Je, mlijisikiaje mwanzoni mwa wiki?\n* Je, mnajisikiaje mwishoni mwa wiki?\n* Je, jambo gani tunaweza kulifanya kwa njia tofauti wiki ijayo?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Peaneni zamu za kuwa \"kiongozi\". Sema sentensi za utangulizi ili kumchangamsha kila mtu. Kisha \"kiongozi\" atatoa maelekezo halafu kila mtu afanya shughuli haraka iwezekanavyo:\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Gusa kitu chekundu.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Ruka juu na chini mara kumi.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Weka viatu kwenye kabati ya viatu.\"", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Mchezo huu unafaa kuchezwa na watu wawili au zaidi.\n* Mtu mmoja anajifanya kuwa anafanya jambo fulani – kwa mfano, kuchana nywele au kupika chakula cha usiku.\n* Mtu mwingine anauliza, “Unafanya nini?”\n* Mtu wa kwanza anatakiwa kusema jambo lisilohusiana na kuchana nywele, kwa mfano, “Ninafunga viatu vyangu.”\n* Kisha mtu wa pili anaanza kujifanya kuwa anafunga viatu vyake mpaka mtu mpya atakapouliza, “Unafanya nini?”\n\nKila mara, ni lazima jibu liwe tofauti na kile unachokifanya kweli!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Tingisheni mikono yenu ya kushoto hewani mara 8 huku mkihesabu hadi 8.\n* Fanyeni hivyo kwa haraka sana na kwa sauti kubwa kadri muwezavyo.\n* Rudieni kufanya hivyo kwa mkono mwingine. Rudieni kufanya hivyo kwa miguu yote miwili.\n* Fanyeni mara 7, kisha mara 6 na kuendelea hadi mara 1.\n* Kila mtu aite kwa sauti \"Kuku kichaa\" kisha acheze kama kuku kichaa kadri awezavyo!", - "Quick Parenting Tips": "Vidokezo vya Malezi vya Haraka", + "Yes": "Ndiyo", + "No": "Hapana", + "Reply": "Jibu", + "Timer": "Kipima muda", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Binya pembetatu ili mjadala huu udumu kwa dakika @local.timer_duration.", + "Video": "Video", + "Start Positively Together": "Anzeni Vizuri Pamoja", + "It's great to see you again! \n\nLet's start with caring for you.": "Tunafurahi kukuona tena!\n\nHebu tuanze na kukuthamini wewe.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Peaneni zamu:\n* Shirikisha wengine: Je, unajisikiaje leo?\n* Msifie mtu kwenye kikundi chako kwa jambo alilofanya vizuri wiki hii!\n\nKumbukeni kwamba bila kujali mnavyojisikia, nyinyi kuwa hapa ni jambo zuri sana. Nyote mnastahili kusifiwa.", + "We all have negative thoughts sometimes.": "Wakati mwingine, sisi sote huwa na mawazo hasi.", + "\"I am a failure\"": "\"Mimi ni wa kushindwa\"", + "What to do?": "Nini cha kufanya?", + "Examples": "Mifano", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Mara nyingi, kujiambia mwenyewe au kumwambia kijana wako kuacha au kusema kinyume na mambo chanya hakusaidii.", + "\"I do everything perfectly\"": "\"Ninafanya kila kitu kikamilifu\"", + "Instead, you can ask:": "Badale yake, unaweza kuuliza:", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Je, wazo hilo linatekelezeka? Maelezo mengine ni yapi? \n- Ni nini kitatokea nikiendelea kuamini wazo hili? \n- Nimwambie nini rafiki kama ana wazo hili?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Jambo hili ni gumu, lakini unajitahidi kadri ya uwezo wako, na tutashirikiana kutafuta ufumbuzi\"", + "\"It’s your fault\"": "\"Ni kosa lako\"", + "\"Let’s come up with a solution together\"": "\"Hebu tutafute ufumbuzi pamoja\"", + "\"I lost my job\"": "\"Nilipoteza kazi yangu\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Nilijifunza mengi kwenye kazi yangu – hiyo itanisaidia kupata nyingine\"", + "\"Nobody likes me\"": "\"Hakuna mtu anayenipenda\"", + "\"Last week I did have a great time with...\"": "\"Wiki iliyopita nilifurahi sana na...\"", + "\"Bad things always happen to me\"": "\"Mambo mabaya hunitokea kila wakati\"", + "\"This good thing happened the other day...\"": "\"Jambo hili zuri lilitokea siku fulani...\"", + "Change": "Badili", + "Teen": "Kijana", + "Age of teen": "Umri wa kijana", + "Let’s start with a few questions about your family.": "Hebu tuanze na maswali machache kuhusu familia yako.", + "How many teens are in your household?": "Je, kuna vijana wangapi kwenye kaya yako?", + "How old are they?": "Je, wana umri gani?", + "You’ve completed your @global.workshop.": "Umekamilisha @global.workshop.", + "Read along": "Endelea kusoma", + "See you soon.": "Tutaonana baadaye kidogo.", + "You can always find these tools in the @global.parent_centre": "Wakati wote unaweza kupata nyenzo hizi kwenye @global.parent_centre", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Wiki ijayo, utashirikisha kikundi chako jinsi gani zoezi la nyumbani lilivyoenda. Pia mnaweza kusaidiana na kukumbushana na wengine wiki hii.", + "Small actions, big results! Parents who practice their @global.workshop skills at home get better results.": "Matendo madogo, matokeo makubwa! Wazazi wanaofanyia kazi mazoezi ya nyumbani waliyopata kwenye @global.workshop hupata matokeo mazuri zaidi.", + "Hear a teen's testimonial": "Sikia ushuhuda wa kijana", + "Read a teen's testimonial": "Soma ushuhuda wa kijana", + "All @global.workshops_capital": "@global.workshops_capital zote", + "Sorry we missed this!": "Samahani, hatukuiona hii!", + "Do you want to share it with us?": "Je, ungependa kutushirikisha na sisi?", + "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.": "Asante kwa kutushirikisha changamoto yako! Tutatumia mrejesho huu ili kuboresha @global.parent_app.", + "Sorry to hear the tips did not help you.": "Tunasikitika kusikia kuwa vidokezo hivi havikukusaidia.", + "Do you want to share with us what you think would help you?": "Je, unataka kutushirikisha kitu gani unafikiri kingekusaidia?", + "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Asante sana kwa kushirikisha! Wewe ni mzazi mzuri sana kwa kujaribu kutumia muda wa pamoja na kijana wako. Kufanya hivi kunaleta mabadiliko. Endelea na kazi nzuri, na kumbuka, niko hapa kusaidia!", + "Learn Together": "Kujifunza Pamoja", + "It's time to learn and practice together!": "Sasa ni muda wa kujifunza na kufanya mazoezi pamoja!", + "It's time to learn and practice!": "Sasa ni muda wa kujifunza na kufanya mazoezi!", + "Listen Together": "Sikiliza Pamoja", + "Let's listen to an audio together!": "Hebu tusikilize pamoja!", + "Listen": "Sikiliza", + "Let's listen to an audio!": "Hebu tusikilize pamoja!", + "Active": "Inaendelea", + "sections": "sehemu", + "Hi @fields.user_name! This week you did:": "Habari @fields.user_name! Wiki hii ulifanya:", + "That’s wonderful!": "Hilo ni jambo zuri!", + "Nice work!": "Kazi nzuri!", + "Your commitment is not taken for granted.": "Kujitolea kwako si kwa bure.", + "Keep up the good work!": "Endeleza kazi hii nzuri!", + "This is lovely!": "Inafurahisha sana!", + "Tap yourself on the shoulder. You deserve this.": "Jipongeze. Unastahili.", + "Every @global.parent_point counts!": "Kila @global.parent_point ni ya muhimu sana!", + "Relax now": "Tulia sasa", + "Did you relax already? Tap it!": "Je, tayari umepumzika? Bofya!", + "Continue @local.workshop_data.in_text_title": "Endelea na @local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Anza @local.workshop_data.in_text_title", + "Finish current workshop": "Malizia kipindi cha sasa", + "How did you hear about @global.parent_app?": "Uliijuaje @global.parent_app?", + "Other": "Njia nyingine", + "By selecting this organisation you are allowing them to have access to your anonymous usage data so that they can support you on this journey.": "Kwa kuchagua taasisi hii unawaruhusu kutumia taarifa zako zilizoondolewa utambulisho ili waweze kukusaidia katika safari hii.", + "NIMR": "NIMR", + "I found it myself": "Niliipata mwenyewe", + "A friend or family": "Rafiki au familia", "Raising teens can be hard, and we all struggle sometimes.": "Kulea vijana kunaweza kuwa kugumu, na wakati mwingine sisi sote tunahangaika.", "What is the main challenge you are experiencing right now?": "Je, ni changamoto gani kuu unayoipata sasa hivi?", "My relationship with my teen is not good": "Uhusiano wangu na kijana wangu sio mzuri", @@ -985,22 +1177,61 @@ "Finish the @local.workshop_data.in_text_title to get more support.": "Maliza @local.workshop_data.in_text_title ili kupata msaada zaidi.", "Continue the @local.workshop_data.in_text_title": "Endelea na @local.workshop_data.in_text_title", "Re-access the @local.workshop_data.in_text_title": "Fungua tena @local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Kaa chini, fumba macho yako na usikilize pumzi yako inapoingia na kutoka.\n\nChunguza jinsi unavyohisi.\n\nUnapomaliza, fumbua macho yako tena.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Jaribu kufanya hivyo wakati wowote unapohisi msongo wa mawazo na unahitaji kupumzika ili kurudi tena kwenye hali ya kawaida.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Fumba macho yako.\n\nHebu tutumie maajabu ya namba tatu ili tuendelee kuwepo na kupumzika.\n\nTaja sauti tatu unazoweza kuzisikia sasa hivi.\nTaja harufu tatu unazoweza kuzinusa sasa hivi.\nTaja vyakula vitatu unavyovipenda.\n\nJe, ni mambo gani matatu unayoshukuru kuwa yapo sasa hivi? Si lazima yawe makubwa.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Wakati siku ngumu inapofikia mwisho, kufikiria vitu vitatu vya kuweza kufurahia inaweza kutusaidia kupata ujasiri wa kujaribu tena kesho.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Fumba macho yako na ufikirie siku ya leo.\n\nTaja jambo moja unaloshukuru kuwepo.\nTaja jambo moja ulilolifanya vizuri.\nTaja jambo moja unalolipenda.", - "Well done, you are a hero!": "Hongera, wewe ni shujaa!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Fumba macho yako.\n\nTumia maajabu ya namba tatu ili uendelee kuhusiana na kupumzika.\n\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Je, unahisi tofauti yoyote? Kuvuta pumzi ndefu husaidia mwili wetu wote na akili kutulia.\n\nWewe ni mshindi!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Fumba macho yako.\n\nSikiliza pumzi yako inapoingia na kutoka mara tano.\n\nChunguza jinsi unavyohisi.", - "When you are ready open your eyes again. You are in control!": "Ukimaliza, fumbua macho yako tena. Una uwezo wa kudhibiti hali yako!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Fumba macho yako. \n\nTumia dakika moja kufikiria siku ya leo.\n\nFikiria jambo moja chanya au la kufurahisha ulilolifanya.\nJisifie kwa jambo moja ulilolifanya vizuri leo. \nFikiria jambo moja unaloweza kulifanya tofauti kesho.  \n\nFikiria jambo moja unalolishukuru.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Fumba macho yako.\n\nJe, watoto wako huwa wanakufanya utake kufoka?\n\nJipumzishe kwa sekunde 10. Vuta pumzi na kuzishusha polepole kwa mara 5.\n\nKisha jaribu kujibu kwa utulivu zaidi.", - "Millions of parents say this helps - A LOT.": "Mamilioni ya wazazi wanasema kufanya hivyo kunasaidia – TENA SANA.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Fumba macho yako.\n\nAcha kwa muda kile unachokifanya ili uhusiane na pumzi yako.\n\nJe, ni jambo gani moja unalolishukuru sasa hivi?\nJe, ni jambo gani moja linalokuletea furaha?\nJe, ni jambo gani moja unalolipenda?\n\nSi lazima yawe makubwa. Wakati mwingine mambo madogo maishani ndiyo muhimu zaidi!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Hapa kuna shughuli ya kupumzisha mwili wako:\n\nKaa kwa utulivu halafu ufumbe macho yako ukiweza.\nVuta picha kuwa pete ya dhahabu inauchunguza mwili wako kuanzia unyayoni hadi utosini.\nSikiliza kwa makini pindi inapojongea kwenda juu na chini ya mwili wako. Je, kuna maeneo yoyote yaliyokakamaa? Yaliyo na ganzi? Yaliyo na maumivu?\nTulia kwenye maeneo hayo kwa muda. Vutia pumzi kwenye eneo hilo na, unaposhusha pumzi, jaribu kuachilia hali yoyote ya kukakamaa au ya maumivu.\nFanya hivi kwa kuvuta pumzi kadhaa.\n\nFumbua macho yako. Je, mwili wako unahisije sasa?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "Unaweza pia kujaribu hii kwa wakati mwingine ukijikuta umelala kitandani na usingizi hauji!", + "CHAT": "MAONGEZI", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Shirikisha jinsi unavyohisi, na muhimize kijana wako azungumzie pia wasiwasi wake. Mtaelewana vizuri zaidi na mnaweza kupanga pamoja mpango mzuri utakaowawezesha kuwa na afya njema na furaha!", + "CAUTION": "TAHADHARI", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Pata taarifa zako kutoka kwenye vyanzo vya taarifa vinavyoaminika, ili uweze kuwa na uhakika katika nyakati hizi za mashaka. Tunasikia na kuona habari nyingi kupitia watu wengine na simu, runinga, intaneti. Je, hali hiyo inakufanya uhisi mashaka, wasiwasi, hofu, hasira, au kuchanganyikiwa? Hakiki taarifa zako kabla ya kusambaza au kuchukua hatua!", + "CHOOSE": "CHAGUA", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Kufanya uchaguzi sahihi unaomfanya kila mtu kuwa salama na mwenye afya kunaweza kuwa jambo gumu. Hasa katika nyakati hizi! Unaweza kumsaidia kijana wako kufanya maamuzi mazuri.", + "CHILL": "MFADHAIKO", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Kuna wakati sisi sote huhisi mfadhaiko. Vuteni pumzi ndefu au fanyeni pamoja jambo la kufurahisha. Kuifanya nyumba yako kuwa yenye furaha na amani kunaweza kuleta mabadiliko makubwa! Hapa kuna mawazo kadhaa unayoweza kuyajaribu:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Mawazo hasi hutufanya tuseme na kufanya mambo hasi. Jaribu kubadili unachofikiri na unachosema kutoka kuwa hasi hadi kuwa chanya!", + "WHO Website": "Tovuti ya Shirika la Afya Duniani", + "UNICEF Website": "Tovuti ya UNICEF", + "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Malezi wakati wa UVIKO-19 ni magumu. Jisikie fahari kwa kufika mbali hivi.\n\nTunashughulikia maudhui mapya hapa ili kukusaidia kuzungumza na vijana na watoto wako kuhusu UVIKO-19.\n\nTaarifa mpya zaidi kuhusu UVIKO-19 zinapatikana kwenye tovuti za Shirika la Afya Duniani na UNICEF:", + "This button will take you to the Coronavirus section of the official UNICEF website.": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya UNICEF.", + "The URL is https://www.unicef.org/coronavirus/covid-19": "Anuani ya tovuti ni https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya Shirika la Afya Duniani.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "Anuani ya tovuti ni https://www.who.int/emergency/diseases/novel-coronavirus-2019", + "Update my parenting experiences": "Sasisha uzoefu wangu wa malezi", + "Update my personal details": "Sasisha taarifa zangu binafsi", + "Update my @global.workshop options": "Sahihisha machaguo yangu ya @global.workshop", + "Support Contacts": "Mawasiliano ya Msaada", + "Quick Parenting Tips": "Vidokezo vya Malezi vya Haraka", + "You will find the in-week messages from the previous @global.workshops here.": "Utapata jumbe za @global.workshops za wiki iliyopita hapa. ", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Bado haujaongeza shughuli zozote kwenye @global.my_activities. Kwanini usichague baadhi ya shughuli?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Bado haujaongeza shughuli zozote za kupumzika kwenye @global.my_relaxes. Kwanini usichague baadhi ya shughuli?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Utapata hapa vidokezo tunavyoona kuwa ni vya muhimu, kutokana na majibu uliyoyatoa wakati wa kurekebisha programu hii.", + "Relaxation activities": "Shughuli za kuburudisha", + "Something fun to do with your teen": "Kitu cha kufurahisha cha kufanya na kijana wako", + "I need help with:": "Ninahitaji msaada na:", + "Technical Support": "Msaada wa Kiufundi", + "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Je, unapata matatizo yoyote ya kiufundi? Tujulishe ili kutusaidia kuboresha @global.parent_app!", + "Type your name (optional)": "Andika jina lako (hiari)", + "Contact me on @global.whatsapp": "Wasiliana nami kwa @global.whatsapp", + "Type your phone number": "Andika namba yako ya simu", + "Contact me via email": "Wasiliana nami kwa barua-pepe", + "Type your email address": "Andika anuani yako ya barua-pepe", + "Tell us about your issue": "Tueleze tatizo lako", + "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Mara ya kwanza mama yangu aliponiuliza kama ninataka kutumia muda pamoja naye, nilimwambia aniache kwa sababu nilikuwa katikati ya mchezo. Lakini alisisitiza kama anavyofanya kila wakati. Nilimwambia aniangalie ninavyocheza kama hicho ndicho alichokuwa anakitaka. Baada ya dakika kadhaa, alianza kuniuliza maswali kuhusu mchezo huo. Mwanzoni ilikuwa inakera, lakini baada ya muda nilifurahi kwamba hatimaye alikuwa akivutiwa na kile nilichokuwa nikikifanya. Aliweza hata kujaribu!", + "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Baba yangu aliniambia ninacheza mno mpira wa kikapu baada ya kutoka shule, kwa hiyo ni lazima tuweke sheria ya familia. Aliahidi kuwa tutafikiria suluhisho pamoja, ili sisi sote tujisikie vizuri kuhusu jambo hili. Sikuamini kuwa itawezekana lakini nikasema, \"Sawa, ngoja tujaribu\". Tulijadili na kukubaliana kuwa sheria itakuwa kwamba ninaruhusiwa kucheza mpira wa kikapu baada ya kufanya kazi ya nyumbani hadi tunapoenda kula chakula cha usiku. Inaniwia vigumu kwenda kucheza na marafiki zangu baada ya kutoka shule, kwa hiyo ninajitahidi kadri ya uwezo wangu kumaliza kwanza kazi ya nyumbani halafu ndipo ninaenda kucheza nao. Sasa hivi ninapata pia muda wote wa jioni kwa ajili ya kufanya mambo mengine, kama kutazama Ligi ya Mpira wa Kikapu ya Marekani.", + "Question Time": "Muda wa Maswali", + "It's time for some questions!": "Sasa ni muda wa kuuliza maswali!", + "Read Together": "Soma Pamoja", + "Let's read a story together!": "Hebu tusome hadithi pamoja!", + "Let's read a story!": "HebuTusome hadithi!", + "Let's see how this week has been.": "Ngoja tuone wiki hii imeendaje.", + "This week you have done...": "Wiki hii ulifanya...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Unaonyesha kujitoa kwa dhati kama mzazi na kujithamini wewe mwenyewe.\n\nWewe ni mtu mzuri sana.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Zoezi la nyumbani husaidia kuboresha maisha ya familia zetu kuwa mazuri zaidi. Lakini mara nyingi huleta changamoto.\n\nNgoja tushirikishane mafanikio na changamoto zetu, na kusaidiana kupata mawazo mapya ya kujaribu!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", + "Discussion example from @data.workshop.w_1on1.title": "Mfano wa majadiliano kutoka @data.workshop.w_1on1.title", + "Relax Together": "Chukua Pumziko Pamoja", + "Let’s do a short relaxation activity together. It will only take a moment and you will feel more relaxed.": "Hebu tufanye shughuli moja fupi ya kuchukua pumziko. Itachukua muda mfupi na utajisikia vizuri zaidi.", + "Add this activity to @global.my_relaxes": "Ongeza shughuli hii kwenye @global.my_relaxes", + "Listen and relax": "Sikiliza na chukua pumziko", + "Read and relax": "Soma na chukua pumziko", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufanya uwe na furaha. Halafu vuta pumzi ndefu ili kujisikia vizuri.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Fumba macho yako.\n\nChunguza uhusiano wako na ardhi iliyo chini yako.\nJe, ni sehemu gani za mwili wako zinagusa ardhi? Je, ni sehemu gani za mwili wako hazigusi ardhi?\nChunguza mahali palipo na joto na mahali palipo na baridi.\nGusa ardhi iliyo chini yako inayokubeba. Acha mwili wako uzame na kubebwa na ardhi.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Jaribu kufanya hivyo utakapojisikia tena kuwa mpweke au unapofanya shughuli zinazochosha kama kuosha vyombo baada ya kula. Kunasaidia kweli!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Kaa chini na ufumbe macho yako.\nJe, unaweza kusikia sauti ngapi?\nSikiliza sauti za ndani na nje ya chumba. Zihesabu kwa vidole vyako.\nBaada ya sekunde kumi, umefikisha vidole vingapi? Ulisikia sauti zipi?\n\nJaribu tena kwa sekunde kumi.\nJe, umesikia sauti zozote mpya? Je, umesikia sauti zozote ndani ya mwili wako mwenyewe?\nChunguza jinsi unavyohisi sasa.", @@ -1017,224 +1248,177 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Tumia muda kutafakari hali uliyoipitia. Chunguza kama unahisi tofauti yoyote.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Hatua ya Kwanza. Fumba macho yako halafu uvute pumzi ndefu.\n\nHatua ya Pili. Jiulize, \"Je, ninafikiria nini?\" Chunguza kama mawazo yako ni chanya au hasi.\nAngalia jinsi unavyojihisi. Chunguza kama mihemuko yako ni ya kufurahisha au kutofurahisha. Jikumbushe kwamba chochote unachohisi, si kibaya.\nChunguza jinsi mwili wako unavyohisi. Chunguza kitu chochote kinachoumiza au kinacholeta wasiwasi.\n\nHatua ya Tatu. Makinikia upumuaji wako. Hisi pumzi yako inapoingia na kutoka. Unaweza kuweka mkono kwenye tumbo lako na kuhisi linavyopanda na kushuka kwa kila pumzi. Fanya hivyo kwa mipumuo kama 10.\n\nHatua ya Nne. Panua ufahamu wako kuhusu mwili wako wote. Sikiliza sauti zilizomo chumbani.\n\nHatua ya Tano. Tumia muda kutafakari iwapo unahisi mabadiliko au la. Ukimaliza, fumbua macho yako.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "Hongera kwa Kutulia. Unaweza kufanya hivyo wakati wowote unapohisi msongo wa mawazo. Kufanya hivyo kunakupa nafasi ya kutulia zaidi. Hata kuvuta pumzi ndefu mara chache au kuhusiana na ardhi iliyopo chini yako kunaweza kuleta mabadiliko. Unaweza pia Kutulia pamoja na watoto wako!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Kaa chini, fumba macho yako na usikilize pumzi yako inapoingia na kutoka.\n\nChunguza jinsi unavyohisi.\n\nUnapomaliza, fumbua macho yako tena.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Jaribu kufanya hivyo wakati wowote unapohisi msongo wa mawazo na unahitaji kupumzika ili kurudi tena kwenye hali ya kawaida.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Simama na unyooshe mikono yako juu angani. Sukuma mawingu yote na uache jua likuangazie. Jinyooshe kwenda kulia na kushoto. Jinyooshe kwenda mbele na nyuma.\n\nAcha mkono wako uning'inie ubavuni mwako. Kaza mabega yako na kuyapandisha hadi kwenye masikio yako huku ukipumua, bana macho yako, na ushikilie pumzi yako. Legeza mabega yako wakati unapolegeza mwili wako.\n\nLegeza mikono yako na uibembeze ubavuni, halafu binua upande wa juu wa kiwiliwili chako. Mikono yako inapaswa kupiga polepole mgongo wako unapojigeuza kutoka upande mmoja hadi mwingine.\n\nWeka mguu mmoja mbele ya mwingine na fanya miduara midogo kwa kutumia vifundo vya miguu. Kumbuka kugeukia pande zote mbili. Kila mguu ufanye miduara minne kwa kila upande.\n\nSasa tikisa mwili wako wote haraka kadri uwezavyo. Tikisa upande wa juu kabisa! Tikisa upande wa chini kabisa! Tikisa mwili wote!\n\nFumba macho yako na uinue mikono yako polepole kuzidi kichwa chako huku ukivuta pumzi. Teremsha mikono yako polepole kuelekea ubavuni mwako huku ukishusha pumzi.\n\nTumia muda kutafakari hali uliyoipitia.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "Hongera! Unaweza kufanya shughuli hii wakati wowote unapohisi kama unahitaji kuondoa msongo wa mawazo na kutia nguvu akilini na mwilini mwako.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Tengeneza orodha ya shughuli zinazoleta afya unazopenda kufanya. Hizi ni baadhi ya mapendekezo:\n* Kusikiliza muziki unaoupenda\n* Kwenda matembezini (kama inaruhusiwa)\n* Kufanya mazoezi\n* Kunywa kikombe cha chai peke yako\n* Kumpigia rafiki simu\n* Kuimba, kucheza, kusali, au kusoma\n* Kuketi juani huku umefumba macho\n* Kutazama kipindi cha runinga unachokipenda\n\nChagua shughuli moja na uifanye leo!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "Unapojitunza wewe mwenyewe, unawatunza watoto wako. Sisi sote tunahitaji kuhusiana. Kila siku, jaribu kuzungumza na marafiki, familia, na mitandao mingine inayosaidia. Kama umepita muda tangu ulipowasiliana na mtu fulani, fanya hivyo sasa!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Jambo linalokukasirisha? Je, linatokea wakati gani? Je, kwa kawaida, mwitikio wako huwa ni upi?\n\nZuia hasira kabla hata haijapanda. Unapokuwa umechoka, lala usingizi au pumzika. Unapokuwa na njaa, jaribu kula kitu. Unapokuwa mpweke, omba msaada kwa mtu.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Kudhibiti hasira kunaweza kuwa kugumu. Pumzika unapohisi unawakasirikia watoto wako au mtu mwingine.\n\nNenda mahali pengine kwa dakika 5 ili uweze kudhibiti tena hisia zako. Kama una mahali salama nje, nenda nje. Una uwezo wa kulimaliza jambo hili!", - "Customise your @global.parent_app": "Rekebisha @global.parent_app yako", - "These quick questions will fit this app to your needs.": "Maswali haya ya haraka yatapangilia programu hii kulingana na mahitaji yako.", - "Let’s start with a few questions about you and your family.": "Hebu tuanze na maswali machache kuhusu wewe na familia yako.", - "We would love to know your first name or nickname:": "Tungependa kujua jina lako la kwanza au jina lako la utani:", - "Are you a woman or a man?": "Je, wewe ni mwanamke au mwanaume?", - "Woman": "Mwanamke", - "Man": "Mwanaume", - "How old are you?": "Je, una umri gani?", - "Adults": "Watu wazima", - "Teens": "Vijana", - "Children": "Watoto", - "Babies": "Watoto wachanga", - "How many people are in your household?": "Je, kuna watu wangapi kwenye kaya yako?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Unaweza kufanya @global.weekly_workshops peke yako AU unaweza kualika wanafamilia wengine au marafiki wajiunge nawe – mtafundishana mengi. Uamuzi ni wako!", - "How would you like to do your @global.weekly_workshops?": "Je, ungependa kufanyaje @global.weekly_workshops zako?", - "Can you think of a name for your group?": "Je, unaweza kufikiria jina la kikundi chako?", - "Which day of the week would you like to do your @global.weekly_workshops?": "Je, ni siku gani ya wiki ungependa kufanya @global.weekly_workshops zako?", - "Monday": "Jumatatu", - "Tuesday": "Jumanne", - "Wednesday": "Jumatano", - "Thursday": "Alhamisi", - "Friday": "Ijumaa", - "Saturday": "Jumamosi", - "Sunday": "Jumapili", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Safi sana! Tutafungua warsha mpya kwa kikundi chako kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Safi sana! Tutawafungulia warsha mpya kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", - "You can always change these settings in your @global.weekly_workshop_options.": "Wakati wote unaweza kubadilisha mipangilio hii kwenye @global.weekly_workshop_options.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Tunajua jambo hili ni gumu. Tumeongeza vidokezo vya kukusaidia jinsi unavyoweza kutumia muda ukiwa na kijana wako kwenye @data.parent_centre.my_tips.location_text, ili uweze kuvipata mara moja.\n\nKwa kuwa @data.workshop.w_1on1.title inajenga msingi wa nyenzo nyingine zote za malezi, wiki ijayo utapokea @global.weekly_workshop!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Vizuri! @global.weekly_workshop yetu ijayo itakupa maoni zaidi kuhusu jambo hili, kama msingi wa nyenzo nyingine zote za malezi. Lakini tayari umeanza vizuri!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Kutumia programu hii kunaonyesha kuwa unamjali kijana wako. Tumeongeza nyenzo muhimu za namna ya kutumia usifiaji kwenye @data.parent_centre.my_tips.location_text ili uzipate haraka.\n\nKwenye @data.workshop.w_praise.in_text_title utajifunza zaidi namna ya kutumia vizuri ujuzi huu.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Inavutia sana kuona unamsifia kijana wako! Kufanya hivyo kunamsaidia kuhisi anathaminiwa – kumtia moyo kuna maana kubwa sana. Kwenye @data.workshop.w_praise.in_text_title utajifunza zaidi namna ya kutumia vizuri ujuzi huu.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Ni jambo zuri sana kwamba wiki hii imeenda vizuri!\n\nTutakukumbusha mara kwa mara kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Ni jambo zuri sana kwamba ulihisi utulivu wakati mwingi wa wiki!\n\nTutakukumbusha mara kwa mara kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Tunaelewa jinsi maisha yanavyoweza kuleta msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia kudhibiti msongo wa mawazo na kuhisi utulivu zaidi.\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya @data.workshop.w_stress.number ya @global.weekly_workshops – lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Asante kwa kuwa mkweli. Kudhibiti msongo wa mawazo yetu kunaweza kuwa jambo gumu sana. Ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu, tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza. Wewe ni mtu muhimu!\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya @data.workshop.w_stress.number ya @global.weekly_workshops, lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli. Kudhibiti msongo wa mawazo yetu kunaweza kuwa jambo gumu sana. Tunatumaini nyenzo zetu za kudhibiti msongo wa mawazo zitakuwa na faida kwako. Tayari unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Safi sana! Tuna warsha kuhusu kutengeneza bajeti ya familia inayoweza kukusaidia kwenye msongo wa mawazo kutokana na pesa kwa jumla, na kupunguza ugomvi unaohusiana na pesa.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Msongo wa mawazo kutokana na pesa unaweza kuzidi mno.\n\nTuna warsha kuhusu kutengeneza bajeti ya familia baada ya wiki tano, lakini tayari unaweza kupata vidokezo vya msingi kuhusu kutengeneza bajeti ya familia kwenye @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako. Ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu, tutakukumbusha kila siku kujipumzisha, kujitambua na kujipongeza. Wewe ni mtu muhimu!\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya 5 ya @global.weekly_workshops, lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Hongera kwa kuwa mkweli – na tunasikitika kwamba unapata wakati mgumu kwa kijana wako.\n\nWakati mwingine, sisi sote tunahisi kuzidiwa na mambo. Kutumia @global.parent_app ni hatua nzuri ya kukusaidia wewe na familia yako!\n\nTaarifa zetu zimesaidia maelfu ya wazazi na familia kupunguza msongo wa mawazo na kuwa na wakati chanya zaidi pamoja. Tuko hapa kukusaidia.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nTunatumaini kuwa nyenzo zetu za kudhibiti msongo wa mawazo zitaendelea kukusaidia uhisi utulivu zaidi katika nyakati ngumu. Unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Hili ni tatizo kubwa kwa wazazi kila mahali. Tutahakikisha unapata msaada kwa kujenga mawasiliano.\n\nTutazungumza zaidi juu ya kupanga usalama wa kijana wako baadaye kwenye @global.weekly_workshops, lakini tayari unaweza kupata vidokezo vya kwanza vya msingi ili kumweka salama kijana wako kwenye @data.parent_centre.my_tips.location_text!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Vizuri sana. Malezi ni magumu, lakini unafanikiwa kweli kwenye jambo hili.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka vijana wetu salama linaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nTayari unaweza kupata vidokezo vya kwanza vya msingi vitakavyosaidia kuweka sheria na kupanga usalama kwenye @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools na @data.workshop.w_safe.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka vijana wetu salama linaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nTayari unaweza kupata vidokezo vya kwanza vya msingi vitakavyosaidia kuweka sheria kwenye @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Kuwa mzazi si jambo rahisi. Hongera kwa kuadhimia kumweka salama kijana wako.\n\nTutakupa msaada zaidi kwenye jambo hili katika @global.weekly_workshops za baadaye kama utapenda kujua zaidi!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Maudhui yaliyofunguliwa na maswali haya sasa yanapatikana kwenye @data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "Umefungua warsha ya kwanza!", - "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Tunajua jambo hili ni gumu. Unaweza kupitia vidokezo kadhaa vya kukusaidia jinsi unavyoweza kutumia muda ukiwa na kijana wako kwenye @data.parent_centre.my_tips.location_text au unaweza kuangalia tena @data.workshop.w_1on1.in_text_title.", - "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "Hongera kwa kujiwekea msingi mzuri sana! Wakati wote unaweza kupitia tena @data.workshop.w_1on1.in_text_title ili kupata maoni zaidi kuhusu jinsi ya kutumia muda pamoja.", - "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Kutumia programu hii kunaonesha kuwa unamjali kijana wako. Unaweza kupitia tena jinsi ya kumsifia kijana wako kwenye @data.parent_centre.my_tips.location_text.\n\nKwa vidokezo zaidi kuhusu jinsi ya kutumia ujuzi huu vizuri, unaweza pia kuangalia zaidi hapa @data.workshop.w_praise.in_text_title.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.": "Inavutia sana kuona unamsifia kijana wako! Kufanya hivyo kunamsaidia kuhisi anathaminiwa – unapomtia moyo kunajenga maana kubwa sana.\n\nUnaweza kupitia tena @data.workshop.w_praise.in_text_title ili kupata vidokezo zaidi kuhusu jinsi ya kutumia vizuri ujuzi huu.", - "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Ni jambo zuri sana kwamba wiki hii imeenda vizuri!\n\nTutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", - "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Ni jambo zuri sana kwamba ulihisi utulivu wakati mwingi wa wiki hii!\n\nTutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", - "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Tunaelewa jinsi maisha yanavyoweza kuleta msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia kudhibiti msongo wa mawazo na kuhisi utulivu zaidi.\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli. Inaweza kuwa changamoto kudhibiti msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza Ili uweze kujithamini na kuhisi utulivu zaidi pindi mambo yanapokuwa magumu. Wewe ni mtu muhimu!\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli. Inaweza kuwa jambo gumu sana kudhibiti msongo wa mawazo. Wakati wote unaweza kupata nyenzo muhimu za kudhibiti msongo wa mawazo kwenye @data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Safi sana! Kama kwenye familia yako kutatokea kutokukubaliana kuhusu masuala ya pesa, unaweza kupitia @data.workshop.w_money.in_text_title au @data.parent_centre.my_tips.location_text wakati wowote!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Msongo wa mawazo kuhusu pesa unaweza kuzidi mno.\n\nWakati wowote kukitokea msongo wa mawazo au kutokukubaliana kuhusu masuala ya pesa kwenye familia yako, unaweza kupata vidokezo kwenye @data.workshop.w_money.in_text_title au kwenye @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu. Wewe ni mtu muhimu!\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nWakati mwingine, sisi sote tunahisi kuzidiwa, na kuendelea kutumia @global.parent_app ni hatua nzuri sana ya kukusaidia wewe na familia yako!\n\nNyenzo zetu zimesaidia maelfu ya wazazi na familia kupunguza msongo wa mawazo na kuwa na wakati mzuri zaidi pamoja. Tuko hapa kukusaidia.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nTunatumaini kuwa nyenzo zetu za kudhibiti msongo wa mawazo zitaendelea kukusaidia uhisi utulivu zaidi katika nyakati ngumu. Unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Hili ni tatizo kubwa kwa wazazi kila mahali. Kumbuka kutumia ujuzi wako mpya ili kuendelea kujenga mawasiliano mazuri na kijana wako.\n\nUnaweza kupitia tena vidokezo vya msingi kuhusu mpango wa usalama kwa kijana wako kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka salama vijana wetu kunaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia!\n\nKumbuka, wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre. Unaweza pia kupitia tena vidokezo vya msingi kuhusu sheria na mpango wa usalama kwenye @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka salama vijana wetu salama kunaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Kumbuka, wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nUnaweza pia kupitia tena vidokezo vya msingi kuhusu kuweka sheria kwenye @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Kuwa mzazi si jambo rahisi. Hongera kwa kuadhimia kumweka salama kijana wako.\n\nKumbuka, unaweza kupata msaada zaidi kuhusu suala hili kwenye @data.workshop.w_safe.in_text_title wakati wowote unapouhitaji!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Fumba macho yako.\n\nHebu tutumie maajabu ya namba tatu ili tuendelee kuwepo na kupumzika.\n\nTaja sauti tatu unazoweza kuzisikia sasa hivi.\nTaja harufu tatu unazoweza kuzinusa sasa hivi.\nTaja vyakula vitatu unavyovipenda.\n\nJe, ni mambo gani matatu unayoshukuru kuwa yapo sasa hivi? Si lazima yawe makubwa.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Wakati siku ngumu inapofikia mwisho, kufikiria vitu vitatu vya kuweza kufurahia inaweza kutusaidia kupata ujasiri wa kujaribu tena kesho.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Fumba macho yako na ufikirie siku ya leo.\n\nTaja jambo moja unaloshukuru kuwepo.\nTaja jambo moja ulilolifanya vizuri.\nTaja jambo moja unalolipenda.", + "Well done, you are a hero!": "Hongera, wewe ni shujaa!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Fumba macho yako.\n\nTumia maajabu ya namba tatu ili uendelee kuhusiana na kupumzika.\n\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Je, unahisi tofauti yoyote? Kuvuta pumzi ndefu husaidia mwili wetu wote na akili kutulia.\n\nWewe ni mshindi!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Fumba macho yako.\n\nSikiliza pumzi yako inapoingia na kutoka mara tano.\n\nChunguza jinsi unavyohisi.", + "When you are ready open your eyes again. You are in control!": "Ukimaliza, fumbua macho yako tena. Una uwezo wa kudhibiti hali yako!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Fumba macho yako. \n\nTumia dakika moja kufikiria siku ya leo.\n\nFikiria jambo moja chanya au la kufurahisha ulilolifanya.\nJisifie kwa jambo moja ulilolifanya vizuri leo. \nFikiria jambo moja unaloweza kulifanya tofauti kesho.  \n\nFikiria jambo moja unalolishukuru.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breathe in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Fumba macho yako.\n\nJe, watototo wako wamewahi kukufanya ujihisi kupiga yowe?\n\nJipe sekunde 10 za kupumzika. Vuta pumzi ndani na nje taratibu mara 5.\n\nBaadae jaribu kujibu kwa hali ya utulivu.", + "Millions of parents say this helps - A LOT.": "Mamilioni ya wazazi wanasema kufanya hivyo kunasaidia – TENA SANA.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Fumba macho yako.\n\nAcha kwa muda kile unachokifanya ili uhusiane na pumzi yako.\n\nJe, ni jambo gani moja unalolishukuru sasa hivi?\nJe, ni jambo gani moja linalokuletea furaha?\nJe, ni jambo gani moja unalolipenda?\n\nSi lazima yawe makubwa. Wakati mwingine mambo madogo maishani ndiyo muhimu zaidi!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Hapa kuna shughuli ya kupumzisha mwili wako:\n\nKaa kwa utulivu halafu ufumbe macho yako ukiweza.\nVuta picha kuwa pete ya dhahabu inauchunguza mwili wako kuanzia unyayoni hadi utosini.\nSikiliza kwa makini pindi inapojongea kwenda juu na chini ya mwili wako. Je, kuna maeneo yoyote yaliyokakamaa? Yaliyo na ganzi? Yaliyo na maumivu?\nTulia kwenye maeneo hayo kwa muda. Vutia pumzi kwenye eneo hilo na, unaposhusha pumzi, jaribu kuachilia hali yoyote ya kukakamaa au ya maumivu.\nFanya hivi kwa kuvuta pumzi kadhaa.\n\nFumbua macho yako. Je, mwili wako unahisije sasa?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "Unaweza pia kujaribu hii kwa wakati mwingine ukijikuta umelala kitandani na usingizi hauji!", + "Choose your language": "Chagua lugha yako", + "Please sign in with your Google account to use the app.": "Tafadhali ingia kwenye programu kwa kutumia akaunti yako ya google.", + "Sign in with Google": "Ingia kwa kutumia Google", + "App Skin": "Aina ya Programu", + "To get access to changing the app skin, enter your developer code in the box below and press @global.submit_button.": "Ili kupata uwezo wa kubadilisha kipindi, weka msimbo wako wa kubuni kwenye kisanduku kilicho hapa chini na ubonyeze @global.submit_button.", + "You have entered an incorrect code.": "Umeingiza namba isiyo sahihi.", + "Add this activity to @global.my_activities": "Ongeza shughuli hii kwenye @global.my_activities", + "@global.parent_app funded by": "@global.parent_app imefadhiliwa na", + "Powered by Parenting for Lifelong Health and partners": "Imewezeshwa na Malezi kwa Maisha Marefu yenye Afya na wadau", + "Skip intro": "Ruka utangulizi", + "Bringing teenagers up is hard": "Kuwakuza vijana ni kazi ngumu", + "You are the best parent your teen could have": "Wewe ni mzazi bora sana ambaye kijana wako anaye", + "Join the over @local.number million parents who have used our resources": "Jiunge na zaidi ya mamilioni @local.number ya wazazi ambao wametumia rasilimali zetu", + "Ideas from other families:": "Mawazo kutoka familia nyingine:", + "Customise @global.parent_app": "Rekebisha @global.parent_app", "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Kumbuka unaweza kupata vidokezo na rasilimali nyingi za kukusaidia kwenye @global.parent_centre – zinapatikana kwa ajili yako wakati wowote!", - "Are there teens in your family?": "Je, kuna vijana kwenye familia yako?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Programu hii inalenga familia zilizo na vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu kwa ajili ya familia yako!", - "Are there adults in your family?": "Je, kuna watu wazima kwenye familia yako?", - "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Programu hii inalenga wazazi wenye vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu!", - "Are you sure you want to skip this question?": "Je, una uhakika unataka kuruka swali hili?", - "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Una uhakika unataka kuruka swali hili? Kumbuka, jibu lako litakuwa ni siri na litatusaidia kuelewa mahitaji yako ya malezi.", - "You selected \"I would rather not answer\"": "Umechagua \"Nisingependa kujibu\"", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Sawa!\n\nKumbuka, ukijibu swali hili jibu lako litakuwa siri na litatusaidia kukupa maudhui yatakayokufaa.", "Customise for your needs": "Rekebisha kulingana na mahitaji yako", "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Kila mzazi duniani anahangaika katika nyakati hizi ngumu. Maswali yafuatayo kuhusu uzoefu wako wa malezi yatatusaidia kukupa msaada unaohitaji.\n\nKuwa mkweli. Kumbuka kwamba hauko peke yako! Mamilioni ya wazazi wanahisi kama wewe, na sote tunastahili kusaidiwa.", - "It is hard to find time to have fun with your teenager.": "Ni vigumu kupata muda wa kufurahi na kijana wako.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Je, ni siku ngapi katika wiki iliyopita uliweza kuwa nao na kufanya jambo ambalo wanalofurahia pamoja nao?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_1on1.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Katika maisha yetu yenye shughuli nyingi ni vigumu kuzingatia mambo chanya.", - "How many days in the past week have you praised your teen?": "Je, ni siku ngapi katika wiki iliyopita ulimsifia kijana wako?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_praise.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Huu ni muda wenye msongo mkubwa kwa familia.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Je, ni siku ngapi katika wiki iliyopita ulihisi kuwa na msongo mkubwa wa mawazo kama mzazi/mlezi?", - "Sometimes our children make us really upset.": "Wakati mwingine watoto wetu hutukasirisha sana.", - "How many days in the past week did you shout, scream or yell at your teen?": "Je, ni siku ngapi katika wiki iliyopita ulimfokea kijana wako?", - "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "Vizuri. Sayansi ya ubongo inaonyesha kuwa kudhibiti hasira zako kunaboresha ukuaji wa ubongo wa kijana wako. Jionee fahari.", - "Money is one of the biggest stresses for families now.": "Pesa ni miongoni mwa vyanzo vikubwa zaidi vya msongo wa mawazo katika familia kwa sasa.", - "How many days in the past week have you worried or felt anxious about money?": "Je, ni siku ngapi katika wiki iliyopita ulikuwa na wasiwasi kuhusu pesa?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulikosa pesa za kununulia chakula?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_money.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Watoto wanapokuwa na tabia mbaya wanaleta msongo wa mawazo.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Ni siku ngapi katika wiki iliyopita uliwaadhibu watoto wako kwa kuwachapa au kuwapiga makofi au kuwapiga kwa fimbo au mkanda?", - "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Inafurahisha sana kuona unajibu kwa utulivu licha ya kijana wako kufanya jambo la kufadhaisha. Anaweza kujifunza mambo mengi sana kutoka kwako!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_stress.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Ni vigumu kuwafuatilia vijana wako wanapojitegemea.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Ni siku ngapi katika wiki iliyopita ulijua vitu kijana wako alikuwa anafanya na alikuwa na nani?", - "This is good to hear.": "Ni vizuri kusikia hivyo.", - "Were you in lockdown this week?": "Je, wiki hii ulitekeleza zuio la kutoka nyumbani?", - "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Ni jambo zuri sana kuona kwamba unajua kile anachokifanya kijana wako. Malezi ni jambo gumu, lakini unafanikiwa sana kwenye jambo hili ili kumweka salama.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Ni siku ngapi katika wiki ya kawaida zisizo na zuio la kutoka nyumbani ulijua vitu kijana wako alikuwa anafanya na alikuwa na nani?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_safe.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Wote tunataka kuwaweka watoto wetu salama.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulizungumza na kijana wako kuhusu kujilinda dhidi ya ukatili wa kingono mtandaoni au nje ya mtandao?", - "This could be when they are going out with friends, or talking about the websites they use.": "Hiyo inaweza kuwa pale anapoenda kutembea na marafiki, au kuzungumzia tovuti anazotembelea.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Tuna changamoto mpya sasa – kuwalinda vijana wetu dhidi ya UVIKO-19.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Je, ni siku ngapi wiki iliyopita kijana wako alijilinda kwa kuvaa barakoa, kukaa mbali na watu wengine, na kuepuka maeneo yenye msongamano?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "Inaweza kuwa changamoto kumfanya kijana wako awe salama dhidi ya UVIKO-19! Tunakusanya ushauri – punde utaweza kuupata kwenye @global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Vizuri sana. Tunakusanya ushauri kuhusu kumweka kijana wako salama dhidi ya UVIKO – punde utaweza kuupata kwenye @global.parent_centre.", "Thank you for being honest": "Asante kwa kuwa mkweli", - "CHAT": "SOGOA", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Shirikisha jinsi unavyohisi, na muhimize kijana wako azungumzie pia wasiwasi wake. Mtaelewana vizuri zaidi na mnaweza kupanga pamoja mpango mzuri utakaowawezesha kuwa na afya njema na furaha!", - "CAUTION": "TAHADHARI", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Pata taarifa zako kutoka kwenye vyanzo vya taarifa vinavyoaminika, ili uweze kuwa na uhakika katika nyakati hizi za mashaka. Tunasikia na kuona habari nyingi kupitia watu wengine na simu, runinga, intaneti. Je, hali hiyo inakufanya uhisi mashaka, wasiwasi, hofu, hasira, au kuchanganyikiwa? Hakiki taarifa zako kabla ya kusambaza au kuchukua hatua!", - "CHOOSE": "CHAGUA", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Kufanya uchaguzi sahihi unaomfanya kila mtu kuwa salama na mwenye afya kunaweza kuwa jambo gumu. Hasa katika nyakati hizi! Unaweza kumsaidia kijana wako kufanya maamuzi mazuri.", - "CHILL": "MFADHAIKO", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Kuna wakati sisi sote huhisi mfadhaiko. Vuteni pumzi ndefu au fanyeni pamoja jambo la kufurahisha. Kuifanya nyumba yako kuwa yenye furaha na amani kunaweza kuleta mabadiliko makubwa! Hapa kuna mawazo kadhaa unayoweza kuyajaribu:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Mawazo hasi hutufanya tuseme na kufanya mambo hasi. Jaribu kubadili unachofikiri na unachosema kutoka kuwa hasi hadi kuwa chanya!", - "A teen sometimes does something because they:": "Wakati mwingine kijana hufanya jambo fulani kwa sababu:", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Anawasikiliza marafiki zake\n- Anataka kufanya mambo wanayofanya wengine\n- Anafikiria zaidi kuhusu 'sasa' kuliko 'baadaye'\n- Ana mihemko ya kimapenzi na anaona kwamba kuwa mwangalifu kunachosha\n- Hana wasiwasi kuhusu hatari – anaweza hata kupenda hatari\n- Ana uzoefu mdogo anaoutegemea\n- Yuko tayari kujaribu jambo fulani – bila kujali kitakachotokea", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kukumbuka mambo haya kunaweza kusaidia pindi kijana wako anapofanya uamuzi mbaya. Zungumza naye na tumia muda pamoja naye ili uweze kumsaidia kuchagua vyema wakati ujao!", - "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Kuelewa namna kijana wako anavyojisikia na namna unavyoweza kumsaidia huleta mabadiliko makubwa kwenu nyote wawili! Mwangalie kwa makini kijana wako na muulize anajisikiaje. Bofya kwenye uso mmojawapo hapa chini ili kupata taarifa zaidi:", - "Hopeful": "Mwenye matumaini", - "Resilient": "Mstahimilivu", - "Self-esteem": "Mwenye kujithamini", - "Teens have goals and dreams for the future – near and far!": "Vijana wana malengo na ndoto kwa ajili ya siku zijazo – za karibuni na za mbali!", - "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Muulize kijana wako kuhusu malengo na ndoto zake, mhimize afikirie kile anachokitaka kwa maisha yake ya baadaye, na shirikianeni kuweka mpango utakaowezesha kutimiza malengo na ndoto hizo.", - "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Vijana wastahimilivu wanaweza kukabiliana na hali ngumu, kubadilika kuendana na mazingira, na kutatua matatizo yanapojitokeza.", - "Praise your teen for overcoming difficulty and support them where you can.": "Msifie kijana wako kwa kushinda hali ngumu na msaidie pale unapoweza.", - "A teen’s self-esteem is how they think of themselves.": "Kujithamini kwa kijana ni jinsi anavyojifikiria yeye mwenyewe.", - "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Himiza awe na mtazamo chanya kuhusu yeye mwenyewe, kuwa mfano wa kuigwa kwa kutojifanyia mzaha au kujikosoa kila mara. Ujue uwezo wa kijana wako na msaidie kwenye udhaifu wake.", - "Lonely": "Mpweke", - "Anxious": "Mwenye wasiwasi", - "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Vijana wanaweza kujisikia upweke, hata wanapokuwa na watu wengine. Wanaweza kuhisi kama hawana mtu wa kuzungumza naye, kumwamini, au kushirikishana naye mambo mbalimbali.", - "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Muulize kijana wako anaendeleaje na jaribuni kutafuta pamoja njia mpya za kufurahisha ili kuwasiliana na marafiki na familia zao – hasa wakati wa zuio la kutotoka nyumbani.", - "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Wasiwasi ni hisia ya kawaida na inaweza kutusaidia kukabiliana na hali zinazoleta changamoto. Lakini wasiwasi mwingi kupita kiasi unaowazuia vijana kufanya mambo wanayoyapenda ni tatizo.", - "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Msaidie kijana wako kutambua mambo yanayomfanya kuwa na wasiwasi na shirikianeni kupanga namna anavyoweza kukabiliana na mawazo ya wasiwasi.", - "Doing a relaxation activity together can help!": "Kufanya pamoja shughuli ya kuburudisha kunaweza kusaidia!", - "Depressed": "Mwenye mfadhaiko", - "Self-harm": "Kujidhuru", - "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Kuhuzunika au kuwa na majonzi, kuwa na sununu, zote ni hisia za kawaida za kibinadamu. Mfadhaiko hutokea pindi hali hiyo inapoendelea kwa muda mrefu na kuathiri shughuli za kawaida za kila siku za kijana wako. Kijana wako anaweza kuhisi kutokuwa na matumaini na kukosa uwezo au kutokuwa na nia ya kubadilisha chochote.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Jaribu kupata msaada wa kitaalamu.", - "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Wakati mwingine vijana wanaweza kujidhuru kwa makusudi ili kukabiliana na hisia hasi kama kukasirika, kuona hatia, kukosa thamani, au kujichukia. Hali hii inaweza kusababishwa na wasiwasi au mfadhaiko.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Kama kijana wako yuko tayari kueleza jinsi kujidhuru kunavyomfanya ajisikie vizuri, unaweza kuanza kuelewa sababu za kufanya hivyo. Jaribu kupata msaada wa kitaalamu.", - "What does that mean?": "Je, hiyo inamaanisha nini?", - "How can you help?": "Je, unaweza kusaidiaje?", - "We all have negative thoughts sometimes.": "Wakati mwingine, sisi sote huwa na mawazo hasi.", - "\"I am a failure\"": "\"Mimi ni wa kushindwa\"", - "What to do?": "Nini cha kufanya?", - "Examples": "Mifano", - "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Mara nyingi, kujiambia mwenyewe au kumwambia kijana wako kuacha au kusema kinyume na mambo chanya hakusaidii.", - "\"I do everything perfectly\"": "\"Ninafanya kila kitu kikamilifu\"", - "Instead, you can ask:": "Badale yake, unaweza kuuliza:", - "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Je, wazo hilo linatekelezeka? Maelezo mengine ni yapi? \n- Ni nini kitatokea nikiendelea kuamini wazo hili? \n- Nimwambie nini rafiki kama ana wazo hili?", - "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Jambo hili ni gumu, lakini unajitahidi kadri ya uwezo wako, na tutashirikiana kutafuta ufumbuzi\"", - "\"It’s your fault\"": "\"Ni kosa lako\"", - "\"Let’s come up with a solution together\"": "\"Hebu tutafute ufumbuzi pamoja\"", - "\"I lost my job\"": "\"Nilipoteza kazi yangu\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Nilijifunza mengi kwenye kazi yangu – hiyo itanisaidia kupata nyingine\"", - "\"Nobody likes me\"": "\"Hakuna mtu anayenipenda\"", - "\"Last week I did have a great time with...\"": "\"Wiki iliyopita nilifurahi sana na...\"", - "\"Bad things always happen to me\"": "\"Mambo mabaya hunitokea kila wakati\"", - "\"This good thing happened the other day...\"": "\"Jambo hili zuri lilitokea siku fulani...\"", - "Change": "Badili", - "MAKE TIME": "TENGA MUDA", - "Set aside time to have a conversation without distractions.": "Tenga muda wa kufanya mazungumzo bila kubughudhiwa.", - "LISTEN": "SIKILIZA", - "Ask your teen questions and let them share their views without interrupting.": "Muulize kijana wako maswali na mwache atoe maoni yake bila kumkata kauli.", - "WORK TOGETHER": "SHIRIKIANENI", - "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Jadilini tatizo fulani, tafuteni ufumbuzi pamoja, na kila mmoja wenu afanye kile mnachokubaliana.", - "Thank your teen for sharing and highlight how it is helping you both.": "Mshukuru kijana wako kwa kukushirikisha mawazo yake na sisitiza jinsi kufanya hivyo kunavyowasaidia nyote wawili.", - "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Vuta pumzi ndefu.\n2. Angalia kama habari ina mantiki.\n3. Uliza amepata wapi habari hiyo.\n4. Hakiki kwa watu/vyanzo vingine unavyoviamini.\n5. Kama utasambaza habari hii, fikiria kama itawasaidia au kuwatisha tu watu.", - "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Kuna wakati sisi sote tunataka kuwaambia vijana wetu \"Lazima ufanye hivi, la sivyo... utapata tabu!\", lakini mara nyingi hiyo haiwafanyi wafuate sheria vizuri zaidi. \n\nBadala yake, unaweza kumsaidia kijana wako kufanya maamuzi mazuri kwa kuonyesha unamwamini na kuzungumza naye:", - "DISCUSS CONSEQUENCES": "JADILINI ATHARI", - "Ask \"If you do this, what could happen?\"": "Uliza \"Ukifanya hivi, ni nini kinachoweza kutokea?\"", - "PRAISE": "USIFIAJI", - "If something goes well, praise your teen!": "Kama kitu flani kimeenda vizuri, msifie kijana wako!", - "REFLECT TOGETHER": "TAFAKARI PAMOJA", - "If something goes wrong, ask \"How could you have done that differently?\"": "Kama kitu flani kimeenda vibaya, jiulize \"Ungeweza kufanya kwa namna gani tofauti?\"", - "START SMALL": "ANZA KIDOGO", - "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Mpatie kijana wako majukumu madogo kwanza. Kama hayo yataenda vizuri, unaweza kuongeza zaidi kuonesha kwamba unamuamini kijana wako.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Lengo lako lilikuwa kuzungumza na kijana wako mkiwa wawili. Tumeona kuwa umebofya @data.habit.spend_time.in_text_title – hongera sana kwa kukumbuka!", - "Your goal was to spend one-on-one time with your teen.": "Lengo lilikuwa kuwa na muda wa pamoja na kijana wako.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Hongera sana kwa kutafuta njia za kutatua changamoto zako. Nenda ukazijaribu. Uhusiano wako na kijana wako utaimarika zaidi na zaidi!", - "DAY – Do it every day": "SIKU – Fanya kila siku", - "PLAY – Let your teen choose the activity": "CHEZA – Mwache kijana wako achague shughuli", - "STAY – Give your teen all of your attention": "KAA – Mpe kijana wako usikivu wako wote", - "Why was this tip helpful for you?": "Kwa nini kidokezo hiki kilikufaa?", - "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" kilifaa kwa sababu...", - "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" kilifaa kwa sababu...", - "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" kilifaa kwa sababu...", - "Having a specific time to do this helps me to remember.": "Kuwa na muda maalum wa kufanya jambo hili hunisaidia kukumbuka.", - "With a routine, my teen and I can both keep our schedule free.": "Kwa kuweka utaratibu, mimi na kijana wangu tunaweza kupata muda wa ziada kwenye ratiba zetu.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Kutumia muda pamoja na kijana wangu kila siku, husaidia kujenga kuaminiana.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Naam, hata dakika 10 tu za kuwa pamoja huleta mabadiliko makubwa – kufanya hivyo hurahisisha kulipangia ratiba, sambamba na kazi yako na shughuli zako za nyumbani!", - "Letting my teen choose what to do builds their confidence.": "Kuwaruhusu vijana wangu wachague kitu cha kufanya huwajengea kujiamini.", - "If my teen chooses, s/he is more likely to want to spend time together.": "Kama kijana wangu akichagua kitu cha kufanya, kuna uwezekano mkubwa akataka tutumie muda pamoja.", - "Letting my teen choose shows that I care about his/her interests.": "Kumwacha kijana wangu achague kunaonyesha kuwa ninajali mambo anayoyapenda.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Kukubali maoni ya kijana wangu, kunaonyesha kuwa ninamsikiliza.", - "Saying something nice about my teen’s choice helps them feel valued.": "Kusema vizuri kuhusu chaguo la kijana wangu kunamsaidia kuhisi kuwa anathaminiwa.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kweli kabisa! Na vijana wetu wakichagua, wanahamasika pia kuwajibika kwenye nyanja nyingine za maisha yao.", - "By preventing interruptions, I show my teen that s/he is most important.": "Kwa kuacha kuingilia anapoongea, ninamuonyesha kijana wangu kuwa yeye ni muhimu zaidi.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Hata kama siwezi kujiunga na shughuli ya kijana wangu, kama michezo, bado ninaweza kumshabikia.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Ninapokuwa makini, ninajifunza mengi mno kuhusu mtazamo, uwezo na mambo anayoyapendelea kijana wangu.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ndiyo! Kama tutawapa vijana wetu usikivu wetu wote, kuna uwezekano mkubwa nao wakafanya hivyohivyo tutakapowaomba wafanye kitu wakati ujao!", + "You selected \"I would rather not answer\"": "Umechagua \"Nisingependa kujibu\"", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Sawa!\n\nKumbuka, ukijibu swali hili jibu lako litakuwa siri na litatusaidia kukupa maudhui yatakayokufaa.", + "Are there adults in your family?": "Je, kuna watu wazima kwenye familia yako?", + "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Programu hii inalenga wazazi wenye vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu!", + "Are there teens in your family?": "Je, kuna vijana kwenye familia yako?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Programu hii inalenga familia zilizo na vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu kwa ajili ya familia yako!", + "Are you sure you want to skip this question?": "Je, una uhakika unataka kuruka swali hili?", + "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Una uhakika unataka kuruka swali hili? Kumbuka, jibu lako litakuwa ni siri na litatusaidia kuelewa mahitaji yako ya malezi.", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Maudhui yaliyofunguliwa na maswali haya sasa yanapatikana kwenye @data.parent_centre.my_tips.location_text.", + "Share ideas, support each other!": "Shirikishana mawazo, saidiana kila mmoja!", + "Think Together": "Fikiria Pamoja", + "It's time to think together!": "Sasa ni muda wa kufikiria pamoja!", + "It's time to think!": "Ni muda wa kufikiria!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Hapa kuna ujuzi wa kujichukulia kwa wiki hii!\n\nZitumie nyumbani na utaweza kuzipata wakati wowote kwenye @global.parent_centre.", + "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Vuta pumzi ndefu.\n2. Angalia kama habari ina mantiki.\n3. Uliza amepata wapi habari hiyo.\n4. Hakiki kwa watu/vyanzo vingine unavyoviamini.\n5. Kama utasambaza habari hii, fikiria kama itawasaidia au kuwatisha tu watu.", + "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Kuna wakati sisi sote tunataka kuwaambia vijana wetu \"Lazima ufanye hivi, la sivyo... utapata tabu!\", lakini mara nyingi hiyo haiwafanyi wafuate sheria vizuri zaidi. \n\nBadala yake, unaweza kumsaidia kijana wako kufanya maamuzi mazuri kwa kuonyesha unamwamini na kuzungumza naye:", + "DISCUSS CONSEQUENCES": "JADILINI ATHARI", + "Ask \"If you do this, what could happen?\"": "Uliza \"Ukifanya hivi, ni nini kinachoweza kutokea?\"", + "If something goes well, praise your teen!": "Kama kitu flani kimeenda vizuri, msifie kijana wako!", + "REFLECT TOGETHER": "TAFAKARI PAMOJA", + "If something goes wrong, ask \"How could you have done that differently?\"": "Kama kitu flani kimeenda vibaya, jiulize \"Ungeweza kufanya kwa namna gani tofauti?\"", + "START SMALL": "ANZA KIDOGO", + "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Mpatie kijana wako majukumu madogo kwanza. Kama hayo yataenda vizuri, unaweza kuongeza zaidi kuonesha kwamba unamuamini kijana wako.", + "MAKE TIME": "TENGA MUDA", + "Set aside time to have a conversation without distractions.": "Tenga muda wa kufanya mazungumzo bila kubughudhiwa.", + "Ask your teen questions and let them share their views without interrupting.": "Muulize kijana wako maswali na mwache atoe maoni yake bila kumkata kauli.", + "WORK TOGETHER": "SHIRIKIANENI", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Jadilini tatizo fulani, tafuteni ufumbuzi pamoja, na kila mmoja wenu afanye kile mnachokubaliana.", + "PRAISE": "USIFIAJI", + "Thank your teen for sharing and highlight how it is helping you both.": "Mshukuru kijana wako kwa kukushirikisha mawazo yake na sisitiza jinsi kufanya hivyo kunavyowasaidia nyote wawili.", + "Hear a caregiver's testimonial": "Sikia ushuhuda wa mlezi", + "Read a caregiver's testimonial": "Soma ushuhuda wa mlezi", + "Why @local.workshop_data.title?": "Kwanini @local.workshop_data.title?", + "Hear @global.@local.topic_intro_name's message": "Sikia ujumbe wa @global.@local.topic_intro_name", + "Read @global.@local.topic_intro_name's message": "Soma ujumbe wa @global.@local.topic_intro_name", + "Today's steps": "Hatua za leo", + "Try it Together": "Jaribuni Pamoja", + "Let's practice together.": "Tufanye mazoezi pamoja.", + "What does that mean?": "Je, hiyo inamaanisha nini?", + "How can you help?": "Je, unaweza kusaidiaje?", + "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Kuelewa namna kijana wako anavyojisikia na namna unavyoweza kumsaidia huleta mabadiliko makubwa kwenu nyote wawili! Mwangalie kwa makini kijana wako na muulize anajisikiaje. Bofya kwenye uso mmojawapo hapa chini ili kupata taarifa zaidi:", + "Hopeful": "Mwenye matumaini", + "Resilient": "Mstahimilivu", + "Self-esteem": "Mwenye kujithamini", + "Teens have goals and dreams for the future – near and far!": "Vijana wana malengo na ndoto kwa ajili ya siku zijazo – za karibuni na za mbali!", + "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Muulize kijana wako kuhusu malengo na ndoto zake, mhimize afikirie kile anachokitaka kwa maisha yake ya baadaye, na shirikianeni kuweka mpango utakaowezesha kutimiza malengo na ndoto hizo.", + "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Vijana wastahimilivu wanaweza kukabiliana na hali ngumu, kubadilika kuendana na mazingira, na kutatua matatizo yanapojitokeza.", + "Praise your teen for overcoming difficulty and support them where you can.": "Msifie kijana wako kwa kushinda hali ngumu na msaidie pale unapoweza.", + "A teen’s self-esteem is how they think of themselves.": "Kujithamini kwa kijana ni jinsi anavyojifikiria yeye mwenyewe.", + "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Himiza awe na mtazamo chanya kuhusu yeye mwenyewe, kuwa mfano wa kuigwa kwa kutojifanyia mzaha au kujikosoa kila mara. Ujue uwezo wa kijana wako na msaidie kwenye udhaifu wake.", + "Lonely": "Mpweke", + "Anxious": "Mwenye wasiwasi", + "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Vijana wanaweza kujisikia upweke, hata wanapokuwa na watu wengine. Wanaweza kuhisi kama hawana mtu wa kuzungumza naye, kumwamini, au kushirikishana naye mambo mbalimbali.", + "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Muulize kijana wako anaendeleaje na jaribuni kutafuta pamoja njia mpya za kufurahisha ili kuwasiliana na marafiki na familia zao – hasa wakati wa zuio la kutotoka nyumbani.", + "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Wasiwasi ni hisia ya kawaida na inaweza kutusaidia kukabiliana na hali zinazoleta changamoto. Lakini wasiwasi mwingi kupita kiasi unaowazuia vijana kufanya mambo wanayoyapenda ni tatizo.", + "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Msaidie kijana wako kutambua mambo yanayomfanya kuwa na wasiwasi na shirikianeni kupanga namna anavyoweza kukabiliana na mawazo ya wasiwasi.", + "Doing a relaxation activity together can help!": "Kufanya pamoja shughuli ya kuburudisha kunaweza kusaidia!", + "Depressed": "Mwenye mfadhaiko", + "Self-harm": "Kujidhuru", + "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Kuhuzunika au kuwa na majonzi, kuwa na sununu, zote ni hisia za kawaida za kibinadamu. Mfadhaiko hutokea pindi hali hiyo inapoendelea kwa muda mrefu na kuathiri shughuli za kawaida za kila siku za kijana wako. Kijana wako anaweza kuhisi kutokuwa na matumaini na kukosa uwezo au kutokuwa na nia ya kubadilisha chochote.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Jaribu kupata msaada wa kitaalamu.", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Wakati mwingine vijana wanaweza kujidhuru kwa makusudi ili kukabiliana na hisia hasi kama kukasirika, kuona hatia, kukosa thamani, au kujichukia. Hali hii inaweza kusababishwa na wasiwasi au mfadhaiko.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Kama kijana wako yuko tayari kueleza jinsi kujidhuru kunavyomfanya ajisikie vizuri, unaweza kuanza kuelewa sababu za kufanya hivyo. Jaribu kupata msaada wa kitaalamu.", + "A teen sometimes does something because they:": "Wakati mwingine kijana hufanya jambo fulani kwa sababu:", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Anawasikiliza marafiki zake\n- Anataka kufanya mambo wanayofanya wengine\n- Anafikiria zaidi kuhusu 'sasa' kuliko 'baadaye'\n- Ana mihemko ya kimapenzi na anaona kwamba kuwa mwangalifu kunachosha\n- Hana wasiwasi kuhusu hatari – anaweza hata kupenda hatari\n- Ana uzoefu mdogo anaoutegemea\n- Yuko tayari kujaribu jambo fulani – bila kujali kitakachotokea", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kukumbuka mambo haya kunaweza kusaidia pindi kijana wako anapofanya uamuzi mbaya. Zungumza naye na tumia muda pamoja naye ili uweze kumsaidia kuchagua vyema wakati ujao!", + "Copy code": "Nakili msimbo", + "Copied!": "Imenakiriwa!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "Unaweza kuombwa kuwaonyesha namba hii watu watakaokusaidia katika safari yako ya @global.parent_app.", + "Last sync at: @local.sync_latest": "Imeoanishwa mara ya mwisho saa: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Kifaa hiki hakijawahi kulandanishwa. Landanisha kupata namba ya siri.", + "Sync now": "Landanisha sasa", + "Syncing...": "Inaoanisha...", + "What is your name or nickname?": "Jina lako au jina lako la utani ni nani?", + "What is your gender?": "Jinsia yako ni ipi?", + "Prefer not to say": "Ningependa nisiseme", + "Watch Together": "Angalia Pamoja", + "Let's watch a video together!": "Hebu tuangalie video pamoja!", + "Watch": "Angalia", + "Let's watch a video!": "Ngoja tuangalie video!", + "Welcome @fields.group_name": "Karibuni @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Tunafurahi kuwaona tena! Hebu tuanze na wimbo wa familia popote zilipo.", + "Let's Slow Down": "Twende polepole", + "How would you like to do this workshop?": "Je, ungependa kufanyaje kipindi hiki?", + "Coming soon": "Inakuja hivi punde", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Tutahitaji kushughulikia masuala mengine ya malezi kabla ya kuanza kufanya kazi kwenye @local.workshop_data.title.\n\nUnaweza kupata nyenzo muhimu kwenye @local.workshop_data.title kupitia @global.parent_centre.", + "My name": "Jina langu", + "@global.weekly_workshop day": "Siku ya @global.weekly_workshop", + "I do the @global.workshops:": "Ninafanya @global.workshops:", + "My group's name": "Jina la kikundi changu", + "My group is now doing the @global.workshop:": "Sasa kikundi changu kinafanya @global.workshop:", + "I am now doing the @global.workshop:": "Kwa sasa ninafanya @global.workshop:", + "These quick questions will fit this app to your needs.": "Maswali haya ya haraka yatapangilia programu hii kulingana na mahitaji yako.", + "Let’s start with a few questions about you and your family.": "Hebu tuanze na maswali machache kuhusu wewe na familia yako.", + "We would love to know your first name or nickname:": "Tungependa kujua jina lako la kwanza au jina lako la utani:", + "Are you a woman or a man?": "Je, wewe ni mwanamke au mwanaume?", + "Woman": "Mwanamke", + "Man": "Mwanaume", + "How old are you?": "Je, una umri gani?", + "Adults": "Watu wazima", + "Teens": "Vijana", + "Children": "Watoto", + "Babies": "Watoto wachanga", + "How many people are in your household?": "Je, kuna watu wangapi kwenye kaya yako?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Unaweza kufanya @global.weekly_workshops peke yako AU unaweza kualika wanafamilia wengine au marafiki wajiunge nawe – mtafundishana mengi. Uamuzi ni wako!", + "How would you like to do your @global.weekly_workshops?": "Je, ungependa kufanyaje @global.weekly_workshops zako?", + "Can you think of a name for your group?": "Je, unaweza kufikiria jina la kikundi chako?", + "Which day of the week would you like to do your @global.weekly_workshops?": "Je, ni siku gani ya wiki ungependa kufanya @global.weekly_workshops zako?", + "Monday": "Jumatatu", + "Tuesday": "Jumanne", + "Wednesday": "Jumatano", + "Thursday": "Alhamisi", + "Friday": "Ijumaa", + "Saturday": "Jumamosi", + "Sunday": "Jumapili", + "Great! We will unlock a new @global.workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Safi sana! Tutafungua @global.workshop mpya kwa kikundi chako kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", + "Great! We will unlock a new @global.workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Safi sana! Tutawafungulia @global.workshop mpya kila wiki. Hii itawasaidia kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", + "You can always change these settings in your @global.weekly_workshop_options.": "Wakati wote unaweza kubadilisha mipangilio hii kwenye @global.weekly_workshop_options.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Je, una hakika kuwa unataka kufungua vipindi vyote? Ukishazifungua, hautaweza kuzifunga tena", + "Unlock Workshops": "Fungua vipindi", + "Using the app together": "Kutumia programu hii pamoja", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Tunafurahi sana kuwaona!\n\nKwanza, ngoja tulisaidie kundi lenu liweze kuanza.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Kubalianeni pamoja kuhusu sheria zenu za msingi:\n* Je, tutakutana siku/muda upi kwa wiki?\n* Je, wakati wa shughuli zetu, ni nani atakayeshikilia simu?\n* Je, tutahakikishaje kuwa kila mtu anaweza kushiriki kwa uhuru?\n* Je, tufanyaje ili sisi sote tuhisi kuwa tunaheshimiwa?", + "You always can change your @global.workshop day and your group name in the @global.weekly_workshop_options.": "Wakati wote unaweza kubadilisha @global.workshop yako ya siku na jina la kikundi chako kwenye @global.weekly_workshop_options.", + "Some rules that other groups made:": "Baadhi ya sheria zilizowekwa na vikundi vingine:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Jumanne saa 1 jioni ni wakati wetu wa kuwa pamoja kwenye @global.parent_app\n* Peaneni zamu ya kushika simu (shughuli 1 kwa mtu mmoja)\n* Kubalianeni na uzoefu wa kila mmoja. Sisi sote tunatofautiana!\n* Peaneni zamu ya kuzungumza na kusikiliza\n* Mnaweza kuuliza maswali yoyote\n* Tunachoshirikishana ni siri yetu", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Tumia dakika 5-20 za muda wa pamoja na kijana wako mkiwa wawili, kila siku unayoweza wiki hii.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Kumbuka – kila unapoweza, jipumzishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Wazazi wengi wanapata changamoto za kuzungumza na vijana wao wakiwa wawili.\n\nZifuatazo ni changamoto kuu 8 wazazi walizotuambia kuwa wanazipata wanapopanga au wanapotumia muda pamoja na vijana wao wakiwa wawili. Kama ulipata changamoto mojawapo kati ya hizi au una wasiwasi kuwa itakutokea, ibofye ili kupata suluhisho linaloweza kutumiwa. Baadaye, unaweza kubofya na kujifunza changamoto nyingine.", "Did you have any challenges when trying to spend time with your teen?": "Je, ulipata changamoto zozote ulipojaribu kutumia muda na kijana wako?", - "What challenge did you have when trying to spend time with your teen?": "Ulipata changamoto gani ulipojaribu kutumia muda pamoja na kijana wako?", "I don’t have enough time.": "Sina muda wa kutosha.", "My teen does not want to spend time with me.": "Kijana wangu hataki kutumia muda pamoja na mimi.", "My teen only wants to watch TV or play on his/her phone.": "Kijana wangu anataka tu kutazama runinga au kuchezea simu yake.", @@ -1287,25 +1471,196 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Safi sana! Kwa njia hii, unaweza kuweka usikivu wako wote kwa kijana wako, ili ajisikie kuthaminiwa na kupendwa.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Vizuri sana! Unaweza kujaribu kutumia muda pamoja na kijana wako pindi watoto wengine wanapokuwa tayari wameenda kulala, au wanacheza nje.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Vizuri sana! Pengine mnaweza kutembea pamoja kwenda dukani au kwenda kutazama michezo, ili muweze kuzungumza bila watoto wengine kutaka uwasikilize.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako. Tumeona kuwa umebofya @data.habit.instruct_positively.in_text_title – hongera sana kwa kukumbuka!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Asante kwa kushirikisha wengine! Hongera kwa kujaribu kumpa kijana wako maelekezo chanya na kwa kujenga uhusiano chanya na kijana wako.\n\nKijana wako anastahili kusifiwa – kama WEWE pia!", - "Which of the tips helped you?": "Vidokezo vipi vilikusaidia?", - "GET REAL – Can your teen do what you are about to ask?": "TAZAMA UHALISIA – Je, kijana wako anaweza kufanya kile unachotaka kumwagiza?", - "GET POSITIVE – Use positive words and praise them!": "KUWA NA MTAZAMO CHANYA - Tumia maneno chanya na msifie!", - "GET CLEAR – Be clear and specific!": "ELEWEKA – Kuwa bayana na maalum!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Safi sana! Tunapowaagiza vijana wetu wafanye jambo linalotekelezeka, ni rahisi zaidi kwao kufaulu.", - "When we praise them, our teens feel encouraged to listen to us again!": "Tunapowasifia vijana wetu, wanahamasika kutusikiliza tena!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Safi! Tunapofikiria mapema maelekezo maalum ya kuwapa vijana wetu, inawawia rahisi sana kufuata maelekezo yetu!", + "DAY – Do it every day": "SIKU – Fanya kila siku", + "PLAY – Let your teen choose the activity": "CHEZA – Mwache kijana wako achague shughuli", + "STAY – Give your teen all of your attention": "KAA – Mpe kijana wako usikivu wako wote", + "Why was this tip helpful for you?": "Kwa nini kidokezo hiki kilikufaa?", + "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" kilifaa kwa sababu...", + "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" kilifaa kwa sababu...", + "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" kilifaa kwa sababu...", + "Having a specific time to do this helps me to remember.": "Kuwa na muda maalum wa kufanya jambo hili hunisaidia kukumbuka.", + "With a routine, my teen and I can both keep our schedule free.": "Kwa kuweka utaratibu, mimi na kijana wangu tunaweza kupata muda wa ziada kwenye ratiba zetu.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Kutumia muda pamoja na kijana wangu kila siku, husaidia kujenga kuaminiana.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Naam, hata dakika 10 tu za kuwa pamoja huleta mabadiliko makubwa – kufanya hivyo hurahisisha kulipangia ratiba, sambamba na kazi yako na shughuli zako za nyumbani!", + "Letting my teen choose what to do builds their confidence.": "Kuwaruhusu vijana wangu wachague kitu cha kufanya huwajengea kujiamini.", + "If my teen chooses, s/he is more likely to want to spend time together.": "Kama kijana wangu akichagua kitu cha kufanya, kuna uwezekano mkubwa akataka tutumie muda pamoja.", + "Letting my teen choose shows that I care about his/her interests.": "Kumwacha kijana wangu achague kunaonyesha kuwa ninajali mambo anayoyapenda.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Kukubali maoni ya kijana wangu, kunaonyesha kuwa ninamsikiliza.", + "Saying something nice about my teen’s choice helps them feel valued.": "Kusema vizuri kuhusu chaguo la kijana wangu kunamsaidia kuhisi kuwa anathaminiwa.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kweli kabisa! Na vijana wetu wakichagua, wanahamasika pia kuwajibika kwenye nyanja nyingine za maisha yao.", + "By preventing interruptions, I show my teen that s/he is most important.": "Kwa kuacha kuingilia anapoongea, ninamuonyesha kijana wangu kuwa yeye ni muhimu zaidi.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Hata kama siwezi kujiunga na shughuli ya kijana wangu, kama michezo, bado ninaweza kumshabikia.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Ninapokuwa makini, ninajifunza mengi mno kuhusu mtazamo, uwezo na mambo anayoyapendelea kijana wangu.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ndiyo! Kama tutawapa vijana wetu usikivu wetu wote, kuna uwezekano mkubwa nao wakafanya hivyohivyo tutakapowaomba wafanye kitu wakati ujao!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Kuwa mzazi ni kugumu sana. Wakati mwingine inaonekana kama watoto wetu hawatusikilizi kabisa.\n\nLakini sayansi inaonyesha kwamba kutumia dakika chache tu kila siku kutumia muda wa pamoja na kijana wako mkiwa wawili husaidia kujenga uaminifu na upendo.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Muda wa kuzungumza wawili ni ule ambao wewe unamzingatia yeye, bila kutazama runinga au kutumia simu. Hebu mruhusu aongoze kile mnachofanya au mnachozungumzia.\n\nNi jambo zuri zaidi kama utaweza kufanya hivyo kwa dakika ishirini kwa siku, lakini hata dakika tano kwa siku ni jambo zuri sana.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Habari!\n\nMada yetu ya leo inahusu kuzungumza na watoto wetu mkiwa wawili.\n\nNi muhimu kutumia muda tukiwa na watoto wetu ili waweze kutuelewa, na sisi kupata fursa ya kuwaelewa.\n\nKumbuka, familia inayoelewana vizuri huishi kwa utulivu.", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Hongera kwa kufanya jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Kutumia muda pamoja na kijana wako husaidia kujenga kuaminiana kati yenu.\n\nEndelea na safari yako ya @global.parent_app sasa – wewe na familia yako mtaona matokeo mazuri sana.", + "First @global.weekly_workshop!": "@global.weekly_workshop ya kwanza!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Halo @fields.user_name. @local.workshop_data.in_text_title iko tayari kwa ajili yako.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Habari @fields.group_name. @local.workshop_data.in_text_title iko tayari kwa ajili yenu.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Asante kwa kutumia @global.parent_app na kujitolea kwa dhati katika malezi yako.\n\n@local.workshop_data.in_text_title yako iko tayari kwa ajili yako!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Haitachukua muda mrefu, na utapata taarifa muhimu sana.\n\nHongera kwa kujaribu kuwa mzazi bora. Kesho, utaweza kupata kipindi kipya.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", + "Let's think of ways to spend one-on-one time with your teen.": "Hebu tufikirie njia za kutumia muda wa pamoja na kijana wako mkiwa wawili.", + "What could you do to spend one-on-one time with your teen?": "Je, unaweza kuutumiaje muda wa pamoja na kijana wako mkiwa wawili?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Je, unahisi kama HUNA MUDA na umechoka sana? Kumbuka pia kufikiria mambo yasiyotumia muda wa ziada.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Unaweza kuchukua muda kuzoea kutumia muda wa pamoja wawili, lakini kadri utakavyofanya hivyo ndivyo itakavyokuwa rahisi zaidi!\n\nWewe ni mzazi wa kustaajabisha kwa kujaribu jambo hili.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufurahisha. Halafu vuta pumzi ndefu ili kujisikia vizuri.\n\nKumbuka, unapata @global.parent_point kila unapojitunza – wewe ni mtu muhimu!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Mawazo kwa ajili ya muda wa muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja wawili\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Shughuli za kujithamini\n* Mawazo kwa ajili ya muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Shirikishaneni mawazo!\n\nJe, ni mambo gani unayoweza kuyafanya ili kutumia muda wa pamoja na vijana wako mkiwa wawili?\n\nJe, unahisi kama HUNA MUDA na umechoka sana? Fikiria mambo ya kufanya wakati wa kutumia muda wa pamoja yasiyotumia muda wa ziada, kama kutembea pamoja kwenda dukani.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Mnaweza kuchukua muda kuzoea kuzungumza wawili, lakini kadri mtakavyofanya hivyo ndivyo itakavyokuwa bora zaidi!\n\nNyinyi ni wazazi wazuri sana kwa kujaribu jambo hili.", + "DAY - Try to do it every day": "SIKU – Jaribu kufanya hivyo kila siku", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Tafuta dakika 5 (au zaidi!) kila siku wakati kijana wako hana kitu kingine anachotaka kufanya.", + "PLAY - Let your teen choose": "CHEZA – Mwache kijana wako achague", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Mwambie kijana wako kwamba ungependa kutumia muda pamoja naye na kwamba anaweza kuchagua cha kufanya au cha kuzungumzia. Mwanzoni, anaweza kuona kuwa hili ni jambo la ajabu, lakini baadaye atafurahia muda huu wa kuwa na wewe!", + "STAY - Focus on your teen": "KAA – Mzingatie kijana wako", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Zima runinga na weka simu kando. Mtazame kijana wako. Fanya ishara kwa kichwa au sema \"ndiyo\" ili kuonyesha kuwa unammakinikia. Kubali anachosema bila kumhukumu.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Muda wa pamoja na kijana wako mkiwa wawili unaweza kukufurahisha wewe pia! Unaweza hata kukupunguzia msongo wa mawazo.", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Tunajivunia sana wewe. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri. Wewe ni mzuri.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Sisi tunajivunia sana nyie. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri sana. Wewe ni mzuri sana.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye malezi.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye @global.parent_app.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Habari zenu?\n\nMada ya leo inahusu usherehekeaji na hatua zinazofuata.\n\nLimekuwa jambo zuri sana na la kufurahisha kuwa na wewe kwenye safari hii. Leo tunasherehekea safari yetu pamoja.\n\nLeo tunasherehekea mafunzo yote tuliyojifunza kwa muda wote.", + "Today you will celebrate, look back and look ahead:": "Leo utasherehekea, kuangalia tulikotoka na kufikiria yajayo:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Tafakari & majadiliano\n* Nyenzo: Jinsi ya kusaidiana\nKUTANA – ITA – TUMA UJUMBE – SHIRIKISHA\n* Msaada wa kupanga", + "Today you celebrate and reflect on your experiences.": "Leo tutasherehekea na kutafakari kuhusu uzoefu uliyopitia.", + "End of programme check-in": "Mwisho wa kuingia kwenye programu", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Umekuwa ukitumia @global.parent_app kwa miezi kadhaa iliyopita, lakini kumlea kijana ni mchakato wa muda mrefu zaidi! Maswali yanayofuata kuhusu uzoefu wako wa malezi yatatusaidia kutathmini malezi yako.\n\nKuwa mkweli. Kumbuka kuwa mamilioni ya wazazi wanahisi kama unavyohisi, na sote tunastahili kusaidiwa. Hauko peke yako!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Inaonekana tayari umemaliza mwisho wa kuingia kwenye programu. Sasa unaweza kuruka shughuli hii.", + "Let's talk about what has changed.": "Hebu tuzungumzie kilichobadilika.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Jadilini pamoja:\n* Je, ni nini kimebadilika kwenye familia yako?\n* Je, umefanya kitu gani unachokionea fahari?\n\nKumbukeni kusifiana na kutiana moyo!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Pangeni jinsi mtakavyosaidiana siku zijazo.\n\nMnaweza kutumia mawazo kutoka familia nyingine, au kubuni yenu wenyewe!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Wewe na familia yako mmejifunza mengi. Hebu tufikirie hali ilivyokuwa na tuone kilichobadilika.", + "Reflect": "Tafakari", + "Listen and reflect": "Sikiliza na utafakari", + "Read and reflect": "Soma na utafakari", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Fumba macho na chukua pumziko.\n\nFikiria maisha ya familia yako yalivyokuwa kabla ya kuanza safari yako kwenye programu hii.\n\nJikumbushe ujuzi uliojifunza:\n* Kujithamini\n* Muda wa kutumia pamoja wawili\n* Kusifia\n* Maelekezo chanya\n* Kudhibiti msongo wa mawazo\n* Kutengeneza bajeti ya familia\n* Sheria\n* Njia za kufanya athari nyepesi\n* Kutatua matatizo\n* Usalama wa vijana\n* Kushughulikia hali ya matatizo\n\n Tafakari kuhusu safari – je, ilikuwaje kwako:\n* Kushirikishana na wengine mawazo na uzoefu\n* Kutafakari na kujifunza kutokana na Hadithi\n* Kutumia ujuzi kwa kijana wako\n\nJe, kulikuwa na mabadiliko yoyote kwako na kwa familia yako?\n\nJe, unahitaji nini ili kuendelea kutumia ujuzi?", + "MEET": "KUKUTANA", + "Keep meeting regularly to give each other parenting support.": "Endeleeni kukutana mara kwa mara ili kupeana msaada wa malezi.", + "CALL": "KUPIGIANA SIMU", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Kuweni 'marafiki wa malezi' wanaopigiana simu pindi mmoja wenu anaposikitika au asipojua cha kufanya.", + "TEXT": "KUTUMIANA UJUMBE WA MAANDISHI", + "Text each other every week to share what you’ve done well.": "Tumianeni ujumbe wa maandishi kila wiki ili kushirikishana kile mlichofanya vizuri.", + "SHARE": "KUSHIRIKISHANA", + "Share @global.parent_app and help other families start their journey.": "Sambaza @global.parent_app ili usaidie familia nyingine kuanza safari yao.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.\n\nJe, athari ipi ingesaidia hapa?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Athari hazifanani sana na adhabu: athari huwapa vijana wetu nafasi ya kujifunza kuwajibika kwa matendo yao.\n\nVilevile, athari zinadhibitiwa zaidi NA zina ufanisi zaidi kuliko kuchapa au kupiga kelele!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanapigania simu.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanagombania simu.\n\nJe, njia ipi ya athari ingesaidia hapa?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Athari hufanikiwa zaidi kama utazijadili na kukubaliana mapema pamoja na vijana wako kabla ya kuzitumia.\n\nNa: si kila athari ni hasi… Mnaweza pia kukubaliana kuhusu athari NJEMA kwa matendo MEMA ili kujenga zaidi tabia chanya!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.", + "What consequence would help here?": "Je, athari ipi ingesaidia hapa?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.\n\nJe, njia ipi ya athari chanya ingesaidia hapa?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Zoezi lako la nyumbani la wiki hii litakuwa kuzungumza na kijana wako kuhusu athari MOJA hasi na athari MOJA chanya.\n\nAthari zinapaswa kuwa za:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Tabia Hasi: Kuja nyumbani baada ya muda uliokubaliwa.\n\nMalipo Hasi: Hataenda kuwatembelea marafiki siku inayofuata.\n\nTabia Hasi: Kuongea kwa jeuri.\n\nAthari Hasi: Kuandika barua ya kuomba msamaha.\n \nTabia Chanya: Kusaidia kufanya manunuzi.\n\nAthari Chanya: Kuongezewa dakika 30 za kufanya shughuli yoyote aipendayo.\n\nTabia Chanya: Kusaidia kuwalea wadogo zake.\n\nAthari Chanya: Kuongezewa muda wa saa moja ya kuwa na marafiki mwishoni mwa wiki.", + "Our actions have consequences: Some consequences happen naturally (“if you break something, you can’t use it anymore”). Other consequences we set as a family to motivate us to follow the rules (“if you come home late, you can’t go out with friends tomorrow”).\n\nHOW you set and use consequences together matters.\n\nGetting consequences right helps teens behave better and makes family life calmer...": "Angalizo: Matendo yetu yana matokeo: Baadhi ya matokeo yanatokea kwa kawaida (\"kama ukivunja kitu, huwezi kukitumia tena\"). Adhabu nyepesi nyingine tunaweka kama familia kutuhamasisha kufuata sheria (\"kama ukichelewa kurudi nyumbani, hautatoka na marafiki kesho\"). \n\nJINSI mnavyoweka na kutumia adhabu kwa pamoja ni muhimu.\n\nKuweka adhabu sahihi inasaidia kijana kuwa na tabia njema na kufanya maisha ya familia kuwa na utulivu...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Habari, kila mmoja.\n\nMaada ya leo ni adhabu tulivu.\n\nNi muhimu kwamba tunapotambulisha adhabu kwa vijana wetu tuwahusishe, lakini pia ni muhimu kwamba sisi ni watulivu tunapotambulisha adhabu.\n\nHiyo itatusaidia kukubaliana kwenye kutambulisha adhabu tulivu kwa vijana wetu na vijana wetu watazikumbuka kirahisi wakiwa wameshirikishwa na kwamba itawafanya kuwa wawajibikaji.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Mara nyingi vijana huvunja sheria. Wakati wa kukua ni wakati mgumu pindi wanapojifunza kwamba wao ni nani.\n\nKwa bahati nzuri, kuna njia za kumuadabisha kijana wako bila kukasirika au kutumia nguvu… na zinafanya kazi vizuri!\n\nKuweka athari husaidia kuwafundisha watoto wetu kuwajibika kwa kile wanachofanya – kiwe kizuri na kibaya.\n\nHapa kuna mifano kadhaa – hebu fikiria kuwa wewe ndiye mzazi:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Athari nyepesi zinapaswa kuwa...\n\nHAKI: Si kali sana na zinaweza kufanyika\n\nHARAKA: Zifanywe haraka iwezekanavyo\n\nTHABITI: athari zilezile kila wakati", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Panga athari nyepesi kwa vijana wako wanapogombana wakati wa chakula cha usiku.\nKumbuka athari zinatakiwa kuwa\n\nHAKI – HARAKA – THABITI", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Je, wewe na kijana wako mmeweza kupata athari moja chanya na athari moja hasi ya kurekebisha tabia?", + "Complete the @global.workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Maliza @global.workshop hiki halafu ujaribu kujadili pamoja na kijana wako ili kupata athari moja chanya na athari moja hasi ya kurekebisha tabia.", + "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.": "Habari @fields.user_name! Leo tunasherehekea miezi miwili ya kutumia @global.parent_app.\n\nUnafanya vizuri! @global.workshop ya wiki hii itakusaidia kujua nini cha kufanya wakati kijana wako hafuati sheria za nyumbani.", + "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.": "Habari @fields.group_name! Leo tunasherehekea miezi miwili ya kutumia @global.parent_app.\n\nUnafanya vizuri! @global.workshop ya wiki hii itakusaidia kujua nini cha kufanya wakati kijana wako hafuati sheria za nyumbani.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next @global.workshop to get another parenting tool!": "Ni jambo zuri sana kwamba umekuwa ukitumia @global.parent_app. Tayari umeshapata nyenzo 6 za malezi!\n\nNenda kwenye @global.workshop inayofuata ili kupata nyenzo nyingine ya malezi!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Athari nyepesi humsaidia sana kijana wako kufuata sheria vizuri – zijaribu kabla ya kuendelea!\n\nHongera kwa kujitoa kwa dhati kwa ajili ya familia yako.", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn useful skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop mpya ya kukusaidia kupumzika na kujifunza ujuzi muhimu!", + "Why did giving a consequence this way not work well?": "Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "Ndiyo, mwitikio mkubwa kama huo ulimfanya kila mtu kukasirika zaidi na kusikitika.", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Mifano ya athari\n* Nyenzo: Jinsi ya kufanya athari nyepesi \nELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Mifano ya athari \n* Nyenzo: Jinsi ya kutoa athari \n* ELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari \n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Jadilini pamoja:\n* Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver alikuwa amekasirika", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver hakumruhusu @global.w_consequence_teen_boy_1 kujieleza", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Athari haikujadiliwa kabla na @global.w_consequence_teen_boy_1", + "The consequence was too strong": "Athari ilikuwa ngumu mno", + "Giving a consequence this way did not work well because...": "Kufanya athari kwa njia hii haikufanikiwa vizuri kwa sababu...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Jadilini pamoja:\n* Je, vijana wako wanavunja sheria gani?\n* Je, unaweza kutumia athari zipi kwa kila sheria maalum iliyovunjwa?\n\nAthari zinapaswa kuwa ya:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati).\n\nSifianeni na kutiana moyo – tunaweza kupeana nguvu!", + "Let's talk about this story": "Hebu tuzungumzie hadithi hii", + "Why did using a consequence work well this time?": "Kwa nini amri ya kufanya athari ilifanikiwa vizuri mara hii?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake walijadili kuhusu athari pindi wote walipokuwa wametulia", + "They agreed on consequences together": "Walikubaliana pamoja kuhusu athari", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver aliitikia kwa utulivu lakini kwa msimamo pindi @global.w_consequence_teen_boy_1 alipovunja sheria", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver alimsikiliza @global.w_consequence_teen_boy_1", + "The consequence was realistic and appropriate": "Athari ziikuwa sahihi na zinazotekelezeka", + "Using a consequence worked well this time because...": "Kufanya athari kulifanikiwa vizuri mara hii kwa sababu...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Jinsi unavyoweka athari ni jambo muhimu. Kumbuka, unapomhusisha kijana wako, kwa kawaida mambo huenda vizuri!", + "EXPLAIN": "ELEZA", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Hakikisha nyote wawili mmetulia. Vuta pumzi mara kadhaa. Mweleze kijana wako kwa nini una wasiwasi na tabia zake.\n\nEleza kwa nini sheria hiyo ilikuwa muhimu. Unaweza kumshirikisha hisia zako – si vibaya kusema umesikitika.", + "AGREE": "KUBALI", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Panga na kijana wako athari za kufuata sheria na kutofuata sheria.\n\nMwombe atoe maoni yake. Zungumzeni hadi mtakapokubaliana kuhusu kitu halisi.\n\nWeka athari za KUTOFUATA sheria na upendeleo pindi WANAPOFUATA sheria.", + "ACT": "TENDA", + "When your teen follows the rule, give praise and privileges!": "Kijana wako anapofuata sheria, msifie na mpe upendeleo!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Atahisi kuheshimiwa na kuthaminiwa. Kumbuka: Kadri unavyomsifia, ndivyo atakavyozidi kuonyesha tabia hiyo nzuri!", + "When your teen does not follow the rule, follow through with the consequence.": "Kijana wako asipofuata sheria, amuru afanye athari.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Kijana wako anapovunja sheria, amuru kwa utulivu afanye athari. Athari ziwe za HAKI (zisiwe kali sana), za HARAKA (zitolewe papo hapo) na THABITI (ziwe zilezile kila wakati).", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Je, athari gani nyepesi ambazo unaweza kuweka kwa vijana wako wanapogombana wakati wa chakula cha usiku?\n\nKumbuka malipo yanatakiwa kuwa ya:\nHAKI – HARAKA – THABITI", + "Not seeing any friends for a month": "Hakuna kumtembelea rafiki yeyote kwa mwezi mmoja", + "This may be hard to do for you and also too harsh!": "Kufanya hivyo kunaweza kuwa vigumu na ukatili kwako!", + "Cancelling their birthday plans in a month’s time": "Kufuta mipango yao ya kusherehekea siku ya kuzaliwa kwa muda wa mwezi mmoja", + "This is too far in the future, and too harsh as well!": "Hii ni mbali sana, na ni ukatili mno!", + "No TV this evening": "Hakuna kuangalia runinga jioni ya leo", + "Perfect, this sounds fair and can be done straight away": "Vizuri sana! Hiyo inaonekana kuwa ni haki na inaweza kufanywa mara moja", + "You’ve completed your @global.workshop. \n\nThe next @global.workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Umemaliza @global.workshop ya wiki hii.\n\n@global.workshop inayofuata itawasheherekea wote, na kuwasaidia kupanga mipango ya siku zijazo.\n\nKwa nini msipange kufanya sherehe ya chakula pamoja, na kuandaa muziki kama mtapenda kucheza!", + "You’ve completed your @global.workshop. \n\nThe next @global.workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Umemaliza @global.workshop ya wiki hii.\n\n@global.workshop ya wiki ijayo tutakusherehekea, na unaweza kuchagua msaada unaoutaka ili kusonga mbele.\n\nUnaweza kuandaa sherehe – kitu unachopenda kula, au muziki unaopenda kusikiliza!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Chagua hali mojawapo kati ya hizi pamoja na kijana wako (au chagua mwenyewe!). Angalieni katuni, halafu mjadili pamoja mtafanya nini kama hali hiyo itatokea kwa rafiki au kwenye familia yenu.\n\nNa kumbukeni: VUTA PUMZI – SIKILIZA – FIKIRI", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Kila familia hukabiliwa na hali ya hatari. Tunapojiandaa pamoja na kujua mahali pa kupata msaada KABLA ya kutokea kwa jambo baya, tunaweza kuishinda hali yoyote ya hatari.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Habari zenu?\n\nMada ya leo inahusu kushughulikia hali ya hatari.\n\nHali ya hatari inaweza kutokea mahali popote. Hali ya hatari inaweza kutokea wakati wowote. Kwa hiyo, kama familia, ni muhimu kuwa na mipango ya kukabiliana na hatari kwa ajili ya mwanafamilia yeyote atakayejikuta kwenye hali ya hatari.\n\nNi muhimu kuwa na mipango ili kila mwanafamilia ahisi kulindwa.\n\nUnaposhughulikia hali ya hatari, kumbuka kupumzika, kupumua, na kutulia. Kufanya hivyo kutakusaidia kushughulikia hali ya hatari vizuri zaidi.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Inasaidia sana kufanyia mazoezi namna ya kukabiliana na hali ya matatizo kabla haijatokea.\n\nHebu angalia nyakati hizi tano za matatizo katika familia. Chukulia kwamba wewe ni mzazi: Ungefanya nini?\n\nKumbuka: VUTA PUMZI – SIKILIZA – FIKIRI", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Tatizo la kwanza: @global.w_crisis_teen_boy_2 amepigana shuleni", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Sijawahi kufanya hivi. Na sasa watanifukuza.\"", + "How could you respond to @global.w_crisis_teen_boy_2?": "Utafanyaje kwa @global.w_crisis_teen_boy_2?", + "Crisis 2: @global.w_crisis_teen_girl_2 gets pregnant": "Tatizo la 2: @global.w_crisis_teen_girl_2 amepata ujauzito", + "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, nina aibu sana. Sijui la kufanya\"", + "How could you respond to @global.w_crisis_teen_girl_2?": "Je, unaweza kumjibu vipi @global.w_crisis_teen_girl_2?", + "Crisis 3: @global.w_crisis_teen_boy_1 makes a girl pregnant": "Tatizo la 3: @global.w_crisis_teen_boy_1 kumpa msichana mimba", + "@global.w_crisis_teen_boy_1: \"I don’t want to have a baby\"": "@global.w_crisis_teen_boy_1: \"Sitaki kuwa na mtoto\"", + "How could you respond to @global.w_crisis_teen_boy_1?": "Je, unaweza kumjibu vipi @global.w_crisis_teen_boy_1?", + "Crisis 4: Someone in the family may get sick": "Tatizo la 4: Mmoja ya wanafamilia anaweza kuwa mgonjwa", + "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Vipimo vimeonesha nina VVU. Ninaogopa, nitakufa\"", + "How could you respond in this situation?": "Je, unafanyaje kwenye hali hii?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Tatizo la Tano: @global.w_crisis_teen_girl_1 anashinikizwa kufanya ngono na mpenzi wake", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Kwa kweli sikutaka kabisa kufanya hivyo. Sasa nitapata mimba au nitaumwa. @global.w_crisis_female_caregiver, ninaogopa sana...\"", + "How could you respond to @global.w_crisis_teen_girl_1?": "Je, utafanyaje kwa @global.w_crisis_teen_girl_1?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Kumbukeni kusaidiana na kutiana moyo. Ni vigumu kuendelea kutulia na kusikilizana kwenye hali ya tatizo – tunawaonea fahari.", + "Have you discussed with your teen what you would do in a crisis situation?": "Je, umejadili na kijana wako kuhusu nini mnachoweza kufanya katika kipindi cha matatizo?", + "Crisis Examples": "Mifano ya Hali ya Tatizo", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Wewe ni mzazi makini. Jipongeze - haya ni mafanikio makubwa sana!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @local.workshop_data.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", + "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.": "Habari @fields.user_name! janga linaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.": "Habari @fields.group_name! janga linaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next @global.workshop to explore how you can do this together with your teen.": "Hatujui lini matatizo yanaweza kutokea, lakini TUNAWEZA kujiandaa!\n\nAnza @global.workshop cha wiki ijayo kwa kutafuta jinsi gani unaweza kufanya hii pamoja na kijana wako.", + "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kesho @global.parent_app @global.workshop ya mwisho itakuwa tayari kwa ajili yako. \n\nJaribu kumaliza @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Kwa namna hiyo unaweza kumaliza vidokezo vyote vya ujuzi wa malezi na kuamua nini cha kufanya baada ya hapo!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop ya mwisho ili kutafakari kuhusu safari yako kwenye @global.parent_app na kile unachoweza kufanya baadaye!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ndiyo, kwa hakika @global.w_crisis_female_caregiver alitumia ujuzi huo wote – na wewe pia unaweza!", + "All these skills can help in a crisis.": "Ujuzi wote huu unaweza kusaidia kwenye hali ya hatari.", + "Every small thing you do matters. We hope you are proud of yourself too.": "Kila jambo dogo unalolifanya ni la muhimu. Tunatumaini kuwa unajionea fahari pia.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano\n* Hadithi & majadiliano\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari\n* Hadithi & tafakari\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver wake! Jambo hili linaweza kuwatokea wavulana na wasichana.", + "What skills did @global.w_crisis_female_caregiver use?": "Je, @global.w_crisis_female_caregiver alitumia ujuzi upi?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_boy_1 na @global.w_crisis_male_caregiver_1 wake!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "Je, @global.w_crisis_male_caregiver_1 alitumia ujuzi upi?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Mgogoro unaweza kutufanya tukasirike au tujione wanyonge. Lakini huo ndio wakati hasa ambao vijana wetu wanatuhitaji sisi. Tuvute pumzi, tusikilize na kufikiri.", + "BREATHE": "VUTA PUMZI", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Tulia. Jiulize 'kijana wangu anahitaji nini sasa hivi'", + "LISTEN": "SIKILIZA", + "Tell them you are there for them and love them.": "Mwambie upo kwa ajili yake na mpende.", + "THINK": "FIKIRI", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Zungumza na kijana wako. Kitu gani kinaweza kusaidia kwenye hali hiyo? Unaweza kutakiwa kupanga mipango ya haraka sasa, halafu mipango ya muda mrefu baadaye.", + "You can be proud of yourself for exploring ways to get help!": "Jionee fahari kwa kutafuta njia za kupata msaada!", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Zoezi la nyumbani la wiki hii ni kumpa kijana wako maelekezo chanya.\n\nKumbuka – KUTOA MAELEKEZO YANAYOTEKELEZEKA, KUWA NA MTAZAMO CHANYA, KUELEWEKA = KUPATA KILE HASA UNACHOKITAKA (kadri ya uwezo wa kijana!)", "Did you have any challenges?": "Je, ulipata changamoto zozote?", - "What challenge did you have?": "Je, ulipata changamoto gani?", "My teenager did not want to follow the instruction.": "Kijana wangu hakutaka kufuata maagizo.", "I did not find time to spend one-on-one time with my teen.": "Sikupata muda wa kutumia pamoja na kijana wangu tukiwa wawili.", "I gave a negative instead of a positive instruction.": "Nilitoa maagizo hasi badala ya maagizo chanya.", "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.": "Nilimfokea kijana wangu wakati alipoonesha tabia hasi, badala ya kumpa maelekezo chanya ya nini anapaswa kufanya.", "Top @local.number_of_challenges challenges other parents experience:": "Changamoto kuu @local.number_of_challenges ambazo wazazi wengine wanazopitia:", "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!": "Najua; Watoto wetu wanahitaji muda wa kujifunza kufuata maelekezo. Kuwa na subira, jaribu tena, na ukumbuke kuwasifu kila wakati wanapofuata maelekezo!", - "Do you want to try one of the following things?": "Je, unataka kujaribu mojawapo ya mambo yafuatayo?", "Think of a time each day that I can spare five minutes or a bit more time.": "Fikiria kutenga muda wa dakika tano au zaidi kila siku.", "Find a chore that we could do together in a fun way.": "Tafuta kazi ya nyumbani ambayo tunaweza kufanya pamoja kwa namna ya kufurahisha.", "Ask my teen or someone else to help me with a chore, so I have some extra free time.": "Namuomba kijana wangu au mtu mwingine kunisaidia kuifanya kazi ya nyumbani, ili niwe na muda kidogo wa ziada.", @@ -1314,532 +1669,468 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Vizuri sana! Kwa kushirikiana kutekeleza majukumu, utakuwa na muda zaidi wa kufanya jambo la kufurahisha na kijana wako – ni muhimu sana!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "Ndiyo, inachukua muda kuzoea kutoa maelekezo chanya – inafaa kujaribu tena! Fikiria tabia ambayo ungependa kuona kijana wako akizidi kuifanya na fikiria namna chanya za kutoa maagizo hayo!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Ni vigumu kutoa maelekezo tukiwa bado tumekasirika. Jaribu kutafuta muda utakaokuwa umetulia ili kutoa maelekezo chanya kwa kijana wako.\n\nKatika warsha inayofuata ya @global.weekly_workshop, tutazungumzia zaidi namna tunavyoweza kudhibiti hisia zetu! Unaweza kupata shughuli zaidi za kujipumzisha kwenye @data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba. Tumeona kuwa umebofya @data.habit.money.in_text_title – hongera sana kwa kukumbuka!", - "Your goal was to make a family budget and savings plan.": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Asante kwa kushirikisha uzoefu wako! Hongera sana kwa kufikiria jinsi unavyoweza kupanga bajeti na kuweka akiba na familia yako. Kufanya hivyo kutakusaidia sana kuweza kufikia malengo ya familia yako.\n\nKwa pamoja, mnaweza kufanikisha mambo mengi sana mazuri!", - "make a budget together with their family": "kutengeneza bajeti pamoja na familia yao", - "Did you have any challenges when making your budget together?": "Je, mlipata changamoto zozote mlipokuwa mnatengeneza bajeti pamoja?", - "What whas difficult for you about making your budget together?": "Je, jambo gani lilikuwia gumu wakati wa kutengeneza bajeti yenu pamoja?", - "I did not want to tell my family how much I earn.": "Sikitaka kuwaambia familia yangu kiasi gani huwa napata.", - "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.": "Sio lazima kuwaambia kiwango halisi cha kipato chako; unaweza kuwaambia makadirio. Unaweza kusema, \"Katika kaya hii, tunapata @global.currency@global.monthly_income_estimate kila mwezi\" badala ya, \"Ninapata @global.currency@global.monthly_income_precise\".", - "When budgeting, we could not agree on what should fall under needs and what should fall under wants.": "Wakati wa kutengeneza bajeti, hatukuweza kukubaliana kitu gani kiwe mahitaji na kitu gani kiwe matamanio.", - "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.": "Wakati mwingine, matamanio na mahitaji ya watu hutofautiana. Kuyazungumzia pamoja hukusaidia wewe na kijana wako kuelewana, kuheshimu tofauti zenu, na kutafuta mnapoweza kuafikiana.", - "I did not understand what to do.": "Sikuelewa nini cha kufanya.", - "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Nasikitika kusikia hili. Najua inaweza kuwa vigumu! Kwa nini tusipitie tena? Kijana wako au wanafamilia wengine wanaweza kujiunga na kukusaidia!", - "My teen did not want to do the budgeting with me.": "Kijana hakutaka kupanga bajeti na mimi.", - "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Jaribu kwanza kupanga bajeti na watu wazima wengine katika familia yako. Kijana wako anaweza kuvutiwa na kile mnachofanya.\n\nKutengeneza bajeti kunaweza kuonekana ni jambo zito, lakini jaribu kulifanya kuwa la kufurahisha - Lifanye kwa kutumia mchezo wakati wa muda wa pamoja! Au unaweza kujaribu kutengeneza bajeti kwa @global.w_money_grandma kwanza.\n\nKumbuka kuwasifia mnapomaliza!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Unastahili pongezi pia. Asante kwa mara nyingine kwa kutumia @global.parent_app. Inaonesha unajali sana!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Lengo lako lilikuwa kumsifia kijana wako. Wiki hii ulibofya @data.habit.praise_teen.in_text_title. Hongera sana kwa kukumbuka!", - "Your goal was to praise your teen.": "Lengo lako lilikuwa kumsifia kijana wako.", - "Did you have a chance to praise your teen this week?": "Je, ulipata nafasi ya kumsifia kijana wako wiki hii?", - "Yes": "Ndiyo", - "No": "Hapana", - "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.": "Muda mwingine inaweza kuwa vigumu kukumbuka kuwasifia vijana wetu. Wakati mwingine ukiwa unatumia muda wa pamoja na kijana wako, jaribu na fikiria kitu kimoja unachoweza kumsifia. Unaweza hata ukasema, “ Asante kwa kutumia muda pamoja na mimi!”.", - "Well done - great job for remembering!": "Vizuri – hongera sana kwa kukumbuka!", - "How did your teen respond?": "Je, kijana wako aliitikiaje?", - "Surprised": "Alishangazwa", - "Happy": "Alifurahi", - "My teen did not like it": "Kijana wangu hakupenda", - "I do not know": "Sijui", - "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!": "Kumbuka, inachukua muda kwa kijana wako kuzoea kukuona ukimsifu. Kadri unavyotumia muda mwingi pamoja naye, ndivyo itakavyokuwa bora zaidi!", - "Well done for observing how your teen felt; keep it up!": "Hongera kwa kutazama jinsi kijana wako alivyohisi; endeleza mwenendo huo!", - "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Huwa inatokea - kuwa tu mvumilivu. Hakikisha unaendelea kutumia muda wa pamoja na kijana wako, kwa namna hiyo atathamini mawazo yako zaidi na zaidi. Ukimsifia kwa moyo wa dhati, utaona faida zake hivi karibuni!", - "No problem - try to observe how they respond the next time!": "Hakuna tatizo – jaribu kuchunguza namna atakavyoitikia wakati ujao!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Lengo lako lilikuwa kujadili na kijana wako hali ya mgogoro inayoweza kutokea na kuweka mpango wa kukabiliana nayo.", - "prepare for a possible crisis with their teens": "kujiandaa na vijana wao kuhusu hali ya mgogoro inayoweza kutokea", - "prepare for a possible crisis with your teen": "kujiandaa na kijana wako kuhusu hali ya mgogoro inayoweza kutokea", - "My teen told me that something serious happened to them and I did not know how to handle it.": "Kijana wangu aliniambia kuwa kuna jambo kubwa limempata na sikujua jinsi ya kulishughulikia.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Msifie kijana wako kwa kukuambia; kufanya hivyo si jambo rahisi! Kumbuka, unaweza kutumia ujuzi wote uliojifunza kwenye kivungezana: Pumzika kidogo, tumia hatua nne za kutatua matatizo, halafu tafuta msaada unaouhitaji wewe na kijana wako!", - "Get support": "Pata msaada", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Mazungumzo hayo yalininyima raha kabisa kwa sababu yalinikumbusha wakati mbaya nilioupitia.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Tunapokumbushwa nyakati kama hizo, ni kawaida kuhisi kufadhaika au kukasirika. Ni muhimu kutafuta muda ambao umetulia, ili uweze kufikiria msaada unaouhitaji. Unaweza kuhitaji kuzungumza na mtu.", - "One of us did not feel comfortable.": "Mmoja wetu hakujisikia vizuri.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Haya ni mambo magumu kuyazungumzia. Tafuta muda wa utulivu kwa ajili hiyo. Tunajua ni rahisi zaidi kutozungumzia mambo haya na kuamini kuwa hayatakuja kututokea. Hata hivyo, kujifunza jinsi ya kushughulikia hali ya matatizo ni kama kupata bima; SIKU ZOTE ni bora zaidi kuifikiria na kujiandaa mapema.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Lengo lako lilikuwa kubainisha maeneo ya hatari na sehemu za msaada pamoja na kijana wako – kwenye jamii yako na mtandaoni.", - "map risks and support with their teens": "bainisha maeneo ya hatari na msaada pamoja na vijana wao", - "map risks and support with your teen": "bainisha maeneo ya hatari na msaada pamoja na kijana wako", - "My teen and I disagreed on which areas and online activities were unsafe.": "Mimi na kijana wangu hatukukubaliana kuhusu maeneo na shughuli za mtandaoni ambazo hazikuwa salama.", - "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.": "Hongera kwa kujaribu shughuli hii! Tunapowasikiliza vijana wetu, hata kama hatukubaliani nao, tunajifunza kuelewa wanavyofikiri. Jaribu kutafuta muda wa kufanya shughuli hii tena – jaribu kusikiliza na kuonesha kuwa unawaelewa kabla ya kuwashirikisha mawazo yako.", - "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.": "Kijana wangu alionesha nyumba ya mtu ninayemwamini kuwa si salama. Nilishtuka na sikujua cha kufanya.", - "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.": "Ni jambo la kushtua kujua kwamba watu walio karibu nasi na tunaowaamini wanaweza kuwa hatari kwa vijana wetu. Kumbuka kupumzika unapokuwa umekasirika, na jaribu kumsikiliza kijana wako kwa utulivu. Tafuta mtu unayeweza kuzungumza naye kuhusu jambo hili, labda rafiki au huduma ya msaada, ili uweze kupata msaada unaohitaji.", - "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.": "Kijana wangu alisisitiza kwamba baa (au mahali pengine ninapohisi si salama) ni salama kwake kupatembelea. Sijui jinsi ya kumshawishi kijana wangu.", - "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.": "Jambo hili linaweza kukatisha tamaa sana. Ili kupata suluhisho, kijana wako anahitaji kuhisi kuwa anasikilizwa – kwa hiyo, sikiliza kwa utulivu sababu za kijana wako, halafu ndipo umshirikishe maoni yako. Kisha, shirikianeni kuweka sheria inayomruhusu kufurahi huku akiwa salama.", - "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.": "Kama mtu mzima, ninahisi ninawajibika kumlinda – lakini nilipomwambia kijana wangu kuhusu kilicho salama na kisicho salama, alikasirika.", - "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.": "Vijana wetu wanaweza kujua mambo yanayohusu jamii zetu na teknolojia ambayo hatuyajui. Tunapowashirikisha kikamilifu vijana wetu kwenye shughuli ya ubainishaji na kuwasikiliza, watajisikia kuwa wanasikilizwa na kuthaminiwa, na inaweza kuwa rahisi zaidi kupata mpango unaokubaliwa na kila mmoja.", - "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.": "Ilikuwa vigumu kutambua rasilimali zinazotoa msaada katika jamii yangu, kwa sababu siijui vizuri jamii yangu / kuna huduma chache zinazopatikana.", - "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Ni vigumu kujua kila kitu kuhusu jamii zetu. Shirikisha rafiki au mwanafamilia mwingine katika shughuli yako ya ubainishaji. Unaweza hata kutembelea baadhi ya huduma zinazopatikana na kuuliza wanachofanya. Kadri tunavyojua mengi, ndivyo tunavyoweza kuziweka salama familia zetu!", - "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Sijui mengi kuhusu teknolojia, kwa hiyo sijui jinsi ya kuizungumzia na kijana wangu.", - "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Hakuna shida kabisa! Bado unaweza kumsaidia kijana wako. Muulize kijana wako aeleze vifaa vya kielektroniki anavyotumia – unaweza kumuuliza wakati mnapozungumza wawili. Hii ni fursa nzuri sana ya kuonesha moyo wa kupenda kujua maisha ya kijana wako na kujadili pamoja hatari zinazoweza kutokea. Kama hamna uhakika muweke sheria gani, kila mara unaweza kukubaliana na kijana wako kujaribu sheria mpya kwa wiki mbili, kisha mtajadili jinsi mambo yanavyoenda na kubadilisha sheria ikibidi!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Lengo lako lilikuwa kujaribu kutatua tatizo au mgogoro pamoja na kijana wako.", - "resolve problems with their teens": "tatua matatizo na vijana wako", - "resolve the problem with your teen": "tatua tatizo na kijana wako", - "I forgot the steps of problem solving.": "Nilisahau hatua za kutatua matatizo.", - "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!": "Inachukua muda kidogo na mazoezi kuweza kutumia hatua zote nne za kutatua matatizo. Tatizo litakapotokea tena, pitia hatua hizi nne pamoja na kijana wako – kufanya hivyo kutaleta mabadiliko makubwa!", - "I started with the solutions right away.": "Nilianza na suluhisho moja kwa moja.", - "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.": "Tunapokuwa na tatizo, mara zote huwa tunataka kulitatua haraka sana na tunaweza kusahau hatua za kulitatua tatizo. Ili kupata suluhisho bora kwa pamoja, ni vema kwanza kulielewa tatizo kikamilifu na njia mbalimbali za kulitatua.", - "Four steps of problem solving": "Hatua nne za kutatua matatizo", - "We could not agree on a solution to try out and we got into an argument.": "Hatukuweza kukubaliana kuhusu suluhisho la kulijaribu hivyo tuliishia kulumbana.", - "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.": "Wakati mwingine inaweza kuwa vigumu kukubaliana na kila mtu katika familia, hasa kama kila mtu bado hajatulia. Mnaweza kukubaliana kujaribu suluhisho moja kwanza, na kisha mjaribu suluhisho lingine. Pia, kama mtakwama, jaribuni kukutana baadaye ili mkubaliane pamoja kuhusu suluhisho hilo.", - "I got angry when the problem came up and I forgot to use the problem-solving steps.": "Nilikasirika tatizo lilipotokea, nikasahau kutumia hatua za kutatua matatizo.", - "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Tatizo linapojitokeza, huwa tunakasirika au kufadhaika wakati mwingine. Kumbuka, unapohisi hasira au msongo wa mawazo, unaweza kupumzika kwanza ili utulie halafu ndipo utatue tatizo linalokukabili.", - "My teen got angry and did not want to talk about the problem.": "Kijana wangu alikasirika na hakutaka kuzungumzia tatizo hilo.", - "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Kijana wako anaweza kushindwa kabisa kushughulikia tatizo mara moja. Zitambue na kuzipa majina hisia zake, halafu tafuta muda baadaye siku hiyo au wiki hiyo mjadili na kutatua tatizo hilo pamoja. Unapotenga muda kwa ajili ya kijana wako, tatizo linaweza kutatuliwa vizuri.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Wiki hii lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kufadhaika, vuta pumzi ndani na nje mara tano kabla hujaamua cha kufanya. Ulibofya @data.habit.breathe.in_text_title – hongera!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Wiki hii, lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kufadhaika, vuta pumzi ndani na nje mara tano kabla hujaamua cha kufanya.", - "How did this work out?": "Jambo hili liliendaje?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Lengo lako pia lilikuwa kuzungumza na kijana wako kuhusu jinsi nyinyi wawili mlivyohisi wakati wa msongo wa mawazo.", - "How did this go?": "Jambo hili liliendaje?", - "Did you experience any of these challenges when sharing how you feel with your teen?": "Je, ulipata changamoto yoyote kati ya hizi ulipomshirikisha kijana wako kuhusu unavyojisikia?", - "What was difficult for you about sharing how you feel with your teen?": "Jambo gani lilikuwia gumu ulipokuwa unamshirikisha kijana wako kuhusu unavyohisi?", - "I was afraid my teen would think I was weak.": "Niliogopa kijana wangu angeniona mimi dhaifu.", - "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.": "Kushirikishana hisia, hasa zile ngumu, huonesha mfano wa kuigwa kwa kijana wako! Kwa hakika humfanya kila mtu kwenye familia kuwa imara zaidi, kwa sababu mnaweza kuelewana na kusaidiana vizuri zaidi.", - "I felt uncomfortable about naming specific difficult feelings.": "Sikujisikia vizuri kuhusu kutaja hisia fulani ngumu.", - "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.": "Kuwa mahususi si kukosa adabu au kutojali – husaidia sana wengine kukuelewa vizuri na hivyo kuzuia kutoelewana kwenye familia. Hisia kama hasira na msongo wa mawazo ni sehemu ya maisha yetu. Kitu pekee tunachohitaji kufanya tunapohisi hasira na msongo wa mawazo ni kudhibiti vizuri hisia zetu kwa kuvuta pumzi ndefu mara kadhaa kabla ya kuamua cha kufanya.", - "My teen felt uncomfortable when I shared my feelings.": "Kijana wangu hakujisikia vizuri nilipomshirikisha hisia zangu.", - "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!": "Siku zote mwanzo ni mgumu. Jipe muda wa kuzoea na endelea kuonyesha mfano mzuri kwa kutambua hisia zako na kuwashirikisha wengine. Baada ya muda, kijana wako atajifunza kufanya hivyohivyo, na atahisi kupendwa na kutunzwa mno!", - "When I shared my feelings, my teen asked many questions, which made me uncomfortable.": "Nilipomshirikisha kijana wangu hisia zangu, aliuliza maswali mengi ambayo yalinifanya nisijikie raha.", - "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Kuwashirikisha wengine hisia zako humsaidia kijana wako kufahamu na kujifunza kufanya hivyohivyo. Unaweza kuchagua mambo unayotaka kuwashirikisha wengine kuhusu hali hiyo. Ni juu yako! Unaweza pia kuchagua kujibu maswali baadaye kwa kusema, “Sasa hivi ninahisi hasira/msongo wa mawazo. Unaweza kunipa muda, tafadhali? Tunaweza kuzungumza zaidi kuhusu jambo hili leo usiku”.", - "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Nilikuwa na hasira mno au msongo mkubwa wa mawazo kuweza kujaribu kuelezea hisia zangu – ninapendelea kuwa peke yangu ninapohisi hivyo.", - "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Si vibaya kutotaka kuwashirikisha wengine kwa wakati huo. Tafuta muda wa kuwaelezea baadaye, unapohisi utulivu zaidi, ili kila mtu aelewe.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kukiuka sheria ya kaya). Ulibofya @data.habit.consequence.in_text_title – hongera sana kwa kukumbuka!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kuvunja sheria ya kaya).", - "introduce a consequence together": "wekeni athari mkiwa pamoja", - "Did you have any challenges when trying to introduce a consequence together?": "Je, mlipata changamoto zozote mlipojaribu pamoja kuweka athari?", - "What was difficult for you about introducing a consequence with your teen?": "Je, jambo gani lilikuwa gumu kwako katika kuweka athari pamoja na kijana wako?", - "I got very angry when my teen broke the rule.": "Nilikasirika sana pale kijana wangu alipovunja sheria.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Kupumzika kabla ya kujibu kunatusaidia kutulia na kujibu vizuri zaidi.\n\nKijana wako akikukasirisha tena, jaribu kwanza kupumzika. Kuvuta pumzi ndefu chache tu kunaweza kuleta mabadiliko makubwa!", - "My teen got very angry with me after I gave the consequence.": "Kijana wangu alinikasirikia sana nilipomuamuru afanye athari.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Kijana wako anapokasirika, unaweza kuhitaji kuondoka hadi nyote mtakapokuwa mmetulia.\n\nTazama ili kuhakikisha kuwa athari ni ya haki na ya busara. Sikiliza maelezo ya kijana wako, na hakikisha unatoa \"Msamaha wa Usalama\" kama alivunja sheria ili kuwa salama.", - "I introduced the consequence without first discussing it with my teen.": "Niliweka athari bila kuijadili kwanza na kijana wangu.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Je, unaweza kuweka athari kwa ajili ya jambo hili likitokea tena? Tunapoweka athari pamoja na vijana wetu, athari hizi zitakuwa na uwezekano mkubwa wa kutekelezeka, na vijana wetu watakuwa tayari zaidi na watakuwa na uwezo zaidi wa kufuata sheria hiyo.", - "I forgot to follow through with the consequence.": "Nilisahau kufuatilia athari mpaka mwisho.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sisi sote huwa tunakosea! Kadri tunavyokuwa na msimamo kwenye athari tulizoziweka, ndivyo watoto wetu watakavyokuwa na uwezekano mkubwa wa kuchagua kuwa na mwenendo chanya siku za usoni.", - "Even with the consequence, my teen still does not follow the rule.": "Pamoja na kuweka athari, bado kijana wangu hafuati sheria.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Kama kijana wako anaendelea kuvunja sheria, unaweza kuhitaji kutumia muda chanya zaidi pamoja naye.\n\nJaribu kuendelea na malengo yako mengine – kama kujithamini, muda wa kuzungumza wawili, na usifiaji. Ujuzi huu wote utamsaidia kijana wako kuhisi anapendwa zaidi na kulindwa… na wewe kupunguza msongo wa mawazo!", - "We only created a negative consequence, not a positive consequence.": "Tuliweka njia ya malipo hasi tu, na si malipo chanya.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Wakati mwingine ni vigumu kufikiria athari chanya. Athari zitamchochea kijana wako kuwajibika zaidi, na utaona mabadiliko!", - "My teen suggested being hit as a negative consequence.": "Kijana wangu alipendekeza kuchapwa kama athari hasi.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Vijana wanaweza kuzoea kuona kuchapwa ndo athari pekee ya kuvunja sheria.\n\nBungua bongo pamoja nao kuhusu baadhi ya athari nyepesi zinazoweza kuwasaidia kuelewa kwamba wamefanya kosa. Hizi zitaleta ufanisi zaidi na kutoa mifano chanya!", - "Your goal was to make ONE rule with your teen this week.": "Wiki hii, lengo lako lilikuwa kutengeneza sheria MOJA na kijana wako.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Umefanya vizuri sana kwa hili! Si rahisi, na vijana hawawezi kutii sheria wakati wote, lakini kwa kutengeneza sheria muhimu kwa pamoja ni mwanzo mzuri. Jipongeze kwa kujaribu hili - tunajivunia hatua hii!", - "make rules with their teens": "tengeneza sheria na vijana wao", - "Did you have any challenges when trying to make a rule together?": "Je, mlipata changamoto yoyote mlipojaribu kutengeneza sheria pamoja?", - "What was difficult for you about making a rule with your teen?": "Je, kitu gani kilikuwa kigumu ulipokuwa unatengeneza sheria na kijana wako?", - "My teen and I could not agree on a rule.": "Mimi na kijana wangu hatukuweza kukubaliana kuhusu sheria fulani.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Fikiria kama sheria ina mantiki. Kijana wako anaweza kuifuata? Mnapotunga sheria kama familia, ni vizuri ukafikiria kuhusu kijana wako, umri wake, na nini ambacho ni muhimu kwake.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Kijana wangu alihisi kuwa haikuwa haki kwake kuifuata sheria hiyo wakati mimi sihitaji kuifuata.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Kila wakati, tunapaswa kukumbuka kuwa watoto hujifunza vizuri zaidi kutoka kwetu. Kadiri tunavyofuata sheria, ndivyo pia nao watakavyofuata sheria.\n\nUnaweza kurekebisha sheria ili kuhakikisha kuwa inaweza kufuatwa na kila mtu, kwa kuzingatia majukumu yako na majukumu ya kijana wako (kwa mfano, shughuli za shuleni au za kazini).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Nilijisikia vibaya, kwa sababu ninahisi kwamba mimi ndiye ninapaswa kuweka sheria hiyo, si kijana wangu.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Mwenza wangu alijisia vibaya, kwa sababu anahisi kwamba yeye ndiye anapaswa kuweka sheria hiyo, si kijana huyo.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Tunapoweka sheria pamoja na vijana wetu, husaidia familia kuelewana vizuri zaidi. Sheria hizo zitakuwa na uhalisia zaidi, na vijana wetu watakuwa na utayari zaidi na wataweza kuzifuata sheria hizo.", - "When we tried to set a rule, we got into an argument.": "Tulipojaribu kuweka sheria, tulijikuta tunabishana.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Je, kijana wako alikuwa na hali nzuri kihisia mlipojaribu kuweka sheria? Ni vizuri zaidi kutengeneza sheria wakati kukiwa na hali ya utulivu. Kama wewe au kijana wako atakuwa amechoka au ana njaa, ni vizuri zaidi kuzungumzia sheria baadaye.", - "We were not able to stick to the rule.": "Hatukuweza kufuata sheria.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Sheria zinapaswa ziwe mahususi na zinazotekelezeka. Hakikisha kuwa una sheria inayoweza kufuatwa kwa urahisi, kama vile kula mlo mmoja pamoja kila Jumapili badala ya kila siku usiku. Je, unahitaji kunyumbulika zaidi kuhusu sheria hiyo?", - "Mother": "Mama", - "Father": "Baba", - "TikTok": "TikTok", - "WhatsApp": "WhatsApp", - "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Kuangalia video hii kunahitaji uwe na mtandao wa intaneti. Ili kupunguza matumizi ya data, tazama au pakua video hii unapokuwa kwenye WiFi.", - "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ili kutembelea tovuti hizi, unahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tembelea tovuti hizi ukiwa kwenye WiFi.", - "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Kutuma ujumbe huu kunahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tuma ujumbe huu ukiwa kwenye WiFi.", - "COVID": "UVIKO", - "Welcome and Self-Care": "Makaribisho na Ujitunzaji", - "Self-Care": "Kujithamini", - "How to add self-care": "Jinsi ya kuongeza kujithamini", - "One-on-One Time": "Muda wa Pamoja Wawili", - "How to spend one-on-one time": "Jinsi ya kutumia muda wa pamoja wawili", - "Praise": "Kusifia", - "How to praise": "Jinsi ya kusifia", - "Positive Instructions": "Maelekezo Chanya", - "How to give positive instructions": "Jinsi ya kutoa maelekezo chanya", - "Managing Stress": "Kudhibiti Msongo wa Mawazo", - "How to manage stress": "Jinsi ya kudhibiti msongo wa mawazo", - "Family Budgets": "Bajeti za Familia", - "How to budget & save": "Jinsi ya kutengeneza bajeti & kuweka akiba", - "Rules": "Sheria", - "How to create rules": "Jinsi ya kuunda sheria", - "Calm Consequences": "Athari Nyepesi", - "How to give calm consequences": "Jinsi ya kuamuru athari nyepesi zifanywe", - "Problem Solving": "Kutatua Matatizo", - "How to solve problems": "Jinsi ya kutatua matatizo", - "Teen Safety": "Usalama wa Vijana", - "How to keep your teen safe": "Jinsi ya kumweka salama kijana wako", - "Dealing with Crisis": "Kushughulikia Hali ya Matatizo", - "How to deal with crisis": "Jinsi ya kushughulikia hali ya hatari", - "Celebration and Next Steps": "Kusherehekea na Hatua Zinazofuata", - "How to support each other": "Jinsi ya kusaidiana", - "Talk about @global.home_practice": "Zungumzia @global.home_practice", - "Home Practice Review": "Mapitio ya Zoezi la Nyumbani", - "Let's talk about how your home practice went this week.": "Tuzungumzie jinsi zoezi la nyumbani lilivyoenda wiki hii.", - "In my group": "Kwenye kundi langu", - "By myself": "Peke yangu", - "awesome parent": "mzazi mzuri", - "friends": "marafiki", - "New workshop ready tomorrow!": "Warsha mpya itakuwa tayari kesho!", - "New workshop!": "Warsha mpya!", - "Workshop Reminder": "Kumbusho la Warsha", - "Nice progress!": "Maendeleo mazuri!", - "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Kumbuka kukaa chini na kutulia leo - kujuthamini mwenyewe ni ujuzi muhimu wa malezi.", - "You are appreciated!": "Unathaminiwa!", - "Something Fun": "Kitu cha Kufurahisha", - "Your @global.parent_points this week": "@global.parent_points zako wiki hii", - "Home Practice Reminder": "Kumbusho la Zoezi la Nyumbani", - "To solve this challenge, I will try to:": "Ili kutatua changamoto hii, nitajaribu:", - "My challenge is not listed here.": "Changamoto yangu haikuorodheshwa hapa.", - "ParentApp": "ParentApp", - "Weekly Workshops": "Warsha za Wiki", - "Weekly Workshop": "Warsha ya Wiki", - "Weekly Workshop Options": "Machaguo ya Warsha za Wiki", - "ParentPoints": "Alama za Mzazi", - "ParentPoint": "Alama ya Mzazi", - "Parent Library": "Maktaba ya Mzazi", - "Real-world ideas": "Mawazo ya ulimwengu halisi", - "Ideas": "Mawazo", - "Ideas from other families...": "Mawazo kutoka familia nyingine...", - "Challenges & solutions": "Changamoto & utatuzi", - "Submit": "Tuma", - "Find out more": "Pata maelezo zaidi", - "Show me how": "Nionyeshe jinsi ya kufanya", - "Tell me more!": "Nipe maelezo zaidi!", - "Let's go!": "Twende!", - "Check it out!": "Iangalie!", - "Done": "Imefanyika", - "Next": "Inayofuata", - "Previous": "Iliyopita", - "Save": "Tunza", - "Skip": "Ruka", - "Continue": "Endelea", - "Finish with a song": "Malizi kwa kuimba wimbo", - "Goodbye!": "Kwa heri!", - "Your @global.parent_app Code": "Namba yako ya @global.parent_app", - "Terms & Conditions": "Vigezo & Masharti", - "Privacy Policy": "Sera ya Faragha", - "Make me smile": "Nifanye nitabasamu", - "Get me going": "Nifanye niendelee", - "My Favourite Relaxes": "Burudani Zangu Pendwa", - "All Relaxes": "Burudani Zote", - "Random Relax": "Burudani Yoyote", - "This Week's Relax": "Burudani ya Wiki Hii", - "Listen & Relax (1-2 minutes)": "Sikiliza na chukua pumziko (dakika 1-2)", - "Listen & Relax (3-5 minutes)": "Sikiliza na chukua pumziko (dakika 3-5)", - "Do & Relax (5-10 minutes)": "Fanya na chukua pumziko (dakika 5-10)", - "My Favourite Activities": "Shughuli Zangu Pendwa", - "All Activities": "Shughuli Zote", - "Random Activity": "Shughuli Yoyote", - "This Week's Activity": "Shughuli ya Wiki Hii", - "Chat Together": "Kuongea Pamoja", - "Do Together": "Fanyeni Pamoja", - "Tap and type": "Bonya na uandike", - "Tap and choose": "Bonya na uchague", - "Type your own": "Andika yako mwenyewe", - "I've understood this. Don't show me this message again.": "Nimeielewa hii. Usinionyeshe tena ujumbe huu.", - "Walk to the shops": "Tembea kwenda madukani", - "Get water together": "Fuata maji pamoja", - "Do a chore together": "Kufanya pamoja shughuli ya nyumbani", - "Prepare dinner": "Andaa chakula cha usiku", - "Eat breakfast/lunch/dinner": "Kula kifungua kinywa/mlo wa mchana/mlo wa usiku", - "Have tea after school": "Kunywa chai akitoka shule", - "Watch a T.V. show": "Kutazama kipindi cha televisheni", - "Review homework": "Kupitia tena kazi ya nyumbani", - "Chat before bedtime": "Kuongea kabla ya kulala", - "Play a game/sport": "Kucheza mchezo", - "Teens completing school/university": "Vijana kumaliza shule/chuo kikuu", - "Building/expanding a house for my family": "Kujenga/kupanua nyumba ya familia yangu", - "Starting a business": "Kuanzisha biashara", - "Buying a car for my family": "Kununua gari ya familia yangu", - "Severe illness or death of a friend or family member": "Ugonjwa mbaya au kifo cha rafiki au mwanafamilia", - "Robbery": "Unyang'anyi", - "Flooding": "Mafuriko", - "Political violence": "Vurugu za kisiasa", - "Losing my job": "Kufukuzwa kazi yangu", - "Pandemic (COVID-19)": "Janga (UVIKO-19)", - "At home": "Nyumbani", - "Buy things we can sell": "Kununua vitu tunavyoweza kuuza", - "At a bank": "Kwenye benki", - "In a savings group": "Kwenye kikundi cha kujiwekea akiba", - "No gadget use the next day": "Hakuna kutumia vifaa vya kielektroniki siku inayofuata", - "Take 5 minutes pause in separate part of the room": "Kutulia kwa dakika 5 ukiwa upande mwingine wa chumba", - "Write a letter of apology": "Kuandika barua ya kuomba msamaha", - "Cannot see friends the next day": "Haruhusiwi kuwatembelea marafiki siku inayofuata", - "Cannot play with phone after dinner (or next hour)": "Haruhusiwi kuchezea simu baada ya chakula cha usiku (au saa inayofuata)", - "Extra time with friends on weekend (1hr)": "Muda wa ziada na marafiki wikiendi (saa 1)", - "Cooking teen’s favourite meal": "Kupika chakula kipendwacho na kijana", - "Extra time with phone after dinner (30 min)": "Muda wa ziada akiwa na simu baada ya chakula cha usiku (dakika 30)", - "Watching teen’s T.V. show together": "Kuangalia pamoja kipindi cha vijana kwenye runinga", - "Extra one-on-one time on Sunday (30 min)": "Muda wa ziada wa kuzungumza wawili Jumapili (dakika 30)", - "Take a deep breath and pause before responding": "Vuta pumzi ndefu na utulie kabla ya kujibu", - "Listen to your teen": "Msikilize kijana wako", - "Praise your teen for sharing": "Msifie kijana wako kwa kukushirikisha", - "Use problem solving skills": "Tumia ujuzi wa kutatua matatizo", - "Work out where you can get help": "Fikiria mahali unapoweza kupata msaada", + "Which of the tips helped you?": "Vidokezo vipi vilikusaidia?", + "GET REAL – Can your teen do what you are about to ask?": "TAZAMA UHALISIA – Je, kijana wako anaweza kufanya kile unachotaka kumwagiza?", + "GET POSITIVE – Use positive words and praise them!": "KUWA NA MTAZAMO CHANYA - Tumia maneno chanya na msifie!", + "GET CLEAR – Be clear and specific!": "ELEWEKA – Kuwa bayana na maalum!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Safi sana! Tunapowaagiza vijana wetu wafanye jambo linalotekelezeka, ni rahisi zaidi kwao kufaulu.", + "When we praise them, our teens feel encouraged to listen to us again!": "Tunapowasifia vijana wetu, wanahamasika kutusikiliza tena!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Safi! Tunapofikiria mapema maelekezo maalum ya kuwapa vijana wetu, inawawia rahisi sana kufuata maelekezo yetu!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Zingatia mambo chanya!\n\nKuwaambia vijana wetu kile hasa tunachotaka wafanye ni vizuri kuliko kuwakataza kufanya kitu.\n\nUtaona mabadiliko.", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Habari zenu?\n\nLeo mada yetu inahusu maelekezo chanya.\n\nNi muhimu kutoa maelekezo chanya kwa watoto wetu, kwa sababu tunapowapa maelekezo chanya, wanajua na kuelewa kile tunachotarajia wakifanye, na wanakifanya kwa namna tunavyotaka wakifanye.\n\nKwa hiyo, mwishowe kila mtu hufurahi.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Bado hujaweka alama yoyote kwenye @data.habit.instruct_positively.title @global.parent_points. \n\nIjaribu leo!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Jipongeze kwa kazi kubwa unayoifanya. Hakuna mzazi aliye kamili, na tunafikiri unafanya vizuri sana!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Maelekezo chanya husaidia kuleta tabia nzuri zaidi na zaidi!\n\nMaliza @local.workshop_data.in_text_title ili kupata mawazo kuhusu namna jambo hili linavyoweza kufanya kazi kwenye familia yako.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\n@global.workshop cha wiki hii ni kuhusu jinsi ya kuongeza uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\n@global.workshop ya wiki hii ni kuhusu jinsi ya kuongeza uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's @global.workshop to learn how giving positive instructions can help - a lot.": "Je, kijana wako anakusikiliza kila mara? Kama hakusikilizi kila mara (kama ilivyo kwetu sisi wengine wote), angalia @global.workshop ya wiki hii ili ujifunze namna ya kutoa maelekezo chanya yanavyoweza kusaidia.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous @global.workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Kama kawaida, unaweza kupata @global.workshop kipya kesho. Litakuwa jambo zuri kumalizia kipindi kilichopita kabla ya wakati huo.\n\nWazazi wengine wanatumia programu hii wanaposafiri kwenda kazini. Kwa nini usitumie programu hii unapopata muda wa kutulia?\n\nAsante kwa mara nyingine kwa kutumia @global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you: you will see a big difference by making small changes!": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, @global.workshop mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", + "Said something nice first": "Alisema kitu kizuri kwanza", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ameongea na @global.w_instruct_teen_girl kwa sauti ya utulivu", + "Told @global.w_instruct_teen_girl what she wants her to do": "Alimwambia @global.w_instruct_teen_girl kile anachotaka afanye", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?", + "What could @global.w_instruct_female_caregiver have done differently?": "Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver aliweza kutulia", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver alikuwa na mtazamo chanya", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Je, kwa nini unadhani mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Jaribio la kufikiria\n* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Jaribio la kufikiria\n* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Jadilini pamoja:\n\n* Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?\n* Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver angeweza...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Kusema kitu kizuri kwanza\n* Angeongea na @global.w_instruct_teen_girl kwa sauti ya utulivu\n* Kumwambia @global.w_instruct_teen_girl kile anachotaka afanye", + "Let's discuss what happened this time.": "Hebu tujadili kilichotokea wakati huu.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Jadilini pamoja:\n\n* Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver wanajisikiaje sasa?\n* Je, mnadhani ni kwa nini mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", + "Positive instructions can work with your teen too!": "Maelekezo chanya yanaweza pia kufanya kazi kwa kijana wako!", + "It worked better this time because...": "Mara hii mambo yalienda vizuri kwa sababu...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake\n* @global.w_instruct_female_caregiver aliweza kutulia \n* @global.w_instruct_female_caregiver alikuwa na mtazamo chanya", + "Let’s do a thought experiment!": "Hebu tufanye jaribio la kufikiria!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "USIFIKIRI KUHUSU TEMBO\n\nUnafikiri kuhusu nini?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Inawezekana ulifikiri kuhusu tembo...\n\nMaelekezo ya 'usifanye kitu hiki' huwafanya vijana wafikirie kuhusu kitu hicho.\n\nWakati mwingine huwa hawaelewi kile TULICHOTAKA wakifanye.\n\nPia, mara nyingi hawapendi kuambiwa wasifanye vitu fulani (kuna mtu yeyote anayependa?)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "SASA, FIKIRI KUHUSU DUMA!\n\nJe, unafikiri kuhusu nini?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Hapo sawa! Maelekezo chanya na bayana huwasaidia vijana kuzingatia kile wanachopaswa kufanya.\n\nKwa njia hiyo, vijana pia watahisi kuheshimiwa zaidi, na wana uwezekano mkubwa wa kusikiliza.", + "GET REAL": "KUWA HALISI", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Je, kijana wako anaweza kweli kufanya kile unachotaka kumwambia? Inaweza kuwa vigumu kwao kusoma kimya kwa siku nzima, lakini ukimwambia afanye hivyo kwa nusu saa unapohitaji sana afanye hivyo, ni jambo linalotekelezeka.", + "GET POSITIVE": "KUWA NA MTAZAMO CHANYA", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Tabasamu, mwangalie machoni, na tumia maneno chanya. Msifie mara tu anapoanza kufanya kile unachotaka!", + "GET CLEAR": "KUWA BAYANA", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Mara nyingi tunajua nafsini mwetu kile tunachokitaka, lakini hakitusemi bayana kiasi cha kueleweka. Sema kile unachotaka kuona kijana wako akifanye. Jaribu kusema 'tafadhali, ifikapo saa 1 jioni uwe tayari umerudi nyumbani' badala ya kusema 'uwahi kurudi nyumbani'.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Hebu tufanye mazoezi ya kutoa maelekezo YANAYOTEKELEZEKA, CHANYA, na BAYANA. Kufanya mazoezi kutakusaidia kufanikiwa kwa kijana wako!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Chagueni watu wawili kwenye kikundi chenu:\n* Mtu mmoja ataigiza kama kijana\n* Mwingine ataigiza kama mzazi wa kijana\n* “Mzazi”: Mpe \"kijana\" wako maelekezo chanya kwa kumtia moyo na kumsifia\n* “Kijana”: Itikia kama unavyodhani kijana ataitikia maneno hayo\n\nJadilini pamoja jinsi mambo yalivyoenda:\n* Je, imekufanya ujisikieje kama \"mzazi\" na kama \"kijana\"?\n* Je, unaweza kufanya chochote vizuri zaidi?\n\nMpeni kila mtu nafasi ya kuwa \"mzazi\" na \"kijana\" kama mnaweza. Mazoezi huleta ufanisi!", + "Examples of positive instructions:": "Mifano ya maelekezo chanya:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ninapenda muziki wako. Je, unaweza kupunguza sauti wakati wa chakula ili tuweze kuzungumza? Asante – Ninashukuru sana kufanya hivyo.\n* Huo muziki ni mzuri sana. Umeimbwa na nani? Tafadhali zima muziki unapoingia nyumbani. Ukitaka, unaweza kuupiga chumbani mwako kwa sauti ya chini. Asante!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tengeneza tena bajeti – mara hii pamoja NA kijana wako na familia yako!\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – mtatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tengeneza bajeti na kijana wako na familia yako.\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – linatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Pitia tena bajeti yako na kijana wako na familia yako. Kufanya hivyo kutamkumbusha kila mtu kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile kwamba bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "Steps to make a budget": "Hatua za kutengeneza bajeti", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Familia nyingi zina msongo wa mawazo kutokana na pesa, hasa pale vijana wanapoendelea kuomba vitu!\n\nTunapotengeneza bajeti pamoja, tunaweza kukubaliana jinsi ya kufanya matumizi pamoja NA kuweka akiba ili kuzuia msongo wa mawazo na kutekeleza malengo ya familia zetu.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Habari zenu?\n\nMada ya leo inahusu kutengeneza bajeti ya familia.\n\nKutengeneza bajeti ni muhimu, lakini kutengeneza bajeti kwa kuhusisha familia nzima ni muhimu zaidi.\n\nKufanya hivyo pamoja husaidia kuongeza uelewa kuhusu jinsi mnavyotumia pesa kama familia na kiasi mnachoweka akiba kwa ajili ya familia, na mnaweza hata kubuni mipango ya kuweka akiba kama familia.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja. Unahitaji:\n\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", + "A family budget can help @global.w_money_grandma - and YOU!": "Bajeti ya familia inaweza kumsaidia @global.w_money_grandma – na WEWE!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Unahitaji:\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* chakula\n* maji & umeme\n* mavazi\n* akaunti\n* king'amuzi cha runinga\n* vifaa vya usafi wa mwili\n* saluni\n* muda wa maongezi\n* ada ya shule\n* usafiri\n* bima\n* matibabu\n* michezo/burudani\n* kodi ya nyumba\n* mikopo\n* ibada", + "Think about what we spend money on each month.": "Fikiria mambo tunayotumia pesa kila mwezi.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora picha za vitu vyote vinavyokufanya wewe na familia yako mtumie pesa kila mwezi.\n* Andika pembeni mwa kila picha kiasi ambacho kitu hicho kinagharimu kila mwezi. (Hakuna haja ya kuwashirikisha wengine viwango hivyo kama hautaki kufanya hivyo.)\n* Jumlisha kiasi cha pesa unazotakiwa kutumia kila mwezi.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Inastaajabisha! Umemaliza hatua ya kwanza!\n\nTuendelee!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Zungumzeni pamoja kuhusu mahitaji yenu na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Mara nyingi watu huona mambo kwa namna inayotofautiana. Tunapozungumzia mahitaji na matamanio yetu, tunaelewana vizuri zaidi na tunaweza kufanya uchaguzi mzuri zaidi pamoja kuhusu jinsi ya kutumia pesa zetu.\n\nAngalieni orodha yenu ya vitu mnavyotumia pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Fikirieni kuhusu mahitaji na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Angalieni orodha yenu ya vitu mnavyotumia, pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", + "Make a budget!": "Tengeneza bajeti!", + "Make a budget as one big family!": "Tengeneza bajeti kama familia moja kubwa!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Mtu mmoja ajitolee kuwashirikisha wengine orodha yake (Kama hakuna mtu anayejitolea, mnaweza kutengeneza orodha mpya pamoja)\n* Gawaneni majukumu – wengine watakuwa watu wazima, wengine watakuwa vijana.\n* Amueni kipato chenu kwa mwezi ni kiasi gani.\n* Chukueni hindi au maharage kadhaa au kitu chochote chenye chembechembe nyingi – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni pamoja mtatumia kiasi gani kwenye kitu gani, na muweke mawe/vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", + "Make a budget as a family!": "Tengeneza bajeti kama familia!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Andikeni kipato chenu kwa mwezi.\n* Chukueni hindi au maharage kadhaa au kitu chochote cha chembechembe – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni mtatumia kiasi gani kwenye kitu gani, na muweke hindi /vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Pangeni jinsi mnavyoweza kuweka akiba ya pesa, ili muweze kukabiliana na dharura na kutimiza malengo ya familia yenu!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Kama mnaweza kuweka akiba hata kiasi kidogo kwa ajili ya siku zijazo au dharura – kinaweza kusaidia sana.\n* Wekeni mduara uitwao \"dharura\".\n* Wekeni mduara uitwao \"malengo ya familia\".\n* Sasa jaribuni kugawanya pesa zenu ili muweze kuweka akiba kidogo kila mwezi kwa mambo yote haya.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "HONGERA!!! Mmetengeneza bajeti ya familia yenu – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu kwenye kikundi chenu anastahili kusifiwa, au sivyo?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "HONGERA!!! Mmetengeneza bajeti ya familia yako – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu katika familia yako anastahili kusifiwa, au sivyo?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "HONGERA!!! Umetengeneza bajeti yako – kumbuka kufanya zoezi hili tena na wanafamilia wengine – kama mtakubaliana kuhusu mpango fulani pamoja, mpango huo utaleta mabadiliko makubwa!", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Wakati wowote unapohisi upweke au kuzidiwa, jua kwamba hauko peke yako. Kuna wazazi duniani kote ambao wanapitia hali kama yako.\n\nKila siku unafanya kadri ya uwezo wako na sisi sote tunajivua wewe!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Kuishirikisha familia yako kuhusu namna mnavyotumia fedha kunaweza kuondoa misongo mingi ya mawazo na ugomvi.\n\nMaliza @local.workshop_data.in_text_title ili kuisaidia familia yako kutengeneza bajeti na kuweka akiba. Kwa kweli ni rahisi – utajionea mwenyewe!", + "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Habari @fields.group_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s @global.workshop deals with money and budgeting.": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\n@global.workshop ya wiki hii inahusu fedha na bajeti.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Wazazi wengi wanasema kuwa kutengeneza bajeti kumerudisha amani ndani ya nyumba zao – inaweza kukufaa pia.\n\nKwa mara nyingine, asante kwa kuwa mzazi makini.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you set family rules that work.": "Ni vizuri umemaliza@local.workshop_data.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Tenga muda kidogo ili ufurahie mafanikio uliyoyapata, licha ya mambo mengine yote unayopaswa kuyafanya kila siku.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Hadithi – haikufanikiwa…\n* Zoezi la kutengeneza bajeti\n* Hadithi & majadiliano – ilifanikiwa!\n* Hadithi & majadiliano – hayakufanikiwa…\n* Majadiliano kuhusu njia za kuweka akiba\n* Zoezi la kuweka akiba\n*Nyenzo: Jinsi ya kutengeneza bajeti & kuweka akiba\nFIKIRI – CHAGUA – TENGENEZA – PANGA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Step 1: THINK": "Hatua ya Kwanza: FIKIRI", + "What do we spend on now?": "Kwa sasa tunatumia pesa kwenye mambo gani?", + "THINK Activity": "Shughuli ya KUFIKIRI", + "Step 2: CHOOSE": "Hatua ya Pili: CHAGUA", + "Talk together about needs and wants": "Zungumzeni pamoja kuhusu mahitaji na matamanio", + "CHOOSE Activity": "Shughuli ya KUCHAGUA", + "Step 3: BUILD": "Hatua ya Tatu: TENGENEZA", + "Make your own budget": "Tengeneza bajeti yako mwenyewe", + "BUILD Activity": "Shughuli ya KUTENGENEZA", + "Step 4: PLAN": "Hatua ya Nne: PANGA", + "Emergencies and family goals": "Dharura na malengo ya familia", + "PLAN Activity": "Shughuli ya KUPANGA", + "What are your family savings goals?": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Hayo ni malengo mazuri sana!\n\nHilo ni lengo zuri sana! Tunapopanga pamoja bajeti nzuri na mpango mzuri wa kuweka akiba, tunaweza kufanikiwa na kuona fahari!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sisi sote tuna ndoto kwa ajili ya familia zetu, kama alivyo @global.w_money_grandma. Kwa kutenga pesa kidogokidogo kila mwezi, unaweza pia kuzitimiza malengo hayo!", + "What are your family savings goals?": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Hilo ni lengo zuri sana!\n\nKwa kutengeneza bajeti nzuri na mpango mzuri wa kuweka akiba, unaweza kufanikiwa na kuona fahari!", + "Let's talk about this story.": "Hebu tuzungumzie hadithi hii.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Kwa @global.w_money_grandma, dhoruba ilitokea.\n\nJe, kuna dharura gani nyingine zinazoweza kutokea?", + "Let's think about this story.": "Hebu tufikirie kuhusu hadithi hii.", + "For @global.w_money_grandma, a storm happened.": "Kwa @global.w_money_grandma, dhoruba ilitokea.", + "What other emergencies could come up for your family?": "Je, kuna dharura gani nyingine zinazoweza kutokea kwenye familia yako?", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Dharura zinaweza kutokea kwenye familia yoyote. Kuweka akiba ya pesa kwa ajili ya dharura hizi KABLA hazijatokea huzuia wasiwasi mwingi na msongo wa mawazo wa ghafla!", + "Let's talk about different ways we can save.": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Jadilini pamoja:\n* Je, kuna njia zipi tunazoweza kuzitumia kujiwekea akiba?\n* Je, kuna faida na hasara zipi kwa kila njia ya kujiwekea akiba?\n\nKuelewa vizuri kila njia kutawasaidia kuamua njia iliyo bora zaidi ya kuweka akiba kwa familia yenu.\n\nNjia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", + "Let's think about different ways we can save.": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kuna njia mbalimbali tunazoweza kuzitumia kujiwekea akiba: nyumbani, kununua vitu tunavyoweza kuviuza baadaye, benki, au kwenye kikundi cha kuweka akiba.\n\nFikiria faida na hasara za kila njia ya kujiwekea akiba.", + "What is the best savings option for your family?": "Je, njia ipi ya kujiwekea akiba ni bora zaidi kwa familia yenu?", + "Whatever savings plan you choose, it will really help your family move forward!": "Njia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Zoezi la nyumbani la wiki hii ni kumsifia kijana wako mara moja kwa siku. Utatumia sekunde 10 tu!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Kusifia ni ujuzi wenye nguvu katika malezi.\n\nKama tutawasifia vijana wetu wanapofanya jambo vizuri, tutawaona wakifanya mambo mazuri zaidi na zaidi!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Habari zenu?\n\nMada yetu ya leo inahusu kusifia.\n\nNi vizuri kuwasifia watoto wetu wanapofanya vizuri kwa sababu tunapofanya hivyo, watazidi kuifanya tabia nzuri tunayotaka kuiona.\n\nNa tusisahau pia kujisifia sisi wenyewe tunapofanya mazuri!", + "Praise time!": "Muda wa kusifia!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Utakapomwona tena kijana wako, msifie kwa jambo moja analofanya vizuri!\n\nNa, je, ni lini mara ya mwisho ulipojisifia wewe mwenyewe au mtu mzima mwingine katika kaya yako? Jaribu kufanya hivyo!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @local.workshop_data.in_text_title uone jinsi WEWE unavyoweza kutumia sifa kwenye familia yako.", + "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?": "Habari @fields.user_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\n@global.workshop mpya inakungoja! Je, unaweza kubuni mada ya @global.workshop kutokana na picha hii?", + "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?": "Habari @fields.group_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\n@global.workshop mpya inakungoja! Je, unaweza kubuni mada ya @global.workshop kutokana na picha hii?", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Hongera kwa kutumia @global.parent_app ili kuwekeza kwa ajili yako na familia yako.\n\nJaribu @local.workshop_data.in_text_title ujipatie ujuzi mzuri sana wa malezi!", + "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.": "Habari @global.user_name, @global.workshop mpya inakungoja kesho. Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kwa kweli ni fupi sana (nakuahidi) – unaweza hata ukaimaliza wakati unasubiri chakula cha usiku kiive. Kwa nini usiipitie ukipata muda?\n\nKwa mara nyingine, asante kwa kutumia @global.parent_app.", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, @global.workshop kipya kitafunguliwa. Jaribu – utaona mabadiliko kwenye tabia ya kijana wako.", + "Think about the last time someone thanked you, or said you did something great.": "Kumbuka mara ya mwisho mtu alipokushukuru, au kusema umefanya jambo zuri sana.", + "How did it make you feel?": "Ulijisikiaje?", + "Parents usually don’t get thanked or praised enough.": "Mara nyingi wazazi hawashukuriwi au kusifiwa vya kutosha.", + "How does it make you feel when nobody says \"thank you\"?": "Je, unajisikiaje usipoambiwa \"asante\" na mtu yeyote?", + "Tired": "Uchovu", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Kijana wako anaweza pia kujisikia hivyo. Hicho ndicho kinachofanya nyenzo ya malezi ya wiki hii iwe rahisi lakini muhimu: Msifie anapofanya vizuri.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?", + "Why did she praise them?": "Kwa nini aliwasifia?", + "To get them to do it more often": "Ili kuwafanya wazidi kufanya hivyo mara nyingi", + "To help her finish her work": "Kumsaidia amalize kazi yake", + "To make them feel good": "Ili kuwafanya wajisikie vizuri", + "To make herself feel good": "Ili yeye mwenyewe ajisikie vizuri", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Mambo yote hayo ni ya kweli!\n\nPindi vijana wake wanapofurahi, @global.w_praise_female_caregiver_name hujisikia furaha. Na aliweza kufanya kazi zake.", + "Step 1: Share what went well and what was hard": "Hatua ya Kwanza: Shirikisha wengine mambo yaliyoenda vizuri na yaliyokuwa magumu", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "\"Nilijifunza mambo mengi zaidi kuhusu maisha ya kijana wangu tulipotumia muda wa pamoja wawili tu! Lakini baada ya siku ya kwanza, kijana wangu alitaka kucheza tu kwenye simu yake.\"", + "Step 2: Bring ideas!": "Hatua ya Pili: Changia mawazo!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "\"Hongera kwa kujaribu! Pengine unaweza kupendekeza mambo mengine ya kufurahisha unayoweza kufanya pamoja na kijana wako.\"\n\n\"Ndiyo, au mnaweza kufanya pamoja kitu fulani kwenye simu yake? Au anaweza kukuonyesha jinsi simu yake inavyofanya kazi?\"", + "Step 3: Pick and try one!": "Hatua ya Tatu: Chagua moja na ujaribu!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Asante kwa mawazo hayo mazuri sana! Ndiyo, nitamwomba kijana wangu anioneshe jinsi simu yake inavyofanya kazi kesho akitoka shule. Je, mmoja wenu anaweza kuigiza kama kijana wangu, ili nifanye mazoezi ya kuuliza?\"", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Matokeo ya usifiaji\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Jaribuni!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Matokeo ya usifiaji\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Shirikishaneni nyote:\n\n* Ni lini mara ya mwisho mtu alikushukuru au kusema umefanya jambo zuri sana? \n* Ulijisikiaje? \n* Je, unajisikiaje usiposhukuriwa au kusifiwa kwa kile unachokifanya? \n\nMara nyingi kama wazazi hatushukuriwi au kusifiwa vya kutosha. Pengine unaweza kuwapa vijana wako mfano sahihi kwa kuwasifia kwanza wanapofanya kitu vizuri!", + "Let's discuss this story.": "Hebu tujadili hadithi hii.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Jadili pamoja:\n\n* Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?\n* Kwa nini aliwasifia?", + "The same can work for you!": "Wewe pia unaweza kufanya hivyo!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name aliwasifia vijana wake...", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ili kuwafanya wazidi kufanya hivyo mara nyingi\n* Ili kumsaidia amalize kazi zake \n* Ili kuwafanya wajisikie vizuri \n* Ili yeye mwenyewe ajisikie vizuri", + "SEE IT": "ONA", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Tafuta kitu chochote anachofanya kijana wako kwa ajili ya kusaidia au kilicho kizuri, na umsifie kwa kitu hicho. Anaweza asioneshe furaha yake, lakini utamwona akifanya tena kitu hicho kizuri. Pia itamthibitishia kuwa unatambua anachokifanya na unajali.", + "SAY IT": "SEMA", + "Be enthusiastic – really mean it when you say it!": "Onyesha shauku – unaposema jambo, liseme kwa moyo wa dhati!", + "REPEAT IT": "RUDIA", + "Try to find something to thank them for every day. Even something really small.": "Jaribu kutafuta kitu cha kukufanya umshukuru kila siku. Hata kitu kidogo sana.", + "You can also praise other adults in your household, too. Notice how they respond!": "Unaweza pia kuwasifia watu wazima wengine kwenye kaya yako. Chunguza mwitikio utakavyokuwa!", + "Let's practice giving praise.": "Hebu tufanye mazoezi ya kusifia.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Shirikishaneni nyote:\n\n* Je, unaweza kumsifia kijana wako kwa kitu gani?\n* Je, ni kitu gani ambacho mtu mwingine amefanya vizuri kwenye kipindi hiki? Mwambie!\n* Je, ulijisikiaje kumsifia mtu?\n* Je, ulijisikiaje kusifiwa?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Wakati mwingine ni vigumu kufikiria kitu gani cha kumsifia kijana wako! Haya ni mawazo kutoka kwa wazazi wengine:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Kumtendea mtu wema\n* Kusafisha chumba chake\n* Kula pamoja na familia\n* Kuwasalimu wanafamilia wengine\n* Kuwatunza ndugu zake\n* Kuwahi kurudi nyumbani\n* Kuwafikiria wengine\n* Kusema 'tafadhali' au 'asante'\n* Kwenda shule\n* Kufanya kazi za nyumbani au kazi ya shule\n* Kumaliza wakati wa kula kwa amani", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Wiki hii, tengeneza sheria moja pamoja na kijana wako.\n\nKumbuka kumsifia kijana wako baadaye!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Sheria huwasaidia vijana kuelewa wanachotakiwa kukifanya.\n\nVijana wana uwezekano mkubwa wa kufuata sheria kama mtaweka sheria hizo PAMOJA na kumsifia anapozifuata!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Habari zenu?\n\nMada ya leo inahusu sheria.\n\nSheria huleta amani ndani ya kaya na maelewano miongoni mwa wanafamilia.\n\nSheria huleta uwajibikaji kwa kila mwanafamilia; kwa hiyo, ni muhimu kuwa na sheria za familia.\n\nKaya yenye sheria za familia huishi kwa amani.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Andika sheria moja muhimu ambayo ungependa kuiweka na kijana wako – hili ndilo litakuwa zoezi lako la nyumbani wiki hii.\n\nJe, atafikiria nini kuhusu sheria hii?", + "Have you managed to set a rule together with your teen?": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Wakati mwingine vijana wenu huonekana kama bado wamehamaki hata mnapokuwa mmefanya kadri muwezavyo. Kumbukeni kwamba mnafanya kazi nzuri sana, na mtapata pia nyakati nzuri za kufurahi nao pamoja!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @local.workshop_data.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", + "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Habari @fields.user_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", + "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Habari @fields.group_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Kwa mara nyingine, asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye safari yako ya malezi.\n\n@local.workshop_data.in_text_title itakuonesha jinsi ya kuweka sheria kwa namna itakayomsaidia kijana wako kuzielewa na kuzifuata vizuri zaidi.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kesho warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Haitachukua muda mrefu na itamsaidia kijana wako kufuata sheria vizuri zaidi!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, warsha mpya itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", + "They discussed the reasons behind the rule": "Walijadili sababu za kuwekwa kwa sheria hiyo", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy", + "The rule was clear, specific and fair": "Sheria hiyo ilikuwa wazi, maalum na ya haki", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria", + "That's right, making clear rules together in a calm and positive way works so well!": "Hiyo ni kweli, kuweka sheria zilizo wazi kwa kushirikiana na kwa njia ya utulivu na chanya huleta mafanikio makubwa!", + "She praised him": "Alimsifia", + "She rewarded him when he followed the rule": "Alimzawadia alipofuata sheria", + "Exactly - a positive response makes all the difference!": "Sawasawa – mwitikio chanya huleta mabadiliko makubwa!", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Hili ni jambo zuri sana. Kila mojawapo ya tabia hizi huifanya familia yako kuwa imara zaidi. Jivunie.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "What went well here in making a rule together?": "Kwa kuweka sheria pamoja, jambo gani lilienda vizuri hapa?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Je, unafikiri @global.w_rules_teen_boy alijuaje kuwa @global.w_rules_female_caregiver_1 wake anamthamini?", + "Making the rule together went well because...": "Kutengeneza sheria pamoja kulienda vizuri kwa sababu...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Walijadili sababu za kuwekwa kwa sheria hiyo\n* @global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy\n* Sheria hiyo ilikuwa wazi, maalum na ya haki\n* @global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria hiyo", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy alijua kuwa @global.w_rules_female_caregiver_1 wake alimthamini kwa sababu...", + "* She praised him\n* She rewarded him when he followed the rule": "* Alimsifia\n* Alimzawadia alipofuata sheria", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Sheria za kaya husaidia kuwaweka vijana wetu salama, na kuelewa kinachotarajiwa kutoka kwao. Unapomhusisha kijana katika kutengeneza sheria, anakuwa na uwezekano mkubwa wa kuzifuata.", + "TEAM RULES": "SHERIA ZA KIKUNDI", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Panga sheria PAMOJA NA kijana wako. Anza kwanza na sheria mpya moja – unaweza kuongeza nyingine baadaye. Jadilini sababu za kuweka sheria na usikilize maoni yake.", + "REAL RULES": "SHERIA ZINAZOTEKELEZEKA", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Zifanye ziweze kutekelezeka kwa kijana wako, na uwe wazi na bayana ili kusitokee kutokuelewana. Usiseme 'kwa wakati', sema 'ifikapo saa 1 jioni'.", + "PRAISE RULES!": "SHERIA ZA USIFIAJI!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Msifie kijana wako kwa kuweka sheria pamoja na wewe, na msifie kwa kuifuata!", + "Let's practice making rules.": "Hebu tufanye mazoezi ya kutengeneza sheria.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Je, ni sheria gani moja muhimu ambayo kila mmoja wenu angependa kuiweka na kijana wake?\n* Je, unadhani kijana wako atafikiriaje kuhusu sheria hiyo?\n\nKumbuka, sheria ziwe bayana na zinazotekelezeka!", + "Here are some of the rules other families created:": "Hapa kuna baadhi ya sheria zilizowekwa na familia nyingine:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Kijana anaweza kucheza nje baada ya kumaliza kazi ya nyumbani\n* Wanafamilia wote watakula mlo wa usiku pamoja\n* Kijana \"A\" ataosha vyombo siku ya Jumapili na Jumatatu, Kijana \"B\" siku ya Jumanne na Jumatano\n* Tutazungumza baina yetu kwa adabu na kwa wema\n* Unaposikiliza muziki, unatakiwa kutumia vifaa vya kusikilizia", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Wewe na kijana wako choreni ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote wawili mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Kama bado hamjafanya hivyo pamoja, choreni ramani mbili za maeneo salama na yasiyo salama wewe na kijana wako:\n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Vijana wanaweza kutumia muda mwingi nje ya nyumba au mtandaoni, ambako ni vigumu kwetu kuwaweka salama.\n\nKuzungumza pamoja kuhusu maeneo salama na yasiyo salama, na jinsi ya kuzuia matatizo, husaidia sana!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Habari zenu?\n\nLeo mada yetu inahusu usalama wa vijana.\n\nKama wazazi, ni jukumu letu kuwaweka salama vijana wetu wakati wote. Tunahitaji kuhakikisha kuwa vijana wetu wako salama katika jamii tunazoishi. Ni jukumu letu kuwafahamisha maeneo salama na yasiyo salama katika jamii hizo.\n\nPia ni jukumu letu kuhakikisha kwamba wanaelewa hatari zinazoweza kuwakabili wanapokuwa mtandaoni. Kwa njia hiyo, vijana wetu watawajibika na wataweza kufanya maamuzi sahihi ya kujiweka salama.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Jadilini pamoja:\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi. \n\nHapa chini kuna maeneo yanayoweza kukusaidia", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Wakati mwingine, tunaweza kujikuta matatani.\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Wasifie kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya mtandao yawe salama kwa vijana wenu na marafiki zao?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambamo wanaweza kujiingiza!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Kila wakati unapopanga mpango wa usalama au unapouzingatia, bofya @global.parent_point ili usherehekee mafanikio yako!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Hebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii – kama kijana wako yuko hapa sasa, mnaweza kufanya pamoja sasa!", + "My family can join in now!": "Familia yangu inaweza kujiunga sasa!", + "Let me try it out by myself": "Ngoja niijaribu peke yangu", + "Safety Plan": "Mpango wa Usalama", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambazo wanaweza kuzijingiza!\n\nHebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nHebu sasa tuchore ramani hizo kama kikundi.\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii.", + "Step 1: What are important places in your community?": "Hatua ya Kwanza: Je, yapi ni maeneo muhimu katika jamii yako?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora ramani ya jamii ya kijana wako, ikiwa na picha za maeneo yote muhimu kama barabara, nyumba yako, shule, maduka, maeneo anayotembelea kijana wako.", + "Step 2: Which places are safe and unsafe?": "Hatua ya Pili: Je, maeneo yapi ni salama na yapi si salama?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Jadilini pamoja:\n\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "Step 3: Where can you get support?": "Hatua ya Tatu: Je, unaweza kupata wapi msaada?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n \n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", + "Resources to help in the community": "Rasilimali za msaada katika jamii", + "Step 4: What are risky places online and how can you make them safer?": "Hatua ya Nne: Je, maeneo gani mtandaoni ni ya hatari na unawezaje kuyafanya yawe salama zaidi?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", + "Online Safety Resources": "Rasilimali za Usalama Mtandaoni", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Huu ni wakati mgumu zaidi wa kuwa mzazi. Unapaswa kujionea fahari kwa kila kitu ulichofanya.\n\nKumbuka kila wakati ulipomfanya kijana wako atabasamu na matunzo yote uliyompa. Wazazi ni wazuri sana, na wewe pia ni mzuri!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ili kijana wako awe salama, ni vizuri mpige soga pamoja kuhusu jamii yenu na shughuli zake mtandaoni.\n\nMaliza @local.workshop_data.in_text_title halafu utaona jinsi unavyoweza kufanya jambo hili!", + "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Asante kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", + "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Habari @fields.group_name! unakaribia kumaliza warsha zako za @global.parent_app! Asante kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Umepata ujuzi mwingi wa malezi kwa wiki kadhaa zilizopita!\n\nMaliza warsha inayofuata ili kupata ujuzi mwingine wa kukusaidia.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kuweka mpango pamoja na kijana wako kunaweza kuzuia matatizo mengi – jaribu kufanya hivyo kabla ya kuendelea!\n\nHongera kwa kutumia @global.parent_app ili kuisaidia familia yako.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Hongera, umemaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi", + "@global.w_safe_teen_girl_1's friend was encouraging her": "Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani", + "Many girls in our communities get pregnant or catch HIV from older men": "Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "Hebu tufikirie kuhusu kile kilichotokea kwa @global.w_safe_teen_girl_1:", + "What was risky about that situation?": "Kitu gani kilikuwa cha hatari kwenye tukio hilo?", + "All those things are true!": "Mambo yote hayo ni ya kweli!", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", + "Let's think about our teens' online safety.": "Hebu tufikirie usalama wa vijana wetu mtandaoni.", + "What is the biggest online risk for teens these days?": "Je, ipi ni hatari iliyo kubwa zaidi kwa vijana mtandaoni siku hizi?", + "Doing any of these makes you a great parent.": "Kufanya jambo lolote kati ya haya hukufanya uwe mzazi mzuri sana.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "Hebu tuzungumzie kile kilichotokea kwa @global.w_safe_teen_girl_1", + "Discuss together: \n\nWhat was risky about that situation?": "Jadilini pamoja:\n\nKitu gani kilikuwa cha hatari kwenye tukio hilo?", + "The situation was risky because...": "Tukio hilo lilikuwa la hatari kwa sababu...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi\n* Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo\n* Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani\n* Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa\n* Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", + "Let's talk about our teens' online safety.": "Hebu tuzungumzie usalama wa vijana wetu mtandaoni.", + "What are some of the online risks for teens these days?": "Je, ni zipi hatari za mtandaoni kwa vijana siku hizi?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono\n* Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine\n* Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua\n* Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha\n* Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", + "MAPS": "RAMANI", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Tengeneza RAMANI na kijana wako juu ya maeneo salama na yasiyo salama kwenye jamii yenu na mtandaoni. Zungumzieni jinsi ya kufanya taarifa, picha na video zake ziwe za faragha mtandaoni. Zungumzieni jinsi ambavyo kitu kikishawekwa mtandaoni, kitakaa hapo daima. Anaweza kuwa na mfano hai kutoka kwa marafiki zake.", + "Safety Plan Activity": "Shughuli ya Mpango wa Usalama", + "RULES": "SHERIA", + "Make RULES with your teen about how they can stay safe in your community (especially in risky areas that cannot be avoided) and how they can safely use the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Tengeneza SHERIA na kijana wako kuhusu namna gani wanaweza kuwa salama katika jamii yako (hususani katika maeneo hatarishi ambayo hayawezi kuepukika) na namna wanaweza kutumia kwa usalama programu tumishi na mitandao ambayo wanayopenda.\n\nUnakumbuka hadithi kuhusu Usalama Mtandaoni? Angalia tena hapa.", + "Online Safety Story": "Hadithi ya Usalama Mtandaoni", + "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.": "Kubaliana kuhusu @global.safety_word. Kama kitu kikitokea ambacho kitamfanya kijana wako akasirike, kukosa uhuru au kuogopa, wanaweza kusema @global.safety_word na utawasaidia bila kukasirika au kuwaadhibu, hataka kama walikuwa wanafanya kitu ambacho sio sahihi.\n\nKumbuka hadithi kuhusu @global.safety_word? Angalia tena hapa.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Malezi yanayohusu masuala ya kidijitali ni sawa tu na malezi ya masuala mengine maishani. Umepiga HATUA KUBWA ya kumweka salama kijana wako katika jamii NA mtandaoni. Ni jambo zuri kwako!", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Umekamilisha kipindi cha wiki hii.\n\nTutafanya tena baadhi ya shughuli za kujithamini utakapokutana na kikundi chako kwa mara ya kwanza – nyote mnastahili muda wa ziada wa kujithamini.", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Kila mara uwezapo, jiburudishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Kila mara unapojiburudisha, tambua kitu ulichofanya vizuri au kujipongeza, vuna @global.parent_points ili kusherehekea mafanikio yako!", + "Why @data.workshop.w_self_care.short_title?": "Kwa nini @data.workshop.w_self_care.short_title ni muhimu?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Mara nyingi hatujithamini vya kutosha. Lakini kufanya hivyo ni muhimu sana, hasa kwa mzazi!\n\nKupunguza msongo wa mawazo na kujithamini vizuri hutusaidia sisi PAMOJA NA vijana wetu.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Habari zenu?\n\nMada ya leo inahusu kujithamini wenyewe.\n\nKuna nyakati tunapata changamoto, ambapo tunakabiliwa na matatizo na hatujui cha kufanya. Ni muhimu kujithamini kwa kujifunza mbinu tunazoweza kuzitumia kuwa watulivu iwapo matatizo, changamoto au shida zitatokea.\n\nTunapokuwa watulivu, tunakuwa katika hali nzuri ya kufikiria vizuri na kupata ufumbuzi chanya wa changamoto zozote tunazoweza kukabiliwa nazo.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Kumbuka - Hii wiki ni kuhusu WEWE! Tunatumaini unajitunza vizuri. Unastahili jambo hili!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!": "Je, tayari umeshawaambia washirika wako wa @global.parent_app kuhusu programu hii? Kuanzia kesho, mnaweza kuanza kufanya pamoja @global.workshop zenu za @global.parent_app!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Kumakinikia kile tunachokifanya vizuri hutusaidia kuzingatia mambo chanya.\n\nHebu tutumie muda kujisifia. Tutakuonyesha jinsi ya kujisifia.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.\n\nSemezaneni kwa sauti: \"Ninajipongeza kwa...\"\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Tumia muda kujisifia.\n\nSasa tutakuonyesha jinsi ya kujisifia.", + "Think of one thing YOU have done well recently.": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.", + "\"Well done to me for...\"": "\"Ninajipongeza kwa...\"", + "Showing love to my children": "Kuonyesha upendo kwa watoto wangu", + "Getting up even though I felt tired": "Kuamka hata kama nilijisikia uchovu", + "Smiling at someone": "Kutabasamu", + "Making food to stay strong": "Kupika chakula cha kunipa nguvu", + "Spending time with my children": "Kutumia muda kukaa na watoto wangu", + "Helping my children with schoolwork": "Kuwasaidia watoto wangu kazi za shule", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Sema kwa sauti kama unaweza.\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", + "Things to praise yourself for:": "Mambo ya kujisifia:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Kuonyesha upendo kwa watoto wako\n* Kuamka hata kama ulihisi uchovu\n* Kutabasamu\n* Kupika chakula cha kukupa nguvu\n* Kutumia muda kukaa na watoto wako\n* Kuwasaidia watoto wako kazi za shule", + "Let's try it out and do a short relaxation activity together!": "Hebu tujaribu na kufanya pamoja shughuli fupi ya kujiburudisha!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Kama wazazi, mara nyingi hatuna muda wa kujithamini – lakini kujithamini ni muhimu sana! Kupunguza msongo wa mawazo hutusaidia sisi PAMOJA NA vijana wetu.\n\nHebu tupige hatua ya kwanza na tufanye pamoja shughuli fupi ya kujiburudisha.", + "Well done! Try to do this every day.": "Hongera! Jaribu kufanya hivyo kila siku.", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Kujithamini sisi wenyewe ni ujuzi muhimu wa malezi. Shirikishaneni nyote:\n\nJe, ni vitu gani vidogo vinavyokufurahisha?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Jaribu kufanya kitu cha kujipongeza kila siku.\n\nUnaweza kutumia ujuzi huu nyumbani. Utaupata wakati wowote kwenye @global.parent_centre!", + "We all deserve to treat ourselves well!": "Sisi sote tunastahili kujitendea vizuri!", + "What small thing makes you happy?": "Je, ni kitu gani kidogo kinachokufurahisha?", + "Nice! Taking care of yourself is an important parenting skill!": "Safi! Kujithamini wewe mwenyewe ni ujuzi muhimu wa malezi!", + "Try to do something to reward yourself every day.": "Jaribu kufanya kitu cha kujipongeza mwenyewe kila siku.", + "Have a hot drink": "Kunywa kinywaji cha moto", + "Call a friend or relative": "Mpigie simu rafiki au jamaa", + "Have a relaxing bath": "Oga kwa kujiburudisha", + "Read": "Soma", + "Things you can do to reward yourself:": "Vitu unavyoweza kufanya ili kujipongeza:", + "Sleeping": "Kulala", + "Talking with a friend": "Kuongea na rafiki", + "Doing something I enjoy": "Kufanya kitu ninafurahia", + "Doing something relaxing": "Kufanya kitu cha kupumzika", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Leo utaona shughuli 3 zinazoweza kukusaidia kujithamini, na tutakuuliza maswali kadhaa ili kuhakikisha kuwa programu hii iko sawa kabisa kwa ajili yako.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Shughuli ya kujiburudisha\n* Shughuli ya kujitambua\n* Shughuli ya kujipongeza\n* Nyenzo: Jinsi ya kujithamini\n* Rekebisha programu hii\n* Mazoezi ya nyumbani yanayopendekezwa", + "Customise your @global.parent_app": "Rekebisha @global.parent_app yako", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Sasa kwa kuwa tumejifunza kwa kiasi fulani ujuzi wa kujithamini, hebu tuhakikishe @global.weekly_workshops ziko sahihi kabisa kwa ajili yako.", + "You seem to have completed the customisation process already. You can now skip this activity.": "Inaonekana tayari umemaliza kufanya marekebisho. Sasa unaweza kuruka shughuli hii.", + "RELAX": "Chukua pumziko", + "Do a 30 second quick relaxation activity.": "Fanya shughuli ya kuchukua pumziko ya haraka kwa sekunde 30.", + "Relax activity": "Shughuli ya kujiburudisha", + "RECOGNISE": "TAMBUA", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni! Sema kwa sauti kama unaweza: \"Ninajipongeza kwa…\"", + "Recognise activity": "Shughuli ya kujitambua", + "REWARD": "TUZO", + "Remember you deserve your quality time too! What makes you happy?": "Kumbuka unastahili pia kuwa na wakati bora! Ni nini kinachokufurahisha?", + "Reward activity": "Shughuli ya kujipongeza", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Wafundishe vijana wako hatua nne za kutatua matatizo:\nELEWA – TATUA – CHAGUA – JARIBU\n\nTumieni hatua hizi tatizo linapojitokeza.\n\nJambo baya linapotokea, mara nyingi tunafadhaika na kulaumu. Lakini kile ambacho vijana wetu wanahitaji ni mtu wa kuwasaidia kulitatua tatizo. Wasikilize, kubali jinsi wanavyoyaona mambo na kuyahisi, na washukuru kwa kukuamini.\n\nKumfundisha kijana wako jinsi ya kutatua matatizo kutamsaidia maishani mwake mwote. Zawadi iliyoje!", + "Some problems other parents solved with their teens:": "Baadhi ya matatizo ambayo wazazi waliyatatua na vijana wao:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Kijana wangu hataki kwenda shule\n* Nina wasiwasi kijana wangu atapata ujauzito au atampa mtu mjamzito\n* Nina wasiwasi kuhusu anachofanya kijana wangu mtandaoni\n* Kijana wangu ana marafiki wabaya\n* Kijana wangu ni mvivu\n* Kijana wangu hafanyi kazi zake za shuleni\n* Huenda kijana wangu anatumia madawa ya kulevya", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Kila familia hukabiliwa na changamoto, lakini tunapofanya kazi pamoja tunaweza kushughulikia matatizo kwa njia iliyo bora na ya amani.\n\nNi ujuzi mzuri sana kwa kijana wako pia kujifunza!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Habari zenu?\n\nMada ya leo inahusu kutatua matatizo.\n\nSote tunajua kuwa katika maisha kuna nyakati tunakabiliwa na matatizo, na sote tunajua kwamba tunapojikuta katika nyakati hizo, ni vigumu kufikiria haraka ufumbuzi chanya.\n\nKwa hiyo, tunapokabiliwa na matatizo ni muhimu tupumzike, tupumue, tutulie na tufikirie ujuzi wa kutatua matatizo tunaoweza kuutumia. \n\nTunapotatua matatizo, tukumbuke kuwashirikisha vijana wetu. Kufanya hivyo kutawasaidia kuwajibika na kujifunza jinsi ya kutatua matatizo yao wenyewe siku zijazo.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Hebu turudi kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake ili tuone njia za utatuzi walizotumia.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake walipata njia tatu za utatuzi.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Kuwalea vijana ni kazi ngumu sana.\n\nMara nyingi huwa hakuna njia za utatuzi zilizo rahisi na zilizonyooka, lakini sasa @global.w_solve_female_caregiver_1 amejifunza kwamba kumbe anaweza kuzungumza mambo haya na binti yake.\n\nKabla, alikuwa akipata wasiwasi peke yake, lakini sasa wanaweza kutafuta pamoja njia za utatuzi!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Je, tayari umejaribu kutumia hatua nne za kutatua matatizo na kijana wako?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Kujitolea kwako ni mfano wa kuigwa na kila mtu. Tulia na uendelee!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @local.workshop_data.in_text_title ili upate ujuzi mwingine muhimu wa malezi!", + "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you how to deal with them.": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana inamaanisha kuwa na matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana inamaanisha kuwa na matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next @global.workshop to learn how to successfully address these problems.": "Unapokuwa na vijana, na katika maisha haya, matatizo yasiyotarajiwa hutokea na tunapaswa kukabiliana nayo.\n\nAnza @global.workshop inayofuata ili kujifunza jinsi ya kutatua matatizo hayo kwa mafanikio.", + "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!": "Kesho, @global.workshop mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza @global.workshop mpya. Kufahamu namna ya kutatua matatizo pamoja kutasaidia katika nyakati mbalimbali!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Fumba macho yako, vuta pumzi, na elewa kwamba kila kitu ulichokifanya ni cha muhimu sana.", + "Ground @global.w_solve_teen_girl for a month": "Mzuie @global.w_solve_teen_girl kwenda kutembea kwa mwezi mmoja", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: \"Mwezi ujao hutaweza kwenda huko nje kutembea.\"", + "That didn’t work... Let's try something else.": "Hiyo haikufanikiwa... Hebu tujaribu kitu kingine.", + "Return the phone and save up": "Rudisha simu na uanze kujiwekea akiba", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: \"Simlaumu rafiki yako wala sioni wivu. Nina wasiwasi kwamba mtu anapokupatia zawadi, ni vigumu kumkatalia atakapokuomba umlipe fadhila – kama vile ngono. Kama unataka kuwa na simu, tutajiwekea akiba pamoja ili uweze kufanya maamuzi yako mwenyewe bila yeye kukudai chochote.\"", + "This is great! Try the third option as well.": "Hilo ni jambo zuri sana! Jaribu pia chaguo la tatu.", + "Learn about safe sex": "Jifunze kuhusu ngono salama", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: \"Hii inanifanya nitambue kuwa tunapaswa kuzungumza kuhusu marafiki wa kiume na jinsi unavyoweza kujikinga. Vijana wengi wa rika lako wanapata mimba au VVU. Hebu twende kliniki uzungumze na muuguzi ili ujifunze jinsi unavyoweza kujikinga.”", + "This is great!": "Hilo ni jambo zuri sana!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Hadith & tafakari – ambayo haikufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Jadilini pamoja:\n\nJe, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Je, unamkumbuka @global.w_solve_teen_girl na simu aliyopewa na mvulana?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Je, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "Take a few deep breaths to calm down, and": "Vuta pumzi ndefu mara kadhaa upate kutulia, kisha", + "KNOW IT": "FAHAMU", + "Identify the problem.": "Bainisha tatizo.", + "SOLVE IT": "TAFUTA UTATUZI", + "Think of possible solutions and what would happen if we used them.": "Fikiria njia za utatuzi zinazowezekana na kile kitakachotokea kama tutazitumia.", + "TRY IT": "JARIBU", + "Choose a solution and try it out.": "Chagua njia ya utatuzi na uijaribu.", + "TEST IT": "JARIBU", + "Did it work? Great! If it did not work, then try another solution.": "Je, imefanikiwa? Safi sana! Kama haikufanikiwa, basi jaribu njia nyingine ya utatuzi.", + "Let's practice problem-solving!": "Hebu tufanye mazoezi ya kutatua matatizo!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Fanyeni mazoezi pamoja kuhusu tatizo lililopo sasa. Mmoja wenu awe mzazi na mwingine awe kijana.\n\nSifianeni na kutiana moyo – tunawaonea fahari!\n\nKumbukeni zile hatua:\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Umemaliza kipindi cha wiki hii.\n\nWiki ijayo, tutazungumza kuhusu pesa – utahitaji:\n* kipande cha karatasi ya kawaida/karatasi nene\n* kalamu\n* mawe madogo/maharage/punje 20\n\nItakuwa raha!", + "There are two home practices for this week.": "Kuna mazoezi mawili ya nyumbani wiki hii.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Wakati wowote unapohisi msongo wa mawazo au kufadhaika: vuta pumzi na kuzishusha mara tano kabla ya kufanya chochote.\n\nNyote wawili mtakapokuwa mmetulia, mshirikishe kijana wako jinsi unavyojisikia.", + "Choose a \"@global.safety_word\" with your teenager, and think of a situation together when you could use this.": "Chagua \"@global.safety_word\", na kijana wako na mfikiri kwa pamoja mazingira ambayo mnaweza kutumia.", + "@global.safety_word Story": "Hadithi ya @global.safety_word", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Kila mara unapotulia kidogo kabla ya kujibu, au kila wakati unapofanya jambo fulani ili kumweka salama kijana wako, vuna @global.parent_points zako na usherehekee mafanikio yako!", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Tunajua jinsi kulea vijana katika nyakati hizi kunavyoleta msongo wa mawazo. Kujifunza namna ya kudhibiti msongo wa mawazo hukusaidia wewe – na familia yako.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that make us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Salamu kwa wote.\n\nKipindi cha leo ni kukabiliana na msongo wa mawazo.\n\nNi muhumu kufahamu namna ya kukabiliana na msongo wa mawazo. Wakati mwingine, watoto wetu wanaweza kuwa na tabia zinazotupa mawazo na sisi kama wazazi tunaweza kuwafanya watoto wetu wawe na mawazo pia.\n\nKwa hiyo, ni muhumimu kutambua wakati tunahisi mawazo kisha tutulie na kuvuta pumzi ndefu. Hii itakusaidia kukabiliana na msongo wa mawazo.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Je, hali yako ya msongo wa mawazo ilikuwaje wiki hii? Jaribu kuvuta pumzi ndefu mara kadhaa kabla ya kumjibu kijana wako – kufanya hivyo kunaleta mabadiliko makubwa.", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Je, una furaha, huzuni, hasira, taharuki au wasiwasi? Vizuri sana kwa kutambua jinsi wewe na wengine mlivyojisikia leo! Na kumbuka, kesho ni siku mpya.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Wakati mwingine sisi sote huhisi kulemewa. Kuvuta pumzi ndefu husaidia!\n\nMaliza @local.workshop_data.in_text_title ili kupata baadhi ya nyenzo muhimu za kukabiliana na msongo wa mawazo.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\n@global.workshop mpya ya malezi inakusubiri ikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\n@global.workshop mpya ya malezi inakusubiri ikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", + "We have a new @global.workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Tuna @global.workshop kipya kwa ajili yako kinachohusu kudhibiti hasira na msongo wa mawazo. Itakusaidia kujithamini zaidi.", + "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kesho @global.workshop kipya kabisa ya @global.parent_app kitakuwa tayari kwa ajili yako.\n\nKwa kumalizia kwanza @local.workshop_data.in_text_title, utajiwekea msingi mzuri sana: Wewe utakapojisikia vizuri, familia yako nayo itajisikia vizuri!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya na kitakusaidia kupumzika na kujifunza ujuzi muhimu sana!", + "Recognise why he feels stressed": "Kutambua kwa nini anahisi msongo wa mawazo", + "Take a deep breath and speak calmly": "Kuvuta pumzi ndefu na kuzungumza kwa utulivu", + "Show he understands his teen’s feelings": "Kuonesha kuwa anaelewa hisia za kijana wake", + "Think about solutions together with @global.w_stress_teen_boy_1": "Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1", + "Do something positive together with @global.w_stress_teen_boy_1": "Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", + "Let's think about what happened in this story.": "Hebu tufikirie kuhusu kilichotokea kwenye Hadithi hii.", + "How do you think @global.w_stress_teen_boy_1 felt?": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje?", + "And @global.w_stress_male_caregiver?": "Na @global.w_stress_male_caregiver, je?", + "And @global.w_stress_girl?": "Na @global.w_stress_girl, je?", + "Sad": "Huzuni", + "Scared": "Kuogopa", + "Confused": "Kuchanganyikiwa", + "Angry": "Hasira", + "Each of them was feeling upset for their own reason!": "Kila mmoja wao alihisi kufadhaika kwa sababu zake mwenyewe!", + "What could @global.w_stress_male_caregiver have done differently?": "Je, @global.w_stress_male_caregiver angeweza kufanyaje tofauti?", + "Having a @global.safety_word can help your teen stay safe too.": "Kuwa na @global.safety_word inaweza kumsaidia kijana wako kuwa salama pia.", + "You can choose any word as a @global.safety_word. Only your family knows it means ‘help’. \n\nYour teen can say this word to let you know they are in trouble without you getting angry or punishing them, so you can help them.": "Unaweza kuchagua neno lolote kama @global.safety_word. Ni familia yako tu inajua linamaanisha 'msaada'.\n\nKijana wako anaweza kusema neno hili kukujulisha wanapokuwa katika matatizo pasipo wewe kuwa na hasira au kuwaadhibu, ili uweze kuwasaidia.", + "What @global.safety_word can you choose with your teen?": "Ni nini @global.safety_word unaweza kuchagua na kijana wako?", + "Your teen can say:\n\"I saw...\"\n\"I look forward to...\"\n\"Did you remember to…?\"\n\nYou respond calmly and give your teen an excuse why they need to come home.": "Kijana wako anaweza kusema:\n\"Nimeona...\"\n\"Ninatazamia...\"\n\"Ulikumbuka ku...?\"\n\nUnajibu kwa utulivu na kuwaambia vijana wako kwa nini wanatakiwa kuja nyumbani.", + "A specific food": "Chakula maalum", + "A specific family member": "Mwanafamilia maalum", + "A specific animal": "Mnyama maalum", + "Something else": "Kitu kingine", + "This is fantastic, especially in such difficult times as this. You are a star.": "Hiyo ni nzuri, hasa kwenye nyakati ngumu kama hizi. Wewe ni mshindi.", + "Today you will explore:": "Leo mtachunguza:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONYESHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONESHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "Let's discuss what happened in this story.": "Hebu tujadili kilichotokea kwenye hadithi hii.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje? Na @global.w_stress_male_caregiver wake, je? Na @global.w_stress_girl, je?\n\nJe, @global.w_stress_male_caregiver angeweza kufanyaje badala yake?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver angeweza...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Kutambua kwa nini anahisi msongo wa mawazo\n* Kuvuta pumzi ndefu na kuzungumza kwa utulivu\n* Kuonyesha kuwa anaelewa hisia za kijana wake\n* Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1\n* Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", + "BREATHE. Slowly. Pause.": "VUTA PUMZI. Polepole. Tulia.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Kabla ya kusema chochote, vuta pumzi polepole na kuzishusha mara tano. Kufanya hivyo kutakutuliza, na kukupa nafasi ya kufikiria.", + "SHARE how you feel": "SHIRIKISHA WENGINE jinsi unavyohisi", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Hili ni jambo gumu. Wengi wetu tuliambiwa tusilie, au kuonesha hisia zetu kwa watoto wetu. Lakini vuta pumzi ndefu na uwaambie kwa utulivu jinsi unavyohisi. Wataelewa vizuri, na pia watajifunza kutoka kwako jinsi ya kukabiliana na msongo wa mawazo.", + "SHOW them you care": "WAONESHE kuwa unawajali", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Hili pia ni jambo gumu! Msongo wa mawazo hutufanya tujiangalie sisi wenyewe. Lakini vijana wetu wanahitaji msaada wetu. Waulize wanajisikiaje. Wasikilize na uwafariji. Jaribu kuwakumbatia au sema 'Ninaelewa'. Kufanya hivyo kunaweza kubadilisha kila kitu.", + "SEEK the positive": "TAFUTA mambo chanya", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Je, wewe na kijana wako mnaweza kufikiria mawazo yanayoweza kusaidia? Je, mnaweza kufanya pamoja kitu chanya ili kuhamisha mawazo yako kutoka kwenye msongo wa mawazo?", + "If all else fails, breathe. You can do this.": "Kama mengine yote hayatafaulu, vuta pumzi. Unao uwezo wa kulishinda hili.", + "This big button takes you to the @global.workshop you are currently exploring. Tap this to find:": "Hiki kitufe kikubwa kitakupeleka kwenye @global.workshop unayopitia kwa sasa. Gusa hiki kukipata.", + "Have a look around! Wherever you start, just the fact you are here shows you care.": "Angalia! Popote utakapoanzia, ukweli ni kwamba kuwepo hapa inaonesha unajali.", + "This big button takes you to the @global.workshop you are currently exploring. Tap it to find:": "Hiki kitufe kikubwa kitakupeleka kwenye @global.workshop unayopitia kwa sasa. Gusa hiki kukipata:", + "A set of activities to help you build a parenting skill.": "Kazi za kukusaidia kujenga mbinu za malezi.", + "Quick reminders on how to successfully use a parenting skill.": "Ukumbusho wa haraka jinsi unavyoweza kutumia ujuzi wa malezi kwa mafanikio.", + "One easy idea on how you can apply a new skill with your family.": "Ukumbusho wa haraka jinsi unavyoweza kutumia ujuzi wa malezi kwa mafanikio.", + "Here you can select any of the other @global.workshops in @global.parent_app. Each @global.workshop gives you one important parenting skill. Swipe to see the next @global.workshops.": "Hapa unaweza kuchagua @global.workshops nyingine yoyote katika @global.parent_app. Kila @global.workshops inakupa ujuzi muhimu wa malezi.", + "You can explore any @global.workshop whenever you want. To see the biggest change in your family, complete all the activities in one @global.workshop before moving to the next one.": "Unaweza kuchunguza @global.workshop yoyote wakati wowote unaotaka. Kuona mabadiliko makubwa katika familia yako, maliza shughuli zako katika moja ya @global.workshop kabla ya kuhamia nyingine.", + "Tap here whenever you enter @global.parent_app! You will find 3 short activities that you can do next to help yourself and your family.": "Bonyeza hapa kila unapoingia kwenye @global.parent_app! Utapata shughuli tatu fupi unzaoweza kufanya zikusaidie wewe na familia yako.", + "The HOUSE button brings you back to the home screen at any time.": "Kitufe cha NYUMBA kinakurudisha kwenye skrini ya kwanza wakati wowote.", + "The STAR button takes you to the @global.parent_points. Each new parenting skill comes with a @global.parent_point. @global.parent_points help you celebrate your achievements.": "Kitufe cha NYOTA kinakupeleka wewe kwenye @global.parent_points. Kila ujuzi mpya wa malezi huja na @global.parent_point. @global.parent_points inakusaidia wewe kusherehekea mafanikio.", + "Tap the BOOK button to go to the @global.parent_centre. Check out the extra relaxation activities and ideas for fun things to do with your teen! You can also find contact details for support services in your area and for technical support with @global.parent_app.": "Gusa kitufe cha KITABU ili kwenda kwenye @global.parent_centre. Angalia kazi za zaidi za kupumzika na mawazo ya kufurahisha kufanya na kijana wako! Unaweza pia kupata taarifa za mawasiliano za msaada katika eneo lako na msaada wa kiufundi kwenye @global.parent_app.", "Welcome to @global.parent_app": "Karibu kwenye @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Karibu kwenye @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unastahili kujisikia vizuri, na kuwa na uhusiano wa kifamilia wenye furaha zaidi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app itakusaidia wewe na familia yako kwa namna tatu:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kitufe hiki kikubwa kitakupeleka kwenye @global.weekly_workshops zako

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Utapata warsha mpya kwa ajili yako mara moja kwa wiki – kila warsha italenga ujuzi tofauti wa malezi. Bonyeza kitufe ili kuanza warsha yako ya kwanza!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kitufe cha duara kitatokea pindi @global.weekly_workshop mpya inapokuwa tayari kwa ajili yako.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bonyeza kitufe hiki kikubwa kikupeleke kwenye skrini yako ya @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fuatilia mafanikio yako kuhusu kujitunza na malezi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Angalia maendeleo yako.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Sherehekea mafanikio yako ya kila siku!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kitufe hiki kitakupeleka kwenye @global.parent_centre

                                                                                                                                                                                  Kimeshehenezwa rasilimali unazozihitaji wakati wowote unapozitaka.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kufika haraka sehemu za msaada kwenye @data.parent_centre.essential_tools kwa kila ujuzi.

                                                                                                                                                                                  \n\n\n\n

                                                                                                                                                                                  Taarifa za ziada na rasilimali janibu.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Vyovyote utakavyoanza, kule tu kuwa hapa kunaonesha unajali.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Unastahili kujisikia vizuri, na kuwa na mahusiano ya furaha zaidi ya kifamilia.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app iko hapa kukusaidia.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hapa ni jnsi unavyoweza kutumia programu:

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hiki kitufe kikubwa kinakupeleka katika @global.weekly_workshops.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each week you will unlock a new @global.workshop focusing on a different parenting skill.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kila wiki utafungua @global.workshop mpya ikijikita katika ujuzi tofauti wa malezi

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  The round button appears when a new @global.workshop is ready for you.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kitufe cha duara kitatokea pindi @global.workshop mpya inapokuwa tayari kwa ajili yako.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kila ujuzi mpya wa malezi huja na @global.parent_point.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tumia @global.parent_points kusherehekea mafanikio yako!

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Find lots of helpful resources in the @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can get instant access to the Essential Tools from all @global.weekly_workshops.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Pata rasilimali nyingi za kukusaidia katika @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unaweza kupata uwezo wa papo kwa hapo kupata Nyenzo Muhimu kutoka katika @global.weekly_workshops.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Angalia shughuli za ziada za kupumzika na malezi!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unaweza pia kupata dondoo za malezi na msaada wa kiufundi kwa haraka.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tazama! Popote utakapoanzia, hata uwepo wako hapa unaonesha unajali.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Nenda kwenye @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bonyeza kitufe hiki kwenye skrini ya mwanzo ili kwenda kwenye @global.weekly_workshops

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Nenda kwenye @global.weekly_workshop_options", "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bonyeza kitufe hiki ili kwenda kwenye @global.weekly_workshop_options

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tumia @global.weekly_workshop_options kubadilisha mipangilio yako ya warsha.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your @global.workshop settings.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tumia @global.weekly_workshop_options kubadilisha mipangilio yako ya @global.workshop.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Unaweza kubadilisha jina lako hapa.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hii inaonesha siku ya wiki ambayo @global.weekly_workshop mpya itakuwa tayari kwa ajili yako.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ukitaka kuibadilisha, bonyeza tu kitufe.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hii inaonesha @global.weekly_workshop unayojifunza sasa.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Kama unataka kufanya @global.weekly_workshops kama kikundi au peke yako, unaweza kubadilisha hapa.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bonyeza hapa kubadili jina la kikundi chako.

                                                                                                                                                                                  ", - "This week is about YOU! Treat yourself well. You deserve it!": "Wiki hii ni kuhusu WEWE! Jitunze vizuri. Unastahili!", - "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", - "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Kumbuka kuwaambia washirika wako kwenye @global.parent_app kubusu program. Kesho, unaweza kuanza kufanya warsha pamoja kwenye @global.parent_app workshops!", - "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Halo @fields.user_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", - "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Halo @fields.group_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", - "You've put so much effort into being a better parent. You are loved and appreciated!": "Umeweka jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", - "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Asante kwa kujitolea kwa dhati katika malezi yako.\n\n@data.workshop.w_1on1.in_text_title yako iko tayari kwa ajili yako!", - "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Kutumia muda pamoja na kijana wako hujenga kuaminiana.\n\nEndelea na safari yako ya @global.parent_app sasa –kwa matokeo mazuri sana.", - "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Hongera kwa kumaliza @data.workshop.w_1on1.in_text_title. Kesho, utaweza kupata warsha mpya ya kukusaidia kupumzika, kuburudika na kujifunza ujuzi mpya!", - "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Vizuri sana kwa kujaribu kuwa mzazi bora zaidi.", - "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Habari @fields.user_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\nWarsha mpya iko tayari!", - "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Habari @fields.group_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\nWarsha mpya iko tayari!", - "Well done for using @global.parent_app! Remember, small things make a big difference.": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", - "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!": "Asante kwa kuwekeza kwa ajili yako na familia yako. Jaribu @data.workshop.w_praise.in_text_title ujipatie ujuzi mzuri sana wa malezi!", - "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @data.workshop.w_praise.in_text_title uone jinsi ya kuitumia skwenye familia YAKO.", - "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!": "Msifie kijana wako kwa kitu kimoja alichofanya vizuri.\n\nNa lini mara ya mwisho ulijisifia mwenyewe au kumsifia mtu mzima mwingine? Jaribu!", - "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.": "Safi sana, umemaliza warsha ya @data.workshop.w_praise.in_text_title. Warsha mpya ipo tayari kesho. Ijaribu - Utaona mabadiliko katika tabia za kijana wako.", - "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.": "Habari @global.user_name, warsha mpya inakusubiri kesho!\n\nInaonekana kama hujamaliza warsha ya @data.workshop.w_praise.in_text_title, ni fupi(nakuhakikishia!) - ifanye muda ukipata muda wa dakika chache.", - "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Habari @fields.user_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", - "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Habari @fields.group_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", - "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!": "Kuwa mpole kwako mwenyewe. Hakuna mzazi aliyekamilika. Tumia @global.parent_app huoenesha unajari!", - "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.": "Vijana huwa wasikilizi daima. Angalia kwenye warsha za wiki hii kujifunza jinsi maelekezo chanya yanaweza kusaidia.", - "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.": "Maelekezo chanya huboresha tabia.\n\nKamilisha warsha ya @data.workshop.w_instruct.in_text_title kwa mawazo ya jinsi gani hii inaweza kufanya kazi katika familia yako.", - "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title mara @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!": "Hongera, umemaliza @data.workshop.w_instruct.in_text_title.\n\nKesho, warsha mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", - "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?": "Wazazi baadhi hutumia program (app) baada ya chakula cha jioni. Kwa nini usimalize warsha ya @data.workshop.w_instruct.in_text_title ukiwa na muda wa dakika chache?", - "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5.\n\nWarsha mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", - "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5.\n\nWarsha mpya inakusbiri ikiwa na dondoo za jinsi ya kubaki mtulivu na mstahimilivu wakati vijana wetu wakitufanya tuchanganya.", - "Manage anger and stress with this new workshop. It helps you take better care of yourself.": "Dhibiti hasira na msongo wa mawazo kwa hiki kipindi kipya. Hukusaidia wewe kujithamini vizuri zaidi.", - "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.": "Najisikia kuzidiwa? Kuvuta pumzi ndefu inasaidia.\n\nKamilisha warsha ya @data.workshop.w_stress.in_text_title kukusaidia kukabiliana na msongo wa mawazo.", - "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.": "Unajisikia mwenye msongo wa mawazo wiki hii? Jaribu kuvuta pumzi ndefu kabla hujamjibu kijana wako - inaleta mabadiliko makubwa.", - "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", - "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!": "Hongera kwa kumaliza @data.workshop.w_stress.in_text_title. Kesho, utaweza kupata warsha mpya itakayokusaidia kupumzika na kujifunza ujuzi muhimu sana!", - "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!": "Kuwa tayari kwa warsha mpya kesho.\n\nKwa kukamilishawarsha kwanza @data.workshop.w_stress.in_text_title. Unaweka msingi muhimu. Kama unajisikia vizuri, familia yako itajisikia vizuri pia!", - "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Habari @fields.group_name! Inastaajabisha Unaanza mwezi wako wa pili wa kutumia @global.parent_app.\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!": "Hauko peke yako. Wazazi duniani kote wanapitia hali kama hii.\n\nUnajutaidi sana na tunajivunia wewe!", - "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", - "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!": "Tengeneza bajeti ya familia na kijana wako - itazuia mabishano ya fedha.\n\nKamilisha warsha @data.workshop.w_money.in_text_title kuona jinsi ilivyo rahisi - utaona!", - "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.": "Umefanya vizuri sana kumaliza @data.workshop.w_money.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", - "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.": "Wazazi wengi wanasema kupanga bajeti huleta amani. Kama hujamaliza warsha @data.workshop.w_money.in_text_title, anza sasa.", - "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Habari @fields.user_name! Wiki mpya, warsha mpya! \nJifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", - "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Habari @fields.group_name! Wiki mpya, warsha mpya! \nJifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", - "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!": "Umejaribu kadri uwezavyo lakini kijana wako bado ana huzuni?\nKumbuka, unafanya kazi nzuri - kutakuwa na muda mzuri pamoja nao pia!", - "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.": "Asante kwa kuwekeza katika malezi.\n\nFanya warsha ya @data.workshop.w_rules.in_text_title kusaidia kijana wako kuelewa na kufuata sheria za nyumbani.", - "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @data.workshop.w_rules.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", - "Have you managed to set a rule with your teen?": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!": "Hongera, umemaliza warsha @local.workshop_data.in_text_title.\n\nKesho, pata warsha mpya! itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", - "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!": "Warsha kabisa itafunguliwa kesho!\n\nKamilisha warsha @local.workshop_data.in_text_title kabla hujaendelea Kwa dakika chache zaidi kumsaidia kijana wao kufuata sheria!", - "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.": "Habari @fields.user_name! Leo tunasherekea warsha mbili @global.parent_app months!\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", - "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.": "Habari @fields.group_name! Leo tunasherekea warsha mbili @global.parent_app months!\n\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", - "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.": "Fikiria kila muda uliomfanya kijana wako akatabasamu na matunzo yote uliyompa.\n\nUnatakiwa kujisifu - huu ni muda mgumu kuwa mzazi.", - "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!": "Vizuri sana - umeshapata nyenzo 6 za malezi tayari! Fanya warsha inayofuata kupata zaidi!", - "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.": "Maliza warsha hii halafu ujaribu kujadili pamoja na kijana wako kuhusu matokeo ya tabia chanya na hasi.", - "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?": "Je, umewahi kufikiria matokeo chanya na hasi ya tabia na kijana wako?", - "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!": "Vizuri sana kwa kumaliza warsha @data.workshop.w_consequence.in_text_title.\nPata warsha mpya kesho kukusaidia kufurahia na kujifunza ujuzi muhimu!", - "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.": "Matokeo tulivu husaida kijana wako kufuata sheria.\nKama hujamaliza warsha @data.workshop.w_consequence.in_text_title, anza sasa!\n\nVizuri sana kwa kuonesha kujitolea sana.", - "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa ya kushughulikia. Warsha hii itakuonesha jinsi ya kuyashughulika nayo.", - "Your commitment is inspiring. Keep calm and carry on!": "Kujitolea kwako ni mfano wa kunahamasisha. Tulia na uendelee!", - "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.": "Matatizo yasiyotarajiwa hutokea tukiwa na vijana.\n\nJifunze jinsi ya kuyatatua katika warsha inayofuata.", - "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @data.workshop.w_solve.in_text_title ili upate ujuzi mwingine muhimu wa malezi.", - "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Fanyia mazoezi hatua nne za kutatua matatizo na kijana wako?\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", - "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Umefanya vizuri sana kumaliza @data.workshop.w_solve.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", - "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.": "Pata warsha mpya kesho!\n\nKwa kukamilisha warsha @data.workshop.w_solve.in_text_title kwanza, utajia jinsi ya kutatua matatizo pamoja.", - "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", - "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Habari @fields.group_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", - "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!": "Malezi ni kitu kigumu, hasa kwa siku hizi. Jivunie mafanikio yako. Ya matunzo unayowapa. Ya kila muda unaowafanya watabasamu. Wewe ni mzuri sana!", - "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.": "Fikiria kuhusu ujuzo wote wa malezi uliiupata!\n\nMalizi warsha inayofuata kupata zaidi.", - "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.": "Kuongea pamoja kuhusu jamii yao na uzoefu wa mitandaoni husaidia kuwaweka vijana wako salama.\n\nMaliza warsha @data.workshop.w_safe.in_text_title kuona ni jinsi gani.", - "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!": "Hongera, umemaliza @data.workshop.w_safe.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", - "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.": "Maliza warsha @data.workshop.w_safe.in_text_title kabla ya kuendelea. Hii inaweza kuzuia matatizo mengi.\n\nVizuri sana kwa kutumia @global.parent_app kusaidia familia yako.", - "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Habari @fields.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nWarsha hii itakuonyesha jinsi ya kujiandaa mapema.", - "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Habari @fields.group_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nWarsha hii itakuonyesha jinsi ya kujiandaa mapema.", - "Be proud, you are a committed parent. This is a big achievement!": "Jivunie, wewe ni mzazi unayejitolea sana. Haya ni mafanikio makubwa!", - "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.": "Matatizo yanaweza kutokea, na TUNAWEZA kuwa na maandalizi! \n\nAnza warsha inayofuata kuona jinsi ya kujiandaa mapema wewe na kijana wako.", - "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @data.workshop.w_crisis.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", - "Have you and your teen discussed what you would do in a crisis?": "Je, wewe na kijana wako mmejadili nini cha kufanya katika matatizo?", - "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!": "Vizuri sana kwa kumaliza warsha @data.workshop.w_crisis. Kesho, unaweza kupata warsha ya mwisho kuvuta kumbukumbu ya safari na kupanga cha kufanya wakati ujao!", - "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.": "Warsha ya mwisho inafunguliwa kesho!\n\nKwanza jaribu kukamilisha warsha @data.workshop.w_crisis.in_text_title. Kwa njia hiyo, unaweza kukamilisha sehemu yako ya ujuzi wa malezi na kuamua nini cha kufanya kwa siku baadaye.", - "Welcome to ParentApp. Click here to start your journey!": "Karibu kwenye ParentApp. Bonyeza hapa kuanza safari yako!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Tunatumaini kuwa haujambo. Kulea ni kugumu, lakini usichoke kuanza tena kwa ajili ya kijana wako. Warsha yako ya kwanza ya malezi iko tayari kwa ajili yako! Bonyeza hapa kuanza safari yako ya ParentApp!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp ikusaidie kudhibiti msongo wa mawazo kutokana na malezi.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Habari kwa mara nyingine! Hata haujachelewa kutumia ParentApp ili kupata msaada stahiki wa malezi. Kwa nini usiijaribu unaposafiri kwenda kazini au unaposubiri chakula kiive? Mamilioni ya wazazi wameona kuwa taarifa zetu zinasaidia.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp ikusaidie kudhibiti tabia za kijana wako.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Habari! Kuna tatizo lolote? Inaonekana haujafungua ParentApp hivi karibuni. Hebu ijaribu! Mamilioni ya wazazi wamegundua kuwa taarifa hizi zinasaidia. Bado tuko hapa ili kukusaidia.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "ParentApp inakupenza! Kuna mengi ya kujifunza. Bado tuko hapa ili kukusaidia.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp kumwandaa kijana wako afanikiwe maishani.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp kupatana tena na kijana wako!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Habari mzazi, kumbuka kujithamini mwenyewe pia - itakusaidia wewe NA familia yako! Pata dondoo zaidi katika programu ya ParentApp.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Habari mzazi! Kumbuka, unaweza kupata vidokezo vingi vya kukusaidia katika programu ya ParentApp.", - "New message from PLH": "Ujumbe mpya kutoka PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Habari mzazi! Programu ya ParentApp ipo hapa kukusaidia. Itazame sasa!", - "**Welcome and Self-Care** workshop": "Warsha ya **Makaribisho na Ujitunzaji**", - "How to do self-care": "Jinsi ya kujithamini", - "**One-on-One Time** workshop": "Warsha ya **Muda wa Pamoja Wawili**", - "**Praise** workshop": "Warsha ya **Usifiaji**", - "**Positive Instructions** workshop": "Warsha ya **Maelekezo Chanya**", - "**Managing Stress** workshop": "Warsha ya **Kudhibiti Msongo wa Mawazo**", - "**Family Budgets** workshop": "Warsha ya **Bajeti za Familia**", - "**Rules** workshop": "Warsha ya **Sheria**", - "**Calm Consequences** workshop": "Kipindi cha **Athari Nyepesi**", - "**Problem Solving** workshop": "Warsha ya **Kutatua Matatizo**", - "**Teen Safety** workshop": "Warsha ya **Usalama wa Vijana**", - "**Dealing with Crisis** workshop": "Warsha ya **Kushughulikia Hali ya Hatari**", - "**Celebration and Next Steps** workshop": "Warsha ya **Kusherehekea na Hatua Zinazofuata**", - "Quick pause": "Simama haraka", - "Power of three": "Nguvu ya tatu", - "One thing today": "Jambo moja leo", - "Breathe to three": "Vuta pumzi mara tatu", - "In and out": "Ndani na nje", - "Think about today": "Fikiria kuhusu leo", - "Pause to respond": "Simamisha ili ujibu", - "Small things": "Vitu vidogo", - "Body scan": "Uchunguzi wa mwili", - "Feel the ground": "Gusa ardhi", - "Counting sounds": "Sauti za kuhesabu", - "Feel your feeling": "Hisi hisia yako", - "Your song": "Wimbo wako", - "Ground & gratitude": "Ardhi & shukrani", - "Notice how you feel": "Chunguza unavyohisi", - "Pause power": "Nguvu ya kutulia", - "Taking care of yourself": "Kujithamini mwenyewe", - "Take a pause": "Tulia", - "Physical activity": "Shughuli ya kutumia nguvu", - "List of things": "Orodha ya vitu", - "Connect": "Unganisha", - "Prevent anger": "Zuia hasira", - "Angry? Take a break": "Je, umekasirika? Pumzika", - "Reflect on the positive": "Tafakari mambo chanya", - "Check-in chat": "Soga ya kuingilia", - "Dream Travel": "Safari ya ndoto", - "Famous Party": "Chama Maarufu", - "Two truths, one lie": "Kweli mbili, uongo mmoja", - "Time Machine": "Mashine ya Wakati", - "Superpowers": "Nguvu kubwa", - "Just a friendly chat": "Maongezi ya kirafiki", - "The Interrupter": "Mdakizi", - "Three options": "Machaguo matatu", - "Yes, No or Maybe": "Ndiyo, Hapana au Labda", - "Memory game - \"On Saturday...\"": "Mchezo wa kukumbuka – \"Jumamosi...\"", - "Make up a story": "Buni Hadithi", - "Co-chef": "Mpishi mwenza", - "Dance moves": "Miondoko ya kucheza", - "Mirror": "Kioo", - "What's new?": "Kuna nini kipya?", - "Get active!": "Changamka!", - "Name that tune": "Taja jina la wimbo huo", - "Pass the snap": "Pitisha kitufe", - "Family workout": "Mazoezi ya familia", - "Make housework fun": "Fanya kazi za nyumbani zifurahishe", - "Household chores aren’t fun… or are they? You can make them into a game!": "Je, kazi za nyumbani hazifurahishi... au zinafurahisha? Unaweza kuzifanya kuwa mchezo!", - "What are you doing?": "Unafanya nini?", - "Here is a fun game you can do with your family!": "Huu hapa ni mchezo wa kufurahisha unaoweza kuucheza na familia yako!", - "Crazy chicken": "Kuku kichaa", - "My Tips": "Vidokezo Vyangu", - "**My Tips** in the @global.parent_centre": "**Vidokezo Vyangu** kwenye @global.parent_centre", - "Essential Tools": "Nyenzo Muhimu", - "**Essential Tools** in the @global.parent_centre": "**Nyenzo Muhimu** kwenye @global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Rekebisha @global.parent_app** kwenye @global.parent_centre", - "Customise Again": "Rekebisha Tena", - "**Customise Again** in the @global.parent_centre": "**Binafsisha tena** katika @global.parent_centre", - "Relax & Activities": "Burudani & Shughuli", - "under **Relax & Activities** in the @global.parent_centre": "kwenye **Burudani & Shughuli** katika @global.parent_centre", - "Help": "Msaada", - "**Help** in the @global.parent_centre": "**Msaada** kwenye @global.parent_centre", - "Technical Support": "Msaada wa Kiufundi", - "**Technical Support** in the @global.parent_centre": "**Msaada wa Kiufundi** kwenye @global.parent_centre", - "Coping with @global.covid": "Kwendana na @global.covid", - "**Coping with @global.covid** in the @global.parent_centre": "**Kwendana na @global.covid** katika @global.parent_centre", - "Coping with grief": "Kwendana na majonzi", - "**Coping with grief** in the @global.parent_centre": "**Kwendana na majonzi**katika @global.parent_centre", - "Message Archive": "Hifadhi ya Ujumbe", - "**Message Archive** in the @global.parent_centre": "**Hifadhi ya Ujumbe** kwenye @global.parent_centre", - "Support Contacts": "Mawasiliano ya Msaada", - "**Support Contacts** in the @global.parent_centre": "**Mawasiliano ya Msaada** kwenye @global.parent_centre", - "Evidence Base": "Yenye Ushahidi wa Kufanya Kazi", - "**Evidence Base** in the @global.parent_centre": "**Yenye Ushahidi wa Kufanya Kazi** kwenye @global.parent_centre", - "How to talk to my teen": "Jinsi ya kuongea na kijana wangu", - "Steps to deal with news": "Hatua za kukabiliana na habari", - "How can I help my teen choose well?": "Jinsi gani naweza kumsaidia kijana wangu kuchagua vizuri?", - "What influences teen decisions?": "Nini kinapelekea maamuzi ya kijana?", - "How does my teen feel?": "Kijana wangu anajisikiaje?", - "Changing negative to positive": "Kubadili hasi kuwa chanya", - "Help yourself cope": "Jisaidie kwendana", - "Help your teen cope": "Msaidie kijana kwendana", - "Practical steps": "Hatua za vitendo", - "**Relax** @global.parent_point": "@global.parent_point ya **Chukua pumziko**", - "Doing a relaxation activity": "Kufanya shughuli ya kuburudisha", - "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Kila mara unapopumzika, bofya @global.parent_point na usherehekee mafanikio yako!", - "Treat yourself well": "Jitendee vizuri", - "**Treat yourself well** @global.parent_point": "@global.parent_point ya **Jitendee vizuri**", - "Doing something they like for themselves": "Kufanya kitu wanachopenda wao wenyewe", - "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Kila mara unapojitendea vizuri, bofya @global.parent_point na usherehekee mafanikio yako!", - "Praise yourself": "Jisifie", - "**Praise yourself** @global.parent_point": "@global.parent_point ya **Jisifie**", - "Praising themselves": "Kujisifia mwenyewe", - "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Kila mara unapojisifia, bofya @global.parent_point na usherehekee mafanikio yako!", - "One-on-one time": "Muda wa kutumia wawili", - "**One-on-one time** @global.parent_point": "@global.parent_point ya **Muda wa kutumia pamoja wawili**", - "Spending time with their teen": "Kutumia muda pamoja na kijana wako", - "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!": "Kila mara mnapotumia pamoja wawili, bofya @global.parent_point na usherehekee mafanikio yako!", - "Praise your teen": "Msifie kijana wako", - "**Praise your teen** @global.parent_point": "@global.parent_point ya **Msifie kijana wako**", - "Praising their teen when they did positive thing": "Kumsifia kijana wako alipofanya jambo chanya", - "Every time you praise your teen, tap the @global.parent_point and celebrate your success!": "Kila mara unapomsifia kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", - "Get positive": "Kuwa na mtazamo chanya", - "**Get positive** @global.parent_point": "@global.parent_point ya **Kuwa na mtazamo chanya**", - "Giving their teen a positive instruction": "Kuwapa vijana wake maelekezo chanya", - "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!": "Kila mara unapotoa maelekezo chanya, bofya @global.parent_point na usherehekee mafanikio yako!", - "Breathe not yell": "Vuta pumzi, usifoke", - "**Breathe not yell** @global.parent_point": "@global.parent_point ya **Vuta pumzi, usifoke**", - "Taking a pause before responding": "Kutulia kabla ya kujibu", - "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!": "Kila mara unapotulia kabla ya kujibu, bofya @global.parent_point na usherehekee mafanikio yako!", - "Good money choice": "Maamuzi mazuri kuhusu pesa", - "**Good money choice** @global.parent_point": "@global.parent_point ya **Maamuzi mazuri kuhusu pesa**", - "Keeping the budget": "Kutumia bajeti", - "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!": "Kila mara unapofanya maamuzi mazuri kuhusu mahitaji, matamanio na kujiwekea akiba, bofya @global.parent_point na usherehekee mafanikio yako!", - "Calm consequence": "Athari Nyepesi", - "**Calm consequence** @global.parent_point": "@global.parent_point ya **Athari nyepesi**", - "Giving their teen a consequence in a calm way": "Kuamuru kwa utulivu kijana wake afanye athari", - "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!": "Kila mara unapoamuru kufanywa kwa athari nyepesi, bofya @global.parent_point na usherehekee mafanikio yako!", - "Safe": "Salama", - "**Safe** @global.parent_point": "@global.parent_point **Salama**", - "Planning or keeping a family safety plan": "Kupanga au kutumia mpango wa usalama wa familia", - "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!": "Kila mara unapofanya jambo ili kumweka salama kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", - "Did it? Tap it!": "Ulifanya hivyo? Bofya!", - "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!": "Vizuri sana! Hongereni kwa kutumia muda pamoja. Kufanya hivyo kunaweka msingi wa uhusiano mzuri sana na kijana wako!", - "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!": "Heri yako! Kutumia muda wa pamoja unawaonesha vijana wako kuwa wao ni watu muhimu kwako. Kufanya hivyo kunaleta mabadiliko!", - "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!": "Vizuri sana! Kutumia muda pamoja na kijana wako kunaweza kumfanya kijana wako awe tayari kusaidia mara nyingi. Unafanya vizuri sana!", - "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!": "Hongera! Kutumia muda wa pamoja na kijana wako unakupa nafasi ya kujifunza zaidi kuhusu mambo anayoyapendelea na uwezo wake. Wewe ni mshindi!", - "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.": "Kazi nzuri sana! Kutumia muda pamoja kunasaidia kujenga uhusiano mzuri na imara kati yako na kijana wako.", - "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!": "Wakati mwingine, kutumia muda pamoja na vijana wako kutakuwa rahisi na kutafurahisha, na wakati mwingine kutakuwa kugumu zaidi. Kutumia muda pamoja kutaboresha sana uhusiano wenu; hongera kwa kujaribu!", - "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!": "Tunasikitika kusikia kwamba ilikuwa vigumu kwako kutumia muda pamoja na kijana wako. Wakati mwingine, sisi sote tunakabiliwa na changamoto. Jivumilie tu na mvumilie kijana wako – mambo yatakuwa mazuri. Hongera kwa kujaribu!", - "Great to hear it went well; you are a star!": "Ni jambo zuri sana kusikia kuwa mambo yameenda Wewe ni mshindi!", - "Wonderful! You deserve all the happy times!": "Vizuri sana! Unastahili kufurahi nyakati zote!", - "Sorry that this was difficult for you. You are a star for trying!": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Wewe ni mshindi kwa kujaribu!", - "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!": "Inafurahisha sana kuona umejisikia vizuri! Endeleza kazi hiyo nzuri sana. Kijana wako anajifunza mengi kutoka kwako!", - "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!": "Kuzungumza kuhusu tunavyohisi kunaweza kuwa kugumu mwanzoni, lakini wewe na kijana wako mtazoea. Endelea kujaribu, utaona matokeo mazuri!", - "Great to hear it went well. Talking about your finances together really makes your family stronger!": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri. Kuzungumzia fedha zako pamoja kunaimarisha zaidi familia yako!", - "Sorry to hear it was difficult for you. Well done for trying!": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Hongera kwa kujaribu!", - "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri! Sheria thabiti husaidia kuwafanya vijana wetu kujisikia salama, na kuwaweka salama!", - "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!": "Tunasikitika kuona kuwa jambo hili limekuwa gumu. Kuweka sheria pamoja kunahitaji mazoezi, lakini kuna faida!", - "Great to hear it went well!": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri!", - "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kutafuta pamoja njia za kufanya malipo kutamfanya kijana wako atake kufuata sheria mara nyingi!", - "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Wakati mwingine tunapaswa kuendelea kujaribu. Tafuta muda ambao wewe na kijana wako mtakuwa mmetulia halafu mjaribu tena kuzungumzia tatizo kwa kutumia hatua nne za kutatua matatizo. Pamoja, mnaweza kufanya makubwa!", - "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuzungumzia hatari na njia za msaada huzuia matatizo na husaidia sana kumweka salama kijana wako.", - "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kuonyesha maeneo ya hatari na ya kupata msaada kunaweza kuleta changamoto na hisia kali. Kufanya hivyo kunasaidia sana kumweka salama kijana wako!", - "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Tunasikitika kuona kuwa mambo hayakwenda vizuri sana. Si rahisi kufanya hivyo. Jaribu kukaa chini na kulijadili tena na kijana wako. Pia, je, kuna mtu ambaye kijana wako anamwamini anayeweza kuungana na wewe kwenye mazungumzo na kijana wako?", - "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuweka athari sahihi husaidia vijana kuwa na tabia nzuri zaidi na kufanya maisha ya familia kuwa tulivu zaidi.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kijana wako anapojifunza kutatua matatizo, anaweza kutumia ujuzi huo maishani mwake mwote. Zawadi iliyoje!" + "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bonyeza hapa kubadili jina la kikundi chako.

                                                                                                                                                                                  " } \ No newline at end of file diff --git a/packages/app-data/translations/za_af/strings.json b/packages/app-data/translations/za_af/strings.json index 2f754d9930..c937c7a31b 100644 --- a/packages/app-data/translations/za_af/strings.json +++ b/packages/app-data/translations/za_af/strings.json @@ -1,8 +1,116 @@ { + "When everything feels like it is falling apart": "Wanneer dit voel asof alles uitmekaar val", + "And you can't help but raise your voice": "En jy kan nie help om te skree nie", + "When all the frustrations are beginning to start": "Wanneer al die frustrasies begin opbou", + "Remember that you have a choice": "Onthou dat jy 'n keuse het", + "Remember all we have to be grateful for": "Onthou alles waarvoor ons dankbaar moet wees", + "Let's slow down": "Kom ons vat dit bietjie stadiger", + "Take a few deep breaths": "Haal 'n paar keer diep asem", + "Because I really couldn't love you more": "Want ek kan regtig nie liewer vir jou wees nie", + "You can take pause, you can count to 10": "Jy kan 'n blaaskans neem, jy kan tot 10 tel", + "Play a game or do something fun": "Speel 'n speletjie of doen iets lekkers", + "You can phone a friend, someone to confide in": "Jy kan 'n vriend(in) bel, iemand wat jy in jou vertroue kan neem", + "Remember you're not the only one": "Onthou dat jy nie die enigste een is nie", + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Vra vir mekaar: “Wat het jou vandag gelukkig gemaak?”\n* Vra vir mekaar: “Met watter probleme het jy vandag te doen gehad?”\n* Vra vir mekaar: “Hoe kan ek jou help?”\n* Probeer dit elke dag saam doen; julle kan dit doen wanneer julle saam aandete eet of voor julle gaan slaap.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Vra jou tiener watter ete hy/sy wil eet.\n* Berei dit saam voor!\n* Gee jou tiener ’n beurt om die hoofkok te wees – hy/sy neem die leiding en jy volg sy/haar instruksies.\n* Jy kan hulle selfs help om ’n begroting vir die bestanddele op te stel!\n\nDink jy dat dit nie sal werk nie? Vra jou tieners wat hulle wil hê dat jy en hulle saam moet doen. Laat hulle die leiding neem. Ontspan. Geniet dit.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Skud julle linkerhande 8 keer in die lug terwyl julle tot 8 tel.\n* Doen dit so vinnig en hard as wat julle kan.\n* Herhaal met julle ander hande. Herhaal met albei voete.\n* Doen dit 7 keer, dan 6 keer en gaan voort totdat julle by 1 kom.\n* Almal roep dan “Crazy chicken” uit en doen hul beste mal hoenderdans!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Maak ’n stel danspassies vir jou tiener se gunstelingliedjies.\n* Een persoon doen ’n danspassie en almal aap dit na.\n* Almal maak beurte om die leier te wees.\n* Voer dit vir die huismense op!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Hierdie speletjie is die beste as meer as 2 mense speel.\n* Een persoon maak asof hulle iets doen – byvoorbeeld hare kam of aandete maak.\n* ’n Ander persoon vra: “Wat doen jy?”\n* Die eerste persoon moet iets sê wat niks met hare kam te doen het nie, byvoorbeeld: “Maak my veters vas.”\n* Die tweede persoon begin dan maak asof hy sy veters vasmaak totdat ’n nuwe persoon vra: “Wat doen jy?”\n\nDie antwoord moet altyd iets anders wees as wat jy eintlik doen!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Jy kan nie altyd reis nie, maar jy kan altyd droom! Vra jou tiener hierdie vrae:\n* Waarheen sou jy wou reis? Hoe lank sou jy weg wees? Wat sou jy inpak? Wat sou jy op jou reis doen? Wat sou jy sien?\n* Kyk saam na ’n kaart of teken een.\n* Kies ’n land waarvan jou tiener nog nooit gehoor het nie en leer meer oor die land.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Kies ’n sport of oefening om saam te doen. Besluit op ’n skedule. Gaan julle dit elke dag doen? Vir hoe lank?\n\nProbeer dit vir ’n week. Vra jouself en jou gesin aan die einde van die week die volgende vrae:\n* Hoe gaan dit?\n* Hoe het jy aan die begin van die week gevoel?\n* Hoe voel jy aan die einde van die week?\n* Wat kan ons volgende week anders doen?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Jy en jou tiener kan ’n gastelys beplan van die beroemde mense wat jy die graagste na julle partytjie wil nooi. Elkeen kan vyf mense hê – hulle kan uit die verlede of uit die huidige tyd wees. Wie sou jy nooi? En sal julle gaste goed met mekaar oor die weg kom?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Gesels met jou tiener oor iets waarvan hulle hou.\n\nDit kan oor enigiets wees waaroor hulle wil praat: sport, vriende, musiek, bekendes ...\n\nProbeer om na jou tiener te luister en gee hulle ruimte om te praat.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Dink saam aan drie soorte oefeninge. Byvoorbeeld, stap, draf, sokker speel of dans.\n* Kies een saam en probeer dit.\n* As julle albei daarvan hou, besluit hoe gereeld julle dit gaan doen. Een of twee keer per week? Elke oggend?\n* Dink saam aan maniere om dit nog prettiger te maak. Kan julle tot by ’n sekere punt draf? Beurte maak om die afrigter te wees? Mekaar motiveer met ’n klein gratis beloning?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Maak beurte om die “leier” te wees. Sê die inleidingsinne om almal te aktiveer. Dan gee die “leier” ’n opdrag en almal doen die aktiwiteit so vinnig as moontlik:\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: \"Raak aan iets wat 'n rooi kleur het.\"\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!” \n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Spring tien keer op en af.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Sit die skoene op die skoenrak.”", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Kies ’n storieverteller om ’n storie op te maak.\n* Storieluisteraars kan enige tyd onderbreek met ’n woord.\n* Storieverteller moet daardie woord in hul storie insluit.\n* Wanneer die storie klaar is, probeer dit dan met ’n ander storieverteller!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Begin die storie met “Eendag was daar...”\n* Laat jou tiener die volgende sin opmaak.\n* Dan maak jy ’n sin op.\n* Maak beurte totdat julle ’n wonderlike nuwe storie het.\n* Maak seker dat julle die storie op ’n positiewe noot afsluit.\n* Vra jou tiener wat sy/haar gunsteling deel van die storie was!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Die eerste persoon sê: “Saterdag gaan ek... (bv. na die park)”\n* Tweede persoon voeg by tot die eerste persoon: “Saterdag gaan ek na die park en...” (bv. by my beste vriend kuier).\n* Elke persoon voeg by tot die vorige en probeer dink aan al die prettige dinge om Saterdag te doen.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Hierdie speletjie kan in pare of met baie mense in ’n groep gespeel word.\n* Staan teenoor mekaar of in ’n kring.\n* Een persoon lei eerste en almal maak hulle na en probeer presies op dieselfde tyd as die leier beweeg.\n* Maak seker dat die leier stadig genoeg beweeg sodat almal kan volg! Probeer om verskillende liggaamsdele en op verskillende vlakke te beweeg.\n* Verander na ’n rukkie van leier. Gee almal ’n kans om te lei.\n* Probeer dit sonder leiers!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Die eerste persoon kan ’n liedjie kies of sing.\n* Almal moet die naam van die deuntjie raai (om dit moeiliker te maak, kan hulle raai wie die sanger is).\n* Die eerste een wat dit reg raai, word die volgende leier.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Hierdie speletjie is die beste met ten minste 3 mense.\n* Begin in ’n kring en gee een “klap” met die vingers in die kring om (of klap hande as jy nie jou vingers kan klap nie).\n* Jy “klap” een keer om die “klap” te gooi, en een keer om dit te vang. Kyk na die persoon na wie jy dit gooi.\n* Die rigting (op, af, reguit, geboë, oor die grond) en krag (hard, sag, gemiddeld) waarmee jy die klap gooi, moet ’n invloed hê op hoe die persoon dit vang.\n* Jy kan die “klap” laat hop, dit in die lug gooi en dit ’n paar keer vang voordat jy dit aanstuur.\n* As almal daarmee vaardig raak, kan julle in die kamer begin rondbeweeg en steeds die “klap” aanstuur.\n* Kan jy onder die been deur gooi? Agter die rug om? Deur jou kop? ’n Aangee onderskep? Geniet dit om te “klap”!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Neem aan die end van die dag ’n minuut om:\n\n* Met jou tiener te praat oor iets lekkers wat hulle gedoen het.\n* Jouself te prys vir een ding wat jy vandag goed gedoen het.\n* Jy’s ’n ster!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Dink aan ’n superkrag. Byvoorbeeld, om dadelik na enige plek te kan gaan, in tyd te reis, gedagtes te lees.\n* Vra jou tiener: “As jy die superkrag gehad het om [...] te gebruik, hoe sou jy dit gebruik?”\n* Moedig hulle aan om hul superheld ’n naam te gee en dit uit te voer.\n* Laat jou tiener nou toe om ’n superkrag vir jou te kies.\n* Maak seker dat jy ook jou superkrag uitvoer!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Dink aan drie verskillende situasies. Byvoorbeeld, om ’n motor te bestuur, ’n boot te laat seil of ’n vliegtuig te laat vlieg.\n* Noem dit vir jou tiener en vra: “Watter een sou jy verkies?”\n* Vra hulle hoekom?\n* Dink nou aan nog drie situasies of vra jou tiener om dit vir jou te doen.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Vertel jou tiener iets van jouself toe jy ’n tiener was. Watter dinge het toe nog nie bestaan nie? Fone met internet? Wat het jy vir die pret gedoen? Waaroor was jy bekommerd? Moenie bekommerd wees as hulle jou niks terugvertel nie – wat belangrik is, is dat hulle luister en onthou. Soms vergeet ons tieners dat hul ouers ook mense is!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Dink aan drie stellings oor jouself. Twee moet waar wees en een moet ’n leuen wees.\n* Dit kan help om te dink aan wense, drome, ervarings op skool, dinge waarvan jy hou of nie hou nie. Byvoorbeeld: ek haat piesangs, my gunstelingvak is wetenskap en ek wens regtig ek kon sing.\n* Sê dit vir jou tiener en vra hulle om te raai watter een ’n leuen is.\n* Het hulle reg geraai? Was dit ’n verrassing?\n* Vra hulle nou om dieselfde te doen. Het julle iets nuuts omtrent mekaar geleer?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Dink aan ’n nuwe vaardigheid wat jy saam met jou tiener kan aanleer. Byvoorbeeld, om ’n bal in die lug of op jou voet te hou, te leer goëlbal speel, sop te maak?\n* Maak beurte om die nuwe vaardigheid te probeer.\n* Maak seker julle prys mekaar, en probeer saam leer en speel!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Vra mekaar vrae. Dit kan vrae wees oor dinge waarvan julle hou of wat julle vandag gedoen het.\n* Die enigste reël is dat julle nie “Ja”, “Nee” of “Miskien” kan antwoord nie.\n* Hoe lank kan julle aanhou? Hoe kreatief kan julle wees met julle antwoorde?\n* Ruil om en speel weer!", + "Home": "Tuis", + "Settings": "Instellings", + "Template": "Sjabloon", + "How to use @global.parent_app": "Hoe om @global.parent_app te gebruik", + "In-Week Messages": "In-week-boodskappe", + "Campaigns": "Veldtogte", + "Notifications": "Kennisgewings", + "You have successfully entered developer mode.": "Jy het suksesvol in ontwikkelaarmodus gekom.", + "You have entered an incorrect code.": "Jy het ’n verkeerde kode ingevoer.", + "About @global.parent_app": "Oor @global.parent_app", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app is ontwikkel deur Parenting for Lifelong Health (PLH) – 'n wêreldwye samewerking tussen ouerskapkundiges van UNICEF, die Wêreldgesondheidsorganisasie en universiteite in Suid-Afrika en Engeland, sowel as NPO's in Afrika en gesinne en tieners regoor Afrika. Ouers en tieners het saam met ons aan die toepassing gewerk en gehelp om te verseker dat dit maklik om te gebruik, pret en boeiend is. Sommige van die inhoud in hierdie toepassing, soos voorstelle van aktiwiteite en geïllustreerde stories, is saam met ouers en tieners geskep om seker te maak dit pas by gesinne se behoeftes.\n\nParenting for Lifelong Health (PLH) is toegewy om gratis en deelbare ouerskapmateriale en -programme te ondersteun, om ouers wêreldwyd te ondersteun om die welstand van hul kinders te bevorder.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Deur op die onderstaande knoppie te klik, stel jy die toep terug na die oorspronklike instellings.\n\nDit beteken dat al jou vordering- en gebruiksdata uitgevee sal word en dat jou toep sal werk asof dit pas vir die eerste keer geïnstalleer is.\n\nLET WEL: Die terugstelling van die app is permanent en jy sal geen inligting kan herstel nie.", + "Open Survey": "Maak Studie Oop", + "Select Language": "Kies Taal", + "Workshop Options": "Slypskool-opsies", + "Reset App": "Stel Toep terug", + "Demo Presentation": "Demo-aanbieding", + "Organisation Registration": "Registrasie van organisasie", + "Developer Mode": "Ontwikkelaarmodus", + "Unlock all workshops": "Ontsluit alle slypskole", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Deur op die onderstaande knoppie te klik, sal jy al die slypskole ontsluit.\n\nLET WEL: Gebruikers moenie hierdie funksie gebruik om slypskole te ontsluit nie; dit word nie aanbeveel nie, tensy dit streng noodsaaklik is.", + "Unlock workshops": "Ontsluit Slypskole", + "All workshops are now unlocked.": "Alle slypskole is nou ontsluit.", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Die verlies van 'n geliefde kan baie oorweldigend voel. Hier is 'n paar praktiese wenke wat van hulp kan wees om in gedagte te hou.", + "Ask for help": "Vra vir hulp", + "Say goodbye": "Sê totsiens", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Vra iemand op wie jy staat kan maak om jou te help - kos of kindersorg kan van waarde wees. Jy mag dalk dokumente vir erflatings, vir jou kinders of vir toegang tot dienste benodig. \nSoms probeer mense om geld of erfporsies van ‘n persoon in rou af te rokkel. Vind uit wat jou regte is.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "-Om afskeid te neem is moeilik. Doen wat vir jou en jou tiener oukei voel.\n-Families, tieners en ouers is nie perfek nie. Wanneer iemand sterf, is dit oukei om te praat oor ons goeie en slegte herinneringe.\n-Dit kan help om 'n brief te skryf of iets te teken vir die oorlede persoon. \n-Sommige mense hou 'n seremonie of 'n spesiale ete om die oorledene te vier, en afskeid te neem.\n-Dit kan help om 'n houer van herinneringe te maak, om dinge in te hou wat jou en jou tiener aan die persoon herinner.\n-Dit kan help om selfs net oor die persoon te praat wanneer jy aan hulle dink.", + "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Om 'n vriend of geliefde te verloor is vir almal moeilik. Om goed te wees vir jouself en om dinge te doen wat jou help om hierdie moeilike tyd die hoof te bied help jou tiener ook!", + "Take care of yourself": "Sorg goed vir jouself", + "Find a support group": "Vind 'n ondersteuningsgroep", + "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "-Hartseer kan ons vir weke, maande of jare lank affekteer. Jy hoef nie vinnig beter te voel nie.\n-Slaap en eet genoeg - dit is moeilik om na tieners om te sien as jy moeg en honger is.\n-Maak 'n lys van dinge wat jou beter laat voel, en doen hulle.\n-Probeer om een eenvoudige ding elke dag te doen om saam met jou tiener te ontspan, asook vir jouself.\n-Dis oukei om nie goed te voel nie en dis oukei om te huil. Moet jouself nooit blameer nie, hierdie is nie jou skuld nie.\n-Daar is altyd hoop selfs na verlies. Probeer eenvoudige dinge geniet, en vind 'n minuut of wat om iets prettig of ontspannend met jou tiener te doen.\n-Vind een of twee volwassenes wat jou kan ondersteun, na jou luister en met jou gesels.", + "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "-Om met iemand wat jou ondersteun te kan praat en na jou te luister kan help.\n-Dit kan ook help om aan te sluit by 'n groep mense wat self iemand verloor het.\n-Niemand is perfek nie. Dis oukei om oor goeie en slegte herinneringe te praat.", + "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Tieners hanteer verlies op verskillende maniere, net soos volwassenes. Jy kan hulle help om die situasie en hul gevoelens te verstaan deur veilige ruimtes te skep waar julle albei dit kan deel en verwerk.", + "Be honest": "Wees eerlik", + "My teen's response": "My tiener se reaksie", + "How to support my teen?": "Hoe kan ek my tiener ondersteun?", + "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "-Vertel jou tiener dat die persoon oorlede is - soms besef hulle dit nie.\n-Vertelling is 'n proses, nie 'n gebeurtenis nie. Jy mag vind dat dit nodig is om hulle oor en oor te vertel.\n-Gebruik woorde wat hulle verstaan.\n-As jonger tieners nie begryp wat dood is nie, help deur te verduidelik dat die geliefde persoon nie gaan terugkom nie. Probeer om 'slaap' of 'n 'lang reis' as beskrywing daarvan te vermy.\n-Ouer tieners mag wel 'n beter begrip van dood toon, maar hulle mag sukkel om hulle emosies te deel of te verwerk.\n-Tieners kan op verskeie maniere reageer: huil, skree, ongeloof uitspreek of in stilte onttrek. Al hierdie reaksies is oukei. Vertel hulle dat jy dáár is met hulle.\n-Laat vrae en openlike gesprekke toe. Wees eerlik. Dis oukei om te erken ons weet nie.", + "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "-Tieners mag hartseer, woede, onbegrip of ongeloof toon, 'n verlammende gevoel ervaar, sleg voel of pyn, nagmerries of probleme by die skool ondervind. Jou tiener mag gelukkig voorkom, maar steeds hartseer wees. Hulle mag hulself afsluit en meer tyd saam met vriende wil deurbring. Hulle mag ook onverwagte of gevaarlike gedrag openbaar. Dit mag dalk nie vir jou sin maak nie, maar tog is dit alles normaal.\n-Tieners mag voel dat dit hulle skuld is - dat hulle die virus oorgedra het, of dat hulle hul swak gedra het. Vertel hulle duidelik dat hulle niks verkeerd gedoen het nie.", + "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "-Verduidelik dat hartseer met baie emosies en reaksies gepaard gaan. Wys vir jou tiener dat hulle geliefd en versorg is, en moedig hulle aan om hul emosies te deel deur daaroor te praat, skryf of teken.\n-Indien daar 'n ondersteuningsgroep is waarvan jou tiener kan deel word, kan dit help.\n-As 'n tiener praat van hulself beseer of om die lewe bring, vra vir hulp by iemand so vinnig as wat jy moontlik kan.\n-Indien moontlik, hou by jou normale daaglikse roetines, dit kan vir 'n tiener vertroostend wees.\n-Dit kan help vir tieners om deel te neem aan rituele rondom die dood - om 'n lied te kies of om iets te sê.\n-Deur elke dag 'n paar minute op jou tiener te fokus help om hulle veiliger te laat voel en gee hulle 'n kans om te ontspan of te praat oor dinge wat hulle ontstel.", + "How did it go?": "Hoe het dit gegaan?", + "Reply": "Antwoord", + "Timer": "Tydhouer", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Druk die driehoek om jou te help om hierdie gesprek by @local.timer_duration minute te hou.", + "Video": "Video", + "You selected less than @local.threshold": "Jy het minder as @local.threshold gekies", + "Start Positively Together": "Begin positief saam", + "It's great to see you again! \n\nLet's start with caring for you.": "Dis wonderlik om jou weer te sien!\n\nKom ons begin met omgee vir jou.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Maak beurte:\n* Deel: Hoe voel jy vandag?\n* Prys iemand in jou groep vir iets wat hulle hierdie week goed gedoen het!\n\nOnthou dat ongeag hoe jy voel, dit is wonderlik dat jy hier is. Julle verdien almal om geprys te word.", + "We all have negative thoughts sometimes.": "Ons het almal soms negatiewe gedagtes.", + "\"I am a failure\"": "\"Ek is 'n mislukking\"", + "What to do?": "Wat om te doen?", + "Examples": "Voorbeelde", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Om vir jouself of jou tiener te sê om op te hou of om die positiewe teenoorgestelde te stel help dikwels nie.", + "\"I do everything perfectly\"": "\"Ek doen alles perfek\"", + "Instead, you can ask:": "In plaas daarvan, kan jy vra:", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "-Is die gedagte realisties? Watter ander verduidelikings is daar?\n-Wat sal gebeur as ek voortgaan om hierdie gedagte te glo?\n-Wat sal ek vir 'n vriend sê as hy/sy hierdie gedagte sou hê?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Hierdie is moeilik, maar jy probeer jou bes, en ons sal saam werk om 'n oplossing te vind\"", + "\"It’s your fault\"": "\"Dis jou skuld\"", + "\"Let’s come up with a solution together\"": "\"Laat ons saam met 'n oplossing vorendag kom\"", + "\"I lost my job\"": "\"Ek het my werk verloor\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Ek het baie in my werk geleer - dit sal my help om 'n ander een te vind\"", + "\"Nobody likes me\"": "\"Niemand hou van my nie\"", + "\"Last week I did have a great time with...\"": "\"Verlede week het ek 'n heerlike tyd gehad saam met...\"", + "\"Bad things always happen to me\"": "\"Slegte dinge gebeur altyd met my\"", + "\"This good thing happened the other day...\"": "\"Hierdie goeie ding het nou die dag gebeur...\"", + "Change": "Verandering", + "You’ve completed this week’s workshop.": "Jy het hierdie week se werksessie voltooi.", + "Read along": "Lees aan", + "See you soon.": "Sien jou binnekort.", + "You can always find these tools in the @global.parent_centre": "Jy kan altyd hierdie hulpmiddels in die @global.parent_centre kry", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Volgende week sal jy met jou groep deel hoe dit met jou tuisoefening gegaan het. Julle kan mekaar ook gedurende die week ondersteun en daaraan herinner.", "Home Practice": "Tuisoefening", "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Klein aksies, groot resultate! Ouers wat hulle werksessievaardighede tuis oefen, kry beter resultate.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Volgende week sal jy met jou groep deel hoe dit met jou tuisoefening gegaan het. Julle kan mekaar ook gedurende die week ondersteun en daaraan herinner.", - "How did it go?": "Hoe het dit gegaan?", + "Hear a teen's testimonial": "Luister na 'n tiener se getuigskrif", + "Read a teen's testimonial": "Lees 'n tiener se getuigskrif", "talk to their teens about how they feel": "praat met hulle tieners oor hoe hulle voel", "talk to your teen about how you feel": "praat met jou tiener oor hoe jy voel", "Did you experience any challenges when trying to @local.hp_description_second_singular?": "Het jy enige uitdagings ondervind toe jy probeer @local.hp_description_second_singular het?", @@ -13,987 +121,119 @@ "Sorry to hear the tips did not help you.": "Jammer om te hoor dat die wenke jou nie gehelp het nie.", "Do you want to share with us what you think would help you?": "Wil jy met ons deel wat jy dink jou sou help?", "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Dankie dat jy dit deel! Jy is ’n wonderlike ouer omdat jy probeer om tyd met jou tiener deur te bring. Dit maak ’n groot verskil. Doen so voort en onthou, ek is altyd hier om te help!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Hier is die vaardighede wat ons hierdie week geleer het!\n\nGebruik dit tuis en kry dit enige tyd in jou @global.parent_centre.", - "Relax Together": "Ontspan saam", - "Relax": "Ontspan", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Kom ons doen ’n kort ontspanningsaktiwiteit saam – dit neem minder as 1 minuut en jy sal meer ontspanne voel.", - "Add this activity to @global.my_relaxes": "Voeg hierdie aktiwiteit by @global.my_relaxes", - "Listen and relax": "Luister en ontspan", - "Read and relax": "Lees en ontspan", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.", - "Welcome @fields.user_name": "Welkom, @fields.user_name", - "It's great to see you again!": "Dis wonderlik om jou weer te sien!", - "Let's see how this week has been.": "Kom ons kyk hoe hierdie week was.", - "This week you have done...": "Hierdie week het jy...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Jy wys regtig hoe toegewyd jy is om ’n ouer te wees en om vir jouself te sorg.\n\nJy is fantasties.", - "Watch Together": "Kyk saam", - "Let's watch a video together!": "Kom ons kyk saam na ’n video!", - "Watch": "Kyk", - "Let's watch a video!": "Kom ons kyk na ’n video!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Dis wonderlik om jou weer te sien! Kom ons begin met ’n liedjie vir gesinne van oraloor.", - "Let's Slow Down": "Kom ons gaan ’n bietjie stadiger", - "You’ve completed this week’s workshop.": "Jy het hierdie week se werksessie voltooi.", - "See you soon.": "Sien jou binnekort.", - "Talk Together": "Gesels saam", - "Share ideas, support each other!": "Deel idees, ondersteun mekaar!", - "Try it Together": "Probeer dit saam", - "Let's practice together.": "Kom ons oefen saam.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Tuisoefening is hoe ons ons gesinslewe beter kan maak. Maar dit gaan dikwels met uitdagings gepaard.\n\nKom ons deel ons suksesse en probleme, en help mekaar om nuwe idees te vind om uit te probeer!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Dink aan hoe jou tuisaktiwiteite hierdie week gegaan het.\n\nMaak beurte om die volgende te bespreek:\n* Wat het goed gegaan en wat was ’n probleem?\n* Aan watter oplossings kan julle saam dink?\n* Kies een oplossing en probeer dit later saam met jou tiener!\n\n(Of jy kan dit selfs nou oefen sodat dit later makliker sal wees!)", - "Discussion example from @data.workshop.w_1on1.title": "Besprekingvoorbeeld uit@data.workshop.w_1on1.title", - "Start Positively Together": "Begin positief saam", - "Welcome @fields.group_name": "Welkom, @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Dis wonderlik om jou weer te sien!\n\nKom ons begin met omgee vir jou.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Maak beurte:\n* Deel: Hoe voel jy vandag?\n* Prys iemand in jou groep vir iets wat hulle hierdie week goed gedoen het!\n\nOnthou dat ongeag hoe jy voel, dit is wonderlik dat jy hier is. Julle verdien almal om geprys te word.", - "Ideas from other families:": "Idees van ander gesinne:", - "Question Time": "Vraetyd", - "It's time for some questions!": "Dis tyd vir ’n paar vrae!", - "Listen Together": "Luister saam", - "Let's listen to an audio together!": "Kom ons luister saam na ’n klankopname!", - "Listen": "Luister", - "Let's listen to an audio!": "Kom ons luister na ’n klankopname!", - "Why @local.workshop_data.title?": "Hoekom @local.workshop_data.title?", - "Hear Sbo's message": "Hoor Sbo se boodskap", - "Read Sbo's message": "Lees Sbo se boodskap", - "Today's steps": "Vandag se stappe", - "Read Together": "Lees saam", - "Let's read a story together!": "Kom ons lees ’n storie saam!", - "Let's read a story!": "Kom ons lees ’n storie!", - "Think Together": "Dink saam", - "It's time to think together!": "Dis tyd om saam te dink!", - "Think": "Dink", - "It's time to think!": "Dis tyd om te dink!", + "Language": "Taal", "Learn Together": "Leer saam", "It's time to learn and practice together!": "Dis tyd om saam te leer en te oefen!", "Learn": "Leer", "It's time to learn and practice!": "Dis tyd om te leer en te oefen!", - "Customise @global.parent_app": "Pas @global.parent_app aan", - "Give me quick parenting tips": "Gee my vinnige wenke vir ouerskap", - "Something really bad happened": "Iets baie sleg het gebeur", - "I have technical problems with the app": "Ek ervaar tegniese probleme met die toep", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Jy sal hier wenke kry wat ons dink jy nuttig kan vind, gebaseer op jou antwoorde op die toep-aanpassing.", + "Listen Together": "Luister saam", + "Let's listen to an audio together!": "Kom ons luister saam na ’n klankopname!", + "Listen": "Luister", + "Let's listen to an audio!": "Kom ons luister na ’n klankopname!", + "Hi @fields.user_name! This week you did:": "Hallo, @fields.user_name! Hierdie week het jy die volgende gedoen:", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Hallo, @fields.user_name! Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nOnthou om op jou @global.parent_points te tik!", + "That’s wonderful!": "Dis wonderlik!", + "Nice work!": "Mooi so!", + "Your commitment is not taken for granted.": "Jou toegewydheid word diep waardeer.", + "Keep up the good work!": "Hou so aan!", + "This is lovely!": "Uitstekend!", + "Tap yourself on the shoulder. You deserve this.": "Klop jouself op die skouer. Jy verdien dit.", + "Every @global.parent_point counts!": "Elke @global.parent_point tel!", + "Relax now": "Ontspan nou", + "Did you relax already? Tap it!": "Het jy alreeds ontspan? Tik dit!", + "Here is a fun activity to do with your teen!": "Hier is ’n prettige aktiwiteit om saam met jou tiener te doen!", + "Continue @local.workshop_data.in_text_title": "Gaan voort met @local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Begin @local.workshop_data.in_text_title", + "Finish current workshop": "Voltooi huidige slypskool", + "How did you hear about @global.parent_app?": "Hoe het jy gehoor van @global.parent_app?", + "Other": "Ander", + "I found it myself": "Ek het dit self ontdek", + "A friend or family": "Van ‘n Vriend/Vriendin of Familielid", + "Quick Parenting Tips": "Vinnige wenke vir ouerskap", + "Raising teens can be hard, and we all struggle sometimes.": "Dit kan moeilik wees om tieners groot te maak, en ons almal sukkel soms.", + "What is the main challenge you are experiencing right now?": "Wat is die grootste uitdaging wat jy tans ondervind?", + "My relationship with my teen is not good": "My verhouding met my tiener is nie goed nie", + "My teen’s behaviour is difficult": "My tiener se gedrag is moeilik", + "I feel stressed, lonely, angry": "Ek voel gestres, eensaam, kwaad", + "I have money worries": "Ek het bekommernisse oor geld", + "I worry about my teen’s safety": "Ek is bekommerd oor my tiener se veiligheid", + "We often fight in our family": "Ons baklei gereeld in ons gesin", + "I have a different problem…": "Ek het ’n ander probleem…", + "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Om ’n beter verhouding op te bou, begin deur tyd saam deur te bring – selfs 5 minute per dag maak ’n verskil! Aanvanklik kan dit moeilik wees om tyd saam deur te bring, aangesien ons almal besig is en ons tieners soms in ’n slegte bui kan wees. Maar om selfs 5 minute per dag se gefokusde tyd met jou tiener deur te bring, help om vertroue op te bou. Vra jou tiener wat hulle saam sou wil doen. Dit kan ook vir jou lekker en ontspannend wees!", + "You can get more support on how to spend one-on-one time with your teen here:": "Jy kan hier meer ondersteuning kry oor hoe jy tyd alleen met jou tiener kan deurbring:", + "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Alle tieners gedra hulle soms net gruwelik! Een ding wat kan help met tienergedrag, is om hulle te prys wanneer hulle iets goeds doen – ongeag hoe klein dit is. Dit lyk miskien nie asof tieners jou lof wil hê of dit soek nie, maar eintlik wil hulle dit baie, baie graag hê.", + "You can get more support here on how to encourage good behaviour through praising:": "Jy kan hier meer ondersteuning kry oor hoe jy goeie gedrag kan aanmoedig deur te prys:", + "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Ouerskapstres is tans baie hoog. Ons weet presies hoe oorweldigend die lewe kan wees. Om iets vir jouself te doen, kan jou stres verminder. Jy verdien dit! En as jy oorweldig voel, neem weer beheer oor jou liggaam deur vyf keer stadig en diep asem te haal voordat jy reageer. Baie ouers het dit nuttig gevind.", + "You can get more support on how to take care of yourself here:": "Jy kan hier meer ondersteuning kry oor hoe jy vir jouself kan sorg:", + "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Jy is nie alleen nie. Geldstres is so moeilik vir ouers. Probeer om met jou tiener te praat oor hoeveel geld inkom en wat julle as gesin elke maand moet spandeer. Dit kan hulle help om te verstaan waarom jy iets wat hulle graag wil hê, nie kan bekostig nie. En as almal verstaan waarheen die geld gaan, is dit makliker om saam te stem oor waar julle ook saam kan spaar!", + "You can get more support on how to budget and save here:": "Jy kan hier meer ondersteuning kry oor hoe om te begroot en te bespaar:", + "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Tieners spandeer baie tyd buitenshuis of aanlyn, waar dit vir ons moeiliker is om hulle veilig te hou – baie ouers is bekommerd hieroor. Probeer ’n gesprek met jou tiener begin oor veilige en onveilige plekke in jou gemeenskap en aanlyn (jy sal dit miskien ’n paar keer moet probeer). Hulle ken dalk selfs sommige wat jy nie ken nie. Dit kan jou help om saam ’n plan te maak oor hoe om veilig te bly.", + "You can get more support on how to keep your teen safe here:": "Jy kan hier meer ondersteuning kry oor hoe om jou tiener veilig te hou:", + "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "As ’n probleem opduik, probeer om saam daaroor te praat. Wat is die probleem presies? Watter verskillende oplossings is daar en wat is die gevolge daarvan? Op hierdie manier kan julle ’n oplossing vind wat vir almal goed kan wees.", + "You can get more support on how to solve problems together here:": "Jy kan hier meer ondersteuning kry oor hoe om probleme saam op te los:", + "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Dit is nie maklik om na ons gesinne om te sien nie. Ons het almal soms uitdagings, maar ons hoop dat hierdie toep jou sal help om dit goed te hanteer.@global.parent_app is gebaseer op tien jaar se ervaring met die bestuur van ouerskapsprogramme in Suid-Afrika, en duisende ouers het gevind dat die wenke wat gedeel word, baie help met baie ouerskapuitdagings. Ons hoop dat hierdie toep jou en jou gesin ook sal help.\n\nHier is ’n paar van die belangrikste bewese wenke vir jou:", + "Start your first parenting workshop": "Begin jou eerste ouerskapslypskool", + "You will get more support in the @local.workshop_data.in_text_title.": "Jy sal meer ondersteuning kry in die @local.workshop_data.in_text_title.", + "You can get more support in the @local.workshop_data.in_text_title.": "Jy kan meer ondersteuning kry in die @local.workshop_data.in_text_title.", + "Start the @local.workshop_data.in_text_title": "Begin die @local.workshop_data.in_text_title", + "Finish the @local.workshop_data.in_text_title to get more support.": "Voltooi die @local.workshop_data.in_text_title om meer ondersteuning te kry.", + "Continue the @local.workshop_data.in_text_title": "Gaan voort met die @local.workshop_data.in_text_title", + "Re-access the @local.workshop_data.in_text_title": "Kry weer toegang tot die @local.workshop_data.in_text_title", + "CHAT": "GESELS", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Deel jou gevoelens, en moedig jou tiener aan om ook te praat oor hulle bekommernisse. Julle sal mekaar dan beter verstaan en dus 'n goeie plan saam kan beraam om gesond en gelukkig te bly!", + "CAUTION": "VERSIGTIG", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Kry jou informasie vanaf betroubare inligtingsbronne, sodat jy vertroue kan behou in hierdie onsekere tye. Ons hoor en sien baie nuus via ander mense asook fone, TV, internet. Laat dit jou twyfelagtig, bekommerd, bevrees, kwaad, of verward voel? Maak seker voor jy deel of optree!", + "CHOOSE": "KIES", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Om die regte besluite te neem wat almal gesond en veilig hou kan moeilik wees. Veral in hierdie tye! Jy kan jou tiener help om goeie besluite te neem.", + "CHILL": "ONTSPAN", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Ons voel almal by tye gespanne. Neem diep asem of doen iets prettig saam. Dit kan 'n groot verskil maak aan jou huishoudelike geluk en rustigheid! Hier is 'n paar idees wat jy kan probeer:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Negatiewe gedagtes laat ons negatiewe dinge sê en doen. Probeer 'n verandering in jou denke en uitlatings van negatief na positief!", "WHO Website": "WGO-webwerf", "UNICEF Website": "UNICEF-webwerf", "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Ouerskap tydens COVID is moeilik. Wees trots op jouself dat jy so ver gekom het.\n\nOns werk hier aan nuwe inhoud om jou te ondersteun sodat jy met jou tieners en kinders oor COVID kan praat.\n\nDie nuutste inligting oor COVID-19 kan op die WGO- en UNICEF-webwerwe gevind word:", - "This button will take you to the Coronavirus section of the official WHO website.": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike WGO–webwerf.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "Die URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "This button will take you to the Coronavirus section of the official UNICEF website.": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike UNICEF-webwerf.", "The URL is https://www.unicef.org/coronavirus/covid-19": "Die URL is https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike WGO–webwerf.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "Die URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "Update my parenting experiences": "Dateer my ouerskap-ervarings op", "Update my personal details": "Dateer my persoonlike besonderhede op", "Update my workshop options": "Dateer my werksessie opsies op", + "Give me quick parenting tips": "Gee my vinnige wenke vir ouerskap", + "Something really bad happened": "Iets baie sleg het gebeur", + "I have technical problems with the app": "Ek ervaar tegniese probleme met die toep", + "You will find the in-week messages from the previous workshops here.": "Jy kan die in-week-boodskappe van die vorige slypskole hier vind.", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Jy het nog geen aktiwiteite by @global.my_activities gevoeg nie. Waarom kies jy nie ’n paar nie?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Jy het nog geen ontspanningsaktiwiteite by @global.my_relaxes gevoeg nie. Waarom kies jy nie ’n paar nie?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Jy sal hier wenke kry wat ons dink jy nuttig kan vind, gebaseer op jou antwoorde op die toep-aanpassing.", + "Relaxation activities": "Ontspanningsaktiwiteite", + "Something fun to do with your teen": "Iets prettig om saam met jou tiener te doen", "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Ervaar jy enige tegniese probleme? Laat weet ons en help om @global.parent_app te verbeter!", "Type your name (optional)": "Tik jou naam in (opsioneel)", + "Contact me on @global.whatsapp": "Kontak my by @global.whatsapp", "Type your phone number": "Tik jou foonnommer in", "Contact me via email": "Kontak my per e-pos", "Type your email address": "Tik jou e-posadres in", "Tell us about your issue": "Vertel ons van jou probleem", "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Die eerste keer dat my ma my gevra het of ek tyd saam met haar wou deurbring, het ek vir haar gesê om my uit te los, want ek was in die middel van ’n speletjie. Tog het sy soos altyd aangedring. Ek het gesê sy kan kyk hoe ek speel indien sy wil. Na ’n paar minute het sy my vrae begin vra oor die speletjie. Aanvanklik was dit irriterend, maar na ’n rukkie was ek bly dat sy uiteindelik belangstelling getoon het in wat ek doen. Sy het selfs probeer speel!", "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "My pa het vir my gesê ek speel te veel basketbal na skool en ons moet ’n gesinsreël instel. Hy het belowe dat ons saam sal dink aan ’n oplossing, sodat ons albei goed sal voel daaroor. Ek het nie geglo dat dit moontlik sou wees nie, maar ek het gesê: “Goed, laat ons probeer”. Ons het onderhandel en saamgestem dat die reël sal wees dat ek ná huiswerk basketbal mag speel, tot aandete. Dit is vir my moeilik om my vriende na skool te sien speel, daarom doen ek my bes om my huiswerk eers klaar te maak en dan by hulle aan te sluit. Nou het ek ook die hele aand om ander dinge na aandete te doen, soos om na basketbal in die NBA te kyk.", - "You will find the in-week messages from the previous workshops here.": "Jy kan die in-week-boodskappe van die vorige slypskole hier vind.", - "Start": "Begin", - "How would you like to do this workshop?": "Hoe sou jy hierdie werksessie wou doen?", - "Coming soon": "Binnekort beskikbaar", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Ons sal ander ouerskapkwessies moet behandel voordat ons kan begin werk aan @local.workshop_data.title.\n\nJy kan die belangrikste hulpmiddels kry by @local.workshop_data.title via die @global.parent_centre.", - "My name": "My naam", - "@global.weekly_workshop day": "@global.weekly_workshop dag", - "I do the workshops...": "Ek doen die slypskole...", - "My group's name": "My groep se naam", - "My group is now doing the workshop...": "My groep doen nou die slypskool...", - "I am now doing the workshop...": "Ek doen nou die slypskool...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Is jy seker jy wil al die werksessies ontsluit? As jy dit eers gedoen het, sal jy dit nie weer kan sluit nie", - "You can always find these tools in the @global.parent_centre": "Jy kan altyd hierdie hulpmiddels in die @global.parent_centre kry", - "Add this activity to @global.my_activities": "Voeg hierdie aktiwiteit by @global.my_activities", - "Relaxation activities": "Ontspanningsaktiwiteite", - "Something fun to do with your teen": "Iets prettig om saam met jou tiener te doen", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Jy het nog geen ontspanningsaktiwiteite by @global.my_relaxes gevoeg nie. Waarom kies jy nie ’n paar nie?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Jy het nog geen aktiwiteite by @global.my_activities gevoeg nie. Waarom kies jy nie ’n paar nie?", - "Open Survey": "Maak Studie Oop", - "Select Language": "Kies Taal", - "Workshop Options": "Slypskool-opsies", - "Unlock Workshops": "Ontsluit werksessies", - "Demo Presentation": "Demo-aanbieding", - "Organisation Registration": "Registrasie van organisasie", - "Developer Mode": "Ontwikkelaarmodus", - "Unlock all workshops": "Ontsluit alle slypskole", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Deur op die onderstaande knoppie te klik, sal jy al die slypskole ontsluit.\n\nLET WEL: Gebruikers moenie hierdie funksie gebruik om slypskole te ontsluit nie; dit word nie aanbeveel nie, tensy dit streng noodsaaklik is.", - "Unlock workshops": "Ontsluit Slypskole", - "All workshops are now unlocked.": "Alle slypskole is nou ontsluit.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Deur op die onderstaande knoppie te klik, stel jy die toep terug na die oorspronklike instellings.\n\nDit beteken dat al jou vordering- en gebruiksdata uitgevee sal word en dat jou toep sal werk asof dit pas vir die eerste keer geïnstalleer is.\n\nLET WEL: Die terugstelling van die app is permanent en jy sal geen inligting kan herstel nie.", - "Reset App": "Stel Toep terug", - "You have successfully entered developer mode.": "Jy het suksesvol in ontwikkelaarmodus gekom.", - "You have entered an incorrect code.": "Jy het ’n verkeerde kode ingevoer.", - "Language": "Taal", - "How did you hear about @global.parent_app?": "Hoe het jy gehoor van @global.parent_app?", - "I found it myself": "Ek het dit self ontdek", - "A friend or family": "Van ‘n Vriend/Vriendin of Familielid", - "Other": "Ander", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "Jy sal moontlik gevra word om hierdie kode te deel met mense wat jou @global.parent_app-reis sal ondersteun.", - "Last sync at: @local.sync_latest": "Laas gesinchroniseer om: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Hierdie toestel is nog nooit gesinkroniseer nie. Sinkroniseer om jou kode te toon.", - "Sync now": "Sinkroniseer nou", - "Syncing...": "Besig om te sinchroniseer...", - "You selected @local.threshold or less": "Jy het @local.threshold of minder gekies", - "You selected more than @local.threshold": "Jy het meer as @local.threshold gekies", - "Reply": "Antwoord", - "Days in the past month": "Dae gedurende die afgelope maand", - "Days in the past week": "Dae gedurende die afgelope week", - "You selected less than @local.threshold": "Jy het minder as @local.threshold gekies", - "Unlock for less than @local.threshold": "Ontsluit vir minder as @local.threshold", - "You selected @local.threshold or more": "Jy het @local.threshold of meer gekies", - "Video": "Video", - "Timer": "Tydhouer", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Druk die driehoek om jou te help om hierdie gesprek by @local.timer_duration minute te hou.", - "Options": "Opsies", - "Home": "Tuis", - "Settings": "Instellings", - "Template": "Sjabloon", - "Tour": "Toer", - "In-Week Messages": "In-week-boodskappe", - "Campaigns": "Veldtogte", - "Notifications": "Kennisgewings", - "About @global.parent_app": "Oor @global.parent_app", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app is ontwikkel deur Parenting for Lifelong Health (PLH) – 'n wêreldwye samewerking tussen ouerskapkundiges van UNICEF, die Wêreldgesondheidsorganisasie en universiteite in Suid-Afrika en Engeland, sowel as NPO's in Afrika en gesinne en tieners regoor Afrika. Ouers en tieners het saam met ons aan die toepassing gewerk en gehelp om te verseker dat dit maklik om te gebruik, pret en boeiend is. Sommige van die inhoud in hierdie toepassing, soos voorstelle van aktiwiteite en geïllustreerde stories, is saam met ouers en tieners geskep om seker te maak dit pas by gesinne se behoeftes.\n\nParenting for Lifelong Health (PLH) is toegewy om gratis en deelbare ouerskapmateriale en -programme te ondersteun, om ouers wêreldwyd te ondersteun om die welstand van hul kinders te bevorder.", - "Finish current workshop": "Voltooi huidige slypskool", - "Here is a fun activity to do with your teen!": "Hier is ’n prettige aktiwiteit om saam met jou tiener te doen!", - "Start @local.workshop_data.in_text_title": "Begin @local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Gaan voort met @local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Hallo, @fields.user_name! Hierdie week het jy die volgende gedoen:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Hallo, @fields.user_name! Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nOnthou om op jou @global.parent_points te tik!", - "That’s wonderful!": "Dis wonderlik!", - "Nice work!": "Mooi so!", - "Your commitment is not taken for granted.": "Jou toegewydheid word diep waardeer.", - "Keep up the good work!": "Hou so aan!", - "This is lovely!": "Uitstekend!", - "Tap yourself on the shoulder. You deserve this.": "Klop jouself op die skouer. Jy verdien dit.", - "Every @global.parent_point counts!": "Elke @global.parent_point tel!", - "Relax now": "Ontspan nou", - "Did you relax already? Tap it!": "Het jy alreeds ontspan? Tik dit!", - "Looking after yourself matters.": "Om na jouself om te sien, maak saak.", - "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Wonderlik! So bly om te hoor dit gaan goed met jou vandag. Wat ’n wonderlike gevoel!", - "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Soms gaan dinge goed. Soms nie. En soms weet ons nie heeltemal wat om te dink nie... en dit is heeltemal oukei! Onthou, jy is nie alleen nie.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Dit is wonderlik, veral in sulke moeilike tye soos hierdie. Jy is ’n ster.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Ons weet hoe spanningsvol dit deesdae is om tieners groot te maak. Dit help jou – en jou gesin – om te leer hoe om jou stres te hanteer.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Goeiedag, almal. \n\nVandag se onderwerp is hoe om spanning te hanteer.\n\nDit is belangrik om te weet hoe om spanning te hanteer. Soms gedra ons kinders hulle op maniere wat ons gespanne maak, en ons as ouers kan ons kinders ook gespanne laat voel.\n\nDit is dus belangrik om te besef wanneer ons spanning ervaar en om dan ’n blaaskans te neem en asem te haal. Dit sal jou help om jou spanning te hanteer.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Veiligheid-amnestie-storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie...\n* Storie en nadenke – dit het gewerk!\n* Veiligheid-amnestie-storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Kom ons kyk na ’n voorbeeld van hoe spanning soms net te veel kan raak, vir ons almal:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver: “Los my uit en hou jou neus uit my sake!”", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Wat het ek gedoen? Jy luister nooit nie!” \n\n@global.w_stress_male_caregiver: “Ek het gesê los my uit of jy kry ’n pak slae!”", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Kyk! Ek het ’n huis gemaak!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Wie gee om oor jou simpel huis!”", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel? En sy @global.w_stress_male_caregiver? En@global.w_stress_girl?\n\nWat kon @global.w_stress_male_caregiver anders gedoen het?", - "How do you think @global.w_stress_teen_boy_1 felt?": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel?", - "And @global.w_stress_male_caregiver?": "En @global.w_stress_male_caregiver?", - "And @global.w_stress_girl?": "En @global.w_stress_girl?", - "Scared": "Bang", - "Each of them was feeling upset for their own reason!": "Elkeen van hulle was ontsteld om hul eie redes!", - "What could @global.w_stress_male_caregiver have done differently?": "Wat kon @global.w_stress_male_caregiver anders gedoen het?", - "Recognise why he feels stressed": "Erken waarom hy gespanne voel", - "Take a deep breath and speak calmly": "Haal diep asem en praat op ’n kalm manier", - "Show he understands his teen’s feelings": "Wys hy verstaan sy tiener se gevoelens", - "Think about solutions together with @global.w_stress_teen_boy_1": "Dink saam met @global.w_stress_teen_boy_1 aan oplossings", - "Do something positive together with @global.w_stress_teen_boy_1": "Doen iets positief saam met @global.w_stress_teen_boy_1", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver sou kon...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Erken waarom hy gespanne voel \n* Diep asemhaal en op ’n kalm manier praat\n* Wys hy verstaan sy tiener se gevoelens \n* Dink aan oplossings saam met @global.w_stress_teen_boy_1\n* Iets positief doen saam met@global.w_stress_teen_boy_1", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Dankie dat jy saam gedink het! Kom ons gaan terug om te sien wat @global.w_stress_male_caregiver nou doen:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver het sy werk verloor. Hy het vol frustrasie en spanning tuis gesit toe @global.w_stress_teen_boy_1 ingekom het.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver ( asem in): “Ek is jammer, my seun. Dit was ’n moeilike dag. Die baas het my afgedank.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “O nee! Ek het ’n nuwe skooluniform nodig.” \n\n@global.w_stress_male_caregiver: “Ek sal probeer, my seun, en jou @global.w_stress_female_caregiver se werk sal help om ons deur te sien terwyl ek ander werk soek.”", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Ek kan ook werk soek om te help,@global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nee, dis oukei, @global.w_stress_teen_boy_1. Ek waardeer jou aanbod. Die belangrikste is dat jy hard werk op skool. Dankie dat jy na my geluister het.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Kom ons gaan speel saam sokker. Dit sal my help om ’n bietjie van hierdie spanning te vergeet.”\n\n@global.w_stress_teen_boy_1: “Oukei, @global.w_stress_male_caregiver!”", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Dit het soveel beter gegaan!\n\nOm ’n blaaskans te neem, help om kalm te reageer wanneer jy kwaad of gespanne voel. Probeer dit, jy sal sien!", - "Safety Amnesty": "Veiligheid-amnestie", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Dink terug aan toe jy ’n tiener was. \n\nWas daar ooit ’n tyd wat jy in gevaar was, maar jy kon nie vir jou gesin vertel nie, want hulle sou kwaad wees?\n\nDit het AMPER met @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl gebeur! Kom ons kyk:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: “Moenie vir die grootmense sê nie, maar ek gaan vanaand saam met my vriende na ’n kroeg toe” \n\n@global.w_stress_teen_girl: “Geniet dit! Ek het vir hulle gesê ek bly by my vriendin, maar ek gaan eintlik na ’n cool partytjie toe.”", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ek dink hulle verkoop dwelms. Ons kan almal in hegtenis geneem word. Maar ek kan my ouers nie vertel nie – hulle sal vreeslik kwaad wees.”", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ek is bang. Almal is te dronk om my huis toe te neem. Een seun sê hy sal my neem, maar hy wil eers na sy huis toe gaan. Ek kan my ouers nie vertel nie – ek het gejok oor die partytjie.”", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Hierdie is gevaarlike situasies! Gelukkig het @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl onthou wat @global.w_stress_parent vir hulle gesê het: \n\n“Ek gee meer om oor julle veiligheid as enigiets anders. As julle ooit ontsteld of bang is, kan julle my altyd skakel vir hulp, of my daarvan vertel. \n\nSê net 'VEILIGHEID-AMNESTIE'. Ek belowe ek sal my bes doen om te help en ek sal nie kwaad wees nie – selfs al doen julle iets wat julle nie moet nie.”", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: “@global.w_stress_parent, dis ’n veiligheid-amnestie. Kan jy my kom oplaai? Ek het regtig ’n geleentheid huis toe nodig.”", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: “@global.w_stress_parent, veiligheid-amnestie. Ek dink my vriende is in die moeilikheid. Ek wil nie ophou om hulle vriend te wees nie, maar ek is bekommerd. Kan ons praat?”", - "BREATHE. Slowly. Pause.": "ASEM IN. Stadig. Neem ’n blaaskans.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Voor jy iets sê, asem vyf keer stadig in en uit. Dit sal jou kalmeer, en jou ’n kans gee om te dink.", - "SHARE how you feel": "DEEL hoe jy voel", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Dis moeilik. Baie van ons is geleer om nie te huil nie, om nie ons gevoelens vir ons kinders te wys nie. Maar haal diep asem en vertel hulle op ’n kalm manier hoe jy voel. Hulle sal beter verstaan, en ook van jou leer hoe om stres te hanteer.", - "SHOW them you care": "WYS hulle dat jy omgee", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Dit is ook moeilik!. Spanning maak dat ons op onsself fokus. Maar ons tieners het ons ondersteuning nodig. Vra hulle hoe hulle voel. Luister na hulle en stel hulle gerus. Probeer hulle ’n drukkie gee of sê ‘ek verstaan’. Dit kan alles verander.", - "SEEK the positive": "VIND die positiewe", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Kan jy en jou tiener dink aan idees wat dalk kan help? Kan julle iets positief saam doen om die stres uit julle gedagtes te kry?", - "If all else fails, breathe. You can do this.": "As niks werk nie, haal asem. Jy kan dit doen.", - "There are two home practices for this week.": "Daar is twee tuisoefeninge vir hierdie week.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Elke keer as jy gespanne of ontsteld voel: asem vyf keer in en uit voordat jy reageer.\n\nEn wanneer julle albei kalm is, deel met jou tiener hoe jy voel.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Bespreek “veiligheid-amnestie” met jou tiener, en dink saam aan ’n situasie waar julle dit sou kon gebruik.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Elke keer wanneer jy ’n blaaskans neem voor jy reageer, of wanneer jy iets doen om jou tiener veilig te hou, tik op jou @global.parent_points en vier jou sukses!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Julle het hierdie week se slypskool voltooi.\n\nVolgende week sal ons oor geld praat – julle sal die volgende nodig hê:\n* ’n vel papier/karton\n* ’n pen\n* 20 klein klippies/boontjies/pitte\n\nDit sal pret wees!", - "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Dis gaaf dat dit vandag goed gaan. Wat is dit wat vandag goed was? Onthou om jouself daarvoor te prys.", - "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Jammer om te hoor dat jy nie vandag goed voel nie. Dis goed dat jy sulke emosies uitspreek en probeer om kalm en goedhartig teenoor jouself te wees. Jy stel ’n baie mooi voorbeeld vir jou gesin.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Elke klein dingetjie wat jy doen, maak saak. Ons hoop jy is ook trots op jouself.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Alle gesinne ervaar krisisse. Wanneer ons saam voorberei en weet waar om hulp te kry, VOORDAT iets sleg gebeur, kan ons enige krisis oorkom.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Goeiedag, almal\n\nVandag se onderwerp is die hantering van krisisse.\n\nKrisisse kan enige plek voorkom. Krisisse kan enige tyd voorkom. Daarom is dit belangrik om as gesin planne in plek te hê ingeval enige lid van die gesin hulself in ’n krisissituasie bevind. \n\nDit is belangrik om planne te hê sodat elke lid van die gesin beskerm kan voel. \n\nWanneer ons krisisse hanteer, onthou om stil te gaan staan, asem te haal en jouself kalm te hou. Dit sal jou help om die krisis beter te hanteer.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking\n* Storie en bespreking\n* Hulpmiddels: Hoe om ’n krisis te hanteer\nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke \n* Storie en nadenke\n* Hulpmiddels: Hoe om ’n krisis te hanteer \nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "’n Krisis kan met enigeen gebeur. \n\nKom ons kyk wat het met @global.w_crisis_teen_girl_1 en @global.w_crisis_female_caregiver gebeur:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Foeitog my kind, jy lyk regtig ontsteld, wil jy vir my vertel wat gebeur het?”", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Dit is my oom, hy...hy... hy het aan my gevat.”\n\n@global.w_crisis_female_caregiver (dink): “Haal diep asem...Wat het my kind nodig? Sy het nodig dat ek kalm bly en luister” \n\n@global.w_crisis_female_caregiver: “Kom sit hier langs my. Neem jou tyd, ek luister.”", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Dis waar, hy...hy... het my gedwing om dit te doen! Hy het my gedwing om met hom seks te hê! Ek wou nie, ek sweer, en ek het selfs NEE gesê, maar hy het gesê ek sal in die moeilikheid kom.” \n\n@global.w_crisis_female_caregiver: “Dankie dat jy dit met my deel. Jy is nie in die moeilikheid nie. Dis nie jou skuld nie.”", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: “Gister het jy gaan kuier by @global.w_crisis_adult_friend. Hy het net hier aangekom, en dis toe dit gebeur het.”\n\n@global.w_crisis_female_caregiver: “Dis oukei, my kind, ek glo jou. Dis ’n groot ding en ons sal ’n manier kry om die nodige hulp te kry. Waar kan ons gaan hulp vra?”\n\n@global.w_crisis_teen_girl_1: “My skool?”", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Aag, ek weet, kom ons gaan kliniek toe. Hulle sal weet wat ons kan doen om jou te help. Klink dit vir jou oukei?”\n\n@global.w_crisis_teen_girl_1: “Ja… Oukei… Maar sal jy saam met my gaan?”", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Natuurlik sal ek. En@global.w_crisis_teen_girl_1? Onthou, dis nie jou skuld nie. Ek is lief vir jou. Jy is ’n goeie persoon. Ons sal hierdeur kom.”", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Dit was so ’n moeilike situasie vir @global.w_crisis_teen_girl_1 en haar@global.w_crisis_female_caregiver! Dit kan met seuns én meisies gebeur.", - "What skills did @global.w_crisis_female_caregiver use?": "Watter vaardighede het @global.w_crisis_female_caregiver gebruik?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ja, @global.w_crisis_female_caregiver het werklik al daardie vaardighede gebruik – en jy kan ook!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "’n Ander probleem waaroor baie ouers bekommerd is, is geweld en misdaad. Kom ons kyk saam na ’n voorbeeld.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: “@global.w_crisis_teen_boy_1, Jy lyk van gister af bekommerd. Wat is verkeerd?”", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Gister was ek en my vriende by ’n sokkerwedstryd. ’n Paar dronk ouens het ’n bakleiery met my vriend begin.” \n\n@global.w_crisis_male_caregiver_1: “Gaan aan, ek luister. Ek hoop jy het nie baklei nie?”", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Ek wou nie, maar ek kon nie net daar staan en kyk hoe hulle my vriend slaan nie, daarom....”\n\n@global.w_crisis_male_caregiver_1 :“Het jy dus baklei om jou vriend te help verdedig?”", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Almal het baklei. Ek het iemand op die veld sien lê, in ’n plas bloed. Dit het vir my gelyk hy is... dood.”", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ek is bly jy vertel my hiervan, @global.w_crisis_teen_boy_1. Kom sit by my, dan bespreek ons of ons die polisie of iemand anders wat kan help, moet betrek.”", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Dankie, @global.w_crisis_male_caregiver_1”\n\n@global.w_crisis_male_caregiver_1: “Ons sal hierdeur kom. Onthou, ons sal jou as ’n gesin ondersteun.”", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Dit was ’n baie moeilike situasie vir @global.w_crisis_teen_boy_1 en sy @global.w_crisis_male_caregiver_1!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "Watter vaardighede het @global.w_crisis_male_caregiver_1 gebruik?", - "All these skills can help in a crisis.": "Al hierdie vaardighede kan help in ’n krisis.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Krisisse kan ons kwaad of hulpeloos laat voel. Maar dít is wanneer ons tieners regtig nodig het dat ons asemhaal, luister en dink.", - "BREATHE": "ASEM IN", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Bly kalm. Vra jouself af ‘wat het my tiener op hierdie oomblik nodig?’", - "Tell them you are there for them and love them.": "Sê vir hulle jy is daar vir hulle, en is lief vir hulle.", - "THINK": "DINK", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Gesels met jou tiener. Wat kan dalk die situasie help? Jy sal dalk nou dadelik planne moet beraam, en dan langtermynplanne later.", - "You can be proud of yourself for exploring ways to get help!": "Wees trots op jouself omdat jy maniere soek om hulp te kry!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Dit help om te oefen hoe om ’n krisis te hanteer voordat iets gebeur.\n\nKyk na hierdie vyf krisistye in ’n gesin. Stel jou voor jy is die ouer: Wat sou jy doen?\n\nOnthou: ASEM IN – LUISTER – DINK", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Krisis 1: @global.w_crisis_teen_boy_2 baklei by die skool", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Ek het dit nog nooit voorheen gedoen nie. En nou gaan hulle my skors”", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Krisis 2: @global.w_crisis_teen_girl_1 raak swanger", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: “@global.w_crisis_male_caregiver_1, ek skaam my. Ek weet nie wat om te doen nie”", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Krisis 3: @global.w_crisis_teen_boy_2 maak ’n meisie swanger", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: “@global.w_crisis_male_caregiver_2, ek wil nie ’n baba hê nie”", - "How could you respond to @global.w_crisis_teen_boy_2?": "Watter terugvoer kan jy aan @global.w_crisis_teen_boy_2 gee?", - "Crisis 4: Someone in the family gets sick": "Krisis 4: Iemand in die familie raak siek", - "\"The test said I have HIV. I’m scared I’m going to die\"": "“Die toets wys ek het MIV. Ek is bang ek gaan dood”", - "How could you respond in this situation?": "Hoe kan jy in hierdie situasie reageer?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Krisis 5: @global.w_crisis_teen_girl_1 word onder druk geplaas om met haar kêrel seks te hê", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: “Ek wou nie regtig nie. Nou gaan ek swanger raak of siek raak. @global.w_crisis_female_caregiver, ek is baie bang...”", - "How could you respond to @global.w_crisis_teen_girl_1?": "Watter terugvoer kan jy aan @global.w_crisis_teen_girl_1 gee?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Onthou om mekaar te ondersteun en aan te moedig. In ’n krisis is dit moeilik om kalm te bly en na mekaar te luister – ons is trots op jou.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Kies saam met jou tiener een van hierdie situasies ( of dink self een uit!). Kyk na die tekenprent, en bespreek wat julle saam sou doen indien dit met ’n vriend of in julle gesin sou gebeur.\n\n En onthou: ASEM IN – LUISTER – DINK", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en julle help om vir die toekoms te beplan. \n\nMiskien kan julle saam partytjiekos beplan, en musiek reghou as julle dalk wil dans!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en jy kan die ondersteuning kies wat jy vir die toekoms wil hê.\n\nJy kan iets lekker voorberei om dit te vier – iets wat jy graag eet, of musiek waarna jy graag luister!", - "Self-care is a key parenting tool.": "Selfsorg is ’n sleutelhulpmiddel vir ouerskap.", - "How are you feeling today?": "Hoe voel jy vandag?", - "So good to hear you are feeling well today. You are incredible!": "Dis so lekker om te hoor jy voel vandag goed. Jy is ongelooflik!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Ek is jammer dat dinge nou moeilik gaan. Haal diep asem en weet dat jy waardeer word.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Jy kan jou tiener help verstaan dat daar gevolge is wanneer ’n gesin se reëls oortree word. \n\nMaar HOE jy dit doen, maak saak. \n\nOm gevolge reg te hanteer, help tieners om hul beter te gedra en sorg vir ’n kalmer gesinslewe...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Goeiedag, almal. \n\nVandag se onderwerp is kalm gevolge.\n\nDit is belangrik dat, wanneer ons gevolge aan ons tieners bekendstel, ons hulle betrek, maar dit is ook belangrik dat ons kalm bly wanneer ons gevolge bekendstel.\n\nDit sal ons help om saam te stem om kalm gevolge aan ons tieners bekend te stel en ons tieners sal die gevolge maklik onthou wanneer hulle betrek word en dit sal hulle verantwoordelik maak.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Kom ons lees wat met @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver gebeur het:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Kyk hoe laat is dit! Jy is laat!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – gaan slaap maar weer”. \n\n@global.w_consequence_male_caregiver: “Dis BAIE later as wat jy veronderstel was om by die huis te wees!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, jy hou nie by ons reël nie! Ek gaan jou ’n pakslae gee!”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Dis onregverdig! Julle luister nooit na my nie!! Ek haat julle!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Bespreek saam: \n* Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", - "Giving a consequence this way did not work well because...": "’n Gevolg wat so gegee is, het nie goed gewerk nie, want...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver was kwaad", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver het nie vir @global.w_consequence_teen_boy_1 laat verduidelik nie", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Die gevolg is nie vooraf met @global.w_consequence_teen_boy_1 bespreek nie", - "The consequence was too strong": "Die gevolg was te hewig", - "Why did giving a consequence this way not work well?": "Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "Ja, so ’n hewige reaksie het almal net meer kwaad en ontsteld gemaak.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Tieners oortree dikwels reëls. Grootword is ’n moeilike tyd wanneer hulle leer wie hulle is.\n\nGelukkig is daar maniere om jou tiener te dissiplineer sonder om kwaad te raak of geweld te gebruik....en dit werk goed!\n\nWanneer kalm gevolge gegee word, help dit om ons kinders verantwoordelikheid te leer vir wat hulle doen – goed en sleg.\n\nHier is ’n paar voorbeelde – stel jou voor jy is die ouer:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Kalm gevolge behoort... \n\nREGVERDIG te wees: Nie te hewig nie en jy kan dit in werklikheid uitvoer \n\nONMIDDELLIK te gebeur: Gee dit so gou as moontlik \n\nKONSEKWENT te wees: Elke keer dieselfde gevolg", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.\n\nWatter gevolg sal hier help?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Gevolge is nie heeltemal dieselfde as straf nie: hulle gee ons tieners ’n kans om vir hul optredes verantwoordelikheid te leer neem.\n\nEn dit is meer beheersd EN effektief as om te slaan of te skree!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.\n\nWatter gevolg sal hier help?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Gevolge is meer suksesvol as jy dit vooraf met tieners bespreek en met die tieners ooreenkom, voordat jy dit toepas.\n\nEn gevolge is nie net negatief nie... Julle kan ook ooreenkom op GOEIE gevolge vir GOEIE optredes om meer positiewe gedrag te sien!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.", - "What consequence would help here?": "Watter gevolg sal hier help?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.\n\nWatter positiewe gevolge sal hier help?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Dis belangrik hoe jy kalm gevolge voorstel. Onthou, wanneer jy jou tiener betrek, gaan dinge gewoonlik beter!", - "EXPLAIN": "VERDUIDELIK", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Maak seker julle is albei kalm. Haal ’n paar keer diep asem. Verduidelik aan jou tiener waarom jy oor hulle gedrag bekommerd is.\n\nVerduidelik die redes waarom die reël saak maak. Jy kan jou gevoelens deel – dit is oukei om te sê jy is teleurgesteld.", - "AGREE": "STEM OOREEN", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Beplan saam met jou tiener wat die gevolge sal wees as die reël nie nagekom word nie.\n\nVra hulle vir idees. Gesels totdat julle oor iets realisties saamstem.\n\nStel ’n gevolg vas vir wanneer die reël NIE nagekom word nie en ’n voorreg vir wanneer hulle WEL die reël nakom.", - "ACT": "TREE OP", - "When your teen follows the rule, give praise and privileges!": "Wanneer jou tiener die reël nakom, prys hulle en gee voorregte!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Hulle sal voel hulle word gerespekteer en gewaardeer. Hoe meer ons hulle prys, hoe meer sal hulle daardie goeie gedrag toon!", - "When your teen does not follow the rule, follow through with the consequence.": "Wanneer jou tiener nie die reël nakom nie, druk deur met die gevolg.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Wanneer jou tiener die reël oortree, gee die gevolg op ’n kalm manier. Dit moet REGVERDIG (nie te straf nie), ONMIDDELLIK (doen dit dadelik) en KONSEKWENT (elke keer dieselfde) wees.", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Bespreek saam:\n* Watter reëls oortree jou tieners dikwels?\n* Watter gevolg sou jy kon gebruik vir elke spesifieke reël wat oortree word?\n\nGevolge moet: \nREGVERDIG wees (nie te straf nie)\nONMIDDELLIK wees (doen dit dadelik) \nKONSEKWENT wees (elke keer dieselfde).\n\nPrys mekaar en moedig mekaar aan – ons kan mekaar sterk maak!", - "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Kom ons keer terug na @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver", - "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ek is besorg daaroor dat jy steeds dikwels laat huis toe kom, @global.w_consequence_teen_boy_1. Wat kan ons doen om jou te help onthou om betyds huis toe te kom?”\n\n@global.w_consequence_teen_boy_1: “As ek betyds huis toe kom, kan ek dan miskien 30 minute later as gewoonlik wakkerbly?”", - "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Dit is ’n goeie idee! En wat moet ons doen as jy nie die reël nakom nie?\n\n@global.w_consequence_teen_boy_1 (mompel): “Mgmluuhm”", - "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Ag kom nou, ek weet jy het ’n paar idees.”\n\n @global.w_consequence_teen_boy_1: “Nou goed…. Wat van: ek moet my huiswerk doen?”", - "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Jy moet in elk geval jou huiswerk doen. As jy die reël vergeet, is dit regverdig dat jy jou vriende nie die volgende dag sal kan sien nie.”\n\n@global.w_consequence_teen_boy_1: “Oukei, @global.w_consequence_male_caregiver.”", - "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Die volgende dag...\n\n @global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Hoe laat is dit? Dit is laat!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – jy kan maar weer gaan slaap.” \n\n@global.w_consequence_male_caregiver: “Dit is BAIE later as wat jy veronderstel was om by die huis te wees!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, dit is middernag en jy het later huis toe gekom as wat ons ooreengekom het. Wat ook al die rede is, jy moet verstaan dat dit nie aanvaarbaar is nie.Ek en @global.w_consequence_female_caregiver was regtig bekommerd.”", - "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “My vriende wou hê ek moes langer bly. Hulle het my ’n baba genoem omdat ek al huis toe moes gaan.”\n\n@global.w_consequence_male_caregiver: “Ek weet dit kan moeilik wees om vir jou vriende nee te sê. Kom ons praat môreoggend hieroor wanneer ons uitgerus is.”", - "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ek is jammer dat ek jou bekommerd laat word het, en ook@global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Dankie. Gaan slaap nou, maar jy moet baie mooi verstaan, aangesien jy later huis toe gekom het as wat ons ooreengekom het, sal jy nie toegelaat word om môreaand uit te gaan nie.”", - "Let's talk about this story": "Kom ons praat oor hierdie storie", - "Using a consequence worked well this time because...": "Dit het goed gewerk om hierdie keer ’n gevolg te gebruik, want...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver het die gevolge bespreek toe hulle albei kalm was", - "They agreed on consequences together": "Hulle het saam oor die gevolge ooreengekom", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver het kalm maar ferm gereageer toe@global.w_consequence_teen_boy_1 die reël oortree het", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver het na @global.w_consequence_teen_boy_1 geluister", - "The consequence was realistic and appropriate": "Die gevolg was realisties en toepaslik", - "Why did using a consequence work well this time?": "Waarom het die gebruik van ’n gevolg hierdie keer goed gewerk?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Wat sou ’n kalm gevolg wees vir jou tieners wat tydens aandete met mekaar argumenteer? \n\nOnthou, dit moet: \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", - "Not seeing any friends for a month": "Om vir ’n maand geen vriende te mag sien nie", - "This may be hard to do for you and also too harsh!": "Dit mag dalk vir jou moeilik wees, en ook 'n te hewige straf!", - "Cancelling their birthday plans in a month’s time": "Om hul verjaarsdagplanne vir oor ’n maand te kanselleer", - "This is too far in the future, and too harsh as well!": "Dit is te ver in die toekoms, en ook te hewig!", - "No TV this evening": "Geen TV vanaand nie", - "Perfect, this sounds fair and can be done straight away": "Perfek, dit klink regverdig en kan onmiddellik gebeur", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Beplan ’n kalm gevolg vir jou tieners wat tydens aandete met mekaar argumenteer. Onthou dit moet:\n \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Julle tuis oefenwerk hierdie week is om met jou tiener te gesels oor EEN negatiewe gevolg en EEN positiewe gevolg.\n\nGevolge moet: \nREGVERDIG wees (nie te hewige straf nie)\nONMIDDELLIK wees (doen dit dadelik)\nKONSEKWENT wees (elke keer dieselfde)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Negatiewe gedrag: Kom na die ooreengekome tyd huis toe.\n\nNegatiewe gevolg: Kan nie die volgende dag vriende sien nie.\n\nNegatiewe gedrag: Praat ongeskik. \n\nNegatiewe gevolg: Skryf ’n brief om verskoning te vra.\n \nPositiewe gedrag: Help met inkopies.\n\nPositiewe gevolg: ’n Ekstra 30 minute vir ’n lekker aktiwiteit van hul keuse. \n\nPositiewe gedrag: Help om jonger broers of susters op te pas.\n\nPositiewe gevolg: Een ekstra uur saam met vriende oor die naweek.", - "Great!": "Wonderlik!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ek weet die lewe kan moeilik wees. Ek is trots op jou.\n\nHoe jy ook al voel, dit is wonderlik dat jy hier is!", - "Using the app together": "Hoe om die app saam te gebruik", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Dit is wonderlik om jou te sien!\n\nEerstens, kom ons help jou groep om aan die gang te kom.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Stem saam oor jul grondreëls:\n* Op watter dag/dae en tyd/tye sal ons in die week bymekaarkom?\n* Wie sal die foon/fone hou tydens ons aktiwiteite?\n* Hoe kan ons seker maak dat almal openlik kan deel?\n* Wat kan ons doen sodat ons almal gerespekteerd voel?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Jy kan altyd jou slypskooldag en jou groepnaam verander in die @global.weekly_workshop_options.", - "Some rules that other groups made:": "’n Paar reëls wat ander groepe gemaak het:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Dinsdag om 7nm. is ons @global.parent_app-tyd saam\n* Maak beurte om die foon vas te hou (1 aktiwiteit per persoon)\n* Aanvaar mekaar se ervarings. Ons is almal anders!\n* Maak beurte om te praat en te luister\n* Alle vrae is welkom\n* Wat ons deel, bly onder ons", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.\n\nOnthou, jy verdien elke keer ’n @global.parent_point as jy vir jouself sorg – jy maak saak!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Om ’n ouer te wees, kan baie moeilik wees. Soms voel dit asof ons kinders nooit na ons luister nie.\n\nMaar die wetenskap toon dat vertroue en liefde opgebou kan word deur elke dag net ’n paar minute se gefokusde een-tot-een-tyd met jou tiener deur te bring.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Een-tot-een-tyd is wanneer jy op hulle fokus, sonder TV of fone. Laat hulle die leiding neem met wat julle doen of waaroor julle praat.\n\nDit is wonderlik as julle dit twintig minute per dag kan doen, maar selfs vyf minute per dag is regtig goed.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Hallo,\n\nOns onderwerp vandag is een-tot-een-tyd met ons kinders.\n\nDit is belangrik om tyd met ons kinders deur te bring sodat hulle ons kan verstaan en sodat ons die geleentheid kry om hulle te verstaan.\n\nOnthou, ’n gesin wat mekaar goed verstaan, leef in harmonie.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Selfsorgaktiwiteite\n* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Deel idees!\n\nWat kan jy doen om een-tot-een-tyd met jou tieners deur te bring?\n\nVoel jy asof jy GEEN TYD het nie en dat jy uitgeput is? Dink aan idees vir een-tot-een-tyd wat nie ekstra tyd verg nie, soos om saam na die winkel toe te stap.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Dit kan ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat julle as ouers dit wil probeer.", - "Let's think of ways to spend one-on-one time with your teen.": "Kom ons dink aan maniere om een-tot-een-tyd met jou tiener te bestee.", - "What could you do to spend one-on-one time with your teen?": "Wat kan jy doen om een-tot-een-tyd met jou tiener te deur te bring?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Voel dit asof jy GEEN TYD het nie en dat jy uitgeput is? Onthou om ook aan maniere te dink wat nie ekstra tyd in beslag neem nie.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Dit mag ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat jy as ouer dit wil probeer.", - "DAY - Try to do it every day": "DAG – Probeer om dit elke dag te doen", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Kry 5 minute (of meer!) per dag wanneer jou tiener nie iets anders het wat hulle wil doen nie.", - "PLAY - Let your teen choose": "SPEEL – Laat jou tiener kies", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Sê vir jou tiener dat jy graag tyd met hulle wil deurbring en dat hulle kan kies wat om te doen of waaroor om te gesels. Hulle mag dalk aan die begin dink dis vreemd, maar hulle sal hierdie spesiale tyd saam met jou begin geniet!", - "STAY - Focus on your teen": "BLY – Fokus op jou tiener", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Skakel die TV af en sit fone eenkant. Kyk vir jou tiener. Knik, of sê “Ek verstaan” om te wys jy gee regtig aandag. Aanvaar wat hulle sê sonder om hulle te veroordeel.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Een-tot-een-tyd kan vir jou ook lekker wees! Dit kan jou selfs minder gespanne laat voel.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Bring hierdie week, elke dag wat jy kan, 5–20 minute een-tot-een-tyd met jou tiener deur.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Onthou – wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", - "Remember that YOU matter!": "Onthou dat JY saak maak!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Mooi so, dat jy ’n positiewe gevoel herken. Ek is bly om te hoor jy voel vandag goed!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Mooi so, dat jy ’n slegte gevoel herken. Dis oukei om soms nie oukei te wees nie. Onthou, jy is nie alleen nie.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Dit is eenvoudig ongelooflik. Elkeen van hierdie gewoontes maak jou familie sterker. Wees trots daarop.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Reëls help tieners om te verstaan wat van hulle verwag word. \n\nTieners sal meer geneë wees om reëls na te kom as jy reëls SAAM met jou tiener neerlê en hulle daarvoor prys!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Goeiedag, almal. \n\nVandag se onderwerp is reëls. \n\nReëls bevorder vrede binne die huishouding en begrip tussen gesinslede.\n\nReëls bevorder verantwoordelikhede vir elke lid van die gesin; daarom is dit belangrik om gesinsreëls te hê. \n\n’n Huishouding met gesinsreëls lewe in vrede.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie… \n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie… \n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Kom ons lees wat met @global.w_rules_teen_boy en sy @global.w_rules_female_caregiver_1 gebeur het:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Jy kom altyd laat by die huis!”\n\n@global.w_rules_teen_boy: “Nee, dis nie waar nie! Ek weet nie eens wat laat beteken nie! Hou op om so met my te neul.”", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Watter spesifieke reël kan @global.w_rules_teen_boy en @global.w_rules_female_caregiver_1 saam neerlê?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Kom ons kyk hoe @global.w_rules_female_caregiver_1 en @global.w_rules_teen_boy dit die volgende dag gedoen het:\n\n@global.w_rules_female_caregiver_1: “Ek wil hê jy moet pret hê, @global.w_rules_teen_boy, maar ek is ook bekommerd omdat jy laat uitbly. Weet jy hoekom?” \n\n@global.w_rules_teen_boy: “Omdat jy wil hê dat ek genoeg tyd vir my skoolwerk moet hê?”", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Dis reg, en dit is ook nie veilig in hierdie omgewing om na sononder buite te wees nie. Wat dink jy is ’n goeie tyd vir jou om huis toe te kom?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ek kan 10nm. huis toe kom?” \n\n@global.w_rules_female_caregiver_1: “Dis ’n bietjie te laat, wat van 6nm.? Of iewers in die middel?”", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ek kan 6nm. huis toe kom op weeksaande en 10nm. op Vrydag en Saterdag?” \n\n@global.w_rules_female_caregiver_1: “Ja, uitstekend. Van nou af is ons huisreël dat jy op weeksaande 6nm. moet huis toe kom en 10nm. op Vrydag en Saterdag. Maar jy moet altyd saam met ’n vriend huis toe stap. Oukei?”", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Oukei, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Baie dankie, @global.w_rules_teen_boy, dat jy gehelp het om saam ’n goeie reël voor te stel. Ek is trots daarop om te sien hoe verantwoordelik jy raak.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Die volgende dag...\n\n@global.w_rules_female_caregiver_1: “Dankie, @global.w_rules_teen_boy, dat jy betyds huis toe gekom het. Nadat jy jou skoolwerk klaargemaak het, kan ons jou gunstelingmaaltyd vir aandete hê.”", - "Making the rule together went well because...": "Om die reël saam neer te lê, het goed verloop omdat...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Hulle die redes vir die reël bespreek het\n* @global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy se voorstelle geluister het\n* Die reël duidelik, spesifiek en regverdig was \n* @global.w_rules_female_caregiver_1 vir @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy het geweet sy @global.w_rules_female_caregiver_1 waardeer hom, want...", - "* She praised him\n* She rewarded him when he followed the rule": "* Sy het hom geprys\n* Sy het hom beloon toe hy die reël gevolg het", - "Let's think about what happened in this story.": "Kom ons dink oor wat in hierdie storie gebeur het.", - "What went well here in making a rule together?": "Wat het hier goed gegaan met die neerlê van die reël?", - "They discussed the reasons behind the rule": "Hulle het die redes vir die reël bespreek", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 het na @global.w_rules_teen_boy se voorstelle geluister", - "The rule was clear, specific and fair": "Die reël was duidelik, spesifiek en regverdig", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 het @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", - "That's right, making clear rules together in a calm and positive way works so well!": "Dis reg, om reëls saam op ’n kalm en positiewe manier neer te lê, werk baie goed!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Hoe dink jy het @global.w_rules_teen_boy geweet sy@global.w_rules_female_caregiver_1 waardeer hom?", - "She praised him": "Sy het hom geprys", - "She rewarded him when he followed the rule": "Sy het hom beloon toe hy die reël gevolg het", - "Exactly - a positive response makes all the difference!": "Presies – ’n positiewe reaksie maak ’n groot verskil!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Huisreëls help om ons kinders veilig te hou, en te verstaan wat van hulle verwag word. Wanneer jy ’n tiener betrek wanneer reëls neergelê word, is hulle meer geneë om die reëls na te kom.", - "TEAM RULES": "SPANWERK REËLS", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Beplan reëls SAAM met jou tiener. Begin eers met een nuwe reël – jy kan later nog een byvoeg. Bespreek die redes vir die reël en luister na hulle uitgangspunte.", - "REAL RULES": "REALISTIES REËLS", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Maak dit realisties vir dit wat jou tiener kan doen en wees duidelik en spesifiek sodat daar geen misverstand is nie. Nie ‘betyds’ nie, maar wel ‘teen 7nm.’.", - "PRAISE RULES!": "REËLS VIR PRYS!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Prys jou tiener vir reëls wat hulle saam met jou maak en prys hulle omdat hulle daarby hou!", - "Online Safety": "Aanlyn veiligheid", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Reëls is belangrik om jou tieners veilig te hou – ook aanlyn. Daar is meer hieroor in die weeklikse slypskool oor die beplanning van veiligheid, maar kom ons kyk nou daarna!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: “@global.w_rules_teen_girl, het jy jou huiswerk gedoen?”\n\n@global.w_rules_teen_girl: “Net ’n oomblik@global.w_rules_female_caregiver_2, ek kyk gou hierdie @global.teen_social_medium video klaar.”", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Jy is regtig ’n uitstekende danser! Vertel my waarom jy daarvan hou.”\n\n@global.w_rules_teen_girl: “Al my vriende is daarop,@global.w_rules_female_caregiver_2. Ek het meer as 600 laaiks en 120 volgers.”", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: “Ek is trots op hoe goed jy dans, @global.w_rules_teen_girl. Maar ons moet seker maak dat jy veilig is. \n\nEk weet jou vriende kyk na @global.teen_social_medium, maar met ’n oop rekening is daar ander mense wat na video’s van tieners kyk vir hul eie seksuele behoeftes. Soms kontak hulle tieners. Hulle gee voor om gaaf te wees, maar later dreig en misbruik hulle tieners.”", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: “Kom ons kyk saam aanlyn hoe ons dit vir jou prettig, maar ook veilig kan maak. Kyk – jy kan jou rekening privaat maak en beheer wie jou kan volg.\n\nSo kan jy mense wat jy van jou skool en ons gemeenskap ken, aanvaar, maar nie mense wat jou aanlyn kontak nie.\n\nKan ons saam ’n reël maak dat jy @global.teen_social_medium kan gebruik, maar met ’n private rekening? Ek vertrou jou om te weet wie om te aanvaar!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: “Ek is trots op jou, @global.w_rules_teen_girl.”", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Wat is een belangrike reël wat julle elkeen saam met julle tiener wil maak?\n* Wat dink jy sal jou tiener van daardie reël dink? \n\nOnthou, maak die reëls spesifiek en realisties!", - "Here are some of the rules other families created:": "Hier is party van die reëls wat ander gesinne gemaak het:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Tiener kan buite speel nadat huiswerk klaar gedoen is\n* Alle gesinslede eet saam aandete\n* Tiener 1 was die skottelgoed op Sondag en Maandag, Tiener 2 op Dinsdag en Woensdag\n* Ons praat ordentlik en vriendelik met mekaar\n* Wanneer jy na musiek luister, moet jy oorfone gebruik", - "Let's practice making rules.": "Kom ons oefen om reëls te maak.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Skryf een belangrike reël wat jy graag saam met jou tiener wil maak, neer – jy sal dit hierdie week as jou tuisoefening doen. \n\nWat sal hulle daarvan dink?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Lê hierdie week een reël saam met jou tiener neer. \n\nOnthou om jou tiener daarná te prys!", - "Great to hear that you are doing well. You are a wonderful parent!": "So bly om te hoor dit gaan goed met jou. Jy is ’n wonderlike ouer!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Jammer dat dit nie met jou goed gaan nie. Jy het goed gedoen om alles te probeer uitwerk. Niemand het ál die antwoorde nie, maar jy doen regtig jou bes!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Jammer om te hoor dat dit nie met jou goed gaan nie. Jy het goed gedoen om elke dag op te staan en weer te probeer, selfs al is jy moeg. Dit wys regte moed en toewyding!", - "Step 1: Share what went well and what was hard": "Stap 1: Vertel wat goed gegaan het en wat moeilik was", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ek het soveel meer van my tiener se lewe geleer terwyl ons een-tot-een-tyd deurgebring het. Maar na die eerste dag wou my tiener net op sy foon speel.”", - "Step 2: Bring ideas!": "Stap 2: Bring idees!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Jy het goed gedoen deur te probeer! Miskien kan jy ’n paar ander lekker dinge voorstel wat jy saam met jou tiener kan doen.”\n\n“Ja, of julle kan iets saam op sy foon doen? Of hy kan vir jou wys hoe sy foon werk?”", - "Step 3: Pick and try one!": "Stap 3: Kies en probeer een!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Dankie vir daardie uitstekende idees! Ja, laat ek my tiener vra om my môre na skool te wys hoe sy foon werk. Kan een van julle nou voorgee om my tiener te wees, sodat ek kan oefen hoe om te vra?”", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Dink oor hoe jou tuis-aktiwiteite hierdie week gegaan het. \n\nNeem beurte om te bespreek:\n\n* Wat het goed gegaan en wat was ’n probleem?\n* Watter oplossings kan julle saam bedink?\n* Kies een oplossing en probeer dit later met jou tiener!\n\n(Of julle kan dit selfs nou oefen sodat dit later makliker sal wees!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Om iemand te prys, is ’n baie goeie vaardigheid vir ouerskap. \n\nAs ons tieners geprys word wanneer hulle iets goed doen, sal ons sien dat hulle meer en meer positiewe dinge sal doen!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Goeiedag, almal. \n\nOns onderwerp vandag gaan daaroor om iemand te prys. \n\nDit is goed om ons kinders te prys wanneer hulle iets goed gedoen het, want dan sal hulle meer van daardie goeie gedrag wat ons wil sien, wys.\n\nEn ons moenie vergeet om onsself te prys as ons iets goed gedoen het nie!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Uitwerking daarvan om iemand te prys\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Uitwerking daarvan om iemand te prys\n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Voorstelle om tuis te oefen", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Deel met mekaar:\n\n*Wanneer laas het iemand jou bedank of gesê jy het iets goeds gedoen?\n* Hoe het dit jou laat voel?\n* Hoe voel dit as jy nie bedank of geprys word vir wat jy doen nie?\n\nAs ouers word ons gewoonlik nie genoeg bedank of geprys nie. Miskien kan jy vir jou tieners die regte voorbeeld stel en hulle eers prys wanneer hulle iets goed gedoen het!", - "Think about the last time someone thanked you, or said you did something great.": "Dink aan die laaste keer wat iemand jou bedank het of gesê het jy het iets uitsonderlik gedoen.", - "How did it make you feel?": "Hoe het dit jou laat voel?", - "Parents usually don’t get thanked or praised enough.": "Ouers word gewoonlik nie genoeg bedank of geprys nie.", - "How does it make you feel when nobody says \"thank you\"?": "Hoe laat dit jou voel as niemand “dankie” sê nie?", - "Tired": "Moeg", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Jou tiener kan ook so voel. Dis hoekom hierdie week se ouerskaphulpmiddel eenvoudig maar belangrik is. Prys hulle vir dit wat hulle reg doen.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Om iemand te prys, het baie trefkrag.\n\nKom ons kyk na die voorbeeld van @global.w_praise_female_caregiver_name en haar dogters:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Wanneer @global.w_praise_female_caregiver_name besig is, baklei haar twee dogters dikwels. Maar vandag het haar ouer dogter nogal haar suster met haar skoolwerk gehelp!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: “Dankie dat jy jou skoolwerk gedoen het en @global.w_praise_girl, dankie vir jou hulp met jou suster,@global.w_praise_teen_girl. Ek is so trots op jou!”", - "Let's discuss this story.": "Kom ons bespreek hierdie storie.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Bespreek onder mekaar:\n\n* Hoe het dit @global.w_praise_female_caregiver_name se tieners laat voel om geprys te word?\n* Hoekom het sy hulle geprys?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name het haar tieners geprys...", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Om hulle sover te kry om dit meer gereeld te doen\n* Om haar te help om haar werk klaar te kry \n* Om hulle goed te laat voel \n* Om haarself goed te laat voel", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Hoe het dit vir @global.w_praise_female_caregiver_name se tieners gevoel om geprys te word?", - "Why did she praise them?": "Hoekom het sy hulle geprys?", - "To get them to do it more often": "Om hulle sovêr te kry om dit meer gereeld te doen", - "To help her finish her work": "Om haar te help om haar werk klaar te kry", - "To make them feel good": "Om hulle goed te laat voel", - "To make herself feel good": "Om haarself goed te laat voel", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Al daardie dinge is waar! \n\nWanneer haar tieners gelukkig is, voel @global.w_praise_female_caregiver_name gelukkig. En sy het haar werk klaar gekry.", - "The same can work for you!": "Dieselfde kan vir jou werk!", - "SEE IT": "SIEN DIT", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Kyk uit vir enigiets wat jou tiener doen wat hulpvaardig of goed is, en prys hulle daarvoor. Hulle mag dit dalk nie wys nie, maar jy sal sien dat hulle daardie goeie ding weer sal doen. Dit sal hulle ook gerusstel dat jy dit raaksien en omgee.", - "SAY IT": "SÊ DIT", - "Be enthusiastic – really mean it when you say it!": "Wees entoesiasties – bedoel dit opreg wanneer jy dit sê!", - "REPEAT IT": "HERHAAL DIT", - "Try to find something to thank them for every day. Even something really small.": "Probeer elke dag iets kry waarvoor jy hulle bedank. Selfs iets baie klein.", - "You can also praise other adults in your household, too. Notice how they respond!": "Jy kan ook ander volwassenes in jou huis prys. Let op hoe hulle reageer!", - "Let's practice giving praise.": "Kom ons oefen om iemand te prys.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Deel met mekaar: \n\n* Waarvoor kan jy jou tiener prys? \n* Wat het iemand anders tydens hierdie werksessie goed gedoen? Sê vir hulle!\n* Hoe het dit jou laat voel om iemand te prys?\n* Hoe het dit jou laat voel om geprys te word?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Soms is dit moeilik om aan iets te dink waarvoor jy jou tiener kan prys! Hier is ’n paar idees van ander ouers:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Wys goedhartigheid teenoor iemand \n* Maak hulle kamers skoon \n* Eet saam met die gesin \n* Groet ander gesinslede \n* Pas ander broers of susters op \n* Kom betyds huis toe \n* Wys bedagsaamheid \n* Sê ‘asseblief’ of ‘dankie’ \n* Gaan skool toe \n* Doen werkies of skoolwerk \n* Bewaar die vrede tydens etenstye", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Hierdie week se tuisoefening is om jou tiener een keer per dag te prys. Dit sal net 10 sekondes neem!", - "Caring for yourself is so essential.": "Dis uiters belangrik om na jouself om te sien.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Wonderlik, ek is so bly dit gaan goed. Hou so aan.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Neem ’n oomblik en wees beïndruk met wat jy bereik het, ten spyte van die talle ander dinge wat jy elke dag moet doen.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Baie gesinne verkeer onder spanning weens geld, veral as tieners aanhoudend vir goed vra!\n\nWanneer ons saam ’n begroting opstel, kan ons ooreenkom oor hoe om te bestee EN te bespaar, om spanning te voorkom en ons gesin se doelwitte na te streef.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Goeiedag, almal.\n\nVandag se onderwerp is begrotings. \n\nDit is belangrik om te begroot, maar dis selfs belangriker om die hele gesin by die opstel van ’n begroting te betrek.\n\nWanneer dit saam gedoen word, help dit om die vlak van begrip oor hoe julle as gesin geld bestee en hoeveel julle vir die gesin spaar, te verhoog, en julle kan selfs planne maak oor hoe julle as gesin kan spaar.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Storie – dit het nie gewerk nie...\n* Begroting-oefening\n* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het nie gewerk nie... \n* Bespreking oor opsies vir spaar\n* Besparing-oefening\n* Hulpmiddels: Hoe om te begroot en te bespaar \nDINK – KIES – BOU – BEPLAN\n* Voorstelle om tuis te oefen", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Dit kan baie moeilik wees om elke maand met jou geld uit te kom. Baie gesinne het hierdie probleem!\n\nSluit @global.w_money_grandma in. Kom ons kyk:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: “Ek pas my kleinkinders, @global.w_money_teen_girl en @global.w_money_teen_boy, op vandat hul ouers oorlede is toe hulle jonk was. Ons sukkel dikwels met geld, aangesien ek net ’n klein toelaag kry.”", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Ek is onder soveel spanning. Ek het geen geld oor nie. En nou baklei ek met my tieners oor goed wat hulle wil hê – weer eens.”", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe. Jy benodig: \n\n– Papier (of ou koerante of ’n kartonboks) en penne\n– Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed te kry voor ons met die eerste stap begin.", - "A family budget can help @global.w_money_grandma - and YOU!": "’n Gesinsbegroting kan vir @global.w_money_grandma help – en vir JOU!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Jy benodig: \n* Papier (of ou koerante of ’n kartonboks) en penne\n* Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed bymekaar te kry voor ons met die eerste stap begin.", - "Think about what we spend money on each month.": "Dink oor waaraan ons elke maand ons geld bestee.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Kry ’n stuk papier (of ou koerante of ’n kartonboks) en ’n pen.\n* Teken prentjies van al die goed waarop jy en jou gesin elke maand geld spandeer. \n* Skryf langs elke prentjie hoeveel elke ding elke maand kos. (Dis nie nodig om die syfers te deel as jy nie wil nie.)\n* Tel op hoeveel geld jy elke maand moet bestee.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Wonderlik! Jy is klaar met Stap 1!\n\nKom ons gaan voort!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* kos \n* water en elektrisiteit\n* klere \n* rekeninge \n* TV-intekening \n* toiletware \n* haarkapper \n* lugtyd\n* skoolgeld \n* vervoer\n* versekering/polisse \n* medisyne\n* vermaak/sport \n* huur \n* lenings \n* kerk", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Praat saam oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Mense sien dinge dikwels nie op dieselfde manier nie. Wanneer ons oor ons behoeftes en begeertes praat, verstaan ons mekaar beter en kan ons saam goeie keuses maak oor hoe om ons geld te bestee.\n\nKyk na jou lys van goed waarop julle geld bestee en bespreek:\n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Dink oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Kyk na jou lys van goed waarop julle geld spandeer en kies: \n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", - "Make a budget!": "Stel ’n begroting op!", - "Make a budget as one big family!": "Stel ’n begroting op as een groot gesin!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Een persoon sal aanbied om sy/haar lys te deel. (as niemand aanbied nie, kan julle saam ’n nuwe lys opstel). \n* Neem rolle aan – party sal volwassenes wees, party sal tieners wees. \n* Besluit wat julle inkomste is vir die maand.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste @global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit saam hoeveel julle op iets wil bestee en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", - "Make a budget as a family!": "Stel as gesin ’n begroting op!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Skryf neer wat julle inkomste vir die maand is.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste@global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit hoeveel julle op iets wil spandeer en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Goeie werk, jy het die eerste 3 stappe voltooi!\n\nKom ons kyk hoe@global.w_money_grandma ’n plan met haar geld gemaak het, net soos jy nou doen:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ek wil die beste toekoms vir my kleinkinders hê, maar ek weet nie waar om die geld te kry nie. Geldskieters is gevaarlik en dis so duur om hulle terug te betaal. \n\nEk behoort te spaar, maar dit voel onmoontlik!”", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“My doel is om seker te maak dat my kleinseun hoërskool toe kan gaan en my kleindogter haar droom van universiteit kan verwesenlik. Hoe kan ek geld spaar met die min wat ek het?”", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ek weet – kom ons begin met ’n plan! Ek sal eers ’n begroting maak – ’n plan vir hoe ek my geld kan spaar. Dan sal ek net ’n bietjie geld op ’n slag spaar – ek sal selfs by ’n spaar- en leningsgroep aansluit.”", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“Ek moet met my kleinkinders praat sodat hulle goed kan kies waarop ons elke week net ’n bietjie minder sal bestee. Hulle sal my help dink aan goed wat ons graag wil hê, maar nie nodig het nie.”", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "’n Paar jaar later:\n\n“Kyk, ons het ons drome verwesenlik! Ek het nie enige geld by vriende of geldskieters geleen nie. Deur elke week net ’n klein bietjie te spaar, het ek dit reggekry om vir @global.w_money_teen_boy se hoërskool te betaal en geld vir @global.w_money_teen_girl se universiteit te spaar. Ek is so trots hierop.”", - "What are your family savings goals?": "Wat is jou gesin se spaardoelwitte?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Sulke goeie doelwitte! \n\nSo ’n goeie doelwit! Wanneer ons saam ’n goeie begroting en spaarplan opstel, kan ons dit bereik en trots wees op onsself!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Ons het almal drome vir ons gesin, net soos@global.w_money_grandma. Deur elke maand ’n bietjie geld weg te sit, kan jy ook jou drome verwesenlik!", - "What are your family savings goals?": "Wat is jou gesin se spaardoelwitte?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "So ’n goeie doelwit! \n\nWanneer jy ’n goeie begroting en spaarplan opstel, kan jy dit bereik en trots wees op jouself!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Om te spaar is om nog ’n rede belangrik: noodgevalle! @global.w_money_grandma het dit ook algaande geleer:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Een nag was daar ’n vreeslike storm wat my dak gebreek het. Alles was onder water. Ek moes skielik geld kry om die dak te laat regmaak. Ek het net verlore gevoel.”", - "Let's talk about this story.": "Kom ons praat oor hierdie storie.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Vir @global.w_money_grandma was dit ’n storm.\n\nWatter ander noodgevalle kan by ons opduik?", - "Let's think about this story.": "Kom ons dink oor hierdie storie.", - "For @global.w_money_grandma, a storm happened.": "Vir @global.w_money_grandma was dit ’n storm.", - "What other emergencies could come up for your family?": "Watter ander noodgevalle kan by jou gesin opduik?", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Noodgevalle kan in enige gesin opduik. Om vir hierdie noodgevalle te spaar VOOR hulle gebeur, voorkom mens baie skielike bekommernis en spanning!", - "Let's talk about different ways we can save.": "Kom ons praat oor die verskillende maniere waarop ons kan spaar.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Bespreek saam:\n* Op watter verskillende maniere kan ons spaar?\n* Wat is die voor- en nadele van elke spaaropsie?\n\nOm elke opsie goed te verstaan, sal jou help om te besluit wat die beste spaaropsie vir jou gesin is.\n\nWatter spaaropsie jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", - "Let's think about different ways we can save.": "Kom ons dink aan verskillende maniere hoe ons kan spaar.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Daar is verskillende maniere hoe ons kan spaar: tuis, om goed te koop wat ons later kan verkoop, by ’n bank, of in ’n spaargroep.\n\nDink aan die voor- en nadele van elke spaaropsie.", - "What is the best savings option for your family?": "Wat is die beste spaaropsie vir jou gesin?", - "Whatever savings plan you choose, it will really help your family move forward!": "Watter spaarplan jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Beplan hoe jy geld kan spaar, sodat jy noodgevalle kan hanteer en jou gesin se doelwitte kan bereik!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "As jy selfs net ’n klein bedraggie vir die toekoms of vir ’n noodgeval kan spaar, sal dit oor tyd ’n groot verskil maak. \n* Voeg ’n sirkel by en noem dit “noodgevalle”.\n* Voeg ’n sirkel by en noem dit “gesin se doelwitte”.\n* Probeer nou jou geld rondskuif sodat jy elke maand ’n bietjie vir elk hiervan kan spaar.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou groep verdien om geprys te word, of hoe?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou gesin verdien om geprys te word, of hoe?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – onthou om hierdie oefening weer saam met jou ander gesinslede te doen – as julle saam oor ’n plan ooreenkom, sal dit ’n reuseverskil maak!", - "Step 1: THINK": "Stap 1: DINK", - "What do we spend on now?": "Waarop bestee ons nou ons geld?", - "THINK Activity": "DINK-aktiwiteit", - "Step 2: CHOOSE": "Stap 2: KIES", - "Talk together about needs and wants": "Praat met mekaar oor behoeftes en begeertes", - "CHOOSE Activity": "KIES-aktiwiteit", - "Step 3: BUILD": "Stap 3: BOU", - "Make your own budget": "Stel jou eie begroting op", - "BUILD Activity": "BOU-aktiwiteit", - "Step 4: PLAN": "Stap 4: BEPLAN", - "Emergencies and family goals": "Noodgevalle en gesinsdoelwitte", - "PLAN Activity": "BEPLAN-aktiwiteit", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Stel weer ’n begroting op – hierdie keer SAAM met jou tiener en gesin!\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Stel ’n begroting saam met jou tiener en jou gesin op.\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hersien jou begroting saam met jou tiener en gesin. Dit sal almal daaraan herinner dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", - "Steps to make a budget": "Stappe om ’n begroting op te stel", - "Wonderful, I am so happy! Keep up the good work.": "Wonderlik, ek is so bly! Goeie werk, hou so aan.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Jammer dat dinge moeilik gaan. Alle gesinne sukkel. Ons is hier om te help!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Wat ook al vandag ‘verkeerd’ gegaan het, laat dit gaan en probeer môre weer. Dis oukei!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Fokus op die positiewe! \n\nOm vir ons tieners te sê wat ons WIL hê hulle moet doen, werk beter as om vir hulle te sê om OP TE HOU met iets wat hulle doen.\n\nJy sal die verskil sien.", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Goeiedag, goeiedag, almal.\n\nOns onderwerp vandag is positiewe opdragte.\n \nDit is belangrik om positiewe opdragte aan ons kinders te gee,want wanneer ons vir hulle positiewe opdragte gee, weet hulle wat ons van hulle verwag om te doen, en hulle doen dit soos ons wil hê hulle moet dit doen.\n\nSo, uiteindelik hou dit almal gelukkig.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Gedagte-eksperiment\n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Probeer dit! \n* Voorstelle om tuis te oefen", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Gedagte-eksperiment. \n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Voorstelle om tuis te oefen", - "Let’s do a thought experiment!": "Kom ons doen ’n gedagte-eksperiment!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "MOENIE AAN ’N OLIFANT DINK NIE \n\nWaaraan dink jy?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Jy HET waarskynlik aan ’n olifant gedink...\n\n‘Moenie’-opdragte laat tieners juis aan daardie ding dink. \n\nSoms verstaan hulle nie wat ons WEL van hulle verwag nie. \n\nHulle hou ook nie daarvan om aangesê te word om iets nie te doen nie (is ons nie maar almal so nie?)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "NOU, DINK AAN ’N JAGLUIPERD!\n\nWaaraan dink jy?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Dis reg! Positiewe, duidelike opdragte help tieners om te fokus op wat hulle behoort te doen. \n\nTieners sal so ook meer voel hulle word gerespekteer, en sal meer geneig wees om te luister.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Kom ons kyk wat gebeur as @global.w_instruct_female_caregiver vir @global.w_instruct_teen_girl sê “MOENIE”:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver was besig om huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriend dansbewegings geoefen het.\n \n@global.w_instruct_female_caregiver: “Moenie so mors terwyl ek die huis skoonmaak nie. Jy is in die pad!”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Maar ek moet oefen vir die skool se kompetisie. Jy laat my nooit toe om iets te doen nie.” \n\n@global.w_instruct_female_caregiver: “Moenie teëpraat nie!”", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Hoekom word daar altyd op my geskree????”\n\n @global.w_instruct_female_caregiver by haarself: “Daardie kind veroorsaak altyd moeilikheid.”", - "Let's discuss what happened in this story.": "Kom ons bespreek wat in hierdie storie gebeur het.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Bespreek onder mekaar.\n\n* Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?\n* Wat kon @global.w_instruct_female_caregiver verskillend gedoen het?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver kon...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Eers iets moois gesê het \n* Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het\n* Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?", - "Sad": "Hartseer", - "Confused": "Verward", - "Angry": "Kwaad", - "What could @global.w_instruct_female_caregiver have done differently?": "Wat kon @global.w_instruct_female_caregiver anders gedoen het?", - "Said something nice first": "Eers iets moois gesê het", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het", - "Told @global.w_instruct_teen_girl what she wants her to do": "Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Dankie dat jy saam gedink het! \n\nKom ons gaan terug in tyd en kyk wat gebeur as @global.w_instruct_female_caregiver ’n positiewe opdrag gee:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver was besig om die huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriende dansbewegings geoefen het. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, dis lekker om te sien hoe jy jou dansbewegings saam met jou vriend oefen. Gaan doen dit asseblief buite sodat ek die huis kan klaar skoonmaak. Dan kan jy vir my jou dans wys.”\n\n@global.w_instruct_teen_girl: “Okei, @global.w_instruct_female_caregiver!”", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Dankie dat jy buite geoefen het terwyl ek klaar skoongemaak het, @global.w_instruct_teen_girl. Nou het ek tyd om na jou dans te kyk.”", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: “Jinne, @global.w_instruct_teen_girl! Jy dans baie goed !”", - "Let's discuss what happened this time.": "Kom ons bespreek wat hierdie keer gebeur het.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Bespreek saam: \n\n* Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?\n* Hoekom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", - "It worked better this time because...": "Dit het hierdie keer beter gewerk, want...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar\n* @global.w_instruct_female_caregiver kon kalm bly\n* @global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Waarom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver kon kalm bly", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", - "Positive instructions can work with your teen too!": "Positiewe opdragte kan met jou tiener ook werk!", - "GET REAL": "KOM BY", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Kan jou tiener werklik doen wat jy nou gaan vra? Dit mag dalk vir hulle onmoontlik wees om die hele dag stil te sit en lees, maar die halfuur wanneer jy dit regtig nodig het, is realisties.", - "GET POSITIVE": "WEES POSITIEF", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Glimlag, kyk in hulle oë en gebruik positiewe woorde. Prys hulle sodra hulle begin doen wat jy vra!", - "GET CLEAR": "WEES DUIDELIK", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ons weet dikwels in ons koppe wat ons wil hê, maar ons sê dit nie duidelik genoeg nie. Sê presies wat jy wil hê jou tiener moet doen. Probeer ‘kom asseblief teen 7nm. huis toe’ in plaas van ‘kom betyds huis toe’.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Kom ons oefen REGTE, POSITIEWE en DUIDELIKE opdragte. Oefening sal jou help om suksesvol te wees met jou tiener!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Kies twee mense uit jou groep:\n* Een persoon gee voor om ’n tiener te wees\n* Die ander een gee voor om die tiener se ouer te wees\n* “Ouer”: Gee jou tiener ’n positiewe opdrag terwyl jy hom/haar aanmoedig en prys\n* “Tiener”: Reageer soos wat jy dink ’n tiener hierop sal reageer \n\nBespreek saam hoe dit gegaan het:\n* Hoe het dit jou as “ouer” en as “tiener” laat voel?\n* Kon jy enigiets op ’n beter manier gedoen het?\n\nGee elkeen ’n kans om die “ouer” en die “tiener” te wees, as dit moontlik is. Oefening bring sukses!", - "Examples of positive instructions:": "Voorbeelde van positiewe opdragte:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ek hou van jou musiek. Kan jy dit sagter stel tydens aandete sodat ons kan gesels? Dankie – ek waardeer dit regtig. \n* Dis baie mooi musiek. Wie is die sanger? Skakel asb die musiek af wanneer jy by die huis inkom. Jy kan dit sag in jou kamer speel as jy wil. Dankie!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Hierdie week se tuisoefeninge is om vir jou tiener positiewe opdragte te gee.\n\nOnthou – KOM BY, WEES POSITIEF, WEES DUIDELIK = KRY PRESIES WAT JY WIL HÊ (sover dit met ’n tiener moontlik is!)", - "We care about you, and how life is treating you.": "Ons gee om vir julle en hoe die lewe julle behandel.", - "You are a star. And you are making a real difference. Be proud of yourself.": "Jy is ’n ster. En jy maak ’n werklike verskil. Wees trots op jouself.", - "Sorry that things are not easy today. All parents have these days.": "Jammer dat dinge vandag nie maklik is nie. Alle ouers het sulke dae.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Maak jou oë toe, asem in, en weet dat alles wat jy gedoen het, baie belangrik is.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Elke gesin kom voor uitdagings te staan, maar wanneer ons saamwerk, kan ons probleme op ’n doeltreffende en vreedsame manier hanteer. \n\nWat ’n wonderlike vaardigheid wat jou tiener ook kan aanleer!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Goeiedag, almal.\n\nVandag se onderwerp is probleemoplossing. \n\nOns weet almal dat daar tye in die lewe is wanneer ons voor probleme te staan kom. Ons weet ook almal op ’n manier dat, wanneer ons onsself in hierdie situasies bevind, dit moeilik is om aan onmiddellike positiewe oplossings te dink.\n\nDaarom is dit belangrik dat, wanneer ons voor probleme te staan kom, ons ’n blaaskans neem, asemhaal, kalm bly en dink aan vaardighede wat ons vir probleemoplossing kan gebruik.\n\nOnthou om ons tieners in te sluit wanneer ons probleme oplos. Dit sal hulle help om verantwoordelik te raak en te leer hoe om hul eie probleme in die toekoms op te los.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en nadenke – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Kom ons kyk wat met @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 gebeur het toe @global.w_solve_teen_girl ’n foon by ’n seun gekry het...’n foon!", - "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, waar het jy daardie ding gekry?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 het dit vir my gekoop. Dis ’n lekker foon, @global.w_solve_female_caregiver_1. Dit neem wonderlike foto’s!”", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ek wil nie daardie duur ding sien nie! Daardie seun is moeilikheid! Hoe dink hy gaan jy hom hiervoor terugbetaal?! \n\n@global.w_solve_teen_girl: “Dis nie hoe dit werk nie, @global.w_solve_female_caregiver_1! Dis nie regverdig nie!”", - "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ek wil dit nie hoor nie!” \n\n@global.w_solve_teen_girl: “Jy probeer nie eens na my luister nie! Ek weet nie waarom ek enigsins met jou probeer nie!”", - "Take a few deep breaths to calm down, and": "Haal ’n paar keer diep asem om te kalmeer, en", - "KNOW IT": "WEET DIT", - "Identify the problem.": "Identifiseer die probleem.", - "SOLVE IT": "LOS DIT OP", - "Think of possible solutions and what would happen if we used them.": "Dink aan moontlike oplossings en wat sal gebeur as ons dit gebruik.", - "TRY IT": "PROBEER DIT", - "Choose a solution and try it out.": "Kies ’n oplossing en probeer dit.", - "TEST IT": "TOETS DIT", - "Did it work? Great! If it did not work, then try another solution.": "Het dit gewerk? Wonderlik! As dit nie gewerk het nie, probeer ’n ander oplossing.", - "Let’s see how problem solving works in practice.": "Kom ons kyk hoe probleemoplossing in die praktyk werk.", - "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 kom huis toe van die werk af.\n\n@global.w_solve_female_caregiver_2 (dink): “Ai, my arme voete! Ek moet vir ’n rukkie sit en ’n koppie koffie drink voor ek vir almal begin kos maak.”", - "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: “@global.w_solve_teen_boy_2! Wat doen jy? Daardie brood was vir aandete! Nou sal daar nie vir ons almal genoeg wees nie!”", - "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Jammer, @global.w_solve_female_caregiver_2, ek was net honger.Ek kan verduidelik, jy sien, daar is ’n ou by die skool... \n\n@global.w_solve_female_caregiver_2 ( dink): “Neem ’n blaaskans...haal net asem…”", - "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Gee my net ’n oomblik. Ek is moeg en nou is ek bekommerd dat ek nie genoeg kos vir aandete gaan hê nie.” \n\n@global.w_solve_teen_boy_2: “Ek is jammer, @global.w_solve_female_caregiver_2.”", - "Step 1: KNOW IT": "Stap 1: WEET DIT", - "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Vertel my nou, waarom is jy so honger? Het jy nie jou middagete by die skool geëet nie?” \n\n@global.w_solve_teen_boy_2: “Dis die probleem. Daar is ’n ou by die skool wat my boelie. Hy sê as ek nie elke dag my middagete vir hom gee nie, gaan hy en sy vriende my seermaak. Hy maak my so kwaad!”", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, maar ek is bly jy het my vertel, @global.w_solve_teen_boy_2. Dit beteken nie dat jy almal se aandete kan eet nie. Wanneer ons klaar gepraat het, moet jy winkel toe gaan en nog brood gaan koop. Maar nou eers: Wat dink jy moet ons aan die boelieprobleem doen?”\n\n@global.w_solve_teen_boy_2: “Wel… Ek wil hom net slaan of hom terugkry.”", - "Step 2: SOLVE IT": "Stap 2: LOS DIT OP", - "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: “Hmmm… wat dink jy sal gebeur as jy dit doen?”\n\n@global.w_solve_teen_boy_2: “Ek weet nie. Hy is groter as ek, so hy sal my waarskynlik meer seermaak. En ek kan by die skool in die moeilikheid kom en geskors word.”", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ja, dit kan gebeur. Wat kan ons in plaas daarvan doen?”\n\n@global.w_solve_teen_boy_2: “Ek neem aan ek kan vir die onderwyser sê. Maar dan gaan die ander kinders my ’n klikbek noem. Miskien kan jy met die onderwyser praat?”", - "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Dit klink na ’n beter idee. Ek kan met sy ouers ook praat, as jy wil.”\n\n@global.w_solve_teen_boy_2: “Dit sal gaaf wees, as jy dink dit sal ook help. Dankie, @global.w_solve_female_caregiver_2.”", - "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Enigiets vir jou, my kind. Ek sal dit net na aandete doen. En weet jy, as dit nie werk nie, kan ons altyd iets anders saam probeer.”\n\n@global.w_solve_teen_boy_2: “Dankie, @global.w_solve_female_caregiver_2.”", - "Step 3: TRY IT": "Stap 3: PROBEER DIT", - "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "’n Week later... \n\n@global.w_solve_female_caregiver_2: “Hoe gaan dinge nou by die skool?”\n\n@global.w_solve_teen_boy_2: “Dit gaan beter, die seun vat nie meer my middagete nie. Maar hy is nog steeds baie gemeen met my.”", - "Step 4: TEST IT": "Stap 4: TOETS DIT", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, @global.w_solve_teen_boy_2. Sal ek jou oom vra om met sy ouers te gaan praat? As dit nie werk nie, sal ons iets anders probeer!” \n\n@global.w_solve_teen_boy_2: “Ja, dankie@global.w_solve_female_caregiver_2. Ek weet ten minste jy is aan my kant.”", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Bespreek onder mekaar:\n\nHoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Onthou julle vir @global.w_solve_teen_girl en die foon wat sy by die seun gekry het?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Hoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Kom ons gaan terug na @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 en kyk met watter oplossings hulle vorendag gekom het.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl en haar@global.w_solve_female_caregiver_1 het met drie oplossings vorendag gekom.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Om ’n ouer van ’n tiener te wees, is regtig moeilik. \n\nDaar is dikwels geen maklike oplossings nie, maar nou het @global.w_solve_female_caregiver_1 geleer dat sy met haar dogter oor hierdie goed kan praat. \n\nVoorheen het sy haar alleen bekommer, nou kan hulle saam met oplossings vorendag kom!", - "Ground @global.w_solve_teen_girl for a month": "Hok @global.w_solve_teen_girl vir ’n maand", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Jy mag vir die volgende maand nie uitgaan nie.”", - "That didn’t work... Let's try something else.": "Dit het nie gewerk nie... Kom ons probeer iets anders.", - "Return the phone and save up": "Gee die foon terug en spaar", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Ek probeer nie jou vriend van iets beskuldig nie, en ek is ook nie jaloers nie. Ek is net bekommerd dat wanneer iemand ’n geskenk gee, dit moeilik is om ‘nee’ te sê wanneer hulle iets in ruil vra – soos seks. As jy ’n foon wil hê, sal ons saam spaar sodat jy jou eie besluite kan neem sonder om hom iets te skuld.”", - "This is great! Try the third option as well.": "Dit is wonderlik! Probeer die derde opsie ook.", - "Learn about safe sex": "Leer oor veilige seks", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Dit laat my besef dat ons oor kêrels moet praat en oor hoe om jouself te beskerm. Baie tieners van jou ouderdom raak swanger of raak MIV-positief. Kom ons gaan kliniek toe sodat jy met die verpleegster kan praat oor hoe jy veilig kan bly.”", - "This is great!": "Dis wonderlik!", - "Let's practice problem-solving!": "Kom ons oefen probleemoplossing!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Oefen saam aan ’n probleem wat julle nou het. Een van julle is die ouer en een is die tiener. \n\nPrys mekaar en moedig mekaar aan – ons is trots op jou!\n\nOnthou die stappe: \nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Leer jul tieners die vier stappe van probleemoplossing:\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n\nGebruik hierdie stappe saam wanneer ’n probleem opduik! \n\nWanneer iets sleg gebeur, raak ons dikwels ontsteld en blameer iemand. Maar wat ons tieners regtig nodig het, is iemand wat help om saam oplossings te vind. Luister na hulle, aanvaar hoe hulle dinge sien en daaroor voel, en bedank hulle dat hulle jou vertrou.\n\nAs jy jou tiener leer hoe om probleme te hanteer, sal dit hulle vir die res van hulle lewens help. ’n Baie goeie geskenk!", - "Some problems other parents solved with their teens:": "Sommige van die probleme wat ander ouers saam met hulle tieners opgelos het:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* My tiener wil nie skool toe gaan nie\n* Ek is bekommerd dat my tiener sal swanger raak, of iemand sal swanger maak \n* Ek is bekommerd oor wat my tiener aanlyn doen\n* My tiener kuier met slegte vriende\n* My tiener is lui\n* My tiener doen nie hulle huiswerk nie* My tiener gebruik moontlik dwelmmiddels", - "Being a great parent also means taking time to care for yourself every day.": "Om ’n wonderlike ouer te wees, beteken ook om elke dag tyd te maak om na jouself om te sien.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Wonderlik. En fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Dis moeilik om ’n ouer te wees. Maar dit is fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", - "Doing any of these makes you a great parent.": "Om enige van hierdie te doen, maak van jou ’n wonderlike ouer.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Tieners kan baie tyd buite die huis of aanlyn bestee waar dit vir ons moeiliker is om hulle veilig te hou. \n\nDit help regtig om saam te gesels oor veilige en onveilige plekke en hoe om probleme te voorkom!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Goeiedag, almal. \n\nOns onderwerp vandag is tienerveiligheid. \n\nDit is ons verantwoordelikheid as ouers om ons tieners te alle tye veilig te hou. Ons moet seker maak dat ons tieners veilig is in die gemeenskappe waar ons woon. Dit is ons verantwoordelikheid om hulle bewus te maak van veilige en onveilige areas in die gemeenskappe.\n\nDit is ook ons verantwoordelikheid om seker te maak dat hulle die gevare waaraan hulle moontlik blootgestel kan word wanneer hulle aanlyn is, verstaan. So sal ons tieners verantwoordelik wees en sal hulle die regte besluite kan neem om hulself ook veilig te hou.", - "Today you will explore:": "Vandag sal julle die volgende verken:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Storie en nadenke – dit het gewerk!\n* Storie en nadenke – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", - "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Kommunikasie is die belangrikste ding!\n\nKom ons kyk wat met @global.w_safe_female_caregiver en @global.w_safe_teen_girl_1 gebeur het:", - "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: “Iets het gebeur toe ek saam met my vriende @global.w_safe_teen_girl_2 en @global.w_safe_teen_girl_3 uit was!”\n\n@global.w_safe_female_caregiver: “Vertel my, @global.w_safe_teen_girl_1.”", - "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Man in motor: “Haai, mooiste. Ek kyk nou al lank na jou. Jy is baie mooi, wat is jou naam?”\n\n@global.w_safe_teen_girl_2: “Haar naam is @global.w_safe_teen_girl_1.”", - "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Man in motor: “@global.w_safe_teen_girl_1, wil jy saam met my kom vir iets om te drink en tjips? Komaan, klim in, jy sal betyds terug wees, ek belowe...”\n\n@global.w_safe_teen_girl_1: “Ek dink nie dis ’n goeie idee nie...”", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Jy is gelukkig, vriendin. Ek wens ’n man wil MY uitvra en vir my geskenke koop. Ek sê jou, as jy dit nie doen nie, gaan ek vir almal vertel hoe dom jy is!”", - "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, moenie gaan nie! Wees versigtig! Kom ons gaan huis toe. Dit is gevaarlik om saam met mense wat jy nie ken nie, te gaan. Buitendien, hy is te oud vir jou en wat hy doen, is verkeerd.”\n\n@global.w_safe_teen_girl_1: “Ek weet nou nie mooi nie…”", - "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Pfff, Ek is so trots op jou dat jy nie in die motor geklim het nie. Dit was ’n gevaarlike situasie, dankie dat jy my vertel het!”", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "Kom ons gesels oor wat met @global.w_safe_teen_girl_1 gebeur het", - "Discuss together: \n\nWhat was risky about that situation?": "Bespreek onder mekaar:\n\nWat was riskant aan daardie situasie?", - "The situation was risky because...": "Dit was ’n riskante situasie omdat...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke\n* @global.w_safe_teen_girl_1 se vriendin het haar aangemoedig\n* Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen\n* Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans\n* Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "Kom ons dink oor wat met @global.w_safe_teen_girl_1 gebeur het:", - "What was risky about that situation?": "Wat was riskant aan daardie situasie?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke", - "@global.w_safe_teen_girl_1's friend was encouraging her": "@global.w_safe_teen_girl_1 se vriendin het haar aangemoedig", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen", - "Many girls in our communities get pregnant or catch HIV from older men": "Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", - "All those things are true!": "Al daardie dinge is waar!", - "Let's look at another example of a dangerous situation together.": "Kom ons kyk saam na nog ’n voorbeeld van ’n gevaarlike situasie.", - "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “My vriendin praat aanlyn met ’n ou van ons ouderdom... Sy gaan vir hom foto’s van haarself stuur. Is dit beter omdat hy ons ouderdom is?”", - "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Jy is ’n goeie vriendin om oor haar bekommerd te wees. Om wulpse foto’s te stuur, is ook ’n werklike risiko.”", - "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Soms is mense nie wie hulle aanlyn sê hulle is nie – hy kan sê hy is jou ouderdom, maar kan ’n 50-jarige man wees. Of wanneer hulle verhouding uit is, kan hy daardie foto’s vir almal stuur en jou vriendin sal aaklig voel.”", - "Let's talk about our teens' online safety.": "Kom ons praat oor ons tieners se veiligheid aanlyn.", - "What are some of the online risks for teens these days?": "Wat is deesdae party van die aanlyn risiko’s vir tieners?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen\n* Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat\n* Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg\n* Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel\n*Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", - "Let's think about our teens' online safety.": "Kom ons dink oor ons tieners se veiligheid aanlyn.", - "What is the biggest online risk for teens these days?": "Wat is deesdae die grootste aanlyn risiko vir tieners?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!\n\nKom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nKom ons maak hierdie kaarte nou as ’n groep.\n\nJy sal hierdie week dieselfde tuisoefening saam met jou tiener doen.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Bespreek onder mekaar:\n\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Soms kan ons in die moeilikheid beland. Bespreek onder mekaar:\n \n* Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat jou tieners gebruik.\n* Prys mekaar vir hoe goed julle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", - "Safety Plan": "Veiligheidsplan", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Elke keer wanneer jy ’n veiligheidsplan maak of daarby hou, klik op die @global.parent_point en vier jou sukses!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Kom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nJy gaan hierdie week dieselfde saam met jou tiener as tuisoefening doen – as jou tiener nou hier is, kan julle dit nou saam doen!", - "My family can join in now!": "My gesin kan nou by ons aansluit!", - "Let me try it out by myself": "Kom ek probeer dit op my eie", - "Step 1: What are important places in your community?": "Stap 1: Wat is die belangrike plekke in jou gemeenskap?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Kry ’n stuk papier (of ou koerant of ’n kartonboks) en ’n pen.\n* Teken ’n kaart van jou tiener se gemeenskap, met prente van al die vernaamste plekke soos strate, julle huis, skool, winkels, plekke wat jou tiener besoek.", - "Step 2: Which places are safe and unsafe?": "Stap 2: Watter plekke is veilig en onveilig?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Bespreek onder mekaar:\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veilig te hou?", - "Step 3: Where can you get support?": "Stap 3: Waar kan jy ondersteuning kry?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar: \n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.\n\nHier onder is ’n paar plekke wat van hulp kan wees", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar:\n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", - "Step 4: What are risky places online and how can you make them safer?": "Stap 4: Wat is riskante plekke aanlyn en hoe kan jy hulle veiliger maak?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Prys julle tieners vir hoe goed hulle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Gee erkenning vir hoe goed hulle is met gebruik van die web! \n* Dink oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", - "MAPS": "KAARTE", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Maak saam met jou tiener KAARTE van veilige en onveilige areas in julle gemeenskap en aanlyn. Praat oor hoe om hulle inligting, foto’s en video’s aanlyn privaat te hou. Praat oor hoe iets wat aanlyn geplaas word, vir altyd daar bly. Hulle kan dalk van voorbeelde in hul vriendekring weet.", - "RULES": "REËLS", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Lê saam met jou tiener reëls neer oor die veilige gebruik van die toeps en webwerwe waarvan hulle hou.\n\nOnthou julle die storie oor veiligheid aanlyn? Kyk hier weer daarna.", - "Online Safety Story": "Storie oor veiligheid aanlyn", - "AMNESTY": "AMNESTIE", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Gaan ’n AMNESTIE-ooreenkoms aan. Indien iets gebeur wat hulle ontstel, ongemaklik laat voel of bang maak, kan hulle met jou praat en jy sal nie kwaad word of hulle straf nie, selfs al het hulle iets verkeerd gedoen.\n\nOnthou julle die storie oor veiligheid-amnestie? Kyk hier weer daarna.", - "Safety Amnesty Story": "Storie oor veiligheid-amnestie", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Digitale ouerskap is net soos ouerskap in die regte wêreld. Jy het ’n GROOT STAP gedoen om jou tiener in die gemeenskap EN aanlyn veilig te hou. Mooi so!", - "Resources to help in the community": "Hulpbronne om in die gemeenskap te help", - "Online Safety Resources": "Hulpbronne vir aanlyn veiligheid", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "As jy dit nog nie gedoen het nie, maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", - "Safety Plan Activity": "Veiligheidsplan-aktiwiteit", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Wonderlik! Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Ons is jammer dis ’n moeilike dag. Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer.\n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie en beplan jou toekomstige ouerondersteuning.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer. \n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie, en beplan jou toekomstige @global.parent_app-steun.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Goeiedag, almal.\n\nDie onderwerp vir vandag is viering en volgende stappe.\n\nDit was ongelooflik. Dit was wonderlik om julle op hierdie reis te hê. Vandag vier ons ons reis saam.\n\nVandag vier ons alles wat ons deur die hele ervaring geleer het.", - "Today you will celebrate, look back and look ahead:": "Vandag gaan jy vier, terugkyk en vorentoe kyk:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Nadenke en bespreking\n* Hulpmiddels: Hoe om mekaar te ondersteun\nKOM BYMEKAAR – SKAKEL – STUUR ’N TEKS – DEEL\n* Beplanning van ondersteuning", - "Today you celebrate and reflect on your experiences.": "Vandag vier jy, en dink na oor jou ervarings.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Jy en jou gesin het so baie geleer. Kom ons dink terug en kyk wat verander het.", - "Reflect": "Dink na", - "Listen and reflect": "Luister en dink na", - "Read and reflect": "Lees en dink na", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Sluit oë en ontspan.\n\nDink aan jou gesinslewe voordat jy jou reis met hierdie toep begin het.\n\nDink terug aan vaardighede wat jy aangeleer het:\n* Selfsorg\n* Een-tot-een-tyd\n* Lof\n* Positiewe instruksies\n* Hantering van spanning\n* Gesinsbegroting\n* Reëls\n* Kalm gevolge\n* Probleemoplossing\n* Tienerveiligheid\n* Hantering van krisisse\n\nDink na oor die reis – hoe was dit vir jou om:\n* Idees en ondervindings te deel\n* Na te dink oor die stories, en daaruit te leer\n* Vaardighede saam met jou tiener te oefen\n\nHet enigiets vir jou en jou gesin verander?\n\nWat het jy nodig om die vaardighede aan te hou gebruik?", - "Let's talk about what has changed.": "Kom ons gesels oor wat verander het.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Bespreek onder mekaar:\n* Wat het in jou gesin verander?\n* Wat het jy gedoen waarop jy trots is?\n\nOnthou om mekaar te prys en aan te moedig!", - "MEET": "KOM BYMEKAAR", - "Keep meeting regularly to give each other parenting support.": "Kom gereeld bymekaar om aan mekaar ouerondersteuning te gee.", - "CALL": "SKAKEL", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Wees ‘ouerskapsvriende’ wat mekaar kan skakel wanneer julle ontsteld is en nie weet wat om te doen nie.", - "TEXT": "STUUR TEKSBOODSKAPPE", - "Text each other every week to share what you’ve done well.": "Stuur elke week vir mekaar teksboodskappe om dit wat julle goed gedoen het, te deel.", - "SHARE": "DEEL", - "Share @global.parent_app and help other families start their journey.": "Deel @global.parent_app en help ander gesinne om hul reis te begin.", - "End of programme check-in": "Programeinde check-in", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Jy het @global.parent_app vir die afgelope maande gebruik, maar ouerskap van ’n tiener is ’n langdurige proses! Die volgende vrae oor jou ouerskap-ervarings sal ons help om jou ouerskap te assesseer.\n\nWees eerlik. Onthou dat miljoene ouers soos jy voel, en ons almal verdien ondersteuning. Jy is nie alleen nie!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Dit kom voor dat jy reeds die programeinde check-in voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Beplan hoe julle mekaar vorentoe sal ondersteun. \n\nJy kan ander gesinne se idees gebruik, of jou eie idees uitdink!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Ons is so trots op julle. Julle het wilskrag, moed en liefde vir jul gesinne gewys. Ouers is ongelooflik. Julle is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier julself!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Ons is so trots op jou. Jy het wilskrag, moed en liefde vir jou gesin gewys. Ouers is ongelooflik. Jy is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier jouself!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Welkom! Dis wonderlik om julle hier te hê. Hierdie week gaan oor JOU.\n\nIn hierdie verwelkomingsslypskool sal jy:\n* Hulpmiddels kry om na jouself om te sien\n* Die toep pasmaak vir jou behoeftes", - "Wonderful, I am so happy things are going well.": "Wonderlik, ek is so bly dit gaan goed.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Jammer dat dinge nou moeilik is. Dit is heeltemal normaal om soms te sukkel. Onthou, jy is nie alleen nie!", - "Why @data.workshop.w_self_care.short_title?": "Hoekom @data.workshop.w_self_care.short_title?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Ons sorg dikwels nie genoeg vir onsself nie. Maar dit is so belangrik, veral as ’n ouer! \n\nOm ons spanning te verminder en goed na onsself om te sien, help ons EN ons tieners.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Goeiedag, almal. \n\nVandag se onderwerp is selfsorg. \n\nDaar kom tye wanneer ons uitdagings ervaar, waar ons voor probleme te staan kom en nie weet wat om te doen nie. Dit is belangrik dat ons na onsself omsien om die tegnieke te leer om onsself kalm te hou ingeval probleme, uitdagings of geskilpunte opduik. \n\nWanneer ons kalm is, kan ons positief dink en positiewe oplossings vind vir enige uitdagings waarvoor ons te staan kom.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Vandag sal jy 3 aktiwiteite ervaar wat jou kan help om na jouself om te sien en ons sal jou ’n paar\nvrae vra om seker te maak dat die toep presies reg is vir jou.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Ontspanning-aktiwiteit\n* Erkenning-aktiwiteit\n* Beloning-aktiwiteit\n* Hulpmiddels: Hoe om selfsorg by te voeg\n* Pas die app by jou aan\n* Voorstelle om tuis te oefen", - "Let's try it out and do a short relaxation activity together!": "Kom ons probeer dit en doen saam ’n kort ontspanning-aktiwiteit!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "As ouers het ons dikwels nie tyd om na onsself om te sien nie – maar dit is so belangrik! Om ons spanning te verminder help ons EN ons tieners.\n\nKom ons doen ’n eerste stap en doen saam ’n kort ontspanning-aktiwiteit.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Om aandag te gee aan wat ons doen, help ons om op die positiewe te fokus.\n\nKom ons neem ’n oomblik om onsself te prys. Ons sal jou wys hoe.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Dink aan een ding wat JY onlangs goed gedoen het.\n\nSê dit hardop vir mekaar: “Mooi so aan my vir....”\n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", - "Recognise": "Erken", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Neem ’n oomblik om jouself te prys.\n\nOns sal jou wys hoe.", - "Think of one thing YOU have done well recently.": "Dink aan een ding wat JY onlangs goed gedoen het.", - "\"Well done to me for...\"": "“Mooi so aan my vir....”", - "Showing love to my children": "Liefde aan my kinders wys", - "Getting up even though I felt tired": "Opgestaan het, al het ek moeg gevoel", - "Smiling at someone": "’n Glimlag vir iemand", - "Making food to stay strong": "Kosmaak om sterk te bly", - "Spending time with my children": "Tyd wat ek saam met my kinders deurbring", - "Helping my children with schoolwork": "Hulp aan my kinders met hulle skoolwerk", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Sê dit hardop as jy kan. \n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", - "Well done! Try to do this every day.": "Mooi so! Probeer dit elke dag doen.", - "Things to praise yourself for:": "Dinge waarvoor jy jouself kan prys:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Liefde wat jy aan jou kinders wys \n* Opstaan, al het jy moeg gevoel \n* ’n Glimlag vir iemand \n* Kosmaak om sterk te bly \n* Tyd wat jy saam met jou kinders deurbring \n* Hulp aan jou kinders met hulle skoolwerk", - "Have a hot drink": "Drink iets warm", - "Call a friend or relative": "Skakel ’n vriend of ’n familielid", - "Have a relaxing bath": "Ontspan in die bad", - "Read": "Lees", - "Watch TV": "Kyk TV", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Om na onsself om te sien, is ’n belangrike ouerskapvaardigheid. Deel met mekaar:\n\nWatter klein dingetjies maak jou gelukkig?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Probeer elke dag iets doen om jouself te beloon.\n\nJy kan hierdie vaardighede tuis gebruik en hulle enige tyd in jou@global.parent_centre vind!", - "Reward": "Beloning", - "We all deserve to treat ourselves well!": "Ons verdien almal om onsself goed te behandel!", - "What small thing makes you happy?": "Watter klein dingetjies maak jou gelukkig?", - "Nice! Taking care of yourself is an important parenting skill!": "Mooi! Om na jouself om te sien, is ’n belangrike ouerskapvaardigheid!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_1 wees of enigiets anders wat jy geniet.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_2 wees of enigiets anders wat jy geniet.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_3 wees of enigiets anders wat jy geniet.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_4 wees of enigiets anders wat jy geniet.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_5 wees of enigiets anders wat jy geniet.", - "Things you can do to reward yourself:": "Dinge wat jy kan doen om jouself te beloon:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Drink iets warm \n* Skakel ’n vriend of ’n familielid \n* Ontspan in die bad \n* Lees \n* Kyk TV", - "RELAX": "ONTSPAN", - "Do a 30 second quick relaxation activity.": "Doen ’n vinnige ontspanning-aktiwiteit vir 30 sekondes.", - "RECOGNISE": "ERKEN", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Neem ’n oomblik en dink aan een ding wat JY onlangs goed gedoen het! Sê dit hardop as jy kan: “Mooi so, vir ....”", - "REWARD": "BELONING", - "Remember you deserve your quality time too! What makes you happy?": "Onthou, jy verdien ook jou gehaltetyd! Wat maak jou gelukkig?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Noudat ons ’n paar selfsorgvaardighede gebou het, kom ons maak seker dat jou @global.weekly_workshops presies reg is vir jou.", - "You seem to have completed the customisation process already. You can now skip this activity.": "Dit kom voor dat jy reeds die pasmaakproses voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", - "Relax activity": "Ontspanning-aktiwiteit", - "Recognise activity": "Erkenning-aktiwiteit", - "Reward activity": "Beloning-aktiwiteit", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Elke keer as jy ontspan, iets erken wat jy goed gedoen het of jouself beloon, tik op die@global.parent_points om jou sukses te vier!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Jy het hierdie week se slypskool voltooi.\n\nOns sal weer party van die selfsorg-aktiwiteite doen wanneer jy vir die eerste keer met jou groep bymekaar kom – julle verdien almal ’n bietjie ekstra selfsorg!", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Hallo, @field.user_name! Baie geluk met die begin van@global.parent_app Week 5.\n\n’n Nuwe ouerskapwerksessie wag op jou met wenke oor hoe om kalm en in beheer te kan bly wanneer ons tieners ons mal maak.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Hallo, @field.group_name! Baie geluk met die begin van@global.parent_app Week 5.\n\n’n Nuwe ouerskapwerksessie wag op julle met wenke oor hoe om kalm en in beheer te kan bly wanneer ons tieners ons mal maak.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Ons het ’n nuwe werksessie vir jou beskikbaar oor die hantering van woede en stres. Dit sal jou help om beter na jouself om te sien.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Gelukkig, hartseer, kwaad, opgewonde, bekommerd? Welgedaan dat jy erken hoe jy en ander mense vandag gevoel het! En onthou, môre is ’n splinternuwe dag.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Ons voel almal soms oorweldig. Dit help om diep asem te haal!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar nuttige hulpmiddels te kry om stres te hanteer.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Hoe was jou stresvlakke hierdie week? Probeer ’n paar keer diep asemhaal voordat jy op jou tiener reageer – dit maak ’n groot verskil.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Welgedaan dat jy diep asemhaal voordat jy op jou tiener reageer! Elke keer as jy ’n blaaskans neem, kry jy jou beheer terug.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Môre is ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nDeur eers die @local.workshop_data.in_text_title te voltooi, lê jy ’n baie belangrike grondslag: as jy goed voel, sal jou gesin ook beter doen!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Geluk met die voltooiing van die @local.workshop_data.in_text_title. Môre sal jy toegang tot ’n nuwe slypskool kry om jou te help ontspan en nuttige vaardighede te bou!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Hallo, @field.user_name! Ons vier vandag twee maande dat jy @global.parent_app gebruik!\n\nJy doen goed! Hierdie week se werksessie sal jou help om te weet wat jy moet doen as jou tiener nie die huisreëls volg nie.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Hallo, @field.group_name! Ons vier vandag twee maande dat julle @global.parent_app gebruik!\n\nJulle doen goed! Hierdie week se werksessie sal julle help om te weet wat julle moet doen as jou tiener nie die huisreëls volg nie.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Welgedaan met jou gebruik van @global.parent_app. Jy het al 6 ouerskaphulpmiddels gekry!\n\nDoen die volgende werksessie om nog ’n ouerskaphulpmiddel te kry!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Voltooi die werksessie en probeer om saam met jou tiener een positiewe en een negatiewe gevolg van ’n sekere optrede te vind.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Kon jy een positiewe en een negatiewe gevolg van ’n sekere optrede saam met jou tiener uitdink?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Kalm gevolge help jou tiener regtig om die reëls goed te volg – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy soveel toewyding aan jou gesin bewys.", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Hallo, @field.user_name! Baie geluk met die begin van jou derde @global.parent_app-week.\n\n’n Nuwe werksessie wag op jou! Kan jy die onderwerp van die werksessie op grond van hierdie foto raai?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Hallo, @field.group_name! Baie geluk met die begin van jul derde @global.parent_app-week.\n\n’n Nuwe werksessie wag op julle! Kan julle die onderwerp van die werksessie op grond van hierdie foto raai?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Welgedaan met die gebruik van @global.parent_app! Onthou dat dit die klein dingetjies is wat ’n groot verskil maak.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Dankie dat jy @global.parent_app gebruik om in jouself en jou gesin te belê.\n\nProbeer die @local.workshop_data.in_text_title en ontwikkel ’n uitstekende ouerskapvaardigheid!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Lof maak ’n groot verskil.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe JY lof in jou gesin kan gebruik.", - "Praise time!": "Tyd om te prys!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Wanneer jy jou tiener weer sien, prys hulle vir een ding wat hulle goed doen!\n\nEn wanneer laas het jy jouself of ’n ander volwassene in jou huishouding geprys? Probeer dit!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title.voltooi het. Môre word ’n nuwe slypskool ontsluit. Probeer dit – jy sal die verskil in jou tiener se gedrag sien.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Hallo, @field.user_name! Baie geluk met die begin van @global.parent_app Week 4.\n\nHierdie week se werksessie handel oor hoe jy jou kanse kan verhoog om jou tiener te laat doen wat jy hulle vra.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Hallo, @field.group_name! Baie geluk met die begin van @global.parent_app Week 4.\n\nHierdie week se werksessie handel oor hoe julle jul kanse kan verhoog om jul tieners te laat doen wat van hulle gevra word.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Praat vriendelik met jouself oor die goeie werk wat jy doen. Daar bestaan nie iets soos ’n perfekte ouer nie, en ons dink jy doen goed!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Jy't nog nie enige @data.habit.instruct_positively.title @global.parent_points gemerk nie. Probeer dit vandag nog!", - "Well done!": "Mooi so!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Jy het die @global.parent_point @data.habit.instruct_positively.title reeds een keer gemerk – jy maak dus goeie vordering.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "Jy't alreeds die @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively aantal kere gemerk - jy maak dus uitstekende vordering.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Luister jou tiener altyd na jou? Indien nie (soos die res van ons), kyk na die werksessie van hierdie week om uit te vind hoe positiewe opdragte kan help – baie.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Positiewe opdragte help om al hoe meer goeie gedrag te sien!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar idees te kry oor hoe dit in jou gesin kan werk.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Soos gewoonlik kry jy môre toegang tot ’n nuwe slypskool. Dit sal help as jy die vorige slypskool voor die tyd voltooi.\n\nSommige ouers gebruik die toep terwyl hulle werk toe ry. Waarom gebruik jy die toep nie as jy ’n paar minute het nie?\n\nWeereens baie dankie vir jou gebruik van @global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Veels geluk met jou voltooiing van @local.workshop_data.in_text_title.\n\nMôre staan ’n nuwe slypskool vir jou gereed: jy sal ’n groot verskil sien deur klein veranderinge aan te bring!", - "First @global.weekly_workshop!": "Eerste @global.weekly_workshop!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Hallo, @fields.user_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Hallo, @fields.group_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Om tyd met jou tiener deur te bring, help om vertroue tussen julle op te bou.\n\nGaan nou voort met jou@global.parent_app-reis – jy en jou gesin sal goeie resultate sien.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Dankie dat jy soveel moeite doen om ’n beter ouer te wees. Jy is geliefd en gewaardeer!", - "Have you spent time with your teen already?": "Het jy al tyd saam met jou tiener deurgebring?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nJou @local.workshop_data.in_text_title is gereed vir jou!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dit sal nie lank neem nie, en jy sal waardevolle inligting kry. \n\nWelgedaan dat jy ’n beter ouer probeer wees. Môre kan jy toegang tot ’n nuwe slypskool kry.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot ’n nuwe werksessie kry om jou te help ontspan en nuwe vaardighede om te geniet en aan te leer!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Hallo, @field.user_name! ’n Krisis kan met almal gebeur – om voorbereid te wees help baie.\n\nHierdie werksessie sal jou wys hoe.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Hallo, @field.group_name! ’n Krisis kan met almal gebeur – om voorbereid te wees help baie.\n\nHierdie werksessie sal julle wys hoe.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Jy is ’n toegewyde ouer. Wees trots op jouself – dit is ’n groot prestasie op sigself!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ons weet nooit wanneer ’n krisis kan plaasvind nie, maar ons KAN voorbereid wees!\n\nBegin die volgende werksessie om te ontdek hoe jy dit saam met jou tiener kan doen.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Dis so goed dat jy saam met ons op hierdie ouerskapreis is!\n\nVoltooi die @local.workshop_data.in_text_title en leer wat die beste manier is om te reageer wanneer jou tiener jou die nodigste het.", - "Have you discussed with your teen what you would do in a crisis situation?": "Het jy met jou tiener bespreek wat jy in ’n krisissituasie sou doen?", - "Crisis Examples": "Voorbeelde van krisisse", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Môre sal die laaste @global.parent_app-slypskool vir jou gereed wees.\n\nProbeer om @local.workshop_data.in_text_title te voltooi voordat jy met die nuwe slypskool begin. Op hierdie manier kan jy jou ouerskapvaardighede voltooi en besluit wat jy volgende moet doen!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot die laaste slypskool kry om na te dink oor jou @global.parent_app-reis en wat jy volgende kan doen!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Hallo,@field.user_name! Jy is amper aan die einde van jou @global.parent_app-werksessies! Dankie vir jou volgehoue toewyding.\n\nHierdie week se werksessie handel oor die beskerming van ons tieners, aanlyn sowel as in die gemeenskap. Geniet dit!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Hallo, @field.group_name! Julle almal is amper aan die einde van jul @global.parent_app-werksessies! Dankie vir julle volgehoue toewyding.\n\nHierdie week se werksessie handel oor die beskerming van ons tieners, aanlyn sowel as in die gemeenskap. Geniet dit!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Hierdie is van die moeilikste tye om ’n ouer te wees. Jy moet so trots op jouself wees oor alles wat jy gedoen het.\n\nDink aan elke keer dat jy jou tiener laat glimlag het en al die sorg wat jy hulle gegee het. Ouers is ongelooflik, en jy is ongelooflik!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Jy het die afgelope paar weke reeds soveel ouerskapvaardighede aangeleer!\n\nVoltooi die volgende slypskool om nog ’n nuttige vaardigheid aan te leer.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Om jou tiener veilig te hou, dra dit by om saam te gesels oor julle gemeenskap en hul aanlyn ervarings.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe julle dit kan doen!", - "Have you talked with your teen about safety measures?": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Om ’n plan saam met jou tiener te maak, kan baie probleme voorkom – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy@global.parent_app gebruik om jou gesin te ondersteun.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Baie geluk met jou voltooiing van @local.workshop_data.in_text_title.. Môre is ’n nuwe werksessie gereed om jou en jou gesin te help om enige situasie die hoof te bied – saam kan julle soveel doen!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Hallo, @field.user_name! Jy maak goeie vordering op jou ouerskapreis!\n\nOm ’n tiener te hê, beteken dat jy talle onverwagte probleme moet hanteer. Hierdie werksessie sal jou wys hoe jy dit moet hanteer.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Hallo, @field.group_name! Julle maak goeie vordering op julle ouerskapreis!\n\nOm ’n tiener te hê, beteken dat julle talle onverwagte probleme moet hanteer. Hierdie werksessie sal julle wys hoe julle dit moet hanteer.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Julle toegewydheid is ’n inspirasie vir almal. Bly kalm en gaan voort!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Met tieners, en die lewe, duik onverwagte probleme op en ons moet dit hanteer.\n\nBegin met die volgende werksessie om te leer hoe jy hierdie probleme suksesvol kan hanteer.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Jy is op die regte pad om probleme saam met jou tiener op te los!\n\nVoltooi die @local.workshop_data.in_text_title en kry nog ’n belangrike ouerskapvaardigheid!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Het jy al die vier stappe van probleemoplossing met jou tiener probeer?\n\nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. As julle weet hoe om probleme saam op te los, sal baie situasies makliker wees!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title voltooi het. Môre word ’n nuwe slypskool ontsluit om jou te help om jou tiener veilig te hou.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Hallo, @field.user_name! Nuwe week, nuwe werksessie! Leer hoe jy huisreëls kan opstel op ’n manier wat die kanse sal vergroot dat jou tiener daarby sal bly.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Hallo, @field.group_name! Nuwe week, nuwe werksessie! Leer hoe julle huisreëls kan opstel op ’n manier wat die kanse sal vergroot dat jul tieners daarby sal bly.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Soms voel dit asof jou tieners nog steeds knorrig is, selfs al het jy jou bes gedoen. Onthou dat jy uitstekende werk doen en dat daar ook goeie tye saam met hulle sal wees!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Weereens baie dankie dat jy @global.parent_app gebruik en dat jy toegewyd is aan jou ouerskapreis.\n\nDie @local.workshop_data.in_text_title sal jou wys hoe om reëls op te stel op ’n manier wat jou tiener sal help om dit beter te verstaan en te volg.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Jy is op die punt om nog ’n ouerskaphulpmiddel te verkry! Voltooi die @local.workshop_data.in_text_title, stel EEN eenvoudige en realistiese reël saam met jou tiener op, en kyk hoe dinge verander!", - "Have you managed to set a rule together with your teen?": "Kon jy saam met jou tiener ’n reël opstel?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. Dit sal nie lank neem nie en dit sal jou tiener help om die reëls beter te volg!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Baie geluk met jou voltooiing van die @local.workshop_data.in_text_title.\n\nMôre sal ’n nuwe slypskool jou help om te weet wat jy moet doen as tieners slegte (of goeie) gedrag toon!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Hallo, @field.user_name! Jy begin jou tweede maand met @global.parent_app. Ongelooflik!\n\nByna elke gesin sukkel met geldkwessies, daarom bied die slypskool van hierdie week vir jou ’n hulpmiddel wat jou kan help om jou uitgawes te beplan, sodat jy genoeg geld kan hê om deur die maand te kom.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Hallo, @field.group_name! Julle begin jul tweede maand met @global.parent_app. Ongelooflik!\n\nByna elke gesin sukkel met geldkwessies, daarom bied die slypskool van hierdie week vir julle ’n hulpmiddel wat julle kan help om jul uitgawes te beplan, sodat julle genoeg geld kan hê om deur die maand te kom.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Voel jy gestres oor geld? Hou jou tiener aan vra vir dinge wat jy nie kan bekostig nie?\n\nHierdie week se werksessie handel oor geld en begroting.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Wanneer jy alleen of oorweldig voel, weet dat jy nie alleen is nie. Daar is ouers regoor die wêreld wat dieselfde uitdagings as jy ondervind.\n\nJy doen elke dag jou bes en ons is almal trots op jou!", - "Have you talked with your teen about your family budget yet?": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Deur jou gesin te betrek by die manier waarop jy jou geld spandeer, kan baie spanning en stryery weggeneem word.\n\nVoltooi die @local.workshop_data.in_text_title om jou gesin met begroting en besparing te help. Dit is eintlik maklik – jy sal sien!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Baie ouers het gesê dat om ’n begroting te maak, vrede in hul huis teruggebring het – dit kan ook vir julle werk.\n\nWeereens baie dankie dat jy so ’n toegewyde ouer is.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Welgedaan met jou voltooiing van @local.workshop_data.in_text_title. Môre word ’n nuwe slypskool ontsluit om jou te help om gesinsreëls wat werk, op te stel.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Onthou – hierdie week gaan oor JOU! Ons hoop dat jy jouself goed behandel. Jy verdien dit!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Begin môre met ’n splinternuwe @global.parent_app-slypskool. Jy sal die goeie resultate sien!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Het jy jou @global.parent_app-maats al van die toep vertel? Vanaf môre kan julle jul @global.parent_app-slypskool saam begin doen!", - "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Om 'n vriend of geliefde te verloor is vir almal moeilik. Om goed te wees vir jouself en om dinge te doen wat jou help om hierdie moeilike tyd die hoof te bied help jou tiener ook!", - "Find a support group": "Vind 'n ondersteuningsgroep", - "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "-Hartseer kan ons vir weke, maande of jare lank affekteer. Jy hoef nie vinnig beter te voel nie.\n-Slaap en eet genoeg - dit is moeilik om na tieners om te sien as jy moeg en honger is.\n-Maak 'n lys van dinge wat jou beter laat voel, en doen hulle.\n-Probeer om een eenvoudige ding elke dag te doen om saam met jou tiener te ontspan, asook vir jouself.\n-Dis oukei om nie goed te voel nie en dis oukei om te huil. Moet jouself nooit blameer nie, hierdie is nie jou skuld nie.\n-Daar is altyd hoop selfs na verlies. Probeer eenvoudige dinge geniet, en vind 'n minuut of wat om iets prettig of ontspannend met jou tiener te doen.\n-Vind een of twee volwassenes wat jou kan ondersteun, na jou luister en met jou gesels.", - "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "-Om met iemand wat jou ondersteun te kan praat en na jou te luister kan help.\n-Dit kan ook help om aan te sluit by 'n groep mense wat self iemand verloor het.\n-Niemand is perfek nie. Dis oukei om oor goeie en slegte herinneringe te praat.", - "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Tieners hanteer verlies op verskillende maniere, net soos volwassenes. Jy kan hulle help om die situasie en hul gevoelens te verstaan deur veilige ruimtes te skep waar julle albei dit kan deel en verwerk.", - "Be honest": "Wees eerlik", - "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "-Vertel jou tiener dat die persoon oorlede is - soms besef hulle dit nie.\n-Vertelling is 'n proses, nie 'n gebeurtenis nie. Jy mag vind dat dit nodig is om hulle oor en oor te vertel.\n-Gebruik woorde wat hulle verstaan.\n-As jonger tieners nie begryp wat dood is nie, help deur te verduidelik dat die geliefde persoon nie gaan terugkom nie. Probeer om 'slaap' of 'n 'lang reis' as beskrywing daarvan te vermy.\n-Ouer tieners mag wel 'n beter begrip van dood toon, maar hulle mag sukkel om hulle emosies te deel of te verwerk.\n-Tieners kan op verskeie maniere reageer: huil, skree, ongeloof uitspreek of in stilte onttrek. Al hierdie reaksies is oukei. Vertel hulle dat jy dáár is met hulle.\n-Laat vrae en openlike gesprekke toe. Wees eerlik. Dis oukei om te erken ons weet nie.", - "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "-Tieners mag hartseer, woede, onbegrip of ongeloof toon, 'n verlammende gevoel ervaar, sleg voel of pyn, nagmerries of probleme by die skool ondervind. Jou tiener mag gelukkig voorkom, maar steeds hartseer wees. Hulle mag hulself afsluit en meer tyd saam met vriende wil deurbring. Hulle mag ook onverwagte of gevaarlike gedrag openbaar. Dit mag dalk nie vir jou sin maak nie, maar tog is dit alles normaal.\n-Tieners mag voel dat dit hulle skuld is - dat hulle die virus oorgedra het, of dat hulle hul swak gedra het. Vertel hulle duidelik dat hulle niks verkeerd gedoen het nie.", - "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "-Verduidelik dat hartseer met baie emosies en reaksies gepaard gaan. Wys vir jou tiener dat hulle geliefd en versorg is, en moedig hulle aan om hul emosies te deel deur daaroor te praat, skryf of teken.\n-Indien daar 'n ondersteuningsgroep is waarvan jou tiener kan deel word, kan dit help.\n-As 'n tiener praat van hulself beseer of om die lewe bring, vra vir hulp by iemand so vinnig as wat jy moontlik kan.\n-Indien moontlik, hou by jou normale daaglikse routines, dit kan vir 'n tiener vertroostend wees.\n-Dit kan help vir tieners om deel te neem aan rituele rondom die dood - om 'n lied te kies of om iets te sê.\n-Deur elke dag 'n paar minute op jou tiener te fokus help om hulle veiliger te laat voel en gee hulle 'n kans om te ontspan of te praat oor dinge wat hulle ontstel.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Die verlies van 'n geliefde kan baie oorweldigend voel. Hier is 'n paar praktiese wenke wat van hulp kan wees om in gedagte te hou.", - "Ask for help": "Vra vir hulp", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Vra iemand op wie jy staat kan maak om jou te help - kos of kindersorg kan van waarde wees. Jy mag dalk dokumente vir erflatings, vir jou kinders of vir toegang tot dienste benodig. \nSoms probeer mense om geld of erfporsies van ‘n persoon in rou af te rokkel. Vind uit wat jou regte is.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "-Om afskeid te neem is moeilik. Doen wat vir jou en jou tiener oukei voel.\n-Families, tieners en ouers is nie perfek nie. Wanneer iemand sterf, is dit oukei om te praat oor ons goeie en slegte herinneringe.\n-Dit kan help om 'n brief te skryf of iets te teken vir die oorlede persoon. \n-Sommige mense hou 'n seremonie of 'n spesiale ete om die oorledene te vier, en afskeid te neem.\n-Dit kan help om 'n houer van herinneringe te maak, om dinge in te hou wat jou en jou tiener aan die persoon herinner.\n-Dit kan help om selfs net oor die persoon te praat wanneer jy aan hulle dink.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Neem aan die end van die dag ’n minuut om:\n\n* Met jou tiener te praat oor iets lekkers wat hulle gedoen het.\n* Jouself te prys vir een ding wat jy vandag goed gedoen het.\n* Jy’s ’n ster!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Vra vir mekaar: “Wat het jou vandag gelukkig gemaak?”\n* Vra vir mekaar: “Met watter probleme het jy vandag te doen gehad?”\n* Vra vir mekaar: “Hoe kan ek jou help?”\n* Probeer dit elke dag saam doen; julle kan dit doen wanneer julle saam aandete eet of voor julle gaan slaap.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Jy kan nie altyd reis nie, maar jy kan altyd droom! Vra jou tiener hierdie vrae:\n* Waarheen sou jy wou reis? Hoe lank sou jy weg wees? Wat sou jy inpak? Wat sou jy op jou reis doen? Wat sou jy sien?\n* Kyk saam na ’n kaart of teken een.\n* Kies ’n land waarvan jou tiener nog nooit gehoor het nie en leer meer oor die land.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Jy en jou tiener kan ’n gastelys beplan van die beroemde mense wat jy die graagste na julle partytjie wil nooi. Elkeen kan vyf mense hê – hulle kan uit die verlede of uit die huidige tyd wees. Wie sou jy nooi? En sal julle gaste goed met mekaar oor die weg kom?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Dink aan drie stellings oor jouself. Twee moet waar wees en een moet ’n leuen wees.\n* Dit kan help om te dink aan wense, drome, ervarings op skool, dinge waarvan jy hou of nie hou nie. Byvoorbeeld: ek haat piesangs, my gunstelingvak is wetenskap en ek wens regtig ek kon sing.\n* Sê dit vir jou tiener en vra hulle om te raai watter een ’n leuen is.\n* Het hulle reg geraai? Was dit ’n verrassing?\n* Vra hulle nou om dieselfde te doen. Het julle iets nuuts omtrent mekaar geleer?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Vertel jou tiener iets van jouself toe jy ’n tiener was. Watter dinge het toe nog nie bestaan nie? Fone met internet? Wat het jy vir die pret gedoen? Waaroor was jy bekommerd? Moenie bekommerd wees as hulle jou niks terugvertel nie – wat belangrik is, is dat hulle luister en onthou. Soms vergeet ons tieners dat hul ouers ook mense is!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Dink aan ’n superkrag. Byvoorbeeld, om dadelik na enige plek te kan gaan, in tyd te reis, gedagtes te lees.\n* Vra jou tiener: “As jy die superkrag gehad het om [...] te gebruik, hoe sou jy dit gebruik?”\n* Moedig hulle aan om hul superheld ’n naam te gee en dit uit te voer.\n* Laat jou tiener nou toe om ’n superkrag vir jou te kies.\n* Maak seker dat jy ook jou superkrag uitvoer!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Gesels met jou tiener oor iets waarvan hulle hou.\n\nDit kan oor enigiets wees waaroor hulle wil praat: sport, vriende, musiek, bekendes ...\n\nProbeer om na jou tiener te luister en gee hulle ruimte om te praat.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Kies ’n storieverteller om ’n storie op te maak.\n* Storieluisteraars kan enige tyd onderbreek met ’n woord.\n* Storieverteller moet daardie woord in hul storie insluit.\n* Wanneer die storie klaar is, probeer dit dan met ’n ander storieverteller!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Dink aan drie verskillende situasies. Byvoorbeeld, om ’n motor te bestuur, ’n boot te laat seil of ’n vliegtuig te laat vlieg.\n* Noem dit vir jou tiener en vra: “Watter een sou jy verkies?”\n* Vra hulle hoekom?\n* Dink nou aan nog drie situasies of vra jou tiener om dit vir jou te doen.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Vra mekaar vrae. Dit kan vrae wees oor dinge waarvan julle hou of wat julle vandag gedoen het.\n* Die enigste reël is dat julle nie “Ja”, “Nee” of “Miskien” kan antwoord nie.\n* Hoe lank kan julle aanhou? Hoe kreatief kan julle wees met julle antwoorde?\n* Ruil om en speel weer!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Die eerste persoon sê: “Saterdag gaan ek... (bv. na die park)”\n* Tweede persoon voeg by tot die eerste persoon: “Saterdag gaan ek na die park en...” (bv. by my beste vriend kuier).\n* Elke persoon voeg by tot die vorige en probeer dink aan al die prettige dinge om Saterdag te doen.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Begin die storie met “Eendag was daar...”\n* Laat jou tiener die volgende sin opmaak.\n* Dan maak jy ’n sin op.\n* Maak beurte totdat julle ’n wonderlike nuwe storie het.\n* Maak seker dat julle die storie op ’n positiewe noot afsluit.\n* Vra jou tiener wat sy/haar gunsteling deel van die storie was!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Vra jou tiener watter ete hy/sy wil eet.\n* Berei dit saam voor!\n* Gee jou tiener ’n beurt om die hoofkok te wees – hy/sy neem die leiding en jy volg sy/haar instruksies.\n* Jy kan hulle selfs help om ’n begroting vir die bestanddele op te stel!\n\nDink jy dat dit nie sal werk nie? Vra jou tieners wat hulle wil hê dat jy en hulle saam moet doen. Laat hulle die leiding neem. Ontspan. Geniet dit.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Maak ’n stel danspassies vir jou tiener se gunstelingliedjies.\n* Een persoon doen ’n danspassie en almal aap dit na.\n* Almal maak beurte om die leier te wees.\n* Voer dit vir die huismense op!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Hierdie speletjie kan in pare of met baie mense in ’n groep gespeel word.\n* Staan teenoor mekaar of in ’n kring.\n* Een persoon lei eerste en almal maak hulle na en probeer presies op dieselfde tyd as die leier beweeg.\n* Maak seker dat die leier stadig genoeg beweeg sodat almal kan volg! Probeer om verskillende liggaamsdele en op verskillende vlakke te beweeg.\n* Verander na ’n rukkie van leier. Gee almal ’n kans om te lei.\n* Probeer dit sonder leiers!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Dink aan ’n nuwe vaardigheid wat jy saam met jou tiener kan aanleer. Byvoorbeeld, om ’n bal in die lug of op jou voet te hou, te leer goëlbal speel, sop te maak?\n* Maak beurte om die nuwe vaardigheid te probeer.\n* Maak seker julle prys mekaar, en probeer saam leer en speel!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Dink saam aan drie soorte oefeninge. Byvoorbeeld, stap, draf, sokker speel of dans.\n* Kies een saam en probeer dit.\n* As julle albei daarvan hou, besluit hoe gereeld julle dit gaan doen. Een of twee keer per week? Elke oggend?\n* Dink saam aan maniere om dit nog prettiger te maak. Kan julle tot by ’n sekere punt draf? Beurte maak om die afrigter te wees? Mekaar motiveer met ’n klein gratis beloning?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Die eerste persoon kan ’n liedjie kies of sing.\n* Almal moet die naam van die deuntjie raai (om dit moeiliker te maak, kan hulle raai wie die sanger is).\n* Die eerste een wat dit reg raai, word die volgende leier.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Hierdie speletjie is die beste met ten minste 3 mense.\n* Begin in ’n kring en gee een “klap” met die vingers in die kring om (of klap hande as jy nie jou vingers kan klap nie).\n* Jy “klap” een keer om die “klap” te gooi, en een keer om dit te vang. Kyk na die persoon na wie jy dit gooi.\n* Die rigting (op, af, reguit, geboë, oor die grond) en krag (hard, sag, gemiddeld) waarmee jy die klap gooi, moet ’n invloed hê op hoe die persoon dit vang.\n* Jy kan die “klap” laat hop, dit in die lug gooi en dit ’n paar keer vang voordat jy dit aanstuur.\n* As almal daarmee vaardig raak, kan julle in die kamer begin rondbeweeg en steeds die “klap” aanstuur.\n* Kan jy onder die been deur gooi? Agter die rug om? Deur jou kop? ’n Aangee onderskep? Geniet dit om te “klap”!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Kies ’n sport of oefening om saam te doen. Besluit op ’n skedule. Gaan julle dit elke dag doen? Vir hoe lank?\n\nProbeer dit vir ’n week. Vra jouself en jou gesin aan die einde van die week die volgende vrae:\n* Hoe gaan dit?\n* Hoe het jy aan die begin van die week gevoel?\n* Hoe voel jy aan die einde van die week?\n* Wat kan ons volgende week anders doen?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Maak beurte om die “leier” te wees. Sê die inleidingsinne om almal te aktiveer. Dan gee die “leier” ’n opdrag en almal doen die aktiwiteit so vinnig as moontlik:\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Raak iets rooi van kleur.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Spring tien keer op en af.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Sit die skoene op die skoenrak.”", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Hierdie speletjie is die beste as meer as 2 mense speel.\n* Een persoon maak asof hulle iets doen – byvoorbeeld hare kam of aandete maak.\n* ’n Ander persoon vra: “Wat doen jy?”\n* Die eerste persoon moet iets sê wat niks met hare kam te doen het nie, byvoorbeeld: “Maak my veters vas.”\n* Die tweede persoon begin dan maak asof hy sy veters vasmaak totdat ’n nuwe persoon vra: “Wat doen jy?”\n\nDie antwoord moet altyd iets anders wees as wat jy eintlik doen!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Skud julle linkerhande 8 keer in die lug terwyl julle tot 8 tel.\n* Doen dit so vinnig en hard as wat julle kan.\n* Herhaal met julle ander hande. Herhaal met albei voete.\n* Doen dit 7 keer, dan 6 keer en gaan voort totdat julle by 1 kom.\n* Almal roep dan “Crazy chicken” uit en doen hul beste mal hoenderdans!", - "Quick Parenting Tips": "Vinnige wenke vir ouerskap", - "Raising teens can be hard, and we all struggle sometimes.": "Dit kan moeilik wees om tieners groot te maak, en ons almal sukkel soms.", - "What is the main challenge you are experiencing right now?": "Wat is die grootste uitdaging wat jy tans ondervind?", - "My relationship with my teen is not good": "My verhouding met my tiener is nie goed nie", - "My teen’s behaviour is difficult": "My tiener se gedrag is moeilik", - "I feel stressed, lonely, angry": "Ek voel gestres, eensaam, kwaad", - "I have money worries": "Ek het bekommernisse oor geld", - "I worry about my teen’s safety": "Ek is bekommerd oor my tiener se veiligheid", - "We often fight in our family": "Ons baklei gereeld in ons gesin", - "I have a different problem…": "Ek het ’n ander probleem…", - "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Om ’n beter verhouding op te bou, begin deur tyd saam deur te bring – selfs 5 minute per dag maak ’n verskil! Aanvanklik kan dit moeilik wees om tyd saam deur te bring, aangesien ons almal besig is en ons tieners soms in ’n slegte bui kan wees. Maar om selfs 5 minute per dag se gefokusde tyd met jou tiener deur te bring, help om vertroue op te bou. Vra jou tiener wat hulle saam sou wil doen. Dit kan ook vir jou lekker en ontspannend wees!", - "You can get more support on how to spend one-on-one time with your teen here:": "Jy kan hier meer ondersteuning kry oor hoe jy tyd alleen met jou tiener kan deurbring:", - "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Alle tieners gedra hulle soms net gruwelik! Een ding wat kan help met tienergedrag, is om hulle te prys wanneer hulle iets goeds doen – ongeag hoe klein dit is. Dit lyk miskien nie asof tieners jou lof wil hê of dit soek nie, maar eintlik wil hulle dit baie, baie graag hê.", - "You can get more support here on how to encourage good behaviour through praising:": "Jy kan hier meer ondersteuning kry oor hoe jy goeie gedrag kan aanmoedig deur te prys:", - "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Ouerskapstres is tans baie hoog. Ons weet presies hoe oorweldigend die lewe kan wees. Om iets vir jouself te doen, kan jou stres verminder. Jy verdien dit! En as jy oorweldig voel, neem weer beheer oor jou liggaam deur vyf keer stadig en diep asem te haal voordat jy reageer. Baie ouers het dit nuttig gevind.", - "You can get more support on how to take care of yourself here:": "Jy kan hier meer ondersteuning kry oor hoe jy vir jouself kan sorg:", - "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Jy is nie alleen nie. Geldstres is so moeilik vir ouers. Probeer om met jou tiener te praat oor hoeveel geld inkom en wat julle as gesin elke maand moet spandeer. Dit kan hulle help om te verstaan waarom jy iets wat hulle graag wil hê, nie kan bekostig nie. En as almal verstaan waarheen die geld gaan, is dit makliker om saam te stem oor waar julle ook saam kan spaar!", - "You can get more support on how to budget and save here:": "Jy kan hier meer ondersteuning kry oor hoe om te begroot en te bespaar:", - "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Tieners spandeer baie tyd buitenshuis of aanlyn, waar dit vir ons moeiliker is om hulle veilig te hou – baie ouers is bekommerd hieroor. Probeer ’n gesprek met jou tiener begin oor veilige en onveilige plekke in jou gemeenskap en aanlyn (jy sal dit miskien ’n paar keer moet probeer). Hulle ken dalk selfs sommige wat jy nie ken nie. Dit kan jou help om saam ’n plan te maak oor hoe om veilig te bly.", - "You can get more support on how to keep your teen safe here:": "Jy kan hier meer ondersteuning kry oor hoe om jou tiener veilig te hou:", - "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "As ’n probleem opduik, probeer om saam daaroor te praat. Wat is die probleem presies? Watter verskillende oplossings is daar en wat is die gevolge daarvan? Op hierdie manier kan julle ’n oplossing vind wat vir almal goed kan wees.", - "You can get more support on how to solve problems together here:": "Jy kan hier meer ondersteuning kry oor hoe om probleme saam op te los:", - "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Dit is nie maklik om na ons gesinne om te sien nie. Ons het almal soms uitdagings, maar ons hoop dat hierdie toep jou sal help om dit goed te hanteer.@global.parent_app is gebaseer op tien jaar se ervaring met die bestuur van ouerskapsprogramme in Suid-Afrika, en duisende ouers het gevind dat die wenke wat gedeel word, baie help met baie ouerskapuitdagings. Ons hoop dat hierdie toep jou en jou gesin ook sal help.\n\nHier is ’n paar van die belangrikste bewese wenke vir jou:", - "Start your first parenting workshop": "Begin jou eerste ouerskapslypskool", - "You will get more support in the @local.workshop_data.in_text_title.": "Jy sal meer ondersteuning kry in die @local.workshop_data.in_text_title.", - "You can get more support in the @local.workshop_data.in_text_title.": "Jy kan meer ondersteuning kry in die @local.workshop_data.in_text_title.", - "Start the @local.workshop_data.in_text_title": "Begin die @local.workshop_data.in_text_title", - "Finish the @local.workshop_data.in_text_title to get more support.": "Voltooi die @local.workshop_data.in_text_title om meer ondersteuning te kry.", - "Continue the @local.workshop_data.in_text_title": "Gaan voort met die @local.workshop_data.in_text_title", - "Re-access the @local.workshop_data.in_text_title": "Kry weer toegang tot die @local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Sit, maak jou oë toe en luister na jou asem terwyl dit in en uit gaan.\n\nLet op hoe jy voel.\n\nWanneer jy gereed is, maak jou oë weer oop.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Probeer dit wanneer jy ook al gestres voel en ’n ruskans nodig het om weer teenwoordig te voel.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Maak jou oë toe.\n\nKom ons gebruik die towerkrag van drie om teenwoordig te bly en te ontspan.\n\nNoem drie geluide wat jy nou kan hoor.\nNoem drie reuke wat jy nou kan ruik.\nNoem jou drie gunstelingkosse.\n\nVir watter drie dinge kan jy op die oomblik dankbaar wees? Dit hoef nie groot te wees nie.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "As ons aan die einde van ’n rowwe dag dink aan drie dinge waarvoor ’n mens dankbaar kan wees, kan dit ons die moed help vind om môre weer te probeer.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Maak jou oë toe en dink aan die dag.\n\nNoem 1 ding waarvoor jy dankbaar is.\nNoem 1 ding wat jy goed gedoen het.\nNoem 1 ding waarvan jy hou.", - "Well done, you are a hero!": "Welgedaan, jy is ’n held!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Maak jou oë toe.\n\nGebruik die towerkrag van drie om verbind te bly en te ontspan.\n\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Voel jy hoegenaamd anders? Diep asemhaling help om ons hele liggaam en gees te kalmeer.\n\nJy is ’n ster!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Maak jou oë toe.\n\nLuister na jou asem soos wat dit vyf keer in en uit gaan.\n\nLet op hoe jy voel.", - "When you are ready open your eyes again. You are in control!": "Wanneer jy gereed is, maak weer jou oë oop. Jy is in beheer!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Maak jou oë toe.\n\nNeem ’n bietjie tyd om na te dink oor die dag.\n\nDink aan een positiewe of prettige ding wat jy gedoen het.\nPrys jouself vir een ding wat jy vandag goed gedoen het.\nDink aan een ding wat jy môre anders kan doen.\nDink aan een ding waarvoor jy dankbaar is.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Maak jou oë toe.\n\nMaak jou kinders jou ooit lus om te skree?\n\nGee jouself ’n pouse van 10 sekondes. Asem 5 keer stadig in en uit.\n\nProbeer dan op ’n rustiger manier reageer.", - "Millions of parents say this helps - A LOT.": "Miljoene ouers sê dit help – BAIE.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Maak jou oë toe.\n\nNeem ’n rukkie om te stop waarmee jy besig is en dink aan jou asem.\n\nWat is een ding waarvoor jy op die oomblik dankbaar kan wees?\nWat is een ding wat jou geluk bring?\nWat is een ding waarvan jy hou?\n\nHulle hoef nie groot dinge te wees nie. Soms tel die klein dingetjies in die lewe die meeste!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Hier is ’n aktiwiteit om jou liggaam te ontspan:\n\nSit gemaklik en maak jou oë toe as jy kan.\nStel jou ’n goue ring voor wat jou liggaam van jou voete na jou kop skandeer.\nLet op terwyl dit op en af oor jou liggaam beweeg. Is daar plekke wat gespanne voel? Gevoelloos? Pynlik?\nFokus ’n oomblik op daardie plekke. Asem in op die gebied, en terwyl jy uitasem, probeer om enige spanning of pyn te los te laat.\nDoen dit vir ’n paar asemhalings.\n\nMaak jou oë oop. Hoe voel jou liggaam nou?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "Probeer dit volgende keer as jy in die bed lê en nie kan slaap nie!", + "Question Time": "Vraetyd", + "It's time for some questions!": "Dis tyd vir ’n paar vrae!", + "Read Together": "Lees saam", + "Let's read a story together!": "Kom ons lees ’n storie saam!", + "Let's read a story!": "Kom ons lees ’n storie!", + "Let's see how this week has been.": "Kom ons kyk hoe hierdie week was.", + "This week you have done...": "Hierdie week het jy...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Jy wys regtig hoe toegewyd jy is om ’n ouer te wees en om vir jouself te sorg.\n\nJy is fantasties.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Tuisoefening is hoe ons ons gesinslewe beter kan maak. Maar dit gaan dikwels met uitdagings gepaard.\n\nKom ons deel ons suksesse en probleme, en help mekaar om nuwe idees te vind om uit te probeer!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Dink aan hoe jou tuisaktiwiteite hierdie week gegaan het.\n\nMaak beurte om die volgende te bespreek:\n* Wat het goed gegaan en wat was ’n probleem?\n* Aan watter oplossings kan julle saam dink?\n* Kies een oplossing en probeer dit later saam met jou tiener!\n\n(Of jy kan dit selfs nou oefen sodat dit later makliker sal wees!)", + "Discussion example from @data.workshop.w_1on1.title": "Besprekingvoorbeeld uit@data.workshop.w_1on1.title", + "Relax Together": "Ontspan saam", + "Relax": "Ontspan", + "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Kom ons doen ’n kort ontspanningsaktiwiteit saam – dit neem minder as 1 minuut en jy sal meer ontspanne voel.", + "Add this activity to @global.my_relaxes": "Voeg hierdie aktiwiteit by @global.my_relaxes", + "Listen and relax": "Luister en ontspan", + "Read and relax": "Lees en ontspan", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Maak jou oë toe.\n\nLet op jou verbinding met die grond onder jou.\nWatter dele van jou liggaam raak die grond? Watter dele van jou liggaam raak dit nie?\nLet op waar dit warm voel en waar dit koel voel.\nVoel hoe die grond onder jou jou ondersteun. Laat jou liggaam in die ondersteuning van die grond wegsak.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Probeer dit as jy weer alleen voel of ’n alledaagse aktiwiteit doen, soos om skottelgoed te was. Dit kan regtig help!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Gaan sit en maak jou oë toe.\nHoeveel geluide kan jy hoor?\nLuister na die geluide binne en buite die kamer. Tel dit op jou vingers.\nHoeveel vingers het jy op na tien sekondes? Watter geluide het jy gehoor?\n\nProbeer weer vir nog tien sekondes.\nHet jy enige nuwe geluide gehoor? Het jy geluide in jou eie liggaam gehoor?\nLet op hoe jy nou voel.", @@ -1010,62 +250,45 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Neem ’n tydjie om na te dink oor jou ervaring. Let op of jy enige verskil voel.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Stap 1. Maak jou oë toe en haal diep asem.\n\nStap 2. Vra jouself af: “Waaraan dink ek?” Let op of jou gedagtes positief of negatief is.\nLet op hoe jy emosioneel voel. Let op of jou emosies aangenaam of onaangenaam is. Herinner jouself daaraan dat wat jy ook al voel, dit goed is .\nLet op hoe jou liggaam voel. Let op enigiets wat seer of gespanne is.\n\nStap 3. Fokus op jou asem. Voel jou asem terwyl dit in- en uitgaan. Jy kan een hand op jou maag sit en met elke asemhaling voel hoe dit styg en val. Doen dit vir ongeveer 10 asemhalings.\n\nStap 4. Brei jou bewussyn uit na jou hele liggaam. Luister na die geluide in die kamer.\n\nStap 5. Neem ’n rukkie om na te dink of jy anders voel. Wanneer jy gereed is, maak jou oë oop.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "Dit is goed dat jy ’n pouse geneem het. Jy kan dit altyd doen wanneer jy stres ervaar. Dit gee jou ’n kans om rustiger te word. Selfs om ’n paar keer diep asem te haal of om met die grond onder jou ’n verbinding te maak, kan ’n verskil maak. Jy kan ook ’n pouse saam met jou kinders neem!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Sit, maak jou oë toe en luister na jou asem terwyl dit in en uit gaan.\n\nLet op hoe jy voel.\n\nWanneer jy gereed is, maak jou oë weer oop.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Probeer dit wanneer jy ook al gestres voel en ’n ruskans nodig het om weer teenwoordig te voel.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Staan op en strek jou arms in die lug. Druk enige wolke weg en laat die son op jou skyn. Strek na albei kante. Strek vorentoe en agtertoe.\n\nLaat jou hand aan jou sy hang. Druk jou skouers styf tot by jou ore terwyl jy inasem, knyp jou oë styf toe en hou jou asem in. Laat jou skouers los terwyl jy jou liggaam ontspan.\n\nOntspan jou arms en laat jou arms sywaarts swaai, en draai jou bolyf. Jou arms moet jou rug saggies raak terwyl jy van kant tot kant draai.\n\nPlaas die een voet voor die ander en maak klein sirkels vanaf die enkels, onthou om na albei kante te draai. Doen elke voet met vier sirkels in elke rigting.\n\nSkud nou jou hele liggaam so vinnig as wat jy kan. Skud dit hoog! Skud dit laag! Skud dit oral rond!\n\nMaak jou oë toe en lig jou arms stadig bo jou kop terwyl jy inasem. Laat sak jou arms stadig tot aan jou sy terwyl jy uitasem.\n\nNeem ’n oomblik om na te dink oor jou ervaring.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "Mooi so! Jy kan hierdie aktiwiteit enige tyd doen wanneer jy voel jy moet stres verlig en jou liggaam en gees energie moet gee.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Maak ’n lys van gesonde aktiwiteite wat jy graag wil doen. Hier is ’n paar voorstelle:\n* Luister na jou gunstelingmusiek\n* Gaan stap ’n entjie (indien toegelaat)\n* Kry oefening\n* Drink ’n koppie tee alleen\n* Bel ’n vriend\n* Sing, dans, bid of lees\n* Sit in die son met jou oë toe \n* Kyk na jou gunsteling-TV-program\n\nKies een en doen dit vandag!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "As jy na jouself omsien, sorg jy vir jou kinders. Ons moet almal met mekaar in verbinding kom. Probeer om elke dag met vriende, familie en ander ondersteuningsnetwerke te praat. As dit al ’n rukkie is sedert jy laas na iemand uitgereik het, doen dit nou!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Dink na oor wat jou kwaad maak. Wanneer gebeur dit? Hoe reageer jy gewoonlik?\n\nKeer dat woede in die eerste plek begin. Slaap of rus as jy moeg is. Probeer iets eet as jy honger is. Vra iemand vir ondersteuning as jy alleen voel.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Dit kan baie moeilik wees om woede te beheer. Vat ’n blaaskans as jy voel dat jy vir jou kinders of iemand anders kwaad word.\n\nGaan vir 5 minute na ’n ander plek om weer beheer oor jou emosies te kry. As jy ’n veilige plek in buitelug het, gaan buitentoe. Jy kán hierdeur kom!", - "Customise your @global.parent_app": "Pas jou @global.parent_app aan", - "These quick questions will fit this app to your needs.": "Hierdie vinnige vrae sal hierdie toep by jou behoeftes aanpas.", - "Let’s start with a few questions about you and your family.": "Kom ons begin met ’n paar vrae oor jou en jou gesin.", - "We would love to know your first name or nickname:": "Ons sal graag jou voornaam of bynaam wil weet:", - "Are you a woman or a man?": "Is jy 'n vrou of 'n man?", - "Woman": "Vrou", - "Man": "Man", - "How old are you?": "Hoe oud is jy?", - "Adults": "Volwassenes", - "Teens": "Tieners", - "Children": "Kinders", - "Babies": "Babas", - "How many people are in your household?": "Uit hoeveel mense bestaan jou huishouding?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Jy kan die @global.weekly_workshops self doen OF jy kan ander familielede of vriende nooi om by jou aan te sluit – julle sal baie by mekaar leer. Dit hang van jou af!", - "How would you like to do your @global.weekly_workshops?": "Hoe sou jy jou @global.weekly_workshops wou doen?", - "Can you think of a name for your group?": "Kan jy aan ’n naam vir jou groep dink?", - "Which day of the week would you like to do your @global.weekly_workshops?": "Watter dag van die week wil jy jou @global.weekly_workshops doen?", - "Monday": "Maandag", - "Tuesday": "Dinsdag", - "Wednesday": "Woensdag", - "Thursday": "Donderdag", - "Friday": "Vrydag", - "Saturday": "Saterdag", - "Sunday": "Sondag", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou groep ontsluit. Dit laat julle toe om dit wat julle saam met julle gesinne geleer het, te probeer voordat julle die volgende vaardigheid opbou.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou ontsluit. Dit laat jou toe om dit wat jy saam met jou gesin geleer het, te probeer voordat julle die volgende vaardigheid opbou.", - "You can always change these settings in your @global.weekly_workshop_options.": "Jy kan hierdie instellings altyd verander in jou @global.weekly_workshop_options.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Ons weet dit is moeilik. Ons het ’n paar nuttige wenke by @data.parent_centre.my_tips.location_text gevoeg oor hoe jy tyd met jou tiener kan deurbring, so jy kan dadelik toegang daartoe kry.\n\nOmdat @data.workshop.w_1on1.title die basis vorm vir alle ander hulpmiddels vir ouerskap, sal jy volgende week die @global.weekly_workshop ontvang!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Mooi so! Ons volgende @global.weekly_workshop gee jou meer idees hiervoor as basis vir al die ander hulpmiddels vir ouerskap. Maar jy het reeds ’n goeie begin!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Deur hierdie toep te gebruik, wys jy dat jy vir jou tiener omgee. Ons het ’n paar noodsaaklike hulpmiddels oor hoe jy lof kan gebruik by @data.parent_centre.my_tips.location_text gevoeg vir vinnige toegang.\n\nIn ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Wonderlik dat jy jou tiener prys! Dit help hulle om gewaardeerd te voel – jou aanmoediging beteken baie. In ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dis wonderlik dat dit ’n goeie week was!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Ons verstaan hoe spanningsvol die lewe kan wees. Ons sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan hanteer en kalmer kan voel.\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops sal ons meer leer oor die hantering van spanning – maar onder @data.parent_centre.my_tips.location_text het jy reeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops kan jy meer idees vind om spanning te hanteer, maar onder @data.parent_centre.my_tips.location_text het jy alreeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Ons hoop dat ons hulpmiddels oor hoe om spanning te hanteer vir jou nuttig sal wees. Jy kan dit reeds vind onder @data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Uitstekend. Ons het ’n slypskool oor gesinsbegroting wat met geldstres in die algemeen kan help, en geldverwante argumente kan verminder.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Geldstres kan oorweldigend wees.\n\nOns hou oor vyf weke ’n werksessie oor gesinsbegroting, maar jy kan reeds onder @data.parent_centre.my_tips.location_text ’n paar kernwenke vir gesinsbegroting kry!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het. Om na jouself om te sien en jou rustiger te laat voel as dit moeilik gaan, sal ons jou elke dag daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nOns sal in week 5 van die @global.weekly_workshops meer leer oor die hantering van spanning, maar jy het alreeds toegang tot ’n paar nuttige hulpmiddels onder @data.parent_centre.my_tips.location_text om aan die gang te kom.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gestres te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns hoop dat ons hulpmiddels hoe om spanning te hanteer jou sal help om rustiger te voel in moeilike situasies. Jy kan dit vind onder @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Dit is ’n groot bron van kommer vir ouers oral. Ons sal seker maak dat jy ondersteuning kry om kommunikasie te bou.\n\nOns sal later in die @global.weekly_workshops verder praat oor beplanning vir jou tiener se veiligheid, maar onder@data.parent_centre.my_tips.location_text kan jy reeds ’n paar kernwenke kry om jou tiener veilig te hou!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Dit is regtig wonderlik. Ouerskap is moeilik, maar jy slaag regtig goed daarin.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Jy kan te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre vind. \n\nJy kan ook ’n paar eerste kernwenke kry wat jou sal help om reëls te maak en veiligheid te beplan onder @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools en @data.workshop.w_safe.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Jy kan te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre vind. \n\nJy kan ook ’n paar eerste kernwenke kry wat jou sal help om reëls te maak onder @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOns sal meer ondersteuning vir jou in die latere @global.weekly_workshops hê as jy nog meer wil weet!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Inhoud wat deur hierdie vrae ontsluit is, is nou toeganklik onder @data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "Jy het nounet die eerste werksessie ontsluit!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Maak jou oë toe.\n\nKom ons gebruik die towerkrag van drie om teenwoordig te bly en te ontspan.\n\nNoem drie geluide wat jy nou kan hoor.\nNoem drie reuke wat jy nou kan ruik.\nNoem jou drie gunstelingkosse.\n\nVir watter drie dinge kan jy op die oomblik dankbaar wees? Dit hoef nie groot te wees nie.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "As ons aan die einde van ’n rowwe dag dink aan drie dinge waarvoor ’n mens dankbaar kan wees, kan dit ons die moed help vind om môre weer te probeer.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Maak jou oë toe en dink aan die dag.\n\nNoem 1 ding waarvoor jy dankbaar is.\nNoem 1 ding wat jy goed gedoen het.\nNoem 1 ding waarvan jy hou.", + "Well done, you are a hero!": "Welgedaan, jy is ’n held!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Maak jou oë toe.\n\nGebruik die towerkrag van drie om verbind te bly en te ontspan.\n\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Voel jy hoegenaamd anders? Diep asemhaling help om ons hele liggaam en gees te kalmeer.\n\nJy is ’n ster!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Maak jou oë toe.\n\nLuister na jou asem soos wat dit vyf keer in en uit gaan.\n\nLet op hoe jy voel.", + "When you are ready open your eyes again. You are in control!": "Wanneer jy gereed is, maak weer jou oë oop. Jy is in beheer!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Maak jou oë toe.\n\nNeem ’n bietjie tyd om na te dink oor die dag.\n\nDink aan een positiewe of prettige ding wat jy gedoen het.\nPrys jouself vir een ding wat jy vandag goed gedoen het.\nDink aan een ding wat jy môre anders kan doen.\nDink aan een ding waarvoor jy dankbaar is.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Maak jou oë toe.\n\nMaak jou kinders jou ooit lus om te skree?\n\nGee jouself ’n pouse van 10 sekondes. Asem 5 keer stadig in en uit.\n\nProbeer dan op ’n rustiger manier reageer.", + "Millions of parents say this helps - A LOT.": "Miljoene ouers sê dit help – BAIE.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Maak jou oë toe.\n\nNeem ’n rukkie om te stop waarmee jy besig is en dink aan jou asem.\n\nWat is een ding waarvoor jy op die oomblik dankbaar kan wees?\nWat is een ding wat jou geluk bring?\nWat is een ding waarvan jy hou?\n\nHulle hoef nie groot dinge te wees nie. Soms tel die klein dingetjies in die lewe die meeste!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Hier is ’n aktiwiteit om jou liggaam te ontspan:\n\nSit gemaklik en maak jou oë toe as jy kan.\nStel jou ’n goue ring voor wat jou liggaam van jou voete na jou kop skandeer.\nLet op terwyl dit op en af oor jou liggaam beweeg. Is daar plekke wat gespanne voel? Gevoelloos? Pynlik?\nFokus ’n oomblik op daardie plekke. Asem in op die gebied, en terwyl jy uitasem, probeer om enige spanning of pyn te los te laat.\nDoen dit vir ’n paar asemhalings.\n\nMaak jou oë oop. Hoe voel jou liggaam nou?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "Probeer dit volgende keer as jy in die bed lê en nie kan slaap nie!", + "Start": "Begin", + "Please sign in with your Google account to use the app.": "Meld asseblief met jou Google-rekening aan om die toep te gebruik.", + "Sign in with Google": "Meld aan met Google", + "Add this activity to @global.my_activities": "Voeg hierdie aktiwiteit by @global.my_activities", + "@global.parent_app funded by": "@global.parent_app befonds deur", + "Powered by Parenting for Lifelong Health and partners": "Gerugsteun deur Parenting for Lifelong Health en vennote", + "Bringing teenagers up is hard": "Om tieners groot te maak, is moeilik", + "You are the best parent your teen could have": "Jy is die beste ouer wat jou tiener kon hê", + "Ideas from other families:": "Idees van ander gesinne:", + "Customise @global.parent_app": "Pas @global.parent_app aan", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app aan te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gespanne te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", + "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Dit is ’n groot bron van kommer vir ouers oral. Onthou om jou nuwe vaardighede te gebruik om goeie kommunikasie met jou tiener te bly opbou.\n\nJy kan die belangrikste wenke oor beplanning vir jou tiener se veiligheid in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text lees!", + "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Uitstekend. As daar in die toekoms in jou gesin spanning of meningsverskille oor geld opduik, kan jy altyd die @data.workshop.w_money.in_text_title of @data.parent_centre.my_tips.location_text raadpleeg!", + "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Geldstres kan oorweldigend wees.\n\nAs spanning of meningsverskille oor geld in jou gesin opduik, kan jy wenke in die @data.workshop.w_money.in_text_title of onder @data.parent_centre.my_tips.location_text vind!", + "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Onthou dat jy toegang tot baie nuttige wenke en hulpbronne in die @global.parent_centre kan kry – dit is te eniger tyd vir jou beskikbaar!", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOnthou, jy kan meer ondersteuning hieroor in die @data.workshop.w_safe.in_text_title kry wanneer jy dit ook al nodig het!", "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Ons weet dit is moeilik. Jy kan onder @data.parent_centre.my_tips.location_text ’n paar nuttige wenke lees oor hoe jy tyd met jou tiener kan deurbring of jy kan weer kyk na die @data.workshop.w_1on1.in_text_title.", "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "Welgedaan dat jy so ’n goeie fondament gelê het! Jy kan altyd die @data.workshop.w_1on1.in_text_title nagaan om meer idees te kry oor hoe om tyd saam deur te bring.", "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Deurdat jy hierdie toep gebruik, wys jy dat jy vir jou tiener omgee. Jy kan kyk hoe om lof te gebruik onder @data.parent_centre.my_tips.location_text.\n\nVir meer wenke oor hoe om hierdie vaardigheid goed te gebruik, kan jy ook weer kyk na die @data.workshop.w_praise.in_text_title.", @@ -1073,158 +296,153 @@ "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dit is wonderlik dat dit ’n goeie week was!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Ons verstaan hoe stresvol die lewe kan wees. Ons sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan beheer en kalmer kan voel.\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Jy kan altyd ’n paar nuttige hulpmiddels oor hoe om spanning te hanteer vind onder @data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Uitstekend. As daar in die toekoms in jou gesin spanning of meningsverskille oor geld opduik, kan jy altyd die @data.workshop.w_money.in_text_title of @data.parent_centre.my_tips.location_text raadpleeg!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Geldstres kan oorweldigend wees.\n\nAs spanning of meningsverskille oor geld in jou gesin opduik, kan jy wenke in die @data.workshop.w_money.in_text_title of onder @data.parent_centre.my_tips.location_text vind!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om spanning te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app aan te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gespanne te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns hoop dat ons hulpmiddels hoe om spanning te hanteer jou steeds sal help om rustiger te voel in moeilike situasies. Jy kan dit vind onder @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Dit is ’n groot bron van kommer vir ouers oral. Onthou om jou nuwe vaardighede te gebruik om goeie kommunikasie met jou tiener te bly opbou.\n\nJy kan die belangrikste wenke oor beplanning vir jou tiener se veiligheid in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text lees!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun!\n\nOnthou dat jy te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre kan vind. Jy kan ook die belangrikste wenke oor reëls en veiligheidsbeplanning nagaan onder @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Onthou dat jy te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre kan vind.\n\nJy kan ook die belangrikste wenke oor die maak van reëls nagaan onder @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOnthou, jy kan meer ondersteuning hieroor in die @data.workshop.w_safe.in_text_title kry wanneer jy dit ook al nodig het!", - "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Onthou dat jy toegang tot baie nuttige wenke en hulpbronne in die @global.parent_centre kan kry – dit is te eniger tyd vir jou beskikbaar!", - "Are there teens in your family?": "Is daar tieners in jou gesin?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Hierdie toep fokus op gesinne met tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", + "Customise for your needs": "Pas dit aan volgens jou behoeftes", + "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Elke ouer in die wêreld sukkel in hierdie moeilike tye. Die volgende vrae oor jou ouerskapervarings sal ons help om jou die nodige ondersteuning te bied.\n\nWees eerlik. Onthou dat jy nie alleen is nie! Miljoene ouers voel soos jy, en ons almal verdien ondersteuning.", + "Thank you for being honest": "Dankie vir jou eerlikheid", + "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Dit is wonderlik dat jy kalm reageer as jou tiener iets ontstellends doen. Hulle kan soveel by jou leer!", + "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Dit is wonderlik dat jy bewus is van wat jou tiener doen. Ouerskap is moeilik, maar jy slaag regtig daarin om hulle veilig te hou.", + "You selected \"I would rather not answer\"": "Jy het “Ek wil liewer nie antwoord nie” gekies", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Dis oukei!\n\nOnthou, as jy antwoord sal jou antwoord privaat gehou word en sal dit ons help om jou te voorsien van inhoud wat presies reg is vir jou.", "Are there adults in your family?": "Is daar volwassenes in jou gesin?", "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Hierdie toep fokus op ouers van tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", + "Are there teens in your family?": "Is daar tieners in jou gesin?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Hierdie toep fokus op gesinne met tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", "Are you sure you want to skip this question?": "Is jy seker dat jy hierdie vraag wil oorslaan?", "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Is jy seker jy wil hierdie vraag oorslaan? Onthou, jou antwoord sal privaat gehou word en sal ons help om jou ouerskapbehoeftes te verstaan.\n\nJy kan ook kies om enige vraag nie te beantwoord nie deur die sirkel te kies.", - "You selected \"I would rather not answer\"": "Jy het “Ek wil liewer nie antwoord nie” gekies", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Dis oukei!\n\nOnthou, as jy antwoord sal jou antwoord privaat gehou word en sal dit ons help om jou te voorsien van inhoud wat presies reg is vir jou.", - "Customise for your needs": "Pas dit aan volgens jou behoeftes", - "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Elke ouer in die wêreld sukkel in hierdie moeilike tye. Die volgende vrae oor jou ouerskapervarings sal ons help om jou die nodige ondersteuning te bied.\n\nWees eerlik. Onthou dat jy nie alleen is nie! Miljoene ouers voel soos jy, en ons almal verdien ondersteuning.", - "It is hard to find time to have fun with your teenager.": "Dis moeilik om tyd te kry om prettige dinge saam met jou tiener te doen.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Hoeveel dae die afgelope week kon jy aan hulle aandag gee en iets saam met hulle doen wat hulle geniet het?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_1on1.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Dis moeilik om in ons besige lewens op die positiewe te fokus.", - "How many days in the past week have you praised your teen?": "Hoeveel dae die afgelope week het jy jou tiener geprys?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_praise.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Dit is ’n baie stresvolle tyd vir gesinne.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Hoeveel dae die afgelope week het jy as ouer/versorger stres ervaar?", - "Sometimes our children make us really upset.": "Soms ontstel ons kinders ons baie.", - "How many days in the past week did you shout, scream or yell at your teen?": "Hoeveel dae die afgelope week het jy op jou tiener geskree of gegil?", "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "Mooi so. Breinwetenskap toon dat as jy jou woede beheer, dit die breinontwikkeling van jou tiener verbeter. Wees trots op jouself.", - "Money is one of the biggest stresses for families now.": "Geld is een van die dinge wat tans die meeste stres by gesinne veroorsaak.", - "How many days in the past week have you worried or felt anxious about money?": "Hoeveel dae die afgelope week het jy bekommerd of gespanne gevoel oor geld?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Hoeveel keer die afgelope maand (30 dae) het jou kosgeld opgeraak?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_money.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Dis so stresvol as kinders stout of ongehoorsaam is.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Hoeveel dae die afgelope week het jy jou kinders fisies gedissiplineer deur hulle te klap, pak te gee of te slaan met jou hand of ’n voorwerp soos ’n stok of ’n belt?", - "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Dit is wonderlik dat jy kalm reageer as jou tiener iets ontstellends doen. Hulle kan soveel by jou leer!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_stress.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Dit is moeilik om toesig oor jou tieners te hou wanneer hulle onafhanklik raak.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Hoeveel dae die afgelope week het jy geweet wat jou tiener doen en by wie hulle was?", - "This is good to hear.": "Dit is goed om te hoor.", - "Were you in lockdown this week?": "Was julle hierdie week onder inperking?", - "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Dit is wonderlik dat jy bewus is van wat jou tiener doen. Ouerskap is moeilik, maar jy slaag regtig daarin om hulle veilig te hou.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Hoeveel dae in ’n tipiese week sonder inperking weet jy wat jou tiener doen en by wie hulle is?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_safe.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Ons almal wil ons kinders veilig hou.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "Het jy die afgelope maand (30 dae) met jou kind gepraat oor veiligheid wanneer dit kom by seksuele geweld aanlyn of elders?", - "This could be when they are going out with friends, or talking about the websites they use.": "Dit kan wees wanneer hulle saam met vriende uitgaan of praat oor webwerwe wat hulle gebruik.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Ons het nou ’n nuwe uitdaging – om ons tieners teen COVID-19 te beskerm.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Hoeveel dae het jou tiener verlede week veilig gebly deur ’n masker te dra, afstand van mense te hou en van oorvol plekke weg te bly?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "Dit kan ’n uitdaging wees om jou tiener veilig te hou teen COVID! Ons stel ’n bietjie advies saam – dit sal binnekort vir jou beskikbaar wees in die @global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Dis uitstekend. Ons stel ’n bietjie advies saam om jou tiener veilig te hou teen COVID – dit sal binnekort vir jou beskikbaar wees in die @global.parent_centre.", - "Thank you for being honest": "Dankie vir jou eerlikheid", - "CHAT": "GESELS", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Deel jou gevoelens, en moedig jou tiener aan om te ook praat oor hulle bekommernisse. Julle sal mekaar dan beter verstaan en dus 'n goeie plan saam kan beraam om gesond en gelukkig te bly!", - "CAUTION": "VERSIGTIG", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Kry jou informasie vanaf betroubare inligtingsbronne, sodat jy vertroue kan behou in hierdie onsekere tye. Ons hoor en sien baie nuus via ander mense asook fone, TV, internet. Laat dit jou twyfelagtig, bekommerd, bevrees, kwaad, of verward voel? Maak seker voor jy deel of optree!", - "CHOOSE": "KIES", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Om die regte besluite te neem wat almal gesond en veilig hou kan moeilik wees. Veral in hierdie tye! Jy kan jou tiener help om goeie besluite te neem.", - "CHILL": "ONTSPAN", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Ons voel almal by tye gespanne. Neem diep asem of doen iets prettig saam. Dit kan 'n groot verskil maak aan jou huishoudelike geluk en rustigheid! Hier is 'n paar idees wat jy kan probeer:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Negatiewe gedagtes laat ons negatiewe dinge sê en doen. Probeer 'n verandering in jou denke en uitlatings van negatief na positief!", - "A teen sometimes does something because they:": "'n Tiener sal soms iets doen omdat hulle:", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Luister na hulle vriende\n-Wil doen wat ander doen\n-Meer dink aan 'nou' as aan 'later''\n-Lief is vir impulsiwiteit en versigtigheid vervelig mag vind\n-Nie bekommerd is oor risiko nie - mag selfs risikogedrag geniet\n-Beperkte ondervinding het om op staat te maak\n-Gewillig is om enigiets te probeer - ongeag die gevolge daarvan", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Dit kan help om dit in gedagte te hou wanneer jou tiener 'n verkeerde keuse maak. Praat met hulle en spandeer tyd saam sodat jy hulle kan help om volgende keer 'n beter keuse te maak!", - "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Begrip vir hoe jou tiener voel en hoe jy hulle kan ondersteun maak 'n groot verskil vir julle albei! Neem jou tiener waar en vra hoe hulle voel. Klik op 'n gesig hieronder om meer uit te vind:", - "Hopeful": "Hoopvol", - "Resilient": "Veerkragtig", - "Self-esteem": "Selfbeeld", - "Teens have goals and dreams for the future – near and far!": "Tieners het doelwitte en drome vir die toekoms - die nabye en verre!", - "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Vra jou tiener uit oor hulle doelwitte en drome, moedig hulle aan om te dink oor wat hulle vir hul toekoms wil hê, en maak saam 'n plan om te werk daaraan om dit te verwesenlik.", - "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Veerkragtige tieners kan moeilike situasies hanteer, aanpas by veranderinge, en probleme oplos wanneer hulle opduik.", - "Praise your teen for overcoming difficulty and support them where you can.": "Prys jou tiener vir hulle oorkoming van moeilikhede en ondersteun hulle waar jy kan.", - "A teen’s self-esteem is how they think of themselves.": "'n Tiener se selfbeeld is hoe hulle aan hulself dink.", - "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Moedig 'n positiewe selfbeeld aan, stel 'n voorbeeld deur nie gedurig 'n bespotting te maak of jouself te kritiseer nie. Ken jou tiener se sterkpunte en ondersteun hulle swakpunte.", - "Lonely": "Eensaam", - "Anxious": "Angstig", - "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Tieners kan alleen voel, selfs al is hulle gedurig tussen ander. Hulle mag voel dat hulle niemand het om mee te praat, vertrou of te deel nie.", - "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Vra vir jou tiener hoe dit met hulle gaan en probeer saam om nuwe genotvolle maniere vir interaksie met hulle vriende en familie te vind - veral tydens grendeltyd.", - "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Angs is 'n normale emosie en dit kan ons help met die hantering van uitdagende situasies. Maar oormatige angs of bekommernis wat tieners daarvan weerhou om dinge te doen waarvoor hulle lief is, is 'n probleem.", - "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Help jou tiener om te identifiseer wat hulle angstig maak en beraam saam 'n plan rondom hoe hulle kan reageer op angstige gedagtes.", - "Doing a relaxation activity together can help!": "Om 'n ontspannende aktiwiteit saam te doen kan help!", - "Depressed": "Depressief", - "Self-harm": "Selfbesering", - "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Om hartseer of teneergedruk te voel, om in 'n slegte bui te wees, is alles normale menslike emosies. Depressie is wanneer dit vir 'n lang tydperk aanhou en jou tiener se normale daaglikse aktiwiteite affekteer. Jou tiener mag hulpeloos voel en nie in staat of ongemotiveerd wees om enigiets te verander nie.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Probeer om professionele hulp te kry.", - "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Somtyds mag tieners hulself doelbewus beseer in 'n poging om negatiewe emosies soos woede, skuldgevoelens, leegheid, of self haat te oorkom. Dit mag deur angs of depressie veroorsaak word.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Indien jou tiener gewillig is om te verduidelik hoe selfbesering hulle beter laat voel, mag jy begin om te begryp wat die redes daarvoor is. Probeer om professionele hulp te kry.", - "What does that mean?": "Wat beteken dit?", - "How can you help?": "Hoe kan jy help?", - "We all have negative thoughts sometimes.": "Ons het almal soms negatiewe gedagtes.", - "\"I am a failure\"": "\"Ek is 'n mislukking\"", - "What to do?": "Wat om te doen?", - "Examples": "Voorbeelde", - "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Om vir jouself of jou tiener te sê om op te hou of om die positiewe teenoorgestelde te stel help dikwels nie.", - "\"I do everything perfectly\"": "\"Ek doen alles perfek\"", - "Instead, you can ask:": "In plaas daarvan, kan jy vra:", - "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "-Is die gedagte realisties? Watter ander verduidelikings is daar?\n-Wat sal gebeur as ek voortgaan om hierdie gedagte te glo?\n-Wat sal ek vir 'n vriend sê as hy/sy hierdie gedagte sou hê?", - "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Hierdie is moeilik, maar jy probeer jou bes, en ons sal saam werk om 'n oplossing te vind\"", - "\"It’s your fault\"": "\"Dis jou skuld\"", - "\"Let’s come up with a solution together\"": "\"Laat ons saam met 'n oplossing vorendag kom\"", - "\"I lost my job\"": "\"Ek het my werk verloor\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Ek het baie in my werk geleer - dit sal my help om 'n ander een te vind\"", - "\"Nobody likes me\"": "\"Niemand hou van my nie\"", - "\"Last week I did have a great time with...\"": "\"Verlede week het ek 'n heerlike tyd gehad saam met...\"", - "\"Bad things always happen to me\"": "\"Slegte dinge gebeur altyd met my\"", - "\"This good thing happened the other day...\"": "\"Hierdie goeie ding het nou die dag gebeur...\"", - "Change": "Verandering", - "MAKE TIME": "MAAK TYD", - "Set aside time to have a conversation without distractions.": "Sit tyd opsy om 'n gesprek te hê sonder afleidings.", - "LISTEN": "LUISTER", - "Ask your teen questions and let them share their views without interrupting.": "Vra jou tiener vrae en laat hulle toe om hulle sienings te deel sonder om hulle in die rede te val.", - "WORK TOGETHER": "WERK SAAM", - "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Bespreek 'n spesifieke probleem, kom saam met oplossings vorendag, en doen dan albei wat julle ooreenkom.", - "Thank your teen for sharing and highlight how it is helping you both.": "Bedank jou tiener vir wat hulle met jou deel en beklemtoon hoe dit julle albei help.", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops kan jy meer idees vind om spanning te hanteer, maar onder @data.parent_centre.my_tips.location_text het jy alreeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gestres te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", + "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Dit is ’n groot bron van kommer vir ouers oral. Ons sal seker maak dat jy ondersteuning kry om kommunikasie te bou.\n\nOns sal later in die @global.weekly_workshops verder praat oor beplanning vir jou tiener se veiligheid, maar onder@data.parent_centre.my_tips.location_text kan jy reeds ’n paar kernwenke kry om jou tiener veilig te hou!", + "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Uitstekend. Ons het ’n slypskool oor gesinsbegroting wat met geldstres in die algemeen kan help, en geldverwante argumente kan verminder.", + "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Geldstres kan oorweldigend wees.\n\nOns hou oor vyf weke ’n werksessie oor gesinsbegroting, maar jy kan reeds onder @data.parent_centre.my_tips.location_text ’n paar kernwenke vir gesinsbegroting kry!", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Inhoud wat deur hierdie vrae ontsluit is, is nou toeganklik onder @data.parent_centre.my_tips.location_text.", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOns sal meer ondersteuning vir jou in die latere @global.weekly_workshops hê as jy nog meer wil weet!", + "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Ons weet dit is moeilik. Ons het ’n paar nuttige wenke by @data.parent_centre.my_tips.location_text gevoeg oor hoe jy tyd met jou tiener kan deurbring, so jy kan dadelik toegang daartoe kry.\n\nOmdat @data.workshop.w_1on1.title die basis vorm vir alle ander hulpmiddels vir ouerskap, sal jy volgende week die @global.weekly_workshop ontvang!", + "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Mooi so! Ons volgende @global.weekly_workshop gee jou meer idees hiervoor as basis vir al die ander hulpmiddels vir ouerskap. Maar jy het reeds ’n goeie begin!", + "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Deur hierdie toep te gebruik, wys jy dat jy vir jou tiener omgee. Ons het ’n paar noodsaaklike hulpmiddels oor hoe jy lof kan gebruik by @data.parent_centre.my_tips.location_text gevoeg vir vinnige toegang.\n\nIn ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", + "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Wonderlik dat jy jou tiener prys! Dit help hulle om gewaardeerd te voel – jou aanmoediging beteken baie. In ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", + "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dis wonderlik dat dit ’n goeie week was!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", + "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", + "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Ons verstaan hoe spanningsvol die lewe kan wees. Ons sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan hanteer en kalmer kan voel.\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops sal ons meer leer oor die hantering van spanning – maar onder @data.parent_centre.my_tips.location_text het jy reeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom!", + "Talk Together": "Gesels saam", + "Share ideas, support each other!": "Deel idees, ondersteun mekaar!", + "Think Together": "Dink saam", + "It's time to think together!": "Dis tyd om saam te dink!", + "Think": "Dink", + "It's time to think!": "Dis tyd om te dink!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Hier is die vaardighede wat ons hierdie week geleer het!\n\nGebruik dit tuis en kry dit enige tyd in jou @global.parent_centre.", "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Haal diep asem.\n2. Kyk of die nuus sin maak.\n3. Vra waar hulle aan die nuus gekom het.\n4. Maak dubbel seker by ander mense/bronne wat jy vertrou.\n5. Dink of hierdie nuus sou kon help of eerder vrees by mense veroorsaak as jy dit deel.", "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Ons wil almal soms vir ons tieners sê \"Jy moet dit doen, of anders... moeilikheid!\", maar dikwels sal dit hulle nie reëls beter laat volg nie.\n\nIn plaas daarvan, kan jy jou tiener help om goeie besluite te neem deur jou vertroue in hulle te wys en met hulle te praat:", "DISCUSS CONSEQUENCES": "BESPREEK GEVOLGE", "Ask \"If you do this, what could happen?\"": "Vra \"As jy dit doen, wat sou kon gebeur?\"", - "PRAISE": "PRYS", "If something goes well, praise your teen!": "As iets goed gaan, prys jou tiener!", "REFLECT TOGETHER": "BESIN SAAM", "If something goes wrong, ask \"How could you have done that differently?\"": "As iets verkeerd loop, vra \"Hoe sou jy dit anders kon doen?\"", "START SMALL": "BEGIN KLEIN", "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Gee jou tiener aanvanklik klein verantwoordelikhede. As dit goed afloop, kan jy meer byvoeg om jou vertroue in jou tiener te wys.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Jou doel was om een-tot-een-tyd saam met jou tiener deur te bring. Ons het opgemerk dat jy op die@data.habit.spend_time.in_text_title getik het – geluk dat jy onthou het!", - "Your goal was to spend one-on-one time with your teen.": "Jou doelwit was om een-tot-een-tyd saam met jou tiener deur te bring.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Welgedaan! Jy het oplossings vir jou uitdagings gesoek. Gaan probeer dit. Jou verhouding met jou tiener sal sterker en sterker word!", - "DAY – Do it every day": "DAG – Doen dit elke dag", - "PLAY – Let your teen choose the activity": "SPEEL – Laat jou tiener die aktiwiteit kies", - "STAY – Give your teen all of your attention": "BLY – Gee jou tiener al jou aandag", - "Why was this tip helpful for you?": "Waarom was hierdie wenk vir jou nuttig?", - "\"@local.choice_1\" was helpful because...": "“@local.choice_1” was nuttig omdat...", - "\"@local.choice_2\" was helpful because...": "“@local.choice_2” was nuttig omdat...", - "\"@local.choice_3\" was helpful because...": "“@local.choice_3” was nuttig omdat...", - "Having a specific time to do this helps me to remember.": "Om ’n spesifieke tyd hiervoor te hê, help my om te onthou.", - "With a routine, my teen and I can both keep our schedule free.": "Met ’n roetine kan ek en my tiener albei ons skedule vry hou.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Om elke dag tyd met my tiener deur te bring, help om vertroue by hulle/hom/haar op te bou.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ja, selfs 10 minute saam maak ’n groot verskil – dit laat dit maklik saam met jou werk en take in jou skedule pas!", - "Letting my teen choose what to do builds their confidence.": "As ek my tiener laat kies wat om te doen, bou dit hul selfvertroue op.", - "If my teen chooses, s/he is more likely to want to spend time together.": "As my tiener kies, is die kans groter dat hy/sy tyd saam sal wil deurbring.", - "Letting my teen choose shows that I care about his/her interests.": "As ek my tiener laat kies, wys ek dat ek vir sy/haar belangstellings omgee.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Deur die voorstelle van my tiener te aanvaar, wys ek dat ek na hom/haar luister.", - "Saying something nice about my teen’s choice helps them feel valued.": "As ek iets goeds sê oor die my tiener se keuse, laat dit hulle gewaardeerd voel.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Só waar! En as ons tieners kies, word hulle aangemoedig om ook op ander terreine van hul lewe verantwoordelikheid te neem.", - "By preventing interruptions, I show my teen that s/he is most important.": "Deur onderbrekings te voorkom, wys ek my tiener dat hy/sy die belangrikste is.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Selfs as ek nie by my tiener se aktiwiteite, soos sport, kan aansluit nie, kan ek hulle steeds aanmoedig.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Indien ek oplettend is, kan ek soveel leer oor my tiener se belangstellings, sienings en vermoëns.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ja! As ons ons tieners ons volle aandag gee, sal hulle waarskynlik dieselfde vir ons doen as ons hulle weer iets vra!", + "MAKE TIME": "MAAK TYD", + "Set aside time to have a conversation without distractions.": "Sit tyd opsy om 'n gesprek te hê sonder afleidings.", + "Ask your teen questions and let them share their views without interrupting.": "Vra jou tiener vrae en laat hulle toe om hulle sienings te deel sonder om hulle in die rede te val.", + "WORK TOGETHER": "WERK SAAM", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Bespreek 'n spesifieke probleem, kom saam met oplossings vorendag, en doen dan albei wat julle ooreenkom.", + "PRAISE": "PRYS", + "Thank your teen for sharing and highlight how it is helping you both.": "Bedank jou tiener vir wat hulle met jou deel en beklemtoon hoe dit julle albei help.", + "Hear a caregiver's testimonial": "Luister na 'n versorger se getuigskrif", + "Read a caregiver's testimonial": "Lees 'n versorger se getuigskrif", + "Why @local.workshop_data.title?": "Hoekom @local.workshop_data.title?", + "Hear @global.topic_intro_name's message": "Hoor @global.topic_intro_name se boodskap", + "Read @global.topic_intro_name's message": "Lees @global.topic_intro_name se boodskap", + "Today's steps": "Vandag se stappe", + "Try it Together": "Probeer dit saam", + "Let's practice together.": "Kom ons oefen saam.", + "What does that mean?": "Wat beteken dit?", + "How can you help?": "Hoe kan jy help?", + "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Begrip vir hoe jou tiener voel en hoe jy hulle kan ondersteun maak 'n groot verskil vir julle albei! Neem jou tiener waar en vra hoe hulle voel. Klik op 'n gesig hieronder om meer uit te vind:", + "Hopeful": "Hoopvol", + "Resilient": "Veerkragtig", + "Self-esteem": "Selfbeeld", + "Teens have goals and dreams for the future – near and far!": "Tieners het doelwitte en drome vir die toekoms - die nabye en verre!", + "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Vra jou tiener uit oor hulle doelwitte en drome, moedig hulle aan om te dink oor wat hulle vir hul toekoms wil hê, en maak saam 'n plan om te werk daaraan om dit te verwesenlik.", + "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Veerkragtige tieners kan moeilike situasies hanteer, aanpas by veranderinge, en probleme oplos wanneer hulle opduik.", + "Praise your teen for overcoming difficulty and support them where you can.": "Prys jou tiener dat hulle moeilikhede oorkom het en ondersteun hulle waar jy kan.", + "A teen’s self-esteem is how they think of themselves.": "'n Tiener se selfbeeld is hoe hulle aan hulself dink.", + "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Moedig 'n positiewe selfbeeld aan, stel 'n voorbeeld deur nie gedurig 'n bespotting te maak of jouself te kritiseer nie. Ken jou tiener se sterkpunte en ondersteun hulle swakpunte.", + "Lonely": "Eensaam", + "Anxious": "Angstig", + "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Tieners kan alleen voel, selfs al is hulle gedurig tussen ander. Hulle mag voel dat hulle niemand het om mee te praat, vertrou of te deel nie.", + "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Vra vir jou tiener hoe dit met hulle gaan en probeer saam om nuwe genotvolle maniere vir interaksie met hulle vriende en familie te vind - veral tydens grendeltyd.", + "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Angs is 'n normale emosie en dit kan ons help met die hantering van uitdagende situasies. Maar oormatige angs of bekommernis wat tieners daarvan weerhou om dinge te doen waarvoor hulle lief is, is 'n probleem.", + "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Help jou tiener om te identifiseer wat hulle angstig maak en beraam saam 'n plan rondom hoe hulle kan reageer op angstige gedagtes.", + "Doing a relaxation activity together can help!": "Om 'n ontspannende aktiwiteit saam te doen kan help!", + "Depressed": "Depressief", + "Self-harm": "Selfbesering", + "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Om hartseer of teneergedruk te voel, om in 'n slegte bui te wees, is alles normale menslike emosies. Depressie is wanneer dit vir 'n lang tydperk aanhou en jou tiener se normale daaglikse aktiwiteite affekteer. Jou tiener mag hulpeloos voel en nie in staat of ongemotiveerd wees om enigiets te verander nie.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Probeer om professionele hulp te kry.", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Somtyds mag tieners hulself doelbewus beseer in 'n poging om negatiewe emosies soos woede, skuldgevoelens, leegheid, of self haat te oorkom. Dit mag deur angs of depressie veroorsaak word.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Indien jou tiener gewillig is om te verduidelik hoe selfbesering hulle beter laat voel, mag jy begin om te begryp wat die redes daarvoor is. Probeer om professionele hulp te kry.", + "A teen sometimes does something because they:": "'n Tiener sal soms iets doen omdat hulle:", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Luister na hulle vriende\n-Wil doen wat ander doen\n-Meer dink aan 'nou' as aan 'later''\n-Lief is vir impulsiwiteit en versigtigheid vervelig mag vind\n-Nie bekommerd is oor risiko nie - mag selfs risiko gedrag geniet\n-Beperkte ondervinding het om op staat te maak\n-Gewillig is om enigiets te probeer - ongeag die gevolge daarvan", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Dit kan help om dit in gedagte te hou wanneer jou tiener 'n verkeerde keuse maak. Praat met hulle en spandeer tyd saam sodat jy hulle kan help om volgende keer 'n beter keuse te maak!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "Jy sal moontlik gevra word om hierdie kode te deel met mense wat jou @global.parent_app-reis sal ondersteun.", + "Last sync at: @local.sync_latest": "Laas gesinchroniseer om: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Hierdie toestel is nog nooit gesinkroniseer nie. Sinkroniseer om jou kode te toon.", + "Sync now": "Sinkroniseer nou", + "Syncing...": "Besig om te sinchroniseer...", + "Watch Together": "Kyk saam", + "Let's watch a video together!": "Kom ons kyk saam na ’n video!", + "Watch": "Kyk", + "Let's watch a video!": "Kom ons kyk na ’n video!", + "Options": "Opsies", + "Welcome @fields.user_name": "Welkom, @fields.user_name", + "It's great to see you again!": "Dis wonderlik om jou weer te sien!", + "Welcome @fields.group_name": "Welkom, @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Dis wonderlik om jou weer te sien! Kom ons begin met ’n liedjie vir gesinne van oraloor.", + "Let's Slow Down": "Kom ons gaan ’n bietjie stadiger", + "How would you like to do this workshop?": "Hoe sou jy hierdie werksessie wou doen?", + "Coming soon": "Binnekort beskikbaar", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Ons sal ander ouerskapkwessies moet behandel voordat ons kan begin werk aan @local.workshop_data.title.\n\nJy kan die belangrikste hulpmiddels kry by @local.workshop_data.title via die @global.parent_centre.", + "My name": "My naam", + "@global.weekly_workshop day": "@global.weekly_workshop dag", + "I do the workshops...": "Ek doen die slypskole...", + "My group's name": "My groep se naam", + "My group is now doing the workshop...": "My groep doen nou die slypskool...", + "I am now doing the workshop...": "Ek doen nou die slypskool...", + "These quick questions will fit this app to your needs.": "Hierdie vinnige vrae sal hierdie toep by jou behoeftes aanpas.", + "Let’s start with a few questions about you and your family.": "Kom ons begin met ’n paar vrae oor jou en jou gesin.", + "We would love to know your first name or nickname:": "Ons sal graag jou voornaam of bynaam wil weet:", + "Are you a woman or a man?": "Is jy 'n vrou of 'n man?", + "Woman": "Vrou", + "Man": "Man", + "How old are you?": "Hoe oud is jy?", + "Adults": "Volwassenes", + "Teens": "Tieners", + "Children": "Kinders", + "Babies": "Babas", + "How many people are in your household?": "Uit hoeveel mense bestaan jou huishouding?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Jy kan die @global.weekly_workshops self doen OF jy kan ander familielede of vriende nooi om by jou aan te sluit – julle sal baie by mekaar leer. Dit hang van jou af!", + "How would you like to do your @global.weekly_workshops?": "Hoe sou jy jou @global.weekly_workshops wou doen?", + "Can you think of a name for your group?": "Kan jy aan ’n naam vir jou groep dink?", + "Which day of the week would you like to do your @global.weekly_workshops?": "Watter dag van die week wil jy jou @global.weekly_workshops doen?", + "Monday": "Maandag", + "Tuesday": "Dinsdag", + "Wednesday": "Woensdag", + "Thursday": "Donderdag", + "Friday": "Vrydag", + "Saturday": "Saterdag", + "Sunday": "Sondag", + "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou groep ontsluit. Dit laat julle toe om dit wat julle saam met julle gesinne geleer het, te probeer voordat julle die volgende vaardigheid opbou.", + "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou ontsluit. Dit laat jou toe om dit wat jy saam met jou gesin geleer het, te probeer voordat julle die volgende vaardigheid opbou.", + "You can always change these settings in your @global.weekly_workshop_options.": "Jy kan hierdie instellings altyd verander in jou @global.weekly_workshop_options.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Is jy seker jy wil al die werksessies ontsluit? As jy dit eers gedoen het, sal jy dit nie weer kan sluit nie", + "Unlock Workshops": "Ontsluit werksessies", + "Using the app together": "Hoe om die app saam te gebruik", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Dit is wonderlik om jou te sien!\n\nEerstens, kom ons help jou groep om aan die gang te kom.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Stem saam oor jul grondreëls:\n* Op watter dag/dae en tyd/tye sal ons in die week bymekaarkom?\n* Wie sal die foon/fone hou tydens ons aktiwiteite?\n* Hoe kan ons seker maak dat almal openlik kan deel?\n* Wat kan ons doen sodat ons almal gerespekteerd voel?", + "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Jy kan altyd jou slypskooldag en jou groepnaam verander in die @global.weekly_workshop_options.", + "Some rules that other groups made:": "’n Paar reëls wat ander groepe gemaak het:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Dinsdag om 7nm. is ons @global.parent_app-tyd saam\n* Maak beurte om die foon vas te hou (1 aktiwiteit per persoon)\n* Aanvaar mekaar se ervarings. Ons is almal anders!\n* Maak beurte om te praat en te luister\n* Alle vrae is welkom\n* Wat ons deel, bly onder ons", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Bring hierdie week, elke dag wat jy kan, 5–20 minute een-tot-een-tyd met jou tiener deur.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Onthou – wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Baie ouers ervaar uitdagings om een-tot-een-tyd met hul tieners te spandeer.\n\nHier is die 8 grootste uitdagings volgens wat ouers ons vertel het hulle ondervind wanneer hulle een-tot-een-tyd met hul tiener beplan of deurbring. As jy een hiervan ondervind het of besord is dat jy dit sal ondervind, tik daarop om ’n moontlike oplossing te vind. Jy kan daarná op ander uitdagings tik en dit verken.", "Did you have any challenges when trying to spend time with your teen?": "Het jy enige uitdagings ervaar toe jy tyd met jou tiener wou deurbring?", "What challenge did you have when trying to spend time with your teen?": "Watter uitdaging het jy ervaar toe jy tyd met jou tiener wou deurbring?", @@ -1280,16 +498,257 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Perfek! Op hierdie manier kan jy jou onverdeelde aandag aan jou tiener gee sodat hulle gewaardeerd en geliefd voel.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Uitstekend! Jy kan probeer om tyd saam met jou tiener deur te bring as die ander kinders al gaan slaap het of buite speel.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Wonderlik! Miskien kan julle saam winkel toe stap of na ’n sportwedstryd gaan kyk sodat julle kan gesels sonder dat die ander kinders jou aandag vra.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te probeer. Ons het opgemerk dat jy op die @data.habit.instruct_positively.in_text_title getik het – wonderlik dat jy onthou het!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te poog.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Dankie dat jy deel! Welgedaan dat jy jou tiener positiewe instruksies probeer gee het en dat jy ’n positiewe verhouding met jou tiener wil bou.\n\nJou tiener verdien lof en JY ook!", - "Which of the tips helped you?": "Watter van die wenke het jou gehelp?", - "GET REAL – Can your teen do what you are about to ask?": "WEES REALISTIES – Kan jou tiener doen wat jy gaan vra?", - "GET POSITIVE – Use positive words and praise them!": "WEES POSITIEF – Gebruik positiewe woorde en prys hulle!", - "GET CLEAR – Be clear and specific!": "WEES DUIDELIK – Wees duidelik en spesifiek!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Wonderlik! Wanneer ons ons tiener vra om iets te doen wat realisties is, is dit vir hulle makliker om daarin te slaag.", - "When we praise them, our teens feel encouraged to listen to us again!": "Wanneer ons hulle prys, voel ons tieners aangemoedig om weer na ons te luister!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Fantasties! Wanneer ons vooruit dink aan spesifieke opdragte om vir ons tiener te gee, word ons instruksies baie makliker om te volg!", + "DAY – Do it every day": "DAG – Doen dit elke dag", + "PLAY – Let your teen choose the activity": "SPEEL – Laat jou tiener die aktiwiteit kies", + "STAY – Give your teen all of your attention": "BLY – Gee jou tiener al jou aandag", + "Why was this tip helpful for you?": "Waarom was hierdie wenk vir jou nuttig?", + "\"@local.choice_1\" was helpful because...": "“@local.choice_1” was nuttig omdat...", + "\"@local.choice_2\" was helpful because...": "“@local.choice_2” was nuttig omdat...", + "\"@local.choice_3\" was helpful because...": "“@local.choice_3” was nuttig omdat...", + "Having a specific time to do this helps me to remember.": "Om ’n spesifieke tyd hiervoor te hê, help my om te onthou.", + "With a routine, my teen and I can both keep our schedule free.": "Met ’n roetine kan ek en my tiener albei ons skedule vry hou.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Om elke dag tyd met my tiener deur te bring, help om vertroue by hulle/hom/haar op te bou.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ja, selfs 10 minute saam maak ’n groot verskil – dit laat dit maklik saam met jou werk en take in jou skedule pas!", + "Letting my teen choose what to do builds their confidence.": "As ek my tiener laat kies wat om te doen, bou dit hul selfvertroue op.", + "If my teen chooses, s/he is more likely to want to spend time together.": "As my tiener kies, is die kans groter dat hy/sy tyd saam sal wil deurbring.", + "Letting my teen choose shows that I care about his/her interests.": "As ek my tiener laat kies, wys ek dat ek vir sy/haar belangstellings omgee.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Deur die voorstelle van my tiener te aanvaar, wys ek dat ek na hom/haar luister.", + "Saying something nice about my teen’s choice helps them feel valued.": "As ek iets goeds sê oor die my tiener se keuse, laat dit hulle gewaardeerd voel.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Só waar! En as ons tieners kies, word hulle aangemoedig om ook op ander terreine van hul lewe verantwoordelikheid te neem.", + "By preventing interruptions, I show my teen that s/he is most important.": "Deur onderbrekings te voorkom, wys ek my tiener dat hy/sy die belangrikste is.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Selfs as ek nie by my tiener se aktiwiteite, soos sport, kan aansluit nie, kan ek hulle steeds aanmoedig.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Indien ek oplettend is, kan ek soveel leer oor my tiener se belangstellings, sienings en vermoëns.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ja! As ons ons tieners ons volle aandag gee, sal hulle waarskynlik dieselfde vir ons doen as ons hulle weer iets vra!", + "Your goal was to spend one-on-one time with your teen.": "Jou doelwit was om een-tot-een-tyd saam met jou tiener deur te bring.", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Welgedaan! Jy het oplossings vir jou uitdagings gesoek. Gaan probeer dit. Jou verhouding met jou tiener sal sterker en sterker word!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Om ’n ouer te wees, kan baie moeilik wees. Soms voel dit asof ons kinders nooit na ons luister nie.\n\nMaar die wetenskap toon dat vertroue en liefde opgebou kan word deur elke dag net ’n paar minute se gefokusde een-tot-een-tyd met jou tiener deur te bring.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Een-tot-een-tyd is wanneer jy op hulle fokus, sonder TV of fone. Laat hulle die leiding neem met wat julle doen of waaroor julle praat.\n\nDit is wonderlik as julle dit twintig minute per dag kan doen, maar selfs vyf minute per dag is regtig goed.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Hallo,\n\nOns onderwerp vandag is een-tot-een-tyd met ons kinders.\n\nDit is belangrik om tyd met ons kinders deur te bring sodat hulle ons kan verstaan en sodat ons die geleentheid kry om hulle te verstaan.\n\nOnthou, ’n gesin wat mekaar goed verstaan, leef in harmonie.", + "Have you spent time with your teen already?": "Het jy al tyd saam met jou tiener deurgebring?", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Dankie dat jy soveel moeite doen om ’n beter ouer te wees. Jy is geliefd en gewaardeer!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Om tyd met jou tiener deur te bring, help om vertroue tussen julle op te bou.\n\nGaan nou voort met jou@global.parent_app-reis – jy en jou gesin sal goeie resultate sien.", + "First @global.weekly_workshop!": "Eerste @global.weekly_workshop!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Hallo, @fields.user_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Hallo, @fields.group_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nJou @local.workshop_data.in_text_title is gereed vir jou!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dit sal nie lank neem nie, en jy sal waardevolle inligting kry. \n\nWelgedaan dat jy ’n beter ouer probeer wees. Môre kan jy toegang tot ’n nuwe slypskool kry.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot ’n nuwe werksessie kry om jou te help ontspan en nuwe vaardighede om te geniet en aan te leer!", + "Let's think of ways to spend one-on-one time with your teen.": "Kom ons dink aan maniere om een-tot-een-tyd met jou tiener te bestee.", + "What could you do to spend one-on-one time with your teen?": "Wat kan jy doen om een-tot-een-tyd met jou tiener te deur te bring?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Voel dit asof jy GEEN TYD het nie en dat jy uitgeput is? Onthou om ook aan maniere te dink wat nie ekstra tyd in beslag neem nie.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Dit mag ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat jy as ouer dit wil probeer.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.\n\nOnthou, jy verdien elke keer ’n @global.parent_point as jy vir jouself sorg – jy maak saak!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Selfsorgaktiwiteite\n* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Deel idees!\n\nWat kan jy doen om een-tot-een-tyd met jou tieners deur te bring?\n\nVoel jy asof jy GEEN TYD het nie en dat jy uitgeput is? Dink aan idees vir een-tot-een-tyd wat nie ekstra tyd verg nie, soos om saam na die winkel toe te stap.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Dit kan ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat julle as ouers dit wil probeer.", + "DAY - Try to do it every day": "DAG – Probeer om dit elke dag te doen", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Kry 5 minute (of meer!) per dag wanneer jou tiener nie iets anders het wat hulle wil doen nie.", + "PLAY - Let your teen choose": "SPEEL – Laat jou tiener kies", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Sê vir jou tiener dat jy graag tyd met hulle wil deurbring en dat hulle kan kies wat om te doen of waaroor om te gesels. Hulle mag dalk aan die begin dink dis vreemd, maar hulle sal hierdie spesiale tyd saam met jou begin geniet!", + "STAY - Focus on your teen": "BLY – Fokus op jou tiener", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Skakel die TV af en sit fone eenkant. Kyk vir jou tiener. Knik, of sê “Ek verstaan” om te wys jy gee regtig aandag. Aanvaar wat hulle sê sonder om hulle te veroordeel.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Een-tot-een-tyd kan vir jou ook lekker wees! Dit kan jou selfs minder gespanne laat voel.", + "Great!": "Wonderlik!", + "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ek weet die lewe kan moeilik wees. Ek is trots op jou.\n\nHoe jy ook al voel, dit is wonderlik dat jy hier is!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Ons is so trots op julle. Julle het wilskrag, moed en liefde vir jul gesinne gewys. Ouers is ongelooflik. Julle is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier julself!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Ons is so trots op jou. Jy het wilskrag, moed en liefde vir jou gesin gewys. Ouers is ongelooflik. Jy is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier jouself!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer.\n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie en beplan jou toekomstige ouerondersteuning.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer. \n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie, en beplan jou toekomstige @global.parent_app-steun.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Goeiedag, almal.\n\nDie onderwerp vir vandag is viering en volgende stappe.\n\nDit was ongelooflik. Dit was wonderlik om julle op hierdie reis te hê. Vandag vier ons ons reis saam.\n\nVandag vier ons alles wat ons deur die hele ervaring geleer het.", + "Today you will celebrate, look back and look ahead:": "Vandag gaan jy vier, terugkyk en vorentoe kyk:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Nadenke en bespreking\n* Hulpmiddels: Hoe om mekaar te ondersteun\nKOM BYMEKAAR – SKAKEL – STUUR ’N TEKS – DEEL\n* Beplanning van ondersteuning", + "Today you celebrate and reflect on your experiences.": "Vandag vier jy, en dink na oor jou ervarings.", + "End of programme check-in": "Programeinde check-in", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Jy het @global.parent_app vir die afgelope maande gebruik, maar ouerskap van ’n tiener is ’n langdurige proses! Die volgende vrae oor jou ouerskap-ervarings sal ons help om jou ouerskap te assesseer.\n\nWees eerlik. Onthou dat miljoene ouers soos jy voel, en ons almal verdien ondersteuning. Jy is nie alleen nie!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Dit kom voor dat jy reeds die programeinde check-in voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", + "Let's talk about what has changed.": "Kom ons gesels oor wat verander het.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Bespreek onder mekaar:\n* Wat het in jou gesin verander?\n* Wat het jy gedoen waarop jy trots is?\n\nOnthou om mekaar te prys en aan te moedig!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Beplan hoe julle mekaar vorentoe sal ondersteun. \n\nJy kan ander gesinne se idees gebruik, of jou eie idees uitdink!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Jy en jou gesin het so baie geleer. Kom ons dink terug en kyk wat verander het.", + "Reflect": "Dink na", + "Listen and reflect": "Luister en dink na", + "Read and reflect": "Lees en dink na", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Sluit oë en ontspan.\n\nDink aan jou gesinslewe voordat jy jou reis met hierdie toep begin het.\n\nDink terug aan vaardighede wat jy aangeleer het:\n* Selfsorg\n* Een-tot-een-tyd\n* Lof\n* Positiewe instruksies\n* Hantering van spanning\n* Gesinsbegroting\n* Reëls\n* Kalm gevolge\n* Probleemoplossing\n* Tienerveiligheid\n* Hantering van krisisse\n\nDink na oor die reis – hoe was dit vir jou om:\n* Idees en ondervindings te deel\n* Na te dink oor die stories, en daaruit te leer\n* Vaardighede saam met jou tiener te oefen\n\nHet enigiets vir jou en jou gesin verander?\n\nWat het jy nodig om die vaardighede aan te hou gebruik?", + "MEET": "KOM BYMEKAAR", + "Keep meeting regularly to give each other parenting support.": "Kom gereeld bymekaar om aan mekaar ouerondersteuning te gee.", + "CALL": "SKAKEL", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Wees ‘ouerskapsvriende’ wat mekaar kan skakel wanneer julle ontsteld is en nie weet wat om te doen nie.", + "TEXT": "STUUR TEKSBOODSKAPPE", + "Text each other every week to share what you’ve done well.": "Stuur elke week vir mekaar teksboodskappe om dit wat julle goed gedoen het, te deel.", + "SHARE": "DEEL", + "Share @global.parent_app and help other families start their journey.": "Deel @global.parent_app en help ander gesinne om hul reis te begin.", + "Fantastic! We are proud of you for all you have done over the past weeks.": "Wonderlik! Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", + "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Ons is jammer dis ’n moeilike dag. Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.\n\nWatter gevolg sal hier help?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Gevolge is nie heeltemal dieselfde as straf nie: hulle gee ons tieners ’n kans om vir hul optredes verantwoordelikheid te leer neem.\n\nEn dit is meer beheersd EN effektief as om te slaan of te skree!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.\n\nWatter gevolg sal hier help?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Gevolge is meer suksesvol as jy dit vooraf met tieners bespreek en met die tieners ooreenkom, voordat jy dit toepas.\n\nEn gevolge is nie net negatief nie... Julle kan ook ooreenkom op GOEIE gevolge vir GOEIE optredes om meer positiewe gedrag te sien!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.", + "What consequence would help here?": "Watter gevolg sal hier help?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.\n\nWatter positiewe gevolge sal hier help?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Julle tuis oefenwerk hierdie week is om met jou tiener te gesels oor EEN negatiewe gevolg en EEN positiewe gevolg.\n\nGevolge moet: \nREGVERDIG wees (nie te hewige straf nie)\nONMIDDELLIK wees (doen dit dadelik)\nKONSEKWENT wees (elke keer dieselfde)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Negatiewe gedrag: Kom na die ooreengekome tyd huis toe.\n\nNegatiewe gevolg: Kan nie die volgende dag vriende sien nie.\n\nNegatiewe gedrag: Praat ongeskik. \n\nNegatiewe gevolg: Skryf ’n brief om verskoning te vra.\n \nPositiewe gedrag: Help met inkopies.\n\nPositiewe gevolg: ’n Ekstra 30 minute vir ’n lekker aktiwiteit van hul keuse. \n\nPositiewe gedrag: Help om jonger broers of susters op te pas.\n\nPositiewe gevolg: Een ekstra uur saam met vriende oor die naweek.", + "introduce a consequence together": "kom oor 'n gevolg ooreen", + "Did you have any challenges when trying to introduce a consequence together?": "Het jy enige uitdagings ervaar toe julle probeer het om saam oor ’n gevolg oor een te koml?", + "What was difficult for you about introducing a consequence with your teen?": "Wat was vir jou moeilik toe jy ’n gevolg saam met jou tiener in te stel?", + "I got very angry when my teen broke the rule.": "Ek het baie kwaad geword toe my tiener die reël gebreek het.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Wanneer ons ’n pouse neem voordat ons reageer, help dit ons om te kalmeer en beter te reageer.\n\nVolgende keer dat jou tiener jou kwaad maak, probeer om eers ’n pouse te neem. Selfs ’n paar diep asemhalings kan ’n groot verskil maak!", + "My teen got very angry with me after I gave the consequence.": "My kind of tiener het baie kwaad geword vir my nadat ek die gevolg ingestel het.", + "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Wanneer jou tiener kwaad word, moet jy dalk wegloop totdat julle albei kalm is.\n\nMaak seker dat jou gevolg regverdig en redelik is. Luister na jou tiener se verduideliking, en maak seker dat jy ’n “veiligheid-amnestie” gee as hulle ’n reël om veilig te bly, gebreek het.", + "I introduced the consequence without first discussing it with my teen.": "Ek het die gevolg ingestel sonder om dit eers met my tiener te bespreek.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Kan jy ’n gevolg maak vir as dit weer gebeur? Wanneer ons saam met ons tieners ’n gevolg vasstel, sal die resultaat meer realisties wees en ons tieners sal meer gewillig en in staat wees om die reël te volg.", + "I forgot to follow through with the consequence.": "Ek het vergeet om die gevolg deur te voer.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Ons almal maak foute! Hoe meer konsekwent ons met ons gevolge is, hoe meer sal ons kinders geneig wees om in die toekoms positief op te tree.", + "Even with the consequence, my teen still does not follow the rule.": "Selfs met die gevolg, volg my tiener nog nie die reël nie.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "As jou tiener die reëls bly breek, moet jy dalk meer positiewe tyd met hulle spandeer.\n\nProbeer om voort te gaan met jou ander doelwitte – soos selfsorg, een-tot-een-tyd en lof. Al hierdie vaardighede sal bydra om jou tiener meer geliefd en veilig te laat voel... en jy sal minder gestres wees!", + "We only created a negative consequence, not a positive consequence.": "Ons het net ’n negatiewe gevolg daargestel, nie ’n positiewe gevolg nie.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Dit kan soms moeilik wees om aan positiewe gevolge te dink. Positiewe gevolge sal jou tiener aanmoedig om meer verantwoordelikheid te neem, en jy sal die verskil sien!", + "My teen suggested being hit as a negative consequence.": "My tiener het ’n pakslae as negatiewe gevolg voorgestel.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Tieners is dalk daaraan gewoond dat ’n pakslae die enigste gevolg is as die reëls gebreek word. \n\nDink saam aan ’n paar kalm gevolge wat hulle kan help verstaan dat hulle iets verkeerds gedoen het. Dit sal meer doeltreffend wees en sal positiewe voorbeelde stel!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel.", + "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Jy kan jou tiener help verstaan dat daar gevolge is wanneer ’n gesin se reëls oortree word. \n\nMaar HOE jy dit doen, maak saak. \n\nOm gevolge reg te hanteer, help tieners om hul beter te gedra en sorg vir ’n kalmer gesinslewe...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Goeiedag, almal. \n\nVandag se onderwerp is kalm gevolge.\n\nDit is belangrik dat, wanneer ons gevolge aan ons tieners bekendstel, ons hulle betrek, maar dit is ook belangrik dat ons kalm bly wanneer ons gevolge bekendstel.\n\nDit sal ons help om saam te stem om kalm gevolge aan ons tieners bekend te stel en ons tieners sal die gevolge maklik onthou wanneer hulle betrek word en dit sal hulle verantwoordelik maak.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Tieners oortree dikwels reëls. Grootword is ’n moeilike tyd wanneer hulle leer wie hulle is.\n\nGelukkig is daar maniere om jou tiener te dissiplineer sonder om kwaad te raak of geweld te gebruik....en dit werk goed!\n\nWanneer kalm gevolge gegee word, help dit om ons kinders verantwoordelikheid te leer vir wat hulle doen – goed en sleg.\n\nHier is ’n paar voorbeelde – stel jou voor jy is die ouer:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Kalm gevolge behoort... \n\nREGVERDIG te wees: Nie te hewig nie en jy kan dit in werklikheid uitvoer \n\nONMIDDELLIK te gebeur: Gee dit so gou as moontlik \n\nKONSEKWENT te wees: Elke keer dieselfde gevolg", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Beplan ’n kalm gevolg vir jou tieners wat tydens aandete met mekaar argumenteer. Onthou dit moet:\n \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Kon jy een positiewe en een negatiewe gevolg van ’n sekere optrede saam met jou tiener uitdink?", + "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Voltooi die werksessie en probeer om saam met jou tiener een positiewe en een negatiewe gevolg van ’n sekere optrede te vind.", + "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Hallo, @fields.user_name! Vandag vier ons twee maande wat jy @global.parent_app gebruik! \n\nJy doen uitstekend! Hierdie week se werkswinkel sal jou help om te weet wat om te doen wanneer jou tiener nie die huisreëls nakom nie.", + "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Hallo, @fields.group_name! Vandag vier ons twee maande wat jy @global.parent_app gebruik! \n\nJy doen uitstekend! Hierdie week se werkswinkel sal jou help om te weet wat om te doen wanneer jou tiener nie die huisreëls nakom nie.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Welgedaan met jou gebruik van @global.parent_app. Jy het al 6 ouerskaphulpmiddels gekry!\n\nDoen die volgende werksessie om nog ’n ouerskaphulpmiddel te kry!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Kalm gevolge help jou tiener regtig om die reëls goed te volg – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy soveel toewyding aan jou gesin bewys.", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "Welgedaan dat jy die @local.workshop_data.in_text_title voltooi het. Môre kan jy 'n nuwe werkswinkel aanpak om jou te help om te ontspan, geniet en nuttige vaardighede aan te leer!", + "Why did giving a consequence this way not work well?": "Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "Ja, so ’n hewige reaksie het almal net meer kwaad en ontsteld gemaak.", + "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Kom ons lees wat met @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver gebeur het:", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Kyk hoe laat is dit! Jy is laat!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – gaan slaap maar weer”. \n\n@global.w_consequence_male_caregiver: “Dis BAIE later as wat jy veronderstel was om by die huis te wees!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, jy hou nie by ons reël nie! Ek gaan jou ’n pakslae gee!”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Dis onregverdig! Julle luister nooit na my nie!! Ek haat julle!”", + "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Kom ons keer terug na @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver", + "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ek is besorg daaroor dat jy steeds dikwels laat huis toe kom, @global.w_consequence_teen_boy_1. Wat kan ons doen om jou te help onthou om betyds huis toe te kom?”\n\n@global.w_consequence_teen_boy_1: “As ek betyds huis toe kom, kan ek dan miskien 30 minute later as gewoonlik wakkerbly?”", + "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Dit is ’n goeie idee! En wat moet ons doen as jy nie die reël nakom nie?\n\n@global.w_consequence_teen_boy_1 (mompel): “Mgmluuhm”", + "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Ag kom nou, ek weet jy het ’n paar idees.”\n\n @global.w_consequence_teen_boy_1: “Nou goed…. Wat van: ek moet my huiswerk doen?”", + "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Jy moet in elk geval jou huiswerk doen. As jy die reël vergeet, is dit regverdig dat jy jou vriende nie die volgende dag sal kan sien nie.”\n\n@global.w_consequence_teen_boy_1: “Oukei, @global.w_consequence_male_caregiver.”", + "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Die volgende dag...\n\n @global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Hoe laat is dit? Dit is laat!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – jy kan maar weer gaan slaap.” \n\n@global.w_consequence_male_caregiver: “Dit is BAIE later as wat jy veronderstel was om by die huis te wees!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, dit is middernag en jy het later huis toe gekom as wat ons ooreengekom het. Wat ook al die rede is, jy moet verstaan dat dit nie aanvaarbaar is nie.Ek en @global.w_consequence_female_caregiver was regtig bekommerd.”", + "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “My vriende wou hê ek moes langer bly. Hulle het my ’n baba genoem omdat ek al huis toe moes gaan.”\n\n@global.w_consequence_male_caregiver: “Ek weet dit kan moeilik wees om vir jou vriende nee te sê. Kom ons praat môreoggend hieroor wanneer ons uitgerus is.”", + "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ek is jammer dat ek jou bekommerd laat word het, en ook@global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Dankie. Gaan slaap nou, maar jy moet baie mooi verstaan, aangesien jy later huis toe gekom het as wat ons ooreengekom het, sal jy nie toegelaat word om môreaand uit te gaan nie.”", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Bespreek saam: \n* Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver was kwaad", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver het nie vir @global.w_consequence_teen_boy_1 laat verduidelik nie", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Die gevolg is nie vooraf met @global.w_consequence_teen_boy_1 bespreek nie", + "The consequence was too strong": "Die gevolg was te hewig", + "Giving a consequence this way did not work well because...": "’n Gevolg wat so gegee is, het nie goed gewerk nie, want...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Bespreek saam:\n* Watter reëls oortree jou tieners dikwels?\n* Watter gevolg sou jy kon gebruik vir elke spesifieke reël wat oortree word?\n\nGevolge moet: \nREGVERDIG wees (nie te straf nie)\nONMIDDELLIK wees (doen dit dadelik) \nKONSEKWENT wees (elke keer dieselfde).\n\nPrys mekaar en moedig mekaar aan – ons kan mekaar sterk maak!", + "Let's talk about this story": "Kom ons praat oor hierdie storie", + "Why did using a consequence work well this time?": "Waarom het die gebruik van ’n gevolg hierdie keer goed gewerk?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver het die gevolge bespreek toe hulle albei kalm was", + "They agreed on consequences together": "Hulle het saam oor die gevolge ooreengekom", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver het kalm maar ferm gereageer toe@global.w_consequence_teen_boy_1 die reël oortree het", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver het na @global.w_consequence_teen_boy_1 geluister", + "The consequence was realistic and appropriate": "Die gevolg was realisties en toepaslik", + "Using a consequence worked well this time because...": "Dit het goed gewerk om hierdie keer ’n gevolg te gebruik, want...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Dis belangrik hoe jy kalm gevolge voorstel. Onthou, wanneer jy jou tiener betrek, gaan dinge gewoonlik beter!", + "EXPLAIN": "VERDUIDELIK", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Maak seker julle is albei kalm. Haal ’n paar keer diep asem. Verduidelik aan jou tiener waarom jy oor hulle gedrag bekommerd is.\n\nVerduidelik die redes waarom die reël saak maak. Jy kan jou gevoelens deel – dit is oukei om te sê jy is teleurgesteld.", + "AGREE": "STEM OOREEN", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Beplan saam met jou tiener wat die gevolge sal wees as die reël nie nagekom word nie.\n\nVra hulle vir idees. Gesels totdat julle oor iets realisties saamstem.\n\nStel ’n gevolg vas vir wanneer die reël NIE nagekom word nie en ’n voorreg vir wanneer hulle WEL die reël nakom.", + "ACT": "TREE OP", + "When your teen follows the rule, give praise and privileges!": "Wanneer jou tiener die reël nakom, prys hulle en gee voorregte!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Hulle sal voel hulle word gerespekteer en gewaardeer. Hoe meer ons hulle prys, hoe meer sal hulle daardie goeie gedrag toon!", + "When your teen does not follow the rule, follow through with the consequence.": "Wanneer jou tiener nie die reël nakom nie, druk deur met die gevolg.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Wanneer jou tiener die reël oortree, gee die gevolg op ’n kalm manier. Dit moet REGVERDIG (nie te straf nie), ONMIDDELLIK (doen dit dadelik) en KONSEKWENT (elke keer dieselfde) wees.", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Wat sou ’n kalm gevolg wees vir jou tieners wat tydens aandete met mekaar argumenteer? \n\nOnthou, dit moet: \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", + "Not seeing any friends for a month": "Om vir ’n maand geen vriende te mag sien nie", + "This may be hard to do for you and also too harsh!": "Dit mag dalk vir jou moeilik wees, en ook 'n te hewige straf!", + "Cancelling their birthday plans in a month’s time": "Om hul verjaarsdagplanne vir oor ’n maand te kanselleer", + "This is too far in the future, and too harsh as well!": "Dit is te ver in die toekoms, en ook te hewig!", + "No TV this evening": "Geen TV vanaand nie", + "Perfect, this sounds fair and can be done straight away": "Perfek, dit klink regverdig en kan onmiddellik gebeur", + "Self-care is a key parenting tool.": "Selfsorg is ’n sleutelhulpmiddel vir ouerskap.", + "So good to hear you are feeling well today. You are incredible!": "Dis so lekker om te hoor jy voel vandag goed. Jy is ongelooflik!", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Ek is jammer dat dinge nou moeilik gaan. Haal diep asem en weet dat jy waardeer word.", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en julle help om vir die toekoms te beplan. \n\nMiskien kan julle saam partytjiekos beplan, en musiek reghou as julle dalk wil dans!", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en jy kan die ondersteuning kies wat jy vir die toekoms wil hê.\n\nJy kan iets lekker voorberei om dit te vier – iets wat jy graag eet, of musiek waarna jy graag luister!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Kies saam met jou tiener een van hierdie situasies ( of dink self een uit!). Kyk na die tekenprent, en bespreek wat julle saam sou doen indien dit met ’n vriend of in julle gesin sou gebeur.\n\n En onthou: ASEM IN – LUISTER – DINK", + "prepare for a possible crisis with their teens": "berei vir ’n moontlike krisis met hul tieners voor", + "prepare for a possible crisis with your teen": "berei vir ’n moontlike krisis met jou tiener voor", + "My teen told me that something serious happened to them and I did not know how to handle it.": "My tiener het my vertel dat iets ernstigs met hulle gebeur het en ek het nie geweet hoe om dit te hanteer nie.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Prys jou tiener omdat hulle jou vertel het. Dit is nie maklik om dit te doen nie! Onthou dat jy al die vaardighede wat jy uit jou gereedskapskas gekies het, kan gebruik: neem ’n blaaskans, gebruik die vier stappe van probleemoplossing en reik uit om die ondersteuning te kry wat jy en jou tiener benodig!", + "Get support": "Kry ondersteuning", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Die gesprek het my baie ongemaklik laat voel omdat dit my herinner het aan ’n negatiewe ervaring wat ek gehad het.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Wanneer ons aan sulke ervarings herinner word, is dit normaal om ontsteld of kwaad te voel. Dit is belangrik om ’n tyd te vind wanneer jy kalm is, sodat jy kan dink aan watter ondersteuning jy nodig het. Dalk moet jy met iemand praat.", + "One of us did not feel comfortable.": "Een van ons het nie gemaklik gevoel nie.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Dit is moeilike dinge om oor te praat. Soek ’n ontspannende tyd daarvoor. Ons weet dit is baie makliker om nie oor hierdie dinge te praat nie en te hoop dat dit nooit met ons sal gebeur nie. Maar om te leer om krisisse te hanteer, is soos om versekering te bekom; dit is ALTYD die beste om daaraan te dink en voorbereid te wees.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Jou doelwit was om ’n moontlike krisissituasie met jou tiener te bespreek en ’n plan daarvoor te maak.", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Alle gesinne ervaar krisisse. Wanneer ons saam voorberei en weet waar om hulp te kry, VOORDAT iets sleg gebeur, kan ons enige krisis oorkom.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Goeiedag, almal\n\nVandag se onderwerp is die hantering van krisisse.\n\nKrisisse kan enige plek voorkom. Krisisse kan enige tyd voorkom. Daarom is dit belangrik om as gesin planne in plek te hê ingeval enige lid van die gesin hulself in ’n krisissituasie bevind. \n\nDit is belangrik om planne te hê sodat elke lid van die gesin beskerm kan voel. \n\nWanneer ons krisisse hanteer, onthou om stil te gaan staan, asem te haal en jouself kalm te hou. Dit sal jou help om die krisis beter te hanteer.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Dit help om te oefen hoe om ’n krisis te hanteer voordat iets gebeur.\n\nKyk na hierdie vyf krisistye in ’n gesin. Stel jou voor jy is die ouer: Wat sou jy doen?\n\nOnthou: ASEM IN – LUISTER – DINK", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Krisis 1: @global.w_crisis_teen_boy_2 baklei by die skool", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Ek het dit nog nooit voorheen gedoen nie. En nou gaan hulle my skors”", + "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Krisis 2: @global.w_crisis_teen_girl_1 raak swanger", + "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: “@global.w_crisis_male_caregiver_1, ek skaam my. Ek weet nie wat om te doen nie”", + "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Krisis 3: @global.w_crisis_teen_boy_2 maak ’n meisie swanger", + "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: “@global.w_crisis_male_caregiver_2, ek wil nie ’n baba hê nie”", + "How could you respond to @global.w_crisis_teen_boy_2?": "Watter terugvoer kan jy aan @global.w_crisis_teen_boy_2 gee?", + "Crisis 4: Someone in the family gets sick": "Krisis 4: Iemand in die familie raak siek", + "\"The test said I have HIV. I’m scared I’m going to die\"": "“Die toets wys ek het MIV. Ek is bang ek gaan dood”", + "How could you respond in this situation?": "Hoe kan jy in hierdie situasie reageer?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Krisis 5: @global.w_crisis_teen_girl_1 word onder druk geplaas om met haar kêrel seks te hê", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: “Ek wou nie regtig nie. Nou gaan ek swanger raak of siek raak. @global.w_crisis_female_caregiver, ek is baie bang...”", + "How could you respond to @global.w_crisis_teen_girl_1?": "Watter terugvoer kan jy aan @global.w_crisis_teen_girl_1 gee?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Onthou om mekaar te ondersteun en aan te moedig. In ’n krisis is dit moeilik om kalm te bly en na mekaar te luister – ons is trots op jou.", + "Have you discussed with your teen what you would do in a crisis situation?": "Het jy met jou tiener bespreek wat jy in ’n krisissituasie sou doen?", + "Crisis Examples": "Voorbeelde van krisisse", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Jy is ’n toegewyde ouer. Wees trots op jouself – dit is ’n groot prestasie op sigself!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Dis so goed dat jy saam met ons op hierdie ouerskapreis is!\n\nVoltooi die @local.workshop_data.in_text_title en leer wat die beste manier is om te reageer wanneer jou tiener jou die nodigste het.", + "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Hallo, @fields.user_name! 'n Krisis kan met enigiemand gebeur - dit help baie om voorbereid te wees. \n\nHierdie werkswinkel sal jou wys hoe.", + "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Hallo, @fields.group_name! 'n Krisis kan met enigiemand gebeur - dit help baie om voorbereid te wees. \n\nHierdie werkswinkel sal jou wys hoe.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ons weet nooit wanneer ’n krisis kan plaasvind nie, maar ons KAN voorbereid wees!\n\nBegin die volgende werksessie om te ontdek hoe jy dit saam met jou tiener kan doen.", + "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Môre sal die laaste @global.parent_app-slypskool vir jou gereed wees.\n\nProbeer om @local.workshop_data.in_text_title te voltooi voordat jy met die nuwe slypskool begin. Op hierdie manier kan jy jou ouerskapvaardighede voltooi en besluit wat jy volgende moet doen!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot die laaste slypskool kry om na te dink oor jou @global.parent_app-reis en wat jy volgende kan doen!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ja, @global.w_crisis_female_caregiver het werklik al daardie vaardighede gebruik – en jy kan ook!", + "All these skills can help in a crisis.": "Al hierdie vaardighede kan help in ’n krisis.", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "’n Krisis kan met enigeen gebeur. \n\nKom ons kyk wat het met @global.w_crisis_teen_girl_1 en @global.w_crisis_female_caregiver gebeur:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Foeitog my kind, jy lyk regtig ontsteld, wil jy vir my vertel wat gebeur het?”", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Dit is my oom, hy...hy... hy het aan my gevat.”\n\n@global.w_crisis_female_caregiver (dink): “Haal diep asem...Wat het my kind nodig? Sy het nodig dat ek kalm bly en luister” \n\n@global.w_crisis_female_caregiver: “Kom sit hier langs my. Neem jou tyd, ek luister.”", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Dis waar, hy...hy... het my gedwing om dit te doen! Hy het my gedwing om met hom seks te hê! Ek wou nie, ek sweer, en ek het selfs NEE gesê, maar hy het gesê ek sal in die moeilikheid kom.” \n\n@global.w_crisis_female_caregiver: “Dankie dat jy dit met my deel. Jy is nie in die moeilikheid nie. Dis nie jou skuld nie.”", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: “Gister het jy gaan kuier by @global.w_crisis_adult_friend. Hy het net hier aangekom, en dis toe dit gebeur het.”\n\n@global.w_crisis_female_caregiver: “Dis oukei, my kind, ek glo jou. Dis ’n groot ding en ons sal ’n manier kry om die nodige hulp te kry. Waar kan ons gaan hulp vra?”\n\n@global.w_crisis_teen_girl_1: “My skool?”", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Aag, ek weet, kom ons gaan kliniek toe. Hulle sal weet wat ons kan doen om jou te help. Klink dit vir jou oukei?”\n\n@global.w_crisis_teen_girl_1: “Ja… Oukei… Maar sal jy saam met my gaan?”", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Natuurlik sal ek. En@global.w_crisis_teen_girl_1? Onthou, dis nie jou skuld nie. Ek is lief vir jou. Jy is ’n goeie persoon. Ons sal hierdeur kom.”", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "’n Ander probleem waaroor baie ouers bekommerd is, is geweld en misdaad. Kom ons kyk saam na ’n voorbeeld.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: “@global.w_crisis_teen_boy_1, Jy lyk van gister af bekommerd. Wat is verkeerd?”", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Gister was ek en my vriende by ’n sokkerwedstryd. ’n Paar dronk ouens het ’n bakleiery met my vriend begin.” \n\n@global.w_crisis_male_caregiver_1: “Gaan aan, ek luister. Ek hoop jy het nie baklei nie?”", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Ek wou nie, maar ek kon nie net daar staan en kyk hoe hulle my vriend slaan nie, daarom....”\n\n@global.w_crisis_male_caregiver_1 :“Het jy dus baklei om jou vriend te help verdedig?”", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Almal het baklei. Ek het iemand op die veld sien lê, in ’n plas bloed. Dit het vir my gelyk hy is... dood.”", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ek is bly jy vertel my hiervan, @global.w_crisis_teen_boy_1. Kom sit by my, dan bespreek ons of ons die polisie of iemand anders wat kan help, moet betrek.”", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Dankie, @global.w_crisis_male_caregiver_1”\n\n@global.w_crisis_male_caregiver_1: “Ons sal hierdeur kom. Onthou, ons sal jou as ’n gesin ondersteun.”", + "Every small thing you do matters. We hope you are proud of yourself too.": "Elke klein dingetjie wat jy doen, maak saak. Ons hoop jy is ook trots op jouself.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking\n* Storie en bespreking\n* Hulpmiddels: Hoe om ’n krisis te hanteer\nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke \n* Storie en nadenke\n* Hulpmiddels: Hoe om ’n krisis te hanteer \nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Dit was so ’n moeilike situasie vir @global.w_crisis_teen_girl_1 en haar@global.w_crisis_female_caregiver! Dit kan met seuns én meisies gebeur.", + "What skills did @global.w_crisis_female_caregiver use?": "Watter vaardighede het @global.w_crisis_female_caregiver gebruik?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Dit was ’n baie moeilike situasie vir @global.w_crisis_teen_boy_1 en sy @global.w_crisis_male_caregiver_1!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "Watter vaardighede het @global.w_crisis_male_caregiver_1 gebruik?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Krisisse kan ons kwaad of hulpeloos laat voel. Maar dít is wanneer ons tieners regtig nodig het dat ons asemhaal, luister en dink.", + "BREATHE": "ASEM IN", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Bly kalm. Vra jouself af ‘wat het my tiener op hierdie oomblik nodig?’", + "LISTEN": "LUISTER", + "Tell them you are there for them and love them.": "Sê vir hulle jy is daar vir hulle, en is lief vir hulle.", + "THINK": "DINK", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Gesels met jou tiener. Wat kan dalk die situasie help? Jy sal dalk nou dadelik planne moet beraam, en dan langtermynplanne later.", + "You can be proud of yourself for exploring ways to get help!": "Wees trots op jouself omdat jy maniere soek om hulp te kry!", + "How are you feeling today?": "Hoe voel jy vandag?", + "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Dis gaaf dat dit vandag goed gaan. Wat is dit wat vandag goed was? Onthou om jouself daarvoor te prys.", + "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Jammer om te hoor dat jy nie vandag goed voel nie. Dis goed dat jy sulke emosies uitspreek en probeer om kalm en goedhartig teenoor jouself te wees. Jy stel ’n baie mooi voorbeeld vir jou gesin.", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Hierdie week se tuisoefeninge is om vir jou tiener positiewe opdragte te gee.\n\nOnthou – KOM BY, WEES POSITIEF, WEES DUIDELIK = KRY PRESIES WAT JY WIL HÊ (sover dit met ’n tiener moontlik is!)", "Did you have any challenges?": "Het jy enige uitdagings ervaar?", "What challenge did you have?": "Watter uitdaging het jy ervaar?", "My teenager did not want to follow the instruction.": "My tiener wou nie die opdrag uitvoer nie.", @@ -1307,9 +766,77 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Wonderlik! Deur verantwoordelikhede te deel, sal jy meer tyd hê om iets aangenaam saam met jou tiener te doen – dit is so belangrik!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "Ja, dit neem tyd om daaraan gewoond te raak om positiewe opdragte te gee – dit is regtig die moeite werd om weer te probeer! Dink aan die gedrag wat jy wil hê jou tiener meer moet openbaar, en dink aan positiewe maniere om daardie opdrag te gee!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Dit is moeilik om opdragte uit te dink terwyl ons nog kwaad is. Probeer om ’n tyd te vind wanneer jy kalm is om ’n positiewe opdrag aan jou tiener in te stel.\n\nIn die volgende @global.weekly_workshop sal ons meer praat oor hoe ons, ons emosies kan hanteer! Jy kan meer ontspanningsaktiwiteite vind: @data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak. Ons het opgemerk dat jy op die@data.habit.money.in_text_title getik het – welgedaan dat jy onthou het!", - "Your goal was to make a family budget and savings plan.": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Dankie dat jy jou ervarings gedeel het! Welgedaan dat jy gedink het oor hoe jy saam met jou gesin kan begroot en spaar. Dit sal julle werklik help om jul gesinsdoelwitte te bereik. \n\nSaam kan julle soveel goeie dinge bereik!", + "Which of the tips helped you?": "Watter van die wenke het jou gehelp?", + "GET REAL – Can your teen do what you are about to ask?": "WEES REALISTIES – Kan jou tiener doen wat jy gaan vra?", + "GET POSITIVE – Use positive words and praise them!": "WEES POSITIEF – Gebruik positiewe woorde en prys hulle!", + "GET CLEAR – Be clear and specific!": "WEES DUIDELIK – Wees duidelik en spesifiek!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Wonderlik! Wanneer ons ons tiener vra om iets te doen wat realisties is, is dit vir hulle makliker om daarin te slaag.", + "When we praise them, our teens feel encouraged to listen to us again!": "Wanneer ons hulle prys, voel ons tieners aangemoedig om weer na ons te luister!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Fantasties! Wanneer ons vooruit dink aan spesifieke opdragte om vir ons tiener te gee, word ons instruksies baie makliker om te volg!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te poog.", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Dankie dat jy deel! Welgedaan dat jy jou tiener positiewe instruksies probeer gee het en dat jy ’n positiewe verhouding met jou tiener wil bou.\n\nJou tiener verdien lof en JY ook!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Fokus op die positiewe! \n\nOm vir ons tieners te sê wat ons WIL hê hulle moet doen, werk beter as om vir hulle te sê om OP TE HOU met iets wat hulle doen.\n\nJy sal die verskil sien.", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Goeiedag, goeiedag, almal.\n\nOns onderwerp vandag is positiewe opdragte.\n \nDit is belangrik om positiewe opdragte aan ons kinders te gee,want wanneer ons vir hulle positiewe opdragte gee, weet hulle wat ons van hulle verwag om te doen, en hulle doen dit soos ons wil hê hulle moet dit doen.\n\nSo, uiteindelik hou dit almal gelukkig.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Jy't nog nie enige punte @data.habit.instruct_positively.title @global.parent_points gemerk nie. \n\nProbeer dit vandag nog!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Jy het die @global.parent_point @data.habit.instruct_positively.title reeds een keer gemerk – jy maak dus goeie vordering.", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.": "Jy het reeds die @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively kere gemerk – so jy maak goeie vordering.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Praat vriendelik met jouself oor die goeie werk wat jy doen. Daar bestaan nie iets soos ’n perfekte ouer nie, en ons dink jy doen goed!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Positiewe opdragte help om al hoe meer goeie gedrag te sien!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar idees te kry oor hoe dit in jou gesin kan werk.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Hallo, @fields.user_name! Veels geluk dat jy @global.parent_app week 4 begin. \n\nHierdie week se werkswinkel gaan oor hoe om jou kanse te verbeter om jou tiener sover te kry om te doen wat jy vra.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Hallo, @fields.group_name! Veels geluk dat jy @global.parent_app week 4 begin. \n\nHierdie week se werkswinkel gaan oor hoe om jou kanse te verbeter om jou tiener sover te kry om te doen wat jy vra.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Luister jou tiener altyd na jou? Indien nie (soos die res van ons), kyk na die werksessie van hierdie week om uit te vind hoe positiewe opdragte kan help – baie.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Soos gewoonlik kry jy môre toegang tot ’n nuwe slypskool. Dit sal help as jy die vorige slypskool voor die tyd voltooi.\n\nSommige ouers gebruik die toep terwyl hulle werk toe ry. Waarom gebruik jy die toep nie as jy ’n paar minute het nie?\n\nWeereens baie dankie vir jou gebruik van @global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Veels geluk met jou voltooiing van @local.workshop_data.in_text_title.\n\nMôre staan ’n nuwe slypskool vir jou gereed: jy sal ’n groot verskil sien deur klein veranderinge aan te bring!", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?", + "What could @global.w_instruct_female_caregiver have done differently?": "Wat kon @global.w_instruct_female_caregiver anders gedoen het?", + "Said something nice first": "Eers iets moois gesê het", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het", + "Told @global.w_instruct_teen_girl what she wants her to do": "Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Waarom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver kon kalm bly", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Kom ons kyk wat gebeur as @global.w_instruct_female_caregiver vir @global.w_instruct_teen_girl sê “MOENIE”:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver was besig om huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriend dansbewegings geoefen het.\n \n@global.w_instruct_female_caregiver: “Moenie so mors terwyl ek die huis skoonmaak nie. Jy is in die pad!”", + "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Maar ek moet oefen vir die skool se kompetisie. Jy laat my nooit toe om iets te doen nie.” \n\n@global.w_instruct_female_caregiver: “Moenie teëpraat nie!”", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Hoekom word daar altyd op my geskree????”\n\n @global.w_instruct_female_caregiver by haarself: “Daardie kind veroorsaak altyd moeilikheid.”", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Dankie dat jy saam gedink het! \n\nKom ons gaan terug in tyd en kyk wat gebeur as @global.w_instruct_female_caregiver ’n positiewe opdrag gee:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver was besig om die huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriende dansbewegings geoefen het. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, dis lekker om te sien hoe jy jou dansbewegings saam met jou vriend oefen. Gaan doen dit asseblief buite sodat ek die huis kan klaar skoonmaak. Dan kan jy vir my jou dans wys.”\n\n@global.w_instruct_teen_girl: “Okei, @global.w_instruct_female_caregiver!”", + "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Dankie dat jy buite geoefen het terwyl ek klaar skoongemaak het, @global.w_instruct_teen_girl. Nou het ek tyd om na jou dans te kyk.”", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: “Jinne, @global.w_instruct_teen_girl! Jy dans baie goed !”", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Gedagte-eksperiment\n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Probeer dit! \n* Voorstelle om tuis te oefen", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Gedagte-eksperiment. \n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Voorstelle om tuis te oefen", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Bespreek onder mekaar.\n\n* Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?\n* Wat kon @global.w_instruct_female_caregiver verskillend gedoen het?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver kon...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Eers iets moois gesê het \n* Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het\n* Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", + "Let's discuss what happened this time.": "Kom ons bespreek wat hierdie keer gebeur het.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Bespreek saam: \n\n* Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?\n* Hoekom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", + "Positive instructions can work with your teen too!": "Positiewe opdragte kan met jou tiener ook werk!", + "It worked better this time because...": "Dit het hierdie keer beter gewerk, want...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar\n* @global.w_instruct_female_caregiver kon kalm bly\n* @global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", + "Let’s do a thought experiment!": "Kom ons doen ’n gedagte-eksperiment!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "MOENIE AAN ’N OLIFANT DINK NIE \n\nWaaraan dink jy?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Jy HET waarskynlik aan ’n olifant gedink...\n\n‘Moenie’-opdragte laat tieners juis aan daardie ding dink. \n\nSoms verstaan hulle nie wat ons WEL van hulle verwag nie. \n\nHulle hou ook nie daarvan om aangesê te word om iets nie te doen nie (is ons nie maar almal so nie?)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "NOU, DINK AAN ’N JAGLUIPERD!\n\nWaaraan dink jy?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Dis reg! Positiewe, duidelike opdragte help tieners om te fokus op wat hulle behoort te doen. \n\nTieners sal so ook meer voel hulle word gerespekteer, en sal meer geneig wees om te luister.", + "GET REAL": "KOM BY", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Kan jou tiener werklik doen wat jy nou gaan vra? Dit mag dalk vir hulle onmoontlik wees om die hele dag stil te sit en lees, maar die halfuur wanneer jy dit regtig nodig het, is realisties.", + "GET POSITIVE": "WEES POSITIEF", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Glimlag, kyk in hulle oë en gebruik positiewe woorde. Prys hulle sodra hulle begin doen wat jy vra!", + "GET CLEAR": "WEES DUIDELIK", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ons weet dikwels in ons koppe wat ons wil hê, maar ons sê dit nie duidelik genoeg nie. Sê presies wat jy wil hê jou tiener moet doen. Probeer ‘kom asseblief teen 7nm. huis toe’ in plaas van ‘kom betyds huis toe’.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Kom ons oefen REGTE, POSITIEWE en DUIDELIKE opdragte. Oefening sal jou help om suksesvol te wees met jou tiener!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Kies twee mense uit jou groep:\n* Een persoon gee voor om ’n tiener te wees\n* Die ander een gee voor om die tiener se ouer te wees\n* “Ouer”: Gee jou tiener ’n positiewe opdrag terwyl jy hom/haar aanmoedig en prys\n* “Tiener”: Reageer soos wat jy dink ’n tiener hierop sal reageer \n\nBespreek saam hoe dit gegaan het:\n* Hoe het dit jou as “ouer” en as “tiener” laat voel?\n* Kon jy enigiets op ’n beter manier gedoen het?\n\nGee elkeen ’n kans om die “ouer” en die “tiener” te wees, as dit moontlik is. Oefening bring sukses!", + "Examples of positive instructions:": "Voorbeelde van positiewe opdragte:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ek hou van jou musiek. Kan jy dit sagter stel tydens aandete sodat ons kan gesels? Dankie – ek waardeer dit regtig. \n* Dis baie mooi musiek. Wie is die sanger? Skakel asb die musiek af wanneer jy by die huis inkom. Jy kan dit sag in jou kamer speel as jy wil. Dankie!", + "Wonderful, I am so happy! Keep up the good work.": "Wonderlik, ek is so bly! Goeie werk, hou so aan.", + "Sorry that things are difficult. All families struggle. We are here to help!": "Jammer dat dinge moeilik gaan. Alle gesinne sukkel. Ons is hier om te help!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Wat ook al vandag ‘verkeerd’ gegaan het, laat dit gaan en probeer môre weer. Dis oukei!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Stel weer ’n begroting op – hierdie keer SAAM met jou tiener en gesin!\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Stel ’n begroting saam met jou tiener en jou gesin op.\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hersien jou begroting saam met jou tiener en gesin. Dit sal almal daaraan herinner dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "Steps to make a budget": "Stappe om ’n begroting op te stel", "make a budget together with their family": "stel ’n begroting op saam met hul gesin", "Did you have any challenges when making your budget together?": "Het julle enige uitdagings gehad toe julle saam julle begroting opgestel het?", "What whas difficult for you about making your budget together?": "Wat was vir jou moeilik toe julle saam julle begroting opgestel het?", @@ -1321,8 +848,85 @@ "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Ek is jammer om dit te hoor. Ek weet dit kan moeilik wees! Hoekom kyk ons nie weer daarna nie? Jou tiener of ander gesinslede kan aansluit en help!", "My teen did not want to do the budgeting with me.": "My tiener wou nie die begroting saam met my doen nie.", "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Probeer die begroting eers saam met ander volwassenes in jou huis maak. Jou tiener sal dalk begin belangstel in wat julle doen.\n\nOm ’n begroting te maak, kan ernstig klink, maar probeer om dit pret te maak – maak dit ’n speletjie tydens een-tot-een-tyd! Of jy kan probeer om die begroting eers vir @global.w_money_grandma te maak.\n\nOnthou om jou tiener te prys wanneer julle klaar is!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Jy verdien ook lof. Dankie weereens vir jou gebruik van @global.parent_app.. Dit wys dat jy regtig omgee!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Jou doelwit was om jou tiener te prys. Jy het hierdie week op @data.habit.praise_teen.in_text_title getik. Welgedaan dat jy onthou het!", + "Your goal was to make a family budget and savings plan.": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak.", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Dankie dat jy jou ervarings gedeel het! Welgedaan dat jy gedink het oor hoe jy saam met jou gesin kan begroot en spaar. Dit sal julle werklik help om jul gesinsdoelwitte te bereik. \n\nSaam kan julle soveel goeie dinge bereik!", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Baie gesinne verkeer onder spanning weens geld, veral as tieners aanhoudend vir goed vra!\n\nWanneer ons saam ’n begroting opstel, kan ons ooreenkom oor hoe om te bestee EN te bespaar, om spanning te voorkom en ons gesin se doelwitte na te streef.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Goeiedag, almal.\n\nVandag se onderwerp is begrotings. \n\nDit is belangrik om te begroot, maar dis selfs belangriker om die hele gesin by die opstel van ’n begroting te betrek.\n\nWanneer dit saam gedoen word, help dit om die vlak van begrip oor hoe julle as gesin geld bestee en hoeveel julle vir die gesin spaar, te verhoog, en julle kan selfs planne maak oor hoe julle as gesin kan spaar.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe. Jy benodig: \n\n– Papier (of ou koerante of ’n kartonboks) en penne\n– Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed te kry voor ons met die eerste stap begin.", + "A family budget can help @global.w_money_grandma - and YOU!": "’n Gesinsbegroting kan vir @global.w_money_grandma help – en vir JOU!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Jy benodig: \n* Papier (of ou koerante of ’n kartonboks) en penne\n* Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed bymekaar te kry voor ons met die eerste stap begin.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* kos \n* water en elektrisiteit\n* klere \n* rekeninge \n* TV-intekening \n* toiletware \n* haarkapper \n* lugtyd\n* skoolgeld \n* vervoer\n* versekering/polisse \n* medisyne\n* vermaak/sport \n* huur \n* lenings \n* kerk", + "Think about what we spend money on each month.": "Dink oor waaraan ons elke maand ons geld bestee.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Kry ’n stuk papier (of ou koerante of ’n kartonboks) en ’n pen.\n* Teken prentjies van al die goed waarop jy en jou gesin elke maand geld spandeer. \n* Skryf langs elke prentjie hoeveel elke ding elke maand kos. (Dis nie nodig om die syfers te deel as jy nie wil nie.)\n* Tel op hoeveel geld jy elke maand moet bestee.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Wonderlik! Jy is klaar met Stap 1!\n\nKom ons gaan voort!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Praat saam oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Mense sien dinge dikwels nie op dieselfde manier nie. Wanneer ons oor ons behoeftes en begeertes praat, verstaan ons mekaar beter en kan ons saam goeie keuses maak oor hoe om ons geld te bestee.\n\nKyk na jou lys van goed waarop julle geld bestee en bespreek:\n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Dink oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Kyk na jou lys van goed waarop julle geld spandeer en kies: \n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", + "Make a budget!": "Stel ’n begroting op!", + "Make a budget as one big family!": "Stel ’n begroting op as een groot gesin!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Een persoon sal aanbied om sy/haar lys te deel. (as niemand aanbied nie, kan julle saam ’n nuwe lys opstel). \n* Neem rolle aan – party sal volwassenes wees, party sal tieners wees. \n* Besluit wat julle inkomste is vir die maand.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste @global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit saam hoeveel julle op iets wil bestee en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", + "Make a budget as a family!": "Stel as gesin ’n begroting op!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Skryf neer wat julle inkomste vir die maand is.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste@global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit hoeveel julle op iets wil spandeer en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Beplan hoe jy geld kan spaar, sodat jy noodgevalle kan hanteer en jou gesin se doelwitte kan bereik!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "As jy selfs net ’n klein bedraggie vir die toekoms of vir ’n noodgeval kan spaar, sal dit oor tyd ’n groot verskil maak. \n* Voeg ’n sirkel by en noem dit “noodgevalle”.\n* Voeg ’n sirkel by en noem dit “gesin se doelwitte”.\n* Probeer nou jou geld rondskuif sodat jy elke maand ’n bietjie vir elk hiervan kan spaar.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou groep verdien om geprys te word, of hoe?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou gesin verdien om geprys te word, of hoe?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – onthou om hierdie oefening weer saam met jou ander gesinslede te doen – as julle saam oor ’n plan ooreenkom, sal dit ’n reuseverskil maak!", + "Have you talked with your teen about your family budget yet?": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Wanneer jy alleen of oorweldig voel, weet dat jy nie alleen is nie. Daar is ouers regoor die wêreld wat dieselfde uitdagings as jy ondervind.\n\nJy doen elke dag jou bes en ons is almal trots op jou!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Deur jou gesin te betrek by die manier waarop jy jou geld spandeer, kan baie spanning en stryery weggeneem word.\n\nVoltooi die @local.workshop_data.in_text_title om jou gesin met begroting en besparing te help. Dit is eintlik maklik – jy sal sien!", + "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Hallo, @fields.user_name! Jy begin met die tweede maand wat jy @global.parent_app gebruik. Fantasties! \n\nBykans alle gesinne sukkel met geldkwessies, daarom sal hierdie week se werkswinkel jou toerus om jou uitgawes so te beplan dat jy genoeg geld sal hê om deur die maand te kom.", + "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Hallo, @fields.group_name! Jy begin met die tweede maand wat jy @global.parent_app gebruik. Fantasties! \n\nBykans alle gesinne sukkel met geldkwessies, daarom sal hierdie week se werkswinkel jou toerus om jou uitgawes so te beplan dat jy genoeg geld sal hê om deur die maand te kom.", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Voel jy gestres oor geld? Hou jou tiener aan vra vir dinge wat jy nie kan bekostig nie?\n\nHierdie week se werksessie handel oor geld en begroting.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Baie ouers het gesê dat om ’n begroting te maak, vrede in hul huis teruggebring het – dit kan ook vir julle werk.\n\nWeereens baie dankie dat jy so ’n toegewyde ouer is.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Welgedaan met jou voltooiing van @local.workshop_data.in_text_title. Môre word ’n nuwe slypskool ontsluit om jou te help om gesinsreëls wat werk, op te stel.", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Dit kan baie moeilik wees om elke maand met jou geld uit te kom. Baie gesinne het hierdie probleem!\n\nSluit @global.w_money_grandma in. Kom ons kyk:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: “Ek pas my kleinkinders, @global.w_money_teen_girl en @global.w_money_teen_boy, op vandat hul ouers oorlede is toe hulle jonk was. Ons sukkel dikwels met geld, aangesien ek net ’n klein toelaag kry.”", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Ek is onder soveel spanning. Ek het geen geld oor nie. En nou baklei ek met my tieners oor goed wat hulle wil hê – weer eens.”", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Goeie werk, jy het die eerste 3 stappe voltooi!\n\nKom ons kyk hoe@global.w_money_grandma ’n plan met haar geld gemaak het, net soos jy nou doen:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ek wil die beste toekoms vir my kleinkinders hê, maar ek weet nie waar om die geld te kry nie. Geldskieters is gevaarlik en dis so duur om hulle terug te betaal. \n\nEk behoort te spaar, maar dit voel onmoontlik!”", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“My doel is om seker te maak dat my kleinseun hoërskool toe kan gaan en my kleindogter haar droom van universiteit kan verwesenlik. Hoe kan ek geld spaar met die min wat ek het?”", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ek weet – kom ons begin met ’n plan! Ek sal eers ’n begroting maak – ’n plan vir hoe ek my geld kan spaar. Dan sal ek net ’n bietjie geld op ’n slag spaar – ek sal selfs by ’n spaar- en leningsgroep aansluit.”", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“Ek moet met my kleinkinders praat sodat hulle goed kan kies waarop ons elke week net ’n bietjie minder sal bestee. Hulle sal my help dink aan goed wat ons graag wil hê, maar nie nodig het nie.”", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "’n Paar jaar later:\n\n“Kyk, ons het ons drome verwesenlik! Ek het nie enige geld by vriende of geldskieters geleen nie. Deur elke week net ’n klein bietjie te spaar, het ek dit reggekry om vir @global.w_money_teen_boy se hoërskool te betaal en geld vir @global.w_money_teen_girl se universiteit te spaar. Ek is so trots hierop.”", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Om te spaar is om nog ’n rede belangrik: noodgevalle! @global.w_money_grandma het dit ook algaande geleer:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Een nag was daar ’n vreeslike storm wat my dak gebreek het. Alles was onder water. Ek moes skielik geld kry om die dak te laat regmaak. Ek het net verlore gevoel.”", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Neem ’n oomblik en wees beïndruk met wat jy bereik het, ten spyte van die talle ander dinge wat jy elke dag moet doen.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Storie – dit het nie gewerk nie...\n* Begroting-oefening\n* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het nie gewerk nie... \n* Bespreking oor opsies vir spaar\n* Besparing-oefening\n* Hulpmiddels: Hoe om te begroot en te bespaar \nDINK – KIES – BOU – BEPLAN\n* Voorstelle om tuis te oefen", + "Step 1: THINK": "Stap 1: DINK", + "What do we spend on now?": "Waarop bestee ons nou ons geld?", + "THINK Activity": "DINK-aktiwiteit", + "Step 2: CHOOSE": "Stap 2: KIES", + "Talk together about needs and wants": "Praat met mekaar oor behoeftes en begeertes", + "CHOOSE Activity": "KIES-aktiwiteit", + "Step 3: BUILD": "Stap 3: BOU", + "Make your own budget": "Stel jou eie begroting op", + "BUILD Activity": "BOU-aktiwiteit", + "Step 4: PLAN": "Stap 4: BEPLAN", + "Emergencies and family goals": "Noodgevalle en gesinsdoelwitte", + "PLAN Activity": "BEPLAN-aktiwiteit", + "What are your family savings goals?": "Wat is jou gesin se spaardoelwitte?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Sulke goeie doelwitte! \n\nSo ’n goeie doelwit! Wanneer ons saam ’n goeie begroting en spaarplan opstel, kan ons dit bereik en trots wees op onsself!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Ons het almal drome vir ons gesin, net soos@global.w_money_grandma. Deur elke maand ’n bietjie geld weg te sit, kan jy ook jou drome verwesenlik!", + "What are your family savings goals?": "Wat is jou gesin se spaardoelwitte?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "So ’n goeie doelwit! \n\nWanneer jy ’n goeie begroting en spaarplan opstel, kan jy dit bereik en trots wees op jouself!", + "Let's talk about this story.": "Kom ons praat oor hierdie storie.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Vir @global.w_money_grandma was dit ’n storm.\n\nWatter ander noodgevalle kan by ons opduik?", + "Let's think about this story.": "Kom ons dink oor hierdie storie.", + "For @global.w_money_grandma, a storm happened.": "Vir @global.w_money_grandma was dit ’n storm.", + "What other emergencies could come up for your family?": "Watter ander noodgevalle kan by jou gesin opduik?", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Noodgevalle kan in enige gesin opduik. Om vir hierdie noodgevalle te spaar VOOR hulle gebeur, voorkom mens baie skielike bekommernis en spanning!", + "Let's talk about different ways we can save.": "Kom ons praat oor die verskillende maniere waarop ons kan spaar.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Bespreek saam:\n* Op watter verskillende maniere kan ons spaar?\n* Wat is die voor- en nadele van elke spaaropsie?\n\nOm elke opsie goed te verstaan, sal jou help om te besluit wat die beste spaaropsie vir jou gesin is.\n\nWatter spaaropsie jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", + "Let's think about different ways we can save.": "Kom ons dink aan verskillende maniere hoe ons kan spaar.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Daar is verskillende maniere hoe ons kan spaar: tuis, om goed te koop wat ons later kan verkoop, by ’n bank, of in ’n spaargroep.\n\nDink aan die voor- en nadele van elke spaaropsie.", + "What is the best savings option for your family?": "Wat is die beste spaaropsie vir jou gesin?", + "Whatever savings plan you choose, it will really help your family move forward!": "Watter spaarplan jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", + "Caring for yourself is so essential.": "Dis uiters belangrik om na jouself om te sien.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Wonderlik, ek is so bly dit gaan goed. Hou so aan.", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Hierdie week se tuisoefening is om jou tiener een keer per dag te prys. Dit sal net 10 sekondes neem!", "Your goal was to praise your teen.": "Jou doelwit was om jou tiener te prys.", "Did you have a chance to praise your teen this week?": "Het jy hierdie week ’n kans gehad om jou tiener te prys?", "Yes": "Ja", @@ -1338,17 +942,140 @@ "Well done for observing how your teen felt; keep it up!": "Welgedaan dat jy jou tiener se gevoelens opgelet het, hou so aan!", "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Dit gebeur – wees net geduldig. Maak seker dat jy tyd met jou tiener deurbring sodat hulle jou opinie meer en meer sal waardeer. Wanneer jou lof opreg is, sal jy kort voor lank die voordele sien!", "No problem - try to observe how they respond the next time!": "Geen probleem – probeer volgende keer oplet hoe hulle reageer!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Jou doelwit was om ’n moontlike krisissituasie met jou tiener te bespreek en ’n plan daarvoor te maak.", - "prepare for a possible crisis with their teens": "berei vir ’n moontlike krisis met hul tieners voor", - "prepare for a possible crisis with your teen": "berei vir ’n moontlike krisis met jou tiener voor", - "My teen told me that something serious happened to them and I did not know how to handle it.": "My tiener het my vertel dat iets ernstigs met hulle gebeur het en ek het nie geweet hoe om dit te hanteer nie.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Prys jou tiener omdat hulle jou vertel het. Dit is nie maklik om dit te doen nie! Onthou dat jy al die vaardighede wat jy uit jou gereedskapskas gekies het, kan gebruik: neem ’n blaaskans, gebruik die vier stappe van probleemoplossing en reik uit om die ondersteuning te kry wat jy en jou tiener benodig!", - "Get support": "Kry ondersteuning", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Die gesprek het my baie ongemaklik laat voel omdat dit my herinner het aan ’n negatiewe ervaring wat ek gehad het.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Wanneer ons aan sulke ervarings herinner word, is dit normaal om ontsteld of kwaad te voel. Dit is belangrik om ’n tyd te vind wanneer jy kalm is, sodat jy kan dink aan watter ondersteuning jy nodig het. Dalk moet jy met iemand praat.", - "One of us did not feel comfortable.": "Een van ons het nie gemaklik gevoel nie.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Dit is moeilike dinge om oor te praat. Soek ’n ontspannende tyd daarvoor. Ons weet dit is baie makliker om nie oor hierdie dinge te praat nie en te hoop dat dit nooit met ons sal gebeur nie. Maar om te leer om krisisse te hanteer, is soos om versekering te bekom; dit is ALTYD die beste om daaraan te dink en voorbereid te wees.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Jou doel was om risiko's en ondersteuningstelsels met jou tiener te bespreek – in jou gemeenskap sowel as aanlyn.", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Jy verdien ook lof. Dankie weereens vir jou gebruik van @global.parent_app.. Dit wys dat jy regtig omgee!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Om iemand te prys, is ’n baie goeie vaardigheid vir ouerskap. \n\nAs ons tieners geprys word wanneer hulle iets goed doen, sal ons sien dat hulle meer en meer positiewe dinge sal doen!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Goeiedag, almal. \n\nOns onderwerp vandag gaan daaroor om iemand te prys. \n\nDit is goed om ons kinders te prys wanneer hulle iets goed gedoen het, want dan sal hulle meer van daardie goeie gedrag wat ons wil sien, wys.\n\nEn ons moenie vergeet om onsself te prys as ons iets goed gedoen het nie!", + "Praise time!": "Tyd om te prys!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Wanneer jy jou tiener weer sien, prys hulle vir een ding wat hulle goed doen!\n\nEn wanneer laas het jy jouself of ’n ander volwassene in jou huishouding geprys? Probeer dit!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Welgedaan met die gebruik van @global.parent_app! Onthou dat dit die klein dingetjies is wat ’n groot verskil maak.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Lof maak ’n groot verskil.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe JY lof in jou gesin kan gebruik.", + "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Hallo, @fields.user_name! Veels geluk met die begin van jou derde week op @global.parent_app. \n\n'n Nuwe werkswinkel wag op jou! Kyk na hierdie prentjie en raai wat die onderwerp van die werkswinkel is!", + "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Hallo, @fields.group_name! Veels geluk met die begin van jou derde week op @global.parent_app. \n\n'n Nuwe werkswinkel wag op jou! Kyk na hierdie prentjie en raai wat die onderwerp van die werkswinkel is!", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Dankie dat jy @global.parent_app gebruik om in jouself en jou gesin te belê.\n\nProbeer die @local.workshop_data.in_text_title en ontwikkel ’n uitstekende ouerskapvaardigheid!", + "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Hallo, @global.user_name, 'n nuwe werkswinkel wag môre op jou. Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dis regtig 'n kortetjie (belowe!) – jy kan dit selfs voltooi terwyl jy wag dat jou aandete gaar word. Waarom gaan jy nie daardeur wanneer jy 'n paar minute tyd het nie? \n\nWeer eens dankie dat jy @global.parent_app gebruik.", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title.voltooi het. Môre word ’n nuwe slypskool ontsluit. Probeer dit – jy sal die verskil in jou tiener se gedrag sien.", + "Think about the last time someone thanked you, or said you did something great.": "Dink aan die laaste keer wat iemand jou bedank het of gesê het jy het iets uitsonderlik gedoen.", + "How did it make you feel?": "Hoe het dit jou laat voel?", + "Parents usually don’t get thanked or praised enough.": "Ouers word gewoonlik nie genoeg bedank of geprys nie.", + "How does it make you feel when nobody says \"thank you\"?": "Hoe laat dit jou voel as niemand “dankie” sê nie?", + "Tired": "Moeg", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Jou tiener kan ook so voel. Dis hoekom hierdie week se ouerskaphulpmiddel eenvoudig maar belangrik is. Prys hulle vir dit wat hulle reg doen.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Hoe het dit vir @global.w_praise_female_caregiver_name se tieners gevoel om geprys te word?", + "Why did she praise them?": "Hoekom het sy hulle geprys?", + "To get them to do it more often": "Om hulle sovêr te kry om dit meer gereeld te doen", + "To help her finish her work": "Om haar te help om haar werk klaar te kry", + "To make them feel good": "Om hulle goed te laat voel", + "To make herself feel good": "Om haarself goed te laat voel", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Al daardie dinge is waar! \n\nWanneer haar tieners gelukkig is, voel @global.w_praise_female_caregiver_name gelukkig. En sy het haar werk klaar gekry.", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Om iemand te prys, het baie trefkrag.\n\nKom ons kyk na die voorbeeld van @global.w_praise_female_caregiver_name en haar dogters:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Wanneer @global.w_praise_female_caregiver_name besig is, baklei haar twee dogters dikwels. Maar vandag het haar ouer dogter nogal haar suster met haar skoolwerk gehelp!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: “Dankie dat jy jou skoolwerk gedoen het en @global.w_praise_girl, dankie vir jou hulp met jou suster,@global.w_praise_teen_girl. Ek is so trots op jou!”", + "Step 1: Share what went well and what was hard": "Stap 1: Vertel wat goed gegaan het en wat moeilik was", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ek het soveel meer van my tiener se lewe geleer terwyl ons een-tot-een-tyd deurgebring het. Maar na die eerste dag wou my tiener net op sy foon speel.”", + "Step 2: Bring ideas!": "Stap 2: Bring idees!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Jy het goed gedoen deur te probeer! Miskien kan jy ’n paar ander lekker dinge voorstel wat jy saam met jou tiener kan doen.”\n\n“Ja, of julle kan iets saam op sy foon doen? Of hy kan vir jou wys hoe sy foon werk?”", + "Step 3: Pick and try one!": "Stap 3: Kies en probeer een!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Dankie vir daardie uitstekende idees! Ja, laat ek my tiener vra om my môre na skool te wys hoe sy foon werk. Kan een van julle nou voorgee om my tiener te wees, sodat ek kan oefen hoe om te vra?”", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Dink oor hoe jou tuis-aktiwiteite hierdie week gegaan het. \n\nNeem beurte om te bespreek:\n\n* Wat het goed gegaan en wat was ’n probleem?\n* Watter oplossings kan julle saam bedink?\n* Kies een oplossing en probeer dit later met jou tiener!\n\n(Of julle kan dit selfs nou oefen sodat dit later makliker sal wees!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Uitwerking daarvan om iemand te prys\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Uitwerking daarvan om iemand te prys\n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Voorstelle om tuis te oefen", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Deel met mekaar:\n\n*Wanneer laas het iemand jou bedank of gesê jy het iets goeds gedoen?\n* Hoe het dit jou laat voel?\n* Hoe voel dit as jy nie bedank of geprys word vir wat jy doen nie?\n\nAs ouers word ons gewoonlik nie genoeg bedank of geprys nie. Miskien kan jy vir jou tieners die regte voorbeeld stel en hulle eers prys wanneer hulle iets goed gedoen het!", + "Let's discuss this story.": "Kom ons bespreek hierdie storie.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Bespreek onder mekaar:\n\n* Hoe het dit @global.w_praise_female_caregiver_name se tieners laat voel om geprys te word?\n* Hoekom het sy hulle geprys?", + "The same can work for you!": "Dieselfde kan vir jou werk!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name het haar tieners geprys...", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Om hulle sover te kry om dit meer gereeld te doen\n* Om haar te help om haar werk klaar te kry \n* Om hulle goed te laat voel \n* Om haarself goed te laat voel", + "SEE IT": "SIEN DIT", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Kyk uit vir enigiets wat jou tiener doen wat hulpvaardig of goed is, en prys hulle daarvoor. Hulle mag dit dalk nie wys nie, maar jy sal sien dat hulle daardie goeie ding weer sal doen. Dit sal hulle ook gerusstel dat jy dit raaksien en omgee.", + "SAY IT": "SÊ DIT", + "Be enthusiastic – really mean it when you say it!": "Wees entoesiasties – bedoel dit opreg wanneer jy dit sê!", + "REPEAT IT": "HERHAAL DIT", + "Try to find something to thank them for every day. Even something really small.": "Probeer elke dag iets kry waarvoor jy hulle bedank. Selfs iets baie klein.", + "You can also praise other adults in your household, too. Notice how they respond!": "Jy kan ook ander volwassenes in jou huis prys. Let op hoe hulle reageer!", + "Let's practice giving praise.": "Kom ons oefen om iemand te prys.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Deel met mekaar: \n\n* Waarvoor kan jy jou tiener prys? \n* Wat het iemand anders tydens hierdie werksessie goed gedoen? Sê vir hulle!\n* Hoe het dit jou laat voel om iemand te prys?\n* Hoe het dit jou laat voel om geprys te word?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Soms is dit moeilik om aan iets te dink waarvoor jy jou tiener kan prys! Hier is ’n paar idees van ander ouers:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Wys goedhartigheid teenoor iemand \n* Maak hulle kamers skoon \n* Eet saam met die gesin \n* Groet ander gesinslede \n* Pas ander broers of susters op \n* Kom betyds huis toe \n* Wys bedagsaamheid \n* Sê ‘asseblief’ of ‘dankie’ \n* Gaan skool toe \n* Doen werkies of skoolwerk \n* Bewaar die vrede tydens etenstye", + "Great to hear that you are doing well. You are a wonderful parent!": "So bly om te hoor dit gaan goed met jou. Jy is ’n wonderlike ouer!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Jammer dat dit nie met jou goed gaan nie. Jy het goed gedoen om alles te probeer uitwerk. Niemand het ál die antwoorde nie, maar jy doen regtig jou bes!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Jammer om te hoor dat dit nie met jou goed gaan nie. Jy het goed gedoen om elke dag op te staan en weer te probeer, selfs al is jy moeg. Dit wys regte moed en toewyding!", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Lê hierdie week een reël saam met jou tiener neer. \n\nOnthou om jou tiener daarná te prys!", + "make rules with their teens": "maak saam met hulle tieners reëls", + "Did you have any challenges when trying to make a rule together?": "Het julle enige uitdagings ervaar toe julle probeer het om saam ’n reël vas te stel?", + "What was difficult for you about making a rule with your teen?": "Wat was vir jou moeilik toe dit kom by ’n reël saam met jou tiener maak?", + "My teen and I could not agree on a rule.": "Ek en my tiener kon nie oor ’n reël saamstem nie.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Dink of die reël redelik is. Kan jou tiener dit volg? Wanneer julle as ’n gesin reëls maak, help dit om aan jou tiener te dink, hoe oud hulle is en wat vir hulle belangrik is.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "My tiener het gevoel dis onregverdig dat hulle die reël moet volg terwyl ek dit nie hoef te volg nie.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Ons moet altyd onthou dat kinders die beste by ons leer. Hoe meer ons die reëls volg, hoe meer sal hulle die reëls ook volg.\n\nJy kan die reël aanpas om seker te maak dat dit realisties is vir almal om te volg, met inagneming van jou verantwoordelikhede en dié van jou tiener (byvoorbeeld skool- of werksaktiwiteite).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ek het ongemaklik gevoel omdat ek voel dat ek die een moet wees wat die reël neerlê, nie my tiener nie.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "My lewensmaat het ongemaklik gevoel omdat hulle voel dat hulle die een moet wees wat die reël neerlê, nie die tiener nie.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Wanneer ons saam met ons tieners reëls neerlê, help dit die gesin om mekaar beter te verstaan. Die reëls sal meer realisties wees, en ons tieners sal meer bereid en in staat wees om die reëls te volg.", + "When we tried to set a rule, we got into an argument.": "Toe ons ’n reël probeer neerlê het, het ons begin argumenteer.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Was jou tiener in ’n goeie bui toe jy probeer het om die reël te maak? Dit is die beste om reëls te maak wanneer die situasie kalm is. As jy of jou tiener moeg of honger is, is dit beter om op ’n later tydstip oor reëls te praat.", + "We were not able to stick to the rule.": "Ons kon nie by die reël bly nie.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Die reël moet spesifiek en realisties wees. Maak seker dat jy ’n reël het wat maklik gehou kan word, soos om elke Sondag een maaltyd saam te eet in plaas van elke aand. Moet jy dalk meer buigsaam wees oor die reël?", + "Your goal was to make ONE rule with your teen this week.": "Jou doelwit was om hierdie week EEN reël saam met jou tiener te maak.", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Welgedaan! Dit is nie maklik nie, en tieners sal nie heeltyd die reëls gehoorsaam nie, maar om ’n paar sleutelreëls saam te maak, is ’n goeie begin. Prys jouself omdat jy dit probeer het – ons is trots op jou!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Reëls help tieners om te verstaan wat van hulle verwag word. \n\nTieners sal meer geneë wees om reëls na te kom as jy reëls SAAM met jou tiener neerlê en hulle daarvoor prys!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Goeiedag, almal. \n\nVandag se onderwerp is reëls. \n\nReëls bevorder vrede binne die huishouding en begrip tussen gesinslede.\n\nReëls bevorder verantwoordelikhede vir elke lid van die gesin; daarom is dit belangrik om gesinsreëls te hê. \n\n’n Huishouding met gesinsreëls lewe in vrede.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Skryf een belangrike reël wat jy graag saam met jou tiener wil maak, neer – jy sal dit hierdie week as jou tuisoefening doen. \n\nWat sal hulle daarvan dink?", + "Have you managed to set a rule together with your teen?": "Kon jy saam met jou tiener ’n reël opstel?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Soms voel dit asof jou tieners nog steeds knorrig is, selfs al het jy jou bes gedoen. Onthou dat jy uitstekende werk doen en dat daar ook goeie tye saam met hulle sal wees!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Jy is op die punt om nog ’n ouerskaphulpmiddel te verkry! Voltooi die @local.workshop_data.in_text_title, stel EEN eenvoudige en realistiese reël saam met jou tiener op, en kyk hoe dinge verander!", + "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Hallo, @fields.user_name! Nuwe week, nuwe werkswinkel! Leer hoe om huisreëls op so 'n manier op te stel dat dit die kanse sal verbeter dat jou tiener dit sal nakom.", + "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Hallo, @fields.group_name! Nuwe week, nuwe werkswinkel! Leer hoe om huisreëls op te stel op so 'n manier dat dit die kanse sal verbeter dat jou tiener dit sal nakom.", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Weereens baie dankie dat jy @global.parent_app gebruik en dat jy toegewyd is aan jou ouerskapreis.\n\nDie @local.workshop_data.in_text_title sal jou wys hoe om reëls op te stel op ’n manier wat jou tiener sal help om dit beter te verstaan en te volg.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. Dit sal nie lank neem nie en dit sal jou tiener help om die reëls beter te volg!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Baie geluk met jou voltooiing van die @local.workshop_data.in_text_title.\n\nMôre sal ’n nuwe slypskool jou help om te weet wat jy moet doen as tieners slegte (of goeie) gedrag toon!", + "They discussed the reasons behind the rule": "Hulle het die redes vir die reël bespreek", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 het na @global.w_rules_teen_boy se voorstelle geluister", + "The rule was clear, specific and fair": "Die reël was duidelik, spesifiek en regverdig", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 het @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", + "That's right, making clear rules together in a calm and positive way works so well!": "Dis reg, om reëls saam op ’n kalm en positiewe manier neer te lê, werk baie goed!", + "She praised him": "Sy het hom geprys", + "She rewarded him when he followed the rule": "Sy het hom beloon toe hy die reël gevolg het", + "Exactly - a positive response makes all the difference!": "Presies – ’n positiewe reaksie maak ’n groot verskil!", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Kom ons lees wat met @global.w_rules_teen_boy en sy @global.w_rules_female_caregiver_1 gebeur het:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Jy kom altyd laat by die huis!”\n\n@global.w_rules_teen_boy: “Nee, dis nie waar nie! Ek weet nie eens wat laat beteken nie! Hou op om so met my te neul.”", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Watter spesifieke reël kan @global.w_rules_teen_boy en @global.w_rules_female_caregiver_1 saam neerlê?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Kom ons kyk hoe @global.w_rules_female_caregiver_1 en @global.w_rules_teen_boy dit die volgende dag gedoen het:\n\n@global.w_rules_female_caregiver_1: “Ek wil hê jy moet pret hê, @global.w_rules_teen_boy, maar ek is ook bekommerd omdat jy laat uitbly. Weet jy hoekom?” \n\n@global.w_rules_teen_boy: “Omdat jy wil hê dat ek genoeg tyd vir my skoolwerk moet hê?”", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Dis reg, en dit is ook nie veilig in hierdie omgewing om na sononder buite te wees nie. Wat dink jy is ’n goeie tyd vir jou om huis toe te kom?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ek kan 10nm. huis toe kom?” \n\n@global.w_rules_female_caregiver_1: “Dis ’n bietjie te laat, wat van 6nm.? Of iewers in die middel?”", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ek kan 6nm. huis toe kom op weeksaande en 10nm. op Vrydag en Saterdag?” \n\n@global.w_rules_female_caregiver_1: “Ja, uitstekend. Van nou af is ons huisreël dat jy op weeksaande 6nm. moet huis toe kom en 10nm. op Vrydag en Saterdag. Maar jy moet altyd saam met ’n vriend huis toe stap. Oukei?”", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Oukei, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Baie dankie, @global.w_rules_teen_boy, dat jy gehelp het om saam ’n goeie reël voor te stel. Ek is trots daarop om te sien hoe verantwoordelik jy raak.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Die volgende dag...\n\n@global.w_rules_female_caregiver_1: “Dankie, @global.w_rules_teen_boy, dat jy betyds huis toe gekom het. Nadat jy jou skoolwerk klaargemaak het, kan ons jou gunstelingmaaltyd vir aandete hê.”", + "Online Safety": "Aanlyn veiligheid", + "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Reëls is belangrik om jou tieners veilig te hou – ook aanlyn. Daar is meer hieroor in die weeklikse slypskool oor die beplanning van veiligheid, maar kom ons kyk nou daarna!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: “@global.w_rules_teen_girl, het jy jou huiswerk gedoen?”\n\n@global.w_rules_teen_girl: “Net ’n oomblik@global.w_rules_female_caregiver_2, ek kyk gou hierdie @global.teen_social_medium video klaar.”", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Jy is regtig ’n uitstekende danser! Vertel my waarom jy daarvan hou.”\n\n@global.w_rules_teen_girl: “Al my vriende is daarop,@global.w_rules_female_caregiver_2. Ek het meer as 600 laaiks en 120 volgers.”", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: “Ek is trots op hoe goed jy dans, @global.w_rules_teen_girl. Maar ons moet seker maak dat jy veilig is. \n\nEk weet jou vriende kyk na @global.teen_social_medium, maar met ’n oop rekening is daar ander mense wat na video’s van tieners kyk vir hul eie seksuele behoeftes. Soms kontak hulle tieners. Hulle gee voor om gaaf te wees, maar later dreig en misbruik hulle tieners.”", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: “Kom ons kyk saam aanlyn hoe ons dit vir jou prettig, maar ook veilig kan maak. Kyk – jy kan jou rekening privaat maak en beheer wie jou kan volg.\n\nSo kan jy mense wat jy van jou skool en ons gemeenskap ken, aanvaar, maar nie mense wat jou aanlyn kontak nie.\n\nKan ons saam ’n reël maak dat jy @global.teen_social_medium kan gebruik, maar met ’n private rekening? Ek vertrou jou om te weet wie om te aanvaar!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: “Ek is trots op jou, @global.w_rules_teen_girl.”", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Dit is eenvoudig ongelooflik. Elkeen van hierdie gewoontes maak jou familie sterker. Wees trots daarop.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie… \n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie… \n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "What went well here in making a rule together?": "Wat het hier goed gegaan met die neerlê van die reël?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Hoe dink jy het @global.w_rules_teen_boy geweet sy@global.w_rules_female_caregiver_1 waardeer hom?", + "Making the rule together went well because...": "Om die reël saam neer te lê, het goed verloop omdat...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Hulle die redes vir die reël bespreek het\n* @global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy se voorstelle geluister het\n* Die reël duidelik, spesifiek en regverdig was \n* @global.w_rules_female_caregiver_1 vir @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy het geweet sy @global.w_rules_female_caregiver_1 waardeer hom, want...", + "* She praised him\n* She rewarded him when he followed the rule": "* Sy het hom geprys\n* Sy het hom beloon toe hy die reël gevolg het", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Huisreëls help om ons kinders veilig te hou, en te verstaan wat van hulle verwag word. Wanneer jy ’n tiener betrek wanneer reëls neergelê word, is hulle meer geneë om die reëls na te kom.", + "TEAM RULES": "SPANWERK REËLS", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Beplan reëls SAAM met jou tiener. Begin eers met een nuwe reël – jy kan later nog een byvoeg. Bespreek die redes vir die reël en luister na hulle uitgangspunte.", + "REAL RULES": "REALISTIES REËLS", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Maak dit realisties vir dit wat jou tiener kan doen en wees duidelik en spesifiek sodat daar geen misverstand is nie. Nie ‘betyds’ nie, maar wel ‘teen 7nm.’.", + "PRAISE RULES!": "REËLS VIR PRYS!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Prys jou tiener vir reëls wat hulle saam met jou maak en prys hulle omdat hulle daarby hou!", + "Let's practice making rules.": "Kom ons oefen om reëls te maak.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Wat is een belangrike reël wat julle elkeen saam met julle tiener wil maak?\n* Wat dink jy sal jou tiener van daardie reël dink? \n\nOnthou, maak die reëls spesifiek en realisties!", + "Here are some of the rules other families created:": "Hier is party van die reëls wat ander gesinne gemaak het:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Tiener kan buite speel nadat huiswerk klaar gedoen is\n* Alle gesinslede eet saam aandete\n* Tiener 1 was die skottelgoed op Sondag en Maandag, Tiener 2 op Dinsdag en Woensdag\n* Ons praat ordentlik en vriendelik met mekaar\n* Wanneer jy na musiek luister, moet jy oorfone gebruik", + "Remember that YOU matter!": "Onthou dat JY saak maak!", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Mooi so, dat jy ’n positiewe gevoel herken. Ek is bly om te hoor jy voel vandag goed!", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Mooi so, dat jy ’n slegte gevoel herken. Dis oukei om soms nie oukei te wees nie. Onthou, jy is nie alleen nie.", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "As jy dit nog nie gedoen het nie, maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", "map risks and support with their teens": "bespreek risiko's en ondersteuning met hul tieners", "map risks and support with your teen": "bespreek risiko's en ondersteuning met jou tiener", "My teen and I disagreed on which areas and online activities were unsafe.": "Ek en my tiener het nie saamgestem oor watter plekke en aanlyn aktiwiteite onveilig is nie.", @@ -1363,7 +1090,153 @@ "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Dit is moeilik om van elke detail in ons gemeenskappe te weet. Betrek ’n ander familielid of vriend by jou kaart-aktiwiteit. Jy kan selfs ’n paar van die beskikbare dienste besoek en vra wat hulle doen. Hoe meer ons weet, hoe beter kan ons ons gesinne veilig hou!", "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Ek weet nie veel van tegnologie nie, daarom weet ek nie hoe om met my tiener daaroor te praat nie.", "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Dit is heeltemal oukei! Jy kan nog steeds jou tiener ondersteun. Vra jou tiener om die toestelletjies wat hulle gebruik, te verduidelik – jy kan dit tydens een-tot-een-tyd doen. Dit is ’n wonderlike geleentheid om belangstelling in jou tiener se lewe te toon en om moontlike risiko's saam te bespreek. As jy nie seker is watter reëls jy moet neerlê nie, kan jy altyd met jou tiener ooreenkom om ’n nuwe reël vir twee weke te probeer en dan te bespreek hoe dit gaan, en indien nodig, die reël te verander!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Jou doelwit was om saam met jou tiener ’n probleem of konflik op te los.", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Jou doel was om risiko's en ondersteuningstelsels met jou tiener te bespreek – in jou gemeenskap sowel as aanlyn.", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Tieners kan baie tyd buite die huis of aanlyn bestee waar dit vir ons moeiliker is om hulle veilig te hou. \n\nDit help regtig om saam te gesels oor veilige en onveilige plekke en hoe om probleme te voorkom!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Goeiedag, almal. \n\nOns onderwerp vandag is tienerveiligheid. \n\nDit is ons verantwoordelikheid as ouers om ons tieners te alle tye veilig te hou. Ons moet seker maak dat ons tieners veilig is in die gemeenskappe waar ons woon. Dit is ons verantwoordelikheid om hulle bewus te maak van veilige en onveilige areas in die gemeenskappe.\n\nDit is ook ons verantwoordelikheid om seker te maak dat hulle die gevare waaraan hulle moontlik blootgestel kan word wanneer hulle aanlyn is, verstaan. So sal ons tieners verantwoordelik wees en sal hulle die regte besluite kan neem om hulself ook veilig te hou.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Bespreek onder mekaar:\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veilig te hou?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar: \n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.\n\nHier onder is ’n paar plekke wat van hulp kan wees", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar:\n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Prys julle tieners vir hoe goed hulle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Gee erkenning vir hoe goed hulle is met gebruik van die web! \n* Dink oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Elke keer wanneer jy ’n veiligheidsplan maak of daarby hou, klik op die @global.parent_point en vier jou sukses!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Kom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nJy gaan hierdie week dieselfde saam met jou tiener as tuisoefening doen – as jou tiener nou hier is, kan julle dit nou saam doen!", + "My family can join in now!": "My gesin kan nou by ons aansluit!", + "Let me try it out by myself": "Kom ek probeer dit op my eie", + "Safety Plan": "Veiligheidsplan", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!\n\nKom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nKom ons maak hierdie kaarte nou as ’n groep.\n\nJy sal hierdie week dieselfde tuisoefening saam met jou tiener doen.", + "Step 1: What are important places in your community?": "Stap 1: Wat is die belangrike plekke in jou gemeenskap?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Kry ’n stuk papier (of ou koerant of ’n kartonboks) en ’n pen.\n* Teken ’n kaart van jou tiener se gemeenskap, met prente van al die vernaamste plekke soos strate, julle huis, skool, winkels, plekke wat jou tiener besoek.", + "Step 2: Which places are safe and unsafe?": "Stap 2: Watter plekke is veilig en onveilig?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Bespreek onder mekaar:\n\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", + "Step 3: Where can you get support?": "Stap 3: Waar kan jy ondersteuning kry?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Soms kan ons in die moeilikheid beland. Bespreek onder mekaar:\n \n* Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", + "Step 4: What are risky places online and how can you make them safer?": "Stap 4: Wat is riskante plekke aanlyn en hoe kan jy hulle veiliger maak?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Teken prentjies van die toeps en webwerwe wat jou tieners gebruik.\n* Prys mekaar vir hoe goed julle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "Have you talked with your teen about safety measures?": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Hierdie is van die moeilikste tye om ’n ouer te wees. Jy moet so trots op jouself wees oor alles wat jy gedoen het.\n\nDink aan elke keer dat jy jou tiener laat glimlag het en al die sorg wat jy hulle gegee het. Ouers is ongelooflik, en jy is ongelooflik!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Om jou tiener veilig te hou, dra dit by om saam te gesels oor julle gemeenskap en hul aanlyn ervarings.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe julle dit kan doen!", + "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Hallo, @fields.user_name! Jy nader nou die einde van jou @global.parent_app-werkswinkels! Dankie vir jou volgehoue toewyding. \n\nHierdie week se werkswinkel gaan oor hoe om jou tieners veilig te hou, beide aanlyn en in die gemeenskap. Geniet dit!", + "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Hallo, @fields.group_name! Julle nader nou die einde van julle @global.parent_app-werkswinkels! Dankie vir julle volgehoue toewyding. \n\nHierdie week se werkswinkel gaan oor hoe om ons tieners veilig te hou, beide aanlyn en in die gemeenskap. Geniet dit!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Jy het die afgelope paar weke reeds soveel ouerskapvaardighede aangeleer!\n\nVoltooi die volgende slypskool om nog ’n nuttige vaardigheid aan te leer.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Om ’n plan saam met jou tiener te maak, kan baie probleme voorkom – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy@global.parent_app gebruik om jou gesin te ondersteun.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Baie geluk met jou voltooiing van @local.workshop_data.in_text_title.. Môre is ’n nuwe werksessie gereed om jou en jou gesin te help om enige situasie die hoof te bied – saam kan julle soveel doen!", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "Kom ons dink oor wat met @global.w_safe_teen_girl_1 gebeur het:", + "What was risky about that situation?": "Wat was riskant aan daardie situasie?", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke", + "@global.w_safe_teen_girl_1's friend was encouraging her": "@global.w_safe_teen_girl_1 se vriendin het haar aangemoedig", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen", + "Many girls in our communities get pregnant or catch HIV from older men": "Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", + "All those things are true!": "Al daardie dinge is waar!", + "Let's think about our teens' online safety.": "Kom ons dink oor ons tieners se veiligheid aanlyn.", + "What is the biggest online risk for teens these days?": "Wat is deesdae die grootste aanlyn risiko vir tieners?", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", + "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Kommunikasie is die belangrikste ding!\n\nKom ons kyk wat met @global.w_safe_female_caregiver en @global.w_safe_teen_girl_1 gebeur het:", + "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: “Iets het gebeur toe ek saam met my vriende @global.w_safe_teen_girl_2 en @global.w_safe_teen_girl_3 uit was!”\n\n@global.w_safe_female_caregiver: “Vertel my, @global.w_safe_teen_girl_1.”", + "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Man in motor: “Haai, mooiste. Ek kyk nou al lank na jou. Jy is baie mooi, wat is jou naam?”\n\n@global.w_safe_teen_girl_2: “Haar naam is @global.w_safe_teen_girl_1.”", + "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Man in motor: “@global.w_safe_teen_girl_1, wil jy saam met my kom vir iets om te drink en tjips? Komaan, klim in, jy sal betyds terug wees, ek belowe...”\n\n@global.w_safe_teen_girl_1: “Ek dink nie dis ’n goeie idee nie...”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Jy is gelukkig, vriendin. Ek wens ’n man wil MY uitvra en vir my geskenke koop. Ek sê jou, as jy dit nie doen nie, gaan ek vir almal vertel hoe dom jy is!”", + "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, moenie gaan nie! Wees versigtig! Kom ons gaan huis toe. Dit is gevaarlik om saam met mense wat jy nie ken nie, te gaan. Buitendien, hy is te oud vir jou en wat hy doen, is verkeerd.”\n\n@global.w_safe_teen_girl_1: “Ek weet nou nie mooi nie…”", + "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Pfff, Ek is so trots op jou dat jy nie in die motor geklim het nie. Dit was ’n gevaarlike situasie, dankie dat jy my vertel het!”", + "Let's look at another example of a dangerous situation together.": "Kom ons kyk saam na nog ’n voorbeeld van ’n gevaarlike situasie.", + "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “My vriendin praat aanlyn met ’n ou van ons ouderdom... Sy gaan vir hom foto’s van haarself stuur. Is dit beter omdat hy ons ouderdom is?”", + "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Jy is ’n goeie vriendin om oor haar bekommerd te wees. Om wulpse foto’s te stuur, is ook ’n werklike risiko.”", + "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Soms is mense nie wie hulle aanlyn sê hulle is nie – hy kan sê hy is jou ouderdom, maar kan ’n 50-jarige man wees. Of wanneer hulle verhouding uit is, kan hy daardie foto’s vir almal stuur en jou vriendin sal aaklig voel.”", + "Doing any of these makes you a great parent.": "Om enige van hierdie te doen, maak van jou ’n wonderlike ouer.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Storie en nadenke – dit het gewerk!\n* Storie en nadenke – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "Kom ons gesels oor wat met @global.w_safe_teen_girl_1 gebeur het", + "Discuss together: \n\nWhat was risky about that situation?": "Bespreek onder mekaar:\n\nWat was riskant aan daardie situasie?", + "The situation was risky because...": "Dit was ’n riskante situasie omdat...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke\n* @global.w_safe_teen_girl_1 se vriendin het haar aangemoedig\n* Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen\n* Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans\n* Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", + "Let's talk about our teens' online safety.": "Kom ons praat oor ons tieners se veiligheid aanlyn.", + "What are some of the online risks for teens these days?": "Wat is deesdae party van die aanlyn risiko’s vir tieners?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen\n* Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat\n* Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg\n* Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel\n*Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", + "MAPS": "KAARTE", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Maak saam met jou tiener KAARTE van veilige en onveilige areas in julle gemeenskap en aanlyn. Praat oor hoe om hulle inligting, foto’s en video’s aanlyn privaat te hou. Praat oor hoe iets wat aanlyn geplaas word, vir altyd daar bly. Hulle kan dalk van voorbeelde in hul vriendekring weet.", + "Safety Plan Activity": "Veiligheidsplan-aktiwiteit", + "RULES": "REËLS", + "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Lê saam met jou tiener reëls neer oor die veilige gebruik van die toeps en webwerwe waarvan hulle hou.\n\nOnthou julle die storie oor veiligheid aanlyn? Kyk hier weer daarna.", + "Online Safety Story": "Storie oor veiligheid aanlyn", + "AMNESTY": "AMNESTIE", + "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Gaan ’n AMNESTIE-ooreenkoms aan. Indien iets gebeur wat hulle ontstel, ongemaklik laat voel of bang maak, kan hulle met jou praat en jy sal nie kwaad word of hulle straf nie, selfs al het hulle iets verkeerd gedoen.\n\nOnthou julle die storie oor veiligheid-amnestie? Kyk hier weer daarna.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Digitale ouerskap is net soos ouerskap in die regte wêreld. Jy het ’n GROOT STAP gedoen om jou tiener in die gemeenskap EN aanlyn veilig te hou. Mooi so!", + "Resources to help in the community": "Hulpbronne om in die gemeenskap te help", + "Online Safety Resources": "Hulpbronne vir aanlyn veiligheid", + "Being a great parent also means taking time to care for yourself every day.": "Om ’n wonderlike ouer te wees, beteken ook om elke dag tyd te maak om na jouself om te sien.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Wonderlik. En fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", + "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Dis moeilik om ’n ouer te wees. Maar dit is fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Jy het hierdie week se slypskool voltooi.\n\nOns sal weer party van die selfsorg-aktiwiteite doen wanneer jy vir die eerste keer met jou groep bymekaar kom – julle verdien almal ’n bietjie ekstra selfsorg!", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Elke keer as jy ontspan, iets erken wat jy goed gedoen het of jouself beloon, tik op die@global.parent_points om jou sukses te vier!", + "Why @data.workshop.w_self_care.short_title?": "Hoekom @data.workshop.w_self_care.short_title?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Ons sorg dikwels nie genoeg vir onsself nie. Maar dit is so belangrik, veral as ’n ouer! \n\nOm ons spanning te verminder en goed na onsself om te sien, help ons EN ons tieners.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Goeiedag, almal. \n\nVandag se onderwerp is selfsorg. \n\nDaar kom tye wanneer ons uitdagings ervaar, waar ons voor probleme te staan kom en nie weet wat om te doen nie. Dit is belangrik dat ons na onsself omsien om die tegnieke te leer om onsself kalm te hou ingeval probleme, uitdagings of geskilpunte opduik. \n\nWanneer ons kalm is, kan ons positief dink en positiewe oplossings vind vir enige uitdagings waarvoor ons te staan kom.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Onthou – hierdie week gaan oor JOU! Ons hoop dat jy jouself goed behandel. Jy verdien dit!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Begin môre met ’n splinternuwe @global.parent_app-slypskool. Jy sal die goeie resultate sien!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Het jy jou @global.parent_app-maats al van die toep vertel? Vanaf môre kan julle jul @global.parent_app-slypskool saam begin doen!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Om aandag te gee aan wat ons doen, help ons om op die positiewe te fokus.\n\nKom ons neem ’n oomblik om onsself te prys. Ons sal jou wys hoe.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Dink aan een ding wat JY onlangs goed gedoen het.\n\nSê dit hardop vir mekaar: “Mooi so aan my vir....”\n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", + "Recognise": "Erken", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Neem ’n oomblik om jouself te prys.\n\nOns sal jou wys hoe.", + "Think of one thing YOU have done well recently.": "Dink aan een ding wat JY onlangs goed gedoen het.", + "\"Well done to me for...\"": "“Mooi so aan my vir....”", + "Showing love to my children": "Liefde aan my kinders wys", + "Getting up even though I felt tired": "Opgestaan het, al het ek moeg gevoel", + "Smiling at someone": "’n Glimlag vir iemand", + "Making food to stay strong": "Kosmaak om sterk te bly", + "Spending time with my children": "Tyd wat ek saam met my kinders deurbring", + "Helping my children with schoolwork": "Hulp aan my kinders met hulle skoolwerk", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Sê dit hardop as jy kan. \n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", + "Things to praise yourself for:": "Dinge waarvoor jy jouself kan prys:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Liefde wat jy aan jou kinders wys \n* Opstaan, al het jy moeg gevoel \n* ’n Glimlag vir iemand \n* Kosmaak om sterk te bly \n* Tyd wat jy saam met jou kinders deurbring \n* Hulp aan jou kinders met hulle skoolwerk", + "Let's try it out and do a short relaxation activity together!": "Kom ons probeer dit en doen saam ’n kort ontspanning-aktiwiteit!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "As ouers het ons dikwels nie tyd om na onsself om te sien nie – maar dit is so belangrik! Om ons spanning te verminder help ons EN ons tieners.\n\nKom ons doen ’n eerste stap en doen saam ’n kort ontspanning-aktiwiteit.", + "Well done! Try to do this every day.": "Mooi so! Probeer dit elke dag doen.", + "Have a hot drink": "Drink iets warm", + "Call a friend or relative": "Skakel ’n vriend of ’n familielid", + "Have a relaxing bath": "Ontspan in die bad", + "Read": "Lees", + "Watch TV": "Kyk TV", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Om na onsself om te sien, is ’n belangrike ouerskapvaardigheid. Deel met mekaar:\n\nWatter klein dingetjies maak jou gelukkig?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Probeer elke dag iets doen om jouself te beloon.\n\nJy kan hierdie vaardighede tuis gebruik en hulle enige tyd in jou@global.parent_centre vind!", + "Reward": "Beloning", + "We all deserve to treat ourselves well!": "Ons verdien almal om onsself goed te behandel!", + "What small thing makes you happy?": "Watter klein dingetjies maak jou gelukkig?", + "Nice! Taking care of yourself is an important parenting skill!": "Mooi! Om na jouself om te sien, is ’n belangrike ouerskapvaardigheid!", + "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_1 wees of enigiets anders wat jy geniet.", + "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_2 wees of enigiets anders wat jy geniet.", + "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_3 wees of enigiets anders wat jy geniet.", + "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_4 wees of enigiets anders wat jy geniet.", + "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_5 wees of enigiets anders wat jy geniet.", + "Things you can do to reward yourself:": "Dinge wat jy kan doen om jouself te beloon:", + "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Drink iets warm \n* Skakel ’n vriend of ’n familielid \n* Ontspan in die bad \n* Lees \n* Kyk TV", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Vandag sal jy 3 aktiwiteite ervaar wat jou kan help om na jouself om te sien en ons sal jou ’n paar\nvrae vra om seker te maak dat die toep presies reg is vir jou.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Ontspanning-aktiwiteit\n* Erkenning-aktiwiteit\n* Beloning-aktiwiteit\n* Hulpmiddels: Hoe om selfsorg by te voeg\n* Pas die app by jou aan\n* Voorstelle om tuis te oefen", + "Customise your @global.parent_app": "Pas jou @global.parent_app aan", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Noudat ons ’n paar selfsorgvaardighede gebou het, kom ons maak seker dat jou @global.weekly_workshops presies reg is vir jou.", + "You seem to have completed the customisation process already. You can now skip this activity.": "Dit kom voor dat jy reeds die pasmaakproses voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", + "RELAX": "ONTSPAN", + "Do a 30 second quick relaxation activity.": "Doen ’n vinnige ontspanning-aktiwiteit vir 30 sekondes.", + "Relax activity": "Ontspanning-aktiwiteit", + "RECOGNISE": "ERKEN", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Neem ’n oomblik en dink aan een ding wat JY onlangs goed gedoen het! Sê dit hardop as jy kan: “Mooi so, vir ....”", + "Recognise activity": "Erkenning-aktiwiteit", + "REWARD": "BELONING", + "Remember you deserve your quality time too! What makes you happy?": "Onthou, jy verdien ook jou gehaltetyd! Wat maak jou gelukkig?", + "Reward activity": "Beloning-aktiwiteit", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Welkom! Dis wonderlik om julle hier te hê. Hierdie week gaan oor JOU.\n\nIn hierdie verwelkomingsslypskool sal jy:\n* Hulpmiddels kry om na jouself om te sien\n* Die toep pasmaak vir jou behoeftes", + "Wonderful, I am so happy things are going well.": "Wonderlik, ek is so bly dit gaan goed.", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Jammer dat dinge nou moeilik is. Dit is heeltemal normaal om soms te sukkel. Onthou, jy is nie alleen nie!", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Leer jul tieners die vier stappe van probleemoplossing:\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n\nGebruik hierdie stappe saam wanneer ’n probleem opduik! \n\nWanneer iets sleg gebeur, raak ons dikwels ontsteld en blameer iemand. Maar wat ons tieners regtig nodig het, is iemand wat help om saam oplossings te vind. Luister na hulle, aanvaar hoe hulle dinge sien en daaroor voel, en bedank hulle dat hulle jou vertrou.\n\nAs jy jou tiener leer hoe om probleme te hanteer, sal dit hulle vir die res van hulle lewens help. ’n Baie goeie geskenk!", + "Some problems other parents solved with their teens:": "Sommige van die probleme wat ander ouers saam met hulle tieners opgelos het:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* My tiener wil nie skool toe gaan nie\n* Ek is bekommerd dat my tiener sal swanger raak, of iemand sal swanger maak \n* Ek is bekommerd oor wat my tiener aanlyn doen\n* My tiener kuier met slegte vriende\n* My tiener is lui\n* My tiener doen nie hulle huiswerk nie* My tiener gebruik moontlik dwelmmiddels", "resolve problems with their teens": "los probleme saam met hul tieners op", "resolve the problem with your teen": "los die probleem saam met jou tiener op", "I forgot the steps of problem solving.": "Ek het die stappe van probleemoplossing vergeet.", @@ -1377,11 +1250,76 @@ "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Wanneer ’n probleem opduik, word ons almal soms kwaad of gespanne. Onthou, as jy kwaad of gestres voel, kan jy ’n pouse neem om jou te help kalm bly en dan die probleem wat jy ondervind, op te los.", "My teen got angry and did not want to talk about the problem.": "My tiener het kwaad geword en wou nie oor die probleem praat nie.", "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Jou tiener is dalk te oorweldig om die probleem dadelik die hoof te bied. Erken en noem hul emosies, en maak later in die dag of week ’n tyd vry om die probleem saam te bespreek en op te los. Deur jou tiener tyd te gee, kan die probleem goed opgelos word.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer. Jy het op die@data.habit.breathe.in_text_title getik – mooi so!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer.", - "How did this work out?": "Hoe het dit verloop?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Jou doelwit was ook om met jou tiener te praat oor hoe julle albei in ’n stresvolle situasie gevoel het.", - "How did this go?": "Hoe het dit gegaan?", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Jou doelwit was om saam met jou tiener ’n probleem of konflik op te los.", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Elke gesin kom voor uitdagings te staan, maar wanneer ons saamwerk, kan ons probleme op ’n doeltreffende en vreedsame manier hanteer. \n\nWat ’n wonderlike vaardigheid wat jou tiener ook kan aanleer!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Goeiedag, almal.\n\nVandag se onderwerp is probleemoplossing. \n\nOns weet almal dat daar tye in die lewe is wanneer ons voor probleme te staan kom. Ons weet ook almal op ’n manier dat, wanneer ons onsself in hierdie situasies bevind, dit moeilik is om aan onmiddellike positiewe oplossings te dink.\n\nDaarom is dit belangrik dat, wanneer ons voor probleme te staan kom, ons ’n blaaskans neem, asemhaal, kalm bly en dink aan vaardighede wat ons vir probleemoplossing kan gebruik.\n\nOnthou om ons tieners in te sluit wanneer ons probleme oplos. Dit sal hulle help om verantwoordelik te raak en te leer hoe om hul eie probleme in die toekoms op te los.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Kom ons gaan terug na @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 en kyk met watter oplossings hulle vorendag gekom het.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl en haar@global.w_solve_female_caregiver_1 het met drie oplossings vorendag gekom.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Om ’n ouer van ’n tiener te wees, is regtig moeilik. \n\nDaar is dikwels geen maklike oplossings nie, maar nou het @global.w_solve_female_caregiver_1 geleer dat sy met haar dogter oor hierdie goed kan praat. \n\nVoorheen het sy haar alleen bekommer, nou kan hulle saam met oplossings vorendag kom!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Het jy al die vier stappe van probleemoplossing met jou tiener probeer?\n\nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Julle toegewydheid is ’n inspirasie vir almal. Bly kalm en gaan voort!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Jy is op die regte pad om probleme saam met jou tiener op te los!\n\nVoltooi die @local.workshop_data.in_text_title en kry nog ’n belangrike ouerskapvaardigheid!", + "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Hallo, @fields.user_name! Jy maak sulke goeie vordering op jou ouerskapsreis! \n\nWanneer mens 'n tiener het, beteken dat talle onverwagse probleme kan opduik. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", + "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Hallo, @fields.group_name! Jy maak sulke goeie vordering op jou ouerskapsreis!\n\nWanneer mens 'n tiener het, beteken dit dat talle onverwagse probleme kan opduik. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Met tieners, en die lewe, duik onverwagte probleme op en ons moet dit hanteer.\n\nBegin met die volgende werksessie om te leer hoe jy hierdie probleme suksesvol kan hanteer.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. As julle weet hoe om probleme saam op te los, sal baie situasies makliker wees!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title voltooi het. Môre word ’n nuwe slypskool ontsluit om jou te help om jou tiener veilig te hou.", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Kom ons kyk wat met @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 gebeur het toe @global.w_solve_teen_girl ’n foon by ’n seun gekry het...’n foon!", + "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, waar het jy daardie ding gekry?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 het dit vir my gekoop. Dis ’n lekker foon, @global.w_solve_female_caregiver_1. Dit neem wonderlike foto’s!”", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ek wil nie daardie duur ding sien nie! Daardie seun is moeilikheid! Hoe dink hy gaan jy hom hiervoor terugbetaal?! \n\n@global.w_solve_teen_girl: “Dis nie hoe dit werk nie, @global.w_solve_female_caregiver_1! Dis nie regverdig nie!”", + "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ek wil dit nie hoor nie!” \n\n@global.w_solve_teen_girl: “Jy probeer nie eens na my luister nie! Ek weet nie waarom ek enigsins met jou probeer nie!”", + "Let’s see how problem solving works in practice.": "Kom ons kyk hoe probleemoplossing in die praktyk werk.", + "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 kom huis toe van die werk af.\n\n@global.w_solve_female_caregiver_2 (dink): “Ai, my arme voete! Ek moet vir ’n rukkie sit en ’n koppie koffie drink voor ek vir almal begin kos maak.”", + "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: “@global.w_solve_teen_boy_2! Wat doen jy? Daardie brood was vir aandete! Nou sal daar nie vir ons almal genoeg wees nie!”", + "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Jammer, @global.w_solve_female_caregiver_2, ek was net honger.Ek kan verduidelik, jy sien, daar is ’n ou by die skool... \n\n@global.w_solve_female_caregiver_2 ( dink): “Neem ’n blaaskans...haal net asem…”", + "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Gee my net ’n oomblik. Ek is moeg en nou is ek bekommerd dat ek nie genoeg kos vir aandete gaan hê nie.” \n\n@global.w_solve_teen_boy_2: “Ek is jammer, @global.w_solve_female_caregiver_2.”", + "Step 1: KNOW IT": "Stap 1: WEET DIT", + "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Vertel my nou, waarom is jy so honger? Het jy nie jou middagete by die skool geëet nie?” \n\n@global.w_solve_teen_boy_2: “Dis die probleem. Daar is ’n ou by die skool wat my boelie. Hy sê as ek nie elke dag my middagete vir hom gee nie, gaan hy en sy vriende my seermaak. Hy maak my so kwaad!”", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, maar ek is bly jy het my vertel, @global.w_solve_teen_boy_2. Dit beteken nie dat jy almal se aandete kan eet nie. Wanneer ons klaar gepraat het, moet jy winkel toe gaan en nog brood gaan koop. Maar nou eers: Wat dink jy moet ons aan die boelieprobleem doen?”\n\n@global.w_solve_teen_boy_2: “Wel… Ek wil hom net slaan of hom terugkry.”", + "Step 2: SOLVE IT": "Stap 2: LOS DIT OP", + "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: “Hmmm… wat dink jy sal gebeur as jy dit doen?”\n\n@global.w_solve_teen_boy_2: “Ek weet nie. Hy is groter as ek, so hy sal my waarskynlik meer seermaak. En ek kan by die skool in die moeilikheid kom en geskors word.”", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ja, dit kan gebeur. Wat kan ons in plaas daarvan doen?”\n\n@global.w_solve_teen_boy_2: “Ek neem aan ek kan vir die onderwyser sê. Maar dan gaan die ander kinders my ’n klikbek noem. Miskien kan jy met die onderwyser praat?”", + "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Dit klink na ’n beter idee. Ek kan met sy ouers ook praat, as jy wil.”\n\n@global.w_solve_teen_boy_2: “Dit sal gaaf wees, as jy dink dit sal ook help. Dankie, @global.w_solve_female_caregiver_2.”", + "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Enigiets vir jou, my kind. Ek sal dit net na aandete doen. En weet jy, as dit nie werk nie, kan ons altyd iets anders saam probeer.”\n\n@global.w_solve_teen_boy_2: “Dankie, @global.w_solve_female_caregiver_2.”", + "Step 3: TRY IT": "Stap 3: PROBEER DIT", + "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "’n Week later... \n\n@global.w_solve_female_caregiver_2: “Hoe gaan dinge nou by die skool?”\n\n@global.w_solve_teen_boy_2: “Dit gaan beter, die seun vat nie meer my middagete nie. Maar hy is nog steeds baie gemeen met my.”", + "Step 4: TEST IT": "Stap 4: TOETS DIT", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, @global.w_solve_teen_boy_2. Sal ek jou oom vra om met sy ouers te gaan praat? As dit nie werk nie, sal ons iets anders probeer!” \n\n@global.w_solve_teen_boy_2: “Ja, dankie@global.w_solve_female_caregiver_2. Ek weet ten minste jy is aan my kant.”", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Maak jou oë toe, asem in, en weet dat alles wat jy gedoen het, baie belangrik is.", + "Ground @global.w_solve_teen_girl for a month": "Hok @global.w_solve_teen_girl vir ’n maand", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Jy mag vir die volgende maand nie uitgaan nie.”", + "That didn’t work... Let's try something else.": "Dit het nie gewerk nie... Kom ons probeer iets anders.", + "Return the phone and save up": "Gee die foon terug en spaar", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Ek probeer nie jou vriend van iets beskuldig nie, en ek is ook nie jaloers nie. Ek is net bekommerd dat wanneer iemand ’n geskenk gee, dit moeilik is om ‘nee’ te sê wanneer hulle iets in ruil vra – soos seks. As jy ’n foon wil hê, sal ons saam spaar sodat jy jou eie besluite kan neem sonder om hom iets te skuld.”", + "This is great! Try the third option as well.": "Dit is wonderlik! Probeer die derde opsie ook.", + "Learn about safe sex": "Leer oor veilige seks", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Dit laat my besef dat ons oor kêrels moet praat en oor hoe om jouself te beskerm. Baie tieners van jou ouderdom raak swanger of raak MIV-positief. Kom ons gaan kliniek toe sodat jy met die verpleegster kan praat oor hoe jy veilig kan bly.”", + "This is great!": "Dis wonderlik!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en nadenke – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Bespreek onder mekaar:\n\nHoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Onthou julle vir @global.w_solve_teen_girl en die foon wat sy by die seun gekry het?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Hoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "Take a few deep breaths to calm down, and": "Haal ’n paar keer diep asem om te kalmeer, en", + "KNOW IT": "WEET DIT", + "Identify the problem.": "Identifiseer die probleem.", + "SOLVE IT": "LOS DIT OP", + "Think of possible solutions and what would happen if we used them.": "Dink aan moontlike oplossings en wat sal gebeur as ons dit gebruik.", + "TRY IT": "PROBEER DIT", + "Choose a solution and try it out.": "Kies ’n oplossing en probeer dit.", + "TEST IT": "TOETS DIT", + "Did it work? Great! If it did not work, then try another solution.": "Het dit gewerk? Wonderlik! As dit nie gewerk het nie, probeer ’n ander oplossing.", + "Let's practice problem-solving!": "Kom ons oefen probleemoplossing!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Oefen saam aan ’n probleem wat julle nou het. Een van julle is die ouer en een is die tiener. \n\nPrys mekaar en moedig mekaar aan – ons is trots op jou!\n\nOnthou die stappe: \nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "We care about you, and how life is treating you.": "Ons gee om vir julle en hoe die lewe julle behandel.", + "You are a star. And you are making a real difference. Be proud of yourself.": "Jy is ’n ster. En jy maak ’n werklike verskil. Wees trots op jouself.", + "Sorry that things are not easy today. All parents have these days.": "Jammer dat dinge vandag nie maklik is nie. Alle ouers het sulke dae.", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Julle het hierdie week se slypskool voltooi.\n\nVolgende week sal ons oor geld praat – julle sal die volgende nodig hê:\n* ’n vel papier/karton\n* ’n pen\n* 20 klein klippies/boontjies/pitte\n\nDit sal pret wees!", + "There are two home practices for this week.": "Daar is twee tuisoefeninge vir hierdie week.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Elke keer as jy gespanne of ontsteld voel: asem vyf keer in en uit voordat jy reageer.\n\nEn wanneer julle albei kalm is, deel met jou tiener hoe jy voel.", + "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Bespreek “veiligheid-amnestie” met jou tiener, en dink saam aan ’n situasie waar julle dit sou kon gebruik.", + "Safety Amnesty Story": "Storie oor veiligheid-amnestie", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Elke keer wanneer jy ’n blaaskans neem voor jy reageer, of wanneer jy iets doen om jou tiener veilig te hou, tik op jou @global.parent_points en vier jou sukses!", "Did you experience any of these challenges when sharing how you feel with your teen?": "Het jy enige van hierdie uitdagings ondervind toe jy met jou tiener gepraat het oor hoe jy voel?", "What was difficult for you about sharing how you feel with your teen?": "Wat het jy moeilik gevind toe jy jou gevoelens met jou tiener deel?", "I was afraid my teen would think I was weak.": "Ek was bang my tiener sou dink ek is swak.", @@ -1394,80 +1332,135 @@ "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Om gevoelens te deel, help jou tiener om daarvan bewus te wees en dieselfde te leer doen. Jy kan kies hoeveel besonderhede jy oor die situasie wil deel. Dit hang van jou af! Jy kan ook kies om vrae later te beantwoord deur te sê: “Ek voel nou kwaad/gestres. Kan jy my asseblief ’n bietjie tyd gee? Ons kan vanaand meer hieroor praat.”", "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Ek was te gestres of kwaad om te probeer om my gevoelens te deel – ek verkies om alleen te wees as ek so voel.", "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Dit is oukei om op daardie oomblik nie te wil deel nie. Soek ’n bietjie tyd om later te verduidelik, wanneer jy kalmer voel, sodat almal kan verstaan.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel. Jy het op die @data.habit.consequence.in_text_title getik – welgedaan dat jy onthou het!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel.", - "introduce a consequence together": "kom oor 'n gevolg ooreen", - "Did you have any challenges when trying to introduce a consequence together?": "Het jy enige uitdagings ervaar toe julle probeer het om saam oor ’n gevolg oor een te koml?", - "What was difficult for you about introducing a consequence with your teen?": "Wat was vir jou moeilik toe jy ’n gevolg saam met jou tiener in te stel?", - "I got very angry when my teen broke the rule.": "Ek het baie kwaad geword toe my tiener die reël gebreek het.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Wanneer ons ’n pouse neem voordat ons reageer, help dit ons om te kalmeer en beter te reageer.\n\nVolgende keer dat jou tiener jou kwaad maak, probeer om eers ’n pouse te neem. Selfs ’n paar diep asemhalings kan ’n groot verskil maak!", - "My teen got very angry with me after I gave the consequence.": "My kind of tiener het baie kwaad geword vir my nadat ek die gevolg ingestel het.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Wanneer jou tiener kwaad word, moet jy dalk wegloop totdat julle albei kalm is.\n\nMaak seker dat jou gevolg regverdig en redelik is. Luister na jou tiener se verduideliking, en maak seker dat jy ’n “veiligheid-amnestie” gee as hulle ’n reël om veilig te bly, gebreek het.", - "I introduced the consequence without first discussing it with my teen.": "Ek het die gevolg ingestel sonder om dit eers met my tiener te bespreek.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Kan jy ’n gevolg maak vir as dit weer gebeur? Wanneer ons saam met ons tieners ’n gevolg vasstel, sal die resultaat meer realisties wees en ons tieners sal meer gewillig en in staat wees om die reël te volg.", - "I forgot to follow through with the consequence.": "Ek het vergeet om die gevolg deur te voer.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Ons almal maak foute! Hoe meer konsekwent ons met ons gevolge is, hoe meer sal ons kinders geneig wees om in die toekoms positief op te tree.", - "Even with the consequence, my teen still does not follow the rule.": "Selfs met die gevolg, volg my tiener nog nie die reël nie.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "As jou tiener die reëls bly breek, moet jy dalk meer positiewe tyd met hulle spandeer.\n\nProbeer om voort te gaan met jou ander doelwitte – soos selfsorg, een-tot-een-tyd en lof. Al hierdie vaardighede sal bydra om jou tiener meer geliefd en veilig te laat voel... en jy sal minder gestres wees!", - "We only created a negative consequence, not a positive consequence.": "Ons het net ’n negatiewe gevolg daargestel, nie ’n positiewe gevolg nie.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Dit kan soms moeilik wees om aan positiewe gevolge te dink. Positiewe gevolge sal jou tiener aanmoedig om meer verantwoordelikheid te neem, en jy sal die verskil sien!", - "My teen suggested being hit as a negative consequence.": "My tiener het ’n pakslae as negatiewe gevolg voorgestel.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Tieners is dalk daaraan gewoond dat ’n pakslae die enigste gevolg is as die reëls gebreek word. \n\nDink saam aan ’n paar kalm gevolge wat hulle kan help verstaan dat hulle iets verkeerds gedoen het. Dit sal meer doeltreffend wees en sal positiewe voorbeelde stel!", - "Your goal was to make ONE rule with your teen this week.": "Jou doelwit was om hierdie week EEN reël saam met jou tiener te maak.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Welgedaan! Dit is nie maklik nie, en tieners sal nie heeltyd die reëls gehoorsaam nie, maar om ’n paar sleutelreëls saam te maak, is ’n goeie begin. Prys jouself omdat jy dit probeer het – ons is trots op jou!", - "make rules with their teens": "maak saam met hulle tieners reëls", - "Did you have any challenges when trying to make a rule together?": "Het julle enige uitdagings ervaar toe julle probeer het om saam ’n reël vas te stel?", - "What was difficult for you about making a rule with your teen?": "Wat was vir jou moeilik toe dit kom by ’n reël saam met jou tiener maak?", - "My teen and I could not agree on a rule.": "Ek en my tiener kon nie oor ’n reël saamstem nie.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Dink of die reël redelik is. Kan jou tiener dit volg? Wanneer julle as ’n gesin reëls maak, help dit om aan jou tiener te dink, hoe oud hulle is en wat vir hulle belangrik is.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "My tiener het gevoel dis onregverdig dat hulle die reël moet volg terwyl ek dit nie hoef te volg nie.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Ons moet altyd onthou dat kinders die beste by ons leer. Hoe meer ons die reëls volg, hoe meer sal hulle die reëls ook volg.\n\nJy kan die reël aanpas om seker te maak dat dit realisties is vir almal om te volg, met inagneming van jou verantwoordelikhede en dié van jou tiener (byvoorbeeld skool- of werksaktiwiteite).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ek het ongemaklik gevoel omdat ek voel dat ek die een moet wees wat die reël neerlê, nie my tiener nie.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "My lewensmaat het ongemaklik gevoel omdat hulle voel dat hulle die een moet wees wat die reël neerlê, nie die tiener nie.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Wanneer ons saam met ons tieners reëls neerlê, help dit die gesin om mekaar beter te verstaan. Die reëls sal meer realisties wees, en ons tieners sal meer bereid en in staat wees om die reëls te volg.", - "When we tried to set a rule, we got into an argument.": "Toe ons ’n reël probeer neerlê het, het ons begin argumenteer.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Was jou tiener in ’n goeie bui toe jy probeer het om die reël te maak? Dit is die beste om reëls te maak wanneer die situasie kalm is. As jy of jou tiener moeg of honger is, is dit beter om op ’n later tydstip oor reëls te praat.", - "We were not able to stick to the rule.": "Ons kon nie by die reël bly nie.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Die reël moet spesifiek en realisties wees. Maak seker dat jy ’n reël het wat maklik gehou kan word, soos om elke Sondag een maaltyd saam te eet in plaas van elke aand. Moet jy dalk meer buigsaam wees oor die reël?", - "Mother": "Moeder", - "Father": "Vader", - "TikTok": "TikTok", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer.", + "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Jou doelwit was ook om met jou tiener te praat oor hoe julle albei in ’n stresvolle situasie gevoel het.", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Ons weet hoe spanningsvol dit deesdae is om tieners groot te maak. Dit help jou – en jou gesin – om te leer hoe om jou stres te hanteer.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Goeiedag, almal. \n\nVandag se onderwerp is hoe om spanning te hanteer.\n\nDit is belangrik om te weet hoe om spanning te hanteer. Soms gedra ons kinders hulle op maniere wat ons gespanne maak, en ons as ouers kan ons kinders ook gespanne laat voel.\n\nDit is dus belangrik om te besef wanneer ons spanning ervaar en om dan ’n blaaskans te neem en asem te haal. Dit sal jou help om jou spanning te hanteer.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Hoe was jou stresvlakke hierdie week? Probeer ’n paar keer diep asemhaal voordat jy op jou tiener reageer – dit maak ’n groot verskil.", + "Well done!": "Mooi so!", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Welgedaan dat jy diep asemhaal voordat jy op jou tiener reageer! Elke keer as jy ’n blaaskans neem, kry jy jou beheer terug.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Gelukkig, hartseer, kwaad, opgewonde, bekommerd? Welgedaan dat jy erken hoe jy en ander mense vandag gevoel het! En onthou, môre is ’n splinternuwe dag.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Ons voel almal soms oorweldig. Dit help om diep asem te haal!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar nuttige hulpmiddels te kry om stres te hanteer.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Hallo, @fields.user_name! Veels geluk met die begin van @global.parent_app week 5.\n\n'n Nuwe ouerskap-werkswinkel wag op jou, met wenke oor hoe ons kalm en in beheer kan bly wanneer ons tieners ons mal maak.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Hallo, @fields.group_name! Veels geluk met die begin van @global.parent_app week 5.\n\n'n Nuwe ouerskap-werkswinkel wag op jou, met wenke oor hoe ons kalm en in beheer kan bly wanneer ons tieners ons mal maak.", + "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Ons het ’n nuwe werksessie vir jou beskikbaar oor die hantering van woede en stres. Dit sal jou help om beter na jouself om te sien.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Môre is ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nDeur eers die @local.workshop_data.in_text_title te voltooi, lê jy ’n baie belangrike grondslag: as jy goed voel, sal jou gesin ook beter doen!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Geluk met die voltooiing van die @local.workshop_data.in_text_title. Môre sal jy toegang tot ’n nuwe slypskool kry om jou te help ontspan en nuttige vaardighede te bou!", + "Let's think about what happened in this story.": "Kom ons dink oor wat in hierdie storie gebeur het.", + "How do you think @global.w_stress_teen_boy_1 felt?": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel?", + "And @global.w_stress_male_caregiver?": "En @global.w_stress_male_caregiver?", + "And @global.w_stress_girl?": "En @global.w_stress_girl?", + "Sad": "Hartseer", + "Scared": "Bang", + "Confused": "Verward", + "Angry": "Kwaad", + "Each of them was feeling upset for their own reason!": "Elkeen van hulle was ontsteld om hul eie redes!", + "What could @global.w_stress_male_caregiver have done differently?": "Wat kon @global.w_stress_male_caregiver anders gedoen het?", + "Recognise why he feels stressed": "Erken waarom hy gespanne voel", + "Take a deep breath and speak calmly": "Haal diep asem en praat op ’n kalm manier", + "Show he understands his teen’s feelings": "Wys hy verstaan sy tiener se gevoelens", + "Think about solutions together with @global.w_stress_teen_boy_1": "Dink saam met @global.w_stress_teen_boy_1 aan oplossings", + "Do something positive together with @global.w_stress_teen_boy_1": "Doen iets positief saam met @global.w_stress_teen_boy_1", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Kom ons kyk na ’n voorbeeld van hoe spanning soms net te veel kan raak, vir ons almal:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver: “Los my uit en hou jou neus uit my sake!”", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Wat het ek gedoen? Jy luister nooit nie!” \n\n@global.w_stress_male_caregiver: “Ek het gesê los my uit of jy kry ’n pak slae!”", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Kyk! Ek het ’n huis gemaak!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Wie gee om oor jou simpel huis!”", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Dankie dat jy saam gedink het! Kom ons gaan terug om te sien wat @global.w_stress_male_caregiver nou doen:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver het sy werk verloor. Hy het vol frustrasie en spanning tuis gesit toe @global.w_stress_teen_boy_1 ingekom het.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver ( asem in): “Ek is jammer, my seun. Dit was ’n moeilike dag. Die baas het my afgedank.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “O nee! Ek het ’n nuwe skooluniform nodig.” \n\n@global.w_stress_male_caregiver: “Ek sal probeer, my seun, en jou @global.w_stress_female_caregiver se werk sal help om ons deur te sien terwyl ek ander werk soek.”", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Ek kan ook werk soek om te help,@global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nee, dis oukei, @global.w_stress_teen_boy_1. Ek waardeer jou aanbod. Die belangrikste is dat jy hard werk op skool. Dankie dat jy na my geluister het.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Kom ons gaan speel saam sokker. Dit sal my help om ’n bietjie van hierdie spanning te vergeet.”\n\n@global.w_stress_teen_boy_1: “Oukei, @global.w_stress_male_caregiver!”", + "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Dit het soveel beter gegaan!\n\nOm ’n blaaskans te neem, help om kalm te reageer wanneer jy kwaad of gespanne voel. Probeer dit, jy sal sien!", + "Safety Amnesty": "Veiligheid-amnestie", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Dink terug aan toe jy ’n tiener was. \n\nWas daar ooit ’n tyd wat jy in gevaar was, maar jy kon nie vir jou gesin vertel nie, want hulle sou kwaad wees?\n\nDit het AMPER met @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl gebeur! Kom ons kyk:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: “Moenie vir die grootmense sê nie, maar ek gaan vanaand saam met my vriende na ’n kroeg toe” \n\n@global.w_stress_teen_girl: “Geniet dit! Ek het vir hulle gesê ek bly by my vriendin, maar ek gaan eintlik na ’n cool partytjie toe.”", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ek dink hulle verkoop dwelms. Ons kan almal in hegtenis geneem word. Maar ek kan my ouers nie vertel nie – hulle sal vreeslik kwaad wees.”", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ek is bang. Almal is te dronk om my huis toe te neem. Een seun sê hy sal my neem, maar hy wil eers na sy huis toe gaan. Ek kan my ouers nie vertel nie – ek het gejok oor die partytjie.”", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Hierdie is gevaarlike situasies! Gelukkig het @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl onthou wat @global.w_stress_parent vir hulle gesê het: \n\n“Ek gee meer om oor julle veiligheid as enigiets anders. As julle ooit ontsteld of bang is, kan julle my altyd skakel vir hulp, of my daarvan vertel. \n\nSê net 'VEILIGHEID-AMNESTIE'. Ek belowe ek sal my bes doen om te help en ek sal nie kwaad wees nie – selfs al doen julle iets wat julle nie moet nie.”", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: “@global.w_stress_parent, dis ’n veiligheid-amnestie. Kan jy my kom oplaai? Ek het regtig ’n geleentheid huis toe nodig.”", + "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: “@global.w_stress_parent, veiligheid-amnestie. Ek dink my vriende is in die moeilikheid. Ek wil nie ophou om hulle vriend te wees nie, maar ek is bekommerd. Kan ons praat?”", + "This is fantastic, especially in such difficult times as this. You are a star.": "Dit is wonderlik, veral in sulke moeilike tye soos hierdie. Jy is ’n ster.", + "Today you will explore:": "Vandag sal julle die volgende verken:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Veiligheid-amnestie-storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Storie en nadenke – dit het nie gewerk nie...\n* Storie en nadenke – dit het gewerk!\n* Veiligheid-amnestie-storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", + "Let's discuss what happened in this story.": "Kom ons bespreek wat in hierdie storie gebeur het.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel? En sy @global.w_stress_male_caregiver? En@global.w_stress_girl?\n\nWat kon @global.w_stress_male_caregiver anders gedoen het?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver sou kon...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Erken waarom hy gespanne voel \n* Diep asemhaal en op ’n kalm manier praat\n* Wys hy verstaan sy tiener se gevoelens \n* Dink aan oplossings saam met @global.w_stress_teen_boy_1\n* Iets positief doen saam met@global.w_stress_teen_boy_1", + "BREATHE. Slowly. Pause.": "ASEM IN. Stadig. Neem ’n blaaskans.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Voor jy iets sê, asem vyf keer stadig in en uit. Dit sal jou kalmeer, en jou ’n kans gee om te dink.", + "SHARE how you feel": "DEEL hoe jy voel", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Dis moeilik. Baie van ons is geleer om nie te huil nie, om nie ons gevoelens vir ons kinders te wys nie. Maar haal diep asem en vertel hulle op ’n kalm manier hoe jy voel. Hulle sal beter verstaan, en ook van jou leer hoe om stres te hanteer.", + "SHOW them you care": "WYS hulle dat jy omgee", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Dit is ook moeilik!. Spanning maak dat ons op onsself fokus. Maar ons tieners het ons ondersteuning nodig. Vra hulle hoe hulle voel. Luister na hulle en stel hulle gerus. Probeer hulle ’n drukkie gee of sê ‘ek verstaan’. Dit kan alles verander.", + "SEEK the positive": "VIND die positiewe", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Kan jy en jou tiener dink aan idees wat dalk kan help? Kan julle iets positief saam doen om die stres uit julle gedagtes te kry?", + "If all else fails, breathe. You can do this.": "As niks werk nie, haal asem. Jy kan dit doen.", + "Looking after yourself matters.": "Om na jouself om te sien, maak saak.", + "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Wonderlik! So bly om te hoor dit gaan goed met jou vandag. Wat ’n wonderlike gevoel!", + "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Soms gaan dinge goed. Soms nie. En soms weet ons nie heeltemal wat om te dink nie... en dit is heeltemal oukei! Onthou, jy is nie alleen nie.", + "My Favourite Activities": "My gunsteling aktiwiteite", + "All Activities": "Alle aktiwiteite", + "Random Activity": "Lukrake aktiwiteite", + "This Week's Activity": "Hierdie week se aktiwiteit", + "Chat Together": "Gesels saam", + "Do Together": "Doen saam", + "Your @global.parent_app Code": "Jou @global.parent_app-kode", + "Terms & Conditions": "Bepalings en Voorwaardes", + "Privacy Policy": "Privaatheidsbeleid", + "Real-world ideas": "Werklike idees", + "Ideas": "Idees", + "Ideas from other families...": "Idees van ander gesinne...", + "Challenges & solutions": "Uitdagings en oplossings", + "Submit": "Dien in", + "Find out more": "Vind meer uit", + "Show me how": "Wys my hoe", + "Tell me more!": "Vertel my meer!", + "Let's go!": "Kom ons gaan!", + "Check it out!": "Kyk hierna!", + "Done": "Klaar", + "Next": "Volgende", + "Previous": "Vorige", + "Save": "Stoor", + "Skip": "Slaan oor", + "Continue": "Gaan voort", + "Finish with a song": "Sluit af met ’n liedjie", + "Goodbye!": "Totsiens!", + "No gadget use the next day": "Geen gebruik van toestelle die volgende dag nie", + "Take 5 minutes pause in separate part of the room": "Neem vir 5 minute ’n blaaskans in aparte deel van die kamer", + "Write a letter of apology": "Skryf ’n brief om verskoning te vra", + "Cannot see friends the next day": "Kan nie die volgende dag vriende sien nie", + "Cannot play with phone after dinner (or next hour)": "Kan nie na aandete (of vir die volgende uur) met foon speel nie", + "Extra time with friends on weekend (1hr)": "Ekstra tyd saam met vriende oor die naweek (1 uur)", + "Cooking teen’s favourite meal": "Maak die tiener se gunstelingmaaltyd", + "Extra time with phone after dinner (30 min)": "Ekstra tyd met foon na aandete (30 min)", + "Watching teen’s T.V. show together": "Kyk saam na tiener se TV-program", + "Extra one-on-one time on Sunday (30 min)": "Ekstra een-tot-een-tyd Sondag (30 min)", + "Take a deep breath and pause before responding": "Haal diep asem en wag voor jy reageer", + "Listen to your teen": "Luister na jou tiener", + "Praise your teen for sharing": "Prys jou tiener omdat hulle deel", + "Use problem solving skills": "Gebruik probleemoplossingvaardighede", + "Work out where you can get help": "Vind uit waar jy hulp kan kry", "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Om na hierdie video te kyk, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, kyk na die video of laai dit af wanneer jy op wifi is.", "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Om hierdie webwerwe te besoek, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, besoek hierdie webwerwe wanneer jy op wifi is.", "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Om hierdie boodskap te stuur, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, stuur hierdie boodskap wanneer jy op wifi is.", - "COVID": "COVID", - "Welcome and Self-Care": "Welkom en selfsorg", - "Self-Care": "Selfsorg", - "How to add self-care": "Hoe om selfsorg by te voeg", - "One-on-One Time": "Een-tot-een-tyd", - "How to spend one-on-one time": "Hoe om een-tot-een-tyd deur te bring", - "Praise": "Prys", - "How to praise": "Hoe om te prys", - "Positive Instructions": "Positiewe opdragte", - "How to give positive instructions": "Hoe om positiewe opdragte te gee", - "Managing Stress": "Hantering van spanning", - "How to manage stress": "Hoe om spanning te hanteer", - "Family Budgets": "Gesinsbegrotings", - "How to budget & save": "Hoe om te begroot en te spaar", - "Rules": "Reëls", - "How to create rules": "Hoe om reëls te skep", - "Calm Consequences": "Kalm gevolge", - "How to give calm consequences": "Hoe om kalm gevolge te gee", - "Problem Solving": "Probleemoplossing", - "How to solve problems": "Hoe om probleme op te los", - "Teen Safety": "Tienerveiligheid", - "How to keep your teen safe": "Hoe om jou tiener veilig te hou", - "Dealing with Crisis": "Krisishantering", - "How to deal with crisis": "Hoe om ’n krisis te hanteer", - "Celebration and Next Steps": "Viering en volgende stappe", - "How to support each other": "Hoe om mekaar te ondersteun", - "Talk about @global.home_practice": "Praat oor@global.home_practice", - "Home Practice Review": "Gaan tuisoefening na", - "Let's talk about how your home practice went this week.": "Kom ons gesels oor hoe dit hierdie week met jou tuisoefening gegaan het.", - "In my group": "In my groep", - "By myself": "Op my eie", - "awesome parent": "ongelooflike ouer", - "friends": "vriende", + "Severe illness or death of a friend or family member": "Ernstige siekte of dood van ’n vriend of familielid", + "Robbery": "Diefstal", + "Flooding": "Vloed", + "Political violence": "Politieke geweld", + "Losing my job": "Verloor my werk", + "Pandemic (COVID-19)": "Pandemie (COVID-19)", + "ParentApp": "OuerToep", + "Weekly Workshops": "Weeklikse Slypskole", + "Weekly Workshop": "Weeklikse Slypskole", + "Weekly Workshop Options": "Opsies vir weeklikse Slypskole", + "ParentPoints": "OuerPunte", + "ParentPoint": "OuerPunt", + "Parent Library": "Ouerbiblioteek", + "To solve this challenge, I will try to:": "Om hierdie uitdaging te oorkom, sal ek probeer om:", + "My challenge is not listed here.": "My uitdaging is nie op hierdie lys nie.", "New workshop ready tomorrow!": "Nuwe slypskool môre gereed!", "New workshop!": "Nuwe slypskool!", "Workshop Reminder": "Slypskool-herinnering", @@ -1477,36 +1470,7 @@ "Something Fun": "Iets prettig", "Your @global.parent_points this week": "Jou @global.parent_points hierdie week", "Home Practice Reminder": "Herinnering aan tuisoefening", - "To solve this challenge, I will try to:": "Om hierdie uitdaging te oorkom, sal ek probeer om:", - "My challenge is not listed here.": "My uitdaging is nie op hierdie lys nie.", - "ParentApp": "OuerToep", - "Weekly Workshops": "Weeklikse Slypskole", - "Weekly Workshop": "Weeklikse Slypskole", - "Weekly Workshop Options": "Opsies vir weeklikse Slypskole", - "ParentPoints": "OuerPunte", - "ParentPoint": "OuerPunt", - "Parent Library": "Ouerbiblioteek", - "Real-world ideas": "Werklike idees", - "Ideas": "Idees", - "Ideas from other families...": "Idees van ander gesinne...", - "Challenges & solutions": "Uitdagings en oplossings", - "Submit": "Dien in", - "Find out more": "Vind meer uit", - "Show me how": "Wys my hoe", - "Tell me more!": "Vertel my meer!", - "Let's go!": "Kom ons gaan!", - "Check it out!": "Kyk hierna!", - "Done": "Klaar", - "Next": "Volgende", - "Previous": "Vorige", - "Save": "Stoor", - "Skip": "Slaan oor", - "Continue": "Gaan voort", - "Finish with a song": "Sluit af met ’n liedjie", - "Goodbye!": "Totsiens!", - "Your @global.parent_app Code": "Jou @global.parent_app-kode", - "Terms & Conditions": "Bepalings en Voorwaardes", - "Privacy Policy": "Privaatheidsbeleid", + "COVID": "COVID", "Make me smile": "Laat my glimlag", "Get me going": "Kry my aan die gang", "My Favourite Relaxes": "My gunsteling maniere om te ontspan", @@ -1516,16 +1480,14 @@ "Listen & Relax (1-2 minutes)": "Luister en ontspan (1–2 minute)", "Listen & Relax (3-5 minutes)": "Luister en ontspan (3–5 minute)", "Do & Relax (5-10 minutes)": "Doen en ontspan (5–10 minute)", - "My Favourite Activities": "My gunsteling aktiwiteite", - "All Activities": "Alle aktiwiteite", - "Random Activity": "Lukrake aktiwiteite", - "This Week's Activity": "Hierdie week se aktiwiteit", - "Chat Together": "Gesels saam", - "Do Together": "Doen saam", - "Tap and type": "Tik op en tik in", - "Tap and choose": "Tik op en kies", - "Type your own": "Tik jou eie in", - "I've understood this. Don't show me this message again.": "Ek het dit verstaan. Moenie weer vir my hierdie boodskap wys nie.", + "At home": "Tuis", + "Buy things we can sell": "Koop goed wat ons kan verkoop", + "At a bank": "By ’n bank", + "In a savings group": "In ’n spaargroep", + "Teens completing school/university": "Tieners wat klaarmaak op skool/universiteit", + "Building/expanding a house for my family": "Bou ’n huis vir my gesin of brei dit uit", + "Starting a business": "Begin ’n besigheid", + "Buying a car for my family": "Koop ’n motor vir my gesin", "Walk to the shops": "Stap winkel toe", "Get water together": "Kry saam water", "Do a chore together": "Doen ’n takie saam", @@ -1536,41 +1498,26 @@ "Review homework": "Kyk die huiswerk deur", "Chat before bedtime": "Gesels voor slaaptyd", "Play a game/sport": "Speel ’n speletjie/sport", - "Teens completing school/university": "Tieners wat klaarmaak op skool/universiteit", - "Building/expanding a house for my family": "Bou ’n huis vir my gesin of brei dit uit", - "Starting a business": "Begin ’n besigheid", - "Buying a car for my family": "Koop ’n motor vir my gesin", - "Severe illness or death of a friend or family member": "Ernstige siekte of dood van ’n vriend of familielid", - "Robbery": "Diefstal", - "Flooding": "Vloed", - "Political violence": "Politieke geweld", - "Losing my job": "Verloor my werk", - "Pandemic (COVID-19)": "Pandemie (COVID-19)", - "At home": "Tuis", - "Buy things we can sell": "Koop goed wat ons kan verkoop", - "At a bank": "By ’n bank", - "In a savings group": "In ’n spaargroep", - "No gadget use the next day": "Geen gebruik van toestelle die volgende dag nie", - "Take 5 minutes pause in separate part of the room": "Neem vir 5 minute ’n blaaskans in aparte deel van die kamer", - "Write a letter of apology": "Skryf ’n brief om verskoning te vra", - "Cannot see friends the next day": "Kan nie die volgende dag vriende sien nie", - "Cannot play with phone after dinner (or next hour)": "Kan nie na aandete (of vir die volgende uur) met foon speel nie", - "Extra time with friends on weekend (1hr)": "Ekstra tyd saam met vriende oor die naweek (1 uur)", - "Cooking teen’s favourite meal": "Maak die tiener se gunstelingmaaltyd", - "Extra time with phone after dinner (30 min)": "Ekstra tyd met foon na aandete (30 min)", - "Watching teen’s T.V. show together": "Kyk saam na tiener se TV-program", - "Extra one-on-one time on Sunday (30 min)": "Ekstra een-tot-een-tyd Sondag (30 min)", - "Take a deep breath and pause before responding": "Haal diep asem en wag voor jy reageer", - "Listen to your teen": "Luister na jou tiener", - "Praise your teen for sharing": "Prys jou tiener omdat hulle deel", - "Use problem solving skills": "Gebruik probleemoplossingvaardighede", - "Work out where you can get help": "Vind uit waar jy hulp kan kry", + "Tap and type": "Tik op en tik in", + "Tap and choose": "Tik op en kies", + "Type your own": "Tik jou eie in", + "I've understood this. Don't show me this message again.": "Ek het dit verstaan. Moenie weer vir my hierdie boodskap wys nie.", + "Talk about @global.home_practice": "Praat oor@global.home_practice", + "Home Practice Review": "Gaan tuisoefening na", + "Let's talk about how your home practice went this week.": "Kom ons gesels oor hoe dit hierdie week met jou tuisoefening gegaan het.", + "In my group": "In my groep", + "By myself": "Op my eie", + "awesome parent": "ongelooflike ouer", + "friends": "vriende", "Welcome to @global.parent_app": "Welkom by @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Welkom by @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jy verdien om goed te voel en om gelukkiger gesinsverhoudings te hê.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app sal jou en jou gesin op drie maniere ondersteun:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hierdie groot knoppie neem jou na jou @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  ’n Slypskool sal een keer per week vir jou gereed wees – elke keer met die fokus op ’n verskillende ouervaardigheid. Druk dit om jou eerste slypskool te begin!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Die ronde knoppie verskyn wanneer ’n nuwe @global.weekly_workshop vir jou gereed is om te doen.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Druk hierdie groot knoppie na om jou@global.parent_points-skerm te gaan.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hou rekord van jou sukses in selfsorg en ouerskap.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kyk na jou vordering.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Vier wat jy daagliks regkry!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hoe jy ook al begin, die blote feit dat jy hier is, wys jy gee om.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Jy verdien dit om goed te voel en gelukkiger gesinsverhoudinge te hê.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is hier om jou te ondersteun.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hier volg hoe om die toep te gebruik:

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hierdie groot knoppie neem jou na jou @global.weekly_workshops.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Elke week sal jy 'n nuwe werkswinkel ontsluit wat op 'n verskillende ouerskapsvaardigheid fokus.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Die ronde knoppie verskyn wanneer 'n nuwe werkswinkel gereed is vir jou.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Elke nuwe ouerskapsvaardigheid kom met 'n @global.parent_point.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Gebruik @global.parent_points om jou prestasies te vier!

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Verken die ekstra ontspannings- en ouerskapaktiwiteite!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jy kan ook vinnige ouerskapwenke en tegniese ondersteuning kry.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Snuffel 'n bietjie rond! Waar jy ook al begin, net die feit dat jy hier is, wys jy gee om.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Gaan na die @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Druk hierdie knoppie op die tuisskerm om na die @global.weekly_workshops te gaan

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Gaan na die @global.weekly_workshop_options", @@ -1581,55 +1528,6 @@ "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Dit wys die @global.weekly_workshop waarop jy tans is.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Jy kan hier verander of jy jou @global.weekly_workshops as ’n groep of op jou eie wil doen.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tik hier om jou groep se naam te verander.

                                                                                                                                                                                  ", - "Welcome to ParentApp. Click here to start your journey!": "Welkom by OuerToep. Klik hier om jou reis te begin!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Hoop jy voel oukei. Ouerskap is moeilik, maar dit is nooit te laat om weer met jou tiener te begin nie. Jou eerste ouerskapwerksessie is gereed! Klik hier om jou OuerToep-reis te begin!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om jou spanning as ouer te hanteer.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Hallo, weereens! Dit is nooit te laat om OuerToep te gebruik en aangepaste ouerskapondersteuning te kry nie. Hoekom probeer jy dit nie terwyl jy werk toe pendel, of terwyl jy kos kook nie? Miljoene ouers het ons materiaal nuttig gevind.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om jou tiener se gedrag te hanteer.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Hallo! Is alles oukei? Dit lyk asof jy OuerToep nie onlangs oopgemaak het nie. Hoekom probeer jy nie? Miljoene ouers het hierdie materiaal nuttig gevind. Ons is steeds hier om jou te ondersteun.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "OuerToep mis jou! Daar is baie om te ondersoek. Ons is steeds hier om jou te ondersteun.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou tiener voor te berei vir sukses.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om weer ’n band met jou tiener te vorm!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Hallo ongelooflike ouer! Onthou om ook vir jouself te sorg - dit sal jou EN jou gesin help! Kry jou wenke en meer in @global.parent_app.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Hallo ongelooflike ouer! Onthou, jy kan baie nuttige wenke in @global.parent_app vind.", - "New message from PLH": "Nuwe boodskap van PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Hallo ongelooflike ouer! @global.parent_app is hier om jou te ondersteun. Kom kyk nou!", - "**Welcome and Self-Care** workshop": "**Welkom en selfsorg**-slypskool", - "How to do self-care": "Hoe om selfsorg te doen", - "**One-on-One Time** workshop": "**Een-tot-een-tyd**-slypskool", - "**Praise** workshop": "**Prys**-slypskool", - "**Positive Instructions** workshop": "**Positiewe opdragte**-slypskool", - "**Managing Stress** workshop": "**Streshantering**-slypskool", - "**Family Budgets** workshop": "**Gesinsbegrotings**-slypskool", - "**Rules** workshop": "**Reëls**-slypskool", - "**Calm Consequences** workshop": "**Kalm gevolge**-slypskole", - "**Problem Solving** workshop": "**Probleemoplossing**-slypskole", - "**Teen Safety** workshop": "**Tienerveiligheid**-slypskole", - "**Dealing with Crisis** workshop": "**Krisishantering**-slypskool", - "**Celebration and Next Steps** workshop": "**Viering en volgende stappe**-slypskool", - "Quick pause": "Vinnige verposing", - "Power of three": "Mag van drie", - "One thing today": "Een ding vandag", - "Breathe to three": "Haal asem – tel tot drie", - "In and out": "In en uit", - "Think about today": "Dink aan vandag", - "Pause to respond": "Neem ’n blaaskans voor jy antwoord", - "Small things": "Klein goedjies", - "Body scan": "Liggaamskandering", - "Feel the ground": "Voel die grond", - "Counting sounds": "Tel geluide", - "Feel your feeling": "Voel jou gevoelens", - "Your song": "Jou lied", - "Ground & gratitude": "Grond en dankbaarheid", - "Notice how you feel": "Let op hoe jy voel", - "Pause power": "Blaaskans se krag", - "Taking care of yourself": "Sorg vir jouself", - "Take a pause": "Neem ’n blaaskans", - "Physical activity": "Fisiese aktiwiteit", - "List of things": "Lys van goed", - "Connect": "Verbind", - "Prevent anger": "Voorkom woede", - "Angry? Take a break": "Kwaad? Neem ’n blaaskans", "Reflect on the positive": "Dink na oor die positiewe", "Check-in chat": "Aanmeldgesprek", "Dream Travel": "Droomreis", @@ -1656,37 +1554,15 @@ "What are you doing?": "Wat doen jy?", "Here is a fun game you can do with your family!": "Hier is 'n prettige speletjie wat jy saam met jou gesin kan doen!", "Crazy chicken": "Mal hoender", - "My Tips": "My wenke", - "**My Tips** in the @global.parent_centre": "**My wenke** in die @global.parent_centre", - "Essential Tools": "Noodsaaklike hulpmiddels", - "**Essential Tools** in the @global.parent_centre": "**Noodsaaklike hulpmiddels** in die @global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Pas @global.parent_app aan** in die @global.parent_centre", - "Customise Again": "Pas weer aan", - "Relax & Activities": "Ontspan en aktiwiteite", - "under **Relax & Activities** in the @global.parent_centre": "onder **Ontspan & aktiwiteite** in die @global.parent_centre", - "Help": "Hulp", - "**Help** in the @global.parent_centre": "**Hulp** in die @global.parent_centre", - "Technical Support": "Tegniese steun", - "**Technical Support** in the @global.parent_centre": "**Tegniese ondersteuning** in die @global.parent_centre", - "Coping with @global.covid": "Hantering van @global.covid", - "**Coping with @global.covid** in the @global.parent_centre": "**Hantering van @global.covid** in die @global.parent_centre", - "Coping with grief": "Hantering van hartseer", - "**Coping with grief** in the @global.parent_centre": "**Hantering van hartseer** in die @global.parent_centre", - "Message Archive": "Boodskapargief", - "**Message Archive** in the @global.parent_centre": "**Boodskapargief** in die @global.parent_centre", - "Support Contacts": "Ondersteuningskontakte", - "**Support Contacts** in the @global.parent_centre": "**Ondersteuning kontakte** in die @global.parent_centre", - "Evidence Base": "Bewysbasis", - "**Evidence Base** in the @global.parent_centre": "**Bewysbasis** in die @global.parent_centre", + "Help yourself cope": "Help jouself met hanteringstrategieë", + "Help your teen cope": "Help jou tiener met lhanteringstrategieë", + "Practical steps": "Praktiese stappe", "How to talk to my teen": "Hoe om met my tiener te praat", "Steps to deal with news": "Stappe om nuus te verwerk", "How can I help my teen choose well?": "Hoe kan ek my tiener help met goeie keuses?", "What influences teen decisions?": "Wat beïnvloed tiener besluite?", "How does my teen feel?": "Hoe voel my tiener?", "Changing negative to positive": "Verander negatief na positief", - "Help yourself cope": "Help jouself met lewenshantering", - "Help your teen cope": "Help jou tiener met lewenshantering", - "Practical steps": "Praktiese stappe", "**Relax** @global.parent_point": "**Ontspan** @global.parent_point", "Doing a relaxation activity": "Doen 'n ontspanningsaktiwiteit", "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Elke keer wanneer jy ’n ontspanningsaktiwiteit doen, klik op die @global.parent_point en vier jou sukses!", @@ -1694,7 +1570,6 @@ "**Treat yourself well** @global.parent_point": "**Behandel jouself goed** @global.parent_point", "Doing something they like for themselves": "Doen iets vir hulself waarvan hulle hou", "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Elke keer wanneer jy jouself goed behandel, klik op die @global.parent_point en vier jou sukses!", - "Praise yourself": "Prys jouself", "**Praise yourself** @global.parent_point": "**Prys jouself** @global.parent_point", "Praising themselves": "Hulself prys", "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Elke keer wanneer jy jouself prys, klik op die @global.parent_point en vier jou sukses!", @@ -1750,5 +1625,219 @@ "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Jammer dat dit moeilik was. Dit kan uitdagend en emosioneel wees om ’n kaart van risiko’s en plekke om ondersteuning te kry, te maak. Dit help regtig om jou tiener veilig te hou!", "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Jammer dat dit nie so goed gegaan het nie. Dis nie maklik nie. Probeer om dit weer rustig met jou tiener te bespreek. Maar ook, is daar iemand wat jou tiener vertrou, wat saam met jou met jou tiener kan gesels?", "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Wonderlik om te hoor dit het goed gegaan! Wanneer gevolge reg vasgestel is, help dit tieners om hul beter te gedra en maak dit die gesinslewe rustiger.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Wonderlik om te hoor dit het goed gegaan! Wanneer jou tiener leer hoe om probleme op te los, kan hulle daardie vaardigheid dwarsdeur hulle lewens gebruik. ’n Groot geskenk!" + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Wonderlik om te hoor dit het goed gegaan! Wanneer jou tiener leer hoe om probleme op te los, kan hulle daardie vaardigheid dwarsdeur hulle lewens gebruik. ’n Groot geskenk!", + "My Tips": "My wenke", + "**My Tips** in the @global.parent_centre": "**My wenke** in die @global.parent_centre", + "Essential Tools": "Noodsaaklike hulpmiddels", + "**Essential Tools** in the @global.parent_centre": "**Noodsaaklike hulpmiddels** in die @global.parent_centre", + "**Customise @global.parent_app** in the @global.parent_centre": "**Pas @global.parent_app aan** in die @global.parent_centre", + "Customise Again": "Pas weer aan", + "**Customise Again** in the @global.parent_centre": "**Pas weer aan** in die @global.parent_centre", + "Relax & Activities": "Ontspan en aktiwiteite", + "under **Relax & Activities** in the @global.parent_centre": "onder **Ontspan & aktiwiteite** in die @global.parent_centre", + "Help": "Hulp", + "**Help** in the @global.parent_centre": "**Hulp** in die @global.parent_centre", + "Technical Support": "Tegniese steun", + "**Technical Support** in the @global.parent_centre": "**Tegniese ondersteuning** in die @global.parent_centre", + "Coping with @global.covid": "Hantering van @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "**Hantering van @global.covid** in die @global.parent_centre", + "Coping with grief": "Hantering van hartseer", + "**Coping with grief** in the @global.parent_centre": "**Hantering van hartseer** in die @global.parent_centre", + "Message Archive": "Boodskapargief", + "**Message Archive** in the @global.parent_centre": "**Boodskapargief** in die @global.parent_centre", + "Support Contacts": "Ondersteuningskontakte", + "**Support Contacts** in the @global.parent_centre": "**Ondersteuning kontakte** in die @global.parent_centre", + "Evidence Base": "Bewysbasis", + "**Evidence Base** in the @global.parent_centre": "**Bewysbasis** in die @global.parent_centre", + "Quick pause": "Vinnige verposing", + "Power of three": "Mag van drie", + "One thing today": "Een ding vandag", + "Breathe to three": "Haal asem – tel tot drie", + "In and out": "In en uit", + "Think about today": "Dink aan vandag", + "Pause to respond": "Neem ’n blaaskans voor jy antwoord", + "Small things": "Klein goedjies", + "Body scan": "Liggaamskandering", + "Feel the ground": "Voel die grond", + "Counting sounds": "Tel geluide", + "Feel your feeling": "Voel jou gevoelens", + "Your song": "Jou lied", + "Ground & gratitude": "Grond en dankbaarheid", + "Notice how you feel": "Let op hoe jy voel", + "Pause power": "Blaaskans se krag", + "Praise yourself": "Prys jouself", + "Taking care of yourself": "Sorg vir jouself", + "Take a pause": "Neem ’n blaaskans", + "Physical activity": "Fisiese aktiwiteit", + "List of things": "Lys van goed", + "Connect": "Verbind", + "Prevent anger": "Voorkom woede", + "Angry? Take a break": "Kwaad? Neem ’n blaaskans", + "It is hard to find time to have fun with your teenager.": "Dis moeilik om tyd te kry om prettige dinge saam met jou tiener te doen.", + "In our busy lives it’s hard to focus on the positive.": "Dis moeilik om in ons besige lewens op die positiewe te fokus.", + "How many days in the past week have you praised your teen?": "Hoeveel dae die afgelope week het jy jou tiener geprys?", + "This is a very stressful time for families.": "Dit is ’n baie stresvolle tyd vir gesinne.", + "How many days in the past week did you feel very stressed as a parent/caregiver?": "Hoeveel dae die afgelope week het jy as ouer/versorger stres ervaar?", + "Sometimes our children make us really upset.": "Soms ontstel ons kinders ons baie.", + "How many days in the past week did you shout, scream or yell at your teen?": "Hoeveel dae die afgelope week het jy op jou tiener geskree of gegil?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Hoeveel keer die afgelope maand (30 dae) het jou kosgeld opgeraak?", + "It is so stressful when children misbehave.": "Dis so stresvol as kinders stout of ongehoorsaam is.", + "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Hoeveel dae die afgelope week het jy jou kinders fisies gedissiplineer deur hulle te klap, pak te gee of te slaan met jou hand of ’n voorwerp soos ’n stok of ’n belt?", + "It’s hard to keep track of your teenagers when they are becoming independent.": "Dit is moeilik om toesig oor jou tieners te hou wanneer hulle onafhanklik raak.", + "How many days in the past week did you know what your teen was doing and who they were with?": "Hoeveel dae die afgelope week het jy geweet wat jou tiener doen en by wie hulle was?", + "Days in the past week": "Dae gedurende die afgelope week", + "We all want to keep our children safe.": "Ons almal wil ons kinders veilig hou.", + "Days in the past month": "Dae gedurende die afgelope maand", + "Welcome and Self-Care": "Welkom en selfsorg", + "**Welcome and Self-Care** workshop": "**Welkom en selfsorg**-slypskool", + "Self-Care": "Selfsorg", + "How to do self-care": "Hoe om selfsorg te doen", + "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.": "As ouer was dit vir my bykans onmoontlik om tyd vir myself te kry. Ek was altyd besig om na almal rondom my om te sien. Deur @global.parent_app het ek besef hoe belangrik dit is om na myself om te sien. Dit help my EN my gesin! \n\n'n Oomblik net vir myself help my om asem te haal en kennis te neem van hoe ek voel. Selfs 5 minute om 'n koppie tee te drink, maak 'n groot verskil. Nou kan ek my stres beter hanteer.", + "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.": "My pa was altyd besig. Hy sou by die huis kom en ons afjak wanneer ons hom begin uitvra. \n\n@global.parent_app het ons baie gehelp. Ons baklei nie meer nie. Nou, wanneer my pa by die huis kom, sit hy eers vir 5 minute alleen, en dan doen ons saam 'n ontspanningsaktiwiteit van @global.parent_app, sodat ons almal diep kan asemhaal en ontspan. Dan kan ons oor ons dag praat, oor enigiets, goed of sleg, wat gebeur het. Almal is nou soveel gelukkiger.", + "One-on-One Time": "Een-tot-een-tyd", + "**One-on-One Time** workshop": "**Een-tot-een-tyd**-slypskool", + "How to spend one-on-one time": "Hoe om een-tot-een-tyd deur te bring", + "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!": "Toe ek die eerste keer hoor ek moet Een-tot-Een-tyd met my tiener spandeer, was dit vir my moeilik. Ek het nie geweet wanneer om dit te doen of wat om te sê nie. Ek wou nie my tiener bederf sodat hy dink ons moet alles saam doen nie. \n\nMaar ek wou regtig my verhouding met my tiener versterk, en ek wou hê dat hy oopmaak oor wat hom pla. Daarom het ons Een-tot-Een-tyd probeer. \n\nAanvanklik het dit vreemd gevoel, maar dit was later eintlik groot pret! Nou kyk ons saam na sy TV-program en gesels daaroor. En ons kan selfs praat oor hoe my seun verander in adolessensie, en selfs oor meisies en sulke goed!", + "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.": "Toe my ma vra om tyd saam met my te spandeer, het ek gedink, “Miskien is iets verkeerd, miskien is sy siek”. Maar sy het gesê, “Nee, ek wil net tyd saam met jou deurbring”. Ek was skepties, maar ek het dit aanvaar. \n\nSy het gevra waarvan ek hou om te doen. Dit was vreemd en ek was nie gemaklik nie, want sy het nog nooit tyd alleen saam met my spandeer nie. \n\nHoe meer sy aanhou probeer het en ons hierdie tyd saam deurgebring het, hoe lekkerder het dit geword. Sy het begin om haar eie kinderdae met my te deel, goed wat ek nooit vantevore gehoor het nie. Dit het my gehelp om ook te deel wat in my lewe aangaan. Ons gesels selfs oor kêrels en oor probleme wat ek het. Ek weet nou ek kan met my ma praat.", + "Praise": "Prys", + "**Praise** workshop": "**Prys**-slypskool", + "How to praise": "Hoe om te prys", + "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!": "Toe ek gehoor het van hierdie aanprys ding, het ek gedink, “As tieners is ons nooit geprys vir dinge nie, so hoekom moet ons nou begin?”. Maar ek het begin belangstel toe ek hoor wat die voordele van aanprysing kan wees. \n\nDirek na die weeklikse werkswinkel, het ek opgelet dat my tiener doen wat sy elke dag doen: Skottelgoed was. En ek sê, “Dankie dat jy die skottelgoed was, my meisiekind, dit maak my regtig gelukkig dat jy so mooi help.” My tiener het geglimlag en het my selfs 'n drukkie kom gee, iets wat sy nooit doen nie. \n\nHierdie aanprysing besigheid is moeilik. Ek vergeet nog steeds soms, of prys en kritiseer in dieselfde asem. Maar aanprysing maak regtig 'n verskil. Ek het nooit gedink dat eenvoudige woorde van lof soveel verskil aan 'n mens kan maak nie!", + "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.": "Ek was bly toe my ma van aanprysing geleer het. \n\nMy ma het altyd opgelet wanneer ek iets verkeerd gedoen het. Sy sou op my skree en my slaan. \n\nMaar toe my ma die werkswinkel gedoen het, het sy my begin prys vir klein goedjies. Eers het ek gedink, “Wat gaan aan?”, maar toe hou dit aan. Ek het daarvan gehou, so toe doen ek meer goeie dinge waarvan ek gedink het sy sou hou. \n\nDit voel wonderlik dat my ma die goeie dinge sien wat ek doen, en nie net die slegte goed nie.\n\nEk het dit selfs eenkeer vir haar gesê. Gedurende @data.workshop.w_1on1.title, het ek gesê, “Dankie, Ma, dat Ma mooi goed sê wanneer ek iets goeds doen, nie net wanneer ek iets verkeerd doen nie”. Dit het ons albei baie gelukkig gemaak.", + "Positive Instructions": "Positiewe opdragte", + "**Positive Instructions** workshop": "**Positiewe opdragte**-slypskool", + "How to give positive instructions": "Hoe om positiewe opdragte te gee", + "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.": "Voorheen het ek my tieners grootgemaak soos wat ek grootgemaak is: Ek sou vir hulle sê, “Moenie dit doen nie, moenie dat doen nie”. Ons het baie baklei, maar dinge het regtig verander toe ek geleer het om positiewe instruksies te gee.\n\nNou fokus ek op die gedrag wat ek wil sien, en ek gee duidelike en eenvoudige instruksies aan my tieners. Dit het tyd geneem om te leer om te sê, “Doen dit asseblief” in plaas van “Moenie dit doen nie”.\n\nMy tieners, en selfs my man, sê hulle hou van hierdie manier van dinge doen. My tiener het eendag gesê, “Ek hou regtig van hierdie nuwe ma,” en my eie stresvlakke het sommer baie gedaal.", + "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.": "Aanvanklik, het ek nie veel omgegee dat my ma @global.parent_app doen nie. Maar toe begin ek sien dat die manier waarop my ma met ons kommunikeer, begin verander.\n\nOp 'n dag het ek saam met my vriende uitgegaan, en sy het gesê ek moet teen 6 nm. terug wees. Ek het gedink, “O, oukei,” want sy het normaalweg nie duidelike instruksies gegee oor wat sy wou hê nie - sy sou net niks sê nie en dan op my skree omdat ek laat is wanneer ek tuis kom. \n\nToe ek so 5 nm. by die huis kom, het my ma my 'n drukkie gegee en gesê, “Dankie dat jy betyds is”. Dit was vreemd, maar ek het daarvan gehou. \n\nVan toe af het ons baie duideliker kommunikasie in die huis.", + "Managing Stress": "Hantering van spanning", + "**Managing Stress** workshop": "**Streshantering**-slypskool", + "How to manage stress": "Hoe om spanning te hanteer", + "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!": "Die lewe is soms moeilik. Voordat ek by @global.parent_app aangesluit het, was ek die hele tyd knorrig. Ek sou my woede op almal in die huis uithaal, nie net my tieners nie, maar selfs my man. Hulle sou sorg dat hulle wegkom wanneer ek tuis kom, want hulle het geweet ek sou op hulle begin skree. \n\nDit was aanvanklik moeilik om te leer om rustig te raak en asem te haal, maar elke keer wanneer ek dit probeer het, het dit my gehelp om te kalmeer. Nou vlug my tieners nie meer wanneer ek tuis kom nie, en hulle luister eintlik beter as toe ek hulle verskree het!", + "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.": "Wanneer ek ook al iets verkeerd gedoen het, sou my pa kwaad word vir my en my slaan. Hy sou nie eens na my luister nie, en ek sou net so kwaad word vir hom en sommer ook vir almal anders. \n\nNou, wanneer hy kwaad word, haal hy eers 'n paar keer diep asem voordat hy reageer. Dit kalmeer almal in plaas daarvan om 'n bakleiery te veroorsaak.\n\nDit het my regtig gehelp, by die huis en by die skool, want ek hap nie meer na almal nie en ek is nie meer so buierig nie. Wanneer ek regtig kwaad of gestres voel, haal ek ook diep asem, soos my pa. Ek is 'n ander mens.", + "Family Budgets": "Gesinsbegrotings", + "**Family Budgets** workshop": "**Gesinsbegrotings**-slypskool", + "How to budget & save": "Hoe om te begroot en te spaar", + "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.": "Besparing en begroting help my as 'n ouer, en dit help my tieners ook om te verstaan waar die geld heen gaan.\n\nMy tieners het altyd vir hope goed gevra en nie verstaan wanneer ek gesê het, “Ek het nie geld nie”. Hulle sou sê, “Maar Ma het 'n werk!” \n\nEk het met hulle gaan sit en vir hulle gewys waarvoor ons alles betaal en hoeveel oor is. Hulle verstaan dit nou en gee selfs idees oor hoe om te spaar om ons doelwitte te bereik, soos nuwe skoene of 'n verjaardag, en groter doelwitte soos hulle skoolgeld. Vir die oudste het ek selfs 'n spaarrekening geopen.", + "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.": "Ek het die hele tyd vir my ma gevra om vir my mooi klere te koop. Elke keer sou sy sê, “Ek het nie geld nie,” maar ek het geweet sy kry geld by my oom. Ek het nie verstaan waarom sy weier om vir my klere te koop nie. Ek het toe begin dink sy is nie lief vir my nie.\n\nMaar op 'n dag het sy my geroep, ons het gaan sit en sy het gevra: “Wat is die behoeftes en begeertes in ons huis?” Ek het begin met 'n lys van alles wat ek wil hê en nodig het. Toe het my ma my gehelp om ook aan die gesin se behoeftes te dink. Nou verstaan ek waar ons geld heen gaan, vir al die goed wat ons as 'n gesin nodig het. \n\nVan toe af verstaan ek dat ek nie sommer enige tyd kan vra vir iets nie. Nou, wanneer ek iets wil hê, wag ek tot die einde van die maand, wanneer ons almal saam die begroting bespreek om te kyk of dit inpas. Ons verstaan mekaar nou beter.", + "Rules": "Reëls", + "**Rules** workshop": "**Reëls**-slypskool", + "How to create rules": "Hoe om reëls te skep", + "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.": "My tieners het altyd net verdwyn. Ek het nie geweet waar hulle was nie, en ek sou so bekommerd en kwaad raak vir hulle. Ek het altyd gesê, “Dis my huis dié, en dis my reëls; as julle dit nie wil nakom nie, kan julle jul eie plek soek en daar gaan bly”. \n\nToe ons in @global.parent_app van reëls geleer het, het ek besef dat daar reëls vir tieners is, en ook vir volwassenes en vir almal. Indien ons as ouers die reëls nakom, sal ons tieners ons voorbeeld volg.\n\nEk het my bekommernis verduidelik en ons het ooreengekom: Ons kom almal die reël na en sê waar ons heen gaan as ons die huis verlaat. Dit het ons baie gehelp om saam oor reëls te besluit, aangesien my tieners my nie meer as daardie irriterende ouer sien wat net onnodige reëls uitdink nie.", + "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.": "Ek het nog nooit van reëls gehou nie en was baie geneig om van reëls te vergeet. \n\nEendag het ek met my maats gespeel. Die huisreël was dat ek teen 6 nm. tuis moes wees, maar ek het weer vergeet. Teen 6.30 het dit begin donker word en ek was steeds buite, besig om op my foon te speel. Toe kom daar 'n seun, gryp my foon en hardloop weg. \n\nEk verstaan dat reëls regtig kan help om ons veilig te hou, so ek het my gedrag verander en van toe af was ek teen 5 nm. tuis.", + "Calm Consequences": "Kalm gevolge", + "**Calm Consequences** workshop": "**Kalm gevolge**-slypskole", + "How to give calm consequences": "Hoe om kalm gevolge te gee", + "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!": "Wanneer my tieners iets gedoen het wat my kwaad maak, sou ek op hulle skree en hulle dadelik straf. Maar die volgende keer sou hulle dit maar net weer doen! Ek kon nie verstaan waarom hulle my nie hoor nie, selfs al het ek geskree. \n\n@global.parent_app het my gehelp om te verstaan dat my tieners eerder na my sal luister wanneer ek kalm is. So, as iets gebeur, haal ek diep asem en sê, “Ons sal later hieroor praat wanneer ons albei kalm is”.\n\nOns kom nou selfs ooreen oor die gevolge voordat iets verkeerd loop. Dit het wondere verrig - ek het 'n groot verandering in my tieners se gedrag gesien vandat hulle meer betrokke is, en ek stres minder. \n\nEk wens ek het dit lankal geweet, maar dis nooit te laat om te begin nie!", + "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.": "My ma en pa het my altyd gestraf as hulle kwaad was vir my. Hulle sou op my skree en dan sou ek ook kwaad word. Ek het dikwels nie die reëls nagekom nie, want hulle was te streng. Ek het nie verstaan wat hulle wou sê nie, of ek sou nie eens probeer om na hulle te luister nie, want ons was almal kwaad.\n\nEendag het hulle my gevra: Kom ons dink almal saam oor wat die gevolge behoort te wees wanneer jy laat huis toe kom. Dit was wonderlik om my opinie te kon gee – voordat iets sou gebeur wat ons almal sou kwaad maak. Ons is almal kalm en ons stem saam. Dit is nou vir my makliker om die reëls na te kom, want ek weet ek het saamgestem oor die reël en ook oor die gevolg as ek nie die reël nakom nie.", + "Problem Solving": "Probleemoplossing", + "**Problem Solving** workshop": "**Probleemoplossing**-slypskole", + "How to solve problems": "Hoe om probleme op te los", + "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.": "Ek het nie 'n goeie verhouding met my dogter gehad nie. Ek het altyd op haar geskree, en sy het geweier om skool toe te gaan. \n\nEers toe ek Een-tot-Een-tyd saam met haar begin deurbring het, het ek besef dat sy nie skool toe wou gaan nie omdat sy by die skool geboelie is. Ons het gaan sit en die 6 stappe van probleemoplossing gevolg. Ons het die probleem geïdentifiseer, en saam oplossings uitgedink: “Wat kan ek as 'n ouer doen sodat jy skool kan bywoon en veilig voel?”\n\nOns het ooreengekom dat ek met die onderwyser sou gaan praat om die pad vorentoe te bespreek. Ons het regtig saam die oplossings gevind, en ons is nou nader aan mekaar.", + "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.": "Toe my pa my van die stappe vir probleemoplossing vertel het, het dit my met my gesin gehelp, maar dit het my ook met my vriende gehelp. \n\nEk het my vriende vertel van die stappe, en as ons nou stry, gaan sit ons en elkeen stel oplossings voor. Ons kyk dan na die positiewe en negatiewe implikasies van elke oplossing, en ons kom ooreen: “Oukei, kom ons probeer dié een.” \n\nMy vriende het dit selfs by hul eie huise gaan toepas, en dit help met hulle gesinne ook! \n\nDit is wonderlik wanneer ander na jou luister en jou idees aanvaar, selfs al is jy jonk. Ons kan almal daardie harmonie tussen ons vriende en familie bewerkstellig.", + "Teen Safety": "Tienerveiligheid", + "**Teen Safety** workshop": "**Tienerveiligheid**-slypskole", + "How to keep your teen safe": "Hoe om jou tiener veilig te hou", + "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.": "Ek is so dankbaar dat ek die veiligheidsplan saam met my tiener te kon opstel. Ek het gedink ek weet watter areas is veilig vir my tiener en watter nie. Maar toe ons saam die veiligheidsplan opgestel het, het ek besef my dogter ken areas waarvan ek nie geweet het nie. \n\nEk het ook gedink sy is veilig by die skool, maar deur hierdie aktiwiteit het ek besef dat sy by die skool geboelie word en dat die onderwysers niks daaraan doen nie.\n\nHoe meer ons gepraat het, hoe meer het ek verstaan en inligting by my tiener gekry. Dit het my regtig gehelp om my tiener te beskerm en haar veilig te hou.", + "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!": "Wanneer ek of my vriende in die moeilikheid was, sou ek dit altyd vir my ma probeer wegsteek, want sy sou kwaad word en op my skree. \n\nToe ons die kaart van veilige en onveilige plekke gemaak het, het ek baie geleer – ook waarom dit gevaarlik is om elke foto aanlyn te deel. My ma het gesê ek kan haar enige tyd vra as ek 'n probleem het en sy het belowe om nie kwaad te word nie. \n\nSy het haar belofte nagekom, so as ek nou 'n probleem het of ek voel nie veilig nie, weet ek dat ons saam aan 'n oplossing sal dink. Ek kan nou selfs met my ma praat oor die goed wat ek aanlyn doen!", + "Dealing with Crisis": "Krisishantering", + "**Dealing with Crisis** workshop": "**Krisishantering**-slypskool", + "How to deal with crisis": "Hoe om ’n krisis te hanteer", + "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!": "My tiener was die hele tyd kwaad. Hy sou nooit luister nie en ons sou elke dag hewige argumente hê. Deur @global.parent_app het ek begin om meer tyd saam met my tiener te spandeer en so ons verhouding versterk. Eendag het hy my vertel dat hy deel was van 'n bende, maar dat hy daar wou uitkom. \n\nOns het kort- en langtermynplanne gemaak oor hoe hy dit kon doen. Ons lewe lyk nou soveel anders!", + "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.": "Twee jaar gelede is ek deur my oom wat in ons erf gebly het, verkrag. Ek het nie my ma daarvan vertel nie, want ek was bang dat sy my sou slaan, op my sou skree, of my selfs uit die huis sou gooi. Ek het nêrens anders gehad om heen te gaan nie. \n\nToe my ma begin het met @global.parent_app, het sy meer tyd saam met my begin spandeer. Ek was nog steeds bang, maar ek het dit uiteindelik met my ma gedeel. My ma het nie geskree nie, maar sy het geluister en vir my gesê dit is nie my skuld nie. Ons is saam na die polisie en kliniek toe. Ek is so bly dat ek nie hierdie geheim meer alleen hoef te dra nie.", + "Celebration and Next Steps": "Viering en volgende stappe", + "**Celebration and Next Steps** workshop": "**Viering en volgende stappe**-slypskool", + "How to support each other": "Hoe om mekaar te ondersteun", + "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Hallo ongelooflike ouer! Onthou om ook vir jouself te sorg - dit sal jou EN jou gesin help! Kry jou wenke en meer in @global.parent_app.", + "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.": "Hallo ongelooflike ouer! Onthou, jy kan baie nuttige wenke in @global.parent_app vind.", + "Hi great parent! @global.parent_app is here to support you. Check it out now!": "Hallo ongelooflike ouer! @global.parent_app is hier om jou te ondersteun. Kom kyk nou!", + "Welcome to @global.parent_app. Click here to start your journey!": "Welkom by @global.parent_app. Klik hier om jou reis te begin!", + "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Hallo! Is alles oukei? Dit lyk asof jy @global.parent_app nie onlangs oopgemaak het nie. Hoekom probeer jy nie? Miljoene ouers het hierdie materiaal nuttig gevind. Ons is steeds hier om jou te ondersteun.", + "@global.parent_app misses you! There is a lot to explore. We are still here to support you.": "@global.parent_app mis jou! Daar is baie om te ondersoek. Ons is steeds hier om jou te ondersteun.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou tiener voor te berei vir sukses.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om weer ’n band met jou tiener te vorm!", + "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!": "Hoop jy voel oukei. Ouerskap is moeilik, maar dit is nooit te laat om weer met jou tiener te begin nie. Jou eerste ouerskapwerksessie is gereed! Klik hier om jou @global.parent_app-reis te begin!", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om jou spanning as ouer te hanteer.", + "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Hallo, weereens! Dit is nooit te laat om @global.parent_app te gebruik en aangepaste ouerskapondersteuning te kry nie. Hoekom probeer jy dit nie terwyl jy werk toe pendel, of terwyl jy kos kook nie? Miljoene ouers het ons materiaal nuttig gevind.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om jou tiener se gedrag te hanteer.", + "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Hallo, @fields.user_name. Jou @data.workshop.w_1on1.in_text_title is gereed vir jou.", + "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Hallo, @fields.group_name. Julle @data.workshop.w_1on1.in_text_title is gereed vir julle.", + "You've put so much effort into being a better parent. You are loved and appreciated!": "Jy het soveel moeite gedoen om 'n beter ouer te wees. Jy is geliefd en word waardeer!", + "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Dankie dat jy so toegewyd is aan jou ouerskap. \n\nJou @data.workshop.w_1on1.in_text_title is gereed vir jou!", + "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Wanneer jy tyd saam met jou tiener deurbring, help dit om vertroue te bou. \n\nGaan voort met jou @global.parent_app-reis vir wonderlike resultate.", + "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Welgedaan dat jy die @data.workshop.w_1on1.in_text_title voltooi het. Môre kan jy 'n nuwe werkswinkel aanpak om jou te help om te ontspan, geniet en nuwe vaardighede te leer!", + "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Onthou om die @data.workshop.w_1on1.in_text_title te voltooi. Jy sal binne enkele minute waardevolle inligting kry! \n\nWelgedaan dat jy probeer om 'n beter ouer te wees.", + "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.": "Hallo, @fields.user_name! Vandag vier ons twee maande van @global.parent_app! \nHierdie week sal jy meer uitvind oor hoe om jou tiener te help om huisreëls na te kom.", + "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.": "Hallo, @fields.group_name! Vandag vier ons twee maande van @global.parent_app! \n\nHierdie week sal julle meer uitvind oor hoe om jul tiener te help om huisreëls na te kom.", + "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.": "Dink na oor elke keer wat jy jou tiener laat glimlag het en al die maniere wat jy vir hom/haar omgee. \n\nJy behoort so trots te wees - dis 'n moeilike tyd om 'n ouer te wees dié.", + "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!": "Welgedaan - jy het reeds 6 stukke ouerskap-gereedskap verwerf! Doen die volgende werkswinkel om meer te kry!", + "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.": "Voltooi die werkswinkel en praat met jou tiener oor 'n positiewe en 'n negatiewe gevolg van sekere gedrag.", + "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?": "Het jy en jou tiener al saam aan 'n positiewe en 'n negatiewe gevolg van sekere gedrag gedink?", + "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!": "Welgedaan dat jy die @data.workshop.w_consequence.in_text_title voltooi het. Pak môre 'n nuwe werkswinkel aan om jou te help om nuttige vaardighede te leer en te geniet!", + "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.": "Gevolge wat kalm oorgedra word, help jou tiener om reëls na te kom. As jy nog nie die @data.workshop.w_consequence.in_text_title voltooi het nie, probeer dit nou!\n\nWelgedaan dat jy so veel toewyding wys.", + "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Hallo, @fields.user_name! Krisisse gebeur met enigiemand - dit help baie as 'n mens gereed is daarvoor. \n\nHierdie werkswinkel sal jou wys hoe om dit te doen.", + "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Hallo, @fields.group_name! Krisisse gebeur met enigiemand - dit help baie as 'n mens gereed is daarvoor. \n\nHierdie werkswinkel sal julle wys hoe om dit te doen.", + "Be proud, you are a committed parent. This is a big achievement!": "Wees trots, jy is 'n toegewyde ouer. Dit is 'n groot prestasie!", + "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.": "Krisisse kan plaasvind, en ons KAN voorbereid wees!\n\nBegin die volgende werkswinkel om saam met jou tiener te sien hoe dit gedoen word.", + "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.": "Dis wonderlik dat jy hierdie ouerskapreis meegemaak het! \n\nVoltooi die @data.workshop.w_crisis.in_text_title om meer uit te vind oor die beste manier om te reageer as tieners ons nodig het.", + "Have you and your teen discussed what you would do in a crisis?": "Het jy en jou tiener al bespreek wat julle in 'n krisissituasie sal doen?", + "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!": "Welgedaan dat jy die @data.workshop.w_crisis voltooi het. Môre kan jy die finale werkswinkel aanpak om na te dink oor jou reis, en beplan wat om volgende te doen!", + "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.": "Die finale werkswinkel is môre beskikbaar!\n\nProbeer om eers die @data.workshop.w_crisis.in_text_title te voltooi. So kan jy dan jou stel ouerskapvaardighede voltooi en besluit wat om volgende te doen.", + "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Hallo, @fields.user_name, welgedaan dat jy week 4 begin! \n\nHierdie week help om die kans te vergroot dat jy jou tiener so ver sal kry om te doen wat jy vra.", + "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Hallo, @fields.group_name, welgedaan dat julle week 4 begin!\n\nHierdie week help om die kans te vergroot dat jul tiener sal doen wat julle vra.", + "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!": "Wees gaaf met jouself. Geen ouer is perfek nie. Die feit dat jy @global.parent_app gebruik, wys dat jy omgee!", + "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.": "Tieners luister nie altyd nie. Kyk na hierdie week se werkswinkel om te sien hoe positiewe instruksies kan help.", + "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.": "Positiewe instruksies verbeter gedrag.\n\nVoltooi die @data.workshop.w_instruct.in_text_title vir idees oor hoe om dit in jou gesin te laat werk.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.": "Jy het alreeds die @global.parent_point @data.habit.instruct_positively.title een keer gemerk – jy maak regtig goeie vordering.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.": "Jy het alreeds die @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively kere gemerk – jy maak regtig baie goeie vordering.", + "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!": "Veels geluk, jy het die @data.workshop.w_instruct.in_text_title voltooi.\n\nMôre wag 'n nuwe werkswinkel vir jou. Sien 'n groot verskil deur klein veranderinge te maak!", + "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?": "Sommige ouers gebruik die toep na aandete. Waarom voltooi jy nie @data.workshop.w_instruct.in_text_title wanneer jy 'n paar minute tyd het nie?", + "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Hallo, @fields.user_name! Wonderlik, dis al jou tweede maand saam met @global.parent_app.\n\nDie meeste gesinne sukkel met geld. Hierdie werkswinkel sal jou toerus om jou uitgawes te beplan om jou deur die maand te help.", + "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Hallo, @fields.group_name! Wonderlik, dis al julle tweede maand saam met @global.parent_app. \n\nDie meeste gesinne sukkel met geld. Hierdie werkswinkel sal julle toerus om jul uitgawes te beplan om julle deur die maand te help.", + "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!": "Jy is nie alleen nie. Ouers regoor die wêreld sukkel met dieselfde probleme. \n\nJy doen jou bes en ons is trots op jou!", + "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.": "Stres jy oor geld? Vra jou tiener vir goed wat jy nie kan bekostig nie? \n\nHierdie week gaan oor geld en begrotings.", + "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!": "Stel saam met jou tiener 'n gesinsbegroting op - dit sal argumente oor geld voorkom. \n\nVoltooi die @data.workshop.w_money.in_text_title om te sien hoe om dit te doen. Dis maklik - jy sal sien!", + "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.": "Mooi, jy het die @data.workshop.w_money.in_text_title voltooi! Pak môre 'n nuwe werkswinkel aan om jou te help met die opstel van gesinsreëls wat werk.", + "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.": "Baie ouers sê begrotings bring vrede. As jy nog nie die @data.workshop.w_money.in_text_title voltooi het nie, probeer dit nou!\n\nDankie vir jou toegewyde ouerskap.", + "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Hallo, @fields.user_name! Jy begin met jou derde @global.parent_app-week. \n\n'n Nuwe werkswinkel is gereed!", + "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Hallo, @fields.group_name! Julle begin met jul derde @global.parent_app-week. \n\n'n Nuwe werkswinkel is gereed!", + "Well done for using @global.parent_app! Remember, small things make a big difference.": "Welgedaan dat jy @global.parent_app gebruik! Onthou, klein dingetjies maak 'n groot verskil.", + "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!": "Dankie dat jy in jouself en jou gesin belê. Probeer die @data.workshop.w_praise.in_text_title om 'n goeie ouerskapvaardigheid te bou!", + "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.": "Aanprysing maak 'n reuseverskil. \n\nVoltooi die @data.workshop.w_praise.in_text_title om te sien hoe om dit in JOU gesin te gebruik.", + "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!": "Prys jou tiener vir een ding wat hy/sy goed gedoen het. \n\nEn wanneer laas het jy jouself of 'n ander volwassene geprys? Probeer dit!", + "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.": "Wonderlik, jy het die @data.workshop.w_praise.in_text_title voltooi. 'n Nuwe werkswinkel is gereed vir môre. Probeer dit - jy sal 'n verskil in jou tiener se gedrag sien.", + "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.": "Hallo, @global.user_name, daar wag môre 'n nuwe werkswinkel op jou!\n\nDit lyk of jy nog nie die @data.workshop.w_praise.in_text_title voltooi het nie. Dis kort (belowe!) – kyk gou daarna wanneer jy 'n paar minute tyd het.", + "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Hallo, @fields.user_name! Nuwe week, nuwe werkswinkel! Leer om huishoudelike reëls op te stel wat jou tiener verstaan en nakom.", + "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Hallo, @fields.group_name! Nuwe week, nuwe werkswinkel! Leer om huishoudelike reëls op te stel wat julle tiener verstaan en nakom.", + "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!": "Het jy jou bes probeer, maar jou tiener is steeds knorrig? Onthou, jy doen goed - daar sal ook goeie tye saam met hom/haar wees!", + "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.": "Dankie dat jy in jou ouerskap belê. \n\nDoen die @data.workshop.w_rules.in_text_title om jou tiener te help om huishoudelike reëls te verstaan en na te kom.", + "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!": "Jy is so naby daaraan om nog gereedskap te verwerf! Voltooi die @data.workshop.w_rules.in_text_title en stel EEN eenvoudige, realistiese reël saam met jou tiener vas, en kyk hoe dinge verander!", + "Have you managed to set a rule with your teen?": "Kon jy dit regkry om 'n reël saam met jou tiener vas te stel?", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!": "Veels geluk, jy het die @local.workshop_data.in_text_title voltooi.\n \nPak môre 'n nuwe werkswinkel aan! Dit sal jou wys wat om te doen wanneer tieners hulle sleg (of goed) gedra!", + "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!": "'n Splinternuwe werkswinkel is môre beskikbaar!\n \nVoltooi die @local.workshop_data.in_text_title voordat jy aanbeweeg. Nog net 'n paar minute om jou tiener te help om jou reëls na te kom!", + "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Hallo, @fields.user_name! Jy nader nou vinnig die einde van jou @global.parent_app-reis! Dankie dat jy deurdruk daarmee. \n\nHierdie week handel oor hoe om ons tieners aanlyn en in die gemeenskap veilig te hou.", + "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Hallo, @fields.group_name! Julle nader nou vinnig die einde van julle @global.parent_app-reis! Dankie dat julle vasbyt daarmee. \n\nHierdie week handel oor hoe om ons tieners aanlyn en in die gemeenskap veilig te hou.", + "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!": "Ouerskap is moeilik, veral nou. Wees trots op wat jy bereik het. Op hoe jy vir hulle sorg. Op elke keer wat jy hulle laat glimlag. Jy's ongelooflik!", + "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.": "Dink aan al die ouerskapvaardighede wat jy reeds verwerf het!\n\nVoltooi die volgende werkswinkel om meer te kry.", + "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.": "Deur saam te gesels oor tieners se ervaringe in die gemeenskap en ook aanlyn, help om hulle veilig te hou. \n\nVoltooi die @data.workshop.w_safe.in_text_title om te sien hoe om dit te doen.", + "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!": "Veels geluk, jy het @data.workshop.w_safe.in_text_title voltooi. 'n Nuwe werkswinkel is môre beskikbaar om jou gesin te help om enige situasie te hanteer – saam kan julle soveel doen!", + "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.": "Voltooi die @data.workshop.w_safe.in_text_title voordat jy aanbeweeg. Dit kan baie probleme voorkom. \n\nWelgedaan dat jy @global.parent_app gebruik om jou gesin te ondersteun.", + "This week is about YOU! Treat yourself well. You deserve it!": "Hierdie week gaan oor JOU! Kyk mooi na jouself. Jy verdien dit!", + "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Begin môre 'n splinternuwe @global.parent_app werkswinkel. Jy sal wonderlike resultate sien!", + "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Onthou om vir jou @global.parent_app-maats van die toep te vertel. Julle kan môre die @global.parent_app-werkswinkels saam begin doen!", + "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.": "Hallo, @fields.user_name! Jy maak sulke goeie vordering! \n\nOm 'n tiener te hê, beteken hope onverwagse probleme. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", + "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Hallo, @fields.group_name! Julle maak sulke goeie vordering!\n\nOm 'n tiener te hê, beteken hope onverwagse probleme om te hanteer. Hierdie werkswinkel sal julle almal wys hoe om dit te hanteer.", + "Your commitment is inspiring. Keep calm and carry on!": "Jou toewyding is inspirerend. Bly kalm en hou so aan!", + "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.": "Onverwagse probleme duik op wanneer ons tieners het. \n \nLeer in die volgende werkswinkel hoe om dit te hanteer.", + "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.": "Jy is op die regte pad om probleme saam met jou tiener op te los! \n\nVoltooi die @data.workshop.w_solve.in_text_title om nog 'n ouerskapvaardigheid te verwerf.", + "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Oefen saam met jou tiener die vier stappe van probleemoplossing. \n \nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", + "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Fantasties! Jy het die @data.workshop.w_solve.in_text_title voltooi. Môre is 'n nuwe werkswinkel beskikbaar om jou te help om jou tiener veilig te hou.", + "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.": "Pak môre 'n nuwe werkswinkel aan! \n \nDeur eers die @data.workshop.w_solve.in_text_title te voltooi, sal jy weet hoe julle probleme saam kan oplos.", + "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Hallo, @fields.user_name! Veels geluk dat jy week 5 begin.\n\n'n Nuwe werkswinkel wag vir jou met wenke oor hoe om kalm en in beheer te bly wanneer jou tiener jou mal maak.", + "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Hallo, @fields.group_name! Veels geluk dat jul week 5 begin.\n\n'n Nuwe werkswinkel wag met wenke oor hoe om kalm en in beheer te bly wanneer ons tieners ons mal maak.", + "Manage anger and stress with this new workshop. It helps you take better care of yourself.": "Beheer woede en stres met hierdie nuwe werkswinkel. Dit help jou om beter na jouself om te sien.", + "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.": "Voel jy oorweldig? Diep asemhaling help. \n\nVoltooi die @data.workshop.w_stress.in_text_title om jou te help om stres te hanteer.", + "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.": "Voel jy vandeesweek gestres? Probeer om diep asem te haal voordat jy op jou tiener reageer - dit maak 'n groot verskil.", + "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.": "Welgedaan dat jy diep asemgehaal het voordat jy op jou tiener gereageer het! Elke blaaskans wat jy neem, help jou om beheer terug te neem.", + "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!": "Welgedaan dat jy die @data.workshop.w_stress.in_text_title voltooi het. Pak môre 'n nuwe werkswinkel aan om jou te help ontspan en waardevolle vaardighede op te bou!", + "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!": "Maak gereed vir 'n nuwe werkswinkel môre. \n \nDeur die @data.workshop.w_stress.in_text_title eers te voltooi, vestig jy 'n sleutel fondament: As jy goed voel, sal jou gesin ook!" } \ No newline at end of file diff --git a/packages/app-data/translations/za_st/strings.json b/packages/app-data/translations/za_st/strings.json index 978356235c..bc28514ade 100644 --- a/packages/app-data/translations/za_st/strings.json +++ b/packages/app-data/translations/za_st/strings.json @@ -1,8 +1,116 @@ { + "When everything feels like it is falling apart": "Ha dintho tsohle di senyeha", + "And you can't help but raise your voice": "Mme o sa kgone ho se phahamise lentswe", + "When all the frustrations are beginning to start": "Ha litsietsi tsohle li qala ho qala", + "Remember that you have a choice": "Hopola hore o nale khetho", + "Remember all we have to be grateful for": "Hopola hore rohle re tlameha ho leboha", + "Let's slow down": "Ha re fokotse lebelo", + "Take a few deep breaths": "Phefumolohela hodimo ka makgetlo a mmalwa", + "Because I really couldn't love you more": "Hobane ke ne ke se sa khone ho o rata ho feta", + "You can take pause, you can count to 10": "O ka nka khefu, o ka 'na oa bala ho fihlela ho 10", + "Play a game or do something fun": "Bapala papadi kapa etsa se seng se monate", + "You can phone a friend, someone to confide in": "O ka litsetsa motsoalle, motho eo o ka mo phetlelang sefuba", + "Remember you're not the only one": "Hopola hore ha o mong", + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Botsanang, “Ke eng e o thabisitseng kajeno?”\n* Botsanang, “O tobane le bothata bofe kajeno?”\n* Botsanang, “Nka o thusa jwang?”\n* A re etseng sena mmoho letsatsi le letsatsi; ekaba ha le ja dijo tsa tinare hammoho kapa pele le ilo robala.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Botsa motjha wa hao hore na a ka thabela ho ja dijo tse jwang. \n* Di pheheng hammoho!\n* E re ba tjhentjhane ka hore na seapehi se seholo ke mang – ba etelle pele, mme o latele ditaelo tsa bona. \n* O ka ba wa ba thusa ho etsa bajete ya dintho tseo ba phehang ka tsona! \n\nNa ha o nahane hore sena se ka sebetsa? Botsa batjha ba hao hore na BA ka rata hore wena le bona le etseng mmoho. Ba tlohele ba etelle pele. Phutholohang. Le je monate.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Foka letsoho la hao moyeng ka makgetlo a 8 o ntse o bala ho fihla ho 8.\n* Etsa sena ka potlako ebile o hweleditse kamoo o ka kgonang.\n* Pheta sena ka letsoho le leng la hao. Pheta seo ka maoto ka bobedi.\n* Etsa sena ka makgetlo a 7, ebe a 6 mme o tswele pele ho fihlela ho lekgetlo le 1.\n* Bohle ba hweletse “Kgoho e hlanyang” ebe ba etsa sohle ho tantshe ya kgoho e hlanyang!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Qapa tantshi e tsamaisanang le dipina tseo batjha ba hao ba di ratang.\n* Motho a le mong o phokola tantshi mme bohle baa mo etsisa. \n* Bohle baa tjhentjhana ka ho etella pele. \n* E etse bakeng sa lelapa!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Papadi ena e monate ha e bapalwa ke batho ba fetang ba 2.\n* Motho o etsa eka o etsa ntho e itseng – ka mohlala, o kama moriri kapa o lokisa dijo tsa tinare. \n* Motho e mong o a mo botsa, “O etsang?”\n* Motho wa pele o lokela ho bua ntho e sa amaneng ho hang le ho kama moriri, ka mohlala “Ke fasa dieta.” \n* Motho wa bobedi o etsa eka o fasa dieta ho fihlela motho e mong a mo botsa, “O etsang?” \n\nKamehla karabo e tlameha ho ba ntho e fapaneng le seo o hlileng o se etsang!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Hase kamehla le ka nkang maeto, empa kamehla le ba le ditakatso! Botsa motjha wa hao dipotso tsena:\n* O ka rata ho nka leeto le yang hokae? O tla nka nako e kae o etile? O ka paka eng? O ne o tla etsang ha o le leetong? O ne o tla bona eng?\n* Shebang mmapa mmoho kapa le o toroye.\n* Kgethang naha eo motjha wa hao a qalang ho utlwa ka yona ebe le ithuta ka naha eo.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Kgethang papadi kapa boikwetliso boo le bo etsang mmoho. Etsang qeto ya hore na le tla bapala le ho ikwetlisa neng. Na etlaba letsatsi le letsatsi? Ka nako e kae? \n\nDi lekeng ka beke. Ha beke e fela, ipotse le ho botsa lelapa la hao dipotso tsena:\n* Ho ya jwang? \n* Le ikutlwile jwang ha beke e qala? \n* Le ikutlwa jwang ha beke e fela? \n* Re ka etsa dintho ka tsela e fapaneng jwang bekeng e tlang?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena le motjha wa hao le ka hlophisa letoto la baeti la batho ba tummeng bao kannete le ka ratang ho ba mema phathing. Ka bomong le ka ba le batho ba bahlano – ekaba batho ba nakong e fetileng kapa ba hona jwale. Le ka mema mang? Hona na baeti ba lona ba tla utlwana hantle?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Buisana le motjha wa hao ka ntho eo a e ratang.\n\nEkaba ka eng kapa eng eo a kgethang ho bua ka yona: dipapadi, metswalle, mmino, dikgalala...\n\nLeka ho mamela motjha wa hao mme o mo fe monyetla wa ho bua.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Le tle ka mefuta e meraro ya boikwetliso mmoho. Ka mohlala, ho tsamaya, ho torota, ho bapala bolo kapa ho tantsha.\n* E kgetheng hammoho mme le leke hape. \n* Haeba kaofela le e rata, etsang qeto ya hore na le tla e etsa hangata hakae. Hang kapa habedi ka beke? Hoseng ho hong le ho hong?\n* Nahanang le le mmoho ka ditsela tsa ho ithabisa le ho feta. Na le ka torota ho ya fihla boholeng bo itseng? Tjhentjhanang ka ho ba mokwetlisi? Kgothatsanang ka meputso e menyane ya mahala?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Tjhentjhanang ka ho ba “baetapele”. Phokola ka polelo e tla arabelwa ke bohle. Ebe “moetapele” o fana ka ditaelo ebe bohle ba di latela kapele kamoo ba ka kgonang:\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Thetsa ntho e kgubedu.” \n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Qhoma qhoma ka makgetlo a leshome.”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Beha dieta ka rakeng ya dieta.”", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Kgetha mopheti wa pale hore a qala ho pheta pale.\n* Bamamedi ba pale ba ka mo kena hanong neng kapa neng.\n* Mopheti wa pale o tlameha ho kenya lentswe leo paleng ya hae.\n* Ha mopheti wa pale a qetile, leka ka mopheti e mong wa pale!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qala pale ka “Ba re enere…”\n* E re motjha wa hao a bolele polelo e latelang.\n* Ebe o bopa polelo.\n* Tjhentjhanang ho fihlela le qapile pale e monate e ntjha.\n* Tiisa hore pale e fela hamonate.\n* Botsa motjha wa hao hore na karolo eo a e ratileng haholo ya pale ena ke efe!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Motho wa pele o re, “Ka Moqebelo, ke ya… (ka mohlala, ke ya phakeng)”\n* Motho wa bobedi o tlatsa motho wa pele, “Ka Moqebelo, ke ya phakeng le… (ka mohlala, ho etela motswalle wa ka e moholo).\n* Motho ka mong o tlatsa ya buileng pele, o leka ho nahana ka dintho tsohle tse monate tse ka etswang ka Moqebelo.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Papadi ena e ka bapalwa ka dipara kapa ka batho ba bangata sehlopheng.\n* Emang le shebane kapa le entse lesakana. \n* Motho a le mong o a qala mme bohle baa mo etsisa, ba leka ho tsamaya ka nako e tshwanang le moetapele.\n* Tiisa hore moetapele o tsamaya butle hore bohle ba kgone ho mo latela! Ithute ho tsamaisa ditho tse sa tshwanang tsa mmele le maemong a sa tshwaneng.\n* Kamora nako, tjhentjanang ka hore na ke mang ya etellang pele. O fe bohle monyetla wa ho etella pele.\n* E etseng ho se na ya etellang pele!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Motho wa pele o kgetha kapa o phokola pina.\n* Bohle ba tlameha ho hakanya lebitso la pina (ho thatafatsa dintho ba ka hakanya hore na sebini ke mang).\n* Wa pele ya hakanyang mme a nepa e ba moetapele ya latelang.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Ena ke papadi e batlang bonyane batho ba 3.\n* Qala sedikadikwe mme o fetise “senepe” se le seng lesakaneng (kapa o “ope diatla” kapa o letse menwana).\n* O ka “letsa menwana” hang ho lahla “senepe”, le hang ho se kapa. Sheba motho eo o mo akgellang sona. \n* Tsela (hodimo, tlase, otlolohile, matswedintsweke, ho ipitika fatshe) le matla (a maholo, habonolo, a itekanetseng) tsa ho lahlela senepe fatshe di ama kamoo motho e mong a ka se kapang kateng. \n* O ka lahlela “senepe” fatshe, wa se akgela moyeng, mme wa se kapa ka makgetlo a mmalwa pele o se fetisa. \n* Ha bohle ba ipabola papading ena, le ka qala ho tsamaya ka kamoreng, o ntse o fetisa “senepe”. \n* O ka se lahlela tlasa leoto? Kamorao mokokotlong? Ka hlooho? Ho kgaoletsa se fetiswang? Thabelang ho bapala ka “senepe”!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Letsatsi la kajeno le fella mona, nka motsotsonyana hore:\n\n* O buisane le motjha wa hao ka ntho e le nngwe eo thabisang eo a e entseng. \n* O ipabatse ka ntho e le nngwe eo o e entseng hantle kajeno. \n* O kgalala!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Nahana ka matla a maholo. Ka mohlala, ho ya kae kapa kae ka ho panya ha leihlo, ho tsamaya ka nako, ho bala dikelello. \n* Botsa motjha wa hao, “Haeba o ne o na le matla a maholo a ho […], o ne o tla a sebedisa jwang?”\n* Mo kgothalletse hore a ithehe lebitso la mohale e moholo mme a mo etsise ka diketso. \n* Jwale e re motjha wa hao a o kgethele matla a maholo.\n* Tiisa hore le wena o etsisa matla a hao a maholo!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Nahana ka maemo a fapaneng. Ka mohlala, ho kganna koloi, ho sesisa sekepe kapa ho fofisa sefofane.\n* Bolella motjha wa hao ebe o mo botsa potso ena, “O ka rata ho etsa efe?”\n* Mo botse hore na hobaneng?\n* Nahana ka maemo a mang a mararo kapa o kope motjha wa hao hore a etse le wena.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Phetela motjha wa hao ho hong ho etsahetseng ha o ne o le motjha. Ke dintho dife tse neng di le siyo ka nako eo? Difouno tse nang le inthanete? Le ne le ithabisa ka ho etsang? Ke dintho dife tseo o neng o kgathatseha ka tsona? O ska kgathatseha ha ba sa o bolelle letho – ntho ya bohlokwa ke hore ba mamele mme ba hopole. Ka dinako tse ding batjha ba rona baa lebala hore batswadi ba bona le bona ke batho!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Nahana ka dipolelo tse tharo tse amanang le wena. Tse pedi ebe nnete mme e le nngwe e lokela ho ba leshano.\n* Ho ka thusa ho nahana ka ditabatabelo, ditakatso, boiphihlelo sekolong, tseo le di ratang le tseo le sa di rateng. Ka mohlala: ke hloile dibanana, thuto eo ke e ratang ke ya saense, mme kannete ke lakatsa eka nka kgona ho bina. \n* Di bolelle motjha wa hao mme o mo kope hore a hakanye hore na ke efe eo e leng leshano. \n* Na o hakantse ka nepo? Na o o hlahile lesumatha?\n* Mme o mo kope ho etsa se tshwanang. Na o ile ea ithuta ntho e nngwe e ntjha e mong ka e mong?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Nahana ka tsebo e ntjha eo o ka ithutang yona le motjha wa hao. Ka mohlala, ho tiisa hore bolo ha e wele fatshe kapa ho phahamisa leoto, ho kapa dibolo tse ngata, ho pheha sopho?\n* Tjhentjhana ka ho leka tsebo e ntjha.\n* Tiisang hore le ya babatsana, mme le leke ho ithuta le ho bapala mmoho!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Botsanang dipotso. Ekaba dipotso dife kapa dife tse amanang le dintho tseo le di ratang kapa seo le se entseng kajeno.\n* Molao ke hore o ke ke wa araba ka “E”, “Tjhe” kapa “Mohlomong”.\n* O ka nka nako e kae? O ka qapa dikarabo tse kae?\n* Tjhentjhanang mme le bapale hape!", + "Home": "Leqephe le Qalang", + "Settings": "Diseting", + "Template": "Thempleite", + "How to use @global.parent_app": "Mokhoa oa ho sebelisa @global.parent_app", + "In-Week Messages": "Melaetsa ya Beke Ena", + "Campaigns": "Matsholo", + "Notifications": "Ditsebiso", + "You have successfully entered developer mode.": "O kentse ka katleho developer mode.", + "You have entered an incorrect code.": "O kentse khoutu e fosahetseng.", + "About @global.parent_app": "Mabapi le @global.parent_app", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_centre e ile ya qapuwa ke Parenting for Lifelong Health (PLH) – e tswetsweng ke ho ikopanya ha ditsebi tsa botswadi lefatsheng lohle ho tswa UNICEF, WHO le Diyunivesithing tsa Afrika Borwa le UK, hammoho le diNGO le malapa le batjha hohle Afrika. Batswadi le batjha ba sebeditse le rona epong ena mme ba re thusitse ho netefatsa hore ho bonolo ho e sebedisa, ebile ke ntho e monate e kgathollang. Tse ding tsa dikahare tse epong ena, jwaloka ditshisinyo tsa mesebetsi le dipale tse tshwantsheditsweng, di ile tsa qapuwa ke batswadi le batjha ho tiisa hore e tshwanela ditlhoko tsa malapa.\n\nParenting for Lifelong Health (PLH) e ikemiseditse ho tshehetsa dingolwa le mananeo a mahala le a abelanwang a botswadi, ho tshehetsa batswadi lefatsheng ka bophara ho kgothalletsa boiketlo ba bana ba bona.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ka ho tobetsa konopo e ka tlaase o tla seta epo botjha hore e kgutlele ho diseting tsa mathomo.\n\nSena se bolela hore kgatelopele yohle ya hao le datha ya tshebediso e tla hlakoleha mme epo e tla sebetsa jwalokaha eka e sa tswa instolwa ka lekgetlo la pele.\n\nTLHOKOMEDISO: Ho seta botjha epo ke ketso e sa etsollweng ebile o ke ke wa kgona ho fumana tlhahisoleseding efe kapa efe hape.", + "Open Survey": "Bula Patlisiso", + "Select Language": "Kgetha Puo", + "Workshop Options": "Dikgetho tsa Wekshopo", + "Reset App": "Seta Epo Botjha", + "Demo Presentation": "Nehelano ya Mohlala", + "Organisation Registration": "Ngodiso ya Mokgatlo", + "Developer Mode": "Developer Mode", + "Unlock all workshops": "Notlolla diwekshopo tsohle", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ka ho tobetsa konopo e katlase o tla notlolla diwekshopo tsohle.\n\nTLHOKOMEDISO: Basebedisi ha baa lokela ho sebedisa tshebetso ya ho notlolla diwekshopo, sena ha se kgothalletswe ntle le haeba kannete seo se hlokahala.", + "Unlock workshops": "Notlolla diwekshopo", + "All workshops are now unlocked.": "Hona jwale diwekshopo tsohle di notlolotswe.", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ho lahleheloa ke moratuoa ho ka utloahala o kare o hloletsoe. Mona ke litlhahiso tse 'maloa tse u lokelang ho li hopola ho tla ho o thusa.", + "Ask for help": "Kopa thuso", + "Say goodbye": "Salisa hantle", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Kopa thuso ho motho eo u mo tshepang - lijo kapa tlhokomelo ea bana e ka ba molemo. U ka hloka litokomane bakeng sa lefa, bakeng sa bana ba hau, kapa ho fumana litshebeletso.\n- Ka nako e 'ngoe batho ba leka ho nka chelete kapa lefa ho motho ea saretsoeng. Fumana ka litokelo tsa hau.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Ho salisa hantle ho thata. Etsa seo u ikutloang se le molemo ho uena le mocha oa hau.\n- Malapa, bacha le batsoali ha ba phethahala. Ha motho a hlokahetse, ho loketse ho bua ka lintho tse ntle le tse mpe tseo re li hopolang.\n- Ho ka thusa ho ngola lengolo kapa ho etsa setšoantšo bakeng sa motho ea tsamaileng.\n- Batho ba bang ba etsa mokete kapa ba ja lijo tse ikgethang ho keteka motho, mme ba salise hantle.\n- Ho ka thusa ho etsa lebokose la mehopolo, ho beha lintho tse u hopotsang uena le mocha oa hau ka motho eo.\n- Ho ka thusa ho bua ka motho feela ha u nahana ka eena.", + "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Ho lahleheloa ke motsoalle kapa moratuoa ho thata ho batho bohle. Ho ba mosa ho uena le ho etsa lintho tse tla ho thusa ho tsoelapele nakong ena e thata ho thusa le ngoana oa hao ea lilemong tsa bocha!", + "Take care of yourself": "itlhokomele", + "Find a support group": "Thola sehlopha sa tshehetso", + "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Ho sareloa ho ka re ama ka libeke kapa likhoeli kapa lilemo. Ha ho hlokahale hore u ikutloe u le betere kapele.\n-Phomola ka ho lekana, ebile o je ka ho lekana - ho thata ho hlokomela bacha ha u khathetse mme u lapile.\n- Etsa lethathamo tsa lintho tse etsang hore u ikutloe u le betere, mme u li etse.\n-Leka ho etsa ntho e le 'ngoe e bonolo ho phomola ka letsatsi le leng le le leng le mocha oa hau, le ka bakeng sa hao.\n- Ho lokile ho se ikutloe hantle mme ho lokile le ho lla. Le ka mohla u se ke ua ipeha molato, hona hase molato oa hao.\n-Ho na le tšepo kamehla le ka mora tahlehelo. Leka ho natefeloa ke lintho tse bonolo, mme u nke motsotso ho etsa ho hong ho monate kapa ho phomola le ngoana oa hau.\n-Fumana motho e moholo a le mong kapa ba babeli ba ka u tšehetsang, ba u mamele, hape ba bue le uena.", + "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ho bua le motho o ka ho tshehetsang, hape a ho mamele ho ka thusa.\n- Ho ka thusa ho kena sehlopheng sa batho bao le bona ba lahlehetsoeng ke motho.\n- Ha ho motho ea phethahetseng. Ho lokile ho bua ka mehopolo e metle le e mebe.", + "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Bacha ba sebetsana le mesarelo ka litsela tse fapaneng, joalo ka batho ba baholo. O ka ba thusa ho utloisisa boemo le maikutlo a bona, ka ho etsa libaka tse bolokehileng moo le ka khonang ka bobeli ba lona ho arolelana le ho utloisisa tahlehelo.", + "Be honest": "Tshepahala", + "My teen's response": "Karabo ea mocha oa ka", + "How to support my teen?": "Na nka tshetsa mocha oa ka joang?", + "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Bolella mocha oa hao hore motho o hlokahetse - ka nako e nngoe ha ba hlokomela.\n- Ho bolela ke ts'ebetso, eseng ketsahalo. O ka hloka ho ba bolella kgafetsa le kgafetsa.\n- Sebelisa mantsoe ao ba a utloisisang.\n- Haeba bacha ba banyane ha ba utloisise hore na lefu ke eng, ba thuse ka ho hlalosa hore motho eo ba mo ratang ha a kgutle. Leka ho se bitse lefu ka hore ke 'boroko', kapa 'ho robala', kapa 'leeto'.\n- Bacha ba baholoanyane ba ka utloisisa hore na lefu ke eng, empa ba ka nna ba sokola ho hlalosa maikutlo a bona, kapa ka ho laola maikutlo a bona.\n- Bacha ba ka araba ka litsela tse fapaneng: ho lla, ho hoeletsa, ho se lumele kapa ho thula haholo. Tsohle tsena li lokile. O ba bolelle hore o teng, o nale bona.\n- Lumella lipotso le ho bua. Tshepahala. Ho lokile ho bua ha re sa tsebe.", + "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "-Bacha ba ka 'na ba hlonama, ba halefa, ba se utloisise kapa ba se lumele, ba ikutloe ba tsielehile, ba ikutloa ba sa phele hantle kapa ba nale mahlaba, litoro tse tshosang kapa mathata sekolong. Mocha oa hao a ka ’na a bonahala a thabile, empa a ntse a hloname. Ba ka 'na ba koalloa 'me ba batla ho qeta nako e eketsehileng le metsoalle. Li ka boela tsa bontsha boitshoaro bo sa lebelloang kapa bo kotsi. Tsena li ka 'na tsa se ke tsa utloahala ho uena, empa tsohle tsena li tloaelehile.\n- Bacha ba ka 'na ba ikutloa eka ke molato oa bona - hore ba fetisitse kokoana-hloko, kapa hore ba itshoere hampe. Ba bolelle ka ho hlaka hore ha baa etsa letho le phoso.", + "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Hlalosa hore ho sareloa ho tla le maikutlo a mangata le liketso. Bontsha ngoana oa hau hore oa ratoa le ho hlokomeloa, 'me u mo khothalletse ho arolelana maikutlo a hae ka ho bua, ho ngola kapa ho taka.\n- Haeba ho na le sehlopha sa ts'ehetso seo mocha oa hau a ka bang karolo ea sona, sena se ka thusa.\n-Haeba mocha a bua ka ho batla ho intsha kotsi kapa ho ipolaea, kopa thuso ho motho e mong kapele kamoo u ka khonang.\n-Haeba u khona, boloka mekhoa ea hau e tloaelehileng ea letsatsi le letsatsi, sena se ka tshelisa bacha.\n- Ho ka thusa bacha ho ba karolo ea meetlo mabapi le lefu - ho khetha pina kapa seo ba ka se buang.\n-Ho qeta metsotso e seng mekae letsatsi le leng le le leng u tsepamisitse maikutlo ho mocha oa hau ho thusa ho etsa hore a ikutloe a sireletsehile haholoanyane le ho mo fa monyetla oa ho phomola kapa ho bua ka lintho tse mo khopisang.", + "How did it go?": "Bo tsamaile jwang?", + "Reply": "Araba", + "Timer": "Sebolokanako", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Tobetsa kgutlotharo ho o thusa ho tiisa hore puisano ena e fella ho metsotso e @local.timer_duration.", + "Video": "Video", + "You selected less than @local.threshold": "O kgethile katlasa @local.threshold", + "Start Positively Together": "Qalang le Kgothetse Mmoho", + "It's great to see you again! \n\nLet's start with caring for you.": "Ke thabela ho o bona hape! \n\nA re qale ka ho o hlokomela.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Tjhentjhanang:\n* Bolellanang: O ikutlwa jwang kajeno?\n* Babatsa motho e mong sehlopheng sa hao ha a entse ntho e itseng hantle bekeng eo!\n\nHopola hore ho sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona. O tshwanelwa ke pabatso.", + "We all have negative thoughts sometimes.": "Ka li nako tse ling, rona bohle re nale ho ba le menahano e mebe.", + "\"I am a failure\"": "\"Ke mo hlolehi\"", + "What to do?": "Ke eng se o lokelang ho se etsa?", + "Examples": "Mehlala", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ho bolella uena kapa ngoana oa hao hore u khaotse kapa u bue se fapaneng le seo hangata ha ho thuse.", + "\"I do everything perfectly\"": "\"Ke etsa tsohle ka botlalo\"", + "Instead, you can ask:": "ka tsela enngoe, o ka botsa:", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "-Na mohopolo oo ke oa sebele? Litlhaloso tse ling ke life?\n- Ho etsahala'ng haeba ke tsoela pele ho lumela mohopolo ona?\n - Ke ke tla re'ng ho motsoalle haeba a ne a e-na le mohopolo ona?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "Sena se boima, empa o leka kahohle kamoo o ka khonang, 'me re tla sebetsa 'moho ho fumana tharollo\"", + "\"It’s your fault\"": "\"Ke molato oa hau\"", + "\"Let’s come up with a solution together\"": "\"Ha re tle ka tharollo 'moho\"", + "\"I lost my job\"": "\"Ke lahlehetsoe ke mosebetsi\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Ke ithutile ho hongata mosebetsing oa ka - seo se tla nthusa ho fumana o mong\"", + "\"Nobody likes me\"": "\"Ha ho motho ea nthatang\"", + "\"Last week I did have a great time with...\"": "\"Bekeng e fetileng ke bile le nako e monate le...\"", + "\"Bad things always happen to me\"": "\"Li ntho tse mpe li lula li nketsahalla kamehla\"", + "\"This good thing happened the other day...\"": "\"Ntho ena e ntle e etsahetse ka letsatsi le leng le fetileng...\"", + "Change": "Phetoho", + "You’ve completed this week’s workshop.": "O phethile wekshopo ya beke ena.", + "Read along": "Bala hammoho", + "See you soon.": "Re tla o bona haufinyane.", + "You can always find these tools in the @global.parent_centre": "Kamehla o ka fumana dithulusi tsena ho @global.parent_centre", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Bekeng e tlang, o tla buisana le sehlopha sa hao hore na boikwetliso ba lapeng bo tsamaile jwang. Hape le ka tshehetsana le ho hopotsana matsatsing a beke.", "Home Practice": "Boikwetliso ba Lapeng", "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Diketso tse nyane, diphetho tse kgolo! Batswadi ba sebedisang tsebo eo ba e fumaneng wekshopong ha ba le lapeng ba fumana diphetho tse ntle.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Bekeng e tlang, o tla buisana le sehlopha sa hao hore na boikwetliso ba lapeng bo tsamaile jwang. Hape le ka tshehetsana le ho hopotsana matsatsing a beke.", - "How did it go?": "Bo tsamaile jwang?", + "Hear a teen's testimonial": "Mamela bopaki ba mocha", + "Read a teen's testimonial": "Bala bopaki ba mocha", "talk to their teens about how they feel": "buisana le batjha ba bona kamoo ba ikutlwang kateng", "talk to your teen about how you feel": "buisana le motjha wa hao hore na o ikutlwa jwang", "Did you experience any challenges when trying to @local.hp_description_second_singular?": "Na o bile le efe kapa efe ya diphephetso tsee ha o leka @local.hp_description_second_singular?", @@ -13,75 +121,92 @@ "Sorry to hear the tips did not help you.": "Re maswabi ho utlwa hore dikeletso tsena ha dia ka tsa o thusa.", "Do you want to share with us what you think would help you?": "Na o ka thabela ho re phetela seo o nahanang hore se ka o thusa?", "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Kea leboha ka ho re bolella taba ena! O motswadi wa mmakgonthe ka ho leka ho qeta nako le motjha wa hao. Ruri seo se etsa phapang. Pele ya pele ka mosebetsi o motle, mme o hopole, kamehla ke teng ho o tshehetsa!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Tsebo eo o lokelang ho ba le yona bekeng ena ke ena!\n\nE sebedise lapeng mme o e fumane neng kapa neng ho @global.parent_centre.", - "Relax Together": "Theolang Moya Hammoho", - "Relax": "Kgatholoha", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "A re etseng ntho kgutshwane e tla etsa hore re theole moya hammoho – e tla nka katlase ho motsotso o 1 mme o tla utlwa o kgobile matshwafo hamonate.", - "Add this activity to @global.my_relaxes": "Kenya mosebetsi ona ho @global.my_relaxes", - "Listen and relax": "Mamela mme o theole moya", - "Read and relax": "Bala mme o theole moya", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "O kgalala!\n\nLetsatsi le letsatsi, elellwa ntho e itseng eo o e entseng hantle. Iputse ka ntho e o thabisang. Mme o hemele hodimo hore o theole moya.", - "Welcome @fields.user_name": "Rea o amohela @fields.user_name", - "It's great to see you again!": "Re thabela ho o bona hape!", - "Let's see how this week has been.": "E re re bone hore na beke ena e tsamaile jwang.", - "This week you have done...": "Bekeng ena o entse...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "O bontsha boikemisetso ka tsela eo ba ho ba motswadi le ho itlhokomela.\n\nWa babatseha.", - "Watch Together": "E Shebelleng Mmoho", - "Let's watch a video together!": "A re shebelle video mmoho!", - "Watch": "Shebella", - "Let's watch a video!": "A re shebelle video!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Re thabela ho o bona hape! A re qale ka pina e binwang ke malapa hohle.", - "Let's Slow Down": "A re Theole Moya", - "You’ve completed this week’s workshop.": "O phethile wekshopo ya beke ena.", - "See you soon.": "Re tla o bona haufinyane.", - "Talk Together": "Buisanang", - "Share ideas, support each other!": "Eletsanang, tshehetsanang!", - "Try it Together": "E Lekeng Hammoho", - "Let's practice together.": "A re prakthiseng hammoho.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ho prakthisetsa lapeng ke tsela eo re ntlafatsang bophelo ba malapa a rona kateng. Empa hangata seo se ba le mathata.\n\nA re phetelaneng dintho tseo re atlehileng ho tsona le mathata ao re thulaneng le wona, mme re thusaneng ho fumana ditsela tse ntjha tsa ho iteka!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Nahana kamoo mesebetsi ya hao ya lapeng e tsamaileng kateng bekeng ena.\n\nTjhentjhanang ha le tshohla:\n* Ke eng e tsamaileng hantle hona bothata ebile eng? \n* Le ka nahana ka ditharollo dife mmoho? \n* Kgethang tharollo e le nngwe mme le e leke hamorao ka batjha ba lona! \n\n(Kapa le ka e prakthisa hona jwale hore ho be bonolo hamorao!)", - "Discussion example from @data.workshop.w_1on1.title": "Mohlala wa puisano e tswang ho @data.workshop.w_1on1.title", - "Start Positively Together": "Qalang le Kgothetse Mmoho", - "Welcome @fields.group_name": "Rea o amohela @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Ke thabela ho o bona hape! \n\nA re qale ka ho o hlokomela.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Tjhentjhanang:\n* Bolellanang: O ikutlwa jwang kajeno?\n* Babatsa motho e mong sehlopheng sa hao ha a entse ntho e itseng hantle bekeng eo!\n\nHopola hore ho sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona. O tshwanelwa ke pabatso.", - "Ideas from other families:": "Maikutlo a malapa a mang:", - "Question Time": "Nako ya Dipotso", - "It's time for some questions!": "Ke nako ya dipotso!", - "Listen Together": "Mamelang Hammoho", - "Let's listen to an audio together!": "A re mamele rekoto ena hammoho!", - "Listen": "Mamela", - "Let's listen to an audio!": "A re mamele rekoto ena!", - "Why @local.workshop_data.title?": "Hobaneng @local.workshop_data.title?", - "Hear Sbo's message": "Molaetsa wa Sbo ke ona", - "Read Sbo's message": "Bala molaetsa wa Sbo", - "Today's steps": "Mehato ya kajeno", - "Read Together": "Balang Hammoho", - "Let's read a story together!": "A re bale pale hammoho!", - "Let's read a story!": "A re baleng pale!", - "Think Together": "Nahanang Hammoho", - "It's time to think together!": "Ke nako ya ho nahana hammoho!", - "Think": "Nahana", - "It's time to think!": "Ke nako ya ho nahana!", + "Language": "Puo", "Learn Together": "Ithuteng Hammoho", "It's time to learn and practice together!": "Ke nako ya ho ithuta le ho prakthisa mmoho!", "Learn": "Ithute", "It's time to learn and practice!": "Ke nako ya ho ithuta le ho prakthisa!", - "Customise @global.parent_app": "Fetola @global.parent_app ho dumellana le ditlhoko", - "Give me quick parenting tips": "Mphe dikeletso tsa botswadi tse potlakileng", - "Something really bad happened": "Ho etsahetse ntho e mpe haholo", - "I have technical problems with the app": "Ke na le bothata ba setekgenike ka epo ena", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "O tla fumana dikeletso tseo re nahanang hore o ka di fumana di le molemo mona, ho itshetlehile ka dikarabo tsa hao ho customisation ya epo.", + "Listen Together": "Mamelang Hammoho", + "Let's listen to an audio together!": "A re mamele rekoto ena hammoho!", + "Listen": "Mamela", + "Let's listen to an audio!": "A re mamele rekoto ena!", + "Hi @fields.user_name! This week you did:": "Dumela @fields.user_name! Bekeng ena o entse:", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Dumela @fields.user_name! Rea leboha ka ho sebedisa @global.parent_app le ka ho boikemisetso ba hao jwaloka motswadi. \n\nHopola ho tobetsa ho @global.parent_points!", + "That’s wonderful!": "Ke ditaba tse monate ruri!", + "Nice work!": "Mosebetsi o babatsehang!", + "Your commitment is not taken for granted.": "Boitelo ba hao ha bo nkuwe e le ba lefeela.", + "Keep up the good work!": "Pele ya pele ka mosebetsi o motle!", + "This is lovely!": "Ke ditaba tse monate!", + "Tap yourself on the shoulder. You deserve this.": "Oiphaphathe lehetleng. Kgau e a o tshwanela.", + "Every @global.parent_point counts!": "@global.parent_point e nngwe le e nngwe e bohlokwa!", + "Relax now": "Phutholoha hona jwale", + "Did you relax already? Tap it!": "Na o se o phutholohile? Tobetsa!", + "Here is a fun activity to do with your teen!": "Ntho e thabisang eo o ka e etsang le motjha wa hao ke ena!", + "Continue @local.workshop_data.in_text_title": "Tswela pele ka @local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", + "Finish current workshop": "Qetela wekshopo ya hona jwale", + "How did you hear about @global.parent_app?": "O utlwetse ka @global.parent_app jwang?", + "Other": "Ho hong", + "I found it myself": "Ke iphumanetse yona", + "A friend or family": "Ka motswalle kapa lelapa", + "Quick Parenting Tips": "Diketso tse Potlakileng tsa Botswadi", + "Raising teens can be hard, and we all struggle sometimes.": "Ho hodisa batjha ho ka ba thata, mme ka dinako tse ding kaofela re hula ka thata.", + "What is the main challenge you are experiencing right now?": "Phephetso e ka sehloohong eo o tobaneng le yona ke efe hona jwale?", + "My relationship with my teen is not good": "Kamano ya ka le motjha wa ka ha e ntle", + "My teen’s behaviour is difficult": "Boitshwaro ba motjha wa ka bo nthatafalletsa dintho", + "I feel stressed, lonely, angry": "Ke ikutlwa ke imetswe, ke jewa ke bodutu, ke halefile", + "I have money worries": "Ke kgathatsehile ka ditjhelete", + "I worry about my teen’s safety": "Ke kgathatsehile ka polokeho ya motjha wa ka", + "We often fight in our family": "Re dula re lwana lapeng", + "I have a different problem…": "Ke na le bothata bo fapaneng…", + "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ho haha dikamano tse ntle ho qala ka ho qeta nako mmoho - esita le metsotso e 5 ka letsatsi e etsa phapang! Qalong, ho ka ba thata ho qeta nako mmoho, hobane kaofela re phathahane kapa mohlomong batjha ba rona ha baa thaba ka dinako tse ding. Empa ho qeta metsotso e 5 ka letsatsi le motjha wa hao ho etsa hore le tshepane. Leka ho botsa motjha wa hao hore na a ka thabela hore le etseng mmoho. Ekaba ntho e monate le e kgathollang le bakeng sa hao!", + "You can get more support on how to spend one-on-one time with your teen here:": "O ka fumana thuso e nngwe e amanang le tsela ya ho qeta nako ya boinotsing le motjha wa hao mona:", + "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Batjha bohle ka dinako tse ding ba itshwara hampe! Ntho e le nngwe e ka thusang ke ho babatsa boitshwaro ba motjha neng kapa neng ha a etsa ntho e ntle – ho sa tsotellehe hore na e nyane hakae. Ho ka nna ha bonahala eka batjha ha ba batle ho babatswa empa bonneteng ba ntse ba e batla, ebile kannete baa e batla.", + "You can get more support here on how to encourage good behaviour through praising:": "O ka fumana thuso e nngwe mona tseleng ya ho kgothalletsa boitshwaro bo botle ka ho babatsa:", + "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Kannete hona jwale kgatello ya botswadi e hodimo. Re tseba hantle hore na bophelo bo ka ba thata hakae. Ho iketsetsa ntho e itseng ho ka o fokoletsa seterese. Eo ke tshwanelo ya hao! Mme ha o ikutlwa o imetswe, laola mmele wa hao ka ho hula moya butle, ka ho tebileng ka makgetlo a mahlano pele o araba. Batswadi ba bangata ba re seo se ba thusitse.", + "You can get more support on how to take care of yourself here:": "O ka fumana thuso e nngwe e amanang le ho itlhokomela mona:", + "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Ha o mong. Seterese sa tjhelete se boima haholo ho batswadi. Leka ho buisana le motjha wa hao ka hore na ho kena tjhelete e kae le hore na le tlameha ho sebedisa tjhelete e kae le le lelapa kgwedi le kgwedi. Sena se ka mo thusa ho utlwisisa hore na ke hobaneng ha o sa kgone mo fumanela ntho eo a e batlang. Ha bohle ba utlwisisa hore na tjhelete e ya hokae, ho ba bonolo ho dumellana le ka hore na le baballe bokae!", + "You can get more support on how to budget and save here:": "O ka fumana thuso e nngwe e amanang le ho etsa bajete ya ho baballa mona:", + "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Batjha ba qeta nako e ngata ba se lapeng kapa ba le inthaneteng, moo ho leng thata ho ba sireletsa - sena se hlobaetsa batswadi ba bangata. Leka ho qala puisano le motjha wa hao ka dibaka tse sireletsehileng le tse sa sireletsehang motseng le inthaneteng (o ka nna wa lokela ho leka ka makgetlo a mmalwa). Mohlomong o tseba dibaka tse ding tseo wena o sa di tsebeng. Sena se ka le thusa ho rala ditaba mmoho tse amanang le tsela ya ho dula a sireletsehile.", + "You can get more support on how to keep your teen safe here:": "O ka fumana thuso e nngwe ya ho tiisa hore motjha wa hao o sireletsehile mona:", + "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Ha mathata a hlaha, lekang ho buisana ka wona mmoho. Hantlentle bothata ke eng? Ho na le ditharollo dife tse ka kgonehang hona ditlamorao tsa e nngwe ke dife? Ka tsela eo, le ka fumana tharollo e ka bang MOLEMONG wa bohle.", + "You can get more support on how to solve problems together here:": "O ka fumana thuso e nngwe ya ho rarolla mathata mmoho mona:", + "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Ha ho bonolo ho hlokomela malapa a rona. Ka dinako tse ding kaofela re tobana le diphephetso, empa re tshepa hore epo ena e tla o thusa ho di feta ka katleho. @global.parent_app e itshetlehile ka boiphihlelo ba dilemo tse leshome tsa ho tsamaisa mananeo a botswadi Afrika Borwa, le batswadi ba dikete ba fumaneng hore dikeletso tse fanweng di thusa ka diphephetso tse ngata tsa botswadi. Re tshepa hore video ena e tla thusa wena hammoho le lelapa la hao.\n\nTse ding tsa dikeletso tsa bohlokwa tse atlehileng ke tsena:", + "Start your first parenting workshop": "Qala ka wekshopo ya hao ya pele ya botswadi", + "You will get more support in the @local.workshop_data.in_text_title.": "O tla fumana thuso e nngwe ho @local.workshop_data.in_text_title.", + "You can get more support in the @local.workshop_data.in_text_title.": "O ka fumana thuso e nngwe ho @local.workshop_data.in_text_title.", + "Start the @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", + "Finish the @local.workshop_data.in_text_title to get more support.": "Phethela @local.workshop_data.in_text_title hore o fumane thuso e nngwe.", + "Continue the @local.workshop_data.in_text_title": "Tswela pele ka @local.workshop_data.in_text_title", + "Re-access the @local.workshop_data.in_text_title": "Lekola botjha @local.workshop_data.in_text_title", + "CHAT": "QOQA", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Hlalosa kamoo u ikutloang kateng, 'me u khothalletse mocha oa hao hore a bue ka lintho tse mo tshoenyang. Le tla utloisisana hamolemonyana ’me le ka etsa moralo o motle hammoho hore le lule le phetse hantle ’me le thabile!", + "CAUTION": "TLHOKOMEDISO", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Fumana lintlha tsa hau mehloling e tšepahalang ea tlhahisoleseling, e le hore u ka ba le kholiseho linakong tsena tse sa tsitsang. Re utloa le ho bona litaba tse ngata ka batho ba bang le mehala, TV, le inthanete. Na e etsa hore u ikutloe u belaela, matshoenyeho, tshabo, khalefo, kapa pherekano? Sheba pele o arolelana kapa o nka khato!", + "CHOOSE": "KHETHA", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Ho etsa liqeto tse nepahetseng tse bolokang batho ba phetse hantle ebile ba sireletsehile ho ka ba thata. Haholo-holo linakong tsena! U ka thusa ngoana oa hao ea lilemong tsa bocha ho etsa liqeto tse nepahetseng.", + "CHILL": "PHOMOLA", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Kaofela re ikutloa re imetsoe kelellong ka linako tse ling. Nka moea o tebileng kapa le etse ntho e monate hammoho. Ho ka etsa phapang e kholo ho etsa hore lehae la hau le thabe hape le be le khotso! Mehopolo e meng eo u ka e lekang ke ena:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Menahano e fosahetseng e etsa hore re bue hape re etse lintho tse mpe. Leka ho fetola seo o se nahanang le ho se buang ho tloha ho lintho tse mpe ho ya ho tse ntle!", "WHO Website": "Webosaete ya WHO", "UNICEF Website": "Webosaete ya UNICEF", "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Ho thata ho ba motswadi nakong ya COVID. Ikotle sefuba hobane o kgonne ho tla fihlela mona.\n\nRe sebetsana le dikateng tse ntjha mona ho o tshehetsa ka ho buisana le batjha le bana ba hao ka COVID.\n\nTlhahisoleseding e nakong ka ho fetisisa e amanang le COVID-19 e ka fumanwa websaeteng ya WHO le ya UNICEF:", - "This button will take you to the Coronavirus section of the official WHO website.": "Konopo ena e tla o lebisa karolong ya Coronavirus ya webosaete ya semolao ya WHO.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "This button will take you to the Coronavirus section of the official UNICEF website.": "Konopo ena e tla o lebisa karolo ya Coronavirus ya webosaete ya semolao ya UNICEF.", "The URL is https://www.unicef.org/coronavirus/covid-19": "URL ke https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Konopo ena e tla o lebisa karolong ya Coronavirus ya webosaete ya semolao ya WHO.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "Update my parenting experiences": "Kenya dintlha tsa moraorao tsa boiphihlelo ba ka ba botswadi", "Update my personal details": "Kenya dintlha tsa ka tsa moraorao tsa botho", "Update my workshop options": "Kenya dikgetho tsa ka tsa moraorao tsa wekshopo", + "Give me quick parenting tips": "Mphe dikeletso tsa botswadi tse potlakileng", + "Something really bad happened": "Ho etsahetse ntho e mpe haholo", + "I have technical problems with the app": "Ke na le bothata ba setekgenike ka epo ena", + "You will find the in-week messages from the previous workshops here.": "O tla fumana melaetsa ya bekeng ena ho tswa diwekshopong tse fetileng mona.", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Ha o eso kenye dintho dife kapa dife tseo o ka di etsang ho @global.my_activities. Ho ka ba jwang hore o di kgethe?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Ha o eso kenye dintho dife kapa dife tsa ho ikgatholla ho @global.my_relaxes. Ho ka ba jwang hore o di kgethe?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "O tla fumana dikeletso tseo re nahanang hore o ka di fumana di le molemo mona, ho itshetlehile ka dikarabo tsa hao ho customisation ya epo.", + "Relaxation activities": "Dintho tseo o ka di etsang ho ikgatholla", + "Something fun to do with your teen": "Ntho e monate eo o ka e etsang le motjha wa hao", "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Na o tobane le mathata a setekgenike? Re tsebise mme o re thuse ho ntlafatsa @global.parent_app!", "Type your name (optional)": "Thaepa lebitso la hao (ka boithatelo)", "Contact me on @global.whatsapp": "ikopanye le nna ho @global.whatsapp", @@ -91,916 +216,24 @@ "Tell us about your issue": "Re bolelle ditaba tseo o tobaneng le tsona", "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Ka lekgetlo la pele ha mme wa ka a nkopa ho qeta nako le yena, ke ile ka mo bolella hore a kgaohane le nna hobane ke ne ke ntse ke bapala game. Empa o ile a tsitlella hobane ke mokgwa wa hae. Ke ile ka mo bolella hore a ka ntjhebella ha ke bapala haeba ke seo a se batlang. Kamora metsotso e seng mekae o ile a qala ho mpotsa dipotso ka game eo. Qalong ke ile ka utlwa a ntena, empa kamora nakwana ke ne ke thabile hobane o ne a thahasella dintho tseo ke di etsang. O ile a ba a leka ho e bapala!", "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Ntate wa ka o ile a mpolella hore ke bapala basketeball haholo ha sekolo se tswa, kahoo re tlameha ho qala melao ya lelapa. O ile a ntshepisa hore re tla nahana ka tharollo re le mmoho, kahoo ka bobedi ba rona re ile ra rata taba eo. Ke ne ke sa nahane hore seo se ka kgoneha, empa ka re, \"Ho lokile, a re leke\". Re ile ra buisana mme ra dumellana hore molao ke hore ke dumeletswe ho bapala basketball kamora ho etsa homeweke le ho fihlela re ja dijo tsa tinare. Ho thata hore ke bone metswalle ya ka e bapala ha sekolo se tswa, kahoo ke ikitlaelletsa ho qeta homeweke ya ka pele ebe kea tsamaya ke ilo bapala le bona. Hape hona jwale ke kgona ho qeta nako ya mantsiboya ke etsa dintho tse ding tseo ke di batlang kamora hore lelapa le je dijo tsa tinare jwaloka ho shebella basketball ho NBA.", - "You will find the in-week messages from the previous workshops here.": "O tla fumana melaetsa ya bekeng ena ho tswa diwekshopong tse fetileng mona.", - "Start": "Qala", - "How would you like to do this workshop?": "O ka thabela ho etsa wekshopo ena jwang?", - "Coming soon": "E tla haufinyane", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Re tla tlameha ho tshohla ditaba tse ding tsa botswadi pele re qala ho sebetsa ka @local.workshop_data.title.\n\nO ka fumana dithulusi tsa bohlokwa ho @local.workshop_data.title ka @global.parent_centre.", - "My name": "Lebitso la ka", - "@global.weekly_workshop day": "Letsatsi la @global.weekly_workshop", - "I do the workshops...": "Ke etsa diwekshopo...", - "My group's name": "Lebitso la sehlopha sa ka", - "My group is now doing the workshop...": "Hona jwale sehlopha sa ka se etsa wekshopo...", - "I am now doing the workshop...": "Hona jwale ke etsa wekshopo...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Na o tiile o batla ho notlolla diwekshopo tsohle? Hang ha o entse jwalo, o ke ke wa kgona ho di notlela hape", - "You can always find these tools in the @global.parent_centre": "Kamehla o ka fumana dithulusi tsena ho @global.parent_centre", - "Add this activity to @global.my_activities": "Kenya mosebetsi ona ho @global.my_activities", - "Relaxation activities": "Dintho tseo o ka di etsang ho ikgatholla", - "Something fun to do with your teen": "Ntho e monate eo o ka e etsang le motjha wa hao", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Ha o eso kenye dintho dife kapa dife tsa ho ikgatholla ho @global.my_relaxes. Ho ka ba jwang hore o di kgethe?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Ha o eso kenye dintho dife kapa dife tseo o ka di etsang ho @global.my_activities. Ho ka ba jwang hore o di kgethe?", - "Open Survey": "Bula Patlisiso", - "Select Language": "Kgetha Puo", - "Workshop Options": "Dikgetho tsa Wekshopo", - "Unlock Workshops": "Notlolla Diwekshopo", - "Demo Presentation": "Nehelano ya Mohlala", - "Organisation Registration": "Ngodiso ya Mokgatlo", - "Developer Mode": "Developer Mode", - "Unlock all workshops": "Notlolla diwekshopo tsohle", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ka ho tobetsa konopo e katlase o tla notlolla diwekshopo tsohle.\n\nTLHOKOMEDISO: Basebedisi ha baa lokela ho sebedisa tshebetso ya ho notlolla diwekshopo, sena ha se kgothalletswe ntle le haeba kannete seo se hlokahala.", - "Unlock workshops": "Notlolla diwekshopo", - "All workshops are now unlocked.": "Hona jwale diwekshopo tsohle di notlolotswe.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ka ho tobetsa konopo e ka tlaase o tla seta epo botjha hore e kgutlele ho diseting tsa mathomo.\n\nSena se bolela hore kgatelopele yohle ya hao le datha ya tshebediso e tla hlakoleha mme epo e tla sebetsa jwalokaha eka e sa tswa instolwa ka lekgetlo la pele.\n\nTLHOKOMEDISO: Ho seta botjha epo ke ketso e sa etsollweng ebile o ke ke wa kgona ho fumana tlhahisoleseding efe kapa efe hape.", - "Reset App": "Seta Epo Botjha", - "You have successfully entered developer mode.": "O kentse ka katleho developer mode.", - "You have entered an incorrect code.": "O kentse khoutu e fosahetseng.", - "Language": "Puo", - "How did you hear about @global.parent_app?": "O utlwetse ka @global.parent_app jwang?", - "I found it myself": "Ke iphumanetse yona", - "A friend or family": "Ka motswalle kapa lelapa", - "Other": "Ho hong", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "O ka nna wa kopuwa ho romela khoutu ena ho batho ba tla o tshehetsa leetong la hao la @global.parent_app.", - "Last sync at: @local.sync_latest": "Lekgetlo la ho qetela la ho phera: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Sesebediswa sena ha se eso pherwe. Phera ho senola khoutu ya hao.", - "Sync now": "Phera hona jwale", - "Syncing...": "E a phera...", - "You selected @local.threshold or less": "O kgethile @local.threshold kapa katlase", - "You selected more than @local.threshold": "O kgethile ho feta ho @local.threshold", - "Reply": "Araba", - "Days in the past month": "Matsatsi a kgwedi e fetileng", - "Days in the past week": "Matsatsi bekeng e fetileng", - "You selected less than @local.threshold": "O kgethile katlasa @local.threshold", - "Unlock for less than @local.threshold": "Notlolla bakeng sa katlase ho @local.threshold", - "You selected @local.threshold or more": "O kgethile @local.threshold kapa ho feta", - "Video": "Video", - "Timer": "Sebolokanako", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Tobetsa kgutlotharo ho o thusa ho tiisa hore puisano ena e fella ho metsotso e @local.timer_duration.", - "Options": "Dikgetho", - "Home": "Leqephe le Qalang", - "Settings": "Diseting", - "Template": "Thempleite", - "Tour": "Lahlela Bofofu", - "In-Week Messages": "Melaetsa ya Beke Ena", - "Campaigns": "Matsholo", - "Notifications": "Ditsebiso", - "About @global.parent_app": "Mabapi le @global.parent_app", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_centre e ile ya qapuwa ke Parenting for Lifelong Health (PLH) – e tswetsweng ke ho ikopanya ha ditsebi tsa botswadi lefatsheng lohle ho tswa UNICEF, WHO le Diyunivesithing tsa Afrika Borwa le UK, hammoho le diNGO le malapa le batjha hohle Afrika. Batswadi le batjha ba sebeditse le rona epong ena mme ba re thusitse ho netefatsa hore ho bonolo ho e sebedisa, ebile ke ntho e monate e kgathollang. Tse ding tsa dikahare tse epong ena, jwaloka ditshisinyo tsa mesebetsi le dipale tse tshwantsheditsweng, di ile tsa qapuwa ke batswadi le batjha ho tiisa hore e tshwanela ditlhoko tsa malapa.\n\nParenting for Lifelong Health (PLH) e ikemiseditse ho tshehetsa dingolwa le mananeo a mahala le a abelanwang a botswadi, ho tshehetsa batswadi lefatsheng ka bophara ho kgothalletsa boiketlo ba bana ba bona.", - "Finish current workshop": "Qetela wekshopo ya hona jwale", - "Here is a fun activity to do with your teen!": "Ntho e thabisang eo o ka e etsang le motjha wa hao ke ena!", - "Start @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Tswela pele ka @local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Dumela @fields.user_name! Bekeng ena o entse:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Dumela @fields.user_name! Rea leboha ka ho sebedisa @global.parent_app le ka ho boikemisetso ba hao jwaloka motswadi. \n\nHopola ho tobetsa ho @global.parent_points!", - "That’s wonderful!": "Ke ditaba tse monate ruri!", - "Nice work!": "Mosebetsi o babatsehang!", - "Your commitment is not taken for granted.": "Boitelo ba hao ha bo nkuwe e le ba lefeela.", - "Keep up the good work!": "Pele ya pele ka mosebetsi o motle!", - "This is lovely!": "Ke ditaba tse monate!", - "Tap yourself on the shoulder. You deserve this.": "Oiphaphathe lehetleng. Kgau e a o tshwanela.", - "Every @global.parent_point counts!": "@global.parent_point e nngwe le e nngwe e bohlokwa!", - "Relax now": "Phutholoha hona jwale", - "Did you relax already? Tap it!": "Na o se o phutholohile? Tobetsa!", - "Looking after yourself matters.": "Ho bohlokwa ho itlhokomela.", - "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Ke botle! Ke thabela ho utlwa hore dintho di tsamaya hantle kajeno. Ke boikutlo bo molemo hakaakang!", - "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ka dinako tse ding di tsamaya hantle. Ka dinako tse ding ha ho jwalo. Mme ka dinako tse ding ha re tsebe hantle hore na re ikutlwa jwang... mme le moo ho lokile! Hopola hore ha o mong.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Ke taba tse monate, haholoholo dinakong tse jwaloka tsena tse boima. O kgalala.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Rea tseba hore na ho boima hakae ho hodisa batjha dinakong tsena. Ho ithuta ho laola seterese sa hao ho thusa wena - hammoho le lelapa la hao.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho laola seterese.\n\nHo bohlokwa hore re tsebe tsela ya ho laola seterese sa rona. Ka dinako tseng bana ba rona ba itshwara ka ditsela tse etsang hore re ikutlwe re na le seterese mme rona jwaloka batswadi re ka etsa hore le bana ba rona ba be le seterese.\n\nKahoo, ho bohlokwa ho elellwa ha re ikutlwa re na le seterese le ho nka kgefu ebe re kga moya. Seo se tla o thusa ho laola seterese sa hao.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "A re shebeng mohlala wa kamoo seterese se ka re imelang e mong le e mong wa rona kateng:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver: “Ako kgaohane le nna, o shebane le taba tsa hao!”", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ke entseng jwale? Mehla ena ha o mmamele!” \n\n@global.w_stress_male_caregiver: “Ke itse o kgaohane le nna, ho seng jwalo ke tla o shapa!”", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bona! Ke qeta ho hlwekisa ntlo!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ke mang ya nang le taba le ntlonyana ena e makatsang!”", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "O nahana hore @global.w_stress_teen_boy_1 o ile a ikutlwa jwang? @global.w_stress_male_caregiver wa hae yena? Ho thweng ka @global.w_stress_girl?\n\n@global.w_stress_male_caregiver o ne a ka etsang ka tsela e fapaneng?", - "How do you think @global.w_stress_teen_boy_1 felt?": "O nahana hore @global.w_stress_teen_boy_1 o ile ka ikutlwa jwang?", - "And @global.w_stress_male_caregiver?": "@global.w_stress_male_caregiver yena?", - "And @global.w_stress_girl?": "Ho thweng ka @global.w_stress_girl?", - "Scared": "A tshohile", - "Each of them was feeling upset for their own reason!": "Kaofela ha bona ba ne ba ikutlwa ba kwatile ka mabaka a bona!", - "What could @global.w_stress_male_caregiver have done differently?": "@global.w_stress_male_caregiver a ka be a entse eng ka tsela e fapaneng?", - "Recognise why he feels stressed": "A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese", - "Take a deep breath and speak calmly": "A kge moya haholo mme a bue a kgobile matshwafo", - "Show he understands his teen’s feelings": "A bontshe hore o utlwisisa maikutlo a motjha wa hae", - "Think about solutions together with @global.w_stress_teen_boy_1": "A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1", - "Do something positive together with @global.w_stress_teen_boy_1": "A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver a ka...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese\n* A kge moya haholo mme a bue a kgobile matshwafo\n* A bontshe hore o utlwisisa maikutlo a motjha wa hae\n* A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1\n* A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Rea leboha hore le nahane ka taba ena! A re kgutleleng morao mme re bone kamoo @global.w_stress_male_caregiver a etsang dintho kateng hona jwale:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver o feletswe ke mosebetsi. O dutse lapeng a ikutlwa a sulafalletswe ebile a na le seterese, ha @global.w_stress_teen_boy_1 a kena.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ke ne ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver (o kga moya): “Eish ngwanaka. Ho bile boima kajeno. Mongaka o ntebetse mosebetsing.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Ao banna! Ene ke hloka yunifomo e ntjha ya sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka, moshanyanaka, Empa mosebetsi wa @global.w_stress_female_caregiver wa hao o tla re thusa nakong eo ke ntseng ke batla mosebetsi o mong.”", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Nna le nna nka thusa ka ho batla mosebetsi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “O ska kgathatseha, ho tla loka @global.w_stress_teen_boy_1. Kea leboha ha o batla ho thusa. Empa ntho ya bohlokwa haholo ke hore wena o sebetse ka thata sekolong. Kea leboha ka hore o mmamele.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “A re ilo bapala bolo mmoho. Seo se tla nthusa hore ke theole seterese hanyane.” \n\n@global.w_stress_teen_boy_1: “Ho lokile, @global.w_stress_male_caregiver!”", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Puisano eo e tsamaile hantle haholo!\n\nHo kgefutsa ho tla o thusa hore o arabe o theotse moya ha o ikutlwa o halefile kapa o na le seterese. Ho leke, o tla bona!", - "Safety Amnesty": "Tshwarelo Molemong wa Polokeho", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Nahana ka mehleng ya ha o sa le motjha.\n\nNa ho kile ha eba le nako eo ka yona o neng o le kotsing empa o sa kgone ho bolella lelapa la hao hobane o ne o halefile?\n\nSena se BATLILE se etsahalla @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re ba shebelleng:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"O ska jwetsa batho ba baholo, hore ke ya bareng le metswalle ya ka bosiung bona\" \n\n@global.w_stress_teen_girl: \"O je monate! Ke ba jwetsitse hore ke tjhakela mokgotsi wa ka wa ngwanana, empa ke ya phathing e monate\"", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Ke nahana hore ba rekisa dithethefatsi. Kaofela re ka tshwarwa. Empa nkeke ka bolella batswadi ba ka – ba tla halefa haholo\"", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: \"Ke tshohile. Batho bohle ba nwele haholo hoo ba ke keng ba nkisa lapeng. Moshemane enwa o re o tla nkisa empa re qale habo pele. Nkeke ka jwetsa batswadi ba ka – ke ba jwetsitse leshano ka ho tla phating ena.\"", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Ana ke maemo a kotsi! Ka lehlohonolo, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba hopola hore na @global.w_stress_parent o ile a ba bolella eng: \n\n\"Ke amehile ka polokeho ya lona ho feta eng kapa eng. Haeba le ka ikutlwa le kwatile, kapa le tshohile, ka dinako tsohle le ntetsetse hore ke tlo le thusa, kapa le mpolelle taba eo. \n\nE reng feela 'TSHWARELO MOLEMONG WA POLOKEHO'. Kea le tshepisa ke tla leka sohle hore ke le thuse ebile nkeke ka le halefela – le haeba le ne le etsa ntho eo le sa lokelang ho e etsa.\"", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke tshwarelo molemong wa polokeho. Ke kopa o tle o tlo nlata? Kannete ke hloka lifti ya ho ya lapeng.\"", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, tshwarelo molemong wa polokeho. Ke bona eka mekgotsi ya ka e mathateng. Ha ke batle ho emisa hoba motswalle wa bona, empa ke kgathatsehile. Na re ka bua?\"", - "BREATHE. Slowly. Pause.": "O KGE MOYA. Butle. Kgefutsa.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Pele o bua eng kapa eng, hema butle o kge moya mme o o tlohele ka makgetlo a mahlano. O tla theola moya, mme o tla ba le monyetla wa ho nahana.", - "SHARE how you feel": "PHETA kamoo o ikutlwang kateng", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Ntho ena e thata. Boholo ba rona, re kile ra bolellwa hore re se lle, kapa ra bontsha bana ba rona maikutlo a rona. Empa kga moya o mongata mme o kgobile matshwafo o ba bolelle kamoo o ikutlwang kateng. Ba tla utlwisisa hantle, mme ba tla be ba ithute tsela ya ho sebetsana le seterese ho wena.", - "SHOW them you care": "Ba BONTSHE hore o a ba tsotella", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Le yona e boima! Seterese se etsa hore re amehe ka rona. Empa batjha ba rona ba hloka tshehetso ya rona. Ba botse hore na ba ikutlwa jwang. Ba mamele mme o ba tshedise. Leka ho ba haka kapa o re ‘Kea utlwisisa’. Seo se ka fetola dintho tsohle.", - "SEEK the positive": "BATLA dintle", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Na wena le motjha wa hao le nahana ka dintho tse ka thusang? Na le ka etsa ntho e ntle mmoho hore le tlose dikelello tsa lona nthong e bakang seterese?", - "If all else fails, breathe. You can do this.": "Ha tsena tsohle di hloleha, kga moya. O ka atleha.", - "There are two home practices for this week.": "Ho na le dintho tse pedi tsa ho ikwetlisa lapeng bekeng ena.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Neng kapa neng ha o utlwa o na le seterese kapa o kwatile: o kge moya ka makgetlo a mahlano le ho o tlohela pele o nka bohato.\n\nMme ha ka bobedi ba lona le theotse moya, bolella motjha wa hao hore na o ikutlwa jwang.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Buisana le motjha wa hao ka \"tshwarelo molemong wa polokeho\", mme mmoho le nahane ka hore na le ka sebedisa sena neng.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Neng kapa neng ha o kgefutsa pele o arabela, kapa neng kapa neng ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_points tsa hao mme o keteke katleho ya hao!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "O phethile wekshopo ya bekeng ena.\n\nBekeng e tlang, re tla buisana ka tjhelete - o tla hloka:\n* leqephe la pampiri/khateboto\n* pene\n* majwe/dinawa/dithollo tse nyane tse 20\n\nE tla ba monate!", - "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Ke hantle hore o phetse hantle kajeno! Ntho e le nngwe e tsamaileng hantle ke efe kajeno? Hopola ho ipabatsa ka yona.", - "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Ke maswabi ho utlwa hore ha o ikutlwe hantle kajeno. O sebeditse ka ho lemoha maikutlo a hao, le ho leka ho kgoba matshwafo le ho iqenehela. O behela lelapa la hao mohlala o motle.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Ntho e nngwe le e nngwe e nyane eo o e etsang e bohlokwa. Re tshepa hore le wena o motlotlo ka wena.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Malapa wohle a ba le ditsietsi. Ha re itokisa mmoho ebile re tseba hore na re fumana thuso hokae PELE ntho e mpe e etsahala, re ka hlola tsietsi efe kapa efe.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho sebetsana le ditsietsi.\n\nTsietsi e ka hlaha kae kapa kae. Tsietsi e ka hlaha neng kapa neng. Kahoo ho bohlokwa hore lelapa le be le ditlhophiso haeba setho sefe kapa sefe sa lelapa le iphumana le se tsietsing.\n\nHo bohlokwa ho etsa ditlhophiso e le hore setho se seng le se seng sa lelapa se ka ikutlwa se sireleditswe.\n\nHa re sebetsana le tsietsi, hopola ho kgefutsa, ho kga moya, le ho dula o kgobile matshwafo. Sena se tla o thusa ho sebetsana le tsietsi kapa tlokotsi hantle.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Pale le puisano\n* Pale le puisano\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso\n* Pale le boikgopotso\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Tsietsi e ka hlahela mang kapa mang. \n\nA re bone se etsahalletseng @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Ao ngwanaka, ekare o utlwile bohloko, na o ka thabela ho mpolella hore na ho etsahetseng?\"", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ke Malome, o… o… o ile a ntshwara.\" \n\n@global.w_crisis_female_caregiver (o a nahana): \"Kga moya o mongata... Ngwana wa ka o hloka eng? O hloka hore ke theole moya mme ke mo mamele\" \n\n@global.w_crisis_female_caregiver: \"Tloho o dule pela ka mona. O ska tata, ke o utlwe hantle.\"", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Kannete, o… o… nqobelletse! O nqobelletse ho etsa thobalano le yena! Ke ne ke sa batle, ke ya hlapanya, ke ile ka ba ka re NTLOHELE, empa a re ke tla ikenya mathateng.\"\n\n@global.w_crisis_female_caregiver: \"Kea leboha ha o mpolelletse taba ena. Ha o mathateng ho hang. Ena hase phoso ya hao.\"", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Maobane ha o ilo bona @global.w_crisis_adult_friend. O ile a kena feela mme seo se etsahetse ka nako eo.\"\n\n@global.w_crisis_female_caregiver: \"Ke ya utlwa, ebile ke dumela seo o mpolellang sona ngwanaka. Ena ke ntho e kgolo mme re tla fumana tsela ya ho batla thuso eo re e hlokang. Re ka leba hokae ho fumana thuso?\"\n\n@global.w_crisis_teen_girl_1: \"Moo ke kenang sekolo teng?\"", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Oo, ka ba ka hopola, a re ye tliliniking. Ba tla tseba hore na re etseng ho o thusa. Na o utlwa eka o ka kgona?\"\n\n@global.w_crisis_teen_girl_1: \"E… E lokile… Empa na o tla tsamaya le nna?\"", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Ho jwalo, ke tsamaya le wena. Mme @global.w_crisis_teen_girl_1? Hopola, hase phoso ya hao. Kea o rata. O motho ya molemo. Re tla feta bothateng bona.\"", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Bona e ne e le boemo bo thata bakeng sa @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver wa hae! Sena se ka etsahalla bashanyana le banana.", - "What skills did @global.w_crisis_female_caregiver use?": "@global.w_crisis_female_caregiver o ne a lokela ho sebedisa tsebo efe?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "E, hantlentle @global.w_crisis_female_caregiver o sebedisitse ditsebo tsohle – le wena o ka kgona!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Bothata bo bong boo batswadi ba bangata ba kgathatsehileng ka bona ke diketso tsa dikgoka le tlolo ya molao. A re shebeng mohlala ona hammoho.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ho tloha maobane o bonahala o kgathatsehile. Ebe molato ke eng?\"", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Maobane, nna le metswalle ya ka re ile ra ya mmetjheng wa bolo. Bashemane ba bang ba tahilweng ba ile ba qala ho lwantsha motswalle wa ka.\"\n\n@global.w_crisis_male_caregiver_1: \"Tswela pele, ke mametse. Ke tshepa hore ha o a ka wa lwana?\"", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Ke ne ke sa batle ho lwana, empa ke ne nke ke ka ema moo yaba ke ba shebella ha ba otla mokgotsi wa ka, yaba…\"\n\n@global.w_crisis_male_caregiver_1: \"Yaba, le wena o a lwana ho thusetsa mokgotsi wa hao?\"", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Ntwa e ne e se na monga yona. Ke bone motho ya rapaletseng fatshe ka hara mophula wa madi. Ke bone eka… o shwele.\"", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Ke thabela hore ebe o mpolelletse sena, @global.w_crisis_teen_boy_1. A re dule fatshe mmoho mme re buisane ka taba ena hore na re tlameha ho kopa thuso ya mapolesa kapa ya motho e mong.\"", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Kea leboha, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Re tla feta boemong bona. Hopola, re tla o tshehetsa re le lelapa.\"", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "E ne e le boemo bo thata hakaalo bakeng sa @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 wa hae!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "@global.w_crisis_male_caregiver_1 o ne a lokela ho sebedisa tsebo efe?", - "All these skills can help in a crisis.": "Tsebo ena kaofela e ka thusa ha ho hlahile tsietsi.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Ditsietsi di ka etsa hore re ikutlwe re halefile kapa re se na matla. Empa ke yona nako eo batjha ba rona ba hlokang hore re kge moya, re mamele mme re nahane.", - "BREATHE": "KGA MOYA", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Dula o kgobile matshwafo. Ipotse 'motjha wa ka o hloka eng hona jwale'", - "Tell them you are there for them and love them.": "Mo bolelle hore o tla wa o tsoha le yena ebile o a mo rata.", - "THINK": "NAHANA", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Buisana le motjha wa hao. Ke eng e ka thusang boemong boo? O ka nna wa tlameha ho etsa ditokisetso tsa hanghang hona jwale, ebe o etsa tsa nako e telele hamorao.", - "You can be proud of yourself for exploring ways to get help!": "O ka ba motlotlo ka wena ka ho ithuta ditsela tsa ho fumana thuso!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Ho molemo ho tlwaela ho sebetsana le tlokotsi pele ho etsahala ntho e nngwe.\n\nSheba dinako tsena tsa ditsietsi kapa ditlokotsi tse hlano tse hlahelang malapa. Nahana o le motswadi: O ne o tla etsang?\n\nHopola: KGA MOYA - MAMELA - NAHANA", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Tsietsi ya 1: @global.w_crisis_teen_boy_2 o a lwana sekolong", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Kea qala ho ba boemong bona. Empa jwale ba tlo ntebela\"", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Tsietsi ya 2: @global.w_crisis_teen_girl_1 eba moimana", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke swabile haholo. Ha ke tsebe hore na ke etseng\"", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Tsietsi ya 3: @global.w_crisis_teen_boy_2 o imisa ngwanana", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ha ke batle ho ba le lesea\"", - "How could you respond to @global.w_crisis_teen_boy_2?": "O ne o tla arabela jwang ho @global.w_crisis_teen_boy_2?", - "Crisis 4: Someone in the family gets sick": "Tsietsi ya 4: Motho e mong ka lapeng o a kula", - "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Tlhahlobo e re ke na le HIV. Ke tshohile hore ke tlo shwa\"", - "How could you respond in this situation?": "O ne o tla arabela jwang boemong boo?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Tsietsi ya 5: @global.w_crisis_teen_girl_1 o qobellwa ke moshemane eo a ratanang le yena hore ba etse thobalano", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Ke ne ke sa batle. Jwale ke tla ima kapa ke kule. @global.w_crisis_female_caregiver, ke tshohile haholo...\"", - "How could you respond to @global.w_crisis_teen_girl_1?": "O ne o tla arabela jwang ho @global.w_crisis_teen_girl_1?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Hopolang ho tshehetsana le ho kgothatsana. Ho thata ho dula o theotse moya le ho mamelana ha ho hlahile tsietsi - re motlotlo ka wena.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Le motjha wa hao kgethang bo bong ho maemo ana (kapa nahanang ka bo bong ka bolona!). Shebang khathune, mme le buisane ka seo le ka se etsang mmoho haeba seo se etsahalla motswalle kapa se hlaha ka lapeng.\n\nMme hopola: KGA MOYA - MAMELA - NAHANA", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "O phethetse wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tlang e tla le keteka kaofela, le ho le thusa ho etsa ditokisetso bakeng sa kamoso.\n\nHobaneng ha le sa lokisetse phathi moo le tla ja mmoho, le letse mmino haeba le rata ho tantsha!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "O phethile wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tla e tla o keteka, mme o ka kgetha tshehetso eo o e batlang ho ya pele.\n\nO ka lokisetsa dimenyemenye ho keteka – ntho eo o ratang ho e ja, kapa mmino oo o ratang ho o mamela!", - "Self-care is a key parenting tool.": "Ho itlhokomela ke thulusi ya bohlokwa ya botswadi.", - "How are you feeling today?": "O ikutlwa jwang kajeno?", - "So good to hear you are feeling well today. You are incredible!": "Ke thabela ho utlwa hore o ikutlwa hantle kajeno. O motho ya hlollang!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Re maswabi hore o hula ka thata hona jwale. Hemela hodimo mme o tsebe hore o motho wa bohlokwa.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "O ka thusa motjha wa hao ho utlwisisa hore ho tlola melao ya lelapa ho fella ka ditlamorao.\n\nEmpa TSELA eo o etsang sena ka yona e bohlokwa.\n\nHo jarisa motjha ditlamorao hantle ho mo thusa ho itshwara hantle le ho etsa hore bophelo ba lelapa bo iketle hanyane...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho jara ditlamorao moya o le fatshe.\n\nHo bohlokwa hore ha re qala ditlamorao ho batjha ba rona, re ba kenyelletse, empa hape ho bohlokwa hore re be re theotse moya ha re qala ditlamorao.\n\nSena se tla thusa hore re dumellane ka ho qala ditlamorao tse mosa ho batjha ba rona mme batjha ba rona ba tla di hopola kapele ha ba ameha mme seo se tla etsa hore ba jare boikarabelo.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le puisano – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le boikgopotso – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", - "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "A re bale se etsahetseng ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! O leite!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape”. \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ke kopa ho o hlalosetsa, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ha o mamele molao! Ke tla o shapa!”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Ntho eo o e etsang ha e hantle! Ha ho na mohla o mmamelang!! Ke o hloile!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Buisanang: \n* Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", - "Giving a consequence this way did not work well because...": "Ho fana ka ditlamorao ka tsela ena ha ho a sebetsa hantle hobane...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver o ne a halefile", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver ha aa dumella @global.w_consequence_teen_boy_1 ho itlhalosa", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Ha ho a buisanwa le @global.w_consequence_teen_boy_1 ka ditlamorao tseo esale pele", - "The consequence was too strong": "Ditlamorao di ne di le matla haholo", - "Why did giving a consequence this way not work well?": "Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "E, ho nkeha maikutlo ka tsela e matla hakaalo ho halefisitse le ho kwatisa motho e mong le e mong.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Batjha ba dula ba tlola melao. Kgolo ke nako e boima ha ba ithuta hore na ke bomang.\n\nKa lehlohonolo, ho na le ditsela tsa ho kgalemela batjha ntle le ho halefa kapa ho sebedisa dikgoka… ebile di sebetsa hantle!\n\nHo fana ka ditlamorao re kgobile matshwafo ho thusa batjha ho jara boikarabelo ka seo ba se etsang – ebang se setle kapa se sebe.\n\nMehlala ya taba ena ke ena - ipone o le motswadi:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ditlamorao tse kgutsitseng di lokela ho ba...\n\nTSE LOKILENG: E se be tse sehloho haholo mme ruri o ka di kgona\n\nHANGHANG: Mo jarise tsona kapele kamoo ho ka kgonehang\n\nTSE TSHWANANG: Ditlamorao tse tshwanang ka dinako tsohle", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.\n\nKe ditlamorao dife tse ka thusang moo?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Ditlamorao ha di tshwane hantle le kotlo: di fa batjha ba rona monyetla wa ho ithuta ho jara boikarabelo ka diketso tsa bona.\n\nMme di fanwa ka tsela e laolehileng EBILE di atleha ho feta ho shapa kapa ho tjwedietsa motjha!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.\n\nke ditlamorao dife tse ka thusang moo?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Ditlamorao di atleha haholo haeba le buisane la ba la dumellana ka tsona esale pele le batjha pele le ka ba jarisa tsona.\n\nMme: hase ditlamorao tsohle tse bosula… Le ka boela la dumellana ka ditlamorao tse MOLEMO tsa ho etsa diketso tse MOLEMO hore o bone boitshwaro bo botle hangata!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.", - "What consequence would help here?": "Ke ditlamorao dife tse ka thusang boemong boo?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.\n\nKe ditlamorao dife tse monate tse ka thusang moo?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Tsela ya ho qala ditlamorao tse monate e bohlokwa. Hopola, ha o kenyelletsa motjha wa hao, hangata dintho di tsamaya bothebelele!", - "EXPLAIN": "HLALOSA", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Tiisa hore bobedi ba lona le kgobile matshwafo. Hemela hodimo ka makgetlo a seng makae. Hlalosetsa motjha wa hao hore na ke hobaneng ha o kgathatsehile ka boitshwaro ba hae.\n\nHlalosa mabaka a hore na hobaneng ha ho hlokeha molao. O ka mo phetela maikutlo a hao - ho lokile ho mo bolella hore o swabile.", - "AGREE": "DUMELLANANG", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Hlophisa ditlamorao le motjha wa hao tsa ho latela molao le ho se o latele.\n\nMo botse hore na o nahana jwang. Buisanang ho fihlela le dumellana ka ho hong ho utlwahalang.\n\nEtsang ditlamorao tsa HO SE latele molao le tlotla ya ha A latela molao.", - "ACT": "NKA BOHATO", - "When your teen follows the rule, give praise and privileges!": "Ha motjha wa hao a latela molao, mo babatse mme o mo fe dintho tse kgethehileng!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "O tla ikutlwa a hlomphuwa ebile e le wa bohlokwa. Hopola: Ha o mo babatsa haholo, o tla bonahatsa boitshwaro boo bo botle!", - "When your teen does not follow the rule, follow through with the consequence.": "Ha motjha wa hao a sa latela molao, mo jarise ditlamorao.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Ha motjha wa hao a tlola molao, ka mosa mo jarise ditlamorao tsa ketso ya hae. E lokela ho ba tse LOKILENG (eseng tse sehloho), HANGHANG (di jarise tsona ntle ho tshenyo ya nako) KA TSELA E TSHWANANG (ebe tse tshwanang nako le nako).", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Buisanang ka:\n* Ke melao efe eo motjha wa hao a e tlolang kgafetsa? \n* O ka sebedisa ditlamorao dife bakeng sa molao ka mong o tobileng o tlotsweng? \n\nDitlamorao di lokela ho ba: \nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako).\n\nBabatsanang le ho kgothatsana – re ka matlafatsana!", - "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "A re kgutlele ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", - "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: \"Ke kgathatsehile ka hore o sa ntse o fihla lapeng leite mme sena se etsahala kgafetsa, @global.w_consequence_teen_boy_1. Re ka etsang ho o thusa ho hopola ho tla lapeng ka nako?\"\n\n@global.w_consequence_teen_boy_1: \"Ha ke fihla lapeng ka nako, mohlomong nka fihla metsotso e 30 pele ho nako e tlwaelehileng?\"", - "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: O nahanne ntho e ntle! Mme jwale re tla etsang haeba o sa latele molao? \n\n@global.w_consequence_teen_boy_1 (o a korotla): “Mgmluuhm”", - "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: \"Bona hle moshana, kea tseba hore ho na le ntho eo o e nahanang.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile…. Ho thweng ka: Ke tlameha ho etsa homeweke ya ka?\"", - "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: \"O lokela ho etsa homeweke ya hao hanghang. Ha o lebala molao, etlaba hantle hore letsatsing le hlahlamang o se ke wa bona metswalle ya hao.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile, @global.w_consequence_male_caregiver.\"", - "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Letsatsing le hlahlamang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Ke leite!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape.” \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “E re ke o hlalosetse, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ke hara mpa ya bosiu mme o fihlile leite ka nako eo re sa dumellanang ka yona. Ho sa tsotellehe lebaka, o tlameha ho utlwisisa hore ntho ena ha e amohelehe. @global.w_consequence_female_caregiver mme ke utlwa ke tshwenyehile haholo.”", - "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Metswalle ya ka e ne e batla re dule ho fihlela bosiu. E mpitsa ngwana hobane ke batla ho tla lapeng ka nako.” \n\n@global.w_consequence_male_caregiver: “Kea tseba hore ho ka ba thata ho hanyetsa metswalle ya hao. E re re bue ka taba eo hoseng ha re se re phomotse.”", - "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo ke ile ka le tshwenya ebile @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Kea leboha. Tsa mo robala, empa o hopole, kaha o fihlile lapeng kamora nako eo re dumellaneng ka yona, hosane re ke ke ra o dumella ho tswa bosiu.”", - "Let's talk about this story": "A re bue ka pale ena", - "Using a consequence worked well this time because...": "Ho mo jarisa ditlamorao ho atlehile lekgetlong lena hobane...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver wa hae ba buisana ka ditlamorao ha bobedi ba bona ba theotse moya", - "They agreed on consequences together": "Ba dumellana ka ditlamorao mmoho", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver o arabetse a theotse moya empa a sa hlathe kwana le kwana ha @global.w_consequence_teen_boy_1 a tlotse molao", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver o ile a mamela @global.w_consequence_teen_boy_1", - "The consequence was realistic and appropriate": "Ditlamorao ebile tse utlwahalang le tse loketseng", - "Why did using a consequence work well this time?": "Ke hobaneng ha ho mo jarisa ditlamorao ho atlehile lekgetlong lee?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Ke ditlamorao dife tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng?\n\nHopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", - "Not seeing any friends for a month": "Ho se bone metswalle efe kapa efe kgwedi kaofela", - "This may be hard to do for you and also too harsh!": "Ena ekaba ntho e thata ho wena ebile e tla be e le sehloho!", - "Cancelling their birthday plans in a month’s time": "Ho tlohela ditokisetso tsa mokete wa letsatsi la tswalo o saletsweng ke kgwedi", - "This is too far in the future, and too harsh as well!": "Ke ntho ya kgale haholo, ebile le ena e tla ba ketso e sehloho!", - "No TV this evening": "Ha ba shebelle TV mantsiboyeng ana", - "Perfect, this sounds fair and can be done straight away": "Hase moo, ena e utlwahala e lokile ebile e ka etswa hanghang", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Hlophisa ditlamorao tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng. Hopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Boikwetliso ba hao ba lapeng bekeng ena e tla ba ho buisana le motjha wa hao ka ntho e le NNGWE e seng monate le ntho e le NNGWE e monate e tla etsahala e le ditlamorao.\n\nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Boitshwaro bo Bobe: Ho fihla lapeng kamora hora eo ho dumellanweng ka yona. \n\nDitlamorao tse Bohloko: Ha a bone metswalle letsatsing le hlahlamang. \n\nBoitshwaro bo Bobe: Ho bua ka tello. \n\nDitlamorao tse Bohloko: Ngola lengolo la ho kopa tshwarelo. \n \nBoitshwaro bo Botle: Ho thusa ha ho ilo rekwa mabenkeleng. \n\nDitlamorao tse Monate: Metsotso e meng e 30 ya ho etsa ntho eo a e ratang eo a e kgethileng. \n\nBoitshwaro bo Botle: Ho thusa ho hlokomela bana babo ba banyane. \n\nDitlamorao tse Monate: Ho ekeletswa hora eo a e qetang le metswalle ya hae ka mafelobeke.", - "Great!": "Ke botle!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Kea tseba hore bophelo bo thata. Ke motlotlo ka wena.\n\nHo sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona!", - "Using the app together": "Ho sebedisa epo mmoho", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Ke thabela ho o bona!\n\nE re re qale ka ho thusa sehlopha sa hao hore se qalelle.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Dumellanang ka melao ya motheo mmoho:\n* Re tla kopana ka (ma)letsatsi/(di)nako efe bekeng?\n* Ke mang ya tla tshwara (di)founo ha e lla nakong ya tshebetso ya rona?\n* Re ka etsang ho tiisa hore bohle ba kenella ka bolokolohi?\n* Kaofela re ka etsang hore re ikutlwe re hlomphuwe?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "O ka fetola matsatsi a hao a wekshopo le lebitso la sehlopha sa hao neng kapa neng ho @global.weekly_workshop_options.", - "Some rules that other groups made:": "Melao e meng eo dihlopha tse ding di e entseng:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Labobedi ka 7 mantsiboya ke nako ya hore re be mmoho ho @global.parent_app\n* Tjhentjhanang ka hore na ke mang ya tshwarang mohala (motho ka mong o etsa ketso e 1)\n* Amohelang dintho tseo kaofela di le hlahetseng. Kaofela ha re tshwane!\n* Tjhentjhanang ka ho bua le ho mamelana\n* Dipotso tsohle dia amohelwa\n* Seo re buang ka sona se fella hara rona", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "O kgalala!\n\nLetsatsi le letsatsi, lebohela seo o se entseng hantle. Iputse ka ho hong ho o thabisang. Mme o hemele hodimo ho o thusa ho theola moya. \n\nHopola, o fumana ntlha ya @global.parent_point nako le nako ha o itlhokomela - o motho wa bohlokwa!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ho thata haholo ho ba motswadi. Ka dinako tse ding ekare bana ba rona ha ho mohla ba re mamelang.\n\nEmpa saense e bontsha hore ho qeta metsotso ese mekae letsatsi ka leng re amehile ka nako ya boinotshing le batjha ba rona ho etsa hore re tshepane le ho ratana.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Nako ya boinotshing ke ha re amehile ka bona feela, ntle ho TV kapa difouno. Ba tlohelle ba etelle pele ho seo le se etsang kapa seo le buang ka sona.\n\nHo ka ba molemo ho qeta metsotso e mashome a mabedi ka letsatsi, empa le metsotso e mehlano ka letsatsi e molemo haholo.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Dumela.\n\nSehlooho sa rona sa kajeno ke nako ya boinotshing le bana ba rona.\n\nHo bohlokwa ho qeta nako ya boinotshing le bana ba rona hore ba ka re utlwisisa, le hore re kgone ho fumana monyetla wa ho ba utlwisisa.\n\nHopola, lelapa le utlwisisanang hantle le phela ka kutlwano.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Diketso tsa ho itlhokomela\n* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Neanang malebela! \n\nKe dintho dife tseo o ka di etsang hore o qete nako ya boinotshing le batjha ba hao?\n\nNa o utlwa eka ha o NA NAKO ebile o kgathetse? O tle ka dikeletso bakeng sa nako ya boinotshing tse sa nkeng nako e ngata, jwaloka ho tsamaya mmoho ha le ya mabenkeleng mmoho.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", - "Let's think of ways to spend one-on-one time with your teen.": "A re nahane ka ditsela tsa ho qeta nako ya boinotshing le motjha wa hao.", - "What could you do to spend one-on-one time with your teen?": "O ka etsang hore o qete nako ya boinotshing le motjha wa hao?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Na o utlwa eka HA O NA NAKO ebile o kgathetse?\nHopola ho nahana le ka ditsela tse sa jeng nako e ngata.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", - "DAY - Try to do it every day": "LETSATSI - Lekang ho etsa sena letsatsi le letsatsi", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Fumana metsotso e 5 (kapa ho feta!) letsatsi le letsatsi ha ho se na ntho eo motjha wa hao a batlang ho e etsa.", - "PLAY - Let your teen choose": "BAPALA - E re motjha wa hao a kgethe", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Bolella motjha wa hao hore o ka thabela ho qeta nako le yena mme ke yena ya tla kgetha hore le tla etsang le hore na le tla bua ka eng. Qalong a ka nna a o makalla empa o tla thabela nako ena eo o e qetang le yena!", - "STAY - Focus on your teen": "DULA - Tsepamisa mohopolo motjheng wa hao", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Tima TV mme o behelle difouno kathoko. Sheba motjha wa hao. Oma ka hlooho mme o re \"Kea bona\" ho bontsha hore kannete o mo ela hloko. Amohela seo a o bolellang sona o sa mo ahlole.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Nako ya boinotshing le motjha wa hao e ka o thabisa le wena! Hape seo se ka nna sa o hafolela seterese.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Qeta metsotso e 5-20 ya nako ya boinotshing le motjha wa hao, o ka etsa seo letsatsi le letsatsi bekeng ena.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Hopola - neng kapa neng ha o kgona, phomola, iphumane mme o iputse.\n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", - "Remember that YOU matter!": "Hopola hore WENA o motho wa bohlokwa!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "O entse hantle ka ho lemoha boikutlo bo botle. Ke thabela ho utlwa hore o ikutlwa hantle kajeno!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "O entse hantle ka ho lemoha boikutlo bo bohloko. Hase phoso ho se ikutlwe hantle ka dinako tse ding. Hopola hore ha o mong.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "O entse mosebetsi o tswileng matsoho. E nngwe le e nngwe ya ditlwaelo tsena e matlafatsa lelapa la hao. Ikotle sefuba.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Melao e thusa batjha ho utlwisisa hore na ho lebeletswe eng ho bona.\n\nHo na le menyetla e mengata ya hore batjha ba mamele melao haeba melao e etswa LE batjha mme ba babatswa ha ba e latela!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Dumelang bohle.\n\nSehlooho sa kajeno ke melao.\n\nMelao e kgothalletsa kgotso ka lapeng ebile e kgothalletsa ditho tsa lelapa ho utlwisisana.\n\nMelao e kgothalletsa setho ka seng sa lelapa ho jara boikarabelo; kahoo, ho bohlokwa ho ba le melao ya lelapa.\n\nLelapa le nang le melao ya lelapa le phela ka kgotso.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang… \n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso – e sa atlehang… \n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "A re bale se etsahetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 wa hae:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"O dula o fihla leite lapeng!\"\n\n@global.w_rules_teen_boy: \"Nna ha ke fihle leite, ha ke tsebe le hore na leite e bolelang! Ako tlohele ho nkemella.\"", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Ke molao ofe o tobileng oo @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o etsang mmoho?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "A re boneng hore na @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba entse sena jwang letsatsing le hlahlamang:\n\n@global.w_rules_female_caregiver_1: “Ke batla hore o ithabise, @global.w_rules_teen_boy, empa hape ke kgathatsehile hore o fihla lapeng mona leite. Na o tseba lebaka la seo?” \n\n@global.w_rules_teen_boy: “Hobane o batla hore ke be le nako e lekaneng ya mosebetsi wa ka wa sekolo?”", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Ho lokile, ebile ho kotsi, o ka lemala sebakeng sena ha o le kantle kamora hore letsatsi le dikele. O nahana hore o tlameha ho fihla lapeng ka nako mang?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ke nahana hore nka fihla lapeng ka 10 ya bosiu?\" \n\n@global.w_rules_female_caregiver_1: “Ekare ke bosiu haholo, mantsiboya ka 6 ho tla ba jwang? Kapa neng neng ka dinako tseo?\"", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Nka fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo ebe ke fihla ka bosiu ka 10 ka Labohlano le ka Moqebelo?” \n\n@global.w_rules_female_caregiver_1: “E, ho lokile. Ho tloha jwale ho ya pele, molao wa lelapa ke hore o lokela ho fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo le bosiu ka 10 ka Labohlano le ka Moqebelo. Empa kamehla o felehetswe ke motswalle wa hao. Akere?”", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “E, ho lokile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboha haholo, @global.w_rules_teen_boy, hore o re thuse ho etsa molao o motle mmoho. Ke motlotlo ka wena le ho bona kamoo o jarang boikarabelo kateng.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Letsatsing le hlahlamang...\n\n@global.w_rules_female_caregiver_1: “Kea leboha, @global.w_rules_teen_boy, ha o fihlile lapeng ka nako. Ha o qetile mosebetsi wa hao wa sekolo, re ka ja dijo tseo o di ratang tsa mantsiboya.”", - "Making the rule together went well because...": "Ho etsa molao mmoho ho tsamaile hantle hobane...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Ba ile ba buisana ka mabaka a molao oo\n* @global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy\n* Molao o ne o hlakile, o toba taba, ebile o lokile\n* @global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse ha ho etswa molao", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy o ile a tseba hore @global.w_rules_female_caregiver_1 o a mo rata hobane...", - "* She praised him\n* She rewarded him when he followed the rule": "* O ile a mo babatsa\n* O ile a mo putsa hobane a latetse molao", - "Let's think about what happened in this story.": "A re nahaneng ka se etsahetseng paleng ena.", - "What went well here in making a rule together?": "Ke eng e tsamaileng hantle mona ha ho etswa molao mmoho?", - "They discussed the reasons behind the rule": "Ba ile ba buisana ka mabaka a molao", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy", - "The rule was clear, specific and fair": "Molao o ne o hlakile, o toba taba ebile o lokile", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse hore ho etswe molao", - "That's right, making clear rules together in a calm and positive way works so well!": "Ka sebele, ho etsa melao e hlakileng mmoho le ka moya o tlaase le o motle ho a atleha!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "O nahana hore @global.w_rules_teen_boy o tsebile jwang hore @global.w_rules_female_caregiver_1 o a mo rata?", - "She praised him": "O ile a mo babatsa", - "She rewarded him when he followed the rule": "O ile a mo putsa ha a latetse molao", - "Exactly - a positive response makes all the difference!": "Ka sebele ho jwalo - karabo e ntle e tlisa phapang e kgolo!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Melao ya lelapa e thusa ho boloka batjha ba rona ba sireletsehile, le ho utlwisisa se lebeletsweng ho bona. Ha o kenyelletsa motjha wa hao ha o etsa melao, ho na le monyetla o moholo wa hore a e hlomphe.", - "TEAM RULES": "MELAO YA SEHLOPHA", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Rera melao LE motjha wa hao. Qala ka molao o le mong wa pele o motjha - o ka kenyelletsa o mong hamorao. Buisanang ka mabaka a molao oo mme o mamele maikutlo a hae.", - "REAL RULES": "MELAO YA SEBELE", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Etsa hore e tsamaisane le maemo a sebele bakeng sa motjha wa hao, mme e hlake le ho toba taba e le hore ho se utlwisisane ho se be teng. Eseng ‘ka nako’ empa ‘ka 7 mantsiboya’.", - "PRAISE RULES!": "MELAO YA PABATSO!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Babatsa motjha wa hao ka ho rala molao le wena, mme o mo babatse ha a o hlompha!", - "Online Safety": "Boipaballo Inthaneteng", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Melao e bohlokwa ho tiisa hore batjha ba hao ba sireletsehile - le inthaneteng. Taba ena e tshohlwa haholo Wekshopong ya Beke le Beke ha ho rerwa tsa polokeho, empa hona jwale a re shebeng taba ena ka lekgetlo la pele!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, na o entse homeweke ya hao?\"\n\n@global.w_rules_teen_girl: \"Ke kopa motsotsonyana @global.w_rules_female_caregiver_2, ke sa qetela @global.teen_social_medium video ena\"", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: \"O setantshi se hlwahlwa e le kannte! Ako mpolelle hore na ke hobaneng ha o rata ho tantsha?\"\n\n@global.w_rules_teen_girl: \"Metswalle yohle ya ka e rata tantshi, @global.w_rules_female_caregiver_2. Ho na le batho ba 600 ba ratang tantshi ya ka inthaneteng le balatedi ba 120.\"", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka tsela eo o tantshang ka yona, @global.w_rules_teen_girl. Empa re tlameha ho tiisa hore o sireletsehile. \n\nKea tseba hore metswalle ya hao e sheba @global.teen_social_medium, empa ha akhaonte e bonwa ke bohle, ho na le batho ba bang ba shebang divideo tsa batjha ka mabaka a bona a ditaba tsa thobalano. Ka dinako tse ding ba buisana le batjha. Ba iketsa eka ba mosa empa ba qetella ba sokela le ho hlekefetsa batjha.\"", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"A re kene inthaneteng mmoho mme re bone hore na re ka etsang ho tiisa hore ntho ena eo o e thabelang e boetse e bolokehile. Bona – o ka etsa hore akhaonte ya hao e be poraefete le ho laola hore na ke mang ya o salang morao.\n\nKahoo o ka amohela batho bao o ba tsebellang sekolong kapa motseng mona, empa eseng batho bao o kopanang le bona inthaneteng.\n\nNa re ka etsa molao mmoho hore o ka sebedisa @global.teen_social_medium, empa e le akhaonte e poraefete? Kea o tshepa hore o a tseba hore na ke mang eo o ka mo amohelang!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ke ikotla sefuba ka wena @global.w_rules_teen_girl\"", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Ke molao ofe o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao? \n* O nahana hore motjha wa hao o tla ikutlwa jwang ka molao oo? \n\nHopola, etsa melao e tobileng le ya sebele!", - "Here are some of the rules other families created:": "Ena ke e meng ya melao eo malapa a mang a e qadileng:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Motjha a ka bapalla kantle kamora ho qeta homeweke\n* Ditho tsohle tsa lelapa di ja dijo tsa tinare mmoho\n* Motjha wa 1 o hlatswa dijana ka Sontaha le ka Mantaha, Motjha wa 2 ka Labobedi le Laboraro\n* Re buisana ka mosa le hamonate\n* Ha o mametse mmino o tlameha ho sebedisa di-earphone", - "Let's practice making rules.": "A re tlwaeleng ho etsa melao.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Ngola molao o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao – o tla be o etsa sena e le boikwetliso ba lapeng bekeng ena.\n\nO tla nahanang ka wona?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Bekeng ena, beha molao o le mong mmoho le motjha wa hao.\n\nHopola ho babatsa motjha wa hao kamora moo!", - "Great to hear that you are doing well. You are a wonderful parent!": "Ke thabela ho utlwa hore o etsa hantle. O motswadi wa mmakgonthe!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ke maswabi ho utlwa hore kajeno dintho ha di o tsamaele hantle. O entse hantle ka ho leka ho rarolla bothata. Ha ho na motho ya nang le dikarabo tsohle empa kannete o entse sohle seo o ka se kgonang!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ke maswabi ho utlwa hore letsatsi la hao la kajeno ha le monate. O etsa hantle ka ho tsoha hoseng ho hong le ho hong mme o leke hape, leha o ikutlwa o kgathetse. Sena ke sebete sa nnete le boitelo!", - "Step 1: Share what went well and what was hard": "Bohato ba 1: Pheta se tsamaileng hantle le se tsamaileng hampe", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "\"Ke ithutile dintho tse ngata haholo ka bophelo ba motjha wa ka nakong ya boinotshing! Empa kamora letsatsi la pele, motjha wa ka o ne a ipatlela ho bapala ka founo ya hae feela.\"", - "Step 2: Bring ideas!": "Bohato ba 2: Fana ka dikeletso!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "\"O entse hantle ka hore o leke! Mohlomong o ka sisinya hore le etse dintho tse ding tse monate mmoho le motjha wa hao.\"\n\n\"E, kapa na le ka etsa ho hong mmoho ka founo ya hae? Kapa na a ka o bontsha hore na founo ya hae e sebetsa jwang?\"", - "Step 3: Pick and try one!": "Bohato ba 3: Kgetha mme o leke e nngwe!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Kea leboha ka dikeletso tseo tse babatsehang! E, hosane ha sekolo se tswa ke tla kopa motjha wa ka hore a mpontshe hore na founo ya hae e sebetsa jwang. Na ho na le ya ka ithaopelang ho ba motjha wa ka hona jwale, e le hore ke prakthise ho mo kopa?”", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Nahana hore na mesebetsi ya hao ya lapeng e tsamaile jwang bekeng ena. \n\nTjhentjhanang ha le tshohla taba:\n\n* Ke eng e tsamaileng hantle hona bothata bo bile hokae?\n* Ha le kopanya dihlooho, le nahana hore tharollo ekaba efe?\n* Kgethang tharollo e le nngwe mme le e leke hamorao le motjha wa lona! \n\n(Kapa le ka e prakthisa hona jwale e le hore ho be bonolo hamorao!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ho babatsa ke tsebo e matla haholo ya botswadi.\n\nHa re babatsa batjha ba rona ha ba etsa ntho e ntle, re tla ba bona ba ipabola le ho feta ka makgabane a mangata!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Dumelang bohle.\n\nSehlooho sa rona sa kajeno ke pabatso.\n\nHo molemo ho babatsa bana ba rona ha ba etsa dintho tse ntle hobane ha re etsa jwalo, ba tla itshwara hantle le ho feta ka tsela eo re batlang ho ba bona ka yona.\n\nLe rona re se ke ra lebala ho ipabatsa ha re entse dintho tse ntle!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Ditholwana tsa pabatso\n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Ditholwana tsa pabatso\n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Phetelanang ditaba:\n\n* Motho e mong o qetetse neng ho o leboha kapa ho o bolella ntho e monate? \n* Seo se ile sa etsa hore o ikutlwe jwang? \n* O ikutlwa jwang ha ho se na motho ya o lebohang kapa ya o babatsang ha o entse ntho e itseng? \n\nHangata ha re lebohuwe kapa ho babatswa ka ho lekaneng jwaloka batswadi. Mohlomong ke nako ya ho behela motjha wa hao mohlala o motle mme o qale ka ho mo babatsa ha a entse ntho e itseng hantle!", - "Think about the last time someone thanked you, or said you did something great.": "Nahana ka lekgetlo la ho qetela ha motho e mong a ne a o leboha, kapa a bolela hore o entse ntho e itseng hantle.", - "How did it make you feel?": "Seo se ile sa etsa hore o ikutlwe jwang?", - "Parents usually don’t get thanked or praised enough.": "Hangata batswadi ha ba lebohuwe kapa ho babatswa ka ho lekaneng.", - "How does it make you feel when nobody says \"thank you\"?": "O ikutlwa jwang ha motho e mong a re ho wena \"kea leboha\"?", - "Tired": "O kgathetse", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Le motjha wa hao a ka ikutlwa ka tsela eo. Ke sona se etsang hore thulusi ya beke ena ya botswadi e be e bonolo empa e le bohlokwa: Mo babatse ha a entse dintho hantle.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Pabatso ke moriana o matla haholo. \n\nA re shebeng mohlala wa @global.w_praise_female_caregiver_name le baradi ba hae:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Ha @global.w_praise_female_caregiver_name a phathahane, hangata baradi ba hae ba babedi baa lwana. Empa kajeno, moradi wa hae e moholwanyane o thusitse moena wa hae ka mosebetsi wa hae wa sekolo!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Kea leboha hore ebe o entse mosebetsi wa hao wa sekolo, @global.w_praise_girl, ebile kea leboha hore ebe o thusitse ngwaneno, @global.w_praise_teen_girl. Ke ikotla sefuba ka lona!\"", - "Let's discuss this story.": "A re buisaneng ka pale ena.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Buisanang:\n\n* Pabatso e entse hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?\n* Ke hobaneng ha a ile a ba babatsa?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name o ile a babatsa batjha ba hae...", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ho etsa hore ba etse seo hangata\n* Ho mo thusa hore a qete mosebetsi wa hae\n* Hore ba ikutlwe ba thabile\n* Hore a ikutlwe a thabile", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Pabatso e ile ya etsa hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?", - "Why did she praise them?": "Ke hobaneng ha a ile a ba babatsa?", - "To get them to do it more often": "Hore ba etse seo hangata haholo", - "To help her finish her work": "Ho mo thusa hore a qete mosebetsi wa hae", - "To make them feel good": "Hore ba ikutlwe ba thabile", - "To make herself feel good": "Hore a ikutlwe a thabile", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Dintho tseo kaofela ke nnete! \n\nHa batjha ba hae ba thabile, @global.w_praise_female_caregiver_name o ikutlwa a thabile. O phethile mosebetsi wa hae.", - "The same can work for you!": "Le wena seo se ka o sebeletsa!", - "SEE IT": "E BONE", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Sheba eng kapa eng eo motjha wa hao a e etsang e thusang kapa e molemo, mme o mo babatse ka seo. Ba ka nna ba se bontshe thabo, empa o tla ba bona ha ba etsa ntho eo e molemo hape. Hape ba tla lemoha hore o a hlokomela ebile o a tsotella.", - "SAY IT": "E BOLELE", - "Be enthusiastic – really mean it when you say it!": "Tjheseha – bua se hlileng se tswang botebong ba pelo ya hao!", - "REPEAT IT": "E PHETE", - "Try to find something to thank them for every day. Even something really small.": "Leka ho fumana ntho e itseng eo o ka mo lebohang ka yona letsatsi le letsatsi. Esita le haeba e le nyane haholo.", - "You can also praise other adults in your household, too. Notice how they respond!": "Hape o ka babatsa batho ba bang ba baholo lapeng. Lemoha hore na ba arabela jwang!", - "Let's practice giving praise.": "A re itlwaetseng ho babatsa batho ba bang.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Phetelanang ditaba: \n\n* O ka babatsa motjha wa hao ka lebaka la eng? \n* Motho e mong o entse eng e ntle nakong ya wekshopo ye? Mo bolelle!\n* O ile wa ikutlwa jwang ha o babatsa motho e mong?\n* O ile wa ikutlwa jwang ha o babatswa?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ka dinako tse ding ho thata ho nahana ka ntho eo o ka babatsang motjha wa hao ka lebaka la yona! Dikeletso tse tswang ho batswadi ba bang ke tsena:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ha a tshwere motho e mong ka mosa\n* Ho hlwekisa kamore ya hae\n* Ha a bile teng dijong tsa lelapa\n* Ha a dumedisitse ditho tse ding tsa lelapa\n* Ha a hlokometse banababo\n* Ha a fihlile ka nako lapeng\n* Ha a bontshitse hore o nahanela batho ba bang \n* Ka ho re 'ke kopa' kapa 'kea leboha' \n* Ha a ile sekolong\n* Ha a phetha mesebetsi ya lapeng kapa ya sekolo\n* Ho dula ka kgotso nakong ya dijo", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Boikwetliso ba lapeng ba bekeng ena ke ho babatsa motjha wa hao hang ka letsatsi. Ho tla nka metsotswana e 10 feela!", - "Caring for yourself is so essential.": "Ho itlhokomela ke habohlokwa haholo.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Ke ditaba tse molemo, ke thabile haholo hore ebe dintho di tsamaya hantle. Pele ya pele ka mosebetsi o motle.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Nka motsotswana mme o thabele mosebetsi oo o o finyelletseng, ho sa tsotellehe dintho tsohle tse ding tseo o lokelang ho di etsa letsatsi ka leng.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Malapa a mangata a imetswe ke ditaba tsa ditjhelete, haholoholo haeba batjha ba dula ba kopa ntho-di-hana ho fela!\n\nHa re etsa bajete hammoho, re ka dumellana hore na re lokela ho sebedisa tjhelete e kae LE HO baballa ho qoba kgatello ya maikutlo le ho sebeletsa ho fihlella maikemisetso a lelapa la rona.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Dumelang bohle. \n\nSehlooho sa kajeno ke ho etsa bajete ya lelapa. \n\nKe habohlokwa ho etsa bajete, empa ke habohlokwa le ho feta ho etsa bajete e akarelletsang lelapa lohle. \n\nHo etsa jwalo mmoho ho thusa bohle ho utlwisisa hore na lelapa le sebedisa tjhelete jwang le hore na lelapa le boloka tjhelete e kae, ebile le ka etsa ditokisetso tsa hore na le ka baballa tjhelete jwang le le lelapa.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Pale – e sa kang ya sebetsa… \n* Boikwetliso ba ho etsa bajete\n* Pale le puisano – tse ileng tsa sebetsa!\n* Pale le puisano – tse sa kang tsa sebetsa…\n* Puisano ya ditsela tsa ho baballa tjhelete\n* Boikwetliso ba ho baballa tjhelete\n* Dithulusi: Tsela ya ho bajeta le ho baballa tjhelete\nNAHANA - KGETHA - HAHA - RERA\n* Ditshisinyo tsa boikwetliso ba lapeng", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Ho thata ho ba le tjhelete e lekaneng ho phetha mabaka kgwedi le kgwedi. Malapa a mangata a na le bothata bona! \n\nHo kopanyelletsa le @global.w_money_grandma - a re shebelleng:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Haesale ke hlokomela ditloholo tsa ka, @global.w_money_teen_girl le @global.w_money_teen_boy, hobane batswadi ba bona ba hlokahetse ba sa le banyane. Hangata re hula ka thata ditjheleteng, hobane ke amohela kerante e nyane.\"", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Ke kgathatsehile haholo. Ho hang ha ke salle le ke sente e ntsho! Jwale ke lwana le batjha ba ka ka dintho tseo ba di batlang – hape.\"", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Ho na le mehato e mene ya ho etsa bajete ya lelapa: \n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho. O hloka:\n\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", - "A family budget can help @global.w_money_grandma - and YOU!": "Bajete ya lelapa e ka thusa @global.w_money_grandma - le WENA!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Ho na le mehato e mene ya ho etsa bajete ya lelapa:\n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "O hloka:\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", - "Think about what we spend money on each month.": "Nahana hore na re sebedisa tjhelete ya rona ho etsang kgwedi le kgwedi.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Fumana pampiri (kapa koranta ya kgale kapa lebokose) le pene. \n* Toroya ditshwantsho tsa dintho tseo wena le lelapa la hao le sebedisang tjhelete ho tsona kgwedi le kgwedi. \n* Ngola haufi le setshwantsho ka seng hore na ntho ka nngwe e ja bokae kgwedi le kgwedi. (Ha ho hlokahale hore le bontshane dipalo haeba le sa batle.)\n* Kopanya tjhelete eo o e sebedisitseng kgwedi ka nngwe.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Ke botle! O qetile mohato wa 1!\n\nA re fetele pele!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* dijo\n* metsi le motlakase\n* diaparo\n* diakhaonte\n* mananeo a TV a patallwang\n* dintho tsa ho hlapa\n* salune\n* airtime \n* sekolofisi\n* dipalangwang\n* inshorense/maano\n* meriana\n* boithabiso/dipapadi\n* rente\n* dikoloto\n* kereke", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "A re bue ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Hangata ha re bone dintho ka leihlo le le leng. Ha re buisana ka dintho tseo re di hlokang le tseo re di batlang, re utlwisisana hantle ebile re ka etsa diqeto tse ntle mmoho tsa kamoo re sebedisang tjhelete ya rona kateng.\n\nShebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Nahana ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Shebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", - "Make a budget!": "Etsang bajete!", - "Make a budget as one big family!": "Etsang bajete le le lelapa le le leng le leholo!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Motho a le mong o tla ithaopela ho bolela letoto la hae (Haeba ho se na moithaopi le ka etsa letoto le letjha mmoho) \n* Nkang maemo a itseng - ba bang e tla ba batho ba baholo, ba bang e tla ba batjha. \n* Etsang qeto ya hore na tjhelete e kenang ke bokae ka kgwedi.\n* Nkang majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata - eo ke tjhelete e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete e kenang ke @global.currency@local.monthly_income, mme o na le dinawa tse @local.number_of_beans, nawa ka nngwe e lekana le @global.currency@local.bean_value.) \n* Etsang qeto mmoho ya hore na le tla e sebedisetsang, mme le behe majwe/dintho setshwantshong se. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", - "Make a budget as a family!": "Etsang bajete le le lelapa!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Ngola hore na tjhelete ya hao e kenang ke bokae ka kgwedi.\n* Nka majwe kapa dinawa tse ding kapa eng kapa eng e nang le dikgetjhana tse ngata - ena ke tjhelete ya lona e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete ya lona e kenang ke @global.currency@local.monthly_income, mme le na le dinawa tse @local.number_of_beans, nawa ka nngwe ke @global.currency@local.bean_value.)\n* Etsang qeto ya hore na le tla etsang ka yona, mme le behe majwe/dintho hodima setshwantsho seo. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Le entse mosebetsi o moholo, le phethile mehato ya pele e 3! \n\nA re shebeng kamoo @global.w_money_grandma a hlophisitseng ditjhelete tsa hae kateng, jwalokaha le etsa:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ke batlela ditloholo tsa ka bokamoso bo molemo haholo, empa ha ke tsebe hore na ke tla fumana tjhalete hokae. Bomatjhonisa ba kotsi ebile o ba busetsa tjhelete e ngata haholo. \n\nKe lokela ho baballa tjhelete, empa ekare eo ke ntho e sa kgoneheng!\"", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Sepheo sa ka ke ho tiisa hore setloholo sa ka sa moshanyana se kgona ho ya sekolong se phahameng mme setloholo sa ka sa ngwanana se fihlella takatso ya sona ya yunivesithi. Nka baballa tjhelete e ngata jwang ka tjhelete e nyane eo ke nang le yona?\"", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Kea tseba - a re qaleng ka moralo! E re ke qale ka ho etsa bajete – moralo wa kamoo nka baballang tjhelete ya ka kateng. Mme ke tla baballa tjhelete e nyane nako le nako – ebile ke tla kenela sehlopha sa ho baballa tjhelete le mekitlane.\"", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Hape ke tlameha ho bua le ditloholo tsa ka ho kgetha dintho tseo re ka sebedisang tjhelete e nyane ho tsona beke le beke. Ba tla nthusa ho nahana ka dintho tseo re di batlang empa re sa di hloke.\"", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Dilemo tse seng kae hamorao:\n\n\"Ako boneng, re fihlelletse ditabatabelo tsa rona! Ha kea kadima tjhelete ya metswalle kapa ya bomatjhonisa. Ka ho baballa tjhelete e nyane beke le beke, ke ile ka kgona ho patala sekolofisi sa @global.w_money_teen_boy sekolong se phahameng mme ka baballa tjhelete e nngwe bakeng sa yunivesithi ya @global.w_money_teen_girl. Ke ikutlwa ke le motlotlo haholo ka taba ena.”", - "What are your family savings goals?": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Le ikemiseditse ho baballa tjhelete e ngata hakaalo!\n\nLe ikemiseditse ho baballa tjhelete e ngata hakaalo! Ha re etsa bajete e ntle ebile re mmoho re lokisetsa ho baballa tjhelete, re ka atleha mme ra ikutlwa re le motlotlo ka seo re se finyelletseng!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Kaofela re na le ditabatabelo tsa malapa a rona, jwaloka @global.w_money_grandma. Ka ho behella ka thoko tjhelete enyane kgwedi le kgwedi, le wena o ka fihlella ditabatabelo tsa hao!", - "What are your family savings goals?": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Ke boikemisetso bo bokaakang!\n\nHa le etsa bajete e ntle ebile le lokisetsa ho baballa tjhelete, le ka atleha mme la ikutlwa le le motlotlo ka bolona!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ho baballa tjhelete ho bohlokwa ka mabaka a mmalwa, le leng ke: maemo a tshohanyetso! @global.w_money_grandma le yena o ile a ithuta ntlha ena bophelong:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Bosiung bo bong ho ile ha tsoha sefefo se tshabehang se ileng sa fefola marulelo. Ntho e nngwe le e nngwe e ile ya nelwa ke pula. Ka ho panya ha leihlo ke ne ke hloka ho fumana tjhelete ya ho lokisa marulelo. Ke ile ka ikutlwa ke feletswe ke matla.”", - "Let's talk about this story.": "A re buisane ka pale ena.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Boemong ba @global.w_money_grandma, ho bile le sefefo. \n\nRona re ka hlahelwa ke maemo afe a tshohanyetso?", - "Let's think about this story.": "A re nahane ka pale ena.", - "For @global.w_money_grandma, a storm happened.": "Boemong ba @global.w_money_grandma, ho bile le sefefo.", - "What other emergencies could come up for your family?": "Lelapa la hao le ka hlahelwa ke maemo afe a mang a tshohanyetso?", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Maemo a tshohanyetso a ka hlahela lelapa lefe kapa lefe. Ho baballa tjheletenyana bakeng sa maemo a tshohanyetso PELE a etsahala ho thibela ho kgathatseha le seterese se sengata ka tshohanyetso!", - "Let's talk about different ways we can save.": "A re bueng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Buisanang: \n* Re ka baballa tjhelete ka ditsela dife tse sa tshwaneng? \n* Tsela ka nngwe ya ho baballa tjhelete e na le melemo le mathata afe? \n\nHo utlwisisa tsela ka nngwe hantle ho tla o thusa ho etsa qeto ya tsela e molemo haholo ya ho baballa tjhelete bakeng sa lelapa la hao. \n\nHo sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", - "Let's think about different ways we can save.": "A re nahaneng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Ho na le ditsela tse sa tshwaneng tseo re ka baballang tjhelete ka yona: lapeng, ha re reka dintho tseo re ka di rekisang hamorao, bankeng, kapa sehlopheng sa ho baballa tjhelete.\n\nNahana ka melemo le mathata a tsela ka nngwe ya ho baballa tjhelete.", - "What is the best savings option for your family?": "Tsela e molemo ka ho fetisisa ya ho baballa tjhelete bakeng sa lelapa la hao ke efe?", - "Whatever savings plan you choose, it will really help your family move forward!": "Ho sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Rerang hore na le tla baballa tjhelete jwang, e le hore le ka sebetsana le maemo a tshohanyetso mme la fihlella ditabatabelo tsa lelapa la lona!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Haeba o ka baballa esita le tjhelete e nyane bakeng sa kamoso kapa maemo a tshohanyetso - seo se ka etsa phapang e kgolo ha nako e ntse e feta. \n* Kenya sedikadikwe se bitswang “maemo a tshohanyetso”.\n* Kenya sedikadiswe se bitswang “ditabatabelo tsa lelapa”.\n* Ebe o leka ho tsamaisa tjhelete ya hao e le hore le ka baballa tjheletenyana e itseng kgwedi le kgwedi bakeng sa e nngwe le e nngwe ya dintho tsena.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong o tshwanelwa ke pabatso, le bona jwang?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong lelapeng la hao o tshwanelwa ke pabatso, le bona jwang?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "REA LE LEBOHELA!!! Le entse bajete ya lona – hopolang ho etsa boikwetliso bona hape le ditho tse ding tsa malapa a lona - ha le dumellana ka seo le rerang ho se etsa mmoho, seo se tla etsa phapang e kgolo!", - "Step 1: THINK": "Mohato wa 1: NAHANA", - "What do we spend on now?": "Hona jwale re sebedisa tjhelete ha re reka eng?", - "THINK Activity": "Ketso ya ho NAHANA", - "Step 2: CHOOSE": "Mohato wa 2: KGETHA", - "Talk together about needs and wants": "Buisanang ka ditlhoko le dintho tseo le di batlang mmoho", - "CHOOSE Activity": "Ketso ya ho KGETHA", - "Step 3: BUILD": "Mohato wa 3: HAHA", - "Make your own budget": "Iketsetseng bajete", - "BUILD Activity": "Ketso ya ho HAHA", - "Step 4: PLAN": "Mohato wa 4: RERA", - "Emergencies and family goals": "Maemo a tshohanyetso le ditabatabelo tsa lelapa", - "PLAN Activity": "Ketso ya ho RERA", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Etsa bajete hape - lekgetlong lena O NA LE motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Etsa bajete le motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hlahloba bajete ya hao le motjha le lelapa la hao! Sena se tla hopotsa bohle hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", - "Steps to make a budget": "Mehato ya ho etsa bajete", - "Wonderful, I am so happy! Keep up the good work.": "Ke ditaba tse monate, ke thabile haholo! Tswela pele ka mosebetsi o motle.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Re maswabi hore ebe ho thata. Malapa wohle a hula ka thata. Re tla wa re tsoha le wena!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Ho sa tsotellehe hore na kajeno ke eng e tswileng 'taolong', lebala ka yona mme o leke hape hosane. Ho lokile!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Ameha ka dintho tse kgothatsang!\n\nHo bolella batjha ba rona seo re batlang hore ba se ETSE ho sebetsa habetere ho feta ho ba bolella seo ba tlamehang ho KGAOTSA ho se etsa.", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Dumelang, dumelang bohle.\n\nSehlooho sa rona sa kajeno ke ditaelo tsa se lokelang ho etswa.\n\nHo bohlokwa ho fa bana ba rona ditaelo tsa se lokelang ho etswa, hobane ha re ba fa ditaelo tsa seo ba lokelang ho se etsa, ba tla tseba le ho utlwisisa se ho lebeletsweng hore ba se etse, ebe ba etsa seo kamoo re batlang hore ba se etse kateng.\n\nKahoo, bohle ba tla dula ba thabile.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Teko ya kelello\n* Pale le puisano – seo ha sea atleha…\n* Pale le puisano – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Teko ya kelello\n* Pale le boikgopotso – seo ha sea atleha…\n* Pale le boikgopotso – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* Ditshisinyo tsa ho prakthisa lapeng", - "Let’s do a thought experiment!": "A re etse teko ya kelello!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "O SE KE WA NAHANA KA TLOU\n\nO nahana ka eng?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Mohlomong o ile wa HLA wa nahana ka tlou...\n\nDitaelo tse reng 'o se ke wa' di etsa hore batjha ba nahane ka yona ntho eo.\n\nKa dinako tse ding ha utlwisise seo re HLILENG re se batlang ho bona.\n\nMme hangata ha ba rate ho bolellwa hore na ba se ke ba etsa dintho (na kaofela ha re jwalo?)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "JWALE, NAHANA KA LENGAU\n\nO nahana ka eng?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "O nepile! Ditaelo tse hlakileng, tsa se lokelang ho etswa di thusa batjha ho ameha ka seo ba lokelang ho se etsa.\n\nBatjha ba boetse ba ikutlwa ba hlomphuwe ka tsela ena, mme ho na le kgoneho e kgolo ya hore ba re mamele.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "A re bone se etsahalang ha @global.w_instruct_female_caregiver a bolella @global.w_instruct_teen_girl \"O SE KE WA\":", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha \n@global.w_instruct_teen_girl a ntse a prakthisa tantshi le motswalle wa hae.\n\n@global.w_instruct_female_caregiver: “O se ke wa etsa bohlaswa ha ke ntse ke hlwekisa ntlo. O a ntshitisa!”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Empa ke tlameha ho prakthisa bakeng sa tlhodisano ya sekolong. Ha o ntumelle hore ke etse letho.”\n\n@global.w_instruct_female_caregiver: “O se ke wa nkarabisa!”", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Akga!! O ye be o qadile o nkomanya jwaloka mehleng????”\n\n@global.w_instruct_female_caregiver o ipolella hore: “Ngwana enwa o dula a le lenyokonyane.”", - "Let's discuss what happened in this story.": "A re buisaneng ka se etsahetseng paleng ena.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Buisanang:\n\n* O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng kateng? \n* Ebe @global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver a ka be a...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Buile ntho e ntle qalong\n* A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng\n* A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng ka yona?", - "Sad": "A kwatile", - "Confused": "A ferekane", - "Angry": "A halefile", - "What could @global.w_instruct_female_caregiver have done differently?": "@global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", - "Said something nice first": "A ka be a buile hantle pele", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng", - "Told @global.w_instruct_teen_girl what she wants her to do": "A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Rea leboha ka hore o nahane ka taba eo! \n\nA re kgutlele morao mme re bone hore na ho etsahalang ha @global.w_instruct_female_caregiver a fana ka ditaelo tsa se lokelang ho etswa:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha @global.w_instruct_teen_girl a na le metswalle ya hae a prakthisa ho tantsha. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ke thabela ho o bona o prakthisa tantshi le metswalle ya hao. Ke kopa hore le prakthisetse kantle, hore ke qetele ho hlwekisa ntlo. Kamora moo le ka mpontsha hore na le tantsha jwang.\"\n\n@global.w_instruct_teen_girl: “Ho lokile, @global.w_instruct_female_caregiver!”", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Kea leboha hore ebe le ile la prakthisetsa kantle ha ke ntse ke qetela ho hlwekisa, @global.w_instruct_teen_girl. Jwale ke na le nako ya ho le shebella ha le tantsha.\"", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Kgele, @global.w_instruct_teen_girl! Le tantsha hantle hakaakang!\"", - "Let's discuss what happened this time.": "A re buisaneng ka se etsahetseng lekgetlong lena.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Buisanang:\n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jwang hona jwale?\n* Ke hobaneng ha o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", - "It worked better this time because...": "Dintho di tsamaile betere hobane...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl o ile a utlwa a hlomphuwe ebile a ratwa ke @global.w_instruct_female_caregiver wa hae\n* @global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya\n* @global.w_instruct_female_caregiver o ile a bua ka tsela e mosa", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ne ba se ba ikutlwa jwang?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Na o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl o ne a ikutlwa a hlomphuwa ebile a ratwa ke @global.w_instruct_female_caregiver wa hae", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver o ile a dula a le mosa", - "Positive instructions can work with your teen too!": "Ditaelo tsa se lokelang ho etswa di ka sebetsa le ho motjha wa hao!", - "GET REAL": "AMOHELA BOEMO KAMOO BO LENG KATENG", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Na ehlile motjha wa hao a ka etsa seo o batlang ho mo kopa sona? Mohlomong ke ntho e sa kgoneheng bakeng sa hae ho bala a kgutsitse letsatsi lohle, empa halofo ya hora ke ntho e utlwahalang.", - "GET POSITIVE": "EBA YA KGOTHATSANG", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Bososela, mo shebe ka mahlong, mme o sebedise mantswe a kgothatsang. Mo babatse kapele kamora hore a qale ntho eo o mo kopang yona!", - "GET CLEAR": "BUA KA TSELA E HLAKILENG", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Hangata rea tseba hore na re batlang, empa ha re se bue ka tsela e hlakileng ka ho lekaneng. Bolella motjha wa hao hantle seo o batlang hore a se etse. Leka mantswe a kang ‘ke kopa o fihle lapeng ka 7 mantsiboya’ ho fapana le hore ‘o fihle lapeng ka nako’.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "A re prakthise ho fana ka ditaelo tse UTLWAHALANG, tse KGOTHATSANG le tse HLAKILENG. Ho prakthisa ho tla o thusa ho atleha ha o sebedisana le motjha wa hao!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Kgetha batho ba babedi sehlopheng sa hao:\n* Motho e mong o etsa eka ke motjha\n* E mong o etsa eka ke motswadi wa motjha\n* “Motswadi”: Fa “motjha” wa hao taelo ya se lokelang ho etswa e nang le kgothatso le pabatso\n* “Motjha”: Arabela kamoo o nahanang hore motjha a ka arabela kateng\n\nBuisanang ka hore na ho tsamaile jwang:\n* Sena se entse hore o ikutlwe jwang jwaloka “motswadi” le jwaloka “motjha”?\n* Na o ne o ka etsa dintho ka tsela e betere?\n\nO fe bohle monyetla wa ho ba “motswadi” le “motjha” haeba o ka kgona. Boikwetliso bo tswala katleho!", - "Examples of positive instructions:": "Mehlala ya ditaelo tsa se lokelang ho etswa:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ke rata mmino wa hao. Ke kopa o o fokotse nakong ya dijo tsa tinare e le hore re kgone ho bua? Kea leboha – Kannete ke lebohela seo. \n* Mmino ona o monate jwang. Ke mang ya binang? Ke kopa o o time ha o kena katlung. O ka o letsetsa fatshe ha o kena ka kamoreng ya hao haeba o batla. Kea leboha!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Boikwetliso ba lapeng bekeng ena ke ho fa motjha wa hao ditaelo tsa seo a lokelang ho se etsa.\n\nHopola - EBE TSE UTLWAHALANG, EBE TSE KGOTHATSANG, EBE TSE HLAKILENG = BOLELA HANTLE SEO O SE BATLANG (o itlhakise kahohle kamoo ho ka kgonehang ho motjha!)", - "We care about you, and how life is treating you.": "Rea o tsotella, le kamoo bophelo bo leng kateng ho wena.", - "You are a star. And you are making a real difference. Be proud of yourself.": "O kgalala. O etsa phapang e kgolo. Ikotle sefuba ka wena.", - "Sorry that things are not easy today. All parents have these days.": "Re maswabi ho utlwa hore dintho ha di bonolo kajeno. Batswadi bohle ba tobana le matsatsi a jwalo.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Kwala mahlo, o kge moya, mme o tsebe hore sohle seo o se entseng se bohlokwa haholo.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Lelapa le leng le le leng le tobana le diphephetso, empa ha re sebedisana, re ka sebetsana le mathata ka tsela e atlehang le e nang le kgotso.\n\nKe tsebo ya bohlokwa hore motjha wa hao le yena a ithute yona!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho rarolla bothata.\n\nKaofela rea tseba hore ho na le dinako tseo re tobanang le mathata, mme kaofela rea tseba hore ha re iphumana re le maemong ana, ho thata ho nahana ka tharollo e nepahetseng hanghang.\n\nKahoo, ho bohlokwa hore ha re tobane le mathata re nke kgefu, re heme, re dule re kgobile matshwafo mme re nahane ka tsebo eo re nang le yona ya ho rarolla mathata eo re ka e sebedisang.\n\nA re hopoleng ho kenyelletsa batjha ba rona ha re rarolla mathata. Sena se tla ba thusa ho ba batho ba nang le boikarabelo le ho ithuta ho rarolla mathata a bona nakong e tlang.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "A re shebe se hlahetseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ha @global.w_solve_teen_girl a letsetswa ke moshanyana… founo!", - "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o e nkile kae ntho ye?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o ntheketse yona. Ke founo e ntle hakaakang, @global.w_solve_female_caregiver_1. E nka difoto tse ntle haholo!\"", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ha ke batle ho bona ntho eo e turang! Moshemane eo ke sekeleme! O nahana hore o tlo mo patala ka eng ha a o reketse ntho ye?!” \n\n@global.w_solve_teen_girl: “Ha ho etsuwe jwalo, @global.w_solve_female_caregiver_1! Ntho eo o e etsang ha ke e rate!”", - "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ha ke batle ho utlwa o tjho jwalo!” \n\n@global.w_solve_teen_girl: “Ha o leke le ho mmamela! Ha ke tsebe le hore na ke ne ke itshwenyetsang ho bua le wena!”", - "Take a few deep breaths to calm down, and": "Kga moya o mongata ka makgetlo a mmalwa hore o theole moya, ebe", - "KNOW IT": "E TSEBE", - "Identify the problem.": "O hlwaya bothata.", - "SOLVE IT": "E RAROLLE", - "Think of possible solutions and what would happen if we used them.": "Nahana ka ditharollo tse ka kgonehang le se ka etsahalang haeba re di sebedisa.", - "TRY IT": "E LEKE", - "Choose a solution and try it out.": "Kgetha tharollo mme o e leke.", - "TEST IT": "E TUTSE", - "Did it work? Great! If it did not work, then try another solution.": "Na e sebeditse? Ke hantle! Haeba e sa sebetsa, leka tharollo e nngwe.", - "Let’s see how problem solving works in practice.": "A re boneng kamoo tharollo e sebetsang kateng boemong ba sebele.", - "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 o tla lapeng a tswa mosebetsing. \n\n@global.w_solve_female_caregiver_2 (o a nahana): \"Iyo maoto a ka a bohloko! Ke tlameha ho dula fatshe hanyane mme ke nwe kofi pele ke qala ho pheha dijo tsa lelapa.\"", - "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O etsang? Ke bohobe ba mantsiboya boo! Jwale bo ke ke ba re lekana kaofela!\"", - "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Ntsharele, @global.w_solve_female_caregiver_2, ke utlwa ke lapile. E re ke o jwetse, ho na le moshemane enwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a nahana): “Kgefuta hanyane… kga moya…”", - "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ako eme hanyane feela hle. Ke kgathetse ebile jwale ke kgathatsehile ka hore na re tla ba le dijo tse lekaneng mantsiboya.” \n\n@global.w_solve_teen_boy_2: “Askisi hle, @global.w_solve_female_caregiver_2\"", - "Step 1: KNOW IT": "Bohato ba 1: BO TSEBE", - "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: \"Jwale ako mpolelle, hobaneng ha o lapile? Na ha o a ja sekhafothine sa hao ka lantjhe sekolong?” \n\n@global.w_solve_teen_boy_2: \"Bothata bo qala hona moo. Ho na le moshemane e mong sekolong ya ratang ho iketsa mpodi. Mehlaena o re haeba ke sa mo fe lantjhe ya ka, yena le metswalle ya hae ba tla ntematsa. O nkwatisa haholo!\"", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo empa ke thabile ha e le mona o mpolelletse, @global.w_solve_teen_boy_2. Empa seo ha se bolele hore o tla ja dijo tsa mantsiboya tsa rona kaofela. Kamora hore re bue, o tla lokela ho ya shopong ho ya reka bohobe bo bong. Empa a re qale mona: O nahana hore re lokela ho etsang ka bothata ba bompodi?\"\n\n@global.w_solve_teen_boy_2: \"Emmm… Ke batla ho mo otla kapa ke mo kgalemele.\"", - "Step 2: SOLVE IT": "Bohato ba 2: BO RAROLLE", - "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… o nahana hore ho tla etsahalang ha o etsa jwalo?\"\n\n@global.w_solve_teen_boy_2: \"Ha ke tsebe. O moholo ho nna, mohlomong o tla ntlhola. Ebile nka kena mathateng sekolong yaba kea tebelwa.\"", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: \"E, seo se ka etsahala. Empa ho fapana le moo re ka etsang?\"\n\n@global.w_solve_teen_boy_2: \"Ke nahana hore nka bolella titjhere. Empa jwale bana ba bang ba tla mpitsa selallane. Mohlomong wena o ka bua le titjhere?\"", - "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Ekare ke leano le letle leo. Mohlomong nka bua le batswadi ba hae haeba o batle ke bue le bona.\"\n\n@global.w_solve_teen_boy_2: \"E. Haeba o bona eka seo se ka thusa. Kea leboha, @global.w_solve_female_caregiver_2\"", - "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Haeba ho na le ntho e nngwe eo o e batlang, moshanyanaka. Ke tla o etsetsa yona hang ha re qeta ho ja dijo tsa mantsiboya. Ene wa tseba keng? Haeba e sa sebetse, re tla leka e nngwe re le babedi.\"\n\n@global.w_solve_teen_boy_2: \"Kea leboha, @global.w_solve_female_caregiver_2\"", - "Step 3: TRY IT": "Bohato ba 3: E LEKE", - "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Beke hamorao… \n\n@global.w_solve_female_caregiver_2: \"Ho tsamaya jwang sekolong hona jwale?\"\n\n@global.w_solve_teen_boy_2: \"Ho betere, moshemane eo ha a sa nkukela lantjhe ya ka. Empa o ntse a sa mpatle.\"", - "Step 4: TEST IT": "Mohato wa 4: E TUTSE", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo, @global.w_solve_teen_boy_2. Na ke kope malome wa hao ho buisana le batswadi ba hae? Haeba seo se sa sebetse, re tla leka tsela e nngwe!\"\n\n@global.w_solve_teen_boy_2: \"E, kea leboha @global.w_solve_female_caregiver_2. Bonyane kea tseba hore o a nthusa.\"", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Buisanang: \n\nKe jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Hopola @global.w_solve_teen_girl le founo eo a e fuweng ke moshemane yane?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ke jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "A re kgutlele ho @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 mme re bone hore na ke ditharollo dife tseo ba tlang ka tsona.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa hae ba tlile ka ditharollo tse tharo.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ho thata haholo ho ba motswadi wa motjha. \n\nHangata ha ho na ditharollo tse bonolo le tse seng thata, empa jwale @global.w_solve_female_caregiver_1 o ithutile hore a ka buisana le moradi wa hae ka dintho tsena. \n\nPele, o ne a kgathatseha a le mong, jwale ba ka tla ka ditharollo mmoho!", - "Ground @global.w_solve_teen_girl for a month": "Ropa @global.w_solve_teen_girl kgwedi e le nngwe", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “O ke ke wa intsha kgweding e latelang”", - "That didn’t work... Let's try something else.": "Seo ha sea sebetsa... A re lekeng ho hong.", - "Return the phone and save up": "Kgutlisa founo mme o ipehele tjhelete", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: \"Ha ke leke ho qosa motswalle wa hao ebile ha ke mona. Ke mpa ke tshwenyehile hore ha motho a o fa mpho, ho ba thata ho re 'tjhe' ha a o kopa ntho e nngwe le wena – jwaloka thobalano. Haeba o batla founo, re tla baballa tjhelete mmoho e le hore o iketsetse diqeto tsa hao o sa kolote motho eng kapa eng.\"", - "This is great! Try the third option as well.": "Ena e ntle! Leka le tsela ya boraro.", - "Learn about safe sex": "Ithute ka thobalano e bolokehileng", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Sena se nthusa hore ke bone hore re tlameha ho bua ka bahlankana le ho itshireletsa. Batjha ba bangata ba dilemong tsa hao eba baimana kapa ba tshwarwa ke HIV. A re ye tliliniking hore o buisane le mooki hore o ithute hore na o ka dula o itshireleditse jwang.”", - "This is great!": "Ena e ntle!", - "Let's practice problem-solving!": "A re itlwaetse tsela ya ho rarolla mathata!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ikwetlisetseng mathata ao le nang le wona hona jwale mmoho. E mong wa lona ebe motswadi mme e mong e be motjha.\n\nBabatsanang le ho kgothatsana - re motlotlo ka lona!\n\nHopola mehato ena:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Ruta batjha ba rona mehato e mene ya ho rarolla mathata:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE\n\nSebedisang mehato e na mmoho ha mathata a hlaha!\n\nHa ho etsahala ntho e mpe, hangata rea halefa le ho beha batho molato. Empa seo hantlentle batjha ba rona ba se hlokang ke motho ya tla ba thusa hore ba fumane ditharollo mmoho. Ba mamele, amohela tsela eo ba tadimang dintho ka yona le eo ba ikutlwang ka yona, mme le ba lebohe ka hore ba le tshepe.\n\nHo ruta motjha wa hao tsela ya ho sebetsana le mathata ho tla mo thusa bophelong bohle ba hae. Ke mpho e babatsehang!", - "Some problems other parents solved with their teens:": "Mathata a mang ao batswadi ba bang ba a rarolotseng le batjha ba bona:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Ke hobaneng ha motjha wa ka a sa batle ho ya sekolong\n* Ke kgathatsehile ka hore motjha wa ka ke moimana kapa o tla imisa motho\n* Ke kgathatsehile ka seo motjha wa ka a se etsang inthaneteng\n* Motjha wa ka o tsamaya le metswalle e fosahetseng\n* Motjha wa ka o botswa\n* Motjha wa ka ha a etse mosebetsi wa hae wa sekolo\n* Mohlomong motjha wa ka o tsuba dithethefatsi", - "Being a great parent also means taking time to care for yourself every day.": "Ho ba motswadi wa mmakgonthe ho boetse ho bolela ho qeta nako e itseng o itlhokomela letsatsi le letsatsi.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ke ditaba tse monate. Mme ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ho thata ho ba motsoali. Empa ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", - "Doing any of these makes you a great parent.": "Ho etsa efe kapa efe ya tsena ho o etsa motswadi wa mmakgonthe.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Batjha ba qeta nako e ngata haholo ba se katlung kapa ba le inthaneteng, moo ho leng thata ho tiisa hore ba bolokehile.\n\nHo buisana ka dibaka tse sireletsehileng le tse sa sireletsehang, le tsela ya ho thibela mathata, ka sebele ke ntho e thusang!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Dumelang bohle.\n\nKajeno sehlooho sa rona ke polokeho ya batjha.\n\nKe boikarabelo ba rona jwaloka batswadi ho tiisa hore batjha ba rona ba sireletsehile ka dinako tsohle. Re tlameha ho tiisa hore batjha ba rona ba sireletsehile metseng eo re dulang ho yona. Ke boikarabelo ba rona hore re ba tsebise ka dibaka tse sireletsehileng le tse sa sireletsehang metseng.\n\nHape ke boikarabelo ba rona ho tiisa hore ba utlwisisa dikotsi tseo ba ka nnang ba kopana le tsona ha ba le inthaneteng. Ka tsela eo batjha ba rona ba tla ba le boikarabelo mme ba tla kgona ho etsa diqeto tse nepahetseng hore le bona ba tiise hore ba sireletsehile.", - "Today you will explore:": "Kajeno lena o tla ithuta:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Pale le puisano – e sebeditseng!\n* Pale le puisano – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Pale le boikgopotso – e sebeditseng!\n* Pale le boikgopotso – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Puisano ke ntho ya bohlokwa ka ho fetisisa!\n\nA re boneng se etsahetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", - "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Ho na le ntho e etsahetseng ha ke tsamaile le metswalle ya ka @global.w_safe_teen_girl_2 le @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Ke mametse, @global.w_safe_teen_girl_1\"", - "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Monna wa koloi: “Dumela sematsatsa. Ke kgale ke ntse ke o batla. O motle hakaakang! Kana lebitso la hao o mang? \n\n@global.w_safe_teen_girl_2: “Lebitso la hae ke @global.w_safe_teen_girl_1”", - "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Monna wa koloi: “@global.w_safe_teen_girl_1, na o ka rata ho tsamaya le nna ho ya nwa terenki le ditjhipsi. Kena hle, o tla kgutla ka nako, kea o tshepisa…” \n\n@global.w_safe_teen_girl_1: “Ha ke dumele hore ke ntho e nepahetseng eo…”", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “O lehlohonolo mokgotsi wa ka. Ke kgalla eka monna enwa a ka kopa ho tsamaya le NNA le ho nthekela dimpho. Kea o jwetsa, haeba o hana ke tlo jwetsa batho bohle hore o setlaela!”", - "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 le ska tsamaya le yena! Itlhokomeleng! A re yeng hae. Ho kotsi ho tsamaya le batho bao re sa ba tsebeng. Ebile o moholo ho wena hape o etsa ntho e mpe.\"\n\n@global.w_safe_teen_girl_1: “Ha ke tsebe…”", - "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: \"Pfff, ke motlotlo ka wena hore ebe ha o a ka wa kena ka koloing eo. E ne e le boemo bo kotsi haholo, kea leboha hore ebe o mpolelletse se etsahetseng!\"", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "A re bue ka se etsahalletseng @global.w_safe_teen_girl_1", - "Discuss together: \n\nWhat was risky about that situation?": "Buisanang:\n\nKe eng e neng e le kotsi ka boemo boo?", - "The situation was risky because...": "Boemo boo bo ne bo le kotsi hobane...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho\n* Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho \n* Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding \n* Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona\n* Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "A re nahaneng ka se etsahalletseng @global.w_safe_teen_girl_1:", - "What was risky about that situation?": "Ke eng e neng e le kotsi ka boemo boo?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho", - "@global.w_safe_teen_girl_1's friend was encouraging her": "Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding", - "Many girls in our communities get pregnant or catch HIV from older men": "Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", - "All those things are true!": "Dintho tseo kaofela ke nnete!", - "Let's look at another example of a dangerous situation together.": "A re shebeng mohlala o mong wa boemo bo kotsi mmoho.", - "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: \"Mokgotsi wa ka o dula a bua ka moshemane e mong ya lekanang le rona wa inthaneteng... O tlo romella dinepe tsa hae ho moshemane eo. Na ho betere hobane ke thaka rona?\"", - "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: \"O motswalle wa nnete hobane o kgathatsehile ka mokgotsi wa hao. Ho romela dinepe tse sexy ho yena ho kotsi le ho feta.\"", - "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: \"Ka dinako tse ding ba pata seo ba hlileng ba leng sona inthaneteng – a ka re ke thaka ya lona empa e le monnamoholo ya dilemo di 50. Kapa ha ba kgaohana, a ka romella dinepe tseno ho batho bohle mme mokgotsi wa hao o tla utlwa bohloko haholo.\"", - "Let's talk about our teens' online safety.": "A re buisaneng ka boipaballo ba batjha ba rona inthaneteng.", - "What are some of the online risks for teens these days?": "Batjha ba matsatsing ana ba tobana le dikotsi dife inthaneteng?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano \n* Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe\n* Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya\n* Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko\n* Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", - "Let's think about our teens' online safety.": "A re nahaneng ka boipaballo ba batjha ba rona inthaneteng.", - "What is the biggest online risk for teens these days?": "Kotsi e kgolo ka ho fetisisa eo batjha ba matsatsing ana ba tobanang le yona inthaneteng ke efe?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!\n\nA re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nA re etseng dimmapa tsena re le sehlopha hona jwale. \n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Buisanang:\n\n* Ke dibaka dife mmapeng wa hao tse bolokehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa bolokehang bakeng sa batjha \n – Di tshwaye ka SEKERE\n* Ke eng e etsang hore sebaka se bolokehe kapa se se ke sa bolokeha? \n* Wena le motjha wa hao le ka etsang hore motjha wa hao a dule a bolokehile?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n\n* Wena le motjha wa hao le ka fumana tshehetso hokae ha o tobane le tlokotsi? \n – TSHWAYA dibaka tseo ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba di sebedisang \n* Babatsanang ka lebaka la tsela e ntle eo ba tsebang ho sebedisa webosaete ka yona! \n* Buisanang ka hore na ke dife tse ka nnang tsa ba kotsi. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa ha motjha wa hao le metswalle ya hae ba sebedisa inthanete ka tsela e sireletsehileng?", - "Safety Plan": "Moralo wa Boipaballo", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Nako le nako ha o rera kapa o boloka moralo wa boipaballo, tobetsa @global.parent_point mme o keteke katleho ya hao!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "A re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena - haeba motjha wa hao a le teng hona jwale, le ka etsa seo mmoho hona jwale!", - "My family can join in now!": "Lelapa la ka le ka kena hona jwale!", - "Let me try it out by myself": "E re ke e leke ke le mong pele", - "Step 1: What are important places in your community?": "Mohato wa 1: Ho na le dibaka dife tsa bohlokwa motseng wa habo lona?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Fumana sekgetjhana sa pampiri (kapa koranta ya kgale kapa khateboto) le pene. \n* Toroya mmapa wa motse wa habo motjha wa hao, ka ditshwantsho tsa dibaka tsohle tsa bohlokwa jwaloka diterata, ntlo ya hao, sekolo, dishopo, dibaka tseo motjha wa hao a di etelang.", - "Step 2: Which places are safe and unsafe?": "Mohato wa 2: Ke dibaka dife tse sireletsehileng le tse sa sireletsehang?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Buisanang:\n* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", - "Step 3: Where can you get support?": "Mohato wa 3: O ka fumana tshehetso hokae?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri. \n\nKa tlaase mona ke dibaka tse ding tse ka bang molemo", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", - "Step 4: What are risky places online and how can you make them safer?": "Mohato wa 4: Inthaneteng ho na le dibaka dife tse kotsi hona o ka etsa jwang hore di sireletsehe?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", - "MAPS": "DIMMAPA", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Etsa DIMMAPA le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang motseng wa heno le inthanete. Buisanang ka tsela ya ho boloka tlhahisoleseding ya bona, difoto le divideo e le lekunutu inthaneteng. Buisanang ka hore hang ha ntho e kena inthanete, e dula moo ho ya ho ile. Mohlomong ba tseba mohlala wa metswalle ya bona.", - "RULES": "MELAO", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Etsa MELAO le motjha wa hao ka tsela ya ho sebedisa diepo le diwebosaete tseo a di ratang ka tsela e sireletsehileng.\n\nNa o hopola pale ya Boipaballo Inthaneteng? E shebelle hape.", - "Online Safety Story": "Pale ya Boipaballo Inthaneteng", - "AMNESTY": "TSHWARELO", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Etsang tumellano ya TSHWARELO. Haeba ho etsahala ntho e mo halefisang, e sa mo tshwareng hantle kapa e mo tshosang, a ka buisana le wena ebile o ke ke wa mo halefela kapa wa mo fa kotlo, esita le haeba a ne a etsa ntho e fosahetseng.\n\nNa o hopola pale ya Tshwarelo e Sireletsehileng? E shebelle hape mona.", - "Safety Amnesty Story": "Pale ya Tshwarelo Molemong wa Polokeho", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Botswadi ditabeng tsa dijithale bo tshwana le botswadi bophelong ba sebele. O nkile BOHATO BA BOHLOKWA ba ho tiisa hore motjha wa hao o bolokehile motseng LE inthaneteng. O entse hantle!", - "Resources to help in the community": "Matlotlo a thusang motseng", - "Online Safety Resources": "Matlotlo a Boipaballo Inthaneteng", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Etsa dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo. \n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Haeba ha le eso etse sena mmoho, etsang dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo.\n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", - "Safety Plan Activity": "Ketso ya Moralo wa Boipaballo", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Hase moo! Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Re maswabi hore o bile le letsatsi le thata. Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya kamoso ya tshehetso ya botswadi.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya hao ya kamoso ya tshehetso ya @global.parent_app.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Dumelang kaofela.\n\nSehlooho sa kajeno ke ho keteka le mehato e latelang.\n\nEbile ho hlollang, ebile ntho e tsotehang ho nka leeto lena le lona. Kajeno lena re keteka leeto la rona mmoho.\n\nKajeno lena re keteka dithuto tsohle tseo re ithutileng tsona ho tloha qalong.", - "Today you will celebrate, look back and look ahead:": "Kajeno lena le tla keteka, le ikgopotse le ho lebella:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Boikgopotso & puisano\n* Dithulusi: Tsela ya ho tshehetsana\nKOPANANG - LETSETSANANG - NGOLLANANG - ABELANANG\n* Ho rala tshehetso", - "Today you celebrate and reflect on your experiences.": "Kajeno o ketela le ho ikgopotsa boiphihlelo ba hao.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Wena le lelapa la hao le tla ithuta dintho tse ngata. A re ikgopotseng tse fetileng le ho bona se fetohileng.", - "Reflect": "Ikgopotse", - "Listen and reflect": "Mamela le ho ikgopotsa", - "Read and reflect": "Bala mme o ikgopotse", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Kwala mahlo mme o phutholohe.\n\nNahana ka bophelo ba lelapa la hao pele o qala leeto la epo ena.\n \nNahana ka tsebo eo o ithutileng yona:\n* Ho itlhokomela\n* Nako ya boinotsing\n* Pabatso\n* Ditaelo tsa se lokelang ho etswa\n* Ho laola seterese\n* Ho etsa bajete ya lelapa\n* Melao\n* Ho jarisa ditlamorao o theotse moya\n* Ho rarolla mathata\n* Polokeho ya batjha\n* Ho sebetsana le koduwa\n\nNahana ka leeto lena – ho bile jwang ho wena ha:\n* O bolela maikutlo a hao le dintho tseo o fetileng ho tsona\n* Nahana le ho ithuta ho tswa ho dipale\n* Prakthisa tsebo ena ho motjha wa hao\n\nNa ho na le eng kapa eng e fetohileng ho wena le ba lelapa la hao?\n\nO hloka eng hore o tswele pele ho sebedisa tsebo ye?", - "Let's talk about what has changed.": "A re bue ka dintho tse fetohileng.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Buisanang:\n* Ho fetohile eng lelapeng la hao?\n* Ke eng eo o e entseng eo o leng motlotlo ka yona?\n\nHopolang ho babatsana le ho kgothatsana!", - "MEET": "KOPANANG", - "Keep meeting regularly to give each other parenting support.": "Dulang le kopana kamehla hore le tshehetsane jwaloka batswadi.", - "CALL": "LETSETSANANG", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "E bang ‘mekgotsi e kopanngwang ke botswadi’ e letsetsanang ha le halefile kapa le sa tsebe hore le etseng.", - "TEXT": "NGOLLANANG", - "Text each other every week to share what you’ve done well.": "Ngollanang beke le beke ho bolellana seo le se entseng hantle.", - "SHARE": "ABANG", - "Share @global.parent_app and help other families start their journey.": "Abang @global.parent_app mme le thuse malapa a mang a qale leeto la wona.", - "End of programme check-in": "Tlhahlobo ya qetello ya lenaneo", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Haesale o sebedisa @global.parent_app dikgweding tse fetileng, empa ho ba motswadi wa motjha ho nka nako e telele! Dipotso tse latelang tse amanang le boiphihlelo ba hao jwaloka motswadi di tla thusa ho lekola botswadi ba hao.\n\nIpuele nnete feela. Hopola hore batswadi ba dimilione ba ikutlwa jwaloka wena, mme kaofela re tshwanelwa ke pabatso. Ha o mong!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Ho bonahala eka o se o phethile tlhahlobo ya qetellong ya lenaneo. Hona o ka feta mosebetsi ona.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Etsang moralo wa kamoo le tla tshehetsana kateng ho tloha jwale ho ya pele.\n\nO ka sebedisa dikeletso tse tswang malapeng a mang, kapa wa iketsetsa tsa hao!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Rea o amohela! Re thabela ho ba le wena. Bekeng ena re tlo tsepamisa maikutlo ho wena.\n\nWekshopong ena ya kamohelo o tla: \n* Fumana dithulusi tsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko tsa hao", - "Wonderful, I am so happy things are going well.": "Ke taba tse monate, ke thabile haholo ho utlwa hore dintho di tsamaya hantle.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Ke maswabi hore hona jwale ho boima. Ke ntho e tlwaelehileng hore ka dinako tse ding re hule ka thata. Hopola hore ha o mong!", - "Why @data.workshop.w_self_care.short_title?": "Hobaneng e le @data.workshop.w_self_care.short_title?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Hangata ha re itlhokomele ka ho lekaneng. Empa ntho ena e bohlokwa haholo, haholoholo jwaloka motswadi!\n\nRe fokotsa seterese le ho itlhokomela hantle ho thusa rona HAMMOHO LE batjha ba rona.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho itlhokomela.\n\nHo na le dinako tseo re bang le dinako tse boima, moo re tobanang le mathata mme re sa tsebe hore na re etseng. Ho bohlokwa hore re itlhokomele e le ho ithuta mekgwa ya kamoo re ka dulang re kgobile matshwafo ha ho na le mathata, diphephetso le ditaba tse hlahellang.\n\nHa re kgobile matshwafo re boemong bo botle ba ho nahana dintho tse ntle le ho tla ka ditharollo tse molemo diphephetsong tseo re tobaneng le tsona.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Kajeno lena re tla etsa mesebetsi e 3 e ka re thusang ho itlhokomela, ebile re tla o botsa dipotso di se kae ho tiisa hore epo ena e o loketse.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Ketso ya ho kgatholoha\n* Ketso ya ho itemoha\n* Ketso ya ho iputsa\n* Dithulusi: Tsela ya ho eketsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko\n* Ditshisinyo tsa boikwetliso ba lapeng", - "Let's try it out and do a short relaxation activity together!": "A re e lekeng mme re etse ketso ya ho kgatholoha mmoho!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Jwaloka batswadi, hangata ha re na nako ya ho itlhokomela - empa ho bohlokwa haholo ho etsa jwalo! Ho fokotsa seterese sa rona ho thusa rona HAMMOHO le batjha ba rona.\n\nA re nkeng bohato ba pele mme re etse ketso e kgutshwanyane ya ho kgatholoha mmoho.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ho ela hloko seo re se etsang hantle ho re thusa ho tsepamisa mohopolo dinthong tse molemo.\n\nA re nke motsotswana mme re ipabatse. Re tla le bontsha tsela ya ho etsa jwalo.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Nahana ka ntho eo o e entseng hantle morao tjena.\n\nBolellanang mantswe ana ka lentswe le phahameng: \"Ke entse hantle ka…\"\n\nNtho e le nngwe eo le tshwanelwang ke pabatso ka lebaka la yona ke ena: Le entse hantle ka ho sebedisa @global.parent_app!", - "Recognise": "Lemoha", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Nka motsotswana ho ipabatsa.\n\nRe tla le bontsha tsela ya ho etsa seo.", - "Think of one thing YOU have done well recently.": "Nahana ka ntho e le nngwe eo O e entseng hantle morao tjena.", - "\"Well done to me for...\"": "\"Ke entse hantle ka...\"", - "Showing love to my children": "Ho bontsha bana ba ka lerato", - "Getting up even though I felt tired": "Ho tsoha leha ke ikutlwa ke kgathetse", - "Smiling at someone": "Ho bososella motho e mong", - "Making food to stay strong": "Ho lokisa dijo hore ke dule ke le matla", - "Spending time with my children": "Ho qeta nako le bana ba ka", - "Helping my children with schoolwork": "Ho thusa bana ba ka ka mosebetsi wa sekolo", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Haeba o kgona, bua mantswe ana ka lentswe le hodimo.\n\nNtho e le nngwe eo o tshwanelwang ke pabatso ka lebaka la yona ke ena: O entse hantle ka ho sebedisa @global.parent_app!", - "Well done! Try to do this every day.": "O entse hantle! Leka ho etsa sena letsatsi le letsatsi.", - "Things to praise yourself for:": "Dintho tseo o ka lekang ho ipabatsa ka lebaka la tsona:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ho bontsha bana ba hao lerato\n* Ho tsoha leha o ikutlwa o kgathetse\n* Ho bososella motho e mong\n* Ho etsa dijo hore o dule o le matla\n* Ho qeta nako le bana ba hao\n* Ho thusa bana ba hao ka mosebetsi wa sekolo", - "Have a hot drink": "Phoka tee kapa kofi", - "Call a friend or relative": "Letsetsa motswalle kapa mong ka wena", - "Have a relaxing bath": "Kena bateng ya metsi a kgathollang", - "Read": "Bala", - "Watch TV": "Shebella TV", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ho itlhokomela ke tsebo ya bohlokwa ya botswadi. Neanang malebela:\n\nKe dintho dife tse nyane tse o thabisang?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Leka ho etsa ntho eo o ka iputsang ka yona letsatsi le letsatsi.\n\nO ka sebedisa tsebo ena lapeng mme wa e fumana neng kapa neng ho @global.parent_centre ya hao!", - "Reward": "Moputso", - "We all deserve to treat ourselves well!": "Kaofela re tshwanela ho itshwara hantle!", - "What small thing makes you happy?": "Ke ntho efe e nyane e o thabisang?", - "Nice! Taking care of yourself is an important parenting skill!": "Ke hantle! Ho itlhokomela ke tsebo ya bohlokwa ya botswadi!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_1 kapa eng kapa eng eo o e thabelang.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_2 kapa eng kapa eng eo o e thabelang.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_3 kapa eng kapa eng eo o e thabelang.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_4 kapa eng kapa eng eo o e thabelang.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_5 kapa eng kapa eng eo o e thabelang.", - "Things you can do to reward yourself:": "Dintho tseo o ka di etsang ho iputsa:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Phoka tee kapa kofi e tjhesang\n* Letsetsa motswalle kapa setho sa lelapa\n* Kena bateng ya metsi a kgathollang \n* Bala \n* Shebella TV", - "RELAX": "KGATHOLOHA", - "Do a 30 second quick relaxation activity.": "Etsa ntho e ka o kgathollang ka potlako ka metsotswana e 30.", - "RECOGNISE": "LEMOHA", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Nka motsotswana mme o nahane ka ntho eo O e entseng hantle morao tjena! Haeba o ka kgona, bua ka lentswe le phahameng o re \"O entse hantle ka …\"", - "REWARD": "PUTSA", - "Remember you deserve your quality time too! What makes you happy?": "Hopola hore le wena o hloka nako ya ho ikgutsa! Ke eng e o thabisang?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Kaha jwale re hlomelletswe ka tsebo ya ho itlhokomela, a re tiise hore diwekshopo tsa hao tsa @global.weekly_workshops di o loketse hantle.", - "You seem to have completed the customisation process already. You can now skip this activity.": "Ho bonahala o se o qetile ho fetola epo hore e dumellane le maemo a hao. Jwale o ka feta ketso ena.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Neng kapa neng ha o kgona, kgatholoha, itemohe mme o iputse. \n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", - "Relax activity": "Ketso ya ho kgatholoha", - "Recognise activity": "Ketso ya ho itemoha", - "Reward activity": "Ketso ya ho iputsa", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Nako le nako ha o kgatholoha, o lemoha ntho eo o e entseng hantle kapa o iputsa, tobetsa @global.parent_points ho keteka katleho ya hao!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "O phethile wekshopo ena ya beke.\n\nRe tla phetha dintho tseo re di etsang ho itlhokomela ha le bokana ka dihlopha tsa lona ka lekgetlo la pele - kaofela ha lona le lokela ho itlhokomela haholwanyane!", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Dumela @field.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Dumela @field.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Re na le wekshopo e ntjha e fumanehang bakeng sa hao e amanang le ho laola bohale le kgatello ya maikutlo. E tla o thusa ho itlhokomela ka tsela e betere.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Na o thabile, o hloname, o halefile, o tsohile molota, o kgathatsehile? O sebeditse ka ho lemoha kamoo wena le ba bang le ikutlwang kateng kajeno! Mme hopola, letsatsi la hosane ke letsatsi le letjha.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Ka dinako tse ding kaofela re ikutlwa re imetswe. Ho hemela hodimo ho ka re thusa!\n\nPhethela @local.workshop_data.in_text_title ho fumana tse ding tsa dithuluse tse molemo tsa ho sebetsana le seterese.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Seterese se bile jwang bekeng ye? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Hosane ho na le wekshopo e ntjha-tjha! e tla beng e o emetse ya @global.parent_app. \n\nKa ho phethela @local.workshop_data.in_text_title pele, o beha moralo wa bohlokwa haholo: Ha o ikutlwa o thabile, lelapa la hao le lona le tla ntlafatsa dintho!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @field.user_name! Kajeno re keteka dikgwedi tse pedi tsa ho sebedisa @global.parent_app! \n\nO etsa mosebetsi o babatsehang! Wekshopo ya bekeng ena e tla o thusa ho tseba seo o lokelang ho se etsa ha motjha wa hao a sa latele melao ya lelapa.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @field.user_name! Kajeno re keteka dikgwedi tse pedi tsa ho sebedisa @global.parent_app! \n\nO etsa mosebetsi o babatsehang! Wekshopo ya bekeng ena e tla o thusa ho tseba seo o lokelang ho se etsa ha motjha wa hao a sa latele melao ya lelapa.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Ke ho thabisang ho bona hore o sebedisa @global.parent_app. O se o fumane dithulusi tse 6 tsa botswadi!\n\nNka wekshopo e latelang ho fumana thulusi e nngwe ya botswadi!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Phethela wekshopo mme o leke ho buisana le motjha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. Hantlentle ho kgoba matshwafo ho thusa motjha wa hao ho latela ditaelo hantle – leka sena pele o fetela pele!\n\nO entse hantle ka ho bontsha ho itella lelapa la hao hakaalo.", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "O entse mosebetsi o motle ka ho qeta @local.workshop_data.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @field.user_name! Rea o thoholetsa ka ho qala beke ya hao ya boraro ya @global.parent_app. \n\nHo na le wekshopo e ntjha e o letileng! Na o ka hakanya hore sehlooho sa wekshopo se reng ha o sheba setshwantsho see?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @field.group_name! Rea o thoholetsa ka ho qala beke ya hao ya boraro ya @global.parent_app. \n\nHo na le wekshopo e ntjha e o letileng! Na o ka hakanya hore sehlooho sa wekshopo se reng ha o sheba setshwantsho see?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore dintho tse nyane di tlisa phetoho e kgolo.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Rea leboha ka hore o sebedise @global.parent_app ho itlhomella le ho hlomella ba lelapa la hao.\n\nLeka @local.workshop_data.in_text_title mme o hahe tsebo e hlollang ya botswadi!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Pabatso ke moriana o moholo. \n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", - "Praise time!": "Nako ya pabatso!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Nakong e tlang ha o bona motjha wa hao, mo babatse ka ntho e le nngwe eo a e etsang hantle! \n\nMme o qetetse neng ho ipabatsa kapa ho babatsa motho e mong e moholo lapeng la hao? Leka!", - "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Lumela @global.user_name, u letetsoe ke thupelo e ncha hosane. Ho bonahala eka ha u so qete @local.workshop_data.in_text_title. Ka sebele ke e khutshoanyane (kea ho tshepisa) - u ka ba ua e phetha ha u ntse u emetse lijo tsa mantsiboea ho pheha. Ke hobane'ng ha u sa tsamaee ho eona ha u e-na le metsotso e seng mekae?\n\nKe leboha hape ka ho sebelisa @global.parent_app.", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla bulwa wekshopo e ntjha. E leke - o tla bona ha boitshwaro ba motjha wa hao bo fetoha.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @field.user_name! Rea o thoholetsa ka ho qala @global.parent_app bekeng ya 4. \n\nWekshopo ya beke ena e amana le tsela ya ho eketsa menyetla ya hore motjha wa hao a etse seo o mo kopang sona.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @field.group_name! Rea o thoholetsa ka ho qala @global.parent_app bekeng ya 4. \n\nWekshopo ya beke ena e amana le tsela ya ho eketsa menyetla ya hore motjha wa hao a etse seo o mo kopang sona.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Ipuise ka mosa ka mosebetsi o tswileng matsoho oo o o phethang. Ha ho na motswadi ya phethahetseng, empa re dumela hore o a ipabola!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Ha o so tsoaee letho la @data.habit.instruct_positively.title @global.parent_points.\n\nLeka kajeno!", - "Well done!": "O entse hantle!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "O se o tshwaile @global.parent_point @data.habit.instruct_positively.title hang – kahoo o hatela pele hantle.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "O se o tsoaile @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - o hatela pele haholo.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Na kamehla motjha wa hao o a o mamela? Haeba ho se jwalo (jwaloka boholo ba rona), sheba wekshopo ya bekeng ena ho ithuta hore na ho fana ka ditaelo tsa se lokelang ho etswa ho ka thusang haholo hakae.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Ho fana ka ditaelo tsa se lokelang ho etswa ho hlahisa boitshwaro bo botle bo eketsehileng!\n\nPhethela @local.workshop_data.in_text_title ho fumana ditsela tseo sena se ka sebetsang ka tsona ka lapeng la hao.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Jwaloka tlwaelo, o ka fumana wekshopo e ntjha hosane. Ho tla ba molemo ho phetha wekshopo e fetileng pele o fetela pele.\n\nBatswadi ba bang ba sebedisa epo ena ha ba le tseleng e lebang mosebetsing. Ho ka ba jwang hore o sebedise epo ena ha o na le metsotso ese mekae?\n\nRe boetse rea o leboha ka ho sebedisa @global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, ho tla fumana wekshopo e ntjha e o letetse: o tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", - "First @global.weekly_workshop!": "Qala ka @global.weekly_workshop!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.user_name. @local.workshop_data.in_text_title e se e o emetse.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.group_name. @local.workshop_data.in_text_title e se e o emetse.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ho qeta nako le motjha wa hao ho haha dikamano tsa ho tshepana pakeng tsa lona.\n\nTswela pele ka leeto la hao la @global.parent_app hona jwale - wena le lelapa la hao le tla atleha.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Re leboha haholo hore ebe o ikitlaetsa hakaalo ho ba motswadi ya betere. O motho ya ratwang le ya ananelwang!", - "Have you spent time with your teen already?": "Na o se o kile wa qeta nako le motjha wa hao?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Re a leboha hore ebe o sebedisa @global.parent_app ebile o motswadi ya ikemiseditseng. \n\n@local.workshop_data.in_text_title ya hao e se e o emetse!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. E keke ya nka nako e telele, ebile o tla fumana dintlha tsa bohlokwa. \n\nO sebeditse ka ho leka ho ba motswadi ya betere. Hosane o ka fihlella wekshopo e ntjha.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @field.user_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @field.user_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "O motswadi ya ikemiseditseng. O ikotle sefuba - kannete ena ke katleho e kgolo!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ha re tsebe hore na tlokotsi e ka hlaha neng, empa re KA itokisa! \n\nQala wekshopo e latelang hore o ithute hore na o ka etsa sena jwang hammoho le motjha wa hao.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @local.workshop_data.in_text_title mme o ithute tsela e ntlehadi ya ho itshwara ha motjha wa hao a o hloka haholo.", - "Have you discussed with your teen what you would do in a crisis situation?": "Na o se o kile wa buisana le motjha wa hao ka hore na le ka etsang ha ho hlaha tlokotsi?", - "Crisis Examples": "Mehlala ya Ditlokotsi", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Hosane wekshopo ya ho qetela ya @global.parent_app e tla be e o emetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ka tsela ena, o ka phetha sete ya hao ya tsebo ya botswadi mme wa etsa qeto ya hore na ho tloha moo o tla etsang!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane o ka fumana wekshopo ya ho qetela ho bontsha leeto la hao la @global.parent_app le seo o ka se etsang ho tloha moo!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @field.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @field.group_name! Kaofela ha lona le batla le fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Tsena ke dinako tse boima haholo tsa ho ba motswadi. O lokela ho ikotla sefuba ka sohle seo o se entseng.\n\nNahana ka dinako tsohle tseo o entseng hore motjha wa hao a bobothehe le tlhokomelo yohle eo o mo fileng yona. Batswadi ba etsa dintho tse hlollang, le etsa dintho tse hlollang!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "O se o fumane tsebo e ngata haholo ya botswadi dibekeng tsena tse fetileng!\n\nPhethela wekshopo e tlang hore o fumane tsebo e nngwe e tla o thusa.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "E le ho sireletsa motjha wa hao, ho molemo ho buisana ka motse wa habo lona le dintho tse mo hlahelang inthaneteng.\n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo o ka etsang sena kateng!", - "Have you talked with your teen about safety measures?": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Ho bonahala eka ha o eso phethele @local.workshop_data.in_text_title. Ho rala hammoho le motjha wa hao ho ka thibela mathata a mangata – leka pele o fetela pele!\n\nO entse hantle ka ho sebedisa @global.parent_app ho tshehetsa lelapa la hao.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Rea a o thoholetsa, o phethetse @local.workshop_data.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Dumela @field.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @field.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla le bontsha kaofela kamoo le ka sebetsanang le wona kateng.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Kaofela re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Tabeng ya batjha, le bophelong ka kakaretso, ho hlaha mathata a sa lebellwang ao re tlamehang ho sebetsana le wona. Qala ka wekshopo e latelang ho ithuta tsela ya ho sebetsana le wona.\n\nQala wekshopo e latelang o ithute tsela ya ho tobana le mathata ana ka katleho.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @local.workshop_data.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \n\nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ho tseba tsela ya ho rarolla mathata mmoho ho tla o thusa maemong a mangata!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @field.user_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @field.group_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ka dinako tse ding ho bonahala eka batjha ba hao ba hloname leha o entse sohle se matleng a hao. Hopola o etsa mosebetsi o tswileng matsoho, mme o tla ba le dinako tse monate le bona!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Rea leboha hore ebe o ile wa boela wa sebedisa @global.parent_app le ka hore ebe o kene leetong lena la botswadi ke boikemisetso.\n\n@local.workshop_data.in_text_title e tla o bontsha hore na melao e behwa jwang ka tsela e tla thusa motjha wa hao o e utlwisisa le ho e latela habonolo.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @local.workshop_data.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", - "Have you managed to set a rule together with your teen?": "Na o kgonne ho beha molao mmoho le motjha wa hao?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. E ke ke ya nka nako e telele mme e tla thusa motjha wa hao ho ntlafatsa tsela eo a latelang melao ka yona!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @field.user_name! O qala kgwedi ya hao ya bobedi ya ho sebedisa @global.parent_app. Ke ntho e hlollang!\n\nHoo ekabang malapa wohle a na le mathata a ditjhelete, kahoo, wekshopo ya beke ena e tla o fa thulusi e tla o thusa ho etsa moralo wa dintho tseo o tla di reka e le hore o be le tjhelete e lekaneng eo o ka qetang kgwedi ka yona.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @field.user_name! O qala kgwedi ya hao ya bobedi ya ho sebedisa @global.parent_app. Ke ntho e hlollang!\n\nHoo ekabang malapa wohle a na le mathata a ditjhelete, kahoo, wekshopo ya beke ena e tla o fa thulusi e tla o thusa ho etsa moralo wa dintho tseo o tla di reka e le hore o be le tjhelete e lekaneng eo o ka qetang kgwedi ka yona.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Neng kapa neng ha o ikutlwa o le mong kapa o imetswe, tseba hore ha o mong. Ho na le batswadi lefatsheng lohle ba fetang mathateng a tshwanang le a hao.\n\nO etsa sohle se matleng a hao letsatsi le letsatsi mme re motlotlo ka wena!", - "Have you talked with your teen about your family budget yet?": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ho kenyelletsa lelapa la hao tseleng eo le sebedisang tjhelete ka yona ho ka fedisa kgatello e ngata ya maikutlo le dikgang.\n\nPhethela @local.workshop_data.in_text_title ho thusa lelapa la hao ka ho etsa bajete le ho baballa tjhelete. Hantlentle ena ke ntho e bonolo - o tla bona!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Ho bonahala eka ha o so qete @local.workshop_data.in_text_title. Batswadi ba bangata ba itse ho etsa bajete ho entse hore lelapa le boele le be le kgotso – le lona seo se ka le sebeletsa.\n\nRe boetse rea o leboha ka hore o be motswadi ya ikemiseditseng.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho beha melao e sebetsang ya lelapa.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Hopola – beke ena e amana le WENA! Re tshepa hore o itshwara ka mosa. Seo sea o tshwanela!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala wekshopo e ntjha-tjha! ya @global.parent_app hosane. O tla bona diphetho tse molemo!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Na le se le jwetsitse balekane ba lona ka epo ya @global.parent_app? Ho tloha hosane le ka qala ho etsa diwekshopo tsa lona tsa @global.parent_app mmoho!", - "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Ho lahleheloa ke motsoalle kapa moratuoa ho thata ho batho bohle. Ho ba mosa ho uena le ho etsa lintho tse tla ho thusa ho tsoelapele nakong ena e thata ho thusa le ngoana oa hao ea lilemong tsa bocha!", - "Take care of yourself": "itlhokomele", - "Find a support group": "Thola sehlopha sa tshehetso", - "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Ho sareloa ho ka re ama ka libeke kapa likhoeli kapa lilemo. Ha ho hlokahale hore u ikutloe u le betere kapele.\n-Phomola ka ho lekana, ebile o je ka ho lekana - ho thata ho hlokomela bacha ha u khathetse mme u lapile.\n- Etsa lethathamo tsa lintho tse etsang hore u ikutloe u le betere, mme u li etse.\n-Leka ho etsa ntho e le 'ngoe e bonolo ho phomola ka letsatsi le leng le le leng le mocha oa hau, le ka bakeng sa hao.\n- Ho lokile ho se ikutloe hantle mme ho lokile le ho lla. Le ka mohla u se ke ua ipeha molato, hona hase molato oa hao.\n-Ho na le tšepo kamehla le ka mora tahlehelo. Leka ho natefeloa ke lintho tse bonolo, mme u nke motsotso ho etsa ho hong ho monate kapa ho phomola le ngoana oa hau.\n-Fumana motho e moholo a le mong kapa ba babeli ba ka u tšehetsang, ba u mamele, hape ba bue le uena.", - "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ho bua le motho o ka ho tshehetsang, hape a ho mamele ho ka thusa.\n- Ho ka thusa ho kena sehlopheng sa batho bao le bona ba lahlehetsoeng ke motho.\n- Ha ho motho ea phethahetseng. Ho lokile ho bua ka mehopolo e metle le e mebe.", - "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Bacha ba sebetsana le mesarelo ka litsela tse fapaneng, joalo ka batho ba baholo. O ka ba thusa ho utloisisa boemo le maikutlo a bona, ka ho etsa libaka tse bolokehileng moo le ka khonang ka bobeli ba lona ho arolelana le ho utloisisa tahlehelo.", - "Be honest": "Tshepahala", - "My teen's response": "Karabo ea mocha oa ka", - "How to support my teen?": "Na nka tshetsa mocha oa ka joang?", - "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Bolella mocha oa hao hore motho o hlokahetse - ka nako e nngoe ha ba hlokomela.\n- Ho bolela ke ts'ebetso, eseng ketsahalo. O ka hloka ho ba bolella kgafetsa le kgafetsa.\n- Sebelisa mantsoe ao ba a utloisisang.\n- Haeba bacha ba banyane ha ba utloisise hore na lefu ke eng, ba thuse ka ho hlalosa hore motho eo ba mo ratang ha a kgutle. Leka ho se bitse lefu ka hore ke 'boroko', kapa 'ho robala', kapa 'leeto'.\n- Bacha ba baholoanyane ba ka utloisisa hore na lefu ke eng, empa ba ka nna ba sokola ho hlalosa maikutlo a bona, kapa ka ho laola maikutlo a bona.\n- Bacha ba ka araba ka litsela tse fapaneng: ho lla, ho hoeletsa, ho se lumele kapa ho thula haholo.\nTsohle tsena li lokile. O ba bolelle hore o teng, o nale bona.\n- Lumella lipotso le ho bua. Tshepahala. Ho lokile ho bua ha re sa tsebe.", - "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "-Bacha ba ka 'na ba hlonama, ba halefa, ba se utloisise kapa ba se lumele, ba ikutloe ba tsielehile, ba ikutloa ba sa phele hantle kapa ba nale mahlaba, litoro tse tshosang kapa mathata sekolong. Mocha oa hao a ka ’na a bonahala a thabile, empa a ntse a hloname. Ba ka 'na ba koalloa 'me ba batla ho qeta nako e eketsehileng le metsoalle. Li ka boela tsa bontsha boitshoaro bo sa lebelloang kapa bo kotsi. Tsena li ka 'na tsa se ke tsa utloahala ho uena, empa tsohle tsena li tloaelehile.\n- Bacha ba ka 'na ba ikutloa eka ke molato oa bona - hore ba fetisitse kokoana-hloko, kapa hore ba itshoere hampe. Ba bolelle ka ho hlaka hore ha baa etsa letho le phoso.", - "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Hlalosa hore ho sareloa ho tla le maikutlo a mangata le liketso. Bontsha ngoana oa hau hore oa ratoa le ho hlokomeloa, 'me u mo khothalletse ho arolelana maikutlo a hae ka ho bua, ho ngola kapa ho taka.\n- Haeba ho na le sehlopha sa ts'ehetso seo mocha oa hau a ka bang karolo ea sona, sena se ka thusa.\n-Haeba mocha a bua ka ho batla ho intsha kotsi kapa ho ipolaea, kopa thuso ho motho e mong kapele kamoo u ka khonang.\n-Haeba u khona, boloka mekhoa ea hau e tloaelehileng ea letsatsi le letsatsi, sena se ka tshelisa bacha.\n- Ho ka thusa bacha ho ba karolo ea meetlo mabapi le lefu - ho khetha pina kapa seo ba ka se buang.\n-Ho qeta metsotso e seng mekae letsatsi le leng le le leng u tsepamisitse maikutlo ho mocha oa hau ho thusa ho etsa hore a ikutloe a sireletsehile haholoanyane le ho mo fa monyetla oa ho phomola kapa ho bua ka lintho tse mo khopisang.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ho lahleheloa ke moratuoa ho ka utloahala o kare o hloletsoe. Mona ke litlhahiso tse 'maloa tse u lokelang ho li hopola ho tla ho o thusa.", - "Ask for help": "Kopa thuso", - "Say goodbye": "Salisa hantle", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Kopa thuso ho motho eo u mo tshepang - lijo kapa tlhokomelo ea bana e ka ba molemo. U ka hloka litokomane bakeng sa lefa, bakeng sa bana ba hau, kapa ho fumana litshebeletso.\n\n\n- Ka nako e 'ngoe batho ba leka ho nka chelete kapa lefa ho motho ea saretsoeng. Fumana ka litokelo tsa hau.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Ho salisa hantle ho thata. Etsa seo u ikutloang se le molemo ho uena le mocha oa hau.\n- Malapa, bacha le batsoali ha ba phethahala. Ha motho a hlokahetse, ho loketse ho bua ka lintho tse ntle le tse mpe tseo re li hopolang.\n- Ho ka thusa ho ngola lengolo kapa ho etsa setšoantšo bakeng sa motho ea tsamaileng.\n- Batho ba bang ba etsa mokete kapa ba ja lijo tse ikgethang ho keteka motho, mme ba salise hantle.\n- Ho ka thusa ho etsa lebokose la mehopolo, ho beha lintho tse u hopotsang uena le mocha oa hau ka motho eo.\n- Ho ka thusa ho bua ka motho feela ha u nahana ka eena.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Letsatsi la kajeno le fella mona, nka motsotsonyana hore:\n\n* O buisane le motjha wa hao ka ntho e le nngwe eo thabisang eo a e entseng. \n* O ipabatse ka ntho e le nngwe eo o e entseng hantle kajeno. \n* O kgalala!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Botsanang, “Ke eng e o thabisitseng kajeno?”\n* Botsanang, “O tobane le bothata bofe kajeno?”\n* Botsanang, “Nka o thusa jwang?”\n* A re etseng sena mmoho letsatsi le letsatsi; ekaba ha le ja dijo tsa tinare hammoho kapa pele le ilo robala.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Hase kamehla le ka nkang maeto, empa kamehla le ba le ditakatso! Botsa motjha wa hao dipotso tsena:\n* O ka rata ho nka leeto le yang hokae? O tla nka nako e kae o etile? O ka paka eng? O ne o tla etsang ha o le leetong? O ne o tla bona eng?\n* Shebang mmapa mmoho kapa le o toroye.\n* Kgethang naha eo motjha wa hao a qalang ho utlwa ka yona ebe le ithuta ka naha eo.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena le motjha wa hao le ka hlophisa letoto la baeti la batho ba tummeng bao kannete le ka ratang ho ba mema phathing. Ka bomong le ka ba le batho ba bahlano – ekaba batho ba nakong e fetileng kapa ba hona jwale. Le ka mema mang? Hona na baeti ba lona ba tla utlwana hantle?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Nahana ka dipolelo tse tharo tse amanang le wena. Tse pedi ebe nnete mme e le nngwe e lokela ho ba leshano.\n* Ho ka thusa ho nahana ka ditabatabelo, ditakatso, boiphihlelo sekolong, tseo le di ratang le tseo le sa di rateng. Ka mohlala: ke hloile dibanana, thuto eo ke e ratang ke ya saense, mme kannete ke lakatsa eka nka kgona ho bina. \n* Di bolelle motjha wa hao mme o mo kope hore a hakanye hore na ke efe eo e leng leshano. \n* Na o hakantse ka nepo? Na o o hlahile lesumatha?\n* Mme o mo kope ho etsa se tshwanang. Na o ile ea ithuta ntho e nngwe e ntjha e mong ka e mong?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Phetela motjha wa hao ho hong ho etsahetseng ha o ne o le motjha. Ke dintho dife tse neng di le siyo ka nako eo? Difouno tse nang le inthanete? Le ne le ithabisa ka ho etsang? Ke dintho dife tseo o neng o kgathatseha ka tsona? O ska kgathatseha ha ba sa o bolelle letho – ntho ya bohlokwa ke hore ba mamele mme ba hopole. Ka dinako tse ding batjha ba rona baa lebala hore batswadi ba bona le bona ke batho!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Nahana ka matla a maholo. Ka mohlala, ho ya kae kapa kae ka ho panya ha leihlo, ho tsamaya ka nako, ho bala dikelello. \n* Botsa motjha wa hao, “Haeba o ne o na le matla a maholo a ho […], o ne o tla a sebedisa jwang?”\n* Mo kgothalletse hore a ithehe lebitso la mohale e moholo mme a mo etsise ka diketso. \n* Jwale e re motjha wa hao a o kgethele matla a maholo.\n* Tiisa hore le wena o etsisa matla a hao a maholo!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Buisana le motjha wa hao ka ntho eo a e ratang.\n\nEkaba ka eng kapa eng eo a kgethang ho bua ka yona: dipapadi, metswalle, mmino, dikgalala...\n\nLeka ho mamela motjha wa hao mme o mo fe monyetla wa ho bua.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Kgetha mopheti wa pale hore a qala ho pheta pale.\n* Bamamedi ba pale ba ka mo kena hanong neng kapa neng.\n* Mopheti wa pale o tlameha ho kenya lentswe leo paleng ya hae.\n* Ha mopheti wa pale a qetile, leka ka mopheti e mong wa pale!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Nahana ka maemo a fapaneng. Ka mohlala, ho kganna koloi, ho sesisa sekepe kapa ho fofisa sefofane.\n* Bolella motjha wa hao ebe o mo botsa potso ena, “O ka rata ho etsa efe?”\n* Mo botse hore na hobaneng?\n* Nahana ka maemo a mang a mararo kapa o kope motjha wa hao hore a etse le wena.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Botsanang dipotso. Ekaba dipotso dife kapa dife tse amanang le dintho tseo le di ratang kapa seo le se entseng kajeno.\n* Molao ke hore o ke ke wa araba ka “E”, “Tjhe” kapa “Mohlomong”.\n* O ka nka nako e kae? O ka qapa dikarabo tse kae?\n* Tjhentjhanang mme le bapale hape!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Motho wa pele o re, “Ka Moqebelo, ke ya… (ka mohlala, ke ya phakeng)”\n* Motho wa bobedi o tlatsa motho wa pele, “Ka Moqebelo, ke ya phakeng le… (ka mohlala, ho etela motswalle wa ka e moholo).\n* Motho ka mong o tlatsa ya buileng pele, o leka ho nahana ka dintho tsohle tse monate tse ka etswang ka Moqebelo.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qala pale ka “Ba re enere…”\n* E re motjha wa hao a bolele polelo e latelang.\n* Ebe o bopa polelo.\n* Tjhentjhanang ho fihlela le qapile pale e monate e ntjha.\n* Tiisa hore pale e fela hamonate.\n* Botsa motjha wa hao hore na karolo eo a e ratileng haholo ya pale ena ke efe!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Botsa motjha wa hao hore na a ka thabela ho ja dijo tse jwang. \n* Di pheheng hammoho!\n* E re ba tjhentjhane ka hore na seapehi se seholo ke mang – ba etelle pele, mme o latele ditaelo tsa bona. \n* O ka ba wa ba thusa ho etsa bajete ya dintho tseo ba phehang ka tsona! \n\nNa ha o nahane hore sena se ka sebetsa? Botsa batjha ba hao hore na BA ka rata hore wena le bona le etseng mmoho. Ba tlohele ba etelle pele. Phutholohang. Le je monate.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Qapa tantshi e tsamaisanang le dipina tseo batjha ba hao ba di ratang.\n* Motho a le mong o phokola tantshi mme bohle baa mo etsisa. \n* Bohle baa tjhentjhana ka ho etella pele. \n* E etse bakeng sa lelapa!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Papadi ena e ka bapalwa ka dipara kapa ka batho ba bangata sehlopheng.\n* Emang le shebane kapa le entse lesakana. \n* Motho a le mong o a qala mme bohle baa mo etsisa, ba leka ho tsamaya ka nako e tshwanang le moetapele.\n* Tiisa hore moetapele o tsamaya butle hore bohle ba kgone ho mo latela! Ithute ho tsamaisa ditho tse sa tshwanang tsa mmele le maemong a sa tshwaneng.\n* Kamora nako, tjhentjanang ka hore na ke mang ya etellang pele. O fe bohle monyetla wa ho etella pele.\n* E etseng ho se na ya etellang pele!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Nahana ka tsebo e ntjha eo o ka ithutang yona le motjha wa hao. Ka mohlala, ho tiisa hore bolo ha e wele fatshe kapa ho phahamisa leoto, ho kapa dibolo tse ngata, ho pheha sopho?\n* Tjhentjhana ka ho leka tsebo e ntjha.\n* Tiisang hore le ya babatsana, mme le leke ho ithuta le ho bapala mmoho!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Le tle ka mefuta e meraro ya boikwetliso mmoho. Ka mohlala, ho tsamaya, ho torota, ho bapala bolo kapa ho tantsha.\n* E kgetheng hammoho mme le leke hape. \n* Haeba kaofela le e rata, etsang qeto ya hore na le tla e etsa hangata hakae. Hang kapa habedi ka beke? Hoseng ho hong le ho hong?\n* Nahanang le le mmoho ka ditsela tsa ho ithabisa le ho feta. Na le ka torota ho ya fihla boholeng bo itseng? Tjhentjhanang ka ho ba mokwetlisi? Kgothatsanang ka meputso e menyane ya mahala?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Motho wa pele o kgetha kapa o phokola pina.\n* Bohle ba tlameha ho hakanya lebitso la pina (ho thatafatsa dintho ba ka hakanya hore na sebini ke mang).\n* Wa pele ya hakanyang mme a nepa e ba moetapele ya latelang.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Ena ke papadi e batlang bonyane batho ba 3.\n* Qala sedikadikwe mme o fetise “senepe” se le seng lesakaneng (kapa o “ope diatla” kapa o letse menwana).\n* O ka “letsa menwana” hang ho lahla “senepe”, le hang ho se kapa. Sheba motho eo o mo akgellang sona. \n* Tsela (hodimo, tlase, otlolohile, matswedintsweke, ho ipitika fatshe) le matla (a maholo, habonolo, a itekanetseng) tsa ho lahlela senepe fatshe di ama kamoo motho e mong a ka se kapang kateng. \n* O ka lahlela “senepe” fatshe, wa se akgela moyeng, mme wa se kapa ka makgetlo a mmalwa pele o se fetisa. \n* Ha bohle ba ipabola papading ena, le ka qala ho tsamaya ka kamoreng, o ntse o fetisa “senepe”. \n* O ka se lahlela tlasa leoto? Kamorao mokokotlong? Ka hlooho? Ho kgaoletsa se fetiswang? Thabelang ho bapala ka “senepe”!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Kgethang papadi kapa boikwetliso boo le bo etsang mmoho. Etsang qeto ya hore na le tla bapala le ho ikwetlisa neng. Na etlaba letsatsi le letsatsi? Ka nako e kae? \n\nDi lekeng ka beke. Ha beke e fela, ipotse le ho botsa lelapa la hao dipotso tsena:\n* Ho ya jwang? \n* Le ikutlwile jwang ha beke e qala? \n* Le ikutlwa jwang ha beke e fela? \n* Re ka etsa dintho ka tsela e fapaneng jwang bekeng e tlang?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Tjhentjhanang ka ho ba “baetapele”. Phokola ka polelo e tla arabelwa ke bohle. Ebe “moetapele” o fana ka ditaelo ebe bohle ba di latela kapele kamoo ba ka kgonang:\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Thetsa ntho e kgubedu.” \n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Qhoma qhoma ka makgetlo a leshome.”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Beha dieta ka rakeng ya dieta.”", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Papadi ena e monate ha e bapalwa ke batho ba fetang ba 2.\n* Motho o etsa eka o etsa ntho e itseng – ka mohlala, o kama moriri kapa o lokisa dijo tsa tinare. \n* Motho e mong o a mo botsa, “O etsang?”\n* Motho wa pele o lokela ho bua ntho e sa amaneng ho hang le ho kama moriri, ka mohlala “Ke fasa dieta.” \n* Motho wa bobedi o etsa eka o fasa dieta ho fihlela motho e mong a mo botsa, “O etsang?” \n\nKamehla karabo e tlameha ho ba ntho e fapaneng le seo o hlileng o se etsang!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Foka letsoho la hao moyeng ka makgetlo a 8 o ntse o bala ho fihla ho 8.\n* Etsa sena ka potlako ebile o hweleditse kamoo o ka kgonang.\n* Pheta sena ka letsoho le leng la hao. Pheta seo ka maoto ka bobedi.\n* Etsa sena ka makgetlo a 7, ebe a 6 mme o tswele pele ho fihlela ho lekgetlo le 1.\n* Bohle ba hweletse “Kgoho e hlanyang” ebe ba etsa sohle ho tantshe ya kgoho e hlanyang!", - "Quick Parenting Tips": "Diketso tse Potlakileng tsa Botswadi", - "Raising teens can be hard, and we all struggle sometimes.": "Ho hodisa batjha ho ka ba thata, mme ka dinako tse ding kaofela re hula ka thata.", - "What is the main challenge you are experiencing right now?": "Phephetso e ka sehloohong eo o tobaneng le yona ke efe hona jwale?", - "My relationship with my teen is not good": "Kamano ya ka le motjha wa ka ha e ntle", - "My teen’s behaviour is difficult": "Boitshwaro ba motjha wa ka bo nthatafalletsa dintho", - "I feel stressed, lonely, angry": "Ke ikutlwa ke imetswe, ke jewa ke bodutu, ke halefile", - "I have money worries": "Ke kgathatsehile ka ditjhelete", - "I worry about my teen’s safety": "Ke kgathatsehile ka polokeho ya motjha wa ka", - "We often fight in our family": "Re dula re lwana lapeng", - "I have a different problem…": "Ke na le bothata bo fapaneng…", - "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ho haha dikamano tse ntle ho qala ka ho qeta nako mmoho - esita le metsotso e 5 ka letsatsi e etsa phapang! Qalong, ho ka ba thata ho qeta nako mmoho, hobane kaofela re phathahane kapa mohlomong batjha ba rona ha baa thaba ka dinako tse ding. Empa ho qeta metsotso e 5 ka letsatsi le motjha wa hao ho etsa hore le tshepane. Leka ho botsa motjha wa hao hore na a ka thabela hore le etseng mmoho. Ekaba ntho e monate le e kgathollang le bakeng sa hao!", - "You can get more support on how to spend one-on-one time with your teen here:": "O ka fumana thuso e nngwe e amanang le tsela ya ho qeta nako ya boinotsing le motjha wa hao mona:", - "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Batjha bohle ka dinako tse ding ba itshwara hampe! Ntho e le nngwe e ka thusang ke ho babatsa boitshwaro ba motjha neng kapa neng ha a etsa ntho e ntle – ho sa tsotellehe hore na e nyane hakae. Ho ka nna ha bonahala eka batjha ha ba batle ho babatswa empa bonneteng ba ntse ba e batla, ebile kannete baa e batla.", - "You can get more support here on how to encourage good behaviour through praising:": "O ka fumana thuso e nngwe mona tseleng ya ho kgothalletsa boitshwaro bo botle ka ho babatsa:", - "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Kannete hona jwale kgatello ya botswadi e hodimo. Re tseba hantle hore na bophelo bo ka ba thata hakae. Ho iketsetsa ntho e itseng ho ka o fokoletsa seterese. Eo ke tshwanelo ya hao! Mme ha o ikutlwa o imetswe, laola mmele wa hao ka ho hula moya butle, ka ho tebileng ka makgetlo a mahlano pele o araba. Batswadi ba bangata ba re seo se ba thusitse.", - "You can get more support on how to take care of yourself here:": "O ka fumana thuso e nngwe e amanang le ho itlhokomela mona:", - "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Ha o mong. Seterese sa tjhelete se boima haholo ho batswadi. Leka ho buisana le motjha wa hao ka hore na ho kena tjhelete e kae le hore na le tlameha ho sebedisa tjhelete e kae le le lelapa kgwedi le kgwedi. Sena se ka mo thusa ho utlwisisa hore na ke hobaneng ha o sa kgone mo fumanela ntho eo a e batlang. Ha bohle ba utlwisisa hore na tjhelete e ya hokae, ho ba bonolo ho dumellana le ka hore na le baballe bokae!", - "You can get more support on how to budget and save here:": "O ka fumana thuso e nngwe e amanang le ho etsa bajete ya ho baballa mona:", - "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Batjha ba qeta nako e ngata ba se lapeng kapa ba le inthaneteng, moo ho leng thata ho ba sireletsa - sena se hlobaetsa batswadi ba bangata. Leka ho qala puisano le motjha wa hao ka dibaka tse sireletsehileng le tse sa sireletsehang motseng le inthaneteng (o ka nna wa lokela ho leka ka makgetlo a mmalwa). Mohlomong o tseba dibaka tse ding tseo wena o sa di tsebeng. Sena se ka le thusa ho rala ditaba mmoho tse amanang le tsela ya ho dula a sireletsehile.", - "You can get more support on how to keep your teen safe here:": "O ka fumana thuso e nngwe ya ho tiisa hore motjha wa hao o sireletsehile mona:", - "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Ha mathata a hlaha, lekang ho buisana ka wona mmoho. Hantlentle bothata ke eng? Ho na le ditharollo dife tse ka kgonehang hona ditlamorao tsa e nngwe ke dife? Ka tsela eo, le ka fumana tharollo e ka bang MOLEMONG wa bohle.", - "You can get more support on how to solve problems together here:": "O ka fumana thuso e nngwe ya ho rarolla mathata mmoho mona:", - "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Ha ho bonolo ho hlokomela malapa a rona. Ka dinako tse ding kaofela re tobana le diphephetso, empa re tshepa hore epo ena e tla o thusa ho di feta ka katleho. @global.parent_app e itshetlehile ka boiphihlelo ba dilemo tse leshome tsa ho tsamaisa mananeo a botswadi Afrika Borwa, le batswadi ba dikete ba fumaneng hore dikeletso tse fanweng di thusa ka diphephetso tse ngata tsa botswadi. Re tshepa hore video ena e tla thusa wena hammoho le lelapa la hao.\n\nTse ding tsa dikeletso tsa bohlokwa tse atlehileng ke tsena:", - "Start your first parenting workshop": "Qala ka wekshopo ya hao ya pele ya botswadi", - "You will get more support in the @local.workshop_data.in_text_title.": "O tla fumana thuso e nngwe ho @local.workshop_data.in_text_title.", - "You can get more support in the @local.workshop_data.in_text_title.": "O ka fumana thuso e nngwe ho @local.workshop_data.in_text_title.", - "Start the @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", - "Finish the @local.workshop_data.in_text_title to get more support.": "Phethela @local.workshop_data.in_text_title hore o fumane thuso e nngwe.", - "Continue the @local.workshop_data.in_text_title": "Tswela pele ka @local.workshop_data.in_text_title", - "Re-access the @local.workshop_data.in_text_title": "Lekola botjha @local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Dulang fatshe, le kwale mahlo mme le mamele mohemo wa lona ha moya o tswa le ha o kena.\n\nLemohang kamoo le ikutlwang kateng.\n\nHa le itokisitse, bulang mahlo hape.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Leka sena neng kapa neng ha o ikutlwa o imetswe mme o hloka ho nka kgefu hore o iphumane.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Kwala mahlo a hao.\n\nA re sebedise matla a mohlolo a tharo ho iphumana le ho phutholoha.\n\nBolela medumo e meraro eo o e utlwang hona jwale.\nBolela menko e meraro eo o e fofonelang hona jwale.\nBolela dijo tse tharo tseo o di ratang.\n\nKe dintho dife tse tharo tseo o di lebohelang hona jwale? Ha ho hlokehe hore di be kgolo.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Qetellong ya letsatsi le boima, ho nahana ka dintho tse tharo tseo o di lebohelang ho ka re thusa ho ba sebete ho leka hape hosane.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Kwala mahlo mme o nahane ka letsatsi.\n\nBolela ntho e 1 eo o e lebohelang.\nBolela ntho e 1 eo o e entseng hantle.\nBolela ntho e 1 eo o e ratang.", - "Well done, you are a hero!": "O sebeditse, o mohale!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Kwala mahlo.\n\nSebedisa matla a mohlolo a tharo ho dula o le nako ebile o phutholohile.\n\nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3. \nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Na o ikutlwa ka tsela e fapaneng? Ho hemela hodimo ho thusa mmele wohle le kelello ho kgoba matshwafo.\n\nO kgalala!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Kwala mahlo.\n\nMamela mohemo wa hao ha moya o kena le ha o tswa ka makgetlo a mahlano.\n\nLemoha kamoo o ikutlwang kateng.", - "When you are ready open your eyes again. You are in control!": "Ha o se o lokile bula mahlo hape. Ha ho na se o hlotseng!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Kwala mahlo. \n\nNa bana ba hao ba kile ba etsa hore o ikutlwe eka o ka hweletsa? \n\nIphe kgefu ya metsotswana e 10. Hula moya mme o o lokolle butle ka makgetlo a 5. \n\nLeka ho arabela o kgobile matshwafo.", - "Millions of parents say this helps - A LOT.": "Batswadi ba dimilione ba re seo se a thusa - HAHOLO.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Kwala mahlo. \n\nEmisa ntho eo o e etsang ka motsotswana mme o amehe ka mohemo wa hao.   \n\nKe ntho efe e le nngwe eo o e lebohelang hona jwale?  \nKe ntho efe e le nngwe e o tlisetsang thabo?  \nKe ntho efe e le nngwe eo o e ratang?  \n\nHa ho hlokehe hore ebe ntho e kgolo. Ka dinako tse ding dintho tse nyane di bohlokwa haholo bophelong!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Sena ke seo o ka se etsang hore mmele wa hao o phutholohe:  \n\nDula moo o iketlileng mme o kwale mahlo haeba o kgona.  \nNahana ka reng ya kgauta e sekenang mmele wa hao ho tloha maotong ho ya hloohong.   \nEla hloko ha e ntse e nyolosa le ho theosa mmele wa hao. Na ho na le dikarolo tse utlwahalang di tsitsipane? Di shwele bohatsu? Di le bohloko?   \nAmeha ka dibaka tseo ka nakwana. Hula moya sebakeng seo mme ha o butswela moya, leka ho lokolla tsitsipano kapa bohloko.   \nEtsa sena ha o hema ka makgetlo a mmalwa.   \n\nBula mahlo. Hona jwale mmele wa hao o ikutlwa jwang?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "Hape o ka leka sena nakong e tlang ha o iphumana o paqame betheng mme o hlobaela!", + "Question Time": "Nako ya Dipotso", + "It's time for some questions!": "Ke nako ya dipotso!", + "Read Together": "Balang Hammoho", + "Let's read a story together!": "A re bale pale hammoho!", + "Let's read a story!": "A re baleng pale!", + "Let's see how this week has been.": "E re re bone hore na beke ena e tsamaile jwang.", + "This week you have done...": "Bekeng ena o entse...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "O bontsha boikemisetso ka tsela eo ba ho ba motswadi le ho itlhokomela.\n\nWa babatseha.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ho prakthisetsa lapeng ke tsela eo re ntlafatsang bophelo ba malapa a rona kateng. Empa hangata seo se ba le mathata.\n\nA re phetelaneng dintho tseo re atlehileng ho tsona le mathata ao re thulaneng le wona, mme re thusaneng ho fumana ditsela tse ntjha tsa ho iteka!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Nahana kamoo mesebetsi ya hao ya lapeng e tsamaileng kateng bekeng ena.\n\nTjhentjhanang ha le tshohla:\n* Ke eng e tsamaileng hantle hona bothata ebile eng? \n* Le ka nahana ka ditharollo dife mmoho? \n* Kgethang tharollo e le nngwe mme le e leke hamorao ka batjha ba lona! \n\n(Kapa le ka e prakthisa hona jwale hore ho be bonolo hamorao!)", + "Discussion example from @data.workshop.w_1on1.title": "Mohlala wa puisano e tswang ho @data.workshop.w_1on1.title", + "Relax Together": "Theolang Moya Hammoho", + "Relax": "Kgatholoha", + "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "A re etseng ntho kgutshwane e tla etsa hore re theole moya hammoho – e tla nka katlase ho motsotso o 1 mme o tla utlwa o kgobile matshwafo hamonate.", + "Add this activity to @global.my_relaxes": "Kenya mosebetsi ona ho @global.my_relaxes", + "Listen and relax": "Mamela mme o theole moya", + "Read and relax": "Bala mme o theole moya", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "O kgalala!\n\nLetsatsi le letsatsi, elellwa ntho e itseng eo o e entseng hantle. Iputse ka ntho e o thabisang. Mme o hemele hodimo hore o theole moya.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Kwala mahlo.\n\nLemoha kamano ya hao le lefatshe le tlasa hao.\nKe dikarolo dife tsa mmele wa hao tse thetsang lefatshe? Ke dikarolo dife tsa mmele wa hao tse sa le thetseng?\nLemoha moo ho utlwahalang ho futhumetse le moo ho utlwahalang ho phodile.  \nUtlwa lefatshe le tlasa hao le o tsheheditseng. Tlohella mmele hore o itshetlehe ka tshehetso la lefatshe.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Leka sena nakong e tlang ha o ikutlwa o le mong kapa o etsa mosebetsi o tlwaelehileng o kang ho hlapa. Kannete seo se ka thusa!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Dula fatshe mme o kwale mahlo.\nKe medumo e mekae eo o e utlwang? \nMamela medumo kahare le kantle ho kamore. E bale ka menwana ya hao. \nKamora medumo e leshome, o phahamisitse menwana e mekae? O utlwile medumo ya eng? \n\nLeka hape ka metsotswana e meng e leshome. \nNa ho na le medumo efe kapa efe e metjha eo o e utlwileng? Na ho na le medumo efe kapa efe kahara mmele wa hao? \nLemoha kamoo o ikutlwang kateng hona jwale.", @@ -1017,62 +250,45 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Nka motsotswana o nahana ka ntho e o hlahetseng. Sheba hore na ha o ikutlwe ka tsela e fapaneng.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Mohato wa 1. Kwala mahlo mme o phefumolohele hodimo. \n\nMohato wa 2. Ipotse, \"Ke nahanang?\" Lemoha hore na maikutlo a hao a matle kapa a mabe.\nLemoha hore na o ikutlwa jwang botebong ba pelo. Hlokomela haeba maikutlo a hao a le matla kapa a se matle. Ikgopotse hore ho sa natswe hore na o ikutlwa jwang, ho lokile.\nHlokomela kamoo mmele wa hao o ikutlwang kateng. Hlokomela eng kapa eng e o utlwisang bohloko kapa e etsang hore o ikutlwe o tsitsipane.\n\nMohato wa 3. Ameha ka mohemo wa hao. Utlwa mohemo wa hao ha o moya o kena le ha o tswa. O ka beha letsoho mpeng mme o utlwe ha e kokomoha le ha e bohlela ha o hem. Etsa sena ka metsotso e ka bang 10.\n\nMohato wa 4. Eketsa tsebo ya hao ya mmele wohle wa hao. Mamela medumo e ka kamoreng. \n\nMohato wa 5. Ka nakwana nahana hore na o ikutlwa ka tsela e fapaneng ka tsela efe kapa efe. Ha o loketse, bula mahlo.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "O sebeditse ka ho Nka Kgefu. O ka etsa sena neng kapa neng ha o ikutlwa o imetswe. Seo se o fa monyetla wa ho kgoba matshwafo le ho feta. Esita le ho phefumoloha ka makgetlo a mmalwa kapa ho fumana kamano pakeng tsa hao le lefatshe leo o emeng hodima lona ho ka tlisa phapang e kgolo. Hape o ka Nka Kgefu le Bana ba hao!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Dulang fatshe, le kwale mahlo mme le mamele mohemo wa lona ha moya o tswa le ha o kena.\n\nLemohang kamoo le ikutlwang kateng.\n\nHa le itokisitse, bulang mahlo hape.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Leka sena neng kapa neng ha o ikutlwa o imetswe mme o hloka ho nka kgefu hore o iphumane.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Ema mme o ikotlollele matsoho nqa lehodimo. Sutumetsa maru afe kapa afe mme o tlohele letsatsi o tjhabele hodima hao. Ikotlollele ka mahlakoreng ka bobedi. Ikotlollele kapele le kamorao.\n\nTlohela matsoho a hao a lepelle ka mahlakoreng. Petetsa mahetla a hao ka thata ho ditsebe ha o hema ho hula moya, kwala mahlo a ntse a panyapanya, mme o tshware moya. Lokolla mahetla a hao ha o phutholla mmele wa hao.\n\nPhutholla diphaka tsa hao mme o tlohele diphaka di ye kwana le kwana ka mahlakoreng, mme o reteletse bokahodimo ba mmele wa hao. Diphaka tsa hao di lokela ho thetsa bokamorao habonolo ha o reteleha ho tloha lehlakoreng le leng ho ya ho le leng.\n\nBeha leoto kapela le leng mme o etse didikadikwe tse nyane ho tloha maqaqailaneng, hopola ho retelehela ka mahlakoreng ka bobedi. Etsa didikadikwe tse nne ka leoto ka leng o lebisa lehlakoreng ka leng.\n\nEbe o sisinya mmele wohle wa hao kapele kamoo o ka kgonang. O hlekehle o ya hodimo! O hlekehle o ya fatshe! O hlekehle ka mahlakoreng wohle!\n\nKwala mahlo mme o phahamise diphaka tsa hao butle hodima hlooho ya hao ha o hula moya. Theola diphaka tsa hao butle ka mahlakoreng ha o lokolla moya.\n\nKa nakwana nahana ka se o etsahalletseng.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "O entse hantle! O ka etsa sena neng kapa neng ha o utlwa eka o hloka ho fokotsa seterese le ho matlafatsa kelello le mmele wa hao.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Etsa letoto la diketso tse tlatsetsang bophelong bo botle tseo o ka thabelang ho di etsa. Tse ding tsa dikeletso ke tsena:\n* Ho mamela mmino oo o o ratang\n* Ho tsamaya e le ho thapolla maoto (haeba ho dumeletswe)\n* Ho etsa boikwetliso bo itseng\n* Ho nwa kopi ya tee o le mong\n* Ho letsetsa motswalle\n* Ho bina, ho tantsha, ho rapela, kapa ho bala\n* Ho ora letsatsi o kwetse mahlo\n* Ho shebella lananeo leo o le ratang la T.V.\n\nKgetha e le nngwe mme o e etse kajeno!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "Ha o itlhokomela, o hlokomela bana ba hao. Motho ke motho ka batho. Leka ho buisana le metswalle, ba lelapa le batho ba bang ba ka o tshehetsang letsatsi le letsatsi. Haeba o se o qetile nako o sa buisane le motho e mong, bua le yena hona jwale!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Nahana ka se o halefisang? Seo se etsahala neng? O itshwara jwang ka tlwaelo?\n\nThibela kgalefo ho tloha ha e qala. Robala kapa o phomole ha o kgathetse. Leka ho ja ho hong ha o lapile. Kopa motho e mong hore a o tshehetse ha o jewa ke bodutu.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Ho laola kgalefo ho ka ba thata e le ruri. Nka kgefu ha o ikutlwa o halefetse bana ba hao kapa motho e mong.\n\nLeba sebakeng se seng ka metsotso e 5 hore o boele o kgone ho laola maikutlo a hao. Haeba kantle ho sireletsehile, tsa mo hahlwa ke moya kantle. Boemo bona bo tla feta!", - "Customise your @global.parent_app": "Fetola @global.parent_app ya hao", - "These quick questions will fit this app to your needs.": "Dipotso tsena tse kgutshwanyane di tla tshwanela epo ena e buang ka ditlhoko tsa hao.", - "Let’s start with a few questions about you and your family.": "A re qale ka dipotso tse seng kae tse amanang le wena le lelapa la hao.", - "We would love to know your first name or nickname:": "Re lakatsa ho tseba lebitso kapa lebitso la hao la boswaswi pele:", - "Are you a woman or a man?": "Na o mosadi kapa o monna?", - "Woman": "Mosadi", - "Man": "Monna", - "How old are you?": "O dilemo di kae?", - "Adults": "Batho ba baholo", - "Teens": "Batjha", - "Children": "Bana", - "Babies": "Masea", - "How many people are in your household?": "Ho na le batho ba bakae ka palo lapeng la hao?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "O ka etsa @global.weekly_workshops o le mong KAPA o ka mema ditho tse ding tsa lelapa la hao kapa metswalle hore ba be le wena - ho na le dintho tse ngata tseo le tla di rutana. Ho ho wena!", - "How would you like to do your @global.weekly_workshops?": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops jwang?", - "Can you think of a name for your group?": "O nahana hore lebitso la sehlopha sa hao ekaba mang?", - "Which day of the week would you like to do your @global.weekly_workshops?": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops ka matsatsi afe a beke?", - "Monday": "Mantaha", - "Tuesday": "Labobedi", - "Wednesday": "Laboraro", - "Thursday": "Labone", - "Friday": "Labohlano", - "Saturday": "Moqebelo", - "Sunday": "Sontaha", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa sehlopha sa hao beke le beke. Sena se tla fa bohle monyetla wa ho leka seo ba ithutileng sona ha ba na le ba malapa a bona pele ba hahella tsebo e latelang.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa hao beke le beke. Sena se tla o dumella ho leka seo o ithutileng sona ha o na le ba lelapa la hao pele o hahella tsebo e latelang.", - "You can always change these settings in your @global.weekly_workshop_options.": "O ka fetola diseting tsena neng kapa neng ho @global.weekly_workshop_options ya hao.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Rea tseba hore ena ke ntho e thata. Re kentse tse ding tsa dikeletso tsa kamoo o ka qetang nako le motjha wa hao ka teng ho @data.parent_centre.my_tips.location_text, kahoo o ka di fumana hanghang. \n\nKaha @data.workshop.w_1on1.title e haha motheo wa dithulusi tsohle tse ding tsa botswadi, e tla ba wekshopo eo o tla e amohela bekeng e tlang ya global.weekly_workshop!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "O entse hantle! @global.weekly_workshop ya rona e latelang e tla o fa dikeletso tse ngata ntlheng ena, e le motheo wa dithulusi tse ding tsa botswadi. Empa o se o qadile ka leoto le letle!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ho sebedisa epo ena ho bontsha hore o tsotella motjha wa hao. Re kentse tse ding tsa dithulusi tsa bohlokwa tsa kamoo re sebedisa pabatso ho @data.parent_centre.my_tips.location_text ho fihlella dikeletso kapele.\n\nHo @data.workshop.w_praise.in_text_title ya rona o tla be o ithute dintho tse ngata mabapi le ho sebedisa tsebo ena.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "O etsa hantle hore ee o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. Ho @data.workshop.w_praise.in_text_title o tla ithuta haholo ka tsela ya ho sebedisa tsebo ya sebedisa tsebo ena hantle.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana le seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops - empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete! Ho laola seterese ke ntho e thata haholo. Re tshepa hore dithulusi tsa rona tsa ho laola seterese di tla o thusa. O se o ka fumana tse ding tlasa @data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Hase moo. Re na le wekshopo ya ho bajeta ha malapa e ka thusang ka seterese sa ditjhelete ka kakaretso, le ho fokotsa dikgang tse amanang le ditjhelete.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Seterese sa ditjhelete se boima.\n\nRe na le wekshopo ya ho etsa bajete ya lelapa ka dibeke tse hlano, empa o se o ka fihlella tse ding tsa dikeletso tsa bohlokwa tsa lelapa tlasa @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Rea leboha hore ebe o ipuetse nnete – mme re maswabi ho boima pakeng tsa hao le motjha wa hao. Ho itlhokomela le ho le thusa ho ikutlwa o theotse moya ha dintho di ba thata, letsatsi le letsatsi re tla le hopotsa ho theola moya, ho iphumana le ho iputsa. Le batho ba bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese beke ya 5 @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nRe tshepa hore dithulusi tsa rona tsa ho laola seterese di tla o thusa ho ikutlwa o theotse moya maemong a thata. O ka a fumana tlasa @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Ena ke ntho eo batswadi hohle ba amehileng ka yona. Re tla etsa bonnete ba hore o fumana tshehetso ya ho matlafatsa dipuisano.\n\nRe tla bua haholo ka ho hlophisa polokeho ya motjha wa hao hamorao ho @global.weekly_workshops, empa o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tsa ho sireletsa motjha wa hao ho @data.parent_centre.my_tips.location_text!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Ena ke ntho e ntle haholo. Ho thata ho ba motswadi, empa kannete o a atleha ntlheng ena.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! O ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tse itlhommeng pele tse tla o thusa ho etsa melao le ho hlophisa polokeho tlasa @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools le @data.workshop.w_safe.tools di kentswe ho @data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! O ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tse itlhommeng pele tse tla o thusa ho etsa melao tlasa @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools e kentswe ho @data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ha ho bonolo ho ba motswadi. O entse hantle ka ho ameha ka ho tiisa hore motjha wa hao o sireletsehile.\n\nRe tla fumana thuso e nngwe bakeng sa hao diwekshopong tse tla latelang ho @global.weekly_workshops haeba o ka thabela ho tseba le ho feta!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Dikateng tse hlahisitsweng ke dipotso tsena di se di fumaneha tlasa @data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "O sa tswa notlolla wekshopo ya pele!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Kwala mahlo a hao.\n\nA re sebedise matla a mohlolo a tharo ho iphumana le ho phutholoha.\n\nBolela medumo e meraro eo o e utlwang hona jwale.\nBolela menko e meraro eo o e fofonelang hona jwale.\nBolela dijo tse tharo tseo o di ratang.\n\nKe dintho dife tse tharo tseo o di lebohelang hona jwale? Ha ho hlokehe hore di be kgolo.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Qetellong ya letsatsi le boima, ho nahana ka dintho tse tharo tseo o di lebohelang ho ka re thusa ho ba sebete ho leka hape hosane.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Kwala mahlo mme o nahane ka letsatsi.\n\nBolela ntho e 1 eo o e lebohelang.\nBolela ntho e 1 eo o e entseng hantle.\nBolela ntho e 1 eo o e ratang.", + "Well done, you are a hero!": "O sebeditse, o mohale!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Kwala mahlo.\n\nSebedisa matla a mohlolo a tharo ho dula o le nako ebile o phutholohile.\n\nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3. \nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Na o ikutlwa ka tsela e fapaneng? Ho hemela hodimo ho thusa mmele wohle le kelello ho kgoba matshwafo.\n\nO kgalala!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Kwala mahlo.\n\nMamela mohemo wa hao ha moya o kena le ha o tswa ka makgetlo a mahlano.\n\nLemoha kamoo o ikutlwang kateng.", + "When you are ready open your eyes again. You are in control!": "Ha o se o lokile bula mahlo hape. Ha ho na se o hlotseng!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Kwala mahlo. \n\nNa bana ba hao ba kile ba etsa hore o ikutlwe eka o ka hweletsa? \n\nIphe kgefu ya metsotswana e 10. Hula moya mme o o lokolle butle ka makgetlo a 5. \n\nLeka ho arabela o kgobile matshwafo.", + "Millions of parents say this helps - A LOT.": "Batswadi ba dimilione ba re seo se a thusa - HAHOLO.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Kwala mahlo. \n\nEmisa ntho eo o e etsang ka motsotswana mme o amehe ka mohemo wa hao.   \n\nKe ntho efe e le nngwe eo o e lebohelang hona jwale?  \nKe ntho efe e le nngwe e o tlisetsang thabo?  \nKe ntho efe e le nngwe eo o e ratang?  \n\nHa ho hlokehe hore ebe ntho e kgolo. Ka dinako tse ding dintho tse nyane di bohlokwa haholo bophelong!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Sena ke seo o ka se etsang hore mmele wa hao o phutholohe:  \n\nDula moo o iketlileng mme o kwale mahlo haeba o kgona.  \nNahana ka reng ya kgauta e sekenang mmele wa hao ho tloha maotong ho ya hloohong.   \nEla hloko ha e ntse e nyolosa le ho theosa mmele wa hao. Na ho na le dikarolo tse utlwahalang di tsitsipane? Di shwele bohatsu? Di le bohloko?   \nAmeha ka dibaka tseo ka nakwana. Hula moya sebakeng seo mme ha o butswela moya, leka ho lokolla tsitsipano kapa bohloko.   \nEtsa sena ha o hema ka makgetlo a mmalwa.   \n\nBula mahlo. Hona jwale mmele wa hao o ikutlwa jwang?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "Hape o ka leka sena nakong e tlang ha o iphumana o paqame betheng mme o hlobaela!", + "Start": "Qala", + "Please sign in with your Google account to use the app.": "Ka kopo, kena ka ak'haonte ea hau ea Google ho tseba ho sebelisa sesebelisoa sena.", + "Sign in with Google": "Kena ka ak'haonte ea hau ea Google", + "Add this activity to @global.my_activities": "Kenya mosebetsi ona ho @global.my_activities", + "@global.parent_app funded by": "@global.parent_app e tshehelitsoe ke", + "Powered by Parenting for Lifelong Health and partners": "e tsamaisoa ke Parenting for Lifelong Health le balekane", + "Bringing teenagers up is hard": "Ho holisa bacha ho thata", + "You are the best parent your teen could have": "O motswadi ea molemo ka ho fetisisa eo mocha oa hao a ka bang le eena", + "Ideas from other families:": "Maikutlo a malapa a mang:", + "Customise @global.parent_app": "Fetola @global.parent_app ho dumellana le ditlhoko", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", + "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Hohle batswadi ba amehile haholo ka taba ena. Hopola ho sebedisa tsebo ya hao e ntjha ho tswela pele o qala tsela e ntle ya ho buisana le motjha wa hao.\n\nO ka ikgopotsa dikeletso tsa bohlokwa tsa ho lokisetsa polokeho ya batjha ba hao ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text!", + "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Hase moo. Haeba nakong e tlang ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", + "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Mathata a ditjhelete a ka imela motho. \n\nNeng kapa neng ha ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", + "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Hopola hore o ka fumana dikeletso le matlotlo a mangata a molemo ho @global.parent_centre - o ka kena ho yona neng kapa neng!", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ho ba motswadi hase ntho e bonolo. O entse hantle ka ho tsepamisa mohopolo tabeng ya ho tiisa hore motjha wa hao o sireletsehile. \n\nHopola, o ka fumana thuso e nngwe tabeng ena ho @data.workshop.w_safe.in_text_title neng kapa neng ha o e hloka!", "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Rea tseba hore ena ke ntho e thata. O ka ikgopotsa tse ding tsa dikeletso tse molemo tsa kamoo o ka qetang nako le motjha wa hao kateng ho @data.parent_centre.my_tips.location_text kapa o ka boela wa sheba @data.workshop.w_1on1.in_text_title.", "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "O entse hantle ka ho beha motheo o motle hakaalo! Kamehla o ka ikgopotsa @data.workshop.w_1on1.in_text_title ho fumana dikeletso tse ding tsa kamoo le ka qetang nako hammoho.", "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Ho sebedisa epo ho bontsha hore o tsotella motjha wa hao. O ka ikgopotsa tsela ya ho sebedisa pabatso ho @data.parent_centre.my_tips.location_text.\n\nHore o fumane dikeletso tse eketsehileng tsa ho sebedisa tsebo ena hantle, o ka boela wa sheba @data.workshop.w_praise.in_text_title.", @@ -1080,74 +296,67 @@ "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana la seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete. Ho laola seterese ekaba ntho e thata haholo. Kamehla o ka fumana dithulusi tse molemo tsa ho laola seterese tlasa @data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Hase moo. Haeba nakong e tlang ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Mathata a ditjhelete a ka imela motho. \n\nNeng kapa neng ha ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nRe tshepa hore dithulusi tsa rona tsa ho laola seterese di tla tswela pele ho o thusa ho ikutlwa o theotse moya maemong a thata. O ka a fumana tlasa @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Hohle batswadi ba amehile haholo ka taba ena. Hopola ho sebedisa tsebo ya hao e ntjha ho tswela pele o qala tsela e ntle ya ho buisana le motjha wa hao.\n\nO ka ikgopotsa dikeletso tsa bohlokwa tsa ho lokisetsa polokeho ya batjha ba hao ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena!\n\nHopola, o ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng. Hape o ka ikgopotsa dikeletso tsa bohlokwa tsa melao le ho hlophisa polokeho tlasa @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! Hopola, o ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o ka ikgopotsa dikeletso tsa bohlokwa tsa ho etsa melao melao tlasa @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ho ba motswadi hase ntho e bonolo. O entse hantle ka ho tsepamisa mohopolo tabeng ya ho tiisa hore motjha wa hao o sireletsehile. \n\nHopola, o ka fumana thuso e nngwe tabeng ena ho @data.workshop.w_safe.in_text_title neng kapa neng ha o e hloka!", - "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Hopola hore o ka fumana dikeletso le matlotlo a mangata a molemo ho @global.parent_centre - o ka kena ho yona neng kapa neng!", - "Are there teens in your family?": "Na ho na le batjha lapeng la hao?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Epo ena e amehile ka malapa a nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - o ka ithuta dintho tsa bohlokwa le bakeng sa lelapa la hao!", + "Customise for your needs": "E fetole bakeng sa ditlhoko tsa hao", + "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Batswadi bohle lefatsheng ba hula ka thata dinakong tseng tse boima. Dipotso tse latelang tse amanang le dintho tse o hlahetseng jwaloka motswadi di tla re thusa ho fumana thuso eo re e hlokang.\n\nTshepahala. Hopola hore ha o mong! Ho na le batswadi ba dimilione ba ikutlwang jwaloka wena, mme kaofela re tshwanelwa ke ho fuwa thuso.", + "Thank you for being honest": "Rea leboha ka hore o arabe ka botshepehi", + "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Ke ditaba tse monate hore ebe o arabela o kgobile matshwafo ha motjha wa hao a etsa ntho e halefisang. A ka ithuta dintho tse ngata ho wena!", + "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Ke hantle hore ebe o tseba seo motjha wa hao a se etsang. Ho thata ho ba motswadi, empa kannete o a atleha ho ba boloka ba sireletsehile.", + "You selected \"I would rather not answer\"": "O kgethile \"Ke kgetha ho se arabe\"", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Ho lokile!\n\nHopola, haeba o araba, karabo ya hao e tla bolokwa e le lekunutu ebile seo se tla re thusa ho o fa tlhahisoleseding e nepahetseng bakeng sa hao.", "Are there adults in your family?": "Na ho na le batho ba baholo lapeng la hao?", "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Epo ena e amehile ka batswadi ba nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - le wena o ka ithuta dintho tsa bohlokwa!", + "Are there teens in your family?": "Na ho na le batjha lapeng la hao?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Epo ena e amehile ka malapa a nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - o ka ithuta dintho tsa bohlokwa le bakeng sa lelapa la hao!", "Are you sure you want to skip this question?": "Na o tiile o batla ho feta potso ye?", "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Na o tiisitse o batla ho feta potso ye? Hopola, karabo ya hao e tla bolokwa e le lekunutu mme e tla re thusa ho utlwisisa ditlhoko tsa hao tsa botswadi.\n\nHape o ka kgetha ho se arabe potso efe kapa efe ka ho kgetha sedikadikwe.", - "You selected \"I would rather not answer\"": "O kgethile \"Ke kgetha ho se arabe\"", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Ho lokile!\n\nHopola, haeba o araba, karabo ya hao e tla bolokwa e le lekunutu ebile seo se tla re thusa ho o fa tlhahisoleseding e nepahetseng bakeng sa hao.", - "Customise for your needs": "E fetole bakeng sa ditlhoko tsa hao", - "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Batswadi bohle lefatsheng ba hula ka thata dinakong tseng tse boima. Dipotso tse latelang tse amanang le dintho tse o hlahetseng jwaloka motswadi di tla re thusa ho fumana thuso eo re e hlokang.\n\nTshepahala. Hopola hore ha o mong! Ho na le batswadi ba dimilione ba ikutlwang jwaloka wena, mme kaofela re tshwanelwa ke ho fuwa thuso.", - "It is hard to find time to have fun with your teenager.": "Ho thata ho fumana nako ya ho ithabisa le motjha wa hao.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgona ho tsepamisa kelello ya hao ho bona le ho etsa ntho eo ba e thabelang le bona?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_1on1.tools e kentswe ho @data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Bophelong ba rona bo maphathaphathe, ho thata ho tsepamisa kelello dinthong tse molemo.", - "How many days in the past week have you praised your teen?": "Ke ka matsatsi a make bekeng e fetileng o ileng wa babatsa motjha wa hao?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_praise.tools e kentswe ho @data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Ena ke nako e boima haholo ho malapa.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Bekeng e fetileng o qetile matsatsi a makae o ikutlwa o imetswe haholo jwaloka motswadi/mohlokomedi?", - "Sometimes our children make us really upset.": "Ka dinako tse ding bana ba rona ba re halefisa haholo.", - "How many days in the past week did you shout, scream or yell at your teen?": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa tleroha, wa tjodietsa kapa wa kgaruma motjha wa hao?", "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "O entse hantle. Saense ya boko e bontsha hore ho laola kgalefo ho ntlafatsa kgolo ya boko ba batjha. Ikotle sefuba ka wena.", - "Money is one of the biggest stresses for families now.": "Tjhelete ke e nngwe ya dintho tse kgolo ka ho fetisisa tse bakelang malapa seterese kajeno.", - "How many days in the past week have you worried or felt anxious about money?": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa ikutlwa o tshwenyehile kapa o kgathatsehile ka tjhelete?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Kgweding e fetileng (matsatsing a 30), ke ka matsatsi a makae o ileng wa fellwa ke tjhelete ya ho lefella dijo?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_money.tools e kentswe ho @data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Bana ba itshwarang hampe ba baka seterese se sengata.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgalemela bana ba hao ka hore o ba otle, o ba shape, kapa o ba jabele ka mpama kapa ka ntho e kang thupa kapa lebanta?", - "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Ke ditaba tse monate hore ebe o arabela o kgobile matshwafo ha motjha wa hao a etsa ntho e halefisang. A ka ithuta dintho tse ngata ho wena!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_stress.tools e ekeditse ho @data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Ho thata ho latella batjha ba rona ha ba fumana bolokolohi ba ho iketsetsa dintho.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Bekeng e fetileng ke ka matsatsi a makae o neng o tseba seo motjha wa hao a se etsang le hore na o na le bomang?", - "This is good to hear.": "Tseo ke ditaba tse monate.", - "Were you in lockdown this week?": "Na o qetile beke ena o le ho lockdown?", - "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Ke hantle hore ebe o tseba seo motjha wa hao a se etsang. Ho thata ho ba motswadi, empa kannete o a atleha ho ba boloka ba sireletsehile.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Ke matsatsi a makae a beke eo ka tlwaelo eseng ya lockdown o tsebang hore na motjha wa hao o ntse a etsang le hore na o na le bomang?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_safe.tools e kentswe ho @data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Kaofela re batla ho tiisa hore bana ba rona ba sireletsehile.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "O qetile matsatsi a makae kgweding (matsatsi a 30) e fetileng o buisana le motjha wa hao ka ho itshireletsa kgahlanong le tlhekefetso ka thobalano inthaneteng kapa ha a se inthaneteng?", - "This could be when they are going out with friends, or talking about the websites they use.": "Ekaba ha a intsha le metswalle kapa ho qoqa ka diwebosaete tseo a di sebedisang.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Jwale re na le phephetso e ntjha – ya ho sireletsa batjha ba rona kgahlanong le COVID-19.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Ke ka matsatsi a makae bekeng e fetileng moo motjha wa hao a ileng a dula a sireletsehile ka ho rwala maske, ka ho se atamellane le batho ba bang le ka tsamaella hole le dibaka tse nang le batho ba bangata?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "Ho ka ba thata ho sireletsa motjha wa hao kgahlanong le COVID! Re ntse re kopanya dikeletso - tseo haufinyane o tla kgona ho di fumana ho @global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Tseo ke ditaba tse monate. Re ntse re kopanya dikeletso tse tla thusa motjha wa hao hore a itshireletse kgahlanong le COVID - tseo haufinyane o tla kgona ho di fumana ho @global.parent_centre.", - "Thank you for being honest": "Rea leboha ka hore o arabe ka botshepehi", - "CHAT": "QOQA", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Hlalosa kamoo u ikutloang kateng, 'me u khothalletse mocha oa hao hore a bue ka lintho tse mo tshoenyang. Le tla utloisisana hamolemonyana ’me le ka etsa moralo o motle hammoho hore le lule le phetse hantle ’me le thabile!", - "CAUTION": "TLHOKOMEDISO", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Fumana lintlha tsa hau mehloling e tšepahalang ea tlhahisoleseling, e le hore u ka ba le kholiseho linakong tsena tse sa tsitsang. Re utloa le ho bona litaba tse ngata ka batho ba bang le mehala, TV, le inthanete. Na e etsa hore u ikutloe u belaela, matshoenyeho, tshabo, khalefo, kapa pherekano? Sheba pele o arolelana kapa o nka khato!", - "CHOOSE": "KHETHA", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Ho etsa liqeto tse nepahetseng tse bolokang batho ba phetse hantle ebile ba sireletsehile ho ka ba thata. Haholo-holo linakong tsena! U ka thusa ngoana oa hao ea lilemong tsa bocha ho etsa liqeto tse nepahetseng.", - "CHILL": "PHOMOLA", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Kaofela re ikutloa re imetsoe kelellong ka linako tse ling. Nka moea o tebileng kapa le etse ntho e monate hammoho. Ho ka etsa phapang e kholo ho etsa hore lehae la hau le thabe hape le be le khotso! Mehopolo e meng eo u ka e lekang ke ena:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Menahano e fosahetseng e etsa hore re bue hape re etse lintho tse mpe. Leka ho fetola seo o se nahanang le ho se buang ho tloha ho lintho tse mpe ho ya ho tse ntle!", - "A teen sometimes does something because they:": "Ka linako tse ling mocha o etsa ho hong hobane o:", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Mamela metsoalle ea bona\n- Batla ho etsa seo ba bang ba se etsang\n- Nahana haholo ka 'hona joale' ho feta 'hamorao'\n- Litšusumetso tsa lerato 'me u ka fumana ho ba hlokolosi ho tena\n- Se ke oa tšoenyeha ka kotsi - e kanna ea rata likotsi\n- E-ba le boiphihlelo bo fokolang boo u ka itšetlehang ka bona\n- Ba ikemiselitse ho leka ho hong - ho sa tsotelehe se etsahalang", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Ho ka thusa ho hopola sena ha ngoana oa hao a etsa qeto e fosahetseng. Buisana le bona ’me le qete nako le le ’moho hore le tle le ba thuse ho khetha hamolemo nakong e tlang!", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", + "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Ena ke ntho eo batswadi hohle ba amehileng ka yona. Re tla etsa bonnete ba hore o fumana tshehetso ya ho matlafatsa dipuisano.\n\nRe tla bua haholo ka ho hlophisa polokeho ya motjha wa hao hamorao ho @global.weekly_workshops, empa o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tsa ho sireletsa motjha wa hao ho @data.parent_centre.my_tips.location_text!", + "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Hase moo. Re na le wekshopo ya ho bajeta ha malapa e ka thusang ka seterese sa ditjhelete ka kakaretso, le ho fokotsa dikgang tse amanang le ditjhelete.", + "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Seterese sa ditjhelete se boima.\n\nRe na le wekshopo ya ho etsa bajete ya lelapa ka dibeke tse hlano, empa o se o ka fihlella tse ding tsa dikeletso tsa bohlokwa tsa lelapa tlasa @data.parent_centre.my_tips.location_text!", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Dikateng tse hlahisitsweng ke dipotso tsena di se di fumaneha tlasa @data.parent_centre.my_tips.location_text.", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ha ho bonolo ho ba motswadi. O entse hantle ka ho ameha ka ho tiisa hore motjha wa hao o sireletsehile.\n\nRe tla fumana thuso e nngwe bakeng sa hao diwekshopong tse tla latelang ho @global.weekly_workshops haeba o ka thabela ho tseba le ho feta!", + "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Rea tseba hore ena ke ntho e thata. Re kentse tse ding tsa dikeletso tsa kamoo o ka qetang nako le motjha wa hao ka teng ho @data.parent_centre.my_tips.location_text, kahoo o ka di fumana hanghang. \n\nKaha @data.workshop.w_1on1.title e haha motheo wa dithulusi tsohle tse ding tsa botswadi, e tla ba wekshopo eo o tla e amohela bekeng e tlang ya global.weekly_workshop!", + "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "O entse hantle! @global.weekly_workshop ya rona e latelang e tla o fa dikeletso tse ngata ntlheng ena, e le motheo wa dithulusi tse ding tsa botswadi. Empa o se o qadile ka leoto le letle!", + "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ho sebedisa epo ena ho bontsha hore o tsotella motjha wa hao. Re kentse tse ding tsa dithulusi tsa bohlokwa tsa kamoo re sebedisa pabatso ho @data.parent_centre.my_tips.location_text ho fihlella dikeletso kapele.\n\nHo @data.workshop.w_praise.in_text_title ya rona o tla be o ithute dintho tse ngata mabapi le ho sebedisa tsebo ena.", + "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "O etsa hantle hore ee o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. Ho @data.workshop.w_praise.in_text_title o tla ithuta haholo ka tsela ya ho sebedisa tsebo ya sebedisa tsebo ena hantle.", + "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana le seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops - empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle!", + "Talk Together": "Buisanang", + "Share ideas, support each other!": "Eletsanang, tshehetsanang!", + "Think Together": "Nahanang Hammoho", + "It's time to think together!": "Ke nako ya ho nahana hammoho!", + "Think": "Nahana", + "It's time to think!": "Ke nako ya ho nahana!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Tsebo eo o lokelang ho ba le yona bekeng ena ke ena!\n\nE sebedise lapeng mme o e fumane neng kapa neng ho @global.parent_centre.", + "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Nka moea o tebileng.\n2. Bona hore na litaba tseo lia utloahala.\n3. Botsa hore na ba fumane litaba hokae.\n4. Sheba hape le batho ba bang / mehloli eo u e tshepang.\n5. Nahana hore na litaba tsena li ka thusa kapa tsa tshosa batho feela ha u li arolelana.", + "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Ka linako tse ling kaofela re batla ho bolella bacha ba rona \"U tlameha ho etsa sena, kapa ho seng joalo... mathata!\", empa hangata ha e ba etse hore ba latele melao hantle.\n\nHo e-na le hoo, u ka thusa ngoan'a hao ho etsa liqeto tse ntle ka ho bontsa hore ua mo tshepa le ho bua le eena:", + "DISCUSS CONSEQUENCES": "BUISANA KA LIPHELLO", + "Ask \"If you do this, what could happen?\"": "Botsa hore \"na ha o ka etsa sena, ho ka etsahalang?\"", + "If something goes well, praise your teen!": "Haeba ho nale ntho e tsamayang hantle, babatsa mocha oa hau!", + "REFLECT TOGETHER": "NAHANANG HAMMOHO", + "If something goes wrong, ask \"How could you have done that differently?\"": "Ha ho nale ho phoso, botsa hore \"na u ka be u entse seo joang ka tsela e fapaneng\"", + "START SMALL": "QALA HANYENYANA", + "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Neha mocha oa hao boikarabelo bo bonyenyane pele. Ha seo se tsamaea hantle, u ka eketsa tse ling ho bontsha hore u tshepa mocha oa hao.", + "MAKE TIME": "ETSA NAKO", + "Set aside time to have a conversation without distractions.": "Etsa nako ea ho ba le li puisano ntle le litshitiso.", + "Ask your teen questions and let them share their views without interrupting.": "Botsa mocha oa hao lipotso, ebile o mo lumelle hore a bollele ka maikutlo kapa menahano ea hae ntle le ho mo sitisa.", + "WORK TOGETHER": "SEBETSANG MMOHO", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Buisanang ka bothata bo itseng, le fumane tharollo hammoho, ’me ka bobeli le etse seo le lumellanang ka sona.", + "PRAISE": "BABATSA", + "Thank your teen for sharing and highlight how it is helping you both.": "Leboha mocha oa hau ka ho arolelana maikutlo hape le ho totobatsa hore kamoo e le thusa joang ka bobeli.", + "Hear a caregiver's testimonial": "Mamela bopaki ba mohlokomeli", + "Read a caregiver's testimonial": "Bala bopaki ba mohlokomedi", + "Why @local.workshop_data.title?": "Hobaneng @local.workshop_data.title?", + "Hear @global.topic_intro_name's message": "Molaetsa wa @global.topic_intro_name ke ona", + "Read @global.topic_intro_name's message": "Bala molaetsa wa @global.topic_intro_name", + "Today's steps": "Mehato ya kajeno", + "Try it Together": "E Lekeng Hammoho", + "Let's practice together.": "A re prakthiseng hammoho.", + "What does that mean?": "Na seo se bolelang?", + "How can you help?": "u ka thusa joang?", "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Ho utloisisa hore na ngoana oa hao o ikutloa joang le hore na u ka mo tshehetsa joang ho etsa phapang e khōlō ho lōna ka bobeli! Hlokomela ngoana oa hao ea lilemong tsa bocha ’me u mo botse hore na o ikutloa joang. Tobetsa sefahlehong se ka tlase ho tseba haholoanyane:", "Hopeful": "Tshepo", "Resilient": "O matla", @@ -1169,69 +378,71 @@ "Self-harm": "Ho itematsa", "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Ho hlonama kapa ho nyahama, ho ba boemong bo bobe, kaofela ke maikutlo a tloaelehileng a batho. Khatello ea maikutlo ke ha e tsoela pele ka nako e telele 'me mesebetsi e tloaelehileng ea letsatsi le letsatsi ea mocha e ameha. Ngoana oa hau a ka ikutloa a se na tshepo 'me a sitoa kapa a sa susumelletsehe ho fetola letho.", "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Ho bolella ngoana oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Leka ho fumana thuso ea litsebi.", - "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Ka linako tse ling bacha ba ka intsha kotsi ka boomo ho sebetsana le maikutlo a nyahamisang a kang khalefo, molato, lefeela, kapa ho itlhoea. Sena se ka bakoa ke ho tshoenyeha kapa ho tepella maikutlong.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ho bolella mocha oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Haeba mocha oa hao a ikemiselitse ho hlalosa kamoo ho intsha kotsi ho etsang hore a ikutloe a le betere, u ka qala ho utloisisa mabaka. Leka ho fumana.", - "What does that mean?": "Na seo se bolelang?", - "How can you help?": "u ka thusa joang?", - "We all have negative thoughts sometimes.": "Ka li nako tse ling, rona bohle re nale ho ba le menahano e mebe.", - "\"I am a failure\"": "\"Ke mo hlolehi\"", - "What to do?": "Ke eng se o lokelang ho se etsa?", - "Examples": "Mehlala", - "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ho bolella uena kapa ngoana oa hao hore u khaotse kapa u bue se fapaneng le seo hangata ha ho thuse.", - "\"I do everything perfectly\"": "\"Ke etsa tsohle ka botlalo\"", - "Instead, you can ask:": "ka tsela enngoe, o ka botsa:", - "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "-Na mohopolo oo ke oa sebele? Litlhaloso tse ling ke life?\n- Ho etsahala'ng haeba ke tsoela pele ho lumela mohopolo ona?\n - Ke ke tla re'ng ho motsoalle haeba a ne a e-na le mohopolo ona?", - "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "Sena se boima, empa o leka kahohle kamoo o ka khonang, 'me re tla sebetsa 'moho ho fumana tharollo\"", - "\"It’s your fault\"": "\"Ke molato oa hau\"", - "\"Let’s come up with a solution together\"": "\"Ha re tle ka tharollo 'moho\"", - "\"I lost my job\"": "\"Ke lahlehetsoe ke mosebetsi\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Ke ithutile ho hongata mosebetsing oa ka - seo se tla nthusa ho fumana o mong\"", - "\"Nobody likes me\"": "\"Ha ho motho ea nthatang\"", - "\"Last week I did have a great time with...\"": "\"Bekeng e fetileng ke bile le nako e monate le...\"", - "\"Bad things always happen to me\"": "\"Li ntho tse mpe li lula li nketsahalla kamehla\"", - "\"This good thing happened the other day...\"": "\"Ntho ena e ntle e etsahetse ka letsatsi le leng le fetileng...\"", - "Change": "Phetoho", - "MAKE TIME": "ETSA NAKO", - "Set aside time to have a conversation without distractions.": "Etsa nako ea ho ba le li puisano ntle le litshitiso.", - "LISTEN": "MAMELA", - "Ask your teen questions and let them share their views without interrupting.": "Botsa mocha oa hao lipotso, ebile o mo lumelle hore a bollele ka maikutlo kapa menahano ea hae ntle le ho mo sitisa.", - "WORK TOGETHER": "SEBETSANG MMOHO", - "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Buisanang ka bothata bo itseng, le fumane tharollo hammoho, ’me ka bobeli le etse seo le lumellanang ka sona.", - "Thank your teen for sharing and highlight how it is helping you both.": "Leboha mocha oa hau ka ho arolelana maikutlo hape le ho totobatsa hore kamoo e le thusa joang ka bobeli.", - "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Nka moea o tebileng.\n2. Bona hore na litaba tseo lia utloahala.\n3. Botsa hore na ba fumane litaba hokae.\n4. Sheba hape le batho ba bang / mehloli eo u e tshepang.\n5. Nahana hore na litaba tsena li ka thusa kapa tsa tshosa batho feela ha u li arolelana.", - "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Ka linako tse ling kaofela re batla ho bolella bacha ba rona \"U tlameha ho etsa sena, kapa ho seng joalo... mathata!\", empa hangata ha e ba etse hore ba latele melao hantle.\n\nHo e-na le hoo, u ka thusa ngoan'a hao ho etsa liqeto tse ntle ka ho bontsa hore ua mo tshepa le ho bua le eena:", - "DISCUSS CONSEQUENCES": "BUISANA KA LIPHELLO", - "Ask \"If you do this, what could happen?\"": "Botsa hore \"na ha o ka etsa sena, ho ka etsahalang?\"", - "PRAISE": "BABATSA", - "If something goes well, praise your teen!": "Haeba ho nale ntho e tsamayang hantle, babatsa mocha oa hau!", - "REFLECT TOGETHER": "NAHANANG HAMMOHO", - "If something goes wrong, ask \"How could you have done that differently?\"": "Ha ho nale ho phoso, botsa hore \"na u ka be u entse seo joang ka tsela e fapaneng\"", - "START SMALL": "QALA HANYENYANA", - "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Neha mocha oa hao boikarabelo bo bonyenyane pele. Ha seo se tsamaea hantle, u ka eketsa tse ling ho bontsha hore u tshepa mocha oa hao.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao. Re lemohile hore o ile wa tobetsa @data.habit.spend_time.in_text_title - o entse mosebetsi o motle ka ho hopola!", - "Your goal was to spend one-on-one time with your teen.": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "O sebeditse ka ho fumana ditharollo tsa diphephetso tsa hao. Ako yo di leka. Kamano ya hao le motjha wa hao e tla tswela pele ho ba matla!", - "DAY – Do it every day": "LETSATSI – E etse letsatsi le letsatsi", - "PLAY – Let your teen choose the activity": "BAPALA – Tlohella motjha wa hao a kgethe ntho eo le ka e etsang", - "STAY – Give your teen all of your attention": "DULA – O fe motjha wa hao nako yohle ya hao", - "Why was this tip helpful for you?": "Ke hobaneng ha keletso ena e o thusitse?", - "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" e ntswetse molemo hobane...", - "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" e ntswetse molemo hobane...", - "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" e ntswetse molemo hobane...", - "Having a specific time to do this helps me to remember.": "Ho ba le nako e tobileng ya ho etsa sena ho nthusa ho hopola.", - "With a routine, my teen and I can both keep our schedule free.": "Ka lenaneo, nna le motjha wa ka re kgona ho tiisa hore ha re na ntho e kenakenanang le nako ya rona.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Ho qeta nako le motjha wa ka letsatsi le letsatsi ho thusa ho haha dikamano tsa ho tshepana le yena/bona.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ehlile ho jwalo, le ho qeta metsotso e 10 mmoho ho tlisa phapang e kgolo – seo se etsa hore ho be bonolo ho e hlophisa, hore ebe haufi le mosebetsi wa hao le mesebetsi ya lapeng!", - "Letting my teen choose what to do builds their confidence.": "Ho tlohella motjha wa ka ho kgetha seo a ka se etsang ho matlafatsa boitshepo ba hae.", - "If my teen chooses, s/he is more likely to want to spend time together.": "Haeba motjha wa ka a kgetha, ho ka etsahala hore a batle hore re qete nako e ngata mmoho.", - "Letting my teen choose shows that I care about his/her interests.": "Ho tlohella motjha wa ka ho ikgethela ho bontsha hore ke tsotella dintho tseo a di thahasellang.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ka ho amohela ditshisinyo tsa motjha wa ka, ke bontsha hore ke ya mo mamela.", - "Saying something nice about my teen’s choice helps them feel valued.": "Ho bua ntho e ntle ka ntho eo motjha wa ka a e kgethang ho mo bontsha hore ke mo nka e le wa bohlokwa.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Ka sebele ke nnete! Mme ha batjha ba rona ba kgetha, ba kgothalletswa ho jara le boikarabelo dikarolong tse ding tsa bophelo ba bona.", - "By preventing interruptions, I show my teen that s/he is most important.": "Ka ho thibela ditshitiso, ke bontsha hore motjha wa ka o bohlokwa haholo.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Esita le haeba nke ke ka etsa ketso e itseng le motjha, jwaloka dipapadi, ke ntse nka mo thoholetsa.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Ha ke ela hloko motjha wa ka, nka ithuta dintho tse ngata ka dithahasello, maikutlo le bokgoni ba motjha wa ka.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "E! Ha re tsepamisa mehopolo ya rona ho batjha ba rona, ho na le monyetla o moholo wa hore ba etse se tshwanang ho rona kamoso ha re ba kopa ntho e itseng!", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Ka linako tse ling bacha ba ka intsha kotsi ka boomo ho sebetsana le maikutlo a nyahamisang a kang khalefo, molato, lefeela, kapa ho itlhoea. Sena se ka bakoa ke ho tshoenyeha kapa ho tepella maikutlong.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ho bolella mocha oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Haeba mocha oa hao a ikemiselitse ho hlalosa kamoo ho intsha kotsi ho etsang hore a ikutloe a le betere, u ka qala ho utloisisa mabaka. Leka ho fumana.", + "A teen sometimes does something because they:": "Ka linako tse ling mocha o etsa ho hong hobane o:", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Mamela metsoalle ea bona\n- Batla ho etsa seo ba bang ba se etsang\n- Nahana haholo ka 'hona joale' ho feta 'hamorao'\n- Litšusumetso tsa lerato 'me u ka fumana ho ba hlokolosi ho tena\n- Se ke oa tšoenyeha ka kotsi - e kanna ea rata likotsi\n- E-ba le boiphihlelo bo fokolang boo u ka itšetlehang ka bona\n- Ba ikemiselitse ho leka ho hong - ho sa tsotelehe se etsahalang", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Ho ka thusa ho hopola sena ha ngoana oa hao a etsa qeto e fosahetseng. Buisana le bona ’me le qete nako le le ’moho hore le tle le ba thuse ho khetha hamolemo nakong e tlang!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "O ka nna wa kopuwa ho romela khoutu ena ho batho ba tla o tshehetsa leetong la hao la @global.parent_app.", + "Last sync at: @local.sync_latest": "Lekgetlo la ho qetela la ho phera: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Sesebediswa sena ha se eso pherwe. Phera ho senola khoutu ya hao.", + "Sync now": "Phera hona jwale", + "Syncing...": "E a phera...", + "Watch Together": "E Shebelleng Mmoho", + "Let's watch a video together!": "A re shebelle video mmoho!", + "Watch": "Shebella", + "Let's watch a video!": "A re shebelle video!", + "Options": "Dikgetho", + "Welcome @fields.user_name": "Rea o amohela @fields.user_name", + "It's great to see you again!": "Re thabela ho o bona hape!", + "Welcome @fields.group_name": "Rea o amohela @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Re thabela ho o bona hape! A re qale ka pina e binwang ke malapa hohle.", + "Let's Slow Down": "A re Theole Moya", + "How would you like to do this workshop?": "O ka thabela ho etsa wekshopo ena jwang?", + "Coming soon": "E tla haufinyane", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Re tla tlameha ho tshohla ditaba tse ding tsa botswadi pele re qala ho sebetsa ka @local.workshop_data.title.\n\nO ka fumana dithulusi tsa bohlokwa ho @local.workshop_data.title ka @global.parent_centre.", + "My name": "Lebitso la ka", + "@global.weekly_workshop day": "Letsatsi la @global.weekly_workshop", + "I do the workshops...": "Ke etsa diwekshopo...", + "My group's name": "Lebitso la sehlopha sa ka", + "My group is now doing the workshop...": "Hona jwale sehlopha sa ka se etsa wekshopo...", + "I am now doing the workshop...": "Hona jwale ke etsa wekshopo...", + "These quick questions will fit this app to your needs.": "Dipotso tsena tse kgutshwanyane di tla tshwanela epo ena e buang ka ditlhoko tsa hao.", + "Let’s start with a few questions about you and your family.": "A re qale ka dipotso tse seng kae tse amanang le wena le lelapa la hao.", + "We would love to know your first name or nickname:": "Re lakatsa ho tseba lebitso kapa lebitso la hao la boswaswi pele:", + "Are you a woman or a man?": "Na o mosadi kapa o monna?", + "Woman": "Mosadi", + "Man": "Monna", + "How old are you?": "O dilemo di kae?", + "Adults": "Batho ba baholo", + "Teens": "Batjha", + "Children": "Bana", + "Babies": "Masea", + "How many people are in your household?": "Ho na le batho ba bakae ka palo lapeng la hao?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "O ka etsa @global.weekly_workshops o le mong KAPA o ka mema ditho tse ding tsa lelapa la hao kapa metswalle hore ba be le wena - ho na le dintho tse ngata tseo le tla di rutana. Ho ho wena!", + "How would you like to do your @global.weekly_workshops?": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops jwang?", + "Can you think of a name for your group?": "O nahana hore lebitso la sehlopha sa hao ekaba mang?", + "Which day of the week would you like to do your @global.weekly_workshops?": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops ka matsatsi afe a beke?", + "Monday": "Mantaha", + "Tuesday": "Labobedi", + "Wednesday": "Laboraro", + "Thursday": "Labone", + "Friday": "Labohlano", + "Saturday": "Moqebelo", + "Sunday": "Sontaha", + "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa sehlopha sa hao beke le beke. Sena se tla fa bohle monyetla wa ho leka seo ba ithutileng sona ha ba na le ba malapa a bona pele ba hahella tsebo e latelang.", + "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa hao beke le beke. Sena se tla o dumella ho leka seo o ithutileng sona ha o na le ba lelapa la hao pele o hahella tsebo e latelang.", + "You can always change these settings in your @global.weekly_workshop_options.": "O ka fetola diseting tsena neng kapa neng ho @global.weekly_workshop_options ya hao.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Na o tiile o batla ho notlolla diwekshopo tsohle? Hang ha o entse jwalo, o ke ke wa kgona ho di notlela hape", + "Unlock Workshops": "Notlolla Diwekshopo", + "Using the app together": "Ho sebedisa epo mmoho", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Ke thabela ho o bona!\n\nE re re qale ka ho thusa sehlopha sa hao hore se qalelle.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Dumellanang ka melao ya motheo mmoho:\n* Re tla kopana ka (ma)letsatsi/(di)nako efe bekeng?\n* Ke mang ya tla tshwara (di)founo ha e lla nakong ya tshebetso ya rona?\n* Re ka etsang ho tiisa hore bohle ba kenella ka bolokolohi?\n* Kaofela re ka etsang hore re ikutlwe re hlomphuwe?", + "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "O ka fetola matsatsi a hao a wekshopo le lebitso la sehlopha sa hao neng kapa neng ho @global.weekly_workshop_options.", + "Some rules that other groups made:": "Melao e meng eo dihlopha tse ding di e entseng:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Labobedi ka 7 mantsiboya ke nako ya hore re be mmoho ho @global.parent_app\n* Tjhentjhanang ka hore na ke mang ya tshwarang mohala (motho ka mong o etsa ketso e 1)\n* Amohelang dintho tseo kaofela di le hlahetseng. Kaofela ha re tshwane!\n* Tjhentjhanang ka ho bua le ho mamelana\n* Dipotso tsohle dia amohelwa\n* Seo re buang ka sona se fella hara rona", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Qeta metsotso e 5-20 ya nako ya boinotshing le motjha wa hao, o ka etsa seo letsatsi le letsatsi bekeng ena.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Hopola - neng kapa neng ha o kgona, phomola, iphumane mme o iputse.\n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Batswadi ba bangata ba tobana le diphephetso tsa ho qeta nako ya boinotshing le batjha ba bona.\n\nTsena ke diphephetso tse 8 tse ka sehloohong tseo batswadi ba itseng ba tobanang le tsona ha ba hlophisa kapa ba qeta nako ya boinotshing le batjha ba bona. Haeba o tobana le e nngwe ya tsena kapa o tshaba hore o ka tobana le yona, e tobetse ho fumana tharollo e ka nnang ya sebetsa. O ka tobetsa mme wa ithuta ka diphephetso tse ding kamora moo.", "Did you have any challenges when trying to spend time with your teen?": "Na o bile le diphephetso dife kapa dife ha o leka ho qeta nako le motjha wa hao?", "What challenge did you have when trying to spend time with your teen?": "Ke phephetso efe eo o bileng le yona ha o leka ho qeta nako le motjha wa hao?", @@ -1287,16 +498,257 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Hase moo! Ka tsela ena, o ka mamela motjha wa hao o sa sitiswe ke letho, hore a ikutlwe hore ke motho wa bohlokwa ya ratwang.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Ke taba tse monate! O ka leka ho qeta nako le motjha wa hao ha bana ba bang ba se ba ilo robala, kapa ha ba ntse ba bapala kantle.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Hase moo! Mohlomong le ka tsamaya mmoho ho ya dishopong kapa la shebella dipapadi mmoho, e le hore le ka qoqa ntle le ho ba le bana ba bang ba tla batla tlhokomelo ba le siyo.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSE MOLEMO le TSE TOBILENG.  Re ile ra lemoha hore o tobeditse @data.habit.instruct_positively.in_text_title - o sebeditse ka hore o hopole!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSA KETSO EO A LOKELANG HO E ETSA le TSE TOBILENG.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Rea leboha ka hore o re phetele taba eo! O entse hantle ka ho fa motjha wa hao ditaelo tsa ketso e lokelang ho etswa le ho haha kamano e ntle le motjha wa hao.\n\nWena hammoho le motjha wa hao le tshwanelwa ke pabatso!", - "Which of the tips helped you?": "Ke efe ya dikeletso tsena e le thusitseng?", - "GET REAL – Can your teen do what you are about to ask?": "NAHANA HANTLE – Na motjha wa hao a ka etsa seo o nahanang ho mo kopa sona?", - "GET POSITIVE – Use positive words and praise them!": "KGOTHATSA – Sebedisa mantswe a kgothatsang le ho mo babatsa!", - "GET CLEAR – Be clear and specific!": "ITLHAKISE – Bua ka tsela e hlakileng le e tobileng!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Ke eo taba! Ha re kopa motjha wa rona ho etsa ntho e utlwahalang, ho bonolo hore a atlehe.", - "When we praise them, our teens feel encouraged to listen to us again!": "Ha re babatsa batjha ba rona, ba ikutlwa ba kgothaditswe hore ba re mamele hape!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Hase moo! Ha re nahana esale pele ka ditaelo tse tobileng tseo re di fang motja wa rona, ho ba bonolo haholo ho latela ditaelo tsa rona!", + "DAY – Do it every day": "LETSATSI – E etse letsatsi le letsatsi", + "PLAY – Let your teen choose the activity": "BAPALA – Tlohella motjha wa hao a kgethe ntho eo le ka e etsang", + "STAY – Give your teen all of your attention": "DULA – O fe motjha wa hao nako yohle ya hao", + "Why was this tip helpful for you?": "Ke hobaneng ha keletso ena e o thusitse?", + "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" e ntswetse molemo hobane...", + "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" e ntswetse molemo hobane...", + "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" e ntswetse molemo hobane...", + "Having a specific time to do this helps me to remember.": "Ho ba le nako e tobileng ya ho etsa sena ho nthusa ho hopola.", + "With a routine, my teen and I can both keep our schedule free.": "Ka lenaneo, nna le motjha wa ka re kgona ho tiisa hore ha re na ntho e kenakenanang le nako ya rona.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Ho qeta nako le motjha wa ka letsatsi le letsatsi ho thusa ho haha dikamano tsa ho tshepana le yena/bona.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ehlile ho jwalo, le ho qeta metsotso e 10 mmoho ho tlisa phapang e kgolo – seo se etsa hore ho be bonolo ho e hlophisa, hore ebe haufi le mosebetsi wa hao le mesebetsi ya lapeng!", + "Letting my teen choose what to do builds their confidence.": "Ho tlohella motjha wa ka ho kgetha seo a ka se etsang ho matlafatsa boitshepo ba hae.", + "If my teen chooses, s/he is more likely to want to spend time together.": "Haeba motjha wa ka a kgetha, ho ka etsahala hore a batle hore re qete nako e ngata mmoho.", + "Letting my teen choose shows that I care about his/her interests.": "Ho tlohella motjha wa ka ho ikgethela ho bontsha hore ke tsotella dintho tseo a di thahasellang.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ka ho amohela ditshisinyo tsa motjha wa ka, ke bontsha hore ke ya mo mamela.", + "Saying something nice about my teen’s choice helps them feel valued.": "Ho bua ntho e ntle ka ntho eo motjha wa ka a e kgethang ho mo bontsha hore ke mo nka e le wa bohlokwa.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Ka sebele ke nnete! Mme ha batjha ba rona ba kgetha, ba kgothalletswa ho jara le boikarabelo dikarolong tse ding tsa bophelo ba bona.", + "By preventing interruptions, I show my teen that s/he is most important.": "Ka ho thibela ditshitiso, ke bontsha hore motjha wa ka o bohlokwa haholo.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Esita le haeba nke ke ka etsa ketso e itseng le motjha, jwaloka dipapadi, ke ntse nka mo thoholetsa.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Ha ke ela hloko motjha wa ka, nka ithuta dintho tse ngata ka dithahasello, maikutlo le bokgoni ba motjha wa ka.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "E! Ha re tsepamisa mehopolo ya rona ho batjha ba rona, ho na le monyetla o moholo wa hore ba etse se tshwanang ho rona kamoso ha re ba kopa ntho e itseng!", + "Your goal was to spend one-on-one time with your teen.": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao.", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "O sebeditse ka ho fumana ditharollo tsa diphephetso tsa hao. Ako yo di leka. Kamano ya hao le motjha wa hao e tla tswela pele ho ba matla!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ho thata haholo ho ba motswadi. Ka dinako tse ding ekare bana ba rona ha ho mohla ba re mamelang.\n\nEmpa saense e bontsha hore ho qeta metsotso ese mekae letsatsi ka leng re amehile ka nako ya boinotshing le batjha ba rona ho etsa hore re tshepane le ho ratana.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Nako ya boinotshing ke ha re amehile ka bona feela, ntle ho TV kapa difouno. Ba tlohelle ba etelle pele ho seo le se etsang kapa seo le buang ka sona.\n\nHo ka ba molemo ho qeta metsotso e mashome a mabedi ka letsatsi, empa le metsotso e mehlano ka letsatsi e molemo haholo.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Dumela.\n\nSehlooho sa rona sa kajeno ke nako ya boinotshing le bana ba rona.\n\nHo bohlokwa ho qeta nako ya boinotshing le bana ba rona hore ba ka re utlwisisa, le hore re kgone ho fumana monyetla wa ho ba utlwisisa.\n\nHopola, lelapa le utlwisisanang hantle le phela ka kutlwano.", + "Have you spent time with your teen already?": "Na o se o kile wa qeta nako le motjha wa hao?", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Re leboha haholo hore ebe o ikitlaetsa hakaalo ho ba motswadi ya betere. O motho ya ratwang le ya ananelwang!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ho qeta nako le motjha wa hao ho haha dikamano tsa ho tshepana pakeng tsa lona.\n\nTswela pele ka leeto la hao la @global.parent_app hona jwale - wena le lelapa la hao le tla atleha.", + "First @global.weekly_workshop!": "Qala ka @global.weekly_workshop!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.user_name. @local.workshop_data.in_text_title e se e o emetse.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.group_name. @local.workshop_data.in_text_title e se e o emetse.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Re a leboha hore ebe o sebedisa @global.parent_app ebile o motswadi ya ikemiseditseng. \n\n@local.workshop_data.in_text_title ya hao e se e o emetse!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. E keke ya nka nako e telele, ebile o tla fumana dintlha tsa bohlokwa. \n\nO sebeditse ka ho leka ho ba motswadi ya betere. Hosane o ka fihlella wekshopo e ntjha.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", + "Let's think of ways to spend one-on-one time with your teen.": "A re nahane ka ditsela tsa ho qeta nako ya boinotshing le motjha wa hao.", + "What could you do to spend one-on-one time with your teen?": "O ka etsang hore o qete nako ya boinotshing le motjha wa hao?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Na o utlwa eka HA O NA NAKO ebile o kgathetse?\nHopola ho nahana le ka ditsela tse sa jeng nako e ngata.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "O kgalala!\n\nLetsatsi le letsatsi, lebohela seo o se entseng hantle. Iputse ka ho hong ho o thabisang. Mme o hemele hodimo ho o thusa ho theola moya. \n\nHopola, o fumana ntlha ya @global.parent_point nako le nako ha o itlhokomela - o motho wa bohlokwa!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Diketso tsa ho itlhokomela\n* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Neanang malebela! \n\nKe dintho dife tseo o ka di etsang hore o qete nako ya boinotshing le batjha ba hao?\n\nNa o utlwa eka ha o NA NAKO ebile o kgathetse? O tle ka dikeletso bakeng sa nako ya boinotshing tse sa nkeng nako e ngata, jwaloka ho tsamaya mmoho ha le ya mabenkeleng mmoho.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", + "DAY - Try to do it every day": "LETSATSI - Lekang ho etsa sena letsatsi le letsatsi", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Fumana metsotso e 5 (kapa ho feta!) letsatsi le letsatsi ha ho se na ntho eo motjha wa hao a batlang ho e etsa.", + "PLAY - Let your teen choose": "BAPALA - E re motjha wa hao a kgethe", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Bolella motjha wa hao hore o ka thabela ho qeta nako le yena mme ke yena ya tla kgetha hore le tla etsang le hore na le tla bua ka eng. Qalong a ka nna a o makalla empa o tla thabela nako ena eo o e qetang le yena!", + "STAY - Focus on your teen": "DULA - Tsepamisa mohopolo motjheng wa hao", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Tima TV mme o behelle difouno kathoko. Sheba motjha wa hao. Oma ka hlooho mme o re \"Kea bona\" ho bontsha hore kannete o mo ela hloko. Amohela seo a o bolellang sona o sa mo ahlole.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Nako ya boinotshing le motjha wa hao e ka o thabisa le wena! Hape seo se ka nna sa o hafolela seterese.", + "Great!": "Ke botle!", + "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Kea tseba hore bophelo bo thata. Ke motlotlo ka wena.\n\nHo sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya kamoso ya tshehetso ya botswadi.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya hao ya kamoso ya tshehetso ya @global.parent_app.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Dumelang kaofela.\n\nSehlooho sa kajeno ke ho keteka le mehato e latelang.\n\nEbile ho hlollang, ebile ntho e tsotehang ho nka leeto lena le lona. Kajeno lena re keteka leeto la rona mmoho.\n\nKajeno lena re keteka dithuto tsohle tseo re ithutileng tsona ho tloha qalong.", + "Today you will celebrate, look back and look ahead:": "Kajeno lena le tla keteka, le ikgopotse le ho lebella:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Boikgopotso & puisano\n* Dithulusi: Tsela ya ho tshehetsana\nKOPANANG - LETSETSANANG - NGOLLANANG - ABELANANG\n* Ho rala tshehetso", + "Today you celebrate and reflect on your experiences.": "Kajeno o ketela le ho ikgopotsa boiphihlelo ba hao.", + "End of programme check-in": "Tlhahlobo ya qetello ya lenaneo", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Haesale o sebedisa @global.parent_app dikgweding tse fetileng, empa ho ba motswadi wa motjha ho nka nako e telele! Dipotso tse latelang tse amanang le boiphihlelo ba hao jwaloka motswadi di tla thusa ho lekola botswadi ba hao.\n\nIpuele nnete feela. Hopola hore batswadi ba dimilione ba ikutlwa jwaloka wena, mme kaofela re tshwanelwa ke pabatso. Ha o mong!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Ho bonahala eka o se o phethile tlhahlobo ya qetellong ya lenaneo. Hona o ka feta mosebetsi ona.", + "Let's talk about what has changed.": "A re bue ka dintho tse fetohileng.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Buisanang:\n* Ho fetohile eng lelapeng la hao?\n* Ke eng eo o e entseng eo o leng motlotlo ka yona?\n\nHopolang ho babatsana le ho kgothatsana!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Etsang moralo wa kamoo le tla tshehetsana kateng ho tloha jwale ho ya pele.\n\nO ka sebedisa dikeletso tse tswang malapeng a mang, kapa wa iketsetsa tsa hao!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Wena le lelapa la hao le tla ithuta dintho tse ngata. A re ikgopotseng tse fetileng le ho bona se fetohileng.", + "Reflect": "Ikgopotse", + "Listen and reflect": "Mamela le ho ikgopotsa", + "Read and reflect": "Bala mme o ikgopotse", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Kwala mahlo mme o phutholohe.\n\nNahana ka bophelo ba lelapa la hao pele o qala leeto la epo ena.\n \nNahana ka tsebo eo o ithutileng yona:\n* Ho itlhokomela\n* Nako ya boinotsing\n* Pabatso\n* Ditaelo tsa se lokelang ho etswa\n* Ho laola seterese\n* Ho etsa bajete ya lelapa\n* Melao\n* Ho jarisa ditlamorao o theotse moya\n* Ho rarolla mathata\n* Polokeho ya batjha\n* Ho sebetsana le koduwa\n\nNahana ka leeto lena – ho bile jwang ho wena ha:\n* O bolela maikutlo a hao le dintho tseo o fetileng ho tsona\n* Nahana le ho ithuta ho tswa ho dipale\n* Prakthisa tsebo ena ho motjha wa hao\n\nNa ho na le eng kapa eng e fetohileng ho wena le ba lelapa la hao?\n\nO hloka eng hore o tswele pele ho sebedisa tsebo ye?", + "MEET": "KOPANANG", + "Keep meeting regularly to give each other parenting support.": "Dulang le kopana kamehla hore le tshehetsane jwaloka batswadi.", + "CALL": "LETSETSANANG", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "E bang ‘mekgotsi e kopanngwang ke botswadi’ e letsetsanang ha le halefile kapa le sa tsebe hore le etseng.", + "TEXT": "NGOLLANANG", + "Text each other every week to share what you’ve done well.": "Ngollanang beke le beke ho bolellana seo le se entseng hantle.", + "SHARE": "ABANG", + "Share @global.parent_app and help other families start their journey.": "Abang @global.parent_app mme le thuse malapa a mang a qale leeto la wona.", + "Fantastic! We are proud of you for all you have done over the past weeks.": "Hase moo! Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", + "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Re maswabi hore o bile le letsatsi le thata. Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.\n\nKe ditlamorao dife tse ka thusang moo?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Ditlamorao ha di tshwane hantle le kotlo: di fa batjha ba rona monyetla wa ho ithuta ho jara boikarabelo ka diketso tsa bona.\n\nMme di fanwa ka tsela e laolehileng EBILE di atleha ho feta ho shapa kapa ho tjwedietsa motjha!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.\n\nke ditlamorao dife tse ka thusang moo?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Ditlamorao di atleha haholo haeba le buisane la ba la dumellana ka tsona esale pele le batjha pele le ka ba jarisa tsona.\n\nMme: hase ditlamorao tsohle tse bosula… Le ka boela la dumellana ka ditlamorao tse MOLEMO tsa ho etsa diketso tse MOLEMO hore o bone boitshwaro bo botle hangata!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.", + "What consequence would help here?": "Ke ditlamorao dife tse ka thusang boemong boo?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.\n\nKe ditlamorao dife tse monate tse ka thusang moo?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Boikwetliso ba hao ba lapeng bekeng ena e tla ba ho buisana le motjha wa hao ka ntho e le NNGWE e seng monate le ntho e le NNGWE e monate e tla etsahala e le ditlamorao.\n\nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Boitshwaro bo Bobe: Ho fihla lapeng kamora hora eo ho dumellanweng ka yona. \n\nDitlamorao tse Bohloko: Ha a bone metswalle letsatsing le hlahlamang. \n\nBoitshwaro bo Bobe: Ho bua ka tello. \n\nDitlamorao tse Bohloko: Ngola lengolo la ho kopa tshwarelo. \n \nBoitshwaro bo Botle: Ho thusa ha ho ilo rekwa mabenkeleng. \n\nDitlamorao tse Monate: Metsotso e meng e 30 ya ho etsa ntho eo a e ratang eo a e kgethileng. \n\nBoitshwaro bo Botle: Ho thusa ho hlokomela bana babo ba banyane. \n\nDitlamorao tse Monate: Ho ekeletswa hora eo a e qetang le metswalle ya hae ka mafelobeke.", + "introduce a consequence together": "qalang sephetho hammoho", + "Did you have any challenges when trying to introduce a consequence together?": "Na le bile le diphephetso dife kapa dife ha le leka ho qala sephetho mmoho?", + "What was difficult for you about introducing a consequence with your teen?": "Ke eng e ileng ya le thatafalla ha o qala sephetho le motjha wa hao?", + "I got very angry when my teen broke the rule.": "Ke ile ka halefa haholo ha motjha wa ka a tlola molao.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Ha re kgefutsa pele re araba, seo se re thusa ho kgoba matshwafo le ho araba hantle.\n\nNakong e tlang ha motjha wa hao a o halefisa, leka ho nka kgefu pele. Le ho phefumoloha haholo ho ka tlisa phapang e kgolo!", + "My teen got very angry with me after I gave the consequence.": "Motjha wa ka o ile a nkgalefela haholo kamora hore ke mo jarise ditlamorao.", + "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Ha motjha wa hao a o halefela, o ka nna wa tlameha ho tsamaya ho fihlela bobedi ba lona le theotse moya.\n\nHlahloba hore na ditlamorao tseo o mo bolellang tsona di lokile ebile dia utlwahala. Mamela tlhaloso ya motjha wa hao, mme o tiise hore o lokisetsa “Tshwarelo ka Lebaka la Polokeho” ha a tlotse molao e le hore a dule a sireletsehile.", + "I introduced the consequence without first discussing it with my teen.": "Ke ile ka mo bolella ditlamorao ntle le ho di tshohla pele le motjha wa ka.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Na o ka fana ka ditlamorao kapa sephetho sa ketso haeba e ipheta? Ha re beha ditlamorao mmoho le batjha ba rona, ditlamorao e tla ba tse utlwahalang haholo, mme batjha ba rona ba tla ikemisetsa le ho feta ho latela molao ebile ba tla be ba kgona ho o latela.", + "I forgot to follow through with the consequence.": "Ke lebetse ho phethisa ditlamorao.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Kaofela re etsa diphoso! Ha re jarisa bana ba rona ditlamorao re sa fetofetohe, ho na le menyetla e mengata ya hore bana ba rona ba tla kgetha ho itshwara hantle nakong e tlang.", + "Even with the consequence, my teen still does not follow the rule.": "Esita leha ho na le ditlamorao, motjha wa ka o ntse a sa latele molao.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Ha motjha wa hao a tswela pele ho tlola melao, o ka nna wa tlameha ho qeta nako e ngata le yena le etsa dintho tse molemo.\n\nLeka ho tswela pele ka dintho tse ding tseo o ikemiseditseng ho di fihlella – jwaloka ho itlhokomela, nako ya boinotshing, le pabatso. Tsebo ena kaofela e tla thusa motjha wa hao hore a ikutlwe a ratwa haholo ebile a sireletsehile… mme seterese sa hao se tla hafoha!", + "We only created a negative consequence, not a positive consequence.": "Re ile ra theha ditlamorao tse bosula feela, ho hang ho ne ho se na tse ntle.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ka dinako tse ding ho ka ba thata ho nahana ka ditlamorao tse ntle. Ditlamorao tse ntle di tla kgothalletsa motjha wa hao ho jara boikarabelo haholo, mme o tla bona phapang!", + "My teen suggested being hit as a negative consequence.": "Motjha wa ka o ile a sisinya hore a shapuwe e le ditlamorao tse bohloko.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Batjha ba ka tlwaela ho bona ho shapuwa e le tsona feela ditlamorao tse ka kgonehang tsa ho tlola melao.\n\nQalang ditlamorao tse ding le kgutsitse mmoho tse ka ba thusang ho utlwisisa hore ba entse ntho e fosahetseng. Dintho tsena di tla atleha haholo ebile di tla beha mehlala e metle!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa).", + "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "O ka thusa motjha wa hao ho utlwisisa hore ho tlola melao ya lelapa ho fella ka ditlamorao.\n\nEmpa TSELA eo o etsang sena ka yona e bohlokwa.\n\nHo jarisa motjha ditlamorao hantle ho mo thusa ho itshwara hantle le ho etsa hore bophelo ba lelapa bo iketle hanyane...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho jara ditlamorao moya o le fatshe.\n\nHo bohlokwa hore ha re qala ditlamorao ho batjha ba rona, re ba kenyelletse, empa hape ho bohlokwa hore re be re theotse moya ha re qala ditlamorao.\n\nSena se tla thusa hore re dumellane ka ho qala ditlamorao tse mosa ho batjha ba rona mme batjha ba rona ba tla di hopola kapele ha ba ameha mme seo se tla etsa hore ba jare boikarabelo.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Batjha ba dula ba tlola melao. Kgolo ke nako e boima ha ba ithuta hore na ke bomang.\n\nKa lehlohonolo, ho na le ditsela tsa ho kgalemela batjha ntle le ho halefa kapa ho sebedisa dikgoka… ebile di sebetsa hantle!\n\nHo fana ka ditlamorao re kgobile matshwafo ho thusa batjha ho jara boikarabelo ka seo ba se etsang – ebang se setle kapa se sebe.\n\nMehlala ya taba ena ke ena - ipone o le motswadi:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ditlamorao tse kgutsitseng di lokela ho ba...\n\nTSE LOKILENG: E se be tse sehloho haholo mme ruri o ka di kgona\n\nHANGHANG: Mo jarise tsona kapele kamoo ho ka kgonehang\n\nTSE TSHWANANG: Ditlamorao tse tshwanang ka dinako tsohle", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Hlophisa ditlamorao tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng. Hopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", + "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Phethela wekshopo mme o leke ho buisana le motjha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", + "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @fields.user_name! kajeno re keteka likhoeli tse peli tsa ho sebelisa @global.parent_app!\n\nO tla hantle haholo! Thupelo ea beke ena e tla ho u thusa ka ho tseba seo u lokelang ho se etsa ha mocha oa hao a sa latele melao ea lelapa.", + "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @fields.group_name! kajeno re keteka likhoeli tse peli tsa ho sebelisa @global.parent_app!\n\nO tla hantle haholo! Thupelo ea beke ena e tla ho u thusa ka ho tseba seo u lokelang ho se etsa ha mocha oa hao a sa latele melao ea lelapa.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Ke ho thabisang ho bona hore o sebedisa @global.parent_app. O se o fumane dithulusi tse 6 tsa botswadi!\n\nNka wekshopo e latelang ho fumana thulusi e nngwe ya botswadi!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. Hantlentle ho kgoba matshwafo ho thusa motjha wa hao ho latela ditaelo hantle – leka sena pele o fetela pele!\n\nO entse hantle ka ho bontsha ho itella lelapa la hao hakaalo.", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "O entse mosebetsi o motle ka ho qeta @local.workshop_data.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", + "Why did giving a consequence this way not work well?": "Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "E, ho nkeha maikutlo ka tsela e matla hakaalo ho halefisitse le ho kwatisa motho e mong le e mong.", + "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "A re bale se etsahetseng ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! O leite!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape”. \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ke kopa ho o hlalosetsa, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ha o mamele molao! Ke tla o shapa!”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Ntho eo o e etsang ha e hantle! Ha ho na mohla o mmamelang!! Ke o hloile!”", + "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "A re kgutlele ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", + "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: \"Ke kgathatsehile ka hore o sa ntse o fihla lapeng leite mme sena se etsahala kgafetsa, @global.w_consequence_teen_boy_1. Re ka etsang ho o thusa ho hopola ho tla lapeng ka nako?\"\n\n@global.w_consequence_teen_boy_1: \"Ha ke fihla lapeng ka nako, mohlomong nka fihla metsotso e 30 pele ho nako e tlwaelehileng?\"", + "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: O nahanne ntho e ntle! Mme jwale re tla etsang haeba o sa latele molao? \n\n@global.w_consequence_teen_boy_1 (o a korotla): “Mgmluuhm”", + "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: \"Bona hle moshana, kea tseba hore ho na le ntho eo o e nahanang.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile…. Ho thweng ka: Ke tlameha ho etsa homeweke ya ka?\"", + "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: \"O lokela ho etsa homeweke ya hao hanghang. Ha o lebala molao, etlaba hantle hore letsatsing le hlahlamang o se ke wa bona metswalle ya hao.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile, @global.w_consequence_male_caregiver.\"", + "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Letsatsing le hlahlamang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Ke leite!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape.” \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “E re ke o hlalosetse, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ke hara mpa ya bosiu mme o fihlile leite ka nako eo re sa dumellanang ka yona. Ho sa tsotellehe lebaka, o tlameha ho utlwisisa hore ntho ena ha e amohelehe. @global.w_consequence_female_caregiver mme ke utlwa ke tshwenyehile haholo.”", + "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Metswalle ya ka e ne e batla re dule ho fihlela bosiu. E mpitsa ngwana hobane ke batla ho tla lapeng ka nako.” \n\n@global.w_consequence_male_caregiver: “Kea tseba hore ho ka ba thata ho hanyetsa metswalle ya hao. E re re bue ka taba eo hoseng ha re se re phomotse.”", + "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo ke ile ka le tshwenya ebile @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Kea leboha. Tsa mo robala, empa o hopole, kaha o fihlile lapeng kamora nako eo re dumellaneng ka yona, hosane re ke ke ra o dumella ho tswa bosiu.”", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le puisano – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le boikgopotso – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Buisanang: \n* Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver o ne a halefile", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver ha aa dumella @global.w_consequence_teen_boy_1 ho itlhalosa", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Ha ho a buisanwa le @global.w_consequence_teen_boy_1 ka ditlamorao tseo esale pele", + "The consequence was too strong": "Ditlamorao di ne di le matla haholo", + "Giving a consequence this way did not work well because...": "Ho fana ka ditlamorao ka tsela ena ha ho a sebetsa hantle hobane...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Buisanang ka:\n* Ke melao efe eo motjha wa hao a e tlolang kgafetsa? \n* O ka sebedisa ditlamorao dife bakeng sa molao ka mong o tobileng o tlotsweng? \n\nDitlamorao di lokela ho ba: \nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako).\n\nBabatsanang le ho kgothatsana – re ka matlafatsana!", + "Let's talk about this story": "A re bue ka pale ena", + "Why did using a consequence work well this time?": "Ke hobaneng ha ho mo jarisa ditlamorao ho atlehile lekgetlong lee?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver wa hae ba buisana ka ditlamorao ha bobedi ba bona ba theotse moya", + "They agreed on consequences together": "Ba dumellana ka ditlamorao mmoho", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver o arabetse a theotse moya empa a sa hlathe kwana le kwana ha @global.w_consequence_teen_boy_1 a tlotse molao", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver o ile a mamela @global.w_consequence_teen_boy_1", + "The consequence was realistic and appropriate": "Ditlamorao ebile tse utlwahalang le tse loketseng", + "Using a consequence worked well this time because...": "Ho mo jarisa ditlamorao ho atlehile lekgetlong lena hobane...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Tsela ya ho qala ditlamorao tse monate e bohlokwa. Hopola, ha o kenyelletsa motjha wa hao, hangata dintho di tsamaya bothebelele!", + "EXPLAIN": "HLALOSA", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Tiisa hore bobedi ba lona le kgobile matshwafo. Hemela hodimo ka makgetlo a seng makae. Hlalosetsa motjha wa hao hore na ke hobaneng ha o kgathatsehile ka boitshwaro ba hae.\n\nHlalosa mabaka a hore na hobaneng ha ho hlokeha molao. O ka mo phetela maikutlo a hao - ho lokile ho mo bolella hore o swabile.", + "AGREE": "DUMELLANANG", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Hlophisa ditlamorao le motjha wa hao tsa ho latela molao le ho se o latele.\n\nMo botse hore na o nahana jwang. Buisanang ho fihlela le dumellana ka ho hong ho utlwahalang.\n\nEtsang ditlamorao tsa HO SE latele molao le tlotla ya ha A latela molao.", + "ACT": "NKA BOHATO", + "When your teen follows the rule, give praise and privileges!": "Ha motjha wa hao a latela molao, mo babatse mme o mo fe dintho tse kgethehileng!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "O tla ikutlwa a hlomphuwa ebile e le wa bohlokwa. Hopola: Ha o mo babatsa haholo, o tla bonahatsa boitshwaro boo bo botle!", + "When your teen does not follow the rule, follow through with the consequence.": "Ha motjha wa hao a sa latela molao, mo jarise ditlamorao.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Ha motjha wa hao a tlola molao, ka mosa mo jarise ditlamorao tsa ketso ya hae. E lokela ho ba tse LOKILENG (eseng tse sehloho), HANGHANG (di jarise tsona ntle ho tshenyo ya nako) KA TSELA E TSHWANANG (ebe tse tshwanang nako le nako).", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Ke ditlamorao dife tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng?\n\nHopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", + "Not seeing any friends for a month": "Ho se bone metswalle efe kapa efe kgwedi kaofela", + "This may be hard to do for you and also too harsh!": "Ena ekaba ntho e thata ho wena ebile e tla be e le sehloho!", + "Cancelling their birthday plans in a month’s time": "Ho tlohela ditokisetso tsa mokete wa letsatsi la tswalo o saletsweng ke kgwedi", + "This is too far in the future, and too harsh as well!": "Ke ntho ya kgale haholo, ebile le ena e tla ba ketso e sehloho!", + "No TV this evening": "Ha ba shebelle TV mantsiboyeng ana", + "Perfect, this sounds fair and can be done straight away": "Hase moo, ena e utlwahala e lokile ebile e ka etswa hanghang", + "Self-care is a key parenting tool.": "Ho itlhokomela ke thulusi ya bohlokwa ya botswadi.", + "So good to hear you are feeling well today. You are incredible!": "Ke thabela ho utlwa hore o ikutlwa hantle kajeno. O motho ya hlollang!", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Re maswabi hore o hula ka thata hona jwale. Hemela hodimo mme o tsebe hore o motho wa bohlokwa.", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "O phethetse wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tlang e tla le keteka kaofela, le ho le thusa ho etsa ditokisetso bakeng sa kamoso.\n\nHobaneng ha le sa lokisetse phathi moo le tla ja mmoho, le letse mmino haeba le rata ho tantsha!", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "O phethile wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tla e tla o keteka, mme o ka kgetha tshehetso eo o e batlang ho ya pele.\n\nO ka lokisetsa dimenyemenye ho keteka – ntho eo o ratang ho e ja, kapa mmino oo o ratang ho o mamela!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Le motjha wa hao kgethang bo bong ho maemo ana (kapa nahanang ka bo bong ka bolona!). Shebang khathune, mme le buisane ka seo le ka se etsang mmoho haeba seo se etsahalla motswalle kapa se hlaha ka lapeng.\n\nMme hopola: KGA MOYA - MAMELA - NAHANA", + "prepare for a possible crisis with their teens": "lokisetsa tlokotsi e ka hlahang le batjha ba hao", + "prepare for a possible crisis with your teen": "lokisetsa tlokotsi e ka hlahang le motjha wa hao", + "My teen told me that something serious happened to them and I did not know how to handle it.": "Motjha wa ka o mpolelletse hore o hlahetswe ke ntho e tebileng mme ke ne ke sa tsebe hore na ke sebetsane le taba eo jwang.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Babatsa motjha wa hao hobane a o bolelletse, ha ho bonolo ho etsa jwalo! Hopola, o ka sebedisa tsebo yohle eo o e kotutseng lebokoseng la hao la dithuluse: Nka kgefu, sebedisa mehato e mene ya ho rarolla mathata, mme o batle thuso eo wena le motjha wa hao le e hlokang!", + "Get support": "Fumana thuso", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Puisano eo e ile ya etsa hore ke ikutlwe ke sa phutholoha ho hang hobane e ile ya nkgopotsa ntho e bohloko e kileng ya nhlahela.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Ha ntho e re hopotsa ka ketsahalo e jwalo, ho tlwaelehile hore re ikutlwe re kwatile kapa re halefile. Ho bohlokwa ho fumana nako ha o kgutsitse, hore ka nahana ka hore na o hloka tshehetso ya mofuta ofe. Mohlomong o tlameha ho buisana le motho e mong.", + "One of us did not feel comfortable.": "E mong wa rona o ne a sa ikutlwe a phutholohile.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Ena ke ntho e thata hore batho ba bue ka yona. E fumanele nako eo le phutholohileng. Rea tseba hore ho bonolo haholo ho qoba ho bua ka taba le ho tshepa hore e keke ya re etsahalla. Empa, ho ithuta ho sebetsana le tlokotsi ho tshwana le ho fumana inshorense; KAMEHLA ho molemo ho nahana ka yona le ho itokisetsa yona.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Sepheo sa hao ke hore o buisane ka boemo ba tlokotsi bo ka hlahang le motjha wa hao le ho itokisetsa bona.", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Malapa wohle a ba le ditsietsi. Ha re itokisa mmoho ebile re tseba hore na re fumana thuso hokae PELE ntho e mpe e etsahala, re ka hlola tsietsi efe kapa efe.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho sebetsana le ditsietsi.\n\nTsietsi e ka hlaha kae kapa kae. Tsietsi e ka hlaha neng kapa neng. Kahoo ho bohlokwa hore lelapa le be le ditlhophiso haeba setho sefe kapa sefe sa lelapa le iphumana le se tsietsing.\n\nHo bohlokwa ho etsa ditlhophiso e le hore setho se seng le se seng sa lelapa se ka ikutlwa se sireleditswe.\n\nHa re sebetsana le tsietsi, hopola ho kgefutsa, ho kga moya, le ho dula o kgobile matshwafo. Sena se tla o thusa ho sebetsana le tsietsi kapa tlokotsi hantle.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Ho molemo ho tlwaela ho sebetsana le tlokotsi pele ho etsahala ntho e nngwe.\n\nSheba dinako tsena tsa ditsietsi kapa ditlokotsi tse hlano tse hlahelang malapa. Nahana o le motswadi: O ne o tla etsang?\n\nHopola: KGA MOYA - MAMELA - NAHANA", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Tsietsi ya 1: @global.w_crisis_teen_boy_2 o a lwana sekolong", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Kea qala ho ba boemong bona. Empa jwale ba tlo ntebela\"", + "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Tsietsi ya 2: @global.w_crisis_teen_girl_1 eba moimana", + "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke swabile haholo. Ha ke tsebe hore na ke etseng\"", + "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Tsietsi ya 3: @global.w_crisis_teen_boy_2 o imisa ngwanana", + "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ha ke batle ho ba le lesea\"", + "How could you respond to @global.w_crisis_teen_boy_2?": "O ne o tla arabela jwang ho @global.w_crisis_teen_boy_2?", + "Crisis 4: Someone in the family gets sick": "Tsietsi ya 4: Motho e mong ka lapeng o a kula", + "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Tlhahlobo e re ke na le HIV. Ke tshohile hore ke tlo shwa\"", + "How could you respond in this situation?": "O ne o tla arabela jwang boemong boo?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Tsietsi ya 5: @global.w_crisis_teen_girl_1 o qobellwa ke moshemane eo a ratanang le yena hore ba etse thobalano", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Ke ne ke sa batle. Jwale ke tla ima kapa ke kule. @global.w_crisis_female_caregiver, ke tshohile haholo...\"", + "How could you respond to @global.w_crisis_teen_girl_1?": "O ne o tla arabela jwang ho @global.w_crisis_teen_girl_1?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Hopolang ho tshehetsana le ho kgothatsana. Ho thata ho dula o theotse moya le ho mamelana ha ho hlahile tsietsi - re motlotlo ka wena.", + "Have you discussed with your teen what you would do in a crisis situation?": "Na o se o kile wa buisana le motjha wa hao ka hore na le ka etsang ha ho hlaha tlokotsi?", + "Crisis Examples": "Mehlala ya Ditlokotsi", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "O motswadi ya ikemiseditseng. O ikotle sefuba - kannete ena ke katleho e kgolo!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @local.workshop_data.in_text_title mme o ithute tsela e ntlehadi ya ho itshwara ha motjha wa hao a o hloka haholo.", + "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.user_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", + "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.group_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ha re tsebe hore na tlokotsi e ka hlaha neng, empa re KA itokisa! \n\nQala wekshopo e latelang hore o ithute hore na o ka etsa sena jwang hammoho le motjha wa hao.", + "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Hosane wekshopo ya ho qetela ya @global.parent_app e tla be e o emetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ka tsela ena, o ka phetha sete ya hao ya tsebo ya botswadi mme wa etsa qeto ya hore na ho tloha moo o tla etsang!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane o ka fumana wekshopo ya ho qetela ho bontsha leeto la hao la @global.parent_app le seo o ka se etsang ho tloha moo!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "E, hantlentle @global.w_crisis_female_caregiver o sebedisitse ditsebo tsohle – le wena o ka kgona!", + "All these skills can help in a crisis.": "Tsebo ena kaofela e ka thusa ha ho hlahile tsietsi.", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Tsietsi e ka hlahela mang kapa mang. \n\nA re bone se etsahalletseng @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Ao ngwanaka, ekare o utlwile bohloko, na o ka thabela ho mpolella hore na ho etsahetseng?\"", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ke Malome, o… o… o ile a ntshwara.\" \n\n@global.w_crisis_female_caregiver (o a nahana): \"Kga moya o mongata... Ngwana wa ka o hloka eng? O hloka hore ke theole moya mme ke mo mamele\" \n\n@global.w_crisis_female_caregiver: \"Tloho o dule pela ka mona. O ska tata, ke o utlwe hantle.\"", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Kannete, o… o… nqobelletse! O nqobelletse ho etsa thobalano le yena! Ke ne ke sa batle, ke ya hlapanya, ke ile ka ba ka re NTLOHELE, empa a re ke tla ikenya mathateng.\"\n\n@global.w_crisis_female_caregiver: \"Kea leboha ha o mpolelletse taba ena. Ha o mathateng ho hang. Ena hase phoso ya hao.\"", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Maobane ha o ilo bona @global.w_crisis_adult_friend. O ile a kena feela mme seo se etsahetse ka nako eo.\"\n\n@global.w_crisis_female_caregiver: \"Ke ya utlwa, ebile ke dumela seo o mpolellang sona ngwanaka. Ena ke ntho e kgolo mme re tla fumana tsela ya ho batla thuso eo re e hlokang. Re ka leba hokae ho fumana thuso?\"\n\n@global.w_crisis_teen_girl_1: \"Moo ke kenang sekolo teng?\"", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Oo, ka ba ka hopola, a re ye tliliniking. Ba tla tseba hore na re etseng ho o thusa. Na o utlwa eka o ka kgona?\"\n\n@global.w_crisis_teen_girl_1: \"E… E lokile… Empa na o tla tsamaya le nna?\"", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Ho jwalo, ke tsamaya le wena. Mme @global.w_crisis_teen_girl_1? Hopola, hase phoso ya hao. Kea o rata. O motho ya molemo. Re tla feta bothateng bona.\"", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Bothata bo bong boo batswadi ba bangata ba kgathatsehileng ka bona ke diketso tsa dikgoka le tlolo ya molao. A re shebeng mohlala ona hammoho.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ho tloha maobane o bonahala o kgathatsehile. Ebe molato ke eng?\"", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Maobane, nna le metswalle ya ka re ile ra ya mmetjheng wa bolo. Bashemane ba bang ba tahilweng ba ile ba qala ho lwantsha motswalle wa ka.\"\n\n@global.w_crisis_male_caregiver_1: \"Tswela pele, ke mametse. Ke tshepa hore ha o a ka wa lwana?\"", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Ke ne ke sa batle ho lwana, empa ke ne nke ke ka ema moo yaba ke ba shebella ha ba otla mokgotsi wa ka, yaba…\"\n\n@global.w_crisis_male_caregiver_1: \"Yaba, le wena o a lwana ho thusetsa mokgotsi wa hao?\"", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Ntwa e ne e se na monga yona. Ke bone motho ya rapaletseng fatshe ka hara mophula wa madi. Ke bone eka… o shwele.\"", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Ke thabela hore ebe o mpolelletse sena, @global.w_crisis_teen_boy_1. A re dule fatshe mmoho mme re buisane ka taba ena hore na re tlameha ho kopa thuso ya mapolesa kapa ya motho e mong.\"", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Kea leboha, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Re tla feta boemong bona. Hopola, re tla o tshehetsa re le lelapa.\"", + "Every small thing you do matters. We hope you are proud of yourself too.": "Ntho e nngwe le e nngwe e nyane eo o e etsang e bohlokwa. Re tshepa hore le wena o motlotlo ka wena.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Pale le puisano\n* Pale le puisano\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso\n* Pale le boikgopotso\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Bona e ne e le boemo bo thata bakeng sa @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver wa hae! Sena se ka etsahalla bashanyana le banana.", + "What skills did @global.w_crisis_female_caregiver use?": "@global.w_crisis_female_caregiver o ne a lokela ho sebedisa tsebo efe?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "E ne e le boemo bo thata hakaalo bakeng sa @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 wa hae!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "@global.w_crisis_male_caregiver_1 o ne a lokela ho sebedisa tsebo efe?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Ditsietsi di ka etsa hore re ikutlwe re halefile kapa re se na matla. Empa ke yona nako eo batjha ba rona ba hlokang hore re kge moya, re mamele mme re nahane.", + "BREATHE": "KGA MOYA", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Dula o kgobile matshwafo. Ipotse 'motjha wa ka o hloka eng hona jwale'", + "LISTEN": "MAMELA", + "Tell them you are there for them and love them.": "Mo bolelle hore o tla wa o tsoha le yena ebile o a mo rata.", + "THINK": "NAHANA", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Buisana le motjha wa hao. Ke eng e ka thusang boemong boo? O ka nna wa tlameha ho etsa ditokisetso tsa hanghang hona jwale, ebe o etsa tsa nako e telele hamorao.", + "You can be proud of yourself for exploring ways to get help!": "O ka ba motlotlo ka wena ka ho ithuta ditsela tsa ho fumana thuso!", + "How are you feeling today?": "O ikutlwa jwang kajeno?", + "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Ke hantle hore o phetse hantle kajeno! Ntho e le nngwe e tsamaileng hantle ke efe kajeno? Hopola ho ipabatsa ka yona.", + "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Ke maswabi ho utlwa hore ha o ikutlwe hantle kajeno. O sebeditse ka ho lemoha maikutlo a hao, le ho leka ho kgoba matshwafo le ho iqenehela. O behela lelapa la hao mohlala o motle.", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Boikwetliso ba lapeng bekeng ena ke ho fa motjha wa hao ditaelo tsa seo a lokelang ho se etsa.\n\nHopola - EBE TSE UTLWAHALANG, EBE TSE KGOTHATSANG, EBE TSE HLAKILENG = BOLELA HANTLE SEO O SE BATLANG (o itlhakise kahohle kamoo ho ka kgonehang ho motjha!)", "Did you have any challenges?": "Na o bile le diphephetso dife kapa dife?", "What challenge did you have?": "O tobane le diphephetso dife?", "My teenager did not want to follow the instruction.": "Motjha wa ka ha a batle ho latela ditaelo.", @@ -1314,9 +766,77 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Hase moo! Ka ho aba boikarabelo, o tla ba le nako e ngata ya ho ithabisa le motjha wa hao – ena ke ntho ya bohlokwa haholo!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "E, ho nka nako ho tlwaela ho fana ka ditaelo tsa se lokelang ho etswa – empa o ke ke wa itshola ka ho leka hape! Nahana ka boitshwaro boo o ka ratang ho bo bona haholo ho motjha wa hao, mme o nahane ka ditsela tse molemo tsa ho fana ka taelo eo!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Ho thata ho nahana ka ditaelo ha re ntse re halefile. Leka mme o fumane nako ya ha o kgobile matshwafo ho fa motjha wa hao taelo ya se lokelang ho etswa. \n\nHo @global.weekly_workshop e latelang, re tla bua ka ho laola maikutlo a hao!  O ka fumana mesebetsi e meng ya ho phomola @data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le morero wa ho boloka tjhelete. Re lemohile hore o ile wa tobetsa @data.habit.money.in_text_title - o entse mosebetsi o motle ka ho hopola!", - "Your goal was to make a family budget and savings plan.": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le moralo wa ho boloka tjhelete.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Rea leboha ka hore o re phetele dintho tseo o fetileng ho tsona! O entse hantle ka ho nahana kamoo o ka etsang bajete le ho boloka tjhelete le lelapa la hao. Kannete sena se tla o thusa ho sebeletsa dinthong tse ding tseo lelapa la hao le batlang ho di etsa.\n\nRe ka finyella dikgolo mmoho etswe, matla ke kopano!", + "Which of the tips helped you?": "Ke efe ya dikeletso tsena e le thusitseng?", + "GET REAL – Can your teen do what you are about to ask?": "NAHANA HANTLE – Na motjha wa hao a ka etsa seo o nahanang ho mo kopa sona?", + "GET POSITIVE – Use positive words and praise them!": "KGOTHATSA – Sebedisa mantswe a kgothatsang le ho mo babatsa!", + "GET CLEAR – Be clear and specific!": "ITLHAKISE – Bua ka tsela e hlakileng le e tobileng!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Ke eo taba! Ha re kopa motjha wa rona ho etsa ntho e utlwahalang, ho bonolo hore a atlehe.", + "When we praise them, our teens feel encouraged to listen to us again!": "Ha re babatsa batjha ba rona, ba ikutlwa ba kgothaditswe hore ba re mamele hape!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Hase moo! Ha re nahana esale pele ka ditaelo tse tobileng tseo re di fang motja wa rona, ho ba bonolo haholo ho latela ditaelo tsa rona!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSA KETSO EO A LOKELANG HO E ETSA le TSE TOBILENG.", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Rea leboha ka hore o re phetele taba eo! O entse hantle ka ho fa motjha wa hao ditaelo tsa ketso e lokelang ho etswa le ho haha kamano e ntle le motjha wa hao.\n\nWena hammoho le motjha wa hao le tshwanelwa ke pabatso!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Ameha ka dintho tse kgothatsang!\n\nHo bolella batjha ba rona seo re batlang hore ba se ETSE ho sebetsa habetere ho feta ho ba bolella seo ba tlamehang ho KGAOTSA ho se etsa.", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Dumelang, dumelang bohle.\n\nSehlooho sa rona sa kajeno ke ditaelo tsa se lokelang ho etswa.\n\nHo bohlokwa ho fa bana ba rona ditaelo tsa se lokelang ho etswa, hobane ha re ba fa ditaelo tsa seo ba lokelang ho se etsa, ba tla tseba le ho utlwisisa se ho lebeletsweng hore ba se etse, ebe ba etsa seo kamoo re batlang hore ba se etse kateng.\n\nKahoo, bohle ba tla dula ba thabile.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Ha o so tsoaee letho la @data.habit.instruct_positively.title @global.parent_points.\n\nLeka kajeno!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "O se o tshwaile @global.parent_point @data.habit.instruct_positively.title hang – kahoo o hatela pele hantle.", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively di nako - o hatela pele haholo.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Ipuise ka mosa ka mosebetsi o tswileng matsoho oo o o phethang. Ha ho na motswadi ya phethahetseng, empa re dumela hore o a ipabola!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Ho fana ka ditaelo tsa se lokelang ho etswa ho hlahisa boitshwaro bo botle bo eketsehileng!\n\nPhethela @local.workshop_data.in_text_title ho fumana ditsela tseo sena se ka sebetsang ka tsona ka lapeng la hao.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @fields.user_name! O sebeditse ka ho qala @global.parent_app beke ea 4.\n\nThupelo ea bekeng ena e ka mabapi le mokhoa ea ho eketsa menyetla ea hau ea ho etsa hore mocha oa hao a etse seo o mo kopang hore a se etse.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @fields.group_name! O sebeditse ka ho qala @global.parent_app beke ea 4.\n\nThupelo ea bekeng ena e ka mabapi le mokhoa ea ho eketsa menyetla ea hau ea ho etsa hore mocha oa hao a etse seo o mo kopang hore a se etse.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Na kamehla motjha wa hao o a o mamela? Haeba ho se jwalo (jwaloka boholo ba rona), sheba wekshopo ya bekeng ena ho ithuta hore na ho fana ka ditaelo tsa se lokelang ho etswa ho ka thusang haholo hakae.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Jwaloka tlwaelo, o ka fumana wekshopo e ntjha hosane. Ho tla ba molemo ho phetha wekshopo e fetileng pele o fetela pele.\n\nBatswadi ba bang ba sebedisa epo ena ha ba le tseleng e lebang mosebetsing. Ho ka ba jwang hore o sebedise epo ena ha o na le metsotso ese mekae?\n\nRe boetse rea o leboha ka ho sebedisa @global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, ho tla fumana wekshopo e ntjha e o letetse: o tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng ka yona?", + "What could @global.w_instruct_female_caregiver have done differently?": "@global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", + "Said something nice first": "A ka be a buile hantle pele", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng", + "Told @global.w_instruct_teen_girl what she wants her to do": "A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ne ba se ba ikutlwa jwang?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Na o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl o ne a ikutlwa a hlomphuwa ebile a ratwa ke @global.w_instruct_female_caregiver wa hae", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver o ile a dula a le mosa", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "A re bone se etsahalang ha @global.w_instruct_female_caregiver a bolella @global.w_instruct_teen_girl \"O SE KE WA\":", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha \n@global.w_instruct_teen_girl a ntse a prakthisa tantshi le motswalle wa hae.\n\n@global.w_instruct_female_caregiver: “O se ke wa etsa bohlaswa ha ke ntse ke hlwekisa ntlo. O a ntshitisa!”", + "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Empa ke tlameha ho prakthisa bakeng sa tlhodisano ya sekolong. Ha o ntumelle hore ke etse letho.”\n\n@global.w_instruct_female_caregiver: “O se ke wa nkarabisa!”", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Akga!! O ye be o qadile o nkomanya jwaloka mehleng????”\n\n@global.w_instruct_female_caregiver o ipolella hore: “Ngwana enwa o dula a le lenyokonyane.”", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Rea leboha ka hore o nahane ka taba eo! \n\nA re kgutlele morao mme re bone hore na ho etsahalang ha @global.w_instruct_female_caregiver a fana ka ditaelo tsa se lokelang ho etswa:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha @global.w_instruct_teen_girl a na le metswalle ya hae a prakthisa ho tantsha. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ke thabela ho o bona o prakthisa tantshi le metswalle ya hao. Ke kopa hore le prakthisetse kantle, hore ke qetele ho hlwekisa ntlo. Kamora moo le ka mpontsha hore na le tantsha jwang.\"\n\n@global.w_instruct_teen_girl: “Ho lokile, @global.w_instruct_female_caregiver!”", + "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Kea leboha hore ebe le ile la prakthisetsa kantle ha ke ntse ke qetela ho hlwekisa, @global.w_instruct_teen_girl. Jwale ke na le nako ya ho le shebella ha le tantsha.\"", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Kgele, @global.w_instruct_teen_girl! Le tantsha hantle hakaakang!\"", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Teko ya kelello\n* Pale le puisano – seo ha sea atleha…\n* Pale le puisano – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Teko ya kelello\n* Pale le boikgopotso – seo ha sea atleha…\n* Pale le boikgopotso – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* Ditshisinyo tsa ho prakthisa lapeng", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Buisanang:\n\n* O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng kateng? \n* Ebe @global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver a ka be a...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Buile ntho e ntle qalong\n* A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng\n* A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", + "Let's discuss what happened this time.": "A re buisaneng ka se etsahetseng lekgetlong lena.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Buisanang:\n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jwang hona jwale?\n* Ke hobaneng ha o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", + "Positive instructions can work with your teen too!": "Ditaelo tsa se lokelang ho etswa di ka sebetsa le ho motjha wa hao!", + "It worked better this time because...": "Dintho di tsamaile betere hobane...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl o ile a utlwa a hlomphuwe ebile a ratwa ke @global.w_instruct_female_caregiver wa hae\n* @global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya\n* @global.w_instruct_female_caregiver o ile a bua ka tsela e mosa", + "Let’s do a thought experiment!": "A re etse teko ya kelello!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "O SE KE WA NAHANA KA TLOU\n\nO nahana ka eng?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Mohlomong o ile wa HLA wa nahana ka tlou...\n\nDitaelo tse reng 'o se ke wa' di etsa hore batjha ba nahane ka yona ntho eo.\n\nKa dinako tse ding ha utlwisise seo re HLILENG re se batlang ho bona.\n\nMme hangata ha ba rate ho bolellwa hore na ba se ke ba etsa dintho (na kaofela ha re jwalo?)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "JWALE, NAHANA KA LENGAU\n\nO nahana ka eng?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "O nepile! Ditaelo tse hlakileng, tsa se lokelang ho etswa di thusa batjha ho ameha ka seo ba lokelang ho se etsa.\n\nBatjha ba boetse ba ikutlwa ba hlomphuwe ka tsela ena, mme ho na le kgoneho e kgolo ya hore ba re mamele.", + "GET REAL": "AMOHELA BOEMO KAMOO BO LENG KATENG", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Na ehlile motjha wa hao a ka etsa seo o batlang ho mo kopa sona? Mohlomong ke ntho e sa kgoneheng bakeng sa hae ho bala a kgutsitse letsatsi lohle, empa halofo ya hora ke ntho e utlwahalang.", + "GET POSITIVE": "EBA YA KGOTHATSANG", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Bososela, mo shebe ka mahlong, mme o sebedise mantswe a kgothatsang. Mo babatse kapele kamora hore a qale ntho eo o mo kopang yona!", + "GET CLEAR": "BUA KA TSELA E HLAKILENG", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Hangata rea tseba hore na re batlang, empa ha re se bue ka tsela e hlakileng ka ho lekaneng. Bolella motjha wa hao hantle seo o batlang hore a se etse. Leka mantswe a kang ‘ke kopa o fihle lapeng ka 7 mantsiboya’ ho fapana le hore ‘o fihle lapeng ka nako’.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "A re prakthise ho fana ka ditaelo tse UTLWAHALANG, tse KGOTHATSANG le tse HLAKILENG. Ho prakthisa ho tla o thusa ho atleha ha o sebedisana le motjha wa hao!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Kgetha batho ba babedi sehlopheng sa hao:\n* Motho e mong o etsa eka ke motjha\n* E mong o etsa eka ke motswadi wa motjha\n* “Motswadi”: Fa “motjha” wa hao taelo ya se lokelang ho etswa e nang le kgothatso le pabatso\n* “Motjha”: Arabela kamoo o nahanang hore motjha a ka arabela kateng\n\nBuisanang ka hore na ho tsamaile jwang:\n* Sena se entse hore o ikutlwe jwang jwaloka “motswadi” le jwaloka “motjha”?\n* Na o ne o ka etsa dintho ka tsela e betere?\n\nO fe bohle monyetla wa ho ba “motswadi” le “motjha” haeba o ka kgona. Boikwetliso bo tswala katleho!", + "Examples of positive instructions:": "Mehlala ya ditaelo tsa se lokelang ho etswa:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ke rata mmino wa hao. Ke kopa o o fokotse nakong ya dijo tsa tinare e le hore re kgone ho bua? Kea leboha – Kannete ke lebohela seo. \n* Mmino ona o monate jwang. Ke mang ya binang? Ke kopa o o time ha o kena katlung. O ka o letsetsa fatshe ha o kena ka kamoreng ya hao haeba o batla. Kea leboha!", + "Wonderful, I am so happy! Keep up the good work.": "Ke ditaba tse monate, ke thabile haholo! Tswela pele ka mosebetsi o motle.", + "Sorry that things are difficult. All families struggle. We are here to help!": "Re maswabi hore ebe ho thata. Malapa wohle a hula ka thata. Re tla wa re tsoha le wena!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Ho sa tsotellehe hore na kajeno ke eng e tswileng 'taolong', lebala ka yona mme o leke hape hosane. Ho lokile!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Etsa bajete hape - lekgetlong lena O NA LE motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Etsa bajete le motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hlahloba bajete ya hao le motjha le lelapa la hao! Sena se tla hopotsa bohle hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "Steps to make a budget": "Mehato ya ho etsa bajete", "make a budget together with their family": "etsa bajete mmoho le lelapa la hae", "Did you have any challenges when making your budget together?": "Na le bile le diphephetso dife kapa dife ha le etsa bajete ya lona mmoho?", "What whas difficult for you about making your budget together?": "Ke eng e le thatafalletseng ka ho etsa bajete hammoho?", @@ -1328,8 +848,85 @@ "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Ke maswabi ho utlwa seo. Kea tseba hore ho ka ba thata! Ke kopa hore re ke re hlahlobe dintlha hape. Motjha wa hao kapa ditho tse ding tsa lelapa di ka tla mme tsa o thusa!", "My teen did not want to do the budgeting with me.": "Motjha wa ka o ne a sa batle ho etsa bajete le nna.", "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Leka ho qala ka ho etsa bajete le batho ba bang ba baholo lapeng. Motjha wa hao a ka nna a ba le thahasello ho seo le se etsang.\n\nHo etsa bajete ho ka utlwahala ho le thata empa leka ho etsa hore ebe ntho e monate – e etse papadi nakong ya boinotshing! Kapa o ka nna wa leka ho etsa bajete ya @global.w_money_grandma pele.\n\nHopola ho mo babatsa ha le qetile!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Le wena o tshwanelwa ke papatso! Re boetse rea leboha ka hore o sebedise @global.parent_app. Seo se bontsha hore kannete o a tsotella!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Sepheo sa hao ke ho babatsa motjha wa hao. O ithutile ho @data.habit.praise_teen.in_text_title bekeng ena. O entse hantle ka hore o hopole!", + "Your goal was to make a family budget and savings plan.": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le moralo wa ho boloka tjhelete.", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Rea leboha ka hore o re phetele dintho tseo o fetileng ho tsona! O entse hantle ka ho nahana kamoo o ka etsang bajete le ho boloka tjhelete le lelapa la hao. Kannete sena se tla o thusa ho sebeletsa dinthong tse ding tseo lelapa la hao le batlang ho di etsa.\n\nRe ka finyella dikgolo mmoho etswe, matla ke kopano!", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Malapa a mangata a imetswe ke ditaba tsa ditjhelete, haholoholo haeba batjha ba dula ba kopa ntho-di-hana ho fela!\n\nHa re etsa bajete hammoho, re ka dumellana hore na re lokela ho sebedisa tjhelete e kae LE HO baballa ho qoba kgatello ya maikutlo le ho sebeletsa ho fihlella maikemisetso a lelapa la rona.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Dumelang bohle. \n\nSehlooho sa kajeno ke ho etsa bajete ya lelapa. \n\nKe habohlokwa ho etsa bajete, empa ke habohlokwa le ho feta ho etsa bajete e akarelletsang lelapa lohle. \n\nHo etsa jwalo mmoho ho thusa bohle ho utlwisisa hore na lelapa le sebedisa tjhelete jwang le hore na lelapa le boloka tjhelete e kae, ebile le ka etsa ditokisetso tsa hore na le ka baballa tjhelete jwang le le lelapa.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Ho na le mehato e mene ya ho etsa bajete ya lelapa: \n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho. O hloka:\n\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", + "A family budget can help @global.w_money_grandma - and YOU!": "Bajete ya lelapa e ka thusa @global.w_money_grandma - le WENA!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Ho na le mehato e mene ya ho etsa bajete ya lelapa:\n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "O hloka:\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* dijo\n* metsi le motlakase\n* diaparo\n* diakhaonte\n* mananeo a TV a patallwang\n* dintho tsa ho hlapa\n* salune\n* airtime \n* sekolofisi\n* dipalangwang\n* inshorense/maano\n* meriana\n* boithabiso/dipapadi\n* rente\n* dikoloto\n* kereke", + "Think about what we spend money on each month.": "Nahana hore na re sebedisa tjhelete ya rona ho etsang kgwedi le kgwedi.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Fumana pampiri (kapa koranta ya kgale kapa lebokose) le pene. \n* Toroya ditshwantsho tsa dintho tseo wena le lelapa la hao le sebedisang tjhelete ho tsona kgwedi le kgwedi. \n* Ngola haufi le setshwantsho ka seng hore na ntho ka nngwe e ja bokae kgwedi le kgwedi. (Ha ho hlokahale hore le bontshane dipalo haeba le sa batle.)\n* Kopanya tjhelete eo o e sebedisitseng kgwedi ka nngwe.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Ke botle! O qetile mohato wa 1!\n\nA re fetele pele!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "A re bue ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Hangata ha re bone dintho ka leihlo le le leng. Ha re buisana ka dintho tseo re di hlokang le tseo re di batlang, re utlwisisana hantle ebile re ka etsa diqeto tse ntle mmoho tsa kamoo re sebedisang tjhelete ya rona kateng.\n\nShebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Nahana ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Shebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", + "Make a budget!": "Etsang bajete!", + "Make a budget as one big family!": "Etsang bajete le le lelapa le le leng le leholo!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Motho a le mong o tla ithaopela ho bolela letoto la hae (Haeba ho se na moithaopi le ka etsa letoto le letjha mmoho) \n* Nkang maemo a itseng - ba bang e tla ba batho ba baholo, ba bang e tla ba batjha. \n* Etsang qeto ya hore na tjhelete e kenang ke bokae ka kgwedi.\n* Nkang majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata - eo ke tjhelete e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete e kenang ke @global.currency@local.monthly_income, mme o na le dinawa tse @local.number_of_beans, nawa ka nngwe e lekana le @global.currency@local.bean_value.) \n* Etsang qeto mmoho ya hore na le tla e sebedisetsang, mme le behe majwe/dintho setshwantshong se. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", + "Make a budget as a family!": "Etsang bajete le le lelapa!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Ngola hore na tjhelete ya hao e kenang ke bokae ka kgwedi.\n* Nka majwe kapa dinawa tse ding kapa eng kapa eng e nang le dikgetjhana tse ngata - ena ke tjhelete ya lona e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete ya lona e kenang ke @global.currency@local.monthly_income, mme le na le dinawa tse @local.number_of_beans, nawa ka nngwe ke @global.currency@local.bean_value.)\n* Etsang qeto ya hore na le tla etsang ka yona, mme le behe majwe/dintho hodima setshwantsho seo. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Rerang hore na le tla baballa tjhelete jwang, e le hore le ka sebetsana le maemo a tshohanyetso mme la fihlella ditabatabelo tsa lelapa la lona!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Haeba o ka baballa esita le tjhelete e nyane bakeng sa kamoso kapa maemo a tshohanyetso - seo se ka etsa phapang e kgolo ha nako e ntse e feta. \n* Kenya sedikadikwe se bitswang “maemo a tshohanyetso”.\n* Kenya sedikadiswe se bitswang “ditabatabelo tsa lelapa”.\n* Ebe o leka ho tsamaisa tjhelete ya hao e le hore le ka baballa tjheletenyana e itseng kgwedi le kgwedi bakeng sa e nngwe le e nngwe ya dintho tsena.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong o tshwanelwa ke pabatso, le bona jwang?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong lelapeng la hao o tshwanelwa ke pabatso, le bona jwang?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "REA LE LEBOHELA!!! Le entse bajete ya lona – hopolang ho etsa boikwetliso bona hape le ditho tse ding tsa malapa a lona - ha le dumellana ka seo le rerang ho se etsa mmoho, seo se tla etsa phapang e kgolo!", + "Have you talked with your teen about your family budget yet?": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Neng kapa neng ha o ikutlwa o le mong kapa o imetswe, tseba hore ha o mong. Ho na le batswadi lefatsheng lohle ba fetang mathateng a tshwanang le a hao.\n\nO etsa sohle se matleng a hao letsatsi le letsatsi mme re motlotlo ka wena!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ho kenyelletsa lelapa la hao tseleng eo le sebedisang tjhelete ka yona ho ka fedisa kgatello e ngata ya maikutlo le dikgang.\n\nPhethela @local.workshop_data.in_text_title ho thusa lelapa la hao ka ho etsa bajete le ho baballa tjhelete. Hantlentle ena ke ntho e bonolo - o tla bona!", + "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @fields.user_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", + "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @fields.group_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Ho bonahala eka ha o so qete @local.workshop_data.in_text_title. Batswadi ba bangata ba itse ho etsa bajete ho entse hore lelapa le boele le be le kgotso – le lona seo se ka le sebeletsa.\n\nRe boetse rea o leboha ka hore o be motswadi ya ikemiseditseng.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho beha melao e sebetsang ya lelapa.", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Ho thata ho ba le tjhelete e lekaneng ho phetha mabaka kgwedi le kgwedi. Malapa a mangata a na le bothata bona! \n\nHo kopanyelletsa le @global.w_money_grandma - a re shebelleng:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Haesale ke hlokomela ditloholo tsa ka, @global.w_money_teen_girl le @global.w_money_teen_boy, hobane batswadi ba bona ba hlokahetse ba sa le banyane. Hangata re hula ka thata ditjheleteng, hobane ke amohela kerante e nyane.\"", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Ke kgathatsehile haholo. Ho hang ha ke salle le ke sente e ntsho! Jwale ke lwana le batjha ba ka ka dintho tseo ba di batlang – hape.\"", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Le entse mosebetsi o moholo, le phethile mehato ya pele e 3! \n\nA re shebeng kamoo @global.w_money_grandma a hlophisitseng ditjhelete tsa hae kateng, jwalokaha le etsa:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ke batlela ditloholo tsa ka bokamoso bo molemo haholo, empa ha ke tsebe hore na ke tla fumana tjhalete hokae. Bomatjhonisa ba kotsi ebile o ba busetsa tjhelete e ngata haholo. \n\nKe lokela ho baballa tjhelete, empa ekare eo ke ntho e sa kgoneheng!\"", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Sepheo sa ka ke ho tiisa hore setloholo sa ka sa moshanyana se kgona ho ya sekolong se phahameng mme setloholo sa ka sa ngwanana se fihlella takatso ya sona ya yunivesithi. Nka baballa tjhelete e ngata jwang ka tjhelete e nyane eo ke nang le yona?\"", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Kea tseba - a re qaleng ka moralo! E re ke qale ka ho etsa bajete – moralo wa kamoo nka baballang tjhelete ya ka kateng. Mme ke tla baballa tjhelete e nyane nako le nako – ebile ke tla kenela sehlopha sa ho baballa tjhelete le mekitlane.\"", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Hape ke tlameha ho bua le ditloholo tsa ka ho kgetha dintho tseo re ka sebedisang tjhelete e nyane ho tsona beke le beke. Ba tla nthusa ho nahana ka dintho tseo re di batlang empa re sa di hloke.\"", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Dilemo tse seng kae hamorao:\n\n\"Ako boneng, re fihlelletse ditabatabelo tsa rona! Ha kea kadima tjhelete ya metswalle kapa ya bomatjhonisa. Ka ho baballa tjhelete e nyane beke le beke, ke ile ka kgona ho patala sekolofisi sa @global.w_money_teen_boy sekolong se phahameng mme ka baballa tjhelete e nngwe bakeng sa yunivesithi ya @global.w_money_teen_girl. Ke ikutlwa ke le motlotlo haholo ka taba ena.”", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ho baballa tjhelete ho bohlokwa ka mabaka a mmalwa, le leng ke: maemo a tshohanyetso! @global.w_money_grandma le yena o ile a ithuta ntlha ena bophelong:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Bosiung bo bong ho ile ha tsoha sefefo se tshabehang se ileng sa fefola marulelo. Ntho e nngwe le e nngwe e ile ya nelwa ke pula. Ka ho panya ha leihlo ke ne ke hloka ho fumana tjhelete ya ho lokisa marulelo. Ke ile ka ikutlwa ke feletswe ke matla.”", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Nka motsotswana mme o thabele mosebetsi oo o o finyelletseng, ho sa tsotellehe dintho tsohle tse ding tseo o lokelang ho di etsa letsatsi ka leng.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Pale – e sa kang ya sebetsa… \n* Boikwetliso ba ho etsa bajete\n* Pale le puisano – tse ileng tsa sebetsa!\n* Pale le puisano – tse sa kang tsa sebetsa…\n* Puisano ya ditsela tsa ho baballa tjhelete\n* Boikwetliso ba ho baballa tjhelete\n* Dithulusi: Tsela ya ho bajeta le ho baballa tjhelete\nNAHANA - KGETHA - HAHA - RERA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Step 1: THINK": "Mohato wa 1: NAHANA", + "What do we spend on now?": "Hona jwale re sebedisa tjhelete ha re reka eng?", + "THINK Activity": "Ketso ya ho NAHANA", + "Step 2: CHOOSE": "Mohato wa 2: KGETHA", + "Talk together about needs and wants": "Buisanang ka ditlhoko le dintho tseo le di batlang mmoho", + "CHOOSE Activity": "Ketso ya ho KGETHA", + "Step 3: BUILD": "Mohato wa 3: HAHA", + "Make your own budget": "Iketsetseng bajete", + "BUILD Activity": "Ketso ya ho HAHA", + "Step 4: PLAN": "Mohato wa 4: RERA", + "Emergencies and family goals": "Maemo a tshohanyetso le ditabatabelo tsa lelapa", + "PLAN Activity": "Ketso ya ho RERA", + "What are your family savings goals?": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Le ikemiseditse ho baballa tjhelete e ngata hakaalo!\n\nLe ikemiseditse ho baballa tjhelete e ngata hakaalo! Ha re etsa bajete e ntle ebile re mmoho re lokisetsa ho baballa tjhelete, re ka atleha mme ra ikutlwa re le motlotlo ka seo re se finyelletseng!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Kaofela re na le ditabatabelo tsa malapa a rona, jwaloka @global.w_money_grandma. Ka ho behella ka thoko tjhelete enyane kgwedi le kgwedi, le wena o ka fihlella ditabatabelo tsa hao!", + "What are your family savings goals?": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Ke boikemisetso bo bokaakang!\n\nHa le etsa bajete e ntle ebile le lokisetsa ho baballa tjhelete, le ka atleha mme la ikutlwa le le motlotlo ka bolona!", + "Let's talk about this story.": "A re buisane ka pale ena.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Boemong ba @global.w_money_grandma, ho bile le sefefo. \n\nRona re ka hlahelwa ke maemo afe a tshohanyetso?", + "Let's think about this story.": "A re nahane ka pale ena.", + "For @global.w_money_grandma, a storm happened.": "Boemong ba @global.w_money_grandma, ho bile le sefefo.", + "What other emergencies could come up for your family?": "Lelapa la hao le ka hlahelwa ke maemo afe a mang a tshohanyetso?", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Maemo a tshohanyetso a ka hlahela lelapa lefe kapa lefe. Ho baballa tjheletenyana bakeng sa maemo a tshohanyetso PELE a etsahala ho thibela ho kgathatseha le seterese se sengata ka tshohanyetso!", + "Let's talk about different ways we can save.": "A re bueng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Buisanang: \n* Re ka baballa tjhelete ka ditsela dife tse sa tshwaneng? \n* Tsela ka nngwe ya ho baballa tjhelete e na le melemo le mathata afe? \n\nHo utlwisisa tsela ka nngwe hantle ho tla o thusa ho etsa qeto ya tsela e molemo haholo ya ho baballa tjhelete bakeng sa lelapa la hao. \n\nHo sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", + "Let's think about different ways we can save.": "A re nahaneng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Ho na le ditsela tse sa tshwaneng tseo re ka baballang tjhelete ka yona: lapeng, ha re reka dintho tseo re ka di rekisang hamorao, bankeng, kapa sehlopheng sa ho baballa tjhelete.\n\nNahana ka melemo le mathata a tsela ka nngwe ya ho baballa tjhelete.", + "What is the best savings option for your family?": "Tsela e molemo ka ho fetisisa ya ho baballa tjhelete bakeng sa lelapa la hao ke efe?", + "Whatever savings plan you choose, it will really help your family move forward!": "Ho sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", + "Caring for yourself is so essential.": "Ho itlhokomela ke habohlokwa haholo.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Ke ditaba tse molemo, ke thabile haholo hore ebe dintho di tsamaya hantle. Pele ya pele ka mosebetsi o motle.", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Boikwetliso ba lapeng ba bekeng ena ke ho babatsa motjha wa hao hang ka letsatsi. Ho tla nka metsotswana e 10 feela!", "Your goal was to praise your teen.": "Sepheo sa hao ke ho babatsa motjha wa hao.", "Did you have a chance to praise your teen this week?": "Na o ile wa fumana monyetla wa ho babatsa motjha wa hao bekeng ye?", "Yes": "E", @@ -1345,17 +942,140 @@ "Well done for observing how your teen felt; keep it up!": "O entse hantle ka ho lemoha kamoo a ikutlwang kateng; pele ya pele!", "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Seo se ka etsahala - eba le mamello. Tiisa hore o dula o qeta nako le motjha wa hao, e le hore a nke maikutlo a hao e le a bohlokwa haholo. Haeba pabatso e tswa pelong, o tla bona melemo haufinyane!", "No problem - try to observe how they respond the next time!": "Ha ho na bothata - leka ho hlokomela kamoo a arabelang kateng nakong e tlang!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Sepheo sa hao ke hore o buisane ka boemo ba tlokotsi bo ka hlahang le motjha wa hao le ho itokisetsa bona.", - "prepare for a possible crisis with their teens": "lokisetsa tlokotsi e ka hlahang le batjha ba hao", - "prepare for a possible crisis with your teen": "lokisetsa tlokotsi e ka hlahang le motjha wa hao", - "My teen told me that something serious happened to them and I did not know how to handle it.": "Motjha wa ka o mpolelletse hore o hlahetswe ke ntho e tebileng mme ke ne ke sa tsebe hore na ke sebetsane le taba eo jwang.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Babatsa motjha wa hao hobane a o bolelletse, ha ho bonolo ho etsa jwalo! Hopola, o ka sebedisa tsebo yohle eo o e kotutseng lebokoseng la hao la dithuluse: Nka kgefu, sebedisa mehato e mene ya ho rarolla mathata, mme o batle thuso eo wena le motjha wa hao le e hlokang!", - "Get support": "Fumana thuso", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Puisano eo e ile ya etsa hore ke ikutlwe ke sa phutholoha ho hang hobane e ile ya nkgopotsa ntho e bohloko e kileng ya nhlahela.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Ha ntho e re hopotsa ka ketsahalo e jwalo, ho tlwaelehile hore re ikutlwe re kwatile kapa re halefile. Ho bohlokwa ho fumana nako ha o kgutsitse, hore ka nahana ka hore na o hloka tshehetso ya mofuta ofe. Mohlomong o tlameha ho buisana le motho e mong.", - "One of us did not feel comfortable.": "E mong wa rona o ne a sa ikutlwe a phutholohile.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Ena ke ntho e thata hore batho ba bue ka yona. E fumanele nako eo le phutholohileng. Rea tseba hore ho bonolo haholo ho qoba ho bua ka taba le ho tshepa hore e keke ya re etsahalla. Empa, ho ithuta ho sebetsana le tlokotsi ho tshwana le ho fumana inshorense; KAMEHLA ho molemo ho nahana ka yona le ho itokisetsa yona.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Sepheo sa hao ke ho etsa moralo wa dikotsi le ditsela tsa ho fana ka tshehetso o sebedisana le motjha wa hao - bobedi motseng wa heno le inthaneteng.", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Le wena o tshwanelwa ke papatso! Re boetse rea leboha ka hore o sebedise @global.parent_app. Seo se bontsha hore kannete o a tsotella!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ho babatsa ke tsebo e matla haholo ya botswadi.\n\nHa re babatsa batjha ba rona ha ba etsa ntho e ntle, re tla ba bona ba ipabola le ho feta ka makgabane a mangata!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Dumelang bohle.\n\nSehlooho sa rona sa kajeno ke pabatso.\n\nHo molemo ho babatsa bana ba rona ha ba etsa dintho tse ntle hobane ha re etsa jwalo, ba tla itshwara hantle le ho feta ka tsela eo re batlang ho ba bona ka yona.\n\nLe rona re se ke ra lebala ho ipabatsa ha re entse dintho tse ntle!", + "Praise time!": "Nako ya pabatso!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Nakong e tlang ha o bona motjha wa hao, mo babatse ka ntho e le nngwe eo a e etsang hantle! \n\nMme o qetetse neng ho ipabatsa kapa ho babatsa motho e mong e moholo lapeng la hao? Leka!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore dintho tse nyane di tlisa phetoho e kgolo.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Pabatso ke moriana o moholo. \n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", + "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @fields.user_name! Tloholetso ka ho qala beke ea boraro ea @global.parent_app. \n\nO letetsoe ke thupelo e ncha! Na o ka hakanya sehlooho sa thupelo setshoantshong sena?", + "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @fields.group_name! Tloholetso ka ho qala beke ea boraro ea @global.parent_app. \n\nO letetsoe ke thupelo e ncha! Na o ka hakanya sehlooho sa thupelo setshoantshong sena?", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Rea leboha ka hore o sebedise @global.parent_app ho itlhomella le ho hlomella ba lelapa la hao.\n\nLeka @local.workshop_data.in_text_title mme o hahe tsebo e hlollang ya botswadi!", + "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Lumela @global.user_name, u letetsoe ke thupelo e ncha hosane. Ho bonahala eka ha u so qete @local.workshop_data.in_text_title. Ka sebele ke e khutshoanyane (kea ho tshepisa) - u ka ba ua e phetha ha u ntse u emetse lijo tsa mantsiboea ho pheha. Ke hobane'ng ha u sa tsamaee ho eona ha u e-na le metsotso e seng mekae?\n\nKe leboha hape ka ho sebelisa @global.parent_app.", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla bulwa wekshopo e ntjha. E leke - o tla bona ha boitshwaro ba motjha wa hao bo fetoha.", + "Think about the last time someone thanked you, or said you did something great.": "Nahana ka lekgetlo la ho qetela ha motho e mong a ne a o leboha, kapa a bolela hore o entse ntho e itseng hantle.", + "How did it make you feel?": "Seo se ile sa etsa hore o ikutlwe jwang?", + "Parents usually don’t get thanked or praised enough.": "Hangata batswadi ha ba lebohuwe kapa ho babatswa ka ho lekaneng.", + "How does it make you feel when nobody says \"thank you\"?": "O ikutlwa jwang ha motho e mong a re ho wena \"kea leboha\"?", + "Tired": "O kgathetse", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Le motjha wa hao a ka ikutlwa ka tsela eo. Ke sona se etsang hore thulusi ya beke ena ya botswadi e be e bonolo empa e le bohlokwa: Mo babatse ha a entse dintho hantle.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Pabatso e ile ya etsa hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?", + "Why did she praise them?": "Ke hobaneng ha a ile a ba babatsa?", + "To get them to do it more often": "Hore ba etse seo hangata haholo", + "To help her finish her work": "Ho mo thusa hore a qete mosebetsi wa hae", + "To make them feel good": "Hore ba ikutlwe ba thabile", + "To make herself feel good": "Hore a ikutlwe a thabile", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Dintho tseo kaofela ke nnete! \n\nHa batjha ba hae ba thabile, @global.w_praise_female_caregiver_name o ikutlwa a thabile. O phethile mosebetsi wa hae.", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Pabatso ke moriana o matla haholo. \n\nA re shebeng mohlala wa @global.w_praise_female_caregiver_name le baradi ba hae:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Ha @global.w_praise_female_caregiver_name a phathahane, hangata baradi ba hae ba babedi baa lwana. Empa kajeno, moradi wa hae e moholwanyane o thusitse moena wa hae ka mosebetsi wa hae wa sekolo!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Kea leboha hore ebe o entse mosebetsi wa hao wa sekolo, @global.w_praise_girl, ebile kea leboha hore ebe o thusitse ngwaneno, @global.w_praise_teen_girl. Ke ikotla sefuba ka lona!\"", + "Step 1: Share what went well and what was hard": "Bohato ba 1: Pheta se tsamaileng hantle le se tsamaileng hampe", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "\"Ke ithutile dintho tse ngata haholo ka bophelo ba motjha wa ka nakong ya boinotshing! Empa kamora letsatsi la pele, motjha wa ka o ne a ipatlela ho bapala ka founo ya hae feela.\"", + "Step 2: Bring ideas!": "Bohato ba 2: Fana ka dikeletso!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "\"O entse hantle ka hore o leke! Mohlomong o ka sisinya hore le etse dintho tse ding tse monate mmoho le motjha wa hao.\"\n\n\"E, kapa na le ka etsa ho hong mmoho ka founo ya hae? Kapa na a ka o bontsha hore na founo ya hae e sebetsa jwang?\"", + "Step 3: Pick and try one!": "Bohato ba 3: Kgetha mme o leke e nngwe!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Kea leboha ka dikeletso tseo tse babatsehang! E, hosane ha sekolo se tswa ke tla kopa motjha wa ka hore a mpontshe hore na founo ya hae e sebetsa jwang. Na ho na le ya ka ithaopelang ho ba motjha wa ka hona jwale, e le hore ke prakthise ho mo kopa?”", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Nahana hore na mesebetsi ya hao ya lapeng e tsamaile jwang bekeng ena. \n\nTjhentjhanang ha le tshohla taba:\n\n* Ke eng e tsamaileng hantle hona bothata bo bile hokae?\n* Ha le kopanya dihlooho, le nahana hore tharollo ekaba efe?\n* Kgethang tharollo e le nngwe mme le e leke hamorao le motjha wa lona! \n\n(Kapa le ka e prakthisa hona jwale e le hore ho be bonolo hamorao!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Ditholwana tsa pabatso\n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Ditholwana tsa pabatso\n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Phetelanang ditaba:\n\n* Motho e mong o qetetse neng ho o leboha kapa ho o bolella ntho e monate? \n* Seo se ile sa etsa hore o ikutlwe jwang? \n* O ikutlwa jwang ha ho se na motho ya o lebohang kapa ya o babatsang ha o entse ntho e itseng? \n\nHangata ha re lebohuwe kapa ho babatswa ka ho lekaneng jwaloka batswadi. Mohlomong ke nako ya ho behela motjha wa hao mohlala o motle mme o qale ka ho mo babatsa ha a entse ntho e itseng hantle!", + "Let's discuss this story.": "A re buisaneng ka pale ena.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Buisanang:\n\n* Pabatso e entse hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?\n* Ke hobaneng ha a ile a ba babatsa?", + "The same can work for you!": "Le wena seo se ka o sebeletsa!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name o ile a babatsa batjha ba hae...", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ho etsa hore ba etse seo hangata\n* Ho mo thusa hore a qete mosebetsi wa hae\n* Hore ba ikutlwe ba thabile\n* Hore a ikutlwe a thabile", + "SEE IT": "E BONE", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Sheba eng kapa eng eo motjha wa hao a e etsang e thusang kapa e molemo, mme o mo babatse ka seo. Ba ka nna ba se bontshe thabo, empa o tla ba bona ha ba etsa ntho eo e molemo hape. Hape ba tla lemoha hore o a hlokomela ebile o a tsotella.", + "SAY IT": "E BOLELE", + "Be enthusiastic – really mean it when you say it!": "Tjheseha – bua se hlileng se tswang botebong ba pelo ya hao!", + "REPEAT IT": "E PHETE", + "Try to find something to thank them for every day. Even something really small.": "Leka ho fumana ntho e itseng eo o ka mo lebohang ka yona letsatsi le letsatsi. Esita le haeba e le nyane haholo.", + "You can also praise other adults in your household, too. Notice how they respond!": "Hape o ka babatsa batho ba bang ba baholo lapeng. Lemoha hore na ba arabela jwang!", + "Let's practice giving praise.": "A re itlwaetseng ho babatsa batho ba bang.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Phetelanang ditaba: \n\n* O ka babatsa motjha wa hao ka lebaka la eng? \n* Motho e mong o entse eng e ntle nakong ya wekshopo ye? Mo bolelle!\n* O ile wa ikutlwa jwang ha o babatsa motho e mong?\n* O ile wa ikutlwa jwang ha o babatswa?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ka dinako tse ding ho thata ho nahana ka ntho eo o ka babatsang motjha wa hao ka lebaka la yona! Dikeletso tse tswang ho batswadi ba bang ke tsena:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ha a tshwere motho e mong ka mosa\n* Ho hlwekisa kamore ya hae\n* Ha a bile teng dijong tsa lelapa\n* Ha a dumedisitse ditho tse ding tsa lelapa\n* Ha a hlokometse banababo\n* Ha a fihlile ka nako lapeng\n* Ha a bontshitse hore o nahanela batho ba bang \n* Ka ho re 'ke kopa' kapa 'kea leboha' \n* Ha a ile sekolong\n* Ha a phetha mesebetsi ya lapeng kapa ya sekolo\n* Ho dula ka kgotso nakong ya dijo", + "Great to hear that you are doing well. You are a wonderful parent!": "Ke thabela ho utlwa hore o etsa hantle. O motswadi wa mmakgonthe!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ke maswabi ho utlwa hore kajeno dintho ha di o tsamaele hantle. O entse hantle ka ho leka ho rarolla bothata. Ha ho na motho ya nang le dikarabo tsohle empa kannete o entse sohle seo o ka se kgonang!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ke maswabi ho utlwa hore letsatsi la hao la kajeno ha le monate. O etsa hantle ka ho tsoha hoseng ho hong le ho hong mme o leke hape, leha o ikutlwa o kgathetse. Sena ke sebete sa nnete le boitelo!", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Bekeng ena, beha molao o le mong mmoho le motjha wa hao.\n\nHopola ho babatsa motjha wa hao kamora moo!", + "make rules with their teens": "etsa melao le batjha ba bona", + "Did you have any challenges when trying to make a rule together?": "Na le bile le diphephetso dife kapa dife ha le leka ho etsa melao mmoho?", + "What was difficult for you about making a rule with your teen?": "Ke eng e ileng ya o thatafalla ha o etsa molao le motjha wa hao?", + "My teen and I could not agree on a rule.": "Nna le motjha wa ka re ne re sa dumellane ka molao.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Nahana hore na molao oo ke o utlwahalang. Na motjha wa hao a ka o latela? Ha le etsa molao le le lelapa, ho a thusa ho nahana ka motjha wa hao, hore na o dilemo di kae, le hore na ke eng ya bohlokwa ho yena.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Motjha wa ka a ka nna a nka ho sa loka hore yena o lokela ho latela molao oo nna ke sa o lateleng.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Ka dinako tsohle re lokela ho hopola hore bana ba ithuta hantle ho rona. Ha re latela melao haholo, le bona ba tla latela melao.\n\nO ka fetola molao ho tiisa hore ho ka kgoneha hore bohle ba o latele, o nahanne ka boikarabelo ba hao le boikarabelo ba motjha wa hao (ka mohlala mesebetsi ya sekolong kapa ya boiphediso).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ke ile ka ikutlwa ke sa phutholoha, hobane ke nka hore ke nna ya lokelang ho etsa molao eseng motjha wa ka.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Molekane wa ka o ile a ikutlwa a sa phutholoha, hobane o nka hore ke yena ya lokelang ho etsa molao, eseng motjha wa ka.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Ha re etsa melao hammoho le batjha ba rona, seo se thusa ditho tsa lelapa ho utlwisisana habetere. Etlaba melao e utlwahalang le ho feta mme batjha ba tla ikemisetsa ho latela melao ebile ba tla kgona ho e latela.", + "When we tried to set a rule, we got into an argument.": "Ha re leka ho beha molao, re ne re pheha kgang.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Na motjha wa hao o ne a thabile ha le leka ho beha molao? Ho molemo haholo ho beha melao ha boemo bo kokobetse. Haeba wena kapa motjha wa hao le kgathetse kapa le lapile, ho molemo ho buisana ka melao hamorao.", + "We were not able to stick to the rule.": "Ha re kgone ho imatahanya le molao.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Molao o lokela ho toba taba mme ebe ntho e kgonehang. Tiisa hore o na le molao o ka bolokwang o le bonolo, jwaloka ho ja dijo mmoho ka Sontaha se seng le se seng ho fapana le bosiu bo bong le bo bong. Na o tlameha ho fetofetoha le molao?", + "Your goal was to make ONE rule with your teen this week.": "Sepheo sa hao e ne e le ho etsa molao O LE MONG le motjha wa hao bekeng ena.", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "O entse hantle ka sena! Ha ho bonolo, mme batjha ba ke ke ba latela melao ka dinako tsohle, empa ho etsa melao e seng mekae ya bohlokwa mmoho ke tsela e ntle ya ho qala. Ipabatse ka ho etsa sena - re motlotlo ka wena!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Melao e thusa batjha ho utlwisisa hore na ho lebeletswe eng ho bona.\n\nHo na le menyetla e mengata ya hore batjha ba mamele melao haeba melao e etswa LE batjha mme ba babatswa ha ba e latela!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Dumelang bohle.\n\nSehlooho sa kajeno ke melao.\n\nMelao e kgothalletsa kgotso ka lapeng ebile e kgothalletsa ditho tsa lelapa ho utlwisisana.\n\nMelao e kgothalletsa setho ka seng sa lelapa ho jara boikarabelo; kahoo, ho bohlokwa ho ba le melao ya lelapa.\n\nLelapa le nang le melao ya lelapa le phela ka kgotso.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Ngola molao o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao – o tla be o etsa sena e le boikwetliso ba lapeng bekeng ena.\n\nO tla nahanang ka wona?", + "Have you managed to set a rule together with your teen?": "Na o kgonne ho beha molao mmoho le motjha wa hao?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ka dinako tse ding ho bonahala eka batjha ba hao ba hloname leha o entse sohle se matleng a hao. Hopola o etsa mosebetsi o tswileng matsoho, mme o tla ba le dinako tse monate le bona!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @local.workshop_data.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", + "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @fields.user_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", + "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @fields.group_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Rea leboha hore ebe o ile wa boela wa sebedisa @global.parent_app le ka hore ebe o kene leetong lena la botswadi ke boikemisetso.\n\n@local.workshop_data.in_text_title e tla o bontsha hore na melao e behwa jwang ka tsela e tla thusa motjha wa hao o e utlwisisa le ho e latela habonolo.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. E ke ke ya nka nako e telele mme e tla thusa motjha wa hao ho ntlafatsa tsela eo a latelang melao ka yona!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", + "They discussed the reasons behind the rule": "Ba ile ba buisana ka mabaka a molao", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy", + "The rule was clear, specific and fair": "Molao o ne o hlakile, o toba taba ebile o lokile", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse hore ho etswe molao", + "That's right, making clear rules together in a calm and positive way works so well!": "Ka sebele, ho etsa melao e hlakileng mmoho le ka moya o tlaase le o motle ho a atleha!", + "She praised him": "O ile a mo babatsa", + "She rewarded him when he followed the rule": "O ile a mo putsa ha a latetse molao", + "Exactly - a positive response makes all the difference!": "Ka sebele ho jwalo - karabo e ntle e tlisa phapang e kgolo!", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "A re bale se etsahetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 wa hae:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"O dula o fihla leite lapeng!\"\n\n@global.w_rules_teen_boy: \"Nna ha ke fihle leite, ha ke tsebe le hore na leite e bolelang! Ako tlohele ho nkemella.\"", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Ke molao ofe o tobileng oo @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o etsang mmoho?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "A re boneng hore na @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba entse sena jwang letsatsing le hlahlamang:\n\n@global.w_rules_female_caregiver_1: “Ke batla hore o ithabise, @global.w_rules_teen_boy, empa hape ke kgathatsehile hore o fihla lapeng mona leite. Na o tseba lebaka la seo?” \n\n@global.w_rules_teen_boy: “Hobane o batla hore ke be le nako e lekaneng ya mosebetsi wa ka wa sekolo?”", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Ho lokile, ebile ho kotsi, o ka lemala sebakeng sena ha o le kantle kamora hore letsatsi le dikele. O nahana hore o tlameha ho fihla lapeng ka nako mang?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ke nahana hore nka fihla lapeng ka 10 ya bosiu?\" \n\n@global.w_rules_female_caregiver_1: “Ekare ke bosiu haholo, mantsiboya ka 6 ho tla ba jwang? Kapa neng neng ka dinako tseo?\"", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Nka fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo ebe ke fihla ka bosiu ka 10 ka Labohlano le ka Moqebelo?” \n\n@global.w_rules_female_caregiver_1: “E, ho lokile. Ho tloha jwale ho ya pele, molao wa lelapa ke hore o lokela ho fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo le bosiu ka 10 ka Labohlano le ka Moqebelo. Empa kamehla o felehetswe ke motswalle wa hao. Akere?”", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “E, ho lokile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboha haholo, @global.w_rules_teen_boy, hore o re thuse ho etsa molao o motle mmoho. Ke motlotlo ka wena le ho bona kamoo o jarang boikarabelo kateng.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Letsatsing le hlahlamang...\n\n@global.w_rules_female_caregiver_1: “Kea leboha, @global.w_rules_teen_boy, ha o fihlile lapeng ka nako. Ha o qetile mosebetsi wa hao wa sekolo, re ka ja dijo tseo o di ratang tsa mantsiboya.”", + "Online Safety": "Boipaballo Inthaneteng", + "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Melao e bohlokwa ho tiisa hore batjha ba hao ba sireletsehile - le inthaneteng. Taba ena e tshohlwa haholo Wekshopong ya Beke le Beke ha ho rerwa tsa polokeho, empa hona jwale a re shebeng taba ena ka lekgetlo la pele!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, na o entse homeweke ya hao?\"\n\n@global.w_rules_teen_girl: \"Ke kopa motsotsonyana @global.w_rules_female_caregiver_2, ke sa qetela @global.teen_social_medium video ena\"", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: \"O setantshi se hlwahlwa e le kannte! Ako mpolelle hore na ke hobaneng ha o rata ho tantsha?\"\n\n@global.w_rules_teen_girl: \"Metswalle yohle ya ka e rata tantshi, @global.w_rules_female_caregiver_2. Ho na le batho ba 600 ba ratang tantshi ya ka inthaneteng le balatedi ba 120.\"", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka tsela eo o tantshang ka yona, @global.w_rules_teen_girl. Empa re tlameha ho tiisa hore o sireletsehile. \n\nKea tseba hore metswalle ya hao e sheba @global.teen_social_medium, empa ha akhaonte e bonwa ke bohle, ho na le batho ba bang ba shebang divideo tsa batjha ka mabaka a bona a ditaba tsa thobalano. Ka dinako tse ding ba buisana le batjha. Ba iketsa eka ba mosa empa ba qetella ba sokela le ho hlekefetsa batjha.\"", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"A re kene inthaneteng mmoho mme re bone hore na re ka etsang ho tiisa hore ntho ena eo o e thabelang e boetse e bolokehile. Bona – o ka etsa hore akhaonte ya hao e be poraefete le ho laola hore na ke mang ya o salang morao.\n\nKahoo o ka amohela batho bao o ba tsebellang sekolong kapa motseng mona, empa eseng batho bao o kopanang le bona inthaneteng.\n\nNa re ka etsa molao mmoho hore o ka sebedisa @global.teen_social_medium, empa e le akhaonte e poraefete? Kea o tshepa hore o a tseba hore na ke mang eo o ka mo amohelang!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ke ikotla sefuba ka wena @global.w_rules_teen_girl\"", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "O entse mosebetsi o tswileng matsoho. E nngwe le e nngwe ya ditlwaelo tsena e matlafatsa lelapa la hao. Ikotle sefuba.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang… \n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le boikgopotso – e sa atlehang… \n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "What went well here in making a rule together?": "Ke eng e tsamaileng hantle mona ha ho etswa molao mmoho?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "O nahana hore @global.w_rules_teen_boy o tsebile jwang hore @global.w_rules_female_caregiver_1 o a mo rata?", + "Making the rule together went well because...": "Ho etsa molao mmoho ho tsamaile hantle hobane...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Ba ile ba buisana ka mabaka a molao oo\n* @global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy\n* Molao o ne o hlakile, o toba taba, ebile o lokile\n* @global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse ha ho etswa molao", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy o ile a tseba hore @global.w_rules_female_caregiver_1 o a mo rata hobane...", + "* She praised him\n* She rewarded him when he followed the rule": "* O ile a mo babatsa\n* O ile a mo putsa hobane a latetse molao", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Melao ya lelapa e thusa ho boloka batjha ba rona ba sireletsehile, le ho utlwisisa se lebeletsweng ho bona. Ha o kenyelletsa motjha wa hao ha o etsa melao, ho na le monyetla o moholo wa hore a e hlomphe.", + "TEAM RULES": "MELAO YA SEHLOPHA", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Rera melao LE motjha wa hao. Qala ka molao o le mong wa pele o motjha - o ka kenyelletsa o mong hamorao. Buisanang ka mabaka a molao oo mme o mamele maikutlo a hae.", + "REAL RULES": "MELAO YA SEBELE", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Etsa hore e tsamaisane le maemo a sebele bakeng sa motjha wa hao, mme e hlake le ho toba taba e le hore ho se utlwisisane ho se be teng. Eseng ‘ka nako’ empa ‘ka 7 mantsiboya’.", + "PRAISE RULES!": "MELAO YA PABATSO!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Babatsa motjha wa hao ka ho rala molao le wena, mme o mo babatse ha a o hlompha!", + "Let's practice making rules.": "A re tlwaeleng ho etsa melao.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Ke molao ofe o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao? \n* O nahana hore motjha wa hao o tla ikutlwa jwang ka molao oo? \n\nHopola, etsa melao e tobileng le ya sebele!", + "Here are some of the rules other families created:": "Ena ke e meng ya melao eo malapa a mang a e qadileng:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Motjha a ka bapalla kantle kamora ho qeta homeweke\n* Ditho tsohle tsa lelapa di ja dijo tsa tinare mmoho\n* Motjha wa 1 o hlatswa dijana ka Sontaha le ka Mantaha, Motjha wa 2 ka Labobedi le Laboraro\n* Re buisana ka mosa le hamonate\n* Ha o mametse mmino o tlameha ho sebedisa di-earphone", + "Remember that YOU matter!": "Hopola hore WENA o motho wa bohlokwa!", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "O entse hantle ka ho lemoha boikutlo bo botle. Ke thabela ho utlwa hore o ikutlwa hantle kajeno!", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "O entse hantle ka ho lemoha boikutlo bo bohloko. Hase phoso ho se ikutlwe hantle ka dinako tse ding. Hopola hore ha o mong.", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Etsa dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo. \n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Haeba ha le eso etse sena mmoho, etsang dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo.\n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", "map risks and support with their teens": "etsa moralo wa dikotsi mme o tshehetse batjha ba hae", "map risks and support with your teen": "etsa moralo wa dikotsi mme o tshehetse motjha wa hao", "My teen and I disagreed on which areas and online activities were unsafe.": "Nna le motjha wa ka ha re a dumellana hore na ke dibaka dife le diketso dife tsa inthaneteng tse neng di sireletsehile.", @@ -1370,7 +1090,153 @@ "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Ho thata ho tseba dintlha tsohle tse amanang le metse ya habo rona. Kenyelletsa setho se seng sa lelapa kapa motswalle ha o etsa mmapa. Hape o ka etela dibakeng tse teng haeno tse fanang ka ditshebeletso mme wa botsa hore na ba etsa eng. Haeba re na le tsebo e ngata, ho ka ba bonolo hore re tiise hore malapa a rona a sireletsehile!", "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Ha ke tsebe haholo ka theknoloji, kahoo ha ke tsebe hore na ke bue le motjha jwang ka yona.", "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Ho hang ha ho na bothata! O ntse o ka tshehetsa motjha wa hao. Kopa motjha wa hao ho o hlalosetsa sesebediswa seo a se sebedisang - o ka etsa sena nakong ya boinotshing. Ona ke monyetla o babatsehang wa ho bontsha motjha wa hao hore o thahasella bophelo ba hae le ho buisana ka dikotsi tse ka hlahang mmoho. Haeba o sa kgodiseha hore na ke melao efe eo le ka e behang, o ntse o ka dumellana le motjha wa hao ho leka molao o motjha ka dibeke tse pedi ebe kamora moo le buisane kamoo dintho di tsamayang kateng ebe le a o fetola ha ho hlokeha!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Sepheo sa hao ke ho leka ho rarolla bothata kapa kgohlano hammoho le motjha wa hao.", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Sepheo sa hao ke ho etsa moralo wa dikotsi le ditsela tsa ho fana ka tshehetso o sebedisana le motjha wa hao - bobedi motseng wa heno le inthaneteng.", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Batjha ba qeta nako e ngata haholo ba se katlung kapa ba le inthaneteng, moo ho leng thata ho tiisa hore ba bolokehile.\n\nHo buisana ka dibaka tse sireletsehileng le tse sa sireletsehang, le tsela ya ho thibela mathata, ka sebele ke ntho e thusang!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Dumelang bohle.\n\nKajeno sehlooho sa rona ke polokeho ya batjha.\n\nKe boikarabelo ba rona jwaloka batswadi ho tiisa hore batjha ba rona ba sireletsehile ka dinako tsohle. Re tlameha ho tiisa hore batjha ba rona ba sireletsehile metseng eo re dulang ho yona. Ke boikarabelo ba rona hore re ba tsebise ka dibaka tse sireletsehileng le tse sa sireletsehang metseng.\n\nHape ke boikarabelo ba rona ho tiisa hore ba utlwisisa dikotsi tseo ba ka nnang ba kopana le tsona ha ba le inthaneteng. Ka tsela eo batjha ba rona ba tla ba le boikarabelo mme ba tla kgona ho etsa diqeto tse nepahetseng hore le bona ba tiise hore ba sireletsehile.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Buisanang:\n* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri. \n\nKa tlaase mona ke dibaka tse ding tse ka bang molemo", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Nako le nako ha o rera kapa o boloka moralo wa boipaballo, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "A re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena - haeba motjha wa hao a le teng hona jwale, le ka etsa seo mmoho hona jwale!", + "My family can join in now!": "Lelapa la ka le ka kena hona jwale!", + "Let me try it out by myself": "E re ke e leke ke le mong pele", + "Safety Plan": "Moralo wa Boipaballo", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!\n\nA re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nA re etseng dimmapa tsena re le sehlopha hona jwale. \n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena.", + "Step 1: What are important places in your community?": "Mohato wa 1: Ho na le dibaka dife tsa bohlokwa motseng wa habo lona?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Fumana sekgetjhana sa pampiri (kapa koranta ya kgale kapa khateboto) le pene. \n* Toroya mmapa wa motse wa habo motjha wa hao, ka ditshwantsho tsa dibaka tsohle tsa bohlokwa jwaloka diterata, ntlo ya hao, sekolo, dishopo, dibaka tseo motjha wa hao a di etelang.", + "Step 2: Which places are safe and unsafe?": "Mohato wa 2: Ke dibaka dife tse sireletsehileng le tse sa sireletsehang?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Buisanang:\n\n* Ke dibaka dife mmapeng wa hao tse bolokehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa bolokehang bakeng sa batjha \n – Di tshwaye ka SEKERE\n* Ke eng e etsang hore sebaka se bolokehe kapa se se ke sa bolokeha? \n* Wena le motjha wa hao le ka etsang hore motjha wa hao a dule a bolokehile?", + "Step 3: Where can you get support?": "Mohato wa 3: O ka fumana tshehetso hokae?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n\n* Wena le motjha wa hao le ka fumana tshehetso hokae ha o tobane le tlokotsi? \n – TSHWAYA dibaka tseo ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", + "Step 4: What are risky places online and how can you make them safer?": "Mohato wa 4: Inthaneteng ho na le dibaka dife tse kotsi hona o ka etsa jwang hore di sireletsehe?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba di sebedisang \n* Babatsanang ka lebaka la tsela e ntle eo ba tsebang ho sebedisa webosaete ka yona! \n* Buisanang ka hore na ke dife tse ka nnang tsa ba kotsi. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa ha motjha wa hao le metswalle ya hae ba sebedisa inthanete ka tsela e sireletsehileng?", + "Have you talked with your teen about safety measures?": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Tsena ke dinako tse boima haholo tsa ho ba motswadi. O lokela ho ikotla sefuba ka sohle seo o se entseng.\n\nNahana ka dinako tsohle tseo o entseng hore motjha wa hao a bobothehe le tlhokomelo yohle eo o mo fileng yona. Batswadi ba etsa dintho tse hlollang, le etsa dintho tse hlollang!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "E le ho sireletsa motjha wa hao, ho molemo ho buisana ka motse wa habo lona le dintho tse mo hlahelang inthaneteng.\n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo o ka etsang sena kateng!", + "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @fields.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", + "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @fields.group_name! Kaofela ha lona le batla le fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "O se o fumane tsebo e ngata haholo ya botswadi dibekeng tsena tse fetileng!\n\nPhethela wekshopo e tlang hore o fumane tsebo e nngwe e tla o thusa.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Ho bonahala eka ha o eso phethele @local.workshop_data.in_text_title. Ho rala hammoho le motjha wa hao ho ka thibela mathata a mangata – leka pele o fetela pele!\n\nO entse hantle ka ho sebedisa @global.parent_app ho tshehetsa lelapa la hao.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Rea a o thoholetsa, o phethetse @local.workshop_data.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "A re nahaneng ka se etsahalletseng @global.w_safe_teen_girl_1:", + "What was risky about that situation?": "Ke eng e neng e le kotsi ka boemo boo?", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho", + "@global.w_safe_teen_girl_1's friend was encouraging her": "Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding", + "Many girls in our communities get pregnant or catch HIV from older men": "Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", + "All those things are true!": "Dintho tseo kaofela ke nnete!", + "Let's think about our teens' online safety.": "A re nahaneng ka boipaballo ba batjha ba rona inthaneteng.", + "What is the biggest online risk for teens these days?": "Kotsi e kgolo ka ho fetisisa eo batjha ba matsatsing ana ba tobanang le yona inthaneteng ke efe?", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", + "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Puisano ke ntho ya bohlokwa ka ho fetisisa!\n\nA re boneng se etsahetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", + "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Ho na le ntho e etsahetseng ha ke tsamaile le metswalle ya ka @global.w_safe_teen_girl_2 le @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Ke mametse, @global.w_safe_teen_girl_1\"", + "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Monna wa koloi: “Dumela sematsatsa. Ke kgale ke ntse ke o batla. O motle hakaakang! Kana lebitso la hao o mang? \n\n@global.w_safe_teen_girl_2: “Lebitso la hae ke @global.w_safe_teen_girl_1”", + "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Monna wa koloi: “@global.w_safe_teen_girl_1, na o ka rata ho tsamaya le nna ho ya nwa terenki le ditjhipsi. Kena hle, o tla kgutla ka nako, kea o tshepisa…” \n\n@global.w_safe_teen_girl_1: “Ha ke dumele hore ke ntho e nepahetseng eo…”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “O lehlohonolo mokgotsi wa ka. Ke kgalla eka monna enwa a ka kopa ho tsamaya le NNA le ho nthekela dimpho. Kea o jwetsa, haeba o hana ke tlo jwetsa batho bohle hore o setlaela!”", + "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 le ska tsamaya le yena! Itlhokomeleng! A re yeng hae. Ho kotsi ho tsamaya le batho bao re sa ba tsebeng. Ebile o moholo ho wena hape o etsa ntho e mpe.\"\n\n@global.w_safe_teen_girl_1: “Ha ke tsebe…”", + "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: \"Pfff, ke motlotlo ka wena hore ebe ha o a ka wa kena ka koloing eo. E ne e le boemo bo kotsi haholo, kea leboha hore ebe o mpolelletse se etsahetseng!\"", + "Let's look at another example of a dangerous situation together.": "A re shebeng mohlala o mong wa boemo bo kotsi mmoho.", + "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: \"Mokgotsi wa ka o dula a bua ka moshemane e mong ya lekanang le rona wa inthaneteng... O tlo romella dinepe tsa hae ho moshemane eo. Na ho betere hobane ke thaka rona?\"", + "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: \"O motswalle wa nnete hobane o kgathatsehile ka mokgotsi wa hao. Ho romela dinepe tse sexy ho yena ho kotsi le ho feta.\"", + "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: \"Ka dinako tse ding ba pata seo ba hlileng ba leng sona inthaneteng – a ka re ke thaka ya lona empa e le monnamoholo ya dilemo di 50. Kapa ha ba kgaohana, a ka romella dinepe tseno ho batho bohle mme mokgotsi wa hao o tla utlwa bohloko haholo.\"", + "Doing any of these makes you a great parent.": "Ho etsa efe kapa efe ya tsena ho o etsa motswadi wa mmakgonthe.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Pale le puisano – e sebeditseng!\n* Pale le puisano – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Pale le boikgopotso – e sebeditseng!\n* Pale le boikgopotso – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "A re bue ka se etsahalletseng @global.w_safe_teen_girl_1", + "Discuss together: \n\nWhat was risky about that situation?": "Buisanang:\n\nKe eng e neng e le kotsi ka boemo boo?", + "The situation was risky because...": "Boemo boo bo ne bo le kotsi hobane...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho\n* Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho \n* Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding \n* Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona\n* Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", + "Let's talk about our teens' online safety.": "A re buisaneng ka boipaballo ba batjha ba rona inthaneteng.", + "What are some of the online risks for teens these days?": "Batjha ba matsatsing ana ba tobana le dikotsi dife inthaneteng?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano \n* Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe\n* Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya\n* Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko\n* Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", + "MAPS": "DIMMAPA", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Etsa DIMMAPA le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang motseng wa heno le inthanete. Buisanang ka tsela ya ho boloka tlhahisoleseding ya bona, difoto le divideo e le lekunutu inthaneteng. Buisanang ka hore hang ha ntho e kena inthanete, e dula moo ho ya ho ile. Mohlomong ba tseba mohlala wa metswalle ya bona.", + "Safety Plan Activity": "Ketso ya Moralo wa Boipaballo", + "RULES": "MELAO", + "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Etsa MELAO le motjha wa hao ka tsela ya ho sebedisa diepo le diwebosaete tseo a di ratang ka tsela e sireletsehileng.\n\nNa o hopola pale ya Boipaballo Inthaneteng? E shebelle hape.", + "Online Safety Story": "Pale ya Boipaballo Inthaneteng", + "AMNESTY": "TSHWARELO", + "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Etsang tumellano ya TSHWARELO. Haeba ho etsahala ntho e mo halefisang, e sa mo tshwareng hantle kapa e mo tshosang, a ka buisana le wena ebile o ke ke wa mo halefela kapa wa mo fa kotlo, esita le haeba a ne a etsa ntho e fosahetseng.\n\nNa o hopola pale ya Tshwarelo e Sireletsehileng? E shebelle hape mona.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Botswadi ditabeng tsa dijithale bo tshwana le botswadi bophelong ba sebele. O nkile BOHATO BA BOHLOKWA ba ho tiisa hore motjha wa hao o bolokehile motseng LE inthaneteng. O entse hantle!", + "Resources to help in the community": "Matlotlo a thusang motseng", + "Online Safety Resources": "Matlotlo a Boipaballo Inthaneteng", + "Being a great parent also means taking time to care for yourself every day.": "Ho ba motswadi wa mmakgonthe ho boetse ho bolela ho qeta nako e itseng o itlhokomela letsatsi le letsatsi.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ke ditaba tse monate. Mme ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", + "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ho thata ho ba motsoali. Empa ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "O phethile wekshopo ena ya beke.\n\nRe tla phetha dintho tseo re di etsang ho itlhokomela ha le bokana ka dihlopha tsa lona ka lekgetlo la pele - kaofela ha lona le lokela ho itlhokomela haholwanyane!", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Neng kapa neng ha o kgona, kgatholoha, itemohe mme o iputse. \n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Nako le nako ha o kgatholoha, o lemoha ntho eo o e entseng hantle kapa o iputsa, tobetsa @global.parent_points ho keteka katleho ya hao!", + "Why @data.workshop.w_self_care.short_title?": "Hobaneng e le @data.workshop.w_self_care.short_title?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Hangata ha re itlhokomele ka ho lekaneng. Empa ntho ena e bohlokwa haholo, haholoholo jwaloka motswadi!\n\nRe fokotsa seterese le ho itlhokomela hantle ho thusa rona HAMMOHO LE batjha ba rona.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho itlhokomela.\n\nHo na le dinako tseo re bang le dinako tse boima, moo re tobanang le mathata mme re sa tsebe hore na re etseng. Ho bohlokwa hore re itlhokomele e le ho ithuta mekgwa ya kamoo re ka dulang re kgobile matshwafo ha ho na le mathata, diphephetso le ditaba tse hlahellang.\n\nHa re kgobile matshwafo re boemong bo botle ba ho nahana dintho tse ntle le ho tla ka ditharollo tse molemo diphephetsong tseo re tobaneng le tsona.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Hopola – beke ena e amana le WENA! Re tshepa hore o itshwara ka mosa. Seo sea o tshwanela!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala wekshopo e ntjha-tjha! ya @global.parent_app hosane. O tla bona diphetho tse molemo!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Na le se le jwetsitse balekane ba lona ka epo ya @global.parent_app? Ho tloha hosane le ka qala ho etsa diwekshopo tsa lona tsa @global.parent_app mmoho!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ho ela hloko seo re se etsang hantle ho re thusa ho tsepamisa mohopolo dinthong tse molemo.\n\nA re nke motsotswana mme re ipabatse. Re tla le bontsha tsela ya ho etsa jwalo.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Nahana ka ntho eo o e entseng hantle morao tjena.\n\nBolellanang mantswe ana ka lentswe le phahameng: \"Ke entse hantle ka…\"\n\nNtho e le nngwe eo le tshwanelwang ke pabatso ka lebaka la yona ke ena: Le entse hantle ka ho sebedisa @global.parent_app!", + "Recognise": "Lemoha", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Nka motsotswana ho ipabatsa.\n\nRe tla le bontsha tsela ya ho etsa seo.", + "Think of one thing YOU have done well recently.": "Nahana ka ntho e le nngwe eo O e entseng hantle morao tjena.", + "\"Well done to me for...\"": "\"Ke entse hantle ka...\"", + "Showing love to my children": "Ho bontsha bana ba ka lerato", + "Getting up even though I felt tired": "Ho tsoha leha ke ikutlwa ke kgathetse", + "Smiling at someone": "Ho bososella motho e mong", + "Making food to stay strong": "Ho lokisa dijo hore ke dule ke le matla", + "Spending time with my children": "Ho qeta nako le bana ba ka", + "Helping my children with schoolwork": "Ho thusa bana ba ka ka mosebetsi wa sekolo", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Haeba o kgona, bua mantswe ana ka lentswe le hodimo.\n\nNtho e le nngwe eo o tshwanelwang ke pabatso ka lebaka la yona ke ena: O entse hantle ka ho sebedisa @global.parent_app!", + "Things to praise yourself for:": "Dintho tseo o ka lekang ho ipabatsa ka lebaka la tsona:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ho bontsha bana ba hao lerato\n* Ho tsoha leha o ikutlwa o kgathetse\n* Ho bososella motho e mong\n* Ho etsa dijo hore o dule o le matla\n* Ho qeta nako le bana ba hao\n* Ho thusa bana ba hao ka mosebetsi wa sekolo", + "Let's try it out and do a short relaxation activity together!": "A re e lekeng mme re etse ketso ya ho kgatholoha mmoho!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Jwaloka batswadi, hangata ha re na nako ya ho itlhokomela - empa ho bohlokwa haholo ho etsa jwalo! Ho fokotsa seterese sa rona ho thusa rona HAMMOHO le batjha ba rona.\n\nA re nkeng bohato ba pele mme re etse ketso e kgutshwanyane ya ho kgatholoha mmoho.", + "Well done! Try to do this every day.": "O entse hantle! Leka ho etsa sena letsatsi le letsatsi.", + "Have a hot drink": "Phoka tee kapa kofi", + "Call a friend or relative": "Letsetsa motswalle kapa mong ka wena", + "Have a relaxing bath": "Kena bateng ya metsi a kgathollang", + "Read": "Bala", + "Watch TV": "Shebella TV", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ho itlhokomela ke tsebo ya bohlokwa ya botswadi. Neanang malebela:\n\nKe dintho dife tse nyane tse o thabisang?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Leka ho etsa ntho eo o ka iputsang ka yona letsatsi le letsatsi.\n\nO ka sebedisa tsebo ena lapeng mme wa e fumana neng kapa neng ho @global.parent_centre ya hao!", + "Reward": "Moputso", + "We all deserve to treat ourselves well!": "Kaofela re tshwanela ho itshwara hantle!", + "What small thing makes you happy?": "Ke ntho efe e nyane e o thabisang?", + "Nice! Taking care of yourself is an important parenting skill!": "Ke hantle! Ho itlhokomela ke tsebo ya bohlokwa ya botswadi!", + "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_1 kapa eng kapa eng eo o e thabelang.", + "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_2 kapa eng kapa eng eo o e thabelang.", + "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_3 kapa eng kapa eng eo o e thabelang.", + "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_4 kapa eng kapa eng eo o e thabelang.", + "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_5 kapa eng kapa eng eo o e thabelang.", + "Things you can do to reward yourself:": "Dintho tseo o ka di etsang ho iputsa:", + "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Phoka tee kapa kofi e tjhesang\n* Letsetsa motswalle kapa setho sa lelapa\n* Kena bateng ya metsi a kgathollang \n* Bala \n* Shebella TV", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Kajeno lena re tla etsa mesebetsi e 3 e ka re thusang ho itlhokomela, ebile re tla o botsa dipotso di se kae ho tiisa hore epo ena e o loketse.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Ketso ya ho kgatholoha\n* Ketso ya ho itemoha\n* Ketso ya ho iputsa\n* Dithulusi: Tsela ya ho eketsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Customise your @global.parent_app": "Fetola @global.parent_app ya hao", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Kaha jwale re hlomelletswe ka tsebo ya ho itlhokomela, a re tiise hore diwekshopo tsa hao tsa @global.weekly_workshops di o loketse hantle.", + "You seem to have completed the customisation process already. You can now skip this activity.": "Ho bonahala o se o qetile ho fetola epo hore e dumellane le maemo a hao. Jwale o ka feta ketso ena.", + "RELAX": "KGATHOLOHA", + "Do a 30 second quick relaxation activity.": "Etsa ntho e ka o kgathollang ka potlako ka metsotswana e 30.", + "Relax activity": "Ketso ya ho kgatholoha", + "RECOGNISE": "LEMOHA", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Nka motsotswana mme o nahane ka ntho eo O e entseng hantle morao tjena! Haeba o ka kgona, bua ka lentswe le phahameng o re \"O entse hantle ka …\"", + "Recognise activity": "Ketso ya ho itemoha", + "REWARD": "PUTSA", + "Remember you deserve your quality time too! What makes you happy?": "Hopola hore le wena o hloka nako ya ho ikgutsa! Ke eng e o thabisang?", + "Reward activity": "Ketso ya ho iputsa", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Rea o amohela! Re thabela ho ba le wena. Bekeng ena re tlo tsepamisa maikutlo ho wena.\n\nWekshopong ena ya kamohelo o tla: \n* Fumana dithulusi tsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko tsa hao", + "Wonderful, I am so happy things are going well.": "Ke taba tse monate, ke thabile haholo ho utlwa hore dintho di tsamaya hantle.", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Ke maswabi hore hona jwale ho boima. Ke ntho e tlwaelehileng hore ka dinako tse ding re hule ka thata. Hopola hore ha o mong!", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Ruta batjha ba rona mehato e mene ya ho rarolla mathata:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE\n\nSebedisang mehato e na mmoho ha mathata a hlaha!\n\nHa ho etsahala ntho e mpe, hangata rea halefa le ho beha batho molato. Empa seo hantlentle batjha ba rona ba se hlokang ke motho ya tla ba thusa hore ba fumane ditharollo mmoho. Ba mamele, amohela tsela eo ba tadimang dintho ka yona le eo ba ikutlwang ka yona, mme le ba lebohe ka hore ba le tshepe.\n\nHo ruta motjha wa hao tsela ya ho sebetsana le mathata ho tla mo thusa bophelong bohle ba hae. Ke mpho e babatsehang!", + "Some problems other parents solved with their teens:": "Mathata a mang ao batswadi ba bang ba a rarolotseng le batjha ba bona:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Ke hobaneng ha motjha wa ka a sa batle ho ya sekolong\n* Ke kgathatsehile ka hore motjha wa ka ke moimana kapa o tla imisa motho\n* Ke kgathatsehile ka seo motjha wa ka a se etsang inthaneteng\n* Motjha wa ka o tsamaya le metswalle e fosahetseng\n* Motjha wa ka o botswa\n* Motjha wa ka ha a etse mosebetsi wa hae wa sekolo\n* Mohlomong motjha wa ka o tsuba dithethefatsi", "resolve problems with their teens": "rarolla mathata le batjha ba bona", "resolve the problem with your teen": "rarolla bothata le motjha wa hao", "I forgot the steps of problem solving.": "Ke lebetse mehato ya ho rarolla bothata.", @@ -1384,11 +1250,76 @@ "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Ha bothata bo hlaha, kaofela rea halefa kapa re imelwa kelellong ka dinako tse ding. Hopola, ha o ikutlwa o halefile kapa o imetswe kelellong, o ka nka kgefu hore o kgone ho theola moya ebe o rarolla bothata boo o tobaneng le bona.", "My teen got angry and did not want to talk about the problem.": "Motjha wa ka o ile a halefa yaba ha a sa batla ho bua ka bothata.", "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Mohlomong motjha wa hao o ikutlwa a imetswe haholo ho sebetsana le bothata hanghang. Lemoha le ho bolela maikutlo a hae, mme le behelle nako kathoko hamorao letsatsing kapa bekeng eo ya hore le tshohle le ho rarolla bothata boo mmoho. Ka ho fa motjha wa hao nako, bothata bo ka rarollwa hantle.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato. O ile wa tobetsa @data.habit.breathe.in_text_title - o sebeditse!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato.", - "How did this work out?": "Taba ye e tsamaile jwang?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Sepheo sa hao e ne e boetse e le ho buisana le motjha wa hao ka tsela eo bobedi ba lona le ile la ikutlwa ka yona ha le imetswe maikutlong.", - "How did this go?": "Taba ena e tsamaile jwang?", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Sepheo sa hao ke ho leka ho rarolla bothata kapa kgohlano hammoho le motjha wa hao.", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Lelapa le leng le le leng le tobana le diphephetso, empa ha re sebedisana, re ka sebetsana le mathata ka tsela e atlehang le e nang le kgotso.\n\nKe tsebo ya bohlokwa hore motjha wa hao le yena a ithute yona!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho rarolla bothata.\n\nKaofela rea tseba hore ho na le dinako tseo re tobanang le mathata, mme kaofela rea tseba hore ha re iphumana re le maemong ana, ho thata ho nahana ka tharollo e nepahetseng hanghang.\n\nKahoo, ho bohlokwa hore ha re tobane le mathata re nke kgefu, re heme, re dule re kgobile matshwafo mme re nahane ka tsebo eo re nang le yona ya ho rarolla mathata eo re ka e sebedisang.\n\nA re hopoleng ho kenyelletsa batjha ba rona ha re rarolla mathata. Sena se tla ba thusa ho ba batho ba nang le boikarabelo le ho ithuta ho rarolla mathata a bona nakong e tlang.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "A re kgutlele ho @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 mme re bone hore na ke ditharollo dife tseo ba tlang ka tsona.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa hae ba tlile ka ditharollo tse tharo.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ho thata haholo ho ba motswadi wa motjha. \n\nHangata ha ho na ditharollo tse bonolo le tse seng thata, empa jwale @global.w_solve_female_caregiver_1 o ithutile hore a ka buisana le moradi wa hae ka dintho tsena. \n\nPele, o ne a kgathatseha a le mong, jwale ba ka tla ka ditharollo mmoho!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \n\nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Kaofela re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @local.workshop_data.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi!", + "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Dumela @fields.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", + "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @fields.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla le bontsha kaofela kamoo le ka sebetsanang le wona kateng.", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Tabeng ya batjha, le bophelong ka kakaretso, ho hlaha mathata a sa lebellwang ao re tlamehang ho sebetsana le wona. Qala ka wekshopo e latelang ho ithuta tsela ya ho sebetsana le wona.\n\nQala wekshopo e latelang o ithute tsela ya ho tobana le mathata ana ka katleho.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ho tseba tsela ya ho rarolla mathata mmoho ho tla o thusa maemong a mangata!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "A re shebe se hlahetseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ha @global.w_solve_teen_girl a letsetswa ke moshanyana… founo!", + "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o e nkile kae ntho ye?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o ntheketse yona. Ke founo e ntle hakaakang, @global.w_solve_female_caregiver_1. E nka difoto tse ntle haholo!\"", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ha ke batle ho bona ntho eo e turang! Moshemane eo ke sekeleme! O nahana hore o tlo mo patala ka eng ha a o reketse ntho ye?!” \n\n@global.w_solve_teen_girl: “Ha ho etsuwe jwalo, @global.w_solve_female_caregiver_1! Ntho eo o e etsang ha ke e rate!”", + "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ha ke batle ho utlwa o tjho jwalo!” \n\n@global.w_solve_teen_girl: “Ha o leke le ho mmamela! Ha ke tsebe le hore na ke ne ke itshwenyetsang ho bua le wena!”", + "Let’s see how problem solving works in practice.": "A re boneng kamoo tharollo e sebetsang kateng boemong ba sebele.", + "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 o tla lapeng a tswa mosebetsing. \n\n@global.w_solve_female_caregiver_2 (o a nahana): \"Iyo maoto a ka a bohloko! Ke tlameha ho dula fatshe hanyane mme ke nwe kofi pele ke qala ho pheha dijo tsa lelapa.\"", + "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O etsang? Ke bohobe ba mantsiboya boo! Jwale bo ke ke ba re lekana kaofela!\"", + "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Ntsharele, @global.w_solve_female_caregiver_2, ke utlwa ke lapile. E re ke o jwetse, ho na le moshemane enwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a nahana): “Kgefuta hanyane… kga moya…”", + "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ako eme hanyane feela hle. Ke kgathetse ebile jwale ke kgathatsehile ka hore na re tla ba le dijo tse lekaneng mantsiboya.” \n\n@global.w_solve_teen_boy_2: “Askisi hle, @global.w_solve_female_caregiver_2\"", + "Step 1: KNOW IT": "Bohato ba 1: BO TSEBE", + "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: \"Jwale ako mpolelle, hobaneng ha o lapile? Na ha o a ja sekhafothine sa hao ka lantjhe sekolong?” \n\n@global.w_solve_teen_boy_2: \"Bothata bo qala hona moo. Ho na le moshemane e mong sekolong ya ratang ho iketsa mpodi. Mehlaena o re haeba ke sa mo fe lantjhe ya ka, yena le metswalle ya hae ba tla ntematsa. O nkwatisa haholo!\"", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo empa ke thabile ha e le mona o mpolelletse, @global.w_solve_teen_boy_2. Empa seo ha se bolele hore o tla ja dijo tsa mantsiboya tsa rona kaofela. Kamora hore re bue, o tla lokela ho ya shopong ho ya reka bohobe bo bong. Empa a re qale mona: O nahana hore re lokela ho etsang ka bothata ba bompodi?\"\n\n@global.w_solve_teen_boy_2: \"Emmm… Ke batla ho mo otla kapa ke mo kgalemele.\"", + "Step 2: SOLVE IT": "Bohato ba 2: BO RAROLLE", + "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… o nahana hore ho tla etsahalang ha o etsa jwalo?\"\n\n@global.w_solve_teen_boy_2: \"Ha ke tsebe. O moholo ho nna, mohlomong o tla ntlhola. Ebile nka kena mathateng sekolong yaba kea tebelwa.\"", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: \"E, seo se ka etsahala. Empa ho fapana le moo re ka etsang?\"\n\n@global.w_solve_teen_boy_2: \"Ke nahana hore nka bolella titjhere. Empa jwale bana ba bang ba tla mpitsa selallane. Mohlomong wena o ka bua le titjhere?\"", + "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Ekare ke leano le letle leo. Mohlomong nka bua le batswadi ba hae haeba o batle ke bue le bona.\"\n\n@global.w_solve_teen_boy_2: \"E. Haeba o bona eka seo se ka thusa. Kea leboha, @global.w_solve_female_caregiver_2\"", + "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Haeba ho na le ntho e nngwe eo o e batlang, moshanyanaka. Ke tla o etsetsa yona hang ha re qeta ho ja dijo tsa mantsiboya. Ene wa tseba keng? Haeba e sa sebetse, re tla leka e nngwe re le babedi.\"\n\n@global.w_solve_teen_boy_2: \"Kea leboha, @global.w_solve_female_caregiver_2\"", + "Step 3: TRY IT": "Bohato ba 3: E LEKE", + "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Beke hamorao… \n\n@global.w_solve_female_caregiver_2: \"Ho tsamaya jwang sekolong hona jwale?\"\n\n@global.w_solve_teen_boy_2: \"Ho betere, moshemane eo ha a sa nkukela lantjhe ya ka. Empa o ntse a sa mpatle.\"", + "Step 4: TEST IT": "Mohato wa 4: E TUTSE", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo, @global.w_solve_teen_boy_2. Na ke kope malome wa hao ho buisana le batswadi ba hae? Haeba seo se sa sebetse, re tla leka tsela e nngwe!\"\n\n@global.w_solve_teen_boy_2: \"E, kea leboha @global.w_solve_female_caregiver_2. Bonyane kea tseba hore o a nthusa.\"", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Kwala mahlo, o kge moya, mme o tsebe hore sohle seo o se entseng se bohlokwa haholo.", + "Ground @global.w_solve_teen_girl for a month": "Ropa @global.w_solve_teen_girl kgwedi e le nngwe", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “O ke ke wa intsha kgweding e latelang”", + "That didn’t work... Let's try something else.": "Seo ha sea sebetsa... A re lekeng ho hong.", + "Return the phone and save up": "Kgutlisa founo mme o ipehele tjhelete", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: \"Ha ke leke ho qosa motswalle wa hao ebile ha ke mona. Ke mpa ke tshwenyehile hore ha motho a o fa mpho, ho ba thata ho re 'tjhe' ha a o kopa ntho e nngwe le wena – jwaloka thobalano. Haeba o batla founo, re tla baballa tjhelete mmoho e le hore o iketsetse diqeto tsa hao o sa kolote motho eng kapa eng.\"", + "This is great! Try the third option as well.": "Ena e ntle! Leka le tsela ya boraro.", + "Learn about safe sex": "Ithute ka thobalano e bolokehileng", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Sena se nthusa hore ke bone hore re tlameha ho bua ka bahlankana le ho itshireletsa. Batjha ba bangata ba dilemong tsa hao eba baimana kapa ba tshwarwa ke HIV. A re ye tliliniking hore o buisane le mooki hore o ithute hore na o ka dula o itshireleditse jwang.”", + "This is great!": "Ena e ntle!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Buisanang: \n\nKe jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Hopola @global.w_solve_teen_girl le founo eo a e fuweng ke moshemane yane?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ke jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", + "Take a few deep breaths to calm down, and": "Kga moya o mongata ka makgetlo a mmalwa hore o theole moya, ebe", + "KNOW IT": "E TSEBE", + "Identify the problem.": "O hlwaya bothata.", + "SOLVE IT": "E RAROLLE", + "Think of possible solutions and what would happen if we used them.": "Nahana ka ditharollo tse ka kgonehang le se ka etsahalang haeba re di sebedisa.", + "TRY IT": "E LEKE", + "Choose a solution and try it out.": "Kgetha tharollo mme o e leke.", + "TEST IT": "E TUTSE", + "Did it work? Great! If it did not work, then try another solution.": "Na e sebeditse? Ke hantle! Haeba e sa sebetsa, leka tharollo e nngwe.", + "Let's practice problem-solving!": "A re itlwaetse tsela ya ho rarolla mathata!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ikwetlisetseng mathata ao le nang le wona hona jwale mmoho. E mong wa lona ebe motswadi mme e mong e be motjha.\n\nBabatsanang le ho kgothatsana - re motlotlo ka lona!\n\nHopola mehato ena:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE", + "We care about you, and how life is treating you.": "Rea o tsotella, le kamoo bophelo bo leng kateng ho wena.", + "You are a star. And you are making a real difference. Be proud of yourself.": "O kgalala. O etsa phapang e kgolo. Ikotle sefuba ka wena.", + "Sorry that things are not easy today. All parents have these days.": "Re maswabi ho utlwa hore dintho ha di bonolo kajeno. Batswadi bohle ba tobana le matsatsi a jwalo.", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "O phethile wekshopo ya bekeng ena.\n\nBekeng e tlang, re tla buisana ka tjhelete - o tla hloka:\n* leqephe la pampiri/khateboto\n* pene\n* majwe/dinawa/dithollo tse nyane tse 20\n\nE tla ba monate!", + "There are two home practices for this week.": "Ho na le dintho tse pedi tsa ho ikwetlisa lapeng bekeng ena.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Neng kapa neng ha o utlwa o na le seterese kapa o kwatile: o kge moya ka makgetlo a mahlano le ho o tlohela pele o nka bohato.\n\nMme ha ka bobedi ba lona le theotse moya, bolella motjha wa hao hore na o ikutlwa jwang.", + "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Buisana le motjha wa hao ka \"tshwarelo molemong wa polokeho\", mme mmoho le nahane ka hore na le ka sebedisa sena neng.", + "Safety Amnesty Story": "Pale ya Tshwarelo Molemong wa Polokeho", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Neng kapa neng ha o kgefutsa pele o arabela, kapa neng kapa neng ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_points tsa hao mme o keteke katleho ya hao!", "Did you experience any of these challenges when sharing how you feel with your teen?": "Na o ile wa tobana le efe kapa efe ya diphephetso tsena ha o phetela motjha wa hao hore na o ikutlwa jwang?", "What was difficult for you about sharing how you feel with your teen?": "Ke eng e ileng ya o thatafalla ha o phetela motjha wa hao hore na o ikutlwa jwang?", "I was afraid my teen would think I was weak.": "Ke ne ke tshohile hore motjha wa ka o tla nahana hore ke a fokola.", @@ -1401,99 +1332,84 @@ "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Ho pheta maikutlo ho thusa motjha wa hao ho lemoha le ho ithuta ho etsa se tshwanang. O ka kgetha hore na o mo phetela dintlha tse kae ka boemo boo. Ho ho wena! Hape o ka kgetha ho araba dipotso hamorao ka hore, “Hona jwale ke ikutlwa ke halefile/imetswe maikutlong. Ako mphe nakonyana! Re ka bua ka taba eo mantsiboya”.", "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Ke ne ke imetswe kapa ke halefile hoo ke sitwang ho pheta maikutlo a ka – ke kgetha ho ba mong ha ke ikutlwa ka tsela eo.", "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Ha ho phoso ha o sa batle ho bua ka nako eo. Fumana nako e nngwe ya ho itlhalosa hamorao, ha o ikutlwa o kokobetse, e le hore bohle ba ka utlwisisa.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa). O ile wa tobetsa @data.habit.consequence.in_text_title - o entse hantle ka ho hopola!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa).", - "introduce a consequence together": "qalang sephetho hammoho", - "Did you have any challenges when trying to introduce a consequence together?": "Na le bile le diphephetso dife kapa dife ha le leka ho qala sephetho mmoho?", - "What was difficult for you about introducing a consequence with your teen?": "Ke eng e ileng ya le thatafalla ha o qala sephetho le motjha wa hao?", - "I got very angry when my teen broke the rule.": "Ke ile ka halefa haholo ha motjha wa ka a tlola molao.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Ha re kgefutsa pele re araba, seo se re thusa ho kgoba matshwafo le ho araba hantle.\n\nNakong e tlang ha motjha wa hao a o halefisa, leka ho nka kgefu pele. Le ho phefumoloha haholo ho ka tlisa phapang e kgolo!", - "My teen got very angry with me after I gave the consequence.": "Motjha wa ka o ile a nkgalefela haholo kamora hore ke mo jarise ditlamorao.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Ha motjha wa hao a o halefela, o ka nna wa tlameha ho tsamaya ho fihlela bobedi ba lona le theotse moya.\n\nHlahloba hore na ditlamorao tseo o mo bolellang tsona di lokile ebile dia utlwahala. Mamela tlhaloso ya motjha wa hao, mme o tiise hore o lokisetsa “Tshwarelo ka Lebaka la Polokeho” ha a tlotse molao e le hore a dule a sireletsehile.", - "I introduced the consequence without first discussing it with my teen.": "Ke ile ka mo bolella ditlamorao ntle le ho di tshohla pele le motjha wa ka.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Na o ka fana ka ditlamorao kapa sephetho sa ketso haeba e ipheta? Ha re beha ditlamorao mmoho le batjha ba rona, ditlamorao e tla ba tse utlwahalang haholo, mme batjha ba rona ba tla ikemisetsa le ho feta ho latela molao ebile ba tla be ba kgona ho o latela.", - "I forgot to follow through with the consequence.": "Ke lebetse ho phethisa ditlamorao.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Kaofela re etsa diphoso! Ha re jarisa bana ba rona ditlamorao re sa fetofetohe, ho na le menyetla e mengata ya hore bana ba rona ba tla kgetha ho itshwara hantle nakong e tlang.", - "Even with the consequence, my teen still does not follow the rule.": "Esita leha ho na le ditlamorao, motjha wa ka o ntse a sa latele molao.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Ha motjha wa hao a tswela pele ho tlola melao, o ka nna wa tlameha ho qeta nako e ngata le yena le etsa dintho tse molemo.\n\nLeka ho tswela pele ka dintho tse ding tseo o ikemiseditseng ho di fihlella – jwaloka ho itlhokomela, nako ya boinotshing, le pabatso. Tsebo ena kaofela e tla thusa motjha wa hao hore a ikutlwe a ratwa haholo ebile a sireletsehile… mme seterese sa hao se tla hafoha!", - "We only created a negative consequence, not a positive consequence.": "Re ile ra theha ditlamorao tse bosula feela, ho hang ho ne ho se na tse ntle.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ka dinako tse ding ho ka ba thata ho nahana ka ditlamorao tse ntle. Ditlamorao tse ntle di tla kgothalletsa motjha wa hao ho jara boikarabelo haholo, mme o tla bona phapang!", - "My teen suggested being hit as a negative consequence.": "Motjha wa ka o ile a sisinya hore a shapuwe e le ditlamorao tse bohloko.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Batjha ba ka tlwaela ho bona ho shapuwa e le tsona feela ditlamorao tse ka kgonehang tsa ho tlola melao.\n\nQalang ditlamorao tse ding le kgutsitse mmoho tse ka ba thusang ho utlwisisa hore ba entse ntho e fosahetseng. Dintho tsena di tla atleha haholo ebile di tla beha mehlala e metle!", - "Your goal was to make ONE rule with your teen this week.": "Sepheo sa hao e ne e le ho etsa molao O LE MONG le motjha wa hao bekeng ena.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "O entse hantle ka sena! Ha ho bonolo, mme batjha ba ke ke ba latela melao ka dinako tsohle, empa ho etsa melao e seng mekae ya bohlokwa mmoho ke tsela e ntle ya ho qala. Ipabatse ka ho etsa sena - re motlotlo ka wena!", - "make rules with their teens": "etsa melao le batjha ba bona", - "Did you have any challenges when trying to make a rule together?": "Na le bile le diphephetso dife kapa dife ha le leka ho etsa melao mmoho?", - "What was difficult for you about making a rule with your teen?": "Ke eng e ileng ya o thatafalla ha o etsa molao le motjha wa hao?", - "My teen and I could not agree on a rule.": "Nna le motjha wa ka re ne re sa dumellane ka molao.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Nahana hore na molao oo ke o utlwahalang. Na motjha wa hao a ka o latela? Ha le etsa molao le le lelapa, ho a thusa ho nahana ka motjha wa hao, hore na o dilemo di kae, le hore na ke eng ya bohlokwa ho yena.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Motjha wa ka a ka nna a nka ho sa loka hore yena o lokela ho latela molao oo nna ke sa o lateleng.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Ka dinako tsohle re lokela ho hopola hore bana ba ithuta hantle ho rona. Ha re latela melao haholo, le bona ba tla latela melao.\n\nO ka fetola molao ho tiisa hore ho ka kgoneha hore bohle ba o latele, o nahanne ka boikarabelo ba hao le boikarabelo ba motjha wa hao (ka mohlala mesebetsi ya sekolong kapa ya boiphediso).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ke ile ka ikutlwa ke sa phutholoha, hobane ke nka hore ke nna ya lokelang ho etsa molao eseng motjha wa ka.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Molekane wa ka o ile a ikutlwa a sa phutholoha, hobane o nka hore ke yena ya lokelang ho etsa molao, eseng motjha wa ka.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Ha re etsa melao hammoho le batjha ba rona, seo se thusa ditho tsa lelapa ho utlwisisana habetere. Etlaba melao e utlwahalang le ho feta mme batjha ba tla ikemisetsa ho latela melao ebile ba tla kgona ho e latela.", - "When we tried to set a rule, we got into an argument.": "Ha re leka ho beha molao, re ne re pheha kgang.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Na motjha wa hao o ne a thabile ha le leka ho beha molao? Ho molemo haholo ho beha melao ha boemo bo kokobetse. Haeba wena kapa motjha wa hao le kgathetse kapa le lapile, ho molemo ho buisana ka melao hamorao.", - "We were not able to stick to the rule.": "Ha re kgone ho imatahanya le molao.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Molao o lokela ho toba taba mme ebe ntho e kgonehang. Tiisa hore o na le molao o ka bolokwang o le bonolo, jwaloka ho ja dijo mmoho ka Sontaha se seng le se seng ho fapana le bosiu bo bong le bo bong. Na o tlameha ho fetofetoha le molao?", - "Mother": "Mme", - "Father": "Ntate", - "TikTok": "TikTok", - "WhatsApp": "Whatsapp", - "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "O hloka phihlello ya inthanete hore o shebelle video ena. Ho fokotsa tshebediso ya datha, shebella kapa daonlouda video ena ha o na le WiFi.", - "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "O hloka phihlello ya inthanete ho kena diwebosaeteng tsena. Ho fokotsa tshebediso ya datha, kena diwebosaeteng tsena ha o na le WiFi.", - "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "O hloka phihlello ya inthanete hore o romele molaetsa ona. Ho fokotsa tshebediso ya datha, romela molaetsa ona ha o na le WiFi.", - "COVID": "COVID", - "Welcome and Self-Care": "Kamohelo le ho Itlhokomela", - "Self-Care": "Ho Itlhokomela", - "How to add self-care": "Tsela ya ho eketsa ho itlhokomela", - "One-on-One Time": "Nako ya Boinotshing", - "How to spend one-on-one time": "Tsela ya ho qeta nako ya boinotshing", - "Praise": "Pabatso", - "How to praise": "Tsela ya ho babatsa", - "Positive Instructions": "Ditaelo tsa se Tshwanelang ho Etswa", - "How to give positive instructions": "Tsela ya ho fana ka ditaelo tsa se tshwanelang ho etswa", - "Managing Stress": "Ho Laola Seterese", - "How to manage stress": "Tsela ya ho laola seterese", - "Family Budgets": "Dibajete tsa Lelapa", - "How to budget & save": "Tsela ya ho bajeta le ho baballa tjhelete", - "Rules": "Melao", - "How to create rules": "Tsela ya ho etsa melao", - "Calm Consequences": "Ditlamorao tse Fanwang ho Theotswe Moya", - "How to give calm consequences": "Tsela ya ho fana ka ditlamorao ho theotswe moya", - "Problem Solving": "Ho Rarolla Mathata", - "How to solve problems": "Tsela ya ho rarolla mathata", - "Teen Safety": "Polokeho ya Batjha", - "How to keep your teen safe": "Tsela ya ho tiisa hore motjha wa hao o bolokehile", - "Dealing with Crisis": "Ho Sebetsana le Tsietsi", - "How to deal with crisis": "Tsela ya ho sebetsana le tsietsi", - "Celebration and Next Steps": "Ho Keteka le Mehato e Latelang", - "How to support each other": "Tsela ya ho tshehetsana", - "Talk about @global.home_practice": "Bua ka @global.home_practice", - "Home Practice Review": "Tlhahlobo ya Boikwetliso ba Lapeng", - "Let's talk about how your home practice went this week.": "A re bueng ka hore na boikwetliso ba lona ba lapeng bo tsamaile jwang bekeng ena.", - "In my group": "Sehlopheng sa ka", - "By myself": "Ke le mong", - "awesome parent": "motswadi wa popota", - "friends": "metswalle", - "New workshop ready tomorrow!": "Wekshopo e ntjha e tla be e lokile hosane!", - "New workshop!": "Wekshopo e Ntjha!", - "Workshop Reminder": "Kgopotso ya Wekshopo", - "Nice progress!": "Tswelopele e Kgahlisang!", - "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Kajeno o hopole ho dula fatshe mme o phutholohe - ho itlhokomela ke tsebo ya bohlokwa ya botswadi.", - "You are appreciated!": "O motho ya ratwang!", - "Something Fun": "Ntho e Monate", - "Your @global.parent_points this week": "@global.parent_points tsa hao bekeng ena", - "Home Practice Reminder": "Kgopotso ya Boikwetliso ba Lapeng", - "To solve this challenge, I will try to:": "Ho rarolla phephetso ena, ke tla leka ho:", - "My challenge is not listed here.": "Phephetso ya ka ha e a thathamiswa mona.", - "ParentApp": "ParentApp", - "Weekly Workshops": "Diwekshopo tsa Beke le Beke", - "Weekly Workshop": "Wekshopo ya Beke le Beke", - "Weekly Workshop Options": "Dikgetho tsa Diwekshopo tsa Beke le Beke", - "ParentPoints": "ParentPoints", - "ParentPoint": "ParentPoint", - "Parent Library": "Laebrari ya Motswadi", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato.", + "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Sepheo sa hao e ne e boetse e le ho buisana le motjha wa hao ka tsela eo bobedi ba lona le ile la ikutlwa ka yona ha le imetswe maikutlong.", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Rea tseba hore na ho boima hakae ho hodisa batjha dinakong tsena. Ho ithuta ho laola seterese sa hao ho thusa wena - hammoho le lelapa la hao.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho laola seterese.\n\nHo bohlokwa hore re tsebe tsela ya ho laola seterese sa rona. Ka dinako tseng bana ba rona ba itshwara ka ditsela tse etsang hore re ikutlwe re na le seterese mme rona jwaloka batswadi re ka etsa hore le bana ba rona ba be le seterese.\n\nKahoo, ho bohlokwa ho elellwa ha re ikutlwa re na le seterese le ho nka kgefu ebe re kga moya. Seo se tla o thusa ho laola seterese sa hao.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Seterese se bile jwang bekeng ye? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", + "Well done!": "O entse hantle!", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Na o thabile, o hloname, o halefile, o tsohile molota, o kgathatsehile? O sebeditse ka ho lemoha kamoo wena le ba bang le ikutlwang kateng kajeno! Mme hopola, letsatsi la hosane ke letsatsi le letjha.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Ka dinako tse ding kaofela re ikutlwa re imetswe. Ho hemela hodimo ho ka re thusa!\n\nPhethela @local.workshop_data.in_text_title ho fumana tse ding tsa dithuluse tse molemo tsa ho sebetsana le seterese.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Dumela @fields.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Dumela @fields.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Re na le wekshopo e ntjha e fumanehang bakeng sa hao e amanang le ho laola bohale le kgatello ya maikutlo. E tla o thusa ho itlhokomela ka tsela e betere.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Hosane ho na le wekshopo e ntjha-tjha! e tla beng e o emetse ya @global.parent_app. \n\nKa ho phethela @local.workshop_data.in_text_title pele, o beha moralo wa bohlokwa haholo: Ha o ikutlwa o thabile, lelapa la hao le lona le tla ntlafatsa dintho!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", + "Let's think about what happened in this story.": "A re nahaneng ka se etsahetseng paleng ena.", + "How do you think @global.w_stress_teen_boy_1 felt?": "O nahana hore @global.w_stress_teen_boy_1 o ile ka ikutlwa jwang?", + "And @global.w_stress_male_caregiver?": "@global.w_stress_male_caregiver yena?", + "And @global.w_stress_girl?": "Ho thweng ka @global.w_stress_girl?", + "Sad": "A kwatile", + "Scared": "A tshohile", + "Confused": "A ferekane", + "Angry": "A halefile", + "Each of them was feeling upset for their own reason!": "Kaofela ha bona ba ne ba ikutlwa ba kwatile ka mabaka a bona!", + "What could @global.w_stress_male_caregiver have done differently?": "@global.w_stress_male_caregiver a ka be a entse eng ka tsela e fapaneng?", + "Recognise why he feels stressed": "A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese", + "Take a deep breath and speak calmly": "A kge moya haholo mme a bue a kgobile matshwafo", + "Show he understands his teen’s feelings": "A bontshe hore o utlwisisa maikutlo a motjha wa hae", + "Think about solutions together with @global.w_stress_teen_boy_1": "A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1", + "Do something positive together with @global.w_stress_teen_boy_1": "A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "A re shebeng mohlala wa kamoo seterese se ka re imelang e mong le e mong wa rona kateng:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver: “Ako kgaohane le nna, o shebane le taba tsa hao!”", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ke entseng jwale? Mehla ena ha o mmamele!” \n\n@global.w_stress_male_caregiver: “Ke itse o kgaohane le nna, ho seng jwalo ke tla o shapa!”", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bona! Ke qeta ho hlwekisa ntlo!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ke mang ya nang le taba le ntlonyana ena e makatsang!”", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Rea leboha hore le nahane ka taba ena! A re kgutleleng morao mme re bone kamoo @global.w_stress_male_caregiver a etsang dintho kateng hona jwale:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver o feletswe ke mosebetsi. O dutse lapeng a ikutlwa a sulafalletswe ebile a na le seterese, ha @global.w_stress_teen_boy_1 a kena.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ke ne ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver (o kga moya): “Eish ngwanaka. Ho bile boima kajeno. Mongaka o ntebetse mosebetsing.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Ao banna! Ene ke hloka yunifomo e ntjha ya sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka, moshanyanaka, Empa mosebetsi wa @global.w_stress_female_caregiver wa hao o tla re thusa nakong eo ke ntseng ke batla mosebetsi o mong.”", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Nna le nna nka thusa ka ho batla mosebetsi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “O ska kgathatseha, ho tla loka @global.w_stress_teen_boy_1. Kea leboha ha o batla ho thusa. Empa ntho ya bohlokwa haholo ke hore wena o sebetse ka thata sekolong. Kea leboha ka hore o mmamele.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “A re ilo bapala bolo mmoho. Seo se tla nthusa hore ke theole seterese hanyane.” \n\n@global.w_stress_teen_boy_1: “Ho lokile, @global.w_stress_male_caregiver!”", + "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Puisano eo e tsamaile hantle haholo!\n\nHo kgefutsa ho tla o thusa hore o arabe o theotse moya ha o ikutlwa o halefile kapa o na le seterese. Ho leke, o tla bona!", + "Safety Amnesty": "Tshwarelo Molemong wa Polokeho", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Nahana ka mehleng ya ha o sa le motjha.\n\nNa ho kile ha eba le nako eo ka yona o neng o le kotsing empa o sa kgone ho bolella lelapa la hao hobane o ne o halefile?\n\nSena se BATLILE se etsahalla @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re ba shebelleng:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"O ska jwetsa batho ba baholo, hore ke ya bareng le metswalle ya ka bosiung bona\" \n\n@global.w_stress_teen_girl: \"O je monate! Ke ba jwetsitse hore ke tjhakela mokgotsi wa ka wa ngwanana, empa ke ya phathing e monate\"", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Ke nahana hore ba rekisa dithethefatsi. Kaofela re ka tshwarwa. Empa nkeke ka bolella batswadi ba ka – ba tla halefa haholo\"", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: \"Ke tshohile. Batho bohle ba nwele haholo hoo ba ke keng ba nkisa lapeng. Moshemane enwa o re o tla nkisa empa re qale habo pele. Nkeke ka jwetsa batswadi ba ka – ke ba jwetsitse leshano ka ho tla phating ena.\"", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Ana ke maemo a kotsi! Ka lehlohonolo, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba hopola hore na @global.w_stress_parent o ile a ba bolella eng: \n\n\"Ke amehile ka polokeho ya lona ho feta eng kapa eng. Haeba le ka ikutlwa le kwatile, kapa le tshohile, ka dinako tsohle le ntetsetse hore ke tlo le thusa, kapa le mpolelle taba eo. \n\nE reng feela 'TSHWARELO MOLEMONG WA POLOKEHO'. Kea le tshepisa ke tla leka sohle hore ke le thuse ebile nkeke ka le halefela – le haeba le ne le etsa ntho eo le sa lokelang ho e etsa.\"", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke tshwarelo molemong wa polokeho. Ke kopa o tle o tlo nlata? Kannete ke hloka lifti ya ho ya lapeng.\"", + "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, tshwarelo molemong wa polokeho. Ke bona eka mekgotsi ya ka e mathateng. Ha ke batle ho emisa hoba motswalle wa bona, empa ke kgathatsehile. Na re ka bua?\"", + "This is fantastic, especially in such difficult times as this. You are a star.": "Ke taba tse monate, haholoholo dinakong tse jwaloka tsena tse boima. O kgalala.", + "Today you will explore:": "Kajeno lena o tla ithuta:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "Let's discuss what happened in this story.": "A re buisaneng ka se etsahetseng paleng ena.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "O nahana hore @global.w_stress_teen_boy_1 o ile a ikutlwa jwang? @global.w_stress_male_caregiver wa hae yena? Ho thweng ka @global.w_stress_girl?\n\n@global.w_stress_male_caregiver o ne a ka etsang ka tsela e fapaneng?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver a ka...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese\n* A kge moya haholo mme a bue a kgobile matshwafo\n* A bontshe hore o utlwisisa maikutlo a motjha wa hae\n* A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1\n* A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", + "BREATHE. Slowly. Pause.": "O KGE MOYA. Butle. Kgefutsa.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Pele o bua eng kapa eng, hema butle o kge moya mme o o tlohele ka makgetlo a mahlano. O tla theola moya, mme o tla ba le monyetla wa ho nahana.", + "SHARE how you feel": "PHETA kamoo o ikutlwang kateng", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Ntho ena e thata. Boholo ba rona, re kile ra bolellwa hore re se lle, kapa ra bontsha bana ba rona maikutlo a rona. Empa kga moya o mongata mme o kgobile matshwafo o ba bolelle kamoo o ikutlwang kateng. Ba tla utlwisisa hantle, mme ba tla be ba ithute tsela ya ho sebetsana le seterese ho wena.", + "SHOW them you care": "Ba BONTSHE hore o a ba tsotella", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Le yona e boima! Seterese se etsa hore re amehe ka rona. Empa batjha ba rona ba hloka tshehetso ya rona. Ba botse hore na ba ikutlwa jwang. Ba mamele mme o ba tshedise. Leka ho ba haka kapa o re ‘Kea utlwisisa’. Seo se ka fetola dintho tsohle.", + "SEEK the positive": "BATLA dintle", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Na wena le motjha wa hao le nahana ka dintho tse ka thusang? Na le ka etsa ntho e ntle mmoho hore le tlose dikelello tsa lona nthong e bakang seterese?", + "If all else fails, breathe. You can do this.": "Ha tsena tsohle di hloleha, kga moya. O ka atleha.", + "Looking after yourself matters.": "Ho bohlokwa ho itlhokomela.", + "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Ke botle! Ke thabela ho utlwa hore dintho di tsamaya hantle kajeno. Ke boikutlo bo molemo hakaakang!", + "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ka dinako tse ding di tsamaya hantle. Ka dinako tse ding ha ho jwalo. Mme ka dinako tse ding ha re tsebe hantle hore na re ikutlwa jwang... mme le moo ho lokile! Hopola hore ha o mong.", + "My Favourite Activities": "Dintho Tseo ke Ratang ho di Etsa", + "All Activities": "Mesebetsi Yohle", + "Random Activity": "Mesebetsi e Etswang ka Tshohanyetso", + "This Week's Activity": "Mosebetsi wa Beke Ena", + "Chat Together": "Qoqang Mmoho", + "Do Together": "Etsang Mmoho", + "Your @global.parent_app Code": "Khoutu ya hao ya @global.parent_app", + "Terms & Conditions": "Lipallo le lipehelo", + "Privacy Policy": "Leano la Lekunutu", "Real-world ideas": "Dikeletso tsa maemo a sebele bophelong", "Ideas": "Dikeletso", "Ideas from other families...": "Dikeletso tse tswang malapeng a mang...", @@ -1512,9 +1428,49 @@ "Continue": "Tswela pele", "Finish with a song": "Qetile ka pina", "Goodbye!": "Ke hantle!", - "Your @global.parent_app Code": "Khoutu ya hao ya @global.parent_app", - "Terms & Conditions": "Lipallo le lipehelo", - "Privacy Policy": "Leano la Lekunutu", + "No gadget use the next day": "Ha ho na bajete e sebediswang hosane", + "Take 5 minutes pause in separate part of the room": "Nka metsotso e 5 o kgefuditse karolong e ka thoko ya kamore", + "Write a letter of apology": "Ngola lengolo la ho kopa tshwarelo", + "Cannot see friends the next day": "O keke wa bona metswalle hosane", + "Cannot play with phone after dinner (or next hour)": "O keke wa bapala ka founo kamora tinare (kapa horeng e tlang)", + "Extra time with friends on weekend (1hr)": "Nako e ngata le metswalle mafelobeke (hora e 1)", + "Cooking teen’s favourite meal": "Ho pheha dijo tseo motjha a di ratang", + "Extra time with phone after dinner (30 min)": "Nako e ngata ka founo kamora tinare (30 mets)", + "Watching teen’s T.V. show together": "Ho shebella lenaneo la motjha la T.V. mmoho", + "Extra one-on-one time on Sunday (30 min)": "Nako e eketsehileng ya boinotshing ka Sontaha (30 mets)", + "Take a deep breath and pause before responding": "Kga moya o mongata mme o kgefutse pele o araba", + "Listen to your teen": "Mamela motjha wa hao", + "Praise your teen for sharing": "Babatsa motjha wa hao ka hore a o phetele", + "Use problem solving skills": "Sebedisa tsebo ya ho rarolla bothata", + "Work out where you can get help": "Hlahloba hore na o ka fumana thuso hokae", + "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "O hloka phihlello ya inthanete hore o shebelle video ena. Ho fokotsa tshebediso ya datha, shebella kapa daonlouda video ena ha o na le WiFi.", + "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "O hloka phihlello ya inthanete ho kena diwebosaeteng tsena. Ho fokotsa tshebediso ya datha, kena diwebosaeteng tsena ha o na le WiFi.", + "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "O hloka phihlello ya inthanete hore o romele molaetsa ona. Ho fokotsa tshebediso ya datha, romela molaetsa ona ha o na le WiFi.", + "Severe illness or death of a friend or family member": "Bokudi bo tshabehang kapa lefu la motswalle kapa setho sa lelapa", + "Robbery": "Ho tshwarwa poho", + "Flooding": "Dikgohola", + "Political violence": "Diketso tsa dikgoka tsa dipolotiki", + "Losing my job": "Ha ke fellwa ke mosebetsi", + "Pandemic (COVID-19)": "Sewa (COVID-19)", + "ParentApp": "ParentApp", + "Weekly Workshops": "Diwekshopo tsa Beke le Beke", + "Weekly Workshop": "Wekshopo ya Beke le Beke", + "Weekly Workshop Options": "Dikgetho tsa Diwekshopo tsa Beke le Beke", + "ParentPoints": "ParentPoints", + "ParentPoint": "ParentPoint", + "Parent Library": "Laebrari ya Motswadi", + "To solve this challenge, I will try to:": "Ho rarolla phephetso ena, ke tla leka ho:", + "My challenge is not listed here.": "Phephetso ya ka ha e a thathamiswa mona.", + "New workshop ready tomorrow!": "Wekshopo e ntjha e tla be e lokile hosane!", + "New workshop!": "Wekshopo e Ntjha!", + "Workshop Reminder": "Kgopotso ya Wekshopo", + "Nice progress!": "Tswelopele e Kgahlisang!", + "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Kajeno o hopole ho dula fatshe mme o phutholohe - ho itlhokomela ke tsebo ya bohlokwa ya botswadi.", + "You are appreciated!": "O motho ya ratwang!", + "Something Fun": "Ntho e Monate", + "Your @global.parent_points this week": "@global.parent_points tsa hao bekeng ena", + "Home Practice Reminder": "Kgopotso ya Boikwetliso ba Lapeng", + "COVID": "COVID", "Make me smile": "Etsa hore ke bososele", "Get me going": "Nthuse ke tswele pele", "My Favourite Relaxes": "Ditsela Tseo ke di Ratang tsa ho Kgatholoha", @@ -1524,16 +1480,14 @@ "Listen & Relax (1-2 minutes)": "Mamela mme o Kgatholohe (metsotso e 1-2)", "Listen & Relax (3-5 minutes)": "Mamela mme o Kgatholohe (metsotso e 3-5)", "Do & Relax (5-10 minutes)": "Etsa mme o Kgatholohe (metsotso e 5-10)", - "My Favourite Activities": "Dintho Tseo ke Ratang ho di Etsa", - "All Activities": "Mesebetsi Yohle", - "Random Activity": "Mesebetsi e Etswang ka Tshohanyetso", - "This Week's Activity": "Mosebetsi wa Beke Ena", - "Chat Together": "Qoqang Mmoho", - "Do Together": "Etsang Mmoho", - "Tap and type": "Tobetsa mme o thaepe", - "Tap and choose": "Tobetsa mme o kgethe", - "Type your own": "Thaepa taba ya hao", - "I've understood this. Don't show me this message again.": "Ke utlwisisa sena. O se mpontshe molaetsa ona hape.", + "At home": "Lapeng", + "Buy things we can sell": "Reka dintho tseo re ka di rekisang", + "At a bank": "Bankeng", + "In a savings group": "Sehlopheng se baballang tjhelete", + "Teens completing school/university": "Batjha ba qetang sekolong/yunivesithing", + "Building/expanding a house for my family": "Ho haha/ho atolosa ntlo ya lelapa la ka", + "Starting a business": "Ho qala kgwebo", + "Buying a car for my family": "Ho rekela lelapa la ka koloi", "Walk to the shops": "Lebang Dishopong", "Get water together": "Tsa mo kgang metsi mmoho", "Do a chore together": "Phethang mesebetsi mmoho", @@ -1544,42 +1498,26 @@ "Review homework": "Hlahloba homeweke", "Chat before bedtime": "Qoqang pele le ilo robala", "Play a game/sport": "Bapalang game/papadi", - "Teens completing school/university": "Batjha ba qetang sekolong/yunivesithing", - "Building/expanding a house for my family": "Ho haha/ho atolosa ntlo ya lelapa la ka", - "Starting a business": "Ho qala kgwebo", - "Buying a car for my family": "Ho rekela lelapa la ka koloi", - "Severe illness or death of a friend or family member": "Bokudi bo tshabehang kapa lefu la motswalle kapa setho sa lelapa", - "Robbery": "Ho tshwarwa poho", - "Flooding": "Dikgohola", - "Political violence": "Diketso tsa dikgoka tsa dipolotiki", - "Losing my job": "Ha ke fellwa ke mosebetsi", - "Pandemic (COVID-19)": "Sewa (COVID-19)", - "At home": "Lapeng", - "Buy things we can sell": "Reka dintho tseo re ka di rekisang", - "At a bank": "Bankeng", - "In a savings group": "Sehlopheng se baballang tjhelete", - "No gadget use the next day": "Ha ho na bajete e sebediswang hosane", - "Take 5 minutes pause in separate part of the room": "Nka metsotso e 5 o kgefuditse karolong e ka thoko ya kamore", - "Write a letter of apology": "Ngola lengolo la ho kopa tshwarelo", - "Cannot see friends the next day": "O keke wa bona metswalle hosane", - "Cannot play with phone after dinner (or next hour)": "O keke wa bapala ka founo kamora tinare (kapa horeng e tlang)", - "Extra time with friends on weekend (1hr)": "Nako e ngata le metswalle mafelobeke (hora e 1)", - "Cooking teen’s favourite meal": "Ho pheha dijo tseo motjha a di ratang", - "Extra time with phone after dinner (30 min)": "Nako e ngata ka founo kamora tinare (30 mets)", - "Watching teen’s T.V. show together": "Ho shebella lenaneo la motjha la T.V. mmoho", - "Extra one-on-one time on Sunday (30 min)": "Nako e eketsehileng ya boinotshing ka Sontaha (30 mets)", - "Take a deep breath and pause before responding": "Kga moya o mongata mme o kgefutse pele o araba", - "Listen to your teen": "Mamela motjha wa hao", - "Praise your teen for sharing": "Babatsa motjha wa hao ka hore a o phetele", - "Use problem solving skills": "Sebedisa tsebo ya ho rarolla bothata", - "Work out where you can get help": "Hlahloba hore na o ka fumana thuso hokae", + "Tap and type": "Tobetsa mme o thaepe", + "Tap and choose": "Tobetsa mme o kgethe", + "Type your own": "Thaepa taba ya hao", + "I've understood this. Don't show me this message again.": "Ke utlwisisa sena. O se mpontshe molaetsa ona hape.", + "Talk about @global.home_practice": "Bua ka @global.home_practice", + "Home Practice Review": "Tlhahlobo ya Boikwetliso ba Lapeng", + "Let's talk about how your home practice went this week.": "A re bueng ka hore na boikwetliso ba lona ba lapeng bo tsamaile jwang bekeng ena.", + "In my group": "Sehlopheng sa ka", + "By myself": "Ke le mong", + "awesome parent": "motswadi wa popota", + "friends": "metswalle", "Welcome to @global.parent_app": "Rea o amohela ho @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Rea o amohela ho @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O tshwanela ho ikutlwa hantle, le ho ba le dikamano tse thabileng tsa lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e tla tshehetsa wena le lelapa la hao ka ditsela tse tharo:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo ena e kgolo e o isa ho @global.weekly_workshops tsa hao

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hang ka beke wekshopo e ntjha e tla be e lokile bakeng sa hao - nako le nako ha o ameha ka tsebo e fapaneng ya botswadi. E tobetse ho qala wekshopo ya hao ya pele!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ho hlahella konopo e sedikadikwe ha @global.weekly_workshop e ntjha e o loketse bakeng sa hao.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa konopo ena e kgolo hore o fumane sekrine sa hao sa @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Latella katleho ya hao ntlheng ya ho itlhokomela le botswadi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Sheba kgatelopele ya hao.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Keteka dintho tseo o di finyelletseng letsatsi le letsatsi!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo ena e o isa ho @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  E phuthetsoe ka lisebelisoa tseo u li hlokang neng kapa neng ha u batla.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ho fihlella hanghang ho thusa likarolo ka @data.parent_centre.essential_tools bakeng sa bokgoni bo bong le bo bong.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Lintlha tse ling le lisebelisoa tsa lehae.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ho sa natswe hore na o qala jwang, taba feela ya hore o mona e bontsha hore o a tsotella.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  o lokelwa ke ho utlwa monate, hape o lokelwa ke ho ba le di kamano tse ntle tsa lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e mona ho o tshehetsa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  mona ke mokhoa oa ho sebelisa app ena:

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo ena e kgolo ena ea @global.weekly_workshops e ho isa lithupelong tsa hau.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  beke engwe le engwe o tlo notlolla thupelo e ncha e shebaneng le tsebo e ncha ea botswadi.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ho hlahella konopo e sedikadikwe ha thupelo e ntjha e o loketse.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bokhoni bo bong le bo bong bo bocha ba batsoali bo tla le ntlha e tswang ho @global.parent_point.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Sebedisa @global.parent_points ho keteka likatleho tsa hao!

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Hlahloba boikhathollo bo eketshehileng le mesebetsi ea botsoali!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hape o ka na fumana malebela a botsoali a potlakileng le tshehetso ea tekheniki.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Sheba haufi le uena! Kae kapa kae moo o qalang, taba feela ea hore o mona e bontsha hore oa tsotella.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Leba ho @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa konopo ya sekrine se qalang hore o lebe ho @global.weekly_workshops

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Leba ho @global.weekly_workshop_options", @@ -1590,67 +1528,6 @@ "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ena e bontsha @global.weekly_workshop eo hona jwale o leng ho yona.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  O ka fetola mona ebang o batla ho etsa @global.weekly_workshops tsa hao le le sehlopha kapa o le mong.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa mona ho fetola lebitso la sehlopha sa hao.

                                                                                                                                                                                  ", - "This week is about YOU! Treat yourself well. You deserve it!": "Beke ena e bua ka UENA! Itshoare hantle. U tshoaneloa ke eona!", - "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Qala lenaneo le lecha la @global.parent_app hosane. O tla bona liphetho tse ntle!", - "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Hopola ho bolella balekane ba hau ba @global.parent_app ka sesebelisoa. Hosane, le ka qala ho etsa lithupelo tsa @global.parent_app hammoho!", - "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Lumela @fields.user_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", - "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Lumela @fields.group_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", - "You've put so much effort into being a better parent. You are loved and appreciated!": "U entse boiteko bo boholo ba ho ba motsoali ea molemo. Oa ratoa ebile oa ananeloa!", - "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Kea leboha ha u itlamme ka botsoali ba hau.\n\nSehlooho sa hau sa @data.workshop.w_1on1.in_text_title seo loketse bakeng sa hau!", - "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Ho qeta nako le mocha oa hao ho thusa ho haha tshepo.\n\nTsoela pele leetong la hau la @global.parent_app bakeng sa liphetho tse ntle.", - "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O entse hantle ka ho qeta @data.workshop.w_1on1.in_text_title. Hosasane, o ka kena ho workshop e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta tsebo e ncha!", - "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Hopola ho qeta @data.workshop.w_1on1.in_text_title. O tla fumana boitsebiso ba bohlokoa ka mor'a metsotso e seng mekae!\n\nO entse hantle ka ho leka ho ba motsoali ea molemo.", - "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Lumela @fields.user_name! O qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", - "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Lumela @fields.group_name! U qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", - "Welcome to ParentApp. Click here to start your journey!": "Rea o amohela ho ParentApp. Tobetsa mona ho qala leeto la hao!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Ke tshepa hore o ikutlwa hantle. Ho thata ho ba motswadi, empa ho hang motjha wa hao hase baehlotse, o se ke wa mo akgella matsoho. Wekshopo ya hao ya pele ya botswadi e se e lokile! Tobetsa mona mme o qale leeto la hao la ParentApp!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho o thusa ho laola seterese sa botswadi.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Dumela hape! O ka sebedisa ParentApp neng kapa neng hammoho le tshehetso ya botswadi e etseditsweng ditlhoko tsa hao. Hobaneng ha o sa e leke ha o ya mosebetsing kapa ha o ntse o pheha dijo? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Re tshepa hore o ikutlwa hantle. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho o thusa ho laola boitshwaro ba motjha wa hao.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Dumela! Na dintho tsohle di SHAPO? Ekare ha o so bule ParentApp morao tjena. Hobaneng o sa e leke? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa. Re tla wa re tsoha le wena.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "ParentApp e o hlolohetswe! O ka ithuta dintho tse ngata. Re tla tswela pele re o tshehetsa.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho lokisetsa motjha wa hao katleho bophelong.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho tiisa dikamano le motjha wa hao hape!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Dumela motswadi wa mmakgonthe, hopola hore le wena o itlhokomele - seo se tla thusa wena LE ba lelapa la hao! Fumana dikeletso le maele a mang ho ParentApp.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Dumela motswadi wa mmakgonthe! Hopola, o ka fumana dikeletso tse ngata tse thusang ho ParentApp.", - "New message from PLH": "Molaetsa o motjha o tswang PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Dumela motswadi wa mmakgonthe! ParentApp e tla wa e tsoha le wena. E hlahlobe hona jwale!", - "**Welcome and Self-Care** workshop": "Wekshopo ya **Kamohelo le ho Itlhokomela**", - "How to do self-care": "Tsela ya ho itlhokomela", - "**One-on-One Time** workshop": "Wekshopo ya **Nako ya Boinotshing**", - "**Praise** workshop": "Wekshopo ya **Pabatso**", - "**Positive Instructions** workshop": "Wekshopo ya **Ditaelo tsa se Tshwanelang ho Etswa**", - "**Managing Stress** workshop": "Wekshopo ya **Ho Laola Seterese**", - "**Family Budgets** workshop": "Wekshopo ya **Dibajete tsa Lelapa**", - "**Rules** workshop": "Wekshopo ya **Melao**", - "**Calm Consequences** workshop": "Wekshopo ya **Ditlamorao tse Fanwang ho Theotswe Moya**", - "**Problem Solving** workshop": "Wekshopo ya **Ho Rarolla Mathata**", - "**Teen Safety** workshop": "Wekshopo ya **Polokeho ya Batjha**", - "**Dealing with Crisis** workshop": "Wekshopo ya **Ho Sebetsana le Tsietsi**", - "**Celebration and Next Steps** workshop": "Wekshopo ya **Ho Keteka le Mehato e Latelang**", - "Quick pause": "Kgefutsa hanyane", - "Power of three": "Matla a tharo", - "One thing today": "Ntho e le nngwe kajeno", - "Breathe to three": "Kga moya hararo", - "In and out": "O kge mme o lokolle", - "Think about today": "Nahana ka kajeno", - "Pause to respond": "Kgefutsa ho arabela", - "Small things": "Dintho tse nyane", - "Body scan": "Sekene sa mmele", - "Feel the ground": "Utlwa lefatshe", - "Counting sounds": "Ho bala medumo", - "Feel your feeling": "Ho utlwa boikutlo ba hao", - "Your song": "Pina ya hao", - "Ground & gratitude": "Lefatshe le kananelo", - "Notice how you feel": "Lemoha kamoo o ikutlwang kateng", - "Pause power": "Matla a kgefu", - "Taking care of yourself": "Ho itlhokomela", - "Take a pause": "Nka kgefu", - "Physical activity": "Boikwetliso", - "List of things": "Letoto la dintho", - "Connect": "Hokela", - "Prevent anger": "Thibela bohale", - "Angry? Take a break": "Na o halefile? Nka kgefu", "Reflect on the positive": "Nahana ka dintle", "Check-in chat": "Kenella moqoqong", "Dream Travel": "Leeto la Ditoro", @@ -1677,37 +1554,15 @@ "What are you doing?": "O etsang?", "Here is a fun game you can do with your family!": "Papadi e monate ke ena eo o ka e etsang le lelapa la hao!", "Crazy chicken": "Tantshi ya dikgoho tse hlanyang", - "My Tips": "Dikeletso tsa Ka", - "**My Tips** in the @global.parent_centre": "**Dikeletso tsa Ka** ho @global.parent_centre", - "Essential Tools": "Dithulusi tsa Bohlokwa", - "**Essential Tools** in the @global.parent_centre": "**Dithulusi tsa Bohlokwa** ho @global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Fetola @global.parent_app ho dumellana le ditlhoko** ho @global.parent_centre", - "Customise Again": "Fetola Hape ho Dumellana le Ditlhoko", - "Relax & Activities": "Kgatholoha le Diketso", - "under **Relax & Activities** in the @global.parent_centre": "tlasa **Kgatholoha le Diketso** ho @global.parent_centre", - "Help": "Thuso", - "**Help** in the @global.parent_centre": "**Thuso** ho @global.parent_centre", - "Technical Support": "Tshehetso ya Setekgenike", - "**Technical Support** in the @global.parent_centre": "**Tshehetso ya Setekgenike** ho @global.parent_centre", - "Coping with @global.covid": "Ho sebetsana le @global.covid", - "**Coping with @global.covid** in the @global.parent_centre": "** Ho sebetsana le @global.covid** ho @global.parent_centre", - "Coping with grief": "Ho sebetsana le mesarelo", - "**Coping with grief** in the @global.parent_centre": "**Ho sebetsana le mesarelo** ho @global.parent_centre", - "Message Archive": "Pokello ya Melaetsa", - "**Message Archive** in the @global.parent_centre": "**Pokello ya Melaetsa** ho @global.parent_centre", - "Support Contacts": "Dintlha tsa ho Ikopanya le Bathusi", - "**Support Contacts** in the @global.parent_centre": "**Dintlha tsa ho Ikopanya le Bathusi** ho @global.parent_centre", - "Evidence Base": "Motheo wa Bopaki", - "**Evidence Base** in the @global.parent_centre": "**Motheo wa Bopaki** ho @global.parent_centre", + "Help yourself cope": "ithuse ho sebetsana", + "Help your teen cope": "Thusa mocha oa hao ho sebetsana le boemo boo", + "Practical steps": "Mehato e sebetsang", "How to talk to my teen": "Mokhoa oa ho bua le mocha oa ka", "Steps to deal with news": "Mehato ea ho sebetsana le litaba", "How can I help my teen choose well?": "Nka thusa joang mocha oa ka ho khetha hantle?", "What influences teen decisions?": "Ke eng e susumetsang liqeto tsa bacha?", "How does my teen feel?": "Mocha oa ka o ikutloa joang?", "Changing negative to positive": "Ho fetola linto tse mpe ho tse ntle", - "Help yourself cope": "ithuse ho sebetsana", - "Help your teen cope": "Thusa mocha oa hao ho sebetsana le boemo boo", - "Practical steps": "Mehato e sebetsang", "**Relax** @global.parent_point": "**Kgatholoha** @global.parent_point", "Doing a relaxation activity": "Ho etsa ntho e o kgathollang", "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Nako le nako ha o etsa ntho e o kgathollang, tobetsa @global.parent_point mme o keteke katleho ya hao!", @@ -1715,7 +1570,6 @@ "**Treat yourself well** @global.parent_point": "**Itlhokomele hantle** @global.parent_point", "Doing something they like for themselves": "Ho iketsetsa ntho eo a e ratang", "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Nako le nako ha o itlhokomela hantle, tobetsa @global.parent_point mme o keteke katleho ya hao!", - "Praise yourself": "Ipabatse", "**Praise yourself** @global.parent_point": "**Ipabatse** @global.parent_point", "Praising themselves": "Ha ba ipabatsa", "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Nako le nako ha o ipabatsa, tobetsa @global.parent_point mme o keteke katleho ya hao!", @@ -1771,5 +1625,219 @@ "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Ke maswabi ho utlwa hore ho bile boima. Ho etsa mmapa wa dikotsi le dibaka tseo o ka fumanang thuso ekaba ntho e thata le e ka etsang hore motho a nkehe maikutlo. Empa ke sona se ka o thusang ho tiisa hore motjha wa hao o sireletsehile!", "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Ke maswabi hore dintho ha dia tsamaya hantle hakaalo. Eo hase ntho e bonolo. Leka ho dula fatshe le ho buisana le motjha wa hao ka taba ena hape. Hape, na ho na le motho e mong eo motjha wa hao a mo tshepang ya ka bang teng ha o buisana le motjha wa hao?", "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Ke thabela ho utlwa hore ho tsamaile hantle! Ho beha ditlamorao tse nepahetseng ho thusa batjha ho itshwara hantle ebile ho etsa bophelo ba lelapa bo kgutsitseng haholo.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ke thabela ho utlwa hore ho tsamaile hantle! Ha motjha wa hao a ithuta tsela ya ho rarolla mathata, o tla sebedisa tsebo eo bophelo bohle ba hae. Ke mpho e babatsehang!" + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ke thabela ho utlwa hore ho tsamaile hantle! Ha motjha wa hao a ithuta tsela ya ho rarolla mathata, o tla sebedisa tsebo eo bophelo bohle ba hae. Ke mpho e babatsehang!", + "My Tips": "Dikeletso tsa Ka", + "**My Tips** in the @global.parent_centre": "**Dikeletso tsa Ka** ho @global.parent_centre", + "Essential Tools": "Dithulusi tsa Bohlokwa", + "**Essential Tools** in the @global.parent_centre": "**Dithulusi tsa Bohlokwa** ho @global.parent_centre", + "**Customise @global.parent_app** in the @global.parent_centre": "**Fetola @global.parent_app ho dumellana le ditlhoko** ho @global.parent_centre", + "Customise Again": "Fetola Hape ho Dumellana le Ditlhoko", + "**Customise Again** in the @global.parent_centre": "**Fetola hape** ho @global.parent_centre", + "Relax & Activities": "Kgatholoha le Diketso", + "under **Relax & Activities** in the @global.parent_centre": "tlasa **Kgatholoha le Diketso** ho @global.parent_centre", + "Help": "Thuso", + "**Help** in the @global.parent_centre": "**Thuso** ho @global.parent_centre", + "Technical Support": "Tshehetso ya Setekgenike", + "**Technical Support** in the @global.parent_centre": "**Tshehetso ya Setekgenike** ho @global.parent_centre", + "Coping with @global.covid": "Ho sebetsana le @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "** Ho sebetsana le @global.covid** ho @global.parent_centre", + "Coping with grief": "Ho sebetsana le mesarelo", + "**Coping with grief** in the @global.parent_centre": "**Ho sebetsana le mesarelo** ho @global.parent_centre", + "Message Archive": "Pokello ya Melaetsa", + "**Message Archive** in the @global.parent_centre": "**Pokello ya Melaetsa** ho @global.parent_centre", + "Support Contacts": "Dintlha tsa ho Ikopanya le Bathusi", + "**Support Contacts** in the @global.parent_centre": "**Dintlha tsa ho Ikopanya le Bathusi** ho @global.parent_centre", + "Evidence Base": "Motheo wa Bopaki", + "**Evidence Base** in the @global.parent_centre": "**Motheo wa Bopaki** ho @global.parent_centre", + "Quick pause": "Kgefutsa hanyane", + "Power of three": "Matla a tharo", + "One thing today": "Ntho e le nngwe kajeno", + "Breathe to three": "Kga moya hararo", + "In and out": "O kge mme o lokolle", + "Think about today": "Nahana ka kajeno", + "Pause to respond": "Kgefutsa ho arabela", + "Small things": "Dintho tse nyane", + "Body scan": "Sekene sa mmele", + "Feel the ground": "Utlwa lefatshe", + "Counting sounds": "Ho bala medumo", + "Feel your feeling": "Ho utlwa boikutlo ba hao", + "Your song": "Pina ya hao", + "Ground & gratitude": "Lefatshe le kananelo", + "Notice how you feel": "Lemoha kamoo o ikutlwang kateng", + "Pause power": "Matla a kgefu", + "Praise yourself": "Ipabatse", + "Taking care of yourself": "Ho itlhokomela", + "Take a pause": "Nka kgefu", + "Physical activity": "Boikwetliso", + "List of things": "Letoto la dintho", + "Connect": "Hokela", + "Prevent anger": "Thibela bohale", + "Angry? Take a break": "Na o halefile? Nka kgefu", + "It is hard to find time to have fun with your teenager.": "Ho thata ho fumana nako ya ho ithabisa le motjha wa hao.", + "In our busy lives it’s hard to focus on the positive.": "Bophelong ba rona bo maphathaphathe, ho thata ho tsepamisa kelello dinthong tse molemo.", + "How many days in the past week have you praised your teen?": "Ke ka matsatsi a make bekeng e fetileng o ileng wa babatsa motjha wa hao?", + "This is a very stressful time for families.": "Ena ke nako e boima haholo ho malapa.", + "How many days in the past week did you feel very stressed as a parent/caregiver?": "Bekeng e fetileng o qetile matsatsi a makae o ikutlwa o imetswe haholo jwaloka motswadi/mohlokomedi?", + "Sometimes our children make us really upset.": "Ka dinako tse ding bana ba rona ba re halefisa haholo.", + "How many days in the past week did you shout, scream or yell at your teen?": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa tleroha, wa tjodietsa kapa wa kgaruma motjha wa hao?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Kgweding e fetileng (matsatsing a 30), ke ka matsatsi a makae o ileng wa fellwa ke tjhelete ya ho lefella dijo?", + "It is so stressful when children misbehave.": "Bana ba itshwarang hampe ba baka seterese se sengata.", + "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgalemela bana ba hao ka hore o ba otle, o ba shape, kapa o ba jabele ka mpama kapa ka ntho e kang thupa kapa lebanta?", + "It’s hard to keep track of your teenagers when they are becoming independent.": "Ho thata ho latella batjha ba rona ha ba fumana bolokolohi ba ho iketsetsa dintho.", + "How many days in the past week did you know what your teen was doing and who they were with?": "Bekeng e fetileng ke ka matsatsi a makae o neng o tseba seo motjha wa hao a se etsang le hore na o na le bomang?", + "Days in the past week": "Matsatsi bekeng e fetileng", + "We all want to keep our children safe.": "Kaofela re batla ho tiisa hore bana ba rona ba sireletsehile.", + "Days in the past month": "Matsatsi a kgwedi e fetileng", + "Welcome and Self-Care": "Kamohelo le ho Itlhokomela", + "**Welcome and Self-Care** workshop": "Wekshopo ya **Kamohelo le ho Itlhokomela**", + "Self-Care": "Ho Itlhokomela", + "How to do self-care": "Tsela ya ho itlhokomela", + "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.": "Ho nna joalo ka motsoali, ho ne ho batla ho le thata ho iphumanela nako. Ke ne ke lula ke tšoarehile ka ho hlokomela ba bang kaofela. Empa ka @global.parent_app, ke lemohile bohlokwa ba hore ke e hlokomele. Sena se thusa nna LE ba lelapa laka!\n\nHo ba le motsotso bakeng sa ka hong thusa hore ke hemme hantle ebile ke lemohe hore na ke e kutloa joang. Le ka metsotso e 5, ea hore ke noe kopi ea tee ho etsa phapang e kgolo. Hona joale ke se ke khona ho sebetsana le khatello ea maikutlo hamolemo.", + "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.": "Ntate waka o ne a dula a phathahane. O ne a tla hae a tswa mosebetseng mme a re ha re qala re mo botsa dipotso o na re halefela. \n\n@global.parent_app e re thusitse haholo. Ha re sa lwana. Joale, ha ntate oa ka a fihla hae, o dula fatshe a le mong bakeng sa metsotso e 5 ebe re etsa mosebetsi wa ho phomola o tswang ho @global.parent_app ha mmoho, hore re khone ho hemela hodimo le ho phomola ha mmoho. Ha re qetsa we qoqa ka matsatsi a ronna, ka dintho tse ntle kapa tse mpe tse etsahetseng. Joale batho bohle ba thabile.", + "One-on-One Time": "Nako ya Boinotshing", + "**One-on-One Time** workshop": "Wekshopo ya **Nako ya Boinotshing**", + "How to spend one-on-one time": "Tsela ya ho qeta nako ya boinotshing", + "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!": "Ha ne ke qala ho utloa hore ke tlameha ho qeta nako ea One-on-One le mocha oa ka, ho ne ho le boima ho nna. Ke ne ke sa tsebe hore na ke e etse neng kapa ke reng. Ke ne ke sa batle ho senya mocha oa ka hoo a nahanang hore re lokela ho etsa ntho e 'ngoe le e 'ngoe hammoho.\n\nEmpa ke ne ke hlile ke batla ho haha kamano ea ka le ngoana oa ka ea lilemong tsa bocha mme ke ne ke batla hore a phete sefuba ka se mo tshoenyang. Kahoo re ile ra leka Nako ea One-on-One.\n\nTaba ea pele, e ne e utloahala e makatsa, empa e ile ea e-ba monate! Hona joale re shebella lenaneo la hae la TV hammoho mme rea qoqa ka lona. Ebile re ka bua le kamoo mora oa ka a fetohang lilemong tsa bocha, esita le ka likharebe le lintho tseo!", + "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.": "Ha mme waka a kōpa ho qeta nako le nna, ke ile ka nahana “Mohlomong ho na le phoso, mohlomong oa kula”. Empa a re, “Che, ke batla ho qeta nako feela.” Ke ne ke belaela, empa ke ile ka amohela, ka be ka lumela ho qeta nako le eena.\n\nO ile a mpotsa hore na ke rata ho etsa eng. Ho ne ho makatsa mme ke ne ke sa phutholoha, hobane ha ho mohla a kileng a qeta nako le nna ke le mong.\n\nHa a ntse a tsoela pele ho leka le ho qeta nako ena re le hammoho, ho ne ho le monate haholo. O ile a buisana le nna bongoaneng ba hae, lintho tseo ke neng ke qala ho li utloa. Seo se ile sa nthusa hore le nna ke bolele se etsahalang bophelong ba ka. Re bile re bua ka bahlankana le ka mathata ao ke nang le ona. Kea tseba hore nka bua le mme waka hona joale.", + "Praise": "Pabatso", + "**Praise** workshop": "Wekshopo ya **Pabatso**", + "How to praise": "Tsela ya ho babatsa", + "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!": "Ha ne re ithuta ka ntho ena ea thoriso, ke ile ka nahana hore \"Ha ho mohla re kileng ra rorisoa ka lintho ha re sa le bacha, joale ke hobane'ng ha re lokela ho qala hona joale?\". Empa ke ile ka thahasella ha ke ithuta hore na melemo ea ho babatsa e ka ba efe.\n\nHang ka mora thupelo ea beke le beke, ke ile ka bona mocha oa ka a etsa seo a se etsang letsatsi le leng le le leng: Ho hlatsoa lijana. Mme ka re, “Ke a leboha ka ho hlatswa lijana, ngoanaka, ho nthabisa haholo hore ebe o thusa.” Ngoana oa ka ea lilemong tsa bocha o ne a bososela mme a ba a tla ho tla nkopa, e leng seo a sa kang a se etsa.\n\nKhoebo ena ea thoriso e boima. Ke ntse ke lebala ka linako tse ling kapa ke fana ka thoriso ka nako e le 'ngoe le ho nyatsuoa. Empa ho babatsa ho hlile ho etsa phapang. Ke ne ke sa nahane hore thoriso e bonolo feela e ka etsa phetoho e joalo ho motho!", + "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.": "Ke ile ka leboha hore ebe mmè o ile a ithuta ka thoriso.\n\nmmè o ne a lula a hlokomela ha ke etsa ntho e fosahetseng. O ne a tle a nkgoele le go nkotla.\n\nEmpa ha mmè a ne a etsa li thupelo tsena, o ne a mpabatsa ka lintho tse nyenyane. Pele, ke ile ka nahana \"Ho etsahala'ng?\" empa yaba ya tswela pele. Ke ne ke e rata kahoo ke entse lintho tse ling tse ntle tseo ke neng ke nahana hore a ka li rata.\n\nHoa thabisa hore ebe mmè o bona lintho tse ntle tseo ke li etsang, eseng feela tse mpe.\n\nKe ile ka ba ka bua le eena hang. Nakong ea @data.workshop.w_1on1.title, ke ile ka re, “Kea leboha mmè, ha o bua ka ntho e ntle ha ke etsa lintho hantle, eseng feela ha ke etsa lintho tse fosahetseng.” Sena se ile sa re thabisa haholo ka bobeli.", + "Positive Instructions": "Ditaelo tsa se Tshwanelang ho Etswa", + "**Positive Instructions** workshop": "Wekshopo ya **Ditaelo tsa se Tshwanelang ho Etswa**", + "How to give positive instructions": "Tsela ya ho fana ka ditaelo tsa se tshwanelang ho etswa", + "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.": "Pele, ke ne ke holisa bacha ba ka ka tsela eo ke holisitsoeng ka eona: Ke ne ke ba bolella hore “le se ke la etsa sena, le se ke la etsa sane.” Re ne re loana haholo, empa lintho li fetohile haholo ha ke ithuta ka ho fana ka litaelo tse molemo.\n\nHona joale ke tsepamisa maikutlo boitshoarong boo ke batlang ho bo bona, mme ke fana ka litaelo tse hlakileng le tse bonolo ho bacha ba ka. Ho ile ha nka nako ho ithuta ho re “ka kopo etsa sena” ho e-na le ho re “o se ke oa etsa sena.”\n\nBacha ba ka esita le monna oa ka ba mpolella hore ba rata tsela ena ea ho etsa lintho, hobane joale ba tseba se lokelang ho etsoa. Ngoana oa ka o ile a re ka letsatsi le leng \"Ke rata mmè enoa e mocha haholo,\"' me maemo a ka a khatello ea kelello a theohile haholo.", + "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.": "Qalong, ke ne ke sa tsotelle hore na mmè o ne a etsa'ng ho @global.parent_app. Empa joale ke ile ka qala ho bona mmè a fetola tsela eo a neng a buisana le rona ka eona.\n\nKa letsatsi le leng, ha ke ne ke intsha le metsoalle ea ka, o ile a re ke tlameha ho fihla hae ka hora ea botshelela mantsiboea.E be ke nahana hore “Hmmm ho lokile,” hobane ka tloaelo o ne a sa fane ka litaelo tse hlakileng mabapi le seo a se batlang - o ne a sa bue letho ebe joale a nkomanya ka hore ebe ke siiloe ke nako ha ke fihla hae.\n\nHa ke fihla hae hoo e ka bang ka hora ea bohlano mantsiboea, mmè o ile a nkopa ’me a re “Kea leboha ha o fihlile ka nako.” E ne e makatsa, empa keile ka e rata.\n\nHo tloha ka nako eo, re na le puisano e hlakileng haholoanyane ka tlung.", + "Managing Stress": "Ho Laola Seterese", + "**Managing Stress** workshop": "Wekshopo ya **Ho Laola Seterese**", + "How to manage stress": "Tsela ya ho laola seterese", + "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!": "Bophelo bo thata ka linako tse ling. Pele ke kena ho @global.parent_app, ke ne ke lula ke khobile matshoafo ka linako tsohle. Ke ne ke ntsha khalefo ea ka ho e mong le e mong lapeng, eseng feela ho bacheng baka empa le monna oa ka. Ba ne ba baleha ha ke fihla hae, hobane ba ne ba tseba hore ke tla qala ho ba omanya.\n\nHo ithuta ho khefutsa le ho hema ho ne ho le boima qalong, empa nako le nako ha ke ne ke leka, ho ne ho nthusa hore ke khobe matshoafo. Hona joale bacha baka ha ba sa baleha ha ke khutlela hae, ’me ba mamela hamolemo ho feta ha ke ne ke ba hoeletsa!", + "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.": "Nako le nako ha ke etsa ntho e fosahetseng, Ntate o ne a nkhalefela haholo ’me a nkotla. O ne a bile a sa mmamele, mme le nna ke ne ke mo halefela le batho bohle.\n\nJoale, ha a halefile, o qala ka ho hemela holimo ka makhetlo a seng makae pele a arabela. E etsa hore bohle ba khobe matshoafo ho e-na le ho baka ntoa e kholo.\n\nE ile ea nthusa haholo lapeng le sekolong, hobane le nna ha ke sa rema motho e mong le e mong ebile ha ke sa le motho enoa oa moifo. Ha ke ikutloa ke halefile haholo kapa ke imetsoe kelellong, ke boetse ke hema haholo joalo ka ha Ntate a etsa. Se ke le motho ea fapaneng.", + "Family Budgets": "Dibajete tsa Lelapa", + "**Family Budgets** workshop": "Wekshopo ya **Dibajete tsa Lelapa**", + "How to budget & save": "Tsela ya ho bajeta le ho baballa tjhelete", + "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.": "Ho boloka chelete le ho etsa moralo oa tshebeliso ea chelete ho nthusa joaloka motsoali, mme ho thusa bacha baka hore ba utloisise hore na chelete e ea hokae.\n\nBacha ba ka ba ne ba lula ba kopa lintho tse ngata hobane ba ne ba sa utloisise ha ke re “ha ke na chelete.” Ba ne ba tla re, \"empa o na le mosebetsi!\"\n\nKe ile ka lula fatshe le bona mme ka ba bontsha lintho tsohle tseo re li lefang ka lapeng le hore na ho setse bokae. Ba utloisisa hona joale ebile ba fana ka maikutlo a hore na re ka boloka joang ho fihlela lipakane tsa rona tse kang lieta tse ncha kapa letsatsi la tsoalo le lipakane tse kholoanyane tse kang litefello tsa bona tsa sekolo. Bakeng sa e moholo, ke ile ka ba ka mo bulela akhaonto ea polokelo.", + "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.": "Ke ne ke tloaetse ho kopa mmè hore a nthekele liaparo tse ntle ka linako tsohle. Nako le nako o ne a re ho nna “ha ke na chelete,” empa ke ne ke tseba hore o ne a fumana chelete ho malome. Ke ne ke sa utloisise hore na ke hobane’ng ha a ne a hana ho nthekela liaparo. Ka nako e 'ngoe ke ile ka nahana \"ha a nthate.\"\n\nEmpa ka letsatsi le leng, o ile a mpitsa hore ke lule fatshe le eena mme a mpotsa “litlhoko le litlhoko tsa rona ke life.” Ke ile ka qala ho thathamisa litlhoko tsohle tsa ka le tseo ke li batlang. Eaba mmè o nthusa hore le nna ke nahane ka litlhoko tsa lelapa. Joale kea utloisisa hore na chelete ea rona e ea kae, e lebisang linthong tseo re li hlokang re le lelapa.\n\nHo tloha tsatsing leo, kea utloisisa hore nke ke ka tla ho botsa nako efe kapa efe. Hona joale, ha ke batla ho hong, ke ema ho fihlela bofelong ba khoeli ha bohle re buisana ka tekanyetsokabo hammoho ho bona hore na e ea lumellana. Re utloisisana hamolemo hona joale.", + "Rules": "Melao", + "**Rules** workshop": "Wekshopo ya **Melao**", + "How to create rules": "Tsela ya ho etsa melao", + "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.": "Bacha ba ka ba ne ba lula ba nyamela. Ke ne ke sa tsebe hore na ba hokae, mme ke ne ke ee ke tshoenyehe haholo ke be ke ba halefele. Ke ne ke ee ke re \"hona ke ntlo ea ka, mme melao ea ka ke ena, haeba o sa batle ho e latela o ka tloha oa lo itulela ha hao\"\n\nHa re ithuta ho @ global.parent_app ka melao, ke ithutile hore ho na le melao bakeng sa motho e mong le e mong, bacha le ea batho ba baholo. Haeba re latela melao joaloka batsoali, bacha ba rona ba tla latela mohlala oa rona.\n\nKe ile ka hlalosa matshoenyeho a ka mme ra lumellana kaofela: Kaofela re latela molao hape re bolela hore na re ea hokae ha re tsoa ka tlung. Ho qapa melao hammoho ho re thusitse haholo, kaha bacha ba ka ha ba sa mpona ke le motsoali ea tenang ea etsang melao e sa hlokahaleng.", + "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.": "Ha ho mohla mo nkileng ka rata melao ebile ke ne ke lebala melao haholo.\n\nKa letsatsi le leng, ke ne ke bapala le metsoalle ea ka. Molao wa lapeng ne e le hore re be re le ka jareteng ka 6pm, empa ka lebala hape. Ka 6.30 ho ne ho se ho fifala mme ke ne ke ntse ke le ka ntle ke bapala ka fono ea ka. Eaba moshanyana o tla, a nka mohala oa ka, a baleha.\n\nKe ne ke utloisisa hore melao e ka re thusa haholo ho nepahatsa hore re lula re bolokehile, kahoo ke ile ka fetola boitshoaro ba ka mme ke ne ke le jareteng ka 5pm ho tloha ka nako eo.", + "Calm Consequences": "Ditlamorao tse Fanwang ho Theotswe Moya", + "**Calm Consequences** workshop": "Wekshopo ya **Ditlamorao tse Fanwang ho Theotswe Moya**", + "How to give calm consequences": "Tsela ya ho fana ka ditlamorao ho theotswe moya", + "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!": "Ha bana baka ba e leng bocha ba ne ba etsa ntho e nkhalefisang, ke ne ke ba khalemela le ho ba fa kotlo hang-hang. Empa nakong e tlang ba ile ba boela ba etsa joalo hape! Ke ne ke sa utloisise hore na ke hobane’ng ha ba ne ba sa nkutloe le ha ke hoeletsa.\n\n@ global.parent_app e nthusitse ho utloisisa hore bacha baka ba atisa ho mmamela ha ke khobile matshoafo. Kahoo ha ho etsahala ntho e itseng, kea hemela holimo mme ke re, “Ke tla bua le uena hamorao ha re khobile matshoafo ka bobeli.”\n\nMme re lumellana ka liphello hona joale pele phoso e etsahala. Sena se entse lintho tse makatsang - ke bone phetoho e kholo boitshoarong ba mocha oa ka kaha joale a se a amehile haholo, mme ke na le khatello ea maikutlo e fokolang.\n\nKe lakatsa eka nka be ke tsebile sena khale, empa eseng morao haholo ho qala!", + "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.": "Mmè le Ntate ba ne ba lula ba nkotla ha ba nkhalefetse. Ba ne ba tle ba nkoe ka bohale mme le nna ke halefe. Hangata ke ne ke sa latele melao, hobane e ne e le bohale haholo, ke sa utloisise seo ba se buang, kapa ke ne ke sa itshoenye le ho ba mamela, hobane kaofela re ne re halefile.\n\nKa letsatsi le leng, ba ile ba mpotsa: A re nahane hammoho hore na phello e lokela ho ba efe ea ho se fihle hae ka nako. Ho ne ho le monate ho fana ka maikutlo a ka - pele ho etsahala ntho e re halefisang bohle. Kaofela re khobile matshoafo mme re lumellana pele. Ho bonolo hore ke latele melao hona joale hobane kea tseba hore ke lumellane ka molao le ka lebaka la seo haeba ke sa latele molao.", + "Problem Solving": "Ho Rarolla Mathata", + "**Problem Solving** workshop": "Wekshopo ya **Ho Rarolla Mathata**", + "How to solve problems": "Tsela ya ho rarolla mathata", + "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.": "Ke ne ke se na kamano e ntle le morali oa ka. Ke ne ke lula ke mo omanya, mme o ne a hana ho ea sekolong.\n\nEitse ha ke qala ho qeta nako ea One-on-One le eena, ke ile ka hlokomela hore ha a batle ho kena sekolo hobane o ne a hlekefetsoa sekolong. Re ile ra lula fatshe mme ra sebelisa mehato e 6 ea ho rarolla mathata. Re ile ra hlokomela bothata, mme ra fumana tharollo hammoho: “Nka etsa’ng joaloka motsoali e le hore u ka kena sekolo ’me o ikutloe o sireletsehile?”\n\nRe ile ra lumellana hore ke tla ea bua le tichere ho fumana tsela ea ho ea pele. Re hlile re fumane litharollo hammoho, mme re haufi hona joale.", + "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.": "Ha ntate oaka a ntsebisa mehato ea ho rarolla mathata, e ile ea nthusa ka lelapa la ka, empa hape e ile ea nthusa ka metsoalle ea ka.\n\nKe ile ka bolella metsoalle ea ka ka mehato ena, joale ha re qabana re lula fatshe mme bohle ba tla le tharollo. Ka mor'a moo re sheba lintho tse mpe le tse ntle tsa tharollo ka 'ngoe, mme re lumellana hore \"ho lokile, ha re lekeng ena.\"\n\nMetsoalle ea ka e bile ea e isa mehato ena malapeng a bona, mme e thusa le malapa a bona!\n\nHo monate ha ba bang ba ho mamela mme ba amohela maikutlo a hao le hoja o le mocha. Kaofela re ka tlisa kutloano eo le metsoalle le malapa a rona.", + "Teen Safety": "Polokeho ya Batjha", + "**Teen Safety** workshop": "Wekshopo ya **Polokeho ya Batjha**", + "How to keep your teen safe": "Tsela ya ho tiisa hore motjha wa hao o bolokehile", + "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.": "Ke ile ka leboha haholo ho etsa moralo oa polokeho le mocha oa ka. Ke ne ke nahana hore kea tseba hore na ke libaka life tse sireletsehileng bakeng sa mocha oa ka le tse seng joalo. Empa ha re etsa moralo oa polokeho hammoho, ke ile ka hlokomela hore ngoanana oa ka o ne a tseba libaka tse ngata tseo ke neng ke sa li tsebe.\n\nKe ne ke boetse ke nahana hore o bolokehile sekolong, empa ka mosebetsi ona ke ile ka hlokomela hore o ne a hlorisoa mme matichere ha aa ka a etsa letho.\n\nHa re ntse re bua haholo, ke ile ka utloisisa haholoanyane le ho fumana boitsebiso ho mocha oa ka. Seo se ile sa nthusa haholo hore ke sireletse ngoana oa ka le ho mo boloka a sireletsehile.", + "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!": "Ha nna kapa metsoalle ea ka re kena khathatsong, kamehla ke ne ke leka ho patela mmè hobane o ne a halefa haholo mme a nkomanya.\n\nHa re ne re etsa 'mapa oa libaka tse sireletsehileng le tse sa bolokehang, ke ithutile ho hongata - hape ke hobane'ng ha ho le kotsi ho arolelana setshoantsho se seng le se seng inthaneteng. Mmè o ile a mpolella hore nka lula ke mo botsa hore na ho na le bothata mme a tshepisa hore a ke ke a teneha.\n\nO ile a boloka tshepiso ea hae, joale haeba ke e-na le bothata kapa ke ikutloa ke sa sireletseha kea tseba hore re ka khona ho tla ka tharollo hammoho kamehla. Ke khona ho bua le mmè ka lintho tseo ke li etsang Inthaneteng hona joale!", + "Dealing with Crisis": "Ho Sebetsana le Tsietsi", + "**Dealing with Crisis** workshop": "Wekshopo ya **Ho Sebetsana le Tsietsi**", + "How to deal with crisis": "Tsela ya ho sebetsana le tsietsi", + "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!": "Mocha oa ka o ne a lula a halefile ka linako tsohle. Le ka mohla o ne a ke ke a mamela mme re ne re qabana haholo letsatsi le leng le le leng. Ka thuto ea @global.parent_app, ke qalile ho qeta nako e ngata le mocha oa ka le ho matlafatsa likamano tsa rona. Ka letsatsi le leng o ile a mpolella hore ke setho sa kenke empa o ne a batla ho tsoa.\n\nRe ile ra etsa meralo ea nakoana le ea nako e telele hammoho ea hore na re ka etsa seo joang. Bophelo ba rona bo bonahala bo fapane haholo hona joale!", + "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.": "Lilemong tse peli tse fetileng, ke ile ka betoa ke malome ea neng a lula jareteng ea rona. Ha kea ka ka bolella mme waka, hobane ke ne ke tshaba hore o tla nkotla, a nkhalemele, kapa a nteleke ka ntle. Ke ne ke se na moo nka eang teng.\n\nHa mme oa ka a qala ka @global.parent_app, o ile a qala ho qeta nako e ngata hammoho le nna. Ke ne ke ntse ke tshohile, empa qetellong ke ile ka e arolelana le mme waka. Mme waka ha aa ka a hoeletsa, empa o ile a ’mamela mme a mpolella hore hase molato oa ka. Re ile ra ea sepoleseng le tleliniking hammoho. Ke leboha haholo hore ebe ha ke sa tlameha ho jara sephiri sena.", + "Celebration and Next Steps": "Ho Keteka le Mehato e Latelang", + "**Celebration and Next Steps** workshop": "Wekshopo ya **Ho Keteka le Mehato e Latelang**", + "How to support each other": "Tsela ya ho tshehetsana", + "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Dumela motswadi wa mmakgonthe, hopola hore le wena o itlhokomele - seo se tla thusa wena LE ba lelapa la hao! Fumana dikeletso le maele a mang ho @global.parent_app.", + "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.": "Dumela motswadi wa mmakgonthe! Hopola, o ka fumana dikeletso tse ngata tse thusang ho @global.parent_app.", + "Hi great parent! @global.parent_app is here to support you. Check it out now!": "Dumela motswadi wa mmakgonthe! @global.parent_app e tla wa e tsoha le wena. E hlahlobe hona jwale!", + "Welcome to @global.parent_app. Click here to start your journey!": "Rea o amohela ho @global.parent_app. Tobetsa mona ho qala leeto la hao!", + "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Dumela! Na dintho tsohle di SHAPO? Ekare ha o so bule @global.parent_app morao tjena. Hobaneng o sa e leke? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa. Re tla wa re tsoha le wena.", + "@global.parent_app misses you! There is a lot to explore. We are still here to support you.": "@global.parent_app e o hlolohetswe! O ka ithuta dintho tse ngata. Re tla tswela pele re o tshehetsa.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho lokisetsa motjha wa hao katleho bophelong.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho tiisa dikamano le motjha wa hao hape!", + "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!": "Ke tshepa hore o ikutlwa hantle. Ho thata ho ba motswadi, empa ho hang motjha wa hao hase baehlotse, o se ke wa mo akgella matsoho. Wekshopo ya hao ya pele ya botswadi e se e lokile! Tobetsa mona mme o qale leeto la hao la @global.parent_app!", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho o thusa ho laola seterese sa botswadi.", + "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Dumela hape! O ka sebedisa @global.parent_app neng kapa neng hammoho le tshehetso ya botswadi e etseditsweng ditlhoko tsa hao. Hobaneng ha o sa e leke ha o ya mosebetsing kapa ha o ntse o pheha dijo? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.": "Re tshepa hore o ikutlwa hantle. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho o thusa ho laola boitshwaro ba motjha wa hao.", + "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Lumela @fields.user_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", + "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Lumela @fields.group_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", + "You've put so much effort into being a better parent. You are loved and appreciated!": "U entse boiteko bo boholo ba ho ba motsoali ea molemo. Oa ratoa ebile oa ananeloa!", + "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Kea leboha ha u itlamme ka botsoali ba hau.\n\nSehlooho sa hau sa @data.workshop.w_1on1.in_text_title seo loketse bakeng sa hau!", + "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Ho qeta nako le mocha oa hao ho thusa ho haha tshepo.\n\nTsoela pele leetong la hau la @global.parent_app bakeng sa liphetho tse ntle.", + "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O entse hantle ka ho qeta @data.workshop.w_1on1.in_text_title. Hosasane, o ka kena ho workshop e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta tsebo e ncha!", + "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Hopola ho qeta @data.workshop.w_1on1.in_text_title. O tla fumana boitsebiso ba bohlokoa ka mor'a metsotso e seng mekae!\n\nO entse hantle ka ho leka ho ba motsoali ea molemo.", + "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.": "Dumela @fields.user_name! Kajeno re keteka dikhoedi tse pedi tsa @global.parent_app!\n\nBekeng ena otla ithuta ho thusa ngoana oa hau ho latela melao ea lapeng.", + "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.": "Dumela @fields.group_name! Kajeno re keteka dikhoedi tse pedi tsa @global.parent_app!\nBekeng ena otla ithuta ho thusa ngoana oa hau ho latela melao ea lapeng.", + "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.": "Nahana ka di nako tse o etseng bo nnete ba hore mocha oa hao a bososele, le tlhokomelo eohle eo o mo fileng eona. \n\nKa nnete o lokela ke ho ba motlotlo haholo- ena ke nako e thata ho ba motswadi.", + "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!": "O sebeditse hantle haholo - o se o fumane disebediswa tse 6 tsa botswadi! Etsa thupelo e latelang ho fumana tse ding!", + "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.": "Phethela thupelo mme o leke ho buisana le mocha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", + "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", + "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!": "O entse mosebetsi o motle ka ho qeta @data.workshop.w_consequence.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", + "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.": "Liphello tse khutsitseng li thusa ngoana oa hau ho latela melao. Haeba ha o so qete @data.workshop.w_consequence.in_text_title, leka ho etsa joalo!\n\nO entse hantle ka ho bontsha boitlamo bo bongata hakana.", + "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.user_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", + "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.group_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", + "Be proud, you are a committed parent. This is a big achievement!": "E ba motlotlo, o motsoali ea ikemiselitseng. Ena ke katleho e kholo!", + "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.": "Likoluoa li ka nna tsa etsahala, mme RE KA itokisa!\n\nQala thupelo e latelang ho bona hore na u etsa joang le ngoana oa hao.", + "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @data.workshop.w_crisis.in_text_title mme ho ithuta mekhoa e metle ea ho itshwaraha mocha oa hao a ho hloka haholo.", + "Have you and your teen discussed what you would do in a crisis?": "Na wena le mocha oa hao setse le buisane ka seo le tla se etsang ha ho nale tsietsi?", + "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!": "O sebeditse ka ho phethela @data.workshop.w_crisis. Hosane o ka fumana thupelo ea ho qetela ho bontsha leeto la hao, hape hore o nahane ka seo o ka se etsang ho tloha moo!", + "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.": "Thupelo ea ho qetela e hosane.\n\nPele, leka ho qeta @data.workshop.w_crisis.in_text_title. Ka tsela ena, o tlo kgona ho tlatseletsa tsebo ea hao ea botsoadi mme o etse qeto ea hore na o tla etsa eng ka mor'a moo.", + "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Dumela @fields.user_name, o sebeditse hantle haholo ka ho thoma beke ea 4!\n\nBeke ena e thusa ho eketsa monyetla oa hore mocha oa hao a etse seo o se kopang hore a se etse.", + "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Dumela @fields.group_name, o sebeditse hantle haholo ka ho thoma beke ea 4!\n\nBeke ena e thusa ho eketsa monyetla oa hore mocha oa hao a etse seo o se kopang hore a se etse.", + "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!": "e ba mosa mo ho wena. Ha ho na motswadi ea phethahetseng. Ho sebedisa @global.parent_app ho bontsha hore oa tsotella!", + "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.": "Bacha ha ba mamele ka di nako tsohle. Sheba thupelo ea bekeng ena, ho ithuta kamoo ditaelo tse ntle di ka thusang ka teng.", + "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.": "Ditaelo tse ntle di ntlafatsa boitshwaro.\n\nTlatsa @data.workshop.w_instruct.in_text_title bakeng sa maikutlo a hore na sena se ka sebetsa joang lelapeng la hao.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title -o hatela pele haholo.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively di nako - o hatela pele haholo.", + "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, o tla fumana wekshopo e ntjha e ho letetse.O tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", + "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?": "Batswadi ba bang ba sebedisa app ena haba fetsa ho ja dijo tsa mantsiboea. Why o sa tlatse @data.workshop.w_instruct.in_text_title ha o nale metsotso e seng mekae?", + "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Dumela @fields.user_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", + "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Dumela @fields.group_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", + "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!": "Ha o mong. Batswadi lefatsheng ka bophara ba tobane le mathata a tshwanang.\n\nO etsa sohle se matleng a hao, mme re motlotlo ka wena!", + "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", + "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!": " Theha tekanyetso ea lelapa le mocha oa hao - e tla thibela likhang tsa chelete.\n\nTlatsa @data.workshop.w_money.in_text_title ho bona hore na joang. Ho bonolo - o tla bona!", + "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.": "Ke hantle hore ebe o phethetse @data.workshop.w_money.in_text_title. Hosane, ho tla thakgolwa thupelo e ncha ho o thusa ho beha melao e sebetsang ea lelapa.", + "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.": "Batsoali ba bangata ba re ho etsa moralo oa tshebeliso ea chelete ho tlisa khotso. Haeba ha o so qete @data.workshop.w_money.in_text_title, leka ho etsa joalo! \n\nRea leboha ka boitelo ba hao ba botsoali.", + "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Lumela @fields.user_name! O qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", + "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Lumela @fields.group_name! U qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", + "Well done for using @global.parent_app! Remember, small things make a big difference.": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore, dintho tse nyane di tlisa phetoho e kgolo.", + "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!": "Rea leboha ka ho e tsetela le ba lelapa la hao. Leka @data.workshop.w_praise.in_text_title ho aha boqhetseke ba botswadi bo lokileng!", + "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.": "Pabatso ke moriana o moholo. \n\nPhethela @data.workshop.w_praise.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", + "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!": "Babatsa mocha oa hao ha entse ntho le e leng nngoe eo a e entseng hantle.\n\nMme ke leng la bofelo mo o ileng wa ithorisa kapa wa babatsa motho o mongwe o moholo? E leke!", + "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.": "Mosebetsi o motle haholo, o phethile @data.workshop.w_praise.in_text_title. Thupelo e ncha e tlabe e ho loketse hosane. E leke - o tla bona phetoho mo boitshwarong ba mocha oa hao.", + "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.": "Dumela @global.user_name, thupelo e ncha e tla be eo emetse hosane!\n\nHo bonahala o kare ha o so qete @data.workshop.w_praise.in_text_title. E khutshoane (ka tshepisa) - e fe monyetla ha o nale metsotso e seng mekae.", + "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Dumela @fields.user_name! Beke e ncha, thupela e ncha! ithute ho beha melao ea lapeng eo mocha oa hao a e iutloisisang ebile a e latela.", + "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Dumela @fields.group_name! Beke e ncha, thupela e ncha! ithute ho beha melao ea lapeng eo mocha oa hao a e iutloisisang ebile a e latela.", + "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!": "Na o lekile ka hohle kamoo o ka khonang empa ngoana oa hau a ntse a le moferefere? Hopola, o etsa mosebetsi o motle - ho tla ba le linako tse monate le bona!", + "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.": "Kea leboha ka ho tsetela ho botsoali ba hao.\n\nEtsa @data.workshop.w_rules.in_text_title ho thusa ngoana oa hao ho utloisisa le ho latela melao ea lapeng.", + "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @data.workshop.w_rules.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", + "Have you managed to set a rule with your teen?": "Na o kgonne ho beha molao mmoho le motjha wa hao?", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", + "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!": "Hosane ho tla buloa thupelo e ncha!\n \nTlatsa sehlooho sa @local.workshop_data.in_text_title pele o tsoela pele. Metsotso e seng mekae feela ho thusa ngoana oa hau ho latela melao ea hau!", + "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Dumela @fields.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng.", + "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Dumela @fields.group_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng.", + "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!": "Ho ba motsoali ho thata, haholo-holo hona joale. E ba motlotlo ka lintho tseo o li finyeletseng. Ka tlhokomelo eo uo ba fang eona. Le ka nako e o etsa hore ba bososele. O sebeditse!", + "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.": "Nahana ka ditsebo tsa ho ba motswadi tseo o di fumaneng!\n\nTlatsa hupelo e latelang ho fumana ditsebo tse ding.", + "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.": "Ho qoqa hammoho ka sechaba sa habo bona le diphephiso tsa inthaneteng ho thusa ka ho nepahatsa hore bacha ba dula ba bolokehile. \n\nTlatsa thupelo ea @data.workshop.w_safe.in_text_title ho bona hore na o ka etsa sena joang.", + "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!": "Rea a o thoholetsa, o phethetse @data.workshop.w_safe.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", + "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.": "Qeta @data.workshop.w_safe.in_text_title pele o fetela pele. Sena se ka thusa ho thibela mathata a mangata.\n\nO sebeditse hantle ha holo ka ho sebedisa @global.parent_app ho tshehetsa ba lelapa la hao.", + "This week is about YOU! Treat yourself well. You deserve it!": "Beke ena e bua ka UENA! Itshoare hantle. U tshoaneloa ke eona!", + "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Qala lenaneo le lecha la @global.parent_app hosane. O tla bona liphetho tse ntle!", + "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Hopola ho bolella balekane ba hau ba @global.parent_app ka sesebelisoa. Hosane, le ka qala ho etsa lithupelo tsa @global.parent_app hammoho!", + "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.": "Dumela @fields.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", + "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @fields.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", + "Your commitment is inspiring. Keep calm and carry on!": "Re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", + "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.": "Mathata a sa lebellwang a hlaha haholo ha re nale bana bao e leng bacha. \n\nithute hore na o ka bua jwang ka mathata ana thupelong e latellang.", + "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @data.workshop.w_solve.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi.", + "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", + "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Ke hantle hore ebe o phethetse @data.workshop.w_solve.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", + "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.": "O tla fumana thupelo e ncha hosane!\n\nKa ho tlatsa @data.workshop.w_solve.in_text_title pele, o tla tseba ho rarolla mathata mmoho.", + "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Dumela @fields.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Dumela @fields.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "Manage anger and stress with this new workshop. It helps you take better care of yourself.": "Laola khalefo le khatello ea maikutlo ka thupelo ena e ncha. E tlo o thusa ho itlhokomela hamolemo.", + "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.": "Na o ikutlwa o hloletsoe? Ho hema ka botebo ho a thusa.\n\nFetola @data.workshop.w_stress.in_text_title ho o thusa ho sebetsana le khatello ea maikutlo.", + "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.": "Na o ikutlwa o na le khatello ea maikutlo bekeng e na? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", + "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", + "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!": "O sebeditse ka ho phethela @data.workshop.w_stress.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", + "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!": "itokisetse thupelo e ncha ea hosane.\n \nKa ho tlatsa @data.workshop.w_stress.in_text_title pele, o rala motheo oa bohlokoa: Haeba o ikutloa o thabile, lelapa la hao le lona le tla thaba!" } \ No newline at end of file diff --git a/packages/app-data/translations/za_tn/strings.json b/packages/app-data/translations/za_tn/strings.json index 72de42092b..93fd2fdd0e 100644 --- a/packages/app-data/translations/za_tn/strings.json +++ b/packages/app-data/translations/za_tn/strings.json @@ -1,8 +1,116 @@ { + "When everything feels like it is falling apart": "Fa tsotlhe di utlwalega okare di a phutlhama", + "And you can't help but raise your voice": "Ebile o palela ke go itshwara mme o isa lentswe kwa godimo", + "When all the frustrations are beginning to start": "Fa tsotlhe tse di kgobang marapo di simolola", + "Remember that you have a choice": "Gopola gore o na le boikgethelo", + "Remember all we have to be grateful for": "Gopola tsotlhe tse o ka di lebogelang", + "Let's slow down": "A re fokotse lobelo", + "Take a few deep breaths": "Hemela kwa teng makgetlhonyana", + "Because I really couldn't love you more": "Ka gonne ga go na gore nka go rata go fetisa", + "You can take pause, you can count to 10": "O ka emisa go se kae, o ka bala go fitlha ka 10", + "Play a game or do something fun": "Tshameka motshameko kgotsa dira sengwe se se monate", + "You can phone a friend, someone to confide in": "O ka letsetsa tsala, mongwe yo o ka buang le ene", + "Remember you're not the only one": "Gopola gore ga se wena fela", + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Botsanang gore, “Ke eng se se go itumedisitseng gompieno?”\n* Botsanang gore, “Ke bothata bofe jo o kopaneng le jone gompieno?”\n* Botsanang gore, “Nka go thusa jang?”\n* Lekang go dira seno mmogo letsatsi le letsatsi; e ka nna ka nako ya fa lo ja dijo tsa maitseboa mmogo kgotsa pele ga lo ya go robala.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Botsa mosha wa gago gore ke mofuta ofe wa dijo tse a tla ratang go di ja. \n* Di baakanyeng mmogo! \n* Ba letle go refosanya go nna moapei mogolo – ba etelela pele, mme o latela ditaelo tsa bone. \n* O ka nna wa ba thusa go dira tekanyetsokabo ya ditswaki! \n\nGa o akanye gore seno se ka dira? Kopa mosha wa gago gore BA KA rata lo dira eng mmogo. Ba letle go etelela pele. Iketle. Itumele.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Tshikinyang matsogo a lona a molema mo moweng ga 8 fa lo ntse lo bala go fitlha go 8.\n* Dirang seno ka bonako le kwa godimo ka moo go kgonegang.\n* Boeletsang seno ka matsogo a lona a mangwe. Boeletsang seno ka maoto a lona ka bobedi.\n* Dirang seno makgetlo a le 7, morago ga moo a le 6 mme lo tswelele go fitlhelela lo fitlha ko go 1.\n* Mongwe le mongwe o goeletsa a re “Koko e e sa utlweng” ba bo ba diragatsa go bina ga bone go go gaisang ga koko e e sa utlweng!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Tlhama go bina go le mmalwa ga dipina tse di ratiwang ke mosha wa gago. \n* Motho a le nosi o a bina mme ba bangwe botlhe ba a mo etsisa. \n* Refosanang ka go etelela pele. \n* Diragatsang seno fa pele ga ba lelapa!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Motshameko ono o botoka fa o tshamekiwa ke batho ba feta ba le 2.\n * Motho a le nosi o itira e kete o dira sengwe - Sekai, go kama moriri kgotsa go apaya dijo tsa maitseboa. \n* Motho yo mongwe o botsa gore, “O dirang?”\n* Motho wa ntlha o tlhoka go bua sengwe se se sa amaneng ka gope le go kama moriri, Sekai, “Ke bofa ditlhako.” \n* Motho wa bobedi jaanong o simolola go itira ekete o bofa ditlhako tsa gagwe go fitlhelela motho yo mo ntshwa a botsa gore, “O dirang?” \n\nKarabo e tshwanetse ka metlha ya nna e e farologaneng go na le se o se dirang!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Ga go kgonege gore o nne o ntse o tsere loeto, mme o ka nna wa lora ka metlha! Botsa mosha wa gago dipotso tseno:\n* O ka rata go tsaya loeto lwa go ya kae? Wa go tsamaya lobaka lo lo kae? O ka paka eng? O ka dira eng mo loetong lwa gago? O tla bona eng?\n* Lebelelang mmapa mmogo kgotsa lo o thale. \n * Tlhopha naga e mosha wa gago a iseng a e utlwalele mme lo ithute go le gontsi ka naga eo.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Tlhophang motshameko kgotsa ikatiso e lo ka e dirang mmogo. Dirang tshwetso ka thulaganyo. A lo tlile go dira seno letsatsi le letsatsi? Ka lobaka lo lo kae? \n\nE lekeng beke yotlhe. Kwa bofelong jwa beke, wena le lelapa la gago ipotseng dipotso tse di latelang:\n * Go tsamaya jang? \n * Lo ikutlwa jang kwa tshimologong ya beke? \n * Lo ikutlwa jang kwa bofelong jwa beke? \n * Ke eng se re ka se dirang ka tsela e e farologaneng beke e e latelang?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena le mosha wa gago lo ka rulaganya lenaane la baeng la batho ba ba itsegeng ba o ka ratang ba nne gone ko moletlong wa gago. Mongwe le mongwe wa lona a ka nna le batho ba le batlhano – e ka nna ba kgale kgotsa ba metlha ya gompieno. O ka laletsa mang? Le gore a baeng ba gago ba tla utlwana?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Nna le puisano le mosha wa gago ka selo se ba se ratang.\n\nE ka nna sengwe le sengwe se ba tlhophang go bua ka sone: metshameko, ditsala, mmino, batho ba ba tumileng...\n\nLeka go reetsa mosha wa gago mme o mo neele sebaka sa go bua.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Tlang ka mefuta e meraro ya go ikatisa mmele e lo ka e dirang mmogo. Sekai, go tsamaya, go tshematshema, kgwele ya dinao kgotsa go bina.\n * Tlhopha e le nngwe mmogo mme lo e leke. \n * Fa ka bobedi lo e rata, dirang tshwetso ya gore lo tlile go e dira kgapetsa ga kae. Gangwe kgotsa gabedi ka beke? Moso mongwe le mongwe?\n* Lo akanyeng mmogo ka ditsela tsa go e dira monate le go feta. A o ka kgona go taboga go ya bokgakaleng jo bo rileng? Refosanang ka go nna bakaedi? Kgothatsanang ka tuelo e nnye ya mahala?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Refosanang ka go “etelela pele”. Bua dipolelwana tsa matseno go tsenyeletsa batho botlhe. Mme yo o “etelelang pele” o tla naya taelo mme mongwe le mongwe a dire tiro ka bonako jo bo kgonegang:\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tshwara sengwe se se khibidu.” \n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tlolela ko godimo le ko tlase ga lesome.”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Baya ditlhako mo di nnang teng.”", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Tlhopha moanedi wa polelo go simolola go itlhamela polelo\n* Bareetsi ba polelo ba ka nna ba go tsena ganong ka lefoko ka nako epe fela.\n* Moanedi wa polelo o tlhoka go tsenyeletsa lefoko leo mo polelong ya gagwe.\n* Fa polelo e fedile, leka moanedi wa polelo yo o farologaneng!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Simolola polelo ka “Ga twe e rile....”\n* Letla mosha wa gago go itirela polelwana e e latelang.\n* Morago ga moo itirele polelwana.\n* Refosanang go fitlhelela lo nna le polelo e e ntshwa e e gakgamatsang.\n* Netefatsang gore lo khutlhisa polelwana ka ntlha e e molemo.\n* Botsa mosha wa gago gore ke karolo efe e a e ratileng thata ya polelo!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Motho wa ntlha a re, “Ka Lamatlhatso, ke ya kwa... (s.k., ke ya kwa phakeng)”\n* Motho wa bobedi o tlatsa wa ntlha ka gore, “Ka Lamatlhatso, ke ya kwa phakeng le... (s.k., ke etela tsala ya me e kgolo).\n* Motho mongwe le mongwe o tlatsa yo o sa tswang go feta, ba leka go akanya ka dilo tsotlhe tse di itumedisang go ka di dira ka Lamatlhatso.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Motshameko ono o ka tshamekiwa ka bobedi kgotsa le batho ba le bantsi mo setlhopheng.\n* Emang lo lebane kgotsa mo kgolokweng. \n* Motho a le nosi o etelela pele mme ba bangwe botlhe ba a mo etsisa, ba leka go suta ka nako e le nngwe le moeteledipele.\n* Netefatsa gore moeteledipele o suta ka iketlo moo go lekaneng gore mongwe le mongwe a mo latele! Bina ka tsela ya gore go sute mmele otlhe ka selekanyo se se farologaneng.\n* Morago ga sebaka, yo mongwe e nne ene a etelelang pele. Naya mongwe le mongwe tshono ya go etelela pele.\n * Leka seno go sena baeteledipele!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Motho wa ntlha ke ene a tlhophang kgotsa a opelang pina.\n * Mongwe le mongwe o tshwanetse go fopholetsa leina la pina (go e dira thata ba ka fopholetsa moopedi).\n * Wa ntlha go e fopholetsa sentle e nna ene moeteledipele yo o latelang.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Motshameko ono o botoka fa o na le bobotlana batho ba le 3.\n * Simolola mo teng ga kgolokwe mme o bo o fetisa “thwantsho” e le nngwe go dikologa kgolokwe (kgotsa go “opa diatla” fa o sa kgone go thwantsha).\n * O “thwantsha” gangwe go latlhela “thwantsho”, le gangwe go e tshwara. Leba motho yo o mo latlhelelang yone. \n * Letlhakore (godimo, tlase, tlhamaletseng, kgogoropo, dikologang fa fatshe) le maatla (thata, bonolo, magareng) a o thwantshang ka one a tshwanetse go ama tsela e motho a e tshwarang ka teng. \n * O ka busetsa morago “thwantsho”, wa e latlhela mo moweng, le go e tshwara ka makgetlo a le mmalwa pele ga o e fetisa. \n * Fa mongwe le mongwe a setse a tshwara seno, o ka simolola go suta go dikologa phaposi, o ntse o latlhela “thwantsho”. \n * A o ka e latlhela kafa tlase ga leoto? Mo mokotleng? Mo godimo ga tlhogo? Go kgaosetsa phetiso ya yone? Ijeseng monate ka “thwantsho monwana”!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Kwa bokhutlong jwa letsatsi, iphe motsotso wa go: \n\n* Bua le mosha wa gago ka selo se le nosi sa go ijesa monate ka seo ba se dirileng. \n* Ikakgole fa o dirile sengwe se le nosi se sentle gompieno. \n* O naledi!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Akanya ka maatla a a sa tlwaelegang. Sekai, go ya gongwe fela ka ponyo ya leitlho, go busetsa nako morago, go buisa megopolo. \n* Botsa mosha wa gago jaana, “Fa o ka bo o na le maatla a a sa tlwaelegang a go […], o ne o tla a dirisa jang?”\n* Ba kgothaletse go taya maatla a bone a a sa tlwaelegang leina le go a diragatsa. \n* Jaanong letla mosha wa gago go go tlhophela maatla a a sa tlwaelegang.\n* Netefatsa gore o diragatsa maatla a gago a a sa tlwaelegang, le wena!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Akanya ka maemo a mararo a a sa tshwaneng. Sekai, go kgweetsa koloi, go kgweetsa mokoro kgotsa go fofisa sefofane.\n* Di bolelele mosha wa gago o bo o mmotsa gore, “Ke efe e o ka e ratang?”\n* Ba botse gore goreng?\n* Jaanong akanya ka maemo a mangwe gape a le mararo kgotsa kopa mosha wa gago go go direla jalo.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Bolelela mosha wa gago sengwe sa fa o ne o le mosha. Ke dilo di feng tse di neng di seo ka nako eo? Difouno tse di nang le inthanete? O ne o dirang go ijesa monate? O ne o tshwenyegile ka eng? O seka wa tshwenyega fa ba sa go bolelele sepe fa o botsa – sa botlhokwa ke gore ba reetse mme ba gopole. Nako tse dingwe basha ba rona ba lebala gore batsadi ba bone le bone ke batho!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Akanya ka dipolelwana tse tharo ka ga wena. Tse pedi di tshwanetse go nna tsa nnete mme e nngwe e nne ya maaka.\n* Go ka nna ga thusa go akanya ka dikeletso, ditoro, maitemogelo a ko sekolong, tse di rategang kgotsa tse di sa rategeng. Sekai: Ke tlhoile dipanana, serutwa se ke se ratang ke saense, mme ke eletsa e kete nkabo ke kgona go opela. \n* Di bolelele mosha wa gago mme o ba kope go fopholetsa gore ke efe e e leng maaka. \n* A ba fopholeditse ka nepo? A o ne o maketse?\n* Jaanong ba kope ba dire se se tshwanang. A lo ithutile sengwe se sesha ka yo mongwe?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Akanya ka botswerere jo bosha jo lo ka bo ithutang mmogo le mosha wa gago. Sekai, go boloka kgwele e le mo moweng kgotsa mo leotong, thefosano, go dira sopo?\n * Refosanang ka go leka bokgoni jo bosha.\n * Netefatsa gore lo a akgolana, mme lo leke go ithuta le go tshameka mmogo!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Botsanang dipotso. E ka nna dipotso dingwe le dingwe fela ka ga dilo tse o di ratang kgotsa se o se dirileng gompieno.\n* Molawana nosi fela ke gore o ka se arabe ka “Ee”, “Nnyaa” kgotsa “Gongwe”.\n* O ka kgona go tsaya lobaka lo lo kae? O ka itirela dikarabo tse di kgatlhang jang?\n* Refosanang mme lo tshameke gape!", + "Home": "Gae", + "Settings": "Diseting", + "Template": "Thempoleiti", + "How to use @global.parent_app": "Go dirisa @global.parent_app", + "In-Week Messages": "Melaetsa ya Beke", + "Campaigns": "Matsholo", + "Notifications": "Dikitsiso", + "You have successfully entered developer mode.": "O tsentse mokgwa wa motlhami ka katlego.", + "You have entered an incorrect code.": "O tsentse khoutu e e seng yone.", + "About @global.parent_app": "Ka ga @global.parent_app", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app e tlhamilwe ke Parenting for Lifelong health (PLH) - kopantsho ya lefatshe ka bophara magareng ga baitsi ka botsadi go tswa go UNICEF, ba ga WHO le diunibesithi mo Aforika Borwa le UK, mmogo le di NGO tsa Aforika le malapa le basha botlhe ba Aforika ka bophara. Batsadi le basha ba dirile mmogo le rona mo go app le go thusa go netefatsa gore e bonolo go dirisa, ya itumedisa le go buisana.Diteng tse dingwe mo go app eno, jaaka go akanyetsa ditirwana le dikgang tsa tlhagiso, di dirilwe le batsadi le basha go netefatsa gore di maleba go ditlhokego tsa malapa. \n\nParenting for Lifelong Health (PLH) e ikemiseditse go neelana ka tshegetso ya mahala, didiriswa le mananeo go tshegetsa batsadi lefatshe ka bophara go rotloetsa pholo ya bana ba bona.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ka go tobetsa konopo e e fa tlase o tla seta sesha app ka go e busetsa kwa diseting tsa yone tsa kwa tshimologong. \n\nSeno se raya gore kgatelopele ya gago yotlhe le tiriso ya data di tlile go phimolwa mme app ya gago e tla dira jaaka e ne e dira kgetlho la ntlha.\n\nTSHWAYANTLHA: Go seta app sesha go ka se dirololwe mme ga o kitla o kgona go boa o bona gape tshedimosetso epe.", + "Open Survey": "Potsolotso e e Bulegileng", + "Select Language": "Tlhapha loleme", + "Workshop Options": "Dikakantsho tsa di-Workshop", + "Reset App": "Seta App sesha", + "Demo Presentation": "Pontsho ya Tshupetso", + "Organisation Registration": "Kwadiso ya Setheo", + "Developer Mode": "Mokgwa wa Motlhami", + "Unlock all workshops": "Lotlolola di-workshop tsotlhe", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ka go tobetsa mo konopong e e fa tlase o tla bo o lotlolola di-workshop tsotlhe.\n\nTSHWAYANTLHA: Badirisi ba seka ba dirisa mokgwa ono go lotlolola di-workshop, seno ga se atlanegisiwe ntle le fa go tlhokega.", + "Unlock workshops": "Bula di-workshop", + "All workshops are now unlocked.": "Di-workshop tsotlhe jaanong di lotlolotswe.", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Go latlhegelwa ke mongwe yo o mo ratang go ka tlisa maikutlo a bokete. Fano ke dintlha tse mmalwa tse di ka thusang go di gopola.", + "Ask for help": "Kopa thuso", + "Say goodbye": "Ere salang sentle", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Kopa mongwe yo o mo tshepang thuso- dijo kgotsa tlhokomelo ya bana e ka thusa. O ka tlhoka ditokomane go lefa, bana kgotsa tetlelesego ya tirelo.\n-Nako nngwe batho ba leka go tsaya madi kgotsa lefa la motho yo o mo kutlobotlhokong. Batlisisa ka ditshwanelo tsa gago.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "-Go laela go boima. Dira se se siametseng wena le mosha wa gago.\n- Malapa, basha le batsadi ba na le diphoso. Fa mongwe a tlhokofetse, go siame go bua ka dilo tse dintle le tse di bosula tse re di gopolang.\n- Go ka thusa go kwalela moswi lekwalo kgotsa go mo direla setshwantsho.\n- Bangwe ba dira tirelo kgotsa dijo tse di rileng go keteka moswi le go mo laela.\n- Go ka thusa go dira lebokoso la megopolo, go baya dilo tse di gopotsang wena le mosha wa gago ka ene.\n- Go ka thusa go bua ka motho yoo fa o mo naganne.", + "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Go latlhegelwa ke tsala kgotsa mongwe yo o mo ratang go boima. Go se ikgatelele le go dira dilo tse di go thusang go kgotlhelela mo nakong e e boima go ka thusa le mosha wa gago!", + "Take care of yourself": "Itlhokomele", + "Find a support group": "Batla setlhopha sa tshegetso", + "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Kutlobotlhoko e ka re ama dibeke kgotsa dikgwedi kgotsa dingwaga. Ga go tlhokege gore o ikutlwe botoka ka potlako.\n- Bona dijo le go robala go go lekaneng. Go boima go tlhokomela basha o lapile ebile o tshwere ke tlala.\n- Kwala dilo tse di dirang gore o ikutlwe o le botoka mme o di dire.\n- Leka go dira selo se le sengwe se se bonolo go iketla le mosha wa gago ka letsatsi, mme o itirele le wena.\n- Go siame go se ikutlwe sentle mme go siame go lela. O seke wa ikatlhola, ga se phoso ya gago.\n- Go phela go na le tsholofela le morago ga tatlhego. Leka go kgatlhegela dilo tse di bonolo, mme o tseye motsotso go dira sengwe sa go itumedisa le mosha wa gago.\n- Batla motho yo mogolo a le mongwe kgotsa ba ba bedi ba ba ka go tshegetsang, utlwelela, le go bua le bona.", + "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Go bua le mongwe yo a ka kgonang go go tshegetsa le go go reetsa go ka go thusa. \n- Go ka thusa go tsena mo setlhopeng sa batho ba ba kileng ba latlhegela ke mongwe.\n- Ga go na motho yo a senang diphoso. Go siame go bua ka dinako tse dintle le tse di bosula.", + "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Basha ba mekamekana le tatlhegelo ka tsela tse di farologaneng jaaka bagolo. O ka ba thusa go tlhaloganya seemo le maikutlo a bona ka go dira lefelo le le babalesegileng mo le ka buang le go amogela teng.", + "Be honest": "Nna le nnete", + "My teen's response": "Karabo ya mosha wa me", + "How to support my teen?": "Nka tshegetsa mosha wa me jang?", + "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Bolela mosha wa gago gore mongwe o tlhokafetse- nako nngwe ga ba itemogele.\n- Go bolelela mongwe ke thulaganyo, eseng tiragalo. O ka tshwanele ke go ba bolelela gape le gape.\n- Dirisa mafoko a ba a tlhaloganyang.\n- fa basha ba bannye ba sa tlhaloganye gore leso ke eng, thusa ka go ba tlholesetsa gore motho yo ba mo ratang ga a sa boa. leka go se e bitse 'go robala' kgotsa 'leeto'.\nBasha ba bagolo ba ka tlhaloganya gore leso ke eng, gongwe ba ka palelwa ke go abelana kgotsa go amogela maikutlo a bona.\n- Basha ba ka fetola ka tsela tse di farologaneng. Go lela, go dira modumo, go se dumele kgotsa go didimala gotlhelele. Tsotslhe tse di siame. Ba bolele gore o na le bona.\n- Letlelela dipotso le go buisana. Nna le nnete. Go siame gore ga re itse.", + "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "- Basha ba ka nna le bohutsana, go selekega, go se tlhalognaye kgotsa go se dumele, go swa bokidi, go bobola kgotsa go nna le ditlhabi, ditoro tsa poifo kgotsa mathata kwa sekolong. Mosha wa gago a ka bontsha a itumetse mme a hutsafetse. Ba ka ikgogela morago mme ba nna le nako e ntsi le ditsala. ba ka bontsha le maitsholo a a sa tlwaelegang kgotsa a a kotsi. Se se ka tswa se sa dire tlhaloganyo mo go wena, mme tsotslhe tse di tlwaelegile.\n-Basha ba ka ikutlwa okare ke ohoso ya bona- gongwe ba ba tshetse ka mogare kgotsa ba ne ba sa itshola sentle. Gatelela gore ga go phoso e ba e dirileng.", + "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Tlhalosa gore tatlhegelo e tla le maikutlo a le mantsi le ditlhagiso. Bontsha basha ba gago gore ba ratiwa le gore ba tlhokomelegile, mme o ba rotloetse go neelana ka maikutlo a bona ka go bua, go kwala kgotsa go thala.\n- Fa go na le setlhopa sa tshegetso se mosha wa gago a ka nnang karolo ya sona, seno se ka thusa.\n- Fa mosha a bua ka go ikutlwisa botlhoko kgotsa go ipolaya, kopa thuso go tswa go mongwe ka potlako.\n- Fa o ka kgona, dira mekgwatlwaelo ya lona ya letsatsi, seno se ka gomotsa basha.\n- Go ka thusa basha go nna karolo ya tirelo tsa setso tse di tsamaisanang le leso - go tlhopa pina kgotsa go bua sengwe.\n- Go fetsa metsotso e mmalwa ka letsatsi o lebane le mosha wa gago go ka mo thusa gore a ikutlwe a bolokesegile le go nna le nako ya go iketla kgotsa go bua ka dilo tse di mo tshwenyang.", + "How did it go?": "Go tsamaile jang?", + "Reply": "Araba", + "Timer": "Sebalanako", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Tobetsa khutlotharo go go thusa go nna o tshwere motlotlo ono @local.timer_duration.", + "Video": "Bidio", + "You selected less than @local.threshold": "O tlhophile kwa tlase ga @local.threshold", + "Start Positively Together": "Simololang Sentle Mmogo", + "It's great to see you again! \n\nLet's start with caring for you.": "Go gontle go go bona gape! \n\nA re simolole ka go go kgathalela.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Refosanang:\n* Arolelanang: O ikutlwa jang gompieno?\n* Akgola mongwe mo setlhopheng sa lona go bo a dirile sentle beke eno!\n\nGopola gore go sa kgathalesege gore o ikutlwa jang, go gontle o bo o le fano. Lotlhe lo tshwanelwa ke go akgolwa.", + "We all have negative thoughts sometimes.": "Rotlhe re na le megopolo e e sa siamang nako dingwe.", + "\"I am a failure\"": "\"ke motlholegi\"", + "What to do?": "Ke dire eng?", + "Examples": "Dikao", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Go ipolelela kgotsa go bolelela mosha wa gago go emisa kgotsa go bua se se rotloetsang se le kgatlhanong ga nke go thusa go le gantsi.", + "\"I do everything perfectly\"": "\"ke dira tsotlhe ka go tlhoka phosa\"", + "Instead, you can ask:": "Gongwe, o ka botsisa:", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Aa mogopolo o a kgonagala? Ditlhaloso tse dingwe ke eng?\n- Go ka diragala eng fa ke tswela pele ke tshepa mogopola ona?\n- Nka bolelela tsala eng fa a katswa a na le mogopolo o?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Se se thata, fela o leka ka bojotlhe jwa gago, mme re tla dira mmogo go bona tharabololo\"", + "\"It’s your fault\"": "\"ke phoso ya gago\"", + "\"Let’s come up with a solution together\"": "\"A re tle ka tharabololo mmogo\"", + "\"I lost my job\"": "\"ke latlhegetswe ke tiro\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Ke ithutile go le gontsi mo tirong ya me - seo se tla thusa go bona tiro e nngwe\"", + "\"Nobody likes me\"": "\"Ga go na motho yo a nkgatlhegelang\"", + "\"Last week I did have a great time with...\"": "\"Beke e e fitileng ke nnile le nako e e monate le...\"", + "\"Bad things always happen to me\"": "\"Dilo tse di sa siamang di phela di ntiragalela\"", + "\"This good thing happened the other day...\"": "\"Sengwe se sentle se ntiragaletse tsatsi le le fitileng...\"", + "Change": "Phetogo", + "You’ve completed this week’s workshop.": "O feditse workshop ya beke eno.", + "Read along": "Buisa mmogo", + "See you soon.": "Re tla go bona mo bogautshwaneng.", + "You can always find these tools in the @global.parent_centre": "Ka metlha o ka bona didiriswa tseno mo go @global.parent_centre", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Beke e e tlang, o tla bolelela setlhopha sa gago gore ikatiso ya ko gae e tsamaile jang. Gape lo ka tshegetsana le go gopotsana mo gare ga beke.", "Home Practice": "Katiso ya Legae", "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Ditiro tse dinnye, dipholo tse di kgolo! Batsadi bao ba dirisang botswerere jwa bone jwa di workshop ko gae ba nna le dipholo tse di botoka.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Beke e e tlang, o tla bolelela setlhopha sa gago gore ikatiso ya ko gae e tsamaile jang. Gape lo ka tshegetsana le go gopotsana mo gare ga beke.", - "How did it go?": "Go tsamaile jang?", + "Hear a teen's testimonial": "Utlwa bosupi ba mosha", + "Read a teen's testimonial": "Buisa bosupi ba mosha", "talk to their teens about how they feel": "bua le basha ba bone ka gore ba ikutlwa jang", "talk to your teen about how you feel": "bua le mosha wa gago ka gore o ikutlwa jang", "Did you experience any challenges when trying to @local.hp_description_second_singular?": "A o kile wa kopana le dikgwetlho fa o leka go @local.hp_description_second_singular?", @@ -13,987 +121,119 @@ "Sorry to hear the tips did not help you.": "Re maswabi go utlwa gore dikakantsho ga di a go thusa.", "Do you want to share with us what you think would help you?": "A o batla go re bolelela gore o nagana ke eng se se tla go thusang?", "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Ke lebogela go bo o mpoleletse! O motsadi yo o molemo go bo o batla go ipha nako le mosha wa gago. Go dira pharologano thata. Tswelela pele o dira tiro e molemo, mme gopola, ke fano ka metlha go go tshegetsa!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Fano ke botswerere jwa beke eno jo o ka bo itseelang! \n\nBo dirise kwa gae mme o bo iponele nako nngwe le nngwe go @global.parent_centre ya gago.", - "Relax Together": "Iketleng Mmogo", - "Relax": "Iketle", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "A re dire tiro ya go iketla mmogo e e khutshwane – e tla tsaya kafa tlase ga motsotso o le 1 mme o tla ikutlwa o iketlile le go feta.", - "Add this activity to @global.my_relaxes": "Tsenya tiro eno go @global.my_relaxes", - "Listen and relax": "Reetsa mme o iketle", - "Read and relax": "Buisa mme o iketle", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "O naledi!\n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela ko teng gore o iketle.", - "Welcome @fields.user_name": "O amogetswe @fields.user_name", - "It's great to see you again!": "Go gontle go go bona gape!", - "Let's see how this week has been.": "A re bone gore beke eno e tsamaile jang.", - "This week you have done...": "Beke eno o dirile...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "O bontsha o ikemiseditse go nna motsadi le go itlhokomela. \n\nO setswerere.", - "Watch Together": "Lebelelang Mmogo", - "Let's watch a video together!": "A re lebe bidio mmogo!", - "Watch": "Leba", - "Let's watch a video!": "A re lebelele bidio!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Go gontle go go bona gape! A re simolole ka pina ya malapa a a gotlhe.", - "Let's Slow Down": "A re Fokotse Lobelo", - "You’ve completed this week’s workshop.": "O feditse workshop ya beke eno.", - "See you soon.": "Re tla go bona mo bogautshwaneng.", - "Talk Together": "Buang Mmogo", - "Share ideas, support each other!": "Bolelanang dikakantsho, lo tshegetsane!", - "Try it Together": "E Lekeng Mmogo", - "Let's practice together.": "A re ikatiseng mmogo.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ikatiso ya mo gae ke yone e dirang botshelo jwa lelapa la rona bo nne botoka. Mme gantsi e tlisa dikgwetlho. \n\nA re bolelaneng dikatlego le mathata a rona, mme re thusane go bona dikakanyo tse re ka di lekang tse disha!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Akanya ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka: \n* Ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata? \n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo? \n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(E bile gongwe lo ka ikatisa gone jaanong gore e nne motlhofo moragonyana!)", - "Discussion example from @data.workshop.w_1on1.title": "Sekai sa puisano go tswa go @data.workshop.w_1on1.title", - "Start Positively Together": "Simololang Sentle Mmogo", - "Welcome @fields.group_name": "O amogetswe @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Go gontle go go bona gape! \n\nA re simolole ka go go kgathalela.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Refosanang:\n* Arolelanang: O ikutlwa jang gompieno?\n* Akgola mongwe mo setlhopheng sa lona go bo a dirile sentle beke eno!\n\nGopola gore go sa kgathalesege gore o ikutlwa jang, go gontle o bo o le fano. Lotlhe lo tshwanelwa ke go akgolwa.", - "Ideas from other families:": "Dikakantsho go tswa ko malapeng a mangwe:", - "Question Time": "Nako ya Dipotso", - "It's time for some questions!": "Ke nako ya go botsa dipotso!", - "Listen Together": "Reetsa Mmogo", - "Let's listen to an audio together!": "Tla re reetse kgatiso e e rekotilweng mmogo!", - "Listen": "Reetsa", - "Let's listen to an audio!": "Tla re reetse kgatiso e e rekotilweng!", - "Why @local.workshop_data.title?": "Goreng @local.workshop_data.title?", - "Hear Sbo's message": "Utlwa molaetsa wa ga Sbo", - "Read Sbo's message": "Buisa molaetsa wa ga Sbo", - "Today's steps": "Dikgato tsa gompieno", - "Read Together": "Buisang Mmogo", - "Let's read a story together!": "Tla re buise kgang mmogo!", - "Let's read a story!": "Tla re buise kgang!", - "Think Together": "Akanyang Mmogo", - "It's time to think together!": "Ke nako ya go akanya mmogo!", - "Think": "Akanya", - "It's time to think!": "Ke nako ya go akanya!", + "Language": "Loleme", "Learn Together": "Ithuteng Mmogo", "It's time to learn and practice together!": "Ke nako ya go ithuta le go ikatisa mmogo!", "Learn": "Ithute", "It's time to learn and practice!": "Ke nako ya go ithuta le go ikatisa!", - "Customise @global.parent_app": "Itsenyetse @global.parent_app", - "Give me quick parenting tips": "Mphe dikakantsho tsa ka bonako tsa botsadi", - "Something really bad happened": "Sengwe se se maswe tota se diragetse", - "I have technical problems with the app": "Ke na le bothata jwa setegeniki ka app", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "O tla bona dintlha tse di thusang tse re akanyang gore o ka bona di thusa fano, go ikaegile ka dikarabo tsa gago tsa go rulaganya sediriso.", + "Listen Together": "Reetsa Mmogo", + "Let's listen to an audio together!": "Tla re reetse kgatiso e e rekotilweng mmogo!", + "Listen": "Reetsa", + "Let's listen to an audio!": "Tla re reetse kgatiso e e rekotilweng!", + "Hi @fields.user_name! This week you did:": "Dumela @fields.user_name! Beke eno o dirile:", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", + "That’s wonderful!": "Lo dirile bontle tota!", + "Nice work!": "Tiro e ntle!", + "Your commitment is not taken for granted.": "Boikemisetso jwa gago ga bo tseelwe kwa tlase.", + "Keep up the good work!": "Tswelelang go dira tiro eno e e molemo!", + "This is lovely!": "O dirile sentle tota fano!", + "Tap yourself on the shoulder. You deserve this.": "Iphaphathe legetla. O tshwanelwa ke seno.", + "Every @global.parent_point counts!": "@global.parent_point nngwe le nngwe e botlhokwa!", + "Relax now": "Iketle jaanong", + "Did you relax already? Tap it!": "A o setse o iketlile? E tobetse!", + "Here is a fun activity to do with your teen!": "Fano ke tiro ya go ijesa monate e o ka e dirang le mosha wa gago!", + "Continue @local.workshop_data.in_text_title": "Tswelela @local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Simolola @local.workshop_data.in_text_title", + "Finish current workshop": "Fetsa workshop e o e dirang mo nakong eno", + "How did you hear about @global.parent_app?": "O utlwile jang ka @global.parent_app?", + "Other": "E ngwe", + "I found it myself": "Ke e bone ka bonna", + "A friend or family": "Tsala kgotsa wa lelapa", + "Quick Parenting Tips": "Ditlhababotlhale tsa go Godisa Bana tsa ka Bonako", + "Raising teens can be hard, and we all struggle sometimes.": "Go godisa basha e ka nna tiro e e bokete, mme e a re retelela rotlhe fa gongwe.", + "What is the main challenge you are experiencing right now?": "Kgwetlho e kgolo e o nang le yone mo nakong eno ke efe?", + "My relationship with my teen is not good": "Kamano ya me le mosha wa me ga se e e siameng", + "My teen’s behaviour is difficult": "Ke bona go le thata go dirisana le boitshwaro jwa mosha wa me", + "I feel stressed, lonely, angry": "Ke ikutlwa ke gateletswe mo maikutlong, ke jewa ke bodutu, ke tenegile", + "I have money worries": "Ke tshwenyegile ka madi", + "I worry about my teen’s safety": "Ke tshwenyegile ka tshireletsego ya mosha wa me", + "We often fight in our family": "Re aga re lole mo lelapeng la rona", + "I have a different problem…": "Ke na le bothata bo sele…", + "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Go dira botsala jo bosha go simolola ka go dira nako le le mmogo - le ele metsotso e le 5 fela go dira pharologanyo! Kwa tshimologong, go ka nna ga nna bokete go ipha nako le le mmogo, ka gonne rotlhe re nna re tshwaregile le gore basha ba rona fa gongwe ba mo maikutlong a a seng monate. Mme go dirisa le fa e le metsotso e le 5 mo letsatsing le tlhomile mogopolo le mosha wa gago go thusa gore le tshepane. Leka go botsa mosha wa gago gore a ka rata lo dira eng mmogo. Go ka le itumedisa le go le repisa!", + "You can get more support on how to spend one-on-one time with your teen here:": "O ka bona thuso e nngwe mabapi le gore o ka dira nako le ngwana wa gago wa mosha jang le le babedi fela fa:", + "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Basha botlhe fa gongwe ba itshwara ka go tlhoka maitseo! Selo se le sengwe se se ka thusang ka maitseo a mosha ke go mo akgola nako nngwe le nngwe fa a dira sengwe se se siameng - le fa se ka nna se se nnye jang. Basha ba ka lebega o kare ga ba batle kgotsa ga ba lebelela gore o ba akgole mme batla jalo tota.", + "You can get more support here on how to encourage good behaviour through praising:": "O ka kgona go bona thuso e nngwe fano mabapi le tsela ya go kgothaletsa boitshwaro jo bo siameng ka go akgola:", + "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Go tshwenyega mo maikutlong mo go amanang le go godisa bana go kwa godimo fela thata mo nakong eno. Re itse sentle ka fa botshelo bo ka imelang ka teng. O ka fokotsa go tshwenyega mo maikutlong ka go dira sengwe. O tshwanelwa ke seno! Mme fa o ikutlwa o imelwa, laola mmele wa gago ka go hemela kwa teng ga tlhano, ka bonya pele ga o fetola. Batsadi ba le bantsi ba bone seno se thusa.", + "You can get more support on how to take care of yourself here:": "O ka bona thuso e nngwe mabapi le gore o ka itlhokomela jang fa:", + "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Ga o nosi. Batsadi ba na le go imelwa ke kgatelelo ya maikutlo ka ga madi. Leka go bolelela mosha wa gago gore go tsena madi a a kae le gore o tshwanelwa ke go dirisa bokae mo lelapeng kgwedi le kgwedi. Seno se ka nna sa mo thusa go tlhaloganya gore gore o ka seke wa kgona go duelela sengwe se a se tlhokang. Mme fa mongwe le mongwe a tlhaloganya gore madi a dira jang, go nna bonolo gore le dumalane gore le ka boloka madi mmogo mo go eng!", + "You can get more support on how to budget and save here:": "O ka bona thuso e nngwe mabapi le tsela ya go dira tekanyetsokabo le go boloka madi fa:", + "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Basha ba ka fetsa nako e ntsi ba le kwa ntle kgotsa ba le mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa - batsadi ba le bantsi ba tshwenyega ka seno. Leka go simolola motlotlo le mosha wa gago ka ga mafelo a a bolokegileng le a a sa bolokegang mo tikologong ya lona le mo inthaneteng (o ka ka nna wa tshwanelwa ke go leka makgetlo a le mmalwa). E bile ba ka nna ba itse dingwe tse wena o sa di itseng. Seno se ka nna sa simolola go le thusa go dira thulaganyo mmogo ya gore le ka nna le sireletsegile jang.", + "You can get more support on how to keep your teen safe here:": "O ka bona thuso e nngwe mabapi le dira gore mosha wa gago a nne a sireletsegile fa:", + "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Fa bothata bo tlhaga, buisanang mmogo ka jone. Bothata ke eng sentlentle? Go na le ditharabololo di fe tse di farologaneng mme ditlamorago tsa tsona ke dife? Ka tsela e, le ka bona tharabololo e e ka nnang e e SIAMENG go botlhe.", + "You can get more support on how to solve problems together here:": "O ka bona thuso ya tsela ya go rarabolola mathata mmogo fa:", + "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Ga go bonolo go tlhokomela ba malapa a rona. Rotlhe re na le dikgwetlho fa gongwe, mme re solofela gore app eno e tla go thusa gore o dirisane le tsone sentle jang. @global.parent_app e thailwe mo boitemogelong jwa dingwaga tse di lesome tsa go tsamaisa dithulaganyo tsa go godisa bana mo Aforika Borwa, mme diketekete tsa batsadi ba bone ditlhabobotlhale tse ba di newang di thusa ka dikgwetlho tse dintsi tsa go godisa bana. Re solofela gore app eno e tlile go thusa le wena le ba lelapa la gago.\n\nDitlhabotlhale dingwe tsa botlhokwa tse di tlhomamisitsweng ke tseno tse o ka di dirisang:", + "Start your first parenting workshop": "Simolola workshop ya gago ya ntlha ya go godisa bana", + "You will get more support in the @local.workshop_data.in_text_title.": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", + "You can get more support in the @local.workshop_data.in_text_title.": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", + "Start the @local.workshop_data.in_text_title": "Simolola @local.workshop_data.in_text_title", + "Finish the @local.workshop_data.in_text_title to get more support.": "Fetsa @local.workshop_data.in_text_title gore o kgone bona thuso e nngwe.", + "Continue the @local.workshop_data.in_text_title": "Tswelela ka @local.workshop_data.in_text_title", + "Re-access the @local.workshop_data.in_text_title": "Tsena gape mo go @local.workshop_data.in_text_title", + "CHAT": "Tlotla", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Neelana ka maikutlo a gago, mme o rotloetsa mosha wa gago go bua ka matshwenyego a gagwe. Le tla tlhaloganyana botoka mme le ka dira leano mmogo la go nna le itekanetse le itumetse!", + "CAUTION": "Ela tlhoko", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Amogela kitsiso ya gago go tswa mo metsweding e tshepagalang ya kitso gore o kgone go nna le boitshepi mo nakong tse di sa tshepagaleng tse. Re utlwa ebile re bona dikgang tse dintsi ka batho, megala ya letheka, TV le inthanete. Aa se se dira o ikutlwe o belaela, tshwenyega, tshoga, galefa kgotsa go tlhakatlhakana? Tlhola pele o phatlhalatsa kgotsa o dira sengwe!", + "CHOOSE": "TLHOPHA", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Go dira ditshweetso tse di nepagetseng go boloka botlhe ba sireletsegile ebile ba phetse sentle go thata. Segolo mo dinakong tsa jaanong! O ka thusa mosha wa gago go dira ditshweetso tse di siameng.", + "CHILL": "IKETLE", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Rotlhe re ikutlwa re tshwenyegile ka nako dingwe. Hemela kwa teng kgotsa o dire sengwe se se monate. E ka dira pharologanyo e kgolo mo go direng lelapa la gago la boitumelo le kagiso! Fano ke dikakanyo tse o ka di lekang:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Menagano e e sa siamang e dira gore re bue ebile re dire dilo tse di sa siamang. Leka go fetola dilo tse o di buang le tse o di naganang tse di sa siamang gore e nne tse di siameng!", "WHO Website": "Webosaete ya WHO", "UNICEF Website": "Webosaete ya UNICEF", "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Go nna motsadi go thata ka nako ya COVID. Nna motlotlo gore o fitlhile fano.\n\nRe semeletse ka tshedimosetso e ntšhwa fano ya go go thusa gore o bue le basha le bana ba gago kaga COVID.\n\nTshedimosetso e e mo nakong thata ka COVID-19 e ka fitlhelwa mo diwebosaeteng tsa WHO le UNICEF:", - "This button will take you to the Coronavirus section of the official WHO website.": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya WHO ya Coronavirus.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "This button will take you to the Coronavirus section of the official UNICEF website.": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya UNICEF ya Coronavirus.", "The URL is https://www.unicef.org/coronavirus/covid-19": "URL ke https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya WHO ya Coronavirus.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "Update my parenting experiences": "Ntšhwafatsa maitemogelo a me a botsadi", "Update my personal details": "Ntšhwafatsa dintlha tsa me tsa botho", "Update my workshop options": "Ntšhwafatsa ditlhopho tsa me tsa workshop", + "Give me quick parenting tips": "Mphe dikakantsho tsa ka bonako tsa botsadi", + "Something really bad happened": "Sengwe se se maswe tota se diragetse", + "I have technical problems with the app": "Ke na le bothata jwa setegeniki ka app", + "You will find the in-week messages from the previous workshops here.": "O tla bona melaetsa ya beke ya di-workshop tse di fetileng fano.", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Ga o ise o tsenye ditiro dipe go @global.my_activities ga jaana. Goreng o sa tlhophe dingwe?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Ga o ise o tsenye ditiro dipe tsa boiketlo go @global.my_relaxes ga jaana. Goreng o sa tlhophe dingwe?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "O tla bona dintlha tse di thusang tse re akanyang gore o ka bona di thusa fano, go ikaegile ka dikarabo tsa gago tsa go rulaganya sediriso.", + "Relaxation activities": "Ditiro tsa boiketlo", + "Something fun to do with your teen": "Sengwe sa go ijesa monate go se dira le mosha wa gago", "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "A o nna le mathata mangwe a setegeniki? Re itsise mme re thuse go tokafatsa @global.parent_app!", "Type your name (optional)": "Kwala leina la gago (itlhophelo)", + "Contact me on @global.whatsapp": "Golagana le nna mo go @global.whatsapp", "Type your phone number": "Kwala nomoro ya gago ya mogala", "Contact me via email": "Ikgolaganye le nna ka imeile", "Type your email address": "Kwala aterese ya gago ya imeile", "Tell us about your issue": "Re bolelele bothata jwa gago", "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Lekgetlho la ntlha fa mme a mpotsa gore a ke batla go fetsa nako le ene, ke ile ka mo raya ka re a ntlogele ka gonne ke ne ke santse ke tshwaragane le motshameko. Mme o ne a mpateletsa jaaka a tlwaetse go dira. Ke ile ka re a ka ntebelela ke tshameka fa e le gore ke se a se batlang. Morago ga metsotso e le mmalwa o ile a simolola go mpotsa dipotso ka motshameko wa me. Go ne go tena kwa tshimologong, mme morago ga nakwana ke ne ke itumetse gore kwa bofelelong o kgatlhegela se ke se dirang. O ile a ba a leka go e tshameka!", "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Rre o rile ke tshameka basketball thata morago ga sekolo, ka jalo re tshwanetse go tlhoma molao wa lelapa. O ne a tshepisa gore re tla akanya ka tharabololo mmogo, ka jalo bobedi jwa rona re ile ra go itumelela. Ke ne ke sa dumele gore go a kgonega mme ka re, “GO SIAME, mma re leke.” Re ne ra buisana mme ra dumalana gore molao e tla nna gore go tshameka basketball go letleletswe fa go dira tirogae ya sekolo e dirilwe le morago ga dijo tsa maitseboa tsa lelapa. Go thata go bona ditsala tsa me di tshameka morago ga sekolo, ka jalo ke dira ka natla go fetsa tirogae ya sekolo pele mme ke bo ke tshameka le bone. Gape jaanong ke na le maitseboa otlhe go dira dilo tse dingwe tse ke di batlang morago ga dijo tsa maitseboa tsa lelapa jaaka go lebelela basketball mo NBA.", - "You will find the in-week messages from the previous workshops here.": "O tla bona melaetsa ya beke ya di-workshop tse di fetileng fano.", - "Start": "Simolola", - "How would you like to do this workshop?": "O ka rata go dira workshop eno jang?", - "Coming soon": "E etla gautshwane", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Re tla tlhoka go bua ka mathata a mangwe a go nna motsadi pele re ka simolola go dira go @local.workshop_data.title.\n\nO ka bona didiriswa tsa botlhokwa mo @local.workshop_data.title o dirisa @global.parent_centre.", - "My name": "Leina la me", - "@global.weekly_workshop day": "letsatsi la @global.weekly_workshop", - "I do the workshops...": "Ke dira di-workshop...", - "My group's name": "Leina la setlhopha sa me", - "My group is now doing the workshop...": "Setlhopha sa me se dira workshop jaanong...", - "I am now doing the workshop...": "Ke dira workshop jaanong...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "A o tlhomamisegile gore o batla go bula di-workshop tsotlhe? Fa o setse o dirile seno o ka se kgone go di tswala gape", - "You can always find these tools in the @global.parent_centre": "Ka metlha o ka bona didiriswa tseno mo go @global.parent_centre", - "Add this activity to @global.my_activities": "Tsenya tiro eno go @global.my_activities", - "Relaxation activities": "Ditiro tsa boiketlo", - "Something fun to do with your teen": "Sengwe sa go ijesa monate go se dira le mosha wa gago", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Ga o ise o tsenye ditiro dipe tsa boiketlo go @global.my_relaxes ga jaana. Goreng o sa tlhophe dingwe?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Ga o ise o tsenye ditiro dipe go @global.my_activities ga jaana. Goreng o sa tlhophe dingwe?", - "Open Survey": "Potsolotso e e Bulegileng", - "Select Language": "Tlhapha loleme", - "Workshop Options": "Dikakantsho tsa di-Workshop", - "Unlock Workshops": "Bula di-Workshop", - "Demo Presentation": "Pontsho ya Tshupetso", - "Organisation Registration": "Kwadiso ya Setheo", - "Developer Mode": "Mokgwa wa Motlhami", - "Unlock all workshops": "Lotlolola di-workshop tsotlhe", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ka go tobetsa mo konopong e e fa tlase o tla bo o lotlolola di-workshop tsotlhe.\n\nTSHWAYANTLHA: Badirisi ba seka ba dirisa mokgwa ono go lotlolola di-workshop, seno ga se atlanegisiwe ntle le fa go tlhokega.", - "Unlock workshops": "Bula di-workshop", - "All workshops are now unlocked.": "Di-workshop tsotlhe jaanong di lotlolotswe.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ka go tobetsa konopo e e fa tlase o tla seta sesha app ka go e busetsa kwa diseting tsa yone tsa kwa tshimologong. \n\nSeno se raya gore kgatelopele ya gago yotlhe le tiriso ya data di tlile go phimolwa mme app ya gago e tla dira jaaka e ne e dira kgetlho la ntlha.\n\nTSHWAYANTLHA: Go seta app sesha go ka se dirololwe mme ga o kitla o kgona go boa o bona gape tshedimosetso epe.", - "Reset App": "Seta App sesha", - "You have successfully entered developer mode.": "O tsentse mokgwa wa motlhami ka katlego.", - "You have entered an incorrect code.": "O tsentse khoutu e e seng yone.", - "Language": "Loleme", - "How did you hear about @global.parent_app?": "O utlwile jang ka @global.parent_app?", - "I found it myself": "Ke e bone ka bonna", - "A friend or family": "Tsala kgotsa wa lelapa", - "Other": "E ngwe", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "O ka nna wa kopiwa gore o bontshe batho ba bangwe khoutu eno ba ba tla go tshegetsang mo leetong la gago la @global.parent_app.", - "Last sync at: @local.sync_latest": "sync ya bofelo ka: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Sediriswa ga ise se sinkiwe. Sync e tla tlhagisa khoutu.", - "Sync now": "Sync gone jaanong", - "Syncing...": "Syncing...", - "You selected @local.threshold or less": "O tlhophile @local.threshold kgotsa kwa tlase", - "You selected more than @local.threshold": "O tlhophile kwa godimo ga @local.threshold", - "Reply": "Araba", - "Days in the past month": "Malatsi mo kgweding e e fetileng", - "Days in the past week": "Malatsi mo bekeng e e fetileng", - "You selected less than @local.threshold": "O tlhophile kwa tlase ga @local.threshold", - "Unlock for less than @local.threshold": "Bula kwa tlase ga @local.threshold", - "You selected @local.threshold or more": "O tlhophile @local.threshold kgotsa go feta", - "Video": "Bidio", - "Timer": "Sebalanako", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Tobetsa khutlotharo go go thusa go nna o tshwere motlotlo ono @local.timer_duration.", - "Options": "Tlhopho", - "Home": "Gae", - "Settings": "Diseting", - "Template": "Thempoleiti", - "Tour": "Loeto", - "In-Week Messages": "Melaetsa ya Beke", - "Campaigns": "Matsholo", - "Notifications": "Dikitsiso", - "About @global.parent_app": "Ka ga @global.parent_app", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app e tlhamilwe ke Parenting for Lifelong health (PLH) - kopantsho ya lefatshe ka bophara magareng ga baitsi ka botsadi go tswa go UNICEF, ba ga WHO le diunibesithi mo Aforika Borwa le UK, mmogo le di NGO tsa Aforika le malapa le basha botlhe ba Aforika ka bophara. Batsadi le basha ba dirile mmogo le rona mo go app le go thusa go netefatsa gore e bonolo go dirisa, ya itumedisa le go buisana.Diteng tse dingwe mo go app eno, jaaka go akanyetsa ditirwana le dikgang tsa tlhagiso, di dirilwe le batsadi le basha go netefatsa gore di maleba go ditlhokego tsa malapa. \n\nParenting for Lifelong Health (PLH) e ikemiseditse go neelana ka tshegetso ya mahala, didiriswa le mananeo go tshegetsa batsadi lefatshe ka bophara go rotloetsa pholo ya bana ba bona.", - "Finish current workshop": "Fetsa workshop e o e dirang mo nakong eno", - "Here is a fun activity to do with your teen!": "Tiro ya go ijesa monate e o ka e dirang le mosha wa gago ke eno!", - "Start @local.workshop_data.in_text_title": "Simolola @local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Tswelela @local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Dumela @fields.user_name! Beke eno o dirile:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", - "That’s wonderful!": "Lo dirile bontle tota!", - "Nice work!": "Tiro e ntle!", - "Your commitment is not taken for granted.": "Boikemisetso jwa gago ga bo tseelwe kwa tlase.", - "Keep up the good work!": "Tswelelang go dira tiro eno e e molemo!", - "This is lovely!": "O dirile sentle tota fano!", - "Tap yourself on the shoulder. You deserve this.": "Iphaphathe legetla. O tshwanelwa ke seno.", - "Every @global.parent_point counts!": "@global.parent_point nngwe le nngwe e botlhokwa!", - "Relax now": "Iketle jaanong", - "Did you relax already? Tap it!": "A o setse o iketlile? E tobetse!", - "Looking after yourself matters.": "Go itlhokomela go botlhokwa.", - "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Go gontle! Go a itumedisa go utlwa gore o ikutlwa sentle gompieno. Ruri ke maikutlo ao a itumedisang!", - "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ka dinako tse dingwe dilo di tsamaya sentle. Ka dinako tse dingwe ga di tsamae sentle. E bile ka dinako tse dingwe ga re itse sentle gore re dire eng... mme seo se siame fela! Gopola gore ga o nosi.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Go gontle, segolobogolo ka dinako tse di thata jaaka tseno. O naledi.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Re a itse gore go bokete jang go godisa mosha mo dinakong tseno. Go ithuta go laola go tshwenyega mo maikutlong ga gago go thusa wena - le lelapa la gago.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Dumelang lotlhe. \n\nSetlhogo sa gompieno se ka ga go laola go tshwenyega mo maikutlong. \n\nGo botlhokwa go itse ka fa re ka laolang go tshwenyega mo maikutlong a rona ka gone. Ka dinako tse dingwe bana ba rona ba ka itshwara ka tsela e e re opisang tlhogo le rona jaaka batsadi re ka dira gore bana ba rona ba opiwe ke tlhogo le bone. \n\nKa jalo, go botlhokwa go ela tlhoko fa re na le kgatelelo ya maikutlo re bo re ema go se kae re hema. Seo se tla go thusa gore o laole go tshwenyega mo maikutlong.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le motlotlo - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le go leba kwa morago - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "A re bone sekai sa ka fa go tshwenyega mo maikutlong e ka fetelelang ka teng ka dinako dingwe, mo go rona rotlhe:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver: “Ntlogele mme o lebe dikgang tsa gago!”", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ke dirile eng? Ga o nke o reetsa!” \n\n@global.w_stress_male_caregiver: “Ke rile o ntlogele kgotsa ke tloga ke go itaya!”", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bona! Ke dirile ntlo!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ke mang a kgathalang ka ntlo ya gago e e senang mosola!”", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang? Le @global.w_stress_male_caregiver wa gagwe? Le @global.w_stress_girl?\n\n@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", - "How do you think @global.w_stress_teen_boy_1 felt?": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang?", - "And @global.w_stress_male_caregiver?": "Le @global.w_stress_male_caregiver?", - "And @global.w_stress_girl?": "Le @global.w_stress_girl?", - "Scared": "O tshogile", - "Each of them was feeling upset for their own reason!": "Mongwe le mongwe wa bone o ne a kgopisegile go ya ka lebaka la gagwe!", - "What could @global.w_stress_male_caregiver have done differently?": "@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", - "Recognise why he feels stressed": "Lemoga lebaka la go bo a tshwenyegile mo maikutlong", - "Take a deep breath and speak calmly": "Kgwa mowa o bo o bua o ritibetse", - "Show he understands his teen’s feelings": "O bontshe gore o tlhaloganya maikutlo a mosha wa gago", - "Think about solutions together with @global.w_stress_teen_boy_1": "Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1", - "Do something positive together with @global.w_stress_teen_boy_1": "Dira sengwe se se kgothatsang mmogo le @global.w_stress_teen_boy_1", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver a ka...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Lemoga lebaka la go bo a tshwenyegile mo maikutlong \n* Kgwa mowa o bo o bua o ritibetse \n* O bontshe gore o tlhaloganya maikutlo a mosha wa gago \n* Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1\n* Dira sengwe se se molemo/rotloetsang mmogo le @global.w_stress_teen_boy_1", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Ke a leboga gore re dirile ikatiso eno mmogo! A re akanyeng ka se se diragetseng pelenyana mme re bone gore @global.w_stress_male_caregiver mo lekgetlong leno:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver o latlhegetswe ke tiro. Fa @global.w_stress_teen_boy_1 a tsena mo ntlong, o mo fitlhela a tlhakatlhakane maikutlo e bile a tshwenyegile.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver (go kgwa mowa): “Ke maswabi morwaaka. Go ne go le thata tota gompieno. Mookamedi wa me o nkobile kwa tirong.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Hee se rialo! Ke tlhoka diaparo tse di ntšha tsa sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka morwaaka mme tiro ya ga @global.w_stress_female_caregiver e tla nna e re thusa fa ke ntse ke batla tiro e nngwe.”", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Le nna nka go thusa go batla tiro, ne @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nnyaa, o seka tshwenyega, @global.w_stress_teen_boy_1. Ke a leboga go bo o batla go nthusa. Selo se se botlhokwa thata ke gore o dire ka natla ko sekolong. Ke a leboga go bo o ile wa ntheetsa.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “A re ye go tshameka kgwele ya dinao mmogo. E tla nthusa gore ke fokotse go tshwenyega thata mo maikutlong.” \n\n@global.w_stress_teen_boy_1: \"Go siame, @global.w_stress_male_caregiver!”", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Ke ikutlwa botoka tota jaanong! \n\nGo ikhutsa go se kae go thusa gore o kgone go ritibala maikutlo fa o galefile kgotsa o tshwenyegile mo maikutlong. Lekeletsa go dira jalo, o tla lemoga seno!", - "Safety Amnesty": "Kgololesego ya Pabalesego", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Akanya ka nako ya fa o ne o sa ntse o le mosha. \n\nA go na le nako nngwe e o kileng wa iphitlhela o le mo kotsing mme o bo o tshaba go bolelela ba lelapa la gago ka gonne o tshaba gore ba tla galefa?\n\nKe sone se se batlileng se diragalela @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re bone:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Ke ya kwa bareng le ditsala tsa me gompieno, ke kopa o seka bolella bagolo\" \n\n@global.w_stress_teen_girl: “Itumele! Ke ba reile ka re ke ya kwa tsaleng ya me, mme tota ke ya phathing”", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ke akanya gore ba rekisa diokobatsi. Re ka nna ra tshwarwa rothe. Mme gone nka se bolelele batsadi ba me– ba tlile go galefa tota\"", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ke tshogile. Ga go ope yo o ka kgonang go nkisa gae, mongwe le mongwe o tagilwe tota. Mosimane yono a re o tla nkisa mme gone, o batla re ye kwa a nnang teng pele. Nka se bolelele batsadi ba me – Ke ba akeditse, ga ke a ba bolelela gore ke tla phathing.\"", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Maemo ano a kotsi! Ka lesego, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba gakologelwa gore @global.w_stress_parent o ba boleletse eng: \n\n“Sa botlhokwa le go feta, ke tshwenyegile ka pabalesego ya gago. Nako nngwe le nngwe fa o tenegile, kgotsa o boifa, o ka nteletsa gore ke go thuse, kgotsa o mpolelele ka gone. \n\nBua fela o re ‘KGOLOLESEGO YA PABALESEGO’. Ke a go solofetsa, ke tla leka ka tsotlhe tse nka di kgonang go go thusa e bile nka se galefe – le fa gone o ka tswa o dira sengwe se o sa tshwanelang go se dira.”", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke kgololesego ya pabalesego. A o ka kgona go tla go ntsaya? Tota ke tlhoka mongwe yo o ka nkisang gae.”", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, kgololesego ya pabalesego. Ke akanya gore ditsala tsa me di mo kotsing. Ga ke batle go kgaotsa botsala jwa me le bone mme gone, ke tshwenyegile. A re ka bua?\"", - "BREATHE. Slowly. Pause.": "KGWA MOWA. Ka iketlo. Ema go se kae.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Pele ga o bua sengwe, kgwa mowa ka iketlo makgetlo a le tlhano. Seno se tla go thusa go ritibala maikutlo e bile o tla kgona go akanya sentle.", - "SHARE how you feel": "BUA gore o ikutlwa jang", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Ga go motlhofo. Bontsi jwa rona re ile ra bolelelwa gore ga re a tshwanela go lela kgotsa go bontsha bana gore re ikutlwa jang. Kgwa mowa mme o ba bolelele gore o ikutlwa jang, o ritibetse maikutlo. Ba tla kgona go tlhaloganya botoka e bile ba tla ithuta mo go wena gore ba ka dira eng fa ba tshwenyegile mo maikutlong.", - "SHOW them you care": "Ba BONTSHE gore o a ba kgathalela", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Ga go motlhofo! Go tshwenyega mo maikutlong go dira gore re akanye ka rona fela. Mme gone, basha ba rona ba a re tlhoka. Ba botse gore ba ikutlwa jang. Ba reetse mme o ba gomotse. Gongwe o ka ba atla kgotsa wa ba bolelela gore ‘ke a tlhaloganya’. Go dira jalo go ka fetola dilo.", - "SEEK the positive": "BATLANG dilo tse dintle tse lo ka kgonang go di dira", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "A gongwe wena le mosha wa gago lo ka akanya ka dikakantsho dingwe tse di ka thusang? A lo ka dira sengwe se se itumedisang seo se ka dirang gore maikutlo a lona a seka a tswelela a tshwenyegile?", - "If all else fails, breathe. You can do this.": "Fa dilo tseno tsotlhe di sa thuse, kgwa mowa. O ka dira seno.", - "There are two home practices for this week.": "Go na le ikatiso tse pedi tsa kwa gae beke eno.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o hutsafetse, kgwa mowa ga tlhano pele ga o ka tsaya kgato. \n\nMme fa lotlhe lo ritibetse maikutlo, bolelela mosha wa gago gore o ikutlwa jang.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Tlotlang ka “pabalesego” le mosha wa gago mme lo buisane mmogo gore lo ka dirisa ntlha eno mo maemong afe.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Nako le nako fa o ema go se kae pele ga o araba, kgotsa fa o dira sengwe go sireletsa mosha wa gago, tobetsa @global.parent_points mme o nne motlotlo gore o kgonne go dira jalo!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "O feleleditse workshop ya beke eno.\n\nBeke e e tlang, re tla bua kaga madi - o tla tlhoka:\n* tsebe ya pampiri/khateboto\n* pene\n* maje/dinawa/ditlhaka di le 20\n\nGo a go nna monate!", - "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Letsatsi la gompieno le monate tota! Ke eng se se dirileng gore letsatsi la gompieno le nne monate? Gakologelwa gore ke selo se se siameng go ikakgola fa o dirile sentle.", - "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Ke maswabi go utlwa gore ga o ikutlwe sentle gompieno. Re motlotlo ka wena go bo o lemogile maikutlo ao, e bile o leka go ritibala maikutlo le go ineneketsa. O tlhomela lelapa la gago sekao se se molemo.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Selo sengwe le sengwe se sennye se o se dirang se botlhokwa. Re solofela gore le wena o ikutlwa o le motlotlo.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Malapa otlhe a na le mathata a one. Fa re ipaakanyetsa mmogo e bile re itse gore re ka bona thuso kae PELE ga sengwe se se maswe se diragala, re ka kgona go fenya mathata mangwe le mangwe.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Dumelang, lotlhe.\n\nGompieno re tlile go bua ka go lepalepana le mathata.\n\nMathata a ka diragala gongwe le gongwe. Mathata a ka diragala nako nngwe le nngwe. Ka jalo, go botlhokwa gore jaaka lelapa le nne le ipaakantse go sa le gale fa go ka direga gore mongwe mo lelapeng a welwe ke mathata. \n\nGo botlhokwa gore go nne le dipaakanyetso gore mongwe le mongwe mo lelapeng a ikutlwe a sireletsegile. \n\nFa o le mo mathateng, gopola go ema go se kae, go kgwa mowa le go ipoloka o ritibetse maikutlo. Seno se tla go thusa gore o kgone go lepalepana le mathata botoka.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Polelo le motlotlo\n* Polelo le motlotlo\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Polelo le go boela ko morago\n* Polelo le go boela ko morago\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Mathata a ka wela mongwe le mongwe. \n\nA re baleng ka se se diragetseng ka @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Ao bathong ngwanake, wa itse o lebega o tenegile tota, a o ka mpolelela gore go diragetseng?”", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Ke Malome, o… o… o ne a mphoraphora.” \n\n@global.w_crisis_teen_girl_1 (a akanya): “Leka go wela makgwafo... Ngwanake o tlhoka eng? O tlhoka gore ke ritibale maikutlo mme ke mo reetse” \n\n@global.w_crisis_female_caregiver: “Tla o nne gaufi le nna. Tsaya nako ya gago, ke go reeditse.”", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Ke bua nnete, o... o... mpateleditse gore ke dire jalo! O mpateleditse gore ke robalane le ene! Ke ne ke sa batle, ke lekile go mmolelela gore GA KE BATLE, a ba a re fa ke gana ke tlile go tsena mo mathateng.\"\n\n@global.w_crisis_female_caregiver: “O dirile sentle ka go mpolelela se se diragetseng. O ka se tsene mo mathateng. Ga se phoso ya gago.”", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Maabane fa o ne o ile kwa go @global.w_crisis_adult_friend. O tlile fano mme go diragetse ka yone nako eo.”\n\n@global.w_crisis_female_caregiver: “Go siame, ke dumela se o se buang ngwanaka. Kgang eno e masisi tota mme re tlile go batla thuso e re e tlhokang. Re ka batla thuso kae?”\n\n@global.w_crisis_teen_girl_1: “Kwa sekolong sa me?”", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Ah ke a itse gore kae, a re ye kwa tliliniking. Ba a itse gore ke eng se ba tshwanetseng go se dira go go thusa. A ga o na bothata fa re ya kwa teng?\"\n\n@global.w_crisis_teen_girl_1: “Ee... Go siame...a o tla tsamaya le nna?”", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Ee ke tla dira jalo. Mme @global.w_crisis_teen_girl_1? Gopola gore seno ga se phoso ya gago. Ke a go rata. O motho yo o siameng. Re tla bona thuso.”", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Ruri seemo seno sa ga @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver se ne se le bokete tota! Seemo seno se ka diragalela basimane le basetsana.", - "What skills did @global.w_crisis_female_caregiver use?": "@global.w_crisis_female_caregiver o ne a dirisa bokgoni bofe?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ee, @global.w_crisis_female_caregiver o dirisitse bokgoni jotlhe jo re setseng re bo buile – mme le wena o ka kgona!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Mathata a mangwe a batsadi ba le bantsi ba tshwenyegileng ka one ke thubakanyo le bokebekwa. A re lebeng sekai se se latelang.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, fa e sa le go tloga maabane o lebega o tshwenyegile. Bothata ke eng?”", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Maabane ke tsamaile le tsala go ya go lebelela bolo. basimane bangwe ba ba neng ba tagilwe ba ile ba simolola go lwantsha tsala ya me.”\n\n@global.w_crisis_male_caregiver_1: “Tswelela, ke go reeditse. Ke solofela gore ga wa ka wa ba lwantsha?”", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Tota ke ne ke sa batle go lwa mme gone, ke ne nka se lebelele tsala ya me fela e itewa ka jalo...”\n\n@global.w_crisis_male_caregiver_1: “Ka jalo, o ile wa lwana gore o sireletse tsala ya gago?”", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Rotlhe re ne re lwa. Ke bone mongwe a rapaletse fa fatshe a dutla madi. Ke akanya gore... o ne a sule.”", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ke a leboga gore o mpoleletse ka seno, @global.w_crisis_teen_boy_1. A re nne fa fatshe mmogo jaanong mme re bone gore a ke re itsise mapodisi kgotsa mongwe o sele go thusa.”", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Ke a leboga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: Re tla bona thuso. Gopola, re tla go tshegetsa jaaka lelapa.”", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Ruri seemo seno sa ga @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 se ne se le bokete tota!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "@global.w_crisis_male_caregiver_1 o ne a dirisa bokgoni bofe?", - "All these skills can help in a crisis.": "Bokgoni jono jotlhe bo ka re thusa fa re le mo mathateng.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Mathata a ka dira gore re ikutlwe re tenegile e bile go se na se re ka se dirang. Mme eno ke yone nako e basha ba rona ba tlhokang gore re kgwe mowa, re ba reetse re bo re akanye.", - "BREATHE": "KGWA MOWA", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Ritibala maikutlo. Ipotse gore, ‘ke eng se mosha wa me a se tlhokang gone jaanong’", - "Tell them you are there for them and love them.": "Ba bolelele gore o batla go ba thusa e bile wa ba rata.", - "THINK": "AKANYA", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Bua le mosha wa gago. Ke eng se se ka thusang go rarabolola bothata? O ka nna wa tlhoka dithulaganyo tsa ka bonako ga jaana, mme morago ga moo dithulaganyo tsa lobaka lo loleele moragonyana.", - "You can be proud of yourself for exploring ways to get help!": "O ka ikutlwa o le motlotlo gore o ile wa dira maano gore o bone thuso!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Go a thusa go ikatisetsa go rarabolola mathata pele ga a diragala. \n\nBona gore malapa ano a matlhano a ile a nna le mathata ka dinako dife. A re re o motsadi: O ne o tla dira eng?\n\nGakologelwa: KGWA MOWA - REETSA - AKANYA", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Bothata 1: @global.w_crisis_teen_boy_2 dintwa kwa sekolong", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Ke la ntlha ke nna le bothata jono. Mme jaanong ke tlile go lelekwa”", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Bothata 2: @global.w_crisis_teen_girl_1 ke imile", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke tlhabilwe ke ditlhong tota. Ga ke itse gore ke direng”", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Bothata 3: @global.w_crisis_teen_boy_2 ke imisitse mosetsana", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ga ke batle go nna le ngwana\"", - "How could you respond to @global.w_crisis_teen_boy_2?": "O ka tsibogela jang @global.w_crisis_teen_boy_2?", - "Crisis 4: Someone in the family gets sick": "Bothata 4: Mongwe mo lapeng o simolola go lwala", - "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Diteko tsa re ke na le HIV. Ke tshogile gore ke tlile go swa”", - "How could you respond in this situation?": "O ka tsibogela jang seemo seno?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Bothata 5: mosimane yo o ratanang le @global.w_crisis_teen_girl_1 o mo pateletsa gore ba robalane", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: “Tota ke ne ke sa batle. Jaanong ke tlile go ima kgotsa go tsenwa ke bolwetsi. @global.w_crisis_female_caregiver, ke tshogile tota...\"", - "How could you respond to @global.w_crisis_teen_girl_1?": "O ka tsibogela jang @global.w_crisis_teen_girl_1?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Gakologelwang gore lo thusane lo bo lo kgothatsane. Ga go motlhofo go ritibala maikutlo le go reetsana ka nako ya mathata - re motlotlo ka wena.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "O na le mosha wa gago tlhopha nngwe ya maemo ano (kgotsa o ikakanyetse one ka bowena!). Leba popae, mme lo tlotle gore lo ne lo ka dira eng lo le mmogo fa seno se diragaletse tsala kgotsa mo lelapeng la gago. \n\nMme gakologelwa: KGWA MOWA - REETSA - AKANYA", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, le go go thusa go rulaganyetsa isago. \n\nGongwe lo ka rulaganya dijo tsa moletlonyana mmogo le go rulaganya mmino fa e le gore lo ka rata go bina!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, mme lo ka bua gore ke eng se lo batlang go tswelela lo thusiwa ka sone. \n\nLo ka rulaganya go tla ka sengwe se lo tla se itumelelang go keteka – gongwe dijo kgotsa mmino o lo ka ratang go o reetsa!", - "Self-care is a key parenting tool.": "Go itlhokomela ke sedirisiwa sa botlhokwa sa botsadi.", - "How are you feeling today?": "O ikutlwa jang gompieno?", - "So good to hear you are feeling well today. You are incredible!": "Ke itumelela go utlwa gore o tsogile sentle gompieno. O botlhokwa!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Tshwarelo gore dilo di bokete gone jaanong. Hemela kwa teng mme o itse gore o botlhokwa.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "O ka thusa mosha wa gago go tlhaloganya gore go roba molao wa lelapa go na le ditlamorago. \n\nMme gore o dira seo JANG ke gone go leng botlhokwa. \n\nGo otlhaya ka tsela e e siameng go thusa basha gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno ke ditlamorago tse di ritibetseng.\n\nGo botlhokwa gore fa re itsise basha ba rona ditlamorago re ba akaretse, mme fela gape sa botlhokwa ke gore re nne re kgobile makgwafo fa re ba itsise ditlamorago.\n\nSeo se tla thusa mo go rona gore re dumalane ka go itsise ditlamorago tse di ritibetseng mo basheng ba rona mme basha ba rona ba tla kgona go di gopola motlhofo fa re ba akaretsa mme seo se tla dira gore ba nne le maikarabelo.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le motlotlo - tseo di didirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "A re baleng ka se se diragetseng ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang? O thari!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ga o latele molao wa rona! Ke tlile go go itaya!”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Ga o na tekatekano! Ga o nke o ntheetsa!! Ke go tlhoile!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Tlotlang mmogo: \n* Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", - "Giving a consequence this way did not work well because...": "Go dirisa ditlamorago ka tsela eno ga go a dira sentle ka gonne...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver o ne a galefile", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver ga a ka a letla @global.w_consequence_teen_boy_1 gore a tlhalose", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Ga go a ka ga tlotliwa ka ditlamorago pele le @global.w_consequence_teen_boy_1", - "The consequence was too strong": "Ditlamorago di ile tsa nna bogale thata", - "Why did giving a consequence this way not work well?": "Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "Ee, go tsibogela maemo ka tsela e e ntseng jalo go ile ga dira gore mongwe le mongwe a tenege le go galefa le go feta.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Go le gantsi basha ga ba ikobele melao. Nako ya fa ba gola ke nako e e thata ya fa ba leka go ithuta gore ke bomang. \n\nKa lesego, go na le ditsela tsa go otlhaya ngwana wa gago wa dingwaga tsa bosha o sa tenega kgotsa o sa dirise dikgoka... e bile ditsela tseno di dira sentle!\n\nGo tlhalosa ditlamorago o ritibetse maikutlo go thusa bana ba rona gore ba bone gore ba tla rwala maikarabelo a se ba se dirang – e ka tswa se siame kgotsa se sa siama. \n\nA re boneng dikai di le mmalwa - a re re o motsadi:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ditlamorago tsa fa o ritibetse maikutlo e tshwanetse go nna... \n\nTEKATEKANO: Se nne makgwakgwa e bile tota o ka dira seo \n\nKA BONAKO: Di neele ka bonako jo bo kgonegang \n\nO SA FETOFETOGE: Ditlamorago di le dingwe ka metlha", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 o tlile gae thari.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 o tlile gae thari.\n\nKe ditlamorago dife tse di ka thusang fano?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Tota ditlamorago ga di tshwane kgo le kotlhao: tsone di neela basha ba rona tshono ya go ithuta gore ke bone ba rwalang maikarabelo a se ba se dirang.\n\nO ka kgona go di laola E BILE di mosola go feta go itaya kgotsa go goelela!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.\n\nKe ditlamorago dife tse di ka thusang fano?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Ditlamorago di na le mosola thata fa o di tlotla le basha e bile lo dumalana ka tsone go sa le gale pele o di dirisa.\n\nE bile: ga se gore ka metlha ditlamorago di nna le diphelelo tse di sa siamang... Lo ka nna lwa dumalana ka ditlamorago tse di SIAMENG fa go dirwa dilo tse di SIAMENG e le gore go tle go nne le boitshwaro jo bo siameng le go feta!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.", - "What consequence would help here?": "Ke ditlamorago dife tse di ka thusang fano?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.\n\nKe ditlamorago dife tse di ka thusang fano?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Tsela e o itsiseng ka yone ditlamorago o ritibetse maikutlo e botlhokwa. Gakologelwa gore, fa o akaretsa mosha wa gago, gantsi dilo di nna botoka!", - "EXPLAIN": "TLHALOSA", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Tlhomamisa gore lotlhe lo ritibetse maikutlo. Kgwa mowa makgetlo a le mmalwa. Tlhalosetsa mosha wa gago gore ke eng fa boitshwaro jwa gagwe bo go tshwenya.\n\nTlhalosa mabaka a go bo melao e o e beileng e le botlhokwa. O ka nna wa mo tlhalosetsa gore o ikutlwa jang - ga go phoso go tlhalosa gore o go swabisitse.", - "AGREE": "DUMALANA", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Tlhalosetsa mosha wa gago gore diphelelo e tla nna eng fa a ikobela melao le fa a sa e ikobele.\n\nBa kope gore ba tle ka dikakantsho tsa bone. Tlotlang go fitlha lo dumalana ka sengwe se tota se ka kgonegang.\n\nTlhalosa ditlamorago tsa fa molao O SA ikobelwe le gore ditshiamelo e tla nna dife fa O ikobelwa.", - "ACT": "TSAYA KGATO", - "When your teen follows the rule, give praise and privileges!": "Fa mosha wa gago a ikobela molao o o o beileng, mo akgole o bo o mo neye ditshiamelo!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Ba tla bona gore wa ba tlotla e bile o ba tsaya tsia. Gakologelwa: Fa re nna re ba akgola, ba tla nna ba bontsha boitshwaro joo jo bo siameng!", - "When your teen does not follow the rule, follow through with the consequence.": "Fa mosha wa gago a sa ikobele molao o o beilweng, latelela seo ka ditlamorago.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Fa mosha wa gago a tlola molao, mo neele ditlamorago o ritibetse. O tshwanetse go dira jalo ka TEKATEKANO (o se makgwakgwa), KA BONAKO (o se ka wa okaoka) O SA FETOGE (dira se se tshwanang ka metlha).", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Tlotlang mmogo:\n* Ke melao efe a basha ba gago go le gantsi ba sa e lateleng? \n* Ke ditlamorago dife tse o ka di dirisang mo molaong mongwe le mongwe o o tobileng fa o sa latelwe? \n\nDitlamorago di tshwanetse go nna: \nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe) \nSE FETOFETOGE (ka go tshwana nako le nako)\n\nAkgola le go rotletsana – re ka kgona go nonotshana!", - "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "A re tlotleng gape ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", - "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ke tshwenngwa ke gore o sa ntse o tla gae thari, @global.w_consequence_teen_boy_1. Ke eng se re ka se dirang go go thusa gore o gakologelwe go tla gae ka nako?”\n\n@global.w_consequence_teen_boy_1: “Fa ke tla gae ka nako, gongwe nka robala thari ka metsotso e le 30 go feta ka tlwaelo?”", - "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Kakantsho eo e molemo tota! Jaanong re tshwanetse go dira eng fa o sa ikobele molao ono? \n\n@global.w_consequence_teen_boy_1 (o itoma diteme): “Mgmluuhm”", - "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Bua fela, ke a itse gore o akantse sengwe.”\n\n@global.w_consequence_teen_boy_1: \"Go siame…. Go ka nna jang ka: Ke tshwanelwa ke go dira tirogae ya me?”", - "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Gone mme tirogae ke selo se o tshwanetseng go se dira. Fa o lebala molao, go tla bo go siame gore o seka wa bonana le ditsala tsa gago letsatsi le le latelang.”\n\n@global.w_consequence_teen_boy_1: \"Go siame, @global.w_consequence_male_caregiver.\"", - "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Letsatsi le le latelang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Go setse go le thari!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, Ke bosigogare mme o tlile gae thari go na le nako e re dumalaneng ka yone. Le fa gone o ka tlhalosa jang, o tshwanetse go tlhaloganya gore se o se dirang ga se a siama. @global.w_consequence_female_caregiver ke ntse ke tshwenyegile tota.”", - "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Ditsala tsa me di ne di batla gore re fetse nako e telelenyana mmogo. Ba ne ba re ke ngwana fa ke setse ke batla go ya gae.” \n\n@global.w_consequence_male_caregiver: “Ke a itse gore gantsi go thata go gana se ditsala tsa gago di go kopang sone. A re ye go robala, re tla bua ka kgang eno mo mosong fa re ikhutsitse sentle.”", - "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Intshwarele go bo ke dirile gore o tshwenyege le @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ke a leboga. Jaanong tsamaya o ye go robala, mme gone, itse gore ka gonne o tlile gae thari, kamoso maitseboa ga o ye gope.”", - "Let's talk about this story": "A re bueng ka kgang eno", - "Using a consequence worked well this time because...": "Ditlamorago di dirile sentle mo lekgetlong leno ka gonne...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver ba buile ka ditlamorago ba ritibetse maikutlo", - "They agreed on consequences together": "Ba ile ba dumalana mmogo ka ditlamorago", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver o ne a tsiboga a ritibetse maikutlo mme gone a tiisitse fa @global.w_consequence_teen_boy_1 a ne a sa ikobela molao", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver o ne a reetsa @global.w_consequence_teen_boy_1", - "The consequence was realistic and appropriate": "Ditlamorago di ne di utlwala e bile di tshwanela", - "Why did using a consequence work well this time?": "Goreng go dirisa ditlamorago go dirile sentle mo lekgetlong leno?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "O ka tla ka ditlamorago o ritibetse jang fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa? \n\nGakologelwa gore e tshwanetse go nna: \nTEKATEKANO - BONAKO - E SA FETOFETOGE", - "Not seeing any friends for a month": "Go sa etele ditsala kgwedi yotlhe", - "This may be hard to do for you and also too harsh!": "Go ka nna bokete gore o tseye kgato eno e bile e ka lebega e le makgwakgwa!", - "Cancelling their birthday plans in a month’s time": "Go khansela dithulaganyo tsa bone tsa letsatsi la botsalo mo lobakeng lwa kgwedi", - "This is too far in the future, and too harsh as well!": "Go setse nako e telele e bile le yone e makgwakgwa!", - "No TV this evening": "Maitseboa ano ga go lebelelwe TV", - "Perfect, this sounds fair and can be done straight away": "Bontle, seno se lebega se le tekatekano e bile se ka dirwa gone jaanong", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Rulaganya go tla ka ditlamorago o ritibetse maikutlo fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa. Gakologelwa gore di tlhoka go nna \n\nTEKATEKANO - BONAKO - DI SA FETOFETOGE", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Tiro e re go e abelang go e dira kwa gae beke eno e tla nna go bua le ngwana wa gago wa dingwaga tsa bosha ka ditlamorago di le DINGWE tse di sa siamang le ditlamorago di le DINGWE tse di siameng.\n\nDitlamorago di tshwanetse go nna:\nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe)\nDI SA FETOFETOGE (ka go tshwana nako le nako)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Boitshwaro jo bo sa Siamang: Go tla gae thari. \n\nDitlamorago tse di sa Siamang: Ga a kitla a bona ditsala tsa gagwe letsatsi le le latelang. \n\nBoitshwaro jo bo sa Siamang: Go bua ka tsela ya go kgoba. \n\nDitlamorago tse di sa Siamang: Kwala lekwalo la go kopa maitshwarelo. \n \nBoitshwaro jo bo Siameng: Go thusa ka go ya mabenkeleng. \n\nDitlamorago tse di Siameng: Go fiwa metsotso e le 30 gore a itumelele go dira sengwe se a se ratang. \n\nBoitshwaro jo bo Siameng: Go thusa ka go tlhokomela bomonnawe. \n\nDitlamorago tse di Siameng: Go fiwa nako e e oketsegileng ka ura a na le ditsala tsa gagwe mafelobeke.", - "Great!": "Go gontle!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ke a itse botshelo bo ka nna bokete. Ke motlotlo ka wena. \n\nGo sa kgathalesege gore o ikutlwa jang, go molemo go bo o le fano!", - "Using the app together": "Lo dirisa sediriso mmogo", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Go gontle go go bona!\n\nSa ntlha, a re thuse setlhopha sa gago gore se simolole.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Dumalanang ka melao ya lona mmogo:\n* Ke malatsi/dinako dife tse re tla kopanang ka tsone mo bekeng?\n* Ke mang yo o tla tshwarang (di)founu ka nako ya ditiro tsa rona?\n* Re ka netefatsa jang gore mongwe le mongwe a ka bua a gololesegile?\n* Re ka dirang gore rotlhe re ikutlwe re tlotliwa?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "O ka nna wa fetola letsatsi la workshop ya lona le leina la setlhopha sa lona mo @global.weekly_workshop_options.", - "Some rules that other groups made:": "Melao mengwe eo ditlhopha tse dingwe di e dirileng:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Labobedi ka ura 7 maitseboa ke nako ya rona ya @global.parent_app mmogo\n* Refosanang go tshwara founo (tiro e le 1 motho mongwe le mongwe)\n* Amogelang maitemogelo a yo mongwe. Rotlhe ga re tshwane!\n* Fanang sebaka sa go bua le go reetsana\n* Dipotso tsotlhe di a amogelwa\n* Se re se bolelelanang ga re se bolelele ope", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "O naledi! \n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela kwa teng gore o iketle. \n\nGopola, o amogela @global.parent_point nako nngwe le nngwe fa o itlhokomela - o botlhokwa!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Go nna motsadi go ka nna bokete. Nako tse dingwe go utlwalega e kete bana ba rona ga ba re reetse.\n\nMme saense e bontsha gore go ipha metsotso e se kae letsatsi le letsatsi o tlhomile mogopolo mo nakong e o iphang yone le mosha wa gago lo le babedi go thusa go aga tshepo le lerato.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Nako ya lona lo le babedi ke fa o tlhoma mogopolo mo go bone, go sena TV kgotsa founo. Dira gore ba etelele pele se o se dirang kgotsa se lo buang ka sone.\n\nGo gontle go dira metsotso e le masome a mabedi ka letsatsi mme gone le metsotso e metlhano e siame tota.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Dumela.\n\nSetlhogo sa rona ke go ipha nako mmogo le bana ba rona.\n\nGo botlhokwa go ipha nako le bana ba rona gore ba kgone go re tlhaloganya, mme le rona re nna le tshono ya go ba itse. \n\nGopola, lelapa le le tlhaloganyanang le tshela ka kutlwano.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Ditiro tsa go itlhokomela\n* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Buang dikakantsho! \n\nKe dilo dife tse lo ka di dirang go ipha nako mmogo le basha ba gago?\n\nO ikutlwa e kete GA O NA NAKO mme o lapile? Tlaya ka dikakantsho tsa nako ya lona lo le mmogo tse di sa tseyeng nako e ntsi, jaaka go ya lebenkeleng mmogo ka dinao.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", - "Let's think of ways to spend one-on-one time with your teen.": "A re akanye ka ditsela tsa go ipha nako mmogo le mosha wa gago.", - "What could you do to spend one-on-one time with your teen?": "O ka dira eng go ipha nako mmogo le mosha wa gago?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "O ikutlwa e kete GA O NA NAKO mme o lapile? Gape gopola go akanya ka ditsela tse di se kitlang di tsaya nako e e oketsegileng.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", - "DAY - Try to do it every day": "LETSATSI – Leka go dira seno letsatsi le letsatsi", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Batla metsotso e 5 (kgotsa go feta!) letsatsi le letsatsi fa mosha wa gago a sena sepe se a batlang go se dira.", - "PLAY - Let your teen choose": "TSHAMEKA - Letla mosha wa gago a tlhophe", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Bolelela mosha wa gago gore o ka rata go fetsa nako le ene le gore ba tlhophe gore ba batla go dira eng kgotsa go bua ka eng. Ba ka tsaya seno se sa tlwaelega ko tshimologong, mme ba tla itumelela nako eno le wena!", - "STAY - Focus on your teen": "DULA - O tlhomile mogopolo mo mosheng wa gago", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Tima TV mme lo beele difouno ko thoko. Lebelela mosha wa gago. Dumela ka tlhogo kgotsa o re “ke a bona” go bontsha gore tota o tlhwaile tsebe. Amogela se ba se buang ntle le go ba atlhola.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Go ipha nako mmogo le mosha wa gago e ka nna monate le mo go wena, tota! Go ka nna ga dira gore o ikutlwe o sa tshwenyega thata mo maikutlong.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Iphe metsotso e 5-20 le mosha wa gago lo le babedi, letsatsi lengwe le lengwe le o ka le kgonang mo bekeng eno.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Gopola - nako nngwe fa o kgona, iketle, gakologelwa o bo o iteboge. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", - "Remember that YOU matter!": "Gopola gore O botlhokwa!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Ke lebogela go lemoga maikutlo a a siameng. Ke itumelela go utlwa gore lo tsogile sentle gompieno!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Ke lebogela go lemoga maikutlo a a thatanyana. Botshelo bo ntse jalo, ka dinako tse dingwe go nna thata. Gopola gore ga o nosi.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Seno se sentle ruri. Mekgwa eno yotlhe e dira gore lelapa la lona le nonofe. Nna motlotlo.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Melao e thusa basha go itse gore ke eng seo se lebeletsweng mo go bone. \n\nGantsi bana ba dingwaga tsa bosha ba ikobela melao fa o e tlhoma O NA LE bone e bile o ba leboga fa ba e ikobela!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Dumelang, lotlhe. \n\nKgang eo re tlileng go bua ka yone gompieno ke melao. \n\nMelao e dira gore go nne le kagiso mo lelapeng e bile e dira gore botlhe mo lelapeng ba kgone go tlhaloganyana. \n\nMelao e thusa gore mongwe le mongwe mo lelapeng a itse gore o na le maikarabelo; ka jalo, go botlhokwa gore go nne le melao mo lelapeng. \n\nLelapa leo le nang le melao le dirisana mmogo ka kagiso.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa diang... \n* Kgang le motlotlo - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang... \n* Kgang le go leba kwa morago - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "A re baleng ka se se diragetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Ka metlha o tla gae thari!”\n\n@global.w_rules_teen_boy: “Nnyaa ga ke tle thari, ga ke itse le gore go tla thari go raya eng! Ntlogele.”", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Ke molao ofe o o maleba o @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o tlhomang mmogo?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Tla re bone gore @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba dirile seno jang mo letsatsing le le latelang:\n\n@global.w_rules_female_caregiver_1: “Ke batla gore o itumele, @global.w_rules_teen_boy, mme gape ke tshwenyegile ka go tla gae thari ga gago. A o itse gore goreng ke rialo?” \n\n@global.w_rules_teen_boy: “Ka gonne o batla ke nna le nako e ntsi ya go dira tiro ya sekolo?”", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “O nepile, e bile gape ga go a sireletsega mo lefelong leno gore o bo o le kwantle letsatsi le phirimile. O akanya gore ke nako efe e e tshwanetseng ya gore o tle gae?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “A nka tla gae ka 10pm?\" @global.w_rules_teen_boy: \n\n@global.w_rules_female_caregiver_1: “Go tla be go le thari thata, 6pm e ntse jang? Kgotsa nako e e magareng ga dinako tseo?”", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “A nka tla gae ka 6pm ka malatsi a sekolo ke be ke tla ka 10pm ka Labotlhano le Lamatlhatso?” \n\n@global.w_rules_female_caregiver_1: “Ee, go siame. Go tloga jaanong, molao wa mo gae ke gore o tshwanetse go tla gae ka 6pm mo malatsing a sekolo o bo o tla ka 10pm ka Labotlhano le Lamatlhatso. Mme ka metlha o tsamaye le ditsala fa o tla gae. A wa nkutlwa", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Go siame, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboga thata, @global.w_rules_teen_boy, go bo o nthusitse gore re kgone go tla ka molao o siameng mmogo. Ke motlotlo go go bona o simolola go nna le maikarabelo.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Letsatsi le le latelang...\n\n@global.w_rules_female_caregiver_1: “Ke a leboga, @global.w_rules_teen_boy, go bo o tlile gae ka nako. Fa o fetsa tiro ya sekolo re ka tla go ja dijo tse o di ratang thata tsa maitseboa.”", - "Making the rule together went well because...": "Go dira molao mmogo go tsamaile sentle ka gonne...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Ba tlotlile ka mabaka a a dirileng gore molao o nne teng \n* @global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy \n* Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano \n* @global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy o ne a itse gore @global.w_rules_female_caregiver_1 wa gagwe o mo rata ka gonne...", - "* She praised him\n* She rewarded him when he followed the rule": "* O mo akgotse\n* O ne a mo duela fa a fetsa go latela molao", - "Let's think about what happened in this story.": "A re akanye ka se se diragetseng mo kgannyeng eno.", - "What went well here in making a rule together?": "Ke eng se se tsamaileng sentle ka go dira molao mmogo?", - "They discussed the reasons behind the rule": "Ba tlotlile ka mabaka a a dirileng gore molao o nne teng", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy", - "The rule was clear, specific and fair": "Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", - "That's right, making clear rules together in a calm and positive way works so well!": "Go gontle, go dira melao mmogo ka tsela e e ritibetseng le le siameng go dira sentle tota!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "O akanya gore @global.w_rules_teen_boy o itsitse jang gore @global.w_rules_female_caregiver_1 wa gagwe o a mo kgathalela?", - "She praised him": "O mo akgotse", - "She rewarded him when he followed the rule": "O ne a mo duela fa a fetsa go latela molao", - "Exactly - a positive response makes all the difference!": "Go ntse jalo - karabo e e siameng e dira gore dilo di tsamaye sentle!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Melao ya mo gae e thusa gore basha ba rona ba sireletsege, le gore ba tlhaloganye se ba tshwanetseng go se dira. Fa o dira gore bana ba dingwaga tsa bosha ba thuse go dira melao go nna motlhofo gore ba e latele.", - "TEAM RULES": "MELAO YA SETLHOPHA", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Rulaganya melao LE mosha wa gago. Simolola ka molao wa ntlha o le mongwe fela - o ka nna wa oketsa ka o mongwe morago. Tlotla mabaka a a dirang gore go nne le molao o bo o reetsa maikutlo a bone.", - "REAL RULES": "MELAO YA MMATOTA", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "E dire gore e nne ya mmatota gore basha ba gago ba kgone go e dira, le gore e utlwale sentle le go totobala gore e tlhaloganyege sentle. E seng ‘ka nako’ mme ‘ka 7pm’.", - "PRAISE RULES!": "MELAO YA GO AKGOLA!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Akgolela mosha go rulaganya molao le wena, o bo o mo akgolela go o latela!", - "Online Safety": "Tshireletsego ya Inthanete", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Melao e botlhokwa go boloka basha ba gago ba sireletsegile - le mo inthaneteng. Go buiwa go le gontsi ka seno mo Kopanong ya Beke le Beke ka thulaganyo ya tshireletsego, mme tla re simolole ka go e bona gone jaanong!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, a o dirile tirogae ya gago?\"\n\n@global.w_rules_teen_girl: \"Ke etla @global.w_rules_female_caregiver_2, ke feleletsa bidio eno ya @global.teen_social_medium\"", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Tota o kgeleke ya go bina! Mpolelele gore goreng o go rata\"\n\n@global.w_rules_teen_girl: \"Ditsala tsa me tsotlhe di dira jalo, @global.w_rules_female_caregiver_2. Ke na le batho ba ba e ratang ba le 600 ba ba ntshalang morago ba le 120.”", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka fa o binang bontle ka teng, @global.w_rules_teen_girl. Mme re tshwanetse go tlhomamisa gore o sireletsegile. \n\nKe itse gore ditsala tsa gago di lebelela @global.teen_social_medium, mme di dirisa akhaonto e e sa sireletsegang, go na le batho bangwe ba ba lebang dibidio tsa basha gore ba kgotsofatse keletso ya bone ya thobalano. Ka dinako tse dingwe ba ikgolaganya le basha. Ba itira e kete ba siame mme ba feleletsa ba tshosetsa basha le go ba sotla.”", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Tla re lebe inthanete mmogo re bone gore re ka dira jang gore e go itumedise le gore gape e sireletsege. Bona - o ka kgona go dira gore akhaonto ya gago e nne khupamarama le go laola batho ba ba go salang morago.\n\nO ka nna wa amogela batho ba o tsenang sekolo le bone le ba mo lefelong la rona, mme e seng batho ba ba ikgolaganyang le wena mo inthaneteng.\n\nA re ka dira molao mmogo o o ka o dirisang @global.teen_social_medium, mme e le ka akhaonto ya khupamarama? Ke a go tshepa gore o tla amogela batho ba o ba itseng!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka wena @global.w_rules_teen_girl\"", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Ke molao ofe o le nosi o o botlhokwa o mongwe le mongwe wa lona a ka ratang go o dira le basha ba lona? \n* O akanya gore mosha wa gago o tla akanya eng ka ga molao oo? \n\nGakologelwa, dira melao gore e nne e e maleba le ya mmatota!", - "Here are some of the rules other families created:": "Fano ke melao mengwe e malapa a mangwe a e dirileng:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Mosha a ka tshameka kwa ntle fa a sena go fetsa tirogae ya sekolo\n* Maloko otlhe a lelapa ba ja mmogo dijo tsa maitseboa\n* Mosha 1 o tlhatswa dijana ka Sontaga le Mantaga, Mosha 2 ka Labobedi le Laboraro\n* Re buisana mmogo ka bonolo le tsela e ntle\n* Fa o reeditse mmino o tshwanetse go dirisa di-earphones", - "Let's practice making rules.": "A re itlwaetseng go dira melao.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Kwala molao o le mongwe wa botlhokwa o o ka ratang go o dira le mosha wa gago - o tla dira seno e le go ikatisa mo gae beke eno. \n\nBa tlile go akanya eng ka one?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Mo bekeng eno, baya molao o le mongwe mmogo le mosha wa gago.\n\nGakologelwa go akgola mosha fa lo fetsa!", - "Great to hear that you are doing well. You are a wonderful parent!": "Ke itumelela go utlwa gore lo tsoga sentle. Lo batsadi ba ba molemo tota!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ke maswabi go utlwa gore gompieno go thatanyana. Re leboga gore lo dirile sotlhe se lo ka se kgonang. Ga go ope yo o itseng sengwe le sengwe mme lo dira bontle tota!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ke maswabi go utlwa gore gompieno go thatanyana. Re a lo akgola gore fa lo tsoga moso mongwe le mongwe, lo dira sotlhe se lo ka se kgonang le fa gone lo lapile. Seno se tlhoka bopelokgale le boineelo!", - "Step 1: Share what went well and what was hard": "Kgato 1: Re bolelele gore ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ke kgonne go ithuta dilo di le dintsi ka mosha wa me fa re ne re fetsa nako e ntsi mmogo! Mme mo letsatsing la bobedi, mosha wa me o ne a nnetse founo.”", - "Step 2: Bring ideas!": "Kgato 2: Tla ka dikakantsho!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Re leboga fela thata go bo lo tsere matsapa! Gongwe o ka akantsha gore ke dilo dife tse di itumedisang tse o ka di dirang mmogo le mosha wa gago.”\n\n\"Ee, gongwe lo ka dira sengwe mmogo mo founong ya gagwe? Kgotsa gongwe a ka go bontsha gore founo ya gagwe e dira jang?”", - "Step 3: Pick and try one!": "Kgato 3: Itlhophele gore ke efe e o ka e lekeletsang!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Re lebogela dikakantsho tseo tse di molemo tota! Go siame, ke tla kopa mosha wa me gore a mpontshe gore founo ya gagwe e dira jang fa a tswa sekolong. Ke mang yo o batlang go tshameka karolo ya go nna mosha wa me gore re dire ikatiso ke mo kopa?”", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Akanyang ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka:\n\n* Ke kae mo o kgonneng go dira bontle le gore ke eng seo se neng se le thata?\n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo?\n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(Kgotsa lo ka nna lwa ikatisa gone jaanong gore e nne motlhofo moragonyana!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Go akgolwa ke selo se se botlhokwa thata fa o godisa bana.\n\nFa re akgola bana ba rona fa ba dirile sengwe sentle, ba tla nna ba tokafatsa thata!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Dumelang lotlhe. \n\nGompieno re tlile go bua ka go akgola. \n\nGo botlhokwa go akgola bana ba rona fa ba dirile bontle ka gonne fa re dira jalo, ba tla tswelela ba tokafatsa mo go se re batlang gore ba se dire. \n\nMme a le rona re se ka ra lebala go ikakgola fa re dirile bontle!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Abelana le ba bangwe:\n\n* O feleleditse leng go utlwa mongwe a go leboga kgotsa a re o dirile sengwe se se ntle? \n* O ne wa ikutlwa jang? \n* O ikutlwa jang fa o sa lebogiwe kgotsa o sa akgolwe ka ntlha ya se o se dirileng? \n\nRona batsadi ga e se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng. Gongwe o ka tlhomela basha ba gago sekao se se molemo ka go ba akgola fa ba dirile sengwe sentle lekgetlo la ntlha!", - "Think about the last time someone thanked you, or said you did something great.": "Akanya gore o ne o ikutlwa lekgetlo la bofelo fa mongwe a ne a go leboga, kgotsa a go bolelela gore o dirile sengwe bontle tota.", - "How did it make you feel?": "O ne o ikutlwa jang?", - "Parents usually don’t get thanked or praised enough.": "Rona batsadi ga se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng.", - "How does it make you feel when nobody says \"thank you\"?": "O ikutlwa jang fa go se ope yo o rayang a re, “ke a leboga”?", - "Tired": "O a lapa", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Mosha wa gago le ene a ka ikutlwa jalo. Ke sone se se dirang gore ikatiso ya rona ya beke eno e nne botlhokwa le fa gone e lebega e le motlhofo: Ba akgole fa ba dirile sengwe sentle.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Go akgola go na le matla tota. \n\nA re lebeng sekai sa ga @global.w_praise_female_caregiver_name le bana ba gagwe ba basetsana:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Gantsi fa @global.w_praise_female_caregiver_name a tshwaregile ka go dira sengwe, bana ba gagwe ba basetsana ba a lwa. Mme, gompieno ngwana wa gagwe wa mosetsana yo mogolo o thusa monnawe ka tiro ya sekolo!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: “Ke a leboga @global.w_praise_girl gore o dira tiro ya sekolo, ke a leboga ka go thusa monnao, @global.w_praise_teen_girl. Ke motlotlo tota ka lona!”", - "Let's discuss this story.": "A re tlotleng ka kgang eno.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Tlotlang mmogo:\n\n* Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?\n* Goreng a ile a ba akgola?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name o ile a akgola bana ba gagwe...", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Go dira gore gantsi ba nne ba dira jalo\n* Go mo thusa gore a fetse tiro ya gagwe \n* Go dira gore ba ikutlwe ba le motlotlo \n* Go dira gore a ikutlwe a le motlotlo", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?", - "Why did she praise them?": "Goreng a ile a ba akgola?", - "To get them to do it more often": "Go dira gore gantsi ba nne ba dira jalo", - "To help her finish her work": "Go mo thusa gore a fetse tiro ya gagwe", - "To make them feel good": "Go dira gore ba ikutlwe ba le motlotlo", - "To make herself feel good": "Go dira gore a ikutlwe a le motlotlo", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Dilo tseno tsotlhe di boammaaruri! \n\nFa basha ba ga @global.w_praise_female_caregiver_name ba itumetse, le ene o a itumela. E bile seno se mo thusa gore a kgone go fetsa tiro ya gagwe.", - "The same can work for you!": "Le wena seno se ka go thusa!", - "SEE IT": "BONA", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Leka go bona gore ke eng se se siameng e bile se go thusa se basha ba gago ba se dirang mme o ba akgole. Gongwe ba ka nna ba se go bontshe gore ba a itumela mme gone, o tla ba bona ba dira selo seo se se sentle gape. Gape seno se tla dira gore ba lemoge gore o a bona gore ba dira bontle e bile o a kgathala ka bone.", - "SAY IT": "BUA", - "Be enthusiastic – really mean it when you say it!": "Nna matlhagatlhaga – bontsha gore tota se o se buang se tswa mo pelong!", - "REPEAT IT": "BOELETSA", - "Try to find something to thank them for every day. Even something really small.": "Leka go bona gore ke eng se o ka ba lebogelang sone letsatsi le letsatsi. Tota le sengwe fela se se bonalang se le sennye tota.", - "You can also praise other adults in your household, too. Notice how they respond!": "Tota e bile le ba bangwe ba ba godileng mo lapeng o ka ba akgola. Ela tlhoko gore ba itshwara jang fa o ba akgola!", - "Let's practice giving praise.": "A re direng ikatiso ya go akgola.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Abelana le ba bangwe: \n\n* O ka akgola mosha wa gago ka ntlha ya eng? \n* Ke eng se mongwe o sele a se dirileng sentle ka nako ya workshop eno? Ba bolelele!\n* O ile wa ikutlwa jang fa mongwe a go akgola?\n* O ile wa ikutlwa jang fa o akgolwa?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ka dinako tse dingwe go thata go akanya gore o ka akgola mosha wa gago fa a dirile eng! Go na le dikakantsho tseno tse di tswang kwa batsading bangwe:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Go nna bonolo mo mongweng \n* Go phepafatsa phaposi ya bone \n* Go ja mmogo le lelapa \n* Go dumedisa maloko a mangwe a lelapa \n* Go tlhokomela bomonnao \n* Go tla gae ka nako? \n* Go bontsha go akanyetsa ba bangwe \n* Go re ‘tsweetswee’ kgotsa ‘ke a leboga’ \n* Go ya sekolong \n* Go dira ditiro tsa legae kgotsa tirogae ya sekolo \n* Go fetsa nako ya go ja ntle le dintwa", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Ikatiso ya kwa gae ya beke eno ke go akgola mosha wa gago gangwe mo letsatsing. E tlile go tsaya fela metsotswana e le 10!", - "Caring for yourself is so essential.": "Go itlhokomela go botlhokwa thata.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle. Tswelelang lo dira tiro eno e e molemo.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Iphe nako ya go itumelela se o kgonneng go se fitlhelela le fa gone go na le dilo tse dintsi tse o tshwanetseng go di dira letsatsi le letsatsi.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Malapa a le mantsi a a tshwenyegile thata ka ntlha ya madi, bogolo jang fa basha ba nna ba kopa go rekelwa dilo! \n\nFa re dira tekanyetsokabo mmogo, re ka dumalana gore re tla dirisa madi jang LE GORE re tla boloka bokae gore re se ka ra iphitlhela re tshwenyegile e bile re ka kgona go fitlhelela mekgele/maikemisetso a rona re le lelapa.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Dumelang, lotlhe. \n\nGompieno re tlile go tlotla ka tekanyetsokabo ya lelapa. \n\nGo botlhokwa go nna le tekanyetsokabo, mme tota e bile go botlhokwa thata go nna le tekanyetsokabo e e akaretsang mongwe le mongwe mo lelapeng. \n\nFa lo dira tekanyetsokabo mmogo, seno se dira gore lotlhe mo lapeng lo tlhaloganye botoka gore lo ka dirisa madi jang le gore lo ka kgona go boloka bokae, e bile lo ka kgona go dira dithulaganyo tsa gore lo tla boloka madi jang lo le lelapa.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Kgang – Eo ga e a dira... \n* Ikatiso ya tekanyetsokabo\n* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di sa dirang...\n* Motlotlo le ditlhopho tsa go boloka\n* Ikatiso ya tekanyetsokabo\n* Didirisiwa: Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi\nAKANYA - TLHOPHA - AGA - ITHULAGANYE\n * Dikakantsho tsa katiso ya legae", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Gantsi ga go motlhofo go reka dilo tsotlhe tse o di tlhokang kgwedi le kgwedi. Malapa a le mantsi a na le bothata jono! \n\nGo akaretsa le @global.w_money_grandma- tla re bone:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Ke ntse ke godisa ditlogolo tsa me, @global.w_money_teen_girl le @global.w_money_teen_boy, go tloga fa e sale batsadi ba bone ba tlhokafala ba sa ntse ba le bannye. Gantsi re na le mathata a madi ka gonne ke amogela madi a mannye.”", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Ke tshwenyegile mo maikutlong tota. Ga ke na madi ape a a setseng. Jaanong nna le basha ba me re lwela dilo tse ba di batlang – gape.\"", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno. O tlhoka:\n\n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene\n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi\n \nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", - "A family budget can help @global.w_money_grandma - and YOU!": "Tekanyetsokabo ya lelapa e ka thusa @global.w_money_grandma - le WENA!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "O tlhoka: \n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene \n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi \n\nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", - "Think about what we spend money on each month.": "Akanya gore ke dilo dife tse re dirisang madi go di reka kgwedi le kgwedi.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka ditshwantsho tsa dilo tsotlhe tse wena le lelapa la gago le di rekang kgwedi le kgwedi. \n* Kwala fa thoko ga setshwantsho sengwe le sengwe gore selo sengwe le sengwe se ja bokae kgwedi le kgwedi. (Ga go tlhokege go bua dinomore fa e le gore ga o batle go dira jalo.)\n* Tlhakanya gore ke madi a le kana kang a o tshwanelwang ke go a dirisa kgwedi le kgwedi.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Bontle tota! Lo feditse kgato 1! \n\nA re tsweleleng!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* dijo \n* metsi & motlakase \n* diaparo \n* diakhaonto \n* peeletso ya TV \n* dilwana tsa go tlhapa \n* salune \n* airtime \n* tuelo ya sekolo \n* sepalangwa \n* inshorense/dipholisi \n* melemo \n* boitlosobodutu/metshameko \n* rente \n* melato \n* kereke", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Tlotlang mmogo ka dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela o sena sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Gantsi batho ga ba na maikutlo a a tshwanang ka dilo. Fa re bua ka dilo tse re di tlhokang le tse re di batlang, re kgona go tlhaloganyana e bile re ka kgona go dira ditshwetso tse di siameng tsa gore re dirise madi jang.\n\nLebelela lenaane la gago la dilo tse o di rekang mme lo tlotle ka:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse lelapa la lona le ka lekang go dirisa madi a mannye mo go tsone?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Akanya kaga dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela ntle le sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Lebelela lenaane la gago la dilo tse o di rekang mme lo tlhophe:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse o ka lekang go dirisa madi a mannye mo go tsone?", - "Make a budget!": "Dira tekanyetsokabo!", - "Make a budget as one big family!": "Dirang tekanyetsokabo lotlhe lo le lelapa!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Motho a le nosi o tla ithaopela go abelana ka lenaane la gagwe (Fa go sena ope yo o ithaopang lo ka dira lenaane le lesha mmogo) \n* Ipheng dikarolo - bangwe e ka nna bagolo, bangwe e tla nna basha. \n* Dirang tshwetso ya gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sengwe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.) \n* Dirang tshwetso mmogo gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje ao mo godimo ga setshwantsho se lo se takileng. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", - "Make a budget as a family!": "Dirang tekanyetsokabo lotlhe lo le lelapa!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Kwalang fa fatshe gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sepe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Ka sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.)\n* Dirang tshwetso gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje/dilo tseo mo godimo ga setshwantsho seo. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Lo dirile bontle, lo feditse dikgato tse 3 tsa ntlha! \n\nA re boneng gore @global.w_money_grandma o ne a rulaganya go dirisa madi a gagwe jang, jaaka re dira fano:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ke batla gore ditlogolo tsa me di nne le bokamoso jo bo siameng, ke fela gore ga ke itse gore ke tla bona kae madi. Batho ba ba pelotshetlha ba ba adimisanang madi ba kotsi e bile ba ba batla morokotso montsi tota. \n\nKe tshwanetse go boloka madi, mme go bonala go ka se kgonege!”", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“Maikemisetso a me ke gore setlogolo sa me sa mosimane se kgone go ya kwa sekolong se segolwane le gore setlogolo sa me sa mosetsana se kgone go fitlhelela maikemisetso a go ya yunibesithi. Nka kgona jang go boloka madi a mantsi ke amogela madi a mannye jaana?”", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ke a itse - a re simololeng go ithulaganya! Sa ntlha, e re ke dire tekanyetsokabo – ke ithulaganye gore nka boloka madi jang. Ke tla simolola pele ka go nna ke boloka madinyana a ke nang le one – e bile ke tla ikwadisa mo setlhopheng sa go boloka le go adimisa madi.”", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“E bile ke tshwanetse go bua le ditlogolo tsa me gore ke dilo dife tse re ka dirisang madi a le mannye mo go tsone beke le beke. Ba tla nthusa go bona gore ke dilo dife tseo re di batlang mme tota e se tse re di tlhokang.”", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Dingwaga di le mmalwa morago ga moo:\n\n“Bona fela, re kgonne go fitlhelela maikemisetso a rona! Ga ke a ka ka adima madi mo ditsaleng tsa me kgotsa mo batho bano ba ba adimisanang madi ba ba pelotshetlha. Go boloka madinyana beke le beke go nthusitse gore ke kgone go duelela @global.w_money_teen_boy kwa sekolong se segolwane e bile ke kgonne go boloka madi mangwe gore ke kgone go duelela @global.w_money_teen_girl kwa yunibesithing. Ruri ke ikutlwa ke le motlotlo gore ke kgonne go dira seno.”", - "What are your family savings goals?": "Lelapa la lona le ipeetse mekgele efe ya go boloka madi?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Ke mekgele/maikemisetso a mentle tota! \n\nKe mokgele/maikemisetso a montle tota! Fa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Fela jaaka @global.w_money_grandma, le rona re na le mekgele/maikemisetso ao re batlang lelapa la rona le e fitlhelela. Fa o boloka madinyana a se kae kgwedi le kgwedi, le wena o ka kgona go e fitlhelela!", - "What are your family savings goals?": "Lelapa la lona le ipeetse mekgele/maikemisetso afe a go boloka madi?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Ke mokgele/maikemisetso a montle tota! \n\nFa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Go na le lebaka le lengwe la botlhokwa le le dirang gore go boloka madi go nne botlhokwa: maemo a tshoganyetso! @global.w_money_grandma o ne a lemoga seno nako nngwe:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Bosigo bongwe go ne ga tla setsuatsue se se maswe mme sa senya marulelo a ntlo ya me. sengwe le sengwe mo ntlong se ne se tsiname mo metsing. Ke ne ka tshwanelwa ke go batla madi ka lepotlapotla gore ke baakanye marulelo. Ke ne ke tlaletswe.”", - "Let's talk about this story.": "A re bueng ka kgang eno.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "@global.w_money_grandma o ne a senyediwa ke setsuatsue. \n\nMme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", - "Let's think about this story.": "A re akanyeng ka kgang eno.", - "For @global.w_money_grandma, a storm happened.": "@global.w_money_grandma o ne a senyediwa ke setsuatsue.", - "What other emergencies could come up for your family?": "Mme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Maemo a tshoganyetso a ka diragalela lelapa lengwe le lengwe. Go boloka madi GO SA LE NAKO gore re tle re a dirisetse maemo ano a tshoganyetso go re thusa gore re se ka ra iphitlhela re tlaletswe e bile re gateletswe mo maikutlong fa a tlhaga!", - "Let's talk about different ways we can save.": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Tlotlang mmogo: \n* Lo ka boloka madi ka ditsela dife tse di farologaneng? \n* Ke eng seo se ka nnang molemo le seo se ka se nneng molemo sa mokgwa mongwe le mongwe wa go boloka madi? \n\nFa o tlhaloganya mokgwa mongwe le mongwe sentle, seno se tla go thusa gore o dire tshwetso ya gore ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona. \n\nMokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", - "Let's think about different ways we can save.": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Go na le mekgwa e e farologaneng e re ka e dirisang go boloka madi: kwa gae, go reka dilo tse re ka di rekisang moragonyana, kwa bankeng kgotsa mo setlhopheng sa go boloka madi.\n\nAkanya ka dilo tse di molemo le dilo tseo di seng molemo tsa mokgwa mongwe le mongwe wa go boloka madi.", - "What is the best savings option for your family?": "Ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona?", - "Whatever savings plan you choose, it will really help your family move forward!": "Mokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Dirang dithulaganyo tsa gore lo ka boloka madi jang gore lo kgone go a dirisa ka nako ya maemo a tshoganyetso le go fitlhelela mekgele/maikemisetso a lelapa la lona!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Fa lo ka boloka le fa ele madi a mannye fela a maemo a tshoganyetso mo isagweng - go ka dira pharologanyo fa nako e ntse e tsamaya. \n* Tsenya kgolokwe e e bidiwang “maemo a tshoganyetso”.\n* Tsenya kgolokwe e e bidiwang “mekgele/maikemisetso a lelapa”.\n* Jaanong lekang go abela dilo madi e le gore lo ka boloka bonyenyane kgwedi le kgwedi jwa sengwe le sengwe sa dilo tseno.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re motlotlo ka mongwe le mongwe mo ditlhopheng tseno, a ga go a nna jalo?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re akanya gore mongwe le mongwe mo lelapeng la lona o tlhoka go akgolwa, a ga go jalo?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo – tsweetswee ikatise le ba bangwe mo lelapeng la lona - fa lo dumalana ka gore lo tlile go dira dilo jang, seno se tla lo thusa fela thata!", - "Step 1: THINK": "Kgato 1: AKANYA", - "What do we spend on now?": "Re reke eng gone jaanong?", - "THINK Activity": "Ikatiso ya GO AKANYA", - "Step 2: CHOOSE": "Kgato 2: TLHOPHA", - "Talk together about needs and wants": "Tlotlang mmogo ka dilo tse lo di tlhokang le tseo lo di batlang", - "CHOOSE Activity": "Ikatiso ya GO TLHOPHA", - "Step 3: BUILD": "Kgato 3: AGA", - "Make your own budget": "Itirele tekanyetsokabo", - "BUILD Activity": "Ikatiso ya GO AGA", - "Step 4: PLAN": "Kgato 4: ITHULAGANYE", - "Emergencies and family goals": "Maemo a tshoganyetso le mekgele/maikemisetso a lelapa", - "PLAN Activity": "Ikatiso ya GO ITHULAGANYA", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Dira tekanyetsokabo gape - mo lekgetlong leno e dire LE mosha wa gago le lelapa la gago! \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Dira tekanyetsokabo le mosha wa gago le lelapa la gago. \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tlhatlhobang tekanyetsokabo le mosha wa gago le lelapa la gago. Seno se tla gopotsa mongwe le mongwe gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele ya rona!\n\nTekanyetsokabo e thusitse malapa a le mantsi tota.", - "Steps to make a budget": "Dikgato tsa go dira tekanyetsokabo", - "Wonderful, I am so happy! Keep up the good work.": "Go gontle, ke itumetse tota! Tswelelang lo dira tiro eno e e molemo.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Tshwarelo gore dilo di bokete. Malapa otlhe a na le mathata. Re fano go lo thusa!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "A re lebaleng ka sengwe fela se se phoso seo se diragetseng gompieno, re tla leka gape letsatsi le le latelang. Ga se bothata!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Tlhomamisa mogopolo mo dilong tse di siameng! \n\nGo botoka go bolelela basha ba rona gore ke eng se re batlang ba se DIRA go na le go ba bolelela gore ba TLOGELE go dira sengwe.\n\nO tla bona pharologanyo.", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Dumelang, dumelang lotlhe.\n\nSetlhogo sa gompieno ke go neela ditaelo tse di siameng. \n\nGo botlhokwa go naya bana ba rona ditaelo tse di siameng ka gonne fa re dira jalo, ba tla itse le go tlhaloganya gore ke eng se re solofetseng gore ba se dire, e bile ba tla se dira jaaka re batla. \n\nKa gone, kwa bofelong mongwe le mongwe o a itumela.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le motlotlo - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le go leba kwa morago - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n * Dikakantsho tsa katiso ya legae", - "Let’s do a thought experiment!": "A re lekeletseng kgopolo nngwe!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "O SEKA WA AKANYA KA TLOU \n\nKe eng se o se akanyang?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Gongwe o ILE wa akanya ka tlou...\n\n‘Se dire jalo’ ditaelo di dira gore basha ba akanye ka selo seo. \n\nKa dinako tse dingwe ga ba tlhaloganye gore tota re ne re batla gore ba DIRE eng. \n\nE bile, ga ba batle go nna ba bolelelwa gore ba se ka ba dira dilo dingwe (a ga re jalo rotlhe?)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "JAANONG, AKANYA KA LENGAU! \n\nKe eng se o se akanyang?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "O nepile! Ditaelo tse di siameng e bile di tlhalosiwa sentle di thusa basha go tlhoma mogopolo mo go se ba tshwanetseng go se dira. \n\nBasha gape ba tla ikutlwa ba tlotliwa le go feta ka tsela eno, mme seno se ka dira gore ba go reetse.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "A re boneng gore go diragalang fa @global.w_instruct_female_caregiver a raya @global.w_instruct_teen_girl a re \"TLOGELA GO\":", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe.\n\n@global.w_instruct_female_caregiver: “Tlogela go tlatsa leswe o ntse o bona gore ke a phepafatsa. Le gone o mo tseleng ya me!”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kana mme le nna ke tshwanetse go ikatisetsa kgaisano ya kwa sekolong. Ga nke o mpha tshono ya go dira sepe.”\n\n@global.w_instruct_female_caregiver: “O seka wa ngangisana le nna!”", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Goreng ke aga ke omantswe ka metlha????”\n\n@global.w_instruct_female_caregiver a bua a le nosi: “Ngwana yole o aga a baka mathata fela.”", - "Let's discuss what happened in this story.": "A re tlotleng ka gore ke eng se se diragetseng mo kgannyeng eno.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Tlotlang mmogo: \n\n* O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone? \n* @global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver a ka bo a ile a...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* A bua sengwe se sentle pele \n* A bua le @global.w_instruct_teen_girl a digile lentswe \n* A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone?", - "Sad": "O utlwile botlhoko", - "Confused": "O akabetse", - "Angry": "O galefile", - "What could @global.w_instruct_female_caregiver have done differently?": "@global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", - "Said something nice first": "A bua sengwe se sentle pele", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "A bua le @global.w_instruct_teen_girl a digile lentswe", - "Told @global.w_instruct_teen_girl what she wants her to do": "A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Ke a leboga gore re dirile ikatiso eno mmogo! \n\nA jaanong re boele morago mme re bone gore go diragala eng fa @global.w_instruct_female_caregiver a ntsha taelo e e siameng:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, go itumedisa go bona o ikatisetsa go bina ga gago le tsala ya gago. Ke kopa lo ye kwa ntle pele gore ke feleletse go phepafatsa mo ntlong. Fa ke feditse lo ka boela e bile le nna ke tla itumelela go lo lebelela.”\n\n@global.w_instruct_teen_girl: \"Go siame, @global.w_instruct_female_caregiver!”", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Ke a leboga gore lo ile lwa nna lwa ikatisetsa kwa ntle fa ke ntse ke feleletsa go phepafatsa, @global.w_instruct_teen_girl. Jaanong le nna ke kopa lo mpontshe gore lo di betsa jang.”", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Iyo, @global.w_instruct_teen_girl! Ka re mmino ke dilo tsa lona!”", - "Let's discuss what happened this time.": "A re tlotleng ka gore ke eng se se diragetseng mo lekgetlong leno.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Tlotlang mmogo: \n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?\n* Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", - "It worked better this time because...": "Dilo di tsamaile sentle mo lekgetlong leno ka gonne...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata\n* @global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo \n*@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", - "Positive instructions can work with your teen too!": "Le wena ditaelo tse di siameng di ka thusa mosha wa gago!", - "GET REAL": "BUA NNETE", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "A mme gone ngwana wa gago wa dingwaga tsa bosha a ka kgona go dira se o mo kopang gore a se dire? Go ka nna ga se ka ga kgonega gore a tlhole a buisa letsatsi lotlhe, mme tota a ka kgona go buisa selekanyo sa halofo ya ura, seno se ka kgonega.", - "GET POSITIVE": "BUA KA TSELA E E SIAMENG", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Nyenya, mo lebe mo matlhong o bo o dirise mafoko a a siameng. O se ka wa okaoka go ba akgola fa ba dira sengwe se o kopang gore ba se dire!", - "GET CLEAR": "ITLHALOSE SENTLE", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Go le gantsi le fa re itse gore ke eng se re se batlang, go nna thata go itlhalosa sentle. Bolelela mosha wa gago ka tlhamalalo gore ke eng se o batlang a se dira. Leka go mmolelela jaana, ‘tsweetswee fitlha mo lapeng ka ura ya 7 maitseboa’ go na le go mmolelela fela o re ‘tla gae ka nako’.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "A re ikatisetseng go naya ditaelo O BUA NNETE, O BUA KA TSELA E E SIAMENG e bile O ITLHALOSA SENTLE. Go ikatisa go tla go thusa gore o kgone go atlega ka mosha wa gago!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Tlhopha batho ba le babedi mo setlhopheng sa lona:\n* Motho a le nosi o itira e kete ke mosha\n* Yo mongwe o itira e kete ke batsadi ba mosha\n* “Motsadi”: Naya “mosha” wa gago ditaelo tse di siameng o mo rotloetsa le go mo akgola\n* “Mosha”: Tsiboga fa o akanya gore mosha a ka tsibogela seno \n\nTlotlang mmogo gore seo se tsamaile jang:\n* Seno se dira gore o ikutlwe jang jaaka “motsadi” le jaaka “mosha”?\n* A go na le sengwe se o ka se dirang botoka?\n\nFa go kgonega, naya mongwe le mongwe tshono ya go nna “motsadi” yo re dirileng sekai ka ene le “mosha” yo re dirileng sekai ka ene. Go ikatisa go dira gore re kgone go fitlhelela dilo tse di molemo!", - "Examples of positive instructions:": "Dikai tsa go naya ditaelo o bua ka tsela e e siameng:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ke rata mmino o o o reetsang. A o ka o tima fa re ja maitseboa gore re kgone go tlotla? Ke a leboga – Ke itumelela seo thata. \n* Mmino oo o monate tota. Ke mang a e opelang? Ke kopa o time mmino fa o tsena mo ntlong. O ka o reetsa kwa phaposing ya gago fa o batla. Ke a leboga!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Tiro ya beke ya go ikatisa kwa gae ke go naya mosha wa gago ditaelo o bua ka tsela e e siameng.\n\nGakologelwa – BUA NNETE, BUA KA TSELA E E SIAMENG, ITLHALOSE SENTLE = TLHALOSA SENTLE GORE KE ENG SE O BATLANG SE DIRWA (ka tsela e o ka kgonang ka teng le mosha!)", - "We care about you, and how life is treating you.": "Re a go kgathalela, le kafa botshelo bo go tshwereng ka teng.", - "You are a star. And you are making a real difference. Be proud of yourself.": "O naledi. E bile o dira pharologanyo e kgolo. Nna motlotlo ka wena.", - "Sorry that things are not easy today. All parents have these days.": "Tshwarelo gore dilo di bokete gompieno. Batsadi botlhe ba na le malatsi a a ntseng jalo.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Tswala matlho a gago, goga mowa, o bo o itse gore sengwe le sengwe se o se dirileng se botlhokwa tota.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Lelapa lengwe le lengwe le lebana le dikgwetlho, mme fa re dira mmogo re ka kgona go lwa le mathata ka tsela e e atlegileng le e edileng. \n\nRuri ke bokgoni jo le mosha wa gago a ka bo ithutang!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga go rarabolola mathata. \n\nRotlhe re a itse gore mo botshelong go na le dinako tse re lebanang le mathata, e bile rotlhe re a itse ka tsela ya gore fa re iphitlhela re le mo boemong jono, go thata go akanya ka ditharabololo tse di siameng ka yone nako eo. \n\nKa jalo, go botlhokwa gore fa re lebane le mathata re eme go se kae, re heme, re ritibale re bo re akanya ka bokgoni jwa go rarabolola mathata bo re ka bo dirisang. \n\nGakologelwang gore re akaretseng le basha ba rona fa re rarabolola mathata. Seno se tla ba thusa gore ba nne le maikarabelo le go ithuta kafa ba ka rarabololang mathata a bone ka gone mo nakong e e tlang.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le motlotlo - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le go itshekatsheka - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "A re bone se se diragaletseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe fa @global.w_solve_teen_girl a ne a tshotse founo e e tswang kwa mosimaneng… founo!", - "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o tsaya kae selo seo?” \n\n @global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o e ntheketse. Ke founo e ntle, @global.w_solve_female_caregiver_1. E tsaya ditshwantsho tse dintle!”", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ga ke batle go bona selo seo se se jang madi a mantsi! Mosimane oo ga a siama! O akanya gore o tlile go e duela ka bokae?!” \n\n@global.w_solve_teen_girl: “Ga go dirwe jalo, @global.w_solve_female_caregiver_1! Ga o dire sentle!”", - "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ga ke batle go utlwa sepe!” \n\n@global.w_solve_teen_girl: “Ga o batle le go ntheetsa! Ga ke itse gore goreng ke leka go bua le wena!”", - "Take a few deep breaths to calm down, and": "Goga mowa ka makgetlo gore o ritibale, o bo o", - "KNOW IT": "A ITSE", - "Identify the problem.": "Lemoga mathata.", - "SOLVE IT": "A RARABOLOLE", - "Think of possible solutions and what would happen if we used them.": "Akanya ka ditharabololo tse di kgonegang le gore go ne go ka direga eng fa re ne re di dirisitse.", - "TRY IT": "E LEKE", - "Choose a solution and try it out.": "Tlhopha tharabololo o bo o e leka.", - "TEST IT": "E TLHATLHOBE", - "Did it work? Great! If it did not work, then try another solution.": "A e dirile? Go gontle! Fa e sa dira, jaanong o ka leka tharabololo e nngwe.", - "Let’s see how problem solving works in practice.": "A re bone kafa go rarabolola mathata go dirang ka teng fa go diragadiwa.", - "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 o tla gae go tswa tirong. \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ay dinaonyana tsa me! Ke tlhoka go nna fa fatshe nakonyana e be ke nwa kopi ya kofi pele ke simolola go baakanyetsa mongwe le mongwe dijo.”", - "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O dira eng? Borotho joo ke jwa dijo tsa maitseboa! Jaanong ga bo kitla bo re lekana rotlhe!”", - "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Tshwarelo, @global.w_solve_female_caregiver_2, ke ne ke tshwerwe ke tlala. Nka tlhalosa, wa bona, go na le mosimane mongwe kwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ema go se kae... hema...”", - "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Mphe nakonyana. Ke lapile e bile gone jaanong ke tshwenyegile ka go dira dijo tse di lekaneng tsa maitseboa.” \n\n@global.w_solve_teen_boy_2: “Ke kopa maitshwarelo, @global.w_solve_female_caregiver_2\"", - "Step 1: KNOW IT": "Kgato 1: A ITSE", - "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Jaanong mpolelele, goreng o tshwerwe ke tlala jaana? Ga o a ja dijo tsa gago tsa motshegare kwa sekolong?” \n\n@global.w_solve_teen_boy_2: “Ke jone bothata joo. Go na le mosimane kwa sekolong yo o nkgerisang. A re fa ke sa mo fe dijo tsa me tsa motshegare letsatsi le letsatsi, ene le ditsala tsa gagwe ba tlile go nkutlwisa botlhoko. O nkgalefisa tota!”", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi go utlwa ka seo mme ke itumelela gore o mpoleletse, @global.w_solve_teen_boy_2. Ga go reye gore o ka ja dijo tsa mongwe le mongwe tsa maitseboa. Fa re fetsa go bua, o tshwanetse go ya kwa lebentleleng o ye go reka borotho jo bongwe. Mme sa ntlha: O akanya gore re tshwanetse go dirang ka bothata jwa mosimane yo o kgerisang?\"\n\n@global.w_solve_teen_boy_2: “Ke batla go mo itaya kgotsa go ipusolosetsa.”", - "Step 2: SOLVE IT": "Kgato 2: A RARABOLOLE", - "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… o akanya gore go tlile go diregang fa o dira jalo?\"\n\n@global.w_solve_teen_boy_2: “Ga ke itse. O mogolo mo go nna ka jalo a ka nna a nkutlwisa botlhoko le go feta. E bile nka tsena mo mathateng kwa sekolong le go kobiwa.”", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ee, seo se ka direga. Jaanong go na le moo re ka go dirang?\"\n\n@global.w_solve_teen_boy_2: “Ke akanya gore ke bolelele morutabana. Mme bana ba bangwe ba tlile go mpitsa mpimpi. Gongwe wena o bue le morutabana?”", - "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Eo e utlwala jaaka kakanyo e e botoka. Gape nka bua le batsadi ba gagwe fa o batla ke dira jalo.\"\n\n@global.w_solve_teen_boy_2: “Ke a leboga. Fa o akanya gore seo se ka thusa le sone. Ke a leboga, @global.w_solve_female_caregiver_2\"", - "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ke direla wena, moratiwa. Ke tla e dira fela fa ke fetsa go ja dijo tsa maitseboa. E bile o a itse? Fa e le gore seo ga se dire, re ka leka se sengwe mmogo.”\n\n@global.w_solve_teen_boy_2: \"Ke a leboga, @global.w_solve_female_caregiver_2\"", - "Step 3: TRY IT": "Kgato 3: E LEKE", - "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Beke morago ga moo… \n\n@global.w_solve_female_caregiver_2: \"Dilo di tsamaya jang kwa sekolong jaanong?\"\n\n@global.w_solve_teen_boy_2: “Go botoka, mosimane ole ga a sa tlhole a ntseela dijo tsa me tsa motshegare. Mme o santse a sa ntseye sentle.”", - "Step 4: TEST IT": "Kgato 4: E TLHATLHOBE", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ke maswabi go utlwa seo, @global.w_solve_teen_boy_2. A ke kope malome wa gago gore a bue le batsadi ba gagwe? Fa e le gore seo ga se dire, re tla leka sengwe se sele!\"\n\n@global.w_solve_teen_boy_2: \"Ee, ke a leboga @global.w_solve_female_caregiver_2. Ke lebogela gore o nkeme nokeng.”", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Tlotlang mmogo: \n\n@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Gakologelwa @global.w_solve_teen_girl le founo e a e tsereng kwa mosimaneng?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "A re boele kwa go @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe re bone gore ba tlile ka tharabololo efe.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe ba tlile ka ditharabololo di le tharo.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Go tlhokomela basha go bokete tota. \n\nGantsi ga go na ditharabololo tse di motlhofo, mme jaanong @global.w_solve_female_caregiver_1 o ithutile gore a ka bua le morwadie ka ga dilo tseno. \n\nPele, o ne a tshwenyegile a le nosi, jaanong ba tlile ka ditharabololo ba le mmogo!", - "Ground @global.w_solve_teen_girl for a month": "@global.w_solve_teen_girl o nna mo gae kgwedi", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Ga o tle go tswela kwa ntle mo kgweding e e latelang”", - "That didn’t work... Let's try something else.": "Seo ga se a dira... A re leke sengwe se sele.", - "Return the phone and save up": "Busa founo o be o boloka madi", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Ga ke leke go latofatsa tsala ya gago kgotsa go nna lefufa. Ke tshwenyegile ka gore fa mongwe a go naya mpho go thata gore ‘nnyaa’ fa ba batla gore o ba duele ka sengwe - jaaka thobalano. Fa o batla go nna le founo, re tlile go boloka madi mmogo gore o kgone go itirela ditshwetso kwantle ga go mo kolota sepe.”", - "This is great! Try the third option as well.": "Ke selo se sentle! Leka le kakantsho ya boraro.", - "Learn about safe sex": "Ithute ka thobalano e e sireletsegileng", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Seno se ntira gore ke lemoge gore re tshwanetse go bua ka basimane le go itshireletsa. Basha ba dithaka tsa gago ba a ima kgotsa ba tshwarwa ke HIV. A reye kwa tliliniking gore o kgone go bua le mooki gore a go rute kafa o ka nnang o sireletsegile ka gone.”", - "This is great!": "Ke selo se sentle!", - "Let's practice problem-solving!": "A re ithute go rarabolola mathata!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ikatiseng mmogo ka mathata ao le nang le one gone jaanong. Mongwe wa lona ke motsadi o mongwe ke mosha. \n\nAkgolanang lo be lo rotletsana - re motlotlo ka lona! \n\nGakologelwa dikgato: \nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Ruta mosha wa gago ka dikgato di le nne tsa go rarabolola mathata:\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE \n\nDirisang dikgato tseno mmogo fa mathata a tlhagelela!\n\nFa go direga sengwe se se maswe, gantsi re a kgopisega e be re latofatsa mongwe. Mme se basha ba rona ba se tlhokang ke gore mongwe a ba thuse go batla ditharabololo mmogo. Ba reetse, amogela kafa ba bonang le kafa ba utlwang dilo ka gone, o bo o ba lebogela go go ikanya.\n\nFa o ruta basha ba gago kafa ba ka lwang le mathata ka gone go tla ba thusa botshelo jwa bone jotlhe. Ruri ke mpho!", - "Some problems other parents solved with their teens:": "Mathata mangwe a batsadi ba bangwe ba a rarabolotseng le basha ba bone:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Mosha wa me ga a batle go ya sekolong\n* Ke tshwenyegile ka gore mosha wa me o tla nna moimana kgotsa o tla imisa mongwe\n* Ke tshwenyegile ka ga se mosha wa me a se dirang mo inthaneteng\n* Mosha wa me o tsamaya le ditsala tse di sa siamang\n* Mosha wa me o motlapa\n* Mosha wa me ga a dire tiro ya gagwe ya sekolo\n* Mosha wa me a ka tswa a dirisa diokobatsi", - "Being a great parent also means taking time to care for yourself every day.": "Go nna motsadi yo o molemo gape go raya go nna le nako ya go itlhokomela malatsi otlhe.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Go gontle. E bile go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Go nna motsadi go bokete. Mme go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", - "Doing any of these makes you a great parent.": "Go dira dilo tseno tsotlhe go go dira motsadi yo o molemo.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Mosha a ka fetsa nako e ntsi a le kwa ntle kgotsa mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa. \n\nGo buisana mmogo ka mafelo a a sireletsegileng le a a sa sireletsegang, go thusa thata!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga tshireletsego ya basha. \n\nKe maikarabelo a batsadi go boloka basha ba bone ba sireletsegile ka dinako tsotlhe. Re tshwanetse go tlhomamisa gore basha ba rona ba sireletsegile mo lefelong le re nnang mo go lone. Ke maikarabelo a rona go dira gore ba itse mafelo a a sireletsegileng le a a sa sireletsegang a re nnang mo go one. \n\nGape ke maikaraelo a rona go tlhomamisa gore ba tlhaloganya dikotsi tse ba ka tsenang mo go tsone fa ba le mo inthaneteng. Ka tsela eo basha ba rona ba tla nna le maikarabelo le go kgona go dira ditshwetso tse di siameng gore le bone ba itshireletse.", - "Today you will explore:": "Gompieno o tlile go itse:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Kgang le go leba kwa morago - tse di dirileng!\n* Kgang le go leba kwa morago - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", - "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Puisano ke selo sa botlhokwa tota!\n\nA re boneng gore go diragetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", - "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Go diragetse sengwe fa ke tswile le ditsala tsa me @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Mpolelele, @global.w_safe_teen_girl_1\"", - "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Monna yo o mo koloing: “Dumela montlenyane. Ke ntse ke go lebeletse. O montle tota, leina la gago ke mang? \n\n@global.w_safe_teen_girl_2: “Leina la gagwe ke @global.w_safe_teen_girl_1”", - "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Monna yo o mo koloing: “@global.w_safe_teen_girl_1, a ga o batle go tsamaya le nna re ye go reka sengwe sa go nwa le ditšhipisi? Tlaya, tsena mo teng, o tla boa ka nako, ke a go tshepisa...” \n\n@global.w_safe_teen_girl_1: “Ga ke akanye gore ke kakanyo e ntle eo...”", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “O lesego, tsala ya me. Ke eletsa e kete monna a ka NKOPA gore ke tswe le ene a bo a nthekela dimpho. Ke a go bolelela, fa o sa dire jalo ke ya go bolelela batho botlhe gore o sematla!”", - "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 o seka wa tsamaya! Ikele tlhoko! A reye gae. Go kotsi go tsamaya le batho ba o sa ba itseng. Ntle le moo, o mogolo mo go wena e bile se a se dirang ga se a siama.\"\n\n@global.w_safe_teen_girl_1: “Tota ga ke itse...”", - "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Pfff, ke motlotlo ka wena gore ga o a tsena mo koloing. E ne e le boemo jo bo kotsi, ke lebogela gore o mpoleletse!”", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "A re bue ka se se diragaletseng @global.w_safe_teen_girl_1", - "Discuss together: \n\nWhat was risky about that situation?": "Tlotlang mmogo: \n\nBoemo joo bo ne bo le kotsi ka eng?", - "The situation was risky because...": "Boemo joo bo ne bo le kotsi ka gonne...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho \n* Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo kgothaletsa \n* Go tsamaya le monna yo mogolo mo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo \n* Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo \n* Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "A re akanye ka se se diragaletseng @global.w_safe_teen_girl_1:", - "What was risky about that situation?": "Boemo joo bo ne bo le kotsi ka eng?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho", - "@global.w_safe_teen_girl_1's friend was encouraging her": "Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo tlhotlheletsa", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Go tsamaya le monna yo mogolo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo", - "Many girls in our communities get pregnant or catch HIV from older men": "Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", - "All those things are true!": "Dilo tseo tsotlhe ke boammaaruri!", - "Let's look at another example of a dangerous situation together.": "A re lebe mmogo sekai se sengwe sa boemo jo bo kotsi.", - "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “Tsala ya me e ntse e bua le mosimane wa thaka ya rona mo inthaneteng... O tlile go mo romelela ditshwantsho tsa gagwe. A go botoka ka gonne ke thaka ya rona?”", - "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “O tsala e e molemo go bo o tshwenyegile ka ene. Go romela ditshwantsho o sa apara go kotsi tota.”", - "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Ka dinako tse dingwe batho ga ba nna jaaka ba bua mo inthanete - a ka nna a re ke thaka ya gago kante ke monna wa dingwaga tse 50. Kgotsa fa ba kgaogana, a ka nna a romela ditshwantsho tseo kwa bathong botlhe e be tsala ya gago e utlwa botlhoko.”", - "Let's talk about our teens' online safety.": "A re bue ka tshireletsego ya basha ba rona mo inthaneteng.", - "What are some of the online risks for teens these days?": "Ke dikotsi dife tse basha ba ka kopanang le tsone mo inthaneteng malatsi a?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano \n* Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe\n* Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye\n* Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa\n* Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", - "Let's think about our teens' online safety.": "A re akanye ka tshireletsego ya basha ba rona mo inthaneteng.", - "What is the biggest online risk for teens these days?": "Ke kotsi efe e basha ba ka kopanang le yone mo inthaneteng malatsi a?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!\n\nA re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa rona\n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng\n\nA re direng mmapa tseno jaanong re le setlhopha. \n\nO tla dira se se tshwanang ka basha ba gago e le ikatiso ya kwa gae mo bekeng eno.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Tlotlang mmogo:\n\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dira eng go boloka mosha wa gago a babalesegile?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n \n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Takang ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", - "Safety Plan": "Thulaganya ya Tshireletsego", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Nako le nako fa o rulaganya kgotsa o boloka thulaganyo ya tshireletsego, tobetsa @global.parent_point o bo o itumelela katlego ya gago!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "A re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le ao a sa babalesegang: \n* Mmapa wa motse wa rona \n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng \n\nLo tla dira se se tshwanang le mosha wa gago e le katiso ya legae mo bekeng eno - fa mosha wa gago a le fano ga jaana, lo ka dira seno mmogo gone jaanong!", - "My family can join in now!": "Lelapa la me le ka nna la tsena jaanong!", - "Let me try it out by myself": "Tla ke e leke ka bonna", - "Step 1: What are important places in your community?": "Kgato 1: Ke mafelo afe a a botlhokwa mo lefelong la lona?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka mmapa wa lefelo le mosha wa gago a nnang mo go lone, o o nang le ditshwantsho tsa mafelo otlhe a botlhokwa jaaka ditsela, ntlo ya gago, sekolo, mafelo a ngwana wa gago wa dingwaga tsa bosha a a etelang.", - "Step 2: Which places are safe and unsafe?": "Kgato 2: Ke mafelo afe a a sireletsegileng le a a sa sireletsegang?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Tlotlang mmogo:\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", - "Step 3: Where can you get support?": "Kgato 3: O ka bona tshegetso kae?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana. \n\nFa tlase go na le mafelo a a ka thusang", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng.\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", - "Step 4: What are risky places online and how can you make them safer?": "Kgato 4: Ke mafelo afe a a kotsi mo inthanete mme o ka a dira gore a sireletsege jang?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Lemoga kafa ba dirisang webo sentle ka teng! \n* Akanyang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", - "MAPS": "DIMMAPA", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Dira DIMMAPA le mosha wa gago ka mafelo a a sireletsegileng le ao a sa sireletsegang mo lefelong leo le nnang mo go lone le mo inthaneteng. Buang ka fa a ka bolokang tshedimosetso ya gagwe, ditshwantsho le dibidio e le khupamarama/sephiri mo inthaneteng ka gone. Buang ka ka fa selo se o se tsenyang gangwe mo inthaneteng, se nnang moo go ya go ile ka teng. Ba ka tswa ba itse sekai se se tswang kwa ditsaleng tsa bone.", - "RULES": "MELAO", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Dira MELAO le mosha wa gago ka tshireletsego ya go dirisa ditiriso le diwebosaete tse ba di ratang. \n\nA o gakologelwa kgang ka Tshireletsego ya Inthanete? E bone gape fano.", - "Online Safety Story": "Kgang ya Tshireletsego ya Inthanete", - "AMNESTY": "KGOLOLESEGO", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Dira tumalano ya KGOLOLESEGO. Fa go direga sengwe se se ba kgopisang, se se sa itumediseng kgotsa se se boifisang, ba ka nna ba bua le wena mme o ka nna wa se galefe kgotsa wa se ba otlhae, le fa ba ne ba dira sengwe se se phoso.\n\nA o gakologelwa kgang ka Tshireletsego ya Kgololesego? E bone gape fano.", - "Safety Amnesty Story": "Kgang ya Kgololesego ya Pabalesego", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Go tlhokomela bana ka dijithale go tshwana le fa o ba tlhokomela ka tsela ya mmatota. O tsere KGATO E KGOLO ya go boloka mosha wa gago a sireletsegile mo lefelong la lona le mo inthaneteng. Go go siametse!", - "Resources to help in the community": "Didiriswa tse di ka thusang mo lefelong la lona", - "Online Safety Resources": "Ditlamelwa Tsa Tshireletsego ya Inthanete", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Dirang dimmapa tse pedi mmogo le basha ba gago tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Fa lo sa dira seo mmogo ga jaana, dira dimmapa tse pedi le basha ba gago tsa mafelo a a sireletsegileng le a a sa sireletsegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", - "Safety Plan Activity": "Tiro ya Thulaganyo ya Tshireletsego", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Bontle! Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Re maswabi gore ke letsatsi le le bokete. Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re go akgole, mme o rulaganye tshegetso ya botsadi ya gago e e tlang.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re keteke le wena, mme o dire thulaganyo ya tshegetso ya gago ya @global.parent_app e e tlang.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Dumelang lotlhe.\n\nSetlhogo sa gompieno ke go keteka le dikgato tse di latelang.\n\nGo ntse go le monate tota, go ntse go le monate go nna le wena mo loetong leno. Gompieno re keteka loeto le re le tshotseng mmogo. \n\nGompieno re keteka tsotlhe tse re di ithutileng mo nako eno yotlhe.", - "Today you will celebrate, look back and look ahead:": "Gompieno o tla keteka, o lebe ko morago mme o lebe ko pele:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Leba kwa morago le go buisana\n* Didirisiwa: Kafa lo ka thusanang ka teng\nKOPANANG - LETSANG - MOLAETSA - BUANG\n* Go rulagaya tshegetso", - "Today you celebrate and reflect on your experiences.": "Gompieno o a keteka o bo o leba kwa morago mo maitemogelong a gago.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Wena le ba lelapa la gago lo ithutile go le go ntsi. A re akanyeng ka se se fetileng mme re bone gore go fetogile eng.", - "Reflect": "Akanya ka se o se dirang", - "Listen and reflect": "Reetsa le go akanya", - "Read and reflect": "Buisa o bo o akanye", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Tswala matlho o bo o iketle.\n\nAkanya ka botshelo jwa lelapa la gago pele ga o simolola leeto la gago ka app eno.\n \nAkanyetsa kwa morago ka bokgoni jo o bo ithutileng:\n* Go itlhokomela\n* Go ipha nako lo le mmogo\n* Kakgolo\n* Ditaelo tse di siameng\n* Go laola go tshwenyega mo maikutlong\n* Go dira tekanyetsokabo ya lelapa\n* Melao\n* Ditlamorago o ritibetse\n* Go rarabolola mathata\n* Pabalesego ya basha\n* Go dirisana le mathata a a masisi\n\nAkanya ka leeto le o le tsereng - o le bone le ntse jang:\n* Re bolelele megopolo ya gago le maitemogelo\n* Akanya ka dipolelo o bo o ithute mo go tsone\n* Ikatisetse bokgoni jwa gago le mosha wa gago\n\nA go na le sengwe se se fetogileng ka wena le ba lelapa la gago?\n\nO tlhokang gore o tswelele go dirisa bokgoni jwa gago?", - "Let's talk about what has changed.": "A re bue ka se se fetogileng.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Tlotlang mmogo:\n* Ke eng se se fetogileng mo lelapeng la gago?\n* Ke eng se o leng motlotlo ka sone se o se dirileng?\n\nGopolang go akgolana lo bo lo rotloetsane!", - "MEET": "KOPANANG", - "Keep meeting regularly to give each other parenting support.": "Nnnang lo kopana ka metlha go re lo neelane tshegetso ya botsadi.", - "CALL": "LETSANG", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Nnang ‘ditsala tsa batsadi’ go letsetsana fa lo sa itumela kgotsa o sa itse gore o dire eng.", - "TEXT": "MOLAETSA", - "Text each other every week to share what you’ve done well.": "Romelanang melaetsa beke le beke lo bolelana gore ke eng se lo se dirileng sentle.", - "SHARE": "BUANG", - "Share @global.parent_app and help other families start their journey.": "Bua ka @global.parent_app mme o thuse malapa a mangwe go simolola leeto la bone.", - "End of programme check-in": "Bofelo ba netefatso ya matseno a lenaneo", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "O ntse o dirisa @global.parent_app mo dikgweding tse fetileng, le fa go ntse jalo go godisa mosha ga go fele! Potso e e latelang ka maitemogelo a gago a go godisa ngwana go tla re thusa go sekaseka go godisa bana ga gago.\n\nBua nnete. Gopola gore dimilione tsa batsadi ba ikutlwa jaaka o ikutlwa, mme rotlhe re tshwanelwa ke go tshegediwa. Ga o esi!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "O bonala o fitlhile kwa bokhutlhong jwa netefatso ya matseno a lenaneo. O kannetse wa tlola tirwana ee.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Dirang thulaganyo gore lo tlile go tshegetsana jang go ya ko pele. \n\nLo ka dirisa dikakantsho tsa malapa a mangwe, kgotsa lo itireleng tsone!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Re motlotlo tota ka lona. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, binang mmogo mme lo keteke!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Re motlotlo tota ka wena. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, bina mme o keteke!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "O amogetswe! Go a itumedisa go nna le wena fano. Beke eno ke ka WENA. \n\nMo workshop eno ya kamogelo o tla: \n* Bona didirisiwa tsa go itlhokomela \n* Direla ditiriso malebana le ditlhoko tsa gago", - "Wonderful, I am so happy things are going well.": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Tshwarelo gore dilo di bokete jaanong. Go tlwaelegile gore go nne thata ka dinako dingwe. Gopola gore ga o nosi!", - "Why @data.workshop.w_self_care.short_title?": "Goreng @data.workshop.w_self_care.short_title?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Gantsi ga re nke re itlhokomela mo go lekaneng. Mme go botlhokwa gore re dire jalo, segolobogolo jaaka motsadi! \n\nGo fokotsa go nna le tshwenyega mo maikutlong le go itshwara sentle go tla thusa rona LE bana ba rona ba dingwaga tsa bosha.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se bua ka go itlhokomela. \n\nGo na le dinako tse re itemogelang dikgwetlho, tse re lebanang le mathata e bile re sa itse gore re dire eng. Go botlhokwa gore re itlhokomele le go itse ditsela tsa ka fa re ka ritibalang ka gone fa re lebane le mathata, dikgwetlho kgotsa fa go tsoga mathata. \n\nFa re ritibetse re mo boemong jo bo siameng jwa go akanya sentle le go tla ka ditharabololo tse di tshwanetseng mo dikgwetlhong dingwe le dingwe tseo re lebaneng le tsone.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Gompieno o tlile go itemogela ditiro tse 3 tse di ka go thusang go itlhokomela, e bile re tlile go go botsa\ndipotso di le mmalwa go tlhomamisa gore a tiriso e go tshwanetse.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Tiro ya go iketla\n* Tiro ya go lemoga\n* Tiro ya go ituela\n* Didirisiwa: Tsela ya go tsenya lenaane la go itlhokomela\n* Dira gore tiriso e go tshwanele\n * Dikakantsho tsa katiso ya legae", - "Let's try it out and do a short relaxation activity together!": "A re e leke le go dira tiro e khutshwane ya go iketla mmogo!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Re le batsadi, gantsi ga re na nako ya go itlhokomela - mme go botlhokwa thata go dira jalo! Go fokotsa kgatelelo ya maikutlo a rona LE a bana ba rona ba dingwaga tsa bosha. \n\nA re tseye kgato ya ntlha re be re dira tiro e khutshwane ya go iketla mmogo.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Go tlhokomela se re se dirang sentle go re thusa gore re tlhome mogopolo mo dilong tse di siameng. \n\nA re diriseng nako eno gore re ikakgole. Re tla go bontsha gore jang.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.\n\nSe bolelele ba bangwe ka lentswe le le kwa godimo: “Ke ikakgolela...”\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", - "Recognise": "Lemoga", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Tsaya nako gore o ikakgole. \n\nJaanong re tla go bontsha gore o dire jang.", - "Think of one thing YOU have done well recently.": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.", - "\"Well done to me for...\"": "“Ke ikakgolela...”", - "Showing love to my children": "Go bontsha banake lorato", - "Getting up even though I felt tired": "Go tsoga le fa ke ikutlwa ke lapile", - "Smiling at someone": "Go nyenya le mongwe", - "Making food to stay strong": "Go dira dijo gore ke nne ke nonofile", - "Spending time with my children": "Go fetsa nako ke na le banake", - "Helping my children with schoolwork": "Go thusa banake ka tiro ya sekolo", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Buela kwa godimo fa o kgona.\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", - "Well done! Try to do this every day.": "O dirile sentle! Leka go dira seno letsatsi le letsatsi.", - "Things to praise yourself for:": "Dilo tse o ka di ikakgolelang:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Go bontsha banake lorato \n* Go tsoga le fa ke ikutlwa ke lapile \n* Go nyenya le mongwe \n* Go dira dijo gore ke nne ke nonofile \n* Go fetsa nako ke na le banake \n* Go thusa banake ka tiro ya sekolo", - "Have a hot drink": "Nwa seno se se bolelo", - "Call a friend or relative": "Leletsa tsala kgotsa wa losika", - "Have a relaxing bath": "Iketle mo bateng e e tlhapelang", - "Read": "Buisa", - "Watch TV": "Bogela TV", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana. Abelana le ba bangwe:\n\nKe dilo dife tse dinnye tse di dirang gore ke itumele?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Leka go dira sengwe go ituela letsatsi le letsatsi.\n\nO ka nna wa dirisa bokgoni jono kwa gae le go di bona nako nngwe le nngwe mo @global.parent_centre ya gago!", - "Reward": "Tuelo", - "We all deserve to treat ourselves well!": "Rotlhe re tlhoka go itshwara sentle!", - "What small thing makes you happy?": "Ke dilo dife tse dinnye tse di dirang gore o itumele?", - "Nice! Taking care of yourself is an important parenting skill!": "Bontle! Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_1 kgotsa sengwe fela se sele se o se itumelelang.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_2 kgotsa sengwe fela se sele se o se itumelelang.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_3 kgotsa sengwe fela se sele se o se itumelelang.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_4 kgotsa sengwe fela se sele se o se itumelelang.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_5 kgotsa sengwe fela se sele se o se itumelelang.", - "Things you can do to reward yourself:": "Dilo tse o ka di dirang go ituela:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Nwa seno se se bolelo \n* Leletsa tsala kgotsa losika \n* Iketle mo bateng e e tlhapelang \n* Buisa\n* Bogela TV", - "RELAX": "IKETLE", - "Do a 30 second quick relaxation activity.": "Dira tiro ya ka bonako ya metsotswana e le 30 ya go iketla.", - "RECOGNISE": "LEMOGA", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Tsaya nako o bo o akanya ka selo se le sengwe se O se dirileng morago jaana se o se dirileng bontle thata! Buela kwa godimo fa o kgona “Ke ikakgolela ...”", - "REWARD": "TUELO", - "Remember you deserve your quality time too! What makes you happy?": "Gakologelwa gore le wena o tlhoka nako ya go iketla! Ke eng se se dirang gore o itumele?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Jaanong ka gore re agile bokgoni jwa go itlhokomela, a re tlhomamise gore @global.weekly_workshops tsa gago di a go tshwanela sentle.", - "You seem to have completed the customisation process already. You can now skip this activity.": "Go bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse o di batlang. O ka nna wa tlola tiro eno.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Nako e o kgonang ka yone, iketle, lemoga o bo o ituela. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", - "Relax activity": "Tiro ya go iketla", - "Recognise activity": "Tiro ya go lemoga", - "Reward activity": "Tiro ya go ituela", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Nako le nako fa o iketla, o gakologelwa sengwe se o se dirileng sentle kgotsa o ituela, tobetsa @global.parent_points go itumelela katlego ya gago!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "O feleleditse workshop ya beke eno.\n\nRe tlile go dira ditiro dingwe tsa go itlhokomela gape fa lo kopana mmogo e le la ntlha le setlhopha sa lona - lotlhe lo tlhoka go nna le nako e e oketsegileng ya go itlhokomela!", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Dumela @field.user_name! Re a go akgola gore o simolotse @global.parent_app beke ya bo 5.\n\nWorkshop ya botsadi e ntšha e go emetse ka dikakantsho tsa gore re ka nna jang re kgobile makgwafo le go itshwara fa basha ba rona ba batla go re tsentsha.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Dumela @field.group_name! Re a go akgola gore o simolotse @global.parent_app beke ya bo 5.\n\nWorkshop ya botsadi e ntšha e go emetse ka dikakantsho tsa gore re ka nna jang re kgobile makgwafo le go itshwara fa basha ba rona ba batla go re tsentsha.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Re na le workshop e ntšha e e gone go go thusa ka ga go laola kgalefo le go tshwenyega mo maikutlong. E tla go thusa go itlhokomela botoka.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile? O dirile sentle go lemoga gore wena le ba bangwe lo ne lo ikutlwa jang gompieno! Mme gopola, kamoso ke letsatsi le lesha.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Rotlhe re ikutlwa re imetswe ka dinako dingwe. Go hemela ko teng go ka thusa! \n\nFeleletsa @local.workshop_data.in_text_title go iponela didiriswa tse di mosola tsa go lepalepana le go tshwenyega mo maikutlong.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Go tshwenyega mo maikutlong ga gago go ne go ntse jang beke eno? Leka go hemela ko teng makgetlo a le mmalwa pele o araba mosha wa gago - go dira pharologanyo e kgolo.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "O dirile sentle ka go hema thata pele o araba mosha wa gago! Nako le nako fa o ema go se kae, o kgona go itshwara.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nKa go fetsa @local.workshop_data.in_text_title ya ntlha, o thaya motheo wa botlhokwa tota: Fa o ikutlwa o itumetse, balelapa la gago le bone ba tla dira botoka!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "O dirile sentle go fetsa eno @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa le go nna le bokgoni jo bo nang le mosola!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @field.user_name! Gompieno re keteka kgwedi tse pedi o dirisa @global.parent_app! \n\nO dira sentle! Workshop ya beke eno e go thusa go itse gore o tshwanetse go dira eng fa mosha wa gago a sa latele melao ya mo gae.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @field.group_name! Gompieno re keteka kgwedi tse pedi o dirisa @global.parent_app! \n\nO dira sentle! Workshop ya beke eno e go thusa go itse gore o tshwanetse go dira eng fa mosha wa gago a sa latele melao ya mo gae.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Go gontle gore o ntse o dirisa @global.parent_app. O setse o iponetse didiriswa tse 6 tsa go nna motsadi! \n\nDira workshop e e latelang go iponela sedirisiwa se se nngwe sa go nna motsadi!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Feleletsa workshop mme o leke go buisana le mosha wa gago go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro lo le mmogo.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "A o setse o kgonne go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro jwa mosha wa gago?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Fa go nna le maemo a a ritibetseng kwa morago seno se thusa mosha go latela ditaelo sentle – e leke pele ga o tswelela!\n\nO dirile sentle go bontsha maikemisetso a a kalo ka ba lelapa la gago.", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @field.user_name! Re a go akgola gore o simolotse beke ya gago ya @field.user_name ya boraro. \n\nWorkshop e ntšha e go emetse! A o kgona go bona gore setlhogo sa beke eno ke eng go tswa mo setshwantshong seno?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @field.group_name! Re a go akgola gore o simolotse beke ya gago ya @field.user_name ya boraro. \n\nWorkshop e ntšha e go emetse! A o kgona go bona gore setlhogo sa beke eno ke eng go tswa mo setshwantshong seno?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "O dirile sentle ka go dirisa @global.parent_app! Gopola gore ke dilo tse dinnye tse di dirang pharologanyo e kgolo.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Re lebogela gore o bo o dirisitse @global.parent_app go beeletsa mo go wena le lelapa la gago.\n\nLeka @local.workshop_data.in_text_title mme o kgone go nna le bokgoni jo bo siameng thata jwa go godisa bana!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Go akgola go dira pharologanyo. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone kafa O ka dirisang kakgolo ka teng mo lelapeng la gago.", - "Praise time!": "Nako ya go akgola!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Fa o bona mosha wa gago, mo akgole ka sengwe se se molemo se a se dirang sentle! \n\nKe leng la bofelo fa o ne o ikakgola kgotsa o akgola mogolo mongwe mo lelapeng la gago? Go leke!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "O dirile sentle thata ka go fetsa @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha. E leke - o tla bona pharoganyo mo tseleng e mosha wa gago a itshwarang ka yone.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @field.user_name! Re a go akgola gore o simolotse @global.parent_app ya beke ya bo 4. \n\nWorkshop ya beke eno e ka ga gore o ka oketsa jang ditshono tsa gago tsa go dira gore mosha wa gago a dire se o mo kopang gore a se dire.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @field.group_name! Re a go akgola gore o simolotse @global.parent_app ya beke ya bo 4. \n\nWorkshop ya beke eno e kaga gore o ka oketsa jang ditshono tsa gago tsa go dira gore mosha wa gago a dire se o mo kopang gore a se dire.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Bua sentle le wena o ipolelele gore o dira tiro e e molemo. Ga gona selo se se jaaka motsadi yo o itekanetseng, mme re akanya gore o dira sentle!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Gaise o tshwae sepe go @data.habit.instruct_positively.title @global.parent_points.\n\nE leke gompieno!", - "Well done!": "O dirile sentle!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe – go rialo o gatela pele sentle tota.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "O setse o tshwaile go @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - o dira tswelopele e ntle.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "A mosha wa gago o nna a go reetsa? Fa go se jalo (jaaka bontsi jwa rona), leba workshop ya beke eno go ithuta ka fa go naya ditaelo tse di siameng go ka thusang ka teng - thata.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Ditaelo tse di siameng di thusa go bona boitshwaro jo bo molemo ga ntsintsi! \n\nFeleletsa @local.workshop_data.in_text_title go bona dikakantsho tsa gore seno se ka dira jang mo lelapeng la gago.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Kamoso, o ka kgona go tsena mo workshop e ntšha. E tla go thusa go dira workshop ya pele ga eno. \n\nBatsadi ba bangwe ba dirisa app eno fa ba le mo tseleng ya go ya tirong. Ke ka ntlha ya eng o sa dirise app eno fa o na le metsotsonyana e le mmalwa? \n\nRe leboga gape gore o dirisitse @global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, go tla bo go na le workshop e ntšha e o tshwanetseng go e dira: o tla bona pharologanyo e kgolo ka go dira diphetogo tse dinnye!", - "First @global.weekly_workshop!": "Sa Ntlha @global.weekly_workshop!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.user_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.group_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Go ipha nako le mosha wa gago go thusa go aga go tshepana magareng ga lona. \n\nTswelapele ka @global.parent_app ya gago ya mosepele jaanong - wena le lelapa la gago lo tla bona dipholo tse dintle.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Re lebogela go bo o lekile thata go nna motsadi yo o botoka. O a ratiwa e bile oa anaanelwa!", - "Have you spent time with your teen already?": "A o setse o iphile nako le mosha wa gago?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\n@local.workshop_data.in_text_title ya gago e setse e go letile!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Ga go na go tsaya nako e telele, mme o tla bona tshedimosetso ya botlhokwa. \n\nO dirile sentle go leka go nna motsadi yo o botoka. Kamoso, o ka kgona go tsena mo workshop e ntšha.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O dirile sentle go fetsa @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa, go itumelela le go ithuta go nna le bokgoni jo bosha!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @field.user_name! Mathata a ka tlhagela mongwe le mongwe - go ipaakanya go thusa tota. \n\nWorkshop eno e tla go bontsha gore jang.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @field.group_name! Mathata a ka tlhagela mongwe le mongwe - go ipaakanya go thusa tota. \n\nWorkshop eno e tla go bontsha gore jang.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "O ikemiseditse go nna motsadi. Nna motlotlo ka wena - seno ke phitlhelelo e kgolo ka bo yone!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ga re itse mathata a ka tlhaga leng, mme re ka KGONA go ipaakanya! \n\nSimolola workshop ya gago e e latelang go bona gore o ka dira seno jang mmogo le mosha wa gago.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Go molemo gore o na le rona mo loetong leno la go nna motsadi! \n\nFeleletsa @local.workshop_data.in_text_title mme o ithute tsela e e molemo go tsiboga fa mosha wa gago a go tlhoka thata.", - "Have you discussed with your teen what you would do in a crisis situation?": "A o kile wa buisana le mosha wa gago gore lo tla dira eng fa go tlhaga mathata?", - "Crisis Examples": "Dikai tsa Mathata", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kamoso go tla bo go na le workshop @global.parent_app ya bofelo e o ka e dirang. \n\nLeka go e dira @local.workshop_data.in_text_title pele ga o simolola workshop e ntšha. Fa o dira jalo, o ka kgona go dira dithulaganyo tsotlhe tsa bokgoni jwa go godisa bana le go dira tshwetso ya se o batlang go se dira morago ga tsone!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "O dirile sentle ka go fetsa @local.workshop_data.in_text_title. Kamoso, o ka kgona go tsena mo workshop ya bofelo ya go akanya ka loeto lwa @global.parent_app la gago le se o ka se dirang mo nakong e e tlang!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @field.user_name! O gaufi le go fetsa di-workshop tsa gago tsa @global.parent_app! Re leboga gape go bo o ikemiseditse ka nako e telele. \n\nWorkshop ya beke eno e kaga go boloka mosha wa rona a sireletsegile, ka bobedi mo mafaratlhatlheng le mo tikologong. E Itumelele!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @field.group_name! Lotlhe lo gaufi le go fetsa di-workshop tsa lona tse @global.parent_app! Re leboga gape go bo o ikemiseditse ka nako e telele. \n\nWorkshop ya beke eno e kaga go boloka mosha wa rona a sireletsegile, ka bobedi mo mafaratlhatlheng le mo tikologong. E Itumelele!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Eno e nnile nako e bokete thata ya go nna motsadi. O tshwanetse go nna motlotlo ka sengwe le sengwe se o se dirileng. \n\nAkanya ka nako yotlhe e o dirileng gore mosha wa gago a nyebe ka yone le tlhokomelo yotlhe e o mo neileng yone. Batsadi ba a gakgamatsa, le wena wa gakgamatsa!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "O setse o kgonne go ithuta bokgoni jo bontsi jwa go godisa bana mo dibekeng tse di fetileng!\n\nFeleletsa workshop e e latelang go iponela sedirisiwa se se nngwe.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Go boloka mosha wa gago a sireletsegile, go a thusa go tlotla le bone ka tikologo ya gago le maitemogelo a bone a mafaratlhatlha. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone gore o ka dira seno!", - "Have you talked with your teen about safety measures?": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Go dira thulaganyo le mosha wa gago go ka thusa go thibela mathata a le mantsi - leka go dira jalo pele go o tswelela!\n\nO dirile sentle go dirisa @global.parent_app go tshegetsa balelapa la gago.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Re a go akgola, o feditse @local.workshop_data.in_text_title. Kamoso, go tla bo go na le workshop e ntšha ya go thusa wena le balelapa la gago go dirisana le seemo sepe fela – fa le dira mmogo le ka kgona go dira go le gontsi thata!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Dumela @field.user_name! O dira kgatelopele e ntle tota mo loetong lwa gago lwa botsadi! \n\nGo nna le mosha go raya go nna le mathata a a sa lebelelwang a o tshwanetseng go lepalepana le one. Workshop eno e tla go bontsha gore o lepalepane le one jang.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @field.group_name! O dira kgatelopele e ntle tota mo loetong lwa gago lwa botsadi!\n\nGo nna le mosha go raya go nna le mathata a a sa lebelelwang a o tshwanetseng go lepalepana le one. Workshop eno e tla lo bontsha lotlhe gore lo lepalepane jang le one.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Go ikemisetsa ga gago go rotloetsa mongwe le mongwe. Kgoba makgwafo mme o tswelepele!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Ka basha, le mo botshelong, mathata a a sa lebelelwang a nna gone mme re tshwanetse go lepalepana le one. \n\nSimolola workshop e e latelang go ithuta gore o ka samagana jang le mathata ano ka katlego.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "O mo tseleng e e siameng ya go simolola go rarabolola mathata mmogo le mosha wa gago! \n\nFeleletsa @local.workshop_data.in_text_title mme o iponele bokgoni jo bongwe jwa botlhokwa jwa go godisa bana!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "A o setse o lekile dikgato tse nne tsa go rarabolola bothata le mosha wa gago? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go e fetsa @global.parent_app pele ga o simolola workshop e ntšha. Go itse go rarabolola mathata a lona mmogo go tla thusa mo maemong a le mantsi!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go go thusa go boloka mosha wa gago a sireletsegile.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @field.user_name! Beke e ntšha, workshop e ntšha! Ithute go baya melao ya mo gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e latele.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @field.group_name! Beke e ntšha, workshop e ntšha! Ithute go baya melao ya mo gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e latele.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ka dinako tse dingwe go utlwala e kete basha ba gago ba santse ba sa itumela le fa o lekile ka moo o kgonang ka gone. Gopola gore o dira tiro e ntle, le gore go tlile go nna le dinako tse di monate le bone!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Re lebogela gore o dirisitse @global.parent_app le go ikemisetsa go tsaya loeto lwa gago lwa go nna motsadi. \n\n@local.workshop_data.in_text_title e tla go bontsha kafa o tshwanetseng go tlhoma melao ka teng ka tsela e e tla thusang mosha wa gago go e tlhaloganya le go e latela botoka.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "O gaufi le go nna le sedirisiwa sengwe sa botsadi! Feleletsa @local.workshop_data.in_text_title, baya molao o le MONGWE o o motlhofo le o o ka kgonang go latelwa le mosha wa gago, mme o bone dilo di fetoga!", - "Have you managed to set a rule together with your teen?": "A o kgonne go baya molao mmogo le mosha wa gago?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go fetsa @global.parent_app pele ga o simolola workshop e ntšha. Ga e kitla e tsaya nako e telele mme e tla thusa mosha wa gago go latela melao botoka!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, workshop e ntšha e tla go thusa go itse gore ke leng basha ba bontsha maitshwaro a a maswe (kgotsa a a molemo)!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @field.user_name! O simolola kgwedi ya bobedi o dirisa @global.parent_app. Bontle! \n\nMalapa a mantsi a kgaratlha ka dikgang tsa madi, ka jalo, workshop ya beke eno e tla go naya sedirisiwa se se tla go thusang go rulaganya ditshenyegelo tsa gago gore o nne le madi a a lekaneng go go tsweledisa le kgwedi.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @field.group_name! O simolola kgwedi ya bobedi o dirisa @global.parent_app. Bontle! \n\nMalapa a mantsi a kgaratlha ka dikgang tsa madi, ka jalo, workshop ya beke eno e tla go naya sedirisiwa se se tla go thusang go rulaganya ditshenyegelo tsa gago gore o nne le madi a a lekaneng go go tsweledisa le kgwedi.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "A o ikutlwa o tshwenyegile mo maikutlong ka ntlha ya madi? A mosha wa gago o nna a kopa dilo tse o sa kgoneng go di reka? \n\nWorkshop ya beke eno e bua ka madi le ditekanyetsokabo.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Fa o ikutlwa o le nosi kgotsa o imelwa, itse gore ga o nosi. Go nale batsadi mo lefatsheng ka bophara ba ba kgaratlhang jaaka o kgaratlha. \n\nO dira bojotlhe jwa gago letsatsi le letsatsi mme re a go akgola!", - "Have you talked with your teen about your family budget yet?": "A o setse o buile le mosha wa gago ka go tekanyetsokabo ya lelapa la gago?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Go akaretsa lelapa la gago ka ga gore o dirisa jang madi go ka dira gore o efoge go tshwenyega thata mo maikutlong le dikgotlhang. \n\nFetsa @local.workshop_data.in_text_title gore o kgone go thusa balelapa la gago ka go dira tekanyetsokabo le go boloka madi. Tota go motlhofo - o tla bona!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Batsadi ba le bantsi ba boletse gore go dira tekanyetsokabo go ne ga dira gore go nne le kagiso mo lelapeng - le wena go ka go direla jalo.\n\nRe santse re go lebogela go nna motsadi yo o ikemiseditseng.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go thusa go tlhoma melao ya lelapa e e dirang.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Gopola – beke eno ke kaga WENA! Re solofela o itlhokomela sentle. O tshwanelwa ke seno!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Siimolola workshop e ntšha ya @global.parent_app gotlhelele kamoso. O tla bona dipholo tse di molemo!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "A o setse o boleletse molekane wa gago @global.parent_app kaga sediriso? Go simolola kamoso, o ka simolola go dira di-workshop tsa @global.parent_app mmogo!", - "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Go latlhegelwa ke tsala kgotsa mongwe yo o mo ratang go boima. Go se ikgatelele le go dira dilo tse di go thusang go kgotlhelela mo nakong e e boima go ka thusa le mosha wa gago.", - "Find a support group": "Batla setlhopha-tshegetso", - "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Kutlobotlhoko e ka re ama dibeke kgotsa dikgwedi kgotsa dingwaga. Ga go tlhokege gore o ikutlwe botoka ka potlako.\n- Bona dijo le go robala go go lekaneng. Go boima go tlhokomela basha o lapile ebile o tshwere ke tlala.\n- Kwala dilo tse di dirang gore o ikutlwe o le botoka mme o di dire.\n- Leka go dire selo se le sengwe se se bonolo go iketla le mosha wa gago ka letsatsi, mme o itirele le wena.\n- Go siame go se ikutlwe sentle mme go siame go lela. O seke wa ikatlhola, ga se phoso ya gago.\n- Go phela go na le tsholofela le morgago ga tatlhego. Leka go kgatlhegela dilo tse di bonolo, mme o tseye motsostso go dira sengwe sa go itumedisa le mosha wa gago.\n- Batla motho yo mogolo a le mongwe kgotsa ba ba bedi ba ba ka go tshegetsang, utlwelela, le go bua le bona.", - "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Go bua le mongwe yo a ka kgonang go go tshegetsa le go go reetsa go ka go thusa. \n- Go ka thusa go tsena mo setlhopeng sa batho ba ba kileng ba latlhegela ke mongwe.\n- Ga go na motho yo a senang diphoso. Go siame go bua ka dinako tse dintle le tse di bosula.", - "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Basha ba mekamekana le tatlhegelo ka tsela tse di farologaneng jaaka bagolo. O ka ba thusa go tlhaloganya seemo le maikutlo a bona ka go dira lefelo le le babalesegileng mo le ka buang le go amogela teng.", - "Be honest": "Nna le nnete", - "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Bolela mosha wa gago gore mongwe o tlhokafetse- nako nngwe ga ba temogele.\n- Go bolelela mongwe ke thulaganyo, eseng tiragalo. O ka tshwanele ke go ba bolelela gape le gape.\n- Dirisa mafoko a ba a tlhaloganyang.\n- fa basha ba bannye ba sa tlhaloganye gore leso ke eng, thusa ka go ba tlholesetsa gore motho yo ba mo ratang ga a sa boa. leka go se e bitse 'go robala' kgotsa 'leeto'.\nBasha ba bagolo ba ka tlhaloganya gore leso ke eng, gongwe ba ka palelwa ke go abelana kgotsa go amogela maikutlo a bona.\n- Basha ba ka fetola ka tsela tse di farologaneng. Go lela, go dira modumo, go se dumela kgotsa go didimala gotlhelele. tsotslhe tse di siame. Ba bolele gore o na le bona.\n- Letlelela dipotso le go buisana. Nna le nnete. Go siame gore ga re itse.", - "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "- Basha ba ka nna le bohutsana, go selekega, go se tlhalognaye kgotsa go se dumele, go swa bokidi, go bobola kgotsa go nna le ditlhabi, ditoro tsa poifo kgotsa mathata kwa sekolong. Mosha wa gago a ka bontsha a itumetse mme a hutsafetse. Ba ka ikgogela morago mme ba nna le nako e ntsi le ditsala. ba ka bontsha le maitsholo a a sa tlwaelegang kgotsa a a kotsi. Se se ka tswa se sa dire tlhaloganyo mo go wena, mme tsotslhe tse di tlwaelegile.\n-Basha ba ka ikutlwa okare ke ohoso ya bona- gongwe ba ba tshetse ka mogare kgotsa ba ne ba sa itshola sentle. Gatelela gore ga go phoso e ba e dirileng.", - "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Tlhalosa gore tatlhegelo e tla le maikutlo le ditlhagiso. Bontsha basha ba gago gore ba ratiwa le gore ba tlhokomelegile, mme o ba rotloetse go neelana ka maikutlo a bona ka go bua,go kwala kgotsa go thala.\n- Fa go na le setlhopa sa tshegetso se mosha wa gago a ka nnang karolo ya sona, seno se ka thusa.\n- Fa mosha a bua ka go ikutwisa botlhoko kgotsa go ipolaya, kopa thuso go tswa go mongwe ka potlako.\n- Fa o ka kgona, dira mekgwatlwaelo ya lona ya letsatsi, seno se ka gomotsa basha.\n- Go ka thusa basha go nna karolo ya tirelo tsa setso tse di tsamaisang le leso - go tlhopa pina kgotsa go bua sengwe.\n- Go fetsa metsotso e mmalwa ka letsatsi o lebane le mosha wa gago go ka mo thusa gore a ikutlwe a bolokesegile le go nna le nako ya go iketla kgotsa go bua ka dilo tse di mo tshwenyang.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Go latlhegelwa ke mongwe yo o mo ratang go ka tlisa maikutlo a bokete. Fano ke dintlha tse mmalwa tse di ka thuang go nna mo monaganong.", - "Ask for help": "Kopa thuso", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Kopa mongwe yo o mo tshepang thuso- dijo kgotsa tlhokomelo ya bana e ka thusa. O ka tlhoka ditokomane go lefa, bana kgotsa tetlelesego ya tirelo.\n-Nako nngwe batho ba leka go tsaya madi kgotsa lefa la motho yo o mo kutlobotlhokong. Batlisistsa ka ditokelo tsa gago.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "-Go laela go boima. Dira se se siametseng wena le mosha wa gago.\n- Malapa,basha le batsadi ba na le diphoso. Fa mongwe a tlhokofetse, go siame go bua ka dilo tse dintle le tse di bosula tse re di gopolang.\n- Go ka thusa go kwalela moswi lekwalo kgotsa go mo direla setshwantsho.\n- Bangwe ba dira tirelo kgotsa dijo tse di rileng go keteka moswi le go mo laela.\n- Go ka thusa go dira lebokoso la megopolo,go baya dilo tse gopotsang wena le mosha wa gago ka ene.\n- Go ka thusa go bua ka motho yoo fa o mo naganne.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Kwa bokhutlong jwa letsatsi, iphe motsotso wa go: \n\n* Bua le mosha wa gago ka selo se le nosi sa go ijesa monate ka seo ba se dirileng. \n* Ikakgole fa o dirile sengwe se le nosi se sentle gompieno. \n* O naledi!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Botsanang gore, “Ke eng se se go itumedisitseng gompieno?”\n* Botsanang gore, “Ke bothata bofe jo o kopaneng le jone gompieno?”\n* Botsanang gore, “Nka go thusa jang?”\n* Lekang go dira seno mmogo letsatsi le letsatsi; e ka nna ka nako ya fa lo ja dijo tsa maitseboa mmogo kgotsa pele ga lo ya go robala.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Ga go kgonege gore o nne o ntse o tsere loeto, mme o ka nna wa lora ka metlha! Botsa mosha wa gago dipotso tseno:\n* O ka rata go tsaya loeto lwa go ya kae? Wa go tsamaya lobaka lo lo kae? O ka paka eng? O ka dira eng mo loetong lwa gago? O tla bona eng?\n* Lebelelang mmapa mmogo kgotsa lo o thale. \n * Tlhopha naga e mosha wa gago a iseng a e utlwalele mme lo ithute go le gontsi ka naga eo.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena le mosha wa gago lo ka rulaganya lenaane la baeng la batho ba ba itsegeng ba o ka ratang ba nne gone ko moletlong wa gago. Mongwe le mongwe wa lona a ka nna le batho ba le batlhano – e ka nna ba kgale kgotsa ba metlha ya gompieno. O ka laletsa mang? Le gore a baeng ba gago ba tla utlwana?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Akanya ka dipolelwana tse tharo ka ga wena. Tse pedi di tshwanetse go nna tsa nnete mme e nngwe e nne ya maaka.\n* Go ka nna ga thusa go akanya ka dikeletso, ditoro, maitemogelo a ko sekolong, tse di rategang kgotsa tse di sa rategeng. Sekai: Ke tlhoile dipanana, serutwa se ke se ratang ke saense, mme ke eletsa e kete nkabo ke kgona go opela. \n* Di bolelele mosha wa gago mme o ba kope go fopholetsa gore ke efe e e leng maaka. \n* A ba fopholeditse ka nepo? A o ne o maketse?\n* Jaanong ba kope ba dire se se tshwanang. A lo ithutile sengwe se sesha ka yo mongwe?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Bolelela mosha wa gago sengwe sa fa o ne o le mosha. Ke dilo di feng tse di neng di seo ka nako eo? Difouno tse di nang le inthanete? O ne o dirang go ijesa monate? O ne o tshwenyegile ka eng? O seka wa tshwenyega fa ba sa go bolelele sepe fa o botsa – sa botlhokwa ke gore ba reetse mme ba gopole. Nako tse dingwe basha ba rona ba lebala gore batsadi ba bone le bone ke batho!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Akanya ka maatla a a sa tlwaelegang. Sekai, go ya gongwe fela ka ponyo ya leitlho, go busetsa nako morago, go buisa megopolo. \n* Botsa mosha wa gago jaana, “Fa o ka bo o na le maatla a a sa tlwaelegang a go […], o ne o tla a dirisa jang?”\n* Ba kgothaletse go taya maatla a bone a a sa tlwaelegang leina le go a diragatsa. \n* Jaanong letla mosha wa gago go go tlhophela maatla a a sa tlwaelegang.\n* Netefatsa gore o diragatsa maatla a gago a a sa tlwaelegang, le wena!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Nna le puisano le mosha wa gago ka selo se ba se ratang.\n\nE ka nna sengwe le sengwe se ba tlhophang go bua ka sone: metshameko, ditsala, mmino, batho ba ba tumileng...\n\nLeka go reetsa mosha wa gago mme o mo neele sebaka sa go bua.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Tlhopha moanedi wa polelo go simolola go itlhamela polelo\n* Bareetsi ba polelo ba ka nna ba go tsena ganong ka lefoko ka nako epe fela.\n* Moanedi wa polelo o tlhoka go tsenyeletsa lefoko leo mo polelong ya gagwe.\n* Fa polelo e fedile, leka moanedi wa polelo yo o farologaneng!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Akanya ka maemo a mararo a a sa tshwaneng. Sekai, go kgweetsa koloi, go kgweetsa mokoro kgotsa go fofisa sefofane.\n* Di bolelele mosha wa gago o bo o mmotsa gore, “Ke efe e o ka e ratang?”\n* Ba botse gore goreng?\n* Jaanong akanya ka maemo a mangwe gape a le mararo kgotsa kopa mosha wa gago go go direla jalo.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Botsanang dipotso. E ka nna dipotso dingwe le dingwe fela ka ga dilo tse o di ratang kgotsa se o se dirileng gompieno.\n* Molawana nosi fela ke gore o ka se arabe ka “Ee”, “Nnyaa” kgotsa “Gongwe”.\n* O ka kgona go tsaya lobaka lo lo kae? O ka itirela dikarabo tse di kgatlhang jang?\n* Refosanang mme lo tshameke gape!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Motho wa ntlha a re, “Ka Lamatlhatso, ke ya kwa... (s.k., ke ya kwa phakeng)”\n* Motho wa bobedi o tlatsa wa ntlha ka gore, “Ka Lamatlhatso, ke ya kwa phakeng le... (s.k., ke etela tsala ya me e kgolo).\n* Motho mongwe le mongwe o tlatsa yo o sa tswang go feta, ba leka go akanya ka dilo tsotlhe tse di itumedisang go ka di dira ka Lamatlhatso.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Simolola polelo ka “Ga twe e rile....”\n* Letla mosha wa gago go itirela polelwana e e latelang.\n* Morago ga moo itirele polelwana.\n* Refosanang go fitlhelela lo nna le polelo e e ntshwa e e gakgamatsang.\n* Netefatsang gore lo khutlhisa polelwana ka ntlha e e molemo.\n* Botsa mosha wa gago gore ke karolo efe e a e ratileng thata ya polelo!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Botsa mosha wa gago gore ke mofuta ofe wa dijo tse a tla ratang go di ja. \n* Di baakanyeng mmogo! \n* Ba letle go refosanya go nna moapei mogolo – ba etelela pele, mme o latela ditaelo tsa bone. \n* O ka nna wa ba thusa go dira tekanyetsokabo ya ditswaki! \n\nGa o akanye gore seno se ka dira? Kopa mosha wa gago gore BA KA rata lo dira eng mmogo. Ba letle go etelela pele. Iketle. Itumele.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Tlhama go bina go le mmalwa ga dipina tse di ratiwang ke mosha wa gago. \n* Motho a le nosi o a bina mme ba bangwe botlhe ba a mo etsisa. \n* Refosanang ka go etelela pele. \n* Diragatsang seno fa pele ga ba lelapa!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Motshameko ono o ka tshamekiwa ka bobedi kgotsa le batho ba le bantsi mo setlhopheng.\n* Emang lo lebane kgotsa mo kgolokweng. \n* Motho a le nosi o etelela pele mme ba bangwe botlhe ba a mo etsisa, ba leka go suta ka nako e le nngwe le moeteledipele.\n* Netefatsa gore moeteledipele o suta ka iketlo moo go lekaneng gore mongwe le mongwe a mo latele! Bina ka tsela ya gore go sute mmele otlhe ka selekanyo se se farologaneng.\n* Morago ga sebaka, yo mongwe e nne ene a etelelang pele. Naya mongwe le mongwe tshono ya go etelela pele.\n * Leka seno go sena baeteledipele!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Akanya ka botswerere jo bosha jo lo ka bo ithutang mmogo le mosha wa gago. Sekai, go boloka kgwele e le mo moweng kgotsa mo leotong, thefosano, go dira sopo?\n * Refosanang ka go leka bokgoni jo bosha.\n * Netefatsa gore lo a akgolana, mme lo leke go ithuta le go tshameka mmogo!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Tlang ka mefuta e meraro ya go ikatisa mmele e lo ka e dirang mmogo. Sekai, go tsamaya, go tshematshema, kgwele ya dinao kgotsa go bina.\n * Tlhopha e le nngwe mmogo mme lo e leke. \n * Fa ka bobedi lo e rata, dirang tshwetso ya gore lo tlile go e dira kgapetsa ga kae. Gangwe kgotsa gabedi ka beke? Moso mongwe le mongwe?\n* Lo akanyeng mmogo ka ditsela tsa go e dira monate le go feta. A o ka kgona go taboga go ya bokgakaleng jo bo rileng? Refosanang ka go nna bakaedi? Kgothatsanang ka tuelo e nnye ya mahala?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Motho wa ntlha ke ene a tlhophang kgotsa a opelang pina.\n * Mongwe le mongwe o tshwanetse go fopholetsa leina la pina (go e dira thata ba ka fopholetsa moopedi).\n * Wa ntlha go e fopholetsa sentle e nna ene moeteledipele yo o latelang.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Motshameko ono o botoka fa o na le bobotlana batho ba le 3.\n * Simolola mo teng ga kgolokwe mme o bo o fetisa “thwantsho” e le nngwe go dikologa kgolokwe (kgotsa go “opa diatla” fa o sa kgone go thwantsha).\n * O “thwantsha” gangwe go latlhela “thwantsho”, le gangwe go e tshwara. Leba motho yo o mo latlhelelang yone. \n * Letlhakore (godimo, tlase, tlhamaletseng, kgogoropo, dikologang fa fatshe) le maatla (thata, bonolo, magareng) a o thwantshang ka one a tshwanetse go ama tsela e motho a e tshwarang ka teng. \n * O ka busetsa morago “thwantsho”, wa e latlhela mo moweng, le go e tshwara ka makgetlo a le mmalwa pele ga o e fetisa. \n * Fa mongwe le mongwe a setse a tshwara seno, o ka simolola go suta go dikologa phaposi, o ntse o latlhela “thwantsho”. \n * A o ka e latlhela kafa tlase ga leoto? Mo mokotleng? Mo godimo ga tlhogo? Go kgaosetsa phetiso ya yone? Ijeseng monate ka “thwantsho monwana”!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Tlhophang motshameko kgotsa ikatiso e lo ka e dirang mmogo. Dirang tshwetso ka thulaganyo. A lo tlile go dira seno letsatsi le letsatsi? Ka lobaka lo lo kae? \n\nE lekeng beke yotlhe. Kwa bofelong jwa beke, wena le lelapa la gago ipotseng dipotso tse di latelang:\n * Go tsamaya jang? \n * Lo ikutlwa jang kwa tshimologong ya beke? \n * Lo ikutlwa jang kwa bofelong jwa beke? \n * Ke eng se re ka se dirang ka tsela e e farologaneng beke e e latelang?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Refosanang ka go “etelela pele”. Bua dipolelwana tsa matseno go tsenyeletsa batho botlhe. Mme yo o “etelelang pele” o tla naya taelo mme mongwe le mongwe a dire tiro ka bonako jo bo kgonegang:\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tshwara sengwe se se khibidu.” \n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tlolela ko godimo le ko tlase ga lesome.”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Baya ditlhako mo di nnang teng.”", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Motshameko ono o botoka fa o tshamekiwa ke batho ba feta ba le 2.\n * Motho a le nosi o itira e kete o dira sengwe - Sekai, go kama moriri kgotsa go apaya dijo tsa maitseboa. \n* Motho yo mongwe o botsa gore, “O dirang?”\n* Motho wa ntlha o tlhoka go bua sengwe se se sa amaneng ka gope le go kama moriri, Sekai, “Ke bofa ditlhako.” \n* Motho wa bobedi jaanong o simolola go itira ekete o bofa ditlhako tsa gagwe go fitlhelela motho yo mo ntshwa a botsa gore, “O dirang?” \n\nKarabo e tshwanetse ka metlha ya nna e e farologaneng go na le se o se dirang!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Tshikinyang matsogo a lona a molema mo moweng ga 8 fa lo ntse lo bala go fitlha go 8.\n* Dirang seno ka bonako le kwa godimo ka moo go kgonegang.\n* Boeletsang seno ka matsogo a lona a mangwe. Boeletsang seno ka maoto a lona ka bobedi.\n* Dirang seno makgetlo a le 7, morago ga moo a le 6 mme lo tswelele go fitlhelela lo fitlha ko go 1.\n* Mongwe le mongwe o goeletsa a re “Koko e e sa utlweng” ba bo ba diragatsa go bina ga bone go go gaisang ga koko e e sa utlweng!", - "Quick Parenting Tips": "Ditlhababotlhale tsa go Godisa Bana tsa ka Bonako", - "Raising teens can be hard, and we all struggle sometimes.": "Go godisa basha e ka nna tiro e e bokete, mme e a re retelela rotlhe fa gongwe.", - "What is the main challenge you are experiencing right now?": "Kgwetlho e kgolo e o nang le yone mo nakong eno ke efe?", - "My relationship with my teen is not good": "Kamano ya me le mosha wa me ga se e e siameng", - "My teen’s behaviour is difficult": "Ke bona go le thata go dirisana le boitshwaro jwa mosha wa me", - "I feel stressed, lonely, angry": "Ke ikutlwa ke gateletswe mo maikutlong, ke jewa ke bodutu, ke tenegile", - "I have money worries": "Ke tshwenyegile ka madi", - "I worry about my teen’s safety": "Ke tshwenyegile ka tshireletsego ya mosha wa me", - "We often fight in our family": "Re aga re lole mo lelapeng la rona", - "I have a different problem…": "Ke na le bothata bo sele…", - "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Go dira botsala jo bosha go simolola ka go dira nako le le mmogo - le ele metsotso e le 5 fela go dira pharologanyo! Kwa tshimologong, go ka nna ga nna bokete go ipha nako le le mmogo, ka gonne rotlhe re nna re tshwaregile le gore basha ba rona fa gongwe ba mo maikutlong a a seng monate. Mme go dirisa le fa e le metsotso e le 5 mo letsatsing le tlhomile mogopolo le mosha wa gago go thusa gore le tshepane. Leka go botsa mosha wa gago gore a ka rata lo dira eng mmogo. Go ka le itumedisa le go le repisa!", - "You can get more support on how to spend one-on-one time with your teen here:": "O ka bona thuso e nngwe mabapi le gore o ka dira nako le ngwana wa gago wa mosha jang le le babedi fela fa:", - "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Basha botlhe fa gongwe ba itshwara ka go tlhoka maitseo! Selo se le sengwe se se ka thusang ka maitseo a mosha ke go mo akgola nako nngwe le nngwe fa a dira sengwe se se siameng - le fa se ka nna se se nnye jang. Basha ba ka lebega o kare ga ba batle kgotsa ga ba lebelela gore o ba akgole mme batla jalo tota.", - "You can get more support here on how to encourage good behaviour through praising:": "O ka kgona go bona thuso e nngwe fano mabapi le tsela ya go kgothaletsa boitshwaro jo bo siameng ka go akgola:", - "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Go tshwenyega mo maikutlong mo go amanang le go godisa bana go kwa godimo fela thata mo nakong eno. Re itse sentle ka fa botshelo bo ka imelang ka teng. O ka fokotsa go tshwenyega mo maikutlong ka go dira sengwe. O tshwanelwa ke seno! Mme fa o ikutlwa o imelwa, laola mmele wa gago ka go hemela kwa teng ga tlhano, ka bonya pele ga o fetola. Batsadi ba le bantsi ba bone seno se thusa.", - "You can get more support on how to take care of yourself here:": "O ka bona thuso e nngwe mabapi le gore o ka itlhokomela jang fa:", - "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Ga o nosi. Batsadi ba na le go imelwa ke kgatelelo ya maikutlo ka ga madi. Leka go bolelela mosha wa gago gore go tsena madi a a kae le gore o tshwanelwa ke go dirisa bokae mo lelapeng kgwedi le kgwedi. Seno se ka nna sa mo thusa go tlhaloganya gore gore o ka seke wa kgona go duelela sengwe se a se tlhokang. Mme fa mongwe le mongwe a tlhaloganya gore madi a dira jang, go nna bonolo gore le dumalane gore le ka boloka madi mmogo mo go eng!", - "You can get more support on how to budget and save here:": "O ka bona thuso e nngwe mabapi le tsela ya go dira tekanyetsokabo le go boloka madi fa:", - "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Basha ba ka fetsa nako e ntsi ba le kwa ntle kgotsa ba le mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa - batsadi ba le bantsi ba tshwenyega ka seno. Leka go simolola motlotlo le mosha wa gago ka ga mafelo a a bolokegileng le a a sa bolokegang mo tikologong ya lona le mo inthaneteng (o ka ka nna wa tshwanelwa ke go leka makgetlo a le mmalwa). E bile ba ka nna ba itse dingwe tse wena o sa di itseng. Seno se ka nna sa simolola go le thusa go dira thulaganyo mmogo ya gore le ka nna le sireletsegile jang.", - "You can get more support on how to keep your teen safe here:": "O ka bona thuso e nngwe mabapi le dira gore mosha wa gago a nne a sireletsegile fa:", - "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Fa bothata bo tlhaga, buisanang mmogo ka jone. Bothata ke eng sentlentle? Go na le ditharabololo di fe tse di farologaneng mme ditlamorago tsa tsona ke dife? Ka tsela e, le ka bona tharabololo e e ka nnang e e SIAMENG go botlhe.", - "You can get more support on how to solve problems together here:": "O ka bona thuso ya tsela ya go rarabolola mathata mmogo fa:", - "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Ga go bonolo go tlhokomela ba malapa a rona. Rotlhe re na le dikgwetlho fa gongwe, mme re solofela gore app eno e tla go thusa gore o dirisane le tsone sentle jang. @global.parent_app e thailwe mo boitemogelong jwa dingwaga tse di lesome tsa go tsamaisa dithulaganyo tsa go godisa bana mo Aforika Borwa, mme diketekete tsa batsadi ba bone ditlhabobotlhale tse ba di newang di thusa ka dikgwetlho tse dintsi tsa go godisa bana. Re solofela gore app eno e tlile go thusa le wena le ba lelapa la gago.\n\nDitlhabotlhale dingwe tsa botlhokwa tse di tlhomamisitsweng ke tseno tse o ka di dirisang:", - "Start your first parenting workshop": "Simolola workshop ya gago ya ntlha ya go godisa bana", - "You will get more support in the @local.workshop_data.in_text_title.": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", - "You can get more support in the @local.workshop_data.in_text_title.": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", - "Start the @local.workshop_data.in_text_title": "Simolola @local.workshop_data.in_text_title", - "Finish the @local.workshop_data.in_text_title to get more support.": "Fetsa @local.workshop_data.in_text_title gore o kgone bona thuso e nngwe.", - "Continue the @local.workshop_data.in_text_title": "Tswelela ka @local.workshop_data.in_text_title", - "Re-access the @local.workshop_data.in_text_title": "Tsena gape mo go @local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Nna fa fatshe, tswala matlho a gago mme o reetse mohemo wa gago jaaka o tsena le go tswa. \n\nLemoga ka fa o ikutlwang ka gone. \n\nFa o siametse go dira jalo, bula matlho a gago gape.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Leka seno fa o ikutlwa o tshwenyegile mo maikutlong mme o tlhoka go ikhutsa gore ikgolaganye gape.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Tswala matlho a gago. \n\nA re dirise maatla a boselamose a mararo go dula re le fano e bile re iketlile. \n\nBitsa maina a medumo e o e utlwang gone jaanong. \nBitsa maina a menkgo e o kgonang go e nkgelela gone jaanong. \nNaya maina a dijo tse tharo tse o di ratang. \n\nKe dilo dife tse tharo tse o di lebogelang gone jaanong? Ga di a tshwanela go nna dikgolo.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Morago ga letsatsi le le bokete, akanya ka dilo tse tharo tse o di lebogelang go ka thusa go bona bopelokgale jwa go leka gape kamoso.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Tswala matlho a gago mme o akanye ka letsatsi la gago. \n\nBitsa selo se le 1 se o se lebogelang. \nBitsa selo se le 1 se o se dirileng sentle. \nBitsa selo se le 1 se o se ratang.", - "Well done, you are a hero!": "O dirile sentle, o mogaka!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Tswala matlho a gago. \n\nDirisa maatla a boselamose a mararo go nna o le fano e bile o iketlile.\n\nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3. \nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "A o utlwa pharologanyo? Go hemela kwa teng go thusa mmele otlhe wa rona le mogopolo gore di ritibale. \n\nO naledi!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Tswala matlho a gago.\n\nReetsa tsela e o hemang ka yone o ntse o tsenya o ntsha mowa makgetlo a matlhano.\n\nLemoga kafa o ikutlwang ka gone.", - "When you are ready open your eyes again. You are in control!": "Fa o siame bula matlho a gago gape. Ke wena o laolang!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Tswala matlho a gago. \n\nTsaya motsotso o akanye ka letsatsi.\n\nAkanya ka sengwe se le nosi se se siameng kgotsa se se monate se o se dirileng.\nIkakgole fa o dirile sengwe se le nosi se sentle gompieno. \nAkanya ka selo se le sengwe se o ka se dirang ka tsela e e farologaneng kamoso.  \nBitsa selo se le sengwe se o se lebogelang.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Tswala matlho a gago. \n\nA bana ba gago ba a tle ba dire gore o batle go goeletsa? \n\nIphe metsotswana e 10 o eme go se kae. Hemela kwa teng le kwa ntle makgetlo a 5. \n\nLeka go araba o kgobile makgwafo.", - "Millions of parents say this helps - A LOT.": "Dimilione tsa batsadi ba a re seno se a thusa - THATA.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Tswala matlho a gago. \n\nTsaya motsotso go emisa se o se dirang mme o ikgolaganye le tsela e o hemang ka yone.   \n\nKe selo sefe se le sengwe se o se lebogelang gone jaanong?  \nKe selo sefe se le sengwe se se go itumedisang?  \nKe selo sefe se le sengwe se o se ratang?  \n\nGa di a tshwanela go nna dikgolo. Ka dinako tse dingwe dilo tse dinnye mo botshelong ke tsone di leng botlhokwa thata!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Fano ke tiro e e ka ritibatsang mmele wa gago:  \n\nDula sentle mme o tswale matlho fa o kgona.  \nAkanya ka palamonwana ya gauta e sekaseka mmele wa gago go tswa mo maotong go ya ko tlhogong.   \nTlhwaya tsebe jaaka fa e ntse e ya godimo le tlase mo mmeleng wa gago. A go na le dikarolo tsa mmele tse di tiileng? Di sule bogatsu? Di botlhoko?   \nTlhoma mogopolo mo dikarolong tseno metsotswana. Hemela kwa teng ga karolo eo mme o ntshe mowa, leka go tsamaisa go tiya goo kgotsa botlhoko joo.   \nDira seno ka go hema makgetlo a mmalwa.   \n\nBula matlho a gago. Mmele wa gago o ikutlwa jang jaanong?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "O ka nna wa leka seno mo lekgetlong le le latelang fa o iphitlhela o robetse mo bolaong mme o sa kgone go robala!", + "Question Time": "Nako ya Dipotso", + "It's time for some questions!": "Ke nako ya go botsa dipotso!", + "Read Together": "Buisang Mmogo", + "Let's read a story together!": "Tla re buise kgang mmogo!", + "Let's read a story!": "Tla re buise kgang!", + "Let's see how this week has been.": "A re bone gore beke eno e tsamaile jang.", + "This week you have done...": "Beke eno o dirile...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "O bontsha o ikemiseditse go nna motsadi le go itlhokomela. \n\nO setswerere.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ikatiso ya mo gae ke yone e dirang botshelo jwa lelapa la rona bo nne botoka. Mme gantsi e tlisa dikgwetlho. \n\nA re bolelaneng dikatlego le mathata a rona, mme re thusane go bona dikakanyo tse re ka di lekang tse disha!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Akanya ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka: \n* Ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata? \n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo? \n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(E bile gongwe lo ka ikatisa gone jaanong gore e nne motlhofo moragonyana!)", + "Discussion example from @data.workshop.w_1on1.title": "Sekai sa puisano go tswa go @data.workshop.w_1on1.title", + "Relax Together": "Iketleng Mmogo", + "Relax": "Iketle", + "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "A re dire tiro ya go iketla mmogo e e khutshwane – e tla tsaya kafa tlase ga motsotso o le 1 mme o tla ikutlwa o iketlile le go feta.", + "Add this activity to @global.my_relaxes": "Tsenya tiro eno go @global.my_relaxes", + "Listen and relax": "Reetsa mme o iketle", + "Read and relax": "Buisa mme o iketle", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "O naledi!\n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela ko teng gore o iketle.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Tswala matlho a gago. \n\nLemoga kgolagano ya gago le lefatshe le le kafa tlase ga gago.  \nKe karolo dife tsa mmele wa gago tse di amang mo fatshe? Ke karolo dife tsa mmele wa gago tse di sa ameng fatshe?   \nElatlhoko gore go thuthafetse kae le mo go tsidifetseng teng.  \nIkutlwe o tshegediwa ke lefatshe mo tlase ga gago. Letla mmele wa gago gore o tshegediwe ke lefatshe.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Leka seno mo lekgetlong le le latelang fa o ikutlwa o le nosi kgotsa fa o dira ditiro tsa mo gae jaaka go tlhatswa. Go ka thusa thata!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Nna fatshe o tswale matlho a gago.\nO utlwa medumo e kae? \nReetsa medumo e e mo teng le kwa ntle ga phaposi. E bale ka menwana ya gago. \nMorago ga metsotswana e le lesome, go setse menwana e le kae e e emeng? O utlwile medumo efe? \n\nLeka gape metsotswana e le lesome. \nA o utlwile medumo e mesha? A o utlwile medumo mo teng ga mmele wa gago? \nLemoga kafa o ikutlwang ka gone gone jaanong.", @@ -1010,62 +250,45 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Tsaya motsotso go akanya ka maitemogelo a gago. Lemoga fa o utlwa pharologanyo.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Kgato 1. Tswala matlho mme o hemele kwa teng. \n\nKgato 2. Ipotse, “Ke akantse ka eng?” Lemoga fa dikakanyo tsa gago di siame kgotsa di sa siama.\nLemoga ka fa o ikutlwang ka gone mo maikutlong. Lemoga fa maikutlo a gago a siame kgotsa a sa siama. Ikgopotse gore go sa kgathalesege gore o ikutlwa jang, go siame.\nLemoga ka fa mmele wa gago o ikutlwang ka gone. Lemoga fa sengwe se le botlhoko kgotsa se gagametse.\n\nKgato 3. Tlhoma mogopolo mo tseleng e o hemang ka yone. Reetsa tsela e o hemang ka yone o ntse o tsenya mowa o bo o o ntsha. O ka nna wa baya letsogo mo mpeng ya gago mme o e utlwe fa e ya kwa godimo le kwa tlase fa o ntse o hema. Dira seno o hema ga 10.\n\nKgato 4. Atolosa temogo ya gago mo mmeleng otlhe wa gago. Reetsa medumo e e mo kamoreng. \n\nKgato 5. Tsaya motsotso go bona fa o utlwa pharologanyo nngwe. Fa go siametse go dira jalo, bula matlho a gago.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "O dirile sentle go Emisa go se Kae. O ka dira seno nako nngwe le nngwe fa o ikutlwa o tshwenyegile mo maikutlong. Go go naya tshono ya go kgoba makgwafo. Le fa ele go hemela kwa teng makgetlonyana kgotsa go ikgolaganya le lefatshe le le mo tlase ga gago o ka dira pharologanyo. O ka Ema go se Kae le ka Bana ba gago!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Nna fa fatshe, tswala matlho a gago mme o reetse mohemo wa gago jaaka o tsena le go tswa. \n\nLemoga ka fa o ikutlwang ka gone. \n\nFa o siametse go dira jalo, bula matlho a gago gape.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Leka seno fa o ikutlwa o tshwenyegile mo maikutlong mme o tlhoka go ikhutsa gore ikgolaganye gape.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Ema mme o otlololele diatla tsa gago ko godimo. Sutisa maru a o a bonang mme o letle letsatsi le go phatsimele. Ikotlololele ko matlhakoreng o o mabedi. Ikotlololele ko pele le ko morago.\n\nLetla letsogo la gago le akgegele mo letlhakoreng la gago. Gatelela magetla a gago gaufi le ditsebe tsa gago fa o ntse o hemela kwa teng, dira e kete o tswala matlho a gago, mme o tshware mowa wa gago. Tlogela magetla a gago fa o ntse o repisa mmele wa gago.\n\nRepisa matsogo a gago mme letlelela matsogo a gago go elela ko pele le ko morago, mme o thedimosetse mmele wa gago o o ko godimo. Matsogo a gago a iteye mokotla wa gago ka bonolo fa o ntse o sokamisetsa ko matlhakoreng.\n\nBaya leoto mo pele ga le lengwe mme o dire dikgolokwe tse dinnye ka legwejana, gopola go dira mo matlhakoreng o o mabedi. Dira leoto lengwe le lengwe ka dikgolokwe tse nne mo matlhakoreng otlhe.\n\nJaanong tshikinya mmele wa gago otlhe ka bonako jo o ka bo kgonang. Tshikinyetsa kwa godimo! Tshikinyetsa kwa tlase! Tshikinyetsa go dikologa gotlhe!\n\nTswala matlho mme o emise matsogo a gago ka bonya mo godimo ga tlhogo ya gago fa o ntse o hemela kwa teng. Isa matsogo a gago ka bonya kwa letlhakoreng la gago fa o ntse o hemela kwa ntle.\n\nTsaya motsotso go akanya ka maitemogelo a gago.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "O dirile sentle! O ka dira tiro eno gape nako nngwe le nngwe fa o ikutlwa o tlhoka go ntsha go tshwenyega mo maikutlong mme o neye tlhaloganyo ya gago le mmele wa gago matla.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Dira lenaane la dilo tsa boitekanelo jo bo siameng tse o ratang go di dira. Dikakantsho dingwe ke tseno:\n* Go reetsa mmino o o ratang\n* Go tsamaya ka maoto (fa go letleletswe)\n* Go ikatisa\n*Go nwa kopi ya tee o le nosi\n* Go leletsa tsala\n* Go opela, go bina, go rapela, kgotsa go buisa\n*Go nna mo letsatsing o tswetse matlho\n* Go lebelela lenaneo la gago la T.V. le o le ratang\n\nTlhopha e le nngwe mme o e dire gompieno!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "Fa o itlhokomela, o tlhokomela le bana ba gago. Rotlhe re tlhoka go ikgolaganya. Leka go bua le ditsala, balelapa, le dikgokagano tse dingwe tsa tshegetso letsatsi le letsatsi. Fa ele gore ke kgale o sa bue le mongwe, bua le ene jaanong!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Akanya ka gore ke eng se se dirang gore o galefe? Go direga leng? Gantsi o itshwara jang?\n\nO seka wa letla kgalefo go simolola. Robala kgotsa o ikhutse fa o lapile. Leka go ja sengwe fa o tshwerwe ke tlala. Kopa tshegetso ya mongwe fa o ikutlwa o le esi.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Go laola kgalefo ga ka nna thata. Ema fa o ikutlwa o galefela bana ba gago kgotsa mongwe o sele.\n\nGore maikutlo a gago a boe ya golo gongwe o tseye metsotso e ka nna 5. Fa o na le lefelo la kwa ntle le le sireletsegileng, tsamaya o ye kwa ntle. O tla fenya seno!", - "Customise your @global.parent_app": "Itsenyetse dilo tse o di batlang mo @global.parent_app ya gago", - "These quick questions will fit this app to your needs.": "Dipotso tseno di bonako mme di tla tshwanela sedirisiwa seno go ya ka ditlhoko tsa gago.", - "Let’s start with a few questions about you and your family.": "A re simolole ka dipotso di le mmalwa ka wena le lelapa la gago.", - "We would love to know your first name or nickname:": "Re ka rata go itse leina la gago la ntlha kgotsa leina le o tlwaelegileng ka lone:", - "Are you a woman or a man?": "A o mosadi kgotsa monna?", - "Woman": "Mosadi", - "Man": "Monna", - "How old are you?": "O nale dingwaga tse kae?", - "Adults": "Bagolo", - "Teens": "Basha", - "Children": "Bana", - "Babies": "Masea", - "How many people are in your household?": "O dula le batho ba le kae mo legaeng la gago?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "O ka dira @global.weekly_workshops ka bowena KGOTSA laletsa maloko mangwe a lelapa la gago kgotsa ditsala gore di tsene - o tla ithuta mo go oketsegileng ka mongwe go yo mongwe. Go tswa mo go wena!", - "How would you like to do your @global.weekly_workshops?": "O ka rata go dira @global.weekly_workshops ya gago jang?", - "Can you think of a name for your group?": "A o kgona go akanya leina la setlhopha sa lona?", - "Which day of the week would you like to do your @global.weekly_workshops?": "Ke letsatsi lefe mo bekeng le o ka ratang go dira @global.weekly_workshops ya gago ka lone?", - "Monday": "Mosupologo", - "Tuesday": "Labobedi", - "Wednesday": "Laboraro", - "Thursday": "Labone", - "Friday": "Labotlhano", - "Saturday": "Lamatlhatso", - "Sunday": "Latshipi", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga botswerere jo bo latelang.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga bokgoni jo bo latelang.", - "You can always change these settings in your @global.weekly_workshop_options.": "O ka kgona go fetola diseting tseno ka metlha mo @global.weekly_workshop_options ya gago.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Re a itse seno se bokete. Re tsentse dikakantsho tse di tla go thusang gore o iphe nako le mosha wa gago go @data.parent_centre.my_tips.location_text, gore o e bone ka nako e o e batlang ka yone. \n\nKa gonne @data.workshop.w_1on1.title e aga motheo wa sedirisiwa sa batsadi botlhe, e tla bo e le @global.weekly_workshop o e amogelang beke e e tlang!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "O dirile sentle! @global.weekly_workshop ya rona e e latelang e tla go naya dikakantsho tse di oketsegileng tsa seno, jaaka motheo wa didiriswa tsotlhe tsa botsadi. Mme o setse o simolotse sentle tota!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. Re tsentse dfidirisiwa tse di botlhokwa tsa kafa o ka dirisang go akgola mo @data.parent_centre.my_tips.location_text gore o tsene ka bonako.\n\nMo go @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa botswerere jono sentle.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. Mo @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa bokgoni jono sentle.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, gakologelwa mme o iteboge, go go thusa go kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo @data.workshop.w_stress.number ya @global.weekly_workshops- mme o setse o kgona go dirisa didirisiwa tse di thusang mo tlase ga@data.parent_centre.my_tips.location_text gore o simolole!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa gore o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla go gopotsa ka metlha gore o iketle, o lemoge gore o kgonne le go iteboga. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @data.workshop.w_stress.number - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @global.weekly_workshops gore o simolole.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Re solofela sedirisiwa sa rona sa go laola go tshwenyega mo maikutlong se go thusitse. O setse o kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Go gontle. Re na le workshop e e rutang ka tekanyetsokabo ya lelapa e e ka thusang ka go tshwenyega ka madi ka kakaretso, le go fokotsa go omana ka madi.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nRe na le workshop e e rutang ka tekanyetsokabo ya lelapa dibeke di le tlhano, mme o setse o ka kgona go bona ditlhabobotlhale dingwe tsa motheo ka tekanyetsokabo ya lelapa mo tlase ga @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. Go itlhokomela le go thusa o ikutlwe o kgobile makgwafo fa dilo di nna boima, re tla go gopotsa tsatsi le letsatsi gore o iketle, o lemoge mme o iteboge. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @global.weekly_workshops - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @data.parent_centre.my_tips.location_text gore o simolole.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDidirisiwa tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRe solofela didirisiwa tsa rona tsa go laola go tshwenyega mo maikutlong di tla go thusa gore o ikutlwe o kgobile makgwafo mo maemong a a thata. O kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Re tla netefatsa gore o a tshegediwa ka go aga puisano. \n\nRe tla bua mo go oketsegileng ka go rulaganya tshireletsego ya mosha wa gago kgantele mo @global.weekly_workshops, mme fela o ka iponela dikakantsho tse di tseneletseng tsa go boloka mosha wa gago a sireletsegile mo tlase ga @data.parent_centre.my_tips.location_text!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Seno se sentle tota. Go nna motsadi go bokete, mme o a atlega mo go direng seno.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! O ka bona didirisiwa tse di tobileng, ka diteng tse di oketsegileng le ditlamelwana mo @global.parent_centre nako nngwe le nngwe. \n\nO setse o ka kgona go bona ditlhabotlhale tse dingwe tsa motheo tse di thusang ka go rulaganya go dira mo tlase ga @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools le @data.workshop.w_safe.tools e e tsenngwang mo go @data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! O ka bona didirisiwa tse di tobileng, ka diteng tse di oketsegileng le ditlamelwana mo @global.parent_centre nako nngwe le nngwe. \n\nO setse o ka kgona go bona ditlhabotlhale tse dingwe tsa motheo tse di tla thusang ka go dira melao mo tlase ga @global.parent_centre.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nRe tlile go go neela tshegetso e oketsegileng ka seno mo nakong e e tlang @global.weekly_workshops fa o ka rata go itse mo go oketsegileng!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Diteng tse di bulwang ka dipotso tseno jaanong di ka bonwa mo tlase ga @data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "O sa tswa go bula workshop ya ntlha!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Tswala matlho a gago. \n\nA re dirise maatla a boselamose a mararo go dula re le fano e bile re iketlile. \n\nBitsa maina a medumo e o e utlwang gone jaanong. \nBitsa maina a menkgo e o kgonang go e nkgelela gone jaanong. \nNaya maina a dijo tse tharo tse o di ratang. \n\nKe dilo dife tse tharo tse o di lebogelang gone jaanong? Ga di a tshwanela go nna dikgolo.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Morago ga letsatsi le le bokete, akanya ka dilo tse tharo tse o di lebogelang go ka thusa go bona bopelokgale jwa go leka gape kamoso.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Tswala matlho a gago mme o akanye ka letsatsi la gago. \n\nBitsa selo se le 1 se o se lebogelang. \nBitsa selo se le 1 se o se dirileng sentle. \nBitsa selo se le 1 se o se ratang.", + "Well done, you are a hero!": "O dirile sentle, o mogaka!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Tswala matlho a gago. \n\nDirisa maatla a boselamose a mararo go nna o le fano e bile o iketlile.\n\nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3. \nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "A o utlwa pharologanyo? Go hemela kwa teng go thusa mmele otlhe wa rona le mogopolo gore di ritibale. \n\nO naledi!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Tswala matlho a gago.\n\nReetsa tsela e o hemang ka yone o ntse o tsenya o ntsha mowa makgetlo a matlhano.\n\nLemoga kafa o ikutlwang ka gone.", + "When you are ready open your eyes again. You are in control!": "Fa o siame bula matlho a gago gape. Ke wena o laolang!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Tswala matlho a gago. \n\nTsaya motsotso o akanye ka letsatsi.\n\nAkanya ka sengwe se le nosi se se siameng kgotsa se se monate se o se dirileng.\nIkakgole fa o dirile sengwe se le nosi se sentle gompieno. \nAkanya ka selo se le sengwe se o ka se dirang ka tsela e e farologaneng kamoso.  \nBitsa selo se le sengwe se o se lebogelang.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Tswala matlho a gago. \n\nA bana ba gago ba a tle ba dire gore o batle go goeletsa? \n\nIphe metsotswana e 10 o eme go se kae. Hemela kwa teng le kwa ntle makgetlo a 5. \n\nLeka go araba o kgobile makgwafo.", + "Millions of parents say this helps - A LOT.": "Dimilione tsa batsadi ba a re seno se a thusa - THATA.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Tswala matlho a gago. \n\nTsaya motsotso go emisa se o se dirang mme o ikgolaganye le tsela e o hemang ka yone.   \n\nKe selo sefe se le sengwe se o se lebogelang gone jaanong?  \nKe selo sefe se le sengwe se se go itumedisang?  \nKe selo sefe se le sengwe se o se ratang?  \n\nGa di a tshwanela go nna dikgolo. Ka dinako tse dingwe dilo tse dinnye mo botshelong ke tsone di leng botlhokwa thata!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Fano ke tiro e e ka ritibatsang mmele wa gago:  \n\nDula sentle mme o tswale matlho fa o kgona.  \nAkanya ka palamonwana ya gauta e sekaseka mmele wa gago go tswa mo maotong go ya ko tlhogong.   \nTlhwaya tsebe jaaka fa e ntse e ya godimo le tlase mo mmeleng wa gago. A go na le dikarolo tsa mmele tse di tiileng? Di sule bogatsu? Di botlhoko?   \nTlhoma mogopolo mo dikarolong tseno metsotswana. Hemela kwa teng ga karolo eo mme o ntshe mowa, leka go tsamaisa go tiya goo kgotsa botlhoko joo.   \nDira seno ka go hema makgetlo a mmalwa.   \n\nBula matlho a gago. Mmele wa gago o ikutlwa jang jaanong?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "O ka nna wa leka seno mo lekgetlong le le latelang fa o iphitlhela o robetse mo bolaong mme o sa kgone go robala!", + "Start": "Simolola", + "Please sign in with your Google account to use the app.": "Kopa o tsene mo go akhaonto ya Google go dirisa app.", + "Sign in with Google": "Tsena mo gare ka Google", + "Add this activity to @global.my_activities": "Tsenya tiro eno go @global.my_activities", + "@global.parent_app funded by": "@global.parent_app e tlametswe ka madi ke", + "Powered by Parenting for Lifelong Health and partners": "E Matlafadiwa ke Botsadi jwa Boitekanelo jwa Botshelo jo bo Leele le balekane", + "Bringing teenagers up is hard": "Go godisa basha go bioma", + "You are the best parent your teen could have": "O motsadi wa mmakgonthe o mosha wa gago a ka nnang le ene", + "Ideas from other families:": "Dikakantsho go tswa ko malapeng a mangwe:", + "Customise @global.parent_app": "Itsenyetse @global.parent_app", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla nna re go gopotsa gore o iketle, o lemoge le gore o iteboge. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e boima ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go tswelela o dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDilo tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", + "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Gopola go dirisa bokgoni jo bosha gore o tswelele o nna le puisano e e siameng le mosha wa gago. \n\nO ka sekaseka ditlhabobotlhale tsa motheo tsa go rulaganya tshireletsego ya mosha wa gago mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text!", + "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Go gontle. Fa go ka nna le kgatelelo epe ya maikutlo kgotsa go sa utlwane ka baka la madi mo lelapeng la lona mo nakong e e tlang, o ka nna wa sekaseka @data.workshop.w_money.in_text_title kgotsa @data.parent_centre.my_tips.location_text!", + "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nNako le nako fa go nna le go sa utlwane ka madi mo lelapeng la gago, batla ditlhabobotlhale mo go @data.workshop.w_money.in_text_title kgotsa kafa tlase ga @data.parent_centre.my_tips.location_text!", + "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Gopola gore o ka kgona go bona ditlhabobotlhale di le dintsi tse di thusang le didirisiwa mo go @global.parent_centre - o ka kgona go di bona nako nngwe le nngwe fela!", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nGopola, o ka kgona go bona tshegetso e nngwe ka seno mo go @data.workshop.w_safe.in_text_title nako le nako fa o e batla!", "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Re a itse seno se bokete. O ka sekaseka ditlhabobotlhale dingwe tse di thusang mabapi le ka fa o ka dirisang nako o na le mosha wa gago ka teng mo tlase ga @data.parent_centre.my_tips.location_text kgotsa o ka leba gape @data.workshop.w_1on1.in_text_title.", "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "O dirile sentle ka go simolola ka motheo ono o o siameng! O ka nna wa sekaseka @data.workshop.w_1on1.in_text_title go bona megopolo e mengwe mabapi le go fetsa nako mmogo.", "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. O ka nna wa sekaseka gore o ka dirisa kakgolo jang fa tlase ga @data.parent_centre.my_tips.location_text.\n\nGo bona ditlhabobotlhale tse dingwe mabapi le go dirisa bokgoni jono sentle, o ka leba gape @data.workshop.w_praise.in_text_title.", @@ -1073,135 +296,153 @@ "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, go lemoga gore o kgonne le go iteboga, go go thusa go kgona go laola kgatelelo ya gago ya maikutlo le gore o ikutlwe o kgobile makgwafo.\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla nna re go gopotsa gore o iketle, o lemoge le gore o iteboge. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Gantsi o ka bona ditsela tsa go laola go tshwenyega mo maikutlong tse di thusang tlase ga @data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Go gontle. Fa go ka nna le kgatelelo epe ya maikutlo kgotsa go sa utlwane ka baka la madi mo lelapeng la lona mo nakong e e tlang, o ka nna wa sekaseka @data.workshop.w_money.in_text_title kgotsa @data.parent_centre.my_tips.location_text!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nNako le nako fa go nna le go sa utlwane ka madi mo lelapeng la gago, batla ditlhabobotlhale mo go @data.workshop.w_money.in_text_title kgotsa kafa tlase ga @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. Gore re le tlhokomele le go le thusa go ikutlwa le kgobile makgwafo fa dilo di nna bokete, re tla nna re le go gopotsa gore lo iketle, le lemoge gore le kgonne le go iteboga. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e boima ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go tswelela o dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDilo tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRe solofela didirisiwa tsa rona tsa go laola go tshwenyega mo maikutlong di tla nna di go thusa gore o ikutlwe o kgobile makgwafo mo maemong a a thata. O kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Gopola go dirisa bokgoni jo bosha gore o tswelele o nna le puisano e e siameng le mosha wa gago. \n\nO ka sekaseka ditlhabobotlhale tsa motheo tsa go rulaganya tshireletsego ya mosha wa gago mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla atla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa!\n\nGopola, o ka bona didirisiwa tse di remeletseng mo go seno, mafoko a mangwe a a kwadilweng le ditsompelo mabapi le seno mo go @global.parent_centre nako nngwe le nngwe. Gape o ka kgona go sekaseka ditlhabobotlhale tsa motheo mabapi le melao le go rulaganyetsa thulaganyo mo tlase ga @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! Gopola, o ka bona didirisiwa tse di remeletseng mo go seno, mafoko a mangwe a a kwadilweng le ditsompelo mabapi le seno mo go @global.parent_centre nako nngwe le nngwe. \n\nGape o ka sekaseka ditlhabobotlhale tsa motheo mabapi le go dira melao tlase ga @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nGopola, o ka kgona go bona tshegetso e nngwe ka seno mo go @data.workshop.w_safe.in_text_title nako le nako fa o e batla!", - "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Gopola gore o ka kgona go bona ditlhabobotlhale di le dintsi tse di thusang le didirisiwa mo go @global.parent_centre - o ka kgona go di bona nako nngwe le nngwe fela!", - "Are there teens in your family?": "A go na le basha mo lelapeng la gago?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "App eno e tsepametse mo malapeng a a nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola mo lelapeng la gago!", - "Are there adults in your family?": "A go na le bagolo mo lelapeng la gago?", - "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "App eno e tsepametse mo batsading bao ba nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola!", - "Are you sure you want to skip this question?": "A o a tlhomamisa gore o batla go tlola potso eno?", - "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "A o netefetse gore o batla go tlola potso e? Gopola, karabo ya gago e tlile go tsholwa e le sephiri mme e tlile go re thusa go tlhaloganya ditlhokego tsa gago tsa botsadi.\n\nO ka tlhopha le go se arabe potso nngwe le nngwe ka go tlhopha tshekeletsa", - "You selected \"I would rather not answer\"": "O tlhophile “Ke tlhopha go se arabe”", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Go siame!\n\nGopola, fa o araba, dikarabo tsa gago di tlile go tsholwa di le poraevete mme di tlile go re thusa go go neela diteng tse di maleba go wena.", "Customise for your needs": "Direla ditlhoko tsa gago", "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Motsadi mongwe le mongwe mo lefatsheng wa retelelwa mo dinakong tseno tse di bokete. Potso e e latelang ka maitemogelo a gago a go nna motsadi go tla re thusa go go batlela tshegetso e o e tlhokang.\n\nBua nnete. Gopola gore ga o nosi! Gopola gore dimilone tsa batsadi ba ikutlwa jaaka wena, mme rotlhe re tshwanelwa ke go tshegediwa.", - "It is hard to find time to have fun with your teenager.": "Go thata go bona nako ya go itumela le mosha wa gago.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Ke malatsi a le kae mo bekeng e e fetileng a o kgonneng go neelana ka nako ya gago mme lwa dira sengwe se lo se ratang le bone?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_1on1.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Mo go tshwaregeng ka botshelo jwa rona go bokete go tlhomamisa mogopolo mo dilong tse di siameng.", - "How many days in the past week have you praised your teen?": "O akgotse mosha wa gago ga kae mo bekeng e e fetileng?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_praise.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Eno ke nako e e tshwenyang maikutlo mo malapeng.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Ke malatsi a le kae a o neng o ikutlwa o tshwenyegile mo maikutlong jaaka motsadi/motlhokomedi mo bekeng e e fetileng?", - "Sometimes our children make us really upset.": "Ka dinako tse dingwe bana ba rona ba dira gore re utlwe botlhoko thata.", - "How many days in the past week did you shout, scream or yell at your teen?": "Mo bekeng e e fetileng o omantse kgotsa o goile mosha wa gago malatsi a le kae?", - "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "O dirile sentle. Saense ya boboko e bontsha gore go laola kgalefo ya gago go tla tokafatsa tsela e boboko jwa mosha wa gago bo golang ka gone. Nna motlotlo ka wena.", - "Money is one of the biggest stresses for families now.": "Madi ke nngwe ya tse dikgolo tseo di dirang gore malapa a tshwenyege mo maikutlong ga jaana.", - "How many days in the past week have you worried or felt anxious about money?": "O ikutlwile o tshwenyegile kgotsa o akanya thata ka madi malatsi a le kae mo bekeng e e fetileng?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Ke malatsi a le kae mo kgweding (malatsi a 30) e e fetileng mo o o neng o felelwa ke madi a go duelela dijo?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_money.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Go tshwenya mo maikutlong tota fa bana ba sa itshware sentle.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Ke matsatsi a makae mo bekeng e e fititileng a o kileng wa kgalema bana ba gago ka go ba betsa, go ba kgwathisa kgotsa go ba betsa ka seatla kgotsa sediriswa, thupa kgotsa lepanta?", + "Thank you for being honest": "Re lebogela gore o buile nnete", "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Go gontle fa o araba o kgobile makgwafo fa mosha wa gago a dira sengwe se se tenang. Ba ka ithuta go le gontsi go tswa mo go wena!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_stress.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Go thata go tsamaisana le mosha wa gago fa ba ikemela.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Ke malatsi a le kae mo bekeng e e fetileng mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", - "This is good to hear.": "Seno se molemo go se utlwa.", - "Were you in lockdown this week?": "A o ne o lotleletswe mo bekeng eno?", "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Go gontle gore o lemoga se mosha wa gago a se dirang. Go nna motsadi go bokete, mme o dira sentle go mmoloka a sireletsegile.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Ke malatsi a le kae mo bekeng mo go neng go sa lotlelelwa mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_safe.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Rotlhe re batla go boloka bana ba rona ba sireletsegile.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "Ke malatsi a le kae mo kgweding e e fetileng (malatsi a 30) mo o kileng wa bua le mosha wa gago ka go ipoloka a sireletsegile mo tirisong dikgoka ya tlhakanelo dikobo mo mafaratlhatlheng kgotsa ka namana?", - "This could be when they are going out with friends, or talking about the websites they use.": "Seno e ka nna fa ba ikentsha le ditsala, kgotsa ba bua ka diwebosaete tse ba di dirisang.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Re na le kgwetlho e ntšha jaanong – go sireletsa basha ba rona go COVID-19.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Ke malatsi a le kae ao mosha wa gago a ileng a nna a sireletsegile ka go tsenya mmaseke, a katogane le batho le go nna kgakala le mo mafelong a a tletseng ka batho?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "E ka nna kgwetlho go sireletsa mosha wa gago go COVID! Re ntse re rulaganyetsa go tla ka dikakantsho - mo bogautshwaneng o tla di bona mo @global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Go gontle. Re ntse re rulaganyetsa go tla ka dikakantsho tsa go boloka mosha wa gago a sireletsegile go COVID - mo bogautshwaneng o tla di bona mo@global.parent_centre.", - "Thank you for being honest": "Re lebogela gore o buile nnete", - "CHAT": "Tlotla", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Neelana ka maikutlo a gago, mme o rotloetsa mosha wa gago go bua ka matshwenyego a gagwe. Le tla tlhaloganyana botoka mme le ka dira leano mmogo la go nna le itekanetse le itumetse!", - "CAUTION": "Ela tlhoko", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Amogela kitsiso ya gago go tswa mo metsweding e tshepagalang ya kitso gore o kgone go nna le boitshepi mo nakong tse di sa tshepagaleng tse. Re utlwa ebile re bona dikgang tse dintsi ka batho, megala ya letheka, TV le inthanete. Aa se se dira o ikutlwe o belaela, tshwenyega, tshoga, galefa kgotsa go tlhakatlhakana? Tlhola pele o phatlhalatsa kgotsa o dira sengwe!", - "CHOOSE": "TLHOPHA", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Go dira ditshweetso tse di nepagetseng go boloka botlhe ba sireletsegile ebile ba phetse sentle go thata. Segolo mo dinakong tsa jaanong! O ka thusa mosha wa gago go dira ditshweetso tse di siameng.", - "CHILL": "IKETLE", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Rotlhe re ikutlwa re tshwenyegile ka nako dingwe. Hemela kwa teng kgotsa o dire sengwe se se monate. E ka dira pharologanyo e kgolo go dira lelapa la gago la boitumelo le kagiso! Fano ke dikakanyo tse o ka di lekang:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Menagano e e sa siamang e dira gore re bue ebile re dire dilo tse di sa siamang. Leka go fetola dilo tse o di buang le tse o di naganang tse di sa siamang gore e nne tse di siameng!", - "A teen sometimes does something because they:": "Mosha nako nngwe o dire sengwe ka gore:", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Utlwelela ditsala tsa bona\n- Batla go dira seo bangwe ba se dirang\n- Nagana thata ka 'jaanong' go na le 'mankgapele'\n- Lerato le na le matlhagatlhaga mme le ka bona go elatlhoko go tswafisa\n- O seke wa tshwenyega ka go lekelela, o ka rata go lekelela\n- Nna le maitemogelo a mannye go itshepela mo go one.\n_ Go fisega go leka sengwe - go sa kgathalesege gore go diregang", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Go ka thusa go nna le seno mo mogopolong fa ngwana wa gago a tsaya tshwetso e e sa siamang. Bua le bona mme le fetse nako mmogo gore o kgone go ba thusa go tlhopha bokaone mo nakong e e tlang!", - "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Go tlhaloganya gore mosha wa gago o ikutlwa jaang le gore o ka ba tshegetsa jaang, go dira pharologanyo e kgolo mo go lona ka bobedi. Leba mosha wa gago mme o botse gore o ikutlwa jaang. Tobetsa sefatlhego fa tlase go itse go le gontsi:", - "Hopeful": "Tsholofelo", - "Self-esteem": "Maemo a bowena", - "Teens have goals and dreams for the future – near and far!": "Basha ba na le diphitlhelelo le ditoro ka isago - gaufi le kgakala!", - "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Botsisa mosha wa gago ka diphitlhelelo le ditoro tsa gagwe, mo rotloetse go nagana ke se ba se batlang mo isagong ya bona mme le dire leano mmogo la go di fitlhelela.", - "Praise your teen for overcoming difficulty and support them where you can.": "Rorisa mosha wa gago fa a fitile mo boimeng mme o mo tshegetse ka fa o kgonang.", - "A teen’s self-esteem is how they think of themselves.": "Maemo a mosha ka bo-ene a dira ke gore o nagana a le jaang.", - "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Rotloetsa tsela ya go iteba e e siameng, dira sekao ka go se itshege kgotsa go inyenyefatsa ka nako tsotlhe. Itse bokgoni ba mosha wa gago mme o tshegetse makoa a gagwe.", - "Lonely": "Bonosi", - "Anxious": "Maikutlo a a sa iketlang", - "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Basha ba ka ikutlwa ba le nosi le fa ba na le batho. Ba ka ikutlwa okare ga ba na motho yo ba ka buang le ene, go mo tshepa le go neelana.", - "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Maikutlo a a sa iketlang a tlwaelegile mme a re thusa go mekamekana le maemo a a boima. Mme fela maikutlo a a sa iketlang a a feteletseng kgotsa go tshwenyega go go thibelang basha go dira dilo tse ba di ratang ke bothata.", - "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Thusa mosha wa gago go senola seo se dirang gore a nne le maikutlo a a sa iketlang mme le dire leano mmogo gore le ka fetola jaang maikutlo aa.", - "Doing a relaxation activity together can help!": "Go dira ditirwana tsa go iketla mmogo go ka thusa!", - "Depressed": "Kgatelelo ya maikutlo", - "Self-harm": "Go ikutlwisa botlhoko", - "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Go ikutlwa o hutsafetse kgotsa mowa o le kwa tlase, go selekega mo moweng, tsotlhe ke maikutlo a tlwaelegileng a batho. Kgatelelo ya maikutlo e fetsa sebaka se se leele mme ditirwana tsa ka metlha tsa mosha wa gago di ka kgoreletsega. Mosha wa gago a ka ikutlwa a sena tshepo mme a sa rotloetsege go fetola sepe.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Go bolela mosha wa gago go 'emisa, go ka gakatsa dilo. Gongwe ba reetse, ba bontshe ka mowa o o repileng gore wa tlhaloganya mme o age boithsepi ba bona. Leka go bona thuso ya profeshenale.", - "What does that mean?": "Seo se raya eng?", - "How can you help?": "O ka thusa jang?", - "We all have negative thoughts sometimes.": "Rotlhe re na le megopolo e e sa siamang nako dingwe.", - "\"I am a failure\"": "\"ke motlholegi\"", - "What to do?": "Ke dire eng?", - "Examples": "Dikao", - "\"It’s your fault\"": "\"ke phoso ya gago\"", - "\"Let’s come up with a solution together\"": "\"A re tle ka tharabololo mmogo\"", - "\"I lost my job\"": "\"ke latlhegetswe ke tiro\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Ke ithutile go le gontsi mo tirong ya me - seo se tla thusa go bona tiro enngwe\"", - "\"Nobody likes me\"": "\"Ga go na motho yo a nkgatlhegelang\"", - "MAKE TIME": "DIRA NAKO", - "LISTEN": "REETSA", - "WORK TOGETHER": "DIRANG MMOGO", - "DISCUSS CONSEQUENCES": "TLOTLANG KA DITLAMORAGO", - "PRAISE": "GALALETSA", - "If something goes wrong, ask \"How could you have done that differently?\"": "Fa sengwe se sa tsamae sentle, botsisa\" O kabo o se direle jang go farologana?\"", - "START SMALL": "SIMILOLA GANNYANE", - "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Naya mosha wa gago maikarabelo a mannye kwa tshimologong. fa seo se tsamaya sentle, o ka oketsa go bontsha gore o tshepa mosha wa gago.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi. Re lemogile gore o tobeditse @data.habit.spend_time.in_text_title - o dirile sentle wa gopola!", - "Your goal was to spend one-on-one time with your teen.": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "O dira sentle ka go utulola ditharabololo tsa dikgwetlho tsa gago. Tsamaya o ye go di leka. Kamano ya gago le mosha wa gago e tla tiya le go feta!", - "DAY – Do it every day": "LETSATSI – Dira se letsatsi le letsatsi", - "PLAY – Let your teen choose the activity": "TSHAMEKA – Letla mosha wa gago go tlhopha tiro", - "STAY – Give your teen all of your attention": "NNA – Naya mosha wa gago tlhokomelo yotlhe ya gago", - "Why was this tip helpful for you?": "Goreng kakantsho eno e go thusitse?", - "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" e thusitse ka gonne...", - "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" e thusitse ka gonne...", - "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" e thusitse ka gonne...", - "Having a specific time to do this helps me to remember.": "Go nna le nako e e rileng ya go dira seno go nthusa go gakologelwa.", - "With a routine, my teen and I can both keep our schedule free.": "Ka go dira selo ka metlha, nna le mosha wa me re kgona go boloka thulaganyo ya rona e bulegile.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Go fetsa nako le mosha wa me letsatsi le letsatsi go thusa gore nna le bone/ene re tshepane.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ee ruri, le metsotso e 10 re le mmogo go dira pharologano – seo se dira gore go nne motlhofo go e rulaganya, gaufi le tiro ya gago le ditiro tsa legae!", - "Letting my teen choose what to do builds their confidence.": "Go letla mosha wa me go tlhopha se se dirwang go dira gore a itshepe.", - "If my teen chooses, s/he is more likely to want to spend time together.": "Fa mosha wa me e nna ene a tlhophang, go na le kgonagalo e ntsi ya gore a batle go fetsa nako re le mmogo.", - "Letting my teen choose shows that I care about his/her interests.": "Go letla mosha wa me go tlhopha go bontsha gore ke kgathalela se a se kgatlhegelang.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ka go amogela dikakantsho tsa mosha wa me, ke bontsha gore ke a mo reetsa.", - "Saying something nice about my teen’s choice helps them feel valued.": "Go bua sengwe se se molemo ka ditlhopho tsa basha ba me go dira gore ba ikutlwe ba tseelwa kwa godimo.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Ke nnete! Mme fa basha ba rona ba tlhopha, ba rotloediwa go rwala maikarabelo mo dikarolong tse dingwe tsa matshelo a bone.", - "By preventing interruptions, I show my teen that s/he is most important.": "Ka go dira gore go seka ga nna le dikgoreletsi, ke bontsha mosha wa me gore o botlhokwa go gaisa.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Le fa ke sa kgone go nna karolo ya ditiro tsa mosha wa me, jaaka metshameko, ke santse nka ba rotloetsa.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Fa ke le kelotlhoko, ke kgona go ithuta go le gontsi ka dikgatlhego, dipono le bokgoni tsa mosha wa me.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ee! Fa re tlhwaela tsebe basha ba rona ka botlalo, ba tlile go dira se se tshwanang le mo go rona nako nngwe fa re ba kopa sengwe!", + "You selected \"I would rather not answer\"": "O tlhophile “Ke tlhopha go se arabe”", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Go siame!\n\nGopola, fa o araba, dikarabo tsa gago di tlile go tsholwa di le sephiri mme di tlile go re thusa go go neela diteng tse di maleba go wena.", + "Are there adults in your family?": "A go na le bagolo mo lelapeng la gago?", + "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "App eno e tsepametse mo batsading bao ba nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola!", + "Are there teens in your family?": "A go na le basha mo lelapeng la gago?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "App eno e tsepametse mo malapeng a a nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola mo lelapeng la gago!", + "Are you sure you want to skip this question?": "A o a tlhomamisa gore o batla go tlola potso eno?", + "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "A o netefetse gore o batla go tlola potso e? Gopola, karabo ya gago e tlile go tsholwa e le sephiri mme e tlile go re thusa go tlhaloganya ditlhokego tsa gago tsa botsadi.\n\nO ka tlhopha le go se arabe potso nngwe le nngwe ka go tlhopha tshekeletsa.", + "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "O dirile sentle. Saense ya boboko e bontsha gore go laola kgalefo ya gago go tla tokafatsa tsela e boboko jwa mosha wa gago bo golang ka gone. Nna motlotlo ka wena.", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa gore o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla go gopotsa ka metlha gore o iketle, o lemoge gore o kgonne le go iteboga. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @data.workshop.w_stress.number - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @global.weekly_workshops gore o simolole.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDidirisiwa tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", + "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Re tla netefatsa gore o a tshegediwa ka go aga puisano. \n\nRe tla bua mo go oketsegileng ka go rulaganya tshireletsego ya mosha wa gago kgantele mo @global.weekly_workshops, mme fela o ka iponela dikakantsho tse di tseneletseng tsa go boloka mosha wa gago a sireletsegile mo tlase ga @data.parent_centre.my_tips.location_text!", + "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Go gontle. Re na le workshop e e rutang ka tekanyetsokabo ya lelapa e e ka thusang ka go tshwenyega ka madi ka kakaretso, le go fokotsa go omana ka madi.", + "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nRe na le workshop e e rutang ka tekanyetsokabo ya lelapa dibeke di le tlhano, mme o setse o ka kgona go bona ditlhabobotlhale dingwe tsa motheo ka tekanyetsokabo ya lelapa mo tlase ga @data.parent_centre.my_tips.location_text!", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Diteng tse di bulwang ka dipotso tseno jaanong di ka bonwa mo tlase ga @data.parent_centre.my_tips.location_text.", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nRe tlile go go neela tshegetso e oketsegileng ka seno mo nakong e e tlang @global.weekly_workshops fa o ka rata go itse mo go oketsegileng!", + "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Re a itse seno se bokete. Re tsentse dikakantsho tse di tla go thusang gore o iphe nako le mosha wa gago go @data.parent_centre.my_tips.location_text, gore o e bone ka nako e o e batlang ka yone. \n\nKa gonne @data.workshop.w_1on1.title e aga motheo wa sedirisiwa sa batsadi botlhe, e tla bo e le @global.weekly_workshop o e amogelang beke e e tlang!", + "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "O dirile sentle! @global.weekly_workshop ya rona e e latelang e tla go naya dikakantsho tse di oketsegileng tsa seno, jaaka motheo wa didiriswa tsotlhe tsa botsadi. Mme o setse o simolotse sentle tota!", + "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. Re tsentse dfidirisiwa tse di botlhokwa tsa kafa o ka dirisang go akgola mo @data.parent_centre.my_tips.location_text gore o tsene ka bonako.\n\nMo go @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa botswerere jono sentle.", + "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. Mo @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa bokgoni jono sentle.", + "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, gakologelwa mme o iteboge, go go thusa go kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo @data.workshop.w_stress.number ya @global.weekly_workshops- mme o setse o kgona go dirisa didirisiwa tse di thusang mo tlase ga@data.parent_centre.my_tips.location_text gore o simolole!", + "Talk Together": "Buang Mmogo", + "Share ideas, support each other!": "Bolelanang dikakantsho, lo tshegetsane!", + "Think Together": "Akanyang Mmogo", + "It's time to think together!": "Ke nako ya go akanya mmogo!", + "Think": "Akanya", + "It's time to think!": "Ke nako ya go akanya!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Fano ke botswerere jwa beke eno jo o ka bo itseelang! \n\nBo dirise kwa gae mme o bo iponele nako nngwe le nngwe go @global.parent_centre ya gago.", + "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Hemela kwa teng\n2. Bona fa dikgang di thaloganyega.\n3. Botsa gore ba tsere kae dikgang.\n4. Tlhola gape le ba bangwe/kgotsa motswedi yo o tshepang\n5. Nagana gore dikgang tseo di ka thusa kgotsa dia tshosa bangwe fa o ka di phatlhalatsa.", + "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Rotlhe ka nako dingwe re ka rata bo bolelela basha ba rona\"O tshwanetse o dire jaana, kgotsa... mathata\", fela ga se dire gore ba sale melao go feta kgale.\n\nGongwe, o ka ba thusa go tsaya ditshwetso tse di siameng ka go ba bontsha gore wa ba tshepa le go bua le bone:", + "DISCUSS CONSEQUENCES": "TLOTLANG KA DITLAMORAGO", + "Ask \"If you do this, what could happen?\"": "Botsisa\"fa o dira se, go tla diragala eng?\"", + "If something goes well, praise your teen!": "Fa sengwe se tsamaya sentle, boka mosha wa gago!", + "REFLECT TOGETHER": "DIRANG PONELO TENG MMOGO", + "If something goes wrong, ask \"How could you have done that differently?\"": "Fa sengwe se sa tsamae sentle, botsisa\" O kabo o se direle jang go farologana?\"", + "START SMALL": "SIMILOLA GO LE GONNYE", + "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Naya mosha wa gago maikarabelo a mannye kwa tshimologong. fa seo se tsamaya sentle, o ka a oketsa go bontsha gore o tshepa mosha wa gago.", + "MAKE TIME": "DIRA NAKO", + "Set aside time to have a conversation without distractions.": "Dira nako go nna le puisano e e senang dikgoreletsi.", + "Ask your teen questions and let them share their views without interrupting.": "Botsa mosha wa gago dipotso mme o mo letle go neelana ka dipono tsa gagwe ntle le go mo tsena ganong.", + "WORK TOGETHER": "DIRANG MMOGO", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Tlotlang ka bothata bo bo rileng, le tle ka tharabololo mmogo mme le dire seo le dumelanang ka sona.", + "PRAISE": "BOKA", + "Thank your teen for sharing and highlight how it is helping you both.": "Leboga mosha wa gago ka go arolelanela mme o tlhagise gore go le thusa jaang ka bobedi.", + "Hear a caregiver's testimonial": "Utlwa bosupi ba motlhokomedi", + "Read a caregiver's testimonial": "Buisa bosupi ba motlhokomedi", + "Why @local.workshop_data.title?": "Goreng @local.workshop_data.title?", + "Hear @global.topic_intro_name's message": "Utlwa molaetsa wa ga @global.topic_intro_name", + "Read @global.topic_intro_name's message": "Buisa molaetsa wa ga @global.topic_intro_name", + "Today's steps": "Dikgato tsa gompieno", + "Try it Together": "E Lekeng Mmogo", + "Let's practice together.": "A re ikatiseng mmogo.", + "What does that mean?": "Seo se raya eng?", + "How can you help?": "O ka thusa jang?", + "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Go tlhaloganya gore mosha wa gago o ikutlwa jaang le gore o ka ba tshegetsa jaang, go dira pharologanyo e kgolo mo go lona ka bobedi. Leba mosha wa gago mme o botse gore o ikutlwa jaang. Tobetsa sefatlhego fa tlase go itse go le gontsi:", + "Hopeful": "Tsholofelo", + "Resilient": "Go kgotlhelela", + "Self-esteem": "Maemo a bowena", + "Teens have goals and dreams for the future – near and far!": "Basha ba na le diphitlhelelo le ditoro ka isago - gaufi le kgakala!", + "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Botsisa mosha wa gago ka diphitlhelelo le ditoro tsa gagwe, mo rotloetse go nagana ka se ba se batlang mo isagong ya bona mme le dire leano mmogo la go di fitlhelela.", + "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Basha ba ba nang le kgotlhelelo ba kgona go mekamekana le maemo a a boima, go amogela diphetogo, le go rarabolola mathata fa a fitlha.", + "Praise your teen for overcoming difficulty and support them where you can.": "Rorisa mosha wa gago fa a fitile mo boimeng mme o mo tshegetse ka fa o kgonang.", + "A teen’s self-esteem is how they think of themselves.": "Maemo a mosha ka bo-ene a dira ke gore o nagana a le jaang.", + "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Rotloetsa tsela ya go iteba e e siameng, dira sekao ka go se itshege kgotsa go inyenyefatsa ka nako tsotlhe. Itse bokgoni ba mosha wa gago mme o tshegetse makoa a gagwe.", + "Lonely": "Bonosi", + "Anxious": "Maikutlo a a sa iketlang", + "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Basha ba ka ikutlwa ba le nosi le fa ba na le batho. Ba ka ikutlwa okare ga ba na motho yo ba ka buang le ene, go mo tshepa le go neelana.", + "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Botsisa mosha wa gago gore o ntse a ya jaang mme o leke go batla ditsela tse dintshwa mmogo tsa go buisana le ditsala le ba lelapa. - segolo metlheng ya go tswalelwa.", + "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Maikutlo a a sa iketlang a tlwaelegile mme a re thusa go mekamekana le maemo a a boima. Mme fela maikutlo a a sa iketlang a a feteletseng kgotsa go tshwenyega go go thibelang basha go dira dilo tse ba di ratang ke bothata.", + "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Thusa mosha wa gago go senola seo se dirang gore a nne le maikutlo a a sa iketlang mme le dire leano mmogo gore le ka fetola jaang maikutlo aa.", + "Doing a relaxation activity together can help!": "Go dira ditirwana tsa go iketla mmogo go ka thusa!", + "Depressed": "Kgatelelo ya maikutlo", + "Self-harm": "Go ikutlwisa botlhoko", + "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Go ikutlwa o hutsafetse kgotsa mowa o le kwa tlase, go selekega mo moweng, tsotlhe ke maikutlo a tlwaelegileng a batho. Kgatelelo ya maikutlo e fetsa sebaka se se leele mme ditirwana tsa ka metlha tsa mosha wa gago di ka kgoreletsega. Mosha wa gago a ka ikutlwa a sena tshepo mme a sa rotloetsege go fetola sepe.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Go bolelela mosha wa gago go 'emisa, go ka gakatsa dilo. Gongwe ba reetse, ba bontshe ka mowa o o repileng gore wa tlhaloganya mme o age boitshepi ba bona. Leka go bona thuso ya profeshenale.", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Nako nngwe basha ba ka ikutlwisa botlhoko ka bomo go lebana le maikutlo a a sa siamang jaaka go selekega, go itshola, go ikutlwa o le mongwe le go itlhowa. Se se ka baka ke kgatelelo ya maikutlo le maikutlo a a sa nnisegeng.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Go bolelela mosha wa gago go 'emisa fela' go ga ketefatsa dilo. Gongwe ba reetse, ba bontshe gore wa tlhalonya o theositse mowa mme o ba age maikutlo. Fa mosha wa gago a ikemiseditse go go tlhalosetsa gore go ikutwlisa botlhoko go dira ba ikutlwe ba le kaone, o ka similola go tlaloganya mabaka. Bona thusa ya porofeshenale.", + "A teen sometimes does something because they:": "Mosha nako nngwe o dira sengwe ka gore:", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Utlwelela ditsala tsa bona\n- Batla go dira seo bangwe ba se dirang\n- Nagana thata ka 'jaanong' go na le 'mankgapele'\n- Lerato le na le matlhagatlhaga mme le ka bona go elatlhoko go tswafisa\n- O seke wa tshwenyega ka go lekelela, o ka rata go lekelela\n- Nna le maitemogelo a mannye go itshepela mo go one.\n_ Go fisega go leka sengwe - go sa kgathalesege gore go diregang", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Go ka thusa go nna le seno mo mogopolong fa ngwana wa gago a tsaya tshweetso e e sa siamang. Bua le bona mme le fetse nako mmogo gore o kgone go ba thusa go tlhopha bokaone mo nakong e e tlang!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "O ka nna wa kopiwa gore o bontshe batho ba bangwe khoutu eno ba ba tla go tshegetsang mo leetong la gago la @global.parent_app.", + "Last sync at: @local.sync_latest": "Sync ya bofelo ka: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Sediriswa ga ise se sinkiwe. Sync e tla tlhagisa khoutu.", + "Sync now": "Sync gone jaanong", + "Syncing...": "Syncing...", + "Watch Together": "Lebelelang Mmogo", + "Let's watch a video together!": "A re lebe bidio mmogo!", + "Watch": "Leba", + "Let's watch a video!": "A re lebelele bidio!", + "Options": "Ditlhopho", + "Welcome @fields.user_name": "O amogetswe @fields.user_name", + "It's great to see you again!": "Go gontle go go bona gape!", + "Welcome @fields.group_name": "O amogetswe @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Go gontle go go bona gape! A re simolole ka pina ya malapa a a gotlhe.", + "Let's Slow Down": "A re Fokotse Lobelo", + "How would you like to do this workshop?": "O ka rata go dira workshop eno jang?", + "Coming soon": "E etla gautshwane", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Re tla tlhoka go bua ka mathata a mangwe a go nna motsadi pele re ka simolola go dira go @local.workshop_data.title.\n\nO ka bona didiriswa tsa botlhokwa mo @local.workshop_data.title o dirisa @global.parent_centre.", + "My name": "Leina la me", + "@global.weekly_workshop day": "letsatsi la @global.weekly_workshop", + "I do the workshops...": "Ke dira di-workshop...", + "My group's name": "Leina la setlhopha sa me", + "My group is now doing the workshop...": "Setlhopha sa me se dira workshop jaanong...", + "I am now doing the workshop...": "Ke dira workshop jaanong...", + "These quick questions will fit this app to your needs.": "Dipotso tseno di bonako mme di tla tshwanela sedirisiwa seno go ya ka ditlhoko tsa gago.", + "Let’s start with a few questions about you and your family.": "A re simolole ka dipotso di le mmalwa ka wena le lelapa la gago.", + "We would love to know your first name or nickname:": "Re ka rata go itse leina la gago la ntlha kgotsa leina le o tlwaelegileng ka lone:", + "Are you a woman or a man?": "A o mosadi kgotsa monna?", + "Woman": "Mosadi", + "Man": "Monna", + "How old are you?": "O nale dingwaga tse kae?", + "Adults": "Bagolo", + "Teens": "Basha", + "Children": "Bana", + "Babies": "Masea", + "How many people are in your household?": "O dula le batho ba le kae mo legaeng la gago?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "O ka dira @global.weekly_workshops ka bowena KGOTSA laletsa maloko mangwe a lelapa la gago kgotsa ditsala gore di tsene - o tla ithuta mo go oketsegileng ka mongwe go yo mongwe. Go tswa mo go wena!", + "How would you like to do your @global.weekly_workshops?": "O ka rata go dira @global.weekly_workshops ya gago jang?", + "Can you think of a name for your group?": "A o kgona go akanya leina la setlhopha sa lona?", + "Which day of the week would you like to do your @global.weekly_workshops?": "Ke letsatsi lefe mo bekeng le o ka ratang go dira @global.weekly_workshops ya gago ka lone?", + "Monday": "Mosupologo", + "Tuesday": "Labobedi", + "Wednesday": "Laboraro", + "Thursday": "Labone", + "Friday": "Labotlhano", + "Saturday": "Lamatlhatso", + "Sunday": "Latshipi", + "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga botswerere jo bo latelang.", + "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga bokgoni jo bo latelang.", + "You can always change these settings in your @global.weekly_workshop_options.": "O ka kgona go fetola diseting tseno ka metlha mo @global.weekly_workshop_options ya gago.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "A o tlhomamisegile gore o batla go bula di-workshop tsotlhe? Fa o setse o dirile seno o ka se kgone go di tswala gape", + "Unlock Workshops": "Bula di-Workshop", + "Using the app together": "Lo dirisa sediriso mmogo", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Go gontle go go bona!\n\nSa ntlha, a re thuse setlhopha sa gago gore se simolole.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Dumalanang ka melao ya lona mmogo:\n* Ke malatsi/dinako dife tse re tla kopanang ka tsone mo bekeng?\n* Ke mang yo o tla tshwarang (di)founu ka nako ya ditiro tsa rona?\n* Re ka netefatsa jang gore mongwe le mongwe a ka bua a gololesegile?\n* Re ka dirang gore rotlhe re ikutlwe re tlotliwa?", + "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "O ka nna wa fetola letsatsi la workshop ya lona le leina la setlhopha sa lona mo @global.weekly_workshop_options.", + "Some rules that other groups made:": "Melao mengwe eo ditlhopha tse dingwe di e dirileng:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Labobedi ka ura 7 maitseboa ke nako ya rona ya @global.parent_app mmogo\n* Refosanang go tshwara founo (tiro e le 1 motho mongwe le mongwe)\n* Amogelang maitemogelo a yo mongwe. Rotlhe ga re tshwane!\n* Fanang sebaka sa go bua le go reetsana\n* Dipotso tsotlhe di a amogelwa\n* Se re se bolelelanang ga re se bolelele ope", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Iphe metsotso e 5-20 le mosha wa gago lo le babedi, letsatsi lengwe le lengwe le o ka le kgonang mo bekeng eno.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Gopola - nako nngwe fa o kgona, iketle, gakologelwa o bo o iteboge. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Batsadi ba le bantsi ba nna le dikgwetlho mo go nneng le nako ya go buisana le basha ba bone. \n\nFano ke dikgwetlho tse 8 tse di di gaisang tse batsadi ba re boleletseng gore ba nna le tsone fa ba rulaganya kgotsa ba ipha nako le basha ba bone. Fa e le gore o lebane le seno kgotsa o tshaba gore o tla lebana le sone, tobetsa mo go yone go bona se e ka nnang tharabololo. O ka tobetsa mme o sekaseke dikgwetlho tse dingwe morago ga moo.", "Did you have any challenges when trying to spend time with your teen?": "A o nnile le dikgwetlho dingwe fa o leka go ipha nako le mosha wa gago?", "What challenge did you have when trying to spend time with your teen?": "O nnile le kgwetlho efe fa o leka go ipha nako le mosha wa gago?", @@ -1257,16 +498,257 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Bontle tota! Ka tsela eno, o ka tsepamisa mogopolo wa gago mo mosheng wa gago, gore a ikutlwe a le botlhokwa e bile a ratiwa.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Go gontle! O ka leka go ipha nako le mosha wa gago fa bana ba bangwe ba setse ba ile go robala, kgotsa ba tshameka ko ntle.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Bontle tota! Ka gongwe lo ka tsamaya ka dinao go ya mabenkeleng mmogo kgotsa lo lebelele metshameko, gore lo kgone go tlotla ntle le bana ba gago ba bangwe ba batla tlhokomelo ya gago.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.  Re lemogile gore o tobeditse @data.habit.instruct_positively.in_text_tite - o dirile sentle wa gopola!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Ke lebogela go bo o mpoleletse! O dirile sentle ka go leka go naya mosha wa gago ditaelo tse di siameng le go aga botsalano jo bo siameng le mosha wa gago. \n\nMosha wa gago o tshwanetse go akgolwa mme gape le WENA!", - "Which of the tips helped you?": "Ke dikakantsho dife tse di go thusitseng?", - "GET REAL – Can your teen do what you are about to ask?": "BUA NNETE – A mosha wa gago a ka kgona go dira se o mo kopang gore a se dire?", - "GET POSITIVE – Use positive words and praise them!": "BUA KA TSELA E E SIAMENG – Dirisa mafoko a a siameng mme o ba akgole!", - "GET CLEAR – Be clear and specific!": "ITLHALOSE SENTLE – Itlhalose sentle o bo o totobale!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Bontle tota! Fa re kopa mosha wa rona go dira sengwe se se kgonegang, go nna motlhofo gore ba atlege.", - "When we praise them, our teens feel encouraged to listen to us again!": "Fa re ba akgola, basha ba rona ba ikutlwa ba rotloetsega go re reetsa gape!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Bontle! Fa re akanyetsa ko pele ka ditaelo tse di totobetseng tse re di nayang mosha wa rona, ditaelo tsa rona di nna motlhofo gore a di latele!", + "DAY – Do it every day": "LETSATSI – Dira se letsatsi le letsatsi", + "PLAY – Let your teen choose the activity": "TSHAMEKA – Letla mosha wa gago go tlhopha tiro", + "STAY – Give your teen all of your attention": "NNA – Naya mosha wa gago tlhokomelo yotlhe ya gago", + "Why was this tip helpful for you?": "Goreng kakantsho eno e go thusitse?", + "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" e thusitse ka gonne...", + "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" e thusitse ka gonne...", + "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" e thusitse ka gonne...", + "Having a specific time to do this helps me to remember.": "Go nna le nako e e rileng ya go dira seno go nthusa go gakologelwa.", + "With a routine, my teen and I can both keep our schedule free.": "Ka go dira selo ka metlha, nna le mosha wa me re kgona go boloka thulaganyo ya rona e bulegile.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Go fetsa nako le mosha wa me letsatsi le letsatsi go thusa gore nna le bone/ene re tshepane.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ee ruri, le metsotso e 10 re le mmogo go dira pharologano – seo se dira gore go nne motlhofo go e rulaganya, gaufi le tiro ya gago le ditiro tsa legae!", + "Letting my teen choose what to do builds their confidence.": "Go letla mosha wa me go tlhopha se se dirwang go dira gore a itshepe.", + "If my teen chooses, s/he is more likely to want to spend time together.": "Fa mosha wa me e nna ene a tlhophang, go na le kgonagalo e ntsi ya gore a batle go fetsa nako re le mmogo.", + "Letting my teen choose shows that I care about his/her interests.": "Go letla mosha wa me go tlhopha go bontsha gore ke kgathalela se a se kgatlhegelang.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ka go amogela dikakantsho tsa mosha wa me, ke bontsha gore ke a mo reetsa.", + "Saying something nice about my teen’s choice helps them feel valued.": "Go bua sengwe se se molemo ka ditlhopho tsa basha ba me go dira gore ba ikutlwe ba tseelwa kwa godimo.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Ke nnete! Mme fa basha ba rona ba tlhopha, ba rotloediwa go rwala maikarabelo mo dikarolong tse dingwe tsa matshelo a bone.", + "By preventing interruptions, I show my teen that s/he is most important.": "Ka go dira gore go seka ga nna le dikgoreletsi, ke bontsha mosha wa me gore o botlhokwa go gaisa.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Le fa ke sa kgone go nna karolo ya ditiro tsa mosha wa me, jaaka metshameko, ke santse nka ba rotloetsa.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Fa ke le kelotlhoko, ke kgona go ithuta go le gontsi ka dikgatlhego, dipono le bokgoni tsa mosha wa me.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ee! Fa re tlhwaela tsebe basha ba rona ka botlalo, ba tlile go dira se se tshwanang le mo go rona nako nngwe fa re ba kopa sengwe!", + "Your goal was to spend one-on-one time with your teen.": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi.", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "O dira sentle ka go utulola ditharabololo tsa dikgwetlho tsa gago. Tsamaya o ye go di leka. Kamano ya gago le mosha wa gago e tla tiya le go feta!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Go nna motsadi go ka nna bokete. Nako tse dingwe go utlwalega e kete bana ba rona ga ba re reetse.\n\nMme saense e bontsha gore go ipha metsotso e se kae letsatsi le letsatsi o tlhomile mogopolo mo nakong e o iphang yone le mosha wa gago lo le babedi go thusa go aga tshepo le lerato.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Nako ya lona lo le babedi ke fa o tlhoma mogopolo mo go bone, go sena TV kgotsa founo. Dira gore ba etelele pele se o se dirang kgotsa se lo buang ka sone.\n\nGo gontle go dira metsotso e le masome a mabedi ka letsatsi mme gone le metsotso e metlhano e siame tota.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Dumela.\n\nSetlhogo sa rona ke go ipha nako mmogo le bana ba rona.\n\nGo botlhokwa go ipha nako le bana ba rona gore ba kgone go re tlhaloganya, mme le rona re nna le tshono ya go ba itse. \n\nGopola, lelapa le le tlhaloganyanang le tshela ka kutlwano.", + "Have you spent time with your teen already?": "A o setse o iphile nako le mosha wa gago?", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Re lebogela go bo o lekile thata go nna motsadi yo o botoka. O a ratiwa e bile oa anaanelwa!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Go ipha nako le mosha wa gago go thusa go aga go tshepana magareng ga lona. \n\nTswelapele ka @global.parent_app ya gago ya mosepele jaanong - wena le lelapa la gago lo tla bona dipholo tse dintle.", + "First @global.weekly_workshop!": "Sa Ntlha @global.weekly_workshop!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.user_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Dumela @fields.group_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\n@local.workshop_data.in_text_title ya gago e setse e go letile!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Ga go na go tsaya nako e telele, mme o tla bona tshedimosetso ya botlhokwa. \n\nO dirile sentle go leka go nna motsadi yo o botoka. Kamoso, o ka kgona go tsena mo workshop e ntšha.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O dirile sentle go fetsa @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa, go itumelela le go ithuta go nna le bokgoni jo bosha!", + "Let's think of ways to spend one-on-one time with your teen.": "A re akanye ka ditsela tsa go ipha nako mmogo le mosha wa gago.", + "What could you do to spend one-on-one time with your teen?": "O ka dira eng go ipha nako mmogo le mosha wa gago?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "O ikutlwa e kete GA O NA NAKO mme o lapile? Gape gopola go akanya ka ditsela tse di se kitlang di tsaya nako e e oketsegileng.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "O naledi! \n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela kwa teng gore o iketle. \n\nGopola, o amogela @global.parent_point nako nngwe le nngwe fa o itlhokomela - o botlhokwa!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Ditiro tsa go itlhokomela\n* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Buang dikakantsho! \n\nKe dilo dife tse lo ka di dirang go ipha nako mmogo le basha ba gago?\n\nO ikutlwa e kete GA O NA NAKO mme o lapile? Tlaya ka dikakantsho tsa nako ya lona lo le mmogo tse di sa tseyeng nako e ntsi, jaaka go ya lebenkeleng mmogo ka dinao.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", + "DAY - Try to do it every day": "LETSATSI – Leka go dira seno letsatsi le letsatsi", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Batla metsotso e 5 (kgotsa go feta!) letsatsi le letsatsi fa mosha wa gago a sena sepe se a batlang go se dira.", + "PLAY - Let your teen choose": "TSHAMEKA - Letla mosha wa gago a tlhophe", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Bolelela mosha wa gago gore o ka rata go fetsa nako le ene le gore ba tlhophe gore ba batla go dira eng kgotsa go bua ka eng. Ba ka tsaya seno se sa tlwaelega ko tshimologong, mme ba tla itumelela nako eno le wena!", + "STAY - Focus on your teen": "DULA - O tlhomile mogopolo mo mosheng wa gago", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Tima TV mme lo beele difouno ko thoko. Lebelela mosha wa gago. Dumela ka tlhogo kgotsa o re “ke a bona” go bontsha gore tota o tlhwaile tsebe. Amogela se ba se buang ntle le go ba atlhola.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Go ipha nako mmogo le mosha wa gago e ka nna monate le mo go wena, tota! Go ka nna ga dira gore o ikutlwe o sa tshwenyega thata mo maikutlong.", + "Great!": "Go gontle!", + "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ke a itse botshelo bo ka nna bokete. Ke motlotlo ka wena. \n\nGo sa kgathalesege gore o ikutlwa jang, go molemo go bo o le fano!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Re motlotlo tota ka lona. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, binang mmogo mme lo keteke!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Re motlotlo tota ka wena. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, bina mme o keteke!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re go akgole, mme o rulaganye tshegetso ya botsadi ya gago e e tlang.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re keteke le wena, mme o dire thulaganyo ya tshegetso ya gago ya @global.parent_app e e tlang.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Dumelang lotlhe.\n\nSetlhogo sa gompieno ke go keteka le dikgato tse di latelang.\n\nGo ntse go le monate tota, go ntse go le monate go nna le wena mo loetong leno. Gompieno re keteka loeto le re le tshotseng mmogo. \n\nGompieno re keteka tsotlhe tse re di ithutileng mo nako eno yotlhe.", + "Today you will celebrate, look back and look ahead:": "Gompieno o tla keteka, o lebe ko morago mme o lebe ko pele:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Leba kwa morago le go buisana\n* Didirisiwa: Kafa lo ka thusanang ka teng\nKOPANANG - LETSANG - MOLAETSA - BUANG\n* Go rulagaya tshegetso", + "Today you celebrate and reflect on your experiences.": "Gompieno o a keteka o bo o leba kwa morago mo maitemogelong a gago.", + "End of programme check-in": "Bofelo ba netefatso ya matseno a lenaneo", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "O ntse o dirisa @global.parent_app mo dikgweding tse fetileng, le fa go ntse jalo go godisa mosha ga go fele! Potso e e latelang ka maitemogelo a gago a go godisa ngwana go tla re thusa go sekaseka go godisa bana ga gago.\n\nBua nnete. Gopola gore dimilione tsa batsadi ba ikutlwa jaaka o ikutlwa, mme rotlhe re tshwanelwa ke go tshegediwa. Ga o esi!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "O bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse di batlegang. O ka nna wa tlola tiro eno.", + "Let's talk about what has changed.": "A re bue ka se se fetogileng.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Tlotlang mmogo:\n* Ke eng se se fetogileng mo lelapeng la gago?\n* Ke eng se o leng motlotlo ka sone se o se dirileng?\n\nGopolang go akgolana lo bo lo rotloetsane!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Dirang thulaganyo gore lo tlile go tshegetsana jang go ya ko pele. \n\nLo ka dirisa dikakantsho tsa malapa a mangwe, kgotsa lo itireleng tsone!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Wena le ba lelapa la gago lo ithutile go le go ntsi. A re akanyeng ka se se fetileng mme re bone gore go fetogile eng.", + "Reflect": "Akanya ka se o se dirang", + "Listen and reflect": "Reetsa le go akanya", + "Read and reflect": "Buisa o bo o akanye", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Tswala matlho o bo o iketle.\n\nAkanya ka botshelo jwa lelapa la gago pele ga o simolola leeto la gago ka app eno.\n \nAkanyetsa kwa morago ka bokgoni jo o bo ithutileng:\n* Go itlhokomela\n* Go ipha nako lo le mmogo\n* Kakgolo\n* Ditaelo tse di siameng\n* Go laola go tshwenyega mo maikutlong\n* Go dira tekanyetsokabo ya lelapa\n* Melao\n* Ditlamorago o ritibetse\n* Go rarabolola mathata\n* Pabalesego ya basha\n* Go dirisana le mathata a a masisi\n\nAkanya ka leeto le o le tsereng - o le bone le ntse jang:\n* Re bolelele megopolo ya gago le maitemogelo\n* Akanya ka dipolelo o bo o ithute mo go tsone\n* Ikatisetse bokgoni jwa gago le mosha wa gago\n\nA go na le sengwe se se fetogileng ka wena le ba lelapa la gago?\n\nO tlhokang gore o tswelele go dirisa bokgoni jwa gago?", + "MEET": "KOPANANG", + "Keep meeting regularly to give each other parenting support.": "Nnnang lo kopana ka metlha go re lo neelane tshegetso ya botsadi.", + "CALL": "LETSANG", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Nnang ‘ditsala tsa batsadi’ go letsetsana fa lo sa itumela kgotsa o sa itse gore o dire eng.", + "TEXT": "MOLAETSA", + "Text each other every week to share what you’ve done well.": "Romelanang melaetsa beke le beke lo bolelana gore ke eng se lo se dirileng sentle.", + "SHARE": "BUANG", + "Share @global.parent_app and help other families start their journey.": "Bua ka @global.parent_app mme o thuse malapa a mangwe go simolola leeto la bone.", + "Fantastic! We are proud of you for all you have done over the past weeks.": "Bontle! Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", + "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Re maswabi gore ke letsatsi le le bokete. Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 o tlile gae thari.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 o tlile gae thari.\n\nKe ditlamorago dife tse di ka thusang fano?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Tota ditlamorago ga di tshwane kgo le kotlhao: tsone di neela basha ba rona tshono ya go ithuta gore ke bone ba rwalang maikarabelo a se ba se dirang.\n\nO ka kgona go di laola E BILE di mosola go feta go itaya kgotsa go goelela!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.\n\nKe ditlamorago dife tse di ka thusang fano?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Ditlamorago di na le mosola thata fa o di tlotla le basha e bile lo dumalana ka tsone go sa le gale pele o di dirisa.\n\nE bile: ga se gore ka metlha ditlamorago di nna le diphelelo tse di sa siamang... Lo ka nna lwa dumalana ka ditlamorago tse di SIAMENG fa go dirwa dilo tse di SIAMENG e le gore go tle go nne le boitshwaro jo bo siameng le go feta!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.", + "What consequence would help here?": "Ke ditlamorago dife tse di ka thusang fano?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.\n\nKe ditlamorago dife tse di ka thusang fano?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Tiro e re go e abelang go e dira kwa gae beke eno e tla nna go bua le ngwana wa gago wa dingwaga tsa bosha ka ditlamorago di le DINGWE tse di sa siamang le ditlamorago di le DINGWE tse di siameng.\n\nDitlamorago di tshwanetse go nna:\nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe)\nDI SA FETOFETOGE (ka go tshwana nako le nako)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Boitshwaro jo bo sa Siamang: Go tla gae thari. \n\nDitlamorago tse di sa Siamang: Ga a kitla a bona ditsala tsa gagwe letsatsi le le latelang. \n\nBoitshwaro jo bo sa Siamang: Go bua ka tsela ya go kgoba. \n\nDitlamorago tse di sa Siamang: Kwala lekwalo la go kopa maitshwarelo. \n \nBoitshwaro jo bo Siameng: Go thusa ka go ya mabenkeleng. \n\nDitlamorago tse di Siameng: Go fiwa metsotso e le 30 gore a itumelele go dira sengwe se a se ratang. \n\nBoitshwaro jo bo Siameng: Go thusa ka go tlhokomela bomonnawe. \n\nDitlamorago tse di Siameng: Go fiwa nako e e oketsegileng ka ura a na le ditsala tsa gagwe mafelobeke.", + "introduce a consequence together": "itsise ditlamorago mmogo", + "Did you have any challenges when trying to introduce a consequence together?": "A o kile wa nna le dikgwetlho dingwe fa o leka go itsise ditlamorago mmogo?", + "What was difficult for you about introducing a consequence with your teen?": "Ke eng se se nnileng bokete mo go wena ka go itsise mosha wa gago ka ditlamorago?", + "I got very angry when my teen broke the rule.": "Ke ile ka galefa tota fa mosha wa me a roba molao.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Fa re ema go se kae pele ga go araba, go re thusa gore re kgobe makgwafo mme re arabe botoka. \n\nNako e latelang fa mosha wa gago a dira gore o galefe, leka go ema go se kae pele. Le go hemela ko teng makgetlonyana go ka dira pharologanyo e kgolo tota!", + "My teen got very angry with me after I gave the consequence.": "Mosha wa me o nkgalefetse tota morago ga ke sena go mo naya ditlamorago.", + "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Fa mosha wa gago a galefa, o ka nna wa tlhoka go mo katoga go fitlha loo-babedi lo kgobile makgwafo. \n\nTlhola go netefatsa gore ditlamorago tsa gago di na le tekatekano mme di a utlwala. Reetsa tlhaloso ya mosha wa gago, mme o netefatse go neelana ka “Tshireletsego ya go Itshwarela” fa ba robile molao e le gore ba nne ba sireletsegile.", + "I introduced the consequence without first discussing it with my teen.": "Ke itsisitse ditlamorago ntle le go tlotla ka yone le mosha wa me.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "A o ka kgona go dira ditlamorago fa seno se direga? Fa re tlhoma ditlamorago mmogo le basha ba rona, ditlamorago e tla nna tsa nnete, mme basha ba rona ba tla batla thata le go kgona go latela molao.", + "I forgot to follow through with the consequence.": "Ke lebetse go latelela ditlamorago.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Rotlhe re dira diphoso! Fa re latela ditlamorago ka tsepamo, ke moo bana ba rona ba tla tlhophang go itshwara sentle mo isagweng.", + "Even with the consequence, my teen still does not follow the rule.": "Le fa go na le ditlamorago, mosha wa me o sa ntse a sa latele molao.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Fa mosha wa gago a tswelapele a roba melao, o ka nna wa tlhoka go ipha nako sentle le ene. \n\nLeka go tsamaya le mekgele ya gago e mengwe – jaaka go itlhokomela, go ipha nako mmogo, le go baka. Botswerere jotlhe jono bo tla thusa mosha wa gago go ikutlwa a ratiwa thata e bile a sireletsegile... mme kgatelelo ya gago ya maikutlo e tla fokotsega!", + "We only created a negative consequence, not a positive consequence.": "Re tlhodile fela ditlamorago tse di sa siamang, e seng tse di siameng.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Go ka nna bokete go akanya ka ditlamorago tse di molemo nako e nngwe. Ditlamorago tse di molemo di tla rotloetsa mosha wa gago go tsaya maikarabelo a oketsegileng, mme o tla bona pharologanyo!", + "My teen suggested being hit as a negative consequence.": "Mosha wa me o akantsha go itewa e le ditlamorago tse di sa siamang.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Basha ba ka bona go itewa e le gone fela ditlamorago tsa go roba melao. \n\nAkantshana ditlamorago dingwe tse di seng thata le bone tse di ka ba thusang go tlhaloganya gore ba dirile sengwe se se sa siamang. Tseno di ka dira thata mme e nne sekao se se molemo!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng).", + "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "O ka thusa mosha wa gago go tlhaloganya gore go roba molao wa lelapa go na le ditlamorago. \n\nMme gore o dira seo JANG ke gone go leng botlhokwa. \n\nGo otlhaya ka tsela e e siameng go thusa basha gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno ke ditlamorago tse di ritibetseng.\n\nGo botlhokwa gore fa re itsise basha ba rona ditlamorago re ba akaretse, mme fela gape sa botlhokwa ke gore re nne re kgobile makgwafo fa re ba itsise ditlamorago.\n\nSeo se tla thusa mo go rona gore re dumalane ka go itsise ditlamorago tse di ritibetseng mo basheng ba rona mme basha ba rona ba tla kgona go di gopola motlhofo fa re ba akaretsa mme seo se tla dira gore ba nne le maikarabelo.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Go le gantsi basha ga ba ikobele melao. Nako ya fa ba gola ke nako e e thata ya fa ba leka go ithuta gore ke bomang. \n\nKa lesego, go na le ditsela tsa go otlhaya ngwana wa gago wa dingwaga tsa bosha o sa tenega kgotsa o sa dirise dikgoka... e bile ditsela tseno di dira sentle!\n\nGo tlhalosa ditlamorago o ritibetse maikutlo go thusa bana ba rona gore ba bone gore ba tla rwala maikarabelo a se ba se dirang – e ka tswa se siame kgotsa se sa siama. \n\nA re boneng dikai di le mmalwa - a re re o motsadi:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ditlamorago tsa fa o ritibetse maikutlo e tshwanetse go nna... \n\nTEKATEKANO: Se nne makgwakgwa e bile tota o ka dira seo \n\nKA BONAKO: Di neele ka bonako jo bo kgonegang \n\nO SA FETOFETOGE: Ditlamorago di le dingwe ka metlha", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Rulaganya go tla ka ditlamorago o ritibetse maikutlo fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa. Gakologelwa gore di tlhoka go nna \n\nTEKATEKANO - BONAKO - DI SA FETOFETOGE", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "A o setse o kgonne go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro jwa mosha wa gago?", + "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Feleletsa workshop mme o leke go buisana le mosha wa gago go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro lo le mmogo.", + "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @fields.user_name! Gompieno re keteka kgwedi di le pedi tsa go dirisa @global.parent_app!\n\nO dira bontle! Tirelothuto ya beke eno e tlile go go thusa go itse se o ka se dirang fa mosha wa gago a sa latele melao ya fa gae.", + "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Dumela @fields.group_name! Gompieno re keteka kgwedi di le pedi tsa go dirisa @global.parent_app!\n\nO dira bontle! Tirelothuto ya beke eno e tlile go go thusa go itse se o ka se dirang fa mosha wa gago a sa latele melao ya fa gae.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Go gontle gore o ntse o dirisa @global.parent_app. O setse o iponetse didiriswa tse 6 tsa go nna motsadi! \n\nDira workshop e e latelang go iponela sedirisiwa se se nngwe sa go nna motsadi!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Fa go nna le maemo a a ritibetseng kwa morago seno se thusa mosha go latela ditaelo sentle – e leke pele ga o tswelela!\n\nO dirile sentle go bontsha maikemisetso a a kalo ka ba lelapa la gago.", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "Tiro e ntle go fetsa completing the @local.workshop_data.in_text_title. kamoso, o ka lekola tirelo e ntsha go go thusa go repa, natefelwa le go ithuta bokgoni jo bo thusang!", + "Why did giving a consequence this way not work well?": "Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "Ee, go tsibogela maemo ka tsela e e ntseng jalo go ile ga dira gore mongwe le mongwe a tenege le go galefa le go feta.", + "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "A re baleng ka se se diragetseng ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang? O thari!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ga o latele molao wa rona! Ke tlile go go itaya!”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Ga o na tekatekano! Ga o nke o ntheetsa!! Ke go tlhoile!”", + "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "A re tlotleng gape ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", + "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ke tshwenngwa ke gore o sa ntse o tla gae thari, @global.w_consequence_teen_boy_1. Ke eng se re ka se dirang go go thusa gore o gakologelwe go tla gae ka nako?”\n\n@global.w_consequence_teen_boy_1: “Fa ke tla gae ka nako, gongwe nka robala thari ka metsotso e le 30 go feta ka tlwaelo?”", + "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Kakantsho eo e molemo tota! Jaanong re tshwanetse go dira eng fa o sa ikobele molao ono? \n\n@global.w_consequence_teen_boy_1 (o itoma diteme): “Mgmluuhm”", + "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Bua fela, ke a itse gore o akantse sengwe.”\n\n@global.w_consequence_teen_boy_1: \"Go siame…. Go ka nna jang ka: Ke tshwanelwa ke go dira tirogae ya me?”", + "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Gone mme tirogae ke selo se o tshwanetseng go se dira. Fa o lebala molao, go tla bo go siame gore o seka wa bonana le ditsala tsa gago letsatsi le le latelang.”\n\n@global.w_consequence_teen_boy_1: \"Go siame, @global.w_consequence_male_caregiver.\"", + "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Letsatsi le le latelang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Go setse go le thari!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, Ke bosigogare mme o tlile gae thari go na le nako e re dumalaneng ka yone. Le fa gone o ka tlhalosa jang, o tshwanetse go tlhaloganya gore se o se dirang ga se a siama. @global.w_consequence_female_caregiver ke ntse ke tshwenyegile tota.”", + "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Ditsala tsa me di ne di batla gore re fetse nako e telelenyana mmogo. Ba ne ba re ke ngwana fa ke setse ke batla go ya gae.” \n\n@global.w_consequence_male_caregiver: “Ke a itse gore gantsi go thata go gana se ditsala tsa gago di go kopang sone. A re ye go robala, re tla bua ka kgang eno mo mosong fa re ikhutsitse sentle.”", + "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Intshwarele go bo ke dirile gore o tshwenyege le @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ke a leboga. Jaanong tsamaya o ye go robala, mme gone, itse gore ka gonne o tlile gae thari, kamoso maitseboa ga o ye gope.”", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le motlotlo - tseo di didirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Tlotlang mmogo: \n* Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver o ne a galefile", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver ga a ka a letla @global.w_consequence_teen_boy_1 gore a tlhalose", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Ga go a ka ga tlotliwa ka ditlamorago pele le @global.w_consequence_teen_boy_1", + "The consequence was too strong": "Ditlamorago di ile tsa nna bogale thata", + "Giving a consequence this way did not work well because...": "Go dirisa ditlamorago ka tsela eno ga go a dira sentle ka gonne...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Tlotlang mmogo:\n* Ke melao efe a basha ba gago go le gantsi ba sa e lateleng? \n* Ke ditlamorago dife tse o ka di dirisang mo molaong mongwe le mongwe o o tobileng fa o sa latelwe? \n\nDitlamorago di tshwanetse go nna: \nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe) \nSE FETOFETOGE (ka go tshwana nako le nako)\n\nAkgola le go rotletsana – re ka kgona go nonotshana!", + "Let's talk about this story": "A re bueng ka kgang eno", + "Why did using a consequence work well this time?": "Goreng go dirisa ditlamorago go dirile sentle mo lekgetlong leno?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver ba buile ka ditlamorago ba ritibetse maikutlo", + "They agreed on consequences together": "Ba ile ba dumalana mmogo ka ditlamorago", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver o ne a tsiboga a ritibetse maikutlo mme gone a tiisitse fa @global.w_consequence_teen_boy_1 a ne a sa ikobela molao", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver o ne a reetsa @global.w_consequence_teen_boy_1", + "The consequence was realistic and appropriate": "Ditlamorago di ne di utlwala e bile di tshwanela", + "Using a consequence worked well this time because...": "Ditlamorago di dirile sentle mo lekgetlong leno ka gonne...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Tsela e o itsiseng ka yone ditlamorago o ritibetse maikutlo e botlhokwa. Gakologelwa gore, fa o akaretsa mosha wa gago, gantsi dilo di nna botoka!", + "EXPLAIN": "TLHALOSA", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Tlhomamisa gore lotlhe lo ritibetse maikutlo. Kgwa mowa makgetlo a le mmalwa. Tlhalosetsa mosha wa gago gore ke eng fa boitshwaro jwa gagwe bo go tshwenya.\n\nTlhalosa mabaka a go bo melao e o e beileng e le botlhokwa. O ka nna wa mo tlhalosetsa gore o ikutlwa jang - ga go phoso go tlhalosa gore o go swabisitse.", + "AGREE": "DUMALANA", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Tlhalosetsa mosha wa gago gore diphelelo e tla nna eng fa a ikobela melao le fa a sa e ikobele.\n\nBa kope gore ba tle ka dikakantsho tsa bone. Tlotlang go fitlha lo dumalana ka sengwe se tota se ka kgonegang.\n\nTlhalosa ditlamorago tsa fa molao O SA ikobelwe le gore ditshiamelo e tla nna dife fa O ikobelwa.", + "ACT": "TSAYA KGATO", + "When your teen follows the rule, give praise and privileges!": "Fa mosha wa gago a ikobela molao o o o beileng, mo akgole o bo o mo neye ditshiamelo!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Ba tla bona gore wa ba tlotla e bile o ba tsaya tsia. Gakologelwa: Fa re nna re ba akgola, ba tla nna ba bontsha boitshwaro joo jo bo siameng!", + "When your teen does not follow the rule, follow through with the consequence.": "Fa mosha wa gago a sa ikobele molao o o beilweng, latelela seo ka ditlamorago.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Fa mosha wa gago a tlola molao, mo neele ditlamorago o ritibetse. O tshwanetse go dira jalo ka TEKATEKANO (o se makgwakgwa), KA BONAKO (o se ka wa okaoka) O SA FETOGE (dira se se tshwanang ka metlha).", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "O ka tla ka ditlamorago o ritibetse jang fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa? \n\nGakologelwa gore e tshwanetse go nna: \nTEKATEKANO - BONAKO - E SA FETOFETOGE", + "Not seeing any friends for a month": "Go sa etele ditsala kgwedi yotlhe", + "This may be hard to do for you and also too harsh!": "Go ka nna bokete gore o tseye kgato eno e bile e ka lebega e le makgwakgwa!", + "Cancelling their birthday plans in a month’s time": "Go khansela dithulaganyo tsa bone tsa letsatsi la botsalo mo lobakeng lwa kgwedi", + "This is too far in the future, and too harsh as well!": "Go setse nako e telele e bile le yone e makgwakgwa!", + "No TV this evening": "Maitseboa ano ga go lebelelwe TV", + "Perfect, this sounds fair and can be done straight away": "Bontle, seno se lebega se le tekatekano e bile se ka dirwa gone jaanong", + "Self-care is a key parenting tool.": "Go itlhokomela ke sedirisiwa sa botlhokwa sa botsadi.", + "So good to hear you are feeling well today. You are incredible!": "Ke itumelela go utlwa gore o tsogile sentle gompieno. O botlhokwa!", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Tshwarelo gore dilo di bokete gone jaanong. Hemela kwa teng mme o itse gore o botlhokwa.", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, le go go thusa go rulaganyetsa isago. \n\nGongwe lo ka rulaganya dijo tsa moletlonyana mmogo le go rulaganya mmino fa e le gore lo ka rata go bina!", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, mme lo ka bua gore ke eng se lo batlang go tswelela lo thusiwa ka sone. \n\nLo ka rulaganya go tla ka sengwe se lo tla se itumelelang go keteka – gongwe dijo kgotsa mmino o lo ka ratang go o reetsa!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "O na le mosha wa gago tlhopha nngwe ya maemo ano (kgotsa o ikakanyetse one ka bowena!). Leba popae, mme lo tlotle gore lo ne lo ka dira eng lo le mmogo fa seno se diragaletse tsala kgotsa mo lelapeng la gago. \n\nMme gakologelwa: KGWA MOWA - REETSA - AKANYA", + "prepare for a possible crisis with their teens": "rulaganya go santse go na le nako gore fa go ka tlhaga maemo a tshoganyetso le basha ba gago", + "prepare for a possible crisis with your teen": "rulaganya go santse go na le nako fa go ka tlhaga maemo a tshoganyetso le mosha wa gago", + "My teen told me that something serious happened to them and I did not know how to handle it.": "Mosha wa me o mpoleletse gore sengwe se se masisi se mo tlhagetse mme ke ne ke sa itse gore nka dira jang.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Akgola mosha wa gago gore o go boleletse; ga go motlhofo go dira seo! Gopola, o ka dirisa botswerere bope fela jo o bo tlhophileng go tswa mo lebokosong la didiriswa: Ema go se kae, dirisa dikgato tse nne tsa go rarabolola mathata, mme o leke go kgaratlha gore wena le ngwana wa gago lo newe tshegetso e lo e tlhokang!", + "Get support": "Batla tshegetso", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Puisano e dirile gore ke seka ka nnisega tota ka gonne e nkgopoditse tiragalo e e sa siamang e nkileng ka nna le yone.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Fa re gopodiwa ka ditiragalo tse di ntseng jalo, go tlwaelegile go ikutlwa o tenegile kgotsa o galefile. Go botlhokwa go batla nako ya fa o kgobile makgwafo, gore o kgone go akanya gore o tlhoka tshegetso e ntseng jang. O ka nna wa tlhoka go bua le mongwe.", + "One of us did not feel comfortable.": "Mongwe wa rona o ne a sa ikutlwe a nnisega.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Seno ke selo se se bokete go bua ka sone. Se batlele nako ya fa o kgobile makgwafo. Re a itse gore go motlhofo thata fa re sa bue ka dilo tseno e bile re solofela gore ga di kitla di re diragalela. Le fa go ntse jalo, go ithuta go lepalepana le mathata go tshwana le go batla inshorense; go botoka fa ka METLHA o akanya ka tsone mme o nna o ipaakantse.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Mokgele wa gago e ne e le go buisana ka maemo a ka tlhagang ka tshoganyetso le mosha wa gago mme o a direle thulaganyo.", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Malapa otlhe a na le mathata a one. Fa re ipaakanyetsa mmogo e bile re itse gore re ka bona thuso kae PELE ga sengwe se se maswe se diragala, re ka kgona go fenya mathata mangwe le mangwe.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Dumelang, lotlhe.\n\nGompieno re tlile go bua ka go lepalepana le mathata.\n\nMathata a ka diragala gongwe le gongwe. Mathata a ka diragala nako nngwe le nngwe. Ka jalo, go botlhokwa gore jaaka lelapa le nne le ipaakantse go sa le gale fa go ka direga gore mongwe mo lelapeng a welwe ke mathata. \n\nGo botlhokwa gore go nne le dipaakanyetso gore mongwe le mongwe mo lelapeng a ikutlwe a sireletsegile. \n\nFa o le mo mathateng, gopola go ema go se kae, go kgwa mowa le go ipoloka o ritibetse maikutlo. Seno se tla go thusa gore o kgone go lepalepana le mathata botoka.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Go a thusa go ikatisetsa go rarabolola mathata pele ga a diragala. \n\nBona gore malapa ano a matlhano a ile a nna le mathata ka dinako dife. A re re o motsadi: O ne o tla dira eng?\n\nGakologelwa: KGWA MOWA - REETSA - AKANYA", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Bothata 1: @global.w_crisis_teen_boy_2 dintwa kwa sekolong", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Ke la ntlha ke nna le bothata jono. Mme jaanong ke tlile go lelekwa”", + "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Bothata 2: @global.w_crisis_teen_girl_1 ke imile", + "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke tlhabilwe ke ditlhong tota. Ga ke itse gore ke direng”", + "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Bothata 3: @global.w_crisis_teen_boy_2 ke imisitse mosetsana", + "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ga ke batle go nna le ngwana\"", + "How could you respond to @global.w_crisis_teen_boy_2?": "O ka tsibogela jang @global.w_crisis_teen_boy_2?", + "Crisis 4: Someone in the family gets sick": "Bothata 4: Mongwe mo lapeng o simolola go lwala", + "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Diteko tsa re ke na le HIV. Ke tshogile gore ke tlile go swa”", + "How could you respond in this situation?": "O ka tsibogela jang seemo seno?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Bothata 5: mosimane yo o ratanang le @global.w_crisis_teen_girl_1 o mo pateletsa gore ba robalane", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: “Tota ke ne ke sa batle. Jaanong ke tlile go ima kgotsa go tsenwa ke bolwetsi. @global.w_crisis_female_caregiver, ke tshogile tota...\"", + "How could you respond to @global.w_crisis_teen_girl_1?": "O ka tsibogela jang @global.w_crisis_teen_girl_1?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Gakologelwang gore lo thusane lo bo lo kgothatsane. Ga go motlhofo go ritibala maikutlo le go reetsana ka nako ya mathata - re motlotlo ka wena.", + "Have you discussed with your teen what you would do in a crisis situation?": "A o kile wa buisana le mosha wa gago gore lo tla dira eng fa go tlhaga mathata?", + "Crisis Examples": "Dikai tsa Mathata", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "O ikemiseditse go nna motsadi. Nna motlotlo ka wena - seno ke phitlhelelo e kgolo ka bo yone!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Go molemo gore o na le rona mo loetong leno la go nna motsadi! \n\nFeleletsa @local.workshop_data.in_text_title mme o ithute tsela e e molemo go tsiboga fa mosha wa gago a go tlhoka thata.", + "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.user_name! Dipharagobe di ka diragalela mongwe le mongwe - Go ipaakanya go thusa thata.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", + "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.group_name Dipharagobe di ka diragalela mongwe le mongwe - Go ipaakanya go thusa thata.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Ga re itse mathata a ka tlhaga leng, mme re ka KGONA go ipaakanya! \n\nSimolola workshop ya gago e e latelang go bona gore o ka dira seno jang mmogo le mosha wa gago.", + "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kamoso go tla bo go na le workshop @global.parent_app ya bofelo e o ka e dirang. \n\nLeka go e dira @local.workshop_data.in_text_title pele ga o simolola workshop e ntšha. Fa o dira jalo, o ka kgona go dira dithulaganyo tsotlhe tsa bokgoni jwa go godisa bana le go dira tshwetso ya se o batlang go se dira morago ga tsone!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "O dirile sentle ka go fetsa @local.workshop_data.in_text_title. Kamoso, o ka kgona go tsena mo workshop ya bofelo ya go akanya ka loeto lwa @global.parent_app la gago le se o ka se dirang mo nakong e e tlang!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ee, @global.w_crisis_female_caregiver o dirisitse bokgoni jotlhe jo re setseng re bo buile – mme le wena o ka kgona!", + "All these skills can help in a crisis.": "Bokgoni jono jotlhe bo ka re thusa fa re le mo mathateng.", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Mathata a ka wela mongwe le mongwe. \n\nA re baleng ka se se diragetseng ka @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Ao bathong ngwanake, wa itse o lebega o tenegile tota, a o ka mpolelela gore go diragetseng?”", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Ke Malome, o… o… o ne a mphoraphora.” \n\n@global.w_crisis_teen_girl_1 (a akanya): “Leka go wela makgwafo... Ngwanake o tlhoka eng? O tlhoka gore ke ritibale maikutlo mme ke mo reetse” \n\n@global.w_crisis_female_caregiver: “Tla o nne gaufi le nna. Tsaya nako ya gago, ke go reeditse.”", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Ke bua nnete, o... o... mpateleditse gore ke dire jalo! O mpateleditse gore ke robalane le ene! Ke ne ke sa batle, ke lekile go mmolelela gore GA KE BATLE, a ba a re fa ke gana ke tlile go tsena mo mathateng.\"\n\n@global.w_crisis_female_caregiver: “O dirile sentle ka go mpolelela se se diragetseng. O ka se tsene mo mathateng. Ga se phoso ya gago.”", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Maabane fa o ne o ile kwa go @global.w_crisis_adult_friend. O tlile fano mme go diragetse ka yone nako eo.”\n\n@global.w_crisis_female_caregiver: “Go siame, ke dumela se o se buang ngwanaka. Kgang eno e masisi tota mme re tlile go batla thuso e re e tlhokang. Re ka batla thuso kae?”\n\n@global.w_crisis_teen_girl_1: “Kwa sekolong sa me?”", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Ah ke a itse gore kae, a re ye kwa tliliniking. Ba a itse gore ke eng se ba tshwanetseng go se dira go go thusa. A ga o na bothata fa re ya kwa teng?\"\n\n@global.w_crisis_teen_girl_1: “Ee... Go siame...a o tla tsamaya le nna?”", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Ee ke tla dira jalo. Mme @global.w_crisis_teen_girl_1? Gopola gore seno ga se phoso ya gago. Ke a go rata. O motho yo o siameng. Re tla bona thuso.”", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Mathata a mangwe a batsadi ba le bantsi ba tshwenyegileng ka one ke thubakanyo le bokebekwa. A re lebeng sekai se se latelang.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, fa e sa le go tloga maabane o lebega o tshwenyegile. Bothata ke eng?”", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Maabane ke tsamaile le tsala go ya go lebelela bolo. basimane bangwe ba ba neng ba tagilwe ba ile ba simolola go lwantsha tsala ya me.”\n\n@global.w_crisis_male_caregiver_1: “Tswelela, ke go reeditse. Ke solofela gore ga wa ka wa ba lwantsha?”", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Tota ke ne ke sa batle go lwa mme gone, ke ne nka se lebelele tsala ya me fela e itewa ka jalo...”\n\n@global.w_crisis_male_caregiver_1: “Ka jalo, o ile wa lwana gore o sireletse tsala ya gago?”", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Rotlhe re ne re lwa. Ke bone mongwe a rapaletse fa fatshe a dutla madi. Ke akanya gore... o ne a sule.”", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ke a leboga gore o mpoleletse ka seno, @global.w_crisis_teen_boy_1. A re nne fa fatshe mmogo jaanong mme re bone gore a ke re itsise mapodisi kgotsa mongwe o sele go thusa.”", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Ke a leboga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: Re tla bona thuso. Gopola, re tla go tshegetsa jaaka lelapa.”", + "Every small thing you do matters. We hope you are proud of yourself too.": "Selo sengwe le sengwe se sennye se o se dirang se botlhokwa. Re solofela gore le wena o ikutlwa o le motlotlo.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Polelo le motlotlo\n* Polelo le motlotlo\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Polelo le go boela ko morago\n* Polelo le go boela ko morago\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Ruri seemo seno sa ga @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver se ne se le bokete tota! Seemo seno se ka diragalela basimane le basetsana.", + "What skills did @global.w_crisis_female_caregiver use?": "@global.w_crisis_female_caregiver o ne a dirisa bokgoni bofe?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Ruri seemo seno sa ga @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 se ne se le bokete tota!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "@global.w_crisis_male_caregiver_1 o ne a dirisa bokgoni bofe?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Mathata a ka dira gore re ikutlwe re tenegile e bile go se na se re ka se dirang. Mme eno ke yone nako e basha ba rona ba tlhokang gore re kgwe mowa, re ba reetse re bo re akanye.", + "BREATHE": "KGWA MOWA", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Ritibala maikutlo. Ipotse gore, ‘ke eng se mosha wa me a se tlhokang gone jaanong’", + "LISTEN": "REETSA", + "Tell them you are there for them and love them.": "Ba bolelele gore o batla go ba thusa e bile wa ba rata.", + "THINK": "AKANYA", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Bua le mosha wa gago. Ke eng se se ka thusang go rarabolola bothata? O ka nna wa tlhoka dithulaganyo tsa ka bonako ga jaana, mme morago ga moo dithulaganyo tsa lobaka lo loleele moragonyana.", + "You can be proud of yourself for exploring ways to get help!": "O ka ikutlwa o le motlotlo gore o ile wa dira maano gore o bone thuso!", + "How are you feeling today?": "O ikutlwa jang gompieno?", + "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Letsatsi la gompieno le monate tota! Ke eng se se dirileng gore letsatsi la gompieno le nne monate? Gakologelwa gore ke selo se se siameng go ikakgola fa o dirile sentle.", + "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Ke maswabi go utlwa gore ga o ikutlwe sentle gompieno. Re motlotlo ka wena go bo o lemogile maikutlo ao, e bile o leka go ritibala maikutlo le go ineneketsa. O tlhomela lelapa la gago sekao se se molemo.", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Tiro ya beke ya go ikatisa kwa gae ke go naya mosha wa gago ditaelo o bua ka tsela e e siameng.\n\nGakologelwa – BUA NNETE, BUA KA TSELA E E SIAMENG, ITLHALOSE SENTLE = TLHALOSA SENTLE GORE KE ENG SE O BATLANG SE DIRWA (ka tsela e o ka kgonang ka teng le mosha!)", "Did you have any challenges?": "A o kile wa nna le dikgwetlho dingwe?", "What challenge did you have?": "O nnile le kgwetlho efe?", "My teenager did not want to follow the instruction.": "Mosha wa me o ne a sa batle go latela ditaelo.", @@ -1284,9 +766,77 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Bontle tota! Ka go aroganya maikarabelo, o tla nna le nako e ntsi ya go dira sengwe sa go ijesa monate le mosha wa gago – seo se botlhokwa tota!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "Ee, go tsaya nako e ntsi go tlwaela go naya ditaelo tse di siameng – go molemo tota go leka gape! Akanya ka boitshwaro jo o ka ratang go bona mosha wa gago a bo dira thata mme o akanye ka ditsela tse di siameng tsa go neelana ka taelo eo!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Go bokete go tla ka ditaelo fa re santse re galefile. Leka mme o batle nako ya fa o kgobile makgwafo gore o kgone go itsise mosha wa gago ditaelo tse di siameng. \n\nMo @global.weekly_workshop e e latelang, re tlile go bua thata ka ka fa re ka kgonang go laola maikutlo a rona ka gone!  O ka bona ditiro tsa boiketlo tse dingwe go @data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a elapa. Re lemogile gore o tobeditse @data.habit.money.in_text_title - o dirile sentle wa gopola!", - "Your goal was to make a family budget and savings plan.": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a lelapa.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Re lebogela go bo o arolane le maitemogelo a gago! O dirile sentle ka go akanya ka kafa o ka dirang tekanyetsokabo le go boloka madi mmogo le lelapa la gago. Seno ruri se tla lo thusa tota gore lo direle go fitlhelela mekgele ya lelapa. \n\nLo le mmogo lo ka kgona go fitlhelela dilo di le dintsi!", + "Which of the tips helped you?": "Ke dikakantsho dife tse di go thusitseng?", + "GET REAL – Can your teen do what you are about to ask?": "BUA NNETE – A mosha wa gago a ka kgona go dira se o mo kopang gore a se dire?", + "GET POSITIVE – Use positive words and praise them!": "BUA KA TSELA E E SIAMENG – Dirisa mafoko a a siameng mme o ba akgole!", + "GET CLEAR – Be clear and specific!": "ITLHALOSE SENTLE – Itlhalose sentle o bo o totobale!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Bontle tota! Fa re kopa mosha wa rona go dira sengwe se se kgonegang, go nna motlhofo gore ba atlege.", + "When we praise them, our teens feel encouraged to listen to us again!": "Fa re ba akgola, basha ba rona ba ikutlwa ba rotloetsega go re reetsa gape!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Bontle! Fa re akanyetsa ko pele ka ditaelo tse di totobetseng tse re di nayang mosha wa rona, ditaelo tsa rona di nna motlhofo gore a di latele!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Ke lebogela go bo o mpoleletse! O dirile sentle ka go leka go naya mosha wa gago ditaelo tse di siameng le go aga botsalano jo bo siameng le mosha wa gago. \n\nMosha wa gago o tshwanetse go akgolwa mme gape le WENA!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Tlhomamisa mogopolo mo dilong tse di siameng! \n\nGo botoka go bolelela basha ba rona gore ke eng se re batlang ba se DIRA go na le go ba bolelela gore ba TLOGELE go dira sengwe.\n\nO tla bona pharologanyo.", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Dumelang, dumelang lotlhe.\n\nSetlhogo sa gompieno ke go neela ditaelo tse di siameng. \n\nGo botlhokwa go naya bana ba rona ditaelo tse di siameng ka gonne fa re dira jalo, ba tla itse le go tlhaloganya gore ke eng se re solofetseng gore ba se dire, e bile ba tla se dira jaaka re batla. \n\nKa gone, kwa bofelong mongwe le mongwe o a itumela.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Gaise o tshwae sepe go @data.habit.instruct_positively.title @global.parent_points gajaana.\n\nE leke gompieno!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe – go rialo o gatela pele sentle tota.", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively - o dira tswelopele e bonalang.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Bua sentle le wena o ipolelele gore o dira tiro e e molemo. Ga gona selo se se jaaka motsadi yo o itekanetseng, mme re akanya gore o dira sentle!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Ditaelo tse di siameng di thusa go bona boitshwaro jo bo molemo ga ntsintsi! \n\nFeleletsa @local.workshop_data.in_text_title go bona dikakantsho tsa gore seno se ka dira jang mo lelapeng la gago.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @fields.user_name! Ra go lebogisa gore o simolola beke ya 4 ya @global.parent_app.\n\nBeke eno tirelothuto ya teng ke ka go oketsa tshono tsa gago tsa go bona mosha wa gago a dira se o se kopang.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Dumela @fields.group_name! Ra go lebogisa gore o simolola beke ya 4 ya @global.parent_app.\n\nBeke eno tirelothuto ya teng ke ka go oketsa tshono tsa gago tsa go bona mosha wa gago a dira se o se kopang.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "A mosha wa gago o nna a go reetsa? Fa go se jalo (jaaka bontsi jwa rona), leba workshop ya beke eno go ithuta ka fa go naya ditaelo tse di siameng go ka thusang ka teng - thata.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Kamoso, o ka kgona go tsena mo workshop e ntšha. E tla go thusa go dira workshop ya pele ga eno. \n\nBatsadi ba bangwe ba dirisa app eno fa ba le mo tseleng ya go ya tirong. Ke ka ntlha ya eng o sa dirise app eno fa o na le metsotsonyana e le mmalwa? \n\nRe leboga gape gore o dirisitse @global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, go tla bo go na le workshop e ntšha e o tshwanetseng go e dira: o tla bona pharologanyo e kgolo ka go dira diphetogo tse dinnye!", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone?", + "What could @global.w_instruct_female_caregiver have done differently?": "@global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "Said something nice first": "A bua sengwe se sentle pele", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "A bua le @global.w_instruct_teen_girl a digile lentswe", + "Told @global.w_instruct_teen_girl what she wants her to do": "A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "A re boneng gore go diragalang fa @global.w_instruct_female_caregiver a raya @global.w_instruct_teen_girl a re \"TLOGELA GO\":", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe.\n\n@global.w_instruct_female_caregiver: “Tlogela go tlatsa leswe o ntse o bona gore ke a phepafatsa. Le gone o mo tseleng ya me!”", + "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kana mme le nna ke tshwanetse go ikatisetsa kgaisano ya kwa sekolong. Ga nke o mpha tshono ya go dira sepe.”\n\n@global.w_instruct_female_caregiver: “O seka wa ngangisana le nna!”", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Goreng ke aga ke omantswe ka metlha????”\n\n@global.w_instruct_female_caregiver a bua a le nosi: “Ngwana yole o aga a baka mathata fela.”", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Ke a leboga gore re dirile ikatiso eno mmogo! \n\nA jaanong re boele morago mme re bone gore go diragala eng fa @global.w_instruct_female_caregiver a ntsha taelo e e siameng:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, go itumedisa go bona o ikatisetsa go bina ga gago le tsala ya gago. Ke kopa lo ye kwa ntle pele gore ke feleletse go phepafatsa mo ntlong. Fa ke feditse lo ka boela e bile le nna ke tla itumelela go lo lebelela.”\n\n@global.w_instruct_teen_girl: \"Go siame, @global.w_instruct_female_caregiver!”", + "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Ke a leboga gore lo ile lwa nna lwa ikatisetsa kwa ntle fa ke ntse ke feleletsa go phepafatsa, @global.w_instruct_teen_girl. Jaanong le nna ke kopa lo mpontshe gore lo di betsa jang.”", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Iyo, @global.w_instruct_teen_girl! Ka re mmino ke dilo tsa lona!”", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le motlotlo - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le go leba kwa morago - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n * Dikakantsho tsa katiso ya legae", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Tlotlang mmogo: \n\n* O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone? \n* @global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver a ka bo a ile a...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* A bua sengwe se sentle pele \n* A bua le @global.w_instruct_teen_girl a digile lentswe \n* A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", + "Let's discuss what happened this time.": "A re tlotleng ka gore ke eng se se diragetseng mo lekgetlong leno.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Tlotlang mmogo: \n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?\n* Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", + "Positive instructions can work with your teen too!": "Le wena ditaelo tse di siameng di ka thusa mosha wa gago!", + "It worked better this time because...": "Dilo di tsamaile sentle mo lekgetlong leno ka gonne...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata\n* @global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo \n*@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", + "Let’s do a thought experiment!": "A re lekeletseng kgopolo nngwe!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "O SEKA WA AKANYA KA TLOU \n\nKe eng se o se akanyang?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Gongwe o ILE wa akanya ka tlou...\n\n‘Se dire jalo’ ditaelo di dira gore basha ba akanye ka selo seo. \n\nKa dinako tse dingwe ga ba tlhaloganye gore tota re ne re batla gore ba DIRE eng. \n\nE bile, ga ba batle go nna ba bolelelwa gore ba se ka ba dira dilo dingwe (a ga re jalo rotlhe?)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "JAANONG, AKANYA KA LENGAU! \n\nKe eng se o se akanyang?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "O nepile! Ditaelo tse di siameng e bile di tlhalosiwa sentle di thusa basha go tlhoma mogopolo mo go se ba tshwanetseng go se dira. \n\nBasha gape ba tla ikutlwa ba tlotliwa le go feta ka tsela eno, mme seno se ka dira gore ba go reetse.", + "GET REAL": "BUA NNETE", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "A mme gone ngwana wa gago wa dingwaga tsa bosha a ka kgona go dira se o mo kopang gore a se dire? Go ka nna ga se ka ga kgonega gore a tlhole a buisa letsatsi lotlhe, mme tota a ka kgona go buisa selekanyo sa halofo ya ura, seno se ka kgonega.", + "GET POSITIVE": "BUA KA TSELA E E SIAMENG", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Nyenya, mo lebe mo matlhong o bo o dirise mafoko a a siameng. O se ka wa okaoka go ba akgola fa ba dira sengwe se o kopang gore ba se dire!", + "GET CLEAR": "ITLHALOSE SENTLE", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Go le gantsi le fa re itse gore ke eng se re se batlang, go nna thata go itlhalosa sentle. Bolelela mosha wa gago ka tlhamalalo gore ke eng se o batlang a se dira. Leka go mmolelela jaana, ‘tsweetswee fitlha mo lapeng ka ura ya 7 maitseboa’ go na le go mmolelela fela o re ‘tla gae ka nako’.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "A re ikatisetseng go naya ditaelo O BUA NNETE, O BUA KA TSELA E E SIAMENG e bile O ITLHALOSA SENTLE. Go ikatisa go tla go thusa gore o kgone go atlega ka mosha wa gago!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Tlhopha batho ba le babedi mo setlhopheng sa lona:\n* Motho a le nosi o itira e kete ke mosha\n* Yo mongwe o itira e kete ke batsadi ba mosha\n* “Motsadi”: Naya “mosha” wa gago ditaelo tse di siameng o mo rotloetsa le go mo akgola\n* “Mosha”: Tsiboga fa o akanya gore mosha a ka tsibogela seno \n\nTlotlang mmogo gore seo se tsamaile jang:\n* Seno se dira gore o ikutlwe jang jaaka “motsadi” le jaaka “mosha”?\n* A go na le sengwe se o ka se dirang botoka?\n\nFa go kgonega, naya mongwe le mongwe tshono ya go nna “motsadi” yo re dirileng sekai ka ene le “mosha” yo re dirileng sekai ka ene. Go ikatisa go dira gore re kgone go fitlhelela dilo tse di molemo!", + "Examples of positive instructions:": "Dikai tsa go naya ditaelo o bua ka tsela e e siameng:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ke rata mmino o o o reetsang. A o ka o tima fa re ja maitseboa gore re kgone go tlotla? Ke a leboga – Ke itumelela seo thata. \n* Mmino oo o monate tota. Ke mang a e opelang? Ke kopa o time mmino fa o tsena mo ntlong. O ka o reetsa kwa phaposing ya gago fa o batla. Ke a leboga!", + "Wonderful, I am so happy! Keep up the good work.": "Go gontle, ke itumetse tota! Tswelelang lo dira tiro eno e e molemo.", + "Sorry that things are difficult. All families struggle. We are here to help!": "Tshwarelo gore dilo di bokete. Malapa otlhe a na le mathata. Re fano go lo thusa!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "A re lebaleng ka sengwe fela se se phoso seo se diragetseng gompieno, re tla leka gape letsatsi le le latelang. Ga se bothata!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Dira tekanyetsokabo gape - mo lekgetlong leno e dire LE mosha wa gago le lelapa la gago! \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Dira tekanyetsokabo le mosha wa gago le lelapa la gago. \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Tlhatlhobang tekanyetsokabo le mosha wa gago le lelapa la gago. Seno se tla gopotsa mongwe le mongwe gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele ya rona!\n\nTekanyetsokabo e thusitse malapa a le mantsi tota.", + "Steps to make a budget": "Dikgato tsa go dira tekanyetsokabo", "make a budget together with their family": "dira tekanyetsokabo mmogo le lelapa la bone", "Did you have any challenges when making your budget together?": "A lo nnile le dikgwetlho dingwe fa lo dira tekanyetsokabo ya lona mmogo?", "What whas difficult for you about making your budget together?": "Ke eng se se go thatafaletseng ka go dira tekanyetsokabo ya lona mmogo?", @@ -1298,8 +848,85 @@ "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Ke maswabi go utlwa seno. Ke a itse go ka nna bokete! Goreng re sa e leke gape? Mosha wa gago kgotsa maloko a mangwe a lelapa la gago ba ka ikopanya nao mme ba go thusa!", "My teen did not want to do the budgeting with me.": "Mosha wa me o ne a sa batle go dira tekanyetsokabo le nna.", "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Leka go dira tekanyetsokabo le bagolo ba bangwe mo legaeng la gago pele. Mosha wa gago a ka kgatlhegela se o se dirang. \n\nGo dira tekanyetsokabo go ka bonala go le masisi mme leka go go dira monate – go dire motshameko fa lo ntse lo ipha nako mmogo! Kgotsa o ka leka go dira tekanyetsokabo ya @global.w_money_grandma pele. \n\nGopola go ba akgola fa o feditse!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "O tlhoka go akgolwa, le wena. Re leboga gape gore o dirisitse @global.parent_app. Go a bontsha gore tota o a kgathala!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Mokgele wa gago e ne e le go akgola mosha wa gago. O tobeditse @data.habit.praise_teen.in_text_title mo bekeng eno. O dirile sentle wa gopola!", + "Your goal was to make a family budget and savings plan.": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a lelapa.", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Re lebogela go bo o arolane le maitemogelo a gago! O dirile sentle ka go akanya ka kafa o ka dirang tekanyetsokabo le go boloka madi mmogo le lelapa la gago. Seno ruri se tla lo thusa tota gore lo direle go fitlhelela mekgele ya lelapa. \n\nLo le mmogo lo ka kgona go fitlhelela dilo di le dintsi!", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Malapa a le mantsi a a tshwenyegile thata ka ntlha ya madi, bogolo jang fa basha ba nna ba kopa go rekelwa dilo! \n\nFa re dira tekanyetsokabo mmogo, re ka dumalana gore re tla dirisa madi jang LE GORE re tla boloka bokae gore re se ka ra iphitlhela re tshwenyegile e bile re ka kgona go fitlhelela mekgele/maikemisetso a rona re le lelapa.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Dumelang, lotlhe. \n\nGompieno re tlile go tlotla ka tekanyetsokabo ya lelapa. \n\nGo botlhokwa go nna le tekanyetsokabo, mme tota e bile go botlhokwa thata go nna le tekanyetsokabo e e akaretsang mongwe le mongwe mo lelapeng. \n\nFa lo dira tekanyetsokabo mmogo, seno se dira gore lotlhe mo lapeng lo tlhaloganye botoka gore lo ka dirisa madi jang le gore lo ka kgona go boloka bokae, e bile lo ka kgona go dira dithulaganyo tsa gore lo tla boloka madi jang lo le lelapa.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno. O tlhoka:\n\n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene\n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi\n \nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", + "A family budget can help @global.w_money_grandma - and YOU!": "Tekanyetsokabo ya lelapa e ka thusa @global.w_money_grandma - le WENA!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "O tlhoka: \n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene \n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi \n\nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* dijo \n* metsi & motlakase \n* diaparo \n* diakhaonto \n* peeletso ya TV \n* dilwana tsa go tlhapa \n* salune \n* airtime \n* tuelo ya sekolo \n* sepalangwa \n* inshorense/dipholisi \n* melemo \n* boitlosobodutu/metshameko \n* rente \n* melato \n* kereke", + "Think about what we spend money on each month.": "Akanya gore ke dilo dife tse re dirisang madi go di reka kgwedi le kgwedi.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka ditshwantsho tsa dilo tsotlhe tse wena le lelapa la gago le di rekang kgwedi le kgwedi. \n* Kwala fa thoko ga setshwantsho sengwe le sengwe gore selo sengwe le sengwe se ja bokae kgwedi le kgwedi. (Ga go tlhokege go bua dinomore fa e le gore ga o batle go dira jalo.)\n* Tlhakanya gore ke madi a le kana kang a o tshwanelwang ke go a dirisa kgwedi le kgwedi.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Bontle tota! Lo feditse kgato 1! \n\nA re tsweleleng!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Tlotlang mmogo ka dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela o sena sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Gantsi batho ga ba na maikutlo a a tshwanang ka dilo. Fa re bua ka dilo tse re di tlhokang le tse re di batlang, re kgona go tlhaloganyana e bile re ka kgona go dira ditshwetso tse di siameng tsa gore re dirise madi jang.\n\nLebelela lenaane la gago la dilo tse o di rekang mme lo tlotle ka:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse lelapa la lona le ka lekang go dirisa madi a mannye mo go tsone?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Akanya kaga dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela ntle le sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Lebelela lenaane la gago la dilo tse o di rekang mme lo tlhophe:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse o ka lekang go dirisa madi a mannye mo go tsone?", + "Make a budget!": "Dira tekanyetsokabo!", + "Make a budget as one big family!": "Dirang tekanyetsokabo lotlhe lo le lelapa!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Motho a le nosi o tla ithaopela go abelana ka lenaane la gagwe (Fa go sena ope yo o ithaopang lo ka dira lenaane le lesha mmogo) \n* Ipheng dikarolo - bangwe e ka nna bagolo, bangwe e tla nna basha. \n* Dirang tshwetso ya gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sengwe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.) \n* Dirang tshwetso mmogo gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje ao mo godimo ga setshwantsho se lo se takileng. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", + "Make a budget as a family!": "Dirang tekanyetsokabo lotlhe lo le lelapa!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Kwalang fa fatshe gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sepe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Ka sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.)\n* Dirang tshwetso gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje/dilo tseo mo godimo ga setshwantsho seo. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Dirang dithulaganyo tsa gore lo ka boloka madi jang gore lo kgone go a dirisa ka nako ya maemo a tshoganyetso le go fitlhelela mekgele/maikemisetso a lelapa la lona!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Fa lo ka boloka le fa ele madi a mannye fela a maemo a tshoganyetso mo isagweng - go ka dira pharologanyo fa nako e ntse e tsamaya. \n* Tsenya kgolokwe e e bidiwang “maemo a tshoganyetso”.\n* Tsenya kgolokwe e e bidiwang “mekgele/maikemisetso a lelapa”.\n* Jaanong lekang go abela dilo madi e le gore lo ka boloka bonyenyane kgwedi le kgwedi jwa sengwe le sengwe sa dilo tseno.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re motlotlo ka mongwe le mongwe mo ditlhopheng tseno, a ga go a nna jalo?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re akanya gore mongwe le mongwe mo lelapeng la lona o tlhoka go akgolwa, a ga go jalo?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo – tsweetswee ikatise le ba bangwe mo lelapeng la lona - fa lo dumalana ka gore lo tlile go dira dilo jang, seno se tla lo thusa fela thata!", + "Have you talked with your teen about your family budget yet?": "A o setse o buile le mosha wa gago ka ga tekanyetsokabo ya lelapa la gago?", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Fa o ikutlwa o le nosi kgotsa o imelwa, itse gore ga o nosi. Go nale batsadi mo lefatsheng ka bophara ba ba kgaratlhang jaaka o kgaratlha. \n\nO dira bojotlhe jwa gago letsatsi le letsatsi mme re a go akgola!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Go akaretsa lelapa la gago ka ga gore o dirisa jang madi go ka dira gore o efoge go tshwenyega thata mo maikutlong le dikgotlhang. \n\nFetsa @local.workshop_data.in_text_title gore o kgone go thusa balelapa la gago ka go dira tekanyetsokabo le go boloka madi. Tota go motlhofo - o tla bona!", + "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @fields.user_name! O simolola kgwedi ya gago ya bobedi ya go dirisa @global.parent_app. Kgakgamatso!\n\nMalapa e ka nnang otlhe a kgaratlhisiwa ke mathata a madi, jaanong, beke eno tirelothuto e tlile go go neela didiriswa tse di tla go thusang go baakanyetsa ditlhokego gore o kgone go nna le madi a a ka go fitlhisang bokhutlong jwa kgwedi.", + "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Dumela @fields.group_name! O simolola kgwedi ya gago ya bobedi ya go dirisa @global.parent_app. Kgakgamatso!\n\nMalapa e ka nnang otlhe a kgaratlhisiwa ke mathata a madi, jaanong, beke eno tirelothuto e tlile go go neela didiriswa tse di tla go thusang go baakanyetsa ditlhokego gore o kgone go nna le madi a a ka go fitlhisang bokhutlong jwa kgwedi.", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "A o ikutlwa o tshwenyegile mo maikutlong ka ntlha ya madi? A mosha wa gago o nna a kopa dilo tse o sa kgoneng go di reka? \n\nWorkshop ya beke eno e bua ka madi le ditekanyetsokabo.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Batsadi ba le bantsi ba boletse gore go dira tekanyetsokabo go ne ga dira gore go nne le kagiso mo lelapeng - le wena go ka go direla jalo.\n\nRe santse re go lebogela go nna motsadi yo o ikemiseditseng.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go thusa go tlhoma melao ya lelapa e e dirang.", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Gantsi ga go motlhofo go reka dilo tsotlhe tse o di tlhokang kgwedi le kgwedi. Malapa a le mantsi a na le bothata jono! \n\nGo akaretsa le @global.w_money_grandma- tla re bone:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Ke ntse ke godisa ditlogolo tsa me, @global.w_money_teen_girl le @global.w_money_teen_boy, go tloga fa e sale batsadi ba bone ba tlhokafala ba sa ntse ba le bannye. Gantsi re na le mathata a madi ka gonne ke amogela madi a mannye.”", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Ke tshwenyegile mo maikutlong tota. Ga ke na madi ape a a setseng. Jaanong nna le basha ba me re lwela dilo tse ba di batlang – gape.\"", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Lo dirile bontle, lo feditse dikgato tse 3 tsa ntlha! \n\nA re boneng gore @global.w_money_grandma o ne a rulaganya go dirisa madi a gagwe jang, jaaka re dira fano:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ke batla gore ditlogolo tsa me di nne le bokamoso jo bo siameng, ke fela gore ga ke itse gore ke tla bona kae madi. Batho ba ba pelotshetlha ba ba adimisanang madi ba kotsi e bile ba ba batla morokotso montsi tota. \n\nKe tshwanetse go boloka madi, mme go bonala go ka se kgonege!”", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“Maikemisetso a me ke gore setlogolo sa me sa mosimane se kgone go ya kwa sekolong se segolwane le gore setlogolo sa me sa mosetsana se kgone go fitlhelela maikemisetso a go ya yunibesithi. Nka kgona jang go boloka madi a mantsi ke amogela madi a mannye jaana?”", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ke a itse - a re simololeng go ithulaganya! Sa ntlha, e re ke dire tekanyetsokabo – ke ithulaganye gore nka boloka madi jang. Ke tla simolola pele ka go nna ke boloka madinyana a ke nang le one – e bile ke tla ikwadisa mo setlhopheng sa go boloka le go adimisa madi.”", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“E bile ke tshwanetse go bua le ditlogolo tsa me gore ke dilo dife tse re ka dirisang madi a le mannye mo go tsone beke le beke. Ba tla nthusa go bona gore ke dilo dife tseo re di batlang mme tota e se tse re di tlhokang.”", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Dingwaga di le mmalwa morago ga moo:\n\n“Bona fela, re kgonne go fitlhelela maikemisetso a rona! Ga ke a ka ka adima madi mo ditsaleng tsa me kgotsa mo batho bano ba ba adimisanang madi ba ba pelotshetlha. Go boloka madinyana beke le beke go nthusitse gore ke kgone go duelela @global.w_money_teen_boy kwa sekolong se segolwane e bile ke kgonne go boloka madi mangwe gore ke kgone go duelela @global.w_money_teen_girl kwa yunibesithing. Ruri ke ikutlwa ke le motlotlo gore ke kgonne go dira seno.”", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Go na le lebaka le lengwe la botlhokwa le le dirang gore go boloka madi go nne botlhokwa: maemo a tshoganyetso! @global.w_money_grandma o ne a lemoga seno nako nngwe:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Bosigo bongwe go ne ga tla setsuatsue se se maswe mme sa senya marulelo a ntlo ya me. sengwe le sengwe mo ntlong se ne se tsiname mo metsing. Ke ne ka tshwanelwa ke go batla madi ka lepotlapotla gore ke baakanye marulelo. Ke ne ke tlaletswe.”", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Iphe nako ya go itumelela se o kgonneng go se fitlhelela le fa gone go na le dilo tse dintsi tse o tshwanetseng go di dira letsatsi le letsatsi.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Kgang – Eo ga e a dira... \n* Ikatiso ya tekanyetsokabo\n* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di sa dirang...\n* Motlotlo le ditlhopho tsa go boloka\n* Ikatiso ya tekanyetsokabo\n* Didirisiwa: Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi\nAKANYA - TLHOPHA - AGA - ITHULAGANYE\n * Dikakantsho tsa katiso ya legae", + "Step 1: THINK": "Kgato 1: AKANYA", + "What do we spend on now?": "Re reke eng gone jaanong?", + "THINK Activity": "Ikatiso ya GO AKANYA", + "Step 2: CHOOSE": "Kgato 2: TLHOPHA", + "Talk together about needs and wants": "Tlotlang mmogo ka dilo tse lo di tlhokang le tseo lo di batlang", + "CHOOSE Activity": "Ikatiso ya GO TLHOPHA", + "Step 3: BUILD": "Kgato 3: AGA", + "Make your own budget": "Itirele tekanyetsokabo", + "BUILD Activity": "Ikatiso ya GO AGA", + "Step 4: PLAN": "Kgato 4: ITHULAGANYE", + "Emergencies and family goals": "Maemo a tshoganyetso le mekgele/maikemisetso a lelapa", + "PLAN Activity": "Ikatiso ya GO ITHULAGANYA", + "What are your family savings goals?": "Lelapa la lona le ipeetse mekgele efe ya go boloka madi?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Ke mekgele/maikemisetso a mentle tota! \n\nKe mokgele/maikemisetso a montle tota! Fa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Fela jaaka @global.w_money_grandma, le rona re na le mekgele/maikemisetso ao re batlang lelapa la rona le e fitlhelela. Fa o boloka madinyana a se kae kgwedi le kgwedi, le wena o ka kgona go e fitlhelela!", + "What are your family savings goals?": "Lelapa la lona le ipeetse mekgele/maikemisetso afe a go boloka madi?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Ke mokgele/maikemisetso a montle tota! \n\nFa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", + "Let's talk about this story.": "A re bueng ka kgang eno.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "@global.w_money_grandma o ne a senyediwa ke setsuatsue. \n\nMme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", + "Let's think about this story.": "A re akanyeng ka kgang eno.", + "For @global.w_money_grandma, a storm happened.": "@global.w_money_grandma o ne a senyediwa ke setsuatsue.", + "What other emergencies could come up for your family?": "Mme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Maemo a tshoganyetso a ka diragalela lelapa lengwe le lengwe. Go boloka madi GO SA LE NAKO gore re tle re a dirisetse maemo ano a tshoganyetso go re thusa gore re se ka ra iphitlhela re tlaletswe e bile re gateletswe mo maikutlong fa a tlhaga!", + "Let's talk about different ways we can save.": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Tlotlang mmogo: \n* Lo ka boloka madi ka ditsela dife tse di farologaneng? \n* Ke eng seo se ka nnang molemo le seo se ka se nneng molemo sa mokgwa mongwe le mongwe wa go boloka madi? \n\nFa o tlhaloganya mokgwa mongwe le mongwe sentle, seno se tla go thusa gore o dire tshwetso ya gore ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona. \n\nMokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", + "Let's think about different ways we can save.": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Go na le mekgwa e e farologaneng e re ka e dirisang go boloka madi: kwa gae, go reka dilo tse re ka di rekisang moragonyana, kwa bankeng kgotsa mo setlhopheng sa go boloka madi.\n\nAkanya ka dilo tse di molemo le dilo tseo di seng molemo tsa mokgwa mongwe le mongwe wa go boloka madi.", + "What is the best savings option for your family?": "Ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona?", + "Whatever savings plan you choose, it will really help your family move forward!": "Mokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", + "Caring for yourself is so essential.": "Go itlhokomela go botlhokwa thata.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle. Tswelelang lo dira tiro eno e e molemo.", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Ikatiso ya kwa gae ya beke eno ke go akgola mosha wa gago gangwe mo letsatsing. E tlile go tsaya fela metsotswana e le 10!", "Your goal was to praise your teen.": "Mokgele wa gago e ne e le go akgola mosha wa gago.", "Did you have a chance to praise your teen this week?": "A o nnile le tshono ya go akgola mosha wa gago mo bekeng eno?", "Yes": "Ee", @@ -1307,25 +934,148 @@ "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.": "Go ka nna thata ka dinako tse dingwe go gakologelwa go akgola basha ba rona. Nako e e tlang fa o ipha nako mmogo le mosha wa gago, leka go akanya ka selo se le sengwe se o ka ba akgolelang sone. O ka nna wa re, “Ke lebogela gore o iphile nako le nna!”.", "Well done - great job for remembering!": "O dirile sentle - o dirile tiro e ntle wa gopola!", "How did your teen respond?": "Mosha wa gago o tsibogile jang?", - "Surprised": "O maketse", - "Happy": "O itumetse", - "My teen did not like it": "Mosha wa me ga a rata", - "I do not know": "Ga ke itse", - "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!": "Gopola, go tsaya nako gore mosha wa gago a tlwaele go go bona o mo akgola. Fa o ntse o ipha nako e ntsi le bone, go tlile go nna go tokafala!", - "Well done for observing how your teen felt; keep it up!": "O dira sentle go bona gore mosha wa gago o ikutlwa jang; tswelela pele o dira jalo!", - "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Go a direga - nna pelotelele. Netefatsa gore o nna o ipha nako le mosha wa gago, gore ba bone boleng jwa pono ya gago le e leng go feta. Fa o ba akgola go tswa pelong, o tla bona mesola e se kgale!", - "No problem - try to observe how they respond the next time!": "Ga gona bothata - leka go bona gore ba tsiboga jang mo nakong e tlang!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Mokgele wa gago e ne e le go buisana ka maemo a ka tlhagang ka tshoganyetso le mosha wa gago mme o a direle thulaganyo.", - "prepare for a possible crisis with their teens": "rulaganya go santse go na le nako gore fa go ka tlhaga maemo a tshoganyetso le basha ba gago", - "prepare for a possible crisis with your teen": "rulaganya go santse go na le nako fa go ka tlhaga maemo a tshoganyetso le mosha wa gago", - "My teen told me that something serious happened to them and I did not know how to handle it.": "Mosha wa me o mpoleletse gore sengwe se se masisi se mo tlhagetse mme ke ne ke sa itse gore nka dira jang.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Akgola mosha wa gago gore o go boleletse; ga go motlhofo go dira seo! Gopola, o ka dirisa botswerere bope fela jo o bo tlhophileng go tswa mo lebokosong la didiriswa: Ema go se kae, dirisa dikgato tse nne tsa go rarabolola mathata, mme o leke go kgaratlha gore wena le ngwana wa gago lo newe tshegetso e lo e tlhokang!", - "Get support": "Batla tshegetso", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Puisano e dirile gore ke seka ka nnisega tota ka gonne e nkgopoditse tiragalo e e sa siamang e nkileng ka nna le yone.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Fa re gopodiwa ka ditiragalo tse di ntseng jalo, go tlwaelegile go ikutlwa o tenegile kgotsa o galefile. Go botlhokwa go batla nako ya fa o kgobile makgwafo, gore o kgone go akanya gore o tlhoka tshegetso e ntseng jang. O ka nna wa tlhoka go bua le mongwe.", - "One of us did not feel comfortable.": "Mongwe wa rona o ne a sa ikutlwe a nnisega.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Seno ke selo se se bokete go bua ka sone. Se batlele nako ya fa o kgobile makgwafo. Re a itse gore go motlhofo thata fa re sa bue ka dilo tseno e bile re solofela gore ga di kitla di re diragalela. Le fa go ntse jalo, go ithuta go lepalepana le mathata go tshwana le go batla inshorense; go botoka fa ka METLHA o akanya ka tsone mme o nna o ipaakantse.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Mokgele wa gago e ne e le go bona dikotsi le ditsamaiso tsa tshegetso le mosha wa gago - ka bobedi mo tikologong ya gago gammogo le mo mafaratlhatlheng.", + "Surprised": "O maketse", + "Happy": "O itumetse", + "My teen did not like it": "Mosha wa me ga a rata", + "I do not know": "Ga ke itse", + "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!": "Gopola, go tsaya nako gore mosha wa gago a tlwaele go go bona o mo akgola. Fa o ntse o ipha nako e ntsi le bone, go tlile go nna go tokafala!", + "Well done for observing how your teen felt; keep it up!": "O dira sentle go bona gore mosha wa gago o ikutlwa jang; tswelela pele o dira jalo!", + "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Go a direga - nna pelotelele. Netefatsa gore o nna o ipha nako le mosha wa gago, gore ba bone boleng jwa pono ya gago le e leng go feta. Fa o ba akgola go tswa pelong, o tla bona mesola e se kgale!", + "No problem - try to observe how they respond the next time!": "Ga gona bothata - leka go bona gore ba tsiboga jang mo nakong e tlang!", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "O tlhoka go akgolwa, le wena. Re leboga gape gore o dirisitse @global.parent_app. Go a bontsha gore tota o a kgathala!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Go akgolwa ke selo se se botlhokwa thata fa o godisa bana.\n\nFa re akgola bana ba rona fa ba dirile sengwe sentle, ba tla nna ba tokafatsa thata!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Dumelang lotlhe. \n\nGompieno re tlile go bua ka go akgola. \n\nGo botlhokwa go akgola bana ba rona fa ba dirile bontle ka gonne fa re dira jalo, ba tla tswelela ba tokafatsa mo go se re batlang gore ba se dire. \n\nMme a le rona re se ka ra lebala go ikakgola fa re dirile bontle!", + "Praise time!": "Nako ya go akgola!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Fa o bona mosha wa gago, mo akgole ka sengwe se se molemo se a se dirang sentle! \n\nKe leng la bofelo fa o ne o ikakgola kgotsa o akgola mogolo mongwe mo lelapeng la gago? Go leke!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "O dirile sentle ka go dirisa @global.parent_app! Gopola gore ke dilo tse dinnye tse di dirang pharologanyo e kgolo.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Go akgola go dira pharologanyo. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone kafa O ka dirisang kakgolo ka teng mo lelapeng la gago.", + "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @fields.user_name! Ra go lebogisa gore o simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntšhwa e go emetse! A o ka fopholetsa setlhogo sa tirelothuto go tswa mo setshwantshong se?", + "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Dumela @fields.group_name! Ra go lebogisa gore o simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntšhwa e go emetse! A o ka fopholetsa setlhogo sa tirelothuto go tswa mo setshwantshong se?", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Re lebogela gore o bo o dirisitse @global.parent_app go beeletsa mo go wena le lelapa la gago.\n\nLeka @local.workshop_data.in_text_title mme o kgone go nna le bokgoni jo bo siameng thata jwa go godisa bana!", + "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Dimela @global.user_name, tiriso e ntsha e go emetse kamoso. Go bontsha okare ga ise o fetse @local.workshop_data.in_text_title gajaana. Ke e khutshwane tota ( kago tshepisa!) - O ka e feleletse ntse emetse dijo tsa maitsiboa go butswa.Goreng o sa e lekole fa o na le metsotsonyana?\n\nKe a leboga gape go bo o dirisitse @global.parent_app.", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "O dirile sentle thata ka go fetsa @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha. E leke - o tla bona pharoganyo mo tseleng e mosha wa gago a itshwarang ka yone.", + "Think about the last time someone thanked you, or said you did something great.": "Akanya gore o ne o ikutlwa lekgetlo la bofelo fa mongwe a ne a go leboga, kgotsa a go bolelela gore o dirile sengwe bontle tota.", + "How did it make you feel?": "O ne o ikutlwa jang?", + "Parents usually don’t get thanked or praised enough.": "Rona batsadi ga se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng.", + "How does it make you feel when nobody says \"thank you\"?": "O ikutlwa jang fa go se ope yo o rayang a re, “ke a leboga”?", + "Tired": "O a lapa", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Mosha wa gago le ene a ka ikutlwa jalo. Ke sone se se dirang gore ikatiso ya rona ya beke eno e nne botlhokwa le fa gone e lebega e le motlhofo: Ba akgole fa ba dirile sengwe sentle.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?", + "Why did she praise them?": "Goreng a ile a ba akgola?", + "To get them to do it more often": "Go dira gore gantsi ba nne ba dira jalo", + "To help her finish her work": "Go mo thusa gore a fetse tiro ya gagwe", + "To make them feel good": "Go dira gore ba ikutlwe ba le motlotlo", + "To make herself feel good": "Go dira gore a ikutlwe a le motlotlo", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Dilo tseno tsotlhe di boammaaruri! \n\nFa basha ba ga @global.w_praise_female_caregiver_name ba itumetse, le ene o a itumela. E bile seno se mo thusa gore a kgone go fetsa tiro ya gagwe.", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Go akgola go na le matla tota. \n\nA re lebeng sekai sa ga @global.w_praise_female_caregiver_name le bana ba gagwe ba basetsana:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Gantsi fa @global.w_praise_female_caregiver_name a tshwaregile ka go dira sengwe, bana ba gagwe ba basetsana ba a lwa. Mme, gompieno ngwana wa gagwe wa mosetsana yo mogolo o thusa monnawe ka tiro ya sekolo!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: “Ke a leboga @global.w_praise_girl gore o dira tiro ya sekolo, ke a leboga ka go thusa monnao, @global.w_praise_teen_girl. Ke motlotlo tota ka lona!”", + "Step 1: Share what went well and what was hard": "Kgato 1: Re bolelele gore ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ke kgonne go ithuta dilo di le dintsi ka mosha wa me fa re ne re fetsa nako e ntsi mmogo! Mme mo letsatsing la bobedi, mosha wa me o ne a nnetse founo.”", + "Step 2: Bring ideas!": "Kgato 2: Tla ka dikakantsho!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Re leboga fela thata go bo lo tsere matsapa! Gongwe o ka akantsha gore ke dilo dife tse di itumedisang tse o ka di dirang mmogo le mosha wa gago.”\n\n\"Ee, gongwe lo ka dira sengwe mmogo mo founong ya gagwe? Kgotsa gongwe a ka go bontsha gore founo ya gagwe e dira jang?”", + "Step 3: Pick and try one!": "Kgato 3: Itlhophele gore ke efe e o ka e lekeletsang!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Re lebogela dikakantsho tseo tse di molemo tota! Go siame, ke tla kopa mosha wa me gore a mpontshe gore founo ya gagwe e dira jang fa a tswa sekolong. Ke mang yo o batlang go tshameka karolo ya go nna mosha wa me gore re dire ikatiso ke mo kopa?”", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Akanyang ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka:\n\n* Ke kae mo o kgonneng go dira bontle le gore ke eng seo se neng se le thata?\n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo?\n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(Kgotsa lo ka nna lwa ikatisa gone jaanong gore e nne motlhofo moragonyana!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Abelana le ba bangwe:\n\n* O feleleditse leng go utlwa mongwe a go leboga kgotsa a re o dirile sengwe se se ntle? \n* O ne wa ikutlwa jang? \n* O ikutlwa jang fa o sa lebogiwe kgotsa o sa akgolwe ka ntlha ya se o se dirileng? \n\nRona batsadi ga e se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng. Gongwe o ka tlhomela basha ba gago sekao se se molemo ka go ba akgola fa ba dirile sengwe sentle lekgetlo la ntlha!", + "Let's discuss this story.": "A re tlotleng ka kgang eno.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Tlotlang mmogo:\n\n* Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?\n* Goreng a ile a ba akgola?", + "The same can work for you!": "Le wena seno se ka go thusa!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name o ile a akgola bana ba gagwe...", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Go dira gore gantsi ba nne ba dira jalo\n* Go mo thusa gore a fetse tiro ya gagwe \n* Go dira gore ba ikutlwe ba le motlotlo \n* Go dira gore a ikutlwe a le motlotlo", + "SEE IT": "BONA", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Leka go bona gore ke eng se se siameng e bile se go thusa se basha ba gago ba se dirang mme o ba akgole. Gongwe ba ka nna ba se go bontshe gore ba a itumela mme gone, o tla ba bona ba dira selo seo se se sentle gape. Gape seno se tla dira gore ba lemoge gore o a bona gore ba dira bontle e bile o a kgathala ka bone.", + "SAY IT": "BUA", + "Be enthusiastic – really mean it when you say it!": "Nna matlhagatlhaga – bontsha gore tota se o se buang se tswa mo pelong!", + "REPEAT IT": "BOELETSA", + "Try to find something to thank them for every day. Even something really small.": "Leka go bona gore ke eng se o ka ba lebogelang sone letsatsi le letsatsi. Tota le sengwe fela se se bonalang se le sennye tota.", + "You can also praise other adults in your household, too. Notice how they respond!": "Tota e bile le ba bangwe ba ba godileng mo lapeng o ka ba akgola. Ela tlhoko gore ba itshwara jang fa o ba akgola!", + "Let's practice giving praise.": "A re direng ikatiso ya go akgola.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Abelana le ba bangwe: \n\n* O ka akgola mosha wa gago ka ntlha ya eng? \n* Ke eng se mongwe o sele a se dirileng sentle ka nako ya workshop eno? Ba bolelele!\n* O ile wa ikutlwa jang fa mongwe a go akgola?\n* O ile wa ikutlwa jang fa o akgolwa?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ka dinako tse dingwe go thata go akanya gore o ka akgola mosha wa gago fa a dirile eng! Go na le dikakantsho tseno tse di tswang kwa batsading bangwe:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Go nna bonolo mo mongweng \n* Go phepafatsa phaposi ya bone \n* Go ja mmogo le lelapa \n* Go dumedisa maloko a mangwe a lelapa \n* Go tlhokomela bomonnao \n* Go tla gae ka nako? \n* Go bontsha go akanyetsa ba bangwe \n* Go re ‘tsweetswee’ kgotsa ‘ke a leboga’ \n* Go ya sekolong \n* Go dira ditiro tsa legae kgotsa tirogae ya sekolo \n* Go fetsa nako ya go ja ntle le dintwa", + "Great to hear that you are doing well. You are a wonderful parent!": "Ke itumelela go utlwa gore lo tsoga sentle. Lo batsadi ba ba molemo tota!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ke maswabi go utlwa gore gompieno go thatanyana. Re leboga gore lo dirile sotlhe se lo ka se kgonang. Ga go ope yo o itseng sengwe le sengwe mme lo dira bontle tota!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ke maswabi go utlwa gore gompieno go thatanyana. Re a lo akgola gore fa lo tsoga moso mongwe le mongwe, lo dira sotlhe se lo ka se kgonang le fa gone lo lapile. Seno se tlhoka bopelokgale le boineelo!", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Mo bekeng eno, baya molao o le mongwe mmogo le mosha wa gago.\n\nGakologelwa go akgola mosha fa lo fetsa!", + "make rules with their teens": "dira melao le basha ba bone", + "Did you have any challenges when trying to make a rule together?": "A o nnile le dikgwetlho dingwe fa o leka go dira molao lo le mmogo?", + "What was difficult for you about making a rule with your teen?": "Ke eng seo se nnileng bokete mo go wena ka go dira molao le mosha wa gago?", + "My teen and I could not agree on a rule.": "Nna le mosha wa me ga re kgone go dumalana ka molao.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Akanya ka gore a mme molao o a utlwala. A mosha wa gago o kgona go o latela? Fa lo dira melao jaaka lelapa, go a thusa gore o akanye ka mosha wa gago, ba bagolo go le kae, le gore ke eng se se botlhokwa mo go bone.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Mosha wa me o ikutlwa gore ga go tekatekano gore ba tshwanetse go latela molao fa nna ke sa tlhoke go o latela.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Re tshwanetse go gopola ka metlha gore bana ba ithuta thata go tswa mo go rona. Fa re latela melao ka gale, le bone ba tla o latela. \n\nO ka nna wa tokafatsa melao go netefatsa gore e a kgonega gore botlhe ba e latele, o akanyetse maikarabelo a gago le maikarabelo a mosha wa gago (sekai, sekolo kgotsa dilo tsa tiro).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ga ke a nnisega, ka gonne ke ikutlwa e kete ke nna yo o tshwanetseng go tlhoma molao, e seng mosha wa me.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Molekane wa me ga a nnisege, ka go bo a ikutlwa e kete ke ene yo o tshwanetseng go tlhoma molao, e seng mosha.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Fa re tlhoma melao mmogo le basha ba rona, seno se thusa lelapa go tlhaloganyana botoka. Melao e tla kgona go diragadiwa, le basha ba rona ba tla batla le go kgona go e latela melao eo.", + "When we tried to set a rule, we got into an argument.": "Fa re ne re leka go dira molao, re nnile le ngangisano.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "A mosha wa gago o ne a itumetse fa o leka go dira molao? Go botoka go dira melao fa maemo a ritibetse. Fa wena le mosha wa gago lo lapile kgotsa lo tshwerwe ke tlala, go botoka go bua ka melao kgantele.", + "We were not able to stick to the rule.": "Ga re a kgona go latelela molao.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Molao o tshwanetse go nna o totobetseng le o o kgonang go latelwa. Netefatsa gore o na le molao o o kgonang go latelwa motlhofo, jaaka go ja dijo mmogo gangwe ka Sontaga mongwe le mongwe go na le bosigo bongwe le bongwe. A o tlhoka go nna yo o fetofetogang ka molao?", + "Your goal was to make ONE rule with your teen this week.": "Mokgele wa gago e ne e le go direla mosha wa gago molao o le MONGWE mo bekeng eno.", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "O dirile seno sentle! Ga go motlhofo, le basha ga ba kitla ba boloka melao ka dinako tsotlhe, mme go dira melao konokono e le mmalwa lo le mmogo ke tshimologo e ntle. Ikakgole ka go leka seno - re motlotlo ka wena!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Melao e thusa basha go itse gore ke eng seo se lebeletsweng mo go bone. \n\nGantsi bana ba dingwaga tsa bosha ba ikobela melao fa o e tlhoma O NA LE bone e bile o ba leboga fa ba e ikobela!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Dumelang, lotlhe. \n\nKgang eo re tlileng go bua ka yone gompieno ke melao. \n\nMelao e dira gore go nne le kagiso mo lelapeng e bile e dira gore botlhe mo lelapeng ba kgone go tlhaloganyana. \n\nMelao e thusa gore mongwe le mongwe mo lelapeng a itse gore o na le maikarabelo; ka jalo, go botlhokwa gore go nne le melao mo lelapeng. \n\nLelapa leo le nang le melao le dirisana mmogo ka kagiso.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Kwala molao o le mongwe wa botlhokwa o o ka ratang go o dira le mosha wa gago - o tla dira seno e le go ikatisa mo gae beke eno. \n\nBa tlile go akanya eng ka one?", + "Have you managed to set a rule together with your teen?": "A o kgonne go baya molao mmogo le mosha wa gago?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ka dinako tse dingwe go utlwala e kete basha ba gago ba santse ba sa itumela le fa o lekile ka moo o kgonang ka gone. Gopola gore o dira tiro e ntle, le gore go tlile go nna le dinako tse di monate le bone!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "O gaufi le go nna le sedirisiwa sengwe sa botsadi! Feleletsa @local.workshop_data.in_text_title, baya molao o le MONGWE o o motlhofo le o o ka kgonang go latelwa le mosha wa gago, mme o bone dilo di fetoga!", + "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @fields.user_name! Beke e ntshwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e obamele.", + "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Dumela @fields.group_name! Beke e ntshwa, tirelothuto e ntshwa! Ithute go tlhama melao ya fa gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e obamele.", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Re lebogela gore o dirisitse @global.parent_app le go ikemisetsa go tsaya loeto lwa gago lwa go nna motsadi. \n\n@local.workshop_data.in_text_title e tla go bontsha kafa o tshwanetseng go tlhoma melao ka teng ka tsela e e tla thusang mosha wa gago go e tlhaloganya le go e latela botoka.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go fetsa @global.parent_app pele ga o simolola workshop e ntšha. Ga e kitla e tsaya nako e telele mme e tla thusa mosha wa gago go latela melao botoka!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, workshop e ntšha e tla go thusa go itse gore ke leng basha ba bontsha maitshwaro a a maswe (kgotsa a a molemo)!", + "They discussed the reasons behind the rule": "Ba tlotlile ka mabaka a a dirileng gore molao o nne teng", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy", + "The rule was clear, specific and fair": "Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", + "That's right, making clear rules together in a calm and positive way works so well!": "Go gontle, go dira melao mmogo ka tsela e e ritibetseng le le siameng go dira sentle tota!", + "She praised him": "O mo akgotse", + "She rewarded him when he followed the rule": "O ne a mo duela fa a fetsa go latela molao", + "Exactly - a positive response makes all the difference!": "Go ntse jalo - karabo e e siameng e dira gore dilo di tsamaye sentle!", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "A re baleng ka se se diragetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Ka metlha o tla gae thari!”\n\n@global.w_rules_teen_boy: “Nnyaa ga ke tle thari, ga ke itse le gore go tla thari go raya eng! Ntlogele.”", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Ke molao ofe o o maleba o @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o tlhomang mmogo?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Tla re bone gore @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba dirile seno jang mo letsatsing le le latelang:\n\n@global.w_rules_female_caregiver_1: “Ke batla gore o itumele, @global.w_rules_teen_boy, mme gape ke tshwenyegile ka go tla gae thari ga gago. A o itse gore goreng ke rialo?” \n\n@global.w_rules_teen_boy: “Ka gonne o batla ke nna le nako e ntsi ya go dira tiro ya sekolo?”", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “O nepile, e bile gape ga go a sireletsega mo lefelong leno gore o bo o le kwantle letsatsi le phirimile. O akanya gore ke nako efe e e tshwanetseng ya gore o tle gae?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “A nka tla gae ka 10pm?\" @global.w_rules_teen_boy: \n\n@global.w_rules_female_caregiver_1: “Go tla be go le thari thata, 6pm e ntse jang? Kgotsa nako e e magareng ga dinako tseo?”", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “A nka tla gae ka 6pm ka malatsi a sekolo ke be ke tla ka 10pm ka Labotlhano le Lamatlhatso?” \n\n@global.w_rules_female_caregiver_1: “Ee, go siame. Go tloga jaanong, molao wa mo gae ke gore o tshwanetse go tla gae ka 6pm mo malatsing a sekolo o bo o tla ka 10pm ka Labotlhano le Lamatlhatso. Mme ka metlha o tsamaye le ditsala fa o tla gae. A wa nkutlwa", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Go siame, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboga thata, @global.w_rules_teen_boy, go bo o nthusitse gore re kgone go tla ka molao o siameng mmogo. Ke motlotlo go go bona o simolola go nna le maikarabelo.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Letsatsi le le latelang...\n\n@global.w_rules_female_caregiver_1: “Ke a leboga, @global.w_rules_teen_boy, go bo o tlile gae ka nako. Fa o fetsa tiro ya sekolo re ka tla go ja dijo tse o di ratang thata tsa maitseboa.”", + "Online Safety": "Tshireletsego ya Inthanete", + "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Melao e botlhokwa go boloka basha ba gago ba sireletsegile - le mo inthaneteng. Go buiwa go le gontsi ka seno mo Kopanong ya Beke le Beke ka thulaganyo ya tshireletsego, mme tla re simolole ka go e bona gone jaanong!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, a o dirile tirogae ya gago?\"\n\n@global.w_rules_teen_girl: \"Ke etla @global.w_rules_female_caregiver_2, ke feleletsa bidio eno ya @global.teen_social_medium\"", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Tota o kgeleke ya go bina! Mpolelele gore goreng o go rata\"\n\n@global.w_rules_teen_girl: \"Ditsala tsa me tsotlhe di dira jalo, @global.w_rules_female_caregiver_2. Ke na le batho ba ba e ratang ba le 600 ba ba ntshalang morago ba le 120.”", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka fa o binang bontle ka teng, @global.w_rules_teen_girl. Mme re tshwanetse go tlhomamisa gore o sireletsegile. \n\nKe itse gore ditsala tsa gago di lebelela @global.teen_social_medium, mme di dirisa akhaonto e e sa sireletsegang, go na le batho bangwe ba ba lebang dibidio tsa basha gore ba kgotsofatse keletso ya bone ya thobalano. Ka dinako tse dingwe ba ikgolaganya le basha. Ba itira e kete ba siame mme ba feleletsa ba tshosetsa basha le go ba sotla.”", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Tla re lebe inthanete mmogo re bone gore re ka dira jang gore e go itumedise le gore gape e sireletsege. Bona - o ka kgona go dira gore akhaonto ya gago e nne khupamarama le go laola batho ba ba go salang morago.\n\nO ka nna wa amogela batho ba o tsenang sekolo le bone le ba mo lefelong la rona, mme e seng batho ba ba ikgolaganyang le wena mo inthaneteng.\n\nA re ka dira molao mmogo o o ka o dirisang @global.teen_social_medium, mme e le ka akhaonto ya khupamarama? Ke a go tshepa gore o tla amogela batho ba o ba itseng!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka wena @global.w_rules_teen_girl\"", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Seno se sentle ruri. Mekgwa eno yotlhe e dira gore lelapa la lona le nonofe. Nna motlotlo.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa diang... \n* Kgang le motlotlo - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang... \n* Kgang le go leba kwa morago - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "What went well here in making a rule together?": "Ke eng se se tsamaileng sentle ka go dira molao mmogo?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "O akanya gore @global.w_rules_teen_boy o itsitse jang gore @global.w_rules_female_caregiver_1 wa gagwe o a mo kgathalela?", + "Making the rule together went well because...": "Go dira molao mmogo go tsamaile sentle ka gonne...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Ba tlotlile ka mabaka a a dirileng gore molao o nne teng \n* @global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy \n* Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano \n* @global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy o ne a itse gore @global.w_rules_female_caregiver_1 wa gagwe o mo rata ka gonne...", + "* She praised him\n* She rewarded him when he followed the rule": "* O mo akgotse\n* O ne a mo duela fa a fetsa go latela molao", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Melao ya mo gae e thusa gore basha ba rona ba sireletsege, le gore ba tlhaloganye se ba tshwanetseng go se dira. Fa o dira gore bana ba dingwaga tsa bosha ba thuse go dira melao go nna motlhofo gore ba e latele.", + "TEAM RULES": "MELAO YA SETLHOPHA", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Rulaganya melao LE mosha wa gago. Simolola ka molao wa ntlha o le mongwe fela - o ka nna wa oketsa ka o mongwe morago. Tlotla mabaka a a dirang gore go nne le molao o bo o reetsa maikutlo a bone.", + "REAL RULES": "MELAO YA MMATOTA", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "E dire gore e nne ya mmatota gore basha ba gago ba kgone go e dira, le gore e utlwale sentle le go totobala gore e tlhaloganyege sentle. E seng ‘ka nako’ mme ‘ka 7pm’.", + "PRAISE RULES!": "MELAO YA GO AKGOLA!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Akgolela mosha go rulaganya molao le wena, o bo o mo akgolela go o latela!", + "Let's practice making rules.": "A re itlwaetseng go dira melao.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Ke molao ofe o le nosi o o botlhokwa o mongwe le mongwe wa lona a ka ratang go o dira le basha ba lona? \n* O akanya gore mosha wa gago o tla akanya eng ka ga molao oo? \n\nGakologelwa, dira melao gore e nne e e maleba le ya mmatota!", + "Here are some of the rules other families created:": "Fano ke melao mengwe e malapa a mangwe a e dirileng:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Mosha a ka tshameka kwa ntle fa a sena go fetsa tirogae ya sekolo\n* Maloko otlhe a lelapa ba ja mmogo dijo tsa maitseboa\n* Mosha 1 o tlhatswa dijana ka Sontaga le Mantaga, Mosha 2 ka Labobedi le Laboraro\n* Re buisana mmogo ka bonolo le tsela e ntle\n* Fa o reeditse mmino o tshwanetse go dirisa di-earphones", + "Remember that YOU matter!": "Gopola gore O botlhokwa!", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Ke lebogela go lemoga maikutlo a a siameng. Ke itumelela go utlwa gore lo tsogile sentle gompieno!", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Ke lebogela go lemoga maikutlo a a thatanyana. Botshelo bo ntse jalo, ka dinako tse dingwe go nna thata. Gopola gore ga o nosi.", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Dirang dimmapa tse pedi mmogo le basha ba gago tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Fa lo sa dira seo mmogo ga jaana, dira dimmapa tse pedi le basha ba gago tsa mafelo a a sireletsegileng le a a sa sireletsegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", "map risks and support with their teens": "bona dikotsi le tshegetso le basha ba bone", "map risks and support with your teen": "bona dikotsi le tshegetso le mosha wa gago", "My teen and I disagreed on which areas and online activities were unsafe.": "Nna le mosha wa me ga re dumalane ka gore ke mafelo afe le mafaratlhatlha afe a a sa sireletsegang.", @@ -1340,7 +1090,153 @@ "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Go bokete go itse sengwe le sengwe ka tikologo ya rona. Akaretsa leloko le lengwe la lelapa kgotsa tsala lo dira tiro nngwe. O kgona le go etela ditirelo tse di leng gone mme o ba botse gore ba dira eng. Fa re itse go le gontsi, re ka kgona go boloka malapa a rona a sireletsegile!", "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Ga ke itse go le gontsi ka thekenoloji, ka jalo ga ke itse gore nka bua jang le mosha wa me ka yone.", "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Ga go na bothata gotlhelele! O santse o ka tshegetsa mosha wa gago. Kopa mosha wa gago gore a tlhalose didiriswa tse a di dirisang - o ka dira seno ka nako ya fa lo ipha nako mmogo. Eno ke tshono e ntle ya go bontsha kgatlhego mo botshelong jwa mosha wa gago mme lo buisane ka dikotsi tse di ka diregang. Fa o sa tlhomamisega ka gore o beye melao efe, lo ka nna lwa dumelana, le mosha wa gago, go leka molao o mosha mo dibekeng tse pedi mme lo buisane ka gore dilo di tla jang le go fetola molao fa go tlhokega!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Mokgele wa gago e ne e le go leka go rarabolola bothata kgotsa kgotlhang mmogo le mosha wa gago.", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Mokgele wa gago e ne e le go bona dikotsi le ditsamaiso tsa tshegetso le mosha wa gago - ka bobedi mo tikologong ya gago gammogo le mo mafaratlhatlheng.", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Mosha a ka fetsa nako e ntsi a le kwa ntle kgotsa mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa. \n\nGo buisana mmogo ka mafelo a a sireletsegileng le a a sa sireletsegang, go thusa thata!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga tshireletsego ya basha. \n\nKe maikarabelo a batsadi go boloka basha ba bone ba sireletsegile ka dinako tsotlhe. Re tshwanetse go tlhomamisa gore basha ba rona ba sireletsegile mo lefelong le re nnang mo go lone. Ke maikarabelo a rona go dira gore ba itse mafelo a a sireletsegileng le a a sa sireletsegang a re nnang mo go one. \n\nGape ke maikaraelo a rona go tlhomamisa gore ba tlhaloganya dikotsi tse ba ka tsenang mo go tsone fa ba le mo inthaneteng. Ka tsela eo basha ba rona ba tla nna le maikarabelo le go kgona go dira ditshwetso tse di siameng gore le bone ba itshireletse.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Tlotlang mmogo:\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana. \n\nFa tlase go na le mafelo a a ka thusang", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng.\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Lemoga kafa ba dirisang webo sentle ka teng! \n* Akanyang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Nako le nako fa o rulaganya kgotsa o boloka thulaganyo ya tshireletsego, tobetsa @global.parent_point o bo o itumelela katlego ya gago!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "A re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le ao a sa babalesegang: \n* Mmapa wa motse wa rona \n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng \n\nLo tla dira se se tshwanang le mosha wa gago e le katiso ya legae mo bekeng eno - fa mosha wa gago a le fano ga jaana, lo ka dira seno mmogo gone jaanong!", + "My family can join in now!": "Lelapa la me le ka nna la tsena jaanong!", + "Let me try it out by myself": "Tla ke e leke ka bonna", + "Safety Plan": "Thulaganya ya Tshireletsego", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!\n\nA re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa rona\n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng\n\nA re direng mmapa tseno jaanong re le setlhopha. \n\nO tla dira se se tshwanang ka basha ba gago e le ikatiso ya kwa gae mo bekeng eno.", + "Step 1: What are important places in your community?": "Kgato 1: Ke mafelo afe a a botlhokwa mo lefelong la lona?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka mmapa wa lefelo le mosha wa gago a nnang mo go lone, o o nang le ditshwantsho tsa mafelo otlhe a botlhokwa jaaka ditsela, ntlo ya gago, sekolo, mafelo a ngwana wa gago wa dingwaga tsa bosha a a etelang.", + "Step 2: Which places are safe and unsafe?": "Kgato 2: Ke mafelo afe a a sireletsegileng le a a sa sireletsegang?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Tlotlang mmogo:\n\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dira eng go boloka mosha wa gago a babalesegile?", + "Step 3: Where can you get support?": "Kgato 3: O ka bona tshegetso kae?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n \n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", + "Step 4: What are risky places online and how can you make them safer?": "Kgato 4: Ke mafelo afe a a kotsi mo inthanete mme o ka a dira gore a sireletsege jang?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Takang ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", + "Have you talked with your teen about safety measures?": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Eno e nnile nako e bokete thata ya go nna motsadi. O tshwanetse go nna motlotlo ka sengwe le sengwe se o se dirileng. \n\nAkanya ka nako yotlhe e o dirileng gore mosha wa gago a nyebe ka yone le tlhokomelo yotlhe e o mo neileng yone. Batsadi ba a gakgamatsa, le wena wa gakgamatsa!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Go boloka mosha wa gago a sireletsegile, go a thusa go tlotla le bone ka tikologo ya gago le maitemogelo a bone a mafaratlhatlha. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone gore o ka dira seno!", + "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @fields.user_name! O gaufi le bokhutlho ba tirelothuto ya @global.parent_app! Re lebogela maitlamo a gago a goya-go-ile.\n\nBeke eno tirelothuto e ka ga go tshola mosha wa gago a bolokesegile, mo mafaratlhatlheng le mo motseng selegae.Itumele!", + "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Dumela @fields.group_name! O gaufi le bokhutlho ba tirelothuto ya @global.parent_app! Re lebogela maitlamo a gago a goya-go-ile.\n\nBeke eno tirelothuto e ka ga go tshola mosha wa gago a bolokesegile, mo mafaratlhatlheng le mo motseng selegae.Itumele!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "O setse o kgonne go ithuta bokgoni jo bontsi jwa go godisa bana mo dibekeng tse di fetileng!\n\nFeleletsa workshop e e latelang go iponela sedirisiwa se se nngwe.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Go dira thulaganyo le mosha wa gago go ka thusa go thibela mathata a le mantsi - leka go dira jalo pele go o tswelela!\n\nO dirile sentle go dirisa @global.parent_app go tshegetsa balelapa la gago.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Re a go akgola, o feditse @local.workshop_data.in_text_title. Kamoso, go tla bo go na le workshop e ntšha ya go thusa wena le balelapa la gago go dirisana le seemo sepe fela – fa le dira mmogo le ka kgona go dira go le gontsi thata!", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "A re akanye ka se se diragaletseng @global.w_safe_teen_girl_1:", + "What was risky about that situation?": "Boemo joo bo ne bo le kotsi ka eng?", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho", + "@global.w_safe_teen_girl_1's friend was encouraging her": "Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo tlhotlheletsa", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Go tsamaya le monna yo mogolo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo", + "Many girls in our communities get pregnant or catch HIV from older men": "Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", + "All those things are true!": "Dilo tseo tsotlhe ke boammaaruri!", + "Let's think about our teens' online safety.": "A re akanye ka tshireletsego ya basha ba rona mo inthaneteng.", + "What is the biggest online risk for teens these days?": "Ke kotsi efe e basha ba ka kopanang le yone mo inthaneteng malatsi a?", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", + "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Puisano ke selo sa botlhokwa tota!\n\nA re boneng gore go diragetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", + "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Go diragetse sengwe fa ke tswile le ditsala tsa me @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Mpolelele, @global.w_safe_teen_girl_1\"", + "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Monna yo o mo koloing: “Dumela montlenyane. Ke ntse ke go lebeletse. O montle tota, leina la gago ke mang? \n\n@global.w_safe_teen_girl_2: “Leina la gagwe ke @global.w_safe_teen_girl_1”", + "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Monna yo o mo koloing: “@global.w_safe_teen_girl_1, a ga o batle go tsamaya le nna re ye go reka sengwe sa go nwa le ditšhipisi? Tlaya, tsena mo teng, o tla boa ka nako, ke a go tshepisa...” \n\n@global.w_safe_teen_girl_1: “Ga ke akanye gore ke kakanyo e ntle eo...”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “O lesego, tsala ya me. Ke eletsa e kete monna a ka NKOPA gore ke tswe le ene a bo a nthekela dimpho. Ke a go bolelela, fa o sa dire jalo ke ya go bolelela batho botlhe gore o sematla!”", + "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 o seka wa tsamaya! Ikele tlhoko! A reye gae. Go kotsi go tsamaya le batho ba o sa ba itseng. Ntle le moo, o mogolo mo go wena e bile se a se dirang ga se a siama.\"\n\n@global.w_safe_teen_girl_1: “Tota ga ke itse...”", + "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Pfff, ke motlotlo ka wena gore ga o a tsena mo koloing. E ne e le boemo jo bo kotsi, ke lebogela gore o mpoleletse!”", + "Let's look at another example of a dangerous situation together.": "A re lebe mmogo sekai se sengwe sa boemo jo bo kotsi.", + "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “Tsala ya me e ntse e bua le mosimane wa thaka ya rona mo inthaneteng... O tlile go mo romelela ditshwantsho tsa gagwe. A go botoka ka gonne ke thaka ya rona?”", + "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “O tsala e e molemo go bo o tshwenyegile ka ene. Go romela ditshwantsho o sa apara go kotsi tota.”", + "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Ka dinako tse dingwe batho ga ba nna jaaka ba bua mo inthanete - a ka nna a re ke thaka ya gago kante ke monna wa dingwaga tse 50. Kgotsa fa ba kgaogana, a ka nna a romela ditshwantsho tseo kwa bathong botlhe e be tsala ya gago e utlwa botlhoko.”", + "Doing any of these makes you a great parent.": "Go dira dilo tseno tsotlhe go go dira motsadi yo o molemo.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Kgang le go leba kwa morago - tse di dirileng!\n* Kgang le go leba kwa morago - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "A re bue ka se se diragaletseng @global.w_safe_teen_girl_1", + "Discuss together: \n\nWhat was risky about that situation?": "Tlotlang mmogo: \n\nBoemo joo bo ne bo le kotsi ka eng?", + "The situation was risky because...": "Boemo joo bo ne bo le kotsi ka gonne...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho \n* Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo kgothaletsa \n* Go tsamaya le monna yo mogolo mo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo \n* Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo \n* Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", + "Let's talk about our teens' online safety.": "A re bue ka tshireletsego ya basha ba rona mo inthaneteng.", + "What are some of the online risks for teens these days?": "Ke dikotsi dife tse basha ba ka kopanang le tsone mo inthaneteng malatsi a?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano \n* Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe\n* Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye\n* Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa\n* Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", + "MAPS": "DIMMAPA", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Dira DIMMAPA le mosha wa gago ka mafelo a a sireletsegileng le ao a sa sireletsegang mo lefelong leo le nnang mo go lone le mo inthaneteng. Buang ka fa a ka bolokang tshedimosetso ya gagwe, ditshwantsho le dibidio e le khupamarama/sephiri mo inthaneteng ka gone. Buang ka ka fa selo se o se tsenyang gangwe mo inthaneteng, se nnang moo go ya go ile ka teng. Ba ka tswa ba itse sekai se se tswang kwa ditsaleng tsa bone.", + "Safety Plan Activity": "Tiro ya Thulaganyo ya Tshireletsego", + "RULES": "MELAO", + "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Dira MELAO le mosha wa gago ka tshireletsego ya go dirisa ditiriso le diwebosaete tse ba di ratang. \n\nA o gakologelwa kgang ka Tshireletsego ya Inthanete? E bone gape fano.", + "Online Safety Story": "Kgang ya Tshireletsego ya Inthanete", + "AMNESTY": "KGOLOLESEGO", + "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Dira tumalano ya KGOLOLESEGO. Fa go direga sengwe se se ba kgopisang, se se sa itumediseng kgotsa se se boifisang, ba ka nna ba bua le wena mme o ka nna wa se galefe kgotsa wa se ba otlhae, le fa ba ne ba dira sengwe se se phoso.\n\nA o gakologelwa kgang ka Tshireletsego ya Kgololesego? E bone gape fano.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Go tlhokomela bana ka dijithale go tshwana le fa o ba tlhokomela ka tsela ya mmatota. O tsere KGATO E KGOLO ya go boloka mosha wa gago a sireletsegile mo lefelong la lona le mo inthaneteng. Go go siametse!", + "Resources to help in the community": "Didiriswa tse di ka thusang mo lefelong la lona", + "Online Safety Resources": "Ditlamelwa Tsa Tshireletsego ya Inthanete", + "Being a great parent also means taking time to care for yourself every day.": "Go nna motsadi yo o molemo gape go raya go nna le nako ya go itlhokomela malatsi otlhe.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Go gontle. E bile go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", + "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Go nna motsadi go bokete. Mme go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "O feleleditse workshop ya beke eno.\n\nRe tlile go dira ditiro dingwe tsa go itlhokomela gape fa lo kopana mmogo e le la ntlha le setlhopha sa lona - lotlhe lo tlhoka go nna le nako e e oketsegileng ya go itlhokomela!", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Nako e o kgonang ka yone, iketle, lemoga o bo o ituela. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Nako le nako fa o iketla, o gakologelwa sengwe se o se dirileng sentle kgotsa o ituela, tobetsa @global.parent_points go itumelela katlego ya gago!", + "Why @data.workshop.w_self_care.short_title?": "Goreng @data.workshop.w_self_care.short_title?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Gantsi ga re nke re itlhokomela mo go lekaneng. Mme go botlhokwa gore re dire jalo, segolobogolo jaaka motsadi! \n\nGo fokotsa go nna le tshwenyega mo maikutlong le go itshwara sentle go tla thusa rona LE bana ba rona ba dingwaga tsa bosha.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se bua ka go itlhokomela. \n\nGo na le dinako tse re itemogelang dikgwetlho, tse re lebanang le mathata e bile re sa itse gore re dire eng. Go botlhokwa gore re itlhokomele le go itse ditsela tsa ka fa re ka ritibalang ka gone fa re lebane le mathata, dikgwetlho kgotsa fa go tsoga mathata. \n\nFa re ritibetse re mo boemong jo bo siameng jwa go akanya sentle le go tla ka ditharabololo tse di tshwanetseng mo dikgwetlhong dingwe le dingwe tseo re lebaneng le tsone.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Gopola – beke eno ke kaga WENA! Re solofela o itlhokomela sentle. O tshwanelwa ke seno!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Siimolola workshop e ntšha ya @global.parent_app gotlhelele kamoso. O tla bona dipholo tse di molemo!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "A o setse o boleletse molekane wa gago @global.parent_app kaga sediriso? Go simolola kamoso, o ka simolola go dira di-workshop tsa @global.parent_app mmogo!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Go tlhokomela se re se dirang sentle go re thusa gore re tlhome mogopolo mo dilong tse di siameng. \n\nA re diriseng nako eno gore re ikakgole. Re tla go bontsha gore jang.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.\n\nSe bolelele ba bangwe ka lentswe le le kwa godimo: “Ke ikakgolela...”\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", + "Recognise": "Lemoga", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Tsaya nako gore o ikakgole. \n\nJaanong re tla go bontsha gore o dire jang.", + "Think of one thing YOU have done well recently.": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.", + "\"Well done to me for...\"": "“Ke ikakgolela...”", + "Showing love to my children": "Go bontsha banake lorato", + "Getting up even though I felt tired": "Go tsoga le fa ke ikutlwa ke lapile", + "Smiling at someone": "Go nyenya le mongwe", + "Making food to stay strong": "Go dira dijo gore ke nne ke nonofile", + "Spending time with my children": "Go fetsa nako ke na le banake", + "Helping my children with schoolwork": "Go thusa banake ka tiro ya sekolo", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Buela kwa godimo fa o kgona.\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", + "Things to praise yourself for:": "Dilo tse o ka di ikakgolelang:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Go bontsha banake lorato \n* Go tsoga le fa ke ikutlwa ke lapile \n* Go nyenya le mongwe \n* Go dira dijo gore ke nne ke nonofile \n* Go fetsa nako ke na le banake \n* Go thusa banake ka tiro ya sekolo", + "Let's try it out and do a short relaxation activity together!": "A re e leke le go dira tiro e khutshwane ya go iketla mmogo!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Re le batsadi, gantsi ga re na nako ya go itlhokomela - mme go botlhokwa thata go dira jalo! Go fokotsa kgatelelo ya maikutlo a rona LE a bana ba rona ba dingwaga tsa bosha. \n\nA re tseye kgato ya ntlha re be re dira tiro e khutshwane ya go iketla mmogo.", + "Well done! Try to do this every day.": "O dirile sentle! Leka go dira seno letsatsi le letsatsi.", + "Have a hot drink": "Nwa seno se se bolelo", + "Call a friend or relative": "Leletsa tsala kgotsa wa losika", + "Have a relaxing bath": "Iketle mo bateng e e tlhapelang", + "Read": "Buisa", + "Watch TV": "Bogela TV", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana. Abelana le ba bangwe:\n\nKe dilo dife tse dinnye tse di dirang gore ke itumele?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Leka go dira sengwe go ituela letsatsi le letsatsi.\n\nO ka nna wa dirisa bokgoni jono kwa gae le go di bona nako nngwe le nngwe mo @global.parent_centre ya gago!", + "Reward": "Tuelo", + "We all deserve to treat ourselves well!": "Rotlhe re tlhoka go itshwara sentle!", + "What small thing makes you happy?": "Ke dilo dife tse dinnye tse di dirang gore o itumele?", + "Nice! Taking care of yourself is an important parenting skill!": "Bontle! Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana!", + "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_1 kgotsa sengwe fela se sele se o se itumelelang.", + "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_2 kgotsa sengwe fela se sele se o se itumelelang.", + "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_3 kgotsa sengwe fela se sele se o se itumelelang.", + "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_4 kgotsa sengwe fela se sele se o se itumelelang.", + "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_5 kgotsa sengwe fela se sele se o se itumelelang.", + "Things you can do to reward yourself:": "Dilo tse o ka di dirang go ituela:", + "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Nwa seno se se bolelo \n* Leletsa tsala kgotsa losika \n* Iketle mo bateng e e tlhapelang \n* Buisa\n* Bogela TV", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Gompieno o tlile go itemogela ditiro tse 3 tse di ka go thusang go itlhokomela, e bile re tlile go go botsa\ndipotso di le mmalwa go tlhomamisa gore a tiriso e go tshwanetse.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Tiro ya go iketla\n* Tiro ya go lemoga\n* Tiro ya go ituela\n* Didirisiwa: Tsela ya go tsenya lenaane la go itlhokomela\n* Dira gore tiriso e go tshwanele\n * Dikakantsho tsa katiso ya legae", + "Customise your @global.parent_app": "Itsenyetse dilo tse o di batlang mo @global.parent_app ya gago", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Jaanong ka gore re agile bokgoni jwa go itlhokomela, a re tlhomamise gore @global.weekly_workshops tsa gago di a go tshwanela sentle.", + "You seem to have completed the customisation process already. You can now skip this activity.": "Go bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse o di batlang. O ka nna wa tlola tiro eno.", + "RELAX": "IKETLE", + "Do a 30 second quick relaxation activity.": "Dira tiro ya ka bonako ya metsotswana e le 30 ya go iketla.", + "Relax activity": "Tiro ya go iketla", + "RECOGNISE": "LEMOGA", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Tsaya nako o bo o akanya ka selo se le sengwe se O se dirileng morago jaana se o se dirileng bontle thata! Buela kwa godimo fa o kgona “Ke ikakgolela ...”", + "Recognise activity": "Tiro ya go lemoga", + "REWARD": "TUELO", + "Remember you deserve your quality time too! What makes you happy?": "Gakologelwa gore le wena o tlhoka nako ya go iketla! Ke eng se se dirang gore o itumele?", + "Reward activity": "Tiro ya go ituela", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "O amogetswe! Go a itumedisa go nna le wena fano. Beke eno ke ka WENA. \n\nMo workshop eno ya kamogelo o tla: \n* Bona didirisiwa tsa go itlhokomela \n* Direla ditiriso malebana le ditlhoko tsa gago", + "Wonderful, I am so happy things are going well.": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle.", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Tshwarelo gore dilo di bokete jaanong. Go tlwaelegile gore go nne thata ka dinako dingwe. Gopola gore ga o nosi!", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Ruta mosha wa gago ka dikgato di le nne tsa go rarabolola mathata:\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE \n\nDirisang dikgato tseno mmogo fa mathata a tlhagelela!\n\nFa go direga sengwe se se maswe, gantsi re a kgopisega e be re latofatsa mongwe. Mme se basha ba rona ba se tlhokang ke gore mongwe a ba thuse go batla ditharabololo mmogo. Ba reetse, amogela kafa ba bonang le kafa ba utlwang dilo ka gone, o bo o ba lebogela go go ikanya.\n\nFa o ruta basha ba gago kafa ba ka lwang le mathata ka gone go tla ba thusa botshelo jwa bone jotlhe. Ruri ke mpho!", + "Some problems other parents solved with their teens:": "Mathata mangwe a batsadi ba bangwe ba a rarabolotseng le basha ba bone:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Mosha wa me ga a batle go ya sekolong\n* Ke tshwenyegile ka gore mosha wa me o tla nna moimana kgotsa o tla imisa mongwe\n* Ke tshwenyegile ka ga se mosha wa me a se dirang mo inthaneteng\n* Mosha wa me o tsamaya le ditsala tse di sa siamang\n* Mosha wa me o motlapa\n* Mosha wa me ga a dire tiro ya gagwe ya sekolo\n* Mosha wa me a ka tswa a dirisa diokobatsi", "resolve problems with their teens": "rarabolola mathata le basha ba bone", "resolve the problem with your teen": "rarabolola mathata le mosha wa gago", "I forgot the steps of problem solving.": "Ke lebetse dikgato tsa go rarabolola bothata.", @@ -1354,11 +1250,76 @@ "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Fa bothata bo tlhaga, rotlhe re a galefa kgotsa go tshwenyega maikutlo ka dinako dingwe. Gopola, fa o ikutlwa o galefile kgotsa o tshwenyegile mo maikutlong, o ka nna wa ema go se kae go go thusa go ritibala mme o rarabolole bothata jo o lebaganeng le jone.", "My teen got angry and did not want to talk about the problem.": "Mosha wa me o ile a galefa mme a sa batle go bua ka bothata.", "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Mosha wa gago o ka nna a imelwa thata ke go lepalepana le bothata ka yone nako eo. Lemoga maikutlo a gagwe o bo o a tlhalose, mme moragonyana mo letsatsing leo kgotsa mo bekeng eno o bo o rulaganye nako ya gore le buisane ka ga go rarabolola bothata joo mmogo. Go ipha nako ya go buisana le mosha wa gago, bothata bo ka rarabololwa sentle.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o tenegile, hemela ko teng le kwa ntle ga tlhano pele ga o ka tsaya kgato. O tobeditse @data.habit.breathe.in_text_title - o dirile sentle!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile maikutlo kgotsa o tenegile, hemela kwa teng le kwa ntle ga tlhano pele ga o ka tsaya kgato.", - "How did this work out?": "Seno se ile sa dira jang?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Mokgele wa gago e ne ele go bua le mosha wa gago gore lo ikutlwile jang fa lo ne lo mo seemong sa go tshwenyega mo maikutlong.", - "How did this go?": "Seno se ile sa direga jang?", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Mokgele wa gago e ne e le go leka go rarabolola bothata kgotsa kgotlhang mmogo le mosha wa gago.", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Lelapa lengwe le lengwe le lebana le dikgwetlho, mme fa re dira mmogo re ka kgona go lwa le mathata ka tsela e e atlegileng le e edileng. \n\nRuri ke bokgoni jo le mosha wa gago a ka bo ithutang!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga go rarabolola mathata. \n\nRotlhe re a itse gore mo botshelong go na le dinako tse re lebanang le mathata, e bile rotlhe re a itse ka tsela ya gore fa re iphitlhela re le mo boemong jono, go thata go akanya ka ditharabololo tse di siameng ka yone nako eo. \n\nKa jalo, go botlhokwa gore fa re lebane le mathata re eme go se kae, re heme, re ritibale re bo re akanya ka bokgoni jwa go rarabolola mathata bo re ka bo dirisang. \n\nGakologelwang gore re akaretseng le basha ba rona fa re rarabolola mathata. Seno se tla ba thusa gore ba nne le maikarabelo le go ithuta kafa ba ka rarabololang mathata a bone ka gone mo nakong e e tlang.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "A re boele kwa go @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe re bone gore ba tlile ka tharabololo efe.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe ba tlile ka ditharabololo di le tharo.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Go tlhokomela basha go bokete tota. \n\nGantsi ga go na ditharabololo tse di motlhofo, mme jaanong @global.w_solve_female_caregiver_1 o ithutile gore a ka bua le morwadie ka ga dilo tseno. \n\nPele, o ne a tshwenyegile a le nosi, jaanong ba tlile ka ditharabololo ba le mmogo!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "A o setse o lekile dikgato tse nne tsa go rarabolola bothata le mosha wa gago? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Go ikemisetsa ga gago go rotloetsa mongwe le mongwe. Kgoba makgwafo mme o tswelepele!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "O mo tseleng e e siameng ya go simolola go rarabolola mathata mmogo le mosha wa gago! \n\nFeleletsa @local.workshop_data.in_text_title mme o iponele bokgoni jo bongwe jwa botlhokwa jwa go godisa bana!", + "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Dumela @fields.user_name! O dira tswelopele e ntle mo leetong la gago la batsadi!\n\nGo nna le mosha go raya go mekamekana le mathata a mantsi a a sa solofelegang. Tirelothuto eno e tlile go go bontsha tsela ya go mekamekana le ona.", + "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @fields.group_name! O dira tswelopele e ntle mo leetong la gago la batsadi!\n\nGo nna le mosha go raya go mekamekana le mathata a mantsi a a sa solofelegang. Tirelothuto eno e tlile go go bontsha tsela ya go mekamekana le ona.", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Ka basha, le mo botshelong, mathata a a sa lebelelwang a nna gone mme re tshwanetse go lepalepana le one. \n\nSimolola workshop e e latelang go ithuta gore o ka samagana jang le mathata ano ka katlego.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go e fetsa @global.parent_app pele ga o simolola workshop e ntšha. Go itse go rarabolola mathata a lona mmogo go tla thusa mo maemong a le mantsi!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go go thusa go boloka mosha wa gago a sireletsegile.", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "A re bone se se diragaletseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe fa @global.w_solve_teen_girl a ne a tshotse founo e e tswang kwa mosimaneng… founo!", + "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o tsaya kae selo seo?” \n\n @global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o e ntheketse. Ke founo e ntle, @global.w_solve_female_caregiver_1. E tsaya ditshwantsho tse dintle!”", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Ga ke batle go bona selo seo se se jang madi a mantsi! Mosimane oo ga a siama! O akanya gore o tlile go e duela ka bokae?!” \n\n@global.w_solve_teen_girl: “Ga go dirwe jalo, @global.w_solve_female_caregiver_1! Ga o dire sentle!”", + "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Ga ke batle go utlwa sepe!” \n\n@global.w_solve_teen_girl: “Ga o batle le go ntheetsa! Ga ke itse gore goreng ke leka go bua le wena!”", + "Let’s see how problem solving works in practice.": "A re bone kafa go rarabolola mathata go dirang ka teng fa go diragadiwa.", + "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 o tla gae go tswa tirong. \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ay dinaonyana tsa me! Ke tlhoka go nna fa fatshe nakonyana e be ke nwa kopi ya kofi pele ke simolola go baakanyetsa mongwe le mongwe dijo.”", + "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O dira eng? Borotho joo ke jwa dijo tsa maitseboa! Jaanong ga bo kitla bo re lekana rotlhe!”", + "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Tshwarelo, @global.w_solve_female_caregiver_2, ke ne ke tshwerwe ke tlala. Nka tlhalosa, wa bona, go na le mosimane mongwe kwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ema go se kae... hema...”", + "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Mphe nakonyana. Ke lapile e bile gone jaanong ke tshwenyegile ka go dira dijo tse di lekaneng tsa maitseboa.” \n\n@global.w_solve_teen_boy_2: “Ke kopa maitshwarelo, @global.w_solve_female_caregiver_2\"", + "Step 1: KNOW IT": "Kgato 1: A ITSE", + "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Jaanong mpolelele, goreng o tshwerwe ke tlala jaana? Ga o a ja dijo tsa gago tsa motshegare kwa sekolong?” \n\n@global.w_solve_teen_boy_2: “Ke jone bothata joo. Go na le mosimane kwa sekolong yo o nkgerisang. A re fa ke sa mo fe dijo tsa me tsa motshegare letsatsi le letsatsi, ene le ditsala tsa gagwe ba tlile go nkutlwisa botlhoko. O nkgalefisa tota!”", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ke maswabi go utlwa ka seo mme ke itumelela gore o mpoleletse, @global.w_solve_teen_boy_2. Ga go reye gore o ka ja dijo tsa mongwe le mongwe tsa maitseboa. Fa re fetsa go bua, o tshwanetse go ya kwa lebentleleng o ye go reka borotho jo bongwe. Mme sa ntlha: O akanya gore re tshwanetse go dirang ka bothata jwa mosimane yo o kgerisang?\"\n\n@global.w_solve_teen_boy_2: “Ke batla go mo itaya kgotsa go ipusolosetsa.”", + "Step 2: SOLVE IT": "Kgato 2: A RARABOLOLE", + "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… o akanya gore go tlile go diregang fa o dira jalo?\"\n\n@global.w_solve_teen_boy_2: “Ga ke itse. O mogolo mo go nna ka jalo a ka nna a nkutlwisa botlhoko le go feta. E bile nka tsena mo mathateng kwa sekolong le go kobiwa.”", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ee, seo se ka direga. Jaanong go na le moo re ka go dirang?\"\n\n@global.w_solve_teen_boy_2: “Ke akanya gore ke bolelele morutabana. Mme bana ba bangwe ba tlile go mpitsa mpimpi. Gongwe wena o bue le morutabana?”", + "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Eo e utlwala jaaka kakanyo e e botoka. Gape nka bua le batsadi ba gagwe fa o batla ke dira jalo.\"\n\n@global.w_solve_teen_boy_2: “Ke a leboga. Fa o akanya gore seo se ka thusa le sone. Ke a leboga, @global.w_solve_female_caregiver_2\"", + "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ke direla wena, moratiwa. Ke tla e dira fela fa ke fetsa go ja dijo tsa maitseboa. E bile o a itse? Fa e le gore seo ga se dire, re ka leka se sengwe mmogo.”\n\n@global.w_solve_teen_boy_2: \"Ke a leboga, @global.w_solve_female_caregiver_2\"", + "Step 3: TRY IT": "Kgato 3: E LEKE", + "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Beke morago ga moo… \n\n@global.w_solve_female_caregiver_2: \"Dilo di tsamaya jang kwa sekolong jaanong?\"\n\n@global.w_solve_teen_boy_2: “Go botoka, mosimane ole ga a sa tlhole a ntseela dijo tsa me tsa motshegare. Mme o santse a sa ntseye sentle.”", + "Step 4: TEST IT": "Kgato 4: E TLHATLHOBE", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ke maswabi go utlwa seo, @global.w_solve_teen_boy_2. A ke kope malome wa gago gore a bue le batsadi ba gagwe? Fa e le gore seo ga se dire, re tla leka sengwe se sele!\"\n\n@global.w_solve_teen_boy_2: \"Ee, ke a leboga @global.w_solve_female_caregiver_2. Ke lebogela gore o nkeme nokeng.”", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Tswala matlho a gago, goga mowa, o bo o itse gore sengwe le sengwe se o se dirileng se botlhokwa tota.", + "Ground @global.w_solve_teen_girl for a month": "@global.w_solve_teen_girl o nna mo gae kgwedi", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Ga o tle go tswela kwa ntle mo kgweding e e latelang”", + "That didn’t work... Let's try something else.": "Seo ga se a dira... A re leke sengwe se sele.", + "Return the phone and save up": "Busa founo o be o boloka madi", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Ga ke leke go latofatsa tsala ya gago kgotsa go nna lefufa. Ke tshwenyegile ka gore fa mongwe a go naya mpho go thata gore ‘nnyaa’ fa ba batla gore o ba duele ka sengwe - jaaka thobalano. Fa o batla go nna le founo, re tlile go boloka madi mmogo gore o kgone go itirela ditshwetso kwantle ga go mo kolota sepe.”", + "This is great! Try the third option as well.": "Ke selo se sentle! Leka le kakantsho ya boraro.", + "Learn about safe sex": "Ithute ka thobalano e e sireletsegileng", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Seno se ntira gore ke lemoge gore re tshwanetse go bua ka basimane le go itshireletsa. Basha ba dithaka tsa gago ba a ima kgotsa ba tshwarwa ke HIV. A reye kwa tliliniking gore o kgone go bua le mooki gore a go rute kafa o ka nnang o sireletsegile ka gone.”", + "This is great!": "Ke selo se sentle!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le motlotlo - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Kgang le go itshekatsheka - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Tlotlang mmogo: \n\n@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Gakologelwa @global.w_solve_teen_girl le founo e a e tsereng kwa mosimaneng?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "Take a few deep breaths to calm down, and": "Goga mowa ka makgetlo gore o ritibale, o bo o", + "KNOW IT": "A ITSE", + "Identify the problem.": "Lemoga mathata.", + "SOLVE IT": "A RARABOLOLE", + "Think of possible solutions and what would happen if we used them.": "Akanya ka ditharabololo tse di kgonegang le gore go ne go ka direga eng fa re ne re di dirisitse.", + "TRY IT": "E LEKE", + "Choose a solution and try it out.": "Tlhopha tharabololo o bo o e leka.", + "TEST IT": "E TLHATLHOBE", + "Did it work? Great! If it did not work, then try another solution.": "A e dirile? Go gontle! Fa e sa dira, jaanong o ka leka tharabololo e nngwe.", + "Let's practice problem-solving!": "A re ithute go rarabolola mathata!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ikatiseng mmogo ka mathata ao le nang le one gone jaanong. Mongwe wa lona ke motsadi o mongwe ke mosha. \n\nAkgolanang lo be lo rotletsana - re motlotlo ka lona! \n\nGakologelwa dikgato: \nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "We care about you, and how life is treating you.": "Re a go kgathalela, le kafa botshelo bo go tshwereng ka teng.", + "You are a star. And you are making a real difference. Be proud of yourself.": "O naledi. E bile o dira pharologanyo e kgolo. Nna motlotlo ka wena.", + "Sorry that things are not easy today. All parents have these days.": "Tshwarelo gore dilo di bokete gompieno. Batsadi botlhe ba na le malatsi a a ntseng jalo.", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "O feleleditse workshop ya beke eno.\n\nBeke e e tlang, re tla bua kaga madi - o tla tlhoka:\n* tsebe ya pampiri/khateboto\n* pene\n* maje/dinawa/ditlhaka di le 20\n\nGo a go nna monate!", + "There are two home practices for this week.": "Go na le ikatiso tse pedi tsa kwa gae beke eno.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o hutsafetse, kgwa mowa ga tlhano pele ga o ka tsaya kgato. \n\nMme fa lotlhe lo ritibetse maikutlo, bolelela mosha wa gago gore o ikutlwa jang.", + "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Tlotlang ka “pabalesego” le mosha wa gago mme lo buisane mmogo gore lo ka dirisa ntlha eno mo maemong afe.", + "Safety Amnesty Story": "Kgang ya Kgololesego ya Pabalesego", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Nako le nako fa o ema go se kae pele ga o araba, kgotsa fa o dira sengwe go sireletsa mosha wa gago, tobetsa @global.parent_points mme o nne motlotlo gore o kgonne go dira jalo!", "Did you experience any of these challenges when sharing how you feel with your teen?": "A o na le maitemogelo ka dikgwetlho tseno fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", "What was difficult for you about sharing how you feel with your teen?": "Ke eng se se nnileng bokete mo go wena fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", "I was afraid my teen would think I was weak.": "Ke ne ke tshaba gore mosha wa me o tla nagana gore ke bokoa.", @@ -1371,102 +1332,89 @@ "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Go bua maikutlo a gago go thusa mosha wa gago gore a itse le go ithuta go dira seo le ene. O ka nna wa tlhopha gore o batla go bua go le kana kang ka seemo sa gago. Go tswa mo go wena! Gape o ka nna wa tlhopha go araba dipotso kgantele ka gore “ke ikutlwa ke galefile/ke tshwenyegile maikutlo gone jaanong. O ka kgona go mpha nakonyana? Re tla bua ka seno gape bosigo”.", "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Ke ne ke tshwenyegile mo maikutlong gongwe ke galefile thata go ka bua maikutlo a me – Ke batla go nna ke le nosi fa ke ikutlwa jalo.", "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Go siame go sa batle go bua ka nako eo. Batla nako ya go tlhalosa kgantele, fa o ikutlwa o ritibetse, gore mongwe le mongwe a go tlhaloganye.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng). O tobeditse @data.habit.consequence.in_text_title - o dirile sentle wa gopola!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng).", - "introduce a consequence together": "itsise ditlamorago mmogo", - "Did you have any challenges when trying to introduce a consequence together?": "A o kile wa nna le dikgwetlho dingwe fa o leka go itsise ditlamorago mmogo?", - "What was difficult for you about introducing a consequence with your teen?": "Ke eng se se nnileng bokete mo go wena ka go itsise mosha wa gago ka ditlamorago?", - "I got very angry when my teen broke the rule.": "Ke ile ka galefa tota fa mosha wa me a roba molao.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Fa re ema go se kae pele ga go araba, go re thusa gore re kgobe makgwafo mme re arabe botoka. \n\nNako e latelang fa mosha wa gago a dira gore o galefe, leka go ema go se kae pele. Le go hemela ko teng makgetlonyana go ka dira pharologanyo e kgolo tota!", - "My teen got very angry with me after I gave the consequence.": "Mosha wa me o nkgalefetse tota morago ga ke sena go mo naya ditlamorago.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Fa mosha wa gago a galefa, o ka nna wa tlhoka go mo katoga go fitlha loo-babedi lo kgobile makgwafo. \n\nTlhola go netefatsa gore ditlamorago tsa gago di na le tekatekano mme di a utlwala. Reetsa tlhaloso ya mosha wa gago, mme o netefatse go neelana ka “Tshireletsego ya go Itshwarela” fa ba robile molao e le gore ba nne ba sireletsegile.", - "I introduced the consequence without first discussing it with my teen.": "Ke itsisitse ditlamorago ntle le go tlotla ka yone le mosha wa me.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "A o ka kgona go dira ditlamorago fa seno se direga? Fa re tlhoma ditlamorago mmogo le basha ba rona, ditlamorago e tla nna tsa nnete, mme basha ba rona ba tla batla thata le go kgona go latela molao.", - "I forgot to follow through with the consequence.": "Ke lebetse go latelela ditlamorago.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Rotlhe re dira diphoso! Fa re latela ditlamorago ka tsepamo, ke moo bana ba rona ba tla tlhophang go itshwara sentle mo isagweng.", - "Even with the consequence, my teen still does not follow the rule.": "Le fa go na le ditlamorago, mosha wa me o sa ntse a sa latele molao.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Fa mosha wa gago a tswelapele a roba melao, o ka nna wa tlhoka go ipha nako sentle le ene. \n\nLeka go tsamaya le mekgele ya gago e mengwe – jaaka go itlhokomela, go ipha nako mmogo, le go baka. Botswerere jotlhe jono bo tla thusa mosha wa gago go ikutlwa a ratiwa thata e bile a sireletsegile... mme kgatelelo ya gago ya maikutlo e tla fokotsega!", - "We only created a negative consequence, not a positive consequence.": "Re tlhodile fela ditlamorago tse di sa siamang, e seng tse di siameng.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Go ka nna bokete go akanya ka ditlamorago tse di molemo nako e nngwe. Ditlamorago tse di molemo di tla rotloetsa mosha wa gago go tsaya maikarabelo a oketsegileng, mme o tla bona pharologanyo!", - "My teen suggested being hit as a negative consequence.": "Mosha wa me o akantsha go itewa e le ditlamorago tse di sa siamang.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Basha ba ka bona go itewa e le gone fela ditlamorago tsa go roba melao. \n\nAkantshana ditlamorago dingwe tse di seng thata le bone tse di ka ba thusang go tlhaloganya gore ba dirile sengwe se se sa siamang. Tseno di ka dira thata mme e nne sekao se se molemo!", - "Your goal was to make ONE rule with your teen this week.": "Mokgele wa gago e ne e le go direla mosha wa gago molao o le MONGWE mo bekeng eno.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "O dirile seno sentle! Ga go motlhofo, le basha ga ba kitla ba boloka melao ka dinako tsotlhe, mme go dira melao konokono e le mmalwa lo le mmogo ke tshimologo e ntle. Ikakgole ka go leka seno - re motlotlo ka wena!", - "make rules with their teens": "dira melao le basha ba bone", - "Did you have any challenges when trying to make a rule together?": "A o nnile le dikgwetlho dingwe fa o leka go dira molao lo le mmogo?", - "What was difficult for you about making a rule with your teen?": "Ke eng seo se nnileng bokete mo go wena ka go dira molao le mosha wa gago?", - "My teen and I could not agree on a rule.": "Nna le mosha wa me ga re kgone go dumalana ka molao.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Akanya ka gore a mme molao o a utlwala. A mosha wa gago o kgona go o latela? Fa lo dira melao jaaka lelapa, go a thusa gore o akanye ka mosha wa gago, ba bagolo go le kae, le gore ke eng se se botlhokwa mo go bone.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Mosha wa me o ikutlwa gore ga go tekatekano gore ba tshwanetse go latela molao fa nna ke sa tlhoke go o latela.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Re tshwanetse go gopola ka metlha gore bana ba ithuta thata go tswa mo go rona. Fa re latela melao ka gale, le bone ba tla o latela. \n\nO ka nna wa tokafatsa melao go netefatsa gore e a kgonega gore botlhe ba e latele, o akanyetse maikarabelo a gago le maikarabelo a mosha wa gago (sekai, sekolo kgotsa dilo tsa tiro).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ga ke a nnisega, ka gonne ke ikutlwa e kete ke nna yo o tshwanetseng go tlhoma molao, e seng mosha wa me.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Molekane wa me ga a nnisege, ka go bo a ikutlwa e kete ke ene yo o tshwanetseng go tlhoma molao, e seng mosha.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Fa re tlhoma melao mmogo le basha ba rona, seno se thusa lelapa go tlhaloganyana botoka. Melao e tla kgona go diragadiwa, le basha ba rona ba tla batla le go kgona go e latela melao eo.", - "When we tried to set a rule, we got into an argument.": "Fa re ne re leka go dira molao, re nnile le ngangisano.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "A mosha wa gago o ne a itumetse fa o leka go dira molao? Go botoka go dira melao fa maemo a ritibetse. Fa wena le mosha wa gago lo lapile kgotsa lo tshwerwe ke tlala, go botoka go bua ka melao kgantele.", - "We were not able to stick to the rule.": "Ga re a kgona go latelela molao.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Molao o tshwanetse go nna o totobetseng le o o kgonang go latelwa. Netefatsa gore o na le molao o o kgonang go latelwa motlhofo, jaaka go ja dijo mmogo gangwe ka Sontaga mongwe le mongwe go na le bosigo bongwe le bongwe. A o tlhoka go nna yo o fetofetogang ka molao?", - "Mother": "Mmé", - "Father": "Rre", - "TikTok": "TikTok", - "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Ke tlhoka internet gore ke kgone go lebelela bidio eno. Go fokotsa selekanyo sa datha e ke e dirisang, ke lebelele bidio eno kgotsa ke e laisolole fa ke le mo WiFi.", - "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ke tlhoka internet gore ke kgone go bula di-website tseno. Go fokotsa selekanyo sa datha e o e dirisang, bula di-website tseno fa o le mo WiFi.", - "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Ke tlhoka internet gore ke kgone go romela molaetsa ono. Go fokotsa selekanyo sa datha e o e dirisang, romela molaetsa ono fa o le WiFi.", - "COVID": "COVID", - "Welcome and Self-Care": "Go Amogelwa le go Itlhokomela", - "Self-Care": "Go itlhokomela", - "How to add self-care": "Tsela ya go tsenya lenaane la go itlhokomela", - "One-on-One Time": "Go Ipha Nako Mmogo", - "How to spend one-on-one time": "Tsela ya go ipha nako lo le mmogo", - "Praise": "Baka/Akgola", - "How to praise": "Tsela ya go baka/akgola", - "Positive Instructions": "Ditaelo tse di siameng", - "How to give positive instructions": "Tsela ya go naya ditaelo tse di siameng", - "Managing Stress": "Go laola go tshwenyega mo maikutlong", - "How to manage stress": "Kafa o ka laolang go tshwenyega mo maikutlong", - "Family Budgets": "Ditekanyetsokabo tsa lelapa", - "How to budget & save": "Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi", - "Rules": "Melao", - "How to create rules": "Kafa o ka bayang melao ka teng", - "Calm Consequences": "Ditlamorago o Ritibetse", - "How to give calm consequences": "Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo", - "Problem Solving": "Go Rarabolola Mathata", - "How to solve problems": "Kafa o ka rarabololang mathata ka teng", - "Teen Safety": "Pabalesego ya Basha", - "How to keep your teen safe": "Se o ka se dirang go boloka mosha wa gago a sireletsegile", - "Dealing with Crisis": "Go lepalepana le Mathata a a masisi", - "How to deal with crisis": "Kafa o ka lepalepanang ka teng le mathata a a masisi", - "Celebration and Next Steps": "Go Keteka le Dikgato Tse di Latelang", - "How to support each other": "Ka fa lo ka tshegetsanang ka teng", - "Talk about @global.home_practice": "Bua ka @global.home_practice", - "Home Practice Review": "Poeletso ya Ikatiso ya Kwa Gae", - "Let's talk about how your home practice went this week.": "Tla re bue ka gore ikatiso ya gago ya ko gae e tsamaile jang beke eno.", - "In my group": "Mo setlhopheng sa me", - "By myself": "Ke le nosi", - "awesome parent": "motsadi yo o dirang bontle", - "friends": "ditsala", - "New workshop ready tomorrow!": "Workshop e ntšha e tla bo e siame kamoso!", - "New workshop!": "Workshop e ntšha!", - "Workshop Reminder": "Kgopotso ya Workshop", - "Nice progress!": "Lo dira bontle!", - "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Gopola go nna fa fatshe o iketle gompieno - go itlhokomela ke bokgoni jwa botlhokwa jwa go nna motsadi.", - "You are appreciated!": "Lo ntira motlotlo!", - "Something Fun": "Sengwe se se Itumedisang", - "Your @global.parent_points this week": "@global.parent_points ya gago beke eno", - "Home Practice Reminder": "Kgopotso ya Ikatiso ya kwa Gae", - "To solve this challenge, I will try to:": "Ke tla leka go dira seno go leka go rarabolola bothata jono:", - "My challenge is not listed here.": "Bothata jo ke nang le jone ga bo a tsenngwa fano.", - "ParentApp": "ParentApp", - "Weekly Workshops": "Di-workshop tsa beke le beke", - "Weekly Workshop": "Workshop ya beke le beke", - "Weekly Workshop Options": "Dikakantsho tsa di-Workshop tsa beke le beke", - "ParentPoints": "DintlhatsaBatsadi", - "ParentPoint": "NtlhayaBatsadi", - "Parent Library": "Laeborari ya Batsadi", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile maikutlo kgotsa o tenegile, hemela kwa teng le kwa ntle ga tlhano pele ga o ka tsaya kgato.", + "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Mokgele wa gago e ne ele go bua le mosha wa gago gore lo ikutlwile jang fa lo ne lo mo seemong sa go tshwenyega mo maikutlong.", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Re a itse gore go bokete jang go godisa mosha mo dinakong tseno. Go ithuta go laola go tshwenyega mo maikutlong ga gago go thusa wena - le lelapa la gago.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Dumelang lotlhe. \n\nSetlhogo sa gompieno se ka ga go laola go tshwenyega mo maikutlong. \n\nGo botlhokwa go itse ka fa re ka laolang go tshwenyega mo maikutlong a rona ka gone. Ka dinako tse dingwe bana ba rona ba ka itshwara ka tsela e e re opisang tlhogo le rona jaaka batsadi re ka dira gore bana ba rona ba opiwe ke tlhogo le bone. \n\nKa jalo, go botlhokwa go ela tlhoko fa re na le kgatelelo ya maikutlo re bo re ema go se kae re hema. Seo se tla go thusa gore o laole go tshwenyega mo maikutlong.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Go tshwenyega mo maikutlong ga gago go ne go ntse jang beke eno? Leka go hemela ko teng makgetlo a le mmalwa pele o araba mosha wa gago - go dira pharologanyo e kgolo.", + "Well done!": "O dirile sentle!", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "O dirile sentle ka go hema thata pele o araba mosha wa gago! Nako le nako fa o ema go se kae, o kgona go itshwara.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile? O dirile sentle go lemoga gore wena le ba bangwe lo ne lo ikutlwa jang gompieno! Mme gopola, kamoso ke letsatsi le lesha.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Rotlhe re ikutlwa re imetswe ka dinako dingwe. Go hemela ko teng go ka thusa! \n\nFeleletsa @local.workshop_data.in_text_title go iponela didiriswa tse di mosola tsa go lepalepana le go tshwenyega mo maikutlong.", + "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Dumela @fields.user_name! Ra go lebogisa go simolola beke ya botlhano ya @global.parent_app.\n\nTirelothuto e ntšha ya botsadi e go emetse ya dintlha tsa thuso ka gore o ka itshola o ritibetse mme o le mo taolong fa basha ba re gafisa.", + "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Dumela @fields.group_name! Ra go lebogisa go simolola beke ya botlhano ya @global.parent_app.\n\nTirelothuto e ntšha ya botsadi e go emetse ya dintlha tsa thuso ka gore o ka itshola o ritibetse mme o le mo taolong fa basha ba re gafisa.", + "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Re na le workshop e ntšha e e gone go go thusa ka ga go laola kgalefo le go tshwenyega mo maikutlong. E tla go thusa go itlhokomela botoka.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nKa go fetsa @local.workshop_data.in_text_title ya ntlha, o thaya motheo wa botlhokwa tota: Fa o ikutlwa o itumetse, balelapa la gago le bone ba tla dira botoka!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "O dirile sentle go fetsa eno @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa le go nna le bokgoni jo bo nang le mosola!", + "Let's think about what happened in this story.": "A re akanye ka se se diragetseng mo kgannyeng eno.", + "How do you think @global.w_stress_teen_boy_1 felt?": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang?", + "And @global.w_stress_male_caregiver?": "Le @global.w_stress_male_caregiver?", + "And @global.w_stress_girl?": "Le @global.w_stress_girl?", + "Sad": "O utlwile botlhoko", + "Scared": "O tshogile", + "Confused": "O akabetse", + "Angry": "O galefile", + "Each of them was feeling upset for their own reason!": "Mongwe le mongwe wa bone o ne a kgopisegile go ya ka lebaka la gagwe!", + "What could @global.w_stress_male_caregiver have done differently?": "@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "Recognise why he feels stressed": "Lemoga lebaka la go bo a tshwenyegile mo maikutlong", + "Take a deep breath and speak calmly": "Kgwa mowa o bo o bua o ritibetse", + "Show he understands his teen’s feelings": "O bontshe gore o tlhaloganya maikutlo a mosha wa gago", + "Think about solutions together with @global.w_stress_teen_boy_1": "Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1", + "Do something positive together with @global.w_stress_teen_boy_1": "Dira sengwe se se kgothatsang mmogo le @global.w_stress_teen_boy_1", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "A re bone sekai sa ka fa go tshwenyega mo maikutlong e ka fetelelang ka teng ka dinako dingwe, mo go rona rotlhe:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver: “Ntlogele mme o lebe dikgang tsa gago!”", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ke dirile eng? Ga o nke o reetsa!” \n\n@global.w_stress_male_caregiver: “Ke rile o ntlogele kgotsa ke tloga ke go itaya!”", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bona! Ke dirile ntlo!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ke mang a kgathalang ka ntlo ya gago e e senang mosola!”", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Ke a leboga gore re dirile ikatiso eno mmogo! A re akanyeng ka se se diragetseng pelenyana mme re bone gore @global.w_stress_male_caregiver mo lekgetlong leno:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver o latlhegetswe ke tiro. Fa @global.w_stress_teen_boy_1 a tsena mo ntlong, o mo fitlhela a tlhakatlhakane maikutlo e bile a tshwenyegile.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver (go kgwa mowa): “Ke maswabi morwaaka. Go ne go le thata tota gompieno. Mookamedi wa me o nkobile kwa tirong.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Hee se rialo! Ke tlhoka diaparo tse di ntšha tsa sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka morwaaka mme tiro ya ga @global.w_stress_female_caregiver e tla nna e re thusa fa ke ntse ke batla tiro e nngwe.”", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Le nna nka go thusa go batla tiro, ne @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nnyaa, o seka tshwenyega, @global.w_stress_teen_boy_1. Ke a leboga go bo o batla go nthusa. Selo se se botlhokwa thata ke gore o dire ka natla ko sekolong. Ke a leboga go bo o ile wa ntheetsa.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “A re ye go tshameka kgwele ya dinao mmogo. E tla nthusa gore ke fokotse go tshwenyega thata mo maikutlong.” \n\n@global.w_stress_teen_boy_1: \"Go siame, @global.w_stress_male_caregiver!”", + "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Ke ikutlwa botoka tota jaanong! \n\nGo ikhutsa go se kae go thusa gore o kgone go ritibala maikutlo fa o galefile kgotsa o tshwenyegile mo maikutlong. Lekeletsa go dira jalo, o tla lemoga seno!", + "Safety Amnesty": "Kgololesego ya Pabalesego", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Akanya ka nako ya fa o ne o sa ntse o le mosha. \n\nA go na le nako nngwe e o kileng wa iphitlhela o le mo kotsing mme o bo o tshaba go bolelela ba lelapa la gago ka gonne o tshaba gore ba tla galefa?\n\nKe sone se se batlileng se diragalela @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re bone:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Ke ya kwa bareng le ditsala tsa me gompieno, ke kopa o seka bolella bagolo\" \n\n@global.w_stress_teen_girl: “Itumele! Ke ba reile ka re ke ya kwa tsaleng ya me, mme tota ke ya phathing”", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ke akanya gore ba rekisa diokobatsi. Re ka nna ra tshwarwa rothe. Mme gone nka se bolelele batsadi ba me– ba tlile go galefa tota\"", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ke tshogile. Ga go ope yo o ka kgonang go nkisa gae, mongwe le mongwe o tagilwe tota. Mosimane yono a re o tla nkisa mme gone, o batla re ye kwa a nnang teng pele. Nka se bolelele batsadi ba me – Ke ba akeditse, ga ke a ba bolelela gore ke tla phathing.\"", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Maemo ano a kotsi! Ka lesego, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba gakologelwa gore @global.w_stress_parent o ba boleletse eng: \n\n“Sa botlhokwa le go feta, ke tshwenyegile ka pabalesego ya gago. Nako nngwe le nngwe fa o tenegile, kgotsa o boifa, o ka nteletsa gore ke go thuse, kgotsa o mpolelele ka gone. \n\nBua fela o re ‘KGOLOLESEGO YA PABALESEGO’. Ke a go solofetsa, ke tla leka ka tsotlhe tse nka di kgonang go go thusa e bile nka se galefe – le fa gone o ka tswa o dira sengwe se o sa tshwanelang go se dira.”", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke kgololesego ya pabalesego. A o ka kgona go tla go ntsaya? Tota ke tlhoka mongwe yo o ka nkisang gae.”", + "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, kgololesego ya pabalesego. Ke akanya gore ditsala tsa me di mo kotsing. Ga ke batle go kgaotsa botsala jwa me le bone mme gone, ke tshwenyegile. A re ka bua?\"", + "This is fantastic, especially in such difficult times as this. You are a star.": "Go gontle, segolobogolo ka dinako tse di thata jaaka tseno. O naledi.", + "Today you will explore:": "Gompieno o tlile go itse:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le motlotlo - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le go leba kwa morago - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", + "Let's discuss what happened in this story.": "A re tlotleng ka gore ke eng se se diragetseng mo kgannyeng eno.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang? Le @global.w_stress_male_caregiver wa gagwe? Le @global.w_stress_girl?\n\n@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver a ka...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Lemoga lebaka la go bo a tshwenyegile mo maikutlong \n* Kgwa mowa o bo o bua o ritibetse \n* O bontshe gore o tlhaloganya maikutlo a mosha wa gago \n* Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1\n* Dira sengwe se se molemo/rotloetsang mmogo le @global.w_stress_teen_boy_1", + "BREATHE. Slowly. Pause.": "KGWA MOWA. Ka iketlo. Ema go se kae.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Pele ga o bua sengwe, kgwa mowa ka iketlo makgetlo a le tlhano. Seno se tla go thusa go ritibala maikutlo e bile o tla kgona go akanya sentle.", + "SHARE how you feel": "BUA gore o ikutlwa jang", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Ga go motlhofo. Bontsi jwa rona re ile ra bolelelwa gore ga re a tshwanela go lela kgotsa go bontsha bana gore re ikutlwa jang. Kgwa mowa mme o ba bolelele gore o ikutlwa jang, o ritibetse maikutlo. Ba tla kgona go tlhaloganya botoka e bile ba tla ithuta mo go wena gore ba ka dira eng fa ba tshwenyegile mo maikutlong.", + "SHOW them you care": "Ba BONTSHE gore o a ba kgathalela", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Ga go motlhofo! Go tshwenyega mo maikutlong go dira gore re akanye ka rona fela. Mme gone, basha ba rona ba a re tlhoka. Ba botse gore ba ikutlwa jang. Ba reetse mme o ba gomotse. Gongwe o ka ba atla kgotsa wa ba bolelela gore ‘ke a tlhaloganya’. Go dira jalo go ka fetola dilo.", + "SEEK the positive": "BATLANG dilo tse dintle tse lo ka kgonang go di dira", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "A gongwe wena le mosha wa gago lo ka akanya ka dikakantsho dingwe tse di ka thusang? A lo ka dira sengwe se se itumedisang seo se ka dirang gore maikutlo a lona a seka a tswelela a tshwenyegile?", + "If all else fails, breathe. You can do this.": "Fa dilo tseno tsotlhe di sa thuse, kgwa mowa. O ka dira seno.", + "Looking after yourself matters.": "Go itlhokomela go botlhokwa.", + "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Go gontle! Go a itumedisa go utlwa gore o ikutlwa sentle gompieno. Ruri ke maikutlo ao a itumedisang!", + "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ka dinako tse dingwe dilo di tsamaya sentle. Ka dinako tse dingwe ga di tsamae sentle. E bile ka dinako tse dingwe ga re itse sentle gore re dire eng... mme seo se siame fela! Gopola gore ga o nosi.", + "My Favourite Activities": "Ditiro tse ke Ratang go di Dira", + "All Activities": "Ditiro Tsotlhe", + "Random Activity": "Tiro Fale le Fale", + "This Week's Activity": "Tiro ya Beke Eno", + "Chat Together": "Buang Mmogo", + "Do Together": "Dirang Mmogo", + "Your @global.parent_app Code": "Khoutu @global.parent_app ya Gago", + "Terms & Conditions": "Melao le Dipeelo", + "Privacy Policy": "Melao ya Sephiri", "Real-world ideas": "Dikakantsho tsa se tota se diragalang", "Ideas": "Dikakantsho", "Ideas from other families...": "Dikakantsho go tswa ko malapeng a mangwe...", "Challenges & solutions": "Dikgwetlho le ditharabololo", + "Submit": "Neela", "Find out more": "Batla tse di oketsegileng", "Show me how": "Mpontshe gore ke dire jang", "Tell me more!": "Mpolelle mo go oketsegileng!", @@ -1480,9 +1428,49 @@ "Continue": "Tswelela", "Finish with a song": "Feleletsa ka pina", "Goodbye!": "Tsamaya sentle!", - "Your @global.parent_app Code": "Khoutu @global.parent_app ya Gago", - "Terms & Conditions": "Melao le Dipeelo", - "Privacy Policy": "Melao ya Sephiri", + "No gadget use the next day": "Ga o ye go dirisa sedirisiwa sa eleketeroniki kamoso", + "Take 5 minutes pause in separate part of the room": "Kgwa mowa go se kae ka metsotso e le 5 golo gongwe mo kamoreng", + "Write a letter of apology": "Kwala lekwalo la go kopa maitshwarelo", + "Cannot see friends the next day": "Ga a kitla a etela ditsala tsa gagwe letsatsi le le latelang", + "Cannot play with phone after dinner (or next hour)": "Ga a kitla a tshameka ka founo morago ga dijo tsa maitseboa (kgotsa mo sebakeng se se latelang)", + "Extra time with friends on weekend (1hr)": "Nako e e oketsegileng mafelobeke le ditsala tsa gagwe (ura e le 1)", + "Cooking teen’s favourite meal": "Go apaya dijo tse mosha a di ratang", + "Extra time with phone after dinner (30 min)": "Go nna le nako e e oketsegileng ya go dirisa founo morago ga dijo tsa maitseboa (metsotso e le 30)", + "Watching teen’s T.V. show together": "Go bogela mmogo lenaane la basha mo T.V", + "Extra one-on-one time on Sunday (30 min)": "Go ipha nako mmogo lo tlotla ka Sontaga (metsotso e le 30)", + "Take a deep breath and pause before responding": "Hemela kwa teng mme o kgwe mowa ka mo go lekaneng pele ga o araba", + "Listen to your teen": "Reetsa mosha wa gago", + "Praise your teen for sharing": "Akgola mosha wa gago ka gonne a ile a abela ba bangwe", + "Use problem solving skills": "Dirisa mekgwa ya go rarabolola mathata", + "Work out where you can get help": "Dira dithulaganyo tsa gore o ka bona kae thuso", + "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Ke tlhoka internet gore ke kgone go lebelela bidio eno. Go fokotsa selekanyo sa datha e ke e dirisang, ke lebelele bidio eno kgotsa ke e laisolole fa ke le mo WiFi.", + "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ke tlhoka internet gore ke kgone go bula di-website tseno. Go fokotsa selekanyo sa datha e o e dirisang, bula di-website tseno fa o le mo WiFi.", + "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Ke tlhoka internet gore ke kgone go romela molaetsa ono. Go fokotsa selekanyo sa datha e o e dirisang, romela molaetsa ono fa o le WiFi.", + "Severe illness or death of a friend or family member": "Bolwetsi jo bo masisi kgotsa loso lwa tsala kgotsa mongwe mo lelapeng", + "Robbery": "Go kgothodiwa", + "Flooding": "Morwalela", + "Political violence": "Dikhuduego tsa dipolotiki", + "Losing my job": "Go latlhegelwa ke tiro", + "Pandemic (COVID-19)": "Bolwetsi jwa leroborobo (COVID-19)", + "ParentApp": "ParentApp", + "Weekly Workshops": "Di-workshop tsa beke le beke", + "Weekly Workshop": "Workshop ya beke le beke", + "Weekly Workshop Options": "Dikakantsho tsa di-Workshop tsa beke le beke", + "ParentPoints": "DintlhatsaBatsadi", + "ParentPoint": "NtlhayaBatsadi", + "Parent Library": "Laeborari ya Batsadi", + "To solve this challenge, I will try to:": "Ke tla leka go dira seno go leka go rarabolola bothata jono:", + "My challenge is not listed here.": "Bothata jo ke nang le jone ga bo a tsenngwa fano.", + "New workshop ready tomorrow!": "Workshop e ntšha e tla bo e siame kamoso!", + "New workshop!": "Workshop e ntšha!", + "Workshop Reminder": "Kgopotso ya Workshop", + "Nice progress!": "Lo dira bontle!", + "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Gopola go nna fa fatshe o iketle gompieno - go itlhokomela ke bokgoni jo bo botlhokwa jwa go nna motsadi.", + "You are appreciated!": "Lo ntira motlotlo!", + "Something Fun": "Sengwe se se Itumedisang", + "Your @global.parent_points this week": "@global.parent_points ya gago beke eno", + "Home Practice Reminder": "Kgopotso ya Ikatiso ya kwa Gae", + "COVID": "COVID", "Make me smile": "Tlang lo ipaakantse sentle", "Get me going": "Lo nkgothatse", "My Favourite Relaxes": "Go Iketla go ke go Ratang", @@ -1492,16 +1480,14 @@ "Listen & Relax (1-2 minutes)": "Reetsa o bo o Iketle (metsotso e le 1-2)", "Listen & Relax (3-5 minutes)": "Reetsa o bo o Iketle (metsotso e le 3-5)", "Do & Relax (5-10 minutes)": "Dira o bo o iketle (metsotso e le 5-10)", - "My Favourite Activities": "Ditiro tse ke Ratang go di Dira", - "All Activities": "Ditiro Tsotlhe", - "Random Activity": "Tiro Fale le Fale", - "This Week's Activity": "Tiro ya Beke Eno", - "Chat Together": "Buang Mmogo", - "Do Together": "Dirang Mmogo", - "Tap and type": "Tobetsa o kwale", - "Tap and choose": "Tobetsa o tlhophe", - "Type your own": "Ikwalele ya gago", - "I've understood this. Don't show me this message again.": "Ke tlhalogantse seno. O seka wa mpontsha molaetsa ono gape.", + "At home": "Kwa gae", + "Buy things we can sell": "Reka dilo tse re ka di rekisang", + "At a bank": "Kwa bankeng", + "In a savings group": "Mo setlhopheng sa go boloka madi", + "Teens completing school/university": "Basha ba ba fetsang sekolo/yunibesithi", + "Building/expanding a house for my family": "Aga/atolosa ntlo ya lelapa la me", + "Starting a business": "Go simolola kgwebo", + "Buying a car for my family": "Go rekela lelapa la me koloi", "Walk to the shops": "Tsamaya ka dinao go ya mabenkeleng", "Get water together": "Tsamayang go ga metsi mmogo", "Do a chore together": "Dirang sengwe mo ntlong mmogo", @@ -1512,41 +1498,26 @@ "Review homework": "Tlhatlhoba tirogae ya sekolo", "Chat before bedtime": "Tlotlang mmogo pele ga lo robala", "Play a game/sport": "Tshamekang geime/motshameko mongwe", - "Teens completing school/university": "Basha ba ba fetsang sekolo/yunibesithi", - "Building/expanding a house for my family": "Aga/atolosa ntlo ya lelapa la me", - "Starting a business": "Go simolola kgwebo", - "Buying a car for my family": "Go rekela lelapa la me koloi", - "Severe illness or death of a friend or family member": "Bolwetsi jo bo masisi kgotsa loso lwa tsala kgotsa mongwe mo lelapeng", - "Robbery": "Go kgothodiwa", - "Flooding": "Morwalela", - "Political violence": "Dikhuduego tsa dipolotiki", - "Losing my job": "Go latlhegelwa ke tiro", - "Pandemic (COVID-19)": "Bolwetsi jwa leroborobo (COVID-19)", - "At home": "Kwa gae", - "Buy things we can sell": "Reka dilo tse re ka di rekisang", - "At a bank": "Kwa bankeng", - "In a savings group": "Mo setlhopheng sa go boloka madi", - "No gadget use the next day": "Ga o ye go dirisa sedirisiwa sa eleketeroniki kamoso", - "Take 5 minutes pause in separate part of the room": "Kgwa mowa go se kae ka metsotso e le 5 golo gongwe mo kamoreng", - "Write a letter of apology": "Kwala lekwalo la go kopa maitshwarelo", - "Cannot see friends the next day": "Ga a kitla a etela ditsala tsa gagwe letsatsi le le latelang", - "Cannot play with phone after dinner (or next hour)": "Ga a kitla a tshameka ka founo morago ga dijo tsa maitseboa (kgotsa mo sebakeng se se latelang)", - "Extra time with friends on weekend (1hr)": "Nako e e oketsegileng mafelobeke le ditsala tsa gagwe (ura e le 1)", - "Cooking teen’s favourite meal": "Go apaya dijo tse mosha a di ratang", - "Extra time with phone after dinner (30 min)": "Go nna le nako e e oketsegileng ya go dirisa founo morago ga dijo tsa maitseboa (metsotso e le 30)", - "Watching teen’s T.V. show together": "Go bogela mmogo lenaane la basha mo T.V", - "Extra one-on-one time on Sunday (30 min)": "Go ipha nako mmogo lo tlotla ka Sontaga (metsotso e le 30)", - "Take a deep breath and pause before responding": "Hemela kwa teng mme o kgwe mowa ka mo go lekaneng pele ga o araba", - "Listen to your teen": "Reetsa mosha wa gago", - "Praise your teen for sharing": "Akgola mosha wa gago ka gonne a ile a abela ba bangwe", - "Use problem solving skills": "Dirisa mekgwa ya go rarabolola mathata", - "Work out where you can get help": "Dira dithulaganyo tsa gore o ka bona kae thuso", + "Tap and type": "Tobetsa o kwale", + "Tap and choose": "Tobetsa o tlhophe", + "Type your own": "Ikwalele ya gago", + "I've understood this. Don't show me this message again.": "Ke tlhalogantse seno. O seka wa mpontsha molaetsa ono gape.", + "Talk about @global.home_practice": "Bua ka @global.home_practice", + "Home Practice Review": "Poeletso ya Ikatiso ya Kwa Gae", + "Let's talk about how your home practice went this week.": "Tla re bue ka gore ikatiso ya gago ya kwa gae e tsamaile jang beke eno.", + "In my group": "Mo setlhopheng sa me", + "By myself": "Ke le nosi", + "awesome parent": "motsadi yo o dirang bontle", + "friends": "ditsala", "Welcome to @global.parent_app": "O amogetswe mo @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  O amogetswe mo @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O tshwanelwa ke go ikutlwa sentle, le go nna le dikamano tse di itumedisang mo lelapeng.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e tla thusa wena le lelapa la gago ka ditsela tse tharo:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo eno e kgolo e go isa ko @global.weekly_workshops ya gago

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Gangwe ka beke go tla nna le workshop e ntšha - mme nako nngwe le nngwe fa e tsena, e tla bo e bua ka mokgwa o o farologaneng wa go godisa bana. E tobetse mme o simolole workshop ya gago ya ntlha!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo eno e e kgolokwe e tlhagelela fa go na le @global.weekly_workshop e ntšha e o tlhokang go e dira.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa konopo eno e kgolo gore o kgone go ya kwa @global.parent_points mo sekhirining sa gago.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Leka go bona gore ke eng se o kgonneng go se dira mo go itlhokomeleng le go nna motsadi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona gore o atlega go le kana kang.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ikutlwe o le motlotlo ka se o kgonang go se fitlhelela letsatsi le letsatsi!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ga go re sepe gore o simolola kae, lebaka la go bo o le fano le bontsha gore o a kgathala.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  O tshwanetse ke go ikutlwa o itumetse, mme o na le botsalano jwa boitumelo le ba lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e fano go go tshegetsa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fano ke tsela ya dirisa app:

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo e kgolo ena e go isa kwa @global.weekly_workshops.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Beke nngwe le nngwe o tlile go bula tirelothuto e ntšha e e tlileng go lebagana le bokgoni jo bo farologaneng jwa botsadi.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Konopo eno e e kgolokwe e tlhagelela fa go na le tirelothuto e ntšha e e go letileng.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Bokgoni bo bongwe le bo bongwe bo bo ntšha ba botsadi bo tla le @global.parent_point.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Dirisa @global.parent_points go keteka diphitlhelelo tsa gago!

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tlhola ditirwana tse di okeditsweng tsa go itapolosa le botsadi!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O ka kgona le go bona maele a botsadi ka potlako le tshegetso ya sethekeniki.

                                                                                                                                                                                  ", + "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Leba tikologo ya gago! Gongwe le gonwe kwa o simololang, lebaka la gore o fano le bontsha gore wa kgathala.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Ya kwa @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa konopo e e mo sekhirining gore o ye kwa @global.weekly_workshops

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Ya kwa @global.weekly_workshop_options", @@ -1557,55 +1528,6 @@ "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  E bontsha @global.weekly_workshop e o leng mo go yone.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  O ka fetola fano fa o batla go dira @global.weekly_workshops lo le setlhopha kgotsa o le nosi.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Tobetsa fano go fetola leina la setlhopha sa lona.

                                                                                                                                                                                  ", - "Welcome to ParentApp. Click here to start your journey!": "Re a go amogela mo ParentApp. Tobetsa fano gore o simolole go e dirisa!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Ke solofela gore lo SIAME. Go nna motsadi ga go motlhofo, mme gone, ga go ise go nne thari gore o leke gape go thusa mosha wa gago. Workshop ya gago ya ntlha ya batsadi e setse e le teng! Tobetsa fano gore o simolole go dirisa ParentApp!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go rarabolola matshwenyego a go nna motsadi.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Dumelang gape! Ga go thari gore o ka dirisa ParentApp gore o bone thuso e e tshwanetseng maemo a gago o le motsadi. Goreng o sa leke go e dirisa fa o le mo tseleng go ya tirong kgotsa fa o apeile? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno ya rona e ba thusitse.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go lepalepana le boitshwaro jwa mosha wa gago.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Dumela! A o SIAME? Go bonala o ise o bule ParentApp. Goreng o sa leke go e dirisa? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno e ba thusitse. Re ikemiseditse go tswelela go go thusa.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "O seka wa itetla go fetwa ke tshedimosetso ya botlhokwa e e mo ParentApp! E na le tshedimosetso e ntsi tota. Re ikemiseditse go tswelela re go thusa.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go thusa mosha wa gago gore a kgone go atlega mo botshelong.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go nna tsala ya mosha wa gago gape!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Dumela motsadi o siameng, gopola go itlhokomela le wena - go tla thusa wena le ba lelapa la gago! Bona tshedimosetso le tse dintsi mo go ParentApp.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Dumela motsadi o siameng! Gopola, o ka bona tshedimosetso e ntsi e thusang mo go ParentApp.", - "New message from PLH": "Molaetsa o mosha go tswa go PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Dumela motsadi o siameng! ParentApp e fano go go tshegetsa. E tlhole jaanong!", - "**Welcome and Self-Care** workshop": "Workshop ya **Go amogelwa le go itlhokomela**", - "How to do self-care": "Tsela ya go itlhokomela", - "**One-on-One Time** workshop": "Workshop ya **Go ipha nako mmogo**", - "**Praise** workshop": "Workshop ya **Go baka/akgola**", - "**Positive Instructions** workshop": "Workshop ya **Ditaelo tse di siameng**", - "**Managing Stress** workshop": "Workshop ya **Go laola go tshwenyega mo maikutlong**", - "**Family Budgets** workshop": "Workshop ya **Ditekanyetsokabo tsa lelapa**", - "**Rules** workshop": "Workshop ya **Melao**", - "**Calm Consequences** workshop": "Workshop ya **Ditlamorago o Ritibetse**", - "**Problem Solving** workshop": "Workshop ya **Go Rarabolola Mathata**", - "**Teen Safety** workshop": "Workshop ya **Pabalesego ya Basha**", - "**Dealing with Crisis** workshop": "Workshop ya **Go Lepalepana le Mathata a a Masisi**", - "**Celebration and Next Steps** workshop": "Workshop ya **Go Keteka le Dikgato Tse di Latelang**", - "Quick pause": "Go ema o se kae", - "Power of three": "Matla a tharo", - "One thing today": "Selo se le nosi gompieno", - "Breathe to three": "Kgwa mowa go fitlha gararo", - "In and out": "Mo teng le kwa ntle", - "Think about today": "Akanya ka gompieno", - "Pause to respond": "Kgwa mowa o bo o araba", - "Small things": "Dilo tse dinnye", - "Body scan": "Go tlhatlhoba mmele", - "Feel the ground": "Utlwa tsela e o gatang ka yone", - "Counting sounds": "Go bala medumo", - "Feel your feeling": "Utlwa gore o ikutlwa jang", - "Your song": "Pina ya gago", - "Ground & gratitude": "Lefatshe & go leboga", - "Notice how you feel": "Lemoga kafa o ikutlwang ka gone", - "Pause power": "Maatla a go ema go se kae", - "Taking care of yourself": "Itlhokomele", - "Take a pause": "Ema go se kae", - "Physical activity": "Go dirisa matla", - "List of things": "Lenaane la dilo", - "Connect": "Ikamanye", - "Prevent anger": "Thibela go galefa", - "Angry? Take a break": "O galefile? Ikhutse go se kae", "Reflect on the positive": "Akanya ka dilo tse di siameng", "Check-in chat": "Tlhola motlotlo", "Dream Travel": "Loeto leo lo lorang go lo Tsaya", @@ -1632,34 +1554,15 @@ "What are you doing?": "O dira eng?", "Here is a fun game you can do with your family!": "Fano ke motshameko o o monate o o ka o dirang le lelapa la gago!", "Crazy chicken": "Koko e e sa utlweng", - "My Tips": "Dintlha Tsa me", - "**My Tips** in the @global.parent_centre": "**Dintlha tsa me**go @global.parent_centre", - "Essential Tools": "Didiriswa Tsa Botlhokwa", - "**Essential Tools** in the @global.parent_centre": "**Didiriswa tsa botlhokwa**go @global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Tshwanedisa @global.parent_app** mo go @global.parent_centre", - "Customise Again": "Itsenyetse Gape", - "Relax & Activities": "Go iketla & Ditiro", - "under **Relax & Activities** in the @global.parent_centre": "fa tlase ga ** Go Iketla le Ditirwana** mo go @global.parent_centre", - "Help": "Thuso", - "**Help** in the @global.parent_centre": "**Thuso** mo go @global.parent_centre", - "Technical Support": "Tshegetso ya Botegeniki", - "**Technical Support** in the @global.parent_centre": "**Tshegetso e e thekinikhale** mo go @global.parent_centre", - "**Coping with grief** in the @global.parent_centre": "**Go mekamekana le kutlobotlhoko** mo go @global.parent_centre", - "Message Archive": "Akhaefe ya Molaetsa", - "**Message Archive** in the @global.parent_centre": "***Bobeelo ba melaetsa*** go @global.parent_centre", - "Support Contacts": "Batho Ba ba Ka go Thusang", - "**Support Contacts** in the @global.parent_centre": "***Bagolaganyi ba tshegetso***go @global.parent_centre", - "Evidence Base": "Motheo wa Bosupi", - "**Evidence Base** in the @global.parent_centre": "**Bopaki** mo go @global.parent_centre", + "Help yourself cope": "Ithuse go mekamekana le seemo", + "Help your teen cope": "Thusa mosha go mekamekana le seemo", + "Practical steps": "Metsamao e kgonegang", "How to talk to my teen": "Go buisana le mosha wa me", "Steps to deal with news": "Metlhala ya go mekamekana le dikgang", "How can I help my teen choose well?": "Nka thusa mosha waka jang go tlhopha sentle?", "What influences teen decisions?": "Ke eng se se rotloetsang ditshwetso tsa basha?", "How does my teen feel?": "Mosha wa me o ikutlwa jaang?", "Changing negative to positive": "Go fetolela se se sa siamang go se se siameng", - "Help yourself cope": "Ithuse go mekamekana le seemo", - "Help your teen cope": "Thusa mosha go mekamekana le seemo", - "Practical steps": "Metsamao e kgonegang", "**Relax** @global.parent_point": "**Iketle** @global.parent_point", "Doing a relaxation activity": "Go dira tirwana ya go iketla", "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o iketla, tobetsa @global.parent_point mme o keteke katlego ya gago!", @@ -1667,28 +1570,38 @@ "**Treat yourself well** @global.parent_point": "**Ineneketse** @global.parent_point", "Doing something they like for themselves": "Go itirela sengwe se ba se ratang", "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Nako nngwe le nngwe fa o itshotse sentle, tobetsa @global.parent_point mme o keteke katlego ya gago!", - "Praise yourself": "Ipake/Ikakgole", "**Praise yourself** @global.parent_point": "**Ipake/Ikakgole** @global.parent_point", + "Praising themselves": "Go ipoka", + "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Nako tsotslhe fa o boka mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", "One-on-one time": "Go ipha nako mmogo", "**One-on-one time** @global.parent_point": "**Go ipha nako mmogo** @global.parent_point", "Spending time with their teen": "Go fetsa nako le mosha wa bone", "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o dira nako ya motho-ka-mong, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Praise your teen": "Baka/Akgola mosha wa gago", "**Praise your teen** @global.parent_point": "**Baka/Akgola mosha wa gago** @global.parent_point", - "Praising their teen when they did positive thing": "Galaletsa basha ba bona fa ba dirile sengwe se sentle", - "Every time you praise your teen, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe ga o galaletsa mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "Praising their teen when they did positive thing": "Rorisa basha ba bona fa ba dirile sengwe se sentle", + "Every time you praise your teen, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe ga o rorisa mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Get positive": "Leba dilo ka tsela e e siameng", "**Get positive** @global.parent_point": "**Leba dilo ka tsela e e siameng** @global.parent_point", "Giving their teen a positive instruction": "Go naya mosha ditaelo tse dintle", "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o naya mosha taelo e ntle, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Breathe not yell": "Kgwa mowa mme o se ka wa goelela", "**Breathe not yell** @global.parent_point": "**Kgwa mowa mme o se ka wa goelela** @global.parent_point", + "Taking a pause before responding": "Go tsaya motsotso pele o araba", + "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o tsaya motsotso pele o araba, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Good money choice": "Go dirisa madi sentle", "**Good money choice** @global.parent_point": "**Go dirisa madi sentle** @global.parent_point", + "Keeping the budget": "Go dirisa tekanyetso ya madi", + "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o tsaya tshweetso e siameng ka ditlhoko, dilo tse o di batlang le go somarela, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Calm consequence": "Ditlamorago o ritibetse", "**Calm consequence** @global.parent_point": "**Ditlamorago o ritibetse** @global.parent_point", + "Giving their teen a consequence in a calm way": "Go naya mosha ditlamorago ka tsela e e repileng", + "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o neelana ka ditlamorago tse di repileng, tobetsa @global.parent_point mme o keteke katlego ya gago!", "Safe": "Sireletsegile", "**Safe** @global.parent_point": "**Sireletsegile** @global.parent_point", + "Planning or keeping a family safety plan": "Go rulaganya kgotsa go tshwara thulaganyo ya pabalesego ya lelapa", + "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!": "Nako tsotlhe fa o dira sengwe go tshwara mosha wa gago a babalesegile, @global.parent_point mme o keteke katlego ya gago!", + "Did it? Tap it!": "O e dirile? E tobetse!", "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!": "Lo dirile bontle tota! Lo dirile sentle ka go fetsa nako mmogo. Seno ke one motheo wa go nna tsala e kgolo ya mosha wa gago!", "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!": "Go go siametse! Fa o fetsa nako o na le basha ba gago, ba tla bona gore ba botlhokwa mo go wena. Seno se thusa tota!", "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!": "Bontle tota! Go fetsa nako le mosha wa gago go ka dira gore gantsi a batle go go thusa. O dira sentle!", @@ -1712,5 +1625,219 @@ "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Re maswabi go utlwa gore go ne go se motlhofo. Go bona fa dikotsi le mafelo a go bona tshegetso di leng teng e ka nna kgwetlho le go tsholetsa maikutlo. Tota go a thusa go boloka mosha wa gago a sireletsegile!", "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Re maswabi gore go ne go le thatanyana. Ga e se selo se se motlhofo go se dira. Leka go nna fa fatshe le mosha wa gago mme lo tlotle ka yone gape. Mme gape, a go na le mongwe yo mosha wa gago a mo tshepang yo a ka tlang go kopanela le lona mo motlotlong?", "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Ke leboga go utlwa gore dilo di tsamaile sentle! Go otlhaya ka tsela e e siameng go thusa basha ba gago gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ke leboga go utlwa gore dilo di tsamaile sentle! Fa mosha wa gago a ithuta go rarabolola mathata, o tla kgona go dirisa bokgoni joo botshelo jwa gagwe jotlhe. Ruri ke mpho!" + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ke leboga go utlwa gore dilo di tsamaile sentle! Fa mosha wa gago a ithuta go rarabolola mathata, o tla kgona go dirisa bokgoni joo botshelo jwa gagwe jotlhe. Ruri ke mpho!", + "My Tips": "Dintlha Tsa me", + "**My Tips** in the @global.parent_centre": "**Dintlha tsa me**go @global.parent_centre", + "Essential Tools": "Didiriswa Tsa Botlhokwa", + "**Essential Tools** in the @global.parent_centre": "**Didiriswa tsa botlhokwa**go @global.parent_centre", + "**Customise @global.parent_app** in the @global.parent_centre": "**Tshwanedisa @global.parent_app** mo go @global.parent_centre", + "Customise Again": "Itsenyetse Gape", + "**Customise Again** in the @global.parent_centre": "**Tshwanedisa gape** mo go @global.parent_centre", + "Relax & Activities": "Go iketla & Ditiro", + "under **Relax & Activities** in the @global.parent_centre": "fa tlase ga ** Go Iketla le Ditirwana** mo go @global.parent_centre", + "Help": "Thuso", + "**Help** in the @global.parent_centre": "**Thuso** mo go @global.parent_centre", + "Technical Support": "Tshegetso ya Botegeniki", + "**Technical Support** in the @global.parent_centre": "**Tshegetso e e thekinikhale** mo go @global.parent_centre", + "Coping with @global.covid": "Go mekamekana le @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "**Go mekamekana le @global.covid** in the @global.parent_centre", + "Coping with grief": "Go mekamekana le kutlobotlhoko", + "**Coping with grief** in the @global.parent_centre": "**Go mekamekana le kutlobotlhoko** mo go @global.parent_centre", + "Message Archive": "Akhaefe ya Molaetsa", + "**Message Archive** in the @global.parent_centre": "***Bobeelo ba melaetsa*** go @global.parent_centre", + "Support Contacts": "Batho Ba ba Ka go Thusang", + "**Support Contacts** in the @global.parent_centre": "***Bagolaganyi ba tshegetso***go @global.parent_centre", + "Evidence Base": "Motheo wa Bosupi", + "**Evidence Base** in the @global.parent_centre": "**Bopaki** mo go @global.parent_centre", + "Quick pause": "Go ema o se kae", + "Power of three": "Matla a tharo", + "One thing today": "Selo se le nosi gompieno", + "Breathe to three": "Kgwa mowa go fitlha gararo", + "In and out": "Mo teng le kwa ntle", + "Think about today": "Akanya ka gompieno", + "Pause to respond": "Kgwa mowa o bo o araba", + "Small things": "Dilo tse dinnye", + "Body scan": "Go tlhatlhoba mmele", + "Feel the ground": "Utlwa tsela e o gatang ka yone", + "Counting sounds": "Go bala medumo", + "Feel your feeling": "Utlwa gore o ikutlwa jang", + "Your song": "Pina ya gago", + "Ground & gratitude": "Lefatshe & go leboga", + "Notice how you feel": "Lemoga kafa o ikutlwang ka gone", + "Pause power": "Maatla a go ema go se kae", + "Praise yourself": "Ipake/Ikakgole", + "Taking care of yourself": "Itlhokomele", + "Take a pause": "Ema go se kae", + "Physical activity": "Go dirisa matla", + "List of things": "Lenaane la dilo", + "Connect": "Ikamanye", + "Prevent anger": "Thibela go galefa", + "Angry? Take a break": "O galefile? Ikhutse go se kae", + "It is hard to find time to have fun with your teenager.": "Go thata go bona nako ya go itumela le mosha wa gago.", + "In our busy lives it’s hard to focus on the positive.": "Mo go tshwaregeng ka botshelo jwa rona go boima go tlhoma mogopolo mo dilong tse di siameng.", + "How many days in the past week have you praised your teen?": "O akgotse mosha wa gago ga kae mo bekeng e e fetileng?", + "This is a very stressful time for families.": "Eno ke nako e e tshwenyang mo maikutlong mo malapeng.", + "How many days in the past week did you feel very stressed as a parent/caregiver?": "Ke malatsi a le kae a o neng o ikutlwa o tshwenyegile mo maikutlong jaaka motsadi/motlhokomedi mo bekeng e e fetileng?", + "Sometimes our children make us really upset.": "Ka dinako tse dingwe bana ba rona ba dira gore re tenege thata.", + "How many days in the past week did you shout, scream or yell at your teen?": "Mo bekeng e e fetileng o omantse kgotsa o goile mosha wa gago malatsi a le kae?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Ke malatsi a le kae mo kgweding (malatsi a 30) e e fetileng mo o o neng o felelwa ke madi a go duela dijo?", + "It is so stressful when children misbehave.": "Go tshwenya mo maikutlong tota fa bana ba sa itshware sentle.", + "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Ke matsatsi a makae mo bekeng e e fitileng a o kileng wa kgalema bana ba gago ka go ba betsa, go ba kgwathisa kgotsa go ba betsa ka seatla kgotsa sediriswa, thupa kgotsa lepanta?", + "It’s hard to keep track of your teenagers when they are becoming independent.": "Go thata go tsamaisana le mosha wa gago fa ba ikemela.", + "How many days in the past week did you know what your teen was doing and who they were with?": "Ke malatsi a le kae mo bekeng e e fetileng mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", + "Days in the past week": "Malatsi mo bekeng e e fetileng", + "We all want to keep our children safe.": "Rotlhe re batla go boloka bana ba rona ba sireletsegile.", + "Days in the past month": "Malatsi mo kgweding e e fetileng", + "Welcome and Self-Care": "Go Amogelwa le go Itlhokomela", + "**Welcome and Self-Care** workshop": "Workshop ya **Go amogelwa le go itlhokomela**", + "Self-Care": "Go itlhokomela", + "How to do self-care": "Tsela ya go itlhokomela", + "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.": "Mo go nna jaaka motsadi, go batlile go sa kgonagale gore ke itirele nako ya me ke le mongwe. ke ne ke phela ke tlhokomela batho ba bangwe. Ka @global.parent_app, ke lemogile gore go botlhokwa jaang gore ke itlhokomele. E thusa nna le ba lelapa!\n\nGo itirela motsotswana go nthusa go hema mme ke lemoge gore ke ikutlwa jaang. Le metsotso e le metlhano ya go nwa tee e dira pharologanyo e kgolo. Jaanong ke kgona go mekamekana le mathata a me bokaone.", + "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.": "Rre wa me o ne a phela a tshwaregile. O ne a boa tirong mme a re omanye fa re mo botsisa dipotso.\n\n@global.parent_app e re thusitse thata.ga re sa lwa. Jaanong, fa rre a fitlha gae, o simolola ka go dula a le nosi metsotso e le 5 mme morago re dira dirwana ya go itapolosa go tswa go @global.parent_app mmogo, gore botlhe re hemele teng mme re repe. Morago re kgona go bua gore re tlhotse jaang,ka sengwe le sengwe se se bosula kgotsa molemo se se diragetseng. Rotlhe re itumetse thata jaanong.", + "One-on-One Time": "Go Ipha Nako Mmogo", + "**One-on-One Time** workshop": "Workshop ya **Go ipha nako mmogo**", + "How to spend one-on-one time": "Tsela ya go ipha nako lo le mmogo", + "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!": "Fa ke simolola go ultwa gore ke tshwanetse go nna le nako ya motho-ka-mongwe le mosha wa me, go ne go le thata. ke ne ke sa itse gore ke e dire leng mme ke bue ke reng. Ke ne ke sa batle go senya mosha wa me gore a nagane gore re tshwanetse go dira sengwe le sengwe mmogo.\n\nFela ke ne ke batla go aga botsalano le mosha wa me mme ke ne ke batla a tlwaele go bua le nna ka dilo tse mo tshwenyang. Ke ka moo re lekileng nako ya motho-ka-mongwe.\n\nLantha, go ne go sa tlwaelega, mme ga tswa go le monate. Jaanong re bogela mananeo a TV mmogo ebe re tlotle ka ona. Re bua le ka tsela e morwa wa me a fetogelang mo dingwageng tsa bosha, le ka makgarebe le dilo tse di ntseng jalo!", + "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.": "Fa mme wa me a nkopa go fetsa nako le nna, ke naganne gore \" Gonwe go na le sengwe se se phoso, kgotsa ga a itekanela\". Mme o rile \" Nnyaa, ke batla fela go fetsa nako le wena.\"Ke ne ke belaela mme ka dumela.\n\nO ne a mpotsisa gore ke rata go dira eng. Go ne sa tlwaelega mme ke ne ke sa phuthologa, ka gore ga ise leseng a fetse nako le nna fela.\n\nFa ntse a leka re mme re feletsa re fetsa nako mmogo, go ne go le monate tota. O ne a abelana ka kgolo ya gagwe le nna, dilo tse ke iseng ke di utlwe. Seo se thusitse gore ke kgone go abelana ka seo se diragalng mo botshelong ba me. Ebile re bua ka makau le mathata a ke kopanang le ona. Ke a itse gore nka bua le mme wa me jaanong.", + "Praise": "Baka/Akgola", + "**Praise** workshop": "Workshop ya **Go baka/akgola**", + "How to praise": "Tsela ya go baka/akgola", + "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!": "Fa re ithuta ka selo se sa go tlotlomatsa, ke naganne gore\"Gaise re tlotlomalediwe dilo re le basha, jaanong goreng re tshwanetse go simolola jaanong?\"Mme ke nnile le kgatlhego fa ke sene ke ithuta gore melemo ya go tlotlomatsa e ka nna eng.\n\nMorago fela ga tirelothuto ya beke, ke lemogile mosha wa ka a dira seo a tlwaetseng go se dira ka letsatsi: Go tlhatswa dijana. Ka bo ke re\"Ke a leboga fa o tlhatswitse dijana, mosetsana wa me, go a intumedisa gore o a thusa\". Mosha wa me o ne a nyeba ebe a nkatlarela, selo se a senkeng a se dira.\n\nKgang e ya go tlotlomatsa e boima. Ke sentse ke lebala kgotsa ke tlotlomatsa ka nako e le nngwe le go nyenyefatsa. Mme go tlotlomatsa go dira pharologanyo. Ke ne ke sa nagane gore go tlotlomatsa fela go ka dira pharologanyo e kana mo mothong!", + "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.": "Ke ne ke anaanela gore mme wa me o ithutile go tlotlomatsa.\n\nMme wa me o ne a phela a lemoga fa ke dirile phoso. O ne a nkomanya mme a nkitaya.\n\nIrile fa mme wa me a fetsa go dira tirelothuto, o ne a ntlotlomaletsa dilo di le dinnye. Lantlha ke ne ke nagana gore\"Go diragala eng?\"mme go ne gwa tswela pele. Ke ne ke e rata jaanong ka tswela pele ke dira dilo tse dintle tse ke nagang gore o tla di rata.\n\nGo utlwalega go le monate gore mme wa me o bona dilo tse dintle tse ke di dirang, eseng tse di bosula fela.\n\nKe bile ka mmolelela gangwe. Mo magareng a @data.workshop.w_1on1.title, Ke rile\"Kea leboga, mme, gore o bue sengwe se sentle fa ke dira dilo sentle, eseng fela fa ke dira diphoso\". Seno se re itumedisitse thata.", + "Positive Instructions": "Ditaelo tse di siameng", + "**Positive Instructions** workshop": "Workshop ya **Ditaelo tse di siameng**", + "How to give positive instructions": "Tsela ya go naya ditaelo tse di siameng", + "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.": "Pele, Ke ne ke godisa basha ba me ka tsela e ke godileng ka yona: Ke ne ke ba raya ke re\" Le seke la dira seno, le seke la dira jalo.\" Re ne re lwa thata, fela dilo di fetogile tota fa ke sene ke ithuta ka go neelana ka melao e e molemo.\n\nJaanong ke tlhomile mogopolo mo maitshwarong a ke batlang go a bona, le go neelana ka melao e e bonolo e e tlhaloganyegang go basha ba me. Go tsere nako go ithuta gore\"Ke kopa o dire jaana\" go na le \"O seke wa dira jaana.\"\n\nBasha ba me mmogo le monna wa me ba mpolelela gore ba rata tsela e ya go dira dilo, ka go re jaanong ba itse se ba tlhokang go se dira. Mosha wa me o kile a re\"Ke rata mme o montšha ona,\"mme le maemo a kgatelelo ya me ya maikutlo a fokotsegile thata.", + "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.": "Lantlha, ke ne ke sa kgathalele gore mme wa me o dira @global.parent_app. Mme fela ka simolola go bona mme wa me a fetola tsela e a buang le rona ka yona. \n\nTsatsi lengwe, fa ke ne ke tswa le ditsala tsa me, O rile ke be ke le gae ka 6pm. Ka re fela\"Hmmm gosiame,\" ka gore o ne a senke a neelana ka ditaelo tse di tlhaloganyegang gore o batla eng - O ne a sa bue sepe mme morago a nkomanye fa ke buile gae bosigo.\n\nFa ke fitlha gae ka 5pm, mme wa me o ne a ntlamarela mme a re \"Ke a leboga fa o nnile mo nakong.\" Go ne go gakgamatsa, mme ke go ratile.\n\nFa e sele nako eo e feta, re na le puisano e e tlhaloganyegang fa lapeng.", + "Managing Stress": "Go laola go tshwenyega mo maikutlong", + "**Managing Stress** workshop": "Workshop ya **Go laola go tshwenyega mo maikutlong**", + "How to manage stress": "Kafa o ka laolang go tshwenyega mo maikutlong", + "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!": "Botshelo bo boima ka nako dingwe. Pele ke golagana le @global.parent_app, ke ne ke selekega fela ka nako tsotlhe. Ke ne ke ntshetsa kgalefo ya me mo go botlhe kwa gae, eseng fela basha ba me mme le monna wa me. Ba ne ba tshaba fa ke fitlha gae, ka gore ba ne ba itse gore ke tlile go simolola go ba rasetsa.\n\nGo ithuta go emisa mme ke heme go ne go le boima kwa tshimologong, fela nako nngwe le nngwe fa ke e leka, e nthusitse go ritibala. Jaanong basha ba me ga ba sa tshaba fa ke fitlha gae, mme ebile ba reetsa botoka go na le fa ke ne ke ba omanya!", + "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.": "Nako nngwe le nngwe fa ke dira phoso, rre wa me o ne a nkgalefela mme a mpetse. O ne a sa nkutlwelele, mme ke ne ke mo galefela mmogo le batho botlhe.\n\nJaanong, fa a galefa, o simolola ka go hemela teng pele a araba. E dira botlhe ba ritibale go na le go baka ntwa e kgolo.\n\nE thusitse thata kwa gae le kwa sekolong, ka gonne le nna ga ke sa kgerisa batho botlhe le go fela pelo fela. Fa ke ikutlwa ke galefa mme ke gatelega maikutlo, ke hemela kwa teng jaaka rre a dira. Ke motho yo a fetogileng.", + "Family Budgets": "Ditekanyetsokabo tsa lelapa", + "**Family Budgets** workshop": "Workshop ya **Ditekanyetsokabo tsa lelapa**", + "How to budget & save": "Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi", + "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.": "Go boloka le tekanyetsomadi di nthusitse ke le motsadi, mme e thusitse gape le mosha wa me gore a tlhaloganye gore madi a ya kae.\n\nBasha ba me ba ne ba kopa dilo di le dintsi mme ba ne ba sa tlhaloganye fa ke re \"ga ke na madi.\" Ba ne ba re \" fela o na le tiro!\"\n\nKe ne ka nna fa gatshe le bona mme ka ba bontsha dilo tsotlhe tse ke di duelang le gore ke sala ka bokae. Ba tlhaloganya jaanong ebile ba nnaya dikakanyo gore nka boloka jaang gore re kgone go fitlhela mekgele ya rona jaaka ditlhako tse dintšhwa, letsatsi la matsalo le mekgele e mogolo jaaka madi a sekolo. Go yo mogolo, ke butse akhaonto ya go boloka.", + "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.": "Ke ne ke kopa mme wa me go nthekele diaparo tse di ntle nako tsotlhe. Nako tsotlhe, o ne a re \"Ga ke na madi,\" mme ke ne ke itse gore o bona madi gotswa go malome wa me. Ke ne ke sa tlhaloganye gore goreng a gana go nthekela diaparo. Ka nako enngwe ke ne ke nagana gore \"ga a nthate.\"\n\nMme tsatsi le lengwe, o ne mpitse gore ke dule fatshe le ene mme a mpotsisa gore\" Ke eng ditlhokego le dilo tse re di batlang fa lapeng la rona.\" Ka simolola go bala ditlhokego le dipatlo tsa me tsotlhe. Morago mme wa me o ne a nthusa go nagana ka ditlhokego tsa balelapa. Jaanong ka tlhaloganya gore madi a rona aya kae, kwa dilong tse re di tlhokang re le lelapa.\n\nGo tloga tsatsing leo, Ke a tlhaloganya gore nkase kope fela ka nako nngwe le nngwe. Jaanong, fa ke batla sengwe, ke emela mafelo a kgwedi fa re sekaseka tekanyetsomadi mmogo go bona gore aa e ka lekana. Re tlhaloganyana botoka gone jaanong.", + "Rules": "Melao", + "**Rules** workshop": "Workshop ya **Melao**", + "How to create rules": "Kafa o ka bayang melao ka teng", + "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.": "Basha ba me ba ne ba phela ba nyamalela. Ke ne ke sa itse gore ba ile kae, mme ke ke tshwenyega ebile ke ba galefele. ke ne ke re\"e ke ntlo ya me, mme ebile eno ke melao ya me,fa le sa batle go e latela le ka tsamaya la ya go ipatlela bodula ba lona.\"\n\nFa re ithuta mo go @global.parent_app ka ga melao, ke ithutile gore go na le melao ya basha, bagolo, le batho botlhe. Fa re latela melao re le batsadi, basha ba rona ba tlile go latela sekao sa rona.\n\nKe ne ka tlhalosa matshwenyego a me mme ra dumellana gore: Rotlhe re latela melao mme ra laela gore re ya kae fa re tswa fa ntlong. Go tlhama melao botlhe go re thusitse thata, jaaka basha ba me ba sa tlhole ba mpona jaaka motsadi yo o lapisang o a dirang melao e e sa tlhokegeng.", + "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.": "Ke ne ke sa rate melao mme ke ne ke lebala melao thata.\n\nTsatsi le lengwe, ke ne ke tshameka le ditsala tsa me. Molao wa kwa gae ke gore re tshwanetse go bo re le ka fa gae ka 6pm, mme nna ke ne ke lebetse gape. Ka 6: 30 go ne go fifala gape ke ne ke santse ke le kwa ntle ke tshameka ka mogala wa letheka wa me. Ebe mosimane a tla, a phamola mogala wa letheka a tshaba.\n\nKe tlhalogantse gore melao e kgona go thusa gore re nne re bolokesegile, jaanong ke fetotse maitsholo a me mme ka simolola go fitlha gae ka 5pm go tloga letsatsi leno.", + "Calm Consequences": "Ditlamorago o Ritibetse", + "**Calm Consequences** workshop": "Workshop ya **Ditlamorago o Ritibetse**", + "How to give calm consequences": "Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo", + "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!": "Fa basha ba me ba dira senngwe go nkgalefisa, ke ne ke ba omanya mme ke ba otlhaya fela foo. Mme nako e e latelang ba e dirile gape! Ke ne ke sa tlhaloganye gore goreng ba sa nkutlwi le fa ntse ke ba omantse.\n\n@global.parent_app e nthusitse go tlhaloganya gore basha ba me ba ka nutlwelela thata fa ke ritibetse. Jaanong, fa sengwe se direga, ke tsaya nako go hemela kwa teng ebe ke re\"re tla bua ka seno mankgapele fa botlhe re ritibetse.\"\n\nRe felletsa re dumelana ka ditlamorago mmogo gone jaanong pele ga sengwe se sa tsamae sentle. Seno se re diretse metlholo - Ke bone phetogo e kgolo thata mo maitsholong a mosha wa me ka gonne jaanong ba tsentse seatla ebile ga ke sa na kgatelelo ya mailutlo.\n\nKe lakatsa gore nkabo ke itsitse seno kgale, fela ga go thari go simolola!", + "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.": "Mme le rre wa me ba ne ba nkotlhaya fa ba ne ba nkgalefetse. Ba ne ba nkomanya mme le nna ke ne ke feletsa ke galefa. Go le gantsi ke ne ke sa latele melao, ka gonne ba ne ba le bogale thata, ke ne ke sa tlhalogane se ba se buang, kgotsa, ke ne ke sa itshwenya ka go ba utlwelela, ka gonne rotlhe re ne re galefile.\n\nKa tsatsi le lengwe, ba ne ba ba mpotsisa: A re naganeng mmogo gore ditlamorago tsa go se boe gae ka nako e nne eng. Go ne go le monate go tlhagisa pono ya me - pele sengwe se direga se se re galefisang rotlhe. Re ritibitse botlhe ebile re dumelana pele. Go bonolo go amogela melao jaanong ka gonne ke a itsi gore ke e dumetse ebile ke itse ditlamorago fa ke sa o lalete molao.", + "Problem Solving": "Go Rarabolola Mathata", + "**Problem Solving** workshop": "Workshop ya **Go Rarabolola Mathata**", + "How to solve problems": "Kafa o ka rarabololang mathata ka teng", + "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.": "Ke ne ke se na botsalano jo bontle le moradi wa me. Ke ne ke phela ke mo omanya mme ebile o ne a gana go ya sekolong.\n\nFela fa ke sene ke simolola go fetsa nako ya motho-ka-mong le ene, ke lemogile gore ga a batle go ya sekolong ka gonne o ne a kgerisiwa kwa sekolong. Re ne ra nna fa fatshe ebe re dirisa dikgato tse 6 tsa go rarabolola mathata. Re tlhomolotse bothata, mme ra batla tharabololo mmogo.\"Nka dira eng jaaka motsadi gore o tsene sekolo mme o ikutlwe o bolokesegile?\"\n\nRe dumellane gore ke tlile go bua le morutabana go batla tsela ya go tswela pele. Re bone tharabololo mmogo, ebile re atumelane jaanong.", + "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.": "Fa rre wa me a ne a nkitsise kgato tsa go rarabolola mathata, e thusitse lelapa la mme e nthusitse le ka ditsala tsa me.\n\nKe boleletse ditsala tsa me ka ga dikgato, jaanong fa re nganga re nna fa fatshe mme rotlhe re tla ka ditharabololo. Re bo re lebelela masula le tseo tse dintle ka tharabololo nngwe le nngwe, mme re dumelana re re \"go giame a re leke ena.\"\n\nEbile ditsala tsa me di di dirisa kwa magaeng a bone, mme e thusa malapa a bone le bona!\n\nGo a itumedisa fa bangwe ba go reetsa ebile ba amogela dikakanyo tsa gago le fa o le monnye. Rotlhe re ka tlisa kutlwano mo malapeng le ditsala tsa rona.", + "Teen Safety": "Pabalesego ya Basha", + "**Teen Safety** workshop": "Workshop ya **Pabalesego ya Basha**", + "How to keep your teen safe": "Se o ka se dirang go boloka mosha wa gago a sireletsegile", + "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.": "Ke ne ke lebogela go dira lenaneo la pabalesego le mosha wa me. Ke ne ke nagana gore ke itse mafela a a babalesegileng gore ke afe go mosha wa me le a a sa nnang jaalo. Fela re sena go dira lenaneo la pabalesego mmogo, ke ne ka lemoga gore mosetsana wa me o itse mafelo a le mantsi a ke neng ke sa lemoge.\n\nKe ne ke ke nagana gape gore o babalesegile kwa sekolong, fela ka tirwana eno ke lemogile gore o ne a kgerisiwa mme barutabana ba ne ba sa dire sepe ka yone.\n\nFa re ntse re bua, ke gone fa ke ne ke tlhaloganya mme ke nna le kitso go tswa go mosha wa me. Seo se nthusitse thata go sireletsa mosha wa me le go mo tshola a babalesegile.", + "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!": "Fa ditsala tsa me kgotsa nna re tsene mo mathateng, ke ne ke leka go e fitlhela mme wa me ka gonne o ne a tlile go nkgalefela mme o omanye.\n\nFa re ne thala mmepe wa mafela a pabalesego le a a sa babalesegang, ke ithutile go le gontsi - gape le gore goreng go le kotsi go abelana ka seepe sengwe le sengwe mo mafaratlhatlheng. Mme wa me o ne a mpolelela gore nka mmotsisa nako nngwe le nngwe fa go na le mathata gape o tshepisitse go se nkgalefele.\n\nO tshotse tshepiso ya gagwe, jaanong fa ke na le bothata kgotsa ke sa ikutlwe ke babalesegile ke a itse gore re ka bona tharabololo mmogo. Ke kgona go bua le mme wa ka dilo tse ke di dirang mo inthaneteng jaanong!", + "Dealing with Crisis": "Go lepalepana le Mathata a a masisi", + "**Dealing with Crisis** workshop": "Workshop ya **Go Lepalepana le Mathata a a Masisi**", + "How to deal with crisis": "Kafa o ka lepalepanang ka teng le mathata a a masisi", + "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!": "Mosha wa me o ne a phela a galefila ka dinako tsotlhe. O ne a sa reetse ebile o ne a tsen mo dikgogakgoganong tse dikgolo tsatsi le letsatsi. Ka @global.parent_app, ke ne ka simolola go fetsa nako thata le mosha wa me le go nonotsha kamano ya rona.Tsatsi le lengwe o ne abelana le nna gore ke lekolo la segopa fela o batla go tswa mo go sona.\n\nRe dirile maano a nako-khutswane le nako-telele mmogo a gore re ka dira jaang jaalo. Botshelo ba rona bo lebega bo fetogile jaanong!", + "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.": "Dingwana tse pedi tse di fitileng, ke ne ka betelelwa ke malome wa me o a neng a nna le rona fa jarateng. Ga ka bolelela mme wa me, ka gonne ke ne ke tshaba gore o tlile go mpetsa, go nkomanya, kgotsa gonwe go nkobela kwa ntle ga ntlo. Ke ne ke sena gope kwa nkayang kwa teng\n\nFa mme wa me a simolola ka @global.parent_app, o ne a simolola go fetsa nako e le ntsi le mmogo. Ke ne ke sentse ke tshaba, fela kwa bokhutlhong ke ne ka abelana le mme wa me. Mme wa me ga a omanya, mme o ne a reetsa ebile a mpolelela gore ga se phoso ya me. Re ne ya ya maphodiseng le bookelong mmogo. Ke lebogela gore ga ke tlhole ke rwele sephiri seno.", + "Celebration and Next Steps": "Go Keteka le Dikgato Tse di Latelang", + "**Celebration and Next Steps** workshop": "Workshop ya **Go Keteka le Dikgato Tse di Latelang**", + "How to support each other": "Ka fa lo ka tshegetsanang ka teng", + "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Dumela motsadi o siameng, gopola go itlhokomela le wena - go tla thusa wena le ba lelapa la gago! Bona tshedimosetso le tse dintsi mo go @global.parent_app.", + "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.": "Dumela motsadi o siameng! Gopola, o ka bona tshedimosetso e ntsi e thusang mo go @global.parent_app.", + "Hi great parent! @global.parent_app is here to support you. Check it out now!": "Dumela motsadi o siameng! @global.parent_app e fano go go tshegetsa. E tlhole jaanong!", + "Welcome to @global.parent_app. Click here to start your journey!": "Re a go amogela mo @global.parent_app. Tobetsa fano gore o simolole go e dirisa!", + "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Dumela! A o SIAME? Go bonala o ise o bule @global.parent_app. Goreng o sa leke go e dirisa? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno e ba thusitse. Re ikemiseditse go tswelela re go thusa.", + "@global.parent_app misses you! There is a lot to explore. We are still here to support you.": "O seka wa itetla go fetwa ke tshedimosetso ya botlhokwa e e mo @global.parent_app! E na le tshedimosetso e ntsi tota. Re ikemiseditse go tswelela re go thusa.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go thusa mosha wa gago gore a kgone go atlega mo botshelong.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go nna tsala ya mosha wa gago gape!", + "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!": "Ke solofela gore lo SIAME. Go nna motsadi ga go motlhofo, mme gone, ga go ise go nne thari gore o leke gape go thusa mosha wa gago. Workshop ya gago ya ntlha ya batsadi e setse e le teng! Tobetsa fano gore o simolole go dirisa @global.parent_app!", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go rarabolola matshwenyego a go nna motsadi.", + "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Dumelang gape! Ga go thari gore o ka dirisa @global.parent_app gore o bone thuso e e tshwanetseng maemo a gago o le motsadi. Goreng o sa leke go e dirisa fa o le mo tseleng go ya tirong kgotsa fa o apeile? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno ya rona e ba thusitse.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go lepalepana le boitshwaro jwa mosha wa gago.", + "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Dumela @fields.user_name. @data.workshop.w_1on1.in_text_title ya gago e go emetse.", + "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Dumela @fields.group_name. @data.workshop.w_1on1.in_text_title ya gago e go emetse.", + "You've put so much effort into being a better parent. You are loved and appreciated!": "O tsentse matla a le mantsi mo go nneng motsadi yo o kaone. Wa ratiwa ebile wa kgatlhegelwa!", + "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Re lebogela maikemisetso a gago go botsadi bagago.\n\n@data.workshop.w_1on1.in_text_title ya gago e go letile!", + "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Go fetsa nako le mosha wa gago go thusa go aga tshepo.\n\nTswelela pele ka @global.parent_app leeto la gago go bona pholo tse dintle.", + "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "O dirile sentle ka go tlatsa @data.workshop.w_1on1.in_text_title. Kamoso, o ka tsenela tirelogae e ntšhwa go go thusa go itapolosa, natefelwa gape o ithute bokgoni jo bo ntšhwa!", + "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.": "Gopola go fetsa @data.workshop.w_1on1.in_text_title. o tla bona kitsiso ya boleng ka metsotso fela!\n\nTiro e ntle ka go leka go nna motsadi yo o botoka.", + "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.": "Dumela @fields.user_name! Gompieno re keteka kgwedi tse pedi tsa @global.parent_app! \n\nBeke eno o tlile go ithuta ka go thusa mosha wa gago go latela melao ya fa gae.", + "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.": "Dumela @fields.group_name!! Gompieno re keteka kgwedi tse pedi tsa @global.parent_app! \n\nBeke eno o tlile go ithuta ka go thusa mosha wa gago go latela melao ya fa gae.", + "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.": "Nagana ka makgatlho otlhe a o kile wa dira mosha wa gago a nyebe le tlhokomelo yotlhe e o mo neileng yone.\n\nO tshwanetse go nna motlotlo tota - Eno ke nako e e thata ya go nna motsadi.", + "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!": "Tiro e ntle - O setse o okeditse didiriswa tsa botsadi ka 6! Dira tirelothuto e e latelang go bona di le dintsi!", + "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.": "Feleletsa tirelothuto ebe o bua le mosha wa gago ka ditlamorago tse di siameng le tse di sa siamang tsa maitsholo.", + "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?": "A o setse o naganne ka ditlamorago tse di siameng le tse di sa siamang tsa maitsholo le mosha wa gago?", + "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!": "Tiro e ntle go tlatsa @data.workshop.w_consequence.in_text_title. Tsena go tirelothuto e ntšhwa kamoso go go thusa go natefelwa le go ithuta bokgoni jo bo thusang!", + "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.": "Ditlamorago tse di ritibetseng di thusa mosha wa gago go latela melao. Fa isi o fetse @data.workshop.w_consequence.in_text_title, e leke!\n\nTiro e ntle go bontsha maikemisetso tota.", + "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.user_name! Dipharagobeng di diragalela botlhe - Go nna o itukisitse go thusa tota.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", + "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.": "Dumela @fields.group_name! Dipharagobeng di diragalela botlhe - Go nna o itukisitse go thusa tota.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", + "Be proud, you are a committed parent. This is a big achievement!": "Nna motlotlo, o motsadi yo a ikemiseditseng. Seno ke phitlhelelo e kgolo!", + "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.": "Pharagobe e ka direga, mme re KA NNA re itukisitse!\n\nSimolola tirelothuto e e latelang go bona gore jaang le mosha wa gago.", + "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.": "Go gontle gore o tsenetse leeto leno la botsadi!\n\nTlatsa @data.workshop.w_crisis.in_text_title go ithuta ka tsela ya maleba ya go tsiboga fa basha ba rona ba re tlhoka.", + "Have you and your teen discussed what you would do in a crisis?": "Aa wena le mosha wa gago le kile la buisana ka gore le ka dira eng mo dipharagobeng?", + "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!": "Tiro e ntle go fetsa @data.workshop.w_crisis. Kamoso, o ka tsena go tirelothuto ya bofelo akanya ka leeto la gago le go rulaganya se o tla se dira eng go latela!", + "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.": "Tirelothuto ya bofelo e notlologa kamoso!\n\nSa ntlha leka go fetsa @data.workshop.w_crisis.in_text_title. Ka tsela eo, O ka fetsa setlhopha sa gago sa bokgoni jwa botsadi mme o tseye tshwetso gore o tla dira eng go latela.", + "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Dumela @fields.user_name, Tiro e ntle go simolola beke ya 4!\n\nBeke eno e thusa go oketsa ditshono tsa gago tsa go fitlhelela gore mosha wa gago a dire se o se kopang.", + "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.": "Dumela @fields.group_name, Tiro e ntle go simolola beke ya 4!\n\nBeke eno e thusa go oketsa ditshono tsa gago tsa go fitlhelela gore mosha wa gago a dire se o se kopang.", + "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!": "Nna pelonomi go wena.Ga go na motsadi yo a senang diphoso. Go dirisa @global.parent_app go bontsha gore o a kgathala!", + "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.": "Basha ga ba nne ba utlwelela. Lebelela tirelothuto ya beke eno go ithuta gore ditaelo tse di molemo di thusa jaang.", + "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.": "Ditaelo tse di molemo di tokafatsa maitsholo.\n\nTlatsa @data.workshop.w_instruct.in_text_title go bona dikakanyo gore seno se ka dira jaang mo lapeng la gago.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe - O dira kgatelopele e ntle.", + "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively makgetlho - O dira kgatelopele e ntle.", + "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!": "Kakgolo, o tladitse @data.workshop.w_instruct.in_text_title.\n\nKamoso, tirelothuto e ntšhwa e go letile. Bona pharologanyo ka go dira diphetogo di le dinnye!", + "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?": "Batsa ba bangwe ba dirisa app morago ga dijo tsa bosigo. Gore o sa tlatse @data.workshop.w_instruct.in_text_title fa o na le metsotsonyana?", + "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Dumela @fields.user_name! Kgakamalo, eno ke kgwedi ya gago ya bobedi le @global.parent_app.\n\nMalapa a le mantsi a sokodisiwa ke madi. Tirelothuto eno e tlile go go naya didiriswa go rulaganya ditlhokego tsa madi go go thusa mo tsamaong ya kgwedi.", + "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.": "Dumela @fields.group_name! Kgakamalo, eno ke kgwedi ya gago ya bobedi le @global.parent_app.\n\nMalapa a le mantsi a sokodisiwa ke madi. Tirelothuto eno e tlile go go naya didiriswa go rulaganya ditlhokego tsa madi go go thusa mo tsamaong ya kgwedi.", + "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!": "Ga o nosi. Batsadi lefatshe ka bophara ba mekamekane le dikgwetlho tse di tshwanang le tsa gago.\n\nO dira ka bojotlhe mme re motlotlo ka wena!", + "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.": "A o gateletswe mo moweng ka ntlha ya madi? Aa mosha wa gago o kopa dilo tse o ka se di kgoneng?\n\nBeke eno e mekamekana le madi le tekanyetsomadi.", + "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!": "Tlhama tekanyetsomadi le mosha wa gago - e tlile go thibela dikgogakgogano tsa madi.\n\nTlatsa @data.workshop.w_money.in_text_title go bona gore jaang. Go bonolo - o tla bona!", + "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.": "Bontle, o tladitse @data.workshop.w_money.in_text_title! Kamoso, tsena go tirelothuto e ntšha go go thusa go tlhama melao ya fa gae e e dirang.", + "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.": "Batsadi ba le bantsi ba re tekanyetsomadi e tlisa kagiso. Fa ise o fetse @data.workshop.w_money.in_text_title, e leke!\n\nRe leboga gore o na le maitlamo mo botsading.", + "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Dumela @fields.user_name! O simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntsha e go emetse!", + "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!": "Dumela @fields.user_name! O simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntsha e go emetse!", + "Well done for using @global.parent_app! Remember, small things make a big difference.": "Tiro e ntle ka go dirisa @global.parent_app! Gopola, dilo di le dinnye di dira pharologanyo e kgolo.", + "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!": "Ra leboga gore o bo o tsenyeletsa nako mo go wena le ba lelapa la gago. Leka @data.workshop.w_praise.in_text_title go aga bokgoni ba botsadi bo bontle!", + "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.": "Go akgola go dira pharologanyo.\n\nFetsa @data.workshop.w_praise.in_text_title go bona gore o ka e dirisa jaang le ba lelapa la gago.", + "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!": "Akgola mosha wa gago ka selo se le seng se ba se dirileng.\n\nEbile ke leng labofelo o ikakgola kgotsa motho yo mongwe o mogolo? E leke!", + "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.": "Gogontle, o feditse @data.workshop.w_praise.in_text_title. Tirelothuto e ntsha e go emetse kamoso. E leke - o tla bona phetogo mo maitsholong a mosha wa gago.", + "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.": "Dumela @global.user_name, tirelothuto e ntšhwa e go emetse kamoso!\n\nGo bonala okare gaise o fetse @data.workshop.w_praise.in_text_title. Ke e khutswane(ka go tshepisa!) - e leke fa o na le metsotsonyana.", + "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Dumela @fields.user_name! Beke e ntšhwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae e mosha wa gago a e tlhaloganyang mme a e latela.", + "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.": "Dumela @fields.group_name! Beke e ntšhwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae e mosha wa gago a e tlhaloganyang mme a e latela.", + "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!": "O lekile ka thata mme fela mosha wa gago sentse a selekega fela? Gopola, o dira tiro e ntle - Go tlile go nna le nako tse dintle le bona!", + "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.": "Re lebogela fa o tsenyeleditse mo botsading.\n\nDira @data.workshop.w_rules.in_text_title go thusa mosha wa gago go tlhaloganya le go latela melao ya fa gae.", + "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!": "Fa gaufi le go bona sediriswa se seng! Tlatsa @data.workshop.w_rules.in_text_title mme o beye molao o MONGWE o bonolo, o kgonegang le mosha wa gao, mme o bone fa dilo di fetoga!", + "Have you managed to set a rule with your teen?": "A o kgonne go baya molao mmogo le mosha wa gago?", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!": "Ra go lebogisa, o feditse @local.workshop_data.in_text_title.\n\nKamoso, tsena go tirelothuto e ntšhwa! E tlile go go bontsha se o ka se dirang fa basha ba tlhagisa maitsholo a bosula (kgotsa a mantle)!", + "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!": "Tirelothuto e ntšhwa e a bulega kamoso!\n\nTlatsa @local.workshop_data.in_text_title pele o tswela pele. Metsotsonyana e mmalwa fela go thusa mosha wa gago go latela melao!", + "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Dumela @fields.user_name! O gaufi le bokhutlo jwa leeto la @global.parent_app! Re lebogela fa o ntse o tshwareletse.\n\nBeke eno e ka ga go tshwara basha ba rona ba bolokesegile mo mafaratlhatlheng le fa motseng.", + "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.": "Dumela @fields.group_name! O gaufi le bokhutlo jwa leeto la @global.parent_app! Re lebogela fa o ntse o tshwareletse.\n\nBeke eno e ka ga go tshwara basha ba rona ba bolokesegile mo mafaratlhatlheng le fa motseng.", + "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!": "Botsadi bo boima, segolo setona jaanong. Nna motlotlo ka diphitlhelelo tsa gago. ka tlhokomelo e o ba nayang yone. Ka nako tsotlhe tse o dirang ba nyebe ka boitumelo. O a makatsa!", + "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.": "Nagana ka bokgoni botlhe ba botsadi bo o setseng o bo bone!\n\nTlatsa tirelothuto e e latelang go bona tse dingwe.", + "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.": "Go bua mmogo ka maitemogelo a motse selegae le mafatlhatlha go thusa go boloka basha.\n\nTlatsa @data.workshop.w_safe.in_text_title go bona gore jaang.", + "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!": "Kakgolo, o tladitse @data.workshop.w_safe.in_text_title. Tirelothuto e ntšhwa e go letile kamoso go thusa lelapa la gago go mekamekana le seemo sengwe le sengwe - Mmogo lo ka dira go le gontsi!", + "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.": "Fetsa @data.workshop.w_safe.in_text_title pele o tswela pele. Seno se ka thibela mathata a le mantsi.\n\nTiro e ntle go dirisa @global.parent_app go tshegetsa lelapa la gago.", + "This week is about YOU! Treat yourself well. You deserve it!": "Beke eno ke ya GAGO. Itshware sentle. Seo se go tshwanetse!", + "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Simolola @global.parent_app tirelothuto e ntsha kamoso. O tla bona pholo e ntle!", + "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Gopola go bolelela balekane @global.parent_app ka app eno. Kamoso, o ka simolola go dira @global.parent_app ditirwana mmogo!", + "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.": "Dumela @fields.user_name! O dira tswelopele e ntle tota!\n\nGo nna le mosha go raya gore go nna le mathata a le mantsi a a sa solofediwang. Tirelothuto eno e tlile go go bontsha gore o ka mekamekana le ona jaang.", + "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Dumela @fields.group_name! O dira tswelopele e ntle tota!\n\nGo nna le mosha go raya gore go nna le mathata a le mantsi a a sa solofediwang. Tirelothuto eno e tlile go go bontsha gore o ka mekamekana le ona jaang.", + "Your commitment is inspiring. Keep calm and carry on!": "Maitlamo a gago a rotloetsa. Ritibala mme o tswelepele!", + "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.": "Mathata a a sa solofelwang a tlhagelela fa re na le basha.\n\nIthute tsela ya go buisana ka ona mo tirelothuto e e lateng.", + "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.": "O mo tseleng ya nnete go rarabolola mathata le mosha wa gago!\n\nTlatsa @data.workshop.w_solve.in_text_title go oketsa bokgoni jwa gago jwa botsadi.", + "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Lekelela dikgato di le nne tsa go rarabolola mathata le mosha wa gago.\n \nA ITSE, A RARABOLOLE, E LEKE, E TLHATLHOBE!", + "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Bontle! O tladitse @data.workshop.w_solve.in_text_title. Kamoso, tirelothuto e ntšhwa e a notlologa go go thusa go tshola mosha wa gago a babalesegile.", + "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.": "Tsena go tirelothuto e ntšhwa kamoso!\n\nKa go tlatsa @data.workshop.w_solve.in_text_title lantlha, O tlile go itse go rarabolola mathata mmogo.", + "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Dumela @fields.user_name! Kakgolo ka go simolola beke ya 5.\n\nTirelothuto e ntšhwa e go emetse ka dikgakololo tsa go nna o ritibetse ebile o laola fa basha ba re tlhakanya tlhogo.", + "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.": "Dumela @fields.group_name! Kakgolo ka go simolola beke ya 5.\n\nTirelothuto e ntšhwa e go emetse ka dikgakololo tsa go nna o ritibetse ebile o laola fa basha ba re tlhakanya tlhogo.", + "Manage anger and stress with this new workshop. It helps you take better care of yourself.": "Laola kgalefo ya gago kgatelelo ya maikutlo ka tirelothuto e ntšhwa. E go thusa go itlhokomela botoka.", + "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.": "A o ikutlwa o tlalelane? Go hemela kwa teng go a thusa.\n\nTlatsa @data.workshop.w_stress.in_text_title go go thusa go mekamekana le kgatelelo ya maikutlo.", + "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.": "A o ikutlwa o na le kgatelelo ya maikutlo beke eno? Leka go hemela kwa teng pele o araba mosha wa gago - E dira pharologanyo e kgolo.", + "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.": "Tiro e ntle ka go hemela kwa teng pele o araba mosha wa gago! Nako nngwe le nngwe fa o ema go se kae, o boela o nna fa taolong.", + "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!": "Tiro e ntle ka go tlatsa @data.workshop.w_stress.in_text_title. Kamoso, tsena go tirelothuto e ntšhwa go go thusa go itapolosa le go aga bokgoni jo bo nang le boleng!", + "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!": "Itukisetse tirelothuto e ntšhwa kamoso.\n\nka go tlatsa @data.workshop.w_stress.in_text_title lantlha, o baya motheo o botlhokwa: fa o ikutlwa sentle, le lelapa la gago le tlile go dira jalo!" } \ No newline at end of file diff --git a/packages/app-data/translations/za_xh/strings.json b/packages/app-data/translations/za_xh/strings.json index 1de375b8e6..c615cc6f6d 100644 --- a/packages/app-data/translations/za_xh/strings.json +++ b/packages/app-data/translations/za_xh/strings.json @@ -1,8 +1,96 @@ { + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Buzanani, “Yintoni ekwenze wonwaba namhlanje?”\n* Buzanani, “Yeyiphi ingxaki oye wanayo namhlanje?”\n* Buzanani, “Ndingakunceda njani?”\n* Zamani ukwenza le nto nonke yonke imihla; ninokuyenza xa nisitya kunye isidlo sangokuhlwa okanye ngaphambi kokulala.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "Buza umntwana wakho ofikisayo ukuba angathanda ukutya isidlo esinjani. \n* Senzeni nobabini! \n* Mvumele ibe nguye umpheki oyintloko – nguye okhokelayo kwaye wena ulandela imiyalelo yakhe. \n* Unokumnceda nokuba enze ibhajethi yezinto eziza kuthengwa xa kuphekwa! \n\nUcinga ukuba ayizusebenza? Buza abantwana bakho abafikisayo ukuba BAFUNA ukuba nenze ntoni kunye. Bayeke bakhokele. Phola. Yonwaba.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Vuthululani izandla zenu zasekhohlo emoyeni izihlandlo ezi-8 ngoxa nibala ukuya kutsho ku-8.\n* Yenzani ngokukhawuleza kwaye ningxola kangangoko ninako.\n* Phindani nangesinye isandla. Phindani ngeenyawo zombini.\n* Yenzani kasi-7, emva koko kasi-6 nize niqhubeke nide nifike ku-1.\n* Wonke umntu ukhwaza athi “Inkukhu ephambeneyo” emva koko nidanise ngathi yinkukhu ephambeneyo!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Makujuxuzwe ngendlela athanda ukujuxuza ngayo umntwana wakho ofikisayo. \n* Umntu omnye uyajuxuza baze abanye balinganise yena. \n* Wonke umntu unetyeli lokukhokela. \n* Yenzani phambi kwakhe wonke umntu osekhayeni lenu!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Lo mdlalo umnandi xa udlalwa ngabantu abangaphezu kwaba-2\n* Umntu omnye wenza ngathi wenza into ethile – ngokomzekelo, ukama iinwele okanye upheka isidlo sangokuhlwa. \n* Omnye umntu ubuza athi, “Wenza ntoni?”\n* Umntu wesibini kufuneka athethe into engadibaniyo nokukama iinwele, ngokomzekelo athi, “Ndibopha imitya yezihlangu zam” \n* Umntu wesibini uqalisa ukwenza ngathi ubopha imitya yezihlangu zakhe de omnye umntu ambuze, “Wenza ntoni?” \n\nImpendulo kufuneka isoloko ingeyiyo le nto ayenzayo loo mntu!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Awunakusoloko useluhambeni ngalo lonke ixesha, kodwa unako ukuba namaphupha! Buza umntwana wakho ofikisayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluyaphi? Uza kuhamba ixesha elide kangakaani? Uza kupakisha njani? Yintoni onokuyenza kolo hambo? Yintoni onokuyibona?\nJongani kunye kwimephu okanye niyizobe.\n* Khetha ilizwe angalaziyo umntwana wakho ofikisayo nize nifunde ngakumbi ngalo.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Khethani umdlalo okanye indlela yokujima eninokuyenza kunye. Gqibani ngocwangciso. Ngaba niza kuyenza yonke imihla? Kangangexesha elingakanani? \n\nYizameni kangangeveki. Ekupheleni kweveki, buza wena kunye nentsapho yakho le mibuzo:\n* Ihamba njani? \n* Benivakalelwa njani ekuqaleni kweveki? \n* Nivakalelwa njani ekupheleni kweveki? \n* Yintoni esinokuyenza ngokwahlukileyo kwiveki ezayo?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena nomntwana wakho ofikisayo ningenza uluhlu lokuqikelela abantu abadumileyo belo lizwe neningathanda ukubamemela kwitheko lenu. Ngamnye kuni angamema abantu abahlanu – bangaba baphila kule mihla okanye babe ngabakudala. Ngoobani eninokubamema? Ngaba iindwendwe zingavana?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Ncokola kunye nomntwana wakho ofikisayo malunga nento ayithandayo.\n\nIsenokuba yiyo nantoni na abakhetha ukuncokola ngayo: imidlalo, iitshomi, umculo, oosaziwayo.\n\nZama ukummamela umntwana wakho uze umvumele athethe.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Cingani ngeendlela ezintathu zokujima. Ngokomzekelo, ukuhamba, ukunkcunkca, ukudlala ibhola okanye ukudanisa.\n* Khethani kunye ibe nye nize niyizame. \n* Ukuba nobabini niyayithanda, gqibani ngokuba niza kuyenza kangaphi. Kanye okanye kabini ngeveki? Qho ngentseni?\n* Ninobabini, cingani ngendlela yokuyenza ibe mnandi nangakumbi. Ningankcunkca niyokutsho kwindawo ethile? Mhlawumbi nitshintshisane ngokuba ngumqeqeshi? Nikhuthazane ngomvuzo omncinci wasimahla?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Tshintshanani ngokuba “yinkokheli”. Thethani amagama okuqala ukuze wonke umngu angene. Emva koko, “inkokheli” ikhupha umyalelo kwaye wonke umntu wenza loo nto ngokukhawuleza okunokwenzeka.\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bamba into ebomvu.” \n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Xhuma, xhuma izihlandlo ezilishumi.”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bekani izihlangu kwindawo ehlala izihlangu.”", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Khetha umntu obalisa ibali ukuze aqalise ukulibalisa.\n* Abantu abalimameleyo bangasebenzisa naliphi igama ukuze bangenelele nanini na.\n* Umntu obalisayo kufuneka asebenzise elo gama kwibali alibalisayo.\n* Xa ibali ligqityiwe, makubalise omnye umntu!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qalisa ibali ngokuthi, “Ngaminazana ithile kwaye kukho...”\n* Vumela umntwana wakho ofikisayo athethe into elandelayo.\n* Emva koko ugqibezela isivakalisi.\n* Tshintshanani nide nibe nebali elitsha elimnandi.\n* Qinisekisa ukuba ibali liphela kamnandi. *\nBuza umntwana wakho ofikisayo ukuba yeyiphi indawo ayithandileyo kwibali!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Umntu wokuqala uthi, “NgoMgqibelo ndiya...(umz., epakini)”\n* Umntu wesibini wongeza kwinto ethethwe ngumntu wokuqala athi, “NgoMgqibelo ndiya epakini kwaye... (umz. ndiyokutyelela umhlobo wam osenyongweni).\n* Umntu ngamnye wongezelela kwinto ethethwe ngumntu wokugqibela, nizama ukucinga ngazo zonke izinto ezimnandi ezinokwenziwa ngoMgqibelo.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Lo mdlalo ungadlalwa ngabantu ababini okanye ngabantu abaninzi kwiqela.\n* Yimani isangqa nize nijongane. \n* Umntu omnye uyakhokela baze abanye bamlinganise bezama ukushukuma ngexesha elifanayo nenkokheli.\n* Qinisekisa ukuba inkokheli ayikhawulezi ukuze abanye bakwazi ukuyilinganisa! Jongani amalungu omzimba ashukumayo ngamanqanaba ahlukahlukeneyo.\n* Emva kwethutyana, tshintshani inkokheli. Wonke umntu makabe nethuba lokukhokela.\n* Zamani zingekho iinkokheli!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Umntu wokuqala uza kukhetha ingoma okanye akhethe ukuyicula.\n* Wonke omnye umntu umele aqashisele igama lengoma (ukuze niyeze ibe nzima, angaqashisela nomntu oyiculayo).\n* Umntu wokuqala ukuqashisela ngokuchanileyo kuza kukhokela yena.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Lo mdlalo umnandi ngakumbi xa kukho abantu aba-3 ubuncinane.\n* Qalisani kwisangqa uze ugqithise “ibhola” kube kanye esangqeni (okanye “uqhwabe xa ungakwazi ukujula).\n* “Ujula” kube kanye ukuze ujule “ibhola”, uze uyibambe kube kanye. Mjonge umntu omphoselayo. \n* Indlela oyiphosa ngayo (phezulu, ezantsi, ngqo, ngasecaleni, iqengqeleka phantsi) kunye namandla (ngamandla kakhulu, ngokuthambileyo) imele ichaphazele indlela ayibamba ngayo umntu. \n* Unokuyigqampisa “ibhola”, uyijule emoyeni uze uyibambe kambalwa ngaphambi kokuba uyidlulisele komnye umntu. \n* Xa umntu wonke sele eqhelene noku, unokuqalisa ukujikeleza kwigumbi usajula “ibhola”. \n* Ungakwazi ukuyijula ngaphantsi komlenze? Ngemva komqolo? Entla kwentloko yakho? Ukuyibamba ngaphambi kokuba ifike komnye umntu? Nikonwabele ukudlala “ngebhola”!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Ekupheleni kosuku, thatha umzuzu ukuze: \n\n* Uncokole nomntwana wakho ngento enye emnandi ayenzileyo. \n* UzIncome ngokwenza into enye kakuhle namhlanje. \n*Uligqala!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Cinga ngokuba namandla angaphezu kwemvelo. Ngokomzekelo, ukuya naphi na ngoko nangoko, ukubuyela emva kwixesha lakudala. \n* Buza umntwana wakho ofikisayo ukuba, “Xa ubunamandla angaphezu kwemvelo oku[...], ubungawasebenzisa njani?”\n* Mkhuthaze ukuba anike eli qhawe linamandla angaphezu kwemvelo igama aze enze loo nto beliza kuyenza. \n* Ngoku cela umntwana wakho ofikisayo akukhethele amandla angaphezu kwemvelo onokuba nawo.\n* Qinisekisa ukuba nawe uyabonisa ukuba ungawasebenzisa njani amandla akho nagaphezu kwemvelo!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Cinga ngeemeko ezintathu ezahlukahlukeneyo. Ngokomzekelo, ukuqhuba imoto, ukukhwela isikhitshana okanye ukubhabha ngenqwelo ntaka.\n* Chazela umntwana wakho ngezi zinto uze umbuze, “Yeyiphi onokuyikhetha?”\n* Mbuze ukuba kutheni ekhetha leyo?\n* Ngoku cinga ngeemeko ezintathu ezingakumbi okanye ucele umntwana wakho ofikisayo akwenzele.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Balisela umntwana wakho ofikisayo ngezinto zangokuya wawungangaye. Ziintoni ezazingekho ngoko? Ifowuni ezingena kwi-intanethi? Wawusenza ntoni xa uzonwabisa? Yintoni eyayikuxhalabisa? Ungabi naxhala xa bengathethi nto emva kokuba ubaxelele ngawe -– into ebalulekileyo kukuba bamamele kwaye baza kukhumbula. Ngamanye amaxesha, abantwana bethu abafikisayo bayalibala ukuba abazali babo nabo ngabantu!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Cinga ngezinto ezintathu ezinokuthethwa ngawe. Ezimbini kuzo zimele zibe yinyani kwaye enye yazo ibe bubuxoki.\n* Kunganceda ukucinga ngezinto ozinqwenelayo, amaphupha akho, amava asesikolweni, izinto ozithandayo okanye ongazithandiyo. Ngokomzekelo: Ndiyazicaphukela iibhanana, isifundo endisithandayo yisayensi kwaye ndikunqwenela kakhulu ukukwazi ukucula. \n* Zixelele umntwana wakho ofikisayo uze umbuze ukuba yeyiphi engoyonyani kwezi. \n* Ngaba uchanile xa ebeqashisela? Ngaba imothusile?\n* Ngoku mcele enze into efanayo. Ikhona into entsha eniyifundileyo komnye nomnye?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Cinga ngesakhono esitsha onokusifunda kunye nomntwana wakho ofikisayo. Ngokomzekelo, ukuteka ibhola okanye ukuyibamba ngonyawo lwakho ingawi, ukujula iibhola phezulu uze uzibambe, ukwenza isuphu?\n* Tshintshanani nize nizame ukwenza isakhono esitsha.\n* Qinisekani ukuba niyancomana, nize nizame ukufunda nokudlala kunye!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Buzanani imibuzo. Ingayimibuzo emalunga nezinto ozithandayo okanye ozenzileyo namhlanje.\n* Umthetho mnye qha kukuba awunakuphendula uthi, “Ewe” okanye “Hayi” okanye uthi, “Mhlawumbi.”\n* Niza kuyenza kangangexesha elingakanani? Iimpendulo zakho zingacingisiswa kangakanani?\n* Tshintshanani nize nidlale kwakhona!", + "Home": "Iphepha Lokuqala", + "Settings": "Iisetingi", + "Template": "Itemplethi", + "In-Week Messages": "Imiyalezo Yeveki ", + "Campaigns": "Amaphulo", + "Notifications": "Izaziso", + "You have successfully entered developer mode.": "Ungene ngempumelelo kwimowudi yomphuhlisi.", + "You have entered an incorrect code.": "Ufake ikhowudi engachananga.", + "About @global.parent_app": "Malunga", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app yaphuhliswa yiParenting for Lifelong Health (PLH) - intsebenziswano yehlabathi lonke phakathi kweengcali zobuzali ezivela kwi-UNICEF, i-WHO kunye neeYunivesithi zaseMzantsi Afrika nase-UK, kunye nee-NGO zase-Afrika kunye neentsapho kunye nolutsha kwi-Afrika iphela. Abazali kunye nabantwana abafikisayo basebenze nathi kwi-app kwaye bancedise ekuqinisekiseni ukuba kulula ukuyisebenzisa, imnandi kwaye iyabandakanya. Enye ikhontenti kule app, njenga macebiso kwizinto ezinokwenziwa kunye namabali anemifanekiso, yenziwe nabazali kunye nabantwana abafikisayo ukuqinisekisa ukuba iyahambelana nemfuno zentsapho\n\ni-Parenting for Lifelong Health (PLH) izibophelele ekuxhaseni izixhobo nenkqubo ezisimahla nokwabelwana ngazo zobuzali, ukuxhasa abazali kwihlabathi jikelele ukukhuthaza impilo-ntle yabantwana babo.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ngokucofa eli qhosha lingezantsi uza kubuyisela i-app kwiisetingi zayo zakuqala. \n\nOku kuthetha ukuba yonke inkqubela osowuyenzile nedatha yokusetyenziswa iya kucinywa kwaye i-app yakho iya kusebenza ngokungathi isanda ku-instolwa okokuqala.\n\nPHAWULA: Ukuyiseta kwakhona i-app kusisigxina kwaye awuyi kukwazi ukubuyisela nayiphi na inkcazelo.", + "Open Survey": "Isaveyi Evulekileyo", + "Select Language": "Khetha Ulwimi", + "Workshop Options": "Iinketho Zocweyo", + "Reset App": "Setha kwakhona i-App", + "Demo Presentation": "Iprezenteyishini yedemo", + "Organisation Registration": "Ukubhaliswa Kombutho", + "Developer Mode": "Imowudi Yomphuhlisi", + "Unlock all workshops": "Vula lonke iindibano zocweyo", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ngokucofa eli qhosha lingezantsi uya kuvula lonke iindibano zocweyo.\n\nQAPHELA: Abasebenzisi akufuneki basebenzise lo msebenzi ukuvula iindibano zocweyo, oku akucetyiswa ngaphandle kokuba kunyanzelekile.", + "Unlock workshops": "Vula iindabano zocweyo", + "All workshops are now unlocked.": "Lonke iindabano zocweyo uvela luvuliwe ngoku.", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ukufelwa ngumntu omthandayo kunokuvakala kukoyisa kakhulu. Nanga amacebiso ambalwa asebenzayo anokuba luncedo ukuwakhumbula.", + "Ask for help": "Cela uncedo", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Cela umntu omthembileyo ukuba akuncede - ukutya okanye ukhathalelo lwabantwana kunokuba luncedo. Unokufuna amaxwebhu elifa, abantwana bakho, okanye ukufikelela kwiinkonzo.\n- Ngamanye amaxesha abantu bazama ukuthatha imali okanye ilifa kumntu osentlungwini. Fumana malunga namalungelo wakho.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "Ukuvalelisa kunzima. Yenza oko kubonakala kulungile kuwe nakumntwana wakho.\n- Iintsapho, abantwana kunye nabazali abafezekanga. Xa umntu efile, kulungile ukuthetha ngezinto ezilungileyo nezimbi esizikhumbulayo.\n- Kunganceda ukubhala ileta okanye ukwenza umzobo womntu omkileyo.\n- Abanye abantu benza umsitho okanye benze isidlo esikhethekileyo sokubhiyozela umntu, kwaye bathi ndlela ntle.\n- Inokukunceda ukwenza ibhokisi yeenkumbulo, ukubeka izinto ezikukhumbuza wena kunye nomntwana wakho ngalomntu.\n- Inokukunceda ukuthetha malunga ngalomntu xana ucinga ngaye.", + "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Ukulahlekelwa ngumhlobo okanye othandekayo kunzima kumntu wonke. Ukuba nobubele kuwe kunye nokwenza izinto zokuzinceda uhlangabezane neli xesha linzima kunceda nomntwana wakho ofikisayo!", + "Find a support group": "Fumana iqela lenkxaso", + "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Intlungu inokusichaphazela kangangeeveki okanye iinyanga okanye iminyaka. Akuyomfuneko ukuba uzive ubhetele ngokukhawuleza.\n- Lala ngokwaneleyo kunye nokutya - kunzima ukukhathalela abantwana xana udiniwe kwaye ulambile.\n- Yenza uluhlu lwezinto ezikwenza uzive ngcono, kwaye uzenze.\n- Zama ukwenza into enye elula yokuphumla yonke imihla nomntwana wakho ofikisayo, kunye nawe ngokwakho.\n- Kulungile ukuziva ulungile kwaye kulungile ukukhala. Ungaze uzibeke ityala, ayilotyala lakho eli.\n- Kuhlala kukho ithemba nasemva kokulahlekelwa. Zama ukonwabela izinto ezilula, kwaye uthathe umzuzu ukwenza into emnandi okanye ukuphumla nomntwana wakho.\n- Fumana umntu omdala omnye okanye ababini abanokukuxhasa, bakumamele, kwaye bathethe.", + "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ukuthetha nomntu onokukuxhasa kwaye akumamele kunokunceda. Kunokunceda kananjalo ukuzimanya neqela labantu abalahlekelwe ngabantu nabo. Khumbula ukuba akukho mntu ugqibeleleyo. Kulungile ukuthetha ngamaxesha amnandi namabi.", + "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Abantwana abafikisayo bajongana nelahleko ngeendlela ezahlukeneyo, njengabantu abadala. Ungabanceda baqonde imeko kunye neemvakalelo zabo ngokudala iindawo ezikhuselekileyo apho unokwabelana nobabini kwaye niqhubeke.", + "Be honest": "Nyaniseka", + "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "Xelela umntwana wakho ukuba lomntu uswelekile - ngamanye amaxesha akaziqondi.\n- Ukuxelela yinkqubo, hayi isiganeko. Kusenokufuneka ubaxelele ngokuphindaphindiweyo.\n- Sebenzisa amagama abawaqondayo.\n- Ukuba abantwana basebancinci akayiqondi ukuba yintoni ukufa, nceda uchaze ukuba umntu omthandayo akabuyi. Zama ukuba ungabizi 'ukulala' okanye 'uhambo lokuhamba'.\n- abantwana abadala bangakuqonda ukuba yintoni ukufa, kodwa banokuba nzima ukwabelana okanye ukuphatha iimvakalelo zabo.\n- Abantwana banonokuphendula ngeendlela ezahlukeneyo: ukukhala, ukukhwaza, ukungakholelwa okanye ukuzola kakhulu. Zonke ezi zinto zilungile. Baxelele ukuba ukunye nabo.\n-Vumela imibuzo kunye nokuthetha. Nyaniseka. Kulungile ukutsho xana singazi.", + "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "- Abantwana banokuba lusizi, nomsindo, bangayiqondi okanye bangakholelwa, baziva ndindisholo, bangaziva kamnandi okanye babe neentlungu, amaphupha amabi okanye iingxaki esikolweni. Umntwana wakho ofikisayo usenokubonakala onwabile, kodwa abe buhlungu. Basenokuzivale baze bafune ukuchitha ixesha elingakumbi nabahlobo. Basenokubonisa indlela yokuziphatha engalindelekanga okanye eyingozi. Ezi zisenokungabi nangqiqo kuwe, kodwa konke oku kuqhelekile.\n- Abantwana banokuziva ngathi lityala labo - ukuba baye bosulela intsholongwane, okanye baziphathe kakubi. Baxelele ngokucacileyo ukuba akukho nto iphosakeleyo bayenzileyo.", + "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Cacisa ukuba intlungu iza neemvakalelo ezininzi kunye neempendulo. Bonisa umntwana wakho ukuba uyathandwa kwaye uyakhathalelwa, kwaye umkhuthaze ukuba abelane ngeemvakalelo zakhe ngokuthetha, ukubhala okanye ukuzoba.\n- Ukuba kukho iqela lenkxaso umntwana wakho anokuba yinxalenye yalo, oku kunganceda.\n- Ukuba umntwana ofikisayo uthetha ngokufuna ukuzenzakalisa okanye ukuzibulala, cela uncedo komnye umntu ngokukhawuleza kangangoko unako.\n- Ukuba unako, gcina inkquboi yakho yesiqhelo yemihla ngemihla, oku kunokuba yintuthuzelo kwabaselula.\n- Kunganceda ukuba abantwana bakho babe yinxalenye yezithethe malunga nokufa - ukukhetha ingoma okanye into yokuthetha.\n- Ukuchitha imizuzu embalwa yonke imihla ugxile kumntwana wakho ofikisayo kunceda ukumenza azive ekhuselekile kwaye umnike ithuba lokuphumla okanye ukuthetha ngezinto ezimkhathazayo.", + "How did it go?": "Luhambe njani?", + "Reply": "Phendula", + "Timer": "Isibali xesha", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Cofa unxa-ntathu ukuze ukwazi ukugcina le ncoko ku-@local.timer_duration ngemizuzu.", + "Video": "Ividiyo", + "You selected less than @local.threshold": "Ukhethe ngaphantsi ko-@local.threshold", + "Start Positively Together": "Qalisani Kunye Ngendlela Ekhuthazayo", + "It's great to see you again! \n\nLet's start with caring for you.": "Kuluvuyo ukukubona kwakhona! \n\nMasiqalise ngokunyamekela wena.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Tshintshanani:\n* Yabelanani Uziva njani namhlanje?\n* Ncoma umntu okwiqela lakho ngento entle ayenzileyo kule veki!\n\nUkhumbule ukuba, kungakhathaliseki ukuba uziva njani, kumnandi ukukubona ulapha. Nifanele kukunconywa xa ninonke.", + "We all have negative thoughts sometimes.": "Sonke sikhe sibe neengcinga ezimbi ngamanye amaxesha.", + "\"I am a failure\"": "Ndingohlulekileyo", + "What to do?": "Kwenziwe ntoni?", + "Examples": "Imizekelo", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ukuzixelela wena okanye umntwana wakho ukuba uyeke okanye uthethe into eyahlukileyo amaxesha amaninzi akuncedi.", + "\"I do everything perfectly\"": "\"Ndenza yonke into ngokugqibeleleyo\"", + "Instead, you can ask:": "Endaweni yoko, unokubuza:", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Ngaba ingcinga iyinyani? Zeziphi ezinye iingcaciso?\n- Kwenzeka ntoni ukuba ndiqhubeka ndikholelwa kule ngcamango?\n - Ndingamxelela ntoni umhlobo ukuba unale ngcinga?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Oku kunzima, kodwa uzama ngako konke okusemandleni akho, kwaye siza kusebenza kunye ukufumana isisombululo\"", + "\"It’s your fault\"": "\"Lityala lakho\"", + "\"Let’s come up with a solution together\"": "\"Masize nesisombululo kunye\"", + "\"I lost my job\"": "\"Ndiphelelwe ngumsebenzi\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Ndifunde okuninzi emsebenzini wam - oko kuya kundinceda ndifumane omnye\"", + "\"Nobody likes me\"": "\"Akhuko mntu undithandayo\"", + "\"Last week I did have a great time with...\"": "\"Kwiveki ephelileyo ndibe nexesha elimnandi no ... \"", + "\"Bad things always happen to me\"": "\"Izinto ezimbi zihlala zisenzeka kum\"", + "\"This good thing happened the other day...\"": "\"Le nto intle yenzeka ngenye imini...\"", + "Change": "Utshintsho", + "You’ve completed this week’s workshop.": "Ulugqibile uqeqesho lwale veki.", + "See you soon.": "Masiphinde sikubone kungekudala.", + "You can always find these tools in the @global.parent_centre": "Unokuzifumana ngalo lonke ixesha ezi zixhobo kwi-@global.parent_centre", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Kwiveki ezayo, uza kuxelela iqela lakho ukuba zihambe njani izinto xa ubuqhelisela ekhaya. Ebudeni beveki, ninako nokukhumbuzana nize nixhasane.", "Home Practice": "Uqheliselo Lwasekhaya", "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Izenzo ezincinane, iziphumo ezinkulu! Abazali abaqhelisela izakhono zabo zoqeqesho xa besekhaya bafumana iziphumo ezigcono.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Kwiveki ezayo, uza kuxelela iqela lakho ukuba zihambe njani izinto xa ubuqhelisela ekhaya. Ebudeni beveki, ninako nokukhumbuzana nize nixhasane.", - "How did it go?": "Luhambe njani?", "talk to their teens about how they feel": "bathetha nabantwana babo abafikisayo malunga nendlela abavakalelwa ngayo", "talk to your teen about how you feel": "thetha nomntwana wakho malunga nendlela ovakalelwa ngayo", "Did you experience any challenges when trying to @local.hp_description_second_singular?": "Ngaba uye wanayo imiceli-mngeni xa ubuzama uku @local.hp_description_second_singular?", @@ -13,75 +101,92 @@ "Sorry to hear the tips did not help you.": "Sibuhlungu ukuva ukuba amacebiso khange akuncede.", "Do you want to share with us what you think would help you?": "Ngaba ufuna ukusichazela ukuba ucinga ukuba yintoni enokukunceda?", "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Enkosi ngokwabelana! Ungumzali ogqwesileyo ngokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo. Oko kwenza wonke umahluko. Qhubeka usenza umsebenzi omhle kwaye ungalibali ukuba ndisoloko ndikhona ukuze ndikuxhase!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Nazi izakhono eziphambili kule veki! \n\nZisebenzise xa usekhaya kwaye ungazifumana nanini na kwi-@global.parent_centre yakho.", - "Relax Together": "Masiphumle Sonke", - "Relax": "Phola", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Masenze kunye into yokuzipholisa – iza kuthatha ngaphantsi komzuzu oyi-1 kwaye uza kuziva phole ngakumbi.", - "Add this activity to @global.my_relaxes": "Faka oku kwenziwayo kwi-@global.my_relaxes", - "Listen and relax": "Mamela uze uphole", - "Read and relax": "Funda uze uphole", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Ungu ngqa phambili!\n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole.", - "Welcome @fields.user_name": "Wamkelekile @fields.user_name", - "It's great to see you again!": "Kuluvuyo ukukubona kwakhona!", - "Let's see how this week has been.": "Makhe sibone ukuba ihamba njani iveki.", - "This week you have done...": "Kule veki uye wenza...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Ubonisa ukuzimisela okukhulu ekubeni ngumzali nasekuzinyamekeleni. \n\nUgqwesile.", - "Watch Together": "Bukelani Kunye", - "Let's watch a video together!": "Masibukele ividiyo kunye!", - "Watch": "Bukela", - "Let's watch a video!": "Masibukele ividiyo!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Kuluvuyo ukukubona kwakhona! Masiqalise ngengoma yeentsapho nokuba ziphi.", - "Let's Slow Down": "Masithobe Isantya", - "You’ve completed this week’s workshop.": "Ulugqibile uqeqesho lwale veki.", - "See you soon.": "Masiphinde sikubone kungekudala.", - "Talk Together": "Thethani nonke", - "Share ideas, support each other!": "Yabelanani ngamacebiso, xhasanani!", - "Try it Together": "Yizameni Kunye", - "Let's practice together.": "Masiziqhelanise sonke.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ukuziqhelanisa ekhaya yindlela esibenza bube ngcono ngayo ubomi bentsapho yethu. Kodwa kudla ngokubakho imiceli-mngeni. \n\nMasincokole ngeempumelelo kunye neengxaki zethu size sincedane ukuze sibe namacebiso amatsha esinokuwazama!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola: \n* Yintoni ehambe kakuhle ibe yintoni eye yanzima? \n* Zeziphi izisombululo eninokucinga ngazo? \n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", - "Discussion example from @data.workshop.w_1on1.title": "Umzekelo wengxoxo esuka @data.workshop.w_1on1.title", - "Start Positively Together": "Qalisani Kunye Ngendlela Ekhuthazayo", - "Welcome @fields.group_name": "Wamkelekile @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Kuluvuyo ukukubona kwakhona! \n\nMasiqalise ngokunyamekela wena.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Tshintshanani:\n* Yabelanani Uziva njani namhlanje?\n* Ncoma umntu okwiqela lakho ngento entle ayenzileyo kule veki!\n\nUkhumbule ukuba, kungakhathaliseki ukuba uziva njani, kumnandi ukukubona ulapha. Nifanele kukunconywa xa ninonke.", - "Ideas from other families:": "Amacebiso avela kwezinye iintsapho:", - "Question Time": "Ixesha Lemibuzo", - "It's time for some questions!": "Lixesha lemibuzo!", - "Listen Together": "Masimamele Sisonke", - "Let's listen to an audio together!": "Masiyimameleni sonke le nto imanyelwayo!", - "Listen": "Mamela", - "Let's listen to an audio!": "Masimameleni i-audio!", - "Why @local.workshop_data.title?": "Kutheni iyi-@local.workshop_data.title?", - "Hear Sbo's message": "Yiva umyalezo kaSbo", - "Read Sbo's message": "Funda umyalezo kaSbo", - "Today's steps": "Amanyathelo anamhlanje", - "Read Together": "Masifunde Sisonke", - "Let's read a story together!": "Masilifundeni kunye ibali!", - "Let's read a story!": "Makhe sifunde ibali!", - "Think Together": "Masicinge Sonke", - "It's time to think together!": "Lixesha lokuba sicinge sonke!", - "Think": "Cinga", - "It's time to think!": "Lixesha lokucinga!", + "Language": "Ulwimi", "Learn Together": "Masifunde Kunye", "It's time to learn and practice together!": "Lixesha lokuba sifunde size siziqhelanise sonke!", "Learn": "Funda", "It's time to learn and practice!": "Lixesha lokuba sifunde size siziqhelanise!", - "Customise @global.parent_app": "Zivumelanise ne-@global.parent_app", - "Give me quick parenting tips": "Ndinike amacebiso akhawulezileyo okuba ngumzali", - "Something really bad happened": "Kukho into embi kakhulu eyenzekileyo", - "I have technical problems with the app": "Ndineengxaki zobugcisa nge-app", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Ngokusekelwe kwiimpendulo zakho xa ubuseta i-app, uza kuwafumana apha amacebiso esicinga ukuba angaluncedo kuwe.", + "Listen Together": "Masimamele Sisonke", + "Let's listen to an audio together!": "Masiyimameleni sonke le nto imanyelwayo!", + "Listen": "Mamela", + "Let's listen to an audio!": "Masimameleni i-audio!", + "Hi @fields.user_name! This week you did:": "Molo @fields.user_name! Kule veki uye wenza:", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", + "That’s wonderful!": "Kuyancomeka oku!", + "Nice work!": "Wenza umsebenzi omhle!", + "Your commitment is not taken for granted.": "Ukuzinikela kwakho akulolize.", + "Keep up the good work!": "Qhubeka nalo msebenzi mhle!", + "This is lovely!": "Oku kuyathandeka!", + "Tap yourself on the shoulder. You deserve this.": "Ziqhwabele izandla. Ukufanele oku.", + "Every @global.parent_point counts!": "I@global.parent_point nganye uyabala!", + "Relax now": "Phola ngoku", + "Did you relax already? Tap it!": "Ngaba sowupholile? Yicofe!", + "Here is a fun activity to do with your teen!": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", + "Continue @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Qalisa i-@local.workshop_data.in_text_title", + "Finish current workshop": "Gqiba uqeqesho lwangoku", + "How did you hear about @global.parent_app?": "Uve njani malunga ne @global.parent_app?", + "Other": "Enye indlela", + "I found it myself": "Ndiyifumanisile ngokwam", + "A friend or family": "Umhlobo okanye usapho", + "Quick Parenting Tips": "Iingcebiso Ezikhawuleziyo Zokuba Ngumzali", + "Raising teens can be hard, and we all struggle sometimes.": "Ukukhulisa abantwana abafikisayo kunganzima, kwaye sonke siyoyisakala ngamanye amaxesha.", + "What is the main challenge you are experiencing right now?": "Loluphi ucelomngeni oluyintloko ojongene nalo ngalo mzuzu?", + "My relationship with my teen is not good": "Ulwalamano lwam nomntwana wam ofikisayo aluluhlanga", + "My teen’s behaviour is difficult": "Isimilo somntwana wam ofikisayo sixakile", + "I feel stressed, lonely, angry": "Ndiziva ndinoxinezelelo, ndindodwa, ndinomsindo", + "I have money worries": "Ndinamaxhala emali", + "I worry about my teen’s safety": "Luyandixhalabisa ukhuseleko lomntwana wam ofikisayo", + "We often fight in our family": "Sisoloko sisilwa kusapho lwethu", + "I have a different problem…": "Ndinengxaki eyahlukileyo…", + "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ukwakha ulwalamano olungcono kuqala ngokuchitha ixesha kunye - noba yimizuzu emi-5 ngosuku kwenza umahluko! Okokuqala, kunokuba nzima ukuchitha ixesha kunye, njengoko sonke sixakekile kwaye ulutsha lwethu lunokuba kwimudi engentle ngamanye amaxesha. Kodwa ukuchitha noba yimizuzu emi-5 ngosuku lwexesha olijolise kumntwana wakho ofikisayo kuyanceda ekwakheni ukuthembana. Zama ukubuza umntwana wakho ofikisayo ukuba yintoni angathanda niyenze kunye. Inokuba mnandi kwaye ikuphumze nawe ngokunjalo!", + "You can get more support on how to spend one-on-one time with your teen here:": "Unokufumana inkxaso engakumbi ngendlela yokuchitha ixesha ninodwa kunye nomntwana wakho ofikisayo apha:", + "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Bonke abantwana abafikisayo bayageza ngamanye amaxesha! Eyona nto inokunceda kwisimilo sabantwana abafikisayo kukubancoma nanini na besenza into entle - nokuba incinci kangakanani na. Abantwana abafikisayo basenokungabonakali ngathi bafuna okanye bakhangela ukunconywa nguwe kodwa eneneni, bayafuna.", + "You can get more support here on how to encourage good behaviour through praising:": "Unokufumana inkxaso engakumbi apha malunga nendlela yokukhuthaza isimilo esihle ngokuncoma:", + "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Uxinezelelo lokuba ngumzali luphezulu ngeyona ndlela ngoku. Sazi kakuhle ukuba ubomi bunokuba nzima kangakanani. Ukuzenzela okuthile kungalunciphisa uxinezelelo lwakho. Ukufanelekele oku! Xa uziva ukhathazekile, lawula umzimba wakho ngokuwutsala ngamandla umoya ngokucotha, kahlanu ngaphambi kokuphendula. Abazali abaninzi bakufumanisa kuluncedo oku.", + "You can get more support on how to take care of yourself here:": "Unokufumana inkxaso engakumbi malunga nendlela yokuzikhathalela apha:", + "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Awuwedwa. Uxinezelelo lwemali lunzima kakhulu kubazali. Zama ukuthetha nomntwana wakho ofikisayo malunga nokuba yimalini engenayo nezinto enidinga ukuyisebenzisa kuzo njengosapho nyanga nganye. Oku kunokubanceda baqonde ukuba kutheni ungakwazi ukubathengela into abayifunayo. Yaye xa wonke umntu ekuqonda ukuba iyaphi imali, kulula ukuvumelana ngokuba yimalini eninokuyonga kunye!", + "You can get more support on how to budget and save here:": "Unokufumana inkxaso engakumbi ngendlela yokwenza ibhajethi uze wonge apha:", + "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Abantwana abafikisayo bachitha ixesha elininzi bengaphandle kwekhaya okanye besebenzisa i-intanethi, apho kunzima nangakumbi ukuba sibagcine bekhuselekile - abazali abaninzi kuyabakhathaza oku. Zama ukuqala incoko nomntwana wakho ofikisayo malunga neendawo ezikhuselekileyo nezingakhuselekanga kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi (kungafuneka ukuzame amatyeli ambalwa). Banokude bazi nezo wena ungazaziyo. Oku kuza kuqalisa ukukunceda nenze isicwangciso kunye sokuba uhlala njani ekhuselekile.", + "You can get more support on how to keep your teen safe here:": "Unokufumana inkxaso engakumbi ngendlela yokugcina umntwana wakho ofikisayo ekhuselekile apha:", + "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Xa kuvela ingxaki, zamani ukuthetha ngayo kunye. Yintoni kanye kanye ingxaki? Zeziphi izisombululo ezohlukeneyo ezikhoyo kwaye zeziphi iziphumo zaso ngasinye? Ngaloo ndlela, ungafumana isisombululo esinokuba SILUNGELE umntu wonke.", + "You can get more support on how to solve problems together here:": "Unokufumana inkxaso engakumbi malunga nokusombulula iingxaki kunye apha:", + "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Akululanga ukunyamekela iintsapho zethu. Sonke sinemiceli mngeni ngamanye amaxesha, kodwa siyathemba ukuba le app iza kukunceda uyoyise ngempumelelo. @global.parent_app isekwe kwiminyaka elishumi yamava eqhuba iinkqubo zobuzali eMzantsi Afrika, kwaye amawaka abazali bafumanise ukuba iingcebiso ekwabelwana ngazo ziyanceda kwimiceli mngeni emininzi yokuba ngumzali. Siyathemba ukuba le app iza kukunceda kunye nentsapho yakho.\n\nNazi ezinye zeengcebiso eziphambili nezingqiniweyo:", + "Start your first parenting workshop": "Qalisa uqeqesho lwakho lokuqala lokuba ngumzali", + "You will get more support in the @local.workshop_data.in_text_title.": "Uza kufumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", + "You can get more support in the @local.workshop_data.in_text_title.": "Ungafumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", + "Start the @local.workshop_data.in_text_title": "Qalisa i@local.workshop_data.in_text_title", + "Finish the @local.workshop_data.in_text_title to get more support.": "Gqiba i@local.workshop_data.in_text_title ukuze ufumane inkxaso engakumbi.", + "Continue the @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", + "Re-access the @local.workshop_data.in_text_title": "Phinda ungene kwi@local.workshop_data.in_text_title", + "CHAT": "NCOKOLA", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Yabelana ngendlela oziva ngayo, kwaye ukhuthaze umntwana wakho ukuba athethe ngezinto ezimkhathazayo. Niya kuqondana ngcono kwaye ninokwenza isicwangciso esilungileyo kunye ukuze nihlale nisempilweni kwaye nonwabile!", + "CAUTION": "ISILUMNKISO", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Fumana ulwazi lwakho kwimithombo ethembekileyo yolwazi, ukuze ube nokuzithemba kula maxesha angaqinisekanga. Siva kwaye sibona iindaba ezininzi ngabanye abantu kunye neefowuni, iTV, i-intanethi. Ingaba ikwenza uzive uthandabuza, ixhala, uloyiko, umsindo, okanye ukubhideka? Jonga ngaphambi kokuba wabelane okanye wenze!", + "CHOOSE": "KHETHA", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Ukwenza ukhetho olufanelekileyo olugcina wonke umntu esempilweni kwaye ekhuselekile kunokuba nzima. Ingakumbi kula maxesha! Unokumnceda umntwana wakho ofikisayo enze izigqibo ezifanelekileyo.", + "CHILL": "PHOLA", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Sonke siziva sicinezelekile ngamanye amaxesha. Thatha umoya onzulu okanye nenze into eyonwabisayo kunye. Kungenza umahluko omkhulu ukwenza ikhaya lakho lonwabe kwaye libe noxolo! Nazi ezinye iimbono onokuzizama:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Iingcinga ezingakhiyo zisenza sithethe size senze izinto ezimbi. Zama ukutshintsha into oyicingayo kwaye uyithethe ukusuka kwengalunganga ukuya kwelungileyo!", "WHO Website": "Iwebhusayithi ye-WHO", "UNICEF Website": "Iwebhusayithi ye-UNICEF", "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Ukuba ngumzali ngexesha ye-COVID kunzima. Zingce ngenxa yokuba ufikelele kule\n\nSisebenzela umxholo omtsha ozowufumana apha ukuze sikuxhase ukwazi ukuncokola nge-COVID kunye nabantwana bakho abancinane kunye nabo bafikisayo.\n\nLolona lwazi luhlaziyiweyo nge-COVID-19 inofumaneka kwiwebhusayithi ye-WHO kunye neye-UNICEF:", - "This button will take you to the Coronavirus section of the official WHO website.": "Eli qhosha liza kukusa kwicandelo le-Coronavirus kwiwebhsayithi esemthethweni ye-WHO.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "I-URL yile https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "This button will take you to the Coronavirus section of the official UNICEF website.": "Eli qhosha liza kusa kwincandelo lwe Coronavirus kwiwebhusayithi esemthethweni ye-UNICEF.", "The URL is https://www.unicef.org/coronavirus/covid-19": "I-URL yile https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Eli qhosha liza kukusa kwicandelo le-Coronavirus kwiwebhsayithi esemthethweni ye-WHO.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "I-URL yile https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "Update my parenting experiences": "Hlaziya amava am okuba ngumzali", "Update my personal details": "Hlaziya iinkcukacha zam zobuqu", "Update my workshop options": "Hlaziya inkhetho yam ye ndabano zocweyo", + "Give me quick parenting tips": "Ndinike amacebiso akhawulezileyo okuba ngumzali", + "Something really bad happened": "Kukho into embi kakhulu eyenzekileyo", + "I have technical problems with the app": "Ndineengxaki zobugcisa nge-app", + "You will find the in-week messages from the previous workshops here.": "Uza kufumana imiyalezo yeveki esuka kwindibano zocweyo ezidlulileyo apha.", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Awukafaki nto zenziwayo kwi @global.my_activities. Kutheni ungakhethi ezimbalwa?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Awukafaki nto eyenziwayo malunga nezenzo zokuzipholisa kwi @global.my_relaxes. Kutheni ungakhethi ezimbalwa?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Ngokusekelwe kwiimpendulo zakho xa ubuseta i-app, uza kuwafumana apha amacebiso esicinga ukuba angaluncedo kuwe.", + "Relaxation activities": "Izenzo zokuzipholisa", + "Something fun to do with your teen": "Izinto ezonwabisayo onokuzenza nomntwana wakho ofikisayo", "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Ngaba uhlangabezana neengxaki zobuxhakaxhaka? Sazise kwaye uncedise ekwenzeni i-@global.parent_app ibe ngcono!", "Type your name (optional)": "Bhala igama lakho (akunyanzelekanga)", "Type your phone number": "Chwetheza inombolo yakho yomnxeba", @@ -90,910 +195,24 @@ "Tell us about your issue": "Sixelele nge ngxaki yakho", "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Ngoku umama wayeqala undibuza ukuba ndiyafuna na ukuchitha ixesha naye, ndamxelele ukuba makandiyeke ngenxa yokuba ndandiphakathi nomdlalo wam. Kodwa wanyanzelisa njengoko ehlale esenza. Ndathi angandibukela xa ndidlala ukuba yilonto ayifunayo. Emva kwemizuzu embalwa, waqalisa ukundibuza imibuzo ngokuphathelene nomdlalo. Ekuqaleni, yayicaphukisa lonto kodwa emva kwethutyana yandivuyisa into yokuba wade wanomdla kwinto endiyenzayo. Wade wazama nokudlala!", "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Utata wandixelela ukuba ndichitha ixesha elininzi ndidlala i-basketball ukuphuma kwesikolo, ngoko kwafuneka sibeke umthetho wekhaya. Wandithembisa ukuba isisombululo sasiza kuphuma kuthi sobabini ukuze soneliseke ngaso. Zange ndikholelwe ukuba ingenzeka lonto, kodwa ndathi, “KULUNGILE, masizame”. Sathethana saza savumelana ngomthetho othi kuvumelekile ukudlala i-basketball emva kokuba ndigqibe ukwenza umsebenzi wesikolo kwaye kude kube lixesha lesidlo sangokuhlwa. Kubuhlungu ukubona iitshomi zam zidlala emva kokuphuma kwesikolo, ngoko ndenza konke endinako ukuba ndiqale ndigqibe umsebenzi wesikolo ndize ndiyokudlala nabo emva koko. Ndinobusuku bonke yokwenza ezinye izinto endifuna ukuzenza njengokubukela i-basketball edlalwa ku-NBA emva kokutya isidlo sangokuhlwa kunye nentsapho yam.", - "You will find the in-week messages from the previous workshops here.": "Uza kufumana imiyalezo yeveki esuka kwindibano zocweyo ezidlulileyo apha.", - "Start": "Qalisa", - "How would you like to do this workshop?": "Ungathanda ukuyenza njani iindabano zocweyo?", - "Coming soon": "Kuza ngokukhawuleza", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Kuya kufuneka sigubungele eminye imiba yobuzali khaphambi koba singaqala sisebenze kwi-@local.workshop_data.title.\n\nUnokufumana izixhobo ezibalulekileyo kwi-@local.workshop_data.title usebenzisa i-@global.parent_centre.", - "My name": "Igama lam", - "@global.weekly_workshop day": "Usuku lwe @global.weekly_workshop", - "I do the workshops...": "Ndenza iindabano zocweyo...", - "My group's name": "Igama le qela lam", - "My group is now doing the workshop...": "Iqela lam ngoku lenza iindabano zocweyo...", - "I am now doing the workshop...": "Ndim ngoku owenza iindabano zocweyo...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Ingaba uqinisekile ukuba ufuna ukuvula zonke iindabano zocweyo? Wakuba uyenzile le nto awuzukwazi ukuphinda ulutshixe", - "You can always find these tools in the @global.parent_centre": "Unokuzifumana ngalo lonke ixesha ezi zixhobo kwi-@global.parent_centre", - "Add this activity to @global.my_activities": "Yongeza lo msebenzi kwi-@global.my_activities", - "Relaxation activities": "Izenzo zokuzipholisa", - "Something fun to do with your teen": "Izinto ezonwabisayo onokuzenza nomntwana wakho ofikisayo", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Awukafaki nto eyenziwayo malunga nezenzo zokuzipholisa kwi @global.my_relaxes. Kutheni ungakhethi ezimbalwa?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Awukafaki nto zenziwayo kwi @global.my_activities. Kutheni ungakhethi ezimbalwa?", - "Open Survey": "Isaveyi Evulekileyo", - "Select Language": "Khetha Ulwimi", - "Workshop Options": "Iinketho Zocweyo", - "Unlock Workshops": "Vula iindabano zocweyo", - "Demo Presentation": "Iprezenteyishini yedemo", - "Organisation Registration": "Ukubhaliswa Kombutho", - "Developer Mode": "Imowudi Yomphuhlisi", - "Unlock all workshops": "Vula lonke iindibano zocweyo", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ngokucofa eli qhosha lingezantsi uya kuvula lonke iindibano zocweyo.\n\nQAPHELA: Abasebenzisi akufuneki basebenzise lo msebenzi ukuvula iindibano zocweyo, oku akucetyiswa ngaphandle kokuba kunyanzelekile.", - "Unlock workshops": "Vula iindabano zocweyo", - "All workshops are now unlocked.": "Lonke iindabano zocweyo uvela luvuliwe ngoku.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ngokucofa eli qhosha lingezantsi uza kubuyisela i-app kwiisetingi zayo zakuqala. \n\nOku kuthetha ukuba yonke inkqubela osowuyenzile nedatha yokusetyenziswa iya kucinywa kwaye i-app yakho iya kusebenza ngokungathi isanda ku-instolwa okokuqala.\n\nPHAWULA: Ukuyiseta kwakhona i-app kusisigxina kwaye awuyi kukwazi ukubuyisela nayiphi na inkcazelo.", - "Reset App": "Setha kwakhona i-App", - "You have successfully entered developer mode.": "Ungene ngempumelelo kwimowudi yomphuhlisi.", - "You have entered an incorrect code.": "Ufake ikhowudi engachananga.", - "Language": "Ulwimi", - "How did you hear about @global.parent_app?": "Uve njani malunga ne @global.parent_app?", - "I found it myself": "Ndiyifumanisile ngokwam", - "A friend or family": "Umhlobo okanye usapho", - "Other": "Enye indlela", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "Unokucelwa ukuba wabelane ngale khowudi nabantu abaza kuxhasa uhambo lwakho lwe@global.parent_app.", - "Last sync at: @local.sync_latest": "Ungqamaniso Lokugqibela e: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Esi sixhobo asizange singqanyaniswe. Ngqamanisa uzokuveza ikhowudi yakho.", - "Sync now": "Ngqamanisa ngoku", - "Syncing...": "Ungqamaniso...", - "You selected @local.threshold or less": "Ukhethe ezi-@local.threshold okanye ngaphantsi", - "You selected more than @local.threshold": "Ukhethe ezingaphezu kwe-@local.threshold", - "Reply": "Phendula", - "Days in the past month": "Iintsuku kwinyanga edlulileyo", - "Days in the past week": "Iintsuku kwiveki edlulileyo", - "You selected less than @local.threshold": "Ukhethe ngaphantsi ko-@local.threshold", - "Unlock for less than @local.threshold": "Vula ezingaphantsi kwe-@local.threshold", - "You selected @local.threshold or more": "Ukhethe ezi-@local.threshold okanye ngaphezulu", - "Video": "Ividiyo", - "Timer": "Isibali xesha", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Cofa unxa-ntathu ukuze ukwazi ukugcina le ncoko ku-@local.timer_duration ngemizuzu.", - "Options": "Ukhetho", - "Home": "Iphepha Lokuqala", - "Settings": "Iisetingi", - "Template": "Itemplethi", - "Tour": "Ukhenketho", - "In-Week Messages": "Imiyalezo Yeveki ", - "Campaigns": "Amaphulo", - "Notifications": "Izaziso", - "About @global.parent_app": "Malunga", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app yaphuhliswa yiParenting for Lifelong Health (PLH) - intsebenziswano yehlabathi lonke phakathi kweengcali zobuzali ezivela kwi-UNICEF, i-WHO kunye neeYunivesithi zaseMzantsi Afrika nase-UK, kunye nee-NGO zase-Afrika kunye neentsapho kunye nolutsha kwi-Afrika iphela. Abazali kunye nabantwana abafikisayo basebenze nathi kwi-app kwaye bancedise ekuqinisekiseni ukuba kulula ukuyisebenzisa, imnandi kwaye iyabandakanya. Enye ikhontenti kule app, njenga macebiso kwizinto ezinokwenziwa kunye namabali anemifanekiso, yenziwe nabazali kunye nabantwana abafikisayo ukuqinisekisa ukuba iyahambelana nemfuno zentsapho\n\ni-Parenting for Lifelong Health (PLH) izibophelele ekuxhaseni izixhobo nenkqubo ezisimahla nokwabelwana ngazo zobuzali, ukuxhasa abazali kwihlabathi jikelele ukukhuthaza impilo-ntle yabantwana babo.", - "Finish current workshop": "Gqiba uqeqesho lwangoku", - "Here is a fun activity to do with your teen!": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", - "Start @local.workshop_data.in_text_title": "Qalisa i-@local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Molo @fields.user_name! Kule veki uye wenza:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", - "That’s wonderful!": "Kuyancomeka oku!", - "Nice work!": "Wenza umsebenzi omhle!", - "Your commitment is not taken for granted.": "Ukuzinikela kwakho akulolize.", - "Keep up the good work!": "Qhubeka nalo msebenzi mhle!", - "This is lovely!": "Oku kuyathandeka!", - "Tap yourself on the shoulder. You deserve this.": "Ziqhwabele izandla. Ukufanele oku.", - "Every @global.parent_point counts!": "I@global.parent_point nganye uyabala!", - "Relax now": "Phola ngoku", - "Did you relax already? Tap it!": "Ngaba sowupholile? Yicofe!", - "Looking after yourself matters.": "Ukuzinyamekela kubalulekile.", - "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Kulunge kakhulu! Kuhle kakhulu ukuva ukuba ukwimeko entle namhlanje. Enjani ukumangalisa imvakalelo!", - "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Maxa wambi izinto zihamba kakuhle. Maxa wambi akubi njalo. Yaye maxa wambi asiye sazi ukuba masicinge ntoni... yaye oko kulunge ngokupheleleyo! Khumbula ukuba awukho wedwa.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Oku kubalasele, ingakumbi ngamaxesha anzima njengala. Uligqala.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Siyazi ukuba kunzima kangakanani ukukhulisa abantwana abafikisayo kula maxesha. Ukufunda ukulawula uxinezeleko lwakho kunceda wena - nentsapho yakho.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje uphathelele ukulawula uxinezeleko. \n\nKubalulekile ukwazi indlela yokulawula uxinezeleko lwethu. Maxa wambi abantwana bethu bangaziphatha ngeendlela ezinokusenza sizive sixinezelekile yaye nathi bazali sinokwenza abantwana bazive bexinezelekile. \n\nNgoko, kubalulekile ukuphawula xa siziva sixinezelekile size sime kancinci size sithathe umoya. Loo nto iya kukunceda ulawule uxinezeleko.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengxubusho – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengcinga – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Makhe sijonge indlela uxinezeleko olunokuthi maxa wambi lube ngaphaya kwamandla, kuthi sonke:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver: “Khawundiyeke uhoye iindaba zakho!”", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: Ndenze ntoni? Awundimameli!” \n\n@global.w_stress_male_caregiver: “Ndithe ndiyeke okanye ndiza kukubetha!”", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Jonga! Ndenze indlu!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Bukhathalelwe ngubani ububhanxa bendlu yakho!”", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani? Kunye ne @global.w_stress_male_caregiver? Yaye @global.w_stress_girl?\n\nYintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", - "How do you think @global.w_stress_teen_boy_1 felt?": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani?", - "And @global.w_stress_male_caregiver?": "Yaye @global.w_stress_male_caregiver?", - "And @global.w_stress_girl?": "Yaye @global.w_stress_girl?", - "Scared": "Uyoyika", - "Each of them was feeling upset for their own reason!": "Ngamnye kubo ebecaphuka ngezizathu zakhe!", - "What could @global.w_stress_male_caregiver have done differently?": "Yintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", - "Recognise why he feels stressed": "Hlola ukuba kutheni eziva exinezelekile", - "Take a deep breath and speak calmly": "Khawuthathe umoya uze uthethe ngokuzolileyo", - "Show he understands his teen’s feelings": "Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo", - "Think about solutions together with @global.w_stress_teen_boy_1": "Cinga ngezisombululo kunye @global.w_stress_teen_boy_1", - "Do something positive together with @global.w_stress_teen_boy_1": "Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver unako...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Qonda ukuba kutheni eziva exinezelekile \n* Khawuthathe umoya uze uthethe ngokuzolileyo \n* Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo \n* Cingani ngezisombulullo kunye @global.w_stress_teen_boy_1\n* Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Enkosi ngokucinga ngolu hlobo! Makhe sibuyele umva size sibone ukuba u @global.w_stress_male_caregiver wenza ntoni ngoku:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver uphelelwe ngumsebenzi. Ebehleli endlini eziva ekhathazekile yaye exinezelekile, ukungena kuka @global.w_stress_teen_boy_1.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver (uyaphefumla): “Uxolo nyana wam. Bendinemini embi namhlanje. Umqeshi wam undigxothile.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Yhoo! Ndicela iyunifom entsha.” \n\n@global.w_stress_male_caregiver: “Ndiza kuzama nyana, Yaye umsebenzi ka @global.w_stress_female_caregiveruza kusithwala logama ndisakhangela omnye umsebenzi.”", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Nam ndingakuncedisa ukukhangela umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Hayi akunangxaki, @global.w_stress_teen_boy_1. Ndiyakuxabisa ukulungela kwakho ukunceda. Eyona nto ibalulekileyo kukuba usebenze nzima esikolweni. Enkosi ngokundiphulaphula.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Masidlale kunye ibhola. Kuza kundinceda ndikhuphe olu xinezeleko engqondweni okwethutyana.” \n\n@global.w_stress_teen_boy_1: \"Kulungile, @global.w_stress_male_caregiver!\"", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Kube bhetele kakhulu! \n\nUkuma kancinci kukunceda uzole xa uziva unomsindo okanye uxinezelekile. Yizame, uza kubona!", - "Safety Amnesty": "Uxolelo Lokhuseleko", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Khumbula ngokuya wawungumntwana ofikisayo. \n\nNgaba wakha wasengozini kodwa wabe ungenakuxelela intsapho yakowenu ngenxa yokuba iza kuba nomsindo?\n\nOku KUPHANTSE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Makhe sijonge:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Ungabaxeleli abantu abadala, kodwa ndiya ebharini nabahlobo bam ngokuhlwanje\" \n\n@global.w_stress_teen_girl: “Yonwaba! Ndibaxelele ukuba ndiza kuhlala nentombi engumhlobo wam, kodwa eneneni ndiya epatini”", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Ndicinga ukuba basebenzisa iziyobisi. Singabanjwa sonke. Kodwa andinakubaxelela abazali bam – baya kuba nomsindo kakhulu\"", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ndiyoyika. Wonke umntu unxile kakhulu ukuba angandigodusa. Le nkwenkwe ithi ingandigodusa kodwa ifuna ndiqale kowayo. Andinakubaxelela abazali bam - ndibaxokisile ngokuza kule pati.”", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Ezi zimeko eziyingozi! Okuvuyisayo kukuba, u @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl bakhumbula oko u @global.w_stress_parent wabaxelela kona: \n\n\"Ndilukhathalele ukhuseleko lwakho ngaphezu kwayo nantoni na. Ukuba uye wacaphuka, okanye woyika, ungaqhagamshelana nam ukuze ndikuncede, okanye undixelele ngayo. \n\nVele uthi ‘UXOLELO LOKHUSELEKO’. Ndiyathembisa ukuba ndiza kwenza unako nako ukukunceda yaye andizokucaphuka – kwanokuba wenza into obungamele uyenze.\"", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, Luxolelo lokhuseleko. Ngaba ungeza uzokundithatha? Ndiyidinga ngokwenene into egodukayo.”", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, uxolelo lokhuseleko Ndicinga ukuba abahlobo bam basengxakini. Andifuni kuyeka ukuba ngumhlobo wabo, kodwa ndikhathazekile. Ngaba singathetha?\"", - "BREATHE. Slowly. Pause.": "PHEFUMLA. Ngokucothayo. Yima.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Ngaphambi kokuba uthethe nantoni na, ngokucothayo tsala umoya uphinde uwukhuphe izihlandlo ezintlanu. Loo nto iya kukwenza uzole, ize ikunike ithuba lokucinga.", - "SHARE how you feel": "CHAZA indlela ovakalelwa ngayo", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Inzima le nto. Uninzi lwethu lufundiswe ukuba lungakhali, okanye lubonise abantwana indlela esivakalelwa ngayo. Kodwa thatha umoya uze ngokuzolileyo ubachazele indlela ovakalelwa ngayo. Baya kuqonda bhetele, baze bafunde kuwe indlela yokuhlangabezana noxinezeleko.", - "SHOW them you care": "BABONISE ukuba uyakhathala", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Inzima nale! Uxinezeleko lubangela ukuba sinikele ingqalelo kwiziqu zethu. Kodwa abantwana bethu abafikisayo bayayidinga inkxaso yethu. Babuze indlela abaziva ngayo. Baphulaphule uze ubathuthuzele. Zama ukubawola okanye uthi ‘Ndiyaqonda’. Ingatshintsha yonke into.", - "SEEK the positive": "KHANGELA izinto ezakhayo", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Ngaba wena nomntwana wakho ofikisayo ningacinga ngezinto ezinokuba luncedo? Ngaba nobabini ningenza okuthile okwakhayo ukuze nisuse iingqondo zenu kuxinezeleko?", - "If all else fails, breathe. You can do this.": "Ukuba yonke loo nto iyasilela, phefumla. Ungakwenza oku.", - "There are two home practices for this week.": "Kukho amaqheliselo amabini asekhaya kule veki.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe kahlanu ngaphambi kokuba usabele. \n\nYaye xa nobabini nizolile, chazela umntwana wakho ofikisayo indlela oziva ngayo.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Ncokolani “ngoxolelo lokhuseleko” nomntwana wakho ofikisayo, yaye nobabini cingani ngemeko apho ninokuyisebenzisa khona lento.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Sihlandlo ngasinye unqumama ngaphambi kokuphendula, okanye nanini na usenza into ukuze ukhusele umntwana wakho ofikisayo, cofa i @global.parent_points uze ubhiyozele impumelelo yakho!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Ulugqibile uqeqesho lwale veki.\n\nKule veki izayo siza kuthetha ngemali - uya kudinga:\n* iphepha/ikhadbhodi\n* ipen\n* amatye amancinci angama-20/iimbotyi/iinkozo\n\nkuya kuba mnandi!", - "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Kuhle kuba namhlanje izinto zihamba kakuhle! Yintoni into enye ehambe kakuhle namhlanje? Khumbula ukuzincoma ngaloo nto.", - "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Uxolo ngokuva ukuba uxakanisekile namhlanje. Wenze kakuhle ngokuphawula ezo mvakalelo, nokuzama ukuzola uze uzicingele. Umisela umzelelo obalaseleyo kwintsapho yakho.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Neyona nto incinci oyenzayo ibalulekile. Siyathemba ukuba uyazidla ngesiqu sakho nawe.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Zonke iintsapho ziba neengxaki. Xa silungiselela kunye yaye sisazi ukuba masilufumane phi uncedo NGAPHAMBI kokuba kwenzeke into embi, singoyisa nayiphi na ingxaki.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Molweni, kuni nonke.\n\nNamhlanje siza kuncokola ngeengxaki.\n\nIingxaki zingavela naphi na. Iingxaki zingavela nanini na. Ngenxa yoko, kubalulekile ukuba njengentsapho nibe nezicwangciso ukuba naliphi na ilungu lentsapho lizibona lisengxakini. \n\nKubalulekile ukuba nezicwangciso ukuze ilungu ngalinye lintsapho lizive likhuselekile. \n\nXa sijongene neengxaki, khumbula ukuthi khebevu kancinci, uphefumle, uze uhlale uzolile. Oko kuya kukunceda ujongane bhetele neengxaki.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Ibali nengxubusho\n* Ibali nengxubusho\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Ibali nokucamngca\n* Ibali nokucamngca\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Ingxaki ingehlela nabani na. \n\nMakhe sibone oko kwenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Torho sthandwa, ubonakala ukhathazeke nyhani, uyafuna ukundibalisela ukuba kwenzeke ntoni?\"", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ngumalume, u… u… undibambile.\" \n\n@global.w_crisis_female_caregiver (ecinga): \"Khawuthath’ umoya... Ufuna ntoni umntanam? Ufuna ndizole ndize ndiphulaphule\" \n\n@global.w_crisis_female_caregiver: \"Yizokuhlala apha ecaleni kwam. Thath’ ixesha lakho, ndiphulaphule.”", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Yinyani, u… u… the mandiyenze! Uthe mandilale naye! Bendingafuni, ndiyafunga, ndide ndathi HAYI, kodwa uthe ndiza kuba sengxakini.\"\n\n@global.w_crisis_female_caregiver: Enkosi ngokundichazela le nto. Awukho sengxakini. Asilotyala lakho eli.”", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Izolo xa ubuyokubona @global.w_crisis_adult_friend. Ufikile nje yaye yenzeke ngelo xesha le nto.\"\n\n@global.w_crisis_female_caregiver: \"Kulungile, ndiyakukholelwa mntana. Inkulu le nto yaye siza kufumana indlela yokufumana uncedo esiludingayo. Singaya phi ukuze sifumane uncedo?\"\n\n@global.w_crisis_teen_girl_1: \"Esikolweni sam?\"", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Yha, masiye siye ekliniki. Baza kuyazi ukuba masenze ntoni ukuze uncedakale. Ngaba ivakala ilungile loo nto kuwe?\n\n@global.w_crisis_teen_girl_1: \"Ewe… Ilungile… Kodwa ungahamba nam?\"", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Nakanjani ndiza kuhamba nawe. Yaye @global.w_crisis_teen_girl_1? Khumbula ayilotyala lakho eli.” Ndiyakuthanda. Ungumntu olungileyo. Siza kudlula kule nto.”", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Le ibiyimeko enzima ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver! Oku kunokwenzeka emakhwenkweni nasemantombazaneni.", - "What skills did @global.w_crisis_female_caregiver use?": "Usebenzise buphi ubuchule u @global.w_crisis_female_caregiver?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ewe, @global.w_crisis_female_caregiver enyanisweni usebenzise bonke obo buchule – yaye nawe ungayenza loo nto!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Enye ingxaki ekhathaza abazali abaninzi lugonyamelo nolwaphulo-mthetho. Makhe sijonge kunye umzekelo.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ukhangeleka ukhathazekile ukususela izolo. Yintoni ingxaki?”", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Izolo mna neetshomi zam siye kumdlalo webhola ekhatywayo. Abanye abafana abebenxilile baye baqalisa ukulwa nomhlobo wam.\"\n\n@global.w_crisis_male_caregiver_1: \"Qhubeka, ndiphulaphule. Ndiyathemba awukhange ulwe?\"", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Bendingafuni, kodwa bendingenakubukela nje ndibavumele babethe umhlobo wam, ngoko…\"\n\n@global.w_crisis_male_caregiver_1: \"Ngoko, ulwile ukuze ukhusele umhlobo wakho?\"", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Wonke umntu ebesilwa. Ndibone umntu ebaleni kububutyadidi ligazi. Ebekhangeleka … eswelekile.\"", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Ndiyavuya ngokundixelela ngale nto, @global.w_crisis_teen_boy_1. Ngoku masihlale kunye phantsi size sincokole ngokuba simele sifake amapolisa okanye omnye umntu oza kusinceda.”", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Enkosi, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Siza kudlula kule nto. Khumbula, siya kukuxhasa njengentsapho.”", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Le ibiyimeko enzima ku @global.w_crisis_teen_boy_1 no @global.w_crisis_male_caregiver_1!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "Usebenzise buphi ubuchule u @global.w_crisis_male_caregiver_1?", - "All these skills can help in a crisis.": "Bonke obu bubuchule bunokunceda xa kukho ingxaki.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Ingxaki inokusenza sizive sinomsindo okanye singenamncedi. Kodwa eli lithuba abantwana bethu abafikisayo abadinga ukuba siphefumle, siphulaphule size sicinge.", - "BREATHE": "PHEFUMLA", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Hlala uzolile. Zibuze ukuba ‘umntwana wam ofikisayo udinga ntoni ngoku’", - "Tell them you are there for them and love them.": "Mxelele ukuba ukunye nabo yaye uyabathanda.", - "THINK": "CINGA", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Thetha nomntwana wakho ofikisayo. Yintoni enokunceda le meko? Kusenokufuneka wenze izicwangciso ezingxamisekileyo ngoku, uze wenze izicwangciso zexesha elide kamva.", - "You can be proud of yourself for exploring ways to get help!": "Ungazingca ngesiqu sakho ngokukhangela iindlela zokufumana uncedo!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Kuluncedo ukuqhelisela ukuhlangabezana nengxaki ngaphambi kokuba yenzeke. \n\nKhawujonge ezi zihlandlo zihlanu zeengxaki zentsapho. Khawuzibone ungumzali. Ubungenza ntoni?\n\nKhumbula: PHEFUMLA - PHULAPHULA - CINGA", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Ingxaki 1: @global.w_crisis_teen_boy_2 imilo yasesikolweni", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Andizange ndiyenze le nto ngaphambili. Yaye ngoku baza kundigxotha\"", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Ingxaki 2: @global.w_crisis_teen_girl_1 uyakhulelwa", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ndineentloni ezingathethekiyo. Andazi ukuba mandenze ntoni\"", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Ingxaki 3: @global.w_crisis_teen_boy_2 umithisa intombazana", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Andifuni ukuba nomntwana\"", - "How could you respond to @global.w_crisis_teen_boy_2?": "Ungasabela njani ku @global.w_crisis_teen_boy_2?", - "Crisis 4: Someone in the family gets sick": "Ingxaki 4: Kugula umntu entsatsheni", - "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Uvavanyo lufumanise ukuba ndine-HIV. Ndiyoyika ndiza kufa”", - "How could you respond in this situation?": "Ungasabela njani kule meko?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Ingxaki 5: @global.w_crisis_teen_girl_1 unyanzelwa lisoka lakhe ukuba alale nalo", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Enyanisweni bendingafuni. Ngoku ndiza kumitha okanye ndigule. @global.w_crisis_female_caregiver, Ndoyika kakhulu...\"", - "How could you respond to @global.w_crisis_teen_girl_1?": "Ungasabela njani ku @global.w_crisis_teen_girl_1?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Khumbulani ukuxhasna nokukhuthazana. Kunzima ukuhlala uzolile nokuphulaphulana xa kukho ingxaki - siyazidla ngawe.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Ukunye nomntwana wakho ofikisayo khetha enye yezi meko (okanye ucinge ibe nye ngokwakho) Jongani oopopayi nize nincokole ngoko niya kukwenza kunye ukuba oku kuye kwenzeka kumhlobo okanye kwintsapho yakho. \n\nYaye khumbula: PHEFUMLA - PHULAPHULA - CINGA", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela nina nonke, luze lunincede nicebele ikamva. \n\nKutheni ningakhe nicebe ukutya kwetheko kunye,nize nilungise umculo ukuba uyathanda ukudanisa!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela wena, yaye unokukhetha inkxaso oyifunayo ukubheka phambili. \n\nUngalungiselela isidlo esimnandi ukuze ubhiyoze - into othanda ukuyitya, okanye umculo othanda ukuwuphulaphula!", - "Self-care is a key parenting tool.": "Ukuzikhathalela sisixhobo esiphambili sokuba ngumzali.", - "How are you feeling today?": "Uziva njani namhlanje?", - "So good to hear you are feeling well today. You are incredible!": "Kuyavuyisa ukuva ukuba uziva kamnandi namhlanje. Uyamangalisa!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Uxolo ngokuba iimeko zinzima kanye ngoku. Tsala umoya uze uzazi ukuba uyaxatyiswa.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Unganceda umntwana wakho ofikisayo ayiqonde ukuba kukho imiphumo xa engayithobeli imithetho yekhaya. \n\nKodwa INDLELA okwenza ngayo oku ibalulekile. \n\nUkunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukunika umphumo uzolile.\n\nKubalulekile ukuba sibabandakanye abantwana bethu abafikisayo xa siza kusebenzisa imiphumo, kodwa kukwabaluleke nangakumbi ukuzola xa sibanika umphumo.\n\nOku kuza kusinceda sinike abantwana bethu umphumo sizolile kwaye bona baza kuyikhumbula lula xa bebandakanyekile ibe loo nto iza kwenza bathathe uxanduva.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Makhe sifunde ngokoko kwenzeke nge @global.w_consequence_teen_boy_1 ne @global.w_consequence_male_caregiver:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku? Ufike emva kwexesha!", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala”. \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awuwuthobeli umthetho walapha! Ndiza kukubetha”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Undidlel’ indlala! Awundimameli!! Ndiyakucaphukela!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Ncokolani kunye: \n* Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", - "Giving a consequence this way did not work well because...": "Ukuza nemiphumo ngolu hlobo akuzange kusebenze kakuhle ngenxa yokuba...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver bendinomsindo", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver andizange ndivumele @global.w_consequence_teen_boy_1 acacise", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Imiphumo ayizange incokolwe kwangaphambili no- @global.w_consequence_teen_boy_1", - "The consequence was too strong": "Umphumo ubungqongqo kakhulu", - "Why did giving a consequence this way not work well?": "Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "Ewe, intsabelo erhabaxa ngolo hlobo yenze wonke umntu wanomsindo kakhulu waza wacaphuka.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Abantwana abafikisayo bayathanda ukwaphula imigaqo. Ukukhula lixesha elinzima xa bezifunda ukuba bangoobani. \n\nNgethamsanqa, zikhona iindlela zokohlwaya umntwana wakho ofikisayo ngaphandle kokuba nomsindo okanye ukusebenzisa ubundlobongela… yaye zisebenza kakuhle!\n\nUkuza nemiphumo ezolileyo kunceda ekufundiseni abantwana bethu ukuba bazithwalele uxanduva ngezinto abazenzayo – enoba zintle okanye zimbi. \n\nNantsi eminye imizekelo - khawuzibone ungumzali:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Imiphumo ezolileyo ifanele ibe... \n\nMIHLE NOKO: Ayikho ngqwabalala kakhulu yaye ungayenza \n\nNGOKUKHAWULEZA: Yinikele ngokukhawuleza kangangoko kunokwenzeka \n\nNGOKUQHUBEKAYO: Umphumo ofanayo rhoqo", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.\n\nNguwuphi umphumo onokunceda apha?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Imiphumo ayifani ncam nesohlwayo inika abantwana bethu abafikisayo ithuba lokufunda ukuzithwalela uxanduva ngezenzo zabo.\n\nYaye balawuleka ngakumbi YAYE isebenza ngakumbi kunokubetha okanye ukubakhwaza!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.\n\nNguwuphi umphumo onokunceda apha?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Imiphumo iphumelela ngakumbi ukuba uxubusha uze uvumelane kusengaphambili nabantwana abafikisayo ngaphambi kokuba uyisebenzise.\n\nYaye: imiphumo ayikho mibi yonke… kanti ningavumelana ngemiphumo yezenzo EZINTLE ukuze ubone isimilo esichubekileyo!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.", - "What consequence would help here?": "Nguwuphi umphumo onokunceda apha?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.\n\nNguwuphi umphumo onokunceda apha?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Indlela oqala ngayo imiphumo ezolileyo ibalulekile. Khumbula, xa ubandakanya umntwana wakho ofikisayo, izinto ziba bhetele!", - "EXPLAIN": "CACISA", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Qiniseka ukuba nobabini nizolile. Tsala umoya izihlandlo ezimbalwa. Mcacisele umntwana wakho ofikisayo isizathu sokuba ukhathazwe sisimilo sakhe.\n\nCacisa isizathu sokuba lo mgaqo ubalulekile. Ungayichaza indlela oziva ngayo - kulungile ukutsho ukuba udanile.", - "AGREE": "VUMA", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Ceba imiphumo nomntwana wakho ofikisayo yokuwulandela nokungawulandeli umgaqo.\n\nCela ezakhe izimvo. Thethani de nivumelane ngento esengqiqweni.\n\nYenza umphumo WOKUNGAWULANDELI umgaqo nengenelo yaxa eye WAWULANDELA umgaqo.", - "ACT": "YENZA OKUTHILE", - "When your teen follows the rule, give praise and privileges!": "Xa umntwana wakho ofikisayo elandela umgaqo, mncome umnike namalungelo!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Uya kuziva ehlonitshwa yaye exatyiswa. Khumbula: Okukhona sibancoma, kokukhona beya kubonisa isimilo esichubekileyo!", - "When your teen does not follow the rule, follow through with the consequence.": "Xa umntwana wakho ofikisayo engawulandeli umgaqo, landelela umphumo.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Xa umntwana wakho esaphula umgaqo, ngokuzolileyo nika umphumo Oku kumele kwenziwe NGOKUSESIKWENI, (kungekhona ngokungqwabalala kakhulu), NGOKUKHAWULEZA (ukwenze ngokungxamisekileyo) NGOKUQHUBEKAYO (ngendlela efanayo rhoqo).", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Ncokolani kunye:\n* Yiyiphi imithetho abantwana bakho abafikisayo abathanda ukuyaphula? \n* Nguwuphi umphumo onokuwusebenzisa kumgaqo ngamnye owaphulayo? \n\nImiphumo ifanele ibe: \nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo) \nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo).\n\nNcomanani nize nikhuthazane – sinokomelezana!", - "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Masibuyele ku @global.w_consequence_teen_boy_1 neyakhe i @global.w_consequence_male_caregiver", - "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: \"Iyandixhalabisa into yokuba usoloko ubuya emva kwexesha endlini, @global.w_consequence_teen_boy_1. Singenza ntoni ukukunceda ukhumbule ukugoduka kwangexesha?\"\n\n@global.w_consequence_teen_boy_1: \"Ukuba ndigoduka kwangethuba, mhlawumbi ndingashiywa lixesha ngemizuzu engama-30?\"", - "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: YIngcamango entle leyo! Yaye simele senzeni xa ungawuthobeli lo mthetho? \n\n@global.w_consequence_teen_boy_1 uyambombozela): “Mgmluuhm”", - "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: \"Yitsho kaloku, ndiyayazi ikhona into oyicingayo.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile…. Kuthekani: Ndimele ndiyokwenza umsebenzi wam wesikolo?”", - "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: \"Umsebenzi wakho wesikolo umele ukuba uwenzile kakade. Ukuba uyawulibala lo mthetho, kusengqiqweni ukuba ungadibani neetshomi zakho ngomso.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile, @global.w_consequence_male_caregiver.\"", - "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Ngengomso...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku! Selibethile ixesha!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala” \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kusezinzulwini zobusuku yaye ubuye ekhaya emva kwexesha ebesivumelene ngalo. Noba siyintoni isizathu, umele uqonde ukuba ayamkelekanga loo nto. @global.w_consequence_female_caregiver yaye ndikhathazeke nyhani.”", - "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Abahlobo bam bathe makhe ndihlale ixeshana. Bebesithi ndiyafeketha kuba ndifuna ukugoduka kwangoko.” \n\n@global.w_consequence_male_caregiver: “Ndiyazi kunganzima ukuthi hayi kubahlobo bakho. Masithethe ngakumbi ngale nto kusasa xa siye saphumla.”", - "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Uxolo ngokukukhathaza yaye @global.w_consequence_female_caregiver.“ \n\n@global.w_consequence_male_caregiver: “Enkosi. Hamb’ uyolala ke ngoku, kodwa uze wazi, ukuba ubuye ekhaya sekubethe ixesha ebesivumelene ngalo, awuvumelekanga ukuphuma ngokuhlwa kwangomso.”", - "Let's talk about this story": "Masithethe ngeli bali", - "Using a consequence worked well this time because...": "Ukusebenzisa umphumo kusebenze kakuhle kweli tyeli ngenxa yokuba...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 nowakhe u @global.w_consequence_male_caregiver bancokole ngemiphumo bobabini bezolile", - "They agreed on consequences together": "Bavumelene bobabini ngemiphumo", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver usabele ngokuzolileyo kodwa ngokuqinileyo xa u @global.w_consequence_teen_boy_1 ebesophula umgaqo", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver umphulaphule u @global.w_consequence_teen_boy_1", - "The consequence was realistic and appropriate": "Umphumo ubusengqiqweni yaye ufanelekile", - "Why did using a consequence work well this time?": "Kutheni ukusebenzisa umphumo kusebenze kakuhle kweli tyeli?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Ubuya kuthi umphumo ozolileyo kubantwana bakho abafikisayo abaphikisanayo ebudeni besidlo unjani? \n\nKhumbula kufuneka ube: \nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", - "Not seeing any friends for a month": "Ukungababoni abahlobo bam kangangenyanga", - "This may be hard to do for you and also too harsh!": "Kusenokuba nzima kuwe ukwenza loo nto yaye kunokuba ngqwabalala kakhulu!", - "Cancelling their birthday plans in a month’s time": "Ukurhoxisa izicwangciso zomhla wabo wokuzalwa kwisithuba senyanga", - "This is too far in the future, and too harsh as well!": "Kukude kwikamva, yaye kungqwabalala futhi!", - "No TV this evening": "Anizombukela UMABONAKUDE ngokuhlwanje", - "Perfect, this sounds fair and can be done straight away": "Heke, oku kubonakala kulungile yaye kunokwenziwa ngokukhawuleza", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Ceba isiphumo esizolileyo sabantwana bakho abafikisayo abaphikisanayo ngexesha lokutya.. Khumbula kufuneka ibe \n\nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Uqheliselo lwakho lwasekhaya kule veki luya kuba kukuthetha kunye nomntwana wakho ofikisayo ngomphumo OMNYE ongemhle nomphumo OMNYE omhle.\n\nImiphumo ifanele ibe:\nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo)\nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Isimilo Esingesihlanga Ukugoduka emva kweyure ekuvunyelwene ngayo. \n\nUmphumo Ongemhlanga: Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo: \n\nIsimilo Esingesihlanga Ukuthetha Krwada. \n\nUmphumo Ongemhlanga: Bhala ileta yokuxolisa \n \nIsimilo Esihle Ukuncedisa ukuthenga. \n\nUmphumo Omhle: Imizuzu engama-30 ethe kratya yomsebenzi awuthandayo awukhethayo. \n\nIsimilo Esihle Ukuncedisa ekujongeni abantwana bakowabo abancinci. \n\nUmphumo Omhle: Iyure yexesha elithe kratya kunye nabahlobo ngempelaveki.", - "Great!": "Kulunge kakhulu!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ndiyayazi ubomi bunokubanzima. Ndiyazingca ngawe. \n\nNokuba uvakalelwa njani, kuhle ukuba ulapha!", - "Using the app together": "Ukusebenzisa i-app kunye", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Kuhle ukukubona!\n\nOkokuqala, masincede iqela lakho liqalise.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Okokuqala vumelanani ngemithetho ebalulekileyo:\n* Zeziphi iintsuku/amaxesha esiza kudibana ngawo evekini?\n* Ngubani oza kubamba ifowuni xa sisenza izinto?\n* Yintoni esinokuyenza ukuze siqiniseke ukuba wonke umntu uthetha ngokukhululekileyo?\n* Yintoni esinokuyenza ukuze sonke sizive sihlonitshwa?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Unako ukulitshintsha nanini na usuku loqeqesho lwenu kunye negama leqela lakho kwi-@global.weekly_workshop_options.", - "Some rules that other groups made:": "Eminye imithetho eyenziwe ngamanye amaqela:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Ngolwesibini ngo 7pm lixesha lethu le@global.parent_app sisonke\n* Ukutshintshana ngokubamba ifowuni (umsebenzi om-1 kumntu ngamnye)\n* Yamkela amava omnye nomnye. Sisonke sahlukile!\n* Tshintshanani ngokuthetha nokumamela\r\n\n* Yonke imibuzo yamkelekile\n* Oko sabelana ngako kuphelela phakathi kwethu", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Ungu ngqa phambili! \n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole. \n\nUkhumbule ukuba ufumana i-@global.parent_point qho uzikhathalela - ubalulekile!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ukuba ngumzali kunganzima kakhulu. Ngamanye amaxesha kubonakala ngathi abantwana bethu abasimameli.\n\nKodwa inzululwazi ibonisa ukuba ukuchitha imizuzu embalwa ngosuku ngalunye nichitha ixesha kunye nomntwana wakho ofikisayo oko kunganceda ekwakheni ukuthembana nothando.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Ithuba lokuchitha ixesha ndawonye lelokunikela ingqalelo kubo, kungabukelwanga i-TV okanye kusetyenziswa iifowuni. Bavumele bakhokele into eyenziwayo okanye into enincokola ngayo.\n\nKuhle ukuba unokuchitha imizuzu engamashumi amabini ngosuku, kodwa nokuba yimizuzu emihlanu ngosuku oko kulungile.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Molo.\n\nUmxholo wanamhlanje ngowokuchitha ixesha kunye nabantwana bethu.\n\nKubalulekile ukuchitha ixesha kunye nabantwana bethu ukuze basazi kakuhle nokuba nathi sibe nethuba lokubazi kakuhle. \n\nUkhumbule ukuba intsapho eyazana kakuhle iyavisisana.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Izinto zokwenza xa uzinyamekela\n* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Yabelalani ngamacebiso! \n\nZeziphi izinto onokuzenza xa uchitha ixesha ndawonye kunye nabantwana bakho abafikisayo?\n\nNgaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Cinga ngezinto zokwenza xa nichitha ixesha ndawonye ezingatyi xesha elingakumbi njengokuhamba niye evenkileni kunye.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nNingabazali abathandekayo ngokuzama le nto.", - "Let's think of ways to spend one-on-one time with your teen.": "Makhe sicinge ngeendlela zokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo.", - "What could you do to spend one-on-one time with your teen?": "Yitoni onokuyenza ngethuba lokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Ngaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Ungalibali ukucinga ngezinto ezingazukufuna ixesha elongezelelekileyo.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nUngumzali ophum’izandla ngokuzama le nto.", - "DAY - Try to do it every day": "USUKU - Zama ukuyenza yonke imihla", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Kusuku ngalunye, khangela imizuzu emi-5 (okanye ngakumbi!) xa umntwana wakho ofikisayo engenanto yimbi afuna ukuyenza.", - "PLAY - Let your teen choose": "DLALA - vumela umntwana wakho ofikisayo akhethe", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Xelela umntwana wakho ofikisayo ukuba ungathanda ukuchitha ixesha kunye naye kwaye angakhetha into afuna yenziwe okanye afuna ukuncokola ngayo. Ekuqaleni usenokuyifumanisa ingaqhelekanga le nto, kodwa uza kuhamba alonwabele eli xesha aba kunye nawe ngalo!", - "STAY - Focus on your teen": "HLALA - Nikela ingqalelo kumntwana wakho ofikisayo", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Cima i-TV nize ningazisebenzisi iifowuni zenu. Mjonge umntwana wakho ofikisayo. Nqwala intloko okanye uthi “Ndiyakuva” ukuze ubonise ukuba unikele ingqalelo nyhani. Yamkela into ayithethayo ungakhange umgwebe.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Nawe ungalinandipha ithuba lokuchitha ixesha ndawonye kunye nomntwana wakho! Kusenokukwenza ude uzive lwehlile uxinezeleko.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Chitha imizuzu eyi-5 ukuya kweyi-20 ekuchitheni ixesha kunye nomntwana wakho ofikisayo ngazo zonke iintsuku okwazi ngazo kule veki.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Ukhumbule - nanini na unako, phola, qonda uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", - "Remember that YOU matter!": "Khumbula ukuba UBALULEKILE!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Wenze kakuhle ekuqondeni imvakalelo ezakhayo. Kuyandivuyisa ukuva ukuba uziva kamandi namhlanje!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Uqhube kakuhle ngokuqonda iimvakalelo ezinzima. Kulungile ukungaziva mnandi maxa wambi. Khumbula ukuba awukho wedwa.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Oku kusemagqabini. Ngalunye kolu qheliselo lwenza intsapho yakho yomelele. Zidle.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Imigaqo inceda abantwana abafikisayo baqonde oko kulindelekileyo kubo. \n\nAbantwana abafikisayo batyekele ngakumbi ekulandeleni imigaqo xa imigaqo niyenza KUNYE nomntwana wakho ofikisayo uze umncome ngaloo nto!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yimigaqo. \n\nImigaqo ikhuthaza uxolo ekhayeni ize ikhuthaze ukuqondana phakathi kwamalungu entsapho. \n\nImigaqo ikhuthaza iimbopheleleko kwilungu ngalinye lentsapho, ngenxa yoko, kubalulekile ukuba nemigaqo yentsapho. \n\nIkhaya elinemigaqo yentsapho liphila eluxolweni.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze… \n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze… \n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Makhe sifunde ngoko kwenzeke nge @global.w_rules_teen_boy ne @global.w_rules_female_caregiver_1:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"Usoloko ugoduka emva kwexesha!\"\n\n@global.w_rules_teen_boy: \"Hayi akunjalo, andazi nokuba lithetha ukuthini igama elithi emva kwexesha! Khawuyeke ukundijikeleza ngochuku.”", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Nguwuphi umgaqo okhethekileyo abanokuthi u @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 bawuyile kunye?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Makhe sibone indlela u @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy abayenza ngayo le nto ngosuku olulandelayo\n\n@global.w_rules_female_caregiver_1: Ndifuna wonwabe, @global.w_rules_teen_boy, kodwa iyandikhathaza nento yokuhamba kwakho ngobusuku. Ngaba uyasazi isizathu?” \n\n@global.w_rules_teen_boy: “Ngenxa yokuba ufuna ndibe nexesha elaneleyo lokwenza umsebenzi wam wesikolo?”", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Unyanisile, yaye akukhuselekanga kule ndawo ukuba ngaphandle emva kokutshona kwelanga. Ucinga ukuba leliphi ixesha elililo lokuba sekhaya?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ndingagoduka ngo-10pm?\" \n\n@global.w_rules_female_caregiver_1: “Kusuke kusebusuku noko, unjani u-6pm? Okanye elinye ixesha eliphakathi?”", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ndingagoduka ngo-6pm ngeentsuku zesikolo ndize ndigoduke ngo-10pm ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Ok kulungile. Ukususela ngoku, umgaqo wentsapho yethu uthi kufuneka ufike endlini ngo-6pm ngeentsuku zesikolo uze ufike ngo-10pm ngooLwezihlanu nangemiGqibelo. Kodwa usoloko ugoduka nomhlobo. Ilungile xa injalo?\"", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: \"Kulungile, @global.w_rules_female_caregiver_1“ \n\n@global.w_rules_female_caregiver_1: “Enkosi kakhulu, @global.w_rules_teen_boy, ngokundincedisa senze umgaqo omhle. Kundivuyisa kakhulu ukuphawula ukuba uya uqola.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Ngengomso...\n\n@global.w_rules_female_caregiver_1: “Enkosi, @global.w_rules_teen_boy, ngokubuya ekhaya kwangethuba. Emva kokuba ugqibe umsebenzi wakho wesikolo singatya isidlo sangokuhlwa osithandayo.”", - "Making the rule together went well because...": "Ukuwenza sobabini umgaqo kusebenzile ngenxa yokuba...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Baye bancokola ngezizathu zomgaqo \n* @global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy \n* Umgaqo ubucacile, ungqalile yaye ulungile \n* @global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy ebemazi @global.w_rules_female_caregiver_1 ebemxabisa ngenxa yokuba...", - "* She praised him\n* She rewarded him when he followed the rule": "* Uye wamncoma\n* Umnike umvuzo ngokulandela umgaqo", - "Let's think about what happened in this story.": "Makhe sicinge ngoko kwenzekileyo kweli bali.", - "What went well here in making a rule together?": "Yintoni ebintle apha ngokwenza umgaqo kunye?", - "They discussed the reasons behind the rule": "Baye bancokola ngezizathu zomgaqo", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy", - "The rule was clear, specific and fair": "Umgaqo ubucacile, ungqalile yaye ulungile", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", - "That's right, making clear rules together in a calm and positive way works so well!": "Unyanisile, ukwenza imigaqo ecacileyo kunye ngendlela ezolileyo neyiyo kunceda kakhulu!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Ucinga ukuba u @global.w_rules_teen_boy wazi njani ukuba u @global.w_rules_female_caregiver_1 uyamxabisa?", - "She praised him": "Uye wamncoma", - "She rewarded him when he followed the rule": "Umnike umvuzo ngokulandela umgaqo", - "Exactly - a positive response makes all the difference!": "Uchanile - impendulo eyiyo iyawenza umahluko!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Imigaqo yekhaya inceda ukugcina abantwana bethu abafikisayo bekhuselekile, baze baqonde oko kulindelekileyo kubo. Xa umbandakanya umntwana ofikisayo ekwenzeni imigaqo banokuzimisela ngakumbi ekuyilandeleni.", - "TEAM RULES": "IMIGAQO YEQELA", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Yicebe KUNYE nomntwana wakho ofikisayo imigaqo. Qala ngomgaqo omnye omtsha - ungongezelela omnye kamva. Ncokola nabo ngezizathu zalo mgaqo uze uphulaphule izimvo zabo.", - "REAL RULES": "IMIGAQO YOKWENENE", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Yenze ibe sengqiqweni ilungelane noko umntwana wakho ofikisayo anokukwenza, uze uyibeke icace ize ingqale ukuze iqondwe kakuhle. Kungekhona ‘ngexesha’ kodwa ‘ngo-7pm’.", - "PRAISE RULES!": "IMIGAQO YOKUNCOMA!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Mncome umntwana wakho ofikisayo ngokuceba umgaqo kunye nawe, uze ubancome ngokuwugcina!", - "Online Safety": "Ukhuseleko kwi-Intanethi", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Imigaqo ibalulekile ukugcina umntwana wakho ofikisayo ekhuselekile - nakwi-intanethi. Kukho okungakumbi ngale nto kuQeqesho lweVeki nganye olungokuceba ukhuseleko, kodwa masesiqaliseni sijonge ngoku!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, ngaba uwenzile umsebenzi wakho wesikolo?\"\n\n@global.w_rules_teen_girl: “Kancinci nje @global.w_rules_female_caregiver_2, ndigqibezela le @global.teen_social_medium vidiyo\"", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Ungumdanisi ophum’ izandla ngokwenene! Ndixelele isizathu sokuba uwuthande\"\n\n@global.w_rules_teen_girl: \"Bonke abahlobo bam bakuwo, @global.w_rules_female_caregiver_2. Ndineelikes eziyi-600 neefollowers eziyi-120.\"", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ndiyazidla ngendlela odanisa kamnandi ngayo, @global.w_rules_teen_girl. Kodwa simele siqinisekise ukuba ukhuselekile. \n\nNdiyazi ukuba abahlobo bakho bajonga ku @global.teen_social_medium, kodwa ngeakhawunti evulekileyo, kukho nabanye abantu abajonga iividiyo zabantu abafikisayo bencwase ukwabelana nabo ngesondo. Maxa wambi baye baqhagamshelane nabantu abafikisayo. Bazenza ngathi banobuntu kodwa baphela besongela baze babaxhaphaze abantwana abafikisayo.”", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Makhe sijonge kunye kwi-intanethi ukuze sibone ukuba singaqhubeka njani siqiniseka ukuba wonwabile kodwa ukwakhuselekile. Khangela – ungenza iakhawunti yakho ibe nobumfihlo uze ulawule abantu abakulandelayo.\n\nUngamkela abantu obaziyo esikolweni nakwindawo esihlala kuyo, kungekhona abantu abaqhagamshelana nawe kwi-intanethi.\n\nNgaba singawenza kunye umgaqo onokuwusebenzisa @global.teen_social_medium, kodwa kwiakhawunti yabucala? Ndiyathemba uyazi ukuba ngubani omawumamkele!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: Ndiyazidla ngawe @global.w_rules_teen_girl\"", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Nguwuphi umgaqo omnye obalulekileyo ngamnye kuni ongathanda ukuwenza nomntwana wakho ofikisayo? \n* Ucinga ukuba umntwana wakho ofikisayo uza kucinga ngantoni ngalo mgaqo? \n\nKhumbula, yenze imigaqo ingqale yaye ibe sengqiqweni!", - "Here are some of the rules other families created:": "Nantsi eminye imigaqo eziye zayiyila ezinye iintsapho:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Abantwana abafikisayo bangadlala phandle emva kokugqiba ukwenza umsebenzi wesikolo\n* Onke amalungu entsapho atya kunye idinala\n* Umntwana ofikisayo 1 uhlamba izitya ngeCawa nangoMvulo, Umntwana ofikisayo 2 uzenza ngoLwesibini nangoLwesithathu\n* Sincokolisana ngesimilo nangobubele\n* Xa ufuna ukumamela umculo uwuphulaphula ngee- earphones", - "Let's practice making rules.": "Makhe siqhelisele ukwenza imigaqo.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Bhala phantsi umgaqo omnye obalulekileyo ongathanda ukuwenza nomntwana wakho ofikisayo – uza kuwenza njengoqheliso lwasekhaya kule veki. \n\nBaya kucinga ntoni ngoku?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Kule veki, yenza umgaqo ube mnye nomntwana wakho ofikisayo.\n\nUngalibali ukumncoma umntwana wakho ofikisayo emva koko!", - "Great to hear that you are doing well. You are a wonderful parent!": "Kumnandi ukuva ukuba uqhuba kakuhle. Ungumzali osemagqabini!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Uxolo ngoba usuku lwakho alukuhambeli kakuhle. Wenze kakuhle ngokuzama ukubona yonke into. Akakho umntu onazo zonke iimpendulo kodwa eneneni wenza konke okusemandleni akho!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Uxolo ngokuva ukuba alumnandanga usuku lwakho. Uqhube kakuhle ngokuvuka rhoqo ntsasa nganye uphinde uzame kwakhona naxa sele udiniwe. Yinkalipho nokuzinikela kokwenene!", - "Step 1: Share what went well and what was hard": "Inyathelo 1: Sibalisele oko kuye kwahamba kakuhle noko kuye kwanzima", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ndifunde lukhulu ngobomi bomntwana wam ofikisayo xa sikhe sachitha ixesha sobabini! Kodwa emva kosuku lokuqala, umntwana wam ofikisayo ebefuna ukudlala efowunii yakhe nje qha.”", - "Step 2: Bring ideas!": "Inyathelo 2: Yiza nezimvo!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "Usebenzile ngokuzama! Mhlawumbi ungacebisa ezinye izinto zolonwabo eninokuzenza kunye nomntwana wakho ofikisayo.”\n\n“Ewe, okanye ningenza okuthile kunye efowunini yakhe? Okanye angakubonisa indlela esebenza ngayo ifowuni yakhe?”", - "Step 3: Pick and try one!": "Inyathelo 3: Khetha uze uzame ibe nye!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Enkosi ngezo ngcamango zisemagqabini! Ewe, makhe ndicele umntwana wam ofikisayo andibonise indlela esebenza ngayo ifowuni yakhe ngomso emva kokuphuma kwesikolo. Ngaba omnye wenu angazenza umntwana wam ofikisayo ngoku, ukuze ndiqhelisele ukumbuza?”", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola:\n\n* Yintoni ehambe kakuhle ibe yintoni eye yanzima?\n* Zeziphi izisombululo eninokucinga ngazo?\n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ukuncoma sesona sakhono sinamandla ebuzalini.\n\nUkuba siyabancoma abantwana bethu abafikisayo xa besenza izinto kakuhle, siya kubabona besenza izinto ezingakumbi nezinto ezininzi ezintle!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Molweni, kuni nonke. \n\nUmxholo wethu namhlanje umalunga nokuncoma. \n\nKuhle ukubancoma abantwana bethu xa benze into entle kuba xa sisenza loo nto, baya kubonisa isimilo esihle kakhulu esithanda ukusibona. \n\nYaye singalibali ukuzincoma nathi xa senze okuhle!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Imiphumo yokuncoma\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Imiphumo yokuncoma\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Amacebiso asebenzisekayo ekhaya", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Baliselanani:\n\n* Ugqibele nini ukubulelwa ngumntu okanye akuxelele ukuba wenze into esemagqabini? \nYakwenza waziva njani? \n* Uziva njani xa ungabulelwa okanye unconywe ngenxa yento oyenzileyo? \n\nAsidli ngakubulelwa okanye sinconywe ngokwaneleyyo njengabazali. Mhlawumbi unganika abantwana bakho abafikisayo umzekelo omhle uze ubancome kuqala xa besenza into entle!", - "Think about the last time someone thanked you, or said you did something great.": "Cinga ngokugqibela kwakho ukubulelwa ngumntu okanye wakuxelela ukuba wenze into esemagqabini.", - "How did it make you feel?": "Yakwenza waziva njani?", - "Parents usually don’t get thanked or praised enough.": "Abazali abadli ngakubulelwa okanye banconywe ngokwaneleyo.", - "How does it make you feel when nobody says \"thank you\"?": "Kukwenza uzive njani xa kungekho mntu othi “enkosi”?", - "Tired": "Uyadinwa", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Nomntwana wakho ofikisayo angavakalelwa ngendlela efanayo. Yiloo nto eyenza isixhobo sabazali sale veki sibe lula kodwa sibaluleke: Bancome ngento abayenza kakuhle.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Ukuncoma kunamandla kakhulu. \n\nMakhe sijonge umzekelo ka @global.w_praise_female_caregiver_name neentombi zakhe:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Xa u @global.w_praise_female_caregiver_name exakekile, iintombi zakhe ezimbini ziyalwa qho. Kodwa namhlanje, intombi yakhe enkulu iye yancedisa udadewayo ngomsebenzi wesikolo!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Enkosi ngokwenza umsebenzi wakho wesikolo, @global.w_praise_girl, yaye enkosi ngokuncedisa udadewenu, @global.w_praise_teen_girl. Ndiyazidla ngawe!”", - "Let's discuss this story.": "Makhe sincokole ngeli bali.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Ncokolani kunye:\n\n* Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?\n* Kutheni eye wabancoma?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name ubancomile abantwana bakhe abafikisayo...", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ukuze abenze bayenze rhoqo\n* Ukumnceda awugqibe umsebenzi wakhe \n* Ukubenza bazive kamnandi \n* Ukumenza lo mntwana azive kamnandi", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?", - "Why did she praise them?": "Kutheni eye wabancoma?", - "To get them to do it more often": "Ukuze abenze bayenze rhoqo", - "To help her finish her work": "Ukumnceda awugqibe umsebenzi wakhe", - "To make them feel good": "Ukubenza bazive kamnandi", - "To make herself feel good": "Ukumenza lo mntwana azive kamnandi", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Zonke ezo zinto ziyinyani! \n\nXa abantwana bakhe abafikisayo bonwabile, u-@global.w_praise_female_caregiver_name uziva onwabile. Yaye uye wawugqiba umsebenzi wakhe.", - "The same can work for you!": "Nawe le nto inokukunceda!", - "SEE IT": "YIBONE", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Khangela nantoni na umntwana wakho ofikisayo ayenzayo eluncedo okanye elungileyo, uze umncome ngenxa yoko. Basenokungayibonisi kodwa uya kubabona bephinda beyenza loo nto ilungileyo. Kanti iya kubaqinisekisa ukuba uyaqaphela yaye uyakhathala.", - "SAY IT": "YITSHO", - "Be enthusiastic – really mean it when you say it!": "Yiba nentshiseko – nyaniseka xa uyitsho!", - "REPEAT IT": "YIPHINDE", - "Try to find something to thank them for every day. Even something really small.": "Zama ukufumanisa into oza kubabulela ngayo suku ngalunye. Nditsho nento encinci kakhulu.", - "You can also praise other adults in your household, too. Notice how they respond!": "Kanti ungancoma nabanye abantu abadala ekhayeni lakho. Phawula indlela abasabela ngayo!", - "Let's practice giving praise.": "Masikuqhelisele ukuncoma.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Baliselanani: \n\n* Ungamncoma ngantoni umntwana wakho ofikisayo? \n* Yintoni enye into entle eyenziwe ngomnye umntu ebudeni bolu qeqesho? Baxelele!\n* Kukwenze waziva njani ukuncoma umntu?\n* Kukwenze waziva njani ukunconywa?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Maxa wambi kuba nzima ukucinga ngento onokumncoma ngayo umntwana wakho ofikisayo! Nanga amanye amacebiso avela kwabanye abazali:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ukuba noobubele emntwini \n* Ukucoca igumbi lakhe lokulala \n* Ukujoyinia isiddlo sentsapho \n* Ukubulisa amanye amalungu osapho \n* Ukunyamekela abanye abantwana bakowabo \n* Ukugoduka kwangethuba \n* Ukumcingela \n* Ukuthi ‘ndiyacela’ okanye ‘enkosi’ \n* Ukuya esikolweni \n* Ukwenza imisebenzi yasekhaya okanye eyesikolo \n* Ukuphathana ngoxolo ebudeni besidlo", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Uqheliselo lwasekhaya lwale veki kukuncoma umntwana wakho ofikisayo kube kanye ngosuku. Kuya kuthatha imizuzwana eli-10 nje qha!", - "Caring for yourself is so essential.": "Ukuzinyamekela kubaluleke kakhulu.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle Qhubeka nalo msebenzi mhle.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Khawuthathe ithuba uze uvuyiswe yiloo nto uyifezileyo, ngaphandle kwazo zonke ezinye izinto ekufuneka uzenzile usuku ngalunye.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Iintsapho ezininzi zixinezeleke ngenxa yemali, ingakumbi ukuba abantwana abafikisayo baqhubeka becela izinto! \n\nXa sisenza ibhajethi kunye, singavumelana ngendlela yokwenza inkcitho KUNYE nokonga ukuthintela uxinezeleko nokusebenzela kusukelo lwentsapho.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yibhajethi yentsapho \n\nKubalulekile ukuyila ibhajethi, kodwa kubaluleke nangakumbi ukuyila ibhajethi ebandakanya intsapho iyonke \n\nUkuyenza kunye kunceda ekwandiseni umlinganiselo wokuqonda indlela oyichitha ngayo imali njengentsapho nendlela oyongela ngayo intsapho, yaye ungade uze nezicwangciso zendlela eninokonga ngayo njengentsapho.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Ibali – loo nto ayikhange isebenze... \n* Ukuqhelisela ukubhajetha\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ingxubusho ngeendlela zokonga\n* Ukuqhelisela ukonga imali\n* Izixhobo: Indlela yokubhajetha nokonga\nCINGA - KHETHA - YAKHA - CEBA\n* Amacebiso asebenzisekayo ekhaya", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kunokuba nzima ukondla intsapho nyanga nganye. Iintsapho ezininzi zinale ngxaki! \n\nKuquka @global.w_money_grandma - makhe sijonge:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Bendinyamekela abazukulwana bam, @global.w_money_teen_girl no @global.w_money_teen_boy, ekubeni abazali babo basweleka besebancinci. Sisoloko sizamana nemali, njengoko ndifumana isibonelelo esincinci.”", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Ndixinezeleke kakhulu. Andisenamali iseleyo. Yaye ngoku ndilwa nabantwana bam abafikisayo ngezinto abazifunayo– kwakhona.\"", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye. Udinga:\n\n- Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni\n- Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali.\n \nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", - "A family budget can help @global.w_money_grandma - and YOU!": "Ibhajethi yentsapho inokunceda u @global.w_money_grandma - kunye NAWE!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Udinga: \n* Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni \n* Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali. \n\nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", - "Think about what we spend money on each month.": "Cinga ngezinto esichitha imali kuzo nyanga nganye.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imifanekiso yazo zonke izinto wena nentsapho yakho enichitha imali kuzo nyanga nganye. \n* Bhala ecaleni komfanekiso ngamnye ukuthi nto nganye iyimalini nyanga nganye. (Akukho mfuneko yokunikisa ngamanani ukuba akufuni.)\n* Dibanisa ukuba yimalini oye wayichitha nyanga nganye.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Kuhle gqitha! Uligqibile inyathelo 1! \n\nMasihlabele mgama!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* ukutya \n* amanzi nombane \n* iimpahla zokunxiba \n* iiakhawunti \n* umrhumo WOMABONWAKUDE \n* izithambiso \n* isaluni \n* iethayimu \n* intlawulo yesikolo \n* into yokukhwela \n* iipolisi zeinshorensi \n* amayeza \n* ukuzihlaziyo/imidlalo \n* irenti \n* imalimboleko \n* icawa", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Thethani kunye ngezinto enizidingayo nezinto enizifunayo\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Abantu badla ngokungaziboni ngendlela efanayo izinto. Xa sithetha ngezidingo neemfuno zethu, siqondana bhetele yaye sinokwenza ukhetho olululo kunye ngendlela yokusebenzisa imali yethu.\n\nJongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nixoxe:\n* Zeziphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo njengentsapho?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Cingani ngezinto enizidingayo nenizifuna nje\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Jongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nikhethe:\n* Zezphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo?", - "Make a budget!": "Yenzani ibhajethi!", - "Make a budget as one big family!": "Yenza ibhajethi njengentsapho enye enkulu!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Umntu omnye uza kuvolontiya aze asichazele ngoluhlu lwakhe (Ukuba akukho mntu uvolontiyayo ningenza uluhlu olutsha ninonke) \n* Dlalani indima zenu - abanye iya kuba ngabantu abadala, abanye ibe ngabantwana abafikisayo. \n* Gqibani ukuba umvuzo wenu wenyanga uza kuba yimalini.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.) \n* Gqibani kunye ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", - "Make a budget as a family!": "Yenzani ibhajethi njengentsapho!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Bhala phantsi ukuba uyimalini umvuzo wakho wenyanga.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.)\n* Gqibani ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Niqhube kakuhle, sele nigqibe amanyathelo ama-3 okuqala! \n\nMakhe sibone indlela u @global.w_money_grandma asenze ngayo isicwangciso sakhe ngemali, kanye njengokuba wenzile:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ndibafunela ikamva eliqaqambileyo abazukulwana bam, kodwa andazi ukuba ndingayifumana phi imali*. Oomatshonisa bayingozi yaye imali yabo uyibuyisa seyininzi kakhulu. \n\nNdimele ndonge imali, kodwa loo nto ibonakala ingenakwenzeka!”", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Usukelo lwam kukuqinisekisa ukuba umzukulwana wam ongumfana uyakwazi ukuya kwisikolo samabanga aphezulu aze umzukulwana wam oyintombazana akwazi ukufezekisa iphupha lakhe lokuya edyunivesithi. Ndingakwazi njani ukugcina imali eninzi ngale malana ndinayo?”", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Ndiyazi - masiqale ngesicwangciso! Okokuqala, masenze ibhajethi – isicwangciso sendlela endinokonga ngayo imali. Emva koko ndiza konga intwana yemali ngexesha – ndingade ndijoyine namaqela okonga nawembolekiso-mali.\"", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Kanti ndifanele ndithethe nabazukulwana bam ukuze sikhethe izinto esinokunciphisa inkcitho kuzo veki nganye. Baza kundincedisa ndicinge ngezinto esizifuna nje kodwa esingazidingiyo.”", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Kwiminyaka embalwa kamva:\n\n\"Jonga, siwafezekisile amaphupha ethu! Andikhange ndiboleke kwizihlobo okanye koomatshonisa. Ngokubeka imali encinci veki nganye, ndikwazile ukuhlawula imali ka @global.w_money_teen_boyyamabanga aphakamileyo ndaza ndabeka imali ethile ka @global.w_money_teen_girlyasedyunivesithi. Ndiyazidla ngale nto.”", - "What are your family savings goals?": "Luthini usukelo lwentsapho yakho lokonga?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Lusukelo oluhle kakhulu olo! \n\nLusukelo oluhle kakhulu olo! Xa sisenza ibhajethi entle nesicwangciso sokonga sikunye, singaphumelela size sizidle ngeziqu zethu!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sonke sinamaphupha ngeentsapho zethu, kanye njengo @global.w_money_grandma. Ngokubekela ecaleni intwana yemali nyanga nganye, bangazeka emzekweni", - "What are your family savings goals?": "Luthini usukelo lwentsapho yakho lokonga?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Lusukelo oluhle kakhulu olo! \n\nXa sisenza ibhajethi entle nesicwangciso sokonga, ningaphumelela nize nizidle ngeziqu zenu!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ukonga kubalulekile nangesinye isizathu: iimeko zongxamiseko! @global.w_money_grandma uye wayifunda le nto apha ekuhambeni:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Ngobunye ubusuku kwabakho isichotho esibi esonakalisa uphahla lwam. Yonke into yayikhukhulisekile. Ngesiquphe kwafuneka ndizame imali yokulungisa uphahla. Ndaziva ndoyisakele”", - "Let's talk about this story.": "Masithethe ngeli bali.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "U @global.w_money_grandma, wafunyanwa sisaqhwithi. \n\nZiziphi ezinye iimeko zongxamiseko ezinokusifikela?", - "Let's think about this story.": "Makhe sicinge ngeli bali.", - "For @global.w_money_grandma, a storm happened.": "U @global.w_money_grandma, wafunyanwa sisaqhwithi.", - "What other emergencies could come up for your family?": "Ziziphi ezinye iimeko zongxamiseko ezinokufikela intsapho yakho", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Iimeko zongxamiseko zinokufikela intsapho yam. Ukugcina imali ukwenzela ezi meko zongxamiseko NGAPHAMBI kokuba zehle kuthintela amaxhala noxinezeleko lwequbuliso!", - "Let's talk about different ways we can save.": "Makhe sithethe ngeendlela ezahlukeneyo esinokonga ngazo.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Ncokolani kunye: \n* Ziziphi iindlela ezahlukeneyo esinokonga ngazo? \n* Ziziphi iingenelo neengxaki zokhetho ngalunye lokonga? \n\nUkuqonda ukhetho ngalunye kakuhle kuya kukunceda wenze isigqibo ngolona khetho lokonga lusemagqabini ngentsapho yakho. \n\nEnoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", - "Let's think about different ways we can save.": "Makhe sicinge ngeendlela ezahlukeneyo esinokonga ngazo.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kukho iindlela ezahlukeneyo esinokonga ngazo: ekhaya, ukuthenga izinto esinokuzithenga kamva, ebhankini, okanye kwiqela lokonga.\n\nCinga ngeengenelo neengxaki zokhetho ngalunye lokonga.", - "What is the best savings option for your family?": "Ziziphi ezona ndlela ziphambili zokonga kwintsapho yakho?", - "Whatever savings plan you choose, it will really help your family move forward!": "Enoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Ceba indlela onokonga ngayo imali, ukuze uhlangabezane neemeko zongxamiseko ukuze ufikelele usukelo lwentsapho yakho!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Ukuba unokonga neyona mali incinci ukwenzela ikamva okanye imeko yongxamiseko - ingenza umahluko omkhulu ngokuhamba kwexesha. \n* Yongeza isangqa esibizwa ngokuba “ziimeko zongxamiseko”.\n* Yongeza isangqa esithi “usukelo lwentsapho.”\n* Ngoku zama ukudlulisela imali yakho ukuze wonge intwana nyanga nganye ukwenzela nganye kwezi.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwiqela lakho ukufanele ukunconywa, akunjalo?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwintsapho yakho ukufanele ukunconywa, akunjalo?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "SIVUYISANA NAWE!!! Uyenzile ibhajethi yakho – khumbula ukuphinda wenze olu qheliselo kunye namanye amalungu entsapho yakho - Ukuba niyavumelana ngokwenza isicwangciso kunye loo nto iya kwenza umahluko omkhulu!", - "Step 1: THINK": "Inyathelo 1: CINGA", - "What do we spend on now?": "Imali siyichitha entwenini ngoku?", - "THINK Activity": "Umsebenzi WOKUCINGA", - "Step 2: CHOOSE": "Inyathelo 2: KHETHA", - "Talk together about needs and wants": "Thethani kunye ngezidingo neemfuno", - "CHOOSE Activity": "KHETHA Umsebenzi", - "Step 3: BUILD": "Inyathelo 3: YAKHA", - "Make your own budget": "Yenza ibhajethi yakho", - "BUILD Activity": "YAKHA Umsebenzi", - "Step 4: PLAN": "Inyathelo 4: CEBA", - "Emergencies and family goals": "Iimeko zongxamiseko nosukelo lwentsapho", - "PLAN Activity": "CEBA Umsebenzi", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Phinda wenze ibhajethi - ngeli tyeli KUNYE nomntwana wakho ofikisayo nentsapho yakho! \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size silweze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hlola ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. Oku kuya kukhumbuza wonke umntu ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", - "Steps to make a budget": "Amanyathelo okwenza ibhajethi", - "Wonderful, I am so happy! Keep up the good work.": "Kuhle, ndivuya kakhulu! Qhubeka nalo msebenzi mhle.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Uxolo ngokuba iimeko zinzima. Zonke iintsapho zitsala nzima. Sikhona ukuze sikuncede!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Nantoni na engahambanga kakuhle namhlanje, yilibale uze uze uzame kwakhona ngomso Kulungile!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Nikela iingqalelo kwizinto ezintle! \n\nUkuxelela abantwana bethu abafikisayo ukuba sifuna BENZE ntoni kusebenza bhetele kunokubaxelela ukuba BAYEKE ukwenza into ethile.\n\nUza kuwubona umahluko", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Molweni, molweni kuni nonke.\n\nNamhlanje umxholo wethu yimiyalelo emihle. \n\nKubalulekile ukunikela imfundiso entle kubantwana bethu, ngenxa yokuba xa sibanika imfundiso entle bayazi baze baqonde oko silindele ukuba bakwenze, yaye bakwenza ngale ndlela sifuna bakwenze ngayo. \n\nNgoko ekugqibeleni loo nto ishiya wonke umntu onwabile.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Ulingo lokucinga!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Ulingo lokucinga!\n* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Amacebiso asebenzisekayo ekhaya", - "Let’s do a thought experiment!": "Makhe senze ulingo lokucinga!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "MUSA UKUCINGA NGENDLOVU \n\nUcinga ngantoni?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Mhlawumbi UYE wacinga ngendlovu...\n\n‘Musa ukunikela imiyalelo ebangela abantwana abafikisayo bacinge ngaloo nto. \n\nMaxa wambi badla ngokungayiqonidi EYONA nto siyifuna kubo. \n\nKanti badla ngokungathandi ukuxelelwa ukuba mabangenzi izinto (asinjalo sonke?)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "NGOKU, CINGA NGENGWENKALA! \n\nUcinga ngantoni?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Kulungile! Umyalelo, osengqiqweni ocacileyo unceda abantwana abafikisayo banikele ingqalelo kwinto abafanele bayenze. \n\nAbantwana abafikisayo baya kuziva behlonitshwa ngakumbi ngale ndlela, yaye banamathuba amaninzi okuphulaphula.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Masibone ukuba kwenzeka ntoni ukuba @global.w_instruct_female_caregiver uthi @global.w_instruct_teen_girl \"MUSA\":", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso nomhlobo wakhe.\n\n@global.w_instruct_female_caregiver: “Musa ukungcolisa ngoxa ndicoca indlu. Umi endleleni!”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kodwa kufuneka ndilungiselele ukhuphiswano lwasesikolweni. Awufuni ndenze nto wena.”\n\n@global.w_instruct_female_caregiver: “Musa ukundiphendula!”", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Tyhoo!! Kutheni ndihleli nje ndiyangxoliswa????”\n\n@global.w_instruct_female_caregiver uyambombozela: “Lo mntwana usoloko esenza inkathazo.”", - "Let's discuss what happened in this story.": "Makhe sincokole ngento eyenzekileyo kweli bali.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Ncokolani kunye: \n\n* Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo? \nYIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver ebenokuthi...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Ngethethe into entle kuqala \n* Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo \n* Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo?", - "Sad": "Ulusizi", - "Confused": "Ubhidekile", - "Angry": "Unomsindo", - "What could @global.w_instruct_female_caregiver have done differently?": "YIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", - "Said something nice first": "Ngethethe into entle kuqala", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo", - "Told @global.w_instruct_teen_girl what she wants her to do": "Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Enkosi ngokucinga ngolu hlobo! \n\nMakhe sibuyele umva size sibone ukuba kwenzekani ukuba u @global.w_instruct_female_caregiver unikela umyalelo ofanelekileyo:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso. nezihlobo zakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kumnandi ukunibona niqhelisela umdaniso nomhlobo wakho. Ndicela niye phandle ndizogqibezela ukucoca indlu. Emva koko, ningandibonisa umdaniso wenu.\"\n\n@global.w_instruct_teen_girl: \"Kulungile, @global.w_instruct_female_caregiver .\"", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Enkosi ngokuqhelisela phandle ngoxa ndigqibezela ukucoca, @global.w_instruct_teen_girl. Ngoku ndinexesha lokubukela umdaniso wenu.\"", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! Nidanisa kamnandi kakhulu!\"", - "Let's discuss what happened this time.": "Makhe sincokole ngento eyenzekileyo kweli ityeli.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Ncokolani kunye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?\n* Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", - "It worked better this time because...": "Kube kuhle kweli tyeli ngenxa yokuba...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile \n* @global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", - "Positive instructions can work with your teen too!": "Imiyalelo emihle inokusebenza nakumntwana wakho ofikisayo!", - "GET REAL": "YIBA SENGQIQWENI", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Ngaba umntwana wakho ofikisayo angakwazi ukuyenza le nto uza kuyicela? Kusenokuba nzima kubo ukufunda ngelizwi eliphantsi imini yonke, kodwa isiqingatha seyure xa ufuna njalo kusengqiqweni.", - "GET POSITIVE": "YIBA NGOWAKHAYO", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Ncuma umjonge emehlweni uze usebenzise amagama amnandi. Bancome xa beqalisa ngoko nangoko ukwenza oko ukucelayo!", - "GET CLEAR": "THETHA NGOKUCACILEYO", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ngokufuthi siyakwazi oko sikufunayo ezingqondweni zethu, kodwa asikuchazi ngokucace ngokwaneleyo. Kuchaze ngokuthe ngqo oko ufuna umntwana wakho ofikisayo akwenze. Zama ‘nceda goduka ngo-7pm’ kunokuba ‘ufike ekhaya ngexesha’.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Masiqhelisele ukunika imiyalelo EYIYO, EYAKHAYO NECACILEYO. Ukuqhelisela kuya kukunceda uphumelele ekuqhubaneni nomntwana wakho ofikisayo!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Khetha ababini kwiqela lakho:\n* Umntu omnye uzenza umntwana ofikisayo\n* Omnye uzenza umzali womntwana\n* “Umzali”: Nika ‘umntwana wakho ofikisayo’ umyalelo owakhayo onokhuthazo nezincomo\n* “Umntwana ofikisayo”: Sabela ngendlela ocinga ukuba umntwana ofikisayo angasabela ngayo kule nto. \n\nNcokolani kunye ngendlela okuhambe ngayo oku:\n* Oku kukwenze wavakalelwa njani “njengomzali” “nanjengomntwana ofikisayo”?\n* Ngaba ungenza nantoni na ibe bhetele?\n\nNika wonke umntu ithuba lokuba “ngumzali” “nomntwana” ukuba uyakwazi. Ukuqhelisela kubangela impumelelo!", - "Examples of positive instructions:": "Imizekelo yemiyalelo eyakhayo:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ndiyawuthanda umculo wakho. Ungawuthoba xa kusityiwa ukuze sikwazi ukuthetha? * Enkosi – Ndiyayixabisa loo nto. \n* Umnandi lo mculo. Ngubani yona imvumi? Nceda ucime umculo xa ungena endlini. Ungawudlala egumbini lakho ungavakali ukuba uyafuna. Enkosi!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Uqheliselo lweveki lwasekhaya lwenzelwe ukunika umntwana wakho ofikisayo imiyalelo eyakhayo.\n\nKhumbula – YIBA SENGQIQWENI, YIBA NGOWAKHAYO, THETHA NGOKUCACILEYO = FUMANA KANYE LE NTO UYIFUNAYO (kangangoko kunokwenzeka kumntwana wakho ofikisayo!)", - "We care about you, and how life is treating you.": "Sikukhathalele, kunye nendlela ubomi obukuphatha ngayo.", - "You are a star. And you are making a real difference. Be proud of yourself.": "Uligqala. Yaye uyawenza umahluko. Zingce.", - "Sorry that things are not easy today. All parents have these days.": "Uxolo kuba izinto zingekho lula namhlanje. Iimini ezinje ziyabafikela bonke abazali.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Vala amehlo, utsale umoya, uze wazi ukuba yonke into oye wayenza ibaluleke kakhulu.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Ntsapho nganye ijamelene nemiceli-mngeni kodwa xa sisebenza sonke singahlangabezana neengxaki ngendlela ephumelelayo nenoxolo. \n\nObunjani ukumangalisa ubuchule obunokufundwa ngumntwana wakho ofikisayo!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukusombulula ingxaki. \n\nSonke siyazi ukuba ebomini akhona amaxesha esikhe sijamelane neengxaki, yaye sonke siyazi ngandlel’ ithile ukuba xa sizifumana sikwezi meko, kunzima ukucinga ngezicombululo ezikhawulezileyo ezakhayo. \n\nNgenxa yoko, kubalulekile ukuba xa sijamelene neengxaki khe sime, sithathe umoya, sizole size sicinge ngobuchule bokusombulula iingxaki esinokubusebenzisa. \n\nKhumbula ukuquka abantwana bethu abafikisayo xa sicombulula iingxaki. Oku kuya kubanceda baqole baze bafunde indlela yokucombulula iingxaki zabo kwixesha elizayo.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nengxubusho – oko kusebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Makhe sijonge oko kwenzekileyo ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe xa u @global.w_solve_teen_girl eye wafumana ifowuni kwinkwenkwe… ifowuni!", - "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyifumene kubani loo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 undithengele. Intle le fowuni, @global.w_solve_female_caregiver_1. Ithatha iifoto ezintle!”", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Andifuni kubona loo nto ibiza kangako! Ayilunganga laa nkwenkwe! Ucinga ukuba uza kumbuyekeza njani ngale nto?!” \n\n@global.w_solve_teen_girl: “Ayisebenzi ngolo hlobo, @global.w_solve_female_caregiver_1! Undidlel’ indlala!”", - "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Andifuni kuyiva loo nto!” \n\n@global.w_solve_teen_girl: “Awuzami nokundiphulaphula! Andazi noba bendiqalela ntoni ukuthetha nawe!”", - "Take a few deep breaths to calm down, and": "Thatha umoya izihlandlo ezimbalwa ukuze uzole, yaye", - "KNOW IT": "YAZI", - "Identify the problem.": "Fumanisa ingxaki.", - "SOLVE IT": "YISOMBULULE", - "Think of possible solutions and what would happen if we used them.": "Cinga ngezisombululo ezinokubakho nokuthi kungenzeka ntoni ukuba sinokuzisebenzisa.", - "TRY IT": "SIZAME", - "Choose a solution and try it out.": "Khetha isisombululo uze usizame.", - "TEST IT": "SIVAVANYE", - "Did it work? Great! If it did not work, then try another solution.": "Ngaba sisebenzile? Kulunge kakhulu! Ukuba asikhange sisebenze, khawuzame esinye isisombululo.", - "Let’s see how problem solving works in practice.": "Makhe sibone indlela ukusombulula iingxaki okusebenza ngayo ngokoqobo.", - "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 uyagoduka uvela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacinga): \"Yhoo torho iinyawo zam! Kufuneka khe ndithi vu kancinci ndiphunge ikomityi yekofu ngaphambi kokuba ndiqalise ukuphekela wonke umntu.”", - "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani ntoni? Sisonka sedinala eso! Ngoku asizosanela sonke!\"", - "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2, bendilambile. Ndingacacisa, yazi, kukho omnye umfana wasesikolweni...” \n\n@global.w_solve_female_caregiver_2 (uyacinga): “Khawume Kancinci… khawukhokh' umoya…”", - "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Khawundiphe nje umzuzu. Ndidiniwe yaye ngoku ndizikhathaza ngokufumana ukutya okwaneleyo kwedinala.” \n\n@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2\"", - "Step 1: KNOW IT": "Inyathelo 1: YAZI", - "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: \"Ngoku khawundixelele, kutheni ulambe kangaka? Khange uwutye umphako wakho wasesikolweni?” \n\n@global.w_solve_teen_boy_2: Nantso ke ingxaki. Kukho umfana esikolweni ondintlontayo. Uthi ukuba andimniki umphako wam wasesikolweni suku ngalunye, yena nabahlobo bakhe baza kundonzakalisa. Uyandiphambanisa!”", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ndibuhlungu ukuva loo nto kodwa ndiyavuya undixelele, @global.w_solve_teen_boy_2. Loo nto ayithethi ukuba umele utye idinala yomntu wonke. Emva kokuba sithethile, kufuneka uyokuthenga esinye isonka evenkileni. Kodwa kuqala: Ucinga ukuba sifanele senze ntoni ngale ngxaki yokuntlontwa kwakho?\"\n\n@global.w_solve_teen_boy_2: \"Kaloku… Ndifuna ukumbetha okanye ndiziphindezele kuye.\"", - "Step 2: SOLVE IT": "Inyathelo 2: YISOMBULULE", - "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… ucinga ukuba kuya kwenzeka ntoni kuwe xa usenza loo nto?\"\n\n@global.w_solve_teen_boy_2: \"Andazi. Mkhulu kunam ngoko mhlawumbi uza kundonzakalisa ngakumbi. Yaye ndingasenkathazweni esikolweni ndize ndigxothwe.”", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ewe, inokwenzeka loo nto. Yintoni esinokuyenza endaweni yaloo nto?\"\n\n@global.w_solve_teen_boy_2: “Mhlawumbi ndingaxelela utitshala. Kodwa abanye abantwana baza kuthi ndisisinyabi. Mhlawumbi ungathetha notitshala?”", - "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Kuvakala kulicebo elihle elo. Ndingakhe ndithethe nabazali bakhe ukuba ufuna ndenjenjalo.\"\n\n@global.w_solve_teen_boy_2: \"Kulungile. Ukuba ucinga ukuba nayo loo nto inganceda. Enkosi, @global.w_solve_female_caregiver_2\"", - "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Ndingakwenzela nantoni na, mntanam. Ndiza kwenjenjalo emva kokuba sitye idinala. Futhi uyazi yintoni? Ukuba leyo ayisebenzi, singazama nenye into kunye.\":\n\n@global.w_solve_teen_boy_2: \"Enkosi, @global.w_solve_female_caregiver_2\"", - "Step 3: TRY IT": "Inyathelo 3: YIZAME", - "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Emva kweveki… \n\n@global.w_solve_female_caregiver_2: \"Izinto zihamba njani esikolweni ngoku?\"\n\n@global.w_solve_teen_boy_2: “Kubhetele noko, le nkwenkwe ayisawuthathi umphako wam wesikolo. Kodwa isekrwada kakhulu kum.”", - "Step 4: TEST IT": "Inyathelo 4: SIVAVANYE", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: \"Ndiyayixolisela ukuva loo nto, @global.w_solve_teen_boy_2. Ndingamcela umalume wakho ayokuthetha nabazali bayo? Ukuba leyo ayisebenzi, siya kuzama enye into!\"\n\n@global.w_solve_teen_boy_2: \"Ewe, enkosi @global.w_solve_female_caregiver_2. Noko ndiyazi ukuba ungakum.”", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ncokolani kunye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Usakhumbula u @global.w_solve_teen_girl nala fowuni ayifumene enkwenkweni?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Makhe siye ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe ukuze sibone ukuba beze naziphi izisombululo.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "u @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe beze nezisombululo ezithathu.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ukuba ngumzali kubantwana abafikisayo kunzima ngokwenene. \n\nAmaxesha amaninzi akukho zicombululo zilula, kodwa ngoku @global.w_solve_female_caregiver_1 ufunde ukuba angathetha nentombi yakhe ngezi zinto. \n\nNgaphambili, ebekade ezikhathaza yedwa, ngoku bangeza nezigqibo kunye!", - "Ground @global.w_solve_teen_girl for a month": "Wohlwaye u@global.w_solve_teen_girl kangangenyanga", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Akuzi kuphuma kangangenyanga”", - "That didn’t work... Let's try something else.": "Loo nto ayikhange isebenze... Makhe sizame enye into.", - "Return the phone and save up": "Buyisa ifowuni ukuze wonge", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Andizami kutyhola umhlobo wakho okanye ukuba nomona. Ndikhathazwa kukuba xa umntu ekuphe isipho kunzima ukuthi ‘hayi’ xa efuna ukubhatalwa – njengokwabelana ngesondo. Ukuba ufuna ukuba nefowuni, siza konga sobabini ukuze ukwazi ukwenza izigqibo zakho ngaphandle kokumtyala into ethile.”", - "This is great! Try the third option as well.": "Kuhle! Zama nolunye ukhetho lwesithathu.", - "Learn about safe sex": "Funda ngokwabelana ngesondo okukhuselekileyo", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Oku kwenza ndiqonde ukuba simele sithethe ngamakhwenkwe nokuzikhusela. Abantwana abaninzi abafikisayo abalingana nawe bayakhulelwa okanye babe ne-HIV. Masiye ekliniki ukuze uthethe nomongikazi ukuze ubone indlela onokuhlala ngayo ukhuselekile.”", - "This is great!": "Kuhle!", - "Let's practice problem-solving!": "Makhe siqhelisele ukusombulula iingxaki!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Qheliselani kunye ngengxaki eninayo ngoku. Omnye kuni ngumzali aze omnye abe ngumntwana ofikisayo. \n\nNcomanani nize nikhuthazane - siyazidla ngani! \n\nUngawalibali la manyathelo: \nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Fundisa abantwana bakho amanyathelo amane okusombulula iingxaki:\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE \n\nWasebenziseni kunye la manyathelo xa kuvela ingxaki!\n\nXa kusenzeka into embi, sidla ngokuba nomsindo size sizibeke ityala. Kodwa abantwana bethu abafikisayo bafuna umntu oza kubanceda bafumane izicombululo. Baphulaphule, yamkele indlela abazibona nabaziva ngayo izinto yaye babulele ngokukuthemba.\n\nUkufundisa umntwana wakho ofikisayo ngendlela yokuhlangabezana neengxaki kuya kumnceda ubomi bakhe bonke. Sisipho sokwenene!", - "Some problems other parents solved with their teens:": "Ezinye iingxaki eziye zaconjululwa ngabazali nabantwana babo abafikisayo:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Umntwana wam akafuni kuya esikolweni\n*Ndinexhala lokuba umntwana wam angakhulelwa okanye amithise umntu\n* Ndixhalabile ngezinto ezenziwa ngumntwana wam ofikisayo kwi-intanethi\n* Umntwana wam ofikisayo uncokola nabahlobo abangalunganga\n* Umntwana wam ofikisayo uyonqena\n* Umntwana wam ofikisayo akawenzi umsebenzi wakhe wesikolo\n* Kusenokwenzeka ukuba umntwana wam ofikisayo usebenzisa iziyobisi", - "Being a great parent also means taking time to care for yourself every day.": "Ukuba ngumzali osemagqabini kukwathetha ukuthatha ixesha uzinyamekele suku ngalunye.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kuhle. Yaye kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ukuba ngumzali kunzima. Kodwa kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", - "Doing any of these makes you a great parent.": "Ukwenza nayiphi na kwezi zinto kukwenza ube ngumzali omangalisayo.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Abantwana abafikisayo bangachitha ixesha elininzi ngaphandle kwendlu okanye kwi-intanethi, apho kunzima ukuba sibagcine bekhuselekile. \n\nUkuthetha kunye ngeendawo ezikhuselekileyo nezingakhuselekanga, nendlela yokuthintela iingxaki, kunceda ngokwenene!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Molweni, kuni nonke. \n\nNamhlanje umxholo wethu umalunga nokhuseleko lwabantwana abafikisayo. \n\nKuyimbopheleleko yethu njengabazali ukugcina abantwana bethu abafikisayo bekhuselekile ngamaxesha onke. Kufuneka siqinisekise ukuba abantwana bethu abafikisayo bakhuselekile kwiindawo esihlala kuzo. Kuyimbopheleleko yethu ukubenza bazi ngeendawo ezikhuselekileyo nezingakhuselekanga. \n\nKanti ikwayimbopheleleko yethu ukuqinisekisa ukuba bayaziqonda iingozi abanokuzichanaba kuzo xa bekwi-intanethi. Ngaloo ndlela abantwana bethu abafikisayo baya kuqola baze bakwazi ukwenza izigqibo ezizizo ukuze bazigcine bekhuselekile nabo.", - "Today you will explore:": "Namhlanje uza kuhlola:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", - "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Unxibelelwano yeyona nto ibalulekileyo!\n\nMakhe sibone oko kwenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1:", - "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Ikho into eye yenzeka ngoxa ndiphume nabahlobo bam u @global.w_safe_teen_girl_2 no !@global.w_safe_teen_girl_3\"\n\n@global.w_safe_female_caregiver: \"Ndixelele, @global.w_safe_teen_girl_1\"", - "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Indoda esemotweni: “Hey nzwakazi. Kudala ndikujongile. Umhle nyhani, ngubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe ngu @global.w_safe_teen_girl_1”", - "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Indoda esemotweni: “@global.w_safe_teen_girl_1, ungathanda ukuhamba nam sifumane into yokusela namashwamshwam? Yiza kaloku, khwela, sawukhawuleza sibuye ndiyakuthembisa…” \n\n@global.w_safe_teen_girl_1: Andiqiniseki ukuba kulungile ukwenza loo nto…”", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Unethamsanqa, mhlobam. Akwaba indoda ibingacela UKUNDIKHUPHA ize indithengele izipho. Ndiyakuxelela, ukuba akuyenzi lento ndiza kuxelela wonke umntu ukuba usisibhanxa!”", - "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 sukuya! Lumka! Masigoduke. Kuyingozi ukuhamba nabantu ongabaziyo. Ngapha koko, mdala gqith’ kunawe lowa yaye ayilunganga le nto ayenzayo.\"\n\n@global.w_safe_teen_girl_1: “Hay ndixakiwe…”", - "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: \"Pfff, ndiyazidla ngento yokuba ungakhange ukhwele kula moto. Ibiyimeko eyingozi le, enkosi ngokundixelela!”", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "Makhe sithethe ngoko kwenzekileyo @global.w_safe_teen_girl_1", - "Discuss together: \n\nWhat was risky about that situation?": "Ncokolani kunye: \n\nYintoni ebiyingozi ngala meko?", - "The situation was risky because...": "Le meko ibiyingozi ngenxa yokuba...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho \n* umhlobo ka @global.w_safe_teen_girl_1 ebemkhuthaza \n* Ukuhamba nendoda endala kubeka u@global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto \n* Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala \n* Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "Makhe sicinge ngoko kwenzekileyo @global.w_safe_teen_girl_1:", - "What was risky about that situation?": "Yintoni ebiyingozi ngala meko?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho", - "@global.w_safe_teen_girl_1's friend was encouraging her": "umhlobo ka @global.w_safe_teen_girl_1ebemkhuthaza", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ukuhamba nendoda endala kubeka u @global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto", - "Many girls in our communities get pregnant or catch HIV from older men": "Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", - "All those things are true!": "Zonke ezo zinto ziyinyani!", - "Let's look at another example of a dangerous situation together.": "Makhe sijonge omnye umzekelo wemeko eyingozi sikunye.", - "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: \"Umhlobo wam ebesoloko ethetha nomfana oyintanga yethu kwi-intanethi... Uza kumthumelela iifoto zakhe. Ngaba loo nto ibhetele kuba elingana nathi?”", - "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Ungumhlobo olungileyo kwainto yokuba ukhathazeke ngaye. Ukuthumela iifoto ezivuselelayo inkanuko kuyingozi kakhulu nako.”", - "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: \"Maxa wambi abantu abayiyo le nto bathi bayiyo kwi-intanethi – unokuthi ulingana nawe kodwa uyindoda endala eneminyaka engama-50. Okanye xa besohlukana, angathumela ezo foto kumntu wonke yaye umhlobo wakho angaziva ebuhlungu.”", - "Let's talk about our teens' online safety.": "Masithethe ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", - "What are some of the online risks for teens these days?": "Ziziphi ezinye iingozi ze-intanethi kubantwana abafikisayo kwezi ntsuku?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo. \n* Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga\n* Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale\n* Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.\n* Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", - "Let's think about our teens' online safety.": "Masicinge ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", - "What is the biggest online risk for teens these days?": "Yiyiphi eyona ngozi inkulu kwi-intanethi kubantwana bethu abafikisayo kule mihla?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo.", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!\n\nMakhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi:\n* Imephu yendawo esihlala kuyo\n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi.\n\nMasenze ezi mephu siliqela ke ngoku. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Ncokolani kunye:\n\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n \n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncomanani ngendlela eniyisebenzisa kakuhle ngayo i-intanethi!. \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", - "Safety Plan": "Isicwangciso Sokhuseleko", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Ngalo lonke ixesha uceba ukugcina isicwangciso sokhuseleko, cofa i @global.parent_point uze ubhiyozele impumelelo yakho!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Makhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi: \n* Imephu yendawo esihlala kuyo \n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki - ukuba umntwana wakho ukhona ngoku, ningayenza kunye ngoku!", - "My family can join in now!": "Intsapho yam ingajoyina ngoku!", - "Let me try it out by myself": "Makhe ndiyizame ngoku ngokwam", - "Step 1: What are important places in your community?": "Inyathelo 1: Ziziphi iindawo ezibalulekileyo kwindawo enihlala kuyo?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imephu yendawo ahlala kuyo umntwana wakho ofikisayo, kunye nemifanekiso yazo zonke iindawo ezibalulekileyo njengezitrato, umzi wakho, isikolo, iivenkile, iindawo ezityelelwa ngumntwana wakho ofikisayo.", - "Step 2: Which places are safe and unsafe?": "Inyathelo 2: Ziziphi iindawo ezikhuselekileyo nezingakhuselekanga?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Ncokolani kunye:\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", - "Step 3: Where can you get support?": "Inyathelo 3: Ningayifumana phi inkxaso?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nentlekele? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha. \n\nApha ngezantsi kukho iindawo ezinokuba luncedo", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Maxa wambi, singazifumana sisengxakini.\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", - "Step 4: What are risky places online and how can you make them safer?": "Inyathelo 4: Ziziphi iindawo eziyingozi kwi-intanethi yaye ungazenza njani zikhuseleke?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncoma abantwana bakho abafikisayo ngendlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Yiphawule indlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Cingani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", - "MAPS": "IIMEPHU", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Yenzani IIMEPHU kunye nomntwana wakho ofikisayo zemimandla ekhuselekileyo nengakhuselekanga kwindawo ohlala kuyo nakwi-intanethi. Thetha ngendlela anokugcina ngayo inkcazelo yakhe, iifoto neevidiyo ziyimfihlo kwi-intanethi. Mxelele ukuba into ayifaka kube kanye kwi-intanethi, ihlala apho ngonaphakade. Kusenokwenzeka ukuba banomzekelo abawaziyo womhlobo wabo.", - "RULES": "IMIGAQO", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Yenza IMIGAQO kunye nomntwana wakho ofikisayo ngokusebenzisa ngokukhuselekileyo ii-app neewebhsayithi azithandayo. \n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", - "Online Safety Story": "Ibali Lokhuseleko kwi-Intanethi", - "AMNESTY": "UXOLELO", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Yenza isivumelwano SOXOLELO. Ukuba kwenzeka into emcaphukisayo, engamonwabisiyo okanye emoyikisayo, angathetha nawe yaye awuyi kuba nomsindo okanye umohlwaye, kwanokuba bebesenza into engafanelekanga.\n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", - "Safety Amnesty Story": "Ibali Loxolelo Lokhuseleko", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Ukuba ngumzali kwidijithali kuyafana nokuba ngumzali kwiimeko eziqhelekileyo. Uthathe INYATHELO ELIKHULU lokugcina umntwana wakho ekhuselekile kwindawo ohlala kuyo KUNYE nakwi-intanethi. Wenza kakuhle!", - "Resources to help in the community": "Izinto zokunceda kwindawo ohlala kuyo", - "Online Safety Resources": "Izinto Zokhuseleko kwi-Intanethi", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Ukuba anikayenzi kunye okwangoku, yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", - "Safety Plan Activity": "Umsebenzi Wesicwangciso Sokhuseleko", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Kuhle ngeyona ndlela! Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Sibuhlungu yimini enzima le. Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe indlela yokukuxhasa njengomzali kwixesha elizayo.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe inkxaso yexesha elizayo kwi-@global.parent_app.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Molweni, kuni nonke.\n\nUmxholo wanamhlanje ungokubhiyoza kunye namanyathelo alandelayo.\n\nBekumangalisa, bekumnandi ukuba kunye nawe kolu hambo. Namhlanje sibhiyozela uhambo lwethu kunye. \n\nNamhlanje sibhiyozela zonke izinto esizifundileyo kulo lonke uqeqesho.", - "Today you will celebrate, look back and look ahead:": "Namhlanje siza kubhiyoza, sijonge izinto ezidlulileyo size sikhangele phambili:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "*Ingxubusho nokucinga\n* Izixhobo: Indlela yokuxhasana\nUKUDIBANA - UKUFOWUNA -UKUTHUMELA UMYALEZO - UKWABELANA\n* Ukuceba inkxaso", - "Today you celebrate and reflect on your experiences.": "Namhlanje uyabhiyoza uze ucinge ngamava akho.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Wena nentsapho yakho nifunde into eninzi gqitha. Makhe sibuyele emva size sibone izinto ezitshintshileyo.", - "Reflect": "Ukucinga emva", - "Listen and reflect": "Mamela uze ucingisise", - "Read and reflect": "Funda uze ucingisise", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Vala amehlo uze uphole.\n\nCinga ngobomi bosapho lwakho ngaphambi kokuba waqalisa uhambo lwakho ngale app.\n \nCinga ngezakhono oye wazifunda:\n* Ukuzikhathalela\n* Ixesha enilichitha kunye\n* Ncoma\n* Imiyalelo eyakhayo\n* Ukulawula uxinezeleko\n* Ibhajethi yosapho\n* Imithetho\n* Imiphumo ezolileyo\n* Ukusombulula iingxaki\n* Ukhuseleko lwabantwana abafikisayo\n* Ukuhlangabezana neengxaki\n\nCingisisa ngohambo – belunjani kuwe:\n* Ncokolani ngamacebiso nangamava\n* Cingisisa uze ufunde kumabali\n* Qhelisela izakhono kunye nomntwana wakho ofikisayo\n\nNgaba kukho nto itshintshileyo kuwe nakusapho lwakho?\n\nYintoni oyidingayo ukuze uqhubeke usebenzisa izakhono?", - "Let's talk about what has changed.": "Makhe sithethe ngezinto ezitshintshileyo.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Ncokolani kunye:\n* Yintoni etshintshileyo kwintsapho yakho?\n* Zintoni onebhongo ngokuzenza?\n\nNingalibali ukuncoma kunye nokukhuthazana!", - "MEET": "DIBANANI", - "Keep meeting regularly to give each other parenting support.": "Qhubekani nidibana rhoqo ukuze nixhasane njengabazali.", - "CALL": "FOWUNANI", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Yibani 'ngabazali abazitshomi’ ukuze nifowunelane xa nikhathazekile okanye ningazi ukuba nenze ntoni.", - "TEXT": "THUMELA UMYALEZO", - "Text each other every week to share what you’ve done well.": "Thumelani umyalezo qho ngeveki ukuze nabelane ngezinto enizenze kakuhle.", - "SHARE": "YABELANANI", - "Share @global.parent_app and help other families start their journey.": "Yabelanani nge-@global.parent_app nize nincede ezinye iintsapho ziqale uhambo lwazo.", - "End of programme check-in": "Uphela kwenkqubo yokungena", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Uye wasebenzisa i@global.parent_app kwezi nyanga zidlulileyo, kodwa ukuba ngumzali kumntwana ofikisayo kokwexesha elide! Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sihlole ukuba ngumzali kwakho.\n\nNyaniseka. Ukhumbule ukuba izigidi zabazali zivakalelwa ngale ndlela ovakalelwa ngayo kwaye sonke siyayifuna inkxaso. Awukho wedwa!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Cebani ngendlela eniza kuxhasana ngayo ukususela ngoku. \n\nNingasebenzisa amacebiso avela kwezinye iintsapho okanye nizicingele awenu!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Wamkelekile! Kumnandi ukuba kunye nawe apha. Le veki INGAWE. \n\nKolu qeqesho lokukwamkela uya: \n* Kufumana izixhobo zokuzinyamekela \n* Vumelanisa le app neemfuno zakho", - "Wonderful, I am so happy things are going well.": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Uxolo ngokuba iimeko zinzima ngoku. Kuyinto eqhelekileyo ukuba usokole maxa wambi. Khumbula ukuba awukho wedwa!", - "Why @data.workshop.w_self_care.short_title?": "Kutheni i-@data.workshop.w_self_care.short_title?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Asisoloko sizinyamekela ngokwaneleyo. Kodwa oku kubaluleke kakhulu, ingakumbi njengomzali! \n\nUkunciphisa uxinezeleko lwethu nokuzinyamekela kunceda thina KUNYE nabantwana bethu abafikisayo.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukuzinyamekela. \n\nKukho amaxesha apho siba nemiceli-mngeni, apho sijamelana neengxaki yaye singazi ukuba masenze ntoni. Kubalulekile ukuzinyamekela sifunde ubugcisa bendlela esinokuzigcina ngayo sizolile xa kunokuvela iingxaki, imiceli-mngeni okanye eminye imiba. \n\nXa sizolile sikwimeko entle yokucinga ngendlela eyiyo size size nezisombululo ezifanelekileyo kuwo nayiphi na imiceli-mngeni esinokujamelana nayo.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Namhlanje uya kufumana imisebenzi emi-3 enokukunceda ukwazi ukuzinyamekela, yaye siya kukubuza\nimibuzo embalwa ukuqinisekisa ukuba i-app ikulungele kusini.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Umsebenzi wokuphola\n* Umsebenzi wokuqonda\n* Umsebenzi womvuzo\n* Izixhobo: * Indlela yokongeza ukuzinyamekela\n* Vumelelanisa le app neemfuno zakho\n* Amacebiso asebenzisekayo ekhaya", - "Let's try it out and do a short relaxation activity together!": "Makhe siyizame size senze umsebenzi omfutshane wokuphumla sonke!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Njengabazali, sisoloko singenalo ixesha lokuzinyamekela - kodwa kubaluleke kakhulu ukuyenza le nto! Ukunciphisa uxinezeleko lwethu kunceda thina KUNYE nabantwana bethu abafikisayo. \n\nMakhe sithathe inyathelo lokuqala size senze umsebenzi omfutshane wokuphumla sonke.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ukunikela ingqalelo kweyona nto sikwazi kakuhle ukuyenza kusinceda sinikele ingqalelo kwizinto ezakhayo. \n\nMakhe sithathe ithutyana sizincome. Siza kukubonisa indlela yokukwenza.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.\n\nXelelanani ngokuvakalayo: \"Ndenze kakuhle ngoku...\"\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", - "Recognise": "Qaphela", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Thatha ithutyana uzincome. \n\nNgoku siza kukubonisa ukuba ungenza njani.", - "Think of one thing YOU have done well recently.": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.", - "\"Well done to me for...\"": "\"Ndenze kakuhle ngoku...\"", - "Showing love to my children": "Bonisa uthando ebantwaneni bam", - "Getting up even though I felt tired": "Ukuvuka nangona ndiziva ndidiniwe", - "Smiling at someone": "Ukuncumela umntu", - "Making food to stay strong": "Ukwenza ukutya okundigcina ndomelele", - "Spending time with my children": "Ukuchitha ixesha nabantwana bam", - "Helping my children with schoolwork": "Ukuncedisa abantwana bam kumsebenzi wesikolo", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Yitsho ngokuvakalayo ukuba uyakwazi.\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", - "Well done! Try to do this every day.": "Usebenzile! Zama ukwenza lento usuku ngalunye.", - "Things to praise yourself for:": "Izinto onokuzincomela zona:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ukubonisa uthando ebantwaneni bam \n* Ukuvuka nangona uziva udiniwe. \n* Ukuncumela umntu \n* Ukwenza ukutya okundigcina ndomelele \n* Ukuchitha ixesha nabantwana bakho \n* Ukuncedisa abantwana bakho kumsebenzi wesikolo", - "Have a hot drink": "Fumana isiselo esishushu", - "Call a friend or relative": "Fowunela umhlobo okanye isizalwana", - "Have a relaxing bath": "Zifake emanzini uhlambe uphole", - "Read": "Funda", - "Watch TV": "Bukela UMABONAKUDE", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali. Baliselanani:\n\nZiziphi izinto ezincinci ezikwenza wonwabe?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye.\n\nSisebenzise esi sakhono xa usekhaya kwaye sifumane nanini na kwi-@global.parent_centre yakho!", - "Reward": "Umvuzo", - "We all deserve to treat ourselves well!": "Sonke kufuneka sizivise kamnandi!", - "What small thing makes you happy?": "Yintoni encinci ekwenza wonwabe?", - "Nice! Taking care of yourself is an important parenting skill!": "Kuhle! Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_1 okanye nantoni na eyenye oyinandiphayo.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_2 okanye nantoni na eyenye oyinandiphayo.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_3 okanye nantoni na eyenye oyinandiphayo.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_4 okanye nantoni na eyenye oyinandiphayo.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_5 okanye nantoni na eyenye oyinandiphayo.", - "Things you can do to reward yourself:": "Izinto onokuzenza ukuze uzivuze:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Fumana into yokuphunga\n* Fowunela umhlobo okanye isizalwana sakho \n* Ngena emanzini uhlambe uphole \n* Funda \n* Bukela UMABONAKUDE", - "RELAX": "PHOLA", - "Do a 30 second quick relaxation activity.": "Yenza umsebenzi oza kukupholisa okhawulezileyo wemizuzu engama-30.", - "RECOGNISE": "QAPHELA", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Nqumama kancinane uze ucinge ngento enye OYE wayenza kutshanje oye wayenza kakuhle! Yitsho ngokuvakalayo ukuba uyakwazi \"Ndenze kakuhle ngoku …\"", - "REWARD": "UMVUZO", - "Remember you deserve your quality time too! What makes you happy?": "Khumbula ukuba ufanelwe lixesha lokuzimamela nawe! Yintoni ekwenza wonwabe?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Njengoko ngoku uye wakha ubuchule bokuzinyamekela, masiqinisekise ukuba i- @global.weekly_workshops yakho ikulungele.", - "You seem to have completed the customisation process already. You can now skip this activity.": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Nanini na unako, phola, qaphela uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", - "Relax activity": "Umsebenzi wokuphola", - "Recognise activity": "Umsebenzi wokuqaphela", - "Reward activity": "Umsebenzi womvuzo", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Ixesha ngalinye uphola, cinga into ethile oye wayenza kakuhle okanye uzivuze, cofa i- @global.parent_points bhiyozela impumelelo yakho!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Ulugqibile uqeqesho lwale veki.\n\nSiza kuphinda senze eminye imisebenzi yokuzinyamekela xa udibana neqela lakho okokuqala - nonke nifanelwe kukuzinyamekela okuthe kratya!", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki 5 kwi-@global.parent_app.\n\nUqeqesho olutsha lokuba ngumzali lukulindele kwaye lunamacebiso endlela yokuhlala uzolile ibe usemandleni xa abantwana bethu abafikisayo besicaphukisa.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki 5 kwi-@global.parent_app.\n\nUqeqesho olutsha lokuba ngumzali lukulindele kwaye lunamacebiso endlela yokuhlala uzolile ibe uzibambile xa abantwana bethu abafikisayo besicaphukisa.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Sinoqeqesho olutsha olumalunga nokulawula umsindo kunye noxinezeleko. Luza kukunceda uzinyamekele.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala? Usebenzile ngokuqonda indlela wena kunye nabanye abantu enivakalelwe ngayo namhlanje! Ungalibali ukuba ngomso, lusuku olutsha kraca.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Sonke sikhe sizive ngathi izinto ziyasongamela ngamanye amaxesha. Ukutsala umoya kuyanceda! \n\nGqiba i-@local.workshop_data.in_text_title ukuze ufumane izixhobo eziluncedo ngendlela yokujamelana noxinezeleko.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Unjani umlinganiselo woxinezeleko lwakho kule veki? Zama ukutsala umoya kambalwa ngaphambi kokuba usabele kumntwana wakho ofikisayo - kwenza umahluko omkhulu.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Usebenzile ngokutsala umoya ngaphambi kokusabela kumntwana wakho ofikisayo! Qho xa usenza unqumamo, uye ukwazi ukuzibamba.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nNgokugqiba i@local.workshop_data.in_text_title kuqala, ubeka isiseko esibaluleke ngokwenene: Ukuba uziva kamnandi, usapho lwakho luyokwenza ngcono nalo!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha ekunceda uphole uze wakhe izakhono ezixabisekileyo!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Molo @field.user_name! Namhlanje sibhiyozela iinyanga ezimbini zokusebenzisa i-@global.parent_app! \n\nUqhuba kakuhle! Uqeqesho lwale veki luza kukunceda uyazi into omawuyenze xa umntwana wakho ofikisayo engayilandeli imithetho yekhaya.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Molo @field.group_name! Namhlanje sibhiyozela iinyanga ezimbini zokusebenzisa i-@global.parent_app! \n\nUqhuba kakuhle! Uqeqesho lwale veki luza kukunceda uyazi into omawuyenze xa umntwana wakho ofikisayo engayilandeli imithetho yekhaya.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Iyancomeka into yokuba usebenzisa i-@global.parent_app. Sele ufumene izixhobo ezi-6 kakade zokuba ngumzali! \n\nYenza uqeqesho olu landelayo ukuze ufumane esinye isxhobo sokuba ngumzali!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Gqiba uqeqesho uze uzame ukuncokola kunye nomntwana wakho ofikisayo ukuze nithethe ngomphumo omnye okhuthazayo nomphumo omnye ongathandekiyo xa enze into.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Ngaba wena nomntwana wakho sele nikwazile ukucinga ngomphumo omnye okhuthazayo kunye nomphumo omnye ongathandekiyo?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Imiphumo yokuzola imnceda nyhani umntwana wakho ofikisayo ukuba ayilandele kakuhle imithetho – khawukhe ukuzame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokubonisa ukuzinikela kwakho kusapho lwakho.", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki yakho yesithathu kwi-@global.parent_app. \n\nUqeqesho olusha lukulindele! Xa ujonge lo mfanekiso, ngaba unokuqashisela umxholo woqeqesho?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki yakho yesithathu kwi-@global.parent_app. \n\nUqeqesho olusha lukulindele! Xa ujonge lo mfanekiso, ngaba unokuqashisela umxholo woqeqesho?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Usebenzile ngokusebenzisa i-@global.parent_app! Ukhumbule ukuba zizinto ezincinci ezenza umahluko omkhulu.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Enkosi ngokusebenzisa i-@global.parent_app ukuze utyale kuwe siqu nakusapho lwakho.\n\nZama i@local.workshop_data.in_text_title uze wakhe isakhono esigqwesileyo sokuba ngumzali!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Ukuncoma kwenza umahluko. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela ONOKUNCOMA ngayo kwintsapho yakho.", - "Praise time!": "Lixesha lokuncoma!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Xa uphinda ubona umntwana wakho ofikisayo, mncome ngento enye ayenza kakuhle! \n\nUgqibele nini ukuzincoma okanye ukuncoma omnye umntu omdala ekhayeni lakho? Yizame!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Kuhle ukukubona ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvuleka. Yizame - uza kuwubona umahluko kwindlela yokuziphatha yomntwana wakho ofikisayo.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki 4 kwi-@global.parent_app. \n\nUqeqesho lwale veki luza kuthetha ngendlela yokwandisa amathuba okuba umntwana wakho ofikisayo enze into omcela ukuba ayenze.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki 4 kwi-@global.parent_app. \n\nUcweyo lwale veki luza kuthetha ngendlela yokwandisa amathuba okuba umntwana wakho ofikisayo enze into omcela ukuba ayenze.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Thetha kakuhle nesiqu sakho ngomsebenzi omhle owenzayo. Akekho umzali ofezekileyo, kwaye sicinga ukuba wenza umsebenzi omhle!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Awumakishanga nayiphi na @data.habit.instruct_positively.title @global.parent_points okwangoku.\n\nZama namhlanje!", - "Well done!": "Usebenzile!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Sele uyimakishe kwakanye i-@global.parent_point @data.habit.instruct_positively.title – ngoko wenza inkqubela encomekayo.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "Umakishe i- @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively amaxesha asele ekhona - ke wenza inkqubela entle kakhulu.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Ngaba umntwana wakho ofikisayo usoloko ekumamela? Ukuba akunjalo (njengathi sonke), jonga uqeqesho lwale veki ukuze ufunde ngendlela yokukhupha imiyalelo ekhuthazayo enokukunceda ngayo - ngeyona ndlela.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Imiyalelo ekhuthazayo ikunceda uphawule ukuziphatha okuhle nangakumbi! \n\nGqiba ukwenza i-@local.workshop_data.in_text_title ukuze ufumane amacebo endlela okunokusebenza ngayo oku kwintsapho yakho.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Njengesiqhelo, ungangena kuqeqesho olutsha ngomso. Kuza kunceda ukuqala ugqibe uqeqesho olungaphambi kolu ngaphambi koko. \n\nAbanye abazali basebenzisa le app ngoxa besendleni eya emsebenzini. Kutheni ungayisebenzisi i-app kangangemizuzu embalwa? \n\nEnkosi kwakhona ngokusebenzisa i-@global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqsho olutsha sele likulindele: uza kubona umahluko omkhulu ngokwenza utshintsho oluncinane!", - "First @global.weekly_workshop!": "Okokuqala @global.weekly_workshop!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Molo @fields.user_name. I-@local.workshop_data.in_text_title sele ikulungele.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Molo @fields.group_name. I-@local.workshop_data.in_text_title sele ikulungele.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ukuchitha ixesha kunye nomntwana wakho kunceda ekwakheni ukuthembana phakathi kwenu. \n\nQhubeka ngohambo lwakho lwe-@global.parent_app ngoku - wena nosapho lwakho niza kubona imiphumo emihle.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Enkosi ngokwenza imigudu yokuba ngumzali ongcono. Uyathandwa kwaye uyaxatyiswa!", - "Have you spent time with your teen already?": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nI-@local.workshop_data.in_text_title sele ikulungele!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Akuyi kuthatha xesha lide, kwaye uza kufumana ulwazi oluxabisekileyo. \n\nWenze kakuhle ngokuzama ukuba ngumzali ongcono. Ngomso, ungangena kuqeqesho olutsha.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha olukunceda uphole, lonwabele uze ufunde izakhono ezitsha!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Molo @field.user_name! Ingxaki enkulu inokwehlela nabani - ukuyilungela kunceda kakhulu. \n\nOlu qeqesho luza kukubonisa indlela yokwenza loo nto.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Molo @field.group_name! Ingxaki enkulu inokwehlela nabani - ukuyilungela kunceda kakhulu. \n\nOlu qeqesho luza kukubonisa indlela yokwenza loo nto.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Ungumzali ozimiseleyo. Zingce - loo nto inkulu kwangokunokwayo!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Asoze sazi iza kubakho nini na ingxaki, kodwa SINAKO ukuyilungela! \n\nQalisa uqeqesho olulandelayo ukuze ubone ukuba wena nomntwana wakho ofikisayo ningayenza njani le nto kunye.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Kuhle ukubona ukuba ukunye nathi kolu hambo lokuba ngumzali! \n\nGqiba i-@local.workshop_data.in_text_title uze ufunde ngeyona ndlela yokusabela xa umntwana wakho ofikisayo ekufuna kakhulu.", - "Have you discussed with your teen what you would do in a crisis situation?": "Ngaba ukhe wathetha kunye nomntwana wakho ofikisayo ukuba niza kwenza ntoni xa kukho ingxaki?", - "Crisis Examples": "Imizekelo Yengxaki enkulu", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Ngomso uqeqesho lokugqibela lwe @global.parent_app luya kube likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqsho olutsha. Ngaloo ndlela, ungayigqiba iseti yakho yezakhono zokuba ngumzali uze ubone omawukwenze ngokulandelayo!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Wenze kakuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho lokugqibela ukuze ucinge ngohambo lwakho lwe@global.parent_app noko unokukwenza ngokulandelayo!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Molo @field.user_name! Sele uza kulugqiba uquqesho lwakho ze-@global.parent_app! Enkosi ngokuzimisela ixesha elide kangaka. \n\nUqeqesho lwale veki luthetha ngendlela yokugcina abantwana bethu abafikisayo bekhuselekile kokubini xa besebenzisa i-intanethi nakwiindawo esihlala kuzo. Yonwabele!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Molo @field.group_name! Sele uza kulugqiba lonke uqeqesho lwakho @global.parent_app! Enkosi ngokuzimisela ixesha elide kangaka. \n\nUqeqesho lwale veki luthetha ngendlela yokugcina abantwana bethu abafikisayo bekhuselekile kokubini xa besebenzisa i-intanethi nakwiindawo esihlala kuzo. Yonwabele!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Eli ibilelona xesha linzima kakhulu kubazali. Umele uzingce ngayo yonke into oyenzileyo. \n\nCinga ngawo onke amaxesha oye wamenza wancuma ngawo umntwana wakho ofikisayo kunye nendlela oye wamnyamekela ngayo. Abazali bayamangalisa kwaye nawe uyamangalisa!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Sele uzuze izakhono ezininzi zokuba ngumzali kwezi veki zidlulileyo!\n\nGqiba uqeqesho olulandelayo ukuze uzuze esinye isakhono esiluncedo.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ukuze umgcine ekhuselekile umntwana wakho ofikisayo, kuyanceda ukuncokola malunga nendawo enihlala kuyo kunye namava akhe okusebenzisa i-intanethi. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela onokuyenza ngayo le nto!", - "Have you talked with your teen about safety measures?": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Ukwenza isicwangciso kunye nomntwana wakho ofikisayo kungathintela iingxaki ezininzi - yizame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokusebenzisa i@global.parent_app ukuxhasa usapho lwakho.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Siyavuyisana nawe, ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha sele lukulindile ukukunceda wena kunye nosapho lwakho ukuba nijongane nayo nayiphi na imeko - ngokubambisana ninokwenza okuninzi!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Molo @field.user_name! Wenza inkqubela entle kakhulu kuhambo lwakho lokuba ngumzali! \n\nUkuba nomntwana ofikisayo kuthetha ukuba kuza kubakho iingxaki ezingalindelekanga ekufuneka ujamelane nazo. Olu qeqesho luza kukubonisa indlela yokwenza loo nto.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Molo @field.group_name! Wenza inkqubela entle kakhulu kuhambo lwakho lokuba ngumzali!\n\nUkuba nomntwana ofikisayo kuthetha ukuba kuza kubakho iingxaki ezingalindelekanga ekufuneka ujamelane nazo. Olu qeqesho luza kukubonisa indlela yokwenza loo nto.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Ukuzimisela kwakho kulukhuthazo kuye wonke umntu. Qhubeka uzolile uze uqhubekeke!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Ubomi, nokuba nabantwana abafikisayo, kuza neengxaki ezingalindelekanga kwaye kufuneka sijamelane nazo. \n\nQalisa uqeqesho olulandelayo uze ufunde indlela yokujamelana ngempumelelo nezi ngxaki.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Ukwindlela efanelekileyo yokuqalisa ukusombulula iingxaki kunye nomntwana wakho ofikisayo! \n\nGqiba i-@local.workshop_data.in_text_title uze uzuze esinye isakhono esibalulekileyo sokuba ngumzali!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Ngaba ukhe wawazama amanyathelo amane okusombulula ingxaki kunye nomntwana wakho ofikisayo? \n\nYAZI, YISOMBULULE, YIZAME, YIVAVANYE!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ukwazi indlela yokusombulula iingxaki kunye kunganceda kwiimeko ezininzi!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luvuliwe ukuze lukuncede ugcine umntwana wakho ofikisayo ekhuselekile.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Molo @field.user_name! Kwiveki ezayo, kukho uqeqesho olutsha! Funda indlela yokubeka imithetho yekhaya ngendlela eza kwenza abe maninzi amathuba okuba umntwana wakho ofikisayo ayithobele.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Molo @field.group_name! Kwiveki ezayo, kukho uqeqesho olutsha! Funda indlela yokubeka imithetho yekhaya ngendlela eza kwenza abe maninzi amathuba okuba umntwana wakho ofikisayo ayithobele.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ngamanye amaxesha kuye kube ngathi abantwana bakho abafikisayo banomsindo nangona sele wenze konke okusemandleni akho. Ukhumbule ukuba wenza umsebenzi ogqwesileyo, kwaye amaxesha amnandi aza kude abekho nakubo!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Enkosi kwakhona ngokusebenzisa i-@global.parent_app nangokuzimisela kuhambo lokuba ngumzali. \n\nI-@local.workshop_data.in_text_title iza kukubonisa indlela yokubeka imithetho ngendlela eya kunceda umntwana wakho ofikisayo ayiqonde aze ayilandele ngcono.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Sele ukufutshane ekufumaneni esinye isixhobo sokuba ngumzali! Gqiba i-@local.workshop_data.in_text_title, bekela umntwana wakho ofikisayo umthetho OMNYE olula nonokuthotyelwa, uze ubone izinto zitshintsha!", - "Have you managed to set a rule together with your teen?": "Ngaba ukwazile ukusebenzisana nomntwana wakho ofikisayo ukuze nibeke umthetho?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ayiyi kuthatha xesha lide kwaye iya kunceda umntwana wakho ofikisayo alandele imithetho ngcono!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqesho olutsha luza kukunceda wazi ukuba wenzeni xa abantwana abafikisayo bebonakalisa ukungabi nasimilo (okanye ukuba naso)!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Molo @field.user_name! Uqala inyanga yesibini usebenzisa @global.parent_app. Kuyamangalisa! \n\nPhantse zonke iintsapho zineengxaki zemali, ngoko ke uqeqesho lwale veki luza kukunika isixhobo esiza kukunceda ucwangcise iindleko zakho ukuze ube nemali eyaneleyo de kuphele inyanga.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Molo @field.group_name! Uqala inyanga yesibini usebenzisa @global.parent_app. Kuyamangalisa! \n\nPhantse zonke iintsapho zineengxaki zemali, ngoko ke uqeqesho lwale veki luza kukunika isixhobo esiza kukunceda ucwangcise iindleko zakho ukuze ube nemali eyaneleyo de kuphele inyanga.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Ngaba imali ikwenza uzive uxinezelekile? Ngaba umntwana wakho usoloko ecela izinto eningakwaziyo ukuzifikelela? \n\nOlu qeqesho luthetha ngemali kunye nokwenza ibhajethi.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Nanini na uziva uwedwa okanye izinto zikongamela, yazi ukuba awuwedwa. Kukho abazali ehlabathini nokubanzi abaneengxaki ezifanayo nezakho. \n\nNgoko, wenza konke okwaziyo ukukwenza yonke imihla kwaye sonke siyazingca ngawe!", - "Have you talked with your teen about your family budget yet?": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ukubandakanya amalungu entsapho yakho ngendlela esetyenziswa ngayo imali kungenza lwehle uxinezeleko kunye nokuxambulisana. \n\nGqiba i-@local.workshop_data.in_text_title ukuze incede usapho lwakho ngokubhajetha nokonga imali. Kulula kanti - uza kubona!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Uninzi lwabazali luthi ukwenza ibhajethi kuye kwazisa uxolo kumakhaya abo - nawe kungakusebenzela oku.\n\nEnkosi kwakhona ngokuba ngumzali ozinikele olu hlobo.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvulwa ukuze lukuncede ubeke imithetho eza kusebenza kwintsapho yakho.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Ukhumbule – le veki INGAWE! Siyathemba ukuba uziphethe njengeqanda. Uyakufanelekela oku!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala uqeqsho olutsha kraca @global.parent_app ngomso. Uza kubona iziphumo ezintle!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Ngaba uye wawaxelela amaqabane akho e-@global.parent_app malunga ne-app? Ukususela ngomso, ningaqalisa ukwenza uqeqesho lwenu lwe@global.parent_app kunye!", - "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Ukulahlekelwa ngumhlobo okanye othandekayo kunzima kumntu wonke. Ukuba nobubele kuwe kunye nokwenza izinto zokuzinceda uhlangabezane neli xesha linzima kunceda nomntwana wakho ofikisayo!", - "Find a support group": "Fumana iqela lenkxaso", - "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "- Intlungu inokusichaphazela kangangeeveki okanye iinyanga okanye iminyaka. Akuyomfuneko ukuba uzive ubhetele ngokukhawuleza.\n- Lala ngokwaneleyo kunye nokutya - kunzima ukukhathalela abantwana xana udiniwe kwaye ulambile.\n- Yenza uluhlu lwezinto ezikwenza uzive ngcono, kwaye uzenze.\n- Zama ukwenza into enye elula yokuphumla yonke imihla nomntwana wakho ofikisayo, kunye nawe ngokwakho.\n- Kulungile ukuziva ulungile kwaye kulungile ukukhala. Ungaze uzibeke ityala, ayilotyala lakho eli.\n- Kuhlala kukho ithemba nasemva kokulahlekelwa. Zama ukonwabela izinto ezilula, kwaye uthathe umzuzu ukwenza into emnandi okanye ukuphumla nomntwana wakho.\n- Fumana umntu omdala omnye okanye ababini abanokukuxhasa, bakumamele, kwaye bathethe.", - "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ukuthetha nomntu onokukuxhasa kwaye akumamele kunokunceda. Kunokunceda kananjalo ukuzimanya neqela labantu abalahlekelwe ngabantu nabo. Khumbula ukuba akukho mntu ugqibeleleyo. Kulungile ukuthetha ngamaxesha amnandi namabi.", - "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Abantwana abafikisayo bajongana nelahleko ngeendlela ezahlukeneyo, njengabantu abadala. Ungabanceda baqonde imeko kunye neemvakalelo zabo ngokudala iindawo ezikhuselekileyo apho unokwabelana nobabini kwaye niqhubeke.", - "Be honest": "Nyaniseka", - "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "Xelela umntwana wakho ukuba lomntu uswelekile - ngamanye amaxesha akaziqondi.\n- Ukuxelela yinkqubo, hayi isiganeko. Kusenokufuneka ubaxelele ngokuphindaphindiweyo.\n- Sebenzisa amagama abawaqondayo.\n- Ukuba abantwana basebancinci akayiqondi ukuba yintoni ukufa, nceda uchaze ukuba umntu omthandayo akabuyi. Zama ukuba ungabizi 'ukulala' okanye 'uhambo lokuhamba'.\n- abantwana abadala bangakuqonda ukuba yintoni ukufa, kodwa banokuba nzima ukwabelana okanye ukuphatha iimvakalelo zabo.\n- Abantwana banonokuphendula ngeendlela ezahlukeneyo: ukukhala, ukukhwaza, ukungakholelwa okanye ukuzola kakhulu. Zonke ezi zinto zilungile. Baxelele ukuba ukunye nabo.\n-Vumela imibuzo kunye nokuthetha. Nyaniseka. Kulungile ukutsho xana singazi.", - "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "- Abantwana banokuba lusizi, nomsindo, bangayiqondi okanye bangakholelwa, baziva ndindisholo, bangaziva kamnandi okanye babe neentlungu, amaphupha amabi okanye iingxaki esikolweni. Umntwana wakho ofikisayo usenokubonakala onwabile, kodwa abe buhlungu. Basenokuzivale baze bafune ukuchitha ixesha elingakumbi nabahlobo. Basenokubonisa indlela yokuziphatha engalindelekanga okanye eyingozi. Ezi zisenokungabi nangqiqo kuwe, kodwa konke oku kuqhelekile.\n- Abantwana banokuziva ngathi lityala labo - ukuba baye bosulela intsholongwane, okanye baziphathe kakubi. Baxelele ngokucacileyo ukuba akukho nto iphosakeleyo bayenzileyo.", - "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "- Cacisa ukuba intlungu iza neemvakalelo ezininzi kunye neempendulo. Bonisa umntwana wakho ukuba uyathandwa kwaye uyakhathalelwa, kwaye umkhuthaze ukuba abelane ngeemvakalelo zakhe ngokuthetha, ukubhala okanye ukuzoba.\n- Ukuba kukho iqela lenkxaso umntwana wakho anokuba yinxalenye yalo, oku kunganceda.\n- Ukuba umntwana ofikisayo uthetha ngokufuna ukuzenzakalisa okanye ukuzibulala, cela uncedo komnye umntu ngokukhawuleza kangangoko unako.\n- Ukuba unako, gcina inkquboi yakho yesiqhelo yemihla ngemihla, oku kunokuba yintuthuzelo kwabaselula.\n- Kunganceda ukuba abantwana bakho babe yinxalenye yezithethe malunga nokufa - ukukhetha ingoma okanye into yokuthetha.\n- Ukuchitha imizuzu embalwa yonke imihla ugxile kumntwana wakho ofikisayo kunceda ukumenza azive ekhuselekile kwaye umnike ithuba lokuphumla okanye ukuthetha ngezinto ezimkhathazayo.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ukufelwa ngumntu omthandayo kunokuvakala kukoyisa kakhulu. Nanga amacebiso ambalwa asebenzayo anokuba luncedo ukuwakhumbula.", - "Ask for help": "Cela uncedo", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Cela umntu omthembileyo ukuba akuncede - ukutya okanye ukhathalelo lwabantwana kunokuba luncedo. Unokufuna amaxwebhu elifa, abantwana bakho, okanye ukufikelela kwiinkonzo.\n- Ngamanye amaxesha abantu bazama ukuthatha imali okanye ilifa kumntu osentlungwini. Fumana malunga namalungelo wakho.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "Ukuvalelisa kunzima. Yenza oko kubonakala kulungile kuwe nakumntwana wakho.\n- Iintsapho, abantwana kunye nabazali abafezekanga. Xa umntu efile, kulungile ukuthetha ngezinto ezilungileyo nezimbi esizikhumbulayo.\n- Kunganceda ukubhala ileta okanye ukwenza umzobo womntu omkileyo.\n- Abanye abantu benza umsitho okanye benze isidlo esikhethekileyo sokubhiyozela umntu, kwaye bathi ndlela ntle.\n- Inokukunceda ukwenza ibhokisi yeenkumbulo, ukubeka izinto ezikukhumbuza wena kunye nomntwana wakho ngalomntu.\n- Inokukunceda ukuthetha malunga ngalomntu xana ucinga ngaye.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Ekupheleni kosuku, thatha umzuzu ukuze: \n\n* Uncokole nomntwana wakho ngento enye emnandi ayenzileyo. \n* UzIncome ngokwenza into enye kakuhle namhlanje. \n*Uligqala!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Buzanani, “Yintoni ekwenze wonwaba namhlanje?”\n* Buzanani, “Yeyiphi ingxaki oye wanayo namhlanje?”\n* Buzanani, “Ndingakunceda njani?”\n* Zamani ukwenza le nto nonke yonke imihla; ninokuyenza xa nisitya kunye isidlo sangokuhlwa okanye ngaphambi kokulala.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Awunakusoloko useluhambeni ngalo lonke ixesha, kodwa unako ukuba namaphupha! Buza umntwana wakho ofikisayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluyaphi? Uza kuhamba ixesha elide kangakaani? Uza kupakisha njani? Yintoni onokuyenza kolo hambo? Yintoni onokuyibona?\nJongani kunye kwimephu okanye niyizobe.\n* Khetha ilizwe angalaziyo umntwana wakho ofikisayo nize nifunde ngakumbi ngalo.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena nomntwana wakho ofikisayo ningenza uluhlu lokuqikelela abantu abadumileyo belo lizwe neningathanda ukubamemela kwitheko lenu. Ngamnye kuni angamema abantu abahlanu – bangaba baphila kule mihla okanye babe ngabakudala. Ngoobani eninokubamema? Ngaba iindwendwe zingavana?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Cinga ngezinto ezintathu ezinokuthethwa ngawe. Ezimbini kuzo zimele zibe yinyani kwaye enye yazo ibe bubuxoki.\n* Kunganceda ukucinga ngezinto ozinqwenelayo, amaphupha akho, amava asesikolweni, izinto ozithandayo okanye ongazithandiyo. Ngokomzekelo: Ndiyazicaphukela iibhanana, isifundo endisithandayo yisayensi kwaye ndikunqwenela kakhulu ukukwazi ukucula. \n* Zixelele umntwana wakho ofikisayo uze umbuze ukuba yeyiphi engoyonyani kwezi. \n* Ngaba uchanile xa ebeqashisela? Ngaba imothusile?\n* Ngoku mcele enze into efanayo. Ikhona into entsha eniyifundileyo komnye nomnye?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Balisela umntwana wakho ofikisayo ngezinto zangokuya wawungangaye. Ziintoni ezazingekho ngoko? Ifowuni ezingena kwi-intanethi? Wawusenza ntoni xa uzonwabisa? Yintoni eyayikuxhalabisa? Ungabi naxhala xa bengathethi nto emva kokuba ubaxelele ngawe -– into ebalulekileyo kukuba bamamele kwaye baza kukhumbula. Ngamanye amaxesha, abantwana bethu abafikisayo bayalibala ukuba abazali babo nabo ngabantu!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Cinga ngokuba namandla angaphezu kwemvelo. Ngokomzekelo, ukuya naphi na ngoko nangoko, ukubuyela emva kwixesha lakudala. \n* Buza umntwana wakho ofikisayo ukuba, “Xa ubunamandla angaphezu kwemvelo oku[...], ubungawasebenzisa njani?”\n* Mkhuthaze ukuba anike eli qhawe linamandla angaphezu kwemvelo igama aze enze loo nto beliza kuyenza. \n* Ngoku cela umntwana wakho ofikisayo akukhethele amandla angaphezu kwemvelo onokuba nawo.\n* Qinisekisa ukuba nawe uyabonisa ukuba ungawasebenzisa njani amandla akho nagaphezu kwemvelo!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Ncokola kunye nomntwana wakho ofikisayo malunga nento ayithandayo.\n\nIsenokuba yiyo nantoni na abakhetha ukuncokola ngayo: imidlalo, iitshomi, umculo, oosaziwayo.\n\nZama ukummamela umntwana wakho uze umvumele athethe.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Khetha umntu obalisa ibali ukuze aqalise ukulibalisa.\n* Abantu abalimameleyo bangasebenzisa naliphi igama ukuze bangenelele nanini na.\n* Umntu obalisayo kufuneka asebenzise elo gama kwibali alibalisayo.\n* Xa ibali ligqityiwe, makubalise omnye umntu!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Cinga ngeemeko ezintathu ezahlukahlukeneyo. Ngokomzekelo, ukuqhuba imoto, ukukhwela isikhitshana okanye ukubhabha ngenqwelo ntaka.\n* Chazela umntwana wakho ngezi zinto uze umbuze, “Yeyiphi onokuyikhetha?”\n* Mbuze ukuba kutheni ekhetha leyo?\n* Ngoku cinga ngeemeko ezintathu ezingakumbi okanye ucele umntwana wakho ofikisayo akwenzele.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Buzanani imibuzo. Ingayimibuzo emalunga nezinto ozithandayo okanye ozenzileyo namhlanje.\n* Umthetho mnye qha kukuba awunakuphendula uthi, “Ewe” okanye “Hayi” okanye uthi, “Mhlawumbi.”\n* Niza kuyenza kangangexesha elingakanani? Iimpendulo zakho zingacingisiswa kangakanani?\n* Tshintshanani nize nidlale kwakhona!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Umntu wokuqala uthi, “NgoMgqibelo ndiya...(umz., epakini)”\n* Umntu wesibini wongeza kwinto ethethwe ngumntu wokuqala athi, “NgoMgqibelo ndiya epakini kwaye... (umz. ndiyokutyelela umhlobo wam osenyongweni).\n* Umntu ngamnye wongezelela kwinto ethethwe ngumntu wokugqibela, nizama ukucinga ngazo zonke izinto ezimnandi ezinokwenziwa ngoMgqibelo.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qalisa ibali ngokuthi, “Ngaminazana ithile kwaye kukho...”\n* Vumela umntwana wakho ofikisayo athethe into elandelayo.\n* Emva koko ugqibezela isivakalisi.\n* Tshintshanani nide nibe nebali elitsha elimnandi.\n* Qinisekisa ukuba ibali liphela kamnandi. *\nBuza umntwana wakho ofikisayo ukuba yeyiphi indawo ayithandileyo kwibali!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "Buza umntwana wakho ofikisayo ukuba angathanda ukutya isidlo esinjani. \n* Senzeni nobabini! \n* Mvumele ibe nguye umpheki oyintloko – nguye okhokelayo kwaye wena ulandela imiyalelo yakhe. \n* Unokumnceda nokuba enze ibhajethi yezinto eziza kuthengwa xa kuphekwa! \n\nUcinga ukuba ayizusebenza? Buza abantwana bakho abafikisayo ukuba BAFUNA ukuba nenze ntoni kunye. Bayeke bakhokele. Phola. Yonwaba.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Makujuxuzwe ngendlela athanda ukujuxuza ngayo umntwana wakho ofikisayo. \n* Umntu omnye uyajuxuza baze abanye balinganise yena. \n* Wonke umntu unetyeli lokukhokela. \n* Yenzani phambi kwakhe wonke umntu osekhayeni lenu!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Lo mdlalo ungadlalwa ngabantu ababini okanye ngabantu abaninzi kwiqela.\n* Yimani isangqa nize nijongane. \n* Umntu omnye uyakhokela baze abanye bamlinganise bezama ukushukuma ngexesha elifanayo nenkokheli.\n* Qinisekisa ukuba inkokheli ayikhawulezi ukuze abanye bakwazi ukuyilinganisa! Jongani amalungu omzimba ashukumayo ngamanqanaba ahlukahlukeneyo.\n* Emva kwethutyana, tshintshani inkokheli. Wonke umntu makabe nethuba lokukhokela.\n* Zamani zingekho iinkokheli!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Cinga ngesakhono esitsha onokusifunda kunye nomntwana wakho ofikisayo. Ngokomzekelo, ukuteka ibhola okanye ukuyibamba ngonyawo lwakho ingawi, ukujula iibhola phezulu uze uzibambe, ukwenza isuphu?\n* Tshintshanani nize nizame ukwenza isakhono esitsha.\n* Qinisekani ukuba niyancomana, nize nizame ukufunda nokudlala kunye!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Cingani ngeendlela ezintathu zokujima. Ngokomzekelo, ukuhamba, ukunkcunkca, ukudlala ibhola okanye ukudanisa.\n* Khethani kunye ibe nye nize niyizame. \n* Ukuba nobabini niyayithanda, gqibani ngokuba niza kuyenza kangaphi. Kanye okanye kabini ngeveki? Qho ngentseni?\n* Ninobabini, cingani ngendlela yokuyenza ibe mnandi nangakumbi. Ningankcunkca niyokutsho kwindawo ethile? Mhlawumbi nitshintshisane ngokuba ngumqeqeshi? Nikhuthazane ngomvuzo omncinci wasimahla?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Umntu wokuqala uza kukhetha ingoma okanye akhethe ukuyicula.\n* Wonke omnye umntu umele aqashisele igama lengoma (ukuze niyeze ibe nzima, angaqashisela nomntu oyiculayo).\n* Umntu wokuqala ukuqashisela ngokuchanileyo kuza kukhokela yena.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Lo mdlalo umnandi ngakumbi xa kukho abantu aba-3 ubuncinane.\n* Qalisani kwisangqa uze ugqithise “ibhola” kube kanye esangqeni (okanye “uqhwabe xa ungakwazi ukujula).\n* “Ujula” kube kanye ukuze ujule “ibhola”, uze uyibambe kube kanye. Mjonge umntu omphoselayo. \n* Indlela oyiphosa ngayo (phezulu, ezantsi, ngqo, ngasecaleni, iqengqeleka phantsi) kunye namandla (ngamandla kakhulu, ngokuthambileyo) imele ichaphazele indlela ayibamba ngayo umntu. \n* Unokuyigqampisa “ibhola”, uyijule emoyeni uze uyibambe kambalwa ngaphambi kokuba uyidlulisele komnye umntu. \n* Xa umntu wonke sele eqhelene noku, unokuqalisa ukujikeleza kwigumbi usajula “ibhola”. \n* Ungakwazi ukuyijula ngaphantsi komlenze? Ngemva komqolo? Entla kwentloko yakho? Ukuyibamba ngaphambi kokuba ifike komnye umntu? Nikonwabele ukudlala “ngebhola”!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Khethani umdlalo okanye indlela yokujima eninokuyenza kunye. Gqibani ngocwangciso. Ngaba niza kuyenza yonke imihla? Kangangexesha elingakanani? \n\nYizameni kangangeveki. Ekupheleni kweveki, buza wena kunye nentsapho yakho le mibuzo:\n* Ihamba njani? \n* Benivakalelwa njani ekuqaleni kweveki? \n* Nivakalelwa njani ekupheleni kweveki? \n* Yintoni esinokuyenza ngokwahlukileyo kwiveki ezayo?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Tshintshanani ngokuba “yinkokheli”. Thethani amagama okuqala ukuze wonke umngu angene. Emva koko, “inkokheli” ikhupha umyalelo kwaye wonke umntu wenza loo nto ngokukhawuleza okunokwenzeka.\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bamba into ebomvu.” \n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Xhuma, xhuma izihlandlo ezilishumi.”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bekani izihlangu kwindawo ehlala izihlangu.”", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Lo mdlalo umnandi xa udlalwa ngabantu abangaphezu kwaba-2\n* Umntu omnye wenza ngathi wenza into ethile – ngokomzekelo, ukama iinwele okanye upheka isidlo sangokuhlwa. \n* Omnye umntu ubuza athi, “Wenza ntoni?”\n* Umntu wesibini kufuneka athethe into engadibaniyo nokukama iinwele, ngokomzekelo athi, “Ndibopha imitya yezihlangu zam” \n* Umntu wesibini uqalisa ukwenza ngathi ubopha imitya yezihlangu zakhe de omnye umntu ambuze, “Wenza ntoni?” \n\nImpendulo kufuneka isoloko ingeyiyo le nto ayenzayo loo mntu!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "* Vuthululani izandla zenu zasekhohlo emoyeni izihlandlo ezi-8 ngoxa nibala ukuya kutsho ku-8.\n* Yenzani ngokukhawuleza kwaye ningxola kangangoko ninako.\n* Phindani nangesinye isandla. Phindani ngeenyawo zombini.\n* Yenzani kasi-7, emva koko kasi-6 nize niqhubeke nide nifike ku-1.\n* Wonke umntu ukhwaza athi “Inkukhu ephambeneyo” emva koko nidanise ngathi yinkukhu ephambeneyo!", - "Quick Parenting Tips": "Iingcebiso Ezikhawuleziyo Zokuba Ngumzali", - "Raising teens can be hard, and we all struggle sometimes.": "Ukukhulisa abantwana abafikisayo kunganzima, kwaye sonke siyoyisakala ngamanye amaxesha.", - "What is the main challenge you are experiencing right now?": "Loluphi ucelomngeni oluyintloko ojongene nalo ngalo mzuzu?", - "My relationship with my teen is not good": "Ulwalamano lwam nomntwana wam ofikisayo aluluhlanga", - "My teen’s behaviour is difficult": "Isimilo somntwana wam ofikisayo sixakile", - "I feel stressed, lonely, angry": "Ndiziva ndinoxinezelelo, ndindodwa, ndinomsindo", - "I have money worries": "Ndinamaxhala emali", - "I worry about my teen’s safety": "Luyandixhalabisa ukhuseleko lomntwana wam ofikisayo", - "We often fight in our family": "Sisoloko sisilwa kusapho lwethu", - "I have a different problem…": "Ndinengxaki eyahlukileyo…", - "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ukwakha ulwalamano olungcono kuqala ngokuchitha ixesha kunye - noba yimizuzu emi-5 ngosuku kwenza umahluko! Okokuqala, kunokuba nzima ukuchitha ixesha kunye, njengoko sonke sixakekile kwaye ulutsha lwethu lunokuba kwimudi engentle ngamanye amaxesha. Kodwa ukuchitha noba yimizuzu emi-5 ngosuku lwexesha olijolise kumntwana wakho ofikisayo kuyanceda ekwakheni ukuthembana. Zama ukubuza umntwana wakho ofikisayo ukuba yintoni angathanda niyenze kunye. Inokuba mnandi kwaye ikuphumze nawe ngokunjalo!", - "You can get more support on how to spend one-on-one time with your teen here:": "Unokufumana inkxaso engakumbi ngendlela yokuchitha ixesha ninodwa kunye nomntwana wakho ofikisayo apha:", - "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Bonke abantwana abafikisayo bayageza ngamanye amaxesha! Eyona nto inokunceda kwisimilo sabantwana abafikisayo kukubancoma nanini na besenza into entle - nokuba incinci kangakanani na. Abantwana abafikisayo basenokungabonakali ngathi bafuna okanye bakhangela ukunconywa nguwe kodwa eneneni, bayafuna.", - "You can get more support here on how to encourage good behaviour through praising:": "Unokufumana inkxaso engakumbi apha malunga nendlela yokukhuthaza isimilo esihle ngokuncoma:", - "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Uxinezelelo lokuba ngumzali luphezulu ngeyona ndlela ngoku. Sazi kakuhle ukuba ubomi bunokuba nzima kangakanani. Ukuzenzela okuthile kungalunciphisa uxinezelelo lwakho. Ukufanelekele oku! Xa uziva ukhathazekile, lawula umzimba wakho ngokuwutsala ngamandla umoya ngokucotha, kahlanu ngaphambi kokuphendula. Abazali abaninzi bakufumanisa kuluncedo oku.", - "You can get more support on how to take care of yourself here:": "Unokufumana inkxaso engakumbi malunga nendlela yokuzikhathalela apha:", - "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Awuwedwa. Uxinezelelo lwemali lunzima kakhulu kubazali. Zama ukuthetha nomntwana wakho ofikisayo malunga nokuba yimalini engenayo nezinto enidinga ukuyisebenzisa kuzo njengosapho nyanga nganye. Oku kunokubanceda baqonde ukuba kutheni ungakwazi ukubathengela into abayifunayo. Yaye xa wonke umntu ekuqonda ukuba iyaphi imali, kulula ukuvumelana ngokuba yimalini eninokuyonga kunye!", - "You can get more support on how to budget and save here:": "Unokufumana inkxaso engakumbi ngendlela yokwenza ibhajethi uze wonge apha:", - "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Abantwana abafikisayo bachitha ixesha elininzi bengaphandle kwekhaya okanye besebenzisa i-intanethi, apho kunzima nangakumbi ukuba sibagcine bekhuselekile - abazali abaninzi kuyabakhathaza oku. Zama ukuqala incoko nomntwana wakho ofikisayo malunga neendawo ezikhuselekileyo nezingakhuselekanga kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi (kungafuneka ukuzame amatyeli ambalwa). Banokude bazi nezo wena ungazaziyo. Oku kuza kuqalisa ukukunceda nenze isicwangciso kunye sokuba uhlala njani ekhuselekile.", - "You can get more support on how to keep your teen safe here:": "Unokufumana inkxaso engakumbi ngendlela yokugcina umntwana wakho ofikisayo ekhuselekile apha:", - "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Xa kuvela ingxaki, zamani ukuthetha ngayo kunye. Yintoni kanye kanye ingxaki? Zeziphi izisombululo ezohlukeneyo ezikhoyo kwaye zeziphi iziphumo zaso ngasinye? Ngaloo ndlela, ungafumana isisombululo esinokuba SILUNGELE umntu wonke.", - "You can get more support on how to solve problems together here:": "Unokufumana inkxaso engakumbi malunga nokusombulula iingxaki kunye apha:", - "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Akululanga ukunyamekela iintsapho zethu. Sonke sinemiceli mngeni ngamanye amaxesha, kodwa siyathemba ukuba le app iza kukunceda uyoyise ngempumelelo. @global.parent_app isekwe kwiminyaka elishumi yamava eqhuba iinkqubo zobuzali eMzantsi Afrika, kwaye amawaka abazali bafumanise ukuba iingcebiso ekwabelwana ngazo ziyanceda kwimiceli mngeni emininzi yokuba ngumzali. Siyathemba ukuba le app iza kukunceda kunye nentsapho yakho.\n\nNazi ezinye zeengcebiso eziphambili nezingqiniweyo:", - "Start your first parenting workshop": "Qalisa uqeqesho lwakho lokuqala lokuba ngumzali", - "You will get more support in the @local.workshop_data.in_text_title.": "Uza kufumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", - "You can get more support in the @local.workshop_data.in_text_title.": "Ungafumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", - "Start the @local.workshop_data.in_text_title": "Qalisa i@local.workshop_data.in_text_title", - "Finish the @local.workshop_data.in_text_title to get more support.": "Gqiba i@local.workshop_data.in_text_title ukuze ufumane inkxaso engakumbi.", - "Continue the @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", - "Re-access the @local.workshop_data.in_text_title": "Phinda ungene kwi@local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Hlalani phantsi, valani amehlo enu nize nimamele indlela eniphefumla ngayo njengoko nitsala nize nikhuphe umoya. \n\nPhawula indlela ovakalelwa ngayo. \n\nXa sele ukulungele, phinda uvule amehlo akho.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Kuzameni oko nanini na niziva nixinezelekile kwaye nifuna ikhefu ukuze niphinde ninxibelelane neziqu zenu.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Vala amehlo akho. \n\nMasisebenzise amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole. \n\nChaza izandi ezintathu ozivayo ngoku. \nChaza amavumba amathathu owevayo ngoku. \nChaza izidlo ezithathu ozithanda kakhulu. \n\nZeziphi izinto ezintathu onombulelo ngazo ngoku? Akunyanzelekanga ibe zizinto ezinkulu.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Emva kosuku olunzima, ukucinga ezi zinto zintathu esinombulelo ngazo kungasinceda sibe nesibindi sokuzama kwakhona ngomso.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Vala amehlo akho uze ucinge ngosuku olulandelayo. \n\nChaza into e-1 onombulelo ngayo. \nChaza into e-1 oyenze kakuhle. \nChaza into e-1 oyithandayo.", - "Well done, you are a hero!": "Usebenzile, uliqhawe!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Vala amehlo akho. \n\nSebenzisa amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole.\n\nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3. \nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Ngaba uziva ngendlela eyahlukileyo? Ukutsala umoya kunceda wonke umzimba kunye nengqondo yethu ukuba zizole. \n\nUngu ngqa phambili!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Vala amehlo akho.\n\nMamela njengoko utsala uze ukhuphe umoya kahlanu.\n\nPhawula indlela ovakalelwa ngayo.", - "When you are ready open your eyes again. You are in control!": "Xa sele ukulungele, phinda uvule amehlo akho. Nguwe olawulayo!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Vala amehlo akho. \n\nThatha umzuzu ucinge ngosuku lwakho.\n\nCinga ngento ekhuthazayo okanye emnandi oye wayenza.\nZincome ngokwenza into enye kakuhle namhlanje. \nCinga ngento enye onokuyenza ngendlela eyahlukileyo ngomso.  \nCinga ngento enye onombulelo ngayo.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Vala amehlo akho. \n\nNgaba abantwana bakho bakhe bakwenze ngathi ufuna ukukrasa? \n\nZinike unqumamo lwemizuzwana eli-10. Tsala uze ukhuphe umoya ucotha amatyeli ama-5. \n\nEmva koko zama ukusabela uzolile.", - "Millions of parents say this helps - A LOT.": "Izigidi zabazali zithi oku kuyanceda - KAKHULU.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Vala amehlo akho. \n\nThatha umzuzu uze uyeke into oyenzayo ukuze unxibelelane nokuphefumla kwakho.   \n\nYeyiphi into enye onombulelo ngayo ngoku?  \nYeyiphi into enye ekwenza wonwabe?  \nYeyiphi into enye oyithandayo?  \n\nAkunyanzelekanga ibe zizinto ezinkulu. Ngamanye amaxesha izinto ezincinci ebomini zezona zibaluleke kakhulu!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Nantsi into yokwenza umzimba wakho uphole:  \n\nHlala ngokukhululekileyo uze uvale amehlo akho ukuba unako.  \nYiba nombono weringi yegolide iskena umzimba wakho wonke, ukusuka ezinyaweni zakho ukuya entloko.   \nNikela ingqalelo njengoko isehla inyuka kumzimba wakho. Ngaba zikhona indawo ezingathi ziqinile? Zindindisholo? Zibuhlungu?   \nNikela ingqalelo kwezo ndawo okomzuzwana. Tsalela umoya kuloo ndawa uze xa uphefumla, uzame ukukhupha nayiphi intlungu okanye ukuqinia.   \nKwenze oku ngokuphefumla kambalwa.   \n\nVula amehlo akho. Uvakalelwa njani ngoku umzimba wakho?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "Xa ungqengqe ebhedini yakho ibe ubuthongo bungehli, ungayizama le nto!", + "Question Time": "Ixesha Lemibuzo", + "It's time for some questions!": "Lixesha lemibuzo!", + "Read Together": "Masifunde Sisonke", + "Let's read a story together!": "Masilifundeni kunye ibali!", + "Let's read a story!": "Makhe sifunde ibali!", + "Let's see how this week has been.": "Makhe sibone ukuba ihamba njani iveki.", + "This week you have done...": "Kule veki uye wenza...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Ubonisa ukuzimisela okukhulu ekubeni ngumzali nasekuzinyamekeleni. \n\nUgqwesile.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ukuziqhelanisa ekhaya yindlela esibenza bube ngcono ngayo ubomi bentsapho yethu. Kodwa kudla ngokubakho imiceli-mngeni. \n\nMasincokole ngeempumelelo kunye neengxaki zethu size sincedane ukuze sibe namacebiso amatsha esinokuwazama!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola: \n* Yintoni ehambe kakuhle ibe yintoni eye yanzima? \n* Zeziphi izisombululo eninokucinga ngazo? \n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", + "Discussion example from @data.workshop.w_1on1.title": "Umzekelo wengxoxo esuka @data.workshop.w_1on1.title", + "Relax Together": "Masiphumle Sonke", + "Relax": "Phola", + "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Masenze kunye into yokuzipholisa – iza kuthatha ngaphantsi komzuzu oyi-1 kwaye uza kuziva phole ngakumbi.", + "Add this activity to @global.my_relaxes": "Faka oku kwenziwayo kwi-@global.my_relaxes", + "Listen and relax": "Mamela uze uphole", + "Read and relax": "Funda uze uphole", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Ungu ngqa phambili!\n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Vala amehlo akho. \n\nPhawula indlela onxibelelene ngayo kunye nomhlaba ongaphantsi kwakho.  \nNgawaphi amalungu omzimba wakho achukumisa umhlaba? Ngawaphi angawuchukumisiyo?   \nPhawula apho kufudumele khona nalapho kubanda khona.  \nYiva umhlaba ongaphantsi kwakho nokuxhasayo. Vumela umzimba wakho wehle ukuze uxhaswe ngumhlaba.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Zama ukwenza le nto xa usenza izinto ezingabalulekanga ezifana nokuhlamba izitya. Kungakunceda kakhulu!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Hlala phantsi uze uvale amehlo akho.\nZingaphi izandi ozivayo? \nMamela izandi ezingaphakathi nangaphandle kwegumbi. Zibale usebenzisa iminwe yakho. \nEmva kwemizuzwana elishumi, mingaphi iminwe oyibambileyo? Uve izandi ezingaphi? \n\nZama kwakhona kangangemizuzwana elishumi. \nNgaba uve izandi ezintsha? Zikhona izandi ozivileyo ngaphakathi komzimba wakho? \nPhawula indlela ovakalelwa ngayo ngoku.", @@ -1010,62 +229,40 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Thatha ithutyana ukuze ucinge ngamava akho. Phawula ukuba uziva ngendlela eyahlukileyo.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Inyathelo 1. Vala amehlo akho uze utsale umoya kakhulu. \n\nInyathelo 2. Khawuzibuze, “Ndicinga ngantoni?” Phawula enoba iingcinga zakho ziyakhuthaza okanye ziyadakumbisa.\nPhawula ukuba uziva njani ngokweemvakalelo. Phawula enoba iimvakalelo zakho zintle okanye azintlanga. Zikhumbuze ukuba enoba uvakalelwa njani, kulungile oko.\nPhawula indlela ovakalelwa ngayo umzimba wakho. Phawula ukuba kukho indawo ebuhlungu okanye eqinileyo.\n\nInyathelo 3. Nikela ingqalelo kwindlela ophefumla ngayo. Yiva umphefumlo wakho njenjoko ungena uze uphume. Unokubeka isandla esiswini sakho uze usive sinyuka size sehle njengoko uphefumla. Kwenze oku njengoko uphefumla kali-10.\n\nInyathelo 4. Yandisa ukwazi umzimba wakho wonke. Mamela izandi zegumbi. \n\nInyathelo 5. Thatha ithutyana ukuze unikele ingqalelo enoba uzive ngendlela eyahlukileyo na. Xa sele ukulungele, vula amehlo akho.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "Usebenzile Ngokuthatha Unqumamo. Ungakwenza oku nanini na uziva uxinezelekile. Kukunika ithuba lokuba uzole nangakumbi. Nokuba kukutsala umoya kakhulu izihlandlo ezimbalwa okanye kukunxibelelana nomhlaba ongaphantsi kwakho, oko kwenza umahluko. Unako nokuThatha Unqumamo kunye Nabantwana bakho!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Hlalani phantsi, valani amehlo enu nize nimamele indlela eniphefumla ngayo njengoko nitsala nize nikhuphe umoya. \n\nPhawula indlela ovakalelwa ngayo. \n\nXa sele ukulungele, phinda uvule amehlo akho.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Kuzameni oko nanini na niziva nixinezelekile kwaye nifuna ikhefu ukuze niphinde ninxibelelane neziqu zenu.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Yima uze wolule iingalo zakho ziye phezulu. Tyhala nawaphi na amafu uze uvumele ilanga libe phezu kwakho. Yolula amacala akho omabini. Zolule ngaphambili nangasemva.\n\nBeka izandla zakho emacaleni. Nyusa amagxa kancinci aye ngasezindlebeni njengoko uphefumla, nciphisa amehlo akho uze ubambe umoya wakho. Yeka amagxa akho njengoko umzimba wakho uphola.\n\nYekelela iingalo zakho uze izibeke ecaleni kwaye ujike nomzimba wakho wangasentla. Iingalo zakho mazibethe umqolo wakho kancinci njengeko ujika usiya kwelinye icala.\n\nBeka unyawo phambi kolunye uze wenze izangqa ngamaqatha, ungalibali ukujikeleza kuwo omabini amacala. Unyawo ngalunye malwenze izangqa ezine kwicala ngalinye.\n\nNgoku xhumaxhuma ngokukhawuleza kangoko unako. Xhumela phezulu! Goba uye ezantsi! Zivocavoce ujikelezisa isinqe!\n\nVala amehlo akho uze uphakamise iingalo zakho ucotha ziye entla kwentloko yakho njengoko utsala umoya. Thoba iingalo zakho ngokucotha zize zibe secaleni njengoko ukhupha umoya.\n\nThatha ithutyana ukuze ucinge ngamava akho.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "Usebenzile! Ungayenza le nto nanini na uziva ngathi ufuna ukukhupha uxinezeleko uze wenze ingqondo kunye nomzimba wakho zidlamke.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Yenze uluhlu lwezinto ezisempilweni othanda ukuzenza. Nanga amanye amacebiso:\n* Ukumamela ingoma oyithandayo\n* Ukuhambahamba (ukuba kuvumelekile)\n* Ukujima\n* Ukusela ikomityi yeti uwedwa\n* Ukufowunela itshomi yakho\n* Ukucula, ukudanisa, ukuthandaza okanye ukufunda\n* Ukuhlala elangeni uvale amehlo\n* Ukubukela inkqubo oyithandayo ekwi-T.V.\n\nKhetha ibe nye namhlanje!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "Xa uzinyamekela, unyamekela abantwana bakho. Sonke kufuneka sinxibelelane. Zama ukuthetha nezihlobo, intsapho kunye nangeenethiweki ezaziwayo yonke imihla. Ukuba sekulithuba ugqibele ukufowunela umntu, kwenze ngoku oko!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Cinga ngento ekwenza ube nomsindo. Kwenzeka xa kutheni oku? Udla ngokusabela njani?\n\nThintela ukuba nomsindo kwasekuqaleni. Lala okanye uphumle xa udiniwe. Zama ukutya xa ulambile. Cela umntu akuxhase xa uziva ngathi uwedwa.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Ukulawula umsindo kunganzima. Thatha ikhefu xa uziva usiba nomsindo ngakubantwana bakho okanye omnye umntu.\n\nYiya kwenye indawo kangangemizuzu emi-5 uze ukwazi ukulawula iimvakalelo zakho. Ukuba kukhuselekile phandle, yiya khona. Uza kudlula kule nto!", - "Customise your @global.parent_app": "Vumelanisa i-@global.parent_appyakho", - "These quick questions will fit this app to your needs.": "Le mibuzo emifutshane iza kwenza le app ifanele iimfuno zakho.", - "Let’s start with a few questions about you and your family.": "Masiqale ngemibuzo embalwa malunga nawe kunye nentsapho yakho.", - "We would love to know your first name or nickname:": "Singathanda ukwazi igama okanye isiteketiso sakho:", - "Are you a woman or a man?": "Ungumfazi okanye uyindoda?", - "Woman": "Mfazi", - "Man": "Indoda", - "How old are you?": "Mingaphi iminyaka yakho?", - "Adults": "Abantu abadala", - "Teens": "Abantwana Abafikisayo", - "Children": "Abantwana", - "Babies": "Iintsana", - "How many people are in your household?": "Bangaphi abantu abahlala ekhayeni lakho?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Unokuzenzela i-@global.weekly_workshops OKANYE unokumema amanye amalungu entsapho okanye izihlobo zikujoyine – uza kufunda into eninzi komnye nomnye. Kuxhomekeke kuwe!", - "How would you like to do your @global.weekly_workshops?": "Ungathanda ukuyenza njani i-@global.weekly_workshops yakho?", - "Can you think of a name for your group?": "Ngaba ungacinga ngegama leqela lakho?", - "Which day of the week would you like to do your @global.weekly_workshops?": "Loluphi usuku lweveki ongathanda ukwenza ngalo i-@global.weekly_workshops yakho?", - "Monday": "NgoMvulo", - "Tuesday": "NgoLwesibini", - "Wednesday": "NgoLwesithathu", - "Thursday": "NgoLwesine", - "Friday": "NgoLwesihlanu", - "Saturday": "NgoMgqibelo", - "Sunday": "NgeCawa", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Kulunge kakhulu! Siza kuvula uqeqesho olutsha lweqela lakho qho ngeveki. Oku kuza kuvumela ukuba nonke nizame izinto enizifunde kunye neentsapho zenu ngaphambi kokuba nifunde isakhono esilandelayo.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Kulunge kakhulu! Siza kuvula uqeqsho olutsha qo ngeveki. Oku kuza kuvumela ukuba uzame izinto ozifunde kunye nentsapho yakho ngaphambi kokuba ufunde isakhono esilandelayo.", - "You can always change these settings in your @global.weekly_workshop_options.": "Unako ukutshintsha olu lungiso nanini na kwi-@global.weekly_workshop_options yakho.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Siyayiqonda ukuba inzima le nto. Siye songeza amacebiso aluncedo angendlela onokuchitha ngalo ixesha nomntwana wakho ofikisayo kwi@data.parent_centre.my_tips.location_text, ngoko ungawafikelela ngoku. \n\nNgenxa yokuba i-@data.workshop.w_1on1.title isisiseko sazo zonke izixhobo zokuba ngumzali, iza kuba yi-@global.weekly_workshop oza kuyifumana kwiveki ezayo!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Usebenzile! I-@global.weekly_workshop elandelayo iza kukunika amacebiso ngale nto, njengesiseko sazo zonke ezinye izixhobo zokuba ngumzali. Kodwa sele unesiqalo esihle!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Kwi-@data.parent_centre.my_tips.location_text siye safaka izixhobo ezibalulekileyo ngendlela onokuncoma ngayo ukuze ukhawuleze uzifikelele.\n\nKwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. Kwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nSiza kufunda ngakumbi ngokulawula uxinezelelo kwiveki @data.workshop.w_stress.numberye-@global.weekly_workshops - kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe@data.parent_centre.my_tips.location_text ukuze uqalise!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nSiza kufunda malunga nokulawula uxinezeleko kwiveki @data.workshop.w_stress.number ye @global.weekly_workshops, kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe @data.parent_centre.my_tips.location_text ukuze uqalise.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Siyathemba ukuba izixhobo zethu zokulawula uxinezeleko ziza kuba luncedo kuwe. Unokuzifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Kuhle. Sinoqeqesho malunga nokwenza ibhajethi yosapho enokunceda kuxinezeleko lwemali ngokubanzi ngakumbi kuze kunciphise iingxabano ezinxulumene nemali.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Uxinezeleko lwemali lungabangela usindeke kakhulu. \n\nSinoqeqesho malunga nebhajethi yosapho kwiiveki ezintlanu, kodwa ungafikelela kwezinye iingcebiso zokubhajetha kosapho phantsi kwe@data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. Ukuze uzinyamekele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nKwiveki 5 ye-@global.weekly_workshops, siza kufunda okungakumbi malunga nokulawula uxinezeleko, kodwa sele unako ukufikelela kwizixhobo eziluncedo phantsi kwe-@data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha kwaye ukusebenzisa i-@global.parent_app linyathelo elihle lokukunceda kunye nentsapho yakho!\n\nIzixhobo zethu zincede amawaka abazali kunye neentsapho zancipha ekubeni noxinezeleko kwaye zaba nexesha elimnandi kunye. Silapha ukuze sikuxhase.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSiyathemba ukuba izixhobo zokulawula uxinezeleko ziza kukunceda uzive uzolile phantsi kweemeko ezinzima. Ungazifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Oku kuxhalabisa bonke abazali nokuba baphi. Siza kuqinisekisa ukuba ufumana inkxaso malunga nokwakha uxibelelwano. \n\nSiza kuthetha ngakumbi malunga nokuceba ukhuseleko lomntwana wakho ofikisayo kwi-@global.weekly_workshops, kodwa phantsi kwe-@data.parent_centre.my_tips.location_text unokufikelela kumacebiso abalaseleyo aphambili ukuze ugcine umntwana wakho ofikisayo ekhuselekile!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Oku kuhle ngeyona ndlela. Ukuba ngumzali kunzima, kodwa uqhuba kakuhle kakhulu kule mbopheleko.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Kwi-@global.parent_centre ungafikelela kwizixhobo ezithetha ngqo ngalo mbandela, umxholo owongezelelekileyo kunye nezixhobo enokuba kunini na. \n\nUngafikelela kwezinye iingcebiso zokuqala ezisisiseko eziya kunceda xa ubeka imithetho nasekucebeni ukhuseleko phantsi kwe @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools kunye @data.workshop.w_safe.tools yongezwe ku @data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Kwi-@global.parent_centre ungafikelela kwizixhobo ezithetha ngqo ngalo mbandela, umxholo owongezelelekileyo kunye nezixhobo enokuba kunini na. \n\nUngafikelela kwezona ngcebiso zokuqala zisisiseko eziya kunceda ekubekeni imithetho phantsi kwe@data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_rules.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKwi-@global.weekly_workshops ezizayo siza kuba nenkxaso engakumbi, ukuba ungathanda ukwazi okungakumbi!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Ikhontenti evulwa yile mibuzo uyafumaneka ngoku phantsi kwe@data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "Usanda kuvula uqeqesho lokuqala!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Vala amehlo akho. \n\nMasisebenzise amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole. \n\nChaza izandi ezintathu ozivayo ngoku. \nChaza amavumba amathathu owevayo ngoku. \nChaza izidlo ezithathu ozithanda kakhulu. \n\nZeziphi izinto ezintathu onombulelo ngazo ngoku? Akunyanzelekanga ibe zizinto ezinkulu.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Emva kosuku olunzima, ukucinga ezi zinto zintathu esinombulelo ngazo kungasinceda sibe nesibindi sokuzama kwakhona ngomso.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Vala amehlo akho uze ucinge ngosuku olulandelayo. \n\nChaza into e-1 onombulelo ngayo. \nChaza into e-1 oyenze kakuhle. \nChaza into e-1 oyithandayo.", + "Well done, you are a hero!": "Usebenzile, uliqhawe!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Vala amehlo akho. \n\nSebenzisa amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole.\n\nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3. \nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Ngaba uziva ngendlela eyahlukileyo? Ukutsala umoya kunceda wonke umzimba kunye nengqondo yethu ukuba zizole. \n\nUngu ngqa phambili!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Vala amehlo akho.\n\nMamela njengoko utsala uze ukhuphe umoya kahlanu.\n\nPhawula indlela ovakalelwa ngayo.", + "When you are ready open your eyes again. You are in control!": "Xa sele ukulungele, phinda uvule amehlo akho. Nguwe olawulayo!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Vala amehlo akho. \n\nThatha umzuzu ucinge ngosuku lwakho.\n\nCinga ngento ekhuthazayo okanye emnandi oye wayenza.\nZincome ngokwenza into enye kakuhle namhlanje. \nCinga ngento enye onokuyenza ngendlela eyahlukileyo ngomso.  \nCinga ngento enye onombulelo ngayo.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Vala amehlo akho. \n\nNgaba abantwana bakho bakhe bakwenze ngathi ufuna ukukrasa? \n\nZinike unqumamo lwemizuzwana eli-10. Tsala uze ukhuphe umoya ucotha amatyeli ama-5. \n\nEmva koko zama ukusabela uzolile.", + "Millions of parents say this helps - A LOT.": "Izigidi zabazali zithi oku kuyanceda - KAKHULU.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Vala amehlo akho. \n\nThatha umzuzu uze uyeke into oyenzayo ukuze unxibelelane nokuphefumla kwakho.   \n\nYeyiphi into enye onombulelo ngayo ngoku?  \nYeyiphi into enye ekwenza wonwabe?  \nYeyiphi into enye oyithandayo?  \n\nAkunyanzelekanga ibe zizinto ezinkulu. Ngamanye amaxesha izinto ezincinci ebomini zezona zibaluleke kakhulu!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Nantsi into yokwenza umzimba wakho uphole:  \n\nHlala ngokukhululekileyo uze uvale amehlo akho ukuba unako.  \nYiba nombono weringi yegolide iskena umzimba wakho wonke, ukusuka ezinyaweni zakho ukuya entloko.   \nNikela ingqalelo njengoko isehla inyuka kumzimba wakho. Ngaba zikhona indawo ezingathi ziqinile? Zindindisholo? Zibuhlungu?   \nNikela ingqalelo kwezo ndawo okomzuzwana. Tsalela umoya kuloo ndawa uze xa uphefumla, uzame ukukhupha nayiphi intlungu okanye ukuqinia.   \nKwenze oku ngokuphefumla kambalwa.   \n\nVula amehlo akho. Uvakalelwa njani ngoku umzimba wakho?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "Xa ungqengqe ebhedini yakho ibe ubuthongo bungehli, ungayizama le nto!", + "Start": "Qalisa", + "Add this activity to @global.my_activities": "Yongeza lo msebenzi kwi-@global.my_activities", + "Powered by Parenting for Lifelong Health and partners": "Ixhaswa yi-Parenting for Lifelong Health kunye namaqabane ayo", + "Ideas from other families:": "Amacebiso avela kwezinye iintsapho:", + "Customise @global.parent_app": "Zivumelanise ne-@global.parent_app", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha, kwaye ukuqhubeka sisebenzisa i-@global.parent_app linyathelo elihle lokunceda wena nosapho lwakho!\n\nIzinto zethu zincede amawaka abazali kunye neentsapho zaye ziyeka ukuba noxinezeleko kwaye zaba nexesha elimnadi kunye. Silapha ukuze sikuxhase.", + "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Oku kuxhalabisa bonke abazali nokuba baphi. Khumbula ukusebenzisa izakhono zakho ezintsha ukuze uqhubeke nokwakha unxibelelwano oluhle nomntwana wakho ofikisayo. \n\nUngaphinda ujonge iingcebiso ezingundoqo ekucebeni ukhuseleko lomntwana wakho kwi @global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text!", + "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Kuhle. Ukuba kuye kwavela naluphi na uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho kwixesha elizayo, ungaphinda ujonge i@data.workshop.w_money.in_text_title okanye i@data.parent_centre.my_tips.location_text!", + "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Uxinezeleko ngemali lungabangela usindeke kakhulu. \n\nNanini na kuvela uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho, unokufumana iingcebiso kwi @data.workshop.w_money.in_text_title okanye phantsi kwe @data.parent_centre.my_tips.location_text!", + "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Khumbula ukuba unokufikelela kwiingcebiso ezininzi eziluncedo kunye nezinto onokuzisebenzisa kwi @global.parent_centre - oku ungakufumana nanini na!", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKhumbula, unokufumana inkxaso engakumbi malunga noku @data.workshop.w_safe.in_text_title nanini na uyidinga!", "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Siyayiqonda ukuba inzima le nto. Ungajonga ezinye iingcebiso eziluncedo ngendlela onokuchitha ngayo ixesha kunye nomntwana wakho ofikisayo @data.parent_centre.my_tips.location_text okanye ungaphinda ujonge i@data.workshop.w_1on1.in_text_title.", "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "Wenze kakuhle ngokubeka isiseko esihle kangaka! Ungaphinda ujonge i@data.workshop.w_1on1.in_text_title nanini na ukuze ufumane iingcamango zendlela yokuchitha ixesha kunye.", "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Ungaphinda ujonge indlela onokukusebenzisa ngayo ukuncoma phantsi ko@data.parent_centre.my_tips.location_text.\n\nUkufumana amanye amacebiso angakumbi ngendlela yokusisebenzisa kakuhle esi sakhono, unokuphinda ujonge kwi @data.workshop.w_praise.in_text_title.", @@ -1073,158 +270,151 @@ "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ungafumana nezinye izixhobo ezisebenzayo zokulawula uxinzelelo phantsi kwe@data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Kuhle. Ukuba kuye kwavela naluphi na uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho kwixesha elizayo, ungaphinda ujonge i@data.workshop.w_money.in_text_title okanye i@data.parent_centre.my_tips.location_text!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Uxinezeleko ngemali lungabangela usindeke kakhulu. \n\nNanini na kuvela uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho, unokufumana iingcebiso kwi @data.workshop.w_money.in_text_title okanye phantsi kwe @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza uphole, uziphawule uze uzivuze wena siqu. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha, kwaye ukuqhubeka sisebenzisa i-@global.parent_app linyathelo elihle lokunceda wena nosapho lwakho!\n\nIzinto zethu zincede amawaka abazali kunye neentsapho zaye ziyeka ukuba noxinezeleko kwaye zaba nexesha elimnadi kunye. Silapha ukuze sikuxhase.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSiyathemba ukuba izixhobo zethu zokulawula uxinezeleko ziza kuqhubeka zikunceda uzive uzolile phantsi kweemeko ezinzima. Ungazifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Oku kuxhalabisa bonke abazali nokuba baphi. Khumbula ukusebenzisa izakhono zakho ezintsha ukuze uqhubeke nokwakha unxibelelwano oluhle nomntwana wakho ofikisayo. \n\nUngaphinda ujonge iingcebiso ezingundoqo ekucebeni ukhuseleko lomntwana wakho kwi @global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase!\n\nKhumbula, ungafumana izixhobo ezijolisileyo, umbandela owongezelelekileyo kunye nezinto onokuzisebenzisa koku kwi@global.parent_centre nanini na. Unokuphinda ujonge iingcebiso ezingundoqo ngokubeka imithetho kunye nokuceba ukhuseleko phantsi kwe @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Khumbula, ungafumana izixhobo ezijolisileyo, umbandela owongezelelekileyo kunye nezinto onokuzisebenzisa koku kwi@global.parent_centre nanini na. \n\nUnokuphinda ujonge iingcebiso ezingundoqo zokubeka imithetho phantsi kwe@data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKhumbula, unokufumana inkxaso engakumbi malunga noku @data.workshop.w_safe.in_text_title nanini na uyidinga!", - "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Khumbula ukuba unokufikelela kwiingcebiso ezininzi eziluncedo kunye nezinto onokuzisebenzisa kwi @global.parent_centre - oku ungakufumana nanini na!", - "Are there teens in your family?": "Ngaba kukho abantwana abafikisayo kusapho lwakho?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Le app ijolise kwiintsapho ezinabantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo kusapho lwakho!", + "Customise for your needs": "Tshintsha ngenxa yeemfuno zakho", + "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Wonke umzali osehlabathini uyasokola ngala maxesha obunzima. Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sikunike inkxaso oyifunayo.\n\nNyaniseka. Khumbula ukuba awukho wedwa! Izigidi zabazali zivakalelwa ngale ndlela uvakalelwa ngayo kwaye sonke sifanelwe yinkxaso.", + "Thank you for being honest": "Enkosi ngokunyaniseka", + "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Kuhle ukubona ukuba uyazola xa umntwana wakho ofikisayo esenza into ecaphukisayo. Ininzi into abanokuyifunda kuwe!", + "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Kwakuhle ukubona ukuba uyakwazi oko kwenziwa ngumntwana wakho ofikisayo. Ukuba ngumzali kunzima, kodwa uyaphumelela ngokwenene koku ukuze ubagcine bekhuselekile.", + "You selected \"I would rather not answer\"": "Ukhethe \"Ndikhetha ukungaphenduli\"", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Kulungile!\n\nKhumbula, ukuba uyakhetha ukunikeza impendulo yakho izokugcinwa bucala kwaye izokusinceda ekukuboneleleni umxholo olungele wena kanye.", "Are there adults in your family?": "Ngaba bakhona abantu abadala kusapho lwakho?", "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Le app ijolise kubazali babantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo!", + "Are there teens in your family?": "Ngaba kukho abantwana abafikisayo kusapho lwakho?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Le app ijolise kwiintsapho ezinabantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo kusapho lwakho!", "Are you sure you want to skip this question?": "Uqinisekile ufuna ukuwutsiba lo mbuzo?", "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Uqinisekile ukuba ufuna ukuwudlula lo mbuzo? Khumbula, impedulo yakho izokugcinwa bucala kwaye izosinceda siqonde iimfuno zobuzali bakho. \n\nUngakwazi ukukhetha ukungaphenduli noba ngowuphi umbuzo ngokukhetha isangqa.", - "You selected \"I would rather not answer\"": "Ukhethe \"Ndikhetha ukungaphenduli\"", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Kulungile!\n\nKhumbula, ukuba uyakhetha ukunikeza impendulo yakho izokugcinwa bucala kwaye izokusinceda ekukuboneleleni umxholo olungele wena kanye.", - "Customise for your needs": "Tshintsha ngenxa yeemfuno zakho", - "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Wonke umzali osehlabathini uyasokola ngala maxesha obunzima. Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sikunike inkxaso oyifunayo.\n\nNyaniseka. Khumbula ukuba awukho wedwa! Izigidi zabazali zivakalelwa ngale ndlela uvakalelwa ngayo kwaye sonke sifanelwe yinkxaso.", - "It is hard to find time to have fun with your teenager.": "Kunzima ukuba nexesha lokonwaba kunye nomntwana wakho ofikisayo.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Zingaphi iintsuku evekini apho ukwaziyo ukubanika ingqalelo yakho uze wenze into abayithandayo kunye nabo?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_1on1.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Kubomi bethu obuxakekileyo, kunzima ukunikela ingqalelo kwizinto ezikhuthazayo.", - "How many days in the past week have you praised your teen?": "Kwiveki ephelileyo, uye wamncoma iintsuku ezingaphi umntwana wakho ofikisayo?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_praise.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Eli lixesha elibangela uxinezeleko kwiintsapho.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Kwiveki ephelileyo, ngaba njengomzali/umnakekeli uye waziva uxinezelekile?", - "Sometimes our children make us really upset.": "Ngamanye amaxesha, abantwana bethu bakhe basicaphukise.", - "How many days in the past week did you shout, scream or yell at your teen?": "Kwiveki ephelileyo, zingaphi iintsuku oye washawuta waza wabakrasela ngazo abantwana bakho?", "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "Usebenzile. Inzululwazi yengqondo ibonisa ukuba ukulawula umsindo wakho kuphucula ukukhula kwengqondo yomntwana wakho. Zingce.", - "Money is one of the biggest stresses for families now.": "Imali yenye yezona zinto zinkulu ezibangela uxinezeleko kwiintsapho ngoku.", - "How many days in the past week have you worried or felt anxious about money?": "Kwiveki ephelileyo, zingaphi iintsuku oye wanexhala ngazo okanye oye waziva unexhala ngemali?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Kwinyanga edlulileyo (iinstuku ezingama-30), zingaphi iintsuku oye waphelelwa ngazo yimali yokuthenga ukutya?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_money.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Xa abantwana besenza ukusa, oko kubangela uxinezeleko.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Zingaphi intsuku kule veki idlulileyo oye waqeqesha abantwana bakho ngokubabetha, ukubabetha ezimpundu okanye ukubabetha ngesandla sakho okanye ngenye into efana noswazi okanye ibhanti?", - "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Kuhle ukubona ukuba uyazola xa umntwana wakho ofikisayo esenza into ecaphukisayo. Ininzi into abanokuyifunda kuwe!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_stress.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Kunzima ukuzazi kakuhle izinto ezenziwa ngaabatwana bakho abafikisayo njengoko baya bekhula ibe bezimela.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Kwiveki ephelileyo, zingaphi iintsuku oye wayazi ngazo ukuba uphi umntwana wakho ofikisayo kwaye ukunye nabani?", - "This is good to hear.": "Kuhle ukuva oku.", - "Were you in lockdown this week?": "Ngaba beniphantsi kwemithetho yokuhlala ekhaya kule veki?", - "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Kwakuhle ukubona ukuba uyakwazi oko kwenziwa ngumntwana wakho ofikisayo. Ukuba ngumzali kunzima, kodwa uyaphumelela ngokwenene koku ukuze ubagcine bekhuselekile.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Zingaphi iintsuku kwiveki eqhelekileyo ekungekho mithetho yokuhlala endlwini oye wazi ukuba umntwana wakho ofikisayo wenza ntoni kwaye ukunye nabani na?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "I-@data.workshop.w_safe.tools ifakwe kwi-@data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Sonke sifuna abantwana bethu bahlale bekhuselekile.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "Kwinyanga ephelileyo (iintsuku ezingama-30), zingaphi iintsuku oye wacokola ngazo kunye nomntwana wakho malunga nokukhuseleka kubundlobongela ngokwesini enoba ukwi-intanethi okanye ekuhlaleni?", - "This could be when they are going out with friends, or talking about the websites they use.": "Kusenokwenzeka xa bekunye neetshomi zabo okanye bethetha ngeewebhsayithi abazisebenzisayo.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Ngoku sinocelo-mngeni olutsha – ukugcina abantwana bethu abafikisayo bekhuselekile kwi-COVID-19.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Kwiveki ephelileyo, zingaphi iintsuku aye wakhuseleka ngazo umntwana wakho ofikisayo ngokuthi anxibe imaski, angasondelelani nabanye abantu nokungayi kwiindawo ezinabantu abaninzi?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "Kungalucelo-mngeni ukugcina umntwana wakho ekhuselekile kwi-COVID! Sisaqulunqa amacebiso – kungekudala uza kuwafumana kwi-@global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Kuhle oko. Sisaqulunqa amacebiso okugcina umntwana wakho ofikisayo ekhuselekile kwi-COVID – kungekudala uza kuwafumana kwi-@global.parent_centre.", - "Thank you for being honest": "Enkosi ngokunyaniseka", - "CHAT": "NCOKOLA", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Yabelana ngendlela oziva ngayo, kwaye ukhuthaze umntwana wakho ukuba athethe ngezinto ezimkhathazayo. Niya kuqondana ngcono kwaye ninokwenza isicwangciso esilungileyo kunye ukuze nihlale nisempilweni kwaye nonwabile!", - "CAUTION": "ISILUMNKISO", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Fumana ulwazi lwakho kwimithombo ethembekileyo yolwazi, ukuze ube nokuzithemba kula maxesha angaqinisekanga. Siva kwaye sibona iindaba ezininzi ngabanye abantu kunye neefowuni, iTV, i-intanethi. Ingaba ikwenza uzive uthandabuza, ixhala, uloyiko, umsindo, okanye ukubhideka? Jonga ngaphambi kokuba wabelane okanye wenze!", - "CHOOSE": "KHETHA", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Ukwenza ukhetho olufanelekileyo olugcina wonke umntu esempilweni kwaye ekhuselekile kunokuba nzima. Ingakumbi kula maxesha! Unokumnceda umntwana wakho ofikisayo enze izigqibo ezifanelekileyo.", - "CHILL": "PHOLA", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Sonke siziva sicinezelekile ngamanye amaxesha. Thatha umoya onzulu okanye nenze into eyonwabisayo kunye. Kungenza umahluko omkhulu ukwenza ikhaya lakho lonwabe kwaye libe noxolo! Nazi ezinye iimbono onokuzizama:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Iingcinga ezingakhiyo zisenza sithethe size senze izinto ezimbi. Zama ukutshintsha into oyicingayo kwaye uyithethe ukusuka kwengalunganga ukuya kwelungileyo!", - "A teen sometimes does something because they:": "Umntwana ngamanye amaxesha wenza into ngenxa yokuba: ", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Mamela abahlobo babo\n- Ufuna ukwenza okwenziwa ngabanye\n-Cinga ngakumbi 'ngoku' kunokuba 'kamva'\n-Iimpembelelo zothando kwaye unokufumana ukudikwa ngononophelwa\n- Ungazikhathazi ngomngcipheko - unokuyithanda imingcipheko\n- Yiba namava anqongopheleyo onokuthi uthembele kuwo\n- Bazimisele ukuzama into - nokuba kwenzeka ntoni na", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kunokukunceda ukugcina oku engqondweni xa umntwana wakho ofikisayo esenza isigqibo esiphosakeleyo. Thetha nabo kwaye nichithe ixesha kunye ukuze nikwazi ukubanceda bakhethe ngcono kwixesha elizayo!", - "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Ukuqonda indlela umntwana wakho avakalelwa ngayo kunye nendlela onokumxhasa ngayo kwenza umahluko omkhulu kuni nobabini! Jonga umntwana wakho kwaye ubuze indlela avakalelwa ngayo. Cofa kubuso obungezantsi ukuze ufumane ngakumbi:", - "Hopeful": "Ithemba", - "Resilient": "Ukunyamezela", - "Self-esteem": "Ukuzithemba", - "Teens have goals and dreams for the future – near and far!": "Umntwana uneenjongo kunye namaphupha ekamva - kufutshane nakude!", - "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Buza umntwana wakho malunga ngeenjongo kunye namaphupha akhe, bakhuthaze ukuba bacinge oko bakufuna kwikamva labo, kwaye benze isicwangciso kunye ukuze basebenze ekuwafezekiseni.", - "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Abantwana abakwaziyo ukunyamezela nokumelana neemeko ezinzima, baziqhelanise neenguqu, baze basombulule iingxaki xa zivela.", - "Praise your teen for overcoming difficulty and support them where you can.": "Mncome umntwana wakho ofikisayo ngokoyisa ubunzima kwaye umxhase apho unako.", - "A teen’s self-esteem is how they think of themselves.": "Ukuzithemba komntwana yindlela azicingela ngayo.", - "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Khuthaza ukuba ube nomfanekiso olungileyo wesiqu sakhe, misela umzekelo wokungazihlekisi okanye uzigxeke ngalo lonke ixesha. Wazi amandla omntwana wakho kwaye uxhase ubuthathaka bakhe", - "Lonely": "Isithukuthezi", - "Anxious": "Ukuxhalaba", - "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Abantwana banokuziva bebodwa, nokuba bakunye nabanye. Basenokuziva ngathi abanaye nabani na abanokuthetha naye, bamthembe, okanye babelane naye.", - "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Buza ukuba umntwana wakho ofikisayo uqhuba njani kwaye uzame ukufumana iindlela ezintsha zokuzonwabisa kunye nabahlobo kunye nosapho - ingakumbi ngexesha lokuvalwa", - "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Ukuxhalaba yimvakalelo eqhelekileyo kwaye inokusinceda sijamelane neemeko ezingumceli mngeni. Kodwa ukuxhalaba kakhulu okanye ukuxhalaba okubangela ukuba abantwana benze izinto abazithandayo kuyingxaki.", - "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Nceda umntwana wakho abone oko kubenza baxhalabe kwaye benze isicwangciso sokuba banokuphendula anjani kwiingcinga ezixhalabisayo.", - "Doing a relaxation activity together can help!": "Ukwenza umsebenzi wokuphumla kunye kunokunceda!", - "Depressed": "Ukudandatheka", - "Self-harm": "Ukuzenzakalisa", - "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Ukuziva udakumbile okanye uphantsi, ukuba kwimeko embi, zonke ziimvakalelo eziqhelekileyo zomntu. Ukudandatheka kuxa iqhubeka ixesha elide kwaye imisebenzi yesiqhelo yemihla ngemihla yomntwana wakho iyachaphazeleka. Umntwana wakho unokuziva engenathemba kwaye engakwazi okanye engakhuthazwa ukutshintsha nantoni na.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Zama ukufumana uncedo lwengcali.", - "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Ngamanye amaxesha abantwana banokuzilimaza ngenjongo yokujongana neemvakalelo ezimbi ezifana nomsindo, ityala, ukungabi nanto, okanye ukuzonyanya. Oku kunokubangelwa kukuxhalaba okanye ukudandatheka.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Ukuba umntwana wakho ofikisayo ukulungele ukuchaza indlela ukuzenzakalisa okumenza azive bhetele, unokuqalisa ukuqonda izizathu. Zama ukufumana uncedo lwengcali.", - "What does that mean?": "Ithetha ntoni le nto?", - "How can you help?": "Unganceda njani?", - "We all have negative thoughts sometimes.": "Sonke sikhe sibe neengcinga ezimbi ngamanye amaxesha.", - "\"I am a failure\"": "Ndingohlulekileyo", - "What to do?": "Kwenziwe ntoni?", - "Examples": "Imizekelo", - "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ukuzixelela wena okanye umntwana wakho ukuba uyeke okanye uthethe into eyahlukileyo amaxesha amaninzi akuncedi.", - "\"I do everything perfectly\"": "\"Ndenza yonke into ngokugqibeleleyo\"", - "Instead, you can ask:": "Endaweni yoko, unokubuza:", - "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Ngaba ingcinga iyinyani? Zeziphi ezinye iingcaciso?\n- Kwenzeka ntoni ukuba ndiqhubeka ndikholelwa kule ngcamango?\n - Ndingamxelela ntoni umhlobo ukuba unale ngcinga?", - "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "\"Oku kunzima, kodwa uzama ngako konke okusemandleni akho, kwaye siza kusebenza kunye ukufumana isisombululo\"", - "\"It’s your fault\"": "\"Lityala lakho\"", - "\"Let’s come up with a solution together\"": "\"Masize nesisombululo kunye\"", - "\"I lost my job\"": "\"Ndiphelelwe ngumsebenzi\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Ndifunde okuninzi emsebenzini wam - oko kuya kundinceda ndifumane omnye\"", - "\"Nobody likes me\"": "\"Akhuko mntu undithandayo\"", - "\"Last week I did have a great time with...\"": "\"Kwiveki ephelileyo ndibe nexesha elimnandi no ... \"", - "\"Bad things always happen to me\"": "\"Izinto ezimbi zihlala zisenzeka kum\"", - "\"This good thing happened the other day...\"": "\"Le nto intle yenzeka ngenye imini...\"", - "Change": "Utshintsho", - "MAKE TIME": "YENZA IXESHA", - "Set aside time to have a conversation without distractions.": "Bekela bucala ixesha lokuncokola ngaphandle kweziphazamiso.", - "LISTEN": "PHULAPHULA", - "Ask your teen questions and let them share their views without interrupting.": "Buza umntwana wakho imibuzo kwaye ubavumele babelane ngeembono zabo ngaphandle kokuphazamisa.", - "WORK TOGETHER": "SEBENZANI KUNYE", - "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Thethani ngengxaki ethile, nize nesisombululo kunye, yaye nobabini nenze oko nivumelana ngako.", - "Thank your teen for sharing and highlight how it is helping you both.": "Bulela umntwana wakho ofikisayo ngokwabelana kwaye uqaqambise indlela eninceda ngayo nobabini.", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nSiza kufunda malunga nokulawula uxinezeleko kwiveki @data.workshop.w_stress.number ye @global.weekly_workshops, kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe @data.parent_centre.my_tips.location_text ukuze uqalise.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha kwaye ukusebenzisa i-@global.parent_app linyathelo elihle lokukunceda kunye nentsapho yakho!\n\nIzixhobo zethu zincede amawaka abazali kunye neentsapho zancipha ekubeni noxinezeleko kwaye zaba nexesha elimnandi kunye. Silapha ukuze sikuxhase.", + "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Oku kuxhalabisa bonke abazali nokuba baphi. Siza kuqinisekisa ukuba ufumana inkxaso malunga nokwakha uxibelelwano. \n\nSiza kuthetha ngakumbi malunga nokuceba ukhuseleko lomntwana wakho ofikisayo kwi-@global.weekly_workshops, kodwa phantsi kwe-@data.parent_centre.my_tips.location_text unokufikelela kumacebiso abalaseleyo aphambili ukuze ugcine umntwana wakho ofikisayo ekhuselekile!", + "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Kuhle. Sinoqeqesho malunga nokwenza ibhajethi yosapho enokunceda kuxinezeleko lwemali ngokubanzi ngakumbi kuze kunciphise iingxabano ezinxulumene nemali.", + "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Uxinezeleko lwemali lungabangela usindeke kakhulu. \n\nSinoqeqesho malunga nebhajethi yosapho kwiiveki ezintlanu, kodwa ungafikelela kwezinye iingcebiso zokubhajetha kosapho phantsi kwe@data.parent_centre.my_tips.location_text!", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Ikhontenti evulwa yile mibuzo uyafumaneka ngoku phantsi kwe@data.parent_centre.my_tips.location_text.", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKwi-@global.weekly_workshops ezizayo siza kuba nenkxaso engakumbi, ukuba ungathanda ukwazi okungakumbi!", + "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Siyayiqonda ukuba inzima le nto. Siye songeza amacebiso aluncedo angendlela onokuchitha ngalo ixesha nomntwana wakho ofikisayo kwi@data.parent_centre.my_tips.location_text, ngoko ungawafikelela ngoku. \n\nNgenxa yokuba i-@data.workshop.w_1on1.title isisiseko sazo zonke izixhobo zokuba ngumzali, iza kuba yi-@global.weekly_workshop oza kuyifumana kwiveki ezayo!", + "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Usebenzile! I-@global.weekly_workshop elandelayo iza kukunika amacebiso ngale nto, njengesiseko sazo zonke ezinye izixhobo zokuba ngumzali. Kodwa sele unesiqalo esihle!", + "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Kwi-@data.parent_centre.my_tips.location_text siye safaka izixhobo ezibalulekileyo ngendlela onokuncoma ngayo ukuze ukhawuleze uzifikelele.\n\nKwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", + "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. Kwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", + "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nSiza kufunda ngakumbi ngokulawula uxinezelelo kwiveki @data.workshop.w_stress.numberye-@global.weekly_workshops - kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe@data.parent_centre.my_tips.location_text ukuze uqalise!", + "Talk Together": "Thethani nonke", + "Share ideas, support each other!": "Yabelanani ngamacebiso, xhasanani!", + "Think Together": "Masicinge Sonke", + "It's time to think together!": "Lixesha lokuba sicinge sonke!", + "Think": "Cinga", + "It's time to think!": "Lixesha lokucinga!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Nazi izakhono eziphambili kule veki! \n\nZisebenzise xa usekhaya kwaye ungazifumana nanini na kwi-@global.parent_centre yakho.", "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Thatha umoya onzulu.\n2. Jonga ukuba iindaba ziyavakala.\n3. Buza ukuba bazifumana phi iindaba.\n4. Jonga kwakhona nabanye abantu/imithombo oyithembileyo.\n5. Cinga ukuba ezi ndaba zinganceda okanye zoyikise abantu kuphela xa usabelana ngazo.", "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Sonke ngamanye amaxesha sifuna ukuxelela abantwana bethu \"Kufuneka wenze oku, okanye kungenjalo… inkathazo!\", kodwa oko akwenzi ukuba balandele imithetho ngcono.\n\nKunoko, unokunceda umntwana wakho enze ukhetho olufanelekileyo ngokubonisa ukuba uyamthemba nokuthetha nabo:", "DISCUSS CONSEQUENCES": "XOXA NGEZIPHUMO", "Ask \"If you do this, what could happen?\"": "Buza \"Ukuba wenza oku, kuya kwenzeka ntoni?\"", - "PRAISE": "NCOMA", "If something goes well, praise your teen!": "Ukuba into ihamba kakuhle, ncoma umntwana wakho!", "REFLECT TOGETHER": "CINGA KUNYE", "If something goes wrong, ask \"How could you have done that differently?\"": "Ukuba kukho into engahambi kakuhle, buza \"Ungayenza njani ngokwahlukileyo?\"", "START SMALL": "QALA KANCINCI", "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Nika umntwana wakho uxanduva oluncinci kuqala. Xa oko kuhamba kakuhle, unokongeza ngakumbi ukubonisa ukuba uyamthemba umntwana wakho.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Injongo yakho ibikukuchitha ixesha kunye nomntwana wakho ofikisayo. Siye saphawula ukuba ucofe ku-@data.habit.spend_time.in_text_title - wenze kakuhle ngokukhumbula oku!", - "Your goal was to spend one-on-one time with your teen.": "Injongo yakho ibikukuchitha ixesha ukunye nomntwana wakho ofikisayo.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Usebenzile ngokukhangela izisombululo kwimiceli-mngeni yakho. Khawuyokuyizama. Ulwalamano lwakho kunye nomntwana wakho ofikisayo luza kuya lusomelela ngokomelela!", - "DAY – Do it every day": "USUKU – Yenze yonke imihla", - "PLAY – Let your teen choose the activity": "DLALA – Vumela umntwana wakho ofikisayo akhethe into emayenziwe", - "STAY – Give your teen all of your attention": "HLALA – Mnike ingqalelo yakho yonke umntwana wakho ofikisayo", - "Why was this tip helpful for you?": "Kutheni lengcebiso liye laba luncedo kuwe?", - "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" ibiluncedo ngenxa yokuba...", - "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" ibiluncedo ngenxa yokuba...", - "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" ibiluncedo ngenxa yokuba...", - "Having a specific time to do this helps me to remember.": "Ukuba nexesha elithile lokwenza lento lindinceda ndikhumbule.", - "With a routine, my teen and I can both keep our schedule free.": "Xa sinezinto ezenziwa rhoqo, mna nomntwana wam ofikisayo siyakwazi ukugcina ishedyuli sethu singenanto.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Ukuchitha ixesha yonke imihla kunye nomntwana wam ofikisayo kunceda ekubeni sakhe ukuthembana.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ewe, nokuba yimizuzu eyi-10 nikunye, kwenza umehluko omkhulu – kwenza kube lula ukuyifaka kwi shedyuli, nasondeleyo kuno msebenzi wakho nemisebenzi yasekhaya!", - "Letting my teen choose what to do builds their confidence.": "Ukuvumela umntwana wam ofikisayo akhethe into eza kwenziwa, oko kwakha ukuzithemba kwakhe.", - "If my teen chooses, s/he is more likely to want to spend time together.": "Ukuba umntwana wam ofikisayo uyakhetha, lonto iza menza afune nangakumbi ukuchitha ixesha kunye nam.", - "Letting my teen choose shows that I care about his/her interests.": "Ukuvumela umntwana wam ofikisayo akhethe kubonisa ukuba ndizikhathalele izinto anomdla kuzo.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Xa ndisebenzisa icebiso lomntwana wam ofikisayo, ndibonisa ukuba ndiyammamela.", - "Saying something nice about my teen’s choice helps them feel valued.": "Ukuthetha into entle yothetha eyenziwe ngumntwana wam ofikisayo kumnceda azive exatyiswa.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kuyinyaniso kakhulu oku! Kwaye ukuba abantwana bethu abafikisayo bayakhetha, bayakhuthazeka ukuba babe noxanduva nakwezinye izinto ezisebomini babo.", - "By preventing interruptions, I show my teen that s/he is most important.": "Xa ndiphepha iziphazamiso, ndibonisa umntwana wam ofikisayo ukuba ubaluleke kakhulu.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Nokuba andikwazi kwenza into eyenziwa ngumntwana wam ofikisayo enjengemidlalo, ndinganako ukumxhasa xa eyenza.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Xa ndinikela ingqalelo kumntwana wam ofikisayo, ininzi into endiyifundayo ngezinto anomdla kuzo, izinto azicingayo kunye nezinto akwaziyo ukuzenza.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ewe! Ukuba sinika abantwana bethu abafikisayo ingqalelo epheleleyo, kusenokwenzeka benze into efanayo xa sibacela basenzele into ethile kwixesha elizayo!", + "MAKE TIME": "YENZA IXESHA", + "Set aside time to have a conversation without distractions.": "Bekela bucala ixesha lokuncokola ngaphandle kweziphazamiso.", + "Ask your teen questions and let them share their views without interrupting.": "Buza umntwana wakho imibuzo kwaye ubavumele babelane ngeembono zabo ngaphandle kokuphazamisa.", + "WORK TOGETHER": "SEBENZANI KUNYE", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Thethani ngengxaki ethile, nize nesisombululo kunye, yaye nobabini nenze oko nivumelana ngako.", + "PRAISE": "NCOMA", + "Thank your teen for sharing and highlight how it is helping you both.": "Bulela umntwana wakho ofikisayo ngokwabelana kwaye uqaqambise indlela eninceda ngayo nobabini.", + "Why @local.workshop_data.title?": "Kutheni iyi-@local.workshop_data.title?", + "Hear @global.topic_intro_name's message": "Yiva umyalezo ka@global.topic_intro_name", + "Read @global.topic_intro_name's message": "Funda umyalezo ka@global.topic_intro_name", + "Today's steps": "Amanyathelo anamhlanje", + "Try it Together": "Yizameni Kunye", + "Let's practice together.": "Masiziqhelanise sonke.", + "What does that mean?": "Ithetha ntoni le nto?", + "How can you help?": "Unganceda njani?", + "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Ukuqonda indlela umntwana wakho avakalelwa ngayo kunye nendlela onokumxhasa ngayo kwenza umahluko omkhulu kuni nobabini! Jonga umntwana wakho kwaye ubuze indlela avakalelwa ngayo. Cofa kubuso obungezantsi ukuze ufumane ngakumbi:", + "Hopeful": "Ithemba", + "Resilient": "Ukunyamezela", + "Self-esteem": "Ukuzithemba", + "Teens have goals and dreams for the future – near and far!": "Umntwana uneenjongo kunye namaphupha ekamva - kufutshane nakude!", + "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Buza umntwana wakho malunga ngeenjongo kunye namaphupha akhe, bakhuthaze ukuba bacinge oko bakufuna kwikamva labo, kwaye benze isicwangciso kunye ukuze basebenze ekuwafezekiseni.", + "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Abantwana abakwaziyo ukunyamezela nokumelana neemeko ezinzima, baziqhelanise neenguqu, baze basombulule iingxaki xa zivela.", + "Praise your teen for overcoming difficulty and support them where you can.": "Mncome umntwana wakho ofikisayo ngokoyisa ubunzima kwaye umxhase apho unako.", + "A teen’s self-esteem is how they think of themselves.": "Ukuzithemba komntwana yindlela azicingela ngayo.", + "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Khuthaza ukuba ube nomfanekiso olungileyo wesiqu sakhe, misela umzekelo wokungazihlekisi okanye uzigxeke ngalo lonke ixesha. Wazi amandla omntwana wakho kwaye uxhase ubuthathaka bakhe", + "Lonely": "Isithukuthezi", + "Anxious": "Ukuxhalaba", + "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Abantwana banokuziva bebodwa, nokuba bakunye nabanye. Basenokuziva ngathi abanaye nabani na abanokuthetha naye, bamthembe, okanye babelane naye.", + "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Buza ukuba umntwana wakho ofikisayo uqhuba njani kwaye uzame ukufumana iindlela ezintsha zokuzonwabisa kunye nabahlobo kunye nosapho - ingakumbi ngexesha lokuvalwa", + "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Ukuxhalaba yimvakalelo eqhelekileyo kwaye inokusinceda sijamelane neemeko ezingumceli mngeni. Kodwa ukuxhalaba kakhulu okanye ukuxhalaba okubangela ukuba abantwana benze izinto abazithandayo kuyingxaki.", + "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Nceda umntwana wakho abone oko kubenza baxhalabe kwaye benze isicwangciso sokuba banokuphendula anjani kwiingcinga ezixhalabisayo.", + "Doing a relaxation activity together can help!": "Ukwenza umsebenzi wokuphumla kunye kunokunceda!", + "Depressed": "Ukudandatheka", + "Self-harm": "Ukuzenzakalisa", + "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Ukuziva udakumbile okanye uphantsi, ukuba kwimeko embi, zonke ziimvakalelo eziqhelekileyo zomntu. Ukudandatheka kuxa iqhubeka ixesha elide kwaye imisebenzi yesiqhelo yemihla ngemihla yomntwana wakho iyachaphazeleka. Umntwana wakho unokuziva engenathemba kwaye engakwazi okanye engakhuthazwa ukutshintsha nantoni na.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Zama ukufumana uncedo lwengcali.", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Ngamanye amaxesha abantwana banokuzilimaza ngenjongo yokujongana neemvakalelo ezimbi ezifana nomsindo, ityala, ukungabi nanto, okanye ukuzonyanya. Oku kunokubangelwa kukuxhalaba okanye ukudandatheka.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Ukuba umntwana wakho ofikisayo ukulungele ukuchaza indlela ukuzenzakalisa okumenza azive bhetele, unokuqalisa ukuqonda izizathu. Zama ukufumana uncedo lwengcali.", + "A teen sometimes does something because they:": "Umntwana ngamanye amaxesha wenza into ngenxa yokuba: ", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "- Mamela abahlobo babo\n- Ufuna ukwenza okwenziwa ngabanye\n-Cinga ngakumbi 'ngoku' kunokuba 'kamva'\n-Iimpembelelo zothando kwaye unokufumana ukudikwa ngononophelwa\n- Ungazikhathazi ngomngcipheko - unokuyithanda imingcipheko\n- Yiba namava anqongopheleyo onokuthi uthembele kuwo\n- Bazimisele ukuzama into - nokuba kwenzeka ntoni na", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kunokukunceda ukugcina oku engqondweni xa umntwana wakho ofikisayo esenza isigqibo esiphosakeleyo. Thetha nabo kwaye nichithe ixesha kunye ukuze nikwazi ukubanceda bakhethe ngcono kwixesha elizayo!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "Unokucelwa ukuba wabelane ngale khowudi nabantu abaza kuxhasa uhambo lwakho lwe@global.parent_app.", + "Last sync at: @local.sync_latest": "Ungqamaniso Lokugqibela e: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Esi sixhobo asizange singqanyaniswe. Ngqamanisa uzokuveza ikhowudi yakho.", + "Sync now": "Ngqamanisa ngoku", + "Syncing...": "Ungqamaniso...", + "Watch Together": "Bukelani Kunye", + "Let's watch a video together!": "Masibukele ividiyo kunye!", + "Watch": "Bukela", + "Let's watch a video!": "Masibukele ividiyo!", + "Options": "Ukhetho", + "Welcome @fields.user_name": "Wamkelekile @fields.user_name", + "It's great to see you again!": "Kuluvuyo ukukubona kwakhona!", + "Welcome @fields.group_name": "Wamkelekile @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Kuluvuyo ukukubona kwakhona! Masiqalise ngengoma yeentsapho nokuba ziphi.", + "Let's Slow Down": "Masithobe Isantya", + "How would you like to do this workshop?": "Ungathanda ukuyenza njani iindabano zocweyo?", + "Coming soon": "Kuza ngokukhawuleza", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Kuya kufuneka sigubungele eminye imiba yobuzali khaphambi koba singaqala sisebenze kwi-@local.workshop_data.title.\n\nUnokufumana izixhobo ezibalulekileyo kwi-@local.workshop_data.title usebenzisa i-@global.parent_centre.", + "My name": "Igama lam", + "@global.weekly_workshop day": "Usuku lwe @global.weekly_workshop", + "I do the workshops...": "Ndenza iindabano zocweyo...", + "My group's name": "Igama le qela lam", + "My group is now doing the workshop...": "Iqela lam ngoku lenza iindabano zocweyo...", + "I am now doing the workshop...": "Ndim ngoku owenza iindabano zocweyo...", + "These quick questions will fit this app to your needs.": "Le mibuzo emifutshane iza kwenza le app ifanele iimfuno zakho.", + "Let’s start with a few questions about you and your family.": "Masiqale ngemibuzo embalwa malunga nawe kunye nentsapho yakho.", + "We would love to know your first name or nickname:": "Singathanda ukwazi igama okanye isiteketiso sakho:", + "Are you a woman or a man?": "Ungumfazi okanye uyindoda?", + "Woman": "Mfazi", + "Man": "Indoda", + "How old are you?": "Mingaphi iminyaka yakho?", + "Adults": "Abantu abadala", + "Teens": "Abantwana Abafikisayo", + "Children": "Abantwana", + "Babies": "Iintsana", + "How many people are in your household?": "Bangaphi abantu abahlala ekhayeni lakho?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Unokuzenzela i-@global.weekly_workshops OKANYE unokumema amanye amalungu entsapho okanye izihlobo zikujoyine – uza kufunda into eninzi komnye nomnye. Kuxhomekeke kuwe!", + "How would you like to do your @global.weekly_workshops?": "Ungathanda ukuyenza njani i-@global.weekly_workshops yakho?", + "Can you think of a name for your group?": "Ngaba ungacinga ngegama leqela lakho?", + "Which day of the week would you like to do your @global.weekly_workshops?": "Loluphi usuku lweveki ongathanda ukwenza ngalo i-@global.weekly_workshops yakho?", + "Monday": "NgoMvulo", + "Tuesday": "NgoLwesibini", + "Wednesday": "NgoLwesithathu", + "Thursday": "NgoLwesine", + "Friday": "NgoLwesihlanu", + "Saturday": "NgoMgqibelo", + "Sunday": "NgeCawa", + "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Kulunge kakhulu! Siza kuvula uqeqesho olutsha lweqela lakho qho ngeveki. Oku kuza kuvumela ukuba nonke nizame izinto enizifunde kunye neentsapho zenu ngaphambi kokuba nifunde isakhono esilandelayo.", + "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Kulunge kakhulu! Siza kuvula uqeqsho olutsha qo ngeveki. Oku kuza kuvumela ukuba uzame izinto ozifunde kunye nentsapho yakho ngaphambi kokuba ufunde isakhono esilandelayo.", + "You can always change these settings in your @global.weekly_workshop_options.": "Unako ukutshintsha olu lungiso nanini na kwi-@global.weekly_workshop_options yakho.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Ingaba uqinisekile ukuba ufuna ukuvula zonke iindabano zocweyo? Wakuba uyenzile le nto awuzukwazi ukuphinda ulutshixe", + "Unlock Workshops": "Vula iindabano zocweyo", + "Using the app together": "Ukusebenzisa i-app kunye", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Kuhle ukukubona!\n\nOkokuqala, masincede iqela lakho liqalise.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Okokuqala vumelanani ngemithetho ebalulekileyo:\n* Zeziphi iintsuku/amaxesha esiza kudibana ngawo evekini?\n* Ngubani oza kubamba ifowuni xa sisenza izinto?\n* Yintoni esinokuyenza ukuze siqiniseke ukuba wonke umntu uthetha ngokukhululekileyo?\n* Yintoni esinokuyenza ukuze sonke sizive sihlonitshwa?", + "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Unako ukulitshintsha nanini na usuku loqeqesho lwenu kunye negama leqela lakho kwi-@global.weekly_workshop_options.", + "Some rules that other groups made:": "Eminye imithetho eyenziwe ngamanye amaqela:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "* Ngolwesibini ngo 7pm lixesha lethu le@global.parent_app sisonke\n* Ukutshintshana ngokubamba ifowuni (umsebenzi om-1 kumntu ngamnye)\n* Yamkela amava omnye nomnye. Sisonke sahlukile!\n* Tshintshanani ngokuthetha nokumamela\r\n\n* Yonke imibuzo yamkelekile\n* Oko sabelana ngako kuphelela phakathi kwethu", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Chitha imizuzu eyi-5 ukuya kweyi-20 ekuchitheni ixesha kunye nomntwana wakho ofikisayo ngazo zonke iintsuku okwazi ngazo kule veki.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Ukhumbule - nanini na unako, phola, qonda uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Kubakho imiceli-mngeni kubazali abaninzi xa bechitha ixesha kunye nabantwana babo abafikisayo. \n\nNantsi imiceli-mngeni esi-8 abazali abaye basixelela ngayo nabathi bahlangabezane nayo xa beceba okanye bechitha ixesha kunye nabantwana babo abafikisayo. Ukuba nawe ukhe wanayo okanye unoloyiko lokuba uza kuba nayo, cofa kuyo uze ufumane isicombululo. Ungacofa uze uqwalasele eminye imiceli-mngeni emva koko.", "Did you have any challenges when trying to spend time with your teen?": "Ngaba uye wanengxaki xa ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", "What challenge did you have when trying to spend time with your teen?": "Yeyiphi ingxaki oye wanayo ngoku ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", @@ -1280,16 +470,252 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Nantso ke! Ngale ndlela ungakwazi ukunika umntwana wakho ofikisayo ingqalelo yakho yonke kuze bazive bexatyisiwe kwaye bethandwa.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Kulunge kakhulu! Unokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo xa abanye abantwana sele belele, okanye bedlala phandle.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Kuhle gqithi! Mhlawumbi ningahamba kunye ukuya ezivenkileni okanye niyokubukela umdlalo ukuze nikwazi ukuncokola bengekho abanye abantwana abaza kufuna ingqalelo yakho.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.  Siye saphawula ukuba ucofe ku-@data.habit.instruct_positively.in_text_title - wenze kakuhle ngokukhumbula oku!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Enkosi ngokwabelana! Usebenzile ngokuzama ukunika umntwana wakho ofikisayo imiyalelo ekhuthazayo kunye nokwakha ulwalamano oluhle kunye nomntwana wakho ofikisayo. \n\nUmntwana wakho ufanele anconywe ngokunjalo NAWE!", - "Which of the tips helped you?": "Ngawaphi amacebiso akuncedileyo?", - "GET REAL – Can your teen do what you are about to ask?": "MAYENZEKE – Ngaba umntwana wakho ofikisayo angakwazi ukuyenza lento oza kuyicela?", - "GET POSITIVE – Use positive words and praise them!": "MAYIKHUTHAZE – Sebenzisa amazwi akhuthazayo uze ubancome!", - "GET CLEAR – Be clear and specific!": "MAYICACE – Caca ukuba uthini uze ungqale!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Kuhle gqitha! Xa sicela umntwana wethu ofikisayo ukuba enze into anokukwazi ukuyenza, kulula kuye ukuba aphumelele.", - "When we praise them, our teens feel encouraged to listen to us again!": "Xa sibancoma, abantwana bethu abafikisayo baziva bekhuthazwa baze baphinde basimamele!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Kwakuhle kakhulu! Xa sicinga kusengaphambili ngemiyalelo esiza kuyinika umntwana wethu ofikisayo, kuba lula ukuyilandela loo miyalelo!", + "DAY – Do it every day": "USUKU – Yenze yonke imihla", + "PLAY – Let your teen choose the activity": "DLALA – Vumela umntwana wakho ofikisayo akhethe into emayenziwe", + "STAY – Give your teen all of your attention": "HLALA – Mnike ingqalelo yakho yonke umntwana wakho ofikisayo", + "Why was this tip helpful for you?": "Kutheni lengcebiso liye laba luncedo kuwe?", + "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" ibiluncedo ngenxa yokuba...", + "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" ibiluncedo ngenxa yokuba...", + "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" ibiluncedo ngenxa yokuba...", + "Having a specific time to do this helps me to remember.": "Ukuba nexesha elithile lokwenza lento lindinceda ndikhumbule.", + "With a routine, my teen and I can both keep our schedule free.": "Xa sinezinto ezenziwa rhoqo, mna nomntwana wam ofikisayo siyakwazi ukugcina ishedyuli sethu singenanto.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Ukuchitha ixesha yonke imihla kunye nomntwana wam ofikisayo kunceda ekubeni sakhe ukuthembana.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ewe, nokuba yimizuzu eyi-10 nikunye, kwenza umehluko omkhulu – kwenza kube lula ukuyifaka kwi shedyuli, nasondeleyo kuno msebenzi wakho nemisebenzi yasekhaya!", + "Letting my teen choose what to do builds their confidence.": "Ukuvumela umntwana wam ofikisayo akhethe into eza kwenziwa, oko kwakha ukuzithemba kwakhe.", + "If my teen chooses, s/he is more likely to want to spend time together.": "Ukuba umntwana wam ofikisayo uyakhetha, lonto iza menza afune nangakumbi ukuchitha ixesha kunye nam.", + "Letting my teen choose shows that I care about his/her interests.": "Ukuvumela umntwana wam ofikisayo akhethe kubonisa ukuba ndizikhathalele izinto anomdla kuzo.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Xa ndisebenzisa icebiso lomntwana wam ofikisayo, ndibonisa ukuba ndiyammamela.", + "Saying something nice about my teen’s choice helps them feel valued.": "Ukuthetha into entle yothetha eyenziwe ngumntwana wam ofikisayo kumnceda azive exatyiswa.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kuyinyaniso kakhulu oku! Kwaye ukuba abantwana bethu abafikisayo bayakhetha, bayakhuthazeka ukuba babe noxanduva nakwezinye izinto ezisebomini babo.", + "By preventing interruptions, I show my teen that s/he is most important.": "Xa ndiphepha iziphazamiso, ndibonisa umntwana wam ofikisayo ukuba ubaluleke kakhulu.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Nokuba andikwazi kwenza into eyenziwa ngumntwana wam ofikisayo enjengemidlalo, ndinganako ukumxhasa xa eyenza.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Xa ndinikela ingqalelo kumntwana wam ofikisayo, ininzi into endiyifundayo ngezinto anomdla kuzo, izinto azicingayo kunye nezinto akwaziyo ukuzenza.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Ewe! Ukuba sinika abantwana bethu abafikisayo ingqalelo epheleleyo, kusenokwenzeka benze into efanayo xa sibacela basenzele into ethile kwixesha elizayo!", + "Your goal was to spend one-on-one time with your teen.": "Injongo yakho ibikukuchitha ixesha ukunye nomntwana wakho ofikisayo.", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Usebenzile ngokukhangela izisombululo kwimiceli-mngeni yakho. Khawuyokuyizama. Ulwalamano lwakho kunye nomntwana wakho ofikisayo luza kuya lusomelela ngokomelela!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ukuba ngumzali kunganzima kakhulu. Ngamanye amaxesha kubonakala ngathi abantwana bethu abasimameli.\n\nKodwa inzululwazi ibonisa ukuba ukuchitha imizuzu embalwa ngosuku ngalunye nichitha ixesha kunye nomntwana wakho ofikisayo oko kunganceda ekwakheni ukuthembana nothando.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Ithuba lokuchitha ixesha ndawonye lelokunikela ingqalelo kubo, kungabukelwanga i-TV okanye kusetyenziswa iifowuni. Bavumele bakhokele into eyenziwayo okanye into enincokola ngayo.\n\nKuhle ukuba unokuchitha imizuzu engamashumi amabini ngosuku, kodwa nokuba yimizuzu emihlanu ngosuku oko kulungile.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Molo.\n\nUmxholo wanamhlanje ngowokuchitha ixesha kunye nabantwana bethu.\n\nKubalulekile ukuchitha ixesha kunye nabantwana bethu ukuze basazi kakuhle nokuba nathi sibe nethuba lokubazi kakuhle. \n\nUkhumbule ukuba intsapho eyazana kakuhle iyavisisana.", + "Have you spent time with your teen already?": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Enkosi ngokwenza imigudu yokuba ngumzali ongcono. Uyathandwa kwaye uyaxatyiswa!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ukuchitha ixesha kunye nomntwana wakho kunceda ekwakheni ukuthembana phakathi kwenu. \n\nQhubeka ngohambo lwakho lwe-@global.parent_app ngoku - wena nosapho lwakho niza kubona imiphumo emihle.", + "First @global.weekly_workshop!": "Okokuqala @global.weekly_workshop!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Molo @fields.user_name. I-@local.workshop_data.in_text_title sele ikulungele.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Molo @fields.group_name. I-@local.workshop_data.in_text_title sele ikulungele.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nI-@local.workshop_data.in_text_title sele ikulungele!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Akuyi kuthatha xesha lide, kwaye uza kufumana ulwazi oluxabisekileyo. \n\nWenze kakuhle ngokuzama ukuba ngumzali ongcono. Ngomso, ungangena kuqeqesho olutsha.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha olukunceda uphole, lonwabele uze ufunde izakhono ezitsha!", + "Let's think of ways to spend one-on-one time with your teen.": "Makhe sicinge ngeendlela zokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo.", + "What could you do to spend one-on-one time with your teen?": "Yitoni onokuyenza ngethuba lokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Ngaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Ungalibali ukucinga ngezinto ezingazukufuna ixesha elongezelelekileyo.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nUngumzali ophum’izandla ngokuzama le nto.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Ungu ngqa phambili! \n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole. \n\nUkhumbule ukuba ufumana i-@global.parent_point qho uzikhathalela - ubalulekile!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Izinto zokwenza xa uzinyamekela\n* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Yabelalani ngamacebiso! \n\nZeziphi izinto onokuzenza xa uchitha ixesha ndawonye kunye nabantwana bakho abafikisayo?\n\nNgaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Cinga ngezinto zokwenza xa nichitha ixesha ndawonye ezingatyi xesha elingakumbi njengokuhamba niye evenkileni kunye.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nNingabazali abathandekayo ngokuzama le nto.", + "DAY - Try to do it every day": "USUKU - Zama ukuyenza yonke imihla", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Kusuku ngalunye, khangela imizuzu emi-5 (okanye ngakumbi!) xa umntwana wakho ofikisayo engenanto yimbi afuna ukuyenza.", + "PLAY - Let your teen choose": "DLALA - vumela umntwana wakho ofikisayo akhethe", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Xelela umntwana wakho ofikisayo ukuba ungathanda ukuchitha ixesha kunye naye kwaye angakhetha into afuna yenziwe okanye afuna ukuncokola ngayo. Ekuqaleni usenokuyifumanisa ingaqhelekanga le nto, kodwa uza kuhamba alonwabele eli xesha aba kunye nawe ngalo!", + "STAY - Focus on your teen": "HLALA - Nikela ingqalelo kumntwana wakho ofikisayo", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Cima i-TV nize ningazisebenzisi iifowuni zenu. Mjonge umntwana wakho ofikisayo. Nqwala intloko okanye uthi “Ndiyakuva” ukuze ubonise ukuba unikele ingqalelo nyhani. Yamkela into ayithethayo ungakhange umgwebe.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Nawe ungalinandipha ithuba lokuchitha ixesha ndawonye kunye nomntwana wakho! Kusenokukwenza ude uzive lwehlile uxinezeleko.", + "Great!": "Kulunge kakhulu!", + "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ndiyayazi ubomi bunokubanzima. Ndiyazingca ngawe. \n\nNokuba uvakalelwa njani, kuhle ukuba ulapha!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe indlela yokukuxhasa njengomzali kwixesha elizayo.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe inkxaso yexesha elizayo kwi-@global.parent_app.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Molweni, kuni nonke.\n\nUmxholo wanamhlanje ungokubhiyoza kunye namanyathelo alandelayo.\n\nBekumangalisa, bekumnandi ukuba kunye nawe kolu hambo. Namhlanje sibhiyozela uhambo lwethu kunye. \n\nNamhlanje sibhiyozela zonke izinto esizifundileyo kulo lonke uqeqesho.", + "Today you will celebrate, look back and look ahead:": "Namhlanje siza kubhiyoza, sijonge izinto ezidlulileyo size sikhangele phambili:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "*Ingxubusho nokucinga\n* Izixhobo: Indlela yokuxhasana\nUKUDIBANA - UKUFOWUNA -UKUTHUMELA UMYALEZO - UKWABELANA\n* Ukuceba inkxaso", + "Today you celebrate and reflect on your experiences.": "Namhlanje uyabhiyoza uze ucinge ngamava akho.", + "End of programme check-in": "Uphela kwenkqubo yokungena", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Uye wasebenzisa i@global.parent_app kwezi nyanga zidlulileyo, kodwa ukuba ngumzali kumntwana ofikisayo kokwexesha elide! Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sihlole ukuba ngumzali kwakho.\n\nNyaniseka. Ukhumbule ukuba izigidi zabazali zivakalelwa ngale ndlela ovakalelwa ngayo kwaye sonke siyayifuna inkxaso. Awukho wedwa!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", + "Let's talk about what has changed.": "Makhe sithethe ngezinto ezitshintshileyo.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Ncokolani kunye:\n* Yintoni etshintshileyo kwintsapho yakho?\n* Zintoni onebhongo ngokuzenza?\n\nNingalibali ukuncoma kunye nokukhuthazana!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Cebani ngendlela eniza kuxhasana ngayo ukususela ngoku. \n\nNingasebenzisa amacebiso avela kwezinye iintsapho okanye nizicingele awenu!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Wena nentsapho yakho nifunde into eninzi gqitha. Makhe sibuyele emva size sibone izinto ezitshintshileyo.", + "Reflect": "Ukucinga emva", + "Listen and reflect": "Mamela uze ucingisise", + "Read and reflect": "Funda uze ucingisise", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Vala amehlo uze uphole.\n\nCinga ngobomi bosapho lwakho ngaphambi kokuba waqalisa uhambo lwakho ngale app.\n \nCinga ngezakhono oye wazifunda:\n* Ukuzikhathalela\n* Ixesha enilichitha kunye\n* Ncoma\n* Imiyalelo eyakhayo\n* Ukulawula uxinezeleko\n* Ibhajethi yosapho\n* Imithetho\n* Imiphumo ezolileyo\n* Ukusombulula iingxaki\n* Ukhuseleko lwabantwana abafikisayo\n* Ukuhlangabezana neengxaki\n\nCingisisa ngohambo – belunjani kuwe:\n* Ncokolani ngamacebiso nangamava\n* Cingisisa uze ufunde kumabali\n* Qhelisela izakhono kunye nomntwana wakho ofikisayo\n\nNgaba kukho nto itshintshileyo kuwe nakusapho lwakho?\n\nYintoni oyidingayo ukuze uqhubeke usebenzisa izakhono?", + "MEET": "DIBANANI", + "Keep meeting regularly to give each other parenting support.": "Qhubekani nidibana rhoqo ukuze nixhasane njengabazali.", + "CALL": "FOWUNANI", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Yibani 'ngabazali abazitshomi’ ukuze nifowunelane xa nikhathazekile okanye ningazi ukuba nenze ntoni.", + "TEXT": "THUMELA UMYALEZO", + "Text each other every week to share what you’ve done well.": "Thumelani umyalezo qho ngeveki ukuze nabelane ngezinto enizenze kakuhle.", + "SHARE": "YABELANANI", + "Share @global.parent_app and help other families start their journey.": "Yabelanani nge-@global.parent_app nize nincede ezinye iintsapho ziqale uhambo lwazo.", + "Fantastic! We are proud of you for all you have done over the past weeks.": "Kuhle ngeyona ndlela! Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", + "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Sibuhlungu yimini enzima le. Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.\n\nNguwuphi umphumo onokunceda apha?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Imiphumo ayifani ncam nesohlwayo inika abantwana bethu abafikisayo ithuba lokufunda ukuzithwalela uxanduva ngezenzo zabo.\n\nYaye balawuleka ngakumbi YAYE isebenza ngakumbi kunokubetha okanye ukubakhwaza!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.\n\nNguwuphi umphumo onokunceda apha?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Imiphumo iphumelela ngakumbi ukuba uxubusha uze uvumelane kusengaphambili nabantwana abafikisayo ngaphambi kokuba uyisebenzise.\n\nYaye: imiphumo ayikho mibi yonke… kanti ningavumelana ngemiphumo yezenzo EZINTLE ukuze ubone isimilo esichubekileyo!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.", + "What consequence would help here?": "Nguwuphi umphumo onokunceda apha?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.\n\nNguwuphi umphumo onokunceda apha?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Uqheliselo lwakho lwasekhaya kule veki luya kuba kukuthetha kunye nomntwana wakho ofikisayo ngomphumo OMNYE ongemhle nomphumo OMNYE omhle.\n\nImiphumo ifanele ibe:\nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo)\nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Isimilo Esingesihlanga Ukugoduka emva kweyure ekuvunyelwene ngayo. \n\nUmphumo Ongemhlanga: Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo: \n\nIsimilo Esingesihlanga Ukuthetha Krwada. \n\nUmphumo Ongemhlanga: Bhala ileta yokuxolisa \n \nIsimilo Esihle Ukuncedisa ukuthenga. \n\nUmphumo Omhle: Imizuzu engama-30 ethe kratya yomsebenzi awuthandayo awukhethayo. \n\nIsimilo Esihle Ukuncedisa ekujongeni abantwana bakowabo abancinci. \n\nUmphumo Omhle: Iyure yexesha elithe kratya kunye nabahlobo ngempelaveki.", + "introduce a consequence together": "gqibani ngomphumo kunye", + "Did you have any challenges when trying to introduce a consequence together?": "Ngaba uye wanengxaki xa benizama ukugqiba ngomphumo kunye?", + "What was difficult for you about introducing a consequence with your teen?": "Yintoni ebinzima ekugqibeni ngomphumo kunye nomntwana wakho ofikisayo?", + "I got very angry when my teen broke the rule.": "Ndiye ndanomsindo kakhulu xa umntwana wam ofikisayo eye wophula umthetho.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Xa sinqumama ngaphambi kokuphendula, oko kusinceda sizole size siphendule bhetele. \n\nXa ephinda ekucaphukisa umntwana wakho ofikisayo, zama ukunqumama kuqala. Uthathe imimoya embalwa lonto ingenza umehluko omkhulu!", + "My teen got very angry with me after I gave the consequence.": "Umntwana wam ofikisayo uye wanomsindo kakhulu emva kokuba ndimnike umphumo.", + "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Xa umntwana wakho ofikisayo esiba nomsindo, kusenokufuneka umshiye yedwa ude wehle umsindo kuni nobabini. \n\nHlola ukuba umphumo awufumanayo usengqiqweni kanye unobulungisa. Mamela umntwana wakho ofikisayo xa ecacisa uze uqinisekise ukuba kukho “Uxolelo kwimeko Yokhuseleko” ukuba akawuthobelanga umthetho kuba efuna ukukhuseleka.", + "I introduced the consequence without first discussing it with my teen.": "Ndiye ndathi kuza kubakho umphumo ndingakhange ndiqale ndithethe nomntwana wam ofikisayo malunga nalonto.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Ungakwazi ukuwusebenzisa lomphumo xa kusenzeka oku kwakhona? Xa sisithi kuza kubakho umphumo kwaye sibe sibabandakanyile abantwana bethu abafikisayo, umphumo uza kuba yinto enokwenzeka kwaye abantwana bethu abafikisayo baza kukufuna ngakumbi ukuthobela umthetho.", + "I forgot to follow through with the consequence.": "Ndiye ndalibala ukulandelela umphumo.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sonke siyazenza impazamo! Okukhona sibanika rhoqo imiphumo, kokukhona abantwana bethu beza kukhetha ukuziphatha kakuhle kwixesha elizayo.", + "Even with the consequence, my teen still does not follow the rule.": "Umntwana wam ofikisayo akawuthobeli umthetho, nokuba ndimnike umphumo.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Ukuba umntwana wakho ofikisayo usoloko esophula imithetho, kusenokufuneka uchithe ixesha kunye naye nisenza izinto ezikhuthazayo. \n\nZama ukungaziyeki ezinye injongo onazo – njengoku uzinyamekela, ubene xesha enilichitha kunye no kuncoma. Zonke ezi zakhono ziza kumnceda umntwana wakho ofikisayo azive ethandwa kwaye ekhuselekile... kwaye nawe ungaxinezelekanga kakhulu!", + "We only created a negative consequence, not a positive consequence.": "Siye sabano mphumo ombi, bekungekho mphumo okhuthazayo.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ngamanye amaxesha kuba nzima ukucinga ngemiphumo ekhuthazayo. Imiphumo ekhuthazayo iza kumkhuthaza umntwana wakho kuba azoziva enoxanduva kwaye uza kuwubona umehluko!", + "My teen suggested being hit as a negative consequence.": "Umntwana wam ofikisayo ucebise ukuba umphumo ongathandekiyo ibe kukubethwa.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Abantwana abafikisayo basenokucinga ukuba ukubethwa nguwo kuphela umphumo ongathandekiyo abanokuwufumana xa bophule imithetho. \n\nCingani ngemiphumo engena budlobongela kunye nabo enoku banceda baqonde ukuba benze into ephosakeleyo. Iza kusebenza ngcono kwaye iza kumisela imizekelo ekhuthazayo!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya).", + "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Unganceda umntwana wakho ofikisayo ayiqonde ukuba kukho imiphumo xa engayithobeli imithetho yekhaya. \n\nKodwa INDLELA okwenza ngayo oku ibalulekile. \n\nUkunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukunika umphumo uzolile.\n\nKubalulekile ukuba sibabandakanye abantwana bethu abafikisayo xa siza kusebenzisa imiphumo, kodwa kukwabaluleke nangakumbi ukuzola xa sibanika umphumo.\n\nOku kuza kusinceda sinike abantwana bethu umphumo sizolile kwaye bona baza kuyikhumbula lula xa bebandakanyekile ibe loo nto iza kwenza bathathe uxanduva.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Abantwana abafikisayo bayathanda ukwaphula imigaqo. Ukukhula lixesha elinzima xa bezifunda ukuba bangoobani. \n\nNgethamsanqa, zikhona iindlela zokohlwaya umntwana wakho ofikisayo ngaphandle kokuba nomsindo okanye ukusebenzisa ubundlobongela… yaye zisebenza kakuhle!\n\nUkuza nemiphumo ezolileyo kunceda ekufundiseni abantwana bethu ukuba bazithwalele uxanduva ngezinto abazenzayo – enoba zintle okanye zimbi. \n\nNantsi eminye imizekelo - khawuzibone ungumzali:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Imiphumo ezolileyo ifanele ibe... \n\nMIHLE NOKO: Ayikho ngqwabalala kakhulu yaye ungayenza \n\nNGOKUKHAWULEZA: Yinikele ngokukhawuleza kangangoko kunokwenzeka \n\nNGOKUQHUBEKAYO: Umphumo ofanayo rhoqo", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Ceba isiphumo esizolileyo sabantwana bakho abafikisayo abaphikisanayo ngexesha lokutya.. Khumbula kufuneka ibe \n\nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Ngaba wena nomntwana wakho sele nikwazile ukucinga ngomphumo omnye okhuthazayo kunye nomphumo omnye ongathandekiyo?", + "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Gqiba uqeqesho uze uzame ukuncokola kunye nomntwana wakho ofikisayo ukuze nithethe ngomphumo omnye okhuthazayo nomphumo omnye ongathandekiyo xa enze into.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Iyancomeka into yokuba usebenzisa i-@global.parent_app. Sele ufumene izixhobo ezi-6 kakade zokuba ngumzali! \n\nYenza uqeqesho olu landelayo ukuze ufumane esinye isxhobo sokuba ngumzali!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Imiphumo yokuzola imnceda nyhani umntwana wakho ofikisayo ukuba ayilandele kakuhle imithetho – khawukhe ukuzame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokubonisa ukuzinikela kwakho kusapho lwakho.", + "Why did giving a consequence this way not work well?": "Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "Ewe, intsabelo erhabaxa ngolo hlobo yenze wonke umntu wanomsindo kakhulu waza wacaphuka.", + "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Makhe sifunde ngokoko kwenzeke nge @global.w_consequence_teen_boy_1 ne @global.w_consequence_male_caregiver:", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku? Ufike emva kwexesha!", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala”. \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awuwuthobeli umthetho walapha! Ndiza kukubetha”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Undidlel’ indlala! Awundimameli!! Ndiyakucaphukela!”", + "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Masibuyele ku @global.w_consequence_teen_boy_1 neyakhe i @global.w_consequence_male_caregiver", + "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: \"Iyandixhalabisa into yokuba usoloko ubuya emva kwexesha endlini, @global.w_consequence_teen_boy_1. Singenza ntoni ukukunceda ukhumbule ukugoduka kwangexesha?\"\n\n@global.w_consequence_teen_boy_1: \"Ukuba ndigoduka kwangethuba, mhlawumbi ndingashiywa lixesha ngemizuzu engama-30?\"", + "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: YIngcamango entle leyo! Yaye simele senzeni xa ungawuthobeli lo mthetho? \n\n@global.w_consequence_teen_boy_1 uyambombozela): “Mgmluuhm”", + "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: \"Yitsho kaloku, ndiyayazi ikhona into oyicingayo.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile…. Kuthekani: Ndimele ndiyokwenza umsebenzi wam wesikolo?”", + "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: \"Umsebenzi wakho wesikolo umele ukuba uwenzile kakade. Ukuba uyawulibala lo mthetho, kusengqiqweni ukuba ungadibani neetshomi zakho ngomso.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile, @global.w_consequence_male_caregiver.\"", + "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Ngengomso...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku! Selibethile ixesha!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala” \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kusezinzulwini zobusuku yaye ubuye ekhaya emva kwexesha ebesivumelene ngalo. Noba siyintoni isizathu, umele uqonde ukuba ayamkelekanga loo nto. @global.w_consequence_female_caregiver yaye ndikhathazeke nyhani.”", + "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Abahlobo bam bathe makhe ndihlale ixeshana. Bebesithi ndiyafeketha kuba ndifuna ukugoduka kwangoko.” \n\n@global.w_consequence_male_caregiver: “Ndiyazi kunganzima ukuthi hayi kubahlobo bakho. Masithethe ngakumbi ngale nto kusasa xa siye saphumla.”", + "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Uxolo ngokukukhathaza yaye @global.w_consequence_female_caregiver.“ \n\n@global.w_consequence_male_caregiver: “Enkosi. Hamb’ uyolala ke ngoku, kodwa uze wazi, ukuba ubuye ekhaya sekubethe ixesha ebesivumelene ngalo, awuvumelekanga ukuphuma ngokuhlwa kwangomso.”", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Ncokolani kunye: \n* Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver bendinomsindo", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver andizange ndivumele @global.w_consequence_teen_boy_1 acacise", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Imiphumo ayizange incokolwe kwangaphambili no- @global.w_consequence_teen_boy_1", + "The consequence was too strong": "Umphumo ubungqongqo kakhulu", + "Giving a consequence this way did not work well because...": "Ukuza nemiphumo ngolu hlobo akuzange kusebenze kakuhle ngenxa yokuba...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Ncokolani kunye:\n* Yiyiphi imithetho abantwana bakho abafikisayo abathanda ukuyaphula? \n* Nguwuphi umphumo onokuwusebenzisa kumgaqo ngamnye owaphulayo? \n\nImiphumo ifanele ibe: \nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo) \nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo).\n\nNcomanani nize nikhuthazane – sinokomelezana!", + "Let's talk about this story": "Masithethe ngeli bali", + "Why did using a consequence work well this time?": "Kutheni ukusebenzisa umphumo kusebenze kakuhle kweli tyeli?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 nowakhe u @global.w_consequence_male_caregiver bancokole ngemiphumo bobabini bezolile", + "They agreed on consequences together": "Bavumelene bobabini ngemiphumo", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver usabele ngokuzolileyo kodwa ngokuqinileyo xa u @global.w_consequence_teen_boy_1 ebesophula umgaqo", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver umphulaphule u @global.w_consequence_teen_boy_1", + "The consequence was realistic and appropriate": "Umphumo ubusengqiqweni yaye ufanelekile", + "Using a consequence worked well this time because...": "Ukusebenzisa umphumo kusebenze kakuhle kweli tyeli ngenxa yokuba...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Indlela oqala ngayo imiphumo ezolileyo ibalulekile. Khumbula, xa ubandakanya umntwana wakho ofikisayo, izinto ziba bhetele!", + "EXPLAIN": "CACISA", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Qiniseka ukuba nobabini nizolile. Tsala umoya izihlandlo ezimbalwa. Mcacisele umntwana wakho ofikisayo isizathu sokuba ukhathazwe sisimilo sakhe.\n\nCacisa isizathu sokuba lo mgaqo ubalulekile. Ungayichaza indlela oziva ngayo - kulungile ukutsho ukuba udanile.", + "AGREE": "VUMA", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Ceba imiphumo nomntwana wakho ofikisayo yokuwulandela nokungawulandeli umgaqo.\n\nCela ezakhe izimvo. Thethani de nivumelane ngento esengqiqweni.\n\nYenza umphumo WOKUNGAWULANDELI umgaqo nengenelo yaxa eye WAWULANDELA umgaqo.", + "ACT": "YENZA OKUTHILE", + "When your teen follows the rule, give praise and privileges!": "Xa umntwana wakho ofikisayo elandela umgaqo, mncome umnike namalungelo!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Uya kuziva ehlonitshwa yaye exatyiswa. Khumbula: Okukhona sibancoma, kokukhona beya kubonisa isimilo esichubekileyo!", + "When your teen does not follow the rule, follow through with the consequence.": "Xa umntwana wakho ofikisayo engawulandeli umgaqo, landelela umphumo.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Xa umntwana wakho esaphula umgaqo, ngokuzolileyo nika umphumo Oku kumele kwenziwe NGOKUSESIKWENI, (kungekhona ngokungqwabalala kakhulu), NGOKUKHAWULEZA (ukwenze ngokungxamisekileyo) NGOKUQHUBEKAYO (ngendlela efanayo rhoqo).", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Ubuya kuthi umphumo ozolileyo kubantwana bakho abafikisayo abaphikisanayo ebudeni besidlo unjani? \n\nKhumbula kufuneka ube: \nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", + "Not seeing any friends for a month": "Ukungababoni abahlobo bam kangangenyanga", + "This may be hard to do for you and also too harsh!": "Kusenokuba nzima kuwe ukwenza loo nto yaye kunokuba ngqwabalala kakhulu!", + "Cancelling their birthday plans in a month’s time": "Ukurhoxisa izicwangciso zomhla wabo wokuzalwa kwisithuba senyanga", + "This is too far in the future, and too harsh as well!": "Kukude kwikamva, yaye kungqwabalala futhi!", + "No TV this evening": "Anizombukela UMABONAKUDE ngokuhlwanje", + "Perfect, this sounds fair and can be done straight away": "Heke, oku kubonakala kulungile yaye kunokwenziwa ngokukhawuleza", + "Self-care is a key parenting tool.": "Ukuzikhathalela sisixhobo esiphambili sokuba ngumzali.", + "So good to hear you are feeling well today. You are incredible!": "Kuyavuyisa ukuva ukuba uziva kamnandi namhlanje. Uyamangalisa!", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Uxolo ngokuba iimeko zinzima kanye ngoku. Tsala umoya uze uzazi ukuba uyaxatyiswa.", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela nina nonke, luze lunincede nicebele ikamva. \n\nKutheni ningakhe nicebe ukutya kwetheko kunye,nize nilungise umculo ukuba uyathanda ukudanisa!", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela wena, yaye unokukhetha inkxaso oyifunayo ukubheka phambili. \n\nUngalungiselela isidlo esimnandi ukuze ubhiyoze - into othanda ukuyitya, okanye umculo othanda ukuwuphulaphula!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Ukunye nomntwana wakho ofikisayo khetha enye yezi meko (okanye ucinge ibe nye ngokwakho) Jongani oopopayi nize nincokole ngoko niya kukwenza kunye ukuba oku kuye kwenzeka kumhlobo okanye kwintsapho yakho. \n\nYaye khumbula: PHEFUMLA - PHULAPHULA - CINGA", + "prepare for a possible crisis with their teens": "lungiselela ingxaki enokubakho kunye nabantwana babo abafikisayo", + "prepare for a possible crisis with your teen": "lungiselela ingxaki enokubakho kunye nomntwana wakho ofikisayo", + "My teen told me that something serious happened to them and I did not know how to handle it.": "Umntwana wam undichazele ukuba uye wanengxaki enkulu kodwa khange ndazi ukuba ndenze ntoni ngayo.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Mncome umntwana wakho ofikisayo ngoku kuchazela; akululanga ukuyenza lonto! Ukhumbule ukuba unokusebenzisa zonke izakhono ozifumene kwibhokisi yakho yezixhobo: Nqumama sebenzisa amanyathelo amane okusombulula ingxaki kwaye cela inkxaso efunwa nguwe nomntwana wakho ofikisayo!", + "Get support": "Fumana inkxaso", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Incoko indenze ndaziva ndingakhululekanga kuba indikhumbuze ngamava abuhlungu endandikhe ndahlangabezana nawo.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Xa sikhumbula lomava, kuqhelekile ukuziva ucaphukile okanye unomsindo. Kubalulekile ukuba ufumane ixesha laxa uzolile ukuze ukwazi ukucinga ngenkxaso oyifunayo. Kusenokufuneka ube nomntu othetha naye.", + "One of us did not feel comfortable.": "Omnye wethu uzive engakhululekanga.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Kunzima ukuthetha ngalento. Khangela ixesha xawupholile ukuze uthethe ngayo. Siyayiqonda ukuba kulula ukungathethi ngezi zinto siye sinqwenele ukuba zingaze zisehlele. Sekunjalo kodwa, ukufunda ukujamelana nengxaki kufana nokuthenga i-inshorensi; SOLOKO kufanelekile ukucinga ngazo kwaye uzilungele.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Injongo yakho ibikukuncokola ngemeko ekukho ingxaki kuyo kunye nomntwana wakho ofikisayo nize nenze icebo sokujamelana nayo.", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Zonke iintsapho ziba neengxaki. Xa silungiselela kunye yaye sisazi ukuba masilufumane phi uncedo NGAPHAMBI kokuba kwenzeke into embi, singoyisa nayiphi na ingxaki.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Molweni, kuni nonke.\n\nNamhlanje siza kuncokola ngeengxaki.\n\nIingxaki zingavela naphi na. Iingxaki zingavela nanini na. Ngenxa yoko, kubalulekile ukuba njengentsapho nibe nezicwangciso ukuba naliphi na ilungu lentsapho lizibona lisengxakini. \n\nKubalulekile ukuba nezicwangciso ukuze ilungu ngalinye lintsapho lizive likhuselekile. \n\nXa sijongene neengxaki, khumbula ukuthi khebevu kancinci, uphefumle, uze uhlale uzolile. Oko kuya kukunceda ujongane bhetele neengxaki.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Kuluncedo ukuqhelisela ukuhlangabezana nengxaki ngaphambi kokuba yenzeke. \n\nKhawujonge ezi zihlandlo zihlanu zeengxaki zentsapho. Khawuzibone ungumzali. Ubungenza ntoni?\n\nKhumbula: PHEFUMLA - PHULAPHULA - CINGA", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Ingxaki 1: @global.w_crisis_teen_boy_2 imilo yasesikolweni", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: \"Andizange ndiyenze le nto ngaphambili. Yaye ngoku baza kundigxotha\"", + "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Ingxaki 2: @global.w_crisis_teen_girl_1 uyakhulelwa", + "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ndineentloni ezingathethekiyo. Andazi ukuba mandenze ntoni\"", + "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Ingxaki 3: @global.w_crisis_teen_boy_2 umithisa intombazana", + "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Andifuni ukuba nomntwana\"", + "How could you respond to @global.w_crisis_teen_boy_2?": "Ungasabela njani ku @global.w_crisis_teen_boy_2?", + "Crisis 4: Someone in the family gets sick": "Ingxaki 4: Kugula umntu entsatsheni", + "\"The test said I have HIV. I’m scared I’m going to die\"": "\"Uvavanyo lufumanise ukuba ndine-HIV. Ndiyoyika ndiza kufa”", + "How could you respond in this situation?": "Ungasabela njani kule meko?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Ingxaki 5: @global.w_crisis_teen_girl_1 unyanzelwa lisoka lakhe ukuba alale nalo", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Enyanisweni bendingafuni. Ngoku ndiza kumitha okanye ndigule. @global.w_crisis_female_caregiver, Ndoyika kakhulu...\"", + "How could you respond to @global.w_crisis_teen_girl_1?": "Ungasabela njani ku @global.w_crisis_teen_girl_1?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Khumbulani ukuxhasna nokukhuthazana. Kunzima ukuhlala uzolile nokuphulaphulana xa kukho ingxaki - siyazidla ngawe.", + "Have you discussed with your teen what you would do in a crisis situation?": "Ngaba ukhe wathetha kunye nomntwana wakho ofikisayo ukuba niza kwenza ntoni xa kukho ingxaki?", + "Crisis Examples": "Imizekelo Yengxaki enkulu", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Ungumzali ozimiseleyo. Zingce - loo nto inkulu kwangokunokwayo!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Kuhle ukubona ukuba ukunye nathi kolu hambo lokuba ngumzali! \n\nGqiba i-@local.workshop_data.in_text_title uze ufunde ngeyona ndlela yokusabela xa umntwana wakho ofikisayo ekufuna kakhulu.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Asoze sazi iza kubakho nini na ingxaki, kodwa SINAKO ukuyilungela! \n\nQalisa uqeqesho olulandelayo ukuze ubone ukuba wena nomntwana wakho ofikisayo ningayenza njani le nto kunye.", + "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Ngomso uqeqesho lokugqibela lwe @global.parent_app luya kube likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqsho olutsha. Ngaloo ndlela, ungayigqiba iseti yakho yezakhono zokuba ngumzali uze ubone omawukwenze ngokulandelayo!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Wenze kakuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho lokugqibela ukuze ucinge ngohambo lwakho lwe@global.parent_app noko unokukwenza ngokulandelayo!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Ewe, @global.w_crisis_female_caregiver enyanisweni usebenzise bonke obo buchule – yaye nawe ungayenza loo nto!", + "All these skills can help in a crisis.": "Bonke obu bubuchule bunokunceda xa kukho ingxaki.", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Ingxaki ingehlela nabani na. \n\nMakhe sibone oko kwenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: \"Torho sthandwa, ubonakala ukhathazeke nyhani, uyafuna ukundibalisela ukuba kwenzeke ntoni?\"", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: \"Ngumalume, u… u… undibambile.\" \n\n@global.w_crisis_female_caregiver (ecinga): \"Khawuthath’ umoya... Ufuna ntoni umntanam? Ufuna ndizole ndize ndiphulaphule\" \n\n@global.w_crisis_female_caregiver: \"Yizokuhlala apha ecaleni kwam. Thath’ ixesha lakho, ndiphulaphule.”", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: \"Yinyani, u… u… the mandiyenze! Uthe mandilale naye! Bendingafuni, ndiyafunga, ndide ndathi HAYI, kodwa uthe ndiza kuba sengxakini.\"\n\n@global.w_crisis_female_caregiver: Enkosi ngokundichazela le nto. Awukho sengxakini. Asilotyala lakho eli.”", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: \"Izolo xa ubuyokubona @global.w_crisis_adult_friend. Ufikile nje yaye yenzeke ngelo xesha le nto.\"\n\n@global.w_crisis_female_caregiver: \"Kulungile, ndiyakukholelwa mntana. Inkulu le nto yaye siza kufumana indlela yokufumana uncedo esiludingayo. Singaya phi ukuze sifumane uncedo?\"\n\n@global.w_crisis_teen_girl_1: \"Esikolweni sam?\"", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: \"Yha, masiye siye ekliniki. Baza kuyazi ukuba masenze ntoni ukuze uncedakale. Ngaba ivakala ilungile loo nto kuwe?\n\n@global.w_crisis_teen_girl_1: \"Ewe… Ilungile… Kodwa ungahamba nam?\"", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: \"Nakanjani ndiza kuhamba nawe. Yaye @global.w_crisis_teen_girl_1? Khumbula ayilotyala lakho eli.” Ndiyakuthanda. Ungumntu olungileyo. Siza kudlula kule nto.”", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Enye ingxaki ekhathaza abazali abaninzi lugonyamelo nolwaphulo-mthetho. Makhe sijonge kunye umzekelo.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ukhangeleka ukhathazekile ukususela izolo. Yintoni ingxaki?”", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: \"Izolo mna neetshomi zam siye kumdlalo webhola ekhatywayo. Abanye abafana abebenxilile baye baqalisa ukulwa nomhlobo wam.\"\n\n@global.w_crisis_male_caregiver_1: \"Qhubeka, ndiphulaphule. Ndiyathemba awukhange ulwe?\"", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: \"Bendingafuni, kodwa bendingenakubukela nje ndibavumele babethe umhlobo wam, ngoko…\"\n\n@global.w_crisis_male_caregiver_1: \"Ngoko, ulwile ukuze ukhusele umhlobo wakho?\"", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Wonke umntu ebesilwa. Ndibone umntu ebaleni kububutyadidi ligazi. Ebekhangeleka … eswelekile.\"", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: \"Ndiyavuya ngokundixelela ngale nto, @global.w_crisis_teen_boy_1. Ngoku masihlale kunye phantsi size sincokole ngokuba simele sifake amapolisa okanye omnye umntu oza kusinceda.”", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: \"Enkosi, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Siza kudlula kule nto. Khumbula, siya kukuxhasa njengentsapho.”", + "Every small thing you do matters. We hope you are proud of yourself too.": "Neyona nto incinci oyenzayo ibalulekile. Siyathemba ukuba uyazidla ngesiqu sakho nawe.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Ibali nengxubusho\n* Ibali nengxubusho\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Ibali nokucamngca\n* Ibali nokucamngca\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Le ibiyimeko enzima ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver! Oku kunokwenzeka emakhwenkweni nasemantombazaneni.", + "What skills did @global.w_crisis_female_caregiver use?": "Usebenzise buphi ubuchule u @global.w_crisis_female_caregiver?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Le ibiyimeko enzima ku @global.w_crisis_teen_boy_1 no @global.w_crisis_male_caregiver_1!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "Usebenzise buphi ubuchule u @global.w_crisis_male_caregiver_1?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Ingxaki inokusenza sizive sinomsindo okanye singenamncedi. Kodwa eli lithuba abantwana bethu abafikisayo abadinga ukuba siphefumle, siphulaphule size sicinge.", + "BREATHE": "PHEFUMLA", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Hlala uzolile. Zibuze ukuba ‘umntwana wam ofikisayo udinga ntoni ngoku’", + "LISTEN": "PHULAPHULA", + "Tell them you are there for them and love them.": "Mxelele ukuba ukunye nabo yaye uyabathanda.", + "THINK": "CINGA", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Thetha nomntwana wakho ofikisayo. Yintoni enokunceda le meko? Kusenokufuneka wenze izicwangciso ezingxamisekileyo ngoku, uze wenze izicwangciso zexesha elide kamva.", + "You can be proud of yourself for exploring ways to get help!": "Ungazingca ngesiqu sakho ngokukhangela iindlela zokufumana uncedo!", + "How are you feeling today?": "Uziva njani namhlanje?", + "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Kuhle kuba namhlanje izinto zihamba kakuhle! Yintoni into enye ehambe kakuhle namhlanje? Khumbula ukuzincoma ngaloo nto.", + "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Uxolo ngokuva ukuba uxakanisekile namhlanje. Wenze kakuhle ngokuphawula ezo mvakalelo, nokuzama ukuzola uze uzicingele. Umisela umzelelo obalaseleyo kwintsapho yakho.", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Uqheliselo lweveki lwasekhaya lwenzelwe ukunika umntwana wakho ofikisayo imiyalelo eyakhayo.\n\nKhumbula – YIBA SENGQIQWENI, YIBA NGOWAKHAYO, THETHA NGOKUCACILEYO = FUMANA KANYE LE NTO UYIFUNAYO (kangangoko kunokwenzeka kumntwana wakho ofikisayo!)", "Did you have any challenges?": "Ngaba uye wanayo imiceli-mngeni?", "What challenge did you have?": "Loluphi ucelo-mngeni oye wanalo?", "My teenager did not want to follow the instruction.": "Umntwana wam ofikisayo khange afune ukulandela umyalelo.", @@ -1307,9 +733,74 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Kuhle gqitha! Ngokuncedisana ngeembopheleleko, uza kuba nexesha elingakumbi lokwenza izinto ezonwabisayo kunye nomntwana wakho ofikisayo – ibaluleke gqitha loo nto!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "Ewe, kuthatha ixesha ukuqhelana nokunika imiyalelo ekhuthazayo – akulolize ukuzama kwakhona! Cinga ngendlela yokuziphatha ongathanda ukuyibona kumntwana wakho uze ucinge ngeendlela ezikhuthazayo zokumnika loo myalelo!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Kunzima ukucinga ngemiyalelo ngoxa sisenomsindo. Zama ukufumana ixesha ozole ngalo uze unike umntwana wakho ofikisayo umyalelo okhuthazayo. \n\nKwi-@global.weekly_workshop elandelayo, siza kuthetha ngakumbi malunga nendlela yokulawula iimvakalelo zethu!  Ungafumana izinto zokuphola ezingakumbi kwi-@data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Injongo yakho ibikukwenza ulongiwo-mali kunye nesicwangciso sokonga imali. Siye saphawula ukuba ucofe ku-@data.habit.money.in_text_title - wenze kakuhle ngokukhumbula oku!", - "Your goal was to make a family budget and savings plan.": "Injongo yakho ibikukwenza ulongiwo-mali lwentsapho kunye nesicwangciso sokonga imali.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Enkosi ngokwabelana ngamava akho! Usebenzile ngokucinga ngendlela yokubhajetha uze wonge ngayo imali entsatsheni yakho. Oku kuza kukunceda usebenzele kwiinjongo zentsapho yakho. \n\nNikunye ninokuphumeza izinto ezininzi ezintle!", + "Which of the tips helped you?": "Ngawaphi amacebiso akuncedileyo?", + "GET REAL – Can your teen do what you are about to ask?": "MAYENZEKE – Ngaba umntwana wakho ofikisayo angakwazi ukuyenza lento oza kuyicela?", + "GET POSITIVE – Use positive words and praise them!": "MAYIKHUTHAZE – Sebenzisa amazwi akhuthazayo uze ubancome!", + "GET CLEAR – Be clear and specific!": "MAYICACE – Caca ukuba uthini uze ungqale!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Kuhle gqitha! Xa sicela umntwana wethu ofikisayo ukuba enze into anokukwazi ukuyenza, kulula kuye ukuba aphumelele.", + "When we praise them, our teens feel encouraged to listen to us again!": "Xa sibancoma, abantwana bethu abafikisayo baziva bekhuthazwa baze baphinde basimamele!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Kwakuhle kakhulu! Xa sicinga kusengaphambili ngemiyalelo esiza kuyinika umntwana wethu ofikisayo, kuba lula ukuyilandela loo miyalelo!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Enkosi ngokwabelana! Usebenzile ngokuzama ukunika umntwana wakho ofikisayo imiyalelo ekhuthazayo kunye nokwakha ulwalamano oluhle kunye nomntwana wakho ofikisayo. \n\nUmntwana wakho ufanele anconywe ngokunjalo NAWE!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Nikela iingqalelo kwizinto ezintle! \n\nUkuxelela abantwana bethu abafikisayo ukuba sifuna BENZE ntoni kusebenza bhetele kunokubaxelela ukuba BAYEKE ukwenza into ethile.\n\nUza kuwubona umahluko", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Molweni, molweni kuni nonke.\n\nNamhlanje umxholo wethu yimiyalelo emihle. \n\nKubalulekile ukunikela imfundiso entle kubantwana bethu, ngenxa yokuba xa sibanika imfundiso entle bayazi baze baqonde oko silindele ukuba bakwenze, yaye bakwenza ngale ndlela sifuna bakwenze ngayo. \n\nNgoko ekugqibeleni loo nto ishiya wonke umntu onwabile.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Awumakishanga nayiphi na @data.habit.instruct_positively.title @global.parent_points okwangoku.\n\nZama namhlanje!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Sele uyimakishe kwakanye i-@global.parent_point @data.habit.instruct_positively.title – ngoko wenza inkqubela encomekayo.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Thetha kakuhle nesiqu sakho ngomsebenzi omhle owenzayo. Akekho umzali ofezekileyo, kwaye sicinga ukuba wenza umsebenzi omhle!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Imiyalelo ekhuthazayo ikunceda uphawule ukuziphatha okuhle nangakumbi! \n\nGqiba ukwenza i-@local.workshop_data.in_text_title ukuze ufumane amacebo endlela okunokusebenza ngayo oku kwintsapho yakho.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Ngaba umntwana wakho ofikisayo usoloko ekumamela? Ukuba akunjalo (njengathi sonke), jonga uqeqesho lwale veki ukuze ufunde ngendlela yokukhupha imiyalelo ekhuthazayo enokukunceda ngayo - ngeyona ndlela.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Njengesiqhelo, ungangena kuqeqesho olutsha ngomso. Kuza kunceda ukuqala ugqibe uqeqesho olungaphambi kolu ngaphambi koko. \n\nAbanye abazali basebenzisa le app ngoxa besendleni eya emsebenzini. Kutheni ungayisebenzisi i-app kangangemizuzu embalwa? \n\nEnkosi kwakhona ngokusebenzisa i-@global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqsho olutsha sele likulindele: uza kubona umahluko omkhulu ngokwenza utshintsho oluncinane!", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo?", + "What could @global.w_instruct_female_caregiver have done differently?": "YIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", + "Said something nice first": "Ngethethe into entle kuqala", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo", + "Told @global.w_instruct_teen_girl what she wants her to do": "Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Masibone ukuba kwenzeka ntoni ukuba @global.w_instruct_female_caregiver uthi @global.w_instruct_teen_girl \"MUSA\":", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso nomhlobo wakhe.\n\n@global.w_instruct_female_caregiver: “Musa ukungcolisa ngoxa ndicoca indlu. Umi endleleni!”", + "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kodwa kufuneka ndilungiselele ukhuphiswano lwasesikolweni. Awufuni ndenze nto wena.”\n\n@global.w_instruct_female_caregiver: “Musa ukundiphendula!”", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Tyhoo!! Kutheni ndihleli nje ndiyangxoliswa????”\n\n@global.w_instruct_female_caregiver uyambombozela: “Lo mntwana usoloko esenza inkathazo.”", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Enkosi ngokucinga ngolu hlobo! \n\nMakhe sibuyele umva size sibone ukuba kwenzekani ukuba u @global.w_instruct_female_caregiver unikela umyalelo ofanelekileyo:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso. nezihlobo zakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kumnandi ukunibona niqhelisela umdaniso nomhlobo wakho. Ndicela niye phandle ndizogqibezela ukucoca indlu. Emva koko, ningandibonisa umdaniso wenu.\"\n\n@global.w_instruct_teen_girl: \"Kulungile, @global.w_instruct_female_caregiver .\"", + "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: \"Enkosi ngokuqhelisela phandle ngoxa ndigqibezela ukucoca, @global.w_instruct_teen_girl. Ngoku ndinexesha lokubukela umdaniso wenu.\"", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! Nidanisa kamnandi kakhulu!\"", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Ulingo lokucinga!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Ulingo lokucinga!\n* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Amacebiso asebenzisekayo ekhaya", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Ncokolani kunye: \n\n* Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo? \nYIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver ebenokuthi...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Ngethethe into entle kuqala \n* Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo \n* Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", + "Let's discuss what happened this time.": "Makhe sincokole ngento eyenzekileyo kweli ityeli.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Ncokolani kunye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?\n* Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", + "Positive instructions can work with your teen too!": "Imiyalelo emihle inokusebenza nakumntwana wakho ofikisayo!", + "It worked better this time because...": "Kube kuhle kweli tyeli ngenxa yokuba...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile \n* @global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", + "Let’s do a thought experiment!": "Makhe senze ulingo lokucinga!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "MUSA UKUCINGA NGENDLOVU \n\nUcinga ngantoni?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Mhlawumbi UYE wacinga ngendlovu...\n\n‘Musa ukunikela imiyalelo ebangela abantwana abafikisayo bacinge ngaloo nto. \n\nMaxa wambi badla ngokungayiqonidi EYONA nto siyifuna kubo. \n\nKanti badla ngokungathandi ukuxelelwa ukuba mabangenzi izinto (asinjalo sonke?)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "NGOKU, CINGA NGENGWENKALA! \n\nUcinga ngantoni?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Kulungile! Umyalelo, osengqiqweni ocacileyo unceda abantwana abafikisayo banikele ingqalelo kwinto abafanele bayenze. \n\nAbantwana abafikisayo baya kuziva behlonitshwa ngakumbi ngale ndlela, yaye banamathuba amaninzi okuphulaphula.", + "GET REAL": "YIBA SENGQIQWENI", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Ngaba umntwana wakho ofikisayo angakwazi ukuyenza le nto uza kuyicela? Kusenokuba nzima kubo ukufunda ngelizwi eliphantsi imini yonke, kodwa isiqingatha seyure xa ufuna njalo kusengqiqweni.", + "GET POSITIVE": "YIBA NGOWAKHAYO", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Ncuma umjonge emehlweni uze usebenzise amagama amnandi. Bancome xa beqalisa ngoko nangoko ukwenza oko ukucelayo!", + "GET CLEAR": "THETHA NGOKUCACILEYO", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ngokufuthi siyakwazi oko sikufunayo ezingqondweni zethu, kodwa asikuchazi ngokucace ngokwaneleyo. Kuchaze ngokuthe ngqo oko ufuna umntwana wakho ofikisayo akwenze. Zama ‘nceda goduka ngo-7pm’ kunokuba ‘ufike ekhaya ngexesha’.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Masiqhelisele ukunika imiyalelo EYIYO, EYAKHAYO NECACILEYO. Ukuqhelisela kuya kukunceda uphumelele ekuqhubaneni nomntwana wakho ofikisayo!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Khetha ababini kwiqela lakho:\n* Umntu omnye uzenza umntwana ofikisayo\n* Omnye uzenza umzali womntwana\n* “Umzali”: Nika ‘umntwana wakho ofikisayo’ umyalelo owakhayo onokhuthazo nezincomo\n* “Umntwana ofikisayo”: Sabela ngendlela ocinga ukuba umntwana ofikisayo angasabela ngayo kule nto. \n\nNcokolani kunye ngendlela okuhambe ngayo oku:\n* Oku kukwenze wavakalelwa njani “njengomzali” “nanjengomntwana ofikisayo”?\n* Ngaba ungenza nantoni na ibe bhetele?\n\nNika wonke umntu ithuba lokuba “ngumzali” “nomntwana” ukuba uyakwazi. Ukuqhelisela kubangela impumelelo!", + "Examples of positive instructions:": "Imizekelo yemiyalelo eyakhayo:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ndiyawuthanda umculo wakho. Ungawuthoba xa kusityiwa ukuze sikwazi ukuthetha? * Enkosi – Ndiyayixabisa loo nto. \n* Umnandi lo mculo. Ngubani yona imvumi? Nceda ucime umculo xa ungena endlini. Ungawudlala egumbini lakho ungavakali ukuba uyafuna. Enkosi!", + "Wonderful, I am so happy! Keep up the good work.": "Kuhle, ndivuya kakhulu! Qhubeka nalo msebenzi mhle.", + "Sorry that things are difficult. All families struggle. We are here to help!": "Uxolo ngokuba iimeko zinzima. Zonke iintsapho zitsala nzima. Sikhona ukuze sikuncede!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Nantoni na engahambanga kakuhle namhlanje, yilibale uze uze uzame kwakhona ngomso Kulungile!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Phinda wenze ibhajethi - ngeli tyeli KUNYE nomntwana wakho ofikisayo nentsapho yakho! \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size silweze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Hlola ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. Oku kuya kukhumbuza wonke umntu ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "Steps to make a budget": "Amanyathelo okwenza ibhajethi", "make a budget together with their family": "ukwenza ulongiwo-mali kunye nentsapho yabo", "Did you have any challenges when making your budget together?": "Ngaba uye wanocelo-mngeni xa benisenza kunye ulongiwo-mali?", "What whas difficult for you about making your budget together?": "Yitoni ibininzimela ngokulenza kunye ulongiwo-mali?", @@ -1321,8 +812,83 @@ "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Ndibuhlungu ukuva le nto. Ndiyayiqonda ukuba bungakhona ubunzima! Kutheni singaphindi sithethe ngale nto kwakhona? Umntwana wakho ofikisayo okanye amanye amalungu osapho angajoyina aze akuncede!", "My teen did not want to do the budgeting with me.": "Umntwana wam ofikisayo khange afune ukuyenza kunye nam ibhajethi.", "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Zama ukwenza ibhajethi nabanye abantu abadala abasekhayeni lakho kuqala. Umtwana wakho ofikisayo angaba nomdla kwinto eniyenzayo. \n\nUkwenza ibhajethi kungabonakala kuyinto efuna unikele ingqalelo, kodwa zama ukuyenza ibe yinto emnandi – yenze umdlalo ngethuba lokuchitha ixesha kunye! Okanye ungazama ukwenza ibhajethi ye-@global.w_money_grandmakuqala. \n\nUngalibali ukubancoma xa nigqibile!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Nawe ukufanelwe ukunconywa. Enkosi kwakhona ngokusebenzisa i-@global.parent_app. Kubonisa ukuba ukhathala ngokwenene!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Injongo yakho ibikukuncoma umntwana wakho ofikisayo. Ucofe ku-@data.habit.praise_teen.in_text_title.kule veki. Wenze umsebenzi omhle ngokukhumbula!", + "Your goal was to make a family budget and savings plan.": "Injongo yakho ibikukwenza ulongiwo-mali lwentsapho kunye nesicwangciso sokonga imali.", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Enkosi ngokwabelana ngamava akho! Usebenzile ngokucinga ngendlela yokubhajetha uze wonge ngayo imali entsatsheni yakho. Oku kuza kukunceda usebenzele kwiinjongo zentsapho yakho. \n\nNikunye ninokuphumeza izinto ezininzi ezintle!", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Iintsapho ezininzi zixinezeleke ngenxa yemali, ingakumbi ukuba abantwana abafikisayo baqhubeka becela izinto! \n\nXa sisenza ibhajethi kunye, singavumelana ngendlela yokwenza inkcitho KUNYE nokonga ukuthintela uxinezeleko nokusebenzela kusukelo lwentsapho.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yibhajethi yentsapho \n\nKubalulekile ukuyila ibhajethi, kodwa kubaluleke nangakumbi ukuyila ibhajethi ebandakanya intsapho iyonke \n\nUkuyenza kunye kunceda ekwandiseni umlinganiselo wokuqonda indlela oyichitha ngayo imali njengentsapho nendlela oyongela ngayo intsapho, yaye ungade uze nezicwangciso zendlela eninokonga ngayo njengentsapho.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye. Udinga:\n\n- Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni\n- Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali.\n \nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", + "A family budget can help @global.w_money_grandma - and YOU!": "Ibhajethi yentsapho inokunceda u @global.w_money_grandma - kunye NAWE!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Udinga: \n* Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni \n* Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali. \n\nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* ukutya \n* amanzi nombane \n* iimpahla zokunxiba \n* iiakhawunti \n* umrhumo WOMABONWAKUDE \n* izithambiso \n* isaluni \n* iethayimu \n* intlawulo yesikolo \n* into yokukhwela \n* iipolisi zeinshorensi \n* amayeza \n* ukuzihlaziyo/imidlalo \n* irenti \n* imalimboleko \n* icawa", + "Think about what we spend money on each month.": "Cinga ngezinto esichitha imali kuzo nyanga nganye.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imifanekiso yazo zonke izinto wena nentsapho yakho enichitha imali kuzo nyanga nganye. \n* Bhala ecaleni komfanekiso ngamnye ukuthi nto nganye iyimalini nyanga nganye. (Akukho mfuneko yokunikisa ngamanani ukuba akufuni.)\n* Dibanisa ukuba yimalini oye wayichitha nyanga nganye.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Kuhle gqitha! Uligqibile inyathelo 1! \n\nMasihlabele mgama!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Thethani kunye ngezinto enizidingayo nezinto enizifunayo\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Abantu badla ngokungaziboni ngendlela efanayo izinto. Xa sithetha ngezidingo neemfuno zethu, siqondana bhetele yaye sinokwenza ukhetho olululo kunye ngendlela yokusebenzisa imali yethu.\n\nJongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nixoxe:\n* Zeziphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo njengentsapho?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Cingani ngezinto enizidingayo nenizifuna nje\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Jongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nikhethe:\n* Zezphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo?", + "Make a budget!": "Yenzani ibhajethi!", + "Make a budget as one big family!": "Yenza ibhajethi njengentsapho enye enkulu!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Umntu omnye uza kuvolontiya aze asichazele ngoluhlu lwakhe (Ukuba akukho mntu uvolontiyayo ningenza uluhlu olutsha ninonke) \n* Dlalani indima zenu - abanye iya kuba ngabantu abadala, abanye ibe ngabantwana abafikisayo. \n* Gqibani ukuba umvuzo wenu wenyanga uza kuba yimalini.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.) \n* Gqibani kunye ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", + "Make a budget as a family!": "Yenzani ibhajethi njengentsapho!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Bhala phantsi ukuba uyimalini umvuzo wakho wenyanga.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.)\n* Gqibani ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Ceba indlela onokonga ngayo imali, ukuze uhlangabezane neemeko zongxamiseko ukuze ufikelele usukelo lwentsapho yakho!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Ukuba unokonga neyona mali incinci ukwenzela ikamva okanye imeko yongxamiseko - ingenza umahluko omkhulu ngokuhamba kwexesha. \n* Yongeza isangqa esibizwa ngokuba “ziimeko zongxamiseko”.\n* Yongeza isangqa esithi “usukelo lwentsapho.”\n* Ngoku zama ukudlulisela imali yakho ukuze wonge intwana nyanga nganye ukwenzela nganye kwezi.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwiqela lakho ukufanele ukunconywa, akunjalo?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwintsapho yakho ukufanele ukunconywa, akunjalo?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "SIVUYISANA NAWE!!! Uyenzile ibhajethi yakho – khumbula ukuphinda wenze olu qheliselo kunye namanye amalungu entsapho yakho - Ukuba niyavumelana ngokwenza isicwangciso kunye loo nto iya kwenza umahluko omkhulu!", + "Have you talked with your teen about your family budget yet?": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Nanini na uziva uwedwa okanye izinto zikongamela, yazi ukuba awuwedwa. Kukho abazali ehlabathini nokubanzi abaneengxaki ezifanayo nezakho. \n\nNgoko, wenza konke okwaziyo ukukwenza yonke imihla kwaye sonke siyazingca ngawe!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ukubandakanya amalungu entsapho yakho ngendlela esetyenziswa ngayo imali kungenza lwehle uxinezeleko kunye nokuxambulisana. \n\nGqiba i-@local.workshop_data.in_text_title ukuze incede usapho lwakho ngokubhajetha nokonga imali. Kulula kanti - uza kubona!", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Ngaba imali ikwenza uzive uxinezelekile? Ngaba umntwana wakho usoloko ecela izinto eningakwaziyo ukuzifikelela? \n\nOlu qeqesho luthetha ngemali kunye nokwenza ibhajethi.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Uninzi lwabazali luthi ukwenza ibhajethi kuye kwazisa uxolo kumakhaya abo - nawe kungakusebenzela oku.\n\nEnkosi kwakhona ngokuba ngumzali ozinikele olu hlobo.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvulwa ukuze lukuncede ubeke imithetho eza kusebenza kwintsapho yakho.", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kunokuba nzima ukondla intsapho nyanga nganye. Iintsapho ezininzi zinale ngxaki! \n\nKuquka @global.w_money_grandma - makhe sijonge:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: \"Bendinyamekela abazukulwana bam, @global.w_money_teen_girl no @global.w_money_teen_boy, ekubeni abazali babo basweleka besebancinci. Sisoloko sizamana nemali, njengoko ndifumana isibonelelo esincinci.”", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: \"Ndixinezeleke kakhulu. Andisenamali iseleyo. Yaye ngoku ndilwa nabantwana bam abafikisayo ngezinto abazifunayo– kwakhona.\"", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Niqhube kakuhle, sele nigqibe amanyathelo ama-3 okuqala! \n\nMakhe sibone indlela u @global.w_money_grandma asenze ngayo isicwangciso sakhe ngemali, kanye njengokuba wenzile:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "\"Ndibafunela ikamva eliqaqambileyo abazukulwana bam, kodwa andazi ukuba ndingayifumana phi imali*. Oomatshonisa bayingozi yaye imali yabo uyibuyisa seyininzi kakhulu. \n\nNdimele ndonge imali, kodwa loo nto ibonakala ingenakwenzeka!”", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "\"Usukelo lwam kukuqinisekisa ukuba umzukulwana wam ongumfana uyakwazi ukuya kwisikolo samabanga aphezulu aze umzukulwana wam oyintombazana akwazi ukufezekisa iphupha lakhe lokuya edyunivesithi. Ndingakwazi njani ukugcina imali eninzi ngale malana ndinayo?”", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "\"Ndiyazi - masiqale ngesicwangciso! Okokuqala, masenze ibhajethi – isicwangciso sendlela endinokonga ngayo imali. Emva koko ndiza konga intwana yemali ngexesha – ndingade ndijoyine namaqela okonga nawembolekiso-mali.\"", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "\"Kanti ndifanele ndithethe nabazukulwana bam ukuze sikhethe izinto esinokunciphisa inkcitho kuzo veki nganye. Baza kundincedisa ndicinge ngezinto esizifuna nje kodwa esingazidingiyo.”", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Kwiminyaka embalwa kamva:\n\n\"Jonga, siwafezekisile amaphupha ethu! Andikhange ndiboleke kwizihlobo okanye koomatshonisa. Ngokubeka imali encinci veki nganye, ndikwazile ukuhlawula imali ka @global.w_money_teen_boyyamabanga aphakamileyo ndaza ndabeka imali ethile ka @global.w_money_teen_girlyasedyunivesithi. Ndiyazidla ngale nto.”", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ukonga kubalulekile nangesinye isizathu: iimeko zongxamiseko! @global.w_money_grandma uye wayifunda le nto apha ekuhambeni:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Ngobunye ubusuku kwabakho isichotho esibi esonakalisa uphahla lwam. Yonke into yayikhukhulisekile. Ngesiquphe kwafuneka ndizame imali yokulungisa uphahla. Ndaziva ndoyisakele”", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Khawuthathe ithuba uze uvuyiswe yiloo nto uyifezileyo, ngaphandle kwazo zonke ezinye izinto ekufuneka uzenzile usuku ngalunye.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Ibali – loo nto ayikhange isebenze... \n* Ukuqhelisela ukubhajetha\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ingxubusho ngeendlela zokonga\n* Ukuqhelisela ukonga imali\n* Izixhobo: Indlela yokubhajetha nokonga\nCINGA - KHETHA - YAKHA - CEBA\n* Amacebiso asebenzisekayo ekhaya", + "Step 1: THINK": "Inyathelo 1: CINGA", + "What do we spend on now?": "Imali siyichitha entwenini ngoku?", + "THINK Activity": "Umsebenzi WOKUCINGA", + "Step 2: CHOOSE": "Inyathelo 2: KHETHA", + "Talk together about needs and wants": "Thethani kunye ngezidingo neemfuno", + "CHOOSE Activity": "KHETHA Umsebenzi", + "Step 3: BUILD": "Inyathelo 3: YAKHA", + "Make your own budget": "Yenza ibhajethi yakho", + "BUILD Activity": "YAKHA Umsebenzi", + "Step 4: PLAN": "Inyathelo 4: CEBA", + "Emergencies and family goals": "Iimeko zongxamiseko nosukelo lwentsapho", + "PLAN Activity": "CEBA Umsebenzi", + "What are your family savings goals?": "Luthini usukelo lwentsapho yakho lokonga?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Lusukelo oluhle kakhulu olo! \n\nLusukelo oluhle kakhulu olo! Xa sisenza ibhajethi entle nesicwangciso sokonga sikunye, singaphumelela size sizidle ngeziqu zethu!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sonke sinamaphupha ngeentsapho zethu, kanye njengo @global.w_money_grandma. Ngokubekela ecaleni intwana yemali nyanga nganye, bangazeka emzekweni", + "What are your family savings goals?": "Luthini usukelo lwentsapho yakho lokonga?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Lusukelo oluhle kakhulu olo! \n\nXa sisenza ibhajethi entle nesicwangciso sokonga, ningaphumelela nize nizidle ngeziqu zenu!", + "Let's talk about this story.": "Masithethe ngeli bali.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "U @global.w_money_grandma, wafunyanwa sisaqhwithi. \n\nZiziphi ezinye iimeko zongxamiseko ezinokusifikela?", + "Let's think about this story.": "Makhe sicinge ngeli bali.", + "For @global.w_money_grandma, a storm happened.": "U @global.w_money_grandma, wafunyanwa sisaqhwithi.", + "What other emergencies could come up for your family?": "Ziziphi ezinye iimeko zongxamiseko ezinokufikela intsapho yakho", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Iimeko zongxamiseko zinokufikela intsapho yam. Ukugcina imali ukwenzela ezi meko zongxamiseko NGAPHAMBI kokuba zehle kuthintela amaxhala noxinezeleko lwequbuliso!", + "Let's talk about different ways we can save.": "Makhe sithethe ngeendlela ezahlukeneyo esinokonga ngazo.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Ncokolani kunye: \n* Ziziphi iindlela ezahlukeneyo esinokonga ngazo? \n* Ziziphi iingenelo neengxaki zokhetho ngalunye lokonga? \n\nUkuqonda ukhetho ngalunye kakuhle kuya kukunceda wenze isigqibo ngolona khetho lokonga lusemagqabini ngentsapho yakho. \n\nEnoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", + "Let's think about different ways we can save.": "Makhe sicinge ngeendlela ezahlukeneyo esinokonga ngazo.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kukho iindlela ezahlukeneyo esinokonga ngazo: ekhaya, ukuthenga izinto esinokuzithenga kamva, ebhankini, okanye kwiqela lokonga.\n\nCinga ngeengenelo neengxaki zokhetho ngalunye lokonga.", + "What is the best savings option for your family?": "Ziziphi ezona ndlela ziphambili zokonga kwintsapho yakho?", + "Whatever savings plan you choose, it will really help your family move forward!": "Enoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", + "Caring for yourself is so essential.": "Ukuzinyamekela kubaluleke kakhulu.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle Qhubeka nalo msebenzi mhle.", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Uqheliselo lwasekhaya lwale veki kukuncoma umntwana wakho ofikisayo kube kanye ngosuku. Kuya kuthatha imizuzwana eli-10 nje qha!", "Your goal was to praise your teen.": "Injongo yakho ibikukuncoma umntwana wakho ofikisayo.", "Did you have a chance to praise your teen this week?": "Ngaba uye wanalo ithuba lokuncoma umntwana wakho ofikisayo kule veki?", "Yes": "Ewe", @@ -1338,17 +904,135 @@ "Well done for observing how your teen felt; keep it up!": "Usebenzile ngokuphawula indlela avakalelwe ngayo umntwana wakho ofikisayo; yibambe apho!", "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Iyenzeka into enjalo - yiba nomonde. Qinisekisa ukuba uqhubeka uchitha ixesha kunye nomntwana wakho ofikisayo ukuze azokuluxabisa uluvo lwakho nangakumbi. Xa ukuncoma kwakho kusuka entliziyweni, uza kubona iingenelo kungekudala!", "No problem - try to observe how they respond the next time!": "Akukho ngxaki - kwixesha elizayo, zama ukuphawula intsabelo yakhe!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Injongo yakho ibikukuncokola ngemeko ekukho ingxaki kuyo kunye nomntwana wakho ofikisayo nize nenze icebo sokujamelana nayo.", - "prepare for a possible crisis with their teens": "lungiselela ingxaki enokubakho kunye nabantwana babo abafikisayo", - "prepare for a possible crisis with your teen": "lungiselela ingxaki enokubakho kunye nomntwana wakho ofikisayo", - "My teen told me that something serious happened to them and I did not know how to handle it.": "Umntwana wam undichazele ukuba uye wanengxaki enkulu kodwa khange ndazi ukuba ndenze ntoni ngayo.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Mncome umntwana wakho ofikisayo ngoku kuchazela; akululanga ukuyenza lonto! Ukhumbule ukuba unokusebenzisa zonke izakhono ozifumene kwibhokisi yakho yezixhobo: Nqumama sebenzisa amanyathelo amane okusombulula ingxaki kwaye cela inkxaso efunwa nguwe nomntwana wakho ofikisayo!", - "Get support": "Fumana inkxaso", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Incoko indenze ndaziva ndingakhululekanga kuba indikhumbuze ngamava abuhlungu endandikhe ndahlangabezana nawo.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Xa sikhumbula lomava, kuqhelekile ukuziva ucaphukile okanye unomsindo. Kubalulekile ukuba ufumane ixesha laxa uzolile ukuze ukwazi ukucinga ngenkxaso oyifunayo. Kusenokufuneka ube nomntu othetha naye.", - "One of us did not feel comfortable.": "Omnye wethu uzive engakhululekanga.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Kunzima ukuthetha ngalento. Khangela ixesha xawupholile ukuze uthethe ngayo. Siyayiqonda ukuba kulula ukungathethi ngezi zinto siye sinqwenele ukuba zingaze zisehlele. Sekunjalo kodwa, ukufunda ukujamelana nengxaki kufana nokuthenga i-inshorensi; SOLOKO kufanelekile ukucinga ngazo kwaye uzilungele.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Injongo yakho ibikukuceba imingcipheko neenkqubo zenkxaso kunye nomntwana wakho ofikisayo - kokubini kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi.", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Nawe ukufanelwe ukunconywa. Enkosi kwakhona ngokusebenzisa i-@global.parent_app. Kubonisa ukuba ukhathala ngokwenene!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ukuncoma sesona sakhono sinamandla ebuzalini.\n\nUkuba siyabancoma abantwana bethu abafikisayo xa besenza izinto kakuhle, siya kubabona besenza izinto ezingakumbi nezinto ezininzi ezintle!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Molweni, kuni nonke. \n\nUmxholo wethu namhlanje umalunga nokuncoma. \n\nKuhle ukubancoma abantwana bethu xa benze into entle kuba xa sisenza loo nto, baya kubonisa isimilo esihle kakhulu esithanda ukusibona. \n\nYaye singalibali ukuzincoma nathi xa senze okuhle!", + "Praise time!": "Lixesha lokuncoma!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Xa uphinda ubona umntwana wakho ofikisayo, mncome ngento enye ayenza kakuhle! \n\nUgqibele nini ukuzincoma okanye ukuncoma omnye umntu omdala ekhayeni lakho? Yizame!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Usebenzile ngokusebenzisa i-@global.parent_app! Ukhumbule ukuba zizinto ezincinci ezenza umahluko omkhulu.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Ukuncoma kwenza umahluko. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela ONOKUNCOMA ngayo kwintsapho yakho.", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Enkosi ngokusebenzisa i-@global.parent_app ukuze utyale kuwe siqu nakusapho lwakho.\n\nZama i@local.workshop_data.in_text_title uze wakhe isakhono esigqwesileyo sokuba ngumzali!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Kuhle ukukubona ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvuleka. Yizame - uza kuwubona umahluko kwindlela yokuziphatha yomntwana wakho ofikisayo.", + "Think about the last time someone thanked you, or said you did something great.": "Cinga ngokugqibela kwakho ukubulelwa ngumntu okanye wakuxelela ukuba wenze into esemagqabini.", + "How did it make you feel?": "Yakwenza waziva njani?", + "Parents usually don’t get thanked or praised enough.": "Abazali abadli ngakubulelwa okanye banconywe ngokwaneleyo.", + "How does it make you feel when nobody says \"thank you\"?": "Kukwenza uzive njani xa kungekho mntu othi “enkosi”?", + "Tired": "Uyadinwa", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Nomntwana wakho ofikisayo angavakalelwa ngendlela efanayo. Yiloo nto eyenza isixhobo sabazali sale veki sibe lula kodwa sibaluleke: Bancome ngento abayenza kakuhle.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?", + "Why did she praise them?": "Kutheni eye wabancoma?", + "To get them to do it more often": "Ukuze abenze bayenze rhoqo", + "To help her finish her work": "Ukumnceda awugqibe umsebenzi wakhe", + "To make them feel good": "Ukubenza bazive kamnandi", + "To make herself feel good": "Ukumenza lo mntwana azive kamnandi", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Zonke ezo zinto ziyinyani! \n\nXa abantwana bakhe abafikisayo bonwabile, u-@global.w_praise_female_caregiver_name uziva onwabile. Yaye uye wawugqiba umsebenzi wakhe.", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Ukuncoma kunamandla kakhulu. \n\nMakhe sijonge umzekelo ka @global.w_praise_female_caregiver_name neentombi zakhe:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Xa u @global.w_praise_female_caregiver_name exakekile, iintombi zakhe ezimbini ziyalwa qho. Kodwa namhlanje, intombi yakhe enkulu iye yancedisa udadewayo ngomsebenzi wesikolo!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Enkosi ngokwenza umsebenzi wakho wesikolo, @global.w_praise_girl, yaye enkosi ngokuncedisa udadewenu, @global.w_praise_teen_girl. Ndiyazidla ngawe!”", + "Step 1: Share what went well and what was hard": "Inyathelo 1: Sibalisele oko kuye kwahamba kakuhle noko kuye kwanzima", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ndifunde lukhulu ngobomi bomntwana wam ofikisayo xa sikhe sachitha ixesha sobabini! Kodwa emva kosuku lokuqala, umntwana wam ofikisayo ebefuna ukudlala efowunii yakhe nje qha.”", + "Step 2: Bring ideas!": "Inyathelo 2: Yiza nezimvo!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "Usebenzile ngokuzama! Mhlawumbi ungacebisa ezinye izinto zolonwabo eninokuzenza kunye nomntwana wakho ofikisayo.”\n\n“Ewe, okanye ningenza okuthile kunye efowunini yakhe? Okanye angakubonisa indlela esebenza ngayo ifowuni yakhe?”", + "Step 3: Pick and try one!": "Inyathelo 3: Khetha uze uzame ibe nye!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Enkosi ngezo ngcamango zisemagqabini! Ewe, makhe ndicele umntwana wam ofikisayo andibonise indlela esebenza ngayo ifowuni yakhe ngomso emva kokuphuma kwesikolo. Ngaba omnye wenu angazenza umntwana wam ofikisayo ngoku, ukuze ndiqhelisele ukumbuza?”", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola:\n\n* Yintoni ehambe kakuhle ibe yintoni eye yanzima?\n* Zeziphi izisombululo eninokucinga ngazo?\n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Imiphumo yokuncoma\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Imiphumo yokuncoma\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Amacebiso asebenzisekayo ekhaya", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Baliselanani:\n\n* Ugqibele nini ukubulelwa ngumntu okanye akuxelele ukuba wenze into esemagqabini? \nYakwenza waziva njani? \n* Uziva njani xa ungabulelwa okanye unconywe ngenxa yento oyenzileyo? \n\nAsidli ngakubulelwa okanye sinconywe ngokwaneleyyo njengabazali. Mhlawumbi unganika abantwana bakho abafikisayo umzekelo omhle uze ubancome kuqala xa besenza into entle!", + "Let's discuss this story.": "Makhe sincokole ngeli bali.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Ncokolani kunye:\n\n* Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?\n* Kutheni eye wabancoma?", + "The same can work for you!": "Nawe le nto inokukunceda!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name ubancomile abantwana bakhe abafikisayo...", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ukuze abenze bayenze rhoqo\n* Ukumnceda awugqibe umsebenzi wakhe \n* Ukubenza bazive kamnandi \n* Ukumenza lo mntwana azive kamnandi", + "SEE IT": "YIBONE", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Khangela nantoni na umntwana wakho ofikisayo ayenzayo eluncedo okanye elungileyo, uze umncome ngenxa yoko. Basenokungayibonisi kodwa uya kubabona bephinda beyenza loo nto ilungileyo. Kanti iya kubaqinisekisa ukuba uyaqaphela yaye uyakhathala.", + "SAY IT": "YITSHO", + "Be enthusiastic – really mean it when you say it!": "Yiba nentshiseko – nyaniseka xa uyitsho!", + "REPEAT IT": "YIPHINDE", + "Try to find something to thank them for every day. Even something really small.": "Zama ukufumanisa into oza kubabulela ngayo suku ngalunye. Nditsho nento encinci kakhulu.", + "You can also praise other adults in your household, too. Notice how they respond!": "Kanti ungancoma nabanye abantu abadala ekhayeni lakho. Phawula indlela abasabela ngayo!", + "Let's practice giving praise.": "Masikuqhelisele ukuncoma.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Baliselanani: \n\n* Ungamncoma ngantoni umntwana wakho ofikisayo? \n* Yintoni enye into entle eyenziwe ngomnye umntu ebudeni bolu qeqesho? Baxelele!\n* Kukwenze waziva njani ukuncoma umntu?\n* Kukwenze waziva njani ukunconywa?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Maxa wambi kuba nzima ukucinga ngento onokumncoma ngayo umntwana wakho ofikisayo! Nanga amanye amacebiso avela kwabanye abazali:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ukuba noobubele emntwini \n* Ukucoca igumbi lakhe lokulala \n* Ukujoyinia isiddlo sentsapho \n* Ukubulisa amanye amalungu osapho \n* Ukunyamekela abanye abantwana bakowabo \n* Ukugoduka kwangethuba \n* Ukumcingela \n* Ukuthi ‘ndiyacela’ okanye ‘enkosi’ \n* Ukuya esikolweni \n* Ukwenza imisebenzi yasekhaya okanye eyesikolo \n* Ukuphathana ngoxolo ebudeni besidlo", + "Great to hear that you are doing well. You are a wonderful parent!": "Kumnandi ukuva ukuba uqhuba kakuhle. Ungumzali osemagqabini!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Uxolo ngoba usuku lwakho alukuhambeli kakuhle. Wenze kakuhle ngokuzama ukubona yonke into. Akakho umntu onazo zonke iimpendulo kodwa eneneni wenza konke okusemandleni akho!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Uxolo ngokuva ukuba alumnandanga usuku lwakho. Uqhube kakuhle ngokuvuka rhoqo ntsasa nganye uphinde uzame kwakhona naxa sele udiniwe. Yinkalipho nokuzinikela kokwenene!", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Kule veki, yenza umgaqo ube mnye nomntwana wakho ofikisayo.\n\nUngalibali ukumncoma umntwana wakho ofikisayo emva koko!", + "make rules with their teens": "yenza imithetho kunye nabantwana bakho abafikisayo", + "Did you have any challenges when trying to make a rule together?": "Ngaba uye wanengxaki xa benizama ukwenza umthetho kunye?", + "What was difficult for you about making a rule with your teen?": "Yintoni ebinzima ngokubeka umthetho kunye nomntwana wakho ofikisayo?", + "My teen and I could not agree on a rule.": "Mna nomntwana wam khange sikwazi ukuvumelana ngomthetho.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Cinga enoba lo mthetho usengqiqweni. Ngaba umntwana wakho angakwazi ukuwuthobela? Xa nisenza umthetho njengentsapho, kuyanceda ukucinga ngomntwana wakho ofikisayo, mingaphi iminyaka yakhe, kunye nezinto ezibalulekileyo kuye.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Umntwana wam ebevakalelwa kukuba akulunganga ukuba kufuneke athobele umthetho ngoxa kungafuneki ndiwuthobele mna.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Simele sisoloko sikhumbula ukuba abantwana bafunda kakuhle kumzekelo wethu. Okukhona sithobela imithetho, kokukhona nabo beza kuyilandela. \n\nUnokuwutshintsha umthetho ukuze uqinisekise ukuba unokuthotyelwa, ucinga ngeembopheleleko onazo kunye nezomntwana wakho ofikisayo (ngokomzekelo, izinto ezenziwa esikolweni okanye emsebenzini).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ndiye ndaziva ndingakhululekanga ngenxa yokuba ndivakalelwa kukuba ndim omele ukuba ubeka umthetho kungekhona umntwana wam ofikisayo.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Iqabane lam liye laziva lingakhululekanga, ngenxa yokuba livakalelwa kukuba lilo elimele ukuba libeka umthetho, kungekhona umntwana ofikisayo.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Xa sibeka imithetho sisebenzisana kunye nabantwana bethu abafikisayo, loo nto inceda ukuba abantu abakwintsapho baqondane. Imithetho iza kulungela wonke umntu kwaye abantwana bethu abafikisayo baza kufuna ngakumbi baze bakwazi ukuyithobela.", + "When we tried to set a rule, we got into an argument.": "Xa besizama ukubeka umthetho, siye saxabana.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Ngaba ebekwimeko entle umntwana wakho ofikisayo xa benibeka umthetho? Kuhle ukubeka imithetho xa imeko izolile. Ukuba wena okanye umntwana wakho nidiniwe okanye nilambile, kungcono ukuthetha ngemithetho ngelinye ixesha.", + "We were not able to stick to the rule.": "Khange sikwazi ukuwuthobela umthetho.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Umthetho kufuneka ungqale uze ube ngonokuthotyelwa. Qinisekisa ukuba umthetho obekwayo unokugcinwa ngokulula, njengokutya isidlo kunye qho ngeCawa endaweni yokwenza oko ngazo zonke iingokuhlwa. Ngaba kufuneka ububhetyebhetye kulo mthetho?", + "Your goal was to make ONE rule with your teen this week.": "Injongo yakho ibikukubekela umntwana wakho ofikisayo umthetho OMNYE kule veki.", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Usebenzile ngokwenza le nto! Akululanga kwaye abantwana abafikisayo abazusoloko beyithobela imithetho, kodwa ukubeka imithetho ebalulekileyo yindlela entle yokuqalisa. Zincome ngokwenza oku - siyazingca ngawe!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Imigaqo inceda abantwana abafikisayo baqonde oko kulindelekileyo kubo. \n\nAbantwana abafikisayo batyekele ngakumbi ekulandeleni imigaqo xa imigaqo niyenza KUNYE nomntwana wakho ofikisayo uze umncome ngaloo nto!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yimigaqo. \n\nImigaqo ikhuthaza uxolo ekhayeni ize ikhuthaze ukuqondana phakathi kwamalungu entsapho. \n\nImigaqo ikhuthaza iimbopheleleko kwilungu ngalinye lentsapho, ngenxa yoko, kubalulekile ukuba nemigaqo yentsapho. \n\nIkhaya elinemigaqo yentsapho liphila eluxolweni.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Bhala phantsi umgaqo omnye obalulekileyo ongathanda ukuwenza nomntwana wakho ofikisayo – uza kuwenza njengoqheliso lwasekhaya kule veki. \n\nBaya kucinga ntoni ngoku?", + "Have you managed to set a rule together with your teen?": "Ngaba ukwazile ukusebenzisana nomntwana wakho ofikisayo ukuze nibeke umthetho?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ngamanye amaxesha kuye kube ngathi abantwana bakho abafikisayo banomsindo nangona sele wenze konke okusemandleni akho. Ukhumbule ukuba wenza umsebenzi ogqwesileyo, kwaye amaxesha amnandi aza kude abekho nakubo!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Sele ukufutshane ekufumaneni esinye isixhobo sokuba ngumzali! Gqiba i-@local.workshop_data.in_text_title, bekela umntwana wakho ofikisayo umthetho OMNYE olula nonokuthotyelwa, uze ubone izinto zitshintsha!", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Enkosi kwakhona ngokusebenzisa i-@global.parent_app nangokuzimisela kuhambo lokuba ngumzali. \n\nI-@local.workshop_data.in_text_title iza kukubonisa indlela yokubeka imithetho ngendlela eya kunceda umntwana wakho ofikisayo ayiqonde aze ayilandele ngcono.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ayiyi kuthatha xesha lide kwaye iya kunceda umntwana wakho ofikisayo alandele imithetho ngcono!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqesho olutsha luza kukunceda wazi ukuba wenzeni xa abantwana abafikisayo bebonakalisa ukungabi nasimilo (okanye ukuba naso)!", + "They discussed the reasons behind the rule": "Baye bancokola ngezizathu zomgaqo", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy", + "The rule was clear, specific and fair": "Umgaqo ubucacile, ungqalile yaye ulungile", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", + "That's right, making clear rules together in a calm and positive way works so well!": "Unyanisile, ukwenza imigaqo ecacileyo kunye ngendlela ezolileyo neyiyo kunceda kakhulu!", + "She praised him": "Uye wamncoma", + "She rewarded him when he followed the rule": "Umnike umvuzo ngokulandela umgaqo", + "Exactly - a positive response makes all the difference!": "Uchanile - impendulo eyiyo iyawenza umahluko!", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Makhe sifunde ngoko kwenzeke nge @global.w_rules_teen_boy ne @global.w_rules_female_caregiver_1:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: \"Usoloko ugoduka emva kwexesha!\"\n\n@global.w_rules_teen_boy: \"Hayi akunjalo, andazi nokuba lithetha ukuthini igama elithi emva kwexesha! Khawuyeke ukundijikeleza ngochuku.”", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Nguwuphi umgaqo okhethekileyo abanokuthi u @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 bawuyile kunye?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Makhe sibone indlela u @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy abayenza ngayo le nto ngosuku olulandelayo\n\n@global.w_rules_female_caregiver_1: Ndifuna wonwabe, @global.w_rules_teen_boy, kodwa iyandikhathaza nento yokuhamba kwakho ngobusuku. Ngaba uyasazi isizathu?” \n\n@global.w_rules_teen_boy: “Ngenxa yokuba ufuna ndibe nexesha elaneleyo lokwenza umsebenzi wam wesikolo?”", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Unyanisile, yaye akukhuselekanga kule ndawo ukuba ngaphandle emva kokutshona kwelanga. Ucinga ukuba leliphi ixesha elililo lokuba sekhaya?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ndingagoduka ngo-10pm?\" \n\n@global.w_rules_female_caregiver_1: “Kusuke kusebusuku noko, unjani u-6pm? Okanye elinye ixesha eliphakathi?”", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ndingagoduka ngo-6pm ngeentsuku zesikolo ndize ndigoduke ngo-10pm ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Ok kulungile. Ukususela ngoku, umgaqo wentsapho yethu uthi kufuneka ufike endlini ngo-6pm ngeentsuku zesikolo uze ufike ngo-10pm ngooLwezihlanu nangemiGqibelo. Kodwa usoloko ugoduka nomhlobo. Ilungile xa injalo?\"", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: \"Kulungile, @global.w_rules_female_caregiver_1“ \n\n@global.w_rules_female_caregiver_1: “Enkosi kakhulu, @global.w_rules_teen_boy, ngokundincedisa senze umgaqo omhle. Kundivuyisa kakhulu ukuphawula ukuba uya uqola.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Ngengomso...\n\n@global.w_rules_female_caregiver_1: “Enkosi, @global.w_rules_teen_boy, ngokubuya ekhaya kwangethuba. Emva kokuba ugqibe umsebenzi wakho wesikolo singatya isidlo sangokuhlwa osithandayo.”", + "Online Safety": "Ukhuseleko kwi-Intanethi", + "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Imigaqo ibalulekile ukugcina umntwana wakho ofikisayo ekhuselekile - nakwi-intanethi. Kukho okungakumbi ngale nto kuQeqesho lweVeki nganye olungokuceba ukhuseleko, kodwa masesiqaliseni sijonge ngoku!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, ngaba uwenzile umsebenzi wakho wesikolo?\"\n\n@global.w_rules_teen_girl: “Kancinci nje @global.w_rules_female_caregiver_2, ndigqibezela le @global.teen_social_medium vidiyo\"", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Ungumdanisi ophum’ izandla ngokwenene! Ndixelele isizathu sokuba uwuthande\"\n\n@global.w_rules_teen_girl: \"Bonke abahlobo bam bakuwo, @global.w_rules_female_caregiver_2. Ndineelikes eziyi-600 neefollowers eziyi-120.\"", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: \"Ndiyazidla ngendlela odanisa kamnandi ngayo, @global.w_rules_teen_girl. Kodwa simele siqinisekise ukuba ukhuselekile. \n\nNdiyazi ukuba abahlobo bakho bajonga ku @global.teen_social_medium, kodwa ngeakhawunti evulekileyo, kukho nabanye abantu abajonga iividiyo zabantu abafikisayo bencwase ukwabelana nabo ngesondo. Maxa wambi baye baqhagamshelane nabantu abafikisayo. Bazenza ngathi banobuntu kodwa baphela besongela baze babaxhaphaze abantwana abafikisayo.”", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: \"Makhe sijonge kunye kwi-intanethi ukuze sibone ukuba singaqhubeka njani siqiniseka ukuba wonwabile kodwa ukwakhuselekile. Khangela – ungenza iakhawunti yakho ibe nobumfihlo uze ulawule abantu abakulandelayo.\n\nUngamkela abantu obaziyo esikolweni nakwindawo esihlala kuyo, kungekhona abantu abaqhagamshelana nawe kwi-intanethi.\n\nNgaba singawenza kunye umgaqo onokuwusebenzisa @global.teen_social_medium, kodwa kwiakhawunti yabucala? Ndiyathemba uyazi ukuba ngubani omawumamkele!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: Ndiyazidla ngawe @global.w_rules_teen_girl\"", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Oku kusemagqabini. Ngalunye kolu qheliselo lwenza intsapho yakho yomelele. Zidle.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze… \n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze… \n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "What went well here in making a rule together?": "Yintoni ebintle apha ngokwenza umgaqo kunye?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Ucinga ukuba u @global.w_rules_teen_boy wazi njani ukuba u @global.w_rules_female_caregiver_1 uyamxabisa?", + "Making the rule together went well because...": "Ukuwenza sobabini umgaqo kusebenzile ngenxa yokuba...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Baye bancokola ngezizathu zomgaqo \n* @global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy \n* Umgaqo ubucacile, ungqalile yaye ulungile \n* @global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy ebemazi @global.w_rules_female_caregiver_1 ebemxabisa ngenxa yokuba...", + "* She praised him\n* She rewarded him when he followed the rule": "* Uye wamncoma\n* Umnike umvuzo ngokulandela umgaqo", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Imigaqo yekhaya inceda ukugcina abantwana bethu abafikisayo bekhuselekile, baze baqonde oko kulindelekileyo kubo. Xa umbandakanya umntwana ofikisayo ekwenzeni imigaqo banokuzimisela ngakumbi ekuyilandeleni.", + "TEAM RULES": "IMIGAQO YEQELA", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Yicebe KUNYE nomntwana wakho ofikisayo imigaqo. Qala ngomgaqo omnye omtsha - ungongezelela omnye kamva. Ncokola nabo ngezizathu zalo mgaqo uze uphulaphule izimvo zabo.", + "REAL RULES": "IMIGAQO YOKWENENE", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Yenze ibe sengqiqweni ilungelane noko umntwana wakho ofikisayo anokukwenza, uze uyibeke icace ize ingqale ukuze iqondwe kakuhle. Kungekhona ‘ngexesha’ kodwa ‘ngo-7pm’.", + "PRAISE RULES!": "IMIGAQO YOKUNCOMA!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Mncome umntwana wakho ofikisayo ngokuceba umgaqo kunye nawe, uze ubancome ngokuwugcina!", + "Let's practice making rules.": "Makhe siqhelisele ukwenza imigaqo.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Nguwuphi umgaqo omnye obalulekileyo ngamnye kuni ongathanda ukuwenza nomntwana wakho ofikisayo? \n* Ucinga ukuba umntwana wakho ofikisayo uza kucinga ngantoni ngalo mgaqo? \n\nKhumbula, yenze imigaqo ingqale yaye ibe sengqiqweni!", + "Here are some of the rules other families created:": "Nantsi eminye imigaqo eziye zayiyila ezinye iintsapho:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Abantwana abafikisayo bangadlala phandle emva kokugqiba ukwenza umsebenzi wesikolo\n* Onke amalungu entsapho atya kunye idinala\n* Umntwana ofikisayo 1 uhlamba izitya ngeCawa nangoMvulo, Umntwana ofikisayo 2 uzenza ngoLwesibini nangoLwesithathu\n* Sincokolisana ngesimilo nangobubele\n* Xa ufuna ukumamela umculo uwuphulaphula ngee- earphones", + "Remember that YOU matter!": "Khumbula ukuba UBALULEKILE!", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Wenze kakuhle ekuqondeni imvakalelo ezakhayo. Kuyandivuyisa ukuva ukuba uziva kamandi namhlanje!", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Uqhube kakuhle ngokuqonda iimvakalelo ezinzima. Kulungile ukungaziva mnandi maxa wambi. Khumbula ukuba awukho wedwa.", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Ukuba anikayenzi kunye okwangoku, yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", "map risks and support with their teens": "ukubhala imingcipheko nenkxaso kunye nabantwana babo abafikisayo", "map risks and support with your teen": "ukubhala imingcipheko nenkxaso kunye nomntwana wakho ofikisayo", "My teen and I disagreed on which areas and online activities were unsafe.": "Mna nomntwana wam ofikisayo khange sivumelane ngeendawo ezingakhuselekanga kunye nezinto ezingakhuselekanga ezenziwa kwi-intanethi.", @@ -1363,7 +1047,151 @@ "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Kunzima ukwazi zonke iinkcukacha ngeendawo esihlala kuzo. Xa ubhala into yokwenza, bandakanya elinye ilugu losapho okanye isihlobo. Usenokude utyelele kwezinye zeendawo ekufumaneka kuzo iinkonzo uze ubuze ukuba zenza ntoni. Okukhona sisazi, kokukhona sinokugcina iintsapho zethu zikhuselekile!", "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Andazi nto kangako ngeteknoloji, ngoko andiyazi indlela yokuncokola kunye nomntwana wam ofikisayo ngayo.", "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Akukho ngxaki kwaphela! Ungaqhubeka umxhasa umntwana wakho ofikisayo. Cela umntwana wakho akuxelele ngeegajethi abazisebenzisayo - unokuyenza le nto ngethuba lokuchitha ixesha kunye. Eli lithuba elihle lokubonisa umdla kubomi bomntwana wakho ofikisayo nize nincokole kunye ngemingcipheko enokubakho. Ukuba awuqinisekanga ngemithetho onokuyibeka, ninokuvumelana nomntwana wakho ofikisayo ukuba nizame umthetho omtsha kangangeeveki ezimbini nize emva koko nincokole ngendlela ezihamba ngayo izinto kwaye niwutshintshe umthetho ukuba kuyimfuneko!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Injongo yakho ibukukuzama ukusombulula ingxaki okanye ungquzulwano usebenzisana nomntwana wakho ofikisayo.", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Injongo yakho ibikukuceba imingcipheko neenkqubo zenkxaso kunye nomntwana wakho ofikisayo - kokubini kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi.", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Abantwana abafikisayo bangachitha ixesha elininzi ngaphandle kwendlu okanye kwi-intanethi, apho kunzima ukuba sibagcine bekhuselekile. \n\nUkuthetha kunye ngeendawo ezikhuselekileyo nezingakhuselekanga, nendlela yokuthintela iingxaki, kunceda ngokwenene!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Molweni, kuni nonke. \n\nNamhlanje umxholo wethu umalunga nokhuseleko lwabantwana abafikisayo. \n\nKuyimbopheleleko yethu njengabazali ukugcina abantwana bethu abafikisayo bekhuselekile ngamaxesha onke. Kufuneka siqinisekise ukuba abantwana bethu abafikisayo bakhuselekile kwiindawo esihlala kuzo. Kuyimbopheleleko yethu ukubenza bazi ngeendawo ezikhuselekileyo nezingakhuselekanga. \n\nKanti ikwayimbopheleleko yethu ukuqinisekisa ukuba bayaziqonda iingozi abanokuzichanaba kuzo xa bekwi-intanethi. Ngaloo ndlela abantwana bethu abafikisayo baya kuqola baze bakwazi ukwenza izigqibo ezizizo ukuze bazigcine bekhuselekile nabo.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Ncokolani kunye:\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nentlekele? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha. \n\nApha ngezantsi kukho iindawo ezinokuba luncedo", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Maxa wambi, singazifumana sisengxakini.\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncoma abantwana bakho abafikisayo ngendlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Yiphawule indlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Cingani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Ngalo lonke ixesha uceba ukugcina isicwangciso sokhuseleko, cofa i @global.parent_point uze ubhiyozele impumelelo yakho!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Makhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi: \n* Imephu yendawo esihlala kuyo \n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki - ukuba umntwana wakho ukhona ngoku, ningayenza kunye ngoku!", + "My family can join in now!": "Intsapho yam ingajoyina ngoku!", + "Let me try it out by myself": "Makhe ndiyizame ngoku ngokwam", + "Safety Plan": "Isicwangciso Sokhuseleko", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!\n\nMakhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi:\n* Imephu yendawo esihlala kuyo\n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi.\n\nMasenze ezi mephu siliqela ke ngoku. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki.", + "Step 1: What are important places in your community?": "Inyathelo 1: Ziziphi iindawo ezibalulekileyo kwindawo enihlala kuyo?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imephu yendawo ahlala kuyo umntwana wakho ofikisayo, kunye nemifanekiso yazo zonke iindawo ezibalulekileyo njengezitrato, umzi wakho, isikolo, iivenkile, iindawo ezityelelwa ngumntwana wakho ofikisayo.", + "Step 2: Which places are safe and unsafe?": "Inyathelo 2: Ziziphi iindawo ezikhuselekileyo nezingakhuselekanga?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Ncokolani kunye:\n\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "Step 3: Where can you get support?": "Inyathelo 3: Ningayifumana phi inkxaso?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n \n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", + "Step 4: What are risky places online and how can you make them safer?": "Inyathelo 4: Ziziphi iindawo eziyingozi kwi-intanethi yaye ungazenza njani zikhuseleke?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncomanani ngendlela eniyisebenzisa kakuhle ngayo i-intanethi!. \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "Have you talked with your teen about safety measures?": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Eli ibilelona xesha linzima kakhulu kubazali. Umele uzingce ngayo yonke into oyenzileyo. \n\nCinga ngawo onke amaxesha oye wamenza wancuma ngawo umntwana wakho ofikisayo kunye nendlela oye wamnyamekela ngayo. Abazali bayamangalisa kwaye nawe uyamangalisa!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ukuze umgcine ekhuselekile umntwana wakho ofikisayo, kuyanceda ukuncokola malunga nendawo enihlala kuyo kunye namava akhe okusebenzisa i-intanethi. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela onokuyenza ngayo le nto!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Sele uzuze izakhono ezininzi zokuba ngumzali kwezi veki zidlulileyo!\n\nGqiba uqeqesho olulandelayo ukuze uzuze esinye isakhono esiluncedo.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Ukwenza isicwangciso kunye nomntwana wakho ofikisayo kungathintela iingxaki ezininzi - yizame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokusebenzisa i@global.parent_app ukuxhasa usapho lwakho.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Siyavuyisana nawe, ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha sele lukulindile ukukunceda wena kunye nosapho lwakho ukuba nijongane nayo nayiphi na imeko - ngokubambisana ninokwenza okuninzi!", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "Makhe sicinge ngoko kwenzekileyo @global.w_safe_teen_girl_1:", + "What was risky about that situation?": "Yintoni ebiyingozi ngala meko?", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho", + "@global.w_safe_teen_girl_1's friend was encouraging her": "umhlobo ka @global.w_safe_teen_girl_1ebemkhuthaza", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ukuhamba nendoda endala kubeka u @global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto", + "Many girls in our communities get pregnant or catch HIV from older men": "Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", + "All those things are true!": "Zonke ezo zinto ziyinyani!", + "Let's think about our teens' online safety.": "Masicinge ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", + "What is the biggest online risk for teens these days?": "Yiyiphi eyona ngozi inkulu kwi-intanethi kubantwana bethu abafikisayo kule mihla?", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo.", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", + "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Unxibelelwano yeyona nto ibalulekileyo!\n\nMakhe sibone oko kwenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1:", + "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: \"Ikho into eye yenzeka ngoxa ndiphume nabahlobo bam u @global.w_safe_teen_girl_2 no !@global.w_safe_teen_girl_3\"\n\n@global.w_safe_female_caregiver: \"Ndixelele, @global.w_safe_teen_girl_1\"", + "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Indoda esemotweni: “Hey nzwakazi. Kudala ndikujongile. Umhle nyhani, ngubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe ngu @global.w_safe_teen_girl_1”", + "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Indoda esemotweni: “@global.w_safe_teen_girl_1, ungathanda ukuhamba nam sifumane into yokusela namashwamshwam? Yiza kaloku, khwela, sawukhawuleza sibuye ndiyakuthembisa…” \n\n@global.w_safe_teen_girl_1: Andiqiniseki ukuba kulungile ukwenza loo nto…”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Unethamsanqa, mhlobam. Akwaba indoda ibingacela UKUNDIKHUPHA ize indithengele izipho. Ndiyakuxelela, ukuba akuyenzi lento ndiza kuxelela wonke umntu ukuba usisibhanxa!”", + "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 sukuya! Lumka! Masigoduke. Kuyingozi ukuhamba nabantu ongabaziyo. Ngapha koko, mdala gqith’ kunawe lowa yaye ayilunganga le nto ayenzayo.\"\n\n@global.w_safe_teen_girl_1: “Hay ndixakiwe…”", + "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: \"Pfff, ndiyazidla ngento yokuba ungakhange ukhwele kula moto. Ibiyimeko eyingozi le, enkosi ngokundixelela!”", + "Let's look at another example of a dangerous situation together.": "Makhe sijonge omnye umzekelo wemeko eyingozi sikunye.", + "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: \"Umhlobo wam ebesoloko ethetha nomfana oyintanga yethu kwi-intanethi... Uza kumthumelela iifoto zakhe. Ngaba loo nto ibhetele kuba elingana nathi?”", + "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Ungumhlobo olungileyo kwainto yokuba ukhathazeke ngaye. Ukuthumela iifoto ezivuselelayo inkanuko kuyingozi kakhulu nako.”", + "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: \"Maxa wambi abantu abayiyo le nto bathi bayiyo kwi-intanethi – unokuthi ulingana nawe kodwa uyindoda endala eneminyaka engama-50. Okanye xa besohlukana, angathumela ezo foto kumntu wonke yaye umhlobo wakho angaziva ebuhlungu.”", + "Doing any of these makes you a great parent.": "Ukwenza nayiphi na kwezi zinto kukwenza ube ngumzali omangalisayo.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "Makhe sithethe ngoko kwenzekileyo @global.w_safe_teen_girl_1", + "Discuss together: \n\nWhat was risky about that situation?": "Ncokolani kunye: \n\nYintoni ebiyingozi ngala meko?", + "The situation was risky because...": "Le meko ibiyingozi ngenxa yokuba...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho \n* umhlobo ka @global.w_safe_teen_girl_1 ebemkhuthaza \n* Ukuhamba nendoda endala kubeka u@global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto \n* Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala \n* Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", + "Let's talk about our teens' online safety.": "Masithethe ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", + "What are some of the online risks for teens these days?": "Ziziphi ezinye iingozi ze-intanethi kubantwana abafikisayo kwezi ntsuku?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo. \n* Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga\n* Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale\n* Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.\n* Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", + "MAPS": "IIMEPHU", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Yenzani IIMEPHU kunye nomntwana wakho ofikisayo zemimandla ekhuselekileyo nengakhuselekanga kwindawo ohlala kuyo nakwi-intanethi. Thetha ngendlela anokugcina ngayo inkcazelo yakhe, iifoto neevidiyo ziyimfihlo kwi-intanethi. Mxelele ukuba into ayifaka kube kanye kwi-intanethi, ihlala apho ngonaphakade. Kusenokwenzeka ukuba banomzekelo abawaziyo womhlobo wabo.", + "Safety Plan Activity": "Umsebenzi Wesicwangciso Sokhuseleko", + "RULES": "IMIGAQO", + "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Yenza IMIGAQO kunye nomntwana wakho ofikisayo ngokusebenzisa ngokukhuselekileyo ii-app neewebhsayithi azithandayo. \n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", + "Online Safety Story": "Ibali Lokhuseleko kwi-Intanethi", + "AMNESTY": "UXOLELO", + "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Yenza isivumelwano SOXOLELO. Ukuba kwenzeka into emcaphukisayo, engamonwabisiyo okanye emoyikisayo, angathetha nawe yaye awuyi kuba nomsindo okanye umohlwaye, kwanokuba bebesenza into engafanelekanga.\n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Ukuba ngumzali kwidijithali kuyafana nokuba ngumzali kwiimeko eziqhelekileyo. Uthathe INYATHELO ELIKHULU lokugcina umntwana wakho ekhuselekile kwindawo ohlala kuyo KUNYE nakwi-intanethi. Wenza kakuhle!", + "Resources to help in the community": "Izinto zokunceda kwindawo ohlala kuyo", + "Online Safety Resources": "Izinto Zokhuseleko kwi-Intanethi", + "Being a great parent also means taking time to care for yourself every day.": "Ukuba ngumzali osemagqabini kukwathetha ukuthatha ixesha uzinyamekele suku ngalunye.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kuhle. Yaye kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", + "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Ukuba ngumzali kunzima. Kodwa kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Ulugqibile uqeqesho lwale veki.\n\nSiza kuphinda senze eminye imisebenzi yokuzinyamekela xa udibana neqela lakho okokuqala - nonke nifanelwe kukuzinyamekela okuthe kratya!", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Nanini na unako, phola, qaphela uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Ixesha ngalinye uphola, cinga into ethile oye wayenza kakuhle okanye uzivuze, cofa i- @global.parent_points bhiyozela impumelelo yakho!", + "Why @data.workshop.w_self_care.short_title?": "Kutheni i-@data.workshop.w_self_care.short_title?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Asisoloko sizinyamekela ngokwaneleyo. Kodwa oku kubaluleke kakhulu, ingakumbi njengomzali! \n\nUkunciphisa uxinezeleko lwethu nokuzinyamekela kunceda thina KUNYE nabantwana bethu abafikisayo.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukuzinyamekela. \n\nKukho amaxesha apho siba nemiceli-mngeni, apho sijamelana neengxaki yaye singazi ukuba masenze ntoni. Kubalulekile ukuzinyamekela sifunde ubugcisa bendlela esinokuzigcina ngayo sizolile xa kunokuvela iingxaki, imiceli-mngeni okanye eminye imiba. \n\nXa sizolile sikwimeko entle yokucinga ngendlela eyiyo size size nezisombululo ezifanelekileyo kuwo nayiphi na imiceli-mngeni esinokujamelana nayo.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Ukhumbule – le veki INGAWE! Siyathemba ukuba uziphethe njengeqanda. Uyakufanelekela oku!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala uqeqsho olutsha kraca @global.parent_app ngomso. Uza kubona iziphumo ezintle!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Ngaba uye wawaxelela amaqabane akho e-@global.parent_app malunga ne-app? Ukususela ngomso, ningaqalisa ukwenza uqeqesho lwenu lwe@global.parent_app kunye!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ukunikela ingqalelo kweyona nto sikwazi kakuhle ukuyenza kusinceda sinikele ingqalelo kwizinto ezakhayo. \n\nMakhe sithathe ithutyana sizincome. Siza kukubonisa indlela yokukwenza.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.\n\nXelelanani ngokuvakalayo: \"Ndenze kakuhle ngoku...\"\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", + "Recognise": "Qaphela", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Thatha ithutyana uzincome. \n\nNgoku siza kukubonisa ukuba ungenza njani.", + "Think of one thing YOU have done well recently.": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.", + "\"Well done to me for...\"": "\"Ndenze kakuhle ngoku...\"", + "Showing love to my children": "Bonisa uthando ebantwaneni bam", + "Getting up even though I felt tired": "Ukuvuka nangona ndiziva ndidiniwe", + "Smiling at someone": "Ukuncumela umntu", + "Making food to stay strong": "Ukwenza ukutya okundigcina ndomelele", + "Spending time with my children": "Ukuchitha ixesha nabantwana bam", + "Helping my children with schoolwork": "Ukuncedisa abantwana bam kumsebenzi wesikolo", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Yitsho ngokuvakalayo ukuba uyakwazi.\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", + "Things to praise yourself for:": "Izinto onokuzincomela zona:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ukubonisa uthando ebantwaneni bam \n* Ukuvuka nangona uziva udiniwe. \n* Ukuncumela umntu \n* Ukwenza ukutya okundigcina ndomelele \n* Ukuchitha ixesha nabantwana bakho \n* Ukuncedisa abantwana bakho kumsebenzi wesikolo", + "Let's try it out and do a short relaxation activity together!": "Makhe siyizame size senze umsebenzi omfutshane wokuphumla sonke!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Njengabazali, sisoloko singenalo ixesha lokuzinyamekela - kodwa kubaluleke kakhulu ukuyenza le nto! Ukunciphisa uxinezeleko lwethu kunceda thina KUNYE nabantwana bethu abafikisayo. \n\nMakhe sithathe inyathelo lokuqala size senze umsebenzi omfutshane wokuphumla sonke.", + "Well done! Try to do this every day.": "Usebenzile! Zama ukwenza lento usuku ngalunye.", + "Have a hot drink": "Fumana isiselo esishushu", + "Call a friend or relative": "Fowunela umhlobo okanye isizalwana", + "Have a relaxing bath": "Zifake emanzini uhlambe uphole", + "Read": "Funda", + "Watch TV": "Bukela UMABONAKUDE", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali. Baliselanani:\n\nZiziphi izinto ezincinci ezikwenza wonwabe?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye.\n\nSisebenzise esi sakhono xa usekhaya kwaye sifumane nanini na kwi-@global.parent_centre yakho!", + "Reward": "Umvuzo", + "We all deserve to treat ourselves well!": "Sonke kufuneka sizivise kamnandi!", + "What small thing makes you happy?": "Yintoni encinci ekwenza wonwabe?", + "Nice! Taking care of yourself is an important parenting skill!": "Kuhle! Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali!", + "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_1 okanye nantoni na eyenye oyinandiphayo.", + "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_2 okanye nantoni na eyenye oyinandiphayo.", + "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_3 okanye nantoni na eyenye oyinandiphayo.", + "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_4 okanye nantoni na eyenye oyinandiphayo.", + "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_5 okanye nantoni na eyenye oyinandiphayo.", + "Things you can do to reward yourself:": "Izinto onokuzenza ukuze uzivuze:", + "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Fumana into yokuphunga\n* Fowunela umhlobo okanye isizalwana sakho \n* Ngena emanzini uhlambe uphole \n* Funda \n* Bukela UMABONAKUDE", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Namhlanje uya kufumana imisebenzi emi-3 enokukunceda ukwazi ukuzinyamekela, yaye siya kukubuza\nimibuzo embalwa ukuqinisekisa ukuba i-app ikulungele kusini.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Umsebenzi wokuphola\n* Umsebenzi wokuqonda\n* Umsebenzi womvuzo\n* Izixhobo: * Indlela yokongeza ukuzinyamekela\n* Vumelelanisa le app neemfuno zakho\n* Amacebiso asebenzisekayo ekhaya", + "Customise your @global.parent_app": "Vumelanisa i-@global.parent_appyakho", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Njengoko ngoku uye wakha ubuchule bokuzinyamekela, masiqinisekise ukuba i- @global.weekly_workshops yakho ikulungele.", + "You seem to have completed the customisation process already. You can now skip this activity.": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", + "RELAX": "PHOLA", + "Do a 30 second quick relaxation activity.": "Yenza umsebenzi oza kukupholisa okhawulezileyo wemizuzu engama-30.", + "Relax activity": "Umsebenzi wokuphola", + "RECOGNISE": "QAPHELA", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Nqumama kancinane uze ucinge ngento enye OYE wayenza kutshanje oye wayenza kakuhle! Yitsho ngokuvakalayo ukuba uyakwazi \"Ndenze kakuhle ngoku …\"", + "Recognise activity": "Umsebenzi wokuqaphela", + "REWARD": "UMVUZO", + "Remember you deserve your quality time too! What makes you happy?": "Khumbula ukuba ufanelwe lixesha lokuzimamela nawe! Yintoni ekwenza wonwabe?", + "Reward activity": "Umsebenzi womvuzo", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Wamkelekile! Kumnandi ukuba kunye nawe apha. Le veki INGAWE. \n\nKolu qeqesho lokukwamkela uya: \n* Kufumana izixhobo zokuzinyamekela \n* Vumelanisa le app neemfuno zakho", + "Wonderful, I am so happy things are going well.": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle.", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Uxolo ngokuba iimeko zinzima ngoku. Kuyinto eqhelekileyo ukuba usokole maxa wambi. Khumbula ukuba awukho wedwa!", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Fundisa abantwana bakho amanyathelo amane okusombulula iingxaki:\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE \n\nWasebenziseni kunye la manyathelo xa kuvela ingxaki!\n\nXa kusenzeka into embi, sidla ngokuba nomsindo size sizibeke ityala. Kodwa abantwana bethu abafikisayo bafuna umntu oza kubanceda bafumane izicombululo. Baphulaphule, yamkele indlela abazibona nabaziva ngayo izinto yaye babulele ngokukuthemba.\n\nUkufundisa umntwana wakho ofikisayo ngendlela yokuhlangabezana neengxaki kuya kumnceda ubomi bakhe bonke. Sisipho sokwenene!", + "Some problems other parents solved with their teens:": "Ezinye iingxaki eziye zaconjululwa ngabazali nabantwana babo abafikisayo:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Umntwana wam akafuni kuya esikolweni\n*Ndinexhala lokuba umntwana wam angakhulelwa okanye amithise umntu\n* Ndixhalabile ngezinto ezenziwa ngumntwana wam ofikisayo kwi-intanethi\n* Umntwana wam ofikisayo uncokola nabahlobo abangalunganga\n* Umntwana wam ofikisayo uyonqena\n* Umntwana wam ofikisayo akawenzi umsebenzi wakhe wesikolo\n* Kusenokwenzeka ukuba umntwana wam ofikisayo usebenzisa iziyobisi", "resolve problems with their teens": "basombulule iingxaki besebenzisana nabantwana babo abafikisayo", "resolve the problem with your teen": "sombulula ingxaki usebenzisana nomntwana wakho ofikisayo", "I forgot the steps of problem solving.": "Ndiwalibele amanyathelo okusombulula ingxaki.", @@ -1377,11 +1205,74 @@ "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Xa kuvela ingxaki, ngamanye amaxesha sonke siye sibe nomsindo okanye sibe noxinezeleko. Khumbula, ukuba xa uziva unomsindo okanye ucaphukile, ungathatha ikhefu ukuze likuncede uhlale uzolile uze usombulule ingxaki onayo.", "My teen got angry and did not want to talk about the problem.": "Umtwana wam ofikisayo uye wanomsindo kwaye khange afune ukuthetha ngengxaki.", "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Umntwana wakho unokunzinyelwa kukujongana nengxaki ngoko nangoko. Qaphela uze uyazi indlela avakalelwa ngayo, uze wenze ixesha kamva kwangolo suku okanye kuloo veki ukuze nithethe nize niyisombulule kunye ingxaki. Ngokwenza ixesha nomntwana wakho ofikisayo, ingxaki ingasonjululwa kakuhle.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele. Ucofe ku-@data.habit.breathe.in_text_title - usebenzile!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele.", - "How did this work out?": "Kuhambe njani oku?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Injongo yakho ibikukuthetha kunye nomntwana wakho ofikisayo malunga nendlela eniye navakalelwa ngayo kwimeko ebangela uxinezeleko.", - "How did this go?": "Ihambe njani le nto?", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Injongo yakho ibukukuzama ukusombulula ingxaki okanye ungquzulwano usebenzisana nomntwana wakho ofikisayo.", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Ntsapho nganye ijamelene nemiceli-mngeni kodwa xa sisebenza sonke singahlangabezana neengxaki ngendlela ephumelelayo nenoxolo. \n\nObunjani ukumangalisa ubuchule obunokufundwa ngumntwana wakho ofikisayo!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukusombulula ingxaki. \n\nSonke siyazi ukuba ebomini akhona amaxesha esikhe sijamelane neengxaki, yaye sonke siyazi ngandlel’ ithile ukuba xa sizifumana sikwezi meko, kunzima ukucinga ngezicombululo ezikhawulezileyo ezakhayo. \n\nNgenxa yoko, kubalulekile ukuba xa sijamelene neengxaki khe sime, sithathe umoya, sizole size sicinge ngobuchule bokusombulula iingxaki esinokubusebenzisa. \n\nKhumbula ukuquka abantwana bethu abafikisayo xa sicombulula iingxaki. Oku kuya kubanceda baqole baze bafunde indlela yokucombulula iingxaki zabo kwixesha elizayo.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Makhe siye ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe ukuze sibone ukuba beze naziphi izisombululo.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "u @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe beze nezisombululo ezithathu.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ukuba ngumzali kubantwana abafikisayo kunzima ngokwenene. \n\nAmaxesha amaninzi akukho zicombululo zilula, kodwa ngoku @global.w_solve_female_caregiver_1 ufunde ukuba angathetha nentombi yakhe ngezi zinto. \n\nNgaphambili, ebekade ezikhathaza yedwa, ngoku bangeza nezigqibo kunye!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Ngaba ukhe wawazama amanyathelo amane okusombulula ingxaki kunye nomntwana wakho ofikisayo? \n\nYAZI, YISOMBULULE, YIZAME, YIVAVANYE!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Ukuzimisela kwakho kulukhuthazo kuye wonke umntu. Qhubeka uzolile uze uqhubekeke!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Ukwindlela efanelekileyo yokuqalisa ukusombulula iingxaki kunye nomntwana wakho ofikisayo! \n\nGqiba i-@local.workshop_data.in_text_title uze uzuze esinye isakhono esibalulekileyo sokuba ngumzali!", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Ubomi, nokuba nabantwana abafikisayo, kuza neengxaki ezingalindelekanga kwaye kufuneka sijamelane nazo. \n\nQalisa uqeqesho olulandelayo uze ufunde indlela yokujamelana ngempumelelo nezi ngxaki.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ukwazi indlela yokusombulula iingxaki kunye kunganceda kwiimeko ezininzi!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luvuliwe ukuze lukuncede ugcine umntwana wakho ofikisayo ekhuselekile.", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Makhe sijonge oko kwenzekileyo ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe xa u @global.w_solve_teen_girl eye wafumana ifowuni kwinkwenkwe… ifowuni!", + "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyifumene kubani loo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 undithengele. Intle le fowuni, @global.w_solve_female_caregiver_1. Ithatha iifoto ezintle!”", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Andifuni kubona loo nto ibiza kangako! Ayilunganga laa nkwenkwe! Ucinga ukuba uza kumbuyekeza njani ngale nto?!” \n\n@global.w_solve_teen_girl: “Ayisebenzi ngolo hlobo, @global.w_solve_female_caregiver_1! Undidlel’ indlala!”", + "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Andifuni kuyiva loo nto!” \n\n@global.w_solve_teen_girl: “Awuzami nokundiphulaphula! Andazi noba bendiqalela ntoni ukuthetha nawe!”", + "Let’s see how problem solving works in practice.": "Makhe sibone indlela ukusombulula iingxaki okusebenza ngayo ngokoqobo.", + "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 uyagoduka uvela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacinga): \"Yhoo torho iinyawo zam! Kufuneka khe ndithi vu kancinci ndiphunge ikomityi yekofu ngaphambi kokuba ndiqalise ukuphekela wonke umntu.”", + "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani ntoni? Sisonka sedinala eso! Ngoku asizosanela sonke!\"", + "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2, bendilambile. Ndingacacisa, yazi, kukho omnye umfana wasesikolweni...” \n\n@global.w_solve_female_caregiver_2 (uyacinga): “Khawume Kancinci… khawukhokh' umoya…”", + "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Khawundiphe nje umzuzu. Ndidiniwe yaye ngoku ndizikhathaza ngokufumana ukutya okwaneleyo kwedinala.” \n\n@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2\"", + "Step 1: KNOW IT": "Inyathelo 1: YAZI", + "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: \"Ngoku khawundixelele, kutheni ulambe kangaka? Khange uwutye umphako wakho wasesikolweni?” \n\n@global.w_solve_teen_boy_2: Nantso ke ingxaki. Kukho umfana esikolweni ondintlontayo. Uthi ukuba andimniki umphako wam wasesikolweni suku ngalunye, yena nabahlobo bakhe baza kundonzakalisa. Uyandiphambanisa!”", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: \"Ndibuhlungu ukuva loo nto kodwa ndiyavuya undixelele, @global.w_solve_teen_boy_2. Loo nto ayithethi ukuba umele utye idinala yomntu wonke. Emva kokuba sithethile, kufuneka uyokuthenga esinye isonka evenkileni. Kodwa kuqala: Ucinga ukuba sifanele senze ntoni ngale ngxaki yokuntlontwa kwakho?\"\n\n@global.w_solve_teen_boy_2: \"Kaloku… Ndifuna ukumbetha okanye ndiziphindezele kuye.\"", + "Step 2: SOLVE IT": "Inyathelo 2: YISOMBULULE", + "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: \"Hmmm… ucinga ukuba kuya kwenzeka ntoni kuwe xa usenza loo nto?\"\n\n@global.w_solve_teen_boy_2: \"Andazi. Mkhulu kunam ngoko mhlawumbi uza kundonzakalisa ngakumbi. Yaye ndingasenkathazweni esikolweni ndize ndigxothwe.”", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Ewe, inokwenzeka loo nto. Yintoni esinokuyenza endaweni yaloo nto?\"\n\n@global.w_solve_teen_boy_2: “Mhlawumbi ndingaxelela utitshala. Kodwa abanye abantwana baza kuthi ndisisinyabi. Mhlawumbi ungathetha notitshala?”", + "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Kuvakala kulicebo elihle elo. Ndingakhe ndithethe nabazali bakhe ukuba ufuna ndenjenjalo.\"\n\n@global.w_solve_teen_boy_2: \"Kulungile. Ukuba ucinga ukuba nayo loo nto inganceda. Enkosi, @global.w_solve_female_caregiver_2\"", + "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: \"Ndingakwenzela nantoni na, mntanam. Ndiza kwenjenjalo emva kokuba sitye idinala. Futhi uyazi yintoni? Ukuba leyo ayisebenzi, singazama nenye into kunye.\":\n\n@global.w_solve_teen_boy_2: \"Enkosi, @global.w_solve_female_caregiver_2\"", + "Step 3: TRY IT": "Inyathelo 3: YIZAME", + "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Emva kweveki… \n\n@global.w_solve_female_caregiver_2: \"Izinto zihamba njani esikolweni ngoku?\"\n\n@global.w_solve_teen_boy_2: “Kubhetele noko, le nkwenkwe ayisawuthathi umphako wam wesikolo. Kodwa isekrwada kakhulu kum.”", + "Step 4: TEST IT": "Inyathelo 4: SIVAVANYE", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: \"Ndiyayixolisela ukuva loo nto, @global.w_solve_teen_boy_2. Ndingamcela umalume wakho ayokuthetha nabazali bayo? Ukuba leyo ayisebenzi, siya kuzama enye into!\"\n\n@global.w_solve_teen_boy_2: \"Ewe, enkosi @global.w_solve_female_caregiver_2. Noko ndiyazi ukuba ungakum.”", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Vala amehlo, utsale umoya, uze wazi ukuba yonke into oye wayenza ibaluleke kakhulu.", + "Ground @global.w_solve_teen_girl for a month": "Wohlwaye u@global.w_solve_teen_girl kangangenyanga", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Akuzi kuphuma kangangenyanga”", + "That didn’t work... Let's try something else.": "Loo nto ayikhange isebenze... Makhe sizame enye into.", + "Return the phone and save up": "Buyisa ifowuni ukuze wonge", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Andizami kutyhola umhlobo wakho okanye ukuba nomona. Ndikhathazwa kukuba xa umntu ekuphe isipho kunzima ukuthi ‘hayi’ xa efuna ukubhatalwa – njengokwabelana ngesondo. Ukuba ufuna ukuba nefowuni, siza konga sobabini ukuze ukwazi ukwenza izigqibo zakho ngaphandle kokumtyala into ethile.”", + "This is great! Try the third option as well.": "Kuhle! Zama nolunye ukhetho lwesithathu.", + "Learn about safe sex": "Funda ngokwabelana ngesondo okukhuselekileyo", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Oku kwenza ndiqonde ukuba simele sithethe ngamakhwenkwe nokuzikhusela. Abantwana abaninzi abafikisayo abalingana nawe bayakhulelwa okanye babe ne-HIV. Masiye ekliniki ukuze uthethe nomongikazi ukuze ubone indlela onokuhlala ngayo ukhuselekile.”", + "This is great!": "Kuhle!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nengxubusho – oko kusebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Ncokolani kunye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Usakhumbula u @global.w_solve_teen_girl nala fowuni ayifumene enkwenkweni?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", + "Take a few deep breaths to calm down, and": "Thatha umoya izihlandlo ezimbalwa ukuze uzole, yaye", + "KNOW IT": "YAZI", + "Identify the problem.": "Fumanisa ingxaki.", + "SOLVE IT": "YISOMBULULE", + "Think of possible solutions and what would happen if we used them.": "Cinga ngezisombululo ezinokubakho nokuthi kungenzeka ntoni ukuba sinokuzisebenzisa.", + "TRY IT": "SIZAME", + "Choose a solution and try it out.": "Khetha isisombululo uze usizame.", + "TEST IT": "SIVAVANYE", + "Did it work? Great! If it did not work, then try another solution.": "Ngaba sisebenzile? Kulunge kakhulu! Ukuba asikhange sisebenze, khawuzame esinye isisombululo.", + "Let's practice problem-solving!": "Makhe siqhelisele ukusombulula iingxaki!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Qheliselani kunye ngengxaki eninayo ngoku. Omnye kuni ngumzali aze omnye abe ngumntwana ofikisayo. \n\nNcomanani nize nikhuthazane - siyazidla ngani! \n\nUngawalibali la manyathelo: \nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", + "We care about you, and how life is treating you.": "Sikukhathalele, kunye nendlela ubomi obukuphatha ngayo.", + "You are a star. And you are making a real difference. Be proud of yourself.": "Uligqala. Yaye uyawenza umahluko. Zingce.", + "Sorry that things are not easy today. All parents have these days.": "Uxolo kuba izinto zingekho lula namhlanje. Iimini ezinje ziyabafikela bonke abazali.", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Ulugqibile uqeqesho lwale veki.\n\nKule veki izayo siza kuthetha ngemali - uya kudinga:\n* iphepha/ikhadbhodi\n* ipen\n* amatye amancinci angama-20/iimbotyi/iinkozo\n\nkuya kuba mnandi!", + "There are two home practices for this week.": "Kukho amaqheliselo amabini asekhaya kule veki.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe kahlanu ngaphambi kokuba usabele. \n\nYaye xa nobabini nizolile, chazela umntwana wakho ofikisayo indlela oziva ngayo.", + "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Ncokolani “ngoxolelo lokhuseleko” nomntwana wakho ofikisayo, yaye nobabini cingani ngemeko apho ninokuyisebenzisa khona lento.", + "Safety Amnesty Story": "Ibali Loxolelo Lokhuseleko", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Sihlandlo ngasinye unqumama ngaphambi kokuphendula, okanye nanini na usenza into ukuze ukhusele umntwana wakho ofikisayo, cofa i @global.parent_points uze ubhiyozele impumelelo yakho!", "Did you experience any of these challenges when sharing how you feel with your teen?": "Ngaba uye wahlangabezana nolunye lwale micelo-mngeni xa ubuthetha ngendlela ovakalelwa ngayo emntwaneni wakho ofikisayo?", "What was difficult for you about sharing how you feel with your teen?": "Yintoni ebikunzimela ngokuncokola nomntwana wakho ofikisayo ngendlela ovakalelwa ngayo?", "I was afraid my teen would think I was weak.": "Bendisoyikela ukuba umntwana wam uza kucinga ndibuthathaka.", @@ -1394,80 +1285,133 @@ "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Ukuthetha ngeemvakalelo kunceda umntwana wakho ofikisayo azazi aze afunde ukwenza into efanayo. Unokukhetha ukuba uza kumxelela iinkcukacha ezingakanani ngaloo meko. Kuxhomekeke kuwe! Unako nokukhetha ukuphendula imibuzo ngelinye ixesha ngokuthi, “Ndiziva ndinomsindo/ndixinezelekile ngoku. Ngaba ungandinika ixesha elingakumbi? Singathetha ngale nto ngale ngokuhlwa”.", "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Bendixinezeleke gqitha okanye ndinomsindo kakhulu ukuba ndingathetha ngeemvakalelo zam – ndithanda ukuba ndibe ndodwa xa ndivakalelwa ngalaa ndlela.", "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Kulungile ukuba awufuni kuthetha ngelo xesha. Fumana ixesha lokucacisa xa uziva uzolile ukuze wonke umntu akuqonde.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho ofikisayo enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya). Ucofe ku-@data.habit.consequence.in_text_title - wenze kakuhle ngokukhumbula oku!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya).", - "introduce a consequence together": "gqibani ngomphumo kunye", - "Did you have any challenges when trying to introduce a consequence together?": "Ngaba uye wanengxaki xa benizama ukugqiba ngomphumo kunye?", - "What was difficult for you about introducing a consequence with your teen?": "Yintoni ebinzima ekugqibeni ngomphumo kunye nomntwana wakho ofikisayo?", - "I got very angry when my teen broke the rule.": "Ndiye ndanomsindo kakhulu xa umntwana wam ofikisayo eye wophula umthetho.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Xa sinqumama ngaphambi kokuphendula, oko kusinceda sizole size siphendule bhetele. \n\nXa ephinda ekucaphukisa umntwana wakho ofikisayo, zama ukunqumama kuqala. Uthathe imimoya embalwa lonto ingenza umehluko omkhulu!", - "My teen got very angry with me after I gave the consequence.": "Umntwana wam ofikisayo uye wanomsindo kakhulu emva kokuba ndimnike umphumo.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Xa umntwana wakho ofikisayo esiba nomsindo, kusenokufuneka umshiye yedwa ude wehle umsindo kuni nobabini. \n\nHlola ukuba umphumo awufumanayo usengqiqweni kanye unobulungisa. Mamela umntwana wakho ofikisayo xa ecacisa uze uqinisekise ukuba kukho “Uxolelo kwimeko Yokhuseleko” ukuba akawuthobelanga umthetho kuba efuna ukukhuseleka.", - "I introduced the consequence without first discussing it with my teen.": "Ndiye ndathi kuza kubakho umphumo ndingakhange ndiqale ndithethe nomntwana wam ofikisayo malunga nalonto.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Ungakwazi ukuwusebenzisa lomphumo xa kusenzeka oku kwakhona? Xa sisithi kuza kubakho umphumo kwaye sibe sibabandakanyile abantwana bethu abafikisayo, umphumo uza kuba yinto enokwenzeka kwaye abantwana bethu abafikisayo baza kukufuna ngakumbi ukuthobela umthetho.", - "I forgot to follow through with the consequence.": "Ndiye ndalibala ukulandelela umphumo.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sonke siyazenza impazamo! Okukhona sibanika rhoqo imiphumo, kokukhona abantwana bethu beza kukhetha ukuziphatha kakuhle kwixesha elizayo.", - "Even with the consequence, my teen still does not follow the rule.": "Umntwana wam ofikisayo akawuthobeli umthetho, nokuba ndimnike umphumo.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Ukuba umntwana wakho ofikisayo usoloko esophula imithetho, kusenokufuneka uchithe ixesha kunye naye nisenza izinto ezikhuthazayo. \n\nZama ukungaziyeki ezinye injongo onazo – njengoku uzinyamekela, ubene xesha enilichitha kunye no kuncoma. Zonke ezi zakhono ziza kumnceda umntwana wakho ofikisayo azive ethandwa kwaye ekhuselekile... kwaye nawe ungaxinezelekanga kakhulu!", - "We only created a negative consequence, not a positive consequence.": "Siye sabano mphumo ombi, bekungekho mphumo okhuthazayo.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ngamanye amaxesha kuba nzima ukucinga ngemiphumo ekhuthazayo. Imiphumo ekhuthazayo iza kumkhuthaza umntwana wakho kuba azoziva enoxanduva kwaye uza kuwubona umehluko!", - "My teen suggested being hit as a negative consequence.": "Umntwana wam ofikisayo ucebise ukuba umphumo ongathandekiyo ibe kukubethwa.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Abantwana abafikisayo basenokucinga ukuba ukubethwa nguwo kuphela umphumo ongathandekiyo abanokuwufumana xa bophule imithetho. \n\nCingani ngemiphumo engena budlobongela kunye nabo enoku banceda baqonde ukuba benze into ephosakeleyo. Iza kusebenza ngcono kwaye iza kumisela imizekelo ekhuthazayo!", - "Your goal was to make ONE rule with your teen this week.": "Injongo yakho ibikukubekela umntwana wakho ofikisayo umthetho OMNYE kule veki.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Usebenzile ngokwenza le nto! Akululanga kwaye abantwana abafikisayo abazusoloko beyithobela imithetho, kodwa ukubeka imithetho ebalulekileyo yindlela entle yokuqalisa. Zincome ngokwenza oku - siyazingca ngawe!", - "make rules with their teens": "yenza imithetho kunye nabantwana bakho abafikisayo", - "Did you have any challenges when trying to make a rule together?": "Ngaba uye wanengxaki xa benizama ukwenza umthetho kunye?", - "What was difficult for you about making a rule with your teen?": "Yintoni ebinzima ngokubeka umthetho kunye nomntwana wakho ofikisayo?", - "My teen and I could not agree on a rule.": "Mna nomntwana wam khange sikwazi ukuvumelana ngomthetho.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Cinga enoba lo mthetho usengqiqweni. Ngaba umntwana wakho angakwazi ukuwuthobela? Xa nisenza umthetho njengentsapho, kuyanceda ukucinga ngomntwana wakho ofikisayo, mingaphi iminyaka yakhe, kunye nezinto ezibalulekileyo kuye.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Umntwana wam ebevakalelwa kukuba akulunganga ukuba kufuneke athobele umthetho ngoxa kungafuneki ndiwuthobele mna.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Simele sisoloko sikhumbula ukuba abantwana bafunda kakuhle kumzekelo wethu. Okukhona sithobela imithetho, kokukhona nabo beza kuyilandela. \n\nUnokuwutshintsha umthetho ukuze uqinisekise ukuba unokuthotyelwa, ucinga ngeembopheleleko onazo kunye nezomntwana wakho ofikisayo (ngokomzekelo, izinto ezenziwa esikolweni okanye emsebenzini).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ndiye ndaziva ndingakhululekanga ngenxa yokuba ndivakalelwa kukuba ndim omele ukuba ubeka umthetho kungekhona umntwana wam ofikisayo.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Iqabane lam liye laziva lingakhululekanga, ngenxa yokuba livakalelwa kukuba lilo elimele ukuba libeka umthetho, kungekhona umntwana ofikisayo.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Xa sibeka imithetho sisebenzisana kunye nabantwana bethu abafikisayo, loo nto inceda ukuba abantu abakwintsapho baqondane. Imithetho iza kulungela wonke umntu kwaye abantwana bethu abafikisayo baza kufuna ngakumbi baze bakwazi ukuyithobela.", - "When we tried to set a rule, we got into an argument.": "Xa besizama ukubeka umthetho, siye saxabana.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Ngaba ebekwimeko entle umntwana wakho ofikisayo xa benibeka umthetho? Kuhle ukubeka imithetho xa imeko izolile. Ukuba wena okanye umntwana wakho nidiniwe okanye nilambile, kungcono ukuthetha ngemithetho ngelinye ixesha.", - "We were not able to stick to the rule.": "Khange sikwazi ukuwuthobela umthetho.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Umthetho kufuneka ungqale uze ube ngonokuthotyelwa. Qinisekisa ukuba umthetho obekwayo unokugcinwa ngokulula, njengokutya isidlo kunye qho ngeCawa endaweni yokwenza oko ngazo zonke iingokuhlwa. Ngaba kufuneka ububhetyebhetye kulo mthetho?", - "Mother": "Mama", - "Father": "Tata", - "TikTok": "I-TikTok", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele.", + "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Injongo yakho ibikukuthetha kunye nomntwana wakho ofikisayo malunga nendlela eniye navakalelwa ngayo kwimeko ebangela uxinezeleko.", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Siyazi ukuba kunzima kangakanani ukukhulisa abantwana abafikisayo kula maxesha. Ukufunda ukulawula uxinezeleko lwakho kunceda wena - nentsapho yakho.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje uphathelele ukulawula uxinezeleko. \n\nKubalulekile ukwazi indlela yokulawula uxinezeleko lwethu. Maxa wambi abantwana bethu bangaziphatha ngeendlela ezinokusenza sizive sixinezelekile yaye nathi bazali sinokwenza abantwana bazive bexinezelekile. \n\nNgoko, kubalulekile ukuphawula xa siziva sixinezelekile size sime kancinci size sithathe umoya. Loo nto iya kukunceda ulawule uxinezeleko.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Unjani umlinganiselo woxinezeleko lwakho kule veki? Zama ukutsala umoya kambalwa ngaphambi kokuba usabele kumntwana wakho ofikisayo - kwenza umahluko omkhulu.", + "Well done!": "Usebenzile!", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Usebenzile ngokutsala umoya ngaphambi kokusabela kumntwana wakho ofikisayo! Qho xa usenza unqumamo, uye ukwazi ukuzibamba.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala? Usebenzile ngokuqonda indlela wena kunye nabanye abantu enivakalelwe ngayo namhlanje! Ungalibali ukuba ngomso, lusuku olutsha kraca.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Sonke sikhe sizive ngathi izinto ziyasongamela ngamanye amaxesha. Ukutsala umoya kuyanceda! \n\nGqiba i-@local.workshop_data.in_text_title ukuze ufumane izixhobo eziluncedo ngendlela yokujamelana noxinezeleko.", + "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Sinoqeqesho olutsha olumalunga nokulawula umsindo kunye noxinezeleko. Luza kukunceda uzinyamekele.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nNgokugqiba i@local.workshop_data.in_text_title kuqala, ubeka isiseko esibaluleke ngokwenene: Ukuba uziva kamnandi, usapho lwakho luyokwenza ngcono nalo!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha ekunceda uphole uze wakhe izakhono ezixabisekileyo!", + "Let's think about what happened in this story.": "Makhe sicinge ngoko kwenzekileyo kweli bali.", + "How do you think @global.w_stress_teen_boy_1 felt?": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani?", + "And @global.w_stress_male_caregiver?": "Yaye @global.w_stress_male_caregiver?", + "And @global.w_stress_girl?": "Yaye @global.w_stress_girl?", + "Sad": "Ulusizi", + "Scared": "Uyoyika", + "Confused": "Ubhidekile", + "Angry": "Unomsindo", + "Each of them was feeling upset for their own reason!": "Ngamnye kubo ebecaphuka ngezizathu zakhe!", + "What could @global.w_stress_male_caregiver have done differently?": "Yintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", + "Recognise why he feels stressed": "Hlola ukuba kutheni eziva exinezelekile", + "Take a deep breath and speak calmly": "Khawuthathe umoya uze uthethe ngokuzolileyo", + "Show he understands his teen’s feelings": "Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo", + "Think about solutions together with @global.w_stress_teen_boy_1": "Cinga ngezisombululo kunye @global.w_stress_teen_boy_1", + "Do something positive together with @global.w_stress_teen_boy_1": "Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Makhe sijonge indlela uxinezeleko olunokuthi maxa wambi lube ngaphaya kwamandla, kuthi sonke:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver: “Khawundiyeke uhoye iindaba zakho!”", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: Ndenze ntoni? Awundimameli!” \n\n@global.w_stress_male_caregiver: “Ndithe ndiyeke okanye ndiza kukubetha!”", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Jonga! Ndenze indlu!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Bukhathalelwe ngubani ububhanxa bendlu yakho!”", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Enkosi ngokucinga ngolu hlobo! Makhe sibuyele umva size sibone ukuba u @global.w_stress_male_caregiver wenza ntoni ngoku:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver uphelelwe ngumsebenzi. Ebehleli endlini eziva ekhathazekile yaye exinezelekile, ukungena kuka @global.w_stress_teen_boy_1.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver (uyaphefumla): “Uxolo nyana wam. Bendinemini embi namhlanje. Umqeshi wam undigxothile.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Yhoo! Ndicela iyunifom entsha.” \n\n@global.w_stress_male_caregiver: “Ndiza kuzama nyana, Yaye umsebenzi ka @global.w_stress_female_caregiveruza kusithwala logama ndisakhangela omnye umsebenzi.”", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Nam ndingakuncedisa ukukhangela umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Hayi akunangxaki, @global.w_stress_teen_boy_1. Ndiyakuxabisa ukulungela kwakho ukunceda. Eyona nto ibalulekileyo kukuba usebenze nzima esikolweni. Enkosi ngokundiphulaphula.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Masidlale kunye ibhola. Kuza kundinceda ndikhuphe olu xinezeleko engqondweni okwethutyana.” \n\n@global.w_stress_teen_boy_1: \"Kulungile, @global.w_stress_male_caregiver!\"", + "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Kube bhetele kakhulu! \n\nUkuma kancinci kukunceda uzole xa uziva unomsindo okanye uxinezelekile. Yizame, uza kubona!", + "Safety Amnesty": "Uxolelo Lokhuseleko", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Khumbula ngokuya wawungumntwana ofikisayo. \n\nNgaba wakha wasengozini kodwa wabe ungenakuxelela intsapho yakowenu ngenxa yokuba iza kuba nomsindo?\n\nOku KUPHANTSE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Makhe sijonge:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: \"Ungabaxeleli abantu abadala, kodwa ndiya ebharini nabahlobo bam ngokuhlwanje\" \n\n@global.w_stress_teen_girl: “Yonwaba! Ndibaxelele ukuba ndiza kuhlala nentombi engumhlobo wam, kodwa eneneni ndiya epatini”", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: \"Ndicinga ukuba basebenzisa iziyobisi. Singabanjwa sonke. Kodwa andinakubaxelela abazali bam – baya kuba nomsindo kakhulu\"", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ndiyoyika. Wonke umntu unxile kakhulu ukuba angandigodusa. Le nkwenkwe ithi ingandigodusa kodwa ifuna ndiqale kowayo. Andinakubaxelela abazali bam - ndibaxokisile ngokuza kule pati.”", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Ezi zimeko eziyingozi! Okuvuyisayo kukuba, u @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl bakhumbula oko u @global.w_stress_parent wabaxelela kona: \n\n\"Ndilukhathalele ukhuseleko lwakho ngaphezu kwayo nantoni na. Ukuba uye wacaphuka, okanye woyika, ungaqhagamshelana nam ukuze ndikuncede, okanye undixelele ngayo. \n\nVele uthi ‘UXOLELO LOKHUSELEKO’. Ndiyathembisa ukuba ndiza kwenza unako nako ukukunceda yaye andizokucaphuka – kwanokuba wenza into obungamele uyenze.\"", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, Luxolelo lokhuseleko. Ngaba ungeza uzokundithatha? Ndiyidinga ngokwenene into egodukayo.”", + "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, uxolelo lokhuseleko Ndicinga ukuba abahlobo bam basengxakini. Andifuni kuyeka ukuba ngumhlobo wabo, kodwa ndikhathazekile. Ngaba singathetha?\"", + "This is fantastic, especially in such difficult times as this. You are a star.": "Oku kubalasele, ingakumbi ngamaxesha anzima njengala. Uligqala.", + "Today you will explore:": "Namhlanje uza kuhlola:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengxubusho – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengcinga – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "Let's discuss what happened in this story.": "Makhe sincokole ngento eyenzekileyo kweli bali.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani? Kunye ne @global.w_stress_male_caregiver? Yaye @global.w_stress_girl?\n\nYintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver unako...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Qonda ukuba kutheni eziva exinezelekile \n* Khawuthathe umoya uze uthethe ngokuzolileyo \n* Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo \n* Cingani ngezisombulullo kunye @global.w_stress_teen_boy_1\n* Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", + "BREATHE. Slowly. Pause.": "PHEFUMLA. Ngokucothayo. Yima.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Ngaphambi kokuba uthethe nantoni na, ngokucothayo tsala umoya uphinde uwukhuphe izihlandlo ezintlanu. Loo nto iya kukwenza uzole, ize ikunike ithuba lokucinga.", + "SHARE how you feel": "CHAZA indlela ovakalelwa ngayo", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Inzima le nto. Uninzi lwethu lufundiswe ukuba lungakhali, okanye lubonise abantwana indlela esivakalelwa ngayo. Kodwa thatha umoya uze ngokuzolileyo ubachazele indlela ovakalelwa ngayo. Baya kuqonda bhetele, baze bafunde kuwe indlela yokuhlangabezana noxinezeleko.", + "SHOW them you care": "BABONISE ukuba uyakhathala", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Inzima nale! Uxinezeleko lubangela ukuba sinikele ingqalelo kwiziqu zethu. Kodwa abantwana bethu abafikisayo bayayidinga inkxaso yethu. Babuze indlela abaziva ngayo. Baphulaphule uze ubathuthuzele. Zama ukubawola okanye uthi ‘Ndiyaqonda’. Ingatshintsha yonke into.", + "SEEK the positive": "KHANGELA izinto ezakhayo", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Ngaba wena nomntwana wakho ofikisayo ningacinga ngezinto ezinokuba luncedo? Ngaba nobabini ningenza okuthile okwakhayo ukuze nisuse iingqondo zenu kuxinezeleko?", + "If all else fails, breathe. You can do this.": "Ukuba yonke loo nto iyasilela, phefumla. Ungakwenza oku.", + "Looking after yourself matters.": "Ukuzinyamekela kubalulekile.", + "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Kulunge kakhulu! Kuhle kakhulu ukuva ukuba ukwimeko entle namhlanje. Enjani ukumangalisa imvakalelo!", + "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Maxa wambi izinto zihamba kakuhle. Maxa wambi akubi njalo. Yaye maxa wambi asiye sazi ukuba masicinge ntoni... yaye oko kulunge ngokupheleleyo! Khumbula ukuba awukho wedwa.", + "My Favourite Activities": "Imisebenzi Endiyithandayo", + "All Activities": "Yonke Imisebenzi", + "Random Activity": "Umsebenzi Ongacwangciswanga", + "This Week's Activity": "Umsebenzi wale veki", + "Chat Together": "Ncokolani Kunye", + "Do Together": "Yenzani Kunye", + "Your @global.parent_app Code": "Ikhowudi yakho ye@global.parent_app", + "Terms & Conditions": "Imimmiselo nemiqathango", + "Privacy Policy": "Umthetho Wabucala", + "Real-world ideas": "Iingcamango Zehlabathi lokwenene", + "Ideas": "Iingcamango", + "Ideas from other families...": "Amacebiso avela kwezinye iintsapho...", + "Challenges & solutions": "Imicelimingeni nezisombululo", + "Submit": "Ngenisa", + "Find out more": "Fumana okungakumbi", + "Show me how": "Ndibonise ukuba kwenziwa njani", + "Tell me more!": "Ndixelele okungakumbi!", + "Let's go!": "Masiye!", + "Check it out!": "Yijonge!", + "Done": "Kugqityiwe", + "Next": "Elandelayo", + "Previous": "Edluleyo", + "Save": "Gcina", + "Skip": "Tsiba", + "Continue": "Qhubeka", + "Finish with a song": "Gqibezela nge ngoma", + "Goodbye!": "Sala kakuhle!", + "No gadget use the next day": "Makungasetyenziswa sixhobo kusuku olulandelayo", + "Take 5 minutes pause in separate part of the room": "Yima kangangemizuzu emi-5 kwinxalenye eyahlukileyo yegumbi", + "Write a letter of apology": "Bhala ileta yokuxolisa", + "Cannot see friends the next day": "Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo", + "Cannot play with phone after dinner (or next hour)": "Aninakudlala ngefowuni emva kwedinala (okanye kwiyure elandelayo)", + "Extra time with friends on weekend (1hr)": "Ixesha elithe chatha nabahlobo ngempelaveki (iyure e-1)", + "Cooking teen’s favourite meal": "Ukupheka ukutya okuthandwa ngumntu ofikisayo", + "Extra time with phone after dinner (30 min)": "Ixesha elithe chatha nefowuni emva kwedinala (imizuzu engama-30)", + "Watching teen’s T.V. show together": "Ukubukela kunye uhlelo lomntu ofikisayo KUMABONAKUDE", + "Extra one-on-one time on Sunday (30 min)": "Ixesha elongezelelkileyo lenu nobabini ngeCawa (imizuzu engama-30)", + "Take a deep breath and pause before responding": "Tsala umoya kakhulu uze unqumame ngaphambi kokuphendula", + "Listen to your teen": "Mphulaphule umntwana wakho ofikisayo", + "Praise your teen for sharing": "Mncome umntwana wakho ngokubalisa", + "Use problem solving skills": "Sebenzisa ubuchule bokusombulula iingxaki", + "Work out where you can get help": "Khangela apho unokufumana khona uncedo", "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Ukubukela levidiyo kufuna ufikelelo lweintanethi. Ukulinganisela usetyenziso lwedatha, bukela okanye udawnlowude le vidiyo xa ukwi WiFi.", "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ukutyelela ezi webhsayithi kufuna ufikelelo lwe-intanethii. Ukuze ulinganisele usetyenziso lwedatha, tyelela ezi webhsayithi xa ukwi WiFi.", "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Ukuthumela lo myalezo kufuna ufikelelo lweintanethi. Ukuze ulinganisele usetyenziso lwedatha, thumela umyalezo xa ukwi WiFi.", - "COVID": "I-COVID", - "Welcome and Self-Care": "Ukwamkela Nokuzinyamekela", - "Self-Care": "Ukuzinyamekela", - "How to add self-care": "Indlela yokongeza ukuzinyamekela", - "One-on-One Time": "Ixesha Lenu Nobabini", - "How to spend one-on-one time": "Indlela yokuchitha ixesha lenu nobabini", - "Praise": "Ncoma", - "How to praise": "Indlela yokuncoma", - "Positive Instructions": "Imiyalelo Eyakhayo", - "How to give positive instructions": "Indlela yokunika imiyalelo eyakhayo", - "Managing Stress": "Ukulawula Uxinezeleko", - "How to manage stress": "Indlela yokulawula uxinezeleko", - "Family Budgets": "Iibhajethi Yentsapho", - "How to budget & save": "Indlela yokubhajetha nokonga", - "Rules": "Imigaqo", - "How to create rules": "Indlela yokuyila imigaqo", - "Calm Consequences": "Imiphumo Ezolileyo", - "How to give calm consequences": "Indlela yokunika imiphumo ezolileyo", - "Problem Solving": "Ukucombulula Iingxaki", - "How to solve problems": "Indlela yokusombulula iingxaki", - "Teen Safety": "Ukhuseleko Lwabantwana Abafikisayo", - "How to keep your teen safe": "Indlela yokugcina umntwana wakho ofikisayo ekhuselekile", - "Dealing with Crisis": "Ukuhlangabezana Neengxaki", - "How to deal with crisis": "Indlela yokuhlangabezana neengxaki", - "Celebration and Next Steps": "Ukubhiyoza kunye namaNyathelo Alandelayo", - "How to support each other": "Indlela yokuxhasana", - "Talk about @global.home_practice": "Thetha nge @global.home_practice", - "Home Practice Review": "Uhlalutyo Loqheliselo Lwasekhaya", - "Let's talk about how your home practice went this week.": "Kule veki, masithethe ngokuba luhambe njani uqheliselo lwasekhaya.", - "In my group": "Kwiqela lam", - "By myself": "Ngokwam", - "awesome parent": "umzali ogqwesileyo", - "friends": "abahlobo", + "Severe illness or death of a friend or family member": "Ukugula okumandla okanye ukufa komhlobo okanye ilungu lentsapho", + "Robbery": "Ukukhuthuzwa", + "Flooding": "Izikhukula", + "Political violence": "Ugonyamelo lwezopolitiko", + "Losing my job": "Ukuphelelwa ngumsebenzi", + "Pandemic (COVID-19)": "Ubhubhani (lwe-COVID-19)", + "ParentApp": "I-app Yomzali", + "Weekly Workshops": "Uqeqesho Lwangeveki", + "Weekly Workshop": "Uqeqesho Lweveki", + "Weekly Workshop Options": "Ukhetho Loqeqesho Lwangeveki", + "ParentPoints": "Iingongoma Zomzali", + "ParentPoint": "Ingongoma Yomzali", + "Parent Library": "ILayibrari yoMzali", + "To solve this challenge, I will try to:": "Ukuze ucombulule olu celo-mngeni, Ndiya kuzama uku:", + "My challenge is not listed here.": "Ucelo-mngeni lwam aludweliswanga apha.", "New workshop ready tomorrow!": "Uqeqesha lwakho olutsha lwangomso sele lulungile!", "New workshop!": "Uqeqesho olutsha!", "Workshop Reminder": "Isikhumbuzo Socweyo", @@ -1477,36 +1421,7 @@ "Something Fun": "Into Eyonwabiswayo", "Your @global.parent_points this week": "I-@global.parent_points yakho kule veki", "Home Practice Reminder": "Isikhumbuzo Soqheliselo Lwasekhaya", - "To solve this challenge, I will try to:": "Ukuze ucombulule olu celo-mngeni, Ndiya kuzama uku:", - "My challenge is not listed here.": "Ucelo-mngeni lwam aludweliswanga apha.", - "ParentApp": "I-app Yomzali", - "Weekly Workshops": "Uqeqesho Lwangeveki", - "Weekly Workshop": "Uqeqesho Lweveki", - "Weekly Workshop Options": "Ukhetho Loqeqesho Lwangeveki", - "ParentPoints": "Iingongoma Zomzali", - "ParentPoint": "Ingongoma Yomzali", - "Parent Library": "ILayibrari yoMzali", - "Real-world ideas": "Iingcamango Zehlabathi lokwenene", - "Ideas": "Iingcamango", - "Ideas from other families...": "Amacebiso avela kwezinye iintsapho...", - "Challenges & solutions": "Imicelimingeni nezisombululo", - "Submit": "Ngenisa", - "Find out more": "Fumana okungakumbi", - "Show me how": "Ndibonise ukuba kwenziwa njani", - "Tell me more!": "Ndixelele okungakumbi!", - "Let's go!": "Masiye!", - "Check it out!": "Yijonge!", - "Done": "Kugqityiwe", - "Next": "Elandelayo", - "Previous": "Edluleyo", - "Save": "Gcina", - "Skip": "Tsiba", - "Continue": "Qhubeka", - "Finish with a song": "Gqibezela nge ngoma", - "Goodbye!": "Sala kakuhle!", - "Your @global.parent_app Code": "Ikhowudi yakho ye@global.parent_app", - "Terms & Conditions": "Imimmiselo nemiqathango", - "Privacy Policy": "Umthetho Wabucala", + "COVID": "I-COVID", "Make me smile": "Ndenze ndincume", "Get me going": "Ndenze ndiqhubeke", "My Favourite Relaxes": "Ukuphola Okuthandayo", @@ -1516,16 +1431,14 @@ "Listen & Relax (1-2 minutes)": "Phulaphula uze Uphole (imizuzu 1-2)", "Listen & Relax (3-5 minutes)": "Phulaphula uze Uphole (imizuzu 3-5)", "Do & Relax (5-10 minutes)": "Yenza uze Uphole (imizuzu 5-10)", - "My Favourite Activities": "Imisebenzi Endiyithandayo", - "All Activities": "Yonke Imisebenzi", - "Random Activity": "Umsebenzi Ongacwangciswanga", - "This Week's Activity": "Umsebenzi wale veki", - "Chat Together": "Ncokolani Kunye", - "Do Together": "Yenzani Kunye", - "Tap and type": "Cofa uze uchwetheze", - "Tap and choose": "Cofa uze ukhethe", - "Type your own": "Chwetheza eyakho", - "I've understood this. Don't show me this message again.": "Ndiye ndakuqonda oku. Ungawubonisi lo myalezo kwakhona.", + "At home": "Ekhaya", + "Buy things we can sell": "Ukuthenga izinto esinokuzithengisa", + "At a bank": "Ebhankini", + "In a savings group": "Kumaqela okonga", + "Teens completing school/university": "Abantwana abafikisayo abagqibezela isikolo/idyunivesithi", + "Building/expanding a house for my family": "Ukwakha/ukwandisa indlu yentsapho yam", + "Starting a business": "Ukuqalisa ishishini", + "Buying a car for my family": "Ukuthengela usapho lwam imoto", "Walk to the shops": "Ukolula iinyawo niye ezivenkileni", "Get water together": "Yiyani kukha amanzi kunye", "Do a chore together": "Yenzani umsebenzi kunye", @@ -1536,41 +1449,18 @@ "Review homework": "Hlolani umsebenzi wesikolo", "Chat before bedtime": "Ncokolani ngaphambi kokulala", "Play a game/sport": "Dlalani umdlalo", - "Teens completing school/university": "Abantwana abafikisayo abagqibezela isikolo/idyunivesithi", - "Building/expanding a house for my family": "Ukwakha/ukwandisa indlu yentsapho yam", - "Starting a business": "Ukuqalisa ishishini", - "Buying a car for my family": "Ukuthengela usapho lwam imoto", - "Severe illness or death of a friend or family member": "Ukugula okumandla okanye ukufa komhlobo okanye ilungu lentsapho", - "Robbery": "Ukukhuthuzwa", - "Flooding": "Izikhukula", - "Political violence": "Ugonyamelo lwezopolitiko", - "Losing my job": "Ukuphelelwa ngumsebenzi", - "Pandemic (COVID-19)": "Ubhubhani (lwe-COVID-19)", - "At home": "Ekhaya", - "Buy things we can sell": "Ukuthenga izinto esinokuzithengisa", - "At a bank": "Ebhankini", - "In a savings group": "Kumaqela okonga", - "No gadget use the next day": "Makungasetyenziswa sixhobo kusuku olulandelayo", - "Take 5 minutes pause in separate part of the room": "Yima kangangemizuzu emi-5 kwinxalenye eyahlukileyo yegumbi", - "Write a letter of apology": "Bhala ileta yokuxolisa", - "Cannot see friends the next day": "Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo", - "Cannot play with phone after dinner (or next hour)": "Aninakudlala ngefowuni emva kwedinala (okanye kwiyure elandelayo)", - "Extra time with friends on weekend (1hr)": "Ixesha elithe chatha nabahlobo ngempelaveki (iyure e-1)", - "Cooking teen’s favourite meal": "Ukupheka ukutya okuthandwa ngumntu ofikisayo", - "Extra time with phone after dinner (30 min)": "Ixesha elithe chatha nefowuni emva kwedinala (imizuzu engama-30)", - "Watching teen’s T.V. show together": "Ukubukela kunye uhlelo lomntu ofikisayo KUMABONAKUDE", - "Extra one-on-one time on Sunday (30 min)": "Ixesha elongezelelkileyo lenu nobabini ngeCawa (imizuzu engama-30)", - "Take a deep breath and pause before responding": "Tsala umoya kakhulu uze unqumame ngaphambi kokuphendula", - "Listen to your teen": "Mphulaphule umntwana wakho ofikisayo", - "Praise your teen for sharing": "Mncome umntwana wakho ngokubalisa", - "Use problem solving skills": "Sebenzisa ubuchule bokusombulula iingxaki", - "Work out where you can get help": "Khangela apho unokufumana khona uncedo", + "Tap and type": "Cofa uze uchwetheze", + "Tap and choose": "Cofa uze ukhethe", + "Type your own": "Chwetheza eyakho", + "I've understood this. Don't show me this message again.": "Ndiye ndakuqonda oku. Ungawubonisi lo myalezo kwakhona.", + "Talk about @global.home_practice": "Thetha nge @global.home_practice", + "Home Practice Review": "Uhlalutyo Loqheliselo Lwasekhaya", + "Let's talk about how your home practice went this week.": "Kule veki, masithethe ngokuba luhambe njani uqheliselo lwasekhaya.", + "In my group": "Kwiqela lam", + "By myself": "Ngokwam", + "awesome parent": "umzali ogqwesileyo", + "friends": "abahlobo", "Welcome to @global.parent_app": "Wamkelekile ku @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Wamkelekile ku @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Uyakufanelekela ukuziva kamnandi, uze ube nolwalamano oluhle nentsapho yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app uya kukuxhasa wena nentsapho yakho ngeendlela ezintathu:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Eli qhosha likhulu liya kukusa kwi @global.weekly_workshopsyakho

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kanye ngeveki uqeqesho olutsha luya kukulindela - ngalo lonke ixesha unikela ingqalelo kubugcisa obahlukileyo bokuba ngumzali. Yicofe ukuze uqalise uqeqesho lwakho lokuqala!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Iqhosha elisisangqa livela xa i @global.weekly_workshop entsha ilungele ukuba uyenze.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Cofa eli qhosha likhulu ukuze uye kufika kwiskrini sakho se- @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Khangela impumelelo yakho ekuzinyamekeleni nasebuzalini.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona inkqubela yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bhiyozela izinto ozifezileyo ngosuku!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Noba uqale njani, isibakala sokuba ukhona sibonisa ukuba uyakhathala.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Yiya kwi @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Cofa eli qhosha kwiskrini esiphezulu ukuze uye kwi @global.weekly_workshops

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Yiya kwi @global.weekly_workshop_options", @@ -1581,55 +1471,6 @@ "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Oku kubonisa i @global.weekly_workshop okuyo ngoku.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ungatshintsha apha enoba nifuna ukwenza i @global.weekly_workshops yenu njengeqela okanye wedwa.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Cofa apha ukuze utshintshe igama leqela.

                                                                                                                                                                                  ", - "Welcome to ParentApp. Click here to start your journey!": "Wamkelekile kwiApp Yomzali. Cofa apha ukuze uqalise uhambo lwakho!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Ndiyathemba uziva bhetele. Ukuba ngumzali kunzima, kodwa awukashiywa lixesha lokuphinda uqalise nomntwana wakho ofikisayo. Uqeqesho lwakho lokuba ngumzali lulinde wena! Cofa apha ukuze uqalise uhambo lwakho lweApp Yomzali!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukukunceda ulawule uxinezeleko lokuba ngumzali.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Molo kwakhona! Awukashiywa lixesha lokusebenzisa i-App yoMzali uze ufumane inkxaso efanele wena yokuba ngumzali. Kutheni ungakhe uyizame xa usiya emsebenzini okanye xa usapheke ukutya? Izigidi zabazali ziye zafumanisa izixhobo zethu ziluncedo.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukukunceda ulawule isimilo somntwana wakho ofikisayo.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Molo! Ngaba yonke into ihamba KAKUHLE? Kubonakala ngathi khange uyivule iApp Yomzali kutshanje. Kutheni ungakhe uyizame? Izigidi zabazali zIye zafumanisa ezi zixhobo ziluncedo. Sisekhona ukuze sikuxhase.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "I-App yoMzali iyakukhumbuza! Kuninzi omele ukuhlole. Sisekhona ukuze sikuxhase.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali - sebenzisa iApp yoMzali ukulungiselela umntwana wakho ofikisayo ukuba aphumelele ebomini.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukuze uphinde usondelelane nomntwana wakho ofikisayo kwakhona!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Molo mzali ogqwesileyo, khumbula ukuzinakekela nawe - izokunceda KWAYE nosapho lwakho! Fumana iingcebiso nezingakumbi Kwi-app Yomzali.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Molo mzali ogqwesileyo! Khumbula, ungafumana iingcebiso eziluncedo Kwi-app Yomzali.", - "New message from PLH": "Umyalezo omtsha ovela kwi-PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Molo mzali ogqwesileyo! I-app Yomzali ilapha ukukuxhasa. Yijonge!", - "**Welcome and Self-Care** workshop": "Uqeqesho **lokwamkela Nokuzinyamekela**", - "How to do self-care": "Indlela yokuzikhathalela", - "**One-on-One Time** workshop": "Ucweyo **lwexesha lenu nobabini**", - "**Praise** workshop": "Uqeqesho **lokuzincoma**", - "**Positive Instructions** workshop": "Uqeqesho **Lwemiyalelo Eyakhayo**", - "**Managing Stress** workshop": "Uqeqesho **lokulawula Uxinezeleko**", - "**Family Budgets** workshop": "Uqeqesho **Lwebhajethi Yentsapho**", - "**Rules** workshop": "Uqeqesho **Umthetho**", - "**Calm Consequences** workshop": "Uqeqesho **Imiphumo Ezolileyo**", - "**Problem Solving** workshop": "Uqeqesho **Ukucombulula Iingxaki**", - "**Teen Safety** workshop": "Uqeqesho **Ukhuseleko Lwabantwana Abafikisayo**", - "**Dealing with Crisis** workshop": "Uqeqesho **Ukuhlangabezana Neengxaki**", - "**Celebration and Next Steps** workshop": "Uqeqesho **Lokubhiyoza kunye Namanyathelo Alandelayo**", - "Quick pause": "Ukunqumama okukhawulezileyo", - "Power of three": "Amandla abantu abathathu", - "One thing today": "Into enye namhlanje", - "Breathe to three": "Phefumla kathathu", - "In and out": "Tsala uze ukhuphe", - "Think about today": "Cinga ngemini yanamhlanje", - "Pause to respond": "Nqumama ukuze uphendule", - "Small things": "Izinto ezincinci", - "Body scan": "Iskena somzimba", - "Feel the ground": "Yiva umhlaba", - "Counting sounds": "Ukubala izandi", - "Feel your feeling": "Yiva indlela ovakalelwa ngayo", - "Your song": "Ingoma yakho", - "Ground & gratitude": "Umhlaba nombulelo", - "Notice how you feel": "Phawula indlela ovakalelwa ngayo", - "Pause power": "Amandla onqumamo", - "Taking care of yourself": "Ukuzinyamekela", - "Take a pause": "Nqumama", - "Physical activity": "Umsebenzi womzimba", - "List of things": "Uluhlu lwezinto", - "Connect": "Qhagamshela", - "Prevent anger": "Thintela umsindo", - "Angry? Take a break": "Unomsindo? Hlaba ikhefu", "Reflect on the positive": "Cinga ngezinto ezakhayo", "Check-in chat": "Ngena kwincoko", "Dream Travel": "UHambo Oluliphupha", @@ -1656,37 +1497,15 @@ "What are you doing?": "Wenza ntoni?", "Here is a fun game you can do with your family!": "Nantsi imidlalo eyonwabiswayo onoyenza nosapho lwakho!", "Crazy chicken": "Inkukhu ephambeneyo", - "My Tips": "Amacebiso Am", - "**My Tips** in the @global.parent_centre": "**Iingcebiso Zam** kwi @global.parent_centre", - "Essential Tools": "Izixhobo Ezibalulekileyo", - "**Essential Tools** in the @global.parent_centre": "**Izixhobo Ezibalulekileyo** kwi @global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Yenza Ngokwezifiso ze @global.parent_app** kwi @global.parent_centre", - "Customise Again": "Phinda Uzivumelanise", - "Relax & Activities": "Ukuphola Nemisebenzi", - "under **Relax & Activities** in the @global.parent_centre": "phantsi **Phola & Imisebenzi** kwi @global.parent_centre", - "Help": "Uncedo", - "**Help** in the @global.parent_centre": "**Uncedo** kwi @global.parent_centre", - "Technical Support": "Inkxaso Yobunjineli", - "**Technical Support** in the @global.parent_centre": "**Uxhaso Lobuchwepheshe** kwi @global.parent_centre", - "Coping with @global.covid": "Ukumelana ne @global.covid", - "**Coping with @global.covid** in the @global.parent_centre": "**Ukumelana ne-@global.covid** kwiziko le-@global.parent_centre", - "Coping with grief": "Ukumelana nosizi", - "**Coping with grief** in the @global.parent_centre": "**Ukumelana nosizi** kwi @global.parent_centre", - "Message Archive": "Ugcino Lwemiyalezo", - "**Message Archive** in the @global.parent_centre": "**Uvimba Womyalezo** kwi @global.parent_centre", - "Support Contacts": "Abaqhagamshelwa Benkxaso", - "**Support Contacts** in the @global.parent_centre": "**Abaqhagamshelwa Benkxaso** kwi @global.parent_centre", - "Evidence Base": "Isiseko Sobungqina", - "**Evidence Base** in the @global.parent_centre": "**Ubungqina Siseko** kwi @global.parent_centre", + "Help yourself cope": "Zincede umelane nazo", + "Help your teen cope": "Nceda umntwana wakho amelane nazo", + "Practical steps": "Amanyathelo asebenzayo", "How to talk to my teen": "Ndithatha njani nomntwana wam", "Steps to deal with news": "Amanyathelo okujongana neendaba", "How can I help my teen choose well?": "Ndingamnceda njani umntwana wam ofikisayo ukuba akhethe kakuhle?", "What influences teen decisions?": "Yintoni ephembelela izigqibo zomntwana ofikisayo?", "How does my teen feel?": "Uziva njani umntwana wam?", "Changing negative to positive": "Ukutshintsha okungalunganga ukuya kokulungileyo", - "Help yourself cope": "Zincede umelane nazo", - "Help your teen cope": "Nceda umntwana wakho amelane nazo", - "Practical steps": "Amanyathelo asebenzayo", "**Relax** @global.parent_point": "**Phola** @global.parent_point", "Doing a relaxation activity": "Ukwenza umsebenzi wokuzipholisa", "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Ixesha ngalinye uphola, cofa u @global.parent_point ubhiyozele impulelo yakho!", @@ -1694,7 +1513,6 @@ "**Treat yourself well** @global.parent_point": "**Zinonophele kakuhle** @global.parent_point", "Doing something they like for themselves": "Bazenzela into abayithandayo", "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", - "Praise yourself": "Zincome", "**Praise yourself** @global.parent_point": "**Zincome** @global.parent_point", "Praising themselves": "Bayazincoma", "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", @@ -1750,5 +1568,115 @@ "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Uxolo ukuba oko kube nzima. Ukuceba imingcipheko kunye neendawo zokufumana inkxaso kungalucelomngeni kunye neemvakalelo. Kunceda ngokwenene ukugcina umntwana wakho ofikisayo ekhuselekile!", "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Uxolo ukuba oku akukhange kuhambe kakuhle. Oku akulula ukukwenza. Zama ukuhlala phantsi uze uncokole nomntwana wakho ofikisayo kwakhona. Okunye, ngaba ukho umntu othenjwayo ngumntwana wakho ofikisayo onokuba kunye nawe xa uncokola nomntwana wakho ofikisayo?", "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle! Ukunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Xa umntwana wakho ofikisayo efunda ukusombulula iingxaki, unokusebenzisa eso sakhono ubomi bakhe bonke. Sisipho sokwenene!" + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Xa umntwana wakho ofikisayo efunda ukusombulula iingxaki, unokusebenzisa eso sakhono ubomi bakhe bonke. Sisipho sokwenene!", + "My Tips": "Amacebiso Am", + "**My Tips** in the @global.parent_centre": "**Iingcebiso Zam** kwi @global.parent_centre", + "Essential Tools": "Izixhobo Ezibalulekileyo", + "**Essential Tools** in the @global.parent_centre": "**Izixhobo Ezibalulekileyo** kwi @global.parent_centre", + "**Customise @global.parent_app** in the @global.parent_centre": "**Yenza Ngokwezifiso ze @global.parent_app** kwi @global.parent_centre", + "Customise Again": "Phinda Uzivumelanise", + "Relax & Activities": "Ukuphola Nemisebenzi", + "under **Relax & Activities** in the @global.parent_centre": "phantsi **Phola & Imisebenzi** kwi @global.parent_centre", + "Help": "Uncedo", + "**Help** in the @global.parent_centre": "**Uncedo** kwi @global.parent_centre", + "Technical Support": "Inkxaso Yobunjineli", + "**Technical Support** in the @global.parent_centre": "**Uxhaso Lobuchwepheshe** kwi @global.parent_centre", + "Coping with @global.covid": "Ukumelana ne @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "**Ukumelana ne-@global.covid** kwiziko le-@global.parent_centre", + "Coping with grief": "Ukumelana nosizi", + "**Coping with grief** in the @global.parent_centre": "**Ukumelana nosizi** kwi @global.parent_centre", + "Message Archive": "Ugcino Lwemiyalezo", + "**Message Archive** in the @global.parent_centre": "**Uvimba Womyalezo** kwi @global.parent_centre", + "Support Contacts": "Abaqhagamshelwa Benkxaso", + "**Support Contacts** in the @global.parent_centre": "**Abaqhagamshelwa Benkxaso** kwi @global.parent_centre", + "Evidence Base": "Isiseko Sobungqina", + "**Evidence Base** in the @global.parent_centre": "**Ubungqina Siseko** kwi @global.parent_centre", + "Quick pause": "Ukunqumama okukhawulezileyo", + "Power of three": "Amandla abantu abathathu", + "One thing today": "Into enye namhlanje", + "Breathe to three": "Phefumla kathathu", + "In and out": "Tsala uze ukhuphe", + "Think about today": "Cinga ngemini yanamhlanje", + "Pause to respond": "Nqumama ukuze uphendule", + "Small things": "Izinto ezincinci", + "Body scan": "Iskena somzimba", + "Feel the ground": "Yiva umhlaba", + "Counting sounds": "Ukubala izandi", + "Feel your feeling": "Yiva indlela ovakalelwa ngayo", + "Your song": "Ingoma yakho", + "Ground & gratitude": "Umhlaba nombulelo", + "Notice how you feel": "Phawula indlela ovakalelwa ngayo", + "Pause power": "Amandla onqumamo", + "Praise yourself": "Zincome", + "Taking care of yourself": "Ukuzinyamekela", + "Take a pause": "Nqumama", + "Physical activity": "Umsebenzi womzimba", + "List of things": "Uluhlu lwezinto", + "Connect": "Qhagamshela", + "Prevent anger": "Thintela umsindo", + "Angry? Take a break": "Unomsindo? Hlaba ikhefu", + "It is hard to find time to have fun with your teenager.": "Kunzima ukuba nexesha lokonwaba kunye nomntwana wakho ofikisayo.", + "In our busy lives it’s hard to focus on the positive.": "Kubomi bethu obuxakekileyo, kunzima ukunikela ingqalelo kwizinto ezikhuthazayo.", + "How many days in the past week have you praised your teen?": "Kwiveki ephelileyo, uye wamncoma iintsuku ezingaphi umntwana wakho ofikisayo?", + "This is a very stressful time for families.": "Eli lixesha elibangela uxinezeleko kwiintsapho.", + "How many days in the past week did you feel very stressed as a parent/caregiver?": "Kwiveki ephelileyo, ngaba njengomzali/umnakekeli uye waziva uxinezelekile?", + "Sometimes our children make us really upset.": "Ngamanye amaxesha, abantwana bethu bakhe basicaphukise.", + "How many days in the past week did you shout, scream or yell at your teen?": "Kwiveki ephelileyo, zingaphi iintsuku oye washawuta waza wabakrasela ngazo abantwana bakho?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Kwinyanga edlulileyo (iinstuku ezingama-30), zingaphi iintsuku oye waphelelwa ngazo yimali yokuthenga ukutya?", + "It is so stressful when children misbehave.": "Xa abantwana begeza, oko kubangela uxinezeleko.", + "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Zingaphi intsuku kule veki idlulileyo oye waqeqesha abantwana bakho ngokubabetha, ukubabetha ezimpundu okanye ukubabetha ngesandla sakho okanye ngenye into efana noswazi okanye ibhanti?", + "It’s hard to keep track of your teenagers when they are becoming independent.": "Kunzima ukuzazi kakuhle izinto ezenziwa ngaabatwana bakho abafikisayo njengoko baya bekhula ibe bezimela.", + "How many days in the past week did you know what your teen was doing and who they were with?": "Kwiveki ephelileyo, zingaphi iintsuku oye wayazi ngazo ukuba uphi umntwana wakho ofikisayo kwaye ukunye nabani?", + "Days in the past week": "Iintsuku kwiveki edlulileyo", + "We all want to keep our children safe.": "Sonke sifuna abantwana bethu bahlale bekhuselekile.", + "Days in the past month": "Iintsuku kwinyanga edlulileyo", + "Welcome and Self-Care": "Ukwamkela Nokuzinyamekela", + "**Welcome and Self-Care** workshop": "Uqeqesho **lokwamkela Nokuzinyamekela**", + "Self-Care": "Ukuzinyamekela", + "How to do self-care": "Indlela yokuzikhathalela", + "One-on-One Time": "Ixesha Lenu Nobabini", + "**One-on-One Time** workshop": "Ucweyo **lwexesha lenu nobabini**", + "How to spend one-on-one time": "Indlela yokuchitha ixesha lenu nobabini", + "Praise": "Ncoma", + "**Praise** workshop": "Uqeqesho **lokuzincoma**", + "How to praise": "Indlela yokuncoma", + "Positive Instructions": "Imiyalelo Eyakhayo", + "**Positive Instructions** workshop": "Uqeqesho **Lwemiyalelo Eyakhayo**", + "How to give positive instructions": "Indlela yokunika imiyalelo eyakhayo", + "Managing Stress": "Ukulawula Uxinezeleko", + "**Managing Stress** workshop": "Uqeqesho **lokulawula Uxinezeleko**", + "How to manage stress": "Indlela yokulawula uxinezeleko", + "Family Budgets": "Iibhajethi Yentsapho", + "**Family Budgets** workshop": "Uqeqesho **Lwebhajethi Yentsapho**", + "How to budget & save": "Indlela yokubhajetha nokonga", + "Rules": "Imigaqo", + "**Rules** workshop": "Uqeqesho **Umthetho**", + "How to create rules": "Indlela yokuyila imigaqo", + "Calm Consequences": "Imiphumo Ezolileyo", + "**Calm Consequences** workshop": "Uqeqesho **Imiphumo Ezolileyo**", + "How to give calm consequences": "Indlela yokunika imiphumo ezolileyo", + "Problem Solving": "Ukucombulula Iingxaki", + "**Problem Solving** workshop": "Uqeqesho **Ukucombulula Iingxaki**", + "How to solve problems": "Indlela yokusombulula iingxaki", + "Teen Safety": "Ukhuseleko Lwabantwana Abafikisayo", + "**Teen Safety** workshop": "Uqeqesho **Ukhuseleko Lwabantwana Abafikisayo**", + "How to keep your teen safe": "Indlela yokugcina umntwana wakho ofikisayo ekhuselekile", + "Dealing with Crisis": "Ukuhlangabezana Neengxaki", + "**Dealing with Crisis** workshop": "Uqeqesho **Ukuhlangabezana Neengxaki**", + "How to deal with crisis": "Indlela yokuhlangabezana neengxaki", + "Celebration and Next Steps": "Ukubhiyoza kunye namaNyathelo Alandelayo", + "**Celebration and Next Steps** workshop": "Uqeqesho **Lokubhiyoza kunye Namanyathelo Alandelayo**", + "How to support each other": "Indlela yokuxhasana", + "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Molo mzali ogqwesileyo, khumbula ukuzinakekela nawe - izokunceda KWAYE nosapho lwakho! Fumana iingcebiso nezingakumbi Kwi-@global.parent_app.", + "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.": "Molo mzali ogqwesileyo! Khumbula, ungafumana iingcebiso eziluncedo Kwi-@global.parent_app.", + "Hi great parent! @global.parent_app is here to support you. Check it out now!": "Molo mzali ogqwesileyo! I-@global.parent_app ilapha ukukuxhasa. Yijonge!", + "Welcome to @global.parent_app. Click here to start your journey!": "Wamkelekile kwi-@global.parent_app. Cofa apha ukuze uqalise uhambo lwakho!", + "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Molo! Ngaba yonke into ihamba KAKUHLE? Kubonakala ngathi khange uyivule i-@global.parent_app kutshanje. Kutheni ungakhe uyizame? Izigidi zabazali zIye zafumanisa ezi zixhobo ziluncedo. Sisekhona ukuze sikuxhase.", + "@global.parent_app misses you! There is a lot to explore. We are still here to support you.": "I-@global.parent_app iyakukhumbuza! Kuninzi omele ukuhlole. Sisekhona ukuze sikuxhase.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali - sebenzisa i-@global.parent_app ukulungiselela umntwana wakho ofikisayo ukuba aphumelele ebomini.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukuze uphinde usondelelane nomntwana wakho ofikisayo kwakhona!", + "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!": "Ndiyathemba uziva bhetele. Ukuba ngumzali kunzima, kodwa awukashiywa lixesha lokuphinda uqalise nomntwana wakho ofikisayo. Uqeqesho lwakho lokuba ngumzali lulinde wena! Cofa apha ukuze uqalise uhambo lwakho lwe-@global.parent_app!", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukukunceda ulawule uxinezeleko lokuba ngumzali.", + "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Molo kwakhona! Awukashiywa lixesha lokusebenzisa i-@global.parent_app uze ufumane inkxaso efanele wena yokuba ngumzali. Kutheni ungakhe uyizame xa usiya emsebenzini okanye xa usapheke ukutya? Izigidi zabazali ziye zafumanisa izixhobo zethu ziluncedo.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukukunceda ulawule isimilo somntwana wakho ofikisayo." } \ No newline at end of file diff --git a/packages/app-data/translations/za_zu/strings.json b/packages/app-data/translations/za_zu/strings.json index 2b97474492..4febe09233 100644 --- a/packages/app-data/translations/za_zu/strings.json +++ b/packages/app-data/translations/za_zu/strings.json @@ -1,8 +1,100 @@ { + "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Buzanani, “Yini ekwenze wajabula namuhla?”\n* Buzanani, “Yibuphi ubunzima oye wabhekana nabo namuhla?”\n* Buzanani, “Ngingakusiza kanjani?”\n* Zamani ukwenza lokhu ndawonye nsuku zonke; kungaba lapho nidla isidlo sakusihlwa ndawonye noma ngaphambi kokuba niyolala.", + "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Buza ingane yakho esebusheni bayo ukuthi yini engathanda ukuyidla. \n* Kuphekeni ndawonye lokho kudla! \n* Yivumele ibe umpheki omkhulu – ihole, wena ulandele iziqondiso zayo. \n* Ungayisiza nokuthi yenze isabelomali sokuthenga izinto zokupheka! \n\nUcabanga ukuthi kuzosebenza? Buza izingane zakho ezisebusheni bazo ukuthi yini EZINGATHANDA ukuba wena nazo ningayenze ndawonye. Zivumele zihole. Khululeka. Zijabulise.", + "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "*Nyakazisa izandla zakho kwesokunxele emoyeni izikhathi ezu -8 ngenkathi ubala ukuya ku-8.\n* Kwenze ngokushesha futhi umemeze kakhulu ngangokunokwenzeka.\n* Kuphinde lokho ngesinye isandla sakho. Kuphinde ngazo zombili izinyawo.\n* Kwenze izikhathi ezingu-7, bese kuba yizikhathi ezingu-6 uqhubeke njalo uze ufike ku-1.\n* Wonke umuntu kumele amemeze athi “Inkukhu esanganayo” bese benza okusemandleni abho ukudansa njengenkukhu esanganayo!", + "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Dala isethi yokunyakaza komdanso ezingomeni eziyintandokazi zentsha yakho.\n* Umuntu oyedwa uyadansa bese bonke abanye belingisa umdanso awenzayo. \n* Wonke umuntu uthola ithuba lokuhola umdanso. \n* Yenzela umndeni!", + "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Lo mdlalo umnandi kakhulu lapho udlalwa abantu abangaphezu kwababili.\n* Umuntu oyedwa wenza sengathi wenza into ethile – ngokwesibonelo, ukukama izinwele noma ukupheka isidlo sakusihlwa. \n* Omunye umuntu uyabuza, “Wenzani?”\n* Umuntu wokuqala kudingeka asho okuthile okungahlobani nokukama izinwele, ngokwesibonelo, “Ngibopha izicathulo.” \n* Umuntu wesibili ube eseqala ukwenza sengathi ubopha izicathulo kuze kubuze umuntu omusha, “Wenzani?” \n\nImpendulo kumele ihluke njalo kulokho osuke ukwenza ngempela!", + "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Ngeke ukwazi ukuthatha uhambo ngaso sonke isikhathi ofisa ngaso, kodwa ungaphupha njalo! Buza ingane yakho esebusheni bayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluya kuphi? Uzohamba isikhathi eside kangakanani? Yini ozoyipakisha? Yini ozoyenza ohambweni lwakho? Yini ozoyibona?\n* Bukani ibalazwe ndawonye noma nilidwebe.\n* Khetha izwe ingane yahoo esebusheni bayo engakaze izwe ngalo bese nifunda okwengeziwe ngalelo zwe.", + "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Khetha umdlalo noma ukuzivocavoca eningakwenza ndawonye. Vumelanani ngohlelo. Ingabe nizokwenza nsuku zonke? Isikhathi esingakanani? \n\nKuzameni isonto elilodwa. Ekupheleni kwesonto, zibuze wena kanye nomndeni wakho le mibuzo:\n* Kuhamba kanjani? \n* Uzizwe kanjani ekuqaleni kwesonto? \n* Uzizwe kanjani ekupheleni kwesonto? \n * Yini esingayenza ngendlela ehlukile?", + "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena nengane yahoo esebusheni bayo ningabhala uhlu losaziwayo eningathanda ukubamema emcimbini wakho. Ngamunye angaba nabantu abahlanu – kungaba abantu bangesikhathi esidlule noma bamanje. Ungamema obani? Ingabe izimenywa zakho zizozwana?", + "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Xoxa nengane yakho esebusheni bayo ngokuthile ekuthandayo.\n\nKungaba yinoma yini ekhetha ukuxoxa ngayo: ezemidlalo, abangane, umculo, osaziwayo…\n\nZama ukulalela ingane yahoo esebusheni bayo futhi uyivumele ukuthi ikhulume.", + "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Khethani ndawonye izinhlobo ezintathu zokuzivocavoca. Ngokwesibonelo, ukuhamba, ukugijima, ukudlala ibhola noma ukudansa.\n* Khethani okukodwa ndawonye bese niyakuzama. \nUma nikuthanda nobabili, nqumani ukuthi nizokwenza izikhathi ezingaki. Kanye noma kabili ngesonto? Njalo ekuseni?\n* Ndawonye cabangani ngezindlela zokwenza lokhu kube mnandi kakhulu. Ungakwazi yini ukugijima uye endaweni ethile? Shintshanani ekubeni abaqeqeshi? Khuthazanani ngoumvuzo omncane wamahhala?", + "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Shintshanani ngokuba “umholi”. Yisho imisho eyisethulo ukuze wonke umuntu aqale. “Umholi” ube esenikeza isiqondiso bese wonke umuntu enza umsebenzi ngokushesha ngangokunokwenzeka:\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Thinta okuthile okubomvu.” \n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Gxuma gxuma izikhathi eziyishumi.”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Beka izicathulo endaweni yokubeka izicathulo.”", + "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Khetha umxoxi wezindaba ukuze uqale ukwenza indaba.\n* Abalalele indaba bangaphazamisa noma inini ngokusho igama elithile.\n* Oxoxa indaba kudingeka asebenzise lelo gama endabeni yakhe.\n* Lapho indaba iphela, zamani umxoxi wendaba ohlukile!", + "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qala indaba yakho ngamazwi athi “Kwasukasukela kwakukhona…”\n* Vumela ingane yakho esebusheni bayo ukuba yakhe umusho olandelayo.\n* Ngemva kwalokho kuba nguwe owakha umusho.\n* Shintshananani njengoba niqamba indaba entsha emnandi.\n* Qinisekisa ukuthi ingoma iphela kamnandi.\n* Buza ingane yakho esebusheni bayo ukuthi iyiphi indawo eyithande kakhulu endabeni!", + "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Umuntu wokuqala uthi, “NgoMgqibelo, ngizoya... (isibonelo, epaki)”\n* Umuntu wesibili uyengeza kulokho okushiwo owokuqala, \"NgoMgqibelo, ngizoya epaki futhi...(isib., ngivakashele umngane wami omkhulu).\n* Umuntu ngamunye uyengeza kokudlule ezama ukucabanga ngazo zonke izinto ezijabulisayo angazenza ngoMgqibelo.", + "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Lo mdlalo ungadlalwa lapho nibabili noma niwudlale nabantu abaningi njengeqembu.\n* Yimani nibhekane noma nime nenze indilinga. \n* Kuhola umuntu oyedwa kuqala bese wonke umuntu elingisa lokho akwenzayo, kulingiswa konke okwenziwa umholi ngesikhathi esisodwa.\n* Qinisekisa ukuthi umholi akasheshi kakhulu ukuze wonke umuntu akwazi ukulingisa akwenzayo! Zama ukunyakazisa izitho ezihlukahlukene zomzimba ezigabeni ezihlukahlukene.\n * Ngemva kwesikhathi esithile, shintshani umuntu oholayo. Nikezani wonke umuntu ithuba lokuhola.\n* Kuzameni lokhu kungekho oholayo!", + "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Umuntu wokuqala uthola ukukhetha noma ukucula ingoma.\n* Wonke umuntu kufanele aqagele igama leculo (ukwenza kube nzima ukuqagela umculi).\n* Owokuqala ukuqagela kahle uba umholi olandelayo.", + "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Lo mdlalo umnandi kakhulu lapho udlalwa okungenani abantu abathathu.\n* Qala endingilizeni udlulise umsindo owodwa owenza ngeminwe ujikeleze indilinga (noma ungashaya izandla kanye uma ungakwazi ukwenza umsindo ngeminwe).\n* Uwenza kanye umsindo weminwe ukuze uwudlulisele komunye, bese uwenza kanye ukuze uwamukele. Bheka umuntu odlulisela umsindo kuye. \n* Indawo oqondise kuyo (phezulu, phansi, okuqondile, okutshekile, okuginqika phansi) kanye namandla (kakhulu, kancane, ngendlela ephakathi nendawo) owasebenzisayo lapho udlulisa umsindo weminwe uthinta indlela umuntu awamukela ngayo. \n* Ungashayisa umsindo odongeni, uwuphonse emoyeni, uwubambe izikhathi ezimbalwa ngaphambi kokuba uwudlulisele phambili. \n* Lapho wonke umuntu esekwazi kahle ukukwenza lokhu, ningahambahamba egumbini nilokhu niqhubeka ngokudlulisela umsindo weminwe. \n* Ungakwazi yini ukuwuphonsa ngaphansi kwemileze? Ngemuva komhlane? Kujikeleze ikhanda? Uvimbe okuya komunye umuntu? Kujabuleleni ukudlala nge-”snap”!", + "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Ekupheleni kosuku, zinike umzuzu wokwenza lokhu: \n\n* Khuluma nengane yakho esebusheni bayo ngento eyodwa emnandi ayenzile. \n* Zincome ngento eyodwa oyenze kahle namhlanje. \n* Uyiqhawe!", + "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Cabanga ngokuba namandla angaphezu kwavamile. Ngokwesibonelo, ukuya noma ikuphi ngokuphazima kweso, ukuya enkathini esadlula, ukubona imicabango yabantu. \n* Buza ingane yakho esebusheni bayo “Uma ubunamandla angaphezu kwawemvelo oku […], ubungawasebenzisa kanjani?”\n* Yikhuthaze ukuba iqambe iqhawe layo igama. \n* Manje vumela engane yakho esebusheni bayo ukuba ikukhethele amandla angaphezu kwawemvelo.\n* Qinisekisa ukuthi nawe uyawalingisa amandla akho angaphezu kwawemvelo!", + "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Cabanga ngezimo ezintathu ezihlukahlukene. Ngokwesibonelo nje, ukushayela imoto, ukuhamba ngesikebhe noma ukushayela indiza.\n* Yisho lokhu enganeni yahoo esebusheni bayo bese uyayibuza, “Yikuphi ongakuthandar?”\n* Yibuze ukuthi kungani?\n* Manje cabanga ngezimo ezintathu noma ucele ingane yakho esebusheni bayo ukuthi ikwenzele lokho.", + "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Xoxela ingane yakho esebusheni bayo ngokuthile okwenzeka ngesikhathi usemusha nawe. Yiziphi izinto ezazingekho ngaleso sikhathi? Omakhalekhukhwini abane-inthanethi? Yini enaniyenza yokuzijabulisa? Yini owawukhathazeka ngayo? Ungakhathazeki uma ingane yakho ingakutsheli lutho – okubalulelkile ukuthi ikulalele futhi iyakhumbula. Ngezinye izikhathi intsha yethu iyakhohlwa ukuthi abazali bayo bangabantu nabo!", + "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Cabanga ngezitatimende ezintathu mayelana nawe. Ezimbili kumelwe zibe yiqiniso bese esisodwa sibe amanga.\n* Kungasiza ukucabanga ngezifiso, amaphupho, okwenzeka esikoleni, okuthandayo noma ongakuthandi. Ngokwesibonelo: Ngiyawazonda amabhanana, isifundo engisithanda kakhulu yisayensi, futhi ngifisa ngabe ngiyakwazi ukucula. \nYisho lokhu enganeni yahoo esebusheni bayo bese uyicela ukuba iqagele ukuthi yikuphi okungamanga. \n* Ingabe iqagele ngokunembile? Ingabe kuyimangazile?\n* Manje yicele ukuba yenze okufanayo. Ingabe kukhona okusha enikufundile ngomunye nomunye?", + "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Cabanga ngekhono elisha eningalifunda ndawonye nengane yakho esebusheni bayo. Ngokwesibonelo, ukugcina ibhola lisemoyeni noma onyaweni lwakho, ukuphonsa izinto eziningi emoyeni uphinde uzibambe zonke, ukwenza isobho?\n* Shintshanani ekuzameni ikhono elisha.\n* Qinisekisa ukuthi niyancomana, futhi nizame ukudlala ndawonye!", + "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Buzanani imibuzo. Ingakubuza noma yimiphi imibuzo ngezinto ozithandayo noma ngalokho okwenzile namhlanje.\n* Ukuphela komthetho yilowo othi awukwazi ukuphendula uthi “Yebo”, “Cha” noma “Mhlawumbe”.\n* Ungabuza imibuzo isikhathi eside kangakanani? Bungakanani ubuciko obungabusebenzisa ezimpendulweni zakho?\n * Shintshanani bese niyadlala futhi!", + "Home": "Ikhasi Lokuqala", + "Settings": "Izilungiselelo", + "Template": "Isifanekiso", + "In-Week Messages": "Imiyalezo Yaphakathi Nesonto", + "Campaigns": "Imikhankaso", + "Notifications": "Imiyalezo", + "You have successfully entered developer mode.": "Ufake ngempumelelo imodi yonjiniyela.", + "You have entered an incorrect code.": "Ufake ikhodi engalungile. noma fake ikhodi ekungasiyona.", + "About @global.parent_app": "Mayelana@global.parent_app", + "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app yasungulwa yi-Parenting for Lifelong Health (PLH) - ngokusebenzisana komhlaba wonke phakathi kochwepheshe bokukhuliswa kwabantwana. Labochephes abakwa UNICEF, WHO, amaNyuvesi aseNingizimu Africa nase UK, nama NGO ase Africa kanye nemindeni nentsha yese Africa yonkana. Abazali nentsha basebenzisane nathi kule app futhi basiza ekuqinisekiseni ukuthi kulula ukuyisebenzisa, iyajabulisa futhi iyaheha. Okunye okuqukethwe ile-app, njengeziphakamiso zemisebenzi,izitori ezinezithombe zasungulwa ngokubambisana nabazali nentsha ukuqinisekisa ukuthi ihambisana nezidingo zemindeni.\n\nI-Parenting for Lifelong Health (PLH) izinikele ekutheni ixhase mahala futhi ngokwabelekayo izinto zokukhulisa abantwana nezinye izinhlelo, nokweseka abazali umhlaba wonke ngenhloso yokugqugquzela inhlalakahle yabantwana babo.", + "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ngokuchofoza inkinobho engezansi uzoqalisa kabusha i-app ibuyele kulamasethingi ayo asekuqaleni. \n\nLokhu kucaza ukuthi yoke iinqubekela phambili yakho yentuthuko nokusebenzisa izoqalela phansi futhi i-app yakho izoba sengathi isanda kufakwa.\n\nQAPHELA: Ukusetha kabusha uhlelo le-app lokusebenza kungunaphakade futhi ngeke ukwazi ukuthola noma yiluphi ulwazi.", + "Open Survey": "Vula Ucwaningo", + "Select Language": "Khetha ulimi", + "Workshop Options": "Umhlangano wokufundisana ongakhetha kukho", + "Reset App": "Setha kabusha uhlelo lokusebenza I-App", + "Demo Presentation": "Ukuboniswa noma Isethulo somkhiqizo", + "Organisation Registration": "Ukubhaliswa Kwenhlangano", + "Developer Mode": "Uhlelo Lonjiniyela", + "Unlock all workshops": "Vula yonke imihlangano yokufundisana", + "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ngokuchofoza inkinobho engezansi uzovula konke ukuqeqeshwa.\n\nQAPHELA: Abasebenzisi akufanele basebenzise lokhu ukuze bavule ukuqeqeshwa, lokhu akutuswa ngaphandle uma kudingeka ngempela.", + "Unlock workshops": "Vula umhlangano wokufundisana", + "All workshops are now unlocked.": "Yonke imhlangano wokufundisana isivuliwe manje.", + "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ukulahlekelwa umuntu omthandayo kungazwakala kunzima kakhulu. Naka macebo angaba usizo okufanele uwangcine emqodweni.", + "Ask for help": "Cela usizo", + "Say goodbye": "Valelisa", + "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Cela usizo kumuntu omethembayo- ukudla noma ukunakekelwa kwengane kungaba usizo. Kungenzeka udinge amaphepha efa lezingane noma ukuthola izinsiza. \n- Ngesinye isikhathi abantu bazama ukuthatha imali kumuntu ososizini. Thola ulwazi ngamalungelo akho.", + "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Kunzima ukuvalelisa. Yenza lokho okukulungele wena nomntwana wakho.\n- Imindeni, intsha nabazali abekho msulwa. Uma umuntu eshonile, kulungile ukukhuluma ngokuhle nokubi esikukhumbulayo.\n- Kungasiza ukumbhalela incwadi noma ukumdwebela lomuntu oshonile.\n- Abanye abantu benza umcimbi noma babe nesidlo esikhethekile ukubungaza lowomuntu nokuvalelisa.\n- Kungasiza ukwenza ibhokisi lezikhumbuzo lokufaka izinto ezikhumbuza wena nomntwana wakho ngalowomuntu.\n- Kungasiza ukukhuluma nje ngalowomuntu uma umcabanga.", + "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Kunzima kuwo wonke umuntu ukushonelwa umuntu omthandayo noma umngani. Ukuziphatha ngomusa nokwenza izinto zokukusiza kulesisikhathi esinzima kusiza nomntwana wakho!", + "Take care of yourself": "Zinakekele", + "Find a support group": "Thola inhlangano noma iqembu elisekelayo", + "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "-Usizi lungasithikameza emoyeni amaviki, izinyanga noma iminyaka. Akuphoqelekile ukuthi ubengcono ngokushesha. \n-Lala ngokwanele udle ngokwanele - kunzima ukunakekela abantwana uma ukhathele noma ulambile.\n-Yenza uhla lwezinto ezikwenza uzizwe ungcono bese uyazenza.\n-Zama ukwenza into eyodwa ngosuku ezoniphumuza ninomntwana wakho.\n-Kulungile ukungazizwa kahle kanti nokukhala kulungile. Ungazibeki cala, akulona iphutha lakho.\n-Ithemba lihlezi likhona noma kushoniwe. Zama ukuthokozela izinto ezincane futhi uthathe umzuzu wokwenza into ezonijabulisa futhi iniphumuze ninomntwana wakho.\n-Thola umuntu oyedwa noma ababili abangakweseka, balalele futhi baxoxisane nawe.", + "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ukukhuluma nomuntu ongakweseka, akulalele kungakusiza.\n- Ukuzibandakanya neqembu labanye abantu abashonelwe kungasiza.\n-Akekho umuntu ongenasici. Kulungile ukukhuluma ngezinkumbulo ezinhle nezimbi.", + "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Abantwana bamelana nokushonelwa ngezidlela ezahlukile, nje ngokufanayo nabantu abadala. Ungabasiza ekutheni baqonde isimo kanye nemizwa yabo ngokuthi ubavulele izindawo eziphephile lapho ningabelana khona futhi nicubungule imizwa yenu.", + "Be honest": "Thembeka", + "My teen's response": "Impendulo yengane yami", + "How to support my teen?": "Ngiyeseka kanjani ingane yami?", + "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Tshela umntwana wakho ukuthi kukhona oshonile - kwesinye isikhathi baye bangakuqapheli lokhu.\n- Ukubatshela kuyinto ethatha isikhathi, hayi into engumcimbi. Kungadingeka ubantshele kaningana.\n- Sebenzisa amagama abawaqondayo.\n-Uma abantwana abancane bengaqondi ukuthi kuyini ukushona komuntu, zama ukubacacisela ukuthi umuntu abamthandayo angeke asabuya. Zama ukungasho ukuthi 'ulele' noma 'uthathe uhambo'.\n- Abantwana asebethe ukukhula bangakuqonda ukuthi kuyini ukushona komuntu, kodwa bangasokola ukukhuluma noma ukumelana nemizwa yabo.\n- Intsha ingamelana nalesisimo ngezindlela ezahlukahlukene: ukukhala, ukuthetha, ukungakholwa noma ithule kakhulu. Konke lokhu kulungile. Batshele ukuthi unabo.\n- Vumela ithuba lemibuzo nokuxoxa. Thembeka. Kulungile ukusho uma ungazi.", + "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "Umntwana angaba nokudangala, ukucasuka, ukungaqondi, ukungakholwa, ukuzizwa ndikindiki, uzizwa engaphilile noma, amaphupho amabi nezinkinga esikoleni. Umntwana wakho angabukeka ejabulile kodwa ebephatheke kabi. Bangazizwa bevalelekile futhi bafune ukuchitha isikhathi nabangani. Bangabuye babonise ukuziphatha okungalindelekile noma ukuziphatha okunobungozi. Kungangenzi mnqodo lokhu kuwe kodwa konke kujwayekile.\n-Abantwana bangazizwa ngathi kuyiphutha labo - ukuthi yibona abadlulise igciwane noma baziphathe kabi. Batshele ngokucacile ukuthi abenzanga lutho olubi.", + "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "-Chaza ukuthi usizi luza nemizwa eminingi nezenzo ezingi. Tshengisa umntwana wakho ukuthi uyathandwa futhi unakekelwe, umkhuthaze ukuthi akhulume ngemizwa yakhe noma ayibhale phansi noma ayidwebe.\n-Uma kuneqembu elesekanayo angaba yingxenye yalo umntwana, kungasiza.\n-Uma umntwana ekhuluma ngokufuna ukuzilimaza noma ukuzibulala, cela usizo komunye umuntu ngokushesha.\n-Uma ungakwazi, gcina izinqubo zenjwayelo zansuku zonke, lokhu kungaba yiduduza entsheni.\n-Kungayisiza intsha ukuba yingxenye yamasiko noma imisebenzi emayalana nokushona komuntu - ukukhetha iculo noma ukusho okuthile.\n-Ukuchitha imizuzu embalwa nsuku zonke ugxile emntwaneni wakho kuyamsiza ekutheni azizwe evikelekile futhi kumnikeze ithuba lokuphumula noma lokuxoxa ngeznto ezimkhathazayo.", + "How did it go?": "Kuhambe kanjani?", + "Reply": "Phendula", + "Timer": "Isibali sikhathi", + "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Cindezela unxantathu ukukusiza ugcine le ngxoxo kumizuzu we- @ local.timer_duration.", + "Video": "Ividiyo", + "You selected less than @local.threshold": "Ukhethe okungaphansi kuka @local.threshold", + "Start Positively Together": "Qalani Kahle Ndawonye", + "It's great to see you again! \n\nLet's start with caring for you.": "Kuhle ukukubona futhi! \n\nAke siqale ngokunakekela wena.", + "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Shintshisanani:\n* Yabelana: Uzizwa kanjani namuhla?\n* Ncoma othile eqenjini lakho ngokuthile akwenze kahle kuleli sonto!\n\nKhumbula ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha. Nonke nifanelwe ukunconywa.", + "We all have negative thoughts sometimes.": "Sonke siyaba nayo imicabango emibi ngezinye izikhathi.", + "\"I am a failure\"": "\"Ngiyisahluleki\"", + "What to do?": "Kufanele ngenzeni?", + "Examples": "Izibonelo", + "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ukuzitshela noma ukutshela mntwana wakho ukuthi imani noma usho into enhle futhi ehlukile kwesinye isikhathi akusebenzi.", + "\"I do everything perfectly\"": "\"Konke ngikwenza kahle kakhulu\"", + "Instead, you can ask:": "Kunalokho, ungabuza/ungacela", + "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Ingabe lomcabango ungowoqobo? Eziphi ezinye izincazelo?\n- Kwenzakalani uma ngiqhubeka ukukholelwa kulomcabango?\n- Ngingathini kumngani uma enalomcabango?", + "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "Kunzima, kodwa uzama ngakho konke okusemandleni futhi sizobambisana ekutholeni isixazululo\"", + "\"It’s your fault\"": "\"Iphutha lakho\"", + "\"Let’s come up with a solution together\"": "\"Masiqhamuke nesisombululo ngokubambisana\"", + "\"I lost my job\"": "\"Ngilahlekelwe umsebenzi\"", + "\"I learned a lot in my job – that will help me find another one\"": "\"Kuningi engikufundile emsebenzini wami - lokho kuzongisiza ekutholeni omunye\"", + "\"Nobody likes me\"": "\"Akekho umuntu ongithandayo\"", + "\"Last week I did have a great time with...\"": "Kulelisonto eledlule ngibe naso isikhathi esimunandi no...\"", + "\"Bad things always happen to me\"": "\"Ngihlale ngehlelwa izinto ezimbi\"", + "\"This good thing happened the other day...\"": "\"Lento enhle isike yenzekile ngelanga eledlule...\"", + "Change": "Shintsha", + "You’ve completed this week’s workshop.": "Uwuqedile umhlangano wokufundisana waleli sonto.", + "See you soon.": "Sizokubona maduzane.", + "You can always find these tools in the @global.parent_centre": "Lezi zindlela zokusebenza ungazithola njalo ku @global.parent_centre", + "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Ngesonto elizayo, uzoxoxela iqembu lakho indlela okuhambe ngayo ukuzijwayeza ekhaya. Ningasekelana futhi nikhumbuzane phakathi nesonto.", "Home Practice": "Ukuprakthiza Ekhaya", "Small actions, big results! Parents who practice their workshop skills at home get better results.": "Izenzo ezincane, imiphumela emikhulu! Abazali abazijwayeza ekhaya amakhono abawathole ekuqeqeshweni yemhlangano wokufundisana bathola imiphumela emihle.", - "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.": "Ngesonto elizayo, uzoxoxela iqembu lakho indlela okuhambe ngayo ukuzijwayeza ekhaya. Ningasekelana futhi nikhumbuzane phakathi nesonto.", - "How did it go?": "Kuhambe kanjani?", "talk to their teens about how they feel": "xoxa nentsha yabo ngendlela ezizwa ngayo", "talk to your teen about how you feel": "xoxa nengane yahoo esebusheni bayo ngendlela ozizwa ngayo", "Did you experience any challenges when trying to @local.hp_description_second_singular?": "Ingabe uhlangabezane nezinselele ngenkathi uzama ukuthi @local.hp_description_second_singular?", @@ -13,75 +105,92 @@ "Sorry to hear the tips did not help you.": "Uxolo ukuzwa amacebiso awakusizanga.", "Do you want to share with us what you think would help you?": "Uyafuna ukwabelana nathi ngalokho ocabanga ukuthi kungakusiza?", "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!": "Siyabonga ngokwabelana nathi! Ungumzali omuhle ngenxa yokuzama ukuchitha isikhathi nengane yakho esebusheni yakho lokho kwenza umehluko omkhulu. Qhubeka wenza umsebenzi omuhle, ukhumbule ukuthi ngihlale ngilapha ukuze ngikusekele!", - "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Nanka amakhono akuleli sonto ongahamba nawo! \n\nWasebenzise ekhaya futhi ungawathole noma inini ku @global.parent_centre yakho.", - "Relax Together": "Khululekani ndawonye", - "Relax": "Phumula", - "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Ake senze isenzo esifushane sokuphumula ndawonye – sizothatha isikhathi esingaphansi komzuzu futhi uzozizwa ukhululekile.", - "Add this activity to @global.my_relaxes": "Ongeza lo msebenzi ku-@global.my_relaxes", - "Listen and relax": "Lalela futhi uphumule", - "Read and relax": "Funda futhi uphumule", - "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Uyiqhawe!\n\nNuku zone nags sonke iskathi, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole.", - "Welcome @fields.user_name": "Siyakwamukela @fields.user_name", - "It's great to see you again!": "Kuhle ukukubona futhi!", - "Let's see how this week has been.": "Ake sibone ukuthi lihambe kanjani leli sonto.", - "This week you have done...": "Kuleli sonto wenze lokhu...", - "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Ubonisa ukuzibophezela ekubeni umzali kanye nasekuzinakekeleni. \n\nWenza kahle kakhulu.", - "Watch Together": "Bukelani Ndawonye", - "Let's watch a video together!": "Masibukele ividiyo ndawonye!", - "Watch": "Bukela", - "Let's watch a video!": "Masibukele ividiyo!", - "It's great to see you again! Let’s start with a song for families everywhere.": "Kuhle ukuk'bona futhi! Masiqale ngengoma yemindeni ekuyo yonke indawo.", - "Let's Slow Down": "Masehlise Isivinini", - "You’ve completed this week’s workshop.": "Uwuqedile umhlangano wokufundisana waleli sonto.", - "See you soon.": "Sizokubona maduzane.", - "Talk Together": "Khulumani Ndawonye", - "Share ideas, support each other!": "Yabelanani ngemibono, sekelanani!", - "Try it Together": "Kuzameni Ndawonye", - "Let's practice together.": "Asizijwayeza ndawonye.", - "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ukuzijwayeza ekhaya kuyindlela esenza ngayo ukuphila komndeni kube ngcono. Kodwa ngokuvamile kuletha izinselele. \n\nAke sixoxe ngempumelelo kanye nezinselele zethu futhi sisizane ukuze sithole amacebiso amasha esingawazama!", - "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa: \n* Yini ehambe kahle futhi yini ebe yinkinga? \n* Yiziphi izixazululo eningazicabanga ndawonye? \n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho esebusheni bayo!\n\n(Noma ukuzijwayeza khona manje ukuze kube lula kamuva!)", - "Discussion example from @data.workshop.w_1on1.title": "Isibonelo sengxoxo esivela ku-@data.workshop.w_1on1.title", - "Start Positively Together": "Qalani Kahle Ndawonye", - "Welcome @fields.group_name": "Siyakwamukela @fields.group_name", - "It's great to see you again! \n\nLet's start with caring for you.": "Kuhle ukukubona futhi! \n\nAke siqale ngokunakekela wena.", - "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.": "Shintshisanani:\n* Yabelana: Uzizwa kanjani namuhla?\n* Ncoma othile eqenjini lakho ngokuthile akwenze kahle kuleli sonto!\n\nKhumbula ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha. Nonke nifanelwe ukunconywa.", - "Ideas from other families:": "Amacebiso avela kweminye imindeni:", - "Question Time": "Isikhathi Sombuzo", - "It's time for some questions!": "Isikhathi semibuzo ethile!", - "Listen Together": "Lalelani Ndawonye", - "Let's listen to an audio together!": "Masilalele okuqoshiwe ndawonye!", - "Listen": "Lalela", - "Let's listen to an audio!": "Masilalele okuqoshiwe!", - "Why @local.workshop_data.title?": "Kungani @local.workshop_data.title? \nnoma Ngobani @local.workshop_data.title?", - "Hear Sbo's message": "Lalela umyalezo kaSbo", - "Read Sbo's message": "Funda umyalezo kaSbo", - "Today's steps": "Izinyathelo zanamhlanje", - "Read Together": "Fundani Ndawonye", - "Let's read a story together!": "Masifunde indaba ndawonye!", - "Let's read a story!": "Masifunde indaba!", - "Think Together": "Cabangani Ndawonye", - "It's time to think together!": "Sekuyisikhathi sokucabanga ndawonye!", - "Think": "Cabanga", - "It's time to think!": "Yisikhathi sokucabanga!", + "Language": "Ulimi", "Learn Together": "Fundani Ndawonye", "It's time to learn and practice together!": "Yisikhathi sokufunda nokuzijwayeza ndawonye!", "Learn": "Funda", "It's time to learn and practice!": "Yisikhathi sokufunda nokuzijwayeza!", - "Customise @global.parent_app": "Hlela Ngendlela Oyithandayo @global.parent_app", - "Give me quick parenting tips": "Nginike amacebiso asheshayo okuba umzali noma okukhulisa ingane", - "Something really bad happened": "Kwenzeka okuthile okubi kakhulu", - "I have technical problems with the app": "Nginezinkinga zobuchwepheshe ngohlelo lokusebenza kwe app", - "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Uzothola amacebiso esicabanga ukuthi angase abe usizo kuwe la, ngokusekelwe ezimpendulweni zakho zokuhlelwa kwe-app.", + "Listen Together": "Lalelani Ndawonye", + "Let's listen to an audio together!": "Masilalele okuqoshiwe ndawonye!", + "Listen": "Lalela", + "Let's listen to an audio!": "Masilalele okuqoshiwe!", + "Hi @fields.user_name! This week you did:": "Sawubona @fields.user_name! Kuleli sonto wenze lokhu:", + "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points!", + "That’s wonderful!": "Kuhle kakhulu lokho!", + "Nice work!": "Umsebenzi omuhle!", + "Your commitment is not taken for granted.": "Ukuzibophezela kwakho akusiyona into encane.", + "Keep up the good work!": "Qhubeka nokwenza umsebenzi omuhle!", + "This is lovely!": "Kuhle lokhu!", + "Tap yourself on the shoulder. You deserve this.": "Zithinte ehlombe. Kukufanele lokhu.", + "Every @global.parent_point counts!": "Wonke @global.parent_point ubalulekile!", + "Relax now": "Phumula manje", + "Did you relax already? Tap it!": "Ingabe usuphumulile nje? chofoze!", + "Here is a fun activity to do with your teen!": "Nayi imisebenzi emnandi ongayenza nengane eyevile eminyakeni eyishumi nambili!", + "Continue @local.workshop_data.in_text_title": "Qhubeka @local.workshop_data.in_text_title", + "Start @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", + "Finish current workshop": "Qedelela lomhlangano wokufundisana wamanje", + "How did you hear about @global.parent_app?": "Uzwe kanjani nge @global.parent_app?", + "Other": "Ngenye indlela", + "I found it myself": "Ngizitholele ngokwami", + "A friend or family": "Umngani noma ilunga lomndeni", + "Quick Parenting Tips": "Amacebiso Asheshayo Okuba Umzali", + "Raising teens can be hard, and we all struggle sometimes.": "Ukukhulisa intsha kungase kube nzima, futhi sonke sidonsa kanzima ngezinye izikhathi.", + "What is the main challenge you are experiencing right now?": "Iyiphi inselele enkulu obhekene nayo njengamanje?", + "My relationship with my teen is not good": "Ubudlelwane bami nengane yami esebusheni bayo abubuhle", + "My teen’s behaviour is difficult": "Ukuziphatha kwengane yami esebusheni bayo kuyinkinga", + "I feel stressed, lonely, angry": "Ngizizwa ngicindezelekile, nginesizungu, ngithukuthele", + "I have money worries": "Ngikhathazekile ngemali", + "I worry about my teen’s safety": "Ngiyakhathazeka ngokuphepha kwengane yami esebusheni bayo", + "We often fight in our family": "Sivame ukulwa emndenini wami", + "I have a different problem…": "Nginenkinga ehlukile…", + "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ukwakha ubuhlobo obungcono kuqala ngokuchitha isikhathi ndawonye - ngisho nemizuzu emihlanu ngosuku iyawenza umehluko! Ekuqaleni, kungase kube nzima ukuchitha isikhathi ndawonye, njengoba sonke simatasa futhi izingane zethu ezisebusheni bazo zingase zizizwe zingeneme ngezinye izikhathi. Kodwa ukuchitha ngisho nemizuzu eyisihlanu-5 ngosuku ugxile enganeni yakho esebusheni bayo kuyasiza ekwakheni ukwethembana. Zama ukubuza ingane yakho esebusheni bayo ukuthi yini engathanda niyenze ndawonye. Kungaba mnandi futhi kukukhulule nawe!", + "You can get more support on how to spend one-on-one time with your teen here:": "Ungathola ukusekelwa okwengeziwe ngokuphathelene nendlela yokuchitha isikhathi nobabili nengane yakho esebusheni bayo la:", + "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Yonke intsha ngezinye izikhathi iziphatha ngendlela engathandeki! Into eyodwa engasiza ekuziphatheni kwengane yakho esebusheni bayo ukuncoma ingane yakho noma nini lapho yenza kahle - noma ngabe kuncane kanjani. Izingane ezisebusheni bazo zingabukeka sengathi azikuthandi ukunconywa nguwe kodwa empeleni zikuthanda ngempela.", + "You can get more support here on how to encourage good behaviour through praising:": "Ungathola ukwesekwa okwengeziwe lapha mayelana nendlela yokukhuthaza ukuziphatha kahle ngokuncoma:", + "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Ukucindezeleka kokuba umzali kuphezulu kakhulu njengamanje. Siyazi ukuthi ukuphila kungakhungathekisa kangakanani. Ukuzenzela into ethile kunganciphisa ukucindezeleka kwakho. Kukufanele lokhu! Lapho uzizwa ukhungathekile, zilawule ngokuthi udonse umoya ngokunensa kahlanu ngaphambi kokuba uphendule. Abazali abaningi bathole lokhu kuwusizo.", + "You can get more support on how to take care of yourself here:": "Ungathola ukusekelwa okwengeziwe mayelana nendlela ongazinakekela ngayo la:", + "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Awuwedwa. Ukucindezeleka okubangelwa yimali kunzima kakhulu kubazali. Zama ukukhuluma nengane yakho esebushenibayo ngokuthi ingakanani imali engenayo nokuthi yini okudingeka nisebenzise imali kuyo njengomndeni inyanga ngenyanga. Lokhu kungayisiza iqonde ukuthi kungani ungeke ukwazi ukuthenga okuthile ekufunayo. Lapho wonke umuntu eqonda ukuthi imali iyaphi, kulula ukuvumelana nangokuthi ningayonga kanjani imali ndawonye!", + "You can get more support on how to budget and save here:": "Ungathola ukusekelwa okwengeziwe mayelana nokwenza isabelomali nokonga imali la:", + "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Intsha ichitha isikhathi esiningi ingaphandle noma iku-inthanethi, lapho kunzima khona ngathi ukuba siyigcine iphephile - abazali abaningi bakhathazekile ngalokhu. Zama ukuqala ingxoxo nengane yakho esebusheni bayo ngezindawo eziphephile nezingaphephile emphakathini wakho naku-inthanethi (kungase kudingeke ukuba uzame izikhathi ezimbalwa). Kungenzeka yazi nalezo wena ongazazi. Lokhu kungakusiza ukuba nenze uhlelo ndawonye lwendlela yokuzigcina niphephile.", + "You can get more support on how to keep your teen safe here:": "Ungathola ukusekelwa okwengeziwe mayelana nokugcina ingane yakho esebusheni bayo iphephile la:", + "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Uma kuvela inkinga, zamani ukukhuluma ngayo ndawonye. Iyini kahle hle inkinga? Yiziphi izixazululo ezikhona kanti yimiphi imiphumela yezixazululo ngasinye? Ngaleyo ndlela, ungathola isixazululo esingafanela wonke umuntu.", + "You can get more support on how to solve problems together here:": "Ungathola ukwesekwa okwengeziwe mayelana nendlela yokuxazulula izinkinga la:", + "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Akulula ukunakekela imindeni yethu. Sonke sibhekana nezinselele ngezikhathi ezithile, kodwa le-app izokusiza ubhekane nazo ngokuphumelelayo. @global.parent_app isekelwe ocwaningweni lweminyaka eyishumi lwezinhlelo zokukhulisa izingane eNingizimu Afrika, futhi izinkulungwane zabazali ziye zathola ukuthi amacebiso anikezwayo ayasiza ekubhekaneni nezinselele eziningi zokukhulisa izingane. Sinethemba lokuthi le-app izokusiza kanye nomndeni wakho.\n\nNanka amanye amacebiso ayinhloko avivinyiwe angakusiza:", + "Start your first parenting workshop": "Qala umhlangano wokufundisana wakho wokuqala wokuba umzali", + "You will get more support in the @local.workshop_data.in_text_title.": "Uzothola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", + "You can get more support in the @local.workshop_data.in_text_title.": "Ungathola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", + "Start the @local.workshop_data.in_text_title": "Qala i-@local.workshop_data.in_text_title", + "Finish the @local.workshop_data.in_text_title to get more support.": "Qedela i-@local.workshop_data.in_text_title ukuze uthole ukwesekwa okwengeziwe.", + "Continue the @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", + "Re-access the @local.workshop_data.in_text_title": "Phinde ungene ku-@local.workshop_data.in_text_title", + "CHAT": "Xoxa", + "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Xoxa ngokuthi uzizwa kanjani, ukhuthaze umntwana ukuthi akhulume ngalokho okubakhathazayo nabo. Nizozwisisana kangcono nenze icebo elihle ndawonye ukuze nihlale ninempilo futhi nijabulile!", + "CAUTION": "Qaphela", + "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Thola ulwazi lwakho kwimithombo ethembekile khona uzoba nokuzethemba kulezizikhathi ezingaqinisekile. Siyezwa futhi sibona izindaba eziningi kwabanye abantu, emafonini, TV, intanethi. Ingabe kukwenza ungabaze, ukhathazeke, usabe, ucasuke noma udideke? Hlola ngaphambi kokuthi udlulisele kwabanye nagaphambi kokuthi wenze!", + "CHOOSE": "Khetha", + "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Kungabanzima ukuthatha izinqumo ezifanele ezigcina wonke umuntu ephilile futhi ephephile. Ikakhulukazi kulezizikhati. Ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle.", + "CHILL": "Phumula", + "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Ngesinye isikhathi siba nengcindezi. Donsa umphefumulo kakhulu noma nenze into ejabulisayo ndawonye. Kungenza omkhulu umehluko lokhu ekwenzeni ikhaya lakho libe nentokozo nokuthula. Nanka amacebo ongawazama:", + "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Imicabango emibi isenza sisho izinto ezimbi. Zama ukushintsha lokhu okubi okucabangayo ukwenze kube umcabango omuhle!", "WHO Website": "Iwebusayithi Ye-WHO", "UNICEF Website": "Iwebusayithi eye-UNICEF", "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:": "Ukuba ngumzali ngesikhathi se-COVID kunzima. Ziqhenye ngawe ngokwenza lokhu kuze kube manje.\n\nSisebenza kokuqukethwe okusha la ukukusiza ngokukhuluma nentsha yakho nezingane nge-COVID.\n\nUlwazi olusesikhathini samanje ku-COVID-19 lungatholakala kumawebhusayithi we-WHO nawe-UNICEF:", - "This button will take you to the Coronavirus section of the official WHO website.": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-WHO.", - "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "I-URL ithi https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "This button will take you to the Coronavirus section of the official UNICEF website.": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-UNICEF.", "The URL is https://www.unicef.org/coronavirus/covid-19": "I-URL ithi: https://www.unicef.org/coronavirus/covid-19", + "This button will take you to the Coronavirus section of the official WHO website.": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-WHO.", + "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019": "I-URL ithi https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "Update my parenting experiences": "Vuselela isipiliyoni sami ​​njengomzali", "Update my personal details": "Vuselela imininingwane yesiqu sami", "Update my workshop options": "Vuselela izinketho zami zomhlangano wokufundisana", + "Give me quick parenting tips": "Nginike amacebiso asheshayo okuba umzali noma okukhulisa ingane", + "Something really bad happened": "Kwenzeka okuthile okubi kakhulu", + "I have technical problems with the app": "Nginezinkinga zobuchwepheshe ngohlelo lokusebenza kwe app", + "You will find the in-week messages from the previous workshops here.": "Uzothola imilayezo yaphakathi nesonto evela kumasifundisane edlule lapha.", + "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Awukongezi imisebenzi ku @ global.my_activities okwamanje. Kungani ungakhethi ozokwenza?", + "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Awokongezi noma imiphi imisebenzi yokuphumula ku- @ global.my_relaxes okwamanje. Kungani ungakhekhi ozokwenza?", + "You will find tips that we think you may find useful here, based on your answers to the app customisation.": "Uzothola amacebiso esicabanga ukuthi angase abe usizo kuwe la, ngokusekelwe ezimpendulweni zakho zokuhlelwa kwe-app.", + "Relaxation activities": "Imisebenzi yokuphumula", + "Something fun to do with your teen": "Okuthile okumnandi okokwenza nengane yakho esebusheni bayo", "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!": "Ngabe uhlangabezana nezinkinga ezithile zobuchwepheshe? Sazise futhi usisize ukwenza \n@global.parent_app ibengcono!", "Type your name (optional)": "Bhala igama lakho (uma sufisa)", "Contact me on @global.whatsapp": "Ngithinte ku @global.whatsapp", @@ -91,916 +200,24 @@ "Tell us about your issue": "Sitshele ngenkinga yakho", "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!": "Ngesikhathi umama eqala ukungibuza ukuthi ngiyafuna yini ukuchitha isikhathi naye, ngamtshela ukuthi angiyeke ngoba ngangisadlala umdlalo wami. Kodwa waphoqa njengoba ehlezi enza. Ngamtshela ukuthi angangiibukela njengoba ngidlala uma kuyilokho akufunayo. Ngemva kwemizuzu embalwa waqala ukungibuza imibuzo ngomdlalo. Kwakucasula ekuqaleni, kodwa ngemva kwesikhathi ngase ngijabule ngoba ekugcineni wayebonisa ukuthi uyayithanda into engiyenzayo. Waze wacela nokudlala!", "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.": "Ubaba wangitshela ukuthi ngidlala ngokweqile i-basketball masengi phumile esikoleni, ngakho ke kumelwe kubekwe umthetho womndeni. Wangithembisa ukuthi sizocabanga ngesixazululo ndawonye, ukuze sizijabulise sobabili. Ngangingacabangi ukuthi lokho kungenzeka kodwa ngathi, “KULUNGILE, ake sizame”. Sabonisana sabe sesivumelana ngokuthi umthetho uzoba ukuthi kuvumelekile ukudlala i-basketball masengi wenzile umsebenzi wasesikoleni nowasekhaya kuze kube isikhathi sesidlo sakusihlwa njengomndeni. Kunzima kumina ukubona abangane bami bedlala lapho isikole sesiphumile, ngakho ke ngenza okusemandleni ami ukuba ngiqede umsebenzi wasekhaya kuqala bese ngiyahamba ngiyodlala nabo. Manje senginesikhathi sonke kusihlwa sokwenza ezinye izinto engifuna ukuzenza ngemva kokudla isidlo sakusihlwa njengomndeni njengokubukela i-basketball ku-NBA.", - "You will find the in-week messages from the previous workshops here.": "Uzothola imilayezo yaphakathi nesonto evela kumasifundisane edlule lapha.", - "Start": "Qala", - "How would you like to do this workshop?": "Ungathanda ukukwenza kanjani umhlangano wokufundisana?", - "Coming soon": "Kuyeza maduze", - "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Sizodinga ukuxoxa ngezinye izingqinamba zokukhulisa izingane ngaphambi kokuthi siqale ukusebenza \nku- @ local.workshop_data.title.\n\nUngathola izicebiso ezibalulekile ku @local.workshop_data.title nge @global.parent_centre.", - "My name": "Igama lami", - "@global.weekly_workshop day": "Usuku lwe @global.weekly_workshop", - "I do the workshops...": "Ngenza umhlangano wokufundisana...", - "My group's name": "Igama leqembu lami", - "My group is now doing the workshop...": "Iqembu lami lenza umhlangano wokufundisana...", - "I am now doing the workshop...": "Manje ngenze umhlangano wokufundisana...", - "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Ingabe uyaqiniseka ukuthi ufuna ukuvula yonke imhlangano yokufundisana? Lapho usukuvulile khona ngeke usakwazi ukuphinde ukukhiye futhi", - "You can always find these tools in the @global.parent_centre": "Lezi zindlela zokusebenza ungazithola njalo ku @global.parent_centre", - "Add this activity to @global.my_activities": "Faka lo msebenzi ku @global.my_activities", - "Relaxation activities": "Imisebenzi yokuphumula", - "Something fun to do with your teen": "Okuthile okumnandi okokwenza nengane yakho esebusheni bayo", - "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?": "Awokongezi noma imiphi imisebenzi yokuphumula ku- @ global.my_relaxes okwamanje. Kungani ungakhekhi ozokwenza?", - "You have not added any activities to @global.my_activities yet. Why don't you choose some?": "Awukongezi imisebenzi ku @ global.my_activities okwamanje. Kungani ungakhethi ozokwenza?", - "Open Survey": "Vula Ucwaningo", - "Select Language": "Khetha ulimi", - "Workshop Options": "Umhlangano wokufundisana ongakhetha kukho", - "Unlock Workshops": "Vula umhlangano wokufundisana", - "Demo Presentation": "Ukuboniswa noma Isethulo somkhiqizo", - "Organisation Registration": "Ukubhaliswa Kwenhlangano", - "Developer Mode": "Uhlelo Lonjiniyela", - "Unlock all workshops": "Vula yonke imihlangano yokufundisana", - "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.": "Ngokuchofoza inkinobho engezansi uzovula konke ukuqeqeshwa.\n\nQAPHELA: Abasebenzisi akufanele basebenzise lokhu ukuze bavule ukuqeqeshwa, lokhu akutuswa ngaphandle uma kudingeka ngempela.", - "Unlock workshops": "Vula umhlangano wokufundisana", - "All workshops are now unlocked.": "Yonke imhlangano wokufundisana isivuliwe manje.", - "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.": "Ngokuchofoza inkinobho engezansi uzoqalisa kabusha i-app ibuyele kulamasethingi ayo asekuqaleni. \n\nLokhu kucaza ukuthi yoke iinqubekela phambili yakho yentuthuko nokusebenzisa izoqalela phansi futhi i-app yakho izoba sengathi isanda kufakwa.\n\nQAPHELA: Ukusetha kabusha uhlelo le-app lokusebenza kungunaphakade futhi ngeke ukwazi ukuthola noma yiluphi ulwazi.", - "Reset App": "Setha kabusha uhlelo lokusebenza I-App", - "You have successfully entered developer mode.": "Ufake ngempumelelo imodi yonjiniyela.", - "You have entered an incorrect code.": "Ufake ikhodi engalungile. noma fake ikhodi ekungasiyona.", - "Language": "Ulimi", - "How did you hear about @global.parent_app?": "Uzwe kanjani nge @global.parent_app?", - "I found it myself": "Ngizitholele ngokwami", - "A friend or family": "Umngani noma ilunga lomndeni", - "Other": "Ngenye indlela", - "You may be asked to share this code with people who will support your @global.parent_app journey.": "Ungase ucelwe ukuba wabelane ngale khodi nabantu abazokusekela @global.parent_app uhambo lwakho.", - "Last sync at: @local.sync_latest": "Ukuxhumanisa kokungcina: @local.sync_latest", - "This device has never been synced. Sync to reveal your code.": "Le divayisi ayikaze ixhunyaniswe. Yixhumanise khona kuzovela ikhodi yakho.", - "Sync now": "Kuxhumanise manje", - "Syncing...": "Kuyaxhumana...", - "You selected @local.threshold or less": "Ukhethe @local.threshold noma ngaphansi", - "You selected more than @local.threshold": "Ukhethe okungaphezu kuka @local.threshold", - "Reply": "Phendula", - "Days in the past month": "Izinsuku enyangeni edlule", - "Days in the past week": "Izinsuku esontweni elidlule", - "You selected less than @local.threshold": "Ukhethe okungaphansi kuka @local.threshold", - "Unlock for less than @local.threshold": "Vula okungaphansi kuka- @ local.threshold", - "You selected @local.threshold or more": "Ukhethe @local.threshold noma ngaphezulu", - "Video": "Ividiyo", - "Timer": "Isibali sikhathi", - "Press the triangle to help you keep this discussion to @local.timer_duration minutes.": "Cindezela unxantathu ukukusiza ugcine le ngxoxo kumizuzu we- @ local.timer_duration.", - "Options": "Ongakhetha kukho", - "Home": "Ikhasi Lokuqala", - "Settings": "Izilungiselelo", - "Template": "Isifanekiso", - "Tour": "Uhambo", - "In-Week Messages": "Imiyalezo Yaphakathi Nesonto", - "Campaigns": "Imikhankaso", - "Notifications": "Imiyalezo", - "About @global.parent_app": "Mayelana@global.parent_app", - "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.": "@global.parent_app yasungulwa yi-Parenting for Lifelong Health (PLH) - ngokusebenzisana komhlaba wonke phakathi kochwepheshe bokukhuliswa kwabantwana. Labochephes abakwa UNICEF, WHO, amaNyuvesi aseNingizimu Africa nase UK, nama NGO ase Africa kanye nemindeni nentsha yese Africa yonkana. Abazali nentsha basebenzisane nathi kule app futhi basiza ekuqinisekiseni ukuthi kulula ukuyisebenzisa, iyajabulisa futhi iyaheha. Okunye okuqukethwe ile-app, njengeziphakamiso zemisebenzi,izitori ezinezithombe zasungulwa ngokubambisana nabazali nentsha ukuqinisekisa ukuthi ihambisana nezidingo zemindeni.\n\nI-Parenting for Lifelong Health (PLH) izinikele ekutheni ixhase mahala futhi ngokwabelekayo izinto zokukhulisa abantwana nezinye izinhlelo, nokweseka abazali umhlaba wonke ngenhloso yokugqugquzela inhlalakahle yabantwana babo.", - "Finish current workshop": "Qedelela lomhlangano wokufundisana wamanje", - "Here is a fun activity to do with your teen!": "Nayi imisebenzi emnandi ongayenza nengane eyevile eminyakeni eyishumi nambili!", - "Start @local.workshop_data.in_text_title": "Qala @local.workshop_data.in_text_title", - "Continue @local.workshop_data.in_text_title": "Qhubeka @local.workshop_data.in_text_title", - "Hi @fields.user_name! This week you did:": "Sawubona @fields.user_name! Kuleli sonto wenze lokhu:", - "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points!", - "That’s wonderful!": "Kuhle kakhulu lokho!", - "Nice work!": "Umsebenzi omuhle!", - "Your commitment is not taken for granted.": "Ukuzibophezela kwakho akusiyona into encane.", - "Keep up the good work!": "Qhubeka nokwenza umsebenzi omuhle!", - "This is lovely!": "Kuhle lokhu!", - "Tap yourself on the shoulder. You deserve this.": "Zithinte ehlombe. Kukufanele lokhu.", - "Every @global.parent_point counts!": "Wonke @global.parent_point ubalulekile!", - "Relax now": "Phumula manje", - "Did you relax already? Tap it!": "Ingabe usuphumulile nje? chofoze!", - "Looking after yourself matters.": "Kubalulekile ukuzinakekela.", - "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Kuhle! Kuhle uzwa ukuthi kuhamba kahle namuhla. Umuzwa umuhle lowo!", - "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ngezinye izikhathi izinto zihamba kahle. Ngezinye izikhathi azihambi kahle. Futhi ngezinye izikhathi asazi ukuthi sicabangeni.... kulungile lokho! Khumbula ukuthi awuwedwa.", - "This is fantastic, especially in such difficult times as this. You are a star.": "Kuhle kakhulu lokhu, ikakhulu ezikhathini ezinzima njengalezi. Uyiqhawe.", - "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Siyazi ukuthi kukukhathaza kangakanani ukukhulisa izingane kulezi zinsuku. Ukufunda ukulawula ingcindezi kusiza wena - nomndeni wakho.", - "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Sanibonani nonke. \n\nIsihloko sanamuhla sikhuluma ngokulawula ingcindezi. \n\nKubalulekile ukukwazi ukulawula ingcindezi yethu. Ngezinye izikhathi izingane zethu zingaziphatha ngendlela eyenza sibe nengcindezi futhi nathi njengabazali singenza izingane zethu zibe nengcindezi. \n\nNgakho-ke, kubalulekile ukuqaphela lapho sizizwa sinengcindezi bese siyema kancane siphefumule. Lokho kuzokusiza ukulawula ingcindezi kuwe.", - "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza indaba - okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", - "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Ake sibheke isibonelo sendlela ingcindezi engaba mandla ngayo ngezinye izikhathi, kithi sonke:", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver: “Ngiyeke phansi unake izindaba zakho!”", - "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ngenzeni? Awukaze ungilalele!” \n\n@global.w_stress_male_caregiver: “Ngithe ngiyeke uma kungenjalo ngizokushaya!”", - "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bheka! Ngakhe indlu!”", - "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ubani onendaba nendlu yakho embi!”", - "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani? Kanye no-@global.w_stress_male_caregiver wakhe? Kanye @global.w_stress_girl?\n\nYini @global.w_stress_male_caregiver abengayenza ngokuhlukile?", - "How do you think @global.w_stress_teen_boy_1 felt?": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani?", - "And @global.w_stress_male_caregiver?": "Futhi @global.w_stress_male_caregiver?", - "And @global.w_stress_girl?": "Futhi @global.w_stress_girl?", - "Scared": "Ngethukile", - "Each of them was feeling upset for their own reason!": "Ngamunye wabo ubezizwa ediniwe ngezizathu zabo!", - "What could @global.w_stress_male_caregiver have done differently?": "Kungaba yini @global.w_stress_male_caregiver ayenze ngokuhlukile?", - "Recognise why he feels stressed": "Thola ukuthi kungani ezizwa enengcindezi", - "Take a deep breath and speak calmly": "Phefumula bese ukhuluma ngezwi elizolile", - "Show he understands his teen’s feelings": "Ubonisa ukuthi uyayiqonda imizwa yengane yakhe", - "Think about solutions together with @global.w_stress_teen_boy_1": "Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye", - "Do something positive together with @global.w_stress_teen_boy_1": "Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", - "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver anga...", - "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Thola ukuthi kungani ezizwa enengcindezi\n* Phefumula bese ukhuluma ngezwi elizolile \n* Ubonisa ukuthi uyayiqonda imizwa yengane yakhe \n* Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye\n* Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", - "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Siyabonga ngokuthi nicabanga kanye nathi! Ake sibuyele emuva sibone lokho @global.w_stress_male_caregiver akwenzayo njengamanje:", - "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver ulahlekelwe umsebenzi. Ubehlezi ekhaya ekhungathekile futhi enengcindezi, ngesikhathi @global.w_stress_teen_boy_1 engena.", - "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver (uyaphefumula): “Ngiyaxolisa ndodana. Ngibe losuku okunzima namuhla. Umphathi ungixoshile emsebenzini.”", - "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Awee! Ngidinga umfaniswano wesikole.” \n\n@global.w_stress_male_caregiver: “Ngizozama ndodana, futhi u @global.w_stress_female_caregiver wakho uzosisiza uma ngisafuna omunye umsebenzi.”", - "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Ngingakusiza nami ukufuna umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: Cha, kulungile! @global.w_stress_teen_boy_1. Ngiyabonga ngokufisa ukungisiza. Into ebaluleke ukuzedlula zonke ukuthi usebenze kanzima esikoleni. Ngiyabonga ngokuthi ungilalele.”", - "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Ake sidlale ibhola lezinyawo ndawonye. Kuzongisiza ngisuse lengcindezi kancane emqondweni wami.” \n\n@global.w_stress_teen_boy_1: “Kulungile, @global.w_stress_male_caregiver!”", - "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Lokhu kuhambe kangcono kakhulu! \n\nUkuthatha ikhefu kusiza siphendule ngokuzolile uma uzizwa ucasukile noma ukhathazekile. Kuzame, uzobona!", - "Safety Amnesty": "Ukuphepha Kukashwele", - "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Cabanga ngesikhathi usesemusha. \n\nIngabe kwake kwaba nesikhathi lapho waba sengozini kodwa ungakwazi ukutshela umndeni wakho ngoba usaba ukuthi uzothukuthela?\n\nLokho CISHE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Ake sibone:", - "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: “Ungabatsheli abantu abadala, kodwa ngiya etshwaleni nabangane bami namuhla kusihlwa” \n\n@global.w_stress_teen_girl: “Ube nesikhathi esimnandi! Ngibatshele ukuthi ngiya kumngane wami wentombazane, kodwa empeleni ngiya ephathini emnandi”", - "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ngicabanga ukuthi bathengisa izidakamizwa. Sonke singaboshwa. Kodwa angikwazi ukutshela abazali bami - bazothukuthela kakhulu”", - "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ngethukile kakhulu. Wonke umuntu udakiwe ukuba angashayela angihambise ekhaya. Lo mfana uthi angangihambisa kodwa uthi ufuna sidlule kubo kuqala. Angakwazi ukutshela abazali bami - ngiqambe amanga ngokuthi ngiya ephathini.”", - "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Lezi yizimo eziyingozi! Siyabonga, @global.w_stress_teen_boy_2 u @global.w_stress_teen_girl bakhumbulile ukuthi @global.w_stress_parent ubatsheleni: \n\n“Nginendaba nokuphepha kwakho ukudlula noma yini enye. Uma uthukuthele, noma uthukile, ungangishayela ucingo noma nini uma ufuna usizo noma ufuna ukukhuluma. \n\nMane uthi ‘USHWELE WEZOKUPHEPHA’. Ngiyathembisa ukuthi ngizozama okusemandleni ukusiza futhi angeke ngithukuthele - ngisho noma wenze okuthile ebekungakafaneli ukwenze.”", - "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicela uze uzongilanda? Ngidinga ukuhanjiswa ekhaya.”", - "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicabanga ukuthi abangane bami basenkingeni. Angifuni ukuyeka ukuba umngane wabo, kodwa ngikhathazekile ngabo. Singakhuluma?”", - "BREATHE. Slowly. Pause.": "PHEFUMULA. Kancane. Yima.", - "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Ngaphambi kokuthi usho okuthile, phefumula kancane uphinde ukhiphe umoya izikhathi ezinhlanu. Kuzokwenza wehlise umoya, kukunikeze nethuba lokucabanga.", - "SHARE how you feel": "KHULUMA ngendlela ozizwa ngayo", - "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Lokhu kunzima. Iningi lethu latshelwa ukuthi lingakhali, noma libonise imizwa ezinganeni. Kodwa phefumula bese ngomoya ozolile ubatshele indlela ozizwa ngayo. Bazokuqonda kangcono, futhi bafunde kuwe ukubhekana nengcindezi.", - "SHOW them you care": "BABONISE ukuthi uyabakhathalela", - "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Nalokhu kunzima! Ingcindezi isenza sicabange ngathi kuphela. Kodwa izingane zethu zidinga ukuthi sizisekele. Babuze ukuthi bazizwa kanjani. Balalele futhi ubaduduze. Zama ukubanga noma ubatshele ukuthi ‘Ngiyaqonda’. Kungashintsha yonke into.", - "SEEK the positive": "BHEKA okuhle", - "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Ungakwazi yini ukuthi wena kanye nengane yakho ukuthi nicabange ngamacebiso angasiza? Ningakwazi yini ukwenza okuthile okuhle ndawonye okususa ingqondo yakho kwingcindezi?", - "If all else fails, breathe. You can do this.": "Uma konke kungaphumeleli, phefumula. Ungakwazi ukukwenza lokhu.", - "There are two home practices for this week.": "Kubili ongakuprakthiza ekhaya kuleli viki.", - "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Uma uzizwa unengcindezi noma uthukuthele: donsa umoya uphinde uwukhiphe kahlanu ngaphambi kokuba uthathe isinyathelo. \n\nUma nobabili seniwehlisile umoya, khuluma nomntwana wakho umtshele ngendlela ozizwa ngayo.", - "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Xoxani “ngoshwele wezokuphepha” nengane yakho, bese nicabange ngesimo lapho ningakusebenzisa khona lokhu.", - "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Ngaso sonke isikhathi uthatha ikhefana ngaphambi kokuphendula, nanoma inini lapho wenza okuthile kokuvikela ingane yakho, chofoza i @global.parent_points ujabulele impumelelo yakho!", - "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nNgesonto elizayo, sizokhuma ngemali - uzodinga: \n* isiqeshana sephepha/ukhadibhothi\n* ipeni \n* amatshe awu-20 amancane/obhontshisi/okusanhlamvu \n\nKuzoba mnandi!", - "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Kuhle ukuthi kuhamba kahle namuhla! Iyiphi into eyodwa ehambe kahle namuhla? Khumbula ukuzincoma ngayo.", - "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Uxolo ukuzwa ukuthi awuzizwa kahle namuhla. Wenze kahle ngokuthi uyiqaphele leyo mizwa, nokuzama ukwehlisa umoya nokuba nomusa kuwe. Ubekela umndeni wakho isibonelo esihle.", - "Every small thing you do matters. We hope you are proud of yourself too.": "Zonke izinto ezincane ozenzayo zibalulekile. Sethemba ukuthi nawe uyaziqhenya ngawe.", - "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Yonke imindeni ibhekana nezinkinga. Uma sizilungiselela ndawonye futhi sazi ukuthi sizoluthola kuphi usizo NGAPHAMBI kokuthi okuthile okubi kwenzeke, singakwazi ukubhekana nezinkinga.", - "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Sanibonani, nonke.\n\nIsihloko sanamuhla simayelana nokubhekana nezinkinga.\n\nIzinkinga zingavela nomaphi. Izinkinga zingavela noma nini. Ngakho-ke, kubalulekile ukuthi njengomndeni nibe nezinhlelo zokuthi nizokwenza kanjani uma ilunga lomndeni lizithola lisenkingeni. \n\nKubalulekile ukuba nezinhlelo ukuze ilungu ngalinye lomndeni lizizwe livikelekile. \n\nLapho sibhekele nenkinga, kumelwe sikhumbule ukuma, sidonse umoya, bese sizigcina sizolile. Lokho kuzokusiza ubhekane nenkinga ngendlela engcono.", - "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Indatshana kanye nengxoxo\n* Indatshana kanye nengxoxo\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba\n* Indatshana kanye nokubuyekeza indaba\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Inkinga ingavelela noma ubani. \n\nAke sibone ukuthi yini eyenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver wakhe:", - "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Bandla sthandwa sami, ubonakala uthukuthele ngempela, ungathanda ukungitshela ukuthi kwenzekeni?”", - "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Umalume, u... u... ubengithinta.” \n\n@global.w_crisis_female_caregiver (uyacabanga): “Donsa umoya kakhulu... Idingani ingane yami? Idinga ukuthi ngehlise umoya bese ngiyalalela” \n\n@global.w_crisis_female_caregiver: “Woza uzohlala la eduze kwami. Thatha isikhathi, ngikulalele.”", - "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Ngiqinisile, u... u... ungenze ngakwenza! Ungenze ngaya ocansini naye! Bengingafuni, ngiyafunga, ngize ngasho nokuthi CHA, kodwa wathi ngizoba senkingeni.”\n\n@global.w_crisis_female_caregiver: “Ngiyabonga ngokungitshela lokhu. Awukho enkingeni. Lokhu akulona iphutha lakho.”", - "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: “Izolo ngesikhathi uhambile uyobona u@global.w_crisis_adult_friend. Uvele wafika kungaleso sikhathi okwenzeke ngaso.”\n\n@global.w_crisis_female_caregiver: “Kulungile, ngiyakukholwa ngane yami. Yinto enkulu lena futhi sizoyithola indlela yokuthola usizo esiludingayo. Singaya kuphi ukuze sithole usizo?\n\n@global.w_crisis_teen_girl_1: “Esikoleni sami?”", - "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Ah ngiyazi, ake sihambe siye emtholampilo. Bazokwazi ukuthi yini okumelwe siyenze ukuze sikusize. Ingabe lokhu kuzwakala kukahle kuwe?”\n\n@global.w_crisis_teen_girl_1: “Yebo... Kulungile... Kodwa ngicela ukuhamba nawe?”", - "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Nakanjani ngizokwenza . Bese @global.w_crisis_teen_girl_1? Khumbula ukuthi lokhu akulona iphutha lakho.” Ngiyakuthanda. Ungumuntu okahle. Sizodlula kulokhu.”", - "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_girl_1 naku @global.w_crisis_female_caregiver! Lokhu kungenzeka kubafana nakumantombazane.", - "What skills did @global.w_crisis_female_caregiver use?": "Imaphi amakhono u @global.w_crisis_female_caregiver awasebenzisile?", - "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Yebo, @global.w_crisis_female_caregiver uwasebenzise wonke amakhono – nawe ungenza kanjalo!", - "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Enye inkinga abazali abakhathazeke ngayo udlame nobugebengu. Ake sibheke isibonelo ndawonye.", - "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ubukela ukhathazekile kusukela izolo. Ingabe kukhona okungalungile?”", - "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Izolo, mina nabangane bami sihambe sayobuka umdlalo webhola lezinyawo. Abanye abafana ababedakiwe baqala ukulwa nomngane wami.\" \n\n@global.w_crisis_male_caregiver_1: “Qhubeka, ngilalele. Ngithemba ukuthi awuzange ulwe?”", - "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Bengingafuni, kodwa bengingeke ngime ngibukele beshaya umngane wami, ngakho-ke...”\n\n@global.w_crisis_male_caregiver_1: “Ngakho, ulwile ukuze uvikele umngane wakho?”", - "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Wonke umuntu ubelwa. Ngibone umuntu elele phansi kwidamu legazi. Ubebonakala... efile.”", - "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ngiyajabula ukuthi ungitshele ngalokhu, @global.w_crisis_teen_boy_1. Ake sihlale phansi manje sixoxe ngokuthi ingabe kuyadingeka ukuthi sibandakanye amaphoyisa noma omunye umuntu ukuba asize.”", - "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Ngiyabonga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Sizodlula kulokhu. Khumbula, sizokweseka njengomndeni.”", - "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_boy_1 naku @global.w_crisis_male_caregiver_1!", - "What skills did @global.w_crisis_male_caregiver_1 use?": "Imaphi amakhono u @global.w_crisis_male_caregiver_1 awasebenzisile?", - "All these skills can help in a crisis.": "Wonke lamakhono angasiza lapho kunenkinga.", - "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Inkinga ingasenza sizizwe sicasukile noma singenalusizo. Kodwa kungaleso sikhathi lapho abantwana bethu bedinga siphefumule, silalele futhi sicabange.", - "BREATHE": "PHEFUMULA", - "Stay calm. Ask yourself ‘what does my teen need right now’": "Hlala uzolile. Zibuze ‘yini edingwa ingane yami njengamanje’", - "Tell them you are there for them and love them.": "Batshele ukuba ukhonela bona futhi uyabathanda.", - "THINK": "CABANGA", - "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Khuluma nengane yakho. Yini engasiza kulesi simo? Kungase kudingeke wenze izinhlelo ezisheshayo manje, bese wenza izinhlelo zesikhathi esizayo kamuva.", - "You can be proud of yourself for exploring ways to get help!": "Ungaziqhenya ngokuthola izindlela zokuthola usizo!", - "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Kuyasiza ukukuprakthiza ukubhekana nenkinga engaqubuka ngaphambi kokuba yenzeke. \n\nBheka lezi zikhathi ezinhlanu zezinkinga zomndeni. Zicabange uwumzali: Yini obungayenza?\n\nKhumbula: PHEFUMULA - LALELA - CABANGA", - "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Inkinga 1: @global.w_crisis_teen_boy_2 ukulwa esikoleni", - "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Angikaze ngikwenze lokhu ngaphambili. Njengamanje ngizoxoshwa\"", - "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Inkinga 2: @global.w_crisis_teen_girl_1 uyakhulelwa", - "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ngizizwa nginamahloni. Angazi ukuthi ngenzenjani”", - "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Inkinga 3: @global.w_crisis_teen_boy_2 ukhulelisa intombazane", - "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Angifuni ukuba nengane\"", - "How could you respond to @global.w_crisis_teen_boy_2?": "Ungasabela kanjani ku @global.w_crisis_teen_boy_2?", - "Crisis 4: Someone in the family gets sick": "Inkinga 4: Ilunga lomndeni liyagula", - "\"The test said I have HIV. I’m scared I’m going to die\"": "“Ukuhlolwa kwegazi kuveze ukuba ngine-HIV. Ngiyesaba ukuthi ngizofa”", - "How could you respond in this situation?": "Ungasabela kanjani kulesi simo?", - "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Inkinga 5: @global.w_crisis_teen_girl_1 uphoqwe yisoka lakhe ukuba enze ucansi", - "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Bengingafuni ngempela ukuya ocansini. Manje sengizokhulelwa noma ngigule. @global.w_crisis_female_caregiver, Ngiyesaba kakhulu...\"", - "How could you respond to @global.w_crisis_teen_girl_1?": "Ungasabela kanjani ku @global.w_crisis_teen_girl_1?", - "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Khumbulani ukusekelana nokukhuthazana. Kunzima ukuhlale nizolile futhi nilalelana uma kunenkinga - siyaziqhenya ngani.", - "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Wena nengane yakho khethani isimo esisodwa kulezi (noma ungacabanga esinye!). Buka opopayi, nixoxe ngokuthi ningenze njani uma lokhu kungenzeka kumngani noma ilungu lomndeni. \n\nBese uyakhumbula: PHEFUMULA - LALELA - CABANGA", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa kweviki elizayo kuzobungaza nina nonke, futhi kunisize nihlelele ikusasa. \n\nKungani ningahleli ukuba nomcimbi wokudla ndawonye, nilungise nomculo uma nithanda ukudansa!", - "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa ngeviki elizayo kuzobe kubungaza wena, futhi ungakhetha ukusekelwa okufunayo ukuqhubekela phambili. \n\nUngalungiselela okuthile kokuzithokozisa okungajatshulelwa - okuthile othanda ukukudla, noma umculo othanda ukuwulalela!", - "Self-care is a key parenting tool.": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali.", - "How are you feeling today?": "Uzizwa kanjani namuhla?", - "So good to hear you are feeling well today. You are incredible!": "Kuyajabulisa ukuzwa ukuthi uzizwa uphilile namhlanje. Uyamangalisa!", - "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Uxolo ngokuthi isimo sinzima njengamanje. Donsa/khokhe umoya, uphefumule futhi wazi ukuthi ubalulekile.", - "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Ungasiza ingane yakho iqonde ukuthi ukuphula imithetho yasekhaya kunemiphumela. \n\nKodwa INDLELA owenza ngayo ebalulekile. \n\nUkuthola imiphumela efanele kusiza umntwana ukuthi aziphathe kahle futhi kwenza umndeni uphile ngokuthula...", - "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sithi imiphumela eyethulwa ngendlela ezolile.\n\nKubalulekile ukuthi lapho sethula umphumela ebantwaneni bethu sibabandakanye nabo, kodwa kubalulekile nokuthi sizole lapho sethula imiphumela.\n\nLokhu kuzosisiza sivumelane ngokwethula imiphumela ngendlela ezolile ebantwaneni bethu futhi abantwana bazoyikhumbula kalula lapho sibabandakanya futhi lokho kuzobenza baziphathe kahle.", - "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Indatshana kanye nengxoxo – okungasebenzanga ...\n* Izibonelo zemiphumela\n* Amathuluzi: Indlela yokwethula imiphumela ngomoya ophansi\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiphumela\n* Indatshana kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekezwa kwendaba - lokho akungasebenzanga ...\n* Izibonelo zemiphumela\n* Izindlela: Indlela yokwethula imiphumela ngesizotha\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiohumela yokungayilandeli imithetho\n* Indaba kanye nokubuyekezwa kwendaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Ake sifunde ngokwenzekile ku @global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver wakhe:", - "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ubani isikhathi manje? Ufike emva kweskhathi!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awulandeli umthetho wethu! Ngizokushaya!”", - "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Akunabo ubulungiswa lokho! Awungilaleli neze!! Ngiyakuzonda!”", - "Discuss together: \n* Why did giving a consequence this way not work well?": "Xoxani ndawonye: \n* Kungani ukwethulwa kwemiphumela ngale ndlela kungasebenzanga kahle?", - "Giving a consequence this way did not work well because...": "Ukwethulwa kwemiphumela ngale ndlela akusebenzanga ngoba...", - "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver ubediniwe", - "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver akavumanga @global.w_consequence_teen_boy_1 achaze", - "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Imiphumela beyingaxoxwanga kusengaphambili no @global.w_consequence_teen_boy_1", - "The consequence was too strong": "Imiphumela beyiqine kakhulu", - "Why did giving a consequence this way not work well?": "Kungani ukwethulwa kwemiphumela ngalendlela kungasebenzanga kahle?", - "Yes, a strong reaction like that just made everyone more angry and upset.": "Yebo, ukusabela ngendlela enokuchwensa ngalendlela kwenze wonke umuntu wathukuthela kakhulu futhi wacasuka.", - "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Kuvamile ukuthi abantwana bayiphule imithetho. Ukukhula kuyisikhathi ezinzima uma besafunda ukuthi bangobani. \n\nNgenhlanhla, kunezindlela zokukhuza abantwana ngaphandle kokucasuka noma ukuba nodlame... futhi zisebenza kahle!\n\nUkwethula imiphumela ngomoya ophansi kusiza izingane zifunde ukuthi ezikwenzayo kunemiphumela – emihle noma emibi. \n\nNazi ezinye izibonelo - zicabange uwumzali:", - "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ukwethula imiphumela ngomoya ophansi kumelwe kube... \n\nOKUNOBULUNGISWA: Okungaqinile ngokweqile futhi angakwazi ukukwenza \n\nNJENGAMANJE: Nika umntwana imiphumela ngalesosikhathi kwenzeka \n\nNGENDLELA EFANAYO : Nika umphumela ofanayo ngaso sonke isikhathi", - "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.", - "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.\n\nYimuphi umphumela ongasiza lapha?", - "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Imiphumela ayifani nesijeziso: inika izingane zethu ithuba lokufunda ukumelana nezenzo zabo.\n\nIyalawuleka FUTHI isebenza kangcono kunokushaya noma ukuthetha!", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.", - "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.\n\nYimuphi umphumela ongasiza lapha?", - "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Imiphumela isebenza kangcono uma kuxoxisanwa futhi kuvunyelwane ngayo nomntwana ngaphambi kokuthi isetshenziswe.\n\nOkunye futhi: akuyona yonke imiphumela emibi... Ningabuye nivumelane ngemiphumela EMIHLE yokwenza izinto EZINHLE ukuze ubone ukuziphatha okuhle okwengeziwe!", - "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.", - "What consequence would help here?": "Yimuphi umphumela ongasiza lapha?", - "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.\n\nYimiphi imiphumela emihle engasiza lapha?", - "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Indlela owethula ngayo imiphumela ngesizotha iyasiza. Khumbula, uma ubandakanya umntwana wakho, izinto ziba ngcono!", - "EXPLAIN": "CHAZA", - "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Bheka ukuthi nobabili ninomoya ophansi yini. Phefumula izikhathi ezimbalwa. Chazela ingane yakho ukuthi kungani ukhathazekile ngokuziphatha kwayo.\n\nChaza ukuthi kungani umthetho ubalulekile. Ungamtshela indlela ozizwa ngayo - kulungile ukusho ukuthi uphoxekile.", - "AGREE": "VUMA", - "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Hlela nengane yakho ngemiphumela yokulandela neyokungawulandeli umthetho.\n\nBacele baveze imibono yabo. Khulumani nize nivumelane ngokuthile okuzosebenza.\n\nYenza umphumela WOKUNGALANDELI umthetho nelungelo azolithola uma ethe WALANDELA umthetho.", - "ACT": "THATHA ISINYATHELO", - "When your teen follows the rule, give praise and privileges!": "Uma ingane yakho iwulandela umthetho, yincome bese uyinikeza amalungelo!", - "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Bazozizwa behlonishwa futhi bebalulekile. Khumbula: Uma sibancoma njalo, bazothuthukisa kakhulu ukuziphatha okuhle!", - "When your teen does not follow the rule, follow through with the consequence.": "Uma ingane yakho ingawulandeli umthetho, qhubeka nomphumela enivumelene ngawo.", - "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Uma ingane yakho iphula umthetho, ngomoya ophansi mkhumbuze ngomphumela walokho. Lokho kumelwe kube OKUNOBULUNGISWA (akumelwe kube nokhahlo kakhulu), NGALESOSIKHATHI (kwenze ngaso leso sikhathi) UNGASHINTSHI (okufanayo ngaso sonke isikhathi).", - "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Xoxani ndawonye:\n* Yimiphi imithetho izingane zakho ezivame ukuyiphula? \n * Yimuphi umphumela ongawusebenzisa emthethweni othile ophuliwe? \n\nImiphumela kumelwe ibe: \nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGOKUSHESHA (kwenze ngaso leso sikhathi) \nUNGASHINTSHI (okufanayo ngaso sonke isikhathi).\n\nNcomanani futhi nikhuthazane – singanikana amandla!", - "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Ake sibuyele ku @global.w_consequence_teen_boy_1 naku @global.w_consequence_male_caregiver wakhe", - "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ngikhathazekile ngokuthi namanje usabuya kuhlwile ekhaya, @global.w_consequence_teen_boy_1. Yini esingayenza ukuze sikusize ukhumbule ukuthi ubuye ngesikhathi esivumelene ngaso ekhaya?\"\n\n@global.w_consequence_teen_boy_1: “Uma ngingafika ngesikhathi ekhaya, mhlawumbe ngingahlala imizuzu engu-30 kunangesikhathi esivamile sokulala?”", - "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Umbono omuhle lowo! Yini okumelwe siyenze uma ungawulandeli umthetho? \n\n@global.w_consequence_teen_boy_1 (uyabubula): “Ngmluuhm”", - "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Khuluma, ngiyazi ukuthi kukhona okuthile okucabangayo.” \n\n@global.w_consequence_teen_boy_1: “Kulungile…. Kunganjani: uma ngenza umsebenzi wesikole?”", - "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Kumele uwenze umsebenzi wakho wesikole noma kunjalo. Uma uwukhohlwa umthetho, kuyinto elungile ukuthi ungababoni abangane bakho ngosuku olulandelayo.\" \n\n@global.w_consequence_teen_boy_1: “Kulungile, @global.w_consequence_male_caregiver.\"", - "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Ngosuku olulandelayo...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani isikhathi! Sekuhlwile!”", - "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", - "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kuphakathi namabili futhi ubuye ekhaya sekudlule isikhathi esivumelene ngaso. Noma ngabe yisiphi isizathu, kumelwe uqonde ukuthi lokhu akwamukelekile. @global.w_consequence_female_caregiver bengikhathazeke kakhulu.”", - "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Abangane bami bebafuna ngihlale isikhathi esijana nabo. Bebengibiza ngengane ngoba besengifuna ukuya ekhaya.” \n\n@global.w_consequence_male_caregiver: “Ngiyazi ukuthi kungaba nzima ukuthi cha kubangane bakho. Ake sikhulume ngalolu daba ekuseni uma sesiphumulile.”", - "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa ngokukukhathaza futhi @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ngiyabonga. Njengamanje hamba uyolala, kodwa ngifuna kucace, njengoba ubuye ekhaya sekudlule isikhathi esivumelene ngaso, awuvumelekile ukuphuma kusasa kusihlwa.”", - "Let's talk about this story": "Ake sikhulume ngalolu daba", - "Using a consequence worked well this time because...": "Ukusebenzisa umphumela kusebenze kahle lana ngoba...", - "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver baxoxe ngemiphumela ngesikhathi bobabili bezolile", - "They agreed on consequences together": "Bobabili bavumelene ngemiphumela", - "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver usabele ngomoya ophansi kodwa engagwegwesi ngesikhathi @global.w_consequence_teen_boy_1 ephule umthetho", - "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver ulalele @global.w_consequence_teen_boy_1", - "The consequence was realistic and appropriate": "Umphumela ubunengqondo futhi ufanelekile", - "Why did using a consequence work well this time?": "Kungani ukusebenzisa umphumela kusebenze kahle kulokhu?", - "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Kungaba yimuphi umphumela owethulwa ngomoya ophansi ezinganeni zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla? \n\nKhumbula ukuthi kumelwe ube : \nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSI", - "Not seeing any friends for a month": "Ukungaboni abangane inyanga yonke", - "This may be hard to do for you and also too harsh!": "Lokhu kungase kube nzima ukukwenzela futhi kube nzima kakhulu!", - "Cancelling their birthday plans in a month’s time": "Ukukhansela izinhlelo zabo zokuzalwa esikhathini esingangenyanga", - "This is too far in the future, and too harsh as well!": "Lokhu kukude kakhulu esikhathini esizayo, futhi kulukhuni kakhulu!", - "No TV this evening": "Ukungabukeli i-TV namuhlanje kusihlwa/ntabama", - "Perfect, this sounds fair and can be done straight away": "Kuhle, kuzwakala kunobulungisa futhi kungenziwa khona manje", - "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Hlela umphumela owethulwa ngomoya ophansi wezingane zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla. Khumbula ukuthi kudingeka ube \n\nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSHI", - "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Umsebenzi wasekhaya kuleli viki kuzoba ukukhulumisana nengane yakho ngomphumela OWODWA ongemuhle nomphumela OWODWA omuhle.\n\nImiphumela kumelwe ibe:\nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGALESOSIKHATHI (kwenze ngaso leso sikhathi)\nUNGASHINTSHI (okufanayo ngaso sonke isikhathi)", - "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Ukuziphatha okungamukelekile: Ukufika ekhaya sekudlule isikhathi ekuvunyelwene ngaso. \n\nUmphumela Ongemuhle: Awuvunyelwe ukubona abangane bakho nosuku olulandelayo. \n\nUkuziphatha okungamukelekile: Ukukhuluma kabi ngokungenanhlonipho. \n\nUmphumela Ongemuhle: Bhala incwadi yokuxolisa. \n \nUkuziphatha Okuhle: Ukusiza ngokuyothenga. \n\nUmphumela Omuhle: Imizuzu engu-30 eyengeziwe yokwenza okuthile akuthandayo. \n\nUkuziphatha Okuhle: Ukusiza ngokugada izingane zasekhaya ezincane. \n\nUmphumela Omuhle: Ihora elilodwa elengeziwe lokuba nabangani ngempelasonto.", - "Great!": "Kuhle!", - "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ngiyazi ukuthi ukuphila kungaba nzima. Ngiyaziqhenya ngawe. \n\nKungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha!", - "Using the app together": "Ukusebenzisa i-app sisonke", - "It’s great to see you!\n\nFirst, let’s help your group get started.": "Kuhle ukukubona!\n\nOkokuqala, masisize iqembu lakho ukuthi liqale.", - "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Vumelanani ngemithetho ndawonye:\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto?\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu?\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile?\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa?", - "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Ungalushintsha noma nini usuku lokuqeqeshwa kwakho noma igama leqembu lenu ku @global.weekly_workshop_options.", - "Some rules that other groups made:": "Eminye yemigaqo/imithetho ebekwe amanye amaqembu:", - "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "Vumelanani ngemigaqo ndawonye\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa", - "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Uyiqhawe! \n\nNsuku zonke, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole. \n\nKhumbula, uthola i @global.parent_point njalo lapho uzinakekela - ubalulekile!", - "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ukuba umzali kungaba nzima kakhulu. Ngezinye izikhathi siba nomuzwa wokuthi izingane zethu azisilaleli.\n\nKodwa isayensi ibonisa ukuthi ukuchitha imizuzu nje embalwa usuku ngalunye nobabili nengane yakho kusiza ekwakheni ukwethembana nothando.", - "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Lapho uchitha isikhathi nengane yakho kulapho ugxila kuyo, ngaphandle kokuphazanyiswa yi-TV noma omakhalekhukhwini. Yivumele ihole kulokho enikwenzayo noma enixoxa ngakho.\n\nKuhle uma ningachitha imizuzu engamashumi amabili ngosuku, kodwa ngisho nemizuzu emihlanu mihle kakhulu.", - "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Sanibona.\n\nIsihloko sethu namhlanje ukuchitha isikhathi nezingane zethu.\n\nKubalulekile ukuchitha isikhathi nezingane zethu ukuze zikwazi ukusiqonda, nokuthi nathi sithole ithuba lokuziqonda. \n\nKhumbula, umndeni oqondana kahle uphila ngokuzwana.", - "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", - "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Imisebenzi yokuzinakekela\n* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", - "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Yabelana ngamacebiso! \n\nYiziphi izinto ongazenza ukuze uchithe isikhathi nezingane zakho ezi sebusheni bazo?\n\nUzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Yiza namacebiso okuchitha isikhathi nengane yakho angadli isikhathi esengeziwe, njengokuhamba ndawonye niye ezitolo.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuyango kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", - "Let's think of ways to spend one-on-one time with your teen.": "Masicabange ngezindlela zokuchitha isikhathi nengane yakho esebusheni bayo.", - "What could you do to spend one-on-one time with your teen?": "Yini ongayenza ukuze uchithe isikhathi nengane yakho esebsheni bayo?", - "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Uzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Ukhumbule nokucabanga ngezindlela ezingadli isikhathi esengeziwe.", - "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuya kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", - "DAY - Try to do it every day": "USUKU – Zama ukukwenza nsuku zonke", - "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Thola imizuzu emihlanu (noma ngaphezulu!) usuku ngalunye lapho ingane yakho engenalutho olunye efuna ukulwenza.", - "PLAY - Let your teen choose": "DLALA - Vumela ingane yakho esebusheni bayo ukuba ikhethe", - "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Tshela ingane yahoo esebusheni bayo ukuthi ungathanda ukuchitha isikhathi nayo nokuthi ingakhetha lokho efuna ukukwenza noma efuna ukukhuluma ngakho. Ingase idideke ekuqaleni kodwa ngokuhamba kwesikhathi izokujabulela ukuchitha isikhathi nawe!", - "STAY - Focus on your teen": "HLALA - Gxila enganeni yakho esebusheni bayo", - "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Vala umabona kude (TV) ubeke eceleni omakhalekhukhwini. Bheka ingane yakho. Nqekuzisa ikhanda noma uthi “Ngiyabona” ukuze ubonise ukuthi ulalele ngempela. Yamukela ekushoyo ngaphandle kokuyahlulela.", - "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Ukuchitha isikhathi nengane yakho esebusheni bayo kungaba mnandi nakuwe! Kunganciphisa nokucindezeleka kwakho.", - "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Chitha imizuzu eyishlanu -5 kuya kwengu-20 nengane yakho esebusheni bayo uma ungakwazi kuleli viki.", - "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Khumbula - noma nini uma ukwazi, phumula, naka futhi uzivuze. \n\nZinakekele nsuku zonke. Ubalulekile!", - "Remember that YOU matter!": "Khumbula ukuthi UBALULEKILE!", - "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Usebenzile ngokuthi uqaphele ukuthi unemizwa emihle. Ngiyajabula ukuzwa ukuthi uzizwa kahle namuhla!", - "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Usebenzile ngokuthi uqaphele ukuthi unemizwa enzima. Kulungile ukungazizwa kahle ngezinye izikhathi. Khumbula ukuthi awuwedwa.", - "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Kuhle kakhulu lokhu. Yonke le mikhuba yenza umndeni wakho uqine. Ziqhenye.", - "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Imithetho yenza abantwana bethu ukuthi yini elindeleke kubo. \n\nAbantwana bayayilandela imithetho uma wenze imithetho NABO futhi ubancome ngalokho!", - "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Sanibonani, nonke. \n\nIsihloko sanamuhla imithetho. \n\nImithetho ikhuthaza ukuthula ekhaya futhi ikhuthaza ukuqondana phakathi kwamalungu omndeni. \n\nImithetho ithuthukisa izibopho zelungu lomndeni ngalinye, ngakho-ke kubalulekile ukuba umndeni ube nemithetho. \n\nIkhaya elinemithetho umndeni uphila ngokuthula.", - "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ... \n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ... \n* Indaba kanye nokubuyekeza indaba - okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Ake sifunde ngokwenzeke ku @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 wakhe:", - "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Uhlale ubuya sekuhlwile ekhaya!”\n\n@global.w_rules_teen_boy: “Cha angazi, angazi nokuthi kusuke kungubani isikhathi uma sekuhlwile! Yeka ukungicasula.”", - "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Yimuphi umthetho oqondile @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 abangawenza ndawonye?", - "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Ake sibone ukuthi @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy yini abayenzile ngosuku olulandelayo:\n\n@global.w_rules_female_caregiver_1: “Ngiyafuna ukuthi uzijabulise, @global.w_rules_teen_boy, kodwa ngiyakhathazeka uma ungabuyi kuze kuhlwe. Uyazi ukuthi kungani?” \n\n@global.w_rules_teen_boy: “Kungenxa yokuthi ufuna ngibe nesikhathi esanele sokwenza umsebenzi wami wesikole?”", - "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Kunjalo, okunye futhi ukuthi akuphephile ukuba ngaphandle kule ndawo uma sekuhlwile. Ucabanga ukuthi kungaba isiphi isikhathi esifanele sokubuya ekhaya?”", - "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-10 ebusuku? \n\n@global.w_rules_female_caregiver_1: “Kusuke sekusebusuku ngaleso sikhathi, kungaba njani ngo-6 ntambama? Noma esinye isikhathi esiuphakathi?”", - "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-6 ntambama phakathi nezinsuku zesikole bese kuba u-10 ebusuku ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Yebo, kuhle lokho. Kusukela manje ukuya phambili, umthetho wasekhaya uthi kumelwe ubuye ekhaya ngo-6 ntambama ngezinsuku oya ngazo esikoleni kanti ngoLwesihlanu nangoMgqibelo ubuye ngo-10pm. Kodwa kumelwe uhlale uphelezelwa umngane uma ubuya ekhaya. “Kulungile?”", - "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Kulungile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ngiyabonga kakhulu, @global.w_rules_teen_boy, ngokungisiza ukuba sibeke umthetho omuhle sindawonye. Kuyangijabulisa ukubona ukuthi uba nezibopho kangakanani.”", - "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Ngosuku olulandelayo...\n\n@global.w_rules_female_caregiver_1: “Ngiyabonga, @global.w_rules_teen_boy, ngokufika ekhaya ngesikhathi. Uma usuqede umsebenzi wakho wesikole sizodla ukudla okuthayo esidlweni sakusihlwa.”", - "Making the rule together went well because...": "Ukubeka umthetho ndawonye kube impumelelo ngoba...", - "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Baye baxoxa ngezizathu zokubeka umthetho \n* @global.w_rules_female_caregiver_1 uye wakulalela -@global.w_rules_teen_boy isiphakamiso\n* Umthetho ubucacile, uqondile futhi ubonelela \n* @global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", - "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy bekazi ukuthi @global.w_rules_female_caregiver_1 uyancoma ngoba...", - "* She praised him\n* She rewarded him when he followed the rule": "* Uye wamncoma\n* Uye wamvuza uma elandela umthetho", - "Let's think about what happened in this story.": "Ake sicabange ngokuthi kwenzekeni kule ndaba.", - "What went well here in making a rule together?": "Yini ehambe kahle lapha ekubekeni umthetho ndawonye?", - "They discussed the reasons behind the rule": "Baye baxoxa ngezizathu zokubeka umthetho", - "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 uye wakulalela kuka-@global.w_rules_teen_boy iziphakamiso", - "The rule was clear, specific and fair": "Umthetho ubucacile, uqondile futhi ubonelela", - "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", - "That's right, making clear rules together in a calm and positive way works so well!": "Kunjalo, ukwenza imithetho ecacile ndawonye ngendlela ezolile neyakhayo kusebenza kahle!", - "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Ucabanga ukuthi u-@global.w_rules_teen_boy waze kanjani ukuthi u-@global.w_rules_female_caregiver_1 uyamncoma?", - "She praised him": "Uye wamncoma", - "She rewarded him when he followed the rule": "Uye wamvuza uma elandela umthetho", - "Exactly - a positive response makes all the difference!": "Kunjalo - ukusabela ngendlela enhle kwenza umehluko!", - "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Imithetho yasekhaya isiza ukugcina izingane zethu zivikelekile, futhi yenza iqonde ukuthi yini elindeleke kuzo. Uma ubandakanya ingane yakho ekubekeni imithetho kwenza bawulandele kalula umthetho.", - "TEAM RULES": "IMITHETHO YEQEMBU", - "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Hlela imithetho NDAWONYE nengane yakho. Qala ngomthetho owodwa omusha - unganezela omunye ngokuhamba kwesikhathi. Xoxisanani ngezizathu zomthetho ngemva kwalokho ulalele imibono yabo.", - "REAL RULES": "IMITHETHO YANGEMPELA", - "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Yenza kube imithetho umntwana wakho angakwazi ukukwenza nokuyilandela, cacisa futhi ukhulume ngokuqondile ukuze kungabi khona ukungaqondani. Ungathi ‘ngesikhathi’ kodwa yithi “ngo-7 ntambama”.", - "PRAISE RULES!": "NCOMA UMTHETHO!", - "Praise your teen for planning a rule with you, and praise them for keeping it!": "Ncoma ingane yakho ngokuthi ibeke uthetho nawe, uphinde uyincome ngokuthi iwugcine!", - "Online Safety": "Ukuphepha Ku-inthanethi", - "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Imithetho ibalulekile ukugcina abantwana bethu bephephile - naku-inthanethi. Kunokwengeziwe mayelana nokuhlela okuphephile Ekuqeqeshweni Kwamasonto Onke, kodwa ake sikubuke lokhu njengamanje!", - "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, usuwenzile umsebenzi wakho wesikole?\"\n\n@global.w_rules_teen_girl: “Umzuzwana nje @global.w_rules_female_caregiver_2, ngisaqedela le @global.teen_social_medium vidiyo\"", - "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Ave udansa kahle kakhulu! Ngitshele ukuthi kungani uthanda ukudansa\"\n\n@global.w_rules_teen_girl: “Bonke abangane bami bayadansa, @global.w_rules_female_caregiver_2. Nginabangithandayo-abangu-600 nabalandeli abangu-120.”", - "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe ngendlela odansa kahle ngayo, @global.w_rules_teen_girl. Kodwa kumelwe siqiniseka ukuba uphephile. \n\nNgiyazi ukuba abangani bakho babuka @global.teen_social_medium, kodwa nge-akhawunti evulela wonke umuntu, kunabanye abantu ababuka amavidiyo abantu abasha ukuze bazanelise ngokocansi. Ngezinye izikhathi bayaxhumana nentsha. Bazenza sengathi balungile kodwa ekugcineni bayabesabisa futhi bayihlukumeze intsha.”", - "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: “Ake sihlole ku-inthanethi sobabili ukuthi singenza kanjani ukuthi ukujabulele lokhu kodwa uphephe ngesikhathi esifanayo. Bheka - ungakwazi ukwenza ukuba kube abantu abathile kuphela abakwazi ukubona i-akhawunti yakho futhi ungakwazi nokukhetha ukuthi ubani ozokulandela.\n\nNgakho, ungavumela abantu obaziyo basesikoleni nabasemphakathini, kodwa hhayi abantu obathola ku-inhanethi.\n\nIngabe singakwazi ukwenza umthetho ndawonye ungawusebenzisa @global.teen_social_medium, kodwa nge-akhawunti engavulelekile kuwonke wonke? Ngiyakwethemba ukuthi uyazi ukuthi obani ozobavumela!”", - "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe @global.w_rules_teen_girl”", - "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Yimuphi umthetho obalulekile eningafisa ukuwubeka nengane yakho? \n* Ucabanga ukuthi ingane yakho izocabangani ngalo mthetho? \n\nKhumbula, beka umthetho oqondile futhi ozolungela ingane!", - "Here are some of the rules other families created:": "Nayi eminye imithetho ebekwe eminye imindeni:", - "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Ingane yakho ingadlala ngaphandle ngemuva kokuqeda umsebenzi wasekhaya\n* Onke amalunga omndeni adla isidlo sakusihlwa ndawonye\n* Ingane yakho yokuqala igeza izitsha ngeSonto nangoMsombuluko, bese eyesibili izigeze ngoLwesibili nangoLwesithathu \n* Sikhulumisana ngenhlonipho nangomusa \n* Uma ulalela umculo kumelwe usebenzise ama-earphones", - "Let's practice making rules.": "Ake sizame ukubeka imithetho.", - "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Bhala phansi umthetho owodwa obalulekile ongathanda ukuwubeka nengane yakho - uzokwenza lokhu njengomsebenzi wasekhaya wokuprakthiza waleli viki. \n\nBazocabangani ngawo?", - "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Kuleli viki, bekani umthetho owodwa nengane yakho.\n\nKhumbula ukuncoma ingane yakho ngemva kwalokho!", - "Great to hear that you are doing well. You are a wonderful parent!": "Ngiyajabula ukuzwa ukuthi kukuhambela kahle. Ungumzali omangalisayo!", - "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ngiyaxolisa ngokuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuzama ukwazi ngalokhu. Akekho umuntu onezimpendulo zayo yonke imibuzo kodwa wenza konke okusemandleni akho!", - "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ngiyaxolisa ukuzwa ukuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuthi uvuke njalo ekuseni ukuze uzame futhi, ngisho noma ukhathele. Lokhu kubonisa ukuzimisela nokuzinikela!", - "Step 1: Share what went well and what was hard": "Isinyathelo 1: Sixoxele ngokuhambe kahle nokuthi ikuphi okube nzima", - "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ngifunde okuningi ngompilo yomntwana wami, uma sichitha isikhathi ndawonye! Kodwa ngemva kosuku lokuqala, umntwana wami ubefuna ukudlala ngefoni yakhe kuphela.”", - "Step 2: Bring ideas!": "Isinyathelo 2: Veza amacebo!", - "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Wenze kahle ngokuzama! Mhlawumbe ungaveza ezinye izinto ezimnandi eningazenza ndawonye nengane yakho. \n\n“Yebo, noma ningenza okuthile kumakhalekhukhwini wakhe ndawonye? Noma angakubonisa ukuthi ifoni yakhe isebenza kanjani?”", - "Step 3: Pick and try one!": "Isinyathelo 3: Khetha bese uzama okukodwa!", - "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Ngiyabonga ngala macebiso amahle! Yebo, ake ngicele ingane yami ingibonise ukuthi ifoni yayo isebenza kanjani kusasa uma iphuma esikoleni. Ngicela manje omunye kini azenze ingane yami, ukuze ngikwazi ukuprakthiza ukumcela?”", - "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa:\n\n* Yini ehambe kahle futhi yini ebe yinkinga?\n* Yiziphi izixazululo eningazicabanga ndawonye?\n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho! \n\n(Noma ungayiprakthiza khona manje ukuze kube lula kamuva!)", - "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ukuncoma kuyikhono elinamandla lokuba umzali.\n\nUma sincoma abantwana bethu uma benze okuthile okuhle, sizobona benza izinto ezingeziwe ezinhle!", - "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Sanibonani nonke. \n\nIsihloko sethu sanamuhla sikhuluma ngokuncoma. \n\nKuyinto enhle ukuncoma abantwana bethu uma benze kahle ngoba uma senza kanjalo, bazokwenza okungeziwe okuhle esifuna ukukubona. \n\nFuthi singakhohlwa ukuzincoma nathi uma senze kahle!", - "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Imithelela yokuncoma\n* Indatshana kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Imithelela yokuncoma\n* Indatshana kanye nokucabanga ujule - okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Amacebiso alokho ongakwenza ekhaya", - "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Xoxelanani:\n\n* Ugcine nini ukubongwa noma kuthiwe wenze kahle? \n* Kwakwenza wazizwa kanjani? \n* Uzizwa kanjani uma ungabongwa noma unconywe ngokuthile okwenzayo? \n\nNgokuvamile asibongwa noma sinconywe ngokwanele njengabazali. Mhlawumbe ungenza isibonelo esihle ngokuthi sincome abantwana bethu kuqala uma benze kahle!", - "Think about the last time someone thanked you, or said you did something great.": "Cabanga ngesikhathi lapho kukhona owakubonga, noma owathi wenze into enhle.", - "How did it make you feel?": "Wazizwa kanjani?", - "Parents usually don’t get thanked or praised enough.": "Akuvamile ukuthi abazali babongwe noma banconywe ngokwanele.", - "How does it make you feel when nobody says \"thank you\"?": "Kukwenza uzizwe kanjani uma kungekho muntu othi “ngiyabonga”?", - "Tired": "Ukhathele", - "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Ingane yakho ingazizwa ngalendlela nayo. Yilokho okwenza ithuluzi lokuba umzali laleli viki libe elibalulekile kodwa elilula: Bancome ngezinto ezinhle abazenzayo.", - "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Ngempela ukuncoma kunamandla. \n\nAke sibone isibonelo sika @global.w_praise_female_caregiver_name nendodakazi yakhe:", - "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Ngesikhathi u @global.w_praise_female_caregiver_name ematasa, amadodakazi akhe amabili avamise ukulwa. Kodwa namuhla, indodakazi yakhe endala isize udadewabo ngomsebenzi wesikole!", - "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Ngiyabonga ngokuthi wenze umsebenzi wakho wesikole, @global.w_praise_girl, ngiyabonga ngokuthi usize udadewenu, @global.w_praise_teen_girl. Ngiyaziqhenya kakhulu ngani!\"", - "Let's discuss this story.": "Ake sixoxe ngale ndaba.", - "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Xoxani ndawonye:\n\n* Ukunconywa kwenze-@global.w_praise_female_caregiver_name izingane zizizwe kanjani?\n* Kungani eye wazincoma?", - "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name uncome izingane zakhe..... ", - "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ukuze ezikwenzayo zikwenze ngokwengeziwe\n* Ukuze amsize aqedele umsebenzi wakhe \n* Ukuze azenze zizizwe zijabule \n* Ukuze azizwe ejabule", - "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Ukunconywa kwenze -@global.w_praise_female_caregiver_name izingane zazizwa kanjani?", - "Why did she praise them?": "Kungani aye wazincoma?", - "To get them to do it more often": "Ukuze abakwenzayo bakwenze ngokwengeziwe", - "To help her finish her work": "Ukuze amsize aqedele umsebenzi wakhe", - "To make them feel good": "Ukubenza bazizwe bejabule", - "To make herself feel good": "Ukuze azizwe ejabule", - "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Zonke lezi zinto ziyiqiniso! \n\nUma abantwana bakhe bejabule, @global.w_praise_female_caregiver_name uyajabula. Futhi ukwaze ukuqeda umsebenzi wakhe.", - "The same can work for you!": "Nawe kungakusebenzela lokhu!", - "SEE IT": "KUBONE", - "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Bheka noma yini ingane yakho ekwenzayo ewusizo noma okuhle, bese umncomela kona. Kungenzeka ingakubonisi kona, kodwa uzobona ziphinde zikwenza lokho okuhle futhi. Kuzobaqinisekisa ukuthi uyakubona futhi uyabakhathalela.", - "SAY IT": "KUSHO", - "Be enthusiastic – really mean it when you say it!": "Yiba nentshiseko - yiba qotho kulokho okushoyo!", - "REPEAT IT": "KUPHINDE", - "Try to find something to thank them for every day. Even something really small.": "Zama ukuthola okuthile ongayibonga ngakho ingane yakho usuku nosuku. Ngisho nento encane .", - "You can also praise other adults in your household, too. Notice how they respond!": "Ungancoma nabantu abadala ekhaya lakho. Qaphela indlela abasabela ngayo!", - "Let's practice giving praise.": "Ake siphrakthize ukuncoma.", - "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Khulumisanani: \n\n* Yisiphi isizathu esingakwenza uncome ingane yakho? \n* Yini othile ayenze kahle phakathi nalokhu kuqeqeshwa? Batshele! \n* Kukwenze wazizwa kanjani lapho uncoma omunye umuntu? \n* Kukwenza wazizwa kanjani lapho unconywa?", - "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ngezinye izikhathi kunzima ukucabanga ukuthi yini ongamncomela yona umntwana wakho! Nanka amanye amacebo avela kwabanye abazali:", - "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ukuba nomusa komunye umuntu \n* Ukuhlanza igumbi lakhe \n* Ukuhlanganyela esidlweni somndeni \n* Ukubingelela amanye amalungu omndeni \n* Ukunakekela ozalwa nabo \n* Ukufika ekhaya ngesikhathi \n* Ukubonisa ukucabangela \n* Ukuthi 'ngiyacela' noma 'ngiyabonga' \n* Ukuya esikoleni \n* Ukwenza imisebenzi yasekhaya noma ukwenza umsebenzi wesikole wasekhaya \n* Ukudla ngokuthula", - "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Umsebenzi wasekhaya kuleli viki ukuncoma ingane yakho kanye ngosuku. Kuzothatha imizuzwana eyishumi nje kuphela!", - "Caring for yourself is so essential.": "Kubalulekile ukuzinakekela.", - "Wonderful, I am so happy things are going well. Keep up the good work.": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle. Qhubeka nokwenza umsebenzi omuhle.", - "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Thatha isikhashana ujabulele izinto ozenzile, ngaphezu kwazo zonke ezinye ezinto okumelwe uzenze zinsuku zonke.", - "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Imindeni eminingi ikhathazeke ngemali, ikakhulu uma abantwana bethu belokhu becela izinto! \n\nUma senza isabelomali ndawonye, singavumelana ukuthi siyisebenzisa kanjani imali NOKUTHI siyonge ukuze sigweme ukukhathazeka futhi sisebenzele ukufinyelela imigomo esizibekele yona njengomndeni.", - "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Sanibonani, nonke. \n\nIsihloko sanamuhla ibhajethi yomndeni. \n\nKubalulekile ukwenza ibhajethi, kodwa okubaluleke nakakhulu ukwenza isabelomali esihlanganisa umndeni wonke. \n\nUkuyenza ndawonye kukhulisa izinga lokuqonda indlela imali esentshenziswa ngayo njengomndeni nokuthi malini ozoyongela umndeni wakho, ungenza nezinhlelo zokuthi nizoyonga kanjani imali njengomndeni.", - "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Indaba – lokho akusebenzanga… \n* Ukufunda ukwenza isabelomali\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Ingxoxo ngezindlela zokonga imali\n* Ukufunda ukonga imali\n* Amathuluzi: Indlela yokwenza isabelomali kanye nokonga\nCABANGA - KHETHA - YAKHA - HLELA\n* Amacebiso alokho ongakwenza ekhaya", - "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kungaba nzima ukuthola zonke izinto ozidingayo nyanga zonke. Imindeni eminingi ihlangabezana nalenkinga! \n\nKuhlanganise @global.w_money_grandma - Ake sibone:", - "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: “Bengilokhu nginakekela abazukulu bami, @global.w_money_teen_girl no @global.w_money_teen_boy, njengoba abazali babo bashona besebancane. Ngokuvamile siba nezinkinga zemali, njengoba ngithola kuphela imali yesibonelelo sikahulumeni esincane.”", - "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Nginengcindezi kakhulu. Anginayo imali esele. Futhi manje siyaxabana nezingane zami ngezinto abazifunayo futhi.”", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kunezinyathelo ezine zokwenza isabelomali somndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo. Udinga:\n\n- Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni\n- Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali\n \n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", - "A family budget can help @global.w_money_grandma - and YOU!": "Isabelomali somndeni singasiza @global.w_money_grandma - sisize NAWE!", - "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kunezinyathelo ezine zokwenza ibhajethi yomndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo.", - "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Udinga: \n* Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni \n* Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali \n\n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", - "Think about what we spend money on each month.": "Cabanga ngokuthi siyisebenzisela ini imali inyanga nenyanga.", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba izithombe zazo zonke izinto wena nomndeni wakho enichitha imali kuzo ngenyanga. \n* Bhala eceleni kwesithombe ngasinye ukuthi into ngayinye ibiza malini inyanga ngayinye. (Akudingeki ubhale inani lemali uma ungafuni ukwenza njalo.)\n* Hlanganisa inani lemali enilisebenzisayo inyanga ngayinye.", - "Wonderful! You finished step 1! \n\nLet’s move on!": "Kuhle kakhulu! Usiqedile isinyathelo 1! \n\nAsiqhubeke!", - "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* ukudla \n* amanzi nogesi \n* izimpahla \n* ama-akhawunti \n* Izinhlelo ze-TV ezikhokhelwayo \n* izinto zokugeza \n* izinwele \n* i-airtime \n* izindleko zesikole \n* ezokuthutha \n* imishuwalensi/amapholisi \n* imithi \n* ezokuzijabulisa/ezemidlalo \n* imali yokuqasha \n* imali ebolekiwe \n* imali yesonto", - "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Khulumisanani ngezidingo zenu nezinto enizifunayo \n\nOKUFUNAYO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", - "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Ngokuvamile abantu ababoni izinto ngendlela efanayo. Uma sikhuluma ngezinto esizidingayo kanye nesizifunayo, siqondana kancono futhi senze izinqumo ezinhle ezimayelana nokuthi sizoyisebenzisa kanjani imali yethu.\n\nBheka uhlu lwezinto osebenzisa imali kuzo bese niyaxoxa: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo njengomndeni?", - "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Cabanga ngezidingo nezimfuno \n\nIZIMFUNO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", - "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Bheka uhlu lwezinto osebenzisa imali kuzo bese uyakhetha: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo?", - "Make a budget!": "Yenza isabelomali!", - "Make a budget as one big family!": "Yenzani isabelomali njengomndeni owodwa omkhulu!", - "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Umuntu oyedwa uzovolontiyela ukuveza olwakhe uhlu (uma engekho ofuna ukuvolontiya ningenza uhlu olusha ndawonye) \n* Thathani izindima - abanye bazoba abantu abadala, kuthi abanye babe ngabantwana. \n* Khetha ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.) \n* Yenza isinqumo ndawonye sokuthi malini enizoyisebenzisela ini, bese nibeka amatshe/okuthile kuleso sithombe. \n\nAniqinisekanga ngesinqumo senu? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", - "Make a budget as a family!": "Yenzani isabelomali njengomndeni!", - "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Bhala phansi ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.)\n* Yenza isinqumo ukuthi malini uzoyisebenzisela ini, bese ubeka amatshe/okuthile kuleso sithombe. \n\nAniqiniseki ngesinqumo sakho? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", - "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Nenze umsebenzi omuhle, seniqede izinyathelo ezi-3 zokuqala! \n\nAke sibone ukuthi @global.w_money_grandma ulwenze kanjani uhlelo lokusebenzisa imali yakhe, njengoba nje wenza:", - "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ngifunela abazukulu bami ikusasa elihle, kodwa angazi ukuthi ngizoyithola kuphi imali. Ukuboleka imali komashonisa kuyingozi kanti futhi kuyabiza ukuyikhokha. \n\nKumele ngonge imali, kodwa lokho kubonakala kungeke kwenzeke!”", - "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“Umgomo wami ukuthi umzukulu wami womfana aye esikoleni samabanga aphezulu bese kuthi umzukulu wami wentombazane aye enyuvesi. Ngingakwazi kanjani ukonga imali eningi ngemadlana encane enginayo?”", - "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ngiyazi - ake siqale ngokuhlela! Okokuqala, ake ngenze isabelomali - uhlelo lokuthi ngizoyonga kanjani imali yami. Ngemva kwalokho ngizokonga imali encane ngesikhathi - ngizophinde ngijoyine namaqembu okonga imali nokubolekisa ngemali.”", - "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“Ngizophinde ngikhulume nabazukulu bami sikhethe izinto esizosebenzisa imali encane kuzona njalo ngeviki. Bazongisiza ngicabange ngezinto esizifunayo kodwa esingazidingi.”", - "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Ngemva kweminyaka embalwa kamuva:\n\n“Bheka, sesiwafinyelele amaphupho ethu! Ayikho imali engiyiboleke kubangane noma komashonisa. Ngokonga okuncane iviki neviki, ngikwazile ukukhokhela u-@global.w_money_teen_boy esikolweni samabanga aphakeme futhi ngonga nemali ka-@global.w_money_teen_girl yokufunda enyuvesi. Ngiyaziqhenya ngalokhu.”", - "What are your family savings goals?": "Imiphi imigomo yokonga yomndeni wakho?", - "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Imigomo emihle leyo! \n\nUmgomo omuhle loyo! Uma senza isabelomali esihle bese sihlela indlela yokonga imali ndawonye, singakwazi ukuyifinyelela bese siyaziqhenya ngathi!", - "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sonke sinamaphupho ngemindeni yethu, njengo @global.w_money_grandma. Ngokubekela eceleni imali encane inyanga nenyanga, ungawafinyelela lawo maphupho!", - "What are your family savings goals?": "Imiphi imigomo yokonga womndeni wakho?", - "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Umgomo omuhle loyo! \n\nNgokwenza isabelomali esihle kanye nohlelo lokonga, ungakwazi ukuyifinyelela bese uziqhenya ngawe!", - "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ukonga kubaluleke ngalesi sezinye izizathu: izimo eziphuthumayo! @global.w_money_grandma uye wakufunda lokhu ngendlela:", - "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Ngelinye ilanga kwaba nemvula enesiphepho esibi eyalimaza uphahla lwami. Kwakhukhuleka yonke into. Kwadingeka ngithole imali ngokushesha ukuze ngilungise uphahla. Ngazizwa ngiphelelwe ngamandla.”", - "Let's talk about this story.": "Ake sikhulume ngale ndaba.", - "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla. \n\nIziphi ezinye izimo eziphuthumayo ezingasehlela?", - "Let's think about this story.": "Ake sicabange ngale ndaba.", - "For @global.w_money_grandma, a storm happened.": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla.", - "What other emergencies could come up for your family?": "Yiziphi ezinye izimo eziphuthumayo ezingavelela imindeni yethu?", - "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Isimo esiphuthumayo singavelela noma imuphi umndeni. Ukonga imali yokusiza uma kuvela isimo esiphuthumayo NGAPHAMBI kokuthi siqubuke kuzovimbela ukukhathazeka kungalindelekile nokuba nengcindezi!", - "Let's talk about different ways we can save.": "Ake sikhulume ngezindlela ezihlukahlukene zokonga.", - "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Xoxani ndawonye: \n* Imali singayonga ngaziphi izindlela ezihlukahlukene? \nYibuphi ubuhle nobubi bendlela ngayinye yokonga? \n\nUkuqonda indlela ngayinye kuzokusiza unqume ukuthi iyiphi indlela engcono yokonga elungele umndeni wakho. \n\nNoma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakhe uqhubekele phambili!", - "Let's think about different ways we can save.": "Ake sicabange ngezindlela ezihlukahlukene esingonga imali ngazo.", - "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kunezindlela ezihlukahlukene esingakwazi ukonga ngazo: ekhaya, ukuthenga izinto esingakwazi ukuzithengisa kamuva, ebhange, noma eqenjini lokonga.\n\nCabanga ngobuhle nobubi bendlela ngayinye yokonga imali.", - "What is the best savings option for your family?": "Iyiphi indlela yokonga engcono elungele umndeni wakho?", - "Whatever savings plan you choose, it will really help your family move forward!": "Noma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakho uqhubekele phambili!", - "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Hlela ukuthi uzoyonga kanjani imali, ukuze ukwazi ukubhekana nezimo eziphuthumayo ezivelayo futhi ufinyelele imigomo yomndeni wakho!", - "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Uma ungakwazi ukonga ngisho noma okuncane ozokusebenzisa esikhathini esizayo noma ezimweni eziphuthumayo - kungenza umehluko omkhulu ngokuhamba kwesikhathi. \n* Faka indilinga ebizwa ngokuthi “izimo eziphuthumayo”.\n* Faka indilinga ebizwa ngokuthi “imigomo yomndeni”.\n* Manje zama ukuhlela imali yakho ukuze wonge okuncane nyanga zonke ezintweni ozikhokhelayo.", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu eqenjini lakho ufanelwe ukunconywa, akunjalo?", - "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu emndenini wakho ufanelwe ukunconywa, akunjalo?", - "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "SIYAKUHALALISELA!!! Wenze isabelomali sakho - khumbula ukuphinde wenze lesi sabelo mali futhi namalungu womndeni wakho - uma nivumelana ndawonye ngohlelo kuzokwenza umehluko omkhulu!", - "Step 1: THINK": "Isinyathelo 1: CABANGA", - "What do we spend on now?": "Siyisebenzisa kuphi imali njengamanje?", - "THINK Activity": "CABANGA Umsebenzi", - "Step 2: CHOOSE": "Isinyathelo 2: KHETHA", - "Talk together about needs and wants": "Khulumani ngezidingo kanye nezimfuno ndawonye", - "CHOOSE Activity": "KHETHA Umsebenzi", - "Step 3: BUILD": "Isinyathelo 3: YAKHA", - "Make your own budget": "Zenzele isabelomali sakho", - "BUILD Activity": "YAKHA Umsebenzi", - "Step 4: PLAN": "Isinyathelo 4: HLELA", - "Emergencies and family goals": "Izimo eziphuthumayo nemigomo yomndeni", - "PLAN Activity": "HLELA Umsebenzi", - "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza isabelomali futhi - manje senze KANYE nengane yakho nomndeni wakho! \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", - "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza isabelomali nomntwana kanye nomndeni wakho. \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", - "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Buyekeza isabelomali nomntwana kanye nomndeni wakho. Ukwenza kanjalo kuzokhumbuza wonke umuntu sidinga ukwenza izinqumo ezinzima ngezinye izikhathi - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sisize izigidi zemindeni.", - "Steps to make a budget": "Izinyathelo zokwenza isabelomali", - "Wonderful, I am so happy! Keep up the good work.": "Kuhle kakhulu, ngijabule kakhulu! Qhubeka nokwenza umsebenzi omuhle.", - "Sorry that things are difficult. All families struggle. We are here to help!": "Ngiyaxolisa ngokuthi isimo sinzima. Isimo sinzima kuyoyonke imindeni. Silapha ukuba sisize!", - "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Noma ngabe yini engahambanga kahle namuhla, ungakhathazeki ngayo zama futhi kusasa. Kulungile!", - "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Gxila kokuhle! \n\nUkutshela abantwana bethu ukuthi YINI esifuna bayenze kusebenza kangcono kunokubatshela ukuthi BAYEKE ukwenza okuthile.\n\nUzowubona umehluko.", - "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Sanibonani, sanibonani nonke.\n\nIsihloko sethu namuhla sikhuluma ngemiyalelo emihle. \n\nKubalulekile ukunika izingane zakho imiyalelo emihle, ngoba uma sibanikeza imiyalelo emihle bayazi futhi bayaqonda ukuthi yini esilindele ukuthi bayenze, futhi bayenza ngalendlela esifuna bayenze ngayo. \n\nEkugcineni, kwenza wonke umuntu ajabule.", - "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Ukuhlola umcabango\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Ukuhlola umcabango\n* Indaba kanye nokubuyekeza - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza - okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Amacebiso alokho ongakwenza ekhaya", - "Let’s do a thought experiment!": "Ake senze ukuhlola okucatshangiwe!", - "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "UNGACABANGI NGENDLOVU \n\nYini ocabanga ngayo?", - "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Ngokuqinisekile UKE wacabanga ngendlovu...\n\n Unganiki imiyalelo eyenza abantwana bacabange ngalokho.\n\nNgezinye izikhathi abaqondi ukuthi YINI esifuna bayenze. \n\nKanti futhi ngokuvamile abathandi ukutshelwa ukuthi yini ekumele bangayenzi (cishe kunjalo nangathi sonke.)", - "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "MANJE, CABANGA NGENGULULE! \n\nYini ocabanga ngayo?", - "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Kuhle! Imiyalelo emihle, imiyalelo ecacile isiza abantwana bagxile kulokho okumele bakwenze.\n\n Abantwana bazozizwa behlonishwa kakhulu futhi bangalalela.", - "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Ake sibone ukuthi kwenzekani uma @global.w_instruct_female_caregiver ethi @global.w_instruct_teen_girl \"UNGENZI LOKHU\":", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe.\n\n@global.w_instruct_female_caregiver: “Ungangcolisi njengoba ngisahlanza indlu. Uyangiphazamisa!”", - "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kodwa kumelwe ngizilungiselele umncintiswano wesikole. Awungivumeli ngenze lutho.”\n\n@global.w_instruct_female_caregiver: “Ungangiphenduli!”", - "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Kungani ngithethiswa ngaso sonke isikhathi????” \n\n@global.w_instruct_female_caregiver ekhuluma yedwa: “Le ngane ihlale idala izinkinga.”", - "Let's discuss what happened in this story.": "Ake sixoxe ngokuthi kwenzekeni kule ndaba.", - "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Xoxani ndawonye: \n\n* Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo? \n* Yini @global.w_instruct_female_caregiver abengayenza ngokuhlukile?", - "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver ubenga...", - "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Ubengasho okuthile okuhle kuqala \n* Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile \n* Ubengatshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", - "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo?", - "Sad": "Ngidabukile", - "Confused": "Ngikhungathekile", - "Angry": "Ngithukuthele", - "What could @global.w_instruct_female_caregiver have done differently?": "Yini @global.w_instruct_female_caregiver abangayenza ngokuhlukile?", - "Said something nice first": "Ubengasho okuthile okuhle kuqala", - "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile", - "Told @global.w_instruct_teen_girl what she wants her to do": "Ubengamtshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", - "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Siyabonga ngokuthi nicabanga kanye nathi! \n\nAke sibuyele emuva sibone ukuthi kuzokwenzekani uma @global.w_instruct_female_caregiver enikeza umyalelo omuhle:", - "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kuyajabulisa ukukubona uprakthiza ukudansa nomngane wakho. Ngicela niyodansela ngaphandle ukuze ngiqedele ukuhlanza indlu. Ngemva kwalokho, ningangibonisa umdanso wenu.”\n\n@global.w_instruct_teen_girl: “Kulungile, @global.w_instruct_female_caregiver!”", - "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Ngiyabonga ngokuthi nidansele ngaphandle njengoba bengiqedela ukuhlanza indlu, @global.w_instruct_teen_girl. Manje nginesikhathi sokuthi ngibukele umdanso wenu.”", - "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: “Kwaze kwakuhle, @global.w_instruct_teen_girl! Udansa kahle ngempela!”", - "Let's discuss what happened this time.": "Ake sixoxe ngalokho okwenzeke manje.", - "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Xoxani ndawonye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver uzizwa kanjani njengamanje?\n* Ucabanga ukuthi kungani isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", - "It worked better this time because...": "Kusebenze kangcono manje ngoba...", - "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe\n* @global.w_instruct_female_caregiver ukwazile ukuhlala ezolile \n* @global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", - "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver bazizwa kanjani njengamanje?", - "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Kungani ucabanga ukuthi isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", - "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe", - "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver ukwazile ukuhlala ezolile", - "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", - "Positive instructions can work with your teen too!": "Ukunikeza imiyalelo emihle kungasebenza nasenganeni yakho!", - "GET REAL": "IBA NEQINISO", - "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Ingabe ingane yakho ingakwenza ngempela yini lokho ozokucela? Kungase kungenzeki ukuthi ifundele phansi usuku lonke, kodwa isigamu sehora uma usidinga singalunga.", - "GET POSITIVE": "CABANGA IZINTO EZAKHAYO", - "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Mamatheka, babuke emehlweni, usebenzise amazwi akhuthazayo. Bancome ngokushesha uma beqala ukwenza obacela ukuthi bakwenze!", - "GET CLEAR": "CACISA", - "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ngokuvamile siyakwazi esikufunayo emiqondweni yethu, kodwa asikusho kucace ngokwanele. Yisho ngokucacile ukuthi ufuna ingane yakho yenzeni. Zama ukuthi ‘ngicela ubuye ekhaya ngo-7pm’ kungokuthi ‘buya ekhaya ngesikhathi’.", - "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Ake sizame ukunikeza imiyalelo EMIHLE, EYIQINISO neCACILE. Ukuprakthiza kuzokusiza wena uphumelele nengane yakho!", - "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Khetha abantu ababili eqenjini lakho:\n* Omunye enze sengathi uyingane\n* Kuthi omunye enze sengathi ungumzali wengane \n* “Mzali: Nikeza “ingane yakho” umyalelo omuhle umkhuthaze futhi umncome \n* “Ngane”: Phendula ngendlela ocabanga ukuthi ingane ingaphendula ngayo kulokhu \n\nXoxani ndawonye ngokuthi kuhambe kanjani:\n* Kukwenze wazizwa kanjani “njengomzali” “nanjengengane yeyevile eminyakeni eyishumi nambili”?\n* Ingabe kukhona ongakwenza kangcono?\n\nNikela wonke umuntu ithuba lokuba “umzali” nokuba “ingane” uma kungenzeka. Ukuprakthiza kuveza imiphumela emihle!", - "Examples of positive instructions:": "Izibonelo zemiyalelo emihle:", - "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ngiyawuthanda umculo wakho. Ungakwazi yini ukuwunciphisa ngesikhathi sesidlo sakusihlwa ukuze sikwazi ukuxoxa? Ngiyabonga - ngiyakwazisa kakhulu lokho. \n * Umnandi umculo wakho. Ubani umculi wawo? Ngicela uwuvale umculo uma ungena endlini. Ungawudlalela phansi ekamelweni lakho uma uthanda. Ngiyabonga!", - "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Ongakwenza ekhaya kuleli viki ukuthi unikeze ingane yakho umyalelo omuhle.\n\nKhumbula - IBA NEQINISO, KHULUMA IZINTO EZAKHAYO, CACISA = THOLA LOKHO OKUFUNAYO (ngendlela okungenzeka ngayo kosemusha!)", - "We care about you, and how life is treating you.": "Siyakunakekela, nokuthi impilo ikuphethe kanjani.", - "You are a star. And you are making a real difference. Be proud of yourself.": "Uyiqhawe. Wenza umehluko wangempela. Ziqhenye ngawe .", - "Sorry that things are not easy today. All parents have these days.": "Uxolo ngokuthi isimo sinzima namuhla. Bonke abazali bayabhekana nalokhu.", - "Close your eyes, breathe in, and know that everything you have done is so important.": "Vala amehlo, phefumula, wazi ukuthi konke okwenzile kubalulekile.", - "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Yonke imindeni iyabhekana nezinkinga, kodwa uma sisebenzisana singakwazi ukubhekana nezinkinga ngendlela ephumelelayo nenokuthula. \n\nLeli ikhono elihle ukuthi ingane yakho ingalifunda!", - "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuxazulula inkinga. \n\nSonke siyazi ukuthi empilweni kunezikhathi lapho sibhekana khona nezinkinga, futhi sonke siyazi ukuthi uma sizithola sikulezi zimo, kuba nzima ukucabanga ngokushesha ngezixazululo ezinhle. \n\nNgakho-ke kubalulekile ukuthi uma sibhekane nezinkinga sime kancane, siphefumule, sizole bese sicabanga ngamakhono okuxazulula izinkinga esingawasebenzisa. \n\nKhumbula ukubandakanya izingane zethu uma sixazulula izinkinga. Lokhu kuzobasiza bazimele futhi bafunde ukuxazulula izinkinga zabo esikhathini esizayo.", - "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokuhlaziya indaba - okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nokuhlaziya indaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", - "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Ake sibheke okwenzeke ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 ngesikhathi @global.w_solve_teen_girl athole ucingo okuvela kumfana.... ucingo!", - "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyithole kuphi leyo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 uyitholele mina. Umakhalekhukhwini omuhle, @global.w_solve_female_caregiver_1 . Ithatha izithombe ezinhle!”", - "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Angifuni ukuyibona leyo nto ebizayo! Lo mfana akalungile! Ucabanga ukuthi uzomkhokhela ngani ngalokhu?!”\n\n@global.w_solve_teen_girl: “Akuyona indlela okusebenza ngayo lokho, @global.w_solve_female_caregiver_1! Akubona ubulungiswa lobo!”", - "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Angifuni ukukuzwa lokho!” \n\n@global.w_solve_teen_girl: “Awuzami ngisho nokungilalela! Angazi nokuthi kungani ngikuzama nawe!”", - "Take a few deep breaths to calm down, and": "Phefumula izikhathi ezimbalwa ukuze uzole, bese", - "KNOW IT": "YAZI", - "Identify the problem.": "Ibone inkinga.", - "SOLVE IT": "IXAZULULE", - "Think of possible solutions and what would happen if we used them.": "Cabanga ngezixazululo ezikhona nokuthi kungenzekani uma sizisebenzisa.", - "TRY IT": "KUZAME", - "Choose a solution and try it out.": "Khetha isixazululo bese uyasizama.", - "TEST IT": "SIHLOLE", - "Did it work? Great! If it did not work, then try another solution.": "Ingabe sisebenzile? Kuhle! Uma singasebenzanga, zama esinye isixazululo.", - "Let’s see how problem solving works in practice.": "Ake sibone ukuthi ukuxazulula inkinga kusebenza kanjani ngokuprakthiza.", - "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 ubuya ekhaya evela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Awu izinyawo zami bandla! Ngidinga ukuhlala phansi isikhashana ngiphuze ikhofi ngaphambi kokuthi ngilungisele wonke umuntu ukudla.”", - "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani? Lesi sinkwa sizodliwa kusihlwa! Manje angeke sisasenela sonke!”", - "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2, bengilambile. Ngingachaza, uyabona, kunalo mfana esikoleni....” \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Thatha Ikhefu... phefumula...”", - "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ngiphe umzuzwana. Ngikhathele futhi manje sengikhathazekile ngokuthi ukudla kwakusihlwa angeke kusenele.” \n\n@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2\"", - "Step 1: KNOW IT": "Isinyathelo 1: YAZI", - "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Ake ungitshele, kungani ulambe kangaka? Ingabe awuwudlanga umphako wakho esikolweni?” \n\n@global.w_solve_teen_boy_2: “Ileyo inkinga. Kukhona umfana esikoleni ongiqhwagayo. Uthi uma ngingamniki umphako wami nsuku zonke, yena nabangane bakhe bazongilimaza. Uyangicasula!”", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ukuzwa lokho kodwa ngiyajabula ngokuthi ungitshele, @global.w_solve_teen_boy_2. Akusho ukuthi kumelwe udle ukudla kwawo wonke umuntu kwakusihlwa. Uma siqeda ukukhuluma, kumelwe uye esitolo uyothenga esinye isinkwa. Kodwa okokuqala: Ucabanga ukuthi kumelwe senzeni ngale nkinga yobuqhwagwa?”\n\n@global.w_solve_teen_boy_2: “Empeleni.... Ngifuna ukumshaya nje kwaphela noma ngiziphindiselele.”", - "Step 2: SOLVE IT": "Isinyathelo 2: IXAZULULE", - "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: “Hmmm... ucabanga ukuthi kuzokwenzakalani kuwe uma wenza kanjalo?”\n\n@global.w_solve_teen_boy_2: “Angazi. Mkhulu kakhulu kunami kungenzeka angilimaze kakhulu. Futhi kungenzeka ngingene enkingeni esikoleni bese ngixoshwa.”", - "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Kunjalo, lokho kungenzeka. Yini esingayenza esikhundleni salokho?”\n\n@global.w_solve_teen_boy_2: “Ngicabanga ukuthi ngingatshela uthisha. Kodwa ezinye izingane zizongibiza ngesiyoyoyo. Mhlawumbe ungakhuluma nothisha?”", - "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Kuzwakala kuyicebo elihle lelo. Ngingabuye ngikhulume nabazali bakhe uma ufuna ngenze kanjalo.”\n\n@global.w_solve_teen_boy_2: “Kulungile. Uma ucabanga ukuthi nalokho futhi kuzosiza. Ngiyabonga, @global.w_solve_female_caregiver_2\"", - "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ngingakwenzela noma ngabe yini, sthandwa sami. Ngizokwenza kanjalo into yokuqala ngemva kwedina. Futhi, uyazi? Uma lokho kungasebenzi, singabuye sizame okunye sobabili.”\n\n@global.w_solve_teen_boy_2: Ngiyabonga, @global.w_solve_female_caregiver_2\"", - "Step 3: TRY IT": "Isinyathelo 3: KUZAME", - "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Ngemva kwesonto.... \n\n@global.w_solve_female_caregiver_2: “Zihamba kanjani izinto esikoleni njengamanje?”\n\n@global.w_solve_teen_boy_2: “Kuba ngcono, loya mfana akasangithatheli ukudla kwami. Kodwa usaqhubeka nokungiphatha ngonya.”", - "Step 4: TEST IT": "Isinyathelo 4: IHLOLE", - "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ngokuzwa lokho, @global.w_solve_teen_boy_2. Ngingakhuluma yini nomalume wakho ahambe ayokhuluma nabazali bakhe? Uma kungasebenzi lokho, sizozama okunye!”\n\n@global.w_solve_teen_boy_2: “Yebo, ngiyabonga @global.w_solve_female_caregiver_2. Okungenani ngiyazi ukuthi usohlangothini lwami.”", - "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Xoxani ndawonye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", - "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Khumbula @global.w_solve_teen_girl kanye nefoni ayithole kumfana?", - "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", - "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Ake sibuyele ku@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe bese sibona ukuthi iziphi izixazululo abaqhamuke nazo.", - "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 uze nezixazululo ezintathu.", - "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ukukhulisa abantwana kunzima ngempela. \n\nNgokuvamile azikho izixazulula ezilula, kodwa manje @global.w_solve_female_caregiver_1 ufunde ukuthi angakwazi ukukhuluma nendodakazi yakhe ngalezi zinto. \n\nNgaphambili, ubekhathazeka yedwa, njengamanje beza nezixazululo bobabili!", - "Ground @global.w_solve_teen_girl for a month": "Jezisa @global.w_solve_teen_girl inyanga", - "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Angeke uphume ngenyanga ezayo”", - "That didn’t work... Let's try something else.": "Lokhu akusebenzanga... Ake sizama okunye.", - "Return the phone and save up": "Buyisela ifoni wonge imali", - "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Angizami ukusola umngane wakho noma ukuba nomona. Ngikhathazwa ukuthi uma umuntu ekupha isipho kunzima ukuthi ‘cha’ uma becela ukuthi ubenzela okuthile njengembuyiselo - njengokuya nawe ocansini. Uma ufuna ukuba nefoni, sizokonga imali sobabili ukuze uzokwazi ukwenza isinqumo sakho ngaphandle kokumkweleta okuthile.”", - "This is great! Try the third option as well.": "Kuhle lokhu! Zama indlela yesithathu futhi.", - "Learn about safe sex": "Funda ngocansi oluphephile", - "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Lokhu kungenza ukuba ngibone ukuthi kumelwe sikhulume ngamasoka nokuzivikela. Intsha eningi elingana nawe iyakhulelwa noma ingenwe yi-HIV. Ake siye emtholampilo ukuze ukhulume nomhlengikazi akwazise ukuthi ungahlala kanjani uphephile.”", - "This is great!": "Kuhle lokhu!", - "Let's practice problem-solving!": "Ake sizame ukuxazulula inkinga!", - "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Prakthizani ndawonye ukuxazulula inkinga eninayo njengamanje. Oyedwa wenu ungumzali kuthi oyedwa abe ngumntwana. \n\nNcomanani futhi nikhuthazane - siyaziqhenya ngawe! \n\nKhumbula izinyathelo: \nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", - "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Fundisa intsha yakho izinyathelo ezine zokuxazulula inkinga:\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE \n\nSebenzisani lezi zinyathelo ndawonye uma kuqubuka inkinga!\n\nUma kwenzeka okuthile okubi, ngokuvamile siphatheka kabi bese siyagxeka. Kodwa okudingwa abantwana bethu umuntu ongasiza kutholakale izixazululo ndawonye. Balalele, yamukela indlela ababona nabazizwa ngayo, futhi ubabonge ngokukuthemba.\n\nUkufundisa ingane yakho indlela yokuxazulula izinkinga kuzomsiza impilo yakhe yonke. Isipho esihle kangaka!", - "Some problems other parents solved with their teens:": "Ezinye izinkinga abanye abazali abazixazulula nabantwana babo:", - "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Ingane yami ayifuni ukuya esikoleni\n* Ngikhathazeke ngokuthi ingane yami ingakhulelwa noma ikhulelise \n* Ngikhathazwa yilokho ingane yami ekwenza ku-inthanethi \n* Ingane yami ichitha isikhathi nabangane ababi \n* Ingane yami iyavilapha \n* Ingane yami ayiwenzi umsebenzi wesikole \n* Kungenzeka ingane yami isebenzisa izidakamizwa", - "Being a great parent also means taking time to care for yourself every day.": "Ukuba umzali ophumeleleyo kusho ukuzibekela isikhathi sokuzinakekela nsuku zonke.", - "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kuhle. Kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", - "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kunzima ukuba umzali. Kodwa kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", - "Doing any of these makes you a great parent.": "Ukwenza okunye kulezi zinto kubonisa ukuthi ungumzali ovelele.", - "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Abantwana bethu bangachitha isikhathi esiningi ngaphandle kwasekhaya noma iku-inthanethi, lapho kunzima khona ngathi ukuba sibagcine bephephile. \n\nUkuxoxisana ngezindawo eziphephile nezindawo ezingaphephanga, nokuthi singazigwema kanjani izinkinga, kuyasiza ngempela!", - "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuphepha kwabantwana. \n\nKuwumthwalo wethu njengabazali ukuthi siqiniseka ukuthi abantwana bethu baphephile ngaso sonke isikhathi. Kudingeka siqiniseke ukuthi abantwana bethu baphephile emphakathini esihlala kuyo. Kuwumthwalo wethu ukuba sibenze baqaphele izindawo eziphephile nezingaphephanga emphakathini. \n\nKubuye kube umthwalo wethu wemfanelo ukuqinisekisa ukuthi bayabuqonda ubungozi abangazithola bekuzo ngokuba ku-inthanethi. Ngaleyo ndlela abantwana bethu bazokwazi ukwenza izinqumo ezinhle futhi bazigcine bephephile.", - "Today you will explore:": "Namuhla uzohlola:", - "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", - "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Indaba kanye nokubuyekeza - okusebenzile!\n* Indaba kanye nokubuyekeza - okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", - "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Ukukhulumisana kuyinto ebaluleke kakhulu!\n\nAke sibone ukuthi yini eyenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1 wakhe:", - "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: “Kunokuthile okwenzeke ngesikhathi ngiphume nabangane bami @global.w_safe_teen_girl_2 no @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: “Ngitshele, @global.w_safe_teen_girl_1\"", - "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Indoda esemotweni: “Ntokazi enhle. Sekuyisikhathi eside ngilokhu ngikubuka. Umuhle kakhulu, ungubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe u-@global.w_safe_teen_girl_1”", - "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Indoda esemotweni: @global.w_safe_teen_girl_1, ungathanda yini ukuhamba nami siyofuna okuphuzwayo namashibusi? Ngiyakucela, ngena, uzobuya ngesikhathi, ngiyakuthembisa...” \n\n@global.w_safe_teen_girl_1: “Anginaso isiqiniseko sokuthi umbono omuhle lowo...”", - "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Unenhlanhla, mngane wami. Ngifisa sengathi indoda ingacela ukukhipha MINA ingithengele izipho. Ngiyakutshela, uma ungakwenzi lokhu ngizotshela wonke umuntu ukuthi uyisilima!”", - "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 ungahambi! Qaphela! Asihambe siye ekhaya. Kuyingozi ukuhamba nabantu ongabazi. Ngaphandle kwalokho, mdala kunawe futhi akwenzayo akulungile.”\n\n@global.w_safe_teen_girl_1: “Eqinisweni angazi....”", - "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Mhh, ngiyaziqhenya ngawe ngokuthi awuyigibelanga le moto. Bekuyisimo esiyingozi lesi, ngiyabonga ngokuthi ungitshele!”", - "Let's talk about what happened to @global.w_safe_teen_girl_1": "Ake sikhulume ngokwenzeke ku-@global.w_safe_teen_girl_1", - "Discuss together: \n\nWhat was risky about that situation?": "Xoxani ndawonye: \n\nYini ebiyingozi ngalesi simo?", - "The situation was risky because...": "Lesi simo besiyingozi ngoba...", - "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Indoda ebisemotweni ibiphoqa @global.w_safe_teen_girl_1 ngezipho \n* Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ukuthi ahambe \n* Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto \n* Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala \n* Bekangekho omunye umuntu omdala onganikeza u-@global.w_safe_teen_girl_1 iseluleko", - "Let's think about what happened to @global.w_safe_teen_girl_1:": "Ake sicabange ngokwenzeke ku @global.w_safe_teen_girl_1:", - "What was risky about that situation?": "Yini ebe yingozi ngalesi simo?", - "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Indoda ebisemotweni ibifaka ingcindezi @global.w_safe_teen_girl_1 ngezipho", - "@global.w_safe_teen_girl_1's friend was encouraging her": "Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ", - "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto", - "Many girls in our communities get pregnant or catch HIV from older men": "Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala", - "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Bekungekho umuntu omdala othembekile obenganikeza u-@global.w_safe_teen_girl_1 iseluleko", - "All those things are true!": "Zonke lezi zinto ziyiqiniso!", - "Let's look at another example of a dangerous situation together.": "Ake sibheke esinye isibonelo sesimo esiyingozi ndawonye.", - "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “Umngane wami ubelokhu ekhuluma nomunye umfana olingana nathi ku-inthanethi... Uzomthumelela izithombe zakhe. Ingabe lokhu kungcono ngoba ulingana nathi?”", - "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Uwungane omuhle ngoba ukhathazekile ngaye. Ukuthumela izithombe zakhe zobulili nakho kuyingozi.”", - "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Ngezinye izikhathi abantu abasho lokho abayikho ngempela ku-inthanethi - angase athi ulingana nani uthole ukuthi uyindoda eneminyaka engu- 50. Noma uma behlukana, angathumela lezo zithombe kuwo wonke umuntu lokho kungenza umngane wakho azizwe kabi.”", - "Let's talk about our teens' online safety.": "Ake sikhulume ngokuphepha kwezingane zethu ku-inthanethi.", - "What are some of the online risks for teens these days?": "Yiziphi ezinye izingozi izingane zethu ezingabhekana nazo ku-inthanethi kulezi zinsuku?", - "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili \n* Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe\n* Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale\n* Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise\n* Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", - "Let's think about our teens' online safety.": "Ake sicabange ngokuphepha kwezingane zethu ku-inthanethi.", - "What is the biggest online risk for teens these days?": "Iyiphi ingozi enkulu yabantu abasha ku-inthanethi kulezi zinsuku?", - "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili", - "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe", - "People put things online to persuade teenagers to hurt themselves or commit suicide": "Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale", - "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise", - "People can often be nasty to teenagers online – they feel like they can bully people safely": "Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", - "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ukuze sigcine abantwana bethu bephephile, kumele siqonde izimo eziyingozi abangangena kuzo!\n\nAke senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga:\n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esingawasebenzisa ku-inthanethi\n\nAke senze la mabalazwe siyiqembu njengamanje. \n\nUzokwenza okufanayo nengane yakho njengomsebenzi wasekhaya waleli viki.", - "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Xoxani ndawonye:\n\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho\n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile ezinganeni zakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nomntwana wakho eningayenza ukuze nigcine umntwana wakho ephephile?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n \n* Ningaluthola kuphi usizo nokwesekwa uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", - "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncomanani ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukube awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo kuphephe?", - "Safety Plan": "Uhlelo Lokuphepha", - "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ukuze sigcine abantwana bethu bephephile, kumelwe siqonde izimo eziyingozi abangangena kuzo!", - "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Ngaso sonke isikhathi uma nihlela noma nigcina uhlelo lokuphepha, chofoza u-@global.parent_point bese nibungaza impumelelo yenu!", - "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Ake senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga: \n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esiwasebenzisa ku-inthanethi \n\nUzokwenza okufanayo nomntwana wakho njengomsebenzi wasekhaya waleli viki - uma umntwana wakho ekhona njengamanje lapha, ningakwenza ndawonye lokhu njengamanje!", - "My family can join in now!": "Umndeni wami ungahlanganyela njengamanje!", - "Let me try it out by myself": "Ake ngizizamele ngokwami", - "Step 1: What are important places in your community?": "Isinyathelo 1: Yiziphi izindawo ezibalulekile emphakathini wakho?", - "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba ibalazwe lomphakathi wengane yakho, libe nezithombe zazo zonke izindawo eziyinhloko njengemigwaqo, indlu yakho, isikole, izitolo, izindawo ezivakashelwa ingane yakho.", - "Step 2: Which places are safe and unsafe?": "Isinyathelo 2: Yiziphi izindawo eziphephile nezingaphephanga?", - "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Xoxani ndawonye:\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", - "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", - "Step 3: Where can you get support?": "Isinyathelo 3: Kukuphi lapho ungathola khona ukusekelwa?", - "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha. \n\nNgezansi ezinye izindawo ezingaba usizo", - "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ngezinye izikhathi zingazithola sisenkingeni.\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", - "Step 4: What are risky places online and how can you make them safer?": "Isinyathelo 4: Yiziphi izindawo eziyingozi ku-inthanethi futhi ungenza kanjani ukuthi ziphephe?", - "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncoma ingane yakho ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukuthi awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", - "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Qaphela ukuthi bawasebenzisa kahle la mawebusayithi! \n* Cabanga ngokuthi yimaphi okungenzeka awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", - "MAPS": "AMABALAZWE", - "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Yenza AMABALAZWE nomntwana wakho ngezindawo eziphephile nezindawo ezingaphephanga emphakathini wakho naku-inthanethi. Xoxa naye ngokuthi ingayigcina kanjani imininingwane, izithombe namavidiyo akhe efihlekile ku-inthanethi. Xoxa nayo ngokuthi kwenzeka kanjani ukuthi uma okuthile kufakwa ku-inthanethi kuzohlala lapho unomphela. Kungenzeka iyasazi isibonelo salokho ngabangane bayo.", - "RULES": "IMITHETHO", - "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Beka IMITHETHO nentsha yakho mayelana nokuphepha uma isebenzisa ama-app namawebhuyasithi ewathandayo. \n\nKhumbula indaba Yokuphepha ku-Inthanethi? Sibone futhi lapha.", - "Online Safety Story": "Indaba Yokuphepha Ku-inthanethi", - "AMNESTY": "USHWELE", - "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Yenzani isivumelwano sikaSHWELE. Uma kwenzeka okuthile okubathukuthelisayo, okubenza bazizwe bangakhululekile noma bethuke, bangakhuluma nawe ngakho futhi angeke ucasuke noma ubajezise, ngisho noma kuthiwa bebenza okuthile okungalungile.\n\nKhumbula udaba Lokuphepha Kukashwele? Lubone futhi lapha.", - "Safety Amnesty Story": "Indaba Kashwele Wezokuphepha", - "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Ukuba umzali kwezobuchwepheshe kuyafana nokuba umzali ekuphileni okujwayelekile. Uthathe ISINYATHELO esikhulu sokugcina umntwana wakho ephephile emphakathini KANYE naku-inthanethi. Kuhle lokho!", - "Resources to help in the community": "Izinsiza zokusiza emphakathini", - "Online Safety Resources": "Izinsiza Zokuphepha Ku-inthanethi", - "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephile:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela uhlelo lokuphepha. \n\nInto ebaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - imvamisa izingane zethu zazi okuningi kunathi ngokuthi ikuphi lapho kuphephe khona nalapho kungaphephanga khona!", - "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Uma ningakakwenzi nobabili okwamanje lokhu, yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephanga:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela loluhlelo lokuphepha. \n\nOkubaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - Kuvamile abantwana bethu bazi okuningi kunathi ngokuthi iziphi izindawo eziphephile nezingaphephile!", - "Safety Plan Activity": "Umsebenzi Wehlelo Lokuphepha", - "Fantastic! We are proud of you for all you have done over the past weeks.": "Kuhle! Siyaziqhenya ngawe ngakho konke okwenzile emasontweni adlule.", - "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Siyaxolisa ngokuthi usuku lwakho lunzima. Siyaziqhenya ngawe ngakho konke okwenziwe emasontweni adlule.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali.", - "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali nge-@global.parent_app.", - "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Sanibonani nonke.\n\nIsihloko sanamuhla ukuhalalisa kanye nezinyathelo ezilandelayo.\n\nBekumnandi, bekukuhle kakhulu ukuhamba nawe kulolu hambo. Namuhla sibungaza uhambo lwethu ndawonye. \n\nNamuhla sibungaza konke esikufundile kulo lonke uqeqesho.", - "Today you will celebrate, look back and look ahead:": "Namuhlanje sizobungaza, sibheke emuva siphinde sibheke phambili:", - "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Ukucabanga sijule kanye nengxoxo\n* Amacebiso: Indlela yokusekelana\nHLANGANANI - SHAYA UCINGO - THUMELA UMYALEZO - YABELANA\n* Ukuhlela ukweseka", - "Today you celebrate and reflect on your experiences.": "Namuhlanje uyagubha futhi ucabangisise ngezinto oke wabhekana nazo.", - "You and your family have learnt so much. Let's think back and see what has changed.": "Wena nomndeni wakho kuningi enikufundile. Ake sicabange sibuyele emuva ukuze sibone ukuthi yini eshintshile.", - "Reflect": "Zindla", - "Listen and reflect": "Lalela futhi zindla", - "Read and reflect": "Funda futhi zindla", - "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Vala amehlo uphumule.\n\nCabanga ngempilo yomndeni wakho ngaphambi kokuthi uqale uhambo lwakho ngalolu hlelo lokusebenza.\n \nCabanga ngamakhono owafundile:\n* Ukuzinakekela\n* Isikhathi sokuthi nibe nobabili ndawonye\n* Ukuncoma\n* Iziqondiso ezinhle\n* Ukulawula ukucindezeleka\n* Isabelomali somndeni\n* Imithetho\n* Imiphumela eyethulwa ngomoya ophansi\n* Ukuxazulula inkinga\n* Ukuphepha kwentsha\n* Ukubhekana nezinkinga\n\nCabangisisa/zindla ngohambo lwakho – bekunjani kuwe ukwenza lokhu:\n* Yabelanani ngamacebiso nichaze izinto eniye nabhekana nazo\n* Cabanga ufunde ezindabeni ezixoxwayo\n* Phrakthiza amakhono nengane yakho eyevile eminyakeni eyishumi nambili\n\nIngabe kukhona okuye kwashintsha kuwe nasemndenini wakho?\n\nYini oyidingayo ukuze uqhubeke usebenzisa la makhono?", - "Let's talk about what has changed.": "Ake sixoxe ngoshintsho olwenzekile.", - "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Xoxani ndawonye:\n* Yini eshintshile emndenini wakho?\n* Yini oziqhenya ngayo oyenzile?\n\nKhumbulani ukuncomana nokukhuthazana!", - "MEET": "HLANGANANI", - "Keep meeting regularly to give each other parenting support.": "Qhubekani nihlangana njalo ukuze nisekelane njengabazali.", - "CALL": "SHAYA UCINGO", - "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Yibani ‘abazali abangabangane’ abashayelana ucingo ucasukile noma ongazi ukuthi wenzeni.", - "TEXT": "THUMELA UMYALEZO", - "Text each other every week to share what you’ve done well.": "Thumelelani imiyalezo masonto onke ukuze nixoxelane ngenikwenzile.", - "SHARE": "YABELANA", - "Share @global.parent_app and help other families start their journey.": "Yabelana @global.parent_app futhi usize eminye imindeni iqale uhambo lwayo.", - "End of programme check-in": "Ukwabelana ukuthi sizizwa kanjani ekupheleni kwesifundo", - "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Ubulokhu usebenzisa i-@global.parent_app ezinyangeni ezidlule, kodwa ukukhulisa ingane esebusheni bayo kuthatha isikhathi eside! Imibuzo elandelayo emayelana nobhekana nakho njengomzali izosisiza sihlole indlela okhulisa ngayo ingane yakho.\n\nYiba qotho. Khumbula ukuthi izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa. Awuwedwa!", - "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Kubukeka ngathi usuqedile ukwabelana ngemizwa yakho. Usungadlulela komunye umsebenzi.", - "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Hlelani ukuthi nizosekelana kanjani ukuya phambili. \n\nNingasebenzisa amacebiso avela kweminye imindeni noma nizakhele awenu!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilaleleni, nidanse ndawonye futhi nizihalalisele!", - "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilalele, udanse futhi uzihalalisele!", - "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Siyakwamukela! Siyajabula ukuba nawe lapha. Leli sonto limayelana NAWE. \n\nKulokhu kuqeqeshwa kokukwamukela: \n* Uzothola amathuluzi okuzinakekela \n* Uhlele ne-app ngokwezidingo zakho", - "Wonderful, I am so happy things are going well.": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle.", - "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Uxolo ngokuthi isimo sinzima njengamanje. Kuvamile ukubhekana nobunzima ngezinye izikhathi. Khumbula ukuthi awuwedwa!", - "Why @data.workshop.w_self_care.short_title?": "Kungani @data.workshop.w_self_care.short_title?", - "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Kuvamile ukuthi singazinakekeli ngokwanele. Kodwa kubalulekile ukuzinakekela, ikakhulu njengabazali! \n\nUkuhlisa ingcindezi nokuzitotosa kusiza thina KANYE nabantwana bethu.", - "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuzinakekela. \n\nKunezikhathi lapho sibhekana nezikhathi ezinzima, lapho sibhekana khona nezinkinga singazi ukuthi kumelwe senzeni. Kubalulekile ukuzinakekela ukufunda izindlela zokuthi sihlale sehlise umoya uma kwenzeka kuvela inkinga, inselelo noma isimo esithile. \n\nUma sehlise umoya sisuke sisesimweni esihle sokucabanga kahle nokuza nesixazululo esihle sokubhekana nanoma iyiphi inkinga.", - "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Namuhla sizokwenza imisebenzi engu-3 ezosisiza sizinakekele, futhi sizokubuza\nimibuzo embalwa ukuze siqiniseka ukuthi le-app ikulungele.", - "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Umsebenzi wokuphumula\n* Umsebenzi wokuqaphela\n* Umsebenzi wokuvuza\n* Amathuluzi: Indlela yokunezela ukuzinakekela\n* Hlela i-app ngendlela oyithandayo\n* Amacebiso alokho ongakwenza ekhaya", - "Let's try it out and do a short relaxation activity together!": "Ake sikuzame futhi senze umsebenzi omfushane wokuphumula ndawonye!", - "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Njengabazali, ngokuvamile asinaso isikhathi sokuzinakekela - kodwa lokhu kubalulekile! Ukwehlisa ingcindezi kuthina kusiza thina KANYE nabantwana bethu. \n\nAke sithathe isinyathelo sokuqala bese senza umsebenzi omfushane wokuphumula ndawonye.", - "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ukunaka esikwenzayo kuzosisiza sigxile ezintweni ezakhayo. \n\nAke sithathe umzuzwana sizincome. Sizonibonisa ukuthi ningakwenza kanjani lokhu.", - "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Cabanga ngento eyodwa OYENZE kahle muva nje.\n\nTshela abanye: “Ngiyazincoma...”\n\nNakhu okukodwa ofanele ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", - "Recognise": "Qaphela", - "Take a moment to praise yourself. \n\nWe will now show you how.": "Thatha umzuzwana uzincome. \n\nNjengamanje sizokubonisa ukuthi ungakwenza kanjani.", - "Think of one thing YOU have done well recently.": "Cabanga ngento eyodwa OYENZE kahle muva nje.", - "\"Well done to me for...\"": "“Ngiyazincoma ngoku...”", - "Showing love to my children": "Ngokubonisa izingane zami uthando", - "Getting up even though I felt tired": "Ngokuvuka ngisho noma bengi zizwa ngikhathele", - "Smiling at someone": "Ngokumamatheka", - "Making food to stay strong": "Ngokwenza ukudla ukuze sihlale sinamandla", - "Spending time with my children": "Ngokuchitha isikhathi nezingane zami", - "Helping my children with schoolwork": "Ngokusiza izingane zami ngomsebenzi wazo wesikole", - "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Kusho ngezwi elizwakalayo uma ungakwazi.\n\nNakhu okukodwa okufanelekayo ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", - "Well done! Try to do this every day.": "Wenze kahle! Zama ukukwenza lokhu nsuku zonke.", - "Things to praise yourself for:": "Izinto ongazincoma ngazo:", - "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ngokubonisa izingane zakho uthando \n* Ngokuvuka ngisho noma uzizwa ukhathele \n* Ngokumamatheka uma ubona umuntu \n* Ngokwenza ukudla ukuze nihlale ninamandla \n* Ngokuchitha isikhathi nezingane zakho \n* Ngokusiza izingane zakho ngomsebenzi wazo wesikole", - "Have a hot drink": "Thola isiphuzo esishisayo", - "Call a friend or relative": "Shayela ucingo umngane noma isihlobo", - "Have a relaxing bath": "Thatha isikhathi sakho ugeze", - "Read": "Funda", - "Watch TV": "Buka i-TV", - "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali. Khulumisanani:\n\nYiziphi izinto ezincane ezikujabulisayo?", - "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke.\n\nUngawasebenzisa ekhaya la makhono futhi uwathole noma nini ku @global.parent_centre yakho!", - "Reward": "Umvuzo", - "We all deserve to treat ourselves well!": "Sonke siyakufanelekela ukuzitotosa!", - "What small thing makes you happy?": "Iyiphi into encane ekujabulisayo?", - "Nice! Taking care of yourself is an important parenting skill!": "Kuhle! Ukuzinakekela kuyikhono elibalulekile lokuba umzali!", - "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_1 noma ngabe yini oyijabulelayo.", - "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_2 noma ngabe yini oyijabulelayo.", - "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_3 noma ngabe yini oyijabulelayo.", - "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_4 noma ngabe yini oyijabulelayo.", - "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_5 noma ngabe yini oyijabulelayo.", - "Things you can do to reward yourself:": "Izinto ongazenza ukuba uzivuze:", - "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Thola isiphuzo esishisayo \n* Shayela ucingo umngane noma isihlobo \n* Thatha isikhathi sakho ugeze \n* Funda \n* Bukela i-TV", - "RELAX": "PHUMULA", - "Do a 30 second quick relaxation activity.": "Yenza umsebenzi wokuziphumuza osheshayo imizuzwana engu-30.", - "RECOGNISE": "BONA", - "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Thatha isikhashana ucabange ngento eyodwa OYENZE kahle muva nje! Ngezwi elizwakalayo uma kungenzeka ithi “ngenze kahle u ...” ", - "REWARD": "UMVUZO", - "Remember you deserve your quality time too! What makes you happy?": "Khumbula ukuthi nawe udinga ukuba nesikhathi sakho! Yini ekwenza ujabule?", - "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Manje njengoba sewakhe amakhono okuzinakekela, ake siqiniseke ukuthi @global.weekly_workshops ikulungele ngempela yini", - "You seem to have completed the customisation process already. You can now skip this activity.": "Kubonakala sengathi usuqedile kakade ukuhlela. Ungaweqa manje lo msebenzi.", - "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Noma nini lapho ungakwazi, phumula, bona bese uyazivuza. \n\nZinakekele nsuku zonke. Ubalulekile!", - "Relax activity": "Umsebenzi wokuphumula", - "Recognise activity": "Umsebenzi wokubona", - "Reward activity": "Umsebenzi wokuvuza", - "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Ngaso sonke isikhathi uma uphumula, bona okuthile okwenze kahle noma uzivuze, chofa i-@global.parent_points ukuze ujabulele impumelelo yakho!", - "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nSizokwenza eminye futhi imisebenzi yokuzinakekela uma uhlangana neqembu lakho okokuqala - nonke nifanelwe ukuzinakekela okwengeziwe!", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app isonto lesihlanu 5.\n\numhlangano wokufundisana omusha kwendlela yokuba umzali ukulindile kanye namacebiso endlela yokuhlala uzolile futhi ulawula isimo lapho intsha yethu isiphathanisa ngekhanda.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala @global.parent_app isonto lesihlanu 5.\n\numhlangano wokufundisana omusha kwendlela yokuba umzali ukulindile kanye namacebiso endlela yokuhlala uzolile futhi ukwazi ukulawula isimo lapho intsha yethu isiphatisa ikhanda.", - "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Sino mhlangano wokufundisana kwakho omusha okhona okumayelana nokulawula intukuthelo nokucindezeleka. Kuzokusiza uzinakekele kangcono.", - "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile? Wenze kahle ngokubona ukuthi wena nabanye benizizwa kanjani namuhla! Khumbula, kusasa usuku olusha.", - "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Sonke sizizwa singakhungathekile ngezinye izikhathi. Ukudonsa kakhulu umoya kuyasiza! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole imcebiso ewusizo ekubhekana nokucindezeleka.", - "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Abe kanjani amazinga akho okucindezeleka kuleli sonto? Zama ukudonsa umoya ngaphambi kokuphendula ingane yakho - kwenza umehluko omkhulu.", - "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Wenze kahle ngokudonsa umoya ngaphambi kokuphendula ingane yakho esebusheni bayo!! Ngaso sonke isikhathi uma uhlaba ikhefu, ukwazi ukulawula isimo kancono.", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kusasa kukhona okusha @global.parent_app komhlangano wokufundisana okulindele. \n\nNgokuphothula i-@local.workshop_data.in_text_title kuqala, ubeka isisekelo esibaluleke ngempela: Uma uzizwa kahle, nomndeni wakho uzozizwa kahle!", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Wenze kahle ngoqeda i-@local.workshop_data.in_text_title. Kusasa, ungangena kumhlangano wokufundisana omusha ukuze usizakale ngokuohumula futhi wakhe amakhono abalulekile!", - "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Sawubona @field.user_name! Namhlanje sihalalisela ukuphela kwezinyanga ezimbili usebenzisa i @global.parent_app! \n\nWenza kahle kakhulu! Ukuqeqeshwa kwaleli sonto kuzokusiza wazi ukuthi kumele wenzeni lapho ingane yakho esebusheni bayo ingalandeli imithetho yasekhaya.", - "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.": "Sawubona @field.user_name! Namhlanje sihalalisela ukuphela kwezinyanga ezimbili usebenzisa i @global.parent_app! \n\nWenza kahle kakhulu! Ukuqeqeshwa kwaleli sonto kuzokusiza wazi ukuthi kumele wenzeni lapho ingane yakho esebusheni bayo ingalandeli imithetho yasekhaya.", - "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Kuhle ukuthi ubulokhu usebenzisa i @global.parent_app. Usuthole amathuluzi ayisithupha kakade okuba umzali! \n\nThatha lokhu kuqeqeshwa okulandelayo ukuze uthole amanye amathuluzi okuba umzali!", - "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Qedela umhlangano wokufundisana bese uzama ukuxoxa nengane yakho esebusheni bayo ukuze nibeke ndawonye umphumela owodwa omuhle kanye nomphumela owodwa ongemuhle wendlela yokuziphatha.", - "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Ingabe ukwazile ukuthola umphumela owodwa omuhle kanye nowodwa ongemuhle wokuziphatha kwengane yakho esebusheni bayo?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Imiphumela eyethulwa ngomoya ophansi iyisiza ngempela ingane yakho esebusheni bayo ukuba iyilandele kahle imithetho – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokuzibophezela kangaka emndenini wakho.", - "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "Wenze kahle ngokuphothula i-@local.workshop_data.in_text_title. Kusasa uzothola isifundo esisha esizokusiza uphumule, ube nentokozo futhi ufunde amakhono amasha", - "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala isonto lakho lesithathu le @global.parent_app. \n\nUlindelwe umhlangano wokufundisana okusha! Ungaqagela yini isihloko salokhu kuqeqeshwa kulesi sithombe?", - "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala isonto lakho lesithathu le @global.parent_app. \n\nUlindelwe umhlangano wokufundisana okusha! Ungaqagela yini isihloko salokhu kuqeqeshwa kulesi sithombe?", - "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Wenze kahle ngokusebenzisa i @global.parent_app! Khumbula ukuthi yizinto ezincane ezenza umehluko omkhulu.", - "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Siyakubonga ngokusebenzisa i-@global.parent_app ukuze uzuzise wena nomndeni wakho.\n\nZama i-@local.workshop_data.in_text_title futhi wakhe ikhono elihle lokuba umzali!", - "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Ukuncoma kwenza umehluko omkhulu. \n\nQedela i @local.workshop_data.in_text_title ubone indlela WENA ongawuncoma ngayo umndeni wakho.", - "Praise time!": "Isikhathi sokuncoma!", - "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Uma ubona ingane yakho ngokulandelayo, yincome ngento eyodwa eyenza kahle!\n\nUgcine nini ukuzincoma nawe noma ukuncoma omunye umuntu omdala ekhaya lakho? Kuzame!", - "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Sawubona @global.user_name, isifundo esisha sikulindele kusasa. Kubukeka ngathi awukakayiqedi i- @local.workshop_data.in_text_title yet. Yimfishane kakhulu (ngiyathembisa) - ungayiqedela ngisho nangenkathi ulinde ukuvuthwa kwesidlo sakusihlwa. Yingani ungavele ushone kuyo uma usunemizuzwana?\n\nSiyabonga futhi ngokusebenzisa i- @global.parent_app.", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, kuzovulwa umhlangano wokufundisana omusha. Wazame - uzowubona umehluko endleleni ingane yakho esebusheni bayo eziphatha ngayo.", - "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app is onto lwesine 4. \n\numhlangano wokufundisana wakuleli sonto umayelana nendlela ongandisa ngayo amathuba okuthi ingane yakho esebusheni bayo yenze lokho oyicela ukuthi ikwenze.", - "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app is onto lwesine 4. \n\numhlangano wokufundisana wakuleli sonto umayelana nendlela ongandisa ngayo amathuba okuthi ingane yakho esebusheni bayo yenze lokho oyicela ukuthi ikwenze.", - "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Mawu khuluma ngawe khuluma ngomusa mayelana nomsebenzi omuhle owenzayo. Akekho umzali ongawenzi amaphutha futhi thina sicabanga ukuthi wenza kahle kakhulu!", - "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Awukhethanga nokukodwa phakathi kwalokhu @data.habit.instruct_positively.title @global.parent_points. \n\nPhinda zame futhi namhlanje!", - "Well done!": "Wenze kahle!", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Umakile @global.parent_point @data.habit.instruct_positively.title kanye kakade - ngakho wenza inqubekelaphambili enhle.", - "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.": "Usuyikhethile - @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - ngakho ke uthuthuka kakhulu.", - "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Ingabe ingane yakho esebusheni bayo ihlezi ikulalela? Uma kungenjalo (njengakithi sonke), hlola umhlangano wokufundisana waleli sonto ukuze ufunde indlela yokunikeza iziqondiso ezinhle kungakusiza kakhulu lokho.", - "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Iziqondiso ezinhle zikusiza ubone ukuziphatha okuhle nakakhulu! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole amanye amacebiso endlela lokhu okungasebenza ngayo emndenini wakho.", - "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Njengenjwayelo, ungakwazi ukufinyelela kumhlangano wokufundisana omusha kusasa. Kuzosiza ukuqeda ishabhu yangaphambilini ngaphambi kwalokho.\n\nAbanye abazali basebenzisa i-app lapho besendleleni eya emsebenzini. Kungani ungayisebenzisi i-app lapho unemizuzu embalwa? \n\nSiyakubonga ngokusebenzisa i-@global.parent_app.", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\nKusasa, ulindwe umhlangano wokufundisana omusha: uzobona umehluko omkhulu lapho wenza izinguquko ezincane!", - "First @global.weekly_workshop!": "Okokuqala @global.weekly_workshop!", - "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Sawubona @fields.user_name. I @local.workshop_data.in_text_title yakho isikulungele.", - "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Sawubona @fields.group_name. I @local.workshop_data.in_text_title yakho isikulungele.", - "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ukuchitha isikhathi nengane yakho esebusheni bayo kwakha ukwethembana phakathi kwenu. \n\nQhubeka nohambo lwakho lwe-@global.parent_app manje - wena nomndeni wakho nizobona imiphumela emihle.", - "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Siyakubonga ngokwenza umzamo ongaka ukuze ube umzali ongcono. Uyathandwa kakhulu siyazi qenya ngawe!", - "Have you spent time with your teen already?": "Ingabe ususichithile isikhathi nengane yakho eyevile eminyakeni eyishumi nambili?", - "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nI @local.workshop_data.in_text_title yakho isikulungele!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Kubonakala sengathi awukakayiqedi i-@local.workshop_data.in_text_title okwamanje. Ngeke kuthathe isikhathi eside, futhi uzothola imininingwane ewusizo. \n\nWenze kahle ngokuzama ukuba umzali ongcono. Kusasa ungangena ekuqeqeshweni okusha.", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Wenze kahle ngokuqeda @local.workshop_data.in_text_title. Kusasa ungangena ekuqeqeshweni okusha okuzokusiza uphumule, ujabule futhi ufunde amakhono amasha!", - "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Sawubona @field.user_name! Inhlekelele ingenzeka kunoma ubani - ukuhlala uyilungele kusiza kakhulu. \n\nLo mhlangano wokufundisana uzokubonisa ukuthi kanjani.", - "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.": "Sawubona @field.user_name! Inhlekelele ingenzeka kunoma ubani - ukuhlala uyilungele kusiza kakhulu. \n\nLo mhlangano wokufundisana uzokubonisa ukuthi kanjani.", - "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Ungumzali ozibophezele. Ziqhenye ngawe - yinto enkulu le oyifinyelele!", - "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Asazi ukuthi inhlekelele ingase yenzeke nini, kodwa SINGAZI lungiselela!\n\nQala umhlangano wokufundisana olandelayo ukuze uhlole ukuthi ungakwenza kanjani lokhu nengane yakho esebusheni bayo.", - "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Kuhle kakhulu ukuthi unathi kulolu hambo lokuba umzali! \n\nQedela i-@local.workshop_data.in_text_title futhi ufunde indlela engcono kakhulu yokusabela lapho ingane yakho esebusheni bayo ikudinga kakhulu.", - "Have you discussed with your teen what you would do in a crisis situation?": "Usuxoxile yini nengane yahoo esebusheni bayo ukuthi yini ongayenza esimweni esibucayi?", - "Crisis Examples": "Izibonelo Zezinkinga", - "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kusasa umhlangano wokufundisana wokugcina @global.parent_app ukukulindile. \n\nZama qedela @local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ngaleyo ndlela, ungaqedela amakhono okuba umzali futhi unqume lokho ozokwenza ngokulandelayo!", - "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Wenze kahle waqeda @local.workshop_data.in_text_title. Kusasa, ungangena umhlangano wokufundisana wakho kokugcina ukuze uhlole uhambo lwakho @global.parent_app nalokho ongakwenza ngokulandelayo!", - "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Sawubona @field.user_name! Ususeduze nokuqeda umhlangano wokufundisana kwakho kwe-@global.parent_app! Siyabonga ukuzibophezela ukuhlala isikhathi eside\n\n umhlangano wokufundisana wake wakuleli sonto umayelana nokugcina intsha yethu iphephile, ku-inthanethi kanye nasemphakathini. Kujabulele!", - "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!": "Sawubona @field.group_name! Nonke seniseduze nokuqeda umhlangano wokufundisana kwenu kwe-@global.parent_app! Siyabonga ngokuzibophezela kwakho ngokuhlala isikhathi eside. \n\numhlangano wokufundisana kwakho kwaleli sonto kumayelana nokugcina intsha yethu iphephile, kwi-inthanethi kanye nasemphakathini. Yijabulele!", - "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Lesi bekuyisikhathi esinzima kakhulu sokuba umzali. Kumelwe uziqhenye ngakho konke okwenzile. \n\nCabanga ngazo zonke izikhathi owenze ngazo ingane yakho esebusheni bayo yamamatheka kanye nakho konke ukunakekela oyinike khona. Abazali bayamangalisa, nawe uyamangalisa!", - "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Usuzuze amakhono amaningi okukhulisa izingane kula masonto adlule!\n\nQedela loumhlangano wokufundisana elandelayo ukuze uthole elinye ikhono eliwusizo.", - "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ukuze ugcine ingane yahoo esebusheni bayo iphephile, kuyasiza ukuxoxa ndawonye ngomphakathi wenu kanye nalokho okutholakala kwi-inthanethi. \n\nQedela i-@local.workshop_data.in_text_title ubone indlela ongakwenza ngayo lokhu!", - "Have you talked with your teen about safety measures?": "Ingabe usukhulumile nengane yakho ngezindlela zokuphepha?", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Ukwenza icebo ndawonye nengane yakho esebusheni bayo kuvimbela izinkinga eziningi – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokusebenzisa i-@global.parent_app ukuze usekele umndeni wakho.", - "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Siyakuhalalisela, uyiqedile i-@local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kukulindile ukuze kusize wena nomndeni wakho nibhekane nanoma yisiphi isimo – ndawonye kuningi eningakwenza!", - "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.": "Sawubona @field.user_name! Wenza intuthuko enhle ohambweni lwakho njengomzali! \n\nUkuba nengane eyevile eminyakeni esebusheni bayo kusho ukubhekana nezinkinga eziningi ezingalindelekile. umhlangano wokufundisana uzokubonisa ukuthi ungabhekana kanjani nazo lezinkinga.", - "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.": "Sawubona @field.group_name! Wenza intuthuko enhle ohambweni lwakho njengomzali!\n\nUkuba nengane eyevile eminyakeni esebusheni bayo kusho ukubhekana nezinkinga eziningi ezingalindelekile. umhlangano wokufundisana uzokubonisa ukuthi ungabhekana kanjani nazo lezinkinga.", - "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Ukuzibophezela kwakho kuyisikhuthazo kuwo wonke umuntu. Qhubeka uzolile bese uyaqhubeka!", - "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Nentsha, futhi ekuphileni, kuvela izinkinga ezingalindelekile futhi kufanele sibhekane nazo.\n\nQala umhlangano wokufundisana olandelayo ngokufunda indlela yokubhekana ngokuphumelelayo nalezi zinkinga.", - "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Usendleleni efanele yokuqala ukuxazulula izinkinga ndawonye nengane yakho esebusheni bayo! \n\nQedela i-@local.workshop_data.in_text_title bese uthola elinye ikhono elibalulekile lokuba umzali!", - "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Ingabe usuzizamile izinyathelo ezine zokuxazulula inkinga nengane yakho esebusheni bayo? \n\nYAZI, YIXAZULULA, YIZAME, IYIHLOLE!", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Kusasa kukhona omusha @global.parent_app umhlangano wokufundisana okulindele. \n\nZama ukuqeda i-@local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ukwazi indlela yokuxazulula izinkinga ndawonye kuzosiza ezimweni eziningi!", - "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, \numhlangano wokufundisana omusha uzovulwa ukuze ukusize ugcine ingane yakho esebusheni bayo iphephile.", - "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Sawubona @field.user_name! Isonto elisha, umhlangano wokufundisana omusha! Funda indlela yokubeka imithetho yasekhaya ngendlela ezokwandisa amathuba okuthi ingane yakho esebusheni bayo iyigcine.", - "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.": "Sawubona @field.group_name! Isonto elisha, ukuqeqeshwa okusha! Funda indlela yokubeka imithetho yasekhaya ngendlela ezokwandisa amathuba okuthi ingane yakho eyevile eminyakeni eyishumi nambili iyigcine.", - "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ngezinye izikhathi kuzwakala sengathi intsha yakho isathukuthele ngisho noma wenze konke okusemandleni akho. Khumbula ukuthi wenza umsebenzi omuhle kakhulu, nokuthi ke zizoba khona izikhathi ozijabulelayo nengane yakho esebusheni bayo!", - "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ohambweni lwakho lokuba umzali. \n\nI-@local.workshop_data.in_text_title izokubonisa indlela ongabeka ngayo imithetho ngendlela ezosiza ingane yakho esebusheni bayo iyiqonde futhi iyilandele kangcono imithetho.", - "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Sekuseduze thole ezinye izicebiso zokuba umzali! Qedela i-@local.workshop_data.in_text_title, beka umthetho OWODWA olula nolandelekayo ninengane yakho esebusheni bayo, bese ubona ushintsho oluzo kwenzeka!", - "Have you managed to set a rule together with your teen?": "Ingabe ukwazile ukubeka umthetho ndawonye nengane yakho esebusheni bayo?", - "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kusasa kukhona okusha @global.parent_app kumhlangano wokufundisana okukulindele. \n\nZama qeda i-@local.workshop_data.in_text_title ngaphambi kokuthi uqale umhlangano wokufundisana omusha. Ngeke kuthathe isikhathi eside futhi kuzosiza ingane yakho esebusheni bayo ilandele imithetho kangcono!", - "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\n\nKusasa, umhlangano wokufundisana omusha uzokusiza wazi lokho ongakwenza lapho intsha iziphatha ngendlela embi (noma enhile)!", - "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Sawubona @field.group_name! Uqala inyanga yakho yesibili usebenzisa i-@global.parent_app. Kuyamangalisa! \n\nCishe yonke imindeni ihlushwa yizinkinga zemali, ngakho, umhlangano wokufundisana waleli sonto uzokunikeza indlela ezizokusiza uhlele izindleko zakho ukuze ube nemali eyanele yenyanga yonke.", - "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.": "Sawubona @field.group_name! Uqala inyanga yakho yesibili usebenzisa i-@global.parent_app. Kuyamangalisa! \n\nCishe yonke imindeni ihlushwa yizinkinga zemali, ngakho, umhlangano wokufundisana waleli sonto uzokunikeza indlela ezizokusiza uhlele izindleko zakho ukuze ube nemali eyanele yenyanga yonke.", - "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Ingabe uzizwa ucindezelekile ngemali? Ingabe ingane yakho esebusheni bayo ihlezi ikucela izinto ongenayo imali yokuzithenga? \n\numhlangano wokufundisana waleli sonto umayelana nemali nokwenza isabelo mali.", - "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Noma nini lapho uzizwa uwedwa noma ucindezelekile, yazi ukuthi awuwedwa. Kukhona abazali emhlabeni wonke jikelele ababhekene nezinkinga ezifanayo nezakho.\n\nWenza okusemandleni akho nsuku zonke futhi sonke siyaziqhenya ngawe!", - "Have you talked with your teen about your family budget yet?": "Ingabe usukhulumile nengane yakho eyevile eminyakeni eyishumi nambili ngolwabiwo mali lomndeni wakho?", - "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ukuhilela umndeni wakho endleleni osebenzisa ngayo imali yakho kungasusa ukucindezeleka okuningi nezimpikiswano. \n\nQedela i-@local.workshop_data.in_text_title ukuze usize umndeni wakho ngokwenza isabelomali kanye nokonga imali. Empeleni kulula - uzobona!", - "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Abazali abaningi bathi ukwenza isabelomali kulethe ukuthula endlini yabo – kungakusebenzela nawe.\n\nSiyakubonga futhi ngokuba umzali ozibophezele.", - "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Kuhle ukuthi uqedile @local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kuzovulwa ukuze kukusize ubeke imithetho yomndeni esebenzayo.", - "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Khumbula - leli sonto limayelana NAWE! Sithemba ukuthi uziphethe kahle. Kukufanele lokhu!", - "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala umhlangano wokufundisana @global.parent_app omusha kusasa. Uzobona imiphumela emihle!", - "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Ingabe usubatshelile obambisene nabo @global.parent_app nge-app? Kusukela kusasa, ningaqala nenze umhlangano wokufundisana @global.parent_app wenu ndawonye!", - "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!": "Kunzima kuwo wonke umuntu ukushonelwa umuntu omthandayo noma umngani. Ukuziphatha ngomusa nokwenza izinto zokukusiza kulesisikhathi esinzima kusiza nomntwana wakho!", - "Take care of yourself": "Zinakekele", - "Find a support group": "Thola inhlangano noma iqembu elisekelayo", - "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.": "-Usizi lungasithikameza emoyeni amaviki, izinyanga noma iminyaka. Akuphoqelekile ukuthi ubengcono ngokushesha. \n-Lala ngokwanele udle ngokwanele - kunzima ukunakekela abantwana uma ukhathele noma ulambile.\n-Yenza uhla lwezinto ezikwenza uzizwe ungcono bese uyazenza.\n-Zama ukwenza into eyodwa ngosuku ezoniphumuza ninomntwana wakho.\n-Kulungile ukungazizwa kahle kanti nokukhala kulungile. Ungazibeki cala, akulona iphutha lakho.\n-Ithemba lihlezi likhona noma kushoniwe. Zama ukuthokozela izinto ezincane futhi uthathe umzuzu wokwenza into ezonijabulisa futhi iniphumuze ninomntwana wakho.\n-Thola umuntu oyedwa noma ababili abangakweseka, balalele futhi baxoxisane nawe.", - "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.": "- Ukukhuluma nomuntu ongakweseka, akulalele kungakusiza.\n- Ukuzibandakanya neqembu labanye abantu abashonelwe kungasiza.\n-Akekho umuntu ongenasici. Kulungile ukukhuluma ngezinkumbulo ezinhle nezimbi.", - "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.": "Abantwana bamelana nokushonelwa ngezidlela ezahlukile, nje ngokufanayo nabantu abadala. Ungabasiza ekutheni baqonde isimo kanye nemizwa yabo ngokuthi ubavulele izindawo eziphephile lapho ningabelana khona futhi nicubungule imizwa yenu.", - "Be honest": "Thembeka", - "My teen's response": "Impendulo yengane yami", - "How to support my teen?": "Ngiyeseka kanjani ingane yami?", - "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.": "- Tshela umntwana wakho ukuthi kukhona oshonile - kwesinye isikhathi baye bangakuqapheli lokhu.\n- Ukubatshela kuyinto ethatha isikhathi, hayi into engumcimbi. Kungadingeka ubantshele kaningana.\n- Sebenzisa amagama abawaqondayo.\n-Uma abantwana abancane bengaqondi ukuthi kuyini ukushona komuntu, zama ukubacacisela ukuthi umuntu abamthandayo angeke asabuya. Zama ukungasho ukuthi 'ulele' noma 'uthathe uhambo'.\n- Abantwana asebethe ukukhula bangakuqonda ukuthi kuyini ukushona komuntu, kodwa bangasokola ukukhuluma noma ukumelana nemizwa yabo.\n- Intsha ingamelana nalesisimo ngezindlela ezahlukahlukene: ukukhala, ukuthetha, ukungakholwa noma ithule kakhulu. Konke lokhu kulungile. Batshele ukuthi unabo.\n- Vumela ithuba lemibuzo nokuxoxa. Thembeka. Kulungile ukusho uma ungazi.", - "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.": "Umntwana angaba nokudangala, ukucasuka, ukungaqondi, ukungakholwa, ukuzizwa ndikindiki, uzizwa engaphilile noma, amaphupho amabi nezinkinga esikoleni. Umntwana wakho angabukeka ejabulile kodwa ebephatheke kabi. Bangazizwa bevalelekile futhi bafune ukuchitha isikhathi nabangani. Bangabuye babonise ukuziphatha okungalindelekile noma ukuziphatha okunobungozi. Kungangenzi mnqodo lokhu kuwe kodwa konke kujwayekile.\n-Abantwana bangazizwa ngathi kuyiphutha labo - ukuthi yibona abadlulise igciwane noma baziphathe kabi. Batshele ngokucacile ukuthi abenzanga lutho olubi.", - "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.": "-Chaza ukuthi usizi luza nemizwa eminingi nezenzo ezingi. Tshengisa umntwana wakho ukuthi uyathandwa futhi unakekelwe, umkhuthaze ukuthi akhulume ngemizwa yakhe noma ayibhale phansi noma ayidwebe.\n-Uma kuneqembu elesekanayo angaba yingxenye yalo umntwana, kungasiza.\n-Uma umntwana ekhuluma ngokufuna ukuzilimaza noma ukuzibulala, cela usizo komunye umuntu ngokushesha.\n-Uma ungakwazi, gcina izinqubo zenjwayelo zansuku zonke, lokhu kungaba yiduduza entsheni.\n-Kungayisiza intsha ukuba yingxenye yamasiko noma imisebenzi emayalana nokushona komuntu - ukukhetha iculo noma ukusho okuthile.\n-Ukuchitha imizuzu embalwa nsuku zonke ugxile emntwaneni wakho kuyamsiza ekutheni azizwe evikelekile futhi kumnikeze ithuba lokuphumula noma lokuxoxa ngeznto ezimkhathazayo.", - "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.": "Ukulahlekelwa umuntu omthandayo kungazwakala kunzima kakhulu. Naka macebo angaba usizo okufanele uwangcine emqodweni.", - "Ask for help": "Cela usizo", - "Say goodbye": "Valelisa", - "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.": "- Cela usizo kumuntu omethembayo- ukudla noma ukunakekelwa kwengane kungaba usizo. Kungenzeka udinge amaphepha efa lezingane noma ukuthola izinsiza. \n- Ngesinye isikhathi abantu bazama ukuthatha imali kumuntu ososizini. Thola ulwazi ngamalungelo akho.", - "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.": "- Kunzima ukuvalelisa. Yenza lokho okukulungele wena nomntwana wakho.\n- Imindeni, intsha nabazali abekho msulwa. Uma umuntu eshonile, kulungile ukukhuluma ngokuhle nokubi esikukhumbulayo.\n- Kungasiza ukumbhalela incwadi noma ukumdwebela lomuntu oshonile.\n- Abanye abantu benza umcimbi noma babe nesidlo esikhethekile ukubungaza lowomuntu nokuvalelisa.\n- Kungasiza ukwenza ibhokisi lezikhumbuzo lokufaka izinto ezikhumbuza wena nomntwana wakho ngalowomuntu.\n- Kungasiza ukukhuluma nje ngalowomuntu uma umcabanga.", - "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!": "Ekupheleni kosuku, zinike umzuzu wokwenza lokhu: \n\n* Khuluma nengane yakho esebusheni bayo ngento eyodwa emnandi ayenzile. \n* Zincome ngento eyodwa oyenze kahle namhlanje. \n* Uyiqhawe!", - "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.": "* Buzanani, “Yini ekwenze wajabula namuhla?”\n* Buzanani, “Yibuphi ubunzima oye wabhekana nabo namuhla?”\n* Buzanani, “Ngingakusiza kanjani?”\n* Zamani ukwenza lokhu ndawonye nsuku zonke; kungaba lapho nidla isidlo sakusihlwa ndawonye noma ngaphambi kokuba niyolala.", - "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.": "* Ngeke ukwazi ukuthatha uhambo ngaso sonke isikhathi ofisa ngaso, kodwa ungaphupha njalo! Buza ingane yakho esebusheni bayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluya kuphi? Uzohamba isikhathi eside kangakanani? Yini ozoyipakisha? Yini ozoyenza ohambweni lwakho? Yini ozoyibona?\n* Bukani ibalazwe ndawonye noma nilidwebe.\n* Khetha izwe ingane yahoo esebusheni bayo engakaze izwe ngalo bese nifunda okwengeziwe ngalelo zwe.", - "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?": "Wena nengane yahoo esebusheni bayo ningabhala uhlu losaziwayo eningathanda ukubamema emcimbini wakho. Ngamunye angaba nabantu abahlanu – kungaba abantu bangesikhathi esidlule noma bamanje. Ungamema obani? Ingabe izimenywa zakho zizozwana?", - "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?": "* Cabanga ngezitatimende ezintathu mayelana nawe. Ezimbili kumelwe zibe yiqiniso bese esisodwa sibe amanga.\n* Kungasiza ukucabanga ngezifiso, amaphupho, okwenzeka esikoleni, okuthandayo noma ongakuthandi. Ngokwesibonelo: Ngiyawazonda amabhanana, isifundo engisithanda kakhulu yisayensi, futhi ngifisa ngabe ngiyakwazi ukucula. \nYisho lokhu enganeni yahoo esebusheni bayo bese uyicela ukuba iqagele ukuthi yikuphi okungamanga. \n* Ingabe iqagele ngokunembile? Ingabe kuyimangazile?\n* Manje yicele ukuba yenze okufanayo. Ingabe kukhona okusha enikufundile ngomunye nomunye?", - "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!": "Xoxela ingane yakho esebusheni bayo ngokuthile okwenzeka ngesikhathi usemusha nawe. Yiziphi izinto ezazingekho ngaleso sikhathi? Omakhalekhukhwini abane-inthanethi? Yini enaniyenza yokuzijabulisa? Yini owawukhathazeka ngayo? Ungakhathazeki uma ingane yakho ingakutsheli lutho – okubalulelkile ukuthi ikulalele futhi iyakhumbula. Ngezinye izikhathi intsha yethu iyakhohlwa ukuthi abazali bayo bangabantu nabo!", - "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!": "* Cabanga ngokuba namandla angaphezu kwavamile. Ngokwesibonelo, ukuya noma ikuphi ngokuphazima kweso, ukuya enkathini esadlula, ukubona imicabango yabantu. \n* Buza ingane yakho esebusheni bayo “Uma ubunamandla angaphezu kwawemvelo oku […], ubungawasebenzisa kanjani?”\n* Yikhuthaze ukuba iqambe iqhawe layo igama. \n* Manje vumela engane yakho esebusheni bayo ukuba ikukhethele amandla angaphezu kwawemvelo.\n* Qinisekisa ukuthi nawe uyawalingisa amandla akho angaphezu kwawemvelo!", - "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.": "Xoxa nengane yakho esebusheni bayo ngokuthile ekuthandayo.\n\nKungaba yinoma yini ekhetha ukuxoxa ngayo: ezemidlalo, abangane, umculo, osaziwayo…\n\nZama ukulalela ingane yahoo esebusheni bayo futhi uyivumele ukuthi ikhulume.", - "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!": "* Khetha umxoxi wezindaba ukuze uqale ukwenza indaba.\n* Abalalele indaba bangaphazamisa noma inini ngokusho igama elithile.\n* Oxoxa indaba kudingeka asebenzise lelo gama endabeni yakhe.\n* Lapho indaba iphela, zamani umxoxi wendaba ohlukile!", - "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.": "* Cabanga ngezimo ezintathu ezihlukahlukene. Ngokwesibonelo nje, ukushayela imoto, ukuhamba ngesikebhe noma ukushayela indiza.\n* Yisho lokhu enganeni yahoo esebusheni bayo bese uyayibuza, “Yikuphi ongakuthandar?”\n* Yibuze ukuthi kungani?\n* Manje cabanga ngezimo ezintathu noma ucele ingane yakho esebusheni bayo ukuthi ikwenzele lokho.", - "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!": "* Buzanani imibuzo. Ingakubuza noma yimiphi imibuzo ngezinto ozithandayo noma ngalokho okwenzile namhlanje.\n* Ukuphela komthetho yilowo othi awukwazi ukuphendula uthi “Yebo”, “Cha” noma “Mhlawumbe”.\n* Ungabuza imibuzo isikhathi eside kangakanani? Bungakanani ubuciko obungabusebenzisa ezimpendulweni zakho?\n * Shintshanani bese niyadlala futhi!", - "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.": "* Umuntu wokuqala uthi, “NgoMgqibelo, ngizoya... (isibonelo, epaki)”\n* Umuntu wesibili uyengeza kulokho okushiwo owokuqala, \"NgoMgqibelo, ngizoya epaki futhi...(isib., ngivakashele umngane wami omkhulu).\n* Umuntu ngamunye uyengeza kokudlule ezama ukucabanga ngazo zonke izinto ezijabulisayo angazenza ngoMgqibelo.", - "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!": "* Qala indaba yakho ngamazwi athi “Kwasukasukela kwakukhona…”\n* Vumela ingane yakho esebusheni bayo ukuba yakhe umusho olandelayo.\n* Ngemva kwalokho kuba nguwe owakha umusho.\n* Shintshananani njengoba niqamba indaba entsha emnandi.\n* Qinisekisa ukuthi ingoma iphela kamnandi.\n* Buza ingane yakho esebusheni bayo ukuthi iyiphi indawo eyithande kakhulu endabeni!", - "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.": "* Buza ingane yakho esebusheni bayo ukuthi yini engathanda ukuyidla. \n* Kuphekeni ndawonye lokho kudla! \n* Yivumele ibe umpheki omkhulu – ihole, wena ulandele iziqondiso zayo. \n* Ungayisiza nokuthi yenze isabelomali sokuthenga izinto zokupheka! \n\nUcabanga ukuthi kuzosebenza? Buza izingane zakho ezisebusheni bazo ukuthi yini EZINGATHANDA ukuba wena nazo ningayenze ndawonye. Zivumele zihole. Khululeka. Zijabulise.", - "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!": "* Dala isethi yokunyakaza komdanso ezingomeni eziyintandokazi zentsha yakho.\n* Umuntu oyedwa uyadansa bese bonke abanye belingisa umdanso awenzayo. \n* Wonke umuntu uthola ithuba lokuhola umdanso. \n* Yenzela umndeni!", - "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!": "* Lo mdlalo ungadlalwa lapho nibabili noma niwudlale nabantu abaningi njengeqembu.\n* Yimani nibhekane noma nime nenze indilinga. \n* Kuhola umuntu oyedwa kuqala bese wonke umuntu elingisa lokho akwenzayo, kulingiswa konke okwenziwa umholi ngesikhathi esisodwa.\n* Qinisekisa ukuthi umholi akasheshi kakhulu ukuze wonke umuntu akwazi ukulingisa akwenzayo! Zama ukunyakazisa izitho ezihlukahlukene zomzimba ezigabeni ezihlukahlukene.\n * Ngemva kwesikhathi esithile, shintshani umuntu oholayo. Nikezani wonke umuntu ithuba lokuhola.\n* Kuzameni lokhu kungekho oholayo!", - "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!": "* Cabanga ngekhono elisha eningalifunda ndawonye nengane yakho esebusheni bayo. Ngokwesibonelo, ukugcina ibhola lisemoyeni noma onyaweni lwakho, ukuphonsa izinto eziningi emoyeni uphinde uzibambe zonke, ukwenza isobho?\n* Shintshanani ekuzameni ikhono elisha.\n* Qinisekisa ukuthi niyancomana, futhi nizame ukudlala ndawonye!", - "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?": "* Khethani ndawonye izinhlobo ezintathu zokuzivocavoca. Ngokwesibonelo, ukuhamba, ukugijima, ukudlala ibhola noma ukudansa.\n* Khethani okukodwa ndawonye bese niyakuzama. \nUma nikuthanda nobabili, nqumani ukuthi nizokwenza izikhathi ezingaki. Kanye noma kabili ngesonto? Njalo ekuseni?\n* Ndawonye cabangani ngezindlela zokwenza lokhu kube mnandi kakhulu. Ungakwazi yini ukugijima uye endaweni ethile? Shintshanani ekubeni abaqeqeshi? Khuthazanani ngoumvuzo omncane wamahhala?", - "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.": "* Umuntu wokuqala uthola ukukhetha noma ukucula ingoma.\n* Wonke umuntu kufanele aqagele igama leculo (ukwenza kube nzima ukuqagela umculi).\n* Owokuqala ukuqagela kahle uba umholi olandelayo.", - "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!": "Lo mdlalo umnandi kakhulu lapho udlalwa okungenani abantu abathathu.\n* Qala endingilizeni udlulise umsindo owodwa owenza ngeminwe ujikeleze indilinga (noma ungashaya izandla kanye uma ungakwazi ukwenza umsindo ngeminwe).\n* Uwenza kanye umsindo weminwe ukuze uwudlulisele komunye, bese uwenza kanye ukuze uwamukele. Bheka umuntu odlulisela umsindo kuye. \n* Indawo oqondise kuyo (phezulu, phansi, okuqondile, okutshekile, okuginqika phansi) kanye namandla (kakhulu, kancane, ngendlela ephakathi nendawo) owasebenzisayo lapho udlulisa umsindo weminwe uthinta indlela umuntu awamukela ngayo. \n* Ungashayisa umsindo odongeni, uwuphonse emoyeni, uwubambe izikhathi ezimbalwa ngaphambi kokuba uwudlulisele phambili. \n* Lapho wonke umuntu esekwazi kahle ukukwenza lokhu, ningahambahamba egumbini nilokhu niqhubeka ngokudlulisela umsindo weminwe. \n* Ungakwazi yini ukuwuphonsa ngaphansi kwemileze? Ngemuva komhlane? Kujikeleze ikhanda? Uvimbe okuya komunye umuntu? Kujabuleleni ukudlala nge-”snap”!", - "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?": "Khetha umdlalo noma ukuzivocavoca eningakwenza ndawonye. Vumelanani ngohlelo. Ingabe nizokwenza nsuku zonke? Isikhathi esingakanani? \n\nKuzameni isonto elilodwa. Ekupheleni kwesonto, zibuze wena kanye nomndeni wakho le mibuzo:\n* Kuhamba kanjani? \n* Uzizwe kanjani ekuqaleni kwesonto? \n* Uzizwe kanjani ekupheleni kwesonto? \n * Yini esingayenza ngendlela ehlukile?", - "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”": "Shintshanani ngokuba “umholi”. Yisho imisho eyisethulo ukuze wonke umuntu aqale. “Umholi” ube esenikeza isiqondiso bese wonke umuntu enza umsebenzi ngokushesha ngangokunokwenzeka:\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Thinta okuthile okubomvu.” \n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Gxuma gxuma izikhathi eziyishumi.”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Beka izicathulo endaweni yokubeka izicathulo.”", - "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!": "Lo mdlalo umnandi kakhulu lapho udlalwa abantu abangaphezu kwababili.\n* Umuntu oyedwa wenza sengathi wenza into ethile – ngokwesibonelo, ukukama izinwele noma ukupheka isidlo sakusihlwa. \n* Omunye umuntu uyabuza, “Wenzani?”\n* Umuntu wokuqala kudingeka asho okuthile okungahlobani nokukama izinwele, ngokwesibonelo, “Ngibopha izicathulo.” \n* Umuntu wesibili ube eseqala ukwenza sengathi ubopha izicathulo kuze kubuze umuntu omusha, “Wenzani?” \n\nImpendulo kumele ihluke njalo kulokho osuke ukwenza ngempela!", - "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!": "*Nyakazisa izandla zakho kwesokunxele emoyeni izikhathi ezu -8 ngenkathi ubala ukuya ku-8.\n* Kwenze ngokushesha futhi umemeze kakhulu ngangokunokwenzeka.\n* Kuphinde lokho ngesinye isandla sakho. Kuphinde ngazo zombili izinyawo.\n* Kwenze izikhathi ezingu-7, bese kuba yizikhathi ezingu-6 uqhubeke njalo uze ufike ku-1.\n* Wonke umuntu kumele amemeze athi “Inkukhu esanganayo” bese benza okusemandleni abho ukudansa njengenkukhu esanganayo!", - "Quick Parenting Tips": "Amacebiso Asheshayo Okuba Umzali", - "Raising teens can be hard, and we all struggle sometimes.": "Ukukhulisa intsha kungase kube nzima, futhi sonke sidonsa kanzima ngezinye izikhathi.", - "What is the main challenge you are experiencing right now?": "Iyiphi inselele enkulu obhekene nayo njengamanje?", - "My relationship with my teen is not good": "Ubudlelwane bami nengane yami esebusheni bayo abubuhle", - "My teen’s behaviour is difficult": "Ukuziphatha kwengane yami esebusheni bayo kuyinkinga", - "I feel stressed, lonely, angry": "Ngizizwa ngicindezelekile, nginesizungu, ngithukuthele", - "I have money worries": "Ngikhathazekile ngemali", - "I worry about my teen’s safety": "Ngiyakhathazeka ngokuphepha kwengane yami esebusheni bayo", - "We often fight in our family": "Sivame ukulwa emndenini wami", - "I have a different problem…": "Nginenkinga ehlukile…", - "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!": "Ukwakha ubuhlobo obungcono kuqala ngokuchitha isikhathi ndawonye - ngisho nemizuzu emihlanu ngosuku iyawenza umehluko! Ekuqaleni, kungase kube nzima ukuchitha isikhathi ndawonye, njengoba sonke simatasa futhi izingane zethu ezisebusheni bazo zingase zizizwe zingeneme ngezinye izikhathi. Kodwa ukuchitha ngisho nemizuzu eyisihlanu-5 ngosuku ugxile enganeni yakho esebusheni bayo kuyasiza ekwakheni ukwethembana. Zama ukubuza ingane yakho esebusheni bayo ukuthi yini engathanda niyenze ndawonye. Kungaba mnandi futhi kukukhulule nawe!", - "You can get more support on how to spend one-on-one time with your teen here:": "Ungathola ukusekelwa okwengeziwe ngokuphathelene nendlela yokuchitha isikhathi nobabili nengane yakho esebusheni bayo la:", - "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.": "Yonke intsha ngezinye izikhathi iziphatha ngendlela engathandeki! Into eyodwa engasiza ekuziphatheni kwengane yakho esebusheni bayo ukuncoma ingane yakho noma nini lapho yenza kahle - noma ngabe kuncane kanjani. Izingane ezisebusheni bazo zingabukeka sengathi azikuthandi ukunconywa nguwe kodwa empeleni zikuthanda ngempela.", - "You can get more support here on how to encourage good behaviour through praising:": "Ungathola ukwesekwa okwengeziwe lapha mayelana nendlela yokukhuthaza ukuziphatha kahle ngokuncoma:", - "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.": "Ukucindezeleka kokuba umzali kuphezulu kakhulu njengamanje. Siyazi ukuthi ukuphila kungakhungathekisa kangakanani. Ukuzenzela into ethile kunganciphisa ukucindezeleka kwakho. Kukufanele lokhu! Lapho uzizwa ukhungathekile, zilawule ngokuthi udonse umoya ngokunensa kahlanu ngaphambi kokuba uphendule. Abazali abaningi bathole lokhu kuwusizo.", - "You can get more support on how to take care of yourself here:": "Ungathola ukusekelwa okwengeziwe mayelana nendlela ongazinakekela ngayo la:", - "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!": "Awuwedwa. Ukucindezeleka okubangelwa yimali kunzima kakhulu kubazali. Zama ukukhuluma nengane yakho esebushenibayo ngokuthi ingakanani imali engenayo nokuthi yini okudingeka nisebenzise imali kuyo njengomndeni inyanga ngenyanga. Lokhu kungayisiza iqonde ukuthi kungani ungeke ukwazi ukuthenga okuthile ekufunayo. Lapho wonke umuntu eqonda ukuthi imali iyaphi, kulula ukuvumelana nangokuthi ningayonga kanjani imali ndawonye!", - "You can get more support on how to budget and save here:": "Ungathola ukusekelwa okwengeziwe mayelana nokwenza isabelomali nokonga imali la:", - "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.": "Intsha ichitha isikhathi esiningi ingaphandle noma iku-inthanethi, lapho kunzima khona ngathi ukuba siyigcine iphephile - abazali abaningi bakhathazekile ngalokhu. Zama ukuqala ingxoxo nengane yakho esebusheni bayo ngezindawo eziphephile nezingaphephile emphakathini wakho naku-inthanethi (kungase kudingeke ukuba uzame izikhathi ezimbalwa). Kungenzeka yazi nalezo wena ongazazi. Lokhu kungakusiza ukuba nenze uhlelo ndawonye lwendlela yokuzigcina niphephile.", - "You can get more support on how to keep your teen safe here:": "Ungathola ukusekelwa okwengeziwe mayelana nokugcina ingane yakho esebusheni bayo iphephile la:", - "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.": "Uma kuvela inkinga, zamani ukukhuluma ngayo ndawonye. Iyini kahle hle inkinga? Yiziphi izixazululo ezikhona kanti yimiphi imiphumela yezixazululo ngasinye? Ngaleyo ndlela, ungathola isixazululo esingafanela wonke umuntu.", - "You can get more support on how to solve problems together here:": "Ungathola ukwesekwa okwengeziwe mayelana nendlela yokuxazulula izinkinga la:", - "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:": "Akulula ukunakekela imindeni yethu. Sonke sibhekana nezinselele ngezikhathi ezithile, kodwa le-app izokusiza ubhekane nazo ngokuphumelelayo. @global.parent_app isekelwe ocwaningweni lweminyaka eyishumi lwezinhlelo zokukhulisa izingane eNingizimu Afrika, futhi izinkulungwane zabazali ziye zathola ukuthi amacebiso anikezwayo ayasiza ekubhekaneni nezinselele eziningi zokukhulisa izingane. Sinethemba lokuthi le-app izokusiza kanye nomndeni wakho.\n\nNanka amanye amacebiso ayinhloko avivinyiwe angakusiza:", - "Start your first parenting workshop": "Qala umhlangano wokufundisana wakho wokuqala wokuba umzali", - "You will get more support in the @local.workshop_data.in_text_title.": "Uzothola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", - "You can get more support in the @local.workshop_data.in_text_title.": "Ungathola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", - "Start the @local.workshop_data.in_text_title": "Qala i-@local.workshop_data.in_text_title", - "Finish the @local.workshop_data.in_text_title to get more support.": "Qedela i-@local.workshop_data.in_text_title ukuze uthole ukwesekwa okwengeziwe.", - "Continue the @local.workshop_data.in_text_title": "Qhubeka ne-@local.workshop_data.in_text_title", - "Re-access the @local.workshop_data.in_text_title": "Phinde ungene ku-@local.workshop_data.in_text_title", - "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Hlala phansi, uvale amehlo akho bese ulalela ukuphefumula kwakho njengoba umoya ungena uphuma. \n\nQaphela indlela ozizwa ngayo. \n\nLapho usukulungele, phinde uvule amehlo akho.", - "Try this whenever you are feeling stressed and you need a break to reconnect.": "Zama lokhu noma nini lapho uzizwa ucindezelekile futhi udinga ukuthatha ikhefu ukuze uzole.", - "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Vala amehlo akho. \n\nMasisebenzise amandla omlingo wamathathu ukuze sihlale sikhona futhi siphumule.\n\nYisho imisindo emithathu oyizwayo njengamanje.\nYisho amaphunga amathathu ongawahogela njengamanje.\nYisho ukudla okuthathu okuthandayo.\n\nYiziphi izinto ezintathu ongabonga ngazo njengamanje? Akudingeki kube yizinto ezinkulu.", - "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Ekupheleni kosuku olunzima, ukucabanga ngezinto ezintathu ongabonga ngazo kungakusiza uthole isibindi sokuzama futhi kusasa.", - "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Vala amehlo akho bese ucabanga ngosuku. \n\nYisho into eyodwa oyibingelayo. \nYisho into eyodwa oyenze kahle. \nYisho into eyodwa oyithandayo.", - "Well done, you are a hero!": "Wenze kahle, uyiqhawe!", - "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Vala amehlo akho. \n\nSebenzisa amandla omlingo ezinto ezintathu ukuze ube nokuthula futhi uzole.\n\nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3. \nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3.", - "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Ingabe uzizwa uhlukile? Ukuphefumula okujulile kusiza wonke umzimba nengqondo yethu ukuthi izole\n\nUyiqhawe!", - "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Vala amehlo akho.\n\nLalela ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe izikhathi ezinhlanu.\n\nQaphela indlela ozizwa ngayo.", - "When you are ready open your eyes again. You are in control!": "Lapho usukulungele phinde uvule amehlo akho. Nguwe olawulayo!", - "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Vala amehlo akho. \n\nZinike umzuzu ukuze ucabange ngosuku.\n\nCabanga ngento eyodwa enhle noma emnandi oyenzile.\nZincome ngento eyodwa oyenze kahle namhlanje. \nCabanga ngento eyodwa ongayenza ngendlela ehlukile kusasa.  \nCabanga into eyodwa obongayo ngayo.", - "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Vala amehlo akho. \n\nIngabe izingane zakho zike zikwenze uzizwe sengathi ungahayiza? \n\nZinike ikhefana lemizuzwana eyishumi. Donsa umoya uwukhiphe kancane kancane izikhathi ezingu-5. \n\nMase ke usuzama ukuphendula ngendlela ezolile.", - "Millions of parents say this helps - A LOT.": "Izigidi zabazali zithi lokhu kuyasiza - KAKHULU.", - "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Vala amehlo akho. \n\nZinike isikhathi uyeke lokho okwenzayo bese uxhumana nokuphefumula kwakho.   \n\nIyiphi into eyodwa ongabonga ngayo njengamanje?  \nIyiphi into eyodwa ekulethela injabulo?  \nIyiphi into eyodwa oyithandayo?  \n\nAkudingeki kube yizinto ezinkulu. Ngezinye izikhathi izinto ezincane ephilweni yizona ezibaluleke kakhulu!", - "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Nakhu ongakwenza ukuze uphumuze umzimba wakho:  \n\nHlala ngokunethezeka bese uvala amehlo akho uma ukwazi.  \nCabanga indilinga yegolide ihlola umzimba wakho kusukela ezinyaweni ize iyofika ekhanda.   \nNaka njengoba ikhuphuka iphinde yehle emzimbeni wakho. Ingabe zikhona izindawo ozizwa ziqinile? Zindikindiki? Zibuhlungu?   \nGxila kulezo zindawo isikhashana. Donsa umoya uye kuleyo ndawo bese kuthi lapho ukhipha umoya, uzame ukudedela lokho kuqina noma ubuhlungu.   \nYenza lokhu izikhathi ezimbalwa odonsa ngazo umoya.   \n\nVula amehlo akho. Umzimba wakho uzizwa kanjani manje?", - "You can also try this next time you find yourself lying in bed unable to sleep!": "Ungakuzama lokhu esikhathini esizayo uma uzithola ulele embhedeni ungafikelwa ubuthongo!", + "Question Time": "Isikhathi Sombuzo", + "It's time for some questions!": "Isikhathi semibuzo ethile!", + "Read Together": "Fundani Ndawonye", + "Let's read a story together!": "Masifunde indaba ndawonye!", + "Let's read a story!": "Masifunde indaba!", + "Let's see how this week has been.": "Ake sibone ukuthi lihambe kanjani leli sonto.", + "This week you have done...": "Kuleli sonto wenze lokhu...", + "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.": "Ubonisa ukuzibophezela ekubeni umzali kanye nasekuzinakekeleni. \n\nWenza kahle kakhulu.", + "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!": "Ukuzijwayeza ekhaya kuyindlela esenza ngayo ukuphila komndeni kube ngcono. Kodwa ngokuvamile kuletha izinselele. \n\nAke sixoxe ngempumelelo kanye nezinselele zethu futhi sisizane ukuze sithole amacebiso amasha esingawazama!", + "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa: \n* Yini ehambe kahle futhi yini ebe yinkinga? \n* Yiziphi izixazululo eningazicabanga ndawonye? \n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho esebusheni bayo!\n\n(Noma ukuzijwayeza khona manje ukuze kube lula kamuva!)", + "Discussion example from @data.workshop.w_1on1.title": "Isibonelo sengxoxo esivela ku-@data.workshop.w_1on1.title", + "Relax Together": "Khululekani ndawonye", + "Relax": "Phumula", + "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.": "Ake senze isenzo esifushane sokuphumula ndawonye – sizothatha isikhathi esingaphansi komzuzu futhi uzozizwa ukhululekile.", + "Add this activity to @global.my_relaxes": "Ongeza lo msebenzi ku-@global.my_relaxes", + "Listen and relax": "Lalela futhi uphumule", + "Read and relax": "Funda futhi uphumule", + "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.": "Uyiqhawe!\n\nNuku zone nags sonke iskathi, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole.", "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.": "Vala amehlo akho. \n\nQaphela ukuxhumana kwakho nomhlaba onyathele kuwo.  \nYiziphi izitho zomzimba wakho izithinta umhlaba? Yiziphi izitho zomzimba wakho ezingawuthinti?   \nQaphela lapho kuzwakala kufudumele khona nalapho kuzwakala kubanda khona.  \nYizwa umhlabathi omi kuwo okusekelayo. Vumela umzimba wakho uzinze osizweni oluthola emhlabeni omi kuwo.", "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!": "Kuzame lokhu esikhathini esizayo lapho uzizwa uwedwa noma lapho wenza into evamile njengokugeza. Kungasiza ngempela!", "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.": "Hlala phansi bese uvala amehlo akho.\nMingaki imisindo okwazi ukuyizwa? \nLalela imisindo engaphakathi nengaphandle kwegumbi. Yibale ngeminywe yakho. \nNgemva kwemizuzwana eyishumi, mingaki iminwe ephakeme? Yimiphi imisindo oyizwile? \n\nPhinde uzame futhi eminye imizuzwana eyishumi. \nIngabe ikhona eminye imisindo emisha oyizwile? Ingabe ikhona imisindo oyizwile engaphakathi komzimba wakho? \nQaphela indlela ozizwa ngayo manje.", @@ -1017,62 +234,40 @@ "Take a moment to reflect on your experience. Notice if you feel any different.": "Zinike isikhashana ucabange ngolwazi lwakho. Qaphela ukuthi uzizwa uhlukile.", "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.": "Isinyathelo 1. Vala amehlo akho bese udonsa umoya kakhulu. \n\nIsinyathelo 2. Zibuze, \"Yini engiyicabangayo?\" Qaphela ukuthi imicabango yakho mihle noma mibi yini.\nQaphela ukuthi uzizwa kanjani ngokomzwelo. Qaphela ukuthi imizwelo yakho eyenjabulo noma cha. Zikhumbuze ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kulungile.\nQaphela indlela umzimba wakho ozizwa ngayo. Qaphela noma yini ebuhlungu noma ebophekile.\n\nIsinyathelo 3. Gxila ekuphefumuleni kwakho. Yizwa ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe. Ungabeka isandla esiswini sakho futhi usizwe sikhukhumala siphinde sehle isikhathi ngasinye uphefumula. Kwenze lokhu izikhathi eziyishumi odonsa ngazo umoya.\n\nIsinyathelo sesi-4. Nweba ukuqonda kwakho kuwo wonke umzimba wakho. Lalela imisindo egumbini.\n\nIsinyathelo 5. Zinike isikhathi sokuhlola ukuthi ukhona yini umehluko owuzwayo. Lapho usukulungele, vula amehlo akho.", "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!": "Siyakuhalalisela Ngokuthatha Ikhefu. Lokhu ungakwenza noma nini lapho uzizwa ucindezelekile. Kukunika ithuba lokuzola. Ngisho nokudonsa umoya izikhathi ezimbalwa noma ukuxhumana nomhlaba omi kuwo kungenza umehluko. Ungathatha Ikhefu Nezingane Zakho!", + "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.": "Hlala phansi, uvale amehlo akho bese ulalela ukuphefumula kwakho njengoba umoya ungena uphuma. \n\nQaphela indlela ozizwa ngayo. \n\nLapho usukulungele, phinde uvule amehlo akho.", + "Try this whenever you are feeling stressed and you need a break to reconnect.": "Zama lokhu noma nini lapho uzizwa ucindezelekile futhi udinga ukuthatha ikhefu ukuze uzole.", "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.": "Sukuma welulele izingalo zakho phezulu esibhakabhakeni. Phusha noma yimaphi amafu futhi uvumele ilanga likukhanyisele. Yelulela nhlangothi zombili. Yelulela phambili nangemuva.\n\nVumela isandla sakho silenga eceleni kwakho. Cindezela amahlombe akho ngokuqinile kuze kufike ezindlebeni zakho njengoba uphefumula, uhlikihle amehlo akho, futhi ubambe umoya wakho. Khulula amahlombe akho njengoba uphumuza umzimba wakho.\nNethezeka izingalo zakho futhi uvumele izingalo zakho zijike zibheke eceleni, bese uphendulela umzimba wakho ongaphezulu. Izingalo zakho kufanele zishaye kancane emhlane wakho njengoba usonta ngapha nangapha.\n\nBeka unyawo olulodwa phambi kolunye bese ujikajikisa amaqakala, ukhumbule ukuphendukela ezinhlangothini zombili. Yenza lokho onyaweni ngalunye ngezindilinga ezine ohlangothini ngalunye.\n\nManje nyakazisa wonke umzimba wakho ngokushesha ngangokunokwenzeka. Unyakazise phezulu! Unyakazise phansi! Unyakazise nxazonke!\n\nVala amehlo akho bese uphakamise izingalo zakho kancane kancane ziye ngaphezu kwekhanda lakho njengoba udonsa umoya. Yehlisela izingalo zakho ohlangothini kancane kancane njengoba ukhipha umoya.\n\nZinike isikhathi sokucabanga ngokwenzeke kuwe.", "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.": "Wenze kahle! Ungenza lo msebenzi nganoma yisiphi isikhathi lapho uzizwa unesidingo sokunciphisa ukucindezeleka futhi nikeza amandla ingqondo kanye nomzimba.", "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!": "Yenza uhlu lwezinto ongazenza ezinempilo ongathanda ukuzenza. Nanka amacebiso ambalwa:\n* Ukulalela umculo wakho owuthandayo\n* Ukuhambahamba ngaphandle (uma kuvumelekile)\n* Ukuzivocavoca\n* Ukuphuza inkomishi yetiye uwedwa\n* Ukushayela umngane\n* Ukucula, ukudansa, ukuthandaza noma ukucula\n* Ukuhlala elangeni uvale amehlo akho\n* Ukubukela uhlelo lwe-T.V oluthandayo\n\nKhetha okokudwa ukwenze namuhla!", "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!": "Lapho uzinakekela, usuke unakekela izingane zakho. Sonke sidinga ukuxhuma. Zama ukuxoxa nsuku zonke nabangane, umndeni, kanye nezinye izinhlaka ezinikeza usizo. Sekuyisikhathi wagcina ukuxhumana nothile, yenza lokho manje!", "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.": "Cabanga ngalokho okukwenza uthukuthele? Kwenzeka nini? Ngokuvamile usabela kanjani?\n\nVimbela intukuthelo kusukela ekuqaleni. Lala noma uphumule lapho ukhathele. Zama ukudla okuthile lapho ulambile. Cela othile ukuthi akusekele lapho uzizwa uwedwa.", "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!": "Ukulawula intukuthelo kungaba nzima kakhulu. Thatha ikhefu lapho uzwa ukuthi uqala ukuthukuthelela izingane zakho noma omunye umuntu.\n\nHamba uye kwenye indawo imizuzu emihlanu ukuze ukwazi ukulawula imizwelo yakho. Uma unendawo ephephile ngaphandle, yiya ngaphandle. Ungadlula kulokhu!", - "Customise your @global.parent_app": "Hlela i-@global.parent_app ngendlela oyithandayo", - "These quick questions will fit this app to your needs.": "Le mibuzo esheshayo izokwenza le-app ifanelane nezidingo zakho.", - "Let’s start with a few questions about you and your family.": "Masiqale ngemibuzo embalwa emayelana nawe nomndeni wakho.", - "We would love to know your first name or nickname:": "Singathanda ukwazi igama lakho noma isiteketiso sakho:", - "Are you a woman or a man?": "Ungumuntu wesilisa noma wesifazane?", - "Woman": "Owesifazane", - "Man": "Owesilisa", - "How old are you?": "Uneminyaka emingaki?", - "Adults": "Bangaki abadala", - "Teens": "Intsha", - "Children": "Zingaki izingane", - "Babies": "Zingaki izingane ezincane", - "How many people are in your household?": "Bangaki abantu abasekhayeni lakho?", - "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Ungenza i @global.weekly_workshops ngokwakho NOMA ungamema amanye amalungu omndeni noma abangane ukuba bahlanganyele nawe - nizofunda okuningi komunye nomunye. Kusezandleni zakho!", - "How would you like to do your @global.weekly_workshops?": "Ungathanda ukuyenza kanjani i @global.weekly_workshops yakho?", - "Can you think of a name for your group?": "Ungacabanga igama ongabiza ngalo iqembu lakho?", - "Which day of the week would you like to do your @global.weekly_workshops?": "Yiluphi usuku evikini ongathanda ukwenza ngalo i @global.weekly_workshops yakho?", - "Monday": "UMsombuluko", - "Tuesday": "ULwesibili", - "Wednesday": "ULwesithathu", - "Thursday": "ULwesine", - "Friday": "ULwesihlanu", - "Saturday": "UMgqibelo", - "Sunday": "ISonto", - "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Kuhle! Sizovula ukuqeqeshwa okusha kweqembu lakho njalo ngesonto. Lokhu kunivumela nonke ukuba nizame lokho enikufundile nemindeni yenu ngaphambi kokuba nifunde elinye ikhono.", - "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Kuhle! Sizovula ukuqeqeshwa okusha kwakho njalo ngesonto. Lokhu kuzokuvumela ukuba uzame lokho okufundile nomndeni wakho ngaphambi kokuba nifunde elinye ikhono.", - "You can always change these settings in your @global.weekly_workshop_options.": "Ungazishintsha noma nini lezi zinhlelo ku @global.weekly_workshop_options yakho.", - "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Siyazi ukuthi kunzima lokho. Senezele amacebiso awusizo endlela ongachitha ngayo isikhathi nengane yakho eyevile eminyakeni eyishumi nambili ukuze @data.parent_centre.my_tips.location_text, uzokwazi ukuwafinyelela ngokushesha. \n\nNgenxa yokuthi i-@data.workshop.w_1on1.title yakha isisekelo sawo wonke amanye amathuluzi okuba umzali, izoba yi-@global.weekly_workshop ozoyithola ngesonto elizayo!", - "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Wenze kahle! I-@global.weekly_workshop yethu elandelayo izokunikeza eminye imibono yalokhu, njengesisekelo sawo wonke amanye amacebiso okukhulisa izingane. Kodwa usuvele unesiqalo esihle!", - "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Sifake amanye amacebiso abalulekile endlela yokusebenzisa ukuncoma ku-@data.parent_centre.my_tips.location_text ukuze ukuthole ngokushesha.\n\nKu-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", - "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sisho okukhulu. Ku-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", - "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi leli kube yisonto elihle!\n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", - "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", - "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizokukhumbuza njalo ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops - kodwa kakade ungakwazi ukufinyelela amacebiso awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise!", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise.", - "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba neqiniso. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Sithemba ukuthi imicebiso yethu okulawula ukucindezeleka izoba usizo kuwe. Ungawathola kakade ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", - "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Kuhle. Sinemhlangano yokufundisana emayelana nokwenza isabelomali somndeni okungakusiza ngengcindezi yemali kabanzana, futhi kunciphise izingxabano ezihilela imali.", - "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Ingcindezi yemali ingakhungathekisa. \n\nSinokuqeqeshwa okumayelana nokwenza isabelomali somndeni emasontweni amahlanu, kodwa ungawathola kakade amacebiso ayinhloko esabelomali somndeni ngaphansi kwe-@data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo. Ukuze uzinakekele futhi sikusize uzizwe uzolile lapho izinto ziba nzima, sizokukhumbuza nsuku zonke ukuthi uphumule, uzibone futhi uziklomelise. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni leshlanu 5 @global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kokuthi @data.parent_centre.my_tips.location_text ukuze uqale.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo.\n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukusebenzisa i @global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmacebiso ethu ake asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi esimnandi ndawonye. Silapha ukuze sikusekele.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba unesikhathi esinzima nengane yakho esebusheni bayo.\n\nSinethemba lokuthi amacebiso ethu okulawula ukucindezeleka azokusiza uzizwe uzolile ezimweni ezinzima. Ungawathola ngaphansi ku @data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Lokhu kuyabakhathaza abazali yonke indawo. Sizoqinisekisa ukuthi uthola ukwesekwa ngokwakha ukukhulumisana. \n\nSizokhuluma kabanzi ngokuhlela kokuphepha kwengane yakho kamuva ku @global.weekly_workshops, kodwa ungawathola kakade amanye amacebiso ayisisekelo okugcina ingane yakho iphephile ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", - "This is really great. Parenting is hard, but you’re really succeeding in this.": "Lokhu kuhle ngempela. Ukuba umzali kunzima, kodwa uyaphumelela ngempela kulokhu.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina izingane zethu ziphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikweseke! Ungathola amathuluzi agxilile, okuqukethwe okwengeziwe kanye nezinsiza kulokhu @global.parent_centre nganoma yisiphi isikhathi. \n\nUngakwazi ukuthola amacebiso athile okuqala ayinhloko azokusiza ubeke imithetho futhi uhlele ezokuphepha ku @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools kanye ne-@data.workshop.w_safe.tools kufakwe ku-@data.parent_centre.my_tips.title.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikweseke! Ungathola amathuluzi agxilile, okuqukethwe okwengeziwe kanye nezinsiza kulokhu @global.parent_centre nganoma yisiphi isikhathi. \n\nUngakwazi ukuthola amacebiso athile okuqala ayinhloko azokusiza ubeke imithetho ku @data.parent_centre.my_tips.location_text.", - "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_rules.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nSizokunikeza ukwesekwa okwengeziwe kulokhu kamuva ku @global.weekly_workshops uma ungathanda ukwazi okwengeziwe!", - "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Okuqukethwe okuvulwa ngale mibuzo sekuyatholakala ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", - "You have just unlocked the first workshop!": "Usanda kuvula ukuqeqeshwa kokuqala!", + "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.": "Vala amehlo akho. \n\nMasisebenzise amandla omlingo wamathathu ukuze sihlale sikhona futhi siphumule.\n\nYisho imisindo emithathu oyizwayo njengamanje.\nYisho amaphunga amathathu ongawahogela njengamanje.\nYisho ukudla okuthathu okuthandayo.\n\nYiziphi izinto ezintathu ongabonga ngazo njengamanje? Akudingeki kube yizinto ezinkulu.", + "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.": "Ekupheleni kosuku olunzima, ukucabanga ngezinto ezintathu ongabonga ngazo kungakusiza uthole isibindi sokuzama futhi kusasa.", + "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.": "Vala amehlo akho bese ucabanga ngosuku. \n\nYisho into eyodwa oyibingelayo. \nYisho into eyodwa oyenze kahle. \nYisho into eyodwa oyithandayo.", + "Well done, you are a hero!": "Wenze kahle, uyiqhawe!", + "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.": "Vala amehlo akho. \n\nSebenzisa amandla omlingo ezinto ezintathu ukuze ube nokuthula futhi uzole.\n\nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3. \nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3.", + "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!": "Ingabe uzizwa uhlukile? Ukuphefumula okujulile kusiza wonke umzimba nengqondo yethu ukuthi izole\n\nUyiqhawe!", + "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.": "Vala amehlo akho.\n\nLalela ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe izikhathi ezinhlanu.\n\nQaphela indlela ozizwa ngayo.", + "When you are ready open your eyes again. You are in control!": "Lapho usukulungele phinde uvule amehlo akho. Nguwe olawulayo!", + "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.": "Vala amehlo akho. \n\nZinike umzuzu ukuze ucabange ngosuku.\n\nCabanga ngento eyodwa enhle noma emnandi oyenzile.\nZincome ngento eyodwa oyenze kahle namhlanje. \nCabanga ngento eyodwa ongayenza ngendlela ehlukile kusasa.  \nCabanga into eyodwa obongayo ngayo.", + "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.": "Vala amehlo akho. \n\nIngabe izingane zakho zike zikwenze uzizwe sengathi ungahayiza? \n\nZinike ikhefana lemizuzwana eyishumi. Donsa umoya uwukhiphe kancane kancane izikhathi ezingu-5. \n\nMase ke usuzama ukuphendula ngendlela ezolile.", + "Millions of parents say this helps - A LOT.": "Izigidi zabazali zithi lokhu kuyasiza - KAKHULU.", + "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!": "Vala amehlo akho. \n\nZinike isikhathi uyeke lokho okwenzayo bese uxhumana nokuphefumula kwakho.   \n\nIyiphi into eyodwa ongabonga ngayo njengamanje?  \nIyiphi into eyodwa ekulethela injabulo?  \nIyiphi into eyodwa oyithandayo?  \n\nAkudingeki kube yizinto ezinkulu. Ngezinye izikhathi izinto ezincane ephilweni yizona ezibaluleke kakhulu!", + "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?": "Nakhu ongakwenza ukuze uphumuze umzimba wakho:  \n\nHlala ngokunethezeka bese uvala amehlo akho uma ukwazi.  \nCabanga indilinga yegolide ihlola umzimba wakho kusukela ezinyaweni ize iyofika ekhanda.   \nNaka njengoba ikhuphuka iphinde yehle emzimbeni wakho. Ingabe zikhona izindawo ozizwa ziqinile? Zindikindiki? Zibuhlungu?   \nGxila kulezo zindawo isikhashana. Donsa umoya uye kuleyo ndawo bese kuthi lapho ukhipha umoya, uzame ukudedela lokho kuqina noma ubuhlungu.   \nYenza lokhu izikhathi ezimbalwa odonsa ngazo umoya.   \n\nVula amehlo akho. Umzimba wakho uzizwa kanjani manje?", + "You can also try this next time you find yourself lying in bed unable to sleep!": "Ungakuzama lokhu esikhathini esizayo uma uzithola ulele embhedeni ungafikelwa ubuthongo!", + "Start": "Qala", + "Add this activity to @global.my_activities": "Faka lo msebenzi ku @global.my_activities", + "Powered by Parenting for Lifelong Health and partners": "Ixhaswe i-Parenting for Lifelong Health kanye nebambisene nabo", + "Ideas from other families:": "Amacebiso avela kweminye imindeni:", + "Customise @global.parent_app": "Hlela Ngendlela Oyithandayo @global.parent_app", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho eyevile eminyakeni eyishumi nambili ikuthwalise kanzima. \n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukuqhubeka usebenzisa i-@global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmathuluzi ethu aye asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi kamnandi ndawonye. Silapha ukuze sikusekele.", + "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Lokhu kubakhathaza ngempela abazali yonke indawo. Khumbula ukusebenzisa amakhono akho amasha ukuze uqhubeke ukwakha ukukhulumisana okuhle nengane yakho esebusheni bayo. \n\nUngahlola amacebiso abalulekile okuhlela ukuphepha kwengane yakho esebusheni ku-@global.weekly_workshop noma ngaphansi kwe-@data.parent_centre.my_tips.location_text!", + "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Kuhle. Uma kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini esikhathini esizayo, ungahlola la-ku-@data.workshop.w_money.in_text_title noma okuthi-@data.parent_centre.my_tips.location_text!", + "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Ingcindezi yemali ingakhungathekisa. \n\nNoma nini lapho kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini wakho, ungathola amacebiso ku @data.workshop.w_money.in_text_title noma ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", + "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Khumbula ungathola amacebiso amaningi awusizo kanye nezinsiza ku-@global.parent_centre - lokhu ungakuthola noma nini!", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nKhumbula, ungathola ukusekwa okwengeziwe mayelana nalokhu ku-@data.workshop.w_safe.in_text_title noma nini lapho ukudinga!", "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.": "Siyazi ukuthi kunzima lokho. Ungahlola amacebiso athile awusizo ngezindlela ongachitha ngayo isikhathi nengane yakho esebusheni bayo ngaphansi kwe-@data.parent_centre.my_tips.location_text noma ungaphinde uhlole i-@data.workshop.w_1on1.in_text_title.", "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.": "Wenze kahle ngokubeka isisekelo esihle kangaka! Ungayihlola noma nini i-@data.workshop.w_1on1.in_text_title ukuze uthole amacebiso ezindlela eningachitha ngazo isikhathi ndawonye.", "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Ungahlola indlela yokuncoma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.\n\nUkuze uthole amacebiso engeziwe endlela yokusebenzisa leli khono kahle, ungaphinde uhlole i-@data.workshop.w_praise.in_text_title.", @@ -1080,158 +275,151 @@ "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi deli bekuyisonto elihle!\n\nSizoqhubeka sikukhumbuza ukuthi uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizohlala sikukhumbuza ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", - "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ungathola amathuluzi okubhekana nokucindezeleka ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", - "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!": "Kuhle. Uma kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini esikhathini esizayo, ungahlola la-ku-@data.workshop.w_money.in_text_title noma okuthi-@data.parent_centre.my_tips.location_text!", - "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!": "Ingcindezi yemali ingakhungathekisa. \n\nNoma nini lapho kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini wakho, ungathola amacebiso ku @data.workshop.w_money.in_text_title noma ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba neqiniso – siyaxolisa ngokuthi ingane yakho esebusheni bayo ikuthwalise kanzima. Ukuze nizinakekele futhi sinisize nizizwe nizolile lapho izimo ziba nzima, sizonikhumbuza nsuku zonke ukuba niphumule, niqaphele futhi nizivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho eyevile eminyakeni eyishumi nambili ikuthwalise kanzima. \n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukuqhubeka usebenzisa i-@global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmathuluzi ethu aye asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi kamnandi ndawonye. Silapha ukuze sikusekele.", - "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho esebusheni bayo ikuthwalise kanzima. \n\nSinethemba lokuthi amacebiso ethu okulawula ukucindezeleka azoqhubeka ekusiza uzizwe uzolile ezimweni ezinzima. Ungawathola ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", - "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!": "Lokhu kubakhathaza ngempela abazali yonke indawo. Khumbula ukusebenzisa amakhono akho amasha ukuze uqhubeke ukwakha ukukhulumisana okuhle nengane yakho esebusheni bayo. \n\nUngahlola amacebiso abalulekile okuhlela ukuphepha kwengane yakho esebusheni ku-@global.weekly_workshop noma ngaphansi kwe-@data.parent_centre.my_tips.location_text!", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikusekele!\n\nKhumbula, ungathola amacebiso agxilile kokuthile, okuqukethwe okwengeziwe kanye nezinsiza kwi-@global.parent_centre nganoma yisiphi isikhathi. Ungahlola namacebiso amayelana nemithetho nokuhlela ezokuphepha ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikusekele! Khumbula, ungathola amathuluzi agxilile kokuthile, okuqukethwe okwengeziwe kanye nezinsiza kwi-@global.parent_centre nganoma yisiphi isikhathi. \n\nUngahlola namacebiso ayinhloko okubeka imithetho ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", - "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nKhumbula, ungathola ukusekwa okwengeziwe mayelana nalokhu ku-@data.workshop.w_safe.in_text_title noma nini lapho ukudinga!", - "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!": "Khumbula ungathola amacebiso amaningi awusizo kanye nezinsiza ku-@global.parent_centre - lokhu ungakuthola noma nini!", - "Are there teens in your family?": "Ingabe ikhona intsha emndenini wakini?", - "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Le-app igxila emindenini enezingane ezisebusheni bazo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo emndenini wakho!", + "Customise for your needs": "Hlela ngendlela evumelana nezidingo zakho", + "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Wonke umzali emhlabeni udonsa kanzima kulezi zikhathi ezinzima. Imibuzo elandelayo mayelana nomuzwa wakho wokuba umzali izosisiza ukuthi sikutholele ukwesekwa okudingayo.\n\nYiba qotho. Khumbula ukuthi awuwedwa! Izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa.", + "Thank you for being honest": "Siyakubonga ngokuba qotho", + "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Kuhle ukuthi uphendula ngomoya ophansi lapho ingane yakho yenza okuthile okucasulayo. Bangafunda okuningi kuwe!", + "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Kuhle ukuthi uyakwazi lokho okwenziwa yingane yakho esebusheni bayoi. Ukuba umzali kunzima, kodwa uyaphumelela ngempela ekugcineni ingane yakho iphephile.", + "You selected \"I would rather not answer\"": "Ukhethe okuthi \"Angithandi ukungaphenduli\"", + "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Kulungile!\n\nKhumbula, uma uphendula impendulo yakho izogcinwa iyimfihlo futhi izosiza ukuthi sikuhlinzeke ulwazi olulungele wena ngqo.", "Are there adults in your family?": "Ingabe bakhona abadala emndenini wakho?", "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!": "Le-app igxila kubazali bezingane ezisebusheni bayo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo!", + "Are there teens in your family?": "Ingabe ikhona intsha emndenini wakini?", + "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!": "Le-app igxila emindenini enezingane ezisebusheni bazo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo emndenini wakho!", "Are you sure you want to skip this question?": "Ingabe uyaqiniseka ukuthi ufuna ukuweqa lo mbuzo?", "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.": "Uqinisekile ukuthi ufuna ukuwujomba lombuzo? Khumbula ukuthi impendulo yakho izogcinwa iyimfihlo futhi izosisiza ukuthi siqonde izidingo zakho ekukhuliseni abantwana.\n\nFuthi ungakhetha ukungaphenduli nowodwa umbuzo ngokukhetha indilinga.", - "You selected \"I would rather not answer\"": "Ukhethe okuthi \"Angithandi ukungaphenduli\"", - "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.": "Kulungile!\n\nKhumbula, uma uphendula impendulo yakho izogcinwa iyimfihlo futhi izosiza ukuthi sikuhlinzeke ulwazi olulungele wena ngqo.", - "Customise for your needs": "Hlela ngendlela evumelana nezidingo zakho", - "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.": "Wonke umzali emhlabeni udonsa kanzima kulezi zikhathi ezinzima. Imibuzo elandelayo mayelana nomuzwa wakho wokuba umzali izosisiza ukuthi sikutholele ukwesekwa okudingayo.\n\nYiba qotho. Khumbula ukuthi awuwedwa! Izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa.", - "It is hard to find time to have fun with your teenager.": "Kunzima ukuthola isikhathi sokuzijabulisa nengane yakho esebusheni bayo.", - "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?": "Zingaki izinsuku esontweni elidlule okwazile ngazo ukunaka izingane zakho wenza nazo okuthile ezikujabulelayo?", - "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_1on1.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "In our busy lives it’s hard to focus on the positive.": "Ekuphileni kwethu okumatasa kunzima ukugxila kokuhle.", - "How many days in the past week have you praised your teen?": "Zingaki izinsuku esontweni elidlule oke wancoma ngazo ingane yakho esebusheni bayo?", - "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_praise.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "This is a very stressful time for families.": "Lesi yisikhathi esinencindezela kakhulu emindenini.", - "How many days in the past week did you feel very stressed as a parent/caregiver?": "Zingaki izinsuku esontweni elidlule ozizwe ucindezeleke kakhulu njengomzali/umnakekeli?", - "Sometimes our children make us really upset.": "Ngezinye izikhathi izingane zethu ziyasicasula ngempela.", - "How many days in the past week did you shout, scream or yell at your teen?": "Zingaki izinsuku phakathi nesonto elidlule lapho khona uke wamemeza, wakabalasa noma wathethisa ingane yakho esebusheni bayo?", "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.": "Wenze kahle. ulwazi lwezinto zemvelo nje ngengqondo ibonisa ukuthi ukulawula intukuthelo yakho kuthuthukisa ukukhula kwengqondo yengane yakho esebusheni bayo. Ziqhenye ngawe ngokwakho.", - "Money is one of the biggest stresses for families now.": "Imali ingenye yezinto ezicindezela imindeni kakhulu manje.", - "How many days in the past week have you worried or felt anxious about money?": "Zingaki izinsuku esontweni elidlule oke wakhathazeka ngazo noma wazizwa ukhathazekile ngemali?", - "How many days in the past month (30 days) did you run out of money to pay for food?": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) oye waphelelwa kuzo yimali yokuthenga ukudla?", - "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_money.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "It is so stressful when children misbehave.": "Kuyacindezela kakhulu lapho izingane ziziphatha kabi.", - "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Zingaki izinsuku kulelisonto eledlulile othe wajezisa izingane ngokuzishaya ngoswazi noma ibhande noma ezinqeni noma ngesandla noma into ethile efana nenduku noma nebhande?", - "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!": "Kuhle ukuthi uphendula ngomoya ophansi lapho ingane yakho yenza okuthile okucasulayo. Bangafunda okuningi kuwe!", - "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_stress.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "It’s hard to keep track of your teenagers when they are becoming independent.": "Kunzima ukulandelela okwenziwa yizingane zakho njengoba ziqala ukuzimela.", - "How many days in the past week did you know what your teen was doing and who they were with?": "Zingaki izinsuku esontweni elidlule obuwazi ngazo ukuthi ingane yakho esebusheni bayo yenzani nokuthi ibinobani?", - "This is good to hear.": "Kuhle ukuzwa lokhu.", - "Were you in lockdown this week?": "Ingabe ubusazivalele endlini kuleli sonto?", - "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.": "Kuhle ukuthi uyakwazi lokho okwenziwa yingane yakho esebusheni bayoi. Ukuba umzali kunzima, kodwa uyaphumelela ngempela ekugcineni ingane yakho iphephile.", - "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?": "Zingaki izinsuku esontweni elijwayelekile lokungavaliwe izwe owaziyo ukuthi ingane yakho yenzani nokuthi inobani?", - "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.": "@data.workshop.w_safe.tools ifakwe ku-@data.parent_centre.my_tips.title.", - "We all want to keep our children safe.": "Sonke sifuna ukugcina izingane zethu ziphephile.", - "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) okhulume ngazo nengane yakho esebusheni bayo ngokuzigcina iphephile ekuhlukunyezweni ngokocansi ku-inthanethi noma ekuphileni okungokoqobo?", - "This could be when they are going out with friends, or talking about the websites they use.": "Lokhu kungaba lapho zizikhipha nabangane noma lapho nikhuluma ngamawebusayithi eziwasebenzisayo.", - "We have a new challenge now – keeping our teenagers safe from COVID-19.": "Sinenselele esisha manje – ukugcina intsha yethu iphephile ku-COVID-19.", - "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?": "Zingaki izinsuku ngesonto eledlule ingane yakho ihlale iphephile ngokugqoka imaski, iqhelelene nabantu futhi iqhele ezindaweni eziminyene?", - "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.": "Kungaba nzima ukugcina ingane yakho esebusheni bayo iphephile ku-COVID! Sisahlanganisa ezinye izeluleko - maduze uzokwazi ukusithola ku @global.parent_centre.", - "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.": "Kuhle lokho. Sisahlanganisa ezinye izeluleko zokugcina ingane yakho esebusheni bayo iphephile ku-COVID - maduze uzokwazi ukuzithola ku @global.parent_centre.", - "Thank you for being honest": "Siyakubonga ngokuba qotho", - "CHAT": "Xoxa", - "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!": "Xoxa ngokuthi uzizwa kanjani, ukhuthaze umntwana ukuthi akhulume ngalokho okubakhathazayo nabo. Nizozwisisana kangcono nenze icebo elihle ndawonye ukuze nihlale ninempilo futhi nijabulile!", - "CAUTION": "Qaphela", - "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!": "Thola ulwazi lwakho kwimithombo ethembekile khona uzoba nokuzethemba kulezizikhathi ezingaqinisekile. Siyezwa futhi sibona izindaba eziningi kwabanye abantu, emafonini, TV, intanethi. Ingabe kukwenza ungabaze, ukhathazeke, usabe, ucasuke noma udideke? Hlola ngaphambi kokuthi udlulisele kwabanye nagaphambi kokuthi wenze!", - "CHOOSE": "Khetha", - "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.": "Kungabanzima ukuthatha izinqumo ezifanele ezigcina wonke umuntu ephilile futhi ephephile. Ikakhulukazi kulezizikhati. Ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle.", - "CHILL": "Phumula", - "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:": "Ngesinye isikhathi siba nengcindezi. Donsa umphefumulo kakhulu noma nenze into ejabulisayo ndawonye. Kungenza omkhulu umehluko lokhu ekwenzeni ikhaya lakho libe nentokozo nokuthula. Nanka amacebo ongawazama:", - "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!": "Imicabango emibi isenza sisho izinto ezimbi. Zama ukushintsha lokhu okubi okucabangayo ukwenze kube umcabango omuhle!", - "A teen sometimes does something because they:": "Kwesinye isikhathi umntwana wenza okuthile ngoba:", - "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Balalela abangani babo\n- Bafuna ukwenza okwenziwa abanye\n-Bacabangela 'imanje' kune 'nekusasa'\n-Bathanda ukuxhamazela futhi bengazi thola bebhoreka ukuqaphela\n-Abakhathazeki ngokuba sengcupheni- futhi bangakuthanda ukuba sengcupheni\n-Banolwazi olulinganiselwe abathembele kulo\n-Bazimisele ukuzama into entsha- noma kungenzakalani", - "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kungasiza ukugcina lokhu emqondweni uma umntwana wakho ethatha izinqumo ezingalungile. Khuluma naye futhi uchithe isikhathi naye khona uzokwazi ukumsiza ekutheni akhethe kangcono ngokuzayo!", - "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Ukuqonda ukuthi umntwana wakho uzizwa kanjani nanokuthi ungameseka kanjani kwenza omkhulu umehluko kunina nobabili. Mqaphele umntwana wakho futhi umbuze ukuthi uzizwa kanjani. Cofoza kulobubuso obungenzansi khona uzothola okwengeziwe:", - "Hopeful": "Ithemba", - "Resilient": "Ukubekezela", - "Self-esteem": "Ukuzethemba", - "Teens have goals and dreams for the future – near and far!": "Intsha inezinhloso namaphupho ngekusasa- eliseduze nelikude!", - "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Buza umntwana wakho ngezinhloso nangamaphupho akhe, mkhuthaze ekutheni acabange akufunayo ngekusasa lakhe bese nenza uhlelo ndawonye lokusebenze ekufezeni lezozinhlelo namaphupho.", - "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Umntwana oqinile angamelana nezimo ezinzima, ahambisane nezinguquko futhi axazulule nezinkinga eziqhamukayo.", - "Praise your teen for overcoming difficulty and support them where you can.": "Mncome umntwana wakho uma enqobe ubunzima futhi umeseke lapho ungakwazi khona.", - "A teen’s self-esteem is how they think of themselves.": "Ukuzethemba komntwana indlela abazicabanga ngayo.", - "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Khuthaza isithombe esihle, iba isibonelo ekutheni ungazigconi futhi ungazigxeki ngasosonke isikhathi. Wazi amandla omntwana wakho futhi ubeseke ubuthakathaka babo.", - "Lonely": "Isizungu", - "Anxious": "Ukukhathazeka", - "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Abantwana bangaba nomzwangedwa noma behleli nabanye. Bangazizwa ngathi abanaye umuntu abangakhuluma naye, abangamethemba noma abangabelana naye.", - "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Umbuze umntwana wakho ukuthi uzizwa kanjani futhi uzame ukuthola izindlela ezintsha ezijabulisayo zokusebenzisana noma zokuxhumana nabangani nomdeni, ikakhulukazi ngesikhathi sokuvalwa kwezwe.", - "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Ukukhathazeka kuwumuzwa ojwayelekile futhi kungasisiza sibhekane nezimo ezinzima. Kodwa ukukhathazeka kakhulu okuvimba umntwana ekutheni enze izinto azithandayo kuyinkinga.", - "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Siza umntwana ukuthi aqaphele ukuthi yini emkhathazayo bese nenza uhlelo ndawonye lokuthi angamelana kanjani nemizwa yokukhathazeka.", - "Doing a relaxation activity together can help!": "Ukwenza umsebenzi ophumuzayo ndawonye kungasiza!", - "Depressed": "Ukucindezeleka", - "Self-harm": "Ukuzlimaza", - "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Ukudabuka noma ukuzizwa unomoya ophansi, noma usesimweni esibi emphefumulweni, yonke lemizwa ijwayelekile empilweni yomuntu. Uma le mizwa iqhubeka isikhathi eside yilapho ke ingcindezi iba khona futhi nezenzo zejwayelo zomntwana ziya thikamezeka. Umntwana wakho angazizwa engenathemba futhi enganalo gqozu lokushintsha izintonto.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Ukutshela umntwana wakho ukuthi 'yekela' ngungenza izinto zibe zimbi kakhulu kunakuqala. Kungcono umlalele, ukhombise ngomoya ophansi ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Zama ukuthola usizo lochwepheshe.", - "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Kwesinye isikhathi abantwana bangazilimaza ngamabomu ukumelana nemizwa engemihle efana nokucasuka, ukuba necala, umuzwa wobuze, nokuzizonda. Lokhu kungabangwa ukwethuka nengcindezi.", - "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ukutshela umntwana wakho ukuthi 'ima' kungenza izinto zibe zimbi kakhulu. Kungcono umlalele ngomoya ophansi ukutshengisa ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Uma umntwana wakho efuna ukukuchazela ukuthi ukuzilimaza kumsiza kanjani ekutheni azizwe kangcono, ungaqala ngokuqonda izizathu. Zama ukuthola usizo lochwepheshe.", - "What does that mean?": "Kuchaza ukuthini lokho?", - "How can you help?": "Ungasiza kanjani?", - "We all have negative thoughts sometimes.": "Sonke siyaba nayo imicabango emibi ngezinye izikhathi.", - "\"I am a failure\"": "\"Ngiyisahluleki\"", - "What to do?": "Kufanele ngenzeni?", - "Examples": "Izibonelo", - "Telling yourself or your teen to stop or to say the positive opposite often does not help.": "Ukuzitshela noma ukutshela mntwana wakho ukuthi imani noma usho into enhle futhi ehlukile kwesinye isikhathi akusebenzi.", - "\"I do everything perfectly\"": "\"Konke ngikwenza kahle kakhulu\"", - "Instead, you can ask:": "Kunalokho, ungabuza/ungacela", - "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?": "- Ingabe lomcabango ungowoqobo? Eziphi ezinye izincazelo?\n- Kwenzakalani uma ngiqhubeka ukukholelwa kulomcabango?\n- Ngingathini kumngani uma enalomcabango?", - "\"This is hard, but you are trying your best, and we will work together to find a solution\"": "Kunzima, kodwa uzama ngakho konke okusemandleni futhi sizobambisana ekutholeni isixazululo\"", - "\"It’s your fault\"": "\"Iphutha lakho\"", - "\"Let’s come up with a solution together\"": "\"Masiqhamuke nesisombululo ngokubambisana\"", - "\"I lost my job\"": "\"Ngilahlekelwe umsebenzi\"", - "\"I learned a lot in my job – that will help me find another one\"": "\"Kuningi engikufundile emsebenzini wami - lokho kuzongisiza ekutholeni omunye\"", - "\"Nobody likes me\"": "\"Akekho umuntu ongithandayo\"", - "\"Last week I did have a great time with...\"": "Kulelisonto eledlule ngibe naso isikhathi esimunandi no...\"", - "\"Bad things always happen to me\"": "\"Ngihlale ngehlelwa izinto ezimbi\"", - "\"This good thing happened the other day...\"": "\"Lento enhle isike yenzekile ngelanga eledlule...\"", - "Change": "Shintsha", - "MAKE TIME": "Yenza isikhathi", - "Set aside time to have a conversation without distractions.": "Beka isikhathi sokuxoxisana ngaphandle kokuphazamiseka.", - "LISTEN": "LALELA", - "Ask your teen questions and let them share their views without interrupting.": "Buza umntwana wakho imibuzo bese uyamvumela ukuthi aveze imibino yakhe ngaphandle kokumuphazamisa.", - "WORK TOGETHER": "Sebenzisanani", - "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Xoxisanani ngenkinga ethize, niqhamuke nezisombululo ndawonye bese nenza lokho enivumelane ngakho.", - "Thank your teen for sharing and highlight how it is helping you both.": "Mbonge umntwana wakho ngokwabelana ngemibono bese uyakugqamisa ukuthi kunisiza nobabili.", + "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise.", + "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo.\n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukusebenzisa i @global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmacebiso ethu ake asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi esimnandi ndawonye. Silapha ukuze sikusekele.", + "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!": "Lokhu kuyabakhathaza abazali yonke indawo. Sizoqinisekisa ukuthi uthola ukwesekwa ngokwakha ukukhulumisana. \n\nSizokhuluma kabanzi ngokuhlela kokuphepha kwengane yakho kamuva ku @global.weekly_workshops, kodwa ungawathola kakade amanye amacebiso ayisisekelo okugcina ingane yakho iphephile ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", + "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.": "Kuhle. Sinemhlangano yokufundisana emayelana nokwenza isabelomali somndeni okungakusiza ngengcindezi yemali kabanzana, futhi kunciphise izingxabano ezihilela imali.", + "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!": "Ingcindezi yemali ingakhungathekisa. \n\nSinokuqeqeshwa okumayelana nokwenza isabelomali somndeni emasontweni amahlanu, kodwa ungawathola kakade amacebiso ayinhloko esabelomali somndeni ngaphansi kwe-@data.parent_centre.my_tips.location_text!", + "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.": "Okuqukethwe okuvulwa ngale mibuzo sekuyatholakala ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", + "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nSizokunikeza ukwesekwa okwengeziwe kulokhu kamuva ku @global.weekly_workshops uma ungathanda ukwazi okwengeziwe!", + "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!": "Siyazi ukuthi kunzima lokho. Senezele amacebiso awusizo endlela ongachitha ngayo isikhathi nengane yakho eyevile eminyakeni eyishumi nambili ukuze @data.parent_centre.my_tips.location_text, uzokwazi ukuwafinyelela ngokushesha. \n\nNgenxa yokuthi i-@data.workshop.w_1on1.title yakha isisekelo sawo wonke amanye amathuluzi okuba umzali, izoba yi-@global.weekly_workshop ozoyithola ngesonto elizayo!", + "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!": "Wenze kahle! I-@global.weekly_workshop yethu elandelayo izokunikeza eminye imibono yalokhu, njengesisekelo sawo wonke amanye amacebiso okukhulisa izingane. Kodwa usuvele unesiqalo esihle!", + "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Sifake amanye amacebiso abalulekile endlela yokusebenzisa ukuncoma ku-@data.parent_centre.my_tips.location_text ukuze ukuthole ngokushesha.\n\nKu-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", + "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sisho okukhulu. Ku-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", + "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi leli kube yisonto elihle!\n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizokukhumbuza njalo ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops - kodwa kakade ungakwazi ukufinyelela amacebiso awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise!", + "Talk Together": "Khulumani Ndawonye", + "Share ideas, support each other!": "Yabelanani ngemibono, sekelanani!", + "Think Together": "Cabangani Ndawonye", + "It's time to think together!": "Sekuyisikhathi sokucabanga ndawonye!", + "Think": "Cabanga", + "It's time to think!": "Yisikhathi sokucabanga!", + "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.": "Nanka amakhono akuleli sonto ongahamba nawo! \n\nWasebenzise ekhaya futhi ungawathole noma inini ku @global.parent_centre yakho.", "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.": "1. Donsa umphefumulo kakhulu..\n2. Bona ukthi ngabe izindaba zinomqondo.\n3. Buza ukuthi uzitholephi lezozindaba.\n4. Qinisekisa nabanye abantu/nemithombo oyethembayo.\n5. Cabanga ukuba lezizindaba zizosiza noma zizosabisa abantu uma uzixoxa.", "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:": "Ngesinye isikhathi, sonke sifuna ukutshela abantwana bethu ukuthi \"Kumele wenze lokhu, ngale kwalokho... kuzoba nenkinga!\" Kodwa lokhu akwenzi ukuthi bayilandele kangcono imithetho. \n\nKunalokho, ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle ngoku mtshengisa ukuthi uyamethemba nokukhuluma naye futhi:", "DISCUSS CONSEQUENCES": "Xoxisanani ngemiphumela", "Ask \"If you do this, what could happen?\"": "Buza ukthi \"Uma wenza lokhu, kuzokwenzakalani?\"", - "PRAISE": "Ncoma", "If something goes well, praise your teen!": "Uma okuthile kuhambe kahle, mncome umntwana wakho!", "REFLECT TOGETHER": "Cabangani nihlaziye ndawonye", "If something goes wrong, ask \"How could you have done that differently?\"": "Uma kungahambanga kahle okuthile, buza ukuthi \"Eyiphi indlela obungenza kangcono ngayo?\"", "START SMALL": "QALA KANCANE", "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.": "Nika umntwana wakho izibopho ezincane kuqala. Uma lokho kuhamba kahle, ungengeza ezinye ukutshengisa ukuthi uyamethemba.", - "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho. Siqaphele ukuthi uthinte i- @ data.habit.spend_time.in_text_title - wenze umsebenzi omuhle wokukhumbula!", - "Your goal was to spend one-on-one time with your teen.": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho.", - "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Wenze kahle ngokuhlola izisombululo zezinselele zakho. Hamba uyozizama. Ubuhlobo bakho nengane yakho esebusheni bayo buzoqina kakhulu!", - "DAY – Do it every day": "USUKU - Kwenze nsuku zonke", - "PLAY – Let your teen choose the activity": "DLALA – Vumela ingane yakho ikhethe enizokwenza", - "STAY – Give your teen all of your attention": "HLALA - Nikeza ingane yakho konke ukunaka kwakho", - "Why was this tip helpful for you?": "Kungani leli cebiso libe usizo kuwe?", - "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" libe usizo ngoba...", - "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" ibe usizo ngoba...", - "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" ibe usizo ngoba...", - "Having a specific time to do this helps me to remember.": "Ukuba nesikhathi esithile sokwenza lokhu kungisiza ukuthi ngikhumbule.", - "With a routine, my teen and I can both keep our schedule free.": "Lapho kunenqubo elandelwayo, mina nengane yami siyakwazi ukuhlala sinesikhathi esivulekile.", - "Spending time with my teen every day helps to build trust with them/him/her.": "Ukuchitha isikhathi nengane yami nsuku zonke kuyasiza ekwakheni ukwethembana nabo / yona.", - "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ah yebo, ngisho nemizuzu eyi-shumi(10) ndawonye yenza umehluko omkhulu - okwenza kube lula ukuhlela ngaphakathi, eduze komsebenzi wakho nemisebenzi yasekhaya!", - "Letting my teen choose what to do builds their confidence.": "Ukuvumela ingane yami ukuba ikhethe ukuthi yenzeni kwakha ukuzethemba kwabo.", - "If my teen chooses, s/he is more likely to want to spend time together.": "Uma ingane yami ikhetha, kungenzeka ukuthi ifune ukuchitha isikhathi ndawonye.", - "Letting my teen choose shows that I care about his/her interests.": "Ukuvumela ingane yami ukuba ikhethe kukhombisa ukuthi ngiyazikhathalela izintshisekelo zayo.", - "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ngokwamukela iziphakamiso zentsha yami, ngikhombisa ukuthi ngiyamlalela.", - "Saying something nice about my teen’s choice helps them feel valued.": "Ukusho okuthile okuhle ngokukhetha kwengane yami kuyabasiza bazizwe bebalulekile.", - "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kuyiqiniso! Futhi uma intsha yethu ikhetha, bayakhuthazwa ukuthi nabo babhekane neminye imikhakha yezimpilo zabo.", - "By preventing interruptions, I show my teen that s/he is most important.": "Ngokuvimbela ukuphazamiseka, ngikhombisa ingane yami ukuthi ibaluleke kakhulu.", - "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Noma ngingenakukwazi ukujoyina okwenziwa yintsha yami, njengemidlalo, ngisengabakhuthaza.", - "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Lapho nginakisisa, kuningi engingakufunda ngalokho okuthandwa yingane yami, imibono kanye namakhono ayo.", - "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Yebo! Uma izingane zethu sizinikeza isikhathi sethu sonke, cishe ziyokwenza okufanayo kuthina esikhathini esizayo lapho sicela okuthile kuzo!", + "MAKE TIME": "Yenza isikhathi", + "Set aside time to have a conversation without distractions.": "Beka isikhathi sokuxoxisana ngaphandle kokuphazamiseka.", + "Ask your teen questions and let them share their views without interrupting.": "Buza umntwana wakho imibuzo bese uyamvumela ukuthi aveze imibino yakhe ngaphandle kokumuphazamisa.", + "WORK TOGETHER": "Sebenzisanani", + "Discuss a specific problem, come up with solutions together, and both do what you agree.": "Xoxisanani ngenkinga ethize, niqhamuke nezisombululo ndawonye bese nenza lokho enivumelane ngakho.", + "PRAISE": "Ncoma", + "Thank your teen for sharing and highlight how it is helping you both.": "Mbonge umntwana wakho ngokwabelana ngemibono bese uyakugqamisa ukuthi kunisiza nobabili.", + "Why @local.workshop_data.title?": "Kungani @local.workshop_data.title? \nnoma Ngobani @local.workshop_data.title?", + "Hear @global.topic_intro_name's message": "Lalela umyalezo ka@global.topic_intro_name", + "Read @global.topic_intro_name's message": "Funda umyalezo ka@global.topic_intro_name", + "Today's steps": "Izinyathelo zanamhlanje", + "Try it Together": "Kuzameni Ndawonye", + "Let's practice together.": "Asizijwayeza ndawonye.", + "What does that mean?": "Kuchaza ukuthini lokho?", + "How can you help?": "Ungasiza kanjani?", + "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:": "Ukuqonda ukuthi umntwana wakho uzizwa kanjani nanokuthi ungameseka kanjani kwenza omkhulu umehluko kunina nobabili. Mqaphele umntwana wakho futhi umbuze ukuthi uzizwa kanjani. Cofoza kulobubuso obungenzansi khona uzothola okwengeziwe:", + "Hopeful": "Ithemba", + "Resilient": "Ukubekezela", + "Self-esteem": "Ukuzethemba", + "Teens have goals and dreams for the future – near and far!": "Intsha inezinhloso namaphupho ngekusasa- eliseduze nelikude!", + "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.": "Buza umntwana wakho ngezinhloso nangamaphupho akhe, mkhuthaze ekutheni acabange akufunayo ngekusasa lakhe bese nenza uhlelo ndawonye lokusebenze ekufezeni lezozinhlelo namaphupho.", + "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.": "Umntwana oqinile angamelana nezimo ezinzima, ahambisane nezinguquko futhi axazulule nezinkinga eziqhamukayo.", + "Praise your teen for overcoming difficulty and support them where you can.": "Mncome umntwana wakho uma enqobe ubunzima futhi umeseke lapho ungakwazi khona.", + "A teen’s self-esteem is how they think of themselves.": "Ukuzethemba komntwana indlela abazicabanga ngayo.", + "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.": "Khuthaza isithombe esihle, iba isibonelo ekutheni ungazigconi futhi ungazigxeki ngasosonke isikhathi. Wazi amandla omntwana wakho futhi ubeseke ubuthakathaka babo.", + "Lonely": "Isizungu", + "Anxious": "Ukukhathazeka", + "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.": "Abantwana bangaba nomzwangedwa noma behleli nabanye. Bangazizwa ngathi abanaye umuntu abangakhuluma naye, abangamethemba noma abangabelana naye.", + "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.": "Umbuze umntwana wakho ukuthi uzizwa kanjani futhi uzame ukuthola izindlela ezintsha ezijabulisayo zokusebenzisana noma zokuxhumana nabangani nomdeni, ikakhulukazi ngesikhathi sokuvalwa kwezwe.", + "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.": "Ukukhathazeka kuwumuzwa ojwayelekile futhi kungasisiza sibhekane nezimo ezinzima. Kodwa ukukhathazeka kakhulu okuvimba umntwana ekutheni enze izinto azithandayo kuyinkinga.", + "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.": "Siza umntwana ukuthi aqaphele ukuthi yini emkhathazayo bese nenza uhlelo ndawonye lokuthi angamelana kanjani nemizwa yokukhathazeka.", + "Doing a relaxation activity together can help!": "Ukwenza umsebenzi ophumuzayo ndawonye kungasiza!", + "Depressed": "Ukucindezeleka", + "Self-harm": "Ukuzlimaza", + "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.": "Ukudabuka noma ukuzizwa unomoya ophansi, noma usesimweni esibi emphefumulweni, yonke lemizwa ijwayelekile empilweni yomuntu. Uma le mizwa iqhubeka isikhathi eside yilapho ke ingcindezi iba khona futhi nezenzo zejwayelo zomntwana ziya thikamezeka. Umntwana wakho angazizwa engenathemba futhi enganalo gqozu lokushintsha izintonto.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.": "Ukutshela umntwana wakho ukuthi 'yekela' ngungenza izinto zibe zimbi kakhulu kunakuqala. Kungcono umlalele, ukhombise ngomoya ophansi ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Zama ukuthola usizo lochwepheshe.", + "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.": "Kwesinye isikhathi abantwana bangazilimaza ngamabomu ukumelana nemizwa engemihle efana nokucasuka, ukuba necala, umuzwa wobuze, nokuzizonda. Lokhu kungabangwa ukwethuka nengcindezi.", + "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.": "Ukutshela umntwana wakho ukuthi 'ima' kungenza izinto zibe zimbi kakhulu. Kungcono umlalele ngomoya ophansi ukutshengisa ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Uma umntwana wakho efuna ukukuchazela ukuthi ukuzilimaza kumsiza kanjani ekutheni azizwe kangcono, ungaqala ngokuqonda izizathu. Zama ukuthola usizo lochwepheshe.", + "A teen sometimes does something because they:": "Kwesinye isikhathi umntwana wenza okuthile ngoba:", + "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens": "-Balalela abangani babo\n- Bafuna ukwenza okwenziwa abanye\n-Bacabangela 'imanje' kune 'nekusasa'\n-Bathanda ukuxhamazela futhi bengazi thola bebhoreka ukuqaphela\n-Abakhathazeki ngokuba sengcupheni- futhi bangakuthanda ukuba sengcupheni\n-Banolwazi olulinganiselwe abathembele kulo\n-Bazimisele ukuzama into entsha- noma kungenzakalani", + "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!": "Kungasiza ukugcina lokhu emqondweni uma umntwana wakho ethatha izinqumo ezingalungile. Khuluma naye futhi uchithe isikhathi naye khona uzokwazi ukumsiza ekutheni akhethe kangcono ngokuzayo!", + "You may be asked to share this code with people who will support your @global.parent_app journey.": "Ungase ucelwe ukuba wabelane ngale khodi nabantu abazokusekela @global.parent_app uhambo lwakho.", + "Last sync at: @local.sync_latest": "Ukuxhumanisa kokungcina: @local.sync_latest", + "This device has never been synced. Sync to reveal your code.": "Le divayisi ayikaze ixhunyaniswe. Yixhumanise khona kuzovela ikhodi yakho.", + "Sync now": "Kuxhumanise manje", + "Syncing...": "Kuyaxhumana...", + "Watch Together": "Bukelani Ndawonye", + "Let's watch a video together!": "Masibukele ividiyo ndawonye!", + "Watch": "Bukela", + "Let's watch a video!": "Masibukele ividiyo!", + "Options": "Ongakhetha kukho", + "Welcome @fields.user_name": "Siyakwamukela @fields.user_name", + "It's great to see you again!": "Kuhle ukukubona futhi!", + "Welcome @fields.group_name": "Siyakwamukela @fields.group_name", + "It's great to see you again! Let’s start with a song for families everywhere.": "Kuhle ukuk'bona futhi! Masiqale ngengoma yemindeni ekuyo yonke indawo.", + "Let's Slow Down": "Masehlise Isivinini", + "How would you like to do this workshop?": "Ungathanda ukukwenza kanjani umhlangano wokufundisana?", + "Coming soon": "Kuyeza maduze", + "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.": "Sizodinga ukuxoxa ngezinye izingqinamba zokukhulisa izingane ngaphambi kokuthi siqale ukusebenza \nku- @ local.workshop_data.title.\n\nUngathola izicebiso ezibalulekile ku @local.workshop_data.title nge @global.parent_centre.", + "My name": "Igama lami", + "@global.weekly_workshop day": "Usuku lwe @global.weekly_workshop", + "I do the workshops...": "Ngenza umhlangano wokufundisana...", + "My group's name": "Igama leqembu lami", + "My group is now doing the workshop...": "Iqembu lami lenza umhlangano wokufundisana...", + "I am now doing the workshop...": "Manje ngenze umhlangano wokufundisana...", + "These quick questions will fit this app to your needs.": "Le mibuzo esheshayo izokwenza le-app ifanelane nezidingo zakho.", + "Let’s start with a few questions about you and your family.": "Masiqale ngemibuzo embalwa emayelana nawe nomndeni wakho.", + "We would love to know your first name or nickname:": "Singathanda ukwazi igama lakho noma isiteketiso sakho:", + "Are you a woman or a man?": "Ungumuntu wesilisa noma wesifazane?", + "Woman": "Owesifazane", + "Man": "Owesilisa", + "How old are you?": "Uneminyaka emingaki?", + "Adults": "Bangaki abadala", + "Teens": "Intsha", + "Children": "Zingaki izingane", + "Babies": "Zingaki izingane ezincane", + "How many people are in your household?": "Bangaki abantu abasekhayeni lakho?", + "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!": "Ungenza i @global.weekly_workshops ngokwakho NOMA ungamema amanye amalungu omndeni noma abangane ukuba bahlanganyele nawe - nizofunda okuningi komunye nomunye. Kusezandleni zakho!", + "How would you like to do your @global.weekly_workshops?": "Ungathanda ukuyenza kanjani i @global.weekly_workshops yakho?", + "Can you think of a name for your group?": "Ungacabanga igama ongabiza ngalo iqembu lakho?", + "Which day of the week would you like to do your @global.weekly_workshops?": "Yiluphi usuku evikini ongathanda ukwenza ngalo i @global.weekly_workshops yakho?", + "Monday": "UMsombuluko", + "Tuesday": "ULwesibili", + "Wednesday": "ULwesithathu", + "Thursday": "ULwesine", + "Friday": "ULwesihlanu", + "Saturday": "UMgqibelo", + "Sunday": "ISonto", + "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.": "Kuhle! Sizovula ukuqeqeshwa okusha kweqembu lakho njalo ngesonto. Lokhu kunivumela nonke ukuba nizame lokho enikufundile nemindeni yenu ngaphambi kokuba nifunde elinye ikhono.", + "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.": "Kuhle! Sizovula ukuqeqeshwa okusha kwakho njalo ngesonto. Lokhu kuzokuvumela ukuba uzame lokho okufundile nomndeni wakho ngaphambi kokuba nifunde elinye ikhono.", + "You can always change these settings in your @global.weekly_workshop_options.": "Ungazishintsha noma nini lezi zinhlelo ku @global.weekly_workshop_options yakho.", + "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back": "Ingabe uyaqiniseka ukuthi ufuna ukuvula yonke imhlangano yokufundisana? Lapho usukuvulile khona ngeke usakwazi ukuphinde ukukhiye futhi", + "Unlock Workshops": "Vula umhlangano wokufundisana", + "Using the app together": "Ukusebenzisa i-app sisonke", + "It’s great to see you!\n\nFirst, let’s help your group get started.": "Kuhle ukukubona!\n\nOkokuqala, masisize iqembu lakho ukuthi liqale.", + "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?": "Vumelanani ngemithetho ndawonye:\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto?\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu?\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile?\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa?", + "You always can change your workshop day and your group name in the @global.weekly_workshop_options.": "Ungalushintsha noma nini usuku lokuqeqeshwa kwakho noma igama leqembu lenu ku @global.weekly_workshop_options.", + "Some rules that other groups made:": "Eminye yemigaqo/imithetho ebekwe amanye amaqembu:", + "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us": "Vumelanani ngemigaqo ndawonye\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa", + "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.": "Chitha imizuzu eyishlanu -5 kuya kwengu-20 nengane yakho esebusheni bayo uma ungakwazi kuleli viki.", + "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Khumbula - noma nini uma ukwazi, phumula, naka futhi uzivuze. \n\nZinakekele nsuku zonke. Ubalulekile!", "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.": "Abazali abaningi babhekana nezinselele zokuchitha isikhathi nezingane zabo ebusheni bazo.\n\nNazi izinselelo eziphezulu kakhulu eziyisishiyagalombili 8 abazali abasitshele zona ababhekana nazo lapho behlela noma bechitha isikhathi esisodwa nentsha yabo. Uma uhlangabezane nokukodwa kwalokhu noma wesaba ukuthi uzokuthinta, thepha ukuze uthole isixazululo esingaba khona. Ungathinta uphinde uhlole ezinye izinselelo ngemuva kwalokho.", "Did you have any challenges when trying to spend time with your teen?": "Ngabe unezinselelo ezithile ngenkathi uzama ukuchitha isikhathi nengane yakho?", "What challenge did you have when trying to spend time with your teen?": "Iyiphi inselele obenayo lapho uzama ukuchitha isikhathi nengane yakho?", @@ -1287,16 +475,253 @@ "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.": "Kuhle kakhulu! Ngale ndlela ungakwazi ukunaka ingane yakho esebusheni bayo ngaphandle kokuphazamiseka.", "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.": "Kuhle! Ungazama ukuchitha isikhathi nengane yakho esebusheni bayo lapho ezinye izingane sezilele noma lapho zidlala ngaphandle.", "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.": "Kuhle kakhulu! Mhlawumbe ningahamba ndawonye niye ezitolo noma nihambe niyobukela ezemidlalo, ukuze nixoxe ngaphandle kokuphazanyiswa ezinye izingane ezisuke zifuna ukunakwa nazo.", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.  Siphawule ukuthi uchofoze okuthi @data.habit.instruct_positively.in_text_title - wenze kahle ngokukhumbula!", - "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.", - "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Siyabonga ngokwabelana nathi! Wenze kahle ngokuzama ukunikeza ingane yakho esebusheni bayo iziqondiso eziwusizo kanye nokwakha ubuhlobo obuhle nengane yakho. \n\nIngane yahoo esebusheni bayo ifanelwe ukunconywa NAWE ufanelwe ukunconywa!", - "Which of the tips helped you?": "Yimaphi amacebiso akusizile?", - "GET REAL – Can your teen do what you are about to ask?": "BHEKANA NAMAQINISO – Ingabe ingane yakho esebusheni bayo ingakwenza yini lokho ozokucela?", - "GET POSITIVE – Use positive words and praise them!": "CABANGA NGEZINTO EZIKHUTHAZAYO – Sebenzisa amazwi akhuthazayo futhi uzincome izingane!", - "GET CLEAR – Be clear and specific!": "CACA- Cacisa futhi ucacise!", - "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Kuhle kakhulu! Lapho sicela ingane yet esebusheni bayo ukuba yenze into ekwaziyo ukuyenza, kulula ukuba iphumelele.", - "When we praise them, our teens feel encouraged to listen to us again!": "Lapho sizincoma, izingane zethu zizizwa zikhuthazekile ukuba ziphinde zisilalele!", - "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Kuhle kakhulu! Lapho sicabanga kusengaphambili ngeziqondiso ezicacile esingazinika ingane yethu esebusheni bayo, iziqondiso zethu kuba lula ukuzilandela!", + "DAY – Do it every day": "USUKU - Kwenze nsuku zonke", + "PLAY – Let your teen choose the activity": "DLALA – Vumela ingane yakho ikhethe enizokwenza", + "STAY – Give your teen all of your attention": "HLALA - Nikeza ingane yakho konke ukunaka kwakho", + "Why was this tip helpful for you?": "Kungani leli cebiso libe usizo kuwe?", + "\"@local.choice_1\" was helpful because...": "\"@local.choice_1\" libe usizo ngoba...", + "\"@local.choice_2\" was helpful because...": "\"@local.choice_2\" ibe usizo ngoba...", + "\"@local.choice_3\" was helpful because...": "\"@local.choice_3\" ibe usizo ngoba...", + "Having a specific time to do this helps me to remember.": "Ukuba nesikhathi esithile sokwenza lokhu kungisiza ukuthi ngikhumbule.", + "With a routine, my teen and I can both keep our schedule free.": "Lapho kunenqubo elandelwayo, mina nengane yami siyakwazi ukuhlala sinesikhathi esivulekile.", + "Spending time with my teen every day helps to build trust with them/him/her.": "Ukuchitha isikhathi nengane yami nsuku zonke kuyasiza ekwakheni ukwethembana nabo / yona.", + "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!": "Ah yebo, ngisho nemizuzu eyi-shumi(10) ndawonye yenza umehluko omkhulu - okwenza kube lula ukuhlela ngaphakathi, eduze komsebenzi wakho nemisebenzi yasekhaya!", + "Letting my teen choose what to do builds their confidence.": "Ukuvumela ingane yami ukuba ikhethe ukuthi yenzeni kwakha ukuzethemba kwabo.", + "If my teen chooses, s/he is more likely to want to spend time together.": "Uma ingane yami ikhetha, kungenzeka ukuthi ifune ukuchitha isikhathi ndawonye.", + "Letting my teen choose shows that I care about his/her interests.": "Ukuvumela ingane yami ukuba ikhethe kukhombisa ukuthi ngiyazikhathalela izintshisekelo zayo.", + "By accepting my teen’s suggestions, I show that I listen to him/her.": "Ngokwamukela iziphakamiso zentsha yami, ngikhombisa ukuthi ngiyamlalela.", + "Saying something nice about my teen’s choice helps them feel valued.": "Ukusho okuthile okuhle ngokukhetha kwengane yami kuyabasiza bazizwe bebalulekile.", + "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.": "Kuyiqiniso! Futhi uma intsha yethu ikhetha, bayakhuthazwa ukuthi nabo babhekane neminye imikhakha yezimpilo zabo.", + "By preventing interruptions, I show my teen that s/he is most important.": "Ngokuvimbela ukuphazamiseka, ngikhombisa ingane yami ukuthi ibaluleke kakhulu.", + "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.": "Noma ngingenakukwazi ukujoyina okwenziwa yintsha yami, njengemidlalo, ngisengabakhuthaza.", + "When I pay attention, I can learn so much about my teen’s interests, views and abilities.": "Lapho nginakisisa, kuningi engingakufunda ngalokho okuthandwa yingane yami, imibono kanye namakhono ayo.", + "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!": "Yebo! Uma izingane zethu sizinikeza isikhathi sethu sonke, cishe ziyokwenza okufanayo kuthina esikhathini esizayo lapho sicela okuthile kuzo!", + "Your goal was to spend one-on-one time with your teen.": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho.", + "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!": "Wenze kahle ngokuhlola izisombululo zezinselele zakho. Hamba uyozizama. Ubuhlobo bakho nengane yakho esebusheni bayo buzoqina kakhulu!", + "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.": "Ukuba umzali kungaba nzima kakhulu. Ngezinye izikhathi siba nomuzwa wokuthi izingane zethu azisilaleli.\n\nKodwa isayensi ibonisa ukuthi ukuchitha imizuzu nje embalwa usuku ngalunye nobabili nengane yakho kusiza ekwakheni ukwethembana nothando.", + "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.": "Lapho uchitha isikhathi nengane yakho kulapho ugxila kuyo, ngaphandle kokuphazanyiswa yi-TV noma omakhalekhukhwini. Yivumele ihole kulokho enikwenzayo noma enixoxa ngakho.\n\nKuhle uma ningachitha imizuzu engamashumi amabili ngosuku, kodwa ngisho nemizuzu emihlanu mihle kakhulu.", + "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.": "Sanibona.\n\nIsihloko sethu namhlanje ukuchitha isikhathi nezingane zethu.\n\nKubalulekile ukuchitha isikhathi nezingane zethu ukuze zikwazi ukusiqonda, nokuthi nathi sithole ithuba lokuziqonda. \n\nKhumbula, umndeni oqondana kahle uphila ngokuzwana.", + "Have you spent time with your teen already?": "Ingabe ususichithile isikhathi nengane yakho eyevile eminyakeni eyishumi nambili?", + "Thank you for putting so much effort into being a better parent. You are loved and appreciated!": "Siyakubonga ngokwenza umzamo ongaka ukuze ube umzali ongcono. Uyathandwa kakhulu siyazi qenya ngawe!", + "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.": "Ukuchitha isikhathi nengane yakho esebusheni bayo kwakha ukwethembana phakathi kwenu. \n\nQhubeka nohambo lwakho lwe-@global.parent_app manje - wena nomndeni wakho nizobona imiphumela emihle.", + "First @global.weekly_workshop!": "Okokuqala @global.weekly_workshop!", + "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.": "Sawubona @fields.user_name. I @local.workshop_data.in_text_title yakho isikulungele.", + "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.": "Sawubona @fields.group_name. I @local.workshop_data.in_text_title yakho isikulungele.", + "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nI @local.workshop_data.in_text_title yakho isikulungele!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.": "Kubonakala sengathi awukakayiqedi i-@local.workshop_data.in_text_title okwamanje. Ngeke kuthathe isikhathi eside, futhi uzothola imininingwane ewusizo. \n\nWenze kahle ngokuzama ukuba umzali ongcono. Kusasa ungangena ekuqeqeshweni okusha.", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!": "Wenze kahle ngokuqeda @local.workshop_data.in_text_title. Kusasa ungangena ekuqeqeshweni okusha okuzokusiza uphumule, ujabule futhi ufunde amakhono amasha!", + "Let's think of ways to spend one-on-one time with your teen.": "Masicabange ngezindlela zokuchitha isikhathi nengane yakho esebusheni bayo.", + "What could you do to spend one-on-one time with your teen?": "Yini ongayenza ukuze uchithe isikhathi nengane yakho esebsheni bayo?", + "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.": "Uzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Ukhumbule nokucabanga ngezindlela ezingadli isikhathi esengeziwe.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuya kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", + "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!": "Uyiqhawe! \n\nNsuku zonke, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole. \n\nKhumbula, uthola i @global.parent_point njalo lapho uzinakekela - ubalulekile!", + "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", + "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions": "* Imisebenzi yokuzinakekela\n* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", + "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.": "Yabelana ngamacebiso! \n\nYiziphi izinto ongazenza ukuze uchithe isikhathi nezingane zakho ezi sebusheni bazo?\n\nUzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Yiza namacebiso okuchitha isikhathi nengane yakho angadli isikhathi esengeziwe, njengokuhamba ndawonye niye ezitolo.", + "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuyango kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", + "DAY - Try to do it every day": "USUKU – Zama ukukwenza nsuku zonke", + "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.": "Thola imizuzu emihlanu (noma ngaphezulu!) usuku ngalunye lapho ingane yakho engenalutho olunye efuna ukulwenza.", + "PLAY - Let your teen choose": "DLALA - Vumela ingane yakho esebusheni bayo ukuba ikhethe", + "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!": "Tshela ingane yahoo esebusheni bayo ukuthi ungathanda ukuchitha isikhathi nayo nokuthi ingakhetha lokho efuna ukukwenza noma efuna ukukhuluma ngakho. Ingase idideke ekuqaleni kodwa ngokuhamba kwesikhathi izokujabulela ukuchitha isikhathi nawe!", + "STAY - Focus on your teen": "HLALA - Gxila enganeni yakho esebusheni bayo", + "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.": "Vala umabona kude (TV) ubeke eceleni omakhalekhukhwini. Bheka ingane yakho. Nqekuzisa ikhanda noma uthi “Ngiyabona” ukuze ubonise ukuthi ulalele ngempela. Yamukela ekushoyo ngaphandle kokuyahlulela.", + "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.": "Ukuchitha isikhathi nengane yakho esebusheni bayo kungaba mnandi nakuwe! Kunganciphisa nokucindezeleka kwakho.", + "Great!": "Kuhle!", + "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!": "Ngiyazi ukuthi ukuphila kungaba nzima. Ngiyaziqhenya ngawe. \n\nKungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilaleleni, nidanse ndawonye futhi nizihalalisele!", + "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilalele, udanse futhi uzihalalisele!", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali.", + "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali nge-@global.parent_app.", + "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.": "Sanibonani nonke.\n\nIsihloko sanamuhla ukuhalalisa kanye nezinyathelo ezilandelayo.\n\nBekumnandi, bekukuhle kakhulu ukuhamba nawe kulolu hambo. Namuhla sibungaza uhambo lwethu ndawonye. \n\nNamuhla sibungaza konke esikufundile kulo lonke uqeqesho.", + "Today you will celebrate, look back and look ahead:": "Namuhlanje sizobungaza, sibheke emuva siphinde sibheke phambili:", + "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support": "* Ukucabanga sijule kanye nengxoxo\n* Amacebiso: Indlela yokusekelana\nHLANGANANI - SHAYA UCINGO - THUMELA UMYALEZO - YABELANA\n* Ukuhlela ukweseka", + "Today you celebrate and reflect on your experiences.": "Namuhlanje uyagubha futhi ucabangisise ngezinto oke wabhekana nazo.", + "End of programme check-in": "Ukwabelana ukuthi sizizwa kanjani ekupheleni kwesifundo", + "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!": "Ubulokhu usebenzisa i-@global.parent_app ezinyangeni ezidlule, kodwa ukukhulisa ingane esebusheni bayo kuthatha isikhathi eside! Imibuzo elandelayo emayelana nobhekana nakho njengomzali izosisiza sihlole indlela okhulisa ngayo ingane yakho.\n\nYiba qotho. Khumbula ukuthi izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa. Awuwedwa!", + "You seem to have completed the end of programme check-in already. You can now skip this activity.": "Kubukeka ngathi usuqedile ukwabelana ngemizwa yakho. Usungadlulela komunye umsebenzi.", + "Let's talk about what has changed.": "Ake sixoxe ngoshintsho olwenzekile.", + "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!": "Xoxani ndawonye:\n* Yini eshintshile emndenini wakho?\n* Yini oziqhenya ngayo oyenzile?\n\nKhumbulani ukuncomana nokukhuthazana!", + "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!": "Hlelani ukuthi nizosekelana kanjani ukuya phambili. \n\nNingasebenzisa amacebiso avela kweminye imindeni noma nizakhele awenu!", + "You and your family have learnt so much. Let's think back and see what has changed.": "Wena nomndeni wakho kuningi enikufundile. Ake sicabange sibuyele emuva ukuze sibone ukuthi yini eshintshile.", + "Reflect": "Zindla", + "Listen and reflect": "Lalela futhi zindla", + "Read and reflect": "Funda futhi zindla", + "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?": "Vala amehlo uphumule.\n\nCabanga ngempilo yomndeni wakho ngaphambi kokuthi uqale uhambo lwakho ngalolu hlelo lokusebenza.\n \nCabanga ngamakhono owafundile:\n* Ukuzinakekela\n* Isikhathi sokuthi nibe nobabili ndawonye\n* Ukuncoma\n* Iziqondiso ezinhle\n* Ukulawula ukucindezeleka\n* Isabelomali somndeni\n* Imithetho\n* Imiphumela eyethulwa ngomoya ophansi\n* Ukuxazulula inkinga\n* Ukuphepha kwentsha\n* Ukubhekana nezinkinga\n\nCabangisisa/zindla ngohambo lwakho – bekunjani kuwe ukwenza lokhu:\n* Yabelanani ngamacebiso nichaze izinto eniye nabhekana nazo\n* Cabanga ufunde ezindabeni ezixoxwayo\n* Phrakthiza amakhono nengane yakho eyevile eminyakeni eyishumi nambili\n\nIngabe kukhona okuye kwashintsha kuwe nasemndenini wakho?\n\nYini oyidingayo ukuze uqhubeke usebenzisa la makhono?", + "MEET": "HLANGANANI", + "Keep meeting regularly to give each other parenting support.": "Qhubekani nihlangana njalo ukuze nisekelane njengabazali.", + "CALL": "SHAYA UCINGO", + "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.": "Yibani ‘abazali abangabangane’ abashayelana ucingo ucasukile noma ongazi ukuthi wenzeni.", + "TEXT": "THUMELA UMYALEZO", + "Text each other every week to share what you’ve done well.": "Thumelelani imiyalezo masonto onke ukuze nixoxelane ngenikwenzile.", + "SHARE": "YABELANA", + "Share @global.parent_app and help other families start their journey.": "Yabelana @global.parent_app futhi usize eminye imindeni iqale uhambo lwayo.", + "Fantastic! We are proud of you for all you have done over the past weeks.": "Kuhle! Siyaziqhenya ngawe ngakho konke okwenzile emasontweni adlule.", + "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.": "Siyaxolisa ngokuthi usuku lwakho lunzima. Siyaziqhenya ngawe ngakho konke okwenziwe emasontweni adlule.", + "@global.w_consequence_teen_boy_1 came home late.": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.", + "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.\n\nYimuphi umphumela ongasiza lapha?", + "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!": "Imiphumela ayifani nesijeziso: inika izingane zethu ithuba lokufunda ukumelana nezenzo zabo.\n\nIyalawuleka FUTHI isebenza kangcono kunokushaya noma ukuthetha!", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.", + "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.\n\nYimuphi umphumela ongasiza lapha?", + "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!": "Imiphumela isebenza kangcono uma kuxoxisanwa futhi kuvunyelwane ngayo nomntwana ngaphambi kokuthi isetshenziswe.\n\nOkunye futhi: akuyona yonke imiphumela emibi... Ningabuye nivumelane ngemiphumela EMIHLE yokwenza izinto EZINHLE ukuze ubone ukuziphatha okuhle okwengeziwe!", + "@global.w_consequence_teen_boy_2 helps washing dishes.": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.", + "What consequence would help here?": "Yimuphi umphumela ongasiza lapha?", + "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.\n\nYimiphi imiphumela emihle engasiza lapha?", + "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)": "Umsebenzi wasekhaya kuleli viki kuzoba ukukhulumisana nengane yakho ngomphumela OWODWA ongemuhle nomphumela OWODWA omuhle.\n\nImiphumela kumelwe ibe:\nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGALESOSIKHATHI (kwenze ngaso leso sikhathi)\nUNGASHINTSHI (okufanayo ngaso sonke isikhathi)", + "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.": "Ukuziphatha okungamukelekile: Ukufika ekhaya sekudlule isikhathi ekuvunyelwene ngaso. \n\nUmphumela Ongemuhle: Awuvunyelwe ukubona abangane bakho nosuku olulandelayo. \n\nUkuziphatha okungamukelekile: Ukukhuluma kabi ngokungenanhlonipho. \n\nUmphumela Ongemuhle: Bhala incwadi yokuxolisa. \n \nUkuziphatha Okuhle: Ukusiza ngokuyothenga. \n\nUmphumela Omuhle: Imizuzu engu-30 eyengeziwe yokwenza okuthile akuthandayo. \n\nUkuziphatha Okuhle: Ukusiza ngokugada izingane zasekhaya ezincane. \n\nUmphumela Omuhle: Ihora elilodwa elengeziwe lokuba nabangani ngempelasonto.", + "introduce a consequence together": "ethula umphumela ndawonye", + "Did you have any challenges when trying to introduce a consequence together?": "Ingabe nibe nezinselele lapho nizama ukwethula umphumela ndawonye?", + "What was difficult for you about introducing a consequence with your teen?": "Yini kuwe obekunzima ngokwethula umphumela nengane yakho esebusheni bayo?", + "I got very angry when my teen broke the rule.": "Ngike ngathukuthela kakhulu lapho ingane yami esebusheni bayo iphula umthetho.", + "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Lapho sithatha ikhefu ngaphambi kokuphendula, kusisiza ukwehlisa umoya futhi siphendule kangcono.\n\nNgokuzayo lapho ingane yakho ikuthukuthelisa, zama ukuhlaba ikhefu kuqala. Ngisho nokuphefumula okuncane okujulile kungenza umehluko omkhulu!", + "My teen got very angry with me after I gave the consequence.": "Ingane yams esebusheni bayo ingithukuthelele lapho ngiyitshela umphumela wezenzo zayo.", + "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Lapho ingane yakho esebusheni bayo ithukuthela, kungase kudingeke uye kwenye indawo wehlise umoya kuze nihlangane lapho nobabili senizolile. \n\nHlola ukuze uqiniseke ukuthi umphumela owubekayo unobulungisa futhi uyacabangela yini. Lalela incazelo yengane yakho esebusheni bayo, bese uqikelela ukuthi unikeza “Ushwele Wokuvikeleka” uma iphule umthetho ukuze ihlale iphephile.", + "I introduced the consequence without first discussing it with my teen.": "Ngethula umphumela ngaphandle kokuxoxa ngawo nengane yami esebusheni bayo.", + "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Ungawenza umphumela uma lokhu kwenzeka futhi? Lapho sithola imiphumela kanye nentsha yethu, umphumela uzoba ngokoqobo ngokwengeziwe, futhi intsha yethu iyozimisela ngokwengeziwe futhi ikwazi ukulandela umthetho.", + "I forgot to follow through with the consequence.": "Ngikhohliwe ukulandela umphumela.", + "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sonke siyawenza amaphutha! Uma sihambisana kakhulu nemiphumela yethu, maningi amathuba okuthi izingane zethu zizokhetha ukuziphatha kahle ngokuzayo.", + "Even with the consequence, my teen still does not follow the rule.": "Ngisho noma kukhona imiphumela ebekiwe yezenzo zayo, ingane yami esebusheni bayo ayiwulandeli umthetho.", + "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Uma ingane yakho esebusheni bayo iyaqhubeka iphula imithetho, kungase kudingeke uchithe isikhathi esengeziwe nayo. \n\nZama ukuqhubeka neminye imigomo yakho – njengokuzinakekela, ukuchitha isikhathi nengane, nokuyincoma. Onke la makhono azosiza ingane yakho esebusheni bayo izizwe ithandwa futhi ivikelekile... futhi kunciphise ukucindezeleka kuwe!", + "We only created a negative consequence, not a positive consequence.": "Sidale kuphela umphumela ongemuhle, hhayi umphumela omuhle.", + "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ngezinye izikhathi kungase kube nzima ukucabanga ngomphumela wokwenza kahle izinto. Imiphumela emihle izokhuthaza ingane yakho esebusheni bayo ukuthi izimele nakakhudlwana, futhi uzowubona umehluko!", + "My teen suggested being hit as a negative consequence.": "Ingane yami esebusheni bayo ibeka ukuthi ishaywe njengomphumela ongemuhle wokwephula umthetho.", + "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Izingane ezisebusheni bazo signase zijwayele ekubhekeni ukushaywa njengokuphela komphumela ongemuhle wokwephula imithetho. \n\nXoxa nabo ngemiphumela ezolile engabasiza baqonde ukuthi kukhona okungalungile abakwenzile. Lezi zizosebenza kangcono futhi zizobeka izibonelo ezinhle!", + "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho yephule umthetho wasekhaya).", + "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...": "Ungasiza ingane yakho iqonde ukuthi ukuphula imithetho yasekhaya kunemiphumela. \n\nKodwa INDLELA owenza ngayo ebalulekile. \n\nUkuthola imiphumela efanele kusiza umntwana ukuthi aziphathe kahle futhi kwenza umndeni uphile ngokuthula...", + "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sithi imiphumela eyethulwa ngendlela ezolile.\n\nKubalulekile ukuthi lapho sethula umphumela ebantwaneni bethu sibabandakanye nabo, kodwa kubalulekile nokuthi sizole lapho sethula imiphumela.\n\nLokhu kuzosisiza sivumelane ngokwethula imiphumela ngendlela ezolile ebantwaneni bethu futhi abantwana bazoyikhumbula kalula lapho sibabandakanya futhi lokho kuzobenza baziphathe kahle.", + "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:": "Kuvamile ukuthi abantwana bayiphule imithetho. Ukukhula kuyisikhathi ezinzima uma besafunda ukuthi bangobani. \n\nNgenhlanhla, kunezindlela zokukhuza abantwana ngaphandle kokucasuka noma ukuba nodlame... futhi zisebenza kahle!\n\nUkwethula imiphumela ngomoya ophansi kusiza izingane zifunde ukuthi ezikwenzayo kunemiphumela – emihle noma emibi. \n\nNazi ezinye izibonelo - zicabange uwumzali:", + "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time": "Ukwethula imiphumela ngomoya ophansi kumelwe kube... \n\nOKUNOBULUNGISWA: Okungaqinile ngokweqile futhi angakwazi ukukwenza \n\nNJENGAMANJE: Nika umntwana imiphumela ngalesosikhathi kwenzeka \n\nNGENDLELA EFANAYO : Nika umphumela ofanayo ngaso sonke isikhathi", + "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT": "Hlela umphumela owethulwa ngomoya ophansi wezingane zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla. Khumbula ukuthi kudingeka ube \n\nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSHI", + "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?": "Ingabe ukwazile ukuthola umphumela owodwa omuhle kanye nowodwa ongemuhle wokuziphatha kwengane yakho esebusheni bayo?", + "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.": "Qedela umhlangano wokufundisana bese uzama ukuxoxa nengane yakho esebusheni bayo ukuze nibeke ndawonye umphumela owodwa omuhle kanye nomphumela owodwa ongemuhle wendlela yokuziphatha.", + "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!": "Kuhle ukuthi ubulokhu usebenzisa i @global.parent_app. Usuthole amathuluzi ayisithupha kakade okuba umzali! \n\nThatha lokhu kuqeqeshwa okulandelayo ukuze uthole amanye amathuluzi okuba umzali!", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Imiphumela eyethulwa ngomoya ophansi iyisiza ngempela ingane yakho esebusheni bayo ukuba iyilandele kahle imithetho – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokuzibophezela kangaka emndenini wakho.", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!": "Wenze kahle ngokuphothula i-@local.workshop_data.in_text_title. Kusasa uzothola isifundo esisha esizokusiza uphumule, ube nentokozo futhi ufunde amakhono amasha", + "Why did giving a consequence this way not work well?": "Kungani ukwethulwa kwemiphumela ngalendlela kungasebenzanga kahle?", + "Yes, a strong reaction like that just made everyone more angry and upset.": "Yebo, ukusabela ngendlela enokuchwensa ngalendlela kwenze wonke umuntu wathukuthela kakhulu futhi wacasuka.", + "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:": "Ake sifunde ngokwenzekile ku @global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver wakhe:", + "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ubani isikhathi manje? Ufike emva kweskhathi!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awulandeli umthetho wethu! Ngizokushaya!”", + "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”": "@global.w_consequence_teen_boy_1: “Akunabo ubulungiswa lokho! Awungilaleli neze!! Ngiyakuzonda!”", + "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver": "Ake sibuyele ku @global.w_consequence_teen_boy_1 naku @global.w_consequence_male_caregiver wakhe", + "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"": "@global.w_consequence_male_caregiver: “Ngikhathazekile ngokuthi namanje usabuya kuhlwile ekhaya, @global.w_consequence_teen_boy_1. Yini esingayenza ukuze sikusize ukhumbule ukuthi ubuye ngesikhathi esivumelene ngaso ekhaya?\"\n\n@global.w_consequence_teen_boy_1: “Uma ngingafika ngesikhathi ekhaya, mhlawumbe ngingahlala imizuzu engu-30 kunangesikhathi esivamile sokulala?”", + "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”": "@global.w_consequence_male_caregiver: Umbono omuhle lowo! Yini okumelwe siyenze uma ungawulandeli umthetho? \n\n@global.w_consequence_teen_boy_1 (uyabubula): “Ngmluuhm”", + "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"": "@global.w_consequence_male_caregiver: “Khuluma, ngiyazi ukuthi kukhona okuthile okucabangayo.” \n\n@global.w_consequence_teen_boy_1: “Kulungile…. Kunganjani: uma ngenza umsebenzi wesikole?”", + "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"": "@global.w_consequence_male_caregiver: “Kumele uwenze umsebenzi wakho wesikole noma kunjalo. Uma uwukhohlwa umthetho, kuyinto elungile ukuthi ungababoni abangane bakho ngosuku olulandelayo.\" \n\n@global.w_consequence_teen_boy_1: “Kulungile, @global.w_consequence_male_caregiver.\"", + "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”": "Ngosuku olulandelayo...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani isikhathi! Sekuhlwile!”", + "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", + "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kuphakathi namabili futhi ubuye ekhaya sekudlule isikhathi esivumelene ngaso. Noma ngabe yisiphi isizathu, kumelwe uqonde ukuthi lokhu akwamukelekile. @global.w_consequence_female_caregiver bengikhathazeke kakhulu.”", + "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”": "@global.w_consequence_teen_boy_1: “Abangane bami bebafuna ngihlale isikhathi esijana nabo. Bebengibiza ngengane ngoba besengifuna ukuya ekhaya.” \n\n@global.w_consequence_male_caregiver: “Ngiyazi ukuthi kungaba nzima ukuthi cha kubangane bakho. Ake sikhulume ngalolu daba ekuseni uma sesiphumulile.”", + "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa ngokukukhathaza futhi @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ngiyabonga. Njengamanje hamba uyolala, kodwa ngifuna kucace, njengoba ubuye ekhaya sekudlule isikhathi esivumelene ngaso, awuvumelekile ukuphuma kusasa kusihlwa.”", + "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Indatshana kanye nengxoxo – okungasebenzanga ...\n* Izibonelo zemiphumela\n* Amathuluzi: Indlela yokwethula imiphumela ngomoya ophansi\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiphumela\n* Indatshana kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekezwa kwendaba - lokho akungasebenzanga ...\n* Izibonelo zemiphumela\n* Izindlela: Indlela yokwethula imiphumela ngesizotha\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiohumela yokungayilandeli imithetho\n* Indaba kanye nokubuyekezwa kwendaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "Discuss together: \n* Why did giving a consequence this way not work well?": "Xoxani ndawonye: \n* Kungani ukwethulwa kwemiphumela ngale ndlela kungasebenzanga kahle?", + "@global.w_consequence_male_caregiver was angry": "@global.w_consequence_male_caregiver ubediniwe", + "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain": "@global.w_consequence_male_caregiver akavumanga @global.w_consequence_teen_boy_1 achaze", + "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1": "Imiphumela beyingaxoxwanga kusengaphambili no @global.w_consequence_teen_boy_1", + "The consequence was too strong": "Imiphumela beyiqine kakhulu", + "Giving a consequence this way did not work well because...": "Ukwethulwa kwemiphumela ngale ndlela akusebenzanga ngoba...", + "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!": "Xoxani ndawonye:\n* Yimiphi imithetho izingane zakho ezivame ukuyiphula? \n * Yimuphi umphumela ongawusebenzisa emthethweni othile ophuliwe? \n\nImiphumela kumelwe ibe: \nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGOKUSHESHA (kwenze ngaso leso sikhathi) \nUNGASHINTSHI (okufanayo ngaso sonke isikhathi).\n\nNcomanani futhi nikhuthazane – singanikana amandla!", + "Let's talk about this story": "Ake sikhulume ngalolu daba", + "Why did using a consequence work well this time?": "Kungani ukusebenzisa umphumela kusebenze kahle kulokhu?", + "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm": "@global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver baxoxe ngemiphumela ngesikhathi bobabili bezolile", + "They agreed on consequences together": "Bobabili bavumelene ngemiphumela", + "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule": "@global.w_consequence_male_caregiver usabele ngomoya ophansi kodwa engagwegwesi ngesikhathi @global.w_consequence_teen_boy_1 ephule umthetho", + "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1": "@global.w_consequence_male_caregiver ulalele @global.w_consequence_teen_boy_1", + "The consequence was realistic and appropriate": "Umphumela ubunengqondo futhi ufanelekile", + "Using a consequence worked well this time because...": "Ukusebenzisa umphumela kusebenze kahle lana ngoba...", + "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!": "Indlela owethula ngayo imiphumela ngesizotha iyasiza. Khumbula, uma ubandakanya umntwana wakho, izinto ziba ngcono!", + "EXPLAIN": "CHAZA", + "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.": "Bheka ukuthi nobabili ninomoya ophansi yini. Phefumula izikhathi ezimbalwa. Chazela ingane yakho ukuthi kungani ukhathazekile ngokuziphatha kwayo.\n\nChaza ukuthi kungani umthetho ubalulekile. Ungamtshela indlela ozizwa ngayo - kulungile ukusho ukuthi uphoxekile.", + "AGREE": "VUMA", + "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.": "Hlela nengane yakho ngemiphumela yokulandela neyokungawulandeli umthetho.\n\nBacele baveze imibono yabo. Khulumani nize nivumelane ngokuthile okuzosebenza.\n\nYenza umphumela WOKUNGALANDELI umthetho nelungelo azolithola uma ethe WALANDELA umthetho.", + "ACT": "THATHA ISINYATHELO", + "When your teen follows the rule, give praise and privileges!": "Uma ingane yakho iwulandela umthetho, yincome bese uyinikeza amalungelo!", + "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!": "Bazozizwa behlonishwa futhi bebalulekile. Khumbula: Uma sibancoma njalo, bazothuthukisa kakhulu ukuziphatha okuhle!", + "When your teen does not follow the rule, follow through with the consequence.": "Uma ingane yakho ingawulandeli umthetho, qhubeka nomphumela enivumelene ngawo.", + "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).": "Uma ingane yakho iphula umthetho, ngomoya ophansi mkhumbuze ngomphumela walokho. Lokho kumelwe kube OKUNOBULUNGISWA (akumelwe kube nokhahlo kakhulu), NGALESOSIKHATHI (kwenze ngaso leso sikhathi) UNGASHINTSHI (okufanayo ngaso sonke isikhathi).", + "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT": "Kungaba yimuphi umphumela owethulwa ngomoya ophansi ezinganeni zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla? \n\nKhumbula ukuthi kumelwe ube : \nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSI", + "Not seeing any friends for a month": "Ukungaboni abangane inyanga yonke", + "This may be hard to do for you and also too harsh!": "Lokhu kungase kube nzima ukukwenzela futhi kube nzima kakhulu!", + "Cancelling their birthday plans in a month’s time": "Ukukhansela izinhlelo zabo zokuzalwa esikhathini esingangenyanga", + "This is too far in the future, and too harsh as well!": "Lokhu kukude kakhulu esikhathini esizayo, futhi kulukhuni kakhulu!", + "No TV this evening": "Ukungabukeli i-TV namuhlanje kusihlwa/ntabama", + "Perfect, this sounds fair and can be done straight away": "Kuhle, kuzwakala kunobulungisa futhi kungenziwa khona manje", + "Self-care is a key parenting tool.": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali.", + "So good to hear you are feeling well today. You are incredible!": "Kuyajabulisa ukuzwa ukuthi uzizwa uphilile namhlanje. Uyamangalisa!", + "Sorry that things are difficult right now. Take a deep breath and know that you are valued.": "Uxolo ngokuthi isimo sinzima njengamanje. Donsa/khokhe umoya, uphefumule futhi wazi ukuthi ubalulekile.", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa kweviki elizayo kuzobungaza nina nonke, futhi kunisize nihlelele ikusasa. \n\nKungani ningahleli ukuba nomcimbi wokudla ndawonye, nilungise nomculo uma nithanda ukudansa!", + "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa ngeviki elizayo kuzobe kubungaza wena, futhi ungakhetha ukusekelwa okufunayo ukuqhubekela phambili. \n\nUngalungiselela okuthile kokuzithokozisa okungajatshulelwa - okuthile othanda ukukudla, noma umculo othanda ukuwulalela!", + "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK": "Wena nengane yakho khethani isimo esisodwa kulezi (noma ungacabanga esinye!). Buka opopayi, nixoxe ngokuthi ningenze njani uma lokhu kungenzeka kumngani noma ilungu lomndeni. \n\nBese uyakhumbula: PHEFUMULA - LALELA - CABANGA", + "prepare for a possible crisis with their teens": "balungiselele inkinga engase ibe khona nentsha yabo", + "prepare for a possible crisis with your teen": "lungiselela inkinga engase ibe khona nengane yakho esebusheni bayo", + "My teen told me that something serious happened to them and I did not know how to handle it.": "Ingane yami eyevile eminyakeni eyishumi nambili ingitshele ukuthi kukhona into ebucayi eyenzeke kuyo futhi angazanga ukuthi ngisisingathe kanjani leso simo.", + "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Ncoma ingane yakho ngokukutshela; lokho akulula ukukwenza! Khumbula, ungasebenzisa wonke amakhono owakhethe ebhokisini lakho lamathuluzi: Thatha isikhashana, sebenzisa izinyathelo ezine zokuxazulula izinkinga, futhi ufinyelele ukuze uthole ukwesekwa wena nomntwana wakho osemusha enikudingayo!", + "Get support": "Thola ukwesekwa", + "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Ingxoxo ingenze ngangakhululeka ngoba ingikhumbuze ngento ebuhlungu eyenzeka kumina.", + "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Lapho sikhunjuzwa izinto ezinjalo ezenzeka kuthina, kungokwemvelo ukucasuka noma ukuthukuthela. Kubalulekile ukuthola isikhathi lapho usuzolile sokucabanga ngokwesekwa okudingayo. Kungase kudingeke ukhulume nomunye umuntu othile.", + "One of us did not feel comfortable.": "Oyedwa kuthina ubezizwa engakhululekile.", + "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Lokhu kuyinto okunzima ukukhuluma ngayo. Zitholele isikhathi sokuphumula. Siyazi ukuthi kulula kakhulu ukungakhulumi ngalezi zinto sinethemba lokuthi ngeke zenzeke kithi. Nokho ukufunda ukubhekana nenhlekelele kufana nokuthola umshwalense; KUHLALE kungcono ukucabanga ngakho nokuzilungiselela.", + "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Umgomo wakho bekuwukuxoxa nengane yakho esebusheni bayoi ngesimo esiyinhlekelele esingase sivele bese nenza icebo laso.", + "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.": "Yonke imindeni ibhekana nezinkinga. Uma sizilungiselela ndawonye futhi sazi ukuthi sizoluthola kuphi usizo NGAPHAMBI kokuthi okuthile okubi kwenzeke, singakwazi ukubhekana nezinkinga.", + "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.": "Sanibonani, nonke.\n\nIsihloko sanamuhla simayelana nokubhekana nezinkinga.\n\nIzinkinga zingavela nomaphi. Izinkinga zingavela noma nini. Ngakho-ke, kubalulekile ukuthi njengomndeni nibe nezinhlelo zokuthi nizokwenza kanjani uma ilunga lomndeni lizithola lisenkingeni. \n\nKubalulekile ukuba nezinhlelo ukuze ilungu ngalinye lomndeni lizizwe livikelekile. \n\nLapho sibhekele nenkinga, kumelwe sikhumbule ukuma, sidonse umoya, bese sizigcina sizolile. Lokho kuzokusiza ubhekane nenkinga ngendlela engcono.", + "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK": "Kuyasiza ukukuprakthiza ukubhekana nenkinga engaqubuka ngaphambi kokuba yenzeke. \n\nBheka lezi zikhathi ezinhlanu zezinkinga zomndeni. Zicabange uwumzali: Yini obungayenza?\n\nKhumbula: PHEFUMULA - LALELA - CABANGA", + "Crisis 1: @global.w_crisis_teen_boy_2 fights at school": "Inkinga 1: @global.w_crisis_teen_boy_2 ukulwa esikoleni", + "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"": "@global.w_crisis_teen_boy_2: “Angikaze ngikwenze lokhu ngaphambili. Njengamanje ngizoxoshwa\"", + "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant": "Inkinga 2: @global.w_crisis_teen_girl_1 uyakhulelwa", + "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ngizizwa nginamahloni. Angazi ukuthi ngenzenjani”", + "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant": "Inkinga 3: @global.w_crisis_teen_boy_2 ukhulelisa intombazane", + "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Angifuni ukuba nengane\"", + "How could you respond to @global.w_crisis_teen_boy_2?": "Ungasabela kanjani ku @global.w_crisis_teen_boy_2?", + "Crisis 4: Someone in the family gets sick": "Inkinga 4: Ilunga lomndeni liyagula", + "\"The test said I have HIV. I’m scared I’m going to die\"": "“Ukuhlolwa kwegazi kuveze ukuba ngine-HIV. Ngiyesaba ukuthi ngizofa”", + "How could you respond in this situation?": "Ungasabela kanjani kulesi simo?", + "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend": "Inkinga 5: @global.w_crisis_teen_girl_1 uphoqwe yisoka lakhe ukuba enze ucansi", + "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"": "@global.w_crisis_teen_girl_1: \"Bengingafuni ngempela ukuya ocansini. Manje sengizokhulelwa noma ngigule. @global.w_crisis_female_caregiver, Ngiyesaba kakhulu...\"", + "How could you respond to @global.w_crisis_teen_girl_1?": "Ungasabela kanjani ku @global.w_crisis_teen_girl_1?", + "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.": "Khumbulani ukusekelana nokukhuthazana. Kunzima ukuhlale nizolile futhi nilalelana uma kunenkinga - siyaziqhenya ngani.", + "Have you discussed with your teen what you would do in a crisis situation?": "Usuxoxile yini nengane yahoo esebusheni bayo ukuthi yini ongayenza esimweni esibucayi?", + "Crisis Examples": "Izibonelo Zezinkinga", + "You are a committed parent. Be proud of yourself - this is a big achievement in itself!": "Ungumzali ozibophezele. Ziqhenye ngawe - yinto enkulu le oyifinyelele!", + "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.": "Kuhle kakhulu ukuthi unathi kulolu hambo lokuba umzali! \n\nQedela i-@local.workshop_data.in_text_title futhi ufunde indlela engcono kakhulu yokusabela lapho ingane yakho esebusheni bayo ikudinga kakhulu.", + "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.": "Asazi ukuthi inhlekelele ingase yenzeke nini, kodwa SINGAZI lungiselela!\n\nQala umhlangano wokufundisana olandelayo ukuze uhlole ukuthi ungakwenza kanjani lokhu nengane yakho esebusheni bayo.", + "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!": "Kusasa umhlangano wokufundisana wokugcina @global.parent_app ukukulindile. \n\nZama qedela @local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ngaleyo ndlela, ungaqedela amakhono okuba umzali futhi unqume lokho ozokwenza ngokulandelayo!", + "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!": "Wenze kahle waqeda @local.workshop_data.in_text_title. Kusasa, ungangena umhlangano wokufundisana wakho kokugcina ukuze uhlole uhambo lwakho @global.parent_app nalokho ongakwenza ngokulandelayo!", + "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!": "Yebo, @global.w_crisis_female_caregiver uwasebenzise wonke amakhono – nawe ungenza kanjalo!", + "All these skills can help in a crisis.": "Wonke lamakhono angasiza lapho kunenkinga.", + "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:": "Inkinga ingavelela noma ubani. \n\nAke sibone ukuthi yini eyenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver wakhe:", + "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"": "@global.w_crisis_female_caregiver: “Bandla sthandwa sami, ubonakala uthukuthele ngempela, ungathanda ukungitshela ukuthi kwenzekeni?”", + "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"": "@global.w_crisis_teen_girl_1: “Umalume, u... u... ubengithinta.” \n\n@global.w_crisis_female_caregiver (uyacabanga): “Donsa umoya kakhulu... Idingani ingane yami? Idinga ukuthi ngehlise umoya bese ngiyalalela” \n\n@global.w_crisis_female_caregiver: “Woza uzohlala la eduze kwami. Thatha isikhathi, ngikulalele.”", + "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"": "@global.w_crisis_teen_girl_1: “Ngiqinisile, u... u... ungenze ngakwenza! Ungenze ngaya ocansini naye! Bengingafuni, ngiyafunga, ngize ngasho nokuthi CHA, kodwa wathi ngizoba senkingeni.”\n\n@global.w_crisis_female_caregiver: “Ngiyabonga ngokungitshela lokhu. Awukho enkingeni. Lokhu akulona iphutha lakho.”", + "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"": "@global.w_crisis_teen_girl_1: “Izolo ngesikhathi uhambile uyobona u@global.w_crisis_adult_friend. Uvele wafika kungaleso sikhathi okwenzeke ngaso.”\n\n@global.w_crisis_female_caregiver: “Kulungile, ngiyakukholwa ngane yami. Yinto enkulu lena futhi sizoyithola indlela yokuthola usizo esiludingayo. Singaya kuphi ukuze sithole usizo?\n\n@global.w_crisis_teen_girl_1: “Esikoleni sami?”", + "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"": "@global.w_crisis_female_caregiver: “Ah ngiyazi, ake sihambe siye emtholampilo. Bazokwazi ukuthi yini okumelwe siyenze ukuze sikusize. Ingabe lokhu kuzwakala kukahle kuwe?”\n\n@global.w_crisis_teen_girl_1: “Yebo... Kulungile... Kodwa ngicela ukuhamba nawe?”", + "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"": "@global.w_crisis_female_caregiver: “Nakanjani ngizokwenza . Bese @global.w_crisis_teen_girl_1? Khumbula ukuthi lokhu akulona iphutha lakho.” Ngiyakuthanda. Ungumuntu okahle. Sizodlula kulokhu.”", + "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.": "Enye inkinga abazali abakhathazeke ngayo udlame nobugebengu. Ake sibheke isibonelo ndawonye.", + "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ubukela ukhathazekile kusukela izolo. Ingabe kukhona okungalungile?”", + "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"": "@global.w_crisis_teen_boy_1: “Izolo, mina nabangane bami sihambe sayobuka umdlalo webhola lezinyawo. Abanye abafana ababedakiwe baqala ukulwa nomngane wami.\" \n\n@global.w_crisis_male_caregiver_1: “Qhubeka, ngilalele. Ngithemba ukuthi awuzange ulwe?”", + "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"": "@global.w_crisis_teen_boy_1: “Bengingafuni, kodwa bengingeke ngime ngibukele beshaya umngane wami, ngakho-ke...”\n\n@global.w_crisis_male_caregiver_1: “Ngakho, ulwile ukuze uvikele umngane wakho?”", + "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"": "@global.w_crisis_teen_boy_1: “Wonke umuntu ubelwa. Ngibone umuntu elele phansi kwidamu legazi. Ubebonakala... efile.”", + "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"": "@global.w_crisis_male_caregiver_1: “Ngiyajabula ukuthi ungitshele ngalokhu, @global.w_crisis_teen_boy_1. Ake sihlale phansi manje sixoxe ngokuthi ingabe kuyadingeka ukuthi sibandakanye amaphoyisa noma omunye umuntu ukuba asize.”", + "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"": "@global.w_crisis_teen_boy_1: “Ngiyabonga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Sizodlula kulokhu. Khumbula, sizokweseka njengomndeni.”", + "Every small thing you do matters. We hope you are proud of yourself too.": "Zonke izinto ezincane ozenzayo zibalulekile. Sethemba ukuthi nawe uyaziqhenya ngawe.", + "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Indatshana kanye nengxoxo\n* Indatshana kanye nengxoxo\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba\n* Indatshana kanye nokubuyekeza indaba\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_girl_1 naku @global.w_crisis_female_caregiver! Lokhu kungenzeka kubafana nakumantombazane.", + "What skills did @global.w_crisis_female_caregiver use?": "Imaphi amakhono u @global.w_crisis_female_caregiver awasebenzisile?", + "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_boy_1 naku @global.w_crisis_male_caregiver_1!", + "What skills did @global.w_crisis_male_caregiver_1 use?": "Imaphi amakhono u @global.w_crisis_male_caregiver_1 awasebenzisile?", + "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.": "Inkinga ingasenza sizizwe sicasukile noma singenalusizo. Kodwa kungaleso sikhathi lapho abantwana bethu bedinga siphefumule, silalele futhi sicabange.", + "BREATHE": "PHEFUMULA", + "Stay calm. Ask yourself ‘what does my teen need right now’": "Hlala uzolile. Zibuze ‘yini edingwa ingane yami njengamanje’", + "LISTEN": "LALELA", + "Tell them you are there for them and love them.": "Batshele ukuba ukhonela bona futhi uyabathanda.", + "THINK": "CABANGA", + "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.": "Khuluma nengane yakho. Yini engasiza kulesi simo? Kungase kudingeke wenze izinhlelo ezisheshayo manje, bese wenza izinhlelo zesikhathi esizayo kamuva.", + "You can be proud of yourself for exploring ways to get help!": "Ungaziqhenya ngokuthola izindlela zokuthola usizo!", + "How are you feeling today?": "Uzizwa kanjani namuhla?", + "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.": "Kuhle ukuthi kuhamba kahle namuhla! Iyiphi into eyodwa ehambe kahle namuhla? Khumbula ukuzincoma ngayo.", + "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.": "Uxolo ukuzwa ukuthi awuzizwa kahle namuhla. Wenze kahle ngokuthi uyiqaphele leyo mizwa, nokuzama ukwehlisa umoya nokuba nomusa kuwe. Ubekela umndeni wakho isibonelo esihle.", + "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)": "Ongakwenza ekhaya kuleli viki ukuthi unikeze ingane yakho umyalelo omuhle.\n\nKhumbula - IBA NEQINISO, KHULUMA IZINTO EZAKHAYO, CACISA = THOLA LOKHO OKUFUNAYO (ngendlela okungenzeka ngayo kosemusha!)", "Did you have any challenges?": "Ingabe zibe khona izinselele obhekene nazo?", "What challenge did you have?": "Yiziphi izinselele obe nazo?", "My teenager did not want to follow the instruction.": "Ingane yami esebusheni bayo ayifunanga ukulandela iziqondiso.", @@ -1314,9 +739,74 @@ "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!": "Kuhle kakhulu! Ngokwaba imisebenzi, uzoba nesikhathi esiningi sokwenza into emnandi nengane yakho esebusheni bayo– kubalulekile kakhulu!", "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!": "Yebo, kuthatha isikhathi ukujwayela ukunikeza iziqondiso ezinhle – kuzosiza ngempela ukuphinde uzame! Cabanga ngendlela yokuziphatha ongathanda ukuyibona kakhulu enganeni yakho esebusheni bayo bese ucabanga ngezindlela ezinhle zokunikeza leso siqondiso!", "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.": "Kunzima ukunikeza iziqondiso uma sisacasukile. Zama ukuthola isikhathi lapho usuzolile ukuze unikeze isiqondiso esihle enganeni yakho esebusheni bayo. \n\nKokulandelayo @global.weekly_workshop, sizoxoxa kabanzi ngendlela esingalawula ngayo imizwelo yethu!  Ungathola eminye imisebenzi eyongeziwe yokuphumula @data.parent_centre.relax_and_activities.location_text.", - "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!": "Umgomo wake bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali. Sibonile ukuthi uchofoze okuthi @data.habit.money.in_text_title - wenze kahle ngokukhumbula!", - "Your goal was to make a family budget and savings plan.": "Umgomo wakho bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali.", - "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Siyakubonga ngokwabelana ngalokho okwenzeke kuwe! Wenze kahle ngokucabanga ngendlela yokuhlela ezemali niyonge nonge nomndeni wakho. Lokhu kuzokusiza ngempela ukwazi ukufinyelele imigomo yomndeni wakho. \n\nNdawonye ningafinyelela kwizinto eziningi ezinhle!", + "Which of the tips helped you?": "Yimaphi amacebiso akusizile?", + "GET REAL – Can your teen do what you are about to ask?": "BHEKANA NAMAQINISO – Ingabe ingane yakho esebusheni bayo ingakwenza yini lokho ozokucela?", + "GET POSITIVE – Use positive words and praise them!": "CABANGA NGEZINTO EZIKHUTHAZAYO – Sebenzisa amazwi akhuthazayo futhi uzincome izingane!", + "GET CLEAR – Be clear and specific!": "CACA- Cacisa futhi ucacise!", + "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.": "Kuhle kakhulu! Lapho sicela ingane yet esebusheni bayo ukuba yenze into ekwaziyo ukuyenza, kulula ukuba iphumelele.", + "When we praise them, our teens feel encouraged to listen to us again!": "Lapho sizincoma, izingane zethu zizizwa zikhuthazekile ukuba ziphinde zisilalele!", + "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!": "Kuhle kakhulu! Lapho sicabanga kusengaphambili ngeziqondiso ezicacile esingazinika ingane yethu esebusheni bayo, iziqondiso zethu kuba lula ukuzilandela!", + "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.", + "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!": "Siyabonga ngokwabelana nathi! Wenze kahle ngokuzama ukunikeza ingane yakho esebusheni bayo iziqondiso eziwusizo kanye nokwakha ubuhlobo obuhle nengane yakho. \n\nIngane yahoo esebusheni bayo ifanelwe ukunconywa NAWE ufanelwe ukunconywa!", + "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.": "Gxila kokuhle! \n\nUkutshela abantwana bethu ukuthi YINI esifuna bayenze kusebenza kangcono kunokubatshela ukuthi BAYEKE ukwenza okuthile.\n\nUzowubona umehluko.", + "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.": "Sanibonani, sanibonani nonke.\n\nIsihloko sethu namuhla sikhuluma ngemiyalelo emihle. \n\nKubalulekile ukunika izingane zakho imiyalelo emihle, ngoba uma sibanikeza imiyalelo emihle bayazi futhi bayaqonda ukuthi yini esilindele ukuthi bayenze, futhi bayenza ngalendlela esifuna bayenze ngayo. \n\nEkugcineni, kwenza wonke umuntu ajabule.", + "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!": "Awukhethanga nokukodwa phakathi kwalokhu @data.habit.instruct_positively.title @global.parent_points. \n\nPhinda zame futhi namhlanje!", + "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.": "Umakile @global.parent_point @data.habit.instruct_positively.title kanye kakade - ngakho wenza inqubekelaphambili enhle.", + "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!": "Mawu khuluma ngawe khuluma ngomusa mayelana nomsebenzi omuhle owenzayo. Akekho umzali ongawenzi amaphutha futhi thina sicabanga ukuthi wenza kahle kakhulu!", + "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.": "Iziqondiso ezinhle zikusiza ubone ukuziphatha okuhle nakakhulu! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole amanye amacebiso endlela lokhu okungasebenza ngayo emndenini wakho.", + "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.": "Ingabe ingane yakho esebusheni bayo ihlezi ikulalela? Uma kungenjalo (njengakithi sonke), hlola umhlangano wokufundisana waleli sonto ukuze ufunde indlela yokunikeza iziqondiso ezinhle kungakusiza kakhulu lokho.", + "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Njengenjwayelo, ungakwazi ukufinyelela kumhlangano wokufundisana omusha kusasa. Kuzosiza ukuqeda ishabhu yangaphambilini ngaphambi kwalokho.\n\nAbanye abazali basebenzisa i-app lapho besendleleni eya emsebenzini. Kungani ungayisebenzisi i-app lapho unemizuzu embalwa? \n\nSiyakubonga ngokusebenzisa i-@global.parent_app.", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\nKusasa, ulindwe umhlangano wokufundisana omusha: uzobona umehluko omkhulu lapho wenza izinguquko ezincane!", + "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?": "Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo?", + "What could @global.w_instruct_female_caregiver have done differently?": "Yini @global.w_instruct_female_caregiver abangayenza ngokuhlukile?", + "Said something nice first": "Ubengasho okuthile okuhle kuqala", + "Spoken to @global.w_instruct_teen_girl in a calm voice": "Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile", + "Told @global.w_instruct_teen_girl what she wants her to do": "Ubengamtshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", + "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver bazizwa kanjani njengamanje?", + "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Kungani ucabanga ukuthi isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", + "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver": "@global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe", + "@global.w_instruct_female_caregiver was able to stay calm": "@global.w_instruct_female_caregiver ukwazile ukuhlala ezolile", + "@global.w_instruct_female_caregiver kept a positive attitude": "@global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", + "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":": "Ake sibone ukuthi kwenzekani uma @global.w_instruct_female_caregiver ethi @global.w_instruct_teen_girl \"UNGENZI LOKHU\":", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe.\n\n@global.w_instruct_female_caregiver: “Ungangcolisi njengoba ngisahlanza indlu. Uyangiphazamisa!”", + "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”": "@global.w_instruct_teen_girl: “Kodwa kumelwe ngizilungiselele umncintiswano wesikole. Awungivumeli ngenze lutho.”\n\n@global.w_instruct_female_caregiver: “Ungangiphenduli!”", + "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”": "@global.w_instruct_teen_girl: “Arrg!! Kungani ngithethiswa ngaso sonke isikhathi????” \n\n@global.w_instruct_female_caregiver ekhuluma yedwa: “Le ngane ihlale idala izinkinga.”", + "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:": "Siyabonga ngokuthi nicabanga kanye nathi! \n\nAke sibuyele emuva sibone ukuthi kuzokwenzekani uma @global.w_instruct_female_caregiver enikeza umyalelo omuhle:", + "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kuyajabulisa ukukubona uprakthiza ukudansa nomngane wakho. Ngicela niyodansela ngaphandle ukuze ngiqedele ukuhlanza indlu. Ngemva kwalokho, ningangibonisa umdanso wenu.”\n\n@global.w_instruct_teen_girl: “Kulungile, @global.w_instruct_female_caregiver!”", + "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"": "@global.w_instruct_female_caregiver: “Ngiyabonga ngokuthi nidansele ngaphandle njengoba bengiqedela ukuhlanza indlu, @global.w_instruct_teen_girl. Manje nginesikhathi sokuthi ngibukele umdanso wenu.”", + "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"": "@global.w_instruct_female_caregiver: “Kwaze kwakuhle, @global.w_instruct_teen_girl! Udansa kahle ngempela!”", + "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions": "* Ukuhlola umcabango\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions": "* Ukuhlola umcabango\n* Indaba kanye nokubuyekeza - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza - okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Amacebiso alokho ongakwenza ekhaya", + "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?": "Xoxani ndawonye: \n\n* Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo? \n* Yini @global.w_instruct_female_caregiver abengayenza ngokuhlukile?", + "@global.w_instruct_female_caregiver could have...": "@global.w_instruct_female_caregiver ubenga...", + "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do": "* Ubengasho okuthile okuhle kuqala \n* Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile \n* Ubengatshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", + "Let's discuss what happened this time.": "Ake sixoxe ngalokho okwenzeke manje.", + "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?": "Xoxani ndawonye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver uzizwa kanjani njengamanje?\n* Ucabanga ukuthi kungani isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", + "Positive instructions can work with your teen too!": "Ukunikeza imiyalelo emihle kungasebenza nasenganeni yakho!", + "It worked better this time because...": "Kusebenze kangcono manje ngoba...", + "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude": "* @global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe\n* @global.w_instruct_female_caregiver ukwazile ukuhlala ezolile \n* @global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", + "Let’s do a thought experiment!": "Ake senze ukuhlola okucatshangiwe!", + "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?": "UNGACABANGI NGENDLOVU \n\nYini ocabanga ngayo?", + "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)": "Ngokuqinisekile UKE wacabanga ngendlovu...\n\n Unganiki imiyalelo eyenza abantwana bacabange ngalokho.\n\nNgezinye izikhathi abaqondi ukuthi YINI esifuna bayenze. \n\nKanti futhi ngokuvamile abathandi ukutshelwa ukuthi yini ekumele bangayenzi (cishe kunjalo nangathi sonke.)", + "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?": "MANJE, CABANGA NGENGULULE! \n\nYini ocabanga ngayo?", + "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.": "Kuhle! Imiyalelo emihle, imiyalelo ecacile isiza abantwana bagxile kulokho okumele bakwenze.\n\n Abantwana bazozizwa behlonishwa kakhulu futhi bangalalela.", + "GET REAL": "IBA NEQINISO", + "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.": "Ingabe ingane yakho ingakwenza ngempela yini lokho ozokucela? Kungase kungenzeki ukuthi ifundele phansi usuku lonke, kodwa isigamu sehora uma usidinga singalunga.", + "GET POSITIVE": "CABANGA IZINTO EZAKHAYO", + "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!": "Mamatheka, babuke emehlweni, usebenzise amazwi akhuthazayo. Bancome ngokushesha uma beqala ukwenza obacela ukuthi bakwenze!", + "GET CLEAR": "CACISA", + "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.": "Ngokuvamile siyakwazi esikufunayo emiqondweni yethu, kodwa asikusho kucace ngokwanele. Yisho ngokucacile ukuthi ufuna ingane yakho yenzeni. Zama ukuthi ‘ngicela ubuye ekhaya ngo-7pm’ kungokuthi ‘buya ekhaya ngesikhathi’.", + "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!": "Ake sizame ukunikeza imiyalelo EMIHLE, EYIQINISO neCACILE. Ukuprakthiza kuzokusiza wena uphumelele nengane yakho!", + "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!": "Khetha abantu ababili eqenjini lakho:\n* Omunye enze sengathi uyingane\n* Kuthi omunye enze sengathi ungumzali wengane \n* “Mzali: Nikeza “ingane yakho” umyalelo omuhle umkhuthaze futhi umncome \n* “Ngane”: Phendula ngendlela ocabanga ukuthi ingane ingaphendula ngayo kulokhu \n\nXoxani ndawonye ngokuthi kuhambe kanjani:\n* Kukwenze wazizwa kanjani “njengomzali” “nanjengengane yeyevile eminyakeni eyishumi nambili”?\n* Ingabe kukhona ongakwenza kangcono?\n\nNikela wonke umuntu ithuba lokuba “umzali” nokuba “ingane” uma kungenzeka. Ukuprakthiza kuveza imiphumela emihle!", + "Examples of positive instructions:": "Izibonelo zemiyalelo emihle:", + "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!": "* Ngiyawuthanda umculo wakho. Ungakwazi yini ukuwunciphisa ngesikhathi sesidlo sakusihlwa ukuze sikwazi ukuxoxa? Ngiyabonga - ngiyakwazisa kakhulu lokho. \n * Umnandi umculo wakho. Ubani umculi wawo? Ngicela uwuvale umculo uma ungena endlini. Ungawudlalela phansi ekamelweni lakho uma uthanda. Ngiyabonga!", + "Wonderful, I am so happy! Keep up the good work.": "Kuhle kakhulu, ngijabule kakhulu! Qhubeka nokwenza umsebenzi omuhle.", + "Sorry that things are difficult. All families struggle. We are here to help!": "Ngiyaxolisa ngokuthi isimo sinzima. Isimo sinzima kuyoyonke imindeni. Silapha ukuba sisize!", + "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!": "Noma ngabe yini engahambanga kahle namuhla, ungakhathazeki ngayo zama futhi kusasa. Kulungile!", + "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza isabelomali futhi - manje senze KANYE nengane yakho nomndeni wakho! \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", + "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Yenza isabelomali nomntwana kanye nomndeni wakho. \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", + "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.": "Buyekeza isabelomali nomntwana kanye nomndeni wakho. Ukwenza kanjalo kuzokhumbuza wonke umuntu sidinga ukwenza izinqumo ezinzima ngezinye izikhathi - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sisize izigidi zemindeni.", + "Steps to make a budget": "Izinyathelo zokwenza isabelomali", "make a budget together with their family": "enza isabelomali ndawonye nomndeni wabo", "Did you have any challenges when making your budget together?": "Ingabe ube nezinselele lapho nenza isabelomali ndawonye?", "What whas difficult for you about making your budget together?": "Yini ebinzima kuwe ngokwenza isabelomali senu ndawonye?", @@ -1328,8 +818,83 @@ "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!": "Ngiyaxolisa ngokuzwa lokhu. Ngiyazi ukuthi kungaba nzima! Kungani singake siphinde sikuzame futhi? Ingane yakho esebusheni bayo noma amanye amalungu omndeni angangenelela akusize!", "My teen did not want to do the budgeting with me.": "Ingane yami bingafuni ukwenza isabelomali kanye nami.", "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!": "Zama ukwenza isabelomali nabanye abantu abadala ekhaya lakho kuqala. Ingane yakho esebusheni bayo ingase ibe nentshisekelo kokwenzayo. \n\nUkwenza isabelomali kungase kuzwakale kuyinto ebucayi kodwa zama ukwenza lokhu kube mnandi – kwenze kube umdlalo eniwudlalayo lapho nichitha isikhathi ndawonye! Noma ungazama ukwenza ibhajethi ye-@global.w_money_grandma first. \n\nKhumbula ukubancoma alpha maseniqedile!", - "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Nawe uyakufanelekela ukunconywa. Siyakubonga ngokusebenzisa i-@global.parent_app. Kubonisa ukuthi uyakhathalela ngempela!", - "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!": "Umgomo wakho bekuwukuncoma ingane yahoo esebusheni bayo. Uchofoze okuthi @data.habit.praise_teen.in_text_title this week. Wenze kahle ngokukhumbula!", + "Your goal was to make a family budget and savings plan.": "Umgomo wakho bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali.", + "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!": "Siyakubonga ngokwabelana ngalokho okwenzeke kuwe! Wenze kahle ngokucabanga ngendlela yokuhlela ezemali niyonge nonge nomndeni wakho. Lokhu kuzokusiza ngempela ukwazi ukufinyelele imigomo yomndeni wakho. \n\nNdawonye ningafinyelela kwizinto eziningi ezinhle!", + "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.": "Imindeni eminingi ikhathazeke ngemali, ikakhulu uma abantwana bethu belokhu becela izinto! \n\nUma senza isabelomali ndawonye, singavumelana ukuthi siyisebenzisa kanjani imali NOKUTHI siyonge ukuze sigweme ukukhathazeka futhi sisebenzele ukufinyelela imigomo esizibekele yona njengomndeni.", + "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.": "Sanibonani, nonke. \n\nIsihloko sanamuhla ibhajethi yomndeni. \n\nKubalulekile ukwenza ibhajethi, kodwa okubaluleke nakakhulu ukwenza isabelomali esihlanganisa umndeni wonke. \n\nUkuyenza ndawonye kukhulisa izinga lokuqonda indlela imali esentshenziswa ngayo njengomndeni nokuthi malini ozoyongela umndeni wakho, ungenza nezinhlelo zokuthi nizoyonga kanjani imali njengomndeni.", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.": "Kunezinyathelo ezine zokwenza isabelomali somndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo. Udinga:\n\n- Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni\n- Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali\n \n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", + "A family budget can help @global.w_money_grandma - and YOU!": "Isabelomali somndeni singasiza @global.w_money_grandma - sisize NAWE!", + "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.": "Kunezinyathelo ezine zokwenza ibhajethi yomndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo.", + "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.": "Udinga: \n* Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni \n* Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali \n\n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", + "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church": "* ukudla \n* amanzi nogesi \n* izimpahla \n* ama-akhawunti \n* Izinhlelo ze-TV ezikhokhelwayo \n* izinto zokugeza \n* izinwele \n* i-airtime \n* izindleko zesikole \n* ezokuthutha \n* imishuwalensi/amapholisi \n* imithi \n* ezokuzijabulisa/ezemidlalo \n* imali yokuqasha \n* imali ebolekiwe \n* imali yesonto", + "Think about what we spend money on each month.": "Cabanga ngokuthi siyisebenzisela ini imali inyanga nenyanga.", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba izithombe zazo zonke izinto wena nomndeni wakho enichitha imali kuzo ngenyanga. \n* Bhala eceleni kwesithombe ngasinye ukuthi into ngayinye ibiza malini inyanga ngayinye. (Akudingeki ubhale inani lemali uma ungafuni ukwenza njalo.)\n* Hlanganisa inani lemali enilisebenzisayo inyanga ngayinye.", + "Wonderful! You finished step 1! \n\nLet’s move on!": "Kuhle kakhulu! Usiqedile isinyathelo 1! \n\nAsiqhubeke!", + "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Khulumisanani ngezidingo zenu nezinto enizifunayo \n\nOKUFUNAYO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", + "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?": "Ngokuvamile abantu ababoni izinto ngendlela efanayo. Uma sikhuluma ngezinto esizidingayo kanye nesizifunayo, siqondana kancono futhi senze izinqumo ezinhle ezimayelana nokuthi sizoyisebenzisa kanjani imali yethu.\n\nBheka uhlu lwezinto osebenzisa imali kuzo bese niyaxoxa: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo njengomndeni?", + "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without": "Cabanga ngezidingo nezimfuno \n\nIZIMFUNO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", + "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?": "Bheka uhlu lwezinto osebenzisa imali kuzo bese uyakhetha: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo?", + "Make a budget!": "Yenza isabelomali!", + "Make a budget as one big family!": "Yenzani isabelomali njengomndeni owodwa omkhulu!", + "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Umuntu oyedwa uzovolontiyela ukuveza olwakhe uhlu (uma engekho ofuna ukuvolontiya ningenza uhlu olusha ndawonye) \n* Thathani izindima - abanye bazoba abantu abadala, kuthi abanye babe ngabantwana. \n* Khetha ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.) \n* Yenza isinqumo ndawonye sokuthi malini enizoyisebenzisela ini, bese nibeka amatshe/okuthile kuleso sithombe. \n\nAniqinisekanga ngesinqumo senu? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", + "Make a budget as a family!": "Yenzani isabelomali njengomndeni!", + "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!": "* Bhala phansi ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.)\n* Yenza isinqumo ukuthi malini uzoyisebenzisela ini, bese ubeka amatshe/okuthile kuleso sithombe. \n\nAniqiniseki ngesinqumo sakho? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", + "Plan how you can save money, so you can deal with emergencies and realise your family goals!": "Hlela ukuthi uzoyonga kanjani imali, ukuze ukwazi ukubhekana nezimo eziphuthumayo ezivelayo futhi ufinyelele imigomo yomndeni wakho!", + "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.": "Uma ungakwazi ukonga ngisho noma okuncane ozokusebenzisa esikhathini esizayo noma ezimweni eziphuthumayo - kungenza umehluko omkhulu ngokuhamba kwesikhathi. \n* Faka indilinga ebizwa ngokuthi “izimo eziphuthumayo”.\n* Faka indilinga ebizwa ngokuthi “imigomo yomndeni”.\n* Manje zama ukuhlela imali yakho ukuze wonge okuncane nyanga zonke ezintweni ozikhokhelayo.", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu eqenjini lakho ufanelwe ukunconywa, akunjalo?", + "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu emndenini wakho ufanelwe ukunconywa, akunjalo?", + "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!": "SIYAKUHALALISELA!!! Wenze isabelomali sakho - khumbula ukuphinde wenze lesi sabelo mali futhi namalungu womndeni wakho - uma nivumelana ndawonye ngohlelo kuzokwenza umehluko omkhulu!", + "Have you talked with your teen about your family budget yet?": "Ingabe usukhulumile nengane yakho eyevile eminyakeni eyishumi nambili ngolwabiwo mali lomndeni wakho?", + "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!": "Noma nini lapho uzizwa uwedwa noma ucindezelekile, yazi ukuthi awuwedwa. Kukhona abazali emhlabeni wonke jikelele ababhekene nezinkinga ezifanayo nezakho.\n\nWenza okusemandleni akho nsuku zonke futhi sonke siyaziqhenya ngawe!", + "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!": "Ukuhilela umndeni wakho endleleni osebenzisa ngayo imali yakho kungasusa ukucindezeleka okuningi nezimpikiswano. \n\nQedela i-@local.workshop_data.in_text_title ukuze usize umndeni wakho ngokwenza isabelomali kanye nokonga imali. Empeleni kulula - uzobona!", + "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.": "Ingabe uzizwa ucindezelekile ngemali? Ingabe ingane yakho esebusheni bayo ihlezi ikucela izinto ongenayo imali yokuzithenga? \n\numhlangano wokufundisana waleli sonto umayelana nemali nokwenza isabelo mali.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Abazali abaningi bathi ukwenza isabelomali kulethe ukuthula endlini yabo – kungakusebenzela nawe.\n\nSiyakubonga futhi ngokuba umzali ozibophezele.", + "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.": "Kuhle ukuthi uqedile @local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kuzovulwa ukuze kukusize ubeke imithetho yomndeni esebenzayo.", + "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:": "Kungaba nzima ukuthola zonke izinto ozidingayo nyanga zonke. Imindeni eminingi ihlangabezana nalenkinga! \n\nKuhlanganise @global.w_money_grandma - Ake sibone:", + "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"": "@global.w_money_grandma: “Bengilokhu nginakekela abazukulu bami, @global.w_money_teen_girl no @global.w_money_teen_boy, njengoba abazali babo bashona besebancane. Ngokuvamile siba nezinkinga zemali, njengoba ngithola kuphela imali yesibonelelo sikahulumeni esincane.”", + "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"": "@global.w_money_grandma: “Nginengcindezi kakhulu. Anginayo imali esele. Futhi manje siyaxabana nezingane zami ngezinto abazifunayo futhi.”", + "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:": "Nenze umsebenzi omuhle, seniqede izinyathelo ezi-3 zokuqala! \n\nAke sibone ukuthi @global.w_money_grandma ulwenze kanjani uhlelo lokusebenzisa imali yakhe, njengoba nje wenza:", + "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"": "“Ngifunela abazukulu bami ikusasa elihle, kodwa angazi ukuthi ngizoyithola kuphi imali. Ukuboleka imali komashonisa kuyingozi kanti futhi kuyabiza ukuyikhokha. \n\nKumele ngonge imali, kodwa lokho kubonakala kungeke kwenzeke!”", + "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"": "“Umgomo wami ukuthi umzukulu wami womfana aye esikoleni samabanga aphezulu bese kuthi umzukulu wami wentombazane aye enyuvesi. Ngingakwazi kanjani ukonga imali eningi ngemadlana encane enginayo?”", + "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"": "“Ngiyazi - ake siqale ngokuhlela! Okokuqala, ake ngenze isabelomali - uhlelo lokuthi ngizoyonga kanjani imali yami. Ngemva kwalokho ngizokonga imali encane ngesikhathi - ngizophinde ngijoyine namaqembu okonga imali nokubolekisa ngemali.”", + "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"": "“Ngizophinde ngikhulume nabazukulu bami sikhethe izinto esizosebenzisa imali encane kuzona njalo ngeviki. Bazongisiza ngicabange ngezinto esizifunayo kodwa esingazidingi.”", + "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”": "Ngemva kweminyaka embalwa kamuva:\n\n“Bheka, sesiwafinyelele amaphupho ethu! Ayikho imali engiyiboleke kubangane noma komashonisa. Ngokonga okuncane iviki neviki, ngikwazile ukukhokhela u-@global.w_money_teen_boy esikolweni samabanga aphakeme futhi ngonga nemali ka-@global.w_money_teen_girl yokufunda enyuvesi. Ngiyaziqhenya ngalokhu.”", + "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:": "Ukonga kubaluleke ngalesi sezinye izizathu: izimo eziphuthumayo! @global.w_money_grandma uye wakufunda lokhu ngendlela:", + "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”": "“Ngelinye ilanga kwaba nemvula enesiphepho esibi eyalimaza uphahla lwami. Kwakhukhuleka yonke into. Kwadingeka ngithole imali ngokushesha ukuze ngilungise uphahla. Ngazizwa ngiphelelwe ngamandla.”", + "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.": "Thatha isikhashana ujabulele izinto ozenzile, ngaphezu kwazo zonke ezinye ezinto okumelwe uzenze zinsuku zonke.", + "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions": "* Indaba – lokho akusebenzanga… \n* Ukufunda ukwenza isabelomali\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Ingxoxo ngezindlela zokonga imali\n* Ukufunda ukonga imali\n* Amathuluzi: Indlela yokwenza isabelomali kanye nokonga\nCABANGA - KHETHA - YAKHA - HLELA\n* Amacebiso alokho ongakwenza ekhaya", + "Step 1: THINK": "Isinyathelo 1: CABANGA", + "What do we spend on now?": "Siyisebenzisa kuphi imali njengamanje?", + "THINK Activity": "CABANGA Umsebenzi", + "Step 2: CHOOSE": "Isinyathelo 2: KHETHA", + "Talk together about needs and wants": "Khulumani ngezidingo kanye nezimfuno ndawonye", + "CHOOSE Activity": "KHETHA Umsebenzi", + "Step 3: BUILD": "Isinyathelo 3: YAKHA", + "Make your own budget": "Zenzele isabelomali sakho", + "BUILD Activity": "YAKHA Umsebenzi", + "Step 4: PLAN": "Isinyathelo 4: HLELA", + "Emergencies and family goals": "Izimo eziphuthumayo nemigomo yomndeni", + "PLAN Activity": "HLELA Umsebenzi", + "What are your family savings goals?": "Imiphi imigomo yokonga yomndeni wakho?", + "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!": "Imigomo emihle leyo! \n\nUmgomo omuhle loyo! Uma senza isabelomali esihle bese sihlela indlela yokonga imali ndawonye, singakwazi ukuyifinyelela bese siyaziqhenya ngathi!", + "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!": "Sonke sinamaphupho ngemindeni yethu, njengo @global.w_money_grandma. Ngokubekela eceleni imali encane inyanga nenyanga, ungawafinyelela lawo maphupho!", + "What are your family savings goals?": "Imiphi imigomo yokonga womndeni wakho?", + "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!": "Umgomo omuhle loyo! \n\nNgokwenza isabelomali esihle kanye nohlelo lokonga, ungakwazi ukuyifinyelela bese uziqhenya ngawe!", + "Let's talk about this story.": "Ake sikhulume ngale ndaba.", + "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla. \n\nIziphi ezinye izimo eziphuthumayo ezingasehlela?", + "Let's think about this story.": "Ake sicabange ngale ndaba.", + "For @global.w_money_grandma, a storm happened.": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla.", + "What other emergencies could come up for your family?": "Yiziphi ezinye izimo eziphuthumayo ezingavelela imindeni yethu?", + "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!": "Isimo esiphuthumayo singavelela noma imuphi umndeni. Ukonga imali yokusiza uma kuvela isimo esiphuthumayo NGAPHAMBI kokuthi siqubuke kuzovimbela ukukhathazeka kungalindelekile nokuba nengcindezi!", + "Let's talk about different ways we can save.": "Ake sikhulume ngezindlela ezihlukahlukene zokonga.", + "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!": "Xoxani ndawonye: \n* Imali singayonga ngaziphi izindlela ezihlukahlukene? \nYibuphi ubuhle nobubi bendlela ngayinye yokonga? \n\nUkuqonda indlela ngayinye kuzokusiza unqume ukuthi iyiphi indlela engcono yokonga elungele umndeni wakho. \n\nNoma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakhe uqhubekele phambili!", + "Let's think about different ways we can save.": "Ake sicabange ngezindlela ezihlukahlukene esingonga imali ngazo.", + "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.": "Kunezindlela ezihlukahlukene esingakwazi ukonga ngazo: ekhaya, ukuthenga izinto esingakwazi ukuzithengisa kamuva, ebhange, noma eqenjini lokonga.\n\nCabanga ngobuhle nobubi bendlela ngayinye yokonga imali.", + "What is the best savings option for your family?": "Iyiphi indlela yokonga engcono elungele umndeni wakho?", + "Whatever savings plan you choose, it will really help your family move forward!": "Noma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakho uqhubekele phambili!", + "Caring for yourself is so essential.": "Kubalulekile ukuzinakekela.", + "Wonderful, I am so happy things are going well. Keep up the good work.": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle. Qhubeka nokwenza umsebenzi omuhle.", + "This week's home practice is to praise your teen once a day. It will only take 10 seconds!": "Umsebenzi wasekhaya kuleli viki ukuncoma ingane yakho kanye ngosuku. Kuzothatha imizuzwana eyishumi nje kuphela!", "Your goal was to praise your teen.": "Umgomo wakho bekuwukuncoma ingane yakho esebusheni bayo.", "Did you have a chance to praise your teen this week?": "Ingabe ulitholile ithuba lokuncoma ingane yakho esebusheni bayo kuleli sonto?", "Yes": "Yebo", @@ -1345,17 +910,136 @@ "Well done for observing how your teen felt; keep it up!": "Wenze kahle ngokuqaphela indlela ingane yakho esebusheni bayo ezizwa ngayo; qhubeka wenza kanjalo!", "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!": "Kuyenzeka - yiba nesineke. Qinisekisa ukuthi uyaqhubeka uchitha isikhathi nengane yakho esebusheni bayo, ukuze ibheke umbono wakho njengobalulekile. Lapho ukuncoma kwakho kuqotho, uzozibona izinzuzo maduzane!", "No problem - try to observe how they respond the next time!": "Ayikho inkinga - zama ukubona indlela ingane esabela ngayo esikhathini esizayo!", - "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.": "Umgomo wakho bekuwukuxoxa nengane yakho esebusheni bayoi ngesimo esiyinhlekelele esingase sivele bese nenza icebo laso.", - "prepare for a possible crisis with their teens": "balungiselele inkinga engase ibe khona nentsha yabo", - "prepare for a possible crisis with your teen": "lungiselela inkinga engase ibe khona nengane yakho esebusheni bayo", - "My teen told me that something serious happened to them and I did not know how to handle it.": "Ingane yami eyevile eminyakeni eyishumi nambili ingitshele ukuthi kukhona into ebucayi eyenzeke kuyo futhi angazanga ukuthi ngisisingathe kanjani leso simo.", - "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!": "Ncoma ingane yakho ngokukutshela; lokho akulula ukukwenza! Khumbula, ungasebenzisa wonke amakhono owakhethe ebhokisini lakho lamathuluzi: Thatha isikhashana, sebenzisa izinyathelo ezine zokuxazulula izinkinga, futhi ufinyelele ukuze uthole ukwesekwa wena nomntwana wakho osemusha enikudingayo!", - "Get support": "Thola ukwesekwa", - "The conversation made me very uncomfortable because I was reminded of a negative experience I had.": "Ingxoxo ingenze ngangakhululeka ngoba ingikhumbuze ngento ebuhlungu eyenzeka kumina.", - "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.": "Lapho sikhunjuzwa izinto ezinjalo ezenzeka kuthina, kungokwemvelo ukucasuka noma ukuthukuthela. Kubalulekile ukuthola isikhathi lapho usuzolile sokucabanga ngokwesekwa okudingayo. Kungase kudingeke ukhulume nomunye umuntu othile.", - "One of us did not feel comfortable.": "Oyedwa kuthina ubezizwa engakhululekile.", - "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.": "Lokhu kuyinto okunzima ukukhuluma ngayo. Zitholele isikhathi sokuphumula. Siyazi ukuthi kulula kakhulu ukungakhulumi ngalezi zinto sinethemba lokuthi ngeke zenzeke kithi. Nokho ukufunda ukubhekana nenhlekelele kufana nokuthola umshwalense; KUHLALE kungcono ukucabanga ngakho nokuzilungiselela.", - "Your goal was to map risks and support systems with your teen - both in your community and online.": "Umgomo wakho bekuwukubona izingozi kanye nokuthola izindlela zokwesekwa kanye nengane yakho esebusheni bayo- emphakathini wakho naku-inthanethi.", + "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!": "Nawe uyakufanelekela ukunconywa. Siyakubonga ngokusebenzisa i-@global.parent_app. Kubonisa ukuthi uyakhathalela ngempela!", + "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!": "Ukuncoma kuyikhono elinamandla lokuba umzali.\n\nUma sincoma abantwana bethu uma benze okuthile okuhle, sizobona benza izinto ezingeziwe ezinhle!", + "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!": "Sanibonani nonke. \n\nIsihloko sethu sanamuhla sikhuluma ngokuncoma. \n\nKuyinto enhle ukuncoma abantwana bethu uma benze kahle ngoba uma senza kanjalo, bazokwenza okungeziwe okuhle esifuna ukukubona. \n\nFuthi singakhohlwa ukuzincoma nathi uma senze kahle!", + "Praise time!": "Isikhathi sokuncoma!", + "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!": "Uma ubona ingane yakho ngokulandelayo, yincome ngento eyodwa eyenza kahle!\n\nUgcine nini ukuzincoma nawe noma ukuncoma omunye umuntu omdala ekhaya lakho? Kuzame!", + "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.": "Wenze kahle ngokusebenzisa i @global.parent_app! Khumbula ukuthi yizinto ezincane ezenza umehluko omkhulu.", + "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.": "Ukuncoma kwenza umehluko omkhulu. \n\nQedela i @local.workshop_data.in_text_title ubone indlela WENA ongawuncoma ngayo umndeni wakho.", + "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!": "Siyakubonga ngokusebenzisa i-@global.parent_app ukuze uzuzise wena nomndeni wakho.\n\nZama i-@local.workshop_data.in_text_title futhi wakhe ikhono elihle lokuba umzali!", + "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.": "Sawubona @global.user_name, isifundo esisha sikulindele kusasa. Kubukeka ngathi awukakayiqedi i- @local.workshop_data.in_text_title yet. Yimfishane kakhulu (ngiyathembisa) - ungayiqedela ngisho nangenkathi ulinde ukuvuthwa kwesidlo sakusihlwa. Yingani ungavele ushone kuyo uma usunemizuzwana?\n\nSiyabonga futhi ngokusebenzisa i- @global.parent_app.", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, kuzovulwa umhlangano wokufundisana omusha. Wazame - uzowubona umehluko endleleni ingane yakho esebusheni bayo eziphatha ngayo.", + "Think about the last time someone thanked you, or said you did something great.": "Cabanga ngesikhathi lapho kukhona owakubonga, noma owathi wenze into enhle.", + "How did it make you feel?": "Wazizwa kanjani?", + "Parents usually don’t get thanked or praised enough.": "Akuvamile ukuthi abazali babongwe noma banconywe ngokwanele.", + "How does it make you feel when nobody says \"thank you\"?": "Kukwenza uzizwe kanjani uma kungekho muntu othi “ngiyabonga”?", + "Tired": "Ukhathele", + "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.": "Ingane yakho ingazizwa ngalendlela nayo. Yilokho okwenza ithuluzi lokuba umzali laleli viki libe elibalulekile kodwa elilula: Bancome ngezinto ezinhle abazenzayo.", + "How did praise make @global.w_praise_female_caregiver_name's teens feel?": "Ukunconywa kwenze -@global.w_praise_female_caregiver_name izingane zazizwa kanjani?", + "Why did she praise them?": "Kungani aye wazincoma?", + "To get them to do it more often": "Ukuze abakwenzayo bakwenze ngokwengeziwe", + "To help her finish her work": "Ukuze amsize aqedele umsebenzi wakhe", + "To make them feel good": "Ukubenza bazizwe bejabule", + "To make herself feel good": "Ukuze azizwe ejabule", + "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.": "Zonke lezi zinto ziyiqiniso! \n\nUma abantwana bakhe bejabule, @global.w_praise_female_caregiver_name uyajabula. Futhi ukwaze ukuqeda umsebenzi wakhe.", + "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:": "Ngempela ukuncoma kunamandla. \n\nAke sibone isibonelo sika @global.w_praise_female_caregiver_name nendodakazi yakhe:", + "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!": "Ngesikhathi u @global.w_praise_female_caregiver_name ematasa, amadodakazi akhe amabili avamise ukulwa. Kodwa namuhla, indodakazi yakhe endala isize udadewabo ngomsebenzi wesikole!", + "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"": "@global.w_praise_female_caregiver_name: \"Ngiyabonga ngokuthi wenze umsebenzi wakho wesikole, @global.w_praise_girl, ngiyabonga ngokuthi usize udadewenu, @global.w_praise_teen_girl. Ngiyaziqhenya kakhulu ngani!\"", + "Step 1: Share what went well and what was hard": "Isinyathelo 1: Sixoxele ngokuhambe kahle nokuthi ikuphi okube nzima", + "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"": "“Ngifunde okuningi ngompilo yomntwana wami, uma sichitha isikhathi ndawonye! Kodwa ngemva kosuku lokuqala, umntwana wami ubefuna ukudlala ngefoni yakhe kuphela.”", + "Step 2: Bring ideas!": "Isinyathelo 2: Veza amacebo!", + "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"": "“Wenze kahle ngokuzama! Mhlawumbe ungaveza ezinye izinto ezimnandi eningazenza ndawonye nengane yakho. \n\n“Yebo, noma ningenza okuthile kumakhalekhukhwini wakhe ndawonye? Noma angakubonisa ukuthi ifoni yakhe isebenza kanjani?”", + "Step 3: Pick and try one!": "Isinyathelo 3: Khetha bese uzama okukodwa!", + "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”": "“Ngiyabonga ngala macebiso amahle! Yebo, ake ngicele ingane yami ingibonise ukuthi ifoni yayo isebenza kanjani kusasa uma iphuma esikoleni. Ngicela manje omunye kini azenze ingane yami, ukuze ngikwazi ukuprakthiza ukumcela?”", + "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa:\n\n* Yini ehambe kahle futhi yini ebe yinkinga?\n* Yiziphi izixazululo eningazicabanga ndawonye?\n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho! \n\n(Noma ungayiprakthiza khona manje ukuze kube lula kamuva!)", + "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions": "* Imithelela yokuncoma\n* Indatshana kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions": "* Imithelela yokuncoma\n* Indatshana kanye nokucabanga ujule - okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Amacebiso alokho ongakwenza ekhaya", + "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!": "Xoxelanani:\n\n* Ugcine nini ukubongwa noma kuthiwe wenze kahle? \n* Kwakwenza wazizwa kanjani? \n* Uzizwa kanjani uma ungabongwa noma unconywe ngokuthile okwenzayo? \n\nNgokuvamile asibongwa noma sinconywe ngokwanele njengabazali. Mhlawumbe ungenza isibonelo esihle ngokuthi sincome abantwana bethu kuqala uma benze kahle!", + "Let's discuss this story.": "Ake sixoxe ngale ndaba.", + "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?": "Xoxani ndawonye:\n\n* Ukunconywa kwenze-@global.w_praise_female_caregiver_name izingane zizizwe kanjani?\n* Kungani eye wazincoma?", + "The same can work for you!": "Nawe kungakusebenzela lokhu!", + "@global.w_praise_female_caregiver_name praised her teens...": "@global.w_praise_female_caregiver_name uncome izingane zakhe..... ", + "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good": "* Ukuze ezikwenzayo zikwenze ngokwengeziwe\n* Ukuze amsize aqedele umsebenzi wakhe \n* Ukuze azenze zizizwe zijabule \n* Ukuze azizwe ejabule", + "SEE IT": "KUBONE", + "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.": "Bheka noma yini ingane yakho ekwenzayo ewusizo noma okuhle, bese umncomela kona. Kungenzeka ingakubonisi kona, kodwa uzobona ziphinde zikwenza lokho okuhle futhi. Kuzobaqinisekisa ukuthi uyakubona futhi uyabakhathalela.", + "SAY IT": "KUSHO", + "Be enthusiastic – really mean it when you say it!": "Yiba nentshiseko - yiba qotho kulokho okushoyo!", + "REPEAT IT": "KUPHINDE", + "Try to find something to thank them for every day. Even something really small.": "Zama ukuthola okuthile ongayibonga ngakho ingane yakho usuku nosuku. Ngisho nento encane .", + "You can also praise other adults in your household, too. Notice how they respond!": "Ungancoma nabantu abadala ekhaya lakho. Qaphela indlela abasabela ngayo!", + "Let's practice giving praise.": "Ake siphrakthize ukuncoma.", + "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?": "Khulumisanani: \n\n* Yisiphi isizathu esingakwenza uncome ingane yakho? \n* Yini othile ayenze kahle phakathi nalokhu kuqeqeshwa? Batshele! \n* Kukwenze wazizwa kanjani lapho uncoma omunye umuntu? \n* Kukwenza wazizwa kanjani lapho unconywa?", + "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:": "Ngezinye izikhathi kunzima ukucabanga ukuthi yini ongamncomela yona umntwana wakho! Nanka amanye amacebo avela kwabanye abazali:", + "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully": "* Ukuba nomusa komunye umuntu \n* Ukuhlanza igumbi lakhe \n* Ukuhlanganyela esidlweni somndeni \n* Ukubingelela amanye amalungu omndeni \n* Ukunakekela ozalwa nabo \n* Ukufika ekhaya ngesikhathi \n* Ukubonisa ukucabangela \n* Ukuthi 'ngiyacela' noma 'ngiyabonga' \n* Ukuya esikoleni \n* Ukwenza imisebenzi yasekhaya noma ukwenza umsebenzi wesikole wasekhaya \n* Ukudla ngokuthula", + "Great to hear that you are doing well. You are a wonderful parent!": "Ngiyajabula ukuzwa ukuthi kukuhambela kahle. Ungumzali omangalisayo!", + "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!": "Ngiyaxolisa ngokuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuzama ukwazi ngalokhu. Akekho umuntu onezimpendulo zayo yonke imibuzo kodwa wenza konke okusemandleni akho!", + "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!": "Ngiyaxolisa ukuzwa ukuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuthi uvuke njalo ekuseni ukuze uzame futhi, ngisho noma ukhathele. Lokhu kubonisa ukuzimisela nokuzinikela!", + "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!": "Kuleli viki, bekani umthetho owodwa nengane yakho.\n\nKhumbula ukuncoma ingane yakho ngemva kwalokho!", + "make rules with their teens": "yenza imithetho kanye nentsha yabo", + "Did you have any challenges when trying to make a rule together?": "Ingabe ube nobunzima obuthile lapho uzama ukubeka umthetho ndawonye?", + "What was difficult for you about making a rule with your teen?": "Yini ebinzima kuwe ngokubeka umthetho kanye nengane yakho esebusheni bayo?", + "My teen and I could not agree on a rule.": "Mina nengane yami esebusheni bayo asikwazanga ukuvumelana ngomthetho.", + "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Cabanga ngokuthi umthetho uyafaneleka yini. Ingabe ingane yakho esebusheni bayo iyakwazi ukuwulandela? Lapho nibeka imithetho njengomndeni, kuyasiza ukucabanga ngengane yenu, ukuthi ineminyaka emingaki nokuthi yini ebalulekile kuyo.", + "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Ingane yami esebusheni bayo ibe nomuzwa wokuthi akulungile ukuthi yona kumelwe ilandele umthetho kuyilapho mina kungadingeki ngiwulandele.", + "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Kufanele sikhumbule njalo ukuthi izingane zifunda kangcono kuthina. Lapho silandela imithetho, kuba lula ngazo ukulandela imithetho. \n\nUngawushintsha umthetho ukuze uqinisekise ukuthi wonke umuntu uyakwazi ukuwulandela, ucabangela imithwalo yakho kanye nemithwalo yengane yakho (ngokwesibonelo, imisebenzi yesikole noma eyasekhaya).", + "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ngizizwe ngingakhululekile, ngoba nginomuzwa wokuthi kufanele kube imina obeka umthetho hhayi ingane yami esebusheni bayo.", + "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Engithandana naye uzizwe engakhululekile, ngoba unomuzwa wokuthi nguye okufanele abeke umthetho hhayi osemusha.", + "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Lapho sibeka imithetho ndawonye nentsha yethu, lokho kusiza umndeni uqondane kangcono. Imithetho kuyoba elandelekayo, futhi intsha yethu iyozimisela futhi ikwazi ukulandela imithetho.", + "When we tried to set a rule, we got into an argument.": "Lapho sizama ukubeka umthetho, savele sanokukuphikisana.", + "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Ingabe ingane yahoo esebusheni bayo ibisesimweni esikahle lapho uzama ukubeka umthetho? Kungcono ukubeka imithetho lapho isimo sizolile. Uma wena noma ingane yakho ikhathele noma ilambile, kungcono ukukhuluma ngemithetho ngesinye isikhathi.", + "We were not able to stick to the rule.": "Siyahluleka ukunamathela emthethweni.", + "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Umthetho kudingeka uqonde futhi ulandeleke. Qinisekisa ukuthi lomthetho kulula ukuwulandela, njengokuba nesidlo esisodwa enisidla ndawonye njalo ngeSonto esikhundleni sokwenza lokho nsuku zonke. Ingabe kudingeka ube nomthetho ovumelana nezimo?", + "Your goal was to make ONE rule with your teen this week.": "Umgomo wakho bekuwukwenza umthetho OWODWA nengane yakho esebusheni bayo kuleli sonto.", + "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Wenze kahle kulokhu! Akulula, futhi intsha ngeke iyihloniphe imithetho ngaso sonke isikhathi, kodwa ukubeka imithetho embalwa esemqoka ndawonye kuyisiqalo esihle. Zincome ngokuzama lokhu - siyaziqhenya ngawe!", + "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!": "Imithetho yenza abantwana bethu ukuthi yini elindeleke kubo. \n\nAbantwana bayayilandela imithetho uma wenze imithetho NABO futhi ubancome ngalokho!", + "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.": "Sanibonani, nonke. \n\nIsihloko sanamuhla imithetho. \n\nImithetho ikhuthaza ukuthula ekhaya futhi ikhuthaza ukuqondana phakathi kwamalungu omndeni. \n\nImithetho ithuthukisa izibopho zelungu lomndeni ngalinye, ngakho-ke kubalulekile ukuba umndeni ube nemithetho. \n\nIkhaya elinemithetho umndeni uphila ngokuthula.", + "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?": "Bhala phansi umthetho owodwa obalulekile ongathanda ukuwubeka nengane yakho - uzokwenza lokhu njengomsebenzi wasekhaya wokuprakthiza waleli viki. \n\nBazocabangani ngawo?", + "Have you managed to set a rule together with your teen?": "Ingabe ukwazile ukubeka umthetho ndawonye nengane yakho esebusheni bayo?", + "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!": "Ngezinye izikhathi kuzwakala sengathi intsha yakho isathukuthele ngisho noma wenze konke okusemandleni akho. Khumbula ukuthi wenza umsebenzi omuhle kakhulu, nokuthi ke zizoba khona izikhathi ozijabulelayo nengane yakho esebusheni bayo!", + "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!": "Sekuseduze thole ezinye izicebiso zokuba umzali! Qedela i-@local.workshop_data.in_text_title, beka umthetho OWODWA olula nolandelekayo ninengane yakho esebusheni bayo, bese ubona ushintsho oluzo kwenzeka!", + "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ohambweni lwakho lokuba umzali. \n\nI-@local.workshop_data.in_text_title izokubonisa indlela ongabeka ngayo imithetho ngendlela ezosiza ingane yakho esebusheni bayo iyiqonde futhi iyilandele kangcono imithetho.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!": "Kusasa kukhona okusha @global.parent_app kumhlangano wokufundisana okukulindele. \n\nZama qeda i-@local.workshop_data.in_text_title ngaphambi kokuthi uqale umhlangano wokufundisana omusha. Ngeke kuthathe isikhathi eside futhi kuzosiza ingane yakho esebusheni bayo ilandele imithetho kangcono!", + "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\n\nKusasa, umhlangano wokufundisana omusha uzokusiza wazi lokho ongakwenza lapho intsha iziphatha ngendlela embi (noma enhile)!", + "They discussed the reasons behind the rule": "Baye baxoxa ngezizathu zokubeka umthetho", + "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions": "@global.w_rules_female_caregiver_1 uye wakulalela kuka-@global.w_rules_teen_boy iziphakamiso", + "The rule was clear, specific and fair": "Umthetho ubucacile, uqondile futhi ubonelela", + "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "@global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", + "That's right, making clear rules together in a calm and positive way works so well!": "Kunjalo, ukwenza imithetho ecacile ndawonye ngendlela ezolile neyakhayo kusebenza kahle!", + "She praised him": "Uye wamncoma", + "She rewarded him when he followed the rule": "Uye wamvuza uma elandela umthetho", + "Exactly - a positive response makes all the difference!": "Kunjalo - ukusabela ngendlela enhle kwenza umehluko!", + "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:": "Ake sifunde ngokwenzeke ku @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 wakhe:", + "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"": "@global.w_rules_female_caregiver_1: “Uhlale ubuya sekuhlwile ekhaya!”\n\n@global.w_rules_teen_boy: “Cha angazi, angazi nokuthi kusuke kungubani isikhathi uma sekuhlwile! Yeka ukungicasula.”", + "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?": "Yimuphi umthetho oqondile @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 abangawenza ndawonye?", + "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”": "Ake sibone ukuthi @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy yini abayenzile ngosuku olulandelayo:\n\n@global.w_rules_female_caregiver_1: “Ngiyafuna ukuthi uzijabulise, @global.w_rules_teen_boy, kodwa ngiyakhathazeka uma ungabuyi kuze kuhlwe. Uyazi ukuthi kungani?” \n\n@global.w_rules_teen_boy: “Kungenxa yokuthi ufuna ngibe nesikhathi esanele sokwenza umsebenzi wami wesikole?”", + "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”": "@global.w_rules_female_caregiver_1: “Kunjalo, okunye futhi ukuthi akuphephile ukuba ngaphandle kule ndawo uma sekuhlwile. Ucabanga ukuthi kungaba isiphi isikhathi esifanele sokubuya ekhaya?”", + "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-10 ebusuku? \n\n@global.w_rules_female_caregiver_1: “Kusuke sekusebusuku ngaleso sikhathi, kungaba njani ngo-6 ntambama? Noma esinye isikhathi esiuphakathi?”", + "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-6 ntambama phakathi nezinsuku zesikole bese kuba u-10 ebusuku ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Yebo, kuhle lokho. Kusukela manje ukuya phambili, umthetho wasekhaya uthi kumelwe ubuye ekhaya ngo-6 ntambama ngezinsuku oya ngazo esikoleni kanti ngoLwesihlanu nangoMgqibelo ubuye ngo-10pm. Kodwa kumelwe uhlale uphelezelwa umngane uma ubuya ekhaya. “Kulungile?”", + "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”": "@global.w_rules_teen_boy: “Kulungile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ngiyabonga kakhulu, @global.w_rules_teen_boy, ngokungisiza ukuba sibeke umthetho omuhle sindawonye. Kuyangijabulisa ukubona ukuthi uba nezibopho kangakanani.”", + "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”": "Ngosuku olulandelayo...\n\n@global.w_rules_female_caregiver_1: “Ngiyabonga, @global.w_rules_teen_boy, ngokufika ekhaya ngesikhathi. Uma usuqede umsebenzi wakho wesikole sizodla ukudla okuthayo esidlweni sakusihlwa.”", + "Online Safety": "Ukuphepha Ku-inthanethi", + "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!": "Imithetho ibalulekile ukugcina abantwana bethu bephephile - naku-inthanethi. Kunokwengeziwe mayelana nokuhlela okuphephile Ekuqeqeshweni Kwamasonto Onke, kodwa ake sikubuke lokhu njengamanje!", + "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, usuwenzile umsebenzi wakho wesikole?\"\n\n@global.w_rules_teen_girl: “Umzuzwana nje @global.w_rules_female_caregiver_2, ngisaqedela le @global.teen_social_medium vidiyo\"", + "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"": "@global.w_rules_female_caregiver_2: “Ave udansa kahle kakhulu! Ngitshele ukuthi kungani uthanda ukudansa\"\n\n@global.w_rules_teen_girl: “Bonke abangane bami bayadansa, @global.w_rules_female_caregiver_2. Nginabangithandayo-abangu-600 nabalandeli abangu-120.”", + "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe ngendlela odansa kahle ngayo, @global.w_rules_teen_girl. Kodwa kumelwe siqiniseka ukuba uphephile. \n\nNgiyazi ukuba abangani bakho babuka @global.teen_social_medium, kodwa nge-akhawunti evulela wonke umuntu, kunabanye abantu ababuka amavidiyo abantu abasha ukuze bazanelise ngokocansi. Ngezinye izikhathi bayaxhumana nentsha. Bazenza sengathi balungile kodwa ekugcineni bayabesabisa futhi bayihlukumeze intsha.”", + "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”": "@global.w_rules_female_caregiver_2: “Ake sihlole ku-inthanethi sobabili ukuthi singenza kanjani ukuthi ukujabulele lokhu kodwa uphephe ngesikhathi esifanayo. Bheka - ungakwazi ukwenza ukuba kube abantu abathile kuphela abakwazi ukubona i-akhawunti yakho futhi ungakwazi nokukhetha ukuthi ubani ozokulandela.\n\nNgakho, ungavumela abantu obaziyo basesikoleni nabasemphakathini, kodwa hhayi abantu obathola ku-inhanethi.\n\nIngabe singakwazi ukwenza umthetho ndawonye ungawusebenzisa @global.teen_social_medium, kodwa nge-akhawunti engavulelekile kuwonke wonke? Ngiyakwethemba ukuthi uyazi ukuthi obani ozobavumela!”", + "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe @global.w_rules_teen_girl”", + "This is just incredible. Every one of these habits is making your family stronger. Be proud.": "Kuhle kakhulu lokhu. Yonke le mikhuba yenza umndeni wakho uqine. Ziqhenye.", + "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ... \n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ... \n* Indaba kanye nokubuyekeza indaba - okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "What went well here in making a rule together?": "Yini ehambe kahle lapha ekubekeni umthetho ndawonye?", + "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?": "Ucabanga ukuthi u-@global.w_rules_teen_boy waze kanjani ukuthi u-@global.w_rules_female_caregiver_1 uyamncoma?", + "Making the rule together went well because...": "Ukubeka umthetho ndawonye kube impumelelo ngoba...", + "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule": "* Baye baxoxa ngezizathu zokubeka umthetho \n* @global.w_rules_female_caregiver_1 uye wakulalela -@global.w_rules_teen_boy isiphakamiso\n* Umthetho ubucacile, uqondile futhi ubonelela \n* @global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", + "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...": "@global.w_rules_teen_boy bekazi ukuthi @global.w_rules_female_caregiver_1 uyancoma ngoba...", + "* She praised him\n* She rewarded him when he followed the rule": "* Uye wamncoma\n* Uye wamvuza uma elandela umthetho", + "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.": "Imithetho yasekhaya isiza ukugcina izingane zethu zivikelekile, futhi yenza iqonde ukuthi yini elindeleke kuzo. Uma ubandakanya ingane yakho ekubekeni imithetho kwenza bawulandele kalula umthetho.", + "TEAM RULES": "IMITHETHO YEQEMBU", + "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.": "Hlela imithetho NDAWONYE nengane yakho. Qala ngomthetho owodwa omusha - unganezela omunye ngokuhamba kwesikhathi. Xoxisanani ngezizathu zomthetho ngemva kwalokho ulalele imibono yabo.", + "REAL RULES": "IMITHETHO YANGEMPELA", + "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.": "Yenza kube imithetho umntwana wakho angakwazi ukukwenza nokuyilandela, cacisa futhi ukhulume ngokuqondile ukuze kungabi khona ukungaqondani. Ungathi ‘ngesikhathi’ kodwa yithi “ngo-7 ntambama”.", + "PRAISE RULES!": "NCOMA UMTHETHO!", + "Praise your teen for planning a rule with you, and praise them for keeping it!": "Ncoma ingane yakho ngokuthi ibeke uthetho nawe, uphinde uyincome ngokuthi iwugcine!", + "Let's practice making rules.": "Ake sizame ukubeka imithetho.", + "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!": "* Yimuphi umthetho obalulekile eningafisa ukuwubeka nengane yakho? \n* Ucabanga ukuthi ingane yakho izocabangani ngalo mthetho? \n\nKhumbula, beka umthetho oqondile futhi ozolungela ingane!", + "Here are some of the rules other families created:": "Nayi eminye imithetho ebekwe eminye imindeni:", + "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones": "* Ingane yakho ingadlala ngaphandle ngemuva kokuqeda umsebenzi wasekhaya\n* Onke amalunga omndeni adla isidlo sakusihlwa ndawonye\n* Ingane yakho yokuqala igeza izitsha ngeSonto nangoMsombuluko, bese eyesibili izigeze ngoLwesibili nangoLwesithathu \n* Sikhulumisana ngenhlonipho nangomusa \n* Uma ulalela umculo kumelwe usebenzise ama-earphones", + "Remember that YOU matter!": "Khumbula ukuthi UBALULEKILE!", + "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!": "Usebenzile ngokuthi uqaphele ukuthi unemizwa emihle. Ngiyajabula ukuzwa ukuthi uzizwa kahle namuhla!", + "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.": "Usebenzile ngokuthi uqaphele ukuthi unemizwa enzima. Kulungile ukungazizwa kahle ngezinye izikhathi. Khumbula ukuthi awuwedwa.", + "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephile:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela uhlelo lokuphepha. \n\nInto ebaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - imvamisa izingane zethu zazi okuningi kunathi ngokuthi ikuphi lapho kuphephe khona nalapho kungaphephanga khona!", + "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!": "Uma ningakakwenzi nobabili okwamanje lokhu, yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephanga:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela loluhlelo lokuphepha. \n\nOkubaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - Kuvamile abantwana bethu bazi okuningi kunathi ngokuthi iziphi izindawo eziphephile nezingaphephile!", "map risks and support with their teens": "thola izingozi kanye nokwesekwa kanye nentsha yabo", "map risks and support with your teen": "thola izingozi kanye nokwesekwa kanye kanye nengane yakho esebusheni bayo", "My teen and I disagreed on which areas and online activities were unsafe.": "Mina nengane yamsi esebusheni bayo asivumelani ngokuthi yiziphi izindawo nezinto eziku-inthanethi ezingaphephile.", @@ -1370,7 +1054,151 @@ "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!": "Kunzima ukwazi yonke imininingwane ngemiphakathi yethu. Hilela elinye ilungu lomndeni noma umngane lapho ubeka imithetho yendawo. Ungavakashela nezinye zezinsizakalo ezikhona futhi ubuze ukuthi zenzani. Kuba ngcono lapho kukuningi esikwaziyo ukuze sigcine imindeni yethu iphephile!", "I don’t know much about technology, so I don’t know how to talk about it with my teen.": "Akukuningi engikwaziyo ngezobuchwepheshe, ngakho angazi ukuthi ngikhulume ngithini ngakho enganeni yami esebusheni bayo.", "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!": "Lokho kulungile ngokuphelele! Usengakwazi ukusekela ingane yakho esebusheni bayo. Cela ingane yakho ukuthi ichaze amagajethi ewasebenzisayo - ungakwenza lokhu ngesikhathi esisodwa. Leli yithuba elihle lokubonisa intshisekelo empilweni yengane yakho kanye nokuxoxa ngezingozi ezingase zibe khona ndawonye. Uma ungenaso isiqiniseko sokuthi yimiphi imithetho okufanele uyibeke, ungavumelana ngaso sonke isikhathi, nengane yakho, ukuthi nizame umthetho omusha amasonto amabili bese nixoxa ngokuthi izinto zihamba kanjani futhi nishintshe umthetho uma kudingeka!", - "Your goal was to try and resolve a problem or conflict together with your teen.": "Umgomo wakho bekuwukuzama ukuxazulula inkinga noma ukungqubuzana ndawonye nengane yakho esebusheni bayo.", + "Your goal was to map risks and support systems with your teen - both in your community and online.": "Umgomo wakho bekuwukubona izingozi kanye nokuthola izindlela zokwesekwa kanye nengane yakho esebusheni bayo- emphakathini wakho naku-inthanethi.", + "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!": "Abantwana bethu bangachitha isikhathi esiningi ngaphandle kwasekhaya noma iku-inthanethi, lapho kunzima khona ngathi ukuba sibagcine bephephile. \n\nUkuxoxisana ngezindawo eziphephile nezindawo ezingaphephanga, nokuthi singazigwema kanjani izinkinga, kuyasiza ngempela!", + "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuphepha kwabantwana. \n\nKuwumthwalo wethu njengabazali ukuthi siqiniseka ukuthi abantwana bethu baphephile ngaso sonke isikhathi. Kudingeka siqiniseke ukuthi abantwana bethu baphephile emphakathini esihlala kuyo. Kuwumthwalo wethu ukuba sibenze baqaphele izindawo eziphephile nezingaphephanga emphakathini. \n\nKubuye kube umthwalo wethu wemfanelo ukuqinisekisa ukuthi bayabuqonda ubungozi abangazithola bekuzo ngokuba ku-inthanethi. Ngaleyo ndlela abantwana bethu bazokwazi ukwenza izinqumo ezinhle futhi bazigcine bephephile.", + "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Xoxani ndawonye:\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", + "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha. \n\nNgezansi ezinye izindawo ezingaba usizo", + "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ngezinye izikhathi zingazithola sisenkingeni.\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", + "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncoma ingane yakho ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukuthi awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", + "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Qaphela ukuthi bawasebenzisa kahle la mawebusayithi! \n* Cabanga ngokuthi yimaphi okungenzeka awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", + "To keep our teens safe, we need to understand the dangerous situations they could get into!": "Ukuze sigcine abantwana bethu bephephile, kumelwe siqonde izimo eziyingozi abangangena kuzo!", + "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!": "Ngaso sonke isikhathi uma nihlela noma nigcina uhlelo lokuphepha, chofoza u-@global.parent_point bese nibungaza impumelelo yenu!", + "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!": "Ake senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga: \n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esiwasebenzisa ku-inthanethi \n\nUzokwenza okufanayo nomntwana wakho njengomsebenzi wasekhaya waleli viki - uma umntwana wakho ekhona njengamanje lapha, ningakwenza ndawonye lokhu njengamanje!", + "My family can join in now!": "Umndeni wami ungahlanganyela njengamanje!", + "Let me try it out by myself": "Ake ngizizamele ngokwami", + "Safety Plan": "Uhlelo Lokuphepha", + "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.": "Ukuze sigcine abantwana bethu bephephile, kumele siqonde izimo eziyingozi abangangena kuzo!\n\nAke senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga:\n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esingawasebenzisa ku-inthanethi\n\nAke senze la mabalazwe siyiqembu njengamanje. \n\nUzokwenza okufanayo nengane yakho njengomsebenzi wasekhaya waleli viki.", + "Step 1: What are important places in your community?": "Isinyathelo 1: Yiziphi izindawo ezibalulekile emphakathini wakho?", + "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba ibalazwe lomphakathi wengane yakho, libe nezithombe zazo zonke izindawo eziyinhloko njengemigwaqo, indlu yakho, isikole, izitolo, izindawo ezivakashelwa ingane yakho.", + "Step 2: Which places are safe and unsafe?": "Isinyathelo 2: Yiziphi izindawo eziphephile nezingaphephanga?", + "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?": "Xoxani ndawonye:\n\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho\n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile ezinganeni zakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nomntwana wakho eningayenza ukuze nigcine umntwana wakho ephephile?", + "Step 3: Where can you get support?": "Isinyathelo 3: Kukuphi lapho ungathola khona ukusekelwa?", + "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n \n* Ningaluthola kuphi usizo nokwesekwa uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", + "Step 4: What are risky places online and how can you make them safer?": "Isinyathelo 4: Yiziphi izindawo eziyingozi ku-inthanethi futhi ungenza kanjani ukuthi ziphephe?", + "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncomanani ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukube awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo kuphephe?", + "Have you talked with your teen about safety measures?": "Ingabe usukhulumile nengane yakho ngezindlela zokuphepha?", + "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!": "Lesi bekuyisikhathi esinzima kakhulu sokuba umzali. Kumelwe uziqhenye ngakho konke okwenzile. \n\nCabanga ngazo zonke izikhathi owenze ngazo ingane yakho esebusheni bayo yamamatheka kanye nakho konke ukunakekela oyinike khona. Abazali bayamangalisa, nawe uyamangalisa!", + "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!": "Ukuze ugcine ingane yahoo esebusheni bayo iphephile, kuyasiza ukuxoxa ndawonye ngomphakathi wenu kanye nalokho okutholakala kwi-inthanethi. \n\nQedela i-@local.workshop_data.in_text_title ubone indlela ongakwenza ngayo lokhu!", + "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.": "Usuzuze amakhono amaningi okukhulisa izingane kula masonto adlule!\n\nQedela loumhlangano wokufundisana elandelayo ukuze uthole elinye ikhono eliwusizo.", + "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Ukwenza icebo ndawonye nengane yakho esebusheni bayo kuvimbela izinkinga eziningi – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokusebenzisa i-@global.parent_app ukuze usekele umndeni wakho.", + "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!": "Siyakuhalalisela, uyiqedile i-@local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kukulindile ukuze kusize wena nomndeni wakho nibhekane nanoma yisiphi isimo – ndawonye kuningi eningakwenza!", + "Let's think about what happened to @global.w_safe_teen_girl_1:": "Ake sicabange ngokwenzeke ku @global.w_safe_teen_girl_1:", + "What was risky about that situation?": "Yini ebe yingozi ngalesi simo?", + "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts": "Indoda ebisemotweni ibifaka ingcindezi @global.w_safe_teen_girl_1 ngezipho", + "@global.w_safe_teen_girl_1's friend was encouraging her": "Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ", + "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things": "Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto", + "Many girls in our communities get pregnant or catch HIV from older men": "Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala", + "There were no other trusted adults to advise @global.w_safe_teen_girl_1": "Bekungekho umuntu omdala othembekile obenganikeza u-@global.w_safe_teen_girl_1 iseluleko", + "All those things are true!": "Zonke lezi zinto ziyiqiniso!", + "Let's think about our teens' online safety.": "Ake sicabange ngokuphepha kwezingane zethu ku-inthanethi.", + "What is the biggest online risk for teens these days?": "Iyiphi ingozi enkulu yabantu abasha ku-inthanethi kulezi zinsuku?", + "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things": "Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili", + "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country": "Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe", + "People put things online to persuade teenagers to hurt themselves or commit suicide": "Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale", + "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them": "Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise", + "People can often be nasty to teenagers online – they feel like they can bully people safely": "Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", + "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:": "Ukukhulumisana kuyinto ebaluleke kakhulu!\n\nAke sibone ukuthi yini eyenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1 wakhe:", + "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"": "@global.w_safe_teen_girl_1: “Kunokuthile okwenzeke ngesikhathi ngiphume nabangane bami @global.w_safe_teen_girl_2 no @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: “Ngitshele, @global.w_safe_teen_girl_1\"", + "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”": "Indoda esemotweni: “Ntokazi enhle. Sekuyisikhathi eside ngilokhu ngikubuka. Umuhle kakhulu, ungubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe u-@global.w_safe_teen_girl_1”", + "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”": "Indoda esemotweni: @global.w_safe_teen_girl_1, ungathanda yini ukuhamba nami siyofuna okuphuzwayo namashibusi? Ngiyakucela, ngena, uzobuya ngesikhathi, ngiyakuthembisa...” \n\n@global.w_safe_teen_girl_1: “Anginaso isiqiniseko sokuthi umbono omuhle lowo...”", + "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”": "@global.w_safe_teen_girl_2: “Unenhlanhla, mngane wami. Ngifisa sengathi indoda ingacela ukukhipha MINA ingithengele izipho. Ngiyakutshela, uma ungakwenzi lokhu ngizotshela wonke umuntu ukuthi uyisilima!”", + "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 ungahambi! Qaphela! Asihambe siye ekhaya. Kuyingozi ukuhamba nabantu ongabazi. Ngaphandle kwalokho, mdala kunawe futhi akwenzayo akulungile.”\n\n@global.w_safe_teen_girl_1: “Eqinisweni angazi....”", + "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"": "@global.w_safe_female_caregiver: “Mhh, ngiyaziqhenya ngawe ngokuthi awuyigibelanga le moto. Bekuyisimo esiyingozi lesi, ngiyabonga ngokuthi ungitshele!”", + "Let's look at another example of a dangerous situation together.": "Ake sibheke esinye isibonelo sesimo esiyingozi ndawonye.", + "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"": "@global.w_safe_teen_girl_1: “Umngane wami ubelokhu ekhuluma nomunye umfana olingana nathi ku-inthanethi... Uzomthumelela izithombe zakhe. Ingabe lokhu kungcono ngoba ulingana nathi?”", + "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"": "@global.w_safe_female_caregiver: “Uwungane omuhle ngoba ukhathazekile ngaye. Ukuthumela izithombe zakhe zobulili nakho kuyingozi.”", + "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"": "@global.w_safe_female_caregiver: “Ngezinye izikhathi abantu abasho lokho abayikho ngempela ku-inthanethi - angase athi ulingana nani uthole ukuthi uyindoda eneminyaka engu- 50. Noma uma behlukana, angathumela lezo zithombe kuwo wonke umuntu lokho kungenza umngane wakho azizwe kabi.”", + "Doing any of these makes you a great parent.": "Ukwenza okunye kulezi zinto kubonisa ukuthi ungumzali ovelele.", + "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions": "* Indaba kanye nokubuyekeza - okusebenzile!\n* Indaba kanye nokubuyekeza - okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", + "Let's talk about what happened to @global.w_safe_teen_girl_1": "Ake sikhulume ngokwenzeke ku-@global.w_safe_teen_girl_1", + "Discuss together: \n\nWhat was risky about that situation?": "Xoxani ndawonye: \n\nYini ebiyingozi ngalesi simo?", + "The situation was risky because...": "Lesi simo besiyingozi ngoba...", + "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1": "* Indoda ebisemotweni ibiphoqa @global.w_safe_teen_girl_1 ngezipho \n* Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ukuthi ahambe \n* Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto \n* Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala \n* Bekangekho omunye umuntu omdala onganikeza u-@global.w_safe_teen_girl_1 iseluleko", + "Let's talk about our teens' online safety.": "Ake sikhulume ngokuphepha kwezingane zethu ku-inthanethi.", + "What are some of the online risks for teens these days?": "Yiziphi ezinye izingozi izingane zethu ezingabhekana nazo ku-inthanethi kulezi zinsuku?", + "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely": "* Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili \n* Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe\n* Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale\n* Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise\n* Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", + "MAPS": "AMABALAZWE", + "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.": "Yenza AMABALAZWE nomntwana wakho ngezindawo eziphephile nezindawo ezingaphephanga emphakathini wakho naku-inthanethi. Xoxa naye ngokuthi ingayigcina kanjani imininingwane, izithombe namavidiyo akhe efihlekile ku-inthanethi. Xoxa nayo ngokuthi kwenzeka kanjani ukuthi uma okuthile kufakwa ku-inthanethi kuzohlala lapho unomphela. Kungenzeka iyasazi isibonelo salokho ngabangane bayo.", + "Safety Plan Activity": "Umsebenzi Wehlelo Lokuphepha", + "RULES": "IMITHETHO", + "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.": "Beka IMITHETHO nentsha yakho mayelana nokuphepha uma isebenzisa ama-app namawebhuyasithi ewathandayo. \n\nKhumbula indaba Yokuphepha ku-Inthanethi? Sibone futhi lapha.", + "Online Safety Story": "Indaba Yokuphepha Ku-inthanethi", + "AMNESTY": "USHWELE", + "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.": "Yenzani isivumelwano sikaSHWELE. Uma kwenzeka okuthile okubathukuthelisayo, okubenza bazizwe bangakhululekile noma bethuke, bangakhuluma nawe ngakho futhi angeke ucasuke noma ubajezise, ngisho noma kuthiwa bebenza okuthile okungalungile.\n\nKhumbula udaba Lokuphepha Kukashwele? Lubone futhi lapha.", + "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!": "Ukuba umzali kwezobuchwepheshe kuyafana nokuba umzali ekuphileni okujwayelekile. Uthathe ISINYATHELO esikhulu sokugcina umntwana wakho ephephile emphakathini KANYE naku-inthanethi. Kuhle lokho!", + "Resources to help in the community": "Izinsiza zokusiza emphakathini", + "Online Safety Resources": "Izinsiza Zokuphepha Ku-inthanethi", + "Being a great parent also means taking time to care for yourself every day.": "Ukuba umzali ophumeleleyo kusho ukuzibekela isikhathi sokuzinakekela nsuku zonke.", + "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kuhle. Kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", + "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.": "Kunzima ukuba umzali. Kodwa kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", + "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nSizokwenza eminye futhi imisebenzi yokuzinakekela uma uhlangana neqembu lakho okokuqala - nonke nifanelwe ukuzinakekela okwengeziwe!", + "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!": "Noma nini lapho ungakwazi, phumula, bona bese uyazivuza. \n\nZinakekele nsuku zonke. Ubalulekile!", + "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!": "Ngaso sonke isikhathi uma uphumula, bona okuthile okwenze kahle noma uzivuze, chofa i-@global.parent_points ukuze ujabulele impumelelo yakho!", + "Why @data.workshop.w_self_care.short_title?": "Kungani @data.workshop.w_self_care.short_title?", + "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.": "Kuvamile ukuthi singazinakekeli ngokwanele. Kodwa kubalulekile ukuzinakekela, ikakhulu njengabazali! \n\nUkuhlisa ingcindezi nokuzitotosa kusiza thina KANYE nabantwana bethu.", + "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuzinakekela. \n\nKunezikhathi lapho sibhekana nezikhathi ezinzima, lapho sibhekana khona nezinkinga singazi ukuthi kumelwe senzeni. Kubalulekile ukuzinakekela ukufunda izindlela zokuthi sihlale sehlise umoya uma kwenzeka kuvela inkinga, inselelo noma isimo esithile. \n\nUma sehlise umoya sisuke sisesimweni esihle sokucabanga kahle nokuza nesixazululo esihle sokubhekana nanoma iyiphi inkinga.", + "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!": "Khumbula - leli sonto limayelana NAWE! Sithemba ukuthi uziphethe kahle. Kukufanele lokhu!", + "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!": "Qala umhlangano wokufundisana @global.parent_app omusha kusasa. Uzobona imiphumela emihle!", + "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!": "Ingabe usubatshelile obambisene nabo @global.parent_app nge-app? Kusukela kusasa, ningaqala nenze umhlangano wokufundisana @global.parent_app wenu ndawonye!", + "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.": "Ukunaka esikwenzayo kuzosisiza sigxile ezintweni ezakhayo. \n\nAke sithathe umzuzwana sizincome. Sizonibonisa ukuthi ningakwenza kanjani lokhu.", + "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Cabanga ngento eyodwa OYENZE kahle muva nje.\n\nTshela abanye: “Ngiyazincoma...”\n\nNakhu okukodwa ofanele ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", + "Recognise": "Qaphela", + "Take a moment to praise yourself. \n\nWe will now show you how.": "Thatha umzuzwana uzincome. \n\nNjengamanje sizokubonisa ukuthi ungakwenza kanjani.", + "Think of one thing YOU have done well recently.": "Cabanga ngento eyodwa OYENZE kahle muva nje.", + "\"Well done to me for...\"": "“Ngiyazincoma ngoku...”", + "Showing love to my children": "Ngokubonisa izingane zami uthando", + "Getting up even though I felt tired": "Ngokuvuka ngisho noma bengi zizwa ngikhathele", + "Smiling at someone": "Ngokumamatheka", + "Making food to stay strong": "Ngokwenza ukudla ukuze sihlale sinamandla", + "Spending time with my children": "Ngokuchitha isikhathi nezingane zami", + "Helping my children with schoolwork": "Ngokusiza izingane zami ngomsebenzi wazo wesikole", + "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!": "Kusho ngezwi elizwakalayo uma ungakwazi.\n\nNakhu okukodwa okufanelekayo ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", + "Things to praise yourself for:": "Izinto ongazincoma ngazo:", + "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork": "* Ngokubonisa izingane zakho uthando \n* Ngokuvuka ngisho noma uzizwa ukhathele \n* Ngokumamatheka uma ubona umuntu \n* Ngokwenza ukudla ukuze nihlale ninamandla \n* Ngokuchitha isikhathi nezingane zakho \n* Ngokusiza izingane zakho ngomsebenzi wazo wesikole", + "Let's try it out and do a short relaxation activity together!": "Ake sikuzame futhi senze umsebenzi omfushane wokuphumula ndawonye!", + "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.": "Njengabazali, ngokuvamile asinaso isikhathi sokuzinakekela - kodwa lokhu kubalulekile! Ukwehlisa ingcindezi kuthina kusiza thina KANYE nabantwana bethu. \n\nAke sithathe isinyathelo sokuqala bese senza umsebenzi omfushane wokuphumula ndawonye.", + "Well done! Try to do this every day.": "Wenze kahle! Zama ukukwenza lokhu nsuku zonke.", + "Have a hot drink": "Thola isiphuzo esishisayo", + "Call a friend or relative": "Shayela ucingo umngane noma isihlobo", + "Have a relaxing bath": "Thatha isikhathi sakho ugeze", + "Read": "Funda", + "Watch TV": "Buka i-TV", + "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali. Khulumisanani:\n\nYiziphi izinto ezincane ezikujabulisayo?", + "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke.\n\nUngawasebenzisa ekhaya la makhono futhi uwathole noma nini ku @global.parent_centre yakho!", + "Reward": "Umvuzo", + "We all deserve to treat ourselves well!": "Sonke siyakufanelekela ukuzitotosa!", + "What small thing makes you happy?": "Iyiphi into encane ekujabulisayo?", + "Nice! Taking care of yourself is an important parenting skill!": "Kuhle! Ukuzinakekela kuyikhono elibalulekile lokuba umzali!", + "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_1 noma ngabe yini oyijabulelayo.", + "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_2 noma ngabe yini oyijabulelayo.", + "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_3 noma ngabe yini oyijabulelayo.", + "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_4 noma ngabe yini oyijabulelayo.", + "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_5 noma ngabe yini oyijabulelayo.", + "Things you can do to reward yourself:": "Izinto ongazenza ukuba uzivuze:", + "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV": "* Thola isiphuzo esishisayo \n* Shayela ucingo umngane noma isihlobo \n* Thatha isikhathi sakho ugeze \n* Funda \n* Bukela i-TV", + "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.": "Namuhla sizokwenza imisebenzi engu-3 ezosisiza sizinakekele, futhi sizokubuza\nimibuzo embalwa ukuze siqiniseka ukuthi le-app ikulungele.", + "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions": "* Umsebenzi wokuphumula\n* Umsebenzi wokuqaphela\n* Umsebenzi wokuvuza\n* Amathuluzi: Indlela yokunezela ukuzinakekela\n* Hlela i-app ngendlela oyithandayo\n* Amacebiso alokho ongakwenza ekhaya", + "Customise your @global.parent_app": "Hlela i-@global.parent_app ngendlela oyithandayo", + "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.": "Manje njengoba sewakhe amakhono okuzinakekela, ake siqiniseke ukuthi @global.weekly_workshops ikulungele ngempela yini", + "You seem to have completed the customisation process already. You can now skip this activity.": "Kubonakala sengathi usuqedile kakade ukuhlela. Ungaweqa manje lo msebenzi.", + "RELAX": "PHUMULA", + "Do a 30 second quick relaxation activity.": "Yenza umsebenzi wokuziphumuza osheshayo imizuzwana engu-30.", + "Relax activity": "Umsebenzi wokuphumula", + "RECOGNISE": "BONA", + "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"": "Thatha isikhashana ucabange ngento eyodwa OYENZE kahle muva nje! Ngezwi elizwakalayo uma kungenzeka ithi “ngenze kahle u ...” ", + "Recognise activity": "Umsebenzi wokubona", + "REWARD": "UMVUZO", + "Remember you deserve your quality time too! What makes you happy?": "Khumbula ukuthi nawe udinga ukuba nesikhathi sakho! Yini ekwenza ujabule?", + "Reward activity": "Umsebenzi wokuvuza", + "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs": "Siyakwamukela! Siyajabula ukuba nawe lapha. Leli sonto limayelana NAWE. \n\nKulokhu kuqeqeshwa kokukwamukela: \n* Uzothola amathuluzi okuzinakekela \n* Uhlele ne-app ngokwezidingo zakho", + "Wonderful, I am so happy things are going well.": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle.", + "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!": "Uxolo ngokuthi isimo sinzima njengamanje. Kuvamile ukubhekana nobunzima ngezinye izikhathi. Khumbula ukuthi awuwedwa!", + "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!": "Fundisa intsha yakho izinyathelo ezine zokuxazulula inkinga:\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE \n\nSebenzisani lezi zinyathelo ndawonye uma kuqubuka inkinga!\n\nUma kwenzeka okuthile okubi, ngokuvamile siphatheka kabi bese siyagxeka. Kodwa okudingwa abantwana bethu umuntu ongasiza kutholakale izixazululo ndawonye. Balalele, yamukela indlela ababona nabazizwa ngayo, futhi ubabonge ngokukuthemba.\n\nUkufundisa ingane yakho indlela yokuxazulula izinkinga kuzomsiza impilo yakhe yonke. Isipho esihle kangaka!", + "Some problems other parents solved with their teens:": "Ezinye izinkinga abanye abazali abazixazulula nabantwana babo:", + "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs": "* Ingane yami ayifuni ukuya esikoleni\n* Ngikhathazeke ngokuthi ingane yami ingakhulelwa noma ikhulelise \n* Ngikhathazwa yilokho ingane yami ekwenza ku-inthanethi \n* Ingane yami ichitha isikhathi nabangane ababi \n* Ingane yami iyavilapha \n* Ingane yami ayiwenzi umsebenzi wesikole \n* Kungenzeka ingane yami isebenzisa izidakamizwa", "resolve problems with their teens": "ukuxazulula izinkinga nentsha yabo", "resolve the problem with your teen": "xazulula inkinga nengane yakho esebusheni bayo", "I forgot the steps of problem solving.": "Ngizikhohliwe izinyathelo zokuxazulula inkinga.", @@ -1384,11 +1212,74 @@ "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.": "Ngesinye iskathi lapho kuvela inkinga sonke siyathukuthela noma sicindezeleke. Khumbula, lapho uzizwa uthukuthele noma ucindezelekile, ungathatha ikhefu ukuze likusize uhlale uzolile bese uxazulula inkinga obhekene nayo.", "My teen got angry and did not want to talk about the problem.": "Ingane yami esebusheni bayo iye yathukuthela futhi yenqaba ukukhuluma ngenkinga.", "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.": "Kungenzeka ingane yakho esebusheni bayo isakhungathekile kakhulu ukuba ibhekane nenkinga ngokushesha. Qaphela futhi uyazi ngegama imizwa yengane yakho, bese wenza isikhathi kamuva osukwini noma phakathi nesonto ukuze nixoxe futhi nixazulule inkinga ndawonye. Ngokunika ingane yakho isikhathi, inkinga ingaxazululwa kahle.", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!": "Kuleli sonto, umgomo wakho bekuwukwenza lokhu: Noma nini lapho uzizwa ucindezelekile noma ucasukile, donsa umoya izikhathi ezinhlanu bese uyawudedela ngaphambi kokuba uthathe isinyathelo. Uchofoze okuthi @data.habit.breathe.in_text_title - wenze kahle!", - "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Kuleli sonto, umgomo wakho bekuwukuthi: Noma nini lapho uzizwa ucindezelekile noma uphatheke kabi, phefumula kahlanu ngaphakathi nangaphandle ngaphambi kokuba usabele.", - "How did this work out?": "Lokhu kusebenze kanjani?", - "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Umgomo wakho bekuwukuba ukhulume nengane yakho esebusheni bayo mayelana nendlela nobabili enizizwe ngayo esimweni esinicindezelayo.", - "How did this go?": "Kuhambe kanjani?", + "Your goal was to try and resolve a problem or conflict together with your teen.": "Umgomo wakho bekuwukuzama ukuxazulula inkinga noma ukungqubuzana ndawonye nengane yakho esebusheni bayo.", + "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!": "Yonke imindeni iyabhekana nezinkinga, kodwa uma sisebenzisana singakwazi ukubhekana nezinkinga ngendlela ephumelelayo nenokuthula. \n\nLeli ikhono elihle ukuthi ingane yakho ingalifunda!", + "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuxazulula inkinga. \n\nSonke siyazi ukuthi empilweni kunezikhathi lapho sibhekana khona nezinkinga, futhi sonke siyazi ukuthi uma sizithola sikulezi zimo, kuba nzima ukucabanga ngokushesha ngezixazululo ezinhle. \n\nNgakho-ke kubalulekile ukuthi uma sibhekane nezinkinga sime kancane, siphefumule, sizole bese sicabanga ngamakhono okuxazulula izinkinga esingawasebenzisa. \n\nKhumbula ukubandakanya izingane zethu uma sixazulula izinkinga. Lokhu kuzobasiza bazimele futhi bafunde ukuxazulula izinkinga zabo esikhathini esizayo.", + "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.": "Ake sibuyele ku@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe bese sibona ukuthi iziphi izixazululo abaqhamuke nazo.", + "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.": "@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 uze nezixazululo ezintathu.", + "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!": "Ukukhulisa abantwana kunzima ngempela. \n\nNgokuvamile azikho izixazulula ezilula, kodwa manje @global.w_solve_female_caregiver_1 ufunde ukuthi angakwazi ukukhuluma nendodakazi yakhe ngalezi zinto. \n\nNgaphambili, ubekhathazeka yedwa, njengamanje beza nezixazululo bobabili!", + "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!": "Ingabe usuzizamile izinyathelo ezine zokuxazulula inkinga nengane yakho esebusheni bayo? \n\nYAZI, YIXAZULULA, YIZAME, IYIHLOLE!", + "Your commitment is an inspiration to everyone. Keep calm and carry on!": "Ukuzibophezela kwakho kuyisikhuthazo kuwo wonke umuntu. Qhubeka uzolile bese uyaqhubeka!", + "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!": "Usendleleni efanele yokuqala ukuxazulula izinkinga ndawonye nengane yakho esebusheni bayo! \n\nQedela i-@local.workshop_data.in_text_title bese uthola elinye ikhono elibalulekile lokuba umzali!", + "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.": "Nentsha, futhi ekuphileni, kuvela izinkinga ezingalindelekile futhi kufanele sibhekane nazo.\n\nQala umhlangano wokufundisana olandelayo ngokufunda indlela yokubhekana ngokuphumelelayo nalezi zinkinga.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!": "Kusasa kukhona omusha @global.parent_app umhlangano wokufundisana okulindele. \n\nZama ukuqeda i-@local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ukwazi indlela yokuxazulula izinkinga ndawonye kuzosiza ezimweni eziningi!", + "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, \numhlangano wokufundisana omusha uzovulwa ukuze ukusize ugcine ingane yakho esebusheni bayo iphephile.", + "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!": "Ake sibheke okwenzeke ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 ngesikhathi @global.w_solve_teen_girl athole ucingo okuvela kumfana.... ucingo!", + "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyithole kuphi leyo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 uyitholele mina. Umakhalekhukhwini omuhle, @global.w_solve_female_caregiver_1 . Ithatha izithombe ezinhle!”", + "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”": "@global.w_solve_female_caregiver_1: “Angifuni ukuyibona leyo nto ebizayo! Lo mfana akalungile! Ucabanga ukuthi uzomkhokhela ngani ngalokhu?!”\n\n@global.w_solve_teen_girl: “Akuyona indlela okusebenza ngayo lokho, @global.w_solve_female_caregiver_1! Akubona ubulungiswa lobo!”", + "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”": "@global.w_solve_female_caregiver_1: “Angifuni ukukuzwa lokho!” \n\n@global.w_solve_teen_girl: “Awuzami ngisho nokungilalela! Angazi nokuthi kungani ngikuzama nawe!”", + "Let’s see how problem solving works in practice.": "Ake sibone ukuthi ukuxazulula inkinga kusebenza kanjani ngokuprakthiza.", + "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"": "@global.w_solve_female_caregiver_2 ubuya ekhaya evela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Awu izinyawo zami bandla! Ngidinga ukuhlala phansi isikhashana ngiphuze ikhofi ngaphambi kokuthi ngilungisele wonke umuntu ukudla.”", + "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani? Lesi sinkwa sizodliwa kusihlwa! Manje angeke sisasenela sonke!”", + "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”": "@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2, bengilambile. Ngingachaza, uyabona, kunalo mfana esikoleni....” \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Thatha Ikhefu... phefumula...”", + "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ngiphe umzuzwana. Ngikhathele futhi manje sengikhathazekile ngokuthi ukudla kwakusihlwa angeke kusenele.” \n\n@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2\"", + "Step 1: KNOW IT": "Isinyathelo 1: YAZI", + "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"": "@global.w_solve_female_caregiver_2: “Ake ungitshele, kungani ulambe kangaka? Ingabe awuwudlanga umphako wakho esikolweni?” \n\n@global.w_solve_teen_boy_2: “Ileyo inkinga. Kukhona umfana esikoleni ongiqhwagayo. Uthi uma ngingamniki umphako wami nsuku zonke, yena nabangane bakhe bazongilimaza. Uyangicasula!”", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ukuzwa lokho kodwa ngiyajabula ngokuthi ungitshele, @global.w_solve_teen_boy_2. Akusho ukuthi kumelwe udle ukudla kwawo wonke umuntu kwakusihlwa. Uma siqeda ukukhuluma, kumelwe uye esitolo uyothenga esinye isinkwa. Kodwa okokuqala: Ucabanga ukuthi kumelwe senzeni ngale nkinga yobuqhwagwa?”\n\n@global.w_solve_teen_boy_2: “Empeleni.... Ngifuna ukumshaya nje kwaphela noma ngiziphindiselele.”", + "Step 2: SOLVE IT": "Isinyathelo 2: IXAZULULE", + "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"": "@global.w_solve_female_caregiver_2: “Hmmm... ucabanga ukuthi kuzokwenzakalani kuwe uma wenza kanjalo?”\n\n@global.w_solve_teen_boy_2: “Angazi. Mkhulu kakhulu kunami kungenzeka angilimaze kakhulu. Futhi kungenzeka ngingene enkingeni esikoleni bese ngixoshwa.”", + "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"": "@global.w_solve_female_caregiver_2: “Kunjalo, lokho kungenzeka. Yini esingayenza esikhundleni salokho?”\n\n@global.w_solve_teen_boy_2: “Ngicabanga ukuthi ngingatshela uthisha. Kodwa ezinye izingane zizongibiza ngesiyoyoyo. Mhlawumbe ungakhuluma nothisha?”", + "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Kuzwakala kuyicebo elihle lelo. Ngingabuye ngikhulume nabazali bakhe uma ufuna ngenze kanjalo.”\n\n@global.w_solve_teen_boy_2: “Kulungile. Uma ucabanga ukuthi nalokho futhi kuzosiza. Ngiyabonga, @global.w_solve_female_caregiver_2\"", + "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"": "@global.w_solve_female_caregiver_2: “Ngingakwenzela noma ngabe yini, sthandwa sami. Ngizokwenza kanjalo into yokuqala ngemva kwedina. Futhi, uyazi? Uma lokho kungasebenzi, singabuye sizame okunye sobabili.”\n\n@global.w_solve_teen_boy_2: Ngiyabonga, @global.w_solve_female_caregiver_2\"", + "Step 3: TRY IT": "Isinyathelo 3: KUZAME", + "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"": "Ngemva kwesonto.... \n\n@global.w_solve_female_caregiver_2: “Zihamba kanjani izinto esikoleni njengamanje?”\n\n@global.w_solve_teen_boy_2: “Kuba ngcono, loya mfana akasangithatheli ukudla kwami. Kodwa usaqhubeka nokungiphatha ngonya.”", + "Step 4: TEST IT": "Isinyathelo 4: IHLOLE", + "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ngokuzwa lokho, @global.w_solve_teen_boy_2. Ngingakhuluma yini nomalume wakho ahambe ayokhuluma nabazali bakhe? Uma kungasebenzi lokho, sizozama okunye!”\n\n@global.w_solve_teen_boy_2: “Yebo, ngiyabonga @global.w_solve_female_caregiver_2. Okungenani ngiyazi ukuthi usohlangothini lwami.”", + "Close your eyes, breathe in, and know that everything you have done is so important.": "Vala amehlo, phefumula, wazi ukuthi konke okwenzile kubalulekile.", + "Ground @global.w_solve_teen_girl for a month": "Jezisa @global.w_solve_teen_girl inyanga", + "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”": "@global.w_solve_female_caregiver_1: “Angeke uphume ngenyanga ezayo”", + "That didn’t work... Let's try something else.": "Lokhu akusebenzanga... Ake sizama okunye.", + "Return the phone and save up": "Buyisela ifoni wonge imali", + "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"": "@global.w_solve_female_caregiver_1: “Angizami ukusola umngane wakho noma ukuba nomona. Ngikhathazwa ukuthi uma umuntu ekupha isipho kunzima ukuthi ‘cha’ uma becela ukuthi ubenzela okuthile njengembuyiselo - njengokuya nawe ocansini. Uma ufuna ukuba nefoni, sizokonga imali sobabili ukuze uzokwazi ukwenza isinqumo sakho ngaphandle kokumkweleta okuthile.”", + "This is great! Try the third option as well.": "Kuhle lokhu! Zama indlela yesithathu futhi.", + "Learn about safe sex": "Funda ngocansi oluphephile", + "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”": "@global.w_solve_female_caregiver_1: “Lokhu kungenza ukuba ngibone ukuthi kumelwe sikhulume ngamasoka nokuzivikela. Intsha eningi elingana nawe iyakhulelwa noma ingenwe yi-HIV. Ake siye emtholampilo ukuze ukhulume nomhlengikazi akwazise ukuthi ungahlala kanjani uphephile.”", + "This is great!": "Kuhle lokhu!", + "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions": "* Indaba kanye nokuhlaziya indaba - okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nokuhlaziya indaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Xoxani ndawonye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", + "Remember @global.w_solve_teen_girl and the phone she got from the boy?": "Khumbula @global.w_solve_teen_girl kanye nefoni ayithole kumfana?", + "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", + "Take a few deep breaths to calm down, and": "Phefumula izikhathi ezimbalwa ukuze uzole, bese", + "KNOW IT": "YAZI", + "Identify the problem.": "Ibone inkinga.", + "SOLVE IT": "IXAZULULE", + "Think of possible solutions and what would happen if we used them.": "Cabanga ngezixazululo ezikhona nokuthi kungenzekani uma sizisebenzisa.", + "TRY IT": "KUZAME", + "Choose a solution and try it out.": "Khetha isixazululo bese uyasizama.", + "TEST IT": "SIHLOLE", + "Did it work? Great! If it did not work, then try another solution.": "Ingabe sisebenzile? Kuhle! Uma singasebenzanga, zama esinye isixazululo.", + "Let's practice problem-solving!": "Ake sizame ukuxazulula inkinga!", + "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT": "Prakthizani ndawonye ukuxazulula inkinga eninayo njengamanje. Oyedwa wenu ungumzali kuthi oyedwa abe ngumntwana. \n\nNcomanani futhi nikhuthazane - siyaziqhenya ngawe! \n\nKhumbula izinyathelo: \nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", + "We care about you, and how life is treating you.": "Siyakunakekela, nokuthi impilo ikuphethe kanjani.", + "You are a star. And you are making a real difference. Be proud of yourself.": "Uyiqhawe. Wenza umehluko wangempela. Ziqhenye ngawe .", + "Sorry that things are not easy today. All parents have these days.": "Uxolo ngokuthi isimo sinzima namuhla. Bonke abazali bayabhekana nalokhu.", + "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nNgesonto elizayo, sizokhuma ngemali - uzodinga: \n* isiqeshana sephepha/ukhadibhothi\n* ipeni \n* amatshe awu-20 amancane/obhontshisi/okusanhlamvu \n\nKuzoba mnandi!", + "There are two home practices for this week.": "Kubili ongakuprakthiza ekhaya kuleli viki.", + "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.": "Uma uzizwa unengcindezi noma uthukuthele: donsa umoya uphinde uwukhiphe kahlanu ngaphambi kokuba uthathe isinyathelo. \n\nUma nobabili seniwehlisile umoya, khuluma nomntwana wakho umtshele ngendlela ozizwa ngayo.", + "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.": "Xoxani “ngoshwele wezokuphepha” nengane yakho, bese nicabange ngesimo lapho ningakusebenzisa khona lokhu.", + "Safety Amnesty Story": "Indaba Kashwele Wezokuphepha", + "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!": "Ngaso sonke isikhathi uthatha ikhefana ngaphambi kokuphendula, nanoma inini lapho wenza okuthile kokuvikela ingane yakho, chofoza i @global.parent_points ujabulele impumelelo yakho!", "Did you experience any of these challenges when sharing how you feel with your teen?": "Ingabe uke wabhekana nanoma iyiphi yalezi zinselele lapho wabelana ngendlela ozizwa ngayo nengane yakho esebusheni bayo?", "What was difficult for you about sharing how you feel with your teen?": "Yini oyithole inzima kuwe ngokutshela ingane yakho esebusheni bayo ngendlela ozizwa ngayo?", "I was afraid my teen would think I was weak.": "BengIsaba ukuthi ingane yams esebusheni bayo izocabanga ukuthi ngibuthakathaka.", @@ -1401,99 +1292,82 @@ "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.": "Ukukhuluma ngemizwa yakho kusiza ingane yakho esebusheni bayo ukuthi ifunde ukwenza okufanayo. Ungakhetha ukuthi uzoyivezela okungakanani ngaleso simo. Kuxhomeke kuwe! Ungakhetha nokuphendula imibuzo kamuva ngokuthi uthi, “Ngizizwa ngithukuthele/ngicindezelekile manje. Ngicela ungiphe isikhashana? Singakhuluma kabanzi ngalokhu namhlanje ntabama”.", "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.": "Bengicindezeleke noma ngithukuthele kakhulu ukuzama ukukhuluma ngemizwa yami – Ngithanda ukuba ngedwa uma ngizizwa ngaleyo ndlela.", "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.": "Kulungile ukungafuni ukukhuluma ngaleso sikhathi. Thola esinye iskathi sokuchaza, lapho usuzizwa uzolile, ukuze wonke umuntu akwazi ukuqonda.", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho esebusheni bayo yephule umthetho wasekhaya). Uthephe okuthi @data.habit.consequence.in_text_title - umsebenzi omuhle wokukhumbula!", - "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho yephule umthetho wasekhaya).", - "introduce a consequence together": "ethula umphumela ndawonye", - "Did you have any challenges when trying to introduce a consequence together?": "Ingabe nibe nezinselele lapho nizama ukwethula umphumela ndawonye?", - "What was difficult for you about introducing a consequence with your teen?": "Yini kuwe obekunzima ngokwethula umphumela nengane yakho esebusheni bayo?", - "I got very angry when my teen broke the rule.": "Ngike ngathukuthela kakhulu lapho ingane yami esebusheni bayo iphula umthetho.", - "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!": "Lapho sithatha ikhefu ngaphambi kokuphendula, kusisiza ukwehlisa umoya futhi siphendule kangcono.\n\nNgokuzayo lapho ingane yakho ikuthukuthelisa, zama ukuhlaba ikhefu kuqala. Ngisho nokuphefumula okuncane okujulile kungenza umehluko omkhulu!", - "My teen got very angry with me after I gave the consequence.": "Ingane yams esebusheni bayo ingithukuthelele lapho ngiyitshela umphumela wezenzo zayo.", - "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.": "Lapho ingane yakho esebusheni bayo ithukuthela, kungase kudingeke uye kwenye indawo wehlise umoya kuze nihlangane lapho nobabili senizolile. \n\nHlola ukuze uqiniseke ukuthi umphumela owubekayo unobulungisa futhi uyacabangela yini. Lalela incazelo yengane yakho esebusheni bayo, bese uqikelela ukuthi unikeza “Ushwele Wokuvikeleka” uma iphule umthetho ukuze ihlale iphephile.", - "I introduced the consequence without first discussing it with my teen.": "Ngethula umphumela ngaphandle kokuxoxa ngawo nengane yami esebusheni bayo.", - "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.": "Ungawenza umphumela uma lokhu kwenzeka futhi? Lapho sithola imiphumela kanye nentsha yethu, umphumela uzoba ngokoqobo ngokwengeziwe, futhi intsha yethu iyozimisela ngokwengeziwe futhi ikwazi ukulandela umthetho.", - "I forgot to follow through with the consequence.": "Ngikhohliwe ukulandela umphumela.", - "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.": "Sonke siyawenza amaphutha! Uma sihambisana kakhulu nemiphumela yethu, maningi amathuba okuthi izingane zethu zizokhetha ukuziphatha kahle ngokuzayo.", - "Even with the consequence, my teen still does not follow the rule.": "Ngisho noma kukhona imiphumela ebekiwe yezenzo zayo, ingane yami esebusheni bayo ayiwulandeli umthetho.", - "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!": "Uma ingane yakho esebusheni bayo iyaqhubeka iphula imithetho, kungase kudingeke uchithe isikhathi esengeziwe nayo. \n\nZama ukuqhubeka neminye imigomo yakho – njengokuzinakekela, ukuchitha isikhathi nengane, nokuyincoma. Onke la makhono azosiza ingane yakho esebusheni bayo izizwe ithandwa futhi ivikelekile... futhi kunciphise ukucindezeleka kuwe!", - "We only created a negative consequence, not a positive consequence.": "Sidale kuphela umphumela ongemuhle, hhayi umphumela omuhle.", - "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!": "Ngezinye izikhathi kungase kube nzima ukucabanga ngomphumela wokwenza kahle izinto. Imiphumela emihle izokhuthaza ingane yakho esebusheni bayo ukuthi izimele nakakhudlwana, futhi uzowubona umehluko!", - "My teen suggested being hit as a negative consequence.": "Ingane yami esebusheni bayo ibeka ukuthi ishaywe njengomphumela ongemuhle wokwephula umthetho.", - "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!": "Izingane ezisebusheni bazo signase zijwayele ekubhekeni ukushaywa njengokuphela komphumela ongemuhle wokwephula imithetho. \n\nXoxa nabo ngemiphumela ezolile engabasiza baqonde ukuthi kukhona okungalungile abakwenzile. Lezi zizosebenza kangcono futhi zizobeka izibonelo ezinhle!", - "Your goal was to make ONE rule with your teen this week.": "Umgomo wakho bekuwukwenza umthetho OWODWA nengane yakho esebusheni bayo kuleli sonto.", - "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!": "Wenze kahle kulokhu! Akulula, futhi intsha ngeke iyihloniphe imithetho ngaso sonke isikhathi, kodwa ukubeka imithetho embalwa esemqoka ndawonye kuyisiqalo esihle. Zincome ngokuzama lokhu - siyaziqhenya ngawe!", - "make rules with their teens": "yenza imithetho kanye nentsha yabo", - "Did you have any challenges when trying to make a rule together?": "Ingabe ube nobunzima obuthile lapho uzama ukubeka umthetho ndawonye?", - "What was difficult for you about making a rule with your teen?": "Yini ebinzima kuwe ngokubeka umthetho kanye nengane yakho esebusheni bayo?", - "My teen and I could not agree on a rule.": "Mina nengane yami esebusheni bayo asikwazanga ukuvumelana ngomthetho.", - "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.": "Cabanga ngokuthi umthetho uyafaneleka yini. Ingabe ingane yakho esebusheni bayo iyakwazi ukuwulandela? Lapho nibeka imithetho njengomndeni, kuyasiza ukucabanga ngengane yenu, ukuthi ineminyaka emingaki nokuthi yini ebalulekile kuyo.", - "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.": "Ingane yami esebusheni bayo ibe nomuzwa wokuthi akulungile ukuthi yona kumelwe ilandele umthetho kuyilapho mina kungadingeki ngiwulandele.", - "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).": "Kufanele sikhumbule njalo ukuthi izingane zifunda kangcono kuthina. Lapho silandela imithetho, kuba lula ngazo ukulandela imithetho. \n\nUngawushintsha umthetho ukuze uqinisekise ukuthi wonke umuntu uyakwazi ukuwulandela, ucabangela imithwalo yakho kanye nemithwalo yengane yakho (ngokwesibonelo, imisebenzi yesikole noma eyasekhaya).", - "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.": "Ngizizwe ngingakhululekile, ngoba nginomuzwa wokuthi kufanele kube imina obeka umthetho hhayi ingane yami esebusheni bayo.", - "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.": "Engithandana naye uzizwe engakhululekile, ngoba unomuzwa wokuthi nguye okufanele abeke umthetho hhayi osemusha.", - "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.": "Lapho sibeka imithetho ndawonye nentsha yethu, lokho kusiza umndeni uqondane kangcono. Imithetho kuyoba elandelekayo, futhi intsha yethu iyozimisela futhi ikwazi ukulandela imithetho.", - "When we tried to set a rule, we got into an argument.": "Lapho sizama ukubeka umthetho, savele sanokukuphikisana.", - "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.": "Ingabe ingane yahoo esebusheni bayo ibisesimweni esikahle lapho uzama ukubeka umthetho? Kungcono ukubeka imithetho lapho isimo sizolile. Uma wena noma ingane yakho ikhathele noma ilambile, kungcono ukukhuluma ngemithetho ngesinye isikhathi.", - "We were not able to stick to the rule.": "Siyahluleka ukunamathela emthethweni.", - "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?": "Umthetho kudingeka uqonde futhi ulandeleke. Qinisekisa ukuthi lomthetho kulula ukuwulandela, njengokuba nesidlo esisodwa enisidla ndawonye njalo ngeSonto esikhundleni sokwenza lokho nsuku zonke. Ingabe kudingeka ube nomthetho ovumelana nezimo?", - "Mother": "Umama", - "Father": "Ubaba", - "TikTok": "TikTok", - "WhatsApp": "WhatsApp", - "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Ukubuka le vidiyo kudinga i-inthanethi. Ukuze wonge amadatha akho, buka noma udawunilode le vidiyo uma usendaweni ene-WiFi.", - "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ukuvakashela la mawebusayithi kudinga ube ne-inthanethi. Ukuze wonge amadatha akho, vakashela lamawebusayithi uma usendaweni ene-WiFi.", - "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Ukuthumela lo mlayezo kudinga i-inthanethi. Ukuze wonge amadatha akho, kumelwe uthumele lo mlayezo uma usendaweni ene-WiFi.", - "COVID": "I-COVID", - "Welcome and Self-Care": "Ukwamukelwa Nokuzinakekela", - "Self-Care": "Ukuzinakekela", - "How to add self-care": "Indlela yokunezela ukuzinakekela", - "One-on-One Time": "Isikhathi Sokuthi Nibe Nobabili Ndawonye", - "How to spend one-on-one time": "Indlela yokuchitha isikhathi ninobabili", - "Praise": "Ncoma", - "How to praise": "Indlela yokuncoma", - "Positive Instructions": "Imiyalelo emihle", - "How to give positive instructions": "Indlela yokunikeza imiyalelo emihle", - "Managing Stress": "Ukulawula ingcindezi", - "How to manage stress": "Indlela yokulawula ingcindezi", - "Family Budgets": "Isabelomali Somndeni", - "How to budget & save": "Indlela yokwenza isabelomali kanye nokonga", - "Rules": "Imithetho", - "How to create rules": "Indlela yokubeka imithetho", - "Calm Consequences": "Imiphumela Eyethulwa Ngomoya Ozolile", - "How to give calm consequences": "Indlela yokwethula imiphumela ngomoya ozolile", - "Problem Solving": "Ukuxazulula Inkinga", - "How to solve problems": "Indlela yokuxazulula izinkinga", - "Teen Safety": "Ukuphepha Kwentsha", - "How to keep your teen safe": "Indlela yokugcina ingane yakho iphephile", - "Dealing with Crisis": "Ukubhekana Nezinkinga", - "How to deal with crisis": "Indlela yokubhekana nezinkinga", - "Celebration and Next Steps": "Ukubungaza kanye Nezinyathelo Ezilandelayo", - "How to support each other": "Indlela yokusekelana", - "Talk about @global.home_practice": "Khuluma nge @global.home_practice", - "Home Practice Review": "Ukubuyekeza Ongakuprakthiza Ekhaya", - "Let's talk about how your home practice went this week.": "Masikhulume ngendlela ukuprakthiza kwakho ekhaya okuhambe ngayo kuleli sonto.", - "In my group": "Eqenjini lami", - "By myself": "Ngedwa", - "awesome parent": "mzali othandekayo", - "friends": "abangani", - "New workshop ready tomorrow!": "Ukuqeqeshwa kwakho okusha kuzolunga kusasa!", - "New workshop!": "Ukuqeqeshwa okusha!", - "Workshop Reminder": "Isikhumbuzo Sokuqeqeshwa", - "Nice progress!": "Inqubekela phambili enhle!", - "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Khumbula ukuhlala phansi uphumule namuhla - ukuzinakekela kuyikhono elibalulekile njengomzali.", - "You are appreciated!": "Uyathandwa!", - "Something Fun": "Okuthile Okujabulisayo", - "Your @global.parent_points this week": "I-@global.parent_points yakho kuleli sonto", - "Home Practice Reminder": "Isikhumbuzo Sokuphrakthiza Ekhaya", - "To solve this challenge, I will try to:": "Ukuxazulula le nkinga, ngizozama uku:", - "My challenge is not listed here.": "Inkinga yami ayibaliwe lapha.", - "ParentApp": "I-ParentApp", - "Weekly Workshops": "Ukuqeqeshwa Kwamasonto Onke", - "Weekly Workshop": "Ukuqeqeshwa Kwamasonto Onke", - "Weekly Workshop Options": "Ongakukhetha Kokuqeqeshwa Ngeviki", - "ParentPoints": "Amaphuzu Omzali", - "ParentPoint": "Iphuzu Lomzali", - "Parent Library": "Umtapo Wolwazi Womzali", + "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.": "Kuleli sonto, umgomo wakho bekuwukuthi: Noma nini lapho uzizwa ucindezelekile noma uphatheke kabi, phefumula kahlanu ngaphakathi nangaphandle ngaphambi kokuba usabele.", + "Your goal was also to talk to your teen about how you both felt in a stressful situation.": "Umgomo wakho bekuwukuba ukhulume nengane yakho esebusheni bayo mayelana nendlela nobabili enizizwe ngayo esimweni esinicindezelayo.", + "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.": "Siyazi ukuthi kukukhathaza kangakanani ukukhulisa izingane kulezi zinsuku. Ukufunda ukulawula ingcindezi kusiza wena - nomndeni wakho.", + "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.": "Sanibonani nonke. \n\nIsihloko sanamuhla sikhuluma ngokulawula ingcindezi. \n\nKubalulekile ukukwazi ukulawula ingcindezi yethu. Ngezinye izikhathi izingane zethu zingaziphatha ngendlela eyenza sibe nengcindezi futhi nathi njengabazali singenza izingane zethu zibe nengcindezi. \n\nNgakho-ke, kubalulekile ukuqaphela lapho sizizwa sinengcindezi bese siyema kancane siphefumule. Lokho kuzokusiza ukulawula ingcindezi kuwe.", + "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.": "Abe kanjani amazinga akho okucindezeleka kuleli sonto? Zama ukudonsa umoya ngaphambi kokuphendula ingane yakho - kwenza umehluko omkhulu.", + "Well done!": "Wenze kahle!", + "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.": "Wenze kahle ngokudonsa umoya ngaphambi kokuphendula ingane yakho esebusheni bayo!! Ngaso sonke isikhathi uma uhlaba ikhefu, ukwazi ukulawula isimo kancono.", + "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.": "Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile? Wenze kahle ngokubona ukuthi wena nabanye benizizwa kanjani namuhla! Khumbula, kusasa usuku olusha.", + "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.": "Sonke sizizwa singakhungathekile ngezinye izikhathi. Ukudonsa kakhulu umoya kuyasiza! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole imcebiso ewusizo ekubhekana nokucindezeleka.", + "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.": "Sino mhlangano wokufundisana kwakho omusha okhona okumayelana nokulawula intukuthelo nokucindezeleka. Kuzokusiza uzinakekele kangcono.", + "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!": "Kusasa kukhona okusha @global.parent_app komhlangano wokufundisana okulindele. \n\nNgokuphothula i-@local.workshop_data.in_text_title kuqala, ubeka isisekelo esibaluleke ngempela: Uma uzizwa kahle, nomndeni wakho uzozizwa kahle!", + "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!": "Wenze kahle ngoqeda i-@local.workshop_data.in_text_title. Kusasa, ungangena kumhlangano wokufundisana omusha ukuze usizakale ngokuohumula futhi wakhe amakhono abalulekile!", + "Let's think about what happened in this story.": "Ake sicabange ngokuthi kwenzekeni kule ndaba.", + "How do you think @global.w_stress_teen_boy_1 felt?": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani?", + "And @global.w_stress_male_caregiver?": "Futhi @global.w_stress_male_caregiver?", + "And @global.w_stress_girl?": "Futhi @global.w_stress_girl?", + "Sad": "Ngidabukile", + "Scared": "Ngethukile", + "Confused": "Ngikhungathekile", + "Angry": "Ngithukuthele", + "Each of them was feeling upset for their own reason!": "Ngamunye wabo ubezizwa ediniwe ngezizathu zabo!", + "What could @global.w_stress_male_caregiver have done differently?": "Kungaba yini @global.w_stress_male_caregiver ayenze ngokuhlukile?", + "Recognise why he feels stressed": "Thola ukuthi kungani ezizwa enengcindezi", + "Take a deep breath and speak calmly": "Phefumula bese ukhuluma ngezwi elizolile", + "Show he understands his teen’s feelings": "Ubonisa ukuthi uyayiqonda imizwa yengane yakhe", + "Think about solutions together with @global.w_stress_teen_boy_1": "Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye", + "Do something positive together with @global.w_stress_teen_boy_1": "Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", + "Let’s look at an example of how stress can sometimes just get too much, for all of us:": "Ake sibheke isibonelo sendlela ingcindezi engaba mandla ngayo ngezinye izikhathi, kithi sonke:", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver: “Ngiyeke phansi unake izindaba zakho!”", + "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”": "@global.w_stress_teen_boy_1: “Ngenzeni? Awukaze ungilalele!” \n\n@global.w_stress_male_caregiver: “Ngithe ngiyeke uma kungenjalo ngizokushaya!”", + "@global.w_stress_girl: “Look! I have made a house!”": "@global.w_stress_girl: “Bheka! Ngakhe indlu!”", + "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”": "@global.w_stress_teen_boy_1: “Ubani onendaba nendlu yakho embi!”", + "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:": "Siyabonga ngokuthi nicabanga kanye nathi! Ake sibuyele emuva sibone lokho @global.w_stress_male_caregiver akwenzayo njengamanje:", + "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.": "@global.w_stress_male_caregiver ulahlekelwe umsebenzi. Ubehlezi ekhaya ekhungathekile futhi enengcindezi, ngesikhathi @global.w_stress_teen_boy_1 engena.", + "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver (uyaphefumula): “Ngiyaxolisa ndodana. Ngibe losuku okunzima namuhla. Umphathi ungixoshile emsebenzini.”", + "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”": "@global.w_stress_teen_boy_1: “Awee! Ngidinga umfaniswano wesikole.” \n\n@global.w_stress_male_caregiver: “Ngizozama ndodana, futhi u @global.w_stress_female_caregiver wakho uzosisiza uma ngisafuna omunye umsebenzi.”", + "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”": "@global.w_stress_teen_boy_1: “Ngingakusiza nami ukufuna umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: Cha, kulungile! @global.w_stress_teen_boy_1. Ngiyabonga ngokufisa ukungisiza. Into ebaluleke ukuzedlula zonke ukuthi usebenze kanzima esikoleni. Ngiyabonga ngokuthi ungilalele.”", + "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”": "@global.w_stress_male_caregiver: “Ake sidlale ibhola lezinyawo ndawonye. Kuzongisiza ngisuse lengcindezi kancane emqondweni wami.” \n\n@global.w_stress_teen_boy_1: “Kulungile, @global.w_stress_male_caregiver!”", + "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!": "Lokhu kuhambe kangcono kakhulu! \n\nUkuthatha ikhefu kusiza siphendule ngokuzolile uma uzizwa ucasukile noma ukhathazekile. Kuzame, uzobona!", + "Safety Amnesty": "Ukuphepha Kukashwele", + "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:": "Cabanga ngesikhathi usesemusha. \n\nIngabe kwake kwaba nesikhathi lapho waba sengozini kodwa ungakwazi ukutshela umndeni wakho ngoba usaba ukuthi uzothukuthela?\n\nLokho CISHE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Ake sibone:", + "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"": "@global.w_stress_teen_boy_2: “Ungabatsheli abantu abadala, kodwa ngiya etshwaleni nabangane bami namuhla kusihlwa” \n\n@global.w_stress_teen_girl: “Ube nesikhathi esimnandi! Ngibatshele ukuthi ngiya kumngane wami wentombazane, kodwa empeleni ngiya ephathini emnandi”", + "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"": "@global.w_stress_teen_boy_2: “Ngicabanga ukuthi bathengisa izidakamizwa. Sonke singaboshwa. Kodwa angikwazi ukutshela abazali bami - bazothukuthela kakhulu”", + "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"": "@global.w_stress_teen_girl: “Ngethukile kakhulu. Wonke umuntu udakiwe ukuba angashayela angihambise ekhaya. Lo mfana uthi angangihambisa kodwa uthi ufuna sidlule kubo kuqala. Angakwazi ukutshela abazali bami - ngiqambe amanga ngokuthi ngiya ephathini.”", + "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"": "Lezi yizimo eziyingozi! Siyabonga, @global.w_stress_teen_boy_2 u @global.w_stress_teen_girl bakhumbulile ukuthi @global.w_stress_parent ubatsheleni: \n\n“Nginendaba nokuphepha kwakho ukudlula noma yini enye. Uma uthukuthele, noma uthukile, ungangishayela ucingo noma nini uma ufuna usizo noma ufuna ukukhuluma. \n\nMane uthi ‘USHWELE WEZOKUPHEPHA’. Ngiyathembisa ukuthi ngizozama okusemandleni ukusiza futhi angeke ngithukuthele - ngisho noma wenze okuthile ebekungakafaneli ukwenze.”", + "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicela uze uzongilanda? Ngidinga ukuhanjiswa ekhaya.”", + "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicabanga ukuthi abangane bami basenkingeni. Angifuni ukuyeka ukuba umngane wabo, kodwa ngikhathazekile ngabo. Singakhuluma?”", + "This is fantastic, especially in such difficult times as this. You are a star.": "Kuhle kakhulu lokhu, ikakhulu ezikhathini ezinzima njengalezi. Uyiqhawe.", + "Today you will explore:": "Namuhla uzohlola:", + "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", + "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza indaba - okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", + "Let's discuss what happened in this story.": "Ake sixoxe ngokuthi kwenzekeni kule ndaba.", + "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani? Kanye no-@global.w_stress_male_caregiver wakhe? Kanye @global.w_stress_girl?\n\nYini @global.w_stress_male_caregiver abengayenza ngokuhlukile?", + "@global.w_stress_male_caregiver could...": "@global.w_stress_male_caregiver anga...", + "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1": "* Thola ukuthi kungani ezizwa enengcindezi\n* Phefumula bese ukhuluma ngezwi elizolile \n* Ubonisa ukuthi uyayiqonda imizwa yengane yakhe \n* Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye\n* Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", + "BREATHE. Slowly. Pause.": "PHEFUMULA. Kancane. Yima.", + "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.": "Ngaphambi kokuthi usho okuthile, phefumula kancane uphinde ukhiphe umoya izikhathi ezinhlanu. Kuzokwenza wehlise umoya, kukunikeze nethuba lokucabanga.", + "SHARE how you feel": "KHULUMA ngendlela ozizwa ngayo", + "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.": "Lokhu kunzima. Iningi lethu latshelwa ukuthi lingakhali, noma libonise imizwa ezinganeni. Kodwa phefumula bese ngomoya ozolile ubatshele indlela ozizwa ngayo. Bazokuqonda kangcono, futhi bafunde kuwe ukubhekana nengcindezi.", + "SHOW them you care": "BABONISE ukuthi uyabakhathalela", + "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.": "Nalokhu kunzima! Ingcindezi isenza sicabange ngathi kuphela. Kodwa izingane zethu zidinga ukuthi sizisekele. Babuze ukuthi bazizwa kanjani. Balalele futhi ubaduduze. Zama ukubanga noma ubatshele ukuthi ‘Ngiyaqonda’. Kungashintsha yonke into.", + "SEEK the positive": "BHEKA okuhle", + "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?": "Ungakwazi yini ukuthi wena kanye nengane yakho ukuthi nicabange ngamacebiso angasiza? Ningakwazi yini ukwenza okuthile okuhle ndawonye okususa ingqondo yakho kwingcindezi?", + "If all else fails, breathe. You can do this.": "Uma konke kungaphumeleli, phefumula. Ungakwazi ukukwenza lokhu.", + "Looking after yourself matters.": "Kubalulekile ukuzinakekela.", + "Great! So good to hear that you are in a good space today. What a wonderful feeling!": "Kuhle! Kuhle uzwa ukuthi kuhamba kahle namuhla. Umuzwa umuhle lowo!", + "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.": "Ngezinye izikhathi izinto zihamba kahle. Ngezinye izikhathi azihambi kahle. Futhi ngezinye izikhathi asazi ukuthi sicabangeni.... kulungile lokho! Khumbula ukuthi awuwedwa.", + "My Favourite Activities": "Imisebenzi Engiyithandayo", + "All Activities": "Yonke Imisebenzi", + "Random Activity": "Imisebenzi Engahleliwe", + "This Week's Activity": "Imisebenzi Yaleli Viki", + "Chat Together": "Xoxani Ndawonye", + "Do Together": "Kwenzeni Ndawonye", + "Your @global.parent_app Code": "Ikhodi Yakho Ye-@global.parent_app", + "Terms & Conditions": "Imigomo nemibandela", + "Privacy Policy": "Inqubomgomo Yobumfihlo", "Real-world ideas": "Amacebo angempela", "Ideas": "Amacebo", "Ideas from other families...": "Amacebiso avela kweminye imindeni...", @@ -1512,9 +1386,49 @@ "Continue": "Qhubeka", "Finish with a song": "Phetha ngengoma", "Goodbye!": "Uhambe kahle!", - "Your @global.parent_app Code": "Ikhodi Yakho Ye-@global.parent_app", - "Terms & Conditions": "Imigomo nemibandela", - "Privacy Policy": "Inqubomgomo Yobumfihlo", + "No gadget use the next day": "Azikho izinto zobuchwepheshe ezizosetshenziswa kusasa", + "Take 5 minutes pause in separate part of the room": "Thatha imizuzu emihlanu yekhefu elifushane endaweni ehlukile yekamelo", + "Write a letter of apology": "Bhala incwadi yokuxolisa", + "Cannot see friends the next day": "Awuvunyelwe ukubona abangane bakho kusasa", + "Cannot play with phone after dinner (or next hour)": "Avuvunyelwe ukudlala nocingo lwakho ngemva kwesidlo sakusihlwa (noma ehoreni elilandelayo)", + "Extra time with friends on weekend (1hr)": "Isikhathi esengeziwe nabangane ngempelasonto (ihora eli-1)", + "Cooking teen’s favourite meal": "Ukupheka ukudla okuthandwa ingane yami ", + "Extra time with phone after dinner (30 min)": "Isikhathi esengeziwe sokudlala ngocingo ngemuva kwesidlo sakusihlwa (30 imiz.)", + "Watching teen’s T.V. show together": "Ukubuka ndawonye uhlelo lwe-TV oluthandwa ingane yami", + "Extra one-on-one time on Sunday (30 min)": "Ukuba nesikhathi esengeziwe sokuba nodwa ngeSonto (30 imiz.)", + "Take a deep breath and pause before responding": "Donsa umoya kakhulu ngaphambi kokuthi uphendule", + "Listen to your teen": "Lalela ingane yakho", + "Praise your teen for sharing": "Ncoma ingane yakho ngokukhuluma", + "Use problem solving skills": "Sebenzisa amakhono okuxazulula inkinga", + "Work out where you can get help": "Thola lapho ungathola khona usizo", + "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.": "Ukubuka le vidiyo kudinga i-inthanethi. Ukuze wonge amadatha akho, buka noma udawunilode le vidiyo uma usendaweni ene-WiFi.", + "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.": "Ukuvakashela la mawebusayithi kudinga ube ne-inthanethi. Ukuze wonge amadatha akho, vakashela lamawebusayithi uma usendaweni ene-WiFi.", + "Sending this message requires internet access. To limit data use, send this message when on WiFi.": "Ukuthumela lo mlayezo kudinga i-inthanethi. Ukuze wonge amadatha akho, kumelwe uthumele lo mlayezo uma usendaweni ene-WiFi.", + "Severe illness or death of a friend or family member": "Ukugula okubi noma ukufa komngane noma ilungu lomndeni", + "Robbery": "Ukubanjwa inkunzi", + "Flooding": "Izikhukhula", + "Political violence": "Udlame lwezepolotiki", + "Losing my job": "Ukulahlekelwa umsebenzi", + "Pandemic (COVID-19)": "Ubhubhane (COVID-19)", + "ParentApp": "I-ParentApp", + "Weekly Workshops": "Ukuqeqeshwa Kwamasonto Onke", + "Weekly Workshop": "Ukuqeqeshwa Kwamasonto Onke", + "Weekly Workshop Options": "Ongakukhetha Kokuqeqeshwa Ngeviki", + "ParentPoints": "Amaphuzu Omzali", + "ParentPoint": "Iphuzu Lomzali", + "Parent Library": "Umtapo Wolwazi Womzali", + "To solve this challenge, I will try to:": "Ukuxazulula le nkinga, ngizozama uku:", + "My challenge is not listed here.": "Inkinga yami ayibaliwe lapha.", + "New workshop ready tomorrow!": "Ukuqeqeshwa kwakho okusha kuzolunga kusasa!", + "New workshop!": "Ukuqeqeshwa okusha!", + "Workshop Reminder": "Isikhumbuzo Sokuqeqeshwa", + "Nice progress!": "Inqubekela phambili enhle!", + "Remember to sit down and relax today - taking care of yourself is an important parenting skill.": "Khumbula ukuhlala phansi uphumule namuhla - ukuzinakekela kuyikhono elibalulekile njengomzali.", + "You are appreciated!": "Uyathandwa!", + "Something Fun": "Okuthile Okujabulisayo", + "Your @global.parent_points this week": "I-@global.parent_points yakho kuleli sonto", + "Home Practice Reminder": "Isikhumbuzo Sokuphrakthiza Ekhaya", + "COVID": "I-COVID", "Make me smile": "Ngenze ngimamatheke", "Get me going": "Ngenze ngiqhubeke", "My Favourite Relaxes": "Ukuphumula Engikuthandayo", @@ -1524,16 +1438,14 @@ "Listen & Relax (1-2 minutes)": "Lalela futhi Uphumule (Imizuzu engu-1-2)", "Listen & Relax (3-5 minutes)": "Lalela futhi Uphumule (Imizuzu engu-3-5)", "Do & Relax (5-10 minutes)": "Yenza futhi Uphumule (Imizuzu engu-5-10)", - "My Favourite Activities": "Imisebenzi Engiyithandayo", - "All Activities": "Yonke Imisebenzi", - "Random Activity": "Imisebenzi Engahleliwe", - "This Week's Activity": "Imisebenzi Yaleli Viki", - "Chat Together": "Xoxani Ndawonye", - "Do Together": "Kwenzeni Ndawonye", - "Tap and type": "Chofoza bese uyabhala", - "Tap and choose": "Chofoza bese uyakhetha", - "Type your own": "Bhala okwakho", - "I've understood this. Don't show me this message again.": "Ngiyakuqonda lokhu. Ungasangibonisi lo myalezo.", + "At home": "Ekhaya", + "Buy things we can sell": "Ukuthenga izinto esingazithengisa", + "At a bank": "Ebhange", + "In a savings group": "Eqenjini lokonga", + "Teens completing school/university": "Intsha iqeda isikole/inyuvesi", + "Building/expanding a house for my family": "Ukwakha/ukukhulisa indlu yomndeni wami", + "Starting a business": "Ukuqala ibhizinisi", + "Buying a car for my family": "Ukuthengela umndeni wami imoto", "Walk to the shops": "Ukuhamba niye ezitolo", "Get water together": "Ukuyokha amanzi ndawonye", "Do a chore together": "Yenzani umsebenzi wasendlini ndawonye", @@ -1544,42 +1456,18 @@ "Review homework": "Buyekeza umsebenzi wasekhaya", "Chat before bedtime": "Xoxani ngaphambi kokulala", "Play a game/sport": "Dlalani umdlalo", - "Teens completing school/university": "Intsha iqeda isikole/inyuvesi", - "Building/expanding a house for my family": "Ukwakha/ukukhulisa indlu yomndeni wami", - "Starting a business": "Ukuqala ibhizinisi", - "Buying a car for my family": "Ukuthengela umndeni wami imoto", - "Severe illness or death of a friend or family member": "Ukugula okubi noma ukufa komngane noma ilungu lomndeni", - "Robbery": "Ukubanjwa inkunzi", - "Flooding": "Izikhukhula", - "Political violence": "Udlame lwezepolotiki", - "Losing my job": "Ukulahlekelwa umsebenzi", - "Pandemic (COVID-19)": "Ubhubhane (COVID-19)", - "At home": "Ekhaya", - "Buy things we can sell": "Ukuthenga izinto esingazithengisa", - "At a bank": "Ebhange", - "In a savings group": "Eqenjini lokonga", - "No gadget use the next day": "Azikho izinto zobuchwepheshe ezizosetshenziswa kusasa", - "Take 5 minutes pause in separate part of the room": "Thatha imizuzu emihlanu yekhefu elifushane endaweni ehlukile yekamelo", - "Write a letter of apology": "Bhala incwadi yokuxolisa", - "Cannot see friends the next day": "Awuvunyelwe ukubona abangane bakho kusasa", - "Cannot play with phone after dinner (or next hour)": "Avuvunyelwe ukudlala nocingo lwakho ngemva kwesidlo sakusihlwa (noma ehoreni elilandelayo)", - "Extra time with friends on weekend (1hr)": "Isikhathi esengeziwe nabangane ngempelasonto (ihora eli-1)", - "Cooking teen’s favourite meal": "Ukupheka ukudla okuthandwa ingane yami ", - "Extra time with phone after dinner (30 min)": "Isikhathi esengeziwe sokudlala ngocingo ngemuva kwesidlo sakusihlwa (30 imiz.)", - "Watching teen’s T.V. show together": "Ukubuka ndawonye uhlelo lwe-TV oluthandwa ingane yami", - "Extra one-on-one time on Sunday (30 min)": "Ukuba nesikhathi esengeziwe sokuba nodwa ngeSonto (30 imiz.)", - "Take a deep breath and pause before responding": "Donsa umoya kakhulu ngaphambi kokuthi uphendule", - "Listen to your teen": "Lalela ingane yakho", - "Praise your teen for sharing": "Ncoma ingane yakho ngokukhuluma", - "Use problem solving skills": "Sebenzisa amakhono okuxazulula inkinga", - "Work out where you can get help": "Thola lapho ungathola khona usizo", + "Tap and type": "Chofoza bese uyabhala", + "Tap and choose": "Chofoza bese uyakhetha", + "Type your own": "Bhala okwakho", + "I've understood this. Don't show me this message again.": "Ngiyakuqonda lokhu. Ungasangibonisi lo myalezo.", + "Talk about @global.home_practice": "Khuluma nge @global.home_practice", + "Home Practice Review": "Ukubuyekeza Ongakuprakthiza Ekhaya", + "Let's talk about how your home practice went this week.": "Masikhulume ngendlela ukuprakthiza kwakho ekhaya okuhambe ngayo kuleli sonto.", + "In my group": "Eqenjini lami", + "By myself": "Ngedwa", + "awesome parent": "mzali othandekayo", + "friends": "abangani", "Welcome to @global.parent_app": "Siyakwamukela ku @global.parent_app", - "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Siyakwamukela ku @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ufanelwe ukuzizwa ujabule, nokuba nobuhlobo obujabulisayo nomndeni.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app izokusekela wena nomndeni wakho ngezindlela ezintathu:

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Le nkinobho enkulu izokuyisa ku @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kanye ngeviki ukuqeqeshwa okusha kuzobe kukulungele- ukugxila emakhonweni ahlukahlukene okuba umzali. Chofoza ukuze uqale ukuqeqeshwa kwakho kokuqala!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Inkinobho eyindilinga ivela uma @global.weekly_workshop okusha sekutholakala kuwe.

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Cindezela inkinobho enkulu ukuze ikuse ku @global.parent_points esikrinini sakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona impumelelo yakho yokuzinakekela nokuba umzali.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona intuthuko yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jabulela okufinyelelayo nsuku zonke!

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Le nkinobo ikuyisa ku- @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Egwele izinsiza ozidingayo nanini uma uzifuna

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ukufikela ngokushesha kwizigaba zosizo ku- @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ulwazi olwengeziwe nezinsiza zomphakathi

                                                                                                                                                                                  ", - "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ungaqala noma kanjani, iqiniso ukuthi ulapha lokho kubonisa ukuthi uyakhathalela.

                                                                                                                                                                                  ", "Go to the @global.weekly_workshops": "Iya ku @global.weekly_workshops", "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Cindezela inkinobho esekhasini lokuqala ukuze uye ku @global.weekly_workshops

                                                                                                                                                                                  ", "Go to the @global.weekly_workshop_options": "Iya ku @global.weekly_workshop_options", @@ -1590,63 +1478,6 @@ "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Lokhu kubonisa @global.weekly_workshop okuyo njengamanje.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Ungakushintsha lapha uma ufuna ukwenza @global.weekly_workshops yakho njengeqembu noma uwedwa.

                                                                                                                                                                                  ", "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ": "

                                                                                                                                                                                  Chofoza lapha uma ufuna ukushintsha igama leqembu lakho.

                                                                                                                                                                                  ", - "This week is about YOU! Treat yourself well. You deserve it!": "Leliviki lingawe. Ziphathe kahle. Kukufanele!", - "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Qala isifundo esha kusasa ku- @global.parent_app. Uzobona imiphumela emihle kakhulu!", - "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Khumbula ukutshela abalingane bakho be- @global.parent_app ngale app. Ningaqala ukwenza i- @global.parent_app ndawonye kusasa!", - "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Sawubona @fields.user_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", - "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Sawubona @fields.group_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", - "You've put so much effort into being a better parent. You are loved and appreciated!": "Usuzikhandlile ekutheni ube umzali oqotho. Uyathandwa futhi uyabongwa!", - "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Siyabonga ngokuzinikela ekukhuliseni abantwana.\n\nIkulungele i-@data.workshop.w_1on1.in_text_title yakho!", - "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Ukuchitha isikhati nomntwana wakho kuyasiza ekwakheni ukuthembana.\n\nUkuze ubone imiphumela emihle kakhulu, qhubeka nohambo lwakho ne- @global.parent_app.", - "Welcome to ParentApp. Click here to start your journey!": "Siyakwamukela kuParentApp. Chofoza lapha ukuze uqale uhambo lwakho!", - "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!": "Sithembe ukuthi uzizwa KAHLE. Ukuba umzali kunzima, kodwa usenesikhathi sokuqala kabusha nomntwana wakho. Sekuyatholakala ukuqeqeshwa kwakho kokuqala kokuba umzali! Chofoza lapha ukuze uqale uhambo lwakho lwe ParentApp!", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba wumzali - sebenzisa i-app yabazali ukuze uzisakale ukulawula ingcindezi.", - "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Sawubona futhi! Awukaphelewa isikhathi ukuthi usebenzise i-ParentApp bese uthola ukusekelwa okuqhubekayo njengo umzali. Kungani ungakuzami lapho usendleleni eya emsebenzini noma uma upheka? Izigidi zabazali ziwathola ewusizo amathuluzi ethu.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuze ikusize ulawule indlela umntwana wakho aziphatha ngayo.", - "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Sawubona! Ingabe konke kuhamba KAHLE? Kubonakala sengathi muva nje awuyivulanga i-ParentApp. Kungani ungayizami? Izigidi zabazali zithole la mathuluzi ewusizo. Sisekhona lapha ukuba sikusekele.", - "ParentApp misses you! There is a lot to explore. We are still here to support you.": "I-ParentApp iyakukhumbula! Kuningi ongakuhlola. Sisekhona lapha ukuba sikusekele.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuze ulungiselele ingane yakho ukuthi iphumelele empilweni.", - "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuqinisa ubudlelwane nengane yakho!", - "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.": "Sawubona mzali othandekayo, khumbula ukuzinakekela - kuzosiza wena nomndeni wakho! Thola amacebiso nokuningi kwi ParentApp.", - "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.": "Sawubona mzali othandekayo! Khumbula, ungathola amacebiso amaningi awusizo kwi ParentApp.", - "New message from PLH": "Umlayezo omusha ovela ku-PLH", - "Hi great parent! ParentApp is here to support you. Check it out now!": "Sawubona mzali othandekayo! iParentApp ikhona ukukusekela. Ibheke manje!", - "**Welcome and Self-Care** workshop": "Ukuqeqeshelwa **Ukwamukela kanye Nokuzinakekela**", - "How to do self-care": "Indlela yokuzinakekela", - "**One-on-One Time** workshop": "Ukuqeqeshelwa **Isikhathi Sokuthi Nibe Babili**", - "**Praise** workshop": "Ukuqeqeshelwa **Ukuncoma**", - "**Positive Instructions** workshop": "Ukuqeqeshelwa **Imiyalelo emihle**", - "**Managing Stress** workshop": "Ukuqeqeshelwa **Ukulawula Ingcindezi**", - "**Family Budgets** workshop": "Ukuqeqeshelwa **Isabelomali Somndeni**", - "**Rules** workshop": "Ukuqeqeshelwa **Imithetho**", - "**Calm Consequences** workshop": "Ukuqeqeshelwa **Imiphumela Eyethulwa Ngomoya ozolile**", - "**Problem Solving** workshop": "Ukuqeqeshelwa **Ukuxazulula Inkinga**", - "**Teen Safety** workshop": "Ukuqeqeshelwa **Ukuphepha Kwentsha**", - "**Dealing with Crisis** workshop": "Ukuqeqeshelwa **Ukubhekana Nezinkinga**", - "**Celebration and Next Steps** workshop": "Ukuqeqeshelwa **Ukubungaza kanye Nezinyathelo Ezilandelayo**", - "Quick pause": "Ikhefu elisheshayo", - "Power of three": "Amandla abantu abathathu", - "One thing today": "Into eyodwa namuhla", - "Breathe to three": "Phefumula izikhathi ezintathu", - "In and out": "Udonse umoya uphinde uwukhiphe", - "Think about today": "Cabanga ngosuku lwanamuhla", - "Pause to respond": "Thatha ikhefu ngaphambi kokuphendula", - "Small things": "Izinto ezincane", - "Body scan": "Ukuhlola umzimba", - "Feel the ground": "Yizwa izinyawo zithinte phansi", - "Counting sounds": "Ukubala imisindo", - "Feel your feeling": "Yizwa imizwa yakho", - "Your song": "Ingoma yakho", - "Ground & gratitude": "Phansi kanye nokubonga", - "Notice how you feel": "Qaphela indlela ozizwa ngayo", - "Pause power": "Amandla ekhefu", - "Taking care of yourself": "Zinakekele", - "Take a pause": "Thatha ikhefu", - "Physical activity": "Ukuvocavoca umzimba", - "List of things": "Uhlu lwezinto", - "Connect": "Xhumana", - "Prevent anger": "Gwema ulaka", - "Angry? Take a break": "Uthukuthele? Thatha ikhefu", "Reflect on the positive": "Cabanga ngokuhle", "Check-in chat": "Hlola imilayezo", "Dream Travel": "Iphupho Lohambo", @@ -1673,37 +1504,15 @@ "What are you doing?": "Wenzani?", "Here is a fun game you can do with your family!": "Nawu umdlalo omnandi ongawudlala nomndeni wakho!", "Crazy chicken": "Inkukhu ehlanyayo", - "My Tips": "Amacebiso Ami", - "**My Tips** in the @global.parent_centre": "**Amathiphu ami** ku-@global.parent_centre", - "Essential Tools": "Amathuluzi Abalulekile", - "**Essential Tools** in the @global.parent_centre": "**Amathuluzi abalulekile** ku-@global.parent_centre", - "**Customise @global.parent_app** in the @global.parent_centre": "**Khetha ngokwezifiso zakho @global.parent_app** ku-@global.parent_centre", - "Customise Again": "Phinda Uhlele Ngendlela Oyithandayo", - "Relax & Activities": "Ukuphumula kanye Nemisebenzi", - "under **Relax & Activities** in the @global.parent_centre": "ngaphansi **Kokuphumula neMisebenzi** ku- @global.parent_centre", - "Help": "Usizo", - "**Help** in the @global.parent_centre": "**Usizo** ku- @global.parent_centre", - "Technical Support": "Usizo Lwezobuchwepheshe", - "**Technical Support** in the @global.parent_centre": "**Ukwesekwa ngokobuchwepheshe** ku-@global.parent_centre", - "Coping with @global.covid": "Ukumelana ne- @global.covid", - "**Coping with @global.covid** in the @global.parent_centre": "**Ukumelana ne @global.covid** ku- @global.parent_centre", - "Coping with grief": "Ukumelana nosizi", - "**Coping with grief** in the @global.parent_centre": "**Ukumelana nosizi** ku- @global.parent_centre", - "Message Archive": "Indawo Okugcinwa Kuyo Imiyalezo", - "**Message Archive** in the @global.parent_centre": "**Indawo egcine imiyalezo** ku- @global.parent_centre", - "Support Contacts": "Izinombolo zalapho ungathola ukwesekwa khona", - "**Support Contacts** in the @global.parent_centre": "**Labo abangakweseka** ku- @global.parent_centre", - "Evidence Base": "Isisekelo Sobufakazi", - "**Evidence Base** in the @global.parent_centre": "**Isisekelo sobufakazi** ku- @global.parent_centre", + "Help yourself cope": "Zisize ubhekane nakho", + "Help your teen cope": "Siza umntwana wakho ukuthi akwazi ukumelana nesimo", + "Practical steps": "Izinyathelo ezisebenzayo", "How to talk to my teen": "Ngikhulume kanjani nomntwana wami", "Steps to deal with news": "Izinyathelo zokumelana nezindaba", "How can I help my teen choose well?": "Ngingamusiza kanjani umntwana wami ukuthi akhethe kahle?", "What influences teen decisions?": "Yini enomthelela kwizinqumo zomntwana?", "How does my teen feel?": "Uzizwa kanjani umntwana wami?", "Changing negative to positive": "Ukushintsha okubi ukuse kokuhle", - "Help yourself cope": "Zisize ubhekane nakho", - "Help your teen cope": "Siza umntwana wakho ukuthi akwazi ukumelana nesimo", - "Practical steps": "Izinyathelo ezisebenzayo", "**Relax** @global.parent_point": "**Phumula** @global.parent_point", "Doing a relaxation activity": "Ukwenza umsebenzi wokuphumula", "Every time you do a relax, tap the @global.parent_point and celebrate your success!": "Ngaso sonke isikhathi uma uphumula, chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", @@ -1711,7 +1520,6 @@ "**Treat yourself well** @global.parent_point": "**Zenzele okuthile okuhle** @global.parent_point", "Doing something they like for themselves": "Ukwenza into abazithandela bona", "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!": "Ngaso sonke isikhathi uma uzitotosa uzinakekela, chofoza @global.parent_point bese ujabulela impumelelo yakho!", - "Praise yourself": "Zincome", "**Praise yourself** @global.parent_point": "**Zincome** @global.parent_point", "Praising themselves": "Bayazincoma", "Every time you praise yourself, tap the @global.parent_point and celebrate your success!": "Ngaso snke iskhathi uma uzincoma chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", @@ -1767,5 +1575,123 @@ "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!": "Uxolo ukuthi lokhu bekunzima. Ukumepha izingozi kanye nezindawo ongathola kuzo ukwesekwa kungaba nzima futhi kuhlukumeze emoyeni. Kuyasiza ngempela ukugcina ingane yakho iphephile!", "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?": "Uxolo ukuthi akuhambanga kahle. Lokhu akulula ukukwenza. Phinda uzame ukuhlala phansi nixoxisane nengane yakho futhi. Okunye, ingabe ukhona omunye umuntu ingane yakho emethembayo ongahlanganyela nawe engxoxweni yakho nengane yakho?", "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.": "Siyajabula ukuzwa ukuthi kuhambe kahle! Ukuthola imiphumela emihle kusiza ingane ukuthi iziphathe kahle futhi kwenza umndeni ube nokuthula.", - "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Siyajabula ukuzwa ukuthi kuhambe kahle! Lapho ingane yakho ifunda ukuxazulula izinkinga, ingasebenzisa lelo khono impilo yayo yonke. Isipho esihle kangaka!" + "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!": "Siyajabula ukuzwa ukuthi kuhambe kahle! Lapho ingane yakho ifunda ukuxazulula izinkinga, ingasebenzisa lelo khono impilo yayo yonke. Isipho esihle kangaka!", + "My Tips": "Amacebiso Ami", + "**My Tips** in the @global.parent_centre": "**Amathiphu ami** ku-@global.parent_centre", + "Essential Tools": "Amathuluzi Abalulekile", + "**Essential Tools** in the @global.parent_centre": "**Amathuluzi abalulekile** ku-@global.parent_centre", + "**Customise @global.parent_app** in the @global.parent_centre": "**Khetha ngokwezifiso zakho @global.parent_app** ku-@global.parent_centre", + "Customise Again": "Phinda Uhlele Ngendlela Oyithandayo", + "Relax & Activities": "Ukuphumula kanye Nemisebenzi", + "under **Relax & Activities** in the @global.parent_centre": "ngaphansi **Kokuphumula neMisebenzi** ku- @global.parent_centre", + "Help": "Usizo", + "**Help** in the @global.parent_centre": "**Usizo** ku- @global.parent_centre", + "Technical Support": "Usizo Lwezobuchwepheshe", + "**Technical Support** in the @global.parent_centre": "**Ukwesekwa ngokobuchwepheshe** ku-@global.parent_centre", + "Coping with @global.covid": "Ukumelana ne- @global.covid", + "**Coping with @global.covid** in the @global.parent_centre": "**Ukumelana ne @global.covid** ku- @global.parent_centre", + "Coping with grief": "Ukumelana nosizi", + "**Coping with grief** in the @global.parent_centre": "**Ukumelana nosizi** ku- @global.parent_centre", + "Message Archive": "Indawo Okugcinwa Kuyo Imiyalezo", + "**Message Archive** in the @global.parent_centre": "**Indawo egcine imiyalezo** ku- @global.parent_centre", + "Support Contacts": "Izinombolo zalapho ungathola ukwesekwa khona", + "**Support Contacts** in the @global.parent_centre": "**Labo abangakweseka** ku- @global.parent_centre", + "Evidence Base": "Isisekelo Sobufakazi", + "**Evidence Base** in the @global.parent_centre": "**Isisekelo sobufakazi** ku- @global.parent_centre", + "Quick pause": "Ikhefu elisheshayo", + "Power of three": "Amandla abantu abathathu", + "One thing today": "Into eyodwa namuhla", + "Breathe to three": "Phefumula izikhathi ezintathu", + "In and out": "Udonse umoya uphinde uwukhiphe", + "Think about today": "Cabanga ngosuku lwanamuhla", + "Pause to respond": "Thatha ikhefu ngaphambi kokuphendula", + "Small things": "Izinto ezincane", + "Body scan": "Ukuhlola umzimba", + "Feel the ground": "Yizwa izinyawo zithinte phansi", + "Counting sounds": "Ukubala imisindo", + "Feel your feeling": "Yizwa imizwa yakho", + "Your song": "Ingoma yakho", + "Ground & gratitude": "Phansi kanye nokubonga", + "Notice how you feel": "Qaphela indlela ozizwa ngayo", + "Pause power": "Amandla ekhefu", + "Praise yourself": "Zincome", + "Taking care of yourself": "Zinakekele", + "Take a pause": "Thatha ikhefu", + "Physical activity": "Ukuvocavoca umzimba", + "List of things": "Uhlu lwezinto", + "Connect": "Xhumana", + "Prevent anger": "Gwema ulaka", + "Angry? Take a break": "Uthukuthele? Thatha ikhefu", + "It is hard to find time to have fun with your teenager.": "Kunzima ukuthola isikhathi sokuzijabulisa nengane yakho eyevile eminyakeni eyishumi nambili.", + "In our busy lives it’s hard to focus on the positive.": "Ekuphileni kwethu okumatasa kunzima ukugxila kokuhle.", + "How many days in the past week have you praised your teen?": "Zingaki izinsuku esontweni elidlule oye wancoma ngazo ingane yakho eyevile eminyakeni eyishumi nambili?", + "This is a very stressful time for families.": "Lesi yisikhathi esicindezela kakhulu emindenini.", + "How many days in the past week did you feel very stressed as a parent/caregiver?": "Zingaki izinsuku esontweni elidlule ozizwe ngazo ucindezeleke kakhulu njengomzali/njengomnakekeli?", + "Sometimes our children make us really upset.": "Ngezinye izikhathi izingane zethu zisithukuthelisa kakhulu.", + "How many days in the past week did you shout, scream or yell at your teen?": "Zingaki izinsuku phakathi nesonto elidlule lapho khona uye wamemeza, waklabalasa noma wathethisa ingane yakho eyevile eminyakeni eyishumi nambili?", + "How many days in the past month (30 days) did you run out of money to pay for food?": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) oye waphelelwa kuzo yimali yokuthenga ukudla?", + "It is so stressful when children misbehave.": "Kucindezela kakhulu lapho izingane zingalaleli.", + "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?": "Zingaki izinsuku kulelisonto eledlulile othe wajezisa izingane ngokuzishaya ngoswazi noma ibhande noma ezinqeni noma ngesandla noma into ethile efana nenduku noma nebhande?", + "It’s hard to keep track of your teenagers when they are becoming independent.": "Kunzima ukulandelela okwenziwa yizingane zakho njengoba ziqala ukuzimela.", + "How many days in the past week did you know what your teen was doing and who they were with?": "Zingaki izinsuku esontweni elidlule obuwazi ngazo ukuthi ingane yakho eyevile eminyakeni eyishumi nambili yenzani nokuthi ibinobani?", + "Days in the past week": "Izinsuku esontweni elidlule", + "We all want to keep our children safe.": "Sonke sifuna ukugcina izingane zethu ziphephile.", + "Days in the past month": "Izinsuku enyangeni edlule", + "Welcome and Self-Care": "Ukwamukelwa Nokuzinakekela", + "**Welcome and Self-Care** workshop": "Ukuqeqeshelwa **Ukwamukela kanye Nokuzinakekela**", + "Self-Care": "Ukuzinakekela", + "How to do self-care": "Indlela yokuzinakekela", + "One-on-One Time": "Isikhathi Sokuthi Nibe Nobabili Ndawonye", + "**One-on-One Time** workshop": "Ukuqeqeshelwa **Isikhathi Sokuthi Nibe Babili**", + "How to spend one-on-one time": "Indlela yokuchitha isikhathi ninobabili", + "Praise": "Ncoma", + "**Praise** workshop": "Ukuqeqeshelwa **Ukuncoma**", + "How to praise": "Indlela yokuncoma", + "Positive Instructions": "Imiyalelo emihle", + "**Positive Instructions** workshop": "Ukuqeqeshelwa **Imiyalelo emihle**", + "How to give positive instructions": "Indlela yokunikeza imiyalelo emihle", + "Managing Stress": "Ukulawula ingcindezi", + "**Managing Stress** workshop": "Ukuqeqeshelwa **Ukulawula Ingcindezi**", + "How to manage stress": "Indlela yokulawula ingcindezi", + "Family Budgets": "Isabelomali Somndeni", + "**Family Budgets** workshop": "Ukuqeqeshelwa **Isabelomali Somndeni**", + "How to budget & save": "Indlela yokwenza isabelomali kanye nokonga", + "Rules": "Imithetho", + "**Rules** workshop": "Ukuqeqeshelwa **Imithetho**", + "How to create rules": "Indlela yokubeka imithetho", + "Calm Consequences": "Imiphumela Eyethulwa Ngomoya Ozolile", + "**Calm Consequences** workshop": "Ukuqeqeshelwa **Imiphumela Eyethulwa Ngomoya ozolile**", + "How to give calm consequences": "Indlela yokwethula imiphumela ngomoya ozolile", + "Problem Solving": "Ukuxazulula Inkinga", + "**Problem Solving** workshop": "Ukuqeqeshelwa **Ukuxazulula Inkinga**", + "How to solve problems": "Indlela yokuxazulula izinkinga", + "Teen Safety": "Ukuphepha Kwentsha", + "**Teen Safety** workshop": "Ukuqeqeshelwa **Ukuphepha Kwentsha**", + "How to keep your teen safe": "Indlela yokugcina ingane yakho iphephile", + "Dealing with Crisis": "Ukubhekana Nezinkinga", + "**Dealing with Crisis** workshop": "Ukuqeqeshelwa **Ukubhekana Nezinkinga**", + "How to deal with crisis": "Indlela yokubhekana nezinkinga", + "Celebration and Next Steps": "Ukubungaza kanye Nezinyathelo Ezilandelayo", + "**Celebration and Next Steps** workshop": "Ukuqeqeshelwa **Ukubungaza kanye Nezinyathelo Ezilandelayo**", + "How to support each other": "Indlela yokusekelana", + "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.": "Sawubona mzali othandekayo, khumbula ukuzinakekela - kuzosiza wena nomndeni wakho! Thola amacebiso nokuningi kwi @global.parent_app.", + "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.": "Sawubona mzali othandekayo! Khumbula, ungathola amacebiso amaningi awusizo kwi @global.parent_app.", + "Hi great parent! @global.parent_app is here to support you. Check it out now!": "Sawubona mzali othandekayo! i-@global.parent_app ikhona ukukusekela. Ibheke manje!", + "Welcome to @global.parent_app. Click here to start your journey!": "Siyakwamukela ku@global.parent_app. Chofoza lapha ukuze uqale uhambo lwakho!", + "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.": "Sawubona! Ingabe konke kuhamba KAHLE? Kubonakala sengathi muva nje awuyivulanga i-@global.parent_app. Kungani ungayizami? Izigidi zabazali zithole ewusizo la mathuluzi. Sisekhona lapha ukuba sikusekele.", + "@global.parent_app misses you! There is a lot to explore. We are still here to support you.": "i-@global.parent_app iyakukhumbula! Kuningi ongakuhlola. Sisekhona lapha ukuba sikusekele.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuze ulungiselele ingane yakho ukuthi iphumelele empilweni.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuqinisa ubudlelwane nengane yakho!", + "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!": "Sithembe ukuthi uzizwa KAHLE. Ukuba umzali kunzima, kodwa usenesikhathi sokuqala kabusha nomntwana wakho. Sekuyatholakala ukuqeqeshwa kwakho kokuqala kokuba umzali! Chofoza lapha ukuze uqale uhambo lwakho lwe @global.parent_app!", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba wumzali - sebenzisa i-@global.parent_app yabazali ukuze uzisakale ukulawula ingcindezi.", + "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.": "Sawubona futhi! Awukaphelewa isikhathi ukuthi usebenzise i-@global.parent_app bese uthola ukusekelwa okuqhubekayo njengo umzali. Kungani ungakuzami lapho usendleleni eya emsebenzini noma uma upheka? Izigidi zabazali ziwathola ewusizo amathuluzi ethu.", + "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuze ikusize ulawule indlela umntwana wakho aziphatha ngayo.", + "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Sawubona @fields.user_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", + "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.": "Sawubona @fields.group_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", + "You've put so much effort into being a better parent. You are loved and appreciated!": "Usuzikhandlile ekutheni ube umzali oqotho. Uyathandwa futhi uyabongwa!", + "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!": "Siyabonga ngokuzinikela ekukhuliseni abantwana.\n\nIkulungele i-@data.workshop.w_1on1.in_text_title yakho!", + "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.": "Ukuchitha isikhati nomntwana wakho kuyasiza ekwakheni ukuthembana.\n\nUkuze ubone imiphumela emihle kakhulu, qhubeka nohambo lwakho ne- @global.parent_app.", + "This week is about YOU! Treat yourself well. You deserve it!": "Leliviki lingawe. Ziphathe kahle. Kukufanele!", + "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!": "Qala isifundo esha kusasa ku- @global.parent_app. Uzobona imiphumela emihle kakhulu!", + "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!": "Khumbula ukutshela abalingane bakho be- @global.parent_app ngale app. Ningaqala ukwenza i- @global.parent_app ndawonye kusasa!" } \ No newline at end of file diff --git a/packages/app-data/translations_source/from_translators/translated.es_sp.json b/packages/app-data/translations_source/from_translators/translated.es_sp.json deleted file mode 100644 index fde08b9893..0000000000 --- a/packages/app-data/translations_source/from_translators/translated.es_sp.json +++ /dev/null @@ -1,242 +0,0 @@ -[ - { - "SourceText": "Example Language Template", - "text": "Plantilla de Ejemplo de Idioma", - "type": "template" - }, - { - "SourceText": "This is a default text that needs to be translated", - "text": "Esto es un texto predeterminado que necesita ser traducido", - "type": "template" - }, - { - "SourceText": "How are you feeling today?", - "text": "¿Cómo te sientes hoy?", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is happy, the first option.", - "text": "Esta es la respuesta predeterminada si la respuesta es contento, la primera opción.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is ok, the second option.", - "text": "Esta es la respuesta predeterminada si la respuesta es normal, la segunda opción.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is sad, the third option.", - "text": "Esta es la respuesta predeterminada si la respuesta es triste, la tercer opción.", - "type": "template" - }, - { - "SourceText": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "text": "El campo determinado por medio del grupo radial es @local.radio_group_field_name y su valor es @fields.@local.radio_group_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.radio_group_field_name\n @local.radio_group_field_name" - }, - { - "SourceText": "Select one of the following options:", - "text": "Selecciona una de las siguientes opciones:", - "type": "template" - }, - { - "SourceText": "This is the first default option for the combo box", - "text": "Esta es la primera opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "This is the second default option for the combo box", - "text": "Esta es la segunda opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "This is the third default option for the combo box", - "text": "Esta es la tercer opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "The option selected was @local.combo_box.", - "text": "La opción seleccionada fue @local.combo_box.", - "type": "template", - "note": "The string @local.combo_box should not be translated." - }, - { - "SourceText": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "text": "El campo determinado por medio de la caja de combinaciones es @local.combo_box_field_name y su valor es @fields.@local.combo_box_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.combo_box_field_name\n @local.combo_box_field_name" - }, - { - "SourceText": "This is a modified text that needs to be translated.\n\nThis is a nested text.", - "text": "Este es un texto modificado que necesita ser traducido.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es alegre, la primera opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es normal, la segunda opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es triste, la tercer opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "Which of the following do you like the most (this is modified)?", - "text": "¿Cuál de los siguientes te gusta más? (esto está modificado)?", - "type": "template" - }, - { - "SourceText": "Cats (modified text in answer list)", - "text": "Gatos (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "Dogs (modified text in answer list)", - "text": "Perros (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "Chinchillas (modified text in answer list)", - "text": "Chinchillas (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "Value of the first debug variable", - "text": "Valor de la primera variable debug" - }, - { - "SourceText": "Title: @global.debug_variable_1", - "text": "Título: @global.debug_variable_1" - }, - { - "SourceText": "Text: @global.debug_variable_1", - "text": "Texto: @global.debug_variable_1" - }, - { - "SourceText": "This is a global variable set in a global", - "text": "Esta es una variable global determinada en una planilla global", - "type": "global" - }, - { - "SourceText": "This is a field set by default", - "text": "Este es un campo con valor predeterminado", - "type": "global" - }, - { - "SourceText": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Plantilla estandar

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Esta es una planilla estandar que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Plantilla Anidada

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Esta es una planilla anidada que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción. Esto nos permitirá verificar que el sistema multilingual funciona cuando se anida.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Componente para traducir

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que requiere ser traducido: el marcador de posición u la opción seleccionada deben ser traducidos

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Component que no debe ser traducido

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que esta excluído de la traducción. El texto del botón debería mantenerse como Pop-up 1.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "Example Data List Title 1", - "text": "Ejemplo 1 de Título de Listado de Datos", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the first data row.", - "text": "Este texto esta cargado por medio de la primera fila de datos.", - "type": "data_list" - }, - { - "SourceText": "Example Data List Title 2", - "text": "Ejemplo 2 de Título de Listado de Datos", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the second data row.", - "text": "Este texto esta cargado por medio de la segunda fila de datos.", - "type": "data_list" - }, - { - "SourceText": "This text should define a default value for a field", - "text": "Este texto debería definir el valor predeterminado de un campo", - "type": "data_list" - }, - { - "SourceText": "happy", - "text": "contento", - "type": "template" - }, - { - "SourceText": "ok", - "text": "bien", - "type": "template" - }, - { - "SourceText": "sad", - "text": "triste", - "type": "template" - }, - { - "SourceText": "awesome parent", - "text": "Padre asombroso", - "type": "template" - }, - { - "SourceText": "Audio message", - "text": "Mensaje de audio", - "type": "template" - }, - { - "SourceText": "@global.language_global_1: \"text\"", - "text": "@global.language_global_1: \"texto\"", - "type": "template" - }, - { - "SourceText": "@global.language_global_2: \"text\"", - "text": "@global.language_global_2: \"texto\"", - "type": "template" - }, - { - "SourceText": "@global.language_global_1: text", - "text": "@global.language_global_1: texto", - "type": "template" - }, - { - "SourceText": "@global.language_global_2: text", - "text": "@global.language_global_2: texto", - "type": "template" - } -] diff --git a/packages/app-data/translations_source/from_translators/translated.tz_sw.json b/packages/app-data/translations_source/from_translators/translated.tz_sw.json index 7ff8eb1667..9073fdd6d5 100644 --- a/packages/app-data/translations_source/from_translators/translated.tz_sw.json +++ b/packages/app-data/translations_source/from_translators/translated.tz_sw.json @@ -1,11282 +1,12938 @@ [ { - "SourceText": "Home Practice", - "text": "Zoezi la Nyumbani", + "SourceText": "Your data is important to us. This @global.privacy_policy for @global.app_id (‘@global.parent_app’ or ‘the app’) sets out our policies for the collection, use, and disclosure of personal information in the use of @global.parent_app.", + "text": "Data yako ni muhimu kwetu. Hii @global.privacy_policy for @global.app_id (‘@global.parent_app’ ‘au programu’) huweka bayana sera zetu za ukusanyaji, matumizi na ufichuaji wa taarifa binafsi katika matumizi ya @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.app_id\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Matendo madogo, matokeo makubwa! Wazazi wanaofanyia kazi mazoezi ya nyumbani waliyopata kwenye warsha hupata matokeo mazuri zaidi.", + "SourceText": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme, hosted by UNICEF and designed for parents and caregivers of adolescents aged 10 to 17 years.", + "text": "@global.parent_app ni toleo bure la programu tumishi ya Parenting for Lifelong Health for Parents and Teens inayosimamiwa na UNICEF na iliyoundwa kwa ajili ya wazazi na walezi wa vijana walio na umri wa miaka 10 hadi 17.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Wiki ijayo, utashirikisha kikundi chako jinsi gani zoezi la nyumbani lilivyoenda. Pia mnaweza kusaidiana na kukumbushana na wengine wiki hii.", + "SourceText": "Please read this @global.privacy_policy carefully. By downloading or using the app, you agree to the collection and use of information in relation to this policy. We will not use or share your information with anyone except as described in this @global.privacy_policy.", + "text": "Tafadhali soma hii @global.privacy_policy kwa umakini. Kwa kupakua au kutumia programu tumishi hii, unakubali ukusanyaji na matumizi ya taarifa kuhusiana na sera hii. Hatutatumia au kushirikisha taarifa zako na mtu yeyote isipokuwa kama ilivyoelezwa katika sera hii ya @global.privacy_policy.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.privacy_policy" }, { - "SourceText": "How did it go?", - "text": "Je, liliendaje?", + "SourceText": "The terms used in this @global.privacy_policy have the same meanings as in our @global.terms_and_conditions, which are accessible within the app, unless otherwise defined in this @global.privacy_policy.", + "text": "Masharti yanayotumika katika @global.privacy_policy yana maana sawa na yaliyopo katika @global.terms_and_conditions zetu, ambazo zinaweza kufikiwa ndani ya programu tumishi, isipokuwa kama imefafanuliwa vinginevyo katika @global.privacy_policy.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.terms_and_conditions\n@global.privacy_policy" }, { - "SourceText": "talk to their teens about how they feel", - "text": "kuzungumza na vijana wao kuhusu wanavyohisi", + "SourceText": "1. What information does the app collect about you and how do we use it?", + "text": "1. Programu tumishi inakusanya taarifa gani kukuhusu na tunaitumiaje taarifa hiyo?", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "kuzungumza na kijana wako kuhusu unavyohisi", + "SourceText": "Personal Data", + "text": "Data Binafsi", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "Je, ulikumbana na changamoto zozote ulipojaribu @local.hp_description_second_singular?", + "SourceText": "For the purpose of this @global.privacy_policy, “personal data” means any information that enables us to identify an individual, directly or indirectly, by reference to an identifier such as email, name, @global.parent_app identification number, location data, or one or more factors specific to the individual. While using our app, we may require you to provide us with other personally identifiable information.", + "text": "Kwa madhumuni ya @global.privacy_policy, \"data binafsi\" inamaanisha maelezo yoyote yanayotuwezesha kumtambua mtu, moja kwa moja au isivyo moja kwa moja, kwa kurejelea utambulisho kama vile barua pepe, jina, nambari ya utambulisho ya @global.parent_app, data ya eneo, au sababu moja au zaidi maalum kwa mtu binafsi. Tunapotumia programu tumishi yetu, tunaweza kukuhitaji utupe taarifa nyingine zinazoweza kukutambulisha.", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.parent_app" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Je, jambo gani lilikuwia gumu ulipojaribu @local.hp_description_second_singular?", + "SourceText": "Specifically, this is data regarding chosen username, as well as gender. All data collected is linked to your unique @global.parent_app identification number. The @global.parent_app identification number produced within the app may also be used to link with any out of app surveys conducted.", + "text": "Hasa, hizi ni taarifa zinazohusisha jina lililochaguliwa pamoja na jinsia. Taarifa zote zilizokusanywa zitaunganishwa na namba yako ya kipekee ya utambulisho @global.parent_app. namba yako ya utambulisho ya @global.parent_app itatolewa kupitia programu tumishi, pia itatumika kuunganisha na tafiti nyingine zitakazo fanyika nnje ya programu tumishi.", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Sorry we missed this!", - "text": "Samahani, hatukuiona hii!", + "SourceText": "We process your data to provide parenting support to you, communicate when you contact us, for security reasons as well as research purposes (see section ‘Information Sharing’). The primary research purpose includes optimising engagement of a digital parenting intervention (use of @global.parent_app) to prevent violence against adolescents. During the course of research, the study team may use aggregated and anonymised data from the app for further research projects. Finally, please note that we may process your data without your knowledge or consent, where this is required or permitted by law.", + "text": "Tunachakata taarifa zako ili kukupa usaidizi wa malezi, unapowasiliana nasi, kwa sababu za usalama na pia madhumuni ya utafiti (angalia sehemu ya ‘Kushirikishana Taarifa’). Madhumuni ya kimsingi ya utafiti ni pamoja na kuboresha ushiriki katika malezi kwa njia ya kidijitali (matumizi ya @global.parent_app) ili kuzuia unyanyasaji dhidi ya vijana. Wakati wa utafiti, timu ya utafiti inaweza kutumia taarifa zilizojumlishwa na zisizokuwa na utambulisho kutoka katika programu tumishi kwa miradi zaidi ya utafiti. Hatimaye, tafadhali kumbuka kwamba tunaweza kuchakata taarifa yako bila ujuzi au idhini yako, ambapo hii inahitajika au inaruhusiwa na sheria.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Do you want to share it with us?", - "text": "Je, ungependa kutushirikisha na sisi?", + "SourceText": "The processing of your personal data is primarily based on:", + "text": "Uchakataji wa taarifa yako ya kibinafsi unategemea kimsingi:", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Asante kwa kutushirikisha changamoto yako! Tutatumia mrejesho huu ili kuboresha @global.parent_app.", + "SourceText": "The @global.parent_app team has legitimate interests in carrying out research activities, under Art. 6(1)(f) GDPR, regarding the sharing of limited details related to how you use the app; and", + "text": "Timu ya @global.parent_app ina maslahi halali katika kutekeleza shughuli za utafiti, chini ya Sanaa. 6(1)(f) GDPR, kuhusiana na kushirikisha maelezo machache yanayohusiana na jinsi unavyotumia programu tumishi; na", "type": "template", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Tunasikitika kusikia kuwa vidokezo hivi havikukusaidia.", + "SourceText": "Your consent, under Art. 6(1)(a) GDPR, regarding the email address you provide at the point of Google Sign-in and the sharing of answers you may provide to in-app questions (those involving as stated chosen username and gender which are entirely optional).", + "text": "Idhini yako, chini ya Sanaa. 6(1)(a) GDPR, kuhusiana na anuani ya barua pepe unayotoa wakati wa Kuingia kwa Kutumia Google na kushiriki majibu ambayo unaweza kutoa kwa tafiti za ndani ya programu tumishi (ambazo ni za hiari kabisa).", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "Je, unataka kutushirikisha kitu gani unafikiri kingekusaidia?", + "SourceText": "Log Data", + "text": "Data ya Kumbukumbu", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Asante sana kwa kushirikisha! Wewe ni mzazi mzuri sana kwa kujaribu kutumia muda wa pamoja na kijana wako. Kufanya hivi kunaleta mabadiliko. Endelea na kazi nzuri, na kumbuka, niko hapa kusaidia!", + "SourceText": "Whenever you use our app, we collect data and information (through third party services) on your phone called Log Data. This Log Data includes information such as a truncated device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilising our app, the time, date and your intentions within the app (which include but are not limited to any app buttons clicked or pages visited.)", + "text": "Wakati wowote unapotumia programu yetu, tunakusanya data na taarifa (kupitia huduma za watu wengine) kwenye simu yako inayoitwa Data ya Kumbukumbu. Data hii ya Kumbukumbu inajumuisha maelezo kama vile anuani ya Itifaki ya kifaa cha Mtandao kilichopunguzwa (\"IP\"), jina la kifaa, toleo la mfumo wa uendeshaji, usanidi wa programu tumishi unapotumia programu tumishi yetu, saa, tarehe na asili ya matumizi yako ya programu tumishi.)", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Hapa kuna ujuzi wa kujichukulia kwa wiki hii!\nutumie nyumbani na unaweza kuupata wakati wowote kwene maktaba ya mzazi @global.parent_centre.", + "SourceText": "Cookies", + "text": "Vidakuzi", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Chukua Pumziko Pamoja", + "SourceText": "Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.", + "text": "Vidakuzi ni faili zilizo na kiasi kidogo cha data ambazo hutumiwa kama vitambulishi vya kipekee visivyojulikana. Hizi hutumiwa kwa kivinjari chako kutoka kwa tovuti unazotembelea na kuhifadhiwa kwenye kumbukumbu ya ndani ya kifaa chako.", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Chukua pumziko", + "SourceText": "This app does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. In particular, the app integrates GlitchTip and Matomo analytics as well as Firebase authentication software.", + "text": "Programu tumishi hii haitumii \"vidakuzi\" hivi kwa uwazi. Hata hivyo, programu tumishi hii inaweza kutumia msimbo wa watu wengine na maktaba zinazotumia \"vidakuzi\" kukusanya maelezo na kuboresha huduma zao. Haswa, programu tumishi inaunganisha uchanganuzi wa Matomo na programu ya uthibitishaji wa kanzidata.", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "Hebu tufanye shughuli moja fupi ya kuchukua pumziko- itachukua chini ya dakika 1 na utajiskia vizuri zaidi.", + "SourceText": "Legal", + "text": "Kisheria", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Ongeza shughuli hii kwenye @global.my_relaxes", + "SourceText": "The information that we request will be retained by us and used as described in this @global.privacy_policy.", + "text": "Taarifa tunazoomba tutazihifadhi na kuzitumia kama ilivyoelezwa katika @global.privacy_policy.", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "The string @global.privacy_policy should not be translated." }, { - "SourceText": "Listen and relax", - "text": "Sikiliza na chukua pumziko", + "SourceText": "Feedback Submissions", + "text": "Mawasilisho ya Maoni", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Soma na chukua pumziko", + "SourceText": "Your feedback on the app is important to us. We shall always anonymise your personal information when sharing and publishing your feedback verbatim more broadly.", + "text": "Maoni yako kuhusu programu tumishi hii ni muhimu kwetu. Daima tutaficha maelezo yako ya binafsi tunaposhiriki na kuchapisha maoni yako kwa upana zaidi.", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufanya uwe na furaha. Halafu vuta pumzi ndefu ili kujisikia vizuri.", + "SourceText": "Aggregate Data", + "text": "Taarifa ya Jumla", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "Karibu @fields.user_name", + "SourceText": "Your data is important to the @global.parent_app team for broader research purposes. Aggregate data is always anonymised.", + "text": "Taarifa yako ni muhimu kwa timu ya @global.parent_app kwa madhumuni ya utafiti mpana. Taarifa ya jumla haitambuliki kila wakati.", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "It's great to see you again!", - "text": "Tunafurahi sana kukuona tena!", + "SourceText": "Push notifications", + "text": "Taarifa za kushinikiza", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "Ngoja tuone wiki hii imeendaje.", + "SourceText": "You may opt out of push notifications which will be set up to inform you of certain account features or other notifications.", + "text": "Unaweza kuchagua kutopokea arifa za kushinikiza ambazo zitazowekwa kukujulisha kuhusu vipengele fulani vya akaunti au arifa nyingine.", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Wiki hii ulifanya...", + "SourceText": "2. Information Sharing", + "text": "2. Kupeana Taarifa", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "Unaonyesha kujitoa kwa dhati kama mzazi na kujithamini wewe mwenyewe.\n\nWewe ni mtu mzuri sana.", + "SourceText": "Limited internal staff to IDEMS may have access to personal data collected via the app as well as log data, as necessary to perform their duties regarding the operation of the app. These data will only be accessed on a need-to-know basis, and all team members with access to the data are bound to confidentiality.", + "text": "Wafanyakazi wachache wa ndani wa IDEMS wanaweza kufikia data binafsi iliyokusanywa kupitia programu tumishi, inapohitajika ili kutekeleza majukumu yao kuhusu uendeshaji wa programu. Taarifa hizi zitafikiwa tu kwa msingi wa kuhitaji kujua, na timu nzima inayoweza kufikia taarifa hizo wanalazimika kuwa na siri.", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "Angalia Pamoja", + "SourceText": "You agree that your personal information may be shared with third parties such as researchers and partners involved in the improvement or implementation of the app including those outside your country. Prior to the disclosure of information with research partners we will make anonymous to the extent possible and where appropriate, information such as chosen username and email address (where collected). In reading and accepting this @global.privacy_policy , you permit us to use your anonymized data in published research.", + "text": "Unakubali kwamba maelezo yako ya binafsi yanaweza kushirikiwa na washirika wengine kama vile watafiti na wabia wanaohusika katika uboreshaji au utekelezaji wa programu tumishi ikiwa ni pamoja na wale walio nje ya nchi yako. Kabla ya kufichuliwa kwa habari na wabia wa utafiti, tutafanya bila utambulisho kwa kadiri tuwezavyo na inapofaa taarifa kama vile jina la mtumiaji lilochaguliwa na anwani ya barua pepe (zinapokusanywa). Katika kusoma na kukubali hii @global.privacy_policy, unaturuhusu kutumia data yako isiyojulikana katika utafiti uliochapishwa.", "type": "template", - "note": "" + "note": "The string @global.privacy_policy should not be translated." }, { - "SourceText": "Let's watch a video together!", - "text": "Hebu tuangalie video pamoja!", + "SourceText": "You agree that we may transfer your personal information outside your country, for example, to administer cloud services. We will ensure that any country, company or person that we pass your personal information to agrees to treat your information with the same level of protection as we are obliged to.", + "text": "Unakubali kwamba tunaweza kuhamisha taarifa yako binafsi nje ya nchi yako, kwa mfano, ili kusimamia huduma za uhifadhi mtandaoni. Tutahakikisha kwamba nchi, kampuni yooyote au mtu yeyote ambaye tunampatia taarifa zako za binafsi anakubali kushughulikia maelezo yako kwa kiwango sawa cha ulinzi tunachowajibika.", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Angalia", + "SourceText": "3. Third Party Service Providers and Websites", + "text": "3. Watoa Huduma na Tovuti za Wahusika wengine", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "Ngoja tuangalie video!", + "SourceText": "The app does use third party services that may collect information used to identify you. We do so for the following reasons:\n* To facilitate our app\n* To provide the app on our behalf\n* To perform app-related services; or\n* To assist us in analysing how our app is used.", + "text": "Programu tumishi hii haitumii huduma za watu wengine ambazo zinaweza kukusanya taarifa zinazotumiwa kukutambulisha. Tunafanya hivyo kwa sababu zifuatazo:\n* Ili kuwezesha programu tumishi yetu\n* Ili kutoa programu tumishi kwa niaba yetu\n* Kufanya huduma zinazohusiana na programu tumishi; au\n* Ili kutusaidia katika kuchanganua jinsi programu tumishi yetu inatumiwa.", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Tunafurahi kuwaona tena! Hebu tuanze na wimbo wa familia popote zilipo.", + "SourceText": "We want to inform users of this app that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.", + "text": "Tunataka kuwafahamisha watumiaji wa programu hii kwamba wahusika hawa wengine wanaweza kufikia Taarifa zako za Binafsi. Sababu ni kufanya kazi walizopewa kwa niaba yetu. Walakini, wanalazimika kutofichua au kutumia habari kwa madhumuni mengine yoyote.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "Twende polepole", + "SourceText": "Links to the privacy policies of third-party service providers used by the app:", + "text": "Viungo vya sera za faragha za watoa huduma wengine zinazotumiwa na programu tumishi hii:", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "Umemaliza kipindi cha wiki hii.", + "SourceText": "This app may contain links to other sites that are not covered by this @global.privacy_policy. If you click on a third-party link, you will be directed to that site. This @global.privacy_policy applies only to the processing of your information by this app. It does not address, and we are not responsible for, the privacy, information, or other practices of any third parties, including any third party operating any site or service to which this app links to.", + "text": "Programu tumishi hii inaweza kuwa na viungo vya tovuti zingine ambazo hazijashughulikiwa na @global.privacy_policy. Ukibofya kiungo cha mtu wa tatu, utaelekezwa kwenye tovuti hiyo. Hii @global.privacy_policy inatumika tu kwa uchakataji wa maelezo yako na programu tumishi hii. Haishughulikii, na hatuwajibikii, faragha, taarifa, au desturi nyingine za wahusika wengine, ikiwa ni pamoja na wahusika wengine wanaoendesha tovuti au huduma yoyote ambayo programu tumishi hii inaunganisha nayo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.privacy_policy" }, { - "SourceText": "See you soon.", - "text": "Tutaonana baadaye kidogo.", + "SourceText": "4. How long do we keep your data?", + "text": "4. Je, tunahifadhi data yako kwa muda gani?", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Zungumza Pamoja", + "SourceText": "We will only retain your personal information for as long as we need it to fulfil our purposes, including any relating to app services as well as legal, accounting, or reporting requirements.", + "text": "Tutahifadhi maelezo yako ya kibinafsi kwa muda tu tunapoyahitaji ili kutimiza madhumuni yetu, ikiwa ni pamoja na yoyote yanayohusiana na huduma za programu pamoja na mahitaji ya kisheria, uhasibu au kuripoti.", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Shirikishana mawazo, saidiana kila mmoja!", + "SourceText": "5. How do we keep your data secure?", + "text": "5. Je, tunawekaje data yako salama?", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "Jaribuni Pamoja", + "SourceText": "We value your trust in providing us your personal information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee its absolute security. We also reserve the right to the storage of your data on third party servers or databases outside of the listed @global.parent_app team (refer to the section on Third Party Service Providers and Websites). Therefore usage of the app is at your own risk.", + "text": "Tunathamini uaminifu wako kwa kutupa taarifa zako za kibinafsi, kwa hivyo tunajitahidi kutumia njia zinazokubalika kibiashara kuzilinda. Lakini kumbuka kuwa hakuna njia ya uwasilishaji kupitia mtandao, au njia ya uhifadhi wa kielektroniki ambayo ni salama na ya kuaminika kwa 100%, na hatuwezi kuhakikisha usalama wake kamili. Pia tunahifadhi haki ya kutunza taarifa yako kwenye kanzidata za watu wengine au kuhifadhi taarifa nje ya timu iliyoorodheshwa ya @global.parent_app. Kwa hivyo matumizi ya programu ni kwa taadhari yako mwenyewe.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's practice together.", - "text": "Tufanye mazoezi pamoja.", + "SourceText": "6. Children’s Privacy", + "text": "6. Faragha ya Watoto", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Zoezi la nyumbani husaidia kuboresha maisha ya familia zetu kuwa mazuri zaidi. Lakini mara nyingi huleta changamoto.\n\nNgoja tushirikishane mafanikio na changamoto zetu, na kusaidiana kupata mawazo mapya ya kujaribu!", + "SourceText": "This app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. As per our Terms and Conditions, In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.", + "text": "Programu tumishi hii haijalengwa mtu yeyote aliye na umri wa chini ya miaka 18. Hatukusanyi taarifa zinazoweza kumtambulisha mtu binafsi kutoka kwa watu walio chini ya umri wa miaka 18 kwa makusudi. Huwatuna kusanya taarifa kuhusu watoto chini ya miaka 18 maana programu tumishi imelenga walezi wa watoto wenye umri miala 10 - 17 ambao wanaweza kuulizwa maswali kuhusu tabia za watoto wao. Iwapo tutagundua kuwa mtu aliye na umri wa chini ya miaka 18 ametupa taarifa za binafsi, tutafuta data hii mara moja kutoka kwa seva zetu. Ikiwa wewe ni mzazi au mlezi na unafahamu kwamba mtoto wako ametupa taarifa za kibinafsi, tafadhali wasiliana nasi ili tuweze kuchukua hatua zinazohitajika.", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", + "SourceText": "7. Your rights", + "text": "7. Haki zako", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Mfano wa majadiliano kutoka @data.workshop.w_1on1.title", - "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." - }, - { - "SourceText": "Start Positively Together", - "text": "Anzeni Vizuri Pamoja", + "SourceText": "Under certain circumstances, by law you have the right to:\n* Request access to your data (commonly known as a \"subject access request\"). This enables you to receive a copy of your data and to check that we are lawfully processing it.\n* Request correction of your data. This enables you to ask us to correct any incomplete or inaccurate information we hold about you.\n* Request erasure of your data. This enables you to ask us to delete or remove your data under certain circumstances, for example, if you consider that there is no good reason for us continuing to process it. You also have the right to ask us to delete or remove your data where you have exercised your right to object to processing (see below).\n* Object to processing of your data where we are relying on our legitimate interests (or those of a third party) and there is something about your particular situation which makes you want to object to processing on this ground.\n* Request the restriction of processing of your data. This enables you to ask us to suspend the processing of your data, for example if you want us to establish its accuracy or the reason for processing it.\n* Request the transfer of your data to another party.", + "text": "Chini ya hali fulani, kisheria una haki ya:\n* Omba ufikiaji wa data yako (inayojulikana kama \"ombi la ufikiaji wa mada\"). Hii hukuwezesha kupokea nakala ya data yako na kuangalia kama tunaichakata kihalali.\n* Omba marekebisho ya data yako. Hii hukuwezesha kutuuliza kusahihisha taarifa yoyote isiyo kamili au isiyo sahihi tunayoshikilia kukuhusu.\n* Omba kufutwa kwa data yako. Hii hukuwezesha kutuomba kufuta au kuondoa data yako chini ya hali fulani, kwa mfano, ikiwa unaona kuwa hakuna sababu nzuri ya sisi kuendelea kuichakata. Pia una haki ya kutuomba kufuta au kuondoa data yako ambapo umetumia haki yako ya kupinga kuchakatwa (tazama hapa chini).\n* Inapinga kuchakata data yako ambapo tunategemea maslahi yetu halali (au yale ya wahusika wengine) na kuna kitu kuhusu hali yako mahususi ambacho kinakufanya utake kukataa kuchakatwa kwa msingi huu.\n* Omba kizuizi cha usindikaji wa data yako. Hii hukuwezesha kutuuliza tuahirishe uchakataji wa data yako, kwa mfano ikiwa unataka tubainishe usahihi wake au sababu ya kuichakata.\n* Omba uhamishaji wa data yako kwa chama kingine.", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "Karibuni @fields.group_name", + "SourceText": "Depending on the circumstances and the nature of your request it may not be possible for us to do what you have asked, for example, where there is a statutory or contractual requirement for us to process your data and it would not be possible to fulfil our legal obligations if we were to stop. Further information on your rights is available from the Information Commissioner’s Office (ICO).", + "text": "Kulingana na mazingira na aina ya ombi lako huenda isiwezekane kwetu kufanya ulichoomba, kwa mfano, pale ambapo kuna mahitaji ya kisheria au ya kimkataba ili sisi kuchakata data yako na haingewezekana kutimiza wajibu wetu. majukumu ya kisheria ikiwa tungeacha. Taarifa zaidi kuhusu haki zako zinapatikana kutoka Ofisi ya Kamishna wa Habari (ICO).", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Tunafurahi kukuona tena!\n\nHebu tuanze na kukuthamini wewe.", + "SourceText": "ICO", + "text": "ICO", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Peaneni zamu:\n* Shirikisha wengine: Je, unajisikiaje leo?\n* Msifie mtu kwenye kikundi chako kwa jambo alilofanya vizuri wiki hii!\n\nKumbukeni kwamba bila kujali mnavyojisikia, nyinyi kuwa hapa ni jambo zuri sana. Nyote mnastahili kusifiwa.", + "SourceText": "8. Removing the app", + "text": "8. Kuondoa programu tumishi", "type": "template", "note": "" }, { - "SourceText": "Ideas from other families:", - "text": "Mawazo kutoka familia nyingine:", + "SourceText": "We are sorry if you find our app no longer useful. Should you decide to remove our app, we may still retain some of your data (although anonymised) to troubleshoot, aid in investigations, comply with legal requirements or to add to our existing research data sets.", + "text": "Samahani ikiwa unaona programu tumishi yetu haina maana tena. Iwapo utaamua kuondoa programu tumishi yetu, bado tunaweza kuhifadhi baadhi ya data yako (ingawa hatujulikani) ili kutatua matatizo, kusaidia uchunguzi, kutii mahitaji ya kisheria au kuongeza kwenye seti zetu zilizopo za data za utafiti.", "type": "template", "note": "" }, { - "SourceText": "Question Time", - "text": "Muda wa Maswali", + "SourceText": "9. Changes to the @global.privacy_policy", + "text": "9. Mabadiliko ya @global.privacy_policy", "type": "template", - "note": "" + "note": "The string @global.privacy_policy should not be translated." }, { - "SourceText": "It's time for some questions!", - "text": "Sasa ni muda wa kuuliza maswali!", + "SourceText": "We may update our @global.privacy_policy from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.privacy_policy.", + "text": "Tunaweza kuboresha @global.privacy_policy mara kwa mara. Unaachilia haki yako ya kuarifiwa moja kwa moja kuhusu mabadiliko na unashauriwa kukagua ukurasa huu mara kwa mara kwa masasisho yoyote. Kuendelea kwako kutumia programu kunapendekeza ukubali masahihisho yajayo ya sera ya @global.privacy_policy.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.privacy_policy" }, { - "SourceText": "Listen Together", - "text": "Sikiliza Pamoja", + "SourceText": "If you have any questions or suggestions about our @global.privacy_policy, do not hesitate to contact us at apps@idems.international.", + "text": "Ikiwa una maswali au mapendekezo kuhusu @global.privacy_policy, usisite kuwasiliana nasi kwa apps@idems.international.", "type": "template", - "note": "" + "note": "The string @global.privacy_policy should not be translated." }, { - "SourceText": "Let's listen to an audio together!", - "text": "Hebu tusikilize pamoja!", + "SourceText": "This @global.privacy_policy page was based on a draft created at @local.link_10_1_text and modified/generated by @local.link_10_2_text.", + "text": "Ukurasa huu wa @global.privacy_policy ulitokana na rasimu iliyoundwa katika maandishi ya @local.link_10_1_ na kurekebishwa/kutolewa na @local.link_10_2_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@local.link_10_1_text\n@local.link_10_2_text" }, { - "SourceText": "Listen", - "text": "Sikiliza", + "SourceText": "1. User Agreement", + "text": "1. Mkataba wa Mtumiaji", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "Hebu tusikilize pamoja!", + "SourceText": "These @global.terms_and_conditions are an agreement between you and @global.app_id (‘@global.parent_app’ or ‘the app’) which furthermore sets out the rules for your use of @global.parent_app.", + "text": "Haya @global.terms_and_conditions ni makubaliano kati yako na @global.app_id (‘@global.parent_app’ au ‘programu’) ambayo zaidi ya hayo yanaweka sheria za matumizi yako ya @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.terms_and_conditions\n@global.app_id\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Kwanini @local.workshop_data.title?", + "SourceText": "@global.parent_app is a free app version of the Parenting for Lifelong Health for Parents and Teens programme designed for parents and caregivers of adolescents aged 10 to 17 years.", + "text": "@global.parent_app ni toleo la programu lisilolipishwa la mpango wa Uzazi kwa Afya ya Maisha Yote kwa Wazazi na Vijana iliyoundwa kwa ajili ya wazazi na walezi wa vijana waliobalehe walio na umri wa miaka 10 hadi 17.", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Hear Sbo's message", - "text": "Sikia ujumbe wa Sbo", + "SourceText": "Parenting for Lifelong Health (PLH) - was designed through a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa.", + "text": "Parenting for Lifelong Health (PLH) - ilitengenezwa kupitia ushirikiano wa wadau mbali mbali wa malezi ulimwenguni kutoka UNICEF, WHO na Chuo Kikuu cha Afrika ya Kusini na Uingereza, pamoja na taasisi zisizo za kiserikari za afrika na familia na vijana kote kote Afrika.", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Soma ujumbe wa Sbo", + "SourceText": "The digital @global.parent_app is brought to you by the collaboration of partners including University of Oxford, IDEMS International, University of Cape Town, National Institute for Medical Research - Mwanza Centre Tanzania, and Clowns Without Borders South Africa (‘the @global.parent_app team’).", + "text": "@global.parent_app inaletwa kwako kwa ushirikiano wa washirika wakiwemo Chuo Kikuu cha Oxford, IDEMS International, Chuo Kikuu cha Cape Town, Taasisi ya Kitaifa ya Utafiti wa Matibabu - Kituo cha Mwanza Tanzania, na Clowns Without Borders Afrika Kusini ('the @global.parent_app team').", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Today's steps", - "text": "Hatua za leo", + "SourceText": "Please read these @global.terms_and_conditions carefully. By downloading or using the app, you agree that you have read, understood, and accepted the @global.terms_and_conditions contained below.", + "text": "Tafadhali soma haya @global.terms_and_conditions kwa makini. Kwa kupakua au kutumia programu, unakubali kwamba umesoma, umeelewa, na umekubali @global.terms_and_conditions zilizo hapa chini.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.terms_and_conditions\n@global.terms_and_conditions" }, { - "SourceText": "Read Together", - "text": "Soma Pamoja", + "SourceText": "Your privacy is important to us – please also read our @global.privacy_policy, which will detail how we collect, store and use the information that you provide to us. By using @global.parent_app you are confirming to us that you are further agreeing to our @global.privacy_policy, as set out separately.", + "text": "\nFaragha yako ni muhimu kwetu - tafadhali soma pia sera yetu ya @global.privacy_policy, ambayo itaeleza kwa undani jinsi tunavyokusanya, kuhifadhi na kutumia maelezo ambayo unatupatia. Kwa kutumia @global.parent_app unatuthibitishia kuwa unakubali zaidi sera yetu ya @global.privacy_policy, kama ilivyowekwa kando.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.privacy_policy\n@global.parent_app\n@global.privacy_policy" }, { - "SourceText": "Let's read a story together!", - "text": "Hebu tusome simulizi pamoja!", + "SourceText": "2. Rules of Usage", + "text": "2. Kanuni za Matumizi", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "Tusome hadithi!", + "SourceText": "@global.parent_app is open source and therefore its source code is available on GitHub for the usage and adaption by the wider software community. Nevertheless, you are not allowed to modify the existing app as is or its contents or copy any @global.parent_app team trademarks. Whilst open source, you should not translate the app into other languages or make derivative versions without acknowledging the @global.parent_app team in your efforts. Attempts to obtain sensitive account information or other personal data is not permitted. You should also not falsely represent yourself in the use of the app, make wrongful claims of affiliations to the app or make misleading reports of app misconduct. Use of the app must not also be in breach of any applicable laws or regulations.", + "text": "@global.parent_app ni chanzo huria na kwa hivyo msimbo wake wa chanzo unapatikana kwenye GitHub kwa matumizi na urekebishaji na jumuiya pana ya programu tumishi. Hata hivyo, huruhusiwi kurekebisha programu iliyopo kama ilivyo au yaliyomo au kunakili alama za biashara za timu ya @global.parent_app. Ingawa ni chanzo huria, hupaswi kutafsiri programu katika lugha nyingine au kutengeneza matoleo mengine bila kutambua timu ya @global.parent_app katika juhudi zako. Majaribio ya kupata maelezo nyeti ya akaunti au taarifa nyingine ya binafsi hairuhusiwi. Pia hupaswi kujiwakilisha kwa uwongo katika matumizi ya programu, kutoa madai yasiyo sahihi ya ushirika na programu au kutoa ripoti za kupotosha za utovu wa nidhamu wa programu. Matumizi ya programu haipaswi pia kukiuka sheria au kanuni zozote zinazotumika. ", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Think Together", - "text": "Fikiria Pamoja", + "SourceText": "Finally this app is not targeted towards anyone under the age of 18. We do not knowingly collect personally identifiable information from individuals under 18. In the case we discover that an individual under 18 has provided us with personal information (such as gender / name or nickname), we will immediately delete this data from our servers. If you are a parent or guardian and are aware that your child has provided us with personal information, please contact us so that we will be able to undertake the necessary actions.", + "text": "Programu tumishi hii haijaleng mtu yeyote aliye na umri wa chini ya miaka 18. Hatukusanyi taarifa zinazoweza kumtambulisha mtu binafsi kutoka kwa watu walio chini ya umri wa miaka 18 kwa makusudi. Iwapo tutagundua kuwa mtu aliye na umri wa chini ya miaka 18 ametupa taarifa za binafsi (kama vile jinsia/ jina au jina la utani), tutafuta taarifa hii mara moja kutoka kwa kanzidata zetu. Ikiwa wewe ni mzazi au mlezi na unafahamu kwamba mtoto wako ametupa taarifa binafsi, tafadhali wasiliana nasi ili tuweze kuchukua hatua zinazohitajika.", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Sasa ni muda wa kufikiria pamoja!", + "SourceText": "3. Content Changes", + "text": "3. Mabadiliko ya Maudhui", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Fikiria", + "SourceText": "The @global.parent_app team is committed to ensuring that the app is as useful and user friendly as possible. For that reason, we reserve the right to make changes to the app which will be delivered through updates. At present the app is free of charge and our intention is for it to stay that way.", + "text": "Timu ya @global.parent_app imejitolea kuhakikisha kuwa programu ni muhimu na rahisi watumiaji iwezekanavyo. Kwa sababu hiyo, tunahifadhi haki ya kufanya mabadiliko kwenye programu ambayo yatawasilishwa kupitia masasisho. Kwa sasa programu haina malipo na nia yetu ni kukaa hivyo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "It's time to think!", - "text": "Ni muda wa kufikiria!", + "SourceText": "In the future it is possible that some services may be offered that would incur a cost. We will never charge you for the app or its services without clearly making known to you first any access charges applicable.", + "text": "Katika siku zijazo inawezekana kwamba huduma zingine zinaweza kutolewa ambazo zingesababisha gharama. Hatutakutoza kwa programu au huduma zake bila kukujulisha kwa uwazi kwanza ada zozote za ufikiaji zinazotumika.", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Kujifunza Pamoja", + "SourceText": "4. Intellectual property", + "text": "4. Miliki", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice together!", - "text": "Sasa ni muda wa kujifunza na kufanya mazoezi pamoja!", + "SourceText": "The app itself, the trademarks, copyright, database rights and other intellectual property rights related to it, belong to or are licensed to the various applicable collaborators of the @global.parent_app team (noting that code is covered under GPL 3 and content by CC BY). The use of names and emblems/logos of collaborating institutions are the exclusive property of those institutions and are protected under international and national laws. Unauthorised use is prohibited. They may not be copied or reproduced in any way without the prior written permission of said institution.", + "text": "Programu yenyewe, alama za biashara, hakimiliki, haki za hifadhidata na haki zingine za uvumbuzi zinazohusiana nayo, ni mali ya au imepewa leseni ya washiriki mbalimbali wanaohusika wa timu ya @global.parent_app (ikibainisha kuwa msimbo umejumuishwa chini ya GPL 3 na maudhui na CC KWA). Matumizi ya majina na nembo/nembo za taasisi shirikishi ni mali ya kipekee ya taasisi hizo na inalindwa chini ya sheria za kimataifa na kitaifa. Matumizi yasiyoidhinishwa ni marufuku. Haziwezi kunakiliwa au kunakiliwa kwa njia yoyote bila idhini ya maandishi ya taasisi hiyo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Learn", - "text": "Jifunze", + "SourceText": "5. Submissions", + "text": "5. Mawasilisho", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice!", - "text": "Sasa ni muda wa kujifunza na kufanya mazoezi!", + "SourceText": "Your feedback on the app is appreciated. So that we can improve, any comments are not considered confidential and will become available for further lawful use without additional approval or compensation. We shall therefore own exclusive rights and believe any feedback that you have made is original by you.", + "text": "Maoni yako kuhusu programu yanathaminiwa. Ili tuweze kuboresha, maoni yoyote hayachukuliwi kuwa siri na yatapatikana kwa matumizi zaidi halali bila idhini ya ziada au fidia. Kwa hivyo tutamiliki haki za kipekee na kuamini maoni yoyote ambayo umetoa ni asili yako.", "type": "template", "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Rekebisha @global.parent_app", + "SourceText": "6. Security", + "text": "6. Usalama", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Give me quick parenting tips", - "text": "Nipe vidokezo vya malezi vya haraka", + "SourceText": "Our app stores and processes personal data that you have provided to us, in order to offer our services. It is your responsibility to keep your phone and access to the app secure. Removal of software restrictions and limitations imposed by the official operating system of your device is therefore not recommended. Doing so could make your phone vulnerable to malware, viruses, malicious programs as well as compromise your phone’s security features and could mean that the app will not work properly or at all.", + "text": "Programu tumishi yetu huhifadhi na kuchakata data ya kibinafsi ambayo umetupatia, ili kutoa huduma zetu. Ni jukumu lako kuweka simu yako na ufikiaji wa programu salama. Kuondolewa kwa vikwazo vya programu na vikwazo vilivyowekwa na mfumo rasmi wa uendeshaji wa kifaa chako haipendekezi. Kufanya hivyo kunaweza kufanya simu yako kuwa hatarini kwa programu hasidi, virusi, programu hasidi na pia kuathiri vipengele vya usalama vya simu yako na kunaweza kumaanisha kuwa programu haitafanya kazi ipasavyo au hata kidogo.", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Kitu kibaya sana kimetokea", + "SourceText": "To see how we handle your personal information, please see our @global.privacy_policy.", + "text": "Ili kuona jinsi tunavyoshughulikia taarifa zako za binafsi, tafadhali tazama @global.privacy_policy.", "type": "template", - "note": "" + "note": "The string @global.privacy_policy should not be translated." }, { - "SourceText": "I have technical problems with the app", - "text": "Nina matatizo ya kiufundi kwenye programu hii", + "SourceText": "7. External links and resources", + "text": "7. Viungo na rasilimali za nje", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "Utapata hapa vidokezo tunavyoona kuwa ni vya muhimu, kutokana na majibu uliyoyatoa wakati wa kurekebisha programu hii.", + "SourceText": "The app uses third party services that declare their own @global.terms_and_conditions and may link to other websites and resources that are not under the app’s control.", + "text": "Programu tumishi hutumia huduma za wahusika wengine ambazo zinatangaza @global.terms_and_conditions zao wenyewe na zinaweza kuunganisha kwenye tovuti na nyenzo zingine ambazo haziko chini ya udhibiti wa programu tumishi.", "type": "template", - "note": "" + "note": "The string @global.terms_and_conditions should not be translated." }, { - "SourceText": "WHO Website", - "text": "Tovuti ya Shirika la Afya Duniani", + "SourceText": "Link to @global.terms_and_conditions of third party service providers used by the app include:", + "text": "Kiungo cha @global.terms_and_conditions cha watoa huduma wengine wanaotumiwa na programu tumishi ni pamoja na:", "type": "template", - "note": "" + "note": "The string @global.terms_and_conditions should not be translated." }, { - "SourceText": "UNICEF Website", - "text": "Tovuti ya UNICEF", + "SourceText": "The inclusion of such links does not imply an endorsement or approval by the app and/or its partners of any website, product, or service. Similarly, the app and the @global.parent_app team affiliated developers and collaborators do not assume any responsibility or liability in respect of such websites, product, or service, including, for example, responsibility or liability for the accuracy or reliability of any information, data, opinions, advice or statements made on those web sites.", + "text": "Kujumuishwa kwa kurasa za mitandao kama hizo (viunga), haimaanishi uidhinishaji wa programu na/au washirika wake wa tovuti, bidhaa au huduma yoyote. Vile vile, programu tumishi na Timu ya @global.parent_app watengenezaji na washirika walioshirikishwa hawachukui jukumu au dhima yoyote kuhusiana na tovuti, bidhaa au huduma kama hizo, ikijumuisha, kwa mfano, wajibu au dhima ya usahihi au kutegemewa kwa taarifa yoyote, data, maoni, ushauri au taarifa zilizotolewa kwenye tovuti hizo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Malezi wakati wa UVIKO-19 ni magumu. Jisikie fahari kwa kufika mbali hivi.\n\nTunashughulikia maudhui mapya hapa ili kukusaidia kuzungumza na vijana na watoto wako kuhusu UVIKO-19.\n\nTaarifa mpya zaidi kuhusu UVIKO-19 zinapatikana kwenye tovuti za Shirika la Afya Duniani na UNICEF:", + "SourceText": "8. Disclaimer", + "text": "8. Kanusho", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya Shirika la Afya Duniani.", + "SourceText": "Please be aware that the @global.parent_app team exclude responsibility for the following:\n\n\na. Certain functions of the app will require the app to have an active internet connection. The @global.parent_app team cannot take responsibility for the app not working at full functionality if you do not have access to Wi-Fi, or you do not have any of your data allowance left.\n\n\nb. Using the app outside of an area with Wi-Fi, will mean that your terms of agreement with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for the cost of data for the duration of the connection while accessing the app, or other third party charges. In using the app, you accept responsibility for any such charges, including roaming data charges if you use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are not the bill payer for the device on which you are using the app, please be aware that we assume that you have received permission from the bill payer for using the app.\n\n\nc. Although we endeavour to ensure that the app is updated and its content accurate, we do rely on third parties to provide information to us so that we can make it available to you. We do not regularly check out all of the external sites and cannot guarantee that they are always accurate or reliable.\n\n\nd. The @global.parent_app team accepts no liability for any damage or loss, direct or indirect, you experience as a result of using the app, or arising from any reliance you may place on advice or information provided from the app. You should always exercise your own discretion and judgement appropriate to your own circumstances in relation to any advice or information provided from the app.\n\n\ne. Any instances of software bugs, viruses or other malicious material transmitted by a third party through our site are a regret, but we are devoid of responsibility.\n\n\nf. Updates to the app occur regularly in order to improve performance and content. The app is available on Android – the requirements for this system (and for any additional systems we decide to extend the availability of the app to) may change. It is your responsibility to download app updates to keep using the app. The @global.parent_app team does not promise that it will always update the app so that it is relevant to you and/or works with the Android version that you have installed on your device. However, you agree to always accept updates to the application when offered to you.\n\n\ng. The app site might not be available at all times for reasons of maintenance or trouble with associated software or hardware. Whilst we apologise for inconveniences, we are not liable for any loss you may incur should the site not be accessible or is withdrawn. Equally, we have the right and choice to terminate your access and use of the app (including availability of captured data) at any time, without warning. Unless we tell you otherwise, upon any termination, (a) the rights and licences granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.\n\n\nh. You agree to indemnify, at your own expense, the @global.parent_app team, its officials, employees, consultants and agents, against any claims, including your costs and expenses, by any third party, resulting from your use of the app.\n\n\ni. Companies or products associated with the app should not be interpreted as endorsement by the app or the @global.parent_app team or demonstrate an intention to infringe proprietary rights.", + "text": "Tafadhali fahamu kuwa timu ya @global.parent_app haiwajibiki kwa majukumu kwa yafuatayo:\n\n\na. Baadhi ya utendakazi wa programu utahitaji programu kuwa na muunganisho wa intaneti. Timu ya @global.parent_app haiwezi kuwajibika kwa programu kutofanya kazi kikamilifu ikiwa huna ufikiaji wa Wi-Fi, au huna salio lolote la bando la data.\n\n\nb. Kutumia programu nje ya eneo lenye Wi-Fi, kutamaanisha kuwa masharti yako ya makubaliano na mtoa huduma wako wa mtandao wa simu bado yatatumika. Kwa hivyo, unaweza kutozwa na mtoa huduma wako wa simu kwa gharama ya data kwa muda wa muunganisho unapotumia programu, au gharama zingine za watu wengine. Katika kutumia programu, unakubali kuwajibika kwa gharama zozote kama hizo, ikiwa ni pamoja na gharama za data ya kutumia mitandao ya ng'ambo ikiwa unatumia programu nje ya eneo lako la nyumbani (yaani, eneo au nchi) bila kuzima utumiaji wa data nje ya mtandao wako. Ikiwa wewe si mlipaji wa bili wa kifaa ambacho unatumia programu, tafadhali fahamu kwamba tunadhania kuwa umepokea ruhusa kutoka kwa mlipaji wa bili kwa kutumia programu.\n\n\nc. Ingawa tunajitahidi kuhakikisha kuwa programu imesasishwa na maudhui yake ni sahihi, tunategemea washirika wengine kutupa maelezo ili tuweze kufanya ipatikane kwako. Hatuangalii tovuti zote za nje mara kwa mara na hatuwezi kuhakikisha kuwa ni sahihi au za kuaminika kila wakati.\n\n\nd. Timu ya @global.parent_app haikubali dhima yoyote ya uharibifu au hasara yoyote, ya moja kwa moja au isiyo ya moja kwa moja, unayopata kutokana na kutumia programu, au kutokana na utegemezi wowote unaoweza kuweka kwa ushauri au maelezo yanayotolewa kutoka kwa programu. Unapaswa kutumia busara na uamuzi wako kila wakati kulingana na hali yako kuhusiana na ushauri au taarifa yoyote iliyotolewa kutoka kwa programu.\n\n\ne. Matukio yoyote ya hitilafu za programu, virusi au nyenzo zingine hasidi zinazopitishwa na mtu mwingine kupitia tovuti yetu ni majuto, lakini hatuna jukumu.\n\n\nf. Masasisho ya programu hutokea mara kwa mara ili kuboresha utendaji na maudhui. Programu inapatikana kwenye Android - mahitaji ya mfumo huu (na kwa mifumo yoyote ya ziada tunayoamua kupanua upatikanaji wa programu) inaweza kubadilika. Ni wajibu wako kupakua masasisho ya programu ili kuendelea kutumia programu. Timu ya @global.parent_app haiahidi kuwa itasasisha programu kila wakati ili iwe muhimu kwako na/au kufanya kazi na toleo la Android ambalo umesakinisha kwenye kifaa chako. Hata hivyo, unakubali kwamba kila mara utakubali masasisho ya programu yanapotolewa kwako.\n\n\ng. Tovuti ya programu inaweza kuwa haipatikani kila wakati kwa sababu za matengenezo au changamoto inayohusiana na programu au vifaa husika. Ingawa tunaomba radhi kwa usumbufu, hatuwajibikii kwa hasara yoyote ambayo unaweza kupata ikiwa tovuti haitafikiwa au kuondolewa. Vile vile, tuna haki na chaguo la kusitisha ufikiaji na matumizi yako ya programu (ikiwa ni pamoja na upatikanaji wa data iliyonaswa) wakati wowote, bila onyo. Isipokuwa tukikuambia vinginevyo, baada ya kusitishwa, (a) haki na leseni ulizopewa katika masharti haya zitaisha; (b) lazima uache kutumia programu, na (kama ikihitajika) uifute kwenye kifaa chako.\n\n\nh. Unakubali kufidia, kwa gharama yako mwenyewe, timu ya @global.parent_app, maafisa wake, wafanyakazi, washauri na mawakala wake, dhidi ya madai yoyote, ikiwa ni pamoja na gharama na matumizi yako, na wahusika wengine, kutokana na matumizi yako ya programu.\n\n\ni. Makampuni au bidhaa zinazohusishwa na programu hazipaswi kutafsiriwa kama uidhinishaji na programu au timu ya @global.parent_app au kuonyesha nia ya kukiuka haki za umiliki.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app\n@global.parent_app\n@global.parent_app\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "Anuani ya tovuti ni https://www.who.int/emergency/diseases/novel-coronavirus-2019", + "SourceText": "9. Changes to the @global.terms_and_conditions", + "text": "9. Mabadiliko ya @global.terms_and_conditions", "type": "template", - "note": "" + "note": "The string @global.terms_and_conditions should not be translated." }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya UNICEF.", + "SourceText": "We may update our @global.terms_and_conditions from time to time. You waive your right to be notified directly of changes and are advised to review this page periodically for any updates. Your continued use of the app suggests you agree to subsequent revisions of the @global.terms_and_conditions.", + "text": "Tunaweza kusasisha @global.terms_and_conditions zetu mara kwa mara. Unaachilia haki yako ya kuarifiwa moja kwa moja kuhusu mabadiliko na unashauriwa kukagua ukurasa huu mara kwa mara kwa masasisho yoyote. Kuendelea kwako kutumia programu kunapendekeza ukubali masahihisho yajayo ya @global.terms_and_conditions.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.terms_and_conditions\n@global.terms_and_conditions" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "Anuani ya tovuti ni https://www.unicef.org/coronavirus/covid-19", + "SourceText": "10. Contact Us", + "text": "10. Wasiliana Nasi", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Sasisha uzoefu wangu wa malezi", + "SourceText": "If you have any questions or suggestions about our @global.terms_and_conditions, do not hesitate to contact us at apps@idems.international.", + "text": "Ikiwa una maswali au mapendekezo kuhusu @global.terms_and_conditions zetu, usisite kuwasiliana nasi kwa apps@idems.international.", "type": "template", - "note": "" + "note": "The string @global.terms_and_conditions should not be translated." }, { - "SourceText": "Update my personal details", - "text": "Sasisha taarifa zangu binafsi", + "SourceText": "Last updated: 1 March 2023", + "text": "Mara ya mwisho imeboreshwa: 1 mwezi wa tatu 2023", "type": "template", "note": "" }, { - "SourceText": "Update my workshop options", - "text": "Sasisha machaguo yangu ya kipindi", + "SourceText": "When everything feels like it is falling apart", + "text": "Wakati kila kitu kinaonekana kunaharibika", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "Je, unapata matatizo yoyote ya kiufundi? Tujulishe ili kutusaidia kuboresha @global.parent_app!", + "SourceText": "And you can't help but raise your voice", + "text": "Na huwezi kusaidia isipokuwa kupaza sauti", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Type your name (optional)", - "text": "Andika jina lako (hiari)", + "SourceText": "When all the frustrations are beginning to start", + "text": "Wakati kuchanganyikiwa kote kunapoanza kutokea", "type": "template", "note": "" }, { - "SourceText": "Contact me on @global.whatsapp", - "text": "Wasiliana nami kwa @global.whatsapp", + "SourceText": "Remember that you have a choice", + "text": "Kumbuka kwamba una chaguo", "type": "template", - "note": "The string @global.whatsapp should not be translated." + "note": "" }, { - "SourceText": "Type your phone number", - "text": "Andika namba yako ya simu", + "SourceText": "Remember all we have to be grateful for", + "text": "Kumbuka yote tuliyonayo tunayoweza kujivunia", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Wasiliana nami kwa barua-pepe", + "SourceText": "Let's slow down", + "text": "Twende taratibu", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Andika anuani yako ya barua-pepe", + "SourceText": "Take a few deep breaths", + "text": "Vuta pumzi ndefu", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Tueleze tatizo lako", + "SourceText": "Because I really couldn't love you more", + "text": "Kwa sababu siwezi kukupenda zaidi", "type": "template", "note": "" }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Mara ya kwanza mama yangu aliponiuliza kama ninataka kutumia muda pamoja naye, nilimwambia aniache kwa sababu nilikuwa katikati ya mchezo. Lakini alisisitiza kama anavyofanya kila wakati. Nilimwambia aniangalie ninavyocheza kama hicho ndicho alichokuwa anakitaka. Baada ya dakika kadhaa, alianza kuniuliza maswali kuhusu mchezo huo. Mwanzoni ilikuwa inakera, lakini baada ya muda nilifurahi kwamba hatimaye alikuwa akivutiwa na kile nilichokuwa nikikifanya. Aliweza hata kujaribu!", + "SourceText": "You can take pause, you can count to 10", + "text": "Unaweza kupumzika, unaweza kuhesabu mpaka 10", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "Baba yangu aliniambia ninacheza mno mpira wa kikapu baada ya kutoka shule, kwa hiyo ni lazima tuweke sheria ya familia. Aliahidi kuwa tutafikiria suluhisho pamoja, ili sisi sote tujisikie vizuri kuhusu jambo hili. Sikuamini kuwa itawezekana lakini nikasema, \"Sawa, ngoja tujaribu\". Tulijadili na kukubaliana kuwa sheria itakuwa kwamba ninaruhusiwa kucheza mpira wa kikapu baada ya kufanya kazi ya nyumbani hadi tunapoenda kula chakula cha usiku. Inaniwia vigumu kwenda kucheza na marafiki zangu baada ya kutoka shule, kwa hiyo ninajitahidi kadri ya uwezo wangu kumaliza kwanza kazi ya nyumbani halafu ndipo ninaenda kucheza nao. Sasa hivi ninapata pia muda wote wa jioni kwa ajili ya kufanya mambo mengine, kama kutazama Ligi ya Mpira wa Kikapu ya Marekani.", + "SourceText": "Play a game or do something fun", + "text": "Cheza mchezo au fanya kitu fulani cha kufurahisha", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "Utapata jumbe za wiki kutoka vipindi vilivyopita hapa.", + "SourceText": "You can phone a friend, someone to confide in", + "text": "Unaweza kumpigia simu rafiki, mtu flani unayemuamini", "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Anza", + "SourceText": "Remember you're not the only one", + "text": "Kumbuka siyo wewe peke yako", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "Je, ungependa kufanyaje kipindi hiki?", - "type": "template", + "SourceText": "Reflect on the positive", + "text": "Tafakari mambo chanya", + "type": "data_list", "note": "" }, { - "SourceText": "Coming soon", - "text": "Inakuja hivi punde", - "type": "template", + "SourceText": "Check-in chat", + "text": "Simulizi ya kuanzia", + "type": "data_list", "note": "" }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Tutahitaji kushughulikia masuala mengine ya malezi kabla ya kuanza kufanya kazi kwenye @local.workshop_data.title.\n\nUnaweza kupata nyenzo muhimu kwenye @local.workshop_data.title kupitia @global.parent_centre.", - "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "SourceText": "Dream Travel", + "text": "Safari ya ndoto", + "type": "data_list", + "note": "" }, { - "SourceText": "My name", - "text": "Jina langu", - "type": "template", + "SourceText": "Famous Party", + "text": "Chama Maarufu", + "type": "data_list", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "Siku ya @global.weekly_workshop", - "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Two truths, one lie", + "text": "Kweli mbili, uongo mmoja", + "type": "data_list", + "note": "" }, { - "SourceText": "I do the workshops...", - "text": "Ninafanya kipindi...", - "type": "template", + "SourceText": "Time Machine", + "text": "Mashine ya Wakati", + "type": "data_list", "note": "" }, { - "SourceText": "My group's name", - "text": "Jina la kikundi changu", - "type": "template", + "SourceText": "Superpowers", + "text": "Nguvu kubwa", + "type": "data_list", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "Sasa kikundi changu kinafanya kipindi...", - "type": "template", + "SourceText": "Just a friendly chat", + "text": "Maongezi ya kirafiki", + "type": "data_list", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Sasa ninafanya kipindi...", - "type": "template", + "SourceText": "The Interrupter", + "text": "Mdakizi", + "type": "data_list", "note": "" }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "Je, una hakika kuwa unataka kufungua vipindi vyote? Ukishazifungua, hautaweza kuzifunga tena", - "type": "template", + "SourceText": "Three options", + "text": "Machaguo matatu", + "type": "data_list", "note": "" }, { - "SourceText": "You can always find these tools in the @global.parent_centre", - "text": "Wakati wote unaweza kupata nyenzo hizi kwenye @global.parent_centre", - "type": "template", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Yes, No or Maybe", + "text": "Ndiyo, Hapana au Labda", + "type": "data_list", + "note": "" }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Ongeza shughuli hii kwenye @global.my_activities", - "type": "template", - "note": "The string @global.my_activities should not be translated." + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Mchezo wa kukumbuka – \"Jumamosi...\"", + "type": "data_list", + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Shughuli za kuburudisha", - "type": "template", + "SourceText": "Make up a story", + "text": "Buni Hadithi", + "type": "data_list", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Kitu cha kufurahisha cha kufanya na kijana wako", - "type": "template", + "SourceText": "Co-chef", + "text": "Mpishi mwenza", + "type": "data_list", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Bado haujaongeza shughuli zozote za kupumzika kwenye @global.my_relaxes. Kwanini usichague baadhi ya shughuli?", - "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "SourceText": "Dance moves", + "text": "Miondoko ya kucheza", + "type": "data_list", + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Bado haujaongeza shughuli zozote kwenye @global.my_activities. Kwanini usichague baadhi ya shughuli?", - "type": "template", - "note": "The string @global.my_activities should not be translated." + "SourceText": "Mirror", + "text": "Kioo", + "type": "data_list", + "note": "" }, { - "SourceText": "Open Survey", - "text": "Fungua Ukaguzi", - "type": "template", + "SourceText": "What's new?", + "text": "Kuna nini kipya?", + "type": "data_list", "note": "" }, { - "SourceText": "Select Language", - "text": "Chagua Lugha", - "type": "template", + "SourceText": "Get active!", + "text": "Changamka!", + "type": "data_list", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Machaguo ya vipindi", - "type": "template", + "SourceText": "Name that tune", + "text": "Taja jina la wimbo huo", + "type": "data_list", "note": "" }, { - "SourceText": "Unlock Workshops", - "text": "Fungua vipindi", - "type": "template", + "SourceText": "Pass the snap", + "text": "Pitisha kitufe", + "type": "data_list", "note": "" }, { - "SourceText": "Demo Presentation", - "text": "Video za Mfano", - "type": "template", + "SourceText": "Family workout", + "text": "Mazoezi ya familia", + "type": "data_list", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Usajili wa Shirika", - "type": "template", + "SourceText": "Make housework fun", + "text": "Fanya kazi za nyumbani zifurahishe", + "type": "data_list", "note": "" }, { - "SourceText": "Developer Mode", - "text": "Njia ya Msanidi wa Programu", - "type": "template", + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Je, kazi za nyumbani hazifurahishi... au zinafurahisha? Unaweza kuzifanya kuwa mchezo!", + "type": "data_list", "note": "" }, { - "SourceText": "Unlock all workshops", - "text": "Fungua vipindi vyote", - "type": "template", + "SourceText": "What are you doing?", + "text": "Unafanya nini?", + "type": "data_list", "note": "" }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Kwa kubonyeza kwenye kitufe hapa chini, utafungua vipindi vyote.\n\nANGALIZO: Watumiaji hawapaswi kutumia kitendaji hiki kufungua vipindi. Kufanya hivyo hakufai isipokuwa tu kama ni lazima.", - "type": "template", + "SourceText": "Here is a fun game you can do with your family!", + "text": "Huu hapa ni mchezo wa kufurahisha unaoweza kuucheza na familia yako!", + "type": "data_list", "note": "" }, { - "SourceText": "Unlock workshops", - "text": "Fungua vipindi", - "type": "template", + "SourceText": "Crazy chicken", + "text": "Kuku kichaa", + "type": "data_list", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Vipindi vyote vimefunguliwa sasa.", - "type": "template", + "SourceText": "Help yourself cope", + "text": "Jisaidie kwendana", + "type": "data_list", "note": "" }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Kwa kubofya kwenye kitufe hapo chini, utapangilia upya programu kwenye mipangilio yake ya awali.\n\nHii inamaanisha kuwa shughuli zako zote na data zilizotumiwa zitafutwa na programu yako itafanya kazi kama inaposakinishwa kwa mara ya kwanza.\n\nANGALIZO: Kupangilia upya programu ni tukio la kudumu na hautaweza kupata tena taarifa yoyote.", - "type": "template", + "SourceText": "Help your teen cope", + "text": "Msaidie kijana kwendana", + "type": "data_list", "note": "" }, { - "SourceText": "Reset App", - "text": "Pangilia Upya Programu", - "type": "template", + "SourceText": "Practical steps", + "text": "Hatua za vitendo", + "type": "data_list", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "Umefanikiwa kuingia kwenye njia ya msanidi wa programu.", - "type": "template", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "Karibu! Tunafurahi sana kuwa nawe hapa. Wiki hii inahusu WEWE.\n\nKatika kipindi cha ukaribisho:\n* Utapata nyenzo za kujitunzia\n* Utarekebisha programu hii kulingana na mahitaji yako", + "type": "data_list", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "Umeingiza namba isiyo sahihi.", - "type": "template", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Ni jambo la kuvutia sana, ninafurahi sana mambo yanaenda vizuri.", + "type": "data_list", "note": "" }, { - "SourceText": "Language", - "text": "Lugha", - "type": "template", + "SourceText": "Some days will have their challenges. That is okay. You are on the right path!", + "text": "Baadhi ya siku zingine zitakuwa na changamoto zake. Hiyo ni sawa. Uko kwenye njia sahihi!", + "type": "data_list", "note": "" }, { - "SourceText": "How did you hear about @global.parent_app?", - "text": "Uliijuaje @global.parent_app?", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Let’s take a moment for YOU. Looking after yourself well starts with noticing how you feel.", + "text": "Hebu tuchukue muda kwa ajili YAKO. Kujitunza vizuri huanza na kugundua jinsi unavyohisi.", + "type": "data_list", + "note": "" }, { - "SourceText": "I found it myself", - "text": "Niliipata mwenyewe", - "type": "template", + "SourceText": "Great! So good to hear you are in a positive space.", + "text": "Hongera! ni vizuri sana kusikia uko katika nafasi nzuri", + "type": "data_list", "note": "" }, { - "SourceText": "A friend or family", - "text": "Rafiki au familia", - "type": "template", + "SourceText": "Things are not always easy. But that is how we can grow and learn every day!", + "text": "Mambo si rahisi kila wakati. Lakini hivyo ndivyo tunavyoweza kukua na kujifunza kila siku!", + "type": "data_list", "note": "" }, { - "SourceText": "Other", - "text": "Njia nyingine", - "type": "template", + "SourceText": "Life can be hard. Whatever you are feeling, you can be proud of yourself for being here!", + "text": "Maisha yanaweza kuwa magumu. Vyovyote unavyohisi, unaweza kujivunia kuwa hapa!", + "type": "data_list", "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "Unaweza kuombwa kuwaonyesha namba hii watu watakaokusaidia katika safari yako ya @global.parent_app.", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "You matter! Take a moment to check in with yourself.", + "text": "Wewe ni wa muhimu! Chukua muda kujiangalia wewe mwenyewe.", + "type": "data_list", + "note": "" }, { - "SourceText": "Last sync at: @local.sync_latest", - "text": "Imeoanishwa mara ya mwisho saa: @local.sync_latest", - "type": "template", - "note": "The string @local.sync_latest should not be translated." + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "Inafurahisha sana kusikia kuwa unaendelea vizuri. Wewe ni mzazi mzuri sana!", + "type": "data_list", + "note": "" }, { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Kifaa hiki hakijawahi kulandanishwa. Landanisha kupata namba ya siri.", - "type": "template", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Pole kwa sababu leo siyo siku nzuri sana kwako. Hongera kwa kujaribu kuelewa kila kitu. Hakuna ajuaye kila kitu, lakini kwa kweli unajitahidi kwa kadri uwezavyo!", + "type": "data_list", "note": "" }, { - "SourceText": "Sync now", - "text": "Landanisha sasa", - "type": "template", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Tunasikitika kusikia kwamba leo siyo siku nzuri kwako. Hongera kwa kuamka kila asubuhi na kujaribu tena, hata unapokuwa umechoka. Huo ni ujasiri wa kweli na kujitoa kwa dhati! ", + "type": "data_list", "note": "" }, { - "SourceText": "Syncing...", - "text": "Inaoanisha...", - "type": "template", + "SourceText": "Recognising how you feel helps you care for yourself well. You deserve it.", + "text": "Kutambua jinsi unavyohisi husaidia kujijali vizuri. Unastahili.", + "type": "data_list", "note": "" }, { - "SourceText": "You selected @local.threshold or less", - "text": "Umechagua @local.threshold au pungufu yake", - "type": "template", - "note": "The string @local.threshold should not be translated." + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Vizuri, nimefurahi sana! Endeleza kazi hiyo nzuri.", + "type": "data_list", + "note": "" }, { - "SourceText": "You selected more than @local.threshold", - "text": "Umechagua zaidi kuliko @local.threshold", - "type": "template", - "note": "The string @local.threshold should not be translated." + "SourceText": "Sorry that things are difficult. All families struggle. @global.parent_app is here to help!", + "text": "Pole kwa mambo kuwa magumu. Familia zote zinapambana. @global.parent_app iko hapa kukusaidia!", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Reply", - "text": "Jibu", - "type": "template", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "Jambo lolote lililoenda 'vibaya' leo, hebu lisahau na ujaribu tena kesho. Itakuwa sawa!", + "type": "data_list", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Siku za mwezi uliopita", - "type": "template", + "SourceText": "Looking after yourself matters. And how you feel matters too!", + "text": "Kujitunza ni muhimu. Na jinsi unavyohisi ni muhimu pia!", + "type": "data_list", "note": "" }, { - "SourceText": "Days in the past week", - "text": "Siku za wiki iliyopita", - "type": "template", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Safi sana! Tunafurahi sana kusikia kwamba hali yako ni nzuri leo. Furaha iliyoje!", + "type": "data_list", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "Umechagua pungufu ya @local.threshold", - "type": "template", - "note": "The string @local.threshold should not be translated." - }, - { - "SourceText": "Unlock for less than @local.threshold", - "text": "Fungua kwa pungufu ya @local.threshold", - "type": "template", - "note": "The string @local.threshold should not be translated." + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Wakati mwingine mambo huenda vizuri sana. Wakati mwingine hayaendi vizuri sana. Na wakati mwingine hatujui kabisa cha kufanya... na hii ni sawa kabisa! Kumbuka kwamba hauko peke yako.", + "type": "data_list", + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "Umechagua @local.threshold au zaidi", - "type": "template", - "note": "The string @local.threshold should not be translated." + "SourceText": "Sorry that things are hard right now. You deserve good things, and @global.parent_app is here to support you every step of the way.", + "text": "Samahani kwamba mambo ni magumu kwa sasa. Unastahili mambo mazuri, na @global.parent_app iko hapa kukusaidia kila hatua unayopiga.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Video", - "text": "Video", - "type": "template", + "SourceText": "Caring for yourself is so essential. When you know how you feel, you can see what you need.", + "text": "Kujijali ni muhimu sana. Unapojua jinsi unavyohisi, unaweza kuona kile unachohitaji.", + "type": "data_list", "note": "" }, { - "SourceText": "Timer", - "text": "Kipima muda", - "type": "template", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Ni jambo la kuvutia sana, ninafurahi sana mambo kuona yanaenda vizuri. Endeleza kazi hii nzuri.", + "type": "data_list", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Binya pembetatu ili mjadala huu udumu kwa dakika @local.timer_duration.", - "type": "template", - "note": "The string @local.timer_duration should not be translated." + "SourceText": "We all have better and worse days. The fact that you are here shows courage and commitment!", + "text": "Sisi sote tuna siku nzuri na mbaya zaidi. Ukweli ni kwamba uko hapa unaonyesha ujasiri na kujitolea!", + "type": "data_list", + "note": "" }, { - "SourceText": "Options", - "text": "Machaguo", - "type": "template", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Tunasikitika kuona kuwa mambo ni magumu sasa. Wakati mwingine ni jambo la kawaida kabisa kupata misukosuko. Kumbuka kwamba hauko peke yako!", + "type": "data_list", "note": "" }, { - "SourceText": "Home", - "text": "Mwanzo", - "type": "template", + "SourceText": "Remember that YOU matter! Let’s check in with our emotions first.", + "text": "Kumbuka kwamba wewe ni muhimu! Hebu tuangalie hisia zetu kwanza.", + "type": "data_list", "note": "" }, { - "SourceText": "Settings", - "text": "Mipangilio", - "type": "template", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "Hongera kwa kutambua hisia chanya. Nimefurahi kusikia kwamba unajisikia vizuri leo!", + "type": "data_list", "note": "" }, { - "SourceText": "Template", - "text": "Kiolezo", - "type": "template", + "SourceText": "Well done for recognising that you are not feeling great. Be kind to yourself, you deserve it.", + "text": "Umefanya vizuri kwa kutambua kuwa hujisikii vizuri. Unastahili kuwa mwema kwako mwenyewe.", + "type": "data_list", "note": "" }, { - "SourceText": "Tour", - "text": "Ziara", - "type": "template", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember @global.parent_app is here to support you.", + "text": "Umefanya vizuri kutambua hisia ngumu. Ni sawa kutokuwa sawa wakati mwingine. Kumbuka @global.parent_app iko hapa kukusaidia.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "Self-care is a key parenting tool. It starts with recognising how we feel.", + "text": "Kujithamini ni muhimu kwa malezi. Inaanza na kutambua jinsi tunavyohisi.", + "type": "data_list", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Jumbe za Wiki", - "type": "template", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Safi sana. Na inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitoa kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", + "type": "data_list", "note": "" }, { - "SourceText": "Campaigns", - "text": "Kampeni", - "type": "template", + "SourceText": "Every day has its highs and lows. Praise yourself for being here and trying - you are moving forward.", + "text": "Kila siku kuna kupanda na kushuka. Jisifie kwa kuwa hapa na kujaribu - unasonga mbele.", + "type": "data_list", "note": "" }, { - "SourceText": "Notifications", - "text": "Arafa", - "type": "template", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Tunasikitika kuona kuwa mambo ni magumu sasa hivi. Vuta pumzi ndefu na ujue kuwa unathaminiwa.", + "type": "data_list", "note": "" }, { - "SourceText": "About @global.parent_app", - "text": "Kuhusu @global.parent_app", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Recognising how you feel is key to handling life well. Be real and kind to yourself.", + "text": "Kutambua jinsi unavyohisi ni muhimu ili kushughulikia maisha vizuri. Kuwa halisi na mkarimu kwako mwenyewe.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_app iliundwa na taasisi ya Parenting for Lifelong Health (PLH) inayotokana na ushirikiano ulioanzishwa duniani kote wa wataalamu wa malezi kutoka Shirika la UNICEF, Shirika la Afya Duniani (WHO), vyuo vikuu vya nchini Afrika Kusini na Uingereza, mashirika yasiyo ya kiserikali barani Afrika, na familia na vijana mbalimbali kote barani Afrika. Wazazi na vijana walifanya kazi nasi kwenye programu hii na kutusaidia kuhakikisha kuwa programu hii inakuwa rahisi kutumia, inayofurahisha na inayoshughulisha. Baadhi ya maudhui yaliyomo kwenye programu hii, kama vile shughuli zinazopendekezwa na simulizi za mifano, yaliundwa kwa kuwashirikisha wazazi na vijana ili kuhakikisha kuwa maudhui hayo yanakidhi mahitaji ya familia.\n\nTaasisi ya PLH inajitolea kwa dhati ili kusaidia kuundwa kwa nyenzo na programu za malezi zisizouzwa na zinazoweza kusambazwa kwa watu wengine, ili kuwasaidia wazazi duniani kote waweze kuboresha ustawi wa watoto wao.", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "You are a star. And you are making a real difference. You can be proud of yourself.", + "text": "Wewe ni shujaa. Na unaleta mabadiliko ya kweli. Unaweza kujivunia mwenyewe.", + "type": "data_list", + "note": "" }, { - "SourceText": "Finish current workshop", - "text": "Malizia kipindi cha sasa", - "type": "template", + "SourceText": "Everyone has good and bad days. Well done for using this app. It shows you are a committed parent. Remember to praise yourself for it!", + "text": "Kila mtu ana siku nzuri na mbaya. Umefanya vizuri kutumia programu hii. Inaonyesha wewe ni mzazi unayejituma. Kumbuka kujipongeza kwa hilo!", + "type": "data_list", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", - "type": "template", + "SourceText": "Sorry that things are not easy today. All parents have these days. You are trying and moving forward!", + "text": "Pole kama mambo si rahisi leo. Wazazi wote wana siku kama hizi. Unajaribu na kusonga mbele!", + "type": "data_list", "note": "" }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Anza @local.workshop_data.in_text_title", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Being a great parent also means taking time to care for yourself every day. It starts with recognising how you feel.", + "text": "Kuwa mzazi mahiri pia humaanisha kupata wakati wa kujitunza kila siku. Inaanza na kutambua jinsi unavyohisi.", + "type": "data_list", + "note": "" }, { - "SourceText": "Continue @local.workshop_data.in_text_title", - "text": "Endelea na @local.workshop_data.in_text_title", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Tunafurahi sana kusikia kuwa unajisikia vizuri leo. Unastaajabisha!", + "type": "data_list", + "note": "" }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Habari @fields.user_name! Wiki hii ulifanya:", - "type": "template", - "note": "The string @fields.user_name should not be translated." + "SourceText": "We all have days where we just don’t know. That’s okay! You are here and that is what matters.", + "text": "Sisi sote tuna siku ambazo hatuzielewi. Hiyo ni sawa! Uko hapa na hicho ndicho cha muhimu.", + "type": "data_list", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", - "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "SourceText": "Being a parent can be hard. But you are here and that shows you want to keep improving things. That is a big accomplishment already!", + "text": "Kuwa mzazi inaweza kuwa ngumu. Lakini uko hapa na hiyo inaonyesha kuwa unataka kuendelea kuboresha mambo. Hayo ni mafanikio makubwa tayari!", + "type": "data_list", + "note": "" }, { - "SourceText": "That’s wonderful!", - "text": "Hilo ni jambo zuri!", - "type": "template", + "SourceText": "Taking a moment for YOU makes a big difference for everyone!", + "text": "Kuchukua muda kwa ajili yako mwenyewe huleta mabadiliko makubwa kwa kila mtu!", + "type": "data_list", "note": "" }, { - "SourceText": "Nice work!", - "text": "Kazi nzuri!", - "type": "template", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Ni jambo zuri sana kwamba leo inaenda vizuri! Je, ni jambo gani moja ambalo limeenda vizuri leo? Kumbuka kujisifia kwa hilo.", + "type": "data_list", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Kujitolea kwako si kwa bure.", - "type": "template", + "SourceText": "Every day has its good and hard parts. Praise yourself for everything you have done so far - you are amazing.", + "text": "Kila siku ina nyakati zake nzuri na ngumu. Jisifu kwa kila kitu ambacho umefanya hadi sasa - wewe unastaajabisha.", + "type": "data_list", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Endeleza kazi hii nzuri!", - "type": "template", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Tunasikitika kusikia kuwa leo unajisikia vibaya. Hongera kwa kutambua hisia hizo, na kujaribu kuwa mtulivu na kuwa mwema kwako mwenyewe. Unaweka mfano mzuri kwa familia yako.", + "type": "data_list", "note": "" }, { - "SourceText": "This is lovely!", - "text": "Inafurahisha sana!", - "type": "template", + "SourceText": "Fantastic! And well done for investing in yourself and your family - you have accomplished a lot.", + "text": "Hongera! umefanya vizuri kuwekeza kwako na familia yako - umefanikisha mengi.", + "type": "data_list", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Jipongeze. Unastahili.", - "type": "template", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. @global.parent_app is here to help.", + "text": "Pole kwa kutokuwa na siku nzuri zaidi. Umefanya vizuri kwa kujaribu kubaini kila kitu. @global.parent_app iko hapa kukusaidia.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "Being a parent can be challenging. Take a deep breath and recognise all you have done for your family - you deserve praise!", + "text": "Kuwa mzazi kunaweza kuwa changamoto. Vuta pumzi na tambua yote uliyoifanyia familia yako - unastahili kusifiwa!", + "type": "data_list", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "Kila @global.parent_point ni ya muhimu sana!", - "type": "template", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Welcome @fields.user_name", + "text": "Karibu @fields.user_name", + "type": "data_list", + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Relax now", - "text": "Tulia sasa", - "type": "template", + "SourceText": "It's great to see you again!", + "text": "Tunafurahi sana kukuona tena!", + "type": "data_list", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "Je, tayari umepumzika? Bofya!", - "type": "template", + "SourceText": "How are you feeling today?", + "text": "Unajisikiaje leo?", + "type": "data_list", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Wewe kujithamini ni jambo muhimu.", - "type": "template", + "SourceText": "Well done!", + "text": "Hongera!", + "type": "data_list", "note": "" }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Safi sana! Tunafurahi sana kusikia kwamba hali yako ni nzuri leo. Furaha iliyoje!", - "type": "template", + "SourceText": "How to talk to my teen", + "text": "Jinsi ya kuongea na kijana wangu", + "type": "data_list", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Wakati mwingine mambo huenda vizuri sana. Wakati mwingine hayaendi vizuri sana. Na wakati mwingine hatujui kabisa cha kufanya... na hii ni sawa kabisa! Kumbuka kwamba hauko peke yako.", - "type": "template", + "SourceText": "Steps to deal with news", + "text": "Hatua za kukabiliana na habari", + "type": "data_list", "note": "" }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Hiyo ni nzuri, hasa kwenye nyakati ngumu kama hizi. Wewe ni mshindi.", - "type": "template", + "SourceText": "How can I help my teen choose well?", + "text": "Jinsi gani naweza kumsaidia kijana wangu kuchagua vizuri?", + "type": "data_list", "note": "" }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Tunajua jinsi kulea vijana katika nyakati hizi kunavyoleta msongo wa mawazo. Kujifunza namna ya kudhibiti msongo wa mawazo hukusaidia wewe – na familia yako.", - "type": "template", + "SourceText": "What influences teen decisions?", + "text": "Nini kinapelekea maamuzi ya kijana?", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Habari zenu?\n\nMada ya leo inahusu kudhibiti msongo wa mawazo.\n\nNi muhimu kwetu kujua jinsi ya kudhibiti msongo wa mawazo. Wakati mwingine watoto wetu wanaweza kuwa na tabia zinazotufanya tuwe na msongo wa mawazo. Sisi kama wazazi, tunaweza pia kuwafanya watoto wetu kuwa na msongo wa mawazo.\n\nKwa hiyo, ni muhimu kwetu kutambua wakati tunapokuwa na msongo wa mawazo ili tutulie na kuvuta pumzi. Kufanya hivyo kutatusaidia kudhibiti msongo wa mawazo.", - "type": "template", + "SourceText": "How does my teen feel?", + "text": "Kijana wangu anajisikiaje?", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONYESHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Changing negative to positive", + "text": "Kubadili hasi kuwa chanya", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONESHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "You are doing amazing, keep up the good work.", + "text": "Unafanya vizuri sana, endeleza kazi nzuri.", + "type": "data_list", "note": "" }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "Hebu tuangalie mfano wa jinsi ambavyo wakati mwingine msongo wa mawazo unaweza kutuzidia sana, sisi sote:", - "type": "template", + "SourceText": "Your teen is so lucky to have you as a parent.", + "text": "Kijana wako ana bahati ya kuwa nawe kama mzazi wake.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver: \"Niache nilivyo, kafanye mambo yako!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "SourceText": "Parenting can be hard, but @global.parent_app is here to help you win.", + "text": "Malezi yanaweza kuwa magumu lakini @global.parent_app iko hapa kukusaidi kushinda.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: “Nimekosea nini? Huwa hunisikilizi!”\n\n@global.w_stress_male_caregiver: \"Nimesema niache nilivyo, la sivyo utapata kipigo!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "SourceText": "Spending 1 minute learning about parenting makes a world of difference.", + "text": "Kutumia dakika 1 kujifunza kuhusu malezi inaleta mabadiliko duniani.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: \"Ona! Nimejenga nyumba!”", - "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "SourceText": "A private family foundation which wishes to remain anonymous", + "text": "Msingi binafsi wa familia ambao ungependa kubaki bila kutambuliwa", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: \"Nani anajali nyumba yako ya kijinga hiyo!\"", - "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "SourceText": "**Relax** @global.parent_point", + "text": "@global.parent_point ya **Chukua pumziko**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje? Na @global.w_stress_male_caregiver wake, je? Na @global.w_stress_girl, je?\n\nJe, @global.w_stress_male_caregiver angeweza kufanyaje badala yake?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "SourceText": "Do a short relaxation activity: Take a deep breath or open one of the relaxation activities in @global.parent_app. You can do this anytime or anywhere. Taking care of yourself helps you to take care of others.", + "text": "Fanya zoezi fupi la kukutiliza: Vuta pumzi ndefu au fungua zoezi moja wapo la kukutuliza kwenye @global.parent_app. Unaweza kufanya hivi saa yoyote au mahali popote. Kujijali inakusaidia kuwajali wengine.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje?", - "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapopumzika, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "Na @global.w_stress_male_caregiver, je?", - "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "SourceText": "Treat yourself well", + "text": "Jitendee vizuri", + "type": "data_list", + "note": "" }, { - "SourceText": "And @global.w_stress_girl?", - "text": "Na @global.w_stress_girl, je?", - "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "@global.parent_point ya **Jitendee vizuri**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Scared", - "text": "Kuogopa", - "type": "template", + "SourceText": "Even a bit of time for yourself will make a big difference in how you feel and respond in day-to-day life!\n\nDo something that makes you feel good: Have a hot drink, call a friend or relative, have a relaxing bath, read, or watch your favourite series.", + "text": "Hata muda mchache kwa ajili yako mwenyewe italeta tofauti kubwa katika namna unavyohisi na unavyokabiliana na maisha ya kila siku!\n\nFanya kitu kitachokufanya uhisi vizuri: Kunywa kinywaji cha moto, mpigie rafiki au jamaa, oga kwa ajili ya kutulia, soma au tazama kipindi ukipendacho.", + "type": "data_list", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Kila mmoja wao alihisi kufadhaika kwa sababu zake mwenyewe!", - "type": "template", - "note": "" + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapojitendea vizuri, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "Je, @global.w_stress_male_caregiver angeweza kufanyaje tofauti?", - "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "SourceText": "**Praise yourself** @global.parent_point", + "text": "@global.parent_point ya **Jisifie**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Recognise why he feels stressed", - "text": "Kutambua kwa nini anahisi msongo wa mawazo", - "type": "template", + "SourceText": "Notice when you do something well and take a moment to appreciate yourself for it. Life can be challenging, but you are moving forward - you deserve praise for the big and the small things!", + "text": "Zingatia unapofanya kitu vizuri na uchukue muda kujipongeza. Maisha yanaweza kuwa magumu, lakini wasonga mbele - unastahili pongezi kwa makubwa na madogo!", + "type": "data_list", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "Kuvuta pumzi ndefu na kuzungumza kwa utulivu", - "type": "template", - "note": "" + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapojisifia, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "Kuonesha kuwa anaelewa hisia za kijana wake", - "type": "template", + "SourceText": "One-on-one time", + "text": "Muda wa kutumia wawili", + "type": "data_list", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1", - "type": "template", - "note": "" + "SourceText": "**One-on-one time** @global.parent_point", + "text": "@global.parent_point ya **Muda wa kutumia pamoja wawili**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", - "type": "template", + "SourceText": "Spend uninterrupted time together with your teen, doing something that THEY want or like to do. The more you do it the stronger your relationship gets.", + "text": "Tumia muda na kijana bila kuingiliwa, fanya kitu anachokitaka au anapenda kufanya. Kadiri mnapofanya zaidi ndivyo mahusiano yanaimarika.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver angeweza...", - "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara mnapotumia pamoja wawili, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* Kutambua kwa nini anahisi msongo wa mawazo\n* Kuvuta pumzi ndefu na kuzungumza kwa utulivu\n* Kuonyesha kuwa anaelewa hisia za kijana wake\n* Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1\n* Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "SourceText": "Praise your teen", + "text": "Msifie kijana wako", + "type": "data_list", + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Asanteni kwa kufikiria pamoja! Hebu turudi siku za nyuma ili kuelewa @global.w_stress_male_caregiver anachokifanya sasa:", - "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "SourceText": "**Praise your teen** @global.parent_point", + "text": "@global.parent_point ya **Msifie kijana wako**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver amefukuzwa kazi. Alikuwa amekaa nyumbani akihisi kufadhaika na msongo wa mawazo, pindi @global.w_stress_teen_boy_1 alipoingia.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "SourceText": "Notice when your teen does something well and praise them right away - be specific and use their name. You can even praise them for trying.\n\nThe more you praise, the more positive behaviour you will see!", + "text": "Zingatia pale kijana wako anapofanya kitu vyema na umsifie papo hapo - kwa jambo maalumu alilolifanya na utumie jina lake. Unaweza ukamsifia kwa kujaribu.\n\nKadiri unavyo kumsifia, ndivyo utavyozidi kuona tabia chanya!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver (akishusha pumzi): “Samahani, mwanangu. Siku ya leo imeniendea vibaya. Bosi amenifukuza kazi.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapomsifia kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “Ooh, jamani! Ninahitaji sare mpya ya shule.”\n\n@global.w_stress_male_caregiver: \"Nitajaribu, mwanangu. Na kazi ya @global.w_stress_female_caregiver yako itatusukuma wakati ninatafuta kazi nyingine.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "SourceText": "**Positive instructions** @global.parent_point", + "text": "**Maelekezo chanya** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: \"Je, ninaweza pia kusaidia kutafuta kazi, @global.w_stress_male_caregiver?\"\n\n@global.w_stress_male_caregiver: “Hapana, usijali, @global.w_stress_teen_boy_1. Ninashukuru kwa msaada wako. Jambo muhimu zaidi ni kwamba ufanye bidii shuleni. Ninakushukuru kwa kunisikiliza.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "SourceText": "Tell your teen what you DO want them to do, instead of what you DON'T want them to do. Be realistic, positive and specific when you give your teen instructions.", + "text": "Mwambie kijana wako kile unachotaka akifanye badala ya kile usichotaka akifanye. Unapompa kijana wako maelekezo kuwa halisi, chanya na bayana.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “Hebu tukacheze mpira pamoja. Itanisaidia kidogo kuondokana na huu msongo wa mawazo.”\n\n@global.w_stress_teen_boy_1: “Sawa, @global.w_stress_male_caregiver!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapotoa maelekezo chanya, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Mazungumzo yalienda vizuri sana!\n\nUnapohisi hasira au msongo wa mawazo, kupumzika kidogo husaidia kujibu kwa utulivu. Jaribu kufanya hivyo, utajionea mwenyewe!", - "type": "template", + "SourceText": "Respond calmly", + "text": "Itikia kwa utulivu", + "type": "data_list", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Msamaha wa Usalama", - "type": "template", + "SourceText": "**Respond calmly** @global.parent_point", + "text": "**Itikia kwa utulivu** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "When you are feeling angry or stressed, choose to take a breath, share how you feel and respond calmly.", + "text": "Wakati unapohisi hasira au mfadhaiko, chagua kuvuta pumzi, mshirikishe unavyohisi na itikia kwa utulivu.", + "type": "data_list", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Kumbuka wakati ulipokuwa kijana.\n\nJe, kulikuwa na wakati wowote ambao ulikuwa hatarini lakini hukuweza kuiambia familia yako kwa sababu wangekasirika?\n\nHali hiyo ILIKARIBIA KABISA kumtokea @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl! Hebu tuangalie:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapotulia kabla ya kujibu, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: \"Usiwaambie wakubwa, leo usiku nitaenda baa na marafiki zangu.\"\n\n@global.w_stress_teen_girl: \"Nenda ukale raha! Mimi nimewaambia nitakuwa na shoga yangu, lakini ninaenda kwenye bonge la sherehe.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "SourceText": "Good money choice", + "text": "Maamuzi mazuri kuhusu pesa", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: \"Nadhani hawa jamaa wanafanya biashara ya madawa ya kulevya. Sisi sote tunaweza kukamatwa. Lakini siwezi kuwaambia wazazi wangu – watakasirika sana.\"", - "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "SourceText": "**Good money choice** @global.parent_point", + "text": "@global.parent_point ya **Maamuzi mazuri kuhusu pesa**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: \"Ninaogopa. Kila mtu amelewa chakari, hawezi kuendesha gari kunipeleka nyumbani. Huyu mvulana anasema atanipeleka lakini anataka twende kwanza nyumbani kwake. Siwezi kuwaambia wazazi wangu – niliwadanganya ili niweze kuja kwenye sherehe hii.\"", - "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "SourceText": "Make one of these good money choices:\n* Spend money according to your family budget. \n* Save extra money this week.\n* Respond well to a crisis that involves money.\n* Help a family member stick to your family budget.\n* Recognise something is a 'want' instead of a 'need'.", + "text": "Fanya mojawapo ya maamuzi haya mazuri ya kifedha: \n*Tumia fedha kulingana na bajeti ya familia yako.\n*Tunza fedha ya ziada wiki hii.\n*Itikia vyema katika changamoto zinazohusu fedha. \n*Msaidie mwana familia kuzingatia bajeti ya familia. \n*Tambua kitu ni 'tamanio' badala ya 'hitaji'.", + "type": "data_list", + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Hizi ni hali za hatari! Kwa bahati nzuri, @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl walikumbuka kile @global.w_stress_parent alichowaambia:\n\n\"Ninajali sana usalama wenu kuliko kitu chochote. Mkipata shida yoyote, au kuogopa kitu, mnaweza kunipigia simu nije kuwasaidia wakati wowote, au kunieleza shida hiyo.\n\nSemeni tu 'NINAOMBA MSAMAHA WA USALAMA'. Ninaahidi kuwa nitajitahidi kadri ya uwezo wangu kuwasaidia na sitakasirika – hata mkiwa mnafanya jambo ambalo hampaswi kulifanya.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapofanya maamuzi mazuri kuhusu mahitaji, matamanio na kujiwekea akiba, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ninaomba msamaha wa usalama. Unaweza kuja kunichukua? Ninahitaji sana usafiri wa kuja nyumbani.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "SourceText": "Calm consequence", + "text": "Athari Nyepesi", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ninaomba msamaha wa usalama. Nadhani marafiki zangu wako matatani. Sitaki kuvunja urafiki wetu, lakini nina wasiwasi. Tunaweza kuzungumza?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "SourceText": "**Calm consequence** @global.parent_point", + "text": "@global.parent_point ya **Athari nyepesi**", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "VUTA PUMZI. Polepole. Tulia.", - "type": "template", + "SourceText": "When your child is behaving badly, take a deep breath and give a consequence in a calm way.\n\nAgree on the calm consequence with your teen before the negative behaviour happens. Make sure it is realistic, manageable and fits the behaviour you are trying to correct.", + "text": "Pale mtoto wako anapokuwa na tabia mbaya, vuta pumzi ndefu na mpe adhabu kwa namna ya utulivu. \n\nKubaliana na kijana wako adhabu nyepesi kabla tabia mbaya haijatokea. Hakikisha kuwa ni halisi, inafanyika na inaendana na ile tabia unayojaribu kurekebisha.", + "type": "data_list", "note": "" }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Kabla ya kusema chochote, vuta pumzi polepole na kuzishusha mara tano. Kufanya hivyo kutakutuliza, na kukupa nafasi ya kufikiria.", - "type": "template", - "note": "" + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapoamuru kufanywa kwa athari nyepesi, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "SHARE how you feel", - "text": "SHIRIKISHA WENGINE jinsi unavyohisi", - "type": "template", + "SourceText": "Keep your teen safe", + "text": "Muweke kijana wako salama", + "type": "data_list", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Hili ni jambo gumu. Wengi wetu tuliambiwa tusilie, au kuonesha hisia zetu kwa watoto wetu. Lakini vuta pumzi ndefu na uwaambie kwa utulivu jinsi unavyohisi. Wataelewa vizuri, na pia watajifunza kutoka kwako jinsi ya kukabiliana na msongo wa mawazo.", - "type": "template", - "note": "" + "SourceText": "**Keep your teen safe** @global.parent_point", + "text": "**Muweke kijana wako salama** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "SHOW them you care", - "text": "WAONESHE kuwa unawajali", - "type": "template", - "note": "" + "SourceText": "Help your teen stay safe by doing one of these things:\n* Map out or talk about safe and unsafe spaces in your community.\n* Map out or talk about safe and unsafe spaces online.\n* Make rules with your teen about how they can stay safe in the community and online.\n* Explain, remind, or use your teen's \"@global.safety_word\": Your teen can always tell you if they are in a dangerous or difficult situation, and you won't get angry or punish them.", + "text": "Msaidie kijana wako kuwa salama kwa kufanya mojawapo ya vitu hivi:\n*Tambua au zungumza kuhusu sehemu salama na zisizo salama katika jamii yako.\n*Tambua au zungumza kuhusu sehemu salama na zisizo salama mtandaoni.\n* Tengeneza sheria na kijana wako kuhusu jinsi wanavyoweza kuwa salama katika jamii na mtandaoni.\n* Mueleze, mkumbushe au tumia \"@global.safety_word\": Kijana wako anaweza kukuambia kila wakati iwapo yupo katika hali hatarishi au ngumu, na hutokasirika au kuwaadhibu.", + "type": "data_list", + "note": "The string \"@global.safety_word\": should not be translated." }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Hili pia ni jambo gumu! Msongo wa mawazo hutufanya tujiangalie sisi wenyewe. Lakini vijana wetu wanahitaji msaada wetu. Waulize wanajisikiaje. Wasikilize na uwafariji. Jaribu kuwakumbatia au sema 'Ninaelewa'. Kufanya hivyo kunaweza kubadilisha kila kitu.", - "type": "template", - "note": "" + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Kila mara unapofanya jambo ili kumweka salama kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "SEEK the positive", - "text": "TAFUTA mambo chanya", - "type": "template", + "SourceText": "Did it? Tap it!", + "text": "Ulifanya hivyo? Bofya!", + "type": "data_list", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "Je, wewe na kijana wako mnaweza kufikiria mawazo yanayoweza kusaidia? Je, mnaweza kufanya pamoja kitu chanya ili kuhamisha mawazo yako kutoka kwenye msongo wa mawazo?", - "type": "template", + "SourceText": "Did you have any challenges when trying to praise your teen?", + "text": "Je, ulikuwa na changamoto zozote ulipojaribu kumsifu kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "Kama mengine yote hayatafaulu, vuta pumzi. Unao uwezo wa kulishinda hili.", - "type": "template", + "SourceText": "I forgot to do it.", + "text": "Nilisahau kufanya hivyo.", + "type": "data_list", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Kuna mazoezi mawili ya nyumbani wiki hii.", - "type": "template", + "SourceText": "My teen was surprised or suspicious.", + "text": "Kijana wangu alishtushwa au kushangaa.", + "type": "data_list", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Wakati wowote unapohisi msongo wa mawazo au kufadhaika: vuta pumzi na kuzishusha mara tano kabla ya kufanya chochote.\n\nNyote wawili mtakapokuwa mmetulia, mshirikishe kijana wako jinsi unavyojisikia.", - "type": "template", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Kumbuka, inachukua muda kwa kijana wako kuzoea kukuona ukimsifu. Kadri unavyotumia muda mwingi pamoja naye, ndivyo itakavyokuwa bora zaidi!", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Jadili na kijana wako kuhusu \"msamaha wa usalama\", kisha fikirieni kwa pamoja mazingira ambamo mnaweza kuutumia.", - "type": "template", + "SourceText": "My teen did not like it.", + "text": "Kijana wangu hakuipenda.", + "type": "data_list", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Kila mara unapotulia kidogo kabla ya kujibu, au kila wakati unapofanya jambo fulani ili kumweka salama kijana wako, vuna @global.parent_points zako na usherehekee mafanikio yako!", - "type": "template", - "note": "The string @global.parent_points should not be translated." + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Huwa inatokea - kuwa tu mvumilivu. Hakikisha unaendelea kutumia muda wa pamoja na kijana wako, kwa namna hiyo atathamini mawazo yako zaidi na zaidi. Ukimsifia kwa moyo wa dhati, utaona faida zake hivi karibuni!", + "type": "data_list", + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "Umemaliza kipindi cha wiki hii.\n\nWiki ijayo, tutazungumza kuhusu pesa – utahitaji:\n* kipande cha karatasi ya kawaida/karatasi nene\n* kalamu\n* mawe madogo/maharage/punje 20\n\nItakuwa raha!", - "type": "template", + "SourceText": "Did you have any challenges when sharing how you feel with your teen?", + "text": "Je, ulipata changamoto ulipomshirikisha kijana wako hisia zako?", + "type": "data_list", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Ni jambo zuri sana kwamba leo inaenda vizuri! Je, ni jambo gani moja ambalo limeenda vizuri leo? Kumbuka kujisifia kwa hilo.", - "type": "template", + "SourceText": "I was afraid my teen would think I was weak.", + "text": "Niliogopa kijana wangu angeniona mimi dhaifu.", + "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Tunasikitika kusikia kuwa leo unajisikia vibaya. Hongera kwa kutambua hisia hizo, na kujaribu kuwa mtulivu na kuwa mwema kwako mwenyewe. Unaweka mfano mzuri kwa familia yako.", - "type": "template", + "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text": "Kushirikishana hisia, hasa zile ngumu, huonesha mfano wa kuigwa kwa kijana wako! Kwa hakika humfanya kila mtu kwenye familia kuwa imara zaidi, kwa sababu mnaweza kuelewana na kusaidiana vizuri zaidi.", + "type": "data_list", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Kila jambo dogo unalolifanya ni la muhimu. Tunatumaini kuwa unajionea fahari pia.", - "type": "template", + "SourceText": "I felt uncomfortable about naming specific difficult feelings.", + "text": "Sikujisikia vizuri kuhusu kutaja hisia fulani ngumu.", + "type": "data_list", "note": "" }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Kila familia hukabiliwa na hali ya hatari. Tunapojiandaa pamoja na kujua mahali pa kupata msaada KABLA ya kutokea kwa jambo baya, tunaweza kuishinda hali yoyote ya hatari.", - "type": "template", + "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text": "Kuwa mahususi si kukosa adabu au kutojali – husaidia sana wengine kukuelewa vizuri na hivyo kuzuia kutoelewana kwenye familia. Hisia kama hasira na msongo wa mawazo ni sehemu ya maisha yetu. Kitu pekee tunachohitaji kufanya tunapohisi hasira na msongo wa mawazo ni kudhibiti vizuri hisia zetu kwa kuvuta pumzi ndefu mara kadhaa kabla ya kuamua cha kujibu.", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Habari zenu?\n\nMada ya leo inahusu kushughulikia hali ya hatari.\n\nHali ya hatari inaweza kutokea mahali popote. Hali ya hatari inaweza kutokea wakati wowote. Kwa hiyo, kama familia, ni muhimu kuwa na mipango ya kukabiliana na hatari kwa ajili ya mwanafamilia yeyote atakayejikuta kwenye hali ya hatari.\n\nNi muhimu kuwa na mipango ili kila mwanafamilia ahisi kulindwa.\n\nUnaposhughulikia hali ya hatari, kumbuka kupumzika, kupumua, na kutulia. Kufanya hivyo kutakusaidia kushughulikia hali ya hatari vizuri zaidi.", - "type": "template", + "SourceText": "My teen felt uncomfortable when I shared my feelings.", + "text": "Kijana wangu hakujisikia vizuri nilipomshirikisha hisia zangu.", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & majadiliano\n* Hadithi & majadiliano\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text": "Kuanza kitu kipya mara zote ni vigumu. Jipe muda wa kuzoea na endelea kuonyesha mfano mzuri kwa kutambua hisia zako na kuwashirikisha wengine. Baada ya muda, kijana wako atajifunza kufanya hivyohivyo, na atahisi kupendwa na kutunzwa mno!", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & tafakari\n* Hadithi & tafakari\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "text": "Nilipomshirikisha kijana wangu hisia zangu, aliuliza maswali mengi ambayo yalinifanya nisijikie raha.", + "type": "data_list", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "Hali ya hatari inaweza kumtokea mtu yeyote.\n\nHebu tuone kilichotokea kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", + "text": "Kuwashirikisha wengine hisia zako humsaidia kijana wako kufahamu na kujifunza kufanya hivyohivyo. Unaweza kuchagua mambo unayotaka kuwashirikisha wengine kuhusu hali hiyo. Ni juu yako! Unaweza pia kuchagua kujibu maswali baadaye kwa kusema, “Sasa hivi ninahisi hasira/msongo wa mawazo. Unaweza kunipa muda, tafadhali? Tunaweza kuzungumza zaidi kuhusu jambo hili leo usiku”.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: \"Jamani, Mjukuu wangu, unaonekana unasikitika sana, unataka kuniambia kilichotokea?\"", - "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "text": "Nilikuwa na hasira mno au msongo mkubwa wa mawazo kuweza kujaribu kuelezea hisia zangu – ninapendelea kuwa peke yangu ninapohisi hivyo.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: \"Ni Mjomba wangu, ali-… ali-… alinigusa.\"\n\n@global.w_crisis_female_caregiver (akiwaza): \"Vuta pumzi kidogo... Mwanangu anataka nini? Anataka nitulie na nimsikilize.\"\n\n@global.w_crisis_female_caregiver: \"Njoo ukae karibu na mimi. Usiwe na haraka, ninakusikiliza.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "text": "Si vibaya kutotaka kuwashirikisha wengine kwa wakati huo. Tafuta muda wa kuwaelezea baadaye, unapohisi utulivu zaidi, ili kila mtu aelewe.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: \"Ni kweli, ali-… ali-… alisabisha nifanye hivyo! Alisababisha nifanye naye mapenzi! Naapa, sikutaka; hadi nikasema HAPANA, lakini akaniambia nitapata shida.\"\n\n@global.w_crisis_female_caregiver: \"Asante kwa kunishirikisha mimi pia. Usihofu. Hili sio kosa lako.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "SourceText": "Did you have any challenges when making your budget together?", + "text": "Je, mlipata changamoto zozote mlipokuwa mnatengeneza bajeti pamoja?", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: \"Jana ulipoenda kumwona @global.w_crisis_adult_friend, alikuja na ndipo ikatokea.\"\n\n@global.w_crisis_female_caregiver: \"Hakuna shida, ninakuamini mwanangu. Hili ni jambo kubwa na tutatafuta njia ya kupata msaada tunaohitaji. Tunaweza kupata msaada wapi?\"\n\n@global.w_crisis_teen_girl_1: \"Shuleni kwetu?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Sikutaka kuwaambia familia yangu kiasi gani huwa napata.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: \"Ah najua, twende kliniki. Wao watajua tufanye nini ili kukusaidia. Je, hiyo ni sawa kwako?\"\n\n@global.w_crisis_teen_girl_1: \"Ndiyo… Sawa… Lakini, je, tunaenda wote na wewe?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Sio lazima kuwaambia kiwango halisi cha kipato chako; unaweza kuwaambia makadirio. Unaweza kusema, \"Katika kaya hii, tunapata @global.currency@global.monthly_income_estimate kila mwezi\" badala ya, \"Ninapata @global.currency@global.monthly_income_precise\".", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.currency@global.monthly_income_estimate\n@global.currency@global.monthly_income_precise”." }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: \"Ni sawa kabisa. Na @global.w_crisis_teen_girl_1? Kumbuka hili siyo kosa lako. Ninakupenda. Wewe ni mtu mzuri. Tutalimaliza hili.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Wakati wa kutengeneza bajeti, hatukuweza kukubaliana kitu gani kiwe mahitaji na kitu gani kiwe matamanio.", + "type": "data_list", + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver wake! Jambo hili linaweza kuwatokea wavulana na wasichana.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Wakati mwingine, matamanio na mahitaji ya watu hutofautiana. Kuyazungumzia pamoja hukusaidia wewe na kijana wako kuelewana, kuheshimu tofauti zenu, na kutafuta mnapoweza kuafikiana.", + "type": "data_list", + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "Je, @global.w_crisis_female_caregiver alitumia ujuzi upi?", - "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "SourceText": "I did not understand what to do.", + "text": "Sikuelewa nini cha kufanya.", + "type": "data_list", + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "Ndiyo, kwa hakika @global.w_crisis_female_caregiver alitumia ujuzi huo wote – na wewe pia unaweza!", - "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Nasikitika kusikia hili. Najua inaweza kuwa vigumu! Kwa nini tusipitie tena? Kijana wako au wanafamilia wengine wanaweza kujiunga na kukusaidia!", + "type": "data_list", + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "Tatizo jingine ambalo wazazi wengi wana wasiwasi nalo ni vurugu na uhalifu. Hebu tuangalie pamoja mfano mmoja.", - "type": "template", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "Kijana wangu hakutaka kupanga bajeti na mimi.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, unaonekana una wasiwasi tangu jana. Kuna tatizo gani?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Jaribu kwanza kupanga bajeti na watu wazima wengine katika familia yako. Kijana wako anaweza kuvutiwa na kile mnachofanya.\n\nKutengeneza bajeti kunaweza kuonekana ni jambo zito, lakini jaribu kulifanya kuwa la kufurahisha - Lifanye kwa kutumia mchezo wakati wa muda wa pamoja! Au unaweza kujaribu kutengeneza bajeti kwa @global.w_money_grandma kwanza.\n\nKumbuka kuwasifia mnapomaliza!", + "type": "data_list", + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: \"Jana, mimi na marafiki zangu tulienda kwenye mpira. Kuna vijana waliokuwa wamelewa, walianza kupigana na rafiki yangu.\"\n\n@global.w_crisis_male_caregiver_1: \"Endelea, ninakusikiliza. Natumaini haukupigana?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "Je, mlipata changamoto yoyote mlipojaribu kutengeneza sheria pamoja?", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: \"Sikutaka kupigana, lakini nisingeweza kukaa tu hapo na kuwaacha wampige rafiki yangu, kwa hiyo...\"\n\n@global.w_crisis_male_caregiver_1: \"Kwa hiyo, ulipigana ili kumtetea rafiki yako?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "SourceText": "My teen and I could not agree on a rule.", + "text": "Mimi na kijana wangu hatukuweza kukubaliana kuhusu sheria fulani.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Kila mtu alikuwa anapigana. Niliona mtu mmoja amelala uwanjani kwenye dimbwi la damu. Alionekana... amefariki.\"", - "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Fikiria kama sheria ina mantiki. Kijana wako anaweza kuifuata? Mnapotunga sheria kama familia, ni vizuri ukafikiria kuhusu kijana wako, umri wao, na nini ambacho ni muhimu kwao.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: \"Nimefurahi unaniambia kuhusu jambo hili, @global.w_crisis_teen_boy_1. Hebu tukae pamoja sasa na kujadili iwapo tunapaswa kuwahusisha polisi au mtu mwingine wa kutusaidia.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "Kijana wangu alihisi kuwa haikuwa haki kwake kuifuata sheria hiyo wakati mimi sihitaji kuifuata.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: \"Asante, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Tutalimaliza hili. Kumbuka, tutakusaidia kama familia.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Kila wakati, tunapaswa kukumbuka kuwa watoto hujifunza vizuri zaidi kutoka kwetu. Kadiri tunavyofuata sheria, ndivyo pia nao watakavyofuata sheria.\n\nUnaweza kurekebisha sheria ili kuhakikisha kuwa inaweza kufuatwa na kila mtu, kwa kuzingatia majukumu yako na majukumu ya kijana wako (kwa mfano, shughuli za shuleni au za kazini).", + "type": "data_list", + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_boy_1 na @global.w_crisis_male_caregiver_1 wake!", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Nilijisikia vibaya, kwa sababu ninahisi kwamba mimi ndiye ninapaswa kuweka sheria hiyo, si kijana wangu.", + "type": "data_list", + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "Je, @global.w_crisis_male_caregiver_1 alitumia ujuzi upi?", - "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "Mwenza wangu alijisia vibaya, kwa sababu anahisi kwamba yeye ndiye anapaswa kuweka sheria hiyo, si kijana huyo.", + "type": "data_list", + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Ujuzi wote huu unaweza kusaidia kwenye hali ya hatari.", - "type": "template", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Tunapoweka sheria pamoja na vijana wetu, husaidia familia kuelewana vizuri zaidi. Sheria hizo zitakuwa na uhalisia zaidi, na vijana wetu watakuwa na utayari zaidi na wataweza kuzifuata sheria hizo.", + "type": "data_list", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Mgogoro unaweza kutufanya tukasirike au tujione wanyonge. Lakini huo ndio wakati hasa ambao vijana wetu wanatuhitaji sisi. Tuvute pumzi, tusikilize na kufikiri.", - "type": "template", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Tulipojaribu kuweka sheria, tulijikuta tunabishana.", + "type": "data_list", "note": "" }, { - "SourceText": "BREATHE", - "text": "VUTA PUMZI", - "type": "template", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "Je, kijana wako alikuwa na hali nzuri kihisia mlipojaribu kuweka sheria? Ni vizuri zaidi kutengeneza sheria wakati kukiwa na hali ya utulivu. Kama wewe au kijana wako atakuwa amechoka au ana njaa, ni vizuri zaidi kuzungumzia sheria baadaye.", + "type": "data_list", "note": "" }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Tulia. Jiulize 'kijana wangu anahitaji nini sasa hivi'", - "type": "template", + "SourceText": "We were not able to stick to the rule.", + "text": "Hatukuweza kufuata sheria.", + "type": "data_list", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Mwambie upo kwa ajili yake na mpende.", - "type": "template", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Sheria zinapaswa ziwe mahususi na zinazotekelezeka. Hakikisha kuwa una sheria inayoweza kufuatwa kwa urahisi, kama vile kula mlo mmoja pamoja kila Jumapili badala ya kila siku usiku. Je, unahitaji kuwe na uwezekano zaidi wa kubadilisha sheria hiyo?", + "type": "data_list", "note": "" }, { - "SourceText": "THINK", - "text": "FIKIRI", - "type": "template", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "Je, mlipata changamoto zozote mlipojaribu pamoja kuweka athari?", + "type": "data_list", "note": "" }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Zungumza na kijana wako. Kitu gani kinaweza kusaidia kwenye hali hiyo? Unaweza kutakiwa kupanga mipango ya haraka sasa, halafu mipango ya muda mrefu baadaye.", - "type": "template", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Nilikasirika sana pale kijana wangu alipovunja sheria.", + "type": "data_list", "note": "" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "Jionee fahari kwa kutafuta njia za kupata msaada!", - "type": "template", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Kupumzika kabla ya kujibu kunatusaidia kutulia na kujibu vizuri zaidi.\n\nKijana wako akikukasirisha tena, jaribu kwanza kupumzika. Kuvuta pumzi ndefu chache tu kunaweza kuleta mabadiliko makubwa!", + "type": "data_list", "note": "" }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Inasaidia sana kufanyia mazoezi namna ya kukabiliana na hali ya matatizo kabla haijatokea.\n\nHebu angalia nyakati hizi tano za matatizo katika familia. Chukulia kwamba wewe ni mzazi: Ungefanya nini?\n\nKumbuka: VUTA PUMZI – SIKILIZA – FIKIRI", - "type": "template", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "Kijana wangu alinikasirikia sana nilipomuamuru afanye athari.", + "type": "data_list", "note": "" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Tatizo la kwanza: @global.w_crisis_teen_boy_2 amepigana shuleni", - "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm.\n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and react calmly as you agreed if they used the “@global.safety_word” or broke a rule in order to stay safe.", + "text": "Kijana wako anapokasirika, unaweza kuhitaji kuondoka karibu nae hadi nyote mtakapokuwa mmetulia.\n\nTazama ili kuhakikisha kuwa madhara ni ya kawaida na ya busara. Sikiliza maelezo ya kijana wako, na hakikisha unatoa \"@global.safety_word” au kama alivunja sheria ili kuwa salama.", + "type": "data_list", + "note": "The string “@global.safety_word” should not be translated." }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: \"Sijawahi kufanya hivi. Na sasa watanifukuza.\"", - "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Niliweka athari bila kuijadili kwanza na kijana wangu.", + "type": "data_list", + "note": "" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Tatizo la Pili: @global.w_crisis_teen_girl_1 amepata ujauzito", - "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "Je, unaweza kuweka athari kwa ajili ya jambo hili likitokea tena? Tunapoweka athari pamoja na vijana wetu, athari hizi zitakuwa na uwezekano mkubwa wa kutekelezeka, na vijana wetu watakuwa tayari zaidi na watakuwa na uwezo zaidi wa kufuata sheria hiyo.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, ninaona aibu sana. Sijui cha kufanya.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "SourceText": "I forgot to follow through with the consequence.", + "text": "Nilisahau kufuatilia athari mpaka mwisho.", + "type": "data_list", + "note": "" }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Tatizo la Tatu: @global.w_crisis_teen_boy_2 amempa msichana mimba", - "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Sisi sote huwa tunakosea! Kadri tunavyokuwa na msimamo kwenye athari tulizoziweka, ndivyo watoto wetu watakavyokuwa na uwezekano mkubwa wa kuchagua kuwa na mwenendo chanya siku za usoni.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, sitaki kupata mtoto.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Pamoja na kuweka athari, bado kijana wangu hafuati sheria.", + "type": "data_list", + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "Utafanyaje kwa @global.w_crisis_teen_boy_2?", - "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "Kama kijana wako anaendelea kuvunja sheria, unaweza kuhitaji kutumia muda chanya zaidi pamoja naye.\n\nJaribu kuendelea na malengo yako mengine – kama kujithamini, muda wa kuzungumza wawili, na usifiaji. Ujuzi huu wote utamsaidia kijana wako kuhisi anapendwa zaidi na kulindwa… na wewe kupunguza msongo wa mawazo!", + "type": "data_list", + "note": "" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Tatizo la Nne: Mwanafamilia anaugua", - "type": "template", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Tuliweka njia ya malipo hasi tu, na si malipo chanya.", + "type": "data_list", "note": "" }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "\"Vipimo vimeonesha nina VVU. Ninaogopa, nitakufa\"", - "type": "template", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Wakati mwingine ni vigumu kufikiria athari chanya. Athari zitamchochea kijana wako kuwajibika zaidi, na utaona mabadiliko!", + "type": "data_list", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "Je, unafanyaje kwenye hali hii?", - "type": "template", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "Kijana wangu alipendekeza kuchapwa kama athari hasi.", + "type": "data_list", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Tatizo la Tano: @global.w_crisis_teen_girl_1 anashinikizwa kufanya ngono na mpenzi wake", - "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Vijana wanaweza kuzoea kuona kuchapwa ndo athari pekee ya kuvunja sheria.\n\nFikiria kwa undani pamoja nao kuhusu baadhi ya athari nyepesi zinazoweza kuwasaidia kuelewa kwamba wamefanya kosa. Hizi zitaleta ufanisi zaidi na kutoa mifano chanya!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: \"Kwa kweli sikutaka kabisa kufanya hivyo. Sasa nitapata mimba au nitaumwa. @global.w_crisis_female_caregiver, ninaogopa sana...\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "SourceText": "Did you have any challenges when trying to resolve the problem with your teen?", + "text": "Je, ulipata changamoto yoyote ulipojaribu kutatua tatizo na kijana wako?", + "type": "data_list", + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "Je, utafanyaje kwa @global.w_crisis_teen_girl_1?", - "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "SourceText": "I forgot the steps of problem solving.", + "text": "Nilisahau hatua za kutatua matatizo.", + "type": "data_list", + "note": "" }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Kumbukeni kusaidiana na kutiana moyo. Ni vigumu kuendelea kutulia na kusikilizana kwenye hali ya tatizo – tunawaonea fahari.", - "type": "template", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "Inachukua muda kidogo na mazoezi kuweza kutumia hatua zote nne za kutatua matatizo. Tatizo litakapotokea tena, pitia hatua hizi nne pamoja na kijana wako – kufanya hivyo kutaleta mabadiliko makubwa!", + "type": "data_list", "note": "" }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "Chagua hali mojawapo kati ya hizi pamoja na kijana wako (au chagua mwenyewe!). Angalieni katuni, halafu mjadili pamoja mtafanya nini kama hali hiyo itatokea kwa rafiki au kwenye familia yenu.\n\nNa kumbukeni: VUTA PUMZI – SIKILIZA – FIKIRI", - "type": "template", + "SourceText": "I started with the solutions right away.", + "text": "Nilianza na suluhisho moja kwa moja.", + "type": "data_list", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "Umemaliza kipindi cha wiki hii.\n\nWarsha ya wiki ijayo tutasherehekea nyinyi nyote, na kuwasaidia kupanga mipango ya siku zijazo.\n\nKwa nini msipange kufanya pamoja sherehe itakayokuwa na chakula, na kuandaa muziki kama mtapenda kucheza!", - "type": "template", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "Tunapokuwa na tatizo, mara zote huwa tunataka kulitatua haraka sana na tunaweza kusahau hatua za kulitatua tatizo. Ili kupata suluhisho bora kwa pamoja, ni vema kwanza kulielewa tatizo kikamilifu na njia mbalimbali za kulitatua.", + "type": "data_list", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "Umemaliza kipindi cha wiki hii.\n\nKipindi cha wiki ijayo tutakusherehekea wewe, na unaweza kuchagua msaada unaoutaka ili kusonga mbele.\n\nUnaweza kuandaa sherehe – kitu unachopenda kula, au muziki unaopenda kusikiliza!", - "type": "template", + "SourceText": "Four steps of problem solving", + "text": "Hatua nne za kutatua matatizo", + "type": "data_list", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Kujithamini ni nyenzo muhimu ya malezi.", - "type": "template", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Hatukuweza kukubaliana kuhusu suluhisho la kulijaribu hivyo tuliishia kulumbana.", + "type": "data_list", "note": "" }, { - "SourceText": "How are you feeling today?", - "text": "Unajisikiaje leo?", - "type": "template", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Wakati mwingine inaweza kuwa vigumu kukubaliana na kila mtu katika familia, hasa kama kila mtu bado hajatulia. Mnaweza kukubaliana kujaribu suluhisho moja kwanza, na kisha mjaribu suluhisho lingine. Pia, kama mtakwama, jaribuni kukutana baadaye ili mkubaliane pamoja kuhusu suluhisho hilo.", + "type": "data_list", "note": "" }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Tunafurahi sana kusikia kuwa unajisikia vizuri leo. Unastaajabisha!", - "type": "template", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Nilikasirika tatizo lilipotokea, nikasahau kutumia hatua za kutatua matatizo.", + "type": "data_list", "note": "" }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Tunasikitika kuona kuwa mambo ni magumu sasa hivi. Vuta pumzi ndefu na ujue kuwa unathaminiwa.", - "type": "template", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Tatizo linapojitokeza, huwa tunakasirika au kufadhaika wakati mwingine. Kumbuka, unapohisi hasira au msongo wa mawazo, unaweza kupumzika kwanza ili utulie halafu ndipo utatue tatizo linalokukabili.", + "type": "data_list", "note": "" }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "Unaweza kumsaidia kijana wako kuelewa kwamba kuvunja sheria za familia kunasababisha mtu kufanya malipo.\n\nLakini NAMNA unavyofanya jambo hilo ni muhimu.\n\nKuweka njia sahihi huwasaidia vijana kuwa na tabia nzuri zaidi na hufanya maisha ya familia kuwa tulivu zaidi...", - "type": "template", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "Kijana wangu alikasirika na hakutaka kuzungumzia tatizo hilo.", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Habari, kila mmoja.\n\nMaada ya leo ni adhabu tulivu.\n\nNi muhimu kwamba tunapotambulisha adhabu kwa vijana wetu tuwahusishe, lakini pia ni muhimu kwamba sisi ni watulivu tunapotambulisha adhabu.\n\nHiyo itatusaidia kukubaliana kwenye kutambulisha adhabu tulivu kwa vijana wetu na vijana wetu watazikumbuka kirahisi wakiwa wameshirikishwa na kwamba itawafanya kuwa wawajibikaji.", - "type": "template", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Kijana wako anaweza kushindwa kabisa kushughulikia tatizo mara moja. Zitambue na kuzipa majina hisia zake, halafu tafuta muda baadaye siku hiyo au wiki hiyo mjadili na kutatua tatizo hilo pamoja. Unapotenga muda kwa ajili ya kijana wako, tatizo linaweza kutatuliwa vizuri.", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Mifano ya athari\n* Nyenzo: Jinsi ya kufanya athari nyepesi \nELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Did you have any challenges when trying to map risks and support with your teen?", + "text": "Je, ulikuwa na changamoto yoyote ulipojaribu kuhainisha sehemu za hatari na za msaada ukiwa na kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Mifano ya athari \n* Nyenzo: Jinsi ya kutoa athari \n* ELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari \n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Mimi na kijana wangu hatukukubaliana kuhusu maeneo na shughuli za mtandaoni ambazo hazikuwa salama.", + "type": "data_list", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "Hebu tusome kile kilichotokea kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "Hongera kwa kujaribu shughuli hii! Tunapowasikiliza vijana wetu, hata kama hatukubaliani nao, tunajifunza kuelewa wanavyofikiri. Jaribu kutafuta muda wa kufanya shughuli hii tena – jaribu kusikiliza na kuonesha kuwa unawaelewa kabla ya kuwashirikisha mawazo yako.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "Kijana wangu alitambua nyumba ya mtu ninayemwamini kuwa si salama. Nilishtuka na sikujua cha kufanya.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: \"Samahani @global.w_consequence_male_caregiver – unaweza kurudi kulala\".\n\n@global.w_consequence_male_caregiver: \"Muda uliotakiwa kurudi nyumbani umeshapita SANA!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Ni jambo la kushtua kujua kwamba watu walio karibu nasi na tunaowaamini wanaweza kuwa hatari kwa vijana wetu. Kumbuka kuchukua pumziko unapokuwa umekasirika, na jaribu kumsikiliza kijana wako kwa utulivu. Tafuta mtu unayeweza kuzungumza naye kuhusu jambo hili, labda rafiki au huduma ya msaada, ili uweze kupata msaada unaohitaji.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: \"@global.w_consequence_teen_boy_1, haufuati sheria yetu! Nitakutandika vibaya!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "Kijana wangu alisisitiza kwamba baa (au mahali pengine ninapohisi si salama) ni salama kwake kupatembelea. Sijui jinsi ya kumshawishi kijana wangu.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Hiyo siyo haki! Huwa siku zote hunisikilizi!! Ninakuchukia!”", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Jambo hili linaweza kukatisha tamaa sana. Ili kupata suluhisho, kijana wako anahitaji kuhisi kuwa anasikilizwa – kwa hiyo, sikiliza kwa utulivu sababu za kijana wako, halafu ndipo umshirikishe maoni yako. Kisha, shirikianeni kuweka sheria inayomruhusu kufurahi huku akiwa salama.", + "type": "data_list", + "note": "" }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Jadilini pamoja:\n* Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", - "type": "template", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "Kama mtu mzima, ninahisi ninawajibika kumlinda – lakini nilipomwambia kijana wangu kuhusu kilicho salama na kisicho salama, alikasirika.", + "type": "data_list", "note": "" }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "Kufanya athari kwa njia hii haikufanikiwa vizuri kwa sababu...", - "type": "template", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Vijana wetu wanaweza kujua mambo yanayohusu jamii zetu na teknolojia ambayo hatuyajui. Tunapowashirikisha kikamilifu vijana wetu kwenye shughuli ya ubainishaji na kuwasikiliza, watajisikia kuwa wanasikilizwa na kuthaminiwa, na inaweza kuwa rahisi zaidi kupata mpango unaokubaliwa na kila mmoja.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver alikuwa amekasirika", - "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Ilikuwa vigumu kutambua rasilimali zinazotoa msaada katika jamii yangu, kwa sababu siijui vizuri jamii yangu / kuna huduma chache zinazopatikana.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver hakumruhusu @global.w_consequence_teen_boy_1 kujieleza", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Ni vigumu kujua kila kitu kuhusu jamii zetu. Shirikisha rafiki au mwanafamilia mwingine katika shughuli yako ya ubainishaji. Unaweza hata kutembelea baadhi ya huduma zinazopatikana na kuuliza wanachofanya. Kadri tunavyojua mengi, ndivyo tunavyoweza kuziweka salama familia zetu!", + "type": "data_list", + "note": "" }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Athari haikujadiliwa kabla na @global.w_consequence_teen_boy_1", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Sifahamu mengi kuhusu teknolojia, kwa hiyo sijui jinsi ya kuizungumzia na kijana wangu.", + "type": "data_list", + "note": "" }, { - "SourceText": "The consequence was too strong", - "text": "Athari ilikuwa ngumu mno", - "type": "template", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Hakuna shida kabisa! Bado unaweza kumsaidia kijana wako. Muulize kijana wako aeleze vifaa vya kielektroniki anavyotumia – unaweza kumuuliza wakati mnapozungumza wawili. Hii ni fursa nzuri sana ya kuonesha moyo wa kupenda kujua maisha ya kijana wako na kujadili pamoja hatari zinazoweza kutokea. Kama hamna uhakika muweke sheria gani, kila mara unaweza kukubaliana na kijana wako kujaribu sheria mpya kwa wiki mbili, kisha mtajadili jinsi mambo yanavyoenda na kubadilisha sheria ikibidi!", + "type": "data_list", "note": "" }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", - "type": "template", + "SourceText": "Did you have any challenges when trying to prepare for a possible crisis with your teen?", + "text": "Je, ulikuwa na changamoto yoyote ulipojaribu kujiandaa kwa ajili ya janga linaloweza kutokea na kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "Ndiyo, mwitikio mkubwa kama huo ulimfanya kila mtu kukasirika zaidi na kusikitika.", - "type": "template", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "Kijana wangu aliniambia kuwa kuna jambo kubwa limempata na sikujua jinsi ya kulishughulikia.", + "type": "data_list", "note": "" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Mara nyingi vijana huvunja sheria. Wakati wa kukua ni wakati mgumu pindi wanapojifunza kwamba wao ni nani.\n\nKwa bahati nzuri, kuna njia za kumuadabisha kijana wako bila kukasirika au kutumia nguvu… na zinafanya kazi vizuri!\n\nKuweka athari husaidia kuwafundisha watoto wetu kuwajibika kwa kile wanachofanya – kiwe kizuri na kibaya.\n\nHapa kuna mifano kadhaa – hebu fikiria kuwa wewe ndiye mzazi:", - "type": "template", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Msifie kijana wako kwa kukuambia; kufanya hivyo si jambo rahisi! Kumbuka, unaweza kutumia ujuzi wote uliojifunza kwenye kivungezana: Pumzika kidogo, tumia hatua nne za kutatua matatizo, halafu tafuta msaada unaouhitaji wewe na kijana wako!", + "type": "data_list", "note": "" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Athari nyepesi zinapaswa kuwa...\n\nHAKI: Si kali sana na zinaweza kufanyika\n\nHARAKA: Zifanywe haraka iwezekanavyo\n\nTHABITI: athari zilezile kila wakati", - "type": "template", + "SourceText": "Get support", + "text": "Pata msaada", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Mazungumzo hayo yalininyima raha kabisa kwa sababu yalinikumbusha wakati mbaya nilioupitia.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.\n\nJe, athari ipi ingesaidia hapa?", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Tunapokumbushwa nyakati kama hizo, ni kawaida kuhisi kufadhaika au kukasirika. Ni muhimu kutafuta muda ambao umetulia, ili uweze kufikiria msaada unaouhitaji. Unaweza kuhitaji kuzungumza na mtu.", + "type": "data_list", + "note": "" }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Athari hazifanani sana na adhabu: athari huwapa vijana wetu nafasi ya kujifunza kuwajibika kwa matendo yao.\n\nVilevile, athari zinadhibitiwa zaidi NA zina ufanisi zaidi kuliko kuchapa au kupiga kelele!", - "type": "template", + "SourceText": "One of us did not feel comfortable.", + "text": "Mmoja wetu hakujisikia vizuri.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanapigania simu.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Haya ni mambo magumu kuyazungumzia. Tafuta muda wa utulivu kwa ajili hiyo. Tunajua ni rahisi zaidi kutozungumzia mambo haya na kuamini kuwa hayatakuja kututokea. Hata hivyo, kujifunza jinsi ya kushughulikia hali ya matatizo ni kama kupata bima; DAIMA ni bora zaidi kuifikiria na kujiandaa mapema.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanagombania simu.\n\nJe, njia ipi ya athari ingesaidia hapa?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "SourceText": "Challenges other parents experience:", + "text": "Changamoto wanazopitia wazazi wengine:", + "type": "data_list", + "note": "" }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Athari hufanikiwa zaidi kama utazijadili na kukubaliana mapema pamoja na vijana wako kabla ya kuzitumia.\n\nNa: si kila athari ni hasi… Mnaweza pia kukubaliana kuhusu athari NJEMA kwa matendo MEMA ili kujenga zaidi tabia chanya!", - "type": "template", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Lengo lilikuwa kuwa na muda wa pamoja na kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will definitely improve your relationship!", + "text": "Wakati mwingine ni rahisi na inafurahisha kutumia muda pamoja na vijana wako,na wakati mwingi inakuwa ina changamoto zaidi. Kutumia muda pamoja itaboresha mahusiano yenu!", + "type": "data_list", + "note": "" }, { - "SourceText": "What consequence would help here?", - "text": "Je, athari ipi ingesaidia hapa?", - "type": "template", + "SourceText": "Your goal was to praise your teen.", + "text": "Lengo lako lilikuwa kumsifia kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.\n\nJe, njia ipi ya athari chanya ingesaidia hapa?", - "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Muda mwingine inaweza kuwa vigumu kukumbuka kuwasifia vijana wetu. Wakati mwingine ukiwa unatumia muda wa pamoja na kijana wako, jaribu na fikiria kitu kimoja unachoweza kumsifia. Unaweza hata ukasema, “ Asante kwa kutumia muda pamoja na mimi!”.", + "type": "data_list", + "note": "" }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Jinsi unavyoweka athari ni jambo muhimu. Kumbuka, unapomhusisha kijana wako, kwa kawaida mambo huenda vizuri!", - "type": "template", + "SourceText": "Great to hear it went well! Keep up the praise - you will see your teen do more and more of the behaviour you like to see!", + "text": "Ni vizuri sana kusikia ilienda vizuri! Endelea kusifia - utamuona kijana wako anafanya zaidi na zaidi tabia unazopenda kuziona akizifanya!", + "type": "data_list", "note": "" }, { - "SourceText": "EXPLAIN", - "text": "ELEZA", - "type": "template", + "SourceText": "It sometimes takes a bit of time to adjust to praising, but it makes a big difference, you will see.", + "text": "Wakati mwingine inachukua muda kidogo kuanza kusifia, lakini huleta mabadiliko makubwa, utaona.", + "type": "data_list", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Hakikisha nyote wawili mmetulia. Vuta pumzi mara kadhaa. Mweleze kijana wako kwa nini una wasiwasi na tabia zake.\n\nEleza kwa nini sheria hiyo ilikuwa muhimu. Unaweza kumshirikisha hisia zako – si vibaya kusema umesikitika.", - "type": "template", + "SourceText": "Sorry that you struggled with this. Starting with praise can take some practice, but you will see the positive results soon!", + "text": "Pole kwa kuwa ulipambana na hili. Kuanza kusifia kunaweza kunahitaji mazoezi, lakini utaona matokeo mazuri hivi karibuni!", + "type": "data_list", "note": "" }, { - "SourceText": "AGREE", - "text": "KUBALI", - "type": "template", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "Unastahili pongezi pia. Asante kwa mara nyingine kwa kutumia @global.parent_app. Inaonesha unajali sana!", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." + }, + { + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Panga na kijana wako athari za kufuata sheria na kutofuata sheria.\n\nMwombe atoe maoni yake. Zungumzeni hadi mtakapokubaliana kuhusu kitu halisi.\n\nWeka athari za KUTOFUATA sheria na upendeleo pindi WANAPOFUATA sheria.", - "type": "template", + "SourceText": "Great to hear it went well. You are a star!", + "text": "Nimefurahi kusikia ilienda vizuri. Wewe ni shujaa!", + "type": "data_list", "note": "" }, { - "SourceText": "ACT", - "text": "TENDA", - "type": "template", + "SourceText": "Giving instructions in a new way takes some practice. Keep trying, you will soon see the difference it makes!", + "text": "Kutoa maagizo kwa njia mpya kunahitaji mazoezi fulani. Endelea kujaribu, hivi karibuni utaona tofauti yake!", + "type": "data_list", "note": "" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Kijana wako anapofuata sheria, msifie na mpe upendeleo!", - "type": "template", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Asante kwa kushirikisha wengine! Hongera kwa kujaribu kumpa kijana wako maelekezo chanya na kwa kujenga uhusiano chanya na kijana wako.\n\nKijana wako anastahili kusifiwa na WEWE pia!", + "type": "data_list", "note": "" }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "Atahisi kuheshimiwa na kuthaminiwa. Kumbuka: Kadri unavyomsifia, ndivyo atakavyozidi kuonyesha tabia hiyo nzuri!", - "type": "template", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. \n\nYour goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Wiki hii, lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kukasirika, unavuta pumzi tano ndani na nje kabla ya kujibu.\n\nLengo lako lilikuwa pia kuzungumza na kijana wako kuhusu jinsi nyinyi wawili mlivyohisi katika hali ya msongo wa mawazo.", + "type": "data_list", "note": "" }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Kijana wako asipofuata sheria, amuru afanye athari.", - "type": "template", + "SourceText": "Life can be so stressful. Every small step counts. Keep up the good work!", + "text": "Maisha yanaweza kutupa msongo wa mawazo. Kila hatua ndogo inahesabiwa. Endelea na kazi nzuri!", + "type": "data_list", "note": "" }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Kijana wako anapovunja sheria, amuru kwa utulivu afanye athari. Athari ziwe za HAKI (zisiwe kali sana), za HARAKA (zitolewe papo hapo) na THABITI (ziwe zilezile kila wakati).", - "type": "template", + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba.", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Jadilini pamoja:\n* Je, vijana wako wanavunja sheria gani?\n* Je, unaweza kutumia athari zipi kwa kila sheria maalum iliyovunjwa?\n\nAthari zinapaswa kuwa ya:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati).\n\nSifianeni na kutiana moyo – tunaweza kupeana nguvu!", - "type": "template", + "SourceText": "It is never easy to talk about money. Well done on starting the conversation and teaching your teen about this.", + "text": "Haijawahi kuwa rahisi kamwe kuzungumza juu ya pesa. Hongera sana kwa kuanzisha mazungumzo na kumfundisha kijana wako kuhusu hili.", + "type": "data_list", "note": "" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "Hebu turudi kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" - }, - { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: \"Nina wasiwasi kuona mara nyingi bado unachelewa kurudi nyumbani, @global.w_consequence_teen_boy_1. Je, tufanye nini ili kukusaidia ukumbuke kuwahi kurudi nyumbani?\n\n@global.w_consequence_teen_boy_1: \"Je, nikiwahi kurudi nyumbani, ninaweza kuchelewa kulala kwa dakika 30 kuliko kawaida?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "SourceText": "Sorry to hear it was difficult for you. Well done for trying. Helping your teen understand money better will benefit them so much in life!", + "text": "Pole kusikia ilikuwa ngumu kwako. Umefanya vizuri kujaribu. Kumsaidia kijana wako kuelewa pesa vizuri itamnufaisha sana maishani!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: Hilo ni wazo zuri! Na usipofuata hiyo sheria, tufanyeje?\n\n@global.w_consequence_teen_boy_1 (akiumauma maneno): \"Mgmluuhm\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Asante kwa kushirikisha uzoefu wako! Hongera sana kwa kufikiria jinsi unavyoweza kupanga bajeti na kuweka akiba na familia yako. Kufanya hivyo kutakusaidia sana kuweza kufikia malengo ya familia yako.\n\nKwa pamoja, mnaweza kufanikisha mambo mengi sana mazuri!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: \"Sema! Najua una mawazo mazuri.\"\n\n@global.w_consequence_teen_boy_1: \"Sawa…. Vipi kama: Nifanye kazi ya shuleni?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "Your goal was to make ONE rule with your teen.", + "text": "Lengo lako ilikuwa kutengeneza sheria moja na kijana wako.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: \"Hakuna shida kwa sababu unatakiwa pia ufanye kazi yako ya shuleni. Ukisahau sheria hiyo, basi hautaenda kuwatembelea marafiki zako siku inayofuata.\"\n\n@global.w_consequence_teen_boy_1: \"Sawa, @global.w_consequence_male_caregiver.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "SourceText": "It can be hard to create your first rule together, but you will see the benefits of involving your family. Keep trying!", + "text": "Inaweza kuwa vigumu kuunda sheria yako ya kwanza pamoja, lakini utaona manufaa ya kuhusisha familia yako. Endelea kujaribu!", + "type": "data_list", + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Siku iliyofuata...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa! ”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "Umefanya vizuri sana kwa hili! Si rahisi, na vijana hawawezi kutii sheria wakati wote, lakini kwa kutengeneza sheria muhimu kwa pamoja ni mwanzo mzuri. Jipongeze kwa kujaribu hili - tunajivunia wewe!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: \"Samahani, @global.w_consequence_male_caregiver – unaweza kurudi kulala.\"\n\n@global.w_consequence_male_caregiver: \"Muda uliotakiwa kurudi nyumbani umeshapita SANA!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kuvunja sheria ya kaya).", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, sasa hivi ni usiku wa manane na umerudi nyumbani baada ya muda tuliokubaliana. Hata uwe na sababu gani, ni lazima uelewe kwamba hii haikubaliki. Mimi na @global.w_consequence_female_caregiver tulikuwa na wasiwasi sana.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "SourceText": "Staying calm and consistent can be hard, but you are doing so well. You can do this!", + "text": "Kukaa kwa utulivu na thabiti inaweza kuwa ngumu, lakini unafanya vizuri sana. Unaweza kufanya hii!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: \"Marafiki zangu walitaka niendelee kukaa nao. Walikuwa wananiita mtoto nilipotaka kuwahi kurudi nyumbani.”\n\n@global.w_consequence_male_caregiver: \"Najua ni vigumu kuwakatalia marafiki zako. Hebu tulale, tupumzike kwanza, halafu kesho asubuhi tutazungumza kuhusu jambo hili.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "SourceText": "Sorry that this was difficult for you. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Pole kwamba hii ilikuwa ngumu kwako. Kuweka matokeo pamoja kutafanya kijana wako atake kufuata sheria mara nyingi zaidi!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: \"Samahani, nilikupa wasiwasi wewe na @global.w_consequence_female_caregiver.\"\n\n@global.w_consequence_male_caregiver: \"Asante. Sasa nenda ulale, lakini ngoja nikukumbushe tena, ukichelewa kurudi nyumbani kuliko tulivyokubaliana, kesho usiku hautaruhusiwa kutoka nyumbani.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Lengo lako lilikuwa kujaribu kutatua tatizo au mgogoro pamoja na kijana wako.", + "type": "data_list", + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "Hebu tuzungumzie hadithi hii", - "type": "template", + "SourceText": "Solving problems together takes some practice. The more often you involve your teen when you are both calm, the better it will go. Well done for trying!", + "text": "Kutatua matatizo pamoja kunahitaji mazoezi fulani. Kadiri unavyomhusisha kijana wako mara nyingi wakati wote mmetulia, ndivyo mambo yatakavyokuwa mazuri zaidi. Umefanya vizuri kwa kujaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Kufanya athari kulifanikiwa vizuri mara hii kwa sababu...", - "type": "template", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Lengo lako lilikuwa kubainisha maeneo ya hatari na sehemu za msaada pamoja na kijana wako – kwenye jamii yako na mtandaoni.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake walijadili kuhusu athari pindi wote walipokuwa wametulia", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "SourceText": "Even if it did not go so well yet, you will get there! Mapping risks and support systems together will help your family. Well done for trying.", + "text": "Hata kama haijaenda vizuri bado, Utafanikiwa! Kubainisha maeneo hatari kwa pamoja na mifumo ya msaada itasaidia familia yako. Vizuri sana kwa kujaribu.", + "type": "data_list", + "note": "" }, { - "SourceText": "They agreed on consequences together", - "text": "Walikubaliana pamoja kuhusu athari", - "type": "template", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Lengo lako lilikuwa kujadili na kijana wako hali ya mgogoro inayoweza kutokea na kuweka mpango wa kukabiliana nayo.", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver aliitikia kwa utulivu lakini kwa msimamo pindi @global.w_consequence_teen_boy_1 alipovunja sheria", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "It can be hard to think and talk about a crisis happening in your family. By trying you are already on the right path. Keep up the good work!", + "text": "Inaweza kuwa vigumu kuzungmzia majanga yanayotokea katika familia yako. Kwa kujaribu tu, tayari upo katika njia sahihi. Endelea na kazi nzuri!", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver alimsikiliza @global.w_consequence_teen_boy_1", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "Did you have a chance to try this?", + "text": "Je, ulipata nafasi ya kujaribu hili?", + "type": "data_list", + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Athari ziikuwa sahihi na zinazotekelezeka", - "type": "template", + "SourceText": "That's okay, don't be too hard on yourself. We encourage you to try and do it when you can.", + "text": "Hiyo ni sawa, usiwe mgumu sana kwako mwenyewe. Tunakuhimiza ujaribu kuifanya unapoweza.", + "type": "data_list", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Kwa nini amri ya kufanya athari ilifanikiwa vizuri mara hii?", - "type": "template", + "SourceText": "How did it go?", + "text": "Je, liliendaje?", + "type": "data_list", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "Je, athari gani nyepesi ambazo unaweza kuweka kwa vijana wako wanapogombana wakati wa chakula cha usiku?\n\nKumbuka malipo yanatakiwa kuwa ya:\nHAKI – HARAKA – THABITI", - "type": "template", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "Hongera sana kwa kutafuta njia za kutatua changamoto zako. Nenda ukazijaribu. Uhusiano wako na kijana wako utaimarika zaidi na zaidi!", + "type": "data_list", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Hakuna kumtembelea rafiki yeyote kwa mwezi mmoja", - "type": "template", + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Vizuri sana! Hongereni kwa kutumia muda pamoja. Kufanya hivyo kunaweka msingi wa uhusiano mzuri sana na kijana wako!", + "type": "data_list", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Kufanya hivyo kunaweza kuwa vigumu na ukatili kwako!", - "type": "template", + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Heri yako! Kutumia muda wa pamoja unawaonesha vijana wako kuwa wao ni watu muhimu kwako. Kufanya hivyo kunaleta mabadiliko!", + "type": "data_list", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Kufuta mipango yao ya kusherehekea siku ya kuzaliwa kwa muda wa mwezi mmoja", - "type": "template", + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Vizuri sana! Kutumia muda pamoja na kijana wako kunaweza kumfanya kijana wako awe tayari kusaidia mara nyingi. Unafanya vizuri sana!", + "type": "data_list", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Hii ni mbali sana, na ni ukatili mno!", - "type": "template", + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "Hongera! Kutumia muda wa pamoja na kijana wako unakupa nafasi ya kujifunza zaidi kuhusu mambo anayoyapendelea na uwezo wake. Wewe ni mshindi!", + "type": "data_list", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Hakuna kuangalia runinga jioni ya leo", - "type": "template", + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Kazi nzuri sana! Kutumia muda pamoja kunasaidia kujenga uhusiano mzuri na imara kati yako na kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Vizuri sana! Hiyo inaonekana kuwa ni haki na inaweza kufanywa mara moja", - "type": "template", + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Wakati mwingine, kutumia muda pamoja na vijana wako kutakuwa rahisi na kutafurahisha, na wakati mwingine kutakuwa kugumu zaidi. Kutumia muda pamoja kutaboresha sana uhusiano wenu; hongera kwa kujaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Panga athari nyepesi kwa vijana wako wanapogombana wakati wa chakula cha usiku.\nKumbuka athari zinatakiwa kuwa\n\nHAKI – HARAKA – THABITI", - "type": "template", + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Tunasikitika kusikia kwamba ilikuwa vigumu kwako kutumia muda pamoja na kijana wako. Wakati mwingine, sisi sote tunakabiliwa na changamoto. Jivumilie tu na mvumilie kijana wako – mambo yatakuwa mazuri. Hongera kwa kujaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Zoezi lako la nyumbani la wiki hii litakuwa kuzungumza na kijana wako kuhusu athari MOJA hasi na athari MOJA chanya.\n\nAthari zinapaswa kuwa za:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati)", - "type": "template", + "SourceText": "Great to hear it went well; you are a star!", + "text": "Ni jambo zuri sana kusikia kuwa mambo yameenda Wewe ni mshindi!", + "type": "data_list", "note": "" }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Tabia Hasi: Kuja nyumbani baada ya muda uliokubaliwa.\n\nMalipo Hasi: Hataenda kuwatembelea marafiki siku inayofuata.\n\nTabia Hasi: Kuongea kwa jeuri.\n\nAthari Hasi: Kuandika barua ya kuomba msamaha.\n \nTabia Chanya: Kusaidia kufanya manunuzi.\n\nAthari Chanya: Kuongezewa dakika 30 za kufanya shughuli yoyote aipendayo.\n\nTabia Chanya: Kusaidia kuwalea wadogo zake.\n\nAthari Chanya: Kuongezewa muda wa saa moja ya kuwa na marafiki mwishoni mwa wiki.", - "type": "template", + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Vizuri sana! Unastahili kufurahi nyakati zote!", + "type": "data_list", "note": "" }, { - "SourceText": "Great!", - "text": "Vizuri sana!", - "type": "template", + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Wewe ni mshindi kwa kujaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Ninajua maisha ni magumu. Ninakuonea fahari.\n\nVyovyote unavyohisi, ni jambo zuri kwamba uko hapa!", - "type": "template", + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Inafurahisha sana kuona umejisikia vizuri! Endeleza kazi hiyo nzuri sana. Kijana wako anajifunza mengi kutoka kwako!", + "type": "data_list", "note": "" }, { - "SourceText": "Using the app together", - "text": "Kutumia programu hii pamoja", - "type": "template", + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Kuzungumza kuhusu tunavyohisi kunaweza kuwa kugumu mwanzoni, lakini wewe na kijana wako mtazoea. Endelea kujaribu, utaona matokeo mazuri!", + "type": "data_list", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Tunafurahi sana kuwaona!\n\nKwanza, ngoja tulisaidie kundi lenu liweze kuanza.", - "type": "template", + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri. Kuzungumzia fedha zako pamoja kunaimarisha zaidi familia yako!", + "type": "data_list", "note": "" }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Kubalianeni pamoja kuhusu sheria zenu za msingi:\n* Je, tutakutana siku/muda upi kwa wiki?\n* Je, wakati wa shughuli zetu, ni nani atakayeshikilia simu?\n* Je, tutahakikishaje kuwa kila mtu anaweza kushiriki kwa uhuru?\n* Je, tufanyaje ili sisi sote tuhisi kuwa tunaheshimiwa?", - "type": "template", + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Hongera kwa kujaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "Wakati wote unaweza kubadilisha siku yako ya kipindi na jina la kikundi chako kwenye @global.weekly_workshop_options.", - "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri! Sheria thabiti husaidia kuwafanya vijana wetu kujisikia salama, na kuwaweka salama!", + "type": "data_list", + "note": "" }, { - "SourceText": "Some rules that other groups made:", - "text": "Baadhi ya sheria zilizowekwa na vikundi vingine:", - "type": "template", + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Tunasikitika kuona kuwa jambo hili limekuwa gumu. Kuweka sheria pamoja kunahitaji mazoezi, lakini kuna faida!", + "type": "data_list", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "* Jumanne saa 1 jioni ni wakati wetu wa kuwa pamoja kwenye @global.parent_app\n* Peaneni zamu ya kushika simu (shughuli 1 kwa mtu mmoja)\n* Kubalianeni na uzoefu wa kila mmoja. Sisi sote tunatofautiana!\n* Peaneni zamu ya kuzungumza na kusikiliza\n* Mnaweza kuuliza maswali yoyote\n* Tunachoshirikishana ni siri yetu", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Great to hear it went well!", + "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri!", + "type": "data_list", + "note": "" }, { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufurahisha. Halafu vuta pumzi ndefu ili kujisikia vizuri.\n\nKumbuka, unapata @global.parent_point kila unapojitunza – wewe ni mtu muhimu!", - "type": "template", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kutafuta pamoja njia za kufanya malipo kutamfanya kijana wako atake kufuata sheria mara nyingi!", + "type": "data_list", + "note": "" }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Kuwa mzazi ni kugumu sana. Wakati mwingine inaonekana kama watoto wetu hawatusikilizi kabisa.\n\nLakini sayansi inaonyesha kwamba kutumia dakika chache tu kila siku kutumia muda wa pamoja na kijana wako mkiwa wawili husaidia kujenga uaminifu na upendo.", - "type": "template", + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Wakati mwingine tunapaswa kuendelea kujaribu. Tafuta muda ambao wewe na kijana wako mtakuwa mmetulia halafu mjaribu tena kuzungumzia tatizo kwa kutumia hatua nne za kutatua matatizo. Pamoja, mnaweza kufanya makubwa!", + "type": "data_list", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Muda wa kuzungumza wawili ni ule ambao wewe unamzingatia yeye, bila kutazama runinga au kutumia simu. Hebu mruhusu aongoze kile mnachofanya au mnachozungumzia.\n\nNi jambo zuri zaidi kama utaweza kufanya hivyo kwa dakika ishirini kwa siku, lakini hata dakika tano kwa siku ni jambo zuri sana.", - "type": "template", + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuzungumzia hatari na njia za msaada huzuia matatizo na husaidia sana kumweka salama kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Habari!\n\nMada yetu ya leo inahusu kuzungumza na watoto wetu mkiwa wawili.\n\nNi muhimu kutumia muda tukiwa na watoto wetu ili waweze kutuelewa, na sisi kupata fursa ya kuwaelewa.\n\nKumbuka, familia inayoelewana vizuri huishi kwa utulivu.", - "type": "template", + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kuonyesha maeneo ya hatari na ya kupata msaada kunaweza kuleta changamoto na hisia kali. Kufanya hivyo kunasaidia sana kumweka salama kijana wako!", + "type": "data_list", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Mawazo kwa ajili ya muda wa muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja wawili\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Tunasikitika kuona kuwa mambo hayakwenda vizuri sana. Si rahisi kufanya hivyo. Jaribu kukaa chini na kulijadili tena na kijana wako. Pia, je, kuna mtu ambaye kijana wako anamwamini anayeweza kuungana na wewe kwenye mazungumzo na kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Shughuli za kujithamini\n* Mawazo kwa ajili ya muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuweka athari sahihi husaidia vijana kuwa na tabia nzuri zaidi na kufanya maisha ya familia kuwa tulivu zaidi.", + "type": "data_list", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Shirikishaneni mawazo!\n\nJe, ni mambo gani unayoweza kuyafanya ili kutumia muda wa pamoja na vijana wako mkiwa wawili?\n\nJe, unahisi kama HUNA MUDA na umechoka sana? Fikiria mambo ya kufanya wakati wa kutumia muda wa pamoja yasiyotumia muda wa ziada, kama kutembea pamoja kwenda dukani.", - "type": "template", + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kijana wako anapojifunza kutatua matatizo, anaweza kutumia ujuzi huo maishani mwake mwote. Zawadi iliyoje!", + "type": "data_list", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Mnaweza kuchukua muda kuzoea kuzungumza wawili, lakini kadri mtakavyofanya hivyo ndivyo itakavyokuwa bora zaidi!\n\nNyinyi ni wazazi wazuri sana kwa kujaribu jambo hili.", - "type": "template", + "SourceText": "My Tips", + "text": "Vidokezo Vyangu", + "type": "data_list", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "Hebu tufikirie njia za kutumia muda wa pamoja na kijana wako mkiwa wawili.", - "type": "template", - "note": "" + "SourceText": "**My Tips** in the @global.parent_centre", + "text": "**Vidokezo Vyangu** kwenye @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "Je, unaweza kuutumiaje muda wa pamoja na kijana wako mkiwa wawili?", - "type": "template", + "SourceText": "Essential Tools", + "text": "Nyenzo Muhimu", + "type": "data_list", "note": "" }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "Je, unahisi kama HUNA MUDA na umechoka sana? Kumbuka pia kufikiria mambo yasiyotumia muda wa ziada.", - "type": "template", - "note": "" + "SourceText": "**Essential Tools** in the @global.parent_centre", + "text": "**Nyenzo Muhimu** kwenye @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Unaweza kuchukua muda kuzoea kutumia muda wa pamoja wawili, lakini kadri utakavyofanya hivyo ndivyo itakavyokuwa rahisi zaidi!\n\nWewe ni mzazi wa kustaajabisha kwa kujaribu jambo hili.", - "type": "template", + "SourceText": "Relax & Activities", + "text": "Burudani & Shughuli", + "type": "data_list", "note": "" }, { - "SourceText": "DAY - Try to do it every day", - "text": "SIKU – Jaribu kufanya hivyo kila siku", - "type": "template", - "note": "" + "SourceText": "under **Relax & Activities** in the @global.parent_centre", + "text": "kwenye **Burudani & Shughuli** katika @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Tafuta dakika 5 (au zaidi!) kila siku wakati kijana wako hana kitu kingine anachotaka kufanya.", - "type": "template", + "SourceText": "Help", + "text": "Msaada", + "type": "data_list", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "CHEZA – Mwache kijana wako achague", - "type": "template", - "note": "" + "SourceText": "**Help** in the @global.parent_centre", + "text": "**Msaada** kwenye @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Mwambie kijana wako kwamba ungependa kutumia muda pamoja naye na kwamba anaweza kuchagua cha kufanya au cha kuzungumzia. Mwanzoni, anaweza kuona kuwa hili ni jambo la ajabu, lakini baadaye atafurahia muda huu wa kuwa na wewe!", - "type": "template", - "note": "" + "SourceText": "Coping with @global.covid", + "text": "Kwendana na @global.covid", + "type": "data_list", + "note": "The string @global.covid should not be translated." }, { - "SourceText": "STAY - Focus on your teen", - "text": "KAA – Mzingatie kijana wako", - "type": "template", - "note": "" + "SourceText": "**Coping with @global.covid** in the @global.parent_centre", + "text": "**Kwendana na @global.covid** katika @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Zima runinga na weka simu kando. Mtazame kijana wako. Fanya ishara kwa kichwa au sema \"ndiyo\" ili kuonyesha kuwa unammakinikia. Kubali anachosema bila kumhukumu.", - "type": "template", + "SourceText": "Coping with grief", + "text": "Kwendana na majonzi", + "type": "data_list", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Muda wa pamoja na kijana wako mkiwa wawili unaweza kukufurahisha wewe pia! Unaweza hata kukupunguzia msongo wa mawazo.", - "type": "template", - "note": "" + "SourceText": "**Coping with grief** in the @global.parent_centre", + "text": "**Kwendana na majonzi**katika @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Tumia dakika 5-20 za muda wa pamoja na kijana wako mkiwa wawili, kila siku unayoweza wiki hii.", - "type": "template", + "SourceText": "Message Archive", + "text": "Hifadhi ya Ujumbe", + "type": "data_list", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Kumbuka – kila unapoweza, jipumzishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", - "type": "template", - "note": "" + "SourceText": "**Message Archive** in the @global.parent_centre", + "text": "**Hifadhi ya Ujumbe** kwenye @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Remember that YOU matter!", - "text": "Kumbuka kwamba WEWE ni mtu muhimu!", - "type": "template", + "SourceText": "Vodacom Tanzania", + "text": "Vodacom Tanzania", + "type": "data_list", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "Hongera kwa kutambua hisia chanya. Nimefurahi kusikia kwamba unajisikia vizuri leo!", - "type": "template", + "SourceText": "Quick pause", + "text": "Simama haraka", + "type": "data_list", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "Hongera kwa kutambua hisia mbaya. Si ajabu kutojisikia vizuri wakati mwingine. Kumbuka kwamba hauko peke yako.", - "type": "template", + "SourceText": "Power of three", + "text": "Nguvu ya tatu", + "type": "data_list", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "Hili ni jambo zuri sana. Kila mojawapo ya tabia hizi huifanya familia yako kuwa imara zaidi. Jivunie.", - "type": "template", + "SourceText": "One thing today", + "text": "Jambo moja leo", + "type": "data_list", "note": "" }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Sheria huwasaidia vijana kuelewa wanachotakiwa kukifanya.\n\nVijana wana uwezekano mkubwa wa kufuata sheria kama mtaweka sheria hizo PAMOJA na kumsifia anapozifuata!", - "type": "template", + "SourceText": "Breathe to three", + "text": "Vuta pumzi mara tatu", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Habari zenu?\n\nMada ya leo inahusu sheria.\n\nSheria huleta amani ndani ya kaya na maelewano miongoni mwa wanafamilia.\n\nSheria huleta uwajibikaji kwa kila mwanafamilia; kwa hiyo, ni muhimu kuwa na sheria za familia.\n\nKaya yenye sheria za familia huishi kwa amani.", - "type": "template", + "SourceText": "In and out", + "text": "Ndani na nje", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Think about today", + "text": "Fikiria kuhusu leo", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Pause to respond", + "text": "Simamisha ili ujibu", + "type": "data_list", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "Hebu tusome kilichotokea kwa @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "SourceText": "Small things", + "text": "Vitu vidogo", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: \"Kila wakati unachelewa kurudi nyumbani!\"\n\n@global.w_rules_teen_boy: \"Siyo kweli, hata sijui kuchelewa maana yake ni nini! Acha kunisumbua.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "SourceText": "Body scan", + "text": "Uchunguzi wa mwili", + "type": "data_list", + "note": "" }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Je, ni sheria ipi maalum ambayo @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1 wanaweza kutengeza kwa pamoja?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "SourceText": "Feel the ground", + "text": "Kuhisi ardhi", + "type": "data_list", + "note": "" }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "Hebu tuone jinsi\n@global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy walivyofanya siku iliyofuata:\n\n@global.w_rules_female_caregiver_1: “Ninataka uburudike, @global.w_rules_teen_boy, lakini pia nina wasiwasi kuhusu wewe kuchelewa kurudi nyumbani. Unajua ni kwa nini?\"\n\n@global.w_rules_teen_boy: \"Kwa sababu unataka nipate muda wa kutosha kufanya kazi yangu ya shule?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "SourceText": "Counting sounds", + "text": "Sauti za kuhesabu", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: \"Hiyo ni kweli, na vilevile sio salama kwenye eneo hili kuwa huko nje baada ya jua kuzama. Unafikiri ni muda gani mzuri kwako kurudi nyumbani?”", - "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "SourceText": "Feel your feeling", + "text": "Hisi hisia yako", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 4 usiku?\"\n\n@global.w_rules_female_caregiver_1: “Hapo utakuwa umechelewa kidogo, vipi saa 12 jioni? Au katikati hapo?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "SourceText": "Your song", + "text": "Wimbo wako", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 12 jioni siku ninazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi?”\n\n@global.w_rules_female_caregiver_1: “Ndiyo, safi sana. Kuanzia sasa, sheria yetu hapa nyumbani ni kwamba unatakiwa kurudi nyumbani saa 12 jioni siku unazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi. Lakini kila wakati uje nyumbani na rafiki. Sawa?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "SourceText": "Ground & gratitude", + "text": "Ardhi & shukrani", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: “Sawa, @global.w_rules_female_caregiver_1”\n\n@global.w_rules_female_caregiver_1: “Asante sana, @global.w_rules_teen_boy, kwa kusaidia kuweka sheria nzuri pamoja. Ninaona fahari kuona jinsi unavyowajibika.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "SourceText": "Notice how you feel", + "text": "Chunguza unavyohisi", + "type": "data_list", + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Siku iliyofuata...\n\n@global.w_rules_female_caregiver_1: “Asante, @global.w_rules_teen_boy, kwa kuwahi kuja nyumbani. Ukimaliza kazi zako za darasani, uje tuandae chakula ambacho huwa unapendelea kwa ajili ya usiku wa leo.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "SourceText": "Pause power", + "text": "Nguvu ya kutulia", + "type": "data_list", + "note": "" }, { - "SourceText": "Making the rule together went well because...", - "text": "Kutengeneza sheria pamoja kulienda vizuri kwa sababu...", - "type": "template", + "SourceText": "Praise yourself", + "text": "Jisifie", + "type": "data_list", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Walijadili sababu za kuwekwa kwa sheria hiyo\n* @global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy\n* Sheria hiyo ilikuwa wazi, maalum na ya haki\n* @global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria hiyo", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "SourceText": "Taking care of yourself", + "text": "Kujithamini mwenyewe", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy alijua kuwa @global.w_rules_female_caregiver_1 wake alimthamini kwa sababu...", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "SourceText": "Take a pause", + "text": "Tulia", + "type": "data_list", + "note": "" }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* Alimsifia\n* Alimzawadia alipofuata sheria", - "type": "template", + "SourceText": "Physical activity", + "text": "Shughuli ya kutumia nguvu", + "type": "data_list", "note": "" }, { - "SourceText": "Let's think about what happened in this story.", - "text": "Hebu tufikirie kuhusu kilichotokea kwenye Hadithi hii.", - "type": "template", + "SourceText": "List of things", + "text": "Orodha ya vitu", + "type": "data_list", "note": "" }, { - "SourceText": "What went well here in making a rule together?", - "text": "Kwa kuweka sheria pamoja, jambo gani lilienda vizuri hapa?", - "type": "template", + "SourceText": "Connect", + "text": "Unganisha", + "type": "data_list", "note": "" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Walijadili sababu za kuwekwa kwa sheria hiyo", - "type": "template", + "SourceText": "Prevent anger", + "text": "Zuia hasira", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy", - "type": "template", - "note": "" - }, - { - "SourceText": "The rule was clear, specific and fair", - "text": "Sheria hiyo ilikuwa wazi, maalum na ya haki", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria", - "type": "template", - "note": "" - }, - { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Hiyo ni kweli, kuweka sheria zilizo wazi kwa kushirikiana na kwa njia ya utulivu na chanya huleta mafanikio makubwa!", - "type": "template", - "note": "" - }, - { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "Je, unafikiri @global.w_rules_teen_boy alijuaje kuwa @global.w_rules_female_caregiver_1 wake anamthamini?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" - }, - { - "SourceText": "She praised him", - "text": "Alimsifia", - "type": "template", + "SourceText": "Angry? Take a break", + "text": "Je, umekasirika? Pumzika", + "type": "data_list", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "Alimzawadia alipofuata sheria", - "type": "template", + "SourceText": "An emergency", + "text": "Dharura", + "type": "data_list", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Sawasawa – mwitikio chanya huleta mabadiliko makubwa!", - "type": "template", + "SourceText": "Are you in need of emergent assistance?", + "text": "Je unahitaji msaada wa dharura?", + "type": "data_list", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Sheria za kaya husaidia kuwaweka vijana wetu salama, na kuelewa kinachotarajiwa kutoka kwao. Unapomhusisha kijana katika kutengeneza sheria, anakuwa na uwezekano mkubwa wa kuzifuata.", - "type": "template", + "SourceText": "A challenge with alcohol or drugs", + "text": "Changamoto ya pombe na madawa ya kulevya", + "type": "data_list", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "SHERIA ZA KIKUNDI", - "type": "template", + "SourceText": "Would you like to talk to someone about challenges you or a loved one are experiencing with alcohol or drugs?", + "text": "Je ungependa kuongea na mtu kuhusu changamoto ya pombe au madawa wewe au mpendwa wako anapitia?", + "type": "data_list", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Panga sheria PAMOJA NA kijana wako. Anza kwanza na sheria mpya moja – unaweza kuongeza nyingine baadaye. Jadilini sababu za kuweka sheria na usikilize maoni yake.", - "type": "template", + "SourceText": "A legal problem", + "text": "Tatizo la kisheria", + "type": "data_list", "note": "" }, { - "SourceText": "REAL RULES", - "text": "SHERIA ZINAZOTEKELEZEKA", - "type": "template", + "SourceText": "Do you need legal assistance?", + "text": "Je unahitaji msaada wa kisheria?", + "type": "data_list", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "Zifanye ziweze kutekelezeka kwa kijana wako, na uwe wazi na bayana ili kusitokee kutokuelewana. Usiseme 'kwa wakati', sema 'ifikapo saa 1 jioni'.", - "type": "template", + "SourceText": "Feeling unsafe at home or in my relationship", + "text": "Kuhisi kutokuwa salama nyumbani au kwenye mahusiano yangu", + "type": "data_list", "note": "" }, { - "SourceText": "PRAISE RULES!", - "text": "SHERIA ZA USIFIAJI!", - "type": "template", + "SourceText": "Would you like to talk to someone about feeling unsafe in your home or with your partner?", + "text": "Je ungependa kuongea na mtu kuhusu kuhisi kutokuwa salama nyumbani kwako au na mwenza wako?", + "type": "data_list", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Msifie kijana wako kwa kuweka sheria pamoja na wewe, na msifie kwa kuifuata!", - "type": "template", + "SourceText": "A challenge in my family", + "text": "Changamoto kwenye familia yangu", + "type": "data_list", "note": "" }, { - "SourceText": "Online Safety", - "text": "Usalama Mtandaoni", - "type": "template", + "SourceText": "Would you like to talk to someone about difficult experiences you are having with members of your family?", + "text": "Je ungependa kuongea na mtu kuhusu mapito magumu unayopitia na wanafamilia?", + "type": "data_list", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Sheria ni muhimu ili kuwaweka salama vijana wako – hadi mtandaoni. Kuna mengi zaidi kuhusu jambo hili kwenye kipindi hiki cha Wiki inayohusu kupanga usalama, lakini sasa ngoja tungalie kitu cha kwanza!", - "type": "template", + "SourceText": "Feeling anxious or sad", + "text": "Kuhisi hofu au huzuni", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, umefanya kazi ya nyumbani?\"\n\n@global.w_rules_teen_girl: \"Subiri kidogo @global.w_rules_female_caregiver_2, ninamalizia hii video ya @global.teen_social_medium\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" - }, - { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: \"Unajua kucheza kwelikweli! Niambie kwa nini unaipenda.\"\n\n@global.w_rules_teen_girl: \"Marafiki zangu wote wamejiunga, @global.w_rules_female_caregiver_2. Nina waipendao zaidi ya 600 na wafuasi 120.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" - }, - { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: \"Ninajuvia sana jinsi unavyocheza vizuri, @global.w_rules_teen_girl. Lakini tunahitaji kuhakikisha kuwa uko salama.\n\nNinajua marafiki zako wanaangalia @global.teen_social_medium, lakini unapotumia akaunti huria, elewa kwamba kuna watu wengine wanaotazama video za vijana ili kukidhi mahitaji yao ya kingono. Wakati mwingine wanawasiliana na vijana. Wanajifanya kuwa watu wema lakini wanaishia kuwatishia na kuwadhalilisha vijana.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" - }, - { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: \"Hebu tuangalie pamoja mtandaoni jinsi unavyoweza kuendelea na hii burudani yako lakini ukiwa salama pia. Ona – unaweza kuifanya akaunti yako kuwa akaunti binafsi na kudhibiti wafuasi wako.\n\nKwa hiyo, utaweza kukubali watu unaowajua kutoka shuleni na kwenye jamii yetu, lakini si watu wanaowasiliana na wewe mtandaoni.\n\nJe, tunaweza kuweka sheria pamoja unayoweza kuitumia kwenye @global.teen_social_medium, lakini kupitia akaunti binafsi? Ninakuamini kwamba unawajua watu wa kuwakubali!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" - }, - { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: \"Ninajivunia sana wewe @global.w_rules_teen_girl.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" - }, - { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Je, ni sheria gani moja muhimu ambayo kila mmoja wenu angependa kuiweka na kijana wake?\n* Je, unadhani kijana wako atafikiriaje kuhusu sheria hiyo?\n\nKumbuka, sheria ziwe bayana na zinazotekelezeka!", - "type": "template", + "SourceText": "Would you like to talk to someone about feeling sad or anxious?", + "text": "Je ungependa kuongea na mtu kuhusu kuhisi huzuni au hofu?", + "type": "data_list", "note": "" }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Hapa kuna baadhi ya sheria zilizowekwa na familia nyingine:", - "type": "template", + "SourceText": "A loved one feeling anxious or sad", + "text": "Mpendwa wako kuhisi hofu au huzuni", + "type": "data_list", "note": "" }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Kijana anaweza kucheza nje baada ya kumaliza kazi ya nyumbani\n* Wanafamilia wote watakula mlo wa usiku pamoja\n* Kijana \"A\" ataosha vyombo siku ya Jumapili na Jumatatu, Kijana \"B\" siku ya Jumanne na Jumatano\n* Tutazungumza baina yetu kwa adabu na kwa wema\n* Unaposikiliza muziki, unatakiwa kutumia vifaa vya kusikilizia", - "type": "template", + "SourceText": "Do you have questions about what to do if you or a loved one may be feeling sad or anxious?", + "text": "Je unamaswali kuhusu nini cha kufanya kama wewe au mpendwa wako anahisi huzuni au hofu?", + "type": "data_list", "note": "" }, { - "SourceText": "Let's practice making rules.", - "text": "Hebu tufanye mazoezi ya kutengeneza sheria.", - "type": "template", + "SourceText": "Police", + "text": "Askari", + "type": "data_list", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Andika sheria moja muhimu ambayo ungependa kuiweka na kijana wako – hili ndilo litakuwa zoezi lako la nyumbani wiki hii.\n\nJe, atafikiria nini kuhusu sheria hii?", - "type": "template", + "SourceText": "National Child Helpline", + "text": "Nambari ya Kitaifa ya msaada kwa Mtoto", + "type": "data_list", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Wiki hii, tengeneza sheria moja pamoja na kijana wako.\n\nKumbuka kumsifia kijana wako baadaye!", - "type": "template", + "SourceText": "This helpline is free, available 24/7, and connects you with a professional that can help.", + "text": "Namba hii ya msaada ni bure, inapatikana 24/7 na inakuunganisha na mtaalam atakaeweza kukusaidia.", + "type": "data_list", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "Inafurahisha sana kusikia kuwa unaendelea vizuri. Wewe ni mzazi mzuri sana!", - "type": "template", + "SourceText": "Toll free", + "text": "Bila malipo", + "type": "data_list", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Pole kwa sababu leo siyo siku nzuri sana kwako. Hongera kwa kujaribu kuelewa kila kitu. Hakuna ajuaye kila kitu, lakini kwa kweli unajitahidi kwa kadri uwezavyo!", - "type": "template", + "SourceText": "Ambulance", + "text": "Gari la kusafirishia wagonjwa", + "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Tunasikitika kusikia kwamba leo siyo siku nzuri kwako. Hongera kwa kuamka kila asubuhi na kujaribu tena, hata unapokuwa umechoka. Huo ni ujasiri wa kweli na kujitoa kwa dhati!", - "type": "template", + "SourceText": "Alcoholics Anonymous (AA)", + "text": "Kikundi cha siri cha walevi (AA)", + "type": "data_list", "note": "" }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Hatua ya Kwanza: Shirikisha wengine mambo yaliyoenda vizuri na yaliyokuwa magumu", - "type": "template", + "SourceText": "AA supports men and women to help them recover from alcoholism. This service is free and completely anonymous.", + "text": "AA husaidia wanaume na wanawake kupata nafuu kutokana na uraibu wa ulevi. Huduma hii ni bure na ya siri.", + "type": "data_list", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "\"Nilijifunza mambo mengi zaidi kuhusu maisha ya kijana wangu tulipotumia muda wa pamoja wawili tu! Lakini baada ya siku ya kwanza, kijana wangu alitaka kucheza tu kwenye simu yake.\"", - "type": "template", + "SourceText": "Tanzania Legal Aid (TANLAP)", + "text": "Msaada wa Kisheria Tanzania(TANLAP)", + "type": "data_list", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Hatua ya Pili: Changia mawazo!", - "type": "template", + "SourceText": "TANLAP connects you to groups providing affordable legal aid in Tanzania.", + "text": "TANLAP inakuunganisha na makundi yanayotoa msaada nafuu wa kisheria nchini Tanzania.", + "type": "data_list", "note": "" }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "\"Hongera kwa kujaribu! Pengine unaweza kupendekeza mambo mengine ya kufurahisha unayoweza kufanya pamoja na kijana wako.\"\n\n\"Ndiyo, au mnaweza kufanya pamoja kitu fulani kwenye simu yake? Au anaweza kukuonyesha jinsi simu yake inavyofanya kazi?\"", - "type": "template", + "SourceText": "Women's Legal Aid Centre", + "text": "Kituo cha Msaada wa Kisheria wa Wanawake (WLC)", + "type": "data_list", "note": "" }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Hatua ya Tatu: Chagua moja na ujaribu!", - "type": "template", + "SourceText": "WLC is a non-profit organisation that helps to empower women to secure their rights across Tanzania.", + "text": "WLC ni shirika lisilo la faida linalosaidia kuwawezesha wanawake kupata haki zao nchini kote Tanzania.", + "type": "data_list", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Asante kwa mawazo hayo mazuri sana! Ndiyo, nitamwomba kijana wangu anioneshe jinsi simu yake inavyofanya kazi kesho akitoka shule. Je, mmoja wenu anaweza kuigiza kama kijana wangu, ili nifanye mazoezi ya kuuliza?\"", - "type": "template", + "SourceText": "Helpline", + "text": "Namba ya Msaada", + "type": "data_list", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", - "type": "template", + "SourceText": "Counselling and Family Life Organisation (CAFLO)", + "text": "Shirika la Ushauri na Maisha ya Kifamilia (CAFLO)", + "type": "data_list", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Kusifia ni ujuzi wenye nguvu katika malezi.\n\nKama tutawasifia vijana wetu wanapofanya jambo vizuri, tutawaona wakifanya mambo mazuri zaidi na zaidi!", - "type": "template", + "SourceText": "CAFLO offers counseling, empowerment and advocacy for families in Tanzania.", + "text": "CAFLO hutoa ushauri, uwezeshaji na utetezi wa familia nchini Tanzania.", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Habari zenu?\n\nMada yetu ya leo inahusu kusifia.\n\nNi vizuri kuwasifia watoto wetu wanapofanya vizuri kwa sababu tunapofanya hivyo, watazidi kuifanya tabia nzuri tunayotaka kuiona.\n\nNa tusisahau pia kujisifia sisi wenyewe tunapofanya mazuri!", - "type": "template", + "SourceText": "Mental Health Association of Tanzania", + "text": "Chama cha Afya ya Akili Tanzania", + "type": "data_list", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Matokeo ya usifiaji\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Jaribuni!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Professional organisation with a long history of supporting mental health services in Tanzania.", + "text": "Shirika la kitaaluma lenye historia ndefu ya kusaidia huduma za afya ya akili nchini Tanzania.", + "type": "data_list", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Matokeo ya usifiaji\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Tap Elderly Women's Wisdom for Youth (TEWWY)", + "text": "Tap Elderly Women's Wisdom for Youth (TEWWY) - Shirika la ushauri kwa vijana kutoka kwa wanawake waliozeeka", + "type": "data_list", "note": "" }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Shirikishaneni nyote:\n\n* Ni lini mara ya mwisho mtu alikushukuru au kusema umefanya jambo zuri sana? \n* Ulijisikiaje? \n* Je, unajisikiaje usiposhukuriwa au kusifiwa kwa kile unachokifanya? \n\nMara nyingi kama wazazi hatushukuriwi au kusifiwa vya kutosha. Pengine unaweza kuwapa vijana wako mfano sahihi kwa kuwasifia kwanza wanapofanya kitu vizuri!", - "type": "template", + "SourceText": "TEWWY has local Wisdom & Wellness Counselors who provide free and accessible mental health services, support and resources in their communities.", + "text": "TEWWY ina washauri wa hekima na ubora katika jamii wanaotoa bure msaada na rasilimali za huduma za afya ya akili zinazofikika katika jamii zao.", + "type": "data_list", "note": "" }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Kumbuka mara ya mwisho mtu alipokushukuru, au kusema umefanya jambo zuri sana.", - "type": "template", + "SourceText": "WhatsApp", + "text": "WhatsApp", + "type": "data_list", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "Ulijisikiaje?", - "type": "template", + "SourceText": "Call", + "text": "Piga", + "type": "data_list", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Mara nyingi wazazi hawashukuriwi au kusifiwa vya kutosha.", - "type": "template", + "SourceText": "TEWWY's Mental Health Q&A booklet", + "text": "Kijitabu cha \"maswali na majibu\" ya Afya ya Akili cha TEWWY", + "type": "data_list", "note": "" }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "Je, unajisikiaje usipoambiwa \"asante\" na mtu yeyote?", - "type": "template", + "SourceText": "This booklet answers some common questions about mental health and provides information that could be helpful for you or your loved one.", + "text": "Kijitabu hiki kinajibu baadhi ya maswali ya kawaida kuhusu afya ya akili na hutoa taarifa inayoweza kuwa ya msaada kwako wewe au mpendwa wako.", + "type": "data_list", "note": "" }, { - "SourceText": "Tired", - "text": "Uchovu", - "type": "template", + "SourceText": "Booklet", + "text": "Kijitabu", + "type": "data_list", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Kijana wako anaweza pia kujisikia hivyo. Hicho ndicho kinachofanya nyenzo ya malezi ya wiki hii iwe rahisi lakini muhimu: Msifie anapofanya vizuri.", - "type": "template", + "SourceText": "Notice the good", + "text": "Tambua yaliyo mazuri", + "type": "data_list", "note": "" }, { "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", "text": "Kusifia kuna nguvu sana.\n\nHebu tuangalie mfano wa @global.w_praise_female_caregiver_name na mabinti zake:", - "type": "template", + "type": "data_list", "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", "text": "Pindi @global.w_praise_female_caregiver_name anapotingwa na shughuli, mara nyingi mabinti zake wawili hupigana. Lakini leo, binti yake mkubwa alimsaidia mdogo wake kufanya kazi yake ya shule!", - "type": "template", + "type": "data_list", "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", "text": "@global.w_praise_female_caregiver_name: \"Hongera kwa kufanya kazi yako ya shule, @global.w_praise_girl, na hongera kwa kumsaidia mdogo wako, @global.w_praise_teen_girl. Ninajivunia sana wewe!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name:\n@global.w_praise_girl,\n@global.w_praise_teen_girl." }, { - "SourceText": "Let's discuss this story.", - "text": "Hebu tujadili hadithi hii.", - "type": "template", + "SourceText": "Negative instructions", + "text": "Maelekezo hasi", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Jadili pamoja:\n\n* Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?\n* Kwa nini aliwasifia?", - "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "Hebu tuone ni nini kitatokea kama @global.w_instruct_female_caregiver atamwambia @global.w_instruct_teen_girl \"USIFANYE HIKI\":", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name aliwasifia vijana wake...", - "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver alikuwa anasafisha nyumba wakati @global.w_instruct_teen_girl alikuwa anafanya mazoezi ya kucheza muziki na rafiki yake. \n\n@global.w_instruct_female_caregiver: \"Usivuruge/usichafue wakati ninasafisha nyumba. Unaniingilia!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver:" }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Ili kuwafanya wazidi kufanya hivyo mara nyingi\n* Ili kumsaidia amalize kazi zake \n* Ili kuwafanya wajisikie vizuri \n* Ili yeye mwenyewe ajisikie vizuri", - "type": "template", - "note": "" + "SourceText": "@global.w_instruct_teen_girl: “But I need to practise for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: \"Lakini ninahitaji kufanya mazoezi kwa ajili ya mashindano ya shule. Hujawahi kuniruhusu kufanya kitu chochote.\" \n\n@global.w_instruct_female_caregiver: \"Usinijibu!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl:\n@global.w_instruct_female_caregiver:" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?", - "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Aah!! Kwanini huwa unanifokea kila wakati????”\n\n@global.w_instruct_female_caregiver (akijisemea): \"Huyu mtoto analeta shida kila wakati.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl:\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Why did she praise them?", - "text": "Kwa nini aliwasifia?", - "type": "template", + "SourceText": "Positive instructions", + "text": "Maelekezo chanya", + "type": "data_list", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Ili kuwafanya wazidi kufanya hivyo mara nyingi", - "type": "template", - "note": "" + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Asanteni kwa kufikiria pamoja!\n\nHebu turudi nyuma tuone kinachoweza kutokea kama @global.w_instruct_female_caregiver atatoa maelekezo chanya:", + "type": "data_list", + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "To help her finish her work", - "text": "Kumsaidia amalize kazi yake", - "type": "template", - "note": "" + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practising dance moves with her friend. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practise dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"", + "text": "@global.w_instruct_female_caregiver alikuwa anasafisha nyumba wakati @global.w_instruct_teen_girl alikuwa akifanya mazoezi ya kucheza na rafiki yake.\n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ni vizuri kukuona ukifanya mazoezi ya kucheza na rafiki yako. Tafadhali kafanyieni nje ili niweze kumaliza kufanya usafi wa nyumba. Baadaye, unaweza kunionesha unavyocheza.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver:\n“@global.w_instruct_teen_girl," }, { - "SourceText": "To make them feel good", - "text": "Ili kuwafanya wajisikie vizuri", - "type": "template", - "note": "" + "SourceText": "@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl:\n@global.w_instruct_female_caregiver!”" }, { - "SourceText": "To make herself feel good", - "text": "Ili yeye mwenyewe ajisikie vizuri", - "type": "template", - "note": "" + "SourceText": "@global.w_instruct_teen_girl and her friend enjoy practising their dance moves.", + "text": "@global.w_instruct_teen_girl na rafiki yake wanafurahia mazoezi yao ya kucheza muziki.", + "type": "data_list", + "note": "The string @global.w_instruct_teen_girl should not be translated." }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Mambo yote hayo ni ya kweli!\n\nPindi vijana wake wanapofurahi, @global.w_praise_female_caregiver_name hujisikia furaha. Na aliweza kufanya kazi zake.", - "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practising outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: \"Asante kwa kufanyia mazoezi nje wakati nilipokuwa nikimalizia kufanya usafi, @global.w_instruct_teen_girl. Sasa ninamuda wakuangalia namna unavyocheza mziki.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver:\n@global.w_instruct_teen_girl." }, { - "SourceText": "The same can work for you!", - "text": "Wewe pia unaweza kufanya hivyo!", - "type": "template", - "note": "" + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: \"Waoow, @global.w_instruct_teen_girl! Unacheza vizuri sana!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver:\n@global.w_instruct_teen_girl!" }, { - "SourceText": "SEE IT", - "text": "ONA", - "type": "template", + "SourceText": "Ignoring our emotions", + "text": "Anapuuzia hisia zetu", + "type": "data_list", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Tafuta kitu chochote anachofanya kijana wako kwa ajili ya kusaidia au kilicho kizuri, na umsifie kwa kitu hicho. Anaweza asioneshe furaha yake, lakini utamwona akifanya tena kitu hicho kizuri. Pia itamthibitishia kuwa unatambua anachokifanya na unajali.", - "type": "template", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "Hebu tuangalie mfano wa jinsi ambavyo wakati mwingine msongo wa mawazo unaweza kutuzidia sana, sisi sote:", + "type": "data_list", "note": "" }, { - "SourceText": "SAY IT", - "text": "SEMA", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver: \"Niache nilivyo, kafanye mambo yako!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver:" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Onyesha shauku – unaposema jambo, liseme kwa moyo wa dhati!", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: “Nimekosea nini? Huwa hunisikilizi!”\n\n@global.w_stress_male_caregiver: \"Nimesema niache nilivyo, la sivyo utapata kipigo!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver:" }, { - "SourceText": "REPEAT IT", - "text": "RUDIA", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: \"Ona! Nimejenga nyumba!”", + "type": "data_list", + "note": "The string @global.w_stress_girl: should not be translated." }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Jaribu kutafuta kitu cha kukufanya umshukuru kila siku. Hata kitu kidogo sana.", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: \"Nani anajali nyumba yako ya kijinga hiyo!\"", + "type": "data_list", + "note": "The string @global.w_stress_teen_boy_1: should not be translated." }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Unaweza pia kuwasifia watu wazima wengine kwenye kaya yako. Chunguza mwitikio utakavyokuwa!", - "type": "template", + "SourceText": "Acknowledging our emotions", + "text": "Kutambua hisia zetu", + "type": "data_list", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "Hebu tufanye mazoezi ya kusifia.", - "type": "template", - "note": "" + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Asanteni kwa kufikiria pamoja! Hebu turudi siku za nyuma ili kuelewa @global.w_stress_male_caregiver anachokifanya sasa:", + "type": "data_list", + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Shirikishaneni nyote:\n\n* Je, unaweza kumsifia kijana wako kwa kitu gani?\n* Je, ni kitu gani ambacho mtu mwingine amefanya vizuri kwenye kipindi hiki? Mwambie!\n* Je, ulijisikiaje kumsifia mtu?\n* Je, ulijisikiaje kusifiwa?", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver amefukuzwa kazi. Alikuwa amekaa nyumbani akihisi kufadhaika na msongo wa mawazo, pindi @global.w_stress_teen_boy_1 alipoingia.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Wakati mwingine ni vigumu kufikiria kitu gani cha kumsifia kijana wako! Haya ni mawazo kutoka kwa wazazi wengine:", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: \"Ninaomba pesa ya kununulia mpira.\"\n\n@global.w_stress_male_caregiver (akishusha pumzi): “Samahani, mwanangu. Siku ya leo imeniendea vibaya. Bosi amenifukuza kazi.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Kumtendea mtu wema\n* Kusafisha chumba chake\n* Kula pamoja na familia\n* Kuwasalimu wanafamilia wengine\n* Kuwatunza ndugu zake\n* Kuwahi kurudi nyumbani\n* Kuwafikiria wengine\n* Kusema 'tafadhali' au 'asante'\n* Kwenda shule\n* Kufanya kazi za nyumbani au kazi ya shule\n* Kumaliza wakati wa kula kwa amani", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “Ooh, jamani! Ninahitaji sare mpya ya shule.”\n\n@global.w_stress_male_caregiver: \"Nitajaribu, mwanangu. Na kazi ya @global.w_stress_female_caregiver yako itatusaidia wakati ninatafuta kazi nyingine.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver:\n@global.w_stress_female_caregiver’s" }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Zoezi la nyumbani la wiki hii ni kumsifia kijana wako mara moja kwa siku. Utatumia sekunde 10 tu!", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: \"Je, ninaweza pia kusaidia kutafuta kazi, @global.w_stress_male_caregiver?\"\n\n@global.w_stress_male_caregiver: “Hapana, usijali, @global.w_stress_teen_boy_1. Ninashukuru kwa msaada wako. Jambo muhimu zaidi ni kwamba ufanye bidii shuleni. Ninakushukuru kwa kunisikiliza.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver?”\n@global.w_stress_male_caregiver:\n@global.w_stress_teen_boy_1." }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Kujithamini ni jambo muhimu sana.", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “Hebu tukacheze mpira pamoja. Itanisaidia kidogo kuondokana na huu msongo wa mawazo.”\n\n@global.w_stress_teen_boy_1: “Sawa, @global.w_stress_male_caregiver!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver:\n@global.w_stress_teen_boy_1:\n@global.w_stress_male_caregiver!”" }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Ni jambo la kuvutia sana, ninafurahi sana mambo kuona yanaenda vizuri. Endeleza kazi hii nzuri.", - "type": "template", - "note": "" + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Kumbuka wakati ulipokuwa kijana.\n\nJe, kulikuwa na wakati wowote ambao ulikuwa hatarini lakini hukuweza kuiambia familia yako kwa sababu wangekasirika?\n\nHali hiyo ILIKARIBIA KABISA kumtokea @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl! Hebu tuangalie:", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl!" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Tenga muda kidogo ili ufurahie mafanikio uliyoyapata, licha ya mambo mengine yote unayopaswa kuyafanya kila siku.", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: \"Usiwaambie wakubwa, leo usiku nitaenda baa na marafiki zangu.\"\n\n@global.w_stress_teen_girl: \"Nenda ukale raha! Mimi nimewaambia nitakuwa na shoga yangu, lakini ninaenda kwenye bonge la sherehe.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2:\n@global.w_stress_teen_girl:" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Familia nyingi zina msongo wa mawazo kutokana na pesa, hasa pale vijana wanapoendelea kuomba vitu!\n\nTunapotengeneza bajeti pamoja, tunaweza kukubaliana jinsi ya kufanya matumizi pamoja NA kuweka akiba ili kuzuia msongo wa mawazo na kutekeleza malengo ya familia zetu.", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: \"Nadhani hawa jamaa wanafanya biashara ya madawa ya kulevya. Sisi sote tunaweza kukamatwa. Lakini siwezi kuwaambia wazazi wangu – watakasirika sana.\"", + "type": "data_list", + "note": "The string @global.w_stress_teen_boy_2: should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Habari zenu?\n\nMada ya leo inahusu kutengeneza bajeti ya familia.\n\nKutengeneza bajeti ni muhimu, lakini kutengeneza bajeti kwa kuhusisha familia nzima ni muhimu zaidi.\n\nKufanya hivyo pamoja husaidia kuongeza uelewa kuhusu jinsi mnavyotumia pesa kama familia na kiasi mnachoweka akiba kwa ajili ya familia, na mnaweza hata kubuni mipango ya kuweka akiba kama familia.", - "type": "template", - "note": "" + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: \"Ninaogopa. Kila mtu amelewa sana hawezi kuendesha gari kunipeleka nyumbani. Huyu mvulana anasema atanipeleka lakini anataka twende kwanza nyumbani kwake. Siwezi kuwaambia wazazi wangu – niliwadanganya ili niweze kuja kwenye sherehe hii.\"", + "type": "data_list", + "note": "The string @global.w_stress_teen_girl: should not be translated." }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Hadithi – haikufanikiwa…\n* Zoezi la kutengeneza bajeti\n* Hadithi & majadiliano – ilifanikiwa!\n* Hadithi & majadiliano – hayakufanikiwa…\n* Majadiliano kuhusu njia za kuweka akiba\n* Zoezi la kuweka akiba\n*Nyenzo: Jinsi ya kutengeneza bajeti & kuweka akiba\nFIKIRI – CHAGUA – TENGENEZA – PANGA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nShall we use an imaginary ‘@global.safety_word_example_1’ as @global.safety_word? Just say something about @global.safety_word_example_1, I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn’t.\"", + "text": "Hizi ni hali za hatari! Kwa bahati nzuri, @global.w_stress_teen_boy_2 na @global.w_stress_teen_girl walikumbuka kile @global.w_stress_parent alichowaambia:\n\n\"Ninajali sana usalama wenu kuliko kitu chochote. Mkipata shida yoyote, au kuogopa kitu, mnaweza kunipigia simu nije kuwasaidia wakati wowote, au kunieleza shida hiyo.\n\nJe, tunaweza kutumia ya kufikirika '‘@global.safety_word_example_1 kama @global.safety_word? Sema tu kitu kuhusu @global.safety_word_example_1, Ninaahidi kuwa nitajitahidi kadri ya uwezo wangu kusaidia na sitakasirika – hata mkiwa mnafanya jambo ambalo hampaswi kulifanya.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent\n‘@global.safety_word_example_1’\n@global.safety_word?\n@global.safety_word_example_1," + }, + { + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, how is @global.safety_word_example_1 doing now?\"\n\n@global.w_stress_parent (on the other side of the phone): \"Not well. We need you at home. I will come pick you up right away. Where are you?\"", + "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, unaendeleaje @global.safety_word_example_1 kwa sasa?\"\n\n@global.w_stress_parent (kwa upande mwingine wa simu): \"Sio sawa. Tunakuhitaji nyumbani. Nitakuja kukuchukua mara moja. Uko wapi?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl:\n\"@global.w_stress_parent,\n@global.safety_word_example_1\n@global.w_stress_parent" + }, + { + "SourceText": "@global.w_stress_teen_boy_2 (thinking): \"I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Maybe @global.w_stress_parent knows what to do.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, I just remembered, @global.safety_word_example_1 said she will come visit tomorrow.\"\n\n@global.w_stress_parent (on the other side of the phone): \"Okay, I need you at home to help get things ready. I will come pick you up now. Where are you?\"", + "text": "@global.w_stress_teen_boy_2 (anafikiri): \" Nadhani marafiki zangu wapo katika changamoto. Sitaki kuacha kuwa rafiki yao, lakini na wasiwasi. Labda @global.w_stress_parent anajua cha kufanya.\"\n\n@global.w_stress_teen_boy_2: \"@global.w_stress_parent, nimekumbuka, @global.safety_word_example_1 alisema atakuja kututembelea kesho.\"\n\nBaba (katika upande mwingine wa simu): \"Sawa, ninakuhitaji nyumbani kusadia kuweka vitu tayari. Nitakuja kukuchukua sasa. Upo wapi?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent\n@global.w_stress_teen_boy_2:\n\"@global.w_stress_parent,\n@global.safety_word_example_1\n@global.w_stress_parent" + }, + { + "SourceText": "Money problems", + "text": "Matatizo ya pesa", + "type": "data_list", "note": "" }, { "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", "text": "Kupata mahitaji ya kila siku linaweza kuwa jambo gumu. Familia nyingi zina tatizo hili!\n\nAkiwemo @global.w_money_grandma – hebu tuangalie:", - "type": "template", + "type": "data_list", "note": "The string @global.w_money_grandma should not be translated." }, { "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", "text": "@global.w_money_grandma: \"Nimekuwa nikiwatunza wajukuu wangu, @global.w_money_teen_girl na @global.w_money_teen_boy, tangu wazazi wao walipofariki wakiwa wadogo. Mara nyingi tunahangaika sana kupata pesa, kwani ninapata kiasi kidogo tu cha msaada.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_money_grandma:\n@global.w_money_teen_girl\n@global.w_money_teen_boy," }, { "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", "text": "@global.w_money_grandma: \"Nina msongo mkubwa wa mawazo. Sina pesa yoyote iliyobaki. Na sasa – kwa mara nyingine – ninapambana na vijana wangu kuhusu vitu wanavyotaka.\"", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "type": "data_list", + "note": "The string @global.w_money_grandma: should not be translated." }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja. Unahitaji:\n\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", - "type": "template", + "SourceText": "Preparing for the future", + "text": "Kujianda kwa ajili ya wakati ujao", + "type": "data_list", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "Bajeti ya familia inaweza kumsaidia @global.w_money_grandma – na WEWE!", - "type": "template", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Kazi nzuri sana, mmekamilisha hatua 3 za kwanza!\n\nHebu tuone jinsi @global.w_money_grandma alivyoweka mpango wa pesa zake, kama tu mnavyofanya:", + "type": "data_list", "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja.", - "type": "template", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "\"Ninataka wajukuu wangu wawe na maisha bora siku zijazo, lakini sijui mahali pa kupata pesa. Matapeli wa mikopo ni hatari na kuwalipa ni ghali sana.\n\nNinapaswa kuweka akiba, lakini ninahisi hilo haliwezekani!\"", + "type": "data_list", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "Unahitaji:\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", - "type": "template", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "\"Lengo langu ni kuhakikisha mjukuu wangu wa kiume ataweza kupata elimu ya juu ya sekondari na mjukuu wangu wa kike anaweza kutimiza ndoto yake ya kusoma chuo kikuu. Ninawezaje kuweka akiba ya pesa nyingi kutokana na pesa kidogo nilizo nazo?\"", + "type": "data_list", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Fikiria mambo tunayotumia pesa kila mwezi.", - "type": "template", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "\"Ninajua – hebu tuanze na mpango! Kwanza, ngoja nitengeneze bajeti – nipange ninavyoweza kuweka akiba ya pesa zangu. Halafu nitaweka akiba ya pesa kidogo tu kwa wakati mmoja – nitajiunga hata na kikundi cha kuweka na kukopa.\"", + "type": "data_list", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora picha za vitu vyote vinavyokufanya wewe na familia yako mtumie pesa kila mwezi.\n* Andika pembeni mwa kila picha kiasi ambacho kitu hicho kinagharimu kila mwezi. (Hakuna haja ya kuwashirikisha wengine viwango hivyo kama hautaki kufanya hivyo.)\n* Jumlisha kiasi cha pesa unazotakiwa kutumia kila mwezi.", - "type": "template", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "\"Ninapaswa pia kuzungumza na wajukuu wangu wachague vitu vinavyotuwezesha kutumia pesa kidogo kila wiki. Watanisaidia kufikiria vitu tunavyovitaka lakini hatuvihitaji.\"", + "type": "data_list", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Inastaajabisha! Umemaliza hatua ya kwanza!\n\nTuendelee!", - "type": "template", - "note": "" + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "Miaka michache baadaye:\n\n\"Ona, tumetimiza ndoto zetu! Sikukopa pesa yoyote kwa marafiki au kwa matapeli wa mikopo. Kwa kuweka akiba kidogokidogo kila wiki, niliweza kulipia ada ya sekondari kwa @global.w_money_teen_boy na kuweka akiba kwa ajili ya chuo kikuu ya @global.w_money_teen_girl. Ninajivunia sana jambo hili.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_money_teen_boy’s\n@global.w_money_teen_girl’s" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* chakula\n* maji & umeme\n* mavazi\n* akaunti\n* king'amuzi cha runinga\n* vifaa vya usafi wa mwili\n* saluni\n* muda wa maongezi\n* ada ya shule\n* usafiri\n* bima\n* matibabu\n* michezo/burudani\n* kodi ya nyumba\n* mikopo\n* ibada", - "type": "template", + "SourceText": "Coping with emergencies", + "text": "Kuendana na dharura", + "type": "data_list", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Zungumzeni pamoja kuhusu mahitaji yenu na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", - "type": "template", - "note": "" + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Kuweka akiba ni muhimu kwa sababu moja zaidi: dharura! @global.w_money_grandma naye alijifunza hivyo:", + "type": "data_list", + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Mara nyingi watu huona mambo kwa namna inayotofautiana. Tunapozungumzia mahitaji na matamanio yetu, tunaelewana vizuri zaidi na tunaweza kufanya uchaguzi mzuri zaidi pamoja kuhusu jinsi ya kutumia pesa zetu.\n\nAngalieni orodha yenu ya vitu mnavyotumia pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", - "type": "template", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Usiku mmoja kulikuwa na dhoruba ya kutisha iliyoezua paa la nyumba yangu. Kila kitu kiliharibiwa na mafuriko. Ghafla ilibidi nitafute pesa za kukarabati paa. Nilihisi kushindwa kabisa.”", + "type": "data_list", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Fikirieni kuhusu mahitaji na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", - "type": "template", + "SourceText": "Making a rule", + "text": "Kutunga sheria", + "type": "data_list", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Angalieni orodha yenu ya vitu mnavyotumia, pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", - "type": "template", - "note": "" + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "Hebu tusome kilichotokea kwa @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1:", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1:" }, { - "SourceText": "Make a budget!", - "text": "Tengeneza bajeti!", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: \"Kila wakati unachelewa kurudi nyumbani!\"\n\n@global.w_rules_teen_boy: \"Siyo kweli, hata sijui kuchelewa maana yake ni nini! Acha kunisumbua.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1:\n@global.w_rules_teen_boy:" }, { - "SourceText": "Make a budget as one big family!", - "text": "Tengeneza bajeti kama familia moja kubwa!", - "type": "template", - "note": "" + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Je, ni sheria ipi maalum ambayo @global.w_rules_teen_boy na @global.w_rules_female_caregiver_1 wanaweza kutengeza kwa pamoja?", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Mtu mmoja ajitolee kuwashirikisha wengine orodha yake (Kama hakuna mtu anayejitolea, mnaweza kutengeneza orodha mpya pamoja)\n* Gawaneni majukumu – wengine watakuwa watu wazima, wengine watakuwa vijana.\n* Amueni kipato chenu kwa mwezi ni kiasi gani.\n* Chukueni hindi au maharage kadhaa au kitu chochote chenye chembechembe nyingi – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni pamoja mtatumia kiasi gani kwenye kitu gani, na muweke mawe/vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", - "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "Hebu tuone jinsi gani,\n@global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy walivyofanya siku iliyofuata:\n\n@global.w_rules_female_caregiver_1: “Ninataka uburudike, @global.w_rules_teen_boy, lakini pia nina wasiwasi kuhusu wewe kuchelewa kurudi. \nUnajua ni kwa nini?\"\n\n@global.w_rules_teen_boy: \"Kwa sababu unataka nipate muda wa kutosha kufanya kazi yangu ya shule?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1:\n@global.w_rules_teen_boy,\n@global.w_rules_teen_boy:" }, { - "SourceText": "Make a budget as a family!", - "text": "Tengeneza bajeti kama familia!", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: \"Hiyo ni kweli, na vilevile sio salama kwenye eneo hili kuwa huko nje baada ya jua kuzama. Unafikiri ni muda gani mzuri kwako kurudi nyumbani?”", + "type": "data_list", + "note": "The string @global.w_rules_female_caregiver_1: should not be translated." }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Andikeni kipato chenu kwa mwezi.\n* Chukueni hindi au maharage kadhaa au kitu chochote cha chembechembe – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni mtatumia kiasi gani kwenye kitu gani, na muweke hindi /vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", - "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 4 usiku?\"\n\n@global.w_rules_female_caregiver_1: “Hapo utakuwa umechelewa kidogo, vipi saa 12 jioni? Au katikati hapo?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy:\n@global.w_rules_female_caregiver_1:" }, { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Kazi nzuri sana, mmekamilisha hatua 3 za kwanza!\n\nHebu tuone jinsi @global.w_money_grandma alivyoweka mpango wa pesa zake, kama tu mnavyofanya:", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “Je, ninaweza kurudi nyumbani saa 12 jioni siku ninazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi?”\n\n@global.w_rules_female_caregiver_1: “Ndiyo, safi sana. Kuanzia sasa, sheria yetu hapa nyumbani ni kwamba unatakiwa kurudi nyumbani saa 12 jioni siku unazoamka kwenda shule na saa 4 usiku siku za Ijumaa na Jumamosi. Lakini kila wakati uje nyumbani na rafiki. Sawa?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy:\n@global.w_rules_female_caregiver_1:" }, { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "\"Ninataka wajukuu wangu wawe na maisha bora siku zijazo, lakini sijui mahali pa kupata pesa. Matapeli wa mikopo ni hatari na kuwalipa ni ghali sana.\n\nNinapaswa kuweka akiba, lakini ninahisi hilo haliwezekani!\"", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: “Sawa, @global.w_rules_female_caregiver_1”\n\n@global.w_rules_female_caregiver_1: “Asante sana, @global.w_rules_teen_boy, kwa kusaidia kuweka sheria nzuri pamoja. Ninaona fahari kuona jinsi unavyowajibika.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy:\n@global.w_rules_female_caregiver_1”\n@global.w_rules_female_caregiver_1:\n@global.w_rules_teen_boy," }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "\"Lengo langu ni kuhakikisha mjukuu wangu wa kiume ataweza kupata elimu ya juu ya sekondari na mjukuu wangu wa kike anaweza kutimiza ndoto yake ya kusoma chuo kikuu. Ninawezaje kuweka akiba ya pesa nyingi kutokana na pesa kidogo nilizo nazo?\"", - "type": "template", - "note": "" + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Siku iliyofuata...\n\n@global.w_rules_female_caregiver_1: “Asante, @global.w_rules_teen_boy, kwa kuwahi kuja nyumbani. Ukimaliza kazi zako za darasani, uje tuandae chakula ambacho huwa unapendelea kwa ajili ya usiku wa leo.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1:\n@global.w_rules_teen_boy," }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "\"Ninajua – hebu tuanze na mpango! Kwanza, ngoja nitengeneze bajeti – nipange ninavyoweza kuweka akiba ya pesa zangu. Halafu nitaweka akiba ya pesa kidogo tu kwa wakati mmoja – nitajiunga hata na kikundi cha kuweka na kukopa.\"", - "type": "template", + "SourceText": "Online safety", + "text": "Usalama mitandaoni", + "type": "data_list", "note": "" }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "\"Ninapaswa pia kuzungumza na wajukuu wangu wachague vitu vinavyotuwezesha kutumia pesa kidogo kila wiki. Watanisaidia kufikiria vitu tunavyovitaka lakini hatuvihitaji.\"", - "type": "template", - "note": "" + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the @global.weekly_workshop on safety planning, but let’s already have a first look now!", + "text": "Sheria ni muhimu ili kuwaweka salama vijana wako – hadi mtandaoni. Kuna mengi zaidi kuhusu jambo hili kwenye @global.weekly_workshop inayohusu kupanga usalama, lakini sasa ngoja tungalie kitu cha kwanza!", + "type": "data_list", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "Miaka michache baadaye:\n\n\"Ona, tumetimiza ndoto zetu! Sikukopa pesa yoyote kwa marafiki au kwa matapeli wa mikopo. Kwa kuweka akiba kidogokidogo kila wiki, niliweza kulipia ada ya sekondari kwa @global.w_money_teen_boy na kuweka akiba kwa ajili ya chuo kikuu ya @global.w_money_teen_girl. Ninajivunia sana jambo hili.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, umefanya kazi ya nyumbani?\"\n\n@global.w_rules_teen_girl: \"Subiri kidogo @global.w_rules_female_caregiver_2, ninamalizia hii video ya @global.teen_social_medium\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2:\n\"@global.w_rules_teen_girl,\n@global.w_rules_teen_girl:\n@global.w_rules_female_caregiver_2,\n@global.teen_social_medium" }, { - "SourceText": "What are your family savings goals?", - "text": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: \"Unajua kucheza vizuri! Niambie kwa nini unaipenda.\"\n\n@global.w_rules_teen_girl: \"Marafiki zangu wote wamejiunga, @global.w_rules_female_caregiver_2. Nina waipendao zaidi ya 600 na wafuasi 120.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2:\n@global.w_rules_teen_girl:\n@global.w_rules_female_caregiver_2." }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Hayo ni malengo mazuri sana!\n\nHilo ni lengo zuri sana! Tunapopanga pamoja bajeti nzuri na mpango mzuri wa kuweka akiba, tunaweza kufanikiwa na kuona fahari!", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: \"Ninajuvia sana jinsi unavyocheza vizuri, @global.w_rules_teen_girl. Lakini tunahitaji kuhakikisha kuwa uko salama.\n\nNinajua marafiki zako wanaangalia @global.teen_social_medium, lakini unapotumia akaunti huria, elewa kwamba kuna watu wengine wanaotazama video za vijana ili kukidhi mahitaji yao ya kingono. Wakati mwingine wanawasiliana na vijana. Wanajifanya kuwa watu wema lakini wanaishia kuwatishia na kuwadhalilisha vijana.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2:\n@global.w_rules_teen_girl.\n@global.teen_social_medium," }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Sisi sote tuna ndoto kwa ajili ya familia zetu, kama alivyo @global.w_money_grandma. Kwa kutenga pesa kidogokidogo kila mwezi, unaweza pia kuzitimiza malengo hayo!", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: \"Hebu tuangalie pamoja mtandaoni jinsi unavyoweza kuendelea na hii burudani yako lakini ukiwa salama pia. Ona – unaweza kuifanya akaunti yako kuwa akaunti binafsi na kudhibiti wafuasi wako.\n\nKwa hiyo, utaweza kukubali watu unaowajua kutoka shuleni na kwenye jamii yetu, lakini si watu wanaowasiliana na wewe mtandaoni.\n\nJe, tunaweza kuweka sheria pamoja unayoweza kuitumia kwenye @global.teen_social_medium, lakini kupitia akaunti binafsi? Ninakuamini kwamba unawajua watu wa kuwakubali!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2:\n@global.teen_social_medium," }, { - "SourceText": "What are your family savings goals?", - "text": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: \"Ninajivunia sana wewe @global.w_rules_teen_girl.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2:\n@global.w_rules_teen_girl\"" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "Hilo ni lengo zuri sana!\n\nKwa kutengeneza bajeti nzuri na mpango mzuri wa kuweka akiba, unaweza kufanikiwa na kuona fahari!", - "type": "template", + "SourceText": "Home late", + "text": "Kuchelewa nyumbani", + "type": "data_list", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Kuweka akiba ni muhimu kwa sababu moja zaidi: dharura! @global.w_money_grandma naye alijifunza hivyo:", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "Hebu tusome kile kilichotokea kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake:", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver:" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Usiku mmoja kulikuwa na dhoruba ya kutisha iliyoezua paa la nyumba yangu. Kila kitu kiliharibiwa na mafuriko. Ghafla ilibidi nitafute pesa za kukarabati paa. Nilihisi kushindwa kabisa.”", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa kurudi!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n“@global.w_consequence_teen_boy_1!" }, { - "SourceText": "Let's talk about this story.", - "text": "Hebu tuzungumzie hadithi hii.", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: \"Samahani @global.w_consequence_male_caregiver – unaweza kurudi kulala\".\n\n@global.w_consequence_male_caregiver: \"Muda uliotakiwa kurudi nyumbani umeshapita SANA!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver:" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "Kwa @global.w_money_grandma, dhoruba ilitokea.\n\nJe, kuna dharura gani nyingine zinazoweza kutokea?", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: \"@global.w_consequence_teen_boy_1, haufuati sheria yetu! Nitakuchapa sana!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver,\n@global.w_consequence_male_caregiver:\n“@global.w_consequence_teen_boy_1," }, { - "SourceText": "Let's think about this story.", - "text": "Hebu tufikirie kuhusu hadithi hii.", - "type": "template", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Hiyo siyo sawa! Huwa siku zote hunisikilizi!! Ninakuchukia!”", + "type": "data_list", + "note": "The string @global.w_consequence_teen_boy_1: should not be translated." + }, + { + "SourceText": "Discussing and using consequences", + "text": "Kujadili na kutumia adhabu", + "type": "data_list", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "Kwa @global.w_money_grandma, dhoruba ilitokea.", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "Hebu turudi kwa @global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Je, kuna dharura gani nyingine zinazoweza kutokea kwenye familia yako?", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: \"Nina wasiwasi kuona mara nyingi bado unachelewa kurudi nyumbani, @global.w_consequence_teen_boy_1. Je, tufanye nini ili kukusaidia ukumbuke kuwahi kurudi nyumbani?\n\n@global.w_consequence_teen_boy_1: \"Je, nikiwahi kurudi nyumbani, ninaweza kuchelewa kulala kwa dakika 30 kuliko kawaida?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n@global.w_consequence_teen_boy_1.\n@global.w_consequence_teen_boy_1:" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Dharura zinaweza kutokea kwenye familia yoyote. Kuweka akiba ya pesa kwa ajili ya dharura hizi KABLA hazijatokea huzuia wasiwasi mwingi na msongo wa mawazo wa ghafla!", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: Hilo ni wazo zuri! Na usipofuata hiyo sheria, tufanyeje?\n\n@global.w_consequence_teen_boy_1 (akiumauma maneno): \"Mgmluuhm\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: \"Sema! Najua una mawazo mazuri.\"\n\n@global.w_consequence_teen_boy_1: \"Sawa…. Vipi kama: Nifanye kazi ya shuleni?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n@global.w_consequence_teen_boy_1:" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Jadilini pamoja:\n* Je, kuna njia zipi tunazoweza kuzitumia kujiwekea akiba?\n* Je, kuna faida na hasara zipi kwa kila njia ya kujiwekea akiba?\n\nKuelewa vizuri kila njia kutawasaidia kuamua njia iliyo bora zaidi ya kuweka akiba kwa familia yenu.\n\nNjia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: \"Hakuna shida kwa sababu unatakiwa pia ufanye kazi yako ya shuleni. Ukisahau sheria hiyo, basi hautaenda kuwatembelea marafiki zako siku inayofuata.\"\n\n@global.w_consequence_teen_boy_1: \"Sawa, @global.w_consequence_male_caregiver.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver.\"" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", - "type": "template", - "note": "" + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Siku iliyofuata...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Sasa hivi ni saa ngapi? Umechelewa! ”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver:\n“@global.w_consequence_teen_boy_1!" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Kuna njia mbalimbali tunazoweza kuzitumia kujiwekea akiba: nyumbani, kununua vitu tunavyoweza kuviuza baadaye, benki, au kwenye kikundi cha kuweka akiba.\n\nFikiria faida na hasara za kila njia ya kujiwekea akiba.", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: \"Samahani, @global.w_consequence_male_caregiver – unaweza kurudi kulala.\"\n\n@global.w_consequence_male_caregiver: \"Muda uliotakiwa kurudi nyumbani umeshapita SANA!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver:" }, { - "SourceText": "What is the best savings option for your family?", - "text": "Je, njia ipi ya kujiwekea akiba ni bora zaidi kwa familia yenu?", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: \"Naomba nikueleze, @global.w_consequence_male_caregiver, naomba nikueleze.\"\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, sasa hivi ni usiku wa manane na umerudi nyumbani baada ya muda tuliokubaliana. Hata uwe na sababu gani, ni lazima uelewe kwamba hii haikubaliki. Mimi na @global.w_consequence_female_caregiver tulikuwa na wasiwasi sana.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver,\n@global.w_consequence_male_caregiver:\n“@global.w_consequence_teen_boy_1,\n@global.w_consequence_female_caregiver" }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Njia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: \"Marafiki zangu walitaka niendelee kukaa nao. Walikuwa wananiita mtoto nilipotaka kuwahi kurudi nyumbani.”\n\n@global.w_consequence_male_caregiver: \"Najua ni vigumu kuwakatalia marafiki zako. Hebu tulale, tupumzike kwanza, halafu kesho asubuhi tutazungumza kuhusu jambo hili.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_male_caregiver:" }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Pangeni jinsi mnavyoweza kuweka akiba ya pesa, ili muweze kukabiliana na dharura na kutimiza malengo ya familia yenu!", - "type": "template", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: \"Samahani, nilikupa wasiwasi wewe na @global.w_consequence_female_caregiver.\"\n\n@global.w_consequence_male_caregiver: \"Asante. Sasa nenda ulale, lakini ngoja nikukumbushe tena, ukichelewa kurudi nyumbani kuliko tulivyokubaliana, kesho usiku hautaruhusiwa kutoka nyumbani.”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1:\n@global.w_consequence_female_caregiver.”\n@global.w_consequence_male_caregiver:" }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "Kama mnaweza kuweka akiba hata kiasi kidogo kwa ajili ya siku zijazo au dharura – kinaweza kusaidia sana.\n* Wekeni mduara uitwao \"dharura\".\n* Wekeni mduara uitwao \"malengo ya familia\".\n* Sasa jaribuni kugawanya pesa zenu ili muweze kuweka akiba kidogo kila mwezi kwa mambo yote haya.", - "type": "template", + "SourceText": "The new phone", + "text": "Simu mpya", + "type": "data_list", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "HONGERA!!! Mmetengeneza bajeti ya familia yenu – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu kwenye kikundi chenu anastahili kusifiwa, au sivyo?", - "type": "template", - "note": "" + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "Hebu tuangalie kile kilichotokea kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 pindi @global.w_solve_teen_girl alipopewa simu na mvulana… simu!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "HONGERA!!! Mmetengeneza bajeti ya familia yako – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu katika familia yako anastahili kusifiwa, au sivyo?", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: \"@global.w_solve_teen_girl, umekitoa wapi hicho?\"\n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 ameninunulia. Ni simu nzuri, @global.w_solve_female_caregiver_1. Inapiga picha nzuri sana!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1:\n“@global.w_solve_teen_girl,\n@global.w_solve_teen_girl:\n“@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "HONGERA!!! Umetengeneza bajeti yako – kumbuka kufanya zoezi hili tena na wanafamilia wengine – kama mtakubaliana kuhusu mpango fulani pamoja, mpango huo utaleta mabadiliko makubwa!", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: \"Sitaki kuona hicho kitu cha bei ghali! Huyo kijana si mtu mzuri! Hivi anafikiria utamlipaje hiyo simu?!”\n\n@global.w_solve_teen_girl: “Sio hivyo, @global.w_solve_female_caregiver_1! Hivyo sio sawa!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1:\n@global.w_solve_teen_girl:\n@global.w_solve_female_caregiver_1!" }, { - "SourceText": "Step 1: THINK", - "text": "Hatua ya Kwanza: FIKIRI", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: \"Sitaki kusikia hiyo habari!\"\n\n@global.w_solve_teen_girl: “Hutaki hata kunisikiliza! Hata sijui nikwambieje!”", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1:\n@global.w_solve_teen_girl:" }, { - "SourceText": "What do we spend on now?", - "text": "Kwa sasa tunatumia pesa kwenye mambo gani?", - "type": "template", + "SourceText": "Dealing with bullies", + "text": "Kukabiliana na uonevu", + "type": "data_list", "note": "" }, { - "SourceText": "THINK Activity", - "text": "Shughuli ya KUFIKIRI", - "type": "template", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "Hebu tuone jinsi utatuzi wa matatizo unavyofanya kazi katika maisha halisi.", + "type": "data_list", "note": "" }, { - "SourceText": "Step 2: CHOOSE", - "text": "Hatua ya Pili: CHAGUA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 anarudi nyumbani kutoka kazini.\n\n@global.w_solve_female_caregiver_2 (akiwaza): \"Miguu yangu maskini! Ninahitaji kukaa chini kidogo na kunywa kikombe cha kahawa kabla ya kuanza kuandaa chakula cha wote.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Talk together about needs and wants", - "text": "Zungumzeni pamoja kuhusu mahitaji na matamanio", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Unafanya nini? Huo mkate ni wa chakula cha usiku! Sasa hautatutosha sisi sote!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n\"@global.w_solve_teen_boy_2!" }, { - "SourceText": "CHOOSE Activity", - "text": "Shughuli ya KUCHAGUA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: \"Samahani, @global.w_solve_female_caregiver_2, nilikuwa na njaa. Ngoja nikwambie basi, kuna mtu mmoja shuleni...”\n\n@global.w_solve_female_caregiver_2 (akiwaza): \"Tulia... vuta pumzi kidogo...\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2:\n@global.w_solve_female_caregiver_2,\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Step 3: BUILD", - "text": "Hatua ya Tatu: TENGENEZA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Hebu niache kidogo. Nimechoka na sasa nihangaike kutafuta chakula cha kututosha usiku.”\n\n@global.w_solve_teen_boy_2: \"Nisamehe, @global.w_solve_female_caregiver_2\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:\n@global.w_solve_female_caregiver_2\"" }, { - "SourceText": "Make your own budget", - "text": "Tengeneza bajeti yako mwenyewe", - "type": "template", + "SourceText": "Step 1: KNOW IT", + "text": "Hatua ya Kwanza: ELEWA", + "type": "data_list", "note": "" }, { - "SourceText": "BUILD Activity", - "text": "Shughuli ya KUTENGENEZA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: \"Sasa niambie, kwa nini una njaa sana? Mchana hukula shuleni?”\n\n@global.w_solve_teen_boy_2: \"Hilo ndo tatizo. Kuna mtu shuleni ananionea. Anasema nisipompa chakula changu kila siku, yeye na marafiki zake watanipiga. Ananikasirisha sana!\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:" }, { - "SourceText": "Step 4: PLAN", - "text": "Hatua ya Nne: PANGA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo lakini nimefurahi kwamba umeniambia, @global.w_solve_teen_boy_2. Hata hivyo, hiyo siyo sababu ya wewe kula chakula cha kila mtu. Tukimaliza kuzungumza, uende dukani kununua mkate mwingine. Lakini kwanza: Unadhani tufanyeje kuhusu hili tatizo la kuonewa?\"\n\n@global.w_solve_teen_boy_2: Unajua... Nataka nije nimpige au nimlipizie kisasi.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2.\n@global.w_solve_teen_boy_2:" }, { - "SourceText": "Emergencies and family goals", - "text": "Dharura na malengo ya familia", - "type": "template", + "SourceText": "Step 2: SOLVE IT", + "text": "Hatua ya Pili: TAFUTA UTATUZI", + "type": "data_list", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "Shughuli ya KUPANGA", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: \"Hmmm… unafikiri nini kitakutokea ukifanya hivyo?\"\n\n@global.w_solve_teen_boy_2: \"Sijui. Yeye ni mkubwa kuliko mimi kwa hiyo anaweza akaniumiza mno. Na ninaweza kupata matatizo shuleni, nikafukuzwa.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Tengeneza tena bajeti – mara hii pamoja NA kijana wako na familia yako!\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – mtatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: \"Ndiyo, inaweza kuwa hivyo. Tunaweza kufanya nini badala yake?\"\n\n@global.w_solve_teen_boy_2: \"Nadhani ninaweza kumwambia mwalimu. Lakini watoto wengine wataniita mjinga. Au ukazungumze na mwalimu?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Tengeneza bajeti na kijana wako na familia yako.\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – linatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Nadhani hilo ni wazo zuri zaidi. Ninaweza pia kwenda kuzungumza na wazazi wake ukitaka nifanye hivyo.\"\n\n@global.w_solve_teen_boy_2: \"Ni sawa kama unadhani kufanya hivyo kutasaidia pia. Asante, @global.w_solve_female_caregiver_2.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:\n@global.w_solve_female_caregiver_2\"" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Pitia tena bajeti yako na kijana wako na familia yako. Kufanya hivyo kutamkumbusha kila mtu kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile kwamba bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Sema chochote unachohitaji, Mjukuu wangu. Usiku nikimaliza tu kula, nitafanya hivyo. Halafu unajua? Hilo lisipofanikiwa, tunaweza kujaribu njia nyingine pamoja.\"\n\n@global.w_solve_teen_boy_2: Asante, @global.w_solve_female_caregiver_2.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:\n@global.w_solve_female_caregiver_2\"" }, { - "SourceText": "Steps to make a budget", - "text": "Hatua za kutengeneza bajeti", - "type": "template", + "SourceText": "Step 3: TRY IT", + "text": "Hatua ya Tatu: CHAGUA", + "type": "data_list", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Vizuri, nimefurahi sana! Endeleza kazi hiyo nzuri.", - "type": "template", - "note": "" + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "Wiki moja baadaye...\n\n@global.w_solve_female_caregiver_2: \"Sasa hivi mambo yanaendaje shuleni?\"\n\n@global.w_solve_teen_boy_2: \"Yanaenda vizuri, yule kijana hachukui tena chakula changu. Lakini bado ananisumbua sana.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2:" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Tunasikitika kusikia kwamba mambo ni magumu. Kila familia inahangaika. Tuko hapa ili kusaidia!", - "type": "template", + "SourceText": "Step 4: TEST IT", + "text": "Hatua ya Nne: JARIBU", + "type": "data_list", "note": "" }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "Jambo lolote lililoenda 'vibaya' leo, hebu lisahau na ujaribu tena kesho. Itakuwa sawa!", - "type": "template", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo, @global.w_solve_teen_boy_2. Je, nimuombe mjomba wako aende kuongea na wazazi wake? Hilo lisipofanikiwa, tutajaribu njia nyingine!\"\n\n@global.w_solve_teen_boy_2: \"Sawa, asante @global.w_solve_female_caregiver_2. Angalau najua uko upande wangu.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2:\n@global.w_solve_teen_boy_2.\n@global.w_solve_teen_boy_2:\n@global.w_solve_female_caregiver_2." }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Zingatia mambo chanya!\n\nKuwaambia vijana wetu kile hasa tunachotaka wafanye ni vizuri kuliko kuwakataza kufanya kitu.\n\nUtaona mabadiliko.", - "type": "template", + "SourceText": "Man in car", + "text": "Mwanaume ndani ya gari", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Habari zenu?\n\nLeo mada yetu inahusu maelekezo chanya.\n\nNi muhimu kutoa maelekezo chanya kwa watoto wetu, kwa sababu tunapowapa maelekezo chanya, wanajua na kuelewa kile tunachotarajia wakifanye, na wanakifanya kwa namna tunavyotaka wakifanye.\n\nKwa hiyo, mwishowe kila mtu hufurahi.", - "type": "template", - "note": "" + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Mawasiliano ni jambo muhimu zaidi!\n\nHebu tuangalie kile kilichotokea kwa @global.w_safe_female_caregiver na @global.w_safe_teen_girl_1:", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1:" }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Jaribio la kufikiria\n* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", - "note": "" + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: \"Kuna kitu kilitokea nilipoenda kutembea na marafiki zangu @global.w_safe_teen_girl_2 na @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Niambie, @global.w_safe_teen_girl_1\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3!\"\n@global.w_safe_female_caregiver:\n@global.w_safe_teen_girl_1\"" }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Jaribio la kufikiria\n* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", - "note": "" + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Mwanaume ndani ya gari: “Halo, mrembo. Nimekuwa nakuona kwa muda. Wewe ni mrembo sana, unaitwa nani?\n\n@global.w_safe_teen_girl_2: \"Anaitwa @global.w_safe_teen_girl_1\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2:\n@global.w_safe_teen_girl_1”" }, { - "SourceText": "Let’s do a thought experiment!", - "text": "Hebu tufanye jaribio la kufikiria!", - "type": "template", - "note": "" + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Mwanaume ndani ya gari: \"@global.w_safe_teen_girl_1, ungependa kuongozana nami tukapate chipsi na kinywaji? Twende, ingia, utawahi kurudi, nakuahidi… ”\n\n@global.w_safe_teen_girl_1: \"Sidhani kama hilo ni wazo zuri…\"", + "type": "data_list", + "note": "The following strings should not be translated:\n“@global.w_safe_teen_girl_1,\n@global.w_safe_teen_girl_1:" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "USIFIKIRI KUHUSU TEMBO\n\nUnafikiri kuhusu nini?", - "type": "template", - "note": "" + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “Una bahati, rafiki yangu. Natamani mwanamume aniombe MIMI tutoke akaninunulie zawadi. Ninakuambia, usipofanya hivyo, nitaenda nimwambie kila mtu kuwa wewe ni mjinga!”", + "type": "data_list", + "note": "The string @global.w_safe_teen_girl_2: should not be translated." }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Inawezekana ulifikiri kuhusu tembo...\n\nMaelekezo ya 'usifanye kitu hiki' huwafanya vijana wafikirie kuhusu kitu hicho.\n\nWakati mwingine huwa hawaelewi kile TULICHOTAKA wakifanye.\n\nPia, mara nyingi hawapendi kuambiwa wasifanye vitu fulani (kuna mtu yeyote anayependa?)", - "type": "template", - "note": "" + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, usiende! Kuwa mwangalifu! Twende nyumbani. Ni hatari kwenda na watu usiowajua. Tena, mtu mwenyewe ni mkubwa sana kwako na anachokifanya sio sawa.\"\n\n@global.w_safe_teen_girl_1: \"Hata sijui nifanye nini…\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3:\n“@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1:" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "SASA, FIKIRI KUHUSU DUMA!\n\nJe, unafikiri kuhusu nini?", - "type": "template", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: \"Ninafurahi sana kwamba hukuingia kwenye gari. Hiyo ilikuwa hali ya hatari, asante kwa kuniambia!\"", + "type": "data_list", + "note": "The string @global.w_safe_female_caregiver: should not be translated." + }, + { + "SourceText": "Online contact", + "text": "Mawasiliano mitandaoni", + "type": "data_list", "note": "" }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "Hapo sawa! Maelekezo chanya na bayana huwasaidia vijana kuzingatia kile wanachopaswa kufanya.\n\nKwa njia hiyo, vijana pia watahisi kuheshimiwa zaidi, na wana uwezekano mkubwa wa kusikiliza.", - "type": "template", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "Hebu tuangalie pamoja mfano mwingine wa tukio la hatari.", + "type": "data_list", "note": "" }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "Hebu tuone ni nini kitatokea kama @global.w_instruct_female_caregiver atamwambia @global.w_instruct_teen_girl \"USIFANYE HIKI\":", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: \"Rafiki yangu amekuwa akiwasiliana na mvulana wa rika letu mtandaoni... Atamtumia picha zake. Je, hilo ni jambo zuri kwa sababu yeye ni wa rika letu?\"", + "type": "data_list", + "note": "The string @global.w_safe_teen_girl_1: should not be translated." }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver alikuwa akisafisha nyumba wakati @global.w_instruct_teen_girl alipokuwa akifanya mazoezi ya kucheza na rafiki yake.\n\n@global.w_instruct_female_caregiver: \"Usifanye fujo kama hizi wakati ninaposafisha nyumba. Unanizuia! ”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: \"Wewe ni rafiki mzuri kwa kumjali mwenzako. Kutuma picha zinazovutia kimapenzi ni hatari sana pia.\"", + "type": "data_list", + "note": "The string @global.w_safe_female_caregiver: should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Lakini ninahitaji kufanya mazoezi kwa ajili ya mashindano ya shule. Huwa hauniruhusu nifanye chochote.”\n\n@global.w_instruct_female_caregiver: \"Usinijibu hivyo!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: \"Wakati mwingine watu wanadanganya mtandaoni – anaweza kusema ni wa rika lako kumbe ni mwanaume wa miaka 50. Au wakivunja mahusiano, anaweza kutuma picha hizo kwa kila mtu na rafiki yako akajisikia vibaya sana.\"", + "type": "data_list", + "note": "The string @global.w_safe_female_caregiver: should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Aah!! Kwanini huwa unanifokea kila wakati????”\n\n@global.w_instruct_female_caregiver (akijisemea): \"Huyu mtoto analeta shida kila wakati.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_crisis_teen_girl_1's crisis", + "text": "Matatizo ya @global.w_crisis_teen_girl_1's ", + "type": "data_list", + "note": "The string @global.w_crisis_teen_girl_1's should not be translated." }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "Hebu tujadili kilichotokea kwenye hadithi hii.", - "type": "template", - "note": "" + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "Hali ya hatari inaweza kumtokea mtu yeyote.\n\nHebu tuone kilichotokea kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver:", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver:" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Jadilini pamoja:\n\n* Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?\n* Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: \"Jamani, Mjukuu wangu, unaonekana unasikitika sana, unataka kuniambia kilichotokea?\"", + "type": "data_list", + "note": "The string @global.w_crisis_female_caregiver: should not be translated." }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver angeweza...", - "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: \"Ni Mjomba wangu, ali-… ali-… alinigusa.\"\n\n@global.w_crisis_female_caregiver (akiwaza): \"Vuta pumzi kidogo... Mwanangu anataka nini? Anataka nitulie na nimsikilize.\"\n\n@global.w_crisis_female_caregiver: \"Njoo ukae karibu na mimi. Usiwe na haraka, ninakusikiliza.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1:\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver:" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* Kusema kitu kizuri kwanza\n* Angeongea na @global.w_instruct_teen_girl kwa sauti ya utulivu\n* Kumwambia @global.w_instruct_teen_girl kile anachotaka afanye", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: \"Ni kweli, ali-… ali-… alisabisha nifanye hivyo! Alisababisha nifanye naye mapenzi! Naapa, sikutaka; hadi nikasema HAPANA, lakini akaniambia nitapata shida.\"\n\n@global.w_crisis_female_caregiver: \"Asante kwa kunishirikisha mimi pia. Usihofu. Hili sio kosa lako.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1:\n@global.w_crisis_female_caregiver:" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see your friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: \"Jana ulipoenda kumtembelea rafiki yako. Alikuja na ndipo ilipotokea.\"\n\n@global.w_crisis_female_caregiver: \"Usijali, ninakuamini mwanangu. Hili ni jambo kubwa na tutatafuta namna ya kupata msaada tunaohitaji. Ni wapi tunaweza kwenda kwa ajili ya msaada?\"\n\n@global.w_crisis_teen_girl_1: \"Shule yangu?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1:\n@global.w_crisis_female_caregiver:\n@global.w_crisis_teen_girl_1:" }, { - "SourceText": "Sad", - "text": "Huzuni", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: \"Ah najua, twende kliniki. Wao watajua tufanye nini ili kukusaidia. Je, hiyo ni sawa kwako?\"\n\n@global.w_crisis_teen_girl_1: \"Ndiyo… Sawa… Lakini, je, tunaenda wote na wewe?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver:\n@global.w_crisis_teen_girl_1:" }, { - "SourceText": "Confused", - "text": "Kuchanganyikiwa", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: \"Ni sawa kabisa. Na @global.w_crisis_teen_girl_1? Kumbuka hili siyo kosa lako. Ninakupenda. Wewe ni mtu mzuri. Tutalimaliza hili.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver:\n@global.w_crisis_teen_girl_1?" }, { - "SourceText": "Angry", - "text": "Hasira", - "type": "template", + "SourceText": "The fight", + "text": "Kupigana", + "type": "data_list", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", - "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "Tatizo jingine ambalo wazazi wengi wana wasiwasi nalo ni vurugu na uhalifu. Hebu tuangalie pamoja mfano mmoja.", + "type": "data_list", + "note": "" }, { - "SourceText": "Said something nice first", - "text": "Alisema kitu kizuri kwanza", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, unaonekana una wasiwasi tangu jana. Kuna tatizo gani?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1:\n\"@global.w_crisis_teen_boy_1," }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "Ameongea na @global.w_instruct_teen_girl kwa sauti ya utulivu", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: \"Jana, mimi na marafiki zangu tulienda kwenye mpira. Kuna vijana waliokuwa wamelewa, walianza kupigana na rafiki yangu.\"\n\n@global.w_crisis_male_caregiver_1: \"Endelea, ninakusikiliza. Natumaini haukupigana?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1:\n@global.w_crisis_male_caregiver_1:" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "Alimwambia @global.w_instruct_teen_girl kile anachotaka afanye", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: \"Sikutaka kupigana, lakini nisingeweza kukaa tu hapo na kuwaacha wampige rafiki yangu, kwa hiyo...\"\n\n@global.w_crisis_male_caregiver_1: \"Kwa hiyo, ulipigana ili kumtetea rafiki yako?\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1:\n@global.w_crisis_male_caregiver_1:" }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Asanteni kwa kufikiria pamoja!\n\nHebu turudi nyuma tuone kinachoweza kutokea kama @global.w_instruct_female_caregiver atatoa maelekezo chanya:", - "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Kila mtu alikuwa anapigana. Niliona mtu mmoja amelala uwanjani kwenye dimbwi la damu. Alionekana... amefariki.\"", + "type": "data_list", + "note": "The string @global.w_crisis_teen_boy_1: should not be translated." }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver alikuwa akisafisha nyumba huku @global.w_instruct_teen_girl akiwa na marafiki zake wakifanya mazoezi ya kucheza.\n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, inapendeza kukuona ukifanya mazoezi ya kucheza na rafiki yako. Tafadhali, fanyieni nje ili nimalize kusafisha nyumba. Baadaye, mtanionyesha mnavyocheza.\"\n\n@global.w_instruct_teen_girl: “Sawa, @global.w_instruct_female_caregiver!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: \"Nimefurahi unaniambia kuhusu jambo hili, @global.w_crisis_teen_boy_1. Hebu tukae pamoja sasa na kujadili iwapo tunapaswa kuwahusisha polisi au mtu mwingine wa kutusaidia.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1:\n@global.w_crisis_teen_boy_1." }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: \"Asante kwa kufanyia mazoezi nje nilipokuwa namalizia kufanya usafi, @global.w_instruct_teen_girl. Sasa nina muda wa kuangalia unavyocheza.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: \"Asante, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Tutalimaliza hili. Kumbuka, tutakusaidia kama familia.\"", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1:\n@global.w_crisis_male_caregiver_1\"\n@global.w_crisis_male_caregiver_1:" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: \"Waoo, @global.w_instruct_teen_girl! Unacheza vizuri sana!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "SourceText": "It is hard to find time to do something nice with your teenager.", + "text": "Ni ngumu kupata muda wa kufanya kitu kizuri na kijana wako.", + "type": "data_list", + "note": "" }, { - "SourceText": "Let's discuss what happened this time.", - "text": "Hebu tujadili kilichotokea wakati huu.", - "type": "template", + "SourceText": "How many times in the past month did you get involved in activities that your teen likes?", + "text": "Ni mara ngapi kwa mwezi uliopita ulijihusisha na shughuli ambazo kijana wako anapenda?", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Jadilini pamoja:\n\n* Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver wanajisikiaje sasa?\n* Je, mnadhani ni kwa nini mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Katika maisha yetu yenye shughuli nyingi ni vigumu kuzingatia mambo chanya.", + "type": "data_list", + "note": "" }, { - "SourceText": "It worked better this time because...", - "text": "Mara hii mambo yalienda vizuri kwa sababu...", - "type": "template", + "SourceText": "How many times in the past month have you praised your teen?", + "text": "Ni mara ngapi katika mwezi uliopita ulimsifia kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake\n* @global.w_instruct_female_caregiver aliweza kutulia \n* @global.w_instruct_female_caregiver alikuwa na mtazamo chanya", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "SourceText": "Being a parent can be stressful.", + "text": "Kuwa mzazi inaweza ikaleta mfadhaiko.", + "type": "data_list", + "note": "" }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje?", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "SourceText": "How many times in the past month did caring for your children make you feel very stressed?", + "text": "Ni mara ngapi katika mwezi uliopita kuwajali watoto wako kulikufanya uhisi mfadhaiko?", + "type": "data_list", + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Je, kwa nini unadhani mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", - "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "SourceText": "There are days in our lives where we feel sad and down, and days where we feel happy.", + "text": "Kuna siku maishani mwetu tunahisi huzuni na tunakuwa wanyonge na kunasiku ambazo tunahisi furaha.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake", - "type": "template", + "SourceText": "How many days in the past week have you felt depressed?", + "text": "Ni siku ngapi katika wiki iliyopita umehisi sonona?", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver aliweza kutulia", - "type": "template", + "SourceText": "How many days in the past week have you felt that everything you did was an effort?", + "text": "Ni siku ngapi katika wiki iliyopita ulihisi kuwa kila kitu ulichofanya ulitumia jitihada?", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver alikuwa na mtazamo chanya", - "type": "template", + "SourceText": "How many days in the past week have you felt hopeful for the future?", + "text": "Ni siku ngapi katika wiki iliyopita ulikuwa na matumaini kwa ajili ya wakati ujao?", + "type": "data_list", "note": "" }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Maelekezo chanya yanaweza pia kufanya kazi kwa kijana wako!", - "type": "template", + "SourceText": "Days in the past week", + "text": "Siku za wiki iliyopita", + "type": "data_list", "note": "" }, { - "SourceText": "GET REAL", - "text": "KUWA HALISI", - "type": "template", + "SourceText": "Sometimes our children make us really upset.", + "text": "Wakati mwingine watoto wetu hutukasirisha sana.", + "type": "data_list", "note": "" }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "Je, kijana wako anaweza kweli kufanya kile unachotaka kumwambia? Inaweza kuwa vigumu kwao kusoma kimya kwa siku nzima, lakini ukimwambia afanye hivyo kwa nusu saa unapohitaji sana afanye hivyo, ni jambo linalotekelezeka.", - "type": "template", + "SourceText": "How many times in the past month did you shout, scream or yell at your teen?", + "text": "Ni mara ngapi katika mwezi uliopita umempayukia, umepigia kelele au kumfokea kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "GET POSITIVE", - "text": "KUWA NA MTAZAMO CHANYA", - "type": "template", + "SourceText": "How many times in the past month did you insult your teen or call them names or stupid?", + "text": "Ni mara ngapi katika mwezi uliopita ulimtukana kijana wako au kumuita mjinga au majina mabaya?", + "type": "data_list", "note": "" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Tabasamu, mwangalie machoni, na tumia maneno chanya. Msifie mara tu anapoanza kufanya kile unachotaka!", - "type": "template", + "SourceText": "Money is one of the biggest stresses for families.", + "text": "Pesa ni miongoni mwa vyanzo vikubwa zaidi vya msongo wa mawazo katika familia.", + "type": "data_list", "note": "" }, { - "SourceText": "GET CLEAR", - "text": "KUWA BAYANA", - "type": "template", + "SourceText": "How many times in the past month have you felt worried or anxious about money?", + "text": "Ni mara ngapi katika mwezi uliopita ulihisi wasiwasi au uwoga kuhusu fedha?", + "type": "data_list", "note": "" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Mara nyingi tunajua nafsini mwetu kile tunachokitaka, lakini hakitusemi bayana kiasi cha kueleweka. Sema kile unachotaka kuona kijana wako akifanye. Jaribu kusema 'tafadhali, ifikapo saa 1 jioni uwe tayari umerudi nyumbani' badala ya kusema 'uwahi kurudi nyumbani'.", - "type": "template", + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulikosa pesa za kununulia chakula?", + "type": "data_list", "note": "" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "Hebu tufanye mazoezi ya kutoa maelekezo YANAYOTEKELEZEKA, CHANYA, na BAYANA. Kufanya mazoezi kutakusaidia kufanikiwa kwa kijana wako!", - "type": "template", + "SourceText": "Days in the past month", + "text": "Siku katika mwezi uliopita", + "type": "data_list", "note": "" }, { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Chagueni watu wawili kwenye kikundi chenu:\n* Mtu mmoja ataigiza kama kijana\n* Mwingine ataigiza kama mzazi wa kijana\n* “Mzazi”: Mpe \"kijana\" wako maelekezo chanya kwa kumtia moyo na kumsifia\n* “Kijana”: Itikia kama unavyodhani kijana ataitikia maneno hayo\n\nJadilini pamoja jinsi mambo yalivyoenda:\n* Je, imekufanya ujisikieje kama \"mzazi\" na kama \"kijana\"?\n* Je, unaweza kufanya chochote vizuri zaidi?\n\nMpeni kila mtu nafasi ya kuwa \"mzazi\" na \"kijana\" kama mnaweza. Mazoezi huleta ufanisi!", - "type": "template", + "SourceText": "Families also have difficult experiences like sickness and losing loved ones.", + "text": "Familia pia hupitia wakati mgumu kama ugonjwa na kupoteza wapendwa wao.", + "type": "data_list", "note": "" }, { - "SourceText": "Examples of positive instructions:", - "text": "Mifano ya maelekezo chanya:", - "type": "template", + "SourceText": "Has a caregiver of your teen (like a parent or grandparent) ever passed away?", + "text": "Je kuna mlezi wa kijana wako (kama mzazi au bibi/babu) ambae amefariki?", + "type": "data_list", "note": "" }, { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ninapenda muziki wako. Je, unaweza kupunguza sauti wakati wa chakula ili tuweze kuzungumza? Asante – Ninashukuru sana kufanya hivyo.\n* Huo muziki ni mzuri sana. Umeimbwa na nani? Tafadhali zima muziki unapoingia nyumbani. Ukitaka, unaweza kuupiga chumbani mwako kwa sauti ya chini. Asante!", - "type": "template", + "SourceText": "Did they pass away in the last 3 years?", + "text": "Je alifariki katika kipindi cha miaka mitatu iliyopita?", + "type": "data_list", "note": "" }, { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Zoezi la nyumbani la wiki hii ni kumpa kijana wako maelekezo chanya.\n\nKumbuka – KUTOA MAELEKEZO YANAYOTEKELEZEKA, KUWA NA MTAZAMO CHANYA, KUELEWEKA = KUPATA KILE HASA UNACHOKITAKA (kadri ya uwezo wa kijana!)", - "type": "template", + "SourceText": "It is so stressful when children misbehave.", + "text": "Watoto wanapokuwa na tabia mbaya wanaleta msongo wa mawazo.", + "type": "data_list", "note": "" }, { - "SourceText": "We care about you, and how life is treating you.", - "text": "Tunakuthamini wewe, na jinsi maisha yanavyokuendea.", - "type": "template", + "SourceText": "How many times in the past month did you physically discipline your teen by hitting, spanking, or slapping with your hand or and object like a stick or belt?", + "text": "Ni mara ngapi katika mwezi uliopita ulimpatia mwanao adhabu za mwilini kwa kumpiga, kumchapa makalioni au kumpiga kofi au na kitu kama fimbo au mkanda?", + "type": "data_list", "note": "" }, { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "Wewe ni mshindi. Na unafanya mabadiliko ya kweli. Jionee fahari.", - "type": "template", + "SourceText": "How many times in the past month did you discipline your teen with a push or grab?", + "text": "Ni mara ngapi katika wiki iliyopita ulimuadhibu kwa kumsukuma au kumkamata kwa nguvu?", + "type": "data_list", "note": "" }, { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Pole kwa sababu leo mambo siyo rahisi. Siku kama hizi huwatokea wazazi wote.", - "type": "template", + "SourceText": "It’s hard to keep track of our teenagers when they are becoming more independent.", + "text": "Ni ngumu kuwafuatilia vijana wetu pale wanapoanza kuwa na uhuru.", + "type": "data_list", "note": "" }, { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Fumba macho yako, vuta pumzi, na elewa kwamba kila kitu ulichokifanya ni cha muhimu sana.", - "type": "template", + "SourceText": "How many times in the past month did your teen stay out in the evening past the time that they are supposed to be home?", + "text": "Ni mara ngapi katika mwezi uliopita, kijana wako alikaa nje mida ya jioni zaidi ya muda anaotakiwa kuwepo nyumbani?", + "type": "data_list", "note": "" }, { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Kila familia hukabiliwa na changamoto, lakini tunapofanya kazi pamoja tunaweza kushughulikia matatizo kwa njia iliyo bora na ya amani.\n\nNi ujuzi mzuri sana kwa kijana wako pia kujifunza!", - "type": "template", + "SourceText": "How many times in the past month did your teen go out with friends you don’t know?", + "text": "Je, ni mara ngapi katika mwezi uliopita, kijana wako alitoka na marafiki usiowajua?", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Habari zenu?\n\nMada ya leo inahusu kutatua matatizo.\n\nSote tunajua kuwa katika maisha kuna nyakati tunakabiliwa na matatizo, na sote tunajua kwamba tunapojikuta katika nyakati hizo, ni vigumu kufikiria haraka ufumbuzi chanya.\n\nKwa hiyo, tunapokabiliwa na matatizo ni muhimu tupumzike, tupumue, tutulie na tufikirie ujuzi wa kutatua matatizo tunaoweza kuutumia. \n\nTunapotatua matatizo, tukumbuke kuwashirikisha vijana wetu. Kufanya hivyo kutawasaidia kuwajibika na kujifunza jinsi ya kutatua matatizo yao wenyewe siku zijazo.", - "type": "template", + "SourceText": "How many times in the past month did your teen not let you know where they were going?", + "text": "Je, mara ngapi katika mwezi uliopita kijana wako hakukuambia wapi wanapoenda?", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Sometimes teenagers are hard to talk to.", + "text": "Muda mwingine ni vigumu kuongea na vijana.", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Hadith & tafakari – ambayo haikufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Have you ever talked with your teen about ways to avoid being touched or made to do sexual things with people or online?", + "text": "Uliwahi kuongea na kijana wako kuhusiana na njia za kuzuia kushikwa au kulazimishwa kufanya matendo ya kingono na watu au mitandaoni?", + "type": "data_list", "note": "" }, { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "Hebu tuangalie kile kilichotokea kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 yake pindi @global.w_solve_teen_girl alipopewa simu na mvulana… simu!", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "SourceText": "Well done for talking to your teen about keeping safe.", + "text": "Vizuri kwa kuongea na kijana wako kuhusu kujiweka salama.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: \"@global.w_solve_teen_girl, umekitoa wapi hicho?\"\n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 ameninunulia. Ni simu nzuri, @global.w_solve_female_caregiver_1. Inapiga picha nzuri sana!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" + "SourceText": "How many times in the last month have you had a talk like this?", + "text": "Ni mara ngapi katika mwezi uliopita mliweza kuwa na maongezi kama haya?", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: \"Sitaki kuona hicho kitu cha bei mbaya! Huyo kijana si mtu mzuri! Hivi anafikiria utamlipaje hiyo simu?!”\n\n@global.w_solve_teen_girl: “Sio hivyo, @global.w_solve_female_caregiver_1! Hivyo sio vizuri!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "SourceText": "How many times in the past month has your teen walked home alone, taken a lift with someone they don’t know or hung out in a place that made you worried for their safety?", + "text": "Ni mara ngapi katika mwezi uliopita kijana wako alirudi nyumbani akiwa peke yake, kupewa lifti na mtu usiyemjua au kuwapo sehemu iliokufanya uwe na mashaka juu ya usalama wao?", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: \"Sitaki kusikia hiyo habari!\"\n\n@global.w_solve_teen_girl: “Hutaki hata kunisikiliza! Hata sijui nikwambieje!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "SourceText": "Times in the past month", + "text": "Nyakati katika mwezi uliopita", + "type": "data_list", + "note": "" }, { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Vuta pumzi ndefu mara kadhaa upate kutulia, kisha", - "type": "template", + "SourceText": "It can sometimes be difficult to have a positive relationship with our children.", + "text": "Wakati mwingine inaweza kuwa vigumu kuwa na mahusiano chanya na watoto wetu.", + "type": "data_list", "note": "" }, { - "SourceText": "KNOW IT", - "text": "ELEWA", - "type": "template", + "SourceText": "How confident do you feel about your ability as a parent/caregiver to have a positive relationship with your children?", + "text": "Kwa kiwango gani unajiamini kuhusu uwezo wako kama mzazi/mlezi katika kujenga mahusiano chanya na watoto wako?", + "type": "data_list", "note": "" }, { - "SourceText": "Identify the problem.", - "text": "Bainisha tatizo.", - "type": "template", - "note": "" + "SourceText": "Spending time with your teen is not always easy. You’ll find ideas about how to do this in the @data.workshop.w_1on1.in_text_title. You can also find information in @data.parent_centre.my_tips.location_text.", + "text": "Kutumia muda na kijana wako daima sio rahisi . Unaweza kupata vidokezo ya namna ya kufanya hivi kupitia @data.workshop.w_1on1.in_text_title. Unaweza kutafuta taarifa katika @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_1on1.in_text_title.\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "SOLVE IT", - "text": "TAFUTA UTATUZI", - "type": "template", - "note": "" + "SourceText": "Well done! You’ll find more ideas about how to do this in the @data.workshop.w_1on1.in_text_title.", + "text": "Vizuri! Utakuta namna nyingi zaidi kuhusu jinsi ya kufanya hizi kupitia @data.workshop.w_1on1.in_text_title.", + "type": "data_list", + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Fikiria njia za utatuzi zinazowezekana na kile kitakachotokea kama tutazitumia.", - "type": "template", - "note": "" + "SourceText": "It’s not always easy to praise. You’ll learn more about this skill in the @data.workshop.w_praise.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text.", + "text": "Sio rahisi kusifia kila mara. Utajifunza ujuzi huu kupitia @data.workshop.w_praise.in_text_title. Ikiwa unataka msaada wa papo kwa hapo, unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_praise.in_text_title.\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "TRY IT", - "text": "CHAGUA", - "type": "template", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued.", + "text": "Vizuri kuwa unawasifia vijana wako. Hii itasaidia wajihisi wanathaminiwa.", + "type": "data_list", "note": "" }, { - "SourceText": "Choose a solution and try it out.", - "text": "Chagua njia ya utatuzi na uijaribu.", - "type": "template", - "note": "" + "SourceText": "Great job managing your stress. You'll learn more about how to relax, recognise and reward yourself in the @data.workshop.w_self_care.in_text_title.", + "text": "Kazi nzuri katika kudhibiti mafadhaiko yako. Utajifunza zaidi jinsi ya kutulia, kutambua na kujipongeza ndani ya @data.workshop.w_self_care.in_text_title.", + "type": "data_list", + "note": "The string @data.workshop.w_self_care.in_text_title. should not be translated." }, { - "SourceText": "TEST IT", - "text": "JARIBU", - "type": "template", - "note": "" + "SourceText": "Life can definitely get stressful. You'll learn more about taking care of yourself well in the @data.workshop.w_self_care.in_text_title and about managing stress in the @data.workshop.w_stress.in_text_title. If you want help right away, you can find it in @data.parent_centre.my_tips.location_text.", + "text": "Maisha yanaweza yakawa ya mafadhaiko. Utajifunza zaidi namna ya kujithamini vizuri ndani ya @data.workshop.w_self_care.in_text_title. Kama ukihitaji msaada wa papo kwa hapo unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_self_care.in_text_title\n@data.workshop.w_stress.in_text_title.\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "Je, imefanikiwa? Safi sana! Kama haikufanikiwa, basi jaribu njia nyingine ya utatuzi.", - "type": "template", + "SourceText": "Thank you for answering these questions. When life gets difficult, it’s easy to forget about the good. You are the best parent your teen could have!", + "text": "Nashukuru kwa kujibu haya maswali. Maisha yanapokuwa magumu, ni rahisi kusahau mazuri. Wewe ni mzazi mzuri kijana wako anayeweza kuwa nae!", + "type": "data_list", "note": "" }, { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "Hebu tuone jinsi utatuzi wa matatizo unavyofanya kazi katika maisha halisi.", - "type": "template", - "note": "" + "SourceText": "Well done for controlling your anger. You'll learn more about how to respond calmly in the @data.workshop.w_self_care.in_text_title.", + "text": "Vizuri sana kwa kudhibiti hasira yako. Utajifunza zaidi jinsi ya kujibu kwa utulivu ndani ya @data.workshop.w_self_care.in_text_title.", + "type": "data_list", + "note": "The string @data.workshop.w_self_care.in_text_title. should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 anarudi nyumbani kutoka kazini.\n\n@global.w_solve_female_caregiver_2 (akiwaza): \"Miguu yangu maskini! Ninahitaji kukaa chini kidogo na kunywa kikombe cha kahawa kabla ya kuanza kuandaa chakula cha wote.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "SourceText": "All parents use certain methods to teach children how to behave. Sometimes our children make us really angry or upset and we do things we wish we hadn’t. You’ll learn more effective methods to respond to your teen and help them behave well in the @data.workshop.w_consequence.in_text_title. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.", + "text": "Wazazi wote hutumia njia flani kuwafundisha watoto namna tabia zao zinapaswa kuwa. Wakati mwengine watoto wetu hutukasirisha sana na tunafanya vitu tunatamani tusingefanya. Utajifunza njia zenye matokeo za kukabiliana na kijana wako na kumsaidia kuwa na tabia njema ndani ya @data.workshop.w_consequence.in_text_title. Ikiwa unahitaji msaada wa papo kwa hapo unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_consequence.in_text_title.\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Unafanya nini? Huo mkate ni wa chakula cha usiku! Sasa hautatutosha sisi sote!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "Money stress can affect any family. You can learn more about budgeting in the @data.workshop.w_money.in_text_title to help with money stress and reduce money-related arguments.", + "text": "Mfadhaiko wa kifedha unaweza kuathiri familia yoyote. Unaweza ukajifunza zaidi kuhusu kubajeti ndani ya @data.workshop.w_money.in_text_title kusaidia na mfadhaiko wa kifedha na kupunguza ugomvi unaohusiana na maswala ya kifedha.", + "type": "data_list", + "note": "The string @data.workshop.w_money.in_text_title should not be translated." }, { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: \"Samahani, @global.w_solve_female_caregiver_2, nilikuwa na njaa. Ngoja nikwambie basi, kuna mtu mmoja shuleni...”\n\n@global.w_solve_female_caregiver_2 (akiwaza): \"Tulia... vuta pumzi kidogo...\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "SourceText": "Money stress can be overwhelming. The @data.workshop.w_money.in_text_title includes information that will help with budgeting. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.", + "text": "Mafadhaiko ya kifedha yanaweza kukusonga. @data.workshop.w_money.in_text_title inajumuisha taarifa ambazo zitakusaidia na kubajeti. Ikiwa unahitaji msaada wa papo kwa hapo unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Hebu niache kidogo. Nimechoka na sasa nihangaike kutafuta chakula cha kututosha usiku.”\n\n@global.w_solve_teen_boy_2: \"Nisamehe, @global.w_solve_female_caregiver_2\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "SourceText": "Losing loved ones is hard. You can find ways to help you and your teen cope with grief in @data.parent_centre.bereavement.location_text.", + "text": "Kuwapoteza wapendwa ni ngumu. Unaweza ukapata njia za kukusaidia wewe na kijana wako kukabiliana na majonzi @data.parent_centre.bereavement.location_text.", + "type": "data_list", + "note": "The string @data.parent_centre.bereavement.location_text. should not be translated." }, { - "SourceText": "Step 1: KNOW IT", - "text": "Hatua ya Kwanza: ELEWA", - "type": "template", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Inafurahisha sana kuona unajibu kwa utulivu licha ya kijana wako kufanya jambo la kufadhaisha. Anaweza kujifunza mambo mengi sana kutoka kwako!", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: \"Sasa niambie, kwa nini una njaa sana? Mchana hukula shuleni?”\n\n@global.w_solve_teen_boy_2: \"Hilo ndo tatizo. Kuna mtu shuleni ananionea. Anasema nisipompa chakula changu kila siku, yeye na marafiki zake watanipiga. Ananikasirisha sana!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "We all feel overwhelmed sometimes. The information in the @data.workshop.w_consequence.in_text_title will help you feel less stressed and show you effective ways to teach your children the right behaviour. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.", + "text": "Muda mwingine sote tunahisi kuzidiwa. Taarifa ndani ya @data.workshop.w_consequence.in_text_title itakusaidia kupunguza mfadhaiko na kuonyesha njia bora ya kumfundisha kijana wako tabia njema. Kama unahitaji msaada wa papo kwa hapo, unaweza pia ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_consequence.in_text_title\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo lakini nimefurahi kwamba umeniambia, @global.w_solve_teen_boy_2. Hata hivyo, hiyo siyo sababu ya wewe kula chakula cha kila mtu. Tukimaliza kuzungumza, uende dukani kununua mkate mwingine. Lakini kwanza: Unadhani tufanyeje kuhusu hili tatizo la kuonewa?\"\n\n@global.w_solve_teen_boy_2: Unajua... Nataka nije nimpige au nimlipizie kisasi.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" + "SourceText": "Great job keeping your teen safe. You’ll learn more about this in the @data.workshop.w_safe.in_text_title.", + "text": "Ni kazi nzuri kumuweka kijana wako salama. Utajifunza zaidi kuhusu hili ndani ya @data.workshop.w_safe.in_text_title.", + "type": "data_list", + "note": "The string @data.workshop.w_safe.in_text_title. should not be translated." }, { - "SourceText": "Step 2: SOLVE IT", - "text": "Hatua ya Pili: TAFUTA UTATUZI", - "type": "template", - "note": "" + "SourceText": "Keeping track of our teens is not easy. Information in the @data.workshop.w_safe.in_text_title will support with building communication and keeping your teen safe. If you want help right away, you can also find it in @data.parent_centre.my_tips.location_text.", + "text": "Kuwafuatilia vijana wetu si kazi rahisi. Taarifa ndani ya @data.workshop.w_safe.in_text_title itakusaidia kujenga mahusiano na kumuweka kijana wako salama. Ukihitaji msaada wa papo kwa hapo, unaweza ukaupata ndani ya @data.parent_centre.my_tips.location_text.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@data.parent_centre.my_tips.location_text." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: \"Hmmm… unafikiri nini kitakutokea ukifanya hivyo?\"\n\n@global.w_solve_teen_boy_2: \"Sijui. Yeye ni mkubwa kuliko mimi kwa hiyo anaweza akaniumiza mno. Na ninaweza kupata matatizo shuleni, nikafukuzwa.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "It can be difficult to know how to keep our teens safe. We often feel powerless as parents. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.", + "text": "Ni vigumu kujua namna ya kuweka vijana wetu salama. Mara nyingi wazazi tunahisi hatuna nguvu. Unaweza pata nyenzo muhimu kukusaidia kupanga usalama ndani ya @data.parent_centre.my_tips.location_text muda wowote.", + "type": "data_list", + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: \"Ndiyo, inaweza kuwa hivyo. Tunaweza kufanya nini badala yake?\"\n\n@global.w_solve_teen_boy_2: \"Nadhani ninaweza kumwambia mwalimu. Lakini watoto wengine wataniita poyoyo. Au ukazungumze na mwalimu?\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "It can be hard to know what your teen is doing and parents worry about their safety. You can get essential tools to help with safety planning in @data.parent_centre.my_tips.location_text at any time.", + "text": "Ni vigumu kujua namna ya kuweka vijana wetu salama. Mara nyingi wazazi tunahisi hatuna nguvu. Unaweza pata nyenzo muhimu kukusaidia kupanga usalama ndani ya @data.parent_centre.my_tips.location_text muda wowote.", + "type": "data_list", + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Nadhani hilo ni wazo zuri zaidi. Ninaweza pia kwenda kuzungumza na wazazi wake ukitaka nifanye hivyo.\"\n\n@global.w_solve_teen_boy_2: \"Ni sawa kama unadhani kufanya hivyo kutasaidia pia. Asante, @global.w_solve_female_caregiver_2.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "SourceText": "Welcome and Self-Care", + "text": "Makaribisho na Kujithamini", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Sema chochote unachohitaji, Mjukuu wangu. Usiku nikimaliza tu kula, nitafanya hivyo. Halafu unajua? Hilo lisipofanikiwa, tunaweza kujaribu njia nyingine pamoja.\"\n\n@global.w_solve_teen_boy_2: Asante, @global.w_solve_female_caregiver_2.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "SourceText": "**Welcome and Self-Care** @global.workshop", + "text": "**Ukaribisho na kujithamini** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Step 3: TRY IT", - "text": "Hatua ya Tatu: CHAGUA", - "type": "template", + "SourceText": "This @global.workshop is about YOU. Looking after yourself is essential for a happy family.", + "text": "Hii @global.workshop ni kwa ajili YAKO. Kujiangalia mwenyewe ni muhimu kwenye familia yenye furaha.", + "type": "data_list", + "note": "The string @global.workshop should not be translated." + }, + { + "SourceText": "Self-Care", + "text": "Kujithamini", + "type": "data_list", "note": "" }, { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "Wiki moja baadaye...\n\n@global.w_solve_female_caregiver_2: \"Sasa hivi mambo yanaendaje shuleni?\"\n\n@global.w_solve_teen_boy_2: \"Yanaenda vizuri, yule kijana hachukui tena chakula changu. Lakini bado ananisumbua sana.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Step 4: TEST IT", - "text": "Hatua ya Nne: JARIBU", - "type": "template", + "SourceText": "Why Self-Care?", + "text": "Kwa nini Kujithamini ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: \"Nasikitika kusikia hivyo, @global.w_solve_teen_boy_2. Je, nimuombe mjomba wako aende kuongea na wazazi wake? Hilo lisipofanikiwa, tutajaribu njia nyingine!\"\n\n@global.w_solve_teen_boy_2: \"Sawa, asante @global.w_solve_female_caregiver_2. Angalau najua uko upande wangu.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "SourceText": "How to do self-care", + "text": "Jinsi ya kujithamini", + "type": "data_list", + "note": "" }, { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Jadilini pamoja:\n\nJe, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "text": "Kwa mimi kama mzazi, ilikuwa kama haiwezekani kupata muda kwa ajili yangu. Nilikuwa na kazi nyingi za kumwangalia kila mmoja. Kupitia @global.parent_app, niligundua ni jinsi gani ilivyo muhimu kujijali mwenyewe. Inanisaidia mimi na familia yangu!\n\nKuwa na muda kwa ajili yangu binafsi inanisaidia kupumua na kujua jinsi ninavyo hisi. Hata dakika 5 za kupata kikombe cha chai inaleta mabadiliko makubwa. Sasa naweza kushughulikia msongo wangu wa mawazo vizuri zaidi.", + "type": "data_list", + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Je, unamkumbuka @global.w_solve_teen_girl na simu aliyopewa na mvulana?", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "SourceText": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.", + "text": "Mara nyingi Baba yangu alikuwa na kazi nyingi. Angweza kurudi kutoka kazini na kuwa mwenye haraka pale tunapoanza kumuuliza maswali.\n\n@global.parent_app imetusaidia sana. Hatugombani tena. sasa hivi, baba yangu akirudi nyumbani, anakaa kwanza chini kwa dakika 5 na baadae tunafanya pamoja zoezi la kupumzika kutoka katika @global.parent_app, hivyo wote tunaweza kuvuta pumzi ndefu na kupumzika. Baadae tunaweza kuongelea kuhusu siku yetu, kuhusu chochote kibaya au kizuri kilichotokea. Kila mmoja ni mwenye furaha zaidi sasa hivi.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Je, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "SourceText": "One-on-One Time", + "text": "Muda wa Pamoja Wawili", + "type": "data_list", + "note": "" }, { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "Hebu turudi kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake ili tuone njia za utatuzi walizotumia.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "SourceText": "**One-on-One Time** @global.workshop", + "text": "**Muda wa Pamoja Wawili** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "@global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake walipata njia tatu za utatuzi.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "SourceText": "Spending time with your teen builds a positive relationship.", + "text": "Kutumia muda pamoja na kijana wako hujenga mahusiano chanya.", + "type": "data_list", + "note": "" }, { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Kuwalea vijana ni kazi ngumu sana.\n\nMara nyingi huwa hakuna njia za utatuzi zilizo rahisi na zilizonyooka, lakini sasa @global.w_solve_female_caregiver_1 amejifunza kwamba kumbe anaweza kuzungumza mambo haya na binti yake.\n\nKabla, alikuwa akipata wasiwasi peke yake, lakini sasa wanaweza kutafuta pamoja njia za utatuzi!", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "SourceText": "Why One-on-One Time?", + "text": "Kwa nini Muda wa Pamoja Wawili ni muhimu?", + "type": "data_list", + "note": "" }, { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "Mzuie @global.w_solve_teen_girl kwenda kutembea kwa mwezi mmoja", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "SourceText": "How to spend one-on-one time", + "text": "Jinsi ya kutumia muda wa pamoja wawili", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: \"Mwezi ujao hutaweza kwenda huko nje kutembea.\"", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "SourceText": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "text": "Niliposikia kwa mara ya kwanza ninatakiwa kuwa na muda wa pamoja na kijana wangu, ilikuwa vigumu kwangu. Sikujua wakati gani wa kufanya au nini cha kusema. Sikutaka kumharibu kijana wangu ili kwamba ajue tunatakiwa kufanya kila kitu pamoja.\n\nLakini nilitaka sana kujenga uhusiano wangu na kijana wangu na nilitaka awe muwazi kuhusu nini kinachomsumbua. Hivyo tulijaribu muda wa pamoja.\n\nMwanzo, ilionekana ajabu, lakini ilibadilika na kuwa ya kufurahisha! Sasa hivi tunaangalia pamoja vipindi vyake vya TV na tunaviongelea. Na tunaweza hata tukaongea kuhusu jinsi mtoto wangu wa kiume anavyobadilika, na hata kuhusu marafiki wa kike na vitu hivyo!", + "type": "data_list", + "note": "" }, { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Hiyo haikufanikiwa... Hebu tujaribu kitu kingine.", - "type": "template", + "SourceText": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.", + "text": "Mama yangu alipoomba kutumia muda na mimi, niliwaza \" Labda kitu flani hakiko sawa, labda anaumwa\". Lakini alisema \"Hapana, nahitaji tu kutumia muda. \"Nilikuwa na mashaka, lakini nilikubali.\n\nAliniuliza nini ninapenda kufanya. Kilikuwa kitu kigeni na sikuwa huru, kwa sababu hajawahi kutumia muda pamoja na mimi kwa ajili yangu.\n\nKadri alivyoendelea kujaribu na tulitumia muda pamoja, ilikuwa safi sana. Aliweza kinishirikisha utoto wake, vitu ambavyo sikuwa kusikia kabla. Hiyo ilinisaidia pia kusema kinachoendelea katika maisha yangu. Tuliongea hata kuhusu marafiki zangu wa kiume na kuhusu matatizo. Najua ninaweza kuongea na mama yangu sasa hivi.", + "type": "data_list", "note": "" }, { - "SourceText": "Return the phone and save up", - "text": "Rudisha simu na uanze kujiwekea akiba", - "type": "template", + "SourceText": "Praise", + "text": "Kusifia", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: \"Simlaumu rafiki yako wala sioni wivu. Nina wasiwasi kwamba mtu anapokupatia zawadi, ni vigumu kumkatalia atakapokuomba umlipe fadhila – kama vile ngono. Kama unataka kuwa na simu, tutajiwekea akiba pamoja ili uweze kufanya maamuzi yako mwenyewe bila yeye kukudai chochote.\"", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "SourceText": "**Praise** @global.workshop", + "text": "**Kusifia** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "This is great! Try the third option as well.", - "text": "Hilo ni jambo zuri sana! Jaribu pia chaguo la tatu.", - "type": "template", + "SourceText": "Praise helps teens show more positive behaviour.", + "text": "Kusifia husaidia vijana kuwa na tabia chanya.", + "type": "data_list", "note": "" }, { - "SourceText": "Learn about safe sex", - "text": "Jifunze kuhusu ngono salama", - "type": "template", + "SourceText": "Why Praise?", + "text": "Kwa nini Kusifia ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: \"Hii inanifanya nitambue kuwa tunapaswa kuzungumza kuhusu marafiki wa kiume na jinsi unavyoweza kujikinga. Vijana wengi wa rika lako wanapata mimba au VVU. Hebu twende kliniki uzungumze na muuguzi ili ujifunze jinsi unavyoweza kujikinga.”", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "This is great!", - "text": "Hilo ni jambo zuri sana!", - "type": "template", + "SourceText": "How to praise", + "text": "Jinsi ya kusifia", + "type": "data_list", "note": "" }, { - "SourceText": "Let's practice problem-solving!", - "text": "Hebu tufanye mazoezi ya kutatua matatizo!", - "type": "template", + "SourceText": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "text": "Tulipojifunza kuhusu mambo ya kusifia, niliwaza \" Hatukuwahi kusifiwa kwa vitu kama vijana, hivyo kwa nini tuanze sasa?\". Lakini nilivutiwa nilipojifunza faida zinaweza kuwepo kwa kusifia.\n\nBaada ya warsha ya wiki, niligundua kijana wangu anafanya kile wanachofanya kila siku: Kuosha vyombo. Na nilisema \"Asante kwa kuosha vyombo, binti yangu, inanifanya nifurahi sana kwamba unasaidia\". Kijana wangu alikuwa anatabasamu na hata alikuja kunikumbatia, kitu ambacho hakuwahi kufanya.\n\nHili jambo la kusifia ni gumu. Bado ninasahau muda mwingine au kusifia wakati huo huo nakosoa. Lakini kusifia kunaleta mabadiliko. Sikuwahi kuwaza kwamba sifa kidogo inaweza kuleta mabadiliko hayo kwa mtu!", + "type": "data_list", "note": "" }, { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Fanyeni mazoezi pamoja kuhusu tatizo lililopo sasa. Mmoja wenu awe mzazi na mwingine awe kijana.\n\nSifianeni na kutiana moyo – tunawaonea fahari!\n\nKumbukeni zile hatua:\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", - "type": "template", - "note": "" + "SourceText": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.", + "text": "Nilishukuru kwamba Mama yangu alijifunza kuhusu kusifia.\n\nMama yangu mara nyingi aligundua pindi nilipofanya kitu kibaya.Alikuwa akinifokea na kunipiga.\n\nLakini Mama yangu alipohudhuria warsha,alinisifia kwa vitu vidogo.Mwanzoni niliwaza \" Nini kinaendelea?\"lakini kiliendelea.Nilikipenda hivyo niliendelea kufanya mambo mazuri zaidi na nilifikiri atapenda.\n\nNajihisi furaha kwamba Mama yangu anaona vitu vizuri ninavyofanya, na si mambo mabaya tu.\n\nNiliwahi kumwambia mara moja.Wakati wa @data.workshop.w_1on1.title,Nilisema \" Asante Mama, kwa kuniambia maneno mazuri wakati ninapofanya Jambo vyema, na si tu wakati ninapofanya jambo vibaya.\" Hii ilitufanya sote kuwa na furaha sana.", + "type": "data_list", + "note": "The string @data.workshop.w_1on1.title, should not be translated." }, { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Wafundishe vijana wako hatua nne za kutatua matatizo:\nELEWA – TATUA – CHAGUA – JARIBU\n\nTumieni hatua hizi tatizo linapojitokeza.\n\nJambo baya linapotokea, mara nyingi tunafadhaika na kulaumu. Lakini kile ambacho vijana wetu wanahitaji ni mtu wa kuwasaidia kulitatua tatizo. Wasikilize, kubali jinsi wanavyoyaona mambo na kuyahisi, na washukuru kwa kukuamini.\n\nKumfundisha kijana wako jinsi ya kutatua matatizo kutamsaidia maishani mwake mwote. Zawadi iliyoje!", - "type": "template", + "SourceText": "Positive Instructions", + "text": "Maelekezo Chanya", + "type": "data_list", "note": "" }, { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Baadhi ya matatizo ambayo wazazi waliyatatua na vijana wao:", - "type": "template", - "note": "" + "SourceText": "**Positive Instructions** @global.workshop", + "text": "**Maelekezo Chanya** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* Kijana wangu hataki kwenda shule\n* Nina wasiwasi kijana wangu atapata ujauzito au atampa mtu mjamzito\n* Nina wasiwasi kuhusu anachofanya kijana wangu mtandaoni\n* Kijana wangu ana marafiki wabaya\n* Kijana wangu ni mvivu\n* Kijana wangu hafanyi kazi zake za shuleni\n* Huenda kijana wangu anatumia madawa ya kulevya", - "type": "template", + "SourceText": "Teens follow instructions that are positive more easily.", + "text": "Vijana hufuata maelekezo chanya kwa urahisi zaidi.", + "type": "data_list", "note": "" }, { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Kuwa mzazi mzuri kunamaanisha pia kutumia muda ili kujithamini wewe mwenyewe kila siku.", - "type": "template", + "SourceText": "Why Positive Instructions?", + "text": "Kwa nini Maelekezo Chanya ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Safi sana. Na inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitoa kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", - "type": "template", + "SourceText": "How to give positive instructions", + "text": "Jinsi ya kutoa maelekezo chanya", + "type": "data_list", "note": "" }, { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Kuwa mzazi ni jambo gumu. Lakini inapendeza sana kuona unatumia programu hii – inaonyesha jinsi unavyojitolea kwa dhati kama mzazi. Hakikisha unajitambua na kujisifia kwa kile unachokifanya.", - "type": "template", + "SourceText": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "text": "Awali, Niliwalea vijana wangu kama vile nilivyolelewa mimi: Ningewaambia \" Usifanye hiki, Usifanye kile\" Tulikuwa tukigombana sana, lakini mambo yalibadilika sana pindi nilipo jifunza kutoa maelekezo chanya. \n\nSasa nimejikita katika tabia ninayotaka kuiona, na natoa maelekezo ya wazi na rahisi kwa vijana wangu. Ilinichukua muda kujifunza kusema \"Tafadhali fanya hivi\" badala ya \"Usifanye hivi\"\n\nVijana wangu na hata Mume wangu wanasema wanapenda namna hii ya ufanyaji vitu, kwa sababu sasa wanajua nini kinatakiwa kufanyika. Kijana wangu alisema siku moja \"Ninampenda sana huyu Mama mpya\", na msongo wangu wa mawazo umepungua kwa kiasi kikubwa.", + "type": "data_list", "note": "" }, { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Kufanya jambo lolote kati ya haya hukufanya uwe mzazi mzuri sana.", - "type": "template", - "note": "" + "SourceText": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.", + "text": "Mwanzoni, sikujali kwamba Mama yangu alikuwa anafanya @global.parent_app. Lakini nilianza kuona Mama yangu anabadirisha namna ya kuzungumza na sisi.\n\nSiku moja,wakati nilipokuwa nikitoka na marafiki zangu aliniambia ni lazima nirudi nyumbani saa kumi na mbili jioni. Nilisema tu \" Hmmmm sawa\", kwa sababu kawaida hakutoa maelekezo ya wazi ya namna alivyotaka, Angeweza kukaa bila kusema chochote kisha akanifokea kwa kuchelewa kurudi pindi ninaporudi nyumbani.\n\nPindi niliporudi nyumbani muda wa saa kumi na moja jioni, Mama yangu alinikumbatia na kusema \" Asante kwa kuzingatia muda, ilikuwa ni ajabu lakini nilipenda.\n\nTangu hapo,tumekuwa na Mawasiliano ya wazi katika nyumba.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Vijana wanaweza kutumia muda mwingi nje ya nyumba au mtandaoni, ambako ni vigumu kwetu kuwaweka salama.\n\nKuzungumza pamoja kuhusu maeneo salama na yasiyo salama, na jinsi ya kuzuia matatizo, husaidia sana!", - "type": "template", + "SourceText": "Managing Stress", + "text": "Kudhibiti Msongo wa Mawazo", + "type": "data_list", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Habari zenu?\n\nLeo mada yetu inahusu usalama wa vijana.\n\nKama wazazi, ni jukumu letu kuwaweka salama vijana wetu wakati wote. Tunahitaji kuhakikisha kuwa vijana wetu wako salama katika jamii tunazoishi. Ni jukumu letu kuwafahamisha maeneo salama na yasiyo salama katika jamii hizo.\n\nPia ni jukumu letu kuhakikisha kwamba wanaelewa hatari zinazoweza kuwakabili wanapokuwa mtandaoni. Kwa njia hiyo, vijana wetu watawajibika na wataweza kufanya maamuzi sahihi ya kujiweka salama.", - "type": "template", - "note": "" + "SourceText": "**Managing Stress** @global.workshop", + "text": "**Kudhibiti Msongo wa Mawazo** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Today you will explore:", - "text": "Leo mtachunguza:", - "type": "template", + "SourceText": "Life is stressful. Staying calm helps us handle any situation better.", + "text": "Maisha ni ya mafadhaiko. Kuwa na utulivu husaidia kukabiliana na hali yoyote vyema.", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "Why Managing Stress?", + "text": "Kwa nini Kudhibiti Msongo wa Mawazo ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", + "SourceText": "How to manage stress", + "text": "Jinsi ya kudhibiti msongo wa mawazo", + "type": "data_list", "note": "" }, { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Mawasiliano ni jambo muhimu zaidi!\n\nHebu tuangalie kile kilichotokea kwa @global.w_safe_female_caregiver na @global.w_safe_teen_girl_1:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "SourceText": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "text": "Maisha ni magumu wakati mwingine. Kabla sijajiunga na @global.parent_app,Nilikuwa mwenye hasira wakati wote. Nilitoa hasira zangu kwa watu wote katika familia, si kwa vijana wangu tu bali hata kwa Mume wangu pia. Walikuwa wakikimbia pindi niliporudi nyumbani, kwa sababu walijua nitaanza kuwafokea.\n\nKujifunza kupumzika na kuvuta pumzi awali ilikuwa ngumu, lakini wakati mwingi nilijaribu, Ilinisaidia kutulia. Sasa Vijana wangu hawakimbii tena pindi ninaporudi nyumbani, na wanasikiliza vizuri zaidi kuliko nilipokuwa nikiwafokea awali!", + "type": "data_list", + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: \"Kuna kitu kilitokea nilipoenda kutembea na marafiki zangu @global.w_safe_teen_girl_2 na @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Niambie, @global.w_safe_teen_girl_1\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "SourceText": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.", + "text": "Pindi nilipofanya kitu kibaya, Baba yangu alinikasirikia sana na kunipiga. Alikuwa hanisikilizi na hii ilinifanya kumkasirikia yeye pamoja na watu wengine.\n\nSasa, pindi anapokuwa na hasira, anachukua dakika chache kuvuta pumzi ndefu kabla hajajibu chochote. Inafanya kila mtu kutulia badala ya kusababisha ugomvi mkubwa.\n\nHii inanisaidia sana nyumbani na hata shuleni, hata Mimi sasa siwakasirikii wengine na si mtu wa hisia kali. Pindi ninapojihisi hasira au mwenye msongo wa mawazo, Navuta pumzi ndefu kama Baba yangu anavyofanya. Nimekuwa mtu tofauti.", + "type": "data_list", + "note": "" }, { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Mwanaume ndani ya gari: “Halo, mrembo. Nimekuwa nakuona kwa muda. Wewe ni mrembo sana, unaitwa nani?\n\n@global.w_safe_teen_girl_2: \"Anaitwa @global.w_safe_teen_girl_1\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" + "SourceText": "Problem Solving", + "text": "Kutatua Matatizo", + "type": "data_list", + "note": "" }, { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Mwanaume ndani ya gari: \"@global.w_safe_teen_girl_1, ungependa kuongozana nami tukapate chipsi na kinywaji? Twende, ingia, utawahi kurudi, nakuahidi… ”\n\n@global.w_safe_teen_girl_1: \"Sidhani kama hilo ni wazo zuri…\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "SourceText": "**Problem Solving** @global.workshop", + "text": "**Kutatua matatizo** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “Una bahati, shoga yangu. Natamani mwanamume aniombe MIMI tutoke akaninunulie zawadi. Ninakuambia, usipofanya hivyo, nitaenda nimwambie kila mtu kuwa wewe ni mjinga!”", - "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." + "SourceText": "Together with your teen, you can handle any challenge.", + "text": "Pamoja na kijana wako mnaweza kutatua changamoto yoyote.", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, usiende! Kuwa mwangalifu! Twende nyumbani. Ni hatari kwenda na watu usiowajua. Tena, mtu mwenyewe ni mkubwa sana kwako na anachokifanya sio sawa.\"\n\n@global.w_safe_teen_girl_1: \"Hata sijui nifanye nini…\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "SourceText": "Why Problem Solving?", + "text": "Kwa nini Kutatua Matatizo ni muhimu?", + "type": "data_list", + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: \"Ninafurahi sana kwamba hukuingia kwenye gari. Hiyo ilikuwa hali ya hatari, asante kwa kuniambia!\"", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "SourceText": "How to solve problems", + "text": "Jinsi ya kutatua matatizo", + "type": "data_list", + "note": "" }, { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "Hebu tuzungumzie kile kilichotokea kwa @global.w_safe_teen_girl_1", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "SourceText": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "text": "Sina mahusiano mazuri na binti yangu. Mara nyingi nilikuwa nikimfokea, na alikuwa akikataa kwenda shuleni.\n\nMara nilipoanza kutumia muda wangu pamoja naye, Nilitambua kwamba hakutaka kwenda shuleni kwa sababu alikuwa akionewa. Tulikaa chini na kutumia hatua sita za kutatua tatizo. Tulitambua tatizo, na kutafuta suluhisho kwa pamoja:\"Naweza kufanya nini kama mzazi ili uweze kuhudhuria shuleni na kujihisi salama?\"\n\nTulikubaliana kuwa nitakwenda kuzungumza na mwalimu kutafuta suluhisho. Ni kweli tulipata suluhisho kwa pamoja, na sasa tupo karibu.", + "type": "data_list", + "note": "" }, { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Jadilini pamoja:\n\nKitu gani kilikuwa cha hatari kwenye tukio hilo?", - "type": "template", + "SourceText": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.", + "text": "Pindi Baba yangu aliponitambulisha hatua za kutatua tatizo, ilinisaidia mimi na familia yangu, lakini pia iliwasaidia marafiki zangu.\n\nNiliwaambia marafiki zangu kuhusu hatua hizo, na sasa wakati tunapobishana tunakaa chini na kila mmoja anakuja na suluhisho. Kisha tunaangalia madhara hasi na chanya ya kila suluhisho, na tunakubaliana\"sawa ngoja tujaribu hii moja,\"\n\nMarafiki zangu huchukua na kupeleka nyumbani kwao, na inawasaidia wao na familia zao pia!\n\nNi furaha pindi ambapo wengine wanakusikiliza na kukubaliana na mawazo yako hata kama wewe ni mdogo. Sote tunaweza kuleta maelewano na marafiki na familia.", + "type": "data_list", "note": "" }, { - "SourceText": "The situation was risky because...", - "text": "Tukio hilo lilikuwa la hatari kwa sababu...", - "type": "template", + "SourceText": "Family Budgets", + "text": "Bajeti za Familia", + "type": "data_list", "note": "" }, { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi\n* Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo\n* Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani\n* Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa\n* Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "SourceText": "**Family Budgets** @global.workshop", + "text": "**Bajeti za Familia** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "Hebu tufikirie kuhusu kile kilichotokea kwa @global.w_safe_teen_girl_1:", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "SourceText": "Making a plan to budget and save as a family prevents disagreements.", + "text": "Kupanga bajeti na kuweka akiba kama familia husaidia kupunguza hali ya kutokuelewana.", + "type": "data_list", + "note": "" }, { - "SourceText": "What was risky about that situation?", - "text": "Kitu gani kilikuwa cha hatari kwenye tukio hilo?", - "type": "template", + "SourceText": "Why Family Budgets?", + "text": "Kwa nini Bajeti za Familia ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "Mwanaume wa ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi", - "type": "template", + "SourceText": "How to budget & save", + "text": "Jinsi ya kutengeneza bajeti & kuweka akiba", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo", - "type": "template", + "SourceText": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "text": "Kuweka akiba na kupanga bajeti inanisaidia kama mzazi, na inawasaidia vijana wangu kuelewa mahali pesa inapokwenda.\n\nVijana wangu mara nyingi walikuwa wakiuliza vitu vingi na walikuwa hawaelewi pindi niliposema \"Sina pesa\" Walikuwa wakisema \"Lakini una kazi!\"\n\nNilikaa nao chini na kuwaonyesha vitu vyote tunavyolipa na kiasi kilichobaki. Sasa wanaelewa na wananipa mawazo namna ya kufanya ili kuweka akiba na kufanyia kazi malengo yetu kama viatu vipya au sherehe ya kuzaliwa na malengo makubwa kama ada yao ya shule. Kwa mkubwa mmoja, niliweza kufungua akaunti ya akiba.", + "type": "data_list", "note": "" }, { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani", - "type": "template", + "SourceText": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.", + "text": "Nilikuwa nikimwambia Mama yangu aninunulie nguo nzuri kila wakati, wakati mwingi alisema \" Sina pesa\", lakini nilikuwa najua kwamba anapata pesa kutoka kwa Mjomba. Sikuelewa kwanini alikuwa akikataa kuninunulia nguo. Nilifikiri kwa wakati fulani \" Kwamba hanipendi.\"\n\nLakini siku moja, aliniita na kunikalisha chini na kuniuliza \" Ni yapi mahitaji na matakwa katika nyumba yetu.\" Nilianza kuorodhesha mahitaji na matakwa yangu.\nKisha Mama alinisaidia kufikiri juu ya mahitaji ya familia. Sasa naelewa ni wapi pesa zetu zinakwenda, kwenye vitu tunavyohitaji kama familia.\nKuanzia siku hiyo, Nilielewa na siwezi kuja kila mara kuuliza. Sasa, ninapohitaji kitu fulani, nasubiri mpaka mwisho wa mwezi tunapojadili bajeti kwa pamoja kuona kama itawezekana. Tunaelewana kila mmoja kwa sasa.", + "type": "data_list", "note": "" }, { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa", - "type": "template", + "SourceText": "Rules", + "text": "Sheria", + "type": "data_list", "note": "" }, { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", - "type": "template", + "SourceText": "**Rules** @global.workshop", + "text": "**Sheria** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." + }, + { + "SourceText": "Teens follow rules more when you create them together.", + "text": "Vijana hufuata sheria zaidi pale unapotengeneza nao pamoja.", + "type": "data_list", "note": "" }, { - "SourceText": "All those things are true!", - "text": "Mambo yote hayo ni ya kweli!", - "type": "template", + "SourceText": "Why Rules?", + "text": "Kwa nini Sheria ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "Hebu tuangalie pamoja mfano mwingine wa tukio la hatari.", - "type": "template", + "SourceText": "How to create rules", + "text": "Jinsi ya kuunda sheria", + "type": "data_list", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: \"Rafiki yangu amekuwa akiwasiliana na mvulana wa rika letu mtandaoni... Atamtumia picha zake. Je, hilo ni jambo zuri kwa sababu yeye ni wa rika letu?\"", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." - }, - { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: \"Wewe ni rafiki mzuri kwa kumjali mwenzako. Kutuma picha zinazovutia kimapenzi ni hatari sana pia.\"", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." - }, - { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: \"Wakati mwingine watu wanadanganya mtandaoni – anaweza kusema ni wa rika lako kumbe ni mwanaume wa miaka 50. Au wakivunja mahusiano, anaweza kutuma picha hizo kwa kila mtu na rafiki yako akajisikia vibaya sana.\"", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "SourceText": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "text": "Vijana wangu mara nyingi walipotea.Nilikuwa sijui walipokuwa, na nilipata wasiwasi na hasira juu yao. Nilikuwa nikisema \"Hii ni nyumba yangu, na hizi ni sheria zangu, kama hutaki kuzifuata unaweza kuondoka na kwenda kuishi kwako.\"\n\nPindi tulipojifunza kwenye @global.parent_app kuhusiana na sheria, Nilijifunza kwamba kuna sheria kwa ajili ya vijana, watu wazima na watu wengine wote. Kama tukifuata sheria kama wazazi, vijana wetu wataishi kwa kufuata mfano wetu.\n\nNilieleza wasiwasi wangu na wote tukakubaliana: Sote tunafuata sheria na kusema tunaenda wapi pindi tunapotoka nyumbani. Kuja na sheria kwa pamoja imetusaidia sana, kwa sababu vijana wangu hawanioni kama mzazi ninayekera ambaye naweka sheria zisizo za lazima.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's talk about our teens' online safety.", - "text": "Hebu tuzungumzie usalama wa vijana wetu mtandaoni.", - "type": "template", + "SourceText": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.", + "text": "Sikuwahi kupenda sheria na nilikuwa nikisahau sheria mara nyingi.\n\nSiku moja, nilikuwa nikicheza na marafiki zangu. Sheria ya nyumbani ilikuwa ni kwamba lazima tuwe nyumbani saa kumi na mbili jioni, lakini nilisahau tena. Ilipofika saa kumi na mbili na nusu ilikuwa usiku na bado nilikuwa nje nikichezea simu yangu. Kisha alikuja kijana, na kukwapua simu yangu na kukimbia.\n\nNilielewa kwamba sheria zinatusaidia kuwa salama, hivyo nilibadili tabia yangu na nilirudi nyumbani saa kumi na moja kwa wakati huo.", + "type": "data_list", "note": "" }, { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Je, ni zipi hatari za mtandaoni kwa vijana siku hizi?", - "type": "template", + "SourceText": "Calm Consequences", + "text": "Athari Nyepesi", + "type": "data_list", "note": "" }, { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono\n* Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine\n* Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua\n* Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha\n* Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", - "type": "template", - "note": "" + "SourceText": "**Calm Consequences** @global.workshop", + "text": "**Adhabu Nyepesi** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Let's think about our teens' online safety.", - "text": "Hebu tufikirie usalama wa vijana wetu mtandaoni.", - "type": "template", + "SourceText": "Consequences help us discipline our teens in a calm way – it works.", + "text": "Athari husaidia kuadabisha vijana wetu kwa namna ya utuilivu - inafanya kazi.", + "type": "data_list", "note": "" }, { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Je, ipi ni hatari iliyo kubwa zaidi kwa vijana mtandaoni siku hizi?", - "type": "template", + "SourceText": "Why Calm Consequences?", + "text": "Kwa nini Athari Nyepesi ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono", - "type": "template", + "SourceText": "How to give calm consequences", + "text": "Jinsi ya kuamuru athari nyepesi zifanywe", + "type": "data_list", "note": "" }, { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine", - "type": "template", - "note": "" + "SourceText": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "text": "Pindi vijana wangu walipofanya kitu cha kunikasirisha, niliwafokea na kuwaadhibu muda huo huo. Lakini wakati uliofuata walifanya tena! Sikuelewa kwanini hawakunisikiliza hata nilipowafokea.\n\n@global.parent_app imenisaidia kuelewa kwamba vijana wangu wananisikiliza zaidi pindi ninapokuwa nimetulia. Kwahiyo, pindi kitu kinapotokea navuta pumzi ndefu na kusema \" Tutazungumza hili baadae wakati sote tumetulia.\"\n\nSasa tunakubaliana matokeo pamoja kabla kitu hakijaenda vibaya. Hii imefanya maajabu. Nimeshaona mabadiliko makubwa ya tabia kwa vijana wangu sasa wanahusishwa zaidi,na nimepunguza msongo wa mawazo.\n\nNatamani ningelijua hili muda mrefu, lakini sijachelwa sana kuanza!", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua", - "type": "template", + "SourceText": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.", + "text": "Mama yangu na Baba yangu mara nyingi waliniadhibu pindi walipokuwa na hasira na mimi. Walinifokea na mimi nilipata hasira. Mara nyingi sikufuata sheria zao, kwa sababu zilikuwa kali, sikuelewa kile walichokuwa wakisema, au Nilikuwa sijihangaishi kuwasikiliza, kwa sababu wote tulikuwa na hasira.\n\nSiku moja, waliniuliza: Hebu tufikiri kwa pamoja madhara yanayoweza kukupata kwa kushindwa kurudi nyumbani kwa wakati. Ilikuwa ni furaha kubwa kutoa maoni yangu kabla kitu hakijatokea na kutufanya wote kuwa na hasira. Wote tulitulia na kukubaliana kwanza. Sasa ni rahisi kwangu kufuata sheria kwa sababu najua na nilikubali sheria hizo na madhara kama sitafuata sheria hizo.", + "type": "data_list", "note": "" }, { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha", - "type": "template", + "SourceText": "Teen Safety", + "text": "Usalama wa Vijana", + "type": "data_list", "note": "" }, { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", - "type": "template", - "note": "" + "SourceText": "**Teen Safety** @global.workshop", + "text": "**Usalama wa kijana** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambazo wanaweza kuzijingiza!\n\nHebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nHebu sasa tuchore ramani hizo kama kikundi.\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii.", - "type": "template", + "SourceText": "Talking and planning helps prevent dangerous situations, in-person and online.", + "text": "Kuongea na kupanga husaidia kuzuia hali hatarishi, ana kwa ana na mtandaoni.", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Jadilini pamoja:\n\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "type": "template", + "SourceText": "Why Teen Safety?", + "text": "Kwa nini Usalama wa Vijana ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n \n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", - "type": "template", + "SourceText": "How to keep your teen safe", + "text": "Jinsi ya kumweka salama kijana wako", + "type": "data_list", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", - "type": "template", + "SourceText": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "text": "Nilikuwa mwenye furaha kufanya mipango salama na kijana wangu. Nilifikiri nilijua ni maeneo yapi ni salama kwa kijana wangu na yapi si salama. Lakini pindi tulipofanya mipango salama kwa pamoja, Niligundua kwamba binti yangu anajua zaidi maeneo ambayo mimi sikuyafahamu.\n\nPia nilifikiri kwamba alikuwa salama alipokuwa shuleni, lakini kwa shughuli hii niligundua kwamba alikuwa akionewa shuleni na walimu hawakufanya chochote kuhusu hilo.\n\nKadiri tulivyozidi kuongea, ndivyo nilivyozidi kuelewa na kupata taarifa kutoka kwa kijana wangu. Hii imenisaidia sana kumlinda kijana wangu na kumuweka salama.", + "type": "data_list", "note": "" }, { - "SourceText": "Safety Plan", - "text": "Mpango wa Usalama", - "type": "template", + "SourceText": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!", + "text": "Wakati marafiki zangu au mimi nilipoingia katika ugomvi, nilikuwa mara nyingi nikijaribu kuficha kwa mama angepata hasira na kunifokea.\n\nWakati tulitengeneza ramani ya maeneo salama na yasiyo salama, nilijifunza mengi-pia kwanini ni hatari kushirikisha kila picha kwenye mtandao wa kijamii. Mama yangu aliniambia kwamba naweza kumuuliza wakati wowote kama kuna tatizo na aliahidi kutokukasirika.\n\nAlitunza ahadi yake, hivyo sasa kama nina tatizo au sijihisi salama najua tunaweza kukaa na kuja na suluhisho la pamoja. Kwa sasa nawezi hata kuzungumza na Mama yangu kuhusu mambo ninayofanya kwenye mtandao!", + "type": "data_list", "note": "" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambamo wanaweza kujiingiza!", - "type": "template", + "SourceText": "Dealing with Crisis", + "text": "Kushughulikia Hali ya Matatizo", + "type": "data_list", "note": "" }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Kila wakati unapopanga mpango wa usalama au unapouzingatia, bofya @global.parent_point ili usherehekee mafanikio yako!", - "type": "template", - "note": "The string @global.parent_point should not be translated." + "SourceText": "**Dealing with Crisis** @global.workshop", + "text": "**Kushughulikia Hali ya Hatari/Dharula** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "Hebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii – kama kijana wako yuko hapa sasa, mnaweza kufanya pamoja sasa!", - "type": "template", + "SourceText": "A crisis can happen in any family. You can be prepared.", + "text": "Matatizo yanaweza kutokea katika familia yoyote. Unaweza kuwa tayari.", + "type": "data_list", "note": "" }, { - "SourceText": "My family can join in now!", - "text": "Familia yangu inaweza kujiunga sasa!", - "type": "template", + "SourceText": "Why Dealing with Crisis?", + "text": "Kwa nini Kushughulikia Hali ya Hatari/Dharula ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Let me try it out by myself", - "text": "Ngoja niijaribu peke yangu", - "type": "template", + "SourceText": "How to deal with crisis", + "text": "Jinsi ya kushughulikia hali ya hatari", + "type": "data_list", "note": "" }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Hatua ya Kwanza: Je, yapi ni maeneo muhimu katika jamii yako?", - "type": "template", - "note": "" + "SourceText": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "text": "Kijana wangu alikuwa mwenye hasira muda wote. Alikuwa hasikilizi na tulikuwa tunajikuta katika marumbano makubwa kila siku. Kupitia @global.parent_app, nilianza kutumia muda zaidi na kijana wangu na kuimarisha uhusiano wetu. Siku moja alinishirikisha kwamba alikuwa sehemu ya genge lakini alikuwa anataka kujitoa.\n\nTuliweka pamoja mipango ya muda mfupi na ya muda mrefu jisni tunaweza kufanya hivyo. Maisha yetu yanaonekana tofauti sasa hivi!", + "type": "data_list", + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora ramani ya jamii ya kijana wako, ikiwa na picha za maeneo yote muhimu kama barabara, nyumba yako, shule, maduka, maeneo anayotembelea kijana wako.", - "type": "template", - "note": "" + "SourceText": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.", + "text": "Miaka miwili iliyopita, nilibakwa na mjomba wangu aliyekuwa anaishi nyumbani kwetu. Sikumwambia mama yangu, kwa sababu niliogopa angenipiga, kunifokea, au hata kunifukuza ndani ya nyumba. Sikuwa na mahali popote pengine pa kwenda.\n\nWakati mama yangu alipoanza @global.parent_app, alianza kutumia muda zaidi pamoja. Nilikuwa bado naogopa, lakini mwisho nilimshirikisha mama yangu.Mama yangu hakufoka, lakini alinisikiliza na kuniambia siyo kosa langu. Tulienda polisi na kliniki pamoja. Ninashukuru sana sihitaji kutunza zaidi siri hii.", + "type": "data_list", + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Hatua ya Pili: Je, maeneo yapi ni salama na yapi si salama?", - "type": "template", + "SourceText": "Celebration and Next Steps", + "text": "Kusherehekea na Hatua Zinazofuata", + "type": "data_list", "note": "" }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Jadilini pamoja:\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "type": "template", - "note": "" + "SourceText": "**Celebration and Next Steps** @global.workshop", + "text": "**Kusherehekea na Hatua Zinazofuata** @global.workshop", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", - "type": "template", + "SourceText": "Celebrate everything you learned and continue to support your family.", + "text": "Sherehekea kila unachojifunza na uendelee kusaidia familia yako.", + "type": "data_list", "note": "" }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Hatua ya Tatu: Je, unaweza kupata wapi msaada?", - "type": "template", + "SourceText": "Why Celebration and Next Steps?", + "text": "Kwa nini Kusherehekea na Hatua Zinazofuata ni muhimu?", + "type": "data_list", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi. \n\nHapa chini kuna maeneo yanayoweza kukusaidia", - "type": "template", + "SourceText": "How to support each other", + "text": "Jinsi ya kusaidiana", + "type": "data_list", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Wakati mwingine, tunaweza kujikuta matatani.\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", - "type": "template", + "SourceText": "How are you?", + "text": "Habari yako?", + "type": "data_list", "note": "" }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Hatua ya Nne: Je, maeneo gani mtandaoni ni ya hatari na unawezaje kuyafanya yawe salama zaidi?", - "type": "template", + "SourceText": "Think", + "text": "Fikiria", + "type": "data_list", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", - "type": "template", + "SourceText": "Learn - Budget preparation", + "text": "Jifunze - Maandalizi ya bajeti", + "type": "data_list", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Wasifie kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya mtandao yawe salama kwa vijana wenu na marafiki zao?", - "type": "template", + "SourceText": "Learn - Step 1: Think", + "text": "Jifunze - Hatua ya 1: Fikiri", + "type": "data_list", "note": "" }, { - "SourceText": "MAPS", - "text": "RAMANI", - "type": "template", + "SourceText": "Learn - Step 2: Choose", + "text": "Jifunze - Hatua ya 2: Chagua", + "type": "data_list", "note": "" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Tengeneza RAMANI na kijana wako juu ya maeneo salama na yasiyo salama kwenye jamii yenu na mtandaoni. Zungumzieni jinsi ya kufanya taarifa, picha na video zake ziwe za faragha mtandaoni. Zungumzieni jinsi ambavyo kitu kikishawekwa mtandaoni, kitakaa hapo daima. Anaweza kuwa na mfano hai kutoka kwa marafiki zake.", - "type": "template", + "SourceText": "Learn - Step 3: Build", + "text": "Jifunze - Hatua ya 3: Jenga", + "type": "data_list", "note": "" }, { - "SourceText": "RULES", - "text": "SHERIA", - "type": "template", + "SourceText": "Learn - Step 4: Plan", + "text": "Jifunze - Hatua ya 4: Panga", + "type": "data_list", "note": "" }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Tengeneza SHERIA na kijana wako kuhusu kutumia kwa usalama programu na tovuti anazozipenda.\n\nJe, unakumbuka hadithi kuhusu Usalama Mtandaoni? Iangalie tena hapa.", - "type": "template", + "SourceText": "Question", + "text": "Swali", + "type": "data_list", "note": "" }, { - "SourceText": "Online Safety Story", - "text": "Hadithi ya Usalama Mtandaoni", - "type": "template", + "SourceText": "Talk Together", + "text": "Zungumza Pamoja", + "type": "data_list", "note": "" }, { - "SourceText": "AMNESTY", - "text": "MSAMAHA", - "type": "template", + "SourceText": "Relax", + "text": "Chukua pumziko", + "type": "data_list", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Wekeni makubaliano ya MSAMAHA. Kama kikitokea kitu kitakachomfadhaisha, kumnyima raha, au kumwogofya, anaweza kuzungumza na wewe na hautakasirika au kumwadhibu, hata kama alikuwa akifanya jambo baya.\n\nJe, unakumbuka hadithi kuhusu Msamaha wa Usalama? Iangalie tena hapa.", - "type": "template", + "SourceText": "Recognise", + "text": "Tambua", + "type": "data_list", "note": "" }, { - "SourceText": "Safety Amnesty Story", - "text": "Hadithi ya Msamaha wa Usalama", - "type": "template", + "SourceText": "Reward", + "text": "Tuzo", + "type": "data_list", "note": "" }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Malezi yanayohusu masuala ya kidijitali ni sawa tu na malezi ya masuala mengine maishani. Umepiga HATUA KUBWA ya kumweka salama kijana wako katika jamii NA mtandaoni. Ni jambo zuri kwako!", - "type": "template", + "SourceText": "Learn", + "text": "Jifunze", + "type": "data_list", "note": "" }, { - "SourceText": "Resources to help in the community", - "text": "Rasilimali za msaada katika jamii", - "type": "template", + "SourceText": "Try it out!", + "text": "Ijaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "Online Safety Resources", - "text": "Rasilimali za Usalama Mtandaoni", - "type": "template", + "SourceText": "Start", + "text": "Anza", + "type": "data_list", "note": "" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Wewe na kijana wako choreni ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote wawili mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", - "type": "template", + "SourceText": "Continue", + "text": "Endelea", + "type": "data_list", "note": "" }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Kama bado hamjafanya hivyo pamoja, choreni ramani mbili za maeneo salama na yasiyo salama wewe na kijana wako:\n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", - "type": "template", - "note": "" + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Karibu kwenye @global.parent_app. Bonyeza hapa kuanza safari yako!", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Safety Plan Activity", - "text": "Shughuli ya Mpango wa Usalama", - "type": "template", - "note": "" + "SourceText": "Care for yourself with @global.parent_app", + "text": "Jithamini mwenyewe kutoka @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Safi sana! Tunakuonea fahari kwa yote uliyoyafanya katika wiki zilizopita.", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, it is so good to have you on this parenting journey. Tap the @data.workshop.w_self_care.in_text_title and learn more on how you can care for yourself. A happy family starts with a happy YOU!", + "text": "@fields.user_name, ni vizuri sana kuwa na wewe katika safari ya malezi. Gusa @data.workshop.w_self_care.in_text_title na jifunze jinsi unavyoweza kujithamini mwenyewe. Familia yenye furaha huanza na WEWE mwenye furaha!", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@data.workshop.w_self_care.in_text_title" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Tunasikitika kusikia kuwa leo ni siku mbaya kwako. Tunafuhari kwa yote uliyoyafanya katika wiki zilizopita.", - "type": "template", - "note": "" + "SourceText": "Connect well through @global.parent_app", + "text": "Jiunge vizuri kupitia @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye malezi.", - "type": "template", - "note": "" + "SourceText": "Spending time with your teen helps build trust between you. Continue your @global.parent_app journey now by completing the @data.workshop.w_1on1.in_text_title. You and your family will see great results.", + "text": "Kutumia muda na kijana wako husaidia kujenga uaminifu kati yenu. Endelea na safari yako ya @global.parent_app kwa kujaza @data.workshop.w_1on1.in_text_title. Wewe na familia yako mtaona matokeo mazuri.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app\n@data.workshop.w_1on1.in_text_title." }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye @global.parent_app.", - "type": "template", + "SourceText": "Praise each other with @global.parent_app", + "text": "Sifianeni kila mmoja na @global.parent_app", + "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Habari zenu?\n\nMada ya leo inahusu usherehekeaji na hatua zinazofuata.\n\nLimekuwa jambo zuri sana na la kufurahisha kuwa na wewe kwenye safari hii. Leo tunasherehekea safari yetu pamoja.\n\nLeo tunasherehekea mafunzo yote tuliyojifunza kwa muda wote.", - "type": "template", - "note": "" - }, - { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Leo utasherehekea, kuangalia tulikotoka na kufikiria yajayo:", - "type": "template", - "note": "" + "SourceText": "Praising makes all the difference. Complete the @data.workshop.w_praise.in_text_title to see how praise can change YOUR family.", + "text": "Kusifia huleta tofauti nyingi. Jaza @data.workshop.w_praise.in_text_title kuona jinsi kusifia inaweza kubadilisha familia YAKO.", + "type": "data_list", + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "* Tafakari & majadiliano\n* Nyenzo: Jinsi ya kusaidiana\nKUTANA – ITA – TUMA UJUMBE – SHIRIKISHA\n* Msaada wa kupanga", - "type": "template", - "note": "" + "SourceText": "Instruct well through @global.parent_app", + "text": "Elekeza vizuri kupitia @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Leo tutasherehekea na kutafakari kuhusu uzoefu uliyopitia.", - "type": "template", - "note": "" + "SourceText": "Positive instructions help to see more and more good behaviour! Learn how this could work in your family, by completing the @data.workshop.w_instruct.in_text_title.", + "text": "Maelekezo chanya husaidia kuona tabia nzuri zaidi na zaidi! Jifunze hii inavyoweza kufanya katika familia yako, kwa kujaza @data.workshop.w_instruct.in_text_title.", + "type": "data_list", + "note": "The string @data.workshop.w_instruct.in_text_title. should not be translated." }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Wewe na familia yako mmejifunza mengi. Hebu tufikirie hali ilivyokuwa na tuone kilichobadilika.", - "type": "template", - "note": "" + "SourceText": "Stay calm with @global.parent_app", + "text": "Baki mtulivu na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Reflect", - "text": "Tafakari", - "type": "template", - "note": "" + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! Complete the @data.workshop.w_stress.in_text_title to get some useful tools to deal with stress.", + "text": "Wote huwa tunajisikia kuzidiwa wakati mwingine. Kuvuta pumzi ndefu husaidia! jaza @data.workshop.w_stress.in_text_title kupata baadhi ya nyenzo kukabiliana na msongo wa mawazo.", + "type": "data_list", + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." }, { - "SourceText": "Listen and reflect", - "text": "Sikiliza na utafakari", - "type": "template", - "note": "" + "SourceText": "Manage money with @global.parent_app", + "text": "Simamia pesa na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Read and reflect", - "text": "Soma na utafakari", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, do you feel stressed about money? Does your teen keep asking for things you can’t afford? Tap the @data.workshop.w_money.in_text_title to get great tips on money and budgeting.", + "text": "@fields.user_name, je unajisikia kuwa na msongo wa mawazo kuhusu pesa? Je, kijana wako huendelea kuomba vitu ambavyo huwezi kumudu gharama? Gusa @data.workshop.w_money.in_text_title kupata dondoo kuhusu pesa nakupanga bajeti.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@data.workshop.w_money.in_text_title" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Fumba macho na chukua pumziko.\n\nFikiria maisha ya familia yako yalivyokuwa kabla ya kuanza safari yako kwenye programu hii.\n\nJikumbushe ujuzi uliojifunza:\n* Kujithamini\n* Muda wa kutumia pamoja wawili\n* Kusifia\n* Maelekezo chanya\n* Kudhibiti msongo wa mawazo\n* Kutengeneza bajeti ya familia\n* Sheria\n* Njia za kufanya athari nyepesi\n* Kutatua matatizo\n* Usalama wa vijana\n* Kushughulikia hali ya matatizo\n\n Tafakari kuhusu safari – je, ilikuwaje kwako:\n* Kushirikishana na wengine mawazo na uzoefu\n* Kutafakari na kujifunza kutokana na Hadithi\n* Kutumia ujuzi kwa kijana wako\n\nJe, kulikuwa na mabadiliko yoyote kwako na kwa familia yako?\n\nJe, unahitaji nini ili kuendelea kutumia ujuzi?", - "type": "template", - "note": "" + "SourceText": "Rules that work with @global.parent_app", + "text": "Sheria zinazofanya kazi na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's talk about what has changed.", - "text": "Hebu tuzungumzie kilichobadilika.", - "type": "template", - "note": "" + "SourceText": "Well done for using @global.parent_app and for committing to your parenting journey. The @data.workshop.w_rules.in_text_title shows you how to set rules in a way that helps your teen to understand and follow them better. Try it out today!", + "text": "Vizuri sana kwa kutumia @global.parent_app na kwa kujitolea muda wako katika safari ya malezi. @data.workshop.w_rules.in_text_title inakuonesha jinsi ya kutengeneza sheria kwa njia ambayo itamsaidia kijana wako kuelewa na kuzifuata vizuri zaidi. Jaribu leo!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app\n@data.workshop.w_rules.in_text_title" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Jadilini pamoja:\n* Je, ni nini kimebadilika kwenye familia yako?\n* Je, umefanya kitu gani unachokionea fahari?\n\nKumbukeni kusifiana na kutiana moyo!", - "type": "template", - "note": "" + "SourceText": "Motivate your teen with @global.parent_app", + "text": "Mhamasishe kijana wako na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "MEET", - "text": "KUKUTANA", - "type": "template", - "note": "" + "SourceText": "You have build many great parenting skills already! Tap the @data.workshop.w_consequence.in_text_title to learn how to set one positive and one negative consequence of a behaviour together. You and your family will benefits!", + "text": "Umejenga ujuzi mwingi mzuri wa malezi tayari! Gusa @data.workshop.w_consequence.in_text_title kujifunza jinsi ya kutengeneza adhabu moja chanya na dhabu moja hasi ya tabia pamoja. Wewe na familia yako mtanufaika!", + "type": "data_list", + "note": "The string @data.workshop.w_consequence.in_text_title should not be translated." }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Endeleeni kukutana mara kwa mara ili kupeana msaada wa malezi.", - "type": "template", - "note": "" + "SourceText": "Solve problems with @global.parent_app", + "text": "Tatua matatizo na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "CALL", - "text": "KUPIGIANA SIMU", - "type": "template", - "note": "" + "SourceText": "With teenagers, and in life, unexpected problems come up. Tap the @data.workshop.w_solve.in_text_title to learn how to resolve any challenge together with your teen.", + "text": "Pamoja na vijana, na katika maisha, matatizo yasiyotarajiwa hutokea. Gusa @data.workshop.w_solve.in_text_title kujifunza jinsi ya kutatua changamoto yoyote pamoja na kijana wako.", + "type": "data_list", + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "Kuweni 'marafiki wa malezi' wanaopigiana simu pindi mmoja wenu anaposikitika au asipojua cha kufanya.", - "type": "template", - "note": "" + "SourceText": "Stay safe through @global.parent_app", + "text": "Baki salama kupitia @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "TEXT", - "text": "KUTUMIANA UJUMBE WA MAANDISHI", - "type": "template", - "note": "" + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. Complete the @data.workshop.w_safe.in_text_title and see how you can do this!", + "text": "Kumuweka kijana wako salama. inasaidia kuzungumza pamoja kuhusu jamii na uzoefu wao mitandaoni. Jaza @data.workshop.w_safe.in_text_title na uone jinsi unavyoweza kufanya hivi!", + "type": "data_list", + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Tumianeni ujumbe wa maandishi kila wiki ili kushirikishana kile mlichofanya vizuri.", - "type": "template", - "note": "" + "SourceText": "Be ready with @global.parent_app", + "text": "Kuwa tayari na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "SHARE", - "text": "KUSHIRIKISHANA", - "type": "template", - "note": "" + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! Tap the @data.workshop.w_crisis.in_text_title to explore how you can do this together with your teen.", + "text": "Hatuwezi kujua ni wakati gani majanga yanaweza kutokea, lakini TUNAWEZA kujiandaa! Gusa @data.workshop.w_crisis.in_text_title kujua jinsi unavyoweza kufanya hivi pamoja na kijana wako.", + "type": "data_list", + "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Sambaza @global.parent_app ili usaidie familia nyingine kuanza safari yao.", - "type": "template", + "SourceText": "Celebrate with @global.parent_app", + "text": "Sherekea na @global.parent_app", + "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "End of programme check-in", - "text": "Mwisho wa kuingia kwenye programu", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, you deserve to celebrate and be celebrated! Tap the @data.workshop.w_celebrate.in_text_title to reflect on your journey and get ideas for how you can continue to invest in yourself and your family.", + "text": "@fields.user_name, Unastahili kusherekea na kusherekewa! Gusa @data.workshop.w_celebrate.in_text_title kujikumbusha safari yako na jinsi ya kupata mawazo ya jinsi unavoweza kuendelea kuwekeza kwako mwenyewe na familia yako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@data.workshop.w_celebrate.in_text_title" }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "Umekuwa ukitumia @global.parent_app kwa miezi kadhaa iliyopita, lakini kumlea kijana ni mchakato wa muda mrefu zaidi! Maswali yanayofuata kuhusu uzoefu wako wa malezi yatatusaidia kutathmini malezi yako.\n\nKuwa mkweli. Kumbuka kuwa mamilioni ya wazazi wanahisi kama unavyohisi, na sote tunastahili kusaidiwa. Hauko peke yako!", - "type": "template", + "SourceText": "Take a break with @global.parent_app", + "text": "Chukua pumziko na @global.parent_app", + "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "Inaonekana tayari umemaliza mwisho wa kuingia kwenye programu. Sasa unaweza kuruka shughuli hii.", - "type": "template", - "note": "" + "SourceText": "Parenting can be hard, but @global.parent_app is here to help you win. Tap here to find practical tips for you and your family.", + "text": "Malezi yanaweza kuwa magumu, lakini @global.parent_app ipo hapa kukusaidia kushinda. Bonyeza hapa kupata vidokezo muhimu kwa ajili yako na familia yako.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Pangeni jinsi mtakavyosaidiana siku zijazo.\n\nMnaweza kutumia mawazo kutoka familia nyingine, au kubuni yenu wenyewe!", - "type": "template", - "note": "" + "SourceText": "@global.parent_app is here for you", + "text": "@global.parent_app ipo hapa kwa ajili yako", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Tunajivunia sana wewe. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri. Wewe ni mzuri.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, do you ever feel stressed as a parent? @global.parent_app is here to help you feel more calm and focused. Tap here to find out more.", + "text": "@fields.user_name, je, umewahi kuhisi msongo wa mawazo kama mzazi? @global.parent_app ipo hapa kukusaidia kujisikia mtulivu zaidi. Gusa hapa kupata zaidi.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@global.parent_app" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Sisi tunajivunia sana nyie. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri sana. Wewe ni mzuri sana.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", - "type": "template", - "note": "" + "SourceText": "Get some help in @global.parent_app", + "text": "Pata msaada kutoka @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "Karibu! Tunafurahi sana kuwa nawe hapa. Wiki hii inahusu WEWE.\n\nKatika kipindi cha ukaribisho:\n* Utapata nyenzo za kujitunzia\n* Utarekebisha programu hii kulingana na mahitaji yako", - "type": "template", - "note": "" + "SourceText": "Millions of parents found the tips in @global.parent_app useful, and you can access them too. Tap here to explore.", + "text": "Mamilioni ya wazazi walipata vidokezo ndani ya @global.parent_app kuwa muhimu, na unaweza kuzipata pia. Bonyeza hapa kuchunguza.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Ni jambo la kuvutia sana, ninafurahi sana mambo yanaenda vizuri.", - "type": "template", - "note": "" + "SourceText": "Make a difference with @global.parent_app", + "text": "Fanya mabadiliko na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Tunasikitika kuona kuwa mambo ni magumu sasa. Wakati mwingine ni jambo la kawaida kabisa kupata misukosuko. Kumbuka kwamba hauko peke yako!", - "type": "template", - "note": "" + "SourceText": "Need some help with your teen's behaviour? @global.parent_app is here for you. Tap here to check it out.", + "text": "Unahitaji msaada kwa tabia za kijana wako? @global.parent_app ipo hapa kwa ajili yako. Bonyeza hapa kuangalia.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Kwa nini @data.workshop.w_self_care.short_title ni muhimu?", - "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "SourceText": "@global.parent_app can help you", + "text": "@global.parent_app inaweza kukusidia", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Mara nyingi hatujithamini vya kutosha. Lakini kufanya hivyo ni muhimu sana, hasa kwa mzazi!\n\nKupunguza msongo wa mawazo na kujithamini vizuri hutusaidia sisi PAMOJA NA vijana wetu.", - "type": "template", - "note": "" + "SourceText": "Want to invest in yourself and your family? 1 minute in @global.parent_app already makes a difference! Tap here to find out more.", + "text": "Unataka kuwekeza kwa ajili yako na familia yako? Dakika 1 ndani ya @global.parent_app tayari inaleta utofauti! Bonyeza hapa na kujua zaidi.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Habari zenu?\n\nMada ya leo inahusu kujithamini wenyewe.\n\nKuna nyakati tunapata changamoto, ambapo tunakabiliwa na matatizo na hatujui cha kufanya. Ni muhimu kujithamini kwa kujifunza mbinu tunazoweza kuzitumia kuwa watulivu iwapo matatizo, changamoto au shida zitatokea.\n\nTunapokuwa watulivu, tunakuwa katika hali nzuri ya kufikiria vizuri na kupata ufumbuzi chanya wa changamoto zozote tunazoweza kukabiliwa nazo.", - "type": "template", - "note": "" + "SourceText": "See success with @global.parent_app", + "text": "Ona mafanikio na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Leo utaona shughuli 3 zinazoweza kukusaidia kujithamini, na tutakuuliza maswali kadhaa ili kuhakikisha kuwa programu hii iko sawa kabisa kwa ajili yako.", - "type": "template", - "note": "" + "SourceText": "Want to set your teen and family up for success? Get practical tips and more in @global.parent_app.", + "text": "Je, unataka kumuweka kijana wako na familia yako kwa ajili ya mafanikio? Pata vidokezo na mengineyo ndani ya @global.parent_app.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Shughuli ya kujiburudisha\n* Shughuli ya kujitambua\n* Shughuli ya kujipongeza\n* Nyenzo: Jinsi ya kujithamini\n* Rekebisha programu hii\n* Mazoezi ya nyumbani yanayopendekezwa", - "type": "template", - "note": "" + "SourceText": "Keep growing with @global.parent_app", + "text": "Endelea kukua na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "Hebu tujaribu na kufanya pamoja shughuli fupi ya kujiburudisha!", - "type": "template", - "note": "" + "SourceText": "Remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Kumbuka kujithamini mwenyewe - itakusaidia wewe na familia yako! Pata vidokezo na mengineyo ndani ya @global.parent_app.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "Kama wazazi, mara nyingi hatuna muda wa kujithamini – lakini kujithamini ni muhimu sana! Kupunguza msongo wa mawazo hutusaidia sisi PAMOJA NA vijana wetu.\n\nHebu tupige hatua ya kwanza na tufanye pamoja shughuli fupi ya kujiburudisha.", - "type": "template", - "note": "" + "SourceText": "Enjoy and learn with @global.parent_app", + "text": "Furahia na jifunze na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Kumakinikia kile tunachokifanya vizuri hutusaidia kuzingatia mambo chanya.\n\nHebu tutumie muda kujisifia. Tutakuonyesha jinsi ya kujisifia.", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, @global.parent_app is here to support you. Tap here and check it out now.", + "text": "@fields.user_name, @global.parent_app ipo hapa kukusaidia. Gusa hapa na uone sasa.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@global.parent_app" }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.\n\nSemezaneni kwa sauti: \"Ninajipongeza kwa...\"\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", - "type": "template", + "SourceText": "See the change with @global.parent_app", + "text": "Ona mabadiliko na @global.parent_app", + "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Recognise", - "text": "Tambua", - "type": "template", - "note": "" + "SourceText": "Do you want to enjoy family life more? Tap here and find practical tips in @global.parent_app.", + "text": "Je, unataka kufurahia maisha ya familia zaidi? Bonyeza hapa na upate vidokezo ndani ya @global.parent_app.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Tumia muda kujisifia.\n\nSasa tutakuonyesha jinsi ya kujisifia.", - "type": "template", - "note": "" + "SourceText": "@global.parent_app will help you grow", + "text": "@global.parent_app itakusidia kukua", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.", - "type": "template", - "note": "" + "SourceText": "You are not alone! @global.parent_app has lots of tips and activities that will help you and your family. Tap here to explore.", + "text": "Haupo peke yako! @global.parent_app ina vidokezo vingi na shughuli zitakazo kusaidia wewe na familia yako. Bonyeza hapa kuchunguza.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"Well done to me for...\"", - "text": "\"Ninajipongeza kwa...\"", - "type": "template", - "note": "" + "SourceText": "Get key tips in @global.parent_app", + "text": "Pata ndondoo muhimu kutoka @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Showing love to my children", - "text": "Kuonyesha upendo kwa watoto wangu", - "type": "template", - "note": "" + "SourceText": "We all need a break sometimes - and you can get one right now in @global.parent_app! Tap here to find relaxation activities and more.", + "text": "Sote tunahitaji mapumziko wakati mwingine - na unaweza pata mojawapo wakati huu ndani ya @global.parent_app! Bonyeza hapa kupata vidokezo vya shughuli za kujituliza na zaidi.", + "type": "data_list", + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Getting up even though I felt tired", - "text": "Kuamka hata kama nilijisikia uchovu", - "type": "template", - "note": "" + "SourceText": "Help your family with @global.parent_app", + "text": "Saidia familia yako na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Smiling at someone", - "text": "Kutabasamu", - "type": "template", - "note": "" + "SourceText": "@fields.user_name, do you have five minutes to learn about parenting? @global.parent_app is here to help!", + "text": "@fields.user_name, je, una dakika tano za kujifunza kuhusu malezi? @global.parent_app ipo hapa kusaidia!", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@global.parent_app" }, { - "SourceText": "Making food to stay strong", - "text": "Kupika chakula cha kunipa nguvu", - "type": "template", - "note": "" + "SourceText": "Keep going with @global.parent_app", + "text": "Endela na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Spending time with my children", - "text": "Kutumia muda kukaa na watoto wangu", - "type": "template", - "note": "" + "SourceText": "Looking for help with your teen? @global.parent_app is here for you!", + "text": "Je, unatafuta msaada kwa ajili ya kijana wako? @global.parent_app ipo hapa kwa ajili yako!", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Helping my children with schoolwork", - "text": "Kuwasaidia watoto wangu kazi za shule", - "type": "template", - "note": "" + "SourceText": "@global.parent_app can help your family", + "text": "@global.parent_app inaweza kusaidia familia yako", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Sema kwa sauti kama unaweza.\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", - "type": "template", + "SourceText": "It’s time to learn about parenting, use @global.parent_app now for useful tips for your family.", + "text": "Ni wakati wa kujifunza kuhusu malezi, tumia @global.parent_app sasa kwa vidokezo muhimu kwa ajili ya familia yako.", + "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Well done! Try to do this every day.", - "text": "Hongera! Jaribu kufanya hivyo kila siku.", - "type": "template", - "note": "" + "SourceText": "Get support in @global.parent_app", + "text": "Pata msaada kutoka @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Things to praise yourself for:", - "text": "Mambo ya kujisifia:", - "type": "template", + "SourceText": "Parents are the best! Tap here to find tips to help you with your teen.", + "text": "Wazazi ni wazuri! Bonyeza hapa kupata vidokezo vya kukusaidia kwa ajili ya kijana wako.", + "type": "data_list", "note": "" }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Kuonyesha upendo kwa watoto wako\n* Kuamka hata kama ulihisi uchovu\n* Kutabasamu\n* Kupika chakula cha kukupa nguvu\n* Kutumia muda kukaa na watoto wako\n* Kuwasaidia watoto wako kazi za shule", - "type": "template", - "note": "" + "SourceText": "@global.parent_app = peaceful family", + "text": "@global.parent_app =Familia yenye amani", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Have a hot drink", - "text": "Kunywa kinywaji cha moto", - "type": "template", - "note": "" + "SourceText": "Teens can turn your day upside down. Let @global.parent_app help you create a happy and peaceful home.", + "text": "Vijana wanaweza kuharibu siku yako. Acha @global.parent_app ikusaidie kutengeneza mazingira ya furaha na amani nyumbani.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Call a friend or relative", - "text": "Mpigie simu rafiki au jamaa", - "type": "template", - "note": "" + "SourceText": "@global.parent_app helps you connect", + "text": "@global.parent_app inakusaidia kukuunganisha", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Have a relaxing bath", - "text": "Oga kwa kujiburudisha", - "type": "template", - "note": "" + "SourceText": "Family is everything. @global.parent_app is here with many tips and activities to help you and your family.", + "text": "Familia ni kila kitu. @global.parent_app ipo hapa na vidokezo pamoja na shughuli za kukusaidia wewe na familia yako.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Read", - "text": "Soma", - "type": "template", - "note": "" + "SourceText": "Find good ideas in @global.parent_app", + "text": "Pata mawazo mazuri kutoka @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Watch TV", - "text": "Kutazama runinga", - "type": "template", - "note": "" + "SourceText": "Spending 1 minute learning about parenting makes a world of difference. Jump back into @global.parent_app here.", + "text": "Kutumia dakika 1 kujifunza kuhusu malezi inafanya ulimwengu wa utofauti. Rudi nyuma kwenye @global.parent_app hapa.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Kujithamini sisi wenyewe ni ujuzi muhimu wa malezi. Shirikishaneni nyote:\n\nJe, ni vitu gani vidogo vinavyokufurahisha?", - "type": "template", - "note": "" + "SourceText": "Grow more with @global.parent_app", + "text": "Kua zaidi na @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku.\n\nUnaweza kutumia ujuzi huu nyumbani. Utaupata wakati wowote kwenye @global.parent_centre!", - "type": "template", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "@fields.user_name, you are doing amazing, keep up the good work. @global.parent_app is full of tips on how to look after yourself and your family.", + "text": "fields.user_name, unafanya vizuri sana, endelea, kazi nzuri. @global.parent_app imejaa ndondoo jinsi ya kujiangalia wewe na familia yako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name,\n@global.parent_app" }, { - "SourceText": "Reward", - "text": "Tuzo", - "type": "template", - "note": "" + "SourceText": "Add value through @global.parent_app", + "text": "Ongeza thamani kupitia @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Sisi sote tunastahili kujitendea vizuri!", - "type": "template", - "note": "" + "SourceText": "Wow, your teen is so lucky to have you as a parent. Learn more about parenting your teen with @global.parent_app.", + "text": "Hongera, kijana wako anabahati kuwa na mzazi kama wewe. Jifunze mengi kuhusu malezi ya kijana wako kwa @global.parent_app.", + "type": "data_list", + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "What small thing makes you happy?", - "text": "Je, ni kitu gani kidogo kinachokufurahisha?", - "type": "template", - "note": "" + "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Halo @fields.user_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Safi! Kujithamini wewe mwenyewe ni ujuzi muhimu wa malezi!", - "type": "template", + "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Halo @fields.group_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" + }, + { + "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", + "text": "Umeweka jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", + "type": "data_list", "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_1 au kitu kingine chochote kinachokufurahisha.", - "type": "template", - "note": "The string @local.name_1 should not be translated." + "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", + "text": "Asante kwa kujitolea kwa dhati katika malezi yako.\n\n@data.workshop.w_1on1.in_text_title yako iko tayari kwa ajili yako!", + "type": "data_list", + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_2 au kitu kingine chochote kinachokufurahisha.", - "type": "template", - "note": "The string @local.name_2 should not be translated." + "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", + "text": "Kutumia muda pamoja na kijana wako hujenga kuaminiana.\n\nEndelea na safari yako ya @global.parent_app sasa –kwa matokeo mazuri sana.", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_3 au kitu kingine chochote kinachokufurahisha.", - "type": "template", - "note": "The string @local.name_3 should not be translated." + "SourceText": "Have you spent time with your teen already?", + "text": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", + "type": "data_list", + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_4 au kitu kingine chochote kinachokufurahisha.", - "type": "template", - "note": "The string @local.name_4 should not be translated." + "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!", + "text": "Hongera kwa kumaliza @data.workshop.w_1on1.in_text_title. Kesho, utaweza kupata @global.workshop kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_1on1.in_text_title.\n@global.workshop" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Jaribu kufanya kitu cha kujipongeza kila siku. Kinaweza kuwa @local.name_5 au kitu kingine chochote kinachokufurahisha.", - "type": "template", - "note": "The string @local.name_5 should not be translated." + "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", + "text": "Vizuri sana kwa kujaribu kuwa mzazi bora zaidi.", + "type": "data_list", + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Vitu unavyoweza kufanya ili kujipongeza:", - "type": "template", - "note": "" + "SourceText": "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.", + "text": "Habari @fields.user_name! Leo tunasherekea warsha mbili @global.parent_app months!\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Kunywa kinywaji cha moto\n* Kumpigia simu rafiki au jamaa\n* Oga wa kujiburudisha\n* Soma\n* Kutazama runinga", - "type": "template", - "note": "" + "SourceText": "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.", + "text": "Habari @fields.group_name! Leo tunasherekea warsha mbili @global.parent_app months!\n\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "RELAX", - "text": "Chukua pumziko", - "type": "template", + "SourceText": "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.", + "text": "Fikiria kila muda uliomfanya kijana wako akatabasamu na matunzo yote uliyompa.\n\nUnatakiwa kujisifu - huu ni muda mgumu kuwa mzazi.", + "type": "data_list", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Fanya shughuli ya kuchukua pumziko ya haraka kwa sekunde 30.", - "type": "template", - "note": "" + "SourceText": "Well done - you’ve gained 6 parenting tools already! Do the next @global.workshop to get more!", + "text": "Vizuri sana - umeshapata nyenzo 6 za malezi tayari! Fanya @global.workshop inayofuata kupata zaidi!", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "RECOGNISE", - "text": "TAMBUA", - "type": "template", - "note": "" + "SourceText": "Complete the @global.workshop and talk with your teen about a positive and a negative consequence of a behaviour.", + "text": "Maliza @global.workshop hii halafu ujaribu kujadili pamoja na kijana wako kuhusu matokeo ya tabia chanya na hasi.", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni! Sema kwa sauti kama unaweza: \"Ninajipongeza kwa…\"", - "type": "template", + "SourceText": "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?", + "text": "Je, umewahi kufikiria matokeo chanya na hasi ya tabia na kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "REWARD", - "text": "TUZO", - "type": "template", - "note": "" + "SourceText": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new @global.workshop tomorrow to help you enjoy and learn useful skills!", + "text": "Vizuri sana kwa kumaliza warsha @data.workshop.w_consequence.in_text_title. Pata @global.workshop mpya kesho kukusaidia kufurahia na kujifunza ujuzi muhimu!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_consequence.in_text_title.\n@global.workshop" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Kumbuka unastahili pia kuwa na wakati bora! Ni nini kinachokufurahisha?", - "type": "template", - "note": "" + "SourceText": "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.", + "text": "Matokeo tulivu husaida kijana wako kufuata sheria.\nKama hujamaliza warsha @data.workshop.w_consequence.in_text_title, anza sasa!\n\nVizuri sana kwa kuonesha kujitolea sana.", + "type": "data_list", + "note": "The string @data.workshop.w_consequence.in_text_title, should not be translated." }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Sasa kwa kuwa tumejifunza kwa kiasi fulani ujuzi wa kujithamini, hebu tuhakikishe @global.weekly_workshops ziko sahihi kabisa kwa ajili yako.", - "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how.", + "text": "Habari @fields.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.workshop" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Inaonekana tayari umemaliza kufanya marekebisho. Sasa unaweza kuruka shughuli hii.", - "type": "template", - "note": "" + "SourceText": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis @global.workshop will show you how.", + "text": "Habari @fields.group_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.workshop" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Kila mara uwezapo, jiburudishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", - "type": "template", + "SourceText": "Be proud, you are a committed parent. This is a big achievement!", + "text": "Jivunie, wewe ni mzazi unayejitolea sana. Haya ni mafanikio makubwa!", + "type": "data_list", "note": "" }, { - "SourceText": "Relax activity", - "text": "Shughuli ya kujiburudisha", - "type": "template", - "note": "" + "SourceText": "Crises may happen, and we CAN be prepared!\n\nStart the next @global.workshop to see how with your teen.", + "text": "Matatizo yanaweza kutokea, na TUNAWEZA kuwa na maandalizi! \n\nAnza @global.workshop inayofuata kuona jinsi ya kujiandaa mapema wewe na kijana wako.", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Recognise activity", - "text": "Shughuli ya kujitambua", - "type": "template", - "note": "" + "SourceText": "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.", + "text": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @data.workshop.w_crisis.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", + "type": "data_list", + "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." }, { - "SourceText": "Reward activity", - "text": "Shughuli ya kujipongeza", - "type": "template", + "SourceText": "Have you and your teen discussed what you would do in a crisis?", + "text": "Je, wewe na kijana wako mmejadili nini cha kufanya katika matatizo?", + "type": "data_list", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Kila mara unapojiburudisha, tambua kitu ulichofanya vizuri au kujipongeza, vuna @global.parent_points ili kusherehekea mafanikio yako!", - "type": "template", - "note": "The string @global.parent_points should not be translated." + "SourceText": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final @global.workshop to reflect on your journey and plan what to do next!", + "text": "Vizuri sana kwa kumaliza warsha @data.workshop.w_crisis. Kesho, unaweza kupata @global.workshop ya mwisho kuvuta kumbukumbu ya safari na kupanga cha kufanya wakati ujao!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_crisis.\n@global.workshop" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "Umekamilisha kipindi cha wiki hii.\n\nTutafanya tena baadhi ya shughuli za kujithamini utakapokutana na kikundi chako kwa mara ya kwanza – nyote mnastahili muda wa ziada wa kujithamini.", - "type": "template", - "note": "" + "SourceText": "The final @global.workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.", + "text": "@global.workshop ya mwisho inafunguliwa kesho!\n\nKwanza jaribu kukamilisha warsha @data.workshop.w_crisis.in_text_title. Kwa njia hiyo, unaweza kukamilisha sehemu yako ya ujuzi wa malezi na kuamua nini cha kufanya kwa siku baadaye.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.workshop\n@data.workshop.w_crisis.in_text_title." }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Habari @field.user_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\nKipindi kipya cha malezikinakusubiri kikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Habari @fields.user_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", + "type": "data_list", + "note": "The string @fields.user_name, should not be translated." }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Habari @field.group_name! Hongereni kwa kuanza wiki ya 5 ya @global.parent_app.\n\nkipindi kipya cha malezi kinawasubiri kikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Habari @fields.group_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", + "type": "data_list", + "note": "The string @fields.group_name, should not be translated." }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Tuna kipindi kipya kwa ajili yako kinachohusu kudhibiti hasira na msongo wa mawazo. Itakusaidia kujithamini vizuri zaidi.", - "type": "template", - "note": "" + "SourceText": "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!", + "text": "Kuwa mpole kwako mwenyewe. Hakuna mzazi aliyekamilika. Tumia @global.parent_app huoenesha unajari!", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "Je, una furaha, huzuni, hasira, taharuki au wasiwasi? Vizuri sana kwa kutambua jinsi wewe na wengine mlivyojisikia leo! Na kumbuka, kesho ni siku mpya.", - "type": "template", - "note": "" + "SourceText": "Teens don’t always listen. Look at this week's @global.workshop to learn how positive instructions can help.", + "text": "Vijana huwa wasikilizi daima. Angalia kwenye @global.workshop za wiki hii kujifunza jinsi maelekezo chanya yanaweza kusaidia.", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Wakati mwingine sisi sote huhisi kulemewa. Kuvuta pumzi ndefu husaidia!\n\nMaliza @local.workshop_data.in_text_title ili kupata baadhi ya nyenzo muhimu za kukabiliana na msongo wa mawazo.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.", + "text": "Maelekezo chanya huboresha tabia.\n\nKamilisha warsha ya @data.workshop.w_instruct.in_text_title kwa mawazo ya jinsi gani hii inaweza kufanya kazi katika familia yako.", + "type": "data_list", + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Je, hali yako ya msongo wa mawazo ilikuwaje wiki hii? Jaribu kuvuta pumzi ndefu mara kadhaa kabla ya kumjibu kijana wako – kufanya hivyo kunaleta mabadiliko makubwa.", - "type": "template", - "note": "" + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.", + "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", - "type": "template", - "note": "" + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.", + "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title mara @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Kesho kipindi kipya kabisa ya @global.parent_app kitakuwa tayari kwa ajili yako.\n\nKwa kumalizia kwanza @local.workshop_data.in_text_title, utajiwekea msingi mzuri sana: Wewe utakapojisikia vizuri, familia yako nayo itajisikia vizuri!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you. See a big difference by making small changes!", + "text": "Hongera, umemaliza @data.workshop.w_instruct.in_text_title.\n\nKesho, @global.workshop mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_instruct.in_text_title.\n@global.workshop" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya na kitakusaidia kupumzika na kujifunza ujuzi muhimu sana!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?", + "text": "Wazazi baadhi hutumia program (app) baada ya chakula cha jioni. Kwa nini usimalize warsha ya @data.workshop.w_instruct.in_text_title ukiwa na muda wa dakika chache?", + "type": "data_list", + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Halo @field.user_name! Leo tunaadhimisha miezi miwili ya kutumia @global.parent_app!\n\nUnafanya vizuri sana! Kipindi cha wiki hii kitakusaidia kujua cha kufanya pindi kijana wako asipofuata sheria za kaya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month.", + "text": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app.\n@global.workshop" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Habari @field.group_name! Leo tunaadhimisha miezi miwili ya kutumia @global.parent_app!\n\nMnafanya vizuri sana! kipindi cha wiki hii kitawasaidia kujua nini cha kufanya pindi vijana wenu wasipofuata sheria za kaya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This @global.workshop will give you tools to plan your expenses to help you through the month.", + "text": "Habari @fields.group_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app.\n@global.workshop" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Ni jambo zuri sana kwamba umekuwa ukitumia @global.parent_app. Tayari umeshapata nyenzo 6 za malezi!\n\nJifunze kipindi kinachofuata ili kupata nyenzo nyingine ya malezi!", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!", + "text": "Hauko peke yako. Wazazi duniani kote wanapitia hali kama hii.\n\nUnajitaidi sana na tunajivunia wewe!", + "type": "data_list", + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Maliza kipindi hiki halafu ujaribu kujadili pamoja na kijana wako ili kupata athari moja chanya na athari moja hasi ya kurekebisha tabia.", - "type": "template", + "SourceText": "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.", + "text": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", + "type": "data_list", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "Je, wewe na kijana wako mmeweza kupata athari moja chanya na athari moja hasi ya kurekebisha tabia?", - "type": "template", + "SourceText": "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!", + "text": "Tengeneza bajeti ya familia na kijana wako - itazuia mabishano ya fedha.\n\nKamilisha warsha @data.workshop.w_money.in_text_title kuona jinsi ilivyo rahisi - utaona!", + "type": "data_list", + "note": "The string @data.workshop.w_money.in_text_title should not be translated." + }, + { + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Je, umeshazungumza na kijana wako kuhusu bajeti ya familia yenu?", + "type": "data_list", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Athari nyepesi humsaidia sana kijana wako kufuata sheria vizuri – zijaribu kabla ya kuendelea!\n\nHongera kwa kujitoa kwa dhati kwa ajili ya familia yako.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new @global.workshop to help you set family rules that work.", + "text": "Umefanya vizuri sana kumaliza @data.workshop.w_money.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title!\n@global.workshop" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", - "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi muhimu!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.", + "text": "Wazazi wengi wanasema kupanga bajeti huleta amani. Kama hujamaliza warsha @data.workshop.w_money.in_text_title, anza sasa.", + "type": "data_list", + "note": "The string @data.workshop.w_money.in_text_title, should not be translated." }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Habari @field.user_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\nKipindi kipya kinakungoja! Je, unaweza kubuni mada ya kipindi kutokana na picha hii?", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!", + "text": "Habari @fields.user_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\n@global.workshop mpya iko tayari!", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.workshop" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Habari @field.group_name! Hongereni kwa kuanza wiki yenu ya tatu ya @global.parent_app.\n\nKipindi cha wiki hii kinawangoja! Je, mnaweza kubuni mada ya kipindi hiki kutokana na picha hii?", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new @global.workshop is ready!", + "text": "Habari @fields.group_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\n@global.workshop mpya iko tayari!", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app\n@global.workshop" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "SourceText": "Well done for using @global.parent_app! Remember, small things make a big difference.", "text": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "type": "data_list", + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Hongera kwa kutumia @global.parent_app ili kuwekeza kwa ajili yako na familia yako.\n\nJaribu @local.workshop_data.in_text_title ujipatie ujuzi mzuri sana wa malezi!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!", + "text": "Asante kwa kuwekeza kwa ajili yako na familia yako. Jaribu @data.workshop.w_praise.in_text_title ujipatie ujuzi mzuri sana wa malezi!", + "type": "data_list", + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @local.workshop_data.in_text_title uone jinsi WEWE unavyoweza kutumia sifa kwenye familia yako.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.", + "text": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @data.workshop.w_praise.in_text_title uone jinsi ya kuitumia kwenye familia YAKO.", + "type": "data_list", + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Praise time!", - "text": "Muda wa kusifia!", - "type": "template", + "SourceText": "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!", + "text": "Msifie kijana wako kwa kitu kimoja alichofanya vizuri.\n\nNa lini mara ya mwisho ulijisifia mwenyewe au kumsifia mtu mzima mwingine? Jaribu!", + "type": "data_list", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Utakapomwona tena kijana wako, msifie kwa jambo moja analofanya vizuri!\n\nNa, je, ni lini mara ya mwisho ulipojisifia wewe mwenyewe au mtu mzima mwingine katika kaya yako? Jaribu kufanya hivyo!", - "type": "template", - "note": "" + "SourceText": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new @global.workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.", + "text": "Safi sana, umemaliza warsha ya @data.workshop.w_praise.in_text_title. @global.workshop mpya ipo tayari kesho. Ijaribu - Utaona mabadiliko katika tabia za kijana wako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_praise.in_text_title.\n@global.workshop" }, { - "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Halo @global.user_name, kipindi kipya kinakungoja kesho. Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kwa kweli ni fupi sana (amini ninakwambia!) – unaweza hata kuimalizia wakati unasubiri chakula cha usiku kiive. Kwa nini usiipitie ukipata muda?\n\nKwa mara nyingine, asante kwa kutumia @global.parent_app.", - "type": "template", - "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" + "SourceText": "Hi @global.user_name, a new @global.workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.", + "text": "Habari @global.user_name, @global.workshop mpya inakusubiri kesho!\n\nInaonekana kama hujamaliza warsha ya @data.workshop.w_praise.in_text_title, ni fupi(nakuhakikishia!) - ifanye muda ukipata muda wa dakika chache.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.user_name,\n@global.workshop\n@data.workshop.w_praise.in_text_title." }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, kipindi kipya kitafunguliwa. Jaribu – utaona mabadiliko kwenye tabia ya kijana wako.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Hi @fields.user_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows.", + "text": "Habari @fields.user_name! Wiki mpya, @global.workshop mpya! Jifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.workshop!" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Habari @field.user_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\nKipindi cha wiki hii kinahusu jinsi ya kuboresha uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Hi @fields.group_name! New week, new @global.workshop! Learn to set household rules that your teen understands and follows.", + "text": "Habari @fields.group_name! Wiki mpya, @global.workshop mpya! Jifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.workshop!" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Habari @field.group_name! Hongereni kwa kuanza wiki ya 4 ya @global.parent_app.\n\nKipindi cha wiki hii kinahusu jinsi ya kuboresha uwezo wenu wa kuwafanya vijana wenu wafanye kile mnachowaagiza kufanya.", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!", + "text": "Umejaribu kadri uwezavyo lakini kijana wako bado ana huzuni?\nKumbuka, unafanya kazi nzuri - kutakuwa na muda mzuri pamoja nao pia!", + "type": "data_list", + "note": "" }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Jipongeze kwa kazi kubwa unayoifanya. Hakuna mzazi aliye kamili, na tunafikiri unafanya vizuri sana!", - "type": "template", - "note": "" + "SourceText": "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.", + "text": "Asante kwa kuwekeza katika malezi.\n\nFanya warsha ya @data.workshop.w_rules.in_text_title kusaidia kijana wako kuelewa na kufuata sheria za nyumbani.", + "type": "data_list", + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", - "text": "Bado hujaweka alama yoyote kwenye @data.habit.instruct_positively.title @global.parent_points. \n\nIjaribu leo!", - "type": "template", - "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + "SourceText": "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!", + "text": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @data.workshop.w_rules.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", + "type": "data_list", + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Well done!", - "text": "Hongera!", - "type": "template", + "SourceText": "Have you managed to set a rule with your teen?", + "text": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", + "type": "data_list", "note": "" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", - "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new @global.workshop! It will show you what to do when teens display bad (or good) behaviour!", + "text": "Hongera, umemaliza warsha @local.workshop_data.in_text_title.\n\nKesho, pata @global.workshop mpya! itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", + "type": "data_list", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title.\n@global.workshop!" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "Tayari umeweka alama ya @global.parent_point @data.habit.instruct_positively.title mara @field.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" + "SourceText": "A brand-new @global.workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!", + "text": "@global.workshop kabisa itafunguliwa kesho!\n\nKamilisha warsha @local.workshop_data.in_text_title kabla hujaendelea Kwa dakika chache zaidi kumsaidia kijana wao kufuata sheria!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.workshop\n@local.workshop_data.in_text_title" }, { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "Je, kijana wako anakusikiliza kila mara? Kama hakusikilizi kila mara (kama ilivyo kwetu sisi wengine wote), angalia kipindi cha wiki hii ili ujifunze jinsi kutoa maelekezo chanya kunavyoweza kusaidia.", - "type": "template", - "note": "" + "SourceText": "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", - "text": "Maelekezo chanya husaidia kuleta tabia nzuri zaidi na zaidi!\n\nMaliza @local.workshop_data.in_text_title ili kupata mawazo kuhusu namna jambo hili linavyoweza kufanya kazi kwenye familia yako.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Habari @fields.group_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Kama kawaida, unaweza kupata kipindi kipya kesho. Litakuwa jambo zuri kumalizia kipindi kilichopita kabla ya wakati huo.\n\nWazazi wengine wanatumia programu hii wanaposafiri kwenda kazini. Kwa nini usitumie programu hii unapopata muda wa kutulia?\n\nAsante kwa mara nyingine kwa kutumia @global.parent_app.", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!", + "text": "Malezi ni kitu kigumu, hasa kwa siku hizi. Jivunie mafanikio yako. Ya matunzo unayowapa. Ya kila muda unaowafanya watabasamu. Wewe ni mzuri sana!", + "type": "data_list", + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", - "text": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, kipindi kipya kitakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Think about all the parenting skills you've already gained!\n\nComplete the next @global.workshop to get more.", + "text": "Fikiria kuhusu ujuzo wote wa malezi uliiupata!\n\nMalizi @global.workshop inayofuata kupata zaidi.", + "type": "data_list", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "First @global.weekly_workshop!", - "text": "@global.weekly_workshop ya kwanza!", - "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.", + "text": "Kuongea pamoja kuhusu jamii yao na uzoefu wa mitandaoni husaidia kuwaweka vijana wako salama.\n\nMaliza warsha @data.workshop.w_safe.in_text_title kuona ni jinsi gani.", + "type": "data_list", + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Halo @fields.user_name. @local.workshop_data.in_text_title iko tayari kwa ajili yako.", - "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", + "type": "data_list", + "note": "" }, { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Halo @fields.group_name. @local.workshop_data.in_text_title iko tayari kwa ajili yenu.", - "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + "SourceText": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new @global.workshop is ready tomorrow to help your family deal with any situation – together you can do so much!", + "text": "Hongera, umemaliza @data.workshop.w_safe.in_text_title. Kesho, @global.workshop mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title.\n@global.workshop" }, { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Kutumia muda pamoja na kijana wako husaidia kujenga kuaminiana kati yenu.\n\nEndelea na safari yako ya @global.parent_app sasa – wewe na familia yako mtaona matokeo mazuri sana.", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.", + "text": "Maliza warsha @data.workshop.w_safe.in_text_title kabla ya kuendelea. Hii inaweza kuzuia matatizo mengi.\n\nVizuri sana kwa kutumia @global.parent_app kusaidia familia yako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@global.parent_app" }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Hongera kwa kufanya jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", - "type": "template", + "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", + "text": "Wiki hii ni kuhusu WEWE! Jitunze vizuri. Unastahili!", + "type": "data_list", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", - "type": "template", - "note": "" + "SourceText": "Start a brand new @global.parent_app @global.workshop tomorrow. You'll see great results!", + "text": "Anza @global.workshop mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.workshop" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Asante kwa kutumia @global.parent_app na kujitolea kwa dhati katika malezi yako.\n\n@local.workshop_data.in_text_title yako iko tayari kwa ajili yako!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app @global.workshops together!", + "text": "Kumbuka kuwaambia washirika wako kwenye @global.parent_app kuhusu program. Kesho, unaweza kuanza kufanya @global.workshops pamoja kwenye @global.parent_app workshops!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app\n@global.workshops" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Haitachukua muda mrefu, na utapata taarifa muhimu sana.\n\nHongera kwa kujaribu kuwa mzazi bora. Kesho, utaweza kupata kipindi kipya.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This @global.workshop will show you how to deal with them.", + "text": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.workshop" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.", + "text": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa ya kushughulikia. @global.workshop hii itakuonesha jinsi ya kuyashughulika nayo.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.workshop" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Habari @field.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nKipindi hiki kitakuonyesha jinsi ya kujiandaa mapema.", - "type": "template", - "note": "The string @field.user_name should not be translated." + "SourceText": "Your commitment is inspiring. Keep calm and carry on!", + "text": "Kujitolea kwako ni mfano wa kunahamasisha. Tulia na uendelee!", + "type": "data_list", + "note": "" }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Halo @field.user_name! Hali ya hatari inaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nKipindi hiki kitawaonesha jinsi ya kufanya hivyo.", - "type": "template", - "note": "The string @field.group_name should not be translated." + "SourceText": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next @global.workshop.", + "text": "Matatizo yasiyotarajiwa hutokea tukiwa na vijana.\n\nJifunze jinsi ya kuyatatua katika @global.workshop inayofuata.", + "type": "data_list", + "note": "The string @global.workshop. should not be translated." }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "Wewe ni mzazi makini. Jipongeze - haya ni mafanikio makubwa sana!", - "type": "template", - "note": "" + "SourceText": "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.", + "text": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @data.workshop.w_solve.in_text_title ili upate ujuzi mwingine muhimu wa malezi.", + "type": "data_list", + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Hatujui lini matatizo yanaweza kutokea, lakini TUNAWEZA kujiandaa!\n\nAnza kipindi cha wiki ijayo kwa kutafuta jinsi gani unaweza kufanya hii pamoja na kijana wako.", - "type": "template", + "SourceText": "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Fanyia mazoezi hatua nne za kutatua matatizo na kijana wako?\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", + "type": "data_list", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @local.workshop_data.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you keep your teen safe.", + "text": "Umefanya vizuri sana kumaliza @data.workshop.w_solve.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_solve.in_text_title.\n@global.workshop" }, { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "Je, umejadili na kijana wako kuhusu nini mnachoweza kufanya katika kipindi cha matatizo?", - "type": "template", - "note": "" + "SourceText": "Access a new @global.workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.", + "text": "Pata @global.workshop mpya kesho!\n\nKwa kukamilisha warsha @data.workshop.w_solve.in_text_title kwanza, utajua jinsi ya kutatua matatizo pamoja.", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.workshop\n@data.workshop.w_solve.in_text_title" }, { - "SourceText": "Crisis Examples", - "text": "Mifano ya Hali ya Tatizo", - "type": "template", - "note": "" + "SourceText": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5.\n\n@global.workshop mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.workshop" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Kesho, kipindi cha mwisho cha @global.parent_app kitakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza kipindi kipya. Kwa njia hiyo, unaweza kukamilisha ujuzi wa malezi na kuamua ufanye nini baadaye!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new @global.workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5.\n\n@global.workshop mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.workshop" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata warsha ya mwisho ili kutafakari kuhusu safari yako kwenye @global.parent_app na kile unachoweza kufanya baadaye!", - "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "SourceText": "Manage anger and stress with this new @global.workshop. It helps you take better care of yourself.", + "text": "Dhibiti hasira na msongo wa mawazo kwa hiki @global.workshop kipya. Hukusaidia wewe kujithamini vizuri zaidi.", + "type": "data_list", + "note": "The string @global.workshop. should not be translated." }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Habari @field.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.", + "text": "Najisikia kuzidiwa? Kuvuta pumzi ndefu inasaidia.\n\nKamilisha warsha ya @data.workshop.w_stress.in_text_title kukusaidia kukabiliana na msongo wa mawazo.", + "type": "data_list", + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Halo @field.group_name! Mnakaribia kumaliza warsha zenu za @global.parent_app! Hongereni kwa kujitolea kwenu kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahieni!", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.", + "text": "Unajisikia mwenye msongo wa mawazo wiki hii? Jaribu kuvuta pumzi ndefu kabla hujamjibu kijana wako - inaleta mabadiliko makubwa.", + "type": "data_list", + "note": "" }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Huu ni wakati mgumu zaidi wa kuwa mzazi. Unapaswa kujionea fahari kwa kila kitu ulichofanya.\n\nKumbuka kila wakati ulipomfanya kijana wako atabasamu na matunzo yote uliyompa. Wazazi ni wazuri sana, na wewe pia ni mzuri!", - "type": "template", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.", + "text": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", + "type": "data_list", "note": "" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "Umepata ujuzi mwingi wa malezi kwa wiki kadhaa zilizopita!\n\nMaliza warsha inayofuata ili kupata ujuzi mwingine wa kukusaidia.", - "type": "template", - "note": "" + "SourceText": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new @global.workshop to help you relax and build valuable skills!", + "text": "Hongera kwa kumaliza @data.workshop.w_stress.in_text_title. Kesho, utaweza kupata @global.workshop mpya itakayokusaidia kupumzika na kujifunza ujuzi muhimu sana!", + "type": "data_list", + "note": "The following strings should not be translated:\n@data.workshop.w_stress.in_text_title.\n@global.workshop" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "Ili kijana wako awe salama, ni vizuri mpige soga pamoja kuhusu jamii yenu na shughuli zake mtandaoni.\n\nMaliza @local.workshop_data.in_text_title halafu utaona jinsi unavyoweza kufanya jambo hili!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Get ready for a new @global.workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!", + "text": "Kuwa tayari kwa @global.workshop mpya kesho.\n\nKwa kukamilishawarsha kwanza @data.workshop.w_stress.in_text_title. Unaweka msingi muhimu. Kama unajisikia vizuri, familia yako itajisikia vizuri pia!", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.workshop\n@data.workshop.w_stress.in_text_title" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", - "type": "template", + "SourceText": "My Favourite Activities", + "text": "Shughuli Zangu Pendwa", + "type": "global", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kuweka mpango pamoja na kijana wako kunaweza kuzuia matatizo mengi – jaribu kufanya hivyo kabla ya kuendelea!\n\nHongera kwa kutumia @global.parent_app ili kuisaidia familia yako.", - "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" - }, - { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Hongera, umemaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "All Activities", + "text": "Shughuli Zote", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Habari @field.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "type": "template", - "note": "The string @field.user_name should not be translated." + "SourceText": "Random Activity", + "text": "Shughuli Yoyote", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Habari @field.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "type": "template", - "note": "The string @field.group_name should not be translated." + "SourceText": "This Week's Activity", + "text": "Shughuli ya Wiki Hii", + "type": "global", + "note": "" }, { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Kujitolea kwako ni mfano wa kuigwa na kila mtu. Tulia na uendelee!", - "type": "template", + "SourceText": "Chat Together", + "text": "Kuongea Pamoja", + "type": "global", "note": "" }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Unapokuwa na vijana, na katika maisha haya, matatizo yasiyotarajiwa hutokea na tunapaswa kukabiliana nayo.\n\nAnza warsha inayofuata ili kujifunza jinsi ya kutatua matatizo hayo kwa mafanikio.", - "type": "template", + "SourceText": "Do Together", + "text": "Fanyeni Pamoja", + "type": "global", "note": "" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @local.workshop_data.in_text_title ili upate ujuzi mwingine muhimu wa malezi!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Your @global.parent_app Code", + "text": "Namba yako ya @global.parent_app", + "type": "global", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Je, tayari umejaribu kutumia hatua nne za kutatua matatizo na kijana wako?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", - "type": "template", + "SourceText": "Terms & Conditions", + "text": "Vigezo & Masharti", + "type": "global", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Kesho, warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Kujua jinsi ya kutatua matatizo pamoja kutasaidia katika nyakati mbalimbali!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Privacy Policy", + "text": "Sera ya Faragha", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Habari @field.user_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", - "type": "template", - "note": "The string @field.user_name should not be translated." + "SourceText": "Language", + "text": "Lugha", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Habari @field.group_name! Ni wiki mpya na warsha mpya! Jifunzeni jinsi ya kutengeneza sheria za kaya kwa namna itakayowaongezea vijana wenu uwezekano wa kuzifuata.", - "type": "template", - "note": "The string @field.group_name should not be translated." + "SourceText": "Your Profile", + "text": "Wasifu wako", + "type": "global", + "note": "" }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Wakati mwingine vijana wenu huonekana kama bado wamehamaki hata mnapokuwa mmefanya kadri muwezavyo. Kumbukeni kwamba mnafanya kazi nzuri sana, na mtapata pia nyakati nzuri za kufurahi nao pamoja!", - "type": "template", + "SourceText": "Real-world ideas", + "text": "Mawazo ya ulimwengu halisi", + "type": "global", "note": "" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Kwa mara nyingine, asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye safari yako ya malezi.\n\n@local.workshop_data.in_text_title itakuonesha jinsi ya kuweka sheria kwa namna itakayomsaidia kijana wako kuzielewa na kuzifuata vizuri zaidi.", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Ideas", + "text": "Mawazo", + "type": "global", + "note": "" }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @local.workshop_data.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Ideas from other families...", + "text": "Mawazo kutoka familia nyingine...", + "type": "global", + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", - "type": "template", + "SourceText": "Challenges & solutions", + "text": "Changamoto & utatuzi", + "type": "global", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Kesho warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Haitachukua muda mrefu na itamsaidia kijana wako kufuata sheria vizuri zaidi!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "SourceText": "Submit", + "text": "Tuma", + "type": "global", + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, warsha mpya itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Find out more", + "text": "Pata maelezo zaidi", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Habari @field.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "SourceText": "Show me how", + "text": "Nionyeshe jinsi ya kufanya", + "type": "global", + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Habari @field.group_name! Mnaanza mwezi wenu wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itawapa nyenzo zitakazowasaidia kupanga matumizi yenu ili muweze kuwa na pesa za kutosha kumaliza mwezi.", - "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "SourceText": "Tell me more!", + "text": "Nipe maelezo zaidi!", + "type": "global", + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", - "type": "template", + "SourceText": "Let's go!", + "text": "Twende!", + "type": "global", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Wakati wowote unapohisi upweke au kuzidiwa, jua kwamba hauko peke yako. Kuna wazazi duniani kote ambao wanapitia hali kama yako.\n\nKila siku unafanya kadri ya uwezo wako na sisi sote tunajivua wewe!", - "type": "template", + "SourceText": "Check it out!", + "text": "Iangalie!", + "type": "global", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Je, umeshazungumza na kijana wako kuhusu bajeti ya familia yenu?", - "type": "template", + "SourceText": "Done", + "text": "Imefanyika", + "type": "global", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Kuishirikisha familia yako kuhusu namna mnavyotumia fedha kunaweza kuondoa misongo mingi ya mawazo na ugomvi.\n\nMaliza @local.workshop_data.in_text_title ili kuisaidia familia yako kutengeneza bajeti na kuweka akiba. Kwa kweli ni rahisi – utajionea mwenyewe!", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Next", + "text": "Inayofuata", + "type": "global", + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Wazazi wengi wanasema kuwa kutengeneza bajeti kumerudisha amani ndani ya nyumba zao – inaweza kukufaa pia.\n\nKwa mara nyingine, asante kwa kuwa mzazi makini.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Previous", + "text": "Iliyopita", + "type": "global", + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Save", + "text": "Tunza", + "type": "global", + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Kumbuka - Hii wiki ni kuhusu WEWE! Tunatumaini unajitunza vizuri. Unastahili jambo hili!", - "type": "template", + "SourceText": "Start", + "text": "Anza", + "type": "global", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Skip", + "text": "Ruka", + "type": "global", + "note": "" }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "Je, umeshawaambia washirika wako wa @global.parent_app kuhusu programu hii? Kuanzia kesho, mnaweza kuanza kufanya pamoja warsha zenu za @global.parent_app!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "SourceText": "Continue", + "text": "Endelea", + "type": "global", + "note": "" }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Kumpoteza rafiki au mtu unayempenda ni jambo gumu kwa kila mtu. Kujitendea vyema wewe mwenyewe na kufanya mambo ya kukusaidia kukabiliana na wakati huu mgumu humsaidia pia kijana wako!", - "type": "template", + "SourceText": "Finish with a song", + "text": "Malizi kwa kuimba wimbo", + "type": "global", "note": "" }, { - "SourceText": "Take care of yourself", - "text": "Jithamini", - "type": "template", + "SourceText": "Goodbye!", + "text": "Kwa heri!", + "type": "global", "note": "" }, { - "SourceText": "Find a support group", - "text": "Tafuta kikundi kinachotoa msaada", - "type": "template", + "SourceText": "No gadget use the next day", + "text": "Hakuna kutumia vifaa vya kielektroniki siku inayofuata", + "type": "global", "note": "" }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "- Huzuni inaweza kutuathiri kwa majuma au miezi au miaka kadhaa. Siyo lazima ujisikie nafuu haraka.\n- Pata usingizi na chakula cha kutosha – ni vigumu kuwatunza vijana ukiwa mchovu na mwenye njaa.\n- Tengeneza orodha ya mambo yanayokufanya ujisikie nafuu, na uyafanye.\n- Kila siku, jaribu kufanya jambo moja rahisi la kuburudisha ukiwa na kijana wako, na ukiwa peke yako.\n- Si vibaya kutojisikia vizuri na si vibaya kulia. Usijilaumu kamwe, hili si kosa lako.\n- Kuna tumaini kila wakati hata baada ya kupoteza. Jaribu kufurahia mambo rahisi, na tumia muda fulani kufanya jambo la kufurahisha au kuburudisha ukiwa na kijana wako.\n- Tafuta mtu mzima mmoja au wawili wanaoweza kukusaidia, kusikiliza, na kuzungumza.", - "type": "template", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Kutulia kwa dakika 5 ukiwa upande mwingine wa chumba", + "type": "global", "note": "" }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "- Kuzungumza na mtu anayeweza kukusaidia na kukusikiliza kunaweza kusaidia.\n- Kujiunga na kikundi cha watu ambao pia wamepoteza mtu kunaweza kusaidia.\n- Hakuna mtu mkamilifu. Si vibaya kuzungumzia mambo mazuri na mabaya mnayoyakumbuka.", - "type": "template", + "SourceText": "Write a letter of apology", + "text": "Kuandika barua ya kuomba msamaha", + "type": "global", "note": "" }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Vijana hukabiliana na msiba kwa namna mbalimbali, kama tu wanavyofanya watu wazima. Unaweza kuwasaidia kuelewa hali hiyo na hisia zao kwa kuweka mazingira salama ambapo mnaweza kushirikishana na kutafakari.", - "type": "template", + "SourceText": "Cannot see friends the next day", + "text": "Haruhusiwi kuwatembelea marafiki siku inayofuata", + "type": "global", "note": "" }, { - "SourceText": "Be honest", - "text": "Kuwa mkweli", - "type": "template", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "Haruhusiwi kuchezea simu baada ya chakula cha usiku (au saa inayofuata)", + "type": "global", "note": "" }, { - "SourceText": "My teen's response", - "text": "Mwitikio wa kijana wangu", - "type": "template", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Muda wa ziada na marafiki wikiendi (saa 1)", + "type": "global", "note": "" }, { - "SourceText": "How to support my teen?", - "text": "Jinsi ya kumsaidia kijana wangu?", - "type": "template", + "SourceText": "Cooking teen’s favourite meal", + "text": "Kupika chakula kipendwacho na kijana", + "type": "global", "note": "" }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "- Mwambie kijana wako kwamba fulani amefariki – wakati mwingine hajui.\n- Kumwambia ni mchakato, si tukio. Unaweza kulazimika kumwambia tena na tena.\n- Tumia maneno anayoyaelewa.\n- Kama vijana wadogo hawaelewi kifo ni nini, wasaidie kwa kuwaelezea kwamba mtu wanayempenda hatarudi tena. Jaribu kutosema kwamba 'amelala' au 'amesafiri kwenda mbali'. \n- Vijana wakubwa wanaweza kuelewa kifo ni nini, lakini wanaweza kuhangaika kuwaeleza wengine au kudhibiti hisia zao.\n- Vijana wanaweza kupokea hali hiyo kwa namna tofauti sana: kulia, kupiga kelele, kutokuamini au kunyamaza sana.\nYote haya si mabaya. Waambie kwamba uko pamoja nao.\n- Ruhusu maswali na mazungumzo. Kuwa mkweli. Kama hatujui jambo fulani, si vibaya kusema kwamba hatujui.", - "type": "template", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Muda wa ziada akiwa na simu baada ya chakula cha usiku (dakika 30)", + "type": "global", "note": "" }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "- Vijana wanaweza kuhuzunika, kukasirika, kutoelewa au kutoamini, kuhisi mwili kufa ganzi, kujisikia vibaya au kupata maumivu, ndoto mbaya au matatizo shuleni. Kijana wako anaweza kuonekana mwenye furaha, lakini bado akawa na huzuni. Anaweza kujitenga na kutaka kutumia muda mwingi akiwa na marafiki. Anaweza pia kuonyesha tabia isiyotarajiwa au ya hatari. Hali hizi zinaweza zisilete maana kwako, lakini yote haya ni mambo ya kawaida.\n- Vijana wanaweza kuhisi kama lilikuwa kosa lao – kwamba walileta virusi, au kwamba walikuwa na tabia mbaya. Waambie waziwazi kwamba hawakufanya kosa lolote.", - "type": "template", + "SourceText": "Watching teen’s T.V. show together", + "text": "Kuangalia pamoja kipindi cha vijana kwenye runinga", + "type": "global", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "Eleza kwamba kufiwa huambatana na hisia mbalimbali. Mwonyeshe kijana wako kwamba anapendwa na kutunzwa, na mtie moyo awashirikishe wengine hisia zake kwa kuzungumza, kuandika au kuchora.\n- Kama kuna kikundi kinachotoa msaada ambacho kijana wako anaweza kujiunga nacho, kinaweza kumsaidia.\n- Kama kijana anazungumzia kutaka kujidhuru au kujiua, omba msaada kwa mtu haraka iwezekanavyo.\n- Ukiweza, endelea na shughuli zako za kawaida za kila kila siku; kufanya hivyo kunaweza kuwafariji vijana.\n- Vijana kushiriki mila na desturi za msiba kunaweza kusaidia – kuchagua wimbo au kitu cha kusema.\n- Kutumia muda fulani kila siku kumjali kijana wako kunasaidia kumfanya ajisikie kuwa salama zaidi na mpe nafasi ya kuwa huru au kuzungumzia mambo yanayomfadhaisha.", - "type": "template", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Muda wa ziada wa kuzungumza wawili Jumapili (dakika 30)", + "type": "global", "note": "" }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Kumpoteza mtu unayempenda ni jambo zito mno. Hapa kuna vidokezo kadhaa vinavyoweza kukusaidia ukivikumbuka.", - "type": "template", + "SourceText": "Take a deep breath and pause before responding", + "text": "Vuta pumzi ndefu na utulie kabla ya kujibu", + "type": "global", "note": "" }, { - "SourceText": "Ask for help", - "text": "Omba msaada", - "type": "template", + "SourceText": "Listen to your teen", + "text": "Msikilize kijana wako", + "type": "global", "note": "" }, { - "SourceText": "Say goodbye", - "text": "Aga", - "type": "template", + "SourceText": "Praise your teen for sharing", + "text": "Msifie kijana wako kwa kukushirikisha", + "type": "global", "note": "" }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "Omba msaada kwa mtu unayemwamini – anaweza kukusaidia chakula au kuwatunza watoto. Unaweza kuhitaji nyaraka kwa ajili ya urithi, kwa ajili ya watoto wako, au kwa ajili ya kupata huduma mbalimbali.\n- Wakati mwingine watu hujaribu kuchukua pesa au urithi kutoka kwa mfiwa. Zijue haki zako.", - "type": "template", + "SourceText": "Use problem solving skills", + "text": "Tumia ujuzi wa kutatua matatizo", + "type": "global", "note": "" }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "- Kumuaga mtu ni jambo gumu. Fanya kile unachohisi kuwa ni kizuri kwako na kwa kijana wako.\n- Familia, vijana na wazazi si wakamilifu. Mtu anapokuwa amefariki, si vibaya kuzungumzia mambo mazuri na mabaya tunayoyakumbuka.\n- Kumwandikia barua au kumchorea mchoro mtu aliyeondoka kunaweza kusaidia.\n- Baadhi ya watu hufanya sherehe au kuandaa chakula maalum ili kumpa heshima mtu aliyeondoka, na kumuaga.\n- Kutengeneza sanduku la kumbukumbu na kuweka vitu vinavyokukumbusha wewe na kijana wako kuhusu mtu aliyeondoka kunaweza kusaidia.\n- Kumzungumzia tu mtu aliyeondoka pindi unapomfikiria kunaweza kusaidia.", - "type": "template", + "SourceText": "Work out where you can get help", + "text": "Fikiria mahali unapoweza kupata msaada", + "type": "global", "note": "" }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Mwisho wa siku, chukua dakika chache:\n\n* Kuongea na kijana wako kuhusu kitu cha kufurahisha alichofanya\n* Jipongeze kwa kitu kimoja ulichofanya vizuri leo.\n* Wewe ni mshindi!", - "type": "template", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "Kuangalia video hii kunahitaji uwe na mtandao wa intaneti. Ili kupunguza matumizi ya data, tazama au pakua video hii unapokuwa kwenye WiFi.", + "type": "global", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Ulizaneni, “Kitu gani kilikufurahisha leo?”\n* Ulizaneni, “Ulikabiliana na shida gani leo?”\n* Ulizaneni, “Ninaweza kukusaidiaje?”\n* Jaribuni kufanya hivyo pamoja kila siku; inaweza kuwa wakati mnapokula pamoja chakula cha usiku au kabla ya kwenda kulala.", - "type": "template", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "Ili kutembelea tovuti hizi, unahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tembelea tovuti hizi ukiwa kwenye WiFi.", + "type": "global", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Huwezi kusafiri kila wakati, lakini unaweza kuota kila wakati! Muulize kijana wako maswali haya:\n* Je, ungependa kusafiri kwenda wapi? Utakaa huko kwa muda gani? Utafungasha nini? Utafanya nini kwenye safari yako? Utaona nini?\n* Angalieni ramani pamoja au choreni ramani.\n* Chagua nchi ambayo kijana wako hajawahi kuisikia halafu mjifunze zaidi kuhusu nchi hiyo.", - "type": "template", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "Kutuma ujumbe huu kunahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tuma ujumbe huu ukiwa kwenye WiFi.", + "type": "global", "note": "" }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Wewe na kijana wako mnaweza kuunda orodha ya wageni maarufu ambao mngependa kuwaalika kwenye sherehe yenu. Kila mmoja anaweza kuwa na watu watano – wanaweza kuwa watu wa zamani au wa sasa. Je, ungemwalika nani? Na, je, wageni wako wataweza kukaa pamoja vizuri?", - "type": "template", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Ugonjwa mbaya au kifo cha rafiki au mwanafamilia", + "type": "global", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Fikiria kauli tatu kuhusu wewe. Mbili ni lazima ziwe za kweli na moja ni lazima iwe ya uongo.\n* Inaweza kusaidia kufikiria mambo ambayo ungetamani kuyapata, ndoto zako, mambo yalliyokutokea shuleni, mambo unayopenda au usiyopenda. Kwa mfano: Sipendi ndizi, somo ninalolipenda zaidi ni sayansi, na ninatamani sana ningejua kuimba.\n* Ziseme kwa kijana wako na mwambie akisie kauli ipi ni ya uongo.\n* Je, amekisia kwa usahihi? Je, alikushangaza?\n* Sasa mwambie na yeye afanye hivyohivyo. Je, mmejifunza jambo jipya kuhusu kila mmoja wenu?", - "type": "template", + "SourceText": "Robbery", + "text": "Unyang'anyi", + "type": "global", "note": "" }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Mwambie kijana wako jambo fulani kuhusu wewe mwenyewe ulipokuwa kijana. Je, ni vitu gani havikuwepo wakati huo? Simu zenye intaneti? Ulifanya mambo gani ili kujifurahisha? Mambo gani yalikupa wasiwasi? Usijali kama yeye hatakuambia chochote – cha muhimu ni kwamba anasikiliza na kukumbuka. Wakati mwingine vijana wetu wanasahau kuwa wazazi wao ni watu pia!", - "type": "template", + "SourceText": "Flooding", + "text": "Mafuriko", + "type": "global", "note": "" }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Fikiria kuhusu nguvu kuu. Kwa mfano, kwenda popote papo hapo, kusoma akili za wengine, kusafiri miaka ya mbele au nyuma.\n* Muulize kijana wako, “Kama ungekuwa na nguvu kuu ya […], ungeitumiaje?”\n* Mhimize kumpa shujaa wake jina na kumuigiza.\n* Sasa mwache kijana wako akuchagulie nguvu kuu.\n* Hakikisha unaigiza pia namna ya kuitumia hiyo nguvu kuu yako!", - "type": "template", + "SourceText": "Political violence", + "text": "Vurugu za kisiasa", + "type": "global", "note": "" }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Zungumza na kijana wako kuhusu jambo analopenda.\n\nLinaweza kuhusu kitu chochote atakachochagua kuzungumzia: michezo, marafiki, muziki, watu mashuhuri...\n\nJaribu kumsikiliza kijana wako na mpe nafasi ya kuzungumza.", - "type": "template", + "SourceText": "Losing my job", + "text": "Kufukuzwa kazi yangu", + "type": "global", "note": "" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Chagueni msimuliaji ili aanze kubuni hadithi.\n* Wasikilizaji wa simulizi hiyo wanaweza kumkatiza na kusema neno fulani wakati wowote.\n* Msimuliaji anatakiwa kuingiza neno hilo kwenye hadithi yake.\n* hadithi inapoisha, jaribuni kumpa nafasi msimuliaji mwingine!", - "type": "template", + "SourceText": "Pandemic (COVID-19)", + "text": "Janga (UVIKO-19)", + "type": "global", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Fikiria kuhusu hali tatu tofauti. Kwa mfano, kuendesha gari, kusafiri kwa mashua au kurusha ndege.\n* Ziseme kwa kijana wako na muulize, \"Kipi ungependa?'\n* Muulize kwa nini?\n* Sasa fikiria kuhusu hali tatu zaidi au muombe kijana wako afanye kwa ajili yako.", - "type": "template", + "SourceText": "Weekly Workshops", + "text": "Warsha za Wiki", + "type": "global", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Ulizaneni maswali. Yanaweza kuwa maswali yoyote kuhusu mambo mnayopenda au kile mlichofanya leo.\n* Sheria pekee ya mchezo huu ni kwamba huwezi kujibu \"Ndiyo\", \"Hapana\" au \"Labda\".\n* Je, unaweza kuendelea kufanya hivyo kwa muda gani? Je, majibu yako yanaweza kuwa na ubunifu kiasi gani?\n* Badilishaneni zamu za kuuliza na kujibu na mcheze tena!", - "type": "template", + "SourceText": "Weekly Workshop", + "text": "Warsha ya Wiki", + "type": "global", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Mtu wa kwanza anasema, “Siku ya Jumamosi, nitaenda… (k.m., kwenda kwenye bustani)”\n* Mtu wa pili anaongezea alichosema mtu wa kwanza, “Siku ya Jumamosi, nitaenda kwenye bustani na… (k.m., kumtembelea rafiki yangu wa karibu).\n* Kila mtu anaongezea kwenye kile kilichosemwa awali, akijaribu kufikiria mambo yote ya kufurahisha ya kufanya Jumamosi.", - "type": "template", + "SourceText": "workshops", + "text": "warsha", + "type": "global", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Anza hadithi na \"Hapo zamani za kale kulikuwa na...\"\n* Muache kijana wako atengeneze sentensi inayofuata.\n* Kisha unatunga sentensi.\n* Fanyeni kwa zamu mpaka mpate hadithi nzuri mpya.\n* Hakikisha mnamaliza hadithi kwa kitu chanya.\n* Muulize kijana wako ni sehemu gani ya hadithi aliyoipenda zaidi!", - "type": "template", + "SourceText": "workshop", + "text": "warsha", + "type": "global", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "* Muulize kijana wako chakula gani angependa kula.\n* Kiandaeni pamoja!\n* Mwache ashike zamu ya kuwa mpishi mkuu - anaongoza, na unafuata maelekezo yake.\n* Unaweza hata ukamsaidia kutengeneza bajeti ya mahitaji!\n\nUnadhani itafanikiwa? Waulize vijana wako nini WANGEPENDA kwa wewe na wao kufanya pamoja.\nWaache waongoze. Tulia. Furahia.", - "type": "template", + "SourceText": "Workshops", + "text": "Warsha", + "type": "global", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Buni miondoko ya kucheza miziki inayopendwa na kijana wako.\n* Mtu mmoja anacheza mwondoko fulani halafu wengine wote wanafuatisha.\n* Kila mtu anapewa zamu ya kuongoza.\n* Chezeni mbele ya familia!", - "type": "template", + "SourceText": "Workshop", + "text": "Warsha", + "type": "global", "note": "" }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Mchezo huu unaweza kuchezwa na watu wawili wawili au na watu wengi wakiwa kwenye kikundi.\n* Simameni mkitazamana au kwa mduara.\n* Mtu mmoja aongoze kwanza halafu wengine wamfuatishe, wakijaribu kucheza kwa wakati mmoja na kiongozi.\n* Hakikisheni kiongozi anacheza polepole vya kutosha ili kila mtu aweze kumfuatisha! Jaribuni kuchezesha viungo tofauti vya mwili kwa viwango tofauti.\n* Baada ya muda, mtu mwingine awe kiongozi. Kila mtu apewe nafasi ya kuongoza.\n* Jaribuni kucheza bila kiongozi!", - "type": "template", + "SourceText": "Things to do", + "text": "Vitu vya kufanya", + "type": "global", "note": "" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Fikiria ujuzi mpya unaoweza kujifunza pamoja na kijana wako. Kwa mfano, kuchezea mpira hewani au kwa mguu wako bila kuudondosha, kupiga chenga, kupika supu?\n* Peaneni zamu za kujaribu ujuzi mpya.\n* Hakikisheni mnasifiana, na jaribuni kujifunza na kucheza pamoja!", - "type": "template", + "SourceText": "ParentApp", + "text": "ParentApp", + "type": "global", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Fikirieni pamoja aina tatu za mazoezi. Kwa mfano, kutembea, kukimbia polepole, kucheza muziki au mpira wa miguu.\n* Chagueni pamoja zoezi moja halafu mlijaribu.\n* Kama nyote wawili mnalipenda, amueni mtakuwa mnalifanya mara ngapi. Mara moja au mbili kwa wiki? Kila asubuhi?\n* Fikirieni pamoja njia za kulifanya liwe la kufurahisha zaidi. Je, mnaweza kukimbia polepole hadi kituo fulani? Je, mpeane zamu za kuwa kocha? Je, mpeane motisha kwa tuzo ndogo ya bure?", - "type": "template", + "SourceText": "Home", + "text": "Mwanzo", + "type": "global", "note": "" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Mtu wa kwanza anachagua au anaimba wimbo.\n* Watu wengine wote wanatakiwa kutaja jina la wimbo huo (ili kufanya zoezi liwe ngumu zaidi, wanaweza pia kutaja jina la mwimbaji).\n* Mtu wa kwanza kutaja kwa usahihi ndiye atakayefuatia kuwaongoza wengine.", - "type": "template", + "SourceText": "Options", + "text": "Machaguo", + "type": "global", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Mchezo huu unafaa mkiwa angalau watu watatu.\n* Anza katika mduara na mrushie \"kitufe\" mwingine kwenye mduara (au \"mpigie kofi\" kama huwezi kumkonyeza).\n* Unamrushia mara moja na yeye kudaka mara moja. Muangalie mtu unayemrushia.\n* Namna mtu mwingine atadaka itategemea na uelekeo (juu, chini, moja kwa moja, upande, kudunda juu ya ardhi) na nguvu uliyotumia kurusha.\n* Unaweza ukadunda kitufe, kukirusha hewani, na kukimata mda mfupi kabla hujakirusha kwa mwingine.\n* Kila mmoja akielewa vizuri, mnaweza kuanza kutembea chumbani, mkiendelea kurushiana kitufe.\n*Je unaweza kukirusha chini ya mguu? Nyuma ya mgongo? Kupitia kichwani kwako? Kukatisha pasi? Furahia kitufe!", - "type": "template", + "SourceText": "modules", + "text": "vipindi", + "type": "global", "note": "" }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Chagueni mchezo au mazoezi ya kufanya pamoja. Amueni ratiba itakavyokuwa. Je, mtafanya kila siku? Kwa muda gani?\n\nJaribuni kwa wiki moja. Mwishoni mwa wiki, wewe na familia yako jiulizeni maswali haya:\n* Je, mchezo unaendeleaje?\n* Je, mlijisikiaje mwanzoni mwa wiki?\n* Je, mnajisikiaje mwishoni mwa wiki?\n* Je, jambo gani tunaweza kulifanya kwa njia tofauti wiki ijayo?", - "type": "template", + "SourceText": "module", + "text": "kipindi", + "type": "global", "note": "" }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Peaneni zamu za kuwa \"kiongozi\". Sema sentensi za utangulizi ili kumchangamsha kila mtu. Kisha \"kiongozi\" atatoa maelekezo halafu kila mtu afanya shughuli haraka iwezekanavyo:\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Gusa kitu chekundu.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Ruka juu na chini mara kumi.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Weka viatu kwenye kabati ya viatu.\"", - "type": "template", + "SourceText": "Modules", + "text": "Vipindi", + "type": "global", "note": "" }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Mchezo huu unafaa kuchezwa na watu wawili au zaidi.\n* Mtu mmoja anajifanya kuwa anafanya jambo fulani – kwa mfano, kuchana nywele au kupika chakula cha usiku.\n* Mtu mwingine anauliza, “Unafanya nini?”\n* Mtu wa kwanza anatakiwa kusema jambo lisilohusiana na kuchana nywele, kwa mfano, “Ninafunga viatu vyangu.”\n* Kisha mtu wa pili anaanza kujifanya kuwa anafunga viatu vyake mpaka mtu mpya atakapouliza, “Unafanya nini?”\n\nKila mara, ni lazima jibu liwe tofauti na kile unachokifanya kweli!", - "type": "template", + "SourceText": "Module", + "text": "Kipindi", + "type": "global", "note": "" }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "* Tingisheni mikono yenu ya kushoto hewani mara 8 huku mkihesabu hadi 8.\n* Fanyeni hivyo kwa haraka sana na kwa sauti kubwa kadri muwezavyo.\n* Rudieni kufanya hivyo kwa mkono mwingine. Rudieni kufanya hivyo kwa miguu yote miwili.\n* Fanyeni mara 7, kisha mara 6 na kuendelea hadi mara 1.\n* Kila mtu aite kwa sauti \"Kuku kichaa\" kisha acheze kama kuku kichaa kadri awezavyo!", - "type": "template", + "SourceText": "ParentPoints", + "text": "Alama za Mzazi", + "type": "global", "note": "" }, { - "SourceText": "Quick Parenting Tips", - "text": "Vidokezo vya Malezi vya Haraka", - "type": "template", + "SourceText": "ParentPoint", + "text": "Alama ya Mzazi", + "type": "global", "note": "" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Kulea vijana kunaweza kuwa kugumu, na wakati mwingine sisi sote tunahangaika.", - "type": "template", + "SourceText": "Parent Library", + "text": "Maktaba ya Mzazi", + "type": "global", "note": "" }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Je, ni changamoto gani kuu unayoipata sasa hivi?", - "type": "template", + "SourceText": "In-Week Messages", + "text": "Jumbe za Wiki", + "type": "global", "note": "" }, { - "SourceText": "My relationship with my teen is not good", - "text": "Uhusiano wangu na kijana wangu sio mzuri", - "type": "template", + "SourceText": "To solve this challenge, I will try to:", + "text": "Ili kutatua changamoto hii, nitajaribu:", + "type": "global", "note": "" }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "Tabia ya kijana wangu ni ngumu", - "type": "template", + "SourceText": "Do you want to try one of the following things?", + "text": "Je, unataka kujaribu mojawapo ya mambo yafuatayo?", + "type": "global", "note": "" }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ninahisi msongo wa mawazo, upweke, hasira", - "type": "template", + "SourceText": "My challenge is not listed here.", + "text": "Changamoto yangu haikuorodheshwa hapa.", + "type": "global", "note": "" }, { - "SourceText": "I have money worries", - "text": "Nina wasiwasi wa masuala ya pesa", - "type": "template", - "note": "" + "SourceText": "New @global.workshop ready tomorrow!", + "text": "@global.workshop mpya itakuwa tayari kesho!", + "type": "global", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "I worry about my teen’s safety", - "text": "Nina wasiwasi na usalama wa kijana wangu", - "type": "template", + "SourceText": "New workshop!", + "text": "Warsha mpya!", + "type": "global", "note": "" }, { - "SourceText": "We often fight in our family", - "text": "Mara nyingi tunapigana kwenye familia yetu", - "type": "template", - "note": "" + "SourceText": "@global.workshop_capital Reminder", + "text": "@global.workshop_capital Ukumbusho", + "type": "global", + "note": "The string @global.workshop_capital should not be translated." }, { - "SourceText": "I have a different problem…", - "text": "Nina tatizo tofauti…", - "type": "template", + "SourceText": "Nice progress!", + "text": "Maendeleo mazuri!", + "type": "global", "note": "" }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Kujenga mahusiano bora huanza kwa kutumia muda pamoja – hata dakika 5 kwa siku huleta mabadiliko! Mwanzoni, inaweza kuwa vigumu kukaa pamoja, kwani sisi sote tuna shughuli nyingi na vijana wetu wanaweza kujisikia vibaya wakati mwingine. Lakini kutumia hata dakika 5 kwa siku za kumzingatia kijana wako husaidia kujenga imani. Jaribu kumuuliza kijana wako angependa mfanye nini pamoja. Yanaweza kuwa mambo ya kufurahisha na ya kuburudisha kwako pia!", - "type": "template", + "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", + "text": "Kumbuka kukaa chini na kutulia leo - kujuthamini mwenyewe ni ujuzi muhimu wa malezi.", + "type": "global", "note": "" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutumia muda wa pamoja na kijana wako hapa:", - "type": "template", + "SourceText": "You are appreciated!", + "text": "Unathaminiwa!", + "type": "global", "note": "" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Wakati mwingine vijana wote huweza kuonesha tabia mbaya! Jambo moja linaloweza kukusaidia kuhusu tabia ya vijana ni kuwasifu wakati wowote wanapofanya kitu kizuri – hata kiwe kidogo namna gani. Vijana wanaweza wasioneshe kama wanataka au wanatafuta sifa kutoka kwako, lakini wanaitaka kwelikweli.", - "type": "template", + "SourceText": "Something fun", + "text": "Kitu flani cha kufurahisha", + "type": "global", "note": "" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "Unaweza kupata msaada zaidi hapa kuhusu jinsi ya kuhimiza tabia njema kwa kusifia:", - "type": "template", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", + "type": "global", "note": "" }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Msongo wa mawazo kutokana na malezi uko juu sana kwa sasa. Tunajua vizuri kabisa jinsi maisha yanavyoweza kutuzidia. Kufanya kitu kwa ajili yako mwenyewe kunaweza kukupunguzia msongo wa mawazo. Unastahili! Na unapohisi kuzidiwa, dhibiti mwili wako kwa kuvuta pumzi ndefu, polepole, mara tano kabla ya kuamua. Wazazi wengi wanaona njia hii inasaidia.", - "type": "template", - "note": "" + "SourceText": "Your @global.parent_points this week", + "text": "@global.parent_points zako wiki hii", + "type": "global", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kujithamini hapa:", - "type": "template", - "note": "" + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", + "type": "global", + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Hauko peke yako. Msongo wa mawazo kutokana na pesa ni jambo gumu sana kwa wazazi. Jaribu kuzungumza na kijana wako kuhusu kiasi cha pesa kinachoingia na vitu mnavyohitaji kununua kila mwezi kama familia. Kufanya hivyo kunaweza kumsaidia kuelewa kwa nini huwezi kumudu kununua kitu anachotaka. Na kila mtu anapoelewa pesa zinapoenda, ni rahisi zaidi pia kukubaliana kuhusu mambo mnayoweza kuyapunguza na kuweka akiba pamoja!", - "type": "template", + "SourceText": "Remember to practise", + "text": "Kumbuka kufanyia mazoezi", + "type": "global", "note": "" }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutengeneza bajeti na kuweka akiba hapa:", - "type": "template", + "SourceText": "COVID", + "text": "UVIKO", + "type": "global", "note": "" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Vijana hutumia muda mwingi wakiwa mtandaoni au mbali na nyumbani, mahali ambapo ni vigumu kwetu kuwaweka salama – wazazi wengi huwa na wasiwasi kuhusu hili. Jaribu kuanzisha mazungumzo na kijana wako kuhusu maeneo salama na yasiyo salama katika jamii yako na mtandaoni (huenda ukahitaji kujaribu mara kadhaa). Wanaweza hata kujua maeneo mengine usiyoyajua. Hii inaweza kuanza kukusaidia kupanga pamoja kuhusu jinsi ya kuwa salama.", - "type": "template", + "SourceText": "Make me smile", + "text": "Nifanye nitabasamu", + "type": "global", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kumweka salama kijana wako hapa:", - "type": "template", + "SourceText": "Get me going", + "text": "Nifanye niendelee", + "type": "global", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "Tatizo linapojitokeza, jaribuni kulizungumzia pamoja. Tatizo ni nini hasa? Je, kuna njia gani za kulitatua na kuna matokeo gani kwa kila njia? Kwa njia hiyo, mnaweza kupata utatuzi ulio mzuri kwa kila mtu.", - "type": "template", + "SourceText": "My Favourite Relaxes", + "text": "Burudani Zangu Pendwa", + "type": "global", "note": "" }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutatua matatizo pamoja hapa:", - "type": "template", + "SourceText": "All Relaxes", + "text": "Burudani Zote", + "type": "global", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Si rahisi kutunza familia zetu. Wakati mwingine, sisi sote tuna changamoto, lakini tunatumaini programu hii itakusaidia kuzikabili vizuri. @global.parent_app inatokana na uzoefu wa miaka kumi wa kuendesha programu za malezi huko Afrika Kusini, na maelfu ya wazazi wamegundua kuwa vidokezo vinavyotolewa husaidia kukabiliana na changamoto nyingi za malezi. Tunatumaini programu hii itakusaidia wewe na familia yako pia.\n\nHapa kuna vidokezo muhimu kwako:", - "type": "template", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Random Relax", + "text": "Burudani Yoyote", + "type": "global", + "note": "" }, { - "SourceText": "Start your first parenting workshop", - "text": "Anza warsha yako ya kwanza ya malezi", - "type": "template", + "SourceText": "This Week's Relax", + "text": "Burudani ya Wiki Hii", + "type": "global", "note": "" }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "Utapata msaada zaidi kwenye @local.workshop_data.in_text_title.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Listen & Relax (1-2 minutes)", + "text": "Sikiliza na chukua pumziko (dakika 1-2)", + "type": "global", + "note": "" }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "Unaweza kupata msaada zaidi kwenye @local.workshop_data.in_text_title.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Listen & Relax (3-5 minutes)", + "text": "Sikiliza na chukua pumziko (dakika 3-5)", + "type": "global", + "note": "" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Anza @local.workshop_data.in_text_title", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Do & Relax (5-10 minutes)", + "text": "Fanya na chukua pumziko (dakika 5-10)", + "type": "global", + "note": "" }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Maliza @local.workshop_data.in_text_title ili kupata msaada zaidi.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "At home", + "text": "Nyumbani", + "type": "global", + "note": "" }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Endelea na @local.workshop_data.in_text_title", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Buy things we can sell", + "text": "Kununua vitu tunavyoweza kuuza", + "type": "global", + "note": "" }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Fungua tena @local.workshop_data.in_text_title", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "At a bank", + "text": "Kwenye benki", + "type": "global", + "note": "" }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Kaa chini, fumba macho yako na usikilize pumzi yako inapoingia na kutoka.\n\nChunguza jinsi unavyohisi.\n\nUnapomaliza, fumbua macho yako tena.", - "type": "template", + "SourceText": "In a savings group", + "text": "Kwenye kikundi cha kujiwekea akiba", + "type": "global", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Jaribu kufanya hivyo wakati wowote unapohisi msongo wa mawazo na unahitaji kupumzika ili kurudi tena kwenye hali ya kawaida.", - "type": "template", + "SourceText": "Teens completing school/university", + "text": "Vijana kumaliza shule/chuo kikuu", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Fumba macho yako.\n\nHebu tutumie maajabu ya namba tatu ili tuendelee kuwepo na kupumzika.\n\nTaja sauti tatu unazoweza kuzisikia sasa hivi.\nTaja harufu tatu unazoweza kuzinusa sasa hivi.\nTaja vyakula vitatu unavyovipenda.\n\nJe, ni mambo gani matatu unayoshukuru kuwa yapo sasa hivi? Si lazima yawe makubwa.", - "type": "template", + "SourceText": "Building/expanding a house for my family", + "text": "Kujenga/kupanua nyumba ya familia yangu", + "type": "global", "note": "" }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "Wakati siku ngumu inapofikia mwisho, kufikiria vitu vitatu vya kuweza kufurahia inaweza kutusaidia kupata ujasiri wa kujaribu tena kesho.", - "type": "template", + "SourceText": "Starting a business", + "text": "Kuanzisha biashara", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Fumba macho yako na ufikirie siku ya leo.\n\nTaja jambo moja unaloshukuru kuwepo.\nTaja jambo moja ulilolifanya vizuri.\nTaja jambo moja unalolipenda.", - "type": "template", + "SourceText": "Buying a car for my family", + "text": "Kununua gari ya familia yangu", + "type": "global", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "Hongera, wewe ni shujaa!", - "type": "template", + "SourceText": "Walk to the shops", + "text": "Tembea kwenda madukani", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Fumba macho yako.\n\nTumia maajabu ya namba tatu ili uendelee kuhusiana na kupumzika.\n\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.", - "type": "template", + "SourceText": "Get water together", + "text": "Fuata maji pamoja", + "type": "global", "note": "" }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "Je, unahisi tofauti yoyote? Kuvuta pumzi ndefu husaidia mwili wetu wote na akili kutulia.\n\nWewe ni mshindi!", - "type": "template", + "SourceText": "Do a chore together", + "text": "Kufanya pamoja shughuli ya nyumbani", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Fumba macho yako.\n\nSikiliza pumzi yako inapoingia na kutoka mara tano.\n\nChunguza jinsi unavyohisi.", - "type": "template", + "SourceText": "Prepare dinner", + "text": "Andaa chakula cha usiku", + "type": "global", "note": "" }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Ukimaliza, fumbua macho yako tena. Una uwezo wa kudhibiti hali yako!", - "type": "template", + "SourceText": "Eat breakfast/lunch/dinner", + "text": "Kula kifungua kinywa/mlo wa mchana/mlo wa usiku", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Fumba macho yako. \n\nTumia dakika moja kufikiria siku ya leo.\n\nFikiria jambo moja chanya au la kufurahisha ulilolifanya.\nJisifie kwa jambo moja ulilolifanya vizuri leo. \nFikiria jambo moja unaloweza kulifanya tofauti kesho.  \n\nFikiria jambo moja unalolishukuru.", - "type": "template", + "SourceText": "Have tea after school", + "text": "Kunywa chai akitoka shule", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Fumba macho yako.\n\nJe, watoto wako huwa wanakufanya utake kufoka?\n\nJipumzishe kwa sekunde 10. Vuta pumzi na kuzishusha polepole kwa mara 5.\n\nKisha jaribu kujibu kwa utulivu zaidi.", - "type": "template", + "SourceText": "Watch a T.V. show", + "text": "Kutazama kipindi cha televisheni", + "type": "global", "note": "" }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Mamilioni ya wazazi wanasema kufanya hivyo kunasaidia – TENA SANA.", - "type": "template", + "SourceText": "Review homework", + "text": "Kupitia tena kazi ya nyumbani", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Fumba macho yako.\n\nAcha kwa muda kile unachokifanya ili uhusiane na pumzi yako.\n\nJe, ni jambo gani moja unalolishukuru sasa hivi?\nJe, ni jambo gani moja linalokuletea furaha?\nJe, ni jambo gani moja unalolipenda?\n\nSi lazima yawe makubwa. Wakati mwingine mambo madogo maishani ndiyo muhimu zaidi!", - "type": "template", + "SourceText": "Chat before bedtime", + "text": "Kuongea kabla ya kulala", + "type": "global", "note": "" }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Hapa kuna shughuli ya kupumzisha mwili wako:\n\nKaa kwa utulivu halafu ufumbe macho yako ukiweza.\nVuta picha kuwa pete ya dhahabu inauchunguza mwili wako kuanzia unyayoni hadi utosini.\nSikiliza kwa makini pindi inapojongea kwenda juu na chini ya mwili wako. Je, kuna maeneo yoyote yaliyokakamaa? Yaliyo na ganzi? Yaliyo na maumivu?\nTulia kwenye maeneo hayo kwa muda. Vutia pumzi kwenye eneo hilo na, unaposhusha pumzi, jaribu kuachilia hali yoyote ya kukakamaa au ya maumivu.\nFanya hivi kwa kuvuta pumzi kadhaa.\n\nFumbua macho yako. Je, mwili wako unahisije sasa?", - "type": "template", + "SourceText": "Play a game/sport", + "text": "Kucheza mchezo", + "type": "global", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "Unaweza pia kujaribu hii kwa wakati mwingine ukijikuta umelala kitandani na usingizi hauji!", - "type": "template", + "SourceText": "Tap and type", + "text": "Bonya na uandike", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Fumba macho yako.\n\nChunguza uhusiano wako na ardhi iliyo chini yako.\nJe, ni sehemu gani za mwili wako zinagusa ardhi? Je, ni sehemu gani za mwili wako hazigusi ardhi?\nChunguza mahali palipo na joto na mahali palipo na baridi.\nGusa ardhi iliyo chini yako inayokubeba. Acha mwili wako uzame na kubebwa na ardhi.", - "type": "template", + "SourceText": "Tap and choose", + "text": "Bonya na uchague", + "type": "global", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Jaribu kufanya hivyo utakapojisikia tena kuwa mpweke au unapofanya shughuli zinazochosha kama kuosha vyombo baada ya kula. Kunasaidia kweli!", - "type": "template", + "SourceText": "Type your own", + "text": "Andika yako mwenyewe", + "type": "global", "note": "" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Kaa chini na ufumbe macho yako.\nJe, unaweza kusikia sauti ngapi?\nSikiliza sauti za ndani na nje ya chumba. Zihesabu kwa vidole vyako.\nBaada ya sekunde kumi, umefikisha vidole vingapi? Ulisikia sauti zipi?\n\nJaribu tena kwa sekunde kumi.\nJe, umesikia sauti zozote mpya? Je, umesikia sauti zozote ndani ya mwili wako mwenyewe?\nChunguza jinsi unavyohisi sasa.", - "type": "template", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Nimeielewa hii. Usinionyeshe tena ujumbe huu.", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Fumba macho yako.\n\nJe, huwa unahisi kitu kwa nguvu sana kiasi kwamba huwa unataka kukikimbia?\n\nBadala ya kuikimbia hisia hiyo, hebu tuikimbilie kwa muda.\nSi vibaya. Fumba macho yako kama unajisikia raha mustarehe. Vuta pumzi ndefu.\n\nKuwa mdadisi. Je, unaisikia wapi kwenye mwili wako? Je, ni ya moto au baridi? Je, ni ngumu au laini? Je, imekakamaa au imelegea?\nJiulize maswali kadhaa. Je, inaniambia nini? Je, inahitaji nini? Je, ninawezaje kujitendea wema sasa hivi?", - "type": "template", + "SourceText": "Ready to practise?", + "text": "Uko tayari kufanya mazoezi?", + "type": "global", "note": "" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Hapa kuna kitu cha kufurahisha cha kukusaidia kuondokana na msongo wa mawazo:\n\nChagua wimbo unaoendana na kile unachohitaji kwa sasa. Je, unahitaji wimbo wa taratibu ili kuibembeleza nafsi yako iliyochoka au unahitaji wimbo wa kuchangamsha ili kukusaidia kuondoa msongo wa mawazo kwa kiasi fulani?\n\nWeka nafasi na uchezeshe mwili wako kulingana na muziki. Kumbuka kuvuta pumzi unapocheza. Fanya pumzi yako iendane na miondoko yako.", - "type": "template", + "SourceText": "Talk about home practice", + "text": "Zungumza kuhusu mazoezi ya nyumbani", + "type": "global", "note": "" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Hata kucheza kwa dakika chache tu kunaweza kutosha kuondoa msongo wa mawazo na kuchangamsha hisia zako!", - "type": "template", + "SourceText": "How did your practice go?", + "text": "Zoezi lako liliendaje?", + "type": "global", "note": "" }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Fumba macho yako.\nTumia muda kuhisi ardhi iliyopo chini ya miguu yako.\nFikiria kuhusu jambo unalolishukuru.\nMakinikia upumuaji wako.\nVuta pumzi na kuzishusha.\n\nVuta na kushusha pumzi.", - "type": "template", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "Tuzungumzie jinsi zoezi la nyumbani lilivyoenda wiki hii.", + "type": "global", "note": "" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Habari! Unajisikiaje sasa hivi? Furaha, huzuni, hasira, taharuki, wasiwasi?\n\nChunguza mahali unapohisi hali hiyo kwenye mwili wako. Chunguza ni mawazo yapi yanayohusiana na hisia hiyo. Vuta pumzi ndefu.", - "type": "template", + "SourceText": "Story", + "text": "Hadithi", + "type": "global", "note": "" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Hongera kwa kutumia muda ili kuangalia hisia na mawazo yako!", - "type": "template", + "SourceText": "In my group", + "text": "Kwenye kundi langu", + "type": "global", "note": "" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "Hebu tufanye mazoezi ya mbinu ya kutulia tunayoiita ‘Kata Umeme’.\n\nWeka miguu yako kwenye ardhi halafu vuta pumzi na kuzishusha mara tatu polepole kadri uwezavyo. Fikiria kama unanusa maua au unazima mshumaa.\n\nTa Da! Kata Umeme!", - "type": "template", + "SourceText": "By myself", + "text": "Peke yangu", + "type": "global", "note": "" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Hii ni mbinu nzuri ya kutumia unapohisi kuvunjika moyo kwa sababu itasaidia kukutuliza.", - "type": "template", + "SourceText": "Awesome parent", + "text": "Mzazi mzuri", + "type": "global", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Kujisifia kunaweza kusaidia sana, hasa kwenye siku zinazotuendea vibaya.\n\nFikiria jinsi wiki ilivyokuendea halafu umalizie tungo ifuatayo: \"Wiki hii, ninajivunia kwa…\" Kinaweza kuwa kitu chochote, siyo mambo ya malezi tu!\n\nFikiria jambo moja ulilofanya vizuri leo. Sasa jifumbate kwa mikono yako mwenyewe halafu UJIKUMBATIE kwa nguvu!", - "type": "template", + "SourceText": "friends", + "text": "marafiki", + "type": "global", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Kaa kwa raha mustarehe halafu ufumbe macho yako.\n\nTambua kinachokutokea muda huu. Unafikiria nini? Je, mawazo yako ni chanya au hasi? Je, unahisije? Je, unahisi kufurahi au kutofurahi? Je, mwili wako unahisije? Je, unahisi wasiwasi au umetulia?\n\nHusiana na moyo wako kwa wema na upole. Unaweza kuhitaji kuweka mkono mmoja kwenye moyo wako au kifuani. Sema kimoyomoyo maneno yafuatayo:\n\nNinaomba niwe na amani.\nNinaomba niwe salama.\nNinaomba niwe na afya.\nNinaomba niwe na furaha.\nNa upendo uwe kwenye familia yangu.\nNinaomba nihisi kupendwa.", - "type": "template", + "SourceText": "Safety Word", + "text": "Neno la Usalama", + "type": "global", "note": "" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Tumia muda kutafakari hali uliyoipitia. Chunguza kama unahisi tofauti yoyote.", - "type": "template", + "SourceText": "Aunty Cecilia", + "text": "Shangazi Cecilia", + "type": "global", "note": "" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Hatua ya Kwanza. Fumba macho yako halafu uvute pumzi ndefu.\n\nHatua ya Pili. Jiulize, \"Je, ninafikiria nini?\" Chunguza kama mawazo yako ni chanya au hasi.\nAngalia jinsi unavyojihisi. Chunguza kama mihemuko yako ni ya kufurahisha au kutofurahisha. Jikumbushe kwamba chochote unachohisi, si kibaya.\nChunguza jinsi mwili wako unavyohisi. Chunguza kitu chochote kinachoumiza au kinacholeta wasiwasi.\n\nHatua ya Tatu. Makinikia upumuaji wako. Hisi pumzi yako inapoingia na kutoka. Unaweza kuweka mkono kwenye tumbo lako na kuhisi linavyopanda na kushuka kwa kila pumzi. Fanya hivyo kwa mipumuo kama 10.\n\nHatua ya Nne. Panua ufahamu wako kuhusu mwili wako wote. Sikiliza sauti zilizomo chumbani.\n\nHatua ya Tano. Tumia muda kutafakari iwapo unahisi mabadiliko au la. Ukimaliza, fumbua macho yako.", + "SourceText": "By providing your consent below you acknowledge reading and accepting the @global.terms_and_conditions and @global.privacy_policy. The most important commitments are:\n1. This is, and will always be, a fully free app.\n2. Your data will never be sold. We are not for profit.\n3. By using the app you are helping to make the app better for you and others.\n4. Your anonymised data may be used for research purposes by our @global.parent_app team.", + "text": "Kwa kutoa ridhaa hii hapa chini unakubali kusoma na kukubali @global.terms_and_conditions na @global.privacy_policy. Mambo muhimu ya kukubaliana nayo:\n1. Hii ni, na itazidi kuwa programu tumishi inayopatikana bure.\n2. Taarifa zako kamwe hazitouzwa. Sisi hatupo kwa faida ya kifedha.\n3. Kwa kutumia programu tumishi unasaidia kuiboresha programu tumishi kwa ajili yako na wengine. \n4. Taarifa zisizo na utambulisho zitatumika kwa ajili ya utafiti na timu yetu ya @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.terms_and_conditions\n@global.privacy_policy\n@global.parent_app" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "Hongera kwa Kutulia. Unaweza kufanya hivyo wakati wowote unapohisi msongo wa mawazo. Kufanya hivyo kunakupa nafasi ya kutulia zaidi. Hata kuvuta pumzi ndefu mara chache au kuhusiana na ardhi iliyopo chini yako kunaweza kuleta mabadiliko. Unaweza pia Kutulia pamoja na watoto wako!", + "SourceText": "These policies are still under construction. We value advice and input to improve them.", + "text": "Sera hizi bado zinatungwa. Tunathamini ushauri na nyongeza wa kuziboresha.", "type": "template", "note": "" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Simama na unyooshe mikono yako juu angani. Sukuma mawingu yote na uache jua likuangazie. Jinyooshe kwenda kulia na kushoto. Jinyooshe kwenda mbele na nyuma.\n\nAcha mkono wako uning'inie ubavuni mwako. Kaza mabega yako na kuyapandisha hadi kwenye masikio yako huku ukipumua, bana macho yako, na ushikilie pumzi yako. Legeza mabega yako wakati unapolegeza mwili wako.\n\nLegeza mikono yako na uibembeze ubavuni, halafu binua upande wa juu wa kiwiliwili chako. Mikono yako inapaswa kupiga polepole mgongo wako unapojigeuza kutoka upande mmoja hadi mwingine.\n\nWeka mguu mmoja mbele ya mwingine na fanya miduara midogo kwa kutumia vifundo vya miguu. Kumbuka kugeukia pande zote mbili. Kila mguu ufanye miduara minne kwa kila upande.\n\nSasa tikisa mwili wako wote haraka kadri uwezavyo. Tikisa upande wa juu kabisa! Tikisa upande wa chini kabisa! Tikisa mwili wote!\n\nFumba macho yako na uinue mikono yako polepole kuzidi kichwa chako huku ukivuta pumzi. Teremsha mikono yako polepole kuelekea ubavuni mwako huku ukishusha pumzi.\n\nTumia muda kutafakari hali uliyoipitia.", + "SourceText": "I consent to the commitments stated above.", + "text": "Ninaridhia na makubaliano yalioorodheshwa hapo juu.", "type": "template", "note": "" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "Hongera! Unaweza kufanya shughuli hii wakati wowote unapohisi kama unahitaji kuondoa msongo wa mawazo na kutia nguvu akilini na mwilini mwako.", + "SourceText": "You can only move on and access the app if you provide your consent.", + "text": "Utaweza kuendelea kutumia programu tumishi endapo utatoa ridhaa yako.", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Tengeneza orodha ya shughuli zinazoleta afya unazopenda kufanya. Hizi ni baadhi ya mapendekezo:\n* Kusikiliza muziki unaoupenda\n* Kwenda matembezini (kama inaruhusiwa)\n* Kufanya mazoezi\n* Kunywa kikombe cha chai peke yako\n* Kumpigia rafiki simu\n* Kuimba, kucheza, kusali, au kusoma\n* Kuketi juani huku umefumba macho\n* Kutazama kipindi cha runinga unachokipenda\n\nChagua shughuli moja na uifanye leo!", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Ulizaneni, “Kitu gani kilikufurahisha leo?”\n* Ulizaneni, “Ulikabiliana na shida gani leo?”\n* Ulizaneni, “Ninaweza kukusaidiaje?”\n* Jaribuni kufanya hivyo pamoja kila siku; inaweza kuwa wakati mnapokula pamoja chakula cha usiku au kabla ya kwenda kulala.", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "Unapojitunza wewe mwenyewe, unawatunza watoto wako. Sisi sote tunahitaji kuhusiana. Kila siku, jaribu kuzungumza na marafiki, familia, na mitandao mingine inayosaidia. Kama umepita muda tangu ulipowasiliana na mtu fulani, fanya hivyo sasa!", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "* Muulize kijana wako chakula gani angependa kula.\n* Kiandaeni pamoja!\n* Mwache ashike zamu ya kuwa mpishi mkuu - anaongoza, na unafuata maelekezo yake.\n* Unaweza hata ukamsaidia kutengeneza bajeti ya mahitaji!\n\nUnadhani itafanikiwa? Waulize vijana wako nini WANGEPENDA kwa wewe na wao kufanya pamoja.\nWaache waongoze. Tulia. Furahia.", "type": "template", "note": "" }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Jambo linalokukasirisha? Je, linatokea wakati gani? Je, kwa kawaida, mwitikio wako huwa ni upi?\n\nZuia hasira kabla hata haijapanda. Unapokuwa umechoka, lala usingizi au pumzika. Unapokuwa na njaa, jaribu kula kitu. Unapokuwa mpweke, omba msaada kwa mtu.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "* Tingisheni mikono yenu ya kushoto hewani mara 8 huku mkihesabu hadi 8.\n* Fanyeni hivyo kwa haraka sana na kwa sauti kubwa kadri muwezavyo.\n* Rudieni kufanya hivyo kwa mkono mwingine. Rudieni kufanya hivyo kwa miguu yote miwili.\n* Fanyeni mara 7, kisha mara 6 na kuendelea hadi mara 1.\n* Kila mtu aite kwa sauti \"Kuku kichaa\" kisha acheze kama kuku kichaa kadri awezavyo!", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Kudhibiti hasira kunaweza kuwa kugumu. Pumzika unapohisi unawakasirikia watoto wako au mtu mwingine.\n\nNenda mahali pengine kwa dakika 5 ili uweze kudhibiti tena hisia zako. Kama una mahali salama nje, nenda nje. Una uwezo wa kulimaliza jambo hili!", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Buni miondoko ya kucheza miziki inayopendwa na kijana wako.\n* Mtu mmoja anacheza mwondoko fulani halafu wengine wote wanafuatisha.\n* Kila mtu anapewa zamu ya kuongoza.\n* Chezeni mbele ya familia!", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Rekebisha @global.parent_app yako", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Mchezo huu unafaa kuchezwa na watu wawili au zaidi.\n* Mtu mmoja anajifanya kuwa anafanya jambo fulani – kwa mfano, kuchana nywele au kupika chakula cha usiku.\n* Mtu mwingine anauliza, “Unafanya nini?”\n* Mtu wa kwanza anatakiwa kusema jambo lisilohusiana na kuchana nywele, kwa mfano, “Ninafunga viatu vyangu.”\n* Kisha mtu wa pili anaanza kujifanya kuwa anafunga viatu vyake mpaka mtu mpya atakapouliza, “Unafanya nini?”\n\nKila mara, ni lazima jibu liwe tofauti na kile unachokifanya kweli!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Maswali haya ya haraka yatapangilia programu hii kulingana na mahitaji yako.", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Huwezi kusafiri kila wakati, lakini unaweza kuota kila wakati! Muulize kijana wako maswali haya:\n* Je, ungependa kusafiri kwenda wapi? Utakaa huko kwa muda gani? Utafungasha nini? Utafanya nini kwenye safari yako? Utaona nini?\n* Angalieni ramani pamoja au choreni ramani.\n* Chagua nchi ambayo kijana wako hajawahi kuisikia halafu mjifunze zaidi kuhusu nchi hiyo.", "type": "template", "note": "" }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "Hebu tuanze na maswali machache kuhusu wewe na familia yako.", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Chagueni mchezo au mazoezi ya kufanya pamoja. Amueni ratiba itakavyokuwa. Je, mtafanya kila siku? Kwa muda gani?\n\nJaribuni kwa wiki moja. Mwishoni mwa wiki, wewe na familia yako jiulizeni maswali haya:\n* Je, mchezo unaendeleaje?\n* Je, mlijisikiaje mwanzoni mwa wiki?\n* Je, mnajisikiaje mwishoni mwa wiki?\n* Je, jambo gani tunaweza kulifanya kwa njia tofauti wiki ijayo?", "type": "template", "note": "" }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Tungependa kujua jina lako la kwanza au jina lako la utani:", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Wewe na kijana wako mnaweza kuunda orodha ya wageni maarufu ambao mngependa kuwaalika kwenye sherehe yenu. Kila mmoja anaweza kuwa na watu watano – wanaweza kuwa watu wa zamani au wa sasa. Je, ungemwalika nani? Na, je, wageni wako wataweza kukaa pamoja vizuri?", "type": "template", "note": "" }, { - "SourceText": "Are you a woman or a man?", - "text": "Je, wewe ni mwanamke au mwanaume?", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Zungumza na kijana wako kuhusu jambo analopenda.\n\nLinaweza kuhusu kitu chochote atakachochagua kuzungumzia: michezo, marafiki, muziki, watu mashuhuri...\n\nJaribu kumsikiliza kijana wako na mpe nafasi ya kuzungumza.", "type": "template", "note": "" }, { - "SourceText": "Woman", - "text": "Mwanamke", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Fikirieni pamoja aina tatu za mazoezi. Kwa mfano, kutembea, kukimbia polepole, kucheza muziki au mpira wa miguu.\n* Chagueni pamoja zoezi moja halafu mlijaribu.\n* Kama nyote wawili mnalipenda, amueni mtakuwa mnalifanya mara ngapi. Mara moja au mbili kwa wiki? Kila asubuhi?\n* Fikirieni pamoja njia za kulifanya liwe la kufurahisha zaidi. Je, mnaweza kukimbia polepole hadi kituo fulani? Je, mpeane zamu za kuwa kocha? Je, mpeane motisha kwa tuzo ndogo ya bure?", "type": "template", "note": "" }, { - "SourceText": "Man", - "text": "Mwanaume", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Peaneni zamu za kuwa \"kiongozi\". Sema sentensi za utangulizi ili kumchangamsha kila mtu. Kisha \"kiongozi\" atatoa maelekezo halafu kila mtu afanya shughuli haraka iwezekanavyo:\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Gusa kitu chekundu.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Ruka juu na chini mara kumi.\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Kuna moto mlimani!\"\n* Wote: \"Kimbia, kimbia, kimbia!\"\n* Kiongozi: \"Weka viatu kwenye kabati ya viatu.\"", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "Je, una umri gani?", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Chagueni msimuliaji ili aanze kubuni hadithi.\n* Wasikilizaji wa simulizi hiyo wanaweza kumkatiza na kusema neno fulani wakati wowote.\n* Msimuliaji anatakiwa kuingiza neno hilo kwenye hadithi yake.\n* hadithi inapoisha, jaribuni kumpa nafasi msimuliaji mwingine!", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Watu wazima", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Anza hadithi na \"Hapo zamani za kale kulikuwa na...\"\n* Muache kijana wako atengeneze sentensi inayofuata.\n* Kisha unatunga sentensi.\n* Fanyeni kwa zamu mpaka mpate hadithi nzuri mpya.\n* Hakikisha mnamaliza hadithi kwa kitu chanya.\n* Muulize kijana wako ni sehemu gani ya hadithi aliyoipenda zaidi!", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Vijana", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Mtu wa kwanza anasema, “Siku ya Jumamosi, nitaenda… (k.m., kwenda kwenye bustani)”\n* Mtu wa pili anaongezea alichosema mtu wa kwanza, “Siku ya Jumamosi, nitaenda kwenye bustani na… (k.m., kumtembelea rafiki yangu wa karibu).\n* Kila mtu anaongezea kwenye kile kilichosemwa awali, akijaribu kufikiria mambo yote ya kufurahisha ya kufanya Jumamosi.", "type": "template", "note": "" }, { - "SourceText": "Children", - "text": "Watoto", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Mchezo huu unaweza kuchezwa na watu wawili wawili au na watu wengi wakiwa kwenye kikundi.\n* Simameni mkitazamana au kwa mduara.\n* Mtu mmoja aongoze kwanza halafu wengine wamfuatishe, wakijaribu kucheza kwa wakati mmoja na kiongozi.\n* Hakikisheni kiongozi anacheza polepole vya kutosha ili kila mtu aweze kumfuatisha! Jaribuni kuchezesha viungo tofauti vya mwili kwa viwango tofauti.\n* Baada ya muda, mtu mwingine awe kiongozi. Kila mtu apewe nafasi ya kuongoza.\n* Jaribuni kucheza bila kiongozi!", "type": "template", "note": "" }, { - "SourceText": "Babies", - "text": "Watoto wachanga", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Mtu wa kwanza anachagua au anaimba wimbo.\n* Watu wengine wote wanatakiwa kutaja jina la wimbo huo (ili kufanya zoezi liwe ngumu zaidi, wanaweza pia kutaja jina la mwimbaji).\n* Mtu wa kwanza kutaja kwa usahihi ndiye atakayefuatia kuwaongoza wengine.", "type": "template", "note": "" }, { - "SourceText": "How many people are in your household?", - "text": "Je, kuna watu wangapi kwenye kaya yako?", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Mchezo huu unafaa mkiwa angalau watu watatu.\n* Anza katika mduara na mrushie \"kitufe\" mwingine kwenye mduara (au \"mpigie kofi\" kama huwezi kumkonyeza).\n* Unamrushia mara moja na yeye kudaka mara moja. Muangalie mtu unayemrushia.\n* Namna mtu mwingine atadaka itategemea na uelekeo (juu, chini, moja kwa moja, upande, kudunda juu ya ardhi) na nguvu uliyotumia kurusha.\n* Unaweza ukadunda kitufe, kukirusha hewani, na kukimata mda mfupi kabla hujakirusha kwa mwingine.\n* Kila mmoja akielewa vizuri, mnaweza kuanza kutembea chumbani, mkiendelea kurushiana kitufe.\n*Je unaweza kukirusha chini ya mguu? Nyuma ya mgongo? Kupitia kichwani kwako? Kukatisha pasi? Furahia kitufe!", "type": "template", "note": "" }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "Unaweza kufanya @global.weekly_workshops peke yako AU unaweza kualika wanafamilia wengine au marafiki wajiunge nawe – mtafundishana mengi. Uamuzi ni wako!", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Mwisho wa siku, chukua dakika chache:\n\n* Kuongea na kijana wako kuhusu kitu cha kufurahisha alichofanya\n* Jipongeze kwa kitu kimoja ulichofanya vizuri leo.\n* Wewe ni mshindi!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "Je, ungependa kufanyaje @global.weekly_workshops zako?", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Fikiria kuhusu nguvu kuu. Kwa mfano, kwenda popote papo hapo, kusoma akili za wengine, kusafiri miaka ya mbele au nyuma.\n* Muulize kijana wako, “Kama ungekuwa na nguvu kuu ya […], ungeitumiaje?”\n* Mhimize kumpa shujaa wake jina na kumuigiza.\n* Sasa mwache kijana wako akuchagulie nguvu kuu.\n* Hakikisha unaigiza pia namna ya kuitumia hiyo nguvu kuu yako!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Can you think of a name for your group?", - "text": "Je, unaweza kufikiria jina la kikundi chako?", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Fikiria kuhusu hali tatu tofauti. Kwa mfano, kuendesha gari, kusafiri kwa mashua au kurusha ndege.\n* Ziseme kwa kijana wako na muulize, \"Kipi ungependa?'\n* Muulize kwa nini?\n* Sasa fikiria kuhusu hali tatu zaidi au muombe kijana wako afanye kwa ajili yako.", "type": "template", "note": "" }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "Je, ni siku gani ya wiki ungependa kufanya @global.weekly_workshops zako?", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Mwambie kijana wako jambo fulani kuhusu wewe mwenyewe ulipokuwa kijana. Je, ni vitu gani havikuwepo wakati huo? Simu zenye intaneti? Ulifanya mambo gani ili kujifurahisha? Mambo gani yalikupa wasiwasi? Usijali kama yeye hatakuambia chochote – cha muhimu ni kwamba anasikiliza na kukumbuka. Wakati mwingine vijana wetu wanasahau kuwa wazazi wao ni watu pia!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Monday", - "text": "Jumatatu", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Fikiria kauli tatu kuhusu wewe. Mbili ni lazima ziwe za kweli na moja ni lazima iwe ya uongo.\n* Inaweza kusaidia kufikiria mambo ambayo ungetamani kuyapata, ndoto zako, mambo yalliyokutokea shuleni, mambo unayopenda au usiyopenda. Kwa mfano: Sipendi ndizi, somo ninalolipenda zaidi ni sayansi, na ninatamani sana ningejua kuimba.\n* Ziseme kwa kijana wako na mwambie akisie kauli ipi ni ya uongo.\n* Je, amekisia kwa usahihi? Je, alikushangaza?\n* Sasa mwambie na yeye afanye hivyohivyo. Je, mmejifunza jambo jipya kuhusu kila mmoja wenu?", "type": "template", "note": "" }, { - "SourceText": "Tuesday", - "text": "Jumanne", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Fikiria ujuzi mpya unaoweza kujifunza pamoja na kijana wako. Kwa mfano, kuchezea mpira hewani au kwa mguu wako bila kuudondosha, kupiga chenga, kupika supu?\n* Peaneni zamu za kujaribu ujuzi mpya.\n* Hakikisheni mnasifiana, na jaribuni kujifunza na kucheza pamoja!", "type": "template", "note": "" }, { - "SourceText": "Wednesday", - "text": "Jumatano", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Ulizaneni maswali. Yanaweza kuwa maswali yoyote kuhusu mambo mnayopenda au kile mlichofanya leo.\n* Sheria pekee ya mchezo huu ni kwamba huwezi kujibu \"Ndiyo\", \"Hapana\" au \"Labda\".\n* Je, unaweza kuendelea kufanya hivyo kwa muda gani? Je, majibu yako yanaweza kuwa na ubunifu kiasi gani?\n* Badilishaneni zamu za kuuliza na kujibu na mcheze tena!", "type": "template", "note": "" }, { - "SourceText": "Thursday", - "text": "Alhamisi", + "SourceText": "Home", + "text": "Mwanzo", "type": "template", "note": "" }, { - "SourceText": "Friday", - "text": "Ijumaa", + "SourceText": "Settings", + "text": "Mipangilio", "type": "template", "note": "" }, { - "SourceText": "Saturday", - "text": "Jumamosi", + "SourceText": "Template", + "text": "Kiolezo", "type": "template", "note": "" }, { - "SourceText": "Sunday", - "text": "Jumapili", + "SourceText": "How to use @global.parent_app", + "text": "Jinsi ya kutumia @global.parent_app", + "type": "template", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "In-Week Messages", + "text": "Jumbe za Wiki", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Safi sana! Tutafungua warsha mpya kwa kikundi chako kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", + "SourceText": "Campaigns", + "text": "Kampeni", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Safi sana! Tutawafungulia warsha mpya kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", + "SourceText": "Notifications", + "text": "Arafa", "type": "template", "note": "" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "Wakati wote unaweza kubadilisha mipangilio hii kwenye @global.weekly_workshop_options.", + "SourceText": "Entering Developer Mode", + "text": "Unaingia kwenye ukurasa wa mtengenezaji", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Tunajua jambo hili ni gumu. Tumeongeza vidokezo vya kukusaidia jinsi unavyoweza kutumia muda ukiwa na kijana wako kwenye @data.parent_centre.my_tips.location_text, ili uweze kuvipata mara moja.\n\nKwa kuwa @data.workshop.w_1on1.title inajenga msingi wa nyenzo nyingine zote za malezi, wiki ijayo utapokea @global.weekly_workshop!", + "SourceText": "To launch the app in developer mode, enter your developer code in the box below and press @global.submit_button.", + "text": "Ili kuzindua programu katika hali ya kubuni, weka msimbo wako wa kubuni kwenye kisanduku kilicho hapa chini na ubonyeze @global.submit_button.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "The string @global.submit_button should not be translated." }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "Vizuri! @global.weekly_workshop yetu ijayo itakupa maoni zaidi kuhusu jambo hili, kama msingi wa nyenzo nyingine zote za malezi. Lakini tayari umeanza vizuri!", + "SourceText": "You have successfully entered developer mode.", + "text": "Umefanikiwa kuingia kwenye njia ya msanidi wa programu.", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Kutumia programu hii kunaonyesha kuwa unamjali kijana wako. Tumeongeza nyenzo muhimu za namna ya kutumia usifiaji kwenye @data.parent_centre.my_tips.location_text ili uzipate haraka.\n\nKwenye @data.workshop.w_praise.in_text_title utajifunza zaidi namna ya kutumia vizuri ujuzi huu.", + "SourceText": "About @global.parent_app", + "text": "Kuhusu @global.parent_app", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "Inavutia sana kuona unamsifia kijana wako! Kufanya hivyo kunamsaidia kuhisi anathaminiwa – kumtia moyo kuna maana kubwa sana. Kwenye @data.workshop.w_praise.in_text_title utajifunza zaidi namna ya kutumia vizuri ujuzi huu.", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_app iliundwa na taasisi ya Parenting for Lifelong Health (PLH) inayotokana na ushirikiano ulioanzishwa duniani kote wa wataalamu wa malezi kutoka Shirika la UNICEF, Shirika la Afya Duniani (WHO), vyuo vikuu vya nchini Afrika Kusini na Uingereza, pamoja na mashirika yasiyo ya kiserikali barani Afrika, na familia na vijana mbalimbali kote barani Afrika. Wazazi na vijana walifanya kazi nasi kwenye programu hii na kutusaidia kuhakikisha kuwa programu hii inakuwa rahisi kutumia, inayofurahisha na inayoshughulisha. Baadhi ya maudhui yaliyomo kwenye programu hii, kama vile shughuli zinazopendekezwa na simulizi za mifano, ziliundwa kwa kuwashirikisha wazazi na vijana ili kuhakikisha kuwa maudhui hayo yanakidhi mahitaji ya familia.\n\nTaasisi ya PLH inajitolea kwa dhati ili kusaidia kuundwa kwa nyenzo na programu za malezi zisizouzwa na zinazoweza kusambazwa kwa watu wengine, ili kuwasaidia wazazi duniani kote waweze kuboresha ustawi wa watoto wao.", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Ni jambo zuri sana kwamba wiki hii imeenda vizuri!\n\nTutakukumbusha mara kwa mara kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Kwa kubofya kwenye kitufe hapo chini, utapangilia upya programu kwenye mipangilio yake ya awali.\n\nHii inamaanisha kuwa shughuli zako zote na data zilizotumiwa zitafutwa na programu yako itafanya kazi kama inaposakinishwa kwa mara ya kwanza.\n\nANGALIZO: Kupangilia upya programu ni tukio la kudumu na hautaweza kupata tena taarifa yoyote.", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Ni jambo zuri sana kwamba ulihisi utulivu wakati mwingi wa wiki!\n\nTutakukumbusha mara kwa mara kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", + "SourceText": "Reset App", + "text": "Pangilia Upya Programu", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Tunaelewa jinsi maisha yanavyoweza kuleta msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia kudhibiti msongo wa mawazo na kuhisi utulivu zaidi.\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya @data.workshop.w_stress.number ya @global.weekly_workshops – lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza!", + "SourceText": "Demo Presentation", + "text": "Uwasilishaji wa Mfano", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Asante kwa kuwa mkweli. Kudhibiti msongo wa mawazo yetu kunaweza kuwa jambo gumu sana. Ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu, tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza. Wewe ni mtu muhimu!\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya @data.workshop.w_stress.number ya @global.weekly_workshops, lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza.", + "SourceText": "Organisation Registration", + "text": "Usajili wa Shirika", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli. Kudhibiti msongo wa mawazo yetu kunaweza kuwa jambo gumu sana. Tunatumaini nyenzo zetu za kudhibiti msongo wa mawazo zitakuwa na faida kwako. Tayari unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Developer Mode", + "text": "Mtengenezaji wa programu", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Safi sana! Tuna warsha kuhusu kutengeneza bajeti ya familia inayoweza kukusaidia kwenye msongo wa mawazo kutokana na pesa kwa jumla, na kupunguza ugomvi unaohusiana na pesa.", + "SourceText": "Select Skin", + "text": "Chagua Aina", "type": "template", "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Msongo wa mawazo kutokana na pesa unaweza kuzidi mno.\n\nTuna warsha kuhusu kutengeneza bajeti ya familia baada ya wiki tano, lakini tayari unaweza kupata vidokezo vya msingi kuhusu kutengeneza bajeti ya familia kwenye @data.parent_centre.my_tips.location_text!", + "SourceText": "Unlock all workshops", + "text": "Fungua vipindi vyote", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako. Ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu, tutakukumbusha kila siku kujipumzisha, kujitambua na kujipongeza. Wewe ni mtu muhimu!\n\nTutajifunza zaidi kuhusu kudhibiti msongo wa mawazo katika wiki ya 5 ya @global.weekly_workshops, lakini tayari unaweza kupata baadhi ya nyenzo zinazofaa kwenye @data.parent_centre.my_tips.location_text za kukusaidia kuanza.", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Kwa kubonyeza kwenye kitufe hapa chini, utafungua vipindi vyote.\n\nANGALIZO: Watumiaji hawapaswi kutumia kitendaji hiki kufungua vipindi. Kufanya hivyo hakufai isipokuwa tu kama ni lazima.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Hongera kwa kuwa mkweli – na tunasikitika kwamba unapata wakati mgumu kwa kijana wako.\n\nWakati mwingine, sisi sote tunahisi kuzidiwa na mambo. Kutumia @global.parent_app ni hatua nzuri ya kukusaidia wewe na familia yako!\n\nTaarifa zetu zimesaidia maelfu ya wazazi na familia kupunguza msongo wa mawazo na kuwa na wakati chanya zaidi pamoja. Tuko hapa kukusaidia.", + "SourceText": "Unlock workshops", + "text": "Fungua vipindi", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nTunatumaini kuwa nyenzo zetu za kudhibiti msongo wa mawazo zitaendelea kukusaidia uhisi utulivu zaidi katika nyakati ngumu. Unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "All @global.workshops are now unlocked.", + "text": "@global.workshops vyote vimefunguliwa sasa.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The string @global.workshops should not be translated." }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Hili ni tatizo kubwa kwa wazazi kila mahali. Tutahakikisha unapata msaada kwa kujenga mawasiliano.\n\nTutazungumza zaidi juu ya kupanga usalama wa kijana wako baadaye kwenye @global.weekly_workshops, lakini tayari unaweza kupata vidokezo vya kwanza vya msingi ili kumweka salama kijana wako kwenye @data.parent_centre.my_tips.location_text!", + "SourceText": "@global.parent_app has downloaded an update. Please restart the app to finish installation.", + "text": "@global.parent_app imesasishwa. Tafadhali anzisha tena programu tumishi kumalizia kuiweka swa.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Vizuri sana. Malezi ni magumu, lakini unafanikiwa kweli kwenye jambo hili.", + "SourceText": "Restart", + "text": "Anzisha upya tena", "type": "template", "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka vijana wetu salama linaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nTayari unaweza kupata vidokezo vya kwanza vya msingi vitakavyosaidia kuweka sheria na kupanga usalama kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Kumpoteza mtu unayempenda ni jambo zito mno. Hapa kuna vidokezo kadhaa vinavyoweza kukusaidia ukivikumbuka.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools na @data.workshop.w_safe.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "Ask for help", + "text": "Omba msaada", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka vijana wetu salama linaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nTayari unaweza kupata vidokezo vya kwanza vya msingi vitakavyosaidia kuweka sheria kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Say goodbye", + "text": "Sema kwa heri", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "Omba msaada kwa mtu unayemwamini – anaweza kukusaidia chakula au kuwatunza watoto. Unaweza kuhitaji nyaraka kwa ajili ya urithi, kwa ajili ya watoto wako, au kwa ajili ya kupata huduma mbalimbali.\n- Wakati mwingine watu hujaribu kuchukua pesa au urithi kutoka kwa mfiwa. Zijue haki zako.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Kuwa mzazi si jambo rahisi. Hongera kwa kuadhimia kumweka salama kijana wako.\n\nTutakupa msaada zaidi kwenye jambo hili katika @global.weekly_workshops za baadaye kama utapenda kujua zaidi!", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "- Kumuaga mtu ni jambo gumu. Fanya kile unachohisi kuwa ni kizuri kwako na kwa kijana wako.\n- Familia, vijana na wazazi si wakamilifu. Mtu anapokuwa amefariki, si vibaya kuzungumzia mambo mazuri na mabaya tunayoyakumbuka.\n- Kumwandikia barua au kumchorea mchoro mtu aliyeondoka kunaweza kusaidia.\n- Baadhi ya watu hufanya sherehe au kuandaa chakula maalum ili kumpa heshima mtu aliyeondoka, na kumuaga.\n- Kutengeneza sanduku la kumbukumbu na kuweka vitu vinavyokukumbusha wewe na kijana wako kuhusu mtu aliyeondoka kunaweza kusaidia.\n- Kumzungumzia tu mtu aliyeondoka pindi unapomfikiria kunaweza kusaidia.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Maudhui yaliyofunguliwa na maswali haya sasa yanapatikana kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Kumpoteza rafiki au mtu unayempenda ni jambo gumu kwa kila mtu. Kujitendea vyema wewe mwenyewe na kufanya mambo ya kukusaidia kukabiliana na wakati huu mgumu humsaidia pia kijana wako!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "Umefungua warsha ya kwanza!", + "SourceText": "Take care of yourself", + "text": "Jithamini", "type": "template", "note": "" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Tunajua jambo hili ni gumu. Unaweza kupitia vidokezo kadhaa vya kukusaidia jinsi unavyoweza kutumia muda ukiwa na kijana wako kwenye @data.parent_centre.my_tips.location_text au unaweza kuangalia tena @data.workshop.w_1on1.in_text_title.", + "SourceText": "Find a support group", + "text": "Tafuta kikundi kinachotoa msaada", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "Hongera kwa kujiwekea msingi mzuri sana! Wakati wote unaweza kupitia tena @data.workshop.w_1on1.in_text_title ili kupata maoni zaidi kuhusu jinsi ya kutumia muda pamoja.", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "- Huzuni inaweza kutuathiri kwa majuma au miezi au miaka kadhaa. Siyo lazima ujisikie nafuu haraka.\n- Pata usingizi na chakula cha kutosha – ni vigumu kuwatunza vijana ukiwa mchovu na mwenye njaa.\n- Tengeneza orodha ya mambo yanayokufanya ujisikie nafuu, na uyafanye.\n- Kila siku, jaribu kufanya jambo moja rahisi la kuburudisha ukiwa na kijana wako, na ukiwa peke yako.\n- Si vibaya kutojisikia vizuri na si vibaya kulia. Usijilaumu kamwe, hili si kosa lako.\n- Kuna tumaini kila wakati hata baada ya kupoteza. Jaribu kufurahia mambo rahisi, na tumia muda fulani kufanya jambo la kufurahisha au kuburudisha ukiwa na kijana wako.\n- Tafuta mtu mzima mmoja au wawili wanaoweza kukusaidia, kusikiliza, na kuzungumza.", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Kutumia programu hii kunaonesha kuwa unamjali kijana wako. Unaweza kupitia tena jinsi ya kumsifia kijana wako kwenye @data.parent_centre.my_tips.location_text.\n\nKwa vidokezo zaidi kuhusu jinsi ya kutumia ujuzi huu vizuri, unaweza pia kuangalia zaidi hapa @data.workshop.w_praise.in_text_title.", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "- Kuzungumza na mtu anayeweza kukusaidia na kukusikiliza kunaweza kusaidia.\n- Kujiunga na kikundi cha watu ambao pia wamepoteza mtu kunaweza kusaidia.\n- Hakuna mtu mkamilifu. Si vibaya kuzungumzia mambo mazuri na mabaya mnayoyakumbuka.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "Inavutia sana kuona unamsifia kijana wako! Kufanya hivyo kunamsaidia kuhisi anathaminiwa – unapomtia moyo kunajenga maana kubwa sana.\n\nUnaweza kupitia tena @data.workshop.w_praise.in_text_title ili kupata vidokezo zaidi kuhusu jinsi ya kutumia vizuri ujuzi huu.", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Vijana hukabiliana na msiba kwa namna mbalimbali, kama tu wanavyofanya watu wazima. Unaweza kuwasaidia kuelewa hali hiyo na hisia zao kwa kuweka mazingira salama ambapo mnaweza kushirikishana na kutafakari.", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Ni jambo zuri sana kwamba wiki hii imeenda vizuri!\n\nTutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", + "SourceText": "Be honest", + "text": "Kuwa mkweli", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Ni jambo zuri sana kwamba ulihisi utulivu wakati mwingi wa wiki hii!\n\nTutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia uendelee kudhibiti msongo wa mawazo na kuhisi utulivu.", + "SourceText": "My teen's response", + "text": "Mwitikio wa kijana wangu", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Tunaelewa jinsi maisha yanavyoweza kuleta msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili kukusaidia kudhibiti msongo wa mawazo na kuhisi utulivu zaidi.\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "How to support my teen?", + "text": "Jinsi ya kumsaidia kijana wangu?", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli. Inaweza kuwa changamoto kudhibiti msongo wa mawazo. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza Ili uweze kujithamini na kuhisi utulivu zaidi pindi mambo yanapokuwa magumu. Wewe ni mtu muhimu!\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "- Mwambie kijana wako kwamba fulani amefariki – wakati mwingine hajui.\n- Kumwambia ni mchakato, si tukio. Unaweza kulazimika kumwambia tena na tena.\n- Tumia maneno anayoyaelewa.\n- Kama vijana wadogo hawaelewi kifo ni nini, wasaidie kwa kuwaelezea kwamba mtu wanayempenda hatarudi tena. Jaribu kutosema kwamba 'amelala' au 'amesafiri kwenda mbali'. \n- Vijana wakubwa wanaweza kuelewa kifo ni nini, lakini wanaweza kuhangaika kuwaeleza wengine au kudhibiti hisia zao.\n- Vijana wanaweza kupokea hali hiyo kwa namna tofauti sana: kulia, kupiga kelele, kutokuamini au kunyamaza sana.\nYote haya si mabaya. Waambie kwamba uko pamoja nao.\n- Ruhusu maswali na mazungumzo. Kuwa mkweli. Kama hatujui jambo fulani, si vibaya kusema kwamba hatujui.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli. Inaweza kuwa jambo gumu sana kudhibiti msongo wa mawazo. Wakati wote unaweza kupata nyenzo muhimu za kudhibiti msongo wa mawazo kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "- Vijana wanaweza kuhuzunika, kukasirika, kutoelewa au kutoamini, kuhisi mwili kufa ganzi, kujisikia vibaya au kupata maumivu, ndoto mbaya au matatizo shuleni. Kijana wako anaweza kuonekana mwenye furaha, lakini bado akawa na huzuni. Anaweza kujitenga na kutaka kutumia muda mwingi akiwa na marafiki. Anaweza pia kuonyesha tabia isiyotarajiwa au ya hatari. Hali hizi zinaweza zisilete maana kwako, lakini yote haya ni mambo ya kawaida.\n- Vijana wanaweza kuhisi kama lilikuwa kosa lao – kwamba walileta virusi, au kwamba walikuwa na tabia mbaya. Waambie waziwazi kwamba hawakufanya kosa lolote.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Safi sana! Kama kwenye familia yako kutatokea kutokukubaliana kuhusu masuala ya pesa, unaweza kupitia @data.workshop.w_money.in_text_title au @data.parent_centre.my_tips.location_text wakati wowote!", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "Eleza kwamba kufiwa huambatana na hisia mbalimbali. Mwonyeshe kijana wako kwamba anapendwa na kutunzwa, na mtie moyo awashirikishe wengine hisia zake kwa kuzungumza, kuandika au kuchora.\n- Kama kuna kikundi kinachotoa msaada ambacho kijana wako anaweza kujiunga nacho, kinaweza kumsaidia.\n- Kama kijana anazungumzia kutaka kujidhuru au kujiua, omba msaada kwa mtu haraka iwezekanavyo.\n- Ukiweza, endelea na shughuli zako za kawaida za kila kila siku; kufanya hivyo kunaweza kuwafariji vijana.\n- Vijana kushiriki mila na desturi za msiba kunaweza kusaidia – kuchagua wimbo au kitu cha kusema.\n- Kutumia muda fulani kila siku kumjali kijana wako kunasaidia kumfanya ajisikie kuwa salama zaidi na mpe nafasi ya kuwa huru au kuzungumzia mambo yanayomfadhaisha.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Msongo wa mawazo kuhusu pesa unaweza kuzidi mno.\n\nWakati wowote kukitokea msongo wa mawazo au kutokukubaliana kuhusu masuala ya pesa kwenye familia yako, unaweza kupata vidokezo kwenye @data.workshop.w_money.in_text_title au kwenye @data.parent_centre.my_tips.location_text!", + "SourceText": "Yes", + "text": "Ndiyo", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako. Tutaendelea kukukumbusha kujipumzisha, kujitambua na kujipongeza ili uweze kujithamini na tuweze kukusaidia uhisi utulivu zaidi wakati mambo yanapokuwa magumu. Wewe ni mtu muhimu!\n\nUnaweza kupata maoni zaidi kuhusu kudhibiti msongo wa mawazo kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "No", + "text": "Hapana", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nWakati mwingine, sisi sote tunahisi kuzidiwa, na kuendelea kutumia @global.parent_app ni hatua nzuri sana ya kukusaidia wewe na familia yako!\n\nNyenzo zetu zimesaidia maelfu ya wazazi na familia kupunguza msongo wa mawazo na kuwa na wakati mzuri zaidi pamoja. Tuko hapa kukusaidia.", + "SourceText": "Reply", + "text": "Jibu", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Asante kwa kuwa mkweli – na tunasikitika kuona unapata wakati mgumu kwa kijana wako.\n\nTunatumaini kuwa nyenzo zetu za kudhibiti msongo wa mawazo zitaendelea kukusaidia uhisi utulivu zaidi katika nyakati ngumu. Unaweza kuzipata kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Timer", + "text": "Kipima muda", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Hili ni tatizo kubwa kwa wazazi kila mahali. Kumbuka kutumia ujuzi wako mpya ili kuendelea kujenga mawasiliano mazuri na kijana wako.\n\nUnaweza kupitia tena vidokezo vya msingi kuhusu mpango wa usalama kwa kijana wako kwenye @global.weekly_workshop au kwenye @data.parent_centre.my_tips.location_text!", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Binya pembetatu ili mjadala huu udumu kwa dakika @local.timer_duration.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "The string @local.timer_duration should not be translated." }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka salama vijana wetu kunaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia!\n\nKumbuka, wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre. Unaweza pia kupitia tena vidokezo vya msingi kuhusu sheria na mpango wa usalama kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Video", + "text": "Video", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Kuwa mzazi si jambo rahisi. Kujua jinsi ya kuwaweka salama vijana wetu salama kunaweza kuwa jambo gumu. Kama wazazi, mara nyingi tunajisikia kukosa uwezo kwenye jambo hili, lakini tuko hapa kukusaidia! Kumbuka, wakati wowote unaweza kupata nyenzo lengefu, maudhui ya ziada na rasilimali zinazohusu suala hili kwenye @global.parent_centre.\n\nUnaweza pia kupitia tena vidokezo vya msingi kuhusu kuweka sheria kwenye @data.parent_centre.my_tips.location_text.", + "SourceText": "Start Positively Together", + "text": "Anzeni Vizuri Pamoja", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Kuwa mzazi si jambo rahisi. Hongera kwa kuadhimia kumweka salama kijana wako.\n\nKumbuka, unaweza kupata msaada zaidi kuhusu suala hili kwenye @data.workshop.w_safe.in_text_title wakati wowote unapouhitaji!", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Tunafurahi kukuona tena!\n\nHebu tuanze na kukuthamini wewe.", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Kumbuka unaweza kupata vidokezo na rasilimali nyingi za kukusaidia kwenye @global.parent_centre – zinapatikana kwa ajili yako wakati wowote!", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Peaneni zamu:\n* Shirikisha wengine: Je, unajisikiaje leo?\n* Msifie mtu kwenye kikundi chako kwa jambo alilofanya vizuri wiki hii!\n\nKumbukeni kwamba bila kujali mnavyojisikia, nyinyi kuwa hapa ni jambo zuri sana. Nyote mnastahili kusifiwa.", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "Je, kuna vijana kwenye familia yako?", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Wakati mwingine, sisi sote huwa na mawazo hasi.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "Programu hii inalenga familia zilizo na vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu kwa ajili ya familia yako!", + "SourceText": "\"I am a failure\"", + "text": "\"Mimi ni wa kushindwa\"", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "Je, kuna watu wazima kwenye familia yako?", + "SourceText": "What to do?", + "text": "Nini cha kufanya?", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "Programu hii inalenga wazazi wenye vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu!", + "SourceText": "Examples", + "text": "Mifano", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "Je, una uhakika unataka kuruka swali hili?", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Mara nyingi, kujiambia mwenyewe au kumwambia kijana wako kuacha au kusema kinyume na mambo chanya hakusaidii.", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "Una uhakika unataka kuruka swali hili? Kumbuka, jibu lako litakuwa ni siri na litatusaidia kuelewa mahitaji yako ya malezi.", + "SourceText": "\"I do everything perfectly\"", + "text": "\"Ninafanya kila kitu kikamilifu\"", "type": "template", "note": "" }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "Umechagua \"Nisingependa kujibu\"", + "SourceText": "Instead, you can ask:", + "text": "Badale yake, unaweza kuuliza:", "type": "template", "note": "" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Sawa!\n\nKumbuka, ukijibu swali hili jibu lako litakuwa siri na litatusaidia kukupa maudhui yatakayokufaa.", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "- Je, wazo hilo linatekelezeka? Maelezo mengine ni yapi? \n- Ni nini kitatokea nikiendelea kuamini wazo hili? \n- Nimwambie nini rafiki kama ana wazo hili?", "type": "template", "note": "" }, { - "SourceText": "Customise for your needs", - "text": "Rekebisha kulingana na mahitaji yako", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "\"Jambo hili ni gumu, lakini unajitahidi kadri ya uwezo wako, na tutashirikiana kutafuta ufumbuzi\"", "type": "template", "note": "" }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Kila mzazi duniani anahangaika katika nyakati hizi ngumu. Maswali yafuatayo kuhusu uzoefu wako wa malezi yatatusaidia kukupa msaada unaohitaji.\n\nKuwa mkweli. Kumbuka kwamba hauko peke yako! Mamilioni ya wazazi wanahisi kama wewe, na sote tunastahili kusaidiwa.", + "SourceText": "\"It’s your fault\"", + "text": "\"Ni kosa lako\"", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Ni vigumu kupata muda wa kufurahi na kijana wako.", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"Hebu tutafute ufumbuzi pamoja\"", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Je, ni siku ngapi katika wiki iliyopita uliweza kuwa nao na kufanya jambo ambalo wanalofurahia pamoja nao?", + "SourceText": "\"I lost my job\"", + "text": "\"Nilipoteza kazi yangu\"", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_1on1.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Nilijifunza mengi kwenye kazi yangu – hiyo itanisaidia kupata nyingine\"", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Katika maisha yetu yenye shughuli nyingi ni vigumu kuzingatia mambo chanya.", + "SourceText": "\"Nobody likes me\"", + "text": "\"Hakuna mtu anayenipenda\"", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "Je, ni siku ngapi katika wiki iliyopita ulimsifia kijana wako?", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "\"Wiki iliyopita nilifurahi sana na...\"", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_praise.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Mambo mabaya hunitokea kila wakati\"", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "This is a very stressful time for families.", - "text": "Huu ni muda wenye msongo mkubwa kwa familia.", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Jambo hili zuri lilitokea siku fulani...\"", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Je, ni siku ngapi katika wiki iliyopita ulihisi kuwa na msongo mkubwa wa mawazo kama mzazi/mlezi?", + "SourceText": "Change", + "text": "Badili", "type": "template", "note": "" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Wakati mwingine watoto wetu hutukasirisha sana.", + "SourceText": "Teen", + "text": "Kijana", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Je, ni siku ngapi katika wiki iliyopita ulimfokea kijana wako?", + "SourceText": "Age of teen", + "text": "Umri wa kijana", "type": "template", "note": "" }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "Vizuri. Sayansi ya ubongo inaonyesha kuwa kudhibiti hasira zako kunaboresha ukuaji wa ubongo wa kijana wako. Jionee fahari.", + "SourceText": "Let’s start with a few questions about your family.", + "text": "Hebu tuanze na maswali machache kuhusu familia yako.", "type": "template", "note": "" }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Pesa ni miongoni mwa vyanzo vikubwa zaidi vya msongo wa mawazo katika familia kwa sasa.", + "SourceText": "How many teens are in your household?", + "text": "Je, kuna vijana wangapi kwenye kaya yako?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "Je, ni siku ngapi katika wiki iliyopita ulikuwa na wasiwasi kuhusu pesa?", + "SourceText": "How old are they?", + "text": "Je, wana umri gani?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulikosa pesa za kununulia chakula?", + "SourceText": "You’ve completed your @global.workshop.", + "text": "Umekamilisha @global.workshop.", "type": "template", - "note": "" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_money.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "Read along", + "text": "Endelea kusoma", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Watoto wanapokuwa na tabia mbaya wanaleta msongo wa mawazo.", + "SourceText": "See you soon.", + "text": "Tutaonana baadaye kidogo.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Ni siku ngapi katika wiki iliyopita uliwaadhibu watoto wako kwa kuwachapa au kuwapiga makofi au kuwapiga kwa fimbo au mkanda?", + "SourceText": "You can always find these tools in the @global.parent_centre", + "text": "Wakati wote unaweza kupata nyenzo hizi kwenye @global.parent_centre", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Inafurahisha sana kuona unajibu kwa utulivu licha ya kijana wako kufanya jambo la kufadhaisha. Anaweza kujifunza mambo mengi sana kutoka kwako!", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Wiki ijayo, utashirikisha kikundi chako jinsi gani zoezi la nyumbani lilivyoenda. Pia mnaweza kusaidiana na kukumbushana na wengine wiki hii.", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_stress.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "Small actions, big results! Parents who practice their @global.workshop skills at home get better results.", + "text": "Matendo madogo, matokeo makubwa! Wazazi wanaofanyia kazi mazoezi ya nyumbani waliyopata kwenye @global.workshop hupata matokeo mazuri zaidi.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Ni vigumu kuwafuatilia vijana wako wanapojitegemea.", + "SourceText": "Hear a teen's testimonial", + "text": "Sikia ushuhuda wa kijana", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Ni siku ngapi katika wiki iliyopita ulijua vitu kijana wako alikuwa anafanya na alikuwa na nani?", + "SourceText": "Read a teen's testimonial", + "text": "Soma ushuhuda wa kijana", "type": "template", "note": "" }, { - "SourceText": "This is good to hear.", - "text": "Ni vizuri kusikia hivyo.", + "SourceText": "All @global.workshops_capital", + "text": "@global.workshops_capital zote", "type": "template", - "note": "" + "note": "The string @global.workshops_capital should not be translated." }, { - "SourceText": "Were you in lockdown this week?", - "text": "Je, wiki hii ulitekeleza zuio la kutoka nyumbani?", + "SourceText": "Things to do", + "text": "Vitu vya kufanya", "type": "template", "note": "" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Ni jambo zuri sana kuona kwamba unajua kile anachokifanya kijana wako. Malezi ni jambo gumu, lakini unafanikiwa sana kwenye jambo hili ili kumweka salama.", + "SourceText": "Sorry we missed this!", + "text": "Samahani, hatukuiona hii!", "type": "template", "note": "" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Ni siku ngapi katika wiki ya kawaida zisizo na zuio la kutoka nyumbani ulijua vitu kijana wako alikuwa anafanya na alikuwa na nani?", + "SourceText": "Do you want to share it with us?", + "text": "Je, ungependa kutushirikisha na sisi?", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_safe.tools zimeongezwa kwenye @data.parent_centre.my_tips.title.", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Asante kwa kutushirikisha changamoto yako! Tutatumia mrejesho huu ili kuboresha @global.parent_app.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We all want to keep our children safe.", - "text": "Wote tunataka kuwaweka watoto wetu salama.", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Tunasikitika kusikia kuwa vidokezo hivi havikukusaidia.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "Je, ni siku ngapi katika mwezi uliopita (siku 30) ulizungumza na kijana wako kuhusu kujilinda dhidi ya ukatili wa kingono mtandaoni au nje ya mtandao?", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "Je, unataka kutushirikisha kitu gani unafikiri kingekusaidia?", "type": "template", "note": "" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Hiyo inaweza kuwa pale anapoenda kutembea na marafiki, au kuzungumzia tovuti anazotembelea.", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Asante sana kwa kushirikisha! Wewe ni mzazi mzuri sana kwa kujaribu kutumia muda wa pamoja na kijana wako. Kufanya hivi kunaleta mabadiliko. Endelea na kazi nzuri, na kumbuka, niko hapa kusaidia!", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Tuna changamoto mpya sasa – kuwalinda vijana wetu dhidi ya UVIKO-19.", + "SourceText": "Learn Together", + "text": "Kujifunza Pamoja", "type": "template", "note": "" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Je, ni siku ngapi wiki iliyopita kijana wako alijilinda kwa kuvaa barakoa, kukaa mbali na watu wengine, na kuepuka maeneo yenye msongamano?", + "SourceText": "It's time to learn and practice together!", + "text": "Sasa ni muda wa kujifunza na kufanya mazoezi pamoja!", "type": "template", "note": "" }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "Inaweza kuwa changamoto kumfanya kijana wako awe salama dhidi ya UVIKO-19! Tunakusanya ushauri – punde utaweza kuupata kwenye @global.parent_centre.", + "SourceText": "Learn", + "text": "Jifunze", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Vizuri sana. Tunakusanya ushauri kuhusu kumweka kijana wako salama dhidi ya UVIKO – punde utaweza kuupata kwenye @global.parent_centre.", + "SourceText": "It's time to learn and practice!", + "text": "Sasa ni muda wa kujifunza na kufanya mazoezi!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest", - "text": "Asante kwa kuwa mkweli", + "SourceText": "Listen Together", + "text": "Sikiliza Pamoja", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "SOGOA", + "SourceText": "Let's listen to an audio together!", + "text": "Hebu tusikilize pamoja!", "type": "template", "note": "" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Shirikisha jinsi unavyohisi, na muhimize kijana wako azungumzie pia wasiwasi wake. Mtaelewana vizuri zaidi na mnaweza kupanga pamoja mpango mzuri utakaowawezesha kuwa na afya njema na furaha!", + "SourceText": "Listen", + "text": "Sikiliza", "type": "template", "note": "" }, { - "SourceText": "CAUTION", - "text": "TAHADHARI", + "SourceText": "Let's listen to an audio!", + "text": "Hebu tusikilize pamoja!", "type": "template", "note": "" }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Pata taarifa zako kutoka kwenye vyanzo vya taarifa vinavyoaminika, ili uweze kuwa na uhakika katika nyakati hizi za mashaka. Tunasikia na kuona habari nyingi kupitia watu wengine na simu, runinga, intaneti. Je, hali hiyo inakufanya uhisi mashaka, wasiwasi, hofu, hasira, au kuchanganyikiwa? Hakiki taarifa zako kabla ya kusambaza au kuchukua hatua!", + "SourceText": "Active", + "text": "Inaendelea", "type": "template", "note": "" }, { - "SourceText": "CHOOSE", - "text": "CHAGUA", + "SourceText": "sections", + "text": "sehemu", "type": "template", "note": "" }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Kufanya uchaguzi sahihi unaomfanya kila mtu kuwa salama na mwenye afya kunaweza kuwa jambo gumu. Hasa katika nyakati hizi! Unaweza kumsaidia kijana wako kufanya maamuzi mazuri.", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Habari @fields.user_name! Wiki hii ulifanya:", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "CHILL", - "text": "MFADHAIKO", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Kuna wakati sisi sote huhisi mfadhaiko. Vuteni pumzi ndefu au fanyeni pamoja jambo la kufurahisha. Kuifanya nyumba yako kuwa yenye furaha na amani kunaweza kuleta mabadiliko makubwa! Hapa kuna mawazo kadhaa unayoweza kuyajaribu:", + "SourceText": "That’s wonderful!", + "text": "Hilo ni jambo zuri!", "type": "template", "note": "" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Mawazo hasi hutufanya tuseme na kufanya mambo hasi. Jaribu kubadili unachofikiri na unachosema kutoka kuwa hasi hadi kuwa chanya!", + "SourceText": "Nice work!", + "text": "Kazi nzuri!", "type": "template", "note": "" }, { - "SourceText": "A teen sometimes does something because they:", - "text": "Wakati mwingine kijana hufanya jambo fulani kwa sababu:", + "SourceText": "Your commitment is not taken for granted.", + "text": "Kujitolea kwako si kwa bure.", "type": "template", "note": "" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "- Anawasikiliza marafiki zake\n- Anataka kufanya mambo wanayofanya wengine\n- Anafikiria zaidi kuhusu 'sasa' kuliko 'baadaye'\n- Ana mihemko ya kimapenzi na anaona kwamba kuwa mwangalifu kunachosha\n- Hana wasiwasi kuhusu hatari – anaweza hata kupenda hatari\n- Ana uzoefu mdogo anaoutegemea\n- Yuko tayari kujaribu jambo fulani – bila kujali kitakachotokea", + "SourceText": "Keep up the good work!", + "text": "Endeleza kazi hii nzuri!", "type": "template", "note": "" }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Kukumbuka mambo haya kunaweza kusaidia pindi kijana wako anapofanya uamuzi mbaya. Zungumza naye na tumia muda pamoja naye ili uweze kumsaidia kuchagua vyema wakati ujao!", + "SourceText": "This is lovely!", + "text": "Inafurahisha sana!", "type": "template", "note": "" }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Kuelewa namna kijana wako anavyojisikia na namna unavyoweza kumsaidia huleta mabadiliko makubwa kwenu nyote wawili! Mwangalie kwa makini kijana wako na muulize anajisikiaje. Bofya kwenye uso mmojawapo hapa chini ili kupata taarifa zaidi:", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Jipongeze. Unastahili.", "type": "template", "note": "" }, { - "SourceText": "Hopeful", - "text": "Mwenye matumaini", + "SourceText": "Every @global.parent_point counts!", + "text": "Kila @global.parent_point ni ya muhimu sana!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Resilient", - "text": "Mstahimilivu", + "SourceText": "Relax now", + "text": "Tulia sasa", "type": "template", "note": "" }, { - "SourceText": "Self-esteem", - "text": "Mwenye kujithamini", + "SourceText": "Did you relax already? Tap it!", + "text": "Je, tayari umepumzika? Bofya!", "type": "template", "note": "" }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Vijana wana malengo na ndoto kwa ajili ya siku zijazo – za karibuni na za mbali!", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", "type": "template", "note": "" }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Muulize kijana wako kuhusu malengo na ndoto zake, mhimize afikirie kile anachokitaka kwa maisha yake ya baadaye, na shirikianeni kuweka mpango utakaowezesha kutimiza malengo na ndoto hizo.", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Endelea na @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", - "text": "Vijana wastahimilivu wanaweza kukabiliana na hali ngumu, kubadilika kuendana na mazingira, na kutatua matatizo yanapojitokeza.", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Anza @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Msifie kijana wako kwa kushinda hali ngumu na msaidie pale unapoweza.", + "SourceText": "Finish current workshop", + "text": "Malizia kipindi cha sasa", "type": "template", "note": "" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "Kujithamini kwa kijana ni jinsi anavyojifikiria yeye mwenyewe.", + "SourceText": "How did you hear about @global.parent_app?", + "text": "Uliijuaje @global.parent_app?", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Himiza awe na mtazamo chanya kuhusu yeye mwenyewe, kuwa mfano wa kuigwa kwa kutojifanyia mzaha au kujikosoa kila mara. Ujue uwezo wa kijana wako na msaidie kwenye udhaifu wake.", + "SourceText": "Other", + "text": "Njia nyingine", "type": "template", "note": "" }, { - "SourceText": "Lonely", - "text": "Mpweke", + "SourceText": "By selecting this organisation you are allowing them to have access to your anonymous usage data so that they can support you on this journey.", + "text": "Kwa kuchagua taasisi hii unawaruhusu kutumia taarifa zako zilizoondolewa utambulisho ili waweze kukusaidia katika safari hii.", "type": "template", "note": "" }, { - "SourceText": "Anxious", - "text": "Mwenye wasiwasi", + "SourceText": "NIMR", + "text": "NIMR", "type": "template", "note": "" }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Vijana wanaweza kujisikia upweke, hata wanapokuwa na watu wengine. Wanaweza kuhisi kama hawana mtu wa kuzungumza naye, kumwamini, au kushirikishana naye mambo mbalimbali.", + "SourceText": "I found it myself", + "text": "Niliipata mwenyewe", "type": "template", "note": "" }, { - "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", - "text": "Muulize kijana wako anaendeleaje na jaribuni kutafuta pamoja njia mpya za kufurahisha ili kuwasiliana na marafiki na familia zao – hasa wakati wa zuio la kutotoka nyumbani.", + "SourceText": "A friend or family", + "text": "Rafiki au familia", "type": "template", "note": "" }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Wasiwasi ni hisia ya kawaida na inaweza kutusaidia kukabiliana na hali zinazoleta changamoto. Lakini wasiwasi mwingi kupita kiasi unaowazuia vijana kufanya mambo wanayoyapenda ni tatizo.", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Kulea vijana kunaweza kuwa kugumu, na wakati mwingine sisi sote tunahangaika.", "type": "template", "note": "" }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Msaidie kijana wako kutambua mambo yanayomfanya kuwa na wasiwasi na shirikianeni kupanga namna anavyoweza kukabiliana na mawazo ya wasiwasi.", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Je, ni changamoto gani kuu unayoipata sasa hivi?", "type": "template", "note": "" }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Kufanya pamoja shughuli ya kuburudisha kunaweza kusaidia!", + "SourceText": "My relationship with my teen is not good", + "text": "Uhusiano wangu na kijana wangu sio mzuri", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Mwenye mfadhaiko", + "SourceText": "My teen’s behaviour is difficult", + "text": "Tabia ya kijana wangu ni ngumu", "type": "template", "note": "" }, { - "SourceText": "Self-harm", - "text": "Kujidhuru", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ninahisi msongo wa mawazo, upweke, hasira", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Kuhuzunika au kuwa na majonzi, kuwa na sununu, zote ni hisia za kawaida za kibinadamu. Mfadhaiko hutokea pindi hali hiyo inapoendelea kwa muda mrefu na kuathiri shughuli za kawaida za kila siku za kijana wako. Kijana wako anaweza kuhisi kutokuwa na matumaini na kukosa uwezo au kutokuwa na nia ya kubadilisha chochote.", + "SourceText": "I have money worries", + "text": "Nina wasiwasi wa masuala ya pesa", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Jaribu kupata msaada wa kitaalamu.", + "SourceText": "I worry about my teen’s safety", + "text": "Nina wasiwasi na usalama wa kijana wangu", "type": "template", "note": "" }, { - "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", - "text": "Wakati mwingine vijana wanaweza kujidhuru kwa makusudi ili kukabiliana na hisia hasi kama kukasirika, kuona hatia, kukosa thamani, au kujichukia. Hali hii inaweza kusababishwa na wasiwasi au mfadhaiko.", + "SourceText": "We often fight in our family", + "text": "Mara nyingi tunapigana kwenye familia yetu", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", - "text": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Kama kijana wako yuko tayari kueleza jinsi kujidhuru kunavyomfanya ajisikie vizuri, unaweza kuanza kuelewa sababu za kufanya hivyo. Jaribu kupata msaada wa kitaalamu.", + "SourceText": "I have a different problem…", + "text": "Nina tatizo tofauti…", "type": "template", "note": "" }, { - "SourceText": "What does that mean?", - "text": "Je, hiyo inamaanisha nini?", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Kujenga mahusiano bora huanza kwa kutumia muda pamoja – hata dakika 5 kwa siku huleta mabadiliko! Mwanzoni, inaweza kuwa vigumu kukaa pamoja, kwani sisi sote tuna shughuli nyingi na vijana wetu wanaweza kujisikia vibaya wakati mwingine. Lakini kutumia hata dakika 5 kwa siku za kumzingatia kijana wako husaidia kujenga imani. Jaribu kumuuliza kijana wako angependa mfanye nini pamoja. Yanaweza kuwa mambo ya kufurahisha na ya kuburudisha kwako pia!", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "Je, unaweza kusaidiaje?", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutumia muda wa pamoja na kijana wako hapa:", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Wakati mwingine, sisi sote huwa na mawazo hasi.", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Wakati mwingine vijana wote huweza kuonesha tabia mbaya! Jambo moja linaloweza kukusaidia kuhusu tabia ya vijana ni kuwasifu wakati wowote wanapofanya kitu kizuri – hata kiwe kidogo namna gani. Vijana wanaweza wasioneshe kama wanataka au wanatafuta sifa kutoka kwako, lakini wanaitaka kwelikweli.", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "\"Mimi ni wa kushindwa\"", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "Unaweza kupata msaada zaidi hapa kuhusu jinsi ya kuhimiza tabia njema kwa kusifia:", "type": "template", "note": "" }, { - "SourceText": "What to do?", - "text": "Nini cha kufanya?", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Msongo wa mawazo kutokana na malezi uko juu sana kwa sasa. Tunajua vizuri kabisa jinsi maisha yanavyoweza kutuzidia. Kufanya kitu kwa ajili yako mwenyewe kunaweza kukupunguzia msongo wa mawazo. Unastahili! Na unapohisi kuzidiwa, dhibiti mwili wako kwa kuvuta pumzi ndefu, polepole, mara tano kabla ya kuamua. Wazazi wengi wanaona njia hii inasaidia.", "type": "template", "note": "" }, { - "SourceText": "Examples", - "text": "Mifano", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kujithamini hapa:", "type": "template", "note": "" }, { - "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", - "text": "Mara nyingi, kujiambia mwenyewe au kumwambia kijana wako kuacha au kusema kinyume na mambo chanya hakusaidii.", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Hauko peke yako. Msongo wa mawazo kutokana na pesa ni jambo gumu sana kwa wazazi. Jaribu kuzungumza na kijana wako kuhusu kiasi cha pesa kinachoingia na vitu mnavyohitaji kununua kila mwezi kama familia. Kufanya hivyo kunaweza kumsaidia kuelewa kwa nini huwezi kumudu kununua kitu anachotaka. Na kila mtu anapoelewa pesa zinapoenda, ni rahisi zaidi pia kukubaliana kuhusu mambo mnayoweza kuyapunguza na kuweka akiba pamoja!", "type": "template", "note": "" }, { - "SourceText": "\"I do everything perfectly\"", - "text": "\"Ninafanya kila kitu kikamilifu\"", + "SourceText": "You can get more support on how to budget and save here:", + "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutengeneza bajeti na kuweka akiba hapa:", "type": "template", "note": "" }, { - "SourceText": "Instead, you can ask:", - "text": "Badale yake, unaweza kuuliza:", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Vijana hutumia muda mwingi wakiwa mtandaoni au mbali na nyumbani, mahali ambapo ni vigumu kwetu kuwaweka salama – wazazi wengi huwa na wasiwasi kuhusu hili. Jaribu kuanzisha mazungumzo na kijana wako kuhusu maeneo salama na yasiyo salama katika jamii yako na mtandaoni (huenda ukahitaji kujaribu mara kadhaa). Wanaweza hata kujua maeneo mengine usiyoyajua. Hii inaweza kuanza kukusaidia kupanga pamoja kuhusu jinsi ya kuwa salama.", "type": "template", "note": "" }, { - "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", - "text": "- Je, wazo hilo linatekelezeka? Maelezo mengine ni yapi? \n- Ni nini kitatokea nikiendelea kuamini wazo hili? \n- Nimwambie nini rafiki kama ana wazo hili?", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kumweka salama kijana wako hapa:", "type": "template", "note": "" }, { - "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", - "text": "\"Jambo hili ni gumu, lakini unajitahidi kadri ya uwezo wako, na tutashirikiana kutafuta ufumbuzi\"", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "Tatizo linapojitokeza, jaribuni kulizungumzia pamoja. Tatizo ni nini hasa? Je, kuna njia gani za kulitatua na kuna matokeo gani kwa kila njia? Kwa njia hiyo, mnaweza kupata utatuzi ulio mzuri kwa kila mtu.", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"Ni kosa lako\"", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "Unaweza kupata msaada zaidi kuhusu jinsi ya kutatua matatizo pamoja hapa:", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"Hebu tutafute ufumbuzi pamoja\"", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Si rahisi kutunza familia zetu. Wakati mwingine, sisi sote tuna changamoto, lakini tunatumaini programu hii itakusaidia kuzikabili vizuri. @global.parent_app inatokana na uzoefu wa miaka kumi wa kuendesha programu za malezi huko Afrika Kusini, na maelfu ya wazazi wamegundua kuwa vidokezo vinavyotolewa husaidia kukabiliana na changamoto nyingi za malezi. Tunatumaini programu hii itakusaidia wewe na familia yako pia.\n\nHapa kuna vidokezo muhimu kwako:", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"I lost my job\"", - "text": "\"Nilipoteza kazi yangu\"", + "SourceText": "Start your first parenting workshop", + "text": "Anza warsha yako ya kwanza ya malezi", "type": "template", "note": "" }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Nilijifunza mengi kwenye kazi yangu – hiyo itanisaidia kupata nyingine\"", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "Utapata msaada zaidi kwenye @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Hakuna mtu anayenipenda\"", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "Unaweza kupata msaada zaidi kwenye @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"Last week I did have a great time with...\"", - "text": "\"Wiki iliyopita nilifurahi sana na...\"", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Anza @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"Bad things always happen to me\"", - "text": "\"Mambo mabaya hunitokea kila wakati\"", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Maliza @local.workshop_data.in_text_title ili kupata msaada zaidi.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"This good thing happened the other day...\"", - "text": "\"Jambo hili zuri lilitokea siku fulani...\"", + "SourceText": "Continue the @local.workshop_data.in_text_title", + "text": "Endelea na @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Change", - "text": "Badili", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Fungua tena @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "MAKE TIME", - "text": "TENGA MUDA", + "SourceText": "CHAT", + "text": "MAONGEZI", "type": "template", "note": "" }, { - "SourceText": "Set aside time to have a conversation without distractions.", - "text": "Tenga muda wa kufanya mazungumzo bila kubughudhiwa.", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Shirikisha jinsi unavyohisi, na muhimize kijana wako azungumzie pia wasiwasi wake. Mtaelewana vizuri zaidi na mnaweza kupanga pamoja mpango mzuri utakaowawezesha kuwa na afya njema na furaha!", "type": "template", "note": "" }, { - "SourceText": "LISTEN", - "text": "SIKILIZA", + "SourceText": "CAUTION", + "text": "TAHADHARI", "type": "template", "note": "" }, { - "SourceText": "Ask your teen questions and let them share their views without interrupting.", - "text": "Muulize kijana wako maswali na mwache atoe maoni yake bila kumkata kauli.", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Pata taarifa zako kutoka kwenye vyanzo vya taarifa vinavyoaminika, ili uweze kuwa na uhakika katika nyakati hizi za mashaka. Tunasikia na kuona habari nyingi kupitia watu wengine na simu, runinga, intaneti. Je, hali hiyo inakufanya uhisi mashaka, wasiwasi, hofu, hasira, au kuchanganyikiwa? Hakiki taarifa zako kabla ya kusambaza au kuchukua hatua!", "type": "template", "note": "" }, { - "SourceText": "WORK TOGETHER", - "text": "SHIRIKIANENI", + "SourceText": "CHOOSE", + "text": "CHAGUA", "type": "template", "note": "" }, { - "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", - "text": "Jadilini tatizo fulani, tafuteni ufumbuzi pamoja, na kila mmoja wenu afanye kile mnachokubaliana.", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Kufanya uchaguzi sahihi unaomfanya kila mtu kuwa salama na mwenye afya kunaweza kuwa jambo gumu. Hasa katika nyakati hizi! Unaweza kumsaidia kijana wako kufanya maamuzi mazuri.", "type": "template", "note": "" }, { - "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", - "text": "Mshukuru kijana wako kwa kukushirikisha mawazo yake na sisitiza jinsi kufanya hivyo kunavyowasaidia nyote wawili.", + "SourceText": "CHILL", + "text": "MFADHAIKO", "type": "template", "note": "" }, { - "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", - "text": "1. Vuta pumzi ndefu.\n2. Angalia kama habari ina mantiki.\n3. Uliza amepata wapi habari hiyo.\n4. Hakiki kwa watu/vyanzo vingine unavyoviamini.\n5. Kama utasambaza habari hii, fikiria kama itawasaidia au kuwatisha tu watu.", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Kuna wakati sisi sote huhisi mfadhaiko. Vuteni pumzi ndefu au fanyeni pamoja jambo la kufurahisha. Kuifanya nyumba yako kuwa yenye furaha na amani kunaweza kuleta mabadiliko makubwa! Hapa kuna mawazo kadhaa unayoweza kuyajaribu:", "type": "template", "note": "" }, { - "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", - "text": "Kuna wakati sisi sote tunataka kuwaambia vijana wetu \"Lazima ufanye hivi, la sivyo... utapata tabu!\", lakini mara nyingi hiyo haiwafanyi wafuate sheria vizuri zaidi. \n\nBadala yake, unaweza kumsaidia kijana wako kufanya maamuzi mazuri kwa kuonyesha unamwamini na kuzungumza naye:", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Mawazo hasi hutufanya tuseme na kufanya mambo hasi. Jaribu kubadili unachofikiri na unachosema kutoka kuwa hasi hadi kuwa chanya!", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "JADILINI ATHARI", + "SourceText": "WHO Website", + "text": "Tovuti ya Shirika la Afya Duniani", "type": "template", "note": "" }, { - "SourceText": "Ask \"If you do this, what could happen?\"", - "text": "Uliza \"Ukifanya hivi, ni nini kinachoweza kutokea?\"", + "SourceText": "UNICEF Website", + "text": "Tovuti ya UNICEF", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "USIFIAJI", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Malezi wakati wa UVIKO-19 ni magumu. Jisikie fahari kwa kufika mbali hivi.\n\nTunashughulikia maudhui mapya hapa ili kukusaidia kuzungumza na vijana na watoto wako kuhusu UVIKO-19.\n\nTaarifa mpya zaidi kuhusu UVIKO-19 zinapatikana kwenye tovuti za Shirika la Afya Duniani na UNICEF:", "type": "template", "note": "" }, { - "SourceText": "If something goes well, praise your teen!", - "text": "Kama kitu flani kimeenda vizuri, msifie kijana wako!", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya UNICEF.", "type": "template", "note": "" }, { - "SourceText": "REFLECT TOGETHER", - "text": "TAFAKARI PAMOJA", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "Anuani ya tovuti ni https://www.unicef.org/coronavirus/covid-19", "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "Kama kitu flani kimeenda vibaya, jiulize \"Ungeweza kufanya kwa namna gani tofauti?\"", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Kitufe hiki kitakupeleka sehemu inayohusu Virusi vya Korona kwenye tovuti rasmi ya Shirika la Afya Duniani.", "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "ANZA KIDOGO", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "Anuani ya tovuti ni https://www.who.int/emergency/diseases/novel-coronavirus-2019", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Mpatie kijana wako majukumu madogo kwanza. Kama hayo yataenda vizuri, unaweza kuongeza zaidi kuonesha kwamba unamuamini kijana wako.", + "SourceText": "Update my parenting experiences", + "text": "Sasisha uzoefu wangu wa malezi", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Lengo lako lilikuwa kuzungumza na kijana wako mkiwa wawili. Tumeona kuwa umebofya @data.habit.spend_time.in_text_title – hongera sana kwa kukumbuka!", - "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." - }, - { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Lengo lilikuwa kuwa na muda wa pamoja na kijana wako.", + "SourceText": "Update my personal details", + "text": "Sasisha taarifa zangu binafsi", "type": "template", "note": "" }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "Hongera sana kwa kutafuta njia za kutatua changamoto zako. Nenda ukazijaribu. Uhusiano wako na kijana wako utaimarika zaidi na zaidi!", + "SourceText": "Update my @global.workshop options", + "text": "Sahihisha machaguo yangu ya @global.workshop", "type": "template", - "note": "" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "DAY – Do it every day", - "text": "SIKU – Fanya kila siku", + "SourceText": "Support Contacts", + "text": "Mawasiliano ya Msaada", "type": "template", "note": "" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "CHEZA – Mwache kijana wako achague shughuli", + "SourceText": "Quick Parenting Tips", + "text": "Vidokezo vya Malezi vya Haraka", "type": "template", "note": "" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "KAA – Mpe kijana wako usikivu wako wote", + "SourceText": "You will find the in-week messages from the previous @global.workshops here.", + "text": "Utapata jumbe za @global.workshops za wiki iliyopita hapa. ", "type": "template", - "note": "" + "note": "The string @global.workshops should not be translated." }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Kwa nini kidokezo hiki kilikufaa?", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Bado haujaongeza shughuli zozote kwenye @global.my_activities. Kwanini usichague baadhi ya shughuli?", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "\"@local.choice_1\" kilifaa kwa sababu...", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Bado haujaongeza shughuli zozote za kupumzika kwenye @global.my_relaxes. Kwanini usichague baadhi ya shughuli?", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "\"@local.choice_2\" kilifaa kwa sababu...", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "Utapata hapa vidokezo tunavyoona kuwa ni vya muhimu, kutokana na majibu uliyoyatoa wakati wa kurekebisha programu hii.", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "\"@local.choice_3\" kilifaa kwa sababu...", + "SourceText": "Relaxation activities", + "text": "Shughuli za kuburudisha", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "" }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Kuwa na muda maalum wa kufanya jambo hili hunisaidia kukumbuka.", + "SourceText": "Something fun to do with your teen", + "text": "Kitu cha kufurahisha cha kufanya na kijana wako", "type": "template", "note": "" }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Kwa kuweka utaratibu, mimi na kijana wangu tunaweza kupata muda wa ziada kwenye ratiba zetu.", + "SourceText": "I need help with:", + "text": "Ninahitaji msaada na:", "type": "template", "note": "" }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Kutumia muda pamoja na kijana wangu kila siku, husaidia kujenga kuaminiana.", + "SourceText": "Technical Support", + "text": "Msaada wa Kiufundi", "type": "template", "note": "" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Naam, hata dakika 10 tu za kuwa pamoja huleta mabadiliko makubwa – kufanya hivyo hurahisisha kulipangia ratiba, sambamba na kazi yako na shughuli zako za nyumbani!", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "Je, unapata matatizo yoyote ya kiufundi? Tujulishe ili kutusaidia kuboresha @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "Kuwaruhusu vijana wangu wachague kitu cha kufanya huwajengea kujiamini.", + "SourceText": "Type your name (optional)", + "text": "Andika jina lako (hiari)", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "Kama kijana wangu akichagua kitu cha kufanya, kuna uwezekano mkubwa akataka tutumie muda pamoja.", + "SourceText": "Contact me on @global.whatsapp", + "text": "Wasiliana nami kwa @global.whatsapp", "type": "template", - "note": "" + "note": "The string @global.whatsapp should not be translated." }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "Kumwacha kijana wangu achague kunaonyesha kuwa ninajali mambo anayoyapenda.", + "SourceText": "Type your phone number", + "text": "Andika namba yako ya simu", "type": "template", "note": "" }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Kukubali maoni ya kijana wangu, kunaonyesha kuwa ninamsikiliza.", + "SourceText": "Contact me via email", + "text": "Wasiliana nami kwa barua-pepe", "type": "template", "note": "" }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "Kusema vizuri kuhusu chaguo la kijana wangu kunamsaidia kuhisi kuwa anathaminiwa.", + "SourceText": "Type your email address", + "text": "Andika anuani yako ya barua-pepe", "type": "template", "note": "" }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Kweli kabisa! Na vijana wetu wakichagua, wanahamasika pia kuwajibika kwenye nyanja nyingine za maisha yao.", + "SourceText": "Tell us about your issue", + "text": "Tueleze tatizo lako", "type": "template", "note": "" }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Kwa kuacha kuingilia anapoongea, ninamuonyesha kijana wangu kuwa yeye ni muhimu zaidi.", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Mara ya kwanza mama yangu aliponiuliza kama ninataka kutumia muda pamoja naye, nilimwambia aniache kwa sababu nilikuwa katikati ya mchezo. Lakini alisisitiza kama anavyofanya kila wakati. Nilimwambia aniangalie ninavyocheza kama hicho ndicho alichokuwa anakitaka. Baada ya dakika kadhaa, alianza kuniuliza maswali kuhusu mchezo huo. Mwanzoni ilikuwa inakera, lakini baada ya muda nilifurahi kwamba hatimaye alikuwa akivutiwa na kile nilichokuwa nikikifanya. Aliweza hata kujaribu!", "type": "template", "note": "" }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Hata kama siwezi kujiunga na shughuli ya kijana wangu, kama michezo, bado ninaweza kumshabikia.", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "Baba yangu aliniambia ninacheza mno mpira wa kikapu baada ya kutoka shule, kwa hiyo ni lazima tuweke sheria ya familia. Aliahidi kuwa tutafikiria suluhisho pamoja, ili sisi sote tujisikie vizuri kuhusu jambo hili. Sikuamini kuwa itawezekana lakini nikasema, \"Sawa, ngoja tujaribu\". Tulijadili na kukubaliana kuwa sheria itakuwa kwamba ninaruhusiwa kucheza mpira wa kikapu baada ya kufanya kazi ya nyumbani hadi tunapoenda kula chakula cha usiku. Inaniwia vigumu kwenda kucheza na marafiki zangu baada ya kutoka shule, kwa hiyo ninajitahidi kadri ya uwezo wangu kumaliza kwanza kazi ya nyumbani halafu ndipo ninaenda kucheza nao. Sasa hivi ninapata pia muda wote wa jioni kwa ajili ya kufanya mambo mengine, kama kutazama Ligi ya Mpira wa Kikapu ya Marekani.", "type": "template", "note": "" }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Ninapokuwa makini, ninajifunza mengi mno kuhusu mtazamo, uwezo na mambo anayoyapendelea kijana wangu.", + "SourceText": "Options", + "text": "Machaguo", "type": "template", "note": "" }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "Ndiyo! Kama tutawapa vijana wetu usikivu wetu wote, kuna uwezekano mkubwa nao wakafanya hivyohivyo tutakapowaomba wafanye kitu wakati ujao!", + "SourceText": "Question Time", + "text": "Muda wa Maswali", "type": "template", "note": "" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Wazazi wengi wanapata changamoto za kuzungumza na vijana wao wakiwa wawili.\n\nZifuatazo ni changamoto kuu 8 wazazi walizotuambia kuwa wanazipata wanapopanga au wanapotumia muda pamoja na vijana wao wakiwa wawili. Kama ulipata changamoto mojawapo kati ya hizi au una wasiwasi kuwa itakutokea, ibofye ili kupata suluhisho linaloweza kutumiwa. Baadaye, unaweza kubofya na kujifunza changamoto nyingine.", + "SourceText": "It's time for some questions!", + "text": "Sasa ni muda wa kuuliza maswali!", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "Je, ulipata changamoto zozote ulipojaribu kutumia muda na kijana wako?", + "SourceText": "Read Together", + "text": "Soma Pamoja", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "Ulipata changamoto gani ulipojaribu kutumia muda pamoja na kijana wako?", + "SourceText": "Let's read a story together!", + "text": "Hebu tusome hadithi pamoja!", "type": "template", "note": "" }, { - "SourceText": "I don’t have enough time.", - "text": "Sina muda wa kutosha.", + "SourceText": "Let's read a story!", + "text": "HebuTusome hadithi!", "type": "template", "note": "" }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "Kijana wangu hataki kutumia muda pamoja na mimi.", + "SourceText": "Let's see how this week has been.", + "text": "Ngoja tuone wiki hii imeendaje.", "type": "template", "note": "" }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "Kijana wangu anataka tu kutazama runinga au kuchezea simu yake.", + "SourceText": "This week you have done...", + "text": "Wiki hii ulifanya...", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "Kijana wangu anataka kufanya mambo yasiyo salama au vitu vinavyogharimu pesa.", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "Unaonyesha kujitoa kwa dhati kama mzazi na kujithamini wewe mwenyewe.\n\nWewe ni mtu mzuri sana.", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "Kijana wangu anataka kufanya vitu ambavyo mwili wangu hauwezi kuvifanya.", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Zoezi la nyumbani husaidia kuboresha maisha ya familia zetu kuwa mazuri zaidi. Lakini mara nyingi huleta changamoto.\n\nNgoja tushirikishane mafanikio na changamoto zetu, na kusaidiana kupata mawazo mapya ya kujaribu!", "type": "template", "note": "" }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "Kijana wangu alichagua shughuli ya kushindana. Nilishinda halafu akakasirika.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Nilihangaika kusitisha muda wa pamoja.", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Mfano wa majadiliano kutoka @data.workshop.w_1on1.title", "type": "template", - "note": "" + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Watoto wangu wote wanataka muda wa pamoja kwa wakati mmoja.", + "SourceText": "Relax Together", + "text": "Chukua Pumziko Pamoja", "type": "template", "note": "" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "Ndiyo, inaweza kuwa vigumu sana kupata muda wakati wa mchana, kwa sababu ya kazi, shughuli za nyumbani, na mambo mengine yote.", + "SourceText": "Relax", + "text": "Chukua pumziko", "type": "template", "note": "" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Tunasikitika kwamba jambo hilo lilikusumbua. Inaweza kutufanya tujisikie vibaya kama watoto wetu hawataki kutumia muda wa pamoja na sisi.", + "SourceText": "Let’s do a short relaxation activity together. It will only take a moment and you will feel more relaxed.", + "text": "Hebu tufanye shughuli moja fupi ya kuchukua pumziko. Itachukua muda mfupi na utajisikia vizuri zaidi.", "type": "template", "note": "" }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Fikiria muda ambao kijana wangu anakuwa wazi zaidi kwangu, kama vile asubuhi au muda mfupi kabla ya kwenda kulala.", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Ongeza shughuli hii kwenye @global.my_relaxes", "type": "template", - "note": "" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Kukaa karibu na kijana wangu anapofanya kitu anachofurahia na kuonesha kuvutiwa na kile anachopenda.", + "SourceText": "Listen and relax", + "text": "Sikiliza na chukua pumziko", "type": "template", "note": "" }, { - "SourceText": "Do something fun with the whole family.", - "text": "Fanya kitu cha kufurahisha na familia yote.", + "SourceText": "Read and relax", + "text": "Soma na chukua pumziko", "type": "template", "note": "" }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Vizuri sana! Kuchagua muda ambao kijana wako anapenda kuzungumza kutamsaidia kuitikia vizuri jitihada zako za kuwasiliana naye.", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufanya uwe na furaha. Halafu vuta pumzi ndefu ili kujisikia vizuri.", "type": "template", "note": "" }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Safi! Kuangalia pamoja kipindi cha runinga au mechi inayopendwa na kijana wako kutamuonesha kuwa unamjali. Vumilia tu; baada ya muda ataanza kuwa wazi kwako!", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Fumba macho yako.\n\nChunguza uhusiano wako na ardhi iliyo chini yako.\nJe, ni sehemu gani za mwili wako zinagusa ardhi? Je, ni sehemu gani za mwili wako hazigusi ardhi?\nChunguza mahali palipo na joto na mahali palipo na baridi.\nGusa ardhi iliyo chini yako inayokubeba. Acha mwili wako uzame na kubebwa na ardhi.", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Vizuri sana! Wakati mwingine inaweza kuwa rahisi zaidi kuanza kwa kutumia muda pamoja na familia nzima. Kwa njia hiyo, hatimaye kijana wako atajiamini zaidi kutumia muda pamoja na wewe mkiwa wawili tu.", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Jaribu kufanya hivyo utakapojisikia tena kuwa mpweke au unapofanya shughuli zinazochosha kama kuosha vyombo baada ya kula. Kunasaidia kweli!", "type": "template", "note": "" }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "Tunasikitika kusikia kuwa ulipata changamoto hiyo. Mara nyingi watoto wanapenda kutumia muda wao wakitazama runinga au kuchezea vifaa vya kielektroniki. Hongera kwa kumvumilia kijana wako!", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Kaa chini na ufumbe macho yako.\nJe, unaweza kusikia sauti ngapi?\nSikiliza sauti za ndani na nje ya chumba. Zihesabu kwa vidole vyako.\nBaada ya sekunde kumi, umefikisha vidole vingapi? Ulisikia sauti zipi?\n\nJaribu tena kwa sekunde kumi.\nJe, umesikia sauti zozote mpya? Je, umesikia sauti zozote ndani ya mwili wako mwenyewe?\nChunguza jinsi unavyohisi sasa.", "type": "template", "note": "" }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Pendekeza vitu vya kufurahisha ambavyo mimi na kijana wangu tunaweza kuvifanya pamoja.", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Fumba macho yako.\n\nJe, huwa unahisi kitu kwa nguvu sana kiasi kwamba huwa unataka kukikimbia?\n\nBadala ya kuikimbia hisia hiyo, hebu tuikimbilie kwa muda.\nSi vibaya. Fumba macho yako kama unajisikia raha mustarehe. Vuta pumzi ndefu.\n\nKuwa mdadisi. Je, unaisikia wapi kwenye mwili wako? Je, ni ya moto au baridi? Je, ni ngumu au laini? Je, imekakamaa au imelegea?\nJiulize maswali kadhaa. Je, inaniambia nini? Je, inahitaji nini? Je, ninawezaje kujitendea wema sasa hivi?", "type": "template", "note": "" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Tafuta kitu cha kuelimisha cha kufanya na kijana wangu kwenye kifaa cha kielektroniki.", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Hapa kuna kitu cha kufurahisha cha kukusaidia kuondokana na msongo wa mawazo:\n\nChagua wimbo unaoendana na kile unachohitaji kwa sasa. Je, unahitaji wimbo wa taratibu ili kuibembeleza nafsi yako iliyochoka au unahitaji wimbo wa kuchangamsha ili kukusaidia kuondoa msongo wa mawazo kwa kiasi fulani?\n\nWeka nafasi na uchezeshe mwili wako kulingana na muziki. Kumbuka kuvuta pumzi unapocheza. Fanya pumzi yako iendane na miondoko yako.", "type": "template", "note": "" }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Kumuomba kijana wangu anioneshe jinsi simu yake au kifaa chake cha kielektroniki kinavyofanya kazi.", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Hata kucheza kwa dakika chache tu kunaweza kutosha kuondoa msongo wa mawazo na kuchangamsha hisia zako!", "type": "template", "note": "" }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "Hiyo ni nzuri sana! Kama unahitaji hamasa, haya hapa mawazo kutoka familia nyingine kuhusu mambo mnayoweza kufanya pamoja. Kumbuka, mwachie kijana wako achague.", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Fumba macho yako.\nTumia muda kuhisi ardhi iliyopo chini ya miguu yako.\nFikiria kuhusu jambo unalolishukuru.\nMakinikia upumuaji wako.\nVuta pumzi na kuzishusha.\n\nVuta na kushusha pumzi.", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Safi sana! Kuna programu nyingi sana kwenye simu zinazoelimisha na kufurahisha mnazoweza kuzitafuta pamoja. Uliza maswali, onyesha shauku, na kumbuka kusema kitu fulani vizuri.", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Habari! Unajisikiaje sasa hivi? Furaha, huzuni, hasira, taharuki, wasiwasi?\n\nChunguza mahali unapohisi hali hiyo kwenye mwili wako. Chunguza ni mawazo yapi yanayohusiana na hisia hiyo. Vuta pumzi ndefu.", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Vizuri! Vijana wanafurahi sana unapoonesha kuvutiwa na vifaa vyao vya kielektroniki au unapowaomba wakueleze kitu fulani wanachokijua. Huu ni mwanzo mzuri sana!", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Hongera kwa kutumia muda ili kuangalia hisia na mawazo yako!", "type": "template", "note": "" }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Hauko peke yako hapa. Wakati mwingine, wazazi wengi wanakabiliwa pia na changamoto hii. Kila mara, muda wa kuzungumza wawili unapaswa kuwa salama, na haulazimiki kugharimu chochote!", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "Hebu tufanye mazoezi ya mbinu ya kutulia tunayoiita ‘Kata Umeme’.\n\nWeka miguu yako kwenye ardhi halafu vuta pumzi na kuzishusha mara tatu polepole kadri uwezavyo. Fikiria kama unanusa maua au unazima mshumaa.\n\nTa Da! Kata Umeme!", "type": "template", "note": "" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Kuwaelezea vijana wangu kwa nini pendekezo lake sio salama au linawezekana, na kumuomba mawazo mengine.", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Hii ni mbinu nzuri ya kutumia unapohisi kuvunjika moyo kwa sababu itasaidia kukutuliza.", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Pendekeza shughuli nyingine za kufurahisha tunazoweza kufanya pamoja.", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Kujisifia kunaweza kusaidia sana, hasa kwenye siku zinazotuendea vibaya.\n\nFikiria jinsi wiki ilivyokuendea halafu umalizie tungo ifuatayo: \"Wiki hii, ninajivunia kwa…\" Kinaweza kuwa kitu chochote, siyo mambo ya malezi tu!\n\nFikiria jambo moja ulilofanya vizuri leo. Sasa jifumbate kwa mikono yako mwenyewe halafu UJIKUMBATIE kwa nguvu!", "type": "template", "note": "" }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Vizuri! Ni muhimu sana kijana wako aelewe kwa nini huwezi kufanya shughuli aliyoipendekeza. Muombe atoe mawazo mengine!", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Kaa kwa raha mustarehe halafu ufumbe macho yako.\n\nTambua kinachokutokea muda huu. Unafikiria nini? Je, mawazo yako ni chanya au hasi? Je, unahisije? Je, unahisi kufurahi au kutofurahi? Je, mwili wako unahisije? Je, unahisi wasiwasi au umetulia?\n\nHusiana na moyo wako kwa wema na upole. Unaweza kuhitaji kuweka mkono mmoja kwenye moyo wako au kifuani. Sema kimoyomoyo maneno yafuatayo:\n\nNinaomba niwe na amani.\nNinaomba niwe salama.\nNinaomba niwe na afya.\nNinaomba niwe na furaha.\nNa upendo uwe kwenye familia yangu.\nNinaomba nihisi kupendwa.", "type": "template", "note": "" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Safi kabisa! Kama unahitaji hamasa zaidi, unaweza kupata mapendekezo ya shughuli mbalimbali kwenye @data.parent_centre.relax_and_activities.location_text. Kumbuka, mwache kijana wako achague shughuli!", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Tumia muda kutafakari hali uliyoipitia. Chunguza kama unahisi tofauti yoyote.", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Tunasikitika kusikia hivyo. Vijana wetu wanaweza kusikitika tusipoweza kufanya kile wanachotaka, kama vile kucheza michezo au kufanya shughuli nyingine zinazohitaji kutumia nguvu nyingi za mwili. Lakini kumbuka, kilicho muhimu zaidi ni kwamba tunatumia muda pamoja nao. Kufanya hivyo kunaleta mabadiliko kwa kila mtu!", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Hatua ya Kwanza. Fumba macho yako halafu uvute pumzi ndefu.\n\nHatua ya Pili. Jiulize, \"Je, ninafikiria nini?\" Chunguza kama mawazo yako ni chanya au hasi.\nAngalia jinsi unavyojihisi. Chunguza kama mihemuko yako ni ya kufurahisha au kutofurahisha. Jikumbushe kwamba chochote unachohisi, si kibaya.\nChunguza jinsi mwili wako unavyohisi. Chunguza kitu chochote kinachoumiza au kinacholeta wasiwasi.\n\nHatua ya Tatu. Makinikia upumuaji wako. Hisi pumzi yako inapoingia na kutoka. Unaweza kuweka mkono kwenye tumbo lako na kuhisi linavyopanda na kushuka kwa kila pumzi. Fanya hivyo kwa mipumuo kama 10.\n\nHatua ya Nne. Panua ufahamu wako kuhusu mwili wako wote. Sikiliza sauti zilizomo chumbani.\n\nHatua ya Tano. Tumia muda kutafakari iwapo unahisi mabadiliko au la. Ukimaliza, fumbua macho yako.", "type": "template", "note": "" }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Kumwangalia kijana wangu akifanya shughuli na kumshabikia.", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "Hongera kwa Kutulia. Unaweza kufanya hivyo wakati wowote unapohisi msongo wa mawazo. Kufanya hivyo kunakupa nafasi ya kutulia zaidi. Hata kuvuta pumzi ndefu mara chache au kuhusiana na ardhi iliyopo chini yako kunaweza kuleta mabadiliko. Unaweza pia Kutulia pamoja na watoto wako!", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Pendekeza shughuli nyingine za kufurahisha tunazoweza kufanya pamoja.", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Kaa chini, fumba macho yako na usikilize pumzi yako inapoingia na kutoka.\n\nChunguza jinsi unavyohisi.\n\nUnapomaliza, fumbua macho yako tena.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Vizuri sana! Hata kama unatazama badala ya kufanya shughuli pamoja, unaweza kuonesha kuvutiwa kwa kuelezea na kusifia anachokifanya kijana wako!", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Jaribu kufanya hivyo wakati wowote unapohisi msongo wa mawazo na unahitaji kupumzika ili kurudi tena kwenye hali ya kawaida.", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Safi kabisa! Kama unahitaji hamasa zaidi, unaweza kupata mapendekezo ya shughuli mbalimbali kwenye @data.parent_centre.relax_and_activities.location_text. Kumbuka, mwache kijana wako achague shughuli!", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Simama na unyooshe mikono yako juu angani. Sukuma mawingu yote na uache jua likuangazie. Jinyooshe kwenda kulia na kushoto. Jinyooshe kwenda mbele na nyuma.\n\nAcha mkono wako uning'inie ubavuni mwako. Kaza mabega yako na kuyapandisha hadi kwenye masikio yako huku ukipumua, bana macho yako, na ushikilie pumzi yako. Legeza mabega yako wakati unapolegeza mwili wako.\n\nLegeza mikono yako na uibembeze ubavuni, halafu binua upande wa juu wa kiwiliwili chako. Mikono yako inapaswa kupiga polepole mgongo wako unapojigeuza kutoka upande mmoja hadi mwingine.\n\nWeka mguu mmoja mbele ya mwingine na fanya miduara midogo kwa kutumia vifundo vya miguu. Kumbuka kugeukia pande zote mbili. Kila mguu ufanye miduara minne kwa kila upande.\n\nSasa tikisa mwili wako wote haraka kadri uwezavyo. Tikisa upande wa juu kabisa! Tikisa upande wa chini kabisa! Tikisa mwili wote!\n\nFumba macho yako na uinue mikono yako polepole kuzidi kichwa chako huku ukivuta pumzi. Teremsha mikono yako polepole kuelekea ubavuni mwako huku ukishusha pumzi.\n\nTumia muda kutafakari hali uliyoipitia.", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Wakati mwingine hii hutokea! Michezo ya kushindana inaweza kuwa na changamoto kwa vijana (na watu wazima) kama wanashindwa kupokea kushindwa.", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "Hongera! Unaweza kufanya shughuli hii wakati wowote unapohisi kama unahitaji kuondoa msongo wa mawazo na kutia nguvu akilini na mwilini mwako.", "type": "template", "note": "" }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Pendekeza shughuli nyingine tunazoweza kufanya pamoja badala ya kushindana.", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Tengeneza orodha ya shughuli zinazoleta afya unazopenda kufanya. Hizi ni baadhi ya mapendekezo:\n* Kusikiliza muziki unaoupenda\n* Kwenda matembezini (kama inaruhusiwa)\n* Kufanya mazoezi\n* Kunywa kikombe cha chai peke yako\n* Kumpigia rafiki simu\n* Kuimba, kucheza, kusali, au kusoma\n* Kuketi juani huku umefumba macho\n* Kutazama kipindi cha runinga unachokipenda\n\nChagua shughuli moja na uifanye leo!", "type": "template", "note": "" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Cheza mchezo katika timu, ili niweze kumtia moyo kijana wangu kama timu yetu itashindwa.", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "Unapojitunza wewe mwenyewe, unawatunza watoto wako. Sisi sote tunahitaji kuhusiana. Kila siku, jaribu kuzungumza na marafiki, familia, na mitandao mingine inayosaidia. Kama umepita muda tangu ulipowasiliana na mtu fulani, fanya hivyo sasa!", "type": "template", "note": "" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Kumbuka, muache kijana wako achague! Unaweza kupata mapendekezo ya shughuli unazoweza kufanya na kijana wako @data.parent_centre.relax_and_activities.location_text, kama utahitaji.", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Jambo linalokukasirisha? Je, linatokea wakati gani? Je, kwa kawaida, mwitikio wako huwa ni upi?\n\nZuia hasira kabla hata haijapanda. Unapokuwa umechoka, lala usingizi au pumzika. Unapokuwa na njaa, jaribu kula kitu. Unapokuwa mpweke, omba msaada kwa mtu.", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "Kama wewe na kijana wako mko kwenye timu moja, unaweza kumsaidia kudhibiti hisia zake kama timu yenu itashindwa.", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Kudhibiti hasira kunaweza kuwa kugumu. Pumzika unapohisi unawakasirikia watoto wako au mtu mwingine.\n\nNenda mahali pengine kwa dakika 5 ili uweze kudhibiti tena hisia zako. Kama una mahali salama nje, nenda nje. Una uwezo wa kulimaliza jambo hili!", "type": "template", "note": "" }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "Ndiyo, kufikia mwisho wa muda wa pamoja kunaweza kuwa mgumu.", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Fumba macho yako.\n\nHebu tutumie maajabu ya namba tatu ili tuendelee kuwepo na kupumzika.\n\nTaja sauti tatu unazoweza kuzisikia sasa hivi.\nTaja harufu tatu unazoweza kuzinusa sasa hivi.\nTaja vyakula vitatu unavyovipenda.\n\nJe, ni mambo gani matatu unayoshukuru kuwa yapo sasa hivi? Si lazima yawe makubwa.", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Sema kwa kijana wangu, \"Tuna dakika moja kabla ya kufikia mwisho wa muda wa pamoja leo\", ili kijana ajiandae.", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "Wakati siku ngumu inapofikia mwisho, kufikiria vitu vitatu vya kuweza kufurahia inaweza kutusaidia kupata ujasiri wa kujaribu tena kesho.", "type": "template", "note": "" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Nimjulishe kijana wangu kuhusu muda kiasi ninao kwa ajili ya kutumia pamoja, halafu nimuombe aufuatilie kwenye saa.", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Fumba macho yako na ufikirie siku ya leo.\n\nTaja jambo moja unaloshukuru kuwepo.\nTaja jambo moja ulilolifanya vizuri.\nTaja jambo moja unalolipenda.", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Pangilia kutumia muda pamoja na kijana muda mfupi kabla ya shughuli nyingine ambayo kijana wangu anaifurahia.", + "SourceText": "Well done, you are a hero!", + "text": "Hongera, wewe ni shujaa!", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Vizuri sana! Kwa kumjulisha mapema kijana wako, mwisho wa muda wa pamoja hatukuja kwa kushtukiza. Pia, unaweza kumkumbusha kijana wako kwamba utatumia muda pamoja naye tena kesho.", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Fumba macho yako.\n\nTumia maajabu ya namba tatu ili uendelee kuhusiana na kupumzika.\n\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nVuta pumzi kwa kuhesabu mara tatu. 1, 2, 3.\nShusha pumzi kwa kuhesabu mara tatu. 1, 2, 3.", "type": "template", "note": "" }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Vizuri sana! Kwa njia hiyo, kijana wako ana jukumu la kuangalia muda na atatambua muda unapokaribia kuisha. Mkumbushe kuwa mtatumia tena muda wa pamoja kesho.", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "Je, unahisi tofauti yoyote? Kuvuta pumzi ndefu husaidia mwili wetu wote na akili kutulia.\n\nWewe ni mshindi!", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Vizuri sana! Kama mtatumia muda wa pamoja muda mfupi kabla ya chakula cha usiku, unaweza kusema kwa furaha, \"muda wetu wa pamoja umeisha. Tujiandae kwa chakula cha usiku pamoja na familia nzima!\"", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Fumba macho yako.\n\nSikiliza pumzi yako inapoingia na kutoka mara tano.\n\nChunguza jinsi unavyohisi.", "type": "template", "note": "" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Wazazi wengi hukabiliwa na hali hii. Inaweza kuwa vigumu kutumia muda wa pamoja na vijana wetu mmojammoja kama tuna watoto zaidi ya mmoja.", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Ukimaliza, fumbua macho yako tena. Una uwezo wa kudhibiti hali yako!", "type": "template", "note": "" }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Muombe mtu mzima mwingine au ndugu mkubwa kuwaangalia watoto wadogo wakati wa kutumia muda wa pamoja na kijana wangu tukiwa wawili.", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Fumba macho yako. \n\nTumia dakika moja kufikiria siku ya leo.\n\nFikiria jambo moja chanya au la kufurahisha ulilolifanya.\nJisifie kwa jambo moja ulilolifanya vizuri leo. \nFikiria jambo moja unaloweza kulifanya tofauti kesho.  \n\nFikiria jambo moja unalolishukuru.", "type": "template", "note": "" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Tafuta wakati ambao watoto wengine hawapo karibu halafu tumia muda wa pamoja na kijana wangu.", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breathe in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Fumba macho yako.\n\nJe, watototo wako wamewahi kukufanya ujihisi kupiga yowe?\n\nJipe sekunde 10 za kupumzika. Vuta pumzi ndani na nje taratibu mara 5.\n\nBaadae jaribu kujibu kwa hali ya utulivu.", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Panga kutumia muda wa pamoja mahali pengine pasipokuwa nyumbani.", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Mamilioni ya wazazi wanasema kufanya hivyo kunasaidia – TENA SANA.", "type": "template", "note": "" }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Safi sana! Kwa njia hii, unaweza kuweka usikivu wako wote kwa kijana wako, ili ajisikie kuthaminiwa na kupendwa.", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Fumba macho yako.\n\nAcha kwa muda kile unachokifanya ili uhusiane na pumzi yako.\n\nJe, ni jambo gani moja unalolishukuru sasa hivi?\nJe, ni jambo gani moja linalokuletea furaha?\nJe, ni jambo gani moja unalolipenda?\n\nSi lazima yawe makubwa. Wakati mwingine mambo madogo maishani ndiyo muhimu zaidi!", "type": "template", "note": "" }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Vizuri sana! Unaweza kujaribu kutumia muda pamoja na kijana wako pindi watoto wengine wanapokuwa tayari wameenda kulala, au wanacheza nje.", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Hapa kuna shughuli ya kupumzisha mwili wako:\n\nKaa kwa utulivu halafu ufumbe macho yako ukiweza.\nVuta picha kuwa pete ya dhahabu inauchunguza mwili wako kuanzia unyayoni hadi utosini.\nSikiliza kwa makini pindi inapojongea kwenda juu na chini ya mwili wako. Je, kuna maeneo yoyote yaliyokakamaa? Yaliyo na ganzi? Yaliyo na maumivu?\nTulia kwenye maeneo hayo kwa muda. Vutia pumzi kwenye eneo hilo na, unaposhusha pumzi, jaribu kuachilia hali yoyote ya kukakamaa au ya maumivu.\nFanya hivi kwa kuvuta pumzi kadhaa.\n\nFumbua macho yako. Je, mwili wako unahisije sasa?", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Vizuri sana! Pengine mnaweza kutembea pamoja kwenda dukani au kwenda kutazama michezo, ili muweze kuzungumza bila watoto wengine kutaka uwasikilize.", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "Unaweza pia kujaribu hii kwa wakati mwingine ukijikuta umelala kitandani na usingizi hauji!", "type": "template", "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako. Tumeona kuwa umebofya @data.habit.instruct_positively.in_text_title – hongera sana kwa kukumbuka!", + "SourceText": "Start", + "text": "Anza", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Zoezi lako la nyumbani lilikuwa kujaribu kutoa maelekezo YANAYOTEKELEZEKA, CHANYA na SAHIHI kwa kijana wako.", + "SourceText": "Choose your language", + "text": "Chagua lugha yako", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Asante kwa kushirikisha wengine! Hongera kwa kujaribu kumpa kijana wako maelekezo chanya na kwa kujenga uhusiano chanya na kijana wako.\n\nKijana wako anastahili kusifiwa – kama WEWE pia!", + "SourceText": "Please sign in with your Google account to use the app.", + "text": "Tafadhali ingia kwenye programu kwa kutumia akaunti yako ya google.", "type": "template", "note": "" }, { - "SourceText": "Which of the tips helped you?", - "text": "Vidokezo vipi vilikusaidia?", + "SourceText": "Sign in with Google", + "text": "Ingia kwa kutumia Google", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "TAZAMA UHALISIA – Je, kijana wako anaweza kufanya kile unachotaka kumwagiza?", + "SourceText": "App Skin", + "text": "Aina ya Programu", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "KUWA NA MTAZAMO CHANYA - Tumia maneno chanya na msifie!", + "SourceText": "To get access to changing the app skin, enter your developer code in the box below and press @global.submit_button.", + "text": "Ili kupata uwezo wa kubadilisha kipindi, weka msimbo wako wa kubuni kwenye kisanduku kilicho hapa chini na ubonyeze @global.submit_button.", "type": "template", - "note": "" + "note": "The string @global.submit_button should not be translated." }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "ELEWEKA – Kuwa bayana na maalum!", + "SourceText": "You have entered an incorrect code.", + "text": "Umeingiza namba isiyo sahihi.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Safi sana! Tunapowaagiza vijana wetu wafanye jambo linalotekelezeka, ni rahisi zaidi kwao kufaulu.", + "SourceText": "Workshop", + "text": "Warsha", "type": "template", "note": "" }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Tunapowasifia vijana wetu, wanahamasika kutusikiliza tena!", + "SourceText": "Module", + "text": "Kipindi", "type": "template", "note": "" }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Safi! Tunapofikiria mapema maelekezo maalum ya kuwapa vijana wetu, inawawia rahisi sana kufuata maelekezo yetu!", + "SourceText": "Add this activity to @global.my_activities", + "text": "Ongeza shughuli hii kwenye @global.my_activities", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "Did you have any challenges?", - "text": "Je, ulipata changamoto zozote?", + "SourceText": "@global.parent_app funded by", + "text": "@global.parent_app imefadhiliwa na", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "What challenge did you have?", - "text": "Je, ulipata changamoto gani?", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "Imewezeshwa na Malezi kwa Maisha Marefu yenye Afya na wadau", "type": "template", "note": "" }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "Kijana wangu hakutaka kufuata maagizo.", + "SourceText": "Skip intro", + "text": "Ruka utangulizi", "type": "template", "note": "" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Sikupata muda wa kutumia pamoja na kijana wangu tukiwa wawili.", + "SourceText": "Bringing teenagers up is hard", + "text": "Kuwakuza vijana ni kazi ngumu", "type": "template", "note": "" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Nilitoa maagizo hasi badala ya maagizo chanya.", + "SourceText": "You are the best parent your teen could have", + "text": "Wewe ni mzazi bora sana ambaye kijana wako anaye", "type": "template", "note": "" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Nilimfokea kijana wangu wakati alipoonesha tabia hasi, badala ya kumpa maelekezo chanya ya nini anapaswa kufanya.", + "SourceText": "Join the over @local.number million parents who have used our resources", + "text": "Jiunge na zaidi ya mamilioni @local.number ya wazazi ambao wametumia rasilimali zetu", + "type": "template", + "note": "The string @local.number should not be translated." + }, + { + "SourceText": "Ideas from other families:", + "text": "Mawazo kutoka familia nyingine:", "type": "template", "note": "" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Changamoto kuu @local.number_of_challenges ambazo wazazi wengine wanazopitia:", + "SourceText": "Customise @global.parent_app", + "text": "Rekebisha @global.parent_app", "type": "template", - "note": "The string @local.number_of_challenges should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Najua; Watoto wetu wanahitaji muda wa kujifunza kufuata maelekezo. Kuwa na subira, jaribu tena, na ukumbuke kuwasifu kila wakati wanapofuata maelekezo!", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Kumbuka unaweza kupata vidokezo na rasilimali nyingi za kukusaidia kwenye @global.parent_centre – zinapatikana kwa ajili yako wakati wowote!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Je, unataka kujaribu kitu kimojawapo kati ya hivi vifuatavyo?", + "SourceText": "Customise for your needs", + "text": "Rekebisha kulingana na mahitaji yako", "type": "template", "note": "" }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Fikiria kutenga muda wa dakika tano au zaidi kila siku.", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Kila mzazi duniani anahangaika katika nyakati hizi ngumu. Maswali yafuatayo kuhusu uzoefu wako wa malezi yatatusaidia kukupa msaada unaohitaji.\n\nKuwa mkweli. Kumbuka kwamba hauko peke yako! Mamilioni ya wazazi wanahisi kama wewe, na sote tunastahili kusaidiwa.", "type": "template", "note": "" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Tafuta kazi ya nyumbani ambayo tunaweza kufanya pamoja kwa namna ya kufurahisha.", + "SourceText": "Thank you for being honest", + "text": "Asante kwa kuwa mkweli", "type": "template", "note": "" }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Namuomba kijana wangu au mtu mwingine kunisaidia kuifanya kazi ya nyumbani, ili niwe na muda kidogo wa ziada.", + "SourceText": "You selected \"I would rather not answer\"", + "text": "Umechagua \"Nisingependa kujibu\"", "type": "template", "note": "" }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Safi sana! Hata kutumia dakika 5 kunaleta mabadiliko, na ukifanya hivyo kwa muda uleule kila siku (kama vile wakati wa kifungua kinywa au kabla ya kwenda kulala), itakuwa rahisi zaidi kuendelea kufanya hivyo!", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Sawa!\n\nKumbuka, ukijibu swali hili jibu lako litakuwa siri na litatusaidia kukupa maudhui yatakayokufaa.", "type": "template", "note": "" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Safi sana! Kwa njia hiyo, unafanya kazi yako na kuwa na wakati wa kufurahisha pamoja na kijana wako!", + "SourceText": "Are there adults in your family?", + "text": "Je, kuna watu wazima kwenye familia yako?", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Vizuri sana! Kwa kushirikiana kutekeleza majukumu, utakuwa na muda zaidi wa kufanya jambo la kufurahisha na kijana wako – ni muhimu sana!", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "Programu hii inalenga wazazi wenye vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu!", "type": "template", - "note": "" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "Ndiyo, inachukua muda kuzoea kutoa maelekezo chanya – inafaa kujaribu tena! Fikiria tabia ambayo ungependa kuona kijana wako akizidi kuifanya na fikiria namna chanya za kutoa maagizo hayo!", + "SourceText": "Are there teens in your family?", + "text": "Je, kuna vijana kwenye familia yako?", "type": "template", "note": "" }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Ni vigumu kutoa maelekezo tukiwa bado tumekasirika. Jaribu kutafuta muda utakaokuwa umetulia ili kutoa maelekezo chanya kwa kijana wako.\n\nKatika warsha inayofuata ya @global.weekly_workshop, tutazungumzia zaidi namna tunavyoweza kudhibiti hisia zetu! Unaweza kupata shughuli zaidi za kujipumzisha kwenye @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "Programu hii inalenga familia zilizo na vijana wenye umri wa miaka @global.teen_age_bracket, lakini unakaribishwa kuendelea – unaweza pia kujifunza vitu muhimu kwa ajili ya familia yako!", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba. Tumeona kuwa umebofya @data.habit.money.in_text_title – hongera sana kwa kukumbuka!", + "SourceText": "Are you sure you want to skip this question?", + "text": "Je, una uhakika unataka kuruka swali hili?", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Lengo lako lilikuwa kutengeneza bajeti ya familia na mpango wa kuweka akiba.", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "Una uhakika unataka kuruka swali hili? Kumbuka, jibu lako litakuwa ni siri na litatusaidia kuelewa mahitaji yako ya malezi.", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Asante kwa kushirikisha uzoefu wako! Hongera sana kwa kufikiria jinsi unavyoweza kupanga bajeti na kuweka akiba na familia yako. Kufanya hivyo kutakusaidia sana kuweza kufikia malengo ya familia yako.\n\nKwa pamoja, mnaweza kufanikisha mambo mengi sana mazuri!", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Maudhui yaliyofunguliwa na maswali haya sasa yanapatikana kwenye @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "make a budget together with their family", - "text": "kutengeneza bajeti pamoja na familia yao", + "SourceText": "Talk Together", + "text": "Zungumza Pamoja", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "Je, mlipata changamoto zozote mlipokuwa mnatengeneza bajeti pamoja?", + "SourceText": "Share ideas, support each other!", + "text": "Shirikishana mawazo, saidiana kila mmoja!", "type": "template", "note": "" }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Je, jambo gani lilikuwia gumu wakati wa kutengeneza bajeti yenu pamoja?", + "SourceText": "Think Together", + "text": "Fikiria Pamoja", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Sikitaka kuwaambia familia yangu kiasi gani huwa napata.", + "SourceText": "It's time to think together!", + "text": "Sasa ni muda wa kufikiria pamoja!", "type": "template", "note": "" }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Sio lazima kuwaambia kiwango halisi cha kipato chako; unaweza kuwaambia makadirio. Unaweza kusema, \"Katika kaya hii, tunapata @global.currency@global.monthly_income_estimate kila mwezi\" badala ya, \"Ninapata @global.currency@global.monthly_income_precise\".", + "SourceText": "Think", + "text": "Fikiria", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "" }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Wakati wa kutengeneza bajeti, hatukuweza kukubaliana kitu gani kiwe mahitaji na kitu gani kiwe matamanio.", + "SourceText": "It's time to think!", + "text": "Ni muda wa kufikiria!", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Wakati mwingine, matamanio na mahitaji ya watu hutofautiana. Kuyazungumzia pamoja hukusaidia wewe na kijana wako kuelewana, kuheshimu tofauti zenu, na kutafuta mnapoweza kuafikiana.", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Hapa kuna ujuzi wa kujichukulia kwa wiki hii!\n\nZitumie nyumbani na utaweza kuzipata wakati wowote kwenye @global.parent_centre.", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "I did not understand what to do.", - "text": "Sikuelewa nini cha kufanya.", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Vuta pumzi ndefu.\n2. Angalia kama habari ina mantiki.\n3. Uliza amepata wapi habari hiyo.\n4. Hakiki kwa watu/vyanzo vingine unavyoviamini.\n5. Kama utasambaza habari hii, fikiria kama itawasaidia au kuwatisha tu watu.", "type": "template", "note": "" }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Nasikitika kusikia hili. Najua inaweza kuwa vigumu! Kwa nini tusipitie tena? Kijana wako au wanafamilia wengine wanaweza kujiunga na kukusaidia!", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Kuna wakati sisi sote tunataka kuwaambia vijana wetu \"Lazima ufanye hivi, la sivyo... utapata tabu!\", lakini mara nyingi hiyo haiwafanyi wafuate sheria vizuri zaidi. \n\nBadala yake, unaweza kumsaidia kijana wako kufanya maamuzi mazuri kwa kuonyesha unamwamini na kuzungumza naye:", "type": "template", "note": "" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "Kijana hakutaka kupanga bajeti na mimi.", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "JADILINI ATHARI", "type": "template", "note": "" }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Jaribu kwanza kupanga bajeti na watu wazima wengine katika familia yako. Kijana wako anaweza kuvutiwa na kile mnachofanya.\n\nKutengeneza bajeti kunaweza kuonekana ni jambo zito, lakini jaribu kulifanya kuwa la kufurahisha - Lifanye kwa kutumia mchezo wakati wa muda wa pamoja! Au unaweza kujaribu kutengeneza bajeti kwa @global.w_money_grandma kwanza.\n\nKumbuka kuwasifia mnapomaliza!", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Uliza \"Ukifanya hivi, ni nini kinachoweza kutokea?\"", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "Unastahili pongezi pia. Asante kwa mara nyingine kwa kutumia @global.parent_app. Inaonesha unajali sana!", + "SourceText": "If something goes well, praise your teen!", + "text": "Kama kitu flani kimeenda vizuri, msifie kijana wako!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Lengo lako lilikuwa kumsifia kijana wako. Wiki hii ulibofya @data.habit.praise_teen.in_text_title. Hongera sana kwa kukumbuka!", + "SourceText": "REFLECT TOGETHER", + "text": "TAFAKARI PAMOJA", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Lengo lako lilikuwa kumsifia kijana wako.", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "Kama kitu flani kimeenda vibaya, jiulize \"Ungeweza kufanya kwa namna gani tofauti?\"", "type": "template", "note": "" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "Je, ulipata nafasi ya kumsifia kijana wako wiki hii?", + "SourceText": "START SMALL", + "text": "ANZA KIDOGO", "type": "template", "note": "" }, { - "SourceText": "Yes", - "text": "Ndiyo", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Mpatie kijana wako majukumu madogo kwanza. Kama hayo yataenda vizuri, unaweza kuongeza zaidi kuonesha kwamba unamuamini kijana wako.", "type": "template", "note": "" }, { - "SourceText": "No", - "text": "Hapana", + "SourceText": "MAKE TIME", + "text": "TENGA MUDA", "type": "template", "note": "" }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Muda mwingine inaweza kuwa vigumu kukumbuka kuwasifia vijana wetu. Wakati mwingine ukiwa unatumia muda wa pamoja na kijana wako, jaribu na fikiria kitu kimoja unachoweza kumsifia. Unaweza hata ukasema, “ Asante kwa kutumia muda pamoja na mimi!”.", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Tenga muda wa kufanya mazungumzo bila kubughudhiwa.", "type": "template", "note": "" }, { - "SourceText": "Well done - great job for remembering!", - "text": "Vizuri – hongera sana kwa kukumbuka!", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Muulize kijana wako maswali na mwache atoe maoni yake bila kumkata kauli.", "type": "template", "note": "" }, { - "SourceText": "How did your teen respond?", - "text": "Je, kijana wako aliitikiaje?", + "SourceText": "WORK TOGETHER", + "text": "SHIRIKIANENI", "type": "template", "note": "" }, { - "SourceText": "Surprised", - "text": "Alishangazwa", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Jadilini tatizo fulani, tafuteni ufumbuzi pamoja, na kila mmoja wenu afanye kile mnachokubaliana.", "type": "template", "note": "" }, { - "SourceText": "Happy", - "text": "Alifurahi", + "SourceText": "PRAISE", + "text": "USIFIAJI", "type": "template", "note": "" }, { - "SourceText": "My teen did not like it", - "text": "Kijana wangu hakupenda", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Mshukuru kijana wako kwa kukushirikisha mawazo yake na sisitiza jinsi kufanya hivyo kunavyowasaidia nyote wawili.", "type": "template", "note": "" }, { - "SourceText": "I do not know", - "text": "Sijui", + "SourceText": "Hear a caregiver's testimonial", + "text": "Sikia ushuhuda wa mlezi", "type": "template", "note": "" }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Kumbuka, inachukua muda kwa kijana wako kuzoea kukuona ukimsifu. Kadri unavyotumia muda mwingi pamoja naye, ndivyo itakavyokuwa bora zaidi!", + "SourceText": "Read a caregiver's testimonial", + "text": "Soma ushuhuda wa mlezi", "type": "template", "note": "" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "Hongera kwa kutazama jinsi kijana wako alivyohisi; endeleza mwenendo huo!", + "SourceText": "Why @local.workshop_data.title?", + "text": "Kwanini @local.workshop_data.title?", "type": "template", - "note": "" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Huwa inatokea - kuwa tu mvumilivu. Hakikisha unaendelea kutumia muda wa pamoja na kijana wako, kwa namna hiyo atathamini mawazo yako zaidi na zaidi. Ukimsifia kwa moyo wa dhati, utaona faida zake hivi karibuni!", + "SourceText": "Hear @global.@local.topic_intro_name's message", + "text": "Sikia ujumbe wa @global.@local.topic_intro_name", "type": "template", - "note": "" + "note": "The string @local.topic_intro_name should not be translated." }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Hakuna tatizo – jaribu kuchunguza namna atakavyoitikia wakati ujao!", + "SourceText": "Read @global.@local.topic_intro_name's message", + "text": "Soma ujumbe wa @global.@local.topic_intro_name", "type": "template", - "note": "" + "note": "The string @local.topic_intro_name should not be translated." }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Lengo lako lilikuwa kujadili na kijana wako hali ya mgogoro inayoweza kutokea na kuweka mpango wa kukabiliana nayo.", + "SourceText": "Today's steps", + "text": "Hatua za leo", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "kujiandaa na vijana wao kuhusu hali ya mgogoro inayoweza kutokea", + "SourceText": "Try it Together", + "text": "Jaribuni Pamoja", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "kujiandaa na kijana wako kuhusu hali ya mgogoro inayoweza kutokea", + "SourceText": "Let's practice together.", + "text": "Tufanye mazoezi pamoja.", "type": "template", "note": "" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "Kijana wangu aliniambia kuwa kuna jambo kubwa limempata na sikujua jinsi ya kulishughulikia.", + "SourceText": "What does that mean?", + "text": "Je, hiyo inamaanisha nini?", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Msifie kijana wako kwa kukuambia; kufanya hivyo si jambo rahisi! Kumbuka, unaweza kutumia ujuzi wote uliojifunza kwenye kivungezana: Pumzika kidogo, tumia hatua nne za kutatua matatizo, halafu tafuta msaada unaouhitaji wewe na kijana wako!", + "SourceText": "How can you help?", + "text": "Je, unaweza kusaidiaje?", "type": "template", "note": "" }, { - "SourceText": "Get support", - "text": "Pata msaada", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Kuelewa namna kijana wako anavyojisikia na namna unavyoweza kumsaidia huleta mabadiliko makubwa kwenu nyote wawili! Mwangalie kwa makini kijana wako na muulize anajisikiaje. Bofya kwenye uso mmojawapo hapa chini ili kupata taarifa zaidi:", "type": "template", "note": "" }, { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Mazungumzo hayo yalininyima raha kabisa kwa sababu yalinikumbusha wakati mbaya nilioupitia.", + "SourceText": "Hopeful", + "text": "Mwenye matumaini", "type": "template", "note": "" }, { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Tunapokumbushwa nyakati kama hizo, ni kawaida kuhisi kufadhaika au kukasirika. Ni muhimu kutafuta muda ambao umetulia, ili uweze kufikiria msaada unaouhitaji. Unaweza kuhitaji kuzungumza na mtu.", + "SourceText": "Resilient", + "text": "Mstahimilivu", "type": "template", "note": "" }, { - "SourceText": "One of us did not feel comfortable.", - "text": "Mmoja wetu hakujisikia vizuri.", + "SourceText": "Self-esteem", + "text": "Mwenye kujithamini", "type": "template", "note": "" }, { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Haya ni mambo magumu kuyazungumzia. Tafuta muda wa utulivu kwa ajili hiyo. Tunajua ni rahisi zaidi kutozungumzia mambo haya na kuamini kuwa hayatakuja kututokea. Hata hivyo, kujifunza jinsi ya kushughulikia hali ya matatizo ni kama kupata bima; SIKU ZOTE ni bora zaidi kuifikiria na kujiandaa mapema.", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Vijana wana malengo na ndoto kwa ajili ya siku zijazo – za karibuni na za mbali!", "type": "template", "note": "" }, { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Lengo lako lilikuwa kubainisha maeneo ya hatari na sehemu za msaada pamoja na kijana wako – kwenye jamii yako na mtandaoni.", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Muulize kijana wako kuhusu malengo na ndoto zake, mhimize afikirie kile anachokitaka kwa maisha yake ya baadaye, na shirikianeni kuweka mpango utakaowezesha kutimiza malengo na ndoto hizo.", "type": "template", "note": "" }, { - "SourceText": "map risks and support with their teens", - "text": "bainisha maeneo ya hatari na msaada pamoja na vijana wao", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Vijana wastahimilivu wanaweza kukabiliana na hali ngumu, kubadilika kuendana na mazingira, na kutatua matatizo yanapojitokeza.", "type": "template", "note": "" }, { - "SourceText": "map risks and support with your teen", - "text": "bainisha maeneo ya hatari na msaada pamoja na kijana wako", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Msifie kijana wako kwa kushinda hali ngumu na msaidie pale unapoweza.", "type": "template", "note": "" }, { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Mimi na kijana wangu hatukukubaliana kuhusu maeneo na shughuli za mtandaoni ambazo hazikuwa salama.", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "Kujithamini kwa kijana ni jinsi anavyojifikiria yeye mwenyewe.", "type": "template", "note": "" }, { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "Hongera kwa kujaribu shughuli hii! Tunapowasikiliza vijana wetu, hata kama hatukubaliani nao, tunajifunza kuelewa wanavyofikiri. Jaribu kutafuta muda wa kufanya shughuli hii tena – jaribu kusikiliza na kuonesha kuwa unawaelewa kabla ya kuwashirikisha mawazo yako.", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Himiza awe na mtazamo chanya kuhusu yeye mwenyewe, kuwa mfano wa kuigwa kwa kutojifanyia mzaha au kujikosoa kila mara. Ujue uwezo wa kijana wako na msaidie kwenye udhaifu wake.", "type": "template", "note": "" }, { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "Kijana wangu alionesha nyumba ya mtu ninayemwamini kuwa si salama. Nilishtuka na sikujua cha kufanya.", + "SourceText": "Lonely", + "text": "Mpweke", "type": "template", "note": "" }, { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Ni jambo la kushtua kujua kwamba watu walio karibu nasi na tunaowaamini wanaweza kuwa hatari kwa vijana wetu. Kumbuka kupumzika unapokuwa umekasirika, na jaribu kumsikiliza kijana wako kwa utulivu. Tafuta mtu unayeweza kuzungumza naye kuhusu jambo hili, labda rafiki au huduma ya msaada, ili uweze kupata msaada unaohitaji.", + "SourceText": "Anxious", + "text": "Mwenye wasiwasi", "type": "template", "note": "" }, { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "Kijana wangu alisisitiza kwamba baa (au mahali pengine ninapohisi si salama) ni salama kwake kupatembelea. Sijui jinsi ya kumshawishi kijana wangu.", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Vijana wanaweza kujisikia upweke, hata wanapokuwa na watu wengine. Wanaweza kuhisi kama hawana mtu wa kuzungumza naye, kumwamini, au kushirikishana naye mambo mbalimbali.", "type": "template", "note": "" }, { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Jambo hili linaweza kukatisha tamaa sana. Ili kupata suluhisho, kijana wako anahitaji kuhisi kuwa anasikilizwa – kwa hiyo, sikiliza kwa utulivu sababu za kijana wako, halafu ndipo umshirikishe maoni yako. Kisha, shirikianeni kuweka sheria inayomruhusu kufurahi huku akiwa salama.", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Muulize kijana wako anaendeleaje na jaribuni kutafuta pamoja njia mpya za kufurahisha ili kuwasiliana na marafiki na familia zao – hasa wakati wa zuio la kutotoka nyumbani.", "type": "template", "note": "" }, { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "Kama mtu mzima, ninahisi ninawajibika kumlinda – lakini nilipomwambia kijana wangu kuhusu kilicho salama na kisicho salama, alikasirika.", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Wasiwasi ni hisia ya kawaida na inaweza kutusaidia kukabiliana na hali zinazoleta changamoto. Lakini wasiwasi mwingi kupita kiasi unaowazuia vijana kufanya mambo wanayoyapenda ni tatizo.", "type": "template", "note": "" }, { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Vijana wetu wanaweza kujua mambo yanayohusu jamii zetu na teknolojia ambayo hatuyajui. Tunapowashirikisha kikamilifu vijana wetu kwenye shughuli ya ubainishaji na kuwasikiliza, watajisikia kuwa wanasikilizwa na kuthaminiwa, na inaweza kuwa rahisi zaidi kupata mpango unaokubaliwa na kila mmoja.", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Msaidie kijana wako kutambua mambo yanayomfanya kuwa na wasiwasi na shirikianeni kupanga namna anavyoweza kukabiliana na mawazo ya wasiwasi.", "type": "template", "note": "" }, { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Ilikuwa vigumu kutambua rasilimali zinazotoa msaada katika jamii yangu, kwa sababu siijui vizuri jamii yangu / kuna huduma chache zinazopatikana.", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Kufanya pamoja shughuli ya kuburudisha kunaweza kusaidia!", "type": "template", "note": "" }, { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Ni vigumu kujua kila kitu kuhusu jamii zetu. Shirikisha rafiki au mwanafamilia mwingine katika shughuli yako ya ubainishaji. Unaweza hata kutembelea baadhi ya huduma zinazopatikana na kuuliza wanachofanya. Kadri tunavyojua mengi, ndivyo tunavyoweza kuziweka salama familia zetu!", + "SourceText": "Depressed", + "text": "Mwenye mfadhaiko", "type": "template", "note": "" }, { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Sijui mengi kuhusu teknolojia, kwa hiyo sijui jinsi ya kuizungumzia na kijana wangu.", + "SourceText": "Self-harm", + "text": "Kujidhuru", "type": "template", "note": "" }, { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Hakuna shida kabisa! Bado unaweza kumsaidia kijana wako. Muulize kijana wako aeleze vifaa vya kielektroniki anavyotumia – unaweza kumuuliza wakati mnapozungumza wawili. Hii ni fursa nzuri sana ya kuonesha moyo wa kupenda kujua maisha ya kijana wako na kujadili pamoja hatari zinazoweza kutokea. Kama hamna uhakika muweke sheria gani, kila mara unaweza kukubaliana na kijana wako kujaribu sheria mpya kwa wiki mbili, kisha mtajadili jinsi mambo yanavyoenda na kubadilisha sheria ikibidi!", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Kuhuzunika au kuwa na majonzi, kuwa na sununu, zote ni hisia za kawaida za kibinadamu. Mfadhaiko hutokea pindi hali hiyo inapoendelea kwa muda mrefu na kuathiri shughuli za kawaida za kila siku za kijana wako. Kijana wako anaweza kuhisi kutokuwa na matumaini na kukosa uwezo au kutokuwa na nia ya kubadilisha chochote.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Lengo lako lilikuwa kujaribu kutatua tatizo au mgogoro pamoja na kijana wako.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Jaribu kupata msaada wa kitaalamu.", "type": "template", "note": "" }, { - "SourceText": "resolve problems with their teens", - "text": "tatua matatizo na vijana wako", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Wakati mwingine vijana wanaweza kujidhuru kwa makusudi ili kukabiliana na hisia hasi kama kukasirika, kuona hatia, kukosa thamani, au kujichukia. Hali hii inaweza kusababishwa na wasiwasi au mfadhaiko.", "type": "template", "note": "" }, { - "SourceText": "resolve the problem with your teen", - "text": "tatua tatizo na kijana wako", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Kumwambia kijana wako 'hebu acha' kunaweza kufanya mambo kuwa mabaya zaidi. Badala yake msikilize, mwonyeshe kwa utulivu kuwa unaelewa, na mjengee ujasiri. Kama kijana wako yuko tayari kueleza jinsi kujidhuru kunavyomfanya ajisikie vizuri, unaweza kuanza kuelewa sababu za kufanya hivyo. Jaribu kupata msaada wa kitaalamu.", "type": "template", "note": "" }, { - "SourceText": "I forgot the steps of problem solving.", - "text": "Nilisahau hatua za kutatua matatizo.", + "SourceText": "A teen sometimes does something because they:", + "text": "Wakati mwingine kijana hufanya jambo fulani kwa sababu:", "type": "template", "note": "" }, { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "Inachukua muda kidogo na mazoezi kuweza kutumia hatua zote nne za kutatua matatizo. Tatizo litakapotokea tena, pitia hatua hizi nne pamoja na kijana wako – kufanya hivyo kutaleta mabadiliko makubwa!", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "- Anawasikiliza marafiki zake\n- Anataka kufanya mambo wanayofanya wengine\n- Anafikiria zaidi kuhusu 'sasa' kuliko 'baadaye'\n- Ana mihemko ya kimapenzi na anaona kwamba kuwa mwangalifu kunachosha\n- Hana wasiwasi kuhusu hatari – anaweza hata kupenda hatari\n- Ana uzoefu mdogo anaoutegemea\n- Yuko tayari kujaribu jambo fulani – bila kujali kitakachotokea", "type": "template", "note": "" }, { - "SourceText": "I started with the solutions right away.", - "text": "Nilianza na suluhisho moja kwa moja.", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Kukumbuka mambo haya kunaweza kusaidia pindi kijana wako anapofanya uamuzi mbaya. Zungumza naye na tumia muda pamoja naye ili uweze kumsaidia kuchagua vyema wakati ujao!", "type": "template", "note": "" }, { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "Tunapokuwa na tatizo, mara zote huwa tunataka kulitatua haraka sana na tunaweza kusahau hatua za kulitatua tatizo. Ili kupata suluhisho bora kwa pamoja, ni vema kwanza kulielewa tatizo kikamilifu na njia mbalimbali za kulitatua.", + "SourceText": "Copy code", + "text": "Nakili msimbo", "type": "template", "note": "" }, { - "SourceText": "Four steps of problem solving", - "text": "Hatua nne za kutatua matatizo", + "SourceText": "Copied!", + "text": "Imenakiriwa!", "type": "template", "note": "" }, { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Hatukuweza kukubaliana kuhusu suluhisho la kulijaribu hivyo tuliishia kulumbana.", + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "Unaweza kuombwa kuwaonyesha namba hii watu watakaokusaidia katika safari yako ya @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Wakati mwingine inaweza kuwa vigumu kukubaliana na kila mtu katika familia, hasa kama kila mtu bado hajatulia. Mnaweza kukubaliana kujaribu suluhisho moja kwanza, na kisha mjaribu suluhisho lingine. Pia, kama mtakwama, jaribuni kukutana baadaye ili mkubaliane pamoja kuhusu suluhisho hilo.", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Imeoanishwa mara ya mwisho saa: @local.sync_latest", "type": "template", - "note": "" + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Nilikasirika tatizo lilipotokea, nikasahau kutumia hatua za kutatua matatizo.", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Kifaa hiki hakijawahi kulandanishwa. Landanisha kupata namba ya siri.", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Tatizo linapojitokeza, huwa tunakasirika au kufadhaika wakati mwingine. Kumbuka, unapohisi hasira au msongo wa mawazo, unaweza kupumzika kwanza ili utulie halafu ndipo utatue tatizo linalokukabili.", + "SourceText": "Sync now", + "text": "Landanisha sasa", "type": "template", "note": "" }, { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "Kijana wangu alikasirika na hakutaka kuzungumzia tatizo hilo.", + "SourceText": "Syncing...", + "text": "Inaoanisha...", "type": "template", "note": "" }, { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Kijana wako anaweza kushindwa kabisa kushughulikia tatizo mara moja. Zitambue na kuzipa majina hisia zake, halafu tafuta muda baadaye siku hiyo au wiki hiyo mjadili na kutatua tatizo hilo pamoja. Unapotenga muda kwa ajili ya kijana wako, tatizo linaweza kutatuliwa vizuri.", + "SourceText": "What is your name or nickname?", + "text": "Jina lako au jina lako la utani ni nani?", "type": "template", "note": "" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Wiki hii lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kufadhaika, vuta pumzi ndani na nje mara tano kabla hujaamua cha kufanya. Ulibofya @data.habit.breathe.in_text_title – hongera!", - "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." - }, - { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Wiki hii, lengo lako lilikuwa: Wakati wowote unapohisi msongo wa mawazo au kufadhaika, vuta pumzi ndani na nje mara tano kabla hujaamua cha kufanya.", + "SourceText": "What is your gender?", + "text": "Jinsia yako ni ipi?", "type": "template", "note": "" }, { - "SourceText": "How did this work out?", - "text": "Jambo hili liliendaje?", + "SourceText": "Prefer not to say", + "text": "Ningependa nisiseme", "type": "template", "note": "" }, { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Lengo lako pia lilikuwa kuzungumza na kijana wako kuhusu jinsi nyinyi wawili mlivyohisi wakati wa msongo wa mawazo.", + "SourceText": "Watch Together", + "text": "Angalia Pamoja", "type": "template", "note": "" }, { - "SourceText": "How did this go?", - "text": "Jambo hili liliendaje?", + "SourceText": "Let's watch a video together!", + "text": "Hebu tuangalie video pamoja!", "type": "template", "note": "" }, { - "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", - "text": "Je, ulipata changamoto yoyote kati ya hizi ulipomshirikisha kijana wako kuhusu unavyojisikia?", + "SourceText": "Watch", + "text": "Angalia", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about sharing how you feel with your teen?", - "text": "Jambo gani lilikuwia gumu ulipokuwa unamshirikisha kijana wako kuhusu unavyohisi?", + "SourceText": "Let's watch a video!", + "text": "Ngoja tuangalie video!", "type": "template", "note": "" }, { - "SourceText": "I was afraid my teen would think I was weak.", - "text": "Niliogopa kijana wangu angeniona mimi dhaifu.", + "SourceText": "Welcome @fields.group_name", + "text": "Karibuni @fields.group_name", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "text": "Kushirikishana hisia, hasa zile ngumu, huonesha mfano wa kuigwa kwa kijana wako! Kwa hakika humfanya kila mtu kwenye familia kuwa imara zaidi, kwa sababu mnaweza kuelewana na kusaidiana vizuri zaidi.", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Tunafurahi kuwaona tena! Hebu tuanze na wimbo wa familia popote zilipo.", "type": "template", "note": "" }, { - "SourceText": "I felt uncomfortable about naming specific difficult feelings.", - "text": "Sikujisikia vizuri kuhusu kutaja hisia fulani ngumu.", + "SourceText": "Let's Slow Down", + "text": "Twende polepole", "type": "template", "note": "" }, { - "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "text": "Kuwa mahususi si kukosa adabu au kutojali – husaidia sana wengine kukuelewa vizuri na hivyo kuzuia kutoelewana kwenye familia. Hisia kama hasira na msongo wa mawazo ni sehemu ya maisha yetu. Kitu pekee tunachohitaji kufanya tunapohisi hasira na msongo wa mawazo ni kudhibiti vizuri hisia zetu kwa kuvuta pumzi ndefu mara kadhaa kabla ya kuamua cha kufanya.", + "SourceText": "How would you like to do this workshop?", + "text": "Je, ungependa kufanyaje kipindi hiki?", "type": "template", "note": "" }, { - "SourceText": "My teen felt uncomfortable when I shared my feelings.", - "text": "Kijana wangu hakujisikia vizuri nilipomshirikisha hisia zangu.", + "SourceText": "Coming soon", + "text": "Inakuja hivi punde", "type": "template", "note": "" }, { - "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "text": "Siku zote mwanzo ni mgumu. Jipe muda wa kuzoea na endelea kuonyesha mfano mzuri kwa kutambua hisia zako na kuwashirikisha wengine. Baada ya muda, kijana wako atajifunza kufanya hivyohivyo, na atahisi kupendwa na kutunzwa mno!", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Tutahitaji kushughulikia masuala mengine ya malezi kabla ya kuanza kufanya kazi kwenye @local.workshop_data.title.\n\nUnaweza kupata nyenzo muhimu kwenye @local.workshop_data.title kupitia @global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "text": "Nilipomshirikisha kijana wangu hisia zangu, aliuliza maswali mengi ambayo yalinifanya nisijikie raha.", + "SourceText": "My name", + "text": "Jina langu", "type": "template", "note": "" }, { - "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "text": "Kuwashirikisha wengine hisia zako humsaidia kijana wako kufahamu na kujifunza kufanya hivyohivyo. Unaweza kuchagua mambo unayotaka kuwashirikisha wengine kuhusu hali hiyo. Ni juu yako! Unaweza pia kuchagua kujibu maswali baadaye kwa kusema, “Sasa hivi ninahisi hasira/msongo wa mawazo. Unaweza kunipa muda, tafadhali? Tunaweza kuzungumza zaidi kuhusu jambo hili leo usiku”.", + "SourceText": "@global.weekly_workshop day", + "text": "Siku ya @global.weekly_workshop", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "text": "Nilikuwa na hasira mno au msongo mkubwa wa mawazo kuweza kujaribu kuelezea hisia zangu – ninapendelea kuwa peke yangu ninapohisi hivyo.", + "SourceText": "I do the @global.workshops:", + "text": "Ninafanya @global.workshops:", "type": "template", - "note": "" + "note": "The string @global.workshops should not be translated." }, { - "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "text": "Si vibaya kutotaka kuwashirikisha wengine kwa wakati huo. Tafuta muda wa kuwaelezea baadaye, unapohisi utulivu zaidi, ili kila mtu aelewe.", + "SourceText": "My group's name", + "text": "Jina la kikundi changu", "type": "template", "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kukiuka sheria ya kaya). Ulibofya @data.habit.consequence.in_text_title – hongera sana kwa kukumbuka!", + "SourceText": "My group is now doing the @global.workshop:", + "text": "Sasa kikundi changu kinafanya @global.workshop:", "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Lengo lako lilikuwa kuweka athari MOJA chanya (kwa kijana wako kuwajibika) na athari MOJA hasi (kwa kijana wako kuvunja sheria ya kaya).", + "SourceText": "I am now doing the @global.workshop:", + "text": "Kwa sasa ninafanya @global.workshop:", "type": "template", - "note": "" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "introduce a consequence together", - "text": "wekeni athari mkiwa pamoja", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Maswali haya ya haraka yatapangilia programu hii kulingana na mahitaji yako.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "Je, mlipata changamoto zozote mlipojaribu pamoja kuweka athari?", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "Hebu tuanze na maswali machache kuhusu wewe na familia yako.", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Je, jambo gani lilikuwa gumu kwako katika kuweka athari pamoja na kijana wako?", + "SourceText": "We would love to know your first name or nickname:", + "text": "Tungependa kujua jina lako la kwanza au jina lako la utani:", "type": "template", "note": "" }, { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Nilikasirika sana pale kijana wangu alipovunja sheria.", + "SourceText": "Are you a woman or a man?", + "text": "Je, wewe ni mwanamke au mwanaume?", "type": "template", "note": "" }, { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Kupumzika kabla ya kujibu kunatusaidia kutulia na kujibu vizuri zaidi.\n\nKijana wako akikukasirisha tena, jaribu kwanza kupumzika. Kuvuta pumzi ndefu chache tu kunaweza kuleta mabadiliko makubwa!", + "SourceText": "Woman", + "text": "Mwanamke", "type": "template", "note": "" }, { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "Kijana wangu alinikasirikia sana nilipomuamuru afanye athari.", + "SourceText": "Man", + "text": "Mwanaume", "type": "template", "note": "" }, { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Kijana wako anapokasirika, unaweza kuhitaji kuondoka hadi nyote mtakapokuwa mmetulia.\n\nTazama ili kuhakikisha kuwa athari ni ya haki na ya busara. Sikiliza maelezo ya kijana wako, na hakikisha unatoa \"Msamaha wa Usalama\" kama alivunja sheria ili kuwa salama.", + "SourceText": "How old are you?", + "text": "Je, una umri gani?", "type": "template", "note": "" }, { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Niliweka athari bila kuijadili kwanza na kijana wangu.", + "SourceText": "Adults", + "text": "Watu wazima", "type": "template", "note": "" }, { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "Je, unaweza kuweka athari kwa ajili ya jambo hili likitokea tena? Tunapoweka athari pamoja na vijana wetu, athari hizi zitakuwa na uwezekano mkubwa wa kutekelezeka, na vijana wetu watakuwa tayari zaidi na watakuwa na uwezo zaidi wa kufuata sheria hiyo.", + "SourceText": "Teens", + "text": "Vijana", "type": "template", "note": "" }, { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Nilisahau kufuatilia athari mpaka mwisho.", + "SourceText": "Children", + "text": "Watoto", "type": "template", "note": "" }, { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Sisi sote huwa tunakosea! Kadri tunavyokuwa na msimamo kwenye athari tulizoziweka, ndivyo watoto wetu watakavyokuwa na uwezekano mkubwa wa kuchagua kuwa na mwenendo chanya siku za usoni.", + "SourceText": "Babies", + "text": "Watoto wachanga", "type": "template", "note": "" }, { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Pamoja na kuweka athari, bado kijana wangu hafuati sheria.", + "SourceText": "How many people are in your household?", + "text": "Je, kuna watu wangapi kwenye kaya yako?", "type": "template", "note": "" }, { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "Kama kijana wako anaendelea kuvunja sheria, unaweza kuhitaji kutumia muda chanya zaidi pamoja naye.\n\nJaribu kuendelea na malengo yako mengine – kama kujithamini, muda wa kuzungumza wawili, na usifiaji. Ujuzi huu wote utamsaidia kijana wako kuhisi anapendwa zaidi na kulindwa… na wewe kupunguza msongo wa mawazo!", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "Unaweza kufanya @global.weekly_workshops peke yako AU unaweza kualika wanafamilia wengine au marafiki wajiunge nawe – mtafundishana mengi. Uamuzi ni wako!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Tuliweka njia ya malipo hasi tu, na si malipo chanya.", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "Je, ungependa kufanyaje @global.weekly_workshops zako?", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Wakati mwingine ni vigumu kufikiria athari chanya. Athari zitamchochea kijana wako kuwajibika zaidi, na utaona mabadiliko!", + "SourceText": "Can you think of a name for your group?", + "text": "Je, unaweza kufikiria jina la kikundi chako?", "type": "template", "note": "" }, { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "Kijana wangu alipendekeza kuchapwa kama athari hasi.", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "Je, ni siku gani ya wiki ungependa kufanya @global.weekly_workshops zako?", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Vijana wanaweza kuzoea kuona kuchapwa ndo athari pekee ya kuvunja sheria.\n\nBungua bongo pamoja nao kuhusu baadhi ya athari nyepesi zinazoweza kuwasaidia kuelewa kwamba wamefanya kosa. Hizi zitaleta ufanisi zaidi na kutoa mifano chanya!", + "SourceText": "Monday", + "text": "Jumatatu", "type": "template", "note": "" }, { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Wiki hii, lengo lako lilikuwa kutengeneza sheria MOJA na kijana wako.", + "SourceText": "Tuesday", + "text": "Jumanne", "type": "template", "note": "" }, { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "Umefanya vizuri sana kwa hili! Si rahisi, na vijana hawawezi kutii sheria wakati wote, lakini kwa kutengeneza sheria muhimu kwa pamoja ni mwanzo mzuri. Jipongeze kwa kujaribu hili - tunajivunia hatua hii!", + "SourceText": "Wednesday", + "text": "Jumatano", "type": "template", "note": "" }, { - "SourceText": "make rules with their teens", - "text": "tengeneza sheria na vijana wao", + "SourceText": "Thursday", + "text": "Alhamisi", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "Je, mlipata changamoto yoyote mlipojaribu kutengeneza sheria pamoja?", + "SourceText": "Friday", + "text": "Ijumaa", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Je, kitu gani kilikuwa kigumu ulipokuwa unatengeneza sheria na kijana wako?", + "SourceText": "Saturday", + "text": "Jumamosi", "type": "template", "note": "" }, { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Mimi na kijana wangu hatukuweza kukubaliana kuhusu sheria fulani.", + "SourceText": "Sunday", + "text": "Jumapili", "type": "template", "note": "" }, { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Fikiria kama sheria ina mantiki. Kijana wako anaweza kuifuata? Mnapotunga sheria kama familia, ni vizuri ukafikiria kuhusu kijana wako, umri wake, na nini ambacho ni muhimu kwake.", + "SourceText": "Great! We will unlock a new @global.workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Safi sana! Tutafungua @global.workshop mpya kwa kikundi chako kila wiki. Nyinyi nyote mtaweza kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", "type": "template", - "note": "" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "Kijana wangu alihisi kuwa haikuwa haki kwake kuifuata sheria hiyo wakati mimi sihitaji kuifuata.", + "SourceText": "Great! We will unlock a new @global.workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Safi sana! Tutawafungulia @global.workshop mpya kila wiki. Hii itawasaidia kujaribu kile mlichojifunza na familia zenu kabla ya kujifunza ujuzi unaofuata.", "type": "template", - "note": "" + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Kila wakati, tunapaswa kukumbuka kuwa watoto hujifunza vizuri zaidi kutoka kwetu. Kadiri tunavyofuata sheria, ndivyo pia nao watakavyofuata sheria.\n\nUnaweza kurekebisha sheria ili kuhakikisha kuwa inaweza kufuatwa na kila mtu, kwa kuzingatia majukumu yako na majukumu ya kijana wako (kwa mfano, shughuli za shuleni au za kazini).", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "Wakati wote unaweza kubadilisha mipangilio hii kwenye @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Nilijisikia vibaya, kwa sababu ninahisi kwamba mimi ndiye ninapaswa kuweka sheria hiyo, si kijana wangu.", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "Je, una hakika kuwa unataka kufungua vipindi vyote? Ukishazifungua, hautaweza kuzifunga tena", "type": "template", "note": "" }, { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "Mwenza wangu alijisia vibaya, kwa sababu anahisi kwamba yeye ndiye anapaswa kuweka sheria hiyo, si kijana huyo.", + "SourceText": "Unlock Workshops", + "text": "Fungua vipindi", "type": "template", "note": "" }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Tunapoweka sheria pamoja na vijana wetu, husaidia familia kuelewana vizuri zaidi. Sheria hizo zitakuwa na uhalisia zaidi, na vijana wetu watakuwa na utayari zaidi na wataweza kuzifuata sheria hizo.", + "SourceText": "Using the app together", + "text": "Kutumia programu hii pamoja", "type": "template", "note": "" }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Tulipojaribu kuweka sheria, tulijikuta tunabishana.", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Tunafurahi sana kuwaona!\n\nKwanza, ngoja tulisaidie kundi lenu liweze kuanza.", "type": "template", "note": "" }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "Je, kijana wako alikuwa na hali nzuri kihisia mlipojaribu kuweka sheria? Ni vizuri zaidi kutengeneza sheria wakati kukiwa na hali ya utulivu. Kama wewe au kijana wako atakuwa amechoka au ana njaa, ni vizuri zaidi kuzungumzia sheria baadaye.", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Kubalianeni pamoja kuhusu sheria zenu za msingi:\n* Je, tutakutana siku/muda upi kwa wiki?\n* Je, wakati wa shughuli zetu, ni nani atakayeshikilia simu?\n* Je, tutahakikishaje kuwa kila mtu anaweza kushiriki kwa uhuru?\n* Je, tufanyaje ili sisi sote tuhisi kuwa tunaheshimiwa?", "type": "template", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Hatukuweza kufuata sheria.", + "SourceText": "You always can change your @global.workshop day and your group name in the @global.weekly_workshop_options.", + "text": "Wakati wote unaweza kubadilisha @global.workshop yako ya siku na jina la kikundi chako kwenye @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.workshop\n@global.weekly_workshop_options" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Sheria zinapaswa ziwe mahususi na zinazotekelezeka. Hakikisha kuwa una sheria inayoweza kufuatwa kwa urahisi, kama vile kula mlo mmoja pamoja kila Jumapili badala ya kila siku usiku. Je, unahitaji kunyumbulika zaidi kuhusu sheria hiyo?", + "SourceText": "Some rules that other groups made:", + "text": "Baadhi ya sheria zilizowekwa na vikundi vingine:", "type": "template", "note": "" }, { - "SourceText": "Mother", - "text": "Mama", - "type": "global", - "note": "" + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "* Jumanne saa 1 jioni ni wakati wetu wa kuwa pamoja kwenye @global.parent_app\n* Peaneni zamu ya kushika simu (shughuli 1 kwa mtu mmoja)\n* Kubalianeni na uzoefu wa kila mmoja. Sisi sote tunatofautiana!\n* Peaneni zamu ya kuzungumza na kusikiliza\n* Mnaweza kuuliza maswali yoyote\n* Tunachoshirikishana ni siri yetu", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Father", - "text": "Baba", - "type": "global", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Tumia dakika 5-20 za muda wa pamoja na kijana wako mkiwa wawili, kila siku unayoweza wiki hii.", + "type": "template", "note": "" }, { - "SourceText": "TikTok", - "text": "TikTok", - "type": "global", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Kumbuka – kila unapoweza, jipumzishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", + "type": "template", "note": "" }, { - "SourceText": "WhatsApp", - "text": "WhatsApp", - "type": "global", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Wazazi wengi wanapata changamoto za kuzungumza na vijana wao wakiwa wawili.\n\nZifuatazo ni changamoto kuu 8 wazazi walizotuambia kuwa wanazipata wanapopanga au wanapotumia muda pamoja na vijana wao wakiwa wawili. Kama ulipata changamoto mojawapo kati ya hizi au una wasiwasi kuwa itakutokea, ibofye ili kupata suluhisho linaloweza kutumiwa. Baadaye, unaweza kubofya na kujifunza changamoto nyingine.", + "type": "template", "note": "" }, { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "Kuangalia video hii kunahitaji uwe na mtandao wa intaneti. Ili kupunguza matumizi ya data, tazama au pakua video hii unapokuwa kwenye WiFi.", - "type": "global", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "Je, ulipata changamoto zozote ulipojaribu kutumia muda na kijana wako?", + "type": "template", "note": "" }, { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "Ili kutembelea tovuti hizi, unahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tembelea tovuti hizi ukiwa kwenye WiFi.", - "type": "global", + "SourceText": "I don’t have enough time.", + "text": "Sina muda wa kutosha.", + "type": "template", "note": "" }, { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "Kutuma ujumbe huu kunahitaji mtandao wa intaneti. Ili kupunguza matumizi ya data, tuma ujumbe huu ukiwa kwenye WiFi.", - "type": "global", + "SourceText": "My teen does not want to spend time with me.", + "text": "Kijana wangu hataki kutumia muda pamoja na mimi.", + "type": "template", "note": "" }, { - "SourceText": "COVID", - "text": "UVIKO", - "type": "global", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "Kijana wangu anataka tu kutazama runinga au kuchezea simu yake.", + "type": "template", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Ukaribisho na Kujithamini", - "type": "global", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "Kijana wangu anataka kufanya mambo yasiyo salama au vitu vinavyogharimu pesa.", + "type": "template", "note": "" }, { - "SourceText": "Self-Care", - "text": "Kujithamini", - "type": "global", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "Kijana wangu anataka kufanya vitu ambavyo mwili wangu hauwezi kuvifanya.", + "type": "template", "note": "" }, { - "SourceText": "How to add self-care", - "text": "Jinsi ya kuongeza kujithamini", - "type": "global", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "Kijana wangu alichagua shughuli ya kushindana. Nilishinda halafu akakasirika.", + "type": "template", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Kutumia Muda wa Pamoja Wawili", - "type": "global", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Nilihangaika kusitisha muda wa pamoja.", + "type": "template", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Jinsi ya kutumia muda wa pamoja wawili", - "type": "global", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Watoto wangu wote wanataka muda wa pamoja kwa wakati mmoja.", + "type": "template", "note": "" }, { - "SourceText": "Praise", - "text": "Kusifia", - "type": "global", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "Ndiyo, inaweza kuwa vigumu sana kupata muda wakati wa mchana, kwa sababu ya kazi, shughuli za nyumbani, na mambo mengine yote.", + "type": "template", "note": "" }, { - "SourceText": "How to praise", - "text": "Jinsi ya kusifia", - "type": "global", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Tunasikitika kwamba jambo hilo lilikusumbua. Inaweza kutufanya tujisikie vibaya kama watoto wetu hawataki kutumia muda wa pamoja na sisi.", + "type": "template", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Maelekezo chanya", - "type": "global", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Fikiria muda ambao kijana wangu anakuwa wazi zaidi kwangu, kama vile asubuhi au muda mfupi kabla ya kwenda kulala.", + "type": "template", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Jinsi ya kutoa maelekezo chanya", - "type": "global", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Kukaa karibu na kijana wangu anapofanya kitu anachofurahia na kuonesha kuvutiwa na kile anachopenda.", + "type": "template", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Kudhibiti Msongo wa Mawazo", - "type": "global", + "SourceText": "Do something fun with the whole family.", + "text": "Fanya kitu cha kufurahisha na familia yote.", + "type": "template", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Jinsi ya kudhibiti msongo wa mawazo", - "type": "global", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Vizuri sana! Kuchagua muda ambao kijana wako anapenda kuzungumza kutamsaidia kuitikia vizuri jitihada zako za kuwasiliana naye.", + "type": "template", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Bajeti za Familia", - "type": "global", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Safi! Kuangalia pamoja kipindi cha runinga au mechi inayopendwa na kijana wako kutamuonesha kuwa unamjali. Vumilia tu; baada ya muda ataanza kuwa wazi kwako!", + "type": "template", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Jinsi ya kutengeneza bajeti & kuweka akiba", - "type": "global", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Vizuri sana! Wakati mwingine inaweza kuwa rahisi zaidi kuanza kwa kutumia muda pamoja na familia nzima. Kwa njia hiyo, hatimaye kijana wako atajiamini zaidi kutumia muda pamoja na wewe mkiwa wawili tu.", + "type": "template", "note": "" }, { - "SourceText": "Rules", - "text": "Sheria", - "type": "global", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "Tunasikitika kusikia kuwa ulipata changamoto hiyo. Mara nyingi watoto wanapenda kutumia muda wao wakitazama runinga au kuchezea vifaa vya kielektroniki. Hongera kwa kumvumilia kijana wako!", + "type": "template", "note": "" }, { - "SourceText": "How to create rules", - "text": "Jinsi ya kuunda sheria", - "type": "global", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Pendekeza vitu vya kufurahisha ambavyo mimi na kijana wangu tunaweza kuvifanya pamoja.", + "type": "template", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Athari Nyepesi", - "type": "global", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Tafuta kitu cha kuelimisha cha kufanya na kijana wangu kwenye kifaa cha kielektroniki.", + "type": "template", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Jinsi ya kuamuru athari nyepesi zifanywe", - "type": "global", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Kumuomba kijana wangu anioneshe jinsi simu yake au kifaa chake cha kielektroniki kinavyofanya kazi.", + "type": "template", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Kutatua Matatizo", - "type": "global", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "Hiyo ni nzuri sana! Kama unahitaji hamasa, haya hapa mawazo kutoka familia nyingine kuhusu mambo mnayoweza kufanya pamoja. Kumbuka, mwachie kijana wako achague.", + "type": "template", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Jinsi ya kutatua matatizo", - "type": "global", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Safi sana! Kuna programu nyingi sana kwenye simu zinazoelimisha na kufurahisha mnazoweza kuzitafuta pamoja. Uliza maswali, onyesha shauku, na kumbuka kusema kitu fulani vizuri.", + "type": "template", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Usalama wa Vijana", - "type": "global", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Vizuri! Vijana wanafurahi sana unapoonesha kuvutiwa na vifaa vyao vya kielektroniki au unapowaomba wakueleze kitu fulani wanachokijua. Huu ni mwanzo mzuri sana!", + "type": "template", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Jinsi ya kumweka salama kijana wako", - "type": "global", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Hauko peke yako hapa. Wakati mwingine, wazazi wengi wanakabiliwa pia na changamoto hii. Kila mara, muda wa kuzungumza wawili unapaswa kuwa salama, na haulazimiki kugharimu chochote!", + "type": "template", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Kushughulikia Hali ya Matatizo", - "type": "global", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Kuwaelezea vijana wangu kwa nini pendekezo lake sio salama au linawezekana, na kumuomba mawazo mengine.", + "type": "template", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Jinsi ya kushughulikia hali ya Matatizo", - "type": "global", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Pendekeza shughuli nyingine za kufurahisha tunazoweza kufanya pamoja.", + "type": "template", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Kusherehekea na Hatua Zinazofuata", - "type": "global", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Vizuri! Ni muhimu sana kijana wako aelewe kwa nini huwezi kufanya shughuli aliyoipendekeza. Muombe atoe mawazo mengine!", + "type": "template", "note": "" }, { - "SourceText": "How to support each other", - "text": "Jinsi ya kusaidiana", - "type": "global", - "note": "" + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Safi kabisa! Kama unahitaji hamasa zaidi, unaweza kupata mapendekezo ya shughuli mbalimbali kwenye @data.parent_centre.relax_and_activities.location_text. Kumbuka, mwache kijana wako achague shughuli!", + "type": "template", + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "Home Practice", - "text": "Zoezi la Nyumbani", - "type": "global", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Tunasikitika kusikia hivyo. Vijana wetu wanaweza kusikitika tusipoweza kufanya kile wanachotaka, kama vile kucheza michezo au kufanya shughuli nyingine zinazohitaji kutumia nguvu nyingi za mwili. Lakini kumbuka, kilicho muhimu zaidi ni kwamba tunatumia muda pamoja nao. Kufanya hivyo kunaleta mabadiliko kwa kila mtu!", + "type": "template", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Zungumzia @global.home_practice", - "type": "global", - "note": "The string @global.home_practice should not be translated." + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Kumwangalia kijana wangu akifanya shughuli na kumshabikia.", + "type": "template", + "note": "" }, { - "SourceText": "Home Practice Review", - "text": "Mapitio ya Zoezi la Nyumbani", - "type": "global", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Pendekeza shughuli nyingine za kufurahisha tunazoweza kufanya pamoja.", + "type": "template", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "Tuzungumzie jinsi zoezi la nyumbani lilivyoenda wiki hii.", - "type": "global", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Vizuri sana! Hata kama unatazama badala ya kufanya shughuli pamoja, unaweza kuonesha kuvutiwa kwa kuelezea na kusifia anachokifanya kijana wako!", + "type": "template", "note": "" }, { - "SourceText": "In my group", - "text": "Kwenye kundi langu", - "type": "global", - "note": "" + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Safi kabisa! Kama unahitaji hamasa zaidi, unaweza kupata mapendekezo ya shughuli mbalimbali kwenye @data.parent_centre.relax_and_activities.location_text. Kumbuka, mwache kijana wako achague shughuli!", + "type": "template", + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "By myself", - "text": "Peke yangu", - "type": "global", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Wakati mwingine hii hutokea! Michezo ya kushindana inaweza kuwa na changamoto kwa vijana (na watu wazima) kama wanashindwa kupokea kushindwa.", + "type": "template", "note": "" }, { - "SourceText": "awesome parent", - "text": "mzazi mzuri", - "type": "global", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Pendekeza shughuli nyingine tunazoweza kufanya pamoja badala ya kushindana.", + "type": "template", "note": "" }, { - "SourceText": "friends", - "text": "marafiki", - "type": "global", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Cheza mchezo katika timu, ili niweze kumtia moyo kijana wangu kama timu yetu itashindwa.", + "type": "template", "note": "" }, { - "SourceText": "New workshop ready tomorrow!", - "text": "Warsha mpya itakuwa tayari kesho!", - "type": "global", - "note": "" + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Kumbuka, muache kijana wako achague! Unaweza kupata mapendekezo ya shughuli unazoweza kufanya na kijana wako @data.parent_centre.relax_and_activities.location_text, kama utahitaji.", + "type": "template", + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "New workshop!", - "text": "Warsha mpya!", - "type": "global", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "Kama wewe na kijana wako mko kwenye timu moja, unaweza kumsaidia kudhibiti hisia zake kama timu yenu itashindwa.", + "type": "template", "note": "" }, { - "SourceText": "Workshop Reminder", - "text": "Kumbusho la Warsha", - "type": "global", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "Ndiyo, kufikia mwisho wa muda wa pamoja kunaweza kuwa mgumu.", + "type": "template", "note": "" }, { - "SourceText": "Nice progress!", - "text": "Maendeleo mazuri!", - "type": "global", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Sema kwa kijana wangu, \"Tuna dakika moja kabla ya kufikia mwisho wa muda wa pamoja leo\", ili kijana ajiandae.", + "type": "template", "note": "" }, { - "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", - "text": "Kumbuka kukaa chini na kutulia leo - kujuthamini mwenyewe ni ujuzi muhimu wa malezi.", - "type": "global", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Nimjulishe kijana wangu kuhusu muda kiasi ninao kwa ajili ya kutumia pamoja, halafu nimuombe aufuatilie kwenye saa.", + "type": "template", "note": "" }, { - "SourceText": "You are appreciated!", - "text": "Unathaminiwa!", - "type": "global", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Pangilia kutumia muda pamoja na kijana muda mfupi kabla ya shughuli nyingine ambayo kijana wangu anaifurahia.", + "type": "template", "note": "" }, { - "SourceText": "Something Fun", - "text": "Kitu cha Kufurahisha", - "type": "global", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Vizuri sana! Kwa kumjulisha mapema kijana wako, mwisho wa muda wa pamoja hatukuja kwa kushtukiza. Pia, unaweza kumkumbusha kijana wako kwamba utatumia muda pamoja naye tena kesho.", + "type": "template", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Hapa kuna shughuli ya kufurahisha ya kufanya na kijana wako!", - "type": "global", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Vizuri sana! Kwa njia hiyo, kijana wako ana jukumu la kuangalia muda na atatambua muda unapokaribia kuisha. Mkumbushe kuwa mtatumia tena muda wa pamoja kesho.", + "type": "template", "note": "" }, { - "SourceText": "Your @global.parent_points this week", - "text": "@global.parent_points zako wiki hii", - "type": "global", - "note": "The string @global.parent_points should not be translated." + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Vizuri sana! Kama mtatumia muda wa pamoja muda mfupi kabla ya chakula cha usiku, unaweza kusema kwa furaha, \"muda wetu wa pamoja umeisha. Tujiandae kwa chakula cha usiku pamoja na familia nzima!\"", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Habari @fields.user_name! Asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye malezi yako.\n\nKumbuka kuvuna @global.parent_points zako!", - "type": "global", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Wazazi wengi hukabiliwa na hali hii. Inaweza kuwa vigumu kutumia muda wa pamoja na vijana wetu mmojammoja kama tuna watoto zaidi ya mmoja.", + "type": "template", + "note": "" }, { - "SourceText": "Home Practice Reminder", - "text": "Kumbusho la Zoezi la Nyumbani", - "type": "global", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Muombe mtu mzima mwingine au ndugu mkubwa kuwaangalia watoto wadogo wakati wa kutumia muda wa pamoja na kijana wangu tukiwa wawili.", + "type": "template", "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Ili kutatua changamoto hii, nitajaribu:", - "type": "global", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Tafuta wakati ambao watoto wengine hawapo karibu halafu tumia muda wa pamoja na kijana wangu.", + "type": "template", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Je, unataka kujaribu mojawapo ya mambo yafuatayo?", - "type": "global", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Panga kutumia muda wa pamoja mahali pengine pasipokuwa nyumbani.", + "type": "template", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "Changamoto yangu haikuorodheshwa hapa.", - "type": "global", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Safi sana! Kwa njia hii, unaweza kuweka usikivu wako wote kwa kijana wako, ili ajisikie kuthaminiwa na kupendwa.", + "type": "template", "note": "" }, { - "SourceText": "ParentApp", - "text": "ParentApp", - "type": "global", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Vizuri sana! Unaweza kujaribu kutumia muda pamoja na kijana wako pindi watoto wengine wanapokuwa tayari wameenda kulala, au wanacheza nje.", + "type": "template", "note": "" }, { - "SourceText": "Weekly Workshops", - "text": "Warsha za Wiki", - "type": "global", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Vizuri sana! Pengine mnaweza kutembea pamoja kwenda dukani au kwenda kutazama michezo, ili muweze kuzungumza bila watoto wengine kutaka uwasikilize.", + "type": "template", "note": "" }, { - "SourceText": "Weekly Workshop", - "text": "Warsha ya Wiki", - "type": "global", + "SourceText": "DAY – Do it every day", + "text": "SIKU – Fanya kila siku", + "type": "template", "note": "" }, { - "SourceText": "Weekly Workshop Options", - "text": "Machaguo ya Warsha za Wiki", - "type": "global", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "CHEZA – Mwache kijana wako achague shughuli", + "type": "template", "note": "" }, { - "SourceText": "ParentPoints", - "text": "Alama za Mzazi", - "type": "global", + "SourceText": "STAY – Give your teen all of your attention", + "text": "KAA – Mpe kijana wako usikivu wako wote", + "type": "template", "note": "" }, { - "SourceText": "ParentPoint", - "text": "Alama ya Mzazi", - "type": "global", + "SourceText": "Why was this tip helpful for you?", + "text": "Kwa nini kidokezo hiki kilikufaa?", + "type": "template", "note": "" }, { - "SourceText": "Parent Library", - "text": "Maktaba ya Mzazi", - "type": "global", - "note": "" + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "\"@local.choice_1\" kilifaa kwa sababu...", + "type": "template", + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "In-Week Messages", - "text": "Jumbe za Wiki", - "type": "global", - "note": "" + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "\"@local.choice_2\" kilifaa kwa sababu...", + "type": "template", + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "Real-world ideas", - "text": "Mawazo ya ulimwengu halisi", - "type": "global", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "\"@local.choice_3\" kilifaa kwa sababu...", + "type": "template", + "note": "The string @local.choice_3 should not be translated." + }, + { + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Kuwa na muda maalum wa kufanya jambo hili hunisaidia kukumbuka.", + "type": "template", "note": "" }, { - "SourceText": "Ideas", - "text": "Mawazo", - "type": "global", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Kwa kuweka utaratibu, mimi na kijana wangu tunaweza kupata muda wa ziada kwenye ratiba zetu.", + "type": "template", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Mawazo kutoka familia nyingine...", - "type": "global", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Kutumia muda pamoja na kijana wangu kila siku, husaidia kujenga kuaminiana.", + "type": "template", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Changamoto & utatuzi", - "type": "global", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Naam, hata dakika 10 tu za kuwa pamoja huleta mabadiliko makubwa – kufanya hivyo hurahisisha kulipangia ratiba, sambamba na kazi yako na shughuli zako za nyumbani!", + "type": "template", "note": "" }, { - "SourceText": "Submit", - "text": "Tuma", - "type": "global", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "Kuwaruhusu vijana wangu wachague kitu cha kufanya huwajengea kujiamini.", + "type": "template", "note": "" }, { - "SourceText": "Find out more", - "text": "Pata maelezo zaidi", - "type": "global", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "Kama kijana wangu akichagua kitu cha kufanya, kuna uwezekano mkubwa akataka tutumie muda pamoja.", + "type": "template", "note": "" }, { - "SourceText": "Show me how", - "text": "Nionyeshe jinsi ya kufanya", - "type": "global", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "Kumwacha kijana wangu achague kunaonyesha kuwa ninajali mambo anayoyapenda.", + "type": "template", "note": "" }, { - "SourceText": "Tell me more!", - "text": "Nipe maelezo zaidi!", - "type": "global", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Kukubali maoni ya kijana wangu, kunaonyesha kuwa ninamsikiliza.", + "type": "template", "note": "" }, { - "SourceText": "Let's go!", - "text": "Twende!", - "type": "global", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "Kusema vizuri kuhusu chaguo la kijana wangu kunamsaidia kuhisi kuwa anathaminiwa.", + "type": "template", "note": "" }, { - "SourceText": "Check it out!", - "text": "Iangalie!", - "type": "global", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Kweli kabisa! Na vijana wetu wakichagua, wanahamasika pia kuwajibika kwenye nyanja nyingine za maisha yao.", + "type": "template", "note": "" }, { - "SourceText": "Done", - "text": "Imefanyika", - "type": "global", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Kwa kuacha kuingilia anapoongea, ninamuonyesha kijana wangu kuwa yeye ni muhimu zaidi.", + "type": "template", "note": "" }, { - "SourceText": "Next", - "text": "Inayofuata", - "type": "global", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Hata kama siwezi kujiunga na shughuli ya kijana wangu, kama michezo, bado ninaweza kumshabikia.", + "type": "template", "note": "" }, { - "SourceText": "Previous", - "text": "Iliyopita", - "type": "global", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Ninapokuwa makini, ninajifunza mengi mno kuhusu mtazamo, uwezo na mambo anayoyapendelea kijana wangu.", + "type": "template", "note": "" }, { - "SourceText": "Save", - "text": "Tunza", - "type": "global", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "Ndiyo! Kama tutawapa vijana wetu usikivu wetu wote, kuna uwezekano mkubwa nao wakafanya hivyohivyo tutakapowaomba wafanye kitu wakati ujao!", + "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Anza", - "type": "global", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Kuwa mzazi ni kugumu sana. Wakati mwingine inaonekana kama watoto wetu hawatusikilizi kabisa.\n\nLakini sayansi inaonyesha kwamba kutumia dakika chache tu kila siku kutumia muda wa pamoja na kijana wako mkiwa wawili husaidia kujenga uaminifu na upendo.", + "type": "template", "note": "" }, { - "SourceText": "Skip", - "text": "Ruka", - "type": "global", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Muda wa kuzungumza wawili ni ule ambao wewe unamzingatia yeye, bila kutazama runinga au kutumia simu. Hebu mruhusu aongoze kile mnachofanya au mnachozungumzia.\n\nNi jambo zuri zaidi kama utaweza kufanya hivyo kwa dakika ishirini kwa siku, lakini hata dakika tano kwa siku ni jambo zuri sana.", + "type": "template", "note": "" }, { - "SourceText": "Continue", - "text": "Endelea", - "type": "global", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Habari!\n\nMada yetu ya leo inahusu kuzungumza na watoto wetu mkiwa wawili.\n\nNi muhimu kutumia muda tukiwa na watoto wetu ili waweze kutuelewa, na sisi kupata fursa ya kuwaelewa.\n\nKumbuka, familia inayoelewana vizuri huishi kwa utulivu.", + "type": "template", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Malizi kwa kuimba wimbo", - "type": "global", + "SourceText": "Have you spent time with your teen already?", + "text": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", + "type": "template", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Kwa heri!", - "type": "global", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Hongera kwa kufanya jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", + "type": "template", "note": "" }, { - "SourceText": "Your @global.parent_app Code", - "text": "Namba yako ya @global.parent_app", - "type": "global", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Kutumia muda pamoja na kijana wako husaidia kujenga kuaminiana kati yenu.\n\nEndelea na safari yako ya @global.parent_app sasa – wewe na familia yako mtaona matokeo mazuri sana.", + "type": "template", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Terms & Conditions", - "text": "Vigezo & Masharti", - "type": "global", - "note": "" + "SourceText": "First @global.weekly_workshop!", + "text": "@global.weekly_workshop ya kwanza!", + "type": "template", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Privacy Policy", - "text": "Sera ya Faragha", - "type": "global", - "note": "" + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Halo @fields.user_name. @local.workshop_data.in_text_title iko tayari kwa ajili yako.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Make me smile", - "text": "Nifanye nitabasamu", - "type": "global", - "note": "" - }, + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Habari @fields.group_name. @local.workshop_data.in_text_title iko tayari kwa ajili yenu.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + }, { - "SourceText": "Get me going", - "text": "Nifanye niendelee", - "type": "global", - "note": "" + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Asante kwa kutumia @global.parent_app na kujitolea kwa dhati katika malezi yako.\n\n@local.workshop_data.in_text_title yako iko tayari kwa ajili yako!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "My Favourite Relaxes", - "text": "Burudani Zangu Pendwa", - "type": "global", - "note": "" + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Haitachukua muda mrefu, na utapata taarifa muhimu sana.\n\nHongera kwa kujaribu kuwa mzazi bora. Kesho, utaweza kupata kipindi kipya.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "All Relaxes", - "text": "Burudani Zote", - "type": "global", - "note": "" + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn new skills!", + "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop kipya cha kukusaidia kuchukua pumziko, na kujifunza ujuzi mpya!", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop" }, { - "SourceText": "Random Relax", - "text": "Burudani Yoyote", - "type": "global", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "Hebu tufikirie njia za kutumia muda wa pamoja na kijana wako mkiwa wawili.", + "type": "template", "note": "" }, { - "SourceText": "This Week's Relax", - "text": "Burudani ya Wiki Hii", - "type": "global", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "Je, unaweza kuutumiaje muda wa pamoja na kijana wako mkiwa wawili?", + "type": "template", "note": "" }, { - "SourceText": "Listen & Relax (1-2 minutes)", - "text": "Sikiliza na chukua pumziko (dakika 1-2)", - "type": "global", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "Je, unahisi kama HUNA MUDA na umechoka sana? Kumbuka pia kufikiria mambo yasiyotumia muda wa ziada.", + "type": "template", "note": "" }, { - "SourceText": "Listen & Relax (3-5 minutes)", - "text": "Sikiliza na chukua pumziko (dakika 3-5)", - "type": "global", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Unaweza kuchukua muda kuzoea kutumia muda wa pamoja wawili, lakini kadri utakavyofanya hivyo ndivyo itakavyokuwa rahisi zaidi!\n\nWewe ni mzazi wa kustaajabisha kwa kujaribu jambo hili.", + "type": "template", "note": "" }, { - "SourceText": "Do & Relax (5-10 minutes)", - "text": "Fanya na chukua pumziko (dakika 5-10)", - "type": "global", - "note": "" + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "Wewe ni mshindi!\n\nKila siku, tambua kitu ulichofanya vizuri. Jipongeze kwa kitu kinachokufurahisha. Halafu vuta pumzi ndefu ili kujisikia vizuri.\n\nKumbuka, unapata @global.parent_point kila unapojitunza – wewe ni mtu muhimu!", + "type": "template", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "My Favourite Activities", - "text": "Shughuli Zangu Pendwa", - "type": "global", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Mawazo kwa ajili ya muda wa muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja wawili\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "All Activities", - "text": "Shughuli Zote", - "type": "global", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Shughuli za kujithamini\n* Mawazo kwa ajili ya muda wa pamoja\n* Nyenzo: Jinsi ya kutumia muda wa pamoja\nSIKU – CHEZA – KAA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Random Activity", - "text": "Shughuli Yoyote", - "type": "global", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Shirikishaneni mawazo!\n\nJe, ni mambo gani unayoweza kuyafanya ili kutumia muda wa pamoja na vijana wako mkiwa wawili?\n\nJe, unahisi kama HUNA MUDA na umechoka sana? Fikiria mambo ya kufanya wakati wa kutumia muda wa pamoja yasiyotumia muda wa ziada, kama kutembea pamoja kwenda dukani.", + "type": "template", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Shughuli ya Wiki Hii", - "type": "global", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Mnaweza kuchukua muda kuzoea kuzungumza wawili, lakini kadri mtakavyofanya hivyo ndivyo itakavyokuwa bora zaidi!\n\nNyinyi ni wazazi wazuri sana kwa kujaribu jambo hili.", + "type": "template", "note": "" }, { - "SourceText": "Chat Together", - "text": "Kuongea Pamoja", - "type": "global", + "SourceText": "DAY - Try to do it every day", + "text": "SIKU – Jaribu kufanya hivyo kila siku", + "type": "template", "note": "" }, { - "SourceText": "Do Together", - "text": "Fanyeni Pamoja", - "type": "global", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Tafuta dakika 5 (au zaidi!) kila siku wakati kijana wako hana kitu kingine anachotaka kufanya.", + "type": "template", "note": "" }, { - "SourceText": "Tap and type", - "text": "Bonya na uandike", - "type": "global", + "SourceText": "PLAY - Let your teen choose", + "text": "CHEZA – Mwache kijana wako achague", + "type": "template", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Bonya na uchague", - "type": "global", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Mwambie kijana wako kwamba ungependa kutumia muda pamoja naye na kwamba anaweza kuchagua cha kufanya au cha kuzungumzia. Mwanzoni, anaweza kuona kuwa hili ni jambo la ajabu, lakini baadaye atafurahia muda huu wa kuwa na wewe!", + "type": "template", "note": "" }, { - "SourceText": "Type your own", - "text": "Andika yako mwenyewe", - "type": "global", + "SourceText": "STAY - Focus on your teen", + "text": "KAA – Mzingatie kijana wako", + "type": "template", "note": "" }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Nimeielewa hii. Usinionyeshe tena ujumbe huu.", - "type": "global", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Zima runinga na weka simu kando. Mtazame kijana wako. Fanya ishara kwa kichwa au sema \"ndiyo\" ili kuonyesha kuwa unammakinikia. Kubali anachosema bila kumhukumu.", + "type": "template", "note": "" }, { - "SourceText": "Walk to the shops", - "text": "Tembea kwenda madukani", - "type": "global", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Muda wa pamoja na kijana wako mkiwa wawili unaweza kukufurahisha wewe pia! Unaweza hata kukupunguzia msongo wa mawazo.", + "type": "template", "note": "" }, { - "SourceText": "Get water together", - "text": "Fuata maji pamoja", - "type": "global", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Tunajivunia sana wewe. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri. Wewe ni mzuri.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", + "type": "template", "note": "" }, { - "SourceText": "Do a chore together", - "text": "Kufanya pamoja shughuli ya nyumbani", - "type": "global", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Sisi tunajivunia sana nyie. Mmeonyesha uwezo, ujasiri, na upendo kwa familia zenu. Wazazi ni wazuri sana. Wewe ni mzuri sana.\n\nWimbo huu ni zawadi kwa wazazi popote walipo. Sikilizeni, chezeni pamoja na msherehekee!", + "type": "template", "note": "" }, { - "SourceText": "Prepare dinner", - "text": "Andaa chakula cha usiku", - "type": "global", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye malezi.", + "type": "template", "note": "" }, { - "SourceText": "Eat breakfast/lunch/dinner", - "text": "Kula kifungua kinywa/mlo wa mchana/mlo wa usiku", - "type": "global", - "note": "" + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "HONGERA! Umefaulu! Umejifunza stadi 11 muhimu za malezi.\n\nHaya ni mafanikio makubwa. Inaonyesha unavyoijali sana familia yako.\n\nNgoja tukusherehekee, na tupange tutakavyokusaidia baadaye kwenye @global.parent_app.", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Have tea after school", - "text": "Kunywa chai akitoka shule", - "type": "global", + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Habari zenu?\n\nMada ya leo inahusu usherehekeaji na hatua zinazofuata.\n\nLimekuwa jambo zuri sana na la kufurahisha kuwa na wewe kwenye safari hii. Leo tunasherehekea safari yetu pamoja.\n\nLeo tunasherehekea mafunzo yote tuliyojifunza kwa muda wote.", + "type": "template", "note": "" }, { - "SourceText": "Watch a T.V. show", - "text": "Kutazama kipindi cha televisheni", - "type": "global", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Leo utasherehekea, kuangalia tulikotoka na kufikiria yajayo:", + "type": "template", "note": "" }, { - "SourceText": "Review homework", - "text": "Kupitia tena kazi ya nyumbani", - "type": "global", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "* Tafakari & majadiliano\n* Nyenzo: Jinsi ya kusaidiana\nKUTANA – ITA – TUMA UJUMBE – SHIRIKISHA\n* Msaada wa kupanga", + "type": "template", "note": "" }, { - "SourceText": "Chat before bedtime", - "text": "Kuongea kabla ya kulala", - "type": "global", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Leo tutasherehekea na kutafakari kuhusu uzoefu uliyopitia.", + "type": "template", "note": "" }, { - "SourceText": "Play a game/sport", - "text": "Kucheza mchezo", - "type": "global", + "SourceText": "End of programme check-in", + "text": "Mwisho wa kuingia kwenye programu", + "type": "template", "note": "" }, { - "SourceText": "Teens completing school/university", - "text": "Vijana kumaliza shule/chuo kikuu", - "type": "global", - "note": "" + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "Umekuwa ukitumia @global.parent_app kwa miezi kadhaa iliyopita, lakini kumlea kijana ni mchakato wa muda mrefu zaidi! Maswali yanayofuata kuhusu uzoefu wako wa malezi yatatusaidia kutathmini malezi yako.\n\nKuwa mkweli. Kumbuka kuwa mamilioni ya wazazi wanahisi kama unavyohisi, na sote tunastahili kusaidiwa. Hauko peke yako!", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Building/expanding a house for my family", - "text": "Kujenga/kupanua nyumba ya familia yangu", - "type": "global", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "Inaonekana tayari umemaliza mwisho wa kuingia kwenye programu. Sasa unaweza kuruka shughuli hii.", + "type": "template", "note": "" }, { - "SourceText": "Starting a business", - "text": "Kuanzisha biashara", - "type": "global", + "SourceText": "Let's talk about what has changed.", + "text": "Hebu tuzungumzie kilichobadilika.", + "type": "template", "note": "" }, { - "SourceText": "Buying a car for my family", - "text": "Kununua gari ya familia yangu", - "type": "global", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Jadilini pamoja:\n* Je, ni nini kimebadilika kwenye familia yako?\n* Je, umefanya kitu gani unachokionea fahari?\n\nKumbukeni kusifiana na kutiana moyo!", + "type": "template", "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Ugonjwa mbaya au kifo cha rafiki au mwanafamilia", - "type": "global", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Pangeni jinsi mtakavyosaidiana siku zijazo.\n\nMnaweza kutumia mawazo kutoka familia nyingine, au kubuni yenu wenyewe!", + "type": "template", "note": "" }, { - "SourceText": "Robbery", - "text": "Unyang'anyi", - "type": "global", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Wewe na familia yako mmejifunza mengi. Hebu tufikirie hali ilivyokuwa na tuone kilichobadilika.", + "type": "template", "note": "" }, { - "SourceText": "Flooding", - "text": "Mafuriko", - "type": "global", + "SourceText": "Reflect", + "text": "Tafakari", + "type": "template", "note": "" }, { - "SourceText": "Political violence", - "text": "Vurugu za kisiasa", - "type": "global", + "SourceText": "Listen and reflect", + "text": "Sikiliza na utafakari", + "type": "template", "note": "" }, { - "SourceText": "Losing my job", - "text": "Kufukuzwa kazi yangu", - "type": "global", + "SourceText": "Read and reflect", + "text": "Soma na utafakari", + "type": "template", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Janga (UVIKO-19)", - "type": "global", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Fumba macho na chukua pumziko.\n\nFikiria maisha ya familia yako yalivyokuwa kabla ya kuanza safari yako kwenye programu hii.\n\nJikumbushe ujuzi uliojifunza:\n* Kujithamini\n* Muda wa kutumia pamoja wawili\n* Kusifia\n* Maelekezo chanya\n* Kudhibiti msongo wa mawazo\n* Kutengeneza bajeti ya familia\n* Sheria\n* Njia za kufanya athari nyepesi\n* Kutatua matatizo\n* Usalama wa vijana\n* Kushughulikia hali ya matatizo\n\n Tafakari kuhusu safari – je, ilikuwaje kwako:\n* Kushirikishana na wengine mawazo na uzoefu\n* Kutafakari na kujifunza kutokana na Hadithi\n* Kutumia ujuzi kwa kijana wako\n\nJe, kulikuwa na mabadiliko yoyote kwako na kwa familia yako?\n\nJe, unahitaji nini ili kuendelea kutumia ujuzi?", + "type": "template", "note": "" }, { - "SourceText": "At home", - "text": "Nyumbani", - "type": "global", + "SourceText": "MEET", + "text": "KUKUTANA", + "type": "template", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Kununua vitu tunavyoweza kuuza", - "type": "global", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Endeleeni kukutana mara kwa mara ili kupeana msaada wa malezi.", + "type": "template", "note": "" }, { - "SourceText": "At a bank", - "text": "Kwenye benki", - "type": "global", + "SourceText": "CALL", + "text": "KUPIGIANA SIMU", + "type": "template", "note": "" }, { - "SourceText": "In a savings group", - "text": "Kwenye kikundi cha kujiwekea akiba", - "type": "global", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "Kuweni 'marafiki wa malezi' wanaopigiana simu pindi mmoja wenu anaposikitika au asipojua cha kufanya.", + "type": "template", "note": "" }, { - "SourceText": "No gadget use the next day", - "text": "Hakuna kutumia vifaa vya kielektroniki siku inayofuata", - "type": "global", + "SourceText": "TEXT", + "text": "KUTUMIANA UJUMBE WA MAANDISHI", + "type": "template", "note": "" }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Kutulia kwa dakika 5 ukiwa upande mwingine wa chumba", - "type": "global", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Tumianeni ujumbe wa maandishi kila wiki ili kushirikishana kile mlichofanya vizuri.", + "type": "template", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Kuandika barua ya kuomba msamaha", - "type": "global", + "SourceText": "SHARE", + "text": "KUSHIRIKISHANA", + "type": "template", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "Haruhusiwi kuwatembelea marafiki siku inayofuata", - "type": "global", - "note": "" + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Sambaza @global.parent_app ili usaidie familia nyingine kuanza safari yao.", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "Haruhusiwi kuchezea simu baada ya chakula cha usiku (au saa inayofuata)", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.", + "type": "template", + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Muda wa ziada na marafiki wikiendi (saa 1)", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 alichelewa kurudi nyumbani.\n\nJe, athari ipi ingesaidia hapa?", + "type": "template", + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Kupika chakula kipendwacho na kijana", - "type": "global", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Athari hazifanani sana na adhabu: athari huwapa vijana wetu nafasi ya kujifunza kuwajibika kwa matendo yao.\n\nVilevile, athari zinadhibitiwa zaidi NA zina ufanisi zaidi kuliko kuchapa au kupiga kelele!", + "type": "template", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Muda wa ziada akiwa na simu baada ya chakula cha usiku (dakika 30)", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanapigania simu.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Kuangalia pamoja kipindi cha vijana kwenye runinga", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 na @global.w_consequence_teen_girl_2 wanagombania simu.\n\nJe, njia ipi ya athari ingesaidia hapa?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Muda wa ziada wa kuzungumza wawili Jumapili (dakika 30)", - "type": "global", + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Athari hufanikiwa zaidi kama utazijadili na kukubaliana mapema pamoja na vijana wako kabla ya kuzitumia.\n\nNa: si kila athari ni hasi… Mnaweza pia kukubaliana kuhusu athari NJEMA kwa matendo MEMA ili kujenga zaidi tabia chanya!", + "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Vuta pumzi ndefu na utulie kabla ya kujibu", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.", + "type": "template", + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Listen to your teen", - "text": "Msikilize kijana wako", - "type": "global", + "SourceText": "What consequence would help here?", + "text": "Je, athari ipi ingesaidia hapa?", + "type": "template", "note": "" }, { - "SourceText": "Praise your teen for sharing", - "text": "Msifie kijana wako kwa kukushirikisha", - "type": "global", - "note": "" + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 anasaidia kuosha vyombo.\n\nJe, njia ipi ya athari chanya ingesaidia hapa?", + "type": "template", + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Use problem solving skills", - "text": "Tumia ujuzi wa kutatua matatizo", - "type": "global", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Zoezi lako la nyumbani la wiki hii litakuwa kuzungumza na kijana wako kuhusu athari MOJA hasi na athari MOJA chanya.\n\nAthari zinapaswa kuwa za:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati)", + "type": "template", "note": "" }, { - "SourceText": "Work out where you can get help", - "text": "Fikiria mahali unapoweza kupata msaada", - "type": "global", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Tabia Hasi: Kuja nyumbani baada ya muda uliokubaliwa.\n\nMalipo Hasi: Hataenda kuwatembelea marafiki siku inayofuata.\n\nTabia Hasi: Kuongea kwa jeuri.\n\nAthari Hasi: Kuandika barua ya kuomba msamaha.\n \nTabia Chanya: Kusaidia kufanya manunuzi.\n\nAthari Chanya: Kuongezewa dakika 30 za kufanya shughuli yoyote aipendayo.\n\nTabia Chanya: Kusaidia kuwalea wadogo zake.\n\nAthari Chanya: Kuongezewa muda wa saa moja ya kuwa na marafiki mwishoni mwa wiki.", + "type": "template", "note": "" }, { - "SourceText": "Welcome to @global.parent_app", - "text": "Karibu kwenye @global.parent_app", - "type": "tour", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Our actions have consequences: Some consequences happen naturally (“if you break something, you can’t use it anymore”). Other consequences we set as a family to motivate us to follow the rules (“if you come home late, you can’t go out with friends tomorrow”).\n\nHOW you set and use consequences together matters.\n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "Angalizo: Matendo yetu yana matokeo: Baadhi ya matokeo yanatokea kwa kawaida (\"kama ukivunja kitu, huwezi kukitumia tena\"). Adhabu nyepesi nyingine tunaweka kama familia kutuhamasisha kufuata sheria (\"kama ukichelewa kurudi nyumbani, hautatoka na marafiki kesho\"). \n\nJINSI mnavyoweka na kutumia adhabu kwa pamoja ni muhimu.\n\nKuweka adhabu sahihi inasaidia kijana kuwa na tabia njema na kufanya maisha ya familia kuwa na utulivu...", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Karibu kwenye @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unastahili kujisikia vizuri, na kuwa na uhusiano wa kifamilia wenye furaha zaidi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app itakusaidia wewe na familia yako kwa namna tatu:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Habari, kila mmoja.\n\nMaada ya leo ni adhabu tulivu.\n\nNi muhimu kwamba tunapotambulisha adhabu kwa vijana wetu tuwahusishe, lakini pia ni muhimu kwamba sisi ni watulivu tunapotambulisha adhabu.\n\nHiyo itatusaidia kukubaliana kwenye kutambulisha adhabu tulivu kwa vijana wetu na vijana wetu watazikumbuka kirahisi wakiwa wameshirikishwa na kwamba itawafanya kuwa wawajibikaji.", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Kitufe hiki kikubwa kitakupeleka kwenye @global.weekly_workshops zako

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Utapata warsha mpya kwa ajili yako mara moja kwa wiki – kila warsha italenga ujuzi tofauti wa malezi. Bonyeza kitufe ili kuanza warsha yako ya kwanza!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Mara nyingi vijana huvunja sheria. Wakati wa kukua ni wakati mgumu pindi wanapojifunza kwamba wao ni nani.\n\nKwa bahati nzuri, kuna njia za kumuadabisha kijana wako bila kukasirika au kutumia nguvu… na zinafanya kazi vizuri!\n\nKuweka athari husaidia kuwafundisha watoto wetu kuwajibika kwa kile wanachofanya – kiwe kizuri na kibaya.\n\nHapa kuna mifano kadhaa – hebu fikiria kuwa wewe ndiye mzazi:", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Kitufe cha duara kitatokea pindi @global.weekly_workshop mpya inapokuwa tayari kwa ajili yako.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Athari nyepesi zinapaswa kuwa...\n\nHAKI: Si kali sana na zinaweza kufanyika\n\nHARAKA: Zifanywe haraka iwezekanavyo\n\nTHABITI: athari zilezile kila wakati", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Bonyeza kitufe hiki kikubwa kikupeleke kwenye skrini yako ya @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fuatilia mafanikio yako kuhusu kujitunza na malezi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Angalia maendeleo yako.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Sherehekea mafanikio yako ya kila siku!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Panga athari nyepesi kwa vijana wako wanapogombana wakati wa chakula cha usiku.\nKumbuka athari zinatakiwa kuwa\n\nHAKI – HARAKA – THABITI", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Kitufe hiki kitakupeleka kwenye @global.parent_centre

                                                                                                                                                                                  Kimeshehenezwa rasilimali unazozihitaji wakati wowote unapozitaka.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kufika haraka sehemu za msaada kwenye @data.parent_centre.essential_tools kwa kila ujuzi.

                                                                                                                                                                                  \n\n\n\n

                                                                                                                                                                                  Taarifa za ziada na rasilimali janibu.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.essential_tools" + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "Je, wewe na kijana wako mmeweza kupata athari moja chanya na athari moja hasi ya kurekebisha tabia?", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Vyovyote utakavyoanza, kule tu kuwa hapa kunaonesha unajali.

                                                                                                                                                                                  ", - "type": "tour", - "note": "" + "SourceText": "Complete the @global.workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Maliza @global.workshop hiki halafu ujaribu kujadili pamoja na kijana wako ili kupata athari moja chanya na athari moja hasi ya kurekebisha tabia.", + "type": "template", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Go to the @global.weekly_workshops", - "text": "Nenda kwenye @global.weekly_workshops", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "text": "Habari @fields.user_name! Leo tunasherehekea miezi miwili ya kutumia @global.parent_app.\n\nUnafanya vizuri! @global.workshop ya wiki hii itakusaidia kujua nini cha kufanya wakati kijana wako hafuati sheria za nyumbani.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.workshop" }, { - "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Bonyeza kitufe hiki kwenye skrini ya mwanzo ili kwenda kwenye @global.weekly_workshops

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s @global.workshop will help you know what to do when your teen is not following the household rules.", + "text": "Habari @fields.group_name! Leo tunasherehekea miezi miwili ya kutumia @global.parent_app.\n\nUnafanya vizuri! @global.workshop ya wiki hii itakusaidia kujua nini cha kufanya wakati kijana wako hafuati sheria za nyumbani.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app\n@global.workshop" }, { - "SourceText": "Go to the @global.weekly_workshop_options", - "text": "Nenda kwenye @global.weekly_workshop_options", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next @global.workshop to get another parenting tool!", + "text": "Ni jambo zuri sana kwamba umekuwa ukitumia @global.parent_app. Tayari umeshapata nyenzo 6 za malezi!\n\nNenda kwenye @global.workshop inayofuata ili kupata nyenzo nyingine ya malezi!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.workshop" }, { - "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Bonyeza kitufe hiki ili kwenda kwenye @global.weekly_workshop_options

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Athari nyepesi humsaidia sana kijana wako kufuata sheria vizuri – zijaribu kabla ya kuendelea!\n\nHongera kwa kujitoa kwa dhati kwa ajili ya familia yako.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tumia @global.weekly_workshop_options kubadilisha mipangilio yako ya warsha.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new @global.workshop to help you relax, enjoy and learn useful skills!", + "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop mpya ya kukusaidia kupumzika na kujifunza ujuzi muhimu!", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop" }, { - "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Unaweza kubadilisha jina lako hapa.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", + "type": "template", "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Hii inaonesha siku ya wiki ambayo @global.weekly_workshop mpya itakuwa tayari kwa ajili yako.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ukitaka kuibadilisha, bonyeza tu kitufe.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "Ndiyo, mwitikio mkubwa kama huo ulimfanya kila mtu kukasirika zaidi na kusikitika.", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Hii inaonesha @global.weekly_workshop unayojifunza sasa.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Mifano ya athari\n* Nyenzo: Jinsi ya kufanya athari nyepesi \nELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Kama unataka kufanya @global.weekly_workshops kama kikundi au peke yako, unaweza kubadilisha hapa.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Mifano ya athari \n* Nyenzo: Jinsi ya kutoa athari \n* ELEZA – KUBALIANA – TENDA\n* Majadiliano kuhusu sheria & athari \n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Bonyeza hapa kubadili jina la kikundi chako.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Jadilini pamoja:\n* Je, kwa nini amri ya kufanya athari kwa njia hii haikufanikiwa vizuri?", + "type": "template", "note": "" }, { - "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", - "text": "Wiki hii ni kuhusu WEWE! Jitunze vizuri. Unastahili!", - "type": "data_list", - "note": "" + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver alikuwa amekasirika", + "type": "template", + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", - "text": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver hakumruhusu @global.w_consequence_teen_boy_1 kujieleza", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", - "text": "Kumbuka kuwaambia washirika wako kwenye @global.parent_app kubusu program. Kesho, unaweza kuanza kufanya warsha pamoja kwenye @global.parent_app workshops!", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Athari haikujadiliwa kabla na @global.w_consequence_teen_boy_1", + "type": "template", + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Halo @fields.user_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" + "SourceText": "The consequence was too strong", + "text": "Athari ilikuwa ngumu mno", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Halo @fields.group_name. @data.workshop.w_1on1.in_text_title iko tayari kwa ajili yako.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" + "SourceText": "Giving a consequence this way did not work well because...", + "text": "Kufanya athari kwa njia hii haikufanikiwa vizuri kwa sababu...", + "type": "template", + "note": "" }, { - "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", - "text": "Umeweka jitihada kubwa sana ya kuwa mzazi bora. Unapendwa na kuthaminiwa!", - "type": "data_list", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Jadilini pamoja:\n* Je, vijana wako wanavunja sheria gani?\n* Je, unaweza kutumia athari zipi kwa kila sheria maalum iliyovunjwa?\n\nAthari zinapaswa kuwa ya:\nHAKI (zisiwe kali sana)\nHARAKA (zitolewe papo hapo)\nTHABITI (ziwe zilezile kila wakati).\n\nSifianeni na kutiana moyo – tunaweza kupeana nguvu!", + "type": "template", "note": "" }, { - "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", - "text": "Asante kwa kujitolea kwa dhati katika malezi yako.\n\n@data.workshop.w_1on1.in_text_title yako iko tayari kwa ajili yako!", - "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "SourceText": "Let's talk about this story", + "text": "Hebu tuzungumzie hadithi hii", + "type": "template", + "note": "" + }, + { + "SourceText": "Why did using a consequence work well this time?", + "text": "Kwa nini amri ya kufanya athari ilifanikiwa vizuri mara hii?", + "type": "template", + "note": "" + }, + { + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 na @global.w_consequence_male_caregiver wake walijadili kuhusu athari pindi wote walipokuwa wametulia", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + }, + { + "SourceText": "They agreed on consequences together", + "text": "Walikubaliana pamoja kuhusu athari", + "type": "template", + "note": "" + }, + { + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver aliitikia kwa utulivu lakini kwa msimamo pindi @global.w_consequence_teen_boy_1 alipovunja sheria", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + }, + { + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver alimsikiliza @global.w_consequence_teen_boy_1", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + }, + { + "SourceText": "The consequence was realistic and appropriate", + "text": "Athari ziikuwa sahihi na zinazotekelezeka", + "type": "template", + "note": "" + }, + { + "SourceText": "Using a consequence worked well this time because...", + "text": "Kufanya athari kulifanikiwa vizuri mara hii kwa sababu...", + "type": "template", + "note": "" + }, + { + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Jinsi unavyoweka athari ni jambo muhimu. Kumbuka, unapomhusisha kijana wako, kwa kawaida mambo huenda vizuri!", + "type": "template", + "note": "" + }, + { + "SourceText": "EXPLAIN", + "text": "ELEZA", + "type": "template", + "note": "" + }, + { + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Hakikisha nyote wawili mmetulia. Vuta pumzi mara kadhaa. Mweleze kijana wako kwa nini una wasiwasi na tabia zake.\n\nEleza kwa nini sheria hiyo ilikuwa muhimu. Unaweza kumshirikisha hisia zako – si vibaya kusema umesikitika.", + "type": "template", + "note": "" + }, + { + "SourceText": "AGREE", + "text": "KUBALI", + "type": "template", + "note": "" + }, + { + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Panga na kijana wako athari za kufuata sheria na kutofuata sheria.\n\nMwombe atoe maoni yake. Zungumzeni hadi mtakapokubaliana kuhusu kitu halisi.\n\nWeka athari za KUTOFUATA sheria na upendeleo pindi WANAPOFUATA sheria.", + "type": "template", + "note": "" + }, + { + "SourceText": "ACT", + "text": "TENDA", + "type": "template", + "note": "" + }, + { + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Kijana wako anapofuata sheria, msifie na mpe upendeleo!", + "type": "template", + "note": "" + }, + { + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "Atahisi kuheshimiwa na kuthaminiwa. Kumbuka: Kadri unavyomsifia, ndivyo atakavyozidi kuonyesha tabia hiyo nzuri!", + "type": "template", + "note": "" + }, + { + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Kijana wako asipofuata sheria, amuru afanye athari.", + "type": "template", + "note": "" + }, + { + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Kijana wako anapovunja sheria, amuru kwa utulivu afanye athari. Athari ziwe za HAKI (zisiwe kali sana), za HARAKA (zitolewe papo hapo) na THABITI (ziwe zilezile kila wakati).", + "type": "template", + "note": "" + }, + { + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "Je, athari gani nyepesi ambazo unaweza kuweka kwa vijana wako wanapogombana wakati wa chakula cha usiku?\n\nKumbuka malipo yanatakiwa kuwa ya:\nHAKI – HARAKA – THABITI", + "type": "template", + "note": "" + }, + { + "SourceText": "Not seeing any friends for a month", + "text": "Hakuna kumtembelea rafiki yeyote kwa mwezi mmoja", + "type": "template", + "note": "" + }, + { + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Kufanya hivyo kunaweza kuwa vigumu na ukatili kwako!", + "type": "template", + "note": "" + }, + { + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Kufuta mipango yao ya kusherehekea siku ya kuzaliwa kwa muda wa mwezi mmoja", + "type": "template", + "note": "" + }, + { + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Hii ni mbali sana, na ni ukatili mno!", + "type": "template", + "note": "" + }, + { + "SourceText": "No TV this evening", + "text": "Hakuna kuangalia runinga jioni ya leo", + "type": "template", + "note": "" + }, + { + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Vizuri sana! Hiyo inaonekana kuwa ni haki na inaweza kufanywa mara moja", + "type": "template", + "note": "" + }, + { + "SourceText": "You’ve completed your @global.workshop. \n\nThe next @global.workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "Umemaliza @global.workshop ya wiki hii.\n\n@global.workshop inayofuata itawasheherekea wote, na kuwasaidia kupanga mipango ya siku zijazo.\n\nKwa nini msipange kufanya sherehe ya chakula pamoja, na kuandaa muziki kama mtapenda kucheza!", + "type": "template", + "note": "The following strings should not be translated:\n@global.workshop\n@global.workshop" + }, + { + "SourceText": "You’ve completed your @global.workshop. \n\nThe next @global.workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "Umemaliza @global.workshop ya wiki hii.\n\n@global.workshop ya wiki ijayo tutakusherehekea, na unaweza kuchagua msaada unaoutaka ili kusonga mbele.\n\nUnaweza kuandaa sherehe – kitu unachopenda kula, au muziki unaopenda kusikiliza!", + "type": "template", + "note": "The following strings should not be translated:\n@global.workshop\n@global.workshop" + }, + { + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "Chagua hali mojawapo kati ya hizi pamoja na kijana wako (au chagua mwenyewe!). Angalieni katuni, halafu mjadili pamoja mtafanya nini kama hali hiyo itatokea kwa rafiki au kwenye familia yenu.\n\nNa kumbukeni: VUTA PUMZI – SIKILIZA – FIKIRI", + "type": "template", + "note": "" + }, + { + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Kila familia hukabiliwa na hali ya hatari. Tunapojiandaa pamoja na kujua mahali pa kupata msaada KABLA ya kutokea kwa jambo baya, tunaweza kuishinda hali yoyote ya hatari.", + "type": "template", + "note": "" + }, + { + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Habari zenu?\n\nMada ya leo inahusu kushughulikia hali ya hatari.\n\nHali ya hatari inaweza kutokea mahali popote. Hali ya hatari inaweza kutokea wakati wowote. Kwa hiyo, kama familia, ni muhimu kuwa na mipango ya kukabiliana na hatari kwa ajili ya mwanafamilia yeyote atakayejikuta kwenye hali ya hatari.\n\nNi muhimu kuwa na mipango ili kila mwanafamilia ahisi kulindwa.\n\nUnaposhughulikia hali ya hatari, kumbuka kupumzika, kupumua, na kutulia. Kufanya hivyo kutakusaidia kushughulikia hali ya hatari vizuri zaidi.", + "type": "template", + "note": "" + }, + { + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Inasaidia sana kufanyia mazoezi namna ya kukabiliana na hali ya matatizo kabla haijatokea.\n\nHebu angalia nyakati hizi tano za matatizo katika familia. Chukulia kwamba wewe ni mzazi: Ungefanya nini?\n\nKumbuka: VUTA PUMZI – SIKILIZA – FIKIRI", + "type": "template", + "note": "" + }, + { + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Tatizo la kwanza: @global.w_crisis_teen_boy_2 amepigana shuleni", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + }, + { + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: \"Sijawahi kufanya hivi. Na sasa watanifukuza.\"", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + }, + { + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "Utafanyaje kwa @global.w_crisis_teen_boy_2?", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + }, + { + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_2 gets pregnant", + "text": "Tatizo la 2: @global.w_crisis_teen_girl_2 amepata ujauzito", + "type": "template", + "note": "The string @global.w_crisis_teen_girl_2 should not be translated." + }, + { + "SourceText": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_2: \"@global.w_crisis_male_caregiver_1, nina aibu sana. Sijui la kufanya\"", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_2\n@global.w_crisis_male_caregiver_1" + }, + { + "SourceText": "How could you respond to @global.w_crisis_teen_girl_2?", + "text": "Je, unaweza kumjibu vipi @global.w_crisis_teen_girl_2?", + "type": "template", + "note": "The string @global.w_crisis_teen_girl_2 should not be translated." + }, + { + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_1 makes a girl pregnant", + "text": "Tatizo la 3: @global.w_crisis_teen_boy_1 kumpa msichana mimba", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + }, + { + "SourceText": "@global.w_crisis_teen_boy_1: \"I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_1: \"Sitaki kuwa na mtoto\"", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + }, + { + "SourceText": "How could you respond to @global.w_crisis_teen_boy_1?", + "text": "Je, unaweza kumjibu vipi @global.w_crisis_teen_boy_1?", + "type": "template", + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + }, + { + "SourceText": "Crisis 4: Someone in the family may get sick", + "text": "Tatizo la 4: Mmoja ya wanafamilia anaweza kuwa mgonjwa", + "type": "template", + "note": "" + }, + { + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "\"Vipimo vimeonesha nina VVU. Ninaogopa, nitakufa\"", + "type": "template", + "note": "" + }, + { + "SourceText": "How could you respond in this situation?", + "text": "Je, unafanyaje kwenye hali hii?", + "type": "template", + "note": "" + }, + { + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Tatizo la Tano: @global.w_crisis_teen_girl_1 anashinikizwa kufanya ngono na mpenzi wake", + "type": "template", + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + }, + { + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: \"Kwa kweli sikutaka kabisa kufanya hivyo. Sasa nitapata mimba au nitaumwa. @global.w_crisis_female_caregiver, ninaogopa sana...\"", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + }, + { + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "Je, utafanyaje kwa @global.w_crisis_teen_girl_1?", + "type": "template", + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + }, + { + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Kumbukeni kusaidiana na kutiana moyo. Ni vigumu kuendelea kutulia na kusikilizana kwenye hali ya tatizo – tunawaonea fahari.", + "type": "template", + "note": "" + }, + { + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "Je, umejadili na kijana wako kuhusu nini mnachoweza kufanya katika kipindi cha matatizo?", + "type": "template", + "note": "" + }, + { + "SourceText": "Crisis Examples", + "text": "Mifano ya Hali ya Tatizo", + "type": "template", + "note": "" + }, + { + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "Wewe ni mzazi makini. Jipongeze - haya ni mafanikio makubwa sana!", + "type": "template", + "note": "" + }, + { + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @local.workshop_data.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "text": "Habari @fields.user_name! janga linaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.workshop" + }, + { + "SourceText": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis @global.workshop will show you how.", + "text": "Habari @fields.group_name! janga linaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\n@global.workshop hii itakuonyesha jinsi ya kujiandaa mapema.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.workshop" + }, + { + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next @global.workshop to explore how you can do this together with your teen.", + "text": "Hatujui lini matatizo yanaweza kutokea, lakini TUNAWEZA kujiandaa!\n\nAnza @global.workshop cha wiki ijayo kwa kutafuta jinsi gani unaweza kufanya hii pamoja na kijana wako.", + "type": "template", + "note": "The string @global.workshop should not be translated." + }, + { + "SourceText": "Tomorrow the final @global.parent_app @global.workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Kesho @global.parent_app @global.workshop ya mwisho itakuwa tayari kwa ajili yako. \n\nJaribu kumaliza @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Kwa namna hiyo unaweza kumaliza vidokezo vyote vya ujuzi wa malezi na kuamua nini cha kufanya baada ya hapo!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.workshop\n@local.workshop_data.in_text_title" + }, + { + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final @global.workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata @global.workshop ya mwisho ili kutafakari kuhusu safari yako kwenye @global.parent_app na kile unachoweza kufanya baadaye!", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop\n@global.parent_app" + }, + { + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "Ndiyo, kwa hakika @global.w_crisis_female_caregiver alitumia ujuzi huo wote – na wewe pia unaweza!", + "type": "template", + "note": "The string @global.w_crisis_female_caregiver should not be translated." + }, + { + "SourceText": "All these skills can help in a crisis.", + "text": "Ujuzi wote huu unaweza kusaidia kwenye hali ya hatari.", + "type": "template", + "note": "" + }, + { + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Kila jambo dogo unalolifanya ni la muhimu. Tunatumaini kuwa unajionea fahari pia.", + "type": "template", + "note": "" + }, + { + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & majadiliano\n* Hadithi & majadiliano\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & tafakari\n* Hadithi & tafakari\n* Nyenzo: Jinsi ya kushughulikia hali ya hatari\nVUTA PUMZI – SIKILIZA – FIKIRI\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_girl_1 na @global.w_crisis_female_caregiver wake! Jambo hili linaweza kuwatokea wavulana na wasichana.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + }, + { + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "Je, @global.w_crisis_female_caregiver alitumia ujuzi upi?", + "type": "template", + "note": "The string @global.w_crisis_female_caregiver should not be translated." + }, + { + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "Huu ulikuwa wakati mgumu sana kwa @global.w_crisis_teen_boy_1 na @global.w_crisis_male_caregiver_1 wake!", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + }, + { + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "Je, @global.w_crisis_male_caregiver_1 alitumia ujuzi upi?", + "type": "template", + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + }, + { + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Mgogoro unaweza kutufanya tukasirike au tujione wanyonge. Lakini huo ndio wakati hasa ambao vijana wetu wanatuhitaji sisi. Tuvute pumzi, tusikilize na kufikiri.", + "type": "template", + "note": "" + }, + { + "SourceText": "BREATHE", + "text": "VUTA PUMZI", + "type": "template", + "note": "" + }, + { + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Tulia. Jiulize 'kijana wangu anahitaji nini sasa hivi'", + "type": "template", + "note": "" + }, + { + "SourceText": "LISTEN", + "text": "SIKILIZA", + "type": "template", + "note": "" + }, + { + "SourceText": "Tell them you are there for them and love them.", + "text": "Mwambie upo kwa ajili yake na mpende.", + "type": "template", + "note": "" + }, + { + "SourceText": "THINK", + "text": "FIKIRI", + "type": "template", + "note": "" + }, + { + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Zungumza na kijana wako. Kitu gani kinaweza kusaidia kwenye hali hiyo? Unaweza kutakiwa kupanga mipango ya haraka sasa, halafu mipango ya muda mrefu baadaye.", + "type": "template", + "note": "" + }, + { + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "Jionee fahari kwa kutafuta njia za kupata msaada!", + "type": "template", + "note": "" + }, + { + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Zoezi la nyumbani la wiki hii ni kumpa kijana wako maelekezo chanya.\n\nKumbuka – KUTOA MAELEKEZO YANAYOTEKELEZEKA, KUWA NA MTAZAMO CHANYA, KUELEWEKA = KUPATA KILE HASA UNACHOKITAKA (kadri ya uwezo wa kijana!)", + "type": "template", + "note": "" + }, + { + "SourceText": "Did you have any challenges?", + "text": "Je, ulipata changamoto zozote?", + "type": "template", + "note": "" + }, + { + "SourceText": "My teenager did not want to follow the instruction.", + "text": "Kijana wangu hakutaka kufuata maagizo.", + "type": "template", + "note": "" + }, + { + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Sikupata muda wa kutumia pamoja na kijana wangu tukiwa wawili.", + "type": "template", + "note": "" + }, + { + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Nilitoa maagizo hasi badala ya maagizo chanya.", + "type": "template", + "note": "" + }, + { + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Nilimfokea kijana wangu wakati alipoonesha tabia hasi, badala ya kumpa maelekezo chanya ya nini anapaswa kufanya.", + "type": "template", + "note": "" + }, + { + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Changamoto kuu @local.number_of_challenges ambazo wazazi wengine wanazopitia:", + "type": "template", + "note": "The string @local.number_of_challenges should not be translated." + }, + { + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Najua; Watoto wetu wanahitaji muda wa kujifunza kufuata maelekezo. Kuwa na subira, jaribu tena, na ukumbuke kuwasifu kila wakati wanapofuata maelekezo!", + "type": "template", + "note": "" + }, + { + "SourceText": "Do you want to try one of the following things?", + "text": "Je, unataka kujaribu kitu kimojawapo kati ya hivi vifuatavyo?", + "type": "template", + "note": "" + }, + { + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Fikiria kutenga muda wa dakika tano au zaidi kila siku.", + "type": "template", + "note": "" + }, + { + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Tafuta kazi ya nyumbani ambayo tunaweza kufanya pamoja kwa namna ya kufurahisha.", + "type": "template", + "note": "" + }, + { + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Namuomba kijana wangu au mtu mwingine kunisaidia kuifanya kazi ya nyumbani, ili niwe na muda kidogo wa ziada.", + "type": "template", + "note": "" + }, + { + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Safi sana! Hata kutumia dakika 5 kunaleta mabadiliko, na ukifanya hivyo kwa muda uleule kila siku (kama vile wakati wa kifungua kinywa au kabla ya kwenda kulala), itakuwa rahisi zaidi kuendelea kufanya hivyo!", + "type": "template", + "note": "" + }, + { + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Safi sana! Kwa njia hiyo, unafanya kazi yako na kuwa na wakati wa kufurahisha pamoja na kijana wako!", + "type": "template", + "note": "" + }, + { + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Vizuri sana! Kwa kushirikiana kutekeleza majukumu, utakuwa na muda zaidi wa kufanya jambo la kufurahisha na kijana wako – ni muhimu sana!", + "type": "template", + "note": "" + }, + { + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "Ndiyo, inachukua muda kuzoea kutoa maelekezo chanya – inafaa kujaribu tena! Fikiria tabia ambayo ungependa kuona kijana wako akizidi kuifanya na fikiria namna chanya za kutoa maagizo hayo!", + "type": "template", + "note": "" + }, + { + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Ni vigumu kutoa maelekezo tukiwa bado tumekasirika. Jaribu kutafuta muda utakaokuwa umetulia ili kutoa maelekezo chanya kwa kijana wako.\n\nKatika warsha inayofuata ya @global.weekly_workshop, tutazungumzia zaidi namna tunavyoweza kudhibiti hisia zetu! Unaweza kupata shughuli zaidi za kujipumzisha kwenye @data.parent_centre.relax_and_activities.location_text.", + "type": "template", + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + }, + { + "SourceText": "Which of the tips helped you?", + "text": "Vidokezo vipi vilikusaidia?", + "type": "template", + "note": "" + }, + { + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "TAZAMA UHALISIA – Je, kijana wako anaweza kufanya kile unachotaka kumwagiza?", + "type": "template", + "note": "" + }, + { + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "KUWA NA MTAZAMO CHANYA - Tumia maneno chanya na msifie!", + "type": "template", + "note": "" + }, + { + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "ELEWEKA – Kuwa bayana na maalum!", + "type": "template", + "note": "" + }, + { + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Safi sana! Tunapowaagiza vijana wetu wafanye jambo linalotekelezeka, ni rahisi zaidi kwao kufaulu.", + "type": "template", + "note": "" + }, + { + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Tunapowasifia vijana wetu, wanahamasika kutusikiliza tena!", + "type": "template", + "note": "" + }, + { + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Safi! Tunapofikiria mapema maelekezo maalum ya kuwapa vijana wetu, inawawia rahisi sana kufuata maelekezo yetu!", + "type": "template", + "note": "" + }, + { + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Zingatia mambo chanya!\n\nKuwaambia vijana wetu kile hasa tunachotaka wafanye ni vizuri kuliko kuwakataza kufanya kitu.\n\nUtaona mabadiliko.", + "type": "template", + "note": "" + }, + { + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Habari zenu?\n\nLeo mada yetu inahusu maelekezo chanya.\n\nNi muhimu kutoa maelekezo chanya kwa watoto wetu, kwa sababu tunapowapa maelekezo chanya, wanajua na kuelewa kile tunachotarajia wakifanye, na wanakifanya kwa namna tunavyotaka wakifanye.\n\nKwa hiyo, mwishowe kila mtu hufurahi.", + "type": "template", + "note": "" + }, + { + "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", + "text": "Bado hujaweka alama yoyote kwenye @data.habit.instruct_positively.title @global.parent_points. \n\nIjaribu leo!", + "type": "template", + "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + }, + { + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", + "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + }, + { + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", + "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" + }, + { + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Jipongeze kwa kazi kubwa unayoifanya. Hakuna mzazi aliye kamili, na tunafikiri unafanya vizuri sana!", + "type": "template", + "note": "" + }, + { + "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", + "text": "Maelekezo chanya husaidia kuleta tabia nzuri zaidi na zaidi!\n\nMaliza @local.workshop_data.in_text_title ili kupata mawazo kuhusu namna jambo hili linavyoweza kufanya kazi kwenye familia yako.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\n@global.workshop cha wiki hii ni kuhusu jinsi ya kuongeza uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.workshop" + }, + { + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s @global.workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 4 ya @global.parent_app.\n\n@global.workshop ya wiki hii ni kuhusu jinsi ya kuongeza uwezo wako wa kumfanya kijana wako afanye kile unachomuagiza kufanya.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app\n@global.workshop" + }, + { + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's @global.workshop to learn how giving positive instructions can help - a lot.", + "text": "Je, kijana wako anakusikiliza kila mara? Kama hakusikilizi kila mara (kama ilivyo kwetu sisi wengine wote), angalia @global.workshop ya wiki hii ili ujifunze namna ya kutoa maelekezo chanya yanavyoweza kusaidia.", + "type": "template", + "note": "The string @global.workshop should not be translated." + }, + { + "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous @global.workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Kama kawaida, unaweza kupata @global.workshop kipya kesho. Litakuwa jambo zuri kumalizia kipindi kilichopita kabla ya wakati huo.\n\nWazazi wengine wanatumia programu hii wanaposafiri kwenda kazini. Kwa nini usitumie programu hii unapopata muda wa kutulia?\n\nAsante kwa mara nyingine kwa kutumia @global.parent_app.", + "type": "template", + "note": "The following strings should not be translated:\n@global.workshop\n@global.parent_app" + }, + { + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new @global.workshop is ready for you: you will see a big difference by making small changes!", + "text": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, @global.workshop mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop" + }, + { + "SourceText": "Said something nice first", + "text": "Alisema kitu kizuri kwanza", + "type": "template", + "note": "" + }, + { + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "Ameongea na @global.w_instruct_teen_girl kwa sauti ya utulivu", + "type": "template", + "note": "The string @global.w_instruct_teen_girl should not be translated." + }, + { + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "Alimwambia @global.w_instruct_teen_girl kile anachotaka afanye", + "type": "template", + "note": "The string @global.w_instruct_teen_girl should not be translated." + }, + { + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", + "type": "template", + "note": "The string @global.w_instruct_female_caregiver should not be translated." + }, + { + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver aliweza kutulia", + "type": "template", + "note": "The string @global.w_instruct_female_caregiver should not be translated." + }, + { + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver alikuwa na mtazamo chanya", + "type": "template", + "note": "The string @global.w_instruct_female_caregiver should not be translated." + }, + { + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver walijisikiaje?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Je, kwa nini unadhani mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", + "type": "template", + "note": "The string @global.w_instruct_female_caregiver should not be translated." + }, + { + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Jaribio la kufikiria\n* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Jaribio la kufikiria\n* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kutoa maelekezo chanya\nFANYA KINACHOTEKELEZEKA – KUWA NA MTAZAMO CHANYA – ELEWEKA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Jadilini pamoja:\n\n* Je, unafikiri @global.w_instruct_teen_girl alijisikiaje namna @global.w_instruct_female_caregiver alivyojibu?\n* Je, @global.w_instruct_female_caregiver angeweza kufanya nini tofauti?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver angeweza...", + "type": "template", + "note": "The string @global.w_instruct_female_caregiver should not be translated." + }, + { + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* Kusema kitu kizuri kwanza\n* Angeongea na @global.w_instruct_teen_girl kwa sauti ya utulivu\n* Kumwambia @global.w_instruct_teen_girl kile anachotaka afanye", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + }, + { + "SourceText": "Let's discuss what happened this time.", + "text": "Hebu tujadili kilichotokea wakati huu.", + "type": "template", + "note": "" + }, + { + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Jadilini pamoja:\n\n* Je, @global.w_instruct_teen_girl na @global.w_instruct_female_caregiver wanajisikiaje sasa?\n* Je, mnadhani ni kwa nini mambo yalimwendea vizuri @global.w_instruct_female_caregiver mara hii?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "Positive instructions can work with your teen too!", + "text": "Maelekezo chanya yanaweza pia kufanya kazi kwa kijana wako!", + "type": "template", + "note": "" + }, + { + "SourceText": "It worked better this time because...", + "text": "Mara hii mambo yalienda vizuri kwa sababu...", + "type": "template", + "note": "" + }, + { + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl alihisi kuheshimiwa na kupendwa na @global.w_instruct_female_caregiver wake\n* @global.w_instruct_female_caregiver aliweza kutulia \n* @global.w_instruct_female_caregiver alikuwa na mtazamo chanya", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + }, + { + "SourceText": "Let’s do a thought experiment!", + "text": "Hebu tufanye jaribio la kufikiria!", + "type": "template", + "note": "" + }, + { + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "USIFIKIRI KUHUSU TEMBO\n\nUnafikiri kuhusu nini?", + "type": "template", + "note": "" + }, + { + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Inawezekana ulifikiri kuhusu tembo...\n\nMaelekezo ya 'usifanye kitu hiki' huwafanya vijana wafikirie kuhusu kitu hicho.\n\nWakati mwingine huwa hawaelewi kile TULICHOTAKA wakifanye.\n\nPia, mara nyingi hawapendi kuambiwa wasifanye vitu fulani (kuna mtu yeyote anayependa?)", + "type": "template", + "note": "" + }, + { + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "SASA, FIKIRI KUHUSU DUMA!\n\nJe, unafikiri kuhusu nini?", + "type": "template", + "note": "" + }, + { + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "Hapo sawa! Maelekezo chanya na bayana huwasaidia vijana kuzingatia kile wanachopaswa kufanya.\n\nKwa njia hiyo, vijana pia watahisi kuheshimiwa zaidi, na wana uwezekano mkubwa wa kusikiliza.", + "type": "template", + "note": "" + }, + { + "SourceText": "GET REAL", + "text": "KUWA HALISI", + "type": "template", + "note": "" + }, + { + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "Je, kijana wako anaweza kweli kufanya kile unachotaka kumwambia? Inaweza kuwa vigumu kwao kusoma kimya kwa siku nzima, lakini ukimwambia afanye hivyo kwa nusu saa unapohitaji sana afanye hivyo, ni jambo linalotekelezeka.", + "type": "template", + "note": "" + }, + { + "SourceText": "GET POSITIVE", + "text": "KUWA NA MTAZAMO CHANYA", + "type": "template", + "note": "" + }, + { + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Tabasamu, mwangalie machoni, na tumia maneno chanya. Msifie mara tu anapoanza kufanya kile unachotaka!", + "type": "template", + "note": "" + }, + { + "SourceText": "GET CLEAR", + "text": "KUWA BAYANA", + "type": "template", + "note": "" + }, + { + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Mara nyingi tunajua nafsini mwetu kile tunachokitaka, lakini hakitusemi bayana kiasi cha kueleweka. Sema kile unachotaka kuona kijana wako akifanye. Jaribu kusema 'tafadhali, ifikapo saa 1 jioni uwe tayari umerudi nyumbani' badala ya kusema 'uwahi kurudi nyumbani'.", + "type": "template", + "note": "" + }, + { + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "Hebu tufanye mazoezi ya kutoa maelekezo YANAYOTEKELEZEKA, CHANYA, na BAYANA. Kufanya mazoezi kutakusaidia kufanikiwa kwa kijana wako!", + "type": "template", + "note": "" + }, + { + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Chagueni watu wawili kwenye kikundi chenu:\n* Mtu mmoja ataigiza kama kijana\n* Mwingine ataigiza kama mzazi wa kijana\n* “Mzazi”: Mpe \"kijana\" wako maelekezo chanya kwa kumtia moyo na kumsifia\n* “Kijana”: Itikia kama unavyodhani kijana ataitikia maneno hayo\n\nJadilini pamoja jinsi mambo yalivyoenda:\n* Je, imekufanya ujisikieje kama \"mzazi\" na kama \"kijana\"?\n* Je, unaweza kufanya chochote vizuri zaidi?\n\nMpeni kila mtu nafasi ya kuwa \"mzazi\" na \"kijana\" kama mnaweza. Mazoezi huleta ufanisi!", + "type": "template", + "note": "" + }, + { + "SourceText": "Examples of positive instructions:", + "text": "Mifano ya maelekezo chanya:", + "type": "template", + "note": "" + }, + { + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ninapenda muziki wako. Je, unaweza kupunguza sauti wakati wa chakula ili tuweze kuzungumza? Asante – Ninashukuru sana kufanya hivyo.\n* Huo muziki ni mzuri sana. Umeimbwa na nani? Tafadhali zima muziki unapoingia nyumbani. Ukitaka, unaweza kuupiga chumbani mwako kwa sauti ya chini. Asante!", + "type": "template", + "note": "" + }, + { + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Tengeneza tena bajeti – mara hii pamoja NA kijana wako na familia yako!\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – mtatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "type": "template", + "note": "" + }, + { + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Tengeneza bajeti na kijana wako na familia yako.\n\nHili ni jambo muhimu na la kufurahisha la kufanya na familia yako – linatumia kama dakika 30.\n\nKutengeneza bajeti pamoja husaidia vijana kuelewa kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "type": "template", + "note": "" + }, + { + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Pitia tena bajeti yako na kijana wako na familia yako. Kufanya hivyo kutamkumbusha kila mtu kwamba sisi sote tunahitaji kufanya maamuzi magumu wakati mwingine – vilevile kwamba bajeti inatusaidia kuwa na pesa za kutosha mwishoni mwa mwezi na kutimiza malengo yetu!\n\nBajeti zimesaidia mamilioni ya familia.", + "type": "template", + "note": "" + }, + { + "SourceText": "Steps to make a budget", + "text": "Hatua za kutengeneza bajeti", + "type": "template", + "note": "" + }, + { + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Familia nyingi zina msongo wa mawazo kutokana na pesa, hasa pale vijana wanapoendelea kuomba vitu!\n\nTunapotengeneza bajeti pamoja, tunaweza kukubaliana jinsi ya kufanya matumizi pamoja NA kuweka akiba ili kuzuia msongo wa mawazo na kutekeleza malengo ya familia zetu.", + "type": "template", + "note": "" + }, + { + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Habari zenu?\n\nMada ya leo inahusu kutengeneza bajeti ya familia.\n\nKutengeneza bajeti ni muhimu, lakini kutengeneza bajeti kwa kuhusisha familia nzima ni muhimu zaidi.\n\nKufanya hivyo pamoja husaidia kuongeza uelewa kuhusu jinsi mnavyotumia pesa kama familia na kiasi mnachoweka akiba kwa ajili ya familia, na mnaweza hata kubuni mipango ya kuweka akiba kama familia.", + "type": "template", + "note": "" + }, + { + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja. Unahitaji:\n\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", + "type": "template", + "note": "" + }, + { + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "Bajeti ya familia inaweza kumsaidia @global.w_money_grandma – na WEWE!", + "type": "template", + "note": "The string @global.w_money_grandma should not be translated." + }, + { + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Kuna hatua nne za kutengeneza bajeti ya familia:\n\nHatua ya Kwanza: FIKIRI\nHatua ya Pili: CHAGUA\nHatua ya Tatu: TENGENEZA\nHatua ya Nne: PANGA\n\nHebu tupitie hatua hizi pamoja.", + "type": "template", + "note": "" + }, + { + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "Unahitaji:\n- Karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu\n- Hindi au maharage au kitu chochote chenye chembechembe nyingi kitakachowakilisha pesa\n\nTumia dakika moja kutafuta vitu hivyo kabla hatujaanza hatua ya kwanza.", + "type": "template", + "note": "" + }, + { + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* chakula\n* maji & umeme\n* mavazi\n* akaunti\n* king'amuzi cha runinga\n* vifaa vya usafi wa mwili\n* saluni\n* muda wa maongezi\n* ada ya shule\n* usafiri\n* bima\n* matibabu\n* michezo/burudani\n* kodi ya nyumba\n* mikopo\n* ibada", + "type": "template", + "note": "" + }, + { + "SourceText": "Think about what we spend money on each month.", + "text": "Fikiria mambo tunayotumia pesa kila mwezi.", + "type": "template", + "note": "" + }, + { + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora picha za vitu vyote vinavyokufanya wewe na familia yako mtumie pesa kila mwezi.\n* Andika pembeni mwa kila picha kiasi ambacho kitu hicho kinagharimu kila mwezi. (Hakuna haja ya kuwashirikisha wengine viwango hivyo kama hautaki kufanya hivyo.)\n* Jumlisha kiasi cha pesa unazotakiwa kutumia kila mwezi.", + "type": "template", + "note": "" + }, + { + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Inastaajabisha! Umemaliza hatua ya kwanza!\n\nTuendelee!", + "type": "template", + "note": "" + }, + { + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Zungumzeni pamoja kuhusu mahitaji yenu na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", + "type": "template", + "note": "" + }, + { + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Mara nyingi watu huona mambo kwa namna inayotofautiana. Tunapozungumzia mahitaji na matamanio yetu, tunaelewana vizuri zaidi na tunaweza kufanya uchaguzi mzuri zaidi pamoja kuhusu jinsi ya kutumia pesa zetu.\n\nAngalieni orodha yenu ya vitu mnavyotumia pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", + "type": "template", + "note": "" + }, + { + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Fikirieni kuhusu mahitaji na matamanio yenu\n\nMATAMANIO: Vitu ambavyo mnaweza kuishi bila kuwa navyo\nMAHITAJI: Vitu ambavyo hamuwezi kuishi bila kuwa navyo", + "type": "template", + "note": "" + }, + { + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Angalieni orodha yenu ya vitu mnavyotumia, pesa na mchague:\n* Je, vitu gani ni MAHITAJI ambayo hamuwezi kuishi bila kuwa nayo? Kwanini?\n* Je, vitu gani ni MATAMANIO kwani vinapendeza kuwa navyo lakini si vya lazima? Kwanini?\n* Je, kama familia, ni vitu gani vinaweza kuwafanya mjaribu kutumia pesa kidogo?", + "type": "template", + "note": "" + }, + { + "SourceText": "Make a budget!", + "text": "Tengeneza bajeti!", + "type": "template", + "note": "" + }, + { + "SourceText": "Make a budget as one big family!", + "text": "Tengeneza bajeti kama familia moja kubwa!", + "type": "template", + "note": "" + }, + { + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Mtu mmoja ajitolee kuwashirikisha wengine orodha yake (Kama hakuna mtu anayejitolea, mnaweza kutengeneza orodha mpya pamoja)\n* Gawaneni majukumu – wengine watakuwa watu wazima, wengine watakuwa vijana.\n* Amueni kipato chenu kwa mwezi ni kiasi gani.\n* Chukueni hindi au maharage kadhaa au kitu chochote chenye chembechembe nyingi – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni pamoja mtatumia kiasi gani kwenye kitu gani, na muweke mawe/vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", + "type": "template", + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + }, + { + "SourceText": "Make a budget as a family!", + "text": "Tengeneza bajeti kama familia!", + "type": "template", + "note": "" + }, + { + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Andikeni kipato chenu kwa mwezi.\n* Chukueni hindi au maharage kadhaa au kitu chochote cha chembechembe – hicho ndicho kipato chenu kwa mwezi.\n(Kwa mfano: Kama kipato chenu ni @global.currency@local.monthly_income, na mna maharage @local.number_of_beans, kila harage ni @global.currency@local.bean_value.)\n* Amueni mtatumia kiasi gani kwenye kitu gani, na muweke hindi /vitu kwenye picha hiyo.\n\nHamna hakika kuhusu maamuzi yenu? Mnasumbuka kuamua \"mahitaji\" ni yapi na \"matamanio\" ni yapi? Hakuna shida kabisa!", + "type": "template", + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + }, + { + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Pangeni jinsi mnavyoweza kuweka akiba ya pesa, ili muweze kukabiliana na dharura na kutimiza malengo ya familia yenu!", + "type": "template", + "note": "" + }, + { + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "Kama mnaweza kuweka akiba hata kiasi kidogo kwa ajili ya siku zijazo au dharura – kinaweza kusaidia sana.\n* Wekeni mduara uitwao \"dharura\".\n* Wekeni mduara uitwao \"malengo ya familia\".\n* Sasa jaribuni kugawanya pesa zenu ili muweze kuweka akiba kidogo kila mwezi kwa mambo yote haya.", + "type": "template", + "note": "" + }, + { + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "HONGERA!!! Mmetengeneza bajeti ya familia yenu – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu kwenye kikundi chenu anastahili kusifiwa, au sivyo?", + "type": "template", + "note": "" + }, + { + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "HONGERA!!! Mmetengeneza bajeti ya familia yako – na kuitumia kutakuletea mabadiliko makubwa. Ninadhani kila mtu katika familia yako anastahili kusifiwa, au sivyo?", + "type": "template", + "note": "" + }, + { + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "HONGERA!!! Umetengeneza bajeti yako – kumbuka kufanya zoezi hili tena na wanafamilia wengine – kama mtakubaliana kuhusu mpango fulani pamoja, mpango huo utaleta mabadiliko makubwa!", + "type": "template", + "note": "" + }, + { + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Je, umeshazungumza na kijana wako kuhusu bajeti ya familia yenu?", + "type": "template", + "note": "" + }, + { + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Wakati wowote unapohisi upweke au kuzidiwa, jua kwamba hauko peke yako. Kuna wazazi duniani kote ambao wanapitia hali kama yako.\n\nKila siku unafanya kadri ya uwezo wako na sisi sote tunajivua wewe!", + "type": "template", + "note": "" + }, + { + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Kuishirikisha familia yako kuhusu namna mnavyotumia fedha kunaweza kuondoa misongo mingi ya mawazo na ugomvi.\n\nMaliza @local.workshop_data.in_text_title ili kuisaidia familia yako kutengeneza bajeti na kuweka akiba. Kwa kweli ni rahisi – utajionea mwenyewe!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.workshop" + }, + { + "SourceText": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s @global.workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Habari @fields.group_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, @global.workshop ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app\n@global.workshop" + }, + { + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s @global.workshop deals with money and budgeting.", + "text": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\n@global.workshop ya wiki hii inahusu fedha na bajeti.", + "type": "template", + "note": "The string @global.workshop should not be translated." + }, + { + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Wazazi wengi wanasema kuwa kutengeneza bajeti kumerudisha amani ndani ya nyumba zao – inaweza kukufaa pia.\n\nKwa mara nyingine, asante kwa kuwa mzazi makini.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked to help you set family rules that work.", + "text": "Ni vizuri umemaliza@local.workshop_data.in_text_title. Kesho, @global.workshop mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop" + }, + { + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Tenga muda kidogo ili ufurahie mafanikio uliyoyapata, licha ya mambo mengine yote unayopaswa kuyafanya kila siku.", + "type": "template", + "note": "" + }, + { + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Hadithi – haikufanikiwa…\n* Zoezi la kutengeneza bajeti\n* Hadithi & majadiliano – ilifanikiwa!\n* Hadithi & majadiliano – hayakufanikiwa…\n* Majadiliano kuhusu njia za kuweka akiba\n* Zoezi la kuweka akiba\n*Nyenzo: Jinsi ya kutengeneza bajeti & kuweka akiba\nFIKIRI – CHAGUA – TENGENEZA – PANGA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 1: THINK", + "text": "Hatua ya Kwanza: FIKIRI", + "type": "template", + "note": "" + }, + { + "SourceText": "What do we spend on now?", + "text": "Kwa sasa tunatumia pesa kwenye mambo gani?", + "type": "template", + "note": "" + }, + { + "SourceText": "THINK Activity", + "text": "Shughuli ya KUFIKIRI", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 2: CHOOSE", + "text": "Hatua ya Pili: CHAGUA", + "type": "template", + "note": "" + }, + { + "SourceText": "Talk together about needs and wants", + "text": "Zungumzeni pamoja kuhusu mahitaji na matamanio", + "type": "template", + "note": "" + }, + { + "SourceText": "CHOOSE Activity", + "text": "Shughuli ya KUCHAGUA", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 3: BUILD", + "text": "Hatua ya Tatu: TENGENEZA", + "type": "template", + "note": "" + }, + { + "SourceText": "Make your own budget", + "text": "Tengeneza bajeti yako mwenyewe", + "type": "template", + "note": "" + }, + { + "SourceText": "BUILD Activity", + "text": "Shughuli ya KUTENGENEZA", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 4: PLAN", + "text": "Hatua ya Nne: PANGA", + "type": "template", + "note": "" + }, + { + "SourceText": "Emergencies and family goals", + "text": "Dharura na malengo ya familia", + "type": "template", + "note": "" + }, + { + "SourceText": "PLAN Activity", + "text": "Shughuli ya KUPANGA", + "type": "template", + "note": "" + }, + { + "SourceText": "What are your family savings goals?", + "text": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", + "type": "template", + "note": "" + }, + { + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Hayo ni malengo mazuri sana!\n\nHilo ni lengo zuri sana! Tunapopanga pamoja bajeti nzuri na mpango mzuri wa kuweka akiba, tunaweza kufanikiwa na kuona fahari!", + "type": "template", + "note": "" + }, + { + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Sisi sote tuna ndoto kwa ajili ya familia zetu, kama alivyo @global.w_money_grandma. Kwa kutenga pesa kidogokidogo kila mwezi, unaweza pia kuzitimiza malengo hayo!", + "type": "template", + "note": "The string @global.w_money_grandma should not be translated." + }, + { + "SourceText": "What are your family savings goals?", + "text": "Je, malengo ya familia yako ya kuweka akiba ni yapi?", + "type": "template", + "note": "" + }, + { + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "Hilo ni lengo zuri sana!\n\nKwa kutengeneza bajeti nzuri na mpango mzuri wa kuweka akiba, unaweza kufanikiwa na kuona fahari!", + "type": "template", + "note": "" + }, + { + "SourceText": "Let's talk about this story.", + "text": "Hebu tuzungumzie hadithi hii.", + "type": "template", + "note": "" + }, + { + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "Kwa @global.w_money_grandma, dhoruba ilitokea.\n\nJe, kuna dharura gani nyingine zinazoweza kutokea?", + "type": "template", + "note": "The string @global.w_money_grandma should not be translated." + }, + { + "SourceText": "Let's think about this story.", + "text": "Hebu tufikirie kuhusu hadithi hii.", + "type": "template", + "note": "" + }, + { + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "Kwa @global.w_money_grandma, dhoruba ilitokea.", + "type": "template", + "note": "The string @global.w_money_grandma should not be translated." + }, + { + "SourceText": "What other emergencies could come up for your family?", + "text": "Je, kuna dharura gani nyingine zinazoweza kutokea kwenye familia yako?", + "type": "template", + "note": "" + }, + { + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Dharura zinaweza kutokea kwenye familia yoyote. Kuweka akiba ya pesa kwa ajili ya dharura hizi KABLA hazijatokea huzuia wasiwasi mwingi na msongo wa mawazo wa ghafla!", + "type": "template", + "note": "" + }, + { + "SourceText": "Let's talk about different ways we can save.", + "text": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", + "type": "template", + "note": "" + }, + { + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Jadilini pamoja:\n* Je, kuna njia zipi tunazoweza kuzitumia kujiwekea akiba?\n* Je, kuna faida na hasara zipi kwa kila njia ya kujiwekea akiba?\n\nKuelewa vizuri kila njia kutawasaidia kuamua njia iliyo bora zaidi ya kuweka akiba kwa familia yenu.\n\nNjia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", + "type": "template", + "note": "" + }, + { + "SourceText": "Let's think about different ways we can save.", + "text": "Hebu tuzungumzie njia mbalimbali za kujiwekea akiba.", + "type": "template", + "note": "" + }, + { + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Kuna njia mbalimbali tunazoweza kuzitumia kujiwekea akiba: nyumbani, kununua vitu tunavyoweza kuviuza baadaye, benki, au kwenye kikundi cha kuweka akiba.\n\nFikiria faida na hasara za kila njia ya kujiwekea akiba.", + "type": "template", + "note": "" + }, + { + "SourceText": "What is the best savings option for your family?", + "text": "Je, njia ipi ya kujiwekea akiba ni bora zaidi kwa familia yenu?", + "type": "template", + "note": "" + }, + { + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Njia yoyote ya kujiwekea akiba mtakayoichagua itaisaidia sana familia yenu kusonga mbele!", + "type": "template", + "note": "" + }, + { + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Zoezi la nyumbani la wiki hii ni kumsifia kijana wako mara moja kwa siku. Utatumia sekunde 10 tu!", + "type": "template", + "note": "" + }, + { + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Kusifia ni ujuzi wenye nguvu katika malezi.\n\nKama tutawasifia vijana wetu wanapofanya jambo vizuri, tutawaona wakifanya mambo mazuri zaidi na zaidi!", + "type": "template", + "note": "" + }, + { + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Habari zenu?\n\nMada yetu ya leo inahusu kusifia.\n\nNi vizuri kuwasifia watoto wetu wanapofanya vizuri kwa sababu tunapofanya hivyo, watazidi kuifanya tabia nzuri tunayotaka kuiona.\n\nNa tusisahau pia kujisifia sisi wenyewe tunapofanya mazuri!", + "type": "template", + "note": "" + }, + { + "SourceText": "Praise time!", + "text": "Muda wa kusifia!", + "type": "template", + "note": "" + }, + { + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Utakapomwona tena kijana wako, msifie kwa jambo moja analofanya vizuri!\n\nNa, je, ni lini mara ya mwisho ulipojisifia wewe mwenyewe au mtu mzima mwingine katika kaya yako? Jaribu kufanya hivyo!", + "type": "template", + "note": "" + }, + { + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", + "type": "template", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @local.workshop_data.in_text_title uone jinsi WEWE unavyoweza kutumia sifa kwenye familia yako.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "text": "Habari @fields.user_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\n@global.workshop mpya inakungoja! Je, unaweza kubuni mada ya @global.workshop kutokana na picha hii?", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.workshop\n@global.workshop" + }, + { + "SourceText": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new @global.workshop awaits you! Can you guess the topic of the @global.workshop from this picture?", + "text": "Habari @fields.group_name! Hongera kwa kuanza wiki yako ya tatu ya @global.parent_app.\n\n@global.workshop mpya inakungoja! Je, unaweza kubuni mada ya @global.workshop kutokana na picha hii?", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app\n@global.workshop\n@global.workshop" + }, + { + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Hongera kwa kutumia @global.parent_app ili kuwekeza kwa ajili yako na familia yako.\n\nJaribu @local.workshop_data.in_text_title ujipatie ujuzi mzuri sana wa malezi!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + }, + { + "SourceText": "Hi @global.user_name, a new @global.workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes?\n\nThank you again for using @global.parent_app.", + "text": "Habari @global.user_name, @global.workshop mpya inakungoja kesho. Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kwa kweli ni fupi sana (nakuahidi) – unaweza hata ukaimaliza wakati unasubiri chakula cha usiku kiive. Kwa nini usiipitie ukipata muda?\n\nKwa mara nyingine, asante kwa kutumia @global.parent_app.", + "type": "template", + "note": "The following strings should not be translated:\n@global.user_name\n@global.workshop\n@local.workshop_data.in_text_title\n@global.parent_app" + }, + { + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new @global.workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, @global.workshop kipya kitafunguliwa. Jaribu – utaona mabadiliko kwenye tabia ya kijana wako.", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.workshop" + }, + { + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Kumbuka mara ya mwisho mtu alipokushukuru, au kusema umefanya jambo zuri sana.", + "type": "template", + "note": "" + }, + { + "SourceText": "How did it make you feel?", + "text": "Ulijisikiaje?", + "type": "template", + "note": "" + }, + { + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Mara nyingi wazazi hawashukuriwi au kusifiwa vya kutosha.", + "type": "template", + "note": "" + }, + { + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "Je, unajisikiaje usipoambiwa \"asante\" na mtu yeyote?", + "type": "template", + "note": "" + }, + { + "SourceText": "Tired", + "text": "Uchovu", + "type": "template", + "note": "" + }, + { + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Kijana wako anaweza pia kujisikia hivyo. Hicho ndicho kinachofanya nyenzo ya malezi ya wiki hii iwe rahisi lakini muhimu: Msifie anapofanya vizuri.", + "type": "template", + "note": "" + }, + { + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?", + "type": "template", + "note": "The string @global.w_praise_female_caregiver_name should not be translated." + }, + { + "SourceText": "Why did she praise them?", + "text": "Kwa nini aliwasifia?", + "type": "template", + "note": "" + }, + { + "SourceText": "To get them to do it more often", + "text": "Ili kuwafanya wazidi kufanya hivyo mara nyingi", + "type": "template", + "note": "" + }, + { + "SourceText": "To help her finish her work", + "text": "Kumsaidia amalize kazi yake", + "type": "template", + "note": "" + }, + { + "SourceText": "To make them feel good", + "text": "Ili kuwafanya wajisikie vizuri", + "type": "template", + "note": "" + }, + { + "SourceText": "To make herself feel good", + "text": "Ili yeye mwenyewe ajisikie vizuri", + "type": "template", + "note": "" + }, + { + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Mambo yote hayo ni ya kweli!\n\nPindi vijana wake wanapofurahi, @global.w_praise_female_caregiver_name hujisikia furaha. Na aliweza kufanya kazi zake.", + "type": "template", + "note": "The string @global.w_praise_female_caregiver_name should not be translated." + }, + { + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Hatua ya Kwanza: Shirikisha wengine mambo yaliyoenda vizuri na yaliyokuwa magumu", + "type": "template", + "note": "" + }, + { + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "\"Nilijifunza mambo mengi zaidi kuhusu maisha ya kijana wangu tulipotumia muda wa pamoja wawili tu! Lakini baada ya siku ya kwanza, kijana wangu alitaka kucheza tu kwenye simu yake.\"", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 2: Bring ideas!", + "text": "Hatua ya Pili: Changia mawazo!", + "type": "template", + "note": "" + }, + { + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "\"Hongera kwa kujaribu! Pengine unaweza kupendekeza mambo mengine ya kufurahisha unayoweza kufanya pamoja na kijana wako.\"\n\n\"Ndiyo, au mnaweza kufanya pamoja kitu fulani kwenye simu yake? Au anaweza kukuonyesha jinsi simu yake inavyofanya kazi?\"", + "type": "template", + "note": "" + }, + { + "SourceText": "Step 3: Pick and try one!", + "text": "Hatua ya Tatu: Chagua moja na ujaribu!", + "type": "template", + "note": "" + }, + { + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Asante kwa mawazo hayo mazuri sana! Ndiyo, nitamwomba kijana wangu anioneshe jinsi simu yake inavyofanya kazi kesho akitoka shule. Je, mmoja wenu anaweza kuigiza kama kijana wangu, ili nifanye mazoezi ya kuuliza?\"", + "type": "template", + "note": "" + }, + { + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Kumbuka jinsi shughuli zenu za nyumbani zilivyoenda wiki hii.\n\nJadilini kwa zamu:\n* Je, nini kilienda vizuri na nini hakikwenda vizuri?\n* Je, kuna njia zipi za utatuzi mnazoweza kuzifikiria pamoja?\n* Chagueni njia moja ya utatuzi na mjaribu kuitumia baadaye kwa vijana wenu!\n\n(Au mnaweza hata kuifanyia mazoezi sasa ili iwe rahisi zaidi baadaye!)", + "type": "template", + "note": "" + }, + { + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Matokeo ya usifiaji\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Jaribuni!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Matokeo ya usifiaji\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kusifia\nONA – SEMA – RUDIA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Shirikishaneni nyote:\n\n* Ni lini mara ya mwisho mtu alikushukuru au kusema umefanya jambo zuri sana? \n* Ulijisikiaje? \n* Je, unajisikiaje usiposhukuriwa au kusifiwa kwa kile unachokifanya? \n\nMara nyingi kama wazazi hatushukuriwi au kusifiwa vya kutosha. Pengine unaweza kuwapa vijana wako mfano sahihi kwa kuwasifia kwanza wanapofanya kitu vizuri!", + "type": "template", + "note": "" + }, + { + "SourceText": "Let's discuss this story.", + "text": "Hebu tujadili hadithi hii.", + "type": "template", + "note": "" + }, + { + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Jadili pamoja:\n\n* Je, kusifia kuliwafanya vijana wa @global.w_praise_female_caregiver_name wajisikieje?\n* Kwa nini aliwasifia?", + "type": "template", + "note": "The string @global.w_praise_female_caregiver_name should not be translated." + }, + { + "SourceText": "The same can work for you!", + "text": "Wewe pia unaweza kufanya hivyo!", + "type": "template", + "note": "" + }, + { + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name aliwasifia vijana wake...", + "type": "template", + "note": "The string @global.w_praise_female_caregiver_name should not be translated." + }, + { + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Ili kuwafanya wazidi kufanya hivyo mara nyingi\n* Ili kumsaidia amalize kazi zake \n* Ili kuwafanya wajisikie vizuri \n* Ili yeye mwenyewe ajisikie vizuri", + "type": "template", + "note": "" + }, + { + "SourceText": "SEE IT", + "text": "ONA", + "type": "template", + "note": "" + }, + { + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Tafuta kitu chochote anachofanya kijana wako kwa ajili ya kusaidia au kilicho kizuri, na umsifie kwa kitu hicho. Anaweza asioneshe furaha yake, lakini utamwona akifanya tena kitu hicho kizuri. Pia itamthibitishia kuwa unatambua anachokifanya na unajali.", + "type": "template", + "note": "" + }, + { + "SourceText": "SAY IT", + "text": "SEMA", + "type": "template", + "note": "" + }, + { + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Onyesha shauku – unaposema jambo, liseme kwa moyo wa dhati!", + "type": "template", + "note": "" }, { - "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", - "text": "Kutumia muda pamoja na kijana wako hujenga kuaminiana.\n\nEndelea na safari yako ya @global.parent_app sasa –kwa matokeo mazuri sana.", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "SourceText": "REPEAT IT", + "text": "RUDIA", + "type": "template", + "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Je, tayari umeshatumia muda wa pamoja na kijana wako?", - "type": "data_list", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Jaribu kutafuta kitu cha kukufanya umshukuru kila siku. Hata kitu kidogo sana.", + "type": "template", "note": "" }, { - "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "Hongera kwa kumaliza @data.workshop.w_1on1.in_text_title. Kesho, utaweza kupata warsha mpya ya kukusaidia kupumzika, kuburudika na kujifunza ujuzi mpya!", - "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Unaweza pia kuwasifia watu wazima wengine kwenye kaya yako. Chunguza mwitikio utakavyokuwa!", + "type": "template", + "note": "" }, { - "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", - "text": "Vizuri sana kwa kujaribu kuwa mzazi bora zaidi.", - "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." + "SourceText": "Let's practice giving praise.", + "text": "Hebu tufanye mazoezi ya kusifia.", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", - "text": "Habari @fields.user_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\nWarsha mpya iko tayari!", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Shirikishaneni nyote:\n\n* Je, unaweza kumsifia kijana wako kwa kitu gani?\n* Je, ni kitu gani ambacho mtu mwingine amefanya vizuri kwenye kipindi hiki? Mwambie!\n* Je, ulijisikiaje kumsifia mtu?\n* Je, ulijisikiaje kusifiwa?", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", - "text": "Habari @fields.group_name! Unaanza wiki yako ya tatu katika @global.parent_app.\n\nWarsha mpya iko tayari!", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Wakati mwingine ni vigumu kufikiria kitu gani cha kumsifia kijana wako! Haya ni mawazo kutoka kwa wazazi wengine:", + "type": "template", + "note": "" }, { - "SourceText": "Well done for using @global.parent_app! Remember, small things make a big difference.", - "text": "Hongera kwa kutumia @global.parent_app!\nKumbuka kwamba mambo madogomadogo ndiyo huleta mabadiliko makubwa.", - "type": "data_list", - "note": "The string @global.parent_app! should not be translated." + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Kumtendea mtu wema\n* Kusafisha chumba chake\n* Kula pamoja na familia\n* Kuwasalimu wanafamilia wengine\n* Kuwatunza ndugu zake\n* Kuwahi kurudi nyumbani\n* Kuwafikiria wengine\n* Kusema 'tafadhali' au 'asante'\n* Kwenda shule\n* Kufanya kazi za nyumbani au kazi ya shule\n* Kumaliza wakati wa kula kwa amani", + "type": "template", + "note": "" }, { - "SourceText": "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!", - "text": "Asante kwa kuwekeza kwa ajili yako na familia yako. Jaribu @data.workshop.w_praise.in_text_title ujipatie ujuzi mzuri sana wa malezi!", - "type": "data_list", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Wiki hii, tengeneza sheria moja pamoja na kijana wako.\n\nKumbuka kumsifia kijana wako baadaye!", + "type": "template", + "note": "" }, { - "SourceText": "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.", - "text": "Kusifia huleta mabadiliko makubwa.\n\nMaliza @data.workshop.w_praise.in_text_title uone jinsi ya kuitumia skwenye familia YAKO.", - "type": "data_list", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Sheria huwasaidia vijana kuelewa wanachotakiwa kukifanya.\n\nVijana wana uwezekano mkubwa wa kufuata sheria kama mtaweka sheria hizo PAMOJA na kumsifia anapozifuata!", + "type": "template", + "note": "" }, { - "SourceText": "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!", - "text": "Msifie kijana wako kwa kitu kimoja alichofanya vizuri.\n\nNa lini mara ya mwisho ulijisifia mwenyewe au kumsifia mtu mzima mwingine? Jaribu!", - "type": "data_list", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Habari zenu?\n\nMada ya leo inahusu sheria.\n\nSheria huleta amani ndani ya kaya na maelewano miongoni mwa wanafamilia.\n\nSheria huleta uwajibikaji kwa kila mwanafamilia; kwa hiyo, ni muhimu kuwa na sheria za familia.\n\nKaya yenye sheria za familia huishi kwa amani.", + "type": "template", "note": "" }, { - "SourceText": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.", - "text": "Safi sana, umemaliza warsha ya @data.workshop.w_praise.in_text_title. Warsha mpya ipo tayari kesho. Ijaribu - Utaona mabadiliko katika tabia za kijana wako.", - "type": "data_list", - "note": "The string @data.workshop.w_praise.in_text_title. should not be translated." + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Andika sheria moja muhimu ambayo ungependa kuiweka na kijana wako – hili ndilo litakuwa zoezi lako la nyumbani wiki hii.\n\nJe, atafikiria nini kuhusu sheria hii?", + "type": "template", + "note": "" }, { - "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.", - "text": "Habari @global.user_name, warsha mpya inakusubiri kesho!\n\nInaonekana kama hujamaliza warsha ya @data.workshop.w_praise.in_text_title, ni fupi(nakuhakikishia!) - ifanye muda ukipata muda wa dakika chache.", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.user_name,\n@data.workshop.w_praise.in_text_title." + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.", - "text": "Habari @fields.user_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", - "type": "data_list", - "note": "The string @fields.user_name, should not be translated." + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Wakati mwingine vijana wenu huonekana kama bado wamehamaki hata mnapokuwa mmefanya kadri muwezavyo. Kumbukeni kwamba mnafanya kazi nzuri sana, na mtapata pia nyakati nzuri za kufurahi nao pamoja!", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.", - "text": "Habari @fields.group_name, umefanya vizuri kwa kuanza wiki ya 4!\n\nWiki hii husaidia kuongeza nafasi zako za kumfanya kijana wako afanye kile unachomwambia.", - "type": "data_list", - "note": "The string @fields.group_name, should not be translated." + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @local.workshop_data.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!", - "text": "Kuwa mpole kwako mwenyewe. Hakuna mzazi aliyekamilika. Tumia @global.parent_app huoenesha unajari!", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Habari @fields.user_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", + "type": "template", + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.", - "text": "Vijana huwa wasikilizi daima. Angalia kwenye warsha za wiki hii kujifunza jinsi maelekezo chanya yanaweza kusaidia.", - "type": "data_list", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Habari @fields.group_name! Ni wiki mpya na warsha mpya! Jifunze jinsi ya kutengeneza sheria za kaya kwa namna itakayomwongezea kijana wako uwezekano wa kuzifuata.", + "type": "template", + "note": "The string @fields.group_name should not be translated." + }, + { + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Kwa mara nyingine, asante kwa kutumia @global.parent_app na kujitolea kwa dhati kwenye safari yako ya malezi.\n\n@local.workshop_data.in_text_title itakuonesha jinsi ya kuweka sheria kwa namna itakayomsaidia kijana wako kuzielewa na kuzifuata vizuri zaidi.", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + }, + { + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Kesho warsha mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza warsha mpya. Haitachukua muda mrefu na itamsaidia kijana wako kufuata sheria vizuri zaidi!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + }, + { + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Hongera, umemaliza @local.workshop_data.in_text_title.\n\nKesho, warsha mpya itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "They discussed the reasons behind the rule", + "text": "Walijadili sababu za kuwekwa kwa sheria hiyo", + "type": "template", + "note": "" + }, + { + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + }, + { + "SourceText": "The rule was clear, specific and fair", + "text": "Sheria hiyo ilikuwa wazi, maalum na ya haki", + "type": "template", + "note": "" + }, + { + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + }, + { + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Hiyo ni kweli, kuweka sheria zilizo wazi kwa kushirikiana na kwa njia ya utulivu na chanya huleta mafanikio makubwa!", + "type": "template", + "note": "" + }, + { + "SourceText": "She praised him", + "text": "Alimsifia", + "type": "template", + "note": "" + }, + { + "SourceText": "She rewarded him when he followed the rule", + "text": "Alimzawadia alipofuata sheria", + "type": "template", + "note": "" + }, + { + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Sawasawa – mwitikio chanya huleta mabadiliko makubwa!", + "type": "template", + "note": "" + }, + { + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "Hili ni jambo zuri sana. Kila mojawapo ya tabia hizi huifanya familia yako kuwa imara zaidi. Jivunie.", + "type": "template", + "note": "" + }, + { + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Nyenzo: Jinsi ya kuunda sheria\nSHERIA ZA KIKUNDI – SHERIA ZINAZOTEKELEZEKA – SHERIA ZA USIFIAJI!\n* Hadithi ya usalama mtandaoni – ambayo ilifanikiwa!\n* Ijaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" + }, + { + "SourceText": "What went well here in making a rule together?", + "text": "Kwa kuweka sheria pamoja, jambo gani lilienda vizuri hapa?", + "type": "template", + "note": "" + }, + { + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "Je, unafikiri @global.w_rules_teen_boy alijuaje kuwa @global.w_rules_female_caregiver_1 wake anamthamini?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + }, + { + "SourceText": "Making the rule together went well because...", + "text": "Kutengeneza sheria pamoja kulienda vizuri kwa sababu...", + "type": "template", + "note": "" + }, + { + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Walijadili sababu za kuwekwa kwa sheria hiyo\n* @global.w_rules_female_caregiver_1 alisikiliza maoni ya @global.w_rules_teen_boy\n* Sheria hiyo ilikuwa wazi, maalum na ya haki\n* @global.w_rules_female_caregiver_1 alimsifia @global.w_rules_teen_boy kwa kusaidia kuweka sheria hiyo", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + }, + { + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy alijua kuwa @global.w_rules_female_caregiver_1 wake alimthamini kwa sababu...", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + }, + { + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* Alimsifia\n* Alimzawadia alipofuata sheria", + "type": "template", + "note": "" + }, + { + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Sheria za kaya husaidia kuwaweka vijana wetu salama, na kuelewa kinachotarajiwa kutoka kwao. Unapomhusisha kijana katika kutengeneza sheria, anakuwa na uwezekano mkubwa wa kuzifuata.", + "type": "template", + "note": "" + }, + { + "SourceText": "TEAM RULES", + "text": "SHERIA ZA KIKUNDI", + "type": "template", + "note": "" + }, + { + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Panga sheria PAMOJA NA kijana wako. Anza kwanza na sheria mpya moja – unaweza kuongeza nyingine baadaye. Jadilini sababu za kuweka sheria na usikilize maoni yake.", + "type": "template", + "note": "" + }, + { + "SourceText": "REAL RULES", + "text": "SHERIA ZINAZOTEKELEZEKA", + "type": "template", + "note": "" + }, + { + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "Zifanye ziweze kutekelezeka kwa kijana wako, na uwe wazi na bayana ili kusitokee kutokuelewana. Usiseme 'kwa wakati', sema 'ifikapo saa 1 jioni'.", + "type": "template", "note": "" }, { - "SourceText": "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.", - "text": "Maelekezo chanya huboresha tabia.\n\nKamilisha warsha ya @data.workshop.w_instruct.in_text_title kwa mawazo ya jinsi gani hii inaweza kufanya kazi katika familia yako.", - "type": "data_list", - "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." + "SourceText": "PRAISE RULES!", + "text": "SHERIA ZA USIFIAJI!", + "type": "template", + "note": "" }, { - "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.", - "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Msifie kijana wako kwa kuweka sheria pamoja na wewe, na msifie kwa kuifuata!", + "type": "template", + "note": "" }, { - "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.", - "text": "Tayari umeweka alama kwenye @global.parent_point @data.habit.instruct_positively.title mara @fields.parent_point_count_instruct_positively – kwa hiyo, unapiga hatua nzuri za maendeleo.", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" + "SourceText": "Let's practice making rules.", + "text": "Hebu tufanye mazoezi ya kutengeneza sheria.", + "type": "template", + "note": "" }, { - "SourceText": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!", - "text": "Hongera, umemaliza @data.workshop.w_instruct.in_text_title.\n\nKesho, warsha mpya itakuwa tayari kwa ajili yako: utaona tofauti kubwa kwa kufanya mabadiliko madogo!", - "type": "data_list", - "note": "The string @data.workshop.w_instruct.in_text_title. should not be translated." + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Je, ni sheria gani moja muhimu ambayo kila mmoja wenu angependa kuiweka na kijana wake?\n* Je, unadhani kijana wako atafikiriaje kuhusu sheria hiyo?\n\nKumbuka, sheria ziwe bayana na zinazotekelezeka!", + "type": "template", + "note": "" }, { - "SourceText": "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?", - "text": "Wazazi baadhi hutumia program (app) baada ya chakula cha jioni. Kwa nini usimalize warsha ya @data.workshop.w_instruct.in_text_title ukiwa na muda wa dakika chache?", - "type": "data_list", - "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." + "SourceText": "Here are some of the rules other families created:", + "text": "Hapa kuna baadhi ya sheria zilizowekwa na familia nyingine:", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", - "text": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5.\n\nWarsha mpya inakusubiri ikiwa na dondoo za jinsi ya kuwa mtulivu na mstahimilivu wakati vijana wetu wakituchanganya.", - "type": "data_list", - "note": "The string @fields.user_name! should not be translated." + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Kijana anaweza kucheza nje baada ya kumaliza kazi ya nyumbani\n* Wanafamilia wote watakula mlo wa usiku pamoja\n* Kijana \"A\" ataosha vyombo siku ya Jumapili na Jumatatu, Kijana \"B\" siku ya Jumanne na Jumatano\n* Tutazungumza baina yetu kwa adabu na kwa wema\n* Unaposikiliza muziki, unatakiwa kutumia vifaa vya kusikilizia", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", - "text": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5.\n\nWarsha mpya inakusbiri ikiwa na dondoo za jinsi ya kubaki mtulivu na mstahimilivu wakati vijana wetu wakitufanya tuchanganya.", - "type": "data_list", - "note": "The string @fields.group_name! should not be translated." + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Wewe na kijana wako choreni ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote wawili mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", + "type": "template", + "note": "" }, { - "SourceText": "Manage anger and stress with this new workshop. It helps you take better care of yourself.", - "text": "Dhibiti hasira na msongo wa mawazo kwa hiki kipindi kipya. Hukusaidia wewe kujithamini vizuri zaidi.", - "type": "data_list", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Kama bado hamjafanya hivyo pamoja, choreni ramani mbili za maeneo salama na yasiyo salama wewe na kijana wako:\n* Ramani ya jamii yenu\n* Ramani ya programu na tovuti ambazo kijana wako anatumia\n\nHakikisheni wote mnafurahishwa na mpango wa usalama.\n\nKilicho muhimu hasa ni kwamba utakuwa unazungumza na kijana wako pindi mnapofanya hivyo – mara nyingi vijana wanajua mengi kutuzidi kuhusu maeneo salama na yasiyo salama!", + "type": "template", "note": "" }, { - "SourceText": "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.", - "text": "Najisikia kuzidiwa? Kuvuta pumzi ndefu inasaidia.\n\nKamilisha warsha ya @data.workshop.w_stress.in_text_title kukusaidia kukabiliana na msongo wa mawazo.", - "type": "data_list", - "note": "The string @data.workshop.w_stress.in_text_title should not be translated." + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Vijana wanaweza kutumia muda mwingi nje ya nyumba au mtandaoni, ambako ni vigumu kwetu kuwaweka salama.\n\nKuzungumza pamoja kuhusu maeneo salama na yasiyo salama, na jinsi ya kuzuia matatizo, husaidia sana!", + "type": "template", + "note": "" }, { - "SourceText": "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.", - "text": "Unajisikia mwenye msongo wa mawazo wiki hii? Jaribu kuvuta pumzi ndefu kabla hujamjibu kijana wako - inaleta mabadiliko makubwa.", - "type": "data_list", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Habari zenu?\n\nLeo mada yetu inahusu usalama wa vijana.\n\nKama wazazi, ni jukumu letu kuwaweka salama vijana wetu wakati wote. Tunahitaji kuhakikisha kuwa vijana wetu wako salama katika jamii tunazoishi. Ni jukumu letu kuwafahamisha maeneo salama na yasiyo salama katika jamii hizo.\n\nPia ni jukumu letu kuhakikisha kwamba wanaelewa hatari zinazoweza kuwakabili wanapokuwa mtandaoni. Kwa njia hiyo, vijana wetu watawajibika na wataweza kufanya maamuzi sahihi ya kujiweka salama.", + "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.", - "text": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", - "type": "data_list", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Jadilini pamoja:\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "type": "template", "note": "" }, { - "SourceText": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!", - "text": "Hongera kwa kumaliza @data.workshop.w_stress.in_text_title. Kesho, utaweza kupata warsha mpya itakayokusaidia kupumzika na kujifunza ujuzi muhimu sana!", - "type": "data_list", - "note": "The string @data.workshop.w_stress.in_text_title. should not be translated." + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "type": "template", + "note": "" }, { - "SourceText": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!", - "text": "Kuwa tayari kwa warsha mpya kesho.\n\nKwa kukamilishawarsha kwanza @data.workshop.w_stress.in_text_title. Unaweka msingi muhimu. Kama unajisikia vizuri, familia yako itajisikia vizuri pia!", - "type": "data_list", - "note": "The string @data.workshop.w_stress.in_text_title should not be translated." + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi. \n\nHapa chini kuna maeneo yanayoweza kukusaidia", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", - "text": "Habari @fields.user_name! Unaanza mwezi wako wa pili wa kutumia @global.parent_app. Inastaajabisha!\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app." + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Wakati mwingine, tunaweza kujikuta matatani.\n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", - "text": "Habari @fields.group_name! Inastaajabisha Unaanza mwezi wako wa pili wa kutumia @global.parent_app.\n\nKaribu kila familia inahangaishwa na masuala ya pesa, kwa hiyo, warsha ya wiki hii itakupa nyenzo itakayokusaidia kupanga matumizi yako ili uweze kuwa na pesa za kutosha kumaliza mwezi.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app." + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", + "type": "template", + "note": "" }, { - "SourceText": "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!", - "text": "Hauko peke yako. Wazazi duniani kote wanapitia hali kama hii.\n\nUnajutaidi sana na tunajivunia wewe!", - "type": "data_list", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Wasifie kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya mtandao yawe salama kwa vijana wenu na marafiki zao?", + "type": "template", "note": "" }, { - "SourceText": "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.", - "text": "Je, unahisi msongo wa mawazo kuhusu fedha? Je, kijana wako anaendelea kuomba vitu ambavyo huwezi kuvimudu?\n\nWarsha ya wiki hii inahusu fedha na bajeti.", - "type": "data_list", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambamo wanaweza kujiingiza!", + "type": "template", "note": "" }, { - "SourceText": "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!", - "text": "Tengeneza bajeti ya familia na kijana wako - itazuia mabishano ya fedha.\n\nKamilisha warsha @data.workshop.w_money.in_text_title kuona jinsi ilivyo rahisi - utaona!", - "type": "data_list", - "note": "The string @data.workshop.w_money.in_text_title should not be translated." + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Kila wakati unapopanga mpango wa usalama au unapouzingatia, bofya @global.parent_point ili usherehekee mafanikio yako!", + "type": "template", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Je, umeshazungumza na kijana wako kuhusu bajeti ya familia yenu?", - "type": "data_list", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "Hebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii – kama kijana wako yuko hapa sasa, mnaweza kufanya pamoja sasa!", + "type": "template", "note": "" }, { - "SourceText": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.", - "text": "Umefanya vizuri sana kumaliza @data.workshop.w_money.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kuweka sheria za familia zinazofanya kazi.", - "type": "data_list", - "note": "The string @data.workshop.w_money.in_text_title! should not be translated." + "SourceText": "My family can join in now!", + "text": "Familia yangu inaweza kujiunga sasa!", + "type": "template", + "note": "" }, { - "SourceText": "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.", - "text": "Wazazi wengi wanasema kupanga bajeti huleta amani. Kama hujamaliza warsha @data.workshop.w_money.in_text_title, anza sasa.", - "type": "data_list", - "note": "The string @data.workshop.w_money.in_text_title, should not be translated." + "SourceText": "Let me try it out by myself", + "text": "Ngoja niijaribu peke yangu", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", - "text": "Habari @fields.user_name! Wiki mpya, warsha mpya! \nJifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", - "type": "data_list", - "note": "The string @fields.user_name! should not be translated." + "SourceText": "Safety Plan", + "text": "Mpango wa Usalama", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", - "text": "Habari @fields.group_name! Wiki mpya, warsha mpya! \nJifunze kuweka sheria za nyumbani ambazo kijana wako anazielewa na kuzifuata.", - "type": "data_list", - "note": "The string @fields.group_name! should not be translated." + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Ili kuwaweka salama vijana wetu, tunahitaji kuelewa hali za hatari ambazo wanaweza kuzijingiza!\n\nHebu tuchore pamoja ramani mbili za maeneo salama na yasiyo salama: \n* Ramani ya jamii yetu\n* Ramani ya programu/tovuti tunazotumia mtandaoni\n\nHebu sasa tuchore ramani hizo kama kikundi.\n\nUtafanya hivyohivyo na kijana wako kama zoezi la nyumbani la wiki hii.", + "type": "template", + "note": "" }, { - "SourceText": "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!", - "text": "Umejaribu kadri uwezavyo lakini kijana wako bado ana huzuni?\nKumbuka, unafanya kazi nzuri - kutakuwa na muda mzuri pamoja nao pia!", - "type": "data_list", + "SourceText": "Step 1: What are important places in your community?", + "text": "Hatua ya Kwanza: Je, yapi ni maeneo muhimu katika jamii yako?", + "type": "template", "note": "" }, { - "SourceText": "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.", - "text": "Asante kwa kuwekeza katika malezi.\n\nFanya warsha ya @data.workshop.w_rules.in_text_title kusaidia kijana wako kuelewa na kufuata sheria za nyumbani.", - "type": "data_list", - "note": "The string @data.workshop.w_rules.in_text_title should not be translated." + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Chukua kipande cha karatasi (au gazeti la zamani au kasha la karatasi nene) na kalamu.\n* Chora ramani ya jamii ya kijana wako, ikiwa na picha za maeneo yote muhimu kama barabara, nyumba yako, shule, maduka, maeneo anayotembelea kijana wako.", + "type": "template", + "note": "" }, { - "SourceText": "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!", - "text": "Unakaribia kupata nyenzo nyingine ya malezi! Maliza @data.workshop.w_rules.in_text_title, weka sheria MOJA nyepesi na inayotekelezeka pamoja na kijana wako, halafu utaona mambo yatakavyobadilika!", - "type": "data_list", - "note": "The string @data.workshop.w_rules.in_text_title should not be translated." + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Hatua ya Pili: Je, maeneo yapi ni salama na yapi si salama?", + "type": "template", + "note": "" }, { - "SourceText": "Have you managed to set a rule with your teen?", - "text": "Je, umeweza kutengeneza sheria pamoja na kijana wako?", - "type": "data_list", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Jadilini pamoja:\n\n* Je, maeneo yapi kwenye ramani yako ni salama kwa vijana? \n – ZUNGUSHIA maeneo hayo \n* Je, maeneo yapi kwenye ramani yako si salama kwa vijana? \n – KATA KWA MISTARI maeneo hayo \n* Je, ni nini hufanya mahali pawe salama au pasiwe salama? \n* Je, wewe na kijana wako mnaweza kufanya nini ili kumfanya kijana wako awe salama zaidi?", + "type": "template", "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!", - "text": "Hongera, umemaliza warsha @local.workshop_data.in_text_title.\n\nKesho, pata warsha mpya! itakusaidia kujua nini cha kufanya pindi vijana wanapoonesha tabia mbaya (au nzuri)!", - "type": "data_list", - "note": "The string @local.workshop_data.in_text_title. should not be translated." + "SourceText": "Step 3: Where can you get support?", + "text": "Hatua ya Tatu: Je, unaweza kupata wapi msaada?", + "type": "template", + "note": "" }, { - "SourceText": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!", - "text": "Warsha kabisa itafunguliwa kesho!\n\nKamilisha warsha @local.workshop_data.in_text_title kabla hujaendelea Kwa dakika chache zaidi kumsaidia kijana wao kufuata sheria!", - "type": "data_list", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Wakati mwingine, tunaweza kujikuta matatani. Jadilini pamoja:\n \n* Je, wewe na kijana wako mnaweza kupata wapi msaada mnapokabiliwa na hali ya hatari? \n – WEKA ALAMA kwenye maeneo hayo kwa kutumia kitu kidogo kama jiwe au kipande cha karatasi.", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.", - "text": "Habari @fields.user_name! Leo tunasherekea warsha mbili @global.parent_app months!\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" + "SourceText": "Resources to help in the community", + "text": "Rasilimali za msaada katika jamii", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.", - "text": "Habari @fields.group_name! Leo tunasherekea warsha mbili @global.parent_app months!\n\nWiki hii utajifunza jinsi ya kumsaidia kikana wako kufuata sheria za nyumbani.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Hatua ya Nne: Je, maeneo gani mtandaoni ni ya hatari na unawezaje kuyafanya yawe salama zaidi?", + "type": "template", + "note": "" }, { - "SourceText": "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.", - "text": "Fikiria kila muda uliomfanya kijana wako akatabasamu na matunzo yote uliyompa.\n\nUnatakiwa kujisifu - huu ni muda mgumu kuwa mzazi.", - "type": "data_list", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Choreni picha za programu na tovuti ambazo vijana wenu hutumia\n* Sifianeni kwa jinsi wanavyojua kutumia mtandao.\n* Zungumzieni zile ambazo zinaweza zisiwe salama. Kwa nini?\n* Je, nyinyi na vijana wenu mnaweza kufanya nini ili matumizi ya intaneti yawe salama kwa vijana wenu na marafiki zao?", + "type": "template", "note": "" }, { - "SourceText": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!", - "text": "Vizuri sana - umeshapata nyenzo 6 za malezi tayari! Fanya warsha inayofuata kupata zaidi!", - "type": "data_list", + "SourceText": "Online Safety Resources", + "text": "Rasilimali za Usalama Mtandaoni", + "type": "template", "note": "" }, { - "SourceText": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.", - "text": "Maliza warsha hii halafu ujaribu kujadili pamoja na kijana wako kuhusu matokeo ya tabia chanya na hasi.", - "type": "data_list", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", + "type": "template", "note": "" }, { - "SourceText": "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?", - "text": "Je, umewahi kufikiria matokeo chanya na hasi ya tabia na kijana wako?", - "type": "data_list", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Huu ni wakati mgumu zaidi wa kuwa mzazi. Unapaswa kujionea fahari kwa kila kitu ulichofanya.\n\nKumbuka kila wakati ulipomfanya kijana wako atabasamu na matunzo yote uliyompa. Wazazi ni wazuri sana, na wewe pia ni mzuri!", + "type": "template", "note": "" }, { - "SourceText": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!", - "text": "Vizuri sana kwa kumaliza warsha @data.workshop.w_consequence.in_text_title.\nPata warsha mpya kesho kukusaidia kufurahia na kujifunza ujuzi muhimu!", - "type": "data_list", - "note": "The string @data.workshop.w_consequence.in_text_title. should not be translated." + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "Ili kijana wako awe salama, ni vizuri mpige soga pamoja kuhusu jamii yenu na shughuli zake mtandaoni.\n\nMaliza @local.workshop_data.in_text_title halafu utaona jinsi unavyoweza kufanya jambo hili!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.", - "text": "Matokeo tulivu husaida kijana wako kufuata sheria.\nKama hujamaliza warsha @data.workshop.w_consequence.in_text_title, anza sasa!\n\nVizuri sana kwa kuonesha kujitolea sana.", - "type": "data_list", - "note": "The string @data.workshop.w_consequence.in_text_title, should not be translated." + "SourceText": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Asante kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.", - "text": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa. Warsha hii itakuonesha jinsi ya kuyashughulikia.", - "type": "data_list", - "note": "The string @fields.user_name! should not be translated." + "SourceText": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Habari @fields.group_name! unakaribia kumaliza warsha zako za @global.parent_app! Asante kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii. Furahia!", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana kunaleta matatizo mengi yasiyotarajiwa ya kushughulikia. Warsha hii itakuonesha jinsi ya kuyashughulika nayo.", - "type": "data_list", - "note": "The string @fields.group_name! should not be translated." + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "Umepata ujuzi mwingi wa malezi kwa wiki kadhaa zilizopita!\n\nMaliza warsha inayofuata ili kupata ujuzi mwingine wa kukusaidia.", + "type": "template", + "note": "" }, { - "SourceText": "Your commitment is inspiring. Keep calm and carry on!", - "text": "Kujitolea kwako ni mfano wa kunahamasisha. Tulia na uendelee!", - "type": "data_list", - "note": "" + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Inaonekana bado haujamaliza @local.workshop_data.in_text_title. Kuweka mpango pamoja na kijana wako kunaweza kuzuia matatizo mengi – jaribu kufanya hivyo kabla ya kuendelea!\n\nHongera kwa kutumia @global.parent_app ili kuisaidia familia yako.", + "type": "template", + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.", - "text": "Matatizo yasiyotarajiwa hutokea tukiwa na vijana.\n\nJifunze jinsi ya kuyatatua katika warsha inayofuata.", - "type": "data_list", - "note": "" + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Hongera, umemaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." + }, + { + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.", - "text": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @data.workshop.w_solve.in_text_title ili upate ujuzi mwingine muhimu wa malezi.", - "type": "data_list", - "note": "The string @data.workshop.w_solve.in_text_title should not be translated." + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Fanyia mazoezi hatua nne za kutatua matatizo na kijana wako?\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", - "type": "data_list", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa", + "type": "template", "note": "" }, { - "SourceText": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Umefanya vizuri sana kumaliza @data.workshop.w_solve.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", - "type": "data_list", - "note": "The string @data.workshop.w_solve.in_text_title. should not be translated." + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.", - "text": "Pata warsha mpya kesho!\n\nKwa kukamilisha warsha @data.workshop.w_solve.in_text_title kwanza, utajia jinsi ya kutatua matatizo pamoja.", - "type": "data_list", - "note": "The string @data.workshop.w_solve.in_text_title should not be translated." + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "Hebu tufikirie kuhusu kile kilichotokea kwa @global.w_safe_teen_girl_1:", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", - "text": "Habari @fields.user_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" + "SourceText": "What was risky about that situation?", + "text": "Kitu gani kilikuwa cha hatari kwenye tukio hilo?", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", - "text": "Habari @fields.group_name! Unakaribia kumaliza warsha zako za @global.parent_app! Hongera kwa kujitolea kwako kwa dhati kwa muda mrefu.\n\nWarsha ya wiki hii inahusu kuwaweka salama vijana wetu, mtandaoni na katika jamii.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" + "SourceText": "All those things are true!", + "text": "Mambo yote hayo ni ya kweli!", + "type": "template", + "note": "" }, { - "SourceText": "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!", - "text": "Malezi ni kitu kigumu, hasa kwa siku hizi. Jivunie mafanikio yako. Ya matunzo unayowapa. Ya kila muda unaowafanya watabasamu. Wewe ni mzuri sana!", - "type": "data_list", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono", + "type": "template", "note": "" }, { - "SourceText": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.", - "text": "Fikiria kuhusu ujuzo wote wa malezi uliiupata!\n\nMalizi warsha inayofuata kupata zaidi.", - "type": "data_list", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine", + "type": "template", "note": "" }, { - "SourceText": "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.", - "text": "Kuongea pamoja kuhusu jamii yao na uzoefu wa mitandaoni husaidia kuwaweka vijana wako salama.\n\nMaliza warsha @data.workshop.w_safe.in_text_title kuona ni jinsi gani.", - "type": "data_list", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua", + "type": "template", + "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Je, umezungumza na kijana wako kuhusu hatua za usalama?", - "type": "data_list", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha", + "type": "template", "note": "" }, { - "SourceText": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!", - "text": "Hongera, umemaliza @data.workshop.w_safe.in_text_title. Kesho, warsha mpya itakuwa tayari kwa ajili yako ili kukusaidia wewe na familia yako kukabiliana na hali yoyote – pamoja mnaweza kufanya makubwa!", - "type": "data_list", - "note": "The string @data.workshop.w_safe.in_text_title. should not be translated." + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", + "type": "template", + "note": "" }, { - "SourceText": "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.", - "text": "Maliza warsha @data.workshop.w_safe.in_text_title kabla ya kuendelea. Hii inaweza kuzuia matatizo mengi.\n\nVizuri sana kwa kutumia @global.parent_app kusaidia familia yako.", - "type": "data_list", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@global.parent_app" + "SourceText": "Let's think about our teens' online safety.", + "text": "Hebu tufikirie usalama wa vijana wetu mtandaoni.", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", - "text": "Habari @fields.user_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nWarsha hii itakuonyesha jinsi ya kujiandaa mapema.", - "type": "data_list", - "note": "The string @fields.user_name! should not be translated." + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Je, ipi ni hatari iliyo kubwa zaidi kwa vijana mtandaoni siku hizi?", + "type": "template", + "note": "" }, { - "SourceText": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", - "text": "Habari @fields.group_name! Matatizo yanaweza kumtokea mtu yeyote – kujiandaa mapema husaidia sana.\n\nWarsha hii itakuonyesha jinsi ya kujiandaa mapema.", - "type": "data_list", - "note": "The string @fields.group_name! should not be translated." + "SourceText": "Doing any of these makes you a great parent.", + "text": "Kufanya jambo lolote kati ya haya hukufanya uwe mzazi mzuri sana.", + "type": "template", + "note": "" }, { - "SourceText": "Be proud, you are a committed parent. This is a big achievement!", - "text": "Jivunie, wewe ni mzazi unayejitolea sana. Haya ni mafanikio makubwa!", - "type": "data_list", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.", - "text": "Matatizo yanaweza kutokea, na TUNAWEZA kuwa na maandalizi! \n\nAnza warsha inayofuata kuona jinsi ya kujiandaa mapema wewe na kijana wako.", - "type": "data_list", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Zoezi la kuchora ramani\n* Nyenzo: Jinsi ya kumweka salama kijana wako\nRAMANI – SHERIA – MSAMAHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.", - "text": "Tunafurahi sana kwamba uko pamoja nasi katika safari hii ya malezi!\n\nMaliza @data.workshop.w_crisis.in_text_title na jifunze njia nzuri ya namna ya kufanya pale kijana wako anapokuhitaji zaidi.", - "type": "data_list", - "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "Hebu tuzungumzie kile kilichotokea kwa @global.w_safe_teen_girl_1", + "type": "template", + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Have you and your teen discussed what you would do in a crisis?", - "text": "Je, wewe na kijana wako mmejadili nini cha kufanya katika matatizo?", - "type": "data_list", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Jadilini pamoja:\n\nKitu gani kilikuwa cha hatari kwenye tukio hilo?", + "type": "template", "note": "" }, { - "SourceText": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!", - "text": "Vizuri sana kwa kumaliza warsha @data.workshop.w_crisis. Kesho, unaweza kupata warsha ya mwisho kuvuta kumbukumbu ya safari na kupanga cha kufanya wakati ujao!", - "type": "data_list", - "note": "The string @data.workshop.w_crisis. should not be translated." + "SourceText": "The situation was risky because...", + "text": "Tukio hilo lilikuwa la hatari kwa sababu...", + "type": "template", + "note": "" }, { - "SourceText": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.", - "text": "Warsha ya mwisho inafunguliwa kesho!\n\nKwanza jaribu kukamilisha warsha @data.workshop.w_crisis.in_text_title. Kwa njia hiyo, unaweza kukamilisha sehemu yako ya ujuzi wa malezi na kuamua nini cha kufanya kwa siku baadaye.", - "type": "data_list", - "note": "The string @data.workshop.w_crisis.in_text_title. should not be translated." + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Mwanaume ndani ya gari alikuwa akimshinikiza @global.w_safe_teen_girl_1 kwa zawadi\n* Rafiki yake @global.w_safe_teen_girl_1 alikuwa akimtia moyo\n* Kwenda na mwanaume mwenye umri mkubwa kunamweka @global.w_safe_teen_girl_1 kwenye hali ya hatari kwani anaweza kuumizwa au kulazimishwa kufanya mambo fulani\n* Wasichana wengi katika jamii zetu wanapata mimba au kuambukizwa VVU na wanaume wenye umri mkubwa\n* Hakukuwa na watu wazima wengine wanaoaminika wa kumshauri @global.w_safe_teen_girl_1", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Karibu kwenye ParentApp. Bonyeza hapa kuanza safari yako!", - "type": "data_list", + "SourceText": "Let's talk about our teens' online safety.", + "text": "Hebu tuzungumzie usalama wa vijana wetu mtandaoni.", + "type": "template", "note": "" }, { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Tunatumaini kuwa haujambo. Kulea ni kugumu, lakini usichoke kuanza tena kwa ajili ya kijana wako. Warsha yako ya kwanza ya malezi iko tayari kwa ajili yako! Bonyeza hapa kuanza safari yako ya ParentApp!", - "type": "data_list", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Je, ni zipi hatari za mtandaoni kwa vijana siku hizi?", + "type": "template", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp ikusaidie kudhibiti msongo wa mawazo kutokana na malezi.", - "type": "data_list", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Watu wazima hutumia mitandao ya kijamii, programu za michezo, programu za kutuma ujumbe na tovuti mbalimbali ili kukutana na vijana na kuwashawishi wafanye mambo ya ngono\n* Watu huweka vitu mtandaoni ili kutufanya tuwaumize watu wengine – kama kufanya vurugu zionekane jambo zuri, au kuchukia watu wa asili nyingine au nchi nyingine\n* Watu huweka vitu mtandaoni ili kuwashawishi vijana kujiumiza au kujiua\n* Vijana huwashirikisha watu wengine video au picha zinazovutia kimapenzi au taarifa zinazowahusu, na watu huzionyesha kwa wengine au huzitumia kuwafadhaisha\n* Mara nyingi watu wanaweza kuwafanyia ubaya vijana mtandaoni – wanahisi kama wanaweza kuwaonea watu halafu wao wakabaki salama", + "type": "template", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Habari kwa mara nyingine! Hata haujachelewa kutumia ParentApp ili kupata msaada stahiki wa malezi. Kwa nini usiijaribu unaposafiri kwenda kazini au unaposubiri chakula kiive? Mamilioni ya wazazi wameona kuwa taarifa zetu zinasaidia.", - "type": "data_list", + "SourceText": "MAPS", + "text": "RAMANI", + "type": "template", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp ikusaidie kudhibiti tabia za kijana wako.", - "type": "data_list", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Tengeneza RAMANI na kijana wako juu ya maeneo salama na yasiyo salama kwenye jamii yenu na mtandaoni. Zungumzieni jinsi ya kufanya taarifa, picha na video zake ziwe za faragha mtandaoni. Zungumzieni jinsi ambavyo kitu kikishawekwa mtandaoni, kitakaa hapo daima. Anaweza kuwa na mfano hai kutoka kwa marafiki zake.", + "type": "template", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Habari! Kuna tatizo lolote? Inaonekana haujafungua ParentApp hivi karibuni. Hebu ijaribu! Mamilioni ya wazazi wamegundua kuwa taarifa hizi zinasaidia. Bado tuko hapa ili kukusaidia.", - "type": "data_list", + "SourceText": "Safety Plan Activity", + "text": "Shughuli ya Mpango wa Usalama", + "type": "template", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "ParentApp inakupenza! Kuna mengi ya kujifunza. Bado tuko hapa ili kukusaidia.", - "type": "data_list", + "SourceText": "RULES", + "text": "SHERIA", + "type": "template", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp kumwandaa kijana wako afanikiwe maishani.", - "type": "data_list", + "SourceText": "Make RULES with your teen about how they can stay safe in your community (especially in risky areas that cannot be avoided) and how they can safely use the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Tengeneza SHERIA na kijana wako kuhusu namna gani wanaweza kuwa salama katika jamii yako (hususani katika maeneo hatarishi ambayo hayawezi kuepukika) na namna wanaweza kutumia kwa usalama programu tumishi na mitandao ambayo wanayopenda.\n\nUnakumbuka hadithi kuhusu Usalama Mtandaoni? Angalia tena hapa.", + "type": "template", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Tunatumaini kuwa haujambo. Tunajua malezi ni magumu – tumia ParentApp kupatana tena na kijana wako!", - "type": "data_list", + "SourceText": "Online Safety Story", + "text": "Hadithi ya Usalama Mtandaoni", + "type": "template", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Habari mzazi, kumbuka kujithamini mwenyewe pia - itakusaidia wewe NA familia yako! Pata dondoo zaidi katika programu ya ParentApp.", - "type": "data_list", - "note": "" + "SourceText": "Agree on a @global.safety_word. If something happens that makes your teen upset, uncomfortable or scared, they can say the @global.safety_word and you will help them without getting angry or punishing them, even if they were doing something wrong. \n\nRemember the story about the @global.safety_word? See it again here.", + "text": "Kubaliana kuhusu @global.safety_word. Kama kitu kikitokea ambacho kitamfanya kijana wako akasirike, kukosa uhuru au kuogopa, wanaweza kusema @global.safety_word na utawasaidia bila kukasirika au kuwaadhibu, hataka kama walikuwa wanafanya kitu ambacho sio sahihi.\n\nKumbuka hadithi kuhusu @global.safety_word? Angalia tena hapa.", + "type": "template", + "note": "The following strings should not be translated:\n@global.safety_word\n@global.safety_word\n@global.safety_word" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Habari mzazi! Kumbuka, unaweza kupata vidokezo vingi vya kukusaidia katika programu ya ParentApp.", - "type": "data_list", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Malezi yanayohusu masuala ya kidijitali ni sawa tu na malezi ya masuala mengine maishani. Umepiga HATUA KUBWA ya kumweka salama kijana wako katika jamii NA mtandaoni. Ni jambo zuri kwako!", + "type": "template", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Ujumbe mpya kutoka PLH", - "type": "data_list", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "Umekamilisha kipindi cha wiki hii.\n\nTutafanya tena baadhi ya shughuli za kujithamini utakapokutana na kikundi chako kwa mara ya kwanza – nyote mnastahili muda wa ziada wa kujithamini.", + "type": "template", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Habari mzazi! Programu ya ParentApp ipo hapa kukusaidia. Itazame sasa!", - "type": "data_list", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Kila mara uwezapo, jiburudishe, jitambue na jipongeze.\n\nJitunze kila siku. Wewe ni mtu muhimu!", + "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Anza", - "type": "data_list", - "note": "" + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Kila mara unapojiburudisha, tambua kitu ulichofanya vizuri au kujipongeza, vuna @global.parent_points ili kusherehekea mafanikio yako!", + "type": "template", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Continue", - "text": "Endelea", - "type": "data_list", - "note": "" + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Kwa nini @data.workshop.w_self_care.short_title ni muhimu?", + "type": "template", + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "Welcome and Self-Care", - "text": "Makaribisho na Ujitunzaji", - "type": "data_list", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Mara nyingi hatujithamini vya kutosha. Lakini kufanya hivyo ni muhimu sana, hasa kwa mzazi!\n\nKupunguza msongo wa mawazo na kujithamini vizuri hutusaidia sisi PAMOJA NA vijana wetu.", + "type": "template", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "Warsha ya **Makaribisho na Ujitunzaji**", - "type": "data_list", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Habari zenu?\n\nMada ya leo inahusu kujithamini wenyewe.\n\nKuna nyakati tunapata changamoto, ambapo tunakabiliwa na matatizo na hatujui cha kufanya. Ni muhimu kujithamini kwa kujifunza mbinu tunazoweza kuzitumia kuwa watulivu iwapo matatizo, changamoto au shida zitatokea.\n\nTunapokuwa watulivu, tunakuwa katika hali nzuri ya kufikiria vizuri na kupata ufumbuzi chanya wa changamoto zozote tunazoweza kukabiliwa nazo.", + "type": "template", "note": "" }, { - "SourceText": "Self-Care", - "text": "Kujithamini", - "type": "data_list", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Kumbuka - Hii wiki ni kuhusu WEWE! Tunatumaini unajitunza vizuri. Unastahili jambo hili!", + "type": "template", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Jinsi ya kujithamini", - "type": "data_list", - "note": "" + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Anza warsha mpya kabisa ya @global.parent_app kesho. Utaona matokeo mazuri!", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "One-on-One Time", - "text": "Muda wa Pamoja Wawili", - "type": "data_list", - "note": "" + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app @global.workshops together!", + "text": "Je, tayari umeshawaambia washirika wako wa @global.parent_app kuhusu programu hii? Kuanzia kesho, mnaweza kuanza kufanya pamoja @global.workshop zenu za @global.parent_app!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app\n@global.workshops" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "Warsha ya **Muda wa Pamoja Wawili**", - "type": "data_list", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Kumakinikia kile tunachokifanya vizuri hutusaidia kuzingatia mambo chanya.\n\nHebu tutumie muda kujisifia. Tutakuonyesha jinsi ya kujisifia.", + "type": "template", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Jinsi ya kutumia muda wa pamoja wawili", - "type": "data_list", - "note": "" + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.\n\nSemezaneni kwa sauti: \"Ninajipongeza kwa...\"\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Praise", - "text": "Kusifia", - "type": "data_list", + "SourceText": "Recognise", + "text": "Tambua", + "type": "template", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "Warsha ya **Usifiaji**", - "type": "data_list", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Tumia muda kujisifia.\n\nSasa tutakuonyesha jinsi ya kujisifia.", + "type": "template", "note": "" }, { - "SourceText": "How to praise", - "text": "Jinsi ya kusifia", - "type": "data_list", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni.", + "type": "template", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Maelekezo Chanya", - "type": "data_list", + "SourceText": "\"Well done to me for...\"", + "text": "\"Ninajipongeza kwa...\"", + "type": "template", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "Warsha ya **Maelekezo Chanya**", - "type": "data_list", + "SourceText": "Showing love to my children", + "text": "Kuonyesha upendo kwa watoto wangu", + "type": "template", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Jinsi ya kutoa maelekezo chanya", - "type": "data_list", + "SourceText": "Getting up even though I felt tired", + "text": "Kuamka hata kama nilijisikia uchovu", + "type": "template", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Kudhibiti Msongo wa Mawazo", - "type": "data_list", + "SourceText": "Smiling at someone", + "text": "Kutabasamu", + "type": "template", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "Warsha ya **Kudhibiti Msongo wa Mawazo**", - "type": "data_list", + "SourceText": "Making food to stay strong", + "text": "Kupika chakula cha kunipa nguvu", + "type": "template", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Jinsi ya kudhibiti msongo wa mawazo", - "type": "data_list", + "SourceText": "Spending time with my children", + "text": "Kutumia muda kukaa na watoto wangu", + "type": "template", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Bajeti za Familia", - "type": "data_list", + "SourceText": "Helping my children with schoolwork", + "text": "Kuwasaidia watoto wangu kazi za shule", + "type": "template", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "Warsha ya **Bajeti za Familia**", - "type": "data_list", - "note": "" + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Sema kwa sauti kama unaweza.\n\nHapa kuna jambo moja unalostahili kusifiwa: Hongera kwa kutumia @global.parent_app!", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "How to budget & save", - "text": "Jinsi ya kutengeneza bajeti & kuweka akiba", - "type": "data_list", + "SourceText": "Things to praise yourself for:", + "text": "Mambo ya kujisifia:", + "type": "template", "note": "" }, { - "SourceText": "Rules", - "text": "Sheria", - "type": "data_list", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Kuonyesha upendo kwa watoto wako\n* Kuamka hata kama ulihisi uchovu\n* Kutabasamu\n* Kupika chakula cha kukupa nguvu\n* Kutumia muda kukaa na watoto wako\n* Kuwasaidia watoto wako kazi za shule", + "type": "template", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "Warsha ya **Sheria**", - "type": "data_list", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "Hebu tujaribu na kufanya pamoja shughuli fupi ya kujiburudisha!", + "type": "template", "note": "" }, { - "SourceText": "How to create rules", - "text": "Jinsi ya kuunda sheria", - "type": "data_list", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "Kama wazazi, mara nyingi hatuna muda wa kujithamini – lakini kujithamini ni muhimu sana! Kupunguza msongo wa mawazo hutusaidia sisi PAMOJA NA vijana wetu.\n\nHebu tupige hatua ya kwanza na tufanye pamoja shughuli fupi ya kujiburudisha.", + "type": "template", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Athari Nyepesi", - "type": "data_list", + "SourceText": "Well done! Try to do this every day.", + "text": "Hongera! Jaribu kufanya hivyo kila siku.", + "type": "template", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "Kipindi cha **Athari Nyepesi**", - "type": "data_list", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Kujithamini sisi wenyewe ni ujuzi muhimu wa malezi. Shirikishaneni nyote:\n\nJe, ni vitu gani vidogo vinavyokufurahisha?", + "type": "template", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Jinsi ya kuamuru athari nyepesi zifanywe", - "type": "data_list", - "note": "" + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Jaribu kufanya kitu cha kujipongeza kila siku.\n\nUnaweza kutumia ujuzi huu nyumbani. Utaupata wakati wowote kwenye @global.parent_centre!", + "type": "template", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Problem Solving", - "text": "Kutatua Matatizo", - "type": "data_list", + "SourceText": "Reward", + "text": "Tuzo", + "type": "template", "note": "" }, { - "SourceText": "**Problem Solving** workshop", - "text": "Warsha ya **Kutatua Matatizo**", - "type": "data_list", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Sisi sote tunastahili kujitendea vizuri!", + "type": "template", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Jinsi ya kutatua matatizo", - "type": "data_list", + "SourceText": "What small thing makes you happy?", + "text": "Je, ni kitu gani kidogo kinachokufurahisha?", + "type": "template", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Usalama wa Vijana", - "type": "data_list", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Safi! Kujithamini wewe mwenyewe ni ujuzi muhimu wa malezi!", + "type": "template", "note": "" }, { - "SourceText": "**Teen Safety** workshop", - "text": "Warsha ya **Usalama wa Vijana**", - "type": "data_list", + "SourceText": "Try to do something to reward yourself every day.", + "text": "Jaribu kufanya kitu cha kujipongeza mwenyewe kila siku.", + "type": "template", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Jinsi ya kumweka salama kijana wako", - "type": "data_list", + "SourceText": "Have a hot drink", + "text": "Kunywa kinywaji cha moto", + "type": "template", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Kushughulikia Hali ya Matatizo", - "type": "data_list", + "SourceText": "Call a friend or relative", + "text": "Mpigie simu rafiki au jamaa", + "type": "template", "note": "" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "Warsha ya **Kushughulikia Hali ya Hatari**", - "type": "data_list", + "SourceText": "Have a relaxing bath", + "text": "Oga kwa kujiburudisha", + "type": "template", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Jinsi ya kushughulikia hali ya hatari", - "type": "data_list", + "SourceText": "Read", + "text": "Soma", + "type": "template", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Kusherehekea na Hatua Zinazofuata", - "type": "data_list", + "SourceText": "Things you can do to reward yourself:", + "text": "Vitu unavyoweza kufanya ili kujipongeza:", + "type": "template", "note": "" }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "Warsha ya **Kusherehekea na Hatua Zinazofuata**", - "type": "data_list", + "SourceText": "Sleeping", + "text": "Kulala", + "type": "template", "note": "" }, { - "SourceText": "How to support each other", - "text": "Jinsi ya kusaidiana", - "type": "data_list", + "SourceText": "Talking with a friend", + "text": "Kuongea na rafiki", + "type": "template", "note": "" }, { - "SourceText": "Quick pause", - "text": "Simama haraka", - "type": "data_list", + "SourceText": "Doing something I enjoy", + "text": "Kufanya kitu ninafurahia", + "type": "template", "note": "" }, { - "SourceText": "Power of three", - "text": "Nguvu ya tatu", - "type": "data_list", + "SourceText": "Doing something relaxing", + "text": "Kufanya kitu cha kupumzika", + "type": "template", "note": "" }, { - "SourceText": "One thing today", - "text": "Jambo moja leo", - "type": "data_list", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Leo utaona shughuli 3 zinazoweza kukusaidia kujithamini, na tutakuuliza maswali kadhaa ili kuhakikisha kuwa programu hii iko sawa kabisa kwa ajili yako.", + "type": "template", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Vuta pumzi mara tatu", - "type": "data_list", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Shughuli ya kujiburudisha\n* Shughuli ya kujitambua\n* Shughuli ya kujipongeza\n* Nyenzo: Jinsi ya kujithamini\n* Rekebisha programu hii\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "In and out", - "text": "Ndani na nje", - "type": "data_list", - "note": "" + "SourceText": "Customise your @global.parent_app", + "text": "Rekebisha @global.parent_app yako", + "type": "template", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about today", - "text": "Fikiria kuhusu leo", - "type": "data_list", - "note": "" + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Sasa kwa kuwa tumejifunza kwa kiasi fulani ujuzi wa kujithamini, hebu tuhakikishe @global.weekly_workshops ziko sahihi kabisa kwa ajili yako.", + "type": "template", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Pause to respond", - "text": "Simamisha ili ujibu", - "type": "data_list", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Inaonekana tayari umemaliza kufanya marekebisho. Sasa unaweza kuruka shughuli hii.", + "type": "template", "note": "" }, { - "SourceText": "Small things", - "text": "Vitu vidogo", - "type": "data_list", + "SourceText": "RELAX", + "text": "Chukua pumziko", + "type": "template", "note": "" }, { - "SourceText": "Body scan", - "text": "Uchunguzi wa mwili", - "type": "data_list", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Fanya shughuli ya kuchukua pumziko ya haraka kwa sekunde 30.", + "type": "template", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Gusa ardhi", - "type": "data_list", + "SourceText": "Relax activity", + "text": "Shughuli ya kujiburudisha", + "type": "template", "note": "" }, { - "SourceText": "Counting sounds", - "text": "Sauti za kuhesabu", - "type": "data_list", + "SourceText": "RECOGNISE", + "text": "TAMBUA", + "type": "template", "note": "" }, { - "SourceText": "Feel your feeling", - "text": "Hisi hisia yako", - "type": "data_list", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Fikiria jambo moja ambalo WEWE umelifanya vizuri hivi karibuni! Sema kwa sauti kama unaweza: \"Ninajipongeza kwa…\"", + "type": "template", "note": "" }, { - "SourceText": "Your song", - "text": "Wimbo wako", - "type": "data_list", + "SourceText": "Recognise activity", + "text": "Shughuli ya kujitambua", + "type": "template", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Ardhi & shukrani", - "type": "data_list", + "SourceText": "REWARD", + "text": "TUZO", + "type": "template", "note": "" }, { - "SourceText": "Notice how you feel", - "text": "Chunguza unavyohisi", - "type": "data_list", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Kumbuka unastahili pia kuwa na wakati bora! Ni nini kinachokufurahisha?", + "type": "template", "note": "" }, { - "SourceText": "Pause power", - "text": "Nguvu ya kutulia", - "type": "data_list", + "SourceText": "Reward activity", + "text": "Shughuli ya kujipongeza", + "type": "template", "note": "" }, { - "SourceText": "Taking care of yourself", - "text": "Kujithamini mwenyewe", - "type": "data_list", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Wafundishe vijana wako hatua nne za kutatua matatizo:\nELEWA – TATUA – CHAGUA – JARIBU\n\nTumieni hatua hizi tatizo linapojitokeza.\n\nJambo baya linapotokea, mara nyingi tunafadhaika na kulaumu. Lakini kile ambacho vijana wetu wanahitaji ni mtu wa kuwasaidia kulitatua tatizo. Wasikilize, kubali jinsi wanavyoyaona mambo na kuyahisi, na washukuru kwa kukuamini.\n\nKumfundisha kijana wako jinsi ya kutatua matatizo kutamsaidia maishani mwake mwote. Zawadi iliyoje!", + "type": "template", "note": "" }, { - "SourceText": "Take a pause", - "text": "Tulia", - "type": "data_list", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Baadhi ya matatizo ambayo wazazi waliyatatua na vijana wao:", + "type": "template", "note": "" }, { - "SourceText": "Physical activity", - "text": "Shughuli ya kutumia nguvu", - "type": "data_list", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* Kijana wangu hataki kwenda shule\n* Nina wasiwasi kijana wangu atapata ujauzito au atampa mtu mjamzito\n* Nina wasiwasi kuhusu anachofanya kijana wangu mtandaoni\n* Kijana wangu ana marafiki wabaya\n* Kijana wangu ni mvivu\n* Kijana wangu hafanyi kazi zake za shuleni\n* Huenda kijana wangu anatumia madawa ya kulevya", + "type": "template", "note": "" }, { - "SourceText": "List of things", - "text": "Orodha ya vitu", - "type": "data_list", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Kila familia hukabiliwa na changamoto, lakini tunapofanya kazi pamoja tunaweza kushughulikia matatizo kwa njia iliyo bora na ya amani.\n\nNi ujuzi mzuri sana kwa kijana wako pia kujifunza!", + "type": "template", "note": "" }, { - "SourceText": "Connect", - "text": "Unganisha", - "type": "data_list", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Habari zenu?\n\nMada ya leo inahusu kutatua matatizo.\n\nSote tunajua kuwa katika maisha kuna nyakati tunakabiliwa na matatizo, na sote tunajua kwamba tunapojikuta katika nyakati hizo, ni vigumu kufikiria haraka ufumbuzi chanya.\n\nKwa hiyo, tunapokabiliwa na matatizo ni muhimu tupumzike, tupumue, tutulie na tufikirie ujuzi wa kutatua matatizo tunaoweza kuutumia. \n\nTunapotatua matatizo, tukumbuke kuwashirikisha vijana wetu. Kufanya hivyo kutawasaidia kuwajibika na kujifunza jinsi ya kutatua matatizo yao wenyewe siku zijazo.", + "type": "template", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Zuia hasira", - "type": "data_list", - "note": "" + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "Hebu turudi kwa @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake ili tuone njia za utatuzi walizotumia.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Angry? Take a break", - "text": "Je, umekasirika? Pumzika", - "type": "data_list", - "note": "" + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "@global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wake walipata njia tatu za utatuzi.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Reflect on the positive", - "text": "Tafakari mambo chanya", - "type": "data_list", - "note": "" + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Kuwalea vijana ni kazi ngumu sana.\n\nMara nyingi huwa hakuna njia za utatuzi zilizo rahisi na zilizonyooka, lakini sasa @global.w_solve_female_caregiver_1 amejifunza kwamba kumbe anaweza kuzungumza mambo haya na binti yake.\n\nKabla, alikuwa akipata wasiwasi peke yake, lakini sasa wanaweza kutafuta pamoja njia za utatuzi!", + "type": "template", + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Check-in chat", - "text": "Soga ya kuingilia", - "type": "data_list", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Je, tayari umejaribu kutumia hatua nne za kutatua matatizo na kijana wako?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU!", + "type": "template", "note": "" }, { - "SourceText": "Dream Travel", - "text": "Safari ya ndoto", - "type": "data_list", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Kujitolea kwako ni mfano wa kuigwa na kila mtu. Tulia na uendelee!", + "type": "template", "note": "" }, { - "SourceText": "Famous Party", - "text": "Chama Maarufu", - "type": "data_list", - "note": "" + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "Uko kwenye njia sahihi ya kuanza kutatua matatizo pamoja na kijana wako!\n\nMalizia @local.workshop_data.in_text_title ili upate ujuzi mwingine muhimu wa malezi!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Two truths, one lie", - "text": "Kweli mbili, uongo mmoja", - "type": "data_list", - "note": "" + "SourceText": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you how to deal with them.", + "text": "Habari @fields.user_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana inamaanisha kuwa na matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.workshop" }, { - "SourceText": "Time Machine", - "text": "Mashine ya Wakati", - "type": "data_list", - "note": "" + "SourceText": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This @global.workshop will show you all how to deal with them.", + "text": "Habari @fields.group_name! Unaendelea vizuri sana katika safari yako ya malezi!\n\nKuwa na kijana inamaanisha kuwa na matatizo mengi yasiyotarajiwa yanayotakiwa kushughulikiwa. @global.workshop hii itakuonesha jinsi ya kuyashughulikia.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.workshop" }, { - "SourceText": "Superpowers", - "text": "Nguvu kubwa", - "type": "data_list", - "note": "" + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next @global.workshop to learn how to successfully address these problems.", + "text": "Unapokuwa na vijana, na katika maisha haya, matatizo yasiyotarajiwa hutokea na tunapaswa kukabiliana nayo.\n\nAnza @global.workshop inayofuata ili kujifunza jinsi ya kutatua matatizo hayo kwa mafanikio.", + "type": "template", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Just a friendly chat", - "text": "Maongezi ya kirafiki", - "type": "data_list", - "note": "" + "SourceText": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new @global.workshop. Knowing how to solve problems together will help in many situations!", + "text": "Kesho, @global.workshop mpya kabisa ya @global.parent_app itakuwa tayari kwa ajili yako.\n\nJaribu kumalizia @local.workshop_data.in_text_title kabla ya kuanza @global.workshop mpya. Kufahamu namna ya kutatua matatizo pamoja kutasaidia katika nyakati mbalimbali!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.workshop\n@local.workshop_data.in_text_title\n@global.workshop" }, { - "SourceText": "The Interrupter", - "text": "Mdakizi", - "type": "data_list", - "note": "" + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Umefanya vizuri sana kumaliza @local.workshop_data.in_text_title. Kesho, warsha mpya itafunguliwa ili kukusaidia kumweka salama kijana wako.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Three options", - "text": "Machaguo matatu", - "type": "data_list", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Fumba macho yako, vuta pumzi, na elewa kwamba kila kitu ulichokifanya ni cha muhimu sana.", + "type": "template", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "Ndiyo, Hapana au Labda", - "type": "data_list", - "note": "" + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "Mzuie @global.w_solve_teen_girl kwenda kutembea kwa mwezi mmoja", + "type": "template", + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Mchezo wa kukumbuka – \"Jumamosi...\"", - "type": "data_list", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: \"Mwezi ujao hutaweza kwenda huko nje kutembea.\"", + "type": "template", + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Make up a story", - "text": "Buni Hadithi", - "type": "data_list", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Hiyo haikufanikiwa... Hebu tujaribu kitu kingine.", + "type": "template", "note": "" }, { - "SourceText": "Co-chef", - "text": "Mpishi mwenza", - "type": "data_list", + "SourceText": "Return the phone and save up", + "text": "Rudisha simu na uanze kujiwekea akiba", + "type": "template", "note": "" }, { - "SourceText": "Dance moves", - "text": "Miondoko ya kucheza", - "type": "data_list", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: \"Simlaumu rafiki yako wala sioni wivu. Nina wasiwasi kwamba mtu anapokupatia zawadi, ni vigumu kumkatalia atakapokuomba umlipe fadhila – kama vile ngono. Kama unataka kuwa na simu, tutajiwekea akiba pamoja ili uweze kufanya maamuzi yako mwenyewe bila yeye kukudai chochote.\"", + "type": "template", + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Mirror", - "text": "Kioo", - "type": "data_list", + "SourceText": "This is great! Try the third option as well.", + "text": "Hilo ni jambo zuri sana! Jaribu pia chaguo la tatu.", + "type": "template", "note": "" }, { - "SourceText": "What's new?", - "text": "Kuna nini kipya?", - "type": "data_list", + "SourceText": "Learn about safe sex", + "text": "Jifunze kuhusu ngono salama", + "type": "template", "note": "" }, { - "SourceText": "Get active!", - "text": "Changamka!", - "type": "data_list", - "note": "" + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: \"Hii inanifanya nitambue kuwa tunapaswa kuzungumza kuhusu marafiki wa kiume na jinsi unavyoweza kujikinga. Vijana wengi wa rika lako wanapata mimba au VVU. Hebu twende kliniki uzungumze na muuguzi ili ujifunze jinsi unavyoweza kujikinga.”", + "type": "template", + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Name that tune", - "text": "Taja jina la wimbo huo", - "type": "data_list", + "SourceText": "This is great!", + "text": "Hilo ni jambo zuri sana!", + "type": "template", "note": "" }, { - "SourceText": "Pass the snap", - "text": "Pitisha kitufe", - "type": "data_list", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Family workout", - "text": "Mazoezi ya familia", - "type": "data_list", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Hadith & tafakari – ambayo haikufanikiwa…\n* Nyenzo: Jinsi ya kutatua matatizo\n* ELEWA – TATUA – CHAGUA – JARIBU\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Jaribu!\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Make housework fun", - "text": "Fanya kazi za nyumbani zifurahishe", - "type": "data_list", - "note": "" + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Jadilini pamoja:\n\nJe, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Je, kazi za nyumbani hazifurahishi... au zinafurahisha? Unaweza kuzifanya kuwa mchezo!", - "type": "data_list", - "note": "" + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Je, unamkumbuka @global.w_solve_teen_girl na simu aliyopewa na mvulana?", + "type": "template", + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "What are you doing?", - "text": "Unafanya nini?", - "type": "data_list", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Je, @global.w_solve_teen_girl na @global.w_solve_female_caregiver_1 wanawezaje kutumia hatua 4 za kutatua matatizo, kama alivyofanya @global.w_solve_female_caregiver_2 na @global.w_solve_teen_boy_2?\n\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + }, + { + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Vuta pumzi ndefu mara kadhaa upate kutulia, kisha", + "type": "template", "note": "" }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Huu hapa ni mchezo wa kufurahisha unaoweza kuucheza na familia yako!", - "type": "data_list", + "SourceText": "KNOW IT", + "text": "FAHAMU", + "type": "template", "note": "" }, { - "SourceText": "Crazy chicken", - "text": "Kuku kichaa", - "type": "data_list", + "SourceText": "Identify the problem.", + "text": "Bainisha tatizo.", + "type": "template", "note": "" }, { - "SourceText": "My Tips", - "text": "Vidokezo Vyangu", - "type": "data_list", + "SourceText": "SOLVE IT", + "text": "TAFUTA UTATUZI", + "type": "template", "note": "" }, { - "SourceText": "**My Tips** in the @global.parent_centre", - "text": "**Vidokezo Vyangu** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Fikiria njia za utatuzi zinazowezekana na kile kitakachotokea kama tutazitumia.", + "type": "template", + "note": "" }, { - "SourceText": "Essential Tools", - "text": "Nyenzo Muhimu", - "type": "data_list", + "SourceText": "TRY IT", + "text": "JARIBU", + "type": "template", "note": "" }, { - "SourceText": "**Essential Tools** in the @global.parent_centre", - "text": "**Nyenzo Muhimu** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Choose a solution and try it out.", + "text": "Chagua njia ya utatuzi na uijaribu.", + "type": "template", + "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Rekebisha @global.parent_app", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "SourceText": "TEST IT", + "text": "JARIBU", + "type": "template", + "note": "" }, { - "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", - "text": "**Rekebisha @global.parent_app** kwenye @global.parent_centre", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "Je, imefanikiwa? Safi sana! Kama haikufanikiwa, basi jaribu njia nyingine ya utatuzi.", + "type": "template", + "note": "" }, { - "SourceText": "Customise Again", - "text": "Rekebisha Tena", - "type": "data_list", + "SourceText": "Let's practice problem-solving!", + "text": "Hebu tufanye mazoezi ya kutatua matatizo!", + "type": "template", "note": "" }, { - "SourceText": "**Customise Again** in the @global.parent_centre", - "text": "**Binafsisha tena** katika @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Fanyeni mazoezi pamoja kuhusu tatizo lililopo sasa. Mmoja wenu awe mzazi na mwingine awe kijana.\n\nSifianeni na kutiana moyo – tunawaonea fahari!\n\nKumbukeni zile hatua:\nELEWA – TAFUTA UTATUZI – CHAGUA – JARIBU", + "type": "template", + "note": "" }, { - "SourceText": "Relax & Activities", - "text": "Burudani & Shughuli", - "type": "data_list", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "Umemaliza kipindi cha wiki hii.\n\nWiki ijayo, tutazungumza kuhusu pesa – utahitaji:\n* kipande cha karatasi ya kawaida/karatasi nene\n* kalamu\n* mawe madogo/maharage/punje 20\n\nItakuwa raha!", + "type": "template", "note": "" }, { - "SourceText": "under **Relax & Activities** in the @global.parent_centre", - "text": "kwenye **Burudani & Shughuli** katika @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "There are two home practices for this week.", + "text": "Kuna mazoezi mawili ya nyumbani wiki hii.", + "type": "template", + "note": "" }, { - "SourceText": "Help", - "text": "Msaada", - "type": "data_list", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Wakati wowote unapohisi msongo wa mawazo au kufadhaika: vuta pumzi na kuzishusha mara tano kabla ya kufanya chochote.\n\nNyote wawili mtakapokuwa mmetulia, mshirikishe kijana wako jinsi unavyojisikia.", + "type": "template", "note": "" }, { - "SourceText": "**Help** in the @global.parent_centre", - "text": "**Msaada** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Choose a \"@global.safety_word\" with your teenager, and think of a situation together when you could use this.", + "text": "Chagua \"@global.safety_word\", na kijana wako na mfikiri kwa pamoja mazingira ambayo mnaweza kutumia.", + "type": "template", + "note": "The string @global.safety_word should not be translated." }, { - "SourceText": "Technical Support", - "text": "Msaada wa Kiufundi", - "type": "data_list", - "note": "" + "SourceText": "@global.safety_word Story", + "text": "Hadithi ya @global.safety_word", + "type": "template", + "note": "The string @global.safety_word should not be translated." }, { - "SourceText": "**Technical Support** in the @global.parent_centre", - "text": "**Msaada wa Kiufundi** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Kila mara unapotulia kidogo kabla ya kujibu, au kila wakati unapofanya jambo fulani ili kumweka salama kijana wako, vuna @global.parent_points zako na usherehekee mafanikio yako!", + "type": "template", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Coping with @global.covid", - "text": "Kwendana na @global.covid", - "type": "data_list", - "note": "The string @global.covid should not be translated." + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Tunajua jinsi kulea vijana katika nyakati hizi kunavyoleta msongo wa mawazo. Kujifunza namna ya kudhibiti msongo wa mawazo hukusaidia wewe – na familia yako.", + "type": "template", + "note": "" }, { - "SourceText": "**Coping with @global.covid** in the @global.parent_centre", - "text": "**Kwendana na @global.covid** katika @global.parent_centre", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that make us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Salamu kwa wote.\n\nKipindi cha leo ni kukabiliana na msongo wa mawazo.\n\nNi muhumu kufahamu namna ya kukabiliana na msongo wa mawazo. Wakati mwingine, watoto wetu wanaweza kuwa na tabia zinazotupa mawazo na sisi kama wazazi tunaweza kuwafanya watoto wetu wawe na mawazo pia.\n\nKwa hiyo, ni muhumimu kutambua wakati tunahisi mawazo kisha tutulie na kuvuta pumzi ndefu. Hii itakusaidia kukabiliana na msongo wa mawazo.", + "type": "template", + "note": "" }, { - "SourceText": "Coping with grief", - "text": "Kwendana na majonzi", - "type": "data_list", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Je, hali yako ya msongo wa mawazo ilikuwaje wiki hii? Jaribu kuvuta pumzi ndefu mara kadhaa kabla ya kumjibu kijana wako – kufanya hivyo kunaleta mabadiliko makubwa.", + "type": "template", "note": "" }, { - "SourceText": "**Coping with grief** in the @global.parent_centre", - "text": "**Kwendana na majonzi**katika @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Well done!", + "text": "Hongera!", + "type": "template", + "note": "" }, { - "SourceText": "Message Archive", - "text": "Hifadhi ya Ujumbe", - "type": "data_list", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "Hongera kwa kuvuta pumzi ndefu kabla ya kumjibu kijana wako! Kila wakati unapopumzika, unapata uwezo wa kujidhibiti tena.", + "type": "template", "note": "" }, { - "SourceText": "**Message Archive** in the @global.parent_centre", - "text": "**Hifadhi ya Ujumbe** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "Je, una furaha, huzuni, hasira, taharuki au wasiwasi? Vizuri sana kwa kutambua jinsi wewe na wengine mlivyojisikia leo! Na kumbuka, kesho ni siku mpya.", + "type": "template", + "note": "" }, { - "SourceText": "Support Contacts", - "text": "Mawasiliano ya Msaada", - "type": "data_list", - "note": "" + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Wakati mwingine sisi sote huhisi kulemewa. Kuvuta pumzi ndefu husaidia!\n\nMaliza @local.workshop_data.in_text_title ili kupata baadhi ya nyenzo muhimu za kukabiliana na msongo wa mawazo.", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "**Support Contacts** in the @global.parent_centre", - "text": "**Mawasiliano ya Msaada** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "text": "Habari @fields.user_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\n@global.workshop mpya ya malezi inakusubiri ikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.workshop" }, { - "SourceText": "Evidence Base", - "text": "Yenye Ushahidi wa Kufanya Kazi", - "type": "data_list", - "note": "" + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting @global.workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "text": "Habari @fields.group_name! Hongera kwa kuanza wiki ya 5 ya @global.parent_app.\n\n@global.workshop mpya ya malezi inakusubiri ikiwa na dondoo za jinsi tunavyoweza kuwa watulivu na kudhibiti mambo pindi vijana wetu wanapotuchanganya.", + "type": "template", + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app\n@global.workshop" }, { - "SourceText": "**Evidence Base** in the @global.parent_centre", - "text": "**Yenye Ushahidi wa Kufanya Kazi** kwenye @global.parent_centre", - "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "SourceText": "We have a new @global.workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Tuna @global.workshop kipya kwa ajili yako kinachohusu kudhibiti hasira na msongo wa mawazo. Itakusaidia kujithamini zaidi.", + "type": "template", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "How to talk to my teen", - "text": "Jinsi ya kuongea na kijana wangu", - "type": "data_list", - "note": "" + "SourceText": "Tomorrow a brand new @global.parent_app @global.workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Kesho @global.workshop kipya kabisa ya @global.parent_app kitakuwa tayari kwa ajili yako.\n\nKwa kumalizia kwanza @local.workshop_data.in_text_title, utajiwekea msingi mzuri sana: Wewe utakapojisikia vizuri, familia yako nayo itajisikia vizuri!", + "type": "template", + "note": "The following strings should not be translated:\n@global.parent_app\n@global.workshop\n@local.workshop_data.in_text_title" }, { - "SourceText": "Steps to deal with news", - "text": "Hatua za kukabiliana na habari", - "type": "data_list", - "note": "" + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "Hongera kwa kumaliza @local.workshop_data.in_text_title. Kesho, utaweza kupata kipindi kipya na kitakusaidia kupumzika na kujifunza ujuzi muhimu sana!", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "How can I help my teen choose well?", - "text": "Jinsi gani naweza kumsaidia kijana wangu kuchagua vizuri?", - "type": "data_list", + "SourceText": "Recognise why he feels stressed", + "text": "Kutambua kwa nini anahisi msongo wa mawazo", + "type": "template", "note": "" }, { - "SourceText": "What influences teen decisions?", - "text": "Nini kinapelekea maamuzi ya kijana?", - "type": "data_list", + "SourceText": "Take a deep breath and speak calmly", + "text": "Kuvuta pumzi ndefu na kuzungumza kwa utulivu", + "type": "template", "note": "" }, { - "SourceText": "How does my teen feel?", - "text": "Kijana wangu anajisikiaje?", - "type": "data_list", + "SourceText": "Show he understands his teen’s feelings", + "text": "Kuonesha kuwa anaelewa hisia za kijana wake", + "type": "template", "note": "" }, { - "SourceText": "Changing negative to positive", - "text": "Kubadili hasi kuwa chanya", - "type": "data_list", - "note": "" + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1", + "type": "template", + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Help yourself cope", - "text": "Jisaidie kwendana", - "type": "data_list", - "note": "" + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", + "type": "template", + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Help your teen cope", - "text": "Msaidie kijana kwendana", - "type": "data_list", + "SourceText": "Let's think about what happened in this story.", + "text": "Hebu tufikirie kuhusu kilichotokea kwenye Hadithi hii.", + "type": "template", "note": "" }, { - "SourceText": "Practical steps", - "text": "Hatua za vitendo", - "type": "data_list", - "note": "" + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje?", + "type": "template", + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Relax", - "text": "Chukua pumziko", - "type": "data_list", - "note": "" + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "Na @global.w_stress_male_caregiver, je?", + "type": "template", + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "**Relax** @global.parent_point", - "text": "@global.parent_point ya **Chukua pumziko**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "And @global.w_stress_girl?", + "text": "Na @global.w_stress_girl, je?", + "type": "template", + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "Doing a relaxation activity", - "text": "Kufanya shughuli ya kuburudisha", - "type": "data_list", + "SourceText": "Sad", + "text": "Huzuni", + "type": "template", "note": "" }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapopumzika, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Scared", + "text": "Kuogopa", + "type": "template", + "note": "" }, { - "SourceText": "Treat yourself well", - "text": "Jitendee vizuri", - "type": "data_list", + "SourceText": "Confused", + "text": "Kuchanganyikiwa", + "type": "template", "note": "" }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "@global.parent_point ya **Jitendee vizuri**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Angry", + "text": "Hasira", + "type": "template", + "note": "" }, { - "SourceText": "Doing something they like for themselves", - "text": "Kufanya kitu wanachopenda wao wenyewe", - "type": "data_list", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Kila mmoja wao alihisi kufadhaika kwa sababu zake mwenyewe!", + "type": "template", "note": "" }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapojitendea vizuri, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "Je, @global.w_stress_male_caregiver angeweza kufanyaje tofauti?", + "type": "template", + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Praise yourself", - "text": "Jisifie", - "type": "data_list", - "note": "" + "SourceText": "Having a @global.safety_word can help your teen stay safe too.", + "text": "Kuwa na @global.safety_word inaweza kumsaidia kijana wako kuwa salama pia.", + "type": "template", + "note": "The string @global.safety_word should not be translated." }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "@global.parent_point ya **Jisifie**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "You can choose any word as a @global.safety_word. Only your family knows it means ‘help’. \n\nYour teen can say this word to let you know they are in trouble without you getting angry or punishing them, so you can help them.", + "text": "Unaweza kuchagua neno lolote kama @global.safety_word. Ni familia yako tu inajua linamaanisha 'msaada'.\n\nKijana wako anaweza kusema neno hili kukujulisha wanapokuwa katika matatizo pasipo wewe kuwa na hasira au kuwaadhibu, ili uweze kuwasaidia.", + "type": "template", + "note": "The string @global.safety_word should not be translated." }, { - "SourceText": "Praising themselves", - "text": "Kujisifia mwenyewe", - "type": "data_list", - "note": "" + "SourceText": "What @global.safety_word can you choose with your teen?", + "text": "Ni nini @global.safety_word unaweza kuchagua na kijana wako?", + "type": "template", + "note": "The string @global.safety_word should not be translated." }, { - "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapojisifia, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Your teen can say:\n\"I saw...\"\n\"I look forward to...\"\n\"Did you remember to…?\"\n\nYou respond calmly and give your teen an excuse why they need to come home.", + "text": "Kijana wako anaweza kusema:\n\"Nimeona...\"\n\"Ninatazamia...\"\n\"Ulikumbuka ku...?\"\n\nUnajibu kwa utulivu na kuwaambia vijana wako kwa nini wanatakiwa kuja nyumbani.", + "type": "template", + "note": "" }, { - "SourceText": "One-on-one time", - "text": "Muda wa kutumia wawili", - "type": "data_list", + "SourceText": "A specific food", + "text": "Chakula maalum", + "type": "template", "note": "" }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "@global.parent_point ya **Muda wa kutumia pamoja wawili**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "A specific family member", + "text": "Mwanafamilia maalum", + "type": "template", + "note": "" }, { - "SourceText": "Spending time with their teen", - "text": "Kutumia muda pamoja na kijana wako", - "type": "data_list", + "SourceText": "A specific animal", + "text": "Mnyama maalum", + "type": "template", "note": "" }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara mnapotumia pamoja wawili, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Something else", + "text": "Kitu kingine", + "type": "template", + "note": "" }, { - "SourceText": "Praise your teen", - "text": "Msifie kijana wako", - "type": "data_list", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Hiyo ni nzuri, hasa kwenye nyakati ngumu kama hizi. Wewe ni mshindi.", + "type": "template", "note": "" }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "@global.parent_point ya **Msifie kijana wako**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Today you will explore:", + "text": "Leo mtachunguza:", + "type": "template", + "note": "" }, { - "SourceText": "Praising their teen when they did positive thing", - "text": "Kumsifia kijana wako alipofanya jambo chanya", - "type": "data_list", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Hadithi & majadiliano – ambayo hayakufanikiwa…\n* Hadithi & majadiliano – ambayo yalifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONYESHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapomsifia kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Hadithi & tafakari – ambayo haikufanikiwa…\n* Hadithi & tafakari – ambayo ilifanikiwa!\n* Hadithi ya Msamaha wa Usalama & majadiliano – ambayo yalifanikiwa!\n* Nyenzo: Jinsi ya kudhibiti msongo wa mawazo\nVUTA PUMZI – SHIRIKISHA WENGINE – ONESHA\n* Mazoezi ya nyumbani yanayopendekezwa", + "type": "template", + "note": "" }, { - "SourceText": "Get positive", - "text": "Kuwa na mtazamo chanya", - "type": "data_list", + "SourceText": "Let's discuss what happened in this story.", + "text": "Hebu tujadili kilichotokea kwenye hadithi hii.", + "type": "template", "note": "" }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "@global.parent_point ya **Kuwa na mtazamo chanya**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "Je, unadhani @global.w_stress_teen_boy_1 alijisikiaje? Na @global.w_stress_male_caregiver wake, je? Na @global.w_stress_girl, je?\n\nJe, @global.w_stress_male_caregiver angeweza kufanyaje badala yake?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Kuwapa vijana wake maelekezo chanya", - "type": "data_list", - "note": "" + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver angeweza...", + "type": "template", + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapotoa maelekezo chanya, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* Kutambua kwa nini anahisi msongo wa mawazo\n* Kuvuta pumzi ndefu na kuzungumza kwa utulivu\n* Kuonyesha kuwa anaelewa hisia za kijana wake\n* Kufikiria utatuzi pamoja na @global.w_stress_teen_boy_1\n* Kufanya kitu chanya pamoja na @global.w_stress_teen_boy_1", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "Breathe not yell", - "text": "Vuta pumzi, usifoke", - "type": "data_list", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "VUTA PUMZI. Polepole. Tulia.", + "type": "template", "note": "" }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "@global.parent_point ya **Vuta pumzi, usifoke**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Kabla ya kusema chochote, vuta pumzi polepole na kuzishusha mara tano. Kufanya hivyo kutakutuliza, na kukupa nafasi ya kufikiria.", + "type": "template", + "note": "" }, { - "SourceText": "Taking a pause before responding", - "text": "Kutulia kabla ya kujibu", - "type": "data_list", + "SourceText": "SHARE how you feel", + "text": "SHIRIKISHA WENGINE jinsi unavyohisi", + "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapotulia kabla ya kujibu, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Hili ni jambo gumu. Wengi wetu tuliambiwa tusilie, au kuonesha hisia zetu kwa watoto wetu. Lakini vuta pumzi ndefu na uwaambie kwa utulivu jinsi unavyohisi. Wataelewa vizuri, na pia watajifunza kutoka kwako jinsi ya kukabiliana na msongo wa mawazo.", + "type": "template", + "note": "" }, { - "SourceText": "Good money choice", - "text": "Maamuzi mazuri kuhusu pesa", - "type": "data_list", + "SourceText": "SHOW them you care", + "text": "WAONESHE kuwa unawajali", + "type": "template", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "@global.parent_point ya **Maamuzi mazuri kuhusu pesa**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Hili pia ni jambo gumu! Msongo wa mawazo hutufanya tujiangalie sisi wenyewe. Lakini vijana wetu wanahitaji msaada wetu. Waulize wanajisikiaje. Wasikilize na uwafariji. Jaribu kuwakumbatia au sema 'Ninaelewa'. Kufanya hivyo kunaweza kubadilisha kila kitu.", + "type": "template", + "note": "" }, { - "SourceText": "Keeping the budget", - "text": "Kutumia bajeti", - "type": "data_list", + "SourceText": "SEEK the positive", + "text": "TAFUTA mambo chanya", + "type": "template", "note": "" }, { - "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapofanya maamuzi mazuri kuhusu mahitaji, matamanio na kujiwekea akiba, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "Je, wewe na kijana wako mnaweza kufikiria mawazo yanayoweza kusaidia? Je, mnaweza kufanya pamoja kitu chanya ili kuhamisha mawazo yako kutoka kwenye msongo wa mawazo?", + "type": "template", + "note": "" }, { - "SourceText": "Calm consequence", - "text": "Athari Nyepesi", - "type": "data_list", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "Kama mengine yote hayatafaulu, vuta pumzi. Unao uwezo wa kulishinda hili.", + "type": "template", "note": "" }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "@global.parent_point ya **Athari nyepesi**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "This big button takes you to the @global.workshop you are currently exploring. Tap this to find:", + "text": "Hiki kitufe kikubwa kitakupeleka kwenye @global.workshop unayopitia kwa sasa. Gusa hiki kukipata.", + "type": "tour", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Giving their teen a consequence in a calm way", - "text": "Kuamuru kwa utulivu kijana wake afanye athari", - "type": "data_list", + "SourceText": "Have a look around! Wherever you start, just the fact you are here shows you care.", + "text": "Angalia! Popote utakapoanzia, ukweli ni kwamba kuwepo hapa inaonesha unajali.", + "type": "tour", "note": "" }, { - "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapoamuru kufanywa kwa athari nyepesi, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "This big button takes you to the @global.workshop you are currently exploring. Tap it to find:", + "text": "Hiki kitufe kikubwa kitakupeleka kwenye @global.workshop unayopitia kwa sasa. Gusa hiki kukipata:", + "type": "tour", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Safe", - "text": "Salama", - "type": "data_list", + "SourceText": "A set of activities to help you build a parenting skill.", + "text": "Kazi za kukusaidia kujenga mbinu za malezi.", + "type": "tour", "note": "" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "@global.parent_point **Salama**", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Quick reminders on how to successfully use a parenting skill.", + "text": "Ukumbusho wa haraka jinsi unavyoweza kutumia ujuzi wa malezi kwa mafanikio.", + "type": "tour", + "note": "" }, { - "SourceText": "Planning or keeping a family safety plan", - "text": "Kupanga au kutumia mpango wa usalama wa familia", - "type": "data_list", + "SourceText": "One easy idea on how you can apply a new skill with your family.", + "text": "Ukumbusho wa haraka jinsi unavyoweza kutumia ujuzi wa malezi kwa mafanikio.", + "type": "tour", "note": "" }, { - "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", - "text": "Kila mara unapofanya jambo ili kumweka salama kijana wako, bofya @global.parent_point na usherehekee mafanikio yako!", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "SourceText": "Here you can select any of the other @global.workshops in @global.parent_app. Each @global.workshop gives you one important parenting skill. Swipe to see the next @global.workshops.", + "text": "Hapa unaweza kuchagua @global.workshops nyingine yoyote katika @global.parent_app. Kila @global.workshops inakupa ujuzi muhimu wa malezi.", + "type": "tour", + "note": "The following strings should not be translated:\n@global.workshops\n@global.parent_app.\n@global.workshop\n@global.workshops." }, { - "SourceText": "Did it? Tap it!", - "text": "Ulifanya hivyo? Bofya!", - "type": "data_list", - "note": "" + "SourceText": "You can explore any @global.workshop whenever you want. To see the biggest change in your family, complete all the activities in one @global.workshop before moving to the next one.", + "text": "Unaweza kuchunguza @global.workshop yoyote wakati wowote unaotaka. Kuona mabadiliko makubwa katika familia yako, maliza shughuli zako katika moja ya @global.workshop kabla ya kuhamia nyingine.", + "type": "tour", + "note": "The following strings should not be translated:\n@global.workshop\n@global.workshop" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Vizuri sana! Hongereni kwa kutumia muda pamoja. Kufanya hivyo kunaweka msingi wa uhusiano mzuri sana na kijana wako!", - "type": "data_list", - "note": "" + "SourceText": "Tap here whenever you enter @global.parent_app! You will find 3 short activities that you can do next to help yourself and your family.", + "text": "Bonyeza hapa kila unapoingia kwenye @global.parent_app! Utapata shughuli tatu fupi unzaoweza kufanya zikusaidie wewe na familia yako.", + "type": "tour", + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Heri yako! Kutumia muda wa pamoja unawaonesha vijana wako kuwa wao ni watu muhimu kwako. Kufanya hivyo kunaleta mabadiliko!", - "type": "data_list", + "SourceText": "The HOUSE button brings you back to the home screen at any time.", + "text": "Kitufe cha NYUMBA kinakurudisha kwenye skrini ya kwanza wakati wowote.", + "type": "tour", "note": "" }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Vizuri sana! Kutumia muda pamoja na kijana wako kunaweza kumfanya kijana wako awe tayari kusaidia mara nyingi. Unafanya vizuri sana!", - "type": "data_list", - "note": "" + "SourceText": "The STAR button takes you to the @global.parent_points. Each new parenting skill comes with a @global.parent_point. @global.parent_points help you celebrate your achievements.", + "text": "Kitufe cha NYOTA kinakupeleka wewe kwenye @global.parent_points. Kila ujuzi mpya wa malezi huja na @global.parent_point. @global.parent_points inakusaidia wewe kusherehekea mafanikio.", + "type": "tour", + "note": "The following strings should not be translated:\n@global.parent_points.\n@global.parent_point.\n@global.parent_points" }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "Hongera! Kutumia muda wa pamoja na kijana wako unakupa nafasi ya kujifunza zaidi kuhusu mambo anayoyapendelea na uwezo wake. Wewe ni mshindi!", - "type": "data_list", - "note": "" + "SourceText": "Tap the BOOK button to go to the @global.parent_centre. Check out the extra relaxation activities and ideas for fun things to do with your teen! You can also find contact details for support services in your area and for technical support with @global.parent_app.", + "text": "Gusa kitufe cha KITABU ili kwenda kwenye @global.parent_centre. Angalia kazi za zaidi za kupumzika na mawazo ya kufurahisha kufanya na kijana wako! Unaweza pia kupata taarifa za mawasiliano za msaada katika eneo lako na msaada wa kiufundi kwenye @global.parent_app.", + "type": "tour", + "note": "The following strings should not be translated:\n@global.parent_centre.\n@global.parent_app." }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Kazi nzuri sana! Kutumia muda pamoja kunasaidia kujenga uhusiano mzuri na imara kati yako na kijana wako.", - "type": "data_list", - "note": "" + "SourceText": "Welcome to @global.parent_app", + "text": "Karibu kwenye @global.parent_app", + "type": "tour", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Wakati mwingine, kutumia muda pamoja na vijana wako kutakuwa rahisi na kutafurahisha, na wakati mwingine kutakuwa kugumu zaidi. Kutumia muda pamoja kutaboresha sana uhusiano wenu; hongera kwa kujaribu!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Unastahili kujisikia vizuri, na kuwa na mahusiano ya furaha zaidi ya kifamilia.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app iko hapa kukusaidia.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hapa ni jnsi unavyoweza kutumia programu:

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string

                                                                                                                                                                                  @global.parent_app should not be translated." }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Tunasikitika kusikia kwamba ilikuwa vigumu kwako kutumia muda pamoja na kijana wako. Wakati mwingine, sisi sote tunakabiliwa na changamoto. Jivumilie tu na mvumilie kijana wako – mambo yatakuwa mazuri. Hongera kwa kujaribu!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Hiki kitufe kikubwa kinakupeleka katika @global.weekly_workshops.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops. should not be translated." }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Ni jambo zuri sana kusikia kuwa mambo yameenda Wewe ni mshindi!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Each week you will unlock a new @global.workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Kila wiki utafungua @global.workshop mpya ikijikita katika ujuzi tofauti wa malezi

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Vizuri sana! Unastahili kufurahi nyakati zote!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.workshop is ready for you.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Kitufe cha duara kitatokea pindi @global.workshop mpya inapokuwa tayari kwa ajili yako.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.workshop should not be translated." }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Wewe ni mshindi kwa kujaribu!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Kila ujuzi mpya wa malezi huja na @global.parent_point.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_point.

                                                                                                                                                                                  should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Inafurahisha sana kuona umejisikia vizuri! Endeleza kazi hiyo nzuri sana. Kijana wako anajifunza mengi kutoka kwako!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tumia @global.parent_points kusherehekea mafanikio yako!

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Kuzungumza kuhusu tunavyohisi kunaweza kuwa kugumu mwanzoni, lakini wewe na kijana wako mtazoea. Endelea kujaribu, utaona matokeo mazuri!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Find lots of helpful resources in the @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can get instant access to the Essential Tools from all @global.weekly_workshops.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Pata rasilimali nyingi za kukusaidia katika @global.parent_centre.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unaweza kupata uwezo wa papo kwa hapo kupata Nyenzo Muhimu kutoka katika @global.weekly_workshops.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The following strings should not be translated:\n@global.parent_centre.

                                                                                                                                                                                  \n@global.weekly_workshops.

                                                                                                                                                                                  " }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri. Kuzungumzia fedha zako pamoja kunaimarisha zaidi familia yako!", - "type": "data_list", + "SourceText": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Angalia shughuli za ziada za kupumzika na malezi!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Unaweza pia kupata dondoo za malezi na msaada wa kiufundi kwa haraka.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Tunasikitika kusikia kuwa mambo yalikuwia magumu. Hongera kwa kujaribu!", - "type": "data_list", + "SourceText": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tazama! Popote utakapoanzia, hata uwepo wako hapa unaonesha unajali.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Inafurahisha sana kusikia kuwa mambo yalienda vizuri! Sheria thabiti husaidia kuwafanya vijana wetu kujisikia salama, na kuwaweka salama!", - "type": "data_list", - "note": "" + "SourceText": "Go to the @global.weekly_workshops", + "text": "Nenda kwenye @global.weekly_workshops", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Tunasikitika kuona kuwa jambo hili limekuwa gumu. Kuweka sheria pamoja kunahitaji mazoezi, lakini kuna faida!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Bonyeza kitufe hiki kwenye skrini ya mwanzo ili kwenda kwenye @global.weekly_workshops

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Great to hear it went well!", - "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri!", - "type": "data_list", - "note": "" + "SourceText": "Go to the @global.weekly_workshop_options", + "text": "Nenda kwenye @global.weekly_workshop_options", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kutafuta pamoja njia za kufanya malipo kutamfanya kijana wako atake kufuata sheria mara nyingi!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Bonyeza kitufe hiki ili kwenda kwenye @global.weekly_workshop_options

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Wakati mwingine tunapaswa kuendelea kujaribu. Tafuta muda ambao wewe na kijana wako mtakuwa mmetulia halafu mjaribu tena kuzungumzia tatizo kwa kutumia hatua nne za kutatua matatizo. Pamoja, mnaweza kufanya makubwa!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your @global.workshop settings.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tumia @global.weekly_workshop_options kubadilisha mipangilio yako ya @global.workshop.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The following strings should not be translated:\n@global.weekly_workshop_options\n@global.workshop" }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuzungumzia hatari na njia za msaada huzuia matatizo na husaidia sana kumweka salama kijana wako.", - "type": "data_list", + "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Unaweza kubadilisha jina lako hapa.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Tunasikitika kuona kuwa mambo yalikuwia magumu. Kuonyesha maeneo ya hatari na ya kupata msaada kunaweza kuleta changamoto na hisia kali. Kufanya hivyo kunasaidia sana kumweka salama kijana wako!", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Hii inaonesha siku ya wiki ambayo @global.weekly_workshop mpya itakuwa tayari kwa ajili yako.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ukitaka kuibadilisha, bonyeza tu kitufe.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Tunasikitika kuona kuwa mambo hayakwenda vizuri sana. Si rahisi kufanya hivyo. Jaribu kukaa chini na kulijadili tena na kijana wako. Pia, je, kuna mtu ambaye kijana wako anamwamini anayeweza kuungana na wewe kwenye mazungumzo na kijana wako?", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Hii inaonesha @global.weekly_workshop unayojifunza sasa.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kuweka athari sahihi husaidia vijana kuwa na tabia nzuri zaidi na kufanya maisha ya familia kuwa tulivu zaidi.", - "type": "data_list", - "note": "" + "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Kama unataka kufanya @global.weekly_workshops kama kikundi au peke yako, unaweza kubadilisha hapa.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Tunafurahi sana kusikia kuwa mambo yalienda vizuri! Kijana wako anapojifunza kutatua matatizo, anaweza kutumia ujuzi huo maishani mwake mwote. Zawadi iliyoje!", - "type": "data_list", + "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Bonyeza hapa kubadili jina la kikundi chako.

                                                                                                                                                                                  ", + "type": "tour", "note": "" } ] \ No newline at end of file diff --git a/packages/app-data/translations_source/from_translators/translated.za_af.json b/packages/app-data/translations_source/from_translators/translated.za_af.json index dc9b9d59f7..332a507b8f 100644 --- a/packages/app-data/translations_source/from_translators/translated.za_af.json +++ b/packages/app-data/translations_source/from_translators/translated.za_af.json @@ -1,745 +1,733 @@ [ { - "SourceText": "Home Practice", - "text": "Tuisoefening", + "SourceText": "When everything feels like it is falling apart", + "text": "Wanneer dit voel asof alles uitmekaar val", "type": "template", "note": "" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Klein aksies, groot resultate! Ouers wat hulle werksessievaardighede tuis oefen, kry beter resultate.", + "SourceText": "And you can't help but raise your voice", + "text": "En jy kan nie help om te skree nie", "type": "template", "note": "" }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Volgende week sal jy met jou groep deel hoe dit met jou tuisoefening gegaan het. Julle kan mekaar ook gedurende die week ondersteun en daaraan herinner.", + "SourceText": "When all the frustrations are beginning to start", + "text": "Wanneer al die frustrasies begin opbou", "type": "template", "note": "" }, { - "SourceText": "How did it go?", - "text": "Hoe het dit gegaan?", + "SourceText": "Remember that you have a choice", + "text": "Onthou dat jy 'n keuse het", "type": "template", "note": "" }, { - "SourceText": "talk to their teens about how they feel", - "text": "praat met hulle tieners oor hoe hulle voel", + "SourceText": "Remember all we have to be grateful for", + "text": "Onthou alles waarvoor ons dankbaar moet wees", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "praat met jou tiener oor hoe jy voel", + "SourceText": "Let's slow down", + "text": "Kom ons vat dit bietjie stadiger", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "Het jy enige uitdagings ondervind toe jy probeer @local.hp_description_second_singular het?", + "SourceText": "Take a few deep breaths", + "text": "Haal 'n paar keer diep asem", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Wat was vir jou moeilik toe jy probeer @local.hp_description_second_singular het?", + "SourceText": "Because I really couldn't love you more", + "text": "Want ek kan regtig nie liewer vir jou wees nie", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "Sorry we missed this!", - "text": "Jammer dat ons dit gemis het!", + "SourceText": "You can take pause, you can count to 10", + "text": "Jy kan 'n blaaskans neem, jy kan tot 10 tel", "type": "template", "note": "" }, { - "SourceText": "Do you want to share it with us?", - "text": "Wil jy dit met ons deel?", + "SourceText": "Play a game or do something fun", + "text": "Speel 'n speletjie of doen iets lekkers", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Dankie dat jy jou uitdaging deel! Ons sal hierdie terugvoer gebruik om@global.parent_app beter te maak.", + "SourceText": "You can phone a friend, someone to confide in", + "text": "Jy kan 'n vriend(in) bel, iemand wat jy in jou vertroue kan neem", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Jammer om te hoor dat die wenke jou nie gehelp het nie.", + "SourceText": "Remember you're not the only one", + "text": "Onthou dat jy nie die enigste een is nie", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "Wil jy met ons deel wat jy dink jou sou help?", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Vra vir mekaar: “Wat het jou vandag gelukkig gemaak?”\n* Vra vir mekaar: “Met watter probleme het jy vandag te doen gehad?”\n* Vra vir mekaar: “Hoe kan ek jou help?”\n* Probeer dit elke dag saam doen; julle kan dit doen wanneer julle saam aandete eet of voor julle gaan slaap.", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Dankie dat jy dit deel! Jy is ’n wonderlike ouer omdat jy probeer om tyd met jou tiener deur te bring. Dit maak ’n groot verskil. Doen so voort en onthou, ek is altyd hier om te help!", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "* Vra jou tiener watter ete hy/sy wil eet.\n* Berei dit saam voor!\n* Gee jou tiener ’n beurt om die hoofkok te wees – hy/sy neem die leiding en jy volg sy/haar instruksies.\n* Jy kan hulle selfs help om ’n begroting vir die bestanddele op te stel!\n\nDink jy dat dit nie sal werk nie? Vra jou tieners wat hulle wil hê dat jy en hulle saam moet doen. Laat hulle die leiding neem. Ontspan. Geniet dit.", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Hier is die vaardighede wat ons hierdie week geleer het!\n\nGebruik dit tuis en kry dit enige tyd in jou @global.parent_centre.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "* Skud julle linkerhande 8 keer in die lug terwyl julle tot 8 tel.\n* Doen dit so vinnig en hard as wat julle kan.\n* Herhaal met julle ander hande. Herhaal met albei voete.\n* Doen dit 7 keer, dan 6 keer en gaan voort totdat julle by 1 kom.\n* Almal roep dan “Crazy chicken” uit en doen hul beste mal hoenderdans!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Ontspan saam", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Maak ’n stel danspassies vir jou tiener se gunstelingliedjies.\n* Een persoon doen ’n danspassie en almal aap dit na.\n* Almal maak beurte om die leier te wees.\n* Voer dit vir die huismense op!", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Ontspan", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Hierdie speletjie is die beste as meer as 2 mense speel.\n* Een persoon maak asof hulle iets doen – byvoorbeeld hare kam of aandete maak.\n* ’n Ander persoon vra: “Wat doen jy?”\n* Die eerste persoon moet iets sê wat niks met hare kam te doen het nie, byvoorbeeld: “Maak my veters vas.”\n* Die tweede persoon begin dan maak asof hy sy veters vasmaak totdat ’n nuwe persoon vra: “Wat doen jy?”\n\nDie antwoord moet altyd iets anders wees as wat jy eintlik doen!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "Kom ons doen ’n kort ontspanningsaktiwiteit saam – dit neem minder as 1 minuut en jy sal meer ontspanne voel.", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Jy kan nie altyd reis nie, maar jy kan altyd droom! Vra jou tiener hierdie vrae:\n* Waarheen sou jy wou reis? Hoe lank sou jy weg wees? Wat sou jy inpak? Wat sou jy op jou reis doen? Wat sou jy sien?\n* Kyk saam na ’n kaart of teken een.\n* Kies ’n land waarvan jou tiener nog nooit gehoor het nie en leer meer oor die land.", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Voeg hierdie aktiwiteit by @global.my_relaxes", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Kies ’n sport of oefening om saam te doen. Besluit op ’n skedule. Gaan julle dit elke dag doen? Vir hoe lank?\n\nProbeer dit vir ’n week. Vra jouself en jou gesin aan die einde van die week die volgende vrae:\n* Hoe gaan dit?\n* Hoe het jy aan die begin van die week gevoel?\n* Hoe voel jy aan die einde van die week?\n* Wat kan ons volgende week anders doen?", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "Listen and relax", - "text": "Luister en ontspan", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Jy en jou tiener kan ’n gastelys beplan van die beroemde mense wat jy die graagste na julle partytjie wil nooi. Elkeen kan vyf mense hê – hulle kan uit die verlede of uit die huidige tyd wees. Wie sou jy nooi? En sal julle gaste goed met mekaar oor die weg kom?", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Lees en ontspan", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Gesels met jou tiener oor iets waarvan hulle hou.\n\nDit kan oor enigiets wees waaroor hulle wil praat: sport, vriende, musiek, bekendes ...\n\nProbeer om na jou tiener te luister en gee hulle ruimte om te praat.", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Dink saam aan drie soorte oefeninge. Byvoorbeeld, stap, draf, sokker speel of dans.\n* Kies een saam en probeer dit.\n* As julle albei daarvan hou, besluit hoe gereeld julle dit gaan doen. Een of twee keer per week? Elke oggend?\n* Dink saam aan maniere om dit nog prettiger te maak. Kan julle tot by ’n sekere punt draf? Beurte maak om die afrigter te wees? Mekaar motiveer met ’n klein gratis beloning?", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "Welkom, @fields.user_name", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Maak beurte om die “leier” te wees. Sê die inleidingsinne om almal te aktiveer. Dan gee die “leier” ’n opdrag en almal doen die aktiwiteit so vinnig as moontlik:\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: \"Raak aan iets wat 'n rooi kleur het.\"\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!” \n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Spring tien keer op en af.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Sit die skoene op die skoenrak.”", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again!", - "text": "Dis wonderlik om jou weer te sien!", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Kies ’n storieverteller om ’n storie op te maak.\n* Storieluisteraars kan enige tyd onderbreek met ’n woord.\n* Storieverteller moet daardie woord in hul storie insluit.\n* Wanneer die storie klaar is, probeer dit dan met ’n ander storieverteller!", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "Kom ons kyk hoe hierdie week was.", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Begin die storie met “Eendag was daar...”\n* Laat jou tiener die volgende sin opmaak.\n* Dan maak jy ’n sin op.\n* Maak beurte totdat julle ’n wonderlike nuwe storie het.\n* Maak seker dat julle die storie op ’n positiewe noot afsluit.\n* Vra jou tiener wat sy/haar gunsteling deel van die storie was!", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Hierdie week het jy...", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Die eerste persoon sê: “Saterdag gaan ek... (bv. na die park)”\n* Tweede persoon voeg by tot die eerste persoon: “Saterdag gaan ek na die park en...” (bv. by my beste vriend kuier).\n* Elke persoon voeg by tot die vorige en probeer dink aan al die prettige dinge om Saterdag te doen.", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "Jy wys regtig hoe toegewyd jy is om ’n ouer te wees en om vir jouself te sorg.\n\nJy is fantasties.", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Hierdie speletjie kan in pare of met baie mense in ’n groep gespeel word.\n* Staan teenoor mekaar of in ’n kring.\n* Een persoon lei eerste en almal maak hulle na en probeer presies op dieselfde tyd as die leier beweeg.\n* Maak seker dat die leier stadig genoeg beweeg sodat almal kan volg! Probeer om verskillende liggaamsdele en op verskillende vlakke te beweeg.\n* Verander na ’n rukkie van leier. Gee almal ’n kans om te lei.\n* Probeer dit sonder leiers!", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "Kyk saam", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Die eerste persoon kan ’n liedjie kies of sing.\n* Almal moet die naam van die deuntjie raai (om dit moeiliker te maak, kan hulle raai wie die sanger is).\n* Die eerste een wat dit reg raai, word die volgende leier.", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video together!", - "text": "Kom ons kyk saam na ’n video!", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Hierdie speletjie is die beste met ten minste 3 mense.\n* Begin in ’n kring en gee een “klap” met die vingers in die kring om (of klap hande as jy nie jou vingers kan klap nie).\n* Jy “klap” een keer om die “klap” te gooi, en een keer om dit te vang. Kyk na die persoon na wie jy dit gooi.\n* Die rigting (op, af, reguit, geboë, oor die grond) en krag (hard, sag, gemiddeld) waarmee jy die klap gooi, moet ’n invloed hê op hoe die persoon dit vang.\n* Jy kan die “klap” laat hop, dit in die lug gooi en dit ’n paar keer vang voordat jy dit aanstuur.\n* As almal daarmee vaardig raak, kan julle in die kamer begin rondbeweeg en steeds die “klap” aanstuur.\n* Kan jy onder die been deur gooi? Agter die rug om? Deur jou kop? ’n Aangee onderskep? Geniet dit om te “klap”!", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Kyk", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Neem aan die end van die dag ’n minuut om:\n\n* Met jou tiener te praat oor iets lekkers wat hulle gedoen het.\n* Jouself te prys vir een ding wat jy vandag goed gedoen het.\n* Jy’s ’n ster!", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "Kom ons kyk na ’n video!", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Dink aan ’n superkrag. Byvoorbeeld, om dadelik na enige plek te kan gaan, in tyd te reis, gedagtes te lees.\n* Vra jou tiener: “As jy die superkrag gehad het om [...] te gebruik, hoe sou jy dit gebruik?”\n* Moedig hulle aan om hul superheld ’n naam te gee en dit uit te voer.\n* Laat jou tiener nou toe om ’n superkrag vir jou te kies.\n* Maak seker dat jy ook jou superkrag uitvoer!", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Dis wonderlik om jou weer te sien! Kom ons begin met ’n liedjie vir gesinne van oraloor.", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Dink aan drie verskillende situasies. Byvoorbeeld, om ’n motor te bestuur, ’n boot te laat seil of ’n vliegtuig te laat vlieg.\n* Noem dit vir jou tiener en vra: “Watter een sou jy verkies?”\n* Vra hulle hoekom?\n* Dink nou aan nog drie situasies of vra jou tiener om dit vir jou te doen.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "Kom ons gaan ’n bietjie stadiger", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Vertel jou tiener iets van jouself toe jy ’n tiener was. Watter dinge het toe nog nie bestaan nie? Fone met internet? Wat het jy vir die pret gedoen? Waaroor was jy bekommerd? Moenie bekommerd wees as hulle jou niks terugvertel nie – wat belangrik is, is dat hulle luister en onthou. Soms vergeet ons tieners dat hul ouers ook mense is!", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "Jy het hierdie week se werksessie voltooi.", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Dink aan drie stellings oor jouself. Twee moet waar wees en een moet ’n leuen wees.\n* Dit kan help om te dink aan wense, drome, ervarings op skool, dinge waarvan jy hou of nie hou nie. Byvoorbeeld: ek haat piesangs, my gunstelingvak is wetenskap en ek wens regtig ek kon sing.\n* Sê dit vir jou tiener en vra hulle om te raai watter een ’n leuen is.\n* Het hulle reg geraai? Was dit ’n verrassing?\n* Vra hulle nou om dieselfde te doen. Het julle iets nuuts omtrent mekaar geleer?", "type": "template", "note": "" }, { - "SourceText": "See you soon.", - "text": "Sien jou binnekort.", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Dink aan ’n nuwe vaardigheid wat jy saam met jou tiener kan aanleer. Byvoorbeeld, om ’n bal in die lug of op jou voet te hou, te leer goëlbal speel, sop te maak?\n* Maak beurte om die nuwe vaardigheid te probeer.\n* Maak seker julle prys mekaar, en probeer saam leer en speel!", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Gesels saam", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Vra mekaar vrae. Dit kan vrae wees oor dinge waarvan julle hou of wat julle vandag gedoen het.\n* Die enigste reël is dat julle nie “Ja”, “Nee” of “Miskien” kan antwoord nie.\n* Hoe lank kan julle aanhou? Hoe kreatief kan julle wees met julle antwoorde?\n* Ruil om en speel weer!", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Deel idees, ondersteun mekaar!", + "SourceText": "Home", + "text": "Tuis", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "Probeer dit saam", + "SourceText": "Settings", + "text": "Instellings", "type": "template", "note": "" }, { - "SourceText": "Let's practice together.", - "text": "Kom ons oefen saam.", + "SourceText": "Template", + "text": "Sjabloon", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Tuisoefening is hoe ons ons gesinslewe beter kan maak. Maar dit gaan dikwels met uitdagings gepaard.\n\nKom ons deel ons suksesse en probleme, en help mekaar om nuwe idees te vind om uit te probeer!", + "SourceText": "How to use @global.parent_app", + "text": "Hoe om @global.parent_app te gebruik", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Dink aan hoe jou tuisaktiwiteite hierdie week gegaan het.\n\nMaak beurte om die volgende te bespreek:\n* Wat het goed gegaan en wat was ’n probleem?\n* Aan watter oplossings kan julle saam dink?\n* Kies een oplossing en probeer dit later saam met jou tiener!\n\n(Of jy kan dit selfs nou oefen sodat dit later makliker sal wees!)", + "SourceText": "In-Week Messages", + "text": "In-Week Boodskappe", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Besprekingvoorbeeld uit@data.workshop.w_1on1.title", + "SourceText": "Campaigns", + "text": "Veldtogte", "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." + "note": "" }, { - "SourceText": "Start Positively Together", - "text": "Begin positief saam", + "SourceText": "Notifications", + "text": "Kennisgewings", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "Welkom, @fields.group_name", + "SourceText": "You have successfully entered developer mode.", + "text": "Jy het suksesvol in ontwikkelaarmodus gekom.", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Dis wonderlik om jou weer te sien!\n\nKom ons begin met omgee vir jou.", + "SourceText": "You have entered an incorrect code.", + "text": "Jy het ’n verkeerde kode ingevoer.", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Maak beurte:\n* Deel: Hoe voel jy vandag?\n* Prys iemand in jou groep vir iets wat hulle hierdie week goed gedoen het!\n\nOnthou dat ongeag hoe jy voel, dit is wonderlik dat jy hier is. Julle verdien almal om geprys te word.", + "SourceText": "About @global.parent_app", + "text": "Oor @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Ideas from other families:", - "text": "Idees van ander gesinne:", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_app is ontwikkel deur Parenting for Lifelong Health (PLH) – 'n wêreldwye samewerking tussen ouerskapkundiges van UNICEF, die Wêreldgesondheidsorganisasie en universiteite in Suid-Afrika en Engeland, sowel as NPO's in Afrika en gesinne en tieners regoor Afrika. Ouers en tieners het saam met ons aan die toepassing gewerk en gehelp om te verseker dat dit maklik om te gebruik, pret en boeiend is. Sommige van die inhoud in hierdie toepassing, soos voorstelle van aktiwiteite en geïllustreerde stories, is saam met ouers en tieners geskep om seker te maak dit pas by gesinne se behoeftes.\n\nParenting for Lifelong Health (PLH) is toegewy om gratis en deelbare ouerskapmateriale en -programme te ondersteun, om ouers wêreldwyd te ondersteun om die welstand van hul kinders te bevorder.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Question Time", - "text": "Vraetyd", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Deur op die onderstaande knoppie te klik, stel jy die toep terug na die oorspronklike instellings.\n\nDit beteken dat al jou vordering- en gebruiksdata uitgevee sal word en dat jou toep sal werk asof dit pas vir die eerste keer geïnstalleer is.\n\nLET WEL: Die terugstelling van die app is permanent en jy sal geen inligting kan herstel nie.", "type": "template", "note": "" }, { - "SourceText": "It's time for some questions!", - "text": "Dis tyd vir ’n paar vrae!", + "SourceText": "Open Survey", + "text": "Maak Studie Oop", "type": "template", "note": "" }, { - "SourceText": "Listen Together", - "text": "Luister saam", + "SourceText": "Select Language", + "text": "Kies Taal", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio together!", - "text": "Kom ons luister saam na ’n klankopname!", + "SourceText": "Workshop Options", + "text": "Slypskool-opsies", "type": "template", "note": "" }, { - "SourceText": "Listen", - "text": "Luister", + "SourceText": "Reset App", + "text": "Stel Toep terug", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "Kom ons luister na ’n klankopname!", + "SourceText": "Demo Presentation", + "text": "Demo-aanbieding", "type": "template", "note": "" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Hoekom @local.workshop_data.title?", + "SourceText": "Organisation Registration", + "text": "Registrasie van organisasie", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "" }, { - "SourceText": "Hear Sbo's message", - "text": "Hoor Sbo se boodskap", + "SourceText": "Developer Mode", + "text": "Ontwikkelaarmodus", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Lees Sbo se boodskap", + "SourceText": "Unlock all workshops", + "text": "Ontsluit alle slypskole", "type": "template", "note": "" }, { - "SourceText": "Today's steps", - "text": "Vandag se stappe", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Deur op die onderstaande knoppie te klik, sal jy al die slypskole ontsluit.\n\nLET WEL: Gebruikers moenie hierdie funksie gebruik om slypskole te ontsluit nie; dit word nie aanbeveel nie, tensy dit streng noodsaaklik is.", "type": "template", "note": "" }, { - "SourceText": "Read Together", - "text": "Lees saam", + "SourceText": "Unlock workshops", + "text": "Ontsluit Slypskole", "type": "template", "note": "" }, { - "SourceText": "Let's read a story together!", - "text": "Kom ons lees ’n storie saam!", + "SourceText": "All workshops are now unlocked.", + "text": "Alle slypskole is nou ontsluit.", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "Kom ons lees ’n storie!", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Die verlies van 'n geliefde kan baie oorweldigend voel. Hier is 'n paar praktiese wenke wat van hulp kan wees om in gedagte te hou.", "type": "template", "note": "" }, { - "SourceText": "Think Together", - "text": "Dink saam", + "SourceText": "Ask for help", + "text": "Vra vir hulp", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Dis tyd om saam te dink!", + "SourceText": "Say goodbye", + "text": "Sê totsiens", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Dink", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "- Vra iemand op wie jy staat kan maak om jou te help - kos of kindersorg kan van waarde wees. Jy mag dalk dokumente vir erflatings, vir jou kinders of vir toegang tot dienste benodig. \nSoms probeer mense om geld of erfporsies van ‘n persoon in rou af te rokkel. Vind uit wat jou regte is.", "type": "template", "note": "" }, { - "SourceText": "It's time to think!", - "text": "Dis tyd om te dink!", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "-Om afskeid te neem is moeilik. Doen wat vir jou en jou tiener oukei voel.\n-Families, tieners en ouers is nie perfek nie. Wanneer iemand sterf, is dit oukei om te praat oor ons goeie en slegte herinneringe.\n-Dit kan help om 'n brief te skryf of iets te teken vir die oorlede persoon. \n-Sommige mense hou 'n seremonie of 'n spesiale ete om die oorledene te vier, en afskeid te neem.\n-Dit kan help om 'n houer van herinneringe te maak, om dinge in te hou wat jou en jou tiener aan die persoon herinner.\n-Dit kan help om selfs net oor die persoon te praat wanneer jy aan hulle dink.", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Leer saam", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Om 'n vriend of geliefde te verloor is vir almal moeilik. Om goed te wees vir jouself en om dinge te doen wat jou help om hierdie moeilike tyd die hoof te bied help jou tiener ook!", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice together!", - "text": "Dis tyd om saam te leer en te oefen!", + "SourceText": "Take care of yourself", + "text": "Sorg goed vir jouself", "type": "template", "note": "" }, { - "SourceText": "Learn", - "text": "Leer", - "type": "template", - "note": "" - }, - { - "SourceText": "It's time to learn and practice!", - "text": "Dis tyd om te leer en te oefen!", + "SourceText": "Find a support group", + "text": "Vind 'n ondersteuningsgroep", "type": "template", "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Pas @global.parent_app aan", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Give me quick parenting tips", - "text": "Gee my vinnige wenke vir ouerskap", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "-Hartseer kan ons vir weke, maande of jare lank affekteer. Jy hoef nie vinnig beter te voel nie.\n-Slaap en eet genoeg - dit is moeilik om na tieners om te sien as jy moeg en honger is.\n-Maak 'n lys van dinge wat jou beter laat voel, en doen hulle.\n-Probeer om een eenvoudige ding elke dag te doen om saam met jou tiener te ontspan, asook vir jouself.\n-Dis oukei om nie goed te voel nie en dis oukei om te huil. Moet jouself nooit blameer nie, hierdie is nie jou skuld nie.\n-Daar is altyd hoop selfs na verlies. Probeer eenvoudige dinge geniet, en vind 'n minuut of wat om iets prettig of ontspannend met jou tiener te doen.\n-Vind een of twee volwassenes wat jou kan ondersteun, na jou luister en met jou gesels.", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Iets baie sleg het gebeur", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "-Om met iemand wat jou ondersteun te kan praat en na jou te luister kan help.\n-Dit kan ook help om aan te sluit by 'n groep mense wat self iemand verloor het.\n-Niemand is perfek nie. Dis oukei om oor goeie en slegte herinneringe te praat.", "type": "template", "note": "" }, { - "SourceText": "I have technical problems with the app", - "text": "Ek ervaar tegniese probleme met die toep", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Tieners hanteer verlies op verskillende maniere, net soos volwassenes. Jy kan hulle help om die situasie en hul gevoelens te verstaan deur veilige ruimtes te skep waar julle albei dit kan deel en verwerk.", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "Jy sal hier wenke kry wat ons dink jy nuttig kan vind, gebaseer op jou antwoorde op die toep-aanpassing.", + "SourceText": "Be honest", + "text": "Wees eerlik", "type": "template", "note": "" }, { - "SourceText": "WHO Website", - "text": "WGO-webwerf", + "SourceText": "My teen's response", + "text": "My tiener se reaksie", "type": "template", "note": "" }, { - "SourceText": "UNICEF Website", - "text": "UNICEF-webwerf", + "SourceText": "How to support my teen?", + "text": "Hoe kan ek my tiener ondersteun?", "type": "template", "note": "" }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Ouerskap tydens COVID is moeilik. Wees trots op jouself dat jy so ver gekom het.\n\nOns werk hier aan nuwe inhoud om jou te ondersteun sodat jy met jou tieners en kinders oor COVID kan praat.\n\nDie nuutste inligting oor COVID-19 kan op die WGO- en UNICEF-webwerwe gevind word:", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "-Vertel jou tiener dat die persoon oorlede is - soms besef hulle dit nie.\n-Vertelling is 'n proses, nie 'n gebeurtenis nie. Jy mag vind dat dit nodig is om hulle oor en oor te vertel.\n-Gebruik woorde wat hulle verstaan.\n-As jonger tieners nie begryp wat dood is nie, help deur te verduidelik dat die geliefde persoon nie gaan terugkom nie. Probeer om 'slaap' of 'n 'lang reis' as beskrywing daarvan te vermy.\n-Ouer tieners mag wel 'n beter begrip van dood toon, maar hulle mag sukkel om hulle emosies te deel of te verwerk.\n-Tieners kan op verskeie maniere reageer: huil, skree, ongeloof uitspreek of in stilte onttrek. Al hierdie reaksies is oukei. Vertel hulle dat jy dáár is met hulle.\n-Laat vrae en openlike gesprekke toe. Wees eerlik. Dis oukei om te erken ons weet nie.", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike WGO–webwerf.", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "-Tieners mag hartseer, woede, onbegrip of ongeloof toon, 'n verlammende gevoel ervaar, sleg voel of pyn, nagmerries of probleme by die skool ondervind. Jou tiener mag gelukkig voorkom, maar steeds hartseer wees. Hulle mag hulself afsluit en meer tyd saam met vriende wil deurbring. Hulle mag ook onverwagte of gevaarlike gedrag openbaar. Dit mag dalk nie vir jou sin maak nie, maar tog is dit alles normaal.\n-Tieners mag voel dat dit hulle skuld is - dat hulle die virus oorgedra het, of dat hulle hul swak gedra het. Vertel hulle duidelik dat hulle niks verkeerd gedoen het nie.", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "Die URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "-Verduidelik dat hartseer met baie emosies en reaksies gepaard gaan. Wys vir jou tiener dat hulle geliefd en versorg is, en moedig hulle aan om hul emosies te deel deur daaroor te praat, skryf of teken.\n-Indien daar 'n ondersteuningsgroep is waarvan jou tiener kan deel word, kan dit help.\n-As 'n tiener praat van hulself beseer of om die lewe bring, vra vir hulp by iemand so vinnig as wat jy moontlik kan.\n-Indien moontlik, hou by jou normale daaglikse roetines, dit kan vir 'n tiener vertroostend wees.\n-Dit kan help vir tieners om deel te neem aan rituele rondom die dood - om 'n lied te kies of om iets te sê.\n-Deur elke dag 'n paar minute op jou tiener te fokus help om hulle veiliger te laat voel en gee hulle 'n kans om te ontspan of te praat oor dinge wat hulle ontstel.", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike UNICEF-webwerf.", + "SourceText": "How did it go?", + "text": "Hoe het dit gegaan?", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "Die URL is https://www.unicef.org/coronavirus/covid-19", + "SourceText": "Reply", + "text": "Antwoord", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Dateer my ouerskap-ervarings op", + "SourceText": "Timer", + "text": "Tydhouer", "type": "template", "note": "" }, { - "SourceText": "Update my personal details", - "text": "Dateer my persoonlike besonderhede op", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Druk die driehoek om jou te help om hierdie gesprek by @local.timer_duration minute te hou.", "type": "template", - "note": "" + "note": "The string @local.timer_duration should not be translated." }, { - "SourceText": "Update my workshop options", - "text": "Dateer my werksessie opsies op", + "SourceText": "Video", + "text": "Video", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "Ervaar jy enige tegniese probleme? Laat weet ons en help om @global.parent_app te verbeter!", + "SourceText": "You selected less than @local.threshold", + "text": "Jy het minder as @local.threshold gekies", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.threshold should not be translated." }, { - "SourceText": "Type your name (optional)", - "text": "Tik jou naam in (opsioneel)", + "SourceText": "Start Positively Together", + "text": "Begin positief saam", "type": "template", "note": "" }, { - "SourceText": "Type your phone number", - "text": "Tik jou foonnommer in", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Dis wonderlik om jou weer te sien!\n\nKom ons begin met omgee vir jou.", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Kontak my per e-pos", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Maak beurte:\n* Deel: Hoe voel jy vandag?\n* Prys iemand in jou groep vir iets wat hulle hierdie week goed gedoen het!\n\nOnthou dat ongeag hoe jy voel, dit is wonderlik dat jy hier is. Julle verdien almal om geprys te word.", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Tik jou e-posadres in", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Ons het almal soms negatiewe gedagtes.", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Vertel ons van jou probleem", + "SourceText": "\"I am a failure\"", + "text": "\"Ek is 'n mislukking\"", "type": "template", "note": "" }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Die eerste keer dat my ma my gevra het of ek tyd saam met haar wou deurbring, het ek vir haar gesê om my uit te los, want ek was in die middel van ’n speletjie. Tog het sy soos altyd aangedring. Ek het gesê sy kan kyk hoe ek speel indien sy wil. Na ’n paar minute het sy my vrae begin vra oor die speletjie. Aanvanklik was dit irriterend, maar na ’n rukkie was ek bly dat sy uiteindelik belangstelling getoon het in wat ek doen. Sy het selfs probeer speel!", + "SourceText": "What to do?", + "text": "Wat om te doen?", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "My pa het vir my gesê ek speel te veel basketbal na skool en ons moet ’n gesinsreël instel. Hy het belowe dat ons saam sal dink aan ’n oplossing, sodat ons albei goed sal voel daaroor. Ek het nie geglo dat dit moontlik sou wees nie, maar ek het gesê: “Goed, laat ons probeer”. Ons het onderhandel en saamgestem dat die reël sal wees dat ek ná huiswerk basketbal mag speel, tot aandete. Dit is vir my moeilik om my vriende na skool te sien speel, daarom doen ek my bes om my huiswerk eers klaar te maak en dan by hulle aan te sluit. Nou het ek ook die hele aand om ander dinge na aandete te doen, soos om na basketbal in die NBA te kyk.", + "SourceText": "Examples", + "text": "Voorbeelde", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "Jy kan die in-week-boodskappe van die vorige slypskole hier vind.", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Om vir jouself of jou tiener te sê om op te hou of om die positiewe teenoorgestelde te stel help dikwels nie.", "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Begin", + "SourceText": "\"I do everything perfectly\"", + "text": "\"Ek doen alles perfek\"", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "Hoe sou jy hierdie werksessie wou doen?", + "SourceText": "Instead, you can ask:", + "text": "In plaas daarvan, kan jy vra:", "type": "template", "note": "" }, { - "SourceText": "Coming soon", - "text": "Binnekort beskikbaar", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "-Is die gedagte realisties? Watter ander verduidelikings is daar?\n-Wat sal gebeur as ek voortgaan om hierdie gedagte te glo?\n-Wat sal ek vir 'n vriend sê as hy/sy hierdie gedagte sou hê?", "type": "template", "note": "" }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Ons sal ander ouerskapkwessies moet behandel voordat ons kan begin werk aan @local.workshop_data.title.\n\nJy kan die belangrikste hulpmiddels kry by @local.workshop_data.title via die @global.parent_centre.", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "\"Hierdie is moeilik, maar jy probeer jou bes, en ons sal saam werk om 'n oplossing te vind\"", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "note": "" }, { - "SourceText": "My name", - "text": "My naam", + "SourceText": "\"It’s your fault\"", + "text": "\"Dis jou skuld\"", "type": "template", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "@global.weekly_workshop dag", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"Laat ons saam met 'n oplossing vorendag kom\"", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "I do the workshops...", - "text": "Ek doen die slypskole...", + "SourceText": "\"I lost my job\"", + "text": "\"Ek het my werk verloor\"", "type": "template", "note": "" }, { - "SourceText": "My group's name", - "text": "My groep se naam", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Ek het baie in my werk geleer - dit sal my help om 'n ander een te vind\"", "type": "template", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "My groep doen nou die slypskool...", + "SourceText": "\"Nobody likes me\"", + "text": "\"Niemand hou van my nie\"", "type": "template", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Ek doen nou die slypskool...", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "\"Verlede week het ek 'n heerlike tyd gehad saam met...\"", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "Is jy seker jy wil al die werksessies ontsluit? As jy dit eers gedoen het, sal jy dit nie weer kan sluit nie", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Slegte dinge gebeur altyd met my\"", "type": "template", "note": "" }, { - "SourceText": "You can always find these tools in the @global.parent_centre", - "text": "Jy kan altyd hierdie hulpmiddels in die @global.parent_centre kry", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Hierdie goeie ding het nou die dag gebeur...\"", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Voeg hierdie aktiwiteit by @global.my_activities", + "SourceText": "Change", + "text": "Verandering", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Ontspanningsaktiwiteite", + "SourceText": "You’ve completed this week’s workshop.", + "text": "Jy het hierdie week se werksessie voltooi.", "type": "template", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Iets prettig om saam met jou tiener te doen", + "SourceText": "Read along", + "text": "Lees aan", "type": "template", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Jy het nog geen ontspanningsaktiwiteite by @global.my_relaxes gevoeg nie. Waarom kies jy nie ’n paar nie?", + "SourceText": "See you soon.", + "text": "Sien jou binnekort.", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Jy het nog geen aktiwiteite by @global.my_activities gevoeg nie. Waarom kies jy nie ’n paar nie?", + "SourceText": "You can always find these tools in the @global.parent_centre", + "text": "Jy kan altyd hierdie hulpmiddels in die @global.parent_centre kry", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Open Survey", - "text": "Maak Studie Oop", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Volgende week sal jy met jou groep deel hoe dit met jou tuisoefening gegaan het. Julle kan mekaar ook gedurende die week ondersteun en daaraan herinner.", "type": "template", "note": "" }, { - "SourceText": "Select Language", - "text": "Kies Taal", + "SourceText": "Home Practice", + "text": "Tuisoefening", "type": "template", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Slypskool-opsies", + "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "text": "Klein aksies, groot resultate! Ouers wat hulle werksessievaardighede tuis oefen, kry beter resultate.", "type": "template", "note": "" }, { - "SourceText": "Unlock Workshops", - "text": "Ontsluit werksessies", + "SourceText": "Hear a teen's testimonial", + "text": "Luister na 'n tiener se getuigskrif", "type": "template", "note": "" }, { - "SourceText": "Demo Presentation", - "text": "Demo-aanbieding", + "SourceText": "Read a teen's testimonial", + "text": "Lees 'n tiener se getuigskrif", "type": "template", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Registrasie van organisasie", + "SourceText": "talk to their teens about how they feel", + "text": "praat met hulle tieners oor hoe hulle voel", "type": "template", "note": "" }, { - "SourceText": "Developer Mode", - "text": "Ontwikkelaarmodus", + "SourceText": "talk to your teen about how you feel", + "text": "praat met jou tiener oor hoe jy voel", "type": "template", "note": "" }, { - "SourceText": "Unlock all workshops", - "text": "Ontsluit alle slypskole", + "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "text": "Het jy enige uitdagings ondervind toe jy probeer @local.hp_description_second_singular het?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Deur op die onderstaande knoppie te klik, sal jy al die slypskole ontsluit.\n\nLET WEL: Gebruikers moenie hierdie funksie gebruik om slypskole te ontsluit nie; dit word nie aanbeveel nie, tensy dit streng noodsaaklik is.", + "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", + "text": "Wat was vir jou moeilik toe jy probeer @local.hp_description_second_singular het?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "Unlock workshops", - "text": "Ontsluit Slypskole", + "SourceText": "Sorry we missed this!", + "text": "Jammer dat ons dit gemis het!", "type": "template", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Alle slypskole is nou ontsluit.", + "SourceText": "Do you want to share it with us?", + "text": "Wil jy dit met ons deel?", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Deur op die onderstaande knoppie te klik, stel jy die toep terug na die oorspronklike instellings.\n\nDit beteken dat al jou vordering- en gebruiksdata uitgevee sal word en dat jou toep sal werk asof dit pas vir die eerste keer geïnstalleer is.\n\nLET WEL: Die terugstelling van die app is permanent en jy sal geen inligting kan herstel nie.", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Dankie dat jy jou uitdaging deel! Ons sal hierdie terugvoer gebruik om@global.parent_app beter te maak.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Reset App", - "text": "Stel Toep terug", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Jammer om te hoor dat die wenke jou nie gehelp het nie.", "type": "template", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "Jy het suksesvol in ontwikkelaarmodus gekom.", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "Wil jy met ons deel wat jy dink jou sou help?", "type": "template", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "Jy het ’n verkeerde kode ingevoer.", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Dankie dat jy dit deel! Jy is ’n wonderlike ouer omdat jy probeer om tyd met jou tiener deur te bring. Dit maak ’n groot verskil. Doen so voort en onthou, ek is altyd hier om te help!", "type": "template", "note": "" }, @@ -750,8072 +738,8054 @@ "note": "" }, { - "SourceText": "How did you hear about @global.parent_app?", - "text": "Hoe het jy gehoor van @global.parent_app?", + "SourceText": "Learn Together", + "text": "Leer saam", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "I found it myself", - "text": "Ek het dit self ontdek", + "SourceText": "It's time to learn and practice together!", + "text": "Dis tyd om saam te leer en te oefen!", "type": "template", "note": "" }, { - "SourceText": "A friend or family", - "text": "Van ‘n Vriend/Vriendin of Familielid", + "SourceText": "Learn", + "text": "Leer", "type": "template", "note": "" }, { - "SourceText": "Other", - "text": "Ander", + "SourceText": "It's time to learn and practice!", + "text": "Dis tyd om te leer en te oefen!", "type": "template", "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "Jy sal moontlik gevra word om hierdie kode te deel met mense wat jou @global.parent_app-reis sal ondersteun.", + "SourceText": "Listen Together", + "text": "Luister saam", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Last sync at: @local.sync_latest", - "text": "Laas gesinchroniseer om: @local.sync_latest", + "SourceText": "Let's listen to an audio together!", + "text": "Kom ons luister saam na ’n klankopname!", "type": "template", - "note": "The string @local.sync_latest should not be translated." + "note": "" }, { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Hierdie toestel is nog nooit gesinkroniseer nie. Sinkroniseer om jou kode te toon.", + "SourceText": "Listen", + "text": "Luister", "type": "template", "note": "" }, { - "SourceText": "Sync now", - "text": "Sinkroniseer nou", + "SourceText": "Let's listen to an audio!", + "text": "Kom ons luister na ’n klankopname!", "type": "template", "note": "" }, { - "SourceText": "Syncing...", - "text": "Besig om te sinchroniseer...", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Hallo, @fields.user_name! Hierdie week het jy die volgende gedoen:", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "You selected @local.threshold or less", - "text": "Jy het @local.threshold of minder gekies", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Hallo, @fields.user_name! Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nOnthou om op jou @global.parent_points te tik!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "You selected more than @local.threshold", - "text": "Jy het meer as @local.threshold gekies", + "SourceText": "That’s wonderful!", + "text": "Dis wonderlik!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Reply", - "text": "Antwoord", + "SourceText": "Nice work!", + "text": "Mooi so!", "type": "template", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Dae gedurende die afgelope maand", + "SourceText": "Your commitment is not taken for granted.", + "text": "Jou toegewydheid word diep waardeer.", "type": "template", "note": "" }, { - "SourceText": "Days in the past week", - "text": "Dae gedurende die afgelope week", + "SourceText": "Keep up the good work!", + "text": "Hou so aan!", "type": "template", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "Jy het minder as @local.threshold gekies", + "SourceText": "This is lovely!", + "text": "Uitstekend!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Unlock for less than @local.threshold", - "text": "Ontsluit vir minder as @local.threshold", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Klop jouself op die skouer. Jy verdien dit.", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "Jy het @local.threshold of meer gekies", + "SourceText": "Every @global.parent_point counts!", + "text": "Elke @global.parent_point tel!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Video", - "text": "Video", + "SourceText": "Relax now", + "text": "Ontspan nou", "type": "template", "note": "" }, { - "SourceText": "Timer", - "text": "Tydhouer", + "SourceText": "Did you relax already? Tap it!", + "text": "Het jy alreeds ontspan? Tik dit!", "type": "template", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Druk die driehoek om jou te help om hierdie gesprek by @local.timer_duration minute te hou.", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Hier is ’n prettige aktiwiteit om saam met jou tiener te doen!", "type": "template", - "note": "The string @local.timer_duration should not be translated." + "note": "" }, { - "SourceText": "Options", - "text": "Opsies", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Gaan voort met @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Home", - "text": "Tuis", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Begin @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Settings", - "text": "Instellings", + "SourceText": "Finish current workshop", + "text": "Voltooi huidige slypskool", "type": "template", "note": "" }, { - "SourceText": "Template", - "text": "Sjabloon", + "SourceText": "How did you hear about @global.parent_app?", + "text": "Hoe het jy gehoor van @global.parent_app?", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Tour", - "text": "Toer", + "SourceText": "Other", + "text": "Ander", "type": "template", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "In-Week Boodskappe", + "SourceText": "I found it myself", + "text": "Ek het dit self ontdek", "type": "template", "note": "" }, { - "SourceText": "Campaigns", - "text": "Veldtogte", + "SourceText": "A friend or family", + "text": "Van ‘n Vriend/Vriendin of Familielid", "type": "template", "note": "" }, { - "SourceText": "Notifications", - "text": "Kennisgewings", + "SourceText": "Quick Parenting Tips", + "text": "Vinnige wenke vir ouerskap", "type": "template", "note": "" }, { - "SourceText": "About @global.parent_app", - "text": "Oor @global.parent_app", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Dit kan moeilik wees om tieners groot te maak, en ons almal sukkel soms.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_app is ontwikkel deur Parenting for Lifelong Health (PLH) – 'n wêreldwye samewerking tussen ouerskapkundiges van UNICEF, die Wêreldgesondheidsorganisasie en universiteite in Suid-Afrika en Engeland, sowel as NPO's in Afrika en gesinne en tieners regoor Afrika. Ouers en tieners het saam met ons aan die toepassing gewerk en gehelp om te verseker dat dit maklik om te gebruik, pret en boeiend is. Sommige van die inhoud in hierdie toepassing, soos voorstelle van aktiwiteite en geïllustreerde stories, is saam met ouers en tieners geskep om seker te maak dit pas by gesinne se behoeftes.\n\nParenting for Lifelong Health (PLH) is toegewy om gratis en deelbare ouerskapmateriale en -programme te ondersteun, om ouers wêreldwyd te ondersteun om die welstand van hul kinders te bevorder.", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Wat is die grootste uitdaging wat jy tans ondervind?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Finish current workshop", - "text": "Voltooi huidige slypskool", + "SourceText": "My relationship with my teen is not good", + "text": "My verhouding met my tiener is nie goed nie", "type": "template", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Hier is ’n prettige aktiwiteit om saam met jou tiener te doen!", + "SourceText": "My teen’s behaviour is difficult", + "text": "My tiener se gedrag is moeilik", "type": "template", "note": "" }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Begin @local.workshop_data.in_text_title", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ek voel gestres, eensaam, kwaad", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue @local.workshop_data.in_text_title", - "text": "Gaan voort met @local.workshop_data.in_text_title", + "SourceText": "I have money worries", + "text": "Ek het bekommernisse oor geld", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Hallo, @fields.user_name! Hierdie week het jy die volgende gedoen:", + "SourceText": "I worry about my teen’s safety", + "text": "Ek is bekommerd oor my tiener se veiligheid", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Hallo, @fields.user_name! Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nOnthou om op jou @global.parent_points te tik!", + "SourceText": "We often fight in our family", + "text": "Ons baklei gereeld in ons gesin", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "note": "" }, { - "SourceText": "That’s wonderful!", - "text": "Dis wonderlik!", + "SourceText": "I have a different problem…", + "text": "Ek het ’n ander probleem…", "type": "template", "note": "" }, { - "SourceText": "Nice work!", - "text": "Mooi so!", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Om ’n beter verhouding op te bou, begin deur tyd saam deur te bring – selfs 5 minute per dag maak ’n verskil! Aanvanklik kan dit moeilik wees om tyd saam deur te bring, aangesien ons almal besig is en ons tieners soms in ’n slegte bui kan wees. Maar om selfs 5 minute per dag se gefokusde tyd met jou tiener deur te bring, help om vertroue op te bou. Vra jou tiener wat hulle saam sou wil doen. Dit kan ook vir jou lekker en ontspannend wees!", "type": "template", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Jou toegewydheid word diep waardeer.", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "Jy kan hier meer ondersteuning kry oor hoe jy tyd alleen met jou tiener kan deurbring:", "type": "template", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Hou so aan!", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Alle tieners gedra hulle soms net gruwelik! Een ding wat kan help met tienergedrag, is om hulle te prys wanneer hulle iets goeds doen – ongeag hoe klein dit is. Dit lyk miskien nie asof tieners jou lof wil hê of dit soek nie, maar eintlik wil hulle dit baie, baie graag hê.", "type": "template", "note": "" }, { - "SourceText": "This is lovely!", - "text": "Uitstekend!", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "Jy kan hier meer ondersteuning kry oor hoe jy goeie gedrag kan aanmoedig deur te prys:", "type": "template", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Klop jouself op die skouer. Jy verdien dit.", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Ouerskapstres is tans baie hoog. Ons weet presies hoe oorweldigend die lewe kan wees. Om iets vir jouself te doen, kan jou stres verminder. Jy verdien dit! En as jy oorweldig voel, neem weer beheer oor jou liggaam deur vyf keer stadig en diep asem te haal voordat jy reageer. Baie ouers het dit nuttig gevind.", "type": "template", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "Elke @global.parent_point tel!", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "Jy kan hier meer ondersteuning kry oor hoe jy vir jouself kan sorg:", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Relax now", - "text": "Ontspan nou", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Jy is nie alleen nie. Geldstres is so moeilik vir ouers. Probeer om met jou tiener te praat oor hoeveel geld inkom en wat julle as gesin elke maand moet spandeer. Dit kan hulle help om te verstaan waarom jy iets wat hulle graag wil hê, nie kan bekostig nie. En as almal verstaan waarheen die geld gaan, is dit makliker om saam te stem oor waar julle ook saam kan spaar!", "type": "template", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "Het jy alreeds ontspan? Tik dit!", + "SourceText": "You can get more support on how to budget and save here:", + "text": "Jy kan hier meer ondersteuning kry oor hoe om te begroot en te bespaar:", "type": "template", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Om na jouself om te sien, maak saak.", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Tieners spandeer baie tyd buitenshuis of aanlyn, waar dit vir ons moeiliker is om hulle veilig te hou – baie ouers is bekommerd hieroor. Probeer ’n gesprek met jou tiener begin oor veilige en onveilige plekke in jou gemeenskap en aanlyn (jy sal dit miskien ’n paar keer moet probeer). Hulle ken dalk selfs sommige wat jy nie ken nie. Dit kan jou help om saam ’n plan te maak oor hoe om veilig te bly.", "type": "template", "note": "" }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Wonderlik! So bly om te hoor dit gaan goed met jou vandag. Wat ’n wonderlike gevoel!", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "Jy kan hier meer ondersteuning kry oor hoe om jou tiener veilig te hou:", "type": "template", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Soms gaan dinge goed. Soms nie. En soms weet ons nie heeltemal wat om te dink nie... en dit is heeltemal oukei! Onthou, jy is nie alleen nie.", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "As ’n probleem opduik, probeer om saam daaroor te praat. Wat is die probleem presies? Watter verskillende oplossings is daar en wat is die gevolge daarvan? Op hierdie manier kan julle ’n oplossing vind wat vir almal goed kan wees.", "type": "template", "note": "" }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Dit is wonderlik, veral in sulke moeilike tye soos hierdie. Jy is ’n ster.", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "Jy kan hier meer ondersteuning kry oor hoe om probleme saam op te los:", "type": "template", "note": "" }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Ons weet hoe spanningsvol dit deesdae is om tieners groot te maak. Dit help jou – en jou gesin – om te leer hoe om jou stres te hanteer.", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Dit is nie maklik om na ons gesinne om te sien nie. Ons het almal soms uitdagings, maar ons hoop dat hierdie toep jou sal help om dit goed te hanteer.@global.parent_app is gebaseer op tien jaar se ervaring met die bestuur van ouerskapsprogramme in Suid-Afrika, en duisende ouers het gevind dat die wenke wat gedeel word, baie help met baie ouerskapuitdagings. Ons hoop dat hierdie toep jou en jou gesin ook sal help.\n\nHier is ’n paar van die belangrikste bewese wenke vir jou:", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Goeiedag, almal. \n\nVandag se onderwerp is hoe om spanning te hanteer.\n\nDit is belangrik om te weet hoe om spanning te hanteer. Soms gedra ons kinders hulle op maniere wat ons gespanne maak, en ons as ouers kan ons kinders ook gespanne laat voel.\n\nDit is dus belangrik om te besef wanneer ons spanning ervaar en om dan ’n blaaskans te neem en asem te haal. Dit sal jou help om jou spanning te hanteer.", + "SourceText": "Start your first parenting workshop", + "text": "Begin jou eerste ouerskapslypskool", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Veiligheid-amnestie-storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "Jy sal meer ondersteuning kry in die @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Storie en nadenke – dit het nie gewerk nie...\n* Storie en nadenke – dit het gewerk!\n* Veiligheid-amnestie-storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "Jy kan meer ondersteuning kry in die @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "Kom ons kyk na ’n voorbeeld van hoe spanning soms net te veel kan raak, vir ons almal:", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Begin die @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver: “Los my uit en hou jou neus uit my sake!”", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Voltooi die @local.workshop_data.in_text_title om meer ondersteuning te kry.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: “Wat het ek gedoen? Jy luister nooit nie!” \n\n@global.w_stress_male_caregiver: “Ek het gesê los my uit of jy kry ’n pak slae!”", + "SourceText": "Continue the @local.workshop_data.in_text_title", + "text": "Gaan voort met die @local.workshop_data.in_text_title", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: “Kyk! Ek het ’n huis gemaak!”", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Kry weer toegang tot die @local.workshop_data.in_text_title", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: “Wie gee om oor jou simpel huis!”", + "SourceText": "CHAT", + "text": "GESELS", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel? En sy @global.w_stress_male_caregiver? En@global.w_stress_girl?\n\nWat kon @global.w_stress_male_caregiver anders gedoen het?", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Deel jou gevoelens, en moedig jou tiener aan om ook te praat oor hulle bekommernisse. Julle sal mekaar dan beter verstaan en dus 'n goeie plan saam kan beraam om gesond en gelukkig te bly!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel?", + "SourceText": "CAUTION", + "text": "VERSIGTIG", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "En @global.w_stress_male_caregiver?", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Kry jou informasie vanaf betroubare inligtingsbronne, sodat jy vertroue kan behou in hierdie onsekere tye. Ons hoor en sien baie nuus via ander mense asook fone, TV, internet. Laat dit jou twyfelagtig, bekommerd, bevrees, kwaad, of verward voel? Maak seker voor jy deel of optree!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_girl?", - "text": "En @global.w_stress_girl?", + "SourceText": "CHOOSE", + "text": "KIES", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "Scared", - "text": "Bang", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Om die regte besluite te neem wat almal gesond en veilig hou kan moeilik wees. Veral in hierdie tye! Jy kan jou tiener help om goeie besluite te neem.", "type": "template", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Elkeen van hulle was ontsteld om hul eie redes!", + "SourceText": "CHILL", + "text": "ONTSPAN", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "Wat kon @global.w_stress_male_caregiver anders gedoen het?", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Ons voel almal by tye gespanne. Neem diep asem of doen iets prettig saam. Dit kan 'n groot verskil maak aan jou huishoudelike geluk en rustigheid! Hier is 'n paar idees wat jy kan probeer:", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "Recognise why he feels stressed", - "text": "Erken waarom hy gespanne voel", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Negatiewe gedagtes laat ons negatiewe dinge sê en doen. Probeer 'n verandering in jou denke en uitlatings van negatief na positief!", "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "Haal diep asem en praat op ’n kalm manier", + "SourceText": "WHO Website", + "text": "WGO-webwerf", "type": "template", "note": "" }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "Wys hy verstaan sy tiener se gevoelens", + "SourceText": "UNICEF Website", + "text": "UNICEF-webwerf", "type": "template", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "Dink saam met @global.w_stress_teen_boy_1 aan oplossings", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Ouerskap tydens COVID is moeilik. Wees trots op jouself dat jy so ver gekom het.\n\nOns werk hier aan nuwe inhoud om jou te ondersteun sodat jy met jou tieners en kinders oor COVID kan praat.\n\nDie nuutste inligting oor COVID-19 kan op die WGO- en UNICEF-webwerwe gevind word:", "type": "template", "note": "" }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "Doen iets positief saam met @global.w_stress_teen_boy_1", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike UNICEF-webwerf.", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver sou kon...", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "Die URL is https://www.unicef.org/coronavirus/covid-19", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* Erken waarom hy gespanne voel \n* Diep asemhaal en op ’n kalm manier praat\n* Wys hy verstaan sy tiener se gevoelens \n* Dink aan oplossings saam met @global.w_stress_teen_boy_1\n* Iets positief doen saam met@global.w_stress_teen_boy_1", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Hierdie knoppie neem jou na die Koronavirus-afdeling van die amptelike WGO–webwerf.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Dankie dat jy saam gedink het! Kom ons gaan terug om te sien wat @global.w_stress_male_caregiver nou doen:", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "Die URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver het sy werk verloor. Hy het vol frustrasie en spanning tuis gesit toe @global.w_stress_teen_boy_1 ingekom het.", + "SourceText": "Update my parenting experiences", + "text": "Dateer my ouerskap-ervarings op", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver ( asem in): “Ek is jammer, my seun. Dit was ’n moeilike dag. Die baas het my afgedank.”", + "SourceText": "Update my personal details", + "text": "Dateer my persoonlike besonderhede op", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “O nee! Ek het ’n nuwe skooluniform nodig.” \n\n@global.w_stress_male_caregiver: “Ek sal probeer, my seun, en jou @global.w_stress_female_caregiver se werk sal help om ons deur te sien terwyl ek ander werk soek.”", + "SourceText": "Update my workshop options", + "text": "Dateer my werksessie opsies op", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: “Ek kan ook werk soek om te help,@global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nee, dis oukei, @global.w_stress_teen_boy_1. Ek waardeer jou aanbod. Die belangrikste is dat jy hard werk op skool. Dankie dat jy na my geluister het.”", + "SourceText": "Give me quick parenting tips", + "text": "Gee my vinnige wenke vir ouerskap", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “Kom ons gaan speel saam sokker. Dit sal my help om ’n bietjie van hierdie spanning te vergeet.”\n\n@global.w_stress_teen_boy_1: “Oukei, @global.w_stress_male_caregiver!”", + "SourceText": "Something really bad happened", + "text": "Iets baie sleg het gebeur", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Dit het soveel beter gegaan!\n\nOm ’n blaaskans te neem, help om kalm te reageer wanneer jy kwaad of gespanne voel. Probeer dit, jy sal sien!", + "SourceText": "I have technical problems with the app", + "text": "Ek ervaar tegniese probleme met die toep", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Veiligheid-amnestie", + "SourceText": "You will find the in-week messages from the previous workshops here.", + "text": "Jy kan die in-week-boodskappe van die vorige slypskole hier vind.", "type": "template", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Dink terug aan toe jy ’n tiener was. \n\nWas daar ooit ’n tyd wat jy in gevaar was, maar jy kon nie vir jou gesin vertel nie, want hulle sou kwaad wees?\n\nDit het AMPER met @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl gebeur! Kom ons kyk:", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Jy het nog geen aktiwiteite by @global.my_activities gevoeg nie. Waarom kies jy nie ’n paar nie?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: “Moenie vir die grootmense sê nie, maar ek gaan vanaand saam met my vriende na ’n kroeg toe” \n\n@global.w_stress_teen_girl: “Geniet dit! Ek het vir hulle gesê ek bly by my vriendin, maar ek gaan eintlik na ’n cool partytjie toe.”", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Jy het nog geen ontspanningsaktiwiteite by @global.my_relaxes gevoeg nie. Waarom kies jy nie ’n paar nie?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: “Ek dink hulle verkoop dwelms. Ons kan almal in hegtenis geneem word. Maar ek kan my ouers nie vertel nie – hulle sal vreeslik kwaad wees.”", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "Jy sal hier wenke kry wat ons dink jy nuttig kan vind, gebaseer op jou antwoorde op die toep-aanpassing.", "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: “Ek is bang. Almal is te dronk om my huis toe te neem. Een seun sê hy sal my neem, maar hy wil eers na sy huis toe gaan. Ek kan my ouers nie vertel nie – ek het gejok oor die partytjie.”", + "SourceText": "Relaxation activities", + "text": "Ontspanningsaktiwiteite", "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Hierdie is gevaarlike situasies! Gelukkig het @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl onthou wat @global.w_stress_parent vir hulle gesê het: \n\n“Ek gee meer om oor julle veiligheid as enigiets anders. As julle ooit ontsteld of bang is, kan julle my altyd skakel vir hulp, of my daarvan vertel. \n\nSê net 'VEILIGHEID-AMNESTIE'. Ek belowe ek sal my bes doen om te help en ek sal nie kwaad wees nie – selfs al doen julle iets wat julle nie moet nie.”", + "SourceText": "Something fun to do with your teen", + "text": "Iets prettig om saam met jou tiener te doen", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: “@global.w_stress_parent, dis ’n veiligheid-amnestie. Kan jy my kom oplaai? Ek het regtig ’n geleentheid huis toe nodig.”", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "Ervaar jy enige tegniese probleme? Laat weet ons en help om @global.parent_app te verbeter!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: “@global.w_stress_parent, veiligheid-amnestie. Ek dink my vriende is in die moeilikheid. Ek wil nie ophou om hulle vriend te wees nie, maar ek is bekommerd. Kan ons praat?”", + "SourceText": "Type your name (optional)", + "text": "Tik jou naam in (opsioneel)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "ASEM IN. Stadig. Neem ’n blaaskans.", + "SourceText": "Contact me on @global.whatsapp", + "text": "Kontak my by @global.whatsapp", "type": "template", - "note": "" + "note": "The string @global.whatsapp should not be translated." }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Voor jy iets sê, asem vyf keer stadig in en uit. Dit sal jou kalmeer, en jou ’n kans gee om te dink.", + "SourceText": "Type your phone number", + "text": "Tik jou foonnommer in", "type": "template", "note": "" }, { - "SourceText": "SHARE how you feel", - "text": "DEEL hoe jy voel", + "SourceText": "Contact me via email", + "text": "Kontak my per e-pos", "type": "template", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Dis moeilik. Baie van ons is geleer om nie te huil nie, om nie ons gevoelens vir ons kinders te wys nie. Maar haal diep asem en vertel hulle op ’n kalm manier hoe jy voel. Hulle sal beter verstaan, en ook van jou leer hoe om stres te hanteer.", + "SourceText": "Type your email address", + "text": "Tik jou e-posadres in", "type": "template", "note": "" }, { - "SourceText": "SHOW them you care", - "text": "WYS hulle dat jy omgee", + "SourceText": "Tell us about your issue", + "text": "Vertel ons van jou probleem", "type": "template", "note": "" }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Dit is ook moeilik!. Spanning maak dat ons op onsself fokus. Maar ons tieners het ons ondersteuning nodig. Vra hulle hoe hulle voel. Luister na hulle en stel hulle gerus. Probeer hulle ’n drukkie gee of sê ‘ek verstaan’. Dit kan alles verander.", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Die eerste keer dat my ma my gevra het of ek tyd saam met haar wou deurbring, het ek vir haar gesê om my uit te los, want ek was in die middel van ’n speletjie. Tog het sy soos altyd aangedring. Ek het gesê sy kan kyk hoe ek speel indien sy wil. Na ’n paar minute het sy my vrae begin vra oor die speletjie. Aanvanklik was dit irriterend, maar na ’n rukkie was ek bly dat sy uiteindelik belangstelling getoon het in wat ek doen. Sy het selfs probeer speel!", "type": "template", "note": "" }, { - "SourceText": "SEEK the positive", - "text": "VIND die positiewe", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "My pa het vir my gesê ek speel te veel basketbal na skool en ons moet ’n gesinsreël instel. Hy het belowe dat ons saam sal dink aan ’n oplossing, sodat ons albei goed sal voel daaroor. Ek het nie geglo dat dit moontlik sou wees nie, maar ek het gesê: “Goed, laat ons probeer”. Ons het onderhandel en saamgestem dat die reël sal wees dat ek ná huiswerk basketbal mag speel, tot aandete. Dit is vir my moeilik om my vriende na skool te sien speel, daarom doen ek my bes om my huiswerk eers klaar te maak en dan by hulle aan te sluit. Nou het ek ook die hele aand om ander dinge na aandete te doen, soos om na basketbal in die NBA te kyk.", "type": "template", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "Kan jy en jou tiener dink aan idees wat dalk kan help? Kan julle iets positief saam doen om die stres uit julle gedagtes te kry?", + "SourceText": "Question Time", + "text": "Vraetyd", "type": "template", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "As niks werk nie, haal asem. Jy kan dit doen.", + "SourceText": "It's time for some questions!", + "text": "Dis tyd vir ’n paar vrae!", "type": "template", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Daar is twee tuisoefeninge vir hierdie week.", + "SourceText": "Read Together", + "text": "Lees saam", "type": "template", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Elke keer as jy gespanne of ontsteld voel: asem vyf keer in en uit voordat jy reageer.\n\nEn wanneer julle albei kalm is, deel met jou tiener hoe jy voel.", + "SourceText": "Let's read a story together!", + "text": "Kom ons lees ’n storie saam!", "type": "template", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Bespreek “veiligheid-amnestie” met jou tiener, en dink saam aan ’n situasie waar julle dit sou kon gebruik.", + "SourceText": "Let's read a story!", + "text": "Kom ons lees ’n storie!", "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Elke keer wanneer jy ’n blaaskans neem voor jy reageer, of wanneer jy iets doen om jou tiener veilig te hou, tik op jou @global.parent_points en vier jou sukses!", + "SourceText": "Let's see how this week has been.", + "text": "Kom ons kyk hoe hierdie week was.", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "Julle het hierdie week se slypskool voltooi.\n\nVolgende week sal ons oor geld praat – julle sal die volgende nodig hê:\n* ’n vel papier/karton\n* ’n pen\n* 20 klein klippies/boontjies/pitte\n\nDit sal pret wees!", + "SourceText": "This week you have done...", + "text": "Hierdie week het jy...", "type": "template", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Dis gaaf dat dit vandag goed gaan. Wat is dit wat vandag goed was? Onthou om jouself daarvoor te prys.", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "Jy wys regtig hoe toegewyd jy is om ’n ouer te wees en om vir jouself te sorg.\n\nJy is fantasties.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Jammer om te hoor dat jy nie vandag goed voel nie. Dis goed dat jy sulke emosies uitspreek en probeer om kalm en goedhartig teenoor jouself te wees. Jy stel ’n baie mooi voorbeeld vir jou gesin.", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Tuisoefening is hoe ons ons gesinslewe beter kan maak. Maar dit gaan dikwels met uitdagings gepaard.\n\nKom ons deel ons suksesse en probleme, en help mekaar om nuwe idees te vind om uit te probeer!", "type": "template", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Elke klein dingetjie wat jy doen, maak saak. Ons hoop jy is ook trots op jouself.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Dink aan hoe jou tuisaktiwiteite hierdie week gegaan het.\n\nMaak beurte om die volgende te bespreek:\n* Wat het goed gegaan en wat was ’n probleem?\n* Aan watter oplossings kan julle saam dink?\n* Kies een oplossing en probeer dit later saam met jou tiener!\n\n(Of jy kan dit selfs nou oefen sodat dit later makliker sal wees!)", "type": "template", "note": "" }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Alle gesinne ervaar krisisse. Wanneer ons saam voorberei en weet waar om hulp te kry, VOORDAT iets sleg gebeur, kan ons enige krisis oorkom.", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Besprekingvoorbeeld uit@data.workshop.w_1on1.title", "type": "template", - "note": "" + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Goeiedag, almal\n\nVandag se onderwerp is die hantering van krisisse.\n\nKrisisse kan enige plek voorkom. Krisisse kan enige tyd voorkom. Daarom is dit belangrik om as gesin planne in plek te hê ingeval enige lid van die gesin hulself in ’n krisissituasie bevind. \n\nDit is belangrik om planne te hê sodat elke lid van die gesin beskerm kan voel. \n\nWanneer ons krisisse hanteer, onthou om stil te gaan staan, asem te haal en jouself kalm te hou. Dit sal jou help om die krisis beter te hanteer.", + "SourceText": "Relax Together", + "text": "Ontspan saam", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en bespreking\n* Storie en bespreking\n* Hulpmiddels: Hoe om ’n krisis te hanteer\nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "Relax", + "text": "Ontspan", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en nadenke \n* Storie en nadenke\n* Hulpmiddels: Hoe om ’n krisis te hanteer \nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "text": "Kom ons doen ’n kort ontspanningsaktiwiteit saam – dit neem minder as 1 minuut en jy sal meer ontspanne voel.", "type": "template", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "’n Krisis kan met enigeen gebeur. \n\nKom ons kyk wat het met @global.w_crisis_teen_girl_1 en @global.w_crisis_female_caregiver gebeur:", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Voeg hierdie aktiwiteit by @global.my_relaxes", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: “Foeitog my kind, jy lyk regtig ontsteld, wil jy vir my vertel wat gebeur het?”", + "SourceText": "Listen and relax", + "text": "Luister en ontspan", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: “Dit is my oom, hy...hy... hy het aan my gevat.”\n\n@global.w_crisis_female_caregiver (dink): “Haal diep asem...Wat het my kind nodig? Sy het nodig dat ek kalm bly en luister” \n\n@global.w_crisis_female_caregiver: “Kom sit hier langs my. Neem jou tyd, ek luister.”", + "SourceText": "Read and relax", + "text": "Lees en ontspan", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: “Dis waar, hy...hy... het my gedwing om dit te doen! Hy het my gedwing om met hom seks te hê! Ek wou nie, ek sweer, en ek het selfs NEE gesê, maar hy het gesê ek sal in die moeilikheid kom.” \n\n@global.w_crisis_female_caregiver: “Dankie dat jy dit met my deel. Jy is nie in die moeilikheid nie. Dis nie jou skuld nie.”", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: “Gister het jy gaan kuier by @global.w_crisis_adult_friend. Hy het net hier aangekom, en dis toe dit gebeur het.”\n\n@global.w_crisis_female_caregiver: “Dis oukei, my kind, ek glo jou. Dis ’n groot ding en ons sal ’n manier kry om die nodige hulp te kry. Waar kan ons gaan hulp vra?”\n\n@global.w_crisis_teen_girl_1: “My skool?”", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Maak jou oë toe.\n\nLet op jou verbinding met die grond onder jou.\nWatter dele van jou liggaam raak die grond? Watter dele van jou liggaam raak dit nie?\nLet op waar dit warm voel en waar dit koel voel.\nVoel hoe die grond onder jou jou ondersteun. Laat jou liggaam in die ondersteuning van die grond wegsak.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: “Aag, ek weet, kom ons gaan kliniek toe. Hulle sal weet wat ons kan doen om jou te help. Klink dit vir jou oukei?”\n\n@global.w_crisis_teen_girl_1: “Ja… Oukei… Maar sal jy saam met my gaan?”", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Probeer dit as jy weer alleen voel of ’n alledaagse aktiwiteit doen, soos om skottelgoed te was. Dit kan regtig help!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: “Natuurlik sal ek. En@global.w_crisis_teen_girl_1? Onthou, dis nie jou skuld nie. Ek is lief vir jou. Jy is ’n goeie persoon. Ons sal hierdeur kom.”", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Gaan sit en maak jou oë toe.\nHoeveel geluide kan jy hoor?\nLuister na die geluide binne en buite die kamer. Tel dit op jou vingers.\nHoeveel vingers het jy op na tien sekondes? Watter geluide het jy gehoor?\n\nProbeer weer vir nog tien sekondes.\nHet jy enige nuwe geluide gehoor? Het jy geluide in jou eie liggaam gehoor?\nLet op hoe jy nou voel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Dit was so ’n moeilike situasie vir @global.w_crisis_teen_girl_1 en haar@global.w_crisis_female_caregiver! Dit kan met seuns én meisies gebeur.", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Maak jou oë toe.\n\nVoel jy ooit iets so sterk dat jy daarvan wil weghardloop?\n\nIn plaas daarvan om van die gevoel weg te beweeg, kom ons ’n beweeg vir ’n oomblik nader daaraan.\nDit is oukei. Maak jou oë toe as jy gemaklik voel. Haal diep asem.\n\nWord nuuskierig. Waar voel jy dit in jou liggaam? Is dit warm of koud? Hard of sag? Styf of los?\nVra jouself ’n paar vrae. Wat sê dit vir my? Wat het dit nodig? Hoe kan ek op die oomblik vriendelik teenoor myself wees?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "Watter vaardighede het @global.w_crisis_female_caregiver gebruik?", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Hier is iets lekkers om jou te help om stres te verlig:\n\nKies ’n liedjie wat weerspieël wat jy op hierdie oomblik nodig het. Het jy ’n sagte liedjie nodig om jou moeë siel te kalmeer, of ’n opgewekte liedjie om jou te help om ’n bietjie spanning af te skud?\n\nMaak ’n ruimte en beweeg jou liggaam op maat van die musiek. Onthou om asem te haal terwyl jy beweeg. Laat jou asem en die beweging saamgaan.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "Ja, @global.w_crisis_female_caregiver het werklik al daardie vaardighede gebruik – en jy kan ook!", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Selfs ’n paar minute se beweging kan genoeg wees om jou stres te verlig en jou gemoed te lig!", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "’n Ander probleem waaroor baie ouers bekommerd is, is geweld en misdaad. Kom ons kyk saam na ’n voorbeeld.", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Maak jou oë toe.\nNeem ’n rukkie om die grond onder jou voete te voel.\nDink aan iets waarvoor jy dankbaar is.\nFokus op jou asem.\nAsem in en uit.\n\nIn en uit.", "type": "template", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: “@global.w_crisis_teen_boy_1, Jy lyk van gister af bekommerd. Wat is verkeerd?”", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Hallo! Hoe voel jy nou? Gelukkig, hartseer, kwaad, opgewonde, bekommerd?\n\nLet op waar jy dit in jou liggaam voel. Let op watter gedagtes aan daardie gevoel gekoppel is. Haal diep asem.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: “Gister was ek en my vriende by ’n sokkerwedstryd. ’n Paar dronk ouens het ’n bakleiery met my vriend begin.” \n\n@global.w_crisis_male_caregiver_1: “Gaan aan, ek luister. Ek hoop jy het nie baklei nie?”", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Sê vir jouself dankie dat jy tyd gemaak het vir jou gevoelens en gedagtes!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: “Ek wou nie, maar ek kon nie net daar staan en kyk hoe hulle my vriend slaan nie, daarom....”\n\n@global.w_crisis_male_caregiver_1 :“Het jy dus baklei om jou vriend te help verdedig?”", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "Kom ons oefen ’n kalmerende truuk wat ons “Pouseerkrag” noem.\n\nSit jou voete op die grond en haal drie keer so stadig moontlik asem, in en uit. Stel jou voor dat jy ’n blom ruik of ’n kers blaas.\n\nTa Da! Pouseerkrag!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Almal het baklei. Ek het iemand op die veld sien lê, in ’n plas bloed. Dit het vir my gelyk hy is... dood.”", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Dit is ’n goeie truuk om te gebruik as jy gefrustreerd voel, want dit sal jou kalmeer.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: “Ek is bly jy vertel my hiervan, @global.w_crisis_teen_boy_1. Kom sit by my, dan bespreek ons of ons die polisie of iemand anders wat kan help, moet betrek.”", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Om jouself te prys kan baie nuttig wees, veral as ons moeilike dae beleef.\n\nDink aan jou week en voltooi die volgende frase: “Hierdie week is ek trots op myself vir ...” Dit kan enigiets wees, nie net dinge oor ouerwees nie!\n\nDink aan een ding wat jy vandag goed gedoen het. Sit nou jou arms om jouself en gee jouself ’n stywe DRUKKIE!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: “Dankie, @global.w_crisis_male_caregiver_1”\n\n@global.w_crisis_male_caregiver_1: “Ons sal hierdeur kom. Onthou, ons sal jou as ’n gesin ondersteun.”", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Sit gemaklik en maak jou oë toe.\n\nErken wat op hierdie oomblik met jou gebeur. Wat dink jy? Is jou gedagtes positief of negatief? Hoe voel jy? Voel jy aangenaam of onaangenaam? Hoe voel jou liggaam? Voel jy gespanne of ontspanne?\n\nRaak op rustige manier bewus van wat in jou hart aangaan. Jy kan jou een hand op jou hart of bors sit. Sê die volgende woorde stilweg vir jouself:\n\nMag ek rustig wees.\nMag ek veilig wees.\nMag ek gesond wees.\nMag ek gelukkig wees.\nMag daar liefde in my gesin wees.\nMag ek geliefd voel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "Dit was ’n baie moeilike situasie vir @global.w_crisis_teen_boy_1 en sy @global.w_crisis_male_caregiver_1!", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Neem ’n tydjie om na te dink oor jou ervaring. Let op of jy enige verskil voel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "Watter vaardighede het @global.w_crisis_male_caregiver_1 gebruik?", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Stap 1. Maak jou oë toe en haal diep asem.\n\nStap 2. Vra jouself af: “Waaraan dink ek?” Let op of jou gedagtes positief of negatief is.\nLet op hoe jy emosioneel voel. Let op of jou emosies aangenaam of onaangenaam is. Herinner jouself daaraan dat wat jy ook al voel, dit goed is .\nLet op hoe jou liggaam voel. Let op enigiets wat seer of gespanne is.\n\nStap 3. Fokus op jou asem. Voel jou asem terwyl dit in- en uitgaan. Jy kan een hand op jou maag sit en met elke asemhaling voel hoe dit styg en val. Doen dit vir ongeveer 10 asemhalings.\n\nStap 4. Brei jou bewussyn uit na jou hele liggaam. Luister na die geluide in die kamer.\n\nStap 5. Neem ’n rukkie om na te dink of jy anders voel. Wanneer jy gereed is, maak jou oë oop.", "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Al hierdie vaardighede kan help in ’n krisis.", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "Dit is goed dat jy ’n pouse geneem het. Jy kan dit altyd doen wanneer jy stres ervaar. Dit gee jou ’n kans om rustiger te word. Selfs om ’n paar keer diep asem te haal of om met die grond onder jou ’n verbinding te maak, kan ’n verskil maak. Jy kan ook ’n pouse saam met jou kinders neem!", "type": "template", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Krisisse kan ons kwaad of hulpeloos laat voel. Maar dít is wanneer ons tieners regtig nodig het dat ons asemhaal, luister en dink.", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Sit, maak jou oë toe en luister na jou asem terwyl dit in en uit gaan.\n\nLet op hoe jy voel.\n\nWanneer jy gereed is, maak jou oë weer oop.", "type": "template", "note": "" }, { - "SourceText": "BREATHE", - "text": "ASEM IN", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Probeer dit wanneer jy ook al gestres voel en ’n ruskans nodig het om weer teenwoordig te voel.", "type": "template", "note": "" }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Bly kalm. Vra jouself af ‘wat het my tiener op hierdie oomblik nodig?’", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Staan op en strek jou arms in die lug. Druk enige wolke weg en laat die son op jou skyn. Strek na albei kante. Strek vorentoe en agtertoe.\n\nLaat jou hand aan jou sy hang. Druk jou skouers styf tot by jou ore terwyl jy inasem, knyp jou oë styf toe en hou jou asem in. Laat jou skouers los terwyl jy jou liggaam ontspan.\n\nOntspan jou arms en laat jou arms sywaarts swaai, en draai jou bolyf. Jou arms moet jou rug saggies raak terwyl jy van kant tot kant draai.\n\nPlaas die een voet voor die ander en maak klein sirkels vanaf die enkels, onthou om na albei kante te draai. Doen elke voet met vier sirkels in elke rigting.\n\nSkud nou jou hele liggaam so vinnig as wat jy kan. Skud dit hoog! Skud dit laag! Skud dit oral rond!\n\nMaak jou oë toe en lig jou arms stadig bo jou kop terwyl jy inasem. Laat sak jou arms stadig tot aan jou sy terwyl jy uitasem.\n\nNeem ’n oomblik om na te dink oor jou ervaring.", "type": "template", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Sê vir hulle jy is daar vir hulle, en is lief vir hulle.", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "Mooi so! Jy kan hierdie aktiwiteit enige tyd doen wanneer jy voel jy moet stres verlig en jou liggaam en gees energie moet gee.", "type": "template", "note": "" }, { - "SourceText": "THINK", - "text": "DINK", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Maak ’n lys van gesonde aktiwiteite wat jy graag wil doen. Hier is ’n paar voorstelle:\n* Luister na jou gunstelingmusiek\n* Gaan stap ’n entjie (indien toegelaat)\n* Kry oefening\n* Drink ’n koppie tee alleen\n* Bel ’n vriend\n* Sing, dans, bid of lees\n* Sit in die son met jou oë toe \n* Kyk na jou gunsteling-TV-program\n\nKies een en doen dit vandag!", "type": "template", "note": "" }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Gesels met jou tiener. Wat kan dalk die situasie help? Jy sal dalk nou dadelik planne moet beraam, en dan langtermynplanne later.", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "As jy na jouself omsien, sorg jy vir jou kinders. Ons moet almal met mekaar in verbinding kom. Probeer om elke dag met vriende, familie en ander ondersteuningsnetwerke te praat. As dit al ’n rukkie is sedert jy laas na iemand uitgereik het, doen dit nou!", "type": "template", "note": "" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "Wees trots op jouself omdat jy maniere soek om hulp te kry!", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Dink na oor wat jou kwaad maak. Wanneer gebeur dit? Hoe reageer jy gewoonlik?\n\nKeer dat woede in die eerste plek begin. Slaap of rus as jy moeg is. Probeer iets eet as jy honger is. Vra iemand vir ondersteuning as jy alleen voel.", "type": "template", "note": "" }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Dit help om te oefen hoe om ’n krisis te hanteer voordat iets gebeur.\n\nKyk na hierdie vyf krisistye in ’n gesin. Stel jou voor jy is die ouer: Wat sou jy doen?\n\nOnthou: ASEM IN – LUISTER – DINK", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Dit kan baie moeilik wees om woede te beheer. Vat ’n blaaskans as jy voel dat jy vir jou kinders of iemand anders kwaad word.\n\nGaan vir 5 minute na ’n ander plek om weer beheer oor jou emosies te kry. As jy ’n veilige plek in buitelug het, gaan buitentoe. Jy kán hierdeur kom!", "type": "template", "note": "" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Krisis 1: @global.w_crisis_teen_boy_2 baklei by die skool", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Maak jou oë toe.\n\nKom ons gebruik die towerkrag van drie om teenwoordig te bly en te ontspan.\n\nNoem drie geluide wat jy nou kan hoor.\nNoem drie reuke wat jy nou kan ruik.\nNoem jou drie gunstelingkosse.\n\nVir watter drie dinge kan jy op die oomblik dankbaar wees? Dit hoef nie groot te wees nie.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: “Ek het dit nog nooit voorheen gedoen nie. En nou gaan hulle my skors”", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "As ons aan die einde van ’n rowwe dag dink aan drie dinge waarvoor ’n mens dankbaar kan wees, kan dit ons die moed help vind om môre weer te probeer.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Krisis 2: @global.w_crisis_teen_girl_1 raak swanger", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Maak jou oë toe en dink aan die dag.\n\nNoem 1 ding waarvoor jy dankbaar is.\nNoem 1 ding wat jy goed gedoen het.\nNoem 1 ding waarvan jy hou.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: “@global.w_crisis_male_caregiver_1, ek skaam my. Ek weet nie wat om te doen nie”", + "SourceText": "Well done, you are a hero!", + "text": "Welgedaan, jy is ’n held!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Krisis 3: @global.w_crisis_teen_boy_2 maak ’n meisie swanger", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Maak jou oë toe.\n\nGebruik die towerkrag van drie om verbind te bly en te ontspan.\n\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: “@global.w_crisis_male_caregiver_2, ek wil nie ’n baba hê nie”", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "Voel jy hoegenaamd anders? Diep asemhaling help om ons hele liggaam en gees te kalmeer.\n\nJy is ’n ster!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "Watter terugvoer kan jy aan @global.w_crisis_teen_boy_2 gee?", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Maak jou oë toe.\n\nLuister na jou asem soos wat dit vyf keer in en uit gaan.\n\nLet op hoe jy voel.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Krisis 4: Iemand in die familie raak siek", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Wanneer jy gereed is, maak weer jou oë oop. Jy is in beheer!", "type": "template", "note": "" }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "“Die toets wys ek het MIV. Ek is bang ek gaan dood”", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Maak jou oë toe.\n\nNeem ’n bietjie tyd om na te dink oor die dag.\n\nDink aan een positiewe of prettige ding wat jy gedoen het.\nPrys jouself vir een ding wat jy vandag goed gedoen het.\nDink aan een ding wat jy môre anders kan doen.\nDink aan een ding waarvoor jy dankbaar is.", "type": "template", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "Hoe kan jy in hierdie situasie reageer?", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Maak jou oë toe.\n\nMaak jou kinders jou ooit lus om te skree?\n\nGee jouself ’n pouse van 10 sekondes. Asem 5 keer stadig in en uit.\n\nProbeer dan op ’n rustiger manier reageer.", "type": "template", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Krisis 5: @global.w_crisis_teen_girl_1 word onder druk geplaas om met haar kêrel seks te hê", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Miljoene ouers sê dit help – BAIE.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: “Ek wou nie regtig nie. Nou gaan ek swanger raak of siek raak. @global.w_crisis_female_caregiver, ek is baie bang...”", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Maak jou oë toe.\n\nNeem ’n rukkie om te stop waarmee jy besig is en dink aan jou asem.\n\nWat is een ding waarvoor jy op die oomblik dankbaar kan wees?\nWat is een ding wat jou geluk bring?\nWat is een ding waarvan jy hou?\n\nHulle hoef nie groot dinge te wees nie. Soms tel die klein dingetjies in die lewe die meeste!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "Watter terugvoer kan jy aan @global.w_crisis_teen_girl_1 gee?", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Hier is ’n aktiwiteit om jou liggaam te ontspan:\n\nSit gemaklik en maak jou oë toe as jy kan.\nStel jou ’n goue ring voor wat jou liggaam van jou voete na jou kop skandeer.\nLet op terwyl dit op en af oor jou liggaam beweeg. Is daar plekke wat gespanne voel? Gevoelloos? Pynlik?\nFokus ’n oomblik op daardie plekke. Asem in op die gebied, en terwyl jy uitasem, probeer om enige spanning of pyn te los te laat.\nDoen dit vir ’n paar asemhalings.\n\nMaak jou oë oop. Hoe voel jou liggaam nou?", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Onthou om mekaar te ondersteun en aan te moedig. In ’n krisis is dit moeilik om kalm te bly en na mekaar te luister – ons is trots op jou.", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "Probeer dit volgende keer as jy in die bed lê en nie kan slaap nie!", "type": "template", "note": "" }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "Kies saam met jou tiener een van hierdie situasies ( of dink self een uit!). Kyk na die tekenprent, en bespreek wat julle saam sou doen indien dit met ’n vriend of in julle gesin sou gebeur.\n\n En onthou: ASEM IN – LUISTER – DINK", + "SourceText": "Start", + "text": "Begin", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en julle help om vir die toekoms te beplan. \n\nMiskien kan julle saam partytjiekos beplan, en musiek reghou as julle dalk wil dans!", + "SourceText": "Please sign in with your Google account to use the app.", + "text": "Meld asseblief met jou Google-rekening aan om die toep te gebruik.", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en jy kan die ondersteuning kies wat jy vir die toekoms wil hê.\n\nJy kan iets lekker voorberei om dit te vier – iets wat jy graag eet, of musiek waarna jy graag luister!", + "SourceText": "Sign in with Google", + "text": "Meld aan met Google", "type": "template", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Selfsorg is ’n sleutelhulpmiddel vir ouerskap.", + "SourceText": "Add this activity to @global.my_activities", + "text": "Voeg hierdie aktiwiteit by @global.my_activities", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "How are you feeling today?", - "text": "Hoe voel jy vandag?", + "SourceText": "@global.parent_app funded by", + "text": "@global.parent_app befonds deur", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Dis so lekker om te hoor jy voel vandag goed. Jy is ongelooflik!", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "Gerugsteun deur Parenting for Lifelong Health en vennote", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Ek is jammer dat dinge nou moeilik gaan. Haal diep asem en weet dat jy waardeer word.", + "SourceText": "Bringing teenagers up is hard", + "text": "Om tieners groot te maak, is moeilik", "type": "template", "note": "" }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "Jy kan jou tiener help verstaan dat daar gevolge is wanneer ’n gesin se reëls oortree word. \n\nMaar HOE jy dit doen, maak saak. \n\nOm gevolge reg te hanteer, help tieners om hul beter te gedra en sorg vir ’n kalmer gesinslewe...", + "SourceText": "You are the best parent your teen could have", + "text": "Jy is die beste ouer wat jou tiener kon hê", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Goeiedag, almal. \n\nVandag se onderwerp is kalm gevolge.\n\nDit is belangrik dat, wanneer ons gevolge aan ons tieners bekendstel, ons hulle betrek, maar dit is ook belangrik dat ons kalm bly wanneer ons gevolge bekendstel.\n\nDit sal ons help om saam te stem om kalm gevolge aan ons tieners bekend te stel en ons tieners sal die gevolge maklik onthou wanneer hulle betrek word en dit sal hulle verantwoordelik maak.", + "SourceText": "Ideas from other families:", + "text": "Idees van ander gesinne:", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en bespreking – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "Customise @global.parent_app", + "text": "Pas @global.parent_app aan", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en nadenke – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "Kom ons lees wat met @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver gebeur het:", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app aan te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gespanne te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Kyk hoe laat is dit! Jy is laat!”", + "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", + "text": "Dit is ’n groot bron van kommer vir ouers oral. Onthou om jou nuwe vaardighede te gebruik om goeie kommunikasie met jou tiener te bly opbou.\n\nJy kan die belangrikste wenke oor beplanning vir jou tiener se veiligheid in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text lees!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – gaan slaap maar weer”. \n\n@global.w_consequence_male_caregiver: “Dis BAIE later as wat jy veronderstel was om by die huis te wees!”", + "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", + "text": "Uitstekend. As daar in die toekoms in jou gesin spanning of meningsverskille oor geld opduik, kan jy altyd die @data.workshop.w_money.in_text_title of @data.parent_centre.my_tips.location_text raadpleeg!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, jy hou nie by ons reël nie! Ek gaan jou ’n pakslae gee!”", + "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", + "text": "Geldstres kan oorweldigend wees.\n\nAs spanning of meningsverskille oor geld in jou gesin opduik, kan jy wenke in die @data.workshop.w_money.in_text_title of onder @data.parent_centre.my_tips.location_text vind!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Dis onregverdig! Julle luister nooit na my nie!! Ek haat julle!”", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Onthou dat jy toegang tot baie nuttige wenke en hulpbronne in die @global.parent_centre kan kry – dit is te eniger tyd vir jou beskikbaar!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Bespreek saam: \n* Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", + "text": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOnthou, jy kan meer ondersteuning hieroor in die @data.workshop.w_safe.in_text_title kry wanneer jy dit ook al nodig het!", "type": "template", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "’n Gevolg wat so gegee is, het nie goed gewerk nie, want...", + "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", + "text": "Ons weet dit is moeilik. Jy kan onder @data.parent_centre.my_tips.location_text ’n paar nuttige wenke lees oor hoe jy tyd met jou tiener kan deurbring of jy kan weer kyk na die @data.workshop.w_1on1.in_text_title.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver was kwaad", + "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", + "text": "Welgedaan dat jy so ’n goeie fondament gelê het! Jy kan altyd die @data.workshop.w_1on1.in_text_title nagaan om meer idees te kry oor hoe om tyd saam deur te bring.", "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver het nie vir @global.w_consequence_teen_boy_1 laat verduidelik nie", + "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", + "text": "Deurdat jy hierdie toep gebruik, wys jy dat jy vir jou tiener omgee. Jy kan kyk hoe om lof te gebruik onder @data.parent_centre.my_tips.location_text.\n\nVir meer wenke oor hoe om hierdie vaardigheid goed te gebruik, kan jy ook weer kyk na die @data.workshop.w_praise.in_text_title.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Die gevolg is nie vooraf met @global.w_consequence_teen_boy_1 bespreek nie", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", + "text": "Dit is wonderlik dat jy jou tiener prys! Dit help hulle om waardevol te voel – jou aanmoediging beteken baie.\n\nJy kan altyd weer na @data.workshop.w_praise.in_text_title kyk vir meer wenke oor hoe jy hierdie vaardigheid goed kan gebruik.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "The consequence was too strong", - "text": "Die gevolg was te hewig", + "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Dit is wonderlik dat dit ’n goeie week was!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", "type": "template", "note": "" }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", + "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", "type": "template", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "Ja, so ’n hewige reaksie het almal net meer kwaad en ontsteld gemaak.", + "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Ons verstaan hoe stresvol die lewe kan wees. Ons sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan beheer en kalmer kan voel.\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Tieners oortree dikwels reëls. Grootword is ’n moeilike tyd wanneer hulle leer wie hulle is.\n\nGelukkig is daar maniere om jou tiener te dissiplineer sonder om kwaad te raak of geweld te gebruik....en dit werk goed!\n\nWanneer kalm gevolge gegee word, help dit om ons kinders verantwoordelikheid te leer vir wat hulle doen – goed en sleg.\n\nHier is ’n paar voorbeelde – stel jou voor jy is die ouer:", + "SourceText": "Customise for your needs", + "text": "Pas dit aan volgens jou behoeftes", "type": "template", "note": "" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Kalm gevolge behoort... \n\nREGVERDIG te wees: Nie te hewig nie en jy kan dit in werklikheid uitvoer \n\nONMIDDELLIK te gebeur: Gee dit so gou as moontlik \n\nKONSEKWENT te wees: Elke keer dieselfde gevolg", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Elke ouer in die wêreld sukkel in hierdie moeilike tye. Die volgende vrae oor jou ouerskapervarings sal ons help om jou die nodige ondersteuning te bied.\n\nWees eerlik. Onthou dat jy nie alleen is nie! Miljoene ouers voel soos jy, en ons almal verdien ondersteuning.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.", + "SourceText": "Thank you for being honest", + "text": "Dankie vir jou eerlikheid", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.\n\nWatter gevolg sal hier help?", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Dit is wonderlik dat jy kalm reageer as jou tiener iets ontstellends doen. Hulle kan soveel by jou leer!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Gevolge is nie heeltemal dieselfde as straf nie: hulle gee ons tieners ’n kans om vir hul optredes verantwoordelikheid te leer neem.\n\nEn dit is meer beheersd EN effektief as om te slaan of te skree!", + "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", + "text": "Dit is wonderlik dat jy bewus is van wat jou tiener doen. Ouerskap is moeilik, maar jy slaag regtig daarin om hulle veilig te hou.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.", + "SourceText": "You selected \"I would rather not answer\"", + "text": "Jy het “Ek wil liewer nie antwoord nie” gekies", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.\n\nWatter gevolg sal hier help?", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Dis oukei!\n\nOnthou, as jy antwoord sal jou antwoord privaat gehou word en sal dit ons help om jou te voorsien van inhoud wat presies reg is vir jou.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Gevolge is meer suksesvol as jy dit vooraf met tieners bespreek en met die tieners ooreenkom, voordat jy dit toepas.\n\nEn gevolge is nie net negatief nie... Julle kan ook ooreenkom op GOEIE gevolge vir GOEIE optredes om meer positiewe gedrag te sien!", + "SourceText": "Are there adults in your family?", + "text": "Is daar volwassenes in jou gesin?", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "Hierdie toep fokus op ouers van tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "What consequence would help here?", - "text": "Watter gevolg sal hier help?", + "SourceText": "Are there teens in your family?", + "text": "Is daar tieners in jou gesin?", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.\n\nWatter positiewe gevolge sal hier help?", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "Hierdie toep fokus op gesinne met tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Dis belangrik hoe jy kalm gevolge voorstel. Onthou, wanneer jy jou tiener betrek, gaan dinge gewoonlik beter!", + "SourceText": "Are you sure you want to skip this question?", + "text": "Is jy seker dat jy hierdie vraag wil oorslaan?", "type": "template", "note": "" }, { - "SourceText": "EXPLAIN", - "text": "VERDUIDELIK", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "Is jy seker jy wil hierdie vraag oorslaan? Onthou, jou antwoord sal privaat gehou word en sal ons help om jou ouerskapbehoeftes te verstaan.\n\nJy kan ook kies om enige vraag nie te beantwoord nie deur die sirkel te kies.", "type": "template", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Maak seker julle is albei kalm. Haal ’n paar keer diep asem. Verduidelik aan jou tiener waarom jy oor hulle gedrag bekommerd is.\n\nVerduidelik die redes waarom die reël saak maak. Jy kan jou gevoelens deel – dit is oukei om te sê jy is teleurgesteld.", + "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", + "text": "Mooi so. Breinwetenskap toon dat as jy jou woede beheer, dit die breinontwikkeling van jou tiener verbeter. Wees trots op jouself.", "type": "template", "note": "" }, { - "SourceText": "AGREE", - "text": "STEM OOREEN", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", + "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops kan jy meer idees vind om spanning te hanteer, maar onder @data.parent_centre.my_tips.location_text het jy alreeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Beplan saam met jou tiener wat die gevolge sal wees as die reël nie nagekom word nie.\n\nVra hulle vir idees. Gesels totdat julle oor iets realisties saamstem.\n\nStel ’n gevolg vas vir wanneer die reël NIE nagekom word nie en ’n voorreg vir wanneer hulle WEL die reël nakom.", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gestres te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "ACT", - "text": "TREE OP", + "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", + "text": "Dit is ’n groot bron van kommer vir ouers oral. Ons sal seker maak dat jy ondersteuning kry om kommunikasie te bou.\n\nOns sal later in die @global.weekly_workshops verder praat oor beplanning vir jou tiener se veiligheid, maar onder@data.parent_centre.my_tips.location_text kan jy reeds ’n paar kernwenke kry om jou tiener veilig te hou!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Wanneer jou tiener die reël nakom, prys hulle en gee voorregte!", + "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", + "text": "Uitstekend. Ons het ’n slypskool oor gesinsbegroting wat met geldstres in die algemeen kan help, en geldverwante argumente kan verminder.", "type": "template", "note": "" }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "Hulle sal voel hulle word gerespekteer en gewaardeer. Hoe meer ons hulle prys, hoe meer sal hulle daardie goeie gedrag toon!", + "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", + "text": "Geldstres kan oorweldigend wees.\n\nOns hou oor vyf weke ’n werksessie oor gesinsbegroting, maar jy kan reeds onder @data.parent_centre.my_tips.location_text ’n paar kernwenke vir gesinsbegroting kry!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Wanneer jou tiener nie die reël nakom nie, druk deur met die gevolg.", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Inhoud wat deur hierdie vrae ontsluit is, is nou toeganklik onder @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Wanneer jou tiener die reël oortree, gee die gevolg op ’n kalm manier. Dit moet REGVERDIG (nie te straf nie), ONMIDDELLIK (doen dit dadelik) en KONSEKWENT (elke keer dieselfde) wees.", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", + "text": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOns sal meer ondersteuning vir jou in die latere @global.weekly_workshops hê as jy nog meer wil weet!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Bespreek saam:\n* Watter reëls oortree jou tieners dikwels?\n* Watter gevolg sou jy kon gebruik vir elke spesifieke reël wat oortree word?\n\nGevolge moet: \nREGVERDIG wees (nie te straf nie)\nONMIDDELLIK wees (doen dit dadelik) \nKONSEKWENT wees (elke keer dieselfde).\n\nPrys mekaar en moedig mekaar aan – ons kan mekaar sterk maak!", + "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", + "text": "Ons weet dit is moeilik. Ons het ’n paar nuttige wenke by @data.parent_centre.my_tips.location_text gevoeg oor hoe jy tyd met jou tiener kan deurbring, so jy kan dadelik toegang daartoe kry.\n\nOmdat @data.workshop.w_1on1.title die basis vorm vir alle ander hulpmiddels vir ouerskap, sal jy volgende week die @global.weekly_workshop ontvang!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "Kom ons keer terug na @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver", + "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", + "text": "Mooi so! Ons volgende @global.weekly_workshop gee jou meer idees hiervoor as basis vir al die ander hulpmiddels vir ouerskap. Maar jy het reeds ’n goeie begin!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: “Ek is besorg daaroor dat jy steeds dikwels laat huis toe kom, @global.w_consequence_teen_boy_1. Wat kan ons doen om jou te help onthou om betyds huis toe te kom?”\n\n@global.w_consequence_teen_boy_1: “As ek betyds huis toe kom, kan ek dan miskien 30 minute later as gewoonlik wakkerbly?”", + "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", + "text": "Deur hierdie toep te gebruik, wys jy dat jy vir jou tiener omgee. Ons het ’n paar noodsaaklike hulpmiddels oor hoe jy lof kan gebruik by @data.parent_centre.my_tips.location_text gevoeg vir vinnige toegang.\n\nIn ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: Dit is ’n goeie idee! En wat moet ons doen as jy nie die reël nakom nie?\n\n@global.w_consequence_teen_boy_1 (mompel): “Mgmluuhm”", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", + "text": "Wonderlik dat jy jou tiener prys! Dit help hulle om gewaardeerd te voel – jou aanmoediging beteken baie. In ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: “Ag kom nou, ek weet jy het ’n paar idees.”\n\n @global.w_consequence_teen_boy_1: “Nou goed…. Wat van: ek moet my huiswerk doen?”", + "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Dis wonderlik dat dit ’n goeie week was!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: “Jy moet in elk geval jou huiswerk doen. As jy die reël vergeet, is dit regverdig dat jy jou vriende nie die volgende dag sal kan sien nie.”\n\n@global.w_consequence_teen_boy_1: “Oukei, @global.w_consequence_male_caregiver.”", + "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Die volgende dag...\n\n @global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Hoe laat is dit? Dit is laat!”", + "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", + "text": "Ons verstaan hoe spanningsvol die lewe kan wees. Ons sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan hanteer en kalmer kan voel.\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops sal ons meer leer oor die hantering van spanning – maar onder @data.parent_centre.my_tips.location_text het jy reeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – jy kan maar weer gaan slaap.” \n\n@global.w_consequence_male_caregiver: “Dit is BAIE later as wat jy veronderstel was om by die huis te wees!”", + "SourceText": "Talk Together", + "text": "Gesels saam", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, dit is middernag en jy het later huis toe gekom as wat ons ooreengekom het. Wat ook al die rede is, jy moet verstaan dat dit nie aanvaarbaar is nie.Ek en @global.w_consequence_female_caregiver was regtig bekommerd.”", + "SourceText": "Share ideas, support each other!", + "text": "Deel idees, ondersteun mekaar!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: “My vriende wou hê ek moes langer bly. Hulle het my ’n baba genoem omdat ek al huis toe moes gaan.”\n\n@global.w_consequence_male_caregiver: “Ek weet dit kan moeilik wees om vir jou vriende nee te sê. Kom ons praat môreoggend hieroor wanneer ons uitgerus is.”", + "SourceText": "Think Together", + "text": "Dink saam", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: “Ek is jammer dat ek jou bekommerd laat word het, en ook@global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Dankie. Gaan slaap nou, maar jy moet baie mooi verstaan, aangesien jy later huis toe gekom het as wat ons ooreengekom het, sal jy nie toegelaat word om môreaand uit te gaan nie.”", + "SourceText": "It's time to think together!", + "text": "Dis tyd om saam te dink!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "Kom ons praat oor hierdie storie", + "SourceText": "Think", + "text": "Dink", "type": "template", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Dit het goed gewerk om hierdie keer ’n gevolg te gebruik, want...", + "SourceText": "It's time to think!", + "text": "Dis tyd om te dink!", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver het die gevolge bespreek toe hulle albei kalm was", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Hier is die vaardighede wat ons hierdie week geleer het!\n\nGebruik dit tuis en kry dit enige tyd in jou @global.parent_centre.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "They agreed on consequences together", - "text": "Hulle het saam oor die gevolge ooreengekom", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Haal diep asem.\n2. Kyk of die nuus sin maak.\n3. Vra waar hulle aan die nuus gekom het.\n4. Maak dubbel seker by ander mense/bronne wat jy vertrou.\n5. Dink of hierdie nuus sou kon help of eerder vrees by mense veroorsaak as jy dit deel.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver het kalm maar ferm gereageer toe@global.w_consequence_teen_boy_1 die reël oortree het", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Ons wil almal soms vir ons tieners sê \"Jy moet dit doen, of anders... moeilikheid!\", maar dikwels sal dit hulle nie reëls beter laat volg nie.\n\nIn plaas daarvan, kan jy jou tiener help om goeie besluite te neem deur jou vertroue in hulle te wys en met hulle te praat:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver het na @global.w_consequence_teen_boy_1 geluister", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "BESPREEK GEVOLGE", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Die gevolg was realisties en toepaslik", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Vra \"As jy dit doen, wat sou kon gebeur?\"", "type": "template", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Waarom het die gebruik van ’n gevolg hierdie keer goed gewerk?", + "SourceText": "If something goes well, praise your teen!", + "text": "As iets goed gaan, prys jou tiener!", "type": "template", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "Wat sou ’n kalm gevolg wees vir jou tieners wat tydens aandete met mekaar argumenteer? \n\nOnthou, dit moet: \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", + "SourceText": "REFLECT TOGETHER", + "text": "BESIN SAAM", "type": "template", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Om vir ’n maand geen vriende te mag sien nie", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "As iets verkeerd loop, vra \"Hoe sou jy dit anders kon doen?\"", "type": "template", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Dit mag dalk vir jou moeilik wees, en ook 'n te hewige straf!", + "SourceText": "START SMALL", + "text": "BEGIN KLEIN", "type": "template", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Om hul verjaarsdagplanne vir oor ’n maand te kanselleer", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Gee jou tiener aanvanklik klein verantwoordelikhede. As dit goed afloop, kan jy meer byvoeg om jou vertroue in jou tiener te wys.", "type": "template", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Dit is te ver in die toekoms, en ook te hewig!", + "SourceText": "MAKE TIME", + "text": "MAAK TYD", "type": "template", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Geen TV vanaand nie", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Sit tyd opsy om 'n gesprek te hê sonder afleidings.", "type": "template", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Perfek, dit klink regverdig en kan onmiddellik gebeur", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Vra jou tiener vrae en laat hulle toe om hulle sienings te deel sonder om hulle in die rede te val.", "type": "template", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Beplan ’n kalm gevolg vir jou tieners wat tydens aandete met mekaar argumenteer. Onthou dit moet:\n \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", + "SourceText": "WORK TOGETHER", + "text": "WERK SAAM", "type": "template", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Julle tuis oefenwerk hierdie week is om met jou tiener te gesels oor EEN negatiewe gevolg en EEN positiewe gevolg.\n\nGevolge moet: \nREGVERDIG wees (nie te hewige straf nie)\nONMIDDELLIK wees (doen dit dadelik)\nKONSEKWENT wees (elke keer dieselfde)", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Bespreek 'n spesifieke probleem, kom saam met oplossings vorendag, en doen dan albei wat julle ooreenkom.", "type": "template", "note": "" }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Negatiewe gedrag: Kom na die ooreengekome tyd huis toe.\n\nNegatiewe gevolg: Kan nie die volgende dag vriende sien nie.\n\nNegatiewe gedrag: Praat ongeskik. \n\nNegatiewe gevolg: Skryf ’n brief om verskoning te vra.\n \nPositiewe gedrag: Help met inkopies.\n\nPositiewe gevolg: ’n Ekstra 30 minute vir ’n lekker aktiwiteit van hul keuse. \n\nPositiewe gedrag: Help om jonger broers of susters op te pas.\n\nPositiewe gevolg: Een ekstra uur saam met vriende oor die naweek.", + "SourceText": "PRAISE", + "text": "PRYS", "type": "template", "note": "" }, { - "SourceText": "Great!", - "text": "Wonderlik!", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Bedank jou tiener vir wat hulle met jou deel en beklemtoon hoe dit julle albei help.", "type": "template", "note": "" }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Ek weet die lewe kan moeilik wees. Ek is trots op jou.\n\nHoe jy ook al voel, dit is wonderlik dat jy hier is!", + "SourceText": "Hear a caregiver's testimonial", + "text": "Luister na 'n versorger se getuigskrif", "type": "template", "note": "" }, { - "SourceText": "Using the app together", - "text": "Hoe om die app saam te gebruik", + "SourceText": "Read a caregiver's testimonial", + "text": "Lees 'n versorger se getuigskrif", "type": "template", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Dit is wonderlik om jou te sien!\n\nEerstens, kom ons help jou groep om aan die gang te kom.", + "SourceText": "Why @local.workshop_data.title?", + "text": "Hoekom @local.workshop_data.title?", "type": "template", - "note": "" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Stem saam oor jul grondreëls:\n* Op watter dag/dae en tyd/tye sal ons in die week bymekaarkom?\n* Wie sal die foon/fone hou tydens ons aktiwiteite?\n* Hoe kan ons seker maak dat almal openlik kan deel?\n* Wat kan ons doen sodat ons almal gerespekteerd voel?", + "SourceText": "Hear @global.topic_intro_name's message", + "text": "Hoor @global.topic_intro_name se boodskap", "type": "template", - "note": "" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "Jy kan altyd jou slypskooldag en jou groepnaam verander in die @global.weekly_workshop_options.", + "SourceText": "Read @global.topic_intro_name's message", + "text": "Lees @global.topic_intro_name se boodskap", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "Some rules that other groups made:", - "text": "’n Paar reëls wat ander groepe gemaak het:", + "SourceText": "Today's steps", + "text": "Vandag se stappe", "type": "template", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "* Dinsdag om 7nm. is ons @global.parent_app-tyd saam\n* Maak beurte om die foon vas te hou (1 aktiwiteit per persoon)\n* Aanvaar mekaar se ervarings. Ons is almal anders!\n* Maak beurte om te praat en te luister\n* Alle vrae is welkom\n* Wat ons deel, bly onder ons", + "SourceText": "Try it Together", + "text": "Probeer dit saam", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.\n\nOnthou, jy verdien elke keer ’n @global.parent_point as jy vir jouself sorg – jy maak saak!", + "SourceText": "Let's practice together.", + "text": "Kom ons oefen saam.", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Om ’n ouer te wees, kan baie moeilik wees. Soms voel dit asof ons kinders nooit na ons luister nie.\n\nMaar die wetenskap toon dat vertroue en liefde opgebou kan word deur elke dag net ’n paar minute se gefokusde een-tot-een-tyd met jou tiener deur te bring.", + "SourceText": "What does that mean?", + "text": "Wat beteken dit?", "type": "template", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Een-tot-een-tyd is wanneer jy op hulle fokus, sonder TV of fone. Laat hulle die leiding neem met wat julle doen of waaroor julle praat.\n\nDit is wonderlik as julle dit twintig minute per dag kan doen, maar selfs vyf minute per dag is regtig goed.", + "SourceText": "How can you help?", + "text": "Hoe kan jy help?", "type": "template", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Hallo,\n\nOns onderwerp vandag is een-tot-een-tyd met ons kinders.\n\nDit is belangrik om tyd met ons kinders deur te bring sodat hulle ons kan verstaan en sodat ons die geleentheid kry om hulle te verstaan.\n\nOnthou, ’n gesin wat mekaar goed verstaan, leef in harmonie.", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Begrip vir hoe jou tiener voel en hoe jy hulle kan ondersteun maak 'n groot verskil vir julle albei! Neem jou tiener waar en vra hoe hulle voel. Klik op 'n gesig hieronder om meer uit te vind:", "type": "template", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", + "SourceText": "Hopeful", + "text": "Hoopvol", "type": "template", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Selfsorgaktiwiteite\n* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", + "SourceText": "Resilient", + "text": "Veerkragtig", "type": "template", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Deel idees!\n\nWat kan jy doen om een-tot-een-tyd met jou tieners deur te bring?\n\nVoel jy asof jy GEEN TYD het nie en dat jy uitgeput is? Dink aan idees vir een-tot-een-tyd wat nie ekstra tyd verg nie, soos om saam na die winkel toe te stap.", + "SourceText": "Self-esteem", + "text": "Selfbeeld", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Dit kan ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat julle as ouers dit wil probeer.", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Tieners het doelwitte en drome vir die toekoms - die nabye en verre!", "type": "template", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "Kom ons dink aan maniere om een-tot-een-tyd met jou tiener te bestee.", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Vra jou tiener uit oor hulle doelwitte en drome, moedig hulle aan om te dink oor wat hulle vir hul toekoms wil hê, en maak saam 'n plan om te werk daaraan om dit te verwesenlik.", "type": "template", "note": "" }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "Wat kan jy doen om een-tot-een-tyd met jou tiener te deur te bring?", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Veerkragtige tieners kan moeilike situasies hanteer, aanpas by veranderinge, en probleme oplos wanneer hulle opduik.", "type": "template", "note": "" }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "Voel dit asof jy GEEN TYD het nie en dat jy uitgeput is? Onthou om ook aan maniere te dink wat nie ekstra tyd in beslag neem nie.", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Prys jou tiener dat hulle moeilikhede oorkom het en ondersteun hulle waar jy kan.", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Dit mag ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat jy as ouer dit wil probeer.", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "'n Tiener se selfbeeld is hoe hulle aan hulself dink.", "type": "template", "note": "" }, { - "SourceText": "DAY - Try to do it every day", - "text": "DAG – Probeer om dit elke dag te doen", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Moedig 'n positiewe selfbeeld aan, stel 'n voorbeeld deur nie gedurig 'n bespotting te maak of jouself te kritiseer nie. Ken jou tiener se sterkpunte en ondersteun hulle swakpunte.", "type": "template", "note": "" }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Kry 5 minute (of meer!) per dag wanneer jou tiener nie iets anders het wat hulle wil doen nie.", + "SourceText": "Lonely", + "text": "Eensaam", "type": "template", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "SPEEL – Laat jou tiener kies", + "SourceText": "Anxious", + "text": "Angstig", "type": "template", "note": "" }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Sê vir jou tiener dat jy graag tyd met hulle wil deurbring en dat hulle kan kies wat om te doen of waaroor om te gesels. Hulle mag dalk aan die begin dink dis vreemd, maar hulle sal hierdie spesiale tyd saam met jou begin geniet!", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Tieners kan alleen voel, selfs al is hulle gedurig tussen ander. Hulle mag voel dat hulle niemand het om mee te praat, vertrou of te deel nie.", "type": "template", "note": "" }, { - "SourceText": "STAY - Focus on your teen", - "text": "BLY – Fokus op jou tiener", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Vra vir jou tiener hoe dit met hulle gaan en probeer saam om nuwe genotvolle maniere vir interaksie met hulle vriende en familie te vind - veral tydens grendeltyd.", "type": "template", "note": "" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Skakel die TV af en sit fone eenkant. Kyk vir jou tiener. Knik, of sê “Ek verstaan” om te wys jy gee regtig aandag. Aanvaar wat hulle sê sonder om hulle te veroordeel.", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Angs is 'n normale emosie en dit kan ons help met die hantering van uitdagende situasies. Maar oormatige angs of bekommernis wat tieners daarvan weerhou om dinge te doen waarvoor hulle lief is, is 'n probleem.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Een-tot-een-tyd kan vir jou ook lekker wees! Dit kan jou selfs minder gespanne laat voel.", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Help jou tiener om te identifiseer wat hulle angstig maak en beraam saam 'n plan rondom hoe hulle kan reageer op angstige gedagtes.", "type": "template", "note": "" }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Bring hierdie week, elke dag wat jy kan, 5–20 minute een-tot-een-tyd met jou tiener deur.", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Om 'n ontspannende aktiwiteit saam te doen kan help!", "type": "template", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Onthou – wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", + "SourceText": "Depressed", + "text": "Depressief", "type": "template", "note": "" }, { - "SourceText": "Remember that YOU matter!", - "text": "Onthou dat JY saak maak!", + "SourceText": "Self-harm", + "text": "Selfbesering", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "Mooi so, dat jy ’n positiewe gevoel herken. Ek is bly om te hoor jy voel vandag goed!", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Om hartseer of teneergedruk te voel, om in 'n slegte bui te wees, is alles normale menslike emosies. Depressie is wanneer dit vir 'n lang tydperk aanhou en jou tiener se normale daaglikse aktiwiteite affekteer. Jou tiener mag hulpeloos voel en nie in staat of ongemotiveerd wees om enigiets te verander nie.", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "Mooi so, dat jy ’n slegte gevoel herken. Dis oukei om soms nie oukei te wees nie. Onthou, jy is nie alleen nie.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Probeer om professionele hulp te kry.", "type": "template", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "Dit is eenvoudig ongelooflik. Elkeen van hierdie gewoontes maak jou familie sterker. Wees trots daarop.", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Somtyds mag tieners hulself doelbewus beseer in 'n poging om negatiewe emosies soos woede, skuldgevoelens, leegheid, of self haat te oorkom. Dit mag deur angs of depressie veroorsaak word.", "type": "template", "note": "" }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Reëls help tieners om te verstaan wat van hulle verwag word. \n\nTieners sal meer geneë wees om reëls na te kom as jy reëls SAAM met jou tiener neerlê en hulle daarvoor prys!", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Indien jou tiener gewillig is om te verduidelik hoe selfbesering hulle beter laat voel, mag jy begin om te begryp wat die redes daarvoor is. Probeer om professionele hulp te kry.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Goeiedag, almal. \n\nVandag se onderwerp is reëls. \n\nReëls bevorder vrede binne die huishouding en begrip tussen gesinslede.\n\nReëls bevorder verantwoordelikhede vir elke lid van die gesin; daarom is dit belangrik om gesinsreëls te hê. \n\n’n Huishouding met gesinsreëls lewe in vrede.", + "SourceText": "A teen sometimes does something because they:", + "text": "'n Tiener sal soms iets doen omdat hulle:", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en bespreking – dit het nie gewerk nie… \n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "-Luister na hulle vriende\n-Wil doen wat ander doen\n-Meer dink aan 'nou' as aan 'later''\n-Lief is vir impulsiwiteit en versigtigheid vervelig mag vind\n-Nie bekommerd is oor risiko nie - mag selfs risiko gedrag geniet\n-Beperkte ondervinding het om op staat te maak\n-Gewillig is om enigiets te probeer - ongeag die gevolge daarvan", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en nadenke – dit het nie gewerk nie… \n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Dit kan help om dit in gedagte te hou wanneer jou tiener 'n verkeerde keuse maak. Praat met hulle en spandeer tyd saam sodat jy hulle kan help om volgende keer 'n beter keuse te maak!", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "Kom ons lees wat met @global.w_rules_teen_boy en sy @global.w_rules_female_caregiver_1 gebeur het:", + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "Jy sal moontlik gevra word om hierdie kode te deel met mense wat jou @global.parent_app-reis sal ondersteun.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: “Jy kom altyd laat by die huis!”\n\n@global.w_rules_teen_boy: “Nee, dis nie waar nie! Ek weet nie eens wat laat beteken nie! Hou op om so met my te neul.”", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Laas gesinchroniseer om: @local.sync_latest", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Watter spesifieke reël kan @global.w_rules_teen_boy en @global.w_rules_female_caregiver_1 saam neerlê?", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Hierdie toestel is nog nooit gesinkroniseer nie. Sinkroniseer om jou kode te toon.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "Kom ons kyk hoe @global.w_rules_female_caregiver_1 en @global.w_rules_teen_boy dit die volgende dag gedoen het:\n\n@global.w_rules_female_caregiver_1: “Ek wil hê jy moet pret hê, @global.w_rules_teen_boy, maar ek is ook bekommerd omdat jy laat uitbly. Weet jy hoekom?” \n\n@global.w_rules_teen_boy: “Omdat jy wil hê dat ek genoeg tyd vir my skoolwerk moet hê?”", + "SourceText": "Sync now", + "text": "Sinkroniseer nou", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: “Dis reg, en dit is ook nie veilig in hierdie omgewing om na sononder buite te wees nie. Wat dink jy is ’n goeie tyd vir jou om huis toe te kom?”", + "SourceText": "Syncing...", + "text": "Besig om te sinchroniseer...", "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “Ek kan 10nm. huis toe kom?” \n\n@global.w_rules_female_caregiver_1: “Dis ’n bietjie te laat, wat van 6nm.? Of iewers in die middel?”", + "SourceText": "Watch Together", + "text": "Kyk saam", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “Ek kan 6nm. huis toe kom op weeksaande en 10nm. op Vrydag en Saterdag?” \n\n@global.w_rules_female_caregiver_1: “Ja, uitstekend. Van nou af is ons huisreël dat jy op weeksaande 6nm. moet huis toe kom en 10nm. op Vrydag en Saterdag. Maar jy moet altyd saam met ’n vriend huis toe stap. Oukei?”", + "SourceText": "Let's watch a video together!", + "text": "Kom ons kyk saam na ’n video!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: “Oukei, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Baie dankie, @global.w_rules_teen_boy, dat jy gehelp het om saam ’n goeie reël voor te stel. Ek is trots daarop om te sien hoe verantwoordelik jy raak.”", + "SourceText": "Watch", + "text": "Kyk", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Die volgende dag...\n\n@global.w_rules_female_caregiver_1: “Dankie, @global.w_rules_teen_boy, dat jy betyds huis toe gekom het. Nadat jy jou skoolwerk klaargemaak het, kan ons jou gunstelingmaaltyd vir aandete hê.”", + "SourceText": "Let's watch a video!", + "text": "Kom ons kyk na ’n video!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "Making the rule together went well because...", - "text": "Om die reël saam neer te lê, het goed verloop omdat...", + "SourceText": "Options", + "text": "Opsies", "type": "template", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Hulle die redes vir die reël bespreek het\n* @global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy se voorstelle geluister het\n* Die reël duidelik, spesifiek en regverdig was \n* @global.w_rules_female_caregiver_1 vir @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", + "SourceText": "Welcome @fields.user_name", + "text": "Welkom, @fields.user_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy het geweet sy @global.w_rules_female_caregiver_1 waardeer hom, want...", + "SourceText": "It's great to see you again!", + "text": "Dis wonderlik om jou weer te sien!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* Sy het hom geprys\n* Sy het hom beloon toe hy die reël gevolg het", + "SourceText": "Welcome @fields.group_name", + "text": "Welkom, @fields.group_name", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Let's think about what happened in this story.", - "text": "Kom ons dink oor wat in hierdie storie gebeur het.", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Dis wonderlik om jou weer te sien! Kom ons begin met ’n liedjie vir gesinne van oraloor.", "type": "template", "note": "" }, { - "SourceText": "What went well here in making a rule together?", - "text": "Wat het hier goed gegaan met die neerlê van die reël?", + "SourceText": "Let's Slow Down", + "text": "Kom ons gaan ’n bietjie stadiger", "type": "template", "note": "" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Hulle het die redes vir die reël bespreek", + "SourceText": "How would you like to do this workshop?", + "text": "Hoe sou jy hierdie werksessie wou doen?", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 het na @global.w_rules_teen_boy se voorstelle geluister", + "SourceText": "Coming soon", + "text": "Binnekort beskikbaar", "type": "template", "note": "" }, { - "SourceText": "The rule was clear, specific and fair", - "text": "Die reël was duidelik, spesifiek en regverdig", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Ons sal ander ouerskapkwessies moet behandel voordat ons kan begin werk aan @local.workshop_data.title.\n\nJy kan die belangrikste hulpmiddels kry by @local.workshop_data.title via die @global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 het @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", + "SourceText": "My name", + "text": "My naam", "type": "template", "note": "" }, { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Dis reg, om reëls saam op ’n kalm en positiewe manier neer te lê, werk baie goed!", + "SourceText": "@global.weekly_workshop day", + "text": "@global.weekly_workshop dag", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "Hoe dink jy het @global.w_rules_teen_boy geweet sy@global.w_rules_female_caregiver_1 waardeer hom?", + "SourceText": "I do the workshops...", + "text": "Ek doen die slypskole...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "She praised him", - "text": "Sy het hom geprys", + "SourceText": "My group's name", + "text": "My groep se naam", "type": "template", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "Sy het hom beloon toe hy die reël gevolg het", + "SourceText": "My group is now doing the workshop...", + "text": "My groep doen nou die slypskool...", "type": "template", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Presies – ’n positiewe reaksie maak ’n groot verskil!", + "SourceText": "I am now doing the workshop...", + "text": "Ek doen nou die slypskool...", "type": "template", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Huisreëls help om ons kinders veilig te hou, en te verstaan wat van hulle verwag word. Wanneer jy ’n tiener betrek wanneer reëls neergelê word, is hulle meer geneë om die reëls na te kom.", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Hierdie vinnige vrae sal hierdie toep by jou behoeftes aanpas.", "type": "template", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "SPANWERK REËLS", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "Kom ons begin met ’n paar vrae oor jou en jou gesin.", "type": "template", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Beplan reëls SAAM met jou tiener. Begin eers met een nuwe reël – jy kan later nog een byvoeg. Bespreek die redes vir die reël en luister na hulle uitgangspunte.", + "SourceText": "We would love to know your first name or nickname:", + "text": "Ons sal graag jou voornaam of bynaam wil weet:", "type": "template", "note": "" }, { - "SourceText": "REAL RULES", - "text": "REALISTIES REËLS", + "SourceText": "Are you a woman or a man?", + "text": "Is jy 'n vrou of 'n man?", "type": "template", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "Maak dit realisties vir dit wat jou tiener kan doen en wees duidelik en spesifiek sodat daar geen misverstand is nie. Nie ‘betyds’ nie, maar wel ‘teen 7nm.’.", + "SourceText": "Woman", + "text": "Vrou", "type": "template", "note": "" }, { - "SourceText": "PRAISE RULES!", - "text": "REËLS VIR PRYS!", + "SourceText": "Man", + "text": "Man", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Prys jou tiener vir reëls wat hulle saam met jou maak en prys hulle omdat hulle daarby hou!", + "SourceText": "How old are you?", + "text": "Hoe oud is jy?", "type": "template", "note": "" }, { - "SourceText": "Online Safety", - "text": "Aanlyn veiligheid", + "SourceText": "Adults", + "text": "Volwassenes", "type": "template", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Reëls is belangrik om jou tieners veilig te hou – ook aanlyn. Daar is meer hieroor in die weeklikse slypskool oor die beplanning van veiligheid, maar kom ons kyk nou daarna!", + "SourceText": "Teens", + "text": "Tieners", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: “@global.w_rules_teen_girl, het jy jou huiswerk gedoen?”\n\n@global.w_rules_teen_girl: “Net ’n oomblik@global.w_rules_female_caregiver_2, ek kyk gou hierdie @global.teen_social_medium video klaar.”", + "SourceText": "Children", + "text": "Kinders", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: “Jy is regtig ’n uitstekende danser! Vertel my waarom jy daarvan hou.”\n\n@global.w_rules_teen_girl: “Al my vriende is daarop,@global.w_rules_female_caregiver_2. Ek het meer as 600 laaiks en 120 volgers.”", + "SourceText": "Babies", + "text": "Babas", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: “Ek is trots op hoe goed jy dans, @global.w_rules_teen_girl. Maar ons moet seker maak dat jy veilig is. \n\nEk weet jou vriende kyk na @global.teen_social_medium, maar met ’n oop rekening is daar ander mense wat na video’s van tieners kyk vir hul eie seksuele behoeftes. Soms kontak hulle tieners. Hulle gee voor om gaaf te wees, maar later dreig en misbruik hulle tieners.”", + "SourceText": "How many people are in your household?", + "text": "Uit hoeveel mense bestaan jou huishouding?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: “Kom ons kyk saam aanlyn hoe ons dit vir jou prettig, maar ook veilig kan maak. Kyk – jy kan jou rekening privaat maak en beheer wie jou kan volg.\n\nSo kan jy mense wat jy van jou skool en ons gemeenskap ken, aanvaar, maar nie mense wat jou aanlyn kontak nie.\n\nKan ons saam ’n reël maak dat jy @global.teen_social_medium kan gebruik, maar met ’n private rekening? Ek vertrou jou om te weet wie om te aanvaar!”", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "Jy kan die @global.weekly_workshops self doen OF jy kan ander familielede of vriende nooi om by jou aan te sluit – julle sal baie by mekaar leer. Dit hang van jou af!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: “Ek is trots op jou, @global.w_rules_teen_girl.”", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "Hoe sou jy jou @global.weekly_workshops wou doen?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Wat is een belangrike reël wat julle elkeen saam met julle tiener wil maak?\n* Wat dink jy sal jou tiener van daardie reël dink? \n\nOnthou, maak die reëls spesifiek en realisties!", + "SourceText": "Can you think of a name for your group?", + "text": "Kan jy aan ’n naam vir jou groep dink?", "type": "template", "note": "" }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Hier is party van die reëls wat ander gesinne gemaak het:", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "Watter dag van die week wil jy jou @global.weekly_workshops doen?", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Tiener kan buite speel nadat huiswerk klaar gedoen is\n* Alle gesinslede eet saam aandete\n* Tiener 1 was die skottelgoed op Sondag en Maandag, Tiener 2 op Dinsdag en Woensdag\n* Ons praat ordentlik en vriendelik met mekaar\n* Wanneer jy na musiek luister, moet jy oorfone gebruik", + "SourceText": "Monday", + "text": "Maandag", "type": "template", "note": "" }, { - "SourceText": "Let's practice making rules.", - "text": "Kom ons oefen om reëls te maak.", + "SourceText": "Tuesday", + "text": "Dinsdag", "type": "template", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Skryf een belangrike reël wat jy graag saam met jou tiener wil maak, neer – jy sal dit hierdie week as jou tuisoefening doen. \n\nWat sal hulle daarvan dink?", + "SourceText": "Wednesday", + "text": "Woensdag", "type": "template", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Lê hierdie week een reël saam met jou tiener neer. \n\nOnthou om jou tiener daarná te prys!", + "SourceText": "Thursday", + "text": "Donderdag", "type": "template", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "So bly om te hoor dit gaan goed met jou. Jy is ’n wonderlike ouer!", + "SourceText": "Friday", + "text": "Vrydag", "type": "template", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Jammer dat dit nie met jou goed gaan nie. Jy het goed gedoen om alles te probeer uitwerk. Niemand het ál die antwoorde nie, maar jy doen regtig jou bes!", + "SourceText": "Saturday", + "text": "Saterdag", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Jammer om te hoor dat dit nie met jou goed gaan nie. Jy het goed gedoen om elke dag op te staan en weer te probeer, selfs al is jy moeg. Dit wys regte moed en toewyding!", + "SourceText": "Sunday", + "text": "Sondag", "type": "template", "note": "" }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Stap 1: Vertel wat goed gegaan het en wat moeilik was", + "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou groep ontsluit. Dit laat julle toe om dit wat julle saam met julle gesinne geleer het, te probeer voordat julle die volgende vaardigheid opbou.", "type": "template", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "“Ek het soveel meer van my tiener se lewe geleer terwyl ons een-tot-een-tyd deurgebring het. Maar na die eerste dag wou my tiener net op sy foon speel.”", + "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou ontsluit. Dit laat jou toe om dit wat jy saam met jou gesin geleer het, te probeer voordat julle die volgende vaardigheid opbou.", "type": "template", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Stap 2: Bring idees!", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "Jy kan hierdie instellings altyd verander in jou @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "“Jy het goed gedoen deur te probeer! Miskien kan jy ’n paar ander lekker dinge voorstel wat jy saam met jou tiener kan doen.”\n\n“Ja, of julle kan iets saam op sy foon doen? Of hy kan vir jou wys hoe sy foon werk?”", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "Is jy seker jy wil al die werksessies ontsluit? As jy dit eers gedoen het, sal jy dit nie weer kan sluit nie", "type": "template", "note": "" }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Stap 3: Kies en probeer een!", + "SourceText": "Unlock Workshops", + "text": "Ontsluit werksessies", "type": "template", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Dankie vir daardie uitstekende idees! Ja, laat ek my tiener vra om my môre na skool te wys hoe sy foon werk. Kan een van julle nou voorgee om my tiener te wees, sodat ek kan oefen hoe om te vra?”", + "SourceText": "Using the app together", + "text": "Hoe om die app saam te gebruik", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Dink oor hoe jou tuis-aktiwiteite hierdie week gegaan het. \n\nNeem beurte om te bespreek:\n\n* Wat het goed gegaan en wat was ’n probleem?\n* Watter oplossings kan julle saam bedink?\n* Kies een oplossing en probeer dit later met jou tiener!\n\n(Of julle kan dit selfs nou oefen sodat dit later makliker sal wees!)", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Dit is wonderlik om jou te sien!\n\nEerstens, kom ons help jou groep om aan die gang te kom.", "type": "template", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Om iemand te prys, is ’n baie goeie vaardigheid vir ouerskap. \n\nAs ons tieners geprys word wanneer hulle iets goed doen, sal ons sien dat hulle meer en meer positiewe dinge sal doen!", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Stem saam oor jul grondreëls:\n* Op watter dag/dae en tyd/tye sal ons in die week bymekaarkom?\n* Wie sal die foon/fone hou tydens ons aktiwiteite?\n* Hoe kan ons seker maak dat almal openlik kan deel?\n* Wat kan ons doen sodat ons almal gerespekteerd voel?", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Goeiedag, almal. \n\nOns onderwerp vandag gaan daaroor om iemand te prys. \n\nDit is goed om ons kinders te prys wanneer hulle iets goed gedoen het, want dan sal hulle meer van daardie goeie gedrag wat ons wil sien, wys.\n\nEn ons moenie vergeet om onsself te prys as ons iets goed gedoen het nie!", + "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "text": "Jy kan altyd jou slypskooldag en jou groepnaam verander in die @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Uitwerking daarvan om iemand te prys\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "Some rules that other groups made:", + "text": "’n Paar reëls wat ander groepe gemaak het:", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Uitwerking daarvan om iemand te prys\n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Voorstelle om tuis te oefen", + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "* Dinsdag om 7nm. is ons @global.parent_app-tyd saam\n* Maak beurte om die foon vas te hou (1 aktiwiteit per persoon)\n* Aanvaar mekaar se ervarings. Ons is almal anders!\n* Maak beurte om te praat en te luister\n* Alle vrae is welkom\n* Wat ons deel, bly onder ons", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Deel met mekaar:\n\n*Wanneer laas het iemand jou bedank of gesê jy het iets goeds gedoen?\n* Hoe het dit jou laat voel?\n* Hoe voel dit as jy nie bedank of geprys word vir wat jy doen nie?\n\nAs ouers word ons gewoonlik nie genoeg bedank of geprys nie. Miskien kan jy vir jou tieners die regte voorbeeld stel en hulle eers prys wanneer hulle iets goed gedoen het!", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Bring hierdie week, elke dag wat jy kan, 5–20 minute een-tot-een-tyd met jou tiener deur.", "type": "template", "note": "" }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Dink aan die laaste keer wat iemand jou bedank het of gesê het jy het iets uitsonderlik gedoen.", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Onthou – wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", "type": "template", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "Hoe het dit jou laat voel?", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Baie ouers ervaar uitdagings om een-tot-een-tyd met hul tieners te spandeer.\n\nHier is die 8 grootste uitdagings volgens wat ouers ons vertel het hulle ondervind wanneer hulle een-tot-een-tyd met hul tiener beplan of deurbring. As jy een hiervan ondervind het of besord is dat jy dit sal ondervind, tik daarop om ’n moontlike oplossing te vind. Jy kan daarná op ander uitdagings tik en dit verken.", "type": "template", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Ouers word gewoonlik nie genoeg bedank of geprys nie.", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "Het jy enige uitdagings ervaar toe jy tyd met jou tiener wou deurbring?", "type": "template", "note": "" }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "Hoe laat dit jou voel as niemand “dankie” sê nie?", + "SourceText": "What challenge did you have when trying to spend time with your teen?", + "text": "Watter uitdaging het jy ervaar toe jy tyd met jou tiener wou deurbring?", "type": "template", "note": "" }, { - "SourceText": "Tired", - "text": "Moeg", + "SourceText": "I don’t have enough time.", + "text": "Ek het nie genoeg tyd nie.", "type": "template", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Jou tiener kan ook so voel. Dis hoekom hierdie week se ouerskaphulpmiddel eenvoudig maar belangrik is. Prys hulle vir dit wat hulle reg doen.", + "SourceText": "My teen does not want to spend time with me.", + "text": "My tiener wil nie tyd met my deurbring nie.", "type": "template", "note": "" }, { - "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "text": "Om iemand te prys, het baie trefkrag.\n\nKom ons kyk na die voorbeeld van @global.w_praise_female_caregiver_name en haar dogters:", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "My tiener wil net TV kyk of op sy/haar foon speel.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "text": "Wanneer @global.w_praise_female_caregiver_name besig is, baklei haar twee dogters dikwels. Maar vandag het haar ouer dogter nogal haar suster met haar skoolwerk gehelp!", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "My tiener wil dinge doen wat onveilig is of wat geld kos.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "text": "@global.w_praise_female_caregiver_name: “Dankie dat jy jou skoolwerk gedoen het en @global.w_praise_girl, dankie vir jou hulp met jou suster,@global.w_praise_teen_girl. Ek is so trots op jou!”", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "My tiener wil dinge doen wat ek fisies nie kan doen nie.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss this story.", - "text": "Kom ons bespreek hierdie storie.", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "My tiener het ’n kompeterende aktiwiteit gekies. Ek het gewen en sy/hy het kwaad geword.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Bespreek onder mekaar:\n\n* Hoe het dit @global.w_praise_female_caregiver_name se tieners laat voel om geprys te word?\n* Hoekom het sy hulle geprys?", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Ek het gesukkel om die een-tot-een-tyd te beëindig.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name het haar tieners geprys...", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Al my kinders wil gelyktydig een-tot-een-tyd met my hê.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Om hulle sover te kry om dit meer gereeld te doen\n* Om haar te help om haar werk klaar te kry \n* Om hulle goed te laat voel \n* Om haarself goed te laat voel", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "Ja, dit kan baie moeilik wees om gedurende die dag tyd te kry met werk, huistake en talle ander dinge.", "type": "template", "note": "" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Hoe het dit vir @global.w_praise_female_caregiver_name se tieners gevoel om geprys te word?", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Jammer dat jy daarmee gesukkel het. Dit kan ons sleg laat voel as ons kinders nie een-tot-een-tyd met ons wil deurbring nie.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "Why did she praise them?", - "text": "Hoekom het sy hulle geprys?", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Dink aan ’n tyd wanneer my tiener meer toegangklik is teenoor my, soos in die oggend of net voor slaaptyd.", "type": "template", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Om hulle sovêr te kry om dit meer gereeld te doen", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Sit langs my tiener as hulle iets doen wat hulle geniet en toon belangstelling in dit waarvan hulle hou.", "type": "template", "note": "" }, { - "SourceText": "To help her finish her work", - "text": "Om haar te help om haar werk klaar te kry", + "SourceText": "Do something fun with the whole family.", + "text": "Doen iets prettig saam met die hele gesin.", "type": "template", "note": "" }, { - "SourceText": "To make them feel good", - "text": "Om hulle goed te laat voel", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Uitstekend! Deur ’n tyd te kies wanneer jou tiener meer geselserig is, sal dit hulle help om goed te reageer op jou poging om uit te reik.", "type": "template", "note": "" }, { - "SourceText": "To make herself feel good", - "text": "Om haarself goed te laat voel", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Lekker! As jy saam met jou tiener na hul gunsteling-TV-program of sportwedstryd kyk, wys dit hulle dat jy omgee. Wees net geduldig; hulle sal mettertyd vir jou oopmaak!", "type": "template", "note": "" }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Al daardie dinge is waar! \n\nWanneer haar tieners gelukkig is, voel @global.w_praise_female_caregiver_name gelukkig. En sy het haar werk klaar gekry.", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Perfek! Soms kan dit makliker wees om te begin deur tyd saam met die hele gesin deur te bring. Op hierdie manier kan jou tiener mettertyd meer op hul gemak voel om een-tot-een-tyd saam met jou deur te bring.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "The same can work for you!", - "text": "Dieselfde kan vir jou werk!", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "Jammer dat jy daardie uitdaging gehad het. Kinders wil dikwels TV kyk of met ’n toestelletjie speel. Welgedaan dat jy geduldig was met jou tiener!", "type": "template", "note": "" }, { - "SourceText": "SEE IT", - "text": "SIEN DIT", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Stel prettige dinge voor wat ek en my tiener saam kan doen.", "type": "template", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Kyk uit vir enigiets wat jou tiener doen wat hulpvaardig of goed is, en prys hulle daarvoor. Hulle mag dit dalk nie wys nie, maar jy sal sien dat hulle daardie goeie ding weer sal doen. Dit sal hulle ook gerusstel dat jy dit raaksien en omgee.", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Soek iets leersaam om saam met my tiener op die toestelletjie te doen.", "type": "template", "note": "" }, { - "SourceText": "SAY IT", - "text": "SÊ DIT", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Vra my tiener om my te wys hoe hul foon/toestelletjie werk.", "type": "template", "note": "" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Wees entoesiasties – bedoel dit opreg wanneer jy dit sê!", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "Dis perfek! As jy inspirasie nodig het, is hier ’n paar idees van ander gesinne oor wat julle saam kan doen. Onthou, laat jou tiener kies.", "type": "template", "note": "" }, { - "SourceText": "REPEAT IT", - "text": "HERHAAL DIT", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Wonderlik! Daar is baie prettige en opvoedkundige apps op fone wat julle saam kan ontdek. Vra vrae, toon belangstelling en onthou om iets aangenaams te sê.", "type": "template", "note": "" }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Probeer elke dag iets kry waarvoor jy hulle bedank. Selfs iets baie klein.", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Lekker! Tieners is mal daaroor as jy belangstel in hul toestelletjie en as hulle iets wat hulle weet aan jou kan verduidelik. Dit is ’n goeie beginpunt!", "type": "template", "note": "" }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Jy kan ook ander volwassenes in jou huis prys. Let op hoe hulle reageer!", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Jy is nie alleen hierin nie. Baie ouers het soms ook hierdie uitdaging. Een-tot-een-tyd moet altyd veilig wees, en dit hoef niks te kos nie!", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "Kom ons oefen om iemand te prys.", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Verduidelik aan my tiener waarom hul voorstel nie veilig of moontlik is nie, en vra hulle vir ander idees.", "type": "template", "note": "" }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Deel met mekaar: \n\n* Waarvoor kan jy jou tiener prys? \n* Wat het iemand anders tydens hierdie werksessie goed gedoen? Sê vir hulle!\n* Hoe het dit jou laat voel om iemand te prys?\n* Hoe het dit jou laat voel om geprys te word?", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Stel ander prettige aktiwiteite voor wat ons saam kan doen.", "type": "template", "note": "" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Soms is dit moeilik om aan iets te dink waarvoor jy jou tiener kan prys! Hier is ’n paar idees van ander ouers:", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Fantasties! Dit is baie belangrik dat jou tiener verstaan waarom jy nie die aktiwiteit kan doen wat hulle voorgestel het nie. Vra hulle vir ander idees!", "type": "template", "note": "" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Wys goedhartigheid teenoor iemand \n* Maak hulle kamers skoon \n* Eet saam met die gesin \n* Groet ander gesinslede \n* Pas ander broers of susters op \n* Kom betyds huis toe \n* Wys bedagsaamheid \n* Sê ‘asseblief’ of ‘dankie’ \n* Gaan skool toe \n* Doen werkies of skoolwerk \n* Bewaar die vrede tydens etenstye", + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Dit is perfek! As jy inspirasie nodig het, kan jy voorstelle vind vir aktiwiteite: @data.parent_centre.relax_and_activities.location_text. Onthou, laat jou tiener die aktiwiteit kies!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Hierdie week se tuisoefening is om jou tiener een keer per dag te prys. Dit sal net 10 sekondes neem!", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Jammer om dit te hoor. Ons tieners kan teleurgesteld wees as ons nie kan doen wat hulle wil doen nie, soos sport of ander fisiese aktiwiteite. Maar onthou, die belangrikste is dat ons tyd saam met hulle deurbring. Daardie tyd is verskillend vir almal!", "type": "template", "note": "" }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Dis uiters belangrik om na jouself om te sien.", + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Kyk hoe my tiener die aktiwiteit doen en moedig hulle aan.", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Wonderlik, ek is so bly dit gaan goed. Hou so aan.", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Stel ander prettige aktiwiteite voor wat ons saam kan doen.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Neem ’n oomblik en wees beïndruk met wat jy bereik het, ten spyte van die talle ander dinge wat jy elke dag moet doen.", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Wonderlik! Selfs as jy toekyk in plaas van om die aktiwiteit saam te doen, kan jy jou belangstelling toon deur wat jou tiener doen, te beskryf en te prys!", "type": "template", "note": "" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Baie gesinne verkeer onder spanning weens geld, veral as tieners aanhoudend vir goed vra!\n\nWanneer ons saam ’n begroting opstel, kan ons ooreenkom oor hoe om te bestee EN te bespaar, om spanning te voorkom en ons gesin se doelwitte na te streef.", + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Dit is perfek! As jy inspirasie nodig het, kan jy voorstelle vind vir aktiwiteite: @data.parent_centre.relax_and_activities.location_text. Onthou, laat jou tiener die aktiwiteit kies!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Goeiedag, almal.\n\nVandag se onderwerp is begrotings. \n\nDit is belangrik om te begroot, maar dis selfs belangriker om die hele gesin by die opstel van ’n begroting te betrek.\n\nWanneer dit saam gedoen word, help dit om die vlak van begrip oor hoe julle as gesin geld bestee en hoeveel julle vir die gesin spaar, te verhoog, en julle kan selfs planne maak oor hoe julle as gesin kan spaar.", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Dit gebeur soms! Kompeterende speletjies kan ’n uitdaging wees vir tieners (en volwassenes!) as hulle sukkel met verloor.", "type": "template", "note": "" }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Storie – dit het nie gewerk nie...\n* Begroting-oefening\n* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het nie gewerk nie... \n* Bespreking oor opsies vir spaar\n* Besparing-oefening\n* Hulpmiddels: Hoe om te begroot en te bespaar \nDINK – KIES – BOU – BEPLAN\n* Voorstelle om tuis te oefen", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Stel ander aktiwiteite voor wat ons saam kan doen, in plaas van teen mekaar.", "type": "template", "note": "" }, { - "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "text": "Dit kan baie moeilik wees om elke maand met jou geld uit te kom. Baie gesinne het hierdie probleem!\n\nSluit @global.w_money_grandma in. Kom ons kyk:", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Speel die aktiwiteit in spanne sodat ek my tiener kan aanmoedig as ons span verloor.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "text": "@global.w_money_grandma: “Ek pas my kleinkinders, @global.w_money_teen_girl en @global.w_money_teen_boy, op vandat hul ouers oorlede is toe hulle jonk was. Ons sukkel dikwels met geld, aangesien ek net ’n klein toelaag kry.”", + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Onthou, laat jou tiener kies! Jy kan voorstelle kry vir aktiwiteite wat jy saam met jou tiener kan doen as jy dit nodig het: @data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "text": "@global.w_money_grandma: “Ek is onder soveel spanning. Ek het geen geld oor nie. En nou baklei ek met my tieners oor goed wat hulle wil hê – weer eens.”", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "As jy en jou tiener in dieselfde span is, kan jy hulle help om hul emosies te beheer as julle span verloor.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe. Jy benodig: \n\n– Papier (of ou koerante of ’n kartonboks) en penne\n– Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed te kry voor ons met die eerste stap begin.", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "Ja, die einde van een-tot-een-tyd kan soms moeilik wees.", "type": "template", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "’n Gesinsbegroting kan vir @global.w_money_grandma help – en vir JOU!", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Sê vir my tiener: “Ons het ’n minuut voor die einde van vandag se een-tot-een-tyd”, sodat my tiener voorbereid is.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe.", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Maak my tiener bewus van hoeveel tyd ek vir een-tot-een-tyd het en vra hulle om ’n horlosie dop te hou.", "type": "template", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "Jy benodig: \n* Papier (of ou koerante of ’n kartonboks) en penne\n* Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed bymekaar te kry voor ons met die eerste stap begin.", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Beplan een-tot-een-tyd net voor ’n ander aktiwiteit wat my tiener geniet.", "type": "template", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Dink oor waaraan ons elke maand ons geld bestee.", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Wonderlik! Deur jou tiener vooraf te laat weet, sal die einde van een-tot-een-tyd nie as ’n verrassing kom nie. Jy kan jou tiener ook daaraan herinner dat julle môre weer tyd saam sal deurbring.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Kry ’n stuk papier (of ou koerante of ’n kartonboks) en ’n pen.\n* Teken prentjies van al die goed waarop jy en jou gesin elke maand geld spandeer. \n* Skryf langs elke prentjie hoeveel elke ding elke maand kos. (Dis nie nodig om die syfers te deel as jy nie wil nie.)\n* Tel op hoeveel geld jy elke maand moet bestee.", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Uitstekend! Op hierdie manier het jou tiener die verantwoordelikheid om die tyd dop te hou en sal jy weet wanneer die tyd amper op is. Herinner hulle daaraan dat julle môre weer tyd saam sal deurbring.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Wonderlik! Jy is klaar met Stap 1!\n\nKom ons gaan voort!", + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Wonderlik! As julle voor ete tyd saam deurbring, kan jy vriendelik sê: “Een-tot-een-tyd is verby. Kom ons maak gereed vir aandete saam met die res van die gesin!”", "type": "template", "note": "" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* kos \n* water en elektrisiteit\n* klere \n* rekeninge \n* TV-intekening \n* toiletware \n* haarkapper \n* lugtyd\n* skoolgeld \n* vervoer\n* versekering/polisse \n* medisyne\n* vermaak/sport \n* huur \n* lenings \n* kerk", + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Dit gebeur met baie ouers. Dit kan moeilik wees om een-tot-een-tyd met ons tieners deur te bring as ons meer as een kind het.", "type": "template", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Praat saam oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Vra ’n ander volwassene of ouer broer of suster om gedurende die een-tot-een-tyd met my tiener na die jonger kinders om te sien.", "type": "template", "note": "" }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Mense sien dinge dikwels nie op dieselfde manier nie. Wanneer ons oor ons behoeftes en begeertes praat, verstaan ons mekaar beter en kan ons saam goeie keuses maak oor hoe om ons geld te bestee.\n\nKyk na jou lys van goed waarop julle geld bestee en bespreek:\n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Dink aan ’n tyd wanneer die ander kinders nie daar is nie en bring dan tyd met my tiener deur.", "type": "template", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Dink oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Beplan een-tot-een-tyd op ’n ander plek as by die huis.", "type": "template", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Kyk na jou lys van goed waarop julle geld spandeer en kies: \n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Perfek! Op hierdie manier kan jy jou onverdeelde aandag aan jou tiener gee sodat hulle gewaardeerd en geliefd voel.", "type": "template", "note": "" }, { - "SourceText": "Make a budget!", - "text": "Stel ’n begroting op!", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Uitstekend! Jy kan probeer om tyd saam met jou tiener deur te bring as die ander kinders al gaan slaap het of buite speel.", "type": "template", "note": "" }, { - "SourceText": "Make a budget as one big family!", - "text": "Stel ’n begroting op as een groot gesin!", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Wonderlik! Miskien kan julle saam winkel toe stap of na ’n sportwedstryd gaan kyk sodat julle kan gesels sonder dat die ander kinders jou aandag vra.", "type": "template", "note": "" }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Een persoon sal aanbied om sy/haar lys te deel. (as niemand aanbied nie, kan julle saam ’n nuwe lys opstel). \n* Neem rolle aan – party sal volwassenes wees, party sal tieners wees. \n* Besluit wat julle inkomste is vir die maand.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste @global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit saam hoeveel julle op iets wil bestee en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", + "SourceText": "DAY – Do it every day", + "text": "DAG – Doen dit elke dag", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "" }, { - "SourceText": "Make a budget as a family!", - "text": "Stel as gesin ’n begroting op!", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "SPEEL – Laat jou tiener die aktiwiteit kies", "type": "template", "note": "" }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Skryf neer wat julle inkomste vir die maand is.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste@global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit hoeveel julle op iets wil spandeer en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", - "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" - }, - { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Goeie werk, jy het die eerste 3 stappe voltooi!\n\nKom ons kyk hoe@global.w_money_grandma ’n plan met haar geld gemaak het, net soos jy nou doen:", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." - }, - { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "“Ek wil die beste toekoms vir my kleinkinders hê, maar ek weet nie waar om die geld te kry nie. Geldskieters is gevaarlik en dis so duur om hulle terug te betaal. \n\nEk behoort te spaar, maar dit voel onmoontlik!”", + "SourceText": "STAY – Give your teen all of your attention", + "text": "BLY – Gee jou tiener al jou aandag", "type": "template", "note": "" }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "“My doel is om seker te maak dat my kleinseun hoërskool toe kan gaan en my kleindogter haar droom van universiteit kan verwesenlik. Hoe kan ek geld spaar met die min wat ek het?”", + "SourceText": "Why was this tip helpful for you?", + "text": "Waarom was hierdie wenk vir jou nuttig?", "type": "template", "note": "" }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "“Ek weet – kom ons begin met ’n plan! Ek sal eers ’n begroting maak – ’n plan vir hoe ek my geld kan spaar. Dan sal ek net ’n bietjie geld op ’n slag spaar – ek sal selfs by ’n spaar- en leningsgroep aansluit.”", + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "“@local.choice_1” was nuttig omdat...", "type": "template", - "note": "" + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "“Ek moet met my kleinkinders praat sodat hulle goed kan kies waarop ons elke week net ’n bietjie minder sal bestee. Hulle sal my help dink aan goed wat ons graag wil hê, maar nie nodig het nie.”", + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "“@local.choice_2” was nuttig omdat...", "type": "template", - "note": "" + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "’n Paar jaar later:\n\n“Kyk, ons het ons drome verwesenlik! Ek het nie enige geld by vriende of geldskieters geleen nie. Deur elke week net ’n klein bietjie te spaar, het ek dit reggekry om vir @global.w_money_teen_boy se hoërskool te betaal en geld vir @global.w_money_teen_girl se universiteit te spaar. Ek is so trots hierop.”", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "“@local.choice_3” was nuttig omdat...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "note": "The string @local.choice_3 should not be translated." }, { - "SourceText": "What are your family savings goals?", - "text": "Wat is jou gesin se spaardoelwitte?", + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Om ’n spesifieke tyd hiervoor te hê, help my om te onthou.", "type": "template", "note": "" }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Sulke goeie doelwitte! \n\nSo ’n goeie doelwit! Wanneer ons saam ’n goeie begroting en spaarplan opstel, kan ons dit bereik en trots wees op onsself!", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Met ’n roetine kan ek en my tiener albei ons skedule vry hou.", "type": "template", "note": "" }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Ons het almal drome vir ons gesin, net soos@global.w_money_grandma. Deur elke maand ’n bietjie geld weg te sit, kan jy ook jou drome verwesenlik!", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Om elke dag tyd met my tiener deur te bring, help om vertroue by hulle/hom/haar op te bou.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Wat is jou gesin se spaardoelwitte?", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Ja, selfs 10 minute saam maak ’n groot verskil – dit laat dit maklik saam met jou werk en take in jou skedule pas!", "type": "template", "note": "" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "So ’n goeie doelwit! \n\nWanneer jy ’n goeie begroting en spaarplan opstel, kan jy dit bereik en trots wees op jouself!", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "As ek my tiener laat kies wat om te doen, bou dit hul selfvertroue op.", "type": "template", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Om te spaar is om nog ’n rede belangrik: noodgevalle! @global.w_money_grandma het dit ook algaande geleer:", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "As my tiener kies, is die kans groter dat hy/sy tyd saam sal wil deurbring.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Een nag was daar ’n vreeslike storm wat my dak gebreek het. Alles was onder water. Ek moes skielik geld kry om die dak te laat regmaak. Ek het net verlore gevoel.”", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "As ek my tiener laat kies, wys ek dat ek vir sy/haar belangstellings omgee.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about this story.", - "text": "Kom ons praat oor hierdie storie.", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Deur die voorstelle van my tiener te aanvaar, wys ek dat ek na hom/haar luister.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "Vir @global.w_money_grandma was dit ’n storm.\n\nWatter ander noodgevalle kan by ons opduik?", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "As ek iets goeds sê oor die my tiener se keuse, laat dit hulle gewaardeerd voel.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "Let's think about this story.", - "text": "Kom ons dink oor hierdie storie.", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Só waar! En as ons tieners kies, word hulle aangemoedig om ook op ander terreine van hul lewe verantwoordelikheid te neem.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "Vir @global.w_money_grandma was dit ’n storm.", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Deur onderbrekings te voorkom, wys ek my tiener dat hy/sy die belangrikste is.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Watter ander noodgevalle kan by jou gesin opduik?", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Selfs as ek nie by my tiener se aktiwiteite, soos sport, kan aansluit nie, kan ek hulle steeds aanmoedig.", "type": "template", "note": "" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Noodgevalle kan in enige gesin opduik. Om vir hierdie noodgevalle te spaar VOOR hulle gebeur, voorkom mens baie skielike bekommernis en spanning!", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Indien ek oplettend is, kan ek soveel leer oor my tiener se belangstellings, sienings en vermoëns.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "Kom ons praat oor die verskillende maniere waarop ons kan spaar.", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "Ja! As ons ons tieners ons volle aandag gee, sal hulle waarskynlik dieselfde vir ons doen as ons hulle weer iets vra!", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Bespreek saam:\n* Op watter verskillende maniere kan ons spaar?\n* Wat is die voor- en nadele van elke spaaropsie?\n\nOm elke opsie goed te verstaan, sal jou help om te besluit wat die beste spaaropsie vir jou gesin is.\n\nWatter spaaropsie jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Jou doelwit was om een-tot-een-tyd saam met jou tiener deur te bring.", "type": "template", "note": "" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "Kom ons dink aan verskillende maniere hoe ons kan spaar.", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "Welgedaan! Jy het oplossings vir jou uitdagings gesoek. Gaan probeer dit. Jou verhouding met jou tiener sal sterker en sterker word!", "type": "template", "note": "" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Daar is verskillende maniere hoe ons kan spaar: tuis, om goed te koop wat ons later kan verkoop, by ’n bank, of in ’n spaargroep.\n\nDink aan die voor- en nadele van elke spaaropsie.", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Om ’n ouer te wees, kan baie moeilik wees. Soms voel dit asof ons kinders nooit na ons luister nie.\n\nMaar die wetenskap toon dat vertroue en liefde opgebou kan word deur elke dag net ’n paar minute se gefokusde een-tot-een-tyd met jou tiener deur te bring.", "type": "template", "note": "" }, { - "SourceText": "What is the best savings option for your family?", - "text": "Wat is die beste spaaropsie vir jou gesin?", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Een-tot-een-tyd is wanneer jy op hulle fokus, sonder TV of fone. Laat hulle die leiding neem met wat julle doen of waaroor julle praat.\n\nDit is wonderlik as julle dit twintig minute per dag kan doen, maar selfs vyf minute per dag is regtig goed.", "type": "template", "note": "" }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Watter spaarplan jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Hallo,\n\nOns onderwerp vandag is een-tot-een-tyd met ons kinders.\n\nDit is belangrik om tyd met ons kinders deur te bring sodat hulle ons kan verstaan en sodat ons die geleentheid kry om hulle te verstaan.\n\nOnthou, ’n gesin wat mekaar goed verstaan, leef in harmonie.", "type": "template", "note": "" }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Beplan hoe jy geld kan spaar, sodat jy noodgevalle kan hanteer en jou gesin se doelwitte kan bereik!", + "SourceText": "Have you spent time with your teen already?", + "text": "Het jy al tyd saam met jou tiener deurgebring?", "type": "template", "note": "" }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "As jy selfs net ’n klein bedraggie vir die toekoms of vir ’n noodgeval kan spaar, sal dit oor tyd ’n groot verskil maak. \n* Voeg ’n sirkel by en noem dit “noodgevalle”.\n* Voeg ’n sirkel by en noem dit “gesin se doelwitte”.\n* Probeer nou jou geld rondskuif sodat jy elke maand ’n bietjie vir elk hiervan kan spaar.", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Dankie dat jy soveel moeite doen om ’n beter ouer te wees. Jy is geliefd en gewaardeer!", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou groep verdien om geprys te word, of hoe?", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Om tyd met jou tiener deur te bring, help om vertroue tussen julle op te bou.\n\nGaan nou voort met jou@global.parent_app-reis – jy en jou gesin sal goeie resultate sien.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou gesin verdien om geprys te word, of hoe?", + "SourceText": "First @global.weekly_workshop!", + "text": "Eerste @global.weekly_workshop!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – onthou om hierdie oefening weer saam met jou ander gesinslede te doen – as julle saam oor ’n plan ooreenkom, sal dit ’n reuseverskil maak!", + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Hallo, @fields.user_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Step 1: THINK", - "text": "Stap 1: DINK", + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Hallo, @fields.group_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "What do we spend on now?", - "text": "Waarop bestee ons nou ons geld?", + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nJou @local.workshop_data.in_text_title is gereed vir jou!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "THINK Activity", - "text": "DINK-aktiwiteit", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dit sal nie lank neem nie, en jy sal waardevolle inligting kry. \n\nWelgedaan dat jy ’n beter ouer probeer wees. Môre kan jy toegang tot ’n nuwe slypskool kry.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Step 2: CHOOSE", - "text": "Stap 2: KIES", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot ’n nuwe werksessie kry om jou te help ontspan en nuwe vaardighede om te geniet en aan te leer!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Talk together about needs and wants", - "text": "Praat met mekaar oor behoeftes en begeertes", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "Kom ons dink aan maniere om een-tot-een-tyd met jou tiener te bestee.", "type": "template", "note": "" }, { - "SourceText": "CHOOSE Activity", - "text": "KIES-aktiwiteit", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "Wat kan jy doen om een-tot-een-tyd met jou tiener te deur te bring?", "type": "template", "note": "" }, { - "SourceText": "Step 3: BUILD", - "text": "Stap 3: BOU", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "Voel dit asof jy GEEN TYD het nie en dat jy uitgeput is? Onthou om ook aan maniere te dink wat nie ekstra tyd in beslag neem nie.", "type": "template", "note": "" }, { - "SourceText": "Make your own budget", - "text": "Stel jou eie begroting op", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Dit mag ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat jy as ouer dit wil probeer.", "type": "template", "note": "" }, { - "SourceText": "BUILD Activity", - "text": "BOU-aktiwiteit", + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "Jy is ’n ster!\n\nErken elke dag iets wat jy goed gedoen het. Beloon jouself met iets wat jou gelukkig maak. En haal diep asem om te ontspan.\n\nOnthou, jy verdien elke keer ’n @global.parent_point as jy vir jouself sorg – jy maak saak!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Step 4: PLAN", - "text": "Stap 4: BEPLAN", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", "type": "template", "note": "" }, { - "SourceText": "Emergencies and family goals", - "text": "Noodgevalle en gesinsdoelwitte", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Selfsorgaktiwiteite\n* Idees vir een-tot-een-tyd\n* Hulpmiddels: hoe om een-tot-een-tyd deur te bring\nDAG – SPEEL – BLY\n* Voorstelle vir tuisoefening", "type": "template", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "BEPLAN-aktiwiteit", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Deel idees!\n\nWat kan jy doen om een-tot-een-tyd met jou tieners deur te bring?\n\nVoel jy asof jy GEEN TYD het nie en dat jy uitgeput is? Dink aan idees vir een-tot-een-tyd wat nie ekstra tyd verg nie, soos om saam na die winkel toe te stap.", "type": "template", "note": "" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Stel weer ’n begroting op – hierdie keer SAAM met jou tiener en gesin!\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Dit kan ’n rukkie neem om aan een-tot-een-tyd gewoond te raak, maar hoe meer jy dit doen, hoe makliker raak dit!\n\nDis ongelooflik dat julle as ouers dit wil probeer.", "type": "template", "note": "" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Stel ’n begroting saam met jou tiener en jou gesin op.\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "SourceText": "DAY - Try to do it every day", + "text": "DAG – Probeer om dit elke dag te doen", "type": "template", "note": "" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Hersien jou begroting saam met jou tiener en gesin. Dit sal almal daaraan herinner dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Kry 5 minute (of meer!) per dag wanneer jou tiener nie iets anders het wat hulle wil doen nie.", "type": "template", "note": "" }, { - "SourceText": "Steps to make a budget", - "text": "Stappe om ’n begroting op te stel", + "SourceText": "PLAY - Let your teen choose", + "text": "SPEEL – Laat jou tiener kies", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Wonderlik, ek is so bly! Goeie werk, hou so aan.", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Sê vir jou tiener dat jy graag tyd met hulle wil deurbring en dat hulle kan kies wat om te doen of waaroor om te gesels. Hulle mag dalk aan die begin dink dis vreemd, maar hulle sal hierdie spesiale tyd saam met jou begin geniet!", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Jammer dat dinge moeilik gaan. Alle gesinne sukkel. Ons is hier om te help!", + "SourceText": "STAY - Focus on your teen", + "text": "BLY – Fokus op jou tiener", "type": "template", "note": "" }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "Wat ook al vandag ‘verkeerd’ gegaan het, laat dit gaan en probeer môre weer. Dis oukei!", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Skakel die TV af en sit fone eenkant. Kyk vir jou tiener. Knik, of sê “Ek verstaan” om te wys jy gee regtig aandag. Aanvaar wat hulle sê sonder om hulle te veroordeel.", "type": "template", "note": "" }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Fokus op die positiewe! \n\nOm vir ons tieners te sê wat ons WIL hê hulle moet doen, werk beter as om vir hulle te sê om OP TE HOU met iets wat hulle doen.\n\nJy sal die verskil sien.", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Een-tot-een-tyd kan vir jou ook lekker wees! Dit kan jou selfs minder gespanne laat voel.", "type": "template", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Goeiedag, goeiedag, almal.\n\nOns onderwerp vandag is positiewe opdragte.\n \nDit is belangrik om positiewe opdragte aan ons kinders te gee,want wanneer ons vir hulle positiewe opdragte gee, weet hulle wat ons van hulle verwag om te doen, en hulle doen dit soos ons wil hê hulle moet dit doen.\n\nSo, uiteindelik hou dit almal gelukkig.", + "SourceText": "Great!", + "text": "Wonderlik!", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Gedagte-eksperiment\n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Probeer dit! \n* Voorstelle om tuis te oefen", + "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", + "text": "Ek weet die lewe kan moeilik wees. Ek is trots op jou.\n\nHoe jy ook al voel, dit is wonderlik dat jy hier is!", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Gedagte-eksperiment. \n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Voorstelle om tuis te oefen", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Ons is so trots op julle. Julle het wilskrag, moed en liefde vir jul gesinne gewys. Ouers is ongelooflik. Julle is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier julself!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a thought experiment!", - "text": "Kom ons doen ’n gedagte-eksperiment!", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Ons is so trots op jou. Jy het wilskrag, moed en liefde vir jou gesin gewys. Ouers is ongelooflik. Jy is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier jouself!", "type": "template", "note": "" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "MOENIE AAN ’N OLIFANT DINK NIE \n\nWaaraan dink jy?", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer.\n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie en beplan jou toekomstige ouerondersteuning.", "type": "template", "note": "" }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Jy HET waarskynlik aan ’n olifant gedink...\n\n‘Moenie’-opdragte laat tieners juis aan daardie ding dink. \n\nSoms verstaan hulle nie wat ons WEL van hulle verwag nie. \n\nHulle hou ook nie daarvan om aangesê te word om iets nie te doen nie (is ons nie maar almal so nie?)", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer. \n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie, en beplan jou toekomstige @global.parent_app-steun.", + "type": "template", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Goeiedag, almal.\n\nDie onderwerp vir vandag is viering en volgende stappe.\n\nDit was ongelooflik. Dit was wonderlik om julle op hierdie reis te hê. Vandag vier ons ons reis saam.\n\nVandag vier ons alles wat ons deur die hele ervaring geleer het.", "type": "template", "note": "" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "NOU, DINK AAN ’N JAGLUIPERD!\n\nWaaraan dink jy?", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Vandag gaan jy vier, terugkyk en vorentoe kyk:", "type": "template", "note": "" }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "Dis reg! Positiewe, duidelike opdragte help tieners om te fokus op wat hulle behoort te doen. \n\nTieners sal so ook meer voel hulle word gerespekteer, en sal meer geneig wees om te luister.", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "* Nadenke en bespreking\n* Hulpmiddels: Hoe om mekaar te ondersteun\nKOM BYMEKAAR – SKAKEL – STUUR ’N TEKS – DEEL\n* Beplanning van ondersteuning", "type": "template", "note": "" }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "Kom ons kyk wat gebeur as @global.w_instruct_female_caregiver vir @global.w_instruct_teen_girl sê “MOENIE”:", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Vandag vier jy, en dink na oor jou ervarings.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver was besig om huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriend dansbewegings geoefen het.\n \n@global.w_instruct_female_caregiver: “Moenie so mors terwyl ek die huis skoonmaak nie. Jy is in die pad!”", + "SourceText": "End of programme check-in", + "text": "Programeinde check-in", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Maar ek moet oefen vir die skool se kompetisie. Jy laat my nooit toe om iets te doen nie.” \n\n@global.w_instruct_female_caregiver: “Moenie teëpraat nie!”", + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "Jy het @global.parent_app vir die afgelope maande gebruik, maar ouerskap van ’n tiener is ’n langdurige proses! Die volgende vrae oor jou ouerskap-ervarings sal ons help om jou ouerskap te assesseer.\n\nWees eerlik. Onthou dat miljoene ouers soos jy voel, en ons almal verdien ondersteuning. Jy is nie alleen nie!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Arrg!! Hoekom word daar altyd op my geskree????”\n\n @global.w_instruct_female_caregiver by haarself: “Daardie kind veroorsaak altyd moeilikheid.”", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "Dit kom voor dat jy reeds die programeinde check-in voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "Kom ons bespreek wat in hierdie storie gebeur het.", + "SourceText": "Let's talk about what has changed.", + "text": "Kom ons gesels oor wat verander het.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Bespreek onder mekaar.\n\n* Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?\n* Wat kon @global.w_instruct_female_caregiver verskillend gedoen het?", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Bespreek onder mekaar:\n* Wat het in jou gesin verander?\n* Wat het jy gedoen waarop jy trots is?\n\nOnthou om mekaar te prys en aan te moedig!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver kon...", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Beplan hoe julle mekaar vorentoe sal ondersteun. \n\nJy kan ander gesinne se idees gebruik, of jou eie idees uitdink!", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* Eers iets moois gesê het \n* Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het\n* Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Jy en jou gesin het so baie geleer. Kom ons dink terug en kyk wat verander het.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?", + "SourceText": "Reflect", + "text": "Dink na", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Sad", - "text": "Hartseer", + "SourceText": "Listen and reflect", + "text": "Luister en dink na", "type": "template", "note": "" }, { - "SourceText": "Confused", - "text": "Verward", + "SourceText": "Read and reflect", + "text": "Lees en dink na", "type": "template", "note": "" }, { - "SourceText": "Angry", - "text": "Kwaad", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Sluit oë en ontspan.\n\nDink aan jou gesinslewe voordat jy jou reis met hierdie toep begin het.\n\nDink terug aan vaardighede wat jy aangeleer het:\n* Selfsorg\n* Een-tot-een-tyd\n* Lof\n* Positiewe instruksies\n* Hantering van spanning\n* Gesinsbegroting\n* Reëls\n* Kalm gevolge\n* Probleemoplossing\n* Tienerveiligheid\n* Hantering van krisisse\n\nDink na oor die reis – hoe was dit vir jou om:\n* Idees en ondervindings te deel\n* Na te dink oor die stories, en daaruit te leer\n* Vaardighede saam met jou tiener te oefen\n\nHet enigiets vir jou en jou gesin verander?\n\nWat het jy nodig om die vaardighede aan te hou gebruik?", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "Wat kon @global.w_instruct_female_caregiver anders gedoen het?", + "SourceText": "MEET", + "text": "KOM BYMEKAAR", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Said something nice first", - "text": "Eers iets moois gesê het", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Kom gereeld bymekaar om aan mekaar ouerondersteuning te gee.", "type": "template", "note": "" }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het", + "SourceText": "CALL", + "text": "SKAKEL", "type": "template", "note": "" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "Wees ‘ouerskapsvriende’ wat mekaar kan skakel wanneer julle ontsteld is en nie weet wat om te doen nie.", "type": "template", "note": "" }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Dankie dat jy saam gedink het! \n\nKom ons gaan terug in tyd en kyk wat gebeur as @global.w_instruct_female_caregiver ’n positiewe opdrag gee:", + "SourceText": "TEXT", + "text": "STUUR TEKSBOODSKAPPE", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver was besig om die huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriende dansbewegings geoefen het. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, dis lekker om te sien hoe jy jou dansbewegings saam met jou vriend oefen. Gaan doen dit asseblief buite sodat ek die huis kan klaar skoonmaak. Dan kan jy vir my jou dans wys.”\n\n@global.w_instruct_teen_girl: “Okei, @global.w_instruct_female_caregiver!”", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Stuur elke week vir mekaar teksboodskappe om dit wat julle goed gedoen het, te deel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: “Dankie dat jy buite geoefen het terwyl ek klaar skoongemaak het, @global.w_instruct_teen_girl. Nou het ek tyd om na jou dans te kyk.”", + "SourceText": "SHARE", + "text": "DEEL", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: “Jinne, @global.w_instruct_teen_girl! Jy dans baie goed !”", + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Deel @global.parent_app en help ander gesinne om hul reis te begin.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's discuss what happened this time.", - "text": "Kom ons bespreek wat hierdie keer gebeur het.", + "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", + "text": "Wonderlik! Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Bespreek saam: \n\n* Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?\n* Hoekom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", + "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", + "text": "Ons is jammer dis ’n moeilike dag. Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "It worked better this time because...", - "text": "Dit het hierdie keer beter gewerk, want...", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar\n* @global.w_instruct_female_caregiver kon kalm bly\n* @global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 het laat huis toe gekom.\n\nWatter gevolg sal hier help?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Gevolge is nie heeltemal dieselfde as straf nie: hulle gee ons tieners ’n kans om vir hul optredes verantwoordelikheid te leer neem.\n\nEn dit is meer beheersd EN effektief as om te slaan of te skree!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Waarom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 en @global.w_consequence_teen_girl_2 baklei oor ’n foon.\n\nWatter gevolg sal hier help?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver kon kalm bly", + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Gevolge is meer suksesvol as jy dit vooraf met tieners bespreek en met die tieners ooreenkom, voordat jy dit toepas.\n\nEn gevolge is nie net negatief nie... Julle kan ook ooreenkom op GOEIE gevolge vir GOEIE optredes om meer positiewe gedrag te sien!", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Positiewe opdragte kan met jou tiener ook werk!", + "SourceText": "What consequence would help here?", + "text": "Watter gevolg sal hier help?", "type": "template", "note": "" }, { - "SourceText": "GET REAL", - "text": "KOM BY", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 help om die skottelgoed te was.\n\nWatter positiewe gevolge sal hier help?", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "Kan jou tiener werklik doen wat jy nou gaan vra? Dit mag dalk vir hulle onmoontlik wees om die hele dag stil te sit en lees, maar die halfuur wanneer jy dit regtig nodig het, is realisties.", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Julle tuis oefenwerk hierdie week is om met jou tiener te gesels oor EEN negatiewe gevolg en EEN positiewe gevolg.\n\nGevolge moet: \nREGVERDIG wees (nie te hewige straf nie)\nONMIDDELLIK wees (doen dit dadelik)\nKONSEKWENT wees (elke keer dieselfde)", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE", - "text": "WEES POSITIEF", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Negatiewe gedrag: Kom na die ooreengekome tyd huis toe.\n\nNegatiewe gevolg: Kan nie die volgende dag vriende sien nie.\n\nNegatiewe gedrag: Praat ongeskik. \n\nNegatiewe gevolg: Skryf ’n brief om verskoning te vra.\n \nPositiewe gedrag: Help met inkopies.\n\nPositiewe gevolg: ’n Ekstra 30 minute vir ’n lekker aktiwiteit van hul keuse. \n\nPositiewe gedrag: Help om jonger broers of susters op te pas.\n\nPositiewe gevolg: Een ekstra uur saam met vriende oor die naweek.", "type": "template", "note": "" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Glimlag, kyk in hulle oë en gebruik positiewe woorde. Prys hulle sodra hulle begin doen wat jy vra!", + "SourceText": "introduce a consequence together", + "text": "kom oor 'n gevolg ooreen", "type": "template", "note": "" }, { - "SourceText": "GET CLEAR", - "text": "WEES DUIDELIK", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "Het jy enige uitdagings ervaar toe julle probeer het om saam oor ’n gevolg oor een te koml?", "type": "template", "note": "" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Ons weet dikwels in ons koppe wat ons wil hê, maar ons sê dit nie duidelik genoeg nie. Sê presies wat jy wil hê jou tiener moet doen. Probeer ‘kom asseblief teen 7nm. huis toe’ in plaas van ‘kom betyds huis toe’.", + "SourceText": "What was difficult for you about introducing a consequence with your teen?", + "text": "Wat was vir jou moeilik toe jy ’n gevolg saam met jou tiener in te stel?", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "Kom ons oefen REGTE, POSITIEWE en DUIDELIKE opdragte. Oefening sal jou help om suksesvol te wees met jou tiener!", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Ek het baie kwaad geword toe my tiener die reël gebreek het.", "type": "template", "note": "" }, { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Kies twee mense uit jou groep:\n* Een persoon gee voor om ’n tiener te wees\n* Die ander een gee voor om die tiener se ouer te wees\n* “Ouer”: Gee jou tiener ’n positiewe opdrag terwyl jy hom/haar aanmoedig en prys\n* “Tiener”: Reageer soos wat jy dink ’n tiener hierop sal reageer \n\nBespreek saam hoe dit gegaan het:\n* Hoe het dit jou as “ouer” en as “tiener” laat voel?\n* Kon jy enigiets op ’n beter manier gedoen het?\n\nGee elkeen ’n kans om die “ouer” en die “tiener” te wees, as dit moontlik is. Oefening bring sukses!", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Wanneer ons ’n pouse neem voordat ons reageer, help dit ons om te kalmeer en beter te reageer.\n\nVolgende keer dat jou tiener jou kwaad maak, probeer om eers ’n pouse te neem. Selfs ’n paar diep asemhalings kan ’n groot verskil maak!", "type": "template", "note": "" }, { - "SourceText": "Examples of positive instructions:", - "text": "Voorbeelde van positiewe opdragte:", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "My kind of tiener het baie kwaad geword vir my nadat ek die gevolg ingestel het.", "type": "template", "note": "" }, { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ek hou van jou musiek. Kan jy dit sagter stel tydens aandete sodat ons kan gesels? Dankie – ek waardeer dit regtig. \n* Dis baie mooi musiek. Wie is die sanger? Skakel asb die musiek af wanneer jy by die huis inkom. Jy kan dit sag in jou kamer speel as jy wil. Dankie!", + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", + "text": "Wanneer jou tiener kwaad word, moet jy dalk wegloop totdat julle albei kalm is.\n\nMaak seker dat jou gevolg regverdig en redelik is. Luister na jou tiener se verduideliking, en maak seker dat jy ’n “veiligheid-amnestie” gee as hulle ’n reël om veilig te bly, gebreek het.", "type": "template", "note": "" }, { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Hierdie week se tuisoefeninge is om vir jou tiener positiewe opdragte te gee.\n\nOnthou – KOM BY, WEES POSITIEF, WEES DUIDELIK = KRY PRESIES WAT JY WIL HÊ (sover dit met ’n tiener moontlik is!)", + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Ek het die gevolg ingestel sonder om dit eers met my tiener te bespreek.", "type": "template", "note": "" }, { - "SourceText": "We care about you, and how life is treating you.", - "text": "Ons gee om vir julle en hoe die lewe julle behandel.", + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "Kan jy ’n gevolg maak vir as dit weer gebeur? Wanneer ons saam met ons tieners ’n gevolg vasstel, sal die resultaat meer realisties wees en ons tieners sal meer gewillig en in staat wees om die reël te volg.", "type": "template", "note": "" }, { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "Jy is ’n ster. En jy maak ’n werklike verskil. Wees trots op jouself.", + "SourceText": "I forgot to follow through with the consequence.", + "text": "Ek het vergeet om die gevolg deur te voer.", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Jammer dat dinge vandag nie maklik is nie. Alle ouers het sulke dae.", + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Ons almal maak foute! Hoe meer konsekwent ons met ons gevolge is, hoe meer sal ons kinders geneig wees om in die toekoms positief op te tree.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Maak jou oë toe, asem in, en weet dat alles wat jy gedoen het, baie belangrik is.", + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Selfs met die gevolg, volg my tiener nog nie die reël nie.", "type": "template", "note": "" }, { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Elke gesin kom voor uitdagings te staan, maar wanneer ons saamwerk, kan ons probleme op ’n doeltreffende en vreedsame manier hanteer. \n\nWat ’n wonderlike vaardigheid wat jou tiener ook kan aanleer!", + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "As jou tiener die reëls bly breek, moet jy dalk meer positiewe tyd met hulle spandeer.\n\nProbeer om voort te gaan met jou ander doelwitte – soos selfsorg, een-tot-een-tyd en lof. Al hierdie vaardighede sal bydra om jou tiener meer geliefd en veilig te laat voel... en jy sal minder gestres wees!", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Goeiedag, almal.\n\nVandag se onderwerp is probleemoplossing. \n\nOns weet almal dat daar tye in die lewe is wanneer ons voor probleme te staan kom. Ons weet ook almal op ’n manier dat, wanneer ons onsself in hierdie situasies bevind, dit moeilik is om aan onmiddellike positiewe oplossings te dink.\n\nDaarom is dit belangrik dat, wanneer ons voor probleme te staan kom, ons ’n blaaskans neem, asemhaal, kalm bly en dink aan vaardighede wat ons vir probleemoplossing kan gebruik.\n\nOnthou om ons tieners in te sluit wanneer ons probleme oplos. Dit sal hulle help om verantwoordelik te raak en te leer hoe om hul eie probleme in die toekoms op te los.", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Ons het net ’n negatiewe gevolg daargestel, nie ’n positiewe gevolg nie.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en bespreking – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Dit kan soms moeilik wees om aan positiewe gevolge te dink. Positiewe gevolge sal jou tiener aanmoedig om meer verantwoordelikheid te neem, en jy sal die verskil sien!", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Storie en nadenke – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en nadenke – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "My tiener het ’n pakslae as negatiewe gevolg voorgestel.", "type": "template", "note": "" }, { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "Kom ons kyk wat met @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 gebeur het toe @global.w_solve_teen_girl ’n foon by ’n seun gekry het...’n foon!", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, waar het jy daardie ding gekry?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 het dit vir my gekoop. Dis ’n lekker foon, @global.w_solve_female_caregiver_1. Dit neem wonderlike foto’s!”", + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Tieners is dalk daaraan gewoond dat ’n pakslae die enigste gevolg is as die reëls gebreek word. \n\nDink saam aan ’n paar kalm gevolge wat hulle kan help verstaan dat hulle iets verkeerds gedoen het. Dit sal meer doeltreffend wees en sal positiewe voorbeelde stel!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: “Ek wil nie daardie duur ding sien nie! Daardie seun is moeilikheid! Hoe dink hy gaan jy hom hiervoor terugbetaal?! \n\n@global.w_solve_teen_girl: “Dis nie hoe dit werk nie, @global.w_solve_female_caregiver_1! Dis nie regverdig nie!”", + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: “Ek wil dit nie hoor nie!” \n\n@global.w_solve_teen_girl: “Jy probeer nie eens na my luister nie! Ek weet nie waarom ek enigsins met jou probeer nie!”", + "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "Jy kan jou tiener help verstaan dat daar gevolge is wanneer ’n gesin se reëls oortree word. \n\nMaar HOE jy dit doen, maak saak. \n\nOm gevolge reg te hanteer, help tieners om hul beter te gedra en sorg vir ’n kalmer gesinslewe...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Haal ’n paar keer diep asem om te kalmeer, en", + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Goeiedag, almal. \n\nVandag se onderwerp is kalm gevolge.\n\nDit is belangrik dat, wanneer ons gevolge aan ons tieners bekendstel, ons hulle betrek, maar dit is ook belangrik dat ons kalm bly wanneer ons gevolge bekendstel.\n\nDit sal ons help om saam te stem om kalm gevolge aan ons tieners bekend te stel en ons tieners sal die gevolge maklik onthou wanneer hulle betrek word en dit sal hulle verantwoordelik maak.", "type": "template", "note": "" }, { - "SourceText": "KNOW IT", - "text": "WEET DIT", + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Tieners oortree dikwels reëls. Grootword is ’n moeilike tyd wanneer hulle leer wie hulle is.\n\nGelukkig is daar maniere om jou tiener te dissiplineer sonder om kwaad te raak of geweld te gebruik....en dit werk goed!\n\nWanneer kalm gevolge gegee word, help dit om ons kinders verantwoordelikheid te leer vir wat hulle doen – goed en sleg.\n\nHier is ’n paar voorbeelde – stel jou voor jy is die ouer:", "type": "template", "note": "" }, { - "SourceText": "Identify the problem.", - "text": "Identifiseer die probleem.", + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Kalm gevolge behoort... \n\nREGVERDIG te wees: Nie te hewig nie en jy kan dit in werklikheid uitvoer \n\nONMIDDELLIK te gebeur: Gee dit so gou as moontlik \n\nKONSEKWENT te wees: Elke keer dieselfde gevolg", "type": "template", "note": "" }, { - "SourceText": "SOLVE IT", - "text": "LOS DIT OP", + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Beplan ’n kalm gevolg vir jou tieners wat tydens aandete met mekaar argumenteer. Onthou dit moet:\n \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", "type": "template", "note": "" }, { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Dink aan moontlike oplossings en wat sal gebeur as ons dit gebruik.", + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "Kon jy een positiewe en een negatiewe gevolg van ’n sekere optrede saam met jou tiener uitdink?", "type": "template", "note": "" }, { - "SourceText": "TRY IT", - "text": "PROBEER DIT", + "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Voltooi die werksessie en probeer om saam met jou tiener een positiewe en een negatiewe gevolg van ’n sekere optrede te vind.", "type": "template", "note": "" }, { - "SourceText": "Choose a solution and try it out.", - "text": "Kies ’n oplossing en probeer dit.", + "SourceText": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Hallo, @fields.user_name! Vandag vier ons twee maande wat jy @global.parent_app gebruik! \n\nJy doen uitstekend! Hierdie week se werkswinkel sal jou help om te weet wat om te doen wanneer jou tiener nie die huisreëls nakom nie.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "TEST IT", - "text": "TOETS DIT", + "SourceText": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Hallo, @fields.group_name! Vandag vier ons twee maande wat jy @global.parent_app gebruik! \n\nJy doen uitstekend! Hierdie week se werkswinkel sal jou help om te weet wat om te doen wanneer jou tiener nie die huisreëls nakom nie.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "Het dit gewerk? Wonderlik! As dit nie gewerk het nie, probeer ’n ander oplossing.", + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "text": "Welgedaan met jou gebruik van @global.parent_app. Jy het al 6 ouerskaphulpmiddels gekry!\n\nDoen die volgende werksessie om nog ’n ouerskaphulpmiddel te kry!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "Kom ons kyk hoe probleemoplossing in die praktyk werk.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Kalm gevolge help jou tiener regtig om die reëls goed te volg – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy soveel toewyding aan jou gesin bewys.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 kom huis toe van die werk af.\n\n@global.w_solve_female_caregiver_2 (dink): “Ai, my arme voete! Ek moet vir ’n rukkie sit en ’n koppie koffie drink voor ek vir almal begin kos maak.”", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "text": "Welgedaan dat jy die @local.workshop_data.in_text_title voltooi het. Môre kan jy 'n nuwe werkswinkel aanpak om jou te help om te ontspan, geniet en nuttige vaardighede aan te leer!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: “@global.w_solve_teen_boy_2! Wat doen jy? Daardie brood was vir aandete! Nou sal daar nie vir ons almal genoeg wees nie!”", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: “Jammer, @global.w_solve_female_caregiver_2, ek was net honger.Ek kan verduidelik, jy sien, daar is ’n ou by die skool... \n\n@global.w_solve_female_caregiver_2 ( dink): “Neem ’n blaaskans...haal net asem…”", + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "Ja, so ’n hewige reaksie het almal net meer kwaad en ontsteld gemaak.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Gee my net ’n oomblik. Ek is moeg en nou is ek bekommerd dat ek nie genoeg kos vir aandete gaan hê nie.” \n\n@global.w_solve_teen_boy_2: “Ek is jammer, @global.w_solve_female_caregiver_2.”", + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "Kom ons lees wat met @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver gebeur het:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 1: KNOW IT", - "text": "Stap 1: WEET DIT", + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Kyk hoe laat is dit! Jy is laat!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: “Vertel my nou, waarom is jy so honger? Het jy nie jou middagete by die skool geëet nie?” \n\n@global.w_solve_teen_boy_2: “Dis die probleem. Daar is ’n ou by die skool wat my boelie. Hy sê as ek nie elke dag my middagete vir hom gee nie, gaan hy en sy vriende my seermaak. Hy maak my so kwaad!”", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – gaan slaap maar weer”. \n\n@global.w_consequence_male_caregiver: “Dis BAIE later as wat jy veronderstel was om by die huis te wees!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, maar ek is bly jy het my vertel, @global.w_solve_teen_boy_2. Dit beteken nie dat jy almal se aandete kan eet nie. Wanneer ons klaar gepraat het, moet jy winkel toe gaan en nog brood gaan koop. Maar nou eers: Wat dink jy moet ons aan die boelieprobleem doen?”\n\n@global.w_solve_teen_boy_2: “Wel… Ek wil hom net slaan of hom terugkry.”", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, jy hou nie by ons reël nie! Ek gaan jou ’n pakslae gee!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Step 2: SOLVE IT", - "text": "Stap 2: LOS DIT OP", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Dis onregverdig! Julle luister nooit na my nie!! Ek haat julle!”", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: “Hmmm… wat dink jy sal gebeur as jy dit doen?”\n\n@global.w_solve_teen_boy_2: “Ek weet nie. Hy is groter as ek, so hy sal my waarskynlik meer seermaak. En ek kan by die skool in die moeilikheid kom en geskors word.”", + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "Kom ons keer terug na @global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: “Ja, dit kan gebeur. Wat kan ons in plaas daarvan doen?”\n\n@global.w_solve_teen_boy_2: “Ek neem aan ek kan vir die onderwyser sê. Maar dan gaan die ander kinders my ’n klikbek noem. Miskien kan jy met die onderwyser praat?”", + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: “Ek is besorg daaroor dat jy steeds dikwels laat huis toe kom, @global.w_consequence_teen_boy_1. Wat kan ons doen om jou te help onthou om betyds huis toe te kom?”\n\n@global.w_consequence_teen_boy_1: “As ek betyds huis toe kom, kan ek dan miskien 30 minute later as gewoonlik wakkerbly?”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Dit klink na ’n beter idee. Ek kan met sy ouers ook praat, as jy wil.”\n\n@global.w_solve_teen_boy_2: “Dit sal gaaf wees, as jy dink dit sal ook help. Dankie, @global.w_solve_female_caregiver_2.”", + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: Dit is ’n goeie idee! En wat moet ons doen as jy nie die reël nakom nie?\n\n@global.w_consequence_teen_boy_1 (mompel): “Mgmluuhm”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Enigiets vir jou, my kind. Ek sal dit net na aandete doen. En weet jy, as dit nie werk nie, kan ons altyd iets anders saam probeer.”\n\n@global.w_solve_teen_boy_2: “Dankie, @global.w_solve_female_caregiver_2.”", + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: “Ag kom nou, ek weet jy het ’n paar idees.”\n\n @global.w_consequence_teen_boy_1: “Nou goed…. Wat van: ek moet my huiswerk doen?”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Step 3: TRY IT", - "text": "Stap 3: PROBEER DIT", + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: “Jy moet in elk geval jou huiswerk doen. As jy die reël vergeet, is dit regverdig dat jy jou vriende nie die volgende dag sal kan sien nie.”\n\n@global.w_consequence_teen_boy_1: “Oukei, @global.w_consequence_male_caregiver.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "’n Week later... \n\n@global.w_solve_female_caregiver_2: “Hoe gaan dinge nou by die skool?”\n\n@global.w_solve_teen_boy_2: “Dit gaan beter, die seun vat nie meer my middagete nie. Maar hy is nog steeds baie gemeen met my.”", + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Die volgende dag...\n\n @global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Hoe laat is dit? Dit is laat!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Step 4: TEST IT", - "text": "Stap 4: TOETS DIT", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Jammer @global.w_consequence_male_caregiver – jy kan maar weer gaan slaap.” \n\n@global.w_consequence_male_caregiver: “Dit is BAIE later as wat jy veronderstel was om by die huis te wees!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, @global.w_solve_teen_boy_2. Sal ek jou oom vra om met sy ouers te gaan praat? As dit nie werk nie, sal ons iets anders probeer!” \n\n@global.w_solve_teen_boy_2: “Ja, dankie@global.w_solve_female_caregiver_2. Ek weet ten minste jy is aan my kant.”", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: “Ek kan verduidelik, @global.w_consequence_male_caregiver, ek kan.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, dit is middernag en jy het later huis toe gekom as wat ons ooreengekom het. Wat ook al die rede is, jy moet verstaan dat dit nie aanvaarbaar is nie.Ek en @global.w_consequence_female_caregiver was regtig bekommerd.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" }, { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Bespreek onder mekaar:\n\nHoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: “My vriende wou hê ek moes langer bly. Hulle het my ’n baba genoem omdat ek al huis toe moes gaan.”\n\n@global.w_consequence_male_caregiver: “Ek weet dit kan moeilik wees om vir jou vriende nee te sê. Kom ons praat môreoggend hieroor wanneer ons uitgerus is.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Onthou julle vir @global.w_solve_teen_girl en die foon wat sy by die seun gekry het?", + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: “Ek is jammer dat ek jou bekommerd laat word het, en ook@global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Dankie. Gaan slaap nou, maar jy moet baie mooi verstaan, aangesien jy later huis toe gekom het as wat ons ooreengekom het, sal jy nie toegelaat word om môreaand uit te gaan nie.”", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Hoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en bespreking – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "Kom ons gaan terug na @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 en kyk met watter oplossings hulle vorendag gekom het.", + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en nadenke – dit het nie gewerk nie...\n* Voorbeelde van gevolge\n* Hulpmiddels: Hoe om kalm gevolge oor te dra\nVERDUIDELIK – STEM OOREEN – TREE OP\n* Bespreking oor reëls en gevolge\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "@global.w_solve_teen_girl en haar@global.w_solve_female_caregiver_1 het met drie oplossings vorendag gekom.", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Bespreek saam: \n* Hoekom het ’n gevolg wat so gegee is, nie goed gewerk nie?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Om ’n ouer van ’n tiener te wees, is regtig moeilik. \n\nDaar is dikwels geen maklike oplossings nie, maar nou het @global.w_solve_female_caregiver_1 geleer dat sy met haar dogter oor hierdie goed kan praat. \n\nVoorheen het sy haar alleen bekommer, nou kan hulle saam met oplossings vorendag kom!", + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver was kwaad", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "Hok @global.w_solve_teen_girl vir ’n maand", + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver het nie vir @global.w_consequence_teen_boy_1 laat verduidelik nie", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: “Jy mag vir die volgende maand nie uitgaan nie.”", + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Die gevolg is nie vooraf met @global.w_consequence_teen_boy_1 bespreek nie", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Dit het nie gewerk nie... Kom ons probeer iets anders.", + "SourceText": "The consequence was too strong", + "text": "Die gevolg was te hewig", "type": "template", "note": "" }, { - "SourceText": "Return the phone and save up", - "text": "Gee die foon terug en spaar", + "SourceText": "Giving a consequence this way did not work well because...", + "text": "’n Gevolg wat so gegee is, het nie goed gewerk nie, want...", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: “Ek probeer nie jou vriend van iets beskuldig nie, en ek is ook nie jaloers nie. Ek is net bekommerd dat wanneer iemand ’n geskenk gee, dit moeilik is om ‘nee’ te sê wanneer hulle iets in ruil vra – soos seks. As jy ’n foon wil hê, sal ons saam spaar sodat jy jou eie besluite kan neem sonder om hom iets te skuld.”", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Bespreek saam:\n* Watter reëls oortree jou tieners dikwels?\n* Watter gevolg sou jy kon gebruik vir elke spesifieke reël wat oortree word?\n\nGevolge moet: \nREGVERDIG wees (nie te straf nie)\nONMIDDELLIK wees (doen dit dadelik) \nKONSEKWENT wees (elke keer dieselfde).\n\nPrys mekaar en moedig mekaar aan – ons kan mekaar sterk maak!", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "This is great! Try the third option as well.", - "text": "Dit is wonderlik! Probeer die derde opsie ook.", + "SourceText": "Let's talk about this story", + "text": "Kom ons praat oor hierdie storie", "type": "template", "note": "" }, { - "SourceText": "Learn about safe sex", - "text": "Leer oor veilige seks", + "SourceText": "Why did using a consequence work well this time?", + "text": "Waarom het die gebruik van ’n gevolg hierdie keer goed gewerk?", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: “Dit laat my besef dat ons oor kêrels moet praat en oor hoe om jouself te beskerm. Baie tieners van jou ouderdom raak swanger of raak MIV-positief. Kom ons gaan kliniek toe sodat jy met die verpleegster kan praat oor hoe jy veilig kan bly.”", + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 en sy @global.w_consequence_male_caregiver het die gevolge bespreek toe hulle albei kalm was", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "This is great!", - "text": "Dis wonderlik!", + "SourceText": "They agreed on consequences together", + "text": "Hulle het saam oor die gevolge ooreengekom", "type": "template", "note": "" }, { - "SourceText": "Let's practice problem-solving!", - "text": "Kom ons oefen probleemoplossing!", + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver het kalm maar ferm gereageer toe@global.w_consequence_teen_boy_1 die reël oortree het", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Oefen saam aan ’n probleem wat julle nou het. Een van julle is die ouer en een is die tiener. \n\nPrys mekaar en moedig mekaar aan – ons is trots op jou!\n\nOnthou die stappe: \nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver het na @global.w_consequence_teen_boy_1 geluister", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Leer jul tieners die vier stappe van probleemoplossing:\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n\nGebruik hierdie stappe saam wanneer ’n probleem opduik! \n\nWanneer iets sleg gebeur, raak ons dikwels ontsteld en blameer iemand. Maar wat ons tieners regtig nodig het, is iemand wat help om saam oplossings te vind. Luister na hulle, aanvaar hoe hulle dinge sien en daaroor voel, en bedank hulle dat hulle jou vertrou.\n\nAs jy jou tiener leer hoe om probleme te hanteer, sal dit hulle vir die res van hulle lewens help. ’n Baie goeie geskenk!", + "SourceText": "The consequence was realistic and appropriate", + "text": "Die gevolg was realisties en toepaslik", "type": "template", "note": "" }, { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Sommige van die probleme wat ander ouers saam met hulle tieners opgelos het:", + "SourceText": "Using a consequence worked well this time because...", + "text": "Dit het goed gewerk om hierdie keer ’n gevolg te gebruik, want...", "type": "template", "note": "" }, { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* My tiener wil nie skool toe gaan nie\n* Ek is bekommerd dat my tiener sal swanger raak, of iemand sal swanger maak \n* Ek is bekommerd oor wat my tiener aanlyn doen\n* My tiener kuier met slegte vriende\n* My tiener is lui\n* My tiener doen nie hulle huiswerk nie* My tiener gebruik moontlik dwelmmiddels", + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Dis belangrik hoe jy kalm gevolge voorstel. Onthou, wanneer jy jou tiener betrek, gaan dinge gewoonlik beter!", "type": "template", "note": "" }, { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Om ’n wonderlike ouer te wees, beteken ook om elke dag tyd te maak om na jouself om te sien.", + "SourceText": "EXPLAIN", + "text": "VERDUIDELIK", "type": "template", "note": "" }, { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Wonderlik. En fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Maak seker julle is albei kalm. Haal ’n paar keer diep asem. Verduidelik aan jou tiener waarom jy oor hulle gedrag bekommerd is.\n\nVerduidelik die redes waarom die reël saak maak. Jy kan jou gevoelens deel – dit is oukei om te sê jy is teleurgesteld.", "type": "template", "note": "" }, { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Dis moeilik om ’n ouer te wees. Maar dit is fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", + "SourceText": "AGREE", + "text": "STEM OOREEN", "type": "template", "note": "" }, { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Om enige van hierdie te doen, maak van jou ’n wonderlike ouer.", + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Beplan saam met jou tiener wat die gevolge sal wees as die reël nie nagekom word nie.\n\nVra hulle vir idees. Gesels totdat julle oor iets realisties saamstem.\n\nStel ’n gevolg vas vir wanneer die reël NIE nagekom word nie en ’n voorreg vir wanneer hulle WEL die reël nakom.", "type": "template", "note": "" }, { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Tieners kan baie tyd buite die huis of aanlyn bestee waar dit vir ons moeiliker is om hulle veilig te hou. \n\nDit help regtig om saam te gesels oor veilige en onveilige plekke en hoe om probleme te voorkom!", + "SourceText": "ACT", + "text": "TREE OP", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Goeiedag, almal. \n\nOns onderwerp vandag is tienerveiligheid. \n\nDit is ons verantwoordelikheid as ouers om ons tieners te alle tye veilig te hou. Ons moet seker maak dat ons tieners veilig is in die gemeenskappe waar ons woon. Dit is ons verantwoordelikheid om hulle bewus te maak van veilige en onveilige areas in die gemeenskappe.\n\nDit is ook ons verantwoordelikheid om seker te maak dat hulle die gevare waaraan hulle moontlik blootgestel kan word wanneer hulle aanlyn is, verstaan. So sal ons tieners verantwoordelik wees en sal hulle die regte besluite kan neem om hulself ook veilig te hou.", + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Wanneer jou tiener die reël nakom, prys hulle en gee voorregte!", "type": "template", "note": "" }, { - "SourceText": "Today you will explore:", - "text": "Vandag sal julle die volgende verken:", + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "Hulle sal voel hulle word gerespekteer en gewaardeer. Hoe meer ons hulle prys, hoe meer sal hulle daardie goeie gedrag toon!", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Wanneer jou tiener nie die reël nakom nie, druk deur met die gevolg.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Storie en nadenke – dit het gewerk!\n* Storie en nadenke – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Wanneer jou tiener die reël oortree, gee die gevolg op ’n kalm manier. Dit moet REGVERDIG (nie te straf nie), ONMIDDELLIK (doen dit dadelik) en KONSEKWENT (elke keer dieselfde) wees.", "type": "template", "note": "" }, { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Kommunikasie is die belangrikste ding!\n\nKom ons kyk wat met @global.w_safe_female_caregiver en @global.w_safe_teen_girl_1 gebeur het:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: “Iets het gebeur toe ek saam met my vriende @global.w_safe_teen_girl_2 en @global.w_safe_teen_girl_3 uit was!”\n\n@global.w_safe_female_caregiver: “Vertel my, @global.w_safe_teen_girl_1.”", + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "Wat sou ’n kalm gevolg wees vir jou tieners wat tydens aandete met mekaar argumenteer? \n\nOnthou, dit moet: \nREGVERDIG – ONMIDDELLIK – KONSEKWENT wees", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Man in motor: “Haai, mooiste. Ek kyk nou al lank na jou. Jy is baie mooi, wat is jou naam?”\n\n@global.w_safe_teen_girl_2: “Haar naam is @global.w_safe_teen_girl_1.”", + "SourceText": "Not seeing any friends for a month", + "text": "Om vir ’n maand geen vriende te mag sien nie", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Man in motor: “@global.w_safe_teen_girl_1, wil jy saam met my kom vir iets om te drink en tjips? Komaan, klim in, jy sal betyds terug wees, ek belowe...”\n\n@global.w_safe_teen_girl_1: “Ek dink nie dis ’n goeie idee nie...”", + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Dit mag dalk vir jou moeilik wees, en ook 'n te hewige straf!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “Jy is gelukkig, vriendin. Ek wens ’n man wil MY uitvra en vir my geskenke koop. Ek sê jou, as jy dit nie doen nie, gaan ek vir almal vertel hoe dom jy is!”", + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Om hul verjaarsdagplanne vir oor ’n maand te kanselleer", "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, moenie gaan nie! Wees versigtig! Kom ons gaan huis toe. Dit is gevaarlik om saam met mense wat jy nie ken nie, te gaan. Buitendien, hy is te oud vir jou en wat hy doen, is verkeerd.”\n\n@global.w_safe_teen_girl_1: “Ek weet nou nie mooi nie…”", + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Dit is te ver in die toekoms, en ook te hewig!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: “Pfff, Ek is so trots op jou dat jy nie in die motor geklim het nie. Dit was ’n gevaarlike situasie, dankie dat jy my vertel het!”", + "SourceText": "No TV this evening", + "text": "Geen TV vanaand nie", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "Kom ons gesels oor wat met @global.w_safe_teen_girl_1 gebeur het", + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Perfek, dit klink regverdig en kan onmiddellik gebeur", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Bespreek onder mekaar:\n\nWat was riskant aan daardie situasie?", + "SourceText": "Self-care is a key parenting tool.", + "text": "Selfsorg is ’n sleutelhulpmiddel vir ouerskap.", "type": "template", "note": "" }, { - "SourceText": "The situation was risky because...", - "text": "Dit was ’n riskante situasie omdat...", + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Dis so lekker om te hoor jy voel vandag goed. Jy is ongelooflik!", "type": "template", "note": "" }, { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke\n* @global.w_safe_teen_girl_1 se vriendin het haar aangemoedig\n* Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen\n* Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans\n* Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Ek is jammer dat dinge nou moeilik gaan. Haal diep asem en weet dat jy waardeer word.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "Kom ons dink oor wat met @global.w_safe_teen_girl_1 gebeur het:", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en julle help om vir die toekoms te beplan. \n\nMiskien kan julle saam partytjiekos beplan, en musiek reghou as julle dalk wil dans!", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "What was risky about that situation?", - "text": "Wat was riskant aan daardie situasie?", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "Jy het hierdie week se werksessie voltooi.\n\nVolgende week se werksessie sal julle almal vereer, en jy kan die ondersteuning kies wat jy vir die toekoms wil hê.\n\nJy kan iets lekker voorberei om dit te vier – iets wat jy graag eet, of musiek waarna jy graag luister!", "type": "template", "note": "" }, { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke", + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "Kies saam met jou tiener een van hierdie situasies ( of dink self een uit!). Kyk na die tekenprent, en bespreek wat julle saam sou doen indien dit met ’n vriend of in julle gesin sou gebeur.\n\n En onthou: ASEM IN – LUISTER – DINK", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "@global.w_safe_teen_girl_1 se vriendin het haar aangemoedig", + "SourceText": "prepare for a possible crisis with their teens", + "text": "berei vir ’n moontlike krisis met hul tieners voor", "type": "template", "note": "" }, { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen", + "SourceText": "prepare for a possible crisis with your teen", + "text": "berei vir ’n moontlike krisis met jou tiener voor", "type": "template", "note": "" }, { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "My tiener het my vertel dat iets ernstigs met hulle gebeur het en ek het nie geweet hoe om dit te hanteer nie.", "type": "template", "note": "" }, { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Prys jou tiener omdat hulle jou vertel het. Dit is nie maklik om dit te doen nie! Onthou dat jy al die vaardighede wat jy uit jou gereedskapskas gekies het, kan gebruik: neem ’n blaaskans, gebruik die vier stappe van probleemoplossing en reik uit om die ondersteuning te kry wat jy en jou tiener benodig!", "type": "template", "note": "" }, { - "SourceText": "All those things are true!", - "text": "Al daardie dinge is waar!", + "SourceText": "Get support", + "text": "Kry ondersteuning", "type": "template", "note": "" }, { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "Kom ons kyk saam na nog ’n voorbeeld van ’n gevaarlike situasie.", + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Die gesprek het my baie ongemaklik laat voel omdat dit my herinner het aan ’n negatiewe ervaring wat ek gehad het.", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: “My vriendin praat aanlyn met ’n ou van ons ouderdom... Sy gaan vir hom foto’s van haarself stuur. Is dit beter omdat hy ons ouderdom is?”", + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Wanneer ons aan sulke ervarings herinner word, is dit normaal om ontsteld of kwaad te voel. Dit is belangrik om ’n tyd te vind wanneer jy kalm is, sodat jy kan dink aan watter ondersteuning jy nodig het. Dalk moet jy met iemand praat.", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: “Jy is ’n goeie vriendin om oor haar bekommerd te wees. Om wulpse foto’s te stuur, is ook ’n werklike risiko.”", + "SourceText": "One of us did not feel comfortable.", + "text": "Een van ons het nie gemaklik gevoel nie.", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: “Soms is mense nie wie hulle aanlyn sê hulle is nie – hy kan sê hy is jou ouderdom, maar kan ’n 50-jarige man wees. Of wanneer hulle verhouding uit is, kan hy daardie foto’s vir almal stuur en jou vriendin sal aaklig voel.”", + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Dit is moeilike dinge om oor te praat. Soek ’n ontspannende tyd daarvoor. Ons weet dit is baie makliker om nie oor hierdie dinge te praat nie en te hoop dat dit nooit met ons sal gebeur nie. Maar om te leer om krisisse te hanteer, is soos om versekering te bekom; dit is ALTYD die beste om daaraan te dink en voorbereid te wees.", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about our teens' online safety.", - "text": "Kom ons praat oor ons tieners se veiligheid aanlyn.", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Jou doelwit was om ’n moontlike krisissituasie met jou tiener te bespreek en ’n plan daarvoor te maak.", "type": "template", "note": "" }, { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Wat is deesdae party van die aanlyn risiko’s vir tieners?", + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Alle gesinne ervaar krisisse. Wanneer ons saam voorberei en weet waar om hulp te kry, VOORDAT iets sleg gebeur, kan ons enige krisis oorkom.", "type": "template", "note": "" }, { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen\n* Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat\n* Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg\n* Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel\n*Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Goeiedag, almal\n\nVandag se onderwerp is die hantering van krisisse.\n\nKrisisse kan enige plek voorkom. Krisisse kan enige tyd voorkom. Daarom is dit belangrik om as gesin planne in plek te hê ingeval enige lid van die gesin hulself in ’n krisissituasie bevind. \n\nDit is belangrik om planne te hê sodat elke lid van die gesin beskerm kan voel. \n\nWanneer ons krisisse hanteer, onthou om stil te gaan staan, asem te haal en jouself kalm te hou. Dit sal jou help om die krisis beter te hanteer.", "type": "template", "note": "" }, { - "SourceText": "Let's think about our teens' online safety.", - "text": "Kom ons dink oor ons tieners se veiligheid aanlyn.", + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Dit help om te oefen hoe om ’n krisis te hanteer voordat iets gebeur.\n\nKyk na hierdie vyf krisistye in ’n gesin. Stel jou voor jy is die ouer: Wat sou jy doen?\n\nOnthou: ASEM IN – LUISTER – DINK", "type": "template", "note": "" }, { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Wat is deesdae die grootste aanlyn risiko vir tieners?", + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Krisis 1: @global.w_crisis_teen_boy_2 baklei by die skool", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen", + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: “Ek het dit nog nooit voorheen gedoen nie. En nou gaan hulle my skors”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat", + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "text": "Krisis 2: @global.w_crisis_teen_girl_1 raak swanger", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg", + "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_1: “@global.w_crisis_male_caregiver_1, ek skaam my. Ek weet nie wat om te doen nie”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel", + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "text": "Krisis 3: @global.w_crisis_teen_boy_2 maak ’n meisie swanger", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", + "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_2: “@global.w_crisis_male_caregiver_2, ek wil nie ’n baba hê nie”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!\n\nKom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nKom ons maak hierdie kaarte nou as ’n groep.\n\nJy sal hierdie week dieselfde tuisoefening saam met jou tiener doen.", + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "Watter terugvoer kan jy aan @global.w_crisis_teen_boy_2 gee?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Bespreek onder mekaar:\n\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", + "SourceText": "Crisis 4: Someone in the family gets sick", + "text": "Krisis 4: Iemand in die familie raak siek", "type": "template", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Soms kan ons in die moeilikheid beland. Bespreek onder mekaar:\n \n* Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "“Die toets wys ek het MIV. Ek is bang ek gaan dood”", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Teken prentjies van die toeps en webwerwe wat jou tieners gebruik.\n* Prys mekaar vir hoe goed julle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "SourceText": "How could you respond in this situation?", + "text": "Hoe kan jy in hierdie situasie reageer?", "type": "template", "note": "" }, { - "SourceText": "Safety Plan", - "text": "Veiligheidsplan", + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Krisis 5: @global.w_crisis_teen_girl_1 word onder druk geplaas om met haar kêrel seks te hê", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!", + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: “Ek wou nie regtig nie. Nou gaan ek swanger raak of siek raak. @global.w_crisis_female_caregiver, ek is baie bang...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy ’n veiligheidsplan maak of daarby hou, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "Watter terugvoer kan jy aan @global.w_crisis_teen_girl_1 gee?", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "Kom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nJy gaan hierdie week dieselfde saam met jou tiener as tuisoefening doen – as jou tiener nou hier is, kan julle dit nou saam doen!", + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Onthou om mekaar te ondersteun en aan te moedig. In ’n krisis is dit moeilik om kalm te bly en na mekaar te luister – ons is trots op jou.", "type": "template", "note": "" }, { - "SourceText": "My family can join in now!", - "text": "My gesin kan nou by ons aansluit!", + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "Het jy met jou tiener bespreek wat jy in ’n krisissituasie sou doen?", "type": "template", "note": "" }, { - "SourceText": "Let me try it out by myself", - "text": "Kom ek probeer dit op my eie", + "SourceText": "Crisis Examples", + "text": "Voorbeelde van krisisse", "type": "template", "note": "" }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Stap 1: Wat is die belangrike plekke in jou gemeenskap?", + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "Jy is ’n toegewyde ouer. Wees trots op jouself – dit is ’n groot prestasie op sigself!", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Kry ’n stuk papier (of ou koerant of ’n kartonboks) en ’n pen.\n* Teken ’n kaart van jou tiener se gemeenskap, met prente van al die vernaamste plekke soos strate, julle huis, skool, winkels, plekke wat jou tiener besoek.", + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Dis so goed dat jy saam met ons op hierdie ouerskapreis is!\n\nVoltooi die @local.workshop_data.in_text_title en leer wat die beste manier is om te reageer wanneer jou tiener jou die nodigste het.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Stap 2: Watter plekke is veilig en onveilig?", + "SourceText": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Hallo, @fields.user_name! 'n Krisis kan met enigiemand gebeur - dit help baie om voorbereid te wees. \n\nHierdie werkswinkel sal jou wys hoe.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Bespreek onder mekaar:\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", + "SourceText": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Hallo, @fields.group_name! 'n Krisis kan met enigiemand gebeur - dit help baie om voorbereid te wees. \n\nHierdie werkswinkel sal jou wys hoe.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veilig te hou?", + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "text": "Ons weet nooit wanneer ’n krisis kan plaasvind nie, maar ons KAN voorbereid wees!\n\nBegin die volgende werksessie om te ontdek hoe jy dit saam met jou tiener kan doen.", "type": "template", "note": "" }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Stap 3: Waar kan jy ondersteuning kry?", + "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Môre sal die laaste @global.parent_app-slypskool vir jou gereed wees.\n\nProbeer om @local.workshop_data.in_text_title te voltooi voordat jy met die nuwe slypskool begin. Op hierdie manier kan jy jou ouerskapvaardighede voltooi en besluit wat jy volgende moet doen!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar: \n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.\n\nHier onder is ’n paar plekke wat van hulp kan wees", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot die laaste slypskool kry om na te dink oor jou @global.parent_app-reis en wat jy volgende kan doen!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar:\n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "Ja, @global.w_crisis_female_caregiver het werklik al daardie vaardighede gebruik – en jy kan ook!", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Stap 4: Wat is riskante plekke aanlyn en hoe kan jy hulle veiliger maak?", + "SourceText": "All these skills can help in a crisis.", + "text": "Al hierdie vaardighede kan help in ’n krisis.", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Prys julle tieners vir hoe goed hulle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "’n Krisis kan met enigeen gebeur. \n\nKom ons kyk wat het met @global.w_crisis_teen_girl_1 en @global.w_crisis_female_caregiver gebeur:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Gee erkenning vir hoe goed hulle is met gebruik van die web! \n* Dink oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: “Foeitog my kind, jy lyk regtig ontsteld, wil jy vir my vertel wat gebeur het?”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "MAPS", - "text": "KAARTE", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: “Dit is my oom, hy...hy... hy het aan my gevat.”\n\n@global.w_crisis_female_caregiver (dink): “Haal diep asem...Wat het my kind nodig? Sy het nodig dat ek kalm bly en luister” \n\n@global.w_crisis_female_caregiver: “Kom sit hier langs my. Neem jou tyd, ek luister.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Maak saam met jou tiener KAARTE van veilige en onveilige areas in julle gemeenskap en aanlyn. Praat oor hoe om hulle inligting, foto’s en video’s aanlyn privaat te hou. Praat oor hoe iets wat aanlyn geplaas word, vir altyd daar bly. Hulle kan dalk van voorbeelde in hul vriendekring weet.", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: “Dis waar, hy...hy... het my gedwing om dit te doen! Hy het my gedwing om met hom seks te hê! Ek wou nie, ek sweer, en ek het selfs NEE gesê, maar hy het gesê ek sal in die moeilikheid kom.” \n\n@global.w_crisis_female_caregiver: “Dankie dat jy dit met my deel. Jy is nie in die moeilikheid nie. Dis nie jou skuld nie.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "RULES", - "text": "REËLS", + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: “Gister het jy gaan kuier by @global.w_crisis_adult_friend. Hy het net hier aangekom, en dis toe dit gebeur het.”\n\n@global.w_crisis_female_caregiver: “Dis oukei, my kind, ek glo jou. Dis ’n groot ding en ons sal ’n manier kry om die nodige hulp te kry. Waar kan ons gaan hulp vra?”\n\n@global.w_crisis_teen_girl_1: “My skool?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Lê saam met jou tiener reëls neer oor die veilige gebruik van die toeps en webwerwe waarvan hulle hou.\n\nOnthou julle die storie oor veiligheid aanlyn? Kyk hier weer daarna.", + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: “Aag, ek weet, kom ons gaan kliniek toe. Hulle sal weet wat ons kan doen om jou te help. Klink dit vir jou oukei?”\n\n@global.w_crisis_teen_girl_1: “Ja… Oukei… Maar sal jy saam met my gaan?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Online Safety Story", - "text": "Storie oor veiligheid aanlyn", + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: “Natuurlik sal ek. En@global.w_crisis_teen_girl_1? Onthou, dis nie jou skuld nie. Ek is lief vir jou. Jy is ’n goeie persoon. Ons sal hierdeur kom.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "AMNESTY", - "text": "AMNESTIE", + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "’n Ander probleem waaroor baie ouers bekommerd is, is geweld en misdaad. Kom ons kyk saam na ’n voorbeeld.", "type": "template", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Gaan ’n AMNESTIE-ooreenkoms aan. Indien iets gebeur wat hulle ontstel, ongemaklik laat voel of bang maak, kan hulle met jou praat en jy sal nie kwaad word of hulle straf nie, selfs al het hulle iets verkeerd gedoen.\n\nOnthou julle die storie oor veiligheid-amnestie? Kyk hier weer daarna.", + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: “@global.w_crisis_teen_boy_1, Jy lyk van gister af bekommerd. Wat is verkeerd?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Safety Amnesty Story", - "text": "Storie oor veiligheid-amnestie", + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: “Gister was ek en my vriende by ’n sokkerwedstryd. ’n Paar dronk ouens het ’n bakleiery met my vriend begin.” \n\n@global.w_crisis_male_caregiver_1: “Gaan aan, ek luister. Ek hoop jy het nie baklei nie?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Digitale ouerskap is net soos ouerskap in die regte wêreld. Jy het ’n GROOT STAP gedoen om jou tiener in die gemeenskap EN aanlyn veilig te hou. Mooi so!", + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: “Ek wou nie, maar ek kon nie net daar staan en kyk hoe hulle my vriend slaan nie, daarom....”\n\n@global.w_crisis_male_caregiver_1 :“Het jy dus baklei om jou vriend te help verdedig?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Resources to help in the community", - "text": "Hulpbronne om in die gemeenskap te help", + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Almal het baklei. Ek het iemand op die veld sien lê, in ’n plas bloed. Dit het vir my gelyk hy is... dood.”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." }, { - "SourceText": "Online Safety Resources", - "text": "Hulpbronne vir aanlyn veiligheid", + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: “Ek is bly jy vertel my hiervan, @global.w_crisis_teen_boy_1. Kom sit by my, dan bespreek ons of ons die polisie of iemand anders wat kan help, moet betrek.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: “Dankie, @global.w_crisis_male_caregiver_1”\n\n@global.w_crisis_male_caregiver_1: “Ons sal hierdeur kom. Onthou, ons sal jou as ’n gesin ondersteun.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "As jy dit nog nie gedoen het nie, maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Elke klein dingetjie wat jy doen, maak saak. Ons hoop jy is ook trots op jouself.", "type": "template", "note": "" }, { - "SourceText": "Safety Plan Activity", - "text": "Veiligheidsplan-aktiwiteit", + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en bespreking\n* Storie en bespreking\n* Hulpmiddels: Hoe om ’n krisis te hanteer\nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Wonderlik! Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en nadenke \n* Storie en nadenke\n* Hulpmiddels: Hoe om ’n krisis te hanteer \nHAAL ASEM – LUISTER – DINK\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Ons is jammer dis ’n moeilike dag. Ons is trots op jou oor alles wat jy gedurende die afgelope weke gedoen het.", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Dit was so ’n moeilike situasie vir @global.w_crisis_teen_girl_1 en haar@global.w_crisis_female_caregiver! Dit kan met seuns én meisies gebeur.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer.\n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie en beplan jou toekomstige ouerondersteuning.", + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "Watter vaardighede het @global.w_crisis_female_caregiver gebruik?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "VEELS GELUK! Jy het dit reggekry! Jy het 11 belangrike vaardighede vir ouerskap aangeleer. \n\nDit is ’n baie groot prestasie. Dit wys hoeveel jy vir jou gesin omgee. \n\nKom ons vier jou prestasie, en beplan jou toekomstige @global.parent_app-steun.", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "Dit was ’n baie moeilike situasie vir @global.w_crisis_teen_boy_1 en sy @global.w_crisis_male_caregiver_1!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Goeiedag, almal.\n\nDie onderwerp vir vandag is viering en volgende stappe.\n\nDit was ongelooflik. Dit was wonderlik om julle op hierdie reis te hê. Vandag vier ons ons reis saam.\n\nVandag vier ons alles wat ons deur die hele ervaring geleer het.", + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "Watter vaardighede het @global.w_crisis_male_caregiver_1 gebruik?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." }, { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Vandag gaan jy vier, terugkyk en vorentoe kyk:", + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Krisisse kan ons kwaad of hulpeloos laat voel. Maar dít is wanneer ons tieners regtig nodig het dat ons asemhaal, luister en dink.", "type": "template", "note": "" }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "* Nadenke en bespreking\n* Hulpmiddels: Hoe om mekaar te ondersteun\nKOM BYMEKAAR – SKAKEL – STUUR ’N TEKS – DEEL\n* Beplanning van ondersteuning", + "SourceText": "BREATHE", + "text": "ASEM IN", "type": "template", "note": "" }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Vandag vier jy, en dink na oor jou ervarings.", + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Bly kalm. Vra jouself af ‘wat het my tiener op hierdie oomblik nodig?’", "type": "template", "note": "" }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Jy en jou gesin het so baie geleer. Kom ons dink terug en kyk wat verander het.", + "SourceText": "LISTEN", + "text": "LUISTER", "type": "template", "note": "" }, { - "SourceText": "Reflect", - "text": "Dink na", + "SourceText": "Tell them you are there for them and love them.", + "text": "Sê vir hulle jy is daar vir hulle, en is lief vir hulle.", "type": "template", "note": "" }, { - "SourceText": "Listen and reflect", - "text": "Luister en dink na", + "SourceText": "THINK", + "text": "DINK", "type": "template", "note": "" }, { - "SourceText": "Read and reflect", - "text": "Lees en dink na", + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Gesels met jou tiener. Wat kan dalk die situasie help? Jy sal dalk nou dadelik planne moet beraam, en dan langtermynplanne later.", "type": "template", "note": "" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Sluit oë en ontspan.\n\nDink aan jou gesinslewe voordat jy jou reis met hierdie toep begin het.\n\nDink terug aan vaardighede wat jy aangeleer het:\n* Selfsorg\n* Een-tot-een-tyd\n* Lof\n* Positiewe instruksies\n* Hantering van spanning\n* Gesinsbegroting\n* Reëls\n* Kalm gevolge\n* Probleemoplossing\n* Tienerveiligheid\n* Hantering van krisisse\n\nDink na oor die reis – hoe was dit vir jou om:\n* Idees en ondervindings te deel\n* Na te dink oor die stories, en daaruit te leer\n* Vaardighede saam met jou tiener te oefen\n\nHet enigiets vir jou en jou gesin verander?\n\nWat het jy nodig om die vaardighede aan te hou gebruik?", + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "Wees trots op jouself omdat jy maniere soek om hulp te kry!", "type": "template", "note": "" }, { - "SourceText": "Let's talk about what has changed.", - "text": "Kom ons gesels oor wat verander het.", + "SourceText": "How are you feeling today?", + "text": "Hoe voel jy vandag?", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Bespreek onder mekaar:\n* Wat het in jou gesin verander?\n* Wat het jy gedoen waarop jy trots is?\n\nOnthou om mekaar te prys en aan te moedig!", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Dis gaaf dat dit vandag goed gaan. Wat is dit wat vandag goed was? Onthou om jouself daarvoor te prys.", "type": "template", "note": "" }, { - "SourceText": "MEET", - "text": "KOM BYMEKAAR", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Jammer om te hoor dat jy nie vandag goed voel nie. Dis goed dat jy sulke emosies uitspreek en probeer om kalm en goedhartig teenoor jouself te wees. Jy stel ’n baie mooi voorbeeld vir jou gesin.", "type": "template", "note": "" }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Kom gereeld bymekaar om aan mekaar ouerondersteuning te gee.", + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Hierdie week se tuisoefeninge is om vir jou tiener positiewe opdragte te gee.\n\nOnthou – KOM BY, WEES POSITIEF, WEES DUIDELIK = KRY PRESIES WAT JY WIL HÊ (sover dit met ’n tiener moontlik is!)", "type": "template", "note": "" }, { - "SourceText": "CALL", - "text": "SKAKEL", + "SourceText": "Did you have any challenges?", + "text": "Het jy enige uitdagings ervaar?", "type": "template", "note": "" }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "Wees ‘ouerskapsvriende’ wat mekaar kan skakel wanneer julle ontsteld is en nie weet wat om te doen nie.", + "SourceText": "What challenge did you have?", + "text": "Watter uitdaging het jy ervaar?", "type": "template", "note": "" }, { - "SourceText": "TEXT", - "text": "STUUR TEKSBOODSKAPPE", + "SourceText": "My teenager did not want to follow the instruction.", + "text": "My tiener wou nie die opdrag uitvoer nie.", "type": "template", "note": "" }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Stuur elke week vir mekaar teksboodskappe om dit wat julle goed gedoen het, te deel.", + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Ek het nie tyd gevind om een-tot-een-tyd saam met my tiener deur te bring nie.", "type": "template", "note": "" }, { - "SourceText": "SHARE", - "text": "DEEL", + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Ek het ’n negatiewe in plaas van ’n positiewe opdrag gegee.", "type": "template", "note": "" }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Deel @global.parent_app en help ander gesinne om hul reis te begin.", + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Ek het op my tiener geskree toe hulle negatiewe gedrag getoon het, in plaas van om ’n positiewe opdrag te gee vir wat hulle moes doen.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "End of programme check-in", - "text": "Programeinde check-in", + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Top @local.number_of_challenges uitdagings wat ander ouers ondervind:", "type": "template", - "note": "" + "note": "The string @local.number_of_challenges should not be translated." }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "Jy het @global.parent_app vir die afgelope maande gebruik, maar ouerskap van ’n tiener is ’n langdurige proses! Die volgende vrae oor jou ouerskap-ervarings sal ons help om jou ouerskap te assesseer.\n\nWees eerlik. Onthou dat miljoene ouers soos jy voel, en ons almal verdien ondersteuning. Jy is nie alleen nie!", + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Ek weet; ons kinders het tyd nodig om te leer om opdragte uit te voer. Wees geduldig, probeer weer, en onthou om hulle elke keer as hulle ’n opdrag uitvoer, te prys!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "Dit kom voor dat jy reeds die programeinde check-in voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", + "SourceText": "Do you want to try one of the following things?", + "text": "Wil jy een van die volgende dinge probeer?", "type": "template", "note": "" }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Beplan hoe julle mekaar vorentoe sal ondersteun. \n\nJy kan ander gesinne se idees gebruik, of jou eie idees uitdink!", + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Dink aan ’n tyd dat ek elke dag vyf minute of ’n bietjie meer opsy kan sit.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Ons is so trots op julle. Julle het wilskrag, moed en liefde vir jul gesinne gewys. Ouers is ongelooflik. Julle is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier julself!", + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Kry ’n huistakie wat ons op ’n prettige manier saam kan doen.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Ons is so trots op jou. Jy het wilskrag, moed en liefde vir jou gesin gewys. Ouers is ongelooflik. Jy is ongelooflik. \n\nHierdie liedjie is vir ouers oral. Luister, dans saam en vier jouself!", + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Vra my tiener of iemand anders om my met ’n huistakie te help sodat ek ’n bietjie ekstra vrye tyd kan hê.", "type": "template", "note": "" }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "Welkom! Dis wonderlik om julle hier te hê. Hierdie week gaan oor JOU.\n\nIn hierdie verwelkomingsslypskool sal jy:\n* Hulpmiddels kry om na jouself om te sien\n* Die toep pasmaak vir jou behoeftes", + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Perfek! Selfs om 5 minute te spandeer, maak ’n groot verskil, en as jy dit elke dag op dieselfde tyd doen (soos by ontbyt of voor slapenstyd), sal dit makliker wees om dit aan te hou doen!", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Wonderlik, ek is so bly dit gaan goed.", + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Wonderlik! Op dié manier kry jy jou werk gedoen en kan jy ’n aangename tyd saam met jou tiener hê!", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Jammer dat dinge nou moeilik is. Dit is heeltemal normaal om soms te sukkel. Onthou, jy is nie alleen nie!", + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Wonderlik! Deur verantwoordelikhede te deel, sal jy meer tyd hê om iets aangenaam saam met jou tiener te doen – dit is so belangrik!", "type": "template", "note": "" }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Hoekom @data.workshop.w_self_care.short_title?", + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "Ja, dit neem tyd om daaraan gewoond te raak om positiewe opdragte te gee – dit is regtig die moeite werd om weer te probeer! Dink aan die gedrag wat jy wil hê jou tiener meer moet openbaar, en dink aan positiewe maniere om daardie opdrag te gee!", "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "note": "" }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Ons sorg dikwels nie genoeg vir onsself nie. Maar dit is so belangrik, veral as ’n ouer! \n\nOm ons spanning te verminder en goed na onsself om te sien, help ons EN ons tieners.", + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Dit is moeilik om opdragte uit te dink terwyl ons nog kwaad is. Probeer om ’n tyd te vind wanneer jy kalm is om ’n positiewe opdrag aan jou tiener in te stel.\n\nIn die volgende @global.weekly_workshop sal ons meer praat oor hoe ons, ons emosies kan hanteer! Jy kan meer ontspanningsaktiwiteite vind: @data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Goeiedag, almal. \n\nVandag se onderwerp is selfsorg. \n\nDaar kom tye wanneer ons uitdagings ervaar, waar ons voor probleme te staan kom en nie weet wat om te doen nie. Dit is belangrik dat ons na onsself omsien om die tegnieke te leer om onsself kalm te hou ingeval probleme, uitdagings of geskilpunte opduik. \n\nWanneer ons kalm is, kan ons positief dink en positiewe oplossings vind vir enige uitdagings waarvoor ons te staan kom.", + "SourceText": "Which of the tips helped you?", + "text": "Watter van die wenke het jou gehelp?", "type": "template", "note": "" }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Vandag sal jy 3 aktiwiteite ervaar wat jou kan help om na jouself om te sien en ons sal jou ’n paar\nvrae vra om seker te maak dat die toep presies reg is vir jou.", + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "WEES REALISTIES – Kan jou tiener doen wat jy gaan vra?", "type": "template", "note": "" }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Ontspanning-aktiwiteit\n* Erkenning-aktiwiteit\n* Beloning-aktiwiteit\n* Hulpmiddels: Hoe om selfsorg by te voeg\n* Pas die app by jou aan\n* Voorstelle om tuis te oefen", + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "WEES POSITIEF – Gebruik positiewe woorde en prys hulle!", "type": "template", "note": "" }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "Kom ons probeer dit en doen saam ’n kort ontspanning-aktiwiteit!", + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "WEES DUIDELIK – Wees duidelik en spesifiek!", "type": "template", "note": "" }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "As ouers het ons dikwels nie tyd om na onsself om te sien nie – maar dit is so belangrik! Om ons spanning te verminder help ons EN ons tieners.\n\nKom ons doen ’n eerste stap en doen saam ’n kort ontspanning-aktiwiteit.", + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Wonderlik! Wanneer ons ons tiener vra om iets te doen wat realisties is, is dit vir hulle makliker om daarin te slaag.", "type": "template", "note": "" }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Om aandag te gee aan wat ons doen, help ons om op die positiewe te fokus.\n\nKom ons neem ’n oomblik om onsself te prys. Ons sal jou wys hoe.", + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Wanneer ons hulle prys, voel ons tieners aangemoedig om weer na ons te luister!", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Dink aan een ding wat JY onlangs goed gedoen het.\n\nSê dit hardop vir mekaar: “Mooi so aan my vir....”\n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Fantasties! Wanneer ons vooruit dink aan spesifieke opdragte om vir ons tiener te gee, word ons instruksies baie makliker om te volg!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Recognise", - "text": "Erken", + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te poog.", "type": "template", "note": "" }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Neem ’n oomblik om jouself te prys.\n\nOns sal jou wys hoe.", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Dankie dat jy deel! Welgedaan dat jy jou tiener positiewe instruksies probeer gee het en dat jy ’n positiewe verhouding met jou tiener wil bou.\n\nJou tiener verdien lof en JY ook!", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Dink aan een ding wat JY onlangs goed gedoen het.", + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Fokus op die positiewe! \n\nOm vir ons tieners te sê wat ons WIL hê hulle moet doen, werk beter as om vir hulle te sê om OP TE HOU met iets wat hulle doen.\n\nJy sal die verskil sien.", "type": "template", "note": "" }, { - "SourceText": "\"Well done to me for...\"", - "text": "“Mooi so aan my vir....”", + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Goeiedag, goeiedag, almal.\n\nOns onderwerp vandag is positiewe opdragte.\n \nDit is belangrik om positiewe opdragte aan ons kinders te gee,want wanneer ons vir hulle positiewe opdragte gee, weet hulle wat ons van hulle verwag om te doen, en hulle doen dit soos ons wil hê hulle moet dit doen.\n\nSo, uiteindelik hou dit almal gelukkig.", "type": "template", "note": "" }, { - "SourceText": "Showing love to my children", - "text": "Liefde aan my kinders wys", + "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", + "text": "Jy't nog nie enige punte @data.habit.instruct_positively.title @global.parent_points gemerk nie. \n\nProbeer dit vandag nog!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" }, { - "SourceText": "Getting up even though I felt tired", - "text": "Opgestaan het, al het ek moeg gevoel", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", + "text": "Jy het die @global.parent_point @data.habit.instruct_positively.title reeds een keer gemerk – jy maak dus goeie vordering.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Smiling at someone", - "text": "’n Glimlag vir iemand", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", + "text": "Jy het reeds die @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively kere gemerk – so jy maak goeie vordering.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "Making food to stay strong", - "text": "Kosmaak om sterk te bly", + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Praat vriendelik met jouself oor die goeie werk wat jy doen. Daar bestaan nie iets soos ’n perfekte ouer nie, en ons dink jy doen goed!", "type": "template", "note": "" }, { - "SourceText": "Spending time with my children", - "text": "Tyd wat ek saam met my kinders deurbring", + "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", + "text": "Positiewe opdragte help om al hoe meer goeie gedrag te sien!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar idees te kry oor hoe dit in jou gesin kan werk.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Helping my children with schoolwork", - "text": "Hulp aan my kinders met hulle skoolwerk", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Hallo, @fields.user_name! Veels geluk dat jy @global.parent_app week 4 begin. \n\nHierdie week se werkswinkel gaan oor hoe om jou kanse te verbeter om jou tiener sover te kry om te doen wat jy vra.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Sê dit hardop as jy kan. \n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Hallo, @fields.group_name! Veels geluk dat jy @global.parent_app week 4 begin. \n\nHierdie week se werkswinkel gaan oor hoe om jou kanse te verbeter om jou tiener sover te kry om te doen wat jy vra.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Well done! Try to do this every day.", - "text": "Mooi so! Probeer dit elke dag doen.", + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "text": "Luister jou tiener altyd na jou? Indien nie (soos die res van ons), kyk na die werksessie van hierdie week om uit te vind hoe positiewe opdragte kan help – baie.", "type": "template", "note": "" }, { - "SourceText": "Things to praise yourself for:", - "text": "Dinge waarvoor jy jouself kan prys:", + "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Soos gewoonlik kry jy môre toegang tot ’n nuwe slypskool. Dit sal help as jy die vorige slypskool voor die tyd voltooi.\n\nSommige ouers gebruik die toep terwyl hulle werk toe ry. Waarom gebruik jy die toep nie as jy ’n paar minute het nie?\n\nWeereens baie dankie vir jou gebruik van @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Liefde wat jy aan jou kinders wys \n* Opstaan, al het jy moeg gevoel \n* ’n Glimlag vir iemand \n* Kosmaak om sterk te bly \n* Tyd wat jy saam met jou kinders deurbring \n* Hulp aan jou kinders met hulle skoolwerk", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "text": "Veels geluk met jou voltooiing van @local.workshop_data.in_text_title.\n\nMôre staan ’n nuwe slypskool vir jou gereed: jy sal ’n groot verskil sien deur klein veranderinge aan te bring!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Have a hot drink", - "text": "Drink iets warm", + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Call a friend or relative", - "text": "Skakel ’n vriend of ’n familielid", + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "Wat kon @global.w_instruct_female_caregiver anders gedoen het?", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Have a relaxing bath", - "text": "Ontspan in die bad", + "SourceText": "Said something nice first", + "text": "Eers iets moois gesê het", "type": "template", "note": "" }, { - "SourceText": "Read", - "text": "Lees", + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het", "type": "template", "note": "" }, { - "SourceText": "Watch TV", - "text": "Kyk TV", + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", "type": "template", "note": "" }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Om na onsself om te sien, is ’n belangrike ouerskapvaardigheid. Deel met mekaar:\n\nWatter klein dingetjies maak jou gelukkig?", + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Probeer elke dag iets doen om jouself te beloon.\n\nJy kan hierdie vaardighede tuis gebruik en hulle enige tyd in jou@global.parent_centre vind!", + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Waarom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Reward", - "text": "Beloning", + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar", "type": "template", "note": "" }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Ons verdien almal om onsself goed te behandel!", + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver kon kalm bly", "type": "template", "note": "" }, { - "SourceText": "What small thing makes you happy?", - "text": "Watter klein dingetjies maak jou gelukkig?", + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", "type": "template", "note": "" }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Mooi! Om na jouself om te sien, is ’n belangrike ouerskapvaardigheid!", + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "Kom ons kyk wat gebeur as @global.w_instruct_female_caregiver vir @global.w_instruct_teen_girl sê “MOENIE”:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_1 wees of enigiets anders wat jy geniet.", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver was besig om huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriend dansbewegings geoefen het.\n \n@global.w_instruct_female_caregiver: “Moenie so mors terwyl ek die huis skoonmaak nie. Jy is in die pad!”", "type": "template", - "note": "The string @local.name_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_2 wees of enigiets anders wat jy geniet.", + "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: “Maar ek moet oefen vir die skool se kompetisie. Jy laat my nooit toe om iets te doen nie.” \n\n@global.w_instruct_female_caregiver: “Moenie teëpraat nie!”", "type": "template", - "note": "The string @local.name_2 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_3 wees of enigiets anders wat jy geniet.", + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Arrg!! Hoekom word daar altyd op my geskree????”\n\n @global.w_instruct_female_caregiver by haarself: “Daardie kind veroorsaak altyd moeilikheid.”", "type": "template", - "note": "The string @local.name_3 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_4 wees of enigiets anders wat jy geniet.", + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Dankie dat jy saam gedink het! \n\nKom ons gaan terug in tyd en kyk wat gebeur as @global.w_instruct_female_caregiver ’n positiewe opdrag gee:", "type": "template", - "note": "The string @local.name_4 should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_5 wees of enigiets anders wat jy geniet.", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@global.w_instruct_female_caregiver was besig om die huis skoon te maak terwyl @global.w_instruct_teen_girl saam met haar vriende dansbewegings geoefen het. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, dis lekker om te sien hoe jy jou dansbewegings saam met jou vriend oefen. Gaan doen dit asseblief buite sodat ek die huis kan klaar skoonmaak. Dan kan jy vir my jou dans wys.”\n\n@global.w_instruct_teen_girl: “Okei, @global.w_instruct_female_caregiver!”", "type": "template", - "note": "The string @local.name_5 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Dinge wat jy kan doen om jouself te beloon:", + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: “Dankie dat jy buite geoefen het terwyl ek klaar skoongemaak het, @global.w_instruct_teen_girl. Nou het ek tyd om na jou dans te kyk.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Drink iets warm \n* Skakel ’n vriend of ’n familielid \n* Ontspan in die bad \n* Lees \n* Kyk TV", + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: “Jinne, @global.w_instruct_teen_girl! Jy dans baie goed !”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "RELAX", - "text": "ONTSPAN", + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Gedagte-eksperiment\n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Probeer dit! \n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Doen ’n vinnige ontspanning-aktiwiteit vir 30 sekondes.", + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Gedagte-eksperiment. \n* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om positiewe opdragte te gee\nKOM BY – RAAK POSITIEF – WEES DUIDELIK\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "RECOGNISE", - "text": "ERKEN", + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Bespreek onder mekaar.\n\n* Hoe dink jy het @global.w_instruct_teen_girl gevoel oor die manier waarop @global.w_instruct_female_caregiver gereageer het?\n* Wat kon @global.w_instruct_female_caregiver verskillend gedoen het?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Neem ’n oomblik en dink aan een ding wat JY onlangs goed gedoen het! Sê dit hardop as jy kan: “Mooi so, vir ....”", + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver kon...", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "REWARD", - "text": "BELONING", + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* Eers iets moois gesê het \n* Op ’n kalm manier met @global.w_instruct_teen_girl gepraat het\n* Vir @global.w_instruct_teen_girl gesê het wat sy wil hê sy moet doen", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Onthou, jy verdien ook jou gehaltetyd! Wat maak jou gelukkig?", + "SourceText": "Let's discuss what happened this time.", + "text": "Kom ons bespreek wat hierdie keer gebeur het.", "type": "template", "note": "" }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Noudat ons ’n paar selfsorgvaardighede gebou het, kom ons maak seker dat jou @global.weekly_workshops presies reg is vir jou.", + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Bespreek saam: \n\n* Hoe het @global.w_instruct_teen_girl en @global.w_instruct_female_caregiver toe gevoel?\n* Hoekom, dink jy, het die situasie hierdie keer vir @global.w_instruct_female_caregiver beter afgeloop?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Dit kom voor dat jy reeds die pasmaakproses voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", + "SourceText": "Positive instructions can work with your teen too!", + "text": "Positiewe opdragte kan met jou tiener ook werk!", "type": "template", "note": "" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", + "SourceText": "It worked better this time because...", + "text": "Dit het hierdie keer beter gewerk, want...", "type": "template", "note": "" }, { - "SourceText": "Relax activity", - "text": "Ontspanning-aktiwiteit", + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl het gevoel haar @global.w_instruct_female_caregiver respekteer haar en is lief vir haar\n* @global.w_instruct_female_caregiver kon kalm bly\n* @global.w_instruct_female_caregiver het ’n positiewe ingesteldheid behou", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Recognise activity", - "text": "Erkenning-aktiwiteit", + "SourceText": "Let’s do a thought experiment!", + "text": "Kom ons doen ’n gedagte-eksperiment!", "type": "template", "note": "" }, { - "SourceText": "Reward activity", - "text": "Beloning-aktiwiteit", + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "MOENIE AAN ’N OLIFANT DINK NIE \n\nWaaraan dink jy?", "type": "template", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Elke keer as jy ontspan, iets erken wat jy goed gedoen het of jouself beloon, tik op die@global.parent_points om jou sukses te vier!", + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Jy HET waarskynlik aan ’n olifant gedink...\n\n‘Moenie’-opdragte laat tieners juis aan daardie ding dink. \n\nSoms verstaan hulle nie wat ons WEL van hulle verwag nie. \n\nHulle hou ook nie daarvan om aangesê te word om iets nie te doen nie (is ons nie maar almal so nie?)", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "Jy het hierdie week se slypskool voltooi.\n\nOns sal weer party van die selfsorg-aktiwiteite doen wanneer jy vir die eerste keer met jou groep bymekaar kom – julle verdien almal ’n bietjie ekstra selfsorg!", + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "NOU, DINK AAN ’N JAGLUIPERD!\n\nWaaraan dink jy?", "type": "template", "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Hallo, @field.user_name! Baie geluk met die begin van@global.parent_app Week 5.\n\n’n Nuwe ouerskapwerksessie wag op jou met wenke oor hoe om kalm en in beheer te kan bly wanneer ons tieners ons mal maak.", + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "Dis reg! Positiewe, duidelike opdragte help tieners om te fokus op wat hulle behoort te doen. \n\nTieners sal so ook meer voel hulle word gerespekteer, en sal meer geneig wees om te luister.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Hallo, @field.group_name! Baie geluk met die begin van@global.parent_app Week 5.\n\n’n Nuwe ouerskapwerksessie wag op julle met wenke oor hoe om kalm en in beheer te kan bly wanneer ons tieners ons mal maak.", + "SourceText": "GET REAL", + "text": "KOM BY", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Ons het ’n nuwe werksessie vir jou beskikbaar oor die hantering van woede en stres. Dit sal jou help om beter na jouself om te sien.", + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "Kan jou tiener werklik doen wat jy nou gaan vra? Dit mag dalk vir hulle onmoontlik wees om die hele dag stil te sit en lees, maar die halfuur wanneer jy dit regtig nodig het, is realisties.", "type": "template", "note": "" }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "Gelukkig, hartseer, kwaad, opgewonde, bekommerd? Welgedaan dat jy erken hoe jy en ander mense vandag gevoel het! En onthou, môre is ’n splinternuwe dag.", + "SourceText": "GET POSITIVE", + "text": "WEES POSITIEF", "type": "template", "note": "" }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Ons voel almal soms oorweldig. Dit help om diep asem te haal!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar nuttige hulpmiddels te kry om stres te hanteer.", + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Glimlag, kyk in hulle oë en gebruik positiewe woorde. Prys hulle sodra hulle begin doen wat jy vra!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Hoe was jou stresvlakke hierdie week? Probeer ’n paar keer diep asemhaal voordat jy op jou tiener reageer – dit maak ’n groot verskil.", + "SourceText": "GET CLEAR", + "text": "WEES DUIDELIK", "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "Welgedaan dat jy diep asemhaal voordat jy op jou tiener reageer! Elke keer as jy ’n blaaskans neem, kry jy jou beheer terug.", + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Ons weet dikwels in ons koppe wat ons wil hê, maar ons sê dit nie duidelik genoeg nie. Sê presies wat jy wil hê jou tiener moet doen. Probeer ‘kom asseblief teen 7nm. huis toe’ in plaas van ‘kom betyds huis toe’.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Môre is ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nDeur eers die @local.workshop_data.in_text_title te voltooi, lê jy ’n baie belangrike grondslag: as jy goed voel, sal jou gesin ook beter doen!", + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "Kom ons oefen REGTE, POSITIEWE en DUIDELIKE opdragte. Oefening sal jou help om suksesvol te wees met jou tiener!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "Geluk met die voltooiing van die @local.workshop_data.in_text_title. Môre sal jy toegang tot ’n nuwe slypskool kry om jou te help ontspan en nuttige vaardighede te bou!", + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Kies twee mense uit jou groep:\n* Een persoon gee voor om ’n tiener te wees\n* Die ander een gee voor om die tiener se ouer te wees\n* “Ouer”: Gee jou tiener ’n positiewe opdrag terwyl jy hom/haar aanmoedig en prys\n* “Tiener”: Reageer soos wat jy dink ’n tiener hierop sal reageer \n\nBespreek saam hoe dit gegaan het:\n* Hoe het dit jou as “ouer” en as “tiener” laat voel?\n* Kon jy enigiets op ’n beter manier gedoen het?\n\nGee elkeen ’n kans om die “ouer” en die “tiener” te wees, as dit moontlik is. Oefening bring sukses!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Hallo, @field.user_name! Ons vier vandag twee maande dat jy @global.parent_app gebruik!\n\nJy doen goed! Hierdie week se werksessie sal jou help om te weet wat jy moet doen as jou tiener nie die huisreëls volg nie.", + "SourceText": "Examples of positive instructions:", + "text": "Voorbeelde van positiewe opdragte:", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Hallo, @field.group_name! Ons vier vandag twee maande dat julle @global.parent_app gebruik!\n\nJulle doen goed! Hierdie week se werksessie sal julle help om te weet wat julle moet doen as jou tiener nie die huisreëls volg nie.", + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ek hou van jou musiek. Kan jy dit sagter stel tydens aandete sodat ons kan gesels? Dankie – ek waardeer dit regtig. \n* Dis baie mooi musiek. Wie is die sanger? Skakel asb die musiek af wanneer jy by die huis inkom. Jy kan dit sag in jou kamer speel as jy wil. Dankie!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Welgedaan met jou gebruik van @global.parent_app. Jy het al 6 ouerskaphulpmiddels gekry!\n\nDoen die volgende werksessie om nog ’n ouerskaphulpmiddel te kry!", + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Wonderlik, ek is so bly! Goeie werk, hou so aan.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Voltooi die werksessie en probeer om saam met jou tiener een positiewe en een negatiewe gevolg van ’n sekere optrede te vind.", + "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", + "text": "Jammer dat dinge moeilik gaan. Alle gesinne sukkel. Ons is hier om te help!", "type": "template", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "Kon jy een positiewe en een negatiewe gevolg van ’n sekere optrede saam met jou tiener uitdink?", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "Wat ook al vandag ‘verkeerd’ gegaan het, laat dit gaan en probeer môre weer. Dis oukei!", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Kalm gevolge help jou tiener regtig om die reëls goed te volg – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy soveel toewyding aan jou gesin bewys.", + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Stel weer ’n begroting op – hierdie keer SAAM met jou tiener en gesin!\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Hallo, @field.user_name! Baie geluk met die begin van jou derde @global.parent_app-week.\n\n’n Nuwe werksessie wag op jou! Kan jy die onderwerp van die werksessie op grond van hierdie foto raai?", + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Stel ’n begroting saam met jou tiener en jou gesin op.\n\nDit is ’n belangrike en lekker ding om saam met jou gesin te doen – dit neem ongeveer 30 minute.\n\nOm saam ’n begroting op te stel help tieners verstaan dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Hallo, @field.group_name! Baie geluk met die begin van jul derde @global.parent_app-week.\n\n’n Nuwe werksessie wag op julle! Kan julle die onderwerp van die werksessie op grond van hierdie foto raai?", + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Hersien jou begroting saam met jou tiener en gesin. Dit sal almal daaraan herinner dat ons almal soms moeilike besluite moet neem – maar dat dit ons help om aan die einde van die maand genoeg geld te hê en ons doelwitte te bereik!\n\nBegrotings het al miljoene gesinne gehelp.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", - "text": "Welgedaan met die gebruik van @global.parent_app! Onthou dat dit die klein dingetjies is wat ’n groot verskil maak.", + "SourceText": "Steps to make a budget", + "text": "Stappe om ’n begroting op te stel", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Dankie dat jy @global.parent_app gebruik om in jouself en jou gesin te belê.\n\nProbeer die @local.workshop_data.in_text_title en ontwikkel ’n uitstekende ouerskapvaardigheid!", + "SourceText": "make a budget together with their family", + "text": "stel ’n begroting op saam met hul gesin", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Lof maak ’n groot verskil.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe JY lof in jou gesin kan gebruik.", + "SourceText": "Did you have any challenges when making your budget together?", + "text": "Het julle enige uitdagings gehad toe julle saam julle begroting opgestel het?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Praise time!", - "text": "Tyd om te prys!", + "SourceText": "What whas difficult for you about making your budget together?", + "text": "Wat was vir jou moeilik toe julle saam julle begroting opgestel het?", "type": "template", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Wanneer jy jou tiener weer sien, prys hulle vir een ding wat hulle goed doen!\n\nEn wanneer laas het jy jouself of ’n ander volwassene in jou huishouding geprys? Probeer dit!", + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Ek wou nie vir my gesin sê hoeveel ek verdien nie.", "type": "template", "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title.voltooi het. Môre word ’n nuwe slypskool ontsluit. Probeer dit – jy sal die verskil in jou tiener se gedrag sien.", + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Jy hoef nie die presiese bedrag wat jy verdien, bekend te maak nie; jy kan ’n geskatte bedrag gee. Jy kan sê: “In hierdie huishouding het ons elke maand @global.currency@global.monthly_income_estimate” in plaas van “Ek verdien @global.currency@global.monthly_income_precise”.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Hallo, @field.user_name! Baie geluk met die begin van @global.parent_app Week 4.\n\nHierdie week se werksessie handel oor hoe jy jou kanse kan verhoog om jou tiener te laat doen wat jy hulle vra.", + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Toe ons begroot het, kon ons nie saamstem oor wat onder behoeftes en wat onder begeertes moet val nie.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Hallo, @field.group_name! Baie geluk met die begin van @global.parent_app Week 4.\n\nHierdie week se werksessie handel oor hoe julle jul kanse kan verhoog om jul tieners te laat doen wat van hulle gevra word.", + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Mense se begeertes en behoeftes verskil soms. Om saam daaroor te praat, kan jou en jou tiener help om mekaar te verstaan, julle verskille te respekteer en te kyk waar julle toegewings kan maak.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Praat vriendelik met jouself oor die goeie werk wat jy doen. Daar bestaan nie iets soos ’n perfekte ouer nie, en ons dink jy doen goed!", + "SourceText": "I did not understand what to do.", + "text": "Ek het nie verstaan wat om te doen nie.", "type": "template", "note": "" }, { - "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", - "text": "Jy't nog nie enige @data.habit.instruct_positively.title @global.parent_points gemerk nie. Probeer dit vandag nog!", + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Ek is jammer om dit te hoor. Ek weet dit kan moeilik wees! Hoekom kyk ons nie weer daarna nie? Jou tiener of ander gesinslede kan aansluit en help!", "type": "template", - "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + "note": "" }, { - "SourceText": "Well done!", - "text": "Mooi so!", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "My tiener wou nie die begroting saam met my doen nie.", "type": "template", "note": "" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", - "text": "Jy het die @global.parent_point @data.habit.instruct_positively.title reeds een keer gemerk – jy maak dus goeie vordering.", + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Probeer die begroting eers saam met ander volwassenes in jou huis maak. Jou tiener sal dalk begin belangstel in wat julle doen.\n\nOm ’n begroting te maak, kan ernstig klink, maar probeer om dit pret te maak – maak dit ’n speletjie tydens een-tot-een-tyd! Of jy kan probeer om die begroting eers vir @global.w_money_grandma te maak.\n\nOnthou om jou tiener te prys wanneer julle klaar is!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "Jy't alreeds die @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively aantal kere gemerk - jy maak dus uitstekende vordering.", + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" + "note": "" }, { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "Luister jou tiener altyd na jou? Indien nie (soos die res van ons), kyk na die werksessie van hierdie week om uit te vind hoe positiewe opdragte kan help – baie.", + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Dankie dat jy jou ervarings gedeel het! Welgedaan dat jy gedink het oor hoe jy saam met jou gesin kan begroot en spaar. Dit sal julle werklik help om jul gesinsdoelwitte te bereik. \n\nSaam kan julle soveel goeie dinge bereik!", "type": "template", "note": "" }, { - "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", - "text": "Positiewe opdragte help om al hoe meer goeie gedrag te sien!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar idees te kry oor hoe dit in jou gesin kan werk.", + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Baie gesinne verkeer onder spanning weens geld, veral as tieners aanhoudend vir goed vra!\n\nWanneer ons saam ’n begroting opstel, kan ons ooreenkom oor hoe om te bestee EN te bespaar, om spanning te voorkom en ons gesin se doelwitte na te streef.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Soos gewoonlik kry jy môre toegang tot ’n nuwe slypskool. Dit sal help as jy die vorige slypskool voor die tyd voltooi.\n\nSommige ouers gebruik die toep terwyl hulle werk toe ry. Waarom gebruik jy die toep nie as jy ’n paar minute het nie?\n\nWeereens baie dankie vir jou gebruik van @global.parent_app.", + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Goeiedag, almal.\n\nVandag se onderwerp is begrotings. \n\nDit is belangrik om te begroot, maar dis selfs belangriker om die hele gesin by die opstel van ’n begroting te betrek.\n\nWanneer dit saam gedoen word, help dit om die vlak van begrip oor hoe julle as gesin geld bestee en hoeveel julle vir die gesin spaar, te verhoog, en julle kan selfs planne maak oor hoe julle as gesin kan spaar.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", - "text": "Veels geluk met jou voltooiing van @local.workshop_data.in_text_title.\n\nMôre staan ’n nuwe slypskool vir jou gereed: jy sal ’n groot verskil sien deur klein veranderinge aan te bring!", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe. Jy benodig: \n\n– Papier (of ou koerante of ’n kartonboks) en penne\n– Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed te kry voor ons met die eerste stap begin.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "First @global.weekly_workshop!", - "text": "Eerste @global.weekly_workshop!", + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "’n Gesinsbegroting kan vir @global.w_money_grandma help – en vir JOU!", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Hallo, @fields.user_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Daar is vier stappe om ’n gesinsbegroting op te stel:\n\nStap 1: DINK\nStap 2: KIES\nStap 3: BOU\nStap 4: BEPLAN\n\nKom ons gaan saam deur die stappe.", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Hallo, @fields.group_name. Jou @local.workshop_data.in_text_title is gereed vir jou.", + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "Jy benodig: \n* Papier (of ou koerante of ’n kartonboks) en penne\n* Klippies of boontjies of enigiets waarvan jy baie het, om geld voor te stel\n \nNeem ’n minuut om hierdie goed bymekaar te kry voor ons met die eerste stap begin.", "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Om tyd met jou tiener deur te bring, help om vertroue tussen julle op te bou.\n\nGaan nou voort met jou@global.parent_app-reis – jy en jou gesin sal goeie resultate sien.", + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* kos \n* water en elektrisiteit\n* klere \n* rekeninge \n* TV-intekening \n* toiletware \n* haarkapper \n* lugtyd\n* skoolgeld \n* vervoer\n* versekering/polisse \n* medisyne\n* vermaak/sport \n* huur \n* lenings \n* kerk", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Dankie dat jy soveel moeite doen om ’n beter ouer te wees. Jy is geliefd en gewaardeer!", + "SourceText": "Think about what we spend money on each month.", + "text": "Dink oor waaraan ons elke maand ons geld bestee.", "type": "template", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Het jy al tyd saam met jou tiener deurgebring?", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Kry ’n stuk papier (of ou koerante of ’n kartonboks) en ’n pen.\n* Teken prentjies van al die goed waarop jy en jou gesin elke maand geld spandeer. \n* Skryf langs elke prentjie hoeveel elke ding elke maand kos. (Dis nie nodig om die syfers te deel as jy nie wil nie.)\n* Tel op hoeveel geld jy elke maand moet bestee.", "type": "template", "note": "" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Dankie dat jy @global.parent_app gebruik en jou tot jou ouerskap verbind.\n\nJou @local.workshop_data.in_text_title is gereed vir jou!", + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Wonderlik! Jy is klaar met Stap 1!\n\nKom ons gaan voort!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dit sal nie lank neem nie, en jy sal waardevolle inligting kry. \n\nWelgedaan dat jy ’n beter ouer probeer wees. Môre kan jy toegang tot ’n nuwe slypskool kry.", + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Praat saam oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot ’n nuwe werksessie kry om jou te help ontspan en nuwe vaardighede om te geniet en aan te leer!", + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Mense sien dinge dikwels nie op dieselfde manier nie. Wanneer ons oor ons behoeftes en begeertes praat, verstaan ons mekaar beter en kan ons saam goeie keuses maak oor hoe om ons geld te bestee.\n\nKyk na jou lys van goed waarop julle geld bestee en bespreek:\n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Hallo, @field.user_name! ’n Krisis kan met almal gebeur – om voorbereid te wees help baie.\n\nHierdie werksessie sal jou wys hoe.", + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Dink oor julle behoeftes en begeertes\n\nBEGEERTE: Iets waarsonder jy kan lewe\nBEHOEFTE: Iets waarsonder jy nie kan lewe nie", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Hallo, @field.group_name! ’n Krisis kan met almal gebeur – om voorbereid te wees help baie.\n\nHierdie werksessie sal julle wys hoe.", + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Kyk na jou lys van goed waarop julle geld spandeer en kies: \n* Watter is BEHOEFTES waarsonder jy nie kan lewe nie? Hoekom?\n* Watter is BEGEERTES wat lekker is om te hê, maar nie noodsaaklik is nie? Hoekom?\n*Op watter van die goed kan julle as gesin probeer om minder geld te bestee?", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "Jy is ’n toegewyde ouer. Wees trots op jouself – dit is ’n groot prestasie op sigself!", + "SourceText": "Make a budget!", + "text": "Stel ’n begroting op!", "type": "template", "note": "" }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Ons weet nooit wanneer ’n krisis kan plaasvind nie, maar ons KAN voorbereid wees!\n\nBegin die volgende werksessie om te ontdek hoe jy dit saam met jou tiener kan doen.", + "SourceText": "Make a budget as one big family!", + "text": "Stel ’n begroting op as een groot gesin!", "type": "template", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Dis so goed dat jy saam met ons op hierdie ouerskapreis is!\n\nVoltooi die @local.workshop_data.in_text_title en leer wat die beste manier is om te reageer wanneer jou tiener jou die nodigste het.", - "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." - }, - { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "Het jy met jou tiener bespreek wat jy in ’n krisissituasie sou doen?", + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Een persoon sal aanbied om sy/haar lys te deel. (as niemand aanbied nie, kan julle saam ’n nuwe lys opstel). \n* Neem rolle aan – party sal volwassenes wees, party sal tieners wees. \n* Besluit wat julle inkomste is vir die maand.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste @global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit saam hoeveel julle op iets wil bestee en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Crisis Examples", - "text": "Voorbeelde van krisisse", + "SourceText": "Make a budget as a family!", + "text": "Stel as gesin ’n begroting op!", "type": "template", "note": "" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Môre sal die laaste @global.parent_app-slypskool vir jou gereed wees.\n\nProbeer om @local.workshop_data.in_text_title te voltooi voordat jy met die nuwe slypskool begin. Op hierdie manier kan jy jou ouerskapvaardighede voltooi en besluit wat jy volgende moet doen!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "Geluk met die voltooiing van @local.workshop_data.in_text_title. Môre kan jy toegang tot die laaste slypskool kry om na te dink oor jou @global.parent_app-reis en wat jy volgende kan doen!", + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Skryf neer wat julle inkomste vir die maand is.\n* Neem ’n paar klippies of boontjies, of enigiets waarvan jy baie het – dis julle inkomste vir die maand. \n(Byvoorbeeld: As jou inkomste@global.currency@local.monthly_income is, en jy het @local.number_of_beans boontjies, is elke boontjie @global.currency@local.bean_value.) \n* Besluit hoeveel julle op iets wil spandeer en plaas die klippies/voorwerpe op daardie prent. \n\nIs julle dalk nie seker oor jul besluite nie? Sukkel julle om tussen “behoeftes” en “begeertes” te besluit? Dis doodreg!", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Hallo,@field.user_name! Jy is amper aan die einde van jou @global.parent_app-werksessies! Dankie vir jou volgehoue toewyding.\n\nHierdie week se werksessie handel oor die beskerming van ons tieners, aanlyn sowel as in die gemeenskap. Geniet dit!", + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Beplan hoe jy geld kan spaar, sodat jy noodgevalle kan hanteer en jou gesin se doelwitte kan bereik!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Hallo, @field.group_name! Julle almal is amper aan die einde van jul @global.parent_app-werksessies! Dankie vir julle volgehoue toewyding.\n\nHierdie week se werksessie handel oor die beskerming van ons tieners, aanlyn sowel as in die gemeenskap. Geniet dit!", + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "As jy selfs net ’n klein bedraggie vir die toekoms of vir ’n noodgeval kan spaar, sal dit oor tyd ’n groot verskil maak. \n* Voeg ’n sirkel by en noem dit “noodgevalle”.\n* Voeg ’n sirkel by en noem dit “gesin se doelwitte”.\n* Probeer nou jou geld rondskuif sodat jy elke maand ’n bietjie vir elk hiervan kan spaar.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Hierdie is van die moeilikste tye om ’n ouer te wees. Jy moet so trots op jouself wees oor alles wat jy gedoen het.\n\nDink aan elke keer dat jy jou tiener laat glimlag het en al die sorg wat jy hulle gegee het. Ouers is ongelooflik, en jy is ongelooflik!", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou groep verdien om geprys te word, of hoe?", "type": "template", "note": "" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "Jy het die afgelope paar weke reeds soveel ouerskapvaardighede aangeleer!\n\nVoltooi die volgende slypskool om nog ’n nuttige vaardigheid aan te leer.", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – en dit sal ’n groot verskil maak as dit gebruik word. Ek dink elke persoon in jou gesin verdien om geprys te word, of hoe?", "type": "template", "note": "" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "Om jou tiener veilig te hou, dra dit by om saam te gesels oor julle gemeenskap en hul aanlyn ervarings.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe julle dit kan doen!", + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "VEELS GELUK!!! Jy het jou gesin se begroting opgestel – onthou om hierdie oefening weer saam met jou ander gesinslede te doen – as julle saam oor ’n plan ooreenkom, sal dit ’n reuseverskil maak!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Om ’n plan saam met jou tiener te maak, kan baie probleme voorkom – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy@global.parent_app gebruik om jou gesin te ondersteun.", + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Wanneer jy alleen of oorweldig voel, weet dat jy nie alleen is nie. Daar is ouers regoor die wêreld wat dieselfde uitdagings as jy ondervind.\n\nJy doen elke dag jou bes en ons is almal trots op jou!", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Baie geluk met jou voltooiing van @local.workshop_data.in_text_title.. Môre is ’n nuwe werksessie gereed om jou en jou gesin te help om enige situasie die hoof te bied – saam kan julle soveel doen!", + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Deur jou gesin te betrek by die manier waarop jy jou geld spandeer, kan baie spanning en stryery weggeneem word.\n\nVoltooi die @local.workshop_data.in_text_title om jou gesin met begroting en besparing te help. Dit is eintlik maklik – jy sal sien!", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Hallo, @field.user_name! Jy maak goeie vordering op jou ouerskapreis!\n\nOm ’n tiener te hê, beteken dat jy talle onverwagte probleme moet hanteer. Hierdie werksessie sal jou wys hoe jy dit moet hanteer.", + "SourceText": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Hallo, @fields.user_name! Jy begin met die tweede maand wat jy @global.parent_app gebruik. Fantasties! \n\nBykans alle gesinne sukkel met geldkwessies, daarom sal hierdie week se werkswinkel jou toerus om jou uitgawes so te beplan dat jy genoeg geld sal hê om deur die maand te kom.", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Hallo, @field.group_name! Julle maak goeie vordering op julle ouerskapreis!\n\nOm ’n tiener te hê, beteken dat julle talle onverwagte probleme moet hanteer. Hierdie werksessie sal julle wys hoe julle dit moet hanteer.", - "type": "template", - "note": "The string @field.group_name should not be translated." - }, - { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Julle toegewydheid is ’n inspirasie vir almal. Bly kalm en gaan voort!", + "SourceText": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Hallo, @fields.group_name! Jy begin met die tweede maand wat jy @global.parent_app gebruik. Fantasties! \n\nBykans alle gesinne sukkel met geldkwessies, daarom sal hierdie week se werkswinkel jou toerus om jou uitgawes so te beplan dat jy genoeg geld sal hê om deur die maand te kom.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Met tieners, en die lewe, duik onverwagte probleme op en ons moet dit hanteer.\n\nBegin met die volgende werksessie om te leer hoe jy hierdie probleme suksesvol kan hanteer.", + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "text": "Voel jy gestres oor geld? Hou jou tiener aan vra vir dinge wat jy nie kan bekostig nie?\n\nHierdie week se werksessie handel oor geld en begroting.", "type": "template", "note": "" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "Jy is op die regte pad om probleme saam met jou tiener op te los!\n\nVoltooi die @local.workshop_data.in_text_title en kry nog ’n belangrike ouerskapvaardigheid!", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Baie ouers het gesê dat om ’n begroting te maak, vrede in hul huis teruggebring het – dit kan ook vir julle werk.\n\nWeereens baie dankie dat jy so ’n toegewyde ouer is.", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Het jy al die vier stappe van probleemoplossing met jou tiener probeer?\n\nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "text": "Welgedaan met jou voltooiing van @local.workshop_data.in_text_title. Môre word ’n nuwe slypskool ontsluit om jou te help om gesinsreëls wat werk, op te stel.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. As julle weet hoe om probleme saam op te los, sal baie situasies makliker wees!", + "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text": "Dit kan baie moeilik wees om elke maand met jou geld uit te kom. Baie gesinne het hierdie probleem!\n\nSluit @global.w_money_grandma in. Kom ons kyk:", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title voltooi het. Môre word ’n nuwe slypskool ontsluit om jou te help om jou tiener veilig te hou.", + "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text": "@global.w_money_grandma: “Ek pas my kleinkinders, @global.w_money_teen_girl en @global.w_money_teen_boy, op vandat hul ouers oorlede is toe hulle jonk was. Ons sukkel dikwels met geld, aangesien ek net ’n klein toelaag kry.”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Hallo, @field.user_name! Nuwe week, nuwe werksessie! Leer hoe jy huisreëls kan opstel op ’n manier wat die kanse sal vergroot dat jou tiener daarby sal bly.", + "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", + "text": "@global.w_money_grandma: “Ek is onder soveel spanning. Ek het geen geld oor nie. En nou baklei ek met my tieners oor goed wat hulle wil hê – weer eens.”", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Hallo, @field.group_name! Nuwe week, nuwe werksessie! Leer hoe julle huisreëls kan opstel op ’n manier wat die kanse sal vergroot dat jul tieners daarby sal bly.", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Goeie werk, jy het die eerste 3 stappe voltooi!\n\nKom ons kyk hoe@global.w_money_grandma ’n plan met haar geld gemaak het, net soos jy nou doen:", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Soms voel dit asof jou tieners nog steeds knorrig is, selfs al het jy jou bes gedoen. Onthou dat jy uitstekende werk doen en dat daar ook goeie tye saam met hulle sal wees!", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "“Ek wil die beste toekoms vir my kleinkinders hê, maar ek weet nie waar om die geld te kry nie. Geldskieters is gevaarlik en dis so duur om hulle terug te betaal. \n\nEk behoort te spaar, maar dit voel onmoontlik!”", "type": "template", "note": "" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Weereens baie dankie dat jy @global.parent_app gebruik en dat jy toegewyd is aan jou ouerskapreis.\n\nDie @local.workshop_data.in_text_title sal jou wys hoe om reëls op te stel op ’n manier wat jou tiener sal help om dit beter te verstaan en te volg.", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "“My doel is om seker te maak dat my kleinseun hoërskool toe kan gaan en my kleindogter haar droom van universiteit kan verwesenlik. Hoe kan ek geld spaar met die min wat ek het?”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "Jy is op die punt om nog ’n ouerskaphulpmiddel te verkry! Voltooi die @local.workshop_data.in_text_title, stel EEN eenvoudige en realistiese reël saam met jou tiener op, en kyk hoe dinge verander!", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "“Ek weet – kom ons begin met ’n plan! Ek sal eers ’n begroting maak – ’n plan vir hoe ek my geld kan spaar. Dan sal ek net ’n bietjie geld op ’n slag spaar – ek sal selfs by ’n spaar- en leningsgroep aansluit.”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "Kon jy saam met jou tiener ’n reël opstel?", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "“Ek moet met my kleinkinders praat sodat hulle goed kan kies waarop ons elke week net ’n bietjie minder sal bestee. Hulle sal my help dink aan goed wat ons graag wil hê, maar nie nodig het nie.”", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. Dit sal nie lank neem nie en dit sal jou tiener help om die reëls beter te volg!", + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "’n Paar jaar later:\n\n“Kyk, ons het ons drome verwesenlik! Ek het nie enige geld by vriende of geldskieters geleen nie. Deur elke week net ’n klein bietjie te spaar, het ek dit reggekry om vir @global.w_money_teen_boy se hoërskool te betaal en geld vir @global.w_money_teen_girl se universiteit te spaar. Ek is so trots hierop.”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Baie geluk met jou voltooiing van die @local.workshop_data.in_text_title.\n\nMôre sal ’n nuwe slypskool jou help om te weet wat jy moet doen as tieners slegte (of goeie) gedrag toon!", + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Om te spaar is om nog ’n rede belangrik: noodgevalle! @global.w_money_grandma het dit ook algaande geleer:", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Hallo, @field.user_name! Jy begin jou tweede maand met @global.parent_app. Ongelooflik!\n\nByna elke gesin sukkel met geldkwessies, daarom bied die slypskool van hierdie week vir jou ’n hulpmiddel wat jou kan help om jou uitgawes te beplan, sodat jy genoeg geld kan hê om deur die maand te kom.", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Een nag was daar ’n vreeslike storm wat my dak gebreek het. Alles was onder water. Ek moes skielik geld kry om die dak te laat regmaak. Ek het net verlore gevoel.”", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Hallo, @field.group_name! Julle begin jul tweede maand met @global.parent_app. Ongelooflik!\n\nByna elke gesin sukkel met geldkwessies, daarom bied die slypskool van hierdie week vir julle ’n hulpmiddel wat julle kan help om jul uitgawes te beplan, sodat julle genoeg geld kan hê om deur die maand te kom.", + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Neem ’n oomblik en wees beïndruk met wat jy bereik het, ten spyte van die talle ander dinge wat jy elke dag moet doen.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "Voel jy gestres oor geld? Hou jou tiener aan vra vir dinge wat jy nie kan bekostig nie?\n\nHierdie week se werksessie handel oor geld en begroting.", + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Storie – dit het nie gewerk nie...\n* Begroting-oefening\n* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het nie gewerk nie... \n* Bespreking oor opsies vir spaar\n* Besparing-oefening\n* Hulpmiddels: Hoe om te begroot en te bespaar \nDINK – KIES – BOU – BEPLAN\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Wanneer jy alleen of oorweldig voel, weet dat jy nie alleen is nie. Daar is ouers regoor die wêreld wat dieselfde uitdagings as jy ondervind.\n\nJy doen elke dag jou bes en ons is almal trots op jou!", + "SourceText": "Step 1: THINK", + "text": "Stap 1: DINK", "type": "template", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", + "SourceText": "What do we spend on now?", + "text": "Waarop bestee ons nou ons geld?", "type": "template", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Deur jou gesin te betrek by die manier waarop jy jou geld spandeer, kan baie spanning en stryery weggeneem word.\n\nVoltooi die @local.workshop_data.in_text_title om jou gesin met begroting en besparing te help. Dit is eintlik maklik – jy sal sien!", + "SourceText": "THINK Activity", + "text": "DINK-aktiwiteit", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Baie ouers het gesê dat om ’n begroting te maak, vrede in hul huis teruggebring het – dit kan ook vir julle werk.\n\nWeereens baie dankie dat jy so ’n toegewyde ouer is.", + "SourceText": "Step 2: CHOOSE", + "text": "Stap 2: KIES", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "Welgedaan met jou voltooiing van @local.workshop_data.in_text_title. Môre word ’n nuwe slypskool ontsluit om jou te help om gesinsreëls wat werk, op te stel.", + "SourceText": "Talk together about needs and wants", + "text": "Praat met mekaar oor behoeftes en begeertes", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Onthou – hierdie week gaan oor JOU! Ons hoop dat jy jouself goed behandel. Jy verdien dit!", + "SourceText": "CHOOSE Activity", + "text": "KIES-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Begin môre met ’n splinternuwe @global.parent_app-slypskool. Jy sal die goeie resultate sien!", + "SourceText": "Step 3: BUILD", + "text": "Stap 3: BOU", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "Het jy jou @global.parent_app-maats al van die toep vertel? Vanaf môre kan julle jul @global.parent_app-slypskool saam begin doen!", + "SourceText": "Make your own budget", + "text": "Stel jou eie begroting op", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "" }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Om 'n vriend of geliefde te verloor is vir almal moeilik. Om goed te wees vir jouself en om dinge te doen wat jou help om hierdie moeilike tyd die hoof te bied help jou tiener ook!", + "SourceText": "BUILD Activity", + "text": "BOU-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Find a support group", - "text": "Vind 'n ondersteuningsgroep", + "SourceText": "Step 4: PLAN", + "text": "Stap 4: BEPLAN", "type": "template", "note": "" }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "-Hartseer kan ons vir weke, maande of jare lank affekteer. Jy hoef nie vinnig beter te voel nie.\n-Slaap en eet genoeg - dit is moeilik om na tieners om te sien as jy moeg en honger is.\n-Maak 'n lys van dinge wat jou beter laat voel, en doen hulle.\n-Probeer om een eenvoudige ding elke dag te doen om saam met jou tiener te ontspan, asook vir jouself.\n-Dis oukei om nie goed te voel nie en dis oukei om te huil. Moet jouself nooit blameer nie, hierdie is nie jou skuld nie.\n-Daar is altyd hoop selfs na verlies. Probeer eenvoudige dinge geniet, en vind 'n minuut of wat om iets prettig of ontspannend met jou tiener te doen.\n-Vind een of twee volwassenes wat jou kan ondersteun, na jou luister en met jou gesels.", + "SourceText": "Emergencies and family goals", + "text": "Noodgevalle en gesinsdoelwitte", "type": "template", "note": "" }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "-Om met iemand wat jou ondersteun te kan praat en na jou te luister kan help.\n-Dit kan ook help om aan te sluit by 'n groep mense wat self iemand verloor het.\n-Niemand is perfek nie. Dis oukei om oor goeie en slegte herinneringe te praat.", + "SourceText": "PLAN Activity", + "text": "BEPLAN-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Tieners hanteer verlies op verskillende maniere, net soos volwassenes. Jy kan hulle help om die situasie en hul gevoelens te verstaan deur veilige ruimtes te skep waar julle albei dit kan deel en verwerk.", + "SourceText": "What are your family savings goals?", + "text": "Wat is jou gesin se spaardoelwitte?", "type": "template", "note": "" }, { - "SourceText": "Be honest", - "text": "Wees eerlik", + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Sulke goeie doelwitte! \n\nSo ’n goeie doelwit! Wanneer ons saam ’n goeie begroting en spaarplan opstel, kan ons dit bereik en trots wees op onsself!", "type": "template", "note": "" }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "-Vertel jou tiener dat die persoon oorlede is - soms besef hulle dit nie.\n-Vertelling is 'n proses, nie 'n gebeurtenis nie. Jy mag vind dat dit nodig is om hulle oor en oor te vertel.\n-Gebruik woorde wat hulle verstaan.\n-As jonger tieners nie begryp wat dood is nie, help deur te verduidelik dat die geliefde persoon nie gaan terugkom nie. Probeer om 'slaap' of 'n 'lang reis' as beskrywing daarvan te vermy.\n-Ouer tieners mag wel 'n beter begrip van dood toon, maar hulle mag sukkel om hulle emosies te deel of te verwerk.\n-Tieners kan op verskeie maniere reageer: huil, skree, ongeloof uitspreek of in stilte onttrek. Al hierdie reaksies is oukei. Vertel hulle dat jy dáár is met hulle.\n-Laat vrae en openlike gesprekke toe. Wees eerlik. Dis oukei om te erken ons weet nie.", + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Ons het almal drome vir ons gesin, net soos@global.w_money_grandma. Deur elke maand ’n bietjie geld weg te sit, kan jy ook jou drome verwesenlik!", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "-Tieners mag hartseer, woede, onbegrip of ongeloof toon, 'n verlammende gevoel ervaar, sleg voel of pyn, nagmerries of probleme by die skool ondervind. Jou tiener mag gelukkig voorkom, maar steeds hartseer wees. Hulle mag hulself afsluit en meer tyd saam met vriende wil deurbring. Hulle mag ook onverwagte of gevaarlike gedrag openbaar. Dit mag dalk nie vir jou sin maak nie, maar tog is dit alles normaal.\n-Tieners mag voel dat dit hulle skuld is - dat hulle die virus oorgedra het, of dat hulle hul swak gedra het. Vertel hulle duidelik dat hulle niks verkeerd gedoen het nie.", + "SourceText": "What are your family savings goals?", + "text": "Wat is jou gesin se spaardoelwitte?", "type": "template", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "-Verduidelik dat hartseer met baie emosies en reaksies gepaard gaan. Wys vir jou tiener dat hulle geliefd en versorg is, en moedig hulle aan om hul emosies te deel deur daaroor te praat, skryf of teken.\n-Indien daar 'n ondersteuningsgroep is waarvan jou tiener kan deel word, kan dit help.\n-As 'n tiener praat van hulself beseer of om die lewe bring, vra vir hulp by iemand so vinnig as wat jy moontlik kan.\n-Indien moontlik, hou by jou normale daaglikse routines, dit kan vir 'n tiener vertroostend wees.\n-Dit kan help vir tieners om deel te neem aan rituele rondom die dood - om 'n lied te kies of om iets te sê.\n-Deur elke dag 'n paar minute op jou tiener te fokus help om hulle veiliger te laat voel en gee hulle 'n kans om te ontspan of te praat oor dinge wat hulle ontstel.", + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "So ’n goeie doelwit! \n\nWanneer jy ’n goeie begroting en spaarplan opstel, kan jy dit bereik en trots wees op jouself!", "type": "template", "note": "" }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Die verlies van 'n geliefde kan baie oorweldigend voel. Hier is 'n paar praktiese wenke wat van hulp kan wees om in gedagte te hou.", + "SourceText": "Let's talk about this story.", + "text": "Kom ons praat oor hierdie storie.", "type": "template", "note": "" }, { - "SourceText": "Ask for help", - "text": "Vra vir hulp", + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "Vir @global.w_money_grandma was dit ’n storm.\n\nWatter ander noodgevalle kan by ons opduik?", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "- Vra iemand op wie jy staat kan maak om jou te help - kos of kindersorg kan van waarde wees. Jy mag dalk dokumente vir erflatings, vir jou kinders of vir toegang tot dienste benodig. \nSoms probeer mense om geld of erfporsies van ‘n persoon in rou af te rokkel. Vind uit wat jou regte is.", + "SourceText": "Let's think about this story.", + "text": "Kom ons dink oor hierdie storie.", "type": "template", "note": "" }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "-Om afskeid te neem is moeilik. Doen wat vir jou en jou tiener oukei voel.\n-Families, tieners en ouers is nie perfek nie. Wanneer iemand sterf, is dit oukei om te praat oor ons goeie en slegte herinneringe.\n-Dit kan help om 'n brief te skryf of iets te teken vir die oorlede persoon. \n-Sommige mense hou 'n seremonie of 'n spesiale ete om die oorledene te vier, en afskeid te neem.\n-Dit kan help om 'n houer van herinneringe te maak, om dinge in te hou wat jou en jou tiener aan die persoon herinner.\n-Dit kan help om selfs net oor die persoon te praat wanneer jy aan hulle dink.", + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "Vir @global.w_money_grandma was dit ’n storm.", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Neem aan die end van die dag ’n minuut om:\n\n* Met jou tiener te praat oor iets lekkers wat hulle gedoen het.\n* Jouself te prys vir een ding wat jy vandag goed gedoen het.\n* Jy’s ’n ster!", + "SourceText": "What other emergencies could come up for your family?", + "text": "Watter ander noodgevalle kan by jou gesin opduik?", "type": "template", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Vra vir mekaar: “Wat het jou vandag gelukkig gemaak?”\n* Vra vir mekaar: “Met watter probleme het jy vandag te doen gehad?”\n* Vra vir mekaar: “Hoe kan ek jou help?”\n* Probeer dit elke dag saam doen; julle kan dit doen wanneer julle saam aandete eet of voor julle gaan slaap.", + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Noodgevalle kan in enige gesin opduik. Om vir hierdie noodgevalle te spaar VOOR hulle gebeur, voorkom mens baie skielike bekommernis en spanning!", "type": "template", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Jy kan nie altyd reis nie, maar jy kan altyd droom! Vra jou tiener hierdie vrae:\n* Waarheen sou jy wou reis? Hoe lank sou jy weg wees? Wat sou jy inpak? Wat sou jy op jou reis doen? Wat sou jy sien?\n* Kyk saam na ’n kaart of teken een.\n* Kies ’n land waarvan jou tiener nog nooit gehoor het nie en leer meer oor die land.", + "SourceText": "Let's talk about different ways we can save.", + "text": "Kom ons praat oor die verskillende maniere waarop ons kan spaar.", "type": "template", "note": "" }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Jy en jou tiener kan ’n gastelys beplan van die beroemde mense wat jy die graagste na julle partytjie wil nooi. Elkeen kan vyf mense hê – hulle kan uit die verlede of uit die huidige tyd wees. Wie sou jy nooi? En sal julle gaste goed met mekaar oor die weg kom?", + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Bespreek saam:\n* Op watter verskillende maniere kan ons spaar?\n* Wat is die voor- en nadele van elke spaaropsie?\n\nOm elke opsie goed te verstaan, sal jou help om te besluit wat die beste spaaropsie vir jou gesin is.\n\nWatter spaaropsie jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", "type": "template", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Dink aan drie stellings oor jouself. Twee moet waar wees en een moet ’n leuen wees.\n* Dit kan help om te dink aan wense, drome, ervarings op skool, dinge waarvan jy hou of nie hou nie. Byvoorbeeld: ek haat piesangs, my gunstelingvak is wetenskap en ek wens regtig ek kon sing.\n* Sê dit vir jou tiener en vra hulle om te raai watter een ’n leuen is.\n* Het hulle reg geraai? Was dit ’n verrassing?\n* Vra hulle nou om dieselfde te doen. Het julle iets nuuts omtrent mekaar geleer?", + "SourceText": "Let's think about different ways we can save.", + "text": "Kom ons dink aan verskillende maniere hoe ons kan spaar.", "type": "template", "note": "" }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Vertel jou tiener iets van jouself toe jy ’n tiener was. Watter dinge het toe nog nie bestaan nie? Fone met internet? Wat het jy vir die pret gedoen? Waaroor was jy bekommerd? Moenie bekommerd wees as hulle jou niks terugvertel nie – wat belangrik is, is dat hulle luister en onthou. Soms vergeet ons tieners dat hul ouers ook mense is!", + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Daar is verskillende maniere hoe ons kan spaar: tuis, om goed te koop wat ons later kan verkoop, by ’n bank, of in ’n spaargroep.\n\nDink aan die voor- en nadele van elke spaaropsie.", "type": "template", "note": "" }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Dink aan ’n superkrag. Byvoorbeeld, om dadelik na enige plek te kan gaan, in tyd te reis, gedagtes te lees.\n* Vra jou tiener: “As jy die superkrag gehad het om [...] te gebruik, hoe sou jy dit gebruik?”\n* Moedig hulle aan om hul superheld ’n naam te gee en dit uit te voer.\n* Laat jou tiener nou toe om ’n superkrag vir jou te kies.\n* Maak seker dat jy ook jou superkrag uitvoer!", + "SourceText": "What is the best savings option for your family?", + "text": "Wat is die beste spaaropsie vir jou gesin?", "type": "template", "note": "" }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Gesels met jou tiener oor iets waarvan hulle hou.\n\nDit kan oor enigiets wees waaroor hulle wil praat: sport, vriende, musiek, bekendes ...\n\nProbeer om na jou tiener te luister en gee hulle ruimte om te praat.", + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Watter spaarplan jy ook al kies, dit sal jou gesin regtig help om vorentoe te beweeg!", "type": "template", "note": "" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Kies ’n storieverteller om ’n storie op te maak.\n* Storieluisteraars kan enige tyd onderbreek met ’n woord.\n* Storieverteller moet daardie woord in hul storie insluit.\n* Wanneer die storie klaar is, probeer dit dan met ’n ander storieverteller!", + "SourceText": "Caring for yourself is so essential.", + "text": "Dis uiters belangrik om na jouself om te sien.", "type": "template", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Dink aan drie verskillende situasies. Byvoorbeeld, om ’n motor te bestuur, ’n boot te laat seil of ’n vliegtuig te laat vlieg.\n* Noem dit vir jou tiener en vra: “Watter een sou jy verkies?”\n* Vra hulle hoekom?\n* Dink nou aan nog drie situasies of vra jou tiener om dit vir jou te doen.", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Wonderlik, ek is so bly dit gaan goed. Hou so aan.", "type": "template", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Vra mekaar vrae. Dit kan vrae wees oor dinge waarvan julle hou of wat julle vandag gedoen het.\n* Die enigste reël is dat julle nie “Ja”, “Nee” of “Miskien” kan antwoord nie.\n* Hoe lank kan julle aanhou? Hoe kreatief kan julle wees met julle antwoorde?\n* Ruil om en speel weer!", + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Hierdie week se tuisoefening is om jou tiener een keer per dag te prys. Dit sal net 10 sekondes neem!", "type": "template", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Die eerste persoon sê: “Saterdag gaan ek... (bv. na die park)”\n* Tweede persoon voeg by tot die eerste persoon: “Saterdag gaan ek na die park en...” (bv. by my beste vriend kuier).\n* Elke persoon voeg by tot die vorige en probeer dink aan al die prettige dinge om Saterdag te doen.", + "SourceText": "Your goal was to praise your teen.", + "text": "Jou doelwit was om jou tiener te prys.", "type": "template", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Begin die storie met “Eendag was daar...”\n* Laat jou tiener die volgende sin opmaak.\n* Dan maak jy ’n sin op.\n* Maak beurte totdat julle ’n wonderlike nuwe storie het.\n* Maak seker dat julle die storie op ’n positiewe noot afsluit.\n* Vra jou tiener wat sy/haar gunsteling deel van die storie was!", + "SourceText": "Did you have a chance to praise your teen this week?", + "text": "Het jy hierdie week ’n kans gehad om jou tiener te prys?", "type": "template", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "* Vra jou tiener watter ete hy/sy wil eet.\n* Berei dit saam voor!\n* Gee jou tiener ’n beurt om die hoofkok te wees – hy/sy neem die leiding en jy volg sy/haar instruksies.\n* Jy kan hulle selfs help om ’n begroting vir die bestanddele op te stel!\n\nDink jy dat dit nie sal werk nie? Vra jou tieners wat hulle wil hê dat jy en hulle saam moet doen. Laat hulle die leiding neem. Ontspan. Geniet dit.", + "SourceText": "Yes", + "text": "Ja", "type": "template", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Maak ’n stel danspassies vir jou tiener se gunstelingliedjies.\n* Een persoon doen ’n danspassie en almal aap dit na.\n* Almal maak beurte om die leier te wees.\n* Voer dit vir die huismense op!", + "SourceText": "No", + "text": "Nee", "type": "template", "note": "" }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Hierdie speletjie kan in pare of met baie mense in ’n groep gespeel word.\n* Staan teenoor mekaar of in ’n kring.\n* Een persoon lei eerste en almal maak hulle na en probeer presies op dieselfde tyd as die leier beweeg.\n* Maak seker dat die leier stadig genoeg beweeg sodat almal kan volg! Probeer om verskillende liggaamsdele en op verskillende vlakke te beweeg.\n* Verander na ’n rukkie van leier. Gee almal ’n kans om te lei.\n* Probeer dit sonder leiers!", + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Dit kan soms moeilik wees om te onthou om ons tieners te prys. Volgende keer dat jy een-tot-een-tyd saam met jou tiener deurbring, probeer dink aan een ding waarvoor jy hulle kan prys. Jy kan selfs sê: “Dankie dat jy tyd met my spandeer het!”", "type": "template", "note": "" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Dink aan ’n nuwe vaardigheid wat jy saam met jou tiener kan aanleer. Byvoorbeeld, om ’n bal in die lug of op jou voet te hou, te leer goëlbal speel, sop te maak?\n* Maak beurte om die nuwe vaardigheid te probeer.\n* Maak seker julle prys mekaar, en probeer saam leer en speel!", + "SourceText": "Well done - great job for remembering!", + "text": "Welgedaan dat jy onthou het!", "type": "template", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Dink saam aan drie soorte oefeninge. Byvoorbeeld, stap, draf, sokker speel of dans.\n* Kies een saam en probeer dit.\n* As julle albei daarvan hou, besluit hoe gereeld julle dit gaan doen. Een of twee keer per week? Elke oggend?\n* Dink saam aan maniere om dit nog prettiger te maak. Kan julle tot by ’n sekere punt draf? Beurte maak om die afrigter te wees? Mekaar motiveer met ’n klein gratis beloning?", + "SourceText": "How did your teen respond?", + "text": "Hoe het jou tiener gereageer?", "type": "template", "note": "" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Die eerste persoon kan ’n liedjie kies of sing.\n* Almal moet die naam van die deuntjie raai (om dit moeiliker te maak, kan hulle raai wie die sanger is).\n* Die eerste een wat dit reg raai, word die volgende leier.", + "SourceText": "Surprised", + "text": "Verras", "type": "template", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Hierdie speletjie is die beste met ten minste 3 mense.\n* Begin in ’n kring en gee een “klap” met die vingers in die kring om (of klap hande as jy nie jou vingers kan klap nie).\n* Jy “klap” een keer om die “klap” te gooi, en een keer om dit te vang. Kyk na die persoon na wie jy dit gooi.\n* Die rigting (op, af, reguit, geboë, oor die grond) en krag (hard, sag, gemiddeld) waarmee jy die klap gooi, moet ’n invloed hê op hoe die persoon dit vang.\n* Jy kan die “klap” laat hop, dit in die lug gooi en dit ’n paar keer vang voordat jy dit aanstuur.\n* As almal daarmee vaardig raak, kan julle in die kamer begin rondbeweeg en steeds die “klap” aanstuur.\n* Kan jy onder die been deur gooi? Agter die rug om? Deur jou kop? ’n Aangee onderskep? Geniet dit om te “klap”!", + "SourceText": "Happy", + "text": "Bly", "type": "template", "note": "" }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Kies ’n sport of oefening om saam te doen. Besluit op ’n skedule. Gaan julle dit elke dag doen? Vir hoe lank?\n\nProbeer dit vir ’n week. Vra jouself en jou gesin aan die einde van die week die volgende vrae:\n* Hoe gaan dit?\n* Hoe het jy aan die begin van die week gevoel?\n* Hoe voel jy aan die einde van die week?\n* Wat kan ons volgende week anders doen?", + "SourceText": "My teen did not like it", + "text": "My tiener het nie daarvan gehou nie", "type": "template", "note": "" }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Maak beurte om die “leier” te wees. Sê die inleidingsinne om almal te aktiveer. Dan gee die “leier” ’n opdrag en almal doen die aktiwiteit so vinnig as moontlik:\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Raak iets rooi van kleur.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Spring tien keer op en af.”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Daar is ’n brand op die berg!”\n* Saam: “Hardloop, hardloop, hardloop!”\n* Leier: “Sit die skoene op die skoenrak.”", + "SourceText": "I do not know", + "text": "Ek weet nie", "type": "template", "note": "" }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Hierdie speletjie is die beste as meer as 2 mense speel.\n* Een persoon maak asof hulle iets doen – byvoorbeeld hare kam of aandete maak.\n* ’n Ander persoon vra: “Wat doen jy?”\n* Die eerste persoon moet iets sê wat niks met hare kam te doen het nie, byvoorbeeld: “Maak my veters vas.”\n* Die tweede persoon begin dan maak asof hy sy veters vasmaak totdat ’n nuwe persoon vra: “Wat doen jy?”\n\nDie antwoord moet altyd iets anders wees as wat jy eintlik doen!", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Onthou, dit neem tyd vir jou tiener om daaraan gewoond te raak dat jy hulle prys. Hoe meer tyd jy met hulle deurbring, hoe beter sal dit gaan!", "type": "template", "note": "" }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "* Skud julle linkerhande 8 keer in die lug terwyl julle tot 8 tel.\n* Doen dit so vinnig en hard as wat julle kan.\n* Herhaal met julle ander hande. Herhaal met albei voete.\n* Doen dit 7 keer, dan 6 keer en gaan voort totdat julle by 1 kom.\n* Almal roep dan “Crazy chicken” uit en doen hul beste mal hoenderdans!", + "SourceText": "Well done for observing how your teen felt; keep it up!", + "text": "Welgedaan dat jy jou tiener se gevoelens opgelet het, hou so aan!", "type": "template", "note": "" }, { - "SourceText": "Quick Parenting Tips", - "text": "Vinnige wenke vir ouerskap", + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Dit gebeur – wees net geduldig. Maak seker dat jy tyd met jou tiener deurbring sodat hulle jou opinie meer en meer sal waardeer. Wanneer jou lof opreg is, sal jy kort voor lank die voordele sien!", "type": "template", "note": "" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Dit kan moeilik wees om tieners groot te maak, en ons almal sukkel soms.", + "SourceText": "No problem - try to observe how they respond the next time!", + "text": "Geen probleem – probeer volgende keer oplet hoe hulle reageer!", "type": "template", "note": "" }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Wat is die grootste uitdaging wat jy tans ondervind?", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "Jy verdien ook lof. Dankie weereens vir jou gebruik van @global.parent_app.. Dit wys dat jy regtig omgee!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My relationship with my teen is not good", - "text": "My verhouding met my tiener is nie goed nie", + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Om iemand te prys, is ’n baie goeie vaardigheid vir ouerskap. \n\nAs ons tieners geprys word wanneer hulle iets goed doen, sal ons sien dat hulle meer en meer positiewe dinge sal doen!", "type": "template", "note": "" }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "My tiener se gedrag is moeilik", + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Goeiedag, almal. \n\nOns onderwerp vandag gaan daaroor om iemand te prys. \n\nDit is goed om ons kinders te prys wanneer hulle iets goed gedoen het, want dan sal hulle meer van daardie goeie gedrag wat ons wil sien, wys.\n\nEn ons moenie vergeet om onsself te prys as ons iets goed gedoen het nie!", "type": "template", "note": "" }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ek voel gestres, eensaam, kwaad", + "SourceText": "Praise time!", + "text": "Tyd om te prys!", "type": "template", "note": "" }, { - "SourceText": "I have money worries", - "text": "Ek het bekommernisse oor geld", + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Wanneer jy jou tiener weer sien, prys hulle vir een ding wat hulle goed doen!\n\nEn wanneer laas het jy jouself of ’n ander volwassene in jou huishouding geprys? Probeer dit!", "type": "template", "note": "" }, { - "SourceText": "I worry about my teen’s safety", - "text": "Ek is bekommerd oor my tiener se veiligheid", + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "Welgedaan met die gebruik van @global.parent_app! Onthou dat dit die klein dingetjies is wat ’n groot verskil maak.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We often fight in our family", - "text": "Ons baklei gereeld in ons gesin", + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Lof maak ’n groot verskil.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe JY lof in jou gesin kan gebruik.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "I have a different problem…", - "text": "Ek het ’n ander probleem…", + "SourceText": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Hallo, @fields.user_name! Veels geluk met die begin van jou derde week op @global.parent_app. \n\n'n Nuwe werkswinkel wag op jou! Kyk na hierdie prentjie en raai wat die onderwerp van die werkswinkel is!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Om ’n beter verhouding op te bou, begin deur tyd saam deur te bring – selfs 5 minute per dag maak ’n verskil! Aanvanklik kan dit moeilik wees om tyd saam deur te bring, aangesien ons almal besig is en ons tieners soms in ’n slegte bui kan wees. Maar om selfs 5 minute per dag se gefokusde tyd met jou tiener deur te bring, help om vertroue op te bou. Vra jou tiener wat hulle saam sou wil doen. Dit kan ook vir jou lekker en ontspannend wees!", + "SourceText": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Hallo, @fields.group_name! Veels geluk met die begin van jou derde week op @global.parent_app. \n\n'n Nuwe werkswinkel wag op jou! Kyk na hierdie prentjie en raai wat die onderwerp van die werkswinkel is!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "Jy kan hier meer ondersteuning kry oor hoe jy tyd alleen met jou tiener kan deurbring:", + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Dankie dat jy @global.parent_app gebruik om in jouself en jou gesin te belê.\n\nProbeer die @local.workshop_data.in_text_title en ontwikkel ’n uitstekende ouerskapvaardigheid!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Alle tieners gedra hulle soms net gruwelik! Een ding wat kan help met tienergedrag, is om hulle te prys wanneer hulle iets goeds doen – ongeag hoe klein dit is. Dit lyk miskien nie asof tieners jou lof wil hê of dit soek nie, maar eintlik wil hulle dit baie, baie graag hê.", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Hallo, @global.user_name, 'n nuwe werkswinkel wag môre op jou. Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Dis regtig 'n kortetjie (belowe!) – jy kan dit selfs voltooi terwyl jy wag dat jou aandete gaar word. Waarom gaan jy nie daardeur wanneer jy 'n paar minute tyd het nie? \n\nWeer eens dankie dat jy @global.parent_app gebruik.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "Jy kan hier meer ondersteuning kry oor hoe jy goeie gedrag kan aanmoedig deur te prys:", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title.voltooi het. Môre word ’n nuwe slypskool ontsluit. Probeer dit – jy sal die verskil in jou tiener se gedrag sien.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Ouerskapstres is tans baie hoog. Ons weet presies hoe oorweldigend die lewe kan wees. Om iets vir jouself te doen, kan jou stres verminder. Jy verdien dit! En as jy oorweldig voel, neem weer beheer oor jou liggaam deur vyf keer stadig en diep asem te haal voordat jy reageer. Baie ouers het dit nuttig gevind.", + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Dink aan die laaste keer wat iemand jou bedank het of gesê het jy het iets uitsonderlik gedoen.", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "Jy kan hier meer ondersteuning kry oor hoe jy vir jouself kan sorg:", + "SourceText": "How did it make you feel?", + "text": "Hoe het dit jou laat voel?", "type": "template", "note": "" }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Jy is nie alleen nie. Geldstres is so moeilik vir ouers. Probeer om met jou tiener te praat oor hoeveel geld inkom en wat julle as gesin elke maand moet spandeer. Dit kan hulle help om te verstaan waarom jy iets wat hulle graag wil hê, nie kan bekostig nie. En as almal verstaan waarheen die geld gaan, is dit makliker om saam te stem oor waar julle ook saam kan spaar!", + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Ouers word gewoonlik nie genoeg bedank of geprys nie.", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "Jy kan hier meer ondersteuning kry oor hoe om te begroot en te bespaar:", + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "Hoe laat dit jou voel as niemand “dankie” sê nie?", "type": "template", "note": "" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Tieners spandeer baie tyd buitenshuis of aanlyn, waar dit vir ons moeiliker is om hulle veilig te hou – baie ouers is bekommerd hieroor. Probeer ’n gesprek met jou tiener begin oor veilige en onveilige plekke in jou gemeenskap en aanlyn (jy sal dit miskien ’n paar keer moet probeer). Hulle ken dalk selfs sommige wat jy nie ken nie. Dit kan jou help om saam ’n plan te maak oor hoe om veilig te bly.", + "SourceText": "Tired", + "text": "Moeg", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "Jy kan hier meer ondersteuning kry oor hoe om jou tiener veilig te hou:", + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Jou tiener kan ook so voel. Dis hoekom hierdie week se ouerskaphulpmiddel eenvoudig maar belangrik is. Prys hulle vir dit wat hulle reg doen.", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "As ’n probleem opduik, probeer om saam daaroor te praat. Wat is die probleem presies? Watter verskillende oplossings is daar en wat is die gevolge daarvan? Op hierdie manier kan julle ’n oplossing vind wat vir almal goed kan wees.", + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Hoe het dit vir @global.w_praise_female_caregiver_name se tieners gevoel om geprys te word?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "Jy kan hier meer ondersteuning kry oor hoe om probleme saam op te los:", + "SourceText": "Why did she praise them?", + "text": "Hoekom het sy hulle geprys?", "type": "template", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Dit is nie maklik om na ons gesinne om te sien nie. Ons het almal soms uitdagings, maar ons hoop dat hierdie toep jou sal help om dit goed te hanteer.@global.parent_app is gebaseer op tien jaar se ervaring met die bestuur van ouerskapsprogramme in Suid-Afrika, en duisende ouers het gevind dat die wenke wat gedeel word, baie help met baie ouerskapuitdagings. Ons hoop dat hierdie toep jou en jou gesin ook sal help.\n\nHier is ’n paar van die belangrikste bewese wenke vir jou:", + "SourceText": "To get them to do it more often", + "text": "Om hulle sovêr te kry om dit meer gereeld te doen", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Start your first parenting workshop", - "text": "Begin jou eerste ouerskapslypskool", + "SourceText": "To help her finish her work", + "text": "Om haar te help om haar werk klaar te kry", "type": "template", "note": "" }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "Jy sal meer ondersteuning kry in die @local.workshop_data.in_text_title.", + "SourceText": "To make them feel good", + "text": "Om hulle goed te laat voel", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "Jy kan meer ondersteuning kry in die @local.workshop_data.in_text_title.", + "SourceText": "To make herself feel good", + "text": "Om haarself goed te laat voel", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Begin die @local.workshop_data.in_text_title", + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Al daardie dinge is waar! \n\nWanneer haar tieners gelukkig is, voel @global.w_praise_female_caregiver_name gelukkig. En sy het haar werk klaar gekry.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Voltooi die @local.workshop_data.in_text_title om meer ondersteuning te kry.", + "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text": "Om iemand te prys, het baie trefkrag.\n\nKom ons kyk na die voorbeeld van @global.w_praise_female_caregiver_name en haar dogters:", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Gaan voort met die @local.workshop_data.in_text_title", + "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text": "Wanneer @global.w_praise_female_caregiver_name besig is, baklei haar twee dogters dikwels. Maar vandag het haar ouer dogter nogal haar suster met haar skoolwerk gehelp!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Kry weer toegang tot die @local.workshop_data.in_text_title", + "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", + "text": "@global.w_praise_female_caregiver_name: “Dankie dat jy jou skoolwerk gedoen het en @global.w_praise_girl, dankie vir jou hulp met jou suster,@global.w_praise_teen_girl. Ek is so trots op jou!”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Sit, maak jou oë toe en luister na jou asem terwyl dit in en uit gaan.\n\nLet op hoe jy voel.\n\nWanneer jy gereed is, maak jou oë weer oop.", + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Stap 1: Vertel wat goed gegaan het en wat moeilik was", "type": "template", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Probeer dit wanneer jy ook al gestres voel en ’n ruskans nodig het om weer teenwoordig te voel.", + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "“Ek het soveel meer van my tiener se lewe geleer terwyl ons een-tot-een-tyd deurgebring het. Maar na die eerste dag wou my tiener net op sy foon speel.”", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Maak jou oë toe.\n\nKom ons gebruik die towerkrag van drie om teenwoordig te bly en te ontspan.\n\nNoem drie geluide wat jy nou kan hoor.\nNoem drie reuke wat jy nou kan ruik.\nNoem jou drie gunstelingkosse.\n\nVir watter drie dinge kan jy op die oomblik dankbaar wees? Dit hoef nie groot te wees nie.", + "SourceText": "Step 2: Bring ideas!", + "text": "Stap 2: Bring idees!", "type": "template", "note": "" }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "As ons aan die einde van ’n rowwe dag dink aan drie dinge waarvoor ’n mens dankbaar kan wees, kan dit ons die moed help vind om môre weer te probeer.", + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "“Jy het goed gedoen deur te probeer! Miskien kan jy ’n paar ander lekker dinge voorstel wat jy saam met jou tiener kan doen.”\n\n“Ja, of julle kan iets saam op sy foon doen? Of hy kan vir jou wys hoe sy foon werk?”", "type": "template", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Maak jou oë toe en dink aan die dag.\n\nNoem 1 ding waarvoor jy dankbaar is.\nNoem 1 ding wat jy goed gedoen het.\nNoem 1 ding waarvan jy hou.", + "SourceText": "Step 3: Pick and try one!", + "text": "Stap 3: Kies en probeer een!", "type": "template", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "Welgedaan, jy is ’n held!", + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Dankie vir daardie uitstekende idees! Ja, laat ek my tiener vra om my môre na skool te wys hoe sy foon werk. Kan een van julle nou voorgee om my tiener te wees, sodat ek kan oefen hoe om te vra?”", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Maak jou oë toe.\n\nGebruik die towerkrag van drie om verbind te bly en te ontspan.\n\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.\nAsem in tot die telling van drie. 1, 2, 3.\nAsem uit tot die telling van drie. 1, 2, 3.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Dink oor hoe jou tuis-aktiwiteite hierdie week gegaan het. \n\nNeem beurte om te bespreek:\n\n* Wat het goed gegaan en wat was ’n probleem?\n* Watter oplossings kan julle saam bedink?\n* Kies een oplossing en probeer dit later met jou tiener!\n\n(Of julle kan dit selfs nou oefen sodat dit later makliker sal wees!)", "type": "template", "note": "" }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "Voel jy hoegenaamd anders? Diep asemhaling help om ons hele liggaam en gees te kalmeer.\n\nJy is ’n ster!", + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Uitwerking daarvan om iemand te prys\n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Maak jou oë toe.\n\nLuister na jou asem soos wat dit vyf keer in en uit gaan.\n\nLet op hoe jy voel.", - "type": "template", + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Uitwerking daarvan om iemand te prys\n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om iemand te prys\nSIEN DIT – SÊ DIT – HERHAAL DIT\n* Voorstelle om tuis te oefen", + "type": "template", "note": "" }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Wanneer jy gereed is, maak weer jou oë oop. Jy is in beheer!", + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Deel met mekaar:\n\n*Wanneer laas het iemand jou bedank of gesê jy het iets goeds gedoen?\n* Hoe het dit jou laat voel?\n* Hoe voel dit as jy nie bedank of geprys word vir wat jy doen nie?\n\nAs ouers word ons gewoonlik nie genoeg bedank of geprys nie. Miskien kan jy vir jou tieners die regte voorbeeld stel en hulle eers prys wanneer hulle iets goed gedoen het!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Maak jou oë toe.\n\nNeem ’n bietjie tyd om na te dink oor die dag.\n\nDink aan een positiewe of prettige ding wat jy gedoen het.\nPrys jouself vir een ding wat jy vandag goed gedoen het.\nDink aan een ding wat jy môre anders kan doen.\nDink aan een ding waarvoor jy dankbaar is.", + "SourceText": "Let's discuss this story.", + "text": "Kom ons bespreek hierdie storie.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Maak jou oë toe.\n\nMaak jou kinders jou ooit lus om te skree?\n\nGee jouself ’n pouse van 10 sekondes. Asem 5 keer stadig in en uit.\n\nProbeer dan op ’n rustiger manier reageer.", + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Bespreek onder mekaar:\n\n* Hoe het dit @global.w_praise_female_caregiver_name se tieners laat voel om geprys te word?\n* Hoekom het sy hulle geprys?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Miljoene ouers sê dit help – BAIE.", + "SourceText": "The same can work for you!", + "text": "Dieselfde kan vir jou werk!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Maak jou oë toe.\n\nNeem ’n rukkie om te stop waarmee jy besig is en dink aan jou asem.\n\nWat is een ding waarvoor jy op die oomblik dankbaar kan wees?\nWat is een ding wat jou geluk bring?\nWat is een ding waarvan jy hou?\n\nHulle hoef nie groot dinge te wees nie. Soms tel die klein dingetjies in die lewe die meeste!", + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name het haar tieners geprys...", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Hier is ’n aktiwiteit om jou liggaam te ontspan:\n\nSit gemaklik en maak jou oë toe as jy kan.\nStel jou ’n goue ring voor wat jou liggaam van jou voete na jou kop skandeer.\nLet op terwyl dit op en af oor jou liggaam beweeg. Is daar plekke wat gespanne voel? Gevoelloos? Pynlik?\nFokus ’n oomblik op daardie plekke. Asem in op die gebied, en terwyl jy uitasem, probeer om enige spanning of pyn te los te laat.\nDoen dit vir ’n paar asemhalings.\n\nMaak jou oë oop. Hoe voel jou liggaam nou?", + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Om hulle sover te kry om dit meer gereeld te doen\n* Om haar te help om haar werk klaar te kry \n* Om hulle goed te laat voel \n* Om haarself goed te laat voel", "type": "template", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "Probeer dit volgende keer as jy in die bed lê en nie kan slaap nie!", + "SourceText": "SEE IT", + "text": "SIEN DIT", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Maak jou oë toe.\n\nLet op jou verbinding met die grond onder jou.\nWatter dele van jou liggaam raak die grond? Watter dele van jou liggaam raak dit nie?\nLet op waar dit warm voel en waar dit koel voel.\nVoel hoe die grond onder jou jou ondersteun. Laat jou liggaam in die ondersteuning van die grond wegsak.", + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Kyk uit vir enigiets wat jou tiener doen wat hulpvaardig of goed is, en prys hulle daarvoor. Hulle mag dit dalk nie wys nie, maar jy sal sien dat hulle daardie goeie ding weer sal doen. Dit sal hulle ook gerusstel dat jy dit raaksien en omgee.", "type": "template", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Probeer dit as jy weer alleen voel of ’n alledaagse aktiwiteit doen, soos om skottelgoed te was. Dit kan regtig help!", + "SourceText": "SAY IT", + "text": "SÊ DIT", "type": "template", "note": "" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Gaan sit en maak jou oë toe.\nHoeveel geluide kan jy hoor?\nLuister na die geluide binne en buite die kamer. Tel dit op jou vingers.\nHoeveel vingers het jy op na tien sekondes? Watter geluide het jy gehoor?\n\nProbeer weer vir nog tien sekondes.\nHet jy enige nuwe geluide gehoor? Het jy geluide in jou eie liggaam gehoor?\nLet op hoe jy nou voel.", + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Wees entoesiasties – bedoel dit opreg wanneer jy dit sê!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Maak jou oë toe.\n\nVoel jy ooit iets so sterk dat jy daarvan wil weghardloop?\n\nIn plaas daarvan om van die gevoel weg te beweeg, kom ons ’n beweeg vir ’n oomblik nader daaraan.\nDit is oukei. Maak jou oë toe as jy gemaklik voel. Haal diep asem.\n\nWord nuuskierig. Waar voel jy dit in jou liggaam? Is dit warm of koud? Hard of sag? Styf of los?\nVra jouself ’n paar vrae. Wat sê dit vir my? Wat het dit nodig? Hoe kan ek op die oomblik vriendelik teenoor myself wees?", + "SourceText": "REPEAT IT", + "text": "HERHAAL DIT", "type": "template", "note": "" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Hier is iets lekkers om jou te help om stres te verlig:\n\nKies ’n liedjie wat weerspieël wat jy op hierdie oomblik nodig het. Het jy ’n sagte liedjie nodig om jou moeë siel te kalmeer, of ’n opgewekte liedjie om jou te help om ’n bietjie spanning af te skud?\n\nMaak ’n ruimte en beweeg jou liggaam op maat van die musiek. Onthou om asem te haal terwyl jy beweeg. Laat jou asem en die beweging saamgaan.", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Probeer elke dag iets kry waarvoor jy hulle bedank. Selfs iets baie klein.", "type": "template", "note": "" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Selfs ’n paar minute se beweging kan genoeg wees om jou stres te verlig en jou gemoed te lig!", + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Jy kan ook ander volwassenes in jou huis prys. Let op hoe hulle reageer!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Maak jou oë toe.\nNeem ’n rukkie om die grond onder jou voete te voel.\nDink aan iets waarvoor jy dankbaar is.\nFokus op jou asem.\nAsem in en uit.\n\nIn en uit.", + "SourceText": "Let's practice giving praise.", + "text": "Kom ons oefen om iemand te prys.", "type": "template", "note": "" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Hallo! Hoe voel jy nou? Gelukkig, hartseer, kwaad, opgewonde, bekommerd?\n\nLet op waar jy dit in jou liggaam voel. Let op watter gedagtes aan daardie gevoel gekoppel is. Haal diep asem.", + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Deel met mekaar: \n\n* Waarvoor kan jy jou tiener prys? \n* Wat het iemand anders tydens hierdie werksessie goed gedoen? Sê vir hulle!\n* Hoe het dit jou laat voel om iemand te prys?\n* Hoe het dit jou laat voel om geprys te word?", "type": "template", "note": "" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Sê vir jouself dankie dat jy tyd gemaak het vir jou gevoelens en gedagtes!", + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Soms is dit moeilik om aan iets te dink waarvoor jy jou tiener kan prys! Hier is ’n paar idees van ander ouers:", "type": "template", "note": "" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "Kom ons oefen ’n kalmerende truuk wat ons “Pouseerkrag” noem.\n\nSit jou voete op die grond en haal drie keer so stadig moontlik asem, in en uit. Stel jou voor dat jy ’n blom ruik of ’n kers blaas.\n\nTa Da! Pouseerkrag!", + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Wys goedhartigheid teenoor iemand \n* Maak hulle kamers skoon \n* Eet saam met die gesin \n* Groet ander gesinslede \n* Pas ander broers of susters op \n* Kom betyds huis toe \n* Wys bedagsaamheid \n* Sê ‘asseblief’ of ‘dankie’ \n* Gaan skool toe \n* Doen werkies of skoolwerk \n* Bewaar die vrede tydens etenstye", "type": "template", "note": "" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Dit is ’n goeie truuk om te gebruik as jy gefrustreerd voel, want dit sal jou kalmeer.", + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "So bly om te hoor dit gaan goed met jou. Jy is ’n wonderlike ouer!", "type": "template", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Om jouself te prys kan baie nuttig wees, veral as ons moeilike dae beleef.\n\nDink aan jou week en voltooi die volgende frase: “Hierdie week is ek trots op myself vir ...” Dit kan enigiets wees, nie net dinge oor ouerwees nie!\n\nDink aan een ding wat jy vandag goed gedoen het. Sit nou jou arms om jouself en gee jouself ’n stywe DRUKKIE!", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Jammer dat dit nie met jou goed gaan nie. Jy het goed gedoen om alles te probeer uitwerk. Niemand het ál die antwoorde nie, maar jy doen regtig jou bes!", "type": "template", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Sit gemaklik en maak jou oë toe.\n\nErken wat op hierdie oomblik met jou gebeur. Wat dink jy? Is jou gedagtes positief of negatief? Hoe voel jy? Voel jy aangenaam of onaangenaam? Hoe voel jou liggaam? Voel jy gespanne of ontspanne?\n\nRaak op rustige manier bewus van wat in jou hart aangaan. Jy kan jou een hand op jou hart of bors sit. Sê die volgende woorde stilweg vir jouself:\n\nMag ek rustig wees.\nMag ek veilig wees.\nMag ek gesond wees.\nMag ek gelukkig wees.\nMag daar liefde in my gesin wees.\nMag ek geliefd voel.", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Jammer om te hoor dat dit nie met jou goed gaan nie. Jy het goed gedoen om elke dag op te staan en weer te probeer, selfs al is jy moeg. Dit wys regte moed en toewyding!", "type": "template", "note": "" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Neem ’n tydjie om na te dink oor jou ervaring. Let op of jy enige verskil voel.", + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Lê hierdie week een reël saam met jou tiener neer. \n\nOnthou om jou tiener daarná te prys!", "type": "template", "note": "" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Stap 1. Maak jou oë toe en haal diep asem.\n\nStap 2. Vra jouself af: “Waaraan dink ek?” Let op of jou gedagtes positief of negatief is.\nLet op hoe jy emosioneel voel. Let op of jou emosies aangenaam of onaangenaam is. Herinner jouself daaraan dat wat jy ook al voel, dit goed is .\nLet op hoe jou liggaam voel. Let op enigiets wat seer of gespanne is.\n\nStap 3. Fokus op jou asem. Voel jou asem terwyl dit in- en uitgaan. Jy kan een hand op jou maag sit en met elke asemhaling voel hoe dit styg en val. Doen dit vir ongeveer 10 asemhalings.\n\nStap 4. Brei jou bewussyn uit na jou hele liggaam. Luister na die geluide in die kamer.\n\nStap 5. Neem ’n rukkie om na te dink of jy anders voel. Wanneer jy gereed is, maak jou oë oop.", + "SourceText": "make rules with their teens", + "text": "maak saam met hulle tieners reëls", "type": "template", "note": "" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "Dit is goed dat jy ’n pouse geneem het. Jy kan dit altyd doen wanneer jy stres ervaar. Dit gee jou ’n kans om rustiger te word. Selfs om ’n paar keer diep asem te haal of om met die grond onder jou ’n verbinding te maak, kan ’n verskil maak. Jy kan ook ’n pouse saam met jou kinders neem!", + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "Het julle enige uitdagings ervaar toe julle probeer het om saam ’n reël vas te stel?", "type": "template", "note": "" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Staan op en strek jou arms in die lug. Druk enige wolke weg en laat die son op jou skyn. Strek na albei kante. Strek vorentoe en agtertoe.\n\nLaat jou hand aan jou sy hang. Druk jou skouers styf tot by jou ore terwyl jy inasem, knyp jou oë styf toe en hou jou asem in. Laat jou skouers los terwyl jy jou liggaam ontspan.\n\nOntspan jou arms en laat jou arms sywaarts swaai, en draai jou bolyf. Jou arms moet jou rug saggies raak terwyl jy van kant tot kant draai.\n\nPlaas die een voet voor die ander en maak klein sirkels vanaf die enkels, onthou om na albei kante te draai. Doen elke voet met vier sirkels in elke rigting.\n\nSkud nou jou hele liggaam so vinnig as wat jy kan. Skud dit hoog! Skud dit laag! Skud dit oral rond!\n\nMaak jou oë toe en lig jou arms stadig bo jou kop terwyl jy inasem. Laat sak jou arms stadig tot aan jou sy terwyl jy uitasem.\n\nNeem ’n oomblik om na te dink oor jou ervaring.", + "SourceText": "What was difficult for you about making a rule with your teen?", + "text": "Wat was vir jou moeilik toe dit kom by ’n reël saam met jou tiener maak?", "type": "template", "note": "" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "Mooi so! Jy kan hierdie aktiwiteit enige tyd doen wanneer jy voel jy moet stres verlig en jou liggaam en gees energie moet gee.", + "SourceText": "My teen and I could not agree on a rule.", + "text": "Ek en my tiener kon nie oor ’n reël saamstem nie.", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Maak ’n lys van gesonde aktiwiteite wat jy graag wil doen. Hier is ’n paar voorstelle:\n* Luister na jou gunstelingmusiek\n* Gaan stap ’n entjie (indien toegelaat)\n* Kry oefening\n* Drink ’n koppie tee alleen\n* Bel ’n vriend\n* Sing, dans, bid of lees\n* Sit in die son met jou oë toe \n* Kyk na jou gunsteling-TV-program\n\nKies een en doen dit vandag!", + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Dink of die reël redelik is. Kan jou tiener dit volg? Wanneer julle as ’n gesin reëls maak, help dit om aan jou tiener te dink, hoe oud hulle is en wat vir hulle belangrik is.", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "As jy na jouself omsien, sorg jy vir jou kinders. Ons moet almal met mekaar in verbinding kom. Probeer om elke dag met vriende, familie en ander ondersteuningsnetwerke te praat. As dit al ’n rukkie is sedert jy laas na iemand uitgereik het, doen dit nou!", + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "My tiener het gevoel dis onregverdig dat hulle die reël moet volg terwyl ek dit nie hoef te volg nie.", "type": "template", "note": "" }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Dink na oor wat jou kwaad maak. Wanneer gebeur dit? Hoe reageer jy gewoonlik?\n\nKeer dat woede in die eerste plek begin. Slaap of rus as jy moeg is. Probeer iets eet as jy honger is. Vra iemand vir ondersteuning as jy alleen voel.", + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Ons moet altyd onthou dat kinders die beste by ons leer. Hoe meer ons die reëls volg, hoe meer sal hulle die reëls ook volg.\n\nJy kan die reël aanpas om seker te maak dat dit realisties is vir almal om te volg, met inagneming van jou verantwoordelikhede en dié van jou tiener (byvoorbeeld skool- of werksaktiwiteite).", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Dit kan baie moeilik wees om woede te beheer. Vat ’n blaaskans as jy voel dat jy vir jou kinders of iemand anders kwaad word.\n\nGaan vir 5 minute na ’n ander plek om weer beheer oor jou emosies te kry. As jy ’n veilige plek in buitelug het, gaan buitentoe. Jy kán hierdeur kom!", + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Ek het ongemaklik gevoel omdat ek voel dat ek die een moet wees wat die reël neerlê, nie my tiener nie.", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Pas jou @global.parent_app aan", + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "My lewensmaat het ongemaklik gevoel omdat hulle voel dat hulle die een moet wees wat die reël neerlê, nie die tiener nie.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Hierdie vinnige vrae sal hierdie toep by jou behoeftes aanpas.", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Wanneer ons saam met ons tieners reëls neerlê, help dit die gesin om mekaar beter te verstaan. Die reëls sal meer realisties wees, en ons tieners sal meer bereid en in staat wees om die reëls te volg.", "type": "template", "note": "" }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "Kom ons begin met ’n paar vrae oor jou en jou gesin.", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Toe ons ’n reël probeer neerlê het, het ons begin argumenteer.", "type": "template", "note": "" }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Ons sal graag jou voornaam of bynaam wil weet:", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "Was jou tiener in ’n goeie bui toe jy probeer het om die reël te maak? Dit is die beste om reëls te maak wanneer die situasie kalm is. As jy of jou tiener moeg of honger is, is dit beter om op ’n later tydstip oor reëls te praat.", "type": "template", "note": "" }, { - "SourceText": "Are you a woman or a man?", - "text": "Is jy 'n vrou of 'n man?", + "SourceText": "We were not able to stick to the rule.", + "text": "Ons kon nie by die reël bly nie.", "type": "template", "note": "" }, { - "SourceText": "Woman", - "text": "Vrou", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Die reël moet spesifiek en realisties wees. Maak seker dat jy ’n reël het wat maklik gehou kan word, soos om elke Sondag een maaltyd saam te eet in plaas van elke aand. Moet jy dalk meer buigsaam wees oor die reël?", "type": "template", "note": "" }, { - "SourceText": "Man", - "text": "Man", + "SourceText": "Your goal was to make ONE rule with your teen this week.", + "text": "Jou doelwit was om hierdie week EEN reël saam met jou tiener te maak.", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "Hoe oud is jy?", + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "Welgedaan! Dit is nie maklik nie, en tieners sal nie heeltyd die reëls gehoorsaam nie, maar om ’n paar sleutelreëls saam te maak, is ’n goeie begin. Prys jouself omdat jy dit probeer het – ons is trots op jou!", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Volwassenes", + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Reëls help tieners om te verstaan wat van hulle verwag word. \n\nTieners sal meer geneë wees om reëls na te kom as jy reëls SAAM met jou tiener neerlê en hulle daarvoor prys!", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Tieners", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Goeiedag, almal. \n\nVandag se onderwerp is reëls. \n\nReëls bevorder vrede binne die huishouding en begrip tussen gesinslede.\n\nReëls bevorder verantwoordelikhede vir elke lid van die gesin; daarom is dit belangrik om gesinsreëls te hê. \n\n’n Huishouding met gesinsreëls lewe in vrede.", "type": "template", "note": "" }, { - "SourceText": "Children", - "text": "Kinders", + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Skryf een belangrike reël wat jy graag saam met jou tiener wil maak, neer – jy sal dit hierdie week as jou tuisoefening doen. \n\nWat sal hulle daarvan dink?", "type": "template", "note": "" }, { - "SourceText": "Babies", - "text": "Babas", + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "Kon jy saam met jou tiener ’n reël opstel?", "type": "template", "note": "" }, { - "SourceText": "How many people are in your household?", - "text": "Uit hoeveel mense bestaan jou huishouding?", + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Soms voel dit asof jou tieners nog steeds knorrig is, selfs al het jy jou bes gedoen. Onthou dat jy uitstekende werk doen en dat daar ook goeie tye saam met hulle sal wees!", "type": "template", "note": "" }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "Jy kan die @global.weekly_workshops self doen OF jy kan ander familielede of vriende nooi om by jou aan te sluit – julle sal baie by mekaar leer. Dit hang van jou af!", + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "Jy is op die punt om nog ’n ouerskaphulpmiddel te verkry! Voltooi die @local.workshop_data.in_text_title, stel EEN eenvoudige en realistiese reël saam met jou tiener op, en kyk hoe dinge verander!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "Hoe sou jy jou @global.weekly_workshops wou doen?", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Hallo, @fields.user_name! Nuwe week, nuwe werkswinkel! Leer hoe om huisreëls op so 'n manier op te stel dat dit die kanse sal verbeter dat jou tiener dit sal nakom.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Can you think of a name for your group?", - "text": "Kan jy aan ’n naam vir jou groep dink?", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Hallo, @fields.group_name! Nuwe week, nuwe werkswinkel! Leer hoe om huisreëls op te stel op so 'n manier dat dit die kanse sal verbeter dat jou tiener dit sal nakom.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "Watter dag van die week wil jy jou @global.weekly_workshops doen?", + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Weereens baie dankie dat jy @global.parent_app gebruik en dat jy toegewyd is aan jou ouerskapreis.\n\nDie @local.workshop_data.in_text_title sal jou wys hoe om reëls op te stel op ’n manier wat jou tiener sal help om dit beter te verstaan en te volg.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Monday", - "text": "Maandag", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. Dit sal nie lank neem nie en dit sal jou tiener help om die reëls beter te volg!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Tuesday", - "text": "Dinsdag", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Baie geluk met jou voltooiing van die @local.workshop_data.in_text_title.\n\nMôre sal ’n nuwe slypskool jou help om te weet wat jy moet doen as tieners slegte (of goeie) gedrag toon!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Wednesday", - "text": "Woensdag", + "SourceText": "They discussed the reasons behind the rule", + "text": "Hulle het die redes vir die reël bespreek", "type": "template", "note": "" }, { - "SourceText": "Thursday", - "text": "Donderdag", + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 het na @global.w_rules_teen_boy se voorstelle geluister", "type": "template", "note": "" }, { - "SourceText": "Friday", - "text": "Vrydag", + "SourceText": "The rule was clear, specific and fair", + "text": "Die reël was duidelik, spesifiek en regverdig", "type": "template", "note": "" }, { - "SourceText": "Saturday", - "text": "Saterdag", + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 het @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", "type": "template", "note": "" }, { - "SourceText": "Sunday", - "text": "Sondag", + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Dis reg, om reëls saam op ’n kalm en positiewe manier neer te lê, werk baie goed!", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou groep ontsluit. Dit laat julle toe om dit wat julle saam met julle gesinne geleer het, te probeer voordat julle die volgende vaardigheid opbou.", + "SourceText": "She praised him", + "text": "Sy het hom geprys", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Uitstekend! Ons sal elke week ’n nuwe slypskool vir jou ontsluit. Dit laat jou toe om dit wat jy saam met jou gesin geleer het, te probeer voordat julle die volgende vaardigheid opbou.", + "SourceText": "She rewarded him when he followed the rule", + "text": "Sy het hom beloon toe hy die reël gevolg het", "type": "template", "note": "" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "Jy kan hierdie instellings altyd verander in jou @global.weekly_workshop_options.", + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Presies – ’n positiewe reaksie maak ’n groot verskil!", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Ons weet dit is moeilik. Ons het ’n paar nuttige wenke by @data.parent_centre.my_tips.location_text gevoeg oor hoe jy tyd met jou tiener kan deurbring, so jy kan dadelik toegang daartoe kry.\n\nOmdat @data.workshop.w_1on1.title die basis vorm vir alle ander hulpmiddels vir ouerskap, sal jy volgende week die @global.weekly_workshop ontvang!", + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "Kom ons lees wat met @global.w_rules_teen_boy en sy @global.w_rules_female_caregiver_1 gebeur het:", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "Mooi so! Ons volgende @global.weekly_workshop gee jou meer idees hiervoor as basis vir al die ander hulpmiddels vir ouerskap. Maar jy het reeds ’n goeie begin!", + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: “Jy kom altyd laat by die huis!”\n\n@global.w_rules_teen_boy: “Nee, dis nie waar nie! Ek weet nie eens wat laat beteken nie! Hou op om so met my te neul.”", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Deur hierdie toep te gebruik, wys jy dat jy vir jou tiener omgee. Ons het ’n paar noodsaaklike hulpmiddels oor hoe jy lof kan gebruik by @data.parent_centre.my_tips.location_text gevoeg vir vinnige toegang.\n\nIn ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Watter spesifieke reël kan @global.w_rules_teen_boy en @global.w_rules_female_caregiver_1 saam neerlê?", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "Wonderlik dat jy jou tiener prys! Dit help hulle om gewaardeerd te voel – jou aanmoediging beteken baie. In ons @data.workshop.w_praise.in_text_title sal jy nog meer leer oor hoe jy hierdie vaardigheid goed kan gebruik.", + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "Kom ons kyk hoe @global.w_rules_female_caregiver_1 en @global.w_rules_teen_boy dit die volgende dag gedoen het:\n\n@global.w_rules_female_caregiver_1: “Ek wil hê jy moet pret hê, @global.w_rules_teen_boy, maar ek is ook bekommerd omdat jy laat uitbly. Weet jy hoekom?” \n\n@global.w_rules_teen_boy: “Omdat jy wil hê dat ek genoeg tyd vir my skoolwerk moet hê?”", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Dis wonderlik dat dit ’n goeie week was!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: “Dis reg, en dit is ook nie veilig in hierdie omgewing om na sononder buite te wees nie. Wat dink jy is ’n goeie tyd vir jou om huis toe te kom?”", "type": "template", - "note": "" + "note": "The string @global.w_rules_female_caregiver_1 should not be translated." }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan bly beheer en kalm kan bly voel.", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “Ek kan 10nm. huis toe kom?” \n\n@global.w_rules_female_caregiver_1: “Dis ’n bietjie te laat, wat van 6nm.? Of iewers in die middel?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Ons verstaan hoe spanningsvol die lewe kan wees. Ons sal jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou spanning kan hanteer en kalmer kan voel.\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops sal ons meer leer oor die hantering van spanning – maar onder @data.parent_centre.my_tips.location_text het jy reeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom!", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “Ek kan 6nm. huis toe kom op weeksaande en 10nm. op Vrydag en Saterdag?” \n\n@global.w_rules_female_caregiver_1: “Ja, uitstekend. Van nou af is ons huisreël dat jy op weeksaande 6nm. moet huis toe kom en 10nm. op Vrydag en Saterdag. Maar jy moet altyd saam met ’n vriend huis toe stap. Oukei?”", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou gereeld daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nIn week @data.workshop.w_stress.number van die @global.weekly_workshops kan jy meer idees vind om spanning te hanteer, maar onder @data.parent_centre.my_tips.location_text het jy alreeds toegang tot ’n paar nuttige hulpmiddels om aan die gang te kom.", + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: “Oukei, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Baie dankie, @global.w_rules_teen_boy, dat jy gehelp het om saam ’n goeie reël voor te stel. Ek is trots daarop om te sien hoe verantwoordelik jy raak.”", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Ons hoop dat ons hulpmiddels oor hoe om spanning te hanteer vir jou nuttig sal wees. Jy kan dit reeds vind onder @data.parent_centre.my_tips.location_text.", + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Die volgende dag...\n\n@global.w_rules_female_caregiver_1: “Dankie, @global.w_rules_teen_boy, dat jy betyds huis toe gekom het. Nadat jy jou skoolwerk klaargemaak het, kan ons jou gunstelingmaaltyd vir aandete hê.”", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Uitstekend. Ons het ’n slypskool oor gesinsbegroting wat met geldstres in die algemeen kan help, en geldverwante argumente kan verminder.", + "SourceText": "Online Safety", + "text": "Aanlyn veiligheid", "type": "template", "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Geldstres kan oorweldigend wees.\n\nOns hou oor vyf weke ’n werksessie oor gesinsbegroting, maar jy kan reeds onder @data.parent_centre.my_tips.location_text ’n paar kernwenke vir gesinsbegroting kry!", + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", + "text": "Reëls is belangrik om jou tieners veilig te hou – ook aanlyn. Daar is meer hieroor in die weeklikse slypskool oor die beplanning van veiligheid, maar kom ons kyk nou daarna!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het. Om na jouself om te sien en jou rustiger te laat voel as dit moeilik gaan, sal ons jou elke dag daaraan herinner om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nOns sal in week 5 van die @global.weekly_workshops meer leer oor die hantering van spanning, maar jy het alreeds toegang tot ’n paar nuttige hulpmiddels onder @data.parent_centre.my_tips.location_text om aan die gang te kom.", + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: “@global.w_rules_teen_girl, het jy jou huiswerk gedoen?”\n\n@global.w_rules_teen_girl: “Net ’n oomblik@global.w_rules_female_caregiver_2, ek kyk gou hierdie @global.teen_social_medium video klaar.”", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gestres te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: “Jy is regtig ’n uitstekende danser! Vertel my waarom jy daarvan hou.”\n\n@global.w_rules_teen_girl: “Al my vriende is daarop,@global.w_rules_female_caregiver_2. Ek het meer as 600 laaiks en 120 volgers.”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns hoop dat ons hulpmiddels hoe om spanning te hanteer jou sal help om rustiger te voel in moeilike situasies. Jy kan dit vind onder @data.parent_centre.my_tips.location_text.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: “Ek is trots op hoe goed jy dans, @global.w_rules_teen_girl. Maar ons moet seker maak dat jy veilig is. \n\nEk weet jou vriende kyk na @global.teen_social_medium, maar met ’n oop rekening is daar ander mense wat na video’s van tieners kyk vir hul eie seksuele behoeftes. Soms kontak hulle tieners. Hulle gee voor om gaaf te wees, maar later dreig en misbruik hulle tieners.”", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Dit is ’n groot bron van kommer vir ouers oral. Ons sal seker maak dat jy ondersteuning kry om kommunikasie te bou.\n\nOns sal later in die @global.weekly_workshops verder praat oor beplanning vir jou tiener se veiligheid, maar onder@data.parent_centre.my_tips.location_text kan jy reeds ’n paar kernwenke kry om jou tiener veilig te hou!", + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: “Kom ons kyk saam aanlyn hoe ons dit vir jou prettig, maar ook veilig kan maak. Kyk – jy kan jou rekening privaat maak en beheer wie jou kan volg.\n\nSo kan jy mense wat jy van jou skool en ons gemeenskap ken, aanvaar, maar nie mense wat jou aanlyn kontak nie.\n\nKan ons saam ’n reël maak dat jy @global.teen_social_medium kan gebruik, maar met ’n private rekening? Ek vertrou jou om te weet wie om te aanvaar!”", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Dit is regtig wonderlik. Ouerskap is moeilik, maar jy slaag regtig goed daarin.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: “Ek is trots op jou, @global.w_rules_teen_girl.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Jy kan te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre vind. \n\nJy kan ook ’n paar eerste kernwenke kry wat jou sal help om reëls te maak en veiligheid te beplan onder @data.parent_centre.my_tips.location_text.", + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "Dit is eenvoudig ongelooflik. Elkeen van hierdie gewoontes maak jou familie sterker. Wees trots daarop.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools en @data.workshop.w_safe.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en bespreking – dit het nie gewerk nie… \n* Storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Jy kan te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre vind. \n\nJy kan ook ’n paar eerste kernwenke kry wat jou sal help om reëls te maak onder @data.parent_centre.my_tips.location_text.", + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en nadenke – dit het nie gewerk nie… \n* Storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om reëls neer te lê\nSPANREËLS – WERKLIKE REËLS – REËLS OM IEMAND TE PRYS!\n* Storie oor veiligheid aanlyn – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "What went well here in making a rule together?", + "text": "Wat het hier goed gegaan met die neerlê van die reël?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOns sal meer ondersteuning vir jou in die latere @global.weekly_workshops hê as jy nog meer wil weet!", + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "Hoe dink jy het @global.w_rules_teen_boy geweet sy@global.w_rules_female_caregiver_1 waardeer hom?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Inhoud wat deur hierdie vrae ontsluit is, is nou toeganklik onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Making the rule together went well because...", + "text": "Om die reël saam neer te lê, het goed verloop omdat...", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "Jy het nounet die eerste werksessie ontsluit!", + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Hulle die redes vir die reël bespreek het\n* @global.w_rules_female_caregiver_1 na @global.w_rules_teen_boy se voorstelle geluister het\n* Die reël duidelik, spesifiek en regverdig was \n* @global.w_rules_female_caregiver_1 vir @global.w_rules_teen_boy geprys het omdat hy die reël help neerlê het", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Ons weet dit is moeilik. Jy kan onder @data.parent_centre.my_tips.location_text ’n paar nuttige wenke lees oor hoe jy tyd met jou tiener kan deurbring of jy kan weer kyk na die @data.workshop.w_1on1.in_text_title.", + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy het geweet sy @global.w_rules_female_caregiver_1 waardeer hom, want...", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "Welgedaan dat jy so ’n goeie fondament gelê het! Jy kan altyd die @data.workshop.w_1on1.in_text_title nagaan om meer idees te kry oor hoe om tyd saam deur te bring.", + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* Sy het hom geprys\n* Sy het hom beloon toe hy die reël gevolg het", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Deurdat jy hierdie toep gebruik, wys jy dat jy vir jou tiener omgee. Jy kan kyk hoe om lof te gebruik onder @data.parent_centre.my_tips.location_text.\n\nVir meer wenke oor hoe om hierdie vaardigheid goed te gebruik, kan jy ook weer kyk na die @data.workshop.w_praise.in_text_title.", + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Huisreëls help om ons kinders veilig te hou, en te verstaan wat van hulle verwag word. Wanneer jy ’n tiener betrek wanneer reëls neergelê word, is hulle meer geneë om die reëls na te kom.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "Dit is wonderlik dat jy jou tiener prys! Dit help hulle om waardevol te voel – jou aanmoediging beteken baie.\n\nJy kan altyd weer na @data.workshop.w_praise.in_text_title kyk vir meer wenke oor hoe jy hierdie vaardigheid goed kan gebruik.", + "SourceText": "TEAM RULES", + "text": "SPANWERK REËLS", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Dit is wonderlik dat dit ’n goeie week was!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Beplan reëls SAAM met jou tiener. Begin eers met een nuwe reël – jy kan later nog een byvoeg. Bespreek die redes vir die reël en luister na hulle uitgangspunte.", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Dis wonderlik dat jy die grootste deel van die week kalm gevoel het!\n\nOns sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan bly beheer en kalm kan bly voel.", + "SourceText": "REAL RULES", + "text": "REALISTIES REËLS", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Ons verstaan hoe stresvol die lewe kan wees. Ons sal jou steeds daaraan herinner om te ontspan, jouself te erken en te beloon, sodat jy jou stres kan beheer en kalmer kan voel.\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "Maak dit realisties vir dit wat jou tiener kan doen en wees duidelik en spesifiek sodat daar geen misverstand is nie. Nie ‘betyds’ nie, maar wel ‘teen 7nm.’.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om stres te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", + "SourceText": "PRAISE RULES!", + "text": "REËLS VIR PRYS!", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid. Dit kan so moeilik wees om ons spanning te beheer. Jy kan altyd ’n paar nuttige hulpmiddels oor hoe om spanning te hanteer vind onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Prys jou tiener vir reëls wat hulle saam met jou maak en prys hulle omdat hulle daarby hou!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Uitstekend. As daar in die toekoms in jou gesin spanning of meningsverskille oor geld opduik, kan jy altyd die @data.workshop.w_money.in_text_title of @data.parent_centre.my_tips.location_text raadpleeg!", + "SourceText": "Let's practice making rules.", + "text": "Kom ons oefen om reëls te maak.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Geldstres kan oorweldigend wees.\n\nAs spanning of meningsverskille oor geld in jou gesin opduik, kan jy wenke in die @data.workshop.w_money.in_text_title of onder @data.parent_centre.my_tips.location_text vind!", + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Wat is een belangrike reël wat julle elkeen saam met julle tiener wil maak?\n* Wat dink jy sal jou tiener van daardie reël dink? \n\nOnthou, maak die reëls spesifiek en realisties!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het. Om na jouself om te sien en jou rustiger te laat voel wanneer dit moeilik gaan, sal ons jou aanhou herinner daaraan om te ontspan, jouself te erken en te beloon. Jy maak saak!\n\nJy kan meer idees vind om spanning te hanteer in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Here are some of the rules other families created:", + "text": "Hier is party van die reëls wat ander gesinne gemaak het:", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns voel almal soms oorweldig, en om @global.parent_app aan te gebruik, is ’n goeie stap om jou en jou gesin te help!\n\nOns materiaal het duisende ouers en gesinne gehelp om minder gespanne te wees en meer positiewe tyd saam te geniet. Ons is hier om jou te ondersteun.", + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Tiener kan buite speel nadat huiswerk klaar gedoen is\n* Alle gesinslede eet saam aandete\n* Tiener 1 was die skottelgoed op Sondag en Maandag, Tiener 2 op Dinsdag en Woensdag\n* Ons praat ordentlik en vriendelik met mekaar\n* Wanneer jy na musiek luister, moet jy oorfone gebruik", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Dankie vir jou eerlikheid – en ons is jammer dat jy ’n moeilike tyd met jou tiener het.\n\nOns hoop dat ons hulpmiddels hoe om spanning te hanteer jou steeds sal help om rustiger te voel in moeilike situasies. Jy kan dit vind onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Remember that YOU matter!", + "text": "Onthou dat JY saak maak!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Dit is ’n groot bron van kommer vir ouers oral. Onthou om jou nuwe vaardighede te gebruik om goeie kommunikasie met jou tiener te bly opbou.\n\nJy kan die belangrikste wenke oor beplanning vir jou tiener se veiligheid in @global.weekly_workshop of onder @data.parent_centre.my_tips.location_text lees!", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "Mooi so, dat jy ’n positiewe gevoel herken. Ek is bly om te hoor jy voel vandag goed!", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun!\n\nOnthou dat jy te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre kan vind. Jy kan ook die belangrikste wenke oor reëls en veiligheidsbeplanning nagaan onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", + "text": "Mooi so, dat jy ’n slegte gevoel herken. Dis oukei om soms nie oukei te wees nie. Onthou, jy is nie alleen nie.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Dit is nie maklik om ’n ouer te wees nie. Dit kan moeilik wees om te weet hoe om ons tieners veilig te hou. Dit laat ons as ouers dikwels magteloos voel, maar ons is hier om jou te ondersteun! Onthou dat jy te eniger tyd gefokusde hulpmiddels, ekstra inhoud en hulpbronne hieroor in die @global.parent_centre kan vind.\n\nJy kan ook die belangrikste wenke oor die maak van reëls nagaan onder @data.parent_centre.my_tips.location_text.", + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Dit is nie maklik om ’n ouer te wees nie. Welgedaan dat jy daarop gefokus het om jou tiener veilig te hou.\n\nOnthou, jy kan meer ondersteuning hieroor in die @data.workshop.w_safe.in_text_title kry wanneer jy dit ook al nodig het!", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "As jy dit nog nie gedoen het nie, maak saam met jou tiener twee kaarte van veilige en onveilige plekke:\n* Kaart van julle gemeenskap\n* Kaart van toeps en webwerwe wat jou tiener gebruik\n\nMaak seker julle is albei tevrede met die veiligheidsplan. \n\nWat werklik saak maak, is dat jy met jou tiener gesels terwyl julle dit doen – tieners weet dikwels meer as ons oor waar dit veilig en onveilig is!", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Onthou dat jy toegang tot baie nuttige wenke en hulpbronne in die @global.parent_centre kan kry – dit is te eniger tyd vir jou beskikbaar!", + "SourceText": "map risks and support with their teens", + "text": "bespreek risiko's en ondersteuning met hul tieners", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "Is daar tieners in jou gesin?", + "SourceText": "map risks and support with your teen", + "text": "bespreek risiko's en ondersteuning met jou tiener", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "Hierdie toep fokus op gesinne met tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Ek en my tiener het nie saamgestem oor watter plekke en aanlyn aktiwiteite onveilig is nie.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "Is daar volwassenes in jou gesin?", + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "Welgedaan dat jy die aktiwiteit probeer het! Wanneer ons na ons tieners luister, selfs as ons nie saamstem nie, leer ons om hul denke te verstaan. Probeer om tyd te vind om die aktiwiteit weer te doen – probeer om regtig te luister en te wys dat jy hulle verstaan voordat jy jou gedagtes deel.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "Hierdie toep fokus op ouers van tieners van @global.teen_age_bracket jaar oud, maar jy is welkom om voort te gaan – jy kan ook nuttige dinge vir jou gesin leer!", + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "My tiener het die huis van iemand wat ek vertrou, as onveilig geïdentifiseer. Ek was geskok en het nie geweet wat om te doen nie.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "Is jy seker dat jy hierdie vraag wil oorslaan?", + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Dit is skokkend om uit te vind dat mense wat na aan ons is en wat ons vertrou, ’n gevaar vir ons tieners kan wees. Onthou om ’n pouse te neem wanneer jy ontsteld is, en probeer om kalm na jou tiener te luister. Soek na iemand met wie jy hieroor kan praat, miskien ’n vriend of ondersteuningsdiens, sodat jy die ondersteuning kan kry wat jy nodig het.", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "Is jy seker jy wil hierdie vraag oorslaan? Onthou, jou antwoord sal privaat gehou word en sal ons help om jou ouerskapbehoeftes te verstaan.\n\nJy kan ook kies om enige vraag nie te beantwoord nie deur die sirkel te kies.", + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "My tiener het daarop aangedring dat die kroeg (of ’n ander plek wat ek nie voel veilig is nie) veilig vir hulle is om te besoek. Ek weet nie hoe om my tiener te oortuig nie.", "type": "template", "note": "" }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "Jy het “Ek wil liewer nie antwoord nie” gekies", + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Dit kan baie frustrerend wees. Om ’n oplossing te vind, moet jou tiener voel dat hulle gehoor word – luister dus kalm na jou tiener se redes, en deel dán eers jou eie gedagtes. Dink dan saam aan ’n reël wat hulle toelaat om pret te hê, maar ook veilig te wees.", "type": "template", "note": "" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Dis oukei!\n\nOnthou, as jy antwoord sal jou antwoord privaat gehou word en sal dit ons help om jou te voorsien van inhoud wat presies reg is vir jou.", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "As volwassene voel ek dat dit my verantwoordelikheid is om te beskerm – maar toe ek my tiener vertel wat veilig is en wat nie veilig is nie, het my tiener kwaad geword.", "type": "template", "note": "" }, { - "SourceText": "Customise for your needs", - "text": "Pas dit aan volgens jou behoeftes", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Ons tieners kan dinge oor ons gemeenskappe en tegnologie weet waarvan ons nie bewus is nie. Wanneer ons, ons tieners aktief by die kaart-aktiwiteit betrek en regtig na hulle luister, voel hulle gehoor en gewaardeer, en dit kan makliker wees om ’n plan op te stel wat vir almal aanvaarbaar is.", "type": "template", "note": "" }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Elke ouer in die wêreld sukkel in hierdie moeilike tye. Die volgende vrae oor jou ouerskapervarings sal ons help om jou die nodige ondersteuning te bied.\n\nWees eerlik. Onthou dat jy nie alleen is nie! Miljoene ouers voel soos jy, en ons almal verdien ondersteuning.", + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Dit was moeilik om beskikbare hulpbronne in my gemeenskap te identifiseer omdat ek nie my gemeenskap so goed ken nie/daar so min dienste beskikbaar is.", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Dis moeilik om tyd te kry om prettige dinge saam met jou tiener te doen.", + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Dit is moeilik om van elke detail in ons gemeenskappe te weet. Betrek ’n ander familielid of vriend by jou kaart-aktiwiteit. Jy kan selfs ’n paar van die beskikbare dienste besoek en vra wat hulle doen. Hoe meer ons weet, hoe beter kan ons ons gesinne veilig hou!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Hoeveel dae die afgelope week kon jy aan hulle aandag gee en iets saam met hulle doen wat hulle geniet het?", + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Ek weet nie veel van tegnologie nie, daarom weet ek nie hoe om met my tiener daaroor te praat nie.", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_1on1.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Dit is heeltemal oukei! Jy kan nog steeds jou tiener ondersteun. Vra jou tiener om die toestelletjies wat hulle gebruik, te verduidelik – jy kan dit tydens een-tot-een-tyd doen. Dit is ’n wonderlike geleentheid om belangstelling in jou tiener se lewe te toon en om moontlike risiko's saam te bespreek. As jy nie seker is watter reëls jy moet neerlê nie, kan jy altyd met jou tiener ooreenkom om ’n nuwe reël vir twee weke te probeer en dan te bespreek hoe dit gaan, en indien nodig, die reël te verander!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Dis moeilik om in ons besige lewens op die positiewe te fokus.", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Jou doel was om risiko's en ondersteuningstelsels met jou tiener te bespreek – in jou gemeenskap sowel as aanlyn.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "Hoeveel dae die afgelope week het jy jou tiener geprys?", + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Tieners kan baie tyd buite die huis of aanlyn bestee waar dit vir ons moeiliker is om hulle veilig te hou. \n\nDit help regtig om saam te gesels oor veilige en onveilige plekke en hoe om probleme te voorkom!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_praise.tools bygevoeg tot @data.parent_centre.my_tips.title.", - "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" - }, - { - "SourceText": "This is a very stressful time for families.", - "text": "Dit is ’n baie stresvolle tyd vir gesinne.", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Goeiedag, almal. \n\nOns onderwerp vandag is tienerveiligheid. \n\nDit is ons verantwoordelikheid as ouers om ons tieners te alle tye veilig te hou. Ons moet seker maak dat ons tieners veilig is in die gemeenskappe waar ons woon. Dit is ons verantwoordelikheid om hulle bewus te maak van veilige en onveilige areas in die gemeenskappe.\n\nDit is ook ons verantwoordelikheid om seker te maak dat hulle die gevare waaraan hulle moontlik blootgestel kan word wanneer hulle aanlyn is, verstaan. So sal ons tieners verantwoordelik wees en sal hulle die regte besluite kan neem om hulself ook veilig te hou.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Hoeveel dae die afgelope week het jy as ouer/versorger stres ervaar?", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Bespreek onder mekaar:\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", "type": "template", "note": "" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Soms ontstel ons kinders ons baie.", + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veilig te hou?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Hoeveel dae die afgelope week het jy op jou tiener geskree of gegil?", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar: \n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.\n\nHier onder is ’n paar plekke wat van hulp kan wees", "type": "template", "note": "" }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "Mooi so. Breinwetenskap toon dat as jy jou woede beheer, dit die breinontwikkeling van jou tiener verbeter. Wees trots op jouself.", + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Soms kan ons in die moeilikheid wees. Bespreek onder mekaar:\n * Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", "type": "template", "note": "" }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Geld is een van die dinge wat tans die meeste stres by gesinne veroorsaak.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Prys julle tieners vir hoe goed hulle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "Hoeveel dae die afgelope week het jy bekommerd of gespanne gevoel oor geld?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Teken prentjies van die toeps en webwerwe wat julle tieners gebruik\n* Gee erkenning vir hoe goed hulle is met gebruik van die web! \n* Dink oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Hoeveel keer die afgelope maand (30 dae) het jou kosgeld opgeraak?", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_money.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy ’n veiligheidsplan maak of daarby hou, klik op die @global.parent_point en vier jou sukses!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Dis so stresvol as kinders stout of ongehoorsaam is.", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "Kom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nJy gaan hierdie week dieselfde saam met jou tiener as tuisoefening doen – as jou tiener nou hier is, kan julle dit nou saam doen!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Hoeveel dae die afgelope week het jy jou kinders fisies gedissiplineer deur hulle te klap, pak te gee of te slaan met jou hand of ’n voorwerp soos ’n stok of ’n belt?", + "SourceText": "My family can join in now!", + "text": "My gesin kan nou by ons aansluit!", "type": "template", "note": "" }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Dit is wonderlik dat jy kalm reageer as jou tiener iets ontstellends doen. Hulle kan soveel by jou leer!", + "SourceText": "Let me try it out by myself", + "text": "Kom ek probeer dit op my eie", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_stress.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "Safety Plan", + "text": "Veiligheidsplan", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Dit is moeilik om toesig oor jou tieners te hou wanneer hulle onafhanklik raak.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Om ons tieners veilig te hou, moet ons die gevaarlike situasies waarin hulle kan beland, verstaan!\n\nKom ons maak saam twee kaarte van veilige en onveilige plekke:\n*’n Kaart van ons gemeenskap\n*’n Kaart van apps/webwerwe wat ons aanlyn gebruik\n\nKom ons maak hierdie kaarte nou as ’n groep.\n\nJy sal hierdie week dieselfde tuisoefening saam met jou tiener doen.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Hoeveel dae die afgelope week het jy geweet wat jou tiener doen en by wie hulle was?", + "SourceText": "Step 1: What are important places in your community?", + "text": "Stap 1: Wat is die belangrike plekke in jou gemeenskap?", "type": "template", "note": "" }, { - "SourceText": "This is good to hear.", - "text": "Dit is goed om te hoor.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Kry ’n stuk papier (of ou koerant of ’n kartonboks) en ’n pen.\n* Teken ’n kaart van jou tiener se gemeenskap, met prente van al die vernaamste plekke soos strate, julle huis, skool, winkels, plekke wat jou tiener besoek.", "type": "template", "note": "" }, { - "SourceText": "Were you in lockdown this week?", - "text": "Was julle hierdie week onder inperking?", + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Stap 2: Watter plekke is veilig en onveilig?", "type": "template", "note": "" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Dit is wonderlik dat jy bewus is van wat jou tiener doen. Ouerskap is moeilik, maar jy slaag regtig daarin om hulle veilig te hou.", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Bespreek onder mekaar:\n\n* Watter areas op jou kaart is veilig vir tieners? \n – OMKRING dit \n* Watter areas op jou kaart is onveilig vir tieners?\n – TREK ’n STREEP daardeur \n* Wat maak ’n plek veilig of onveilig? \n* Wat kan jy en jou tiener doen om jou tiener veiliger te hou?", "type": "template", "note": "" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Hoeveel dae in ’n tipiese week sonder inperking weet jy wat jou tiener doen en by wie hulle is?", + "SourceText": "Step 3: Where can you get support?", + "text": "Stap 3: Waar kan jy ondersteuning kry?", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_safe.tools bygevoeg tot @data.parent_centre.my_tips.title.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Soms kan ons in die moeilikheid beland. Bespreek onder mekaar:\n \n* Waar kan jy en jou tiener ondersteuning kry wanneer julle voor ’n krisis te staan kom?\n – MERK daardie areas met ’n klein voorwerp soos ’n klippie of stukkie papier.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "We all want to keep our children safe.", - "text": "Ons almal wil ons kinders veilig hou.", + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Stap 4: Wat is riskante plekke aanlyn en hoe kan jy hulle veiliger maak?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "Het jy die afgelope maand (30 dae) met jou kind gepraat oor veiligheid wanneer dit kom by seksuele geweld aanlyn of elders?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Teken prentjies van die toeps en webwerwe wat jou tieners gebruik.\n* Prys mekaar vir hoe goed julle is met gebruik van die web! \n* Praat oor watter webwerwe onveilig kan wees. Waarom? \n* Wat kan jy en jou tiener doen om gebruik van die internet vir jou tiener en hulle vriende veiliger te maak?", "type": "template", "note": "" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Dit kan wees wanneer hulle saam met vriende uitgaan of praat oor webwerwe wat hulle gebruik.", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Ons het nou ’n nuwe uitdaging – om ons tieners teen COVID-19 te beskerm.", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Hierdie is van die moeilikste tye om ’n ouer te wees. Jy moet so trots op jouself wees oor alles wat jy gedoen het.\n\nDink aan elke keer dat jy jou tiener laat glimlag het en al die sorg wat jy hulle gegee het. Ouers is ongelooflik, en jy is ongelooflik!", "type": "template", "note": "" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Hoeveel dae het jou tiener verlede week veilig gebly deur ’n masker te dra, afstand van mense te hou en van oorvol plekke weg te bly?", + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "Om jou tiener veilig te hou, dra dit by om saam te gesels oor julle gemeenskap en hul aanlyn ervarings.\n\nVoltooi die @local.workshop_data.in_text_title en kyk hoe julle dit kan doen!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "Dit kan ’n uitdaging wees om jou tiener veilig te hou teen COVID! Ons stel ’n bietjie advies saam – dit sal binnekort vir jou beskikbaar wees in die @global.parent_centre.", + "SourceText": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Hallo, @fields.user_name! Jy nader nou die einde van jou @global.parent_app-werkswinkels! Dankie vir jou volgehoue toewyding. \n\nHierdie week se werkswinkel gaan oor hoe om jou tieners veilig te hou, beide aanlyn en in die gemeenskap. Geniet dit!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Dis uitstekend. Ons stel ’n bietjie advies saam om jou tiener veilig te hou teen COVID – dit sal binnekort vir jou beskikbaar wees in die @global.parent_centre.", + "SourceText": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Hallo, @fields.group_name! Julle nader nou die einde van julle @global.parent_app-werkswinkels! Dankie vir julle volgehoue toewyding. \n\nHierdie week se werkswinkel gaan oor hoe om ons tieners veilig te hou, beide aanlyn en in die gemeenskap. Geniet dit!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Thank you for being honest", - "text": "Dankie vir jou eerlikheid", + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "Jy het die afgelope paar weke reeds soveel ouerskapvaardighede aangeleer!\n\nVoltooi die volgende slypskool om nog ’n nuttige vaardigheid aan te leer.", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "GESELS", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Dit lyk asof jy nog nie die @local.workshop_data.in_text_title voltooi het nie. Om ’n plan saam met jou tiener te maak, kan baie probleme voorkom – probeer dit eers voordat jy verder gaan!\n\nWelgedaan dat jy@global.parent_app gebruik om jou gesin te ondersteun.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Deel jou gevoelens, en moedig jou tiener aan om te ook praat oor hulle bekommernisse. Julle sal mekaar dan beter verstaan en dus 'n goeie plan saam kan beraam om gesond en gelukkig te bly!", + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Baie geluk met jou voltooiing van @local.workshop_data.in_text_title.. Môre is ’n nuwe werksessie gereed om jou en jou gesin te help om enige situasie die hoof te bied – saam kan julle soveel doen!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "CAUTION", - "text": "VERSIGTIG", + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "Kom ons dink oor wat met @global.w_safe_teen_girl_1 gebeur het:", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Kry jou informasie vanaf betroubare inligtingsbronne, sodat jy vertroue kan behou in hierdie onsekere tye. Ons hoor en sien baie nuus via ander mense asook fone, TV, internet. Laat dit jou twyfelagtig, bekommerd, bevrees, kwaad, of verward voel? Maak seker voor jy deel of optree!", + "SourceText": "What was risky about that situation?", + "text": "Wat was riskant aan daardie situasie?", "type": "template", "note": "" }, { - "SourceText": "CHOOSE", - "text": "KIES", + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke", "type": "template", "note": "" }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Om die regte besluite te neem wat almal gesond en veilig hou kan moeilik wees. Veral in hierdie tye! Jy kan jou tiener help om goeie besluite te neem.", + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "@global.w_safe_teen_girl_1 se vriendin het haar aangemoedig", "type": "template", "note": "" }, { - "SourceText": "CHILL", - "text": "ONTSPAN", + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen", "type": "template", "note": "" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Ons voel almal by tye gespanne. Neem diep asem of doen iets prettig saam. Dit kan 'n groot verskil maak aan jou huishoudelike geluk en rustigheid! Hier is 'n paar idees wat jy kan probeer:", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans", "type": "template", "note": "" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Negatiewe gedagtes laat ons negatiewe dinge sê en doen. Probeer 'n verandering in jou denke en uitlatings van negatief na positief!", + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", "type": "template", "note": "" }, { - "SourceText": "A teen sometimes does something because they:", - "text": "'n Tiener sal soms iets doen omdat hulle:", + "SourceText": "All those things are true!", + "text": "Al daardie dinge is waar!", "type": "template", "note": "" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "-Luister na hulle vriende\n-Wil doen wat ander doen\n-Meer dink aan 'nou' as aan 'later''\n-Lief is vir impulsiwiteit en versigtigheid vervelig mag vind\n-Nie bekommerd is oor risiko nie - mag selfs risikogedrag geniet\n-Beperkte ondervinding het om op staat te maak\n-Gewillig is om enigiets te probeer - ongeag die gevolge daarvan", + "SourceText": "Let's think about our teens' online safety.", + "text": "Kom ons dink oor ons tieners se veiligheid aanlyn.", "type": "template", "note": "" }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Dit kan help om dit in gedagte te hou wanneer jou tiener 'n verkeerde keuse maak. Praat met hulle en spandeer tyd saam sodat jy hulle kan help om volgende keer 'n beter keuse te maak!", + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Wat is deesdae die grootste aanlyn risiko vir tieners?", "type": "template", "note": "" }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Begrip vir hoe jou tiener voel en hoe jy hulle kan ondersteun maak 'n groot verskil vir julle albei! Neem jou tiener waar en vra hoe hulle voel. Klik op 'n gesig hieronder om meer uit te vind:", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen", "type": "template", "note": "" }, { - "SourceText": "Hopeful", - "text": "Hoopvol", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat", "type": "template", "note": "" }, { - "SourceText": "Resilient", - "text": "Veerkragtig", + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg", "type": "template", "note": "" }, { - "SourceText": "Self-esteem", - "text": "Selfbeeld", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel", "type": "template", "note": "" }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Tieners het doelwitte en drome vir die toekoms - die nabye en verre!", + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", "type": "template", "note": "" }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Vra jou tiener uit oor hulle doelwitte en drome, moedig hulle aan om te dink oor wat hulle vir hul toekoms wil hê, en maak saam 'n plan om te werk daaraan om dit te verwesenlik.", + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Kommunikasie is die belangrikste ding!\n\nKom ons kyk wat met @global.w_safe_female_caregiver en @global.w_safe_teen_girl_1 gebeur het:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", - "text": "Veerkragtige tieners kan moeilike situasies hanteer, aanpas by veranderinge, en probleme oplos wanneer hulle opduik.", + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: “Iets het gebeur toe ek saam met my vriende @global.w_safe_teen_girl_2 en @global.w_safe_teen_girl_3 uit was!”\n\n@global.w_safe_female_caregiver: “Vertel my, @global.w_safe_teen_girl_1.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Prys jou tiener vir hulle oorkoming van moeilikhede en ondersteun hulle waar jy kan.", + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Man in motor: “Haai, mooiste. Ek kyk nou al lank na jou. Jy is baie mooi, wat is jou naam?”\n\n@global.w_safe_teen_girl_2: “Haar naam is @global.w_safe_teen_girl_1.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "'n Tiener se selfbeeld is hoe hulle aan hulself dink.", + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Man in motor: “@global.w_safe_teen_girl_1, wil jy saam met my kom vir iets om te drink en tjips? Komaan, klim in, jy sal betyds terug wees, ek belowe...”\n\n@global.w_safe_teen_girl_1: “Ek dink nie dis ’n goeie idee nie...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Moedig 'n positiewe selfbeeld aan, stel 'n voorbeeld deur nie gedurig 'n bespotting te maak of jouself te kritiseer nie. Ken jou tiener se sterkpunte en ondersteun hulle swakpunte.", + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “Jy is gelukkig, vriendin. Ek wens ’n man wil MY uitvra en vir my geskenke koop. Ek sê jou, as jy dit nie doen nie, gaan ek vir almal vertel hoe dom jy is!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_2 should not be translated." }, { - "SourceText": "Lonely", - "text": "Eensaam", + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1, moenie gaan nie! Wees versigtig! Kom ons gaan huis toe. Dit is gevaarlik om saam met mense wat jy nie ken nie, te gaan. Buitendien, hy is te oud vir jou en wat hy doen, is verkeerd.”\n\n@global.w_safe_teen_girl_1: “Ek weet nou nie mooi nie…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Anxious", - "text": "Angstig", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: “Pfff, Ek is so trots op jou dat jy nie in die motor geklim het nie. Dit was ’n gevaarlike situasie, dankie dat jy my vertel het!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Tieners kan alleen voel, selfs al is hulle gedurig tussen ander. Hulle mag voel dat hulle niemand het om mee te praat, vertrou of te deel nie.", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "Kom ons kyk saam na nog ’n voorbeeld van ’n gevaarlike situasie.", "type": "template", "note": "" }, { - "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", - "text": "Vra vir jou tiener hoe dit met hulle gaan en probeer saam om nuwe genotvolle maniere vir interaksie met hulle vriende en familie te vind - veral tydens grendeltyd.", + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: “My vriendin praat aanlyn met ’n ou van ons ouderdom... Sy gaan vir hom foto’s van haarself stuur. Is dit beter omdat hy ons ouderdom is?”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Angs is 'n normale emosie en dit kan ons help met die hantering van uitdagende situasies. Maar oormatige angs of bekommernis wat tieners daarvan weerhou om dinge te doen waarvoor hulle lief is, is 'n probleem.", + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: “Jy is ’n goeie vriendin om oor haar bekommerd te wees. Om wulpse foto’s te stuur, is ook ’n werklike risiko.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Help jou tiener om te identifiseer wat hulle angstig maak en beraam saam 'n plan rondom hoe hulle kan reageer op angstige gedagtes.", + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: “Soms is mense nie wie hulle aanlyn sê hulle is nie – hy kan sê hy is jou ouderdom, maar kan ’n 50-jarige man wees. Of wanneer hulle verhouding uit is, kan hy daardie foto’s vir almal stuur en jou vriendin sal aaklig voel.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Om 'n ontspannende aktiwiteit saam te doen kan help!", + "SourceText": "Doing any of these makes you a great parent.", + "text": "Om enige van hierdie te doen, maak van jou ’n wonderlike ouer.", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Depressief", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Storie en bespreking – dit het gewerk!\n* Storie en bespreking – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Self-harm", - "text": "Selfbesering", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Storie en nadenke – dit het gewerk!\n* Storie en nadenke – dit het gewerk!\n* Kaartoefening\n* Hulpmiddels: Hoe om jou tiener veilig te hou\nKAARTE – REËLS – AMNESTIE\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Om hartseer of teneergedruk te voel, om in 'n slegte bui te wees, is alles normale menslike emosies. Depressie is wanneer dit vir 'n lang tydperk aanhou en jou tiener se normale daaglikse aktiwiteite affekteer. Jou tiener mag hulpeloos voel en nie in staat of ongemotiveerd wees om enigiets te verander nie.", + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "Kom ons gesels oor wat met @global.w_safe_teen_girl_1 gebeur het", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Probeer om professionele hulp te kry.", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Bespreek onder mekaar:\n\nWat was riskant aan daardie situasie?", "type": "template", "note": "" }, { - "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", - "text": "Somtyds mag tieners hulself doelbewus beseer in 'n poging om negatiewe emosies soos woede, skuldgevoelens, leegheid, of self haat te oorkom. Dit mag deur angs of depressie veroorsaak word.", + "SourceText": "The situation was risky because...", + "text": "Dit was ’n riskante situasie omdat...", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", - "text": "Om vir jou tiener te sê 'hou net op' mag dinge net vererger. Luister eerder na hulle, wys kalm dat jy verstaan, en bou hulle vertroue. Indien jou tiener gewillig is om te verduidelik hoe selfbesering hulle beter laat voel, mag jy begin om te begryp wat die redes daarvoor is. Probeer om professionele hulp te kry.", + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Die man in die motor het druk op @global.w_safe_teen_girl_1 uitgeoefen met geskenke\n* @global.w_safe_teen_girl_1 se vriendin het haar aangemoedig\n* Om saam met ’n ouer man te gaan, plaas @global.w_safe_teen_girl_1 in ’n gevaarlike situasie waar sy kan seerkry of gedwing kan word om goed te doen\n* Baie meisies in ons gemeenskappe raak swanger of kry MIV van ouer mans\n* Daar was geen ander betroubare volwassenes wat vir @global.w_safe_teen_girl_1 kon raad gee nie", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "What does that mean?", - "text": "Wat beteken dit?", + "SourceText": "Let's talk about our teens' online safety.", + "text": "Kom ons praat oor ons tieners se veiligheid aanlyn.", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "Hoe kan jy help?", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Wat is deesdae party van die aanlyn risiko’s vir tieners?", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Ons het almal soms negatiewe gedagtes.", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Volwassenes gebruik sosiale media, speletjie- en boodskap-toeps en -webwerwe om tieners te ontmoet en hulle te oorreed om seksuele goed te doen\n* Mense plaas goed aanlyn sodat ons ander mense seermaak – soos om geweld aanvaarbaar te laat lyk, of om mense van ’n ander rassegroep of land te haat\n* Mense plaas goed aanlyn om tieners te oorreed om hulself te beseer of om selfmoord te pleeg\n* Tieners deel wulpse video’s of foto’s of inligting oor hulself, en mense wys dit vir ander, of gebruik dit om hulle te ontstel\n*Mense kan dikwels aanlyn gemeen wees met tieners – hulle voel dat hulle mense maklik kan boelie", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "\"Ek is 'n mislukking\"", + "SourceText": "MAPS", + "text": "KAARTE", "type": "template", "note": "" }, { - "SourceText": "What to do?", - "text": "Wat om te doen?", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Maak saam met jou tiener KAARTE van veilige en onveilige areas in julle gemeenskap en aanlyn. Praat oor hoe om hulle inligting, foto’s en video’s aanlyn privaat te hou. Praat oor hoe iets wat aanlyn geplaas word, vir altyd daar bly. Hulle kan dalk van voorbeelde in hul vriendekring weet.", "type": "template", "note": "" }, { - "SourceText": "Examples", - "text": "Voorbeelde", + "SourceText": "Safety Plan Activity", + "text": "Veiligheidsplan-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", - "text": "Om vir jouself of jou tiener te sê om op te hou of om die positiewe teenoorgestelde te stel help dikwels nie.", + "SourceText": "RULES", + "text": "REËLS", "type": "template", "note": "" }, { - "SourceText": "\"I do everything perfectly\"", - "text": "\"Ek doen alles perfek\"", + "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Lê saam met jou tiener reëls neer oor die veilige gebruik van die toeps en webwerwe waarvan hulle hou.\n\nOnthou julle die storie oor veiligheid aanlyn? Kyk hier weer daarna.", "type": "template", "note": "" }, { - "SourceText": "Instead, you can ask:", - "text": "In plaas daarvan, kan jy vra:", + "SourceText": "Online Safety Story", + "text": "Storie oor veiligheid aanlyn", "type": "template", "note": "" }, { - "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", - "text": "-Is die gedagte realisties? Watter ander verduidelikings is daar?\n-Wat sal gebeur as ek voortgaan om hierdie gedagte te glo?\n-Wat sal ek vir 'n vriend sê as hy/sy hierdie gedagte sou hê?", + "SourceText": "AMNESTY", + "text": "AMNESTIE", "type": "template", "note": "" }, { - "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", - "text": "\"Hierdie is moeilik, maar jy probeer jou bes, en ons sal saam werk om 'n oplossing te vind\"", + "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "text": "Gaan ’n AMNESTIE-ooreenkoms aan. Indien iets gebeur wat hulle ontstel, ongemaklik laat voel of bang maak, kan hulle met jou praat en jy sal nie kwaad word of hulle straf nie, selfs al het hulle iets verkeerd gedoen.\n\nOnthou julle die storie oor veiligheid-amnestie? Kyk hier weer daarna.", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"Dis jou skuld\"", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Digitale ouerskap is net soos ouerskap in die regte wêreld. Jy het ’n GROOT STAP gedoen om jou tiener in die gemeenskap EN aanlyn veilig te hou. Mooi so!", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"Laat ons saam met 'n oplossing vorendag kom\"", + "SourceText": "Resources to help in the community", + "text": "Hulpbronne om in die gemeenskap te help", "type": "template", "note": "" }, { - "SourceText": "\"I lost my job\"", - "text": "\"Ek het my werk verloor\"", + "SourceText": "Online Safety Resources", + "text": "Hulpbronne vir aanlyn veiligheid", "type": "template", "note": "" }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Ek het baie in my werk geleer - dit sal my help om 'n ander een te vind\"", + "SourceText": "Being a great parent also means taking time to care for yourself every day.", + "text": "Om ’n wonderlike ouer te wees, beteken ook om elke dag tyd te maak om na jouself om te sien.", "type": "template", "note": "" }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Niemand hou van my nie\"", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Wonderlik. En fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", "type": "template", "note": "" }, { - "SourceText": "\"Last week I did have a great time with...\"", - "text": "\"Verlede week het ek 'n heerlike tyd gehad saam met...\"", + "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Dis moeilik om ’n ouer te wees. Maar dit is fantasties dat jy hierdie toep gebruik – dit wys jou toewyding as ’n ouer. Maak seker jy gee jouself krediet en prys jouself vir wat jy doen.", "type": "template", "note": "" }, { - "SourceText": "\"Bad things always happen to me\"", - "text": "\"Slegte dinge gebeur altyd met my\"", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "Jy het hierdie week se slypskool voltooi.\n\nOns sal weer party van die selfsorg-aktiwiteite doen wanneer jy vir die eerste keer met jou groep bymekaar kom – julle verdien almal ’n bietjie ekstra selfsorg!", "type": "template", "note": "" }, { - "SourceText": "\"This good thing happened the other day...\"", - "text": "\"Hierdie goeie ding het nou die dag gebeur...\"", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Wanneer jy ook al kan, ontspan, erken, en beloon jouself. \n\nSien elke dag om na jouself. Jy maak saak!", "type": "template", "note": "" }, { - "SourceText": "Change", - "text": "Verandering", + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Elke keer as jy ontspan, iets erken wat jy goed gedoen het of jouself beloon, tik op die@global.parent_points om jou sukses te vier!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "MAKE TIME", - "text": "MAAK TYD", + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Hoekom @data.workshop.w_self_care.short_title?", "type": "template", - "note": "" + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "Set aside time to have a conversation without distractions.", - "text": "Sit tyd opsy om 'n gesprek te hê sonder afleidings.", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Ons sorg dikwels nie genoeg vir onsself nie. Maar dit is so belangrik, veral as ’n ouer! \n\nOm ons spanning te verminder en goed na onsself om te sien, help ons EN ons tieners.", "type": "template", "note": "" }, { - "SourceText": "LISTEN", - "text": "LUISTER", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Goeiedag, almal. \n\nVandag se onderwerp is selfsorg. \n\nDaar kom tye wanneer ons uitdagings ervaar, waar ons voor probleme te staan kom en nie weet wat om te doen nie. Dit is belangrik dat ons na onsself omsien om die tegnieke te leer om onsself kalm te hou ingeval probleme, uitdagings of geskilpunte opduik. \n\nWanneer ons kalm is, kan ons positief dink en positiewe oplossings vind vir enige uitdagings waarvoor ons te staan kom.", "type": "template", "note": "" }, { - "SourceText": "Ask your teen questions and let them share their views without interrupting.", - "text": "Vra jou tiener vrae en laat hulle toe om hulle sienings te deel sonder om hulle in die rede te val.", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Onthou – hierdie week gaan oor JOU! Ons hoop dat jy jouself goed behandel. Jy verdien dit!", "type": "template", "note": "" }, { - "SourceText": "WORK TOGETHER", - "text": "WERK SAAM", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Begin môre met ’n splinternuwe @global.parent_app-slypskool. Jy sal die goeie resultate sien!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", - "text": "Bespreek 'n spesifieke probleem, kom saam met oplossings vorendag, en doen dan albei wat julle ooreenkom.", + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "text": "Het jy jou @global.parent_app-maats al van die toep vertel? Vanaf môre kan julle jul @global.parent_app-slypskool saam begin doen!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", - "text": "Bedank jou tiener vir wat hulle met jou deel en beklemtoon hoe dit julle albei help.", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Om aandag te gee aan wat ons doen, help ons om op die positiewe te fokus.\n\nKom ons neem ’n oomblik om onsself te prys. Ons sal jou wys hoe.", "type": "template", "note": "" }, { - "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", - "text": "1. Haal diep asem.\n2. Kyk of die nuus sin maak.\n3. Vra waar hulle aan die nuus gekom het.\n4. Maak dubbel seker by ander mense/bronne wat jy vertrou.\n5. Dink of hierdie nuus sou kon help of eerder vrees by mense veroorsaak as jy dit deel.", + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Dink aan een ding wat JY onlangs goed gedoen het.\n\nSê dit hardop vir mekaar: “Mooi so aan my vir....”\n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", - "text": "Ons wil almal soms vir ons tieners sê \"Jy moet dit doen, of anders... moeilikheid!\", maar dikwels sal dit hulle nie reëls beter laat volg nie.\n\nIn plaas daarvan, kan jy jou tiener help om goeie besluite te neem deur jou vertroue in hulle te wys en met hulle te praat:", + "SourceText": "Recognise", + "text": "Erken", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "BESPREEK GEVOLGE", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Neem ’n oomblik om jouself te prys.\n\nOns sal jou wys hoe.", "type": "template", "note": "" }, { - "SourceText": "Ask \"If you do this, what could happen?\"", - "text": "Vra \"As jy dit doen, wat sou kon gebeur?\"", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Dink aan een ding wat JY onlangs goed gedoen het.", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "PRYS", + "SourceText": "\"Well done to me for...\"", + "text": "“Mooi so aan my vir....”", "type": "template", "note": "" }, { - "SourceText": "If something goes well, praise your teen!", - "text": "As iets goed gaan, prys jou tiener!", + "SourceText": "Showing love to my children", + "text": "Liefde aan my kinders wys", "type": "template", "note": "" }, { - "SourceText": "REFLECT TOGETHER", - "text": "BESIN SAAM", + "SourceText": "Getting up even though I felt tired", + "text": "Opgestaan het, al het ek moeg gevoel", "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "As iets verkeerd loop, vra \"Hoe sou jy dit anders kon doen?\"", + "SourceText": "Smiling at someone", + "text": "’n Glimlag vir iemand", "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "BEGIN KLEIN", + "SourceText": "Making food to stay strong", + "text": "Kosmaak om sterk te bly", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Gee jou tiener aanvanklik klein verantwoordelikhede. As dit goed afloop, kan jy meer byvoeg om jou vertroue in jou tiener te wys.", + "SourceText": "Spending time with my children", + "text": "Tyd wat ek saam met my kinders deurbring", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Jou doel was om een-tot-een-tyd saam met jou tiener deur te bring. Ons het opgemerk dat jy op die@data.habit.spend_time.in_text_title getik het – geluk dat jy onthou het!", + "SourceText": "Helping my children with schoolwork", + "text": "Hulp aan my kinders met hulle skoolwerk", "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Jou doelwit was om een-tot-een-tyd saam met jou tiener deur te bring.", + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Sê dit hardop as jy kan. \n\nHier is een ding waarvoor jy verdien om geprys te word. Mooi so dat jy @global.parent_app gebruik!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "Welgedaan! Jy het oplossings vir jou uitdagings gesoek. Gaan probeer dit. Jou verhouding met jou tiener sal sterker en sterker word!", + "SourceText": "Things to praise yourself for:", + "text": "Dinge waarvoor jy jouself kan prys:", "type": "template", "note": "" }, { - "SourceText": "DAY – Do it every day", - "text": "DAG – Doen dit elke dag", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Liefde wat jy aan jou kinders wys \n* Opstaan, al het jy moeg gevoel \n* ’n Glimlag vir iemand \n* Kosmaak om sterk te bly \n* Tyd wat jy saam met jou kinders deurbring \n* Hulp aan jou kinders met hulle skoolwerk", "type": "template", "note": "" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "SPEEL – Laat jou tiener die aktiwiteit kies", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "Kom ons probeer dit en doen saam ’n kort ontspanning-aktiwiteit!", "type": "template", "note": "" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "BLY – Gee jou tiener al jou aandag", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "As ouers het ons dikwels nie tyd om na onsself om te sien nie – maar dit is so belangrik! Om ons spanning te verminder help ons EN ons tieners.\n\nKom ons doen ’n eerste stap en doen saam ’n kort ontspanning-aktiwiteit.", "type": "template", "note": "" }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Waarom was hierdie wenk vir jou nuttig?", + "SourceText": "Well done! Try to do this every day.", + "text": "Mooi so! Probeer dit elke dag doen.", "type": "template", "note": "" }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "“@local.choice_1” was nuttig omdat...", + "SourceText": "Have a hot drink", + "text": "Drink iets warm", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "“@local.choice_2” was nuttig omdat...", + "SourceText": "Call a friend or relative", + "text": "Skakel ’n vriend of ’n familielid", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "“@local.choice_3” was nuttig omdat...", + "SourceText": "Have a relaxing bath", + "text": "Ontspan in die bad", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "" }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Om ’n spesifieke tyd hiervoor te hê, help my om te onthou.", + "SourceText": "Read", + "text": "Lees", "type": "template", "note": "" }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Met ’n roetine kan ek en my tiener albei ons skedule vry hou.", + "SourceText": "Watch TV", + "text": "Kyk TV", "type": "template", "note": "" }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Om elke dag tyd met my tiener deur te bring, help om vertroue by hulle/hom/haar op te bou.", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Om na onsself om te sien, is ’n belangrike ouerskapvaardigheid. Deel met mekaar:\n\nWatter klein dingetjies maak jou gelukkig?", "type": "template", "note": "" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Ja, selfs 10 minute saam maak ’n groot verskil – dit laat dit maklik saam met jou werk en take in jou skedule pas!", + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Probeer elke dag iets doen om jouself te beloon.\n\nJy kan hierdie vaardighede tuis gebruik en hulle enige tyd in jou@global.parent_centre vind!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "As ek my tiener laat kies wat om te doen, bou dit hul selfvertroue op.", + "SourceText": "Reward", + "text": "Beloning", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "As my tiener kies, is die kans groter dat hy/sy tyd saam sal wil deurbring.", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Ons verdien almal om onsself goed te behandel!", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "As ek my tiener laat kies, wys ek dat ek vir sy/haar belangstellings omgee.", + "SourceText": "What small thing makes you happy?", + "text": "Watter klein dingetjies maak jou gelukkig?", "type": "template", "note": "" }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Deur die voorstelle van my tiener te aanvaar, wys ek dat ek na hom/haar luister.", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Mooi! Om na jouself om te sien, is ’n belangrike ouerskapvaardigheid!", "type": "template", "note": "" }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "As ek iets goeds sê oor die my tiener se keuse, laat dit hulle gewaardeerd voel.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_1 wees of enigiets anders wat jy geniet.", "type": "template", - "note": "" + "note": "The string @local.name_1 should not be translated." }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Só waar! En as ons tieners kies, word hulle aangemoedig om ook op ander terreine van hul lewe verantwoordelikheid te neem.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", + "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_2 wees of enigiets anders wat jy geniet.", "type": "template", - "note": "" + "note": "The string @local.name_2 should not be translated." }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Deur onderbrekings te voorkom, wys ek my tiener dat hy/sy die belangrikste is.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", + "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_3 wees of enigiets anders wat jy geniet.", "type": "template", - "note": "" + "note": "The string @local.name_3 should not be translated." }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Selfs as ek nie by my tiener se aktiwiteite, soos sport, kan aansluit nie, kan ek hulle steeds aanmoedig.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", + "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_4 wees of enigiets anders wat jy geniet.", "type": "template", - "note": "" + "note": "The string @local.name_4 should not be translated." }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Indien ek oplettend is, kan ek soveel leer oor my tiener se belangstellings, sienings en vermoëns.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", + "text": "Probeer elke dag iets doen om jouself te beloon. Dit kan @local.name_5 wees of enigiets anders wat jy geniet.", "type": "template", - "note": "" + "note": "The string @local.name_5 should not be translated." }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "Ja! As ons ons tieners ons volle aandag gee, sal hulle waarskynlik dieselfde vir ons doen as ons hulle weer iets vra!", + "SourceText": "Things you can do to reward yourself:", + "text": "Dinge wat jy kan doen om jouself te beloon:", "type": "template", "note": "" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Baie ouers ervaar uitdagings om een-tot-een-tyd met hul tieners te spandeer.\n\nHier is die 8 grootste uitdagings volgens wat ouers ons vertel het hulle ondervind wanneer hulle een-tot-een-tyd met hul tiener beplan of deurbring. As jy een hiervan ondervind het of besord is dat jy dit sal ondervind, tik daarop om ’n moontlike oplossing te vind. Jy kan daarná op ander uitdagings tik en dit verken.", + "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "text": "* Drink iets warm \n* Skakel ’n vriend of ’n familielid \n* Ontspan in die bad \n* Lees \n* Kyk TV", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "Het jy enige uitdagings ervaar toe jy tyd met jou tiener wou deurbring?", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Vandag sal jy 3 aktiwiteite ervaar wat jou kan help om na jouself om te sien en ons sal jou ’n paar\nvrae vra om seker te maak dat die toep presies reg is vir jou.", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "Watter uitdaging het jy ervaar toe jy tyd met jou tiener wou deurbring?", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Ontspanning-aktiwiteit\n* Erkenning-aktiwiteit\n* Beloning-aktiwiteit\n* Hulpmiddels: Hoe om selfsorg by te voeg\n* Pas die app by jou aan\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "I don’t have enough time.", - "text": "Ek het nie genoeg tyd nie.", + "SourceText": "Customise your @global.parent_app", + "text": "Pas jou @global.parent_app aan", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "My tiener wil nie tyd met my deurbring nie.", + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Noudat ons ’n paar selfsorgvaardighede gebou het, kom ons maak seker dat jou @global.weekly_workshops presies reg is vir jou.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "My tiener wil net TV kyk of op sy/haar foon speel.", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Dit kom voor dat jy reeds die pasmaakproses voltooi het. Jy kan nou hierdie aktiwiteit oorslaan.", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "My tiener wil dinge doen wat onveilig is of wat geld kos.", + "SourceText": "RELAX", + "text": "ONTSPAN", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "My tiener wil dinge doen wat ek fisies nie kan doen nie.", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Doen ’n vinnige ontspanning-aktiwiteit vir 30 sekondes.", "type": "template", "note": "" }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "My tiener het ’n kompeterende aktiwiteit gekies. Ek het gewen en sy/hy het kwaad geword.", + "SourceText": "Relax activity", + "text": "Ontspanning-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Ek het gesukkel om die een-tot-een-tyd te beëindig.", + "SourceText": "RECOGNISE", + "text": "ERKEN", "type": "template", "note": "" }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Al my kinders wil gelyktydig een-tot-een-tyd met my hê.", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Neem ’n oomblik en dink aan een ding wat JY onlangs goed gedoen het! Sê dit hardop as jy kan: “Mooi so, vir ....”", "type": "template", "note": "" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "Ja, dit kan baie moeilik wees om gedurende die dag tyd te kry met werk, huistake en talle ander dinge.", + "SourceText": "Recognise activity", + "text": "Erkenning-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Jammer dat jy daarmee gesukkel het. Dit kan ons sleg laat voel as ons kinders nie een-tot-een-tyd met ons wil deurbring nie.", + "SourceText": "REWARD", + "text": "BELONING", "type": "template", "note": "" }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Dink aan ’n tyd wanneer my tiener meer toegangklik is teenoor my, soos in die oggend of net voor slaaptyd.", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Onthou, jy verdien ook jou gehaltetyd! Wat maak jou gelukkig?", "type": "template", "note": "" }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Sit langs my tiener as hulle iets doen wat hulle geniet en toon belangstelling in dit waarvan hulle hou.", + "SourceText": "Reward activity", + "text": "Beloning-aktiwiteit", "type": "template", "note": "" }, { - "SourceText": "Do something fun with the whole family.", - "text": "Doen iets prettig saam met die hele gesin.", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "Welkom! Dis wonderlik om julle hier te hê. Hierdie week gaan oor JOU.\n\nIn hierdie verwelkomingsslypskool sal jy:\n* Hulpmiddels kry om na jouself om te sien\n* Die toep pasmaak vir jou behoeftes", "type": "template", "note": "" }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Uitstekend! Deur ’n tyd te kies wanneer jou tiener meer geselserig is, sal dit hulle help om goed te reageer op jou poging om uit te reik.", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Wonderlik, ek is so bly dit gaan goed.", "type": "template", "note": "" }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Lekker! As jy saam met jou tiener na hul gunsteling-TV-program of sportwedstryd kyk, wys dit hulle dat jy omgee. Wees net geduldig; hulle sal mettertyd vir jou oopmaak!", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Jammer dat dinge nou moeilik is. Dit is heeltemal normaal om soms te sukkel. Onthou, jy is nie alleen nie!", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Perfek! Soms kan dit makliker wees om te begin deur tyd saam met die hele gesin deur te bring. Op hierdie manier kan jou tiener mettertyd meer op hul gemak voel om een-tot-een-tyd saam met jou deur te bring.", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Leer jul tieners die vier stappe van probleemoplossing:\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n\nGebruik hierdie stappe saam wanneer ’n probleem opduik! \n\nWanneer iets sleg gebeur, raak ons dikwels ontsteld en blameer iemand. Maar wat ons tieners regtig nodig het, is iemand wat help om saam oplossings te vind. Luister na hulle, aanvaar hoe hulle dinge sien en daaroor voel, en bedank hulle dat hulle jou vertrou.\n\nAs jy jou tiener leer hoe om probleme te hanteer, sal dit hulle vir die res van hulle lewens help. ’n Baie goeie geskenk!", "type": "template", "note": "" }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "Jammer dat jy daardie uitdaging gehad het. Kinders wil dikwels TV kyk of met ’n toestelletjie speel. Welgedaan dat jy geduldig was met jou tiener!", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Sommige van die probleme wat ander ouers saam met hulle tieners opgelos het:", "type": "template", "note": "" }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Stel prettige dinge voor wat ek en my tiener saam kan doen.", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* My tiener wil nie skool toe gaan nie\n* Ek is bekommerd dat my tiener sal swanger raak, of iemand sal swanger maak \n* Ek is bekommerd oor wat my tiener aanlyn doen\n* My tiener kuier met slegte vriende\n* My tiener is lui\n* My tiener doen nie hulle huiswerk nie* My tiener gebruik moontlik dwelmmiddels", "type": "template", "note": "" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Soek iets leersaam om saam met my tiener op die toestelletjie te doen.", + "SourceText": "resolve problems with their teens", + "text": "los probleme saam met hul tieners op", "type": "template", "note": "" }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Vra my tiener om my te wys hoe hul foon/toestelletjie werk.", + "SourceText": "resolve the problem with your teen", + "text": "los die probleem saam met jou tiener op", "type": "template", "note": "" }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "Dis perfek! As jy inspirasie nodig het, is hier ’n paar idees van ander gesinne oor wat julle saam kan doen. Onthou, laat jou tiener kies.", + "SourceText": "I forgot the steps of problem solving.", + "text": "Ek het die stappe van probleemoplossing vergeet.", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Wonderlik! Daar is baie prettige en opvoedkundige apps op fone wat julle saam kan ontdek. Vra vrae, toon belangstelling en onthou om iets aangenaams te sê.", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "Dit verg ’n bietjie oefening om al vier stappe van probleemoplossing te gebruik. As ’n probleem weer opduik, kyk saam met jou tiener na die vier stappe – dit sal ’n groot verskil maak!", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Lekker! Tieners is mal daaroor as jy belangstel in hul toestelletjie en as hulle iets wat hulle weet aan jou kan verduidelik. Dit is ’n goeie beginpunt!", + "SourceText": "I started with the solutions right away.", + "text": "Ek het dadelik begin met die oplossings.", "type": "template", "note": "" }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Jy is nie alleen hierin nie. Baie ouers het soms ook hierdie uitdaging. Een-tot-een-tyd moet altyd veilig wees, en dit hoef niks te kos nie!", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "As ons ’n probleem het, wil ons altyd die vinnigste eindresultaat bereik en kan ons van die stappe vergeet. Om saam die beste oplossing te vind, is dit nuttig om eers die probleem en die verskillende oplossings ten volle te verstaan.", "type": "template", "note": "" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Verduidelik aan my tiener waarom hul voorstel nie veilig of moontlik is nie, en vra hulle vir ander idees.", + "SourceText": "Four steps of problem solving", + "text": "Vier stappe van probleemoplossing", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Stel ander prettige aktiwiteite voor wat ons saam kan doen.", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Ons kon nie saamstem oor ’n oplossing om te probeer nie en ons het gestry.", "type": "template", "note": "" }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Fantasties! Dit is baie belangrik dat jou tiener verstaan waarom jy nie die aktiwiteit kan doen wat hulle voorgestel het nie. Vra hulle vir ander idees!", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Soms kan dit moeilik wees om met almal in die gesin saam te stem, veral as almal nog nie kalm is nie. Julle kan saamstem om eers een oplossing te probeer, en dan ’n ander. En as julle vashaak, probeer dan om later bymekaar te kom om saam oor die oplossing te besluit.", "type": "template", "note": "" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Dit is perfek! As jy inspirasie nodig het, kan jy voorstelle vind vir aktiwiteite: @data.parent_centre.relax_and_activities.location_text. Onthou, laat jou tiener die aktiwiteit kies!", - "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." - }, - { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Jammer om dit te hoor. Ons tieners kan teleurgesteld wees as ons nie kan doen wat hulle wil doen nie, soos sport of ander fisiese aktiwiteite. Maar onthou, die belangrikste is dat ons tyd saam met hulle deurbring. Daardie tyd is verskillend vir almal!", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Ek het kwaad geword toe die probleem opduik en ek het vergeet om die stappe van probleemoplossing te gebruik.", "type": "template", "note": "" }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Kyk hoe my tiener die aktiwiteit doen en moedig hulle aan.", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Wanneer ’n probleem opduik, word ons almal soms kwaad of gespanne. Onthou, as jy kwaad of gestres voel, kan jy ’n pouse neem om jou te help kalm bly en dan die probleem wat jy ondervind, op te los.", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Stel ander prettige aktiwiteite voor wat ons saam kan doen.", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "My tiener het kwaad geword en wou nie oor die probleem praat nie.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Wonderlik! Selfs as jy toekyk in plaas van om die aktiwiteit saam te doen, kan jy jou belangstelling toon deur wat jou tiener doen, te beskryf en te prys!", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Jou tiener is dalk te oorweldig om die probleem dadelik die hoof te bied. Erken en noem hul emosies, en maak later in die dag of week ’n tyd vry om die probleem saam te bespreek en op te los. Deur jou tiener tyd te gee, kan die probleem goed opgelos word.", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Dit is perfek! As jy inspirasie nodig het, kan jy voorstelle vind vir aktiwiteite: @data.parent_centre.relax_and_activities.location_text. Onthou, laat jou tiener die aktiwiteit kies!", + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Jou doelwit was om saam met jou tiener ’n probleem of konflik op te los.", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Dit gebeur soms! Kompeterende speletjies kan ’n uitdaging wees vir tieners (en volwassenes!) as hulle sukkel met verloor.", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Elke gesin kom voor uitdagings te staan, maar wanneer ons saamwerk, kan ons probleme op ’n doeltreffende en vreedsame manier hanteer. \n\nWat ’n wonderlike vaardigheid wat jou tiener ook kan aanleer!", "type": "template", "note": "" }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Stel ander aktiwiteite voor wat ons saam kan doen, in plaas van teen mekaar.", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Goeiedag, almal.\n\nVandag se onderwerp is probleemoplossing. \n\nOns weet almal dat daar tye in die lewe is wanneer ons voor probleme te staan kom. Ons weet ook almal op ’n manier dat, wanneer ons onsself in hierdie situasies bevind, dit moeilik is om aan onmiddellike positiewe oplossings te dink.\n\nDaarom is dit belangrik dat, wanneer ons voor probleme te staan kom, ons ’n blaaskans neem, asemhaal, kalm bly en dink aan vaardighede wat ons vir probleemoplossing kan gebruik.\n\nOnthou om ons tieners in te sluit wanneer ons probleme oplos. Dit sal hulle help om verantwoordelik te raak en te leer hoe om hul eie probleme in die toekoms op te los.", "type": "template", "note": "" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Speel die aktiwiteit in spanne sodat ek my tiener kan aanmoedig as ons span verloor.", + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "Kom ons gaan terug na @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 en kyk met watter oplossings hulle vorendag gekom het.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Onthou, laat jou tiener kies! Jy kan voorstelle kry vir aktiwiteite wat jy saam met jou tiener kan doen as jy dit nodig het: @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "@global.w_solve_teen_girl en haar@global.w_solve_female_caregiver_1 het met drie oplossings vorendag gekom.", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "As jy en jou tiener in dieselfde span is, kan jy hulle help om hul emosies te beheer as julle span verloor.", + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Om ’n ouer van ’n tiener te wees, is regtig moeilik. \n\nDaar is dikwels geen maklike oplossings nie, maar nou het @global.w_solve_female_caregiver_1 geleer dat sy met haar dogter oor hierdie goed kan praat. \n\nVoorheen het sy haar alleen bekommer, nou kan hulle saam met oplossings vorendag kom!", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "Ja, die einde van een-tot-een-tyd kan soms moeilik wees.", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Het jy al die vier stappe van probleemoplossing met jou tiener probeer?\n\nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Sê vir my tiener: “Ons het ’n minuut voor die einde van vandag se een-tot-een-tyd”, sodat my tiener voorbereid is.", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Julle toegewydheid is ’n inspirasie vir almal. Bly kalm en gaan voort!", "type": "template", "note": "" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Maak my tiener bewus van hoeveel tyd ek vir een-tot-een-tyd het en vra hulle om ’n horlosie dop te hou.", + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "Jy is op die regte pad om probleme saam met jou tiener op te los!\n\nVoltooi die @local.workshop_data.in_text_title en kry nog ’n belangrike ouerskapvaardigheid!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Beplan een-tot-een-tyd net voor ’n ander aktiwiteit wat my tiener geniet.", + "SourceText": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", + "text": "Hallo, @fields.user_name! Jy maak sulke goeie vordering op jou ouerskapsreis! \n\nWanneer mens 'n tiener het, beteken dat talle onverwagse probleme kan opduik. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Wonderlik! Deur jou tiener vooraf te laat weet, sal die einde van een-tot-een-tyd nie as ’n verrassing kom nie. Jy kan jou tiener ook daaraan herinner dat julle môre weer tyd saam sal deurbring.", + "SourceText": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Hallo, @fields.group_name! Jy maak sulke goeie vordering op jou ouerskapsreis!\n\nWanneer mens 'n tiener het, beteken dit dat talle onverwagse probleme kan opduik. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Uitstekend! Op hierdie manier het jou tiener die verantwoordelikheid om die tyd dop te hou en sal jy weet wanneer die tyd amper op is. Herinner hulle daaraan dat julle môre weer tyd saam sal deurbring.", + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "text": "Met tieners, en die lewe, duik onverwagte probleme op en ons moet dit hanteer.\n\nBegin met die volgende werksessie om te leer hoe jy hierdie probleme suksesvol kan hanteer.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Wonderlik! As julle voor ete tyd saam deurbring, kan jy vriendelik sê: “Een-tot-een-tyd is verby. Kom ons maak gereed vir aandete saam met die res van die gesin!”", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "text": "Môre staan ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nProbeer die @local.workshop_data.in_text_title voltooi voordat jy met die nuwe slypskool begin. As julle weet hoe om probleme saam op te los, sal baie situasies makliker wees!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Dit gebeur met baie ouers. Dit kan moeilik wees om een-tot-een-tyd met ons tieners deur te bring as ons meer as een kind het.", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Dit is wonderlik dat jy die @local.workshop_data.in_text_title voltooi het. Môre word ’n nuwe slypskool ontsluit om jou te help om jou tiener veilig te hou.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Vra ’n ander volwassene of ouer broer of suster om gedurende die een-tot-een-tyd met my tiener na die jonger kinders om te sien.", + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "Kom ons kyk wat met @global.w_solve_teen_girl en haar @global.w_solve_female_caregiver_1 gebeur het toe @global.w_solve_teen_girl ’n foon by ’n seun gekry het...’n foon!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Dink aan ’n tyd wanneer die ander kinders nie daar is nie en bring dan tyd met my tiener deur.", + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, waar het jy daardie ding gekry?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 het dit vir my gekoop. Dis ’n lekker foon, @global.w_solve_female_caregiver_1. Dit neem wonderlike foto’s!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Beplan een-tot-een-tyd op ’n ander plek as by die huis.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: “Ek wil nie daardie duur ding sien nie! Daardie seun is moeilikheid! Hoe dink hy gaan jy hom hiervoor terugbetaal?! \n\n@global.w_solve_teen_girl: “Dis nie hoe dit werk nie, @global.w_solve_female_caregiver_1! Dis nie regverdig nie!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Perfek! Op hierdie manier kan jy jou onverdeelde aandag aan jou tiener gee sodat hulle gewaardeerd en geliefd voel.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: “Ek wil dit nie hoor nie!” \n\n@global.w_solve_teen_girl: “Jy probeer nie eens na my luister nie! Ek weet nie waarom ek enigsins met jou probeer nie!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Uitstekend! Jy kan probeer om tyd saam met jou tiener deur te bring as die ander kinders al gaan slaap het of buite speel.", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "Kom ons kyk hoe probleemoplossing in die praktyk werk.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Wonderlik! Miskien kan julle saam winkel toe stap of na ’n sportwedstryd gaan kyk sodat julle kan gesels sonder dat die ander kinders jou aandag vra.", + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 kom huis toe van die werk af.\n\n@global.w_solve_female_caregiver_2 (dink): “Ai, my arme voete! Ek moet vir ’n rukkie sit en ’n koppie koffie drink voor ek vir almal begin kos maak.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te probeer. Ons het opgemerk dat jy op die @data.habit.instruct_positively.in_text_title getik het – wonderlik dat jy onthou het!", + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: “@global.w_solve_teen_boy_2! Wat doen jy? Daardie brood was vir aandete! Nou sal daar nie vir ons almal genoeg wees nie!”", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Jou tuisoefening was om REALISTIESE, POSITIEWE en PRESIESE instruksies met jou tiener te poog.", + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: “Jammer, @global.w_solve_female_caregiver_2, ek was net honger.Ek kan verduidelik, jy sien, daar is ’n ou by die skool... \n\n@global.w_solve_female_caregiver_2 ( dink): “Neem ’n blaaskans...haal net asem…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Dankie dat jy deel! Welgedaan dat jy jou tiener positiewe instruksies probeer gee het en dat jy ’n positiewe verhouding met jou tiener wil bou.\n\nJou tiener verdien lof en JY ook!", + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Gee my net ’n oomblik. Ek is moeg en nou is ek bekommerd dat ek nie genoeg kos vir aandete gaan hê nie.” \n\n@global.w_solve_teen_boy_2: “Ek is jammer, @global.w_solve_female_caregiver_2.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Which of the tips helped you?", - "text": "Watter van die wenke het jou gehelp?", + "SourceText": "Step 1: KNOW IT", + "text": "Stap 1: WEET DIT", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "WEES REALISTIES – Kan jou tiener doen wat jy gaan vra?", + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: “Vertel my nou, waarom is jy so honger? Het jy nie jou middagete by die skool geëet nie?” \n\n@global.w_solve_teen_boy_2: “Dis die probleem. Daar is ’n ou by die skool wat my boelie. Hy sê as ek nie elke dag my middagete vir hom gee nie, gaan hy en sy vriende my seermaak. Hy maak my so kwaad!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "WEES POSITIEF – Gebruik positiewe woorde en prys hulle!", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, maar ek is bly jy het my vertel, @global.w_solve_teen_boy_2. Dit beteken nie dat jy almal se aandete kan eet nie. Wanneer ons klaar gepraat het, moet jy winkel toe gaan en nog brood gaan koop. Maar nou eers: Wat dink jy moet ons aan die boelieprobleem doen?”\n\n@global.w_solve_teen_boy_2: “Wel… Ek wil hom net slaan of hom terugkry.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "WEES DUIDELIK – Wees duidelik en spesifiek!", + "SourceText": "Step 2: SOLVE IT", + "text": "Stap 2: LOS DIT OP", "type": "template", "note": "" }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Wonderlik! Wanneer ons ons tiener vra om iets te doen wat realisties is, is dit vir hulle makliker om daarin te slaag.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: “Hmmm… wat dink jy sal gebeur as jy dit doen?”\n\n@global.w_solve_teen_boy_2: “Ek weet nie. Hy is groter as ek, so hy sal my waarskynlik meer seermaak. En ek kan by die skool in die moeilikheid kom en geskors word.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Wanneer ons hulle prys, voel ons tieners aangemoedig om weer na ons te luister!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: “Ja, dit kan gebeur. Wat kan ons in plaas daarvan doen?”\n\n@global.w_solve_teen_boy_2: “Ek neem aan ek kan vir die onderwyser sê. Maar dan gaan die ander kinders my ’n klikbek noem. Miskien kan jy met die onderwyser praat?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Fantasties! Wanneer ons vooruit dink aan spesifieke opdragte om vir ons tiener te gee, word ons instruksies baie makliker om te volg!", + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Dit klink na ’n beter idee. Ek kan met sy ouers ook praat, as jy wil.”\n\n@global.w_solve_teen_boy_2: “Dit sal gaaf wees, as jy dink dit sal ook help. Dankie, @global.w_solve_female_caregiver_2.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Did you have any challenges?", - "text": "Het jy enige uitdagings ervaar?", + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Enigiets vir jou, my kind. Ek sal dit net na aandete doen. En weet jy, as dit nie werk nie, kan ons altyd iets anders saam probeer.”\n\n@global.w_solve_teen_boy_2: “Dankie, @global.w_solve_female_caregiver_2.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "What challenge did you have?", - "text": "Watter uitdaging het jy ervaar?", + "SourceText": "Step 3: TRY IT", + "text": "Stap 3: PROBEER DIT", "type": "template", "note": "" }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "My tiener wou nie die opdrag uitvoer nie.", + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "’n Week later... \n\n@global.w_solve_female_caregiver_2: “Hoe gaan dinge nou by die skool?”\n\n@global.w_solve_teen_boy_2: “Dit gaan beter, die seun vat nie meer my middagete nie. Maar hy is nog steeds baie gemeen met my.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Ek het nie tyd gevind om een-tot-een-tyd saam met my tiener deur te bring nie.", + "SourceText": "Step 4: TEST IT", + "text": "Stap 4: TOETS DIT", "type": "template", "note": "" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Ek het ’n negatiewe in plaas van ’n positiewe opdrag gegee.", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: “Ek is jammer om dit te hoor, @global.w_solve_teen_boy_2. Sal ek jou oom vra om met sy ouers te gaan praat? As dit nie werk nie, sal ons iets anders probeer!” \n\n@global.w_solve_teen_boy_2: “Ja, dankie@global.w_solve_female_caregiver_2. Ek weet ten minste jy is aan my kant.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Ek het op my tiener geskree toe hulle negatiewe gedrag getoon het, in plaas van om ’n positiewe opdrag te gee vir wat hulle moes doen.", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Maak jou oë toe, asem in, en weet dat alles wat jy gedoen het, baie belangrik is.", "type": "template", "note": "" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Top @local.number_of_challenges uitdagings wat ander ouers ondervind:", + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "Hok @global.w_solve_teen_girl vir ’n maand", "type": "template", - "note": "The string @local.number_of_challenges should not be translated." + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Ek weet; ons kinders het tyd nodig om te leer om opdragte uit te voer. Wees geduldig, probeer weer, en onthou om hulle elke keer as hulle ’n opdrag uitvoer, te prys!", + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: “Jy mag vir die volgende maand nie uitgaan nie.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Wil jy een van die volgende dinge probeer?", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Dit het nie gewerk nie... Kom ons probeer iets anders.", "type": "template", "note": "" }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Dink aan ’n tyd dat ek elke dag vyf minute of ’n bietjie meer opsy kan sit.", + "SourceText": "Return the phone and save up", + "text": "Gee die foon terug en spaar", "type": "template", "note": "" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Kry ’n huistakie wat ons op ’n prettige manier saam kan doen.", + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: “Ek probeer nie jou vriend van iets beskuldig nie, en ek is ook nie jaloers nie. Ek is net bekommerd dat wanneer iemand ’n geskenk gee, dit moeilik is om ‘nee’ te sê wanneer hulle iets in ruil vra – soos seks. As jy ’n foon wil hê, sal ons saam spaar sodat jy jou eie besluite kan neem sonder om hom iets te skuld.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Vra my tiener of iemand anders om my met ’n huistakie te help sodat ek ’n bietjie ekstra vrye tyd kan hê.", + "SourceText": "This is great! Try the third option as well.", + "text": "Dit is wonderlik! Probeer die derde opsie ook.", "type": "template", "note": "" }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Perfek! Selfs om 5 minute te spandeer, maak ’n groot verskil, en as jy dit elke dag op dieselfde tyd doen (soos by ontbyt of voor slapenstyd), sal dit makliker wees om dit aan te hou doen!", + "SourceText": "Learn about safe sex", + "text": "Leer oor veilige seks", "type": "template", "note": "" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Wonderlik! Op dié manier kry jy jou werk gedoen en kan jy ’n aangename tyd saam met jou tiener hê!", + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: “Dit laat my besef dat ons oor kêrels moet praat en oor hoe om jouself te beskerm. Baie tieners van jou ouderdom raak swanger of raak MIV-positief. Kom ons gaan kliniek toe sodat jy met die verpleegster kan praat oor hoe jy veilig kan bly.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Wonderlik! Deur verantwoordelikhede te deel, sal jy meer tyd hê om iets aangenaam saam met jou tiener te doen – dit is so belangrik!", + "SourceText": "This is great!", + "text": "Dis wonderlik!", "type": "template", "note": "" }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "Ja, dit neem tyd om daaraan gewoond te raak om positiewe opdragte te gee – dit is regtig die moeite werd om weer te probeer! Dink aan die gedrag wat jy wil hê jou tiener meer moet openbaar, en dink aan positiewe maniere om daardie opdrag te gee!", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en bespreking – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en bespreking – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Dit is moeilik om opdragte uit te dink terwyl ons nog kwaad is. Probeer om ’n tyd te vind wanneer jy kalm is om ’n positiewe opdrag aan jou tiener in te stel.\n\nIn die volgende @global.weekly_workshop sal ons meer praat oor hoe ons, ons emosies kan hanteer! Jy kan meer ontspanningsaktiwiteite vind: @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Storie en nadenke – dit het nie gewerk nie…\n* Hulpmiddels: Hoe om probleme op te los\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT\n* Storie en nadenke – dit het gewerk!\n* Probeer dit!\n* Voorstelle om tuis te oefen", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak. Ons het opgemerk dat jy op die@data.habit.money.in_text_title getik het – welgedaan dat jy onthou het!", + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Bespreek onder mekaar:\n\nHoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Jou doelwit was om ’n gesinsbegroting en spaarplan te maak.", + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Onthou julle vir @global.w_solve_teen_girl en die foon wat sy by die seun gekry het?", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Dankie dat jy jou ervarings gedeel het! Welgedaan dat jy gedink het oor hoe jy saam met jou gesin kan begroot en spaar. Dit sal julle werklik help om jul gesinsdoelwitte te bereik. \n\nSaam kan julle soveel goeie dinge bereik!", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Hoe kan @global.w_solve_teen_girl en @global.w_solve_female_caregiver_1 die 4 stappe van probleemoplossing gebruik soos @global.w_solve_female_caregiver_2 en @global.w_solve_teen_boy_2 dit gedoen het? \n\nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "make a budget together with their family", - "text": "stel ’n begroting op saam met hul gesin", + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Haal ’n paar keer diep asem om te kalmeer, en", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "Het julle enige uitdagings gehad toe julle saam julle begroting opgestel het?", + "SourceText": "KNOW IT", + "text": "WEET DIT", "type": "template", "note": "" }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Wat was vir jou moeilik toe julle saam julle begroting opgestel het?", + "SourceText": "Identify the problem.", + "text": "Identifiseer die probleem.", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Ek wou nie vir my gesin sê hoeveel ek verdien nie.", + "SourceText": "SOLVE IT", + "text": "LOS DIT OP", "type": "template", "note": "" }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Jy hoef nie die presiese bedrag wat jy verdien, bekend te maak nie; jy kan ’n geskatte bedrag gee. Jy kan sê: “In hierdie huishouding het ons elke maand @global.currency@global.monthly_income_estimate” in plaas van “Ek verdien @global.currency@global.monthly_income_precise”.", + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Dink aan moontlike oplossings en wat sal gebeur as ons dit gebruik.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "" }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Toe ons begroot het, kon ons nie saamstem oor wat onder behoeftes en wat onder begeertes moet val nie.", + "SourceText": "TRY IT", + "text": "PROBEER DIT", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Mense se begeertes en behoeftes verskil soms. Om saam daaroor te praat, kan jou en jou tiener help om mekaar te verstaan, julle verskille te respekteer en te kyk waar julle toegewings kan maak.", + "SourceText": "Choose a solution and try it out.", + "text": "Kies ’n oplossing en probeer dit.", "type": "template", "note": "" }, { - "SourceText": "I did not understand what to do.", - "text": "Ek het nie verstaan wat om te doen nie.", + "SourceText": "TEST IT", + "text": "TOETS DIT", "type": "template", "note": "" }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Ek is jammer om dit te hoor. Ek weet dit kan moeilik wees! Hoekom kyk ons nie weer daarna nie? Jou tiener of ander gesinslede kan aansluit en help!", + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "Het dit gewerk? Wonderlik! As dit nie gewerk het nie, probeer ’n ander oplossing.", "type": "template", "note": "" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "My tiener wou nie die begroting saam met my doen nie.", + "SourceText": "Let's practice problem-solving!", + "text": "Kom ons oefen probleemoplossing!", "type": "template", "note": "" }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Probeer die begroting eers saam met ander volwassenes in jou huis maak. Jou tiener sal dalk begin belangstel in wat julle doen.\n\nOm ’n begroting te maak, kan ernstig klink, maar probeer om dit pret te maak – maak dit ’n speletjie tydens een-tot-een-tyd! Of jy kan probeer om die begroting eers vir @global.w_money_grandma te maak.\n\nOnthou om jou tiener te prys wanneer julle klaar is!", + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Oefen saam aan ’n probleem wat julle nou het. Een van julle is die ouer en een is die tiener. \n\nPrys mekaar en moedig mekaar aan – ons is trots op jou!\n\nOnthou die stappe: \nWEET DIT – LOS DIT OP – PROBEER DIT – TOETS DIT", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "Jy verdien ook lof. Dankie weereens vir jou gebruik van @global.parent_app.. Dit wys dat jy regtig omgee!", + "SourceText": "We care about you, and how life is treating you.", + "text": "Ons gee om vir julle en hoe die lewe julle behandel.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Jou doelwit was om jou tiener te prys. Jy het hierdie week op @data.habit.praise_teen.in_text_title getik. Welgedaan dat jy onthou het!", + "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", + "text": "Jy is ’n ster. En jy maak ’n werklike verskil. Wees trots op jouself.", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Jou doelwit was om jou tiener te prys.", + "SourceText": "Sorry that things are not easy today. All parents have these days.", + "text": "Jammer dat dinge vandag nie maklik is nie. Alle ouers het sulke dae.", "type": "template", "note": "" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "Het jy hierdie week ’n kans gehad om jou tiener te prys?", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "Julle het hierdie week se slypskool voltooi.\n\nVolgende week sal ons oor geld praat – julle sal die volgende nodig hê:\n* ’n vel papier/karton\n* ’n pen\n* 20 klein klippies/boontjies/pitte\n\nDit sal pret wees!", "type": "template", "note": "" }, { - "SourceText": "Yes", - "text": "Ja", + "SourceText": "There are two home practices for this week.", + "text": "Daar is twee tuisoefeninge vir hierdie week.", "type": "template", "note": "" }, { - "SourceText": "No", - "text": "Nee", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Elke keer as jy gespanne of ontsteld voel: asem vyf keer in en uit voordat jy reageer.\n\nEn wanneer julle albei kalm is, deel met jou tiener hoe jy voel.", "type": "template", "note": "" }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Dit kan soms moeilik wees om te onthou om ons tieners te prys. Volgende keer dat jy een-tot-een-tyd saam met jou tiener deurbring, probeer dink aan een ding waarvoor jy hulle kan prys. Jy kan selfs sê: “Dankie dat jy tyd met my spandeer het!”", + "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "text": "Bespreek “veiligheid-amnestie” met jou tiener, en dink saam aan ’n situasie waar julle dit sou kon gebruik.", "type": "template", "note": "" }, { - "SourceText": "Well done - great job for remembering!", - "text": "Welgedaan dat jy onthou het!", + "SourceText": "Safety Amnesty Story", + "text": "Storie oor veiligheid-amnestie", "type": "template", "note": "" }, { - "SourceText": "How did your teen respond?", - "text": "Hoe het jou tiener gereageer?", + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Elke keer wanneer jy ’n blaaskans neem voor jy reageer, of wanneer jy iets doen om jou tiener veilig te hou, tik op jou @global.parent_points en vier jou sukses!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Surprised", - "text": "Verras", + "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", + "text": "Het jy enige van hierdie uitdagings ondervind toe jy met jou tiener gepraat het oor hoe jy voel?", "type": "template", "note": "" }, { - "SourceText": "Happy", - "text": "Bly", + "SourceText": "What was difficult for you about sharing how you feel with your teen?", + "text": "Wat het jy moeilik gevind toe jy jou gevoelens met jou tiener deel?", "type": "template", "note": "" }, { - "SourceText": "My teen did not like it", - "text": "My tiener het nie daarvan gehou nie", + "SourceText": "I was afraid my teen would think I was weak.", + "text": "Ek was bang my tiener sou dink ek is swak.", "type": "template", "note": "" }, { - "SourceText": "I do not know", - "text": "Ek weet nie", + "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text": "Om gevoelens te deel, veral die moeilikes, is ’n belangrike voorbeeld vir jou tiener! Dit maak eintlik almal in die gesin sterker, want julle kan mekaar beter verstaan en ondersteun.", "type": "template", "note": "" }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Onthou, dit neem tyd vir jou tiener om daaraan gewoond te raak dat jy hulle prys. Hoe meer tyd jy met hulle deurbring, hoe beter sal dit gaan!", + "SourceText": "I felt uncomfortable about naming specific difficult feelings.", + "text": "Ek het ongemaklik gevoel oor die noem van spesifieke moeilike gevoelens.", "type": "template", "note": "" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "Welgedaan dat jy jou tiener se gevoelens opgelet het, hou so aan!", + "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text": "Om spesifiek te wees, is nie onbeskof of ongevoelig nie – dit help ander regtig om jou duidelik te verstaan en dit voorkom verwarring in die gesin. Gevoelens soos woede en stres is deel van ons lewens. Al wat ons hoef te doen as ons kwaad en gestres voel, is om ons emosies goed te hanteer deur ’n paar keer diep asem te haal voordat ons reageer.", "type": "template", "note": "" }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Dit gebeur – wees net geduldig. Maak seker dat jy tyd met jou tiener deurbring sodat hulle jou opinie meer en meer sal waardeer. Wanneer jou lof opreg is, sal jy kort voor lank die voordele sien!", + "SourceText": "My teen felt uncomfortable when I shared my feelings.", + "text": "My tiener het ongemaklik gevoel toe ek my gevoelens gedeel het.", "type": "template", "note": "" }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Geen probleem – probeer volgende keer oplet hoe hulle reageer!", + "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text": "Dit is altyd moeilik om ’n nuwe ding te begin. Gee jouself tyd om daaraan gewoond te raak en hou aan om ’n goeie voorbeeld te stel deur jou gevoelens dop te hou en te deel. Mettertyd sal jou tiener leer om dieselfde te doen, en hulle sal selfs meer geliefd en versorg voel!", "type": "template", "note": "" }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Jou doelwit was om ’n moontlike krisissituasie met jou tiener te bespreek en ’n plan daarvoor te maak.", + "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "text": "Toe ek my gevoelens deel, het my tiener baie vrae gevra, wat my ongemaklik gemaak het.", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "berei vir ’n moontlike krisis met hul tieners voor", + "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", + "text": "Om gevoelens te deel, help jou tiener om daarvan bewus te wees en dieselfde te leer doen. Jy kan kies hoeveel besonderhede jy oor die situasie wil deel. Dit hang van jou af! Jy kan ook kies om vrae later te beantwoord deur te sê: “Ek voel nou kwaad/gestres. Kan jy my asseblief ’n bietjie tyd gee? Ons kan vanaand meer hieroor praat.”", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "berei vir ’n moontlike krisis met jou tiener voor", + "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "text": "Ek was te gestres of kwaad om te probeer om my gevoelens te deel – ek verkies om alleen te wees as ek so voel.", "type": "template", "note": "" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "My tiener het my vertel dat iets ernstigs met hulle gebeur het en ek het nie geweet hoe om dit te hanteer nie.", + "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "text": "Dit is oukei om op daardie oomblik nie te wil deel nie. Soek ’n bietjie tyd om later te verduidelik, wanneer jy kalmer voel, sodat almal kan verstaan.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Prys jou tiener omdat hulle jou vertel het. Dit is nie maklik om dit te doen nie! Onthou dat jy al die vaardighede wat jy uit jou gereedskapskas gekies het, kan gebruik: neem ’n blaaskans, gebruik die vier stappe van probleemoplossing en reik uit om die ondersteuning te kry wat jy en jou tiener benodig!", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", + "text": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer.", "type": "template", "note": "" }, { - "SourceText": "Get support", - "text": "Kry ondersteuning", + "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Jou doelwit was ook om met jou tiener te praat oor hoe julle albei in ’n stresvolle situasie gevoel het.", "type": "template", "note": "" }, { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Die gesprek het my baie ongemaklik laat voel omdat dit my herinner het aan ’n negatiewe ervaring wat ek gehad het.", + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Ons weet hoe spanningsvol dit deesdae is om tieners groot te maak. Dit help jou – en jou gesin – om te leer hoe om jou stres te hanteer.", "type": "template", "note": "" }, { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Wanneer ons aan sulke ervarings herinner word, is dit normaal om ontsteld of kwaad te voel. Dit is belangrik om ’n tyd te vind wanneer jy kalm is, sodat jy kan dink aan watter ondersteuning jy nodig het. Dalk moet jy met iemand praat.", + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Goeiedag, almal. \n\nVandag se onderwerp is hoe om spanning te hanteer.\n\nDit is belangrik om te weet hoe om spanning te hanteer. Soms gedra ons kinders hulle op maniere wat ons gespanne maak, en ons as ouers kan ons kinders ook gespanne laat voel.\n\nDit is dus belangrik om te besef wanneer ons spanning ervaar en om dan ’n blaaskans te neem en asem te haal. Dit sal jou help om jou spanning te hanteer.", "type": "template", "note": "" }, { - "SourceText": "One of us did not feel comfortable.", - "text": "Een van ons het nie gemaklik gevoel nie.", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Hoe was jou stresvlakke hierdie week? Probeer ’n paar keer diep asemhaal voordat jy op jou tiener reageer – dit maak ’n groot verskil.", "type": "template", "note": "" }, { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Dit is moeilike dinge om oor te praat. Soek ’n ontspannende tyd daarvoor. Ons weet dit is baie makliker om nie oor hierdie dinge te praat nie en te hoop dat dit nooit met ons sal gebeur nie. Maar om te leer om krisisse te hanteer, is soos om versekering te bekom; dit is ALTYD die beste om daaraan te dink en voorbereid te wees.", + "SourceText": "Well done!", + "text": "Mooi so!", "type": "template", "note": "" }, { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Jou doel was om risiko's en ondersteuningstelsels met jou tiener te bespreek – in jou gemeenskap sowel as aanlyn.", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "Welgedaan dat jy diep asemhaal voordat jy op jou tiener reageer! Elke keer as jy ’n blaaskans neem, kry jy jou beheer terug.", "type": "template", "note": "" }, { - "SourceText": "map risks and support with their teens", - "text": "bespreek risiko's en ondersteuning met hul tieners", + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "Gelukkig, hartseer, kwaad, opgewonde, bekommerd? Welgedaan dat jy erken hoe jy en ander mense vandag gevoel het! En onthou, môre is ’n splinternuwe dag.", "type": "template", "note": "" }, { - "SourceText": "map risks and support with your teen", - "text": "bespreek risiko's en ondersteuning met jou tiener", + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Ons voel almal soms oorweldig. Dit help om diep asem te haal!\n\nVoltooi die @local.workshop_data.in_text_title om ’n paar nuttige hulpmiddels te kry om stres te hanteer.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Ek en my tiener het nie saamgestem oor watter plekke en aanlyn aktiwiteite onveilig is nie.", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "text": "Hallo, @fields.user_name! Veels geluk met die begin van @global.parent_app week 5.\n\n'n Nuwe ouerskap-werkswinkel wag op jou, met wenke oor hoe ons kalm en in beheer kan bly wanneer ons tieners ons mal maak.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "Welgedaan dat jy die aktiwiteit probeer het! Wanneer ons na ons tieners luister, selfs as ons nie saamstem nie, leer ons om hul denke te verstaan. Probeer om tyd te vind om die aktiwiteit weer te doen – probeer om regtig te luister en te wys dat jy hulle verstaan voordat jy jou gedagtes deel.", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "text": "Hallo, @fields.group_name! Veels geluk met die begin van @global.parent_app week 5.\n\n'n Nuwe ouerskap-werkswinkel wag op jou, met wenke oor hoe ons kalm en in beheer kan bly wanneer ons tieners ons mal maak.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "My tiener het die huis van iemand wat ek vertrou, as onveilig geïdentifiseer. Ek was geskok en het nie geweet wat om te doen nie.", + "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Ons het ’n nuwe werksessie vir jou beskikbaar oor die hantering van woede en stres. Dit sal jou help om beter na jouself om te sien.", "type": "template", "note": "" }, { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Dit is skokkend om uit te vind dat mense wat na aan ons is en wat ons vertrou, ’n gevaar vir ons tieners kan wees. Onthou om ’n pouse te neem wanneer jy ontsteld is, en probeer om kalm na jou tiener te luister. Soek na iemand met wie jy hieroor kan praat, miskien ’n vriend of ondersteuningsdiens, sodat jy die ondersteuning kan kry wat jy nodig het.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Môre is ’n splinternuwe @global.parent_app-slypskool vir jou gereed.\n\nDeur eers die @local.workshop_data.in_text_title te voltooi, lê jy ’n baie belangrike grondslag: as jy goed voel, sal jou gesin ook beter doen!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "My tiener het daarop aangedring dat die kroeg (of ’n ander plek wat ek nie voel veilig is nie) veilig vir hulle is om te besoek. Ek weet nie hoe om my tiener te oortuig nie.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "Geluk met die voltooiing van die @local.workshop_data.in_text_title. Môre sal jy toegang tot ’n nuwe slypskool kry om jou te help ontspan en nuttige vaardighede te bou!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Dit kan baie frustrerend wees. Om ’n oplossing te vind, moet jou tiener voel dat hulle gehoor word – luister dus kalm na jou tiener se redes, en deel dán eers jou eie gedagtes. Dink dan saam aan ’n reël wat hulle toelaat om pret te hê, maar ook veilig te wees.", + "SourceText": "Let's think about what happened in this story.", + "text": "Kom ons dink oor wat in hierdie storie gebeur het.", "type": "template", "note": "" }, { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "As volwassene voel ek dat dit my verantwoordelikheid is om te beskerm – maar toe ek my tiener vertel wat veilig is en wat nie veilig is nie, het my tiener kwaad geword.", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel?", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Ons tieners kan dinge oor ons gemeenskappe en tegnologie weet waarvan ons nie bewus is nie. Wanneer ons, ons tieners aktief by die kaart-aktiwiteit betrek en regtig na hulle luister, voel hulle gehoor en gewaardeer, en dit kan makliker wees om ’n plan op te stel wat vir almal aanvaarbaar is.", + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "En @global.w_stress_male_caregiver?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Dit was moeilik om beskikbare hulpbronne in my gemeenskap te identifiseer omdat ek nie my gemeenskap so goed ken nie/daar so min dienste beskikbaar is.", + "SourceText": "And @global.w_stress_girl?", + "text": "En @global.w_stress_girl?", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Dit is moeilik om van elke detail in ons gemeenskappe te weet. Betrek ’n ander familielid of vriend by jou kaart-aktiwiteit. Jy kan selfs ’n paar van die beskikbare dienste besoek en vra wat hulle doen. Hoe meer ons weet, hoe beter kan ons ons gesinne veilig hou!", + "SourceText": "Sad", + "text": "Hartseer", "type": "template", "note": "" }, { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Ek weet nie veel van tegnologie nie, daarom weet ek nie hoe om met my tiener daaroor te praat nie.", + "SourceText": "Scared", + "text": "Bang", "type": "template", "note": "" }, { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Dit is heeltemal oukei! Jy kan nog steeds jou tiener ondersteun. Vra jou tiener om die toestelletjies wat hulle gebruik, te verduidelik – jy kan dit tydens een-tot-een-tyd doen. Dit is ’n wonderlike geleentheid om belangstelling in jou tiener se lewe te toon en om moontlike risiko's saam te bespreek. As jy nie seker is watter reëls jy moet neerlê nie, kan jy altyd met jou tiener ooreenkom om ’n nuwe reël vir twee weke te probeer en dan te bespreek hoe dit gaan, en indien nodig, die reël te verander!", + "SourceText": "Confused", + "text": "Verward", "type": "template", "note": "" }, { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Jou doelwit was om saam met jou tiener ’n probleem of konflik op te los.", + "SourceText": "Angry", + "text": "Kwaad", "type": "template", "note": "" }, { - "SourceText": "resolve problems with their teens", - "text": "los probleme saam met hul tieners op", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Elkeen van hulle was ontsteld om hul eie redes!", "type": "template", "note": "" }, { - "SourceText": "resolve the problem with your teen", - "text": "los die probleem saam met jou tiener op", + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "Wat kon @global.w_stress_male_caregiver anders gedoen het?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "I forgot the steps of problem solving.", - "text": "Ek het die stappe van probleemoplossing vergeet.", + "SourceText": "Recognise why he feels stressed", + "text": "Erken waarom hy gespanne voel", "type": "template", "note": "" }, { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "Dit verg ’n bietjie oefening om al vier stappe van probleemoplossing te gebruik. As ’n probleem weer opduik, kyk saam met jou tiener na die vier stappe – dit sal ’n groot verskil maak!", + "SourceText": "Take a deep breath and speak calmly", + "text": "Haal diep asem en praat op ’n kalm manier", "type": "template", "note": "" }, { - "SourceText": "I started with the solutions right away.", - "text": "Ek het dadelik begin met die oplossings.", + "SourceText": "Show he understands his teen’s feelings", + "text": "Wys hy verstaan sy tiener se gevoelens", "type": "template", "note": "" }, { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "As ons ’n probleem het, wil ons altyd die vinnigste eindresultaat bereik en kan ons van die stappe vergeet. Om saam die beste oplossing te vind, is dit nuttig om eers die probleem en die verskillende oplossings ten volle te verstaan.", + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "Dink saam met @global.w_stress_teen_boy_1 aan oplossings", "type": "template", "note": "" }, { - "SourceText": "Four steps of problem solving", - "text": "Vier stappe van probleemoplossing", + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "Doen iets positief saam met @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Ons kon nie saamstem oor ’n oplossing om te probeer nie en ons het gestry.", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "Kom ons kyk na ’n voorbeeld van hoe spanning soms net te veel kan raak, vir ons almal:", "type": "template", "note": "" }, { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Soms kan dit moeilik wees om met almal in die gesin saam te stem, veral as almal nog nie kalm is nie. Julle kan saamstem om eers een oplossing te probeer, en dan ’n ander. En as julle vashaak, probeer dan om later bymekaar te kom om saam oor die oplossing te besluit.", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver: “Los my uit en hou jou neus uit my sake!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Ek het kwaad geword toe die probleem opduik en ek het vergeet om die stappe van probleemoplossing te gebruik.", + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: “Wat het ek gedoen? Jy luister nooit nie!” \n\n@global.w_stress_male_caregiver: “Ek het gesê los my uit of jy kry ’n pak slae!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Wanneer ’n probleem opduik, word ons almal soms kwaad of gespanne. Onthou, as jy kwaad of gestres voel, kan jy ’n pouse neem om jou te help kalm bly en dan die probleem wat jy ondervind, op te los.", + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: “Kyk! Ek het ’n huis gemaak!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "My tiener het kwaad geword en wou nie oor die probleem praat nie.", + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: “Wie gee om oor jou simpel huis!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Jou tiener is dalk te oorweldig om die probleem dadelik die hoof te bied. Erken en noem hul emosies, en maak later in die dag of week ’n tyd vry om die probleem saam te bespreek en op te los. Deur jou tiener tyd te gee, kan die probleem goed opgelos word.", + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Dankie dat jy saam gedink het! Kom ons gaan terug om te sien wat @global.w_stress_male_caregiver nou doen:", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer. Jy het op die@data.habit.breathe.in_text_title getik – mooi so!", + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver het sy werk verloor. Hy het vol frustrasie en spanning tuis gesit toe @global.w_stress_teen_boy_1 ingekom het.", "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Hierdie week was jou doelwit: wanneer jy gestres of ontsteld voel, moet jy vyf keer in- en uitasem voordat jy reageer.", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: “Kan ek geld kry om lugtyd te koop?” \n\n@global.w_stress_male_caregiver ( asem in): “Ek is jammer, my seun. Dit was ’n moeilike dag. Die baas het my afgedank.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "How did this work out?", - "text": "Hoe het dit verloop?", + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “O nee! Ek het ’n nuwe skooluniform nodig.” \n\n@global.w_stress_male_caregiver: “Ek sal probeer, my seun, en jou @global.w_stress_female_caregiver se werk sal help om ons deur te sien terwyl ek ander werk soek.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" }, { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Jou doelwit was ook om met jou tiener te praat oor hoe julle albei in ’n stresvolle situasie gevoel het.", + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: “Ek kan ook werk soek om te help,@global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nee, dis oukei, @global.w_stress_teen_boy_1. Ek waardeer jou aanbod. Die belangrikste is dat jy hard werk op skool. Dankie dat jy na my geluister het.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "How did this go?", - "text": "Hoe het dit gegaan?", + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “Kom ons gaan speel saam sokker. Dit sal my help om ’n bietjie van hierdie spanning te vergeet.”\n\n@global.w_stress_teen_boy_1: “Oukei, @global.w_stress_male_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", - "text": "Het jy enige van hierdie uitdagings ondervind toe jy met jou tiener gepraat het oor hoe jy voel?", + "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", + "text": "Dit het soveel beter gegaan!\n\nOm ’n blaaskans te neem, help om kalm te reageer wanneer jy kwaad of gespanne voel. Probeer dit, jy sal sien!", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about sharing how you feel with your teen?", - "text": "Wat het jy moeilik gevind toe jy jou gevoelens met jou tiener deel?", + "SourceText": "Safety Amnesty", + "text": "Veiligheid-amnestie", "type": "template", "note": "" }, { - "SourceText": "I was afraid my teen would think I was weak.", - "text": "Ek was bang my tiener sou dink ek is swak.", + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Dink terug aan toe jy ’n tiener was. \n\nWas daar ooit ’n tyd wat jy in gevaar was, maar jy kon nie vir jou gesin vertel nie, want hulle sou kwaad wees?\n\nDit het AMPER met @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl gebeur! Kom ons kyk:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "text": "Om gevoelens te deel, veral die moeilikes, is ’n belangrike voorbeeld vir jou tiener! Dit maak eintlik almal in die gesin sterker, want julle kan mekaar beter verstaan en ondersteun.", + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: “Moenie vir die grootmense sê nie, maar ek gaan vanaand saam met my vriende na ’n kroeg toe” \n\n@global.w_stress_teen_girl: “Geniet dit! Ek het vir hulle gesê ek bly by my vriendin, maar ek gaan eintlik na ’n cool partytjie toe.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "I felt uncomfortable about naming specific difficult feelings.", - "text": "Ek het ongemaklik gevoel oor die noem van spesifieke moeilike gevoelens.", - "type": "template", - "note": "" - }, - { - "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "text": "Om spesifiek te wees, is nie onbeskof of ongevoelig nie – dit help ander regtig om jou duidelik te verstaan en dit voorkom verwarring in die gesin. Gevoelens soos woede en stres is deel van ons lewens. Al wat ons hoef te doen as ons kwaad en gestres voel, is om ons emosies goed te hanteer deur ’n paar keer diep asem te haal voordat ons reageer.", + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: “Ek dink hulle verkoop dwelms. Ons kan almal in hegtenis geneem word. Maar ek kan my ouers nie vertel nie – hulle sal vreeslik kwaad wees.”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_2 should not be translated." }, { - "SourceText": "My teen felt uncomfortable when I shared my feelings.", - "text": "My tiener het ongemaklik gevoel toe ek my gevoelens gedeel het.", + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: “Ek is bang. Almal is te dronk om my huis toe te neem. Een seun sê hy sal my neem, maar hy wil eers na sy huis toe gaan. Ek kan my ouers nie vertel nie – ek het gejok oor die partytjie.”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_girl should not be translated." }, { - "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "text": "Dit is altyd moeilik om ’n nuwe ding te begin. Gee jouself tyd om daaraan gewoond te raak en hou aan om ’n goeie voorbeeld te stel deur jou gevoelens dop te hou en te deel. Mettertyd sal jou tiener leer om dieselfde te doen, en hulle sal selfs meer geliefd en versorg voel!", + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", + "text": "Hierdie is gevaarlike situasies! Gelukkig het @global.w_stress_teen_boy_2 en @global.w_stress_teen_girl onthou wat @global.w_stress_parent vir hulle gesê het: \n\n“Ek gee meer om oor julle veiligheid as enigiets anders. As julle ooit ontsteld of bang is, kan julle my altyd skakel vir hulp, of my daarvan vertel. \n\nSê net 'VEILIGHEID-AMNESTIE'. Ek belowe ek sal my bes doen om te help en ek sal nie kwaad wees nie – selfs al doen julle iets wat julle nie moet nie.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "text": "Toe ek my gevoelens deel, het my tiener baie vrae gevra, wat my ongemaklik gemaak het.", + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", + "text": "@global.w_stress_teen_girl: “@global.w_stress_parent, dis ’n veiligheid-amnestie. Kan jy my kom oplaai? Ek het regtig ’n geleentheid huis toe nodig.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "text": "Om gevoelens te deel, help jou tiener om daarvan bewus te wees en dieselfde te leer doen. Jy kan kies hoeveel besonderhede jy oor die situasie wil deel. Dit hang van jou af! Jy kan ook kies om vrae later te beantwoord deur te sê: “Ek voel nou kwaad/gestres. Kan jy my asseblief ’n bietjie tyd gee? Ons kan vanaand meer hieroor praat.”", + "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", + "text": "@global.w_stress_teen_boy_2: “@global.w_stress_parent, veiligheid-amnestie. Ek dink my vriende is in die moeilikheid. Ek wil nie ophou om hulle vriend te wees nie, maar ek is bekommerd. Kan ons praat?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" }, { - "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "text": "Ek was te gestres of kwaad om te probeer om my gevoelens te deel – ek verkies om alleen te wees as ek so voel.", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Dit is wonderlik, veral in sulke moeilike tye soos hierdie. Jy is ’n ster.", "type": "template", "note": "" }, { - "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "text": "Dit is oukei om op daardie oomblik nie te wil deel nie. Soek ’n bietjie tyd om later te verduidelik, wanneer jy kalmer voel, sodat almal kan verstaan.", + "SourceText": "Today you will explore:", + "text": "Vandag sal julle die volgende verken:", "type": "template", "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel. Jy het op die @data.habit.consequence.in_text_title getik – welgedaan dat jy onthou het!", - "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." - }, - { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Jou doelwit was om EEN positiewe gevolg (vir jou tiener om verantwoordelikheid te neem) en EEN negatiewe gevolg (vir jou tiener wat ’n huisreël gebreek het) in te stel.", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Storie en bespreking – dit het nie gewerk nie...\n* Storie en bespreking – dit het gewerk!\n* Veiligheid-amnestie-storie en bespreking – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "introduce a consequence together", - "text": "kom oor 'n gevolg ooreen", + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Storie en nadenke – dit het nie gewerk nie...\n* Storie en nadenke – dit het gewerk!\n* Veiligheid-amnestie-storie en nadenke – dit het gewerk!\n* Hulpmiddels: Hoe om stres te hanteer \nASEM IN – DEEL – WYS\n* Voorstelle om tuis te oefen", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "Het jy enige uitdagings ervaar toe julle probeer het om saam oor ’n gevolg oor een te koml?", + "SourceText": "Let's discuss what happened in this story.", + "text": "Kom ons bespreek wat in hierdie storie gebeur het.", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Wat was vir jou moeilik toe jy ’n gevolg saam met jou tiener in te stel?", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "Hoe dink jy het @global.w_stress_teen_boy_1 gevoel? En sy @global.w_stress_male_caregiver? En@global.w_stress_girl?\n\nWat kon @global.w_stress_male_caregiver anders gedoen het?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Ek het baie kwaad geword toe my tiener die reël gebreek het.", + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver sou kon...", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Wanneer ons ’n pouse neem voordat ons reageer, help dit ons om te kalmeer en beter te reageer.\n\nVolgende keer dat jou tiener jou kwaad maak, probeer om eers ’n pouse te neem. Selfs ’n paar diep asemhalings kan ’n groot verskil maak!", + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* Erken waarom hy gespanne voel \n* Diep asemhaal en op ’n kalm manier praat\n* Wys hy verstaan sy tiener se gevoelens \n* Dink aan oplossings saam met @global.w_stress_teen_boy_1\n* Iets positief doen saam met@global.w_stress_teen_boy_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "My kind of tiener het baie kwaad geword vir my nadat ek die gevolg ingestel het.", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "ASEM IN. Stadig. Neem ’n blaaskans.", "type": "template", "note": "" }, { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Wanneer jou tiener kwaad word, moet jy dalk wegloop totdat julle albei kalm is.\n\nMaak seker dat jou gevolg regverdig en redelik is. Luister na jou tiener se verduideliking, en maak seker dat jy ’n “veiligheid-amnestie” gee as hulle ’n reël om veilig te bly, gebreek het.", + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Voor jy iets sê, asem vyf keer stadig in en uit. Dit sal jou kalmeer, en jou ’n kans gee om te dink.", "type": "template", "note": "" }, { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Ek het die gevolg ingestel sonder om dit eers met my tiener te bespreek.", + "SourceText": "SHARE how you feel", + "text": "DEEL hoe jy voel", "type": "template", "note": "" }, { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "Kan jy ’n gevolg maak vir as dit weer gebeur? Wanneer ons saam met ons tieners ’n gevolg vasstel, sal die resultaat meer realisties wees en ons tieners sal meer gewillig en in staat wees om die reël te volg.", + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Dis moeilik. Baie van ons is geleer om nie te huil nie, om nie ons gevoelens vir ons kinders te wys nie. Maar haal diep asem en vertel hulle op ’n kalm manier hoe jy voel. Hulle sal beter verstaan, en ook van jou leer hoe om stres te hanteer.", "type": "template", "note": "" }, { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Ek het vergeet om die gevolg deur te voer.", + "SourceText": "SHOW them you care", + "text": "WYS hulle dat jy omgee", "type": "template", "note": "" }, { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Ons almal maak foute! Hoe meer konsekwent ons met ons gevolge is, hoe meer sal ons kinders geneig wees om in die toekoms positief op te tree.", + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Dit is ook moeilik!. Spanning maak dat ons op onsself fokus. Maar ons tieners het ons ondersteuning nodig. Vra hulle hoe hulle voel. Luister na hulle en stel hulle gerus. Probeer hulle ’n drukkie gee of sê ‘ek verstaan’. Dit kan alles verander.", "type": "template", "note": "" }, { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Selfs met die gevolg, volg my tiener nog nie die reël nie.", + "SourceText": "SEEK the positive", + "text": "VIND die positiewe", "type": "template", "note": "" }, { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "As jou tiener die reëls bly breek, moet jy dalk meer positiewe tyd met hulle spandeer.\n\nProbeer om voort te gaan met jou ander doelwitte – soos selfsorg, een-tot-een-tyd en lof. Al hierdie vaardighede sal bydra om jou tiener meer geliefd en veilig te laat voel... en jy sal minder gestres wees!", + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "Kan jy en jou tiener dink aan idees wat dalk kan help? Kan julle iets positief saam doen om die stres uit julle gedagtes te kry?", "type": "template", "note": "" }, { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Ons het net ’n negatiewe gevolg daargestel, nie ’n positiewe gevolg nie.", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "As niks werk nie, haal asem. Jy kan dit doen.", "type": "template", "note": "" }, { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Dit kan soms moeilik wees om aan positiewe gevolge te dink. Positiewe gevolge sal jou tiener aanmoedig om meer verantwoordelikheid te neem, en jy sal die verskil sien!", + "SourceText": "Looking after yourself matters.", + "text": "Om na jouself om te sien, maak saak.", "type": "template", "note": "" }, { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "My tiener het ’n pakslae as negatiewe gevolg voorgestel.", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Wonderlik! So bly om te hoor dit gaan goed met jou vandag. Wat ’n wonderlike gevoel!", "type": "template", "note": "" }, { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Tieners is dalk daaraan gewoond dat ’n pakslae die enigste gevolg is as die reëls gebreek word. \n\nDink saam aan ’n paar kalm gevolge wat hulle kan help verstaan dat hulle iets verkeerds gedoen het. Dit sal meer doeltreffend wees en sal positiewe voorbeelde stel!", + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Soms gaan dinge goed. Soms nie. En soms weet ons nie heeltemal wat om te dink nie... en dit is heeltemal oukei! Onthou, jy is nie alleen nie.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Jou doelwit was om hierdie week EEN reël saam met jou tiener te maak.", - "type": "template", + "SourceText": "My Favourite Activities", + "text": "My gunsteling aktiwiteite", + "type": "global", "note": "" }, { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "Welgedaan! Dit is nie maklik nie, en tieners sal nie heeltyd die reëls gehoorsaam nie, maar om ’n paar sleutelreëls saam te maak, is ’n goeie begin. Prys jouself omdat jy dit probeer het – ons is trots op jou!", - "type": "template", + "SourceText": "All Activities", + "text": "Alle aktiwiteite", + "type": "global", "note": "" }, { - "SourceText": "make rules with their teens", - "text": "maak saam met hulle tieners reëls", - "type": "template", + "SourceText": "Random Activity", + "text": "Lukrake aktiwiteite", + "type": "global", "note": "" }, { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "Het julle enige uitdagings ervaar toe julle probeer het om saam ’n reël vas te stel?", - "type": "template", + "SourceText": "This Week's Activity", + "text": "Hierdie week se aktiwiteit", + "type": "global", "note": "" }, { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Wat was vir jou moeilik toe dit kom by ’n reël saam met jou tiener maak?", - "type": "template", + "SourceText": "Chat Together", + "text": "Gesels saam", + "type": "global", "note": "" }, { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Ek en my tiener kon nie oor ’n reël saamstem nie.", - "type": "template", + "SourceText": "Do Together", + "text": "Doen saam", + "type": "global", "note": "" }, { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Dink of die reël redelik is. Kan jou tiener dit volg? Wanneer julle as ’n gesin reëls maak, help dit om aan jou tiener te dink, hoe oud hulle is en wat vir hulle belangrik is.", - "type": "template", - "note": "" + "SourceText": "Your @global.parent_app Code", + "text": "Jou @global.parent_app-kode", + "type": "global", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "My tiener het gevoel dis onregverdig dat hulle die reël moet volg terwyl ek dit nie hoef te volg nie.", - "type": "template", + "SourceText": "Terms & Conditions", + "text": "Bepalings en Voorwaardes", + "type": "global", "note": "" }, { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Ons moet altyd onthou dat kinders die beste by ons leer. Hoe meer ons die reëls volg, hoe meer sal hulle die reëls ook volg.\n\nJy kan die reël aanpas om seker te maak dat dit realisties is vir almal om te volg, met inagneming van jou verantwoordelikhede en dié van jou tiener (byvoorbeeld skool- of werksaktiwiteite).", - "type": "template", + "SourceText": "Privacy Policy", + "text": "Privaatheidsbeleid", + "type": "global", "note": "" }, { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Ek het ongemaklik gevoel omdat ek voel dat ek die een moet wees wat die reël neerlê, nie my tiener nie.", - "type": "template", + "SourceText": "Real-world ideas", + "text": "Werklike idees", + "type": "global", "note": "" }, { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "My lewensmaat het ongemaklik gevoel omdat hulle voel dat hulle die een moet wees wat die reël neerlê, nie die tiener nie.", - "type": "template", + "SourceText": "Ideas", + "text": "Idees", + "type": "global", "note": "" }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Wanneer ons saam met ons tieners reëls neerlê, help dit die gesin om mekaar beter te verstaan. Die reëls sal meer realisties wees, en ons tieners sal meer bereid en in staat wees om die reëls te volg.", - "type": "template", + "SourceText": "Ideas from other families...", + "text": "Idees van ander gesinne...", + "type": "global", "note": "" }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Toe ons ’n reël probeer neerlê het, het ons begin argumenteer.", - "type": "template", + "SourceText": "Challenges & solutions", + "text": "Uitdagings en oplossings", + "type": "global", "note": "" }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "Was jou tiener in ’n goeie bui toe jy probeer het om die reël te maak? Dit is die beste om reëls te maak wanneer die situasie kalm is. As jy of jou tiener moeg of honger is, is dit beter om op ’n later tydstip oor reëls te praat.", - "type": "template", + "SourceText": "Submit", + "text": "Dien in", + "type": "global", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Ons kon nie by die reël bly nie.", - "type": "template", + "SourceText": "Find out more", + "text": "Vind meer uit", + "type": "global", "note": "" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Die reël moet spesifiek en realisties wees. Maak seker dat jy ’n reël het wat maklik gehou kan word, soos om elke Sondag een maaltyd saam te eet in plaas van elke aand. Moet jy dalk meer buigsaam wees oor die reël?", - "type": "template", + "SourceText": "Show me how", + "text": "Wys my hoe", + "type": "global", "note": "" }, { - "SourceText": "Mother", - "text": "Moeder", + "SourceText": "Tell me more!", + "text": "Vertel my meer!", "type": "global", "note": "" }, { - "SourceText": "Father", - "text": "Vader", + "SourceText": "Let's go!", + "text": "Kom ons gaan!", "type": "global", "note": "" }, { - "SourceText": "TikTok", - "text": "TikTok", + "SourceText": "Check it out!", + "text": "Kyk hierna!", "type": "global", "note": "" }, { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "Om na hierdie video te kyk, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, kyk na die video of laai dit af wanneer jy op wifi is.", + "SourceText": "Done", + "text": "Klaar", "type": "global", "note": "" }, { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "Om hierdie webwerwe te besoek, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, besoek hierdie webwerwe wanneer jy op wifi is.", + "SourceText": "Next", + "text": "Volgende", "type": "global", "note": "" }, { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "Om hierdie boodskap te stuur, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, stuur hierdie boodskap wanneer jy op wifi is.", + "SourceText": "Previous", + "text": "Vorige", "type": "global", "note": "" }, { - "SourceText": "COVID", - "text": "COVID", + "SourceText": "Save", + "text": "Stoor", "type": "global", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Welkom en selfsorg", + "SourceText": "Start", + "text": "Begin", "type": "global", "note": "" }, { - "SourceText": "Self-Care", - "text": "Selfsorg", + "SourceText": "Skip", + "text": "Slaan oor", "type": "global", "note": "" }, { - "SourceText": "How to add self-care", - "text": "Hoe om selfsorg by te voeg", + "SourceText": "Continue", + "text": "Gaan voort", "type": "global", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Een-tot-een-tyd", + "SourceText": "Finish with a song", + "text": "Sluit af met ’n liedjie", "type": "global", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Hoe om een-tot-een-tyd deur te bring", + "SourceText": "Goodbye!", + "text": "Totsiens!", "type": "global", "note": "" }, { - "SourceText": "Praise", - "text": "Prys", + "SourceText": "No gadget use the next day", + "text": "Geen gebruik van toestelle die volgende dag nie", "type": "global", "note": "" }, { - "SourceText": "How to praise", - "text": "Hoe om te prys", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Neem vir 5 minute ’n blaaskans in aparte deel van die kamer", "type": "global", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Positiewe opdragte", + "SourceText": "Write a letter of apology", + "text": "Skryf ’n brief om verskoning te vra", "type": "global", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Hoe om positiewe opdragte te gee", + "SourceText": "Cannot see friends the next day", + "text": "Kan nie die volgende dag vriende sien nie", "type": "global", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Hantering van stres", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "Kan nie na aandete (of vir die volgende uur) met foon speel nie", "type": "global", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Hoe om spanning te hanteer", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Ekstra tyd saam met vriende oor die naweek (1 uur)", "type": "global", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Gesinsbegrotings", + "SourceText": "Cooking teen’s favourite meal", + "text": "Maak die tiener se gunstelingmaaltyd", "type": "global", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Hoe om te begroot en te spaar", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Ekstra tyd met foon na aandete (30 min)", "type": "global", "note": "" }, { - "SourceText": "Rules", - "text": "Reëls", + "SourceText": "Watching teen’s T.V. show together", + "text": "Kyk saam na tiener se TV-program", "type": "global", "note": "" }, { - "SourceText": "How to create rules", - "text": "Hoe om reëls te skep", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Ekstra een-tot-een-tyd Sondag (30 min)", "type": "global", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Kalm gevolge", + "SourceText": "Take a deep breath and pause before responding", + "text": "Haal diep asem en wag voor jy reageer", "type": "global", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Hoe om kalm gevolge te gee", + "SourceText": "Listen to your teen", + "text": "Luister na jou tiener", "type": "global", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Probleemoplossing", + "SourceText": "Praise your teen for sharing", + "text": "Prys jou tiener omdat hulle deel", "type": "global", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Hoe om probleme op te los", + "SourceText": "Use problem solving skills", + "text": "Gebruik probleemoplossingvaardighede", "type": "global", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Tienerveiligheid", + "SourceText": "Work out where you can get help", + "text": "Vind uit waar jy hulp kan kry", "type": "global", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Hoe om jou tiener veilig te hou", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "Om na hierdie video te kyk, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, kyk na die video of laai dit af wanneer jy op wifi is.", "type": "global", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Krisishantering", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "Om hierdie webwerwe te besoek, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, besoek hierdie webwerwe wanneer jy op wifi is.", "type": "global", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Hoe om ’n krisis te hanteer", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "Om hierdie boodskap te stuur, het mens toegang tot die internet nodig. Om die gebruik van data te beperk, stuur hierdie boodskap wanneer jy op wifi is.", "type": "global", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Viering en volgende stappe", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Ernstige siekte of dood van ’n vriend of familielid", "type": "global", "note": "" }, { - "SourceText": "How to support each other", - "text": "Hoe om mekaar te ondersteun", + "SourceText": "Robbery", + "text": "Diefstal", "type": "global", "note": "" }, { - "SourceText": "Home Practice", - "text": "Tuisoefening", + "SourceText": "Flooding", + "text": "Vloed", "type": "global", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Praat oor@global.home_practice", + "SourceText": "Political violence", + "text": "Politieke geweld", "type": "global", - "note": "The string @global.home_practice should not be translated." + "note": "" }, { - "SourceText": "Home Practice Review", - "text": "Gaan tuisoefening na", + "SourceText": "Losing my job", + "text": "Verloor my werk", "type": "global", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "Kom ons gesels oor hoe dit hierdie week met jou tuisoefening gegaan het.", + "SourceText": "Pandemic (COVID-19)", + "text": "Pandemie (COVID-19)", "type": "global", "note": "" }, { - "SourceText": "In my group", - "text": "In my groep", + "SourceText": "ParentApp", + "text": "OuerToep", "type": "global", "note": "" }, { - "SourceText": "By myself", - "text": "Op my eie", + "SourceText": "Weekly Workshops", + "text": "Weeklikse Slypskole", "type": "global", "note": "" }, { - "SourceText": "awesome parent", - "text": "ongelooflike ouer", + "SourceText": "Weekly Workshop", + "text": "Weeklikse Slypskole", "type": "global", "note": "" }, { - "SourceText": "friends", - "text": "vriende", + "SourceText": "Weekly Workshop Options", + "text": "Opsies vir weeklikse Slypskole", + "type": "global", + "note": "" + }, + { + "SourceText": "ParentPoints", + "text": "OuerPunte", + "type": "global", + "note": "" + }, + { + "SourceText": "ParentPoint", + "text": "OuerPunt", + "type": "global", + "note": "" + }, + { + "SourceText": "Parent Library", + "text": "Ouerbiblioteek", + "type": "global", + "note": "" + }, + { + "SourceText": "In-Week Messages", + "text": "In-week-boodskappe", + "type": "global", + "note": "" + }, + { + "SourceText": "To solve this challenge, I will try to:", + "text": "Om hierdie uitdaging te oorkom, sal ek probeer om:", + "type": "global", + "note": "" + }, + { + "SourceText": "Do you want to try one of the following things?", + "text": "Wil jy een van die volgende dinge probeer?", + "type": "global", + "note": "" + }, + { + "SourceText": "My challenge is not listed here.", + "text": "My uitdaging is nie op hierdie lys nie.", "type": "global", "note": "" }, @@ -8886,1851 +8856,2271 @@ "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Om hierdie uitdaging te oorkom, sal ek probeer om:", + "SourceText": "COVID", + "text": "COVID", "type": "global", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Wil jy een van die volgende dinge probeer?", + "SourceText": "Make me smile", + "text": "Laat my glimlag", "type": "global", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "My uitdaging is nie op hierdie lys nie.", + "SourceText": "Get me going", + "text": "Kry my aan die gang", "type": "global", "note": "" }, { - "SourceText": "ParentApp", - "text": "OuerToep", + "SourceText": "My Favourite Relaxes", + "text": "My gunsteling maniere om te ontspan", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshops", - "text": "Weeklikse Slypskole", + "SourceText": "All Relaxes", + "text": "Alle maniere om te ontspan", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop", - "text": "Weeklikse Slypskole", + "SourceText": "Random Relax", + "text": "Lukrake ontspanning", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop Options", - "text": "Opsies vir weeklikse Slypskole", + "SourceText": "This Week's Relax", + "text": "Hierdie week se ontspanning", "type": "global", "note": "" }, { - "SourceText": "ParentPoints", - "text": "OuerPunte", + "SourceText": "Listen & Relax (1-2 minutes)", + "text": "Luister en ontspan (1–2 minute)", "type": "global", "note": "" }, { - "SourceText": "ParentPoint", - "text": "OuerPunt", + "SourceText": "Listen & Relax (3-5 minutes)", + "text": "Luister en ontspan (3–5 minute)", "type": "global", "note": "" }, { - "SourceText": "Parent Library", - "text": "Ouerbiblioteek", + "SourceText": "Do & Relax (5-10 minutes)", + "text": "Doen en ontspan (5–10 minute)", "type": "global", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "In-week-boodskappe", + "SourceText": "At home", + "text": "Tuis", "type": "global", "note": "" }, { - "SourceText": "Real-world ideas", - "text": "Werklike idees", + "SourceText": "Buy things we can sell", + "text": "Koop goed wat ons kan verkoop", "type": "global", "note": "" }, { - "SourceText": "Ideas", - "text": "Idees", + "SourceText": "At a bank", + "text": "By ’n bank", "type": "global", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Idees van ander gesinne...", + "SourceText": "In a savings group", + "text": "In ’n spaargroep", "type": "global", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Uitdagings en oplossings", + "SourceText": "Teens completing school/university", + "text": "Tieners wat klaarmaak op skool/universiteit", "type": "global", "note": "" }, { - "SourceText": "Submit", - "text": "Dien in", + "SourceText": "Building/expanding a house for my family", + "text": "Bou ’n huis vir my gesin of brei dit uit", "type": "global", "note": "" }, { - "SourceText": "Find out more", - "text": "Vind meer uit", + "SourceText": "Starting a business", + "text": "Begin ’n besigheid", "type": "global", "note": "" }, { - "SourceText": "Show me how", - "text": "Wys my hoe", + "SourceText": "Buying a car for my family", + "text": "Koop ’n motor vir my gesin", "type": "global", "note": "" }, { - "SourceText": "Tell me more!", - "text": "Vertel my meer!", + "SourceText": "Walk to the shops", + "text": "Stap winkel toe", "type": "global", "note": "" }, { - "SourceText": "Let's go!", - "text": "Kom ons gaan!", + "SourceText": "Get water together", + "text": "Kry saam water", "type": "global", "note": "" }, { - "SourceText": "Check it out!", - "text": "Kyk hierna!", + "SourceText": "Do a chore together", + "text": "Doen ’n takie saam", "type": "global", "note": "" }, { - "SourceText": "Done", - "text": "Klaar", + "SourceText": "Prepare dinner", + "text": "Berei aandete voor", "type": "global", "note": "" }, { - "SourceText": "Next", - "text": "Volgende", + "SourceText": "Eat breakfast/lunch/dinner", + "text": "Eet ontbyt/middagete/aandete", "type": "global", "note": "" }, { - "SourceText": "Previous", - "text": "Vorige", + "SourceText": "Have tea after school", + "text": "Drink tee na skool", "type": "global", "note": "" }, { - "SourceText": "Save", - "text": "Stoor", + "SourceText": "Watch a T.V. show", + "text": "Kyk na ’n TV-program", "type": "global", "note": "" }, { - "SourceText": "Start", - "text": "Begin", + "SourceText": "Review homework", + "text": "Kyk die huiswerk deur", "type": "global", "note": "" }, { - "SourceText": "Skip", - "text": "Slaan oor", + "SourceText": "Chat before bedtime", + "text": "Gesels voor slaaptyd", "type": "global", "note": "" }, { - "SourceText": "Continue", - "text": "Gaan voort", + "SourceText": "Play a game/sport", + "text": "Speel ’n speletjie/sport", "type": "global", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Sluit af met ’n liedjie", + "SourceText": "Tap and type", + "text": "Tik op en tik in", "type": "global", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Totsiens!", + "SourceText": "Tap and choose", + "text": "Tik op en kies", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_app Code", - "text": "Jou @global.parent_app-kode", + "SourceText": "Type your own", + "text": "Tik jou eie in", "type": "global", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Terms & Conditions", - "text": "Bepalings en Voorwaardes", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Ek het dit verstaan. Moenie weer vir my hierdie boodskap wys nie.", "type": "global", "note": "" }, { - "SourceText": "Privacy Policy", - "text": "Privaatheidsbeleid", + "SourceText": "Home Practice", + "text": "Tuisoefening", "type": "global", "note": "" }, { - "SourceText": "Make me smile", - "text": "Laat my glimlag", + "SourceText": "Talk about @global.home_practice", + "text": "Praat oor@global.home_practice", "type": "global", - "note": "" + "note": "The string @global.home_practice should not be translated." }, { - "SourceText": "Get me going", - "text": "Kry my aan die gang", + "SourceText": "Home Practice Review", + "text": "Gaan tuisoefening na", "type": "global", "note": "" }, { - "SourceText": "My Favourite Relaxes", - "text": "My gunsteling maniere om te ontspan", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "Kom ons gesels oor hoe dit hierdie week met jou tuisoefening gegaan het.", "type": "global", "note": "" }, { - "SourceText": "All Relaxes", - "text": "Alle maniere om te ontspan", + "SourceText": "In my group", + "text": "In my groep", "type": "global", "note": "" }, { - "SourceText": "Random Relax", - "text": "Lukrake ontspanning", + "SourceText": "By myself", + "text": "Op my eie", "type": "global", "note": "" }, { - "SourceText": "This Week's Relax", - "text": "Hierdie week se ontspanning", + "SourceText": "awesome parent", + "text": "ongelooflike ouer", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (1-2 minutes)", - "text": "Luister en ontspan (1–2 minute)", + "SourceText": "friends", + "text": "vriende", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (3-5 minutes)", - "text": "Luister en ontspan (3–5 minute)", - "type": "global", - "note": "" + "SourceText": "Welcome to @global.parent_app", + "text": "Welkom by @global.parent_app", + "type": "tour", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Do & Relax (5-10 minutes)", - "text": "Doen en ontspan (5–10 minute)", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Jy verdien dit om goed te voel en gelukkiger gesinsverhoudinge te hê.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is hier om jou te ondersteun.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hier volg hoe om die toep te gebruik:

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string

                                                                                                                                                                                  @global.parent_app should not be translated." }, { - "SourceText": "My Favourite Activities", - "text": "My gunsteling aktiwiteite", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Hierdie groot knoppie neem jou na jou @global.weekly_workshops.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops. should not be translated." }, { - "SourceText": "All Activities", - "text": "Alle aktiwiteite", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Elke week sal jy 'n nuwe werkswinkel ontsluit wat op 'n verskillende ouerskapsvaardigheid fokus.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Random Activity", - "text": "Lukrake aktiwiteite", - "type": "global", + "SourceText": "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Die ronde knoppie verskyn wanneer 'n nuwe werkswinkel gereed is vir jou.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Hierdie week se aktiwiteit", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Elke nuwe ouerskapsvaardigheid kom met 'n @global.parent_point.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_point.

                                                                                                                                                                                  should not be translated." }, { - "SourceText": "Chat Together", - "text": "Gesels saam", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Gebruik @global.parent_points om jou prestasies te vier!

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Do Together", - "text": "Doen saam", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Verken die ekstra ontspannings- en ouerskapaktiwiteite!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jy kan ook vinnige ouerskapwenke en tegniese ondersteuning kry.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Tap and type", - "text": "Tik op en tik in", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Snuffel 'n bietjie rond! Waar jy ook al begin, net die feit dat jy hier is, wys jy gee om.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Tik op en kies", - "type": "global", - "note": "" + "SourceText": "Go to the @global.weekly_workshops", + "text": "Gaan na die @global.weekly_workshops", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Type your own", - "text": "Tik jou eie in", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Druk hierdie knoppie op die tuisskerm om na die @global.weekly_workshops te gaan

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Ek het dit verstaan. Moenie weer vir my hierdie boodskap wys nie.", - "type": "global", - "note": "" + "SourceText": "Go to the @global.weekly_workshop_options", + "text": "Gaan na die @global.weekly_workshop_options", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Walk to the shops", - "text": "Stap winkel toe", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Druk hierdie knoppie om na die @global.weekly_workshop_options te gaan

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Get water together", - "text": "Kry saam water", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Gebruik die @global.weekly_workshop_options om jou slypskool-instellings te verander.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Do a chore together", - "text": "Doen ’n takie saam", - "type": "global", + "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Jy kan jou naam hier verander.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Prepare dinner", - "text": "Berei aandete voor", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Dit wys die dag van die week waarop jou nuwe @global.weekly_workshop beskikbaar raak.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Indien jy dit wil verander, druk dit net.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Eat breakfast/lunch/dinner", - "text": "Eet ontbyt/middagete/aandete", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Dit wys die @global.weekly_workshop waarop jy tans is.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Have tea after school", - "text": "Drink tee na skool", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Jy kan hier verander of jy jou @global.weekly_workshops as ’n groep of op jou eie wil doen.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Watch a T.V. show", - "text": "Kyk na ’n TV-program", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tik hier om jou groep se naam te verander.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Review homework", - "text": "Kyk die huiswerk deur", - "type": "global", + "SourceText": "Reflect on the positive", + "text": "Dink na oor die positiewe", + "type": "data_list", "note": "" }, { - "SourceText": "Chat before bedtime", - "text": "Gesels voor slaaptyd", - "type": "global", + "SourceText": "Check-in chat", + "text": "Aanmeldgesprek", + "type": "data_list", "note": "" }, { - "SourceText": "Play a game/sport", - "text": "Speel ’n speletjie/sport", - "type": "global", + "SourceText": "Dream Travel", + "text": "Droomreis", + "type": "data_list", "note": "" }, { - "SourceText": "Teens completing school/university", - "text": "Tieners wat klaarmaak op skool/universiteit", - "type": "global", + "SourceText": "Famous Party", + "text": "Beroemde persoon", + "type": "data_list", "note": "" }, { - "SourceText": "Building/expanding a house for my family", - "text": "Bou ’n huis vir my gesin of brei dit uit", - "type": "global", + "SourceText": "Two truths, one lie", + "text": "Twee waarhede, een onwaarheid", + "type": "data_list", "note": "" }, { - "SourceText": "Starting a business", - "text": "Begin ’n besigheid", - "type": "global", + "SourceText": "Time Machine", + "text": "Tydmasjien", + "type": "data_list", "note": "" }, { - "SourceText": "Buying a car for my family", - "text": "Koop ’n motor vir my gesin", - "type": "global", + "SourceText": "Superpowers", + "text": "Superkragte", + "type": "data_list", "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Ernstige siekte of dood van ’n vriend of familielid", - "type": "global", + "SourceText": "Just a friendly chat", + "text": "Net ’n vriendelike geselsie", + "type": "data_list", "note": "" }, { - "SourceText": "Robbery", - "text": "Diefstal", - "type": "global", + "SourceText": "The Interrupter", + "text": "Die onderbreker", + "type": "data_list", "note": "" }, { - "SourceText": "Flooding", - "text": "Vloed", - "type": "global", + "SourceText": "Three options", + "text": "Drie opsies", + "type": "data_list", "note": "" }, { - "SourceText": "Political violence", - "text": "Politieke geweld", - "type": "global", + "SourceText": "Yes, No or Maybe", + "text": "Ja, nee of miskien", + "type": "data_list", "note": "" }, { - "SourceText": "Losing my job", - "text": "Verloor my werk", - "type": "global", + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Geheuespeletjie – “Op Saterdag...”", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Make up a story", + "text": "Dink ’n storie uit", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Co-chef", + "text": "Medekok", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Dance moves", + "text": "Dansbewegings", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Mirror", + "text": "Spieël", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What's new?", + "text": "Wat is nuut?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Get active!", + "text": "Raak aktief!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Name that tune", + "text": "Liedjieraai", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Pass the snap", + "text": "Vingerklap", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Family workout", + "text": "Gesinoefensessie", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Make housework fun", + "text": "Maak huistake pret", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Huistake is nie pret nie... of is dit? Jy kan 'n speletjie daarvan maak!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What are you doing?", + "text": "Wat doen jy?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Here is a fun game you can do with your family!", + "text": "Hier is 'n prettige speletjie wat jy saam met jou gesin kan doen!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Crazy chicken", + "text": "Mal hoender", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Help yourself cope", + "text": "Help jouself met hanteringstrategieë", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Help your teen cope", + "text": "Help jou tiener met lhanteringstrategieë", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Practical steps", + "text": "Praktiese stappe", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How to talk to my teen", + "text": "Hoe om met my tiener te praat", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Steps to deal with news", + "text": "Stappe om nuus te verwerk", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How can I help my teen choose well?", + "text": "Hoe kan ek my tiener help met goeie keuses?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What influences teen decisions?", + "text": "Wat beïnvloed tiener besluite?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How does my teen feel?", + "text": "Hoe voel my tiener?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Changing negative to positive", + "text": "Verander negatief na positief", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Relax", + "text": "Ontspan", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Relax** @global.parent_point", + "text": "**Ontspan** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Doing a relaxation activity", + "text": "Doen 'n ontspanningsaktiwiteit", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy ’n ontspanningsaktiwiteit doen, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Treat yourself well", + "text": "Behandel jouself goed", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "**Behandel jouself goed** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Doing something they like for themselves", + "text": "Doen iets vir hulself waarvan hulle hou", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy jouself goed behandel, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "**Praise yourself** @global.parent_point", + "text": "**Prys jouself** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising themselves", + "text": "Hulself prys", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy jouself prys, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "One-on-one time", + "text": "Een-tot-een-tyd", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**One-on-one time** @global.parent_point", + "text": "**Een-tot-een-tyd** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Spending time with their teen", + "text": "Tyd spandeer met hulle tiener", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy een-tot-een tyd spandeer, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praise your teen", + "text": "Prys jou tiener", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Praise your teen** @global.parent_point", + "text": "**Prys jou tiener** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising their teen when they did positive thing", + "text": "Hul tiener prys wanneer hulle positiewe dinge gedoen het", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy jou tiener prys, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Get positive", + "text": "Wees positief", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Get positive** @global.parent_point", + "text": "**Wees positief** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a positive instruction", + "text": "Hul tiener 'n positiewe instruksie gee", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy 'n positiewe instruksie gee, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Breathe not yell", + "text": "Haal asem, moenie skreeu nie", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Breathe not yell** @global.parent_point", + "text": "**Haal asem, moenie skreeu nie** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Taking a pause before responding", + "text": "'n Blaaskans vat voor jy reageer", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy 'n blaaskans vat voor jy reageer, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Good money choice", + "text": "Goeie geldkeuse", + "type": "data_list", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Pandemie (COVID-19)", - "type": "global", + "SourceText": "**Good money choice** @global.parent_point", + "text": "**Goeie geldkeuse** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Keeping the budget", + "text": "Hou die begroting", + "type": "data_list", "note": "" }, { - "SourceText": "At home", - "text": "Tuis", - "type": "global", + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy 'n goeie keuse maak oor behoeftes, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Calm consequence", + "text": "Kalm gevolg", + "type": "data_list", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Koop goed wat ons kan verkoop", - "type": "global", + "SourceText": "**Calm consequence** @global.parent_point", + "text": "**Kalm gevolg** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a consequence in a calm way", + "text": "Hul tiener op 'n kalm manier 'n gevolg gee", + "type": "data_list", "note": "" }, { - "SourceText": "At a bank", - "text": "By ’n bank", - "type": "global", + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy op 'n kalm manier 'n gevolg gee, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Safe", + "text": "Veilig", + "type": "data_list", "note": "" }, { - "SourceText": "In a savings group", - "text": "In ’n spaargroep", - "type": "global", + "SourceText": "**Safe** @global.parent_point", + "text": "**Veilig** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Planning or keeping a family safety plan", + "text": "'n Gesinsveiligheidsplan maak of hou", + "type": "data_list", "note": "" }, { - "SourceText": "No gadget use the next day", - "text": "Geen gebruik van toestelle die volgende dag nie", - "type": "global", + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Elke keer wanneer jy iets doen om jou tiener veilig te hou, klik op die @global.parent_point en vier jou sukses!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Did it? Tap it!", + "text": "Gedoen? Klik dit!", + "type": "data_list", "note": "" }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Neem vir 5 minute ’n blaaskans in aparte deel van die kamer", - "type": "global", + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Dis wonderlik! Mooi so dat julle tyd saam deurgebring het. Dit lê die grondslag vir ’n wonderlike verhouding met jou tiener!", + "type": "data_list", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Skryf ’n brief om verskoning te vra", - "type": "global", + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Mooi so! Een-tot-een-tyd wys julle tieners hulle is vir julle belangrik. Dit maak regtig ’n verskil!", + "type": "data_list", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "Kan nie die volgende dag vriende sien nie", - "type": "global", + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Wonderlik! Om tyd saam met jou tiener deur te bring, kan jou tiener meer gewillig maak om meer dikwels te help. Jy doen uitstekend!", + "type": "data_list", "note": "" }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "Kan nie na aandete (of vir die volgende uur) met foon speel nie", - "type": "global", + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "Welgedaan! Een-tot-een-tyd met jul tieners gee julle kans om meer van hulle belangstellings en vermoëns uit te vind. Jy is ’n ster!", + "type": "data_list", "note": "" }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Ekstra tyd saam met vriende oor die naweek (1 uur)", - "type": "global", + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Uitstekende werk! Tyd wat julle saam deurbring, help om ’n sterk en positiewe verhouding tussen jou en jou tiener te vestig.", + "type": "data_list", "note": "" }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Maak die tiener se gunstelingmaaltyd", - "type": "global", + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Soms sal dit maklik en prettig wees om tyd met jul tieners te bestee, en soms sal dit meer van ’n uitdaging wees. Tyd wat julle saam deurbring, sal julle verhouding baie verbeter; welgedaan dat jy probeer het!", + "type": "data_list", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Ekstra tyd met foon na aandete (30 min)", - "type": "global", + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Jammer om te hoor dit was vir jou moeilik om tyd met jou tiener te bestee. Ons kom almal soms voor uitdagings te staan. Wees net geduldig met jouself en met jou tiener – dinge sal verbeter. Welgedaan dat jy probeer het!", + "type": "data_list", "note": "" }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Kyk saam na tiener se TV-program", - "type": "global", + "SourceText": "Great to hear it went well; you are a star!", + "text": "Wonderlik om te hoor dit het goed gegaan, jy is ’n ster!", + "type": "data_list", "note": "" }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Ekstra een-tot-een-tyd Sondag (30 min)", - "type": "global", + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Wonderlik! Jy verdien al die gelukkige tye!", + "type": "data_list", "note": "" }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Haal diep asem en wag voor jy reageer", - "type": "global", + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Jammer dat dit vir jou moeilik was. Jy is ’n ster omdat jy probeer het!", + "type": "data_list", "note": "" }, { - "SourceText": "Listen to your teen", - "text": "Luister na jou tiener", - "type": "global", + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Ongelooflik om te hoor dit het jou goed laat voel! Hou aan met die goeie werk. Jou tiener leer baie van jou!", + "type": "data_list", "note": "" }, { - "SourceText": "Praise your teen for sharing", - "text": "Prys jou tiener omdat hulle deel", - "type": "global", + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Dit kan aanvanklik baie moeilik wees om te praat oor hoe ons voel, maar jy en jou tiener sal daaraan gewoond raak. Hou aan probeer en jy sal die positiewe resultate sien!", + "type": "data_list", "note": "" }, { - "SourceText": "Use problem solving skills", - "text": "Gebruik probleemoplossingvaardighede", - "type": "global", + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Wonderlik om te hoor dit het goed gegaan. Wanneer julle saam oor julle finansies praat, maak dit julle gesin regtig sterker!", + "type": "data_list", "note": "" }, { - "SourceText": "Work out where you can get help", - "text": "Vind uit waar jy hulp kan kry", - "type": "global", + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Jammer om te hoor dit was vir jou moeilik. Welgedaan dat jy probeer het!", + "type": "data_list", "note": "" }, { - "SourceText": "Welcome to @global.parent_app", - "text": "Welkom by @global.parent_app", - "type": "tour", - "note": "The string @global.parent_app should not be translated." + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Wonderlik om te hoor dit het goed gegaan! Konsekwente reëls help ons tieners om beskerm te voel en hulle veilig te hou!", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Welkom by @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jy verdien om goed te voel en om gelukkiger gesinsverhoudings te hê.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app sal jou en jou gesin op drie maniere ondersteun:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Jammer dat dit moeilik was. Om saam reëls te skep, vereis oefening, maar dit is die moeite werd!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well!", + "text": "Wonderlik om te hoor dit het goed gegaan!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Jammer dat dit moeilik was. Om saam gevolge vas te stel, sal jou tiener meer geneë maak om meer dikwels die reëls na te kom!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Jammer dat dit moeilik was. Soms moet ons net aanhou probeer. Kry ’n tyd wanneer jy en jou tiener kalm is en probeer weer om oor die probleem te praat terwyl julle die vier stappe van probleemoplossing toepas. Saam kan julle baie regkry!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Wonderlik om te hoor dit het goed gegaan! Gesprekke oor risiko’s en ondersteuningsopsies voorkom probleme en help regtig om jou tiener veilig te hou.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Jammer dat dit moeilik was. Dit kan uitdagend en emosioneel wees om ’n kaart van risiko’s en plekke om ondersteuning te kry, te maak. Dit help regtig om jou tiener veilig te hou!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Jammer dat dit nie so goed gegaan het nie. Dis nie maklik nie. Probeer om dit weer rustig met jou tiener te bespreek. Maar ook, is daar iemand wat jou tiener vertrou, wat saam met jou met jou tiener kan gesels?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Wonderlik om te hoor dit het goed gegaan! Wanneer gevolge reg vasgestel is, help dit tieners om hul beter te gedra en maak dit die gesinslewe rustiger.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Wonderlik om te hoor dit het goed gegaan! Wanneer jou tiener leer hoe om probleme op te los, kan hulle daardie vaardigheid dwarsdeur hulle lewens gebruik. ’n Groot geskenk!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "My Tips", + "text": "My wenke", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**My Tips** in the @global.parent_centre", + "text": "**My wenke** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Essential Tools", + "text": "Noodsaaklike hulpmiddels", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Essential Tools** in the @global.parent_centre", + "text": "**Noodsaaklike hulpmiddels** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Customise @global.parent_app", + "text": "Pas @global.parent_app aan", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Hierdie groot knoppie neem jou na jou @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  ’n Slypskool sal een keer per week vir jou gereed wees – elke keer met die fokus op ’n verskillende ouervaardigheid. Druk dit om jou eerste slypskool te begin!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", + "text": "**Pas @global.parent_app aan** in die @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" }, { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Die ronde knoppie verskyn wanneer ’n nuwe @global.weekly_workshop vir jou gereed is om te doen.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Customise Again", + "text": "Pas weer aan", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Druk hierdie groot knoppie na om jou@global.parent_points-skerm te gaan.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hou rekord van jou sukses in selfsorg en ouerskap.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kyk na jou vordering.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Vier wat jy daagliks regkry!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." + "SourceText": "**Customise Again** in the @global.parent_centre", + "text": "**Pas weer aan** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Hoe jy ook al begin, die blote feit dat jy hier is, wys jy gee om.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Relax & Activities", + "text": "Ontspan en aktiwiteite", + "type": "data_list", "note": "" }, { - "SourceText": "Go to the @global.weekly_workshops", - "text": "Gaan na die @global.weekly_workshops", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "under **Relax & Activities** in the @global.parent_centre", + "text": "onder **Ontspan & aktiwiteite** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Druk hierdie knoppie op die tuisskerm om na die @global.weekly_workshops te gaan

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Help", + "text": "Hulp", + "type": "data_list", + "note": "" }, { - "SourceText": "Go to the @global.weekly_workshop_options", - "text": "Gaan na die @global.weekly_workshop_options", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "**Help** in the @global.parent_centre", + "text": "**Hulp** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Druk hierdie knoppie om na die @global.weekly_workshop_options te gaan

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Technical Support", + "text": "Tegniese steun", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Gebruik die @global.weekly_workshop_options om jou slypskool-instellings te verander.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "**Technical Support** in the @global.parent_centre", + "text": "**Tegniese ondersteuning** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Jy kan jou naam hier verander.

                                                                                                                                                                                  ", - "type": "tour", - "note": "" + "SourceText": "Coping with @global.covid", + "text": "Hantering van @global.covid", + "type": "data_list", + "note": "The string @global.covid should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Dit wys die dag van die week waarop jou nuwe @global.weekly_workshop beskikbaar raak.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Indien jy dit wil verander, druk dit net.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "**Coping with @global.covid** in the @global.parent_centre", + "text": "**Hantering van @global.covid** in die @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" }, { - "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Dit wys die @global.weekly_workshop waarop jy tans is.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Coping with grief", + "text": "Hantering van hartseer", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Jy kan hier verander of jy jou @global.weekly_workshops as ’n groep of op jou eie wil doen.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "**Coping with grief** in the @global.parent_centre", + "text": "**Hantering van hartseer** in die @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tik hier om jou groep se naam te verander.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Message Archive", + "text": "Boodskapargief", + "type": "data_list", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Het jy al tyd saam met jou tiener deurgebring?", + "SourceText": "**Message Archive** in the @global.parent_centre", + "text": "**Boodskapargief** in die @global.parent_centre", "type": "data_list", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", + "SourceText": "Support Contacts", + "text": "Ondersteuningskontakte", "type": "data_list", "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", + "SourceText": "**Support Contacts** in the @global.parent_centre", + "text": "**Ondersteuning kontakte** in die @global.parent_centre", "type": "data_list", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Welkom by OuerToep. Klik hier om jou reis te begin!", + "SourceText": "Evidence Base", + "text": "Bewysbasis", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Hoop jy voel oukei. Ouerskap is moeilik, maar dit is nooit te laat om weer met jou tiener te begin nie. Jou eerste ouerskapwerksessie is gereed! Klik hier om jou OuerToep-reis te begin!", + "SourceText": "**Evidence Base** in the @global.parent_centre", + "text": "**Bewysbasis** in die @global.parent_centre", "type": "data_list", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om jou spanning as ouer te hanteer.", + "SourceText": "Quick pause", + "text": "Vinnige verposing", "type": "data_list", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Hallo, weereens! Dit is nooit te laat om OuerToep te gebruik en aangepaste ouerskapondersteuning te kry nie. Hoekom probeer jy dit nie terwyl jy werk toe pendel, of terwyl jy kos kook nie? Miljoene ouers het ons materiaal nuttig gevind.", + "SourceText": "Power of three", + "text": "Mag van drie", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om jou tiener se gedrag te hanteer.", + "SourceText": "One thing today", + "text": "Een ding vandag", "type": "data_list", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Hallo! Is alles oukei? Dit lyk asof jy OuerToep nie onlangs oopgemaak het nie. Hoekom probeer jy nie? Miljoene ouers het hierdie materiaal nuttig gevind. Ons is steeds hier om jou te ondersteun.", + "SourceText": "Breathe to three", + "text": "Haal asem – tel tot drie", "type": "data_list", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "OuerToep mis jou! Daar is baie om te ondersoek. Ons is steeds hier om jou te ondersteun.", + "SourceText": "In and out", + "text": "In en uit", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou tiener voor te berei vir sukses.", + "SourceText": "Think about today", + "text": "Dink aan vandag", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik OuerToep om jou te help om weer ’n band met jou tiener te vorm!", + "SourceText": "Pause to respond", + "text": "Neem ’n blaaskans voor jy antwoord", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Hallo ongelooflike ouer! Onthou om ook vir jouself te sorg - dit sal jou EN jou gesin help! Kry jou wenke en meer in @global.parent_app.", + "SourceText": "Small things", + "text": "Klein goedjies", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Hallo ongelooflike ouer! Onthou, jy kan baie nuttige wenke in @global.parent_app vind.", + "SourceText": "Body scan", + "text": "Liggaamskandering", "type": "data_list", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Nuwe boodskap van PLH", + "SourceText": "Feel the ground", + "text": "Voel die grond", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Hallo ongelooflike ouer! @global.parent_app is hier om jou te ondersteun. Kom kyk nou!", + "SourceText": "Counting sounds", + "text": "Tel geluide", "type": "data_list", "note": "" }, { - "SourceText": "Start", - "text": "Begin", + "SourceText": "Feel your feeling", + "text": "Voel jou gevoelens", "type": "data_list", "note": "" }, { - "SourceText": "Continue", - "text": "Gaan voort", + "SourceText": "Your song", + "text": "Jou lied", "type": "data_list", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Welkom en selfsorg", + "SourceText": "Ground & gratitude", + "text": "Grond en dankbaarheid", "type": "data_list", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "**Welkom en selfsorg**-slypskool", + "SourceText": "Notice how you feel", + "text": "Let op hoe jy voel", "type": "data_list", "note": "" }, { - "SourceText": "Self-Care", - "text": "Selfsorg", + "SourceText": "Pause power", + "text": "Blaaskans se krag", "type": "data_list", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Hoe om selfsorg te doen", + "SourceText": "Praise yourself", + "text": "Prys jouself", "type": "data_list", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Een-tot-een-tyd", + "SourceText": "Taking care of yourself", + "text": "Sorg vir jouself", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "**Een-tot-een-tyd**-slypskool", + "SourceText": "Take a pause", + "text": "Neem ’n blaaskans", "type": "data_list", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Hoe om een-tot-een-tyd deur te bring", + "SourceText": "Physical activity", + "text": "Fisiese aktiwiteit", "type": "data_list", "note": "" }, { - "SourceText": "Praise", - "text": "Prys", + "SourceText": "List of things", + "text": "Lys van goed", "type": "data_list", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "**Prys**-slypskool", + "SourceText": "Connect", + "text": "Verbind", "type": "data_list", "note": "" }, { - "SourceText": "How to praise", - "text": "Hoe om te prys", + "SourceText": "Prevent anger", + "text": "Voorkom woede", "type": "data_list", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Positiewe opdragte", + "SourceText": "Angry? Take a break", + "text": "Kwaad? Neem ’n blaaskans", "type": "data_list", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "**Positiewe opdragte**-slypskool", + "SourceText": "It is hard to find time to have fun with your teenager.", + "text": "Dis moeilik om tyd te kry om prettige dinge saam met jou tiener te doen.", "type": "data_list", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Hoe om positiewe opdragte te gee", + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Dis moeilik om in ons besige lewens op die positiewe te fokus.", "type": "data_list", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Hantering van spanning", + "SourceText": "How many days in the past week have you praised your teen?", + "text": "Hoeveel dae die afgelope week het jy jou tiener geprys?", "type": "data_list", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "**Streshantering**-slypskool", + "SourceText": "This is a very stressful time for families.", + "text": "Dit is ’n baie stresvolle tyd vir gesinne.", "type": "data_list", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Hoe om spanning te hanteer", + "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", + "text": "Hoeveel dae die afgelope week het jy as ouer/versorger stres ervaar?", "type": "data_list", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Gesinsbegrotings", + "SourceText": "Sometimes our children make us really upset.", + "text": "Soms ontstel ons kinders ons baie.", "type": "data_list", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "**Gesinsbegrotings**-slypskool", + "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", + "text": "Hoeveel dae die afgelope week het jy op jou tiener geskree of gegil?", "type": "data_list", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Hoe om te begroot en te spaar", + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Hoeveel keer die afgelope maand (30 dae) het jou kosgeld opgeraak?", "type": "data_list", "note": "" }, { - "SourceText": "Rules", - "text": "Reëls", + "SourceText": "It is so stressful when children misbehave.", + "text": "Dis so stresvol as kinders stout of ongehoorsaam is.", "type": "data_list", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "**Reëls**-slypskool", + "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", + "text": "Hoeveel dae die afgelope week het jy jou kinders fisies gedissiplineer deur hulle te klap, pak te gee of te slaan met jou hand of ’n voorwerp soos ’n stok of ’n belt?", "type": "data_list", "note": "" }, { - "SourceText": "How to create rules", - "text": "Hoe om reëls te skep", + "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", + "text": "Dit is moeilik om toesig oor jou tieners te hou wanneer hulle onafhanklik raak.", "type": "data_list", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Kalm gevolge", + "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", + "text": "Hoeveel dae die afgelope week het jy geweet wat jou tiener doen en by wie hulle was?", "type": "data_list", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "**Kalm gevolge**-slypskole", + "SourceText": "Days in the past week", + "text": "Dae gedurende die afgelope week", "type": "data_list", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Hoe om kalm gevolge te gee", + "SourceText": "We all want to keep our children safe.", + "text": "Ons almal wil ons kinders veilig hou.", "type": "data_list", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Probleemoplossing", + "SourceText": "Days in the past month", + "text": "Dae gedurende die afgelope maand", "type": "data_list", "note": "" }, { - "SourceText": "**Problem Solving** workshop", - "text": "**Probleemoplossing**-slypskole", + "SourceText": "Welcome and Self-Care", + "text": "Welkom en selfsorg", "type": "data_list", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Hoe om probleme op te los", + "SourceText": "**Welcome and Self-Care** workshop", + "text": "**Welkom en selfsorg**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Tienerveiligheid", + "SourceText": "Self-Care", + "text": "Selfsorg", "type": "data_list", "note": "" }, { - "SourceText": "**Teen Safety** workshop", - "text": "**Tienerveiligheid**-slypskole", + "SourceText": "How to do self-care", + "text": "Hoe om selfsorg te doen", "type": "data_list", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Hoe om jou tiener veilig te hou", + "SourceText": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "text": "As ouer was dit vir my bykans onmoontlik om tyd vir myself te kry. Ek was altyd besig om na almal rondom my om te sien. Deur @global.parent_app het ek besef hoe belangrik dit is om na myself om te sien. Dit help my EN my gesin! \n\n'n Oomblik net vir myself help my om asem te haal en kennis te neem van hoe ek voel. Selfs 5 minute om 'n koppie tee te drink, maak 'n groot verskil. Nou kan ek my stres beter hanteer.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Dealing with Crisis", - "text": "Krisishantering", + "SourceText": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.", + "text": "My pa was altyd besig. Hy sou by die huis kom en ons afjak wanneer ons hom begin uitvra. \n\n@global.parent_app het ons baie gehelp. Ons baklei nie meer nie. Nou, wanneer my pa by die huis kom, sit hy eers vir 5 minute alleen, en dan doen ons saam 'n ontspanningsaktiwiteit van @global.parent_app, sodat ons almal diep kan asemhaal en ontspan. Dan kan ons oor ons dag praat, oor enigiets, goed of sleg, wat gebeur het. Almal is nou soveel gelukkiger.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "**Krisishantering**-slypskool", + "SourceText": "One-on-One Time", + "text": "Een-tot-een-tyd", "type": "data_list", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Hoe om ’n krisis te hanteer", + "SourceText": "**One-on-One Time** workshop", + "text": "**Een-tot-een-tyd**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Viering en volgende stappe", + "SourceText": "How to spend one-on-one time", + "text": "Hoe om een-tot-een-tyd deur te bring", "type": "data_list", "note": "" }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "**Viering en volgende stappe**-slypskool", + "SourceText": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "text": "Toe ek die eerste keer hoor ek moet Een-tot-Een-tyd met my tiener spandeer, was dit vir my moeilik. Ek het nie geweet wanneer om dit te doen of wat om te sê nie. Ek wou nie my tiener bederf sodat hy dink ons moet alles saam doen nie. \n\nMaar ek wou regtig my verhouding met my tiener versterk, en ek wou hê dat hy oopmaak oor wat hom pla. Daarom het ons Een-tot-Een-tyd probeer. \n\nAanvanklik het dit vreemd gevoel, maar dit was later eintlik groot pret! Nou kyk ons saam na sy TV-program en gesels daaroor. En ons kan selfs praat oor hoe my seun verander in adolessensie, en selfs oor meisies en sulke goed!", "type": "data_list", "note": "" }, { - "SourceText": "How to support each other", - "text": "Hoe om mekaar te ondersteun", + "SourceText": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.", + "text": "Toe my ma vra om tyd saam met my te spandeer, het ek gedink, “Miskien is iets verkeerd, miskien is sy siek”. Maar sy het gesê, “Nee, ek wil net tyd saam met jou deurbring”. Ek was skepties, maar ek het dit aanvaar. \n\nSy het gevra waarvan ek hou om te doen. Dit was vreemd en ek was nie gemaklik nie, want sy het nog nooit tyd alleen saam met my spandeer nie. \n\nHoe meer sy aanhou probeer het en ons hierdie tyd saam deurgebring het, hoe lekkerder het dit geword. Sy het begin om haar eie kinderdae met my te deel, goed wat ek nooit vantevore gehoor het nie. Dit het my gehelp om ook te deel wat in my lewe aangaan. Ons gesels selfs oor kêrels en oor probleme wat ek het. Ek weet nou ek kan met my ma praat.", "type": "data_list", "note": "" }, { - "SourceText": "Quick pause", - "text": "Vinnige verposing", + "SourceText": "Praise", + "text": "Prys", "type": "data_list", "note": "" }, { - "SourceText": "Power of three", - "text": "Mag van drie", + "SourceText": "**Praise** workshop", + "text": "**Prys**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "One thing today", - "text": "Een ding vandag", + "SourceText": "How to praise", + "text": "Hoe om te prys", "type": "data_list", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Haal asem – tel tot drie", + "SourceText": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "text": "Toe ek gehoor het van hierdie aanprys ding, het ek gedink, “As tieners is ons nooit geprys vir dinge nie, so hoekom moet ons nou begin?”. Maar ek het begin belangstel toe ek hoor wat die voordele van aanprysing kan wees. \n\nDirek na die weeklikse werkswinkel, het ek opgelet dat my tiener doen wat sy elke dag doen: Skottelgoed was. En ek sê, “Dankie dat jy die skottelgoed was, my meisiekind, dit maak my regtig gelukkig dat jy so mooi help.” My tiener het geglimlag en het my selfs 'n drukkie kom gee, iets wat sy nooit doen nie. \n\nHierdie aanprysing besigheid is moeilik. Ek vergeet nog steeds soms, of prys en kritiseer in dieselfde asem. Maar aanprysing maak regtig 'n verskil. Ek het nooit gedink dat eenvoudige woorde van lof soveel verskil aan 'n mens kan maak nie!", "type": "data_list", "note": "" }, { - "SourceText": "In and out", - "text": "In en uit", + "SourceText": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.", + "text": "Ek was bly toe my ma van aanprysing geleer het. \n\nMy ma het altyd opgelet wanneer ek iets verkeerd gedoen het. Sy sou op my skree en my slaan. \n\nMaar toe my ma die werkswinkel gedoen het, het sy my begin prys vir klein goedjies. Eers het ek gedink, “Wat gaan aan?”, maar toe hou dit aan. Ek het daarvan gehou, so toe doen ek meer goeie dinge waarvan ek gedink het sy sou hou. \n\nDit voel wonderlik dat my ma die goeie dinge sien wat ek doen, en nie net die slegte goed nie.\n\nEk het dit selfs eenkeer vir haar gesê. Gedurende @data.workshop.w_1on1.title, het ek gesê, “Dankie, Ma, dat Ma mooi goed sê wanneer ek iets goeds doen, nie net wanneer ek iets verkeerd doen nie”. Dit het ons albei baie gelukkig gemaak.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.title, should not be translated." }, { - "SourceText": "Think about today", - "text": "Dink aan vandag", + "SourceText": "Positive Instructions", + "text": "Positiewe opdragte", "type": "data_list", "note": "" }, { - "SourceText": "Pause to respond", - "text": "Neem ’n blaaskans voor jy antwoord", + "SourceText": "**Positive Instructions** workshop", + "text": "**Positiewe opdragte**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Small things", - "text": "Klein goedjies", + "SourceText": "How to give positive instructions", + "text": "Hoe om positiewe opdragte te gee", "type": "data_list", "note": "" }, { - "SourceText": "Body scan", - "text": "Liggaamskandering", + "SourceText": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "text": "Voorheen het ek my tieners grootgemaak soos wat ek grootgemaak is: Ek sou vir hulle sê, “Moenie dit doen nie, moenie dat doen nie”. Ons het baie baklei, maar dinge het regtig verander toe ek geleer het om positiewe instruksies te gee.\n\nNou fokus ek op die gedrag wat ek wil sien, en ek gee duidelike en eenvoudige instruksies aan my tieners. Dit het tyd geneem om te leer om te sê, “Doen dit asseblief” in plaas van “Moenie dit doen nie”.\n\nMy tieners, en selfs my man, sê hulle hou van hierdie manier van dinge doen. My tiener het eendag gesê, “Ek hou regtig van hierdie nuwe ma,” en my eie stresvlakke het sommer baie gedaal.", "type": "data_list", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Voel die grond", + "SourceText": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.", + "text": "Aanvanklik, het ek nie veel omgegee dat my ma @global.parent_app doen nie. Maar toe begin ek sien dat die manier waarop my ma met ons kommunikeer, begin verander.\n\nOp 'n dag het ek saam met my vriende uitgegaan, en sy het gesê ek moet teen 6 nm. terug wees. Ek het gedink, “O, oukei,” want sy het normaalweg nie duidelike instruksies gegee oor wat sy wou hê nie - sy sou net niks sê nie en dan op my skree omdat ek laat is wanneer ek tuis kom. \n\nToe ek so 5 nm. by die huis kom, het my ma my 'n drukkie gegee en gesê, “Dankie dat jy betyds is”. Dit was vreemd, maar ek het daarvan gehou. \n\nVan toe af het ons baie duideliker kommunikasie in die huis.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Counting sounds", - "text": "Tel geluide", + "SourceText": "Managing Stress", + "text": "Hantering van spanning", "type": "data_list", "note": "" }, { - "SourceText": "Feel your feeling", - "text": "Voel jou gevoelens", + "SourceText": "**Managing Stress** workshop", + "text": "**Streshantering**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Your song", - "text": "Jou lied", + "SourceText": "How to manage stress", + "text": "Hoe om spanning te hanteer", "type": "data_list", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Grond en dankbaarheid", + "SourceText": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "text": "Die lewe is soms moeilik. Voordat ek by @global.parent_app aangesluit het, was ek die hele tyd knorrig. Ek sou my woede op almal in die huis uithaal, nie net my tieners nie, maar selfs my man. Hulle sou sorg dat hulle wegkom wanneer ek tuis kom, want hulle het geweet ek sou op hulle begin skree. \n\nDit was aanvanklik moeilik om te leer om rustig te raak en asem te haal, maar elke keer wanneer ek dit probeer het, het dit my gehelp om te kalmeer. Nou vlug my tieners nie meer wanneer ek tuis kom nie, en hulle luister eintlik beter as toe ek hulle verskree het!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Notice how you feel", - "text": "Let op hoe jy voel", + "SourceText": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.", + "text": "Wanneer ek ook al iets verkeerd gedoen het, sou my pa kwaad word vir my en my slaan. Hy sou nie eens na my luister nie, en ek sou net so kwaad word vir hom en sommer ook vir almal anders. \n\nNou, wanneer hy kwaad word, haal hy eers 'n paar keer diep asem voordat hy reageer. Dit kalmeer almal in plaas daarvan om 'n bakleiery te veroorsaak.\n\nDit het my regtig gehelp, by die huis en by die skool, want ek hap nie meer na almal nie en ek is nie meer so buierig nie. Wanneer ek regtig kwaad of gestres voel, haal ek ook diep asem, soos my pa. Ek is 'n ander mens.", "type": "data_list", "note": "" }, { - "SourceText": "Pause power", - "text": "Blaaskans se krag", + "SourceText": "Family Budgets", + "text": "Gesinsbegrotings", "type": "data_list", "note": "" }, { - "SourceText": "Taking care of yourself", - "text": "Sorg vir jouself", + "SourceText": "**Family Budgets** workshop", + "text": "**Gesinsbegrotings**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Take a pause", - "text": "Neem ’n blaaskans", + "SourceText": "How to budget & save", + "text": "Hoe om te begroot en te spaar", "type": "data_list", "note": "" }, { - "SourceText": "Physical activity", - "text": "Fisiese aktiwiteit", + "SourceText": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "text": "Besparing en begroting help my as 'n ouer, en dit help my tieners ook om te verstaan waar die geld heen gaan.\n\nMy tieners het altyd vir hope goed gevra en nie verstaan wanneer ek gesê het, “Ek het nie geld nie”. Hulle sou sê, “Maar Ma het 'n werk!” \n\nEk het met hulle gaan sit en vir hulle gewys waarvoor ons alles betaal en hoeveel oor is. Hulle verstaan dit nou en gee selfs idees oor hoe om te spaar om ons doelwitte te bereik, soos nuwe skoene of 'n verjaardag, en groter doelwitte soos hulle skoolgeld. Vir die oudste het ek selfs 'n spaarrekening geopen.", "type": "data_list", "note": "" }, { - "SourceText": "List of things", - "text": "Lys van goed", + "SourceText": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.", + "text": "Ek het die hele tyd vir my ma gevra om vir my mooi klere te koop. Elke keer sou sy sê, “Ek het nie geld nie,” maar ek het geweet sy kry geld by my oom. Ek het nie verstaan waarom sy weier om vir my klere te koop nie. Ek het toe begin dink sy is nie lief vir my nie.\n\nMaar op 'n dag het sy my geroep, ons het gaan sit en sy het gevra: “Wat is die behoeftes en begeertes in ons huis?” Ek het begin met 'n lys van alles wat ek wil hê en nodig het. Toe het my ma my gehelp om ook aan die gesin se behoeftes te dink. Nou verstaan ek waar ons geld heen gaan, vir al die goed wat ons as 'n gesin nodig het. \n\nVan toe af verstaan ek dat ek nie sommer enige tyd kan vra vir iets nie. Nou, wanneer ek iets wil hê, wag ek tot die einde van die maand, wanneer ons almal saam die begroting bespreek om te kyk of dit inpas. Ons verstaan mekaar nou beter.", "type": "data_list", "note": "" }, { - "SourceText": "Connect", - "text": "Verbind", + "SourceText": "Rules", + "text": "Reëls", "type": "data_list", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Voorkom woede", + "SourceText": "**Rules** workshop", + "text": "**Reëls**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Angry? Take a break", - "text": "Kwaad? Neem ’n blaaskans", + "SourceText": "How to create rules", + "text": "Hoe om reëls te skep", "type": "data_list", "note": "" }, { - "SourceText": "Reflect on the positive", - "text": "Dink na oor die positiewe", + "SourceText": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "text": "My tieners het altyd net verdwyn. Ek het nie geweet waar hulle was nie, en ek sou so bekommerd en kwaad raak vir hulle. Ek het altyd gesê, “Dis my huis dié, en dis my reëls; as julle dit nie wil nakom nie, kan julle jul eie plek soek en daar gaan bly”. \n\nToe ons in @global.parent_app van reëls geleer het, het ek besef dat daar reëls vir tieners is, en ook vir volwassenes en vir almal. Indien ons as ouers die reëls nakom, sal ons tieners ons voorbeeld volg.\n\nEk het my bekommernis verduidelik en ons het ooreengekom: Ons kom almal die reël na en sê waar ons heen gaan as ons die huis verlaat. Dit het ons baie gehelp om saam oor reëls te besluit, aangesien my tieners my nie meer as daardie irriterende ouer sien wat net onnodige reëls uitdink nie.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Check-in chat", - "text": "Aanmeldgesprek", + "SourceText": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.", + "text": "Ek het nog nooit van reëls gehou nie en was baie geneig om van reëls te vergeet. \n\nEendag het ek met my maats gespeel. Die huisreël was dat ek teen 6 nm. tuis moes wees, maar ek het weer vergeet. Teen 6.30 het dit begin donker word en ek was steeds buite, besig om op my foon te speel. Toe kom daar 'n seun, gryp my foon en hardloop weg. \n\nEk verstaan dat reëls regtig kan help om ons veilig te hou, so ek het my gedrag verander en van toe af was ek teen 5 nm. tuis.", "type": "data_list", "note": "" }, { - "SourceText": "Dream Travel", - "text": "Droomreis", + "SourceText": "Calm Consequences", + "text": "Kalm gevolge", "type": "data_list", "note": "" }, { - "SourceText": "Famous Party", - "text": "Beroemde persoon", + "SourceText": "**Calm Consequences** workshop", + "text": "**Kalm gevolge**-slypskole", "type": "data_list", "note": "" }, { - "SourceText": "Two truths, one lie", - "text": "Twee waarhede, een onwaarheid", + "SourceText": "How to give calm consequences", + "text": "Hoe om kalm gevolge te gee", "type": "data_list", "note": "" }, { - "SourceText": "Time Machine", - "text": "Tydmasjien", + "SourceText": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "text": "Wanneer my tieners iets gedoen het wat my kwaad maak, sou ek op hulle skree en hulle dadelik straf. Maar die volgende keer sou hulle dit maar net weer doen! Ek kon nie verstaan waarom hulle my nie hoor nie, selfs al het ek geskree. \n\n@global.parent_app het my gehelp om te verstaan dat my tieners eerder na my sal luister wanneer ek kalm is. So, as iets gebeur, haal ek diep asem en sê, “Ons sal later hieroor praat wanneer ons albei kalm is”.\n\nOns kom nou selfs ooreen oor die gevolge voordat iets verkeerd loop. Dit het wondere verrig - ek het 'n groot verandering in my tieners se gedrag gesien vandat hulle meer betrokke is, en ek stres minder. \n\nEk wens ek het dit lankal geweet, maar dis nooit te laat om te begin nie!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Superpowers", - "text": "Superkragte", + "SourceText": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.", + "text": "My ma en pa het my altyd gestraf as hulle kwaad was vir my. Hulle sou op my skree en dan sou ek ook kwaad word. Ek het dikwels nie die reëls nagekom nie, want hulle was te streng. Ek het nie verstaan wat hulle wou sê nie, of ek sou nie eens probeer om na hulle te luister nie, want ons was almal kwaad.\n\nEendag het hulle my gevra: Kom ons dink almal saam oor wat die gevolge behoort te wees wanneer jy laat huis toe kom. Dit was wonderlik om my opinie te kon gee – voordat iets sou gebeur wat ons almal sou kwaad maak. Ons is almal kalm en ons stem saam. Dit is nou vir my makliker om die reëls na te kom, want ek weet ek het saamgestem oor die reël en ook oor die gevolg as ek nie die reël nakom nie.", "type": "data_list", "note": "" }, { - "SourceText": "Just a friendly chat", - "text": "Net ’n vriendelike geselsie", + "SourceText": "Problem Solving", + "text": "Probleemoplossing", "type": "data_list", "note": "" }, { - "SourceText": "The Interrupter", - "text": "Die onderbreker", + "SourceText": "**Problem Solving** workshop", + "text": "**Probleemoplossing**-slypskole", "type": "data_list", "note": "" }, { - "SourceText": "Three options", - "text": "Drie opsies", + "SourceText": "How to solve problems", + "text": "Hoe om probleme op te los", "type": "data_list", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "Ja, nee of miskien", + "SourceText": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "text": "Ek het nie 'n goeie verhouding met my dogter gehad nie. Ek het altyd op haar geskree, en sy het geweier om skool toe te gaan. \n\nEers toe ek Een-tot-Een-tyd saam met haar begin deurbring het, het ek besef dat sy nie skool toe wou gaan nie omdat sy by die skool geboelie is. Ons het gaan sit en die 6 stappe van probleemoplossing gevolg. Ons het die probleem geïdentifiseer, en saam oplossings uitgedink: “Wat kan ek as 'n ouer doen sodat jy skool kan bywoon en veilig voel?”\n\nOns het ooreengekom dat ek met die onderwyser sou gaan praat om die pad vorentoe te bespreek. Ons het regtig saam die oplossings gevind, en ons is nou nader aan mekaar.", "type": "data_list", "note": "" }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Geheuespeletjie – “Op Saterdag...”", + "SourceText": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.", + "text": "Toe my pa my van die stappe vir probleemoplossing vertel het, het dit my met my gesin gehelp, maar dit het my ook met my vriende gehelp. \n\nEk het my vriende vertel van die stappe, en as ons nou stry, gaan sit ons en elkeen stel oplossings voor. Ons kyk dan na die positiewe en negatiewe implikasies van elke oplossing, en ons kom ooreen: “Oukei, kom ons probeer dié een.” \n\nMy vriende het dit selfs by hul eie huise gaan toepas, en dit help met hulle gesinne ook! \n\nDit is wonderlik wanneer ander na jou luister en jou idees aanvaar, selfs al is jy jonk. Ons kan almal daardie harmonie tussen ons vriende en familie bewerkstellig.", "type": "data_list", "note": "" }, { - "SourceText": "Make up a story", - "text": "Dink ’n storie uit", + "SourceText": "Teen Safety", + "text": "Tienerveiligheid", "type": "data_list", "note": "" }, { - "SourceText": "Co-chef", - "text": "Medekok", + "SourceText": "**Teen Safety** workshop", + "text": "**Tienerveiligheid**-slypskole", "type": "data_list", "note": "" }, { - "SourceText": "Dance moves", - "text": "Dansbewegings", + "SourceText": "How to keep your teen safe", + "text": "Hoe om jou tiener veilig te hou", "type": "data_list", "note": "" }, { - "SourceText": "Mirror", - "text": "Spieël", + "SourceText": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "text": "Ek is so dankbaar dat ek die veiligheidsplan saam met my tiener te kon opstel. Ek het gedink ek weet watter areas is veilig vir my tiener en watter nie. Maar toe ons saam die veiligheidsplan opgestel het, het ek besef my dogter ken areas waarvan ek nie geweet het nie. \n\nEk het ook gedink sy is veilig by die skool, maar deur hierdie aktiwiteit het ek besef dat sy by die skool geboelie word en dat die onderwysers niks daaraan doen nie.\n\nHoe meer ons gepraat het, hoe meer het ek verstaan en inligting by my tiener gekry. Dit het my regtig gehelp om my tiener te beskerm en haar veilig te hou.", "type": "data_list", "note": "" }, { - "SourceText": "What's new?", - "text": "Wat is nuut?", + "SourceText": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!", + "text": "Wanneer ek of my vriende in die moeilikheid was, sou ek dit altyd vir my ma probeer wegsteek, want sy sou kwaad word en op my skree. \n\nToe ons die kaart van veilige en onveilige plekke gemaak het, het ek baie geleer – ook waarom dit gevaarlik is om elke foto aanlyn te deel. My ma het gesê ek kan haar enige tyd vra as ek 'n probleem het en sy het belowe om nie kwaad te word nie. \n\nSy het haar belofte nagekom, so as ek nou 'n probleem het of ek voel nie veilig nie, weet ek dat ons saam aan 'n oplossing sal dink. Ek kan nou selfs met my ma praat oor die goed wat ek aanlyn doen!", "type": "data_list", "note": "" }, { - "SourceText": "Get active!", - "text": "Raak aktief!", + "SourceText": "Dealing with Crisis", + "text": "Krisishantering", "type": "data_list", "note": "" }, { - "SourceText": "Name that tune", - "text": "Liedjieraai", + "SourceText": "**Dealing with Crisis** workshop", + "text": "**Krisishantering**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Pass the snap", - "text": "Vingerklap", + "SourceText": "How to deal with crisis", + "text": "Hoe om ’n krisis te hanteer", "type": "data_list", "note": "" }, { - "SourceText": "Family workout", - "text": "Gesinoefensessie", + "SourceText": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "text": "My tiener was die hele tyd kwaad. Hy sou nooit luister nie en ons sou elke dag hewige argumente hê. Deur @global.parent_app het ek begin om meer tyd saam met my tiener te spandeer en so ons verhouding versterk. Eendag het hy my vertel dat hy deel was van 'n bende, maar dat hy daar wou uitkom. \n\nOns het kort- en langtermynplanne gemaak oor hoe hy dit kon doen. Ons lewe lyk nou soveel anders!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Make housework fun", - "text": "Maak huistake pret", + "SourceText": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.", + "text": "Twee jaar gelede is ek deur my oom wat in ons erf gebly het, verkrag. Ek het nie my ma daarvan vertel nie, want ek was bang dat sy my sou slaan, op my sou skree, of my selfs uit die huis sou gooi. Ek het nêrens anders gehad om heen te gaan nie. \n\nToe my ma begin het met @global.parent_app, het sy meer tyd saam met my begin spandeer. Ek was nog steeds bang, maar ek het dit uiteindelik met my ma gedeel. My ma het nie geskree nie, maar sy het geluister en vir my gesê dit is nie my skuld nie. Ons is saam na die polisie en kliniek toe. Ek is so bly dat ek nie hierdie geheim meer alleen hoef te dra nie.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Huistake is nie pret nie... of is dit? Jy kan 'n speletjie daarvan maak!", + "SourceText": "Celebration and Next Steps", + "text": "Viering en volgende stappe", "type": "data_list", "note": "" }, { - "SourceText": "What are you doing?", - "text": "Wat doen jy?", + "SourceText": "**Celebration and Next Steps** workshop", + "text": "**Viering en volgende stappe**-slypskool", "type": "data_list", "note": "" }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Hier is 'n prettige speletjie wat jy saam met jou gesin kan doen!", + "SourceText": "How to support each other", + "text": "Hoe om mekaar te ondersteun", "type": "data_list", "note": "" }, { - "SourceText": "Crazy chicken", - "text": "Mal hoender", + "SourceText": "Start", + "text": "Begin", "type": "data_list", "note": "" }, { - "SourceText": "My Tips", - "text": "My wenke", + "SourceText": "Continue", + "text": "Gaan voort", "type": "data_list", "note": "" }, { - "SourceText": "**My Tips** in the @global.parent_centre", - "text": "**My wenke** in die @global.parent_centre", + "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Hallo ongelooflike ouer! Onthou om ook vir jouself te sorg - dit sal jou EN jou gesin help! Kry jou wenke en meer in @global.parent_app.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Essential Tools", - "text": "Noodsaaklike hulpmiddels", + "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.", + "text": "Hallo ongelooflike ouer! Onthou, jy kan baie nuttige wenke in @global.parent_app vind.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "**Essential Tools** in the @global.parent_centre", - "text": "**Noodsaaklike hulpmiddels** in die @global.parent_centre", + "SourceText": "Hi great parent! @global.parent_app is here to support you. Check it out now!", + "text": "Hallo ongelooflike ouer! @global.parent_app is hier om jou te ondersteun. Kom kyk nou!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Customise @global.parent_app", - "text": "Pas @global.parent_app aan", + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Welkom by @global.parent_app. Klik hier om jou reis te begin!", "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", - "text": "**Pas @global.parent_app aan** in die @global.parent_centre", + "SourceText": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", + "text": "Hallo! Is alles oukei? Dit lyk asof jy @global.parent_app nie onlangs oopgemaak het nie. Hoekom probeer jy nie? Miljoene ouers het hierdie materiaal nuttig gevind. Ons is steeds hier om jou te ondersteun.", "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Customise Again", - "text": "Pas weer aan", + "SourceText": "@global.parent_app misses you! There is a lot to explore. We are still here to support you.", + "text": "@global.parent_app mis jou! Daar is baie om te ondersoek. Ons is steeds hier om jou te ondersteun.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Relax & Activities", - "text": "Ontspan en aktiwiteite", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.", + "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou tiener voor te berei vir sukses.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "under **Relax & Activities** in the @global.parent_centre", - "text": "onder **Ontspan & aktiwiteite** in die @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!", + "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om weer ’n band met jou tiener te vorm!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Help", - "text": "Hulp", + "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!", + "text": "Hoop jy voel oukei. Ouerskap is moeilik, maar dit is nooit te laat om weer met jou tiener te begin nie. Jou eerste ouerskapwerksessie is gereed! Klik hier om jou @global.parent_app-reis te begin!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Help** in the @global.parent_centre", - "text": "**Hulp** in die @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.", + "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om jou spanning as ouer te hanteer.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Technical Support", - "text": "Tegniese steun", + "SourceText": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", + "text": "Hallo, weereens! Dit is nooit te laat om @global.parent_app te gebruik en aangepaste ouerskapondersteuning te kry nie. Hoekom probeer jy dit nie terwyl jy werk toe pendel, of terwyl jy kos kook nie? Miljoene ouers het ons materiaal nuttig gevind.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Technical Support** in the @global.parent_centre", - "text": "**Tegniese ondersteuning** in die @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.", + "text": "Hoop jy voel oukei. Ons weet ouerskap is moeilik – gebruik @global.parent_app om jou te help om jou tiener se gedrag te hanteer.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Coping with @global.covid", - "text": "Hantering van @global.covid", + "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Hallo, @fields.user_name. Jou @data.workshop.w_1on1.in_text_title is gereed vir jou.", "type": "data_list", - "note": "The string @global.covid should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "**Coping with @global.covid** in the @global.parent_centre", - "text": "**Hantering van @global.covid** in die @global.parent_centre", + "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Hallo, @fields.group_name. Julle @data.workshop.w_1on1.in_text_title is gereed vir julle.", "type": "data_list", - "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" + "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Coping with grief", - "text": "Hantering van hartseer", + "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", + "text": "Jy het soveel moeite gedoen om 'n beter ouer te wees. Jy is geliefd en word waardeer!", "type": "data_list", "note": "" }, { - "SourceText": "**Coping with grief** in the @global.parent_centre", - "text": "**Hantering van hartseer** in die @global.parent_centre", + "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", + "text": "Dankie dat jy so toegewyd is aan jou ouerskap. \n\nJou @data.workshop.w_1on1.in_text_title is gereed vir jou!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "Message Archive", - "text": "Boodskapargief", + "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", + "text": "Wanneer jy tyd saam met jou tiener deurbring, help dit om vertroue te bou. \n\nGaan voort met jou @global.parent_app-reis vir wonderlike resultate.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Message Archive** in the @global.parent_centre", - "text": "**Boodskapargief** in die @global.parent_centre", + "SourceText": "Have you spent time with your teen already?", + "text": "Het jy al tyd saam met jou tiener deurgebring?", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Support Contacts", - "text": "Ondersteuningskontakte", + "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "Welgedaan dat jy die @data.workshop.w_1on1.in_text_title voltooi het. Môre kan jy 'n nuwe werkswinkel aanpak om jou te help om te ontspan, geniet en nuwe vaardighede te leer!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "**Support Contacts** in the @global.parent_centre", - "text": "**Ondersteuning kontakte** in die @global.parent_centre", + "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", + "text": "Onthou om die @data.workshop.w_1on1.in_text_title te voltooi. Jy sal binne enkele minute waardevolle inligting kry! \n\nWelgedaan dat jy probeer om 'n beter ouer te wees.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "Evidence Base", - "text": "Bewysbasis", + "SourceText": "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.", + "text": "Hallo, @fields.user_name! Vandag vier ons twee maande van @global.parent_app! \nHierdie week sal jy meer uitvind oor hoe om jou tiener te help om huisreëls na te kom.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "**Evidence Base** in the @global.parent_centre", - "text": "**Bewysbasis** in die @global.parent_centre", + "SourceText": "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.", + "text": "Hallo, @fields.group_name! Vandag vier ons twee maande van @global.parent_app! \n\nHierdie week sal julle meer uitvind oor hoe om jul tiener te help om huisreëls na te kom.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "How to talk to my teen", - "text": "Hoe om met my tiener te praat", + "SourceText": "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.", + "text": "Dink na oor elke keer wat jy jou tiener laat glimlag het en al die maniere wat jy vir hom/haar omgee. \n\nJy behoort so trots te wees - dis 'n moeilike tyd om 'n ouer te wees dié.", "type": "data_list", "note": "" }, { - "SourceText": "Steps to deal with news", - "text": "Stappe om nuus te verwerk", + "SourceText": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!", + "text": "Welgedaan - jy het reeds 6 stukke ouerskap-gereedskap verwerf! Doen die volgende werkswinkel om meer te kry!", "type": "data_list", "note": "" }, { - "SourceText": "How can I help my teen choose well?", - "text": "Hoe kan ek my tiener help met goeie keuses?", + "SourceText": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.", + "text": "Voltooi die werkswinkel en praat met jou tiener oor 'n positiewe en 'n negatiewe gevolg van sekere gedrag.", "type": "data_list", "note": "" }, { - "SourceText": "What influences teen decisions?", - "text": "Wat beïnvloed tiener besluite?", + "SourceText": "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?", + "text": "Het jy en jou tiener al saam aan 'n positiewe en 'n negatiewe gevolg van sekere gedrag gedink?", "type": "data_list", "note": "" }, { - "SourceText": "How does my teen feel?", - "text": "Hoe voel my tiener?", + "SourceText": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!", + "text": "Welgedaan dat jy die @data.workshop.w_consequence.in_text_title voltooi het. Pak môre 'n nuwe werkswinkel aan om jou te help om nuttige vaardighede te leer en te geniet!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_consequence.in_text_title. should not be translated." }, { - "SourceText": "Changing negative to positive", - "text": "Verander negatief na positief", + "SourceText": "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.", + "text": "Gevolge wat kalm oorgedra word, help jou tiener om reëls na te kom. As jy nog nie die @data.workshop.w_consequence.in_text_title voltooi het nie, probeer dit nou!\n\nWelgedaan dat jy so veel toewyding wys.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_consequence.in_text_title, should not be translated." }, { - "SourceText": "Help yourself cope", - "text": "Help jouself met lewenshantering", + "SourceText": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Hallo, @fields.user_name! Krisisse gebeur met enigiemand - dit help baie as 'n mens gereed is daarvoor. \n\nHierdie werkswinkel sal jou wys hoe om dit te doen.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Help your teen cope", - "text": "Help jou tiener met lewenshantering", + "SourceText": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Hallo, @fields.group_name! Krisisse gebeur met enigiemand - dit help baie as 'n mens gereed is daarvoor. \n\nHierdie werkswinkel sal julle wys hoe om dit te doen.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Practical steps", - "text": "Praktiese stappe", + "SourceText": "Be proud, you are a committed parent. This is a big achievement!", + "text": "Wees trots, jy is 'n toegewyde ouer. Dit is 'n groot prestasie!", "type": "data_list", "note": "" }, { - "SourceText": "Relax", - "text": "Ontspan", + "SourceText": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.", + "text": "Krisisse kan plaasvind, en ons KAN voorbereid wees!\n\nBegin die volgende werkswinkel om saam met jou tiener te sien hoe dit gedoen word.", "type": "data_list", "note": "" }, { - "SourceText": "**Relax** @global.parent_point", - "text": "**Ontspan** @global.parent_point", + "SourceText": "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.", + "text": "Dis wonderlik dat jy hierdie ouerskapreis meegemaak het! \n\nVoltooi die @data.workshop.w_crisis.in_text_title om meer uit te vind oor die beste manier om te reageer as tieners ons nodig het.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." }, { - "SourceText": "Doing a relaxation activity", - "text": "Doen 'n ontspanningsaktiwiteit", + "SourceText": "Have you and your teen discussed what you would do in a crisis?", + "text": "Het jy en jou tiener al bespreek wat julle in 'n krisissituasie sal doen?", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy ’n ontspanningsaktiwiteit doen, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!", + "text": "Welgedaan dat jy die @data.workshop.w_crisis voltooi het. Môre kan jy die finale werkswinkel aanpak om na te dink oor jou reis, en beplan wat om volgende te doen!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_crisis. should not be translated." }, { - "SourceText": "Treat yourself well", - "text": "Behandel jouself goed", + "SourceText": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.", + "text": "Die finale werkswinkel is môre beskikbaar!\n\nProbeer om eers die @data.workshop.w_crisis.in_text_title te voltooi. So kan jy dan jou stel ouerskapvaardighede voltooi en besluit wat om volgende te doen.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_crisis.in_text_title. should not be translated." }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "**Behandel jouself goed** @global.parent_point", + "SourceText": "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Hallo, @fields.user_name, welgedaan dat jy week 4 begin! \n\nHierdie week help om die kans te vergroot dat jy jou tiener so ver sal kry om te doen wat jy vra.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.user_name, should not be translated." }, { - "SourceText": "Doing something they like for themselves", - "text": "Doen iets vir hulself waarvan hulle hou", + "SourceText": "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Hallo, @fields.group_name, welgedaan dat julle week 4 begin!\n\nHierdie week help om die kans te vergroot dat jul tiener sal doen wat julle vra.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name, should not be translated." }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy jouself goed behandel, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!", + "text": "Wees gaaf met jouself. Geen ouer is perfek nie. Die feit dat jy @global.parent_app gebruik, wys dat jy omgee!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Praise yourself", - "text": "Prys jouself", + "SourceText": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.", + "text": "Tieners luister nie altyd nie. Kyk na hierdie week se werkswinkel om te sien hoe positiewe instruksies kan help.", "type": "data_list", "note": "" }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "**Prys jouself** @global.parent_point", + "SourceText": "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.", + "text": "Positiewe instruksies verbeter gedrag.\n\nVoltooi die @data.workshop.w_instruct.in_text_title vir idees oor hoe om dit in jou gesin te laat werk.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Praising themselves", - "text": "Hulself prys", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.", + "text": "Jy het alreeds die @global.parent_point @data.habit.instruct_positively.title een keer gemerk – jy maak regtig goeie vordering.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy jouself prys, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.", + "text": "Jy het alreeds die @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively kere gemerk – jy maak regtig baie goeie vordering.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "One-on-one time", - "text": "Een-tot-een-tyd", + "SourceText": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!", + "text": "Veels geluk, jy het die @data.workshop.w_instruct.in_text_title voltooi.\n\nMôre wag 'n nuwe werkswinkel vir jou. Sien 'n groot verskil deur klein veranderinge te maak!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_instruct.in_text_title. should not be translated." }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "**Een-tot-een-tyd** @global.parent_point", + "SourceText": "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?", + "text": "Sommige ouers gebruik die toep na aandete. Waarom voltooi jy nie @data.workshop.w_instruct.in_text_title wanneer jy 'n paar minute tyd het nie?", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Spending time with their teen", - "text": "Tyd spandeer met hulle tiener", + "SourceText": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Hallo, @fields.user_name! Wonderlik, dis al jou tweede maand saam met @global.parent_app.\n\nDie meeste gesinne sukkel met geld. Hierdie werkswinkel sal jou toerus om jou uitgawes te beplan om jou deur die maand te help.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app." }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy een-tot-een tyd spandeer, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Hallo, @fields.group_name! Wonderlik, dis al julle tweede maand saam met @global.parent_app. \n\nDie meeste gesinne sukkel met geld. Hierdie werkswinkel sal julle toerus om jul uitgawes te beplan om julle deur die maand te help.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app." }, { - "SourceText": "Praise your teen", - "text": "Prys jou tiener", + "SourceText": "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!", + "text": "Jy is nie alleen nie. Ouers regoor die wêreld sukkel met dieselfde probleme. \n\nJy doen jou bes en ons is trots op jou!", "type": "data_list", "note": "" }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "**Prys jou tiener** @global.parent_point", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." - }, - { - "SourceText": "Praising their teen when they did positive thing", - "text": "Hul tiener prys wanneer hulle positiewe dinge gedoen het", + "SourceText": "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.", + "text": "Stres jy oor geld? Vra jou tiener vir goed wat jy nie kan bekostig nie? \n\nHierdie week gaan oor geld en begrotings.", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy jou tiener prys, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!", + "text": "Stel saam met jou tiener 'n gesinsbegroting op - dit sal argumente oor geld voorkom. \n\nVoltooi die @data.workshop.w_money.in_text_title om te sien hoe om dit te doen. Dis maklik - jy sal sien!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title should not be translated." }, { - "SourceText": "Get positive", - "text": "Wees positief", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Het jy al met jou tiener gepraat oor jul gesinsbegroting?", "type": "data_list", "note": "" }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "**Wees positief** @global.parent_point", + "SourceText": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.", + "text": "Mooi, jy het die @data.workshop.w_money.in_text_title voltooi! Pak môre 'n nuwe werkswinkel aan om jou te help met die opstel van gesinsreëls wat werk.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title! should not be translated." }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Hul tiener 'n positiewe instruksie gee", + "SourceText": "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.", + "text": "Baie ouers sê begrotings bring vrede. As jy nog nie die @data.workshop.w_money.in_text_title voltooi het nie, probeer dit nou!\n\nDankie vir jou toegewyde ouerskap.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_money.in_text_title, should not be translated." }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy 'n positiewe instruksie gee, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Hallo, @fields.user_name! Jy begin met jou derde @global.parent_app-week. \n\n'n Nuwe werkswinkel is gereed!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Breathe not yell", - "text": "Haal asem, moenie skreeu nie", + "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Hallo, @fields.group_name! Julle begin met jul derde @global.parent_app-week. \n\n'n Nuwe werkswinkel is gereed!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "**Haal asem, moenie skreeu nie** @global.parent_point", + "SourceText": "Well done for using @global.parent_app! Remember, small things make a big difference.", + "text": "Welgedaan dat jy @global.parent_app gebruik! Onthou, klein dingetjies maak 'n groot verskil.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Taking a pause before responding", - "text": "'n Blaaskans vat voor jy reageer", + "SourceText": "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!", + "text": "Dankie dat jy in jouself en jou gesin belê. Probeer die @data.workshop.w_praise.in_text_title om 'n goeie ouerskapvaardigheid te bou!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy 'n blaaskans vat voor jy reageer, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.", + "text": "Aanprysing maak 'n reuseverskil. \n\nVoltooi die @data.workshop.w_praise.in_text_title om te sien hoe om dit in JOU gesin te gebruik.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Good money choice", - "text": "Goeie geldkeuse", + "SourceText": "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!", + "text": "Prys jou tiener vir een ding wat hy/sy goed gedoen het. \n\nEn wanneer laas het jy jouself of 'n ander volwassene geprys? Probeer dit!", "type": "data_list", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "**Goeie geldkeuse** @global.parent_point", + "SourceText": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.", + "text": "Wonderlik, jy het die @data.workshop.w_praise.in_text_title voltooi. 'n Nuwe werkswinkel is gereed vir môre. Probeer dit - jy sal 'n verskil in jou tiener se gedrag sien.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title. should not be translated." }, { - "SourceText": "Keeping the budget", - "text": "Hou die begroting", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.", + "text": "Hallo, @global.user_name, daar wag môre 'n nuwe werkswinkel op jou!\n\nDit lyk of jy nog nie die @data.workshop.w_praise.in_text_title voltooi het nie. Dis kort (belowe!) – kyk gou daarna wanneer jy 'n paar minute tyd het.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name,\n@data.workshop.w_praise.in_text_title." }, { - "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy 'n goeie keuse maak oor behoeftes, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Hallo, @fields.user_name! Nuwe week, nuwe werkswinkel! Leer om huishoudelike reëls op te stel wat jou tiener verstaan en nakom.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Calm consequence", - "text": "Kalm gevolg", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Hallo, @fields.group_name! Nuwe week, nuwe werkswinkel! Leer om huishoudelike reëls op te stel wat julle tiener verstaan en nakom.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "**Kalm gevolg** @global.parent_point", + "SourceText": "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!", + "text": "Het jy jou bes probeer, maar jou tiener is steeds knorrig? Onthou, jy doen goed - daar sal ook goeie tye saam met hom/haar wees!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a consequence in a calm way", - "text": "Hul tiener op 'n kalm manier 'n gevolg gee", + "SourceText": "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.", + "text": "Dankie dat jy in jou ouerskap belê. \n\nDoen die @data.workshop.w_rules.in_text_title om jou tiener te help om huishoudelike reëls te verstaan en na te kom.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy op 'n kalm manier 'n gevolg gee, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!", + "text": "Jy is so naby daaraan om nog gereedskap te verwerf! Voltooi die @data.workshop.w_rules.in_text_title en stel EEN eenvoudige, realistiese reël saam met jou tiener vas, en kyk hoe dinge verander!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Safe", - "text": "Veilig", + "SourceText": "Have you managed to set a rule with your teen?", + "text": "Kon jy dit regkry om 'n reël saam met jou tiener vas te stel?", "type": "data_list", "note": "" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "**Veilig** @global.parent_point", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!", + "text": "Veels geluk, jy het die @local.workshop_data.in_text_title voltooi.\n \nPak môre 'n nuwe werkswinkel aan! Dit sal jou wys wat om te doen wanneer tieners hulle sleg (of goed) gedra!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @local.workshop_data.in_text_title. should not be translated." }, { - "SourceText": "Planning or keeping a family safety plan", - "text": "'n Gesinsveiligheidsplan maak of hou", + "SourceText": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!", + "text": "'n Splinternuwe werkswinkel is môre beskikbaar!\n \nVoltooi die @local.workshop_data.in_text_title voordat jy aanbeweeg. Nog net 'n paar minute om jou tiener te help om jou reëls na te kom!", "type": "data_list", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", - "text": "Elke keer wanneer jy iets doen om jou tiener veilig te hou, klik op die @global.parent_point en vier jou sukses!", + "SourceText": "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Hallo, @fields.user_name! Jy nader nou vinnig die einde van jou @global.parent_app-reis! Dankie dat jy deurdruk daarmee. \n\nHierdie week handel oor hoe om ons tieners aanlyn en in die gemeenskap veilig te hou.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Did it? Tap it!", - "text": "Gedoen? Klik dit!", + "SourceText": "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Hallo, @fields.group_name! Julle nader nou vinnig die einde van julle @global.parent_app-reis! Dankie dat julle vasbyt daarmee. \n\nHierdie week handel oor hoe om ons tieners aanlyn en in die gemeenskap veilig te hou.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Dis wonderlik! Mooi so dat julle tyd saam deurgebring het. Dit lê die grondslag vir ’n wonderlike verhouding met jou tiener!", + "SourceText": "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!", + "text": "Ouerskap is moeilik, veral nou. Wees trots op wat jy bereik het. Op hoe jy vir hulle sorg. Op elke keer wat jy hulle laat glimlag. Jy's ongelooflik!", "type": "data_list", "note": "" }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Mooi so! Een-tot-een-tyd wys julle tieners hulle is vir julle belangrik. Dit maak regtig ’n verskil!", + "SourceText": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.", + "text": "Dink aan al die ouerskapvaardighede wat jy reeds verwerf het!\n\nVoltooi die volgende werkswinkel om meer te kry.", "type": "data_list", "note": "" }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Wonderlik! Om tyd saam met jou tiener deur te bring, kan jou tiener meer gewillig maak om meer dikwels te help. Jy doen uitstekend!", + "SourceText": "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.", + "text": "Deur saam te gesels oor tieners se ervaringe in die gemeenskap en ook aanlyn, help om hulle veilig te hou. \n\nVoltooi die @data.workshop.w_safe.in_text_title om te sien hoe om dit te doen.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "Welgedaan! Een-tot-een-tyd met jul tieners gee julle kans om meer van hulle belangstellings en vermoëns uit te vind. Jy is ’n ster!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Het jy al met jou tiener oor veiligheidsmaatreëls gesels?", "type": "data_list", "note": "" }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Uitstekende werk! Tyd wat julle saam deurbring, help om ’n sterk en positiewe verhouding tussen jou en jou tiener te vestig.", + "SourceText": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!", + "text": "Veels geluk, jy het @data.workshop.w_safe.in_text_title voltooi. 'n Nuwe werkswinkel is môre beskikbaar om jou gesin te help om enige situasie te hanteer – saam kan julle soveel doen!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title. should not be translated." }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Soms sal dit maklik en prettig wees om tyd met jul tieners te bestee, en soms sal dit meer van ’n uitdaging wees. Tyd wat julle saam deurbring, sal julle verhouding baie verbeter; welgedaan dat jy probeer het!", + "SourceText": "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.", + "text": "Voltooi die @data.workshop.w_safe.in_text_title voordat jy aanbeweeg. Dit kan baie probleme voorkom. \n\nWelgedaan dat jy @global.parent_app gebruik om jou gesin te ondersteun.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@global.parent_app" }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Jammer om te hoor dit was vir jou moeilik om tyd met jou tiener te bestee. Ons kom almal soms voor uitdagings te staan. Wees net geduldig met jouself en met jou tiener – dinge sal verbeter. Welgedaan dat jy probeer het!", + "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", + "text": "Hierdie week gaan oor JOU! Kyk mooi na jouself. Jy verdien dit!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Wonderlik om te hoor dit het goed gegaan, jy is ’n ster!", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", + "text": "Begin môre 'n splinternuwe @global.parent_app werkswinkel. Jy sal wonderlike resultate sien!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Wonderlik! Jy verdien al die gelukkige tye!", + "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", + "text": "Onthou om vir jou @global.parent_app-maats van die toep te vertel. Julle kan môre die @global.parent_app-werkswinkels saam begin doen!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Jammer dat dit vir jou moeilik was. Jy is ’n ster omdat jy probeer het!", + "SourceText": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.", + "text": "Hallo, @fields.user_name! Jy maak sulke goeie vordering! \n\nOm 'n tiener te hê, beteken hope onverwagse probleme. Hierdie werkswinkel sal jou wys hoe om dit te hanteer.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Ongelooflik om te hoor dit het jou goed laat voel! Hou aan met die goeie werk. Jou tiener leer baie van jou!", + "SourceText": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Hallo, @fields.group_name! Julle maak sulke goeie vordering!\n\nOm 'n tiener te hê, beteken hope onverwagse probleme om te hanteer. Hierdie werkswinkel sal julle almal wys hoe om dit te hanteer.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Dit kan aanvanklik baie moeilik wees om te praat oor hoe ons voel, maar jy en jou tiener sal daaraan gewoond raak. Hou aan probeer en jy sal die positiewe resultate sien!", + "SourceText": "Your commitment is inspiring. Keep calm and carry on!", + "text": "Jou toewyding is inspirerend. Bly kalm en hou so aan!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Wonderlik om te hoor dit het goed gegaan. Wanneer julle saam oor julle finansies praat, maak dit julle gesin regtig sterker!", + "SourceText": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.", + "text": "Onverwagse probleme duik op wanneer ons tieners het. \n \nLeer in die volgende werkswinkel hoe om dit te hanteer.", "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Jammer om te hoor dit was vir jou moeilik. Welgedaan dat jy probeer het!", + "SourceText": "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.", + "text": "Jy is op die regte pad om probleme saam met jou tiener op te los! \n\nVoltooi die @data.workshop.w_solve.in_text_title om nog 'n ouerskapvaardigheid te verwerf.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Wonderlik om te hoor dit het goed gegaan! Konsekwente reëls help ons tieners om beskerm te voel en hulle veilig te hou!", + "SourceText": "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Oefen saam met jou tiener die vier stappe van probleemoplossing. \n \nKEN DIT, LOS DIT OP, PROBEER DIT, TOETS DIT!", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Jammer dat dit moeilik was. Om saam reëls te skep, vereis oefening, maar dit is die moeite werd!", + "SourceText": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Fantasties! Jy het die @data.workshop.w_solve.in_text_title voltooi. Môre is 'n nuwe werkswinkel beskikbaar om jou te help om jou tiener veilig te hou.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title. should not be translated." }, { - "SourceText": "Great to hear it went well!", - "text": "Wonderlik om te hoor dit het goed gegaan!", + "SourceText": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.", + "text": "Pak môre 'n nuwe werkswinkel aan! \n \nDeur eers die @data.workshop.w_solve.in_text_title te voltooi, sal jy weet hoe julle probleme saam kan oplos.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Jammer dat dit moeilik was. Om saam gevolge vas te stel, sal jou tiener meer geneë maak om meer dikwels die reëls na te kom!", + "SourceText": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Hallo, @fields.user_name! Veels geluk dat jy week 5 begin.\n\n'n Nuwe werkswinkel wag vir jou met wenke oor hoe om kalm en in beheer te bly wanneer jou tiener jou mal maak.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Jammer dat dit moeilik was. Soms moet ons net aanhou probeer. Kry ’n tyd wanneer jy en jou tiener kalm is en probeer weer om oor die probleem te praat terwyl julle die vier stappe van probleemoplossing toepas. Saam kan julle baie regkry!", + "SourceText": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Hallo, @fields.group_name! Veels geluk dat jul week 5 begin.\n\n'n Nuwe werkswinkel wag met wenke oor hoe om kalm en in beheer te bly wanneer ons tieners ons mal maak.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Wonderlik om te hoor dit het goed gegaan! Gesprekke oor risiko’s en ondersteuningsopsies voorkom probleme en help regtig om jou tiener veilig te hou.", + "SourceText": "Manage anger and stress with this new workshop. It helps you take better care of yourself.", + "text": "Beheer woede en stres met hierdie nuwe werkswinkel. Dit help jou om beter na jouself om te sien.", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Jammer dat dit moeilik was. Dit kan uitdagend en emosioneel wees om ’n kaart van risiko’s en plekke om ondersteuning te kry, te maak. Dit help regtig om jou tiener veilig te hou!", + "SourceText": "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.", + "text": "Voel jy oorweldig? Diep asemhaling help. \n\nVoltooi die @data.workshop.w_stress.in_text_title om jou te help om stres te hanteer.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Jammer dat dit nie so goed gegaan het nie. Dis nie maklik nie. Probeer om dit weer rustig met jou tiener te bespreek. Maar ook, is daar iemand wat jou tiener vertrou, wat saam met jou met jou tiener kan gesels?", + "SourceText": "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.", + "text": "Voel jy vandeesweek gestres? Probeer om diep asem te haal voordat jy op jou tiener reageer - dit maak 'n groot verskil.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Wonderlik om te hoor dit het goed gegaan! Wanneer gevolge reg vasgestel is, help dit tieners om hul beter te gedra en maak dit die gesinslewe rustiger.", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.", + "text": "Welgedaan dat jy diep asemgehaal het voordat jy op jou tiener gereageer het! Elke blaaskans wat jy neem, help jou om beheer terug te neem.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Wonderlik om te hoor dit het goed gegaan! Wanneer jou tiener leer hoe om probleme op te los, kan hulle daardie vaardigheid dwarsdeur hulle lewens gebruik. ’n Groot geskenk!", + "SourceText": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!", + "text": "Welgedaan dat jy die @data.workshop.w_stress.in_text_title voltooi het. Pak môre 'n nuwe werkswinkel aan om jou te help ontspan en waardevolle vaardighede op te bou!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title. should not be translated." + }, + { + "SourceText": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!", + "text": "Maak gereed vir 'n nuwe werkswinkel môre. \n \nDeur die @data.workshop.w_stress.in_text_title eers te voltooi, vestig jy 'n sleutel fondament: As jy goed voel, sal jou gesin ook!", + "type": "data_list", + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." } ] \ No newline at end of file diff --git a/packages/app-data/translations_source/from_translators/translated.za_st.json b/packages/app-data/translations_source/from_translators/translated.za_st.json index b29883c8db..48d59572c5 100644 --- a/packages/app-data/translations_source/from_translators/translated.za_st.json +++ b/packages/app-data/translations_source/from_translators/translated.za_st.json @@ -1,625 +1,637 @@ [ { - "SourceText": "Home Practice", - "text": "Boikwetliso ba Lapeng", + "SourceText": "When everything feels like it is falling apart", + "text": "Ha dintho tsohle di senyeha", "type": "template", "note": "" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Diketso tse nyane, diphetho tse kgolo! Batswadi ba sebedisang tsebo eo ba e fumaneng wekshopong ha ba le lapeng ba fumana diphetho tse ntle.", + "SourceText": "And you can't help but raise your voice", + "text": "Mme o sa kgone ho se phahamise lentswe", "type": "template", "note": "" }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Bekeng e tlang, o tla buisana le sehlopha sa hao hore na boikwetliso ba lapeng bo tsamaile jwang. Hape le ka tshehetsana le ho hopotsana matsatsing a beke.", + "SourceText": "When all the frustrations are beginning to start", + "text": "Ha litsietsi tsohle li qala ho qala", "type": "template", "note": "" }, { - "SourceText": "How did it go?", - "text": "Bo tsamaile jwang?", + "SourceText": "Remember that you have a choice", + "text": "Hopola hore o nale khetho", "type": "template", "note": "" }, { - "SourceText": "talk to their teens about how they feel", - "text": "buisana le batjha ba bona kamoo ba ikutlwang kateng", + "SourceText": "Remember all we have to be grateful for", + "text": "Hopola hore rohle re tlameha ho leboha", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "buisana le motjha wa hao hore na o ikutlwa jwang", + "SourceText": "Let's slow down", + "text": "Ha re fokotse lebelo", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "Na o bile le efe kapa efe ya diphephetso tsee ha o leka @local.hp_description_second_singular?", + "SourceText": "Take a few deep breaths", + "text": "Phefumolohela hodimo ka makgetlo a mmalwa", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Ke eng e bileng boima ho wena ha o leka ho @local.hp_description_second_singular?", + "SourceText": "Because I really couldn't love you more", + "text": "Hobane ke ne ke se sa khone ho o rata ho feta", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "Sorry we missed this!", - "text": "Re maswabi hore ha rea lemoha taba ena!", + "SourceText": "You can take pause, you can count to 10", + "text": "O ka nka khefu, o ka 'na oa bala ho fihlela ho 10", "type": "template", "note": "" }, { - "SourceText": "Do you want to share it with us?", - "text": "Na o ka thabela ho re phetela yona?", + "SourceText": "Play a game or do something fun", + "text": "Bapala papadi kapa etsa se seng se monate", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Rea leboha ka hore o re phetele phephetso ya hao! Re tla sebedisa tlaleho ena ho ntlafatsa @global.parent_app.", + "SourceText": "You can phone a friend, someone to confide in", + "text": "O ka litsetsa motsoalle, motho eo o ka mo phetlelang sefuba", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Re maswabi ho utlwa hore dikeletso tsena ha dia ka tsa o thusa.", + "SourceText": "Remember you're not the only one", + "text": "Hopola hore ha o mong", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "Na o ka thabela ho re phetela seo o nahanang hore se ka o thusa?", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Botsanang, “Ke eng e o thabisitseng kajeno?”\n* Botsanang, “O tobane le bothata bofe kajeno?”\n* Botsanang, “Nka o thusa jwang?”\n* A re etseng sena mmoho letsatsi le letsatsi; ekaba ha le ja dijo tsa tinare hammoho kapa pele le ilo robala.", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Kea leboha ka ho re bolella taba ena! O motswadi wa mmakgonthe ka ho leka ho qeta nako le motjha wa hao. Ruri seo se etsa phapang. Pele ya pele ka mosebetsi o motle, mme o hopole, kamehla ke teng ho o tshehetsa!", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "* Botsa motjha wa hao hore na a ka thabela ho ja dijo tse jwang. \n* Di pheheng hammoho!\n* E re ba tjhentjhane ka hore na seapehi se seholo ke mang – ba etelle pele, mme o latele ditaelo tsa bona. \n* O ka ba wa ba thusa ho etsa bajete ya dintho tseo ba phehang ka tsona! \n\nNa ha o nahane hore sena se ka sebetsa? Botsa batjha ba hao hore na BA ka rata hore wena le bona le etseng mmoho. Ba tlohele ba etelle pele. Phutholohang. Le je monate.", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Tsebo eo o lokelang ho ba le yona bekeng ena ke ena!\n\nE sebedise lapeng mme o e fumane neng kapa neng ho @global.parent_centre.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "* Foka letsoho la hao moyeng ka makgetlo a 8 o ntse o bala ho fihla ho 8.\n* Etsa sena ka potlako ebile o hweleditse kamoo o ka kgonang.\n* Pheta sena ka letsoho le leng la hao. Pheta seo ka maoto ka bobedi.\n* Etsa sena ka makgetlo a 7, ebe a 6 mme o tswele pele ho fihlela ho lekgetlo le 1.\n* Bohle ba hweletse “Kgoho e hlanyang” ebe ba etsa sohle ho tantshe ya kgoho e hlanyang!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Theolang Moya Hammoho", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Qapa tantshi e tsamaisanang le dipina tseo batjha ba hao ba di ratang.\n* Motho a le mong o phokola tantshi mme bohle baa mo etsisa. \n* Bohle baa tjhentjhana ka ho etella pele. \n* E etse bakeng sa lelapa!", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Theolang Moya", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Papadi ena e monate ha e bapalwa ke batho ba fetang ba 2.\n* Motho o etsa eka o etsa ntho e itseng – ka mohlala, o kama moriri kapa o lokisa dijo tsa tinare. \n* Motho e mong o a mo botsa, “O etsang?”\n* Motho wa pele o lokela ho bua ntho e sa amaneng ho hang le ho kama moriri, ka mohlala “Ke fasa dieta.” \n* Motho wa bobedi o etsa eka o fasa dieta ho fihlela motho e mong a mo botsa, “O etsang?” \n\nKamehla karabo e tlameha ho ba ntho e fapaneng le seo o hlileng o se etsang!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "A re etseng ntho kgutshwane e tla etsa hore re theole moya hammoho – e tla nka katlase ho motsotso o 1 mme o tla utlwa o kgobile matshwafo hamonate.", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Hase kamehla le ka nkang maeto, empa kamehla le ba le ditakatso! Botsa motjha wa hao dipotso tsena:\n* O ka rata ho nka leeto le yang hokae? O tla nka nako e kae o etile? O ka paka eng? O ne o tla etsang ha o le leetong? O ne o tla bona eng?\n* Shebang mmapa mmoho kapa le o toroye.\n* Kgethang naha eo motjha wa hao a qalang ho utlwa ka yona ebe le ithuta ka naha eo.", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Kenya mosebetsi ona ho @global.my_relaxes", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Kgethang papadi kapa boikwetliso boo le bo etsang mmoho. Etsang qeto ya hore na le tla bapala le ho ikwetlisa neng. Na etlaba letsatsi le letsatsi? Ka nako e kae? \n\nDi lekeng ka beke. Ha beke e fela, ipotse le ho botsa lelapa la hao dipotso tsena:\n* Ho ya jwang? \n* Le ikutlwile jwang ha beke e qala? \n* Le ikutlwa jwang ha beke e fela? \n* Re ka etsa dintho ka tsela e fapaneng jwang bekeng e tlang?", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "Listen and relax", - "text": "Mamela mme o theole moya", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Wena le motjha wa hao le ka hlophisa letoto la baeti la batho ba tummeng bao kannete le ka ratang ho ba mema phathing. Ka bomong le ka ba le batho ba bahlano – ekaba batho ba nakong e fetileng kapa ba hona jwale. Le ka mema mang? Hona na baeti ba lona ba tla utlwana hantle?", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Bala mme o theole moya", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Buisana le motjha wa hao ka ntho eo a e ratang.\n\nEkaba ka eng kapa eng eo a kgethang ho bua ka yona: dipapadi, metswalle, mmino, dikgalala...\n\nLeka ho mamela motjha wa hao mme o mo fe monyetla wa ho bua.", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "O kgalala!\n\nLetsatsi le letsatsi, elellwa ntho e itseng eo o e entseng hantle. Iputse ka ntho e o thabisang. Mme o hemele hodimo hore o theole moya.", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Le tle ka mefuta e meraro ya boikwetliso mmoho. Ka mohlala, ho tsamaya, ho torota, ho bapala bolo kapa ho tantsha.\n* E kgetheng hammoho mme le leke hape. \n* Haeba kaofela le e rata, etsang qeto ya hore na le tla e etsa hangata hakae. Hang kapa habedi ka beke? Hoseng ho hong le ho hong?\n* Nahanang le le mmoho ka ditsela tsa ho ithabisa le ho feta. Na le ka torota ho ya fihla boholeng bo itseng? Tjhentjhanang ka ho ba mokwetlisi? Kgothatsanang ka meputso e menyane ya mahala?", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "Rea o amohela @fields.user_name", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Tjhentjhanang ka ho ba “baetapele”. Phokola ka polelo e tla arabelwa ke bohle. Ebe “moetapele” o fana ka ditaelo ebe bohle ba di latela kapele kamoo ba ka kgonang:\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Thetsa ntho e kgubedu.” \n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Qhoma qhoma ka makgetlo a leshome.”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Beha dieta ka rakeng ya dieta.”", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again!", - "text": "Re thabela ho o bona hape!", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Kgetha mopheti wa pale hore a qala ho pheta pale.\n* Bamamedi ba pale ba ka mo kena hanong neng kapa neng.\n* Mopheti wa pale o tlameha ho kenya lentswe leo paleng ya hae.\n* Ha mopheti wa pale a qetile, leka ka mopheti e mong wa pale!", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "E re re bone hore na beke ena e tsamaile jwang.", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Qala pale ka “Ba re enere…”\n* E re motjha wa hao a bolele polelo e latelang.\n* Ebe o bopa polelo.\n* Tjhentjhanang ho fihlela le qapile pale e monate e ntjha.\n* Tiisa hore pale e fela hamonate.\n* Botsa motjha wa hao hore na karolo eo a e ratileng haholo ya pale ena ke efe!", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Bekeng ena o entse...", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Motho wa pele o re, “Ka Moqebelo, ke ya… (ka mohlala, ke ya phakeng)”\n* Motho wa bobedi o tlatsa motho wa pele, “Ka Moqebelo, ke ya phakeng le… (ka mohlala, ho etela motswalle wa ka e moholo).\n* Motho ka mong o tlatsa ya buileng pele, o leka ho nahana ka dintho tsohle tse monate tse ka etswang ka Moqebelo.", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "O bontsha boikemisetso ka tsela eo ba ho ba motswadi le ho itlhokomela.\n\nWa babatseha.", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Papadi ena e ka bapalwa ka dipara kapa ka batho ba bangata sehlopheng.\n* Emang le shebane kapa le entse lesakana. \n* Motho a le mong o a qala mme bohle baa mo etsisa, ba leka ho tsamaya ka nako e tshwanang le moetapele.\n* Tiisa hore moetapele o tsamaya butle hore bohle ba kgone ho mo latela! Ithute ho tsamaisa ditho tse sa tshwanang tsa mmele le maemong a sa tshwaneng.\n* Kamora nako, tjhentjanang ka hore na ke mang ya etellang pele. O fe bohle monyetla wa ho etella pele.\n* E etseng ho se na ya etellang pele!", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "E Shebelleng Mmoho", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Motho wa pele o kgetha kapa o phokola pina.\n* Bohle ba tlameha ho hakanya lebitso la pina (ho thatafatsa dintho ba ka hakanya hore na sebini ke mang).\n* Wa pele ya hakanyang mme a nepa e ba moetapele ya latelang.", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video together!", - "text": "A re shebelle video mmoho!", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Ena ke papadi e batlang bonyane batho ba 3.\n* Qala sedikadikwe mme o fetise “senepe” se le seng lesakaneng (kapa o “ope diatla” kapa o letse menwana).\n* O ka “letsa menwana” hang ho lahla “senepe”, le hang ho se kapa. Sheba motho eo o mo akgellang sona. \n* Tsela (hodimo, tlase, otlolohile, matswedintsweke, ho ipitika fatshe) le matla (a maholo, habonolo, a itekanetseng) tsa ho lahlela senepe fatshe di ama kamoo motho e mong a ka se kapang kateng. \n* O ka lahlela “senepe” fatshe, wa se akgela moyeng, mme wa se kapa ka makgetlo a mmalwa pele o se fetisa. \n* Ha bohle ba ipabola papading ena, le ka qala ho tsamaya ka kamoreng, o ntse o fetisa “senepe”. \n* O ka se lahlela tlasa leoto? Kamorao mokokotlong? Ka hlooho? Ho kgaoletsa se fetiswang? Thabelang ho bapala ka “senepe”!", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Shebella", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Letsatsi la kajeno le fella mona, nka motsotsonyana hore:\n\n* O buisane le motjha wa hao ka ntho e le nngwe eo thabisang eo a e entseng. \n* O ipabatse ka ntho e le nngwe eo o e entseng hantle kajeno. \n* O kgalala!", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "A re shebelle video!", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Nahana ka matla a maholo. Ka mohlala, ho ya kae kapa kae ka ho panya ha leihlo, ho tsamaya ka nako, ho bala dikelello. \n* Botsa motjha wa hao, “Haeba o ne o na le matla a maholo a ho […], o ne o tla a sebedisa jwang?”\n* Mo kgothalletse hore a ithehe lebitso la mohale e moholo mme a mo etsise ka diketso. \n* Jwale e re motjha wa hao a o kgethele matla a maholo.\n* Tiisa hore le wena o etsisa matla a hao a maholo!", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Re thabela ho o bona hape! A re qale ka pina e binwang ke malapa hohle.", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Nahana ka maemo a fapaneng. Ka mohlala, ho kganna koloi, ho sesisa sekepe kapa ho fofisa sefofane.\n* Bolella motjha wa hao ebe o mo botsa potso ena, “O ka rata ho etsa efe?”\n* Mo botse hore na hobaneng?\n* Nahana ka maemo a mang a mararo kapa o kope motjha wa hao hore a etse le wena.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "A re Theole Moya", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Phetela motjha wa hao ho hong ho etsahetseng ha o ne o le motjha. Ke dintho dife tse neng di le siyo ka nako eo? Difouno tse nang le inthanete? Le ne le ithabisa ka ho etsang? Ke dintho dife tseo o neng o kgathatseha ka tsona? O ska kgathatseha ha ba sa o bolelle letho – ntho ya bohlokwa ke hore ba mamele mme ba hopole. Ka dinako tse ding batjha ba rona baa lebala hore batswadi ba bona le bona ke batho!", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "O phethile wekshopo ya beke ena.", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Nahana ka dipolelo tse tharo tse amanang le wena. Tse pedi ebe nnete mme e le nngwe e lokela ho ba leshano.\n* Ho ka thusa ho nahana ka ditabatabelo, ditakatso, boiphihlelo sekolong, tseo le di ratang le tseo le sa di rateng. Ka mohlala: ke hloile dibanana, thuto eo ke e ratang ke ya saense, mme kannete ke lakatsa eka nka kgona ho bina. \n* Di bolelle motjha wa hao mme o mo kope hore a hakanye hore na ke efe eo e leng leshano. \n* Na o hakantse ka nepo? Na o o hlahile lesumatha?\n* Mme o mo kope ho etsa se tshwanang. Na o ile ea ithuta ntho e nngwe e ntjha e mong ka e mong?", "type": "template", "note": "" }, { - "SourceText": "See you soon.", - "text": "Re tla o bona haufinyane.", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Nahana ka tsebo e ntjha eo o ka ithutang yona le motjha wa hao. Ka mohlala, ho tiisa hore bolo ha e wele fatshe kapa ho phahamisa leoto, ho kapa dibolo tse ngata, ho pheha sopho?\n* Tjhentjhana ka ho leka tsebo e ntjha.\n* Tiisang hore le ya babatsana, mme le leke ho ithuta le ho bapala mmoho!", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Buisanang", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Botsanang dipotso. Ekaba dipotso dife kapa dife tse amanang le dintho tseo le di ratang kapa seo le se entseng kajeno.\n* Molao ke hore o ke ke wa araba ka “E”, “Tjhe” kapa “Mohlomong”.\n* O ka nka nako e kae? O ka qapa dikarabo tse kae?\n* Tjhentjhanang mme le bapale hape!", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Eletsanang, tshehetsanang!", + "SourceText": "Home", + "text": "Leqephe le Qalang", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "E Lekeng Hammoho", + "SourceText": "Settings", + "text": "Diseting", "type": "template", "note": "" }, { - "SourceText": "Let's practice together.", - "text": "A re prakthiseng hammoho.", + "SourceText": "Template", + "text": "Thempleite", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Ho prakthisetsa lapeng ke tsela eo re ntlafatsang bophelo ba malapa a rona kateng. Empa hangata seo se ba le mathata.\n\nA re phetelaneng dintho tseo re atlehileng ho tsona le mathata ao re thulaneng le wona, mme re thusaneng ho fumana ditsela tse ntjha tsa ho iteka!", + "SourceText": "How to use @global.parent_app", + "text": "Mokhoa oa ho sebelisa @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Nahana kamoo mesebetsi ya hao ya lapeng e tsamaileng kateng bekeng ena.\n\nTjhentjhanang ha le tshohla:\n* Ke eng e tsamaileng hantle hona bothata ebile eng? \n* Le ka nahana ka ditharollo dife mmoho? \n* Kgethang tharollo e le nngwe mme le e leke hamorao ka batjha ba lona! \n\n(Kapa le ka e prakthisa hona jwale hore ho be bonolo hamorao!)", + "SourceText": "In-Week Messages", + "text": "Melaetsa ya Bekeng", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Mohlala wa puisano e tswang ho @data.workshop.w_1on1.title", + "SourceText": "Campaigns", + "text": "Matsholo", "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." + "note": "" }, { - "SourceText": "Start Positively Together", - "text": "Qalang le Kgothetse Mmoho", + "SourceText": "Notifications", + "text": "Ditsebiso", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "Rea o amohela @fields.group_name", + "SourceText": "You have successfully entered developer mode.", + "text": "O kentse ka katleho developer mode.", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Ke thabela ho o bona hape! \n\nA re qale ka ho o hlokomela.", + "SourceText": "You have entered an incorrect code.", + "text": "O kentse khoutu e fosahetseng.", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Tjhentjhanang:\n* Bolellanang: O ikutlwa jwang kajeno?\n* Babatsa motho e mong sehlopheng sa hao ha a entse ntho e itseng hantle bekeng eo!\n\nHopola hore ho sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona. O tshwanelwa ke pabatso.", + "SourceText": "About @global.parent_app", + "text": "Mabapi le @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Ideas from other families:", - "text": "Maikutlo a malapa a mang:", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_centre e ile ya qapuwa ke Parenting for Lifelong Health (PLH) – e tswetsweng ke ho ikopanya ha ditsebi tsa botswadi lefatsheng lohle ho tswa UNICEF, WHO le Diyunivesithing tsa Afrika Borwa le UK, hammoho le diNGO le malapa le batjha hohle Afrika. Batswadi le batjha ba sebeditse le rona epong ena mme ba re thusitse ho netefatsa hore ho bonolo ho e sebedisa, ebile ke ntho e monate e kgathollang. Tse ding tsa dikahare tse epong ena, jwaloka ditshisinyo tsa mesebetsi le dipale tse tshwantsheditsweng, di ile tsa qapuwa ke batswadi le batjha ho tiisa hore e tshwanela ditlhoko tsa malapa.\n\nParenting for Lifelong Health (PLH) e ikemiseditse ho tshehetsa dingolwa le mananeo a mahala le a abelanwang a botswadi, ho tshehetsa batswadi lefatsheng ka bophara ho kgothalletsa boiketlo ba bana ba bona.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Question Time", - "text": "Nako ya Dipotso", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Ka ho tobetsa konopo e ka tlaase o tla seta epo botjha hore e kgutlele ho diseting tsa mathomo.\n\nSena se bolela hore kgatelopele yohle ya hao le datha ya tshebediso e tla hlakoleha mme epo e tla sebetsa jwalokaha eka e sa tswa instolwa ka lekgetlo la pele.\n\nTLHOKOMEDISO: Ho seta botjha epo ke ketso e sa etsollweng ebile o ke ke wa kgona ho fumana tlhahisoleseding efe kapa efe hape.", "type": "template", "note": "" }, { - "SourceText": "It's time for some questions!", - "text": "Ke nako ya dipotso!", + "SourceText": "Open Survey", + "text": "Bula Patlisiso", "type": "template", "note": "" }, { - "SourceText": "Listen Together", - "text": "Mamelang Hammoho", + "SourceText": "Select Language", + "text": "Kgetha Puo", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio together!", - "text": "A re mamele rekoto ena hammoho!", + "SourceText": "Workshop Options", + "text": "Dikgetho tsa Wekshopo", "type": "template", "note": "" }, { - "SourceText": "Listen", - "text": "Mamela", + "SourceText": "Reset App", + "text": "Seta Epo Botjha", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "A re mamele rekoto ena!", + "SourceText": "Demo Presentation", + "text": "Nehelano ya Mohlala", "type": "template", "note": "" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Hobaneng @local.workshop_data.title?", + "SourceText": "Organisation Registration", + "text": "Ngodiso ya Mokgatlo", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "" }, { - "SourceText": "Hear Sbo's message", - "text": "Molaetsa wa Sbo ke ona", + "SourceText": "Developer Mode", + "text": "Developer Mode", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Bala molaetsa wa Sbo", + "SourceText": "Unlock all workshops", + "text": "Notlolla diwekshopo tsohle", "type": "template", "note": "" }, { - "SourceText": "Today's steps", - "text": "Mehato ya kajeno", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Ka ho tobetsa konopo e katlase o tla notlolla diwekshopo tsohle.\n\nTLHOKOMEDISO: Basebedisi ha baa lokela ho sebedisa tshebetso ya ho notlolla diwekshopo, sena ha se kgothalletswe ntle le haeba kannete seo se hlokahala.", "type": "template", "note": "" }, { - "SourceText": "Read Together", - "text": "Balang Hammoho", + "SourceText": "Unlock workshops", + "text": "Notlolla diwekshopo", "type": "template", "note": "" }, { - "SourceText": "Let's read a story together!", - "text": "A re bale pale hammoho!", + "SourceText": "All workshops are now unlocked.", + "text": "Hona jwale diwekshopo tsohle di notlolotswe.", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "A re baleng pale!", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Ho lahleheloa ke moratuoa ho ka utloahala o kare o hloletsoe. Mona ke litlhahiso tse 'maloa tse u lokelang ho li hopola ho tla ho o thusa.", "type": "template", "note": "" }, { - "SourceText": "Think Together", - "text": "Nahanang Hammoho", + "SourceText": "Ask for help", + "text": "Kopa thuso", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Ke nako ya ho nahana hammoho!", + "SourceText": "Say goodbye", + "text": "Salisa hantle", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Nahana", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "- Kopa thuso ho motho eo u mo tshepang - lijo kapa tlhokomelo ea bana e ka ba molemo. U ka hloka litokomane bakeng sa lefa, bakeng sa bana ba hau, kapa ho fumana litshebeletso.\n- Ka nako e 'ngoe batho ba leka ho nka chelete kapa lefa ho motho ea saretsoeng. Fumana ka litokelo tsa hau.", "type": "template", "note": "" }, { - "SourceText": "It's time to think!", - "text": "Ke nako ya ho nahana!", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "- Ho salisa hantle ho thata. Etsa seo u ikutloang se le molemo ho uena le mocha oa hau.\n- Malapa, bacha le batsoali ha ba phethahala. Ha motho a hlokahetse, ho loketse ho bua ka lintho tse ntle le tse mpe tseo re li hopolang.\n- Ho ka thusa ho ngola lengolo kapa ho etsa setšoantšo bakeng sa motho ea tsamaileng.\n- Batho ba bang ba etsa mokete kapa ba ja lijo tse ikgethang ho keteka motho, mme ba salise hantle.\n- Ho ka thusa ho etsa lebokose la mehopolo, ho beha lintho tse u hopotsang uena le mocha oa hau ka motho eo.\n- Ho ka thusa ho bua ka motho feela ha u nahana ka eena.", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Ithuteng Hammoho", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Ho lahleheloa ke motsoalle kapa moratuoa ho thata ho batho bohle. Ho ba mosa ho uena le ho etsa lintho tse tla ho thusa ho tsoelapele nakong ena e thata ho thusa le ngoana oa hao ea lilemong tsa bocha!", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice together!", - "text": "Ke nako ya ho ithuta le ho prakthisa mmoho!", - "type": "template", + "SourceText": "Take care of yourself", + "text": "itlhokomele", + "type": "template", "note": "" }, { - "SourceText": "Learn", - "text": "Ithute", + "SourceText": "Find a support group", + "text": "Thola sehlopha sa tshehetso", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice!", - "text": "Ke nako ya ho ithuta le ho prakthisa!", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "- Ho sareloa ho ka re ama ka libeke kapa likhoeli kapa lilemo. Ha ho hlokahale hore u ikutloe u le betere kapele.\n-Phomola ka ho lekana, ebile o je ka ho lekana - ho thata ho hlokomela bacha ha u khathetse mme u lapile.\n- Etsa lethathamo tsa lintho tse etsang hore u ikutloe u le betere, mme u li etse.\n-Leka ho etsa ntho e le 'ngoe e bonolo ho phomola ka letsatsi le leng le le leng le mocha oa hau, le ka bakeng sa hao.\n- Ho lokile ho se ikutloe hantle mme ho lokile le ho lla. Le ka mohla u se ke ua ipeha molato, hona hase molato oa hao.\n-Ho na le tšepo kamehla le ka mora tahlehelo. Leka ho natefeloa ke lintho tse bonolo, mme u nke motsotso ho etsa ho hong ho monate kapa ho phomola le ngoana oa hau.\n-Fumana motho e moholo a le mong kapa ba babeli ba ka u tšehetsang, ba u mamele, hape ba bue le uena.", "type": "template", "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Fetola @global.parent_app", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "- Ho bua le motho o ka ho tshehetsang, hape a ho mamele ho ka thusa.\n- Ho ka thusa ho kena sehlopheng sa batho bao le bona ba lahlehetsoeng ke motho.\n- Ha ho motho ea phethahetseng. Ho lokile ho bua ka mehopolo e metle le e mebe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Give me quick parenting tips", - "text": "Mphe dikeletso tsa botswadi tse potlakileng", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Bacha ba sebetsana le mesarelo ka litsela tse fapaneng, joalo ka batho ba baholo. O ka ba thusa ho utloisisa boemo le maikutlo a bona, ka ho etsa libaka tse bolokehileng moo le ka khonang ka bobeli ba lona ho arolelana le ho utloisisa tahlehelo.", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Ho etsahetse ntho e mpe haholo", + "SourceText": "Be honest", + "text": "Tshepahala", "type": "template", "note": "" }, { - "SourceText": "I have technical problems with the app", - "text": "Ke na le bothata ba setekgenike ka epo ena", + "SourceText": "My teen's response", + "text": "Karabo ea mocha oa ka", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "O tla fumana dikeletso tseo re nahanang hore o ka di fumana di le molemo mona, ho itshetlehile ka dikarabo tsa hao ho customisation ya epo.", + "SourceText": "How to support my teen?", + "text": "Na nka tshetsa mocha oa ka joang?", "type": "template", "note": "" }, { - "SourceText": "WHO Website", - "text": "Webosaete ya WHO", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "- Bolella mocha oa hao hore motho o hlokahetse - ka nako e nngoe ha ba hlokomela.\n- Ho bolela ke ts'ebetso, eseng ketsahalo. O ka hloka ho ba bolella kgafetsa le kgafetsa.\n- Sebelisa mantsoe ao ba a utloisisang.\n- Haeba bacha ba banyane ha ba utloisise hore na lefu ke eng, ba thuse ka ho hlalosa hore motho eo ba mo ratang ha a kgutle. Leka ho se bitse lefu ka hore ke 'boroko', kapa 'ho robala', kapa 'leeto'.\n- Bacha ba baholoanyane ba ka utloisisa hore na lefu ke eng, empa ba ka nna ba sokola ho hlalosa maikutlo a bona, kapa ka ho laola maikutlo a bona.\n- Bacha ba ka araba ka litsela tse fapaneng: ho lla, ho hoeletsa, ho se lumele kapa ho thula haholo. Tsohle tsena li lokile. O ba bolelle hore o teng, o nale bona.\n- Lumella lipotso le ho bua. Tshepahala. Ho lokile ho bua ha re sa tsebe.", "type": "template", "note": "" }, { - "SourceText": "UNICEF Website", - "text": "Webosaete ya UNICEF", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "-Bacha ba ka 'na ba hlonama, ba halefa, ba se utloisise kapa ba se lumele, ba ikutloe ba tsielehile, ba ikutloa ba sa phele hantle kapa ba nale mahlaba, litoro tse tshosang kapa mathata sekolong. Mocha oa hao a ka ’na a bonahala a thabile, empa a ntse a hloname. Ba ka 'na ba koalloa 'me ba batla ho qeta nako e eketsehileng le metsoalle. Li ka boela tsa bontsha boitshoaro bo sa lebelloang kapa bo kotsi. Tsena li ka 'na tsa se ke tsa utloahala ho uena, empa tsohle tsena li tloaelehile.\n- Bacha ba ka 'na ba ikutloa eka ke molato oa bona - hore ba fetisitse kokoana-hloko, kapa hore ba itshoere hampe. Ba bolelle ka ho hlaka hore ha baa etsa letho le phoso.", "type": "template", "note": "" }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Ho thata ho ba motswadi nakong ya COVID. Ikotle sefuba hobane o kgonne ho tla fihlela mona.\n\nRe sebetsana le dikateng tse ntjha mona ho o tshehetsa ka ho buisana le batjha le bana ba hao ka COVID.\n\nTlhahisoleseding e nakong ka ho fetisisa e amanang le COVID-19 e ka fumanwa websaeteng ya WHO le ya UNICEF:", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "- Hlalosa hore ho sareloa ho tla le maikutlo a mangata le liketso. Bontsha ngoana oa hau hore oa ratoa le ho hlokomeloa, 'me u mo khothalletse ho arolelana maikutlo a hae ka ho bua, ho ngola kapa ho taka.\n- Haeba ho na le sehlopha sa ts'ehetso seo mocha oa hau a ka bang karolo ea sona, sena se ka thusa.\n-Haeba mocha a bua ka ho batla ho intsha kotsi kapa ho ipolaea, kopa thuso ho motho e mong kapele kamoo u ka khonang.\n-Haeba u khona, boloka mekhoa ea hau e tloaelehileng ea letsatsi le letsatsi, sena se ka tshelisa bacha.\n- Ho ka thusa bacha ho ba karolo ea meetlo mabapi le lefu - ho khetha pina kapa seo ba ka se buang.\n-Ho qeta metsotso e seng mekae letsatsi le leng le le leng u tsepamisitse maikutlo ho mocha oa hau ho thusa ho etsa hore a ikutloe a sireletsehile haholoanyane le ho mo fa monyetla oa ho phomola kapa ho bua ka lintho tse mo khopisang.", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Konopo ena e tla o lebisa karolong ya Coronavirus ya webosaete ya semolao ya WHO.", + "SourceText": "How did it go?", + "text": "Bo tsamaile jwang?", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "SourceText": "Reply", + "text": "Araba", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Konopo ena e tla o lebisa karolo ya Coronavirus ya webosaete ya semolao ya UNICEF.", + "SourceText": "Timer", + "text": "Sebolokanako", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "URL ke https://www.unicef.org/coronavirus/covid-19", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Tobetsa kgutlotharo ho o thusa ho tiisa hore puisano ena e fella ho metsotso e @local.timer_duration.", + "type": "template", + "note": "The string @local.timer_duration should not be translated." + }, + { + "SourceText": "Video", + "text": "Video", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Kenya dintlha tsa moraorao tsa boiphihlelo ba ka ba botswadi", + "SourceText": "You selected less than @local.threshold", + "text": "O kgethile katlasa @local.threshold", + "type": "template", + "note": "The string @local.threshold should not be translated." + }, + { + "SourceText": "Start Positively Together", + "text": "Qalang le Kgothetse Mmoho", "type": "template", "note": "" }, { - "SourceText": "Update my personal details", - "text": "Kenya dintlha tsa ka tsa moraorao tsa botho", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Ke thabela ho o bona hape! \n\nA re qale ka ho o hlokomela.", "type": "template", "note": "" }, { - "SourceText": "Update my workshop options", - "text": "Kenya dikgetho tsa ka tsa moraorao tsa wekshopo", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Tjhentjhanang:\n* Bolellanang: O ikutlwa jwang kajeno?\n* Babatsa motho e mong sehlopheng sa hao ha a entse ntho e itseng hantle bekeng eo!\n\nHopola hore ho sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona. O tshwanelwa ke pabatso.", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "Na o tobane le mathata a setekgenike? Re tsebise mme o re thuse ho ntlafatsa @global.parent_app!", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Ka li nako tse ling, rona bohle re nale ho ba le menahano e mebe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Type your name (optional)", - "text": "Thaepa lebitso la hao (ka boithatelo)", + "SourceText": "\"I am a failure\"", + "text": "\"Ke mo hlolehi\"", "type": "template", "note": "" }, { - "SourceText": "Contact me on @global.whatsapp", - "text": "ikopanye le nna ho @global.whatsapp", + "SourceText": "What to do?", + "text": "Ke eng se o lokelang ho se etsa?", "type": "template", - "note": "The string @global.whatsapp should not be translated." + "note": "" }, { - "SourceText": "Type your phone number", - "text": "Thaepa nomoro ya hao ya mohala", + "SourceText": "Examples", + "text": "Mehlala", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Ikopanye le nna ka imeile", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Ho bolella uena kapa ngoana oa hao hore u khaotse kapa u bue se fapaneng le seo hangata ha ho thuse.", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Thaepa aterese ya hao ya imeile", + "SourceText": "\"I do everything perfectly\"", + "text": "\"Ke etsa tsohle ka botlalo\"", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Re bolelle ditaba tseo o tobaneng le tsona", + "SourceText": "Instead, you can ask:", + "text": "ka tsela enngoe, o ka botsa:", "type": "template", "note": "" }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Ka lekgetlo la pele ha mme wa ka a nkopa ho qeta nako le yena, ke ile ka mo bolella hore a kgaohane le nna hobane ke ne ke ntse ke bapala game. Empa o ile a tsitlella hobane ke mokgwa wa hae. Ke ile ka mo bolella hore a ka ntjhebella ha ke bapala haeba ke seo a se batlang. Kamora metsotso e seng mekae o ile a qala ho mpotsa dipotso ka game eo. Qalong ke ile ka utlwa a ntena, empa kamora nakwana ke ne ke thabile hobane o ne a thahasella dintho tseo ke di etsang. O ile a ba a leka ho e bapala!", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "-Na mohopolo oo ke oa sebele? Litlhaloso tse ling ke life?\n- Ho etsahala'ng haeba ke tsoela pele ho lumela mohopolo ona?\n - Ke ke tla re'ng ho motsoalle haeba a ne a e-na le mohopolo ona?", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "Ntate wa ka o ile a mpolella hore ke bapala basketeball haholo ha sekolo se tswa, kahoo re tlameha ho qala melao ya lelapa. O ile a ntshepisa hore re tla nahana ka tharollo re le mmoho, kahoo ka bobedi ba rona re ile ra rata taba eo. Ke ne ke sa nahane hore seo se ka kgoneha, empa ka re, \"Ho lokile, a re leke\". Re ile ra buisana mme ra dumellana hore molao ke hore ke dumeletswe ho bapala basketball kamora ho etsa homeweke le ho fihlela re ja dijo tsa tinare. Ho thata hore ke bone metswalle ya ka e bapala ha sekolo se tswa, kahoo ke ikitlaelletsa ho qeta homeweke ya ka pele ebe kea tsamaya ke ilo bapala le bona. Hape hona jwale ke kgona ho qeta nako ya mantsiboya ke etsa dintho tse ding tseo ke di batlang kamora hore lelapa le je dijo tsa tinare jwaloka ho shebella basketball ho NBA.", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "Sena se boima, empa o leka kahohle kamoo o ka khonang, 'me re tla sebetsa 'moho ho fumana tharollo\"", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "O tla fumana melaetsa ya bekeng ena ho tswa diwekshopong tse fetileng mona.", + "SourceText": "\"It’s your fault\"", + "text": "\"Ke molato oa hau\"", "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"Ha re tle ka tharollo 'moho\"", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "O ka thabela ho etsa wekshopo ena jwang?", + "SourceText": "\"I lost my job\"", + "text": "\"Ke lahlehetsoe ke mosebetsi\"", "type": "template", "note": "" }, { - "SourceText": "Coming soon", - "text": "E tla haufinyane", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Ke ithutile ho hongata mosebetsing oa ka - seo se tla nthusa ho fumana o mong\"", "type": "template", "note": "" }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Re tla tlameha ho tshohla ditaba tse ding tsa botswadi pele re qala ho sebetsa ka @local.workshop_data.title.\n\nO ka fumana dithulusi tsa bohlokwa ho @local.workshop_data.title ka @global.parent_centre.", + "SourceText": "\"Nobody likes me\"", + "text": "\"Ha ho motho ea nthatang\"", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "note": "" }, { - "SourceText": "My name", - "text": "Lebitso la ka", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "\"Bekeng e fetileng ke bile le nako e monate le...\"", "type": "template", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "Letsatsi la @global.weekly_workshop", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Li ntho tse mpe li lula li nketsahalla kamehla\"", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "I do the workshops...", - "text": "Ke etsa diwekshopo...", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Ntho ena e ntle e etsahetse ka letsatsi le leng le fetileng...\"", "type": "template", "note": "" }, { - "SourceText": "My group's name", - "text": "Lebitso la sehlopha sa ka", + "SourceText": "Change", + "text": "Phetoho", "type": "template", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "Hona jwale sehlopha sa ka se etsa wekshopo...", + "SourceText": "You’ve completed this week’s workshop.", + "text": "O phethile wekshopo ya beke ena.", "type": "template", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Hona jwale ke etsa wekshopo...", + "SourceText": "Read along", + "text": "Bala hammoho", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "Na o tiile o batla ho notlolla diwekshopo tsohle? Hang ha o entse jwalo, o ke ke wa kgona ho di notlela hape", + "SourceText": "See you soon.", + "text": "Re tla o bona haufinyane.", "type": "template", "note": "" }, @@ -630,8240 +642,8150 @@ "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Kenya mosebetsi ona ho @global.my_activities", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Bekeng e tlang, o tla buisana le sehlopha sa hao hore na boikwetliso ba lapeng bo tsamaile jwang. Hape le ka tshehetsana le ho hopotsana matsatsing a beke.", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Dintho tseo o ka di etsang ho ikgatholla", + "SourceText": "Home Practice", + "text": "Boikwetliso ba Lapeng", "type": "template", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Ntho e monate eo o ka e etsang le motjha wa hao", + "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "text": "Diketso tse nyane, diphetho tse kgolo! Batswadi ba sebedisang tsebo eo ba e fumaneng wekshopong ha ba le lapeng ba fumana diphetho tse ntle.", "type": "template", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Ha o eso kenye dintho dife kapa dife tsa ho ikgatholla ho @global.my_relaxes. Ho ka ba jwang hore o di kgethe?", + "SourceText": "Hear a teen's testimonial", + "text": "Mamela bopaki ba mocha", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Ha o eso kenye dintho dife kapa dife tseo o ka di etsang ho @global.my_activities. Ho ka ba jwang hore o di kgethe?", + "SourceText": "Read a teen's testimonial", + "text": "Bala bopaki ba mocha", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Open Survey", - "text": "Bula Patlisiso", + "SourceText": "talk to their teens about how they feel", + "text": "buisana le batjha ba bona kamoo ba ikutlwang kateng", "type": "template", "note": "" }, { - "SourceText": "Select Language", - "text": "Kgetha Puo", + "SourceText": "talk to your teen about how you feel", + "text": "buisana le motjha wa hao hore na o ikutlwa jwang", "type": "template", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Dikgetho tsa Wekshopo", + "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "text": "Na o bile le efe kapa efe ya diphephetso tsee ha o leka @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "Unlock Workshops", - "text": "Notlolla Diwekshopo", + "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", + "text": "Ke eng e bileng boima ho wena ha o leka ho @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "Demo Presentation", - "text": "Nehelano ya Mohlala", + "SourceText": "Sorry we missed this!", + "text": "Re maswabi hore ha rea lemoha taba ena!", "type": "template", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Ngodiso ya Mokgatlo", + "SourceText": "Do you want to share it with us?", + "text": "Na o ka thabela ho re phetela yona?", "type": "template", "note": "" }, { - "SourceText": "Developer Mode", - "text": "Developer Mode", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Rea leboha ka hore o re phetele phephetso ya hao! Re tla sebedisa tlaleho ena ho ntlafatsa @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Unlock all workshops", - "text": "Notlolla diwekshopo tsohle", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Re maswabi ho utlwa hore dikeletso tsena ha dia ka tsa o thusa.", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Ka ho tobetsa konopo e katlase o tla notlolla diwekshopo tsohle.\n\nTLHOKOMEDISO: Basebedisi ha baa lokela ho sebedisa tshebetso ya ho notlolla diwekshopo, sena ha se kgothalletswe ntle le haeba kannete seo se hlokahala.", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "Na o ka thabela ho re phetela seo o nahanang hore se ka o thusa?", "type": "template", "note": "" }, { - "SourceText": "Unlock workshops", - "text": "Notlolla diwekshopo", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Kea leboha ka ho re bolella taba ena! O motswadi wa mmakgonthe ka ho leka ho qeta nako le motjha wa hao. Ruri seo se etsa phapang. Pele ya pele ka mosebetsi o motle, mme o hopole, kamehla ke teng ho o tshehetsa!", "type": "template", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Hona jwale diwekshopo tsohle di notlolotswe.", + "SourceText": "Language", + "text": "Puo", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Ka ho tobetsa konopo e ka tlaase o tla seta epo botjha hore e kgutlele ho diseting tsa mathomo.\n\nSena se bolela hore kgatelopele yohle ya hao le datha ya tshebediso e tla hlakoleha mme epo e tla sebetsa jwalokaha eka e sa tswa instolwa ka lekgetlo la pele.\n\nTLHOKOMEDISO: Ho seta botjha epo ke ketso e sa etsollweng ebile o ke ke wa kgona ho fumana tlhahisoleseding efe kapa efe hape.", + "SourceText": "Learn Together", + "text": "Ithuteng Hammoho", "type": "template", "note": "" }, { - "SourceText": "Reset App", - "text": "Seta Epo Botjha", + "SourceText": "It's time to learn and practice together!", + "text": "Ke nako ya ho ithuta le ho prakthisa mmoho!", "type": "template", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "O kentse ka katleho developer mode.", + "SourceText": "Learn", + "text": "Ithute", "type": "template", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "O kentse khoutu e fosahetseng.", + "SourceText": "It's time to learn and practice!", + "text": "Ke nako ya ho ithuta le ho prakthisa!", "type": "template", "note": "" }, { - "SourceText": "Language", - "text": "Puo", + "SourceText": "Listen Together", + "text": "Mamelang Hammoho", "type": "template", "note": "" }, { - "SourceText": "How did you hear about @global.parent_app?", - "text": "O utlwetse ka @global.parent_app jwang?", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "I found it myself", - "text": "Ke iphumanetse yona", + "SourceText": "Let's listen to an audio together!", + "text": "A re mamele rekoto ena hammoho!", "type": "template", "note": "" }, { - "SourceText": "A friend or family", - "text": "Ka motswalle kapa lelapa", + "SourceText": "Listen", + "text": "Mamela", "type": "template", "note": "" }, { - "SourceText": "Other", - "text": "Ho hong", + "SourceText": "Let's listen to an audio!", + "text": "A re mamele rekoto ena!", "type": "template", "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "O ka nna wa kopuwa ho romela khoutu ena ho batho ba tla o tshehetsa leetong la hao la @global.parent_app.", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Dumela @fields.user_name! Bekeng ena o entse:", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Last sync at: @local.sync_latest", - "text": "Lekgetlo la ho qetela la ho phera: @local.sync_latest", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Dumela @fields.user_name! Rea leboha ka ho sebedisa @global.parent_app le ka ho boikemisetso ba hao jwaloka motswadi. \n\nHopola ho tobetsa ho @global.parent_points!", "type": "template", - "note": "The string @local.sync_latest should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Sesebediswa sena ha se eso pherwe. Phera ho senola khoutu ya hao.", + "SourceText": "That’s wonderful!", + "text": "Ke ditaba tse monate ruri!", "type": "template", "note": "" }, { - "SourceText": "Sync now", - "text": "Phera hona jwale", + "SourceText": "Nice work!", + "text": "Mosebetsi o babatsehang!", "type": "template", "note": "" }, { - "SourceText": "Syncing...", - "text": "E a phera...", + "SourceText": "Your commitment is not taken for granted.", + "text": "Boitelo ba hao ha bo nkuwe e le ba lefeela.", "type": "template", "note": "" }, { - "SourceText": "You selected @local.threshold or less", - "text": "O kgethile @local.threshold kapa katlase", + "SourceText": "Keep up the good work!", + "text": "Pele ya pele ka mosebetsi o motle!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected more than @local.threshold", - "text": "O kgethile ho feta ho @local.threshold", + "SourceText": "This is lovely!", + "text": "Ke ditaba tse monate!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Reply", - "text": "Araba", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Oiphaphathe lehetleng. Kgau e a o tshwanela.", "type": "template", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Matsatsi a kgwedi e fetileng", + "SourceText": "Every @global.parent_point counts!", + "text": "@global.parent_point e nngwe le e nngwe e bohlokwa!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Days in the past week", - "text": "Matsatsi bekeng e fetileng", + "SourceText": "Relax now", + "text": "Phutholoha hona jwale", "type": "template", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "O kgethile katlasa @local.threshold", + "SourceText": "Did you relax already? Tap it!", + "text": "Na o se o phutholohile? Tobetsa!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Unlock for less than @local.threshold", - "text": "Notlolla bakeng sa katlase ho @local.threshold", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Ntho e thabisang eo o ka e etsang le motjha wa hao ke ena!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "O kgethile @local.threshold kapa ho feta", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Tswela pele ka @local.workshop_data.in_text_title", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Video", - "text": "Video", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Qala @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Timer", - "text": "Sebolokanako", + "SourceText": "Finish current workshop", + "text": "Qetela wekshopo ya hona jwale", "type": "template", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Tobetsa kgutlotharo ho o thusa ho tiisa hore puisano ena e fella ho metsotso e @local.timer_duration.", + "SourceText": "How did you hear about @global.parent_app?", + "text": "O utlwetse ka @global.parent_app jwang?", "type": "template", - "note": "The string @local.timer_duration should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Options", - "text": "Dikgetho", + "SourceText": "Other", + "text": "Ho hong", "type": "template", "note": "" }, { - "SourceText": "Home", - "text": "Leqephe le Qalang", + "SourceText": "I found it myself", + "text": "Ke iphumanetse yona", "type": "template", "note": "" }, { - "SourceText": "Settings", - "text": "Diseting", + "SourceText": "A friend or family", + "text": "Ka motswalle kapa lelapa", "type": "template", "note": "" }, { - "SourceText": "Template", - "text": "Thempleite", + "SourceText": "Quick Parenting Tips", + "text": "Diketso tse Potlakileng tsa Botswadi", "type": "template", "note": "" }, { - "SourceText": "Tour", - "text": "Lahlela Bofofu", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Ho hodisa batjha ho ka ba thata, mme ka dinako tse ding kaofela re hula ka thata.", "type": "template", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Melaetsa ya Bekeng", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Phephetso e ka sehloohong eo o tobaneng le yona ke efe hona jwale?", "type": "template", "note": "" }, { - "SourceText": "Campaigns", - "text": "Matsholo", + "SourceText": "My relationship with my teen is not good", + "text": "Kamano ya ka le motjha wa ka ha e ntle", "type": "template", "note": "" }, { - "SourceText": "Notifications", - "text": "Ditsebiso", + "SourceText": "My teen’s behaviour is difficult", + "text": "Boitshwaro ba motjha wa ka bo nthatafalletsa dintho", "type": "template", "note": "" }, { - "SourceText": "About @global.parent_app", - "text": "Mabapi le @global.parent_app", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ke ikutlwa ke imetswe, ke jewa ke bodutu, ke halefile", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_centre e ile ya qapuwa ke Parenting for Lifelong Health (PLH) – e tswetsweng ke ho ikopanya ha ditsebi tsa botswadi lefatsheng lohle ho tswa UNICEF, WHO le Diyunivesithing tsa Afrika Borwa le UK, hammoho le diNGO le malapa le batjha hohle Afrika. Batswadi le batjha ba sebeditse le rona epong ena mme ba re thusitse ho netefatsa hore ho bonolo ho e sebedisa, ebile ke ntho e monate e kgathollang. Tse ding tsa dikahare tse epong ena, jwaloka ditshisinyo tsa mesebetsi le dipale tse tshwantsheditsweng, di ile tsa qapuwa ke batswadi le batjha ho tiisa hore e tshwanela ditlhoko tsa malapa.\n\nParenting for Lifelong Health (PLH) e ikemiseditse ho tshehetsa dingolwa le mananeo a mahala le a abelanwang a botswadi, ho tshehetsa batswadi lefatsheng ka bophara ho kgothalletsa boiketlo ba bana ba bona.", + "SourceText": "I have money worries", + "text": "Ke kgathatsehile ka ditjhelete", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Finish current workshop", - "text": "Qetela wekshopo ya hona jwale", + "SourceText": "I worry about my teen’s safety", + "text": "Ke kgathatsehile ka polokeho ya motjha wa ka", "type": "template", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Ntho e thabisang eo o ka e etsang le motjha wa hao ke ena!", + "SourceText": "We often fight in our family", + "text": "Re dula re lwana lapeng", "type": "template", "note": "" }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Qala @local.workshop_data.in_text_title", + "SourceText": "I have a different problem…", + "text": "Ke na le bothata bo fapaneng…", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue @local.workshop_data.in_text_title", - "text": "Tswela pele ka @local.workshop_data.in_text_title", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Ho haha dikamano tse ntle ho qala ka ho qeta nako mmoho - esita le metsotso e 5 ka letsatsi e etsa phapang! Qalong, ho ka ba thata ho qeta nako mmoho, hobane kaofela re phathahane kapa mohlomong batjha ba rona ha baa thaba ka dinako tse ding. Empa ho qeta metsotso e 5 ka letsatsi le motjha wa hao ho etsa hore le tshepane. Leka ho botsa motjha wa hao hore na a ka thabela hore le etseng mmoho. Ekaba ntho e monate le e kgathollang le bakeng sa hao!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Dumela @fields.user_name! Bekeng ena o entse:", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "O ka fumana thuso e nngwe e amanang le tsela ya ho qeta nako ya boinotsing le motjha wa hao mona:", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Dumela @fields.user_name! Rea leboha ka ho sebedisa @global.parent_app le ka ho boikemisetso ba hao jwaloka motswadi. \n\nHopola ho tobetsa ho @global.parent_points!", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Batjha bohle ka dinako tse ding ba itshwara hampe! Ntho e le nngwe e ka thusang ke ho babatsa boitshwaro ba motjha neng kapa neng ha a etsa ntho e ntle – ho sa tsotellehe hore na e nyane hakae. Ho ka nna ha bonahala eka batjha ha ba batle ho babatswa empa bonneteng ba ntse ba e batla, ebile kannete baa e batla.", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "note": "" }, { - "SourceText": "That’s wonderful!", - "text": "Ke ditaba tse monate ruri!", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "O ka fumana thuso e nngwe mona tseleng ya ho kgothalletsa boitshwaro bo botle ka ho babatsa:", "type": "template", "note": "" }, { - "SourceText": "Nice work!", - "text": "Mosebetsi o babatsehang!", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Kannete hona jwale kgatello ya botswadi e hodimo. Re tseba hantle hore na bophelo bo ka ba thata hakae. Ho iketsetsa ntho e itseng ho ka o fokoletsa seterese. Eo ke tshwanelo ya hao! Mme ha o ikutlwa o imetswe, laola mmele wa hao ka ho hula moya butle, ka ho tebileng ka makgetlo a mahlano pele o araba. Batswadi ba bangata ba re seo se ba thusitse.", "type": "template", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Boitelo ba hao ha bo nkuwe e le ba lefeela.", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "O ka fumana thuso e nngwe e amanang le ho itlhokomela mona:", "type": "template", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Pele ya pele ka mosebetsi o motle!", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Ha o mong. Seterese sa tjhelete se boima haholo ho batswadi. Leka ho buisana le motjha wa hao ka hore na ho kena tjhelete e kae le hore na le tlameha ho sebedisa tjhelete e kae le le lelapa kgwedi le kgwedi. Sena se ka mo thusa ho utlwisisa hore na ke hobaneng ha o sa kgone mo fumanela ntho eo a e batlang. Ha bohle ba utlwisisa hore na tjhelete e ya hokae, ho ba bonolo ho dumellana le ka hore na le baballe bokae!", "type": "template", "note": "" }, { - "SourceText": "This is lovely!", - "text": "Ke ditaba tse monate!", + "SourceText": "You can get more support on how to budget and save here:", + "text": "O ka fumana thuso e nngwe e amanang le ho etsa bajete ya ho baballa mona:", "type": "template", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Oiphaphathe lehetleng. Kgau e a o tshwanela.", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Batjha ba qeta nako e ngata ba se lapeng kapa ba le inthaneteng, moo ho leng thata ho ba sireletsa - sena se hlobaetsa batswadi ba bangata. Leka ho qala puisano le motjha wa hao ka dibaka tse sireletsehileng le tse sa sireletsehang motseng le inthaneteng (o ka nna wa lokela ho leka ka makgetlo a mmalwa). Mohlomong o tseba dibaka tse ding tseo wena o sa di tsebeng. Sena se ka le thusa ho rala ditaba mmoho tse amanang le tsela ya ho dula a sireletsehile.", "type": "template", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "@global.parent_point e nngwe le e nngwe e bohlokwa!", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "O ka fumana thuso e nngwe ya ho tiisa hore motjha wa hao o sireletsehile mona:", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Relax now", - "text": "Phutholoha hona jwale", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "Ha mathata a hlaha, lekang ho buisana ka wona mmoho. Hantlentle bothata ke eng? Ho na le ditharollo dife tse ka kgonehang hona ditlamorao tsa e nngwe ke dife? Ka tsela eo, le ka fumana tharollo e ka bang MOLEMONG wa bohle.", "type": "template", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "Na o se o phutholohile? Tobetsa!", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "O ka fumana thuso e nngwe ya ho rarolla mathata mmoho mona:", "type": "template", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Ho bohlokwa ho itlhokomela.", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Ha ho bonolo ho hlokomela malapa a rona. Ka dinako tse ding kaofela re tobana le diphephetso, empa re tshepa hore epo ena e tla o thusa ho di feta ka katleho. @global.parent_app e itshetlehile ka boiphihlelo ba dilemo tse leshome tsa ho tsamaisa mananeo a botswadi Afrika Borwa, le batswadi ba dikete ba fumaneng hore dikeletso tse fanweng di thusa ka diphephetso tse ngata tsa botswadi. Re tshepa hore video ena e tla thusa wena hammoho le lelapa la hao.\n\nTse ding tsa dikeletso tsa bohlokwa tse atlehileng ke tsena:", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Ke botle! Ke thabela ho utlwa hore dintho di tsamaya hantle kajeno. Ke boikutlo bo molemo hakaakang!", + "SourceText": "Start your first parenting workshop", + "text": "Qala ka wekshopo ya hao ya pele ya botswadi", "type": "template", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Ka dinako tse ding di tsamaya hantle. Ka dinako tse ding ha ho jwalo. Mme ka dinako tse ding ha re tsebe hantle hore na re ikutlwa jwang... mme le moo ho lokile! Hopola hore ha o mong.", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "O tla fumana thuso e nngwe ho @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Ke taba tse monate, haholoholo dinakong tse jwaloka tsena tse boima. O kgalala.", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "O ka fumana thuso e nngwe ho @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Rea tseba hore na ho boima hakae ho hodisa batjha dinakong tsena. Ho ithuta ho laola seterese sa hao ho thusa wena - hammoho le lelapa la hao.", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Qala @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho laola seterese.\n\nHo bohlokwa hore re tsebe tsela ya ho laola seterese sa rona. Ka dinako tseng bana ba rona ba itshwara ka ditsela tse etsang hore re ikutlwe re na le seterese mme rona jwaloka batswadi re ka etsa hore le bana ba rona ba be le seterese.\n\nKahoo, ho bohlokwa ho elellwa ha re ikutlwa re na le seterese le ho nka kgefu ebe re kga moya. Seo se tla o thusa ho laola seterese sa hao.", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Phethela @local.workshop_data.in_text_title hore o fumane thuso e nngwe.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Continue the @local.workshop_data.in_text_title", + "text": "Tswela pele ka @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Lekola botjha @local.workshop_data.in_text_title", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "CHAT", + "text": "QOQA", "type": "template", "note": "" }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "A re shebeng mohlala wa kamoo seterese se ka re imelang e mong le e mong wa rona kateng:", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Hlalosa kamoo u ikutloang kateng, 'me u khothalletse mocha oa hao hore a bue ka lintho tse mo tshoenyang. Le tla utloisisana hamolemonyana ’me le ka etsa moralo o motle hammoho hore le lule le phetse hantle ’me le thabile!", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: “Ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver: “Ako kgaohane le nna, o shebane le taba tsa hao!”", + "SourceText": "CAUTION", + "text": "TLHOKOMEDISO", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: “Ke entseng jwale? Mehla ena ha o mmamele!” \n\n@global.w_stress_male_caregiver: “Ke itse o kgaohane le nna, ho seng jwalo ke tla o shapa!”", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Fumana lintlha tsa hau mehloling e tšepahalang ea tlhahisoleseling, e le hore u ka ba le kholiseho linakong tsena tse sa tsitsang. Re utloa le ho bona litaba tse ngata ka batho ba bang le mehala, TV, le inthanete. Na e etsa hore u ikutloe u belaela, matshoenyeho, tshabo, khalefo, kapa pherekano? Sheba pele o arolelana kapa o nka khato!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: “Bona! Ke qeta ho hlwekisa ntlo!”", + "SourceText": "CHOOSE", + "text": "KHETHA", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: “Ke mang ya nang le taba le ntlonyana ena e makatsang!”", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Ho etsa liqeto tse nepahetseng tse bolokang batho ba phetse hantle ebile ba sireletsehile ho ka ba thata. Haholo-holo linakong tsena! U ka thusa ngoana oa hao ea lilemong tsa bocha ho etsa liqeto tse nepahetseng.", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "O nahana hore @global.w_stress_teen_boy_1 o ile a ikutlwa jwang? @global.w_stress_male_caregiver wa hae yena? Ho thweng ka @global.w_stress_girl?\n\n@global.w_stress_male_caregiver o ne a ka etsang ka tsela e fapaneng?", + "SourceText": "CHILL", + "text": "PHOMOLA", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "O nahana hore @global.w_stress_teen_boy_1 o ile ka ikutlwa jwang?", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Kaofela re ikutloa re imetsoe kelellong ka linako tse ling. Nka moea o tebileng kapa le etse ntho e monate hammoho. Ho ka etsa phapang e kholo ho etsa hore lehae la hau le thabe hape le be le khotso! Mehopolo e meng eo u ka e lekang ke ena:", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "@global.w_stress_male_caregiver yena?", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Menahano e fosahetseng e etsa hore re bue hape re etse lintho tse mpe. Leka ho fetola seo o se nahanang le ho se buang ho tloha ho lintho tse mpe ho ya ho tse ntle!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_girl?", - "text": "Ho thweng ka @global.w_stress_girl?", + "SourceText": "WHO Website", + "text": "Webosaete ya WHO", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "Scared", - "text": "A tshohile", + "SourceText": "UNICEF Website", + "text": "Webosaete ya UNICEF", "type": "template", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Kaofela ha bona ba ne ba ikutlwa ba kwatile ka mabaka a bona!", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Ho thata ho ba motswadi nakong ya COVID. Ikotle sefuba hobane o kgonne ho tla fihlela mona.\n\nRe sebetsana le dikateng tse ntjha mona ho o tshehetsa ka ho buisana le batjha le bana ba hao ka COVID.\n\nTlhahisoleseding e nakong ka ho fetisisa e amanang le COVID-19 e ka fumanwa websaeteng ya WHO le ya UNICEF:", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "@global.w_stress_male_caregiver a ka be a entse eng ka tsela e fapaneng?", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Konopo ena e tla o lebisa karolo ya Coronavirus ya webosaete ya semolao ya UNICEF.", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "Recognise why he feels stressed", - "text": "A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "URL ke https://www.unicef.org/coronavirus/covid-19", "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "A kge moya haholo mme a bue a kgobile matshwafo", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Konopo ena e tla o lebisa karolong ya Coronavirus ya webosaete ya semolao ya WHO.", "type": "template", "note": "" }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "A bontshe hore o utlwisisa maikutlo a motjha wa hae", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "type": "template", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1", + "SourceText": "Update my parenting experiences", + "text": "Kenya dintlha tsa moraorao tsa boiphihlelo ba ka ba botswadi", "type": "template", "note": "" }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", + "SourceText": "Update my personal details", + "text": "Kenya dintlha tsa ka tsa moraorao tsa botho", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver a ka...", + "SourceText": "Update my workshop options", + "text": "Kenya dikgetho tsa ka tsa moraorao tsa wekshopo", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese\n* A kge moya haholo mme a bue a kgobile matshwafo\n* A bontshe hore o utlwisisa maikutlo a motjha wa hae\n* A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1\n* A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", + "SourceText": "Give me quick parenting tips", + "text": "Mphe dikeletso tsa botswadi tse potlakileng", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Rea leboha hore le nahane ka taba ena! A re kgutleleng morao mme re bone kamoo @global.w_stress_male_caregiver a etsang dintho kateng hona jwale:", + "SourceText": "Something really bad happened", + "text": "Ho etsahetse ntho e mpe haholo", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver o feletswe ke mosebetsi. O dutse lapeng a ikutlwa a sulafalletswe ebile a na le seterese, ha @global.w_stress_teen_boy_1 a kena.", + "SourceText": "I have technical problems with the app", + "text": "Ke na le bothata ba setekgenike ka epo ena", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: “Ke ne ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver (o kga moya): “Eish ngwanaka. Ho bile boima kajeno. Mongaka o ntebetse mosebetsing.”", + "SourceText": "You will find the in-week messages from the previous workshops here.", + "text": "O tla fumana melaetsa ya bekeng ena ho tswa diwekshopong tse fetileng mona.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “Ao banna! Ene ke hloka yunifomo e ntjha ya sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka, moshanyanaka, Empa mosebetsi wa @global.w_stress_female_caregiver wa hao o tla re thusa nakong eo ke ntseng ke batla mosebetsi o mong.”", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Ha o eso kenye dintho dife kapa dife tseo o ka di etsang ho @global.my_activities. Ho ka ba jwang hore o di kgethe?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: “Nna le nna nka thusa ka ho batla mosebetsi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “O ska kgathatseha, ho tla loka @global.w_stress_teen_boy_1. Kea leboha ha o batla ho thusa. Empa ntho ya bohlokwa haholo ke hore wena o sebetse ka thata sekolong. Kea leboha ka hore o mmamele.”", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Ha o eso kenye dintho dife kapa dife tsa ho ikgatholla ho @global.my_relaxes. Ho ka ba jwang hore o di kgethe?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “A re ilo bapala bolo mmoho. Seo se tla nthusa hore ke theole seterese hanyane.” \n\n@global.w_stress_teen_boy_1: “Ho lokile, @global.w_stress_male_caregiver!”", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "O tla fumana dikeletso tseo re nahanang hore o ka di fumana di le molemo mona, ho itshetlehile ka dikarabo tsa hao ho customisation ya epo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Puisano eo e tsamaile hantle haholo!\n\nHo kgefutsa ho tla o thusa hore o arabe o theotse moya ha o ikutlwa o halefile kapa o na le seterese. Ho leke, o tla bona!", + "SourceText": "Relaxation activities", + "text": "Dintho tseo o ka di etsang ho ikgatholla", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Tshwarelo Molemong wa Polokeho", + "SourceText": "Something fun to do with your teen", + "text": "Ntho e monate eo o ka e etsang le motjha wa hao", "type": "template", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Nahana ka mehleng ya ha o sa le motjha.\n\nNa ho kile ha eba le nako eo ka yona o neng o le kotsing empa o sa kgone ho bolella lelapa la hao hobane o ne o halefile?\n\nSena se BATLILE se etsahalla @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re ba shebelleng:", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "Na o tobane le mathata a setekgenike? Re tsebise mme o re thuse ho ntlafatsa @global.parent_app!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: \"O ska jwetsa batho ba baholo, hore ke ya bareng le metswalle ya ka bosiung bona\" \n\n@global.w_stress_teen_girl: \"O je monate! Ke ba jwetsitse hore ke tjhakela mokgotsi wa ka wa ngwanana, empa ke ya phathing e monate\"", + "SourceText": "Type your name (optional)", + "text": "Thaepa lebitso la hao (ka boithatelo)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: \"Ke nahana hore ba rekisa dithethefatsi. Kaofela re ka tshwarwa. Empa nkeke ka bolella batswadi ba ka – ba tla halefa haholo\"", + "SourceText": "Contact me on @global.whatsapp", + "text": "ikopanye le nna ho @global.whatsapp", "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "note": "The string @global.whatsapp should not be translated." }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: \"Ke tshohile. Batho bohle ba nwele haholo hoo ba ke keng ba nkisa lapeng. Moshemane enwa o re o tla nkisa empa re qale habo pele. Nkeke ka jwetsa batswadi ba ka – ke ba jwetsitse leshano ka ho tla phating ena.\"", + "SourceText": "Type your phone number", + "text": "Thaepa nomoro ya hao ya mohala", "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Ana ke maemo a kotsi! Ka lehlohonolo, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba hopola hore na @global.w_stress_parent o ile a ba bolella eng: \n\n\"Ke amehile ka polokeho ya lona ho feta eng kapa eng. Haeba le ka ikutlwa le kwatile, kapa le tshohile, ka dinako tsohle le ntetsetse hore ke tlo le thusa, kapa le mpolelle taba eo. \n\nE reng feela 'TSHWARELO MOLEMONG WA POLOKEHO'. Kea le tshepisa ke tla leka sohle hore ke le thuse ebile nkeke ka le halefela – le haeba le ne le etsa ntho eo le sa lokelang ho e etsa.\"", + "SourceText": "Contact me via email", + "text": "Ikopanye le nna ka imeile", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke tshwarelo molemong wa polokeho. Ke kopa o tle o tlo nlata? Kannete ke hloka lifti ya ho ya lapeng.\"", + "SourceText": "Type your email address", + "text": "Thaepa aterese ya hao ya imeile", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, tshwarelo molemong wa polokeho. Ke bona eka mekgotsi ya ka e mathateng. Ha ke batle ho emisa hoba motswalle wa bona, empa ke kgathatsehile. Na re ka bua?\"", + "SourceText": "Tell us about your issue", + "text": "Re bolelle ditaba tseo o tobaneng le tsona", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "O KGE MOYA. Butle. Kgefutsa.", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Ka lekgetlo la pele ha mme wa ka a nkopa ho qeta nako le yena, ke ile ka mo bolella hore a kgaohane le nna hobane ke ne ke ntse ke bapala game. Empa o ile a tsitlella hobane ke mokgwa wa hae. Ke ile ka mo bolella hore a ka ntjhebella ha ke bapala haeba ke seo a se batlang. Kamora metsotso e seng mekae o ile a qala ho mpotsa dipotso ka game eo. Qalong ke ile ka utlwa a ntena, empa kamora nakwana ke ne ke thabile hobane o ne a thahasella dintho tseo ke di etsang. O ile a ba a leka ho e bapala!", "type": "template", "note": "" }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Pele o bua eng kapa eng, hema butle o kge moya mme o o tlohele ka makgetlo a mahlano. O tla theola moya, mme o tla ba le monyetla wa ho nahana.", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "Ntate wa ka o ile a mpolella hore ke bapala basketeball haholo ha sekolo se tswa, kahoo re tlameha ho qala melao ya lelapa. O ile a ntshepisa hore re tla nahana ka tharollo re le mmoho, kahoo ka bobedi ba rona re ile ra rata taba eo. Ke ne ke sa nahane hore seo se ka kgoneha, empa ka re, \"Ho lokile, a re leke\". Re ile ra buisana mme ra dumellana hore molao ke hore ke dumeletswe ho bapala basketball kamora ho etsa homeweke le ho fihlela re ja dijo tsa tinare. Ho thata hore ke bone metswalle ya ka e bapala ha sekolo se tswa, kahoo ke ikitlaelletsa ho qeta homeweke ya ka pele ebe kea tsamaya ke ilo bapala le bona. Hape hona jwale ke kgona ho qeta nako ya mantsiboya ke etsa dintho tse ding tseo ke di batlang kamora hore lelapa le je dijo tsa tinare jwaloka ho shebella basketball ho NBA.", "type": "template", "note": "" }, { - "SourceText": "SHARE how you feel", - "text": "PHETA kamoo o ikutlwang kateng", + "SourceText": "Question Time", + "text": "Nako ya Dipotso", "type": "template", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Ntho ena e thata. Boholo ba rona, re kile ra bolellwa hore re se lle, kapa ra bontsha bana ba rona maikutlo a rona. Empa kga moya o mongata mme o kgobile matshwafo o ba bolelle kamoo o ikutlwang kateng. Ba tla utlwisisa hantle, mme ba tla be ba ithute tsela ya ho sebetsana le seterese ho wena.", + "SourceText": "It's time for some questions!", + "text": "Ke nako ya dipotso!", "type": "template", "note": "" }, { - "SourceText": "SHOW them you care", - "text": "Ba BONTSHE hore o a ba tsotella", + "SourceText": "Read Together", + "text": "Balang Hammoho", "type": "template", "note": "" }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Le yona e boima! Seterese se etsa hore re amehe ka rona. Empa batjha ba rona ba hloka tshehetso ya rona. Ba botse hore na ba ikutlwa jwang. Ba mamele mme o ba tshedise. Leka ho ba haka kapa o re ‘Kea utlwisisa’. Seo se ka fetola dintho tsohle.", + "SourceText": "Let's read a story together!", + "text": "A re bale pale hammoho!", "type": "template", "note": "" }, { - "SourceText": "SEEK the positive", - "text": "BATLA dintle", + "SourceText": "Let's read a story!", + "text": "A re baleng pale!", "type": "template", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "Na wena le motjha wa hao le nahana ka dintho tse ka thusang? Na le ka etsa ntho e ntle mmoho hore le tlose dikelello tsa lona nthong e bakang seterese?", + "SourceText": "Let's see how this week has been.", + "text": "E re re bone hore na beke ena e tsamaile jwang.", "type": "template", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "Ha tsena tsohle di hloleha, kga moya. O ka atleha.", + "SourceText": "This week you have done...", + "text": "Bekeng ena o entse...", "type": "template", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Ho na le dintho tse pedi tsa ho ikwetlisa lapeng bekeng ena.", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "O bontsha boikemisetso ka tsela eo ba ho ba motswadi le ho itlhokomela.\n\nWa babatseha.", "type": "template", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Neng kapa neng ha o utlwa o na le seterese kapa o kwatile: o kge moya ka makgetlo a mahlano le ho o tlohela pele o nka bohato.\n\nMme ha ka bobedi ba lona le theotse moya, bolella motjha wa hao hore na o ikutlwa jwang.", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Ho prakthisetsa lapeng ke tsela eo re ntlafatsang bophelo ba malapa a rona kateng. Empa hangata seo se ba le mathata.\n\nA re phetelaneng dintho tseo re atlehileng ho tsona le mathata ao re thulaneng le wona, mme re thusaneng ho fumana ditsela tse ntjha tsa ho iteka!", "type": "template", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Buisana le motjha wa hao ka \"tshwarelo molemong wa polokeho\", mme mmoho le nahane ka hore na le ka sebedisa sena neng.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Nahana kamoo mesebetsi ya hao ya lapeng e tsamaileng kateng bekeng ena.\n\nTjhentjhanang ha le tshohla:\n* Ke eng e tsamaileng hantle hona bothata ebile eng? \n* Le ka nahana ka ditharollo dife mmoho? \n* Kgethang tharollo e le nngwe mme le e leke hamorao ka batjha ba lona! \n\n(Kapa le ka e prakthisa hona jwale hore ho be bonolo hamorao!)", "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Neng kapa neng ha o kgefutsa pele o arabela, kapa neng kapa neng ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_points tsa hao mme o keteke katleho ya hao!", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Mohlala wa puisano e tswang ho @data.workshop.w_1on1.title", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "O phethile wekshopo ya bekeng ena.\n\nBekeng e tlang, re tla buisana ka tjhelete - o tla hloka:\n* leqephe la pampiri/khateboto\n* pene\n* majwe/dinawa/dithollo tse nyane tse 20\n\nE tla ba monate!", + "SourceText": "Relax Together", + "text": "Theolang Moya Hammoho", "type": "template", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Ke hantle hore o phetse hantle kajeno! Ntho e le nngwe e tsamaileng hantle ke efe kajeno? Hopola ho ipabatsa ka yona.", + "SourceText": "Relax", + "text": "Theolang Moya", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Ke maswabi ho utlwa hore ha o ikutlwe hantle kajeno. O sebeditse ka ho lemoha maikutlo a hao, le ho leka ho kgoba matshwafo le ho iqenehela. O behela lelapa la hao mohlala o motle.", + "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "text": "A re etseng ntho kgutshwane e tla etsa hore re theole moya hammoho – e tla nka katlase ho motsotso o 1 mme o tla utlwa o kgobile matshwafo hamonate.", "type": "template", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Ntho e nngwe le e nngwe e nyane eo o e etsang e bohlokwa. Re tshepa hore le wena o motlotlo ka wena.", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Kenya mosebetsi ona ho @global.my_relaxes", "type": "template", - "note": "" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Malapa wohle a ba le ditsietsi. Ha re itokisa mmoho ebile re tseba hore na re fumana thuso hokae PELE ntho e mpe e etsahala, re ka hlola tsietsi efe kapa efe.", + "SourceText": "Listen and relax", + "text": "Mamela mme o theole moya", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho sebetsana le ditsietsi.\n\nTsietsi e ka hlaha kae kapa kae. Tsietsi e ka hlaha neng kapa neng. Kahoo ho bohlokwa hore lelapa le be le ditlhophiso haeba setho sefe kapa sefe sa lelapa le iphumana le se tsietsing.\n\nHo bohlokwa ho etsa ditlhophiso e le hore setho se seng le se seng sa lelapa se ka ikutlwa se sireleditswe.\n\nHa re sebetsana le tsietsi, hopola ho kgefutsa, ho kga moya, le ho dula o kgobile matshwafo. Sena se tla o thusa ho sebetsana le tsietsi kapa tlokotsi hantle.", + "SourceText": "Read and relax", + "text": "Bala mme o theole moya", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le puisano\n* Pale le puisano\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "O kgalala!\n\nLetsatsi le letsatsi, elellwa ntho e itseng eo o e entseng hantle. Iputse ka ntho e o thabisang. Mme o hemele hodimo hore o theole moya.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le boikgopotso\n* Pale le boikgopotso\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Kwala mahlo.\n\nLemoha kamano ya hao le lefatshe le tlasa hao.\nKe dikarolo dife tsa mmele wa hao tse thetsang lefatshe? Ke dikarolo dife tsa mmele wa hao tse sa le thetseng?\nLemoha moo ho utlwahalang ho futhumetse le moo ho utlwahalang ho phodile.  \nUtlwa lefatshe le tlasa hao le o tsheheditseng. Tlohella mmele hore o itshetlehe ka tshehetso la lefatshe.", "type": "template", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "Tsietsi e ka hlahela mang kapa mang. \n\nA re bone se etsahalletseng @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Leka sena nakong e tlang ha o ikutlwa o le mong kapa o etsa mosebetsi o tlwaelehileng o kang ho hlapa. Kannete seo se ka thusa!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: \"Ao ngwanaka, ekare o utlwile bohloko, na o ka thabela ho mpolella hore na ho etsahetseng?\"", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Dula fatshe mme o kwale mahlo.\nKe medumo e mekae eo o e utlwang? \nMamela medumo kahare le kantle ho kamore. E bale ka menwana ya hao. \nKamora medumo e leshome, o phahamisitse menwana e mekae? O utlwile medumo ya eng? \n\nLeka hape ka metsotswana e meng e leshome. \nNa ho na le medumo efe kapa efe e metjha eo o e utlwileng? Na ho na le medumo efe kapa efe kahara mmele wa hao? \nLemoha kamoo o ikutlwang kateng hona jwale.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: \"Ke Malome, o… o… o ile a ntshwara.\" \n\n@global.w_crisis_female_caregiver (o a nahana): \"Kga moya o mongata... Ngwana wa ka o hloka eng? O hloka hore ke theole moya mme ke mo mamele\" \n\n@global.w_crisis_female_caregiver: \"Tloho o dule pela ka mona. O ska tata, ke o utlwe hantle.\"", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Kwala mahlo. \n\nNa o na le boikutlo bo matla haholo hoo o utlwang eka o ka baleha? \n\nHo fapana le ho tlohela boikutlo boo, a re ke re bo tshware hanyane. \nHo lokile. Kwala mahlo haeba o ikutlwa o phutholohile. Hemela hodimo. \n\nEba bohelehele. Boikutlo bona bo hokae mmeleng wa hao? Na ho a tjhesa kapa ho a bata? Ho thata kapa ho bonolo? Ho tiile kapa ho a lokotseha? \nIpotse dipotso di se kae. Bo mpolella eng? Bo hloka eng? Nka itshwara ka mosa jwang hona jwale?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: \"Kannete, o… o… nqobelletse! O nqobelletse ho etsa thobalano le yena! Ke ne ke sa batle, ke ya hlapanya, ke ile ka ba ka re NTLOHELE, empa a re ke tla ikenya mathateng.\"\n\n@global.w_crisis_female_caregiver: \"Kea leboha ha o mpolelletse taba ena. Ha o mathateng ho hang. Ena hase phoso ya hao.\"", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Ena ke ntho e monate e ka o thusang hore o fokotse seterese:  \n\nKgetha pina e bontshang seo o se hlokang hona jwale. Na o hloka pina e o thobang maikutlo ha o tepelletse moyeng kapa pina e nang le morethetho o tla sisinya seterese sa hao se tswe?  \n\nHleka sebaka mme o sisinye mmele wa hao ha mmino o duma. Hopola ho hema ha o ntse o itshisinya. Mohemo wa hao le boitshisinyo ba hao di tsamaye mmoho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: \"Maobane ha o ilo bona @global.w_crisis_adult_friend. O ile a kena feela mme seo se etsahetse ka nako eo.\"\n\n@global.w_crisis_female_caregiver: \"Ke ya utlwa, ebile ke dumela seo o mpolellang sona ngwanaka. Ena ke ntho e kgolo mme re tla fumana tsela ya ho batla thuso eo re e hlokang. Re ka leba hokae ho fumana thuso?\"\n\n@global.w_crisis_teen_girl_1: \"Moo ke kenang sekolo teng?\"", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Esita le ho tsamaya ka metsotso e se mekae ekaba ho lekaneng ho fokotsa seterese le ho o tsosa molota!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: \"Oo, ka ba ka hopola, a re ye tliliniking. Ba tla tseba hore na re etseng ho o thusa. Na o utlwa eka o ka kgona?\"\n\n@global.w_crisis_teen_girl_1: \"E… E lokile… Empa na o tla tsamaya le nna?\"", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Kwala mahlo.\nKa motsotswana utlwa lefatshe le tlasa maoto a hao.\nNahana ka ntho eo o e lebohelang.\nAmeha ka mohemo wa hao.\nHema ho hula moya le ho butswela.\n\nMoya o kene mme o tswe.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: \"Ho jwalo, ke tsamaya le wena. Mme @global.w_crisis_teen_girl_1? Hopola, hase phoso ya hao. Kea o rata. O motho ya molemo. Re tla feta bothateng bona.\"", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Dumela! O ikutlwa jwang hona jwale? O thabile, o kwatile, o hloname, o nyakaletse, o kgathatsehile?\n\nHlokomela hore na o ikutlwa jwalo hokae mmeleng wa hao. Lemoha hore na ke menahano efe e tsamaisanang le boikutlo boo. Phefumulohela hodimo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Bona e ne e le boemo bo thata bakeng sa @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver wa hae! Sena se ka etsahalla bashanyana le banana.", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Itebohe ka ho nka nako ho hlahloba maikutlo le menahano ya hao!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "@global.w_crisis_female_caregiver o ne a lokela ho sebedisa tsebo efe?", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "A re prakthise tsebo ya ho kgoba matshwafo eo re e bitsang ‘Matla a Kgefu’.\n\nTsetsepela maoto a hao fatshe mme o hule le ho o lokolla ka makgetlo a mararo butle kamoo o ka kgonang.\n\nTa Da! Matla a Kgefu!", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "E, hantlentle @global.w_crisis_female_caregiver o sebedisitse ditsebo tsohle – le wena o ka kgona!", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Lena ke leqheka le leholo le sebediswang ha o ikutlwa o nyahame hobane seo se tla o thusa ho theola moya.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "Bothata bo bong boo batswadi ba bangata ba kgathatsehileng ka bona ke diketso tsa dikgoka le tlolo ya molao. A re shebeng mohlala ona hammoho.", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Ho ithorisa kapa ho ipabatsa ho ka re thusa haholo, haholoholo matsatsing ao ho leng thata ka wona.\n\nNahana ka beke ya hao mme o phethele polelwana e latelang: “Bekeng ena, ke ikotla sefuba ka nna hobane …” Ekaba eng kapa eng, eseng feela dintho tse amanang le ho ba motswadi!\n\nNahana ka ntho e le nngwe eo o e entseng hantle kajeno. Ebe o ikaparele ka diatla tsa hao mme o iphe HAK e kgolo!", "type": "template", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ho tloha maobane o bonahala o kgathatsehile. Ebe molato ke eng?\"", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Dula o iketlile mme o kwale mahlo. \n\nElellwa se etsahalang ho wena hona jwale. O nahana eng? Na o nahana dintho tse molemo kapa tse mpe? O ikutlwa jwang? Na o ikutlwa o thabile kapa o sa thaba? Mmele wa hao o ikutlwa jwang? Na o ikutlwa o tsitsipane kapa o phutholohile?\n\nBua le pelo ya hao ka tsela e mosa le e bonolo. O ka nna wa batla ho beha letsoho la hao pelong kapa sefubeng. Ipolelle mantswe a latelang ka lentswe le tlaase:\n\nKe kopa kgotso.\nKe kopa polokeho.\nKe kopa bophelo bo botle.\nKe kopa thabo.\nEka lelapa la ka le ka ratana.\nEka nka ikutlwa ke ratwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: \"Maobane, nna le metswalle ya ka re ile ra ya mmetjheng wa bolo. Bashemane ba bang ba tahilweng ba ile ba qala ho lwantsha motswalle wa ka.\"\n\n@global.w_crisis_male_caregiver_1: \"Tswela pele, ke mametse. Ke tshepa hore ha o a ka wa lwana?\"", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Nka motsotswana o nahana ka ntho e o hlahetseng. Sheba hore na ha o ikutlwe ka tsela e fapaneng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: \"Ke ne ke sa batle ho lwana, empa ke ne nke ke ka ema moo yaba ke ba shebella ha ba otla mokgotsi wa ka, yaba…\"\n\n@global.w_crisis_male_caregiver_1: \"Yaba, le wena o a lwana ho thusetsa mokgotsi wa hao?\"", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Mohato wa 1. Kwala mahlo mme o phefumolohele hodimo. \n\nMohato wa 2. Ipotse, \"Ke nahanang?\" Lemoha hore na maikutlo a hao a matle kapa a mabe.\nLemoha hore na o ikutlwa jwang botebong ba pelo. Hlokomela haeba maikutlo a hao a le matla kapa a se matle. Ikgopotse hore ho sa natswe hore na o ikutlwa jwang, ho lokile.\nHlokomela kamoo mmele wa hao o ikutlwang kateng. Hlokomela eng kapa eng e o utlwisang bohloko kapa e etsang hore o ikutlwe o tsitsipane.\n\nMohato wa 3. Ameha ka mohemo wa hao. Utlwa mohemo wa hao ha o moya o kena le ha o tswa. O ka beha letsoho mpeng mme o utlwe ha e kokomoha le ha e bohlela ha o hem. Etsa sena ka metsotso e ka bang 10.\n\nMohato wa 4. Eketsa tsebo ya hao ya mmele wohle wa hao. Mamela medumo e ka kamoreng. \n\nMohato wa 5. Ka nakwana nahana hore na o ikutlwa ka tsela e fapaneng ka tsela efe kapa efe. Ha o loketse, bula mahlo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Ntwa e ne e se na monga yona. Ke bone motho ya rapaletseng fatshe ka hara mophula wa madi. Ke bone eka… o shwele.\"", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "O sebeditse ka ho Nka Kgefu. O ka etsa sena neng kapa neng ha o ikutlwa o imetswe. Seo se o fa monyetla wa ho kgoba matshwafo le ho feta. Esita le ho phefumoloha ka makgetlo a mmalwa kapa ho fumana kamano pakeng tsa hao le lefatshe leo o emeng hodima lona ho ka tlisa phapang e kgolo. Hape o ka Nka Kgefu le Bana ba hao!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: \"Ke thabela hore ebe o mpolelletse sena, @global.w_crisis_teen_boy_1. A re dule fatshe mmoho mme re buisane ka taba ena hore na re tlameha ho kopa thuso ya mapolesa kapa ya motho e mong.\"", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Dulang fatshe, le kwale mahlo mme le mamele mohemo wa lona ha moya o tswa le ha o kena.\n\nLemohang kamoo le ikutlwang kateng.\n\nHa le itokisitse, bulang mahlo hape.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: \"Kea leboha, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Re tla feta boemong bona. Hopola, re tla o tshehetsa re le lelapa.\"", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Leka sena neng kapa neng ha o ikutlwa o imetswe mme o hloka ho nka kgefu hore o iphumane.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "E ne e le boemo bo thata hakaalo bakeng sa @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 wa hae!", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Ema mme o ikotlollele matsoho nqa lehodimo. Sutumetsa maru afe kapa afe mme o tlohele letsatsi o tjhabele hodima hao. Ikotlollele ka mahlakoreng ka bobedi. Ikotlollele kapele le kamorao.\n\nTlohela matsoho a hao a lepelle ka mahlakoreng. Petetsa mahetla a hao ka thata ho ditsebe ha o hema ho hula moya, kwala mahlo a ntse a panyapanya, mme o tshware moya. Lokolla mahetla a hao ha o phutholla mmele wa hao.\n\nPhutholla diphaka tsa hao mme o tlohele diphaka di ye kwana le kwana ka mahlakoreng, mme o reteletse bokahodimo ba mmele wa hao. Diphaka tsa hao di lokela ho thetsa bokamorao habonolo ha o reteleha ho tloha lehlakoreng le leng ho ya ho le leng.\n\nBeha leoto kapela le leng mme o etse didikadikwe tse nyane ho tloha maqaqailaneng, hopola ho retelehela ka mahlakoreng ka bobedi. Etsa didikadikwe tse nne ka leoto ka leng o lebisa lehlakoreng ka leng.\n\nEbe o sisinya mmele wohle wa hao kapele kamoo o ka kgonang. O hlekehle o ya hodimo! O hlekehle o ya fatshe! O hlekehle ka mahlakoreng wohle!\n\nKwala mahlo mme o phahamise diphaka tsa hao butle hodima hlooho ya hao ha o hula moya. Theola diphaka tsa hao butle ka mahlakoreng ha o lokolla moya.\n\nKa nakwana nahana ka se o etsahalletseng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "@global.w_crisis_male_caregiver_1 o ne a lokela ho sebedisa tsebo efe?", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "O entse hantle! O ka etsa sena neng kapa neng ha o utlwa eka o hloka ho fokotsa seterese le ho matlafatsa kelello le mmele wa hao.", "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Tsebo ena kaofela e ka thusa ha ho hlahile tsietsi.", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Etsa letoto la diketso tse tlatsetsang bophelong bo botle tseo o ka thabelang ho di etsa. Tse ding tsa dikeletso ke tsena:\n* Ho mamela mmino oo o o ratang\n* Ho tsamaya e le ho thapolla maoto (haeba ho dumeletswe)\n* Ho etsa boikwetliso bo itseng\n* Ho nwa kopi ya tee o le mong\n* Ho letsetsa motswalle\n* Ho bina, ho tantsha, ho rapela, kapa ho bala\n* Ho ora letsatsi o kwetse mahlo\n* Ho shebella lananeo leo o le ratang la T.V.\n\nKgetha e le nngwe mme o e etse kajeno!", "type": "template", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Ditsietsi di ka etsa hore re ikutlwe re halefile kapa re se na matla. Empa ke yona nako eo batjha ba rona ba hlokang hore re kge moya, re mamele mme re nahane.", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "Ha o itlhokomela, o hlokomela bana ba hao. Motho ke motho ka batho. Leka ho buisana le metswalle, ba lelapa le batho ba bang ba ka o tshehetsang letsatsi le letsatsi. Haeba o se o qetile nako o sa buisane le motho e mong, bua le yena hona jwale!", "type": "template", "note": "" }, { - "SourceText": "BREATHE", - "text": "KGA MOYA", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Nahana ka se o halefisang? Seo se etsahala neng? O itshwara jwang ka tlwaelo?\n\nThibela kgalefo ho tloha ha e qala. Robala kapa o phomole ha o kgathetse. Leka ho ja ho hong ha o lapile. Kopa motho e mong hore a o tshehetse ha o jewa ke bodutu.", "type": "template", "note": "" }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Dula o kgobile matshwafo. Ipotse 'motjha wa ka o hloka eng hona jwale'", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Ho laola kgalefo ho ka ba thata e le ruri. Nka kgefu ha o ikutlwa o halefetse bana ba hao kapa motho e mong.\n\nLeba sebakeng se seng ka metsotso e 5 hore o boele o kgone ho laola maikutlo a hao. Haeba kantle ho sireletsehile, tsa mo hahlwa ke moya kantle. Boemo bona bo tla feta!", "type": "template", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Mo bolelle hore o tla wa o tsoha le yena ebile o a mo rata.", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Kwala mahlo a hao.\n\nA re sebedise matla a mohlolo a tharo ho iphumana le ho phutholoha.\n\nBolela medumo e meraro eo o e utlwang hona jwale.\nBolela menko e meraro eo o e fofonelang hona jwale.\nBolela dijo tse tharo tseo o di ratang.\n\nKe dintho dife tse tharo tseo o di lebohelang hona jwale? Ha ho hlokehe hore di be kgolo.", "type": "template", "note": "" }, { - "SourceText": "THINK", - "text": "NAHANA", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "Qetellong ya letsatsi le boima, ho nahana ka dintho tse tharo tseo o di lebohelang ho ka re thusa ho ba sebete ho leka hape hosane.", "type": "template", "note": "" }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Buisana le motjha wa hao. Ke eng e ka thusang boemong boo? O ka nna wa tlameha ho etsa ditokisetso tsa hanghang hona jwale, ebe o etsa tsa nako e telele hamorao.", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Kwala mahlo mme o nahane ka letsatsi.\n\nBolela ntho e 1 eo o e lebohelang.\nBolela ntho e 1 eo o e entseng hantle.\nBolela ntho e 1 eo o e ratang.", "type": "template", "note": "" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "O ka ba motlotlo ka wena ka ho ithuta ditsela tsa ho fumana thuso!", + "SourceText": "Well done, you are a hero!", + "text": "O sebeditse, o mohale!", "type": "template", "note": "" }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Ho molemo ho tlwaela ho sebetsana le tlokotsi pele ho etsahala ntho e nngwe.\n\nSheba dinako tsena tsa ditsietsi kapa ditlokotsi tse hlano tse hlahelang malapa. Nahana o le motswadi: O ne o tla etsang?\n\nHopola: KGA MOYA - MAMELA - NAHANA", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Kwala mahlo.\n\nSebedisa matla a mohlolo a tharo ho dula o le nako ebile o phutholohile.\n\nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3. \nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3.", "type": "template", "note": "" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Tsietsi ya 1: @global.w_crisis_teen_boy_2 o a lwana sekolong", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "Na o ikutlwa ka tsela e fapaneng? Ho hemela hodimo ho thusa mmele wohle le kelello ho kgoba matshwafo.\n\nO kgalala!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: \"Kea qala ho ba boemong bona. Empa jwale ba tlo ntebela\"", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Kwala mahlo.\n\nMamela mohemo wa hao ha moya o kena le ha o tswa ka makgetlo a mahlano.\n\nLemoha kamoo o ikutlwang kateng.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Tsietsi ya 2: @global.w_crisis_teen_girl_1 eba moimana", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Ha o se o lokile bula mahlo hape. Ha ho na se o hlotseng!", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke swabile haholo. Ha ke tsebe hore na ke etseng\"", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Tsietsi ya 3: @global.w_crisis_teen_boy_2 o imisa ngwanana", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Kwala mahlo. \n\nNa bana ba hao ba kile ba etsa hore o ikutlwe eka o ka hweletsa? \n\nIphe kgefu ya metsotswana e 10. Hula moya mme o o lokolle butle ka makgetlo a 5. \n\nLeka ho arabela o kgobile matshwafo.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ha ke batle ho ba le lesea\"", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Batswadi ba dimilione ba re seo se a thusa - HAHOLO.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "O ne o tla arabela jwang ho @global.w_crisis_teen_boy_2?", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Kwala mahlo. \n\nEmisa ntho eo o e etsang ka motsotswana mme o amehe ka mohemo wa hao.   \n\nKe ntho efe e le nngwe eo o e lebohelang hona jwale?  \nKe ntho efe e le nngwe e o tlisetsang thabo?  \nKe ntho efe e le nngwe eo o e ratang?  \n\nHa ho hlokehe hore ebe ntho e kgolo. Ka dinako tse ding dintho tse nyane di bohlokwa haholo bophelong!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Tsietsi ya 4: Motho e mong ka lapeng o a kula", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Sena ke seo o ka se etsang hore mmele wa hao o phutholohe:  \n\nDula moo o iketlileng mme o kwale mahlo haeba o kgona.  \nNahana ka reng ya kgauta e sekenang mmele wa hao ho tloha maotong ho ya hloohong.   \nEla hloko ha e ntse e nyolosa le ho theosa mmele wa hao. Na ho na le dikarolo tse utlwahalang di tsitsipane? Di shwele bohatsu? Di le bohloko?   \nAmeha ka dibaka tseo ka nakwana. Hula moya sebakeng seo mme ha o butswela moya, leka ho lokolla tsitsipano kapa bohloko.   \nEtsa sena ha o hema ka makgetlo a mmalwa.   \n\nBula mahlo. Hona jwale mmele wa hao o ikutlwa jwang?", "type": "template", "note": "" }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "\"Tlhahlobo e re ke na le HIV. Ke tshohile hore ke tlo shwa\"", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "Hape o ka leka sena nakong e tlang ha o iphumana o paqame betheng mme o hlobaela!", "type": "template", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "O ne o tla arabela jwang boemong boo?", + "SourceText": "Start", + "text": "Qala", "type": "template", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Tsietsi ya 5: @global.w_crisis_teen_girl_1 o qobellwa ke moshemane eo a ratanang le yena hore ba etse thobalano", + "SourceText": "Please sign in with your Google account to use the app.", + "text": "Ka kopo, kena ka ak'haonte ea hau ea Google ho tseba ho sebelisa sesebelisoa sena.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: \"Ke ne ke sa batle. Jwale ke tla ima kapa ke kule. @global.w_crisis_female_caregiver, ke tshohile haholo...\"", + "SourceText": "Sign in with Google", + "text": "Kena ka ak'haonte ea hau ea Google", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "O ne o tla arabela jwang ho @global.w_crisis_teen_girl_1?", + "SourceText": "Add this activity to @global.my_activities", + "text": "Kenya mosebetsi ona ho @global.my_activities", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Hopolang ho tshehetsana le ho kgothatsana. Ho thata ho dula o theotse moya le ho mamelana ha ho hlahile tsietsi - re motlotlo ka wena.", + "SourceText": "@global.parent_app funded by", + "text": "@global.parent_app e tshehelitsoe ke", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "Le motjha wa hao kgethang bo bong ho maemo ana (kapa nahanang ka bo bong ka bolona!). Shebang khathune, mme le buisane ka seo le ka se etsang mmoho haeba seo se etsahalla motswalle kapa se hlaha ka lapeng.\n\nMme hopola: KGA MOYA - MAMELA - NAHANA", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "e tsamaisoa ke Parenting for Lifelong Health le balekane", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "O phethetse wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tlang e tla le keteka kaofela, le ho le thusa ho etsa ditokisetso bakeng sa kamoso.\n\nHobaneng ha le sa lokisetse phathi moo le tla ja mmoho, le letse mmino haeba le rata ho tantsha!", + "SourceText": "Bringing teenagers up is hard", + "text": "Ho holisa bacha ho thata", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "O phethile wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tla e tla o keteka, mme o ka kgetha tshehetso eo o e batlang ho ya pele.\n\nO ka lokisetsa dimenyemenye ho keteka – ntho eo o ratang ho e ja, kapa mmino oo o ratang ho o mamela!", + "SourceText": "You are the best parent your teen could have", + "text": "O motswadi ea molemo ka ho fetisisa eo mocha oa hao a ka bang le eena", "type": "template", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Ho itlhokomela ke thulusi ya bohlokwa ya botswadi.", + "SourceText": "Ideas from other families:", + "text": "Maikutlo a malapa a mang:", "type": "template", "note": "" }, { - "SourceText": "How are you feeling today?", - "text": "O ikutlwa jwang kajeno?", + "SourceText": "Customise @global.parent_app", + "text": "Fetola @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Ke thabela ho utlwa hore o ikutlwa hantle kajeno. O motho ya hlollang!", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Re maswabi hore o hula ka thata hona jwale. Hemela hodimo mme o tsebe hore o motho wa bohlokwa.", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "O ka thusa motjha wa hao ho utlwisisa hore ho tlola melao ya lelapa ho fella ka ditlamorao.\n\nEmpa TSELA eo o etsang sena ka yona e bohlokwa.\n\nHo jarisa motjha ditlamorao hantle ho mo thusa ho itshwara hantle le ho etsa hore bophelo ba lelapa bo iketle hanyane...", + "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", + "text": "Hohle batswadi ba amehile haholo ka taba ena. Hopola ho sebedisa tsebo ya hao e ntjha ho tswela pele o qala tsela e ntle ya ho buisana le motjha wa hao.\n\nO ka ikgopotsa dikeletso tsa bohlokwa tsa ho lokisetsa polokeho ya batjha ba hao ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho jara ditlamorao moya o le fatshe.\n\nHo bohlokwa hore ha re qala ditlamorao ho batjha ba rona, re ba kenyelletse, empa hape ho bohlokwa hore re be re theotse moya ha re qala ditlamorao.\n\nSena se tla thusa hore re dumellane ka ho qala ditlamorao tse mosa ho batjha ba rona mme batjha ba rona ba tla di hopola kapele ha ba ameha mme seo se tla etsa hore ba jare boikarabelo.", + "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", + "text": "Hase moo. Haeba nakong e tlang ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le puisano – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le puisano – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", + "text": "Mathata a ditjhelete a ka imela motho. \n\nNeng kapa neng ha ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le boikgopotso – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le boikgopotso – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Hopola hore o ka fumana dikeletso le matlotlo a mangata a molemo ho @global.parent_centre - o ka kena ho yona neng kapa neng!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "A re bale se etsahetseng ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", + "text": "Ho ba motswadi hase ntho e bonolo. O entse hantle ka ho tsepamisa mohopolo tabeng ya ho tiisa hore motjha wa hao o sireletsehile. \n\nHopola, o ka fumana thuso e nngwe tabeng ena ho @data.workshop.w_safe.in_text_title neng kapa neng ha o e hloka!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! O leite!”", + "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", + "text": "Rea tseba hore ena ke ntho e thata. O ka ikgopotsa tse ding tsa dikeletso tse molemo tsa kamoo o ka qetang nako le motjha wa hao kateng ho @data.parent_centre.my_tips.location_text kapa o ka boela wa sheba @data.workshop.w_1on1.in_text_title.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape”. \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", + "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", + "text": "O entse hantle ka ho beha motheo o motle hakaalo! Kamehla o ka ikgopotsa @data.workshop.w_1on1.in_text_title ho fumana dikeletso tse ding tsa kamoo le ka qetang nako hammoho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: “Ke kopa ho o hlalosetsa, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ha o mamele molao! Ke tla o shapa!”", + "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", + "text": "Ho sebedisa epo ho bontsha hore o tsotella motjha wa hao. O ka ikgopotsa tsela ya ho sebedisa pabatso ho @data.parent_centre.my_tips.location_text.\n\nHore o fumane dikeletso tse eketsehileng tsa ho sebedisa tsebo ena hantle, o ka boela wa sheba @data.workshop.w_praise.in_text_title.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Ntho eo o e etsang ha e hantle! Ha ho na mohla o mmamelang!! Ke o hloile!”", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", + "text": "O etsa hantle hore o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. \n\nKamehla o ka boela wa sheba @data.workshop.w_praise.in_text_title hore o fumane dikeletso tse ding tsa kamoo tsebo ena e ka sebediswang hantle.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Buisanang: \n* Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", + "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "type": "template", "note": "" }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "Ho fana ka ditlamorao ka tsela ena ha ho a sebetsa hantle hobane...", + "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver o ne a halefile", + "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana la seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver ha aa dumella @global.w_consequence_teen_boy_1 ho itlhalosa", + "SourceText": "Customise for your needs", + "text": "E fetole bakeng sa ditlhoko tsa hao", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Ha ho a buisanwa le @global.w_consequence_teen_boy_1 ka ditlamorao tseo esale pele", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Batswadi bohle lefatsheng ba hula ka thata dinakong tseng tse boima. Dipotso tse latelang tse amanang le dintho tse o hlahetseng jwaloka motswadi di tla re thusa ho fumana thuso eo re e hlokang.\n\nTshepahala. Hopola hore ha o mong! Ho na le batswadi ba dimilione ba ikutlwang jwaloka wena, mme kaofela re tshwanelwa ke ho fuwa thuso.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "The consequence was too strong", - "text": "Ditlamorao di ne di le matla haholo", + "SourceText": "Thank you for being honest", + "text": "Rea leboha ka hore o arabe ka botshepehi", "type": "template", "note": "" }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Ke ditaba tse monate hore ebe o arabela o kgobile matshwafo ha motjha wa hao a etsa ntho e halefisang. A ka ithuta dintho tse ngata ho wena!", "type": "template", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "E, ho nkeha maikutlo ka tsela e matla hakaalo ho halefisitse le ho kwatisa motho e mong le e mong.", + "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", + "text": "Ke hantle hore ebe o tseba seo motjha wa hao a se etsang. Ho thata ho ba motswadi, empa kannete o a atleha ho ba boloka ba sireletsehile.", "type": "template", "note": "" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Batjha ba dula ba tlola melao. Kgolo ke nako e boima ha ba ithuta hore na ke bomang.\n\nKa lehlohonolo, ho na le ditsela tsa ho kgalemela batjha ntle le ho halefa kapa ho sebedisa dikgoka… ebile di sebetsa hantle!\n\nHo fana ka ditlamorao re kgobile matshwafo ho thusa batjha ho jara boikarabelo ka seo ba se etsang – ebang se setle kapa se sebe.\n\nMehlala ya taba ena ke ena - ipone o le motswadi:", + "SourceText": "You selected \"I would rather not answer\"", + "text": "O kgethile \"Ke kgetha ho se arabe\"", "type": "template", "note": "" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Ditlamorao tse kgutsitseng di lokela ho ba...\n\nTSE LOKILENG: E se be tse sehloho haholo mme ruri o ka di kgona\n\nHANGHANG: Mo jarise tsona kapele kamoo ho ka kgonehang\n\nTSE TSHWANANG: Ditlamorao tse tshwanang ka dinako tsohle", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Ho lokile!\n\nHopola, haeba o araba, karabo ya hao e tla bolokwa e le lekunutu ebile seo se tla re thusa ho o fa tlhahisoleseding e nepahetseng bakeng sa hao.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.", + "SourceText": "Are there adults in your family?", + "text": "Na ho na le batho ba baholo lapeng la hao?", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.\n\nKe ditlamorao dife tse ka thusang moo?", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "Epo ena e amehile ka batswadi ba nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - le wena o ka ithuta dintho tsa bohlokwa!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Ditlamorao ha di tshwane hantle le kotlo: di fa batjha ba rona monyetla wa ho ithuta ho jara boikarabelo ka diketso tsa bona.\n\nMme di fanwa ka tsela e laolehileng EBILE di atleha ho feta ho shapa kapa ho tjwedietsa motjha!", + "SourceText": "Are there teens in your family?", + "text": "Na ho na le batjha lapeng la hao?", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "Epo ena e amehile ka malapa a nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - o ka ithuta dintho tsa bohlokwa le bakeng sa lelapa la hao!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.\n\nke ditlamorao dife tse ka thusang moo?", + "SourceText": "Are you sure you want to skip this question?", + "text": "Na o tiile o batla ho feta potso ye?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Ditlamorao di atleha haholo haeba le buisane la ba la dumellana ka tsona esale pele le batjha pele le ka ba jarisa tsona.\n\nMme: hase ditlamorao tsohle tse bosula… Le ka boela la dumellana ka ditlamorao tse MOLEMO tsa ho etsa diketso tse MOLEMO hore o bone boitshwaro bo botle hangata!", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "Na o tiisitse o batla ho feta potso ye? Hopola, karabo ya hao e tla bolokwa e le lekunutu mme e tla re thusa ho utlwisisa ditlhoko tsa hao tsa botswadi.\n\nHape o ka kgetha ho se arabe potso efe kapa efe ka ho kgetha sedikadikwe.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.", + "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", + "text": "O entse hantle. Saense ya boko e bontsha hore ho laola kgalefo ho ntlafatsa kgolo ya boko ba batjha. Ikotle sefuba ka wena.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "What consequence would help here?", - "text": "Ke ditlamorao dife tse ka thusang boemong boo?", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", + "text": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.\n\nKe ditlamorao dife tse monate tse ka thusang moo?", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Tsela ya ho qala ditlamorao tse monate e bohlokwa. Hopola, ha o kenyelletsa motjha wa hao, hangata dintho di tsamaya bothebelele!", + "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", + "text": "Ena ke ntho eo batswadi hohle ba amehileng ka yona. Re tla etsa bonnete ba hore o fumana tshehetso ya ho matlafatsa dipuisano.\n\nRe tla bua haholo ka ho hlophisa polokeho ya motjha wa hao hamorao ho @global.weekly_workshops, empa o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tsa ho sireletsa motjha wa hao ho @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "EXPLAIN", - "text": "HLALOSA", + "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", + "text": "Hase moo. Re na le wekshopo ya ho bajeta ha malapa e ka thusang ka seterese sa ditjhelete ka kakaretso, le ho fokotsa dikgang tse amanang le ditjhelete.", "type": "template", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Tiisa hore bobedi ba lona le kgobile matshwafo. Hemela hodimo ka makgetlo a seng makae. Hlalosetsa motjha wa hao hore na ke hobaneng ha o kgathatsehile ka boitshwaro ba hae.\n\nHlalosa mabaka a hore na hobaneng ha ho hlokeha molao. O ka mo phetela maikutlo a hao - ho lokile ho mo bolella hore o swabile.", + "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", + "text": "Seterese sa ditjhelete se boima.\n\nRe na le wekshopo ya ho etsa bajete ya lelapa ka dibeke tse hlano, empa o se o ka fihlella tse ding tsa dikeletso tsa bohlokwa tsa lelapa tlasa @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "AGREE", - "text": "DUMELLANANG", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Dikateng tse hlahisitsweng ke dipotso tsena di se di fumaneha tlasa @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Hlophisa ditlamorao le motjha wa hao tsa ho latela molao le ho se o latele.\n\nMo botse hore na o nahana jwang. Buisanang ho fihlela le dumellana ka ho hong ho utlwahalang.\n\nEtsang ditlamorao tsa HO SE latele molao le tlotla ya ha A latela molao.", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", + "text": "Ha ho bonolo ho ba motswadi. O entse hantle ka ho ameha ka ho tiisa hore motjha wa hao o sireletsehile.\n\nRe tla fumana thuso e nngwe bakeng sa hao diwekshopong tse tla latelang ho @global.weekly_workshops haeba o ka thabela ho tseba le ho feta!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "ACT", - "text": "NKA BOHATO", + "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", + "text": "Rea tseba hore ena ke ntho e thata. Re kentse tse ding tsa dikeletso tsa kamoo o ka qetang nako le motjha wa hao ka teng ho @data.parent_centre.my_tips.location_text, kahoo o ka di fumana hanghang. \n\nKaha @data.workshop.w_1on1.title e haha motheo wa dithulusi tsohle tse ding tsa botswadi, e tla ba wekshopo eo o tla e amohela bekeng e tlang ya global.weekly_workshop!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Ha motjha wa hao a latela molao, mo babatse mme o mo fe dintho tse kgethehileng!", + "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", + "text": "O entse hantle! @global.weekly_workshop ya rona e latelang e tla o fa dikeletso tse ngata ntlheng ena, e le motheo wa dithulusi tse ding tsa botswadi. Empa o se o qadile ka leoto le letle!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "O tla ikutlwa a hlomphuwa ebile e le wa bohlokwa. Hopola: Ha o mo babatsa haholo, o tla bonahatsa boitshwaro boo bo botle!", + "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", + "text": "Ho sebedisa epo ena ho bontsha hore o tsotella motjha wa hao. Re kentse tse ding tsa dithulusi tsa bohlokwa tsa kamoo re sebedisa pabatso ho @data.parent_centre.my_tips.location_text ho fihlella dikeletso kapele.\n\nHo @data.workshop.w_praise.in_text_title ya rona o tla be o ithute dintho tse ngata mabapi le ho sebedisa tsebo ena.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Ha motjha wa hao a sa latela molao, mo jarise ditlamorao.", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", + "text": "O etsa hantle hore ee o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. Ho @data.workshop.w_praise.in_text_title o tla ithuta haholo ka tsela ya ho sebedisa tsebo ya sebedisa tsebo ena hantle.", "type": "template", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Ha motjha wa hao a tlola molao, ka mosa mo jarise ditlamorao tsa ketso ya hae. E lokela ho ba tse LOKILENG (eseng tse sehloho), HANGHANG (di jarise tsona ntle ho tshenyo ya nako) KA TSELA E TSHWANANG (ebe tse tshwanang nako le nako).", + "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Buisanang ka:\n* Ke melao efe eo motjha wa hao a e tlolang kgafetsa? \n* O ka sebedisa ditlamorao dife bakeng sa molao ka mong o tobileng o tlotsweng? \n\nDitlamorao di lokela ho ba: \nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako).\n\nBabatsanang le ho kgothatsana – re ka matlafatsana!", + "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", "type": "template", "note": "" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "A re kgutlele ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", + "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", + "text": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana le seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops - empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: \"Ke kgathatsehile ka hore o sa ntse o fihla lapeng leite mme sena se etsahala kgafetsa, @global.w_consequence_teen_boy_1. Re ka etsang ho o thusa ho hopola ho tla lapeng ka nako?\"\n\n@global.w_consequence_teen_boy_1: \"Ha ke fihla lapeng ka nako, mohlomong nka fihla metsotso e 30 pele ho nako e tlwaelehileng?\"", + "SourceText": "Talk Together", + "text": "Buisanang", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: O nahanne ntho e ntle! Mme jwale re tla etsang haeba o sa latele molao? \n\n@global.w_consequence_teen_boy_1 (o a korotla): “Mgmluuhm”", + "SourceText": "Share ideas, support each other!", + "text": "Eletsanang, tshehetsanang!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: \"Bona hle moshana, kea tseba hore ho na le ntho eo o e nahanang.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile…. Ho thweng ka: Ke tlameha ho etsa homeweke ya ka?\"", + "SourceText": "Think Together", + "text": "Nahanang Hammoho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: \"O lokela ho etsa homeweke ya hao hanghang. Ha o lebala molao, etlaba hantle hore letsatsing le hlahlamang o se ke wa bona metswalle ya hao.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile, @global.w_consequence_male_caregiver.\"", + "SourceText": "It's time to think together!", + "text": "Ke nako ya ho nahana hammoho!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Letsatsing le hlahlamang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Ke leite!”", + "SourceText": "Think", + "text": "Nahana", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape.” \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", + "SourceText": "It's time to think!", + "text": "Ke nako ya ho nahana!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: “E re ke o hlalosetse, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ke hara mpa ya bosiu mme o fihlile leite ka nako eo re sa dumellanang ka yona. Ho sa tsotellehe lebaka, o tlameha ho utlwisisa hore ntho ena ha e amohelehe. @global.w_consequence_female_caregiver mme ke utlwa ke tshwenyehile haholo.”", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Tsebo eo o lokelang ho ba le yona bekeng ena ke ena!\n\nE sebedise lapeng mme o e fumane neng kapa neng ho @global.parent_centre.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: “Metswalle ya ka e ne e batla re dule ho fihlela bosiu. E mpitsa ngwana hobane ke batla ho tla lapeng ka nako.” \n\n@global.w_consequence_male_caregiver: “Kea tseba hore ho ka ba thata ho hanyetsa metswalle ya hao. E re re bue ka taba eo hoseng ha re se re phomotse.”", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Nka moea o tebileng.\n2. Bona hore na litaba tseo lia utloahala.\n3. Botsa hore na ba fumane litaba hokae.\n4. Sheba hape le batho ba bang / mehloli eo u e tshepang.\n5. Nahana hore na litaba tsena li ka thusa kapa tsa tshosa batho feela ha u li arolelana.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo ke ile ka le tshwenya ebile @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Kea leboha. Tsa mo robala, empa o hopole, kaha o fihlile lapeng kamora nako eo re dumellaneng ka yona, hosane re ke ke ra o dumella ho tswa bosiu.”", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Ka linako tse ling kaofela re batla ho bolella bacha ba rona \"U tlameha ho etsa sena, kapa ho seng joalo... mathata!\", empa hangata ha e ba etse hore ba latele melao hantle.\n\nHo e-na le hoo, u ka thusa ngoan'a hao ho etsa liqeto tse ntle ka ho bontsa hore ua mo tshepa le ho bua le eena:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "A re bue ka pale ena", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "BUISANA KA LIPHELLO", "type": "template", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Ho mo jarisa ditlamorao ho atlehile lekgetlong lena hobane...", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Botsa hore \"na ha o ka etsa sena, ho ka etsahalang?\"", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver wa hae ba buisana ka ditlamorao ha bobedi ba bona ba theotse moya", + "SourceText": "If something goes well, praise your teen!", + "text": "Haeba ho nale ntho e tsamayang hantle, babatsa mocha oa hau!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "They agreed on consequences together", - "text": "Ba dumellana ka ditlamorao mmoho", + "SourceText": "REFLECT TOGETHER", + "text": "NAHANANG HAMMOHO", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver o arabetse a theotse moya empa a sa hlathe kwana le kwana ha @global.w_consequence_teen_boy_1 a tlotse molao", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "Ha ho nale ho phoso, botsa hore \"na u ka be u entse seo joang ka tsela e fapaneng\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver o ile a mamela @global.w_consequence_teen_boy_1", + "SourceText": "START SMALL", + "text": "QALA HANYENYANA", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Ditlamorao ebile tse utlwahalang le tse loketseng", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Neha mocha oa hao boikarabelo bo bonyenyane pele. Ha seo se tsamaea hantle, u ka eketsa tse ling ho bontsha hore u tshepa mocha oa hao.", "type": "template", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Ke hobaneng ha ho mo jarisa ditlamorao ho atlehile lekgetlong lee?", + "SourceText": "MAKE TIME", + "text": "ETSA NAKO", "type": "template", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "Ke ditlamorao dife tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng?\n\nHopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Etsa nako ea ho ba le li puisano ntle le litshitiso.", "type": "template", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Ho se bone metswalle efe kapa efe kgwedi kaofela", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Botsa mocha oa hao lipotso, ebile o mo lumelle hore a bollele ka maikutlo kapa menahano ea hae ntle le ho mo sitisa.", "type": "template", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Ena ekaba ntho e thata ho wena ebile e tla be e le sehloho!", + "SourceText": "WORK TOGETHER", + "text": "SEBETSANG MMOHO", "type": "template", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Ho tlohela ditokisetso tsa mokete wa letsatsi la tswalo o saletsweng ke kgwedi", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Buisanang ka bothata bo itseng, le fumane tharollo hammoho, ’me ka bobeli le etse seo le lumellanang ka sona.", "type": "template", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Ke ntho ya kgale haholo, ebile le ena e tla ba ketso e sehloho!", + "SourceText": "PRAISE", + "text": "BABATSA", "type": "template", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Ha ba shebelle TV mantsiboyeng ana", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Leboha mocha oa hau ka ho arolelana maikutlo hape le ho totobatsa hore kamoo e le thusa joang ka bobeli.", "type": "template", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Hase moo, ena e utlwahala e lokile ebile e ka etswa hanghang", + "SourceText": "Hear a caregiver's testimonial", + "text": "Mamela bopaki ba mohlokomeli", "type": "template", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Hlophisa ditlamorao tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng. Hopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", + "SourceText": "Read a caregiver's testimonial", + "text": "Bala bopaki ba mohlokomedi", "type": "template", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Boikwetliso ba hao ba lapeng bekeng ena e tla ba ho buisana le motjha wa hao ka ntho e le NNGWE e seng monate le ntho e le NNGWE e monate e tla etsahala e le ditlamorao.\n\nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako)", + "SourceText": "Why @local.workshop_data.title?", + "text": "Hobaneng @local.workshop_data.title?", "type": "template", - "note": "" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Boitshwaro bo Bobe: Ho fihla lapeng kamora hora eo ho dumellanweng ka yona. \n\nDitlamorao tse Bohloko: Ha a bone metswalle letsatsing le hlahlamang. \n\nBoitshwaro bo Bobe: Ho bua ka tello. \n\nDitlamorao tse Bohloko: Ngola lengolo la ho kopa tshwarelo. \n \nBoitshwaro bo Botle: Ho thusa ha ho ilo rekwa mabenkeleng. \n\nDitlamorao tse Monate: Metsotso e meng e 30 ya ho etsa ntho eo a e ratang eo a e kgethileng. \n\nBoitshwaro bo Botle: Ho thusa ho hlokomela bana babo ba banyane. \n\nDitlamorao tse Monate: Ho ekeletswa hora eo a e qetang le metswalle ya hae ka mafelobeke.", + "SourceText": "Hear @global.topic_intro_name's message", + "text": "Molaetsa wa @global.topic_intro_name ke ona", "type": "template", - "note": "" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "Great!", - "text": "Ke botle!", + "SourceText": "Read @global.topic_intro_name's message", + "text": "Bala molaetsa wa @global.topic_intro_name", "type": "template", - "note": "" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Kea tseba hore bophelo bo thata. Ke motlotlo ka wena.\n\nHo sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona!", + "SourceText": "Today's steps", + "text": "Mehato ya kajeno", "type": "template", "note": "" }, { - "SourceText": "Using the app together", - "text": "Ho sebedisa epo mmoho", + "SourceText": "Try it Together", + "text": "E Lekeng Hammoho", "type": "template", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Ke thabela ho o bona!\n\nE re re qale ka ho thusa sehlopha sa hao hore se qalelle.", + "SourceText": "Let's practice together.", + "text": "A re prakthiseng hammoho.", "type": "template", "note": "" }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Dumellanang ka melao ya motheo mmoho:\n* Re tla kopana ka (ma)letsatsi/(di)nako efe bekeng?\n* Ke mang ya tla tshwara (di)founo ha e lla nakong ya tshebetso ya rona?\n* Re ka etsang ho tiisa hore bohle ba kenella ka bolokolohi?\n* Kaofela re ka etsang hore re ikutlwe re hlomphuwe?", + "SourceText": "What does that mean?", + "text": "Na seo se bolelang?", "type": "template", "note": "" }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "O ka fetola matsatsi a hao a wekshopo le lebitso la sehlopha sa hao neng kapa neng ho @global.weekly_workshop_options.", + "SourceText": "How can you help?", + "text": "u ka thusa joang?", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "Some rules that other groups made:", - "text": "Melao e meng eo dihlopha tse ding di e entseng:", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Ho utloisisa hore na ngoana oa hao o ikutloa joang le hore na u ka mo tshehetsa joang ho etsa phapang e khōlō ho lōna ka bobeli! Hlokomela ngoana oa hao ea lilemong tsa bocha ’me u mo botse hore na o ikutloa joang. Tobetsa sefahlehong se ka tlase ho tseba haholoanyane:", "type": "template", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "* Labobedi ka 7 mantsiboya ke nako ya hore re be mmoho ho @global.parent_app\n* Tjhentjhanang ka hore na ke mang ya tshwarang mohala (motho ka mong o etsa ketso e 1)\n* Amohelang dintho tseo kaofela di le hlahetseng. Kaofela ha re tshwane!\n* Tjhentjhanang ka ho bua le ho mamelana\n* Dipotso tsohle dia amohelwa\n* Seo re buang ka sona se fella hara rona", + "SourceText": "Hopeful", + "text": "Tshepo", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "O kgalala!\n\nLetsatsi le letsatsi, lebohela seo o se entseng hantle. Iputse ka ho hong ho o thabisang. Mme o hemele hodimo ho o thusa ho theola moya. \n\nHopola, o fumana ntlha ya @global.parent_point nako le nako ha o itlhokomela - o motho wa bohlokwa!", + "SourceText": "Resilient", + "text": "O matla", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Ho thata haholo ho ba motswadi. Ka dinako tse ding ekare bana ba rona ha ho mohla ba re mamelang.\n\nEmpa saense e bontsha hore ho qeta metsotso ese mekae letsatsi ka leng re amehile ka nako ya boinotshing le batjha ba rona ho etsa hore re tshepane le ho ratana.", + "SourceText": "Self-esteem", + "text": "boitlhompho", "type": "template", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Nako ya boinotshing ke ha re amehile ka bona feela, ntle ho TV kapa difouno. Ba tlohelle ba etelle pele ho seo le se etsang kapa seo le buang ka sona.\n\nHo ka ba molemo ho qeta metsotso e mashome a mabedi ka letsatsi, empa le metsotso e mehlano ka letsatsi e molemo haholo.", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Bacha ba na le lipakane le litoro tsa bokamoso - tse haufi le hole!", "type": "template", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Dumela.\n\nSehlooho sa rona sa kajeno ke nako ya boinotshing le bana ba rona.\n\nHo bohlokwa ho qeta nako ya boinotshing le bana ba rona hore ba ka re utlwisisa, le hore re kgone ho fumana monyetla wa ho ba utlwisisa.\n\nHopola, lelapa le utlwisisanang hantle le phela ka kutlwano.", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Botsa mocha oa hao ka lipakane le litoro tsa hae, mo khothalletse ho nahana ka seo a se batlang bakeng sa bokamoso ba hae, 'me u etse moralo hammoho ho sebeletsa ho li phethahatsa.", "type": "template", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Bacha ba matla ba ka sebetsana le maemo a thata, ba ikamahanya le liphetoho, 'me ba rarolla mathata ha ba hlaha.", "type": "template", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Diketso tsa ho itlhokomela\n* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Babatsa mocha oa hao bakeng sa ho hlola mathata 'me u mo tšehetse moo u ka khonang.", "type": "template", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Neanang malebela! \n\nKe dintho dife tseo o ka di etsang hore o qete nako ya boinotshing le batjha ba hao?\n\nNa o utlwa eka ha o NA NAKO ebile o kgathetse? O tle ka dikeletso bakeng sa nako ya boinotshing tse sa nkeng nako e ngata, jwaloka ho tsamaya mmoho ha le ya mabenkeleng mmoho.", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "Boitlhompho ba mocha ke tsela eo ba inahanang ka eona.", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Khothalletsa ponahalo entle ea setsoantsho sa bouena, beha mohlala oa hore u se ke ua soma kapa ua itshoaea liphoso ka linako tsohle. Tseba matla a mocha oa hao ’me u tshehetse mefokolo ea bona.", "type": "template", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "A re nahane ka ditsela tsa ho qeta nako ya boinotshing le motjha wa hao.", + "SourceText": "Lonely", + "text": "Bolutu", "type": "template", "note": "" }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "O ka etsang hore o qete nako ya boinotshing le motjha wa hao?", + "SourceText": "Anxious", + "text": "Tšoenyehile", "type": "template", "note": "" }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "Na o utlwa eka HA O NA NAKO ebile o kgathetse?\nHopola ho nahana le ka ditsela tse sa jeng nako e ngata.", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Bacha ba ka ikutloa ba le bang, esita leha ba e-na le ba bang. Ba ka ’na ba ikutloa eka ha ba na motho eo ba ka buang le eena, ba mo tshepang kapa ba ka arolelanang le eena.", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Botsa hore na mocha oa hau o ntse a phela joang, 'me u leke ho fumana mekhoa e mecha ea ho sebelisana le metsoalle le ba lelapa - haholo-holo nakong ea koalo.", "type": "template", "note": "" }, { - "SourceText": "DAY - Try to do it every day", - "text": "LETSATSI - Lekang ho etsa sena letsatsi le letsatsi", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Matshoenyeho ke maikutlo a tloaelehileng ’me a ka re thusa ho sebetsana le maemo a thata. Empa ho tshoenyeha ho feteletseng kapa ho tshoenyeha ho sitisang bacha ho etsa lintho tseo ba li ratang ke bothata.", "type": "template", "note": "" }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Fumana metsotso e 5 (kapa ho feta!) letsatsi le letsatsi ha ho se na ntho eo motjha wa hao a batlang ho e etsa.", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Thusa mocha oa hau ho tseba hore na ke eng e etsang hore a tshoenyehe 'me u etse moralo hammoho hore na a ka arabela menahanong e tshoenyang joang.", "type": "template", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "BAPALA - E re motjha wa hao a kgethe", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Ho etsa mosebetsi oa boikhathollo hammoho ho ka thusa!", "type": "template", "note": "" }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Bolella motjha wa hao hore o ka thabela ho qeta nako le yena mme ke yena ya tla kgetha hore le tla etsang le hore na le tla bua ka eng. Qalong a ka nna a o makalla empa o tla thabela nako ena eo o e qetang le yena!", + "SourceText": "Depressed", + "text": "Tepelletse maikutlong", "type": "template", "note": "" }, { - "SourceText": "STAY - Focus on your teen", - "text": "DULA - Tsepamisa mohopolo motjheng wa hao", + "SourceText": "Self-harm", + "text": "Ho itematsa", "type": "template", "note": "" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Tima TV mme o behelle difouno kathoko. Sheba motjha wa hao. Oma ka hlooho mme o re \"Kea bona\" ho bontsha hore kannete o mo ela hloko. Amohela seo a o bolellang sona o sa mo ahlole.", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Ho hlonama kapa ho nyahama, ho ba boemong bo bobe, kaofela ke maikutlo a tloaelehileng a batho. Khatello ea maikutlo ke ha e tsoela pele ka nako e telele 'me mesebetsi e tloaelehileng ea letsatsi le letsatsi ea mocha e ameha. Ngoana oa hau a ka ikutloa a se na tshepo 'me a sitoa kapa a sa susumelletsehe ho fetola letho.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Nako ya boinotshing le motjha wa hao e ka o thabisa le wena! Hape seo se ka nna sa o hafolela seterese.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Ho bolella ngoana oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Leka ho fumana thuso ea litsebi.", "type": "template", "note": "" }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Qeta metsotso e 5-20 ya nako ya boinotshing le motjha wa hao, o ka etsa seo letsatsi le letsatsi bekeng ena.", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Ka linako tse ling bacha ba ka intsha kotsi ka boomo ho sebetsana le maikutlo a nyahamisang a kang khalefo, molato, lefeela, kapa ho itlhoea. Sena se ka bakoa ke ho tshoenyeha kapa ho tepella maikutlong.", "type": "template", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Hopola - neng kapa neng ha o kgona, phomola, iphumane mme o iputse.\n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Ho bolella mocha oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Haeba mocha oa hao a ikemiselitse ho hlalosa kamoo ho intsha kotsi ho etsang hore a ikutloe a le betere, u ka qala ho utloisisa mabaka. Leka ho fumana.", "type": "template", "note": "" }, { - "SourceText": "Remember that YOU matter!", - "text": "Hopola hore WENA o motho wa bohlokwa!", + "SourceText": "A teen sometimes does something because they:", + "text": "Ka linako tse ling mocha o etsa ho hong hobane o:", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "O entse hantle ka ho lemoha boikutlo bo botle. Ke thabela ho utlwa hore o ikutlwa hantle kajeno!", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "-Mamela metsoalle ea bona\n- Batla ho etsa seo ba bang ba se etsang\n- Nahana haholo ka 'hona joale' ho feta 'hamorao'\n- Litšusumetso tsa lerato 'me u ka fumana ho ba hlokolosi ho tena\n- Se ke oa tšoenyeha ka kotsi - e kanna ea rata likotsi\n- E-ba le boiphihlelo bo fokolang boo u ka itšetlehang ka bona\n- Ba ikemiselitse ho leka ho hong - ho sa tsotelehe se etsahalang", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "O entse hantle ka ho lemoha boikutlo bo bohloko. Hase phoso ho se ikutlwe hantle ka dinako tse ding. Hopola hore ha o mong.", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Ho ka thusa ho hopola sena ha ngoana oa hao a etsa qeto e fosahetseng. Buisana le bona ’me le qete nako le le ’moho hore le tle le ba thuse ho khetha hamolemo nakong e tlang!", "type": "template", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "O entse mosebetsi o tswileng matsoho. E nngwe le e nngwe ya ditlwaelo tsena e matlafatsa lelapa la hao. Ikotle sefuba.", + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "O ka nna wa kopuwa ho romela khoutu ena ho batho ba tla o tshehetsa leetong la hao la @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Melao e thusa batjha ho utlwisisa hore na ho lebeletswe eng ho bona.\n\nHo na le menyetla e mengata ya hore batjha ba mamele melao haeba melao e etswa LE batjha mme ba babatswa ha ba e latela!", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Lekgetlo la ho qetela la ho phera: @local.sync_latest", "type": "template", - "note": "" + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke melao.\n\nMelao e kgothalletsa kgotso ka lapeng ebile e kgothalletsa ditho tsa lelapa ho utlwisisana.\n\nMelao e kgothalletsa setho ka seng sa lelapa ho jara boikarabelo; kahoo, ho bohlokwa ho ba le melao ya lelapa.\n\nLelapa le nang le melao ya lelapa le phela ka kgotso.", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Sesebediswa sena ha se eso pherwe. Phera ho senola khoutu ya hao.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le puisano – e sa atlehang… \n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Sync now", + "text": "Phera hona jwale", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le boikgopotso – e sa atlehang… \n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Syncing...", + "text": "E a phera...", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "A re bale se etsahetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 wa hae:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" - }, - { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: \"O dula o fihla leite lapeng!\"\n\n@global.w_rules_teen_boy: \"Nna ha ke fihle leite, ha ke tsebe le hore na leite e bolelang! Ako tlohele ho nkemella.\"", + "SourceText": "Watch Together", + "text": "E Shebelleng Mmoho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Ke molao ofe o tobileng oo @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o etsang mmoho?", + "SourceText": "Let's watch a video together!", + "text": "A re shebelle video mmoho!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "A re boneng hore na @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba entse sena jwang letsatsing le hlahlamang:\n\n@global.w_rules_female_caregiver_1: “Ke batla hore o ithabise, @global.w_rules_teen_boy, empa hape ke kgathatsehile hore o fihla lapeng mona leite. Na o tseba lebaka la seo?” \n\n@global.w_rules_teen_boy: “Hobane o batla hore ke be le nako e lekaneng ya mosebetsi wa ka wa sekolo?”", + "SourceText": "Watch", + "text": "Shebella", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: “Ho lokile, ebile ho kotsi, o ka lemala sebakeng sena ha o le kantle kamora hore letsatsi le dikele. O nahana hore o tlameha ho fihla lapeng ka nako mang?”", + "SourceText": "Let's watch a video!", + "text": "A re shebelle video!", "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “Ke nahana hore nka fihla lapeng ka 10 ya bosiu?\" \n\n@global.w_rules_female_caregiver_1: “Ekare ke bosiu haholo, mantsiboya ka 6 ho tla ba jwang? Kapa neng neng ka dinako tseo?\"", + "SourceText": "Options", + "text": "Dikgetho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “Nka fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo ebe ke fihla ka bosiu ka 10 ka Labohlano le ka Moqebelo?” \n\n@global.w_rules_female_caregiver_1: “E, ho lokile. Ho tloha jwale ho ya pele, molao wa lelapa ke hore o lokela ho fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo le bosiu ka 10 ka Labohlano le ka Moqebelo. Empa kamehla o felehetswe ke motswalle wa hao. Akere?”", + "SourceText": "Welcome @fields.user_name", + "text": "Rea o amohela @fields.user_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: “E, ho lokile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboha haholo, @global.w_rules_teen_boy, hore o re thuse ho etsa molao o motle mmoho. Ke motlotlo ka wena le ho bona kamoo o jarang boikarabelo kateng.”", + "SourceText": "It's great to see you again!", + "text": "Re thabela ho o bona hape!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Letsatsing le hlahlamang...\n\n@global.w_rules_female_caregiver_1: “Kea leboha, @global.w_rules_teen_boy, ha o fihlile lapeng ka nako. Ha o qetile mosebetsi wa hao wa sekolo, re ka ja dijo tseo o di ratang tsa mantsiboya.”", + "SourceText": "Welcome @fields.group_name", + "text": "Rea o amohela @fields.group_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Making the rule together went well because...", - "text": "Ho etsa molao mmoho ho tsamaile hantle hobane...", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Re thabela ho o bona hape! A re qale ka pina e binwang ke malapa hohle.", "type": "template", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Ba ile ba buisana ka mabaka a molao oo\n* @global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy\n* Molao o ne o hlakile, o toba taba, ebile o lokile\n* @global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse ha ho etswa molao", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" - }, - { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy o ile a tseba hore @global.w_rules_female_caregiver_1 o a mo rata hobane...", + "SourceText": "Let's Slow Down", + "text": "A re Theole Moya", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* O ile a mo babatsa\n* O ile a mo putsa hobane a latetse molao", + "SourceText": "How would you like to do this workshop?", + "text": "O ka thabela ho etsa wekshopo ena jwang?", "type": "template", "note": "" }, { - "SourceText": "Let's think about what happened in this story.", - "text": "A re nahaneng ka se etsahetseng paleng ena.", + "SourceText": "Coming soon", + "text": "E tla haufinyane", "type": "template", "note": "" }, { - "SourceText": "What went well here in making a rule together?", - "text": "Ke eng e tsamaileng hantle mona ha ho etswa molao mmoho?", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Re tla tlameha ho tshohla ditaba tse ding tsa botswadi pele re qala ho sebetsa ka @local.workshop_data.title.\n\nO ka fumana dithulusi tsa bohlokwa ho @local.workshop_data.title ka @global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Ba ile ba buisana ka mabaka a molao", + "SourceText": "My name", + "text": "Lebitso la ka", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy", + "SourceText": "@global.weekly_workshop day", + "text": "Letsatsi la @global.weekly_workshop", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "The rule was clear, specific and fair", - "text": "Molao o ne o hlakile, o toba taba ebile o lokile", + "SourceText": "I do the workshops...", + "text": "Ke etsa diwekshopo...", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse hore ho etswe molao", + "SourceText": "My group's name", + "text": "Lebitso la sehlopha sa ka", "type": "template", "note": "" }, { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Ka sebele, ho etsa melao e hlakileng mmoho le ka moya o tlaase le o motle ho a atleha!", + "SourceText": "My group is now doing the workshop...", + "text": "Hona jwale sehlopha sa ka se etsa wekshopo...", "type": "template", "note": "" }, { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "O nahana hore @global.w_rules_teen_boy o tsebile jwang hore @global.w_rules_female_caregiver_1 o a mo rata?", + "SourceText": "I am now doing the workshop...", + "text": "Hona jwale ke etsa wekshopo...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "She praised him", - "text": "O ile a mo babatsa", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Dipotso tsena tse kgutshwanyane di tla tshwanela epo ena e buang ka ditlhoko tsa hao.", "type": "template", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "O ile a mo putsa ha a latetse molao", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "A re qale ka dipotso tse seng kae tse amanang le wena le lelapa la hao.", "type": "template", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Ka sebele ho jwalo - karabo e ntle e tlisa phapang e kgolo!", + "SourceText": "We would love to know your first name or nickname:", + "text": "Re lakatsa ho tseba lebitso kapa lebitso la hao la boswaswi pele:", "type": "template", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Melao ya lelapa e thusa ho boloka batjha ba rona ba sireletsehile, le ho utlwisisa se lebeletsweng ho bona. Ha o kenyelletsa motjha wa hao ha o etsa melao, ho na le monyetla o moholo wa hore a e hlomphe.", + "SourceText": "Are you a woman or a man?", + "text": "Na o mosadi kapa o monna?", "type": "template", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "MELAO YA SEHLOPHA", + "SourceText": "Woman", + "text": "Mosadi", "type": "template", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Rera melao LE motjha wa hao. Qala ka molao o le mong wa pele o motjha - o ka kenyelletsa o mong hamorao. Buisanang ka mabaka a molao oo mme o mamele maikutlo a hae.", + "SourceText": "Man", + "text": "Monna", "type": "template", "note": "" }, { - "SourceText": "REAL RULES", - "text": "MELAO YA SEBELE", + "SourceText": "How old are you?", + "text": "O dilemo di kae?", "type": "template", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "Etsa hore e tsamaisane le maemo a sebele bakeng sa motjha wa hao, mme e hlake le ho toba taba e le hore ho se utlwisisane ho se be teng. Eseng ‘ka nako’ empa ‘ka 7 mantsiboya’.", + "SourceText": "Adults", + "text": "Batho ba baholo", "type": "template", "note": "" }, { - "SourceText": "PRAISE RULES!", - "text": "MELAO YA PABATSO!", + "SourceText": "Teens", + "text": "Batjha", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Babatsa motjha wa hao ka ho rala molao le wena, mme o mo babatse ha a o hlompha!", + "SourceText": "Children", + "text": "Bana", "type": "template", "note": "" }, { - "SourceText": "Online Safety", - "text": "Boipaballo Inthaneteng", + "SourceText": "Babies", + "text": "Masea", "type": "template", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Melao e bohlokwa ho tiisa hore batjha ba hao ba sireletsehile - le inthaneteng. Taba ena e tshohlwa haholo Wekshopong ya Beke le Beke ha ho rerwa tsa polokeho, empa hona jwale a re shebeng taba ena ka lekgetlo la pele!", + "SourceText": "How many people are in your household?", + "text": "Ho na le batho ba bakae ka palo lapeng la hao?", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, na o entse homeweke ya hao?\"\n\n@global.w_rules_teen_girl: \"Ke kopa motsotsonyana @global.w_rules_female_caregiver_2, ke sa qetela @global.teen_social_medium video ena\"", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "O ka etsa @global.weekly_workshops o le mong KAPA o ka mema ditho tse ding tsa lelapa la hao kapa metswalle hore ba be le wena - ho na le dintho tse ngata tseo le tla di rutana. Ho ho wena!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: \"O setantshi se hlwahlwa e le kannte! Ako mpolelle hore na ke hobaneng ha o rata ho tantsha?\"\n\n@global.w_rules_teen_girl: \"Metswalle yohle ya ka e rata tantshi, @global.w_rules_female_caregiver_2. Ho na le batho ba 600 ba ratang tantshi ya ka inthaneteng le balatedi ba 120.\"", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops jwang?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka tsela eo o tantshang ka yona, @global.w_rules_teen_girl. Empa re tlameha ho tiisa hore o sireletsehile. \n\nKea tseba hore metswalle ya hao e sheba @global.teen_social_medium, empa ha akhaonte e bonwa ke bohle, ho na le batho ba bang ba shebang divideo tsa batjha ka mabaka a bona a ditaba tsa thobalano. Ka dinako tse ding ba buisana le batjha. Ba iketsa eka ba mosa empa ba qetella ba sokela le ho hlekefetsa batjha.\"", + "SourceText": "Can you think of a name for your group?", + "text": "O nahana hore lebitso la sehlopha sa hao ekaba mang?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: \"A re kene inthaneteng mmoho mme re bone hore na re ka etsang ho tiisa hore ntho ena eo o e thabelang e boetse e bolokehile. Bona – o ka etsa hore akhaonte ya hao e be poraefete le ho laola hore na ke mang ya o salang morao.\n\nKahoo o ka amohela batho bao o ba tsebellang sekolong kapa motseng mona, empa eseng batho bao o kopanang le bona inthaneteng.\n\nNa re ka etsa molao mmoho hore o ka sebedisa @global.teen_social_medium, empa e le akhaonte e poraefete? Kea o tshepa hore o a tseba hore na ke mang eo o ka mo amohelang!”", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops ka matsatsi afe a beke?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: \"Ke ikotla sefuba ka wena @global.w_rules_teen_girl\"", + "SourceText": "Monday", + "text": "Mantaha", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" + "note": "" }, { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Ke molao ofe o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao? \n* O nahana hore motjha wa hao o tla ikutlwa jwang ka molao oo? \n\nHopola, etsa melao e tobileng le ya sebele!", + "SourceText": "Tuesday", + "text": "Labobedi", "type": "template", "note": "" }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Ena ke e meng ya melao eo malapa a mang a e qadileng:", + "SourceText": "Wednesday", + "text": "Laboraro", "type": "template", "note": "" }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Motjha a ka bapalla kantle kamora ho qeta homeweke\n* Ditho tsohle tsa lelapa di ja dijo tsa tinare mmoho\n* Motjha wa 1 o hlatswa dijana ka Sontaha le ka Mantaha, Motjha wa 2 ka Labobedi le Laboraro\n* Re buisana ka mosa le hamonate\n* Ha o mametse mmino o tlameha ho sebedisa di-earphone", + "SourceText": "Thursday", + "text": "Labone", "type": "template", "note": "" }, { - "SourceText": "Let's practice making rules.", - "text": "A re tlwaeleng ho etsa melao.", + "SourceText": "Friday", + "text": "Labohlano", "type": "template", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Ngola molao o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao – o tla be o etsa sena e le boikwetliso ba lapeng bekeng ena.\n\nO tla nahanang ka wona?", + "SourceText": "Saturday", + "text": "Moqebelo", "type": "template", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Bekeng ena, beha molao o le mong mmoho le motjha wa hao.\n\nHopola ho babatsa motjha wa hao kamora moo!", + "SourceText": "Sunday", + "text": "Sontaha", "type": "template", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "Ke thabela ho utlwa hore o etsa hantle. O motswadi wa mmakgonthe!", + "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa sehlopha sa hao beke le beke. Sena se tla fa bohle monyetla wa ho leka seo ba ithutileng sona ha ba na le ba malapa a bona pele ba hahella tsebo e latelang.", "type": "template", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Ke maswabi ho utlwa hore kajeno dintho ha di o tsamaele hantle. O entse hantle ka ho leka ho rarolla bothata. Ha ho na motho ya nang le dikarabo tsohle empa kannete o entse sohle seo o ka se kgonang!", + "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa hao beke le beke. Sena se tla o dumella ho leka seo o ithutileng sona ha o na le ba lelapa la hao pele o hahella tsebo e latelang.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Ke maswabi ho utlwa hore letsatsi la hao la kajeno ha le monate. O etsa hantle ka ho tsoha hoseng ho hong le ho hong mme o leke hape, leha o ikutlwa o kgathetse. Sena ke sebete sa nnete le boitelo!", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "O ka fetola diseting tsena neng kapa neng ho @global.weekly_workshop_options ya hao.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Bohato ba 1: Pheta se tsamaileng hantle le se tsamaileng hampe", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "Na o tiile o batla ho notlolla diwekshopo tsohle? Hang ha o entse jwalo, o ke ke wa kgona ho di notlela hape", "type": "template", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "\"Ke ithutile dintho tse ngata haholo ka bophelo ba motjha wa ka nakong ya boinotshing! Empa kamora letsatsi la pele, motjha wa ka o ne a ipatlela ho bapala ka founo ya hae feela.\"", + "SourceText": "Unlock Workshops", + "text": "Notlolla Diwekshopo", "type": "template", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Bohato ba 2: Fana ka dikeletso!", + "SourceText": "Using the app together", + "text": "Ho sebedisa epo mmoho", "type": "template", "note": "" }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "\"O entse hantle ka hore o leke! Mohlomong o ka sisinya hore le etse dintho tse ding tse monate mmoho le motjha wa hao.\"\n\n\"E, kapa na le ka etsa ho hong mmoho ka founo ya hae? Kapa na a ka o bontsha hore na founo ya hae e sebetsa jwang?\"", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Ke thabela ho o bona!\n\nE re re qale ka ho thusa sehlopha sa hao hore se qalelle.", "type": "template", "note": "" }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Bohato ba 3: Kgetha mme o leke e nngwe!", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Dumellanang ka melao ya motheo mmoho:\n* Re tla kopana ka (ma)letsatsi/(di)nako efe bekeng?\n* Ke mang ya tla tshwara (di)founo ha e lla nakong ya tshebetso ya rona?\n* Re ka etsang ho tiisa hore bohle ba kenella ka bolokolohi?\n* Kaofela re ka etsang hore re ikutlwe re hlomphuwe?", "type": "template", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Kea leboha ka dikeletso tseo tse babatsehang! E, hosane ha sekolo se tswa ke tla kopa motjha wa ka hore a mpontshe hore na founo ya hae e sebetsa jwang. Na ho na le ya ka ithaopelang ho ba motjha wa ka hona jwale, e le hore ke prakthise ho mo kopa?”", + "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "text": "O ka fetola matsatsi a hao a wekshopo le lebitso la sehlopha sa hao neng kapa neng ho @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Nahana hore na mesebetsi ya hao ya lapeng e tsamaile jwang bekeng ena. \n\nTjhentjhanang ha le tshohla taba:\n\n* Ke eng e tsamaileng hantle hona bothata bo bile hokae?\n* Ha le kopanya dihlooho, le nahana hore tharollo ekaba efe?\n* Kgethang tharollo e le nngwe mme le e leke hamorao le motjha wa lona! \n\n(Kapa le ka e prakthisa hona jwale e le hore ho be bonolo hamorao!)", + "SourceText": "Some rules that other groups made:", + "text": "Melao e meng eo dihlopha tse ding di e entseng:", "type": "template", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Ho babatsa ke tsebo e matla haholo ya botswadi.\n\nHa re babatsa batjha ba rona ha ba etsa ntho e ntle, re tla ba bona ba ipabola le ho feta ka makgabane a mangata!", + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "* Labobedi ka 7 mantsiboya ke nako ya hore re be mmoho ho @global.parent_app\n* Tjhentjhanang ka hore na ke mang ya tshwarang mohala (motho ka mong o etsa ketso e 1)\n* Amohelang dintho tseo kaofela di le hlahetseng. Kaofela ha re tshwane!\n* Tjhentjhanang ka ho bua le ho mamelana\n* Dipotso tsohle dia amohelwa\n* Seo re buang ka sona se fella hara rona", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Dumelang bohle.\n\nSehlooho sa rona sa kajeno ke pabatso.\n\nHo molemo ho babatsa bana ba rona ha ba etsa dintho tse ntle hobane ha re etsa jwalo, ba tla itshwara hantle le ho feta ka tsela eo re batlang ho ba bona ka yona.\n\nLe rona re se ke ra lebala ho ipabatsa ha re entse dintho tse ntle!", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Qeta metsotso e 5-20 ya nako ya boinotshing le motjha wa hao, o ka etsa seo letsatsi le letsatsi bekeng ena.", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Ditholwana tsa pabatso\n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Hopola - neng kapa neng ha o kgona, phomola, iphumane mme o iputse.\n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Ditholwana tsa pabatso\n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Batswadi ba bangata ba tobana le diphephetso tsa ho qeta nako ya boinotshing le batjha ba bona.\n\nTsena ke diphephetso tse 8 tse ka sehloohong tseo batswadi ba itseng ba tobanang le tsona ha ba hlophisa kapa ba qeta nako ya boinotshing le batjha ba bona. Haeba o tobana le e nngwe ya tsena kapa o tshaba hore o ka tobana le yona, e tobetse ho fumana tharollo e ka nnang ya sebetsa. O ka tobetsa mme wa ithuta ka diphephetso tse ding kamora moo.", "type": "template", "note": "" }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Phetelanang ditaba:\n\n* Motho e mong o qetetse neng ho o leboha kapa ho o bolella ntho e monate? \n* Seo se ile sa etsa hore o ikutlwe jwang? \n* O ikutlwa jwang ha ho se na motho ya o lebohang kapa ya o babatsang ha o entse ntho e itseng? \n\nHangata ha re lebohuwe kapa ho babatswa ka ho lekaneng jwaloka batswadi. Mohlomong ke nako ya ho behela motjha wa hao mohlala o motle mme o qale ka ho mo babatsa ha a entse ntho e itseng hantle!", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "Na o bile le diphephetso dife kapa dife ha o leka ho qeta nako le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Nahana ka lekgetlo la ho qetela ha motho e mong a ne a o leboha, kapa a bolela hore o entse ntho e itseng hantle.", + "SourceText": "What challenge did you have when trying to spend time with your teen?", + "text": "Ke phephetso efe eo o bileng le yona ha o leka ho qeta nako le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "Seo se ile sa etsa hore o ikutlwe jwang?", + "SourceText": "I don’t have enough time.", + "text": "Ha ke na nako e lekaneng.", "type": "template", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Hangata batswadi ha ba lebohuwe kapa ho babatswa ka ho lekaneng.", + "SourceText": "My teen does not want to spend time with me.", + "text": "Motjha wa ka ha a batle ho qeta nako le nna.", "type": "template", "note": "" }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "O ikutlwa jwang ha motho e mong a re ho wena \"kea leboha\"?", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "Motjha wa ka o batla ho shebella TV feela kapa ho bapala ka founo ya hae.", "type": "template", "note": "" }, { - "SourceText": "Tired", - "text": "O kgathetse", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "Motjha wa ka o batla ho etsa dintho tse sa sireletsehang kapa tse jang tjhelete.", "type": "template", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Le motjha wa hao a ka ikutlwa ka tsela eo. Ke sona se etsang hore thulusi ya beke ena ya botswadi e be e bonolo empa e le bohlokwa: Mo babatse ha a entse dintho hantle.", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "Motjha wa ka o batla ho etsa dintho tseo ke sa kgoneng ho di etsa.", "type": "template", "note": "" }, { - "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "text": "Pabatso ke moriana o matla haholo. \n\nA re shebeng mohlala wa @global.w_praise_female_caregiver_name le baradi ba hae:", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "Motjha wa ka o kgethile papadi ya tlhodisano. Ha ke hlola o ile a kwata.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "text": "Ha @global.w_praise_female_caregiver_name a phathahane, hangata baradi ba hae ba babedi baa lwana. Empa kajeno, moradi wa hae e moholwanyane o thusitse moena wa hae ka mosebetsi wa hae wa sekolo!", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Ho bile thata ho nna ha nako ya boinotsing e fela.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "text": "@global.w_praise_female_caregiver_name: \"Kea leboha hore ebe o entse mosebetsi wa hao wa sekolo, @global.w_praise_girl, ebile kea leboha hore ebe o thusitse ngwaneno, @global.w_praise_teen_girl. Ke ikotla sefuba ka lona!\"", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Bana bohle ba ka ba batla nako ya boinotshing le nna ka nako e tshwanang.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss this story.", - "text": "A re buisaneng ka pale ena.", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "E, kannete ho ka ba thata haholo ho fumana nako motshehare, ka lebaka la mosebetsi, mabaka a lelapa le dintho tse ding tseo ke di etsang.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Buisanang:\n\n* Pabatso e entse hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?\n* Ke hobaneng ha a ile a ba babatsa?", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Ke maswabi hore o ile wa thatafallwa ke seo. Re ka utlwa bohloko ha bana ba rona ba sa batle ho qeta nako ya boinotshing le rona.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name o ile a babatsa batjha ba hae...", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Ke nahana ka nako eo ka yona motjha wa ka a mphutholohelang, jwaloka hoseng kapa pele a ilo robala.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Ho etsa hore ba etse seo hangata\n* Ho mo thusa hore a qete mosebetsi wa hae\n* Hore ba ikutlwe ba thabile\n* Hore a ikutlwe a thabile", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Ke dula haufi le motjha wa ka ha a etsa ho hong hoo a ho ratang mme ke bontsha thahasello ya dintho tseo a di ratang.", "type": "template", "note": "" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Pabatso e ile ya etsa hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?", + "SourceText": "Do something fun with the whole family.", + "text": "Re etsa dintho tse monate re le lelapa kaofela.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "Why did she praise them?", - "text": "Ke hobaneng ha a ile a ba babatsa?", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Ke ditaba tse monate! Ho kgetha nako eo motjha wa hao a buang haholo ka tsona ho tla mo thusa ho arabela hantle ha o leka ho matlafatsa dikamano.", "type": "template", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Hore ba etse seo hangata haholo", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Ho a thabisa! Ho shebella lenaneo la T.V. leo motjha a le ratang kapa papadi mmoho ho tla mo bontsha hore o a mo tsotella. O be le mamello; ho tla nka nako pele a phutholoha!", "type": "template", "note": "" }, { - "SourceText": "To help her finish her work", - "text": "Ho mo thusa hore a qete mosebetsi wa hae", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Ke hantle! Ka dinako tse ding ho ka ba bonolo ho qala ka ho qeta nako le lelapa lohle. Ka tsela eo motjha wa hao a ka phutholoha haholo ho qeta nako ya boinotshing le wena ha nako e ntse e feta.", "type": "template", "note": "" }, { - "SourceText": "To make them feel good", - "text": "Hore ba ikutlwe ba thabile", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "Ke maswabi hore o thulane le bothata. Hangata bana ba rata ho qeta nako ba shebeletse T.V. kapa ba bapala ka disebediswa. O entse hantle ka ho mamella motjha wa hao!", "type": "template", "note": "" }, { - "SourceText": "To make herself feel good", - "text": "Hore a ikutlwe a thabile", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Mphe ditshisinyo tsa dintho tse thabisang tseo nna le motjha wa ka re ka di etsang mmoho.", "type": "template", "note": "" }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Dintho tseo kaofela ke nnete! \n\nHa batjha ba hae ba thabile, @global.w_praise_female_caregiver_name o ikutlwa a thabile. O phethile mosebetsi wa hae.", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Fumana ntho e itseng ya thuto eo nka e etsang le motjha wa ka ka sesebediswa.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "The same can work for you!", - "text": "Le wena seo se ka o sebeletsa!", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Kopa motjha wa ka ho mpontsha hore na founo/sesebediswa se sebetsa jwang.", "type": "template", "note": "" }, { - "SourceText": "SEE IT", - "text": "E BONE", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "O sebeditse! Haeba o hloka kgothatso, tsena ke tse ding tsa dikeletso tse tswang malapeng a mang tsa seo le ka se etsang mmoho. Hopola, tlohela motjha wa hao hore a ikgethele.", "type": "template", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Sheba eng kapa eng eo motjha wa hao a e etsang e thusang kapa e molemo, mme o mo babatse ka seo. Ba ka nna ba se bontshe thabo, empa o tla ba bona ha ba etsa ntho eo e molemo hape. Hape ba tla lemoha hore o a hlokomela ebile o a tsotella.", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Ke botle! Ho na le menate e mengata hammoho le diepo tsa thuto difounong tseo le ka di batlang hammoho. Botsa dipotso, bontsha thahasello mme o hopole ho bua ntho e ntle.", "type": "template", "note": "" }, { - "SourceText": "SAY IT", - "text": "E BOLELE", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Hase moo! Batjha ba thaba ha o bontsha thahasello disebedisweng tsa bona mme ba o hlalosetsa ntho eo ba e tsebang. Ke hona moo o tlamehang ho qala teng!", "type": "template", "note": "" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Tjheseha – bua se hlileng se tswang botebong ba pelo ya hao!", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Ha o mong mona. Ka dinako tse ding batswadi ba bangata ba thulana le bothata bona. Kamehla ebang boinotshing moo le sireletsehileng, ebile ha ho hlokehe hore o patale le sente e ntsho!", "type": "template", "note": "" }, { - "SourceText": "REPEAT IT", - "text": "E PHETE", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Hlalosetsa motjha wa ka hore na hobaneng ha tshisinyo ya hae e sa bolokeha kapa e sa kgonehe mme mo kope maikutlo a mang.", "type": "template", "note": "" }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Leka ho fumana ntho e itseng eo o ka mo lebohang ka yona letsatsi le letsatsi. Esita le haeba e le nyane haholo.", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Sisinya diketso tse ding tse monate tseo re ka di etsang mmoho.", "type": "template", "note": "" }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Hape o ka babatsa batho ba bang ba baholo lapeng. Lemoha hore na ba arabela jwang!", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Hase moo! Ho bohlokwa haholo hore motjha wa hao a utlwisise lebaka leo o ke keng wa etsa ntho eo a e sisinyang ka lona. Mo kope ditshisinyo tse ding!", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "A re itlwaetseng ho babatsa batho ba bang.", + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Ena ke yona! Haeba o hloka kgothatso efe kapa efe, o ka fumana ditshisinyo bakeng sa dintho tse ka etswang ho @data.parent_centre.relax_and_activities.location_text. Hopola, e re motjha wa hao a kgethe ntho eo le e etsang!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Phetelanang ditaba: \n\n* O ka babatsa motjha wa hao ka lebaka la eng? \n* Motho e mong o entse eng e ntle nakong ya wekshopo ye? Mo bolelle!\n* O ile wa ikutlwa jwang ha o babatsa motho e mong?\n* O ile wa ikutlwa jwang ha o babatswa?", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Ke maswabi ho utlwa seo. Batjha ba rona ba ka swetseha haeba re sa kgone ho etsa dintho tseo ba batlang ho di etsa, jwaloka ho bapala papadi kapa ho etsa dintho tse ding tse batlang matla a mangata. Empa hopola, ntho ya bohlokwa haholo ke hore re qeta nako le bona. Batho ba etsa sena ka ditsela tse sa tshwaneng!", "type": "template", "note": "" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Ka dinako tse ding ho thata ho nahana ka ntho eo o ka babatsang motjha wa hao ka lebaka la yona! Dikeletso tse tswang ho batswadi ba bang ke tsena:", + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Shebella motjha wa ka a etsa ntho e itseng mme o mo thoholetse.", "type": "template", "note": "" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Ha a tshwere motho e mong ka mosa\n* Ho hlwekisa kamore ya hae\n* Ha a bile teng dijong tsa lelapa\n* Ha a dumedisitse ditho tse ding tsa lelapa\n* Ha a hlokometse banababo\n* Ha a fihlile ka nako lapeng\n* Ha a bontshitse hore o nahanela batho ba bang \n* Ka ho re 'ke kopa' kapa 'kea leboha' \n* Ha a ile sekolong\n* Ha a phetha mesebetsi ya lapeng kapa ya sekolo\n* Ho dula ka kgotso nakong ya dijo", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Sisinya dintho tse ding tse monate tseo re ka di etsang mmoho.", "type": "template", "note": "" }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Boikwetliso ba lapeng ba bekeng ena ke ho babatsa motjha wa hao hang ka letsatsi. Ho tla nka metsotswana e 10 feela!", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Hase moo! Le haeba o mo shebelletsa ho fapana le ho etsa ntho le yena, o ka bontsha thahasello ka ho hlalosa le ho babatsa seo motjha wa hao a se etsang!", "type": "template", "note": "" }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Ho itlhokomela ke habohlokwa haholo.", + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "O sebeditse! Haeba o hloka kgothatso efe kapa efe, o ka fumana ditshisinyo tsa dintho tse ka etswang ho @data.parent_centre.relax_and_activities.location_text. Hopola, tlohela motjha wa hao ho kgetha ntho e ka etswang!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Ke ditaba tse molemo, ke thabile haholo hore ebe dintho di tsamaya hantle. Pele ya pele ka mosebetsi o motle.", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Ka dinako tse ding sena sea etsahala! Batjha (esita le batho ba baholo) ba ka thatafallwa ke dipapadi tsa tlhodisano ha ba sitwa ho amohela ha ba hlotswe.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Nka motsotswana mme o thabele mosebetsi oo o o finyelletseng, ho sa tsotellehe dintho tsohle tse ding tseo o lokelang ho di etsa letsatsi ka leng.", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Sisinya dintho tse ding tseo re ka di etsang mmoho ho fapana le ho di etsa re le ba direng.", "type": "template", "note": "" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Malapa a mangata a imetswe ke ditaba tsa ditjhelete, haholoholo haeba batjha ba dula ba kopa ntho-di-hana ho fela!\n\nHa re etsa bajete hammoho, re ka dumellana hore na re lokela ho sebedisa tjhelete e kae LE HO baballa ho qoba kgatello ya maikutlo le ho sebeletsa ho fihlella maikemisetso a lelapa la rona.", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Bapala papadi ka dihlopha, hore nka kgothatsa motjha wa ka haeba sehlopha sa rona se hlotswe.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Dumelang bohle. \n\nSehlooho sa kajeno ke ho etsa bajete ya lelapa. \n\nKe habohlokwa ho etsa bajete, empa ke habohlokwa le ho feta ho etsa bajete e akarelletsang lelapa lohle. \n\nHo etsa jwalo mmoho ho thusa bohle ho utlwisisa hore na lelapa le sebedisa tjhelete jwang le hore na lelapa le boloka tjhelete e kae, ebile le ka etsa ditokisetso tsa hore na le ka baballa tjhelete jwang le le lelapa.", + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Hopola, dumella motjha wa hao a kgethe! O ka fumana ditshisinyo bakeng sa dintho tseo o ka di etsang le motjha wa hao ho @data.parent_centre.relax_and_activities.location_text, haeba o di hloka.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Pale – e sa kang ya sebetsa… \n* Boikwetliso ba ho etsa bajete\n* Pale le puisano – tse ileng tsa sebetsa!\n* Pale le puisano – tse sa kang tsa sebetsa…\n* Puisano ya ditsela tsa ho baballa tjhelete\n* Boikwetliso ba ho baballa tjhelete\n* Dithulusi: Tsela ya ho bajeta le ho baballa tjhelete\nNAHANA - KGETHA - HAHA - RERA\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "Haeba wena le motjha wa hao le le sehlopheng se le seng, o ka mo thusa ho laola maikutlo a hae haeba sehlopha sa lona se lahlehelwa.", "type": "template", "note": "" }, { - "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "text": "Ho thata ho ba le tjhelete e lekaneng ho phetha mabaka kgwedi le kgwedi. Malapa a mangata a na le bothata bona! \n\nHo kopanyelletsa le @global.w_money_grandma - a re shebelleng:", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "E, ka dinako tse ding ho thata ho emisa nako ya boinotsing.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "text": "@global.w_money_grandma: \"Haesale ke hlokomela ditloholo tsa ka, @global.w_money_teen_girl le @global.w_money_teen_boy, hobane batswadi ba bona ba hlokahetse ba sa le banyane. Hangata re hula ka thata ditjheleteng, hobane ke amohela kerante e nyane.\"", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Bolella motjha wa ka, “Re na le motsotso o le mong pele nako ya boinotsing ya kajeno e fela”, ka tsela eo motjha o itokisetsa boemo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "text": "@global.w_money_grandma: \"Ke kgathatsehile haholo. Ho hang ha ke salle le ke sente e ntsho! Jwale ke lwana le batjha ba ka ka dintho tseo ba di batlang – hape.\"", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Tsebisa motjha wa ka hore ke na le nako e kae nakong ya boinotshing mme o mo kope hore a latelle lenakana la watjhe kapa tshupanako.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Ho na le mehato e mene ya ho etsa bajete ya lelapa: \n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho. O hloka:\n\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Hlophisa nako ya boinotsing nakwana pele ho mosebetsi o mong oo motjha wa ka a o ratang.", "type": "template", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "Bajete ya lelapa e ka thusa @global.w_money_grandma - le WENA!", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Ke taba tse monate! Ka ho fa motjha wa hao ditemoso, ho fela ha nako ya boinotshing ho ke ke ha o hlaha lesumatha. Hape o ka hopotsa motjha wa hao hore le tla qeta nako ya ho ba mmoho hosane.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Ho na le mehato e mene ya ho etsa bajete ya lelapa:\n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho.", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Ke botle! Ka tsela eo motjha wa hao o na le boikarabelo ba ho beha nako leihlo mme o tla lemoha ha nako e se e ntse e fedile. Mo hopotse hore re tla qeta nako e nngwe hape hosane.", "type": "template", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "O hloka:\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Ke taba tse monate! Ha le qeta nako nakwana pele ho dijo tsa tinare, le ka bolela le thabile hore, “nako ya boinotshing e fedile. A re lokisetse dijo tsa tinare le lelapa lohle!”", "type": "template", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Nahana hore na re sebedisa tjhelete ya rona ho etsang kgwedi le kgwedi.", + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Batswadi ba bangata ba tobana le boemo bona. Ho ka ba thata ho qeta nako ya boinotshing le batjha ba rona ha re na le bana mmalwa ho fapana le a le mong.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Fumana pampiri (kapa koranta ya kgale kapa lebokose) le pene. \n* Toroya ditshwantsho tsa dintho tseo wena le lelapa la hao le sebedisang tjhelete ho tsona kgwedi le kgwedi. \n* Ngola haufi le setshwantsho ka seng hore na ntho ka nngwe e ja bokae kgwedi le kgwedi. (Ha ho hlokahale hore le bontshane dipalo haeba le sa batle.)\n* Kopanya tjhelete eo o e sebedisitseng kgwedi ka nngwe.", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Kopa motho e mong e moholo kapa ngwana e moholwanyane ho hlokomela ba banyane nakong ya boinotshing le motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Ke botle! O qetile mohato wa 1!\n\nA re fetele pele!", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Nahana ka nako eo bana ba bang ba leng siyo mme o qete nako eo le motjha wa ka ka nako eo.", "type": "template", "note": "" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* dijo\n* metsi le motlakase\n* diaparo\n* diakhaonte\n* mananeo a TV a patallwang\n* dintho tsa ho hlapa\n* salune\n* airtime \n* sekolofisi\n* dipalangwang\n* inshorense/maano\n* meriana\n* boithabiso/dipapadi\n* rente\n* dikoloto\n* kereke", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Rera nako ya boinotshing sebakeng se seng ho fapana le lapeng.", "type": "template", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "A re bue ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Hase moo! Ka tsela ena, o ka mamela motjha wa hao o sa sitiswe ke letho, hore a ikutlwe hore ke motho wa bohlokwa ya ratwang.", "type": "template", "note": "" }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Hangata ha re bone dintho ka leihlo le le leng. Ha re buisana ka dintho tseo re di hlokang le tseo re di batlang, re utlwisisana hantle ebile re ka etsa diqeto tse ntle mmoho tsa kamoo re sebedisang tjhelete ya rona kateng.\n\nShebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Ke taba tse monate! O ka leka ho qeta nako le motjha wa hao ha bana ba bang ba se ba ilo robala, kapa ha ba ntse ba bapala kantle.", "type": "template", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Nahana ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Hase moo! Mohlomong le ka tsamaya mmoho ho ya dishopong kapa la shebella dipapadi mmoho, e le hore le ka qoqa ntle le ho ba le bana ba bang ba tla batla tlhokomelo ba le siyo.", "type": "template", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Shebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", + "SourceText": "DAY – Do it every day", + "text": "LETSATSI – E etse letsatsi le letsatsi", "type": "template", "note": "" }, { - "SourceText": "Make a budget!", - "text": "Etsang bajete!", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "BAPALA – Tlohella motjha wa hao a kgethe ntho eo le ka e etsang", "type": "template", "note": "" }, { - "SourceText": "Make a budget as one big family!", - "text": "Etsang bajete le le lelapa le le leng le leholo!", + "SourceText": "STAY – Give your teen all of your attention", + "text": "DULA – O fe motjha wa hao nako yohle ya hao", "type": "template", "note": "" }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Motho a le mong o tla ithaopela ho bolela letoto la hae (Haeba ho se na moithaopi le ka etsa letoto le letjha mmoho) \n* Nkang maemo a itseng - ba bang e tla ba batho ba baholo, ba bang e tla ba batjha. \n* Etsang qeto ya hore na tjhelete e kenang ke bokae ka kgwedi.\n* Nkang majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata - eo ke tjhelete e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete e kenang ke @global.currency@local.monthly_income, mme o na le dinawa tse @local.number_of_beans, nawa ka nngwe e lekana le @global.currency@local.bean_value.) \n* Etsang qeto mmoho ya hore na le tla e sebedisetsang, mme le behe majwe/dintho setshwantshong se. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", + "SourceText": "Why was this tip helpful for you?", + "text": "Ke hobaneng ha keletso ena e o thusitse?", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "" }, { - "SourceText": "Make a budget as a family!", - "text": "Etsang bajete le le lelapa!", + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "\"@local.choice_1\" e ntswetse molemo hobane...", "type": "template", - "note": "" + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Ngola hore na tjhelete ya hao e kenang ke bokae ka kgwedi.\n* Nka majwe kapa dinawa tse ding kapa eng kapa eng e nang le dikgetjhana tse ngata - ena ke tjhelete ya lona e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete ya lona e kenang ke @global.currency@local.monthly_income, mme le na le dinawa tse @local.number_of_beans, nawa ka nngwe ke @global.currency@local.bean_value.)\n* Etsang qeto ya hore na le tla etsang ka yona, mme le behe majwe/dintho hodima setshwantsho seo. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "\"@local.choice_2\" e ntswetse molemo hobane...", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Le entse mosebetsi o moholo, le phethile mehato ya pele e 3! \n\nA re shebeng kamoo @global.w_money_grandma a hlophisitseng ditjhelete tsa hae kateng, jwalokaha le etsa:", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "\"@local.choice_3\" e ntswetse molemo hobane...", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The string @local.choice_3 should not be translated." }, { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "\"Ke batlela ditloholo tsa ka bokamoso bo molemo haholo, empa ha ke tsebe hore na ke tla fumana tjhalete hokae. Bomatjhonisa ba kotsi ebile o ba busetsa tjhelete e ngata haholo. \n\nKe lokela ho baballa tjhelete, empa ekare eo ke ntho e sa kgoneheng!\"", + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Ho ba le nako e tobileng ya ho etsa sena ho nthusa ho hopola.", "type": "template", "note": "" }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "\"Sepheo sa ka ke ho tiisa hore setloholo sa ka sa moshanyana se kgona ho ya sekolong se phahameng mme setloholo sa ka sa ngwanana se fihlella takatso ya sona ya yunivesithi. Nka baballa tjhelete e ngata jwang ka tjhelete e nyane eo ke nang le yona?\"", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Ka lenaneo, nna le motjha wa ka re kgona ho tiisa hore ha re na ntho e kenakenanang le nako ya rona.", "type": "template", "note": "" }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "\"Kea tseba - a re qaleng ka moralo! E re ke qale ka ho etsa bajete – moralo wa kamoo nka baballang tjhelete ya ka kateng. Mme ke tla baballa tjhelete e nyane nako le nako – ebile ke tla kenela sehlopha sa ho baballa tjhelete le mekitlane.\"", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Ho qeta nako le motjha wa ka letsatsi le letsatsi ho thusa ho haha dikamano tsa ho tshepana le yena/bona.", "type": "template", "note": "" }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "\"Hape ke tlameha ho bua le ditloholo tsa ka ho kgetha dintho tseo re ka sebedisang tjhelete e nyane ho tsona beke le beke. Ba tla nthusa ho nahana ka dintho tseo re di batlang empa re sa di hloke.\"", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Ehlile ho jwalo, le ho qeta metsotso e 10 mmoho ho tlisa phapang e kgolo – seo se etsa hore ho be bonolo ho e hlophisa, hore ebe haufi le mosebetsi wa hao le mesebetsi ya lapeng!", "type": "template", "note": "" }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "Dilemo tse seng kae hamorao:\n\n\"Ako boneng, re fihlelletse ditabatabelo tsa rona! Ha kea kadima tjhelete ya metswalle kapa ya bomatjhonisa. Ka ho baballa tjhelete e nyane beke le beke, ke ile ka kgona ho patala sekolofisi sa @global.w_money_teen_boy sekolong se phahameng mme ka baballa tjhelete e nngwe bakeng sa yunivesithi ya @global.w_money_teen_girl. Ke ikutlwa ke le motlotlo haholo ka taba ena.”", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "Ho tlohella motjha wa ka ho kgetha seo a ka se etsang ho matlafatsa boitshepo ba hae.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "Haeba motjha wa ka a kgetha, ho ka etsahala hore a batle hore re qete nako e ngata mmoho.", "type": "template", "note": "" }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Le ikemiseditse ho baballa tjhelete e ngata hakaalo!\n\nLe ikemiseditse ho baballa tjhelete e ngata hakaalo! Ha re etsa bajete e ntle ebile re mmoho re lokisetsa ho baballa tjhelete, re ka atleha mme ra ikutlwa re le motlotlo ka seo re se finyelletseng!", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "Ho tlohella motjha wa ka ho ikgethela ho bontsha hore ke tsotella dintho tseo a di thahasellang.", "type": "template", "note": "" }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Kaofela re na le ditabatabelo tsa malapa a rona, jwaloka @global.w_money_grandma. Ka ho behella ka thoko tjhelete enyane kgwedi le kgwedi, le wena o ka fihlella ditabatabelo tsa hao!", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Ka ho amohela ditshisinyo tsa motjha wa ka, ke bontsha hore ke ya mo mamela.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "Ho bua ntho e ntle ka ntho eo motjha wa ka a e kgethang ho mo bontsha hore ke mo nka e le wa bohlokwa.", "type": "template", "note": "" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "Ke boikemisetso bo bokaakang!\n\nHa le etsa bajete e ntle ebile le lokisetsa ho baballa tjhelete, le ka atleha mme la ikutlwa le le motlotlo ka bolona!", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Ka sebele ke nnete! Mme ha batjha ba rona ba kgetha, ba kgothalletswa ho jara le boikarabelo dikarolong tse ding tsa bophelo ba bona.", "type": "template", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Ho baballa tjhelete ho bohlokwa ka mabaka a mmalwa, le leng ke: maemo a tshohanyetso! @global.w_money_grandma le yena o ile a ithuta ntlha ena bophelong:", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Ka ho thibela ditshitiso, ke bontsha hore motjha wa ka o bohlokwa haholo.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Bosiung bo bong ho ile ha tsoha sefefo se tshabehang se ileng sa fefola marulelo. Ntho e nngwe le e nngwe e ile ya nelwa ke pula. Ka ho panya ha leihlo ke ne ke hloka ho fumana tjhelete ya ho lokisa marulelo. Ke ile ka ikutlwa ke feletswe ke matla.”", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Esita le haeba nke ke ka etsa ketso e itseng le motjha, jwaloka dipapadi, ke ntse nka mo thoholetsa.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about this story.", - "text": "A re buisane ka pale ena.", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Ha ke ela hloko motjha wa ka, nka ithuta dintho tse ngata ka dithahasello, maikutlo le bokgoni ba motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "Boemong ba @global.w_money_grandma, ho bile le sefefo. \n\nRona re ka hlahelwa ke maemo afe a tshohanyetso?", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "E! Ha re tsepamisa mehopolo ya rona ho batjha ba rona, ho na le monyetla o moholo wa hore ba etse se tshwanang ho rona kamoso ha re ba kopa ntho e itseng!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "Let's think about this story.", - "text": "A re nahane ka pale ena.", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "Boemong ba @global.w_money_grandma, ho bile le sefefo.", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "O sebeditse ka ho fumana ditharollo tsa diphephetso tsa hao. Ako yo di leka. Kamano ya hao le motjha wa hao e tla tswela pele ho ba matla!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Lelapa la hao le ka hlahelwa ke maemo afe a mang a tshohanyetso?", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Ho thata haholo ho ba motswadi. Ka dinako tse ding ekare bana ba rona ha ho mohla ba re mamelang.\n\nEmpa saense e bontsha hore ho qeta metsotso ese mekae letsatsi ka leng re amehile ka nako ya boinotshing le batjha ba rona ho etsa hore re tshepane le ho ratana.", "type": "template", "note": "" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Maemo a tshohanyetso a ka hlahela lelapa lefe kapa lefe. Ho baballa tjheletenyana bakeng sa maemo a tshohanyetso PELE a etsahala ho thibela ho kgathatseha le seterese se sengata ka tshohanyetso!", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Nako ya boinotshing ke ha re amehile ka bona feela, ntle ho TV kapa difouno. Ba tlohelle ba etelle pele ho seo le se etsang kapa seo le buang ka sona.\n\nHo ka ba molemo ho qeta metsotso e mashome a mabedi ka letsatsi, empa le metsotso e mehlano ka letsatsi e molemo haholo.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "A re bueng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Dumela.\n\nSehlooho sa rona sa kajeno ke nako ya boinotshing le bana ba rona.\n\nHo bohlokwa ho qeta nako ya boinotshing le bana ba rona hore ba ka re utlwisisa, le hore re kgone ho fumana monyetla wa ho ba utlwisisa.\n\nHopola, lelapa le utlwisisanang hantle le phela ka kutlwano.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Buisanang: \n* Re ka baballa tjhelete ka ditsela dife tse sa tshwaneng? \n* Tsela ka nngwe ya ho baballa tjhelete e na le melemo le mathata afe? \n\nHo utlwisisa tsela ka nngwe hantle ho tla o thusa ho etsa qeto ya tsela e molemo haholo ya ho baballa tjhelete bakeng sa lelapa la hao. \n\nHo sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", + "SourceText": "Have you spent time with your teen already?", + "text": "Na o se o kile wa qeta nako le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "A re nahaneng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Re leboha haholo hore ebe o ikitlaetsa hakaalo ho ba motswadi ya betere. O motho ya ratwang le ya ananelwang!", "type": "template", "note": "" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Ho na le ditsela tse sa tshwaneng tseo re ka baballang tjhelete ka yona: lapeng, ha re reka dintho tseo re ka di rekisang hamorao, bankeng, kapa sehlopheng sa ho baballa tjhelete.\n\nNahana ka melemo le mathata a tsela ka nngwe ya ho baballa tjhelete.", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Ho qeta nako le motjha wa hao ho haha dikamano tsa ho tshepana pakeng tsa lona.\n\nTswela pele ka leeto la hao la @global.parent_app hona jwale - wena le lelapa la hao le tla atleha.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "What is the best savings option for your family?", - "text": "Tsela e molemo ka ho fetisisa ya ho baballa tjhelete bakeng sa lelapa la hao ke efe?", + "SourceText": "First @global.weekly_workshop!", + "text": "Qala ka @global.weekly_workshop!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Ho sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Dumela @fields.user_name. @local.workshop_data.in_text_title e se e o emetse.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Rerang hore na le tla baballa tjhelete jwang, e le hore le ka sebetsana le maemo a tshohanyetso mme la fihlella ditabatabelo tsa lelapa la lona!", + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Dumela @fields.group_name. @local.workshop_data.in_text_title e se e o emetse.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "Haeba o ka baballa esita le tjhelete e nyane bakeng sa kamoso kapa maemo a tshohanyetso - seo se ka etsa phapang e kgolo ha nako e ntse e feta. \n* Kenya sedikadikwe se bitswang “maemo a tshohanyetso”.\n* Kenya sedikadiswe se bitswang “ditabatabelo tsa lelapa”.\n* Ebe o leka ho tsamaisa tjhelete ya hao e le hore le ka baballa tjheletenyana e itseng kgwedi le kgwedi bakeng sa e nngwe le e nngwe ya dintho tsena.", + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Re a leboha hore ebe o sebedisa @global.parent_app ebile o motswadi ya ikemiseditseng. \n\n@local.workshop_data.in_text_title ya hao e se e o emetse!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong o tshwanelwa ke pabatso, le bona jwang?", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. E keke ya nka nako e telele, ebile o tla fumana dintlha tsa bohlokwa. \n\nO sebeditse ka ho leka ho ba motswadi ya betere. Hosane o ka fihlella wekshopo e ntjha.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong lelapeng la hao o tshwanelwa ke pabatso, le bona jwang?", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "REA LE LEBOHELA!!! Le entse bajete ya lona – hopolang ho etsa boikwetliso bona hape le ditho tse ding tsa malapa a lona - ha le dumellana ka seo le rerang ho se etsa mmoho, seo se tla etsa phapang e kgolo!", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "A re nahane ka ditsela tsa ho qeta nako ya boinotshing le motjha wa hao.", "type": "template", "note": "" }, { - "SourceText": "Step 1: THINK", - "text": "Mohato wa 1: NAHANA", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "O ka etsang hore o qete nako ya boinotshing le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "What do we spend on now?", - "text": "Hona jwale re sebedisa tjhelete ha re reka eng?", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "Na o utlwa eka HA O NA NAKO ebile o kgathetse?\nHopola ho nahana le ka ditsela tse sa jeng nako e ngata.", "type": "template", "note": "" }, { - "SourceText": "THINK Activity", - "text": "Ketso ya ho NAHANA", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", "type": "template", "note": "" }, { - "SourceText": "Step 2: CHOOSE", - "text": "Mohato wa 2: KGETHA", + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "O kgalala!\n\nLetsatsi le letsatsi, lebohela seo o se entseng hantle. Iputse ka ho hong ho o thabisang. Mme o hemele hodimo ho o thusa ho theola moya. \n\nHopola, o fumana ntlha ya @global.parent_point nako le nako ha o itlhokomela - o motho wa bohlokwa!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Talk together about needs and wants", - "text": "Buisanang ka ditlhoko le dintho tseo le di batlang mmoho", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", "type": "template", "note": "" }, { - "SourceText": "CHOOSE Activity", - "text": "Ketso ya ho KGETHA", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Diketso tsa ho itlhokomela\n* Keletso tsa nako ya boinotsihing\n* Dithulusi: Tsela ya ho qeta nako ya boinotshing\nLETSATSI - BAPALA - DULA\n* Ditshisinyo tsa boikwetliso lapeng", "type": "template", "note": "" }, { - "SourceText": "Step 3: BUILD", - "text": "Mohato wa 3: HAHA", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Neanang malebela! \n\nKe dintho dife tseo o ka di etsang hore o qete nako ya boinotshing le batjha ba hao?\n\nNa o utlwa eka ha o NA NAKO ebile o kgathetse? O tle ka dikeletso bakeng sa nako ya boinotshing tse sa nkeng nako e ngata, jwaloka ho tsamaya mmoho ha le ya mabenkeleng mmoho.", "type": "template", "note": "" }, { - "SourceText": "Make your own budget", - "text": "Iketsetseng bajete", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Ho ka nka nako ho tlwaela nako ya boinotshing, empa ho tla ba betere ha o etsa sena kgafetsa!\n\nO motswadi ya ipabolang ka ho leka sena.", "type": "template", "note": "" }, { - "SourceText": "BUILD Activity", - "text": "Ketso ya ho HAHA", + "SourceText": "DAY - Try to do it every day", + "text": "LETSATSI - Lekang ho etsa sena letsatsi le letsatsi", "type": "template", "note": "" }, { - "SourceText": "Step 4: PLAN", - "text": "Mohato wa 4: RERA", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Fumana metsotso e 5 (kapa ho feta!) letsatsi le letsatsi ha ho se na ntho eo motjha wa hao a batlang ho e etsa.", "type": "template", "note": "" }, { - "SourceText": "Emergencies and family goals", - "text": "Maemo a tshohanyetso le ditabatabelo tsa lelapa", + "SourceText": "PLAY - Let your teen choose", + "text": "BAPALA - E re motjha wa hao a kgethe", "type": "template", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "Ketso ya ho RERA", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Bolella motjha wa hao hore o ka thabela ho qeta nako le yena mme ke yena ya tla kgetha hore le tla etsang le hore na le tla bua ka eng. Qalong a ka nna a o makalla empa o tla thabela nako ena eo o e qetang le yena!", "type": "template", "note": "" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Etsa bajete hape - lekgetlong lena O NA LE motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "SourceText": "STAY - Focus on your teen", + "text": "DULA - Tsepamisa mohopolo motjheng wa hao", "type": "template", "note": "" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Etsa bajete le motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Tima TV mme o behelle difouno kathoko. Sheba motjha wa hao. Oma ka hlooho mme o re \"Kea bona\" ho bontsha hore kannete o mo ela hloko. Amohela seo a o bolellang sona o sa mo ahlole.", "type": "template", "note": "" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Hlahloba bajete ya hao le motjha le lelapa la hao! Sena se tla hopotsa bohle hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Nako ya boinotshing le motjha wa hao e ka o thabisa le wena! Hape seo se ka nna sa o hafolela seterese.", "type": "template", "note": "" }, { - "SourceText": "Steps to make a budget", - "text": "Mehato ya ho etsa bajete", + "SourceText": "Great!", + "text": "Ke botle!", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Ke ditaba tse monate, ke thabile haholo! Tswela pele ka mosebetsi o motle.", + "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", + "text": "Kea tseba hore bophelo bo thata. Ke motlotlo ka wena.\n\nHo sa natswe hore na o ikutlwa jwang, ke hantle hore ebe o mona!", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Re maswabi hore ebe ho thata. Malapa wohle a hula ka thata. Re tla wa re tsoha le wena!", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", "type": "template", "note": "" }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "Ho sa tsotellehe hore na kajeno ke eng e tswileng 'taolong', lebala ka yona mme o leke hape hosane. Ho lokile!", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", "type": "template", "note": "" }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Ameha ka dintho tse kgothatsang!\n\nHo bolella batjha ba rona seo re batlang hore ba se ETSE ho sebetsa habetere ho feta ho ba bolella seo ba tlamehang ho KGAOTSA ho se etsa.", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya kamoso ya tshehetso ya botswadi.", "type": "template", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Dumelang, dumelang bohle.\n\nSehlooho sa rona sa kajeno ke ditaelo tsa se lokelang ho etswa.\n\nHo bohlokwa ho fa bana ba rona ditaelo tsa se lokelang ho etswa, hobane ha re ba fa ditaelo tsa seo ba lokelang ho se etsa, ba tla tseba le ho utlwisisa se ho lebeletsweng hore ba se etse, ebe ba etsa seo kamoo re batlang hore ba se etse kateng.\n\nKahoo, bohle ba tla dula ba thabile.", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya hao ya kamoso ya tshehetso ya @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Teko ya kelello\n* Pale le puisano – seo ha sea atleha…\n* Pale le puisano – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Dumelang kaofela.\n\nSehlooho sa kajeno ke ho keteka le mehato e latelang.\n\nEbile ho hlollang, ebile ntho e tsotehang ho nka leeto lena le lona. Kajeno lena re keteka leeto la rona mmoho.\n\nKajeno lena re keteka dithuto tsohle tseo re ithutileng tsona ho tloha qalong.", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Teko ya kelello\n* Pale le boikgopotso – seo ha sea atleha…\n* Pale le boikgopotso – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* Ditshisinyo tsa ho prakthisa lapeng", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Kajeno lena le tla keteka, le ikgopotse le ho lebella:", "type": "template", "note": "" }, { - "SourceText": "Let’s do a thought experiment!", - "text": "A re etse teko ya kelello!", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "* Boikgopotso & puisano\n* Dithulusi: Tsela ya ho tshehetsana\nKOPANANG - LETSETSANANG - NGOLLANANG - ABELANANG\n* Ho rala tshehetso", "type": "template", "note": "" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "O SE KE WA NAHANA KA TLOU\n\nO nahana ka eng?", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Kajeno o ketela le ho ikgopotsa boiphihlelo ba hao.", "type": "template", "note": "" }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Mohlomong o ile wa HLA wa nahana ka tlou...\n\nDitaelo tse reng 'o se ke wa' di etsa hore batjha ba nahane ka yona ntho eo.\n\nKa dinako tse ding ha utlwisise seo re HLILENG re se batlang ho bona.\n\nMme hangata ha ba rate ho bolellwa hore na ba se ke ba etsa dintho (na kaofela ha re jwalo?)", + "SourceText": "End of programme check-in", + "text": "Tlhahlobo ya qetello ya lenaneo", "type": "template", "note": "" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "JWALE, NAHANA KA LENGAU\n\nO nahana ka eng?", + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "Haesale o sebedisa @global.parent_app dikgweding tse fetileng, empa ho ba motswadi wa motjha ho nka nako e telele! Dipotso tse latelang tse amanang le boiphihlelo ba hao jwaloka motswadi di tla thusa ho lekola botswadi ba hao.\n\nIpuele nnete feela. Hopola hore batswadi ba dimilione ba ikutlwa jwaloka wena, mme kaofela re tshwanelwa ke pabatso. Ha o mong!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "O nepile! Ditaelo tse hlakileng, tsa se lokelang ho etswa di thusa batjha ho ameha ka seo ba lokelang ho se etsa.\n\nBatjha ba boetse ba ikutlwa ba hlomphuwe ka tsela ena, mme ho na le kgoneho e kgolo ya hore ba re mamele.", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "Ho bonahala eka o se o phethile tlhahlobo ya qetellong ya lenaneo. Hona o ka feta mosebetsi ona.", "type": "template", "note": "" }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "A re bone se etsahalang ha @global.w_instruct_female_caregiver a bolella @global.w_instruct_teen_girl \"O SE KE WA\":", + "SourceText": "Let's talk about what has changed.", + "text": "A re bue ka dintho tse fetohileng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha \n@global.w_instruct_teen_girl a ntse a prakthisa tantshi le motswalle wa hae.\n\n@global.w_instruct_female_caregiver: “O se ke wa etsa bohlaswa ha ke ntse ke hlwekisa ntlo. O a ntshitisa!”", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Buisanang:\n* Ho fetohile eng lelapeng la hao?\n* Ke eng eo o e entseng eo o leng motlotlo ka yona?\n\nHopolang ho babatsana le ho kgothatsana!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Empa ke tlameha ho prakthisa bakeng sa tlhodisano ya sekolong. Ha o ntumelle hore ke etse letho.”\n\n@global.w_instruct_female_caregiver: “O se ke wa nkarabisa!”", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Etsang moralo wa kamoo le tla tshehetsana kateng ho tloha jwale ho ya pele.\n\nO ka sebedisa dikeletso tse tswang malapeng a mang, kapa wa iketsetsa tsa hao!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Akga!! O ye be o qadile o nkomanya jwaloka mehleng????”\n\n@global.w_instruct_female_caregiver o ipolella hore: “Ngwana enwa o dula a le lenyokonyane.”", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Wena le lelapa la hao le tla ithuta dintho tse ngata. A re ikgopotseng tse fetileng le ho bona se fetohileng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "A re buisaneng ka se etsahetseng paleng ena.", + "SourceText": "Reflect", + "text": "Ikgopotse", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Buisanang:\n\n* O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng kateng? \n* Ebe @global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", + "SourceText": "Listen and reflect", + "text": "Mamela le ho ikgopotsa", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver a ka be a...", + "SourceText": "Read and reflect", + "text": "Bala mme o ikgopotse", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* Buile ntho e ntle qalong\n* A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng\n* A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Kwala mahlo mme o phutholohe.\n\nNahana ka bophelo ba lelapa la hao pele o qala leeto la epo ena.\n \nNahana ka tsebo eo o ithutileng yona:\n* Ho itlhokomela\n* Nako ya boinotsing\n* Pabatso\n* Ditaelo tsa se lokelang ho etswa\n* Ho laola seterese\n* Ho etsa bajete ya lelapa\n* Melao\n* Ho jarisa ditlamorao o theotse moya\n* Ho rarolla mathata\n* Polokeho ya batjha\n* Ho sebetsana le koduwa\n\nNahana ka leeto lena – ho bile jwang ho wena ha:\n* O bolela maikutlo a hao le dintho tseo o fetileng ho tsona\n* Nahana le ho ithuta ho tswa ho dipale\n* Prakthisa tsebo ena ho motjha wa hao\n\nNa ho na le eng kapa eng e fetohileng ho wena le ba lelapa la hao?\n\nO hloka eng hore o tswele pele ho sebedisa tsebo ye?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng ka yona?", + "SourceText": "MEET", + "text": "KOPANANG", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Sad", - "text": "A kwatile", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Dulang le kopana kamehla hore le tshehetsane jwaloka batswadi.", "type": "template", "note": "" }, { - "SourceText": "Confused", - "text": "A ferekane", + "SourceText": "CALL", + "text": "LETSETSANANG", "type": "template", "note": "" }, { - "SourceText": "Angry", - "text": "A halefile", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "E bang ‘mekgotsi e kopanngwang ke botswadi’ e letsetsanang ha le halefile kapa le sa tsebe hore le etseng.", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "@global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", + "SourceText": "TEXT", + "text": "NGOLLANANG", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Said something nice first", - "text": "A ka be a buile hantle pele", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Ngollanang beke le beke ho bolellana seo le se entseng hantle.", "type": "template", "note": "" }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng", + "SourceText": "SHARE", + "text": "ABANG", "type": "template", "note": "" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Abang @global.parent_app mme le thuse malapa a mang a qale leeto la wona.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Rea leboha ka hore o nahane ka taba eo! \n\nA re kgutlele morao mme re bone hore na ho etsahalang ha @global.w_instruct_female_caregiver a fana ka ditaelo tsa se lokelang ho etswa:", + "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", + "text": "Hase moo! Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha @global.w_instruct_teen_girl a na le metswalle ya hae a prakthisa ho tantsha. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ke thabela ho o bona o prakthisa tantshi le metswalle ya hao. Ke kopa hore le prakthisetse kantle, hore ke qetele ho hlwekisa ntlo. Kamora moo le ka mpontsha hore na le tantsha jwang.\"\n\n@global.w_instruct_teen_girl: “Ho lokile, @global.w_instruct_female_caregiver!”", + "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", + "text": "Re maswabi hore o bile le letsatsi le thata. Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: \"Kea leboha hore ebe le ile la prakthisetsa kantle ha ke ntse ke qetela ho hlwekisa, @global.w_instruct_teen_girl. Jwale ke na le nako ya ho le shebella ha le tantsha.\"", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: \"Kgele, @global.w_instruct_teen_girl! Le tantsha hantle hakaakang!\"", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 o fihlile leite lapeng.\n\nKe ditlamorao dife tse ka thusang moo?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Let's discuss what happened this time.", - "text": "A re buisaneng ka se etsahetseng lekgetlong lena.", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Ditlamorao ha di tshwane hantle le kotlo: di fa batjha ba rona monyetla wa ho ithuta ho jara boikarabelo ka diketso tsa bona.\n\nMme di fanwa ka tsela e laolehileng EBILE di atleha ho feta ho shapa kapa ho tjwedietsa motjha!", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Buisanang:\n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jwang hona jwale?\n* Ke hobaneng ha o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "It worked better this time because...", - "text": "Dintho di tsamaile betere hobane...", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba tseka founo.\n\nke ditlamorao dife tse ka thusang moo?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + }, + { + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Ditlamorao di atleha haholo haeba le buisane la ba la dumellana ka tsona esale pele le batjha pele le ka ba jarisa tsona.\n\nMme: hase ditlamorao tsohle tse bosula… Le ka boela la dumellana ka ditlamorao tse MOLEMO tsa ho etsa diketso tse MOLEMO hore o bone boitshwaro bo botle hangata!", "type": "template", "note": "" }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl o ile a utlwa a hlomphuwe ebile a ratwa ke @global.w_instruct_female_caregiver wa hae\n* @global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya\n* @global.w_instruct_female_caregiver o ile a bua ka tsela e mosa", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ne ba se ba ikutlwa jwang?", + "SourceText": "What consequence would help here?", + "text": "Ke ditlamorao dife tse ka thusang boemong boo?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Na o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 o thusa ho hlatswa dijana.\n\nKe ditlamorao dife tse monate tse ka thusang moo?", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl o ne a ikutlwa a hlomphuwa ebile a ratwa ke @global.w_instruct_female_caregiver wa hae", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Boikwetliso ba hao ba lapeng bekeng ena e tla ba ho buisana le motjha wa hao ka ntho e le NNGWE e seng monate le ntho e le NNGWE e monate e tla etsahala e le ditlamorao.\n\nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako)", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Boitshwaro bo Bobe: Ho fihla lapeng kamora hora eo ho dumellanweng ka yona. \n\nDitlamorao tse Bohloko: Ha a bone metswalle letsatsing le hlahlamang. \n\nBoitshwaro bo Bobe: Ho bua ka tello. \n\nDitlamorao tse Bohloko: Ngola lengolo la ho kopa tshwarelo. \n \nBoitshwaro bo Botle: Ho thusa ha ho ilo rekwa mabenkeleng. \n\nDitlamorao tse Monate: Metsotso e meng e 30 ya ho etsa ntho eo a e ratang eo a e kgethileng. \n\nBoitshwaro bo Botle: Ho thusa ho hlokomela bana babo ba banyane. \n\nDitlamorao tse Monate: Ho ekeletswa hora eo a e qetang le metswalle ya hae ka mafelobeke.", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver o ile a dula a le mosa", + "SourceText": "introduce a consequence together", + "text": "qalang sephetho hammoho", "type": "template", "note": "" }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Ditaelo tsa se lokelang ho etswa di ka sebetsa le ho motjha wa hao!", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "Na le bile le diphephetso dife kapa dife ha le leka ho qala sephetho mmoho?", "type": "template", "note": "" }, { - "SourceText": "GET REAL", - "text": "AMOHELA BOEMO KAMOO BO LENG KATENG", + "SourceText": "What was difficult for you about introducing a consequence with your teen?", + "text": "Ke eng e ileng ya le thatafalla ha o qala sephetho le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "Na ehlile motjha wa hao a ka etsa seo o batlang ho mo kopa sona? Mohlomong ke ntho e sa kgoneheng bakeng sa hae ho bala a kgutsitse letsatsi lohle, empa halofo ya hora ke ntho e utlwahalang.", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Ke ile ka halefa haholo ha motjha wa ka a tlola molao.", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE", - "text": "EBA YA KGOTHATSANG", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Ha re kgefutsa pele re araba, seo se re thusa ho kgoba matshwafo le ho araba hantle.\n\nNakong e tlang ha motjha wa hao a o halefisa, leka ho nka kgefu pele. Le ho phefumoloha haholo ho ka tlisa phapang e kgolo!", "type": "template", "note": "" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Bososela, mo shebe ka mahlong, mme o sebedise mantswe a kgothatsang. Mo babatse kapele kamora hore a qale ntho eo o mo kopang yona!", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "Motjha wa ka o ile a nkgalefela haholo kamora hore ke mo jarise ditlamorao.", "type": "template", "note": "" }, { - "SourceText": "GET CLEAR", - "text": "BUA KA TSELA E HLAKILENG", + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", + "text": "Ha motjha wa hao a o halefela, o ka nna wa tlameha ho tsamaya ho fihlela bobedi ba lona le theotse moya.\n\nHlahloba hore na ditlamorao tseo o mo bolellang tsona di lokile ebile dia utlwahala. Mamela tlhaloso ya motjha wa hao, mme o tiise hore o lokisetsa “Tshwarelo ka Lebaka la Polokeho” ha a tlotse molao e le hore a dule a sireletsehile.", "type": "template", "note": "" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Hangata rea tseba hore na re batlang, empa ha re se bue ka tsela e hlakileng ka ho lekaneng. Bolella motjha wa hao hantle seo o batlang hore a se etse. Leka mantswe a kang ‘ke kopa o fihle lapeng ka 7 mantsiboya’ ho fapana le hore ‘o fihle lapeng ka nako’.", + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Ke ile ka mo bolella ditlamorao ntle le ho di tshohla pele le motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "A re prakthise ho fana ka ditaelo tse UTLWAHALANG, tse KGOTHATSANG le tse HLAKILENG. Ho prakthisa ho tla o thusa ho atleha ha o sebedisana le motjha wa hao!", + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "Na o ka fana ka ditlamorao kapa sephetho sa ketso haeba e ipheta? Ha re beha ditlamorao mmoho le batjha ba rona, ditlamorao e tla ba tse utlwahalang haholo, mme batjha ba rona ba tla ikemisetsa le ho feta ho latela molao ebile ba tla be ba kgona ho o latela.", "type": "template", "note": "" }, { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Kgetha batho ba babedi sehlopheng sa hao:\n* Motho e mong o etsa eka ke motjha\n* E mong o etsa eka ke motswadi wa motjha\n* “Motswadi”: Fa “motjha” wa hao taelo ya se lokelang ho etswa e nang le kgothatso le pabatso\n* “Motjha”: Arabela kamoo o nahanang hore motjha a ka arabela kateng\n\nBuisanang ka hore na ho tsamaile jwang:\n* Sena se entse hore o ikutlwe jwang jwaloka “motswadi” le jwaloka “motjha”?\n* Na o ne o ka etsa dintho ka tsela e betere?\n\nO fe bohle monyetla wa ho ba “motswadi” le “motjha” haeba o ka kgona. Boikwetliso bo tswala katleho!", + "SourceText": "I forgot to follow through with the consequence.", + "text": "Ke lebetse ho phethisa ditlamorao.", "type": "template", "note": "" }, { - "SourceText": "Examples of positive instructions:", - "text": "Mehlala ya ditaelo tsa se lokelang ho etswa:", + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Kaofela re etsa diphoso! Ha re jarisa bana ba rona ditlamorao re sa fetofetohe, ho na le menyetla e mengata ya hore bana ba rona ba tla kgetha ho itshwara hantle nakong e tlang.", "type": "template", "note": "" }, { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ke rata mmino wa hao. Ke kopa o o fokotse nakong ya dijo tsa tinare e le hore re kgone ho bua? Kea leboha – Kannete ke lebohela seo. \n* Mmino ona o monate jwang. Ke mang ya binang? Ke kopa o o time ha o kena katlung. O ka o letsetsa fatshe ha o kena ka kamoreng ya hao haeba o batla. Kea leboha!", + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Esita leha ho na le ditlamorao, motjha wa ka o ntse a sa latele molao.", "type": "template", "note": "" }, { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Boikwetliso ba lapeng bekeng ena ke ho fa motjha wa hao ditaelo tsa seo a lokelang ho se etsa.\n\nHopola - EBE TSE UTLWAHALANG, EBE TSE KGOTHATSANG, EBE TSE HLAKILENG = BOLELA HANTLE SEO O SE BATLANG (o itlhakise kahohle kamoo ho ka kgonehang ho motjha!)", + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "Ha motjha wa hao a tswela pele ho tlola melao, o ka nna wa tlameha ho qeta nako e ngata le yena le etsa dintho tse molemo.\n\nLeka ho tswela pele ka dintho tse ding tseo o ikemiseditseng ho di fihlella – jwaloka ho itlhokomela, nako ya boinotshing, le pabatso. Tsebo ena kaofela e tla thusa motjha wa hao hore a ikutlwe a ratwa haholo ebile a sireletsehile… mme seterese sa hao se tla hafoha!", "type": "template", "note": "" }, { - "SourceText": "We care about you, and how life is treating you.", - "text": "Rea o tsotella, le kamoo bophelo bo leng kateng ho wena.", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Re ile ra theha ditlamorao tse bosula feela, ho hang ho ne ho se na tse ntle.", "type": "template", "note": "" }, { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "O kgalala. O etsa phapang e kgolo. Ikotle sefuba ka wena.", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Ka dinako tse ding ho ka ba thata ho nahana ka ditlamorao tse ntle. Ditlamorao tse ntle di tla kgothalletsa motjha wa hao ho jara boikarabelo haholo, mme o tla bona phapang!", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Re maswabi ho utlwa hore dintho ha di bonolo kajeno. Batswadi bohle ba tobana le matsatsi a jwalo.", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "Motjha wa ka o ile a sisinya hore a shapuwe e le ditlamorao tse bohloko.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Kwala mahlo, o kge moya, mme o tsebe hore sohle seo o se entseng se bohlokwa haholo.", + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Batjha ba ka tlwaela ho bona ho shapuwa e le tsona feela ditlamorao tse ka kgonehang tsa ho tlola melao.\n\nQalang ditlamorao tse ding le kgutsitse mmoho tse ka ba thusang ho utlwisisa hore ba entse ntho e fosahetseng. Dintho tsena di tla atleha haholo ebile di tla beha mehlala e metle!", "type": "template", "note": "" }, { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Lelapa le leng le le leng le tobana le diphephetso, empa ha re sebedisana, re ka sebetsana le mathata ka tsela e atlehang le e nang le kgotso.\n\nKe tsebo ya bohlokwa hore motjha wa hao le yena a ithute yona!", + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa).", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho rarolla bothata.\n\nKaofela rea tseba hore ho na le dinako tseo re tobanang le mathata, mme kaofela rea tseba hore ha re iphumana re le maemong ana, ho thata ho nahana ka tharollo e nepahetseng hanghang.\n\nKahoo, ho bohlokwa hore ha re tobane le mathata re nke kgefu, re heme, re dule re kgobile matshwafo mme re nahane ka tsebo eo re nang le yona ya ho rarolla mathata eo re ka e sebedisang.\n\nA re hopoleng ho kenyelletsa batjha ba rona ha re rarolla mathata. Sena se tla ba thusa ho ba batho ba nang le boikarabelo le ho ithuta ho rarolla mathata a bona nakong e tlang.", + "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "O ka thusa motjha wa hao ho utlwisisa hore ho tlola melao ya lelapa ho fella ka ditlamorao.\n\nEmpa TSELA eo o etsang sena ka yona e bohlokwa.\n\nHo jarisa motjha ditlamorao hantle ho mo thusa ho itshwara hantle le ho etsa hore bophelo ba lelapa bo iketle hanyane...", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho jara ditlamorao moya o le fatshe.\n\nHo bohlokwa hore ha re qala ditlamorao ho batjha ba rona, re ba kenyelletse, empa hape ho bohlokwa hore re be re theotse moya ha re qala ditlamorao.\n\nSena se tla thusa hore re dumellane ka ho qala ditlamorao tse mosa ho batjha ba rona mme batjha ba rona ba tla di hopola kapele ha ba ameha mme seo se tla etsa hore ba jare boikarabelo.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Batjha ba dula ba tlola melao. Kgolo ke nako e boima ha ba ithuta hore na ke bomang.\n\nKa lehlohonolo, ho na le ditsela tsa ho kgalemela batjha ntle le ho halefa kapa ho sebedisa dikgoka… ebile di sebetsa hantle!\n\nHo fana ka ditlamorao re kgobile matshwafo ho thusa batjha ho jara boikarabelo ka seo ba se etsang – ebang se setle kapa se sebe.\n\nMehlala ya taba ena ke ena - ipone o le motswadi:", "type": "template", "note": "" }, { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "A re shebe se hlahetseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ha @global.w_solve_teen_girl a letsetswa ke moshanyana… founo!", + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Ditlamorao tse kgutsitseng di lokela ho ba...\n\nTSE LOKILENG: E se be tse sehloho haholo mme ruri o ka di kgona\n\nHANGHANG: Mo jarise tsona kapele kamoo ho ka kgonehang\n\nTSE TSHWANANG: Ditlamorao tse tshwanang ka dinako tsohle", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o e nkile kae ntho ye?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o ntheketse yona. Ke founo e ntle hakaakang, @global.w_solve_female_caregiver_1. E nka difoto tse ntle haholo!\"", + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Hlophisa ditlamorao tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng. Hopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: “Ha ke batle ho bona ntho eo e turang! Moshemane eo ke sekeleme! O nahana hore o tlo mo patala ka eng ha a o reketse ntho ye?!” \n\n@global.w_solve_teen_girl: “Ha ho etsuwe jwalo, @global.w_solve_female_caregiver_1! Ntho eo o e etsang ha ke e rate!”", + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: “Ha ke batle ho utlwa o tjho jwalo!” \n\n@global.w_solve_teen_girl: “Ha o leke le ho mmamela! Ha ke tsebe le hore na ke ne ke itshwenyetsang ho bua le wena!”", + "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Phethela wekshopo mme o leke ho buisana le motjha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Kga moya o mongata ka makgetlo a mmalwa hore o theole moya, ebe", + "SourceText": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Dumela @fields.user_name! kajeno re keteka likhoeli tse peli tsa ho sebelisa @global.parent_app!\n\nO tla hantle haholo! Thupelo ea beke ena e tla ho u thusa ka ho tseba seo u lokelang ho se etsa ha mocha oa hao a sa latele melao ea lelapa.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "KNOW IT", - "text": "E TSEBE", + "SourceText": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Dumela @fields.group_name! kajeno re keteka likhoeli tse peli tsa ho sebelisa @global.parent_app!\n\nO tla hantle haholo! Thupelo ea beke ena e tla ho u thusa ka ho tseba seo u lokelang ho se etsa ha mocha oa hao a sa latele melao ea lelapa.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Identify the problem.", - "text": "O hlwaya bothata.", + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "text": "Ke ho thabisang ho bona hore o sebedisa @global.parent_app. O se o fumane dithulusi tse 6 tsa botswadi!\n\nNka wekshopo e latelang ho fumana thulusi e nngwe ya botswadi!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "SOLVE IT", - "text": "E RAROLLE", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. Hantlentle ho kgoba matshwafo ho thusa motjha wa hao ho latela ditaelo hantle – leka sena pele o fetela pele!\n\nO entse hantle ka ho bontsha ho itella lelapa la hao hakaalo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Nahana ka ditharollo tse ka kgonehang le se ka etsahalang haeba re di sebedisa.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "text": "O entse mosebetsi o motle ka ho qeta @local.workshop_data.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "TRY IT", - "text": "E LEKE", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", "type": "template", "note": "" }, { - "SourceText": "Choose a solution and try it out.", - "text": "Kgetha tharollo mme o e leke.", + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "E, ho nkeha maikutlo ka tsela e matla hakaalo ho halefisitse le ho kwatisa motho e mong le e mong.", "type": "template", "note": "" }, { - "SourceText": "TEST IT", - "text": "E TUTSE", + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "A re bale se etsahetseng ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "Na e sebeditse? Ke hantle! Haeba e sa sebetsa, leka tharollo e nngwe.", + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! O leite!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "A re boneng kamoo tharollo e sebetsang kateng boemong ba sebele.", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape”. \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 o tla lapeng a tswa mosebetsing. \n\n@global.w_solve_female_caregiver_2 (o a nahana): \"Iyo maoto a ka a bohloko! Ke tlameha ho dula fatshe hanyane mme ke nwe kofi pele ke qala ho pheha dijo tsa lelapa.\"", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: “Ke kopa ho o hlalosetsa, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ha o mamele molao! Ke tla o shapa!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O etsang? Ke bohobe ba mantsiboya boo! Jwale bo ke ke ba re lekana kaofela!\"", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Ntho eo o e etsang ha e hantle! Ha ho na mohla o mmamelang!! Ke o hloile!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: “Ntsharele, @global.w_solve_female_caregiver_2, ke utlwa ke lapile. E re ke o jwetse, ho na le moshemane enwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a nahana): “Kgefuta hanyane… kga moya…”", + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "A re kgutlele ho @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Ako eme hanyane feela hle. Ke kgathetse ebile jwale ke kgathatsehile ka hore na re tla ba le dijo tse lekaneng mantsiboya.” \n\n@global.w_solve_teen_boy_2: “Askisi hle, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: \"Ke kgathatsehile ka hore o sa ntse o fihla lapeng leite mme sena se etsahala kgafetsa, @global.w_consequence_teen_boy_1. Re ka etsang ho o thusa ho hopola ho tla lapeng ka nako?\"\n\n@global.w_consequence_teen_boy_1: \"Ha ke fihla lapeng ka nako, mohlomong nka fihla metsotso e 30 pele ho nako e tlwaelehileng?\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Step 1: KNOW IT", - "text": "Bohato ba 1: BO TSEBE", + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: O nahanne ntho e ntle! Mme jwale re tla etsang haeba o sa latele molao? \n\n@global.w_consequence_teen_boy_1 (o a korotla): “Mgmluuhm”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: \"Jwale ako mpolelle, hobaneng ha o lapile? Na ha o a ja sekhafothine sa hao ka lantjhe sekolong?” \n\n@global.w_solve_teen_boy_2: \"Bothata bo qala hona moo. Ho na le moshemane e mong sekolong ya ratang ho iketsa mpodi. Mehlaena o re haeba ke sa mo fe lantjhe ya ka, yena le metswalle ya hae ba tla ntematsa. O nkwatisa haholo!\"", + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: \"Bona hle moshana, kea tseba hore ho na le ntho eo o e nahanang.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile…. Ho thweng ka: Ke tlameha ho etsa homeweke ya ka?\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo empa ke thabile ha e le mona o mpolelletse, @global.w_solve_teen_boy_2. Empa seo ha se bolele hore o tla ja dijo tsa mantsiboya tsa rona kaofela. Kamora hore re bue, o tla lokela ho ya shopong ho ya reka bohobe bo bong. Empa a re qale mona: O nahana hore re lokela ho etsang ka bothata ba bompodi?\"\n\n@global.w_solve_teen_boy_2: \"Emmm… Ke batla ho mo otla kapa ke mo kgalemele.\"", + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: \"O lokela ho etsa homeweke ya hao hanghang. Ha o lebala molao, etlaba hantle hore letsatsing le hlahlamang o se ke wa bona metswalle ya hao.\"\n\n@global.w_consequence_teen_boy_1: \"Ho lokile, @global.w_consequence_male_caregiver.\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 2: SOLVE IT", - "text": "Bohato ba 2: BO RAROLLE", + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Letsatsing le hlahlamang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Ke leite!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: \"Hmmm… o nahana hore ho tla etsahalang ha o etsa jwalo?\"\n\n@global.w_solve_teen_boy_2: \"Ha ke tsebe. O moholo ho nna, mohlomong o tla ntlhola. Ebile nka kena mathateng sekolong yaba kea tebelwa.\"", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo @global.w_consequence_male_caregiver – tsa mo robala hape.” \n\n@global.w_consequence_male_caregiver: “Nako ya hore ebe o se o fihlile lapeng e fetile KGALE!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: \"E, seo se ka etsahala. Empa ho fapana le moo re ka etsang?\"\n\n@global.w_solve_teen_boy_2: \"Ke nahana hore nka bolella titjhere. Empa jwale bana ba bang ba tla mpitsa selallane. Mohlomong wena o ka bua le titjhere?\"", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: “E re ke o hlalosetse, @global.w_consequence_male_caregiver, Nka o hlalosetsa.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ke hara mpa ya bosiu mme o fihlile leite ka nako eo re sa dumellanang ka yona. Ho sa tsotellehe lebaka, o tlameha ho utlwisisa hore ntho ena ha e amohelehe. @global.w_consequence_female_caregiver mme ke utlwa ke tshwenyehile haholo.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Ekare ke leano le letle leo. Mohlomong nka bua le batswadi ba hae haeba o batle ke bue le bona.\"\n\n@global.w_solve_teen_boy_2: \"E. Haeba o bona eka seo se ka thusa. Kea leboha, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: “Metswalle ya ka e ne e batla re dule ho fihlela bosiu. E mpitsa ngwana hobane ke batla ho tla lapeng ka nako.” \n\n@global.w_consequence_male_caregiver: “Kea tseba hore ho ka ba thata ho hanyetsa metswalle ya hao. E re re bue ka taba eo hoseng ha re se re phomotse.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Haeba ho na le ntho e nngwe eo o e batlang, moshanyanaka. Ke tla o etsetsa yona hang ha re qeta ho ja dijo tsa mantsiboya. Ene wa tseba keng? Haeba e sa sebetse, re tla leka e nngwe re le babedi.\"\n\n@global.w_solve_teen_boy_2: \"Kea leboha, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: “Ke kopa tshwarelo ke ile ka le tshwenya ebile @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Kea leboha. Tsa mo robala, empa o hopole, kaha o fihlile lapeng kamora nako eo re dumellaneng ka yona, hosane re ke ke ra o dumella ho tswa bosiu.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 3: TRY IT", - "text": "Bohato ba 3: E LEKE", + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le puisano – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le puisano – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", "type": "template", "note": "" }, { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "Beke hamorao… \n\n@global.w_solve_female_caregiver_2: \"Ho tsamaya jwang sekolong hona jwale?\"\n\n@global.w_solve_teen_boy_2: \"Ho betere, moshemane eo ha a sa nkukela lantjhe ya ka. Empa o ntse a sa mpatle.\"", + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le boikgopotso – seo ha sea sebetsa…\n* Mehlala ya ditlamorao\n* Dithuluse: Tsela ya ho fana ka ditlamorao o theotse moya\nHLALOSA - DUMELLANANG - NKA BOHATO\n* Puisano ya melao le ditlamorao\n* Pale le boikgopotso – seo se sebeditse!\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Step 4: TEST IT", - "text": "Mohato wa 4: E TUTSE", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Buisanang: \n* Ke hobaneng ha ho jarisa motjha ditlamorao ka tsela ena ho sa sebetse hantle?", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo, @global.w_solve_teen_boy_2. Na ke kope malome wa hao ho buisana le batswadi ba hae? Haeba seo se sa sebetse, re tla leka tsela e nngwe!\"\n\n@global.w_solve_teen_boy_2: \"E, kea leboha @global.w_solve_female_caregiver_2. Bonyane kea tseba hore o a nthusa.\"", + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver o ne a halefile", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Buisanang: \n\nKe jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver ha aa dumella @global.w_consequence_teen_boy_1 ho itlhalosa", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Hopola @global.w_solve_teen_girl le founo eo a e fuweng ke moshemane yane?", + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Ha ho a buisanwa le @global.w_consequence_teen_boy_1 ka ditlamorao tseo esale pele", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Ke jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", + "SourceText": "The consequence was too strong", + "text": "Ditlamorao di ne di le matla haholo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "A re kgutlele ho @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 mme re bone hore na ke ditharollo dife tseo ba tlang ka tsona.", + "SourceText": "Giving a consequence this way did not work well because...", + "text": "Ho fana ka ditlamorao ka tsela ena ha ho a sebetsa hantle hobane...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa hae ba tlile ka ditharollo tse tharo.", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Buisanang ka:\n* Ke melao efe eo motjha wa hao a e tlolang kgafetsa? \n* O ka sebedisa ditlamorao dife bakeng sa molao ka mong o tobileng o tlotsweng? \n\nDitlamorao di lokela ho ba: \nTSE LOKILENG (eseng tse sehloho)\nHANGHANG (ntle ho tshenyo ya nako) \nTSE TSHWANANG (tse tshwanang nako le nako).\n\nBabatsanang le ho kgothatsana – re ka matlafatsana!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Ho thata haholo ho ba motswadi wa motjha. \n\nHangata ha ho na ditharollo tse bonolo le tse seng thata, empa jwale @global.w_solve_female_caregiver_1 o ithutile hore a ka buisana le moradi wa hae ka dintho tsena. \n\nPele, o ne a kgathatseha a le mong, jwale ba ka tla ka ditharollo mmoho!", + "SourceText": "Let's talk about this story", + "text": "A re bue ka pale ena", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "Ropa @global.w_solve_teen_girl kgwedi e le nngwe", + "SourceText": "Why did using a consequence work well this time?", + "text": "Ke hobaneng ha ho mo jarisa ditlamorao ho atlehile lekgetlong lee?", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: “O ke ke wa intsha kgweding e latelang”", + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver wa hae ba buisana ka ditlamorao ha bobedi ba bona ba theotse moya", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Seo ha sea sebetsa... A re lekeng ho hong.", + "SourceText": "They agreed on consequences together", + "text": "Ba dumellana ka ditlamorao mmoho", "type": "template", "note": "" }, { - "SourceText": "Return the phone and save up", - "text": "Kgutlisa founo mme o ipehele tjhelete", + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver o arabetse a theotse moya empa a sa hlathe kwana le kwana ha @global.w_consequence_teen_boy_1 a tlotse molao", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: \"Ha ke leke ho qosa motswalle wa hao ebile ha ke mona. Ke mpa ke tshwenyehile hore ha motho a o fa mpho, ho ba thata ho re 'tjhe' ha a o kopa ntho e nngwe le wena – jwaloka thobalano. Haeba o batla founo, re tla baballa tjhelete mmoho e le hore o iketsetse diqeto tsa hao o sa kolote motho eng kapa eng.\"", + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver o ile a mamela @global.w_consequence_teen_boy_1", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "This is great! Try the third option as well.", - "text": "Ena e ntle! Leka le tsela ya boraro.", + "SourceText": "The consequence was realistic and appropriate", + "text": "Ditlamorao ebile tse utlwahalang le tse loketseng", "type": "template", "note": "" }, { - "SourceText": "Learn about safe sex", - "text": "Ithute ka thobalano e bolokehileng", + "SourceText": "Using a consequence worked well this time because...", + "text": "Ho mo jarisa ditlamorao ho atlehile lekgetlong lena hobane...", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: “Sena se nthusa hore ke bone hore re tlameha ho bua ka bahlankana le ho itshireletsa. Batjha ba bangata ba dilemong tsa hao eba baimana kapa ba tshwarwa ke HIV. A re ye tliliniking hore o buisane le mooki hore o ithute hore na o ka dula o itshireleditse jwang.”", + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Tsela ya ho qala ditlamorao tse monate e bohlokwa. Hopola, ha o kenyelletsa motjha wa hao, hangata dintho di tsamaya bothebelele!", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "This is great!", - "text": "Ena e ntle!", + "SourceText": "EXPLAIN", + "text": "HLALOSA", "type": "template", "note": "" }, { - "SourceText": "Let's practice problem-solving!", - "text": "A re itlwaetse tsela ya ho rarolla mathata!", + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Tiisa hore bobedi ba lona le kgobile matshwafo. Hemela hodimo ka makgetlo a seng makae. Hlalosetsa motjha wa hao hore na ke hobaneng ha o kgathatsehile ka boitshwaro ba hae.\n\nHlalosa mabaka a hore na hobaneng ha ho hlokeha molao. O ka mo phetela maikutlo a hao - ho lokile ho mo bolella hore o swabile.", "type": "template", "note": "" }, { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Ikwetlisetseng mathata ao le nang le wona hona jwale mmoho. E mong wa lona ebe motswadi mme e mong e be motjha.\n\nBabatsanang le ho kgothatsana - re motlotlo ka lona!\n\nHopola mehato ena:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE", + "SourceText": "AGREE", + "text": "DUMELLANANG", "type": "template", "note": "" }, { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Ruta batjha ba rona mehato e mene ya ho rarolla mathata:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE\n\nSebedisang mehato e na mmoho ha mathata a hlaha!\n\nHa ho etsahala ntho e mpe, hangata rea halefa le ho beha batho molato. Empa seo hantlentle batjha ba rona ba se hlokang ke motho ya tla ba thusa hore ba fumane ditharollo mmoho. Ba mamele, amohela tsela eo ba tadimang dintho ka yona le eo ba ikutlwang ka yona, mme le ba lebohe ka hore ba le tshepe.\n\nHo ruta motjha wa hao tsela ya ho sebetsana le mathata ho tla mo thusa bophelong bohle ba hae. Ke mpho e babatsehang!", + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Hlophisa ditlamorao le motjha wa hao tsa ho latela molao le ho se o latele.\n\nMo botse hore na o nahana jwang. Buisanang ho fihlela le dumellana ka ho hong ho utlwahalang.\n\nEtsang ditlamorao tsa HO SE latele molao le tlotla ya ha A latela molao.", "type": "template", "note": "" }, { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Mathata a mang ao batswadi ba bang ba a rarolotseng le batjha ba bona:", + "SourceText": "ACT", + "text": "NKA BOHATO", "type": "template", "note": "" }, { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* Ke hobaneng ha motjha wa ka a sa batle ho ya sekolong\n* Ke kgathatsehile ka hore motjha wa ka ke moimana kapa o tla imisa motho\n* Ke kgathatsehile ka seo motjha wa ka a se etsang inthaneteng\n* Motjha wa ka o tsamaya le metswalle e fosahetseng\n* Motjha wa ka o botswa\n* Motjha wa ka ha a etse mosebetsi wa hae wa sekolo\n* Mohlomong motjha wa ka o tsuba dithethefatsi", + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Ha motjha wa hao a latela molao, mo babatse mme o mo fe dintho tse kgethehileng!", "type": "template", "note": "" }, { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Ho ba motswadi wa mmakgonthe ho boetse ho bolela ho qeta nako e itseng o itlhokomela letsatsi le letsatsi.", + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "O tla ikutlwa a hlomphuwa ebile e le wa bohlokwa. Hopola: Ha o mo babatsa haholo, o tla bonahatsa boitshwaro boo bo botle!", "type": "template", "note": "" }, { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Ke ditaba tse monate. Mme ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Ha motjha wa hao a sa latela molao, mo jarise ditlamorao.", "type": "template", "note": "" }, { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Ho thata ho ba motsoali. Empa ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Ha motjha wa hao a tlola molao, ka mosa mo jarise ditlamorao tsa ketso ya hae. E lokela ho ba tse LOKILENG (eseng tse sehloho), HANGHANG (di jarise tsona ntle ho tshenyo ya nako) KA TSELA E TSHWANANG (ebe tse tshwanang nako le nako).", "type": "template", "note": "" }, { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Ho etsa efe kapa efe ya tsena ho o etsa motswadi wa mmakgonthe.", + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "Ke ditlamorao dife tse ka jariswang batjha ba phehisanang kgang nakong ya dijo tsa tinare empa seo se etswa ka tsela e kgutsitseng?\n\nHopola hore e tlameha ho ba tse:\nLOKILENG - HANGHANG - TSE TSHWANANG", "type": "template", "note": "" }, { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Batjha ba qeta nako e ngata haholo ba se katlung kapa ba le inthaneteng, moo ho leng thata ho tiisa hore ba bolokehile.\n\nHo buisana ka dibaka tse sireletsehileng le tse sa sireletsehang, le tsela ya ho thibela mathata, ka sebele ke ntho e thusang!", + "SourceText": "Not seeing any friends for a month", + "text": "Ho se bone metswalle efe kapa efe kgwedi kaofela", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Dumelang bohle.\n\nKajeno sehlooho sa rona ke polokeho ya batjha.\n\nKe boikarabelo ba rona jwaloka batswadi ho tiisa hore batjha ba rona ba sireletsehile ka dinako tsohle. Re tlameha ho tiisa hore batjha ba rona ba sireletsehile metseng eo re dulang ho yona. Ke boikarabelo ba rona hore re ba tsebise ka dibaka tse sireletsehileng le tse sa sireletsehang metseng.\n\nHape ke boikarabelo ba rona ho tiisa hore ba utlwisisa dikotsi tseo ba ka nnang ba kopana le tsona ha ba le inthaneteng. Ka tsela eo batjha ba rona ba tla ba le boikarabelo mme ba tla kgona ho etsa diqeto tse nepahetseng hore le bona ba tiise hore ba sireletsehile.", + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Ena ekaba ntho e thata ho wena ebile e tla be e le sehloho!", "type": "template", "note": "" }, { - "SourceText": "Today you will explore:", - "text": "Kajeno lena o tla ithuta:", + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Ho tlohela ditokisetso tsa mokete wa letsatsi la tswalo o saletsweng ke kgwedi", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Pale le puisano – e sebeditseng!\n* Pale le puisano – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Ke ntho ya kgale haholo, ebile le ena e tla ba ketso e sehloho!", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Pale le boikgopotso – e sebeditseng!\n* Pale le boikgopotso – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "No TV this evening", + "text": "Ha ba shebelle TV mantsiboyeng ana", "type": "template", "note": "" }, { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Puisano ke ntho ya bohlokwa ka ho fetisisa!\n\nA re boneng se etsahetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Hase moo, ena e utlwahala e lokile ebile e ka etswa hanghang", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: \"Ho na le ntho e etsahetseng ha ke tsamaile le metswalle ya ka @global.w_safe_teen_girl_2 le @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Ke mametse, @global.w_safe_teen_girl_1\"", + "SourceText": "Self-care is a key parenting tool.", + "text": "Ho itlhokomela ke thulusi ya bohlokwa ya botswadi.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Monna wa koloi: “Dumela sematsatsa. Ke kgale ke ntse ke o batla. O motle hakaakang! Kana lebitso la hao o mang? \n\n@global.w_safe_teen_girl_2: “Lebitso la hae ke @global.w_safe_teen_girl_1”", + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Ke thabela ho utlwa hore o ikutlwa hantle kajeno. O motho ya hlollang!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Monna wa koloi: “@global.w_safe_teen_girl_1, na o ka rata ho tsamaya le nna ho ya nwa terenki le ditjhipsi. Kena hle, o tla kgutla ka nako, kea o tshepisa…” \n\n@global.w_safe_teen_girl_1: “Ha ke dumele hore ke ntho e nepahetseng eo…”", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Re maswabi hore o hula ka thata hona jwale. Hemela hodimo mme o tsebe hore o motho wa bohlokwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “O lehlohonolo mokgotsi wa ka. Ke kgalla eka monna enwa a ka kopa ho tsamaya le NNA le ho nthekela dimpho. Kea o jwetsa, haeba o hana ke tlo jwetsa batho bohle hore o setlaela!”", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "O phethetse wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tlang e tla le keteka kaofela, le ho le thusa ho etsa ditokisetso bakeng sa kamoso.\n\nHobaneng ha le sa lokisetse phathi moo le tla ja mmoho, le letse mmino haeba le rata ho tantsha!", "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 le ska tsamaya le yena! Itlhokomeleng! A re yeng hae. Ho kotsi ho tsamaya le batho bao re sa ba tsebeng. Ebile o moholo ho wena hape o etsa ntho e mpe.\"\n\n@global.w_safe_teen_girl_1: “Ha ke tsebe…”", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "O phethile wekshopo ya bekeng ena.\n\nWekshopo ya bekeng e tla e tla o keteka, mme o ka kgetha tshehetso eo o e batlang ho ya pele.\n\nO ka lokisetsa dimenyemenye ho keteka – ntho eo o ratang ho e ja, kapa mmino oo o ratang ho o mamela!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: \"Pfff, ke motlotlo ka wena hore ebe ha o a ka wa kena ka koloing eo. E ne e le boemo bo kotsi haholo, kea leboha hore ebe o mpolelletse se etsahetseng!\"", + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "Le motjha wa hao kgethang bo bong ho maemo ana (kapa nahanang ka bo bong ka bolona!). Shebang khathune, mme le buisane ka seo le ka se etsang mmoho haeba seo se etsahalla motswalle kapa se hlaha ka lapeng.\n\nMme hopola: KGA MOYA - MAMELA - NAHANA", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "A re bue ka se etsahalletseng @global.w_safe_teen_girl_1", + "SourceText": "prepare for a possible crisis with their teens", + "text": "lokisetsa tlokotsi e ka hlahang le batjha ba hao", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Buisanang:\n\nKe eng e neng e le kotsi ka boemo boo?", + "SourceText": "prepare for a possible crisis with your teen", + "text": "lokisetsa tlokotsi e ka hlahang le motjha wa hao", "type": "template", "note": "" }, { - "SourceText": "The situation was risky because...", - "text": "Boemo boo bo ne bo le kotsi hobane...", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "Motjha wa ka o mpolelletse hore o hlahetswe ke ntho e tebileng mme ke ne ke sa tsebe hore na ke sebetsane le taba eo jwang.", "type": "template", "note": "" }, { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho\n* Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho \n* Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding \n* Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona\n* Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Babatsa motjha wa hao hobane a o bolelletse, ha ho bonolo ho etsa jwalo! Hopola, o ka sebedisa tsebo yohle eo o e kotutseng lebokoseng la hao la dithuluse: Nka kgefu, sebedisa mehato e mene ya ho rarolla mathata, mme o batle thuso eo wena le motjha wa hao le e hlokang!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "A re nahaneng ka se etsahalletseng @global.w_safe_teen_girl_1:", + "SourceText": "Get support", + "text": "Fumana thuso", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "What was risky about that situation?", - "text": "Ke eng e neng e le kotsi ka boemo boo?", + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Puisano eo e ile ya etsa hore ke ikutlwe ke sa phutholoha ho hang hobane e ile ya nkgopotsa ntho e bohloko e kileng ya nhlahela.", "type": "template", "note": "" }, { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho", + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Ha ntho e re hopotsa ka ketsahalo e jwalo, ho tlwaelehile hore re ikutlwe re kwatile kapa re halefile. Ho bohlokwa ho fumana nako ha o kgutsitse, hore ka nahana ka hore na o hloka tshehetso ya mofuta ofe. Mohlomong o tlameha ho buisana le motho e mong.", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho", + "SourceText": "One of us did not feel comfortable.", + "text": "E mong wa rona o ne a sa ikutlwe a phutholohile.", "type": "template", "note": "" }, { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding", + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Ena ke ntho e thata hore batho ba bue ka yona. E fumanele nako eo le phutholohileng. Rea tseba hore ho bonolo haholo ho qoba ho bua ka taba le ho tshepa hore e keke ya re etsahalla. Empa, ho ithuta ho sebetsana le tlokotsi ho tshwana le ho fumana inshorense; KAMEHLA ho molemo ho nahana ka yona le ho itokisetsa yona.", "type": "template", "note": "" }, { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Sepheo sa hao ke hore o buisane ka boemo ba tlokotsi bo ka hlahang le motjha wa hao le ho itokisetsa bona.", "type": "template", "note": "" }, { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Malapa wohle a ba le ditsietsi. Ha re itokisa mmoho ebile re tseba hore na re fumana thuso hokae PELE ntho e mpe e etsahala, re ka hlola tsietsi efe kapa efe.", "type": "template", "note": "" }, { - "SourceText": "All those things are true!", - "text": "Dintho tseo kaofela ke nnete!", + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho sebetsana le ditsietsi.\n\nTsietsi e ka hlaha kae kapa kae. Tsietsi e ka hlaha neng kapa neng. Kahoo ho bohlokwa hore lelapa le be le ditlhophiso haeba setho sefe kapa sefe sa lelapa le iphumana le se tsietsing.\n\nHo bohlokwa ho etsa ditlhophiso e le hore setho se seng le se seng sa lelapa se ka ikutlwa se sireleditswe.\n\nHa re sebetsana le tsietsi, hopola ho kgefutsa, ho kga moya, le ho dula o kgobile matshwafo. Sena se tla o thusa ho sebetsana le tsietsi kapa tlokotsi hantle.", "type": "template", "note": "" }, { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "A re shebeng mohlala o mong wa boemo bo kotsi mmoho.", + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Ho molemo ho tlwaela ho sebetsana le tlokotsi pele ho etsahala ntho e nngwe.\n\nSheba dinako tsena tsa ditsietsi kapa ditlokotsi tse hlano tse hlahelang malapa. Nahana o le motswadi: O ne o tla etsang?\n\nHopola: KGA MOYA - MAMELA - NAHANA", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: \"Mokgotsi wa ka o dula a bua ka moshemane e mong ya lekanang le rona wa inthaneteng... O tlo romella dinepe tsa hae ho moshemane eo. Na ho betere hobane ke thaka rona?\"", + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Tsietsi ya 1: @global.w_crisis_teen_boy_2 o a lwana sekolong", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: \"O motswalle wa nnete hobane o kgathatsehile ka mokgotsi wa hao. Ho romela dinepe tse sexy ho yena ho kotsi le ho feta.\"", + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: \"Kea qala ho ba boemong bona. Empa jwale ba tlo ntebela\"", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: \"Ka dinako tse ding ba pata seo ba hlileng ba leng sona inthaneteng – a ka re ke thaka ya lona empa e le monnamoholo ya dilemo di 50. Kapa ha ba kgaohana, a ka romella dinepe tseno ho batho bohle mme mokgotsi wa hao o tla utlwa bohloko haholo.\"", + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "text": "Tsietsi ya 2: @global.w_crisis_teen_girl_1 eba moimana", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Let's talk about our teens' online safety.", - "text": "A re buisaneng ka boipaballo ba batjha ba rona inthaneteng.", + "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke swabile haholo. Ha ke tsebe hore na ke etseng\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Batjha ba matsatsing ana ba tobana le dikotsi dife inthaneteng?", + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "text": "Tsietsi ya 3: @global.w_crisis_teen_boy_2 o imisa ngwanana", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano \n* Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe\n* Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya\n* Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko\n* Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", + "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ha ke batle ho ba le lesea\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" }, { - "SourceText": "Let's think about our teens' online safety.", - "text": "A re nahaneng ka boipaballo ba batjha ba rona inthaneteng.", + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "O ne o tla arabela jwang ho @global.w_crisis_teen_boy_2?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Kotsi e kgolo ka ho fetisisa eo batjha ba matsatsing ana ba tobanang le yona inthaneteng ke efe?", + "SourceText": "Crisis 4: Someone in the family gets sick", + "text": "Tsietsi ya 4: Motho e mong ka lapeng o a kula", "type": "template", "note": "" }, { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano", + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "\"Tlhahlobo e re ke na le HIV. Ke tshohile hore ke tlo shwa\"", "type": "template", "note": "" }, { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe", + "SourceText": "How could you respond in this situation?", + "text": "O ne o tla arabela jwang boemong boo?", "type": "template", "note": "" }, { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya", + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Tsietsi ya 5: @global.w_crisis_teen_girl_1 o qobellwa ke moshemane eo a ratanang le yena hore ba etse thobalano", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko", + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: \"Ke ne ke sa batle. Jwale ke tla ima kapa ke kule. @global.w_crisis_female_caregiver, ke tshohile haholo...\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "O ne o tla arabela jwang ho @global.w_crisis_teen_girl_1?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!\n\nA re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nA re etseng dimmapa tsena re le sehlopha hona jwale. \n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena.", + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Hopolang ho tshehetsana le ho kgothatsana. Ho thata ho dula o theotse moya le ho mamelana ha ho hlahile tsietsi - re motlotlo ka wena.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Buisanang:\n\n* Ke dibaka dife mmapeng wa hao tse bolokehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa bolokehang bakeng sa batjha \n – Di tshwaye ka SEKERE\n* Ke eng e etsang hore sebaka se bolokehe kapa se se ke sa bolokeha? \n* Wena le motjha wa hao le ka etsang hore motjha wa hao a dule a bolokehile?", + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "Na o se o kile wa buisana le motjha wa hao ka hore na le ka etsang ha ho hlaha tlokotsi?", "type": "template", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n\n* Wena le motjha wa hao le ka fumana tshehetso hokae ha o tobane le tlokotsi? \n – TSHWAYA dibaka tseo ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", + "SourceText": "Crisis Examples", + "text": "Mehlala ya Ditlokotsi", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba di sebedisang \n* Babatsanang ka lebaka la tsela e ntle eo ba tsebang ho sebedisa webosaete ka yona! \n* Buisanang ka hore na ke dife tse ka nnang tsa ba kotsi. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa ha motjha wa hao le metswalle ya hae ba sebedisa inthanete ka tsela e sireletsehileng?", + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "O motswadi ya ikemiseditseng. O ikotle sefuba - kannete ena ke katleho e kgolo!", "type": "template", "note": "" }, { - "SourceText": "Safety Plan", - "text": "Moralo wa Boipaballo", + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @local.workshop_data.in_text_title mme o ithute tsela e ntlehadi ya ho itshwara ha motjha wa hao a o hloka haholo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!", + "SourceText": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.user_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o rera kapa o boloka moralo wa boipaballo, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.group_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "A re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena - haeba motjha wa hao a le teng hona jwale, le ka etsa seo mmoho hona jwale!", + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "text": "Ha re tsebe hore na tlokotsi e ka hlaha neng, empa re KA itokisa! \n\nQala wekshopo e latelang hore o ithute hore na o ka etsa sena jwang hammoho le motjha wa hao.", "type": "template", "note": "" }, { - "SourceText": "My family can join in now!", - "text": "Lelapa la ka le ka kena hona jwale!", + "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Hosane wekshopo ya ho qetela ya @global.parent_app e tla be e o emetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ka tsela ena, o ka phetha sete ya hao ya tsebo ya botswadi mme wa etsa qeto ya hore na ho tloha moo o tla etsang!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Let me try it out by myself", - "text": "E re ke e leke ke le mong pele", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane o ka fumana wekshopo ya ho qetela ho bontsha leeto la hao la @global.parent_app le seo o ka se etsang ho tloha moo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Mohato wa 1: Ho na le dibaka dife tsa bohlokwa motseng wa habo lona?", + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "E, hantlentle @global.w_crisis_female_caregiver o sebedisitse ditsebo tsohle – le wena o ka kgona!", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Fumana sekgetjhana sa pampiri (kapa koranta ya kgale kapa khateboto) le pene. \n* Toroya mmapa wa motse wa habo motjha wa hao, ka ditshwantsho tsa dibaka tsohle tsa bohlokwa jwaloka diterata, ntlo ya hao, sekolo, dishopo, dibaka tseo motjha wa hao a di etelang.", + "SourceText": "All these skills can help in a crisis.", + "text": "Tsebo ena kaofela e ka thusa ha ho hlahile tsietsi.", "type": "template", "note": "" }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Mohato wa 2: Ke dibaka dife tse sireletsehileng le tse sa sireletsehang?", + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "Tsietsi e ka hlahela mang kapa mang. \n\nA re bone se etsahalletseng @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Buisanang:\n* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: \"Ao ngwanaka, ekare o utlwile bohloko, na o ka thabela ho mpolella hore na ho etsahetseng?\"", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: \"Ke Malome, o… o… o ile a ntshwara.\" \n\n@global.w_crisis_female_caregiver (o a nahana): \"Kga moya o mongata... Ngwana wa ka o hloka eng? O hloka hore ke theole moya mme ke mo mamele\" \n\n@global.w_crisis_female_caregiver: \"Tloho o dule pela ka mona. O ska tata, ke o utlwe hantle.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Mohato wa 3: O ka fumana tshehetso hokae?", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: \"Kannete, o… o… nqobelletse! O nqobelletse ho etsa thobalano le yena! Ke ne ke sa batle, ke ya hlapanya, ke ile ka ba ka re NTLOHELE, empa a re ke tla ikenya mathateng.\"\n\n@global.w_crisis_female_caregiver: \"Kea leboha ha o mpolelletse taba ena. Ha o mathateng ho hang. Ena hase phoso ya hao.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri. \n\nKa tlaase mona ke dibaka tse ding tse ka bang molemo", + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: \"Maobane ha o ilo bona @global.w_crisis_adult_friend. O ile a kena feela mme seo se etsahetse ka nako eo.\"\n\n@global.w_crisis_female_caregiver: \"Ke ya utlwa, ebile ke dumela seo o mpolellang sona ngwanaka. Ena ke ntho e kgolo mme re tla fumana tsela ya ho batla thuso eo re e hlokang. Re ka leba hokae ho fumana thuso?\"\n\n@global.w_crisis_teen_girl_1: \"Moo ke kenang sekolo teng?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: \"Oo, ka ba ka hopola, a re ye tliliniking. Ba tla tseba hore na re etseng ho o thusa. Na o utlwa eka o ka kgona?\"\n\n@global.w_crisis_teen_girl_1: \"E… E lokile… Empa na o tla tsamaya le nna?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Mohato wa 4: Inthaneteng ho na le dibaka dife tse kotsi hona o ka etsa jwang hore di sireletsehe?", + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: \"Ho jwalo, ke tsamaya le wena. Mme @global.w_crisis_teen_girl_1? Hopola, hase phoso ya hao. Kea o rata. O motho ya molemo. Re tla feta bothateng bona.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "Bothata bo bong boo batswadi ba bangata ba kgathatsehileng ka bona ke diketso tsa dikgoka le tlolo ya molao. A re shebeng mohlala ona hammoho.", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ho tloha maobane o bonahala o kgathatsehile. Ebe molato ke eng?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "MAPS", - "text": "DIMMAPA", + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: \"Maobane, nna le metswalle ya ka re ile ra ya mmetjheng wa bolo. Bashemane ba bang ba tahilweng ba ile ba qala ho lwantsha motswalle wa ka.\"\n\n@global.w_crisis_male_caregiver_1: \"Tswela pele, ke mametse. Ke tshepa hore ha o a ka wa lwana?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Etsa DIMMAPA le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang motseng wa heno le inthanete. Buisanang ka tsela ya ho boloka tlhahisoleseding ya bona, difoto le divideo e le lekunutu inthaneteng. Buisanang ka hore hang ha ntho e kena inthanete, e dula moo ho ya ho ile. Mohlomong ba tseba mohlala wa metswalle ya bona.", + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: \"Ke ne ke sa batle ho lwana, empa ke ne nke ke ka ema moo yaba ke ba shebella ha ba otla mokgotsi wa ka, yaba…\"\n\n@global.w_crisis_male_caregiver_1: \"Yaba, le wena o a lwana ho thusetsa mokgotsi wa hao?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "RULES", - "text": "MELAO", + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Ntwa e ne e se na monga yona. Ke bone motho ya rapaletseng fatshe ka hara mophula wa madi. Ke bone eka… o shwele.\"", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Etsa MELAO le motjha wa hao ka tsela ya ho sebedisa diepo le diwebosaete tseo a di ratang ka tsela e sireletsehileng.\n\nNa o hopola pale ya Boipaballo Inthaneteng? E shebelle hape.", + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: \"Ke thabela hore ebe o mpolelletse sena, @global.w_crisis_teen_boy_1. A re dule fatshe mmoho mme re buisane ka taba ena hore na re tlameha ho kopa thuso ya mapolesa kapa ya motho e mong.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Online Safety Story", - "text": "Pale ya Boipaballo Inthaneteng", + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: \"Kea leboha, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"Re tla feta boemong bona. Hopola, re tla o tshehetsa re le lelapa.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "AMNESTY", - "text": "TSHWARELO", + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Ntho e nngwe le e nngwe e nyane eo o e etsang e bohlokwa. Re tshepa hore le wena o motlotlo ka wena.", "type": "template", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Etsang tumellano ya TSHWARELO. Haeba ho etsahala ntho e mo halefisang, e sa mo tshwareng hantle kapa e mo tshosang, a ka buisana le wena ebile o ke ke wa mo halefela kapa wa mo fa kotlo, esita le haeba a ne a etsa ntho e fosahetseng.\n\nNa o hopola pale ya Tshwarelo e Sireletsehileng? E shebelle hape mona.", + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le puisano\n* Pale le puisano\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty Story", - "text": "Pale ya Tshwarelo Molemong wa Polokeho", + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le boikgopotso\n* Pale le boikgopotso\n* Dithulusi: Tsela ya ho sebetsana le tsietsi\nO KGE MOYA - MAMELA - NAHANA\n* E leke!\n* Ditshisinyo tsa prakthise ya lapeng", "type": "template", "note": "" }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Botswadi ditabeng tsa dijithale bo tshwana le botswadi bophelong ba sebele. O nkile BOHATO BA BOHLOKWA ba ho tiisa hore motjha wa hao o bolokehile motseng LE inthaneteng. O entse hantle!", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Bona e ne e le boemo bo thata bakeng sa @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver wa hae! Sena se ka etsahalla bashanyana le banana.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Resources to help in the community", - "text": "Matlotlo a thusang motseng", + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "@global.w_crisis_female_caregiver o ne a lokela ho sebedisa tsebo efe?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "Online Safety Resources", - "text": "Matlotlo a Boipaballo Inthaneteng", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "E ne e le boemo bo thata hakaalo bakeng sa @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 wa hae!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Etsa dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo. \n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "@global.w_crisis_male_caregiver_1 o ne a lokela ho sebedisa tsebo efe?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Haeba ha le eso etse sena mmoho, etsang dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo.\n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Ditsietsi di ka etsa hore re ikutlwe re halefile kapa re se na matla. Empa ke yona nako eo batjha ba rona ba hlokang hore re kge moya, re mamele mme re nahane.", "type": "template", "note": "" }, { - "SourceText": "Safety Plan Activity", - "text": "Ketso ya Moralo wa Boipaballo", + "SourceText": "BREATHE", + "text": "KGA MOYA", "type": "template", "note": "" }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Hase moo! Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Dula o kgobile matshwafo. Ipotse 'motjha wa ka o hloka eng hona jwale'", "type": "template", "note": "" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Re maswabi hore o bile le letsatsi le thata. Re motlotlo ka wena ka lebaka la sohle seo o se entseng dibekeng tse fetileng.", + "SourceText": "LISTEN", + "text": "MAMELA", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya kamoso ya tshehetso ya botswadi.", + "SourceText": "Tell them you are there for them and love them.", + "text": "Mo bolelle hore o tla wa o tsoha le yena ebile o a mo rata.", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "REA O LEBOHELA! O atlehile! O ekeditse mahlale a 11 a bohlokwa a tsebo ya botswadi.\n\nO fihleletse ntho e kgolo. Seo se bontsha hore o tsotella lelapa la hao haholo.\n\nA re keteke le wena, mme o rale tsela ya hao ya kamoso ya tshehetso ya @global.parent_app.", + "SourceText": "THINK", + "text": "NAHANA", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Dumelang kaofela.\n\nSehlooho sa kajeno ke ho keteka le mehato e latelang.\n\nEbile ho hlollang, ebile ntho e tsotehang ho nka leeto lena le lona. Kajeno lena re keteka leeto la rona mmoho.\n\nKajeno lena re keteka dithuto tsohle tseo re ithutileng tsona ho tloha qalong.", + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Buisana le motjha wa hao. Ke eng e ka thusang boemong boo? O ka nna wa tlameha ho etsa ditokisetso tsa hanghang hona jwale, ebe o etsa tsa nako e telele hamorao.", "type": "template", "note": "" }, { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Kajeno lena le tla keteka, le ikgopotse le ho lebella:", + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "O ka ba motlotlo ka wena ka ho ithuta ditsela tsa ho fumana thuso!", "type": "template", "note": "" }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "* Boikgopotso & puisano\n* Dithulusi: Tsela ya ho tshehetsana\nKOPANANG - LETSETSANANG - NGOLLANANG - ABELANANG\n* Ho rala tshehetso", + "SourceText": "How are you feeling today?", + "text": "O ikutlwa jwang kajeno?", "type": "template", "note": "" }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Kajeno o ketela le ho ikgopotsa boiphihlelo ba hao.", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Ke hantle hore o phetse hantle kajeno! Ntho e le nngwe e tsamaileng hantle ke efe kajeno? Hopola ho ipabatsa ka yona.", "type": "template", "note": "" }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Wena le lelapa la hao le tla ithuta dintho tse ngata. A re ikgopotseng tse fetileng le ho bona se fetohileng.", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Ke maswabi ho utlwa hore ha o ikutlwe hantle kajeno. O sebeditse ka ho lemoha maikutlo a hao, le ho leka ho kgoba matshwafo le ho iqenehela. O behela lelapa la hao mohlala o motle.", "type": "template", "note": "" }, { - "SourceText": "Reflect", - "text": "Ikgopotse", + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Boikwetliso ba lapeng bekeng ena ke ho fa motjha wa hao ditaelo tsa seo a lokelang ho se etsa.\n\nHopola - EBE TSE UTLWAHALANG, EBE TSE KGOTHATSANG, EBE TSE HLAKILENG = BOLELA HANTLE SEO O SE BATLANG (o itlhakise kahohle kamoo ho ka kgonehang ho motjha!)", "type": "template", "note": "" }, { - "SourceText": "Listen and reflect", - "text": "Mamela le ho ikgopotsa", + "SourceText": "Did you have any challenges?", + "text": "Na o bile le diphephetso dife kapa dife?", "type": "template", "note": "" }, { - "SourceText": "Read and reflect", - "text": "Bala mme o ikgopotse", + "SourceText": "What challenge did you have?", + "text": "O tobane le diphephetso dife?", "type": "template", "note": "" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Kwala mahlo mme o phutholohe.\n\nNahana ka bophelo ba lelapa la hao pele o qala leeto la epo ena.\n \nNahana ka tsebo eo o ithutileng yona:\n* Ho itlhokomela\n* Nako ya boinotsing\n* Pabatso\n* Ditaelo tsa se lokelang ho etswa\n* Ho laola seterese\n* Ho etsa bajete ya lelapa\n* Melao\n* Ho jarisa ditlamorao o theotse moya\n* Ho rarolla mathata\n* Polokeho ya batjha\n* Ho sebetsana le koduwa\n\nNahana ka leeto lena – ho bile jwang ho wena ha:\n* O bolela maikutlo a hao le dintho tseo o fetileng ho tsona\n* Nahana le ho ithuta ho tswa ho dipale\n* Prakthisa tsebo ena ho motjha wa hao\n\nNa ho na le eng kapa eng e fetohileng ho wena le ba lelapa la hao?\n\nO hloka eng hore o tswele pele ho sebedisa tsebo ye?", + "SourceText": "My teenager did not want to follow the instruction.", + "text": "Motjha wa ka ha a batle ho latela ditaelo.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about what has changed.", - "text": "A re bue ka dintho tse fetohileng.", + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Ha kea fumana nako ya boinotshing eo nka e qetang le motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Buisanang:\n* Ho fetohile eng lelapeng la hao?\n* Ke eng eo o e entseng eo o leng motlotlo ka yona?\n\nHopolang ho babatsana le ho kgothatsana!", + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Ke fane ka taelo ho hanyetsa ho fapana le taelo ya se lokelang ho etsuwa.", "type": "template", "note": "" }, { - "SourceText": "MEET", - "text": "KOPANANG", + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Ke ile ka tjwedietsa motjha wa ka ha a itshwara hampe, ho fapana le ho mo fa taelo e tobileng ya seo a lokelang ho se etsa.", "type": "template", "note": "" }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Dulang le kopana kamehla hore le tshehetsane jwaloka batswadi.", + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Diphephetso tse ka sehloohong tsa @local.number_of_challenges tseo batswadi ba bang ba tobanang le tsona:", "type": "template", - "note": "" + "note": "The string @local.number_of_challenges should not be translated." }, { - "SourceText": "CALL", - "text": "LETSETSANANG", + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Kea tseba hore bana ba rona ba hloka nako hore ba ithute ho latela ditaelo. Eba le mamello, o leke hape, mme o hopole ho ba babatsa nako le nako ha ba latela ditaelo!", "type": "template", "note": "" }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "E bang ‘mekgotsi e kopanngwang ke botswadi’ e letsetsanang ha le halefile kapa le sa tsebe hore le etseng.", + "SourceText": "Do you want to try one of the following things?", + "text": "Na o batla ho leka e nngwe ya dintho tse latelang?", "type": "template", "note": "" }, { - "SourceText": "TEXT", - "text": "NGOLLANANG", + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Nahana ka nako letsatsi ka leng eo nka qetang metsotso e mehlano kapa nako e fetang moo hanyane.", "type": "template", "note": "" }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Ngollanang beke le beke ho bolellana seo le se entseng hantle.", + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Fumana mosebetsi wa lapeng oo re ka o etsang mmoho ka tsela e monate.", "type": "template", "note": "" }, { - "SourceText": "SHARE", - "text": "ABANG", + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Kopa motjha wa ka kapa motho e mong ho nthusa ka mesebetsi ya katlung, hore ke be le nako e eketsehileng eo ke sa etseng letho ka yona.", "type": "template", "note": "" }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Abang @global.parent_app mme le thuse malapa a mang a qale leeto la wona.", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "End of programme check-in", - "text": "Tlhahlobo ya qetello ya lenaneo", + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Hase moo! Ho qeta metsotso e 5 ho etsa phapang e kgolo, mme ha o etsa seo ka nako e tshwanang letsatsi le letsatsi, (jwaloka nakong ya dijo tsa hoseng kapa pele le robala), ho ba bonolo ho se fetwe!", "type": "template", "note": "" }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "Haesale o sebedisa @global.parent_app dikgweding tse fetileng, empa ho ba motswadi wa motjha ho nka nako e telele! Dipotso tse latelang tse amanang le boiphihlelo ba hao jwaloka motswadi di tla thusa ho lekola botswadi ba hao.\n\nIpuele nnete feela. Hopola hore batswadi ba dimilione ba ikutlwa jwaloka wena, mme kaofela re tshwanelwa ke pabatso. Ha o mong!", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "Ho bonahala eka o se o phethile tlhahlobo ya qetellong ya lenaneo. Hona o ka feta mosebetsi ona.", + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Ke taba tse monate! Ka tsela eo o kgona ho etsa mosebetsi wa hao ebile o thabela nako e monate o na le motjha wa hao!", "type": "template", "note": "" }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Etsang moralo wa kamoo le tla tshehetsana kateng ho tloha jwale ho ya pele.\n\nO ka sebedisa dikeletso tse tswang malapeng a mang, kapa wa iketsetsa tsa hao!", + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Hase moo! Ka ho aba boikarabelo, o tla ba le nako e ngata ya ho ithabisa le motjha wa hao – ena ke ntho ya bohlokwa haholo!", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "E, ho nka nako ho tlwaela ho fana ka ditaelo tsa se lokelang ho etswa – empa o ke ke wa itshola ka ho leka hape! Nahana ka boitshwaro boo o ka ratang ho bo bona haholo ho motjha wa hao, mme o nahane ka ditsela tse molemo tsa ho fana ka taelo eo!", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Re motlotlo ka wena haholo. O bonahaditse matla, sebete le lerato bakeng sa lelapa la hao. Batswadi baa hlolla. Le wena o motho ya hlollang.\n\nPina ena ke ya batswadi hohle moo ba leng teng. E mameleng, e tantshetseng le ho iketeka!", + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Ho thata ho nahana ka ditaelo ha re ntse re halefile. Leka mme o fumane nako ya ha o kgobile matshwafo ho fa motjha wa hao taelo ya se lokelang ho etswa. \n\nHo @global.weekly_workshop e latelang, re tla bua ka ho laola maikutlo a hao!  O ka fumana mesebetsi e meng ya ho phomola @data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "Rea o amohela! Re thabela ho ba le wena. Bekeng ena re tlo tsepamisa maikutlo ho wena.\n\nWekshopong ena ya kamohelo o tla: \n* Fumana dithulusi tsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko tsa hao", + "SourceText": "Which of the tips helped you?", + "text": "Ke efe ya dikeletso tsena e le thusitseng?", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Ke taba tse monate, ke thabile haholo ho utlwa hore dintho di tsamaya hantle.", + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "NAHANA HANTLE – Na motjha wa hao a ka etsa seo o nahanang ho mo kopa sona?", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Ke maswabi hore hona jwale ho boima. Ke ntho e tlwaelehileng hore ka dinako tse ding re hule ka thata. Hopola hore ha o mong!", + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "KGOTHATSA – Sebedisa mantswe a kgothatsang le ho mo babatsa!", "type": "template", "note": "" }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Hobaneng e le @data.workshop.w_self_care.short_title?", + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "ITLHAKISE – Bua ka tsela e hlakileng le e tobileng!", "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "note": "" }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Hangata ha re itlhokomele ka ho lekaneng. Empa ntho ena e bohlokwa haholo, haholoholo jwaloka motswadi!\n\nRe fokotsa seterese le ho itlhokomela hantle ho thusa rona HAMMOHO LE batjha ba rona.", + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Ke eo taba! Ha re kopa motjha wa rona ho etsa ntho e utlwahalang, ho bonolo hore a atlehe.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho itlhokomela.\n\nHo na le dinako tseo re bang le dinako tse boima, moo re tobanang le mathata mme re sa tsebe hore na re etseng. Ho bohlokwa hore re itlhokomele e le ho ithuta mekgwa ya kamoo re ka dulang re kgobile matshwafo ha ho na le mathata, diphephetso le ditaba tse hlahellang.\n\nHa re kgobile matshwafo re boemong bo botle ba ho nahana dintho tse ntle le ho tla ka ditharollo tse molemo diphephetsong tseo re tobaneng le tsona.", + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Ha re babatsa batjha ba rona, ba ikutlwa ba kgothaditswe hore ba re mamele hape!", "type": "template", "note": "" }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Kajeno lena re tla etsa mesebetsi e 3 e ka re thusang ho itlhokomela, ebile re tla o botsa dipotso di se kae ho tiisa hore epo ena e o loketse.", + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Hase moo! Ha re nahana esale pele ka ditaelo tse tobileng tseo re di fang motja wa rona, ho ba bonolo haholo ho latela ditaelo tsa rona!", "type": "template", "note": "" }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Ketso ya ho kgatholoha\n* Ketso ya ho itemoha\n* Ketso ya ho iputsa\n* Dithulusi: Tsela ya ho eketsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko\n* Ditshisinyo tsa boikwetliso ba lapeng", + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSA KETSO EO A LOKELANG HO E ETSA le TSE TOBILENG.", "type": "template", "note": "" }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "A re e lekeng mme re etse ketso ya ho kgatholoha mmoho!", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Rea leboha ka hore o re phetele taba eo! O entse hantle ka ho fa motjha wa hao ditaelo tsa ketso e lokelang ho etswa le ho haha kamano e ntle le motjha wa hao.\n\nWena hammoho le motjha wa hao le tshwanelwa ke pabatso!", "type": "template", "note": "" }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "Jwaloka batswadi, hangata ha re na nako ya ho itlhokomela - empa ho bohlokwa haholo ho etsa jwalo! Ho fokotsa seterese sa rona ho thusa rona HAMMOHO le batjha ba rona.\n\nA re nkeng bohato ba pele mme re etse ketso e kgutshwanyane ya ho kgatholoha mmoho.", + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Ameha ka dintho tse kgothatsang!\n\nHo bolella batjha ba rona seo re batlang hore ba se ETSE ho sebetsa habetere ho feta ho ba bolella seo ba tlamehang ho KGAOTSA ho se etsa.", "type": "template", "note": "" }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Ho ela hloko seo re se etsang hantle ho re thusa ho tsepamisa mohopolo dinthong tse molemo.\n\nA re nke motsotswana mme re ipabatse. Re tla le bontsha tsela ya ho etsa jwalo.", + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Dumelang, dumelang bohle.\n\nSehlooho sa rona sa kajeno ke ditaelo tsa se lokelang ho etswa.\n\nHo bohlokwa ho fa bana ba rona ditaelo tsa se lokelang ho etswa, hobane ha re ba fa ditaelo tsa seo ba lokelang ho se etsa, ba tla tseba le ho utlwisisa se ho lebeletsweng hore ba se etse, ebe ba etsa seo kamoo re batlang hore ba se etse kateng.\n\nKahoo, bohle ba tla dula ba thabile.", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Nahana ka ntho eo o e entseng hantle morao tjena.\n\nBolellanang mantswe ana ka lentswe le phahameng: \"Ke entse hantle ka…\"\n\nNtho e le nngwe eo le tshwanelwang ke pabatso ka lebaka la yona ke ena: Le entse hantle ka ho sebedisa @global.parent_app!", + "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", + "text": "Ha o so tsoaee letho la @data.habit.instruct_positively.title @global.parent_points.\n\nLeka kajeno!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" }, { - "SourceText": "Recognise", - "text": "Lemoha", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", + "text": "O se o tshwaile @global.parent_point @data.habit.instruct_positively.title hang – kahoo o hatela pele hantle.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Nka motsotswana ho ipabatsa.\n\nRe tla le bontsha tsela ya ho etsa seo.", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively di nako - o hatela pele haholo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Nahana ka ntho e le nngwe eo O e entseng hantle morao tjena.", + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Ipuise ka mosa ka mosebetsi o tswileng matsoho oo o o phethang. Ha ho na motswadi ya phethahetseng, empa re dumela hore o a ipabola!", "type": "template", "note": "" }, { - "SourceText": "\"Well done to me for...\"", - "text": "\"Ke entse hantle ka...\"", + "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", + "text": "Ho fana ka ditaelo tsa se lokelang ho etswa ho hlahisa boitshwaro bo botle bo eketsehileng!\n\nPhethela @local.workshop_data.in_text_title ho fumana ditsela tseo sena se ka sebetsang ka tsona ka lapeng la hao.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Showing love to my children", - "text": "Ho bontsha bana ba ka lerato", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Dumela @fields.user_name! O sebeditse ka ho qala @global.parent_app beke ea 4.\n\nThupelo ea bekeng ena e ka mabapi le mokhoa ea ho eketsa menyetla ea hau ea ho etsa hore mocha oa hao a etse seo o mo kopang hore a se etse.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Getting up even though I felt tired", - "text": "Ho tsoha leha ke ikutlwa ke kgathetse", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Dumela @fields.group_name! O sebeditse ka ho qala @global.parent_app beke ea 4.\n\nThupelo ea bekeng ena e ka mabapi le mokhoa ea ho eketsa menyetla ea hau ea ho etsa hore mocha oa hao a etse seo o mo kopang hore a se etse.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Smiling at someone", - "text": "Ho bososella motho e mong", + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "text": "Na kamehla motjha wa hao o a o mamela? Haeba ho se jwalo (jwaloka boholo ba rona), sheba wekshopo ya bekeng ena ho ithuta hore na ho fana ka ditaelo tsa se lokelang ho etswa ho ka thusang haholo hakae.", "type": "template", "note": "" }, { - "SourceText": "Making food to stay strong", - "text": "Ho lokisa dijo hore ke dule ke le matla", + "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Jwaloka tlwaelo, o ka fumana wekshopo e ntjha hosane. Ho tla ba molemo ho phetha wekshopo e fetileng pele o fetela pele.\n\nBatswadi ba bang ba sebedisa epo ena ha ba le tseleng e lebang mosebetsing. Ho ka ba jwang hore o sebedise epo ena ha o na le metsotso ese mekae?\n\nRe boetse rea o leboha ka ho sebedisa @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Spending time with my children", - "text": "Ho qeta nako le bana ba ka", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "text": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, ho tla fumana wekshopo e ntjha e o letetse: o tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Helping my children with schoolwork", - "text": "Ho thusa bana ba ka ka mosebetsi wa sekolo", + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng ka yona?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Haeba o kgona, bua mantswe ana ka lentswe le hodimo.\n\nNtho e le nngwe eo o tshwanelwang ke pabatso ka lebaka la yona ke ena: O entse hantle ka ho sebedisa @global.parent_app!", + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "@global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Well done! Try to do this every day.", - "text": "O entse hantle! Leka ho etsa sena letsatsi le letsatsi.", + "SourceText": "Said something nice first", + "text": "A ka be a buile hantle pele", "type": "template", "note": "" }, { - "SourceText": "Things to praise yourself for:", - "text": "Dintho tseo o ka lekang ho ipabatsa ka lebaka la tsona:", + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng", "type": "template", "note": "" }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Ho bontsha bana ba hao lerato\n* Ho tsoha leha o ikutlwa o kgathetse\n* Ho bososella motho e mong\n* Ho etsa dijo hore o dule o le matla\n* Ho qeta nako le bana ba hao\n* Ho thusa bana ba hao ka mosebetsi wa sekolo", + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", "type": "template", "note": "" }, { - "SourceText": "Have a hot drink", - "text": "Phoka tee kapa kofi", + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ne ba se ba ikutlwa jwang?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Call a friend or relative", - "text": "Letsetsa motswalle kapa mong ka wena", + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Na o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Have a relaxing bath", - "text": "Kena bateng ya metsi a kgathollang", + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl o ne a ikutlwa a hlomphuwa ebile a ratwa ke @global.w_instruct_female_caregiver wa hae", "type": "template", "note": "" }, { - "SourceText": "Read", - "text": "Bala", + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya", "type": "template", "note": "" }, { - "SourceText": "Watch TV", - "text": "Shebella TV", + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver o ile a dula a le mosa", "type": "template", "note": "" }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Ho itlhokomela ke tsebo ya bohlokwa ya botswadi. Neanang malebela:\n\nKe dintho dife tse nyane tse o thabisang?", + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "A re bone se etsahalang ha @global.w_instruct_female_caregiver a bolella @global.w_instruct_teen_girl \"O SE KE WA\":", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Leka ho etsa ntho eo o ka iputsang ka yona letsatsi le letsatsi.\n\nO ka sebedisa tsebo ena lapeng mme wa e fumana neng kapa neng ho @global.parent_centre ya hao!", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha \n@global.w_instruct_teen_girl a ntse a prakthisa tantshi le motswalle wa hae.\n\n@global.w_instruct_female_caregiver: “O se ke wa etsa bohlaswa ha ke ntse ke hlwekisa ntlo. O a ntshitisa!”", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Reward", - "text": "Moputso", + "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: “Empa ke tlameha ho prakthisa bakeng sa tlhodisano ya sekolong. Ha o ntumelle hore ke etse letho.”\n\n@global.w_instruct_female_caregiver: “O se ke wa nkarabisa!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Kaofela re tshwanela ho itshwara hantle!", + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Akga!! O ye be o qadile o nkomanya jwaloka mehleng????”\n\n@global.w_instruct_female_caregiver o ipolella hore: “Ngwana enwa o dula a le lenyokonyane.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "What small thing makes you happy?", - "text": "Ke ntho efe e nyane e o thabisang?", + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Rea leboha ka hore o nahane ka taba eo! \n\nA re kgutlele morao mme re bone hore na ho etsahalang ha @global.w_instruct_female_caregiver a fana ka ditaelo tsa se lokelang ho etswa:", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Ke hantle! Ho itlhokomela ke tsebo ya bohlokwa ya botswadi!", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@global.w_instruct_female_caregiver o ne a hlwekisa ntlo ha @global.w_instruct_teen_girl a na le metswalle ya hae a prakthisa ho tantsha. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, ke thabela ho o bona o prakthisa tantshi le metswalle ya hao. Ke kopa hore le prakthisetse kantle, hore ke qetele ho hlwekisa ntlo. Kamora moo le ka mpontsha hore na le tantsha jwang.\"\n\n@global.w_instruct_teen_girl: “Ho lokile, @global.w_instruct_female_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_1 kapa eng kapa eng eo o e thabelang.", + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: \"Kea leboha hore ebe le ile la prakthisetsa kantle ha ke ntse ke qetela ho hlwekisa, @global.w_instruct_teen_girl. Jwale ke na le nako ya ho le shebella ha le tantsha.\"", "type": "template", - "note": "The string @local.name_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_2 kapa eng kapa eng eo o e thabelang.", + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: \"Kgele, @global.w_instruct_teen_girl! Le tantsha hantle hakaakang!\"", "type": "template", - "note": "The string @local.name_2 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_3 kapa eng kapa eng eo o e thabelang.", + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Teko ya kelello\n* Pale le puisano – seo ha sea atleha…\n* Pale le puisano – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* E leke!\n* Ditshisinyo tsa ho prakthisa lapeng", "type": "template", - "note": "The string @local.name_3 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_4 kapa eng kapa eng eo o e thabelang.", + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Teko ya kelello\n* Pale le boikgopotso – seo ha sea atleha…\n* Pale le boikgopotso – e atlehile!\n* Dithulusi: Tsela ya ho fana ka ditaelo tsa se lokelang ho etswa\nTSE UTLWAHALANG - TSE KGOTHATSANG - TSE HLAKILENG\n* Ditshisinyo tsa ho prakthisa lapeng", "type": "template", - "note": "The string @local.name_4 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_5 kapa eng kapa eng eo o e thabelang.", - "type": "template", - "note": "The string @local.name_5 should not be translated." + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Buisanang:\n\n* O nahana hore @global.w_instruct_teen_girl o ile a ikutlwa jwang ka tsela eo @global.w_instruct_female_caregiver a arabetseng kateng? \n* Ebe @global.w_instruct_female_caregiver a ka be a entse eng ka tsela e fapaneng?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Dintho tseo o ka di etsang ho iputsa:", + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver a ka be a...", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Phoka tee kapa kofi e tjhesang\n* Letsetsa motswalle kapa setho sa lelapa\n* Kena bateng ya metsi a kgathollang \n* Bala \n* Shebella TV", + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* Buile ntho e ntle qalong\n* A buile le @global.w_instruct_teen_girl ka lentswe le kgutsitseng\n* A bolelletse @global.w_instruct_teen_girl seo a batlang hore a se etse", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" }, { - "SourceText": "RELAX", - "text": "KGATHOLOHA", + "SourceText": "Let's discuss what happened this time.", + "text": "A re buisaneng ka se etsahetseng lekgetlong lena.", "type": "template", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Etsa ntho e ka o kgathollang ka potlako ka metsotswana e 30.", + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Buisanang:\n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jwang hona jwale?\n* Ke hobaneng ha o nahana hore boemo bo ile ba ntlafala bakeng sa @global.w_instruct_female_caregiver lekgetlong lee?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "RECOGNISE", - "text": "LEMOHA", + "SourceText": "Positive instructions can work with your teen too!", + "text": "Ditaelo tsa se lokelang ho etswa di ka sebetsa le ho motjha wa hao!", "type": "template", "note": "" }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Nka motsotswana mme o nahane ka ntho eo O e entseng hantle morao tjena! Haeba o ka kgona, bua ka lentswe le phahameng o re \"O entse hantle ka …\"", + "SourceText": "It worked better this time because...", + "text": "Dintho di tsamaile betere hobane...", "type": "template", "note": "" }, { - "SourceText": "REWARD", - "text": "PUTSA", + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl o ile a utlwa a hlomphuwe ebile a ratwa ke @global.w_instruct_female_caregiver wa hae\n* @global.w_instruct_female_caregiver o ile a kgona ho dula a theotse moya\n* @global.w_instruct_female_caregiver o ile a bua ka tsela e mosa", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Hopola hore le wena o hloka nako ya ho ikgutsa! Ke eng e o thabisang?", + "SourceText": "Let’s do a thought experiment!", + "text": "A re etse teko ya kelello!", "type": "template", "note": "" }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Kaha jwale re hlomelletswe ka tsebo ya ho itlhokomela, a re tiise hore diwekshopo tsa hao tsa @global.weekly_workshops di o loketse hantle.", + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "O SE KE WA NAHANA KA TLOU\n\nO nahana ka eng?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Ho bonahala o se o qetile ho fetola epo hore e dumellane le maemo a hao. Jwale o ka feta ketso ena.", + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Mohlomong o ile wa HLA wa nahana ka tlou...\n\nDitaelo tse reng 'o se ke wa' di etsa hore batjha ba nahane ka yona ntho eo.\n\nKa dinako tse ding ha utlwisise seo re HLILENG re se batlang ho bona.\n\nMme hangata ha ba rate ho bolellwa hore na ba se ke ba etsa dintho (na kaofela ha re jwalo?)", "type": "template", "note": "" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Neng kapa neng ha o kgona, kgatholoha, itemohe mme o iputse. \n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "JWALE, NAHANA KA LENGAU\n\nO nahana ka eng?", "type": "template", "note": "" }, { - "SourceText": "Relax activity", - "text": "Ketso ya ho kgatholoha", + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "O nepile! Ditaelo tse hlakileng, tsa se lokelang ho etswa di thusa batjha ho ameha ka seo ba lokelang ho se etsa.\n\nBatjha ba boetse ba ikutlwa ba hlomphuwe ka tsela ena, mme ho na le kgoneho e kgolo ya hore ba re mamele.", "type": "template", "note": "" }, { - "SourceText": "Recognise activity", - "text": "Ketso ya ho itemoha", + "SourceText": "GET REAL", + "text": "AMOHELA BOEMO KAMOO BO LENG KATENG", "type": "template", "note": "" }, { - "SourceText": "Reward activity", - "text": "Ketso ya ho iputsa", + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "Na ehlile motjha wa hao a ka etsa seo o batlang ho mo kopa sona? Mohlomong ke ntho e sa kgoneheng bakeng sa hae ho bala a kgutsitse letsatsi lohle, empa halofo ya hora ke ntho e utlwahalang.", "type": "template", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Nako le nako ha o kgatholoha, o lemoha ntho eo o e entseng hantle kapa o iputsa, tobetsa @global.parent_points ho keteka katleho ya hao!", + "SourceText": "GET POSITIVE", + "text": "EBA YA KGOTHATSANG", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "O phethile wekshopo ena ya beke.\n\nRe tla phetha dintho tseo re di etsang ho itlhokomela ha le bokana ka dihlopha tsa lona ka lekgetlo la pele - kaofela ha lona le lokela ho itlhokomela haholwanyane!", + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Bososela, mo shebe ka mahlong, mme o sebedise mantswe a kgothatsang. Mo babatse kapele kamora hore a qale ntho eo o mo kopang yona!", "type": "template", "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Dumela @field.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "SourceText": "GET CLEAR", + "text": "BUA KA TSELA E HLAKILENG", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Dumela @field.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Hangata rea tseba hore na re batlang, empa ha re se bue ka tsela e hlakileng ka ho lekaneng. Bolella motjha wa hao hantle seo o batlang hore a se etse. Leka mantswe a kang ‘ke kopa o fihle lapeng ka 7 mantsiboya’ ho fapana le hore ‘o fihle lapeng ka nako’.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Re na le wekshopo e ntjha e fumanehang bakeng sa hao e amanang le ho laola bohale le kgatello ya maikutlo. E tla o thusa ho itlhokomela ka tsela e betere.", + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "A re prakthise ho fana ka ditaelo tse UTLWAHALANG, tse KGOTHATSANG le tse HLAKILENG. Ho prakthisa ho tla o thusa ho atleha ha o sebedisana le motjha wa hao!", "type": "template", "note": "" }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "Na o thabile, o hloname, o halefile, o tsohile molota, o kgathatsehile? O sebeditse ka ho lemoha kamoo wena le ba bang le ikutlwang kateng kajeno! Mme hopola, letsatsi la hosane ke letsatsi le letjha.", + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Kgetha batho ba babedi sehlopheng sa hao:\n* Motho e mong o etsa eka ke motjha\n* E mong o etsa eka ke motswadi wa motjha\n* “Motswadi”: Fa “motjha” wa hao taelo ya se lokelang ho etswa e nang le kgothatso le pabatso\n* “Motjha”: Arabela kamoo o nahanang hore motjha a ka arabela kateng\n\nBuisanang ka hore na ho tsamaile jwang:\n* Sena se entse hore o ikutlwe jwang jwaloka “motswadi” le jwaloka “motjha”?\n* Na o ne o ka etsa dintho ka tsela e betere?\n\nO fe bohle monyetla wa ho ba “motswadi” le “motjha” haeba o ka kgona. Boikwetliso bo tswala katleho!", "type": "template", "note": "" }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Ka dinako tse ding kaofela re ikutlwa re imetswe. Ho hemela hodimo ho ka re thusa!\n\nPhethela @local.workshop_data.in_text_title ho fumana tse ding tsa dithuluse tse molemo tsa ho sebetsana le seterese.", + "SourceText": "Examples of positive instructions:", + "text": "Mehlala ya ditaelo tsa se lokelang ho etswa:", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Seterese se bile jwang bekeng ye? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ke rata mmino wa hao. Ke kopa o o fokotse nakong ya dijo tsa tinare e le hore re kgone ho bua? Kea leboha – Kannete ke lebohela seo. \n* Mmino ona o monate jwang. Ke mang ya binang? Ke kopa o o time ha o kena katlung. O ka o letsetsa fatshe ha o kena ka kamoreng ya hao haeba o batla. Kea leboha!", "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Ke ditaba tse monate, ke thabile haholo! Tswela pele ka mosebetsi o motle.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Hosane ho na le wekshopo e ntjha-tjha! e tla beng e o emetse ya @global.parent_app. \n\nKa ho phethela @local.workshop_data.in_text_title pele, o beha moralo wa bohlokwa haholo: Ha o ikutlwa o thabile, lelapa la hao le lona le tla ntlafatsa dintho!", + "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", + "text": "Re maswabi hore ebe ho thata. Malapa wohle a hula ka thata. Re tla wa re tsoha le wena!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "Ho sa tsotellehe hore na kajeno ke eng e tswileng 'taolong', lebala ka yona mme o leke hape hosane. Ho lokile!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Dumela @field.user_name! Kajeno re keteka dikgwedi tse pedi tsa ho sebedisa @global.parent_app! \n\nO etsa mosebetsi o babatsehang! Wekshopo ya bekeng ena e tla o thusa ho tseba seo o lokelang ho se etsa ha motjha wa hao a sa latele melao ya lelapa.", + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Etsa bajete hape - lekgetlong lena O NA LE motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Dumela @field.user_name! Kajeno re keteka dikgwedi tse pedi tsa ho sebedisa @global.parent_app! \n\nO etsa mosebetsi o babatsehang! Wekshopo ya bekeng ena e tla o thusa ho tseba seo o lokelang ho se etsa ha motjha wa hao a sa latele melao ya lelapa.", + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Etsa bajete le motjha le lelapa la hao!\n\nSena se bohlokwa ebile ke ntho eo ho leng monate ho e etsa le lelapa la hao - e nka hoo ekabang metsotso e 30.\n\nHo etsa bajete mmoho ho thusa batjha ho utlwisisa hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Ke ho thabisang ho bona hore o sebedisa @global.parent_app. O se o fumane dithulusi tse 6 tsa botswadi!\n\nNka wekshopo e latelang ho fumana thulusi e nngwe ya botswadi!", + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Hlahloba bajete ya hao le motjha le lelapa la hao! Sena se tla hopotsa bohle hore kaofela re tlameha ho etsa diqeto tse boima ka dinako tse ding - empa ho re thusa ho ba le tjhelete e lekaneng ha kgwedi e fela le ho phetha ditabatabelo tsa rona!\n\nDibajete di thusitse malapa a dimilione.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Phethela wekshopo mme o leke ho buisana le motjha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", + "SourceText": "Steps to make a budget", + "text": "Mehato ya ho etsa bajete", "type": "template", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", + "SourceText": "make a budget together with their family", + "text": "etsa bajete mmoho le lelapa la hae", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. Hantlentle ho kgoba matshwafo ho thusa motjha wa hao ho latela ditaelo hantle – leka sena pele o fetela pele!\n\nO entse hantle ka ho bontsha ho itella lelapa la hao hakaalo.", + "SourceText": "Did you have any challenges when making your budget together?", + "text": "Na le bile le diphephetso dife kapa dife ha le etsa bajete ya lona mmoho?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", - "text": "O entse mosebetsi o motle ka ho qeta @local.workshop_data.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", + "SourceText": "What whas difficult for you about making your budget together?", + "text": "Ke eng e le thatafalletseng ka ho etsa bajete hammoho?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Dumela @field.user_name! Rea o thoholetsa ka ho qala beke ya hao ya boraro ya @global.parent_app. \n\nHo na le wekshopo e ntjha e o letileng! Na o ka hakanya hore sehlooho sa wekshopo se reng ha o sheba setshwantsho see?", + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Ke ne ke sa batle ho bolella lelapa la ka hore na ke amohela tjhelete e kae.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Dumela @field.group_name! Rea o thoholetsa ka ho qala beke ya hao ya boraro ya @global.parent_app. \n\nHo na le wekshopo e ntjha e o letileng! Na o ka hakanya hore sehlooho sa wekshopo se reng ha o sheba setshwantsho see?", + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Ha ho hlokahale hore o bolele ka ho toba tjhelete eo o e amohelang; o ka fana ka kgakanyo. O ka bua tjena, “Lelapeng lena, re na le @global.currency@global.monthly_income_estimate kgwedi le kgwedi” ho fapana le hore, “Ke etsa @global.currency@global.monthly_income_precise”.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", - "text": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore dintho tse nyane di tlisa phetoho e kgolo.", + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Ha re etsa bajete, re ne re sa dumellane hore na ke eng e lokelang ho wela tlasa dintho tseo re di hlokang le tseo re di batlang.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Rea leboha ka hore o sebedise @global.parent_app ho itlhomella le ho hlomella ba lelapa la hao.\n\nLeka @local.workshop_data.in_text_title mme o hahe tsebo e hlollang ya botswadi!", + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Ka dinako tse ding dintho tseo batho ba di batlang le tseo ba di hlokang dia fapana. Ho buisana ka tsona ho ka thusa wena le ngwana kapa motjha wa hao hore le utlwisisane, le hlomphe ho se tshwane ha lona, le ho bona hore na le ka itima dintho dife.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Pabatso ke moriana o moholo. \n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", + "SourceText": "I did not understand what to do.", + "text": "Ke ne ke sa utlwisise seo ke tlamehang ho se etsa.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Praise time!", - "text": "Nako ya pabatso!", + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Ke maswabi ho utlwa seo. Kea tseba hore ho ka ba thata! Ke kopa hore re ke re hlahlobe dintlha hape. Motjha wa hao kapa ditho tse ding tsa lelapa di ka tla mme tsa o thusa!", "type": "template", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Nakong e tlang ha o bona motjha wa hao, mo babatse ka ntho e le nngwe eo a e etsang hantle! \n\nMme o qetetse neng ho ipabatsa kapa ho babatsa motho e mong e moholo lapeng la hao? Leka!", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "Motjha wa ka o ne a sa batle ho etsa bajete le nna.", "type": "template", "note": "" }, { - "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Lumela @global.user_name, u letetsoe ke thupelo e ncha hosane. Ho bonahala eka ha u so qete @local.workshop_data.in_text_title. Ka sebele ke e khutshoanyane (kea ho tshepisa) - u ka ba ua e phetha ha u ntse u emetse lijo tsa mantsiboea ho pheha. Ke hobane'ng ha u sa tsamaee ho eona ha u e-na le metsotso e seng mekae?\n\nKe leboha hape ka ho sebelisa @global.parent_app.", + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Leka ho qala ka ho etsa bajete le batho ba bang ba baholo lapeng. Motjha wa hao a ka nna a ba le thahasello ho seo le se etsang.\n\nHo etsa bajete ho ka utlwahala ho le thata empa leka ho etsa hore ebe ntho e monate – e etse papadi nakong ya boinotshing! Kapa o ka nna wa leka ho etsa bajete ya @global.w_money_grandma pele.\n\nHopola ho mo babatsa ha le qetile!", "type": "template", - "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla bulwa wekshopo e ntjha. E leke - o tla bona ha boitshwaro ba motjha wa hao bo fetoha.", + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le moralo wa ho boloka tjhelete.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Dumela @field.user_name! Rea o thoholetsa ka ho qala @global.parent_app bekeng ya 4. \n\nWekshopo ya beke ena e amana le tsela ya ho eketsa menyetla ya hore motjha wa hao a etse seo o mo kopang sona.", + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Rea leboha ka hore o re phetele dintho tseo o fetileng ho tsona! O entse hantle ka ho nahana kamoo o ka etsang bajete le ho boloka tjhelete le lelapa la hao. Kannete sena se tla o thusa ho sebeletsa dinthong tse ding tseo lelapa la hao le batlang ho di etsa.\n\nRe ka finyella dikgolo mmoho etswe, matla ke kopano!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Dumela @field.group_name! Rea o thoholetsa ka ho qala @global.parent_app bekeng ya 4. \n\nWekshopo ya beke ena e amana le tsela ya ho eketsa menyetla ya hore motjha wa hao a etse seo o mo kopang sona.", + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Malapa a mangata a imetswe ke ditaba tsa ditjhelete, haholoholo haeba batjha ba dula ba kopa ntho-di-hana ho fela!\n\nHa re etsa bajete hammoho, re ka dumellana hore na re lokela ho sebedisa tjhelete e kae LE HO baballa ho qoba kgatello ya maikutlo le ho sebeletsa ho fihlella maikemisetso a lelapa la rona.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Ipuise ka mosa ka mosebetsi o tswileng matsoho oo o o phethang. Ha ho na motswadi ya phethahetseng, empa re dumela hore o a ipabola!", + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Dumelang bohle. \n\nSehlooho sa kajeno ke ho etsa bajete ya lelapa. \n\nKe habohlokwa ho etsa bajete, empa ke habohlokwa le ho feta ho etsa bajete e akarelletsang lelapa lohle. \n\nHo etsa jwalo mmoho ho thusa bohle ho utlwisisa hore na lelapa le sebedisa tjhelete jwang le hore na lelapa le boloka tjhelete e kae, ebile le ka etsa ditokisetso tsa hore na le ka baballa tjhelete jwang le le lelapa.", "type": "template", "note": "" }, { - "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", - "text": "Ha o so tsoaee letho la @data.habit.instruct_positively.title @global.parent_points.\n\nLeka kajeno!", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Ho na le mehato e mene ya ho etsa bajete ya lelapa: \n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho. O hloka:\n\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", "type": "template", - "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + "note": "" }, { - "SourceText": "Well done!", - "text": "O entse hantle!", + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "Bajete ya lelapa e ka thusa @global.w_money_grandma - le WENA!", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", - "text": "O se o tshwaile @global.parent_point @data.habit.instruct_positively.title hang – kahoo o hatela pele hantle.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Ho na le mehato e mene ya ho etsa bajete ya lelapa:\n\nMohato wa 1: NAHANA\nMohato wa 2: KGETHA\nMohato wa 3: HAHA\nMohato wa 4: RERA\n\nA re tshohleng mehato ena mmoho.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "note": "" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "O se o tsoaile @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - o hatela pele haholo.", + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "O hloka:\n- Dipampiri (kapa koranta ya kgale kapa lebokose) le dipene\n- Majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata ho emela tjhelete\n \nAko nke metsotswana o batle dintho tsena pele re qala ka mohato wa pele.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" + "note": "" }, { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "Na kamehla motjha wa hao o a o mamela? Haeba ho se jwalo (jwaloka boholo ba rona), sheba wekshopo ya bekeng ena ho ithuta hore na ho fana ka ditaelo tsa se lokelang ho etswa ho ka thusang haholo hakae.", + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* dijo\n* metsi le motlakase\n* diaparo\n* diakhaonte\n* mananeo a TV a patallwang\n* dintho tsa ho hlapa\n* salune\n* airtime \n* sekolofisi\n* dipalangwang\n* inshorense/maano\n* meriana\n* boithabiso/dipapadi\n* rente\n* dikoloto\n* kereke", "type": "template", "note": "" }, { - "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", - "text": "Ho fana ka ditaelo tsa se lokelang ho etswa ho hlahisa boitshwaro bo botle bo eketsehileng!\n\nPhethela @local.workshop_data.in_text_title ho fumana ditsela tseo sena se ka sebetsang ka tsona ka lapeng la hao.", + "SourceText": "Think about what we spend money on each month.", + "text": "Nahana hore na re sebedisa tjhelete ya rona ho etsang kgwedi le kgwedi.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Jwaloka tlwaelo, o ka fumana wekshopo e ntjha hosane. Ho tla ba molemo ho phetha wekshopo e fetileng pele o fetela pele.\n\nBatswadi ba bang ba sebedisa epo ena ha ba le tseleng e lebang mosebetsing. Ho ka ba jwang hore o sebedise epo ena ha o na le metsotso ese mekae?\n\nRe boetse rea o leboha ka ho sebedisa @global.parent_app.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Fumana pampiri (kapa koranta ya kgale kapa lebokose) le pene. \n* Toroya ditshwantsho tsa dintho tseo wena le lelapa la hao le sebedisang tjhelete ho tsona kgwedi le kgwedi. \n* Ngola haufi le setshwantsho ka seng hore na ntho ka nngwe e ja bokae kgwedi le kgwedi. (Ha ho hlokahale hore le bontshane dipalo haeba le sa batle.)\n* Kopanya tjhelete eo o e sebedisitseng kgwedi ka nngwe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", - "text": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, ho tla fumana wekshopo e ntjha e o letetse: o tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Ke botle! O qetile mohato wa 1!\n\nA re fetele pele!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "First @global.weekly_workshop!", - "text": "Qala ka @global.weekly_workshop!", + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "A re bue ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Dumela @fields.user_name. @local.workshop_data.in_text_title e se e o emetse.", - "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Dumela @fields.group_name. @local.workshop_data.in_text_title e se e o emetse.", - "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Ho qeta nako le motjha wa hao ho haha dikamano tsa ho tshepana pakeng tsa lona.\n\nTswela pele ka leeto la hao la @global.parent_app hona jwale - wena le lelapa la hao le tla atleha.", + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Hangata ha re bone dintho ka leihlo le le leng. Ha re buisana ka dintho tseo re di hlokang le tseo re di batlang, re utlwisisana hantle ebile re ka etsa diqeto tse ntle mmoho tsa kamoo re sebedisang tjhelete ya rona kateng.\n\nShebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Re leboha haholo hore ebe o ikitlaetsa hakaalo ho ba motswadi ya betere. O motho ya ratwang le ya ananelwang!", + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Nahana ka dintho tseo le di hlokang le tseo le di batlang\n\nSEO LE SE BATLANG: Ntho eo o ka phelang ntle ho yona\nSEO LE SE HLOKANG: Ntho eo o ke keng wa phela ntle ho yona", "type": "template", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Na o se o kile wa qeta nako le motjha wa hao?", + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Shebang matoto a lona a dintho tseo o sebedisang tjhelete ho tsona mme mme le buisane ka:\n* Ke DITLHOKO dife tseo le ke keng la phela ntle ho tsona? Hobaneng?\n* Ke dintho dife tseo le di BATLANG tse ntle empa ese tsa bohlokwa? Hobaneng? \n* Ke dintho dife tseo le ka lekang ho hafola tjhelete eo le e sebedisang ho tsona jwaloka lelapa?", "type": "template", "note": "" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Re a leboha hore ebe o sebedisa @global.parent_app ebile o motswadi ya ikemiseditseng. \n\n@local.workshop_data.in_text_title ya hao e se e o emetse!", + "SourceText": "Make a budget!", + "text": "Etsang bajete!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Ho bonahala eka ha o eso qete @local.workshop_data.in_text_title. E keke ya nka nako e telele, ebile o tla fumana dintlha tsa bohlokwa. \n\nO sebeditse ka ho leka ho ba motswadi ya betere. Hosane o ka fihlella wekshopo e ntjha.", + "SourceText": "Make a budget as one big family!", + "text": "Etsang bajete le le lelapa le le leng le leholo!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Motho a le mong o tla ithaopela ho bolela letoto la hae (Haeba ho se na moithaopi le ka etsa letoto le letjha mmoho) \n* Nkang maemo a itseng - ba bang e tla ba batho ba baholo, ba bang e tla ba batjha. \n* Etsang qeto ya hore na tjhelete e kenang ke bokae ka kgwedi.\n* Nkang majwe kapa dinawa kapa eng kapa eng e nang le dikgetjhana tse ngata - eo ke tjhelete e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete e kenang ke @global.currency@local.monthly_income, mme o na le dinawa tse @local.number_of_beans, nawa ka nngwe e lekana le @global.currency@local.bean_value.) \n* Etsang qeto mmoho ya hore na le tla e sebedisetsang, mme le behe majwe/dintho setshwantshong se. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Dumela @field.user_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", + "SourceText": "Make a budget as a family!", + "text": "Etsang bajete le le lelapa!", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Dumela @field.user_name! Mang kapa mang a ka hlahelwa ke tlokotsi - ho molemo haholo ho dula o itokisitse.\n\nWekshopo ena e tla o bontsha tsela ya ho itokisa.", + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Ngola hore na tjhelete ya hao e kenang ke bokae ka kgwedi.\n* Nka majwe kapa dinawa tse ding kapa eng kapa eng e nang le dikgetjhana tse ngata - ena ke tjhelete ya lona e kenang ka kgwedi. \n(Ka mohlala: Haeba tjhelete ya lona e kenang ke @global.currency@local.monthly_income, mme le na le dinawa tse @local.number_of_beans, nawa ka nngwe ke @global.currency@local.bean_value.)\n* Etsang qeto ya hore na le tla etsang ka yona, mme le behe majwe/dintho hodima setshwantsho seo. \n\nNa ha le a kgodiseha ka diqeto tsa lona? Na ha le kgone ho utlwisisa phapang tsa \"ditlhoko\" le \"dintho tseo le di batlang\"? Ho hang ha ho na bothata!", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "O motswadi ya ikemiseditseng. O ikotle sefuba - kannete ena ke katleho e kgolo!", + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Rerang hore na le tla baballa tjhelete jwang, e le hore le ka sebetsana le maemo a tshohanyetso mme la fihlella ditabatabelo tsa lelapa la lona!", "type": "template", "note": "" }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Ha re tsebe hore na tlokotsi e ka hlaha neng, empa re KA itokisa! \n\nQala wekshopo e latelang hore o ithute hore na o ka etsa sena jwang hammoho le motjha wa hao.", + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "Haeba o ka baballa esita le tjhelete e nyane bakeng sa kamoso kapa maemo a tshohanyetso - seo se ka etsa phapang e kgolo ha nako e ntse e feta. \n* Kenya sedikadikwe se bitswang “maemo a tshohanyetso”.\n* Kenya sedikadiswe se bitswang “ditabatabelo tsa lelapa”.\n* Ebe o leka ho tsamaisa tjhelete ya hao e le hore le ka baballa tjheletenyana e itseng kgwedi le kgwedi bakeng sa e nngwe le e nngwe ya dintho tsena.", "type": "template", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @local.workshop_data.in_text_title mme o ithute tsela e ntlehadi ya ho itshwara ha motjha wa hao a o hloka haholo.", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong o tshwanelwa ke pabatso, le bona jwang?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "Na o se o kile wa buisana le motjha wa hao ka hore na le ka etsang ha ho hlaha tlokotsi?", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "REA LE LEBOHELA!!! Le entse bajete ya lelapa la lona – mme ho e sebedisa ho tla etsa phapang e kgolo bophelong ba lona. Ke nahana hore motho ka mong lelapeng la hao o tshwanelwa ke pabatso, le bona jwang?", "type": "template", "note": "" }, { - "SourceText": "Crisis Examples", - "text": "Mehlala ya Ditlokotsi", + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "REA LE LEBOHELA!!! Le entse bajete ya lona – hopolang ho etsa boikwetliso bona hape le ditho tse ding tsa malapa a lona - ha le dumellana ka seo le rerang ho se etsa mmoho, seo se tla etsa phapang e kgolo!", "type": "template", "note": "" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Hosane wekshopo ya ho qetela ya @global.parent_app e tla be e o emetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ka tsela ena, o ka phetha sete ya hao ya tsebo ya botswadi mme wa etsa qeto ya hore na ho tloha moo o tla etsang!", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane o ka fumana wekshopo ya ho qetela ho bontsha leeto la hao la @global.parent_app le seo o ka se etsang ho tloha moo!", + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Neng kapa neng ha o ikutlwa o le mong kapa o imetswe, tseba hore ha o mong. Ho na le batswadi lefatsheng lohle ba fetang mathateng a tshwanang le a hao.\n\nO etsa sohle se matleng a hao letsatsi le letsatsi mme re motlotlo ka wena!", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Dumela @field.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Ho kenyelletsa lelapa la hao tseleng eo le sebedisang tjhelete ka yona ho ka fedisa kgatello e ngata ya maikutlo le dikgang.\n\nPhethela @local.workshop_data.in_text_title ho thusa lelapa la hao ka ho etsa bajete le ho baballa tjhelete. Hantlentle ena ke ntho e bonolo - o tla bona!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Dumela @field.group_name! Kaofela ha lona le batla le fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", + "SourceText": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Dumela @fields.user_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Tsena ke dinako tse boima haholo tsa ho ba motswadi. O lokela ho ikotla sefuba ka sohle seo o se entseng.\n\nNahana ka dinako tsohle tseo o entseng hore motjha wa hao a bobothehe le tlhokomelo yohle eo o mo fileng yona. Batswadi ba etsa dintho tse hlollang, le etsa dintho tse hlollang!", + "SourceText": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Dumela @fields.group_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "O se o fumane tsebo e ngata haholo ya botswadi dibekeng tsena tse fetileng!\n\nPhethela wekshopo e tlang hore o fumane tsebo e nngwe e tla o thusa.", + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "text": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", "type": "template", "note": "" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "E le ho sireletsa motjha wa hao, ho molemo ho buisana ka motse wa habo lona le dintho tse mo hlahelang inthaneteng.\n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo o ka etsang sena kateng!", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Ho bonahala eka ha o so qete @local.workshop_data.in_text_title. Batswadi ba bangata ba itse ho etsa bajete ho entse hore lelapa le boele le be le kgotso – le lona seo se ka le sebeletsa.\n\nRe boetse rea o leboha ka hore o be motswadi ya ikemiseditseng.", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho beha melao e sebetsang ya lelapa.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Ho bonahala eka ha o eso phethele @local.workshop_data.in_text_title. Ho rala hammoho le motjha wa hao ho ka thibela mathata a mangata – leka pele o fetela pele!\n\nO entse hantle ka ho sebedisa @global.parent_app ho tshehetsa lelapa la hao.", + "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text": "Ho thata ho ba le tjhelete e lekaneng ho phetha mabaka kgwedi le kgwedi. Malapa a mangata a na le bothata bona! \n\nHo kopanyelletsa le @global.w_money_grandma - a re shebelleng:", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Rea a o thoholetsa, o phethetse @local.workshop_data.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", + "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text": "@global.w_money_grandma: \"Haesale ke hlokomela ditloholo tsa ka, @global.w_money_teen_girl le @global.w_money_teen_boy, hobane batswadi ba bona ba hlokahetse ba sa le banyane. Hangata re hula ka thata ditjheleteng, hobane ke amohela kerante e nyane.\"", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Dumela @field.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", + "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", + "text": "@global.w_money_grandma: \"Ke kgathatsehile haholo. Ho hang ha ke salle le ke sente e ntsho! Jwale ke lwana le batjha ba ka ka dintho tseo ba di batlang – hape.\"", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Dumela @field.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla le bontsha kaofela kamoo le ka sebetsanang le wona kateng.", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Le entse mosebetsi o moholo, le phethile mehato ya pele e 3! \n\nA re shebeng kamoo @global.w_money_grandma a hlophisitseng ditjhelete tsa hae kateng, jwalokaha le etsa:", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Kaofela re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "\"Ke batlela ditloholo tsa ka bokamoso bo molemo haholo, empa ha ke tsebe hore na ke tla fumana tjhalete hokae. Bomatjhonisa ba kotsi ebile o ba busetsa tjhelete e ngata haholo. \n\nKe lokela ho baballa tjhelete, empa ekare eo ke ntho e sa kgoneheng!\"", "type": "template", "note": "" }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Tabeng ya batjha, le bophelong ka kakaretso, ho hlaha mathata a sa lebellwang ao re tlamehang ho sebetsana le wona. Qala ka wekshopo e latelang ho ithuta tsela ya ho sebetsana le wona.\n\nQala wekshopo e latelang o ithute tsela ya ho tobana le mathata ana ka katleho.", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "\"Sepheo sa ka ke ho tiisa hore setloholo sa ka sa moshanyana se kgona ho ya sekolong se phahameng mme setloholo sa ka sa ngwanana se fihlella takatso ya sona ya yunivesithi. Nka baballa tjhelete e ngata jwang ka tjhelete e nyane eo ke nang le yona?\"", "type": "template", "note": "" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @local.workshop_data.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi!", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "\"Kea tseba - a re qaleng ka moralo! E re ke qale ka ho etsa bajete – moralo wa kamoo nka baballang tjhelete ya ka kateng. Mme ke tla baballa tjhelete e nyane nako le nako – ebile ke tla kenela sehlopha sa ho baballa tjhelete le mekitlane.\"", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \n\nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "\"Hape ke tlameha ho bua le ditloholo tsa ka ho kgetha dintho tseo re ka sebedisang tjhelete e nyane ho tsona beke le beke. Ba tla nthusa ho nahana ka dintho tseo re di batlang empa re sa di hloke.\"", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ho tseba tsela ya ho rarolla mathata mmoho ho tla o thusa maemong a mangata!", + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "Dilemo tse seng kae hamorao:\n\n\"Ako boneng, re fihlelletse ditabatabelo tsa rona! Ha kea kadima tjhelete ya metswalle kapa ya bomatjhonisa. Ka ho baballa tjhelete e nyane beke le beke, ke ile ka kgona ho patala sekolofisi sa @global.w_money_teen_boy sekolong se phahameng mme ka baballa tjhelete e nngwe bakeng sa yunivesithi ya @global.w_money_teen_girl. Ke ikutlwa ke le motlotlo haholo ka taba ena.”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Ho baballa tjhelete ho bohlokwa ka mabaka a mmalwa, le leng ke: maemo a tshohanyetso! @global.w_money_grandma le yena o ile a ithuta ntlha ena bophelong:", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Dumela @field.user_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Bosiung bo bong ho ile ha tsoha sefefo se tshabehang se ileng sa fefola marulelo. Ntho e nngwe le e nngwe e ile ya nelwa ke pula. Ka ho panya ha leihlo ke ne ke hloka ho fumana tjhelete ya ho lokisa marulelo. Ke ile ka ikutlwa ke feletswe ke matla.”", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Dumela @field.group_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Nka motsotswana mme o thabele mosebetsi oo o o finyelletseng, ho sa tsotellehe dintho tsohle tse ding tseo o lokelang ho di etsa letsatsi ka leng.", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Ka dinako tse ding ho bonahala eka batjha ba hao ba hloname leha o entse sohle se matleng a hao. Hopola o etsa mosebetsi o tswileng matsoho, mme o tla ba le dinako tse monate le bona!", + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Pale – e sa kang ya sebetsa… \n* Boikwetliso ba ho etsa bajete\n* Pale le puisano – tse ileng tsa sebetsa!\n* Pale le puisano – tse sa kang tsa sebetsa…\n* Puisano ya ditsela tsa ho baballa tjhelete\n* Boikwetliso ba ho baballa tjhelete\n* Dithulusi: Tsela ya ho bajeta le ho baballa tjhelete\nNAHANA - KGETHA - HAHA - RERA\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Rea leboha hore ebe o ile wa boela wa sebedisa @global.parent_app le ka hore ebe o kene leetong lena la botswadi ke boikemisetso.\n\n@local.workshop_data.in_text_title e tla o bontsha hore na melao e behwa jwang ka tsela e tla thusa motjha wa hao o e utlwisisa le ho e latela habonolo.", + "SourceText": "Step 1: THINK", + "text": "Mohato wa 1: NAHANA", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @local.workshop_data.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", + "SourceText": "What do we spend on now?", + "text": "Hona jwale re sebedisa tjhelete ha re reka eng?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "Na o kgonne ho beha molao mmoho le motjha wa hao?", + "SourceText": "THINK Activity", + "text": "Ketso ya ho NAHANA", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. E ke ke ya nka nako e telele mme e tla thusa motjha wa hao ho ntlafatsa tsela eo a latelang melao ka yona!", + "SourceText": "Step 2: CHOOSE", + "text": "Mohato wa 2: KGETHA", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", + "SourceText": "Talk together about needs and wants", + "text": "Buisanang ka ditlhoko le dintho tseo le di batlang mmoho", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Dumela @field.user_name! O qala kgwedi ya hao ya bobedi ya ho sebedisa @global.parent_app. Ke ntho e hlollang!\n\nHoo ekabang malapa wohle a na le mathata a ditjhelete, kahoo, wekshopo ya beke ena e tla o fa thulusi e tla o thusa ho etsa moralo wa dintho tseo o tla di reka e le hore o be le tjhelete e lekaneng eo o ka qetang kgwedi ka yona.", + "SourceText": "CHOOSE Activity", + "text": "Ketso ya ho KGETHA", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Dumela @field.user_name! O qala kgwedi ya hao ya bobedi ya ho sebedisa @global.parent_app. Ke ntho e hlollang!\n\nHoo ekabang malapa wohle a na le mathata a ditjhelete, kahoo, wekshopo ya beke ena e tla o fa thulusi e tla o thusa ho etsa moralo wa dintho tseo o tla di reka e le hore o be le tjhelete e lekaneng eo o ka qetang kgwedi ka yona.", + "SourceText": "Step 3: BUILD", + "text": "Mohato wa 3: HAHA", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", + "SourceText": "Make your own budget", + "text": "Iketsetseng bajete", "type": "template", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Neng kapa neng ha o ikutlwa o le mong kapa o imetswe, tseba hore ha o mong. Ho na le batswadi lefatsheng lohle ba fetang mathateng a tshwanang le a hao.\n\nO etsa sohle se matleng a hao letsatsi le letsatsi mme re motlotlo ka wena!", + "SourceText": "BUILD Activity", + "text": "Ketso ya ho HAHA", "type": "template", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", + "SourceText": "Step 4: PLAN", + "text": "Mohato wa 4: RERA", "type": "template", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Ho kenyelletsa lelapa la hao tseleng eo le sebedisang tjhelete ka yona ho ka fedisa kgatello e ngata ya maikutlo le dikgang.\n\nPhethela @local.workshop_data.in_text_title ho thusa lelapa la hao ka ho etsa bajete le ho baballa tjhelete. Hantlentle ena ke ntho e bonolo - o tla bona!", + "SourceText": "Emergencies and family goals", + "text": "Maemo a tshohanyetso le ditabatabelo tsa lelapa", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Ho bonahala eka ha o so qete @local.workshop_data.in_text_title. Batswadi ba bangata ba itse ho etsa bajete ho entse hore lelapa le boele le be le kgotso – le lona seo se ka le sebeletsa.\n\nRe boetse rea o leboha ka hore o be motswadi ya ikemiseditseng.", + "SourceText": "PLAN Activity", + "text": "Ketso ya ho RERA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho beha melao e sebetsang ya lelapa.", + "SourceText": "What are your family savings goals?", + "text": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Hopola – beke ena e amana le WENA! Re tshepa hore o itshwara ka mosa. Seo sea o tshwanela!", + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Le ikemiseditse ho baballa tjhelete e ngata hakaalo!\n\nLe ikemiseditse ho baballa tjhelete e ngata hakaalo! Ha re etsa bajete e ntle ebile re mmoho re lokisetsa ho baballa tjhelete, re ka atleha mme ra ikutlwa re le motlotlo ka seo re se finyelletseng!", "type": "template", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Qala wekshopo e ntjha-tjha! ya @global.parent_app hosane. O tla bona diphetho tse molemo!", + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Kaofela re na le ditabatabelo tsa malapa a rona, jwaloka @global.w_money_grandma. Ka ho behella ka thoko tjhelete enyane kgwedi le kgwedi, le wena o ka fihlella ditabatabelo tsa hao!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "Na le se le jwetsitse balekane ba lona ka epo ya @global.parent_app? Ho tloha hosane le ka qala ho etsa diwekshopo tsa lona tsa @global.parent_app mmoho!", + "SourceText": "What are your family savings goals?", + "text": "Lelapa la hao le ikemiseditse ho baballa tjhelete jwang?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "" }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Ho lahleheloa ke motsoalle kapa moratuoa ho thata ho batho bohle. Ho ba mosa ho uena le ho etsa lintho tse tla ho thusa ho tsoelapele nakong ena e thata ho thusa le ngoana oa hao ea lilemong tsa bocha!", + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "Ke boikemisetso bo bokaakang!\n\nHa le etsa bajete e ntle ebile le lokisetsa ho baballa tjhelete, le ka atleha mme la ikutlwa le le motlotlo ka bolona!", "type": "template", "note": "" }, { - "SourceText": "Take care of yourself", - "text": "itlhokomele", + "SourceText": "Let's talk about this story.", + "text": "A re buisane ka pale ena.", "type": "template", "note": "" }, { - "SourceText": "Find a support group", - "text": "Thola sehlopha sa tshehetso", + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "Boemong ba @global.w_money_grandma, ho bile le sefefo. \n\nRona re ka hlahelwa ke maemo afe a tshohanyetso?", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "- Ho sareloa ho ka re ama ka libeke kapa likhoeli kapa lilemo. Ha ho hlokahale hore u ikutloe u le betere kapele.\n-Phomola ka ho lekana, ebile o je ka ho lekana - ho thata ho hlokomela bacha ha u khathetse mme u lapile.\n- Etsa lethathamo tsa lintho tse etsang hore u ikutloe u le betere, mme u li etse.\n-Leka ho etsa ntho e le 'ngoe e bonolo ho phomola ka letsatsi le leng le le leng le mocha oa hau, le ka bakeng sa hao.\n- Ho lokile ho se ikutloe hantle mme ho lokile le ho lla. Le ka mohla u se ke ua ipeha molato, hona hase molato oa hao.\n-Ho na le tšepo kamehla le ka mora tahlehelo. Leka ho natefeloa ke lintho tse bonolo, mme u nke motsotso ho etsa ho hong ho monate kapa ho phomola le ngoana oa hau.\n-Fumana motho e moholo a le mong kapa ba babeli ba ka u tšehetsang, ba u mamele, hape ba bue le uena.", + "SourceText": "Let's think about this story.", + "text": "A re nahane ka pale ena.", "type": "template", "note": "" }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "- Ho bua le motho o ka ho tshehetsang, hape a ho mamele ho ka thusa.\n- Ho ka thusa ho kena sehlopheng sa batho bao le bona ba lahlehetsoeng ke motho.\n- Ha ho motho ea phethahetseng. Ho lokile ho bua ka mehopolo e metle le e mebe.", + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "Boemong ba @global.w_money_grandma, ho bile le sefefo.", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Bacha ba sebetsana le mesarelo ka litsela tse fapaneng, joalo ka batho ba baholo. O ka ba thusa ho utloisisa boemo le maikutlo a bona, ka ho etsa libaka tse bolokehileng moo le ka khonang ka bobeli ba lona ho arolelana le ho utloisisa tahlehelo.", + "SourceText": "What other emergencies could come up for your family?", + "text": "Lelapa la hao le ka hlahelwa ke maemo afe a mang a tshohanyetso?", "type": "template", "note": "" }, { - "SourceText": "Be honest", - "text": "Tshepahala", + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Maemo a tshohanyetso a ka hlahela lelapa lefe kapa lefe. Ho baballa tjheletenyana bakeng sa maemo a tshohanyetso PELE a etsahala ho thibela ho kgathatseha le seterese se sengata ka tshohanyetso!", "type": "template", "note": "" }, { - "SourceText": "My teen's response", - "text": "Karabo ea mocha oa ka", + "SourceText": "Let's talk about different ways we can save.", + "text": "A re bueng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", "type": "template", "note": "" }, { - "SourceText": "How to support my teen?", - "text": "Na nka tshetsa mocha oa ka joang?", + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Buisanang: \n* Re ka baballa tjhelete ka ditsela dife tse sa tshwaneng? \n* Tsela ka nngwe ya ho baballa tjhelete e na le melemo le mathata afe? \n\nHo utlwisisa tsela ka nngwe hantle ho tla o thusa ho etsa qeto ya tsela e molemo haholo ya ho baballa tjhelete bakeng sa lelapa la hao. \n\nHo sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", "type": "template", "note": "" }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "- Bolella mocha oa hao hore motho o hlokahetse - ka nako e nngoe ha ba hlokomela.\n- Ho bolela ke ts'ebetso, eseng ketsahalo. O ka hloka ho ba bolella kgafetsa le kgafetsa.\n- Sebelisa mantsoe ao ba a utloisisang.\n- Haeba bacha ba banyane ha ba utloisise hore na lefu ke eng, ba thuse ka ho hlalosa hore motho eo ba mo ratang ha a kgutle. Leka ho se bitse lefu ka hore ke 'boroko', kapa 'ho robala', kapa 'leeto'.\n- Bacha ba baholoanyane ba ka utloisisa hore na lefu ke eng, empa ba ka nna ba sokola ho hlalosa maikutlo a bona, kapa ka ho laola maikutlo a bona.\n- Bacha ba ka araba ka litsela tse fapaneng: ho lla, ho hoeletsa, ho se lumele kapa ho thula haholo.\nTsohle tsena li lokile. O ba bolelle hore o teng, o nale bona.\n- Lumella lipotso le ho bua. Tshepahala. Ho lokile ho bua ha re sa tsebe.", + "SourceText": "Let's think about different ways we can save.", + "text": "A re nahaneng ka ditsela tse sa tshwaneng tseo re ka baballang ka tsona.", "type": "template", "note": "" }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "-Bacha ba ka 'na ba hlonama, ba halefa, ba se utloisise kapa ba se lumele, ba ikutloe ba tsielehile, ba ikutloa ba sa phele hantle kapa ba nale mahlaba, litoro tse tshosang kapa mathata sekolong. Mocha oa hao a ka ’na a bonahala a thabile, empa a ntse a hloname. Ba ka 'na ba koalloa 'me ba batla ho qeta nako e eketsehileng le metsoalle. Li ka boela tsa bontsha boitshoaro bo sa lebelloang kapa bo kotsi. Tsena li ka 'na tsa se ke tsa utloahala ho uena, empa tsohle tsena li tloaelehile.\n- Bacha ba ka 'na ba ikutloa eka ke molato oa bona - hore ba fetisitse kokoana-hloko, kapa hore ba itshoere hampe. Ba bolelle ka ho hlaka hore ha baa etsa letho le phoso.", + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Ho na le ditsela tse sa tshwaneng tseo re ka baballang tjhelete ka yona: lapeng, ha re reka dintho tseo re ka di rekisang hamorao, bankeng, kapa sehlopheng sa ho baballa tjhelete.\n\nNahana ka melemo le mathata a tsela ka nngwe ya ho baballa tjhelete.", "type": "template", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "- Hlalosa hore ho sareloa ho tla le maikutlo a mangata le liketso. Bontsha ngoana oa hau hore oa ratoa le ho hlokomeloa, 'me u mo khothalletse ho arolelana maikutlo a hae ka ho bua, ho ngola kapa ho taka.\n- Haeba ho na le sehlopha sa ts'ehetso seo mocha oa hau a ka bang karolo ea sona, sena se ka thusa.\n-Haeba mocha a bua ka ho batla ho intsha kotsi kapa ho ipolaea, kopa thuso ho motho e mong kapele kamoo u ka khonang.\n-Haeba u khona, boloka mekhoa ea hau e tloaelehileng ea letsatsi le letsatsi, sena se ka tshelisa bacha.\n- Ho ka thusa bacha ho ba karolo ea meetlo mabapi le lefu - ho khetha pina kapa seo ba ka se buang.\n-Ho qeta metsotso e seng mekae letsatsi le leng le le leng u tsepamisitse maikutlo ho mocha oa hau ho thusa ho etsa hore a ikutloe a sireletsehile haholoanyane le ho mo fa monyetla oa ho phomola kapa ho bua ka lintho tse mo khopisang.", + "SourceText": "What is the best savings option for your family?", + "text": "Tsela e molemo ka ho fetisisa ya ho baballa tjhelete bakeng sa lelapa la hao ke efe?", "type": "template", "note": "" }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Ho lahleheloa ke moratuoa ho ka utloahala o kare o hloletsoe. Mona ke litlhahiso tse 'maloa tse u lokelang ho li hopola ho tla ho o thusa.", + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Ho sa natswe hore na le rera ho baballa tjhelete jwang, empa e tla thusa lelapa la lona haholo ho tswela pele ka bophelo!", "type": "template", "note": "" }, { - "SourceText": "Ask for help", - "text": "Kopa thuso", + "SourceText": "Caring for yourself is so essential.", + "text": "Ho itlhokomela ke habohlokwa haholo.", "type": "template", "note": "" }, { - "SourceText": "Say goodbye", - "text": "Salisa hantle", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Ke ditaba tse molemo, ke thabile haholo hore ebe dintho di tsamaya hantle. Pele ya pele ka mosebetsi o motle.", "type": "template", "note": "" }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "- Kopa thuso ho motho eo u mo tshepang - lijo kapa tlhokomelo ea bana e ka ba molemo. U ka hloka litokomane bakeng sa lefa, bakeng sa bana ba hau, kapa ho fumana litshebeletso.\n\n\n- Ka nako e 'ngoe batho ba leka ho nka chelete kapa lefa ho motho ea saretsoeng. Fumana ka litokelo tsa hau.", + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Boikwetliso ba lapeng ba bekeng ena ke ho babatsa motjha wa hao hang ka letsatsi. Ho tla nka metsotswana e 10 feela!", "type": "template", "note": "" }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "- Ho salisa hantle ho thata. Etsa seo u ikutloang se le molemo ho uena le mocha oa hau.\n- Malapa, bacha le batsoali ha ba phethahala. Ha motho a hlokahetse, ho loketse ho bua ka lintho tse ntle le tse mpe tseo re li hopolang.\n- Ho ka thusa ho ngola lengolo kapa ho etsa setšoantšo bakeng sa motho ea tsamaileng.\n- Batho ba bang ba etsa mokete kapa ba ja lijo tse ikgethang ho keteka motho, mme ba salise hantle.\n- Ho ka thusa ho etsa lebokose la mehopolo, ho beha lintho tse u hopotsang uena le mocha oa hau ka motho eo.\n- Ho ka thusa ho bua ka motho feela ha u nahana ka eena.", + "SourceText": "Your goal was to praise your teen.", + "text": "Sepheo sa hao ke ho babatsa motjha wa hao.", "type": "template", "note": "" }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Letsatsi la kajeno le fella mona, nka motsotsonyana hore:\n\n* O buisane le motjha wa hao ka ntho e le nngwe eo thabisang eo a e entseng. \n* O ipabatse ka ntho e le nngwe eo o e entseng hantle kajeno. \n* O kgalala!", + "SourceText": "Did you have a chance to praise your teen this week?", + "text": "Na o ile wa fumana monyetla wa ho babatsa motjha wa hao bekeng ye?", "type": "template", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Botsanang, “Ke eng e o thabisitseng kajeno?”\n* Botsanang, “O tobane le bothata bofe kajeno?”\n* Botsanang, “Nka o thusa jwang?”\n* A re etseng sena mmoho letsatsi le letsatsi; ekaba ha le ja dijo tsa tinare hammoho kapa pele le ilo robala.", + "SourceText": "Yes", + "text": "E", "type": "template", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Hase kamehla le ka nkang maeto, empa kamehla le ba le ditakatso! Botsa motjha wa hao dipotso tsena:\n* O ka rata ho nka leeto le yang hokae? O tla nka nako e kae o etile? O ka paka eng? O ne o tla etsang ha o le leetong? O ne o tla bona eng?\n* Shebang mmapa mmoho kapa le o toroye.\n* Kgethang naha eo motjha wa hao a qalang ho utlwa ka yona ebe le ithuta ka naha eo.", + "SourceText": "No", + "text": "Tjhe", "type": "template", "note": "" }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Wena le motjha wa hao le ka hlophisa letoto la baeti la batho ba tummeng bao kannete le ka ratang ho ba mema phathing. Ka bomong le ka ba le batho ba bahlano – ekaba batho ba nakong e fetileng kapa ba hona jwale. Le ka mema mang? Hona na baeti ba lona ba tla utlwana hantle?", + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Ka dinako tse ding ho thata ho hopola ho babatsa batjha ba rona. Nakong e tlang ha o qeta nako ya boinotshing le motjha wa hao, leka mme o nahane ka ntho e le nngwe eo o ka mo babatsang ka lebaka la yona. O ka ba wa re, “Ke leboha haholo ha o qetile nako le nna!”.", "type": "template", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Nahana ka dipolelo tse tharo tse amanang le wena. Tse pedi ebe nnete mme e le nngwe e lokela ho ba leshano.\n* Ho ka thusa ho nahana ka ditabatabelo, ditakatso, boiphihlelo sekolong, tseo le di ratang le tseo le sa di rateng. Ka mohlala: ke hloile dibanana, thuto eo ke e ratang ke ya saense, mme kannete ke lakatsa eka nka kgona ho bina. \n* Di bolelle motjha wa hao mme o mo kope hore a hakanye hore na ke efe eo e leng leshano. \n* Na o hakantse ka nepo? Na o o hlahile lesumatha?\n* Mme o mo kope ho etsa se tshwanang. Na o ile ea ithuta ntho e nngwe e ntjha e mong ka e mong?", + "SourceText": "Well done - great job for remembering!", + "text": "O entse hantle ka ho hopola - pele ya pele!", "type": "template", "note": "" }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Phetela motjha wa hao ho hong ho etsahetseng ha o ne o le motjha. Ke dintho dife tse neng di le siyo ka nako eo? Difouno tse nang le inthanete? Le ne le ithabisa ka ho etsang? Ke dintho dife tseo o neng o kgathatseha ka tsona? O ska kgathatseha ha ba sa o bolelle letho – ntho ya bohlokwa ke hore ba mamele mme ba hopole. Ka dinako tse ding batjha ba rona baa lebala hore batswadi ba bona le bona ke batho!", + "SourceText": "How did your teen respond?", + "text": "Motjha wa hao o ile a arabela jwang?", "type": "template", "note": "" }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Nahana ka matla a maholo. Ka mohlala, ho ya kae kapa kae ka ho panya ha leihlo, ho tsamaya ka nako, ho bala dikelello. \n* Botsa motjha wa hao, “Haeba o ne o na le matla a maholo a ho […], o ne o tla a sebedisa jwang?”\n* Mo kgothalletse hore a ithehe lebitso la mohale e moholo mme a mo etsise ka diketso. \n* Jwale e re motjha wa hao a o kgethele matla a maholo.\n* Tiisa hore le wena o etsisa matla a hao a maholo!", + "SourceText": "Surprised", + "text": "O ne a maketse", "type": "template", "note": "" }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Buisana le motjha wa hao ka ntho eo a e ratang.\n\nEkaba ka eng kapa eng eo a kgethang ho bua ka yona: dipapadi, metswalle, mmino, dikgalala...\n\nLeka ho mamela motjha wa hao mme o mo fe monyetla wa ho bua.", + "SourceText": "Happy", + "text": "O ne a thabile", "type": "template", "note": "" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Kgetha mopheti wa pale hore a qala ho pheta pale.\n* Bamamedi ba pale ba ka mo kena hanong neng kapa neng.\n* Mopheti wa pale o tlameha ho kenya lentswe leo paleng ya hae.\n* Ha mopheti wa pale a qetile, leka ka mopheti e mong wa pale!", + "SourceText": "My teen did not like it", + "text": "Motjha wa ka ha aa ka a rata seo", "type": "template", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Nahana ka maemo a fapaneng. Ka mohlala, ho kganna koloi, ho sesisa sekepe kapa ho fofisa sefofane.\n* Bolella motjha wa hao ebe o mo botsa potso ena, “O ka rata ho etsa efe?”\n* Mo botse hore na hobaneng?\n* Nahana ka maemo a mang a mararo kapa o kope motjha wa hao hore a etse le wena.", + "SourceText": "I do not know", + "text": "Ha ke tsebe", "type": "template", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Botsanang dipotso. Ekaba dipotso dife kapa dife tse amanang le dintho tseo le di ratang kapa seo le se entseng kajeno.\n* Molao ke hore o ke ke wa araba ka “E”, “Tjhe” kapa “Mohlomong”.\n* O ka nka nako e kae? O ka qapa dikarabo tse kae?\n* Tjhentjhanang mme le bapale hape!", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Hopola, ho nka nako pele motjha a ka tlwaela ho o bona o mo babatsa. Ha o qeta nako e ngata le yena, dintho di tla ntlafatla!", "type": "template", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Motho wa pele o re, “Ka Moqebelo, ke ya… (ka mohlala, ke ya phakeng)”\n* Motho wa bobedi o tlatsa motho wa pele, “Ka Moqebelo, ke ya phakeng le… (ka mohlala, ho etela motswalle wa ka e moholo).\n* Motho ka mong o tlatsa ya buileng pele, o leka ho nahana ka dintho tsohle tse monate tse ka etswang ka Moqebelo.", + "SourceText": "Well done for observing how your teen felt; keep it up!", + "text": "O entse hantle ka ho lemoha kamoo a ikutlwang kateng; pele ya pele!", "type": "template", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Qala pale ka “Ba re enere…”\n* E re motjha wa hao a bolele polelo e latelang.\n* Ebe o bopa polelo.\n* Tjhentjhanang ho fihlela le qapile pale e monate e ntjha.\n* Tiisa hore pale e fela hamonate.\n* Botsa motjha wa hao hore na karolo eo a e ratileng haholo ya pale ena ke efe!", + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Seo se ka etsahala - eba le mamello. Tiisa hore o dula o qeta nako le motjha wa hao, e le hore a nke maikutlo a hao e le a bohlokwa haholo. Haeba pabatso e tswa pelong, o tla bona melemo haufinyane!", "type": "template", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "* Botsa motjha wa hao hore na a ka thabela ho ja dijo tse jwang. \n* Di pheheng hammoho!\n* E re ba tjhentjhane ka hore na seapehi se seholo ke mang – ba etelle pele, mme o latele ditaelo tsa bona. \n* O ka ba wa ba thusa ho etsa bajete ya dintho tseo ba phehang ka tsona! \n\nNa ha o nahane hore sena se ka sebetsa? Botsa batjha ba hao hore na BA ka rata hore wena le bona le etseng mmoho. Ba tlohele ba etelle pele. Phutholohang. Le je monate.", + "SourceText": "No problem - try to observe how they respond the next time!", + "text": "Ha ho na bothata - leka ho hlokomela kamoo a arabelang kateng nakong e tlang!", "type": "template", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Qapa tantshi e tsamaisanang le dipina tseo batjha ba hao ba di ratang.\n* Motho a le mong o phokola tantshi mme bohle baa mo etsisa. \n* Bohle baa tjhentjhana ka ho etella pele. \n* E etse bakeng sa lelapa!", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "Le wena o tshwanelwa ke papatso! Re boetse rea leboha ka hore o sebedise @global.parent_app. Seo se bontsha hore kannete o a tsotella!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Papadi ena e ka bapalwa ka dipara kapa ka batho ba bangata sehlopheng.\n* Emang le shebane kapa le entse lesakana. \n* Motho a le mong o a qala mme bohle baa mo etsisa, ba leka ho tsamaya ka nako e tshwanang le moetapele.\n* Tiisa hore moetapele o tsamaya butle hore bohle ba kgone ho mo latela! Ithute ho tsamaisa ditho tse sa tshwanang tsa mmele le maemong a sa tshwaneng.\n* Kamora nako, tjhentjanang ka hore na ke mang ya etellang pele. O fe bohle monyetla wa ho etella pele.\n* E etseng ho se na ya etellang pele!", + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Ho babatsa ke tsebo e matla haholo ya botswadi.\n\nHa re babatsa batjha ba rona ha ba etsa ntho e ntle, re tla ba bona ba ipabola le ho feta ka makgabane a mangata!", "type": "template", "note": "" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Nahana ka tsebo e ntjha eo o ka ithutang yona le motjha wa hao. Ka mohlala, ho tiisa hore bolo ha e wele fatshe kapa ho phahamisa leoto, ho kapa dibolo tse ngata, ho pheha sopho?\n* Tjhentjhana ka ho leka tsebo e ntjha.\n* Tiisang hore le ya babatsana, mme le leke ho ithuta le ho bapala mmoho!", + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Dumelang bohle.\n\nSehlooho sa rona sa kajeno ke pabatso.\n\nHo molemo ho babatsa bana ba rona ha ba etsa dintho tse ntle hobane ha re etsa jwalo, ba tla itshwara hantle le ho feta ka tsela eo re batlang ho ba bona ka yona.\n\nLe rona re se ke ra lebala ho ipabatsa ha re entse dintho tse ntle!", "type": "template", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Le tle ka mefuta e meraro ya boikwetliso mmoho. Ka mohlala, ho tsamaya, ho torota, ho bapala bolo kapa ho tantsha.\n* E kgetheng hammoho mme le leke hape. \n* Haeba kaofela le e rata, etsang qeto ya hore na le tla e etsa hangata hakae. Hang kapa habedi ka beke? Hoseng ho hong le ho hong?\n* Nahanang le le mmoho ka ditsela tsa ho ithabisa le ho feta. Na le ka torota ho ya fihla boholeng bo itseng? Tjhentjhanang ka ho ba mokwetlisi? Kgothatsanang ka meputso e menyane ya mahala?", + "SourceText": "Praise time!", + "text": "Nako ya pabatso!", "type": "template", "note": "" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Motho wa pele o kgetha kapa o phokola pina.\n* Bohle ba tlameha ho hakanya lebitso la pina (ho thatafatsa dintho ba ka hakanya hore na sebini ke mang).\n* Wa pele ya hakanyang mme a nepa e ba moetapele ya latelang.", + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Nakong e tlang ha o bona motjha wa hao, mo babatse ka ntho e le nngwe eo a e etsang hantle! \n\nMme o qetetse neng ho ipabatsa kapa ho babatsa motho e mong e moholo lapeng la hao? Leka!", "type": "template", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Ena ke papadi e batlang bonyane batho ba 3.\n* Qala sedikadikwe mme o fetise “senepe” se le seng lesakaneng (kapa o “ope diatla” kapa o letse menwana).\n* O ka “letsa menwana” hang ho lahla “senepe”, le hang ho se kapa. Sheba motho eo o mo akgellang sona. \n* Tsela (hodimo, tlase, otlolohile, matswedintsweke, ho ipitika fatshe) le matla (a maholo, habonolo, a itekanetseng) tsa ho lahlela senepe fatshe di ama kamoo motho e mong a ka se kapang kateng. \n* O ka lahlela “senepe” fatshe, wa se akgela moyeng, mme wa se kapa ka makgetlo a mmalwa pele o se fetisa. \n* Ha bohle ba ipabola papading ena, le ka qala ho tsamaya ka kamoreng, o ntse o fetisa “senepe”. \n* O ka se lahlela tlasa leoto? Kamorao mokokotlong? Ka hlooho? Ho kgaoletsa se fetiswang? Thabelang ho bapala ka “senepe”!", + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore dintho tse nyane di tlisa phetoho e kgolo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Kgethang papadi kapa boikwetliso boo le bo etsang mmoho. Etsang qeto ya hore na le tla bapala le ho ikwetlisa neng. Na etlaba letsatsi le letsatsi? Ka nako e kae? \n\nDi lekeng ka beke. Ha beke e fela, ipotse le ho botsa lelapa la hao dipotso tsena:\n* Ho ya jwang? \n* Le ikutlwile jwang ha beke e qala? \n* Le ikutlwa jwang ha beke e fela? \n* Re ka etsa dintho ka tsela e fapaneng jwang bekeng e tlang?", + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Pabatso ke moriana o moholo. \n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Tjhentjhanang ka ho ba “baetapele”. Phokola ka polelo e tla arabelwa ke bohle. Ebe “moetapele” o fana ka ditaelo ebe bohle ba di latela kapele kamoo ba ka kgonang:\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Thetsa ntho e kgubedu.” \n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Qhoma qhoma ka makgetlo a leshome.”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Ho na le mollo thabeng!”” \n* Mmoho: “Matha, matha, matha!”\n* Moetapele: “Beha dieta ka rakeng ya dieta.”", + "SourceText": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Dumela @fields.user_name! Tloholetso ka ho qala beke ea boraro ea @global.parent_app. \n\nO letetsoe ke thupelo e ncha! Na o ka hakanya sehlooho sa thupelo setshoantshong sena?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Papadi ena e monate ha e bapalwa ke batho ba fetang ba 2.\n* Motho o etsa eka o etsa ntho e itseng – ka mohlala, o kama moriri kapa o lokisa dijo tsa tinare. \n* Motho e mong o a mo botsa, “O etsang?”\n* Motho wa pele o lokela ho bua ntho e sa amaneng ho hang le ho kama moriri, ka mohlala “Ke fasa dieta.” \n* Motho wa bobedi o etsa eka o fasa dieta ho fihlela motho e mong a mo botsa, “O etsang?” \n\nKamehla karabo e tlameha ho ba ntho e fapaneng le seo o hlileng o se etsang!", + "SourceText": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Dumela @fields.group_name! Tloholetso ka ho qala beke ea boraro ea @global.parent_app. \n\nO letetsoe ke thupelo e ncha! Na o ka hakanya sehlooho sa thupelo setshoantshong sena?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "* Foka letsoho la hao moyeng ka makgetlo a 8 o ntse o bala ho fihla ho 8.\n* Etsa sena ka potlako ebile o hweleditse kamoo o ka kgonang.\n* Pheta sena ka letsoho le leng la hao. Pheta seo ka maoto ka bobedi.\n* Etsa sena ka makgetlo a 7, ebe a 6 mme o tswele pele ho fihlela ho lekgetlo le 1.\n* Bohle ba hweletse “Kgoho e hlanyang” ebe ba etsa sohle ho tantshe ya kgoho e hlanyang!", + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Rea leboha ka hore o sebedise @global.parent_app ho itlhomella le ho hlomella ba lelapa la hao.\n\nLeka @local.workshop_data.in_text_title mme o hahe tsebo e hlollang ya botswadi!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Quick Parenting Tips", - "text": "Diketso tse Potlakileng tsa Botswadi", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Lumela @global.user_name, u letetsoe ke thupelo e ncha hosane. Ho bonahala eka ha u so qete @local.workshop_data.in_text_title. Ka sebele ke e khutshoanyane (kea ho tshepisa) - u ka ba ua e phetha ha u ntse u emetse lijo tsa mantsiboea ho pheha. Ke hobane'ng ha u sa tsamaee ho eona ha u e-na le metsotso e seng mekae?\n\nKe leboha hape ka ho sebelisa @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Ho hodisa batjha ho ka ba thata, mme ka dinako tse ding kaofela re hula ka thata.", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla bulwa wekshopo e ntjha. E leke - o tla bona ha boitshwaro ba motjha wa hao bo fetoha.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Phephetso e ka sehloohong eo o tobaneng le yona ke efe hona jwale?", + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Nahana ka lekgetlo la ho qetela ha motho e mong a ne a o leboha, kapa a bolela hore o entse ntho e itseng hantle.", "type": "template", "note": "" }, { - "SourceText": "My relationship with my teen is not good", - "text": "Kamano ya ka le motjha wa ka ha e ntle", + "SourceText": "How did it make you feel?", + "text": "Seo se ile sa etsa hore o ikutlwe jwang?", "type": "template", "note": "" }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "Boitshwaro ba motjha wa ka bo nthatafalletsa dintho", + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Hangata batswadi ha ba lebohuwe kapa ho babatswa ka ho lekaneng.", "type": "template", "note": "" }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ke ikutlwa ke imetswe, ke jewa ke bodutu, ke halefile", + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "O ikutlwa jwang ha motho e mong a re ho wena \"kea leboha\"?", "type": "template", "note": "" }, { - "SourceText": "I have money worries", - "text": "Ke kgathatsehile ka ditjhelete", + "SourceText": "Tired", + "text": "O kgathetse", "type": "template", "note": "" }, { - "SourceText": "I worry about my teen’s safety", - "text": "Ke kgathatsehile ka polokeho ya motjha wa ka", + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Le motjha wa hao a ka ikutlwa ka tsela eo. Ke sona se etsang hore thulusi ya beke ena ya botswadi e be e bonolo empa e le bohlokwa: Mo babatse ha a entse dintho hantle.", "type": "template", "note": "" }, { - "SourceText": "We often fight in our family", - "text": "Re dula re lwana lapeng", + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Pabatso e ile ya etsa hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "I have a different problem…", - "text": "Ke na le bothata bo fapaneng…", + "SourceText": "Why did she praise them?", + "text": "Ke hobaneng ha a ile a ba babatsa?", "type": "template", "note": "" }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Ho haha dikamano tse ntle ho qala ka ho qeta nako mmoho - esita le metsotso e 5 ka letsatsi e etsa phapang! Qalong, ho ka ba thata ho qeta nako mmoho, hobane kaofela re phathahane kapa mohlomong batjha ba rona ha baa thaba ka dinako tse ding. Empa ho qeta metsotso e 5 ka letsatsi le motjha wa hao ho etsa hore le tshepane. Leka ho botsa motjha wa hao hore na a ka thabela hore le etseng mmoho. Ekaba ntho e monate le e kgathollang le bakeng sa hao!", + "SourceText": "To get them to do it more often", + "text": "Hore ba etse seo hangata haholo", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "O ka fumana thuso e nngwe e amanang le tsela ya ho qeta nako ya boinotsing le motjha wa hao mona:", + "SourceText": "To help her finish her work", + "text": "Ho mo thusa hore a qete mosebetsi wa hae", "type": "template", "note": "" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Batjha bohle ka dinako tse ding ba itshwara hampe! Ntho e le nngwe e ka thusang ke ho babatsa boitshwaro ba motjha neng kapa neng ha a etsa ntho e ntle – ho sa tsotellehe hore na e nyane hakae. Ho ka nna ha bonahala eka batjha ha ba batle ho babatswa empa bonneteng ba ntse ba e batla, ebile kannete baa e batla.", + "SourceText": "To make them feel good", + "text": "Hore ba ikutlwe ba thabile", "type": "template", "note": "" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "O ka fumana thuso e nngwe mona tseleng ya ho kgothalletsa boitshwaro bo botle ka ho babatsa:", + "SourceText": "To make herself feel good", + "text": "Hore a ikutlwe a thabile", "type": "template", "note": "" }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Kannete hona jwale kgatello ya botswadi e hodimo. Re tseba hantle hore na bophelo bo ka ba thata hakae. Ho iketsetsa ntho e itseng ho ka o fokoletsa seterese. Eo ke tshwanelo ya hao! Mme ha o ikutlwa o imetswe, laola mmele wa hao ka ho hula moya butle, ka ho tebileng ka makgetlo a mahlano pele o araba. Batswadi ba bangata ba re seo se ba thusitse.", + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Dintho tseo kaofela ke nnete! \n\nHa batjha ba hae ba thabile, @global.w_praise_female_caregiver_name o ikutlwa a thabile. O phethile mosebetsi wa hae.", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "O ka fumana thuso e nngwe e amanang le ho itlhokomela mona:", + "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text": "Pabatso ke moriana o matla haholo. \n\nA re shebeng mohlala wa @global.w_praise_female_caregiver_name le baradi ba hae:", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Ha o mong. Seterese sa tjhelete se boima haholo ho batswadi. Leka ho buisana le motjha wa hao ka hore na ho kena tjhelete e kae le hore na le tlameha ho sebedisa tjhelete e kae le le lelapa kgwedi le kgwedi. Sena se ka mo thusa ho utlwisisa hore na ke hobaneng ha o sa kgone mo fumanela ntho eo a e batlang. Ha bohle ba utlwisisa hore na tjhelete e ya hokae, ho ba bonolo ho dumellana le ka hore na le baballe bokae!", + "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text": "Ha @global.w_praise_female_caregiver_name a phathahane, hangata baradi ba hae ba babedi baa lwana. Empa kajeno, moradi wa hae e moholwanyane o thusitse moena wa hae ka mosebetsi wa hae wa sekolo!", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "O ka fumana thuso e nngwe e amanang le ho etsa bajete ya ho baballa mona:", + "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", + "text": "@global.w_praise_female_caregiver_name: \"Kea leboha hore ebe o entse mosebetsi wa hao wa sekolo, @global.w_praise_girl, ebile kea leboha hore ebe o thusitse ngwaneno, @global.w_praise_teen_girl. Ke ikotla sefuba ka lona!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Batjha ba qeta nako e ngata ba se lapeng kapa ba le inthaneteng, moo ho leng thata ho ba sireletsa - sena se hlobaetsa batswadi ba bangata. Leka ho qala puisano le motjha wa hao ka dibaka tse sireletsehileng le tse sa sireletsehang motseng le inthaneteng (o ka nna wa lokela ho leka ka makgetlo a mmalwa). Mohlomong o tseba dibaka tse ding tseo wena o sa di tsebeng. Sena se ka le thusa ho rala ditaba mmoho tse amanang le tsela ya ho dula a sireletsehile.", + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Bohato ba 1: Pheta se tsamaileng hantle le se tsamaileng hampe", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "O ka fumana thuso e nngwe ya ho tiisa hore motjha wa hao o sireletsehile mona:", + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "\"Ke ithutile dintho tse ngata haholo ka bophelo ba motjha wa ka nakong ya boinotshing! Empa kamora letsatsi la pele, motjha wa ka o ne a ipatlela ho bapala ka founo ya hae feela.\"", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "Ha mathata a hlaha, lekang ho buisana ka wona mmoho. Hantlentle bothata ke eng? Ho na le ditharollo dife tse ka kgonehang hona ditlamorao tsa e nngwe ke dife? Ka tsela eo, le ka fumana tharollo e ka bang MOLEMONG wa bohle.", + "SourceText": "Step 2: Bring ideas!", + "text": "Bohato ba 2: Fana ka dikeletso!", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "O ka fumana thuso e nngwe ya ho rarolla mathata mmoho mona:", + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "\"O entse hantle ka hore o leke! Mohlomong o ka sisinya hore le etse dintho tse ding tse monate mmoho le motjha wa hao.\"\n\n\"E, kapa na le ka etsa ho hong mmoho ka founo ya hae? Kapa na a ka o bontsha hore na founo ya hae e sebetsa jwang?\"", "type": "template", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Ha ho bonolo ho hlokomela malapa a rona. Ka dinako tse ding kaofela re tobana le diphephetso, empa re tshepa hore epo ena e tla o thusa ho di feta ka katleho. @global.parent_app e itshetlehile ka boiphihlelo ba dilemo tse leshome tsa ho tsamaisa mananeo a botswadi Afrika Borwa, le batswadi ba dikete ba fumaneng hore dikeletso tse fanweng di thusa ka diphephetso tse ngata tsa botswadi. Re tshepa hore video ena e tla thusa wena hammoho le lelapa la hao.\n\nTse ding tsa dikeletso tsa bohlokwa tse atlehileng ke tsena:", + "SourceText": "Step 3: Pick and try one!", + "text": "Bohato ba 3: Kgetha mme o leke e nngwe!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Start your first parenting workshop", - "text": "Qala ka wekshopo ya hao ya pele ya botswadi", + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Kea leboha ka dikeletso tseo tse babatsehang! E, hosane ha sekolo se tswa ke tla kopa motjha wa ka hore a mpontshe hore na founo ya hae e sebetsa jwang. Na ho na le ya ka ithaopelang ho ba motjha wa ka hona jwale, e le hore ke prakthise ho mo kopa?”", "type": "template", "note": "" }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "O tla fumana thuso e nngwe ho @local.workshop_data.in_text_title.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Nahana hore na mesebetsi ya hao ya lapeng e tsamaile jwang bekeng ena. \n\nTjhentjhanang ha le tshohla taba:\n\n* Ke eng e tsamaileng hantle hona bothata bo bile hokae?\n* Ha le kopanya dihlooho, le nahana hore tharollo ekaba efe?\n* Kgethang tharollo e le nngwe mme le e leke hamorao le motjha wa lona! \n\n(Kapa le ka e prakthisa hona jwale e le hore ho be bonolo hamorao!)", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "O ka fumana thuso e nngwe ho @local.workshop_data.in_text_title.", + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Ditholwana tsa pabatso\n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Qala @local.workshop_data.in_text_title", + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Ditholwana tsa pabatso\n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho babatsa\nE SHEBE - E BOLELE - E PHETE\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Phethela @local.workshop_data.in_text_title hore o fumane thuso e nngwe.", + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Phetelanang ditaba:\n\n* Motho e mong o qetetse neng ho o leboha kapa ho o bolella ntho e monate? \n* Seo se ile sa etsa hore o ikutlwe jwang? \n* O ikutlwa jwang ha ho se na motho ya o lebohang kapa ya o babatsang ha o entse ntho e itseng? \n\nHangata ha re lebohuwe kapa ho babatswa ka ho lekaneng jwaloka batswadi. Mohlomong ke nako ya ho behela motjha wa hao mohlala o motle mme o qale ka ho mo babatsa ha a entse ntho e itseng hantle!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Tswela pele ka @local.workshop_data.in_text_title", + "SourceText": "Let's discuss this story.", + "text": "A re buisaneng ka pale ena.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Lekola botjha @local.workshop_data.in_text_title", + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Buisanang:\n\n* Pabatso e entse hore batjha ba @global.w_praise_female_caregiver_name ba ikutlwe jwang?\n* Ke hobaneng ha a ile a ba babatsa?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Dulang fatshe, le kwale mahlo mme le mamele mohemo wa lona ha moya o tswa le ha o kena.\n\nLemohang kamoo le ikutlwang kateng.\n\nHa le itokisitse, bulang mahlo hape.", + "SourceText": "The same can work for you!", + "text": "Le wena seo se ka o sebeletsa!", "type": "template", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Leka sena neng kapa neng ha o ikutlwa o imetswe mme o hloka ho nka kgefu hore o iphumane.", + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name o ile a babatsa batjha ba hae...", + "type": "template", + "note": "The string @global.w_praise_female_caregiver_name should not be translated." + }, + { + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Ho etsa hore ba etse seo hangata\n* Ho mo thusa hore a qete mosebetsi wa hae\n* Hore ba ikutlwe ba thabile\n* Hore a ikutlwe a thabile", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Kwala mahlo a hao.\n\nA re sebedise matla a mohlolo a tharo ho iphumana le ho phutholoha.\n\nBolela medumo e meraro eo o e utlwang hona jwale.\nBolela menko e meraro eo o e fofonelang hona jwale.\nBolela dijo tse tharo tseo o di ratang.\n\nKe dintho dife tse tharo tseo o di lebohelang hona jwale? Ha ho hlokehe hore di be kgolo.", + "SourceText": "SEE IT", + "text": "E BONE", "type": "template", "note": "" }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "Qetellong ya letsatsi le boima, ho nahana ka dintho tse tharo tseo o di lebohelang ho ka re thusa ho ba sebete ho leka hape hosane.", + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Sheba eng kapa eng eo motjha wa hao a e etsang e thusang kapa e molemo, mme o mo babatse ka seo. Ba ka nna ba se bontshe thabo, empa o tla ba bona ha ba etsa ntho eo e molemo hape. Hape ba tla lemoha hore o a hlokomela ebile o a tsotella.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Kwala mahlo mme o nahane ka letsatsi.\n\nBolela ntho e 1 eo o e lebohelang.\nBolela ntho e 1 eo o e entseng hantle.\nBolela ntho e 1 eo o e ratang.", + "SourceText": "SAY IT", + "text": "E BOLELE", "type": "template", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "O sebeditse, o mohale!", + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Tjheseha – bua se hlileng se tswang botebong ba pelo ya hao!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Kwala mahlo.\n\nSebedisa matla a mohlolo a tharo ho dula o le nako ebile o phutholohile.\n\nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3. \nHula moya ka makgetlo a mararo. 1, 2, 3. \nLokolla moya ka makgetlo a mararo. 1, 2, 3.", + "SourceText": "REPEAT IT", + "text": "E PHETE", "type": "template", "note": "" }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "Na o ikutlwa ka tsela e fapaneng? Ho hemela hodimo ho thusa mmele wohle le kelello ho kgoba matshwafo.\n\nO kgalala!", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Leka ho fumana ntho e itseng eo o ka mo lebohang ka yona letsatsi le letsatsi. Esita le haeba e le nyane haholo.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Kwala mahlo.\n\nMamela mohemo wa hao ha moya o kena le ha o tswa ka makgetlo a mahlano.\n\nLemoha kamoo o ikutlwang kateng.", + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Hape o ka babatsa batho ba bang ba baholo lapeng. Lemoha hore na ba arabela jwang!", "type": "template", "note": "" }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Ha o se o lokile bula mahlo hape. Ha ho na se o hlotseng!", + "SourceText": "Let's practice giving praise.", + "text": "A re itlwaetseng ho babatsa batho ba bang.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Phetelanang ditaba: \n\n* O ka babatsa motjha wa hao ka lebaka la eng? \n* Motho e mong o entse eng e ntle nakong ya wekshopo ye? Mo bolelle!\n* O ile wa ikutlwa jwang ha o babatsa motho e mong?\n* O ile wa ikutlwa jwang ha o babatswa?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Kwala mahlo. \n\nNa bana ba hao ba kile ba etsa hore o ikutlwe eka o ka hweletsa? \n\nIphe kgefu ya metsotswana e 10. Hula moya mme o o lokolle butle ka makgetlo a 5. \n\nLeka ho arabela o kgobile matshwafo.", + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Ka dinako tse ding ho thata ho nahana ka ntho eo o ka babatsang motjha wa hao ka lebaka la yona! Dikeletso tse tswang ho batswadi ba bang ke tsena:", "type": "template", "note": "" }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Batswadi ba dimilione ba re seo se a thusa - HAHOLO.", + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Ha a tshwere motho e mong ka mosa\n* Ho hlwekisa kamore ya hae\n* Ha a bile teng dijong tsa lelapa\n* Ha a dumedisitse ditho tse ding tsa lelapa\n* Ha a hlokometse banababo\n* Ha a fihlile ka nako lapeng\n* Ha a bontshitse hore o nahanela batho ba bang \n* Ka ho re 'ke kopa' kapa 'kea leboha' \n* Ha a ile sekolong\n* Ha a phetha mesebetsi ya lapeng kapa ya sekolo\n* Ho dula ka kgotso nakong ya dijo", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Kwala mahlo. \n\nEmisa ntho eo o e etsang ka motsotswana mme o amehe ka mohemo wa hao.   \n\nKe ntho efe e le nngwe eo o e lebohelang hona jwale?  \nKe ntho efe e le nngwe e o tlisetsang thabo?  \nKe ntho efe e le nngwe eo o e ratang?  \n\nHa ho hlokehe hore ebe ntho e kgolo. Ka dinako tse ding dintho tse nyane di bohlokwa haholo bophelong!", + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "Ke thabela ho utlwa hore o etsa hantle. O motswadi wa mmakgonthe!", "type": "template", "note": "" }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Sena ke seo o ka se etsang hore mmele wa hao o phutholohe:  \n\nDula moo o iketlileng mme o kwale mahlo haeba o kgona.  \nNahana ka reng ya kgauta e sekenang mmele wa hao ho tloha maotong ho ya hloohong.   \nEla hloko ha e ntse e nyolosa le ho theosa mmele wa hao. Na ho na le dikarolo tse utlwahalang di tsitsipane? Di shwele bohatsu? Di le bohloko?   \nAmeha ka dibaka tseo ka nakwana. Hula moya sebakeng seo mme ha o butswela moya, leka ho lokolla tsitsipano kapa bohloko.   \nEtsa sena ha o hema ka makgetlo a mmalwa.   \n\nBula mahlo. Hona jwale mmele wa hao o ikutlwa jwang?", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Ke maswabi ho utlwa hore kajeno dintho ha di o tsamaele hantle. O entse hantle ka ho leka ho rarolla bothata. Ha ho na motho ya nang le dikarabo tsohle empa kannete o entse sohle seo o ka se kgonang!", "type": "template", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "Hape o ka leka sena nakong e tlang ha o iphumana o paqame betheng mme o hlobaela!", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Ke maswabi ho utlwa hore letsatsi la hao la kajeno ha le monate. O etsa hantle ka ho tsoha hoseng ho hong le ho hong mme o leke hape, leha o ikutlwa o kgathetse. Sena ke sebete sa nnete le boitelo!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Kwala mahlo.\n\nLemoha kamano ya hao le lefatshe le tlasa hao.\nKe dikarolo dife tsa mmele wa hao tse thetsang lefatshe? Ke dikarolo dife tsa mmele wa hao tse sa le thetseng?\nLemoha moo ho utlwahalang ho futhumetse le moo ho utlwahalang ho phodile.  \nUtlwa lefatshe le tlasa hao le o tsheheditseng. Tlohella mmele hore o itshetlehe ka tshehetso la lefatshe.", + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Bekeng ena, beha molao o le mong mmoho le motjha wa hao.\n\nHopola ho babatsa motjha wa hao kamora moo!", "type": "template", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Leka sena nakong e tlang ha o ikutlwa o le mong kapa o etsa mosebetsi o tlwaelehileng o kang ho hlapa. Kannete seo se ka thusa!", + "SourceText": "make rules with their teens", + "text": "etsa melao le batjha ba bona", "type": "template", "note": "" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Dula fatshe mme o kwale mahlo.\nKe medumo e mekae eo o e utlwang? \nMamela medumo kahare le kantle ho kamore. E bale ka menwana ya hao. \nKamora medumo e leshome, o phahamisitse menwana e mekae? O utlwile medumo ya eng? \n\nLeka hape ka metsotswana e meng e leshome. \nNa ho na le medumo efe kapa efe e metjha eo o e utlwileng? Na ho na le medumo efe kapa efe kahara mmele wa hao? \nLemoha kamoo o ikutlwang kateng hona jwale.", + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "Na le bile le diphephetso dife kapa dife ha le leka ho etsa melao mmoho?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Kwala mahlo. \n\nNa o na le boikutlo bo matla haholo hoo o utlwang eka o ka baleha? \n\nHo fapana le ho tlohela boikutlo boo, a re ke re bo tshware hanyane. \nHo lokile. Kwala mahlo haeba o ikutlwa o phutholohile. Hemela hodimo. \n\nEba bohelehele. Boikutlo bona bo hokae mmeleng wa hao? Na ho a tjhesa kapa ho a bata? Ho thata kapa ho bonolo? Ho tiile kapa ho a lokotseha? \nIpotse dipotso di se kae. Bo mpolella eng? Bo hloka eng? Nka itshwara ka mosa jwang hona jwale?", + "SourceText": "What was difficult for you about making a rule with your teen?", + "text": "Ke eng e ileng ya o thatafalla ha o etsa molao le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Ena ke ntho e monate e ka o thusang hore o fokotse seterese:  \n\nKgetha pina e bontshang seo o se hlokang hona jwale. Na o hloka pina e o thobang maikutlo ha o tepelletse moyeng kapa pina e nang le morethetho o tla sisinya seterese sa hao se tswe?  \n\nHleka sebaka mme o sisinye mmele wa hao ha mmino o duma. Hopola ho hema ha o ntse o itshisinya. Mohemo wa hao le boitshisinyo ba hao di tsamaye mmoho.", + "SourceText": "My teen and I could not agree on a rule.", + "text": "Nna le motjha wa ka re ne re sa dumellane ka molao.", "type": "template", "note": "" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Esita le ho tsamaya ka metsotso e se mekae ekaba ho lekaneng ho fokotsa seterese le ho o tsosa molota!", + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Nahana hore na molao oo ke o utlwahalang. Na motjha wa hao a ka o latela? Ha le etsa molao le le lelapa, ho a thusa ho nahana ka motjha wa hao, hore na o dilemo di kae, le hore na ke eng ya bohlokwa ho yena.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Kwala mahlo.\nKa motsotswana utlwa lefatshe le tlasa maoto a hao.\nNahana ka ntho eo o e lebohelang.\nAmeha ka mohemo wa hao.\nHema ho hula moya le ho butswela.\n\nMoya o kene mme o tswe.", + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "Motjha wa ka a ka nna a nka ho sa loka hore yena o lokela ho latela molao oo nna ke sa o lateleng.", "type": "template", "note": "" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Dumela! O ikutlwa jwang hona jwale? O thabile, o kwatile, o hloname, o nyakaletse, o kgathatsehile?\n\nHlokomela hore na o ikutlwa jwalo hokae mmeleng wa hao. Lemoha hore na ke menahano efe e tsamaisanang le boikutlo boo. Phefumulohela hodimo.", + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Ka dinako tsohle re lokela ho hopola hore bana ba ithuta hantle ho rona. Ha re latela melao haholo, le bona ba tla latela melao.\n\nO ka fetola molao ho tiisa hore ho ka kgoneha hore bohle ba o latele, o nahanne ka boikarabelo ba hao le boikarabelo ba motjha wa hao (ka mohlala mesebetsi ya sekolong kapa ya boiphediso).", "type": "template", "note": "" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Itebohe ka ho nka nako ho hlahloba maikutlo le menahano ya hao!", + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Ke ile ka ikutlwa ke sa phutholoha, hobane ke nka hore ke nna ya lokelang ho etsa molao eseng motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "A re prakthise tsebo ya ho kgoba matshwafo eo re e bitsang ‘Matla a Kgefu’.\n\nTsetsepela maoto a hao fatshe mme o hule le ho o lokolla ka makgetlo a mararo butle kamoo o ka kgonang.\n\nTa Da! Matla a Kgefu!", + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "Molekane wa ka o ile a ikutlwa a sa phutholoha, hobane o nka hore ke yena ya lokelang ho etsa molao, eseng motjha wa ka.", "type": "template", "note": "" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Lena ke leqheka le leholo le sebediswang ha o ikutlwa o nyahame hobane seo se tla o thusa ho theola moya.", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Ha re etsa melao hammoho le batjha ba rona, seo se thusa ditho tsa lelapa ho utlwisisana habetere. Etlaba melao e utlwahalang le ho feta mme batjha ba tla ikemisetsa ho latela melao ebile ba tla kgona ho e latela.", "type": "template", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Ho ithorisa kapa ho ipabatsa ho ka re thusa haholo, haholoholo matsatsing ao ho leng thata ka wona.\n\nNahana ka beke ya hao mme o phethele polelwana e latelang: “Bekeng ena, ke ikotla sefuba ka nna hobane …” Ekaba eng kapa eng, eseng feela dintho tse amanang le ho ba motswadi!\n\nNahana ka ntho e le nngwe eo o e entseng hantle kajeno. Ebe o ikaparele ka diatla tsa hao mme o iphe HAK e kgolo!", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Ha re leka ho beha molao, re ne re pheha kgang.", "type": "template", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Dula o iketlile mme o kwale mahlo. \n\nElellwa se etsahalang ho wena hona jwale. O nahana eng? Na o nahana dintho tse molemo kapa tse mpe? O ikutlwa jwang? Na o ikutlwa o thabile kapa o sa thaba? Mmele wa hao o ikutlwa jwang? Na o ikutlwa o tsitsipane kapa o phutholohile?\n\nBua le pelo ya hao ka tsela e mosa le e bonolo. O ka nna wa batla ho beha letsoho la hao pelong kapa sefubeng. Ipolelle mantswe a latelang ka lentswe le tlaase:\n\nKe kopa kgotso.\nKe kopa polokeho.\nKe kopa bophelo bo botle.\nKe kopa thabo.\nEka lelapa la ka le ka ratana.\nEka nka ikutlwa ke ratwa.", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "Na motjha wa hao o ne a thabile ha le leka ho beha molao? Ho molemo haholo ho beha melao ha boemo bo kokobetse. Haeba wena kapa motjha wa hao le kgathetse kapa le lapile, ho molemo ho buisana ka melao hamorao.", "type": "template", "note": "" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Nka motsotswana o nahana ka ntho e o hlahetseng. Sheba hore na ha o ikutlwe ka tsela e fapaneng.", + "SourceText": "We were not able to stick to the rule.", + "text": "Ha re kgone ho imatahanya le molao.", "type": "template", "note": "" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Mohato wa 1. Kwala mahlo mme o phefumolohele hodimo. \n\nMohato wa 2. Ipotse, \"Ke nahanang?\" Lemoha hore na maikutlo a hao a matle kapa a mabe.\nLemoha hore na o ikutlwa jwang botebong ba pelo. Hlokomela haeba maikutlo a hao a le matla kapa a se matle. Ikgopotse hore ho sa natswe hore na o ikutlwa jwang, ho lokile.\nHlokomela kamoo mmele wa hao o ikutlwang kateng. Hlokomela eng kapa eng e o utlwisang bohloko kapa e etsang hore o ikutlwe o tsitsipane.\n\nMohato wa 3. Ameha ka mohemo wa hao. Utlwa mohemo wa hao ha o moya o kena le ha o tswa. O ka beha letsoho mpeng mme o utlwe ha e kokomoha le ha e bohlela ha o hem. Etsa sena ka metsotso e ka bang 10.\n\nMohato wa 4. Eketsa tsebo ya hao ya mmele wohle wa hao. Mamela medumo e ka kamoreng. \n\nMohato wa 5. Ka nakwana nahana hore na o ikutlwa ka tsela e fapaneng ka tsela efe kapa efe. Ha o loketse, bula mahlo.", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Molao o lokela ho toba taba mme ebe ntho e kgonehang. Tiisa hore o na le molao o ka bolokwang o le bonolo, jwaloka ho ja dijo mmoho ka Sontaha se seng le se seng ho fapana le bosiu bo bong le bo bong. Na o tlameha ho fetofetoha le molao?", "type": "template", "note": "" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "O sebeditse ka ho Nka Kgefu. O ka etsa sena neng kapa neng ha o ikutlwa o imetswe. Seo se o fa monyetla wa ho kgoba matshwafo le ho feta. Esita le ho phefumoloha ka makgetlo a mmalwa kapa ho fumana kamano pakeng tsa hao le lefatshe leo o emeng hodima lona ho ka tlisa phapang e kgolo. Hape o ka Nka Kgefu le Bana ba hao!", + "SourceText": "Your goal was to make ONE rule with your teen this week.", + "text": "Sepheo sa hao e ne e le ho etsa molao O LE MONG le motjha wa hao bekeng ena.", "type": "template", "note": "" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Ema mme o ikotlollele matsoho nqa lehodimo. Sutumetsa maru afe kapa afe mme o tlohele letsatsi o tjhabele hodima hao. Ikotlollele ka mahlakoreng ka bobedi. Ikotlollele kapele le kamorao.\n\nTlohela matsoho a hao a lepelle ka mahlakoreng. Petetsa mahetla a hao ka thata ho ditsebe ha o hema ho hula moya, kwala mahlo a ntse a panyapanya, mme o tshware moya. Lokolla mahetla a hao ha o phutholla mmele wa hao.\n\nPhutholla diphaka tsa hao mme o tlohele diphaka di ye kwana le kwana ka mahlakoreng, mme o reteletse bokahodimo ba mmele wa hao. Diphaka tsa hao di lokela ho thetsa bokamorao habonolo ha o reteleha ho tloha lehlakoreng le leng ho ya ho le leng.\n\nBeha leoto kapela le leng mme o etse didikadikwe tse nyane ho tloha maqaqailaneng, hopola ho retelehela ka mahlakoreng ka bobedi. Etsa didikadikwe tse nne ka leoto ka leng o lebisa lehlakoreng ka leng.\n\nEbe o sisinya mmele wohle wa hao kapele kamoo o ka kgonang. O hlekehle o ya hodimo! O hlekehle o ya fatshe! O hlekehle ka mahlakoreng wohle!\n\nKwala mahlo mme o phahamise diphaka tsa hao butle hodima hlooho ya hao ha o hula moya. Theola diphaka tsa hao butle ka mahlakoreng ha o lokolla moya.\n\nKa nakwana nahana ka se o etsahalletseng.", + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "O entse hantle ka sena! Ha ho bonolo, mme batjha ba ke ke ba latela melao ka dinako tsohle, empa ho etsa melao e seng mekae ya bohlokwa mmoho ke tsela e ntle ya ho qala. Ipabatse ka ho etsa sena - re motlotlo ka wena!", "type": "template", "note": "" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "O entse hantle! O ka etsa sena neng kapa neng ha o utlwa eka o hloka ho fokotsa seterese le ho matlafatsa kelello le mmele wa hao.", + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Melao e thusa batjha ho utlwisisa hore na ho lebeletswe eng ho bona.\n\nHo na le menyetla e mengata ya hore batjha ba mamele melao haeba melao e etswa LE batjha mme ba babatswa ha ba e latela!", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Etsa letoto la diketso tse tlatsetsang bophelong bo botle tseo o ka thabelang ho di etsa. Tse ding tsa dikeletso ke tsena:\n* Ho mamela mmino oo o o ratang\n* Ho tsamaya e le ho thapolla maoto (haeba ho dumeletswe)\n* Ho etsa boikwetliso bo itseng\n* Ho nwa kopi ya tee o le mong\n* Ho letsetsa motswalle\n* Ho bina, ho tantsha, ho rapela, kapa ho bala\n* Ho ora letsatsi o kwetse mahlo\n* Ho shebella lananeo leo o le ratang la T.V.\n\nKgetha e le nngwe mme o e etse kajeno!", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke melao.\n\nMelao e kgothalletsa kgotso ka lapeng ebile e kgothalletsa ditho tsa lelapa ho utlwisisana.\n\nMelao e kgothalletsa setho ka seng sa lelapa ho jara boikarabelo; kahoo, ho bohlokwa ho ba le melao ya lelapa.\n\nLelapa le nang le melao ya lelapa le phela ka kgotso.", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "Ha o itlhokomela, o hlokomela bana ba hao. Motho ke motho ka batho. Leka ho buisana le metswalle, ba lelapa le batho ba bang ba ka o tshehetsang letsatsi le letsatsi. Haeba o se o qetile nako o sa buisane le motho e mong, bua le yena hona jwale!", + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Ngola molao o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao – o tla be o etsa sena e le boikwetliso ba lapeng bekeng ena.\n\nO tla nahanang ka wona?", "type": "template", "note": "" }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Nahana ka se o halefisang? Seo se etsahala neng? O itshwara jwang ka tlwaelo?\n\nThibela kgalefo ho tloha ha e qala. Robala kapa o phomole ha o kgathetse. Leka ho ja ho hong ha o lapile. Kopa motho e mong hore a o tshehetse ha o jewa ke bodutu.", + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "Na o kgonne ho beha molao mmoho le motjha wa hao?", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Ho laola kgalefo ho ka ba thata e le ruri. Nka kgefu ha o ikutlwa o halefetse bana ba hao kapa motho e mong.\n\nLeba sebakeng se seng ka metsotso e 5 hore o boele o kgone ho laola maikutlo a hao. Haeba kantle ho sireletsehile, tsa mo hahlwa ke moya kantle. Boemo bona bo tla feta!", + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Ka dinako tse ding ho bonahala eka batjha ba hao ba hloname leha o entse sohle se matleng a hao. Hopola o etsa mosebetsi o tswileng matsoho, mme o tla ba le dinako tse monate le bona!", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Fetola @global.parent_app ya hao", + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @local.workshop_data.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Dipotso tsena tse kgutshwanyane di tla tshwanela epo ena e buang ka ditlhoko tsa hao.", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Dumela @fields.user_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "A re qale ka dipotso tse seng kae tse amanang le wena le lelapa la hao.", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Dumela @fields.group_name! Ke beke e ntjha, le wekshopo e ntjha! Ithute tsela ya ho beha melao ya lelapa ka tsela e tla eketsa menyetla ya hore motjha wa hao a e boloke.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Re lakatsa ho tseba lebitso kapa lebitso la hao la boswaswi pele:", + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Rea leboha hore ebe o ile wa boela wa sebedisa @global.parent_app le ka hore ebe o kene leetong lena la botswadi ke boikemisetso.\n\n@local.workshop_data.in_text_title e tla o bontsha hore na melao e behwa jwang ka tsela e tla thusa motjha wa hao o e utlwisisa le ho e latela habonolo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Are you a woman or a man?", - "text": "Na o mosadi kapa o monna?", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. E ke ke ya nka nako e telele mme e tla thusa motjha wa hao ho ntlafatsa tsela eo a latelang melao ka yona!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Woman", - "text": "Mosadi", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Man", - "text": "Monna", + "SourceText": "They discussed the reasons behind the rule", + "text": "Ba ile ba buisana ka mabaka a molao", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "O dilemo di kae?", + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Batho ba baholo", + "SourceText": "The rule was clear, specific and fair", + "text": "Molao o ne o hlakile, o toba taba ebile o lokile", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Batjha", + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse hore ho etswe molao", "type": "template", "note": "" }, { - "SourceText": "Children", - "text": "Bana", + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Ka sebele, ho etsa melao e hlakileng mmoho le ka moya o tlaase le o motle ho a atleha!", "type": "template", "note": "" }, { - "SourceText": "Babies", - "text": "Masea", + "SourceText": "She praised him", + "text": "O ile a mo babatsa", "type": "template", "note": "" }, { - "SourceText": "How many people are in your household?", - "text": "Ho na le batho ba bakae ka palo lapeng la hao?", + "SourceText": "She rewarded him when he followed the rule", + "text": "O ile a mo putsa ha a latetse molao", "type": "template", "note": "" }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "O ka etsa @global.weekly_workshops o le mong KAPA o ka mema ditho tse ding tsa lelapa la hao kapa metswalle hore ba be le wena - ho na le dintho tse ngata tseo le tla di rutana. Ho ho wena!", + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Ka sebele ho jwalo - karabo e ntle e tlisa phapang e kgolo!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops jwang?", + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "A re bale se etsahetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 wa hae:", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Can you think of a name for your group?", - "text": "O nahana hore lebitso la sehlopha sa hao ekaba mang?", + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: \"O dula o fihla leite lapeng!\"\n\n@global.w_rules_teen_boy: \"Nna ha ke fihle leite, ha ke tsebe le hore na leite e bolelang! Ako tlohele ho nkemella.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "O ka rata ho etsa diwekshopo tsa hao tsa @global.weekly_workshops ka matsatsi afe a beke?", + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Ke molao ofe o tobileng oo @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o etsang mmoho?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Monday", - "text": "Mantaha", + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "A re boneng hore na @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba entse sena jwang letsatsing le hlahlamang:\n\n@global.w_rules_female_caregiver_1: “Ke batla hore o ithabise, @global.w_rules_teen_boy, empa hape ke kgathatsehile hore o fihla lapeng mona leite. Na o tseba lebaka la seo?” \n\n@global.w_rules_teen_boy: “Hobane o batla hore ke be le nako e lekaneng ya mosebetsi wa ka wa sekolo?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" }, { - "SourceText": "Tuesday", - "text": "Labobedi", + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: “Ho lokile, ebile ho kotsi, o ka lemala sebakeng sena ha o le kantle kamora hore letsatsi le dikele. O nahana hore o tlameha ho fihla lapeng ka nako mang?”", "type": "template", - "note": "" + "note": "The string @global.w_rules_female_caregiver_1 should not be translated." }, { - "SourceText": "Wednesday", - "text": "Laboraro", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “Ke nahana hore nka fihla lapeng ka 10 ya bosiu?\" \n\n@global.w_rules_female_caregiver_1: “Ekare ke bosiu haholo, mantsiboya ka 6 ho tla ba jwang? Kapa neng neng ka dinako tseo?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Thursday", - "text": "Labone", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “Nka fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo ebe ke fihla ka bosiu ka 10 ka Labohlano le ka Moqebelo?” \n\n@global.w_rules_female_caregiver_1: “E, ho lokile. Ho tloha jwale ho ya pele, molao wa lelapa ke hore o lokela ho fihla lapeng ka 6 ya mantsiboya ka matsatsi a sekolo le bosiu ka 10 ka Labohlano le ka Moqebelo. Empa kamehla o felehetswe ke motswalle wa hao. Akere?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Friday", - "text": "Labohlano", + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: “E, ho lokile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboha haholo, @global.w_rules_teen_boy, hore o re thuse ho etsa molao o motle mmoho. Ke motlotlo ka wena le ho bona kamoo o jarang boikarabelo kateng.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Saturday", - "text": "Moqebelo", + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Letsatsing le hlahlamang...\n\n@global.w_rules_female_caregiver_1: “Kea leboha, @global.w_rules_teen_boy, ha o fihlile lapeng ka nako. Ha o qetile mosebetsi wa hao wa sekolo, re ka ja dijo tseo o di ratang tsa mantsiboya.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Sunday", - "text": "Sontaha", + "SourceText": "Online Safety", + "text": "Boipaballo Inthaneteng", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa sehlopha sa hao beke le beke. Sena se tla fa bohle monyetla wa ho leka seo ba ithutileng sona ha ba na le ba malapa a bona pele ba hahella tsebo e latelang.", + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", + "text": "Melao e bohlokwa ho tiisa hore batjha ba hao ba sireletsehile - le inthaneteng. Taba ena e tshohlwa haholo Wekshopong ya Beke le Beke ha ho rerwa tsa polokeho, empa hona jwale a re shebeng taba ena ka lekgetlo la pele!", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Hase moo! Re tla notlolla wekshopo e ntjha bakeng sa hao beke le beke. Sena se tla o dumella ho leka seo o ithutileng sona ha o na le ba lelapa la hao pele o hahella tsebo e latelang.", + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, na o entse homeweke ya hao?\"\n\n@global.w_rules_teen_girl: \"Ke kopa motsotsonyana @global.w_rules_female_caregiver_2, ke sa qetela @global.teen_social_medium video ena\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "O ka fetola diseting tsena neng kapa neng ho @global.weekly_workshop_options ya hao.", + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: \"O setantshi se hlwahlwa e le kannte! Ako mpolelle hore na ke hobaneng ha o rata ho tantsha?\"\n\n@global.w_rules_teen_girl: \"Metswalle yohle ya ka e rata tantshi, @global.w_rules_female_caregiver_2. Ho na le batho ba 600 ba ratang tantshi ya ka inthaneteng le balatedi ba 120.\"", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Rea tseba hore ena ke ntho e thata. Re kentse tse ding tsa dikeletso tsa kamoo o ka qetang nako le motjha wa hao ka teng ho @data.parent_centre.my_tips.location_text, kahoo o ka di fumana hanghang. \n\nKaha @data.workshop.w_1on1.title e haha motheo wa dithulusi tsohle tse ding tsa botswadi, e tla ba wekshopo eo o tla e amohela bekeng e tlang ya global.weekly_workshop!", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka tsela eo o tantshang ka yona, @global.w_rules_teen_girl. Empa re tlameha ho tiisa hore o sireletsehile. \n\nKea tseba hore metswalle ya hao e sheba @global.teen_social_medium, empa ha akhaonte e bonwa ke bohle, ho na le batho ba bang ba shebang divideo tsa batjha ka mabaka a bona a ditaba tsa thobalano. Ka dinako tse ding ba buisana le batjha. Ba iketsa eka ba mosa empa ba qetella ba sokela le ho hlekefetsa batjha.\"", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "O entse hantle! @global.weekly_workshop ya rona e latelang e tla o fa dikeletso tse ngata ntlheng ena, e le motheo wa dithulusi tse ding tsa botswadi. Empa o se o qadile ka leoto le letle!", + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: \"A re kene inthaneteng mmoho mme re bone hore na re ka etsang ho tiisa hore ntho ena eo o e thabelang e boetse e bolokehile. Bona – o ka etsa hore akhaonte ya hao e be poraefete le ho laola hore na ke mang ya o salang morao.\n\nKahoo o ka amohela batho bao o ba tsebellang sekolong kapa motseng mona, empa eseng batho bao o kopanang le bona inthaneteng.\n\nNa re ka etsa molao mmoho hore o ka sebedisa @global.teen_social_medium, empa e le akhaonte e poraefete? Kea o tshepa hore o a tseba hore na ke mang eo o ka mo amohelang!”", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Ho sebedisa epo ena ho bontsha hore o tsotella motjha wa hao. Re kentse tse ding tsa dithulusi tsa bohlokwa tsa kamoo re sebedisa pabatso ho @data.parent_centre.my_tips.location_text ho fihlella dikeletso kapele.\n\nHo @data.workshop.w_praise.in_text_title ya rona o tla be o ithute dintho tse ngata mabapi le ho sebedisa tsebo ena.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: \"Ke ikotla sefuba ka wena @global.w_rules_teen_girl\"", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "O etsa hantle hore ee o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. Ho @data.workshop.w_praise.in_text_title o tla ithuta haholo ka tsela ya ho sebedisa tsebo ya sebedisa tsebo ena hantle.", + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "O entse mosebetsi o tswileng matsoho. E nngwe le e nngwe ya ditlwaelo tsena e matlafatsa lelapa la hao. Ikotle sefuba.", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le puisano – e sa atlehang… \n* Pale le puisano – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla o hopotsa kamehla ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le boikgopotso – e sa atlehang… \n* Pale le boikgopotso – e atlehileng!\n* Dithulusi: Tsela ya ho etsa melao\nMELAO YA SEHLOPHA - MELAO YA SEBELE - MELAO YA PABATSO!\n* Pale ya boipaballo inthanteng – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana le seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops - empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle!", + "SourceText": "What went well here in making a rule together?", + "text": "Ke eng e tsamaileng hantle mona ha ho etswa molao mmoho?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese ho @data.workshop.w_stress.number ya beke ena ya @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "O nahana hore @global.w_rules_teen_boy o tsebile jwang hore @global.w_rules_female_caregiver_1 o a mo rata?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete! Ho laola seterese ke ntho e thata haholo. Re tshepa hore dithulusi tsa rona tsa ho laola seterese di tla o thusa. O se o ka fumana tse ding tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Making the rule together went well because...", + "text": "Ho etsa molao mmoho ho tsamaile hantle hobane...", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Hase moo. Re na le wekshopo ya ho bajeta ha malapa e ka thusang ka seterese sa ditjhelete ka kakaretso, le ho fokotsa dikgang tse amanang le ditjhelete.", + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Ba ile ba buisana ka mabaka a molao oo\n* @global.w_rules_female_caregiver_1 o ile a mamela ditshisinyo tsa @global.w_rules_teen_boy\n* Molao o ne o hlakile, o toba taba, ebile o lokile\n* @global.w_rules_female_caregiver_1 o ile a babatsa @global.w_rules_teen_boy hobane a thusitse ha ho etswa molao", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Seterese sa ditjhelete se boima.\n\nRe na le wekshopo ya ho etsa bajete ya lelapa ka dibeke tse hlano, empa o se o ka fihlella tse ding tsa dikeletso tsa bohlokwa tsa lelapa tlasa @data.parent_centre.my_tips.location_text!", + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy o ile a tseba hore @global.w_rules_female_caregiver_1 o a mo rata hobane...", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Rea leboha hore ebe o ipuetse nnete – mme re maswabi ho boima pakeng tsa hao le motjha wa hao. Ho itlhokomela le ho le thusa ho ikutlwa o theotse moya ha dintho di ba thata, letsatsi le letsatsi re tla le hopotsa ho theola moya, ho iphumana le ho iputsa. Le batho ba bohlokwa!\n\nO tla ithuta haholo ka ho sebetsana le seterese beke ya 5 @global.weekly_workshops, empa o ntse o ka fihlella tse ding tsa dithulusi tse molemo tlasa @data.parent_centre.my_tips.location_text hore o qalelle.", + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* O ile a mo babatsa\n* O ile a mo putsa hobane a latetse molao", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Melao ya lelapa e thusa ho boloka batjha ba rona ba sireletsehile, le ho utlwisisa se lebeletsweng ho bona. Ha o kenyelletsa motjha wa hao ha o etsa melao, ho na le monyetla o moholo wa hore a e hlomphe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nRe tshepa hore dithulusi tsa rona tsa ho laola seterese di tla o thusa ho ikutlwa o theotse moya maemong a thata. O ka a fumana tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "TEAM RULES", + "text": "MELAO YA SEHLOPHA", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Ena ke ntho eo batswadi hohle ba amehileng ka yona. Re tla etsa bonnete ba hore o fumana tshehetso ya ho matlafatsa dipuisano.\n\nRe tla bua haholo ka ho hlophisa polokeho ya motjha wa hao hamorao ho @global.weekly_workshops, empa o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tsa ho sireletsa motjha wa hao ho @data.parent_centre.my_tips.location_text!", + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Rera melao LE motjha wa hao. Qala ka molao o le mong wa pele o motjha - o ka kenyelletsa o mong hamorao. Buisanang ka mabaka a molao oo mme o mamele maikutlo a hae.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Ena ke ntho e ntle haholo. Ho thata ho ba motswadi, empa kannete o a atleha ntlheng ena.", + "SourceText": "REAL RULES", + "text": "MELAO YA SEBELE", "type": "template", "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! O ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tse itlhommeng pele tse tla o thusa ho etsa melao le ho hlophisa polokeho tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "Etsa hore e tsamaisane le maemo a sebele bakeng sa motjha wa hao, mme e hlake le ho toba taba e le hore ho se utlwisisane ho se be teng. Eseng ‘ka nako’ empa ‘ka 7 mantsiboya’.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools le @data.workshop.w_safe.tools di kentswe ho @data.parent_centre.my_tips.title.", + "SourceText": "PRAISE RULES!", + "text": "MELAO YA PABATSO!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! O ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o se o ka fumana tse ding tsa dikeletso tsa bohlokwa tse itlhommeng pele tse tla o thusa ho etsa melao tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Babatsa motjha wa hao ka ho rala molao le wena, mme o mo babatse ha a o hlompha!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools e kentswe ho @data.parent_centre.my_tips.title.", + "SourceText": "Let's practice making rules.", + "text": "A re tlwaeleng ho etsa melao.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Ha ho bonolo ho ba motswadi. O entse hantle ka ho ameha ka ho tiisa hore motjha wa hao o sireletsehile.\n\nRe tla fumana thuso e nngwe bakeng sa hao diwekshopong tse tla latelang ho @global.weekly_workshops haeba o ka thabela ho tseba le ho feta!", + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Ke molao ofe o le mong wa bohlokwa oo o ka ratang ho o etsa le motjha wa hao? \n* O nahana hore motjha wa hao o tla ikutlwa jwang ka molao oo? \n\nHopola, etsa melao e tobileng le ya sebele!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Dikateng tse hlahisitsweng ke dipotso tsena di se di fumaneha tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Here are some of the rules other families created:", + "text": "Ena ke e meng ya melao eo malapa a mang a e qadileng:", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "O sa tswa notlolla wekshopo ya pele!", + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Motjha a ka bapalla kantle kamora ho qeta homeweke\n* Ditho tsohle tsa lelapa di ja dijo tsa tinare mmoho\n* Motjha wa 1 o hlatswa dijana ka Sontaha le ka Mantaha, Motjha wa 2 ka Labobedi le Laboraro\n* Re buisana ka mosa le hamonate\n* Ha o mametse mmino o tlameha ho sebedisa di-earphone", "type": "template", "note": "" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Rea tseba hore ena ke ntho e thata. O ka ikgopotsa tse ding tsa dikeletso tse molemo tsa kamoo o ka qetang nako le motjha wa hao kateng ho @data.parent_centre.my_tips.location_text kapa o ka boela wa sheba @data.workshop.w_1on1.in_text_title.", + "SourceText": "Remember that YOU matter!", + "text": "Hopola hore WENA o motho wa bohlokwa!", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "O entse hantle ka ho beha motheo o motle hakaalo! Kamehla o ka ikgopotsa @data.workshop.w_1on1.in_text_title ho fumana dikeletso tse ding tsa kamoo le ka qetang nako hammoho.", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "O entse hantle ka ho lemoha boikutlo bo botle. Ke thabela ho utlwa hore o ikutlwa hantle kajeno!", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Ho sebedisa epo ho bontsha hore o tsotella motjha wa hao. O ka ikgopotsa tsela ya ho sebedisa pabatso ho @data.parent_centre.my_tips.location_text.\n\nHore o fumane dikeletso tse eketsehileng tsa ho sebedisa tsebo ena hantle, o ka boela wa sheba @data.workshop.w_praise.in_text_title.", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", + "text": "O entse hantle ka ho lemoha boikutlo bo bohloko. Hase phoso ho se ikutlwe hantle ka dinako tse ding. Hopola hore ha o mong.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "O etsa hantle hore o babatsa motjha wa hao! Sena se mo thusa hore a ikutlwe e le wa bohlokwa – kgothatso ya hao e kgatha tema ya bohlokwa haholo. \n\nKamehla o ka boela wa sheba @data.workshop.w_praise.in_text_title hore o fumane dikeletso tse ding tsa kamoo tsebo ena e ka sebediswang hantle.", + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Etsa dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo. \n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Rea thaba hore ebe beke ena e atlehile hakana!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Haeba ha le eso etse sena mmoho, etsang dimmapa tse pedi le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motseng wa heno\n* Mmapa wa diepo le diwebosaete tseo motjha wa hao a di sebedisang \n\nTiisa hore bobedi ba lona le thabetse moralo wa boipaballo.\n\nNtho ya bohlokwa haholo ke hore o buisana le motjha wa hao ha o etsa sena – hangata batjha ba tseba ho re feta hore na ke dibaka dife tse sireletsehileng le tse sa sireletsehang!", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Rea thaba hore ebe o ne o ikutlwa o kgobile matshwafo bekeng ena!\n\nRe tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, ho o thusa hore o tswele pele ho laola seterese sa hao le ho ikutlwa o kgobile matshwafo.", + "SourceText": "map risks and support with their teens", + "text": "etsa moralo wa dikotsi mme o tshehetse batjha ba hae", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Rea utlwisisa hore na bophelo bo baka seterese se sekae. Re tla dula re o hopotsa ho phomola, ho iphumana le ho iputsa, e le ho o thusa ho sebetsana la seterese le ho ikutlwa o kgobile matshwafo le ho feta.\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "map risks and support with your teen", + "text": "etsa moralo wa dikotsi mme o tshehetse motjha wa hao", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete. Ke ntho e thata haholo ho laola seterese. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Nna le motjha wa ka ha re a dumellana hore na ke dibaka dife le diketso dife tsa inthaneteng tse neng di sireletsehile.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete. Ho laola seterese ekaba ntho e thata haholo. Kamehla o ka fumana dithulusi tse molemo tsa ho laola seterese tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "O entse hantle ka ho leka ho etsa jwalo! Ha re mamela batjha ba rona, esita leha re sa dumellane le bona, re ithuta ho utlwisisa tsela eo ba nahanang ka yona. Leka ho ipha nako ya ho etsa sena hape - leka ho mamela ka hloko mme o bontshe hore o a mo utlwisisa pele o ntsha maikutlo a hao.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Hase moo. Haeba nakong e tlang ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "Motjha wa ka o supile ntlo ya motho e mong eo ke mo tshepang e sa sireletseha. Ke ne ke tshohile mme ke ne ke sa tsebe hore na ke etseng.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Mathata a ditjhelete a ka imela motho. \n\nNeng kapa neng ha ditaba tsa ditjhelete di baka seterese kapa dikgang ka lapeng la hao, kamehla o ka ikgopotsa @data.workshop.w_money.in_text_title kapa @data.parent_centre.my_tips.location_text!", - "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" - }, - { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao. Ho itlhokomela le ho o thusa ho ikutlwa o theotse moya ha dintho di ba thata, re tla tswela pele ho o hopotsa ho theola moya, ho iphumana le ho iputsa. O motho wa bohlokwa!\n\nO ka fumana dikeletso tse ding tsa ho sebetsana le seterese ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text.", - "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" - }, - { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nKaofela re ikutlwa re imetswe ka dinako tse ding, mme ho tswela pele ho sebedisa @global.parent_app ke bohato bo botle haholo ba ho thusa wena le lelapa la hao.\n\nDikeletso tsa rona di thusitse batswadi le malapa a dikete hore a fokotse seterese le ho qeta nako e ngata a le mmoho ka tsela e molemo. Re tla wa re tsoha le wena.", + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Ho a tshosa ho tseba hore batho ba haufi le rona le bao re ba tshepang ba ka ba kotsi batjheng ba rona. Hopola hore o nke kgefu ha o halefile, mme o leke ho mamela motjha wa hao o theotse moya. Fumana motho eo o ka buisanang le yena ka taba ena, mohlomong motswalle kapa ba ditshebeletso tse tshehetso, hore o fumane tshehetso eo o e hlokang.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Rea leboha hore ebe o ipuetse nnete – re maswabi hore dintho ha di tsamaye hantle pakeng tsa hao le motjha wa hao.\n\nRe tshepa hore dithulusi tsa rona tsa ho laola seterese di tla tswela pele ho o thusa ho ikutlwa o theotse moya maemong a thata. O ka a fumana tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "Motjha wa ka o ile a tsitlallela ho bara (kapa sebakeng se seng seo ke nkang a sa sireletseha ho sona) ke moo ho sireletsehileng hore a ka ya teng. Ha ke tsebe hore na ke kgodise motjha wa ka jwang.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Hohle batswadi ba amehile haholo ka taba ena. Hopola ho sebedisa tsebo ya hao e ntjha ho tswela pele o qala tsela e ntle ya ho buisana le motjha wa hao.\n\nO ka ikgopotsa dikeletso tsa bohlokwa tsa ho lokisetsa polokeho ya batjha ba hao ho @global.weekly_workshop kapa tlasa @data.parent_centre.my_tips.location_text!", + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Ena ekaba ntho e kgathatsang matla. Ho fumana tharollo, ho tla hlokahala hore motjha wa hao a utlwe hore ho na le motho ya mo mametseng - kahoo o mamele mabaka a motjha wa hao o theotse moya, mme ke feela o ka kgonang ho mo bolella maikutlo a hao. Ebe mmoho le nahana ka molao o tla mo tlohela hore a ithabise empa a dule a bolokehile.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena!\n\nHopola, o ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng. Hape o ka ikgopotsa dikeletso tsa bohlokwa tsa melao le ho hlophisa polokeho tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "Jwaloka motho e moholo, ke nka ke ikarabella ho ka sireletsa motjha - empa ha ke mo bolella hore na ke sefe se sireletsehileng le se sa sireletsehang, motjha wa ka o ile a halefa.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ha ho bonolo ho ba motswadi. Ho thata ho tseba hore na o ka sireletsa batjha ba rona jwang. Hangata re ikutlwa re se na matla jwaloka batswadi ho ka etsa jwalo, empa re tla wa re tsoha le wena! Hopola, o ka fumana dithulusi tse tjhorisitsweng, dintlha le matlotlo a mangata ho @global.parent_centre neng kapa neng.\n\nHape o ka ikgopotsa dikeletso tsa bohlokwa tsa ho etsa melao melao tlasa @data.parent_centre.my_tips.location_text.", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Batjha ba rona ba ka nna ba tseba dintho tse itseng tse amanang le metse ya habo rona le theknoloji tseo re sa di tsebeng. Ha re kenyelletsa batjha ba rona ka sehlahlo mosebetsing wa ho etsa moralo, ba tla utlwa hore ho na le motho ya ba mamelang le ya ba nkang e le ba bohlokwa, mme ho ka ba bonolo ho tla ka moralo oo bohle ba ka dumellanang le wona.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Ho ba motswadi hase ntho e bonolo. O entse hantle ka ho tsepamisa mohopolo tabeng ya ho tiisa hore motjha wa hao o sireletsehile. \n\nHopola, o ka fumana thuso e nngwe tabeng ena ho @data.workshop.w_safe.in_text_title neng kapa neng ha o e hloka!", + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Ho ne ho le thata ho tseba mehlodi ya tshehetso e fumanehang haeso, hobane ha ke tsebe motse wa heso hantle / ho na le ditshebeletso tse fokolang.", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Hopola hore o ka fumana dikeletso le matlotlo a mangata a molemo ho @global.parent_centre - o ka kena ho yona neng kapa neng!", + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Ho thata ho tseba dintlha tsohle tse amanang le metse ya habo rona. Kenyelletsa setho se seng sa lelapa kapa motswalle ha o etsa mmapa. Hape o ka etela dibakeng tse teng haeno tse fanang ka ditshebeletso mme wa botsa hore na ba etsa eng. Haeba re na le tsebo e ngata, ho ka ba bonolo hore re tiise hore malapa a rona a sireletsehile!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "Na ho na le batjha lapeng la hao?", + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Ha ke tsebe haholo ka theknoloji, kahoo ha ke tsebe hore na ke bue le motjha jwang ka yona.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "Epo ena e amehile ka malapa a nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - o ka ithuta dintho tsa bohlokwa le bakeng sa lelapa la hao!", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Ho hang ha ho na bothata! O ntse o ka tshehetsa motjha wa hao. Kopa motjha wa hao ho o hlalosetsa sesebediswa seo a se sebedisang - o ka etsa sena nakong ya boinotshing. Ona ke monyetla o babatsehang wa ho bontsha motjha wa hao hore o thahasella bophelo ba hae le ho buisana ka dikotsi tse ka hlahang mmoho. Haeba o sa kgodiseha hore na ke melao efe eo le ka e behang, o ntse o ka dumellana le motjha wa hao ho leka molao o motjha ka dibeke tse pedi ebe kamora moo le buisane kamoo dintho di tsamayang kateng ebe le a o fetola ha ho hlokeha!", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "Na ho na le batho ba baholo lapeng la hao?", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Sepheo sa hao ke ho etsa moralo wa dikotsi le ditsela tsa ho fana ka tshehetso o sebedisana le motjha wa hao - bobedi motseng wa heno le inthaneteng.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "Epo ena e amehile ka batswadi ba nang le batjha ba dilemong tsa @global.teen_age_bracket, empa ikutlwe o amohetswe hore o ka tswela pele - le wena o ka ithuta dintho tsa bohlokwa!", + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Batjha ba qeta nako e ngata haholo ba se katlung kapa ba le inthaneteng, moo ho leng thata ho tiisa hore ba bolokehile.\n\nHo buisana ka dibaka tse sireletsehileng le tse sa sireletsehang, le tsela ya ho thibela mathata, ka sebele ke ntho e thusang!", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "Na o tiile o batla ho feta potso ye?", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Dumelang bohle.\n\nKajeno sehlooho sa rona ke polokeho ya batjha.\n\nKe boikarabelo ba rona jwaloka batswadi ho tiisa hore batjha ba rona ba sireletsehile ka dinako tsohle. Re tlameha ho tiisa hore batjha ba rona ba sireletsehile metseng eo re dulang ho yona. Ke boikarabelo ba rona hore re ba tsebise ka dibaka tse sireletsehileng le tse sa sireletsehang metseng.\n\nHape ke boikarabelo ba rona ho tiisa hore ba utlwisisa dikotsi tseo ba ka nnang ba kopana le tsona ha ba le inthaneteng. Ka tsela eo batjha ba rona ba tla ba le boikarabelo mme ba tla kgona ho etsa diqeto tse nepahetseng hore le bona ba tiise hore ba sireletsehile.", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "Na o tiisitse o batla ho feta potso ye? Hopola, karabo ya hao e tla bolokwa e le lekunutu mme e tla re thusa ho utlwisisa ditlhoko tsa hao tsa botswadi.\n\nHape o ka kgetha ho se arabe potso efe kapa efe ka ho kgetha sedikadikwe.", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Buisanang:\n* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", "type": "template", "note": "" }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "O kgethile \"Ke kgetha ho se arabe\"", + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Ke dibaka dife mmapeng wa hao tse sireletsehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa sireletsehang bakeng sa batjha \n – Di etse SEKERE\n* Ke eng e etsang hore sebaka se sireletsehe kapa se se ke sa sireletseha? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao o dula a sireletsehile?", "type": "template", "note": "" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Ho lokile!\n\nHopola, haeba o araba, karabo ya hao e tla bolokwa e le lekunutu ebile seo se tla re thusa ho o fa tlhahisoleseding e nepahetseng bakeng sa hao.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri. \n\nKa tlaase mona ke dibaka tse ding tse ka bang molemo", "type": "template", "note": "" }, { - "SourceText": "Customise for your needs", - "text": "E fetole bakeng sa ditlhoko tsa hao", + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n* Wena le motjha wa hao le ka ya hokae ho fumana tshehetso ha le tobane le tsietsi? \n – TSHWAYA dibaka tsena ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", "type": "template", "note": "" }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Batswadi bohle lefatsheng ba hula ka thata dinakong tseng tse boima. Dipotso tse latelang tse amanang le dintho tse o hlahetseng jwaloka motswadi di tla re thusa ho fumana thuso eo re e hlokang.\n\nTshepahala. Hopola hore ha o mong! Ho na le batswadi ba dimilione ba ikutlwang jwaloka wena, mme kaofela re tshwanelwa ke ho fuwa thuso.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Ho thata ho fumana nako ya ho ithabisa le motjha wa hao.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba hao ba di sebedisang \n* Babatsa batjha ba hao hobane ba ipabola ha ba sebedisa webosaete! \n* Buisana le bona ka tseo mohlomong di sa bolokehang. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa hore motjha wa hao le metswalle ya hae ba sireletsehile ha ba sebedisa inthanete?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgona ho tsepamisa kelello ya hao ho bona le ho etsa ntho eo ba e thabelang le bona?", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_1on1.tools e kentswe ho @data.parent_centre.my_tips.title.", + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o rera kapa o boloka moralo wa boipaballo, tobetsa @global.parent_point mme o keteke katleho ya hao!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Bophelong ba rona bo maphathaphathe, ho thata ho tsepamisa kelello dinthong tse molemo.", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "A re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena - haeba motjha wa hao a le teng hona jwale, le ka etsa seo mmoho hona jwale!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "Ke ka matsatsi a make bekeng e fetileng o ileng wa babatsa motjha wa hao?", + "SourceText": "My family can join in now!", + "text": "Lelapa la ka le ka kena hona jwale!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_praise.tools e kentswe ho @data.parent_centre.my_tips.title.", - "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" - }, - { - "SourceText": "This is a very stressful time for families.", - "text": "Ena ke nako e boima haholo ho malapa.", + "SourceText": "Let me try it out by myself", + "text": "E re ke e leke ke le mong pele", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Bekeng e fetileng o qetile matsatsi a makae o ikutlwa o imetswe haholo jwaloka motswadi/mohlokomedi?", + "SourceText": "Safety Plan", + "text": "Moralo wa Boipaballo", "type": "template", "note": "" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Ka dinako tse ding bana ba rona ba re halefisa haholo.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Ho sireletsa batjha ba rona, re tlameha ho utlwisisa maemo a kotsi ao ba ka iphumanang ba kene ho wona!\n\nA re etseng dimmapa tse pedi mmoho tsa dibaka tse sireletsehileng le tse sa sireletsehang:\n* Mmapa wa motse wa habo rona\n* Mmapa wa diepo/diwebosaete tseo re di sebedisang inthaneteng\n\nA re etseng dimmapa tsena re le sehlopha hona jwale. \n\nLe tla etsa se tshwanang le batjha ba lona e le boikwetliso ba lapeng ba bekeng ena.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa tleroha, wa tjodietsa kapa wa kgaruma motjha wa hao?", + "SourceText": "Step 1: What are important places in your community?", + "text": "Mohato wa 1: Ho na le dibaka dife tsa bohlokwa motseng wa habo lona?", "type": "template", "note": "" }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "O entse hantle. Saense ya boko e bontsha hore ho laola kgalefo ho ntlafatsa kgolo ya boko ba batjha. Ikotle sefuba ka wena.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Fumana sekgetjhana sa pampiri (kapa koranta ya kgale kapa khateboto) le pene. \n* Toroya mmapa wa motse wa habo motjha wa hao, ka ditshwantsho tsa dibaka tsohle tsa bohlokwa jwaloka diterata, ntlo ya hao, sekolo, dishopo, dibaka tseo motjha wa hao a di etelang.", "type": "template", "note": "" }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Tjhelete ke e nngwe ya dintho tse kgolo ka ho fetisisa tse bakelang malapa seterese kajeno.", + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Mohato wa 2: Ke dibaka dife tse sireletsehileng le tse sa sireletsehang?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa ikutlwa o tshwenyehile kapa o kgathatsehile ka tjhelete?", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Buisanang:\n\n* Ke dibaka dife mmapeng wa hao tse bolokehileng bakeng sa batjha \n – Di etse SEDIKADIKWE\n* Ke dibaka dife mmapeng wa hao tse sa bolokehang bakeng sa batjha \n – Di tshwaye ka SEKERE\n* Ke eng e etsang hore sebaka se bolokehe kapa se se ke sa bolokeha? \n* Wena le motjha wa hao le ka etsang hore motjha wa hao a dule a bolokehile?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Kgweding e fetileng (matsatsing a 30), ke ka matsatsi a makae o ileng wa fellwa ke tjhelete ya ho lefella dijo?", + "SourceText": "Step 3: Where can you get support?", + "text": "Mohato wa 3: O ka fumana tshehetso hokae?", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_money.tools e kentswe ho @data.parent_centre.my_tips.title.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ka dinako tse ding, re ka iphumana re le mathateng. Buisanang:\n\n* Wena le motjha wa hao le ka fumana tshehetso hokae ha o tobane le tlokotsi? \n – TSHWAYA dibaka tseo ka ntho e nyane e kang lejwe kapa sekgetjhana sa pampiri.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Bana ba itshwarang hampe ba baka seterese se sengata.", + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Mohato wa 4: Inthaneteng ho na le dibaka dife tse kotsi hona o ka etsa jwang hore di sireletsehe?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgalemela bana ba hao ka hore o ba otle, o ba shape, kapa o ba jabele ka mpama kapa ka ntho e kang thupa kapa lebanta?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Toroya ditshwantsho tsa diepo le diwebosaete tseo batjha ba di sebedisang \n* Babatsanang ka lebaka la tsela e ntle eo ba tsebang ho sebedisa webosaete ka yona! \n* Buisanang ka hore na ke dife tse ka nnang tsa ba kotsi. Hobaneng? \n* Wena le motjha wa hao le ka etsang ho tiisa ha motjha wa hao le metswalle ya hae ba sebedisa inthanete ka tsela e sireletsehileng?", "type": "template", "note": "" }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Ke ditaba tse monate hore ebe o arabela o kgobile matshwafo ha motjha wa hao a etsa ntho e halefisang. A ka ithuta dintho tse ngata ho wena!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_stress.tools e ekeditse ho @data.parent_centre.my_tips.title.", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Tsena ke dinako tse boima haholo tsa ho ba motswadi. O lokela ho ikotla sefuba ka sohle seo o se entseng.\n\nNahana ka dinako tsohle tseo o entseng hore motjha wa hao a bobothehe le tlhokomelo yohle eo o mo fileng yona. Batswadi ba etsa dintho tse hlollang, le etsa dintho tse hlollang!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Ho thata ho latella batjha ba rona ha ba fumana bolokolohi ba ho iketsetsa dintho.", + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "E le ho sireletsa motjha wa hao, ho molemo ho buisana ka motse wa habo lona le dintho tse mo hlahelang inthaneteng.\n\nPhethela @local.workshop_data.in_text_title mme o bone kamoo o ka etsang sena kateng!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Bekeng e fetileng ke ka matsatsi a makae o neng o tseba seo motjha wa hao a se etsang le hore na o na le bomang?", + "SourceText": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Dumela @fields.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "This is good to hear.", - "text": "Tseo ke ditaba tse monate.", + "SourceText": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Dumela @fields.group_name! Kaofela ha lona le batla le fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng. E thabeleng!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Were you in lockdown this week?", - "text": "Na o qetile beke ena o le ho lockdown?", + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "O se o fumane tsebo e ngata haholo ya botswadi dibekeng tsena tse fetileng!\n\nPhethela wekshopo e tlang hore o fumane tsebo e nngwe e tla o thusa.", "type": "template", "note": "" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Ke hantle hore ebe o tseba seo motjha wa hao a se etsang. Ho thata ho ba motswadi, empa kannete o a atleha ho ba boloka ba sireletsehile.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Ho bonahala eka ha o eso phethele @local.workshop_data.in_text_title. Ho rala hammoho le motjha wa hao ho ka thibela mathata a mangata – leka pele o fetela pele!\n\nO entse hantle ka ho sebedisa @global.parent_app ho tshehetsa lelapa la hao.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Ke matsatsi a makae a beke eo ka tlwaelo eseng ya lockdown o tsebang hore na motjha wa hao o ntse a etsang le hore na o na le bomang?", + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Rea a o thoholetsa, o phethetse @local.workshop_data.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_safe.tools e kentswe ho @data.parent_centre.my_tips.title.", + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "A re nahaneng ka se etsahalletseng @global.w_safe_teen_girl_1:", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "We all want to keep our children safe.", - "text": "Kaofela re batla ho tiisa hore bana ba rona ba sireletsehile.", + "SourceText": "What was risky about that situation?", + "text": "Ke eng e neng e le kotsi ka boemo boo?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "O qetile matsatsi a makae kgweding (matsatsi a 30) e fetileng o buisana le motjha wa hao ka ho itshireletsa kgahlanong le tlhekefetso ka thobalano inthaneteng kapa ha a se inthaneteng?", + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho", "type": "template", "note": "" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Ekaba ha a intsha le metswalle kapa ho qoqa ka diwebosaete tseo a di sebedisang.", + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Jwale re na le phephetso e ntjha – ya ho sireletsa batjha ba rona kgahlanong le COVID-19.", + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding", "type": "template", "note": "" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Ke ka matsatsi a makae bekeng e fetileng moo motjha wa hao a ileng a dula a sireletsehile ka ho rwala maske, ka ho se atamellane le batho ba bang le ka tsamaella hole le dibaka tse nang le batho ba bangata?", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona", "type": "template", "note": "" }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "Ho ka ba thata ho sireletsa motjha wa hao kgahlanong le COVID! Re ntse re kopanya dikeletso - tseo haufinyane o tla kgona ho di fumana ho @global.parent_centre.", + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Tseo ke ditaba tse monate. Re ntse re kopanya dikeletso tse tla thusa motjha wa hao hore a itshireletse kgahlanong le COVID - tseo haufinyane o tla kgona ho di fumana ho @global.parent_centre.", + "SourceText": "All those things are true!", + "text": "Dintho tseo kaofela ke nnete!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest", - "text": "Rea leboha ka hore o arabe ka botshepehi", + "SourceText": "Let's think about our teens' online safety.", + "text": "A re nahaneng ka boipaballo ba batjha ba rona inthaneteng.", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "QOQA", + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Kotsi e kgolo ka ho fetisisa eo batjha ba matsatsing ana ba tobanang le yona inthaneteng ke efe?", "type": "template", "note": "" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Hlalosa kamoo u ikutloang kateng, 'me u khothalletse mocha oa hao hore a bue ka lintho tse mo tshoenyang. Le tla utloisisana hamolemonyana ’me le ka etsa moralo o motle hammoho hore le lule le phetse hantle ’me le thabile!", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano", "type": "template", "note": "" }, { - "SourceText": "CAUTION", - "text": "TLHOKOMEDISO", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe", "type": "template", "note": "" }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Fumana lintlha tsa hau mehloling e tšepahalang ea tlhahisoleseling, e le hore u ka ba le kholiseho linakong tsena tse sa tsitsang. Re utloa le ho bona litaba tse ngata ka batho ba bang le mehala, TV, le inthanete. Na e etsa hore u ikutloe u belaela, matshoenyeho, tshabo, khalefo, kapa pherekano? Sheba pele o arolelana kapa o nka khato!", + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya", "type": "template", "note": "" }, { - "SourceText": "CHOOSE", - "text": "KHETHA", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko", "type": "template", "note": "" }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Ho etsa liqeto tse nepahetseng tse bolokang batho ba phetse hantle ebile ba sireletsehile ho ka ba thata. Haholo-holo linakong tsena! U ka thusa ngoana oa hao ea lilemong tsa bocha ho etsa liqeto tse nepahetseng.", + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", "type": "template", "note": "" }, { - "SourceText": "CHILL", - "text": "PHOMOLA", + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Puisano ke ntho ya bohlokwa ka ho fetisisa!\n\nA re boneng se etsahetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Kaofela re ikutloa re imetsoe kelellong ka linako tse ling. Nka moea o tebileng kapa le etse ntho e monate hammoho. Ho ka etsa phapang e kholo ho etsa hore lehae la hau le thabe hape le be le khotso! Mehopolo e meng eo u ka e lekang ke ena:", + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: \"Ho na le ntho e etsahetseng ha ke tsamaile le metswalle ya ka @global.w_safe_teen_girl_2 le @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Ke mametse, @global.w_safe_teen_girl_1\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Menahano e fosahetseng e etsa hore re bue hape re etse lintho tse mpe. Leka ho fetola seo o se nahanang le ho se buang ho tloha ho lintho tse mpe ho ya ho tse ntle!", + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Monna wa koloi: “Dumela sematsatsa. Ke kgale ke ntse ke o batla. O motle hakaakang! Kana lebitso la hao o mang? \n\n@global.w_safe_teen_girl_2: “Lebitso la hae ke @global.w_safe_teen_girl_1”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" }, { - "SourceText": "A teen sometimes does something because they:", - "text": "Ka linako tse ling mocha o etsa ho hong hobane o:", + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Monna wa koloi: “@global.w_safe_teen_girl_1, na o ka rata ho tsamaya le nna ho ya nwa terenki le ditjhipsi. Kena hle, o tla kgutla ka nako, kea o tshepisa…” \n\n@global.w_safe_teen_girl_1: “Ha ke dumele hore ke ntho e nepahetseng eo…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "-Mamela metsoalle ea bona\n- Batla ho etsa seo ba bang ba se etsang\n- Nahana haholo ka 'hona joale' ho feta 'hamorao'\n- Litšusumetso tsa lerato 'me u ka fumana ho ba hlokolosi ho tena\n- Se ke oa tšoenyeha ka kotsi - e kanna ea rata likotsi\n- E-ba le boiphihlelo bo fokolang boo u ka itšetlehang ka bona\n- Ba ikemiselitse ho leka ho hong - ho sa tsotelehe se etsahalang", + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “O lehlohonolo mokgotsi wa ka. Ke kgalla eka monna enwa a ka kopa ho tsamaya le NNA le ho nthekela dimpho. Kea o jwetsa, haeba o hana ke tlo jwetsa batho bohle hore o setlaela!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_2 should not be translated." }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Ho ka thusa ho hopola sena ha ngoana oa hao a etsa qeto e fosahetseng. Buisana le bona ’me le qete nako le le ’moho hore le tle le ba thuse ho khetha hamolemo nakong e tlang!", + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 le ska tsamaya le yena! Itlhokomeleng! A re yeng hae. Ho kotsi ho tsamaya le batho bao re sa ba tsebeng. Ebile o moholo ho wena hape o etsa ntho e mpe.\"\n\n@global.w_safe_teen_girl_1: “Ha ke tsebe…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Ho utloisisa hore na ngoana oa hao o ikutloa joang le hore na u ka mo tshehetsa joang ho etsa phapang e khōlō ho lōna ka bobeli! Hlokomela ngoana oa hao ea lilemong tsa bocha ’me u mo botse hore na o ikutloa joang. Tobetsa sefahlehong se ka tlase ho tseba haholoanyane:", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: \"Pfff, ke motlotlo ka wena hore ebe ha o a ka wa kena ka koloing eo. E ne e le boemo bo kotsi haholo, kea leboha hore ebe o mpolelletse se etsahetseng!\"", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Hopeful", - "text": "Tshepo", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "A re shebeng mohlala o mong wa boemo bo kotsi mmoho.", "type": "template", "note": "" }, { - "SourceText": "Resilient", - "text": "O matla", + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: \"Mokgotsi wa ka o dula a bua ka moshemane e mong ya lekanang le rona wa inthaneteng... O tlo romella dinepe tsa hae ho moshemane eo. Na ho betere hobane ke thaka rona?\"", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Self-esteem", - "text": "boitlhompho", + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: \"O motswalle wa nnete hobane o kgathatsehile ka mokgotsi wa hao. Ho romela dinepe tse sexy ho yena ho kotsi le ho feta.\"", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Bacha ba na le lipakane le litoro tsa bokamoso - tse haufi le hole!", + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: \"Ka dinako tse ding ba pata seo ba hlileng ba leng sona inthaneteng – a ka re ke thaka ya lona empa e le monnamoholo ya dilemo di 50. Kapa ha ba kgaohana, a ka romella dinepe tseno ho batho bohle mme mokgotsi wa hao o tla utlwa bohloko haholo.\"", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Botsa mocha oa hao ka lipakane le litoro tsa hae, mo khothalletse ho nahana ka seo a se batlang bakeng sa bokamoso ba hae, 'me u etse moralo hammoho ho sebeletsa ho li phethahatsa.", + "SourceText": "Doing any of these makes you a great parent.", + "text": "Ho etsa efe kapa efe ya tsena ho o etsa motswadi wa mmakgonthe.", "type": "template", "note": "" }, { - "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", - "text": "Bacha ba matla ba ka sebetsana le maemo a thata, ba ikamahanya le liphetoho, 'me ba rarolla mathata ha ba hlaha.", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Pale le puisano – e sebeditseng!\n* Pale le puisano – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Babatsa mocha oa hao bakeng sa ho hlola mathata 'me u mo tšehetse moo u ka khonang.", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Pale le boikgopotso – e sebeditseng!\n* Pale le boikgopotso – e sebeditseng!\n* Ho hlophisa boikwetliso\n* Dithulusi: Tsela ya ho tiisa hore batjha ba hao ba sireletsehile\nDIMMAPA - MELAO - TSHWARELO\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "Boitlhompho ba mocha ke tsela eo ba inahanang ka eona.", + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "A re bue ka se etsahalletseng @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Khothalletsa ponahalo entle ea setsoantsho sa bouena, beha mohlala oa hore u se ke ua soma kapa ua itshoaea liphoso ka linako tsohle. Tseba matla a mocha oa hao ’me u tshehetse mefokolo ea bona.", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Buisanang:\n\nKe eng e neng e le kotsi ka boemo boo?", "type": "template", "note": "" }, { - "SourceText": "Lonely", - "text": "Bolutu", + "SourceText": "The situation was risky because...", + "text": "Boemo boo bo ne bo le kotsi hobane...", "type": "template", "note": "" }, { - "SourceText": "Anxious", - "text": "Tšoenyehile", + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Monna ya ka koloing o ne a qobella @global.w_safe_teen_girl_1 ka dimpho\n* Mokgotsi wa @global.w_safe_teen_girl_1 o ne a batla ho mo kenya ka hlooho \n* Ho tsamaya le monna e moholo ho ne ho beha @global.w_safe_teen_girl_1 boemong bo kotsi moo a neng a ka lemala kapa a qobellwa ho etsa dintho tse ding \n* Banana ba bangata metseng ya habo rona eba baimana kapa ba fumana HIV ho banna ba baholo ho bona\n* Ho ne ho se na batho ba bang ba baholo ba ka tsheptjwang ba neng ba ka eletsa @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Bacha ba ka ikutloa ba le bang, esita leha ba e-na le ba bang. Ba ka ’na ba ikutloa eka ha ba na motho eo ba ka buang le eena, ba mo tshepang kapa ba ka arolelanang le eena.", + "SourceText": "Let's talk about our teens' online safety.", + "text": "A re buisaneng ka boipaballo ba batjha ba rona inthaneteng.", "type": "template", "note": "" }, { - "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", - "text": "Botsa hore na mocha oa hau o ntse a phela joang, 'me u leke ho fumana mekhoa e mecha ea ho sebelisana le metsoalle le ba lelapa - haholo-holo nakong ea koalo.", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Batjha ba matsatsing ana ba tobana le dikotsi dife inthaneteng?", "type": "template", "note": "" }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Matshoenyeho ke maikutlo a tloaelehileng ’me a ka re thusa ho sebetsana le maemo a thata. Empa ho tshoenyeha ho feteletseng kapa ho tshoenyeha ho sitisang bacha ho etsa lintho tseo ba li ratang ke bothata.", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Batho ba baholo ba sebedisa social media, diepo tsa dipapadi le tsa ho romela melaetsa le diwebosaete ho kopana le batjha le ho ba kgothalletsa diketso tsa thobalano \n* Batho ba beha dintho inthaneteng tse etsang hore re utlwise ba bang bohloko – jwaloka ho etsa eka diketso tse dikgoka di ntle, kapa ho hloya batho ba morabe kapa naha e nngwe\n* Batho ba kenya dintho inthaneteng tse susumetsang batjha ho itematsa kapa ho ipolaya\n* Batjha ba romella batho divideo kapa dinepe tsa bona tse sexy, ebe batho ba di bontsha batho ba bang kapa ba di sebedisa ho utlwisa ba bang bohloko\n* Hangata batho ba ka tshwara batjha hampe inthaneteng – ba nka hore ba ka iketsa dimpodi ho batho ba bang ba sireletsehile", "type": "template", "note": "" }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Thusa mocha oa hau ho tseba hore na ke eng e etsang hore a tshoenyehe 'me u etse moralo hammoho hore na a ka arabela menahanong e tshoenyang joang.", + "SourceText": "MAPS", + "text": "DIMMAPA", "type": "template", "note": "" }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Ho etsa mosebetsi oa boikhathollo hammoho ho ka thusa!", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Etsa DIMMAPA le motjha wa hao tsa dibaka tse sireletsehileng le tse sa sireletsehang motseng wa heno le inthanete. Buisanang ka tsela ya ho boloka tlhahisoleseding ya bona, difoto le divideo e le lekunutu inthaneteng. Buisanang ka hore hang ha ntho e kena inthanete, e dula moo ho ya ho ile. Mohlomong ba tseba mohlala wa metswalle ya bona.", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Tepelletse maikutlong", + "SourceText": "Safety Plan Activity", + "text": "Ketso ya Moralo wa Boipaballo", "type": "template", "note": "" }, { - "SourceText": "Self-harm", - "text": "Ho itematsa", + "SourceText": "RULES", + "text": "MELAO", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Ho hlonama kapa ho nyahama, ho ba boemong bo bobe, kaofela ke maikutlo a tloaelehileng a batho. Khatello ea maikutlo ke ha e tsoela pele ka nako e telele 'me mesebetsi e tloaelehileng ea letsatsi le letsatsi ea mocha e ameha. Ngoana oa hau a ka ikutloa a se na tshepo 'me a sitoa kapa a sa susumelletsehe ho fetola letho.", + "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Etsa MELAO le motjha wa hao ka tsela ya ho sebedisa diepo le diwebosaete tseo a di ratang ka tsela e sireletsehileng.\n\nNa o hopola pale ya Boipaballo Inthaneteng? E shebelle hape.", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Ho bolella ngoana oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Leka ho fumana thuso ea litsebi.", + "SourceText": "Online Safety Story", + "text": "Pale ya Boipaballo Inthaneteng", "type": "template", "note": "" }, { - "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", - "text": "Ka linako tse ling bacha ba ka intsha kotsi ka boomo ho sebetsana le maikutlo a nyahamisang a kang khalefo, molato, lefeela, kapa ho itlhoea. Sena se ka bakoa ke ho tshoenyeha kapa ho tepella maikutlong.", + "SourceText": "AMNESTY", + "text": "TSHWARELO", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", - "text": "Ho bolella mocha oa hao hore a ‘emise’ ho ka ’na ha mpefatsa lintho le ho feta. Ho e-na le hoo, ba mamele, u khobile matshoafo u bontshe hore ua utloisisa, ’me u hahe kholiseho ea bona. Haeba mocha oa hao a ikemiselitse ho hlalosa kamoo ho intsha kotsi ho etsang hore a ikutloe a le betere, u ka qala ho utloisisa mabaka. Leka ho fumana.", + "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "text": "Etsang tumellano ya TSHWARELO. Haeba ho etsahala ntho e mo halefisang, e sa mo tshwareng hantle kapa e mo tshosang, a ka buisana le wena ebile o ke ke wa mo halefela kapa wa mo fa kotlo, esita le haeba a ne a etsa ntho e fosahetseng.\n\nNa o hopola pale ya Tshwarelo e Sireletsehileng? E shebelle hape mona.", "type": "template", "note": "" }, { - "SourceText": "What does that mean?", - "text": "Na seo se bolelang?", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Botswadi ditabeng tsa dijithale bo tshwana le botswadi bophelong ba sebele. O nkile BOHATO BA BOHLOKWA ba ho tiisa hore motjha wa hao o bolokehile motseng LE inthaneteng. O entse hantle!", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "u ka thusa joang?", + "SourceText": "Resources to help in the community", + "text": "Matlotlo a thusang motseng", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Ka li nako tse ling, rona bohle re nale ho ba le menahano e mebe.", + "SourceText": "Online Safety Resources", + "text": "Matlotlo a Boipaballo Inthaneteng", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "\"Ke mo hlolehi\"", + "SourceText": "Being a great parent also means taking time to care for yourself every day.", + "text": "Ho ba motswadi wa mmakgonthe ho boetse ho bolela ho qeta nako e itseng o itlhokomela letsatsi le letsatsi.", "type": "template", "note": "" }, { - "SourceText": "What to do?", - "text": "Ke eng se o lokelang ho se etsa?", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Ke ditaba tse monate. Mme ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", "type": "template", "note": "" }, { - "SourceText": "Examples", - "text": "Mehlala", + "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Ho thata ho ba motsoali. Empa ke ho hlollang hore ebe o sebedisa epo ena – seo se bontsha hore o motswadi ya ikemiseditseng. Etsa bonnete ba hore o a ithorisa le ho ipabatsa ka seo o se etsang.", "type": "template", "note": "" }, { - "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", - "text": "Ho bolella uena kapa ngoana oa hao hore u khaotse kapa u bue se fapaneng le seo hangata ha ho thuse.", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "O phethile wekshopo ena ya beke.\n\nRe tla phetha dintho tseo re di etsang ho itlhokomela ha le bokana ka dihlopha tsa lona ka lekgetlo la pele - kaofela ha lona le lokela ho itlhokomela haholwanyane!", "type": "template", "note": "" }, { - "SourceText": "\"I do everything perfectly\"", - "text": "\"Ke etsa tsohle ka botlalo\"", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Neng kapa neng ha o kgona, kgatholoha, itemohe mme o iputse. \n\nItlhokomele letsatsi le letsatsi. O motho wa bohlokwa!", "type": "template", "note": "" }, { - "SourceText": "Instead, you can ask:", - "text": "ka tsela enngoe, o ka botsa:", + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Nako le nako ha o kgatholoha, o lemoha ntho eo o e entseng hantle kapa o iputsa, tobetsa @global.parent_points ho keteka katleho ya hao!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", - "text": "-Na mohopolo oo ke oa sebele? Litlhaloso tse ling ke life?\n- Ho etsahala'ng haeba ke tsoela pele ho lumela mohopolo ona?\n - Ke ke tla re'ng ho motsoalle haeba a ne a e-na le mohopolo ona?", + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Hobaneng e le @data.workshop.w_self_care.short_title?", "type": "template", - "note": "" + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", - "text": "Sena se boima, empa o leka kahohle kamoo o ka khonang, 'me re tla sebetsa 'moho ho fumana tharollo\"", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Hangata ha re itlhokomele ka ho lekaneng. Empa ntho ena e bohlokwa haholo, haholoholo jwaloka motswadi!\n\nRe fokotsa seterese le ho itlhokomela hantle ho thusa rona HAMMOHO LE batjha ba rona.", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"Ke molato oa hau\"", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho itlhokomela.\n\nHo na le dinako tseo re bang le dinako tse boima, moo re tobanang le mathata mme re sa tsebe hore na re etseng. Ho bohlokwa hore re itlhokomele e le ho ithuta mekgwa ya kamoo re ka dulang re kgobile matshwafo ha ho na le mathata, diphephetso le ditaba tse hlahellang.\n\nHa re kgobile matshwafo re boemong bo botle ba ho nahana dintho tse ntle le ho tla ka ditharollo tse molemo diphephetsong tseo re tobaneng le tsona.", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"Ha re tle ka tharollo 'moho\"", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Hopola – beke ena e amana le WENA! Re tshepa hore o itshwara ka mosa. Seo sea o tshwanela!", "type": "template", "note": "" }, { - "SourceText": "\"I lost my job\"", - "text": "\"Ke lahlehetsoe ke mosebetsi\"", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Qala wekshopo e ntjha-tjha! ya @global.parent_app hosane. O tla bona diphetho tse molemo!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Ke ithutile ho hongata mosebetsing oa ka - seo se tla nthusa ho fumana o mong\"", + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "text": "Na le se le jwetsitse balekane ba lona ka epo ya @global.parent_app? Ho tloha hosane le ka qala ho etsa diwekshopo tsa lona tsa @global.parent_app mmoho!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Ha ho motho ea nthatang\"", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Ho ela hloko seo re se etsang hantle ho re thusa ho tsepamisa mohopolo dinthong tse molemo.\n\nA re nke motsotswana mme re ipabatse. Re tla le bontsha tsela ya ho etsa jwalo.", "type": "template", "note": "" }, { - "SourceText": "\"Last week I did have a great time with...\"", - "text": "\"Bekeng e fetileng ke bile le nako e monate le...\"", + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Nahana ka ntho eo o e entseng hantle morao tjena.\n\nBolellanang mantswe ana ka lentswe le phahameng: \"Ke entse hantle ka…\"\n\nNtho e le nngwe eo le tshwanelwang ke pabatso ka lebaka la yona ke ena: Le entse hantle ka ho sebedisa @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"Bad things always happen to me\"", - "text": "\"Li ntho tse mpe li lula li nketsahalla kamehla\"", + "SourceText": "Recognise", + "text": "Lemoha", "type": "template", "note": "" }, { - "SourceText": "\"This good thing happened the other day...\"", - "text": "\"Ntho ena e ntle e etsahetse ka letsatsi le leng le fetileng...\"", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Nka motsotswana ho ipabatsa.\n\nRe tla le bontsha tsela ya ho etsa seo.", "type": "template", "note": "" }, { - "SourceText": "Change", - "text": "Phetoho", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Nahana ka ntho e le nngwe eo O e entseng hantle morao tjena.", "type": "template", "note": "" }, { - "SourceText": "MAKE TIME", - "text": "ETSA NAKO", + "SourceText": "\"Well done to me for...\"", + "text": "\"Ke entse hantle ka...\"", "type": "template", "note": "" }, { - "SourceText": "Set aside time to have a conversation without distractions.", - "text": "Etsa nako ea ho ba le li puisano ntle le litshitiso.", + "SourceText": "Showing love to my children", + "text": "Ho bontsha bana ba ka lerato", "type": "template", "note": "" }, { - "SourceText": "LISTEN", - "text": "MAMELA", + "SourceText": "Getting up even though I felt tired", + "text": "Ho tsoha leha ke ikutlwa ke kgathetse", "type": "template", "note": "" }, { - "SourceText": "Ask your teen questions and let them share their views without interrupting.", - "text": "Botsa mocha oa hao lipotso, ebile o mo lumelle hore a bollele ka maikutlo kapa menahano ea hae ntle le ho mo sitisa.", + "SourceText": "Smiling at someone", + "text": "Ho bososella motho e mong", "type": "template", "note": "" }, { - "SourceText": "WORK TOGETHER", - "text": "SEBETSANG MMOHO", + "SourceText": "Making food to stay strong", + "text": "Ho lokisa dijo hore ke dule ke le matla", "type": "template", "note": "" }, { - "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", - "text": "Buisanang ka bothata bo itseng, le fumane tharollo hammoho, ’me ka bobeli le etse seo le lumellanang ka sona.", + "SourceText": "Spending time with my children", + "text": "Ho qeta nako le bana ba ka", "type": "template", "note": "" }, { - "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", - "text": "Leboha mocha oa hau ka ho arolelana maikutlo hape le ho totobatsa hore kamoo e le thusa joang ka bobeli.", + "SourceText": "Helping my children with schoolwork", + "text": "Ho thusa bana ba ka ka mosebetsi wa sekolo", "type": "template", "note": "" }, { - "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", - "text": "1. Nka moea o tebileng.\n2. Bona hore na litaba tseo lia utloahala.\n3. Botsa hore na ba fumane litaba hokae.\n4. Sheba hape le batho ba bang / mehloli eo u e tshepang.\n5. Nahana hore na litaba tsena li ka thusa kapa tsa tshosa batho feela ha u li arolelana.", + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Haeba o kgona, bua mantswe ana ka lentswe le hodimo.\n\nNtho e le nngwe eo o tshwanelwang ke pabatso ka lebaka la yona ke ena: O entse hantle ka ho sebedisa @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", - "text": "Ka linako tse ling kaofela re batla ho bolella bacha ba rona \"U tlameha ho etsa sena, kapa ho seng joalo... mathata!\", empa hangata ha e ba etse hore ba latele melao hantle.\n\nHo e-na le hoo, u ka thusa ngoan'a hao ho etsa liqeto tse ntle ka ho bontsa hore ua mo tshepa le ho bua le eena:", + "SourceText": "Things to praise yourself for:", + "text": "Dintho tseo o ka lekang ho ipabatsa ka lebaka la tsona:", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "BUISANA KA LIPHELLO", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Ho bontsha bana ba hao lerato\n* Ho tsoha leha o ikutlwa o kgathetse\n* Ho bososella motho e mong\n* Ho etsa dijo hore o dule o le matla\n* Ho qeta nako le bana ba hao\n* Ho thusa bana ba hao ka mosebetsi wa sekolo", "type": "template", "note": "" }, { - "SourceText": "Ask \"If you do this, what could happen?\"", - "text": "Botsa hore \"na ha o ka etsa sena, ho ka etsahalang?\"", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "A re e lekeng mme re etse ketso ya ho kgatholoha mmoho!", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "BABATSA", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "Jwaloka batswadi, hangata ha re na nako ya ho itlhokomela - empa ho bohlokwa haholo ho etsa jwalo! Ho fokotsa seterese sa rona ho thusa rona HAMMOHO le batjha ba rona.\n\nA re nkeng bohato ba pele mme re etse ketso e kgutshwanyane ya ho kgatholoha mmoho.", "type": "template", "note": "" }, { - "SourceText": "If something goes well, praise your teen!", - "text": "Haeba ho nale ntho e tsamayang hantle, babatsa mocha oa hau!", + "SourceText": "Well done! Try to do this every day.", + "text": "O entse hantle! Leka ho etsa sena letsatsi le letsatsi.", "type": "template", "note": "" }, { - "SourceText": "REFLECT TOGETHER", - "text": "NAHANANG HAMMOHO", - "type": "template", + "SourceText": "Have a hot drink", + "text": "Phoka tee kapa kofi", + "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "Ha ho nale ho phoso, botsa hore \"na u ka be u entse seo joang ka tsela e fapaneng\"", + "SourceText": "Call a friend or relative", + "text": "Letsetsa motswalle kapa mong ka wena", "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "QALA HANYENYANA", + "SourceText": "Have a relaxing bath", + "text": "Kena bateng ya metsi a kgathollang", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Neha mocha oa hao boikarabelo bo bonyenyane pele. Ha seo se tsamaea hantle, u ka eketsa tse ling ho bontsha hore u tshepa mocha oa hao.", + "SourceText": "Read", + "text": "Bala", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao. Re lemohile hore o ile wa tobetsa @data.habit.spend_time.in_text_title - o entse mosebetsi o motle ka ho hopola!", + "SourceText": "Watch TV", + "text": "Shebella TV", "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Sepheo sa hao e ne e le ho qeta nako ya boinotshing le motjha wa hao.", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Ho itlhokomela ke tsebo ya bohlokwa ya botswadi. Neanang malebela:\n\nKe dintho dife tse nyane tse o thabisang?", "type": "template", "note": "" }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "O sebeditse ka ho fumana ditharollo tsa diphephetso tsa hao. Ako yo di leka. Kamano ya hao le motjha wa hao e tla tswela pele ho ba matla!", + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Leka ho etsa ntho eo o ka iputsang ka yona letsatsi le letsatsi.\n\nO ka sebedisa tsebo ena lapeng mme wa e fumana neng kapa neng ho @global.parent_centre ya hao!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "DAY – Do it every day", - "text": "LETSATSI – E etse letsatsi le letsatsi", + "SourceText": "Reward", + "text": "Moputso", "type": "template", "note": "" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "BAPALA – Tlohella motjha wa hao a kgethe ntho eo le ka e etsang", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Kaofela re tshwanela ho itshwara hantle!", "type": "template", "note": "" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "DULA – O fe motjha wa hao nako yohle ya hao", + "SourceText": "What small thing makes you happy?", + "text": "Ke ntho efe e nyane e o thabisang?", "type": "template", "note": "" }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Ke hobaneng ha keletso ena e o thusitse?", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Ke hantle! Ho itlhokomela ke tsebo ya bohlokwa ya botswadi!", "type": "template", "note": "" }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "\"@local.choice_1\" e ntswetse molemo hobane...", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_1 kapa eng kapa eng eo o e thabelang.", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "The string @local.name_1 should not be translated." }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "\"@local.choice_2\" e ntswetse molemo hobane...", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", + "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_2 kapa eng kapa eng eo o e thabelang.", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "The string @local.name_2 should not be translated." }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "\"@local.choice_3\" e ntswetse molemo hobane...", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", + "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_3 kapa eng kapa eng eo o e thabelang.", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "The string @local.name_3 should not be translated." }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Ho ba le nako e tobileng ya ho etsa sena ho nthusa ho hopola.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", + "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_4 kapa eng kapa eng eo o e thabelang.", "type": "template", - "note": "" + "note": "The string @local.name_4 should not be translated." }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Ka lenaneo, nna le motjha wa ka re kgona ho tiisa hore ha re na ntho e kenakenanang le nako ya rona.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", + "text": "Leka ho etsa ntho e nngwe ho iputsa letsatsi le letsatsi. Ekaba ho ya @local.name_5 kapa eng kapa eng eo o e thabelang.", "type": "template", - "note": "" + "note": "The string @local.name_5 should not be translated." }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Ho qeta nako le motjha wa ka letsatsi le letsatsi ho thusa ho haha dikamano tsa ho tshepana le yena/bona.", + "SourceText": "Things you can do to reward yourself:", + "text": "Dintho tseo o ka di etsang ho iputsa:", "type": "template", "note": "" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Ehlile ho jwalo, le ho qeta metsotso e 10 mmoho ho tlisa phapang e kgolo – seo se etsa hore ho be bonolo ho e hlophisa, hore ebe haufi le mosebetsi wa hao le mesebetsi ya lapeng!", + "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "text": "* Phoka tee kapa kofi e tjhesang\n* Letsetsa motswalle kapa setho sa lelapa\n* Kena bateng ya metsi a kgathollang \n* Bala \n* Shebella TV", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "Ho tlohella motjha wa ka ho kgetha seo a ka se etsang ho matlafatsa boitshepo ba hae.", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Kajeno lena re tla etsa mesebetsi e 3 e ka re thusang ho itlhokomela, ebile re tla o botsa dipotso di se kae ho tiisa hore epo ena e o loketse.", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "Haeba motjha wa ka a kgetha, ho ka etsahala hore a batle hore re qete nako e ngata mmoho.", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Ketso ya ho kgatholoha\n* Ketso ya ho itemoha\n* Ketso ya ho iputsa\n* Dithulusi: Tsela ya ho eketsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "Ho tlohella motjha wa ka ho ikgethela ho bontsha hore ke tsotella dintho tseo a di thahasellang.", + "SourceText": "Customise your @global.parent_app", + "text": "Fetola @global.parent_app ya hao", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Ka ho amohela ditshisinyo tsa motjha wa ka, ke bontsha hore ke ya mo mamela.", + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Kaha jwale re hlomelletswe ka tsebo ya ho itlhokomela, a re tiise hore diwekshopo tsa hao tsa @global.weekly_workshops di o loketse hantle.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "Ho bua ntho e ntle ka ntho eo motjha wa ka a e kgethang ho mo bontsha hore ke mo nka e le wa bohlokwa.", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Ho bonahala o se o qetile ho fetola epo hore e dumellane le maemo a hao. Jwale o ka feta ketso ena.", "type": "template", "note": "" }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Ka sebele ke nnete! Mme ha batjha ba rona ba kgetha, ba kgothalletswa ho jara le boikarabelo dikarolong tse ding tsa bophelo ba bona.", + "SourceText": "RELAX", + "text": "KGATHOLOHA", "type": "template", "note": "" }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Ka ho thibela ditshitiso, ke bontsha hore motjha wa ka o bohlokwa haholo.", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Etsa ntho e ka o kgathollang ka potlako ka metsotswana e 30.", "type": "template", "note": "" }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Esita le haeba nke ke ka etsa ketso e itseng le motjha, jwaloka dipapadi, ke ntse nka mo thoholetsa.", + "SourceText": "Relax activity", + "text": "Ketso ya ho kgatholoha", "type": "template", "note": "" }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Ha ke ela hloko motjha wa ka, nka ithuta dintho tse ngata ka dithahasello, maikutlo le bokgoni ba motjha wa ka.", + "SourceText": "RECOGNISE", + "text": "LEMOHA", "type": "template", "note": "" }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "E! Ha re tsepamisa mehopolo ya rona ho batjha ba rona, ho na le monyetla o moholo wa hore ba etse se tshwanang ho rona kamoso ha re ba kopa ntho e itseng!", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Nka motsotswana mme o nahane ka ntho eo O e entseng hantle morao tjena! Haeba o ka kgona, bua ka lentswe le phahameng o re \"O entse hantle ka …\"", "type": "template", "note": "" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Batswadi ba bangata ba tobana le diphephetso tsa ho qeta nako ya boinotshing le batjha ba bona.\n\nTsena ke diphephetso tse 8 tse ka sehloohong tseo batswadi ba itseng ba tobanang le tsona ha ba hlophisa kapa ba qeta nako ya boinotshing le batjha ba bona. Haeba o tobana le e nngwe ya tsena kapa o tshaba hore o ka tobana le yona, e tobetse ho fumana tharollo e ka nnang ya sebetsa. O ka tobetsa mme wa ithuta ka diphephetso tse ding kamora moo.", + "SourceText": "Recognise activity", + "text": "Ketso ya ho itemoha", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "Na o bile le diphephetso dife kapa dife ha o leka ho qeta nako le motjha wa hao?", + "SourceText": "REWARD", + "text": "PUTSA", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "Ke phephetso efe eo o bileng le yona ha o leka ho qeta nako le motjha wa hao?", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Hopola hore le wena o hloka nako ya ho ikgutsa! Ke eng e o thabisang?", "type": "template", "note": "" }, { - "SourceText": "I don’t have enough time.", - "text": "Ha ke na nako e lekaneng.", + "SourceText": "Reward activity", + "text": "Ketso ya ho iputsa", "type": "template", "note": "" }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "Motjha wa ka ha a batle ho qeta nako le nna.", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "Rea o amohela! Re thabela ho ba le wena. Bekeng ena re tlo tsepamisa maikutlo ho wena.\n\nWekshopong ena ya kamohelo o tla: \n* Fumana dithulusi tsa ho itlhokomela\n* Fetola epo ho dumellana le ditlhoko tsa hao", "type": "template", "note": "" }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "Motjha wa ka o batla ho shebella TV feela kapa ho bapala ka founo ya hae.", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Ke taba tse monate, ke thabile haholo ho utlwa hore dintho di tsamaya hantle.", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "Motjha wa ka o batla ho etsa dintho tse sa sireletsehang kapa tse jang tjhelete.", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Ke maswabi hore hona jwale ho boima. Ke ntho e tlwaelehileng hore ka dinako tse ding re hule ka thata. Hopola hore ha o mong!", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "Motjha wa ka o batla ho etsa dintho tseo ke sa kgoneng ho di etsa.", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Ruta batjha ba rona mehato e mene ya ho rarolla mathata:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE\n\nSebedisang mehato e na mmoho ha mathata a hlaha!\n\nHa ho etsahala ntho e mpe, hangata rea halefa le ho beha batho molato. Empa seo hantlentle batjha ba rona ba se hlokang ke motho ya tla ba thusa hore ba fumane ditharollo mmoho. Ba mamele, amohela tsela eo ba tadimang dintho ka yona le eo ba ikutlwang ka yona, mme le ba lebohe ka hore ba le tshepe.\n\nHo ruta motjha wa hao tsela ya ho sebetsana le mathata ho tla mo thusa bophelong bohle ba hae. Ke mpho e babatsehang!", "type": "template", "note": "" }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "Motjha wa ka o kgethile papadi ya tlhodisano. Ha ke hlola o ile a kwata.", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Mathata a mang ao batswadi ba bang ba a rarolotseng le batjha ba bona:", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Ho bile thata ho nna ha nako ya boinotsing e fela.", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* Ke hobaneng ha motjha wa ka a sa batle ho ya sekolong\n* Ke kgathatsehile ka hore motjha wa ka ke moimana kapa o tla imisa motho\n* Ke kgathatsehile ka seo motjha wa ka a se etsang inthaneteng\n* Motjha wa ka o tsamaya le metswalle e fosahetseng\n* Motjha wa ka o botswa\n* Motjha wa ka ha a etse mosebetsi wa hae wa sekolo\n* Mohlomong motjha wa ka o tsuba dithethefatsi", "type": "template", "note": "" }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Bana bohle ba ka ba batla nako ya boinotshing le nna ka nako e tshwanang.", + "SourceText": "resolve problems with their teens", + "text": "rarolla mathata le batjha ba bona", "type": "template", "note": "" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "E, kannete ho ka ba thata haholo ho fumana nako motshehare, ka lebaka la mosebetsi, mabaka a lelapa le dintho tse ding tseo ke di etsang.", + "SourceText": "resolve the problem with your teen", + "text": "rarolla bothata le motjha wa hao", "type": "template", "note": "" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Ke maswabi hore o ile wa thatafallwa ke seo. Re ka utlwa bohloko ha bana ba rona ba sa batle ho qeta nako ya boinotshing le rona.", + "SourceText": "I forgot the steps of problem solving.", + "text": "Ke lebetse mehato ya ho rarolla bothata.", "type": "template", "note": "" }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Ke nahana ka nako eo ka yona motjha wa ka a mphutholohelang, jwaloka hoseng kapa pele a ilo robala.", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "Ho hlokahala hore o itlwaetse ho sebedisa mehato yohle e mene ya ho rarolla mathata. Nakong e tlang ha bothata bo hlaha, sheba mehato e mene le motjha wa hao - seo se tla o thusa haholo!", "type": "template", "note": "" }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Ke dula haufi le motjha wa ka ha a etsa ho hong hoo a ho ratang mme ke bontsha thahasello ya dintho tseo a di ratang.", + "SourceText": "I started with the solutions right away.", + "text": "Ke ile ka qala ka ditharollo tsena hanghang.", "type": "template", "note": "" }, { - "SourceText": "Do something fun with the whole family.", - "text": "Re etsa dintho tse monate re le lelapa kaofela.", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "Ha re na le bothata, kamehla re batla tharollo ka lepotlapotla mme re ka lebala ka mehato ena. Hore re kopanye dihlooho ho tla ka tharollo e molemo ka ho fetisisa, ho molemo haholo ho qala ka ho ba le kutlwisiso e feletseng ya bothata le ditharollo tse sa tshwaneng.", "type": "template", "note": "" }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Ke ditaba tse monate! Ho kgetha nako eo motjha wa hao a buang haholo ka tsona ho tla mo thusa ho arabela hantle ha o leka ho matlafatsa dikamano.", + "SourceText": "Four steps of problem solving", + "text": "Mehato e mene ya ho rarolla bothata", "type": "template", "note": "" }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Ho a thabisa! Ho shebella lenaneo la T.V. leo motjha a le ratang kapa papadi mmoho ho tla mo bontsha hore o a mo tsotella. O be le mamello; ho tla nka nako pele a phutholoha!", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Ha rea ka ra dumellana hore re leke tharollo efe yaba re pheha kgang.", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Ke hantle! Ka dinako tse ding ho ka ba bonolo ho qala ka ho qeta nako le lelapa lohle. Ka tsela eo motjha wa hao a ka phutholoha haholo ho qeta nako ya boinotshing le wena ha nako e ntse e feta.", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Ka dinako tse ding ho ka ba thata ho dumellana le batho bohle lapeng, haholo haeba ese batho bohle ba theotseng moya. Le ka dumellana ka hore le leke tharollo e le nngwe pele, ebe le leka e latelang. Hape, haeba le hloleha, lekang ho kopana hamorao hore le dumellane ka tharollo mmoho.", "type": "template", "note": "" }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "Ke maswabi hore o thulane le bothata. Hangata bana ba rata ho qeta nako ba shebeletse T.V. kapa ba bapala ka disebediswa. O entse hantle ka ho mamella motjha wa hao!", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Ke ile ka halefa ha ho hlaha bothata mme ka lebala ho sebedisa mehato ya ho rarolla bothata.", "type": "template", "note": "" }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Mphe ditshisinyo tsa dintho tse thabisang tseo nna le motjha wa ka re ka di etsang mmoho.", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Ha bothata bo hlaha, kaofela rea halefa kapa re imelwa kelellong ka dinako tse ding. Hopola, ha o ikutlwa o halefile kapa o imetswe kelellong, o ka nka kgefu hore o kgone ho theola moya ebe o rarolla bothata boo o tobaneng le bona.", "type": "template", "note": "" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Fumana ntho e itseng ya thuto eo nka e etsang le motjha wa ka ka sesebediswa.", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "Motjha wa ka o ile a halefa yaba ha a sa batla ho bua ka bothata.", "type": "template", "note": "" }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Kopa motjha wa ka ho mpontsha hore na founo/sesebediswa se sebetsa jwang.", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Mohlomong motjha wa hao o ikutlwa a imetswe haholo ho sebetsana le bothata hanghang. Lemoha le ho bolela maikutlo a hae, mme le behelle nako kathoko hamorao letsatsing kapa bekeng eo ya hore le tshohle le ho rarolla bothata boo mmoho. Ka ho fa motjha wa hao nako, bothata bo ka rarollwa hantle.", "type": "template", "note": "" }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "O sebeditse! Haeba o hloka kgothatso, tsena ke tse ding tsa dikeletso tse tswang malapeng a mang tsa seo le ka se etsang mmoho. Hopola, tlohela motjha wa hao hore a ikgethele.", + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Sepheo sa hao ke ho leka ho rarolla bothata kapa kgohlano hammoho le motjha wa hao.", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Ke botle! Ho na le menate e mengata hammoho le diepo tsa thuto difounong tseo le ka di batlang hammoho. Botsa dipotso, bontsha thahasello mme o hopole ho bua ntho e ntle.", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Lelapa le leng le le leng le tobana le diphephetso, empa ha re sebedisana, re ka sebetsana le mathata ka tsela e atlehang le e nang le kgotso.\n\nKe tsebo ya bohlokwa hore motjha wa hao le yena a ithute yona!", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Hase moo! Batjha ba thaba ha o bontsha thahasello disebedisweng tsa bona mme ba o hlalosetsa ntho eo ba e tsebang. Ke hona moo o tlamehang ho qala teng!", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho rarolla bothata.\n\nKaofela rea tseba hore ho na le dinako tseo re tobanang le mathata, mme kaofela rea tseba hore ha re iphumana re le maemong ana, ho thata ho nahana ka tharollo e nepahetseng hanghang.\n\nKahoo, ho bohlokwa hore ha re tobane le mathata re nke kgefu, re heme, re dule re kgobile matshwafo mme re nahane ka tsebo eo re nang le yona ya ho rarolla mathata eo re ka e sebedisang.\n\nA re hopoleng ho kenyelletsa batjha ba rona ha re rarolla mathata. Sena se tla ba thusa ho ba batho ba nang le boikarabelo le ho ithuta ho rarolla mathata a bona nakong e tlang.", "type": "template", "note": "" }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Ha o mong mona. Ka dinako tse ding batswadi ba bangata ba thulana le bothata bona. Kamehla ebang boinotshing moo le sireletsehileng, ebile ha ho hlokehe hore o patale le sente e ntsho!", + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "A re kgutlele ho @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 mme re bone hore na ke ditharollo dife tseo ba tlang ka tsona.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Hlalosetsa motjha wa ka hore na hobaneng ha tshisinyo ya hae e sa bolokeha kapa e sa kgonehe mme mo kope maikutlo a mang.", + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa hae ba tlile ka ditharollo tse tharo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Sisinya diketso tse ding tse monate tseo re ka di etsang mmoho.", + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Ho thata haholo ho ba motswadi wa motjha. \n\nHangata ha ho na ditharollo tse bonolo le tse seng thata, empa jwale @global.w_solve_female_caregiver_1 o ithutile hore a ka buisana le moradi wa hae ka dintho tsena. \n\nPele, o ne a kgathatseha a le mong, jwale ba ka tla ka ditharollo mmoho!", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Hase moo! Ho bohlokwa haholo hore motjha wa hao a utlwisise lebaka leo o ke keng wa etsa ntho eo a e sisinyang ka lona. Mo kope ditshisinyo tse ding!", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \n\nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", "type": "template", "note": "" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Ena ke yona! Haeba o hloka kgothatso efe kapa efe, o ka fumana ditshisinyo bakeng sa dintho tse ka etswang ho @data.parent_centre.relax_and_activities.location_text. Hopola, e re motjha wa hao a kgethe ntho eo le e etsang!", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Kaofela re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Ke maswabi ho utlwa seo. Batjha ba rona ba ka swetseha haeba re sa kgone ho etsa dintho tseo ba batlang ho di etsa, jwaloka ho bapala papadi kapa ho etsa dintho tse ding tse batlang matla a mangata. Empa hopola, ntho ya bohlokwa haholo ke hore re qeta nako le bona. Batho ba etsa sena ka ditsela tse sa tshwaneng!", + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @local.workshop_data.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Shebella motjha wa ka a etsa ntho e itseng mme o mo thoholetse.", + "SourceText": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", + "text": "Dumela @fields.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Sisinya dintho tse ding tse monate tseo re ka di etsang mmoho.", + "SourceText": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Dumela @fields.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla le bontsha kaofela kamoo le ka sebetsanang le wona kateng.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Hase moo! Le haeba o mo shebelletsa ho fapana le ho etsa ntho le yena, o ka bontsha thahasello ka ho hlalosa le ho babatsa seo motjha wa hao a se etsang!", + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "text": "Tabeng ya batjha, le bophelong ka kakaretso, ho hlaha mathata a sa lebellwang ao re tlamehang ho sebetsana le wona. Qala ka wekshopo e latelang ho ithuta tsela ya ho sebetsana le wona.\n\nQala wekshopo e latelang o ithute tsela ya ho tobana le mathata ana ka katleho.", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "O sebeditse! Haeba o hloka kgothatso efe kapa efe, o ka fumana ditshisinyo tsa dintho tse ka etswang ho @data.parent_centre.relax_and_activities.location_text. Hopola, tlohela motjha wa hao ho kgetha ntho e ka etswang!", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "text": "Hosane ho na le wekshopo e ntjha-tjha! ya @global.parent_app workshop e tla be e o letetse.\n\nLeka ho phethela @local.workshop_data.in_text_title pele o qala wekshopo e ntjha. Ho tseba tsela ya ho rarolla mathata mmoho ho tla o thusa maemong a mangata!", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Ka dinako tse ding sena sea etsahala! Batjha (esita le batho ba baholo) ba ka thatafallwa ke dipapadi tsa tlhodisano ha ba sitwa ho amohela ha ba hlotswe.", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Ke hantle hore ebe o phethetse @local.workshop_data.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Sisinya dintho tse ding tseo re ka di etsang mmoho ho fapana le ho di etsa re le ba direng.", + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "A re shebe se hlahetseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ha @global.w_solve_teen_girl a letsetswa ke moshanyana… founo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Bapala papadi ka dihlopha, hore nka kgothatsa motjha wa ka haeba sehlopha sa rona se hlotswe.", + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o e nkile kae ntho ye?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o ntheketse yona. Ke founo e ntle hakaakang, @global.w_solve_female_caregiver_1. E nka difoto tse ntle haholo!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Hopola, dumella motjha wa hao a kgethe! O ka fumana ditshisinyo bakeng sa dintho tseo o ka di etsang le motjha wa hao ho @data.parent_centre.relax_and_activities.location_text, haeba o di hloka.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: “Ha ke batle ho bona ntho eo e turang! Moshemane eo ke sekeleme! O nahana hore o tlo mo patala ka eng ha a o reketse ntho ye?!” \n\n@global.w_solve_teen_girl: “Ha ho etsuwe jwalo, @global.w_solve_female_caregiver_1! Ntho eo o e etsang ha ke e rate!”", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "Haeba wena le motjha wa hao le le sehlopheng se le seng, o ka mo thusa ho laola maikutlo a hae haeba sehlopha sa lona se lahlehelwa.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: “Ha ke batle ho utlwa o tjho jwalo!” \n\n@global.w_solve_teen_girl: “Ha o leke le ho mmamela! Ha ke tsebe le hore na ke ne ke itshwenyetsang ho bua le wena!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "E, ka dinako tse ding ho thata ho emisa nako ya boinotsing.", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "A re boneng kamoo tharollo e sebetsang kateng boemong ba sebele.", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Bolella motjha wa ka, “Re na le motsotso o le mong pele nako ya boinotsing ya kajeno e fela”, ka tsela eo motjha o itokisetsa boemo.", + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 o tla lapeng a tswa mosebetsing. \n\n@global.w_solve_female_caregiver_2 (o a nahana): \"Iyo maoto a ka a bohloko! Ke tlameha ho dula fatshe hanyane mme ke nwe kofi pele ke qala ho pheha dijo tsa lelapa.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Tsebisa motjha wa ka hore ke na le nako e kae nakong ya boinotshing mme o mo kope hore a latelle lenakana la watjhe kapa tshupanako.", + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O etsang? Ke bohobe ba mantsiboya boo! Jwale bo ke ke ba re lekana kaofela!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Hlophisa nako ya boinotsing nakwana pele ho mosebetsi o mong oo motjha wa ka a o ratang.", + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: “Ntsharele, @global.w_solve_female_caregiver_2, ke utlwa ke lapile. E re ke o jwetse, ho na le moshemane enwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a nahana): “Kgefuta hanyane… kga moya…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Ke taba tse monate! Ka ho fa motjha wa hao ditemoso, ho fela ha nako ya boinotshing ho ke ke ha o hlaha lesumatha. Hape o ka hopotsa motjha wa hao hore le tla qeta nako ya ho ba mmoho hosane.", + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Ako eme hanyane feela hle. Ke kgathetse ebile jwale ke kgathatsehile ka hore na re tla ba le dijo tse lekaneng mantsiboya.” \n\n@global.w_solve_teen_boy_2: “Askisi hle, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Ke botle! Ka tsela eo motjha wa hao o na le boikarabelo ba ho beha nako leihlo mme o tla lemoha ha nako e se e ntse e fedile. Mo hopotse hore re tla qeta nako e nngwe hape hosane.", + "SourceText": "Step 1: KNOW IT", + "text": "Bohato ba 1: BO TSEBE", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Ke taba tse monate! Ha le qeta nako nakwana pele ho dijo tsa tinare, le ka bolela le thabile hore, “nako ya boinotshing e fedile. A re lokisetse dijo tsa tinare le lelapa lohle!”", + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: \"Jwale ako mpolelle, hobaneng ha o lapile? Na ha o a ja sekhafothine sa hao ka lantjhe sekolong?” \n\n@global.w_solve_teen_boy_2: \"Bothata bo qala hona moo. Ho na le moshemane e mong sekolong ya ratang ho iketsa mpodi. Mehlaena o re haeba ke sa mo fe lantjhe ya ka, yena le metswalle ya hae ba tla ntematsa. O nkwatisa haholo!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Batswadi ba bangata ba tobana le boemo bona. Ho ka ba thata ho qeta nako ya boinotshing le batjha ba rona ha re na le bana mmalwa ho fapana le a le mong.", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo empa ke thabile ha e le mona o mpolelletse, @global.w_solve_teen_boy_2. Empa seo ha se bolele hore o tla ja dijo tsa mantsiboya tsa rona kaofela. Kamora hore re bue, o tla lokela ho ya shopong ho ya reka bohobe bo bong. Empa a re qale mona: O nahana hore re lokela ho etsang ka bothata ba bompodi?\"\n\n@global.w_solve_teen_boy_2: \"Emmm… Ke batla ho mo otla kapa ke mo kgalemele.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Kopa motho e mong e moholo kapa ngwana e moholwanyane ho hlokomela ba banyane nakong ya boinotshing le motjha wa ka.", + "SourceText": "Step 2: SOLVE IT", + "text": "Bohato ba 2: BO RAROLLE", "type": "template", "note": "" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Nahana ka nako eo bana ba bang ba leng siyo mme o qete nako eo le motjha wa ka ka nako eo.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: \"Hmmm… o nahana hore ho tla etsahalang ha o etsa jwalo?\"\n\n@global.w_solve_teen_boy_2: \"Ha ke tsebe. O moholo ho nna, mohlomong o tla ntlhola. Ebile nka kena mathateng sekolong yaba kea tebelwa.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Rera nako ya boinotshing sebakeng se seng ho fapana le lapeng.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: \"E, seo se ka etsahala. Empa ho fapana le moo re ka etsang?\"\n\n@global.w_solve_teen_boy_2: \"Ke nahana hore nka bolella titjhere. Empa jwale bana ba bang ba tla mpitsa selallane. Mohlomong wena o ka bua le titjhere?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Hase moo! Ka tsela ena, o ka mamela motjha wa hao o sa sitiswe ke letho, hore a ikutlwe hore ke motho wa bohlokwa ya ratwang.", + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Ekare ke leano le letle leo. Mohlomong nka bua le batswadi ba hae haeba o batle ke bue le bona.\"\n\n@global.w_solve_teen_boy_2: \"E. Haeba o bona eka seo se ka thusa. Kea leboha, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Ke taba tse monate! O ka leka ho qeta nako le motjha wa hao ha bana ba bang ba se ba ilo robala, kapa ha ba ntse ba bapala kantle.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Haeba ho na le ntho e nngwe eo o e batlang, moshanyanaka. Ke tla o etsetsa yona hang ha re qeta ho ja dijo tsa mantsiboya. Ene wa tseba keng? Haeba e sa sebetse, re tla leka e nngwe re le babedi.\"\n\n@global.w_solve_teen_boy_2: \"Kea leboha, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Hase moo! Mohlomong le ka tsamaya mmoho ho ya dishopong kapa la shebella dipapadi mmoho, e le hore le ka qoqa ntle le ho ba le bana ba bang ba tla batla tlhokomelo ba le siyo.", + "SourceText": "Step 3: TRY IT", + "text": "Bohato ba 3: E LEKE", "type": "template", "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSE MOLEMO le TSE TOBILENG.  Re ile ra lemoha hore o tobeditse @data.habit.instruct_positively.in_text_title - o sebeditse ka hore o hopole!", + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "Beke hamorao… \n\n@global.w_solve_female_caregiver_2: \"Ho tsamaya jwang sekolong hona jwale?\"\n\n@global.w_solve_teen_boy_2: \"Ho betere, moshemane eo ha a sa nkukela lantjhe ya ka. Empa o ntse a sa mpatle.\"", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Boikwetliso ba hao ba lapeng e ne e le ho leka ho fa motjha wa hao ditaelo TSA SEBELE, TSA KETSO EO A LOKELANG HO E ETSA le TSE TOBILENG.", + "SourceText": "Step 4: TEST IT", + "text": "Mohato wa 4: E TUTSE", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Rea leboha ka hore o re phetele taba eo! O entse hantle ka ho fa motjha wa hao ditaelo tsa ketso e lokelang ho etswa le ho haha kamano e ntle le motjha wa hao.\n\nWena hammoho le motjha wa hao le tshwanelwa ke pabatso!", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi ho utlwa seo, @global.w_solve_teen_boy_2. Na ke kope malome wa hao ho buisana le batswadi ba hae? Haeba seo se sa sebetse, re tla leka tsela e nngwe!\"\n\n@global.w_solve_teen_boy_2: \"E, kea leboha @global.w_solve_female_caregiver_2. Bonyane kea tseba hore o a nthusa.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Which of the tips helped you?", - "text": "Ke efe ya dikeletso tsena e le thusitseng?", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Kwala mahlo, o kge moya, mme o tsebe hore sohle seo o se entseng se bohlokwa haholo.", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "NAHANA HANTLE – Na motjha wa hao a ka etsa seo o nahanang ho mo kopa sona?", + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "Ropa @global.w_solve_teen_girl kgwedi e le nngwe", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "KGOTHATSA – Sebedisa mantswe a kgothatsang le ho mo babatsa!", + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: “O ke ke wa intsha kgweding e latelang”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "ITLHAKISE – Bua ka tsela e hlakileng le e tobileng!", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Seo ha sea sebetsa... A re lekeng ho hong.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Ke eo taba! Ha re kopa motjha wa rona ho etsa ntho e utlwahalang, ho bonolo hore a atlehe.", + "SourceText": "Return the phone and save up", + "text": "Kgutlisa founo mme o ipehele tjhelete", "type": "template", "note": "" }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Ha re babatsa batjha ba rona, ba ikutlwa ba kgothaditswe hore ba re mamele hape!", + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: \"Ha ke leke ho qosa motswalle wa hao ebile ha ke mona. Ke mpa ke tshwenyehile hore ha motho a o fa mpho, ho ba thata ho re 'tjhe' ha a o kopa ntho e nngwe le wena – jwaloka thobalano. Haeba o batla founo, re tla baballa tjhelete mmoho e le hore o iketsetse diqeto tsa hao o sa kolote motho eng kapa eng.\"", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Hase moo! Ha re nahana esale pele ka ditaelo tse tobileng tseo re di fang motja wa rona, ho ba bonolo haholo ho latela ditaelo tsa rona!", + "SourceText": "This is great! Try the third option as well.", + "text": "Ena e ntle! Leka le tsela ya boraro.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges?", - "text": "Na o bile le diphephetso dife kapa dife?", + "SourceText": "Learn about safe sex", + "text": "Ithute ka thobalano e bolokehileng", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have?", - "text": "O tobane le diphephetso dife?", + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: “Sena se nthusa hore ke bone hore re tlameha ho bua ka bahlankana le ho itshireletsa. Batjha ba bangata ba dilemong tsa hao eba baimana kapa ba tshwarwa ke HIV. A re ye tliliniking hore o buisane le mooki hore o ithute hore na o ka dula o itshireleditse jwang.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "Motjha wa ka ha a batle ho latela ditaelo.", + "SourceText": "This is great!", + "text": "Ena e ntle!", "type": "template", "note": "" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Ha kea fumana nako ya boinotshing eo nka e qetang le motjha wa ka.", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Ke fane ka taelo ho hanyetsa ho fapana le taelo ya se lokelang ho etsuwa.", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Pale le puisano – e sa atlehang…\n* Dithulusi: Tsela ya ho rarolla mathata\nE TSEBE – E RAROLLE – E LEKE – E TUTSE\n* Pale le puisano – e atlehileng!\n* E leke!\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Ke ile ka tjwedietsa motjha wa ka ha a itshwara hampe, ho fapana le ho mo fa taelo e tobileng ya seo a lokelang ho se etsa.", + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Buisanang: \n\nKe jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Diphephetso tse ka sehloohong tsa @local.number_of_challenges tseo batswadi ba bang ba tobanang le tsona:", + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Hopola @global.w_solve_teen_girl le founo eo a e fuweng ke moshemane yane?", "type": "template", - "note": "The string @local.number_of_challenges should not be translated." + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Kea tseba hore bana ba rona ba hloka nako hore ba ithute ho latela ditaelo. Eba le mamello, o leke hape, mme o hopole ho ba babatsa nako le nako ha ba latela ditaelo!", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Ke jwang @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka sebedisang mehato e 4 ya ho rarolla bothata, jwalokaha @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba entse? \n\nBO TSEBE - BO RAROLLE - E LEKE - E TUTSE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Na o batla ho leka e nngwe ya dintho tse latelang?", + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Kga moya o mongata ka makgetlo a mmalwa hore o theole moya, ebe", "type": "template", "note": "" }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Nahana ka nako letsatsi ka leng eo nka qetang metsotso e mehlano kapa nako e fetang moo hanyane.", + "SourceText": "KNOW IT", + "text": "E TSEBE", "type": "template", "note": "" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Fumana mosebetsi wa lapeng oo re ka o etsang mmoho ka tsela e monate.", + "SourceText": "Identify the problem.", + "text": "O hlwaya bothata.", "type": "template", "note": "" }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Kopa motjha wa ka kapa motho e mong ho nthusa ka mesebetsi ya katlung, hore ke be le nako e eketsehileng eo ke sa etseng letho ka yona.", + "SourceText": "SOLVE IT", + "text": "E RAROLLE", "type": "template", "note": "" }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Hase moo! Ho qeta metsotso e 5 ho etsa phapang e kgolo, mme ha o etsa seo ka nako e tshwanang letsatsi le letsatsi, (jwaloka nakong ya dijo tsa hoseng kapa pele le robala), ho ba bonolo ho se fetwe!", + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Nahana ka ditharollo tse ka kgonehang le se ka etsahalang haeba re di sebedisa.", "type": "template", "note": "" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Ke taba tse monate! Ka tsela eo o kgona ho etsa mosebetsi wa hao ebile o thabela nako e monate o na le motjha wa hao!", + "SourceText": "TRY IT", + "text": "E LEKE", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Hase moo! Ka ho aba boikarabelo, o tla ba le nako e ngata ya ho ithabisa le motjha wa hao – ena ke ntho ya bohlokwa haholo!", + "SourceText": "Choose a solution and try it out.", + "text": "Kgetha tharollo mme o e leke.", "type": "template", "note": "" }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "E, ho nka nako ho tlwaela ho fana ka ditaelo tsa se lokelang ho etswa – empa o ke ke wa itshola ka ho leka hape! Nahana ka boitshwaro boo o ka ratang ho bo bona haholo ho motjha wa hao, mme o nahane ka ditsela tse molemo tsa ho fana ka taelo eo!", + "SourceText": "TEST IT", + "text": "E TUTSE", "type": "template", "note": "" }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Ho thata ho nahana ka ditaelo ha re ntse re halefile. Leka mme o fumane nako ya ha o kgobile matshwafo ho fa motjha wa hao taelo ya se lokelang ho etswa. \n\nHo @global.weekly_workshop e latelang, re tla bua ka ho laola maikutlo a hao!  O ka fumana mesebetsi e meng ya ho phomola @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "Na e sebeditse? Ke hantle! Haeba e sa sebetsa, leka tharollo e nngwe.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le morero wa ho boloka tjhelete. Re lemohile hore o ile wa tobetsa @data.habit.money.in_text_title - o entse mosebetsi o motle ka ho hopola!", + "SourceText": "Let's practice problem-solving!", + "text": "A re itlwaetse tsela ya ho rarolla mathata!", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Sepheo sa hao e ne e le ho etsa bajete ya lelapa le moralo wa ho boloka tjhelete.", + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Ikwetlisetseng mathata ao le nang le wona hona jwale mmoho. E mong wa lona ebe motswadi mme e mong e be motjha.\n\nBabatsanang le ho kgothatsana - re motlotlo ka lona!\n\nHopola mehato ena:\nE TSEBE - E RAROLLE - E TUTSE - E LEKE", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Rea leboha ka hore o re phetele dintho tseo o fetileng ho tsona! O entse hantle ka ho nahana kamoo o ka etsang bajete le ho boloka tjhelete le lelapa la hao. Kannete sena se tla o thusa ho sebeletsa dinthong tse ding tseo lelapa la hao le batlang ho di etsa.\n\nRe ka finyella dikgolo mmoho etswe, matla ke kopano!", + "SourceText": "We care about you, and how life is treating you.", + "text": "Rea o tsotella, le kamoo bophelo bo leng kateng ho wena.", "type": "template", "note": "" }, { - "SourceText": "make a budget together with their family", - "text": "etsa bajete mmoho le lelapa la hae", + "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", + "text": "O kgalala. O etsa phapang e kgolo. Ikotle sefuba ka wena.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "Na le bile le diphephetso dife kapa dife ha le etsa bajete ya lona mmoho?", + "SourceText": "Sorry that things are not easy today. All parents have these days.", + "text": "Re maswabi ho utlwa hore dintho ha di bonolo kajeno. Batswadi bohle ba tobana le matsatsi a jwalo.", "type": "template", "note": "" }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Ke eng e le thatafalletseng ka ho etsa bajete hammoho?", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "O phethile wekshopo ya bekeng ena.\n\nBekeng e tlang, re tla buisana ka tjhelete - o tla hloka:\n* leqephe la pampiri/khateboto\n* pene\n* majwe/dinawa/dithollo tse nyane tse 20\n\nE tla ba monate!", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Ke ne ke sa batle ho bolella lelapa la ka hore na ke amohela tjhelete e kae.", + "SourceText": "There are two home practices for this week.", + "text": "Ho na le dintho tse pedi tsa ho ikwetlisa lapeng bekeng ena.", "type": "template", "note": "" }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Ha ho hlokahale hore o bolele ka ho toba tjhelete eo o e amohelang; o ka fana ka kgakanyo. O ka bua tjena, “Lelapeng lena, re na le @global.currency@global.monthly_income_estimate kgwedi le kgwedi” ho fapana le hore, “Ke etsa @global.currency@global.monthly_income_precise”.", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Neng kapa neng ha o utlwa o na le seterese kapa o kwatile: o kge moya ka makgetlo a mahlano le ho o tlohela pele o nka bohato.\n\nMme ha ka bobedi ba lona le theotse moya, bolella motjha wa hao hore na o ikutlwa jwang.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "" }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Ha re etsa bajete, re ne re sa dumellane hore na ke eng e lokelang ho wela tlasa dintho tseo re di hlokang le tseo re di batlang.", + "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "text": "Buisana le motjha wa hao ka \"tshwarelo molemong wa polokeho\", mme mmoho le nahane ka hore na le ka sebedisa sena neng.", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Ka dinako tse ding dintho tseo batho ba di batlang le tseo ba di hlokang dia fapana. Ho buisana ka tsona ho ka thusa wena le ngwana kapa motjha wa hao hore le utlwisisane, le hlomphe ho se tshwane ha lona, le ho bona hore na le ka itima dintho dife.", + "SourceText": "Safety Amnesty Story", + "text": "Pale ya Tshwarelo Molemong wa Polokeho", "type": "template", "note": "" }, { - "SourceText": "I did not understand what to do.", - "text": "Ke ne ke sa utlwisise seo ke tlamehang ho se etsa.", + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Neng kapa neng ha o kgefutsa pele o arabela, kapa neng kapa neng ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_points tsa hao mme o keteke katleho ya hao!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Ke maswabi ho utlwa seo. Kea tseba hore ho ka ba thata! Ke kopa hore re ke re hlahlobe dintlha hape. Motjha wa hao kapa ditho tse ding tsa lelapa di ka tla mme tsa o thusa!", + "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", + "text": "Na o ile wa tobana le efe kapa efe ya diphephetso tsena ha o phetela motjha wa hao hore na o ikutlwa jwang?", "type": "template", "note": "" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "Motjha wa ka o ne a sa batle ho etsa bajete le nna.", + "SourceText": "What was difficult for you about sharing how you feel with your teen?", + "text": "Ke eng e ileng ya o thatafalla ha o phetela motjha wa hao hore na o ikutlwa jwang?", "type": "template", "note": "" }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Leka ho qala ka ho etsa bajete le batho ba bang ba baholo lapeng. Motjha wa hao a ka nna a ba le thahasello ho seo le se etsang.\n\nHo etsa bajete ho ka utlwahala ho le thata empa leka ho etsa hore ebe ntho e monate – e etse papadi nakong ya boinotshing! Kapa o ka nna wa leka ho etsa bajete ya @global.w_money_grandma pele.\n\nHopola ho mo babatsa ha le qetile!", + "SourceText": "I was afraid my teen would think I was weak.", + "text": "Ke ne ke tshohile hore motjha wa ka o tla nahana hore ke a fokola.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "Le wena o tshwanelwa ke papatso! Re boetse rea leboha ka hore o sebedise @global.parent_app. Seo se bontsha hore kannete o a tsotella!", + "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text": "Ho pheta maikutlo, haholoholo a bohloko, ho behela motjha wa hao mohlala wa bohlokwa! Hantlentle ho tiisa ditho tsohle tsa lelapa, hobane le ka utlwisisa le ho tshehetsana habetere.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Sepheo sa hao ke ho babatsa motjha wa hao. O ithutile ho @data.habit.praise_teen.in_text_title bekeng ena. O entse hantle ka hore o hopole!", + "SourceText": "I felt uncomfortable about naming specific difficult feelings.", + "text": "Ke ne ke sa phutholoha ho toba maikutlo a boima ka mabitso.", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Sepheo sa hao ke ho babatsa motjha wa hao.", + "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text": "Ho toba taba hase ho ba tala kapa ho se nahanele - hantlentle ho thusa batho ba bang ho o utlwisisa hantle ebile sena se thibela pherekano ka lapeng. Maikutlo a kang bohale le kgatello ya kelello ke karolo ya bophelo. Ntho feela eo re tlamehang ho e etsa ha re halefile kapa re imetswe kelellong ke ho laola maikutlo a rona hantle le ho phefumulohela hodimo ka makgetlo a mmalwa pele re arabela.", "type": "template", "note": "" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "Na o ile wa fumana monyetla wa ho babatsa motjha wa hao bekeng ye?", + "SourceText": "My teen felt uncomfortable when I shared my feelings.", + "text": "Motjha wa ka o ne a sa phutholoha ha ke mo bolella maikutlo a ka.", "type": "template", "note": "" }, { - "SourceText": "Yes", - "text": "E", + "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text": "Kamehla ho qala ntho e ntjha ka lekgetlo la pele ho thata. Iphe nako ya ho tlwaela seo mme o tswele pele ho beha mohlala o motle ka ho lemoha le ho pheta maikutlo a hao. Ha nako e ntse e feta, motjha wa hao o tla ithuta ho etsa se tshwanang, ebile o tla utlwa hore ke motho ya ratwang le ya tsotellwang!", "type": "template", "note": "" }, { - "SourceText": "No", - "text": "Tjhe", + "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "text": "Ha ke pheta maikutlo a ka, motjha wa ka o ile a mpotsa dipotso, mme seo se ile sa etsa hore ke se ke ka phutholoha.", "type": "template", "note": "" }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Ka dinako tse ding ho thata ho hopola ho babatsa batjha ba rona. Nakong e tlang ha o qeta nako ya boinotshing le motjha wa hao, leka mme o nahane ka ntho e le nngwe eo o ka mo babatsang ka lebaka la yona. O ka ba wa re, “Ke leboha haholo ha o qetile nako le nna!”.", + "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", + "text": "Ho pheta maikutlo ho thusa motjha wa hao ho lemoha le ho ithuta ho etsa se tshwanang. O ka kgetha hore na o mo phetela dintlha tse kae ka boemo boo. Ho ho wena! Hape o ka kgetha ho araba dipotso hamorao ka hore, “Hona jwale ke ikutlwa ke halefile/imetswe maikutlong. Ako mphe nakonyana! Re ka bua ka taba eo mantsiboya”.", "type": "template", "note": "" }, { - "SourceText": "Well done - great job for remembering!", - "text": "O entse hantle ka ho hopola - pele ya pele!", + "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "text": "Ke ne ke imetswe kapa ke halefile hoo ke sitwang ho pheta maikutlo a ka – ke kgetha ho ba mong ha ke ikutlwa ka tsela eo.", "type": "template", "note": "" }, { - "SourceText": "How did your teen respond?", - "text": "Motjha wa hao o ile a arabela jwang?", + "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "text": "Ha ho phoso ha o sa batle ho bua ka nako eo. Fumana nako e nngwe ya ho itlhalosa hamorao, ha o ikutlwa o kokobetse, e le hore bohle ba ka utlwisisa.", "type": "template", "note": "" }, { - "SourceText": "Surprised", - "text": "O ne a maketse", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", + "text": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato.", "type": "template", "note": "" }, { - "SourceText": "Happy", - "text": "O ne a thabile", + "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Sepheo sa hao e ne e boetse e le ho buisana le motjha wa hao ka tsela eo bobedi ba lona le ile la ikutlwa ka yona ha le imetswe maikutlong.", "type": "template", "note": "" }, { - "SourceText": "My teen did not like it", - "text": "Motjha wa ka ha aa ka a rata seo", + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Rea tseba hore na ho boima hakae ho hodisa batjha dinakong tsena. Ho ithuta ho laola seterese sa hao ho thusa wena - hammoho le lelapa la hao.", "type": "template", "note": "" }, { - "SourceText": "I do not know", - "text": "Ha ke tsebe", + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Dumelang bohle.\n\nSehlooho sa kajeno ke ho laola seterese.\n\nHo bohlokwa hore re tsebe tsela ya ho laola seterese sa rona. Ka dinako tseng bana ba rona ba itshwara ka ditsela tse etsang hore re ikutlwe re na le seterese mme rona jwaloka batswadi re ka etsa hore le bana ba rona ba be le seterese.\n\nKahoo, ho bohlokwa ho elellwa ha re ikutlwa re na le seterese le ho nka kgefu ebe re kga moya. Seo se tla o thusa ho laola seterese sa hao.", "type": "template", "note": "" }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Hopola, ho nka nako pele motjha a ka tlwaela ho o bona o mo babatsa. Ha o qeta nako e ngata le yena, dintho di tla ntlafatla!", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Seterese se bile jwang bekeng ye? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", "type": "template", "note": "" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "O entse hantle ka ho lemoha kamoo a ikutlwang kateng; pele ya pele!", + "SourceText": "Well done!", + "text": "O entse hantle!", "type": "template", "note": "" }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Seo se ka etsahala - eba le mamello. Tiisa hore o dula o qeta nako le motjha wa hao, e le hore a nke maikutlo a hao e le a bohlokwa haholo. Haeba pabatso e tswa pelong, o tla bona melemo haufinyane!", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", "type": "template", "note": "" }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Ha ho na bothata - leka ho hlokomela kamoo a arabelang kateng nakong e tlang!", + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "Na o thabile, o hloname, o halefile, o tsohile molota, o kgathatsehile? O sebeditse ka ho lemoha kamoo wena le ba bang le ikutlwang kateng kajeno! Mme hopola, letsatsi la hosane ke letsatsi le letjha.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Sepheo sa hao ke hore o buisane ka boemo ba tlokotsi bo ka hlahang le motjha wa hao le ho itokisetsa bona.", + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Ka dinako tse ding kaofela re ikutlwa re imetswe. Ho hemela hodimo ho ka re thusa!\n\nPhethela @local.workshop_data.in_text_title ho fumana tse ding tsa dithuluse tse molemo tsa ho sebetsana le seterese.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "lokisetsa tlokotsi e ka hlahang le batjha ba hao", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "text": "Dumela @fields.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "lokisetsa tlokotsi e ka hlahang le motjha wa hao", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "text": "Dumela @fields.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @global.parent_app.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "Motjha wa ka o mpolelletse hore o hlahetswe ke ntho e tebileng mme ke ne ke sa tsebe hore na ke sebetsane le taba eo jwang.", + "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Re na le wekshopo e ntjha e fumanehang bakeng sa hao e amanang le ho laola bohale le kgatello ya maikutlo. E tla o thusa ho itlhokomela ka tsela e betere.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Babatsa motjha wa hao hobane a o bolelletse, ha ho bonolo ho etsa jwalo! Hopola, o ka sebedisa tsebo yohle eo o e kotutseng lebokoseng la hao la dithuluse: Nka kgefu, sebedisa mehato e mene ya ho rarolla mathata, mme o batle thuso eo wena le motjha wa hao le e hlokang!", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Hosane ho na le wekshopo e ntjha-tjha! e tla beng e o emetse ya @global.parent_app. \n\nKa ho phethela @local.workshop_data.in_text_title pele, o beha moralo wa bohlokwa haholo: Ha o ikutlwa o thabile, lelapa la hao le lona le tla ntlafatsa dintho!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Get support", - "text": "Fumana thuso", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "O sebeditse ka ho phethela @local.workshop_data.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Puisano eo e ile ya etsa hore ke ikutlwe ke sa phutholoha ho hang hobane e ile ya nkgopotsa ntho e bohloko e kileng ya nhlahela.", + "SourceText": "Let's think about what happened in this story.", + "text": "A re nahaneng ka se etsahetseng paleng ena.", "type": "template", "note": "" }, { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Ha ntho e re hopotsa ka ketsahalo e jwalo, ho tlwaelehile hore re ikutlwe re kwatile kapa re halefile. Ho bohlokwa ho fumana nako ha o kgutsitse, hore ka nahana ka hore na o hloka tshehetso ya mofuta ofe. Mohlomong o tlameha ho buisana le motho e mong.", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "O nahana hore @global.w_stress_teen_boy_1 o ile ka ikutlwa jwang?", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "One of us did not feel comfortable.", - "text": "E mong wa rona o ne a sa ikutlwe a phutholohile.", + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "@global.w_stress_male_caregiver yena?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Ena ke ntho e thata hore batho ba bue ka yona. E fumanele nako eo le phutholohileng. Rea tseba hore ho bonolo haholo ho qoba ho bua ka taba le ho tshepa hore e keke ya re etsahalla. Empa, ho ithuta ho sebetsana le tlokotsi ho tshwana le ho fumana inshorense; KAMEHLA ho molemo ho nahana ka yona le ho itokisetsa yona.", + "SourceText": "And @global.w_stress_girl?", + "text": "Ho thweng ka @global.w_stress_girl?", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Sepheo sa hao ke ho etsa moralo wa dikotsi le ditsela tsa ho fana ka tshehetso o sebedisana le motjha wa hao - bobedi motseng wa heno le inthaneteng.", + "SourceText": "Sad", + "text": "A kwatile", "type": "template", "note": "" }, { - "SourceText": "map risks and support with their teens", - "text": "etsa moralo wa dikotsi mme o tshehetse batjha ba hae", + "SourceText": "Scared", + "text": "A tshohile", "type": "template", "note": "" }, { - "SourceText": "map risks and support with your teen", - "text": "etsa moralo wa dikotsi mme o tshehetse motjha wa hao", + "SourceText": "Confused", + "text": "A ferekane", "type": "template", "note": "" }, { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Nna le motjha wa ka ha re a dumellana hore na ke dibaka dife le diketso dife tsa inthaneteng tse neng di sireletsehile.", + "SourceText": "Angry", + "text": "A halefile", "type": "template", "note": "" }, { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "O entse hantle ka ho leka ho etsa jwalo! Ha re mamela batjha ba rona, esita leha re sa dumellane le bona, re ithuta ho utlwisisa tsela eo ba nahanang ka yona. Leka ho ipha nako ya ho etsa sena hape - leka ho mamela ka hloko mme o bontshe hore o a mo utlwisisa pele o ntsha maikutlo a hao.", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Kaofela ha bona ba ne ba ikutlwa ba kwatile ka mabaka a bona!", "type": "template", "note": "" }, { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "Motjha wa ka o supile ntlo ya motho e mong eo ke mo tshepang e sa sireletseha. Ke ne ke tshohile mme ke ne ke sa tsebe hore na ke etseng.", + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "@global.w_stress_male_caregiver a ka be a entse eng ka tsela e fapaneng?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Ho a tshosa ho tseba hore batho ba haufi le rona le bao re ba tshepang ba ka ba kotsi batjheng ba rona. Hopola hore o nke kgefu ha o halefile, mme o leke ho mamela motjha wa hao o theotse moya. Fumana motho eo o ka buisanang le yena ka taba ena, mohlomong motswalle kapa ba ditshebeletso tse tshehetso, hore o fumane tshehetso eo o e hlokang.", + "SourceText": "Recognise why he feels stressed", + "text": "A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese", "type": "template", "note": "" }, { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "Motjha wa ka o ile a tsitlallela ho bara (kapa sebakeng se seng seo ke nkang a sa sireletseha ho sona) ke moo ho sireletsehileng hore a ka ya teng. Ha ke tsebe hore na ke kgodise motjha wa ka jwang.", + "SourceText": "Take a deep breath and speak calmly", + "text": "A kge moya haholo mme a bue a kgobile matshwafo", "type": "template", "note": "" }, { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Ena ekaba ntho e kgathatsang matla. Ho fumana tharollo, ho tla hlokahala hore motjha wa hao a utlwe hore ho na le motho ya mo mametseng - kahoo o mamele mabaka a motjha wa hao o theotse moya, mme ke feela o ka kgonang ho mo bolella maikutlo a hao. Ebe mmoho le nahana ka molao o tla mo tlohela hore a ithabise empa a dule a bolokehile.", + "SourceText": "Show he understands his teen’s feelings", + "text": "A bontshe hore o utlwisisa maikutlo a motjha wa hae", "type": "template", "note": "" }, { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "Jwaloka motho e moholo, ke nka ke ikarabella ho ka sireletsa motjha - empa ha ke mo bolella hore na ke sefe se sireletsehileng le se sa sireletsehang, motjha wa ka o ile a halefa.", + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Batjha ba rona ba ka nna ba tseba dintho tse itseng tse amanang le metse ya habo rona le theknoloji tseo re sa di tsebeng. Ha re kenyelletsa batjha ba rona ka sehlahlo mosebetsing wa ho etsa moralo, ba tla utlwa hore ho na le motho ya ba mamelang le ya ba nkang e le ba bohlokwa, mme ho ka ba bonolo ho tla ka moralo oo bohle ba ka dumellanang le wona.", + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Ho ne ho le thata ho tseba mehlodi ya tshehetso e fumanehang haeso, hobane ha ke tsebe motse wa heso hantle / ho na le ditshebeletso tse fokolang.", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "A re shebeng mohlala wa kamoo seterese se ka re imelang e mong le e mong wa rona kateng:", "type": "template", "note": "" }, { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Ho thata ho tseba dintlha tsohle tse amanang le metse ya habo rona. Kenyelletsa setho se seng sa lelapa kapa motswalle ha o etsa mmapa. Hape o ka etela dibakeng tse teng haeno tse fanang ka ditshebeletso mme wa botsa hore na ba etsa eng. Haeba re na le tsebo e ngata, ho ka ba bonolo hore re tiise hore malapa a rona a sireletsehile!", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: “Ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver: “Ako kgaohane le nna, o shebane le taba tsa hao!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Ha ke tsebe haholo ka theknoloji, kahoo ha ke tsebe hore na ke bue le motjha jwang ka yona.", + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: “Ke entseng jwale? Mehla ena ha o mmamele!” \n\n@global.w_stress_male_caregiver: “Ke itse o kgaohane le nna, ho seng jwalo ke tla o shapa!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Ho hang ha ho na bothata! O ntse o ka tshehetsa motjha wa hao. Kopa motjha wa hao ho o hlalosetsa sesebediswa seo a se sebedisang - o ka etsa sena nakong ya boinotshing. Ona ke monyetla o babatsehang wa ho bontsha motjha wa hao hore o thahasella bophelo ba hae le ho buisana ka dikotsi tse ka hlahang mmoho. Haeba o sa kgodiseha hore na ke melao efe eo le ka e behang, o ntse o ka dumellana le motjha wa hao ho leka molao o motjha ka dibeke tse pedi ebe kamora moo le buisane kamoo dintho di tsamayang kateng ebe le a o fetola ha ho hlokeha!", + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: “Bona! Ke qeta ho hlwekisa ntlo!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Sepheo sa hao ke ho leka ho rarolla bothata kapa kgohlano hammoho le motjha wa hao.", + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: “Ke mang ya nang le taba le ntlonyana ena e makatsang!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "resolve problems with their teens", - "text": "rarolla mathata le batjha ba bona", + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Rea leboha hore le nahane ka taba ena! A re kgutleleng morao mme re bone kamoo @global.w_stress_male_caregiver a etsang dintho kateng hona jwale:", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "resolve the problem with your teen", - "text": "rarolla bothata le motjha wa hao", + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver o feletswe ke mosebetsi. O dutse lapeng a ikutlwa a sulafalletswe ebile a na le seterese, ha @global.w_stress_teen_boy_1 a kena.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "I forgot the steps of problem solving.", - "text": "Ke lebetse mehato ya ho rarolla bothata.", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: “Ke ne ke kopa tjhelete ya ho reka airtime?” \n\n@global.w_stress_male_caregiver (o kga moya): “Eish ngwanaka. Ho bile boima kajeno. Mongaka o ntebetse mosebetsing.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "Ho hlokahala hore o itlwaetse ho sebedisa mehato yohle e mene ya ho rarolla mathata. Nakong e tlang ha bothata bo hlaha, sheba mehato e mene le motjha wa hao - seo se tla o thusa haholo!", + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “Ao banna! Ene ke hloka yunifomo e ntjha ya sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka, moshanyanaka, Empa mosebetsi wa @global.w_stress_female_caregiver wa hao o tla re thusa nakong eo ke ntseng ke batla mosebetsi o mong.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" }, { - "SourceText": "I started with the solutions right away.", - "text": "Ke ile ka qala ka ditharollo tsena hanghang.", + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: “Nna le nna nka thusa ka ho batla mosebetsi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “O ska kgathatseha, ho tla loka @global.w_stress_teen_boy_1. Kea leboha ha o batla ho thusa. Empa ntho ya bohlokwa haholo ke hore wena o sebetse ka thata sekolong. Kea leboha ka hore o mmamele.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "Ha re na le bothata, kamehla re batla tharollo ka lepotlapotla mme re ka lebala ka mehato ena. Hore re kopanye dihlooho ho tla ka tharollo e molemo ka ho fetisisa, ho molemo haholo ho qala ka ho ba le kutlwisiso e feletseng ya bothata le ditharollo tse sa tshwaneng.", + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “A re ilo bapala bolo mmoho. Seo se tla nthusa hore ke theole seterese hanyane.” \n\n@global.w_stress_teen_boy_1: “Ho lokile, @global.w_stress_male_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Four steps of problem solving", - "text": "Mehato e mene ya ho rarolla bothata", + "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", + "text": "Puisano eo e tsamaile hantle haholo!\n\nHo kgefutsa ho tla o thusa hore o arabe o theotse moya ha o ikutlwa o halefile kapa o na le seterese. Ho leke, o tla bona!", "type": "template", "note": "" }, { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Ha rea ka ra dumellana hore re leke tharollo efe yaba re pheha kgang.", + "SourceText": "Safety Amnesty", + "text": "Tshwarelo Molemong wa Polokeho", "type": "template", "note": "" }, { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Ka dinako tse ding ho ka ba thata ho dumellana le batho bohle lapeng, haholo haeba ese batho bohle ba theotseng moya. Le ka dumellana ka hore le leke tharollo e le nngwe pele, ebe le leka e latelang. Hape, haeba le hloleha, lekang ho kopana hamorao hore le dumellane ka tharollo mmoho.", + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Nahana ka mehleng ya ha o sa le motjha.\n\nNa ho kile ha eba le nako eo ka yona o neng o le kotsing empa o sa kgone ho bolella lelapa la hao hobane o ne o halefile?\n\nSena se BATLILE se etsahalla @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re ba shebelleng:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Ke ile ka halefa ha ho hlaha bothata mme ka lebala ho sebedisa mehato ya ho rarolla bothata.", + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: \"O ska jwetsa batho ba baholo, hore ke ya bareng le metswalle ya ka bosiung bona\" \n\n@global.w_stress_teen_girl: \"O je monate! Ke ba jwetsitse hore ke tjhakela mokgotsi wa ka wa ngwanana, empa ke ya phathing e monate\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Ha bothata bo hlaha, kaofela rea halefa kapa re imelwa kelellong ka dinako tse ding. Hopola, ha o ikutlwa o halefile kapa o imetswe kelellong, o ka nka kgefu hore o kgone ho theola moya ebe o rarolla bothata boo o tobaneng le bona.", + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: \"Ke nahana hore ba rekisa dithethefatsi. Kaofela re ka tshwarwa. Empa nkeke ka bolella batswadi ba ka – ba tla halefa haholo\"", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_2 should not be translated." }, { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "Motjha wa ka o ile a halefa yaba ha a sa batla ho bua ka bothata.", + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: \"Ke tshohile. Batho bohle ba nwele haholo hoo ba ke keng ba nkisa lapeng. Moshemane enwa o re o tla nkisa empa re qale habo pele. Nkeke ka jwetsa batswadi ba ka – ke ba jwetsitse leshano ka ho tla phating ena.\"", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_girl should not be translated." }, { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Mohlomong motjha wa hao o ikutlwa a imetswe haholo ho sebetsana le bothata hanghang. Lemoha le ho bolela maikutlo a hae, mme le behelle nako kathoko hamorao letsatsing kapa bekeng eo ya hore le tshohle le ho rarolla bothata boo mmoho. Ka ho fa motjha wa hao nako, bothata bo ka rarollwa hantle.", + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", + "text": "Ana ke maemo a kotsi! Ka lehlohonolo, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba hopola hore na @global.w_stress_parent o ile a ba bolella eng: \n\n\"Ke amehile ka polokeho ya lona ho feta eng kapa eng. Haeba le ka ikutlwa le kwatile, kapa le tshohile, ka dinako tsohle le ntetsetse hore ke tlo le thusa, kapa le mpolelle taba eo. \n\nE reng feela 'TSHWARELO MOLEMONG WA POLOKEHO'. Kea le tshepisa ke tla leka sohle hore ke le thuse ebile nkeke ka le halefela – le haeba le ne le etsa ntho eo le sa lokelang ho e etsa.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato. O ile wa tobetsa @data.habit.breathe.in_text_title - o sebeditse!", + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", + "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke tshwarelo molemong wa polokeho. Ke kopa o tle o tlo nlata? Kannete ke hloka lifti ya ho ya lapeng.\"", "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Bekeng ena, sepheo sa hao e ne e le: Neng kapa neng ha o ikutlwa o imetswe kelellong kapa o tenehile, ho hema ka makgetlo a mahlano o hula moya le ho o lokolla pele o nka bohato.", + "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", + "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, tshwarelo molemong wa polokeho. Ke bona eka mekgotsi ya ka e mathateng. Ha ke batle ho emisa hoba motswalle wa bona, empa ke kgathatsehile. Na re ka bua?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" }, { - "SourceText": "How did this work out?", - "text": "Taba ye e tsamaile jwang?", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Ke taba tse monate, haholoholo dinakong tse jwaloka tsena tse boima. O kgalala.", "type": "template", "note": "" }, { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Sepheo sa hao e ne e boetse e le ho buisana le motjha wa hao ka tsela eo bobedi ba lona le ile la ikutlwa ka yona ha le imetswe maikutlong.", + "SourceText": "Today you will explore:", + "text": "Kajeno lena o tla ithuta:", "type": "template", "note": "" }, { - "SourceText": "How did this go?", - "text": "Taba ena e tsamaile jwang?", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", - "text": "Na o ile wa tobana le efe kapa efe ya diphephetso tsena ha o phetela motjha wa hao hore na o ikutlwa jwang?", + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Pale le puisano – e sa atlehang…\n* Pale le puisano – e atlehileng!\n* Pale ya Tshwarelo e Bolokehileng le puisano – e sebeditseng!\n* Dithulusi: Tsela ya ho laola seterese\nKGA MOYA - PHETA - BONTSHA\n* Ditshisinyo tsa boikwetliso ba lapeng", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about sharing how you feel with your teen?", - "text": "Ke eng e ileng ya o thatafalla ha o phetela motjha wa hao hore na o ikutlwa jwang?", + "SourceText": "Let's discuss what happened in this story.", + "text": "A re buisaneng ka se etsahetseng paleng ena.", "type": "template", "note": "" }, { - "SourceText": "I was afraid my teen would think I was weak.", - "text": "Ke ne ke tshohile hore motjha wa ka o tla nahana hore ke a fokola.", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "O nahana hore @global.w_stress_teen_boy_1 o ile a ikutlwa jwang? @global.w_stress_male_caregiver wa hae yena? Ho thweng ka @global.w_stress_girl?\n\n@global.w_stress_male_caregiver o ne a ka etsang ka tsela e fapaneng?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "text": "Ho pheta maikutlo, haholoholo a bohloko, ho behela motjha wa hao mohlala wa bohlokwa! Hantlentle ho tiisa ditho tsohle tsa lelapa, hobane le ka utlwisisa le ho tshehetsana habetere.", + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver a ka...", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "I felt uncomfortable about naming specific difficult feelings.", - "text": "Ke ne ke sa phutholoha ho toba maikutlo a boima ka mabitso.", + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* A lemohe hore na ke hobaneng ha a ikutlwa a na le seterese\n* A kge moya haholo mme a bue a kgobile matshwafo\n* A bontshe hore o utlwisisa maikutlo a motjha wa hae\n* A nahane ka ditharollo mmoho le @global.w_stress_teen_boy_1\n* A etse ho hong ho molemo mmoho le @global.w_stress_teen_boy_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "text": "Ho toba taba hase ho ba tala kapa ho se nahanele - hantlentle ho thusa batho ba bang ho o utlwisisa hantle ebile sena se thibela pherekano ka lapeng. Maikutlo a kang bohale le kgatello ya kelello ke karolo ya bophelo. Ntho feela eo re tlamehang ho e etsa ha re halefile kapa re imetswe kelellong ke ho laola maikutlo a rona hantle le ho phefumulohela hodimo ka makgetlo a mmalwa pele re arabela.", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "O KGE MOYA. Butle. Kgefutsa.", "type": "template", "note": "" }, { - "SourceText": "My teen felt uncomfortable when I shared my feelings.", - "text": "Motjha wa ka o ne a sa phutholoha ha ke mo bolella maikutlo a ka.", + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Pele o bua eng kapa eng, hema butle o kge moya mme o o tlohele ka makgetlo a mahlano. O tla theola moya, mme o tla ba le monyetla wa ho nahana.", "type": "template", "note": "" }, { - "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "text": "Kamehla ho qala ntho e ntjha ka lekgetlo la pele ho thata. Iphe nako ya ho tlwaela seo mme o tswele pele ho beha mohlala o motle ka ho lemoha le ho pheta maikutlo a hao. Ha nako e ntse e feta, motjha wa hao o tla ithuta ho etsa se tshwanang, ebile o tla utlwa hore ke motho ya ratwang le ya tsotellwang!", + "SourceText": "SHARE how you feel", + "text": "PHETA kamoo o ikutlwang kateng", "type": "template", "note": "" }, { - "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "text": "Ha ke pheta maikutlo a ka, motjha wa ka o ile a mpotsa dipotso, mme seo se ile sa etsa hore ke se ke ka phutholoha.", + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Ntho ena e thata. Boholo ba rona, re kile ra bolellwa hore re se lle, kapa ra bontsha bana ba rona maikutlo a rona. Empa kga moya o mongata mme o kgobile matshwafo o ba bolelle kamoo o ikutlwang kateng. Ba tla utlwisisa hantle, mme ba tla be ba ithute tsela ya ho sebetsana le seterese ho wena.", "type": "template", "note": "" }, { - "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "text": "Ho pheta maikutlo ho thusa motjha wa hao ho lemoha le ho ithuta ho etsa se tshwanang. O ka kgetha hore na o mo phetela dintlha tse kae ka boemo boo. Ho ho wena! Hape o ka kgetha ho araba dipotso hamorao ka hore, “Hona jwale ke ikutlwa ke halefile/imetswe maikutlong. Ako mphe nakonyana! Re ka bua ka taba eo mantsiboya”.", + "SourceText": "SHOW them you care", + "text": "Ba BONTSHE hore o a ba tsotella", "type": "template", "note": "" }, { - "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "text": "Ke ne ke imetswe kapa ke halefile hoo ke sitwang ho pheta maikutlo a ka – ke kgetha ho ba mong ha ke ikutlwa ka tsela eo.", + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Le yona e boima! Seterese se etsa hore re amehe ka rona. Empa batjha ba rona ba hloka tshehetso ya rona. Ba botse hore na ba ikutlwa jwang. Ba mamele mme o ba tshedise. Leka ho ba haka kapa o re ‘Kea utlwisisa’. Seo se ka fetola dintho tsohle.", "type": "template", "note": "" }, { - "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "text": "Ha ho phoso ha o sa batle ho bua ka nako eo. Fumana nako e nngwe ya ho itlhalosa hamorao, ha o ikutlwa o kokobetse, e le hore bohle ba ka utlwisisa.", + "SourceText": "SEEK the positive", + "text": "BATLA dintle", "type": "template", "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa). O ile wa tobetsa @data.habit.consequence.in_text_title - o entse hantle ka ho hopola!", + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "Na wena le motjha wa hao le nahana ka dintho tse ka thusang? Na le ka etsa ntho e ntle mmoho hore le tlose dikelello tsa lona nthong e bakang seterese?", "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Sepheo sa hao e ne e le ho qala sephetho sa ntho E LE NNGWE e molemo (motjha wa hao a jare boikarabelo) le sa E LE NNGWE e mpe (hore motjha wa hao o tlola melao ya lelapa).", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "Ha tsena tsohle di hloleha, kga moya. O ka atleha.", "type": "template", "note": "" }, { - "SourceText": "introduce a consequence together", - "text": "qalang sephetho hammoho", + "SourceText": "Looking after yourself matters.", + "text": "Ho bohlokwa ho itlhokomela.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "Na le bile le diphephetso dife kapa dife ha le leka ho qala sephetho mmoho?", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Ke botle! Ke thabela ho utlwa hore dintho di tsamaya hantle kajeno. Ke boikutlo bo molemo hakaakang!", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Ke eng e ileng ya le thatafalla ha o qala sephetho le motjha wa hao?", + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Ka dinako tse ding di tsamaya hantle. Ka dinako tse ding ha ho jwalo. Mme ka dinako tse ding ha re tsebe hantle hore na re ikutlwa jwang... mme le moo ho lokile! Hopola hore ha o mong.", "type": "template", "note": "" }, { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Ke ile ka halefa haholo ha motjha wa ka a tlola molao.", - "type": "template", + "SourceText": "My Favourite Activities", + "text": "Dintho Tseo ke Ratang ho di Etsa", + "type": "global", "note": "" }, { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Ha re kgefutsa pele re araba, seo se re thusa ho kgoba matshwafo le ho araba hantle.\n\nNakong e tlang ha motjha wa hao a o halefisa, leka ho nka kgefu pele. Le ho phefumoloha haholo ho ka tlisa phapang e kgolo!", - "type": "template", + "SourceText": "All Activities", + "text": "Mesebetsi Yohle", + "type": "global", "note": "" }, { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "Motjha wa ka o ile a nkgalefela haholo kamora hore ke mo jarise ditlamorao.", - "type": "template", + "SourceText": "Random Activity", + "text": "Mesebetsi e Etswang ka Tshohanyetso", + "type": "global", "note": "" }, { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Ha motjha wa hao a o halefela, o ka nna wa tlameha ho tsamaya ho fihlela bobedi ba lona le theotse moya.\n\nHlahloba hore na ditlamorao tseo o mo bolellang tsona di lokile ebile dia utlwahala. Mamela tlhaloso ya motjha wa hao, mme o tiise hore o lokisetsa “Tshwarelo ka Lebaka la Polokeho” ha a tlotse molao e le hore a dule a sireletsehile.", - "type": "template", + "SourceText": "This Week's Activity", + "text": "Mosebetsi wa Beke Ena", + "type": "global", "note": "" }, { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Ke ile ka mo bolella ditlamorao ntle le ho di tshohla pele le motjha wa ka.", - "type": "template", + "SourceText": "Chat Together", + "text": "Qoqang Mmoho", + "type": "global", "note": "" }, { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "Na o ka fana ka ditlamorao kapa sephetho sa ketso haeba e ipheta? Ha re beha ditlamorao mmoho le batjha ba rona, ditlamorao e tla ba tse utlwahalang haholo, mme batjha ba rona ba tla ikemisetsa le ho feta ho latela molao ebile ba tla be ba kgona ho o latela.", - "type": "template", + "SourceText": "Do Together", + "text": "Etsang Mmoho", + "type": "global", "note": "" }, { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Ke lebetse ho phethisa ditlamorao.", - "type": "template", - "note": "" + "SourceText": "Your @global.parent_app Code", + "text": "Khoutu ya hao ya @global.parent_app", + "type": "global", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Kaofela re etsa diphoso! Ha re jarisa bana ba rona ditlamorao re sa fetofetohe, ho na le menyetla e mengata ya hore bana ba rona ba tla kgetha ho itshwara hantle nakong e tlang.", - "type": "template", + "SourceText": "Terms & Conditions", + "text": "Lipallo le lipehelo", + "type": "global", "note": "" }, { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Esita leha ho na le ditlamorao, motjha wa ka o ntse a sa latele molao.", - "type": "template", + "SourceText": "Privacy Policy", + "text": "Leano la Lekunutu", + "type": "global", "note": "" }, { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "Ha motjha wa hao a tswela pele ho tlola melao, o ka nna wa tlameha ho qeta nako e ngata le yena le etsa dintho tse molemo.\n\nLeka ho tswela pele ka dintho tse ding tseo o ikemiseditseng ho di fihlella – jwaloka ho itlhokomela, nako ya boinotshing, le pabatso. Tsebo ena kaofela e tla thusa motjha wa hao hore a ikutlwe a ratwa haholo ebile a sireletsehile… mme seterese sa hao se tla hafoha!", - "type": "template", + "SourceText": "Real-world ideas", + "text": "Dikeletso tsa maemo a sebele bophelong", + "type": "global", "note": "" }, { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Re ile ra theha ditlamorao tse bosula feela, ho hang ho ne ho se na tse ntle.", - "type": "template", + "SourceText": "Ideas", + "text": "Dikeletso", + "type": "global", "note": "" }, { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Ka dinako tse ding ho ka ba thata ho nahana ka ditlamorao tse ntle. Ditlamorao tse ntle di tla kgothalletsa motjha wa hao ho jara boikarabelo haholo, mme o tla bona phapang!", - "type": "template", + "SourceText": "Ideas from other families...", + "text": "Dikeletso tse tswang malapeng a mang...", + "type": "global", "note": "" }, { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "Motjha wa ka o ile a sisinya hore a shapuwe e le ditlamorao tse bohloko.", - "type": "template", + "SourceText": "Challenges & solutions", + "text": "Diphephetso le ditharollo", + "type": "global", "note": "" }, { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Batjha ba ka tlwaela ho bona ho shapuwa e le tsona feela ditlamorao tse ka kgonehang tsa ho tlola melao.\n\nQalang ditlamorao tse ding le kgutsitse mmoho tse ka ba thusang ho utlwisisa hore ba entse ntho e fosahetseng. Dintho tsena di tla atleha haholo ebile di tla beha mehlala e metle!", - "type": "template", + "SourceText": "Submit", + "text": "Romela", + "type": "global", "note": "" }, { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Sepheo sa hao e ne e le ho etsa molao O LE MONG le motjha wa hao bekeng ena.", - "type": "template", + "SourceText": "Find out more", + "text": "Ithute haholwanyane", + "type": "global", "note": "" }, { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "O entse hantle ka sena! Ha ho bonolo, mme batjha ba ke ke ba latela melao ka dinako tsohle, empa ho etsa melao e seng mekae ya bohlokwa mmoho ke tsela e ntle ya ho qala. Ipabatse ka ho etsa sena - re motlotlo ka wena!", - "type": "template", - "note": "" - }, - { - "SourceText": "make rules with their teens", - "text": "etsa melao le batjha ba bona", - "type": "template", - "note": "" - }, - { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "Na le bile le diphephetso dife kapa dife ha le leka ho etsa melao mmoho?", - "type": "template", - "note": "" - }, - { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Ke eng e ileng ya o thatafalla ha o etsa molao le motjha wa hao?", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Nna le motjha wa ka re ne re sa dumellane ka molao.", - "type": "template", - "note": "" - }, - { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Nahana hore na molao oo ke o utlwahalang. Na motjha wa hao a ka o latela? Ha le etsa molao le le lelapa, ho a thusa ho nahana ka motjha wa hao, hore na o dilemo di kae, le hore na ke eng ya bohlokwa ho yena.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "Motjha wa ka a ka nna a nka ho sa loka hore yena o lokela ho latela molao oo nna ke sa o lateleng.", - "type": "template", - "note": "" - }, - { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Ka dinako tsohle re lokela ho hopola hore bana ba ithuta hantle ho rona. Ha re latela melao haholo, le bona ba tla latela melao.\n\nO ka fetola molao ho tiisa hore ho ka kgoneha hore bohle ba o latele, o nahanne ka boikarabelo ba hao le boikarabelo ba motjha wa hao (ka mohlala mesebetsi ya sekolong kapa ya boiphediso).", - "type": "template", - "note": "" - }, - { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Ke ile ka ikutlwa ke sa phutholoha, hobane ke nka hore ke nna ya lokelang ho etsa molao eseng motjha wa ka.", - "type": "template", + "SourceText": "Show me how", + "text": "Mpontshe tsela", + "type": "global", "note": "" }, { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "Molekane wa ka o ile a ikutlwa a sa phutholoha, hobane o nka hore ke yena ya lokelang ho etsa molao, eseng motjha wa ka.", - "type": "template", + "SourceText": "Tell me more!", + "text": "Mpolelle haholwanyane!", + "type": "global", "note": "" }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Ha re etsa melao hammoho le batjha ba rona, seo se thusa ditho tsa lelapa ho utlwisisana habetere. Etlaba melao e utlwahalang le ho feta mme batjha ba tla ikemisetsa ho latela melao ebile ba tla kgona ho e latela.", - "type": "template", + "SourceText": "Let's go!", + "text": "A re ye!", + "type": "global", "note": "" }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Ha re leka ho beha molao, re ne re pheha kgang.", - "type": "template", + "SourceText": "Check it out!", + "text": "E tshwaye!", + "type": "global", "note": "" }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "Na motjha wa hao o ne a thabile ha le leka ho beha molao? Ho molemo haholo ho beha melao ha boemo bo kokobetse. Haeba wena kapa motjha wa hao le kgathetse kapa le lapile, ho molemo ho buisana ka melao hamorao.", - "type": "template", + "SourceText": "Done", + "text": "Qetile", + "type": "global", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Ha re kgone ho imatahanya le molao.", - "type": "template", + "SourceText": "Next", + "text": "Latelang", + "type": "global", "note": "" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Molao o lokela ho toba taba mme ebe ntho e kgonehang. Tiisa hore o na le molao o ka bolokwang o le bonolo, jwaloka ho ja dijo mmoho ka Sontaha se seng le se seng ho fapana le bosiu bo bong le bo bong. Na o tlameha ho fetofetoha le molao?", - "type": "template", + "SourceText": "Previous", + "text": "Fetileng", + "type": "global", "note": "" }, { - "SourceText": "Mother", - "text": "Mme", + "SourceText": "Save", + "text": "Boloka", "type": "global", "note": "" }, { - "SourceText": "Father", - "text": "Ntate", + "SourceText": "Start", + "text": "Qala", "type": "global", "note": "" }, { - "SourceText": "TikTok", - "text": "TikTok", + "SourceText": "Skip", + "text": "Feta", "type": "global", "note": "" }, { - "SourceText": "WhatsApp", - "text": "Whatsapp", + "SourceText": "Continue", + "text": "Tsoela pele", "type": "global", "note": "" }, { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "O hloka phihlello ya inthanete hore o shebelle video ena. Ho fokotsa tshebediso ya datha, shebella kapa daonlouda video ena ha o na le WiFi.", + "SourceText": "Finish with a song", + "text": "Qetile ka pina", "type": "global", "note": "" }, { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "O hloka phihlello ya inthanete ho kena diwebosaeteng tsena. Ho fokotsa tshebediso ya datha, kena diwebosaeteng tsena ha o na le WiFi.", + "SourceText": "Goodbye!", + "text": "Ke hantle!", "type": "global", "note": "" }, { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "O hloka phihlello ya inthanete hore o romele molaetsa ona. Ho fokotsa tshebediso ya datha, romela molaetsa ona ha o na le WiFi.", + "SourceText": "No gadget use the next day", + "text": "Ha ho na bajete e sebediswang hosane", "type": "global", "note": "" }, { - "SourceText": "COVID", - "text": "COVID", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Nka metsotso e 5 o kgefuditse karolong e ka thoko ya kamore", "type": "global", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Kamohelo le ho Itlhokomela", + "SourceText": "Write a letter of apology", + "text": "Ngola lengolo la ho kopa tshwarelo", "type": "global", "note": "" }, { - "SourceText": "Self-Care", - "text": "Ho Itlhokomela", + "SourceText": "Cannot see friends the next day", + "text": "O keke wa bona metswalle hosane", "type": "global", "note": "" }, { - "SourceText": "How to add self-care", - "text": "Tsela ya ho eketsa ho itlhokomela", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "O keke wa bapala ka founo kamora tinare (kapa horeng e tlang)", "type": "global", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Nako ya Boinotshing", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Nako e ngata le metswalle mafelobeke (hora e 1)", "type": "global", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Kamoo nako ya boinotshing e sebediswang kateng", + "SourceText": "Cooking teen’s favourite meal", + "text": "Ho pheha dijo tseo motjha a di ratang", "type": "global", "note": "" }, { - "SourceText": "Praise", - "text": "Pabatso", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Nako e ngata ka founo kamora tinare (30 mets)", "type": "global", "note": "" }, { - "SourceText": "How to praise", - "text": "Tsela ya ho babatsa", + "SourceText": "Watching teen’s T.V. show together", + "text": "Ho shebella lenaneo la motjha la T.V. mmoho", "type": "global", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Ditaelo tsa se Tshwanelang ho Etswa", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Nako e eketsehileng ya boinotshing ka Sontaha (30 mets)", "type": "global", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Tsela ya ho fana ka ditaelo tsa se tshwanelang ho etswa", + "SourceText": "Take a deep breath and pause before responding", + "text": "Kga moya o mongata mme o kgefutse pele o araba", "type": "global", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Ho Laola Seterese", + "SourceText": "Listen to your teen", + "text": "Mamela motjha wa hao", "type": "global", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Tsela ya ho laola seterese", + "SourceText": "Praise your teen for sharing", + "text": "Babatsa motjha wa hao ka hore a o phetele", "type": "global", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Dibajete tsa Lelapa", + "SourceText": "Use problem solving skills", + "text": "Sebedisa tsebo ya ho rarolla bothata", "type": "global", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Tsela ya ho bajeta le ho baballa tjhelete", + "SourceText": "Work out where you can get help", + "text": "Hlahloba hore na o ka fumana thuso hokae", "type": "global", "note": "" }, { - "SourceText": "Rules", - "text": "Melao", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "O hloka phihlello ya inthanete hore o shebelle video ena. Ho fokotsa tshebediso ya datha, shebella kapa daonlouda video ena ha o na le WiFi.", "type": "global", "note": "" }, { - "SourceText": "How to create rules", - "text": "Tsela ya ho theha melao", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "O hloka phihlello ya inthanete ho kena diwebosaeteng tsena. Ho fokotsa tshebediso ya datha, kena diwebosaeteng tsena ha o na le WiFi.", "type": "global", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Ditlamorao tse Fanwang ho Theotswe Moya", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "O hloka phihlello ya inthanete hore o romele molaetsa ona. Ho fokotsa tshebediso ya datha, romela molaetsa ona ha o na le WiFi.", "type": "global", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Tsela ya ho fana ka ditlamorao ho theotswe moya", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Bokudi bo tshabehang kapa lefu la motswalle kapa setho sa lelapa", "type": "global", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ho Rarolla Mathata", + "SourceText": "Robbery", + "text": "Ho tshwarwa poho", "type": "global", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Tsela ya ho rarolla mathata", + "SourceText": "Flooding", + "text": "Dikgohola", "type": "global", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Polokeho ya Batjha", + "SourceText": "Political violence", + "text": "Diketso tsa dikgoka tsa dipolotiki", "type": "global", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Tsela ya ho tiisa hore batjha ba bolokehile", + "SourceText": "Losing my job", + "text": "Ha ke fellwa ke mosebetsi", "type": "global", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Ho Sebetsana le Tsietsi", + "SourceText": "Pandemic (COVID-19)", + "text": "Sewa (COVID-19)", "type": "global", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Tsela ya ho sebetsana le tsietsi", + "SourceText": "ParentApp", + "text": "ParentApp", "type": "global", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ho Keteka le Mehato e Latelang", + "SourceText": "Weekly Workshops", + "text": "Diwekshopo tsa Beke le Beke", "type": "global", "note": "" }, { - "SourceText": "How to support each other", - "text": "Tsela ya ho tshehetsana", + "SourceText": "Weekly Workshop", + "text": "Wekshopo ya Beke le Beke", "type": "global", "note": "" }, { - "SourceText": "Home Practice", - "text": "Boikwetliso ba Lapeng", + "SourceText": "Weekly Workshop Options", + "text": "Dikgetho tsa Diwekshopo tsa Beke le Beke", "type": "global", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Bua ka @global.home_practice", + "SourceText": "ParentPoints", + "text": "ParentPoints", "type": "global", - "note": "The string @global.home_practice should not be translated." + "note": "" }, { - "SourceText": "Home Practice Review", - "text": "Tlhahlobo ya Boikwetliso ba Lapeng", + "SourceText": "ParentPoint", + "text": "ParentPoint", "type": "global", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "A re bueng ka hore na boikwetliso ba lona ba lapeng bo tsamaile jwang bekeng ena.", + "SourceText": "Parent Library", + "text": "Laebrari ya Motswadi", "type": "global", "note": "" }, { - "SourceText": "In my group", - "text": "Sehlopheng sa ka", + "SourceText": "In-Week Messages", + "text": "Melaetsa ya Beke Ena", "type": "global", "note": "" }, { - "SourceText": "By myself", - "text": "Ke le mong", + "SourceText": "To solve this challenge, I will try to:", + "text": "Ho rarolla phephetso ena, ke tla leka ho:", "type": "global", "note": "" }, { - "SourceText": "awesome parent", - "text": "motswadi wa popota", + "SourceText": "Do you want to try one of the following things?", + "text": "Na o batla ho leka e nngwe ya dintho tse latelang?", "type": "global", "note": "" }, { - "SourceText": "friends", - "text": "metswalle", + "SourceText": "My challenge is not listed here.", + "text": "Phephetso ya ka ha e a thathamiswa mona.", "type": "global", "note": "" }, @@ -8934,1929 +8856,2271 @@ "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Ho rarolla phephetso ena, ke tla leka ho:", + "SourceText": "COVID", + "text": "COVID", "type": "global", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Na o batla ho leka e nngwe ya dintho tse latelang?", + "SourceText": "Make me smile", + "text": "Etsa hore ke bososele", "type": "global", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "Phephetso ya ka ha e a thathamiswa mona.", + "SourceText": "Get me going", + "text": "Nthuse ke tswele pele", "type": "global", "note": "" }, { - "SourceText": "ParentApp", - "text": "ParentApp", + "SourceText": "My Favourite Relaxes", + "text": "Ditsela Tseo ke di Ratang tsa ho Kgatholoha", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshops", - "text": "Diwekshopo tsa Beke le Beke", + "SourceText": "All Relaxes", + "text": "Ditsela Tsohle tsa ho Kgatholoha", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop", - "text": "Wekshopo ya Beke le Beke", + "SourceText": "Random Relax", + "text": "Ho Kgatholoha ho sa Rerwang", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop Options", - "text": "Dikgetho tsa Diwekshopo tsa Beke le Beke", + "SourceText": "This Week's Relax", + "text": "Boikgathollo ba Bekeng Ena", "type": "global", "note": "" }, { - "SourceText": "ParentPoints", - "text": "ParentPoints", + "SourceText": "Listen & Relax (1-2 minutes)", + "text": "Mamela mme o Kgatholohe (metsotso e 1-2)", "type": "global", "note": "" }, { - "SourceText": "ParentPoint", - "text": "ParentPoint", + "SourceText": "Listen & Relax (3-5 minutes)", + "text": "Mamela mme o Kgatholohe (metsotso e 3-5)", "type": "global", "note": "" }, { - "SourceText": "Parent Library", - "text": "Laebrari ya Motswadi", + "SourceText": "Do & Relax (5-10 minutes)", + "text": "Etsa mme o Kgatholohe (metsotso e 5-10)", "type": "global", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Melaetsa ya Beke Ena", + "SourceText": "At home", + "text": "Lapeng", "type": "global", "note": "" }, { - "SourceText": "Real-world ideas", - "text": "Dikeletso tsa maemo a sebele bophelong", + "SourceText": "Buy things we can sell", + "text": "Reka dintho tseo re ka di rekisang", "type": "global", "note": "" }, { - "SourceText": "Ideas", - "text": "Dikeletso", + "SourceText": "At a bank", + "text": "Bankeng", "type": "global", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Dikeletso tse tswang malapeng a mang...", + "SourceText": "In a savings group", + "text": "Sehlopheng se baballang tjhelete", "type": "global", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Diphephetso le ditharollo", + "SourceText": "Teens completing school/university", + "text": "Batjha ba qetang sekolong/yunivesithing", "type": "global", "note": "" }, { - "SourceText": "Submit", - "text": "Romela", + "SourceText": "Building/expanding a house for my family", + "text": "Ho haha/ho atolosa ntlo ya lelapa la ka", "type": "global", "note": "" }, { - "SourceText": "Find out more", - "text": "Ithute haholwanyane", + "SourceText": "Starting a business", + "text": "Ho qala kgwebo", "type": "global", "note": "" }, { - "SourceText": "Show me how", - "text": "Mpontshe tsela", + "SourceText": "Buying a car for my family", + "text": "Ho rekela lelapa la ka koloi", "type": "global", "note": "" }, { - "SourceText": "Tell me more!", - "text": "Mpolelle haholwanyane!", + "SourceText": "Walk to the shops", + "text": "Lebang Dishopong", "type": "global", "note": "" }, { - "SourceText": "Let's go!", - "text": "A re ye!", + "SourceText": "Get water together", + "text": "Tsa mo kgang metsi mmoho", "type": "global", "note": "" }, { - "SourceText": "Check it out!", - "text": "E tshwaye!", + "SourceText": "Do a chore together", + "text": "Phethang mesebetsi mmoho", "type": "global", "note": "" }, { - "SourceText": "Done", - "text": "Qetile", + "SourceText": "Prepare dinner", + "text": "Lokisetsang dijo tsa tinare", "type": "global", "note": "" }, { - "SourceText": "Next", - "text": "Latelang", + "SourceText": "Eat breakfast/lunch/dinner", + "text": "Jang dijo tsa hoseng/tsa motshehare/tsa tinare", "type": "global", "note": "" }, { - "SourceText": "Previous", - "text": "Fetileng", + "SourceText": "Have tea after school", + "text": "O nwe tee ha sekolo se tswa", "type": "global", "note": "" }, { - "SourceText": "Save", - "text": "Boloka", + "SourceText": "Watch a T.V. show", + "text": "Shebella lenaneo la T.V", "type": "global", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "Review homework", + "text": "Hlahloba homeweke", "type": "global", "note": "" }, { - "SourceText": "Skip", - "text": "Feta", + "SourceText": "Chat before bedtime", + "text": "Qoqang pele le ilo robala", "type": "global", "note": "" }, { - "SourceText": "Continue", - "text": "Tsoela pele", + "SourceText": "Play a game/sport", + "text": "Bapalang game/papadi", "type": "global", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Qetile ka pina", + "SourceText": "Tap and type", + "text": "Tobetsa mme o thaepe", "type": "global", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Ke hantle!", + "SourceText": "Tap and choose", + "text": "Tobetsa mme o kgethe", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_app Code", - "text": "Khoutu ya hao ya @global.parent_app", - "type": "global", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Terms & Conditions", - "text": "Lipallo le lipehelo", + "SourceText": "Type your own", + "text": "Thaepa taba ya hao", "type": "global", "note": "" }, { - "SourceText": "Privacy Policy", - "text": "Leano la Lekunutu", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Ke utlwisisa sena. O se mpontshe molaetsa ona hape.", "type": "global", "note": "" }, { - "SourceText": "Make me smile", - "text": "Etsa hore ke bososele", + "SourceText": "Home Practice", + "text": "Boikwetliso ba Lapeng", "type": "global", "note": "" }, { - "SourceText": "Get me going", - "text": "Nthuse ke tswele pele", + "SourceText": "Talk about @global.home_practice", + "text": "Bua ka @global.home_practice", "type": "global", - "note": "" + "note": "The string @global.home_practice should not be translated." }, { - "SourceText": "My Favourite Relaxes", - "text": "Ditsela Tseo ke di Ratang tsa ho Kgatholoha", + "SourceText": "Home Practice Review", + "text": "Tlhahlobo ya Boikwetliso ba Lapeng", "type": "global", "note": "" }, { - "SourceText": "All Relaxes", - "text": "Ditsela Tsohle tsa ho Kgatholoha", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "A re bueng ka hore na boikwetliso ba lona ba lapeng bo tsamaile jwang bekeng ena.", "type": "global", "note": "" }, { - "SourceText": "Random Relax", - "text": "Ho Kgatholoha ho sa Rerwang", + "SourceText": "In my group", + "text": "Sehlopheng sa ka", "type": "global", "note": "" }, { - "SourceText": "This Week's Relax", - "text": "Boikgathollo ba Bekeng Ena", + "SourceText": "By myself", + "text": "Ke le mong", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (1-2 minutes)", - "text": "Mamela mme o Kgatholohe (metsotso e 1-2)", + "SourceText": "awesome parent", + "text": "motswadi wa popota", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (3-5 minutes)", - "text": "Mamela mme o Kgatholohe (metsotso e 3-5)", + "SourceText": "friends", + "text": "metswalle", "type": "global", "note": "" }, { - "SourceText": "Do & Relax (5-10 minutes)", - "text": "Etsa mme o Kgatholohe (metsotso e 5-10)", - "type": "global", - "note": "" + "SourceText": "Welcome to @global.parent_app", + "text": "Rea o amohela ho @global.parent_app", + "type": "tour", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My Favourite Activities", - "text": "Dintho Tseo ke Ratang ho di Etsa", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  o lokelwa ke ho utlwa monate, hape o lokelwa ke ho ba le di kamano tse ntle tsa lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e mona ho o tshehetsa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  mona ke mokhoa oa ho sebelisa app ena:

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string

                                                                                                                                                                                  @global.parent_app should not be translated." }, { - "SourceText": "All Activities", - "text": "Mesebetsi Yohle", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Konopo ena e kgolo ena ea @global.weekly_workshops e ho isa lithupelong tsa hau.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops. should not be translated." }, { - "SourceText": "Random Activity", - "text": "Mesebetsi e Etswang ka Tshohanyetso", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  beke engwe le engwe o tlo notlolla thupelo e ncha e shebaneng le tsebo e ncha ea botswadi.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Mosebetsi wa Beke Ena", - "type": "global", + "SourceText": "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Ho hlahella konopo e sedikadikwe ha thupelo e ntjha e o loketse.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Chat Together", - "text": "Qoqang Mmoho", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Bokhoni bo bong le bo bong bo bocha ba batsoali bo tla le ntlha e tswang ho @global.parent_point.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_point.

                                                                                                                                                                                  should not be translated." }, { - "SourceText": "Do Together", - "text": "Etsang Mmoho", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Sebedisa @global.parent_points ho keteka likatleho tsa hao!

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Tap and type", - "text": "Tobetsa mme o thaepe", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Hlahloba boikhathollo bo eketshehileng le mesebetsi ea botsoali!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hape o ka na fumana malebela a botsoali a potlakileng le tshehetso ea tekheniki.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Tobetsa mme o kgethe", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Sheba haufi le uena! Kae kapa kae moo o qalang, taba feela ea hore o mona e bontsha hore oa tsotella.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Type your own", - "text": "Thaepa taba ya hao", - "type": "global", - "note": "" + "SourceText": "Go to the @global.weekly_workshops", + "text": "Leba ho @global.weekly_workshops", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Ke utlwisisa sena. O se mpontshe molaetsa ona hape.", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa konopo ya sekrine se qalang hore o lebe ho @global.weekly_workshops

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Walk to the shops", - "text": "Lebang Dishopong", - "type": "global", - "note": "" + "SourceText": "Go to the @global.weekly_workshop_options", + "text": "Leba ho @global.weekly_workshop_options", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Get water together", - "text": "Tsa mo kgang metsi mmoho", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa konopo ho leba ho @global.weekly_workshop_options

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Do a chore together", - "text": "Phethang mesebetsi mmoho", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Sebedisa @global.weekly_workshop_options ho fetola diseting tsa wekshopo ya hao.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Prepare dinner", - "text": "Lokisetsang dijo tsa tinare", - "type": "global", + "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  O ka fetola lebitso la hao mona.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Eat breakfast/lunch/dinner", - "text": "Jang dijo tsa hoseng/tsa motshehare/tsa tinare", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Ena e bontsha letsatsi la beke leo @global.weekly_workshop ya hao e ntjha e tla fumaneha ka lona.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Haeba o batla ho le fetola, tobetsa mona.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Have tea after school", - "text": "O nwe tee ha sekolo se tswa", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Ena e bontsha @global.weekly_workshop eo hona jwale o leng ho yona.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Watch a T.V. show", - "text": "Shebella lenaneo la T.V", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  O ka fetola mona ebang o batla ho etsa @global.weekly_workshops tsa hao le le sehlopha kapa o le mong.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Review homework", - "text": "Hlahloba homeweke", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa mona ho fetola lebitso la sehlopha sa hao.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Chat before bedtime", - "text": "Qoqang pele le ilo robala", - "type": "global", + "SourceText": "Reflect on the positive", + "text": "Nahana ka dintle", + "type": "data_list", "note": "" }, { - "SourceText": "Play a game/sport", - "text": "Bapalang game/papadi", - "type": "global", + "SourceText": "Check-in chat", + "text": "Kenella moqoqong", + "type": "data_list", "note": "" }, { - "SourceText": "Teens completing school/university", - "text": "Batjha ba qetang sekolong/yunivesithing", - "type": "global", + "SourceText": "Dream Travel", + "text": "Leeto la Ditoro", + "type": "data_list", "note": "" }, { - "SourceText": "Building/expanding a house for my family", - "text": "Ho haha/ho atolosa ntlo ya lelapa la ka", - "type": "global", + "SourceText": "Famous Party", + "text": "Phathi e Tummeng", + "type": "data_list", "note": "" }, { - "SourceText": "Starting a business", - "text": "Ho qala kgwebo", - "type": "global", + "SourceText": "Two truths, one lie", + "text": "Dinnete tse pedi, leshano le le leng", + "type": "data_list", "note": "" }, { - "SourceText": "Buying a car for my family", - "text": "Ho rekela lelapa la ka koloi", - "type": "global", + "SourceText": "Time Machine", + "text": "Motjhine wa Nako", + "type": "data_list", "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Bokudi bo tshabehang kapa lefu la motswalle kapa setho sa lelapa", - "type": "global", + "SourceText": "Superpowers", + "text": "Matla a Maholo", + "type": "data_list", "note": "" }, { - "SourceText": "Robbery", - "text": "Ho tshwarwa poho", - "type": "global", + "SourceText": "Just a friendly chat", + "text": "Moqoqo o botswalle feela", + "type": "data_list", "note": "" }, { - "SourceText": "Flooding", - "text": "Dikgohola", - "type": "global", + "SourceText": "The Interrupter", + "text": "Mositisi", + "type": "data_list", "note": "" }, { - "SourceText": "Political violence", - "text": "Diketso tsa dikgoka tsa dipolotiki", - "type": "global", + "SourceText": "Three options", + "text": "Dikgetho tse tharo", + "type": "data_list", "note": "" }, { - "SourceText": "Losing my job", - "text": "Ha ke fellwa ke mosebetsi", - "type": "global", + "SourceText": "Yes, No or Maybe", + "text": "E, Tjhe kapa Mohlomong", + "type": "data_list", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Sewa (COVID-19)", - "type": "global", + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Papadi ya kgopolo - \"Ka Moqebelo...\"", + "type": "data_list", "note": "" }, { - "SourceText": "At home", - "text": "Lapeng", - "type": "global", + "SourceText": "Make up a story", + "text": "Qapa pale", + "type": "data_list", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Reka dintho tseo re ka di rekisang", - "type": "global", + "SourceText": "Co-chef", + "text": "Seapehi-mmoho", + "type": "data_list", "note": "" }, { - "SourceText": "At a bank", - "text": "Bankeng", - "type": "global", + "SourceText": "Dance moves", + "text": "Ditsela tsa ho tantsha", + "type": "data_list", "note": "" }, { - "SourceText": "In a savings group", - "text": "Sehlopheng se baballang tjhelete", - "type": "global", + "SourceText": "Mirror", + "text": "Seipone", + "type": "data_list", "note": "" }, { - "SourceText": "No gadget use the next day", - "text": "Ha ho na bajete e sebediswang hosane", - "type": "global", + "SourceText": "What's new?", + "text": "Tse ntjha ke dife?", + "type": "data_list", "note": "" }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Nka metsotso e 5 o kgefuditse karolong e ka thoko ya kamore", - "type": "global", + "SourceText": "Get active!", + "text": "Eba mahlahahlaha!", + "type": "data_list", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Ngola lengolo la ho kopa tshwarelo", - "type": "global", + "SourceText": "Name that tune", + "text": "Bolela morethetho ona", + "type": "data_list", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "O keke wa bona metswalle hosane", - "type": "global", + "SourceText": "Pass the snap", + "text": "Fetisa senepe", + "type": "data_list", "note": "" }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "O keke wa bapala ka founo kamora tinare (kapa horeng e tlang)", - "type": "global", + "SourceText": "Family workout", + "text": "Boikwetliso ba lelapa", + "type": "data_list", "note": "" }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Nako e ngata le metswalle mafelobeke (hora e 1)", - "type": "global", + "SourceText": "Make housework fun", + "text": "Etsa mosebetsi wa lapeng hamonate", + "type": "data_list", "note": "" }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Ho pheha dijo tseo motjha a di ratang", - "type": "global", + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Mesebetsi ya lapeng ha e monate… kapa jwang? O ka etsa hore ebe papadi!", + "type": "data_list", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Nako e ngata ka founo kamora tinare (30 mets)", - "type": "global", + "SourceText": "What are you doing?", + "text": "O etsang?", + "type": "data_list", "note": "" }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Ho shebella lenaneo la motjha la T.V. mmoho", - "type": "global", + "SourceText": "Here is a fun game you can do with your family!", + "text": "Papadi e monate ke ena eo o ka e etsang le lelapa la hao!", + "type": "data_list", "note": "" }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Nako e eketsehileng ya boinotshing ka Sontaha (30 mets)", - "type": "global", + "SourceText": "Crazy chicken", + "text": "Tantshi ya dikgoho tse hlanyang", + "type": "data_list", "note": "" }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Kga moya o mongata mme o kgefutse pele o araba", - "type": "global", + "SourceText": "Help yourself cope", + "text": "ithuse ho sebetsana", + "type": "data_list", "note": "" }, { - "SourceText": "Listen to your teen", - "text": "Mamela motjha wa hao", - "type": "global", + "SourceText": "Help your teen cope", + "text": "Thusa mocha oa hao ho sebetsana le boemo boo", + "type": "data_list", "note": "" }, { - "SourceText": "Praise your teen for sharing", - "text": "Babatsa motjha wa hao ka hore a o phetele", - "type": "global", + "SourceText": "Practical steps", + "text": "Mehato e sebetsang", + "type": "data_list", "note": "" }, { - "SourceText": "Use problem solving skills", - "text": "Sebedisa tsebo ya ho rarolla bothata", - "type": "global", + "SourceText": "How to talk to my teen", + "text": "Mokhoa oa ho bua le mocha oa ka", + "type": "data_list", "note": "" }, { - "SourceText": "Work out where you can get help", - "text": "Hlahloba hore na o ka fumana thuso hokae", - "type": "global", + "SourceText": "Steps to deal with news", + "text": "Mehato ea ho sebetsana le litaba", + "type": "data_list", "note": "" }, { - "SourceText": "Welcome to @global.parent_app", - "text": "Rea o amohela ho @global.parent_app", - "type": "tour", - "note": "The string @global.parent_app should not be translated." + "SourceText": "How can I help my teen choose well?", + "text": "Nka thusa joang mocha oa ka ho khetha hantle?", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Rea o amohela ho @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O tshwanela ho ikutlwa hantle, le ho ba le dikamano tse thabileng tsa lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e tla tshehetsa wena le lelapa la hao ka ditsela tse tharo:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" + "SourceText": "What influences teen decisions?", + "text": "Ke eng e susumetsang liqeto tsa bacha?", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Konopo ena e kgolo e o isa ho @global.weekly_workshops tsa hao

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Hang ka beke wekshopo e ntjha e tla be e lokile bakeng sa hao - nako le nako ha o ameha ka tsebo e fapaneng ya botswadi. E tobetse ho qala wekshopo ya hao ya pele!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "How does my teen feel?", + "text": "Mocha oa ka o ikutloa joang?", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ho hlahella konopo e sedikadikwe ha @global.weekly_workshop e ntjha e o loketse bakeng sa hao.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Changing negative to positive", + "text": "Ho fetola linto tse mpe ho tse ntle", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo ena e kgolo hore o fumane sekrine sa hao sa @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Latella katleho ya hao ntlheng ya ho itlhokomela le botswadi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Sheba kgatelopele ya hao.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Keteka dintho tseo o di finyelletseng letsatsi le letsatsi!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." + "SourceText": "Relax", + "text": "Kgatholoha", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Konopo ena e o isa ho @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  E phuthetsoe ka lisebelisoa tseo u li hlokang neng kapa neng ha u batla.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ho fihlella hanghang ho thusa likarolo ka @data.parent_centre.essential_tools bakeng sa bokgoni bo bong le bo bong.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Lintlha tse ling le lisebelisoa tsa lehae.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.essential_tools" + "SourceText": "**Relax** @global.parent_point", + "text": "**Kgatholoha** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ho sa natswe hore na o qala jwang, taba feela ya hore o mona e bontsha hore o a tsotella.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Doing a relaxation activity", + "text": "Ho etsa ntho e o kgathollang", + "type": "data_list", "note": "" }, { - "SourceText": "Go to the @global.weekly_workshops", - "text": "Leba ho @global.weekly_workshops", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o etsa ntho e o kgathollang, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo ya sekrine se qalang hore o lebe ho @global.weekly_workshops

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Treat yourself well", + "text": "Itlhokomele hantle", + "type": "data_list", + "note": "" }, { - "SourceText": "Go to the @global.weekly_workshop_options", - "text": "Leba ho @global.weekly_workshop_options", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "**Itlhokomele hantle** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo ho leba ho @global.weekly_workshop_options

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Doing something they like for themselves", + "text": "Ho iketsetsa ntho eo a e ratang", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Sebedisa @global.weekly_workshop_options ho fetola diseting tsa wekshopo ya hao.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o itlhokomela hantle, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  O ka fetola lebitso la hao mona.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "**Praise yourself** @global.parent_point", + "text": "**Ipabatse** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising themselves", + "text": "Ha ba ipabatsa", + "type": "data_list", "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ena e bontsha letsatsi la beke leo @global.weekly_workshop ya hao e ntjha e tla fumaneha ka lona.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Haeba o batla ho le fetola, tobetsa mona.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o ipabatsa, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ena e bontsha @global.weekly_workshop eo hona jwale o leng ho yona.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "One-on-one time", + "text": "Nako ya boinotshing", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  O ka fetola mona ebang o batla ho etsa @global.weekly_workshops tsa hao le le sehlopha kapa o le mong.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "**One-on-one time** @global.parent_point", + "text": "**Nako ya boinotshing** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa mona ho fetola lebitso la sehlopha sa hao.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Spending time with their teen", + "text": "Ha a qeta nako le motjha wa hae", + "type": "data_list", "note": "" }, { - "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", - "text": "Beke ena e bua ka UENA! Itshoare hantle. U tshoaneloa ke eona!", + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o ba le nako ya boinotshing, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praise your teen", + "text": "Babatsa motjha wa hao", "type": "data_list", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", - "text": "Qala lenaneo le lecha la @global.parent_app hosane. O tla bona liphetho tse ntle!", + "SourceText": "**Praise your teen** @global.parent_point", + "text": "**Babatsa motjha wa hao** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising their teen when they did positive thing", + "text": "Ha ba babatsa batjha ba bona ha ba entse ntho e ntle", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o babatsa motjha wa hao, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Get positive", + "text": "Bua se tshwanetseng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Get positive** @global.parent_point", + "text": "**Bua se tshwanetseng** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a positive instruction", + "text": "Ho fa motjha ditaelo tsa se tshwanelang ho etswa", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o fana ka taelo ya se tshwanetseng ho etswa, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Breathe not yell", + "text": "Hema o se hweletse", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Breathe not yell** @global.parent_point", + "text": "**Hema o se hweletse** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Taking a pause before responding", + "text": "Ho nka kgefu pele o araba", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o nka kgefu pele o araba, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Good money choice", + "text": "Kgetho e nepahetseng ya ditjhelete", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Good money choice** @global.parent_point", + "text": "**Kgetho e nepahetseng ya ditjhelete** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Keeping the budget", + "text": "Ho boloka bajete", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o etsa kgetho e nepahetseng mabapi le ditlhoko, dintho tseo le di batlang ebile le baballa tjhelete, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Calm consequence", + "text": "Ditlamorao tse fanwang ho theotswe moya", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Calm consequence** @global.parent_point", + "text": "**Ditlamorao tse fanwang ho theotswe moya** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a consequence in a calm way", + "text": "Ho jarisa motjha ditlamorao ka moya o fatshe", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o fana ka ditlamorao o theotse moya, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Safe", + "text": "Bolokehile", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Safe** @global.parent_point", + "text": "**Bolokehile** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Planning or keeping a family safety plan", + "text": "Ho etsa moralo kapa ho boloka moralo wa lelapa wa polokeho", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Nako le nako ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Did it? Tap it!", + "text": "O e entse? E tobetse!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Ke ditaba tse monate! O sebeditse ka hore le qete nako mmoho. Seo se rala motheo wa dikamano tse ntle le motjha wa hao!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Re thaba le wena! Ho qeta nako ya boinotshing ho bontsha hore batjha ba hao ba bohlokwa ho wena. Seo se etsa phapang e kgolo!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Ke ditaba tse monate! Ho qeta nako le motjha wa hao ho ka etsa hore motjha wa hao a ikemisetse ho o thusa haholo. O etsa hantle!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "O entse hantle! Ho qeta nako ya boinotshing le motjha wa hao ho o fa monyetla wa ho ithuta dintho tseo motjha wa hao a di thahasellang le bokgoni ba hae. O kgalala!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Ke mosebetsi o tswileng matsoho! Ho qeta nako mmoho ho thusa ho haha dikamano tse matla le tse mofuthu pakeng tsa hao le motjha wa hao.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Ka dinako tse ding ho tla ba bonolo mme o thabele ho qeta nako le batjha ba hao, mme ka dinako tse ding ho tla ba thatanyana. Ho qeta nako mmoho ho tla ntlafatsa dikamano tsa lona haholo; o entse hantle ka ho leka!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Re maswabi ho utlwa hore ho bile thata hore o qete nako le motjha wa hao. Ka dinako tse ding, kaofela re ba le mathata. Imamelle mme o mamelle motjha wa hao - hoba tsohle di tla loka. O entse hantle ka ho leka!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well; you are a star!", + "text": "Re thabela ho utlwa hore ho tsamaile hantle; o kgalala!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Ke ditaba tse monate! O tshwanelwa ke dinako tse monate!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Re maswabi hore ebe ho bile boima ka lehlakoreng la hao. O kgalala hobane o lekile!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Ke thabela ho utlwa hore seo se entse hore o ikutlwe hantle! Pele ya pele ka mosebetsi o motle. Motjha wa hao o ithuta dintho tse ngata ho wena!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Qalong ho ka ba thata ho bua ka hore na re ikutlwa jwang, empa wena le motjha wa hao le tla tlwaela. Le nne le leke, mme le tla bona ditholwana tse molemo!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle. Ho buisana ka ditjhelete kannete ho etsa hore lelapa la hao le be matla!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. O entse hantle ka ho iteka!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle. Melao e sa fetofetoheng e thusa batjha ba rona hore ba ikutlwe ba sireletsehile, ebile e ya ba sireletsa!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. Ho theha melao mmoho ho hloka hore motho a ho phete ka makgetlo empa o ke ke wa itshola!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well!", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. Ho beha ditlamorao mmoho ho tla etsa hore motjha wa hao a batle ho latela melao hangata!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Ke maswabi ho utlwa hore ho bile boima. Ka dinako tse ding re tlameha ho tswela pele re iteka. Fumana nako ha wena le motjha wa hao le theotse moya ebe le leka ho buisana ka bothata le sebedisa mehato e mene ya ho rarolla mathata. Matla ke kopano!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ho buisana ka dikotsi le ditsela tsa ho tshehetsana ho thibela mathata mme hantlentle ho thusa ka hore motjha wa hao a dule a sireletsehile.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Ke maswabi ho utlwa hore ho bile boima. Ho etsa mmapa wa dikotsi le dibaka tseo o ka fumanang thuso ekaba ntho e thata le e ka etsang hore motho a nkehe maikutlo. Empa ke sona se ka o thusang ho tiisa hore motjha wa hao o sireletsehile!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Ke maswabi hore dintho ha dia tsamaya hantle hakaalo. Eo hase ntho e bonolo. Leka ho dula fatshe le ho buisana le motjha wa hao ka taba ena hape. Hape, na ho na le motho e mong eo motjha wa hao a mo tshepang ya ka bang teng ha o buisana le motjha wa hao?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ho beha ditlamorao tse nepahetseng ho thusa batjha ho itshwara hantle ebile ho etsa bophelo ba lelapa bo kgutsitseng haholo.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ha motjha wa hao a ithuta tsela ya ho rarolla mathata, o tla sebedisa tsebo eo bophelo bohle ba hae. Ke mpho e babatsehang!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "My Tips", + "text": "Dikeletso tsa Ka", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**My Tips** in the @global.parent_centre", + "text": "**Dikeletso tsa Ka** ho @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Essential Tools", + "text": "Dithulusi tsa Bohlokwa", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Essential Tools** in the @global.parent_centre", + "text": "**Dithulusi tsa Bohlokwa** ho @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Customise @global.parent_app", + "text": "Fetola @global.parent_app ho dumellana le ditlhoko", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", + "text": "**Fetola @global.parent_app ho dumellana le ditlhoko** ho @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + }, + { + "SourceText": "Customise Again", + "text": "Fetola Hape ho Dumellana le Ditlhoko", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Customise Again** in the @global.parent_centre", + "text": "**Fetola hape** ho @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Relax & Activities", + "text": "Kgatholoha le Diketso", "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", - "text": "Hopola ho bolella balekane ba hau ba @global.parent_app ka sesebelisoa. Hosane, le ka qala ho etsa lithupelo tsa @global.parent_app hammoho!", + "SourceText": "under **Relax & Activities** in the @global.parent_centre", + "text": "tlasa **Kgatholoha le Diketso** ho @global.parent_centre", "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Lumela @fields.user_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", + "SourceText": "Help", + "text": "Thuso", "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Lumela @fields.group_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", + "SourceText": "**Help** in the @global.parent_centre", + "text": "**Thuso** ho @global.parent_centre", "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", - "text": "U entse boiteko bo boholo ba ho ba motsoali ea molemo. Oa ratoa ebile oa ananeloa!", + "SourceText": "Technical Support", + "text": "Tshehetso ya Setekgenike", "type": "data_list", "note": "" }, { - "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", - "text": "Kea leboha ha u itlamme ka botsoali ba hau.\n\nSehlooho sa hau sa @data.workshop.w_1on1.in_text_title seo loketse bakeng sa hau!", + "SourceText": "**Technical Support** in the @global.parent_centre", + "text": "**Tshehetso ya Setekgenike** ho @global.parent_centre", "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", - "text": "Ho qeta nako le mocha oa hao ho thusa ho haha tshepo.\n\nTsoela pele leetong la hau la @global.parent_app bakeng sa liphetho tse ntle.", + "SourceText": "Coping with @global.covid", + "text": "Ho sebetsana le @global.covid", "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.covid should not be translated." }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Na o se o kile wa qeta nako le motjha wa hao?", + "SourceText": "**Coping with @global.covid** in the @global.parent_centre", + "text": "** Ho sebetsana le @global.covid** ho @global.parent_centre", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" }, { - "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "O entse hantle ka ho qeta @data.workshop.w_1on1.in_text_title. Hosasane, o ka kena ho workshop e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta tsebo e ncha!", + "SourceText": "Coping with grief", + "text": "Ho sebetsana le mesarelo", "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." + "note": "" }, { - "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", - "text": "Hopola ho qeta @data.workshop.w_1on1.in_text_title. O tla fumana boitsebiso ba bohlokoa ka mor'a metsotso e seng mekae!\n\nO entse hantle ka ho leka ho ba motsoali ea molemo.", + "SourceText": "**Coping with grief** in the @global.parent_centre", + "text": "**Ho sebetsana le mesarelo** ho @global.parent_centre", "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", - "text": "Lumela @fields.user_name! O qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", + "SourceText": "Message Archive", + "text": "Pokello ya Melaetsa", "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", - "text": "Lumela @fields.group_name! U qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", + "SourceText": "**Message Archive** in the @global.parent_centre", + "text": "**Pokello ya Melaetsa** ho @global.parent_centre", "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", + "SourceText": "Support Contacts", + "text": "Dintlha tsa ho Ikopanya le Bathusi", "type": "data_list", "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", + "SourceText": "**Support Contacts** in the @global.parent_centre", + "text": "**Dintlha tsa ho Ikopanya le Bathusi** ho @global.parent_centre", "type": "data_list", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Rea o amohela ho ParentApp. Tobetsa mona ho qala leeto la hao!", + "SourceText": "Evidence Base", + "text": "Motheo wa Bopaki", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Ke tshepa hore o ikutlwa hantle. Ho thata ho ba motswadi, empa ho hang motjha wa hao hase baehlotse, o se ke wa mo akgella matsoho. Wekshopo ya hao ya pele ya botswadi e se e lokile! Tobetsa mona mme o qale leeto la hao la ParentApp!", + "SourceText": "**Evidence Base** in the @global.parent_centre", + "text": "**Motheo wa Bopaki** ho @global.parent_centre", "type": "data_list", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho o thusa ho laola seterese sa botswadi.", + "SourceText": "Quick pause", + "text": "Kgefutsa hanyane", "type": "data_list", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Dumela hape! O ka sebedisa ParentApp neng kapa neng hammoho le tshehetso ya botswadi e etseditsweng ditlhoko tsa hao. Hobaneng ha o sa e leke ha o ya mosebetsing kapa ha o ntse o pheha dijo? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa.", + "SourceText": "Power of three", + "text": "Matla a tharo", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Re tshepa hore o ikutlwa hantle. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho o thusa ho laola boitshwaro ba motjha wa hao.", + "SourceText": "One thing today", + "text": "Ntho e le nngwe kajeno", "type": "data_list", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Dumela! Na dintho tsohle di SHAPO? Ekare ha o so bule ParentApp morao tjena. Hobaneng o sa e leke? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa. Re tla wa re tsoha le wena.", + "SourceText": "Breathe to three", + "text": "Kga moya hararo", "type": "data_list", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "ParentApp e o hlolohetswe! O ka ithuta dintho tse ngata. Re tla tswela pele re o tshehetsa.", + "SourceText": "In and out", + "text": "O kge mme o lokolle", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho lokisetsa motjha wa hao katleho bophelong.", + "SourceText": "Think about today", + "text": "Nahana ka kajeno", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa ParentApp ho tiisa dikamano le motjha wa hao hape!", + "SourceText": "Pause to respond", + "text": "Kgefutsa ho arabela", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Dumela motswadi wa mmakgonthe, hopola hore le wena o itlhokomele - seo se tla thusa wena LE ba lelapa la hao! Fumana dikeletso le maele a mang ho ParentApp.", + "SourceText": "Small things", + "text": "Dintho tse nyane", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Dumela motswadi wa mmakgonthe! Hopola, o ka fumana dikeletso tse ngata tse thusang ho ParentApp.", + "SourceText": "Body scan", + "text": "Sekene sa mmele", "type": "data_list", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Molaetsa o motjha o tswang PLH", + "SourceText": "Feel the ground", + "text": "Utlwa lefatshe", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Dumela motswadi wa mmakgonthe! ParentApp e tla wa e tsoha le wena. E hlahlobe hona jwale!", + "SourceText": "Counting sounds", + "text": "Ho bala medumo", "type": "data_list", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "Feel your feeling", + "text": "Ho utlwa boikutlo ba hao", "type": "data_list", "note": "" }, { - "SourceText": "Continue", - "text": "Tswela pele", + "SourceText": "Your song", + "text": "Pina ya hao", "type": "data_list", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Kamohelo le ho Itlhokomela", + "SourceText": "Ground & gratitude", + "text": "Lefatshe le kananelo", "type": "data_list", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "Wekshopo ya **Kamohelo le ho Itlhokomela**", + "SourceText": "Notice how you feel", + "text": "Lemoha kamoo o ikutlwang kateng", "type": "data_list", "note": "" }, { - "SourceText": "Self-Care", - "text": "Ho Itlhokomela", + "SourceText": "Pause power", + "text": "Matla a kgefu", "type": "data_list", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Tsela ya ho itlhokomela", + "SourceText": "Praise yourself", + "text": "Ipabatse", "type": "data_list", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Nako ya Boinotshing", + "SourceText": "Taking care of yourself", + "text": "Ho itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "Wekshopo ya **Nako ya Boinotshing**", + "SourceText": "Take a pause", + "text": "Nka kgefu", "type": "data_list", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Tsela ya ho qeta nako ya boinotshing", + "SourceText": "Physical activity", + "text": "Boikwetliso", "type": "data_list", "note": "" }, { - "SourceText": "Praise", - "text": "Pabatso", + "SourceText": "List of things", + "text": "Letoto la dintho", "type": "data_list", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "Wekshopo ya **Pabatso**", + "SourceText": "Connect", + "text": "Hokela", "type": "data_list", "note": "" }, { - "SourceText": "How to praise", - "text": "Tsela ya ho babatsa", + "SourceText": "Prevent anger", + "text": "Thibela bohale", "type": "data_list", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Ditaelo tsa se Tshwanelang ho Etswa", + "SourceText": "Angry? Take a break", + "text": "Na o halefile? Nka kgefu", "type": "data_list", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "Wekshopo ya **Ditaelo tsa se Tshwanelang ho Etswa**", + "SourceText": "It is hard to find time to have fun with your teenager.", + "text": "Ho thata ho fumana nako ya ho ithabisa le motjha wa hao.", "type": "data_list", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Tsela ya ho fana ka ditaelo tsa se tshwanelang ho etswa", + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Bophelong ba rona bo maphathaphathe, ho thata ho tsepamisa kelello dinthong tse molemo.", "type": "data_list", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Ho Laola Seterese", + "SourceText": "How many days in the past week have you praised your teen?", + "text": "Ke ka matsatsi a make bekeng e fetileng o ileng wa babatsa motjha wa hao?", "type": "data_list", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "Wekshopo ya **Ho Laola Seterese**", + "SourceText": "This is a very stressful time for families.", + "text": "Ena ke nako e boima haholo ho malapa.", "type": "data_list", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Tsela ya ho laola seterese", + "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", + "text": "Bekeng e fetileng o qetile matsatsi a makae o ikutlwa o imetswe haholo jwaloka motswadi/mohlokomedi?", "type": "data_list", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Dibajete tsa Lelapa", + "SourceText": "Sometimes our children make us really upset.", + "text": "Ka dinako tse ding bana ba rona ba re halefisa haholo.", "type": "data_list", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "Wekshopo ya **Dibajete tsa Lelapa**", + "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", + "text": "Bekeng e fetileng, ke ka matsatsi a makae o ileng wa tleroha, wa tjodietsa kapa wa kgaruma motjha wa hao?", "type": "data_list", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Tsela ya ho bajeta le ho baballa tjhelete", + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Kgweding e fetileng (matsatsing a 30), ke ka matsatsi a makae o ileng wa fellwa ke tjhelete ya ho lefella dijo?", "type": "data_list", "note": "" }, { - "SourceText": "Rules", - "text": "Melao", + "SourceText": "It is so stressful when children misbehave.", + "text": "Bana ba itshwarang hampe ba baka seterese se sengata.", "type": "data_list", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "Wekshopo ya **Melao**", + "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", + "text": "Ke ka matsatsi a makae bekeng e fetileng o ileng wa kgalemela bana ba hao ka hore o ba otle, o ba shape, kapa o ba jabele ka mpama kapa ka ntho e kang thupa kapa lebanta?", "type": "data_list", "note": "" }, { - "SourceText": "How to create rules", - "text": "Tsela ya ho etsa melao", + "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", + "text": "Ho thata ho latella batjha ba rona ha ba fumana bolokolohi ba ho iketsetsa dintho.", "type": "data_list", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Ditlamorao tse Fanwang ho Theotswe Moya", + "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", + "text": "Bekeng e fetileng ke ka matsatsi a makae o neng o tseba seo motjha wa hao a se etsang le hore na o na le bomang?", "type": "data_list", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "Wekshopo ya **Ditlamorao tse Fanwang ho Theotswe Moya**", + "SourceText": "Days in the past week", + "text": "Matsatsi bekeng e fetileng", "type": "data_list", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Tsela ya ho fana ka ditlamorao ho theotswe moya", + "SourceText": "We all want to keep our children safe.", + "text": "Kaofela re batla ho tiisa hore bana ba rona ba sireletsehile.", "type": "data_list", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ho Rarolla Mathata", + "SourceText": "Days in the past month", + "text": "Matsatsi a kgwedi e fetileng", "type": "data_list", "note": "" }, { - "SourceText": "**Problem Solving** workshop", - "text": "Wekshopo ya **Ho Rarolla Mathata**", + "SourceText": "Welcome and Self-Care", + "text": "Kamohelo le ho Itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Tsela ya ho rarolla mathata", + "SourceText": "**Welcome and Self-Care** workshop", + "text": "Wekshopo ya **Kamohelo le ho Itlhokomela**", "type": "data_list", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Polokeho ya Batjha", + "SourceText": "Self-Care", + "text": "Ho Itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "**Teen Safety** workshop", - "text": "Wekshopo ya **Polokeho ya Batjha**", + "SourceText": "How to do self-care", + "text": "Tsela ya ho itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Tsela ya ho tiisa hore motjha wa hao o bolokehile", + "SourceText": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "text": "Ho nna joalo ka motsoali, ho ne ho batla ho le thata ho iphumanela nako. Ke ne ke lula ke tšoarehile ka ho hlokomela ba bang kaofela. Empa ka @global.parent_app, ke lemohile bohlokwa ba hore ke e hlokomele. Sena se thusa nna LE ba lelapa laka!\n\nHo ba le motsotso bakeng sa ka hong thusa hore ke hemme hantle ebile ke lemohe hore na ke e kutloa joang. Le ka metsotso e 5, ea hore ke noe kopi ea tee ho etsa phapang e kgolo. Hona joale ke se ke khona ho sebetsana le khatello ea maikutlo hamolemo.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Dealing with Crisis", - "text": "Ho Sebetsana le Tsietsi", + "SourceText": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.", + "text": "Ntate waka o ne a dula a phathahane. O ne a tla hae a tswa mosebetseng mme a re ha re qala re mo botsa dipotso o na re halefela. \n\n@global.parent_app e re thusitse haholo. Ha re sa lwana. Joale, ha ntate oa ka a fihla hae, o dula fatshe a le mong bakeng sa metsotso e 5 ebe re etsa mosebetsi wa ho phomola o tswang ho @global.parent_app ha mmoho, hore re khone ho hemela hodimo le ho phomola ha mmoho. Ha re qetsa we qoqa ka matsatsi a ronna, ka dintho tse ntle kapa tse mpe tse etsahetseng. Joale batho bohle ba thabile.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "Wekshopo ya **Ho Sebetsana le Tsietsi**", + "SourceText": "One-on-One Time", + "text": "Nako ya Boinotshing", "type": "data_list", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Tsela ya ho sebetsana le tsietsi", + "SourceText": "**One-on-One Time** workshop", + "text": "Wekshopo ya **Nako ya Boinotshing**", "type": "data_list", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ho Keteka le Mehato e Latelang", + "SourceText": "How to spend one-on-one time", + "text": "Tsela ya ho qeta nako ya boinotshing", "type": "data_list", "note": "" }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "Wekshopo ya **Ho Keteka le Mehato e Latelang**", + "SourceText": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "text": "Ha ne ke qala ho utloa hore ke tlameha ho qeta nako ea One-on-One le mocha oa ka, ho ne ho le boima ho nna. Ke ne ke sa tsebe hore na ke e etse neng kapa ke reng. Ke ne ke sa batle ho senya mocha oa ka hoo a nahanang hore re lokela ho etsa ntho e 'ngoe le e 'ngoe hammoho.\n\nEmpa ke ne ke hlile ke batla ho haha kamano ea ka le ngoana oa ka ea lilemong tsa bocha mme ke ne ke batla hore a phete sefuba ka se mo tshoenyang. Kahoo re ile ra leka Nako ea One-on-One.\n\nTaba ea pele, e ne e utloahala e makatsa, empa e ile ea e-ba monate! Hona joale re shebella lenaneo la hae la TV hammoho mme rea qoqa ka lona. Ebile re ka bua le kamoo mora oa ka a fetohang lilemong tsa bocha, esita le ka likharebe le lintho tseo!", "type": "data_list", "note": "" }, - { - "SourceText": "How to support each other", - "text": "Tsela ya ho tshehetsana", + { + "SourceText": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.", + "text": "Ha mme waka a kōpa ho qeta nako le nna, ke ile ka nahana “Mohlomong ho na le phoso, mohlomong oa kula”. Empa a re, “Che, ke batla ho qeta nako feela.” Ke ne ke belaela, empa ke ile ka amohela, ka be ka lumela ho qeta nako le eena.\n\nO ile a mpotsa hore na ke rata ho etsa eng. Ho ne ho makatsa mme ke ne ke sa phutholoha, hobane ha ho mohla a kileng a qeta nako le nna ke le mong.\n\nHa a ntse a tsoela pele ho leka le ho qeta nako ena re le hammoho, ho ne ho le monate haholo. O ile a buisana le nna bongoaneng ba hae, lintho tseo ke neng ke qala ho li utloa. Seo se ile sa nthusa hore le nna ke bolele se etsahalang bophelong ba ka. Re bile re bua ka bahlankana le ka mathata ao ke nang le ona. Kea tseba hore nka bua le mme waka hona joale.", "type": "data_list", "note": "" }, { - "SourceText": "Quick pause", - "text": "Kgefutsa hanyane", + "SourceText": "Praise", + "text": "Pabatso", "type": "data_list", "note": "" }, { - "SourceText": "Power of three", - "text": "Matla a tharo", + "SourceText": "**Praise** workshop", + "text": "Wekshopo ya **Pabatso**", "type": "data_list", "note": "" }, { - "SourceText": "One thing today", - "text": "Ntho e le nngwe kajeno", + "SourceText": "How to praise", + "text": "Tsela ya ho babatsa", "type": "data_list", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Kga moya hararo", + "SourceText": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "text": "Ha ne re ithuta ka ntho ena ea thoriso, ke ile ka nahana hore \"Ha ho mohla re kileng ra rorisoa ka lintho ha re sa le bacha, joale ke hobane'ng ha re lokela ho qala hona joale?\". Empa ke ile ka thahasella ha ke ithuta hore na melemo ea ho babatsa e ka ba efe.\n\nHang ka mora thupelo ea beke le beke, ke ile ka bona mocha oa ka a etsa seo a se etsang letsatsi le leng le le leng: Ho hlatsoa lijana. Mme ka re, “Ke a leboha ka ho hlatswa lijana, ngoanaka, ho nthabisa haholo hore ebe o thusa.” Ngoana oa ka ea lilemong tsa bocha o ne a bososela mme a ba a tla ho tla nkopa, e leng seo a sa kang a se etsa.\n\nKhoebo ena ea thoriso e boima. Ke ntse ke lebala ka linako tse ling kapa ke fana ka thoriso ka nako e le 'ngoe le ho nyatsuoa. Empa ho babatsa ho hlile ho etsa phapang. Ke ne ke sa nahane hore thoriso e bonolo feela e ka etsa phetoho e joalo ho motho!", "type": "data_list", "note": "" }, { - "SourceText": "In and out", - "text": "O kge mme o lokolle", + "SourceText": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.", + "text": "Ke ile ka leboha hore ebe mmè o ile a ithuta ka thoriso.\n\nmmè o ne a lula a hlokomela ha ke etsa ntho e fosahetseng. O ne a tle a nkgoele le go nkotla.\n\nEmpa ha mmè a ne a etsa li thupelo tsena, o ne a mpabatsa ka lintho tse nyenyane. Pele, ke ile ka nahana \"Ho etsahala'ng?\" empa yaba ya tswela pele. Ke ne ke e rata kahoo ke entse lintho tse ling tse ntle tseo ke neng ke nahana hore a ka li rata.\n\nHoa thabisa hore ebe mmè o bona lintho tse ntle tseo ke li etsang, eseng feela tse mpe.\n\nKe ile ka ba ka bua le eena hang. Nakong ea @data.workshop.w_1on1.title, ke ile ka re, “Kea leboha mmè, ha o bua ka ntho e ntle ha ke etsa lintho hantle, eseng feela ha ke etsa lintho tse fosahetseng.” Sena se ile sa re thabisa haholo ka bobeli.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.title, should not be translated." }, { - "SourceText": "Think about today", - "text": "Nahana ka kajeno", + "SourceText": "Positive Instructions", + "text": "Ditaelo tsa se Tshwanelang ho Etswa", "type": "data_list", "note": "" }, { - "SourceText": "Pause to respond", - "text": "Kgefutsa ho arabela", + "SourceText": "**Positive Instructions** workshop", + "text": "Wekshopo ya **Ditaelo tsa se Tshwanelang ho Etswa**", "type": "data_list", "note": "" }, { - "SourceText": "Small things", - "text": "Dintho tse nyane", + "SourceText": "How to give positive instructions", + "text": "Tsela ya ho fana ka ditaelo tsa se tshwanelang ho etswa", "type": "data_list", "note": "" }, { - "SourceText": "Body scan", - "text": "Sekene sa mmele", + "SourceText": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "text": "Pele, ke ne ke holisa bacha ba ka ka tsela eo ke holisitsoeng ka eona: Ke ne ke ba bolella hore “le se ke la etsa sena, le se ke la etsa sane.” Re ne re loana haholo, empa lintho li fetohile haholo ha ke ithuta ka ho fana ka litaelo tse molemo.\n\nHona joale ke tsepamisa maikutlo boitshoarong boo ke batlang ho bo bona, mme ke fana ka litaelo tse hlakileng le tse bonolo ho bacha ba ka. Ho ile ha nka nako ho ithuta ho re “ka kopo etsa sena” ho e-na le ho re “o se ke oa etsa sena.”\n\nBacha ba ka esita le monna oa ka ba mpolella hore ba rata tsela ena ea ho etsa lintho, hobane joale ba tseba se lokelang ho etsoa. Ngoana oa ka o ile a re ka letsatsi le leng \"Ke rata mmè enoa e mocha haholo,\"' me maemo a ka a khatello ea kelello a theohile haholo.", "type": "data_list", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Utlwa lefatshe", + "SourceText": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.", + "text": "Qalong, ke ne ke sa tsotelle hore na mmè o ne a etsa'ng ho @global.parent_app. Empa joale ke ile ka qala ho bona mmè a fetola tsela eo a neng a buisana le rona ka eona.\n\nKa letsatsi le leng, ha ke ne ke intsha le metsoalle ea ka, o ile a re ke tlameha ho fihla hae ka hora ea botshelela mantsiboea.E be ke nahana hore “Hmmm ho lokile,” hobane ka tloaelo o ne a sa fane ka litaelo tse hlakileng mabapi le seo a se batlang - o ne a sa bue letho ebe joale a nkomanya ka hore ebe ke siiloe ke nako ha ke fihla hae.\n\nHa ke fihla hae hoo e ka bang ka hora ea bohlano mantsiboea, mmè o ile a nkopa ’me a re “Kea leboha ha o fihlile ka nako.” E ne e makatsa, empa keile ka e rata.\n\nHo tloha ka nako eo, re na le puisano e hlakileng haholoanyane ka tlung.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Counting sounds", - "text": "Ho bala medumo", + "SourceText": "Managing Stress", + "text": "Ho Laola Seterese", "type": "data_list", "note": "" }, { - "SourceText": "Feel your feeling", - "text": "Ho utlwa boikutlo ba hao", + "SourceText": "**Managing Stress** workshop", + "text": "Wekshopo ya **Ho Laola Seterese**", "type": "data_list", "note": "" }, { - "SourceText": "Your song", - "text": "Pina ya hao", + "SourceText": "How to manage stress", + "text": "Tsela ya ho laola seterese", "type": "data_list", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Lefatshe le kananelo", + "SourceText": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "text": "Bophelo bo thata ka linako tse ling. Pele ke kena ho @global.parent_app, ke ne ke lula ke khobile matshoafo ka linako tsohle. Ke ne ke ntsha khalefo ea ka ho e mong le e mong lapeng, eseng feela ho bacheng baka empa le monna oa ka. Ba ne ba baleha ha ke fihla hae, hobane ba ne ba tseba hore ke tla qala ho ba omanya.\n\nHo ithuta ho khefutsa le ho hema ho ne ho le boima qalong, empa nako le nako ha ke ne ke leka, ho ne ho nthusa hore ke khobe matshoafo. Hona joale bacha baka ha ba sa baleha ha ke khutlela hae, ’me ba mamela hamolemo ho feta ha ke ne ke ba hoeletsa!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Notice how you feel", - "text": "Lemoha kamoo o ikutlwang kateng", + "SourceText": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.", + "text": "Nako le nako ha ke etsa ntho e fosahetseng, Ntate o ne a nkhalefela haholo ’me a nkotla. O ne a bile a sa mmamele, mme le nna ke ne ke mo halefela le batho bohle.\n\nJoale, ha a halefile, o qala ka ho hemela holimo ka makhetlo a seng makae pele a arabela. E etsa hore bohle ba khobe matshoafo ho e-na le ho baka ntoa e kholo.\n\nE ile ea nthusa haholo lapeng le sekolong, hobane le nna ha ke sa rema motho e mong le e mong ebile ha ke sa le motho enoa oa moifo. Ha ke ikutloa ke halefile haholo kapa ke imetsoe kelellong, ke boetse ke hema haholo joalo ka ha Ntate a etsa. Se ke le motho ea fapaneng.", "type": "data_list", "note": "" }, { - "SourceText": "Pause power", - "text": "Matla a kgefu", + "SourceText": "Family Budgets", + "text": "Dibajete tsa Lelapa", "type": "data_list", "note": "" }, { - "SourceText": "Taking care of yourself", - "text": "Ho itlhokomela", + "SourceText": "**Family Budgets** workshop", + "text": "Wekshopo ya **Dibajete tsa Lelapa**", "type": "data_list", "note": "" }, { - "SourceText": "Take a pause", - "text": "Nka kgefu", + "SourceText": "How to budget & save", + "text": "Tsela ya ho bajeta le ho baballa tjhelete", "type": "data_list", "note": "" }, { - "SourceText": "Physical activity", - "text": "Boikwetliso", + "SourceText": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "text": "Ho boloka chelete le ho etsa moralo oa tshebeliso ea chelete ho nthusa joaloka motsoali, mme ho thusa bacha baka hore ba utloisise hore na chelete e ea hokae.\n\nBacha ba ka ba ne ba lula ba kopa lintho tse ngata hobane ba ne ba sa utloisise ha ke re “ha ke na chelete.” Ba ne ba tla re, \"empa o na le mosebetsi!\"\n\nKe ile ka lula fatshe le bona mme ka ba bontsha lintho tsohle tseo re li lefang ka lapeng le hore na ho setse bokae. Ba utloisisa hona joale ebile ba fana ka maikutlo a hore na re ka boloka joang ho fihlela lipakane tsa rona tse kang lieta tse ncha kapa letsatsi la tsoalo le lipakane tse kholoanyane tse kang litefello tsa bona tsa sekolo. Bakeng sa e moholo, ke ile ka ba ka mo bulela akhaonto ea polokelo.", "type": "data_list", "note": "" }, { - "SourceText": "List of things", - "text": "Letoto la dintho", + "SourceText": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.", + "text": "Ke ne ke tloaetse ho kopa mmè hore a nthekele liaparo tse ntle ka linako tsohle. Nako le nako o ne a re ho nna “ha ke na chelete,” empa ke ne ke tseba hore o ne a fumana chelete ho malome. Ke ne ke sa utloisise hore na ke hobane’ng ha a ne a hana ho nthekela liaparo. Ka nako e 'ngoe ke ile ka nahana \"ha a nthate.\"\n\nEmpa ka letsatsi le leng, o ile a mpitsa hore ke lule fatshe le eena mme a mpotsa “litlhoko le litlhoko tsa rona ke life.” Ke ile ka qala ho thathamisa litlhoko tsohle tsa ka le tseo ke li batlang. Eaba mmè o nthusa hore le nna ke nahane ka litlhoko tsa lelapa. Joale kea utloisisa hore na chelete ea rona e ea kae, e lebisang linthong tseo re li hlokang re le lelapa.\n\nHo tloha tsatsing leo, kea utloisisa hore nke ke ka tla ho botsa nako efe kapa efe. Hona joale, ha ke batla ho hong, ke ema ho fihlela bofelong ba khoeli ha bohle re buisana ka tekanyetsokabo hammoho ho bona hore na e ea lumellana. Re utloisisana hamolemo hona joale.", "type": "data_list", "note": "" }, { - "SourceText": "Connect", - "text": "Hokela", + "SourceText": "Rules", + "text": "Melao", "type": "data_list", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Thibela bohale", + "SourceText": "**Rules** workshop", + "text": "Wekshopo ya **Melao**", "type": "data_list", "note": "" }, { - "SourceText": "Angry? Take a break", - "text": "Na o halefile? Nka kgefu", + "SourceText": "How to create rules", + "text": "Tsela ya ho etsa melao", "type": "data_list", "note": "" }, { - "SourceText": "Reflect on the positive", - "text": "Nahana ka dintle", + "SourceText": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "text": "Bacha ba ka ba ne ba lula ba nyamela. Ke ne ke sa tsebe hore na ba hokae, mme ke ne ke ee ke tshoenyehe haholo ke be ke ba halefele. Ke ne ke ee ke re \"hona ke ntlo ea ka, mme melao ea ka ke ena, haeba o sa batle ho e latela o ka tloha oa lo itulela ha hao\"\n\nHa re ithuta ho @ global.parent_app ka melao, ke ithutile hore ho na le melao bakeng sa motho e mong le e mong, bacha le ea batho ba baholo. Haeba re latela melao joaloka batsoali, bacha ba rona ba tla latela mohlala oa rona.\n\nKe ile ka hlalosa matshoenyeho a ka mme ra lumellana kaofela: Kaofela re latela molao hape re bolela hore na re ea hokae ha re tsoa ka tlung. Ho qapa melao hammoho ho re thusitse haholo, kaha bacha ba ka ha ba sa mpona ke le motsoali ea tenang ea etsang melao e sa hlokahaleng.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Check-in chat", - "text": "Kenella moqoqong", + "SourceText": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.", + "text": "Ha ho mohla mo nkileng ka rata melao ebile ke ne ke lebala melao haholo.\n\nKa letsatsi le leng, ke ne ke bapala le metsoalle ea ka. Molao wa lapeng ne e le hore re be re le ka jareteng ka 6pm, empa ka lebala hape. Ka 6.30 ho ne ho se ho fifala mme ke ne ke ntse ke le ka ntle ke bapala ka fono ea ka. Eaba moshanyana o tla, a nka mohala oa ka, a baleha.\n\nKe ne ke utloisisa hore melao e ka re thusa haholo ho nepahatsa hore re lula re bolokehile, kahoo ke ile ka fetola boitshoaro ba ka mme ke ne ke le jareteng ka 5pm ho tloha ka nako eo.", "type": "data_list", "note": "" }, { - "SourceText": "Dream Travel", - "text": "Leeto la Ditoro", + "SourceText": "Calm Consequences", + "text": "Ditlamorao tse Fanwang ho Theotswe Moya", "type": "data_list", "note": "" }, { - "SourceText": "Famous Party", - "text": "Phathi e Tummeng", + "SourceText": "**Calm Consequences** workshop", + "text": "Wekshopo ya **Ditlamorao tse Fanwang ho Theotswe Moya**", "type": "data_list", "note": "" }, { - "SourceText": "Two truths, one lie", - "text": "Dinnete tse pedi, leshano le le leng", + "SourceText": "How to give calm consequences", + "text": "Tsela ya ho fana ka ditlamorao ho theotswe moya", "type": "data_list", "note": "" }, { - "SourceText": "Time Machine", - "text": "Motjhine wa Nako", + "SourceText": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "text": "Ha bana baka ba e leng bocha ba ne ba etsa ntho e nkhalefisang, ke ne ke ba khalemela le ho ba fa kotlo hang-hang. Empa nakong e tlang ba ile ba boela ba etsa joalo hape! Ke ne ke sa utloisise hore na ke hobane’ng ha ba ne ba sa nkutloe le ha ke hoeletsa.\n\n@ global.parent_app e nthusitse ho utloisisa hore bacha baka ba atisa ho mmamela ha ke khobile matshoafo. Kahoo ha ho etsahala ntho e itseng, kea hemela holimo mme ke re, “Ke tla bua le uena hamorao ha re khobile matshoafo ka bobeli.”\n\nMme re lumellana ka liphello hona joale pele phoso e etsahala. Sena se entse lintho tse makatsang - ke bone phetoho e kholo boitshoarong ba mocha oa ka kaha joale a se a amehile haholo, mme ke na le khatello ea maikutlo e fokolang.\n\nKe lakatsa eka nka be ke tsebile sena khale, empa eseng morao haholo ho qala!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Superpowers", - "text": "Matla a Maholo", + "SourceText": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.", + "text": "Mmè le Ntate ba ne ba lula ba nkotla ha ba nkhalefetse. Ba ne ba tle ba nkoe ka bohale mme le nna ke halefe. Hangata ke ne ke sa latele melao, hobane e ne e le bohale haholo, ke sa utloisise seo ba se buang, kapa ke ne ke sa itshoenye le ho ba mamela, hobane kaofela re ne re halefile.\n\nKa letsatsi le leng, ba ile ba mpotsa: A re nahane hammoho hore na phello e lokela ho ba efe ea ho se fihle hae ka nako. Ho ne ho le monate ho fana ka maikutlo a ka - pele ho etsahala ntho e re halefisang bohle. Kaofela re khobile matshoafo mme re lumellana pele. Ho bonolo hore ke latele melao hona joale hobane kea tseba hore ke lumellane ka molao le ka lebaka la seo haeba ke sa latele molao.", "type": "data_list", "note": "" }, { - "SourceText": "Just a friendly chat", - "text": "Moqoqo o botswalle feela", + "SourceText": "Problem Solving", + "text": "Ho Rarolla Mathata", "type": "data_list", "note": "" }, { - "SourceText": "The Interrupter", - "text": "Mositisi", + "SourceText": "**Problem Solving** workshop", + "text": "Wekshopo ya **Ho Rarolla Mathata**", "type": "data_list", "note": "" }, { - "SourceText": "Three options", - "text": "Dikgetho tse tharo", + "SourceText": "How to solve problems", + "text": "Tsela ya ho rarolla mathata", "type": "data_list", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "E, Tjhe kapa Mohlomong", + "SourceText": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "text": "Ke ne ke se na kamano e ntle le morali oa ka. Ke ne ke lula ke mo omanya, mme o ne a hana ho ea sekolong.\n\nEitse ha ke qala ho qeta nako ea One-on-One le eena, ke ile ka hlokomela hore ha a batle ho kena sekolo hobane o ne a hlekefetsoa sekolong. Re ile ra lula fatshe mme ra sebelisa mehato e 6 ea ho rarolla mathata. Re ile ra hlokomela bothata, mme ra fumana tharollo hammoho: “Nka etsa’ng joaloka motsoali e le hore u ka kena sekolo ’me o ikutloe o sireletsehile?”\n\nRe ile ra lumellana hore ke tla ea bua le tichere ho fumana tsela ea ho ea pele. Re hlile re fumane litharollo hammoho, mme re haufi hona joale.", "type": "data_list", "note": "" }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Papadi ya kgopolo - \"Ka Moqebelo...\"", + "SourceText": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.", + "text": "Ha ntate oaka a ntsebisa mehato ea ho rarolla mathata, e ile ea nthusa ka lelapa la ka, empa hape e ile ea nthusa ka metsoalle ea ka.\n\nKe ile ka bolella metsoalle ea ka ka mehato ena, joale ha re qabana re lula fatshe mme bohle ba tla le tharollo. Ka mor'a moo re sheba lintho tse mpe le tse ntle tsa tharollo ka 'ngoe, mme re lumellana hore \"ho lokile, ha re lekeng ena.\"\n\nMetsoalle ea ka e bile ea e isa mehato ena malapeng a bona, mme e thusa le malapa a bona!\n\nHo monate ha ba bang ba ho mamela mme ba amohela maikutlo a hao le hoja o le mocha. Kaofela re ka tlisa kutloano eo le metsoalle le malapa a rona.", "type": "data_list", "note": "" }, { - "SourceText": "Make up a story", - "text": "Qapa pale", + "SourceText": "Teen Safety", + "text": "Polokeho ya Batjha", "type": "data_list", "note": "" }, { - "SourceText": "Co-chef", - "text": "Seapehi-mmoho", + "SourceText": "**Teen Safety** workshop", + "text": "Wekshopo ya **Polokeho ya Batjha**", "type": "data_list", "note": "" }, { - "SourceText": "Dance moves", - "text": "Ditsela tsa ho tantsha", + "SourceText": "How to keep your teen safe", + "text": "Tsela ya ho tiisa hore motjha wa hao o bolokehile", "type": "data_list", "note": "" }, { - "SourceText": "Mirror", - "text": "Seipone", + "SourceText": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "text": "Ke ile ka leboha haholo ho etsa moralo oa polokeho le mocha oa ka. Ke ne ke nahana hore kea tseba hore na ke libaka life tse sireletsehileng bakeng sa mocha oa ka le tse seng joalo. Empa ha re etsa moralo oa polokeho hammoho, ke ile ka hlokomela hore ngoanana oa ka o ne a tseba libaka tse ngata tseo ke neng ke sa li tsebe.\n\nKe ne ke boetse ke nahana hore o bolokehile sekolong, empa ka mosebetsi ona ke ile ka hlokomela hore o ne a hlorisoa mme matichere ha aa ka a etsa letho.\n\nHa re ntse re bua haholo, ke ile ka utloisisa haholoanyane le ho fumana boitsebiso ho mocha oa ka. Seo se ile sa nthusa haholo hore ke sireletse ngoana oa ka le ho mo boloka a sireletsehile.", "type": "data_list", "note": "" }, { - "SourceText": "What's new?", - "text": "Tse ntjha ke dife?", + "SourceText": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!", + "text": "Ha nna kapa metsoalle ea ka re kena khathatsong, kamehla ke ne ke leka ho patela mmè hobane o ne a halefa haholo mme a nkomanya.\n\nHa re ne re etsa 'mapa oa libaka tse sireletsehileng le tse sa bolokehang, ke ithutile ho hongata - hape ke hobane'ng ha ho le kotsi ho arolelana setshoantsho se seng le se seng inthaneteng. Mmè o ile a mpolella hore nka lula ke mo botsa hore na ho na le bothata mme a tshepisa hore a ke ke a teneha.\n\nO ile a boloka tshepiso ea hae, joale haeba ke e-na le bothata kapa ke ikutloa ke sa sireletseha kea tseba hore re ka khona ho tla ka tharollo hammoho kamehla. Ke khona ho bua le mmè ka lintho tseo ke li etsang Inthaneteng hona joale!", "type": "data_list", "note": "" }, { - "SourceText": "Get active!", - "text": "Eba mahlahahlaha!", + "SourceText": "Dealing with Crisis", + "text": "Ho Sebetsana le Tsietsi", "type": "data_list", "note": "" }, { - "SourceText": "Name that tune", - "text": "Bolela morethetho ona", + "SourceText": "**Dealing with Crisis** workshop", + "text": "Wekshopo ya **Ho Sebetsana le Tsietsi**", "type": "data_list", "note": "" }, { - "SourceText": "Pass the snap", - "text": "Fetisa senepe", + "SourceText": "How to deal with crisis", + "text": "Tsela ya ho sebetsana le tsietsi", "type": "data_list", "note": "" }, { - "SourceText": "Family workout", - "text": "Boikwetliso ba lelapa", + "SourceText": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "text": "Mocha oa ka o ne a lula a halefile ka linako tsohle. Le ka mohla o ne a ke ke a mamela mme re ne re qabana haholo letsatsi le leng le le leng. Ka thuto ea @global.parent_app, ke qalile ho qeta nako e ngata le mocha oa ka le ho matlafatsa likamano tsa rona. Ka letsatsi le leng o ile a mpolella hore ke setho sa kenke empa o ne a batla ho tsoa.\n\nRe ile ra etsa meralo ea nakoana le ea nako e telele hammoho ea hore na re ka etsa seo joang. Bophelo ba rona bo bonahala bo fapane haholo hona joale!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Make housework fun", - "text": "Etsa mosebetsi wa lapeng hamonate", + "SourceText": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.", + "text": "Lilemong tse peli tse fetileng, ke ile ka betoa ke malome ea neng a lula jareteng ea rona. Ha kea ka ka bolella mme waka, hobane ke ne ke tshaba hore o tla nkotla, a nkhalemele, kapa a nteleke ka ntle. Ke ne ke se na moo nka eang teng.\n\nHa mme oa ka a qala ka @global.parent_app, o ile a qala ho qeta nako e ngata hammoho le nna. Ke ne ke ntse ke tshohile, empa qetellong ke ile ka e arolelana le mme waka. Mme waka ha aa ka a hoeletsa, empa o ile a ’mamela mme a mpolella hore hase molato oa ka. Re ile ra ea sepoleseng le tleliniking hammoho. Ke leboha haholo hore ebe ha ke sa tlameha ho jara sephiri sena.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Mesebetsi ya lapeng ha e monate… kapa jwang? O ka etsa hore ebe papadi!", + "SourceText": "Celebration and Next Steps", + "text": "Ho Keteka le Mehato e Latelang", "type": "data_list", "note": "" }, { - "SourceText": "What are you doing?", - "text": "O etsang?", + "SourceText": "**Celebration and Next Steps** workshop", + "text": "Wekshopo ya **Ho Keteka le Mehato e Latelang**", "type": "data_list", "note": "" }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Papadi e monate ke ena eo o ka e etsang le lelapa la hao!", + "SourceText": "How to support each other", + "text": "Tsela ya ho tshehetsana", "type": "data_list", "note": "" }, { - "SourceText": "Crazy chicken", - "text": "Tantshi ya dikgoho tse hlanyang", + "SourceText": "Start", + "text": "Qala", "type": "data_list", "note": "" }, { - "SourceText": "My Tips", - "text": "Dikeletso tsa Ka", + "SourceText": "Continue", + "text": "Tswela pele", "type": "data_list", "note": "" }, { - "SourceText": "**My Tips** in the @global.parent_centre", - "text": "**Dikeletso tsa Ka** ho @global.parent_centre", + "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Dumela motswadi wa mmakgonthe, hopola hore le wena o itlhokomele - seo se tla thusa wena LE ba lelapa la hao! Fumana dikeletso le maele a mang ho @global.parent_app.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Essential Tools", - "text": "Dithulusi tsa Bohlokwa", + "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.", + "text": "Dumela motswadi wa mmakgonthe! Hopola, o ka fumana dikeletso tse ngata tse thusang ho @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "**Essential Tools** in the @global.parent_centre", - "text": "**Dithulusi tsa Bohlokwa** ho @global.parent_centre", + "SourceText": "Hi great parent! @global.parent_app is here to support you. Check it out now!", + "text": "Dumela motswadi wa mmakgonthe! @global.parent_app e tla wa e tsoha le wena. E hlahlobe hona jwale!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Customise @global.parent_app", - "text": "Fetola @global.parent_app ho dumellana le ditlhoko", + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Rea o amohela ho @global.parent_app. Tobetsa mona ho qala leeto la hao!", "type": "data_list", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", - "text": "**Fetola @global.parent_app ho dumellana le ditlhoko** ho @global.parent_centre", + "SourceText": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", + "text": "Dumela! Na dintho tsohle di SHAPO? Ekare ha o so bule @global.parent_app morao tjena. Hobaneng o sa e leke? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa. Re tla wa re tsoha le wena.", "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Customise Again", - "text": "Fetola Hape ho Dumellana le Ditlhoko", + "SourceText": "@global.parent_app misses you! There is a lot to explore. We are still here to support you.", + "text": "@global.parent_app e o hlolohetswe! O ka ithuta dintho tse ngata. Re tla tswela pele re o tshehetsa.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Relax & Activities", - "text": "Kgatholoha le Diketso", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.", + "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho lokisetsa motjha wa hao katleho bophelong.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "under **Relax & Activities** in the @global.parent_centre", - "text": "tlasa **Kgatholoha le Diketso** ho @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!", + "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho tiisa dikamano le motjha wa hao hape!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Help", - "text": "Thuso", + "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!", + "text": "Ke tshepa hore o ikutlwa hantle. Ho thata ho ba motswadi, empa ho hang motjha wa hao hase baehlotse, o se ke wa mo akgella matsoho. Wekshopo ya hao ya pele ya botswadi e se e lokile! Tobetsa mona mme o qale leeto la hao la @global.parent_app!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Help** in the @global.parent_centre", - "text": "**Thuso** ho @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.", + "text": "Re tshepa hore o ikutlwa HANTLE. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho o thusa ho laola seterese sa botswadi.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Technical Support", - "text": "Tshehetso ya Setekgenike", + "SourceText": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", + "text": "Dumela hape! O ka sebedisa @global.parent_app neng kapa neng hammoho le tshehetso ya botswadi e etseditsweng ditlhoko tsa hao. Hobaneng ha o sa e leke ha o ya mosebetsing kapa ha o ntse o pheha dijo? Batswadi ba dimilione ba fumane hore tlhahisoleseding ena e a ba thusa.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Technical Support** in the @global.parent_centre", - "text": "**Tshehetso ya Setekgenike** ho @global.parent_centre", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.", + "text": "Re tshepa hore o ikutlwa hantle. Rea tseba hore botswadi bo thata - sebedisa @global.parent_app ho o thusa ho laola boitshwaro ba motjha wa hao.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Coping with @global.covid", - "text": "Ho sebetsana le @global.covid", + "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Lumela @fields.user_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", "type": "data_list", - "note": "The string @global.covid should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "**Coping with @global.covid** in the @global.parent_centre", - "text": "** Ho sebetsana le @global.covid** ho @global.parent_centre", + "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Lumela @fields.group_name. Sehlooho sa hau sa @data.workshop.w_1on1.in_text_title se loketse bakeng sa hau.", "type": "data_list", - "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" + "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Coping with grief", - "text": "Ho sebetsana le mesarelo", + "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", + "text": "U entse boiteko bo boholo ba ho ba motsoali ea molemo. Oa ratoa ebile oa ananeloa!", "type": "data_list", "note": "" }, { - "SourceText": "**Coping with grief** in the @global.parent_centre", - "text": "**Ho sebetsana le mesarelo** ho @global.parent_centre", + "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", + "text": "Kea leboha ha u itlamme ka botsoali ba hau.\n\nSehlooho sa hau sa @data.workshop.w_1on1.in_text_title seo loketse bakeng sa hau!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "Message Archive", - "text": "Pokello ya Melaetsa", + "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", + "text": "Ho qeta nako le mocha oa hao ho thusa ho haha tshepo.\n\nTsoela pele leetong la hau la @global.parent_app bakeng sa liphetho tse ntle.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Message Archive** in the @global.parent_centre", - "text": "**Pokello ya Melaetsa** ho @global.parent_centre", + "SourceText": "Have you spent time with your teen already?", + "text": "Na o se o kile wa qeta nako le motjha wa hao?", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, - { - "SourceText": "Support Contacts", - "text": "Dintlha tsa ho Ikopanya le Bathusi", + { + "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "O entse hantle ka ho qeta @data.workshop.w_1on1.in_text_title. Hosasane, o ka kena ho workshop e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta tsebo e ncha!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "**Support Contacts** in the @global.parent_centre", - "text": "**Dintlha tsa ho Ikopanya le Bathusi** ho @global.parent_centre", + "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", + "text": "Hopola ho qeta @data.workshop.w_1on1.in_text_title. O tla fumana boitsebiso ba bohlokoa ka mor'a metsotso e seng mekae!\n\nO entse hantle ka ho leka ho ba motsoali ea molemo.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "Evidence Base", - "text": "Motheo wa Bopaki", + "SourceText": "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.", + "text": "Dumela @fields.user_name! Kajeno re keteka dikhoedi tse pedi tsa @global.parent_app!\n\nBekeng ena otla ithuta ho thusa ngoana oa hau ho latela melao ea lapeng.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "**Evidence Base** in the @global.parent_centre", - "text": "**Motheo wa Bopaki** ho @global.parent_centre", + "SourceText": "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.", + "text": "Dumela @fields.group_name! Kajeno re keteka dikhoedi tse pedi tsa @global.parent_app!\nBekeng ena otla ithuta ho thusa ngoana oa hau ho latela melao ea lapeng.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "How to talk to my teen", - "text": "Mokhoa oa ho bua le mocha oa ka", + "SourceText": "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.", + "text": "Nahana ka di nako tse o etseng bo nnete ba hore mocha oa hao a bososele, le tlhokomelo eohle eo o mo fileng eona. \n\nKa nnete o lokela ke ho ba motlotlo haholo- ena ke nako e thata ho ba motswadi.", "type": "data_list", "note": "" }, { - "SourceText": "Steps to deal with news", - "text": "Mehato ea ho sebetsana le litaba", + "SourceText": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!", + "text": "O sebeditse hantle haholo - o se o fumane disebediswa tse 6 tsa botswadi! Etsa thupelo e latelang ho fumana tse ding!", "type": "data_list", "note": "" }, { - "SourceText": "How can I help my teen choose well?", - "text": "Nka thusa joang mocha oa ka ho khetha hantle?", + "SourceText": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.", + "text": "Phethela thupelo mme o leke ho buisana le mocha wa hao hore a bolele ntho e le nngwe e molemo le e le nngwe e mpe e ka hlahiswang ke boitshwaro bo itseng le le mmoho.", "type": "data_list", "note": "" }, { - "SourceText": "What influences teen decisions?", - "text": "Ke eng e susumetsang liqeto tsa bacha?", + "SourceText": "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?", + "text": "Na o se o kgonne ho tla ka ntho e le nngwe e molemo le ntho e le nngwe e mpe e ka bakwang ke boitshwaro bo itseng o na le motjha wa hao?", "type": "data_list", "note": "" }, { - "SourceText": "How does my teen feel?", - "text": "Mocha oa ka o ikutloa joang?", + "SourceText": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!", + "text": "O entse mosebetsi o motle ka ho qeta @data.workshop.w_consequence.in_text_title. Hosasane, o ka kena thupelong e ncha ho o thusa ho phomola, ho natefeloa le ho ithuta litsebo tse sebetsang!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_consequence.in_text_title. should not be translated." }, { - "SourceText": "Changing negative to positive", - "text": "Ho fetola linto tse mpe ho tse ntle", + "SourceText": "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.", + "text": "Liphello tse khutsitseng li thusa ngoana oa hau ho latela melao. Haeba ha o so qete @data.workshop.w_consequence.in_text_title, leka ho etsa joalo!\n\nO entse hantle ka ho bontsha boitlamo bo bongata hakana.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_consequence.in_text_title, should not be translated." }, { - "SourceText": "Help yourself cope", - "text": "ithuse ho sebetsana", + "SourceText": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.user_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Help your teen cope", - "text": "Thusa mocha oa hao ho sebetsana le boemo boo", + "SourceText": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.group_name! Tlokotsi e ka hlahela mang kapa mang- ho itokisetsa ho thusa haholo.\n\nThupelo ena e tlo ho u thusa.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Practical steps", - "text": "Mehato e sebetsang", + "SourceText": "Be proud, you are a committed parent. This is a big achievement!", + "text": "E ba motlotlo, o motsoali ea ikemiselitseng. Ena ke katleho e kholo!", "type": "data_list", "note": "" }, { - "SourceText": "Relax", - "text": "Kgatholoha", + "SourceText": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.", + "text": "Likoluoa li ka nna tsa etsahala, mme RE KA itokisa!\n\nQala thupelo e latelang ho bona hore na u etsa joang le ngoana oa hao.", "type": "data_list", "note": "" }, { - "SourceText": "**Relax** @global.parent_point", - "text": "**Kgatholoha** @global.parent_point", + "SourceText": "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.", + "text": "Re thabile haholo hore ebe o na le rona leetong lena la botswadi!\n\nPhethela @data.workshop.w_crisis.in_text_title mme ho ithuta mekhoa e metle ea ho itshwaraha mocha oa hao a ho hloka haholo.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." }, { - "SourceText": "Doing a relaxation activity", - "text": "Ho etsa ntho e o kgathollang", + "SourceText": "Have you and your teen discussed what you would do in a crisis?", + "text": "Na wena le mocha oa hao setse le buisane ka seo le tla se etsang ha ho nale tsietsi?", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o etsa ntho e o kgathollang, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!", + "text": "O sebeditse ka ho phethela @data.workshop.w_crisis. Hosane o ka fumana thupelo ea ho qetela ho bontsha leeto la hao, hape hore o nahane ka seo o ka se etsang ho tloha moo!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_crisis. should not be translated." }, { - "SourceText": "Treat yourself well", - "text": "Itlhokomele hantle", + "SourceText": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.", + "text": "Thupelo ea ho qetela e hosane.\n\nPele, leka ho qeta @data.workshop.w_crisis.in_text_title. Ka tsela ena, o tlo kgona ho tlatseletsa tsebo ea hao ea botsoadi mme o etse qeto ea hore na o tla etsa eng ka mor'a moo.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_crisis.in_text_title. should not be translated." }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "**Itlhokomele hantle** @global.parent_point", + "SourceText": "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Dumela @fields.user_name, o sebeditse hantle haholo ka ho thoma beke ea 4!\n\nBeke ena e thusa ho eketsa monyetla oa hore mocha oa hao a etse seo o se kopang hore a se etse.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.user_name, should not be translated." }, { - "SourceText": "Doing something they like for themselves", - "text": "Ho iketsetsa ntho eo a e ratang", + "SourceText": "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Dumela @fields.group_name, o sebeditse hantle haholo ka ho thoma beke ea 4!\n\nBeke ena e thusa ho eketsa monyetla oa hore mocha oa hao a etse seo o se kopang hore a se etse.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name, should not be translated." }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o itlhokomela hantle, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!", + "text": "e ba mosa mo ho wena. Ha ho na motswadi ea phethahetseng. Ho sebedisa @global.parent_app ho bontsha hore oa tsotella!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Praise yourself", - "text": "Ipabatse", + "SourceText": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.", + "text": "Bacha ha ba mamele ka di nako tsohle. Sheba thupelo ea bekeng ena, ho ithuta kamoo ditaelo tse ntle di ka thusang ka teng.", "type": "data_list", "note": "" }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "**Ipabatse** @global.parent_point", + "SourceText": "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.", + "text": "Ditaelo tse ntle di ntlafatsa boitshwaro.\n\nTlatsa @data.workshop.w_instruct.in_text_title bakeng sa maikutlo a hore na sena se ka sebetsa joang lelapeng la hao.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Praising themselves", - "text": "Ha ba ipabatsa", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title -o hatela pele haholo.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o ipabatsa, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively di nako - o hatela pele haholo.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "One-on-one time", - "text": "Nako ya boinotshing", + "SourceText": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!", + "text": "Rea o thoholetsa, o phethile @local.workshop_data.in_text_title.\n\nHosane, o tla fumana wekshopo e ntjha e ho letetse.O tla bona phapang e kgolo ka ho etsa diphetoho tse nyane!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_instruct.in_text_title. should not be translated." }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "**Nako ya boinotshing** @global.parent_point", + "SourceText": "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?", + "text": "Batswadi ba bang ba sebedisa app ena haba fetsa ho ja dijo tsa mantsiboea. Why o sa tlatse @data.workshop.w_instruct.in_text_title ha o nale metsotso e seng mekae?", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Spending time with their teen", - "text": "Ha a qeta nako le motjha wa hae", + "SourceText": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Dumela @fields.user_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app." }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o ba le nako ya boinotshing, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Dumela @fields.group_name! O thoma khoeli ea hao ea bobeli ea ho sebelisa @global.parent_app. Hlollang!\n\nHoo e ka bang lelapa le leng le le leng le na le mathata a lichelete, ka hona, thupelo ea beke ena e tla u fa sesebelisoa se tla ho u thusa ho rala litšenyehelo tsa hau e le hore u ka ba le chelete e lekaneng ea ho qeta khoeli.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app." }, { - "SourceText": "Praise your teen", - "text": "Babatsa motjha wa hao", + "SourceText": "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!", + "text": "Ha o mong. Batswadi lefatsheng ka bophara ba tobane le mathata a tshwanang.\n\nO etsa sohle se matleng a hao, mme re motlotlo ka wena!", "type": "data_list", "note": "" }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "**Babatsa motjha wa hao** @global.parent_point", - "type": "data_list", - "note": "The string @global.parent_point should not be translated." - }, - { - "SourceText": "Praising their teen when they did positive thing", - "text": "Ha ba babatsa batjha ba bona ha ba entse ntho e ntle", + "SourceText": "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.", + "text": "Na o ikutlwa o imetswe ke mathata a ditjhelete? Na motjha wa hao o dula a o kopa dintho tseo o ke keng wa kgona ho mo rekela tsona? \n\nWekshopo ya bekeng ena e sebetsana le ditaba tsa ditjhelete le ho etsa bajete.", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o babatsa motjha wa hao, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!", + "text": " Theha tekanyetso ea lelapa le mocha oa hao - e tla thibela likhang tsa chelete.\n\nTlatsa @data.workshop.w_money.in_text_title ho bona hore na joang. Ho bonolo - o tla bona!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title should not be translated." }, { - "SourceText": "Get positive", - "text": "Bua se tshwanetseng", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Na o se o buile le motjha wa hao ka bajete ya lelapa?", "type": "data_list", "note": "" }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "**Bua se tshwanetseng** @global.parent_point", + "SourceText": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.", + "text": "Ke hantle hore ebe o phethetse @data.workshop.w_money.in_text_title. Hosane, ho tla thakgolwa thupelo e ncha ho o thusa ho beha melao e sebetsang ea lelapa.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title! should not be translated." }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Ho fa motjha ditaelo tsa se tshwanelang ho etswa", + "SourceText": "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.", + "text": "Batsoali ba bangata ba re ho etsa moralo oa tshebeliso ea chelete ho tlisa khotso. Haeba ha o so qete @data.workshop.w_money.in_text_title, leka ho etsa joalo! \n\nRea leboha ka boitelo ba hao ba botsoali.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_money.in_text_title, should not be translated." }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o fana ka taelo ya se tshwanetseng ho etswa, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Lumela @fields.user_name! O qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Breathe not yell", - "text": "Hema o se hweletse", + "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Lumela @fields.group_name! U qala beke ea hau ea boraro ea @global.parent_app.\n\nSeboka se secha se lokile!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "**Hema o se hweletse** @global.parent_point", + "SourceText": "Well done for using @global.parent_app! Remember, small things make a big difference.", + "text": "O entse hantle ka ho sebedisa @global.parent_app! Hopola hore, dintho tse nyane di tlisa phetoho e kgolo.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Taking a pause before responding", - "text": "Ho nka kgefu pele o araba", + "SourceText": "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!", + "text": "Rea leboha ka ho e tsetela le ba lelapa la hao. Leka @data.workshop.w_praise.in_text_title ho aha boqhetseke ba botswadi bo lokileng!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o nka kgefu pele o araba, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.", + "text": "Pabatso ke moriana o moholo. \n\nPhethela @data.workshop.w_praise.in_text_title mme o bone kamoo WENA o ka sebedisang pabatso kateng lelapeng la hao.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Good money choice", - "text": "Kgetho e nepahetseng ya ditjhelete", + "SourceText": "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!", + "text": "Babatsa mocha oa hao ha entse ntho le e leng nngoe eo a e entseng hantle.\n\nMme ke leng la bofelo mo o ileng wa ithorisa kapa wa babatsa motho o mongwe o moholo? E leke!", "type": "data_list", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "**Kgetho e nepahetseng ya ditjhelete** @global.parent_point", + "SourceText": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.", + "text": "Mosebetsi o motle haholo, o phethile @data.workshop.w_praise.in_text_title. Thupelo e ncha e tlabe e ho loketse hosane. E leke - o tla bona phetoho mo boitshwarong ba mocha oa hao.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title. should not be translated." }, { - "SourceText": "Keeping the budget", - "text": "Ho boloka bajete", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.", + "text": "Dumela @global.user_name, thupelo e ncha e tla be eo emetse hosane!\n\nHo bonahala o kare ha o so qete @data.workshop.w_praise.in_text_title. E khutshoane (ka tshepisa) - e fe monyetla ha o nale metsotso e seng mekae.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name,\n@data.workshop.w_praise.in_text_title." }, { - "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o etsa kgetho e nepahetseng mabapi le ditlhoko, dintho tseo le di batlang ebile le baballa tjhelete, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Dumela @fields.user_name! Beke e ncha, thupela e ncha! ithute ho beha melao ea lapeng eo mocha oa hao a e iutloisisang ebile a e latela.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Calm consequence", - "text": "Ditlamorao tse fanwang ho theotswe moya", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Dumela @fields.group_name! Beke e ncha, thupela e ncha! ithute ho beha melao ea lapeng eo mocha oa hao a e iutloisisang ebile a e latela.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "**Ditlamorao tse fanwang ho theotswe moya** @global.parent_point", + "SourceText": "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!", + "text": "Na o lekile ka hohle kamoo o ka khonang empa ngoana oa hau a ntse a le moferefere? Hopola, o etsa mosebetsi o motle - ho tla ba le linako tse monate le bona!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a consequence in a calm way", - "text": "Ho jarisa motjha ditlamorao ka moya o fatshe", + "SourceText": "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.", + "text": "Kea leboha ka ho tsetela ho botsoali ba hao.\n\nEtsa @data.workshop.w_rules.in_text_title ho thusa ngoana oa hao ho utloisisa le ho latela melao ea lapeng.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o fana ka ditlamorao o theotse moya, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!", + "text": "O haufi le ho fumana thulusi e nngwe ya botswadi! Phethela @data.workshop.w_rules.in_text_title, beha molao O LE MONG o bonolo le o utlwahalang le motjha wa hao, mme o bone ha dintho di fetoha!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Safe", - "text": "Bolokehile", + "SourceText": "Have you managed to set a rule with your teen?", + "text": "Na o kgonne ho beha molao mmoho le motjha wa hao?", "type": "data_list", "note": "" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "**Bolokehile** @global.parent_point", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!", + "text": "Rea o thoholetsa, o phethetse @local.workshop_data.in_text_title.\n\nHosane, wekshopo e ntjha e tla o thusa ho tseba seo o lokelang ho se etsa ha batjha ba bontsha boitshwaro bo bobe (kapa bo botle)!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @local.workshop_data.in_text_title. should not be translated." }, { - "SourceText": "Planning or keeping a family safety plan", - "text": "Ho etsa moralo kapa ho boloka moralo wa lelapa wa polokeho", + "SourceText": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!", + "text": "Hosane ho tla buloa thupelo e ncha!\n \nTlatsa sehlooho sa @local.workshop_data.in_text_title pele o tsoela pele. Metsotso e seng mekae feela ho thusa ngoana oa hau ho latela melao ea hau!", "type": "data_list", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", - "text": "Nako le nako ha o etsa ho hong ho tiisa hore motjha wa hao o bolokehile, tobetsa @global.parent_point mme o keteke katleho ya hao!", + "SourceText": "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Dumela @fields.user_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Did it? Tap it!", - "text": "O e entse? E tobetse!", + "SourceText": "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Dumela @fields.group_name! O batla o fihlile qetellong ya diwekshopo tsa @global.parent_app! Re leboha boikemisetso ba hao ba nako e telele. \n\nWekshopo ya bekeng ena e amana le ho tiisa hore batjha ba rona ba sireletsehile, bobedi inthaneteng le motseng.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Ke ditaba tse monate! O sebeditse ka hore le qete nako mmoho. Seo se rala motheo wa dikamano tse ntle le motjha wa hao!", + "SourceText": "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!", + "text": "Ho ba motsoali ho thata, haholo-holo hona joale. E ba motlotlo ka lintho tseo o li finyeletseng. Ka tlhokomelo eo uo ba fang eona. Le ka nako e o etsa hore ba bososele. O sebeditse!", "type": "data_list", "note": "" }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Re thaba le wena! Ho qeta nako ya boinotshing ho bontsha hore batjha ba hao ba bohlokwa ho wena. Seo se etsa phapang e kgolo!", + "SourceText": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.", + "text": "Nahana ka ditsebo tsa ho ba motswadi tseo o di fumaneng!\n\nTlatsa hupelo e latelang ho fumana ditsebo tse ding.", "type": "data_list", "note": "" }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Ke ditaba tse monate! Ho qeta nako le motjha wa hao ho ka etsa hore motjha wa hao a ikemisetse ho o thusa haholo. O etsa hantle!", + "SourceText": "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.", + "text": "Ho qoqa hammoho ka sechaba sa habo bona le diphephiso tsa inthaneteng ho thusa ka ho nepahatsa hore bacha ba dula ba bolokehile. \n\nTlatsa thupelo ea @data.workshop.w_safe.in_text_title ho bona hore na o ka etsa sena joang.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "O entse hantle! Ho qeta nako ya boinotshing le motjha wa hao ho o fa monyetla wa ho ithuta dintho tseo motjha wa hao a di thahasellang le bokgoni ba hae. O kgalala!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Na o se o buile le motjha wa hao ka mehato ya polokeho?", "type": "data_list", "note": "" }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Ke mosebetsi o tswileng matsoho! Ho qeta nako mmoho ho thusa ho haha dikamano tse matla le tse mofuthu pakeng tsa hao le motjha wa hao.", + "SourceText": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!", + "text": "Rea a o thoholetsa, o phethetse @data.workshop.w_safe.in_text_title. Hosane, o tla be o emetswe ke wekshopo e ntjha e tla thusa wena le lelapa la hao ho sebetsana le boemo bofe kapa bofe – ha le sebetsa mmoho le ka etsa dintho tse ngata!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title. should not be translated." }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Ka dinako tse ding ho tla ba bonolo mme o thabele ho qeta nako le batjha ba hao, mme ka dinako tse ding ho tla ba thatanyana. Ho qeta nako mmoho ho tla ntlafatsa dikamano tsa lona haholo; o entse hantle ka ho leka!", + "SourceText": "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.", + "text": "Qeta @data.workshop.w_safe.in_text_title pele o fetela pele. Sena se ka thusa ho thibela mathata a mangata.\n\nO sebeditse hantle ha holo ka ho sebedisa @global.parent_app ho tshehetsa ba lelapa la hao.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@global.parent_app" }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Re maswabi ho utlwa hore ho bile thata hore o qete nako le motjha wa hao. Ka dinako tse ding, kaofela re ba le mathata. Imamelle mme o mamelle motjha wa hao - hoba tsohle di tla loka. O entse hantle ka ho leka!", + "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", + "text": "Beke ena e bua ka UENA! Itshoare hantle. U tshoaneloa ke eona!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Re thabela ho utlwa hore ho tsamaile hantle; o kgalala!", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", + "text": "Qala lenaneo le lecha la @global.parent_app hosane. O tla bona liphetho tse ntle!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Ke ditaba tse monate! O tshwanelwa ke dinako tse monate!", + "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", + "text": "Hopola ho bolella balekane ba hau ba @global.parent_app ka sesebelisoa. Hosane, le ka qala ho etsa lithupelo tsa @global.parent_app hammoho!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Re maswabi hore ebe ho bile boima ka lehlakoreng la hao. O kgalala hobane o lekile!", + "SourceText": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.", + "text": "Dumela @fields.user_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Ke thabela ho utlwa hore seo se entse hore o ikutlwe hantle! Pele ya pele ka mosebetsi o motle. Motjha wa hao o ithuta dintho tse ngata ho wena!", + "SourceText": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Dumela @fields.group_name! O hatela pele hantle leetong la hao la botswadi! \n\nHo ba le batjha ho bolela ho tlameha ho sebetsana le mathata a mangata a sa lebellwang. Wekshopo ena e tla bontsha kamoo o ka sebetsanang le wona kateng.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Qalong ho ka ba thata ho bua ka hore na re ikutlwa jwang, empa wena le motjha wa hao le tla tlwaela. Le nne le leke, mme le tla bona ditholwana tse molemo!", + "SourceText": "Your commitment is inspiring. Keep calm and carry on!", + "text": "Re kgothatswa ke boikemisetso ba hao. Theola moya mme o peselletse!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle. Ho buisana ka ditjhelete kannete ho etsa hore lelapa la hao le be matla!", + "SourceText": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.", + "text": "Mathata a sa lebellwang a hlaha haholo ha re nale bana bao e leng bacha. \n\nithute hore na o ka bua jwang ka mathata ana thupelong e latellang.", "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. O entse hantle ka ho iteka!", + "SourceText": "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.", + "text": "O motjheng o nepahetseng wa ho qala ho rarolla mathata hammoho le motjha wa hao!\n\nPhethela @data.workshop.w_solve.in_text_title mme o fumane tsebo e nngwe ya bohlokwa ya botswadi.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle. Melao e sa fetofetoheng e thusa batjha ba rona hore ba ikutlwe ba sireletsehile, ebile e ya ba sireletsa!", + "SourceText": "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Na o se o kile wa leka mehato e mene ya ho rarolla mathata le motjha wa hao? \nBO TSEBE, BO RAROLLE, E LEKE, E TUTSE!", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. Ho theha melao mmoho ho hloka hore motho a ho phete ka makgetlo empa o ke ke wa itshola!", + "SourceText": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Ke hantle hore ebe o phethetse @data.workshop.w_solve.in_text_title. Hosane, ho tla thakgolwa wekshopo e ntjha ho o thusa ho sireletsa motjha wa hao.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title. should not be translated." }, { - "SourceText": "Great to hear it went well!", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle!", + "SourceText": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.", + "text": "O tla fumana thupelo e ncha hosane!\n\nKa ho tlatsa @data.workshop.w_solve.in_text_title pele, o tla tseba ho rarolla mathata mmoho.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Ke maswabi ho utlwa hore ho bile thata ho wena. Ho beha ditlamorao mmoho ho tla etsa hore motjha wa hao a batle ho latela melao hangata!", + "SourceText": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Dumela @fields.user_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Ke maswabi ho utlwa hore ho bile boima. Ka dinako tse ding re tlameha ho tswela pele re iteka. Fumana nako ha wena le motjha wa hao le theotse moya ebe le leka ho buisana ka bothata le sebedisa mehato e mene ya ho rarolla mathata. Matla ke kopano!", + "SourceText": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Dumela @fields.group_name! Re o lakaletsa katleho ha o qadile beke ya bo5 ya @.\n\nO letetswe ke wekshopo e ntjha ya botswadi e nang le dikeletso tsa kamoo o ka dulang o kgobile matshwafo kateng mme o laole boemo ha batjha ba rona ba batla ho re fapanya hlooho.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ho buisana ka dikotsi le ditsela tsa ho tshehetsana ho thibela mathata mme hantlentle ho thusa ka hore motjha wa hao a dule a sireletsehile.", + "SourceText": "Manage anger and stress with this new workshop. It helps you take better care of yourself.", + "text": "Laola khalefo le khatello ea maikutlo ka thupelo ena e ncha. E tlo o thusa ho itlhokomela hamolemo.", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Ke maswabi ho utlwa hore ho bile boima. Ho etsa mmapa wa dikotsi le dibaka tseo o ka fumanang thuso ekaba ntho e thata le e ka etsang hore motho a nkehe maikutlo. Empa ke sona se ka o thusang ho tiisa hore motjha wa hao o sireletsehile!", + "SourceText": "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.", + "text": "Na o ikutlwa o hloletsoe? Ho hema ka botebo ho a thusa.\n\nFetola @data.workshop.w_stress.in_text_title ho o thusa ho sebetsana le khatello ea maikutlo.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Ke maswabi hore dintho ha dia tsamaya hantle hakaalo. Eo hase ntho e bonolo. Leka ho dula fatshe le ho buisana le motjha wa hao ka taba ena hape. Hape, na ho na le motho e mong eo motjha wa hao a mo tshepang ya ka bang teng ha o buisana le motjha wa hao?", + "SourceText": "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.", + "text": "Na o ikutlwa o na le khatello ea maikutlo bekeng e na? Leka ho hemela hodimo ka makgetlo a seng makae pele o araba motjha wa hao - seo se ka thusa haholo.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ho beha ditlamorao tse nepahetseng ho thusa batjha ho itshwara hantle ebile ho etsa bophelo ba lelapa bo kgutsitseng haholo.", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.", + "text": "O entse hantle ka ho hemela hodimo pele o arabela motjha wa hao! Nako le nako ha o hemela hodimo, o fumana matla a ho laola boemo.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Ke thabela ho utlwa hore ho tsamaile hantle! Ha motjha wa hao a ithuta tsela ya ho rarolla mathata, o tla sebedisa tsebo eo bophelo bohle ba hae. Ke mpho e babatsehang!", + "SourceText": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!", + "text": "O sebeditse ka ho phethela @data.workshop.w_stress.in_text_title. Hosane, o ka fumana wekshopo e ntjha e tla o thusa ho phutholoha, ho thaba le ho ithuta tsebo e ntjha!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title. should not be translated." + }, + { + "SourceText": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!", + "text": "itokisetse thupelo e ncha ea hosane.\n \nKa ho tlatsa @data.workshop.w_stress.in_text_title pele, o rala motheo oa bohlokoa: Haeba o ikutloa o thabile, lelapa la hao le lona le tla thaba!", + "type": "data_list", + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." } ] \ No newline at end of file diff --git a/packages/app-data/translations_source/from_translators/translated.za_tn.json b/packages/app-data/translations_source/from_translators/translated.za_tn.json index db63d6fe44..8698502af8 100644 --- a/packages/app-data/translations_source/from_translators/translated.za_tn.json +++ b/packages/app-data/translations_source/from_translators/translated.za_tn.json @@ -1,745 +1,733 @@ [ { - "SourceText": "Home Practice", - "text": "Katiso ya Legae", + "SourceText": "When everything feels like it is falling apart", + "text": "Fa tsotlhe di utlwalega okare di a phutlhama", "type": "template", "note": "" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Ditiro tse dinnye, dipholo tse di kgolo! Batsadi bao ba dirisang botswerere jwa bone jwa di workshop ko gae ba nna le dipholo tse di botoka.", + "SourceText": "And you can't help but raise your voice", + "text": "Ebile o palela ke go itshwara mme o isa lentswe kwa godimo", "type": "template", "note": "" }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Beke e e tlang, o tla bolelela setlhopha sa gago gore ikatiso ya ko gae e tsamaile jang. Gape lo ka tshegetsana le go gopotsana mo gare ga beke.", + "SourceText": "When all the frustrations are beginning to start", + "text": "Fa tsotlhe tse di kgobang marapo di simolola", "type": "template", "note": "" }, { - "SourceText": "How did it go?", - "text": "Go tsamaile jang?", + "SourceText": "Remember that you have a choice", + "text": "Gopola gore o na le boikgethelo", "type": "template", "note": "" }, { - "SourceText": "talk to their teens about how they feel", - "text": "bua le basha ba bone ka gore ba ikutlwa jang", + "SourceText": "Remember all we have to be grateful for", + "text": "Gopola tsotlhe tse o ka di lebogelang", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "bua le mosha wa gago ka gore o ikutlwa jang", + "SourceText": "Let's slow down", + "text": "A re fokotse lobelo", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "A o kile wa kopana le dikgwetlho fa o leka go @local.hp_description_second_singular?", + "SourceText": "Take a few deep breaths", + "text": "Hemela kwa teng makgetlhonyana", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Ke eng se se neng se le bokete fa o ne o leka go @local.hp_description_second_singular?", + "SourceText": "Because I really couldn't love you more", + "text": "Ka gonne ga go na gore nka go rata go fetisa", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "Sorry we missed this!", - "text": "Re itshwarele re fetilwe ke seno!", + "SourceText": "You can take pause, you can count to 10", + "text": "O ka emisa go se kae, o ka bala go fitlha ka 10", "type": "template", "note": "" }, { - "SourceText": "Do you want to share it with us?", - "text": "A o batla go se arolelana le rona?", + "SourceText": "Play a game or do something fun", + "text": "Tshameka motshameko kgotsa dira sengwe se se monate", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Re lebogela go bo o re boleletse kgwetlho ya gago! Re tlile go dirisa pegelo eno ya gago go tokafatsa @global.parent_app.", + "SourceText": "You can phone a friend, someone to confide in", + "text": "O ka letsetsa tsala, mongwe yo o ka buang le ene", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Re maswabi go utlwa gore dikakantsho ga di a go thusa.", + "SourceText": "Remember you're not the only one", + "text": "Gopola gore ga se wena fela", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "A o batla go re bolelela gore o nagana ke eng se se tla go thusang?", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Botsanang gore, “Ke eng se se go itumedisitseng gompieno?”\n* Botsanang gore, “Ke bothata bofe jo o kopaneng le jone gompieno?”\n* Botsanang gore, “Nka go thusa jang?”\n* Lekang go dira seno mmogo letsatsi le letsatsi; e ka nna ka nako ya fa lo ja dijo tsa maitseboa mmogo kgotsa pele ga lo ya go robala.", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Ke lebogela go bo o mpoleletse! O motsadi yo o molemo go bo o batla go ipha nako le mosha wa gago. Go dira pharologano thata. Tswelela pele o dira tiro e molemo, mme gopola, ke fano ka metlha go go tshegetsa!", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "* Botsa mosha wa gago gore ke mofuta ofe wa dijo tse a tla ratang go di ja. \n* Di baakanyeng mmogo! \n* Ba letle go refosanya go nna moapei mogolo – ba etelela pele, mme o latela ditaelo tsa bone. \n* O ka nna wa ba thusa go dira tekanyetsokabo ya ditswaki! \n\nGa o akanye gore seno se ka dira? Kopa mosha wa gago gore BA KA rata lo dira eng mmogo. Ba letle go etelela pele. Iketle. Itumele.", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Fano ke botswerere jwa beke eno jo o ka bo itseelang! \n\nBo dirise kwa gae mme o bo iponele nako nngwe le nngwe go @global.parent_centre ya gago.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "* Tshikinyang matsogo a lona a molema mo moweng ga 8 fa lo ntse lo bala go fitlha go 8.\n* Dirang seno ka bonako le kwa godimo ka moo go kgonegang.\n* Boeletsang seno ka matsogo a lona a mangwe. Boeletsang seno ka maoto a lona ka bobedi.\n* Dirang seno makgetlo a le 7, morago ga moo a le 6 mme lo tswelele go fitlhelela lo fitlha ko go 1.\n* Mongwe le mongwe o goeletsa a re “Koko e e sa utlweng” ba bo ba diragatsa go bina ga bone go go gaisang ga koko e e sa utlweng!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Iketleng Mmogo", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Tlhama go bina go le mmalwa ga dipina tse di ratiwang ke mosha wa gago. \n* Motho a le nosi o a bina mme ba bangwe botlhe ba a mo etsisa. \n* Refosanang ka go etelela pele. \n* Diragatsang seno fa pele ga ba lelapa!", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Iketle", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Motshameko ono o botoka fa o tshamekiwa ke batho ba feta ba le 2.\n * Motho a le nosi o itira e kete o dira sengwe - Sekai, go kama moriri kgotsa go apaya dijo tsa maitseboa. \n* Motho yo mongwe o botsa gore, “O dirang?”\n* Motho wa ntlha o tlhoka go bua sengwe se se sa amaneng ka gope le go kama moriri, Sekai, “Ke bofa ditlhako.” \n* Motho wa bobedi jaanong o simolola go itira ekete o bofa ditlhako tsa gagwe go fitlhelela motho yo mo ntshwa a botsa gore, “O dirang?” \n\nKarabo e tshwanetse ka metlha ya nna e e farologaneng go na le se o se dirang!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "A re dire tiro ya go iketla mmogo e e khutshwane – e tla tsaya kafa tlase ga motsotso o le 1 mme o tla ikutlwa o iketlile le go feta.", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Ga go kgonege gore o nne o ntse o tsere loeto, mme o ka nna wa lora ka metlha! Botsa mosha wa gago dipotso tseno:\n* O ka rata go tsaya loeto lwa go ya kae? Wa go tsamaya lobaka lo lo kae? O ka paka eng? O ka dira eng mo loetong lwa gago? O tla bona eng?\n* Lebelelang mmapa mmogo kgotsa lo o thale. \n * Tlhopha naga e mosha wa gago a iseng a e utlwalele mme lo ithute go le gontsi ka naga eo.", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Tsenya tiro eno go @global.my_relaxes", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Tlhophang motshameko kgotsa ikatiso e lo ka e dirang mmogo. Dirang tshwetso ka thulaganyo. A lo tlile go dira seno letsatsi le letsatsi? Ka lobaka lo lo kae? \n\nE lekeng beke yotlhe. Kwa bofelong jwa beke, wena le lelapa la gago ipotseng dipotso tse di latelang:\n * Go tsamaya jang? \n * Lo ikutlwa jang kwa tshimologong ya beke? \n * Lo ikutlwa jang kwa bofelong jwa beke? \n * Ke eng se re ka se dirang ka tsela e e farologaneng beke e e latelang?", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "Listen and relax", - "text": "Reetsa mme o iketle", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Wena le mosha wa gago lo ka rulaganya lenaane la baeng la batho ba ba itsegeng ba o ka ratang ba nne gone ko moletlong wa gago. Mongwe le mongwe wa lona a ka nna le batho ba le batlhano – e ka nna ba kgale kgotsa ba metlha ya gompieno. O ka laletsa mang? Le gore a baeng ba gago ba tla utlwana?", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Buisa mme o iketle", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Nna le puisano le mosha wa gago ka selo se ba se ratang.\n\nE ka nna sengwe le sengwe se ba tlhophang go bua ka sone: metshameko, ditsala, mmino, batho ba ba tumileng...\n\nLeka go reetsa mosha wa gago mme o mo neele sebaka sa go bua.", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "O naledi!\n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela ko teng gore o iketle.", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Tlang ka mefuta e meraro ya go ikatisa mmele e lo ka e dirang mmogo. Sekai, go tsamaya, go tshematshema, kgwele ya dinao kgotsa go bina.\n * Tlhopha e le nngwe mmogo mme lo e leke. \n * Fa ka bobedi lo e rata, dirang tshwetso ya gore lo tlile go e dira kgapetsa ga kae. Gangwe kgotsa gabedi ka beke? Moso mongwe le mongwe?\n* Lo akanyeng mmogo ka ditsela tsa go e dira monate le go feta. A o ka kgona go taboga go ya bokgakaleng jo bo rileng? Refosanang ka go nna bakaedi? Kgothatsanang ka tuelo e nnye ya mahala?", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "O amogetswe @fields.user_name", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Refosanang ka go “etelela pele”. Bua dipolelwana tsa matseno go tsenyeletsa batho botlhe. Mme yo o “etelelang pele” o tla naya taelo mme mongwe le mongwe a dire tiro ka bonako jo bo kgonegang:\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tshwara sengwe se se khibidu.” \n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tlolela ko godimo le ko tlase ga lesome.”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Baya ditlhako mo di nnang teng.”", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again!", - "text": "Go gontle go go bona gape!", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Tlhopha moanedi wa polelo go simolola go itlhamela polelo\n* Bareetsi ba polelo ba ka nna ba go tsena ganong ka lefoko ka nako epe fela.\n* Moanedi wa polelo o tlhoka go tsenyeletsa lefoko leo mo polelong ya gagwe.\n* Fa polelo e fedile, leka moanedi wa polelo yo o farologaneng!", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "A re bone gore beke eno e tsamaile jang.", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Simolola polelo ka “Ga twe e rile....”\n* Letla mosha wa gago go itirela polelwana e e latelang.\n* Morago ga moo itirele polelwana.\n* Refosanang go fitlhelela lo nna le polelo e e ntshwa e e gakgamatsang.\n* Netefatsang gore lo khutlhisa polelwana ka ntlha e e molemo.\n* Botsa mosha wa gago gore ke karolo efe e a e ratileng thata ya polelo!", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Beke eno o dirile...", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Motho wa ntlha a re, “Ka Lamatlhatso, ke ya kwa... (s.k., ke ya kwa phakeng)”\n* Motho wa bobedi o tlatsa wa ntlha ka gore, “Ka Lamatlhatso, ke ya kwa phakeng le... (s.k., ke etela tsala ya me e kgolo).\n* Motho mongwe le mongwe o tlatsa yo o sa tswang go feta, ba leka go akanya ka dilo tsotlhe tse di itumedisang go ka di dira ka Lamatlhatso.", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "O bontsha o ikemiseditse go nna motsadi le go itlhokomela. \n\nO setswerere.", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Motshameko ono o ka tshamekiwa ka bobedi kgotsa le batho ba le bantsi mo setlhopheng.\n* Emang lo lebane kgotsa mo kgolokweng. \n* Motho a le nosi o etelela pele mme ba bangwe botlhe ba a mo etsisa, ba leka go suta ka nako e le nngwe le moeteledipele.\n* Netefatsa gore moeteledipele o suta ka iketlo moo go lekaneng gore mongwe le mongwe a mo latele! Bina ka tsela ya gore go sute mmele otlhe ka selekanyo se se farologaneng.\n* Morago ga sebaka, yo mongwe e nne ene a etelelang pele. Naya mongwe le mongwe tshono ya go etelela pele.\n * Leka seno go sena baeteledipele!", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "Lebelelang Mmogo", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Motho wa ntlha ke ene a tlhophang kgotsa a opelang pina.\n * Mongwe le mongwe o tshwanetse go fopholetsa leina la pina (go e dira thata ba ka fopholetsa moopedi).\n * Wa ntlha go e fopholetsa sentle e nna ene moeteledipele yo o latelang.", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video together!", - "text": "A re lebe bidio mmogo!", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Motshameko ono o botoka fa o na le bobotlana batho ba le 3.\n * Simolola mo teng ga kgolokwe mme o bo o fetisa “thwantsho” e le nngwe go dikologa kgolokwe (kgotsa go “opa diatla” fa o sa kgone go thwantsha).\n * O “thwantsha” gangwe go latlhela “thwantsho”, le gangwe go e tshwara. Leba motho yo o mo latlhelelang yone. \n * Letlhakore (godimo, tlase, tlhamaletseng, kgogoropo, dikologang fa fatshe) le maatla (thata, bonolo, magareng) a o thwantshang ka one a tshwanetse go ama tsela e motho a e tshwarang ka teng. \n * O ka busetsa morago “thwantsho”, wa e latlhela mo moweng, le go e tshwara ka makgetlo a le mmalwa pele ga o e fetisa. \n * Fa mongwe le mongwe a setse a tshwara seno, o ka simolola go suta go dikologa phaposi, o ntse o latlhela “thwantsho”. \n * A o ka e latlhela kafa tlase ga leoto? Mo mokotleng? Mo godimo ga tlhogo? Go kgaosetsa phetiso ya yone? Ijeseng monate ka “thwantsho monwana”!", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Leba", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Kwa bokhutlong jwa letsatsi, iphe motsotso wa go: \n\n* Bua le mosha wa gago ka selo se le nosi sa go ijesa monate ka seo ba se dirileng. \n* Ikakgole fa o dirile sengwe se le nosi se sentle gompieno. \n* O naledi!", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "A re lebelele bidio!", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Akanya ka maatla a a sa tlwaelegang. Sekai, go ya gongwe fela ka ponyo ya leitlho, go busetsa nako morago, go buisa megopolo. \n* Botsa mosha wa gago jaana, “Fa o ka bo o na le maatla a a sa tlwaelegang a go […], o ne o tla a dirisa jang?”\n* Ba kgothaletse go taya maatla a bone a a sa tlwaelegang leina le go a diragatsa. \n* Jaanong letla mosha wa gago go go tlhophela maatla a a sa tlwaelegang.\n* Netefatsa gore o diragatsa maatla a gago a a sa tlwaelegang, le wena!", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Go gontle go go bona gape! A re simolole ka pina ya malapa a a gotlhe.", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Akanya ka maemo a mararo a a sa tshwaneng. Sekai, go kgweetsa koloi, go kgweetsa mokoro kgotsa go fofisa sefofane.\n* Di bolelele mosha wa gago o bo o mmotsa gore, “Ke efe e o ka e ratang?”\n* Ba botse gore goreng?\n* Jaanong akanya ka maemo a mangwe gape a le mararo kgotsa kopa mosha wa gago go go direla jalo.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "A re Fokotse Lobelo", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Bolelela mosha wa gago sengwe sa fa o ne o le mosha. Ke dilo di feng tse di neng di seo ka nako eo? Difouno tse di nang le inthanete? O ne o dirang go ijesa monate? O ne o tshwenyegile ka eng? O seka wa tshwenyega fa ba sa go bolelele sepe fa o botsa – sa botlhokwa ke gore ba reetse mme ba gopole. Nako tse dingwe basha ba rona ba lebala gore batsadi ba bone le bone ke batho!", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "O feditse workshop ya beke eno.", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Akanya ka dipolelwana tse tharo ka ga wena. Tse pedi di tshwanetse go nna tsa nnete mme e nngwe e nne ya maaka.\n* Go ka nna ga thusa go akanya ka dikeletso, ditoro, maitemogelo a ko sekolong, tse di rategang kgotsa tse di sa rategeng. Sekai: Ke tlhoile dipanana, serutwa se ke se ratang ke saense, mme ke eletsa e kete nkabo ke kgona go opela. \n* Di bolelele mosha wa gago mme o ba kope go fopholetsa gore ke efe e e leng maaka. \n* A ba fopholeditse ka nepo? A o ne o maketse?\n* Jaanong ba kope ba dire se se tshwanang. A lo ithutile sengwe se sesha ka yo mongwe?", "type": "template", "note": "" }, { - "SourceText": "See you soon.", - "text": "Re tla go bona mo bogautshwaneng.", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Akanya ka botswerere jo bosha jo lo ka bo ithutang mmogo le mosha wa gago. Sekai, go boloka kgwele e le mo moweng kgotsa mo leotong, thefosano, go dira sopo?\n * Refosanang ka go leka bokgoni jo bosha.\n * Netefatsa gore lo a akgolana, mme lo leke go ithuta le go tshameka mmogo!", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Buang Mmogo", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Botsanang dipotso. E ka nna dipotso dingwe le dingwe fela ka ga dilo tse o di ratang kgotsa se o se dirileng gompieno.\n* Molawana nosi fela ke gore o ka se arabe ka “Ee”, “Nnyaa” kgotsa “Gongwe”.\n* O ka kgona go tsaya lobaka lo lo kae? O ka itirela dikarabo tse di kgatlhang jang?\n* Refosanang mme lo tshameke gape!", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Bolelanang dikakantsho, lo tshegetsane!", + "SourceText": "Home", + "text": "Gae", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "E Lekeng Mmogo", + "SourceText": "Settings", + "text": "Diseting", "type": "template", "note": "" }, { - "SourceText": "Let's practice together.", - "text": "A re ikatiseng mmogo.", + "SourceText": "Template", + "text": "Thempoleiti", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Ikatiso ya mo gae ke yone e dirang botshelo jwa lelapa la rona bo nne botoka. Mme gantsi e tlisa dikgwetlho. \n\nA re bolelaneng dikatlego le mathata a rona, mme re thusane go bona dikakanyo tse re ka di lekang tse disha!", + "SourceText": "How to use @global.parent_app", + "text": "Go dirisa @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Akanya ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka: \n* Ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata? \n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo? \n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(E bile gongwe lo ka ikatisa gone jaanong gore e nne motlhofo moragonyana!)", + "SourceText": "In-Week Messages", + "text": "Melaetsa ya Beke", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Sekai sa puisano go tswa go @data.workshop.w_1on1.title", + "SourceText": "Campaigns", + "text": "Matsholo", "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." + "note": "" }, { - "SourceText": "Start Positively Together", - "text": "Simololang Sentle Mmogo", + "SourceText": "Notifications", + "text": "Dikitsiso", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "O amogetswe @fields.group_name", + "SourceText": "You have successfully entered developer mode.", + "text": "O tsentse mokgwa wa motlhami ka katlego.", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Go gontle go go bona gape! \n\nA re simolole ka go go kgathalela.", + "SourceText": "You have entered an incorrect code.", + "text": "O tsentse khoutu e e seng yone.", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Refosanang:\n* Arolelanang: O ikutlwa jang gompieno?\n* Akgola mongwe mo setlhopheng sa lona go bo a dirile sentle beke eno!\n\nGopola gore go sa kgathalesege gore o ikutlwa jang, go gontle o bo o le fano. Lotlhe lo tshwanelwa ke go akgolwa.", + "SourceText": "About @global.parent_app", + "text": "Ka ga @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Ideas from other families:", - "text": "Dikakantsho go tswa ko malapeng a mangwe:", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_app e tlhamilwe ke Parenting for Lifelong health (PLH) - kopantsho ya lefatshe ka bophara magareng ga baitsi ka botsadi go tswa go UNICEF, ba ga WHO le diunibesithi mo Aforika Borwa le UK, mmogo le di NGO tsa Aforika le malapa le basha botlhe ba Aforika ka bophara. Batsadi le basha ba dirile mmogo le rona mo go app le go thusa go netefatsa gore e bonolo go dirisa, ya itumedisa le go buisana.Diteng tse dingwe mo go app eno, jaaka go akanyetsa ditirwana le dikgang tsa tlhagiso, di dirilwe le batsadi le basha go netefatsa gore di maleba go ditlhokego tsa malapa. \n\nParenting for Lifelong Health (PLH) e ikemiseditse go neelana ka tshegetso ya mahala, didiriswa le mananeo go tshegetsa batsadi lefatshe ka bophara go rotloetsa pholo ya bana ba bona.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Question Time", - "text": "Nako ya Dipotso", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Ka go tobetsa konopo e e fa tlase o tla seta sesha app ka go e busetsa kwa diseting tsa yone tsa kwa tshimologong. \n\nSeno se raya gore kgatelopele ya gago yotlhe le tiriso ya data di tlile go phimolwa mme app ya gago e tla dira jaaka e ne e dira kgetlho la ntlha.\n\nTSHWAYANTLHA: Go seta app sesha go ka se dirololwe mme ga o kitla o kgona go boa o bona gape tshedimosetso epe.", "type": "template", "note": "" }, { - "SourceText": "It's time for some questions!", - "text": "Ke nako ya go botsa dipotso!", + "SourceText": "Open Survey", + "text": "Potsolotso e e Bulegileng", "type": "template", "note": "" }, { - "SourceText": "Listen Together", - "text": "Reetsa Mmogo", + "SourceText": "Select Language", + "text": "Tlhapha loleme", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio together!", - "text": "Tla re reetse kgatiso e e rekotilweng mmogo!", + "SourceText": "Workshop Options", + "text": "Dikakantsho tsa di-Workshop", "type": "template", "note": "" }, { - "SourceText": "Listen", - "text": "Reetsa", + "SourceText": "Reset App", + "text": "Seta App sesha", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "Tla re reetse kgatiso e e rekotilweng!", + "SourceText": "Demo Presentation", + "text": "Pontsho ya Tshupetso", "type": "template", "note": "" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Goreng @local.workshop_data.title?", + "SourceText": "Organisation Registration", + "text": "Kwadiso ya Setheo", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "" }, { - "SourceText": "Hear Sbo's message", - "text": "Utlwa molaetsa wa ga Sbo", + "SourceText": "Developer Mode", + "text": "Mokgwa wa Motlhami", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Buisa molaetsa wa ga Sbo", + "SourceText": "Unlock all workshops", + "text": "Lotlolola di-workshop tsotlhe", "type": "template", "note": "" }, { - "SourceText": "Today's steps", - "text": "Dikgato tsa gompieno", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Ka go tobetsa mo konopong e e fa tlase o tla bo o lotlolola di-workshop tsotlhe.\n\nTSHWAYANTLHA: Badirisi ba seka ba dirisa mokgwa ono go lotlolola di-workshop, seno ga se atlanegisiwe ntle le fa go tlhokega.", "type": "template", "note": "" }, { - "SourceText": "Read Together", - "text": "Buisang Mmogo", + "SourceText": "Unlock workshops", + "text": "Bula di-workshop", "type": "template", "note": "" }, { - "SourceText": "Let's read a story together!", - "text": "Tla re buise kgang mmogo!", + "SourceText": "All workshops are now unlocked.", + "text": "Di-workshop tsotlhe jaanong di lotlolotswe.", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "Tla re buise kgang!", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Go latlhegelwa ke mongwe yo o mo ratang go ka tlisa maikutlo a bokete. Fano ke dintlha tse mmalwa tse di ka thusang go di gopola.", "type": "template", "note": "" }, { - "SourceText": "Think Together", - "text": "Akanyang Mmogo", + "SourceText": "Ask for help", + "text": "Kopa thuso", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Ke nako ya go akanya mmogo!", + "SourceText": "Say goodbye", + "text": "Ere salang sentle", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Akanya", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "- Kopa mongwe yo o mo tshepang thuso- dijo kgotsa tlhokomelo ya bana e ka thusa. O ka tlhoka ditokomane go lefa, bana kgotsa tetlelesego ya tirelo.\n-Nako nngwe batho ba leka go tsaya madi kgotsa lefa la motho yo o mo kutlobotlhokong. Batlisisa ka ditshwanelo tsa gago.", "type": "template", "note": "" }, { - "SourceText": "It's time to think!", - "text": "Ke nako ya go akanya!", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "-Go laela go boima. Dira se se siametseng wena le mosha wa gago.\n- Malapa, basha le batsadi ba na le diphoso. Fa mongwe a tlhokofetse, go siame go bua ka dilo tse dintle le tse di bosula tse re di gopolang.\n- Go ka thusa go kwalela moswi lekwalo kgotsa go mo direla setshwantsho.\n- Bangwe ba dira tirelo kgotsa dijo tse di rileng go keteka moswi le go mo laela.\n- Go ka thusa go dira lebokoso la megopolo, go baya dilo tse di gopotsang wena le mosha wa gago ka ene.\n- Go ka thusa go bua ka motho yoo fa o mo naganne.", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Ithuteng Mmogo", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Go latlhegelwa ke tsala kgotsa mongwe yo o mo ratang go boima. Go se ikgatelele le go dira dilo tse di go thusang go kgotlhelela mo nakong e e boima go ka thusa le mosha wa gago!", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice together!", - "text": "Ke nako ya go ithuta le go ikatisa mmogo!", + "SourceText": "Take care of yourself", + "text": "Itlhokomele", "type": "template", "note": "" }, { - "SourceText": "Learn", - "text": "Ithute", + "SourceText": "Find a support group", + "text": "Batla setlhopha sa tshegetso", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice!", - "text": "Ke nako ya go ithuta le go ikatisa!", - "type": "template", - "note": "" - }, - { - "SourceText": "Customise @global.parent_app", - "text": "Itsenyetse @global.parent_app", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Give me quick parenting tips", - "text": "Mphe dikakantsho tsa ka bonako tsa botsadi", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "- Kutlobotlhoko e ka re ama dibeke kgotsa dikgwedi kgotsa dingwaga. Ga go tlhokege gore o ikutlwe botoka ka potlako.\n- Bona dijo le go robala go go lekaneng. Go boima go tlhokomela basha o lapile ebile o tshwere ke tlala.\n- Kwala dilo tse di dirang gore o ikutlwe o le botoka mme o di dire.\n- Leka go dira selo se le sengwe se se bonolo go iketla le mosha wa gago ka letsatsi, mme o itirele le wena.\n- Go siame go se ikutlwe sentle mme go siame go lela. O seke wa ikatlhola, ga se phoso ya gago.\n- Go phela go na le tsholofela le morago ga tatlhego. Leka go kgatlhegela dilo tse di bonolo, mme o tseye motsotso go dira sengwe sa go itumedisa le mosha wa gago.\n- Batla motho yo mogolo a le mongwe kgotsa ba ba bedi ba ba ka go tshegetsang, utlwelela, le go bua le bona.", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Sengwe se se maswe tota se diragetse", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "- Go bua le mongwe yo a ka kgonang go go tshegetsa le go go reetsa go ka go thusa. \n- Go ka thusa go tsena mo setlhopeng sa batho ba ba kileng ba latlhegela ke mongwe.\n- Ga go na motho yo a senang diphoso. Go siame go bua ka dinako tse dintle le tse di bosula.", "type": "template", "note": "" }, { - "SourceText": "I have technical problems with the app", - "text": "Ke na le bothata jwa setegeniki ka app", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Basha ba mekamekana le tatlhegelo ka tsela tse di farologaneng jaaka bagolo. O ka ba thusa go tlhaloganya seemo le maikutlo a bona ka go dira lefelo le le babalesegileng mo le ka buang le go amogela teng.", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "O tla bona dintlha tse di thusang tse re akanyang gore o ka bona di thusa fano, go ikaegile ka dikarabo tsa gago tsa go rulaganya sediriso.", + "SourceText": "Be honest", + "text": "Nna le nnete", "type": "template", "note": "" }, { - "SourceText": "WHO Website", - "text": "Webosaete ya WHO", + "SourceText": "My teen's response", + "text": "Karabo ya mosha wa me", "type": "template", "note": "" }, { - "SourceText": "UNICEF Website", - "text": "Webosaete ya UNICEF", + "SourceText": "How to support my teen?", + "text": "Nka tshegetsa mosha wa me jang?", "type": "template", "note": "" }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Go nna motsadi go thata ka nako ya COVID. Nna motlotlo gore o fitlhile fano.\n\nRe semeletse ka tshedimosetso e ntšhwa fano ya go go thusa gore o bue le basha le bana ba gago kaga COVID.\n\nTshedimosetso e e mo nakong thata ka COVID-19 e ka fitlhelwa mo diwebosaeteng tsa WHO le UNICEF:", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "- Bolela mosha wa gago gore mongwe o tlhokafetse- nako nngwe ga ba itemogele.\n- Go bolelela mongwe ke thulaganyo, eseng tiragalo. O ka tshwanele ke go ba bolelela gape le gape.\n- Dirisa mafoko a ba a tlhaloganyang.\n- fa basha ba bannye ba sa tlhaloganye gore leso ke eng, thusa ka go ba tlholesetsa gore motho yo ba mo ratang ga a sa boa. leka go se e bitse 'go robala' kgotsa 'leeto'.\nBasha ba bagolo ba ka tlhaloganya gore leso ke eng, gongwe ba ka palelwa ke go abelana kgotsa go amogela maikutlo a bona.\n- Basha ba ka fetola ka tsela tse di farologaneng. Go lela, go dira modumo, go se dumele kgotsa go didimala gotlhelele. Tsotslhe tse di siame. Ba bolele gore o na le bona.\n- Letlelela dipotso le go buisana. Nna le nnete. Go siame gore ga re itse.", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya WHO ya Coronavirus.", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "- Basha ba ka nna le bohutsana, go selekega, go se tlhalognaye kgotsa go se dumele, go swa bokidi, go bobola kgotsa go nna le ditlhabi, ditoro tsa poifo kgotsa mathata kwa sekolong. Mosha wa gago a ka bontsha a itumetse mme a hutsafetse. Ba ka ikgogela morago mme ba nna le nako e ntsi le ditsala. ba ka bontsha le maitsholo a a sa tlwaelegang kgotsa a a kotsi. Se se ka tswa se sa dire tlhaloganyo mo go wena, mme tsotslhe tse di tlwaelegile.\n-Basha ba ka ikutlwa okare ke ohoso ya bona- gongwe ba ba tshetse ka mogare kgotsa ba ne ba sa itshola sentle. Gatelela gore ga go phoso e ba e dirileng.", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "- Tlhalosa gore tatlhegelo e tla le maikutlo a le mantsi le ditlhagiso. Bontsha basha ba gago gore ba ratiwa le gore ba tlhokomelegile, mme o ba rotloetse go neelana ka maikutlo a bona ka go bua, go kwala kgotsa go thala.\n- Fa go na le setlhopa sa tshegetso se mosha wa gago a ka nnang karolo ya sona, seno se ka thusa.\n- Fa mosha a bua ka go ikutlwisa botlhoko kgotsa go ipolaya, kopa thuso go tswa go mongwe ka potlako.\n- Fa o ka kgona, dira mekgwatlwaelo ya lona ya letsatsi, seno se ka gomotsa basha.\n- Go ka thusa basha go nna karolo ya tirelo tsa setso tse di tsamaisanang le leso - go tlhopa pina kgotsa go bua sengwe.\n- Go fetsa metsotso e mmalwa ka letsatsi o lebane le mosha wa gago go ka mo thusa gore a ikutlwe a bolokesegile le go nna le nako ya go iketla kgotsa go bua ka dilo tse di mo tshwenyang.", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya UNICEF ya Coronavirus.", + "SourceText": "How did it go?", + "text": "Go tsamaile jang?", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "URL ke https://www.unicef.org/coronavirus/covid-19", + "SourceText": "Reply", + "text": "Araba", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Ntšhwafatsa maitemogelo a me a botsadi", + "SourceText": "Timer", + "text": "Sebalanako", "type": "template", "note": "" }, { - "SourceText": "Update my personal details", - "text": "Ntšhwafatsa dintlha tsa me tsa botho", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Tobetsa khutlotharo go go thusa go nna o tshwere motlotlo ono @local.timer_duration.", "type": "template", - "note": "" + "note": "The string @local.timer_duration should not be translated." }, { - "SourceText": "Update my workshop options", - "text": "Ntšhwafatsa ditlhopho tsa me tsa workshop", + "SourceText": "Video", + "text": "Bidio", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "A o nna le mathata mangwe a setegeniki? Re itsise mme re thuse go tokafatsa @global.parent_app!", + "SourceText": "You selected less than @local.threshold", + "text": "O tlhophile kwa tlase ga @local.threshold", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.threshold should not be translated." }, { - "SourceText": "Type your name (optional)", - "text": "Kwala leina la gago (itlhophelo)", + "SourceText": "Start Positively Together", + "text": "Simololang Sentle Mmogo", "type": "template", "note": "" }, { - "SourceText": "Type your phone number", - "text": "Kwala nomoro ya gago ya mogala", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Go gontle go go bona gape! \n\nA re simolole ka go go kgathalela.", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Ikgolaganye le nna ka imeile", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Refosanang:\n* Arolelanang: O ikutlwa jang gompieno?\n* Akgola mongwe mo setlhopheng sa lona go bo a dirile sentle beke eno!\n\nGopola gore go sa kgathalesege gore o ikutlwa jang, go gontle o bo o le fano. Lotlhe lo tshwanelwa ke go akgolwa.", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Kwala aterese ya gago ya imeile", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Rotlhe re na le megopolo e e sa siamang nako dingwe.", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Re bolelele bothata jwa gago", + "SourceText": "\"I am a failure\"", + "text": "\"ke motlholegi\"", "type": "template", "note": "" }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Lekgetlho la ntlha fa mme a mpotsa gore a ke batla go fetsa nako le ene, ke ile ka mo raya ka re a ntlogele ka gonne ke ne ke santse ke tshwaragane le motshameko. Mme o ne a mpateletsa jaaka a tlwaetse go dira. Ke ile ka re a ka ntebelela ke tshameka fa e le gore ke se a se batlang. Morago ga metsotso e le mmalwa o ile a simolola go mpotsa dipotso ka motshameko wa me. Go ne go tena kwa tshimologong, mme morago ga nakwana ke ne ke itumetse gore kwa bofelelong o kgatlhegela se ke se dirang. O ile a ba a leka go e tshameka!", + "SourceText": "What to do?", + "text": "Ke dire eng?", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "Rre o rile ke tshameka basketball thata morago ga sekolo, ka jalo re tshwanetse go tlhoma molao wa lelapa. O ne a tshepisa gore re tla akanya ka tharabololo mmogo, ka jalo bobedi jwa rona re ile ra go itumelela. Ke ne ke sa dumele gore go a kgonega mme ka re, “GO SIAME, mma re leke.” Re ne ra buisana mme ra dumalana gore molao e tla nna gore go tshameka basketball go letleletswe fa go dira tirogae ya sekolo e dirilwe le morago ga dijo tsa maitseboa tsa lelapa. Go thata go bona ditsala tsa me di tshameka morago ga sekolo, ka jalo ke dira ka natla go fetsa tirogae ya sekolo pele mme ke bo ke tshameka le bone. Gape jaanong ke na le maitseboa otlhe go dira dilo tse dingwe tse ke di batlang morago ga dijo tsa maitseboa tsa lelapa jaaka go lebelela basketball mo NBA.", + "SourceText": "Examples", + "text": "Dikao", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "O tla bona melaetsa ya beke ya di-workshop tse di fetileng fano.", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Go ipolelela kgotsa go bolelela mosha wa gago go emisa kgotsa go bua se se rotloetsang se le kgatlhanong ga nke go thusa go le gantsi.", "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Simolola", + "SourceText": "\"I do everything perfectly\"", + "text": "\"ke dira tsotlhe ka go tlhoka phosa\"", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "O ka rata go dira workshop eno jang?", + "SourceText": "Instead, you can ask:", + "text": "Gongwe, o ka botsisa:", "type": "template", "note": "" }, { - "SourceText": "Coming soon", - "text": "E etla gautshwane", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "- Aa mogopolo o a kgonagala? Ditlhaloso tse dingwe ke eng?\n- Go ka diragala eng fa ke tswela pele ke tshepa mogopola ona?\n- Nka bolelela tsala eng fa a katswa a na le mogopolo o?", "type": "template", "note": "" }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Re tla tlhoka go bua ka mathata a mangwe a go nna motsadi pele re ka simolola go dira go @local.workshop_data.title.\n\nO ka bona didiriswa tsa botlhokwa mo @local.workshop_data.title o dirisa @global.parent_centre.", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "\"Se se thata, fela o leka ka bojotlhe jwa gago, mme re tla dira mmogo go bona tharabololo\"", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "note": "" }, { - "SourceText": "My name", - "text": "Leina la me", + "SourceText": "\"It’s your fault\"", + "text": "\"ke phoso ya gago\"", "type": "template", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "letsatsi la @global.weekly_workshop", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"A re tle ka tharabololo mmogo\"", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "I do the workshops...", - "text": "Ke dira di-workshop...", + "SourceText": "\"I lost my job\"", + "text": "\"ke latlhegetswe ke tiro\"", "type": "template", "note": "" }, { - "SourceText": "My group's name", - "text": "Leina la setlhopha sa me", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Ke ithutile go le gontsi mo tirong ya me - seo se tla thusa go bona tiro e nngwe\"", "type": "template", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "Setlhopha sa me se dira workshop jaanong...", + "SourceText": "\"Nobody likes me\"", + "text": "\"Ga go na motho yo a nkgatlhegelang\"", "type": "template", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Ke dira workshop jaanong...", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "\"Beke e e fitileng ke nnile le nako e e monate le...\"", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "A o tlhomamisegile gore o batla go bula di-workshop tsotlhe? Fa o setse o dirile seno o ka se kgone go di tswala gape", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Dilo tse di sa siamang di phela di ntiragalela\"", "type": "template", "note": "" }, { - "SourceText": "You can always find these tools in the @global.parent_centre", - "text": "Ka metlha o ka bona didiriswa tseno mo go @global.parent_centre", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Sengwe se sentle se ntiragaletse tsatsi le le fitileng...\"", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Tsenya tiro eno go @global.my_activities", + "SourceText": "Change", + "text": "Phetogo", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Ditiro tsa boiketlo", + "SourceText": "You’ve completed this week’s workshop.", + "text": "O feditse workshop ya beke eno.", "type": "template", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Sengwe sa go ijesa monate go se dira le mosha wa gago", + "SourceText": "Read along", + "text": "Buisa mmogo", "type": "template", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Ga o ise o tsenye ditiro dipe tsa boiketlo go @global.my_relaxes ga jaana. Goreng o sa tlhophe dingwe?", + "SourceText": "See you soon.", + "text": "Re tla go bona mo bogautshwaneng.", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Ga o ise o tsenye ditiro dipe go @global.my_activities ga jaana. Goreng o sa tlhophe dingwe?", + "SourceText": "You can always find these tools in the @global.parent_centre", + "text": "Ka metlha o ka bona didiriswa tseno mo go @global.parent_centre", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Open Survey", - "text": "Potsolotso e e Bulegileng", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Beke e e tlang, o tla bolelela setlhopha sa gago gore ikatiso ya ko gae e tsamaile jang. Gape lo ka tshegetsana le go gopotsana mo gare ga beke.", "type": "template", "note": "" }, { - "SourceText": "Select Language", - "text": "Tlhapha loleme", + "SourceText": "Home Practice", + "text": "Katiso ya Legae", "type": "template", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Dikakantsho tsa di-Workshop", + "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "text": "Ditiro tse dinnye, dipholo tse di kgolo! Batsadi bao ba dirisang botswerere jwa bone jwa di workshop ko gae ba nna le dipholo tse di botoka.", "type": "template", "note": "" }, { - "SourceText": "Unlock Workshops", - "text": "Bula di-Workshop", + "SourceText": "Hear a teen's testimonial", + "text": "Utlwa bosupi ba mosha", "type": "template", "note": "" }, { - "SourceText": "Demo Presentation", - "text": "Pontsho ya Tshupetso", + "SourceText": "Read a teen's testimonial", + "text": "Buisa bosupi ba mosha", "type": "template", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Kwadiso ya Setheo", + "SourceText": "talk to their teens about how they feel", + "text": "bua le basha ba bone ka gore ba ikutlwa jang", "type": "template", "note": "" }, { - "SourceText": "Developer Mode", - "text": "Mokgwa wa Motlhami", + "SourceText": "talk to your teen about how you feel", + "text": "bua le mosha wa gago ka gore o ikutlwa jang", "type": "template", "note": "" }, { - "SourceText": "Unlock all workshops", - "text": "Lotlolola di-workshop tsotlhe", + "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "text": "A o kile wa kopana le dikgwetlho fa o leka go @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Ka go tobetsa mo konopong e e fa tlase o tla bo o lotlolola di-workshop tsotlhe.\n\nTSHWAYANTLHA: Badirisi ba seka ba dirisa mokgwa ono go lotlolola di-workshop, seno ga se atlanegisiwe ntle le fa go tlhokega.", + "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", + "text": "Ke eng se se neng se le bokete fa o ne o leka go @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "Unlock workshops", - "text": "Bula di-workshop", + "SourceText": "Sorry we missed this!", + "text": "Re itshwarele re fetilwe ke seno!", "type": "template", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Di-workshop tsotlhe jaanong di lotlolotswe.", + "SourceText": "Do you want to share it with us?", + "text": "A o batla go se arolelana le rona?", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Ka go tobetsa konopo e e fa tlase o tla seta sesha app ka go e busetsa kwa diseting tsa yone tsa kwa tshimologong. \n\nSeno se raya gore kgatelopele ya gago yotlhe le tiriso ya data di tlile go phimolwa mme app ya gago e tla dira jaaka e ne e dira kgetlho la ntlha.\n\nTSHWAYANTLHA: Go seta app sesha go ka se dirololwe mme ga o kitla o kgona go boa o bona gape tshedimosetso epe.", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Re lebogela go bo o re boleletse kgwetlho ya gago! Re tlile go dirisa pegelo eno ya gago go tokafatsa @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Reset App", - "text": "Seta App sesha", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Re maswabi go utlwa gore dikakantsho ga di a go thusa.", "type": "template", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "O tsentse mokgwa wa motlhami ka katlego.", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "A o batla go re bolelela gore o nagana ke eng se se tla go thusang?", "type": "template", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "O tsentse khoutu e e seng yone.", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Ke lebogela go bo o mpoleletse! O motsadi yo o molemo go bo o batla go ipha nako le mosha wa gago. Go dira pharologano thata. Tswelela pele o dira tiro e molemo, mme gopola, ke fano ka metlha go go tshegetsa!", "type": "template", "note": "" }, @@ -750,8018 +738,7988 @@ "note": "" }, { - "SourceText": "How did you hear about @global.parent_app?", - "text": "O utlwile jang ka @global.parent_app?", + "SourceText": "Learn Together", + "text": "Ithuteng Mmogo", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "I found it myself", - "text": "Ke e bone ka bonna", + "SourceText": "It's time to learn and practice together!", + "text": "Ke nako ya go ithuta le go ikatisa mmogo!", "type": "template", "note": "" }, { - "SourceText": "A friend or family", - "text": "Tsala kgotsa wa lelapa", + "SourceText": "Learn", + "text": "Ithute", "type": "template", "note": "" }, { - "SourceText": "Other", - "text": "E ngwe", + "SourceText": "It's time to learn and practice!", + "text": "Ke nako ya go ithuta le go ikatisa!", "type": "template", "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "O ka nna wa kopiwa gore o bontshe batho ba bangwe khoutu eno ba ba tla go tshegetsang mo leetong la gago la @global.parent_app.", + "SourceText": "Listen Together", + "text": "Reetsa Mmogo", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Last sync at: @local.sync_latest", - "text": "sync ya bofelo ka: @local.sync_latest", + "SourceText": "Let's listen to an audio together!", + "text": "Tla re reetse kgatiso e e rekotilweng mmogo!", "type": "template", - "note": "The string @local.sync_latest should not be translated." + "note": "" }, { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Sediriswa ga ise se sinkiwe. Sync e tla tlhagisa khoutu.", + "SourceText": "Listen", + "text": "Reetsa", "type": "template", "note": "" }, { - "SourceText": "Sync now", - "text": "Sync gone jaanong", - "type": "template", + "SourceText": "Let's listen to an audio!", + "text": "Tla re reetse kgatiso e e rekotilweng!", + "type": "template", "note": "" }, { - "SourceText": "Syncing...", - "text": "Syncing...", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Dumela @fields.user_name! Beke eno o dirile:", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "You selected @local.threshold or less", - "text": "O tlhophile @local.threshold kgotsa kwa tlase", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "You selected more than @local.threshold", - "text": "O tlhophile kwa godimo ga @local.threshold", + "SourceText": "That’s wonderful!", + "text": "Lo dirile bontle tota!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Reply", - "text": "Araba", + "SourceText": "Nice work!", + "text": "Tiro e ntle!", "type": "template", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Malatsi mo kgweding e e fetileng", + "SourceText": "Your commitment is not taken for granted.", + "text": "Boikemisetso jwa gago ga bo tseelwe kwa tlase.", "type": "template", "note": "" }, { - "SourceText": "Days in the past week", - "text": "Malatsi mo bekeng e e fetileng", + "SourceText": "Keep up the good work!", + "text": "Tswelelang go dira tiro eno e e molemo!", "type": "template", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "O tlhophile kwa tlase ga @local.threshold", + "SourceText": "This is lovely!", + "text": "O dirile sentle tota fano!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Unlock for less than @local.threshold", - "text": "Bula kwa tlase ga @local.threshold", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Iphaphathe legetla. O tshwanelwa ke seno.", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "O tlhophile @local.threshold kgotsa go feta", + "SourceText": "Every @global.parent_point counts!", + "text": "@global.parent_point nngwe le nngwe e botlhokwa!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Video", - "text": "Bidio", + "SourceText": "Relax now", + "text": "Iketle jaanong", "type": "template", "note": "" }, { - "SourceText": "Timer", - "text": "Sebalanako", + "SourceText": "Did you relax already? Tap it!", + "text": "A o setse o iketlile? E tobetse!", "type": "template", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Tobetsa khutlotharo go go thusa go nna o tshwere motlotlo ono @local.timer_duration.", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Tiro ya go ijesa monate e o ka e dirang le mosha wa gago ke eno!", "type": "template", - "note": "The string @local.timer_duration should not be translated." + "note": "" }, { - "SourceText": "Options", - "text": "Tlhopho", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Tswelela @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Home", - "text": "Gae", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Simolola @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Settings", - "text": "Diseting", + "SourceText": "Finish current workshop", + "text": "Fetsa workshop e o e dirang mo nakong eno", "type": "template", "note": "" }, { - "SourceText": "Template", - "text": "Thempoleiti", + "SourceText": "How did you hear about @global.parent_app?", + "text": "O utlwile jang ka @global.parent_app?", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Tour", - "text": "Loeto", + "SourceText": "Other", + "text": "E ngwe", "type": "template", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Melaetsa ya Beke", + "SourceText": "I found it myself", + "text": "Ke e bone ka bonna", "type": "template", "note": "" }, { - "SourceText": "Campaigns", - "text": "Matsholo", + "SourceText": "A friend or family", + "text": "Tsala kgotsa wa lelapa", "type": "template", "note": "" }, { - "SourceText": "Notifications", - "text": "Dikitsiso", + "SourceText": "Quick Parenting Tips", + "text": "Ditlhababotlhale tsa go Godisa Bana tsa ka Bonako", "type": "template", "note": "" }, { - "SourceText": "About @global.parent_app", - "text": "Ka ga @global.parent_app", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Go godisa basha e ka nna tiro e e bokete, mme e a re retelela rotlhe fa gongwe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_app e tlhamilwe ke Parenting for Lifelong health (PLH) - kopantsho ya lefatshe ka bophara magareng ga baitsi ka botsadi go tswa go UNICEF, ba ga WHO le diunibesithi mo Aforika Borwa le UK, mmogo le di NGO tsa Aforika le malapa le basha botlhe ba Aforika ka bophara. Batsadi le basha ba dirile mmogo le rona mo go app le go thusa go netefatsa gore e bonolo go dirisa, ya itumedisa le go buisana.Diteng tse dingwe mo go app eno, jaaka go akanyetsa ditirwana le dikgang tsa tlhagiso, di dirilwe le batsadi le basha go netefatsa gore di maleba go ditlhokego tsa malapa. \n\nParenting for Lifelong Health (PLH) e ikemiseditse go neelana ka tshegetso ya mahala, didiriswa le mananeo go tshegetsa batsadi lefatshe ka bophara go rotloetsa pholo ya bana ba bona.", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Kgwetlho e kgolo e o nang le yone mo nakong eno ke efe?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Finish current workshop", - "text": "Fetsa workshop e o e dirang mo nakong eno", + "SourceText": "My relationship with my teen is not good", + "text": "Kamano ya me le mosha wa me ga se e e siameng", "type": "template", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Tiro ya go ijesa monate e o ka e dirang le mosha wa gago ke eno!", + "SourceText": "My teen’s behaviour is difficult", + "text": "Ke bona go le thata go dirisana le boitshwaro jwa mosha wa me", "type": "template", "note": "" }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Simolola @local.workshop_data.in_text_title", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ke ikutlwa ke gateletswe mo maikutlong, ke jewa ke bodutu, ke tenegile", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue @local.workshop_data.in_text_title", - "text": "Tswelela @local.workshop_data.in_text_title", + "SourceText": "I have money worries", + "text": "Ke tshwenyegile ka madi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Dumela @fields.user_name! Beke eno o dirile:", + "SourceText": "I worry about my teen’s safety", + "text": "Ke tshwenyegile ka tshireletsego ya mosha wa me", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", + "SourceText": "We often fight in our family", + "text": "Re aga re lole mo lelapeng la rona", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "note": "" }, { - "SourceText": "That’s wonderful!", - "text": "Lo dirile bontle tota!", + "SourceText": "I have a different problem…", + "text": "Ke na le bothata bo sele…", "type": "template", "note": "" }, { - "SourceText": "Nice work!", - "text": "Tiro e ntle!", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Go dira botsala jo bosha go simolola ka go dira nako le le mmogo - le ele metsotso e le 5 fela go dira pharologanyo! Kwa tshimologong, go ka nna ga nna bokete go ipha nako le le mmogo, ka gonne rotlhe re nna re tshwaregile le gore basha ba rona fa gongwe ba mo maikutlong a a seng monate. Mme go dirisa le fa e le metsotso e le 5 mo letsatsing le tlhomile mogopolo le mosha wa gago go thusa gore le tshepane. Leka go botsa mosha wa gago gore a ka rata lo dira eng mmogo. Go ka le itumedisa le go le repisa!", "type": "template", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Boikemisetso jwa gago ga bo tseelwe kwa tlase.", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "O ka bona thuso e nngwe mabapi le gore o ka dira nako le ngwana wa gago wa mosha jang le le babedi fela fa:", "type": "template", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Tswelelang go dira tiro eno e e molemo!", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Basha botlhe fa gongwe ba itshwara ka go tlhoka maitseo! Selo se le sengwe se se ka thusang ka maitseo a mosha ke go mo akgola nako nngwe le nngwe fa a dira sengwe se se siameng - le fa se ka nna se se nnye jang. Basha ba ka lebega o kare ga ba batle kgotsa ga ba lebelela gore o ba akgole mme batla jalo tota.", "type": "template", "note": "" }, { - "SourceText": "This is lovely!", - "text": "O dirile sentle tota fano!", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "O ka kgona go bona thuso e nngwe fano mabapi le tsela ya go kgothaletsa boitshwaro jo bo siameng ka go akgola:", "type": "template", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Iphaphathe legetla. O tshwanelwa ke seno.", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Go tshwenyega mo maikutlong mo go amanang le go godisa bana go kwa godimo fela thata mo nakong eno. Re itse sentle ka fa botshelo bo ka imelang ka teng. O ka fokotsa go tshwenyega mo maikutlong ka go dira sengwe. O tshwanelwa ke seno! Mme fa o ikutlwa o imelwa, laola mmele wa gago ka go hemela kwa teng ga tlhano, ka bonya pele ga o fetola. Batsadi ba le bantsi ba bone seno se thusa.", "type": "template", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "@global.parent_point nngwe le nngwe e botlhokwa!", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "O ka bona thuso e nngwe mabapi le gore o ka itlhokomela jang fa:", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Relax now", - "text": "Iketle jaanong", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Ga o nosi. Batsadi ba na le go imelwa ke kgatelelo ya maikutlo ka ga madi. Leka go bolelela mosha wa gago gore go tsena madi a a kae le gore o tshwanelwa ke go dirisa bokae mo lelapeng kgwedi le kgwedi. Seno se ka nna sa mo thusa go tlhaloganya gore gore o ka seke wa kgona go duelela sengwe se a se tlhokang. Mme fa mongwe le mongwe a tlhaloganya gore madi a dira jang, go nna bonolo gore le dumalane gore le ka boloka madi mmogo mo go eng!", "type": "template", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "A o setse o iketlile? E tobetse!", + "SourceText": "You can get more support on how to budget and save here:", + "text": "O ka bona thuso e nngwe mabapi le tsela ya go dira tekanyetsokabo le go boloka madi fa:", "type": "template", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Go itlhokomela go botlhokwa.", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Basha ba ka fetsa nako e ntsi ba le kwa ntle kgotsa ba le mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa - batsadi ba le bantsi ba tshwenyega ka seno. Leka go simolola motlotlo le mosha wa gago ka ga mafelo a a bolokegileng le a a sa bolokegang mo tikologong ya lona le mo inthaneteng (o ka ka nna wa tshwanelwa ke go leka makgetlo a le mmalwa). E bile ba ka nna ba itse dingwe tse wena o sa di itseng. Seno se ka nna sa simolola go le thusa go dira thulaganyo mmogo ya gore le ka nna le sireletsegile jang.", "type": "template", "note": "" }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Go gontle! Go a itumedisa go utlwa gore o ikutlwa sentle gompieno. Ruri ke maikutlo ao a itumedisang!", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "O ka bona thuso e nngwe mabapi le dira gore mosha wa gago a nne a sireletsegile fa:", "type": "template", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Ka dinako tse dingwe dilo di tsamaya sentle. Ka dinako tse dingwe ga di tsamae sentle. E bile ka dinako tse dingwe ga re itse sentle gore re dire eng... mme seo se siame fela! Gopola gore ga o nosi.", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "Fa bothata bo tlhaga, buisanang mmogo ka jone. Bothata ke eng sentlentle? Go na le ditharabololo di fe tse di farologaneng mme ditlamorago tsa tsona ke dife? Ka tsela e, le ka bona tharabololo e e ka nnang e e SIAMENG go botlhe.", "type": "template", "note": "" }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Go gontle, segolobogolo ka dinako tse di thata jaaka tseno. O naledi.", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "O ka bona thuso ya tsela ya go rarabolola mathata mmogo fa:", "type": "template", "note": "" }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Re a itse gore go bokete jang go godisa mosha mo dinakong tseno. Go ithuta go laola go tshwenyega mo maikutlong ga gago go thusa wena - le lelapa la gago.", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Ga go bonolo go tlhokomela ba malapa a rona. Rotlhe re na le dikgwetlho fa gongwe, mme re solofela gore app eno e tla go thusa gore o dirisane le tsone sentle jang. @global.parent_app e thailwe mo boitemogelong jwa dingwaga tse di lesome tsa go tsamaisa dithulaganyo tsa go godisa bana mo Aforika Borwa, mme diketekete tsa batsadi ba bone ditlhabobotlhale tse ba di newang di thusa ka dikgwetlho tse dintsi tsa go godisa bana. Re solofela gore app eno e tlile go thusa le wena le ba lelapa la gago.\n\nDitlhabotlhale dingwe tsa botlhokwa tse di tlhomamisitsweng ke tseno tse o ka di dirisang:", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Dumelang lotlhe. \n\nSetlhogo sa gompieno se ka ga go laola go tshwenyega mo maikutlong. \n\nGo botlhokwa go itse ka fa re ka laolang go tshwenyega mo maikutlong a rona ka gone. Ka dinako tse dingwe bana ba rona ba ka itshwara ka tsela e e re opisang tlhogo le rona jaaka batsadi re ka dira gore bana ba rona ba opiwe ke tlhogo le bone. \n\nKa jalo, go botlhokwa go ela tlhoko fa re na le kgatelelo ya maikutlo re bo re ema go se kae re hema. Seo se tla go thusa gore o laole go tshwenyega mo maikutlong.", + "SourceText": "Start your first parenting workshop", + "text": "Simolola workshop ya gago ya ntlha ya go godisa bana", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le motlotlo - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le go leba kwa morago - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "A re bone sekai sa ka fa go tshwenyega mo maikutlong e ka fetelelang ka teng ka dinako dingwe, mo go rona rotlhe:", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Simolola @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver: “Ntlogele mme o lebe dikgang tsa gago!”", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Fetsa @local.workshop_data.in_text_title gore o kgone bona thuso e nngwe.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: “Ke dirile eng? Ga o nke o reetsa!” \n\n@global.w_stress_male_caregiver: “Ke rile o ntlogele kgotsa ke tloga ke go itaya!”", + "SourceText": "Continue the @local.workshop_data.in_text_title", + "text": "Tswelela ka @local.workshop_data.in_text_title", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: “Bona! Ke dirile ntlo!”", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Tsena gape mo go @local.workshop_data.in_text_title", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: “Ke mang a kgathalang ka ntlo ya gago e e senang mosola!”", + "SourceText": "CHAT", + "text": "Tlotla", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang? Le @global.w_stress_male_caregiver wa gagwe? Le @global.w_stress_girl?\n\n@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Neelana ka maikutlo a gago, mme o rotloetsa mosha wa gago go bua ka matshwenyego a gagwe. Le tla tlhaloganyana botoka mme le ka dira leano mmogo la go nna le itekanetse le itumetse!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang?", + "SourceText": "CAUTION", + "text": "Ela tlhoko", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "Le @global.w_stress_male_caregiver?", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Amogela kitsiso ya gago go tswa mo metsweding e tshepagalang ya kitso gore o kgone go nna le boitshepi mo nakong tse di sa tshepagaleng tse. Re utlwa ebile re bona dikgang tse dintsi ka batho, megala ya letheka, TV le inthanete. Aa se se dira o ikutlwe o belaela, tshwenyega, tshoga, galefa kgotsa go tlhakatlhakana? Tlhola pele o phatlhalatsa kgotsa o dira sengwe!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_girl?", - "text": "Le @global.w_stress_girl?", + "SourceText": "CHOOSE", + "text": "TLHOPHA", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "Scared", - "text": "O tshogile", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Go dira ditshweetso tse di nepagetseng go boloka botlhe ba sireletsegile ebile ba phetse sentle go thata. Segolo mo dinakong tsa jaanong! O ka thusa mosha wa gago go dira ditshweetso tse di siameng.", "type": "template", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Mongwe le mongwe wa bone o ne a kgopisegile go ya ka lebaka la gagwe!", + "SourceText": "CHILL", + "text": "IKETLE", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Rotlhe re ikutlwa re tshwenyegile ka nako dingwe. Hemela kwa teng kgotsa o dire sengwe se se monate. E ka dira pharologanyo e kgolo mo go direng lelapa la gago la boitumelo le kagiso! Fano ke dikakanyo tse o ka di lekang:", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "Recognise why he feels stressed", - "text": "Lemoga lebaka la go bo a tshwenyegile mo maikutlong", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Menagano e e sa siamang e dira gore re bue ebile re dire dilo tse di sa siamang. Leka go fetola dilo tse o di buang le tse o di naganang tse di sa siamang gore e nne tse di siameng!", "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "Kgwa mowa o bo o bua o ritibetse", + "SourceText": "WHO Website", + "text": "Webosaete ya WHO", "type": "template", "note": "" }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "O bontshe gore o tlhaloganya maikutlo a mosha wa gago", + "SourceText": "UNICEF Website", + "text": "Webosaete ya UNICEF", "type": "template", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Go nna motsadi go thata ka nako ya COVID. Nna motlotlo gore o fitlhile fano.\n\nRe semeletse ka tshedimosetso e ntšhwa fano ya go go thusa gore o bue le basha le bana ba gago kaga COVID.\n\nTshedimosetso e e mo nakong thata ka COVID-19 e ka fitlhelwa mo diwebosaeteng tsa WHO le UNICEF:", "type": "template", "note": "" }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "Dira sengwe se se kgothatsang mmogo le @global.w_stress_teen_boy_1", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya UNICEF ya Coronavirus.", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver a ka...", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "URL ke https://www.unicef.org/coronavirus/covid-19", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* Lemoga lebaka la go bo a tshwenyegile mo maikutlong \n* Kgwa mowa o bo o bua o ritibetse \n* O bontshe gore o tlhaloganya maikutlo a mosha wa gago \n* Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1\n* Dira sengwe se se molemo/rotloetsang mmogo le @global.w_stress_teen_boy_1", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Konopo eno e tla go isa ko webosaeteng ya semmuso ya WHO ya Coronavirus.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Ke a leboga gore re dirile ikatiso eno mmogo! A re akanyeng ka se se diragetseng pelenyana mme re bone gore @global.w_stress_male_caregiver mo lekgetlong leno:", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "URL ke https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver o latlhegetswe ke tiro. Fa @global.w_stress_teen_boy_1 a tsena mo ntlong, o mo fitlhela a tlhakatlhakane maikutlo e bile a tshwenyegile.", + "SourceText": "Update my parenting experiences", + "text": "Ntšhwafatsa maitemogelo a me a botsadi", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver (go kgwa mowa): “Ke maswabi morwaaka. Go ne go le thata tota gompieno. Mookamedi wa me o nkobile kwa tirong.”", + "SourceText": "Update my personal details", + "text": "Ntšhwafatsa dintlha tsa me tsa botho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “Hee se rialo! Ke tlhoka diaparo tse di ntšha tsa sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka morwaaka mme tiro ya ga @global.w_stress_female_caregiver e tla nna e re thusa fa ke ntse ke batla tiro e nngwe.”", + "SourceText": "Update my workshop options", + "text": "Ntšhwafatsa ditlhopho tsa me tsa workshop", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: “Le nna nka go thusa go batla tiro, ne @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nnyaa, o seka tshwenyega, @global.w_stress_teen_boy_1. Ke a leboga go bo o batla go nthusa. Selo se se botlhokwa thata ke gore o dire ka natla ko sekolong. Ke a leboga go bo o ile wa ntheetsa.”", + "SourceText": "Give me quick parenting tips", + "text": "Mphe dikakantsho tsa ka bonako tsa botsadi", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “A re ye go tshameka kgwele ya dinao mmogo. E tla nthusa gore ke fokotse go tshwenyega thata mo maikutlong.” \n\n@global.w_stress_teen_boy_1: \"Go siame, @global.w_stress_male_caregiver!”", + "SourceText": "Something really bad happened", + "text": "Sengwe se se maswe tota se diragetse", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Ke ikutlwa botoka tota jaanong! \n\nGo ikhutsa go se kae go thusa gore o kgone go ritibala maikutlo fa o galefile kgotsa o tshwenyegile mo maikutlong. Lekeletsa go dira jalo, o tla lemoga seno!", + "SourceText": "I have technical problems with the app", + "text": "Ke na le bothata jwa setegeniki ka app", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Kgololesego ya Pabalesego", + "SourceText": "You will find the in-week messages from the previous workshops here.", + "text": "O tla bona melaetsa ya beke ya di-workshop tse di fetileng fano.", "type": "template", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Akanya ka nako ya fa o ne o sa ntse o le mosha. \n\nA go na le nako nngwe e o kileng wa iphitlhela o le mo kotsing mme o bo o tshaba go bolelela ba lelapa la gago ka gonne o tshaba gore ba tla galefa?\n\nKe sone se se batlileng se diragalela @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re bone:", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Ga o ise o tsenye ditiro dipe go @global.my_activities ga jaana. Goreng o sa tlhophe dingwe?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: \"Ke ya kwa bareng le ditsala tsa me gompieno, ke kopa o seka bolella bagolo\" \n\n@global.w_stress_teen_girl: “Itumele! Ke ba reile ka re ke ya kwa tsaleng ya me, mme tota ke ya phathing”", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Ga o ise o tsenye ditiro dipe tsa boiketlo go @global.my_relaxes ga jaana. Goreng o sa tlhophe dingwe?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: “Ke akanya gore ba rekisa diokobatsi. Re ka nna ra tshwarwa rothe. Mme gone nka se bolelele batsadi ba me– ba tlile go galefa tota\"", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "O tla bona dintlha tse di thusang tse re akanyang gore o ka bona di thusa fano, go ikaegile ka dikarabo tsa gago tsa go rulaganya sediriso.", "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: “Ke tshogile. Ga go ope yo o ka kgonang go nkisa gae, mongwe le mongwe o tagilwe tota. Mosimane yono a re o tla nkisa mme gone, o batla re ye kwa a nnang teng pele. Nka se bolelele batsadi ba me – Ke ba akeditse, ga ke a ba bolelela gore ke tla phathing.\"", + "SourceText": "Relaxation activities", + "text": "Ditiro tsa boiketlo", "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Maemo ano a kotsi! Ka lesego, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba gakologelwa gore @global.w_stress_parent o ba boleletse eng: \n\n“Sa botlhokwa le go feta, ke tshwenyegile ka pabalesego ya gago. Nako nngwe le nngwe fa o tenegile, kgotsa o boifa, o ka nteletsa gore ke go thuse, kgotsa o mpolelele ka gone. \n\nBua fela o re ‘KGOLOLESEGO YA PABALESEGO’. Ke a go solofetsa, ke tla leka ka tsotlhe tse nka di kgonang go go thusa e bile nka se galefe – le fa gone o ka tswa o dira sengwe se o sa tshwanelang go se dira.”", + "SourceText": "Something fun to do with your teen", + "text": "Sengwe sa go ijesa monate go se dira le mosha wa gago", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke kgololesego ya pabalesego. A o ka kgona go tla go ntsaya? Tota ke tlhoka mongwe yo o ka nkisang gae.”", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "A o nna le mathata mangwe a setegeniki? Re itsise mme re thuse go tokafatsa @global.parent_app!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, kgololesego ya pabalesego. Ke akanya gore ditsala tsa me di mo kotsing. Ga ke batle go kgaotsa botsala jwa me le bone mme gone, ke tshwenyegile. A re ka bua?\"", + "SourceText": "Type your name (optional)", + "text": "Kwala leina la gago (itlhophelo)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "KGWA MOWA. Ka iketlo. Ema go se kae.", + "SourceText": "Contact me on @global.whatsapp", + "text": "Golagana le nna mo go @global.whatsapp", "type": "template", - "note": "" + "note": "The string @global.whatsapp should not be translated." }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Pele ga o bua sengwe, kgwa mowa ka iketlo makgetlo a le tlhano. Seno se tla go thusa go ritibala maikutlo e bile o tla kgona go akanya sentle.", + "SourceText": "Type your phone number", + "text": "Kwala nomoro ya gago ya mogala", "type": "template", "note": "" }, { - "SourceText": "SHARE how you feel", - "text": "BUA gore o ikutlwa jang", + "SourceText": "Contact me via email", + "text": "Ikgolaganye le nna ka imeile", "type": "template", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Ga go motlhofo. Bontsi jwa rona re ile ra bolelelwa gore ga re a tshwanela go lela kgotsa go bontsha bana gore re ikutlwa jang. Kgwa mowa mme o ba bolelele gore o ikutlwa jang, o ritibetse maikutlo. Ba tla kgona go tlhaloganya botoka e bile ba tla ithuta mo go wena gore ba ka dira eng fa ba tshwenyegile mo maikutlong.", + "SourceText": "Type your email address", + "text": "Kwala aterese ya gago ya imeile", "type": "template", "note": "" }, { - "SourceText": "SHOW them you care", - "text": "Ba BONTSHE gore o a ba kgathalela", + "SourceText": "Tell us about your issue", + "text": "Re bolelele bothata jwa gago", "type": "template", "note": "" }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Ga go motlhofo! Go tshwenyega mo maikutlong go dira gore re akanye ka rona fela. Mme gone, basha ba rona ba a re tlhoka. Ba botse gore ba ikutlwa jang. Ba reetse mme o ba gomotse. Gongwe o ka ba atla kgotsa wa ba bolelela gore ‘ke a tlhaloganya’. Go dira jalo go ka fetola dilo.", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Lekgetlho la ntlha fa mme a mpotsa gore a ke batla go fetsa nako le ene, ke ile ka mo raya ka re a ntlogele ka gonne ke ne ke santse ke tshwaragane le motshameko. Mme o ne a mpateletsa jaaka a tlwaetse go dira. Ke ile ka re a ka ntebelela ke tshameka fa e le gore ke se a se batlang. Morago ga metsotso e le mmalwa o ile a simolola go mpotsa dipotso ka motshameko wa me. Go ne go tena kwa tshimologong, mme morago ga nakwana ke ne ke itumetse gore kwa bofelelong o kgatlhegela se ke se dirang. O ile a ba a leka go e tshameka!", "type": "template", "note": "" }, { - "SourceText": "SEEK the positive", - "text": "BATLANG dilo tse dintle tse lo ka kgonang go di dira", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "Rre o rile ke tshameka basketball thata morago ga sekolo, ka jalo re tshwanetse go tlhoma molao wa lelapa. O ne a tshepisa gore re tla akanya ka tharabololo mmogo, ka jalo bobedi jwa rona re ile ra go itumelela. Ke ne ke sa dumele gore go a kgonega mme ka re, “GO SIAME, mma re leke.” Re ne ra buisana mme ra dumalana gore molao e tla nna gore go tshameka basketball go letleletswe fa go dira tirogae ya sekolo e dirilwe le morago ga dijo tsa maitseboa tsa lelapa. Go thata go bona ditsala tsa me di tshameka morago ga sekolo, ka jalo ke dira ka natla go fetsa tirogae ya sekolo pele mme ke bo ke tshameka le bone. Gape jaanong ke na le maitseboa otlhe go dira dilo tse dingwe tse ke di batlang morago ga dijo tsa maitseboa tsa lelapa jaaka go lebelela basketball mo NBA.", "type": "template", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "A gongwe wena le mosha wa gago lo ka akanya ka dikakantsho dingwe tse di ka thusang? A lo ka dira sengwe se se itumedisang seo se ka dirang gore maikutlo a lona a seka a tswelela a tshwenyegile?", + "SourceText": "Question Time", + "text": "Nako ya Dipotso", "type": "template", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "Fa dilo tseno tsotlhe di sa thuse, kgwa mowa. O ka dira seno.", + "SourceText": "It's time for some questions!", + "text": "Ke nako ya go botsa dipotso!", "type": "template", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Go na le ikatiso tse pedi tsa kwa gae beke eno.", + "SourceText": "Read Together", + "text": "Buisang Mmogo", "type": "template", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o hutsafetse, kgwa mowa ga tlhano pele ga o ka tsaya kgato. \n\nMme fa lotlhe lo ritibetse maikutlo, bolelela mosha wa gago gore o ikutlwa jang.", + "SourceText": "Let's read a story together!", + "text": "Tla re buise kgang mmogo!", "type": "template", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Tlotlang ka “pabalesego” le mosha wa gago mme lo buisane mmogo gore lo ka dirisa ntlha eno mo maemong afe.", + "SourceText": "Let's read a story!", + "text": "Tla re buise kgang!", "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Nako le nako fa o ema go se kae pele ga o araba, kgotsa fa o dira sengwe go sireletsa mosha wa gago, tobetsa @global.parent_points mme o nne motlotlo gore o kgonne go dira jalo!", + "SourceText": "Let's see how this week has been.", + "text": "A re bone gore beke eno e tsamaile jang.", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "O feleleditse workshop ya beke eno.\n\nBeke e e tlang, re tla bua kaga madi - o tla tlhoka:\n* tsebe ya pampiri/khateboto\n* pene\n* maje/dinawa/ditlhaka di le 20\n\nGo a go nna monate!", + "SourceText": "This week you have done...", + "text": "Beke eno o dirile...", "type": "template", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Letsatsi la gompieno le monate tota! Ke eng se se dirileng gore letsatsi la gompieno le nne monate? Gakologelwa gore ke selo se se siameng go ikakgola fa o dirile sentle.", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "O bontsha o ikemiseditse go nna motsadi le go itlhokomela. \n\nO setswerere.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Ke maswabi go utlwa gore ga o ikutlwe sentle gompieno. Re motlotlo ka wena go bo o lemogile maikutlo ao, e bile o leka go ritibala maikutlo le go ineneketsa. O tlhomela lelapa la gago sekao se se molemo.", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Ikatiso ya mo gae ke yone e dirang botshelo jwa lelapa la rona bo nne botoka. Mme gantsi e tlisa dikgwetlho. \n\nA re bolelaneng dikatlego le mathata a rona, mme re thusane go bona dikakanyo tse re ka di lekang tse disha!", "type": "template", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Selo sengwe le sengwe se sennye se o se dirang se botlhokwa. Re solofela gore le wena o ikutlwa o le motlotlo.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Akanya ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka: \n* Ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata? \n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo? \n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(E bile gongwe lo ka ikatisa gone jaanong gore e nne motlhofo moragonyana!)", "type": "template", "note": "" }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Malapa otlhe a na le mathata a one. Fa re ipaakanyetsa mmogo e bile re itse gore re ka bona thuso kae PELE ga sengwe se se maswe se diragala, re ka kgona go fenya mathata mangwe le mangwe.", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Sekai sa puisano go tswa go @data.workshop.w_1on1.title", "type": "template", - "note": "" + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Dumelang, lotlhe.\n\nGompieno re tlile go bua ka go lepalepana le mathata.\n\nMathata a ka diragala gongwe le gongwe. Mathata a ka diragala nako nngwe le nngwe. Ka jalo, go botlhokwa gore jaaka lelapa le nne le ipaakantse go sa le gale fa go ka direga gore mongwe mo lelapeng a welwe ke mathata. \n\nGo botlhokwa gore go nne le dipaakanyetso gore mongwe le mongwe mo lelapeng a ikutlwe a sireletsegile. \n\nFa o le mo mathateng, gopola go ema go se kae, go kgwa mowa le go ipoloka o ritibetse maikutlo. Seno se tla go thusa gore o kgone go lepalepana le mathata botoka.", + "SourceText": "Relax Together", + "text": "Iketleng Mmogo", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Polelo le motlotlo\n* Polelo le motlotlo\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Relax", + "text": "Iketle", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Polelo le go boela ko morago\n* Polelo le go boela ko morago\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "text": "A re dire tiro ya go iketla mmogo e e khutshwane – e tla tsaya kafa tlase ga motsotso o le 1 mme o tla ikutlwa o iketlile le go feta.", "type": "template", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "Mathata a ka wela mongwe le mongwe. \n\nA re baleng ka se se diragetseng ka @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Tsenya tiro eno go @global.my_relaxes", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: “Ao bathong ngwanake, wa itse o lebega o tenegile tota, a o ka mpolelela gore go diragetseng?”", + "SourceText": "Listen and relax", + "text": "Reetsa mme o iketle", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: “Ke Malome, o… o… o ne a mphoraphora.” \n\n@global.w_crisis_teen_girl_1 (a akanya): “Leka go wela makgwafo... Ngwanake o tlhoka eng? O tlhoka gore ke ritibale maikutlo mme ke mo reetse” \n\n@global.w_crisis_female_caregiver: “Tla o nne gaufi le nna. Tsaya nako ya gago, ke go reeditse.”", + "SourceText": "Read and relax", + "text": "Buisa mme o iketle", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: “Ke bua nnete, o... o... mpateleditse gore ke dire jalo! O mpateleditse gore ke robalane le ene! Ke ne ke sa batle, ke lekile go mmolelela gore GA KE BATLE, a ba a re fa ke gana ke tlile go tsena mo mathateng.\"\n\n@global.w_crisis_female_caregiver: “O dirile sentle ka go mpolelela se se diragetseng. O ka se tsene mo mathateng. Ga se phoso ya gago.”", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "O naledi!\n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela ko teng gore o iketle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: \"Maabane fa o ne o ile kwa go @global.w_crisis_adult_friend. O tlile fano mme go diragetse ka yone nako eo.”\n\n@global.w_crisis_female_caregiver: “Go siame, ke dumela se o se buang ngwanaka. Kgang eno e masisi tota mme re tlile go batla thuso e re e tlhokang. Re ka batla thuso kae?”\n\n@global.w_crisis_teen_girl_1: “Kwa sekolong sa me?”", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Tswala matlho a gago. \n\nLemoga kgolagano ya gago le lefatshe le le kafa tlase ga gago.  \nKe karolo dife tsa mmele wa gago tse di amang mo fatshe? Ke karolo dife tsa mmele wa gago tse di sa ameng fatshe?   \nElatlhoko gore go thuthafetse kae le mo go tsidifetseng teng.  \nIkutlwe o tshegediwa ke lefatshe mo tlase ga gago. Letla mmele wa gago gore o tshegediwe ke lefatshe.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: “Ah ke a itse gore kae, a re ye kwa tliliniking. Ba a itse gore ke eng se ba tshwanetseng go se dira go go thusa. A ga o na bothata fa re ya kwa teng?\"\n\n@global.w_crisis_teen_girl_1: “Ee... Go siame...a o tla tsamaya le nna?”", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Leka seno mo lekgetlong le le latelang fa o ikutlwa o le nosi kgotsa fa o dira ditiro tsa mo gae jaaka go tlhatswa. Go ka thusa thata!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: “Ee ke tla dira jalo. Mme @global.w_crisis_teen_girl_1? Gopola gore seno ga se phoso ya gago. Ke a go rata. O motho yo o siameng. Re tla bona thuso.”", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Nna fatshe o tswale matlho a gago.\nO utlwa medumo e kae? \nReetsa medumo e e mo teng le kwa ntle ga phaposi. E bale ka menwana ya gago. \nMorago ga metsotswana e le lesome, go setse menwana e le kae e e emeng? O utlwile medumo efe? \n\nLeka gape metsotswana e le lesome. \nA o utlwile medumo e mesha? A o utlwile medumo mo teng ga mmele wa gago? \nLemoga kafa o ikutlwang ka gone gone jaanong.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Ruri seemo seno sa ga @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver se ne se le bokete tota! Seemo seno se ka diragalela basimane le basetsana.", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Tswala matlho a gago. \n\nA o kile wa utlwa sengwe ka mo go tseneletseng mo o batlang go se tshabela? \n\nGo na le go itlhokomolosa kafa o ikutlwang ka gone, tla reye mo go yone go se kae. \nGa se bothata. Tswala matlho fa o kgona fa o nnisega. Wela makgwafo. \n\nBatla go itse. O e utlwa kae mo mmeleng wa gago? E mogote kgotsa e tsididi? E thata kgotsa e boleta? E gagametse kgotsa ga ya gagamala? \nIpotse dipotso dingwe. Se mpolelela eng? Se tlhoka eng? Nka ikutlwela botlhoko jang gone jaanong?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "@global.w_crisis_female_caregiver o ne a dirisa bokgoni bofe?", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Fano ke sengwe se se ka go thusang go tsamaisa go tshwenyega mo maikutlong ga gago:  \n\nTlhopha pina e e bontshang se o se tlhokang gone jaanong. A o tlhoka pina e e seng modumo go ritibatsa mowa wa gago o o lapileng kgotsa pina e e tla go binisang go go thusa go ntsha go tshwenyega mo maikutlong?  \n\nDira sebaka mme o tshikinye mmele ka go binela pina. Gopola go hema fa o ntse o itshikinya. Letlelela mohemo wa gago le go tshikinya mmele ga gago go tsamaisane mmogo.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "Ee, @global.w_crisis_female_caregiver o dirisitse bokgoni jotlhe jo re setseng re bo buile – mme le wena o ka kgona!", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Le metsotso e mmalwa e siame go go thusa go tsamaisa go tshwenyega mo maikutlong mme o itumele!", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "Mathata a mangwe a batsadi ba le bantsi ba tshwenyegileng ka one ke thubakanyo le bokebekwa. A re lebeng sekai se se latelang.", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Tswala matlho a gago. \nTsaya motsotso go utlwa lefatshe le le kafa tlase ga dinao tsa gago. \nAkanya ka sengwe se o se lebogelang.\nTlhoma mogopolo mo tseleng e o hemang ka yone.\nHemela kwa teng le kwa ntle.\n\nKwa teng le kwa ntle.", "type": "template", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, fa e sa le go tloga maabane o lebega o tshwenyegile. Bothata ke eng?”", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Dumela! O ikutlwa jang gone jaanong? O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile?\n\nLemoga mo o e utlwang teng mo mmeleng wa gago. Lemoga gore ke dikakanyo di fe tse di golaganeng le maikutlo ao. Wela makgwafo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: “Maabane ke tsamaile le tsala go ya go lebelela bolo. basimane bangwe ba ba neng ba tagilwe ba ile ba simolola go lwantsha tsala ya me.”\n\n@global.w_crisis_male_caregiver_1: “Tswelela, ke go reeditse. Ke solofela gore ga wa ka wa ba lwantsha?”", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Iteboge go bo o tshotse nako ya go tlhola maikutlo le dikakanyo tsa gago!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: “Tota ke ne ke sa batle go lwa mme gone, ke ne nka se lebelele tsala ya me fela e itewa ka jalo...”\n\n@global.w_crisis_male_caregiver_1: “Ka jalo, o ile wa lwana gore o sireletse tsala ya gago?”", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "A re ikatise ka tsela ya go kgoba makgwafo eo re e bitsang ‘Maatla a go Ema go se Kae’. \n\nBaya maoto a gago mo fatshe mme o hemele kwa teng le kwa ntle makgetlo a mararo ka bonya jo o ka bo kgonang. Akanya o nkga lelomo kgotsa o butswela kerese go e tima. \n\nTa Da! Maatla a go Emisa go se Kae!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Rotlhe re ne re lwa. Ke bone mongwe a rapaletse fa fatshe a dutla madi. Ke akanya gore... o ne a sule.”", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Eno ke tsela e e molemo ya go e dirisa fa o ikutlwa o tlhakane tlhogo gonne e tla go thusa go kgoba makgwafo.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: “Ke a leboga gore o mpoleletse ka seno, @global.w_crisis_teen_boy_1. A re nne fa fatshe mmogo jaanong mme re bone gore a ke re itsise mapodisi kgotsa mongwe o sele go thusa.”", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Go ikakgola go ka go thusa tota, segolo jang fa re na le malatsi a a bokete. \n\nAkanya ka beke ya gago mme o feleletse polelwana e latelang: “Beke eno, ke a ipela ka nna go bo...” e ka nna sengwe le sengwe, e seng fela dilo tse di amanang le go nna motsadi!\n\nAkanya ka sengwe se le nosi se o se dirileng gompieno. Jaanong itlamparele ka matsogo a gago mme o iphe TLAMPARELO e kgolo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: “Ke a leboga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: Re tla bona thuso. Gopola, re tla go tshegetsa jaaka lelapa.”", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Dula sentle mme o tswale matlho a gago. \n\nLemoga se se go diragalelang gone jaanong. Ke eng se o se akanyang? A dikakanyo tsa gago di siame kgotsa ga di a siama? O ikutlwa jang? O ikutlwa sentle kgotsa ga o ikutlwe sentle? Mmele wa gago o ikutlwa jang? O ikutlwa o gateletswe kgotsa o repile?\n\nGolagana le pelo ya gago ka tsela e e siameng le e e bonolo. O ka nna wa batla go baya letsogo la gago mo pelong ya gago kgotsa mo sefubeng sa gago. Ipolelele mafoko a a latelang ka tidimalo:\n\nA ke nne le kagiso.\nA ke nne ke sireletsegile.\nA ke nne le boitekanelo jo bo siameng.\nA ke itumele.\nA go nne le lorato mo lelapeng la me.\nA ke ikutlwe ke ratiwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "Ruri seemo seno sa ga @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 se ne se le bokete tota!", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Tsaya motsotso go akanya ka maitemogelo a gago. Lemoga fa o utlwa pharologanyo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "@global.w_crisis_male_caregiver_1 o ne a dirisa bokgoni bofe?", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Kgato 1. Tswala matlho mme o hemele kwa teng. \n\nKgato 2. Ipotse, “Ke akantse ka eng?” Lemoga fa dikakanyo tsa gago di siame kgotsa di sa siama.\nLemoga ka fa o ikutlwang ka gone mo maikutlong. Lemoga fa maikutlo a gago a siame kgotsa a sa siama. Ikgopotse gore go sa kgathalesege gore o ikutlwa jang, go siame.\nLemoga ka fa mmele wa gago o ikutlwang ka gone. Lemoga fa sengwe se le botlhoko kgotsa se gagametse.\n\nKgato 3. Tlhoma mogopolo mo tseleng e o hemang ka yone. Reetsa tsela e o hemang ka yone o ntse o tsenya mowa o bo o o ntsha. O ka nna wa baya letsogo mo mpeng ya gago mme o e utlwe fa e ya kwa godimo le kwa tlase fa o ntse o hema. Dira seno o hema ga 10.\n\nKgato 4. Atolosa temogo ya gago mo mmeleng otlhe wa gago. Reetsa medumo e e mo kamoreng. \n\nKgato 5. Tsaya motsotso go bona fa o utlwa pharologanyo nngwe. Fa go siametse go dira jalo, bula matlho a gago.", "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Bokgoni jono jotlhe bo ka re thusa fa re le mo mathateng.", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "O dirile sentle go Emisa go se Kae. O ka dira seno nako nngwe le nngwe fa o ikutlwa o tshwenyegile mo maikutlong. Go go naya tshono ya go kgoba makgwafo. Le fa ele go hemela kwa teng makgetlonyana kgotsa go ikgolaganya le lefatshe le le mo tlase ga gago o ka dira pharologanyo. O ka Ema go se Kae le ka Bana ba gago!", "type": "template", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Mathata a ka dira gore re ikutlwe re tenegile e bile go se na se re ka se dirang. Mme eno ke yone nako e basha ba rona ba tlhokang gore re kgwe mowa, re ba reetse re bo re akanye.", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Nna fa fatshe, tswala matlho a gago mme o reetse mohemo wa gago jaaka o tsena le go tswa. \n\nLemoga ka fa o ikutlwang ka gone. \n\nFa o siametse go dira jalo, bula matlho a gago gape.", "type": "template", "note": "" }, { - "SourceText": "BREATHE", - "text": "KGWA MOWA", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Leka seno fa o ikutlwa o tshwenyegile mo maikutlong mme o tlhoka go ikhutsa gore ikgolaganye gape.", "type": "template", "note": "" }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Ritibala maikutlo. Ipotse gore, ‘ke eng se mosha wa me a se tlhokang gone jaanong’", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Ema mme o otlololele diatla tsa gago ko godimo. Sutisa maru a o a bonang mme o letle letsatsi le go phatsimele. Ikotlololele ko matlhakoreng o o mabedi. Ikotlololele ko pele le ko morago.\n\nLetla letsogo la gago le akgegele mo letlhakoreng la gago. Gatelela magetla a gago gaufi le ditsebe tsa gago fa o ntse o hemela kwa teng, dira e kete o tswala matlho a gago, mme o tshware mowa wa gago. Tlogela magetla a gago fa o ntse o repisa mmele wa gago.\n\nRepisa matsogo a gago mme letlelela matsogo a gago go elela ko pele le ko morago, mme o thedimosetse mmele wa gago o o ko godimo. Matsogo a gago a iteye mokotla wa gago ka bonolo fa o ntse o sokamisetsa ko matlhakoreng.\n\nBaya leoto mo pele ga le lengwe mme o dire dikgolokwe tse dinnye ka legwejana, gopola go dira mo matlhakoreng o o mabedi. Dira leoto lengwe le lengwe ka dikgolokwe tse nne mo matlhakoreng otlhe.\n\nJaanong tshikinya mmele wa gago otlhe ka bonako jo o ka bo kgonang. Tshikinyetsa kwa godimo! Tshikinyetsa kwa tlase! Tshikinyetsa go dikologa gotlhe!\n\nTswala matlho mme o emise matsogo a gago ka bonya mo godimo ga tlhogo ya gago fa o ntse o hemela kwa teng. Isa matsogo a gago ka bonya kwa letlhakoreng la gago fa o ntse o hemela kwa ntle.\n\nTsaya motsotso go akanya ka maitemogelo a gago.", "type": "template", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Ba bolelele gore o batla go ba thusa e bile wa ba rata.", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "O dirile sentle! O ka dira tiro eno gape nako nngwe le nngwe fa o ikutlwa o tlhoka go ntsha go tshwenyega mo maikutlong mme o neye tlhaloganyo ya gago le mmele wa gago matla.", "type": "template", "note": "" }, { - "SourceText": "THINK", - "text": "AKANYA", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Dira lenaane la dilo tsa boitekanelo jo bo siameng tse o ratang go di dira. Dikakantsho dingwe ke tseno:\n* Go reetsa mmino o o ratang\n* Go tsamaya ka maoto (fa go letleletswe)\n* Go ikatisa\n*Go nwa kopi ya tee o le nosi\n* Go leletsa tsala\n* Go opela, go bina, go rapela, kgotsa go buisa\n*Go nna mo letsatsing o tswetse matlho\n* Go lebelela lenaneo la gago la T.V. le o le ratang\n\nTlhopha e le nngwe mme o e dire gompieno!", "type": "template", "note": "" }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Bua le mosha wa gago. Ke eng se se ka thusang go rarabolola bothata? O ka nna wa tlhoka dithulaganyo tsa ka bonako ga jaana, mme morago ga moo dithulaganyo tsa lobaka lo loleele moragonyana.", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "Fa o itlhokomela, o tlhokomela le bana ba gago. Rotlhe re tlhoka go ikgolaganya. Leka go bua le ditsala, balelapa, le dikgokagano tse dingwe tsa tshegetso letsatsi le letsatsi. Fa ele gore ke kgale o sa bue le mongwe, bua le ene jaanong!", "type": "template", "note": "" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "O ka ikutlwa o le motlotlo gore o ile wa dira maano gore o bone thuso!", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Akanya ka gore ke eng se se dirang gore o galefe? Go direga leng? Gantsi o itshwara jang?\n\nO seka wa letla kgalefo go simolola. Robala kgotsa o ikhutse fa o lapile. Leka go ja sengwe fa o tshwerwe ke tlala. Kopa tshegetso ya mongwe fa o ikutlwa o le esi.", "type": "template", "note": "" }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Go a thusa go ikatisetsa go rarabolola mathata pele ga a diragala. \n\nBona gore malapa ano a matlhano a ile a nna le mathata ka dinako dife. A re re o motsadi: O ne o tla dira eng?\n\nGakologelwa: KGWA MOWA - REETSA - AKANYA", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Go laola kgalefo ga ka nna thata. Ema fa o ikutlwa o galefela bana ba gago kgotsa mongwe o sele.\n\nGore maikutlo a gago a boe ya golo gongwe o tseye metsotso e ka nna 5. Fa o na le lefelo la kwa ntle le le sireletsegileng, tsamaya o ye kwa ntle. O tla fenya seno!", "type": "template", "note": "" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Bothata 1: @global.w_crisis_teen_boy_2 dintwa kwa sekolong", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Tswala matlho a gago. \n\nA re dirise maatla a boselamose a mararo go dula re le fano e bile re iketlile. \n\nBitsa maina a medumo e o e utlwang gone jaanong. \nBitsa maina a menkgo e o kgonang go e nkgelela gone jaanong. \nNaya maina a dijo tse tharo tse o di ratang. \n\nKe dilo dife tse tharo tse o di lebogelang gone jaanong? Ga di a tshwanela go nna dikgolo.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: “Ke la ntlha ke nna le bothata jono. Mme jaanong ke tlile go lelekwa”", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "Morago ga letsatsi le le bokete, akanya ka dilo tse tharo tse o di lebogelang go ka thusa go bona bopelokgale jwa go leka gape kamoso.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Bothata 2: @global.w_crisis_teen_girl_1 ke imile", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Tswala matlho a gago mme o akanye ka letsatsi la gago. \n\nBitsa selo se le 1 se o se lebogelang. \nBitsa selo se le 1 se o se dirileng sentle. \nBitsa selo se le 1 se o se ratang.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke tlhabilwe ke ditlhong tota. Ga ke itse gore ke direng”", + "SourceText": "Well done, you are a hero!", + "text": "O dirile sentle, o mogaka!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Bothata 3: @global.w_crisis_teen_boy_2 ke imisitse mosetsana", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Tswala matlho a gago. \n\nDirisa maatla a boselamose a mararo go nna o le fano e bile o iketlile.\n\nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3. \nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ga ke batle go nna le ngwana\"", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "A o utlwa pharologanyo? Go hemela kwa teng go thusa mmele otlhe wa rona le mogopolo gore di ritibale. \n\nO naledi!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "O ka tsibogela jang @global.w_crisis_teen_boy_2?", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Tswala matlho a gago.\n\nReetsa tsela e o hemang ka yone o ntse o tsenya o ntsha mowa makgetlo a matlhano.\n\nLemoga kafa o ikutlwang ka gone.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Bothata 4: Mongwe mo lapeng o simolola go lwala", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Fa o siame bula matlho a gago gape. Ke wena o laolang!", "type": "template", "note": "" }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "\"Diteko tsa re ke na le HIV. Ke tshogile gore ke tlile go swa”", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Tswala matlho a gago. \n\nTsaya motsotso o akanye ka letsatsi.\n\nAkanya ka sengwe se le nosi se se siameng kgotsa se se monate se o se dirileng.\nIkakgole fa o dirile sengwe se le nosi se sentle gompieno. \nAkanya ka selo se le sengwe se o ka se dirang ka tsela e e farologaneng kamoso.  \nBitsa selo se le sengwe se o se lebogelang.", "type": "template", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "O ka tsibogela jang seemo seno?", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Tswala matlho a gago. \n\nA bana ba gago ba a tle ba dire gore o batle go goeletsa? \n\nIphe metsotswana e 10 o eme go se kae. Hemela kwa teng le kwa ntle makgetlo a 5. \n\nLeka go araba o kgobile makgwafo.", "type": "template", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Bothata 5: mosimane yo o ratanang le @global.w_crisis_teen_girl_1 o mo pateletsa gore ba robalane", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Dimilione tsa batsadi ba a re seno se a thusa - THATA.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: “Tota ke ne ke sa batle. Jaanong ke tlile go ima kgotsa go tsenwa ke bolwetsi. @global.w_crisis_female_caregiver, ke tshogile tota...\"", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Tswala matlho a gago. \n\nTsaya motsotso go emisa se o se dirang mme o ikgolaganye le tsela e o hemang ka yone.   \n\nKe selo sefe se le sengwe se o se lebogelang gone jaanong?  \nKe selo sefe se le sengwe se se go itumedisang?  \nKe selo sefe se le sengwe se o se ratang?  \n\nGa di a tshwanela go nna dikgolo. Ka dinako tse dingwe dilo tse dinnye mo botshelong ke tsone di leng botlhokwa thata!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "O ka tsibogela jang @global.w_crisis_teen_girl_1?", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Fano ke tiro e e ka ritibatsang mmele wa gago:  \n\nDula sentle mme o tswale matlho fa o kgona.  \nAkanya ka palamonwana ya gauta e sekaseka mmele wa gago go tswa mo maotong go ya ko tlhogong.   \nTlhwaya tsebe jaaka fa e ntse e ya godimo le tlase mo mmeleng wa gago. A go na le dikarolo tsa mmele tse di tiileng? Di sule bogatsu? Di botlhoko?   \nTlhoma mogopolo mo dikarolong tseno metsotswana. Hemela kwa teng ga karolo eo mme o ntshe mowa, leka go tsamaisa go tiya goo kgotsa botlhoko joo.   \nDira seno ka go hema makgetlo a mmalwa.   \n\nBula matlho a gago. Mmele wa gago o ikutlwa jang jaanong?", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Gakologelwang gore lo thusane lo bo lo kgothatsane. Ga go motlhofo go ritibala maikutlo le go reetsana ka nako ya mathata - re motlotlo ka wena.", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "O ka nna wa leka seno mo lekgetlong le le latelang fa o iphitlhela o robetse mo bolaong mme o sa kgone go robala!", "type": "template", "note": "" }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "O na le mosha wa gago tlhopha nngwe ya maemo ano (kgotsa o ikakanyetse one ka bowena!). Leba popae, mme lo tlotle gore lo ne lo ka dira eng lo le mmogo fa seno se diragaletse tsala kgotsa mo lelapeng la gago. \n\nMme gakologelwa: KGWA MOWA - REETSA - AKANYA", + "SourceText": "Start", + "text": "Simolola", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, le go go thusa go rulaganyetsa isago. \n\nGongwe lo ka rulaganya dijo tsa moletlonyana mmogo le go rulaganya mmino fa e le gore lo ka rata go bina!", + "SourceText": "Please sign in with your Google account to use the app.", + "text": "Kopa o tsene mo go akhaonto ya Google go dirisa app.", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, mme lo ka bua gore ke eng se lo batlang go tswelela lo thusiwa ka sone. \n\nLo ka rulaganya go tla ka sengwe se lo tla se itumelelang go keteka – gongwe dijo kgotsa mmino o lo ka ratang go o reetsa!", + "SourceText": "Sign in with Google", + "text": "Tsena mo gare ka Google", "type": "template", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Go itlhokomela ke sedirisiwa sa botlhokwa sa botsadi.", + "SourceText": "Add this activity to @global.my_activities", + "text": "Tsenya tiro eno go @global.my_activities", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "How are you feeling today?", - "text": "O ikutlwa jang gompieno?", + "SourceText": "@global.parent_app funded by", + "text": "@global.parent_app e tlametswe ka madi ke", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Ke itumelela go utlwa gore o tsogile sentle gompieno. O botlhokwa!", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "E Matlafadiwa ke Botsadi jwa Boitekanelo jwa Botshelo jo bo Leele le balekane", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Tshwarelo gore dilo di bokete gone jaanong. Hemela kwa teng mme o itse gore o botlhokwa.", + "SourceText": "Bringing teenagers up is hard", + "text": "Go godisa basha go bioma", "type": "template", "note": "" }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "O ka thusa mosha wa gago go tlhaloganya gore go roba molao wa lelapa go na le ditlamorago. \n\nMme gore o dira seo JANG ke gone go leng botlhokwa. \n\nGo otlhaya ka tsela e e siameng go thusa basha gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng...", + "SourceText": "You are the best parent your teen could have", + "text": "O motsadi wa mmakgonthe o mosha wa gago a ka nnang le ene", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno ke ditlamorago tse di ritibetseng.\n\nGo botlhokwa gore fa re itsise basha ba rona ditlamorago re ba akaretse, mme fela gape sa botlhokwa ke gore re nne re kgobile makgwafo fa re ba itsise ditlamorago.\n\nSeo se tla thusa mo go rona gore re dumalane ka go itsise ditlamorago tse di ritibetseng mo basheng ba rona mme basha ba rona ba tla kgona go di gopola motlhofo fa re ba akaretsa mme seo se tla dira gore ba nne le maikarabelo.", + "SourceText": "Ideas from other families:", + "text": "Dikakantsho go tswa ko malapeng a mangwe:", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le motlotlo - tseo di didirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Customise @global.parent_app", + "text": "Itsenyetse @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla nna re go gopotsa gore o iketle, o lemoge le gore o iteboge. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "A re baleng ka se se diragetseng ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e boima ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go tswelela o dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDilo tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang? O thari!”", + "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", + "text": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Gopola go dirisa bokgoni jo bosha gore o tswelele o nna le puisano e e siameng le mosha wa gago. \n\nO ka sekaseka ditlhabobotlhale tsa motheo tsa go rulaganya tshireletsego ya mosha wa gago mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", + "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", + "text": "Go gontle. Fa go ka nna le kgatelelo epe ya maikutlo kgotsa go sa utlwane ka baka la madi mo lelapeng la lona mo nakong e e tlang, o ka nna wa sekaseka @data.workshop.w_money.in_text_title kgotsa @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ga o latele molao wa rona! Ke tlile go go itaya!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", + "text": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nNako le nako fa go nna le go sa utlwane ka madi mo lelapeng la gago, batla ditlhabobotlhale mo go @data.workshop.w_money.in_text_title kgotsa kafa tlase ga @data.parent_centre.my_tips.location_text!", + "type": "template", + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Ga o na tekatekano! Ga o nke o ntheetsa!! Ke go tlhoile!”", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Gopola gore o ka kgona go bona ditlhabobotlhale di le dintsi tse di thusang le didirisiwa mo go @global.parent_centre - o ka kgona go di bona nako nngwe le nngwe fela!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Tlotlang mmogo: \n* Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", + "text": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nGopola, o ka kgona go bona tshegetso e nngwe ka seno mo go @data.workshop.w_safe.in_text_title nako le nako fa o e batla!", "type": "template", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "Go dirisa ditlamorago ka tsela eno ga go a dira sentle ka gonne...", + "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", + "text": "Re a itse seno se bokete. O ka sekaseka ditlhabobotlhale dingwe tse di thusang mabapi le ka fa o ka dirisang nako o na le mosha wa gago ka teng mo tlase ga @data.parent_centre.my_tips.location_text kgotsa o ka leba gape @data.workshop.w_1on1.in_text_title.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver o ne a galefile", + "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", + "text": "O dirile sentle ka go simolola ka motheo ono o o siameng! O ka nna wa sekaseka @data.workshop.w_1on1.in_text_title go bona megopolo e mengwe mabapi le go fetsa nako mmogo.", "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver ga a ka a letla @global.w_consequence_teen_boy_1 gore a tlhalose", + "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", + "text": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. O ka nna wa sekaseka gore o ka dirisa kakgolo jang fa tlase ga @data.parent_centre.my_tips.location_text.\n\nGo bona ditlhabobotlhale tse dingwe mabapi le go dirisa bokgoni jono sentle, o ka leba gape @data.workshop.w_praise.in_text_title.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Ga go a ka ga tlotliwa ka ditlamorago pele le @global.w_consequence_teen_boy_1", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", + "text": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. \n\nGape o ka leba lekgetlo la bobedi @data.workshop.w_praise.in_text_title go bona ditlhabobotlhale tse dingwe mabapi le gore o dirise bokgoni jono sentle jang.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "The consequence was too strong", - "text": "Ditlamorago di ile tsa nna bogale thata", + "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "type": "template", "note": "" }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", + "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "type": "template", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "Ee, go tsibogela maemo ka tsela e e ntseng jalo go ile ga dira gore mongwe le mongwe a tenege le go galefa le go feta.", + "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, go lemoga gore o kgonne le go iteboga, go go thusa go kgona go laola kgatelelo ya gago ya maikutlo le gore o ikutlwe o kgobile makgwafo.\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Go le gantsi basha ga ba ikobele melao. Nako ya fa ba gola ke nako e e thata ya fa ba leka go ithuta gore ke bomang. \n\nKa lesego, go na le ditsela tsa go otlhaya ngwana wa gago wa dingwaga tsa bosha o sa tenega kgotsa o sa dirise dikgoka... e bile ditsela tseno di dira sentle!\n\nGo tlhalosa ditlamorago o ritibetse maikutlo go thusa bana ba rona gore ba bone gore ba tla rwala maikarabelo a se ba se dirang – e ka tswa se siame kgotsa se sa siama. \n\nA re boneng dikai di le mmalwa - a re re o motsadi:", + "SourceText": "Customise for your needs", + "text": "Direla ditlhoko tsa gago", "type": "template", "note": "" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Ditlamorago tsa fa o ritibetse maikutlo e tshwanetse go nna... \n\nTEKATEKANO: Se nne makgwakgwa e bile tota o ka dira seo \n\nKA BONAKO: Di neele ka bonako jo bo kgonegang \n\nO SA FETOFETOGE: Ditlamorago di le dingwe ka metlha", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Motsadi mongwe le mongwe mo lefatsheng wa retelelwa mo dinakong tseno tse di bokete. Potso e e latelang ka maitemogelo a gago a go nna motsadi go tla re thusa go go batlela tshegetso e o e tlhokang.\n\nBua nnete. Gopola gore ga o nosi! Gopola gore dimilone tsa batsadi ba ikutlwa jaaka wena, mme rotlhe re tshwanelwa ke go tshegediwa.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 o tlile gae thari.", + "SourceText": "Thank you for being honest", + "text": "Re lebogela gore o buile nnete", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 o tlile gae thari.\n\nKe ditlamorago dife tse di ka thusang fano?", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Go gontle fa o araba o kgobile makgwafo fa mosha wa gago a dira sengwe se se tenang. Ba ka ithuta go le gontsi go tswa mo go wena!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Tota ditlamorago ga di tshwane kgo le kotlhao: tsone di neela basha ba rona tshono ya go ithuta gore ke bone ba rwalang maikarabelo a se ba se dirang.\n\nO ka kgona go di laola E BILE di mosola go feta go itaya kgotsa go goelela!", + "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", + "text": "Go gontle gore o lemoga se mosha wa gago a se dirang. Go nna motsadi go bokete, mme o dira sentle go mmoloka a sireletsegile.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.", + "SourceText": "You selected \"I would rather not answer\"", + "text": "O tlhophile “Ke tlhopha go se arabe”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.\n\nKe ditlamorago dife tse di ka thusang fano?", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Go siame!\n\nGopola, fa o araba, dikarabo tsa gago di tlile go tsholwa di le sephiri mme di tlile go re thusa go go neela diteng tse di maleba go wena.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Ditlamorago di na le mosola thata fa o di tlotla le basha e bile lo dumalana ka tsone go sa le gale pele o di dirisa.\n\nE bile: ga se gore ka metlha ditlamorago di nna le diphelelo tse di sa siamang... Lo ka nna lwa dumalana ka ditlamorago tse di SIAMENG fa go dirwa dilo tse di SIAMENG e le gore go tle go nne le boitshwaro jo bo siameng le go feta!", + "SourceText": "Are there adults in your family?", + "text": "A go na le bagolo mo lelapeng la gago?", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "App eno e tsepametse mo batsading bao ba nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "What consequence would help here?", - "text": "Ke ditlamorago dife tse di ka thusang fano?", + "SourceText": "Are there teens in your family?", + "text": "A go na le basha mo lelapeng la gago?", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.\n\nKe ditlamorago dife tse di ka thusang fano?", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "App eno e tsepametse mo malapeng a a nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola mo lelapeng la gago!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Tsela e o itsiseng ka yone ditlamorago o ritibetse maikutlo e botlhokwa. Gakologelwa gore, fa o akaretsa mosha wa gago, gantsi dilo di nna botoka!", + "SourceText": "Are you sure you want to skip this question?", + "text": "A o a tlhomamisa gore o batla go tlola potso eno?", "type": "template", "note": "" }, { - "SourceText": "EXPLAIN", - "text": "TLHALOSA", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "A o netefetse gore o batla go tlola potso e? Gopola, karabo ya gago e tlile go tsholwa e le sephiri mme e tlile go re thusa go tlhaloganya ditlhokego tsa gago tsa botsadi.\n\nO ka tlhopha le go se arabe potso nngwe le nngwe ka go tlhopha tshekeletsa.", "type": "template", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Tlhomamisa gore lotlhe lo ritibetse maikutlo. Kgwa mowa makgetlo a le mmalwa. Tlhalosetsa mosha wa gago gore ke eng fa boitshwaro jwa gagwe bo go tshwenya.\n\nTlhalosa mabaka a go bo melao e o e beileng e le botlhokwa. O ka nna wa mo tlhalosetsa gore o ikutlwa jang - ga go phoso go tlhalosa gore o go swabisitse.", + "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", + "text": "O dirile sentle. Saense ya boboko e bontsha gore go laola kgalefo ya gago go tla tokafatsa tsela e boboko jwa mosha wa gago bo golang ka gone. Nna motlotlo ka wena.", "type": "template", "note": "" }, { - "SourceText": "AGREE", - "text": "DUMALANA", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", + "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa gore o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla go gopotsa ka metlha gore o iketle, o lemoge gore o kgonne le go iteboga. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @data.workshop.w_stress.number - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @global.weekly_workshops gore o simolole.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Tlhalosetsa mosha wa gago gore diphelelo e tla nna eng fa a ikobela melao le fa a sa e ikobele.\n\nBa kope gore ba tle ka dikakantsho tsa bone. Tlotlang go fitlha lo dumalana ka sengwe se tota se ka kgonegang.\n\nTlhalosa ditlamorago tsa fa molao O SA ikobelwe le gore ditshiamelo e tla nna dife fa O ikobelwa.", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDidirisiwa tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "ACT", - "text": "TSAYA KGATO", + "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", + "text": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Re tla netefatsa gore o a tshegediwa ka go aga puisano. \n\nRe tla bua mo go oketsegileng ka go rulaganya tshireletsego ya mosha wa gago kgantele mo @global.weekly_workshops, mme fela o ka iponela dikakantsho tse di tseneletseng tsa go boloka mosha wa gago a sireletsegile mo tlase ga @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Fa mosha wa gago a ikobela molao o o o beileng, mo akgole o bo o mo neye ditshiamelo!", + "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", + "text": "Go gontle. Re na le workshop e e rutang ka tekanyetsokabo ya lelapa e e ka thusang ka go tshwenyega ka madi ka kakaretso, le go fokotsa go omana ka madi.", "type": "template", "note": "" }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "Ba tla bona gore wa ba tlotla e bile o ba tsaya tsia. Gakologelwa: Fa re nna re ba akgola, ba tla nna ba bontsha boitshwaro joo jo bo siameng!", + "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", + "text": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nRe na le workshop e e rutang ka tekanyetsokabo ya lelapa dibeke di le tlhano, mme o setse o ka kgona go bona ditlhabobotlhale dingwe tsa motheo ka tekanyetsokabo ya lelapa mo tlase ga @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Fa mosha wa gago a sa ikobele molao o o beilweng, latelela seo ka ditlamorago.", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Diteng tse di bulwang ka dipotso tseno jaanong di ka bonwa mo tlase ga @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Fa mosha wa gago a tlola molao, mo neele ditlamorago o ritibetse. O tshwanetse go dira jalo ka TEKATEKANO (o se makgwakgwa), KA BONAKO (o se ka wa okaoka) O SA FETOGE (dira se se tshwanang ka metlha).", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", + "text": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nRe tlile go go neela tshegetso e oketsegileng ka seno mo nakong e e tlang @global.weekly_workshops fa o ka rata go itse mo go oketsegileng!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Tlotlang mmogo:\n* Ke melao efe a basha ba gago go le gantsi ba sa e lateleng? \n* Ke ditlamorago dife tse o ka di dirisang mo molaong mongwe le mongwe o o tobileng fa o sa latelwe? \n\nDitlamorago di tshwanetse go nna: \nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe) \nSE FETOFETOGE (ka go tshwana nako le nako)\n\nAkgola le go rotletsana – re ka kgona go nonotshana!", + "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", + "text": "Re a itse seno se bokete. Re tsentse dikakantsho tse di tla go thusang gore o iphe nako le mosha wa gago go @data.parent_centre.my_tips.location_text, gore o e bone ka nako e o e batlang ka yone. \n\nKa gonne @data.workshop.w_1on1.title e aga motheo wa sedirisiwa sa batsadi botlhe, e tla bo e le @global.weekly_workshop o e amogelang beke e e tlang!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "A re tlotleng gape ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", + "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", + "text": "O dirile sentle! @global.weekly_workshop ya rona e e latelang e tla go naya dikakantsho tse di oketsegileng tsa seno, jaaka motheo wa didiriswa tsotlhe tsa botsadi. Mme o setse o simolotse sentle tota!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: “Ke tshwenngwa ke gore o sa ntse o tla gae thari, @global.w_consequence_teen_boy_1. Ke eng se re ka se dirang go go thusa gore o gakologelwe go tla gae ka nako?”\n\n@global.w_consequence_teen_boy_1: “Fa ke tla gae ka nako, gongwe nka robala thari ka metsotso e le 30 go feta ka tlwaelo?”", + "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", + "text": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. Re tsentse dfidirisiwa tse di botlhokwa tsa kafa o ka dirisang go akgola mo @data.parent_centre.my_tips.location_text gore o tsene ka bonako.\n\nMo go @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa botswerere jono sentle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: Kakantsho eo e molemo tota! Jaanong re tshwanetse go dira eng fa o sa ikobele molao ono? \n\n@global.w_consequence_teen_boy_1 (o itoma diteme): “Mgmluuhm”", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", + "text": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. Mo @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa bokgoni jono sentle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: “Bua fela, ke a itse gore o akantse sengwe.”\n\n@global.w_consequence_teen_boy_1: \"Go siame…. Go ka nna jang ka: Ke tshwanelwa ke go dira tirogae ya me?”", + "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: “Gone mme tirogae ke selo se o tshwanetseng go se dira. Fa o lebala molao, go tla bo go siame gore o seka wa bonana le ditsala tsa gago letsatsi le le latelang.”\n\n@global.w_consequence_teen_boy_1: \"Go siame, @global.w_consequence_male_caregiver.\"", + "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Letsatsi le le latelang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Go setse go le thari!”", + "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", + "text": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, gakologelwa mme o iteboge, go go thusa go kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo @data.workshop.w_stress.number ya @global.weekly_workshops- mme o setse o kgona go dirisa didirisiwa tse di thusang mo tlase ga@data.parent_centre.my_tips.location_text gore o simolole!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", + "SourceText": "Talk Together", + "text": "Buang Mmogo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, Ke bosigogare mme o tlile gae thari go na le nako e re dumalaneng ka yone. Le fa gone o ka tlhalosa jang, o tshwanetse go tlhaloganya gore se o se dirang ga se a siama. @global.w_consequence_female_caregiver ke ntse ke tshwenyegile tota.”", + "SourceText": "Share ideas, support each other!", + "text": "Bolelanang dikakantsho, lo tshegetsane!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: “Ditsala tsa me di ne di batla gore re fetse nako e telelenyana mmogo. Ba ne ba re ke ngwana fa ke setse ke batla go ya gae.” \n\n@global.w_consequence_male_caregiver: “Ke a itse gore gantsi go thata go gana se ditsala tsa gago di go kopang sone. A re ye go robala, re tla bua ka kgang eno mo mosong fa re ikhutsitse sentle.”", + "SourceText": "Think Together", + "text": "Akanyang Mmogo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: “Intshwarele go bo ke dirile gore o tshwenyege le @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ke a leboga. Jaanong tsamaya o ye go robala, mme gone, itse gore ka gonne o tlile gae thari, kamoso maitseboa ga o ye gope.”", + "SourceText": "It's time to think together!", + "text": "Ke nako ya go akanya mmogo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "A re bueng ka kgang eno", + "SourceText": "Think", + "text": "Akanya", "type": "template", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Ditlamorago di dirile sentle mo lekgetlong leno ka gonne...", + "SourceText": "It's time to think!", + "text": "Ke nako ya go akanya!", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver ba buile ka ditlamorago ba ritibetse maikutlo", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Fano ke botswerere jwa beke eno jo o ka bo itseelang! \n\nBo dirise kwa gae mme o bo iponele nako nngwe le nngwe go @global.parent_centre ya gago.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "They agreed on consequences together", - "text": "Ba ile ba dumalana mmogo ka ditlamorago", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Hemela kwa teng\n2. Bona fa dikgang di thaloganyega.\n3. Botsa gore ba tsere kae dikgang.\n4. Tlhola gape le ba bangwe/kgotsa motswedi yo o tshepang\n5. Nagana gore dikgang tseo di ka thusa kgotsa dia tshosa bangwe fa o ka di phatlhalatsa.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver o ne a tsiboga a ritibetse maikutlo mme gone a tiisitse fa @global.w_consequence_teen_boy_1 a ne a sa ikobela molao", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Rotlhe ka nako dingwe re ka rata bo bolelela basha ba rona\"O tshwanetse o dire jaana, kgotsa... mathata\", fela ga se dire gore ba sale melao go feta kgale.\n\nGongwe, o ka ba thusa go tsaya ditshwetso tse di siameng ka go ba bontsha gore wa ba tshepa le go bua le bone:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver o ne a reetsa @global.w_consequence_teen_boy_1", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "TLOTLANG KA DITLAMORAGO", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Ditlamorago di ne di utlwala e bile di tshwanela", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Botsisa\"fa o dira se, go tla diragala eng?\"", "type": "template", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Goreng go dirisa ditlamorago go dirile sentle mo lekgetlong leno?", + "SourceText": "If something goes well, praise your teen!", + "text": "Fa sengwe se tsamaya sentle, boka mosha wa gago!", "type": "template", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "O ka tla ka ditlamorago o ritibetse jang fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa? \n\nGakologelwa gore e tshwanetse go nna: \nTEKATEKANO - BONAKO - E SA FETOFETOGE", + "SourceText": "REFLECT TOGETHER", + "text": "DIRANG PONELO TENG MMOGO", "type": "template", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Go sa etele ditsala kgwedi yotlhe", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "Fa sengwe se sa tsamae sentle, botsisa\" O kabo o se direle jang go farologana?\"", "type": "template", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Go ka nna bokete gore o tseye kgato eno e bile e ka lebega e le makgwakgwa!", + "SourceText": "START SMALL", + "text": "SIMILOLA GO LE GONNYE", "type": "template", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Go khansela dithulaganyo tsa bone tsa letsatsi la botsalo mo lobakeng lwa kgwedi", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Naya mosha wa gago maikarabelo a mannye kwa tshimologong. fa seo se tsamaya sentle, o ka a oketsa go bontsha gore o tshepa mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Go setse nako e telele e bile le yone e makgwakgwa!", + "SourceText": "MAKE TIME", + "text": "DIRA NAKO", "type": "template", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Maitseboa ano ga go lebelelwe TV", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Dira nako go nna le puisano e e senang dikgoreletsi.", "type": "template", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Bontle, seno se lebega se le tekatekano e bile se ka dirwa gone jaanong", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Botsa mosha wa gago dipotso mme o mo letle go neelana ka dipono tsa gagwe ntle le go mo tsena ganong.", "type": "template", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Rulaganya go tla ka ditlamorago o ritibetse maikutlo fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa. Gakologelwa gore di tlhoka go nna \n\nTEKATEKANO - BONAKO - DI SA FETOFETOGE", + "SourceText": "WORK TOGETHER", + "text": "DIRANG MMOGO", "type": "template", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Tiro e re go e abelang go e dira kwa gae beke eno e tla nna go bua le ngwana wa gago wa dingwaga tsa bosha ka ditlamorago di le DINGWE tse di sa siamang le ditlamorago di le DINGWE tse di siameng.\n\nDitlamorago di tshwanetse go nna:\nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe)\nDI SA FETOFETOGE (ka go tshwana nako le nako)", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Tlotlang ka bothata bo bo rileng, le tle ka tharabololo mmogo mme le dire seo le dumelanang ka sona.", "type": "template", "note": "" }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Boitshwaro jo bo sa Siamang: Go tla gae thari. \n\nDitlamorago tse di sa Siamang: Ga a kitla a bona ditsala tsa gagwe letsatsi le le latelang. \n\nBoitshwaro jo bo sa Siamang: Go bua ka tsela ya go kgoba. \n\nDitlamorago tse di sa Siamang: Kwala lekwalo la go kopa maitshwarelo. \n \nBoitshwaro jo bo Siameng: Go thusa ka go ya mabenkeleng. \n\nDitlamorago tse di Siameng: Go fiwa metsotso e le 30 gore a itumelele go dira sengwe se a se ratang. \n\nBoitshwaro jo bo Siameng: Go thusa ka go tlhokomela bomonnawe. \n\nDitlamorago tse di Siameng: Go fiwa nako e e oketsegileng ka ura a na le ditsala tsa gagwe mafelobeke.", + "SourceText": "PRAISE", + "text": "BOKA", "type": "template", "note": "" }, { - "SourceText": "Great!", - "text": "Go gontle!", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Leboga mosha wa gago ka go arolelanela mme o tlhagise gore go le thusa jaang ka bobedi.", "type": "template", "note": "" }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Ke a itse botshelo bo ka nna bokete. Ke motlotlo ka wena. \n\nGo sa kgathalesege gore o ikutlwa jang, go molemo go bo o le fano!", + "SourceText": "Hear a caregiver's testimonial", + "text": "Utlwa bosupi ba motlhokomedi", "type": "template", "note": "" }, { - "SourceText": "Using the app together", - "text": "Lo dirisa sediriso mmogo", + "SourceText": "Read a caregiver's testimonial", + "text": "Buisa bosupi ba motlhokomedi", "type": "template", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Go gontle go go bona!\n\nSa ntlha, a re thuse setlhopha sa gago gore se simolole.", + "SourceText": "Why @local.workshop_data.title?", + "text": "Goreng @local.workshop_data.title?", "type": "template", - "note": "" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Dumalanang ka melao ya lona mmogo:\n* Ke malatsi/dinako dife tse re tla kopanang ka tsone mo bekeng?\n* Ke mang yo o tla tshwarang (di)founu ka nako ya ditiro tsa rona?\n* Re ka netefatsa jang gore mongwe le mongwe a ka bua a gololesegile?\n* Re ka dirang gore rotlhe re ikutlwe re tlotliwa?", + "SourceText": "Hear @global.topic_intro_name's message", + "text": "Utlwa molaetsa wa ga @global.topic_intro_name", "type": "template", - "note": "" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "O ka nna wa fetola letsatsi la workshop ya lona le leina la setlhopha sa lona mo @global.weekly_workshop_options.", + "SourceText": "Read @global.topic_intro_name's message", + "text": "Buisa molaetsa wa ga @global.topic_intro_name", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "Some rules that other groups made:", - "text": "Melao mengwe eo ditlhopha tse dingwe di e dirileng:", + "SourceText": "Today's steps", + "text": "Dikgato tsa gompieno", "type": "template", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "* Labobedi ka ura 7 maitseboa ke nako ya rona ya @global.parent_app mmogo\n* Refosanang go tshwara founo (tiro e le 1 motho mongwe le mongwe)\n* Amogelang maitemogelo a yo mongwe. Rotlhe ga re tshwane!\n* Fanang sebaka sa go bua le go reetsana\n* Dipotso tsotlhe di a amogelwa\n* Se re se bolelelanang ga re se bolelele ope", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "O naledi! \n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela kwa teng gore o iketle. \n\nGopola, o amogela @global.parent_point nako nngwe le nngwe fa o itlhokomela - o botlhokwa!", + "SourceText": "Try it Together", + "text": "E Lekeng Mmogo", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Go nna motsadi go ka nna bokete. Nako tse dingwe go utlwalega e kete bana ba rona ga ba re reetse.\n\nMme saense e bontsha gore go ipha metsotso e se kae letsatsi le letsatsi o tlhomile mogopolo mo nakong e o iphang yone le mosha wa gago lo le babedi go thusa go aga tshepo le lerato.", + "SourceText": "Let's practice together.", + "text": "A re ikatiseng mmogo.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Nako ya lona lo le babedi ke fa o tlhoma mogopolo mo go bone, go sena TV kgotsa founo. Dira gore ba etelele pele se o se dirang kgotsa se lo buang ka sone.\n\nGo gontle go dira metsotso e le masome a mabedi ka letsatsi mme gone le metsotso e metlhano e siame tota.", + "SourceText": "What does that mean?", + "text": "Seo se raya eng?", "type": "template", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Dumela.\n\nSetlhogo sa rona ke go ipha nako mmogo le bana ba rona.\n\nGo botlhokwa go ipha nako le bana ba rona gore ba kgone go re tlhaloganya, mme le rona re nna le tshono ya go ba itse. \n\nGopola, lelapa le le tlhaloganyanang le tshela ka kutlwano.", + "SourceText": "How can you help?", + "text": "O ka thusa jang?", "type": "template", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Go tlhaloganya gore mosha wa gago o ikutlwa jaang le gore o ka ba tshegetsa jaang, go dira pharologanyo e kgolo mo go lona ka bobedi. Leba mosha wa gago mme o botse gore o ikutlwa jaang. Tobetsa sefatlhego fa tlase go itse go le gontsi:", "type": "template", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Ditiro tsa go itlhokomela\n* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Hopeful", + "text": "Tsholofelo", "type": "template", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Buang dikakantsho! \n\nKe dilo dife tse lo ka di dirang go ipha nako mmogo le basha ba gago?\n\nO ikutlwa e kete GA O NA NAKO mme o lapile? Tlaya ka dikakantsho tsa nako ya lona lo le mmogo tse di sa tseyeng nako e ntsi, jaaka go ya lebenkeleng mmogo ka dinao.", + "SourceText": "Resilient", + "text": "Go kgotlhelela", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", + "SourceText": "Self-esteem", + "text": "Maemo a bowena", "type": "template", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "A re akanye ka ditsela tsa go ipha nako mmogo le mosha wa gago.", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Basha ba na le diphitlhelelo le ditoro ka isago - gaufi le kgakala!", "type": "template", "note": "" }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "O ka dira eng go ipha nako mmogo le mosha wa gago?", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Botsisa mosha wa gago ka diphitlhelelo le ditoro tsa gagwe, mo rotloetse go nagana ka se ba se batlang mo isagong ya bona mme le dire leano mmogo la go di fitlhelela.", "type": "template", "note": "" }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "O ikutlwa e kete GA O NA NAKO mme o lapile? Gape gopola go akanya ka ditsela tse di se kitlang di tsaya nako e e oketsegileng.", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Basha ba ba nang le kgotlhelelo ba kgona go mekamekana le maemo a a boima, go amogela diphetogo, le go rarabolola mathata fa a fitlha.", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Rorisa mosha wa gago fa a fitile mo boimeng mme o mo tshegetse ka fa o kgonang.", "type": "template", "note": "" }, { - "SourceText": "DAY - Try to do it every day", - "text": "LETSATSI – Leka go dira seno letsatsi le letsatsi", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "Maemo a mosha ka bo-ene a dira ke gore o nagana a le jaang.", "type": "template", "note": "" }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Batla metsotso e 5 (kgotsa go feta!) letsatsi le letsatsi fa mosha wa gago a sena sepe se a batlang go se dira.", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Rotloetsa tsela ya go iteba e e siameng, dira sekao ka go se itshege kgotsa go inyenyefatsa ka nako tsotlhe. Itse bokgoni ba mosha wa gago mme o tshegetse makoa a gagwe.", "type": "template", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "TSHAMEKA - Letla mosha wa gago a tlhophe", + "SourceText": "Lonely", + "text": "Bonosi", "type": "template", "note": "" }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Bolelela mosha wa gago gore o ka rata go fetsa nako le ene le gore ba tlhophe gore ba batla go dira eng kgotsa go bua ka eng. Ba ka tsaya seno se sa tlwaelega ko tshimologong, mme ba tla itumelela nako eno le wena!", + "SourceText": "Anxious", + "text": "Maikutlo a a sa iketlang", "type": "template", "note": "" }, { - "SourceText": "STAY - Focus on your teen", - "text": "DULA - O tlhomile mogopolo mo mosheng wa gago", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Basha ba ka ikutlwa ba le nosi le fa ba na le batho. Ba ka ikutlwa okare ga ba na motho yo ba ka buang le ene, go mo tshepa le go neelana.", "type": "template", "note": "" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Tima TV mme lo beele difouno ko thoko. Lebelela mosha wa gago. Dumela ka tlhogo kgotsa o re “ke a bona” go bontsha gore tota o tlhwaile tsebe. Amogela se ba se buang ntle le go ba atlhola.", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Botsisa mosha wa gago gore o ntse a ya jaang mme o leke go batla ditsela tse dintshwa mmogo tsa go buisana le ditsala le ba lelapa. - segolo metlheng ya go tswalelwa.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Go ipha nako mmogo le mosha wa gago e ka nna monate le mo go wena, tota! Go ka nna ga dira gore o ikutlwe o sa tshwenyega thata mo maikutlong.", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Maikutlo a a sa iketlang a tlwaelegile mme a re thusa go mekamekana le maemo a a boima. Mme fela maikutlo a a sa iketlang a a feteletseng kgotsa go tshwenyega go go thibelang basha go dira dilo tse ba di ratang ke bothata.", "type": "template", "note": "" }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Iphe metsotso e 5-20 le mosha wa gago lo le babedi, letsatsi lengwe le lengwe le o ka le kgonang mo bekeng eno.", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Thusa mosha wa gago go senola seo se dirang gore a nne le maikutlo a a sa iketlang mme le dire leano mmogo gore le ka fetola jaang maikutlo aa.", "type": "template", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Gopola - nako nngwe fa o kgona, iketle, gakologelwa o bo o iteboge. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Go dira ditirwana tsa go iketla mmogo go ka thusa!", "type": "template", "note": "" }, { - "SourceText": "Remember that YOU matter!", - "text": "Gopola gore O botlhokwa!", + "SourceText": "Depressed", + "text": "Kgatelelo ya maikutlo", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "Ke lebogela go lemoga maikutlo a a siameng. Ke itumelela go utlwa gore lo tsogile sentle gompieno!", + "SourceText": "Self-harm", + "text": "Go ikutlwisa botlhoko", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "Ke lebogela go lemoga maikutlo a a thatanyana. Botshelo bo ntse jalo, ka dinako tse dingwe go nna thata. Gopola gore ga o nosi.", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Go ikutlwa o hutsafetse kgotsa mowa o le kwa tlase, go selekega mo moweng, tsotlhe ke maikutlo a tlwaelegileng a batho. Kgatelelo ya maikutlo e fetsa sebaka se se leele mme ditirwana tsa ka metlha tsa mosha wa gago di ka kgoreletsega. Mosha wa gago a ka ikutlwa a sena tshepo mme a sa rotloetsege go fetola sepe.", "type": "template", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "Seno se sentle ruri. Mekgwa eno yotlhe e dira gore lelapa la lona le nonofe. Nna motlotlo.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Go bolelela mosha wa gago go 'emisa, go ka gakatsa dilo. Gongwe ba reetse, ba bontshe ka mowa o o repileng gore wa tlhaloganya mme o age boitshepi ba bona. Leka go bona thuso ya profeshenale.", "type": "template", "note": "" }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Melao e thusa basha go itse gore ke eng seo se lebeletsweng mo go bone. \n\nGantsi bana ba dingwaga tsa bosha ba ikobela melao fa o e tlhoma O NA LE bone e bile o ba leboga fa ba e ikobela!", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Nako nngwe basha ba ka ikutlwisa botlhoko ka bomo go lebana le maikutlo a a sa siamang jaaka go selekega, go itshola, go ikutlwa o le mongwe le go itlhowa. Se se ka baka ke kgatelelo ya maikutlo le maikutlo a a sa nnisegeng.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Dumelang, lotlhe. \n\nKgang eo re tlileng go bua ka yone gompieno ke melao. \n\nMelao e dira gore go nne le kagiso mo lelapeng e bile e dira gore botlhe mo lelapeng ba kgone go tlhaloganyana. \n\nMelao e thusa gore mongwe le mongwe mo lelapeng a itse gore o na le maikarabelo; ka jalo, go botlhokwa gore go nne le melao mo lelapeng. \n\nLelapa leo le nang le melao le dirisana mmogo ka kagiso.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Go bolelela mosha wa gago go 'emisa fela' go ga ketefatsa dilo. Gongwe ba reetse, ba bontshe gore wa tlhalonya o theositse mowa mme o ba age maikutlo. Fa mosha wa gago a ikemiseditse go go tlhalosetsa gore go ikutwlisa botlhoko go dira ba ikutlwe ba le kaone, o ka similola go tlaloganya mabaka. Bona thusa ya porofeshenale.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa diang... \n* Kgang le motlotlo - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "A teen sometimes does something because they:", + "text": "Mosha nako nngwe o dira sengwe ka gore:", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang... \n* Kgang le go leba kwa morago - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "- Utlwelela ditsala tsa bona\n- Batla go dira seo bangwe ba se dirang\n- Nagana thata ka 'jaanong' go na le 'mankgapele'\n- Lerato le na le matlhagatlhaga mme le ka bona go elatlhoko go tswafisa\n- O seke wa tshwenyega ka go lekelela, o ka rata go lekelela\n- Nna le maitemogelo a mannye go itshepela mo go one.\n_ Go fisega go leka sengwe - go sa kgathalesege gore go diregang", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "A re baleng ka se se diragetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1:", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Go ka thusa go nna le seno mo mogopolong fa ngwana wa gago a tsaya tshweetso e e sa siamang. Bua le bona mme le fetse nako mmogo gore o kgone go ba thusa go tlhopha bokaone mo nakong e e tlang!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: “Ka metlha o tla gae thari!”\n\n@global.w_rules_teen_boy: “Nnyaa ga ke tle thari, ga ke itse le gore go tla thari go raya eng! Ntlogele.”", + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "O ka nna wa kopiwa gore o bontshe batho ba bangwe khoutu eno ba ba tla go tshegetsang mo leetong la gago la @global.parent_app.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Ke molao ofe o o maleba o @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o tlhomang mmogo?", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Sync ya bofelo ka: @local.sync_latest", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "Tla re bone gore @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba dirile seno jang mo letsatsing le le latelang:\n\n@global.w_rules_female_caregiver_1: “Ke batla gore o itumele, @global.w_rules_teen_boy, mme gape ke tshwenyegile ka go tla gae thari ga gago. A o itse gore goreng ke rialo?” \n\n@global.w_rules_teen_boy: “Ka gonne o batla ke nna le nako e ntsi ya go dira tiro ya sekolo?”", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Sediriswa ga ise se sinkiwe. Sync e tla tlhagisa khoutu.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: “O nepile, e bile gape ga go a sireletsega mo lefelong leno gore o bo o le kwantle letsatsi le phirimile. O akanya gore ke nako efe e e tshwanetseng ya gore o tle gae?”", + "SourceText": "Sync now", + "text": "Sync gone jaanong", "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “A nka tla gae ka 10pm?\" @global.w_rules_teen_boy: \n\n@global.w_rules_female_caregiver_1: “Go tla be go le thari thata, 6pm e ntse jang? Kgotsa nako e e magareng ga dinako tseo?”", + "SourceText": "Syncing...", + "text": "Syncing...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “A nka tla gae ka 6pm ka malatsi a sekolo ke be ke tla ka 10pm ka Labotlhano le Lamatlhatso?” \n\n@global.w_rules_female_caregiver_1: “Ee, go siame. Go tloga jaanong, molao wa mo gae ke gore o tshwanetse go tla gae ka 6pm mo malatsing a sekolo o bo o tla ka 10pm ka Labotlhano le Lamatlhatso. Mme ka metlha o tsamaye le ditsala fa o tla gae. A wa nkutlwa", + "SourceText": "Watch Together", + "text": "Lebelelang Mmogo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: “Go siame, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboga thata, @global.w_rules_teen_boy, go bo o nthusitse gore re kgone go tla ka molao o siameng mmogo. Ke motlotlo go go bona o simolola go nna le maikarabelo.”", + "SourceText": "Let's watch a video together!", + "text": "A re lebe bidio mmogo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Letsatsi le le latelang...\n\n@global.w_rules_female_caregiver_1: “Ke a leboga, @global.w_rules_teen_boy, go bo o tlile gae ka nako. Fa o fetsa tiro ya sekolo re ka tla go ja dijo tse o di ratang thata tsa maitseboa.”", + "SourceText": "Watch", + "text": "Leba", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "Making the rule together went well because...", - "text": "Go dira molao mmogo go tsamaile sentle ka gonne...", + "SourceText": "Let's watch a video!", + "text": "A re lebelele bidio!", "type": "template", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Ba tlotlile ka mabaka a a dirileng gore molao o nne teng \n* @global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy \n* Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano \n* @global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", + "SourceText": "Options", + "text": "Ditlhopho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy o ne a itse gore @global.w_rules_female_caregiver_1 wa gagwe o mo rata ka gonne...", + "SourceText": "Welcome @fields.user_name", + "text": "O amogetswe @fields.user_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* O mo akgotse\n* O ne a mo duela fa a fetsa go latela molao", + "SourceText": "It's great to see you again!", + "text": "Go gontle go go bona gape!", "type": "template", "note": "" }, { - "SourceText": "Let's think about what happened in this story.", - "text": "A re akanye ka se se diragetseng mo kgannyeng eno.", + "SourceText": "Welcome @fields.group_name", + "text": "O amogetswe @fields.group_name", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "What went well here in making a rule together?", - "text": "Ke eng se se tsamaileng sentle ka go dira molao mmogo?", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Go gontle go go bona gape! A re simolole ka pina ya malapa a a gotlhe.", "type": "template", "note": "" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Ba tlotlile ka mabaka a a dirileng gore molao o nne teng", + "SourceText": "Let's Slow Down", + "text": "A re Fokotse Lobelo", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy", + "SourceText": "How would you like to do this workshop?", + "text": "O ka rata go dira workshop eno jang?", "type": "template", "note": "" }, { - "SourceText": "The rule was clear, specific and fair", - "text": "Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano", + "SourceText": "Coming soon", + "text": "E etla gautshwane", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Re tla tlhoka go bua ka mathata a mangwe a go nna motsadi pele re ka simolola go dira go @local.workshop_data.title.\n\nO ka bona didiriswa tsa botlhokwa mo @local.workshop_data.title o dirisa @global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Go gontle, go dira melao mmogo ka tsela e e ritibetseng le le siameng go dira sentle tota!", + "SourceText": "My name", + "text": "Leina la me", "type": "template", "note": "" }, { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "O akanya gore @global.w_rules_teen_boy o itsitse jang gore @global.w_rules_female_caregiver_1 wa gagwe o a mo kgathalela?", + "SourceText": "@global.weekly_workshop day", + "text": "letsatsi la @global.weekly_workshop", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "She praised him", - "text": "O mo akgotse", + "SourceText": "I do the workshops...", + "text": "Ke dira di-workshop...", "type": "template", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "O ne a mo duela fa a fetsa go latela molao", + "SourceText": "My group's name", + "text": "Leina la setlhopha sa me", "type": "template", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Go ntse jalo - karabo e e siameng e dira gore dilo di tsamaye sentle!", + "SourceText": "My group is now doing the workshop...", + "text": "Setlhopha sa me se dira workshop jaanong...", "type": "template", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Melao ya mo gae e thusa gore basha ba rona ba sireletsege, le gore ba tlhaloganye se ba tshwanetseng go se dira. Fa o dira gore bana ba dingwaga tsa bosha ba thuse go dira melao go nna motlhofo gore ba e latele.", + "SourceText": "I am now doing the workshop...", + "text": "Ke dira workshop jaanong...", "type": "template", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "MELAO YA SETLHOPHA", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Dipotso tseno di bonako mme di tla tshwanela sedirisiwa seno go ya ka ditlhoko tsa gago.", "type": "template", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Rulaganya melao LE mosha wa gago. Simolola ka molao wa ntlha o le mongwe fela - o ka nna wa oketsa ka o mongwe morago. Tlotla mabaka a a dirang gore go nne le molao o bo o reetsa maikutlo a bone.", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "A re simolole ka dipotso di le mmalwa ka wena le lelapa la gago.", "type": "template", "note": "" }, { - "SourceText": "REAL RULES", - "text": "MELAO YA MMATOTA", + "SourceText": "We would love to know your first name or nickname:", + "text": "Re ka rata go itse leina la gago la ntlha kgotsa leina le o tlwaelegileng ka lone:", "type": "template", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "E dire gore e nne ya mmatota gore basha ba gago ba kgone go e dira, le gore e utlwale sentle le go totobala gore e tlhaloganyege sentle. E seng ‘ka nako’ mme ‘ka 7pm’.", + "SourceText": "Are you a woman or a man?", + "text": "A o mosadi kgotsa monna?", "type": "template", "note": "" }, { - "SourceText": "PRAISE RULES!", - "text": "MELAO YA GO AKGOLA!", + "SourceText": "Woman", + "text": "Mosadi", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Akgolela mosha go rulaganya molao le wena, o bo o mo akgolela go o latela!", + "SourceText": "Man", + "text": "Monna", "type": "template", "note": "" }, { - "SourceText": "Online Safety", - "text": "Tshireletsego ya Inthanete", + "SourceText": "How old are you?", + "text": "O nale dingwaga tse kae?", "type": "template", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Melao e botlhokwa go boloka basha ba gago ba sireletsegile - le mo inthaneteng. Go buiwa go le gontsi ka seno mo Kopanong ya Beke le Beke ka thulaganyo ya tshireletsego, mme tla re simolole ka go e bona gone jaanong!", + "SourceText": "Adults", + "text": "Bagolo", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, a o dirile tirogae ya gago?\"\n\n@global.w_rules_teen_girl: \"Ke etla @global.w_rules_female_caregiver_2, ke feleletsa bidio eno ya @global.teen_social_medium\"", + "SourceText": "Teens", + "text": "Basha", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: “Tota o kgeleke ya go bina! Mpolelele gore goreng o go rata\"\n\n@global.w_rules_teen_girl: \"Ditsala tsa me tsotlhe di dira jalo, @global.w_rules_female_caregiver_2. Ke na le batho ba ba e ratang ba le 600 ba ba ntshalang morago ba le 120.”", + "SourceText": "Children", + "text": "Bana", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka fa o binang bontle ka teng, @global.w_rules_teen_girl. Mme re tshwanetse go tlhomamisa gore o sireletsegile. \n\nKe itse gore ditsala tsa gago di lebelela @global.teen_social_medium, mme di dirisa akhaonto e e sa sireletsegang, go na le batho bangwe ba ba lebang dibidio tsa basha gore ba kgotsofatse keletso ya bone ya thobalano. Ka dinako tse dingwe ba ikgolaganya le basha. Ba itira e kete ba siame mme ba feleletsa ba tshosetsa basha le go ba sotla.”", + "SourceText": "Babies", + "text": "Masea", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: \"Tla re lebe inthanete mmogo re bone gore re ka dira jang gore e go itumedise le gore gape e sireletsege. Bona - o ka kgona go dira gore akhaonto ya gago e nne khupamarama le go laola batho ba ba go salang morago.\n\nO ka nna wa amogela batho ba o tsenang sekolo le bone le ba mo lefelong la rona, mme e seng batho ba ba ikgolaganyang le wena mo inthaneteng.\n\nA re ka dira molao mmogo o o ka o dirisang @global.teen_social_medium, mme e le ka akhaonto ya khupamarama? Ke a go tshepa gore o tla amogela batho ba o ba itseng!”", + "SourceText": "How many people are in your household?", + "text": "O dula le batho ba le kae mo legaeng la gago?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka wena @global.w_rules_teen_girl\"", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "O ka dira @global.weekly_workshops ka bowena KGOTSA laletsa maloko mangwe a lelapa la gago kgotsa ditsala gore di tsene - o tla ithuta mo go oketsegileng ka mongwe go yo mongwe. Go tswa mo go wena!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Ke molao ofe o le nosi o o botlhokwa o mongwe le mongwe wa lona a ka ratang go o dira le basha ba lona? \n* O akanya gore mosha wa gago o tla akanya eng ka ga molao oo? \n\nGakologelwa, dira melao gore e nne e e maleba le ya mmatota!", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "O ka rata go dira @global.weekly_workshops ya gago jang?", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Fano ke melao mengwe e malapa a mangwe a e dirileng:", + "SourceText": "Can you think of a name for your group?", + "text": "A o kgona go akanya leina la setlhopha sa lona?", "type": "template", "note": "" }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Mosha a ka tshameka kwa ntle fa a sena go fetsa tirogae ya sekolo\n* Maloko otlhe a lelapa ba ja mmogo dijo tsa maitseboa\n* Mosha 1 o tlhatswa dijana ka Sontaga le Mantaga, Mosha 2 ka Labobedi le Laboraro\n* Re buisana mmogo ka bonolo le tsela e ntle\n* Fa o reeditse mmino o tshwanetse go dirisa di-earphones", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "Ke letsatsi lefe mo bekeng le o ka ratang go dira @global.weekly_workshops ya gago ka lone?", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Let's practice making rules.", - "text": "A re itlwaetseng go dira melao.", + "SourceText": "Monday", + "text": "Mosupologo", "type": "template", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Kwala molao o le mongwe wa botlhokwa o o ka ratang go o dira le mosha wa gago - o tla dira seno e le go ikatisa mo gae beke eno. \n\nBa tlile go akanya eng ka one?", + "SourceText": "Tuesday", + "text": "Labobedi", "type": "template", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Mo bekeng eno, baya molao o le mongwe mmogo le mosha wa gago.\n\nGakologelwa go akgola mosha fa lo fetsa!", + "SourceText": "Wednesday", + "text": "Laboraro", "type": "template", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "Ke itumelela go utlwa gore lo tsoga sentle. Lo batsadi ba ba molemo tota!", + "SourceText": "Thursday", + "text": "Labone", "type": "template", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Ke maswabi go utlwa gore gompieno go thatanyana. Re leboga gore lo dirile sotlhe se lo ka se kgonang. Ga go ope yo o itseng sengwe le sengwe mme lo dira bontle tota!", + "SourceText": "Friday", + "text": "Labotlhano", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Ke maswabi go utlwa gore gompieno go thatanyana. Re a lo akgola gore fa lo tsoga moso mongwe le mongwe, lo dira sotlhe se lo ka se kgonang le fa gone lo lapile. Seno se tlhoka bopelokgale le boineelo!", + "SourceText": "Saturday", + "text": "Lamatlhatso", "type": "template", "note": "" }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Kgato 1: Re bolelele gore ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata", + "SourceText": "Sunday", + "text": "Latshipi", "type": "template", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "“Ke kgonne go ithuta dilo di le dintsi ka mosha wa me fa re ne re fetsa nako e ntsi mmogo! Mme mo letsatsing la bobedi, mosha wa me o ne a nnetse founo.”", + "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga botswerere jo bo latelang.", "type": "template", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Kgato 2: Tla ka dikakantsho!", + "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga bokgoni jo bo latelang.", "type": "template", "note": "" }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "“Re leboga fela thata go bo lo tsere matsapa! Gongwe o ka akantsha gore ke dilo dife tse di itumedisang tse o ka di dirang mmogo le mosha wa gago.”\n\n\"Ee, gongwe lo ka dira sengwe mmogo mo founong ya gagwe? Kgotsa gongwe a ka go bontsha gore founo ya gagwe e dira jang?”", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "O ka kgona go fetola diseting tseno ka metlha mo @global.weekly_workshop_options ya gago.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Kgato 3: Itlhophele gore ke efe e o ka e lekeletsang!", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "A o tlhomamisegile gore o batla go bula di-workshop tsotlhe? Fa o setse o dirile seno o ka se kgone go di tswala gape", "type": "template", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Re lebogela dikakantsho tseo tse di molemo tota! Go siame, ke tla kopa mosha wa me gore a mpontshe gore founo ya gagwe e dira jang fa a tswa sekolong. Ke mang yo o batlang go tshameka karolo ya go nna mosha wa me gore re dire ikatiso ke mo kopa?”", + "SourceText": "Unlock Workshops", + "text": "Bula di-Workshop", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Akanyang ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka:\n\n* Ke kae mo o kgonneng go dira bontle le gore ke eng seo se neng se le thata?\n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo?\n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(Kgotsa lo ka nna lwa ikatisa gone jaanong gore e nne motlhofo moragonyana!)", + "SourceText": "Using the app together", + "text": "Lo dirisa sediriso mmogo", "type": "template", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Go akgolwa ke selo se se botlhokwa thata fa o godisa bana.\n\nFa re akgola bana ba rona fa ba dirile sengwe sentle, ba tla nna ba tokafatsa thata!", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Go gontle go go bona!\n\nSa ntlha, a re thuse setlhopha sa gago gore se simolole.", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Dumelang lotlhe. \n\nGompieno re tlile go bua ka go akgola. \n\nGo botlhokwa go akgola bana ba rona fa ba dirile bontle ka gonne fa re dira jalo, ba tla tswelela ba tokafatsa mo go se re batlang gore ba se dire. \n\nMme a le rona re se ka ra lebala go ikakgola fa re dirile bontle!", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Dumalanang ka melao ya lona mmogo:\n* Ke malatsi/dinako dife tse re tla kopanang ka tsone mo bekeng?\n* Ke mang yo o tla tshwarang (di)founu ka nako ya ditiro tsa rona?\n* Re ka netefatsa jang gore mongwe le mongwe a ka bua a gololesegile?\n* Re ka dirang gore rotlhe re ikutlwe re tlotliwa?", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "text": "O ka nna wa fetola letsatsi la workshop ya lona le leina la setlhopha sa lona mo @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Some rules that other groups made:", + "text": "Melao mengwe eo ditlhopha tse dingwe di e dirileng:", "type": "template", "note": "" }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Abelana le ba bangwe:\n\n* O feleleditse leng go utlwa mongwe a go leboga kgotsa a re o dirile sengwe se se ntle? \n* O ne wa ikutlwa jang? \n* O ikutlwa jang fa o sa lebogiwe kgotsa o sa akgolwe ka ntlha ya se o se dirileng? \n\nRona batsadi ga e se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng. Gongwe o ka tlhomela basha ba gago sekao se se molemo ka go ba akgola fa ba dirile sengwe sentle lekgetlo la ntlha!", + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "* Labobedi ka ura 7 maitseboa ke nako ya rona ya @global.parent_app mmogo\n* Refosanang go tshwara founo (tiro e le 1 motho mongwe le mongwe)\n* Amogelang maitemogelo a yo mongwe. Rotlhe ga re tshwane!\n* Fanang sebaka sa go bua le go reetsana\n* Dipotso tsotlhe di a amogelwa\n* Se re se bolelelanang ga re se bolelele ope", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Akanya gore o ne o ikutlwa lekgetlo la bofelo fa mongwe a ne a go leboga, kgotsa a go bolelela gore o dirile sengwe bontle tota.", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Iphe metsotso e 5-20 le mosha wa gago lo le babedi, letsatsi lengwe le lengwe le o ka le kgonang mo bekeng eno.", "type": "template", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "O ne o ikutlwa jang?", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Gopola - nako nngwe fa o kgona, iketle, gakologelwa o bo o iteboge. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", "type": "template", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Rona batsadi ga se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng.", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Batsadi ba le bantsi ba nna le dikgwetlho mo go nneng le nako ya go buisana le basha ba bone. \n\nFano ke dikgwetlho tse 8 tse di di gaisang tse batsadi ba re boleletseng gore ba nna le tsone fa ba rulaganya kgotsa ba ipha nako le basha ba bone. Fa e le gore o lebane le seno kgotsa o tshaba gore o tla lebana le sone, tobetsa mo go yone go bona se e ka nnang tharabololo. O ka tobetsa mme o sekaseke dikgwetlho tse dingwe morago ga moo.", "type": "template", "note": "" }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "O ikutlwa jang fa go se ope yo o rayang a re, “ke a leboga”?", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "A o nnile le dikgwetlho dingwe fa o leka go ipha nako le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Tired", - "text": "O a lapa", + "SourceText": "What challenge did you have when trying to spend time with your teen?", + "text": "O nnile le kgwetlho efe fa o leka go ipha nako le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Mosha wa gago le ene a ka ikutlwa jalo. Ke sone se se dirang gore ikatiso ya rona ya beke eno e nne botlhokwa le fa gone e lebega e le motlhofo: Ba akgole fa ba dirile sengwe sentle.", + "SourceText": "I don’t have enough time.", + "text": "Ga ke na nako e e lekaneng.", "type": "template", "note": "" }, { - "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "text": "Go akgola go na le matla tota. \n\nA re lebeng sekai sa ga @global.w_praise_female_caregiver_name le bana ba gagwe ba basetsana:", + "SourceText": "My teen does not want to spend time with me.", + "text": "Mosha wa me ga a batle go ipha nako le nna.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "text": "Gantsi fa @global.w_praise_female_caregiver_name a tshwaregile ka go dira sengwe, bana ba gagwe ba basetsana ba a lwa. Mme, gompieno ngwana wa gagwe wa mosetsana yo mogolo o thusa monnawe ka tiro ya sekolo!", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "Mosha wa me o batla fela go lebelela TV kgotsa go tshame ka founo ya gagwe.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "text": "@global.w_praise_female_caregiver_name: “Ke a leboga @global.w_praise_girl gore o dira tiro ya sekolo, ke a leboga ka go thusa monnao, @global.w_praise_teen_girl. Ke motlotlo tota ka lona!”", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "Mosha wa me o batla go dira dilo tse di sa babalesegang kgotsa tse di jang madi.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss this story.", - "text": "A re tlotleng ka kgang eno.", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "Mosha wa me o batla go dira dilo tseo nna ke se kitlang ke kgona go di dira ka mmele wa me.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Tlotlang mmogo:\n\n* Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?\n* Goreng a ile a ba akgola?", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "Mosha wa me o tlhophile motshameko wa go gaisana. Ke mo fentse mme a ngala.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name o ile a akgola bana ba gagwe...", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Ke reteletswe ke go khutlhisa nako e ke iphang yone le ene.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Go dira gore gantsi ba nne ba dira jalo\n* Go mo thusa gore a fetse tiro ya gagwe \n* Go dira gore ba ikutlwe ba le motlotlo \n* Go dira gore a ikutlwe a le motlotlo", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Bana ba me botlhe ba batla ke iphe nako le bone ka nako e e tshwanang.", "type": "template", "note": "" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "Ee, go ka nna bokete go nna le nako motshegare, ka ntlha ya tiro, ditiro tsa legae, le dilo tse dingwe tsotlhe.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "Why did she praise them?", - "text": "Goreng a ile a ba akgola?", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Re maswabi go bo o reteletswe ka seo. Go ka utlwisa botlhoko tota fa bana ba rona ba sa batle go ipha nako le rona.", "type": "template", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Go dira gore gantsi ba nne ba dira jalo", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Akanya ka nako e mosha wa me a neng a mpuletse mafatlha ka yone, jaaka mo mosong kgotsa pele fela ga nako ya go robala.", "type": "template", "note": "" }, { - "SourceText": "To help her finish her work", - "text": "Go mo thusa gore a fetse tiro ya gagwe", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Ke nna gaufi le mosha wa me fa a dira sengwe se a se ratang le go bontsha kgatlhego mo go se a se ratang.", "type": "template", "note": "" }, { - "SourceText": "To make them feel good", - "text": "Go dira gore ba ikutlwe ba le motlotlo", + "SourceText": "Do something fun with the whole family.", + "text": "Dira sengwe sa go ijesa monate le ba lelapa la gago lotlhe.", "type": "template", "note": "" }, { - "SourceText": "To make herself feel good", - "text": "Go dira gore a ikutlwe a le motlotlo", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Go gontle! Go tlhopha nako e mosha wa gago a buang thata ka yone go tla mo thusa gore a go tsibogele sentle fa o leka go ikgolaganya le ene.", "type": "template", "note": "" }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Dilo tseno tsotlhe di boammaaruri! \n\nFa basha ba ga @global.w_praise_female_caregiver_name ba itumetse, le ene o a itumela. E bile seno se mo thusa gore a kgone go fetsa tiro ya gagwe.", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Bontle! Go leba lenaneo la TV le mosha wa gago a le ratang kgotsa motshameko mmogo go tla mo bontsha gore wa mo kgathalela. Nna pelotelele; o tla go bulela mafatlha fa nako e ntse e tsamaya!", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "The same can work for you!", - "text": "Le wena seno se ka go thusa!", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Bontle tota! Nako nngwe go ka nna motlhofo go simolola go ipha nako le lelapa la gago lotlhe. Ka tsela eo mosha wa gago o kgona go gololesega go ipha nako le wena fa nako e tsamaya.", "type": "template", "note": "" }, { - "SourceText": "SEE IT", - "text": "BONA", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "Re maswabi gore o nnile le kgwetlho eo. Bana gantsi ba batla go nna ba lebeletse T.V. kgotsa ba tshameka ka sedirisiwa sa eleketeroniki. Re a go akgola gore o nnile pelotelele le mosha wa gago!", "type": "template", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Leka go bona gore ke eng se se siameng e bile se go thusa se basha ba gago ba se dirang mme o ba akgole. Gongwe ba ka nna ba se go bontshe gore ba a itumela mme gone, o tla ba bona ba dira selo seo se se sentle gape. Gape seno se tla dira gore ba lemoge gore o a bona gore ba dira bontle e bile o a kgathala ka bone.", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Akantshana ka dilo tsa go ijesa monate tseo nna le mosha wa me re ka di dirang mmogo.", "type": "template", "note": "" }, { - "SourceText": "SAY IT", - "text": "BUA", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Batla sengwe se se rutang se nka se dirang le mosha wa me mo sedirisweng sa eleketeroniki.", "type": "template", "note": "" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Nna matlhagatlhaga – bontsha gore tota se o se buang se tswa mo pelong!", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Botsa mosha wa me gore a mpontshe gore founo/sedirisiwa sa bone sa eleketeroniki se dira jang.", "type": "template", "note": "" }, { - "SourceText": "REPEAT IT", - "text": "BOELETSA", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "Seo se sentle tota! Fa e le gore o batla thotloetso, fano go na le dikakantsho tse di tswang kwa malapeng a mangwe tsa se lo ka se dirang mmogo. Gopola, letla mosha wa gago a tlhophe.", "type": "template", "note": "" }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Leka go bona gore ke eng se o ka ba lebogelang sone letsatsi le letsatsi. Tota le sengwe fela se se bonalang se le sennye tota.", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Bontle tota!  Go na le didiriswa tse dintsi tsa go ijesa monate le tsa thuto mo difounong tse lo ka di sekasekang mmogo. Botsa dipotso, bontsha kgatlhego, mme gopola go bua sengwe se sentle.", "type": "template", "note": "" }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Tota e bile le ba bangwe ba ba godileng mo lapeng o ka ba akgola. Ela tlhoko gore ba itshwara jang fa o ba akgola!", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Bontle! Basha ba rata fa o bontsha kgatlhego mo didirisweng tsa bone tsa eleketeroniki le fa ba kgona go go tlhalosetsa sengwe. Seno ke tshimologo e ntle!", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "A re direng ikatiso ya go akgola.", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Ga o esi fano. Bontsi jwa batsadi ba nna le kgwetlho eno, le bone. Nako e lo e iphang mmogo e tshwanetse go nna e e sireletsegileng ka metlha, mme ga ya tshwanela go ja madi ape!", "type": "template", "note": "" }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Abelana le ba bangwe: \n\n* O ka akgola mosha wa gago ka ntlha ya eng? \n* Ke eng se mongwe o sele a se dirileng sentle ka nako ya workshop eno? Ba bolelele!\n* O ile wa ikutlwa jang fa mongwe a go akgola?\n* O ile wa ikutlwa jang fa o akgolwa?", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Tlhalosetsa mosha wa me gore ke ka ntlha yang fa kakantsho ya bone e sa sireletsega kgotsa e sa kgonege mme o ba kope dikakantsho tse dingwe.", "type": "template", "note": "" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Ka dinako tse dingwe go thata go akanya gore o ka akgola mosha wa gago fa a dirile eng! Go na le dikakantsho tseno tse di tswang kwa batsading bangwe:", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Akantsha ditiro tse dingwe tsa go ijesa monate tse re ka di dirang mmogo.", "type": "template", "note": "" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Go nna bonolo mo mongweng \n* Go phepafatsa phaposi ya bone \n* Go ja mmogo le lelapa \n* Go dumedisa maloko a mangwe a lelapa \n* Go tlhokomela bomonnao \n* Go tla gae ka nako? \n* Go bontsha go akanyetsa ba bangwe \n* Go re ‘tsweetswee’ kgotsa ‘ke a leboga’ \n* Go ya sekolong \n* Go dira ditiro tsa legae kgotsa tirogae ya sekolo \n* Go fetsa nako ya go ja ntle le dintwa", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Bontle! Go botlhokwa tota gore mosha wa gago a tlhaloganye gore ke goreng o se kitla o kgona go dira ditiro tse ba di akantshitseng. Ba kope dikakantsho tse dingwe!", "type": "template", "note": "" }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Ikatiso ya kwa gae ya beke eno ke go akgola mosha wa gago gangwe mo letsatsing. E tlile go tsaya fela metsotswana e le 10!", + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Seno se sentle tota! Fa o tlhoka thotloetso, o ka bona dikakantsho tsa ditiro @data.parent_centre.relax_and_activities.location_text. Gopola, letla mosha wa gago go tlhopha tiro!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Go itlhokomela go botlhokwa thata.", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Ke maswabi go utlwa seno. Basha ba rona ba ka nna ba swaba fa re sa kgone go dira se ba batlang re se dira, jaaka go tshameka metshameko kgotsa go dira ditiro tse di sugang mmele tota. Mme gopola, se se botlhokwa thata ke go ipha nako le bone. Seo se bonala se farologane mo go botlhe!", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle. Tswelelang lo dira tiro eno e e molemo.", + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Lebelela mosha wa me a dira tiro mme ke mo kgothatse.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Iphe nako ya go itumelela se o kgonneng go se fitlhelela le fa gone go na le dilo tse dintsi tse o tshwanetseng go di dira letsatsi le letsatsi.", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Akantsha ditiro tse dingwe tsa go ijesa monate tse re ka di dirang mmogo.", "type": "template", "note": "" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Malapa a le mantsi a a tshwenyegile thata ka ntlha ya madi, bogolo jang fa basha ba nna ba kopa go rekelwa dilo! \n\nFa re dira tekanyetsokabo mmogo, re ka dumalana gore re tla dirisa madi jang LE GORE re tla boloka bokae gore re se ka ra iphitlhela re tshwenyegile e bile re ka kgona go fitlhelela mekgele/maikemisetso a rona re le lelapa.", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Bontle tota! Le fa o lebeletse go na le go dira tiro le bone, o ka bontsha gore o na le kgatlhego ka go supa le go tlhalosa le go akgola mosha wa gago ka se a se dirang!", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Dumelang, lotlhe. \n\nGompieno re tlile go tlotla ka tekanyetsokabo ya lelapa. \n\nGo botlhokwa go nna le tekanyetsokabo, mme tota e bile go botlhokwa thata go nna le tekanyetsokabo e e akaretsang mongwe le mongwe mo lelapeng. \n\nFa lo dira tekanyetsokabo mmogo, seno se dira gore lotlhe mo lapeng lo tlhaloganye botoka gore lo ka dirisa madi jang le gore lo ka kgona go boloka bokae, e bile lo ka kgona go dira dithulaganyo tsa gore lo tla boloka madi jang lo le lelapa.", + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Seo se sentle tota! Fa o tlhoka thotloetso, o ka bona dikakantsho tsa ditiro @data.parent_centre.relax_and_activities.location_text. Gopola, letla mosha wa gago go tlhopha tiro!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Kgang – Eo ga e a dira... \n* Ikatiso ya tekanyetsokabo\n* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di sa dirang...\n* Motlotlo le ditlhopho tsa go boloka\n* Ikatiso ya tekanyetsokabo\n* Didirisiwa: Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi\nAKANYA - TLHOPHA - AGA - ITHULAGANYE\n * Dikakantsho tsa katiso ya legae", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Seno se na le go direga ka dinako tse dingwe! Metshameko ya dikgaisano e ka nna kgwetlho mo basheng (le bagolo!) fa ba sa kgone go amogela fa ba fentswe.", "type": "template", "note": "" }, { - "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "text": "Gantsi ga go motlhofo go reka dilo tsotlhe tse o di tlhokang kgwedi le kgwedi. Malapa a le mantsi a na le bothata jono! \n\nGo akaretsa le @global.w_money_grandma- tla re bone:", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Akantsha ditiro tse dingwe tse re ka di dirang mmogo go na le gore re gaisane.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "text": "@global.w_money_grandma: \"Ke ntse ke godisa ditlogolo tsa me, @global.w_money_teen_girl le @global.w_money_teen_boy, go tloga fa e sale batsadi ba bone ba tlhokafala ba sa ntse ba le bannye. Gantsi re na le mathata a madi ka gonne ke amogela madi a mannye.”", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Tshameka metshameko ka ditlhopha, gore ke kgone go kgothatsa mosha wa me fa setlhopha sa rona se latlhegelwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "text": "@global.w_money_grandma: “Ke tshwenyegile mo maikutlong tota. Ga ke na madi ape a a setseng. Jaanong nna le basha ba me re lwela dilo tse ba di batlang – gape.\"", + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Gopola, letla mosha wa gago a tlhophe. O ka bona dikakantsho tsa ditiro tse o ka dirang le mosha wa gago @data.parent_centre.relax_and_activities.location_text fa o di tlhoka.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno. O tlhoka:\n\n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene\n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi\n \nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "Fa wena le mosha wa gago lo le mo setlhopheng se le sengwe, o ka ba thusa gore ba laole maikutlo a bone fa setlhopha sa lona se latlhegelwa.", "type": "template", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "Tekanyetsokabo ya lelapa e ka thusa @global.w_money_grandma - le WENA!", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "Ee, go khutla ga nako e lo e iphileng mmogo go ka nna bokete ka dinako tse dingwe.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno.", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Bolelela mosha wa me gore, “Re na le motsotso o le mongwe pele ga nako e re iphileng yone e khutla gompieno”, gore mosha wa me a nne a ipaakantse.", "type": "template", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "O tlhoka: \n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene \n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi \n\nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Itsise mosha wa me gore ke na le nako e kae e re tla e iphang re le mmogo mme o ba kope gore ba nne ba lebeletse tshupanako kgotsa watšhe.", "type": "template", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Akanya gore ke dilo dife tse re dirisang madi go di reka kgwedi le kgwedi.", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Rulaganya nako e re e iphang mmogo pele ga tiro e nngwe e ratiwang ke mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka ditshwantsho tsa dilo tsotlhe tse wena le lelapa la gago le di rekang kgwedi le kgwedi. \n* Kwala fa thoko ga setshwantsho sengwe le sengwe gore selo sengwe le sengwe se ja bokae kgwedi le kgwedi. (Ga go tlhokege go bua dinomore fa e le gore ga o batle go dira jalo.)\n* Tlhakanya gore ke madi a le kana kang a o tshwanelwang ke go a dirisa kgwedi le kgwedi.", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Bontle tota! Go itsise mosha wa gago pele ga nako, ga a kitla a makala fa nako ya lona lo le babedi e fela. Gape, o ka gopotsa mosha wa gago gore o tlile go ipha nako le ene gape kamoso.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Bontle tota! Lo feditse kgato 1! \n\nA re tsweleleng!", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Go gontle! Ka tsela eo mosha wa gago o tla nna le maikarabelo a go elatlhoko nako mme o tla itse fa nako e tloga e fela. Ba gopotse gore o tlile go ipha nako lo le mmogo gape kamoso.", "type": "template", "note": "" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* dijo \n* metsi & motlakase \n* diaparo \n* diakhaonto \n* peeletso ya TV \n* dilwana tsa go tlhapa \n* salune \n* airtime \n* tuelo ya sekolo \n* sepalangwa \n* inshorense/dipholisi \n* melemo \n* boitlosobodutu/metshameko \n* rente \n* melato \n* kereke", + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Bontle tota! Fa lo ipha nako lo le mmogo pele ga nako ya dijo tsa maitseboa, o ka nna ka boitumelo wa re, “nako ya rona e fedile. Tla re ipaakanyetse dijo tsa maitseboa le lelapa lotlhe!”", "type": "template", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Tlotlang mmogo ka dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela o sena sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Batsadi ka bontsi ba lebana le seno. Go ka nna bokete go ipha nako mmogo le basha ba rona fa e le gore re na le bana ba bangwe.", "type": "template", "note": "" }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Gantsi batho ga ba na maikutlo a a tshwanang ka dilo. Fa re bua ka dilo tse re di tlhokang le tse re di batlang, re kgona go tlhaloganyana e bile re ka kgona go dira ditshwetso tse di siameng tsa gore re dirise madi jang.\n\nLebelela lenaane la gago la dilo tse o di rekang mme lo tlotle ka:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse lelapa la lona le ka lekang go dirisa madi a mannye mo go tsone?", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Kopa mogolo yo mongwe kgotsa mogolowe go tlhokomela bana ba bannye ka nako ya fa o ipha nako mmogo le mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Akanya kaga dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela ntle le sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Akanya ka nako ya fa bana ba bangwe ba seyo mme o iphe nako eo le mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Lebelela lenaane la gago la dilo tse o di rekang mme lo tlhophe:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse o ka lekang go dirisa madi a mannye mo go tsone?", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Rulaganya go ipha nako mmogo mo lefelong le lengwe ntle le ko gae.", "type": "template", "note": "" }, { - "SourceText": "Make a budget!", - "text": "Dira tekanyetsokabo!", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Bontle tota! Ka tsela eno, o ka tsepamisa mogopolo wa gago mo mosheng wa gago, gore a ikutlwe a le botlhokwa e bile a ratiwa.", "type": "template", "note": "" }, { - "SourceText": "Make a budget as one big family!", - "text": "Dirang tekanyetsokabo lotlhe lo le lelapa!", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Go gontle! O ka leka go ipha nako le mosha wa gago fa bana ba bangwe ba setse ba ile go robala, kgotsa ba tshameka ko ntle.", "type": "template", "note": "" }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Motho a le nosi o tla ithaopela go abelana ka lenaane la gagwe (Fa go sena ope yo o ithaopang lo ka dira lenaane le lesha mmogo) \n* Ipheng dikarolo - bangwe e ka nna bagolo, bangwe e tla nna basha. \n* Dirang tshwetso ya gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sengwe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.) \n* Dirang tshwetso mmogo gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje ao mo godimo ga setshwantsho se lo se takileng. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Bontle tota! Ka gongwe lo ka tsamaya ka dinao go ya mabenkeleng mmogo kgotsa lo lebelele metshameko, gore lo kgone go tlotla ntle le bana ba gago ba bangwe ba batla tlhokomelo ya gago.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "" }, { - "SourceText": "Make a budget as a family!", - "text": "Dirang tekanyetsokabo lotlhe lo le lelapa!", + "SourceText": "DAY – Do it every day", + "text": "LETSATSI – Dira se letsatsi le letsatsi", "type": "template", "note": "" }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Kwalang fa fatshe gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sepe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Ka sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.)\n* Dirang tshwetso gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje/dilo tseo mo godimo ga setshwantsho seo. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "TSHAMEKA – Letla mosha wa gago go tlhopha tiro", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "" }, { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Lo dirile bontle, lo feditse dikgato tse 3 tsa ntlha! \n\nA re boneng gore @global.w_money_grandma o ne a rulaganya go dirisa madi a gagwe jang, jaaka re dira fano:", + "SourceText": "STAY – Give your teen all of your attention", + "text": "NNA – Naya mosha wa gago tlhokomelo yotlhe ya gago", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "“Ke batla gore ditlogolo tsa me di nne le bokamoso jo bo siameng, ke fela gore ga ke itse gore ke tla bona kae madi. Batho ba ba pelotshetlha ba ba adimisanang madi ba kotsi e bile ba ba batla morokotso montsi tota. \n\nKe tshwanetse go boloka madi, mme go bonala go ka se kgonege!”", + "SourceText": "Why was this tip helpful for you?", + "text": "Goreng kakantsho eno e go thusitse?", "type": "template", "note": "" }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "“Maikemisetso a me ke gore setlogolo sa me sa mosimane se kgone go ya kwa sekolong se segolwane le gore setlogolo sa me sa mosetsana se kgone go fitlhelela maikemisetso a go ya yunibesithi. Nka kgona jang go boloka madi a mantsi ke amogela madi a mannye jaana?”", + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "\"@local.choice_1\" e thusitse ka gonne...", "type": "template", - "note": "" + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "“Ke a itse - a re simololeng go ithulaganya! Sa ntlha, e re ke dire tekanyetsokabo – ke ithulaganye gore nka boloka madi jang. Ke tla simolola pele ka go nna ke boloka madinyana a ke nang le one – e bile ke tla ikwadisa mo setlhopheng sa go boloka le go adimisa madi.”", + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "\"@local.choice_2\" e thusitse ka gonne...", "type": "template", - "note": "" + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "“E bile ke tshwanetse go bua le ditlogolo tsa me gore ke dilo dife tse re ka dirisang madi a le mannye mo go tsone beke le beke. Ba tla nthusa go bona gore ke dilo dife tseo re di batlang mme tota e se tse re di tlhokang.”", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "\"@local.choice_3\" e thusitse ka gonne...", "type": "template", - "note": "" + "note": "The string @local.choice_3 should not be translated." }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "Dingwaga di le mmalwa morago ga moo:\n\n“Bona fela, re kgonne go fitlhelela maikemisetso a rona! Ga ke a ka ka adima madi mo ditsaleng tsa me kgotsa mo batho bano ba ba adimisanang madi ba ba pelotshetlha. Go boloka madinyana beke le beke go nthusitse gore ke kgone go duelela @global.w_money_teen_boy kwa sekolong se segolwane e bile ke kgonne go boloka madi mangwe gore ke kgone go duelela @global.w_money_teen_girl kwa yunibesithing. Ruri ke ikutlwa ke le motlotlo gore ke kgonne go dira seno.”", + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Go nna le nako e e rileng ya go dira seno go nthusa go gakologelwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Lelapa la lona le ipeetse mekgele efe ya go boloka madi?", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Ka go dira selo ka metlha, nna le mosha wa me re kgona go boloka thulaganyo ya rona e bulegile.", "type": "template", "note": "" }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Ke mekgele/maikemisetso a mentle tota! \n\nKe mokgele/maikemisetso a montle tota! Fa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Go fetsa nako le mosha wa me letsatsi le letsatsi go thusa gore nna le bone/ene re tshepane.", "type": "template", "note": "" }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Fela jaaka @global.w_money_grandma, le rona re na le mekgele/maikemisetso ao re batlang lelapa la rona le e fitlhelela. Fa o boloka madinyana a se kae kgwedi le kgwedi, le wena o ka kgona go e fitlhelela!", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Ee ruri, le metsotso e 10 re le mmogo go dira pharologano – seo se dira gore go nne motlhofo go e rulaganya, gaufi le tiro ya gago le ditiro tsa legae!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Lelapa la lona le ipeetse mekgele/maikemisetso afe a go boloka madi?", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "Go letla mosha wa me go tlhopha se se dirwang go dira gore a itshepe.", "type": "template", "note": "" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "Ke mokgele/maikemisetso a montle tota! \n\nFa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "Fa mosha wa me e nna ene a tlhophang, go na le kgonagalo e ntsi ya gore a batle go fetsa nako re le mmogo.", "type": "template", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Go na le lebaka le lengwe la botlhokwa le le dirang gore go boloka madi go nne botlhokwa: maemo a tshoganyetso! @global.w_money_grandma o ne a lemoga seno nako nngwe:", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "Go letla mosha wa me go tlhopha go bontsha gore ke kgathalela se a se kgatlhegelang.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Bosigo bongwe go ne ga tla setsuatsue se se maswe mme sa senya marulelo a ntlo ya me. sengwe le sengwe mo ntlong se ne se tsiname mo metsing. Ke ne ka tshwanelwa ke go batla madi ka lepotlapotla gore ke baakanye marulelo. Ke ne ke tlaletswe.”", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Ka go amogela dikakantsho tsa mosha wa me, ke bontsha gore ke a mo reetsa.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about this story.", - "text": "A re bueng ka kgang eno.", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "Go bua sengwe se se molemo ka ditlhopho tsa basha ba me go dira gore ba ikutlwe ba tseelwa kwa godimo.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "@global.w_money_grandma o ne a senyediwa ke setsuatsue. \n\nMme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Ke nnete! Mme fa basha ba rona ba tlhopha, ba rotloediwa go rwala maikarabelo mo dikarolong tse dingwe tsa matshelo a bone.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "Let's think about this story.", - "text": "A re akanyeng ka kgang eno.", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Ka go dira gore go seka ga nna le dikgoreletsi, ke bontsha mosha wa me gore o botlhokwa go gaisa.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "@global.w_money_grandma o ne a senyediwa ke setsuatsue.", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Le fa ke sa kgone go nna karolo ya ditiro tsa mosha wa me, jaaka metshameko, ke santse nka ba rotloetsa.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Mme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Fa ke le kelotlhoko, ke kgona go ithuta go le gontsi ka dikgatlhego, dipono le bokgoni tsa mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Maemo a tshoganyetso a ka diragalela lelapa lengwe le lengwe. Go boloka madi GO SA LE NAKO gore re tle re a dirisetse maemo ano a tshoganyetso go re thusa gore re se ka ra iphitlhela re tlaletswe e bile re gateletswe mo maikutlong fa a tlhaga!", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "Ee! Fa re tlhwaela tsebe basha ba rona ka botlalo, ba tlile go dira se se tshwanang le mo go rona nako nngwe fa re ba kopa sengwe!", "type": "template", "note": "" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Tlotlang mmogo: \n* Lo ka boloka madi ka ditsela dife tse di farologaneng? \n* Ke eng seo se ka nnang molemo le seo se ka se nneng molemo sa mokgwa mongwe le mongwe wa go boloka madi? \n\nFa o tlhaloganya mokgwa mongwe le mongwe sentle, seno se tla go thusa gore o dire tshwetso ya gore ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona. \n\nMokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "O dira sentle ka go utulola ditharabololo tsa dikgwetlho tsa gago. Tsamaya o ye go di leka. Kamano ya gago le mosha wa gago e tla tiya le go feta!", "type": "template", "note": "" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Go nna motsadi go ka nna bokete. Nako tse dingwe go utlwalega e kete bana ba rona ga ba re reetse.\n\nMme saense e bontsha gore go ipha metsotso e se kae letsatsi le letsatsi o tlhomile mogopolo mo nakong e o iphang yone le mosha wa gago lo le babedi go thusa go aga tshepo le lerato.", "type": "template", "note": "" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Go na le mekgwa e e farologaneng e re ka e dirisang go boloka madi: kwa gae, go reka dilo tse re ka di rekisang moragonyana, kwa bankeng kgotsa mo setlhopheng sa go boloka madi.\n\nAkanya ka dilo tse di molemo le dilo tseo di seng molemo tsa mokgwa mongwe le mongwe wa go boloka madi.", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Nako ya lona lo le babedi ke fa o tlhoma mogopolo mo go bone, go sena TV kgotsa founo. Dira gore ba etelele pele se o se dirang kgotsa se lo buang ka sone.\n\nGo gontle go dira metsotso e le masome a mabedi ka letsatsi mme gone le metsotso e metlhano e siame tota.", "type": "template", "note": "" }, { - "SourceText": "What is the best savings option for your family?", - "text": "Ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona?", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Dumela.\n\nSetlhogo sa rona ke go ipha nako mmogo le bana ba rona.\n\nGo botlhokwa go ipha nako le bana ba rona gore ba kgone go re tlhaloganya, mme le rona re nna le tshono ya go ba itse. \n\nGopola, lelapa le le tlhaloganyanang le tshela ka kutlwano.", "type": "template", "note": "" }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Mokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", + "SourceText": "Have you spent time with your teen already?", + "text": "A o setse o iphile nako le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Dirang dithulaganyo tsa gore lo ka boloka madi jang gore lo kgone go a dirisa ka nako ya maemo a tshoganyetso le go fitlhelela mekgele/maikemisetso a lelapa la lona!", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Re lebogela go bo o lekile thata go nna motsadi yo o botoka. O a ratiwa e bile oa anaanelwa!", "type": "template", "note": "" }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "Fa lo ka boloka le fa ele madi a mannye fela a maemo a tshoganyetso mo isagweng - go ka dira pharologanyo fa nako e ntse e tsamaya. \n* Tsenya kgolokwe e e bidiwang “maemo a tshoganyetso”.\n* Tsenya kgolokwe e e bidiwang “mekgele/maikemisetso a lelapa”.\n* Jaanong lekang go abela dilo madi e le gore lo ka boloka bonyenyane kgwedi le kgwedi jwa sengwe le sengwe sa dilo tseno.", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Go ipha nako le mosha wa gago go thusa go aga go tshepana magareng ga lona. \n\nTswelapele ka @global.parent_app ya gago ya mosepele jaanong - wena le lelapa la gago lo tla bona dipholo tse dintle.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re motlotlo ka mongwe le mongwe mo ditlhopheng tseno, a ga go a nna jalo?", + "SourceText": "First @global.weekly_workshop!", + "text": "Sa Ntlha @global.weekly_workshop!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re akanya gore mongwe le mongwe mo lelapeng la lona o tlhoka go akgolwa, a ga go jalo?", + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Dumela @fields.user_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo – tsweetswee ikatise le ba bangwe mo lelapeng la lona - fa lo dumalana ka gore lo tlile go dira dilo jang, seno se tla lo thusa fela thata!", + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Dumela @fields.group_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Step 1: THINK", - "text": "Kgato 1: AKANYA", + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\n@local.workshop_data.in_text_title ya gago e setse e go letile!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "What do we spend on now?", - "text": "Re reke eng gone jaanong?", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Ga go na go tsaya nako e telele, mme o tla bona tshedimosetso ya botlhokwa. \n\nO dirile sentle go leka go nna motsadi yo o botoka. Kamoso, o ka kgona go tsena mo workshop e ntšha.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "THINK Activity", - "text": "Ikatiso ya GO AKANYA", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "O dirile sentle go fetsa @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa, go itumelela le go ithuta go nna le bokgoni jo bosha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Step 2: CHOOSE", - "text": "Kgato 2: TLHOPHA", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "A re akanye ka ditsela tsa go ipha nako mmogo le mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "Talk together about needs and wants", - "text": "Tlotlang mmogo ka dilo tse lo di tlhokang le tseo lo di batlang", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "O ka dira eng go ipha nako mmogo le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "CHOOSE Activity", - "text": "Ikatiso ya GO TLHOPHA", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "O ikutlwa e kete GA O NA NAKO mme o lapile? Gape gopola go akanya ka ditsela tse di se kitlang di tsaya nako e e oketsegileng.", "type": "template", "note": "" }, { - "SourceText": "Step 3: BUILD", - "text": "Kgato 3: AGA", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", "type": "template", "note": "" }, { - "SourceText": "Make your own budget", - "text": "Itirele tekanyetsokabo", + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "O naledi! \n\nLetsatsi le letsatsi, lemoga sengwe se o se dirileng sentle. Ituele ka sengwe se se go itumedisang. Mme hemela kwa teng gore o iketle. \n\nGopola, o amogela @global.parent_point nako nngwe le nngwe fa o itlhokomela - o botlhokwa!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "BUILD Activity", - "text": "Ikatiso ya GO AGA", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Step 4: PLAN", - "text": "Kgato 4: ITHULAGANYE", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Ditiro tsa go itlhokomela\n* Dikakantsho tsa go ipha nako mmogo\n* Didirisiwa: Tsela ya go ipha nako lo le mmogo\nLETSATSI - TSHAMEKA - NNA\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Emergencies and family goals", - "text": "Maemo a tshoganyetso le mekgele/maikemisetso a lelapa", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Buang dikakantsho! \n\nKe dilo dife tse lo ka di dirang go ipha nako mmogo le basha ba gago?\n\nO ikutlwa e kete GA O NA NAKO mme o lapile? Tlaya ka dikakantsho tsa nako ya lona lo le mmogo tse di sa tseyeng nako e ntsi, jaaka go ya lebenkeleng mmogo ka dinao.", "type": "template", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "Ikatiso ya GO ITHULAGANYA", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Go ka tsaya nakwana go tlwaela nako ya lona lo le mmogo, mme fa lo e dira gantsi go tla nna botoka!\n\nLo batsadi ba ba molemo ka go leka seno.", "type": "template", "note": "" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Dira tekanyetsokabo gape - mo lekgetlong leno e dire LE mosha wa gago le lelapa la gago! \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", + "SourceText": "DAY - Try to do it every day", + "text": "LETSATSI – Leka go dira seno letsatsi le letsatsi", "type": "template", "note": "" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Dira tekanyetsokabo le mosha wa gago le lelapa la gago. \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Batla metsotso e 5 (kgotsa go feta!) letsatsi le letsatsi fa mosha wa gago a sena sepe se a batlang go se dira.", "type": "template", "note": "" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Tlhatlhobang tekanyetsokabo le mosha wa gago le lelapa la gago. Seno se tla gopotsa mongwe le mongwe gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele ya rona!\n\nTekanyetsokabo e thusitse malapa a le mantsi tota.", + "SourceText": "PLAY - Let your teen choose", + "text": "TSHAMEKA - Letla mosha wa gago a tlhophe", "type": "template", "note": "" }, { - "SourceText": "Steps to make a budget", - "text": "Dikgato tsa go dira tekanyetsokabo", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Bolelela mosha wa gago gore o ka rata go fetsa nako le ene le gore ba tlhophe gore ba batla go dira eng kgotsa go bua ka eng. Ba ka tsaya seno se sa tlwaelega ko tshimologong, mme ba tla itumelela nako eno le wena!", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Go gontle, ke itumetse tota! Tswelelang lo dira tiro eno e e molemo.", + "SourceText": "STAY - Focus on your teen", + "text": "DULA - O tlhomile mogopolo mo mosheng wa gago", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Tshwarelo gore dilo di bokete. Malapa otlhe a na le mathata. Re fano go lo thusa!", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Tima TV mme lo beele difouno ko thoko. Lebelela mosha wa gago. Dumela ka tlhogo kgotsa o re “ke a bona” go bontsha gore tota o tlhwaile tsebe. Amogela se ba se buang ntle le go ba atlhola.", "type": "template", "note": "" }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "A re lebaleng ka sengwe fela se se phoso seo se diragetseng gompieno, re tla leka gape letsatsi le le latelang. Ga se bothata!", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Go ipha nako mmogo le mosha wa gago e ka nna monate le mo go wena, tota! Go ka nna ga dira gore o ikutlwe o sa tshwenyega thata mo maikutlong.", "type": "template", "note": "" }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Tlhomamisa mogopolo mo dilong tse di siameng! \n\nGo botoka go bolelela basha ba rona gore ke eng se re batlang ba se DIRA go na le go ba bolelela gore ba TLOGELE go dira sengwe.\n\nO tla bona pharologanyo.", + "SourceText": "Great!", + "text": "Go gontle!", "type": "template", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Dumelang, dumelang lotlhe.\n\nSetlhogo sa gompieno ke go neela ditaelo tse di siameng. \n\nGo botlhokwa go naya bana ba rona ditaelo tse di siameng ka gonne fa re dira jalo, ba tla itse le go tlhaloganya gore ke eng se re solofetseng gore ba se dire, e bile ba tla se dira jaaka re batla. \n\nKa gone, kwa bofelong mongwe le mongwe o a itumela.", + "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", + "text": "Ke a itse botshelo bo ka nna bokete. Ke motlotlo ka wena. \n\nGo sa kgathalesege gore o ikutlwa jang, go molemo go bo o le fano!", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le motlotlo - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Re motlotlo tota ka lona. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, binang mmogo mme lo keteke!", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le go leba kwa morago - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n * Dikakantsho tsa katiso ya legae", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Re motlotlo tota ka wena. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, bina mme o keteke!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a thought experiment!", - "text": "A re lekeletseng kgopolo nngwe!", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re go akgole, mme o rulaganye tshegetso ya botsadi ya gago e e tlang.", "type": "template", "note": "" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "O SEKA WA AKANYA KA TLOU \n\nKe eng se o se akanyang?", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re keteke le wena, mme o dire thulaganyo ya tshegetso ya gago ya @global.parent_app e e tlang.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Gongwe o ILE wa akanya ka tlou...\n\n‘Se dire jalo’ ditaelo di dira gore basha ba akanye ka selo seo. \n\nKa dinako tse dingwe ga ba tlhaloganye gore tota re ne re batla gore ba DIRE eng. \n\nE bile, ga ba batle go nna ba bolelelwa gore ba se ka ba dira dilo dingwe (a ga re jalo rotlhe?)", + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Dumelang lotlhe.\n\nSetlhogo sa gompieno ke go keteka le dikgato tse di latelang.\n\nGo ntse go le monate tota, go ntse go le monate go nna le wena mo loetong leno. Gompieno re keteka loeto le re le tshotseng mmogo. \n\nGompieno re keteka tsotlhe tse re di ithutileng mo nako eno yotlhe.", "type": "template", "note": "" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "JAANONG, AKANYA KA LENGAU! \n\nKe eng se o se akanyang?", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Gompieno o tla keteka, o lebe ko morago mme o lebe ko pele:", "type": "template", "note": "" }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "O nepile! Ditaelo tse di siameng e bile di tlhalosiwa sentle di thusa basha go tlhoma mogopolo mo go se ba tshwanetseng go se dira. \n\nBasha gape ba tla ikutlwa ba tlotliwa le go feta ka tsela eno, mme seno se ka dira gore ba go reetse.", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "* Leba kwa morago le go buisana\n* Didirisiwa: Kafa lo ka thusanang ka teng\nKOPANANG - LETSANG - MOLAETSA - BUANG\n* Go rulagaya tshegetso", "type": "template", "note": "" }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "A re boneng gore go diragalang fa @global.w_instruct_female_caregiver a raya @global.w_instruct_teen_girl a re \"TLOGELA GO\":", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Gompieno o a keteka o bo o leba kwa morago mo maitemogelong a gago.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe.\n\n@global.w_instruct_female_caregiver: “Tlogela go tlatsa leswe o ntse o bona gore ke a phepafatsa. Le gone o mo tseleng ya me!”", + "SourceText": "End of programme check-in", + "text": "Bofelo ba netefatso ya matseno a lenaneo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Kana mme le nna ke tshwanetse go ikatisetsa kgaisano ya kwa sekolong. Ga nke o mpha tshono ya go dira sepe.”\n\n@global.w_instruct_female_caregiver: “O seka wa ngangisana le nna!”", + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "O ntse o dirisa @global.parent_app mo dikgweding tse fetileng, le fa go ntse jalo go godisa mosha ga go fele! Potso e e latelang ka maitemogelo a gago a go godisa ngwana go tla re thusa go sekaseka go godisa bana ga gago.\n\nBua nnete. Gopola gore dimilione tsa batsadi ba ikutlwa jaaka o ikutlwa, mme rotlhe re tshwanelwa ke go tshegediwa. Ga o esi!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Arrg!! Goreng ke aga ke omantswe ka metlha????”\n\n@global.w_instruct_female_caregiver a bua a le nosi: “Ngwana yole o aga a baka mathata fela.”", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "O bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse di batlegang. O ka nna wa tlola tiro eno.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "A re tlotleng ka gore ke eng se se diragetseng mo kgannyeng eno.", + "SourceText": "Let's talk about what has changed.", + "text": "A re bue ka se se fetogileng.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Tlotlang mmogo: \n\n* O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone? \n* @global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Tlotlang mmogo:\n* Ke eng se se fetogileng mo lelapeng la gago?\n* Ke eng se o leng motlotlo ka sone se o se dirileng?\n\nGopolang go akgolana lo bo lo rotloetsane!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver a ka bo a ile a...", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Dirang thulaganyo gore lo tlile go tshegetsana jang go ya ko pele. \n\nLo ka dirisa dikakantsho tsa malapa a mangwe, kgotsa lo itireleng tsone!", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* A bua sengwe se sentle pele \n* A bua le @global.w_instruct_teen_girl a digile lentswe \n* A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Wena le ba lelapa la gago lo ithutile go le go ntsi. A re akanyeng ka se se fetileng mme re bone gore go fetogile eng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone?", + "SourceText": "Reflect", + "text": "Akanya ka se o se dirang", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Sad", - "text": "O utlwile botlhoko", + "SourceText": "Listen and reflect", + "text": "Reetsa le go akanya", "type": "template", "note": "" }, { - "SourceText": "Confused", - "text": "O akabetse", + "SourceText": "Read and reflect", + "text": "Buisa o bo o akanye", "type": "template", "note": "" }, { - "SourceText": "Angry", - "text": "O galefile", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Tswala matlho o bo o iketle.\n\nAkanya ka botshelo jwa lelapa la gago pele ga o simolola leeto la gago ka app eno.\n \nAkanyetsa kwa morago ka bokgoni jo o bo ithutileng:\n* Go itlhokomela\n* Go ipha nako lo le mmogo\n* Kakgolo\n* Ditaelo tse di siameng\n* Go laola go tshwenyega mo maikutlong\n* Go dira tekanyetsokabo ya lelapa\n* Melao\n* Ditlamorago o ritibetse\n* Go rarabolola mathata\n* Pabalesego ya basha\n* Go dirisana le mathata a a masisi\n\nAkanya ka leeto le o le tsereng - o le bone le ntse jang:\n* Re bolelele megopolo ya gago le maitemogelo\n* Akanya ka dipolelo o bo o ithute mo go tsone\n* Ikatisetse bokgoni jwa gago le mosha wa gago\n\nA go na le sengwe se se fetogileng ka wena le ba lelapa la gago?\n\nO tlhokang gore o tswelele go dirisa bokgoni jwa gago?", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "@global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", + "SourceText": "MEET", + "text": "KOPANANG", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Said something nice first", - "text": "A bua sengwe se sentle pele", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Nnnang lo kopana ka metlha go re lo neelane tshegetso ya botsadi.", "type": "template", "note": "" }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "A bua le @global.w_instruct_teen_girl a digile lentswe", + "SourceText": "CALL", + "text": "LETSANG", "type": "template", "note": "" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "Nnang ‘ditsala tsa batsadi’ go letsetsana fa lo sa itumela kgotsa o sa itse gore o dire eng.", "type": "template", "note": "" }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Ke a leboga gore re dirile ikatiso eno mmogo! \n\nA jaanong re boele morago mme re bone gore go diragala eng fa @global.w_instruct_female_caregiver a ntsha taelo e e siameng:", + "SourceText": "TEXT", + "text": "MOLAETSA", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, go itumedisa go bona o ikatisetsa go bina ga gago le tsala ya gago. Ke kopa lo ye kwa ntle pele gore ke feleletse go phepafatsa mo ntlong. Fa ke feditse lo ka boela e bile le nna ke tla itumelela go lo lebelela.”\n\n@global.w_instruct_teen_girl: \"Go siame, @global.w_instruct_female_caregiver!”", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Romelanang melaetsa beke le beke lo bolelana gore ke eng se lo se dirileng sentle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: “Ke a leboga gore lo ile lwa nna lwa ikatisetsa kwa ntle fa ke ntse ke feleletsa go phepafatsa, @global.w_instruct_teen_girl. Jaanong le nna ke kopa lo mpontshe gore lo di betsa jang.”", + "SourceText": "SHARE", + "text": "BUANG", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: \"Iyo, @global.w_instruct_teen_girl! Ka re mmino ke dilo tsa lona!”", + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Bua ka @global.parent_app mme o thuse malapa a mangwe go simolola leeto la bone.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Let's discuss what happened this time.", - "text": "A re tlotleng ka gore ke eng se se diragetseng mo lekgetlong leno.", + "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", + "text": "Bontle! Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Tlotlang mmogo: \n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?\n* Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", + "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", + "text": "Re maswabi gore ke letsatsi le le bokete. Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "It worked better this time because...", - "text": "Dilo di tsamaile sentle mo lekgetlong leno ka gonne...", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 o tlile gae thari.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata\n* @global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo \n*@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 o tlile gae thari.\n\nKe ditlamorago dife tse di ka thusang fano?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Tota ditlamorago ga di tshwane kgo le kotlhao: tsone di neela basha ba rona tshono ya go ithuta gore ke bone ba rwalang maikarabelo a se ba se dirang.\n\nO ka kgona go di laola E BILE di mosola go feta go itaya kgotsa go goelela!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 le @global.w_consequence_teen_girl_2 ba lwela founo.\n\nKe ditlamorago dife tse di ka thusang fano?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo", + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Ditlamorago di na le mosola thata fa o di tlotla le basha e bile lo dumalana ka tsone go sa le gale pele o di dirisa.\n\nE bile: ga se gore ka metlha ditlamorago di nna le diphelelo tse di sa siamang... Lo ka nna lwa dumalana ka ditlamorago tse di SIAMENG fa go dirwa dilo tse di SIAMENG e le gore go tle go nne le boitshwaro jo bo siameng le go feta!", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Le wena ditaelo tse di siameng di ka thusa mosha wa gago!", + "SourceText": "What consequence would help here?", + "text": "Ke ditlamorago dife tse di ka thusang fano?", "type": "template", "note": "" }, { - "SourceText": "GET REAL", - "text": "BUA NNETE", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 o thusa go tlhatswa dijana.\n\nKe ditlamorago dife tse di ka thusang fano?", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "A mme gone ngwana wa gago wa dingwaga tsa bosha a ka kgona go dira se o mo kopang gore a se dire? Go ka nna ga se ka ga kgonega gore a tlhole a buisa letsatsi lotlhe, mme tota a ka kgona go buisa selekanyo sa halofo ya ura, seno se ka kgonega.", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Tiro e re go e abelang go e dira kwa gae beke eno e tla nna go bua le ngwana wa gago wa dingwaga tsa bosha ka ditlamorago di le DINGWE tse di sa siamang le ditlamorago di le DINGWE tse di siameng.\n\nDitlamorago di tshwanetse go nna:\nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe)\nDI SA FETOFETOGE (ka go tshwana nako le nako)", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE", - "text": "BUA KA TSELA E E SIAMENG", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Boitshwaro jo bo sa Siamang: Go tla gae thari. \n\nDitlamorago tse di sa Siamang: Ga a kitla a bona ditsala tsa gagwe letsatsi le le latelang. \n\nBoitshwaro jo bo sa Siamang: Go bua ka tsela ya go kgoba. \n\nDitlamorago tse di sa Siamang: Kwala lekwalo la go kopa maitshwarelo. \n \nBoitshwaro jo bo Siameng: Go thusa ka go ya mabenkeleng. \n\nDitlamorago tse di Siameng: Go fiwa metsotso e le 30 gore a itumelele go dira sengwe se a se ratang. \n\nBoitshwaro jo bo Siameng: Go thusa ka go tlhokomela bomonnawe. \n\nDitlamorago tse di Siameng: Go fiwa nako e e oketsegileng ka ura a na le ditsala tsa gagwe mafelobeke.", "type": "template", "note": "" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Nyenya, mo lebe mo matlhong o bo o dirise mafoko a a siameng. O se ka wa okaoka go ba akgola fa ba dira sengwe se o kopang gore ba se dire!", + "SourceText": "introduce a consequence together", + "text": "itsise ditlamorago mmogo", "type": "template", "note": "" }, { - "SourceText": "GET CLEAR", - "text": "ITLHALOSE SENTLE", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "A o kile wa nna le dikgwetlho dingwe fa o leka go itsise ditlamorago mmogo?", "type": "template", "note": "" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Go le gantsi le fa re itse gore ke eng se re se batlang, go nna thata go itlhalosa sentle. Bolelela mosha wa gago ka tlhamalalo gore ke eng se o batlang a se dira. Leka go mmolelela jaana, ‘tsweetswee fitlha mo lapeng ka ura ya 7 maitseboa’ go na le go mmolelela fela o re ‘tla gae ka nako’.", + "SourceText": "What was difficult for you about introducing a consequence with your teen?", + "text": "Ke eng se se nnileng bokete mo go wena ka go itsise mosha wa gago ka ditlamorago?", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "A re ikatisetseng go naya ditaelo O BUA NNETE, O BUA KA TSELA E E SIAMENG e bile O ITLHALOSA SENTLE. Go ikatisa go tla go thusa gore o kgone go atlega ka mosha wa gago!", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Ke ile ka galefa tota fa mosha wa me a roba molao.", "type": "template", "note": "" }, { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Tlhopha batho ba le babedi mo setlhopheng sa lona:\n* Motho a le nosi o itira e kete ke mosha\n* Yo mongwe o itira e kete ke batsadi ba mosha\n* “Motsadi”: Naya “mosha” wa gago ditaelo tse di siameng o mo rotloetsa le go mo akgola\n* “Mosha”: Tsiboga fa o akanya gore mosha a ka tsibogela seno \n\nTlotlang mmogo gore seo se tsamaile jang:\n* Seno se dira gore o ikutlwe jang jaaka “motsadi” le jaaka “mosha”?\n* A go na le sengwe se o ka se dirang botoka?\n\nFa go kgonega, naya mongwe le mongwe tshono ya go nna “motsadi” yo re dirileng sekai ka ene le “mosha” yo re dirileng sekai ka ene. Go ikatisa go dira gore re kgone go fitlhelela dilo tse di molemo!", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Fa re ema go se kae pele ga go araba, go re thusa gore re kgobe makgwafo mme re arabe botoka. \n\nNako e latelang fa mosha wa gago a dira gore o galefe, leka go ema go se kae pele. Le go hemela ko teng makgetlonyana go ka dira pharologanyo e kgolo tota!", "type": "template", "note": "" }, { - "SourceText": "Examples of positive instructions:", - "text": "Dikai tsa go naya ditaelo o bua ka tsela e e siameng:", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "Mosha wa me o nkgalefetse tota morago ga ke sena go mo naya ditlamorago.", "type": "template", "note": "" }, { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ke rata mmino o o o reetsang. A o ka o tima fa re ja maitseboa gore re kgone go tlotla? Ke a leboga – Ke itumelela seo thata. \n* Mmino oo o monate tota. Ke mang a e opelang? Ke kopa o time mmino fa o tsena mo ntlong. O ka o reetsa kwa phaposing ya gago fa o batla. Ke a leboga!", + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", + "text": "Fa mosha wa gago a galefa, o ka nna wa tlhoka go mo katoga go fitlha loo-babedi lo kgobile makgwafo. \n\nTlhola go netefatsa gore ditlamorago tsa gago di na le tekatekano mme di a utlwala. Reetsa tlhaloso ya mosha wa gago, mme o netefatse go neelana ka “Tshireletsego ya go Itshwarela” fa ba robile molao e le gore ba nne ba sireletsegile.", "type": "template", "note": "" }, { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Tiro ya beke ya go ikatisa kwa gae ke go naya mosha wa gago ditaelo o bua ka tsela e e siameng.\n\nGakologelwa – BUA NNETE, BUA KA TSELA E E SIAMENG, ITLHALOSE SENTLE = TLHALOSA SENTLE GORE KE ENG SE O BATLANG SE DIRWA (ka tsela e o ka kgonang ka teng le mosha!)", + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Ke itsisitse ditlamorago ntle le go tlotla ka yone le mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "We care about you, and how life is treating you.", - "text": "Re a go kgathalela, le kafa botshelo bo go tshwereng ka teng.", + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "A o ka kgona go dira ditlamorago fa seno se direga? Fa re tlhoma ditlamorago mmogo le basha ba rona, ditlamorago e tla nna tsa nnete, mme basha ba rona ba tla batla thata le go kgona go latela molao.", "type": "template", "note": "" }, { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "O naledi. E bile o dira pharologanyo e kgolo. Nna motlotlo ka wena.", + "SourceText": "I forgot to follow through with the consequence.", + "text": "Ke lebetse go latelela ditlamorago.", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Tshwarelo gore dilo di bokete gompieno. Batsadi botlhe ba na le malatsi a a ntseng jalo.", + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Rotlhe re dira diphoso! Fa re latela ditlamorago ka tsepamo, ke moo bana ba rona ba tla tlhophang go itshwara sentle mo isagweng.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Tswala matlho a gago, goga mowa, o bo o itse gore sengwe le sengwe se o se dirileng se botlhokwa tota.", + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Le fa go na le ditlamorago, mosha wa me o sa ntse a sa latele molao.", "type": "template", "note": "" }, { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Lelapa lengwe le lengwe le lebana le dikgwetlho, mme fa re dira mmogo re ka kgona go lwa le mathata ka tsela e e atlegileng le e edileng. \n\nRuri ke bokgoni jo le mosha wa gago a ka bo ithutang!", + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "Fa mosha wa gago a tswelapele a roba melao, o ka nna wa tlhoka go ipha nako sentle le ene. \n\nLeka go tsamaya le mekgele ya gago e mengwe – jaaka go itlhokomela, go ipha nako mmogo, le go baka. Botswerere jotlhe jono bo tla thusa mosha wa gago go ikutlwa a ratiwa thata e bile a sireletsegile... mme kgatelelo ya gago ya maikutlo e tla fokotsega!", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga go rarabolola mathata. \n\nRotlhe re a itse gore mo botshelong go na le dinako tse re lebanang le mathata, e bile rotlhe re a itse ka tsela ya gore fa re iphitlhela re le mo boemong jono, go thata go akanya ka ditharabololo tse di siameng ka yone nako eo. \n\nKa jalo, go botlhokwa gore fa re lebane le mathata re eme go se kae, re heme, re ritibale re bo re akanya ka bokgoni jwa go rarabolola mathata bo re ka bo dirisang. \n\nGakologelwang gore re akaretseng le basha ba rona fa re rarabolola mathata. Seno se tla ba thusa gore ba nne le maikarabelo le go ithuta kafa ba ka rarabololang mathata a bone ka gone mo nakong e e tlang.", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Re tlhodile fela ditlamorago tse di sa siamang, e seng tse di siameng.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le motlotlo - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Go ka nna bokete go akanya ka ditlamorago tse di molemo nako e nngwe. Ditlamorago tse di molemo di tla rotloetsa mosha wa gago go tsaya maikarabelo a oketsegileng, mme o tla bona pharologanyo!", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Kgang le go itshekatsheka - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "Mosha wa me o akantsha go itewa e le ditlamorago tse di sa siamang.", "type": "template", "note": "" }, { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "A re bone se se diragaletseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe fa @global.w_solve_teen_girl a ne a tshotse founo e e tswang kwa mosimaneng… founo!", + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Basha ba ka bona go itewa e le gone fela ditlamorago tsa go roba melao. \n\nAkantshana ditlamorago dingwe tse di seng thata le bone tse di ka ba thusang go tlhaloganya gore ba dirile sengwe se se sa siamang. Tseno di ka dira thata mme e nne sekao se se molemo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o tsaya kae selo seo?” \n\n @global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o e ntheketse. Ke founo e ntle, @global.w_solve_female_caregiver_1. E tsaya ditshwantsho tse dintle!”", + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng).", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: “Ga ke batle go bona selo seo se se jang madi a mantsi! Mosimane oo ga a siama! O akanya gore o tlile go e duela ka bokae?!” \n\n@global.w_solve_teen_girl: “Ga go dirwe jalo, @global.w_solve_female_caregiver_1! Ga o dire sentle!”", + "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "O ka thusa mosha wa gago go tlhaloganya gore go roba molao wa lelapa go na le ditlamorago. \n\nMme gore o dira seo JANG ke gone go leng botlhokwa. \n\nGo otlhaya ka tsela e e siameng go thusa basha gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: “Ga ke batle go utlwa sepe!” \n\n@global.w_solve_teen_girl: “Ga o batle le go ntheetsa! Ga ke itse gore goreng ke leka go bua le wena!”", + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno ke ditlamorago tse di ritibetseng.\n\nGo botlhokwa gore fa re itsise basha ba rona ditlamorago re ba akaretse, mme fela gape sa botlhokwa ke gore re nne re kgobile makgwafo fa re ba itsise ditlamorago.\n\nSeo se tla thusa mo go rona gore re dumalane ka go itsise ditlamorago tse di ritibetseng mo basheng ba rona mme basha ba rona ba tla kgona go di gopola motlhofo fa re ba akaretsa mme seo se tla dira gore ba nne le maikarabelo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Goga mowa ka makgetlo gore o ritibale, o bo o", + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Go le gantsi basha ga ba ikobele melao. Nako ya fa ba gola ke nako e e thata ya fa ba leka go ithuta gore ke bomang. \n\nKa lesego, go na le ditsela tsa go otlhaya ngwana wa gago wa dingwaga tsa bosha o sa tenega kgotsa o sa dirise dikgoka... e bile ditsela tseno di dira sentle!\n\nGo tlhalosa ditlamorago o ritibetse maikutlo go thusa bana ba rona gore ba bone gore ba tla rwala maikarabelo a se ba se dirang – e ka tswa se siame kgotsa se sa siama. \n\nA re boneng dikai di le mmalwa - a re re o motsadi:", "type": "template", "note": "" }, { - "SourceText": "KNOW IT", - "text": "A ITSE", + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Ditlamorago tsa fa o ritibetse maikutlo e tshwanetse go nna... \n\nTEKATEKANO: Se nne makgwakgwa e bile tota o ka dira seo \n\nKA BONAKO: Di neele ka bonako jo bo kgonegang \n\nO SA FETOFETOGE: Ditlamorago di le dingwe ka metlha", "type": "template", "note": "" }, { - "SourceText": "Identify the problem.", - "text": "Lemoga mathata.", + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Rulaganya go tla ka ditlamorago o ritibetse maikutlo fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa. Gakologelwa gore di tlhoka go nna \n\nTEKATEKANO - BONAKO - DI SA FETOFETOGE", "type": "template", "note": "" }, { - "SourceText": "SOLVE IT", - "text": "A RARABOLOLE", + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "A o setse o kgonne go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro jwa mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Akanya ka ditharabololo tse di kgonegang le gore go ne go ka direga eng fa re ne re di dirisitse.", + "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Feleletsa workshop mme o leke go buisana le mosha wa gago go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro lo le mmogo.", "type": "template", "note": "" }, { - "SourceText": "TRY IT", - "text": "E LEKE", + "SourceText": "Hi @fields.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Dumela @fields.user_name! Gompieno re keteka kgwedi di le pedi tsa go dirisa @global.parent_app!\n\nO dira bontle! Tirelothuto ya beke eno e tlile go go thusa go itse se o ka se dirang fa mosha wa gago a sa latele melao ya fa gae.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Choose a solution and try it out.", - "text": "Tlhopha tharabololo o bo o e leka.", + "SourceText": "Hi @fields.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", + "text": "Dumela @fields.group_name! Gompieno re keteka kgwedi di le pedi tsa go dirisa @global.parent_app!\n\nO dira bontle! Tirelothuto ya beke eno e tlile go go thusa go itse se o ka se dirang fa mosha wa gago a sa latele melao ya fa gae.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "TEST IT", - "text": "E TLHATLHOBE", + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "text": "Go gontle gore o ntse o dirisa @global.parent_app. O setse o iponetse didiriswa tse 6 tsa go nna motsadi! \n\nDira workshop e e latelang go iponela sedirisiwa se se nngwe sa go nna motsadi!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "A e dirile? Go gontle! Fa e sa dira, jaanong o ka leka tharabololo e nngwe.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Fa go nna le maemo a a ritibetseng kwa morago seno se thusa mosha go latela ditaelo sentle – e leke pele ga o tswelela!\n\nO dirile sentle go bontsha maikemisetso a a kalo ka ba lelapa la gago.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "A re bone kafa go rarabolola mathata go dirang ka teng fa go diragadiwa.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "text": "Tiro e ntle go fetsa completing the @local.workshop_data.in_text_title. kamoso, o ka lekola tirelo e ntsha go go thusa go repa, natefelwa le go ithuta bokgoni jo bo thusang!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 o tla gae go tswa tirong. \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ay dinaonyana tsa me! Ke tlhoka go nna fa fatshe nakonyana e be ke nwa kopi ya kofi pele ke simolola go baakanyetsa mongwe le mongwe dijo.”", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O dira eng? Borotho joo ke jwa dijo tsa maitseboa! Jaanong ga bo kitla bo re lekana rotlhe!”", + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "Ee, go tsibogela maemo ka tsela e e ntseng jalo go ile ga dira gore mongwe le mongwe a tenege le go galefa le go feta.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: “Tshwarelo, @global.w_solve_female_caregiver_2, ke ne ke tshwerwe ke tlala. Nka tlhalosa, wa bona, go na le mosimane mongwe kwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ema go se kae... hema...”", + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "A re baleng ka se se diragetseng ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Mphe nakonyana. Ke lapile e bile gone jaanong ke tshwenyegile ka go dira dijo tse di lekaneng tsa maitseboa.” \n\n@global.w_solve_teen_boy_2: “Ke kopa maitshwarelo, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang? O thari!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Step 1: KNOW IT", - "text": "Kgato 1: A ITSE", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: “Jaanong mpolelele, goreng o tshwerwe ke tlala jaana? Ga o a ja dijo tsa gago tsa motshegare kwa sekolong?” \n\n@global.w_solve_teen_boy_2: “Ke jone bothata joo. Go na le mosimane kwa sekolong yo o nkgerisang. A re fa ke sa mo fe dijo tsa me tsa motshegare letsatsi le letsatsi, ene le ditsala tsa gagwe ba tlile go nkutlwisa botlhoko. O nkgalefisa tota!”", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, ga o latele molao wa rona! Ke tlile go go itaya!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi go utlwa ka seo mme ke itumelela gore o mpoleletse, @global.w_solve_teen_boy_2. Ga go reye gore o ka ja dijo tsa mongwe le mongwe tsa maitseboa. Fa re fetsa go bua, o tshwanetse go ya kwa lebentleleng o ye go reka borotho jo bongwe. Mme sa ntlha: O akanya gore re tshwanetse go dirang ka bothata jwa mosimane yo o kgerisang?\"\n\n@global.w_solve_teen_boy_2: “Ke batla go mo itaya kgotsa go ipusolosetsa.”", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Ga o na tekatekano! Ga o nke o ntheetsa!! Ke go tlhoile!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Step 2: SOLVE IT", - "text": "Kgato 2: A RARABOLOLE", + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "A re tlotleng gape ka @global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: \"Hmmm… o akanya gore go tlile go diregang fa o dira jalo?\"\n\n@global.w_solve_teen_boy_2: “Ga ke itse. O mogolo mo go nna ka jalo a ka nna a nkutlwisa botlhoko le go feta. E bile nka tsena mo mathateng kwa sekolong le go kobiwa.”", + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: “Ke tshwenngwa ke gore o sa ntse o tla gae thari, @global.w_consequence_teen_boy_1. Ke eng se re ka se dirang go go thusa gore o gakologelwe go tla gae ka nako?”\n\n@global.w_consequence_teen_boy_1: “Fa ke tla gae ka nako, gongwe nka robala thari ka metsotso e le 30 go feta ka tlwaelo?”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: “Ee, seo se ka direga. Jaanong go na le moo re ka go dirang?\"\n\n@global.w_solve_teen_boy_2: “Ke akanya gore ke bolelele morutabana. Mme bana ba bangwe ba tlile go mpitsa mpimpi. Gongwe wena o bue le morutabana?”", + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: Kakantsho eo e molemo tota! Jaanong re tshwanetse go dira eng fa o sa ikobele molao ono? \n\n@global.w_consequence_teen_boy_1 (o itoma diteme): “Mgmluuhm”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Eo e utlwala jaaka kakanyo e e botoka. Gape nka bua le batsadi ba gagwe fa o batla ke dira jalo.\"\n\n@global.w_solve_teen_boy_2: “Ke a leboga. Fa o akanya gore seo se ka thusa le sone. Ke a leboga, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: “Bua fela, ke a itse gore o akantse sengwe.”\n\n@global.w_consequence_teen_boy_1: \"Go siame…. Go ka nna jang ka: Ke tshwanelwa ke go dira tirogae ya me?”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Ke direla wena, moratiwa. Ke tla e dira fela fa ke fetsa go ja dijo tsa maitseboa. E bile o a itse? Fa e le gore seo ga se dire, re ka leka se sengwe mmogo.”\n\n@global.w_solve_teen_boy_2: \"Ke a leboga, @global.w_solve_female_caregiver_2\"", + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: “Gone mme tirogae ke selo se o tshwanetseng go se dira. Fa o lebala molao, go tla bo go siame gore o seka wa bonana le ditsala tsa gago letsatsi le le latelang.”\n\n@global.w_consequence_teen_boy_1: \"Go siame, @global.w_consequence_male_caregiver.\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 3: TRY IT", - "text": "Kgato 3: E LEKE", + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Letsatsi le le latelang...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ke nako mang! Go setse go le thari!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "Beke morago ga moo… \n\n@global.w_solve_female_caregiver_2: \"Dilo di tsamaya jang kwa sekolong jaanong?\"\n\n@global.w_solve_teen_boy_2: “Go botoka, mosimane ole ga a sa tlhole a ntseela dijo tsa me tsa motshegare. Mme o santse a sa ntseye sentle.”", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Tshwarelo @global.w_consequence_male_caregiver – o ka nna wa ya go robala”. \n\n@global.w_consequence_male_caregiver: “Ke KGALE nako e o neng o tshwanetse go tla gae ka yone e fetile!”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 4: TEST IT", - "text": "Kgato 4: E TLHATLHOBE", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: “Nka kgona go tlhalosa, @global.w_consequence_male_caregiver, Nka kgona.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, Ke bosigogare mme o tlile gae thari go na le nako e re dumalaneng ka yone. Le fa gone o ka tlhalosa jang, o tshwanetse go tlhaloganya gore se o se dirang ga se a siama. @global.w_consequence_female_caregiver ke ntse ke tshwenyegile tota.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: “Ke maswabi go utlwa seo, @global.w_solve_teen_boy_2. A ke kope malome wa gago gore a bue le batsadi ba gagwe? Fa e le gore seo ga se dire, re tla leka sengwe se sele!\"\n\n@global.w_solve_teen_boy_2: \"Ee, ke a leboga @global.w_solve_female_caregiver_2. Ke lebogela gore o nkeme nokeng.”", + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: “Ditsala tsa me di ne di batla gore re fetse nako e telelenyana mmogo. Ba ne ba re ke ngwana fa ke setse ke batla go ya gae.” \n\n@global.w_consequence_male_caregiver: “Ke a itse gore gantsi go thata go gana se ditsala tsa gago di go kopang sone. A re ye go robala, re tla bua ka kgang eno mo mosong fa re ikhutsitse sentle.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Tlotlang mmogo: \n\n@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: “Intshwarele go bo ke dirile gore o tshwenyege le @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ke a leboga. Jaanong tsamaya o ye go robala, mme gone, itse gore ka gonne o tlile gae thari, kamoso maitseboa ga o ye gope.”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Gakologelwa @global.w_solve_teen_girl le founo e a e tsereng kwa mosimaneng?", + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le motlotlo - tseo di didirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "" }, { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang...\n* Dikai tsa ditlamorago\n* Didirisiwa: Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo\nTLHALOSA - DUMALANA - TSAYA KGATO\n* Motlotlo ka melao le ditlamorago\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "A re boele kwa go @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe re bone gore ba tlile ka tharabololo efe.", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Tlotlang mmogo: \n* Goreng go dirisa ditlamorago ka tsela eno go ile ga se ka ga dira sentle?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe ba tlile ka ditharabololo di le tharo.", + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver o ne a galefile", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Go tlhokomela basha go bokete tota. \n\nGantsi ga go na ditharabololo tse di motlhofo, mme jaanong @global.w_solve_female_caregiver_1 o ithutile gore a ka bua le morwadie ka ga dilo tseno. \n\nPele, o ne a tshwenyegile a le nosi, jaanong ba tlile ka ditharabololo ba le mmogo!", + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver ga a ka a letla @global.w_consequence_teen_boy_1 gore a tlhalose", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "@global.w_solve_teen_girl o nna mo gae kgwedi", + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Ga go a ka ga tlotliwa ka ditlamorago pele le @global.w_consequence_teen_boy_1", "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: “Ga o tle go tswela kwa ntle mo kgweding e e latelang”", + "SourceText": "The consequence was too strong", + "text": "Ditlamorago di ile tsa nna bogale thata", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Seo ga se a dira... A re leke sengwe se sele.", + "SourceText": "Giving a consequence this way did not work well because...", + "text": "Go dirisa ditlamorago ka tsela eno ga go a dira sentle ka gonne...", "type": "template", "note": "" }, { - "SourceText": "Return the phone and save up", - "text": "Busa founo o be o boloka madi", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Tlotlang mmogo:\n* Ke melao efe a basha ba gago go le gantsi ba sa e lateleng? \n* Ke ditlamorago dife tse o ka di dirisang mo molaong mongwe le mongwe o o tobileng fa o sa latelwe? \n\nDitlamorago di tshwanetse go nna: \nTEKATEKANO (go se nne makgwakgwa thata)\nKA BONAKO (dira seo ka gangwe) \nSE FETOFETOGE (ka go tshwana nako le nako)\n\nAkgola le go rotletsana – re ka kgona go nonotshana!", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: “Ga ke leke go latofatsa tsala ya gago kgotsa go nna lefufa. Ke tshwenyegile ka gore fa mongwe a go naya mpho go thata gore ‘nnyaa’ fa ba batla gore o ba duele ka sengwe - jaaka thobalano. Fa o batla go nna le founo, re tlile go boloka madi mmogo gore o kgone go itirela ditshwetso kwantle ga go mo kolota sepe.”", + "SourceText": "Let's talk about this story", + "text": "A re bueng ka kgang eno", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "This is great! Try the third option as well.", - "text": "Ke selo se sentle! Leka le kakantsho ya boraro.", + "SourceText": "Why did using a consequence work well this time?", + "text": "Goreng go dirisa ditlamorago go dirile sentle mo lekgetlong leno?", "type": "template", "note": "" }, { - "SourceText": "Learn about safe sex", - "text": "Ithute ka thobalano e e sireletsegileng", + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 le @global.w_consequence_male_caregiver ba buile ka ditlamorago ba ritibetse maikutlo", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + }, + { + "SourceText": "They agreed on consequences together", + "text": "Ba ile ba dumalana mmogo ka ditlamorago", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: “Seno se ntira gore ke lemoge gore re tshwanetse go bua ka basimane le go itshireletsa. Basha ba dithaka tsa gago ba a ima kgotsa ba tshwarwa ke HIV. A reye kwa tliliniking gore o kgone go bua le mooki gore a go rute kafa o ka nnang o sireletsegile ka gone.”", + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver o ne a tsiboga a ritibetse maikutlo mme gone a tiisitse fa @global.w_consequence_teen_boy_1 a ne a sa ikobela molao", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "This is great!", - "text": "Ke selo se sentle!", + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver o ne a reetsa @global.w_consequence_teen_boy_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let's practice problem-solving!", - "text": "A re ithute go rarabolola mathata!", + "SourceText": "The consequence was realistic and appropriate", + "text": "Ditlamorago di ne di utlwala e bile di tshwanela", "type": "template", "note": "" }, { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Ikatiseng mmogo ka mathata ao le nang le one gone jaanong. Mongwe wa lona ke motsadi o mongwe ke mosha. \n\nAkgolanang lo be lo rotletsana - re motlotlo ka lona! \n\nGakologelwa dikgato: \nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", + "SourceText": "Using a consequence worked well this time because...", + "text": "Ditlamorago di dirile sentle mo lekgetlong leno ka gonne...", "type": "template", "note": "" }, { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Ruta mosha wa gago ka dikgato di le nne tsa go rarabolola mathata:\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE \n\nDirisang dikgato tseno mmogo fa mathata a tlhagelela!\n\nFa go direga sengwe se se maswe, gantsi re a kgopisega e be re latofatsa mongwe. Mme se basha ba rona ba se tlhokang ke gore mongwe a ba thuse go batla ditharabololo mmogo. Ba reetse, amogela kafa ba bonang le kafa ba utlwang dilo ka gone, o bo o ba lebogela go go ikanya.\n\nFa o ruta basha ba gago kafa ba ka lwang le mathata ka gone go tla ba thusa botshelo jwa bone jotlhe. Ruri ke mpho!", + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Tsela e o itsiseng ka yone ditlamorago o ritibetse maikutlo e botlhokwa. Gakologelwa gore, fa o akaretsa mosha wa gago, gantsi dilo di nna botoka!", "type": "template", "note": "" }, { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Mathata mangwe a batsadi ba bangwe ba a rarabolotseng le basha ba bone:", + "SourceText": "EXPLAIN", + "text": "TLHALOSA", "type": "template", "note": "" }, { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* Mosha wa me ga a batle go ya sekolong\n* Ke tshwenyegile ka gore mosha wa me o tla nna moimana kgotsa o tla imisa mongwe\n* Ke tshwenyegile ka ga se mosha wa me a se dirang mo inthaneteng\n* Mosha wa me o tsamaya le ditsala tse di sa siamang\n* Mosha wa me o motlapa\n* Mosha wa me ga a dire tiro ya gagwe ya sekolo\n* Mosha wa me a ka tswa a dirisa diokobatsi", + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Tlhomamisa gore lotlhe lo ritibetse maikutlo. Kgwa mowa makgetlo a le mmalwa. Tlhalosetsa mosha wa gago gore ke eng fa boitshwaro jwa gagwe bo go tshwenya.\n\nTlhalosa mabaka a go bo melao e o e beileng e le botlhokwa. O ka nna wa mo tlhalosetsa gore o ikutlwa jang - ga go phoso go tlhalosa gore o go swabisitse.", "type": "template", "note": "" }, { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Go nna motsadi yo o molemo gape go raya go nna le nako ya go itlhokomela malatsi otlhe.", + "SourceText": "AGREE", + "text": "DUMALANA", "type": "template", "note": "" }, { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Go gontle. E bile go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Tlhalosetsa mosha wa gago gore diphelelo e tla nna eng fa a ikobela melao le fa a sa e ikobele.\n\nBa kope gore ba tle ka dikakantsho tsa bone. Tlotlang go fitlha lo dumalana ka sengwe se tota se ka kgonegang.\n\nTlhalosa ditlamorago tsa fa molao O SA ikobelwe le gore ditshiamelo e tla nna dife fa O ikobelwa.", "type": "template", "note": "" }, { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Go nna motsadi go bokete. Mme go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", + "SourceText": "ACT", + "text": "TSAYA KGATO", "type": "template", "note": "" }, { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Go dira dilo tseno tsotlhe go go dira motsadi yo o molemo.", + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Fa mosha wa gago a ikobela molao o o o beileng, mo akgole o bo o mo neye ditshiamelo!", "type": "template", "note": "" }, { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Mosha a ka fetsa nako e ntsi a le kwa ntle kgotsa mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa. \n\nGo buisana mmogo ka mafelo a a sireletsegileng le a a sa sireletsegang, go thusa thata!", + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "Ba tla bona gore wa ba tlotla e bile o ba tsaya tsia. Gakologelwa: Fa re nna re ba akgola, ba tla nna ba bontsha boitshwaro joo jo bo siameng!", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga tshireletsego ya basha. \n\nKe maikarabelo a batsadi go boloka basha ba bone ba sireletsegile ka dinako tsotlhe. Re tshwanetse go tlhomamisa gore basha ba rona ba sireletsegile mo lefelong le re nnang mo go lone. Ke maikarabelo a rona go dira gore ba itse mafelo a a sireletsegileng le a a sa sireletsegang a re nnang mo go one. \n\nGape ke maikaraelo a rona go tlhomamisa gore ba tlhaloganya dikotsi tse ba ka tsenang mo go tsone fa ba le mo inthaneteng. Ka tsela eo basha ba rona ba tla nna le maikarabelo le go kgona go dira ditshwetso tse di siameng gore le bone ba itshireletse.", + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Fa mosha wa gago a sa ikobele molao o o beilweng, latelela seo ka ditlamorago.", "type": "template", "note": "" }, { - "SourceText": "Today you will explore:", - "text": "Gompieno o tlile go itse:", + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Fa mosha wa gago a tlola molao, mo neele ditlamorago o ritibetse. O tshwanetse go dira jalo ka TEKATEKANO (o se makgwakgwa), KA BONAKO (o se ka wa okaoka) O SA FETOGE (dira se se tshwanang ka metlha).", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "O ka tla ka ditlamorago o ritibetse jang fa basha ba gago ba ngangisana ka nako ya dijo tsa maitseboa? \n\nGakologelwa gore e tshwanetse go nna: \nTEKATEKANO - BONAKO - E SA FETOFETOGE", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Kgang le go leba kwa morago - tse di dirileng!\n* Kgang le go leba kwa morago - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", + "SourceText": "Not seeing any friends for a month", + "text": "Go sa etele ditsala kgwedi yotlhe", "type": "template", "note": "" }, { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Puisano ke selo sa botlhokwa tota!\n\nA re boneng gore go diragetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Go ka nna bokete gore o tseye kgato eno e bile e ka lebega e le makgwakgwa!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: \"Go diragetse sengwe fa ke tswile le ditsala tsa me @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Mpolelele, @global.w_safe_teen_girl_1\"", + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Go khansela dithulaganyo tsa bone tsa letsatsi la botsalo mo lobakeng lwa kgwedi", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Monna yo o mo koloing: “Dumela montlenyane. Ke ntse ke go lebeletse. O montle tota, leina la gago ke mang? \n\n@global.w_safe_teen_girl_2: “Leina la gagwe ke @global.w_safe_teen_girl_1”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Monna yo o mo koloing: “@global.w_safe_teen_girl_1, a ga o batle go tsamaya le nna re ye go reka sengwe sa go nwa le ditšhipisi? Tlaya, tsena mo teng, o tla boa ka nako, ke a go tshepisa...” \n\n@global.w_safe_teen_girl_1: “Ga ke akanye gore ke kakanyo e ntle eo...”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “O lesego, tsala ya me. Ke eletsa e kete monna a ka NKOPA gore ke tswe le ene a bo a nthekela dimpho. Ke a go bolelela, fa o sa dire jalo ke ya go bolelela batho botlhe gore o sematla!”", - "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." - }, - { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 o seka wa tsamaya! Ikele tlhoko! A reye gae. Go kotsi go tsamaya le batho ba o sa ba itseng. Ntle le moo, o mogolo mo go wena e bile se a se dirang ga se a siama.\"\n\n@global.w_safe_teen_girl_1: “Tota ga ke itse...”", + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Go setse nako e telele e bile le yone e makgwakgwa!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: “Pfff, ke motlotlo ka wena gore ga o a tsena mo koloing. E ne e le boemo jo bo kotsi, ke lebogela gore o mpoleletse!”", + "SourceText": "No TV this evening", + "text": "Maitseboa ano ga go lebelelwe TV", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "A re bue ka se se diragaletseng @global.w_safe_teen_girl_1", + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Bontle, seno se lebega se le tekatekano e bile se ka dirwa gone jaanong", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Tlotlang mmogo: \n\nBoemo joo bo ne bo le kotsi ka eng?", + "SourceText": "Self-care is a key parenting tool.", + "text": "Go itlhokomela ke sedirisiwa sa botlhokwa sa botsadi.", "type": "template", "note": "" }, { - "SourceText": "The situation was risky because...", - "text": "Boemo joo bo ne bo le kotsi ka gonne...", + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Ke itumelela go utlwa gore o tsogile sentle gompieno. O botlhokwa!", "type": "template", "note": "" }, { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho \n* Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo kgothaletsa \n* Go tsamaya le monna yo mogolo mo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo \n* Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo \n* Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Tshwarelo gore dilo di bokete gone jaanong. Hemela kwa teng mme o itse gore o botlhokwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "" }, { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "A re akanye ka se se diragaletseng @global.w_safe_teen_girl_1:", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, le go go thusa go rulaganyetsa isago. \n\nGongwe lo ka rulaganya dijo tsa moletlonyana mmogo le go rulaganya mmino fa e le gore lo ka rata go bina!", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "What was risky about that situation?", - "text": "Boemo joo bo ne bo le kotsi ka eng?", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "O feditse workshop ya beke eno. \n\nWorkshop ya beke e e latelang re tla keteka ka ga lona lotlhe, mme lo ka bua gore ke eng se lo batlang go tswelela lo thusiwa ka sone. \n\nLo ka rulaganya go tla ka sengwe se lo tla se itumelelang go keteka – gongwe dijo kgotsa mmino o lo ka ratang go o reetsa!", "type": "template", "note": "" }, { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho", + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "O na le mosha wa gago tlhopha nngwe ya maemo ano (kgotsa o ikakanyetse one ka bowena!). Leba popae, mme lo tlotle gore lo ne lo ka dira eng lo le mmogo fa seno se diragaletse tsala kgotsa mo lelapeng la gago. \n\nMme gakologelwa: KGWA MOWA - REETSA - AKANYA", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo tlhotlheletsa", + "SourceText": "prepare for a possible crisis with their teens", + "text": "rulaganya go santse go na le nako gore fa go ka tlhaga maemo a tshoganyetso le basha ba gago", "type": "template", "note": "" }, { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Go tsamaya le monna yo mogolo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo", + "SourceText": "prepare for a possible crisis with your teen", + "text": "rulaganya go santse go na le nako fa go ka tlhaga maemo a tshoganyetso le mosha wa gago", "type": "template", "note": "" }, { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "Mosha wa me o mpoleletse gore sengwe se se masisi se mo tlhagetse mme ke ne ke sa itse gore nka dira jang.", "type": "template", "note": "" }, { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Akgola mosha wa gago gore o go boleletse; ga go motlhofo go dira seo! Gopola, o ka dirisa botswerere bope fela jo o bo tlhophileng go tswa mo lebokosong la didiriswa: Ema go se kae, dirisa dikgato tse nne tsa go rarabolola mathata, mme o leke go kgaratlha gore wena le ngwana wa gago lo newe tshegetso e lo e tlhokang!", "type": "template", "note": "" }, { - "SourceText": "All those things are true!", - "text": "Dilo tseo tsotlhe ke boammaaruri!", + "SourceText": "Get support", + "text": "Batla tshegetso", "type": "template", "note": "" }, { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "A re lebe mmogo sekai se sengwe sa boemo jo bo kotsi.", + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Puisano e dirile gore ke seka ka nnisega tota ka gonne e nkgopoditse tiragalo e e sa siamang e nkileng ka nna le yone.", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: “Tsala ya me e ntse e bua le mosimane wa thaka ya rona mo inthaneteng... O tlile go mo romelela ditshwantsho tsa gagwe. A go botoka ka gonne ke thaka ya rona?”", + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Fa re gopodiwa ka ditiragalo tse di ntseng jalo, go tlwaelegile go ikutlwa o tenegile kgotsa o galefile. Go botlhokwa go batla nako ya fa o kgobile makgwafo, gore o kgone go akanya gore o tlhoka tshegetso e ntseng jang. O ka nna wa tlhoka go bua le mongwe.", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: “O tsala e e molemo go bo o tshwenyegile ka ene. Go romela ditshwantsho o sa apara go kotsi tota.”", + "SourceText": "One of us did not feel comfortable.", + "text": "Mongwe wa rona o ne a sa ikutlwe a nnisega.", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: “Ka dinako tse dingwe batho ga ba nna jaaka ba bua mo inthanete - a ka nna a re ke thaka ya gago kante ke monna wa dingwaga tse 50. Kgotsa fa ba kgaogana, a ka nna a romela ditshwantsho tseo kwa bathong botlhe e be tsala ya gago e utlwa botlhoko.”", + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Seno ke selo se se bokete go bua ka sone. Se batlele nako ya fa o kgobile makgwafo. Re a itse gore go motlhofo thata fa re sa bue ka dilo tseno e bile re solofela gore ga di kitla di re diragalela. Le fa go ntse jalo, go ithuta go lepalepana le mathata go tshwana le go batla inshorense; go botoka fa ka METLHA o akanya ka tsone mme o nna o ipaakantse.", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about our teens' online safety.", - "text": "A re bue ka tshireletsego ya basha ba rona mo inthaneteng.", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Mokgele wa gago e ne e le go buisana ka maemo a ka tlhagang ka tshoganyetso le mosha wa gago mme o a direle thulaganyo.", "type": "template", "note": "" }, { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Ke dikotsi dife tse basha ba ka kopanang le tsone mo inthaneteng malatsi a?", + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Malapa otlhe a na le mathata a one. Fa re ipaakanyetsa mmogo e bile re itse gore re ka bona thuso kae PELE ga sengwe se se maswe se diragala, re ka kgona go fenya mathata mangwe le mangwe.", "type": "template", "note": "" }, { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano \n* Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe\n* Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye\n* Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa\n* Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Dumelang, lotlhe.\n\nGompieno re tlile go bua ka go lepalepana le mathata.\n\nMathata a ka diragala gongwe le gongwe. Mathata a ka diragala nako nngwe le nngwe. Ka jalo, go botlhokwa gore jaaka lelapa le nne le ipaakantse go sa le gale fa go ka direga gore mongwe mo lelapeng a welwe ke mathata. \n\nGo botlhokwa gore go nne le dipaakanyetso gore mongwe le mongwe mo lelapeng a ikutlwe a sireletsegile. \n\nFa o le mo mathateng, gopola go ema go se kae, go kgwa mowa le go ipoloka o ritibetse maikutlo. Seno se tla go thusa gore o kgone go lepalepana le mathata botoka.", "type": "template", "note": "" }, { - "SourceText": "Let's think about our teens' online safety.", - "text": "A re akanye ka tshireletsego ya basha ba rona mo inthaneteng.", + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Go a thusa go ikatisetsa go rarabolola mathata pele ga a diragala. \n\nBona gore malapa ano a matlhano a ile a nna le mathata ka dinako dife. A re re o motsadi: O ne o tla dira eng?\n\nGakologelwa: KGWA MOWA - REETSA - AKANYA", "type": "template", "note": "" }, { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Ke kotsi efe e basha ba ka kopanang le yone mo inthaneteng malatsi a?", + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Bothata 1: @global.w_crisis_teen_boy_2 dintwa kwa sekolong", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano", + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: “Ke la ntlha ke nna le bothata jono. Mme jaanong ke tlile go lelekwa”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe", + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "text": "Bothata 2: @global.w_crisis_teen_girl_1 ke imile", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye", + "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ke tlhabilwe ke ditlhong tota. Ga ke itse gore ke direng”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa", + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "text": "Bothata 3: @global.w_crisis_teen_boy_2 ke imisitse mosetsana", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", + "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Ga ke batle go nna le ngwana\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!\n\nA re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa rona\n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng\n\nA re direng mmapa tseno jaanong re le setlhopha. \n\nO tla dira se se tshwanang ka basha ba gago e le ikatiso ya kwa gae mo bekeng eno.", + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "O ka tsibogela jang @global.w_crisis_teen_boy_2?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Tlotlang mmogo:\n\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dira eng go boloka mosha wa gago a babalesegile?", + "SourceText": "Crisis 4: Someone in the family gets sick", + "text": "Bothata 4: Mongwe mo lapeng o simolola go lwala", "type": "template", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n \n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "\"Diteko tsa re ke na le HIV. Ke tshogile gore ke tlile go swa”", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Takang ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", + "SourceText": "How could you respond in this situation?", + "text": "O ka tsibogela jang seemo seno?", "type": "template", "note": "" }, { - "SourceText": "Safety Plan", - "text": "Thulaganya ya Tshireletsego", + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Bothata 5: mosimane yo o ratanang le @global.w_crisis_teen_girl_1 o mo pateletsa gore ba robalane", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!", + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: “Tota ke ne ke sa batle. Jaanong ke tlile go ima kgotsa go tsenwa ke bolwetsi. @global.w_crisis_female_caregiver, ke tshogile tota...\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Nako le nako fa o rulaganya kgotsa o boloka thulaganyo ya tshireletsego, tobetsa @global.parent_point o bo o itumelela katlego ya gago!", + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "O ka tsibogela jang @global.w_crisis_teen_girl_1?", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "A re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le ao a sa babalesegang: \n* Mmapa wa motse wa rona \n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng \n\nLo tla dira se se tshwanang le mosha wa gago e le katiso ya legae mo bekeng eno - fa mosha wa gago a le fano ga jaana, lo ka dira seno mmogo gone jaanong!", + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Gakologelwang gore lo thusane lo bo lo kgothatsane. Ga go motlhofo go ritibala maikutlo le go reetsana ka nako ya mathata - re motlotlo ka wena.", "type": "template", "note": "" }, { - "SourceText": "My family can join in now!", - "text": "Lelapa la me le ka nna la tsena jaanong!", + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "A o kile wa buisana le mosha wa gago gore lo tla dira eng fa go tlhaga mathata?", "type": "template", "note": "" }, { - "SourceText": "Let me try it out by myself", - "text": "Tla ke e leke ka bonna", + "SourceText": "Crisis Examples", + "text": "Dikai tsa Mathata", "type": "template", "note": "" }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Kgato 1: Ke mafelo afe a a botlhokwa mo lefelong la lona?", + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "O ikemiseditse go nna motsadi. Nna motlotlo ka wena - seno ke phitlhelelo e kgolo ka bo yone!", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka mmapa wa lefelo le mosha wa gago a nnang mo go lone, o o nang le ditshwantsho tsa mafelo otlhe a botlhokwa jaaka ditsela, ntlo ya gago, sekolo, mafelo a ngwana wa gago wa dingwaga tsa bosha a a etelang.", + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Go molemo gore o na le rona mo loetong leno la go nna motsadi! \n\nFeleletsa @local.workshop_data.in_text_title mme o ithute tsela e e molemo go tsiboga fa mosha wa gago a go tlhoka thata.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Kgato 2: Ke mafelo afe a a sireletsegileng le a a sa sireletsegang?", + "SourceText": "Hi @fields.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.user_name! Dipharagobe di ka diragalela mongwe le mongwe - Go ipaakanya go thusa thata.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Tlotlang mmogo:\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", + "SourceText": "Hi @fields.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.group_name Dipharagobe di ka diragalela mongwe le mongwe - Go ipaakanya go thusa thata.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "text": "Ga re itse mathata a ka tlhaga leng, mme re ka KGONA go ipaakanya! \n\nSimolola workshop ya gago e e latelang go bona gore o ka dira seno jang mmogo le mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Kgato 3: O ka bona tshegetso kae?", + "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Kamoso go tla bo go na le workshop @global.parent_app ya bofelo e o ka e dirang. \n\nLeka go e dira @local.workshop_data.in_text_title pele ga o simolola workshop e ntšha. Fa o dira jalo, o ka kgona go dira dithulaganyo tsotlhe tsa bokgoni jwa go godisa bana le go dira tshwetso ya se o batlang go se dira morago ga tsone!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana. \n\nFa tlase go na le mafelo a a ka thusang", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "O dirile sentle ka go fetsa @local.workshop_data.in_text_title. Kamoso, o ka kgona go tsena mo workshop ya bofelo ya go akanya ka loeto lwa @global.parent_app la gago le se o ka se dirang mo nakong e e tlang!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng.\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "Ee, @global.w_crisis_female_caregiver o dirisitse bokgoni jotlhe jo re setseng re bo buile – mme le wena o ka kgona!", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Kgato 4: Ke mafelo afe a a kotsi mo inthanete mme o ka a dira gore a sireletsege jang?", + "SourceText": "All these skills can help in a crisis.", + "text": "Bokgoni jono jotlhe bo ka re thusa fa re le mo mathateng.", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "Mathata a ka wela mongwe le mongwe. \n\nA re baleng ka se se diragetseng ka @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Lemoga kafa ba dirisang webo sentle ka teng! \n* Akanyang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", - "type": "template", - "note": "" + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: “Ao bathong ngwanake, wa itse o lebega o tenegile tota, a o ka mpolelela gore go diragetseng?”", + "type": "template", + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "MAPS", - "text": "DIMMAPA", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: “Ke Malome, o… o… o ne a mphoraphora.” \n\n@global.w_crisis_teen_girl_1 (a akanya): “Leka go wela makgwafo... Ngwanake o tlhoka eng? O tlhoka gore ke ritibale maikutlo mme ke mo reetse” \n\n@global.w_crisis_female_caregiver: “Tla o nne gaufi le nna. Tsaya nako ya gago, ke go reeditse.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Dira DIMMAPA le mosha wa gago ka mafelo a a sireletsegileng le ao a sa sireletsegang mo lefelong leo le nnang mo go lone le mo inthaneteng. Buang ka fa a ka bolokang tshedimosetso ya gagwe, ditshwantsho le dibidio e le khupamarama/sephiri mo inthaneteng ka gone. Buang ka ka fa selo se o se tsenyang gangwe mo inthaneteng, se nnang moo go ya go ile ka teng. Ba ka tswa ba itse sekai se se tswang kwa ditsaleng tsa bone.", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: “Ke bua nnete, o... o... mpateleditse gore ke dire jalo! O mpateleditse gore ke robalane le ene! Ke ne ke sa batle, ke lekile go mmolelela gore GA KE BATLE, a ba a re fa ke gana ke tlile go tsena mo mathateng.\"\n\n@global.w_crisis_female_caregiver: “O dirile sentle ka go mpolelela se se diragetseng. O ka se tsene mo mathateng. Ga se phoso ya gago.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "RULES", - "text": "MELAO", + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: \"Maabane fa o ne o ile kwa go @global.w_crisis_adult_friend. O tlile fano mme go diragetse ka yone nako eo.”\n\n@global.w_crisis_female_caregiver: “Go siame, ke dumela se o se buang ngwanaka. Kgang eno e masisi tota mme re tlile go batla thuso e re e tlhokang. Re ka batla thuso kae?”\n\n@global.w_crisis_teen_girl_1: “Kwa sekolong sa me?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Dira MELAO le mosha wa gago ka tshireletsego ya go dirisa ditiriso le diwebosaete tse ba di ratang. \n\nA o gakologelwa kgang ka Tshireletsego ya Inthanete? E bone gape fano.", + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: “Ah ke a itse gore kae, a re ye kwa tliliniking. Ba a itse gore ke eng se ba tshwanetseng go se dira go go thusa. A ga o na bothata fa re ya kwa teng?\"\n\n@global.w_crisis_teen_girl_1: “Ee... Go siame...a o tla tsamaya le nna?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Online Safety Story", - "text": "Kgang ya Tshireletsego ya Inthanete", + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: “Ee ke tla dira jalo. Mme @global.w_crisis_teen_girl_1? Gopola gore seno ga se phoso ya gago. Ke a go rata. O motho yo o siameng. Re tla bona thuso.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "AMNESTY", - "text": "KGOLOLESEGO", + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "Mathata a mangwe a batsadi ba le bantsi ba tshwenyegileng ka one ke thubakanyo le bokebekwa. A re lebeng sekai se se latelang.", "type": "template", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Dira tumalano ya KGOLOLESEGO. Fa go direga sengwe se se ba kgopisang, se se sa itumediseng kgotsa se se boifisang, ba ka nna ba bua le wena mme o ka nna wa se galefe kgotsa wa se ba otlhae, le fa ba ne ba dira sengwe se se phoso.\n\nA o gakologelwa kgang ka Tshireletsego ya Kgololesego? E bone gape fano.", + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, fa e sa le go tloga maabane o lebega o tshwenyegile. Bothata ke eng?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Safety Amnesty Story", - "text": "Kgang ya Kgololesego ya Pabalesego", + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: “Maabane ke tsamaile le tsala go ya go lebelela bolo. basimane bangwe ba ba neng ba tagilwe ba ile ba simolola go lwantsha tsala ya me.”\n\n@global.w_crisis_male_caregiver_1: “Tswelela, ke go reeditse. Ke solofela gore ga wa ka wa ba lwantsha?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Go tlhokomela bana ka dijithale go tshwana le fa o ba tlhokomela ka tsela ya mmatota. O tsere KGATO E KGOLO ya go boloka mosha wa gago a sireletsegile mo lefelong la lona le mo inthaneteng. Go go siametse!", + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: “Tota ke ne ke sa batle go lwa mme gone, ke ne nka se lebelele tsala ya me fela e itewa ka jalo...”\n\n@global.w_crisis_male_caregiver_1: “Ka jalo, o ile wa lwana gore o sireletse tsala ya gago?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Resources to help in the community", - "text": "Didiriswa tse di ka thusang mo lefelong la lona", + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Rotlhe re ne re lwa. Ke bone mongwe a rapaletse fa fatshe a dutla madi. Ke akanya gore... o ne a sule.”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." }, { - "SourceText": "Online Safety Resources", - "text": "Ditlamelwa Tsa Tshireletsego ya Inthanete", + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: “Ke a leboga gore o mpoleletse ka seno, @global.w_crisis_teen_boy_1. A re nne fa fatshe mmogo jaanong mme re bone gore a ke re itsise mapodisi kgotsa mongwe o sele go thusa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Dirang dimmapa tse pedi mmogo le basha ba gago tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: “Ke a leboga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: Re tla bona thuso. Gopola, re tla go tshegetsa jaaka lelapa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Fa lo sa dira seo mmogo ga jaana, dira dimmapa tse pedi le basha ba gago tsa mafelo a a sireletsegileng le a a sa sireletsegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Selo sengwe le sengwe se sennye se o se dirang se botlhokwa. Re solofela gore le wena o ikutlwa o le motlotlo.", "type": "template", "note": "" }, { - "SourceText": "Safety Plan Activity", - "text": "Tiro ya Thulaganyo ya Tshireletsego", + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Polelo le motlotlo\n* Polelo le motlotlo\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Bontle! Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Polelo le go boela ko morago\n* Polelo le go boela ko morago\n* Didirisiwa: Kafa o ka lepalepanang ka gone le mathata a a masisi\nKGWA MOWA - REETSA - AKANYA\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Re maswabi gore ke letsatsi le le bokete. Re motlotlo ka se o se dirileng mo dibekeng tse di fetileng.", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Ruri seemo seno sa ga @global.w_crisis_teen_girl_1 le @global.w_crisis_female_caregiver se ne se le bokete tota! Seemo seno se ka diragalela basimane le basetsana.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re go akgole, mme o rulaganye tshegetso ya botsadi ya gago e e tlang.", + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "@global.w_crisis_female_caregiver o ne a dirisa bokgoni bofe?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "LO DIRILE BONTLE TOTA! O kgonne! O agile bokgoni jo bo botlhokwa jwa botsadi bo le 11. \n\nSeno ke phitlhelelo e kgolo. Go bontsha gore o kgathalela lelapa la gago. \n\nA re keteke le wena, mme o dire thulaganyo ya tshegetso ya gago ya @global.parent_app e e tlang.", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "Ruri seemo seno sa ga @global.w_crisis_teen_boy_1 le @global.w_crisis_male_caregiver_1 se ne se le bokete tota!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Dumelang lotlhe.\n\nSetlhogo sa gompieno ke go keteka le dikgato tse di latelang.\n\nGo ntse go le monate tota, go ntse go le monate go nna le wena mo loetong leno. Gompieno re keteka loeto le re le tshotseng mmogo. \n\nGompieno re keteka tsotlhe tse re di ithutileng mo nako eno yotlhe.", + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "@global.w_crisis_male_caregiver_1 o ne a dirisa bokgoni bofe?", + "type": "template", + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + }, + { + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Mathata a ka dira gore re ikutlwe re tenegile e bile go se na se re ka se dirang. Mme eno ke yone nako e basha ba rona ba tlhokang gore re kgwe mowa, re ba reetse re bo re akanye.", "type": "template", "note": "" }, { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Gompieno o tla keteka, o lebe ko morago mme o lebe ko pele:", + "SourceText": "BREATHE", + "text": "KGWA MOWA", "type": "template", "note": "" }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "* Leba kwa morago le go buisana\n* Didirisiwa: Kafa lo ka thusanang ka teng\nKOPANANG - LETSANG - MOLAETSA - BUANG\n* Go rulagaya tshegetso", + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Ritibala maikutlo. Ipotse gore, ‘ke eng se mosha wa me a se tlhokang gone jaanong’", "type": "template", "note": "" }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Gompieno o a keteka o bo o leba kwa morago mo maitemogelong a gago.", + "SourceText": "LISTEN", + "text": "REETSA", "type": "template", "note": "" }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Wena le ba lelapa la gago lo ithutile go le go ntsi. A re akanyeng ka se se fetileng mme re bone gore go fetogile eng.", + "SourceText": "Tell them you are there for them and love them.", + "text": "Ba bolelele gore o batla go ba thusa e bile wa ba rata.", "type": "template", "note": "" }, { - "SourceText": "Reflect", - "text": "Akanya ka se o se dirang", + "SourceText": "THINK", + "text": "AKANYA", "type": "template", "note": "" }, { - "SourceText": "Listen and reflect", - "text": "Reetsa le go akanya", + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Bua le mosha wa gago. Ke eng se se ka thusang go rarabolola bothata? O ka nna wa tlhoka dithulaganyo tsa ka bonako ga jaana, mme morago ga moo dithulaganyo tsa lobaka lo loleele moragonyana.", "type": "template", "note": "" }, { - "SourceText": "Read and reflect", - "text": "Buisa o bo o akanye", + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "O ka ikutlwa o le motlotlo gore o ile wa dira maano gore o bone thuso!", "type": "template", "note": "" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Tswala matlho o bo o iketle.\n\nAkanya ka botshelo jwa lelapa la gago pele ga o simolola leeto la gago ka app eno.\n \nAkanyetsa kwa morago ka bokgoni jo o bo ithutileng:\n* Go itlhokomela\n* Go ipha nako lo le mmogo\n* Kakgolo\n* Ditaelo tse di siameng\n* Go laola go tshwenyega mo maikutlong\n* Go dira tekanyetsokabo ya lelapa\n* Melao\n* Ditlamorago o ritibetse\n* Go rarabolola mathata\n* Pabalesego ya basha\n* Go dirisana le mathata a a masisi\n\nAkanya ka leeto le o le tsereng - o le bone le ntse jang:\n* Re bolelele megopolo ya gago le maitemogelo\n* Akanya ka dipolelo o bo o ithute mo go tsone\n* Ikatisetse bokgoni jwa gago le mosha wa gago\n\nA go na le sengwe se se fetogileng ka wena le ba lelapa la gago?\n\nO tlhokang gore o tswelele go dirisa bokgoni jwa gago?", + "SourceText": "How are you feeling today?", + "text": "O ikutlwa jang gompieno?", "type": "template", "note": "" }, { - "SourceText": "Let's talk about what has changed.", - "text": "A re bue ka se se fetogileng.", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Letsatsi la gompieno le monate tota! Ke eng se se dirileng gore letsatsi la gompieno le nne monate? Gakologelwa gore ke selo se se siameng go ikakgola fa o dirile sentle.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Tlotlang mmogo:\n* Ke eng se se fetogileng mo lelapeng la gago?\n* Ke eng se o leng motlotlo ka sone se o se dirileng?\n\nGopolang go akgolana lo bo lo rotloetsane!", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Ke maswabi go utlwa gore ga o ikutlwe sentle gompieno. Re motlotlo ka wena go bo o lemogile maikutlo ao, e bile o leka go ritibala maikutlo le go ineneketsa. O tlhomela lelapa la gago sekao se se molemo.", "type": "template", "note": "" }, { - "SourceText": "MEET", - "text": "KOPANANG", + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Tiro ya beke ya go ikatisa kwa gae ke go naya mosha wa gago ditaelo o bua ka tsela e e siameng.\n\nGakologelwa – BUA NNETE, BUA KA TSELA E E SIAMENG, ITLHALOSE SENTLE = TLHALOSA SENTLE GORE KE ENG SE O BATLANG SE DIRWA (ka tsela e o ka kgonang ka teng le mosha!)", "type": "template", "note": "" }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Nnnang lo kopana ka metlha go re lo neelane tshegetso ya botsadi.", + "SourceText": "Did you have any challenges?", + "text": "A o kile wa nna le dikgwetlho dingwe?", "type": "template", "note": "" }, { - "SourceText": "CALL", - "text": "LETSANG", + "SourceText": "What challenge did you have?", + "text": "O nnile le kgwetlho efe?", "type": "template", "note": "" }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "Nnang ‘ditsala tsa batsadi’ go letsetsana fa lo sa itumela kgotsa o sa itse gore o dire eng.", + "SourceText": "My teenager did not want to follow the instruction.", + "text": "Mosha wa me o ne a sa batle go latela ditaelo.", "type": "template", "note": "" }, { - "SourceText": "TEXT", - "text": "MOLAETSA", + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Ga ke a kgona go bona nako ya motho ka mong le mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Romelanang melaetsa beke le beke lo bolelana gore ke eng se lo se dirileng sentle.", + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Ke neelane ka taelo e e seng molemo go na le e e molemo.", "type": "template", "note": "" }, { - "SourceText": "SHARE", - "text": "BUANG", + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Ke omantse mosha wa me fa a ne a itshwere ka tsela e e sa siamang, go na le gore ke mo neye taelo e e siameng ya se ba tshwanetseng go se dira.", "type": "template", "note": "" }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Bua ka @global.parent_app mme o thuse malapa a mangwe go simolola leeto la bone.", + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Dikgwetlho tse @local.number_of_challenges dikgolo tse batsadi bangwe ba itemogelang tsone:", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.number_of_challenges should not be translated." }, { - "SourceText": "End of programme check-in", - "text": "Bofelo ba netefatso ya matseno a lenaneo", + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Ke a itse; bana ba rona ba tlhoka nako ya go ithuta go latela ditaelo. Nna pelotelele, leka gape, mme o gopole go ba akgola nako le nako fa ba kgonne go latela ditaelo!", "type": "template", "note": "" }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "O ntse o dirisa @global.parent_app mo dikgweding tse fetileng, le fa go ntse jalo go godisa mosha ga go fele! Potso e e latelang ka maitemogelo a gago a go godisa ngwana go tla re thusa go sekaseka go godisa bana ga gago.\n\nBua nnete. Gopola gore dimilione tsa batsadi ba ikutlwa jaaka o ikutlwa, mme rotlhe re tshwanelwa ke go tshegediwa. Ga o esi!", + "SourceText": "Do you want to try one of the following things?", + "text": "A o batla go leka nngwe ya dilo tse di latelang?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "O bonala o fitlhile kwa bokhutlhong jwa netefatso ya matseno a lenaneo. O kannetse wa tlola tirwana ee.", + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Akanya ka nako tsatsi lengwe le lengwe e nka beelang kwa thoko metsotso e le tlhano kgotsa e e oketsegileng.", "type": "template", "note": "" }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Dirang thulaganyo gore lo tlile go tshegetsana jang go ya ko pele. \n\nLo ka dirisa dikakantsho tsa malapa a mangwe, kgotsa lo itireleng tsone!", + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Batla tiro e re ka e dirang ka tsela ya go ijesa monate mmogo.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Re motlotlo tota ka lona. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, binang mmogo mme lo keteke!", + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Kopa mosha wa me kgotsa mongwe o sele go nthusa ka tiro ya legae, gore ke kgone go nna le nako e oketsegileng ke sa dire sepe.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Re motlotlo tota ka wena. O bontshitse matla, bopelokgale le lorato mo lelapeng la gago. Batsadi ba molemo. O molemo. \n\nPina eno ke ya batsadi gotlhe. Reetsa, bina mme o keteke!", + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Bontle tota! Le fa e le go ipha metsotso e 5 go dira pharologanyo e kgolo, mme fa o e dira ka nako e tshwanang letsatsi le letsatsi (jaaka fa re ja dijo tsa mo mosong kgotsa pele re ya go robala), go tla nna motlhofo go e latelela!", "type": "template", "note": "" }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "O amogetswe! Go a itumedisa go nna le wena fano. Beke eno ke ka WENA. \n\nMo workshop eno ya kamogelo o tla: \n* Bona didirisiwa tsa go itlhokomela \n* Direla ditiriso malebana le ditlhoko tsa gago", + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Go gontle! Ka tsela eo o kgona go dira tiro ya gago mme o nne le nako ya go ijesa monate mmogo le mosha gago!", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle.", + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Bontle tota! Ka go aroganya maikarabelo, o tla nna le nako e ntsi ya go dira sengwe sa go ijesa monate le mosha wa gago – seo se botlhokwa tota!", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Tshwarelo gore dilo di bokete jaanong. Go tlwaelegile gore go nne thata ka dinako dingwe. Gopola gore ga o nosi!", + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "Ee, go tsaya nako e ntsi go tlwaela go naya ditaelo tse di siameng – go molemo tota go leka gape! Akanya ka boitshwaro jo o ka ratang go bona mosha wa gago a bo dira thata mme o akanye ka ditsela tse di siameng tsa go neelana ka taelo eo!", "type": "template", "note": "" }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Goreng @data.workshop.w_self_care.short_title?", + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Go bokete go tla ka ditaelo fa re santse re galefile. Leka mme o batle nako ya fa o kgobile makgwafo gore o kgone go itsise mosha wa gago ditaelo tse di siameng. \n\nMo @global.weekly_workshop e e latelang, re tlile go bua thata ka ka fa re ka kgonang go laola maikutlo a rona ka gone!  O ka bona ditiro tsa boiketlo tse dingwe go @data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Gantsi ga re nke re itlhokomela mo go lekaneng. Mme go botlhokwa gore re dire jalo, segolobogolo jaaka motsadi! \n\nGo fokotsa go nna le tshwenyega mo maikutlong le go itshwara sentle go tla thusa rona LE bana ba rona ba dingwaga tsa bosha.", + "SourceText": "Which of the tips helped you?", + "text": "Ke dikakantsho dife tse di go thusitseng?", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se bua ka go itlhokomela. \n\nGo na le dinako tse re itemogelang dikgwetlho, tse re lebanang le mathata e bile re sa itse gore re dire eng. Go botlhokwa gore re itlhokomele le go itse ditsela tsa ka fa re ka ritibalang ka gone fa re lebane le mathata, dikgwetlho kgotsa fa go tsoga mathata. \n\nFa re ritibetse re mo boemong jo bo siameng jwa go akanya sentle le go tla ka ditharabololo tse di tshwanetseng mo dikgwetlhong dingwe le dingwe tseo re lebaneng le tsone.", + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "BUA NNETE – A mosha wa gago a ka kgona go dira se o mo kopang gore a se dire?", "type": "template", "note": "" }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Gompieno o tlile go itemogela ditiro tse 3 tse di ka go thusang go itlhokomela, e bile re tlile go go botsa\ndipotso di le mmalwa go tlhomamisa gore a tiriso e go tshwanetse.", + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "BUA KA TSELA E E SIAMENG – Dirisa mafoko a a siameng mme o ba akgole!", "type": "template", "note": "" }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Tiro ya go iketla\n* Tiro ya go lemoga\n* Tiro ya go ituela\n* Didirisiwa: Tsela ya go tsenya lenaane la go itlhokomela\n* Dira gore tiriso e go tshwanele\n * Dikakantsho tsa katiso ya legae", + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "ITLHALOSE SENTLE – Itlhalose sentle o bo o totobale!", "type": "template", "note": "" }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "A re e leke le go dira tiro e khutshwane ya go iketla mmogo!", + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Bontle tota! Fa re kopa mosha wa rona go dira sengwe se se kgonegang, go nna motlhofo gore ba atlege.", "type": "template", "note": "" }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "Re le batsadi, gantsi ga re na nako ya go itlhokomela - mme go botlhokwa thata go dira jalo! Go fokotsa kgatelelo ya maikutlo a rona LE a bana ba rona ba dingwaga tsa bosha. \n\nA re tseye kgato ya ntlha re be re dira tiro e khutshwane ya go iketla mmogo.", + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Fa re ba akgola, basha ba rona ba ikutlwa ba rotloetsega go re reetsa gape!", "type": "template", "note": "" }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Go tlhokomela se re se dirang sentle go re thusa gore re tlhome mogopolo mo dilong tse di siameng. \n\nA re diriseng nako eno gore re ikakgole. Re tla go bontsha gore jang.", + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Bontle! Fa re akanyetsa ko pele ka ditaelo tse di totobetseng tse re di nayang mosha wa rona, ditaelo tsa rona di nna motlhofo gore a di latele!", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.\n\nSe bolelele ba bangwe ka lentswe le le kwa godimo: “Ke ikakgolela...”\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Recognise", - "text": "Lemoga", + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Tsaya nako gore o ikakgole. \n\nJaanong re tla go bontsha gore o dire jang.", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Ke lebogela go bo o mpoleletse! O dirile sentle ka go leka go naya mosha wa gago ditaelo tse di siameng le go aga botsalano jo bo siameng le mosha wa gago. \n\nMosha wa gago o tshwanetse go akgolwa mme gape le WENA!", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.", + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Tlhomamisa mogopolo mo dilong tse di siameng! \n\nGo botoka go bolelela basha ba rona gore ke eng se re batlang ba se DIRA go na le go ba bolelela gore ba TLOGELE go dira sengwe.\n\nO tla bona pharologanyo.", "type": "template", "note": "" }, { - "SourceText": "\"Well done to me for...\"", - "text": "“Ke ikakgolela...”", + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Dumelang, dumelang lotlhe.\n\nSetlhogo sa gompieno ke go neela ditaelo tse di siameng. \n\nGo botlhokwa go naya bana ba rona ditaelo tse di siameng ka gonne fa re dira jalo, ba tla itse le go tlhaloganya gore ke eng se re solofetseng gore ba se dire, e bile ba tla se dira jaaka re batla. \n\nKa gone, kwa bofelong mongwe le mongwe o a itumela.", "type": "template", "note": "" }, { - "SourceText": "Showing love to my children", - "text": "Go bontsha banake lorato", + "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", + "text": "Gaise o tshwae sepe go @data.habit.instruct_positively.title @global.parent_points gajaana.\n\nE leke gompieno!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" }, { - "SourceText": "Getting up even though I felt tired", - "text": "Go tsoga le fa ke ikutlwa ke lapile", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe – go rialo o gatela pele sentle tota.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Smiling at someone", - "text": "Go nyenya le mongwe", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times already – so you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively - o dira tswelopele e bonalang.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "Making food to stay strong", - "text": "Go dira dijo gore ke nne ke nonofile", + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Bua sentle le wena o ipolelele gore o dira tiro e e molemo. Ga gona selo se se jaaka motsadi yo o itekanetseng, mme re akanya gore o dira sentle!", "type": "template", "note": "" }, { - "SourceText": "Spending time with my children", - "text": "Go fetsa nako ke na le banake", + "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", + "text": "Ditaelo tse di siameng di thusa go bona boitshwaro jo bo molemo ga ntsintsi! \n\nFeleletsa @local.workshop_data.in_text_title go bona dikakantsho tsa gore seno se ka dira jang mo lelapeng la gago.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Helping my children with schoolwork", - "text": "Go thusa banake ka tiro ya sekolo", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Dumela @fields.user_name! Ra go lebogisa gore o simolola beke ya 4 ya @global.parent_app.\n\nBeke eno tirelothuto ya teng ke ka go oketsa tshono tsa gago tsa go bona mosha wa gago a dira se o se kopang.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Buela kwa godimo fa o kgona.\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", + "text": "Dumela @fields.group_name! Ra go lebogisa gore o simolola beke ya 4 ya @global.parent_app.\n\nBeke eno tirelothuto ya teng ke ka go oketsa tshono tsa gago tsa go bona mosha wa gago a dira se o se kopang.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Well done! Try to do this every day.", - "text": "O dirile sentle! Leka go dira seno letsatsi le letsatsi.", + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "text": "A mosha wa gago o nna a go reetsa? Fa go se jalo (jaaka bontsi jwa rona), leba workshop ya beke eno go ithuta ka fa go naya ditaelo tse di siameng go ka thusang ka teng - thata.", "type": "template", "note": "" }, { - "SourceText": "Things to praise yourself for:", - "text": "Dilo tse o ka di ikakgolelang:", + "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Kamoso, o ka kgona go tsena mo workshop e ntšha. E tla go thusa go dira workshop ya pele ga eno. \n\nBatsadi ba bangwe ba dirisa app eno fa ba le mo tseleng ya go ya tirong. Ke ka ntlha ya eng o sa dirise app eno fa o na le metsotsonyana e le mmalwa? \n\nRe leboga gape gore o dirisitse @global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Go bontsha banake lorato \n* Go tsoga le fa ke ikutlwa ke lapile \n* Go nyenya le mongwe \n* Go dira dijo gore ke nne ke nonofile \n* Go fetsa nako ke na le banake \n* Go thusa banake ka tiro ya sekolo", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, go tla bo go na le workshop e ntšha e o tshwanetseng go e dira: o tla bona pharologanyo e kgolo ka go dira diphetogo tse dinnye!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Have a hot drink", - "text": "Nwa seno se se bolelo", + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Call a friend or relative", - "text": "Leletsa tsala kgotsa wa losika", + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "@global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Have a relaxing bath", - "text": "Iketle mo bateng e e tlhapelang", + "SourceText": "Said something nice first", + "text": "A bua sengwe se sentle pele", "type": "template", "note": "" }, { - "SourceText": "Read", - "text": "Buisa", + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "A bua le @global.w_instruct_teen_girl a digile lentswe", "type": "template", "note": "" }, { - "SourceText": "Watch TV", - "text": "Bogela TV", + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", "type": "template", "note": "" }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana. Abelana le ba bangwe:\n\nKe dilo dife tse dinnye tse di dirang gore ke itumele?", + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "@global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi.\n\nO ka nna wa dirisa bokgoni jono kwa gae le go di bona nako nngwe le nngwe mo @global.parent_centre ya gago!", + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Reward", - "text": "Tuelo", + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata", "type": "template", "note": "" }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Rotlhe re tlhoka go itshwara sentle!", + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo", "type": "template", "note": "" }, { - "SourceText": "What small thing makes you happy?", - "text": "Ke dilo dife tse dinnye tse di dirang gore o itumele?", + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", "type": "template", "note": "" }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Bontle! Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana!", + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "A re boneng gore go diragalang fa @global.w_instruct_female_caregiver a raya @global.w_instruct_teen_girl a re \"TLOGELA GO\":", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_1 kgotsa sengwe fela se sele se o se itumelelang.", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe.\n\n@global.w_instruct_female_caregiver: “Tlogela go tlatsa leswe o ntse o bona gore ke a phepafatsa. Le gone o mo tseleng ya me!”", "type": "template", - "note": "The string @local.name_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_2 kgotsa sengwe fela se sele se o se itumelelang.", + "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: “Kana mme le nna ke tshwanetse go ikatisetsa kgaisano ya kwa sekolong. Ga nke o mpha tshono ya go dira sepe.”\n\n@global.w_instruct_female_caregiver: “O seka wa ngangisana le nna!”", "type": "template", - "note": "The string @local.name_2 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_3 kgotsa sengwe fela se sele se o se itumelelang.", + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Arrg!! Goreng ke aga ke omantswe ka metlha????”\n\n@global.w_instruct_female_caregiver a bua a le nosi: “Ngwana yole o aga a baka mathata fela.”", "type": "template", - "note": "The string @local.name_3 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_4 kgotsa sengwe fela se sele se o se itumelelang.", + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Ke a leboga gore re dirile ikatiso eno mmogo! \n\nA jaanong re boele morago mme re bone gore go diragala eng fa @global.w_instruct_female_caregiver a ntsha taelo e e siameng:", "type": "template", - "note": "The string @local.name_4 should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_5 kgotsa sengwe fela se sele se o se itumelelang.", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@global.w_instruct_female_caregiver o ne a phepafatsa ntlo fa @global.w_instruct_teen_girl ene a ntse a ikatisetsa mmino le tsala ya gagwe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, go itumedisa go bona o ikatisetsa go bina ga gago le tsala ya gago. Ke kopa lo ye kwa ntle pele gore ke feleletse go phepafatsa mo ntlong. Fa ke feditse lo ka boela e bile le nna ke tla itumelela go lo lebelela.”\n\n@global.w_instruct_teen_girl: \"Go siame, @global.w_instruct_female_caregiver!”", "type": "template", - "note": "The string @local.name_5 should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Dilo tse o ka di dirang go ituela:", + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: “Ke a leboga gore lo ile lwa nna lwa ikatisetsa kwa ntle fa ke ntse ke feleletsa go phepafatsa, @global.w_instruct_teen_girl. Jaanong le nna ke kopa lo mpontshe gore lo di betsa jang.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Nwa seno se se bolelo \n* Leletsa tsala kgotsa losika \n* Iketle mo bateng e e tlhapelang \n* Buisa\n* Bogela TV", + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: \"Iyo, @global.w_instruct_teen_girl! Ka re mmino ke dilo tsa lona!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "RELAX", - "text": "IKETLE", + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le motlotlo - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Dira tiro ya ka bonako ya metsotswana e le 30 ya go iketla.", + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Lekeletsa kgopolo\n* Kgang le motlotlo - tseo di sa dirang...\n* Kgang le go leba kwa morago - tseo di dirileng!\n* Didirisiwa: Tsela ya go naya ditaelo tse di siameng\nBUA NNETE - BUA KA TSELA E E SIAMENG - ITLHALOSE SENTLE\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "RECOGNISE", - "text": "LEMOGA", + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Tlotlang mmogo: \n\n* O akanya gore @global.w_instruct_teen_girl o ile a ikutlwa jang ka tsela e @global.w_instruct_female_caregiver a mo arabileng ka yone? \n* @global.w_instruct_female_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Tsaya nako o bo o akanya ka selo se le sengwe se O se dirileng morago jaana se o se dirileng bontle thata! Buela kwa godimo fa o kgona “Ke ikakgolela ...”", + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver a ka bo a ile a...", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "REWARD", - "text": "TUELO", + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* A bua sengwe se sentle pele \n* A bua le @global.w_instruct_teen_girl a digile lentswe \n* A bolelela @global.w_instruct_teen_girl gore o batla gore a dire eng", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Gakologelwa gore le wena o tlhoka nako ya go iketla! Ke eng se se dirang gore o itumele?", + "SourceText": "Let's discuss what happened this time.", + "text": "A re tlotleng ka gore ke eng se se diragetseng mo lekgetlong leno.", "type": "template", "note": "" }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Jaanong ka gore re agile bokgoni jwa go itlhokomela, a re tlhomamise gore @global.weekly_workshops tsa gago di a go tshwanela sentle.", + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Tlotlang mmogo: \n\n* @global.w_instruct_teen_girl le @global.w_instruct_female_caregiver ba ikutlwa jang jaanong?\n* Goreng o akanya gore dilo di ile tsa tsamaela @global.w_instruct_female_caregiver sentle mo lekgetlong leno?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Go bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse o di batlang. O ka nna wa tlola tiro eno.", + "SourceText": "Positive instructions can work with your teen too!", + "text": "Le wena ditaelo tse di siameng di ka thusa mosha wa gago!", "type": "template", "note": "" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Nako e o kgonang ka yone, iketle, lemoga o bo o ituela. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", + "SourceText": "It worked better this time because...", + "text": "Dilo di tsamaile sentle mo lekgetlong leno ka gonne...", "type": "template", "note": "" }, { - "SourceText": "Relax activity", - "text": "Tiro ya go iketla", + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl o ne a bona gore @global.w_instruct_female_caregiver o a mo tlotla e bile o a mo rata\n* @global.w_instruct_female_caregiver o ile a kgona go ritibala maikutlo \n*@global.w_instruct_female_caregiver a tswelela a bua ka tsela e e siameng", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Recognise activity", - "text": "Tiro ya go lemoga", + "SourceText": "Let’s do a thought experiment!", + "text": "A re lekeletseng kgopolo nngwe!", "type": "template", "note": "" }, { - "SourceText": "Reward activity", - "text": "Tiro ya go ituela", + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "O SEKA WA AKANYA KA TLOU \n\nKe eng se o se akanyang?", "type": "template", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Nako le nako fa o iketla, o gakologelwa sengwe se o se dirileng sentle kgotsa o ituela, tobetsa @global.parent_points go itumelela katlego ya gago!", + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Gongwe o ILE wa akanya ka tlou...\n\n‘Se dire jalo’ ditaelo di dira gore basha ba akanye ka selo seo. \n\nKa dinako tse dingwe ga ba tlhaloganye gore tota re ne re batla gore ba DIRE eng. \n\nE bile, ga ba batle go nna ba bolelelwa gore ba se ka ba dira dilo dingwe (a ga re jalo rotlhe?)", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "O feleleditse workshop ya beke eno.\n\nRe tlile go dira ditiro dingwe tsa go itlhokomela gape fa lo kopana mmogo e le la ntlha le setlhopha sa lona - lotlhe lo tlhoka go nna le nako e e oketsegileng ya go itlhokomela!", + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "JAANONG, AKANYA KA LENGAU! \n\nKe eng se o se akanyang?", "type": "template", "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Dumela @field.user_name! Re a go akgola gore o simolotse @global.parent_app beke ya bo 5.\n\nWorkshop ya botsadi e ntšha e go emetse ka dikakantsho tsa gore re ka nna jang re kgobile makgwafo le go itshwara fa basha ba rona ba batla go re tsentsha.", + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "O nepile! Ditaelo tse di siameng e bile di tlhalosiwa sentle di thusa basha go tlhoma mogopolo mo go se ba tshwanetseng go se dira. \n\nBasha gape ba tla ikutlwa ba tlotliwa le go feta ka tsela eno, mme seno se ka dira gore ba go reetse.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Dumela @field.group_name! Re a go akgola gore o simolotse @global.parent_app beke ya bo 5.\n\nWorkshop ya botsadi e ntšha e go emetse ka dikakantsho tsa gore re ka nna jang re kgobile makgwafo le go itshwara fa basha ba rona ba batla go re tsentsha.", + "SourceText": "GET REAL", + "text": "BUA NNETE", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Re na le workshop e ntšha e e gone go go thusa ka ga go laola kgalefo le go tshwenyega mo maikutlong. E tla go thusa go itlhokomela botoka.", + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "A mme gone ngwana wa gago wa dingwaga tsa bosha a ka kgona go dira se o mo kopang gore a se dire? Go ka nna ga se ka ga kgonega gore a tlhole a buisa letsatsi lotlhe, mme tota a ka kgona go buisa selekanyo sa halofo ya ura, seno se ka kgonega.", "type": "template", "note": "" }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile? O dirile sentle go lemoga gore wena le ba bangwe lo ne lo ikutlwa jang gompieno! Mme gopola, kamoso ke letsatsi le lesha.", + "SourceText": "GET POSITIVE", + "text": "BUA KA TSELA E E SIAMENG", "type": "template", "note": "" }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Rotlhe re ikutlwa re imetswe ka dinako dingwe. Go hemela ko teng go ka thusa! \n\nFeleletsa @local.workshop_data.in_text_title go iponela didiriswa tse di mosola tsa go lepalepana le go tshwenyega mo maikutlong.", + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Nyenya, mo lebe mo matlhong o bo o dirise mafoko a a siameng. O se ka wa okaoka go ba akgola fa ba dira sengwe se o kopang gore ba se dire!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Go tshwenyega mo maikutlong ga gago go ne go ntse jang beke eno? Leka go hemela ko teng makgetlo a le mmalwa pele o araba mosha wa gago - go dira pharologanyo e kgolo.", + "SourceText": "GET CLEAR", + "text": "ITLHALOSE SENTLE", "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "O dirile sentle ka go hema thata pele o araba mosha wa gago! Nako le nako fa o ema go se kae, o kgona go itshwara.", + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Go le gantsi le fa re itse gore ke eng se re se batlang, go nna thata go itlhalosa sentle. Bolelela mosha wa gago ka tlhamalalo gore ke eng se o batlang a se dira. Leka go mmolelela jaana, ‘tsweetswee fitlha mo lapeng ka ura ya 7 maitseboa’ go na le go mmolelela fela o re ‘tla gae ka nako’.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nKa go fetsa @local.workshop_data.in_text_title ya ntlha, o thaya motheo wa botlhokwa tota: Fa o ikutlwa o itumetse, balelapa la gago le bone ba tla dira botoka!", + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "A re ikatisetseng go naya ditaelo O BUA NNETE, O BUA KA TSELA E E SIAMENG e bile O ITLHALOSA SENTLE. Go ikatisa go tla go thusa gore o kgone go atlega ka mosha wa gago!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "O dirile sentle go fetsa eno @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa le go nna le bokgoni jo bo nang le mosola!", + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Tlhopha batho ba le babedi mo setlhopheng sa lona:\n* Motho a le nosi o itira e kete ke mosha\n* Yo mongwe o itira e kete ke batsadi ba mosha\n* “Motsadi”: Naya “mosha” wa gago ditaelo tse di siameng o mo rotloetsa le go mo akgola\n* “Mosha”: Tsiboga fa o akanya gore mosha a ka tsibogela seno \n\nTlotlang mmogo gore seo se tsamaile jang:\n* Seno se dira gore o ikutlwe jang jaaka “motsadi” le jaaka “mosha”?\n* A go na le sengwe se o ka se dirang botoka?\n\nFa go kgonega, naya mongwe le mongwe tshono ya go nna “motsadi” yo re dirileng sekai ka ene le “mosha” yo re dirileng sekai ka ene. Go ikatisa go dira gore re kgone go fitlhelela dilo tse di molemo!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Dumela @field.user_name! Gompieno re keteka kgwedi tse pedi o dirisa @global.parent_app! \n\nO dira sentle! Workshop ya beke eno e go thusa go itse gore o tshwanetse go dira eng fa mosha wa gago a sa latele melao ya mo gae.", + "SourceText": "Examples of positive instructions:", + "text": "Dikai tsa go naya ditaelo o bua ka tsela e e siameng:", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Dumela @field.group_name! Gompieno re keteka kgwedi tse pedi o dirisa @global.parent_app! \n\nO dira sentle! Workshop ya beke eno e go thusa go itse gore o tshwanetse go dira eng fa mosha wa gago a sa latele melao ya mo gae.", + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ke rata mmino o o o reetsang. A o ka o tima fa re ja maitseboa gore re kgone go tlotla? Ke a leboga – Ke itumelela seo thata. \n* Mmino oo o monate tota. Ke mang a e opelang? Ke kopa o time mmino fa o tsena mo ntlong. O ka o reetsa kwa phaposing ya gago fa o batla. Ke a leboga!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Go gontle gore o ntse o dirisa @global.parent_app. O setse o iponetse didiriswa tse 6 tsa go nna motsadi! \n\nDira workshop e e latelang go iponela sedirisiwa se se nngwe sa go nna motsadi!", + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Go gontle, ke itumetse tota! Tswelelang lo dira tiro eno e e molemo.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Feleletsa workshop mme o leke go buisana le mosha wa gago go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro lo le mmogo.", + "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", + "text": "Tshwarelo gore dilo di bokete. Malapa otlhe a na le mathata. Re fano go lo thusa!", "type": "template", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "A o setse o kgonne go tla ka e le nngwe ya ditlamorago tse di siameng le tse di sa siamang tsa boitshwaro jwa mosha wa gago?", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "A re lebaleng ka sengwe fela se se phoso seo se diragetseng gompieno, re tla leka gape letsatsi le le latelang. Ga se bothata!", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Fa go nna le maemo a a ritibetseng kwa morago seno se thusa mosha go latela ditaelo sentle – e leke pele ga o tswelela!\n\nO dirile sentle go bontsha maikemisetso a a kalo ka ba lelapa la gago.", + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Dira tekanyetsokabo gape - mo lekgetlong leno e dire LE mosha wa gago le lelapa la gago! \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Dumela @field.user_name! Re a go akgola gore o simolotse beke ya gago ya @field.user_name ya boraro. \n\nWorkshop e ntšha e go emetse! A o kgona go bona gore setlhogo sa beke eno ke eng go tswa mo setshwantshong seno?", + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Dira tekanyetsokabo le mosha wa gago le lelapa la gago. \n\nKe selo se se itumedisang e bile se le botlhokwa go se dira le lelapa la gago - go tla tsaya metsotso e ka nna 30.\n\nGo dira tekanyetsokabo mmogo go thusa basha go lemoga gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele/maikemisetso a rona!\n\nDitekanyetsokabo di thusitse malapa a le mantsi tota.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Dumela @field.group_name! Re a go akgola gore o simolotse beke ya gago ya @field.user_name ya boraro. \n\nWorkshop e ntšha e go emetse! A o kgona go bona gore setlhogo sa beke eno ke eng go tswa mo setshwantshong seno?", + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Tlhatlhobang tekanyetsokabo le mosha wa gago le lelapa la gago. Seno se tla gopotsa mongwe le mongwe gore rotlhe re tlhoka go dira ditshwetso tse di thata ka dinako dingwe - mme gone, e re thusa go nna le madi a a lekaneng fa kgwedi e fela e bile e re thusa gore re kgone go fitlhelela mekgele ya rona!\n\nTekanyetsokabo e thusitse malapa a le mantsi tota.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", - "text": "O dirile sentle ka go dirisa @global.parent_app! Gopola gore ke dilo tse dinnye tse di dirang pharologanyo e kgolo.", + "SourceText": "Steps to make a budget", + "text": "Dikgato tsa go dira tekanyetsokabo", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Re lebogela gore o bo o dirisitse @global.parent_app go beeletsa mo go wena le lelapa la gago.\n\nLeka @local.workshop_data.in_text_title mme o kgone go nna le bokgoni jo bo siameng thata jwa go godisa bana!", + "SourceText": "make a budget together with their family", + "text": "dira tekanyetsokabo mmogo le lelapa la bone", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Go akgola go dira pharologanyo. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone kafa O ka dirisang kakgolo ka teng mo lelapeng la gago.", + "SourceText": "Did you have any challenges when making your budget together?", + "text": "A lo nnile le dikgwetlho dingwe fa lo dira tekanyetsokabo ya lona mmogo?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Praise time!", - "text": "Nako ya go akgola!", + "SourceText": "What whas difficult for you about making your budget together?", + "text": "Ke eng se se go thatafaletseng ka go dira tekanyetsokabo ya lona mmogo?", "type": "template", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Fa o bona mosha wa gago, mo akgole ka sengwe se se molemo se a se dirang sentle! \n\nKe leng la bofelo fa o ne o ikakgola kgotsa o akgola mogolo mongwe mo lelapeng la gago? Go leke!", + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Ke ne ke sa batle go bolelela lelapa la me gore ke duelwa bokae.", "type": "template", "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "O dirile sentle thata ka go fetsa @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha. E leke - o tla bona pharoganyo mo tseleng e mosha wa gago a itshwarang ka yone.", + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Ga o tlhoke go bua gore o duelwa bokae kgo; o ka fopholetsa. O ka nna wa re, “mo legaeng leno, re nale @global.currency@global.monthly_income_estimate kgwedi le kgwedi” go na le gore “ke dira @global.currency@global.monthly_income_precise”.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Dumela @field.user_name! Re a go akgola gore o simolotse @global.parent_app ya beke ya bo 4. \n\nWorkshop ya beke eno e ka ga gore o ka oketsa jang ditshono tsa gago tsa go dira gore mosha wa gago a dire se o mo kopang gore a se dire.", + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Fa re dira tekanyetsokabo, re ka nna ra seka ra dumalana gore ke eng se eleng ditlhoko le gore ke eng se eleng dipatlo.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Dumela @field.group_name! Re a go akgola gore o simolotse @global.parent_app ya beke ya bo 4. \n\nWorkshop ya beke eno e kaga gore o ka oketsa jang ditshono tsa gago tsa go dira gore mosha wa gago a dire se o mo kopang gore a se dire.", + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Ditlhoko le dipatlo tsa batho ga di tshwane ka dinako tse dingwe. Go bua ka tsone mmogo go ka go thusa le mosha wa gago go tlhaloganyana, go tlotla dipono tse di sa tshwaneng, le go bona gore lo ka akanyetsana kae.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Bua sentle le wena o ipolelele gore o dira tiro e e molemo. Ga gona selo se se jaaka motsadi yo o itekanetseng, mme re akanya gore o dira sentle!", + "SourceText": "I did not understand what to do.", + "text": "Ke ne ke sa itse gore ke dire eng.", "type": "template", "note": "" }, { - "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", - "text": "Gaise o tshwae sepe go @data.habit.instruct_positively.title @global.parent_points.\n\nE leke gompieno!", + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Ke maswabi go utlwa seno. Ke a itse go ka nna bokete! Goreng re sa e leke gape? Mosha wa gago kgotsa maloko a mangwe a lelapa la gago ba ka ikopanya nao mme ba go thusa!", "type": "template", - "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + "note": "" }, { - "SourceText": "Well done!", - "text": "O dirile sentle!", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "Mosha wa me o ne a sa batle go dira tekanyetsokabo le nna.", "type": "template", "note": "" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", - "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe – go rialo o gatela pele sentle tota.", + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Leka go dira tekanyetsokabo le bagolo ba bangwe mo legaeng la gago pele. Mosha wa gago a ka kgatlhegela se o se dirang. \n\nGo dira tekanyetsokabo go ka bonala go le masisi mme leka go go dira monate – go dire motshameko fa lo ntse lo ipha nako mmogo! Kgotsa o ka leka go dira tekanyetsokabo ya @global.w_money_grandma pele. \n\nGopola go ba akgola fa o feditse!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "O setse o tshwaile go @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - o dira tswelopele e ntle.", + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a lelapa.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" + "note": "" }, { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "A mosha wa gago o nna a go reetsa? Fa go se jalo (jaaka bontsi jwa rona), leba workshop ya beke eno go ithuta ka fa go naya ditaelo tse di siameng go ka thusang ka teng - thata.", + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Re lebogela go bo o arolane le maitemogelo a gago! O dirile sentle ka go akanya ka kafa o ka dirang tekanyetsokabo le go boloka madi mmogo le lelapa la gago. Seno ruri se tla lo thusa tota gore lo direle go fitlhelela mekgele ya lelapa. \n\nLo le mmogo lo ka kgona go fitlhelela dilo di le dintsi!", "type": "template", "note": "" }, { - "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", - "text": "Ditaelo tse di siameng di thusa go bona boitshwaro jo bo molemo ga ntsintsi! \n\nFeleletsa @local.workshop_data.in_text_title go bona dikakantsho tsa gore seno se ka dira jang mo lelapeng la gago.", + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Malapa a le mantsi a a tshwenyegile thata ka ntlha ya madi, bogolo jang fa basha ba nna ba kopa go rekelwa dilo! \n\nFa re dira tekanyetsokabo mmogo, re ka dumalana gore re tla dirisa madi jang LE GORE re tla boloka bokae gore re se ka ra iphitlhela re tshwenyegile e bile re ka kgona go fitlhelela mekgele/maikemisetso a rona re le lelapa.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Kamoso, o ka kgona go tsena mo workshop e ntšha. E tla go thusa go dira workshop ya pele ga eno. \n\nBatsadi ba bangwe ba dirisa app eno fa ba le mo tseleng ya go ya tirong. Ke ka ntlha ya eng o sa dirise app eno fa o na le metsotsonyana e le mmalwa? \n\nRe leboga gape gore o dirisitse @global.parent_app.", + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Dumelang, lotlhe. \n\nGompieno re tlile go tlotla ka tekanyetsokabo ya lelapa. \n\nGo botlhokwa go nna le tekanyetsokabo, mme tota e bile go botlhokwa thata go nna le tekanyetsokabo e e akaretsang mongwe le mongwe mo lelapeng. \n\nFa lo dira tekanyetsokabo mmogo, seno se dira gore lotlhe mo lapeng lo tlhaloganye botoka gore lo ka dirisa madi jang le gore lo ka kgona go boloka bokae, e bile lo ka kgona go dira dithulaganyo tsa gore lo tla boloka madi jang lo le lelapa.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", - "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, go tla bo go na le workshop e ntšha e o tshwanetseng go e dira: o tla bona pharologanyo e kgolo ka go dira diphetogo tse dinnye!", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno. O tlhoka:\n\n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene\n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi\n \nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "First @global.weekly_workshop!", - "text": "Sa Ntlha @global.weekly_workshop!", + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "Tekanyetsokabo ya lelapa e ka thusa @global.w_money_grandma - le WENA!", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Dumela @fields.user_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Go na le dikgato di le nne tsa go dira tekanyetsokabo ya lelapa: \n\nKgato 1: AKANYA\nKgato 2: TLHOPHA\nKgato 3: AGA\nKgato 4: ITHULAGANYE\n\nITHULAGANYE A re tlotleng mmogo ka dikgato tseno.", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Dumela @fields.group_name. @local.workshop_data.in_text_title ya gago e setse e go letile.", + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "O tlhoka: \n- Dipampiri (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le dipene \n- Maje kgotsa dinawa kgotsa sengwe fela se se nang le dibaga tse dintsi tse di ka emelang madi \n\nIphe motsotso go batlana le dilo tseno pele ga o simolola ka kgato ya ntlha.", "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Go ipha nako le mosha wa gago go thusa go aga go tshepana magareng ga lona. \n\nTswelapele ka @global.parent_app ya gago ya mosepele jaanong - wena le lelapa la gago lo tla bona dipholo tse dintle.", + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* dijo \n* metsi & motlakase \n* diaparo \n* diakhaonto \n* peeletso ya TV \n* dilwana tsa go tlhapa \n* salune \n* airtime \n* tuelo ya sekolo \n* sepalangwa \n* inshorense/dipholisi \n* melemo \n* boitlosobodutu/metshameko \n* rente \n* melato \n* kereke", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Re lebogela go bo o lekile thata go nna motsadi yo o botoka. O a ratiwa e bile oa anaanelwa!", + "SourceText": "Think about what we spend money on each month.", + "text": "Akanya gore ke dilo dife tse re dirisang madi go di reka kgwedi le kgwedi.", "type": "template", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "A o setse o iphile nako le mosha wa gago?", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka ditshwantsho tsa dilo tsotlhe tse wena le lelapa la gago le di rekang kgwedi le kgwedi. \n* Kwala fa thoko ga setshwantsho sengwe le sengwe gore selo sengwe le sengwe se ja bokae kgwedi le kgwedi. (Ga go tlhokege go bua dinomore fa e le gore ga o batle go dira jalo.)\n* Tlhakanya gore ke madi a le kana kang a o tshwanelwang ke go a dirisa kgwedi le kgwedi.", "type": "template", "note": "" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\n@local.workshop_data.in_text_title ya gago e setse e go letile!", + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Bontle tota! Lo feditse kgato 1! \n\nA re tsweleleng!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Ga go na go tsaya nako e telele, mme o tla bona tshedimosetso ya botlhokwa. \n\nO dirile sentle go leka go nna motsadi yo o botoka. Kamoso, o ka kgona go tsena mo workshop e ntšha.", + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Tlotlang mmogo ka dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela o sena sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "O dirile sentle go fetsa @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa, go itumelela le go ithuta go nna le bokgoni jo bosha!", + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Gantsi batho ga ba na maikutlo a a tshwanang ka dilo. Fa re bua ka dilo tse re di tlhokang le tse re di batlang, re kgona go tlhaloganyana e bile re ka kgona go dira ditshwetso tse di siameng tsa gore re dirise madi jang.\n\nLebelela lenaane la gago la dilo tse o di rekang mme lo tlotle ka:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse lelapa la lona le ka lekang go dirisa madi a mannye mo go tsone?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Dumela @field.user_name! Mathata a ka tlhagela mongwe le mongwe - go ipaakanya go thusa tota. \n\nWorkshop eno e tla go bontsha gore jang.", + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Akanya kaga dilo tse lo di tlhokang le tse lo di batlang\n\nSE O SE BATLANG: Sengwe se o ka kgonang go tshela ntle le sone\nSE O SE TLHOKANG: Sengwe se o ka se kgone go tshela o sena sone", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Dumela @field.group_name! Mathata a ka tlhagela mongwe le mongwe - go ipaakanya go thusa tota. \n\nWorkshop eno e tla go bontsha gore jang.", + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Lebelela lenaane la gago la dilo tse o di rekang mme lo tlhophe:\n* Ke dilo dife tse o di TLHOKANG tse o ka se kgoneng go tshela ntle le tsone? Goreng?\n* Ke dilo dife tse o di BATLANG tse o ka itumelelang go nna le tsone mme gone tota di se botlhokwa jalo? Goreng? \n* Ke dilo dife tse o ka lekang go dirisa madi a mannye mo go tsone?", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "O ikemiseditse go nna motsadi. Nna motlotlo ka wena - seno ke phitlhelelo e kgolo ka bo yone!", + "SourceText": "Make a budget!", + "text": "Dira tekanyetsokabo!", "type": "template", "note": "" }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Ga re itse mathata a ka tlhaga leng, mme re ka KGONA go ipaakanya! \n\nSimolola workshop ya gago e e latelang go bona gore o ka dira seno jang mmogo le mosha wa gago.", + "SourceText": "Make a budget as one big family!", + "text": "Dirang tekanyetsokabo lotlhe lo le lelapa!", "type": "template", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Go molemo gore o na le rona mo loetong leno la go nna motsadi! \n\nFeleletsa @local.workshop_data.in_text_title mme o ithute tsela e e molemo go tsiboga fa mosha wa gago a go tlhoka thata.", + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Motho a le nosi o tla ithaopela go abelana ka lenaane la gagwe (Fa go sena ope yo o ithaopang lo ka dira lenaane le lesha mmogo) \n* Ipheng dikarolo - bangwe e ka nna bagolo, bangwe e tla nna basha. \n* Dirang tshwetso ya gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sengwe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.) \n* Dirang tshwetso mmogo gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje ao mo godimo ga setshwantsho se lo se takileng. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "A o kile wa buisana le mosha wa gago gore lo tla dira eng fa go tlhaga mathata?", + "SourceText": "Make a budget as a family!", + "text": "Dirang tekanyetsokabo lotlhe lo le lelapa!", "type": "template", "note": "" }, { - "SourceText": "Crisis Examples", - "text": "Dikai tsa Mathata", + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Kwalang fa fatshe gore lotseno lwa lona ke bokae ka kgwedi.\n* Tsaya maje mangwe kgotsa dinawa kgotsa sepe se se tshwantshetsang madi - leo ke lone letseno la lona la kgwedi. \n(Ka sekai: Fa letseno la gago e le @global.currency@local.monthly_income, mme o na le dinawa di le @local.number_of_beans, nawa nngwe le nngwe ke @global.currency@local.bean_value.)\n* Dirang tshwetso gore lo a go dirisa bokae go reka eng, mme lo bo lo baya maje/dilo tseo mo godimo ga setshwantsho seo. \n\nA ga lo tlhomamisege ka tshwetso ya lona? A ga lo kgone go dira tshwetso ya gore ke dilo dife tse lo di “tlhokang” le tse lo di “batlang”? Ga go na bothata!", + "type": "template", + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + }, + { + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Dirang dithulaganyo tsa gore lo ka boloka madi jang gore lo kgone go a dirisa ka nako ya maemo a tshoganyetso le go fitlhelela mekgele/maikemisetso a lelapa la lona!", "type": "template", "note": "" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Kamoso go tla bo go na le workshop @global.parent_app ya bofelo e o ka e dirang. \n\nLeka go e dira @local.workshop_data.in_text_title pele ga o simolola workshop e ntšha. Fa o dira jalo, o ka kgona go dira dithulaganyo tsotlhe tsa bokgoni jwa go godisa bana le go dira tshwetso ya se o batlang go se dira morago ga tsone!", + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "Fa lo ka boloka le fa ele madi a mannye fela a maemo a tshoganyetso mo isagweng - go ka dira pharologanyo fa nako e ntse e tsamaya. \n* Tsenya kgolokwe e e bidiwang “maemo a tshoganyetso”.\n* Tsenya kgolokwe e e bidiwang “mekgele/maikemisetso a lelapa”.\n* Jaanong lekang go abela dilo madi e le gore lo ka boloka bonyenyane kgwedi le kgwedi jwa sengwe le sengwe sa dilo tseno.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "O dirile sentle ka go fetsa @local.workshop_data.in_text_title. Kamoso, o ka kgona go tsena mo workshop ya bofelo ya go akanya ka loeto lwa @global.parent_app la gago le se o ka se dirang mo nakong e e tlang!", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re motlotlo ka mongwe le mongwe mo ditlhopheng tseno, a ga go a nna jalo?", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Dumela @field.user_name! O gaufi le go fetsa di-workshop tsa gago tsa @global.parent_app! Re leboga gape go bo o ikemiseditse ka nako e telele. \n\nWorkshop ya beke eno e kaga go boloka mosha wa rona a sireletsegile, ka bobedi mo mafaratlhatlheng le mo tikologong. E Itumelele!", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo ya lelapa la lona – mme fa lo e dirisa, e tla lo thusa fela thata. Re akanya gore mongwe le mongwe mo lelapeng la lona o tlhoka go akgolwa, a ga go jalo?", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Dumela @field.group_name! Lotlhe lo gaufi le go fetsa di-workshop tsa lona tse @global.parent_app! Re leboga gape go bo o ikemiseditse ka nako e telele. \n\nWorkshop ya beke eno e kaga go boloka mosha wa rona a sireletsegile, ka bobedi mo mafaratlhatlheng le mo tikologong. E Itumelele!", + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "LO DIRILE BONTLE TOTA!!! Lo dirile tekanyetsokabo – tsweetswee ikatise le ba bangwe mo lelapeng la lona - fa lo dumalana ka gore lo tlile go dira dilo jang, seno se tla lo thusa fela thata!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Eno e nnile nako e bokete thata ya go nna motsadi. O tshwanetse go nna motlotlo ka sengwe le sengwe se o se dirileng. \n\nAkanya ka nako yotlhe e o dirileng gore mosha wa gago a nyebe ka yone le tlhokomelo yotlhe e o mo neileng yone. Batsadi ba a gakgamatsa, le wena wa gakgamatsa!", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "A o setse o buile le mosha wa gago ka go tekanyetsokabo ya lelapa la gago?", "type": "template", "note": "" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "O setse o kgonne go ithuta bokgoni jo bontsi jwa go godisa bana mo dibekeng tse di fetileng!\n\nFeleletsa workshop e e latelang go iponela sedirisiwa se se nngwe.", + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Fa o ikutlwa o le nosi kgotsa o imelwa, itse gore ga o nosi. Go nale batsadi mo lefatsheng ka bophara ba ba kgaratlhang jaaka o kgaratlha. \n\nO dira bojotlhe jwa gago letsatsi le letsatsi mme re a go akgola!", "type": "template", "note": "" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "Go boloka mosha wa gago a sireletsegile, go a thusa go tlotla le bone ka tikologo ya gago le maitemogelo a bone a mafaratlhatlha. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone gore o ka dira seno!", + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Go akaretsa lelapa la gago ka ga gore o dirisa jang madi go ka dira gore o efoge go tshwenyega thata mo maikutlong le dikgotlhang. \n\nFetsa @local.workshop_data.in_text_title gore o kgone go thusa balelapa la gago ka go dira tekanyetsokabo le go boloka madi. Tota go motlhofo - o tla bona!", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", + "SourceText": "Hi @fields.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Dumela @fields.user_name! O simolola kgwedi ya gago ya bobedi ya go dirisa @global.parent_app. Kgakgamatso!\n\nMalapa e ka nnang otlhe a kgaratlhisiwa ke mathata a madi, jaanong, beke eno tirelothuto e tlile go go neela didiriswa tse di tla go thusang go baakanyetsa ditlhokego gore o kgone go nna le madi a a ka go fitlhisang bokhutlong jwa kgwedi.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Go dira thulaganyo le mosha wa gago go ka thusa go thibela mathata a le mantsi - leka go dira jalo pele go o tswelela!\n\nO dirile sentle go dirisa @global.parent_app go tshegetsa balelapa la gago.", + "SourceText": "Hi @fields.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", + "text": "Dumela @fields.group_name! O simolola kgwedi ya gago ya bobedi ya go dirisa @global.parent_app. Kgakgamatso!\n\nMalapa e ka nnang otlhe a kgaratlhisiwa ke mathata a madi, jaanong, beke eno tirelothuto e tlile go go neela didiriswa tse di tla go thusang go baakanyetsa ditlhokego gore o kgone go nna le madi a a ka go fitlhisang bokhutlong jwa kgwedi.", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title. Kamoso, go tla bo go na le workshop e ntšha ya go thusa wena le balelapa la gago go dirisana le seemo sepe fela – fa le dira mmogo le ka kgona go dira go le gontsi thata!", + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "text": "A o ikutlwa o tshwenyegile mo maikutlong ka ntlha ya madi? A mosha wa gago o nna a kopa dilo tse o sa kgoneng go di reka? \n\nWorkshop ya beke eno e bua ka madi le ditekanyetsokabo.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Dumela @field.user_name! O dira kgatelopele e ntle tota mo loetong lwa gago lwa botsadi! \n\nGo nna le mosha go raya go nna le mathata a a sa lebelelwang a o tshwanetseng go lepalepana le one. Workshop eno e tla go bontsha gore o lepalepane le one jang.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Batsadi ba le bantsi ba boletse gore go dira tekanyetsokabo go ne ga dira gore go nne le kagiso mo lelapeng - le wena go ka go direla jalo.\n\nRe santse re go lebogela go nna motsadi yo o ikemiseditseng.", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Dumela @field.group_name! O dira kgatelopele e ntle tota mo loetong lwa gago lwa botsadi!\n\nGo nna le mosha go raya go nna le mathata a a sa lebelelwang a o tshwanetseng go lepalepana le one. Workshop eno e tla lo bontsha lotlhe gore lo lepalepane jang le one.", + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "text": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go thusa go tlhoma melao ya lelapa e e dirang.", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Go ikemisetsa ga gago go rotloetsa mongwe le mongwe. Kgoba makgwafo mme o tswelepele!", + "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text": "Gantsi ga go motlhofo go reka dilo tsotlhe tse o di tlhokang kgwedi le kgwedi. Malapa a le mantsi a na le bothata jono! \n\nGo akaretsa le @global.w_money_grandma- tla re bone:", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Ka basha, le mo botshelong, mathata a a sa lebelelwang a nna gone mme re tshwanetse go lepalepana le one. \n\nSimolola workshop e e latelang go ithuta gore o ka samagana jang le mathata ano ka katlego.", + "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text": "@global.w_money_grandma: \"Ke ntse ke godisa ditlogolo tsa me, @global.w_money_teen_girl le @global.w_money_teen_boy, go tloga fa e sale batsadi ba bone ba tlhokafala ba sa ntse ba le bannye. Gantsi re na le mathata a madi ka gonne ke amogela madi a mannye.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "O mo tseleng e e siameng ya go simolola go rarabolola mathata mmogo le mosha wa gago! \n\nFeleletsa @local.workshop_data.in_text_title mme o iponele bokgoni jo bongwe jwa botlhokwa jwa go godisa bana!", + "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", + "text": "@global.w_money_grandma: “Ke tshwenyegile mo maikutlong tota. Ga ke na madi ape a a setseng. Jaanong nna le basha ba me re lwela dilo tse ba di batlang – gape.\"", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "A o setse o lekile dikgato tse nne tsa go rarabolola bothata le mosha wa gago? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE!", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Lo dirile bontle, lo feditse dikgato tse 3 tsa ntlha! \n\nA re boneng gore @global.w_money_grandma o ne a rulaganya go dirisa madi a gagwe jang, jaaka re dira fano:", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go e fetsa @global.parent_app pele ga o simolola workshop e ntšha. Go itse go rarabolola mathata a lona mmogo go tla thusa mo maemong a le mantsi!", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "“Ke batla gore ditlogolo tsa me di nne le bokamoso jo bo siameng, ke fela gore ga ke itse gore ke tla bona kae madi. Batho ba ba pelotshetlha ba ba adimisanang madi ba kotsi e bile ba ba batla morokotso montsi tota. \n\nKe tshwanetse go boloka madi, mme go bonala go ka se kgonege!”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go go thusa go boloka mosha wa gago a sireletsegile.", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "“Maikemisetso a me ke gore setlogolo sa me sa mosimane se kgone go ya kwa sekolong se segolwane le gore setlogolo sa me sa mosetsana se kgone go fitlhelela maikemisetso a go ya yunibesithi. Nka kgona jang go boloka madi a mantsi ke amogela madi a mannye jaana?”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Dumela @field.user_name! Beke e ntšha, workshop e ntšha! Ithute go baya melao ya mo gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e latele.", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "“Ke a itse - a re simololeng go ithulaganya! Sa ntlha, e re ke dire tekanyetsokabo – ke ithulaganye gore nka boloka madi jang. Ke tla simolola pele ka go nna ke boloka madinyana a ke nang le one – e bile ke tla ikwadisa mo setlhopheng sa go boloka le go adimisa madi.”", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Dumela @field.group_name! Beke e ntšha, workshop e ntšha! Ithute go baya melao ya mo gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e latele.", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "“E bile ke tshwanetse go bua le ditlogolo tsa me gore ke dilo dife tse re ka dirisang madi a le mannye mo go tsone beke le beke. Ba tla nthusa go bona gore ke dilo dife tseo re di batlang mme tota e se tse re di tlhokang.”", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Ka dinako tse dingwe go utlwala e kete basha ba gago ba santse ba sa itumela le fa o lekile ka moo o kgonang ka gone. Gopola gore o dira tiro e ntle, le gore go tlile go nna le dinako tse di monate le bone!", + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "Dingwaga di le mmalwa morago ga moo:\n\n“Bona fela, re kgonne go fitlhelela maikemisetso a rona! Ga ke a ka ka adima madi mo ditsaleng tsa me kgotsa mo batho bano ba ba adimisanang madi ba ba pelotshetlha. Go boloka madinyana beke le beke go nthusitse gore ke kgone go duelela @global.w_money_teen_boy kwa sekolong se segolwane e bile ke kgonne go boloka madi mangwe gore ke kgone go duelela @global.w_money_teen_girl kwa yunibesithing. Ruri ke ikutlwa ke le motlotlo gore ke kgonne go dira seno.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Re lebogela gore o dirisitse @global.parent_app le go ikemisetsa go tsaya loeto lwa gago lwa go nna motsadi. \n\n@local.workshop_data.in_text_title e tla go bontsha kafa o tshwanetseng go tlhoma melao ka teng ka tsela e e tla thusang mosha wa gago go e tlhaloganya le go e latela botoka.", + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Go na le lebaka le lengwe la botlhokwa le le dirang gore go boloka madi go nne botlhokwa: maemo a tshoganyetso! @global.w_money_grandma o ne a lemoga seno nako nngwe:", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "O gaufi le go nna le sedirisiwa sengwe sa botsadi! Feleletsa @local.workshop_data.in_text_title, baya molao o le MONGWE o o motlhofo le o o ka kgonang go latelwa le mosha wa gago, mme o bone dilo di fetoga!", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Bosigo bongwe go ne ga tla setsuatsue se se maswe mme sa senya marulelo a ntlo ya me. sengwe le sengwe mo ntlong se ne se tsiname mo metsing. Ke ne ka tshwanelwa ke go batla madi ka lepotlapotla gore ke baakanye marulelo. Ke ne ke tlaletswe.”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "A o kgonne go baya molao mmogo le mosha wa gago?", + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Iphe nako ya go itumelela se o kgonneng go se fitlhelela le fa gone go na le dilo tse dintsi tse o tshwanetseng go di dira letsatsi le letsatsi.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go fetsa @global.parent_app pele ga o simolola workshop e ntšha. Ga e kitla e tsaya nako e telele mme e tla thusa mosha wa gago go latela melao botoka!", + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Kgang – Eo ga e a dira... \n* Ikatiso ya tekanyetsokabo\n* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di sa dirang...\n* Motlotlo le ditlhopho tsa go boloka\n* Ikatiso ya tekanyetsokabo\n* Didirisiwa: Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi\nAKANYA - TLHOPHA - AGA - ITHULAGANYE\n * Dikakantsho tsa katiso ya legae", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, workshop e ntšha e tla go thusa go itse gore ke leng basha ba bontsha maitshwaro a a maswe (kgotsa a a molemo)!", + "SourceText": "Step 1: THINK", + "text": "Kgato 1: AKANYA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Dumela @field.user_name! O simolola kgwedi ya bobedi o dirisa @global.parent_app. Bontle! \n\nMalapa a mantsi a kgaratlha ka dikgang tsa madi, ka jalo, workshop ya beke eno e tla go naya sedirisiwa se se tla go thusang go rulaganya ditshenyegelo tsa gago gore o nne le madi a a lekaneng go go tsweledisa le kgwedi.", + "SourceText": "What do we spend on now?", + "text": "Re reke eng gone jaanong?", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Dumela @field.group_name! O simolola kgwedi ya bobedi o dirisa @global.parent_app. Bontle! \n\nMalapa a mantsi a kgaratlha ka dikgang tsa madi, ka jalo, workshop ya beke eno e tla go naya sedirisiwa se se tla go thusang go rulaganya ditshenyegelo tsa gago gore o nne le madi a a lekaneng go go tsweledisa le kgwedi.", + "SourceText": "THINK Activity", + "text": "Ikatiso ya GO AKANYA", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "A o ikutlwa o tshwenyegile mo maikutlong ka ntlha ya madi? A mosha wa gago o nna a kopa dilo tse o sa kgoneng go di reka? \n\nWorkshop ya beke eno e bua ka madi le ditekanyetsokabo.", + "SourceText": "Step 2: CHOOSE", + "text": "Kgato 2: TLHOPHA", "type": "template", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Fa o ikutlwa o le nosi kgotsa o imelwa, itse gore ga o nosi. Go nale batsadi mo lefatsheng ka bophara ba ba kgaratlhang jaaka o kgaratlha. \n\nO dira bojotlhe jwa gago letsatsi le letsatsi mme re a go akgola!", + "SourceText": "Talk together about needs and wants", + "text": "Tlotlang mmogo ka dilo tse lo di tlhokang le tseo lo di batlang", "type": "template", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "A o setse o buile le mosha wa gago ka go tekanyetsokabo ya lelapa la gago?", + "SourceText": "CHOOSE Activity", + "text": "Ikatiso ya GO TLHOPHA", "type": "template", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Go akaretsa lelapa la gago ka ga gore o dirisa jang madi go ka dira gore o efoge go tshwenyega thata mo maikutlong le dikgotlhang. \n\nFetsa @local.workshop_data.in_text_title gore o kgone go thusa balelapa la gago ka go dira tekanyetsokabo le go boloka madi. Tota go motlhofo - o tla bona!", + "SourceText": "Step 3: BUILD", + "text": "Kgato 3: AGA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Batsadi ba le bantsi ba boletse gore go dira tekanyetsokabo go ne ga dira gore go nne le kagiso mo lelapeng - le wena go ka go direla jalo.\n\nRe santse re go lebogela go nna motsadi yo o ikemiseditseng.", + "SourceText": "Make your own budget", + "text": "Itirele tekanyetsokabo", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go thusa go tlhoma melao ya lelapa e e dirang.", + "SourceText": "BUILD Activity", + "text": "Ikatiso ya GO AGA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Gopola – beke eno ke kaga WENA! Re solofela o itlhokomela sentle. O tshwanelwa ke seno!", + "SourceText": "Step 4: PLAN", + "text": "Kgato 4: ITHULAGANYE", "type": "template", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Siimolola workshop e ntšha ya @global.parent_app gotlhelele kamoso. O tla bona dipholo tse di molemo!", + "SourceText": "Emergencies and family goals", + "text": "Maemo a tshoganyetso le mekgele/maikemisetso a lelapa", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "A o setse o boleletse molekane wa gago @global.parent_app kaga sediriso? Go simolola kamoso, o ka simolola go dira di-workshop tsa @global.parent_app mmogo!", + "SourceText": "PLAN Activity", + "text": "Ikatiso ya GO ITHULAGANYA", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "" }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Go latlhegelwa ke tsala kgotsa mongwe yo o mo ratang go boima. Go se ikgatelele le go dira dilo tse di go thusang go kgotlhelela mo nakong e e boima go ka thusa le mosha wa gago.", + "SourceText": "What are your family savings goals?", + "text": "Lelapa la lona le ipeetse mekgele efe ya go boloka madi?", "type": "template", "note": "" }, { - "SourceText": "Find a support group", - "text": "Batla setlhopha-tshegetso", + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Ke mekgele/maikemisetso a mentle tota! \n\nKe mokgele/maikemisetso a montle tota! Fa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", "type": "template", "note": "" }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "- Kutlobotlhoko e ka re ama dibeke kgotsa dikgwedi kgotsa dingwaga. Ga go tlhokege gore o ikutlwe botoka ka potlako.\n- Bona dijo le go robala go go lekaneng. Go boima go tlhokomela basha o lapile ebile o tshwere ke tlala.\n- Kwala dilo tse di dirang gore o ikutlwe o le botoka mme o di dire.\n- Leka go dire selo se le sengwe se se bonolo go iketla le mosha wa gago ka letsatsi, mme o itirele le wena.\n- Go siame go se ikutlwe sentle mme go siame go lela. O seke wa ikatlhola, ga se phoso ya gago.\n- Go phela go na le tsholofela le morgago ga tatlhego. Leka go kgatlhegela dilo tse di bonolo, mme o tseye motsostso go dira sengwe sa go itumedisa le mosha wa gago.\n- Batla motho yo mogolo a le mongwe kgotsa ba ba bedi ba ba ka go tshegetsang, utlwelela, le go bua le bona.", + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Fela jaaka @global.w_money_grandma, le rona re na le mekgele/maikemisetso ao re batlang lelapa la rona le e fitlhelela. Fa o boloka madinyana a se kae kgwedi le kgwedi, le wena o ka kgona go e fitlhelela!", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "- Go bua le mongwe yo a ka kgonang go go tshegetsa le go go reetsa go ka go thusa. \n- Go ka thusa go tsena mo setlhopeng sa batho ba ba kileng ba latlhegela ke mongwe.\n- Ga go na motho yo a senang diphoso. Go siame go bua ka dinako tse dintle le tse di bosula.", + "SourceText": "What are your family savings goals?", + "text": "Lelapa la lona le ipeetse mekgele/maikemisetso afe a go boloka madi?", "type": "template", "note": "" }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Basha ba mekamekana le tatlhegelo ka tsela tse di farologaneng jaaka bagolo. O ka ba thusa go tlhaloganya seemo le maikutlo a bona ka go dira lefelo le le babalesegileng mo le ka buang le go amogela teng.", + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "Ke mokgele/maikemisetso a montle tota! \n\nFa re dira tekanyetsokabo e e siameng e bile re rulaganya dilo mmogo, re ka fitlhelela mekgele/maikemisetso a rona e bile re tla ikutlwa re le motlotlo!", "type": "template", "note": "" }, { - "SourceText": "Be honest", - "text": "Nna le nnete", + "SourceText": "Let's talk about this story.", + "text": "A re bueng ka kgang eno.", "type": "template", "note": "" }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "- Bolela mosha wa gago gore mongwe o tlhokafetse- nako nngwe ga ba temogele.\n- Go bolelela mongwe ke thulaganyo, eseng tiragalo. O ka tshwanele ke go ba bolelela gape le gape.\n- Dirisa mafoko a ba a tlhaloganyang.\n- fa basha ba bannye ba sa tlhaloganye gore leso ke eng, thusa ka go ba tlholesetsa gore motho yo ba mo ratang ga a sa boa. leka go se e bitse 'go robala' kgotsa 'leeto'.\nBasha ba bagolo ba ka tlhaloganya gore leso ke eng, gongwe ba ka palelwa ke go abelana kgotsa go amogela maikutlo a bona.\n- Basha ba ka fetola ka tsela tse di farologaneng. Go lela, go dira modumo, go se dumela kgotsa go didimala gotlhelele. tsotslhe tse di siame. Ba bolele gore o na le bona.\n- Letlelela dipotso le go buisana. Nna le nnete. Go siame gore ga re itse.", + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "@global.w_money_grandma o ne a senyediwa ke setsuatsue. \n\nMme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "- Basha ba ka nna le bohutsana, go selekega, go se tlhalognaye kgotsa go se dumele, go swa bokidi, go bobola kgotsa go nna le ditlhabi, ditoro tsa poifo kgotsa mathata kwa sekolong. Mosha wa gago a ka bontsha a itumetse mme a hutsafetse. Ba ka ikgogela morago mme ba nna le nako e ntsi le ditsala. ba ka bontsha le maitsholo a a sa tlwaelegang kgotsa a a kotsi. Se se ka tswa se sa dire tlhaloganyo mo go wena, mme tsotslhe tse di tlwaelegile.\n-Basha ba ka ikutlwa okare ke ohoso ya bona- gongwe ba ba tshetse ka mogare kgotsa ba ne ba sa itshola sentle. Gatelela gore ga go phoso e ba e dirileng.", + "SourceText": "Let's think about this story.", + "text": "A re akanyeng ka kgang eno.", "type": "template", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "- Tlhalosa gore tatlhegelo e tla le maikutlo le ditlhagiso. Bontsha basha ba gago gore ba ratiwa le gore ba tlhokomelegile, mme o ba rotloetse go neelana ka maikutlo a bona ka go bua,go kwala kgotsa go thala.\n- Fa go na le setlhopa sa tshegetso se mosha wa gago a ka nnang karolo ya sona, seno se ka thusa.\n- Fa mosha a bua ka go ikutwisa botlhoko kgotsa go ipolaya, kopa thuso go tswa go mongwe ka potlako.\n- Fa o ka kgona, dira mekgwatlwaelo ya lona ya letsatsi, seno se ka gomotsa basha.\n- Go ka thusa basha go nna karolo ya tirelo tsa setso tse di tsamaisang le leso - go tlhopa pina kgotsa go bua sengwe.\n- Go fetsa metsotso e mmalwa ka letsatsi o lebane le mosha wa gago go ka mo thusa gore a ikutlwe a bolokesegile le go nna le nako ya go iketla kgotsa go bua ka dilo tse di mo tshwenyang.", + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "@global.w_money_grandma o ne a senyediwa ke setsuatsue.", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Go latlhegelwa ke mongwe yo o mo ratang go ka tlisa maikutlo a bokete. Fano ke dintlha tse mmalwa tse di ka thuang go nna mo monaganong.", + "SourceText": "What other emergencies could come up for your family?", + "text": "Mme gone, ke maemo afe a mangwe a tshoganyetso a a ka nnang a re diragalela?", "type": "template", "note": "" }, { - "SourceText": "Ask for help", - "text": "Kopa thuso", + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Maemo a tshoganyetso a ka diragalela lelapa lengwe le lengwe. Go boloka madi GO SA LE NAKO gore re tle re a dirisetse maemo ano a tshoganyetso go re thusa gore re se ka ra iphitlhela re tlaletswe e bile re gateletswe mo maikutlong fa a tlhaga!", "type": "template", "note": "" }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "- Kopa mongwe yo o mo tshepang thuso- dijo kgotsa tlhokomelo ya bana e ka thusa. O ka tlhoka ditokomane go lefa, bana kgotsa tetlelesego ya tirelo.\n-Nako nngwe batho ba leka go tsaya madi kgotsa lefa la motho yo o mo kutlobotlhokong. Batlisistsa ka ditokelo tsa gago.", + "SourceText": "Let's talk about different ways we can save.", + "text": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", "type": "template", "note": "" }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "-Go laela go boima. Dira se se siametseng wena le mosha wa gago.\n- Malapa,basha le batsadi ba na le diphoso. Fa mongwe a tlhokofetse, go siame go bua ka dilo tse dintle le tse di bosula tse re di gopolang.\n- Go ka thusa go kwalela moswi lekwalo kgotsa go mo direla setshwantsho.\n- Bangwe ba dira tirelo kgotsa dijo tse di rileng go keteka moswi le go mo laela.\n- Go ka thusa go dira lebokoso la megopolo,go baya dilo tse gopotsang wena le mosha wa gago ka ene.\n- Go ka thusa go bua ka motho yoo fa o mo naganne.", + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Tlotlang mmogo: \n* Lo ka boloka madi ka ditsela dife tse di farologaneng? \n* Ke eng seo se ka nnang molemo le seo se ka se nneng molemo sa mokgwa mongwe le mongwe wa go boloka madi? \n\nFa o tlhaloganya mokgwa mongwe le mongwe sentle, seno se tla go thusa gore o dire tshwetso ya gore ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona. \n\nMokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", "type": "template", "note": "" }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Kwa bokhutlong jwa letsatsi, iphe motsotso wa go: \n\n* Bua le mosha wa gago ka selo se le nosi sa go ijesa monate ka seo ba se dirileng. \n* Ikakgole fa o dirile sengwe se le nosi se sentle gompieno. \n* O naledi!", + "SourceText": "Let's think about different ways we can save.", + "text": "A re bueng ka mekgwa e mengwe e e farologaneng e re ka e dirisang go boloka madi.", "type": "template", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Botsanang gore, “Ke eng se se go itumedisitseng gompieno?”\n* Botsanang gore, “Ke bothata bofe jo o kopaneng le jone gompieno?”\n* Botsanang gore, “Nka go thusa jang?”\n* Lekang go dira seno mmogo letsatsi le letsatsi; e ka nna ka nako ya fa lo ja dijo tsa maitseboa mmogo kgotsa pele ga lo ya go robala.", + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Go na le mekgwa e e farologaneng e re ka e dirisang go boloka madi: kwa gae, go reka dilo tse re ka di rekisang moragonyana, kwa bankeng kgotsa mo setlhopheng sa go boloka madi.\n\nAkanya ka dilo tse di molemo le dilo tseo di seng molemo tsa mokgwa mongwe le mongwe wa go boloka madi.", "type": "template", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Ga go kgonege gore o nne o ntse o tsere loeto, mme o ka nna wa lora ka metlha! Botsa mosha wa gago dipotso tseno:\n* O ka rata go tsaya loeto lwa go ya kae? Wa go tsamaya lobaka lo lo kae? O ka paka eng? O ka dira eng mo loetong lwa gago? O tla bona eng?\n* Lebelelang mmapa mmogo kgotsa lo o thale. \n * Tlhopha naga e mosha wa gago a iseng a e utlwalele mme lo ithute go le gontsi ka naga eo.", + "SourceText": "What is the best savings option for your family?", + "text": "Ke mokgwa ofe wa go boloka madi o o siametseng lelapa la lona?", "type": "template", "note": "" }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Wena le mosha wa gago lo ka rulaganya lenaane la baeng la batho ba ba itsegeng ba o ka ratang ba nne gone ko moletlong wa gago. Mongwe le mongwe wa lona a ka nna le batho ba le batlhano – e ka nna ba kgale kgotsa ba metlha ya gompieno. O ka laletsa mang? Le gore a baeng ba gago ba tla utlwana?", + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Mokgwa mongwe fela o lo o tlhophang o tla thusa lelapa la lona gore le simolole go dira dilo ka tsela e e siameng!", "type": "template", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Akanya ka dipolelwana tse tharo ka ga wena. Tse pedi di tshwanetse go nna tsa nnete mme e nngwe e nne ya maaka.\n* Go ka nna ga thusa go akanya ka dikeletso, ditoro, maitemogelo a ko sekolong, tse di rategang kgotsa tse di sa rategeng. Sekai: Ke tlhoile dipanana, serutwa se ke se ratang ke saense, mme ke eletsa e kete nkabo ke kgona go opela. \n* Di bolelele mosha wa gago mme o ba kope go fopholetsa gore ke efe e e leng maaka. \n* A ba fopholeditse ka nepo? A o ne o maketse?\n* Jaanong ba kope ba dire se se tshwanang. A lo ithutile sengwe se sesha ka yo mongwe?", + "SourceText": "Caring for yourself is so essential.", + "text": "Go itlhokomela go botlhokwa thata.", "type": "template", "note": "" }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Bolelela mosha wa gago sengwe sa fa o ne o le mosha. Ke dilo di feng tse di neng di seo ka nako eo? Difouno tse di nang le inthanete? O ne o dirang go ijesa monate? O ne o tshwenyegile ka eng? O seka wa tshwenyega fa ba sa go bolelele sepe fa o botsa – sa botlhokwa ke gore ba reetse mme ba gopole. Nako tse dingwe basha ba rona ba lebala gore batsadi ba bone le bone ke batho!", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle. Tswelelang lo dira tiro eno e e molemo.", "type": "template", "note": "" }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Akanya ka maatla a a sa tlwaelegang. Sekai, go ya gongwe fela ka ponyo ya leitlho, go busetsa nako morago, go buisa megopolo. \n* Botsa mosha wa gago jaana, “Fa o ka bo o na le maatla a a sa tlwaelegang a go […], o ne o tla a dirisa jang?”\n* Ba kgothaletse go taya maatla a bone a a sa tlwaelegang leina le go a diragatsa. \n* Jaanong letla mosha wa gago go go tlhophela maatla a a sa tlwaelegang.\n* Netefatsa gore o diragatsa maatla a gago a a sa tlwaelegang, le wena!", + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Ikatiso ya kwa gae ya beke eno ke go akgola mosha wa gago gangwe mo letsatsing. E tlile go tsaya fela metsotswana e le 10!", "type": "template", "note": "" }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Nna le puisano le mosha wa gago ka selo se ba se ratang.\n\nE ka nna sengwe le sengwe se ba tlhophang go bua ka sone: metshameko, ditsala, mmino, batho ba ba tumileng...\n\nLeka go reetsa mosha wa gago mme o mo neele sebaka sa go bua.", + "SourceText": "Your goal was to praise your teen.", + "text": "Mokgele wa gago e ne e le go akgola mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Tlhopha moanedi wa polelo go simolola go itlhamela polelo\n* Bareetsi ba polelo ba ka nna ba go tsena ganong ka lefoko ka nako epe fela.\n* Moanedi wa polelo o tlhoka go tsenyeletsa lefoko leo mo polelong ya gagwe.\n* Fa polelo e fedile, leka moanedi wa polelo yo o farologaneng!", + "SourceText": "Did you have a chance to praise your teen this week?", + "text": "A o nnile le tshono ya go akgola mosha wa gago mo bekeng eno?", "type": "template", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Akanya ka maemo a mararo a a sa tshwaneng. Sekai, go kgweetsa koloi, go kgweetsa mokoro kgotsa go fofisa sefofane.\n* Di bolelele mosha wa gago o bo o mmotsa gore, “Ke efe e o ka e ratang?”\n* Ba botse gore goreng?\n* Jaanong akanya ka maemo a mangwe gape a le mararo kgotsa kopa mosha wa gago go go direla jalo.", + "SourceText": "Yes", + "text": "Ee", "type": "template", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Botsanang dipotso. E ka nna dipotso dingwe le dingwe fela ka ga dilo tse o di ratang kgotsa se o se dirileng gompieno.\n* Molawana nosi fela ke gore o ka se arabe ka “Ee”, “Nnyaa” kgotsa “Gongwe”.\n* O ka kgona go tsaya lobaka lo lo kae? O ka itirela dikarabo tse di kgatlhang jang?\n* Refosanang mme lo tshameke gape!", + "SourceText": "No", + "text": "Nnyaa", "type": "template", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Motho wa ntlha a re, “Ka Lamatlhatso, ke ya kwa... (s.k., ke ya kwa phakeng)”\n* Motho wa bobedi o tlatsa wa ntlha ka gore, “Ka Lamatlhatso, ke ya kwa phakeng le... (s.k., ke etela tsala ya me e kgolo).\n* Motho mongwe le mongwe o tlatsa yo o sa tswang go feta, ba leka go akanya ka dilo tsotlhe tse di itumedisang go ka di dira ka Lamatlhatso.", + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Go ka nna thata ka dinako tse dingwe go gakologelwa go akgola basha ba rona. Nako e e tlang fa o ipha nako mmogo le mosha wa gago, leka go akanya ka selo se le sengwe se o ka ba akgolelang sone. O ka nna wa re, “Ke lebogela gore o iphile nako le nna!”.", "type": "template", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Simolola polelo ka “Ga twe e rile....”\n* Letla mosha wa gago go itirela polelwana e e latelang.\n* Morago ga moo itirele polelwana.\n* Refosanang go fitlhelela lo nna le polelo e e ntshwa e e gakgamatsang.\n* Netefatsang gore lo khutlhisa polelwana ka ntlha e e molemo.\n* Botsa mosha wa gago gore ke karolo efe e a e ratileng thata ya polelo!", + "SourceText": "Well done - great job for remembering!", + "text": "O dirile sentle - o dirile tiro e ntle wa gopola!", "type": "template", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "* Botsa mosha wa gago gore ke mofuta ofe wa dijo tse a tla ratang go di ja. \n* Di baakanyeng mmogo! \n* Ba letle go refosanya go nna moapei mogolo – ba etelela pele, mme o latela ditaelo tsa bone. \n* O ka nna wa ba thusa go dira tekanyetsokabo ya ditswaki! \n\nGa o akanye gore seno se ka dira? Kopa mosha wa gago gore BA KA rata lo dira eng mmogo. Ba letle go etelela pele. Iketle. Itumele.", + "SourceText": "How did your teen respond?", + "text": "Mosha wa gago o tsibogile jang?", "type": "template", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Tlhama go bina go le mmalwa ga dipina tse di ratiwang ke mosha wa gago. \n* Motho a le nosi o a bina mme ba bangwe botlhe ba a mo etsisa. \n* Refosanang ka go etelela pele. \n* Diragatsang seno fa pele ga ba lelapa!", + "SourceText": "Surprised", + "text": "O maketse", "type": "template", "note": "" }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Motshameko ono o ka tshamekiwa ka bobedi kgotsa le batho ba le bantsi mo setlhopheng.\n* Emang lo lebane kgotsa mo kgolokweng. \n* Motho a le nosi o etelela pele mme ba bangwe botlhe ba a mo etsisa, ba leka go suta ka nako e le nngwe le moeteledipele.\n* Netefatsa gore moeteledipele o suta ka iketlo moo go lekaneng gore mongwe le mongwe a mo latele! Bina ka tsela ya gore go sute mmele otlhe ka selekanyo se se farologaneng.\n* Morago ga sebaka, yo mongwe e nne ene a etelelang pele. Naya mongwe le mongwe tshono ya go etelela pele.\n * Leka seno go sena baeteledipele!", + "SourceText": "Happy", + "text": "O itumetse", "type": "template", "note": "" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Akanya ka botswerere jo bosha jo lo ka bo ithutang mmogo le mosha wa gago. Sekai, go boloka kgwele e le mo moweng kgotsa mo leotong, thefosano, go dira sopo?\n * Refosanang ka go leka bokgoni jo bosha.\n * Netefatsa gore lo a akgolana, mme lo leke go ithuta le go tshameka mmogo!", + "SourceText": "My teen did not like it", + "text": "Mosha wa me ga a rata", "type": "template", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Tlang ka mefuta e meraro ya go ikatisa mmele e lo ka e dirang mmogo. Sekai, go tsamaya, go tshematshema, kgwele ya dinao kgotsa go bina.\n * Tlhopha e le nngwe mmogo mme lo e leke. \n * Fa ka bobedi lo e rata, dirang tshwetso ya gore lo tlile go e dira kgapetsa ga kae. Gangwe kgotsa gabedi ka beke? Moso mongwe le mongwe?\n* Lo akanyeng mmogo ka ditsela tsa go e dira monate le go feta. A o ka kgona go taboga go ya bokgakaleng jo bo rileng? Refosanang ka go nna bakaedi? Kgothatsanang ka tuelo e nnye ya mahala?", + "SourceText": "I do not know", + "text": "Ga ke itse", "type": "template", "note": "" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Motho wa ntlha ke ene a tlhophang kgotsa a opelang pina.\n * Mongwe le mongwe o tshwanetse go fopholetsa leina la pina (go e dira thata ba ka fopholetsa moopedi).\n * Wa ntlha go e fopholetsa sentle e nna ene moeteledipele yo o latelang.", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Gopola, go tsaya nako gore mosha wa gago a tlwaele go go bona o mo akgola. Fa o ntse o ipha nako e ntsi le bone, go tlile go nna go tokafala!", "type": "template", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Motshameko ono o botoka fa o na le bobotlana batho ba le 3.\n * Simolola mo teng ga kgolokwe mme o bo o fetisa “thwantsho” e le nngwe go dikologa kgolokwe (kgotsa go “opa diatla” fa o sa kgone go thwantsha).\n * O “thwantsha” gangwe go latlhela “thwantsho”, le gangwe go e tshwara. Leba motho yo o mo latlhelelang yone. \n * Letlhakore (godimo, tlase, tlhamaletseng, kgogoropo, dikologang fa fatshe) le maatla (thata, bonolo, magareng) a o thwantshang ka one a tshwanetse go ama tsela e motho a e tshwarang ka teng. \n * O ka busetsa morago “thwantsho”, wa e latlhela mo moweng, le go e tshwara ka makgetlo a le mmalwa pele ga o e fetisa. \n * Fa mongwe le mongwe a setse a tshwara seno, o ka simolola go suta go dikologa phaposi, o ntse o latlhela “thwantsho”. \n * A o ka e latlhela kafa tlase ga leoto? Mo mokotleng? Mo godimo ga tlhogo? Go kgaosetsa phetiso ya yone? Ijeseng monate ka “thwantsho monwana”!", + "SourceText": "Well done for observing how your teen felt; keep it up!", + "text": "O dira sentle go bona gore mosha wa gago o ikutlwa jang; tswelela pele o dira jalo!", "type": "template", "note": "" }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Tlhophang motshameko kgotsa ikatiso e lo ka e dirang mmogo. Dirang tshwetso ka thulaganyo. A lo tlile go dira seno letsatsi le letsatsi? Ka lobaka lo lo kae? \n\nE lekeng beke yotlhe. Kwa bofelong jwa beke, wena le lelapa la gago ipotseng dipotso tse di latelang:\n * Go tsamaya jang? \n * Lo ikutlwa jang kwa tshimologong ya beke? \n * Lo ikutlwa jang kwa bofelong jwa beke? \n * Ke eng se re ka se dirang ka tsela e e farologaneng beke e e latelang?", + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Go a direga - nna pelotelele. Netefatsa gore o nna o ipha nako le mosha wa gago, gore ba bone boleng jwa pono ya gago le e leng go feta. Fa o ba akgola go tswa pelong, o tla bona mesola e se kgale!", "type": "template", "note": "" }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Refosanang ka go “etelela pele”. Bua dipolelwana tsa matseno go tsenyeletsa batho botlhe. Mme yo o “etelelang pele” o tla naya taelo mme mongwe le mongwe a dire tiro ka bonako jo bo kgonegang:\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tshwara sengwe se se khibidu.” \n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Tlolela ko godimo le ko tlase ga lesome.”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Go nale molelo mo thabeng!” \n* Mmogo: “Taboga, taboga, taboga!”\n* Moetapele: “Baya ditlhako mo di nnang teng.”", + "SourceText": "No problem - try to observe how they respond the next time!", + "text": "Ga gona bothata - leka go bona gore ba tsiboga jang mo nakong e tlang!", "type": "template", "note": "" }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Motshameko ono o botoka fa o tshamekiwa ke batho ba feta ba le 2.\n * Motho a le nosi o itira e kete o dira sengwe - Sekai, go kama moriri kgotsa go apaya dijo tsa maitseboa. \n* Motho yo mongwe o botsa gore, “O dirang?”\n* Motho wa ntlha o tlhoka go bua sengwe se se sa amaneng ka gope le go kama moriri, Sekai, “Ke bofa ditlhako.” \n* Motho wa bobedi jaanong o simolola go itira ekete o bofa ditlhako tsa gagwe go fitlhelela motho yo mo ntshwa a botsa gore, “O dirang?” \n\nKarabo e tshwanetse ka metlha ya nna e e farologaneng go na le se o se dirang!", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "O tlhoka go akgolwa, le wena. Re leboga gape gore o dirisitse @global.parent_app. Go a bontsha gore tota o a kgathala!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "* Tshikinyang matsogo a lona a molema mo moweng ga 8 fa lo ntse lo bala go fitlha go 8.\n* Dirang seno ka bonako le kwa godimo ka moo go kgonegang.\n* Boeletsang seno ka matsogo a lona a mangwe. Boeletsang seno ka maoto a lona ka bobedi.\n* Dirang seno makgetlo a le 7, morago ga moo a le 6 mme lo tswelele go fitlhelela lo fitlha ko go 1.\n* Mongwe le mongwe o goeletsa a re “Koko e e sa utlweng” ba bo ba diragatsa go bina ga bone go go gaisang ga koko e e sa utlweng!", + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Go akgolwa ke selo se se botlhokwa thata fa o godisa bana.\n\nFa re akgola bana ba rona fa ba dirile sengwe sentle, ba tla nna ba tokafatsa thata!", "type": "template", "note": "" }, { - "SourceText": "Quick Parenting Tips", - "text": "Ditlhababotlhale tsa go Godisa Bana tsa ka Bonako", + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Dumelang lotlhe. \n\nGompieno re tlile go bua ka go akgola. \n\nGo botlhokwa go akgola bana ba rona fa ba dirile bontle ka gonne fa re dira jalo, ba tla tswelela ba tokafatsa mo go se re batlang gore ba se dire. \n\nMme a le rona re se ka ra lebala go ikakgola fa re dirile bontle!", "type": "template", "note": "" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Go godisa basha e ka nna tiro e e bokete, mme e a re retelela rotlhe fa gongwe.", + "SourceText": "Praise time!", + "text": "Nako ya go akgola!", "type": "template", "note": "" }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Kgwetlho e kgolo e o nang le yone mo nakong eno ke efe?", + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Fa o bona mosha wa gago, mo akgole ka sengwe se se molemo se a se dirang sentle! \n\nKe leng la bofelo fa o ne o ikakgola kgotsa o akgola mogolo mongwe mo lelapeng la gago? Go leke!", "type": "template", "note": "" }, { - "SourceText": "My relationship with my teen is not good", - "text": "Kamano ya me le mosha wa me ga se e e siameng", + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "O dirile sentle ka go dirisa @global.parent_app! Gopola gore ke dilo tse dinnye tse di dirang pharologanyo e kgolo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "Ke bona go le thata go dirisana le boitshwaro jwa mosha wa me", + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Go akgola go dira pharologanyo. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone kafa O ka dirisang kakgolo ka teng mo lelapeng la gago.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ke ikutlwa ke gateletswe mo maikutlong, ke jewa ke bodutu, ke tenegile", + "SourceText": "Hi @fields.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Dumela @fields.user_name! Ra go lebogisa gore o simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntšhwa e go emetse! A o ka fopholetsa setlhogo sa tirelothuto go tswa mo setshwantshong se?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "I have money worries", - "text": "Ke tshwenyegile ka madi", + "SourceText": "Hi @fields.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", + "text": "Dumela @fields.group_name! Ra go lebogisa gore o simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntšhwa e go emetse! A o ka fopholetsa setlhogo sa tirelothuto go tswa mo setshwantshong se?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "I worry about my teen’s safety", - "text": "Ke tshwenyegile ka tshireletsego ya mosha wa me", + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Re lebogela gore o bo o dirisitse @global.parent_app go beeletsa mo go wena le lelapa la gago.\n\nLeka @local.workshop_data.in_text_title mme o kgone go nna le bokgoni jo bo siameng thata jwa go godisa bana!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "We often fight in our family", - "text": "Re aga re lole mo lelapeng la rona", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Dimela @global.user_name, tiriso e ntsha e go emetse kamoso. Go bontsha okare ga ise o fetse @local.workshop_data.in_text_title gajaana. Ke e khutshwane tota ( kago tshepisa!) - O ka e feleletse ntse emetse dijo tsa maitsiboa go butswa.Goreng o sa e lekole fa o na le metsotsonyana?\n\nKe a leboga gape go bo o dirisitse @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "I have a different problem…", - "text": "Ke na le bothata bo sele…", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "O dirile sentle thata ka go fetsa @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha. E leke - o tla bona pharoganyo mo tseleng e mosha wa gago a itshwarang ka yone.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Go dira botsala jo bosha go simolola ka go dira nako le le mmogo - le ele metsotso e le 5 fela go dira pharologanyo! Kwa tshimologong, go ka nna ga nna bokete go ipha nako le le mmogo, ka gonne rotlhe re nna re tshwaregile le gore basha ba rona fa gongwe ba mo maikutlong a a seng monate. Mme go dirisa le fa e le metsotso e le 5 mo letsatsing le tlhomile mogopolo le mosha wa gago go thusa gore le tshepane. Leka go botsa mosha wa gago gore a ka rata lo dira eng mmogo. Go ka le itumedisa le go le repisa!", + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Akanya gore o ne o ikutlwa lekgetlo la bofelo fa mongwe a ne a go leboga, kgotsa a go bolelela gore o dirile sengwe bontle tota.", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "O ka bona thuso e nngwe mabapi le gore o ka dira nako le ngwana wa gago wa mosha jang le le babedi fela fa:", + "SourceText": "How did it make you feel?", + "text": "O ne o ikutlwa jang?", "type": "template", "note": "" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Basha botlhe fa gongwe ba itshwara ka go tlhoka maitseo! Selo se le sengwe se se ka thusang ka maitseo a mosha ke go mo akgola nako nngwe le nngwe fa a dira sengwe se se siameng - le fa se ka nna se se nnye jang. Basha ba ka lebega o kare ga ba batle kgotsa ga ba lebelela gore o ba akgole mme batla jalo tota.", + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Rona batsadi ga se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng.", "type": "template", "note": "" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "O ka kgona go bona thuso e nngwe fano mabapi le tsela ya go kgothaletsa boitshwaro jo bo siameng ka go akgola:", + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "O ikutlwa jang fa go se ope yo o rayang a re, “ke a leboga”?", "type": "template", "note": "" }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Go tshwenyega mo maikutlong mo go amanang le go godisa bana go kwa godimo fela thata mo nakong eno. Re itse sentle ka fa botshelo bo ka imelang ka teng. O ka fokotsa go tshwenyega mo maikutlong ka go dira sengwe. O tshwanelwa ke seno! Mme fa o ikutlwa o imelwa, laola mmele wa gago ka go hemela kwa teng ga tlhano, ka bonya pele ga o fetola. Batsadi ba le bantsi ba bone seno se thusa.", + "SourceText": "Tired", + "text": "O a lapa", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "O ka bona thuso e nngwe mabapi le gore o ka itlhokomela jang fa:", + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Mosha wa gago le ene a ka ikutlwa jalo. Ke sone se se dirang gore ikatiso ya rona ya beke eno e nne botlhokwa le fa gone e lebega e le motlhofo: Ba akgole fa ba dirile sengwe sentle.", "type": "template", "note": "" }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Ga o nosi. Batsadi ba na le go imelwa ke kgatelelo ya maikutlo ka ga madi. Leka go bolelela mosha wa gago gore go tsena madi a a kae le gore o tshwanelwa ke go dirisa bokae mo lelapeng kgwedi le kgwedi. Seno se ka nna sa mo thusa go tlhaloganya gore gore o ka seke wa kgona go duelela sengwe se a se tlhokang. Mme fa mongwe le mongwe a tlhaloganya gore madi a dira jang, go nna bonolo gore le dumalane gore le ka boloka madi mmogo mo go eng!", + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "O ka bona thuso e nngwe mabapi le tsela ya go dira tekanyetsokabo le go boloka madi fa:", + "SourceText": "Why did she praise them?", + "text": "Goreng a ile a ba akgola?", "type": "template", "note": "" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Basha ba ka fetsa nako e ntsi ba le kwa ntle kgotsa ba le mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa - batsadi ba le bantsi ba tshwenyega ka seno. Leka go simolola motlotlo le mosha wa gago ka ga mafelo a a bolokegileng le a a sa bolokegang mo tikologong ya lona le mo inthaneteng (o ka ka nna wa tshwanelwa ke go leka makgetlo a le mmalwa). E bile ba ka nna ba itse dingwe tse wena o sa di itseng. Seno se ka nna sa simolola go le thusa go dira thulaganyo mmogo ya gore le ka nna le sireletsegile jang.", + "SourceText": "To get them to do it more often", + "text": "Go dira gore gantsi ba nne ba dira jalo", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "O ka bona thuso e nngwe mabapi le dira gore mosha wa gago a nne a sireletsegile fa:", + "SourceText": "To help her finish her work", + "text": "Go mo thusa gore a fetse tiro ya gagwe", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "Fa bothata bo tlhaga, buisanang mmogo ka jone. Bothata ke eng sentlentle? Go na le ditharabololo di fe tse di farologaneng mme ditlamorago tsa tsona ke dife? Ka tsela e, le ka bona tharabololo e e ka nnang e e SIAMENG go botlhe.", + "SourceText": "To make them feel good", + "text": "Go dira gore ba ikutlwe ba le motlotlo", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "O ka bona thuso ya tsela ya go rarabolola mathata mmogo fa:", + "SourceText": "To make herself feel good", + "text": "Go dira gore a ikutlwe a le motlotlo", "type": "template", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Ga go bonolo go tlhokomela ba malapa a rona. Rotlhe re na le dikgwetlho fa gongwe, mme re solofela gore app eno e tla go thusa gore o dirisane le tsone sentle jang. @global.parent_app e thailwe mo boitemogelong jwa dingwaga tse di lesome tsa go tsamaisa dithulaganyo tsa go godisa bana mo Aforika Borwa, mme diketekete tsa batsadi ba bone ditlhabobotlhale tse ba di newang di thusa ka dikgwetlho tse dintsi tsa go godisa bana. Re solofela gore app eno e tlile go thusa le wena le ba lelapa la gago.\n\nDitlhabotlhale dingwe tsa botlhokwa tse di tlhomamisitsweng ke tseno tse o ka di dirisang:", + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Dilo tseno tsotlhe di boammaaruri! \n\nFa basha ba ga @global.w_praise_female_caregiver_name ba itumetse, le ene o a itumela. E bile seno se mo thusa gore a kgone go fetsa tiro ya gagwe.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Start your first parenting workshop", - "text": "Simolola workshop ya gago ya ntlha ya go godisa bana", + "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text": "Go akgola go na le matla tota. \n\nA re lebeng sekai sa ga @global.w_praise_female_caregiver_name le bana ba gagwe ba basetsana:", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", + "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text": "Gantsi fa @global.w_praise_female_caregiver_name a tshwaregile ka go dira sengwe, bana ba gagwe ba basetsana ba a lwa. Mme, gompieno ngwana wa gagwe wa mosetsana yo mogolo o thusa monnawe ka tiro ya sekolo!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "O tla bona thuso e nngwe mo go @local.workshop_data.in_text_title.", + "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", + "text": "@global.w_praise_female_caregiver_name: “Ke a leboga @global.w_praise_girl gore o dira tiro ya sekolo, ke a leboga ka go thusa monnao, @global.w_praise_teen_girl. Ke motlotlo tota ka lona!”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Simolola @local.workshop_data.in_text_title", + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Kgato 1: Re bolelele gore ke kae mo o kgonneng go dira bontle le gore ke eng se se neng se le thata", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Fetsa @local.workshop_data.in_text_title gore o kgone bona thuso e nngwe.", + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "“Ke kgonne go ithuta dilo di le dintsi ka mosha wa me fa re ne re fetsa nako e ntsi mmogo! Mme mo letsatsing la bobedi, mosha wa me o ne a nnetse founo.”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Tswelela ka @local.workshop_data.in_text_title", + "SourceText": "Step 2: Bring ideas!", + "text": "Kgato 2: Tla ka dikakantsho!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Tsena gape mo go @local.workshop_data.in_text_title", + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "“Re leboga fela thata go bo lo tsere matsapa! Gongwe o ka akantsha gore ke dilo dife tse di itumedisang tse o ka di dirang mmogo le mosha wa gago.”\n\n\"Ee, gongwe lo ka dira sengwe mmogo mo founong ya gagwe? Kgotsa gongwe a ka go bontsha gore founo ya gagwe e dira jang?”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Nna fa fatshe, tswala matlho a gago mme o reetse mohemo wa gago jaaka o tsena le go tswa. \n\nLemoga ka fa o ikutlwang ka gone. \n\nFa o siametse go dira jalo, bula matlho a gago gape.", + "SourceText": "Step 3: Pick and try one!", + "text": "Kgato 3: Itlhophele gore ke efe e o ka e lekeletsang!", "type": "template", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Leka seno fa o ikutlwa o tshwenyegile mo maikutlong mme o tlhoka go ikhutsa gore ikgolaganye gape.", + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Re lebogela dikakantsho tseo tse di molemo tota! Go siame, ke tla kopa mosha wa me gore a mpontshe gore founo ya gagwe e dira jang fa a tswa sekolong. Ke mang yo o batlang go tshameka karolo ya go nna mosha wa me gore re dire ikatiso ke mo kopa?”", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Tswala matlho a gago. \n\nA re dirise maatla a boselamose a mararo go dula re le fano e bile re iketlile. \n\nBitsa maina a medumo e o e utlwang gone jaanong. \nBitsa maina a menkgo e o kgonang go e nkgelela gone jaanong. \nNaya maina a dijo tse tharo tse o di ratang. \n\nKe dilo dife tse tharo tse o di lebogelang gone jaanong? Ga di a tshwanela go nna dikgolo.", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Akanyang ka kafa ikatiso ya lona ya kwa gae e tsamaile ka teng mo bekeng eno. \n\nRefosanang go tlotla ka:\n\n* Ke kae mo o kgonneng go dira bontle le gore ke eng seo se neng se le thata?\n* Ke ditharabololo dife tse lo kgonang go di akanya mmogo?\n* Tlhopha tharabololo e le nosi mme o e leke moragonyang le mosha wa gago! \n\n(Kgotsa lo ka nna lwa ikatisa gone jaanong gore e nne motlhofo moragonyana!)", "type": "template", "note": "" }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "Morago ga letsatsi le le bokete, akanya ka dilo tse tharo tse o di lebogelang go ka thusa go bona bopelokgale jwa go leka gape kamoso.", + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Tswala matlho a gago mme o akanye ka letsatsi la gago. \n\nBitsa selo se le 1 se o se lebogelang. \nBitsa selo se le 1 se o se dirileng sentle. \nBitsa selo se le 1 se o se ratang.", + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Mesola ya go akgola \n* Kgang le motlotlo - tse di dirieng!\n* Didirisiwa: Tsela ya go akgola\nBONA - BUA - BOELETSA\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "O dirile sentle, o mogaka!", + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Abelana le ba bangwe:\n\n* O feleleditse leng go utlwa mongwe a go leboga kgotsa a re o dirile sengwe se se ntle? \n* O ne wa ikutlwa jang? \n* O ikutlwa jang fa o sa lebogiwe kgotsa o sa akgolwe ka ntlha ya se o se dirileng? \n\nRona batsadi ga e se gantsi re lebogiwa kgotsa re akgolwa ka mo go lekaneng. Gongwe o ka tlhomela basha ba gago sekao se se molemo ka go ba akgola fa ba dirile sengwe sentle lekgetlo la ntlha!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Tswala matlho a gago. \n\nDirisa maatla a boselamose a mararo go nna o le fano e bile o iketlile.\n\nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3. \nHemela kwa teng makgetlo a mararo. 1, 2, 3. \nHemela kwa ntle makgetlo a mararo. 1, 2, 3.", + "SourceText": "Let's discuss this story.", + "text": "A re tlotleng ka kgang eno.", "type": "template", "note": "" }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "A o utlwa pharologanyo? Go hemela kwa teng go thusa mmele otlhe wa rona le mogopolo gore di ritibale. \n\nO naledi!", + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Tlotlang mmogo:\n\n* Go akgolwa go ile ga dira gore basha ba ga @global.w_praise_female_caregiver_name ba ikutlwe jang?\n* Goreng a ile a ba akgola?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Tswala matlho a gago.\n\nReetsa tsela e o hemang ka yone o ntse o tsenya o ntsha mowa makgetlo a matlhano.\n\nLemoga kafa o ikutlwang ka gone.", + "SourceText": "The same can work for you!", + "text": "Le wena seno se ka go thusa!", "type": "template", "note": "" }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Fa o siame bula matlho a gago gape. Ke wena o laolang!", + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name o ile a akgola bana ba gagwe...", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Tswala matlho a gago. \n\nTsaya motsotso o akanye ka letsatsi.\n\nAkanya ka sengwe se le nosi se se siameng kgotsa se se monate se o se dirileng.\nIkakgole fa o dirile sengwe se le nosi se sentle gompieno. \nAkanya ka selo se le sengwe se o ka se dirang ka tsela e e farologaneng kamoso.  \nBitsa selo se le sengwe se o se lebogelang.", + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Go dira gore gantsi ba nne ba dira jalo\n* Go mo thusa gore a fetse tiro ya gagwe \n* Go dira gore ba ikutlwe ba le motlotlo \n* Go dira gore a ikutlwe a le motlotlo", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Tswala matlho a gago. \n\nA bana ba gago ba a tle ba dire gore o batle go goeletsa? \n\nIphe metsotswana e 10 o eme go se kae. Hemela kwa teng le kwa ntle makgetlo a 5. \n\nLeka go araba o kgobile makgwafo.", + "SourceText": "SEE IT", + "text": "BONA", "type": "template", "note": "" }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Dimilione tsa batsadi ba a re seno se a thusa - THATA.", + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Leka go bona gore ke eng se se siameng e bile se go thusa se basha ba gago ba se dirang mme o ba akgole. Gongwe ba ka nna ba se go bontshe gore ba a itumela mme gone, o tla ba bona ba dira selo seo se se sentle gape. Gape seno se tla dira gore ba lemoge gore o a bona gore ba dira bontle e bile o a kgathala ka bone.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Tswala matlho a gago. \n\nTsaya motsotso go emisa se o se dirang mme o ikgolaganye le tsela e o hemang ka yone.   \n\nKe selo sefe se le sengwe se o se lebogelang gone jaanong?  \nKe selo sefe se le sengwe se se go itumedisang?  \nKe selo sefe se le sengwe se o se ratang?  \n\nGa di a tshwanela go nna dikgolo. Ka dinako tse dingwe dilo tse dinnye mo botshelong ke tsone di leng botlhokwa thata!", + "SourceText": "SAY IT", + "text": "BUA", "type": "template", "note": "" }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Fano ke tiro e e ka ritibatsang mmele wa gago:  \n\nDula sentle mme o tswale matlho fa o kgona.  \nAkanya ka palamonwana ya gauta e sekaseka mmele wa gago go tswa mo maotong go ya ko tlhogong.   \nTlhwaya tsebe jaaka fa e ntse e ya godimo le tlase mo mmeleng wa gago. A go na le dikarolo tsa mmele tse di tiileng? Di sule bogatsu? Di botlhoko?   \nTlhoma mogopolo mo dikarolong tseno metsotswana. Hemela kwa teng ga karolo eo mme o ntshe mowa, leka go tsamaisa go tiya goo kgotsa botlhoko joo.   \nDira seno ka go hema makgetlo a mmalwa.   \n\nBula matlho a gago. Mmele wa gago o ikutlwa jang jaanong?", + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Nna matlhagatlhaga – bontsha gore tota se o se buang se tswa mo pelong!", "type": "template", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "O ka nna wa leka seno mo lekgetlong le le latelang fa o iphitlhela o robetse mo bolaong mme o sa kgone go robala!", + "SourceText": "REPEAT IT", + "text": "BOELETSA", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Tswala matlho a gago. \n\nLemoga kgolagano ya gago le lefatshe le le kafa tlase ga gago.  \nKe karolo dife tsa mmele wa gago tse di amang mo fatshe? Ke karolo dife tsa mmele wa gago tse di sa ameng fatshe?   \nElatlhoko gore go thuthafetse kae le mo go tsidifetseng teng.  \nIkutlwe o tshegediwa ke lefatshe mo tlase ga gago. Letla mmele wa gago gore o tshegediwe ke lefatshe.", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Leka go bona gore ke eng se o ka ba lebogelang sone letsatsi le letsatsi. Tota le sengwe fela se se bonalang se le sennye tota.", "type": "template", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Leka seno mo lekgetlong le le latelang fa o ikutlwa o le nosi kgotsa fa o dira ditiro tsa mo gae jaaka go tlhatswa. Go ka thusa thata!", + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Tota e bile le ba bangwe ba ba godileng mo lapeng o ka ba akgola. Ela tlhoko gore ba itshwara jang fa o ba akgola!", "type": "template", "note": "" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Nna fatshe o tswale matlho a gago.\nO utlwa medumo e kae? \nReetsa medumo e e mo teng le kwa ntle ga phaposi. E bale ka menwana ya gago. \nMorago ga metsotswana e le lesome, go setse menwana e le kae e e emeng? O utlwile medumo efe? \n\nLeka gape metsotswana e le lesome. \nA o utlwile medumo e mesha? A o utlwile medumo mo teng ga mmele wa gago? \nLemoga kafa o ikutlwang ka gone gone jaanong.", + "SourceText": "Let's practice giving praise.", + "text": "A re direng ikatiso ya go akgola.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Tswala matlho a gago. \n\nA o kile wa utlwa sengwe ka mo go tseneletseng mo o batlang go se tshabela? \n\nGo na le go itlhokomolosa kafa o ikutlwang ka gone, tla reye mo go yone go se kae. \nGa se bothata. Tswala matlho fa o kgona fa o nnisega. Wela makgwafo. \n\nBatla go itse. O e utlwa kae mo mmeleng wa gago? E mogote kgotsa e tsididi? E thata kgotsa e boleta? E gagametse kgotsa ga ya gagamala? \nIpotse dipotso dingwe. Se mpolelela eng? Se tlhoka eng? Nka ikutlwela botlhoko jang gone jaanong?", - "type": "template", + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Abelana le ba bangwe: \n\n* O ka akgola mosha wa gago ka ntlha ya eng? \n* Ke eng se mongwe o sele a se dirileng sentle ka nako ya workshop eno? Ba bolelele!\n* O ile wa ikutlwa jang fa mongwe a go akgola?\n* O ile wa ikutlwa jang fa o akgolwa?", + "type": "template", "note": "" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Fano ke sengwe se se ka go thusang go tsamaisa go tshwenyega mo maikutlong ga gago:  \n\nTlhopha pina e e bontshang se o se tlhokang gone jaanong. A o tlhoka pina e e seng modumo go ritibatsa mowa wa gago o o lapileng kgotsa pina e e tla go binisang go go thusa go ntsha go tshwenyega mo maikutlong?  \n\nDira sebaka mme o tshikinye mmele ka go binela pina. Gopola go hema fa o ntse o itshikinya. Letlelela mohemo wa gago le go tshikinya mmele ga gago go tsamaisane mmogo.", + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Ka dinako tse dingwe go thata go akanya gore o ka akgola mosha wa gago fa a dirile eng! Go na le dikakantsho tseno tse di tswang kwa batsading bangwe:", "type": "template", "note": "" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Le metsotso e mmalwa e siame go go thusa go tsamaisa go tshwenyega mo maikutlong mme o itumele!", + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Go nna bonolo mo mongweng \n* Go phepafatsa phaposi ya bone \n* Go ja mmogo le lelapa \n* Go dumedisa maloko a mangwe a lelapa \n* Go tlhokomela bomonnao \n* Go tla gae ka nako? \n* Go bontsha go akanyetsa ba bangwe \n* Go re ‘tsweetswee’ kgotsa ‘ke a leboga’ \n* Go ya sekolong \n* Go dira ditiro tsa legae kgotsa tirogae ya sekolo \n* Go fetsa nako ya go ja ntle le dintwa", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Tswala matlho a gago. \nTsaya motsotso go utlwa lefatshe le le kafa tlase ga dinao tsa gago. \nAkanya ka sengwe se o se lebogelang.\nTlhoma mogopolo mo tseleng e o hemang ka yone.\nHemela kwa teng le kwa ntle.\n\nKwa teng le kwa ntle.", + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "Ke itumelela go utlwa gore lo tsoga sentle. Lo batsadi ba ba molemo tota!", "type": "template", "note": "" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Dumela! O ikutlwa jang gone jaanong? O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile?\n\nLemoga mo o e utlwang teng mo mmeleng wa gago. Lemoga gore ke dikakanyo di fe tse di golaganeng le maikutlo ao. Wela makgwafo.", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Ke maswabi go utlwa gore gompieno go thatanyana. Re leboga gore lo dirile sotlhe se lo ka se kgonang. Ga go ope yo o itseng sengwe le sengwe mme lo dira bontle tota!", "type": "template", "note": "" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Iteboge go bo o tshotse nako ya go tlhola maikutlo le dikakanyo tsa gago!", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Ke maswabi go utlwa gore gompieno go thatanyana. Re a lo akgola gore fa lo tsoga moso mongwe le mongwe, lo dira sotlhe se lo ka se kgonang le fa gone lo lapile. Seno se tlhoka bopelokgale le boineelo!", "type": "template", "note": "" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "A re ikatise ka tsela ya go kgoba makgwafo eo re e bitsang ‘Maatla a go Ema go se Kae’. \n\nBaya maoto a gago mo fatshe mme o hemele kwa teng le kwa ntle makgetlo a mararo ka bonya jo o ka bo kgonang. Akanya o nkga lelomo kgotsa o butswela kerese go e tima. \n\nTa Da! Maatla a go Emisa go se Kae!", + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Mo bekeng eno, baya molao o le mongwe mmogo le mosha wa gago.\n\nGakologelwa go akgola mosha fa lo fetsa!", "type": "template", "note": "" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Eno ke tsela e e molemo ya go e dirisa fa o ikutlwa o tlhakane tlhogo gonne e tla go thusa go kgoba makgwafo.", + "SourceText": "make rules with their teens", + "text": "dira melao le basha ba bone", "type": "template", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Go ikakgola go ka go thusa tota, segolo jang fa re na le malatsi a a bokete. \n\nAkanya ka beke ya gago mme o feleletse polelwana e latelang: “Beke eno, ke a ipela ka nna go bo...” e ka nna sengwe le sengwe, e seng fela dilo tse di amanang le go nna motsadi!\n\nAkanya ka sengwe se le nosi se o se dirileng gompieno. Jaanong itlamparele ka matsogo a gago mme o iphe TLAMPARELO e kgolo!", + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "A o nnile le dikgwetlho dingwe fa o leka go dira molao lo le mmogo?", "type": "template", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Dula sentle mme o tswale matlho a gago. \n\nLemoga se se go diragalelang gone jaanong. Ke eng se o se akanyang? A dikakanyo tsa gago di siame kgotsa ga di a siama? O ikutlwa jang? O ikutlwa sentle kgotsa ga o ikutlwe sentle? Mmele wa gago o ikutlwa jang? O ikutlwa o gateletswe kgotsa o repile?\n\nGolagana le pelo ya gago ka tsela e e siameng le e e bonolo. O ka nna wa batla go baya letsogo la gago mo pelong ya gago kgotsa mo sefubeng sa gago. Ipolelele mafoko a a latelang ka tidimalo:\n\nA ke nne le kagiso.\nA ke nne ke sireletsegile.\nA ke nne le boitekanelo jo bo siameng.\nA ke itumele.\nA go nne le lorato mo lelapeng la me.\nA ke ikutlwe ke ratiwa.", + "SourceText": "What was difficult for you about making a rule with your teen?", + "text": "Ke eng seo se nnileng bokete mo go wena ka go dira molao le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Tsaya motsotso go akanya ka maitemogelo a gago. Lemoga fa o utlwa pharologanyo.", + "SourceText": "My teen and I could not agree on a rule.", + "text": "Nna le mosha wa me ga re kgone go dumalana ka molao.", "type": "template", "note": "" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Kgato 1. Tswala matlho mme o hemele kwa teng. \n\nKgato 2. Ipotse, “Ke akantse ka eng?” Lemoga fa dikakanyo tsa gago di siame kgotsa di sa siama.\nLemoga ka fa o ikutlwang ka gone mo maikutlong. Lemoga fa maikutlo a gago a siame kgotsa a sa siama. Ikgopotse gore go sa kgathalesege gore o ikutlwa jang, go siame.\nLemoga ka fa mmele wa gago o ikutlwang ka gone. Lemoga fa sengwe se le botlhoko kgotsa se gagametse.\n\nKgato 3. Tlhoma mogopolo mo tseleng e o hemang ka yone. Reetsa tsela e o hemang ka yone o ntse o tsenya mowa o bo o o ntsha. O ka nna wa baya letsogo mo mpeng ya gago mme o e utlwe fa e ya kwa godimo le kwa tlase fa o ntse o hema. Dira seno o hema ga 10.\n\nKgato 4. Atolosa temogo ya gago mo mmeleng otlhe wa gago. Reetsa medumo e e mo kamoreng. \n\nKgato 5. Tsaya motsotso go bona fa o utlwa pharologanyo nngwe. Fa go siametse go dira jalo, bula matlho a gago.", + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Akanya ka gore a mme molao o a utlwala. A mosha wa gago o kgona go o latela? Fa lo dira melao jaaka lelapa, go a thusa gore o akanye ka mosha wa gago, ba bagolo go le kae, le gore ke eng se se botlhokwa mo go bone.", "type": "template", "note": "" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "O dirile sentle go Emisa go se Kae. O ka dira seno nako nngwe le nngwe fa o ikutlwa o tshwenyegile mo maikutlong. Go go naya tshono ya go kgoba makgwafo. Le fa ele go hemela kwa teng makgetlonyana kgotsa go ikgolaganya le lefatshe le le mo tlase ga gago o ka dira pharologanyo. O ka Ema go se Kae le ka Bana ba gago!", + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "Mosha wa me o ikutlwa gore ga go tekatekano gore ba tshwanetse go latela molao fa nna ke sa tlhoke go o latela.", "type": "template", "note": "" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Ema mme o otlololele diatla tsa gago ko godimo. Sutisa maru a o a bonang mme o letle letsatsi le go phatsimele. Ikotlololele ko matlhakoreng o o mabedi. Ikotlololele ko pele le ko morago.\n\nLetla letsogo la gago le akgegele mo letlhakoreng la gago. Gatelela magetla a gago gaufi le ditsebe tsa gago fa o ntse o hemela kwa teng, dira e kete o tswala matlho a gago, mme o tshware mowa wa gago. Tlogela magetla a gago fa o ntse o repisa mmele wa gago.\n\nRepisa matsogo a gago mme letlelela matsogo a gago go elela ko pele le ko morago, mme o thedimosetse mmele wa gago o o ko godimo. Matsogo a gago a iteye mokotla wa gago ka bonolo fa o ntse o sokamisetsa ko matlhakoreng.\n\nBaya leoto mo pele ga le lengwe mme o dire dikgolokwe tse dinnye ka legwejana, gopola go dira mo matlhakoreng o o mabedi. Dira leoto lengwe le lengwe ka dikgolokwe tse nne mo matlhakoreng otlhe.\n\nJaanong tshikinya mmele wa gago otlhe ka bonako jo o ka bo kgonang. Tshikinyetsa kwa godimo! Tshikinyetsa kwa tlase! Tshikinyetsa go dikologa gotlhe!\n\nTswala matlho mme o emise matsogo a gago ka bonya mo godimo ga tlhogo ya gago fa o ntse o hemela kwa teng. Isa matsogo a gago ka bonya kwa letlhakoreng la gago fa o ntse o hemela kwa ntle.\n\nTsaya motsotso go akanya ka maitemogelo a gago.", + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Re tshwanetse go gopola ka metlha gore bana ba ithuta thata go tswa mo go rona. Fa re latela melao ka gale, le bone ba tla o latela. \n\nO ka nna wa tokafatsa melao go netefatsa gore e a kgonega gore botlhe ba e latele, o akanyetse maikarabelo a gago le maikarabelo a mosha wa gago (sekai, sekolo kgotsa dilo tsa tiro).", "type": "template", "note": "" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "O dirile sentle! O ka dira tiro eno gape nako nngwe le nngwe fa o ikutlwa o tlhoka go ntsha go tshwenyega mo maikutlong mme o neye tlhaloganyo ya gago le mmele wa gago matla.", + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Ga ke a nnisega, ka gonne ke ikutlwa e kete ke nna yo o tshwanetseng go tlhoma molao, e seng mosha wa me.", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Dira lenaane la dilo tsa boitekanelo jo bo siameng tse o ratang go di dira. Dikakantsho dingwe ke tseno:\n* Go reetsa mmino o o ratang\n* Go tsamaya ka maoto (fa go letleletswe)\n* Go ikatisa\n*Go nwa kopi ya tee o le nosi\n* Go leletsa tsala\n* Go opela, go bina, go rapela, kgotsa go buisa\n*Go nna mo letsatsing o tswetse matlho\n* Go lebelela lenaneo la gago la T.V. le o le ratang\n\nTlhopha e le nngwe mme o e dire gompieno!", + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "Molekane wa me ga a nnisege, ka go bo a ikutlwa e kete ke ene yo o tshwanetseng go tlhoma molao, e seng mosha.", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "Fa o itlhokomela, o tlhokomela le bana ba gago. Rotlhe re tlhoka go ikgolaganya. Leka go bua le ditsala, balelapa, le dikgokagano tse dingwe tsa tshegetso letsatsi le letsatsi. Fa ele gore ke kgale o sa bue le mongwe, bua le ene jaanong!", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Fa re tlhoma melao mmogo le basha ba rona, seno se thusa lelapa go tlhaloganyana botoka. Melao e tla kgona go diragadiwa, le basha ba rona ba tla batla le go kgona go e latela melao eo.", "type": "template", "note": "" }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Akanya ka gore ke eng se se dirang gore o galefe? Go direga leng? Gantsi o itshwara jang?\n\nO seka wa letla kgalefo go simolola. Robala kgotsa o ikhutse fa o lapile. Leka go ja sengwe fa o tshwerwe ke tlala. Kopa tshegetso ya mongwe fa o ikutlwa o le esi.", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Fa re ne re leka go dira molao, re nnile le ngangisano.", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Go laola kgalefo ga ka nna thata. Ema fa o ikutlwa o galefela bana ba gago kgotsa mongwe o sele.\n\nGore maikutlo a gago a boe ya golo gongwe o tseye metsotso e ka nna 5. Fa o na le lefelo la kwa ntle le le sireletsegileng, tsamaya o ye kwa ntle. O tla fenya seno!", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "A mosha wa gago o ne a itumetse fa o leka go dira molao? Go botoka go dira melao fa maemo a ritibetse. Fa wena le mosha wa gago lo lapile kgotsa lo tshwerwe ke tlala, go botoka go bua ka melao kgantele.", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Itsenyetse dilo tse o di batlang mo @global.parent_app ya gago", + "SourceText": "We were not able to stick to the rule.", + "text": "Ga re a kgona go latelela molao.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Dipotso tseno di bonako mme di tla tshwanela sedirisiwa seno go ya ka ditlhoko tsa gago.", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Molao o tshwanetse go nna o totobetseng le o o kgonang go latelwa. Netefatsa gore o na le molao o o kgonang go latelwa motlhofo, jaaka go ja dijo mmogo gangwe ka Sontaga mongwe le mongwe go na le bosigo bongwe le bongwe. A o tlhoka go nna yo o fetofetogang ka molao?", "type": "template", "note": "" }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "A re simolole ka dipotso di le mmalwa ka wena le lelapa la gago.", + "SourceText": "Your goal was to make ONE rule with your teen this week.", + "text": "Mokgele wa gago e ne e le go direla mosha wa gago molao o le MONGWE mo bekeng eno.", "type": "template", "note": "" }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Re ka rata go itse leina la gago la ntlha kgotsa leina le o tlwaelegileng ka lone:", + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "O dirile seno sentle! Ga go motlhofo, le basha ga ba kitla ba boloka melao ka dinako tsotlhe, mme go dira melao konokono e le mmalwa lo le mmogo ke tshimologo e ntle. Ikakgole ka go leka seno - re motlotlo ka wena!", "type": "template", "note": "" }, { - "SourceText": "Are you a woman or a man?", - "text": "A o mosadi kgotsa monna?", + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Melao e thusa basha go itse gore ke eng seo se lebeletsweng mo go bone. \n\nGantsi bana ba dingwaga tsa bosha ba ikobela melao fa o e tlhoma O NA LE bone e bile o ba leboga fa ba e ikobela!", "type": "template", "note": "" }, { - "SourceText": "Woman", - "text": "Mosadi", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Dumelang, lotlhe. \n\nKgang eo re tlileng go bua ka yone gompieno ke melao. \n\nMelao e dira gore go nne le kagiso mo lelapeng e bile e dira gore botlhe mo lelapeng ba kgone go tlhaloganyana. \n\nMelao e thusa gore mongwe le mongwe mo lelapeng a itse gore o na le maikarabelo; ka jalo, go botlhokwa gore go nne le melao mo lelapeng. \n\nLelapa leo le nang le melao le dirisana mmogo ka kagiso.", "type": "template", "note": "" }, { - "SourceText": "Man", - "text": "Monna", + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Kwala molao o le mongwe wa botlhokwa o o ka ratang go o dira le mosha wa gago - o tla dira seno e le go ikatisa mo gae beke eno. \n\nBa tlile go akanya eng ka one?", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "O nale dingwaga tse kae?", + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "A o kgonne go baya molao mmogo le mosha wa gago?", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Bagolo", + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Ka dinako tse dingwe go utlwala e kete basha ba gago ba santse ba sa itumela le fa o lekile ka moo o kgonang ka gone. Gopola gore o dira tiro e ntle, le gore go tlile go nna le dinako tse di monate le bone!", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Basha", + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "O gaufi le go nna le sedirisiwa sengwe sa botsadi! Feleletsa @local.workshop_data.in_text_title, baya molao o le MONGWE o o motlhofo le o o ka kgonang go latelwa le mosha wa gago, mme o bone dilo di fetoga!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Children", - "text": "Bana", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Dumela @fields.user_name! Beke e ntshwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e obamele.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Babies", - "text": "Masea", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", + "text": "Dumela @fields.group_name! Beke e ntshwa, tirelothuto e ntshwa! Ithute go tlhama melao ya fa gae ka tsela e e tla oketsang ditshono tsa gore mosha wa gago a e obamele.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "How many people are in your household?", - "text": "O dula le batho ba le kae mo legaeng la gago?", + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Re lebogela gore o dirisitse @global.parent_app le go ikemisetsa go tsaya loeto lwa gago lwa go nna motsadi. \n\n@local.workshop_data.in_text_title e tla go bontsha kafa o tshwanetseng go tlhoma melao ka teng ka tsela e e tla thusang mosha wa gago go e tlhaloganya le go e latela botoka.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "O ka dira @global.weekly_workshops ka bowena KGOTSA laletsa maloko mangwe a lelapa la gago kgotsa ditsala gore di tsene - o tla ithuta mo go oketsegileng ka mongwe go yo mongwe. Go tswa mo go wena!", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go fetsa @global.parent_app pele ga o simolola workshop e ntšha. Ga e kitla e tsaya nako e telele mme e tla thusa mosha wa gago go latela melao botoka!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "O ka rata go dira @global.weekly_workshops ya gago jang?", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title.\n\nKamoso, workshop e ntšha e tla go thusa go itse gore ke leng basha ba bontsha maitshwaro a a maswe (kgotsa a a molemo)!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Can you think of a name for your group?", - "text": "A o kgona go akanya leina la setlhopha sa lona?", + "SourceText": "They discussed the reasons behind the rule", + "text": "Ba tlotlile ka mabaka a a dirileng gore molao o nne teng", "type": "template", "note": "" }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "Ke letsatsi lefe mo bekeng le o ka ratang go dira @global.weekly_workshops ya gago ka lone?", + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Monday", - "text": "Mosupologo", + "SourceText": "The rule was clear, specific and fair", + "text": "Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano", "type": "template", "note": "" }, { - "SourceText": "Tuesday", - "text": "Labobedi", + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", "type": "template", "note": "" }, { - "SourceText": "Wednesday", - "text": "Laboraro", + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Go gontle, go dira melao mmogo ka tsela e e ritibetseng le le siameng go dira sentle tota!", "type": "template", "note": "" }, { - "SourceText": "Thursday", - "text": "Labone", + "SourceText": "She praised him", + "text": "O mo akgotse", "type": "template", "note": "" }, { - "SourceText": "Friday", - "text": "Labotlhano", + "SourceText": "She rewarded him when he followed the rule", + "text": "O ne a mo duela fa a fetsa go latela molao", "type": "template", "note": "" }, { - "SourceText": "Saturday", - "text": "Lamatlhatso", + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Go ntse jalo - karabo e e siameng e dira gore dilo di tsamaye sentle!", "type": "template", "note": "" }, { - "SourceText": "Sunday", - "text": "Latshipi", + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "A re baleng ka se se diragetseng ka @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga botswerere jo bo latelang.", + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: “Ka metlha o tla gae thari!”\n\n@global.w_rules_teen_boy: “Nnyaa ga ke tle thari, ga ke itse le gore go tla thari go raya eng! Ntlogele.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Go gontle! Re tla bula workshop e ntšha ya setlhopha sa gago beke le beke. Seno se tla lo dumelela lotlhe go leka se lo se ithutileng ka malapa a lona pele ga lo aga bokgoni jo bo latelang.", + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Ke molao ofe o o maleba o @global.w_rules_teen_boy le @global.w_rules_female_caregiver_1 ba ka o tlhomang mmogo?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "O ka kgona go fetola diseting tseno ka metlha mo @global.weekly_workshop_options ya gago.", + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "Tla re bone gore @global.w_rules_female_caregiver_1 le @global.w_rules_teen_boy ba dirile seno jang mo letsatsing le le latelang:\n\n@global.w_rules_female_caregiver_1: “Ke batla gore o itumele, @global.w_rules_teen_boy, mme gape ke tshwenyegile ka go tla gae thari ga gago. A o itse gore goreng ke rialo?” \n\n@global.w_rules_teen_boy: “Ka gonne o batla ke nna le nako e ntsi ya go dira tiro ya sekolo?”", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Re a itse seno se bokete. Re tsentse dikakantsho tse di tla go thusang gore o iphe nako le mosha wa gago go @data.parent_centre.my_tips.location_text, gore o e bone ka nako e o e batlang ka yone. \n\nKa gonne @data.workshop.w_1on1.title e aga motheo wa sedirisiwa sa batsadi botlhe, e tla bo e le @global.weekly_workshop o e amogelang beke e e tlang!", + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: “O nepile, e bile gape ga go a sireletsega mo lefelong leno gore o bo o le kwantle letsatsi le phirimile. O akanya gore ke nako efe e e tshwanetseng ya gore o tle gae?”", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "The string @global.w_rules_female_caregiver_1 should not be translated." }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "O dirile sentle! @global.weekly_workshop ya rona e e latelang e tla go naya dikakantsho tse di oketsegileng tsa seno, jaaka motheo wa didiriswa tsotlhe tsa botsadi. Mme o setse o simolotse sentle tota!", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “A nka tla gae ka 10pm?\" @global.w_rules_teen_boy: \n\n@global.w_rules_female_caregiver_1: “Go tla be go le thari thata, 6pm e ntse jang? Kgotsa nako e e magareng ga dinako tseo?”", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. Re tsentse dfidirisiwa tse di botlhokwa tsa kafa o ka dirisang go akgola mo @data.parent_centre.my_tips.location_text gore o tsene ka bonako.\n\nMo go @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa botswerere jono sentle.", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “A nka tla gae ka 6pm ka malatsi a sekolo ke be ke tla ka 10pm ka Labotlhano le Lamatlhatso?” \n\n@global.w_rules_female_caregiver_1: “Ee, go siame. Go tloga jaanong, molao wa mo gae ke gore o tshwanetse go tla gae ka 6pm mo malatsing a sekolo o bo o tla ka 10pm ka Labotlhano le Lamatlhatso. Mme ka metlha o tsamaye le ditsala fa o tla gae. A wa nkutlwa", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. Mo @data.workshop.w_praise.in_text_title ya rona o tla ithuta mo go oketsegileng ka ga go dirisa bokgoni jono sentle.", + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: “Go siame, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ke leboga thata, @global.w_rules_teen_boy, go bo o nthusitse gore re kgone go tla ka molao o siameng mmogo. Ke motlotlo go go bona o simolola go nna le maikarabelo.”", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Letsatsi le le latelang...\n\n@global.w_rules_female_caregiver_1: “Ke a leboga, @global.w_rules_teen_boy, go bo o tlile gae ka nako. Fa o fetsa tiro ya sekolo re ka tla go ja dijo tse o di ratang thata tsa maitseboa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla go gopotsa ka metlha gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "SourceText": "Online Safety", + "text": "Tshireletsego ya Inthanete", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, gakologelwa mme o iteboge, go go thusa go kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo @data.workshop.w_stress.number ya @global.weekly_workshops- mme o setse o kgona go dirisa didirisiwa tse di thusang mo tlase ga@data.parent_centre.my_tips.location_text gore o simolole!", + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", + "text": "Melao e botlhokwa go boloka basha ba gago ba sireletsegile - le mo inthaneteng. Go buiwa go le gontsi ka seno mo Kopanong ya Beke le Beke ka thulaganyo ya tshireletsego, mme tla re simolole ka go e bona gone jaanong!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa gore o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla go gopotsa ka metlha gore o iketle, o lemoge gore o kgonne le go iteboga. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @data.workshop.w_stress.number - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @global.weekly_workshops gore o simolole.", + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, a o dirile tirogae ya gago?\"\n\n@global.w_rules_teen_girl: \"Ke etla @global.w_rules_female_caregiver_2, ke feleletsa bidio eno ya @global.teen_social_medium\"", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Re solofela sedirisiwa sa rona sa go laola go tshwenyega mo maikutlong se go thusitse. O setse o kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: “Tota o kgeleke ya go bina! Mpolelele gore goreng o go rata\"\n\n@global.w_rules_teen_girl: \"Ditsala tsa me tsotlhe di dira jalo, @global.w_rules_female_caregiver_2. Ke na le batho ba ba e ratang ba le 600 ba ba ntshalang morago ba le 120.”", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Go gontle. Re na le workshop e e rutang ka tekanyetsokabo ya lelapa e e ka thusang ka go tshwenyega ka madi ka kakaretso, le go fokotsa go omana ka madi.", - "type": "template", - "note": "" + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka fa o binang bontle ka teng, @global.w_rules_teen_girl. Mme re tshwanetse go tlhomamisa gore o sireletsegile. \n\nKe itse gore ditsala tsa gago di lebelela @global.teen_social_medium, mme di dirisa akhaonto e e sa sireletsegang, go na le batho bangwe ba ba lebang dibidio tsa basha gore ba kgotsofatse keletso ya bone ya thobalano. Ka dinako tse dingwe ba ikgolaganya le basha. Ba itira e kete ba siame mme ba feleletsa ba tshosetsa basha le go ba sotla.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nRe na le workshop e e rutang ka tekanyetsokabo ya lelapa dibeke di le tlhano, mme o setse o ka kgona go bona ditlhabobotlhale dingwe tsa motheo ka tekanyetsokabo ya lelapa mo tlase ga @data.parent_centre.my_tips.location_text!", + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: \"Tla re lebe inthanete mmogo re bone gore re ka dira jang gore e go itumedise le gore gape e sireletsege. Bona - o ka kgona go dira gore akhaonto ya gago e nne khupamarama le go laola batho ba ba go salang morago.\n\nO ka nna wa amogela batho ba o tsenang sekolo le bone le ba mo lefelong la rona, mme e seng batho ba ba ikgolaganyang le wena mo inthaneteng.\n\nA re ka dira molao mmogo o o ka o dirisang @global.teen_social_medium, mme e le ka akhaonto ya khupamarama? Ke a go tshepa gore o tla amogela batho ba o ba itseng!”", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. Go itlhokomela le go thusa o ikutlwe o kgobile makgwafo fa dilo di nna boima, re tla go gopotsa tsatsi le letsatsi gore o iketle, o lemoge mme o iteboge. O botlhokwa!\n\nRe tla ithuta mo go oketsegileng ka go laola go tshwenyega mo maikutlong mo bekeng ya bo 5 ya @global.weekly_workshops - mme fela o ka kgona go dirisa didirisiwa tse di thusang mo tlase ga @data.parent_centre.my_tips.location_text gore o simolole.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: \"Ke motlotlo ka wena @global.w_rules_teen_girl\"", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDidirisiwa tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "Seno se sentle ruri. Mekgwa eno yotlhe e dira gore lelapa la lona le nonofe. Nna motlotlo.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRe solofela didirisiwa tsa rona tsa go laola go tshwenyega mo maikutlong di tla go thusa gore o ikutlwe o kgobile makgwafo mo maemong a a thata. O kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa diang... \n* Kgang le motlotlo - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Re tla netefatsa gore o a tshegediwa ka go aga puisano. \n\nRe tla bua mo go oketsegileng ka go rulaganya tshireletsego ya mosha wa gago kgantele mo @global.weekly_workshops, mme fela o ka iponela dikakantsho tse di tseneletseng tsa go boloka mosha wa gago a sireletsegile mo tlase ga @data.parent_centre.my_tips.location_text!", + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang... \n* Kgang le go leba kwa morago - tse di dirileng!\n* Didirisiwa: Kafa o ka bayang melao ka teng\nMELAO YA SETLHOPHA - MELAO YA MMATOTA - MELAO YA GO AKGOLA!\n* Kgang ya Tshireletsego ya Inthanete\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Seno se sentle tota. Go nna motsadi go bokete, mme o a atlega mo go direng seno.", + "SourceText": "What went well here in making a rule together?", + "text": "Ke eng se se tsamaileng sentle ka go dira molao mmogo?", "type": "template", "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! O ka bona didirisiwa tse di tobileng, ka diteng tse di oketsegileng le ditlamelwana mo @global.parent_centre nako nngwe le nngwe. \n\nO setse o ka kgona go bona ditlhabotlhale tse dingwe tsa motheo tse di thusang ka go rulaganya go dira mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "O akanya gore @global.w_rules_teen_boy o itsitse jang gore @global.w_rules_female_caregiver_1 wa gagwe o a mo kgathalela?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools le @data.workshop.w_safe.tools e e tsenngwang mo go @data.parent_centre.my_tips.title.", + "SourceText": "Making the rule together went well because...", + "text": "Go dira molao mmogo go tsamaile sentle ka gonne...", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! O ka bona didirisiwa tse di tobileng, ka diteng tse di oketsegileng le ditlamelwana mo @global.parent_centre nako nngwe le nngwe. \n\nO setse o ka kgona go bona ditlhabotlhale tse dingwe tsa motheo tse di tla thusang ka go dira melao mo tlase ga @global.parent_centre.", + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Ba tlotlile ka mabaka a a dirileng gore molao o nne teng \n* @global.w_rules_female_caregiver_1 o reeditse dikakantsho tsa ga @global.w_rules_teen_boy \n* Molao o ne o utlwala sentle, o totobetse e bile o le tekatekano \n* @global.w_rules_female_caregiver_1 o akgotse @global.w_rules_teen_boy go thusa gore ba dire molao", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy o ne a itse gore @global.w_rules_female_caregiver_1 wa gagwe o mo rata ka gonne...", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nRe tlile go go neela tshegetso e oketsegileng ka seno mo nakong e e tlang @global.weekly_workshops fa o ka rata go itse mo go oketsegileng!", + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* O mo akgotse\n* O ne a mo duela fa a fetsa go latela molao", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Diteng tse di bulwang ka dipotso tseno jaanong di ka bonwa mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Melao ya mo gae e thusa gore basha ba rona ba sireletsege, le gore ba tlhaloganye se ba tshwanetseng go se dira. Fa o dira gore bana ba dingwaga tsa bosha ba thuse go dira melao go nna motlhofo gore ba e latele.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "O sa tswa go bula workshop ya ntlha!", + "SourceText": "TEAM RULES", + "text": "MELAO YA SETLHOPHA", "type": "template", "note": "" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Re a itse seno se bokete. O ka sekaseka ditlhabobotlhale dingwe tse di thusang mabapi le ka fa o ka dirisang nako o na le mosha wa gago ka teng mo tlase ga @data.parent_centre.my_tips.location_text kgotsa o ka leba gape @data.workshop.w_1on1.in_text_title.", + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Rulaganya melao LE mosha wa gago. Simolola ka molao wa ntlha o le mongwe fela - o ka nna wa oketsa ka o mongwe morago. Tlotla mabaka a a dirang gore go nne le molao o bo o reetsa maikutlo a bone.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "O dirile sentle ka go simolola ka motheo ono o o siameng! O ka nna wa sekaseka @data.workshop.w_1on1.in_text_title go bona megopolo e mengwe mabapi le go fetsa nako mmogo.", + "SourceText": "REAL RULES", + "text": "MELAO YA MMATOTA", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Go dirisa app eno go bontsha gore o kgathalela mosha wa gago. O ka nna wa sekaseka gore o ka dirisa kakgolo jang fa tlase ga @data.parent_centre.my_tips.location_text.\n\nGo bona ditlhabobotlhale tse dingwe mabapi le go dirisa bokgoni jono sentle, o ka leba gape @data.workshop.w_praise.in_text_title.", + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "E dire gore e nne ya mmatota gore basha ba gago ba kgone go e dira, le gore e utlwale sentle le go totobala gore e tlhaloganyege sentle. E seng ‘ka nako’ mme ‘ka 7pm’.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "Go gontle gore o akgola mosha wa gago! Seno se dira gore ba ikutlwe ba le botlhokwa – thotloetso ya gago e kaya go le gontsi. \n\nGape o ka leba lekgetlo la bobedi @data.workshop.w_praise.in_text_title go bona ditlhabobotlhale tse dingwe mabapi le gore o dirise bokgoni jono sentle jang.", + "SourceText": "PRAISE RULES!", + "text": "MELAO YA GO AKGOLA!", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Go gontle gore eno e ne e le beke e e molemo!\n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Akgolela mosha go rulaganya molao le wena, o bo o mo akgolela go o latela!", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Go gontle gore o ikutlwile o kgobile makgwafo gantsi mo bekeng eno! \n\nRe tla nna re go gopotsa gore o iketle, gakologelwa mme o iteboge, go go thusa go tswelapele o kgona go laola go tshwenyega mo maikutlong ga gago le gore o ikutlwe o kgobile makgwafo.", + "SourceText": "Let's practice making rules.", + "text": "A re itlwaetseng go dira melao.", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Re a tlhaloganya gore botshelo bo ka ngamola pelo go le kana kang. Re tla go gopotsa letsatsi le letsatsi gore o iketle, go lemoga gore o kgonne le go iteboga, go go thusa go kgona go laola kgatelelo ya gago ya maikutlo le gore o ikutlwe o kgobile makgwafo.\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Ke molao ofe o le nosi o o botlhokwa o mongwe le mongwe wa lona a ka ratang go o dira le basha ba lona? \n* O akanya gore mosha wa gago o tla akanya eng ka ga molao oo? \n\nGakologelwa, dira melao gore e nne e e maleba le ya mmatota!", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Go itlhokomela le go go thusa o ikutlwe o kgobile makgwafo fa dilo di nna bokete, re tla nna re go gopotsa gore o iketle, o lemoge le gore o iteboge. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "Here are some of the rules other families created:", + "text": "Fano ke melao mengwe e malapa a mangwe a e dirileng:", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela gore o buile nnete. Go ka nna bokete go laola go tshwenyega mo maikutlong ga rona. Gantsi o ka bona ditsela tsa go laola go tshwenyega mo maikutlong tse di thusang tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Mosha a ka tshameka kwa ntle fa a sena go fetsa tirogae ya sekolo\n* Maloko otlhe a lelapa ba ja mmogo dijo tsa maitseboa\n* Mosha 1 o tlhatswa dijana ka Sontaga le Mantaga, Mosha 2 ka Labobedi le Laboraro\n* Re buisana mmogo ka bonolo le tsela e ntle\n* Fa o reeditse mmino o tshwanetse go dirisa di-earphones", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Go gontle. Fa go ka nna le kgatelelo epe ya maikutlo kgotsa go sa utlwane ka baka la madi mo lelapeng la lona mo nakong e e tlang, o ka nna wa sekaseka @data.workshop.w_money.in_text_title kgotsa @data.parent_centre.my_tips.location_text!", + "SourceText": "Remember that YOU matter!", + "text": "Gopola gore O botlhokwa!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Go tshwenyega ka madi go ka tlhakanya tlhogo. \n\nNako le nako fa go nna le go sa utlwane ka madi mo lelapeng la gago, batla ditlhabobotlhale mo go @data.workshop.w_money.in_text_title kgotsa kafa tlase ga @data.parent_centre.my_tips.location_text!", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "Ke lebogela go lemoga maikutlo a a siameng. Ke itumelela go utlwa gore lo tsogile sentle gompieno!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. Gore re le tlhokomele le go le thusa go ikutlwa le kgobile makgwafo fa dilo di nna bokete, re tla nna re le go gopotsa gore lo iketle, le lemoge gore le kgonne le go iteboga. O botlhokwa!\n\nO ka bona megopolo e mengwe ya go laola go tshwenyega mo maikutlong mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", + "text": "Ke lebogela go lemoga maikutlo a a thatanyana. Botshelo bo ntse jalo, ka dinako tse dingwe go nna thata. Gopola gore ga o nosi.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e boima ka mosha wa gago. \n\nRotlhe re ikutlwa re gateletswe ka dinako dingwe, mme go tswelela o dirisa @global.parent_app ke kgato e ntle ya go thusa wena le lelapa la gago!\n\nDilo tsa rona di thusitse diketekete tsa batsadi le malapa gore ba se tshwenyege thata mo maikutlong le go nna le nako e e siameng mmogo. Re fano go go tshegetsa.", + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Dirang dimmapa tse pedi mmogo le basha ba gago tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Re lebogela o kgonne go bua nnete – mme re maswabi gore o nale nako e e bokete ka mosha wa gago. \n\nRe solofela didirisiwa tsa rona tsa go laola go tshwenyega mo maikutlong di tla nna di go thusa gore o ikutlwe o kgobile makgwafo mo maemong a a thata. O kgona go di bona mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Fa lo sa dira seo mmogo ga jaana, dira dimmapa tse pedi le basha ba gago tsa mafelo a a sireletsegileng le a a sa sireletsegang:\n* Mmapa wa motse wa gago\n* Mmapa wa ditiriso le diwebosaete tse mosha wa gago a di dirisang \n\nNetefatsa gore lotlhe lo itumetse ka thulaganyo ya tshireletsego. \n\nSelo sa botlhokwa ke gore o bue le mosha wa gago fa o ntse o dira seno - gantsi basha ba itse go le gontsi go re feta ka mafelo a a sireletsegileng le a a sa sireletsegang!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Seno ke bothata jo bo tshwenyang batsadi gongwe le gongwe. Gopola go dirisa bokgoni jo bosha gore o tswelele o nna le puisano e e siameng le mosha wa gago. \n\nO ka sekaseka ditlhabobotlhale tsa motheo tsa go rulaganya tshireletsego ya mosha wa gago mo go @global.weekly_workshop kgotsa tlase ga @data.parent_centre.my_tips.location_text!", + "SourceText": "map risks and support with their teens", + "text": "bona dikotsi le tshegetso le basha ba bone", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla atla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa!\n\nGopola, o ka bona didirisiwa tse di remeletseng mo go seno, mafoko a mangwe a a kwadilweng le ditsompelo mabapi le seno mo go @global.parent_centre nako nngwe le nngwe. Gape o ka kgona go sekaseka ditlhabobotlhale tsa motheo mabapi le melao le go rulaganyetsa thulaganyo mo tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "map risks and support with your teen", + "text": "bona dikotsi le tshegetso le mosha wa gago", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Go nna motsadi ga go bonolo. Go ka nna bokete go itse gore o ka boloka basha ba rona ba sireletsegile jang. Gantsi re ikutlwa re sena matla jaaka batsadi mo go seno, mme fela re fano go go tshegetsa! Gopola, o ka bona didirisiwa tse di remeletseng mo go seno, mafoko a mangwe a a kwadilweng le ditsompelo mabapi le seno mo go @global.parent_centre nako nngwe le nngwe. \n\nGape o ka sekaseka ditlhabobotlhale tsa motheo mabapi le go dira melao tlase ga @data.parent_centre.my_tips.location_text.", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Nna le mosha wa me ga re dumalane ka gore ke mafelo afe le mafaratlhatlha afe a a sa sireletsegang.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Go nna motsadi ga go bonolo. O dirile sentle ka go tlhoma mogopolo mo go sireletseng mosha wa gago. \n\nGopola, o ka kgona go bona tshegetso e nngwe ka seno mo go @data.workshop.w_safe.in_text_title nako le nako fa o e batla!", + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "O dirile sentle wa leka tiro eno! Fa re reetsa basha ba rona, le fa re sa dumalane le bone, re ithuta go tlhaloganya gore ba akanya jang. Leka go batla nako go dira tiro eno gape - leka go reetsa ka kelotlhoko mme o bontshe gore wa di tlhaloganya pele ga o abelana ka dikakantsho tsa gago.", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Gopola gore o ka kgona go bona ditlhabobotlhale di le dintsi tse di thusang le didirisiwa mo go @global.parent_centre - o ka kgona go di bona nako nngwe le nngwe fela!", + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "Mosha wa me o lemogile ntlo ya motho yo ke tshepang gore ga e a sireletsega. Ke ne ke tshogile mme ke sa itse gore nka dira eng.", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "A go na le basha mo lelapeng la gago?", + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Go a tshosa go ithuta gore batho ba re atamalaneng le bone le ba re ba tshepang ba ka nna kotsi mo basheng ba rona. Gopola go ema go se kae fa o ngadile, mme o leke go reetsa mosha wa gago o kgobile makgwafo. Batla mongwe yo o ka buang le ene ka seno, gongwe tsala kgotsa tirelo ya tshegetso, gore o kgone go nna le tshegetso e o e tlhokang.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "App eno e tsepametse mo malapeng a a nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola mo lelapeng la gago!", + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "Ngwana wa me wa mosha o gatelela gore bara (kgotsa lefelo le lengwe le ke sa dumeleng gore le na le tshireletsego) ga le borai gore a le etele. Ga ke itse gore ke dire jang gore ngwanake wa mosha a ntumele.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "A go na le bagolo mo lelapeng la gago?", + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Seno se ka tlhakanya tlhogo tota. Go bona tharabololo ya seno, ngwana wa gago wa mosha o batla go ikutlwa gore o a reediwa - ka jalo reetsa mabaka a ngwana wa gago wa mosha o wetse makgwafo, e be e le gone o bua dikakanyo tsa gago. Morago, akanyang mmogo ka molao o o ka letlelelang gore ba ijese monate mme gone ba nna ba sireletsegile.", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "App eno e tsepametse mo batsading bao ba nang le basha ba dingwaga tsa @global.teen_age_bracket, mme o letlelelwa go tswelela - o ka nna wa ithuta le dilo tse di nang le mosola!", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "Jaaka mogolo, ke ikutlwa ke na le boikarabelo jwa go sireletsa - mme fa ke bolelela ngwanake wa mosha gore ke eng se se sireletsegileng le se se sa sireletsegang, o a galefa.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "A o a tlhomamisa gore o batla go tlola potso eno?", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Basha ba rona ba ka itse dilo ka tikologo ya rona le thekenoloji tse rona re sa di itseng. Fa re tsenya basha ba rona ka tlhagafalo mo go rulaganyeng ditiro e bile re ba reetsa tota, ba ikutlwa ba reediwa e bile ba le botlhokwa, mme go ka nna motlhofo go tla ka leano le mongwe le mongwe a dumalanang le lone.", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "A o netefetse gore o batla go tlola potso e? Gopola, karabo ya gago e tlile go tsholwa e le sephiri mme e tlile go re thusa go tlhaloganya ditlhokego tsa gago tsa botsadi.\n\nO ka tlhopha le go se arabe potso nngwe le nngwe ka go tlhopha tshekeletsa", + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Go ne go le bokete go bona ditlamelwana tsa tshegetso mo motseng wa rona, ka gonne ga ke itse motse wa me sentle /ga go na ditirelo tse di kalo mo go one.", "type": "template", "note": "" }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "O tlhophile “Ke tlhopha go se arabe”", + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Go bokete go itse sengwe le sengwe ka tikologo ya rona. Akaretsa leloko le lengwe la lelapa kgotsa tsala lo dira tiro nngwe. O kgona le go etela ditirelo tse di leng gone mme o ba botse gore ba dira eng. Fa re itse go le gontsi, re ka kgona go boloka malapa a rona a sireletsegile!", "type": "template", "note": "" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Go siame!\n\nGopola, fa o araba, dikarabo tsa gago di tlile go tsholwa di le poraevete mme di tlile go re thusa go go neela diteng tse di maleba go wena.", + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Ga ke itse go le gontsi ka thekenoloji, ka jalo ga ke itse gore nka bua jang le mosha wa me ka yone.", "type": "template", "note": "" }, { - "SourceText": "Customise for your needs", - "text": "Direla ditlhoko tsa gago", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Ga go na bothata gotlhelele! O santse o ka tshegetsa mosha wa gago. Kopa mosha wa gago gore a tlhalose didiriswa tse a di dirisang - o ka dira seno ka nako ya fa lo ipha nako mmogo. Eno ke tshono e ntle ya go bontsha kgatlhego mo botshelong jwa mosha wa gago mme lo buisane ka dikotsi tse di ka diregang. Fa o sa tlhomamisega ka gore o beye melao efe, lo ka nna lwa dumelana, le mosha wa gago, go leka molao o mosha mo dibekeng tse pedi mme lo buisane ka gore dilo di tla jang le go fetola molao fa go tlhokega!", "type": "template", "note": "" }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Motsadi mongwe le mongwe mo lefatsheng wa retelelwa mo dinakong tseno tse di bokete. Potso e e latelang ka maitemogelo a gago a go nna motsadi go tla re thusa go go batlela tshegetso e o e tlhokang.\n\nBua nnete. Gopola gore ga o nosi! Gopola gore dimilone tsa batsadi ba ikutlwa jaaka wena, mme rotlhe re tshwanelwa ke go tshegediwa.", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Mokgele wa gago e ne e le go bona dikotsi le ditsamaiso tsa tshegetso le mosha wa gago - ka bobedi mo tikologong ya gago gammogo le mo mafaratlhatlheng.", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Go thata go bona nako ya go itumela le mosha wa gago.", + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Mosha a ka fetsa nako e ntsi a le kwa ntle kgotsa mo inthaneteng, kwa go leng thata gone gore re ka ba sireletsa. \n\nGo buisana mmogo ka mafelo a a sireletsegileng le a a sa sireletsegang, go thusa thata!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Ke malatsi a le kae mo bekeng e e fetileng a o kgonneng go neelana ka nako ya gago mme lwa dira sengwe se lo se ratang le bone?", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga tshireletsego ya basha. \n\nKe maikarabelo a batsadi go boloka basha ba bone ba sireletsegile ka dinako tsotlhe. Re tshwanetse go tlhomamisa gore basha ba rona ba sireletsegile mo lefelong le re nnang mo go lone. Ke maikarabelo a rona go dira gore ba itse mafelo a a sireletsegileng le a a sa sireletsegang a re nnang mo go one. \n\nGape ke maikaraelo a rona go tlhomamisa gore ba tlhaloganya dikotsi tse ba ka tsenang mo go tsone fa ba le mo inthaneteng. Ka tsela eo basha ba rona ba tla nna le maikarabelo le go kgona go dira ditshwetso tse di siameng gore le bone ba itshireletse.", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_1on1.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Tlotlang mmogo:\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Mo go tshwaregeng ka botshelo jwa rona go bokete go tlhomamisa mogopolo mo dilong tse di siameng.", + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dirang go boloka mosha wa gago a babalesegile?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "O akgotse mosha wa gago ga kae mo bekeng e e fetileng?", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana. \n\nFa tlase go na le mafelo a a ka thusang", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_praise.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng.\n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "This is a very stressful time for families.", - "text": "Eno ke nako e e tshwenyang maikutlo mo malapeng.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Ke malatsi a le kae a o neng o ikutlwa o tshwenyegile mo maikutlong jaaka motsadi/motlhokomedi mo bekeng e e fetileng?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Taka ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Lemoga kafa ba dirisang webo sentle ka teng! \n* Akanyang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", "type": "template", "note": "" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Ka dinako tse dingwe bana ba rona ba dira gore re utlwe botlhoko thata.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Mo bekeng e e fetileng o omantse kgotsa o goile mosha wa gago malatsi a le kae?", + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Nako le nako fa o rulaganya kgotsa o boloka thulaganyo ya tshireletsego, tobetsa @global.parent_point o bo o itumelela katlego ya gago!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "O dirile sentle. Saense ya boboko e bontsha gore go laola kgalefo ya gago go tla tokafatsa tsela e boboko jwa mosha wa gago bo golang ka gone. Nna motlotlo ka wena.", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "A re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le ao a sa babalesegang: \n* Mmapa wa motse wa rona \n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng \n\nLo tla dira se se tshwanang le mosha wa gago e le katiso ya legae mo bekeng eno - fa mosha wa gago a le fano ga jaana, lo ka dira seno mmogo gone jaanong!", "type": "template", "note": "" }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Madi ke nngwe ya tse dikgolo tseo di dirang gore malapa a tshwenyege mo maikutlong ga jaana.", + "SourceText": "My family can join in now!", + "text": "Lelapa la me le ka nna la tsena jaanong!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "O ikutlwile o tshwenyegile kgotsa o akanya thata ka madi malatsi a le kae mo bekeng e e fetileng?", + "SourceText": "Let me try it out by myself", + "text": "Tla ke e leke ka bonna", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Ke malatsi a le kae mo kgweding (malatsi a 30) e e fetileng mo o o neng o felelwa ke madi a go duelela dijo?", + "SourceText": "Safety Plan", + "text": "Thulaganya ya Tshireletsego", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_money.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Go boloka basha ba rona ba sireletsegile, re tlhoka go tlhaloganya boemo jo bo kotsi jo ba ka tsenang mo go jone!\n\nA re direng dimmapa tse pedi mmogo tsa mafelo a a babalesegileng le a a sa babalesegang:\n* Mmapa wa motse wa rona\n* Mmapa wa ditiriso/diwebosaete tse re di dirisang mo inthaneteng\n\nA re direng mmapa tseno jaanong re le setlhopha. \n\nO tla dira se se tshwanang ka basha ba gago e le ikatiso ya kwa gae mo bekeng eno.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Go tshwenya mo maikutlong tota fa bana ba sa itshware sentle.", + "SourceText": "Step 1: What are important places in your community?", + "text": "Kgato 1: Ke mafelo afe a a botlhokwa mo lefelong la lona?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Ke matsatsi a makae mo bekeng e e fititileng a o kileng wa kgalema bana ba gago ka go ba betsa, go ba kgwathisa kgotsa go ba betsa ka seatla kgotsa sediriswa, thupa kgotsa lepanta?", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Batla pampitshana (kgotsa lekwalodikgang la kgale kgotsa bokose ya khateboto) le pene. \n* Taka mmapa wa lefelo le mosha wa gago a nnang mo go lone, o o nang le ditshwantsho tsa mafelo otlhe a botlhokwa jaaka ditsela, ntlo ya gago, sekolo, mafelo a ngwana wa gago wa dingwaga tsa bosha a a etelang.", "type": "template", "note": "" }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Go gontle fa o araba o kgobile makgwafo fa mosha wa gago a dira sengwe se se tenang. Ba ka ithuta go le gontsi go tswa mo go wena!", + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Kgato 2: Ke mafelo afe a a sireletsegileng le a a sa sireletsegang?", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_stress.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Tlotlang mmogo:\n\n* Ke mafelo afe mo mmapeng wa gago a a sireletsegileng mo basheng \n – A THEKELETSE \n* Ke mafelo afe mo mmapeng wa gago a a sa sireletsegang mo basheng \n – A THALELE \n* Ke eng se se dirang gore lefelo le sireletsege kgotsa le seka la sireletsega? \n* Wena le mosha wa gago lo ka dira eng go boloka mosha wa gago a babalesegile?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Go thata go tsamaisana le mosha wa gago fa ba ikemela.", + "SourceText": "Step 3: Where can you get support?", + "text": "Kgato 3: O ka bona tshegetso kae?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Ke malatsi a le kae mo bekeng e e fetileng mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ka dinako tse dingwe, re ka iphitlhela re le mo mathateng. Tlotlang mmogo:\n \n* Wena le mosha wa gago lo ka batla tshegetso kae fa lo lebana le mathata a a masisi? \n – TSHWAYA mafelo ao ka selo se sennye jaaka leje kgotsa pampitshana.", "type": "template", "note": "" }, { - "SourceText": "This is good to hear.", - "text": "Seno se molemo go se utlwa.", + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Kgato 4: Ke mafelo afe a a kotsi mo inthanete mme o ka a dira gore a sireletsege jang?", "type": "template", "note": "" }, { - "SourceText": "Were you in lockdown this week?", - "text": "A o ne o lotleletswe mo bekeng eno?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Takang ditshwantsho tsa ditiriso le diwebosaete tse basha ba gago ba ka di dirisang \n* Akgolanang ka bolona ka ka fa ba dirisang webo sentle ka teng! \n* Buang ka gore ke dife tse di ka tswang di sa sireletsega. Goreng? \n** Ke eng se wena le mosha le ka se dirang gore tiriso ya inthanete e nne e e sireletsegileng mo mosheng wa gago le ditsala tsa gagwe?", "type": "template", "note": "" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Go gontle gore o lemoga se mosha wa gago a se dirang. Go nna motsadi go bokete, mme o dira sentle go mmoloka a sireletsegile.", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", "type": "template", "note": "" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Ke malatsi a le kae mo bekeng mo go neng go sa lotlelelwa mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Eno e nnile nako e bokete thata ya go nna motsadi. O tshwanetse go nna motlotlo ka sengwe le sengwe se o se dirileng. \n\nAkanya ka nako yotlhe e o dirileng gore mosha wa gago a nyebe ka yone le tlhokomelo yotlhe e o mo neileng yone. Batsadi ba a gakgamatsa, le wena wa gakgamatsa!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_safe.tools e tsenyeleditswe mo @data.parent_centre.my_tips.title.", + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "Go boloka mosha wa gago a sireletsegile, go a thusa go tlotla le bone ka tikologo ya gago le maitemogelo a bone a mafaratlhatlha. \n\nFeleletsa @local.workshop_data.in_text_title mme o bone gore o ka dira seno!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "We all want to keep our children safe.", - "text": "Rotlhe re batla go boloka bana ba rona ba sireletsegile.", + "SourceText": "Hi @fields.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Dumela @fields.user_name! O gaufi le bokhutlho ba tirelothuto ya @global.parent_app! Re lebogela maitlamo a gago a goya-go-ile.\n\nBeke eno tirelothuto e ka ga go tshola mosha wa gago a bolokesegile, mo mafaratlhatlheng le mo motseng selegae.Itumele!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "Ke malatsi a le kae mo kgweding e e fetileng (malatsi a 30) mo o kileng wa bua le mosha wa gago ka go ipoloka a sireletsegile mo tirisong dikgoka ya tlhakanelo dikobo mo mafaratlhatlheng kgotsa ka namana?", + "SourceText": "Hi @fields.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", + "text": "Dumela @fields.group_name! O gaufi le bokhutlho ba tirelothuto ya @global.parent_app! Re lebogela maitlamo a gago a goya-go-ile.\n\nBeke eno tirelothuto e ka ga go tshola mosha wa gago a bolokesegile, mo mafaratlhatlheng le mo motseng selegae.Itumele!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Seno e ka nna fa ba ikentsha le ditsala, kgotsa ba bua ka diwebosaete tse ba di dirisang.", + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "O setse o kgonne go ithuta bokgoni jo bontsi jwa go godisa bana mo dibekeng tse di fetileng!\n\nFeleletsa workshop e e latelang go iponela sedirisiwa se se nngwe.", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Re na le kgwetlho e ntšha jaanong – go sireletsa basha ba rona go COVID-19.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Go bonala o sa fetsa @local.workshop_data.in_text_title ga jaana. Go dira thulaganyo le mosha wa gago go ka thusa go thibela mathata a le mantsi - leka go dira jalo pele go o tswelela!\n\nO dirile sentle go dirisa @global.parent_app go tshegetsa balelapa la gago.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Ke malatsi a le kae ao mosha wa gago a ileng a nna a sireletsegile ka go tsenya mmaseke, a katogane le batho le go nna kgakala le mo mafelong a a tletseng ka batho?", + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Re a go akgola, o feditse @local.workshop_data.in_text_title. Kamoso, go tla bo go na le workshop e ntšha ya go thusa wena le balelapa la gago go dirisana le seemo sepe fela – fa le dira mmogo le ka kgona go dira go le gontsi thata!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "E ka nna kgwetlho go sireletsa mosha wa gago go COVID! Re ntse re rulaganyetsa go tla ka dikakantsho - mo bogautshwaneng o tla di bona mo @global.parent_centre.", + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "A re akanye ka se se diragaletseng @global.w_safe_teen_girl_1:", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Go gontle. Re ntse re rulaganyetsa go tla ka dikakantsho tsa go boloka mosha wa gago a sireletsegile go COVID - mo bogautshwaneng o tla di bona mo@global.parent_centre.", + "SourceText": "What was risky about that situation?", + "text": "Boemo joo bo ne bo le kotsi ka eng?", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest", - "text": "Re lebogela gore o buile nnete", + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "Tlotla", + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo tlhotlheletsa", "type": "template", "note": "" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Neelana ka maikutlo a gago, mme o rotloetsa mosha wa gago go bua ka matshwenyego a gagwe. Le tla tlhaloganyana botoka mme le ka dira leano mmogo la go nna le itekanetse le itumetse!", + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Go tsamaya le monna yo mogolo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo", "type": "template", "note": "" }, { - "SourceText": "CAUTION", - "text": "Ela tlhoko", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo", "type": "template", "note": "" }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Amogela kitsiso ya gago go tswa mo metsweding e tshepagalang ya kitso gore o kgone go nna le boitshepi mo nakong tse di sa tshepagaleng tse. Re utlwa ebile re bona dikgang tse dintsi ka batho, megala ya letheka, TV le inthanete. Aa se se dira o ikutlwe o belaela, tshwenyega, tshoga, galefa kgotsa go tlhakatlhakana? Tlhola pele o phatlhalatsa kgotsa o dira sengwe!", + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", "type": "template", "note": "" }, { - "SourceText": "CHOOSE", - "text": "TLHOPHA", + "SourceText": "All those things are true!", + "text": "Dilo tseo tsotlhe ke boammaaruri!", "type": "template", "note": "" }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Go dira ditshweetso tse di nepagetseng go boloka botlhe ba sireletsegile ebile ba phetse sentle go thata. Segolo mo dinakong tsa jaanong! O ka thusa mosha wa gago go dira ditshweetso tse di siameng.", + "SourceText": "Let's think about our teens' online safety.", + "text": "A re akanye ka tshireletsego ya basha ba rona mo inthaneteng.", "type": "template", "note": "" }, { - "SourceText": "CHILL", - "text": "IKETLE", + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Ke kotsi efe e basha ba ka kopanang le yone mo inthaneteng malatsi a?", "type": "template", "note": "" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Rotlhe re ikutlwa re tshwenyegile ka nako dingwe. Hemela kwa teng kgotsa o dire sengwe se se monate. E ka dira pharologanyo e kgolo go dira lelapa la gago la boitumelo le kagiso! Fano ke dikakanyo tse o ka di lekang:", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano", "type": "template", "note": "" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Menagano e e sa siamang e dira gore re bue ebile re dire dilo tse di sa siamang. Leka go fetola dilo tse o di buang le tse o di naganang tse di sa siamang gore e nne tse di siameng!", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe", "type": "template", "note": "" }, { - "SourceText": "A teen sometimes does something because they:", - "text": "Mosha nako nngwe o dire sengwe ka gore:", + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye", "type": "template", "note": "" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "- Utlwelela ditsala tsa bona\n- Batla go dira seo bangwe ba se dirang\n- Nagana thata ka 'jaanong' go na le 'mankgapele'\n- Lerato le na le matlhagatlhaga mme le ka bona go elatlhoko go tswafisa\n- O seke wa tshwenyega ka go lekelela, o ka rata go lekelela\n- Nna le maitemogelo a mannye go itshepela mo go one.\n_ Go fisega go leka sengwe - go sa kgathalesege gore go diregang", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa", "type": "template", "note": "" }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Go ka thusa go nna le seno mo mogopolong fa ngwana wa gago a tsaya tshwetso e e sa siamang. Bua le bona mme le fetse nako mmogo gore o kgone go ba thusa go tlhopha bokaone mo nakong e e tlang!", + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", "type": "template", "note": "" }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Go tlhaloganya gore mosha wa gago o ikutlwa jaang le gore o ka ba tshegetsa jaang, go dira pharologanyo e kgolo mo go lona ka bobedi. Leba mosha wa gago mme o botse gore o ikutlwa jaang. Tobetsa sefatlhego fa tlase go itse go le gontsi:", + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Puisano ke selo sa botlhokwa tota!\n\nA re boneng gore go diragetseng ka @global.w_safe_female_caregiver le @global.w_safe_teen_girl_1:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Hopeful", - "text": "Tsholofelo", + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: \"Go diragetse sengwe fa ke tswile le ditsala tsa me @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Mpolelele, @global.w_safe_teen_girl_1\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Self-esteem", - "text": "Maemo a bowena", + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Monna yo o mo koloing: “Dumela montlenyane. Ke ntse ke go lebeletse. O montle tota, leina la gago ke mang? \n\n@global.w_safe_teen_girl_2: “Leina la gagwe ke @global.w_safe_teen_girl_1”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Basha ba na le diphitlhelelo le ditoro ka isago - gaufi le kgakala!", + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Monna yo o mo koloing: “@global.w_safe_teen_girl_1, a ga o batle go tsamaya le nna re ye go reka sengwe sa go nwa le ditšhipisi? Tlaya, tsena mo teng, o tla boa ka nako, ke a go tshepisa...” \n\n@global.w_safe_teen_girl_1: “Ga ke akanye gore ke kakanyo e ntle eo...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Botsisa mosha wa gago ka diphitlhelelo le ditoro tsa gagwe, mo rotloetse go nagana ke se ba se batlang mo isagong ya bona mme le dire leano mmogo la go di fitlhelela.", + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “O lesego, tsala ya me. Ke eletsa e kete monna a ka NKOPA gore ke tswe le ene a bo a nthekela dimpho. Ke a go bolelela, fa o sa dire jalo ke ya go bolelela batho botlhe gore o sematla!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_2 should not be translated." }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Rorisa mosha wa gago fa a fitile mo boimeng mme o mo tshegetse ka fa o kgonang.", + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 o seka wa tsamaya! Ikele tlhoko! A reye gae. Go kotsi go tsamaya le batho ba o sa ba itseng. Ntle le moo, o mogolo mo go wena e bile se a se dirang ga se a siama.\"\n\n@global.w_safe_teen_girl_1: “Tota ga ke itse...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "Maemo a mosha ka bo-ene a dira ke gore o nagana a le jaang.", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: “Pfff, ke motlotlo ka wena gore ga o a tsena mo koloing. E ne e le boemo jo bo kotsi, ke lebogela gore o mpoleletse!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Rotloetsa tsela ya go iteba e e siameng, dira sekao ka go se itshege kgotsa go inyenyefatsa ka nako tsotlhe. Itse bokgoni ba mosha wa gago mme o tshegetse makoa a gagwe.", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "A re lebe mmogo sekai se sengwe sa boemo jo bo kotsi.", "type": "template", "note": "" }, { - "SourceText": "Lonely", - "text": "Bonosi", + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: “Tsala ya me e ntse e bua le mosimane wa thaka ya rona mo inthaneteng... O tlile go mo romelela ditshwantsho tsa gagwe. A go botoka ka gonne ke thaka ya rona?”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Anxious", - "text": "Maikutlo a a sa iketlang", + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: “O tsala e e molemo go bo o tshwenyegile ka ene. Go romela ditshwantsho o sa apara go kotsi tota.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Basha ba ka ikutlwa ba le nosi le fa ba na le batho. Ba ka ikutlwa okare ga ba na motho yo ba ka buang le ene, go mo tshepa le go neelana.", + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: “Ka dinako tse dingwe batho ga ba nna jaaka ba bua mo inthanete - a ka nna a re ke thaka ya gago kante ke monna wa dingwaga tse 50. Kgotsa fa ba kgaogana, a ka nna a romela ditshwantsho tseo kwa bathong botlhe e be tsala ya gago e utlwa botlhoko.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Maikutlo a a sa iketlang a tlwaelegile mme a re thusa go mekamekana le maemo a a boima. Mme fela maikutlo a a sa iketlang a a feteletseng kgotsa go tshwenyega go go thibelang basha go dira dilo tse ba di ratang ke bothata.", + "SourceText": "Doing any of these makes you a great parent.", + "text": "Go dira dilo tseno tsotlhe go go dira motsadi yo o molemo.", "type": "template", "note": "" }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Thusa mosha wa gago go senola seo se dirang gore a nne le maikutlo a a sa iketlang mme le dire leano mmogo gore le ka fetola jaang maikutlo aa.", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di dirileng!\n* Kgang le motlotlo - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Go dira ditirwana tsa go iketla mmogo go ka thusa!", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Kgang le go leba kwa morago - tse di dirileng!\n* Kgang le go leba kwa morago - tse di dirileng!\n* Ikatiso ya go rulaganya\n* Didirisiwa: Se o ka se dirang go boloka mosha wa gago a sireletsegile\nDIMMAPA - MELAO - KGOLOLESEGO\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Kgatelelo ya maikutlo", + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "A re bue ka se se diragaletseng @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Self-harm", - "text": "Go ikutlwisa botlhoko", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Tlotlang mmogo: \n\nBoemo joo bo ne bo le kotsi ka eng?", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Go ikutlwa o hutsafetse kgotsa mowa o le kwa tlase, go selekega mo moweng, tsotlhe ke maikutlo a tlwaelegileng a batho. Kgatelelo ya maikutlo e fetsa sebaka se se leele mme ditirwana tsa ka metlha tsa mosha wa gago di ka kgoreletsega. Mosha wa gago a ka ikutlwa a sena tshepo mme a sa rotloetsege go fetola sepe.", + "SourceText": "The situation was risky because...", + "text": "Boemo joo bo ne bo le kotsi ka gonne...", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Go bolela mosha wa gago go 'emisa, go ka gakatsa dilo. Gongwe ba reetse, ba bontshe ka mowa o o repileng gore wa tlhaloganya mme o age boithsepi ba bona. Leka go bona thuso ya profeshenale.", + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Monna yo o mo koloing o ne a gatelela @global.w_safe_teen_girl_1 ka go mo rekela dimpho \n* Tsala ya ga @global.w_safe_teen_girl_1 e ne e mo kgothaletsa \n* Go tsamaya le monna yo mogolo mo go ne go tsenya @global.w_safe_teen_girl_1 mo boemong jo bo kotsi mo a neng a ka gobala kgotsa a patelediwa go dira dilo \n* Basetsana ba le bantsi mo lefelong la rona ba a ima kgotsa ba tsenwa ke HIV ka ntlha ya banna ba bagolo \n* Go ne go sena batho ba ba ikanyegang ba bagolo gore ba mo fe kgakololo @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "What does that mean?", - "text": "Seo se raya eng?", + "SourceText": "Let's talk about our teens' online safety.", + "text": "A re bue ka tshireletsego ya basha ba rona mo inthaneteng.", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "O ka thusa jang?", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Ke dikotsi dife tse basha ba ka kopanang le tsone mo inthaneteng malatsi a?", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Rotlhe re na le megopolo e e sa siamang nako dingwe.", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Bagolo ba dirisa mmedia ya puisano, ditiriso tsa motshameko le tsa melaetsa le diwebosaete go kopana le basha le go ba pateletsa go dira dilo tsa thobalano \n* Batho ba baya dilo mo inthaneteng tse di dirang gore re utlwise ba bangwe botlhoko – jaaka go dira gore go kgokgontsha go lebege go siame, kgotsa go tlhoa lotso le lengwe kgotsa batho ba ba tswang kwa nageng e nngwe\n* Batho ba baya dilo mo inthaneteng go pateletsa basha gore ba ikgobatse kgotsa gore ba ipolaye\n* Basha ba abelana dibidio le ditshwantsho tsa thobalano kgotsa ka tshedimosetso ya bone, e be batho ba e bontsha ba bangwe kgotsa ba e dirisetsa go ba kgopisa\n* Batho gantsi ba ka nna ba se tshware bana ba dingwaga tsa bosha sentle mo inthaneteng – ba ikutlwa e kete ba ka kgokgontsha batho kwantle ka pabalesego", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "\"ke motlholegi\"", + "SourceText": "MAPS", + "text": "DIMMAPA", "type": "template", "note": "" }, { - "SourceText": "What to do?", - "text": "Ke dire eng?", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Dira DIMMAPA le mosha wa gago ka mafelo a a sireletsegileng le ao a sa sireletsegang mo lefelong leo le nnang mo go lone le mo inthaneteng. Buang ka fa a ka bolokang tshedimosetso ya gagwe, ditshwantsho le dibidio e le khupamarama/sephiri mo inthaneteng ka gone. Buang ka ka fa selo se o se tsenyang gangwe mo inthaneteng, se nnang moo go ya go ile ka teng. Ba ka tswa ba itse sekai se se tswang kwa ditsaleng tsa bone.", "type": "template", "note": "" }, { - "SourceText": "Examples", - "text": "Dikao", + "SourceText": "Safety Plan Activity", + "text": "Tiro ya Thulaganyo ya Tshireletsego", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"ke phoso ya gago\"", + "SourceText": "RULES", + "text": "MELAO", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"A re tle ka tharabololo mmogo\"", + "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Dira MELAO le mosha wa gago ka tshireletsego ya go dirisa ditiriso le diwebosaete tse ba di ratang. \n\nA o gakologelwa kgang ka Tshireletsego ya Inthanete? E bone gape fano.", "type": "template", "note": "" }, { - "SourceText": "\"I lost my job\"", - "text": "\"ke latlhegetswe ke tiro\"", + "SourceText": "Online Safety Story", + "text": "Kgang ya Tshireletsego ya Inthanete", "type": "template", "note": "" }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Ke ithutile go le gontsi mo tirong ya me - seo se tla thusa go bona tiro enngwe\"", + "SourceText": "AMNESTY", + "text": "KGOLOLESEGO", "type": "template", "note": "" }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Ga go na motho yo a nkgatlhegelang\"", + "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "text": "Dira tumalano ya KGOLOLESEGO. Fa go direga sengwe se se ba kgopisang, se se sa itumediseng kgotsa se se boifisang, ba ka nna ba bua le wena mme o ka nna wa se galefe kgotsa wa se ba otlhae, le fa ba ne ba dira sengwe se se phoso.\n\nA o gakologelwa kgang ka Tshireletsego ya Kgololesego? E bone gape fano.", "type": "template", "note": "" }, { - "SourceText": "MAKE TIME", - "text": "DIRA NAKO", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Go tlhokomela bana ka dijithale go tshwana le fa o ba tlhokomela ka tsela ya mmatota. O tsere KGATO E KGOLO ya go boloka mosha wa gago a sireletsegile mo lefelong la lona le mo inthaneteng. Go go siametse!", "type": "template", "note": "" }, { - "SourceText": "LISTEN", - "text": "REETSA", + "SourceText": "Resources to help in the community", + "text": "Didiriswa tse di ka thusang mo lefelong la lona", "type": "template", "note": "" }, { - "SourceText": "WORK TOGETHER", - "text": "DIRANG MMOGO", + "SourceText": "Online Safety Resources", + "text": "Ditlamelwa Tsa Tshireletsego ya Inthanete", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "TLOTLANG KA DITLAMORAGO", + "SourceText": "Being a great parent also means taking time to care for yourself every day.", + "text": "Go nna motsadi yo o molemo gape go raya go nna le nako ya go itlhokomela malatsi otlhe.", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "GALALETSA", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Go gontle. E bile go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "Fa sengwe se sa tsamae sentle, botsisa\" O kabo o se direle jang go farologana?\"", - "type": "template", + "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Go nna motsadi go bokete. Mme go a kgatlha go bo o dirisa sediriso seno - go a bontsha gore o motsadi yo o nang le maikemisetso. Tlhomamisa gore o a iteboga le go ikakgolela se o se dirang.", + "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "SIMILOLA GANNYANE", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "O feleleditse workshop ya beke eno.\n\nRe tlile go dira ditiro dingwe tsa go itlhokomela gape fa lo kopana mmogo e le la ntlha le setlhopha sa lona - lotlhe lo tlhoka go nna le nako e e oketsegileng ya go itlhokomela!", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Naya mosha wa gago maikarabelo a mannye kwa tshimologong. fa seo se tsamaya sentle, o ka oketsa go bontsha gore o tshepa mosha wa gago.", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Nako e o kgonang ka yone, iketle, lemoga o bo o ituela. \n\nItlhokomele letsatsi le letsatsi. O botlhokwa!", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi. Re lemogile gore o tobeditse @data.habit.spend_time.in_text_title - o dirile sentle wa gopola!", + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Nako le nako fa o iketla, o gakologelwa sengwe se o se dirileng sentle kgotsa o ituela, tobetsa @global.parent_points go itumelela katlego ya gago!", "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Boikaelelo jwa gago e ne e le go fetsa nako le mosha wa gago lo le babedi.", + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Goreng @data.workshop.w_self_care.short_title?", "type": "template", - "note": "" + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "O dira sentle ka go utulola ditharabololo tsa dikgwetlho tsa gago. Tsamaya o ye go di leka. Kamano ya gago le mosha wa gago e tla tiya le go feta!", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Gantsi ga re nke re itlhokomela mo go lekaneng. Mme go botlhokwa gore re dire jalo, segolobogolo jaaka motsadi! \n\nGo fokotsa go nna le tshwenyega mo maikutlong le go itshwara sentle go tla thusa rona LE bana ba rona ba dingwaga tsa bosha.", "type": "template", "note": "" }, { - "SourceText": "DAY – Do it every day", - "text": "LETSATSI – Dira se letsatsi le letsatsi", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se bua ka go itlhokomela. \n\nGo na le dinako tse re itemogelang dikgwetlho, tse re lebanang le mathata e bile re sa itse gore re dire eng. Go botlhokwa gore re itlhokomele le go itse ditsela tsa ka fa re ka ritibalang ka gone fa re lebane le mathata, dikgwetlho kgotsa fa go tsoga mathata. \n\nFa re ritibetse re mo boemong jo bo siameng jwa go akanya sentle le go tla ka ditharabololo tse di tshwanetseng mo dikgwetlhong dingwe le dingwe tseo re lebaneng le tsone.", "type": "template", "note": "" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "TSHAMEKA – Letla mosha wa gago go tlhopha tiro", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Gopola – beke eno ke kaga WENA! Re solofela o itlhokomela sentle. O tshwanelwa ke seno!", "type": "template", "note": "" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "NNA – Naya mosha wa gago tlhokomelo yotlhe ya gago", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Siimolola workshop e ntšha ya @global.parent_app gotlhelele kamoso. O tla bona dipholo tse di molemo!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Goreng kakantsho eno e go thusitse?", + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "text": "A o setse o boleletse molekane wa gago @global.parent_app kaga sediriso? Go simolola kamoso, o ka simolola go dira di-workshop tsa @global.parent_app mmogo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "\"@local.choice_1\" e thusitse ka gonne...", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Go tlhokomela se re se dirang sentle go re thusa gore re tlhome mogopolo mo dilong tse di siameng. \n\nA re diriseng nako eno gore re ikakgole. Re tla go bontsha gore jang.", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "\"@local.choice_2\" e thusitse ka gonne...", + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.\n\nSe bolelele ba bangwe ka lentswe le le kwa godimo: “Ke ikakgolela...”\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "\"@local.choice_3\" e thusitse ka gonne...", + "SourceText": "Recognise", + "text": "Lemoga", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "" }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Go nna le nako e e rileng ya go dira seno go nthusa go gakologelwa.", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Tsaya nako gore o ikakgole. \n\nJaanong re tla go bontsha gore o dire jang.", "type": "template", "note": "" }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Ka go dira selo ka metlha, nna le mosha wa me re kgona go boloka thulaganyo ya rona e bulegile.", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Akanya ka sengwe se O se dirileng sentle sesheng jaana.", "type": "template", "note": "" }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Go fetsa nako le mosha wa me letsatsi le letsatsi go thusa gore nna le bone/ene re tshepane.", + "SourceText": "\"Well done to me for...\"", + "text": "“Ke ikakgolela...”", "type": "template", "note": "" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Ee ruri, le metsotso e 10 re le mmogo go dira pharologano – seo se dira gore go nne motlhofo go e rulaganya, gaufi le tiro ya gago le ditiro tsa legae!", + "SourceText": "Showing love to my children", + "text": "Go bontsha banake lorato", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "Go letla mosha wa me go tlhopha se se dirwang go dira gore a itshepe.", + "SourceText": "Getting up even though I felt tired", + "text": "Go tsoga le fa ke ikutlwa ke lapile", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "Fa mosha wa me e nna ene a tlhophang, go na le kgonagalo e ntsi ya gore a batle go fetsa nako re le mmogo.", + "SourceText": "Smiling at someone", + "text": "Go nyenya le mongwe", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "Go letla mosha wa me go tlhopha go bontsha gore ke kgathalela se a se kgatlhegelang.", + "SourceText": "Making food to stay strong", + "text": "Go dira dijo gore ke nne ke nonofile", "type": "template", "note": "" }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Ka go amogela dikakantsho tsa mosha wa me, ke bontsha gore ke a mo reetsa.", + "SourceText": "Spending time with my children", + "text": "Go fetsa nako ke na le banake", "type": "template", "note": "" }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "Go bua sengwe se se molemo ka ditlhopho tsa basha ba me go dira gore ba ikutlwe ba tseelwa kwa godimo.", + "SourceText": "Helping my children with schoolwork", + "text": "Go thusa banake ka tiro ya sekolo", "type": "template", "note": "" }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Ke nnete! Mme fa basha ba rona ba tlhopha, ba rotloediwa go rwala maikarabelo mo dikarolong tse dingwe tsa matshelo a bone.", + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Buela kwa godimo fa o kgona.\n\nFano ke sengwe se o tshwanelwang ke go se akgolelwa: O dirile sentle ka go dirisa @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Ka go dira gore go seka ga nna le dikgoreletsi, ke bontsha mosha wa me gore o botlhokwa go gaisa.", + "SourceText": "Things to praise yourself for:", + "text": "Dilo tse o ka di ikakgolelang:", "type": "template", "note": "" }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Le fa ke sa kgone go nna karolo ya ditiro tsa mosha wa me, jaaka metshameko, ke santse nka ba rotloetsa.", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Go bontsha banake lorato \n* Go tsoga le fa ke ikutlwa ke lapile \n* Go nyenya le mongwe \n* Go dira dijo gore ke nne ke nonofile \n* Go fetsa nako ke na le banake \n* Go thusa banake ka tiro ya sekolo", "type": "template", "note": "" }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Fa ke le kelotlhoko, ke kgona go ithuta go le gontsi ka dikgatlhego, dipono le bokgoni tsa mosha wa me.", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "A re e leke le go dira tiro e khutshwane ya go iketla mmogo!", "type": "template", "note": "" }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "Ee! Fa re tlhwaela tsebe basha ba rona ka botlalo, ba tlile go dira se se tshwanang le mo go rona nako nngwe fa re ba kopa sengwe!", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "Re le batsadi, gantsi ga re na nako ya go itlhokomela - mme go botlhokwa thata go dira jalo! Go fokotsa kgatelelo ya maikutlo a rona LE a bana ba rona ba dingwaga tsa bosha. \n\nA re tseye kgato ya ntlha re be re dira tiro e khutshwane ya go iketla mmogo.", "type": "template", "note": "" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Batsadi ba le bantsi ba nna le dikgwetlho mo go nneng le nako ya go buisana le basha ba bone. \n\nFano ke dikgwetlho tse 8 tse di di gaisang tse batsadi ba re boleletseng gore ba nna le tsone fa ba rulaganya kgotsa ba ipha nako le basha ba bone. Fa e le gore o lebane le seno kgotsa o tshaba gore o tla lebana le sone, tobetsa mo go yone go bona se e ka nnang tharabololo. O ka tobetsa mme o sekaseke dikgwetlho tse dingwe morago ga moo.", + "SourceText": "Well done! Try to do this every day.", + "text": "O dirile sentle! Leka go dira seno letsatsi le letsatsi.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "A o nnile le dikgwetlho dingwe fa o leka go ipha nako le mosha wa gago?", + "SourceText": "Have a hot drink", + "text": "Nwa seno se se bolelo", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "O nnile le kgwetlho efe fa o leka go ipha nako le mosha wa gago?", + "SourceText": "Call a friend or relative", + "text": "Leletsa tsala kgotsa wa losika", "type": "template", "note": "" }, { - "SourceText": "I don’t have enough time.", - "text": "Ga ke na nako e e lekaneng.", + "SourceText": "Have a relaxing bath", + "text": "Iketle mo bateng e e tlhapelang", "type": "template", "note": "" }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "Mosha wa me ga a batle go ipha nako le nna.", + "SourceText": "Read", + "text": "Buisa", "type": "template", "note": "" }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "Mosha wa me o batla fela go lebelela TV kgotsa go tshame ka founo ya gagwe.", + "SourceText": "Watch TV", + "text": "Bogela TV", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "Mosha wa me o batla go dira dilo tse di sa babalesegang kgotsa tse di jang madi.", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana. Abelana le ba bangwe:\n\nKe dilo dife tse dinnye tse di dirang gore ke itumele?", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "Mosha wa me o batla go dira dilo tseo nna ke se kitlang ke kgona go di dira ka mmele wa me.", + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi.\n\nO ka nna wa dirisa bokgoni jono kwa gae le go di bona nako nngwe le nngwe mo @global.parent_centre ya gago!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "Mosha wa me o tlhophile motshameko wa go gaisana. Ke mo fentse mme a ngala.", + "SourceText": "Reward", + "text": "Tuelo", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Ke reteletswe ke go khutlhisa nako e ke iphang yone le ene.", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Rotlhe re tlhoka go itshwara sentle!", "type": "template", "note": "" }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Bana ba me botlhe ba batla ke iphe nako le bone ka nako e e tshwanang.", + "SourceText": "What small thing makes you happy?", + "text": "Ke dilo dife tse dinnye tse di dirang gore o itumele?", "type": "template", "note": "" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "Ee, go ka nna bokete go nna le nako motshegare, ka ntlha ya tiro, ditiro tsa legae, le dilo tse dingwe tsotlhe.", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Bontle! Go itlhokomela ke bokgoni jwa botlhokwa jwa go tlhokomela ngwana!", "type": "template", "note": "" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Re maswabi go bo o reteletswe ka seo. Go ka utlwisa botlhoko tota fa bana ba rona ba sa batle go ipha nako le rona.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_1 kgotsa sengwe fela se sele se o se itumelelang.", "type": "template", - "note": "" + "note": "The string @local.name_1 should not be translated." }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Akanya ka nako e mosha wa me a neng a mpuletse mafatlha ka yone, jaaka mo mosong kgotsa pele fela ga nako ya go robala.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_2 kgotsa sengwe fela se sele se o se itumelelang.", "type": "template", - "note": "" + "note": "The string @local.name_2 should not be translated." }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Ke nna gaufi le mosha wa me fa a dira sengwe se a se ratang le go bontsha kgatlhego mo go se a se ratang.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_3 kgotsa sengwe fela se sele se o se itumelelang.", "type": "template", - "note": "" + "note": "The string @local.name_3 should not be translated." }, { - "SourceText": "Do something fun with the whole family.", - "text": "Dira sengwe sa go ijesa monate le ba lelapa la gago lotlhe.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_4 kgotsa sengwe fela se sele se o se itumelelang.", "type": "template", - "note": "" + "note": "The string @local.name_4 should not be translated." }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Go gontle! Go tlhopha nako e mosha wa gago a buang thata ka yone go tla mo thusa gore a go tsibogele sentle fa o leka go ikgolaganya le ene.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", + "text": "Leka go dira sengwe go ituela letsatsi le letsatsi. E ka nna go @local.name_5 kgotsa sengwe fela se sele se o se itumelelang.", "type": "template", - "note": "" + "note": "The string @local.name_5 should not be translated." }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Bontle! Go leba lenaneo la TV le mosha wa gago a le ratang kgotsa motshameko mmogo go tla mo bontsha gore wa mo kgathalela. Nna pelotelele; o tla go bulela mafatlha fa nako e ntse e tsamaya!", + "SourceText": "Things you can do to reward yourself:", + "text": "Dilo tse o ka di dirang go ituela:", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Bontle tota! Nako nngwe go ka nna motlhofo go simolola go ipha nako le lelapa la gago lotlhe. Ka tsela eo mosha wa gago o kgona go gololesega go ipha nako le wena fa nako e tsamaya.", + "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "text": "* Nwa seno se se bolelo \n* Leletsa tsala kgotsa losika \n* Iketle mo bateng e e tlhapelang \n* Buisa\n* Bogela TV", "type": "template", "note": "" }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "Re maswabi gore o nnile le kgwetlho eo. Bana gantsi ba batla go nna ba lebeletse T.V. kgotsa ba tshameka ka sedirisiwa sa eleketeroniki. Re a go akgola gore o nnile pelotelele le mosha wa gago!", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Gompieno o tlile go itemogela ditiro tse 3 tse di ka go thusang go itlhokomela, e bile re tlile go go botsa\ndipotso di le mmalwa go tlhomamisa gore a tiriso e go tshwanetse.", "type": "template", "note": "" }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Akantshana ka dilo tsa go ijesa monate tseo nna le mosha wa me re ka di dirang mmogo.", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Tiro ya go iketla\n* Tiro ya go lemoga\n* Tiro ya go ituela\n* Didirisiwa: Tsela ya go tsenya lenaane la go itlhokomela\n* Dira gore tiriso e go tshwanele\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Batla sengwe se se rutang se nka se dirang le mosha wa me mo sedirisweng sa eleketeroniki.", + "SourceText": "Customise your @global.parent_app", + "text": "Itsenyetse dilo tse o di batlang mo @global.parent_app ya gago", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Botsa mosha wa me gore a mpontshe gore founo/sedirisiwa sa bone sa eleketeroniki se dira jang.", + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Jaanong ka gore re agile bokgoni jwa go itlhokomela, a re tlhomamise gore @global.weekly_workshops tsa gago di a go tshwanela sentle.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "Seo se sentle tota! Fa e le gore o batla thotloetso, fano go na le dikakantsho tse di tswang kwa malapeng a mangwe tsa se lo ka se dirang mmogo. Gopola, letla mosha wa gago a tlhophe.", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Go bonala o setse o feditse thulaganyo ya go itsenyetsa dilo tse o di batlang. O ka nna wa tlola tiro eno.", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Bontle tota!  Go na le didiriswa tse dintsi tsa go ijesa monate le tsa thuto mo difounong tse lo ka di sekasekang mmogo. Botsa dipotso, bontsha kgatlhego, mme gopola go bua sengwe se sentle.", + "SourceText": "RELAX", + "text": "IKETLE", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Bontle! Basha ba rata fa o bontsha kgatlhego mo didirisweng tsa bone tsa eleketeroniki le fa ba kgona go go tlhalosetsa sengwe. Seno ke tshimologo e ntle!", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Dira tiro ya ka bonako ya metsotswana e le 30 ya go iketla.", "type": "template", "note": "" }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Ga o esi fano. Bontsi jwa batsadi ba nna le kgwetlho eno, le bone. Nako e lo e iphang mmogo e tshwanetse go nna e e sireletsegileng ka metlha, mme ga ya tshwanela go ja madi ape!", + "SourceText": "Relax activity", + "text": "Tiro ya go iketla", "type": "template", "note": "" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Tlhalosetsa mosha wa me gore ke ka ntlha yang fa kakantsho ya bone e sa sireletsega kgotsa e sa kgonege mme o ba kope dikakantsho tse dingwe.", + "SourceText": "RECOGNISE", + "text": "LEMOGA", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Akantsha ditiro tse dingwe tsa go ijesa monate tse re ka di dirang mmogo.", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Tsaya nako o bo o akanya ka selo se le sengwe se O se dirileng morago jaana se o se dirileng bontle thata! Buela kwa godimo fa o kgona “Ke ikakgolela ...”", "type": "template", "note": "" }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Bontle! Go botlhokwa tota gore mosha wa gago a tlhaloganye gore ke goreng o se kitla o kgona go dira ditiro tse ba di akantshitseng. Ba kope dikakantsho tse dingwe!", + "SourceText": "Recognise activity", + "text": "Tiro ya go lemoga", "type": "template", "note": "" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Seno se sentle tota! Fa o tlhoka thotloetso, o ka bona dikakantsho tsa ditiro @data.parent_centre.relax_and_activities.location_text. Gopola, letla mosha wa gago go tlhopha tiro!", + "SourceText": "REWARD", + "text": "TUELO", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Ke maswabi go utlwa seno. Basha ba rona ba ka nna ba swaba fa re sa kgone go dira se ba batlang re se dira, jaaka go tshameka metshameko kgotsa go dira ditiro tse di sugang mmele tota. Mme gopola, se se botlhokwa thata ke go ipha nako le bone. Seo se bonala se farologane mo go botlhe!", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Gakologelwa gore le wena o tlhoka nako ya go iketla! Ke eng se se dirang gore o itumele?", "type": "template", "note": "" }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Lebelela mosha wa me a dira tiro mme ke mo kgothatse.", + "SourceText": "Reward activity", + "text": "Tiro ya go ituela", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Akantsha ditiro tse dingwe tsa go ijesa monate tse re ka di dirang mmogo.", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "O amogetswe! Go a itumedisa go nna le wena fano. Beke eno ke ka WENA. \n\nMo workshop eno ya kamogelo o tla: \n* Bona didirisiwa tsa go itlhokomela \n* Direla ditiriso malebana le ditlhoko tsa gago", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Bontle tota! Le fa o lebeletse go na le go dira tiro le bone, o ka bontsha gore o na le kgatlhego ka go supa le go tlhalosa le go akgola mosha wa gago ka se a se dirang!", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Ke a leboga, ke itumela tota go bona gore dilo di tsamaya sentle.", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Seo se sentle tota! Fa o tlhoka thotloetso, o ka bona dikakantsho tsa ditiro @data.parent_centre.relax_and_activities.location_text. Gopola, letla mosha wa gago go tlhopha tiro!", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Tshwarelo gore dilo di bokete jaanong. Go tlwaelegile gore go nne thata ka dinako dingwe. Gopola gore ga o nosi!", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Seno se na le go direga ka dinako tse dingwe! Metshameko ya dikgaisano e ka nna kgwetlho mo basheng (le bagolo!) fa ba sa kgone go amogela fa ba fentswe.", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Ruta mosha wa gago ka dikgato di le nne tsa go rarabolola mathata:\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE \n\nDirisang dikgato tseno mmogo fa mathata a tlhagelela!\n\nFa go direga sengwe se se maswe, gantsi re a kgopisega e be re latofatsa mongwe. Mme se basha ba rona ba se tlhokang ke gore mongwe a ba thuse go batla ditharabololo mmogo. Ba reetse, amogela kafa ba bonang le kafa ba utlwang dilo ka gone, o bo o ba lebogela go go ikanya.\n\nFa o ruta basha ba gago kafa ba ka lwang le mathata ka gone go tla ba thusa botshelo jwa bone jotlhe. Ruri ke mpho!", "type": "template", "note": "" }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Akantsha ditiro tse dingwe tse re ka di dirang mmogo go na le gore re gaisane.", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Mathata mangwe a batsadi ba bangwe ba a rarabolotseng le basha ba bone:", "type": "template", "note": "" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Tshameka metshameko ka ditlhopha, gore ke kgone go kgothatsa mosha wa me fa setlhopha sa rona se latlhegelwa.", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* Mosha wa me ga a batle go ya sekolong\n* Ke tshwenyegile ka gore mosha wa me o tla nna moimana kgotsa o tla imisa mongwe\n* Ke tshwenyegile ka ga se mosha wa me a se dirang mo inthaneteng\n* Mosha wa me o tsamaya le ditsala tse di sa siamang\n* Mosha wa me o motlapa\n* Mosha wa me ga a dire tiro ya gagwe ya sekolo\n* Mosha wa me a ka tswa a dirisa diokobatsi", "type": "template", "note": "" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Gopola, letla mosha wa gago a tlhophe. O ka bona dikakantsho tsa ditiro tse o ka dirang le mosha wa gago @data.parent_centre.relax_and_activities.location_text fa o di tlhoka.", + "SourceText": "resolve problems with their teens", + "text": "rarabolola mathata le basha ba bone", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "Fa wena le mosha wa gago lo le mo setlhopheng se le sengwe, o ka ba thusa gore ba laole maikutlo a bone fa setlhopha sa lona se latlhegelwa.", + "SourceText": "resolve the problem with your teen", + "text": "rarabolola mathata le mosha wa gago", "type": "template", "note": "" }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "Ee, go khutla ga nako e lo e iphileng mmogo go ka nna bokete ka dinako tse dingwe.", + "SourceText": "I forgot the steps of problem solving.", + "text": "Ke lebetse dikgato tsa go rarabolola bothata.", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Bolelela mosha wa me gore, “Re na le motsotso o le mongwe pele ga nako e re iphileng yone e khutla gompieno”, gore mosha wa me a nne a ipaakantse.", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "O tshwanetse go itlwaetsa go dirisa dikgato tsotlhe tse nne tsa go rarabolola bothata. Nako e e tlang fa go nna le bothata, leba dikgato tsotlhe tse nné le mosha wa gago - go tla dira pharologanyo e kgolo!", "type": "template", "note": "" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Itsise mosha wa me gore ke na le nako e kae e re tla e iphang re le mmogo mme o ba kope gore ba nne ba lebeletse tshupanako kgotsa watšhe.", + "SourceText": "I started with the solutions right away.", + "text": "Ke simolotse ka ditharabololo ka gangwe.", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Rulaganya nako e re e iphang mmogo pele ga tiro e nngwe e ratiwang ke mosha wa me.", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "Fa re na le bothata, ka metlha re batla go fitlhelela tharabololo ya ka bonako mme re ka lebala ka dikgato. Go tla ka tharabololo e e gaisang mmogo, go tla thusa pele gore re tlhaloganye bothata ka botlalo le ditharabololo tse di farologaneng.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Bontle tota! Go itsise mosha wa gago pele ga nako, ga a kitla a makala fa nako ya lona lo le babedi e fela. Gape, o ka gopotsa mosha wa gago gore o tlile go ipha nako le ene gape kamoso.", + "SourceText": "Four steps of problem solving", + "text": "Dikgato tse nné tsa go rarabolola bothata", "type": "template", "note": "" }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Go gontle! Ka tsela eo mosha wa gago o tla nna le maikarabelo a go elatlhoko nako mme o tla itse fa nako e tloga e fela. Ba gopotse gore o tlile go ipha nako lo le mmogo gape kamoso.", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Ga re a kgona go dumalana ka tharabololo e re ka e lekang mme ga tsoga ngangisano.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Bontle tota! Fa lo ipha nako lo le mmogo pele ga nako ya dijo tsa maitseboa, o ka nna ka boitumelo wa re, “nako ya rona e fedile. Tla re ipaakanyetse dijo tsa maitseboa le lelapa lotlhe!”", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Ka dinako tse dingwe go ka nna bokete go dumalana le batho botlhe mo lelapeng, segolo jang fa batho botlhe ba sa kgoba makgwafo. Lo ka dumalana go leka tharabololo e le nngwe pele, mme go latele e nngwe. Gape, fa lo eme tlhogo, lekang go nna mmogo kgantele go dumalana ka tharabololo mmogo.", "type": "template", "note": "" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Batsadi ka bontsi ba lebana le seno. Go ka nna bokete go ipha nako mmogo le basha ba rona fa e le gore re na le bana ba bangwe.", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Ke ile ka galefa fa bothata bo tlhaga mme ka lebala go dirisa dikgato tsa go rarabolola bothata.", "type": "template", "note": "" }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Kopa mogolo yo mongwe kgotsa mogolowe go tlhokomela bana ba bannye ka nako ya fa o ipha nako mmogo le mosha wa me.", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Fa bothata bo tlhaga, rotlhe re a galefa kgotsa go tshwenyega maikutlo ka dinako dingwe. Gopola, fa o ikutlwa o galefile kgotsa o tshwenyegile mo maikutlong, o ka nna wa ema go se kae go go thusa go ritibala mme o rarabolole bothata jo o lebaganeng le jone.", "type": "template", "note": "" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Akanya ka nako ya fa bana ba bangwe ba seyo mme o iphe nako eo le mosha wa me.", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "Mosha wa me o ile a galefa mme a sa batle go bua ka bothata.", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Rulaganya go ipha nako mmogo mo lefelong le lengwe ntle le ko gae.", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Mosha wa gago o ka nna a imelwa thata ke go lepalepana le bothata ka yone nako eo. Lemoga maikutlo a gagwe o bo o a tlhalose, mme moragonyana mo letsatsing leo kgotsa mo bekeng eno o bo o rulaganye nako ya gore le buisane ka ga go rarabolola bothata joo mmogo. Go ipha nako ya go buisana le mosha wa gago, bothata bo ka rarabololwa sentle.", "type": "template", "note": "" }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Bontle tota! Ka tsela eno, o ka tsepamisa mogopolo wa gago mo mosheng wa gago, gore a ikutlwe a le botlhokwa e bile a ratiwa.", + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Mokgele wa gago e ne e le go leka go rarabolola bothata kgotsa kgotlhang mmogo le mosha wa gago.", "type": "template", "note": "" }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Go gontle! O ka leka go ipha nako le mosha wa gago fa bana ba bangwe ba setse ba ile go robala, kgotsa ba tshameka ko ntle.", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Lelapa lengwe le lengwe le lebana le dikgwetlho, mme fa re dira mmogo re ka kgona go lwa le mathata ka tsela e e atlegileng le e edileng. \n\nRuri ke bokgoni jo le mosha wa gago a ka bo ithutang!", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Bontle tota! Ka gongwe lo ka tsamaya ka dinao go ya mabenkeleng mmogo kgotsa lo lebelele metshameko, gore lo kgone go tlotla ntle le bana ba gago ba bangwe ba batla tlhokomelo ya gago.", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Dumelang, lotlhe. \n\nSetlhogo sa gompieno se ka ga go rarabolola mathata. \n\nRotlhe re a itse gore mo botshelong go na le dinako tse re lebanang le mathata, e bile rotlhe re a itse ka tsela ya gore fa re iphitlhela re le mo boemong jono, go thata go akanya ka ditharabololo tse di siameng ka yone nako eo. \n\nKa jalo, go botlhokwa gore fa re lebane le mathata re eme go se kae, re heme, re ritibale re bo re akanya ka bokgoni jwa go rarabolola mathata bo re ka bo dirisang. \n\nGakologelwang gore re akaretseng le basha ba rona fa re rarabolola mathata. Seno se tla ba thusa gore ba nne le maikarabelo le go ithuta kafa ba ka rarabololang mathata a bone ka gone mo nakong e e tlang.", "type": "template", "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.  Re lemogile gore o tobeditse @data.habit.instruct_positively.in_text_tite - o dirile sentle wa gopola!", + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "A re boele kwa go @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe re bone gore ba tlile ka tharabololo efe.", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Ikatiso ya legae la gago e ne e le go leka ditaelo tsa NNETE, TSE DI SIAMENG le TSE DI TSEPAMENG le mosha wa gago.", + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe ba tlile ka ditharabololo di le tharo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Ke lebogela go bo o mpoleletse! O dirile sentle ka go leka go naya mosha wa gago ditaelo tse di siameng le go aga botsalano jo bo siameng le mosha wa gago. \n\nMosha wa gago o tshwanetse go akgolwa mme gape le WENA!", + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Go tlhokomela basha go bokete tota. \n\nGantsi ga go na ditharabololo tse di motlhofo, mme jaanong @global.w_solve_female_caregiver_1 o ithutile gore a ka bua le morwadie ka ga dilo tseno. \n\nPele, o ne a tshwenyegile a le nosi, jaanong ba tlile ka ditharabololo ba le mmogo!", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Which of the tips helped you?", - "text": "Ke dikakantsho dife tse di go thusitseng?", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "A o setse o lekile dikgato tse nne tsa go rarabolola bothata le mosha wa gago? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE!", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "BUA NNETE – A mosha wa gago a ka kgona go dira se o mo kopang gore a se dire?", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Go ikemisetsa ga gago go rotloetsa mongwe le mongwe. Kgoba makgwafo mme o tswelepele!", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "BUA KA TSELA E E SIAMENG – Dirisa mafoko a a siameng mme o ba akgole!", + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "O mo tseleng e e siameng ya go simolola go rarabolola mathata mmogo le mosha wa gago! \n\nFeleletsa @local.workshop_data.in_text_title mme o iponele bokgoni jo bongwe jwa botlhokwa jwa go godisa bana!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "ITLHALOSE SENTLE – Itlhalose sentle o bo o totobale!", + "SourceText": "Hi @fields.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", + "text": "Dumela @fields.user_name! O dira tswelopele e ntle mo leetong la gago la batsadi!\n\nGo nna le mosha go raya go mekamekana le mathata a mantsi a a sa solofelegang. Tirelothuto eno e tlile go go bontsha tsela ya go mekamekana le ona.", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Bontle tota! Fa re kopa mosha wa rona go dira sengwe se se kgonegang, go nna motlhofo gore ba atlege.", + "SourceText": "Hi @fields.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Dumela @fields.group_name! O dira tswelopele e ntle mo leetong la gago la batsadi!\n\nGo nna le mosha go raya go mekamekana le mathata a mantsi a a sa solofelegang. Tirelothuto eno e tlile go go bontsha tsela ya go mekamekana le ona.", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Fa re ba akgola, basha ba rona ba ikutlwa ba rotloetsega go re reetsa gape!", + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "text": "Ka basha, le mo botshelong, mathata a a sa lebelelwang a nna gone mme re tshwanetse go lepalepana le one. \n\nSimolola workshop e e latelang go ithuta gore o ka samagana jang le mathata ano ka katlego.", "type": "template", "note": "" }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Bontle! Fa re akanyetsa ko pele ka ditaelo tse di totobetseng tse re di nayang mosha wa rona, ditaelo tsa rona di nna motlhofo gore a di latele!", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nLeka go e fetsa @global.parent_app pele ga o simolola workshop e ntšha. Go itse go rarabolola mathata a lona mmogo go tla thusa mo maemong a le mantsi!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Did you have any challenges?", - "text": "A o kile wa nna le dikgwetlho dingwe?", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "O dirile sentle thata go bo o feditse @local.workshop_data.in_text_title. Kamoso, go tla bulelwa workshop e ntšha ya go go thusa go boloka mosha wa gago a sireletsegile.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "What challenge did you have?", - "text": "O nnile le kgwetlho efe?", + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "A re bone se se diragaletseng @global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 wa gagwe fa @global.w_solve_teen_girl a ne a tshotse founo e e tswang kwa mosimaneng… founo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "Mosha wa me o ne a sa batle go latela ditaelo.", + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, o tsaya kae selo seo?” \n\n @global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 o e ntheketse. Ke founo e ntle, @global.w_solve_female_caregiver_1. E tsaya ditshwantsho tse dintle!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Ga ke a kgona go bona nako ya motho ka mong le mosha wa me.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: “Ga ke batle go bona selo seo se se jang madi a mantsi! Mosimane oo ga a siama! O akanya gore o tlile go e duela ka bokae?!” \n\n@global.w_solve_teen_girl: “Ga go dirwe jalo, @global.w_solve_female_caregiver_1! Ga o dire sentle!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Ke neelane ka taelo e e seng molemo go na le e e molemo.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: “Ga ke batle go utlwa sepe!” \n\n@global.w_solve_teen_girl: “Ga o batle le go ntheetsa! Ga ke itse gore goreng ke leka go bua le wena!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Ke omantse mosha wa me fa a ne a itshwere ka tsela e e sa siamang, go na le gore ke mo neye taelo e e siameng ya se ba tshwanetseng go se dira.", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "A re bone kafa go rarabolola mathata go dirang ka teng fa go diragadiwa.", "type": "template", "note": "" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Dikgwetlho tse @local.number_of_challenges dikgolo tse batsadi bangwe ba itemogelang tsone:", + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 o tla gae go tswa tirong. \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ay dinaonyana tsa me! Ke tlhoka go nna fa fatshe nakonyana e be ke nwa kopi ya kofi pele ke simolola go baakanyetsa mongwe le mongwe dijo.”", "type": "template", - "note": "The string @local.number_of_challenges should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Ke a itse; bana ba rona ba tlhoka nako ya go ithuta go latela ditaelo. Nna pelotelele, leka gape, mme o gopole go ba akgola nako le nako fa ba kgonne go latela ditaelo!", + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! O dira eng? Borotho joo ke jwa dijo tsa maitseboa! Jaanong ga bo kitla bo re lekana rotlhe!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "A o batla go leka nngwe ya dilo tse di latelang?", + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: “Tshwarelo, @global.w_solve_female_caregiver_2, ke ne ke tshwerwe ke tlala. Nka tlhalosa, wa bona, go na le mosimane mongwe kwa sekolong...” \n\n@global.w_solve_female_caregiver_2 (o a akanya): “Ema go se kae... hema...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Akanya ka nako tsatsi lengwe le lengwe e nka beelang kwa thoko metsotso e le tlhano kgotsa e e oketsegileng.", + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Mphe nakonyana. Ke lapile e bile gone jaanong ke tshwenyegile ka go dira dijo tse di lekaneng tsa maitseboa.” \n\n@global.w_solve_teen_boy_2: “Ke kopa maitshwarelo, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Batla tiro e re ka e dirang ka tsela ya go ijesa monate mmogo.", + "SourceText": "Step 1: KNOW IT", + "text": "Kgato 1: A ITSE", "type": "template", "note": "" }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Kopa mosha wa me kgotsa mongwe o sele go nthusa ka tiro ya legae, gore ke kgone go nna le nako e oketsegileng ke sa dire sepe.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: “Jaanong mpolelele, goreng o tshwerwe ke tlala jaana? Ga o a ja dijo tsa gago tsa motshegare kwa sekolong?” \n\n@global.w_solve_teen_boy_2: “Ke jone bothata joo. Go na le mosimane kwa sekolong yo o nkgerisang. A re fa ke sa mo fe dijo tsa me tsa motshegare letsatsi le letsatsi, ene le ditsala tsa gagwe ba tlile go nkutlwisa botlhoko. O nkgalefisa tota!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Bontle tota! Le fa e le go ipha metsotso e 5 go dira pharologanyo e kgolo, mme fa o e dira ka nako e tshwanang letsatsi le letsatsi (jaaka fa re ja dijo tsa mo mosong kgotsa pele re ya go robala), go tla nna motlhofo go e latelela!", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: \"Ke maswabi go utlwa ka seo mme ke itumelela gore o mpoleletse, @global.w_solve_teen_boy_2. Ga go reye gore o ka ja dijo tsa mongwe le mongwe tsa maitseboa. Fa re fetsa go bua, o tshwanetse go ya kwa lebentleleng o ye go reka borotho jo bongwe. Mme sa ntlha: O akanya gore re tshwanetse go dirang ka bothata jwa mosimane yo o kgerisang?\"\n\n@global.w_solve_teen_boy_2: “Ke batla go mo itaya kgotsa go ipusolosetsa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Go gontle! Ka tsela eo o kgona go dira tiro ya gago mme o nne le nako ya go ijesa monate mmogo le mosha gago!", + "SourceText": "Step 2: SOLVE IT", + "text": "Kgato 2: A RARABOLOLE", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Bontle tota! Ka go aroganya maikarabelo, o tla nna le nako e ntsi ya go dira sengwe sa go ijesa monate le mosha wa gago – seo se botlhokwa tota!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: \"Hmmm… o akanya gore go tlile go diregang fa o dira jalo?\"\n\n@global.w_solve_teen_boy_2: “Ga ke itse. O mogolo mo go nna ka jalo a ka nna a nkutlwisa botlhoko le go feta. E bile nka tsena mo mathateng kwa sekolong le go kobiwa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "Ee, go tsaya nako e ntsi go tlwaela go naya ditaelo tse di siameng – go molemo tota go leka gape! Akanya ka boitshwaro jo o ka ratang go bona mosha wa gago a bo dira thata mme o akanye ka ditsela tse di siameng tsa go neelana ka taelo eo!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: “Ee, seo se ka direga. Jaanong go na le moo re ka go dirang?\"\n\n@global.w_solve_teen_boy_2: “Ke akanya gore ke bolelele morutabana. Mme bana ba bangwe ba tlile go mpitsa mpimpi. Gongwe wena o bue le morutabana?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Go bokete go tla ka ditaelo fa re santse re galefile. Leka mme o batle nako ya fa o kgobile makgwafo gore o kgone go itsise mosha wa gago ditaelo tse di siameng. \n\nMo @global.weekly_workshop e e latelang, re tlile go bua thata ka ka fa re ka kgonang go laola maikutlo a rona ka gone!  O ka bona ditiro tsa boiketlo tse dingwe go @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Eo e utlwala jaaka kakanyo e e botoka. Gape nka bua le batsadi ba gagwe fa o batla ke dira jalo.\"\n\n@global.w_solve_teen_boy_2: “Ke a leboga. Fa o akanya gore seo se ka thusa le sone. Ke a leboga, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a elapa. Re lemogile gore o tobeditse @data.habit.money.in_text_title - o dirile sentle wa gopola!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Ke direla wena, moratiwa. Ke tla e dira fela fa ke fetsa go ja dijo tsa maitseboa. E bile o a itse? Fa e le gore seo ga se dire, re ka leka se sengwe mmogo.”\n\n@global.w_solve_teen_boy_2: \"Ke a leboga, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Mokgele wa gago e ne e le go dira thulaganyo ya tekanyetsokabo le go boloka madi a lelapa.", + "SourceText": "Step 3: TRY IT", + "text": "Kgato 3: E LEKE", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Re lebogela go bo o arolane le maitemogelo a gago! O dirile sentle ka go akanya ka kafa o ka dirang tekanyetsokabo le go boloka madi mmogo le lelapa la gago. Seno ruri se tla lo thusa tota gore lo direle go fitlhelela mekgele ya lelapa. \n\nLo le mmogo lo ka kgona go fitlhelela dilo di le dintsi!", + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "Beke morago ga moo… \n\n@global.w_solve_female_caregiver_2: \"Dilo di tsamaya jang kwa sekolong jaanong?\"\n\n@global.w_solve_teen_boy_2: “Go botoka, mosimane ole ga a sa tlhole a ntseela dijo tsa me tsa motshegare. Mme o santse a sa ntseye sentle.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "make a budget together with their family", - "text": "dira tekanyetsokabo mmogo le lelapa la bone", + "SourceText": "Step 4: TEST IT", + "text": "Kgato 4: E TLHATLHOBE", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "A lo nnile le dikgwetlho dingwe fa lo dira tekanyetsokabo ya lona mmogo?", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: “Ke maswabi go utlwa seo, @global.w_solve_teen_boy_2. A ke kope malome wa gago gore a bue le batsadi ba gagwe? Fa e le gore seo ga se dire, re tla leka sengwe se sele!\"\n\n@global.w_solve_teen_boy_2: \"Ee, ke a leboga @global.w_solve_female_caregiver_2. Ke lebogela gore o nkeme nokeng.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Ke eng se se go thatafaletseng ka go dira tekanyetsokabo ya lona mmogo?", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Tswala matlho a gago, goga mowa, o bo o itse gore sengwe le sengwe se o se dirileng se botlhokwa tota.", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Ke ne ke sa batle go bolelela lelapa la me gore ke duelwa bokae.", + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "@global.w_solve_teen_girl o nna mo gae kgwedi", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Ga o tlhoke go bua gore o duelwa bokae kgo; o ka fopholetsa. O ka nna wa re, “mo legaeng leno, re nale @global.currency@global.monthly_income_estimate kgwedi le kgwedi” go na le gore “ke dira @global.currency@global.monthly_income_precise”.", + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: “Ga o tle go tswela kwa ntle mo kgweding e e latelang”", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Fa re dira tekanyetsokabo, re ka nna ra seka ra dumalana gore ke eng se eleng ditlhoko le gore ke eng se eleng dipatlo.", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Seo ga se a dira... A re leke sengwe se sele.", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Ditlhoko le dipatlo tsa batho ga di tshwane ka dinako tse dingwe. Go bua ka tsone mmogo go ka go thusa le mosha wa gago go tlhaloganyana, go tlotla dipono tse di sa tshwaneng, le go bona gore lo ka akanyetsana kae.", + "SourceText": "Return the phone and save up", + "text": "Busa founo o be o boloka madi", "type": "template", "note": "" }, { - "SourceText": "I did not understand what to do.", - "text": "Ke ne ke sa itse gore ke dire eng.", + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: “Ga ke leke go latofatsa tsala ya gago kgotsa go nna lefufa. Ke tshwenyegile ka gore fa mongwe a go naya mpho go thata gore ‘nnyaa’ fa ba batla gore o ba duele ka sengwe - jaaka thobalano. Fa o batla go nna le founo, re tlile go boloka madi mmogo gore o kgone go itirela ditshwetso kwantle ga go mo kolota sepe.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Ke maswabi go utlwa seno. Ke a itse go ka nna bokete! Goreng re sa e leke gape? Mosha wa gago kgotsa maloko a mangwe a lelapa la gago ba ka ikopanya nao mme ba go thusa!", + "SourceText": "This is great! Try the third option as well.", + "text": "Ke selo se sentle! Leka le kakantsho ya boraro.", "type": "template", "note": "" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "Mosha wa me o ne a sa batle go dira tekanyetsokabo le nna.", + "SourceText": "Learn about safe sex", + "text": "Ithute ka thobalano e e sireletsegileng", "type": "template", "note": "" }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Leka go dira tekanyetsokabo le bagolo ba bangwe mo legaeng la gago pele. Mosha wa gago a ka kgatlhegela se o se dirang. \n\nGo dira tekanyetsokabo go ka bonala go le masisi mme leka go go dira monate – go dire motshameko fa lo ntse lo ipha nako mmogo! Kgotsa o ka leka go dira tekanyetsokabo ya @global.w_money_grandma pele. \n\nGopola go ba akgola fa o feditse!", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." - }, - { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "O tlhoka go akgolwa, le wena. Re leboga gape gore o dirisitse @global.parent_app. Go a bontsha gore tota o a kgathala!", + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: “Seno se ntira gore ke lemoge gore re tshwanetse go bua ka basimane le go itshireletsa. Basha ba dithaka tsa gago ba a ima kgotsa ba tshwarwa ke HIV. A reye kwa tliliniking gore o kgone go bua le mooki gore a go rute kafa o ka nnang o sireletsegile ka gone.”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Mokgele wa gago e ne e le go akgola mosha wa gago. O tobeditse @data.habit.praise_teen.in_text_title mo bekeng eno. O dirile sentle wa gopola!", + "SourceText": "This is great!", + "text": "Ke selo se sentle!", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Mokgele wa gago e ne e le go akgola mosha wa gago.", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le motlotlo - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "A o nnile le tshono ya go akgola mosha wa gago mo bekeng eno?", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Kgang le go itshekatsheka - tse di sa dirang...\n* Didirisiwa: Kafa o ka rarabololang mathata ka teng\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE\n* Kgang le go leba kwa morago - tse di dirileng!\n* E leke!\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Yes", - "text": "Ee", + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Tlotlang mmogo: \n\n@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "No", - "text": "Nnyaa", + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Gakologelwa @global.w_solve_teen_girl le founo e a e tsereng kwa mosimaneng?", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Go ka nna thata ka dinako tse dingwe go gakologelwa go akgola basha ba rona. Nako e e tlang fa o ipha nako mmogo le mosha wa gago, leka go akanya ka selo se le sengwe se o ka ba akgolelang sone. O ka nna wa re, “Ke lebogela gore o iphile nako le nna!”.", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "@global.w_solve_teen_girl le @global.w_solve_female_caregiver_1 ba ka dirisa jang dikgato di le 4 tsa go rarabolola mathata, jaaka @global.w_solve_female_caregiver_2 le @global.w_solve_teen_boy_2 ba dirile? \n\nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Well done - great job for remembering!", - "text": "O dirile sentle - o dirile tiro e ntle wa gopola!", + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Goga mowa ka makgetlo gore o ritibale, o bo o", "type": "template", "note": "" }, { - "SourceText": "How did your teen respond?", - "text": "Mosha wa gago o tsibogile jang?", + "SourceText": "KNOW IT", + "text": "A ITSE", "type": "template", "note": "" }, { - "SourceText": "Surprised", - "text": "O maketse", + "SourceText": "Identify the problem.", + "text": "Lemoga mathata.", "type": "template", "note": "" }, { - "SourceText": "Happy", - "text": "O itumetse", + "SourceText": "SOLVE IT", + "text": "A RARABOLOLE", "type": "template", "note": "" }, { - "SourceText": "My teen did not like it", - "text": "Mosha wa me ga a rata", + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Akanya ka ditharabololo tse di kgonegang le gore go ne go ka direga eng fa re ne re di dirisitse.", "type": "template", "note": "" }, { - "SourceText": "I do not know", - "text": "Ga ke itse", + "SourceText": "TRY IT", + "text": "E LEKE", "type": "template", "note": "" }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Gopola, go tsaya nako gore mosha wa gago a tlwaele go go bona o mo akgola. Fa o ntse o ipha nako e ntsi le bone, go tlile go nna go tokafala!", + "SourceText": "Choose a solution and try it out.", + "text": "Tlhopha tharabololo o bo o e leka.", "type": "template", "note": "" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "O dira sentle go bona gore mosha wa gago o ikutlwa jang; tswelela pele o dira jalo!", + "SourceText": "TEST IT", + "text": "E TLHATLHOBE", "type": "template", "note": "" }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Go a direga - nna pelotelele. Netefatsa gore o nna o ipha nako le mosha wa gago, gore ba bone boleng jwa pono ya gago le e leng go feta. Fa o ba akgola go tswa pelong, o tla bona mesola e se kgale!", + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "A e dirile? Go gontle! Fa e sa dira, jaanong o ka leka tharabololo e nngwe.", "type": "template", "note": "" }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Ga gona bothata - leka go bona gore ba tsiboga jang mo nakong e tlang!", + "SourceText": "Let's practice problem-solving!", + "text": "A re ithute go rarabolola mathata!", "type": "template", "note": "" }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Mokgele wa gago e ne e le go buisana ka maemo a ka tlhagang ka tshoganyetso le mosha wa gago mme o a direle thulaganyo.", + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Ikatiseng mmogo ka mathata ao le nang le one gone jaanong. Mongwe wa lona ke motsadi o mongwe ke mosha. \n\nAkgolanang lo be lo rotletsana - re motlotlo ka lona! \n\nGakologelwa dikgato: \nA ITSE - A RARABOLOLE - E LEKE - E TLHATLHOBE", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "rulaganya go santse go na le nako gore fa go ka tlhaga maemo a tshoganyetso le basha ba gago", + "SourceText": "We care about you, and how life is treating you.", + "text": "Re a go kgathalela, le kafa botshelo bo go tshwereng ka teng.", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "rulaganya go santse go na le nako fa go ka tlhaga maemo a tshoganyetso le mosha wa gago", + "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", + "text": "O naledi. E bile o dira pharologanyo e kgolo. Nna motlotlo ka wena.", "type": "template", "note": "" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "Mosha wa me o mpoleletse gore sengwe se se masisi se mo tlhagetse mme ke ne ke sa itse gore nka dira jang.", + "SourceText": "Sorry that things are not easy today. All parents have these days.", + "text": "Tshwarelo gore dilo di bokete gompieno. Batsadi botlhe ba na le malatsi a a ntseng jalo.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Akgola mosha wa gago gore o go boleletse; ga go motlhofo go dira seo! Gopola, o ka dirisa botswerere bope fela jo o bo tlhophileng go tswa mo lebokosong la didiriswa: Ema go se kae, dirisa dikgato tse nne tsa go rarabolola mathata, mme o leke go kgaratlha gore wena le ngwana wa gago lo newe tshegetso e lo e tlhokang!", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "O feleleditse workshop ya beke eno.\n\nBeke e e tlang, re tla bua kaga madi - o tla tlhoka:\n* tsebe ya pampiri/khateboto\n* pene\n* maje/dinawa/ditlhaka di le 20\n\nGo a go nna monate!", "type": "template", "note": "" }, { - "SourceText": "Get support", - "text": "Batla tshegetso", + "SourceText": "There are two home practices for this week.", + "text": "Go na le ikatiso tse pedi tsa kwa gae beke eno.", "type": "template", "note": "" }, { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Puisano e dirile gore ke seka ka nnisega tota ka gonne e nkgopoditse tiragalo e e sa siamang e nkileng ka nna le yone.", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o hutsafetse, kgwa mowa ga tlhano pele ga o ka tsaya kgato. \n\nMme fa lotlhe lo ritibetse maikutlo, bolelela mosha wa gago gore o ikutlwa jang.", "type": "template", "note": "" }, { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Fa re gopodiwa ka ditiragalo tse di ntseng jalo, go tlwaelegile go ikutlwa o tenegile kgotsa o galefile. Go botlhokwa go batla nako ya fa o kgobile makgwafo, gore o kgone go akanya gore o tlhoka tshegetso e ntseng jang. O ka nna wa tlhoka go bua le mongwe.", + "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "text": "Tlotlang ka “pabalesego” le mosha wa gago mme lo buisane mmogo gore lo ka dirisa ntlha eno mo maemong afe.", "type": "template", "note": "" }, { - "SourceText": "One of us did not feel comfortable.", - "text": "Mongwe wa rona o ne a sa ikutlwe a nnisega.", + "SourceText": "Safety Amnesty Story", + "text": "Kgang ya Kgololesego ya Pabalesego", "type": "template", "note": "" }, { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Seno ke selo se se bokete go bua ka sone. Se batlele nako ya fa o kgobile makgwafo. Re a itse gore go motlhofo thata fa re sa bue ka dilo tseno e bile re solofela gore ga di kitla di re diragalela. Le fa go ntse jalo, go ithuta go lepalepana le mathata go tshwana le go batla inshorense; go botoka fa ka METLHA o akanya ka tsone mme o nna o ipaakantse.", + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Nako le nako fa o ema go se kae pele ga o araba, kgotsa fa o dira sengwe go sireletsa mosha wa gago, tobetsa @global.parent_points mme o nne motlotlo gore o kgonne go dira jalo!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Mokgele wa gago e ne e le go bona dikotsi le ditsamaiso tsa tshegetso le mosha wa gago - ka bobedi mo tikologong ya gago gammogo le mo mafaratlhatlheng.", + "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", + "text": "A o na le maitemogelo ka dikgwetlho tseno fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", "type": "template", "note": "" }, { - "SourceText": "map risks and support with their teens", - "text": "bona dikotsi le tshegetso le basha ba bone", + "SourceText": "What was difficult for you about sharing how you feel with your teen?", + "text": "Ke eng se se nnileng bokete mo go wena fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", "type": "template", "note": "" }, { - "SourceText": "map risks and support with your teen", - "text": "bona dikotsi le tshegetso le mosha wa gago", + "SourceText": "I was afraid my teen would think I was weak.", + "text": "Ke ne ke tshaba gore mosha wa me o tla nagana gore ke bokoa.", "type": "template", "note": "" }, { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Nna le mosha wa me ga re dumalane ka gore ke mafelo afe le mafaratlhatlha afe a a sa sireletsegang.", + "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text": "Go bua maikutlo a gago, segolo jang a a bokete, go tlhomela mosha wa gago sekao sa botlhokwa! Tota e bile go dira gore mongwe le mongwe mo lelapeng a tiye le go feta, ka ntlha ya gore lo kgona go tlhaloganyana le go tshegetsana botoka.", "type": "template", "note": "" }, { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "O dirile sentle wa leka tiro eno! Fa re reetsa basha ba rona, le fa re sa dumalane le bone, re ithuta go tlhaloganya gore ba akanya jang. Leka go batla nako go dira tiro eno gape - leka go reetsa ka kelotlhoko mme o bontshe gore wa di tlhaloganya pele ga o abelana ka dikakantsho tsa gago.", + "SourceText": "I felt uncomfortable about naming specific difficult feelings.", + "text": "Ke ikutlwile ke sa nnisega ka go totobala ka maikutlo a a rileng a a bokete.", "type": "template", "note": "" }, { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "Mosha wa me o lemogile ntlo ya motho yo ke tshepang gore ga e a sireletsega. Ke ne ke tshogile mme ke sa itse gore nka dira eng.", + "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text": "Go totobala ga e se go tlhoka maitseo kgotsa go sa amege - seno se thusa ba bangwe go go tlhaloganya sentle mme seno se dira gore go seke ga nna le go tlhakatlhakana mo lelapeng. Go ikutlwa o galefile le go tshwenyega mo maikutlong ke karolo ya botshelo jwa rona. Se re tlhokang go se dira fa re galefile le go tshwenyega mo maikutlong ke go tshwara maikutlo a rona sentle ka go hemela kwa teng makgetlo a le mmalwa pele o araba.", "type": "template", "note": "" }, { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Go a tshosa go ithuta gore batho ba re atamalaneng le bone le ba re ba tshepang ba ka nna kotsi mo basheng ba rona. Gopola go ema go se kae fa o ngadile, mme o leke go reetsa mosha wa gago o kgobile makgwafo. Batla mongwe yo o ka buang le ene ka seno, gongwe tsala kgotsa tirelo ya tshegetso, gore o kgone go nna le tshegetso e o e tlhokang.", + "SourceText": "My teen felt uncomfortable when I shared my feelings.", + "text": "Mosha wa me o ne a ikutlwa a sa nnisega fa ke mmolelela maikutlo ame.", "type": "template", "note": "" }, { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "Ngwana wa me wa mosha o gatelela gore bara (kgotsa lefelo le lengwe le ke sa dumeleng gore le na le tshireletsego) ga le borai gore a le etele. Ga ke itse gore ke dire jang gore ngwanake wa mosha a ntumele.", + "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text": "Go simolola sengwe se sesha ke kgwetlho ka metlha kwa tshimologong. Ipheng nako ya go go tlwaela mme o nne o bontsha sekao se se molemo ka go lebelela le go bua maikutlo a gago. Fa nako e ntse e tsamaya, mosha wa gago o tla ithuta go dira se se tshwanang, mme ba tla ikutlwa ba ratiwa le go kgathalelwa le go feta!", "type": "template", "note": "" }, { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Seno se ka tlhakanya tlhogo tota. Go bona tharabololo ya seno, ngwana wa gago wa mosha o batla go ikutlwa gore o a reediwa - ka jalo reetsa mabaka a ngwana wa gago wa mosha o wetse makgwafo, e be e le gone o bua dikakanyo tsa gago. Morago, akanyang mmogo ka molao o o ka letlelelang gore ba ijese monate mme gone ba nna ba sireletsegile.", + "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "text": "Fa ke ne ke bua maikutlo a me, mosha wa me o ne a botsa dipotso tse dintsi, mo go dirileng gore ke seka ka nnisega.", "type": "template", "note": "" }, { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "Jaaka mogolo, ke ikutlwa ke na le boikarabelo jwa go sireletsa - mme fa ke bolelela ngwanake wa mosha gore ke eng se se sireletsegileng le se se sa sireletsegang, o a galefa.", + "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", + "text": "Go bua maikutlo a gago go thusa mosha wa gago gore a itse le go ithuta go dira seo le ene. O ka nna wa tlhopha gore o batla go bua go le kana kang ka seemo sa gago. Go tswa mo go wena! Gape o ka nna wa tlhopha go araba dipotso kgantele ka gore “ke ikutlwa ke galefile/ke tshwenyegile maikutlo gone jaanong. O ka kgona go mpha nakonyana? Re tla bua ka seno gape bosigo”.", "type": "template", "note": "" }, { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Basha ba rona ba ka itse dilo ka tikologo ya rona le thekenoloji tse rona re sa di itseng. Fa re tsenya basha ba rona ka tlhagafalo mo go rulaganyeng ditiro e bile re ba reetsa tota, ba ikutlwa ba reediwa e bile ba le botlhokwa, mme go ka nna motlhofo go tla ka leano le mongwe le mongwe a dumalanang le lone.", + "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "text": "Ke ne ke tshwenyegile mo maikutlong gongwe ke galefile thata go ka bua maikutlo a me – Ke batla go nna ke le nosi fa ke ikutlwa jalo.", "type": "template", "note": "" }, { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Go ne go le bokete go bona ditlamelwana tsa tshegetso mo motseng wa rona, ka gonne ga ke itse motse wa me sentle /ga go na ditirelo tse di kalo mo go one.", + "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "text": "Go siame go sa batle go bua ka nako eo. Batla nako ya go tlhalosa kgantele, fa o ikutlwa o ritibetse, gore mongwe le mongwe a go tlhaloganye.", "type": "template", "note": "" }, { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Go bokete go itse sengwe le sengwe ka tikologo ya rona. Akaretsa leloko le lengwe la lelapa kgotsa tsala lo dira tiro nngwe. O kgona le go etela ditirelo tse di leng gone mme o ba botse gore ba dira eng. Fa re itse go le gontsi, re ka kgona go boloka malapa a rona a sireletsegile!", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", + "text": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile maikutlo kgotsa o tenegile, hemela kwa teng le kwa ntle ga tlhano pele ga o ka tsaya kgato.", "type": "template", "note": "" }, { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Ga ke itse go le gontsi ka thekenoloji, ka jalo ga ke itse gore nka bua jang le mosha wa me ka yone.", + "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Mokgele wa gago e ne ele go bua le mosha wa gago gore lo ikutlwile jang fa lo ne lo mo seemong sa go tshwenyega mo maikutlong.", "type": "template", "note": "" }, { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Ga go na bothata gotlhelele! O santse o ka tshegetsa mosha wa gago. Kopa mosha wa gago gore a tlhalose didiriswa tse a di dirisang - o ka dira seno ka nako ya fa lo ipha nako mmogo. Eno ke tshono e ntle ya go bontsha kgatlhego mo botshelong jwa mosha wa gago mme lo buisane ka dikotsi tse di ka diregang. Fa o sa tlhomamisega ka gore o beye melao efe, lo ka nna lwa dumelana, le mosha wa gago, go leka molao o mosha mo dibekeng tse pedi mme lo buisane ka gore dilo di tla jang le go fetola molao fa go tlhokega!", + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Re a itse gore go bokete jang go godisa mosha mo dinakong tseno. Go ithuta go laola go tshwenyega mo maikutlong ga gago go thusa wena - le lelapa la gago.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Mokgele wa gago e ne e le go leka go rarabolola bothata kgotsa kgotlhang mmogo le mosha wa gago.", + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Dumelang lotlhe. \n\nSetlhogo sa gompieno se ka ga go laola go tshwenyega mo maikutlong. \n\nGo botlhokwa go itse ka fa re ka laolang go tshwenyega mo maikutlong a rona ka gone. Ka dinako tse dingwe bana ba rona ba ka itshwara ka tsela e e re opisang tlhogo le rona jaaka batsadi re ka dira gore bana ba rona ba opiwe ke tlhogo le bone. \n\nKa jalo, go botlhokwa go ela tlhoko fa re na le kgatelelo ya maikutlo re bo re ema go se kae re hema. Seo se tla go thusa gore o laole go tshwenyega mo maikutlong.", "type": "template", "note": "" }, { - "SourceText": "resolve problems with their teens", - "text": "rarabolola mathata le basha ba bone", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Go tshwenyega mo maikutlong ga gago go ne go ntse jang beke eno? Leka go hemela ko teng makgetlo a le mmalwa pele o araba mosha wa gago - go dira pharologanyo e kgolo.", "type": "template", "note": "" }, { - "SourceText": "resolve the problem with your teen", - "text": "rarabolola mathata le mosha wa gago", + "SourceText": "Well done!", + "text": "O dirile sentle!", "type": "template", "note": "" }, { - "SourceText": "I forgot the steps of problem solving.", - "text": "Ke lebetse dikgato tsa go rarabolola bothata.", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "O dirile sentle ka go hema thata pele o araba mosha wa gago! Nako le nako fa o ema go se kae, o kgona go itshwara.", "type": "template", "note": "" }, { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "O tshwanetse go itlwaetsa go dirisa dikgato tsotlhe tse nne tsa go rarabolola bothata. Nako e e tlang fa go nna le bothata, leba dikgato tsotlhe tse nné le mosha wa gago - go tla dira pharologanyo e kgolo!", + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "O itumetse, o hutsafetse, o galefile, o kgatlhegile, o tshwenyegile? O dirile sentle go lemoga gore wena le ba bangwe lo ne lo ikutlwa jang gompieno! Mme gopola, kamoso ke letsatsi le lesha.", "type": "template", "note": "" }, { - "SourceText": "I started with the solutions right away.", - "text": "Ke simolotse ka ditharabololo ka gangwe.", + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Rotlhe re ikutlwa re imetswe ka dinako dingwe. Go hemela ko teng go ka thusa! \n\nFeleletsa @local.workshop_data.in_text_title go iponela didiriswa tse di mosola tsa go lepalepana le go tshwenyega mo maikutlong.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "Fa re na le bothata, ka metlha re batla go fitlhelela tharabololo ya ka bonako mme re ka lebala ka dikgato. Go tla ka tharabololo e e gaisang mmogo, go tla thusa pele gore re tlhaloganye bothata ka botlalo le ditharabololo tse di farologaneng.", + "SourceText": "Hi @fields.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", + "text": "Dumela @fields.user_name! Ra go lebogisa go simolola beke ya botlhano ya @global.parent_app.\n\nTirelothuto e ntšha ya botsadi e go emetse ya dintlha tsa thuso ka gore o ka itshola o ritibetse mme o le mo taolong fa basha ba re gafisa.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app" }, { - "SourceText": "Four steps of problem solving", - "text": "Dikgato tse nné tsa go rarabolola bothata", + "SourceText": "Hi @fields.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", + "text": "Dumela @fields.group_name! Ra go lebogisa go simolola beke ya botlhano ya @global.parent_app.\n\nTirelothuto e ntšha ya botsadi e go emetse ya dintlha tsa thuso ka gore o ka itshola o ritibetse mme o le mo taolong fa basha ba re gafisa.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name\n@global.parent_app" }, { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Ga re a kgona go dumalana ka tharabololo e re ka e lekang mme ga tsoga ngangisano.", + "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Re na le workshop e ntšha e e gone go go thusa ka ga go laola kgalefo le go tshwenyega mo maikutlong. E tla go thusa go itlhokomela botoka.", "type": "template", "note": "" }, { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Ka dinako tse dingwe go ka nna bokete go dumalana le batho botlhe mo lelapeng, segolo jang fa batho botlhe ba sa kgoba makgwafo. Lo ka dumalana go leka tharabololo e le nngwe pele, mme go latele e nngwe. Gape, fa lo eme tlhogo, lekang go nna mmogo kgantele go dumalana ka tharabololo mmogo.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Kamoso go tla bo go na le @global.parent_app workshop e ntšha gore o simolole go e dira. \n\nKa go fetsa @local.workshop_data.in_text_title ya ntlha, o thaya motheo wa botlhokwa tota: Fa o ikutlwa o itumetse, balelapa la gago le bone ba tla dira botoka!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Ke ile ka galefa fa bothata bo tlhaga mme ka lebala go dirisa dikgato tsa go rarabolola bothata.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "O dirile sentle go fetsa eno @local.workshop_data.in_text_title. Kamoso, o ka tsena mo workshop e ntšha ya go go thusa go itapolosa le go nna le bokgoni jo bo nang le mosola!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Fa bothata bo tlhaga, rotlhe re a galefa kgotsa go tshwenyega maikutlo ka dinako dingwe. Gopola, fa o ikutlwa o galefile kgotsa o tshwenyegile mo maikutlong, o ka nna wa ema go se kae go go thusa go ritibala mme o rarabolole bothata jo o lebaganeng le jone.", + "SourceText": "Let's think about what happened in this story.", + "text": "A re akanye ka se se diragetseng mo kgannyeng eno.", "type": "template", "note": "" }, { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "Mosha wa me o ile a galefa mme a sa batle go bua ka bothata.", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang?", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Mosha wa gago o ka nna a imelwa thata ke go lepalepana le bothata ka yone nako eo. Lemoga maikutlo a gagwe o bo o a tlhalose, mme moragonyana mo letsatsing leo kgotsa mo bekeng eno o bo o rulaganye nako ya gore le buisane ka ga go rarabolola bothata joo mmogo. Go ipha nako ya go buisana le mosha wa gago, bothata bo ka rarabololwa sentle.", + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "Le @global.w_stress_male_caregiver?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile mo maikutlong kgotsa o tenegile, hemela ko teng le kwa ntle ga tlhano pele ga o ka tsaya kgato. O tobeditse @data.habit.breathe.in_text_title - o dirile sentle!", + "SourceText": "And @global.w_stress_girl?", + "text": "Le @global.w_stress_girl?", "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Beke eno, mokgele wa gago e ne e le gore: Fa o ikutlwa o tshwenyegile maikutlo kgotsa o tenegile, hemela kwa teng le kwa ntle ga tlhano pele ga o ka tsaya kgato.", + "SourceText": "Sad", + "text": "O utlwile botlhoko", "type": "template", "note": "" }, { - "SourceText": "How did this work out?", - "text": "Seno se ile sa dira jang?", + "SourceText": "Scared", + "text": "O tshogile", "type": "template", "note": "" }, { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Mokgele wa gago e ne ele go bua le mosha wa gago gore lo ikutlwile jang fa lo ne lo mo seemong sa go tshwenyega mo maikutlong.", + "SourceText": "Confused", + "text": "O akabetse", "type": "template", "note": "" }, { - "SourceText": "How did this go?", - "text": "Seno se ile sa direga jang?", + "SourceText": "Angry", + "text": "O galefile", "type": "template", "note": "" }, { - "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", - "text": "A o na le maitemogelo ka dikgwetlho tseno fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Mongwe le mongwe wa bone o ne a kgopisegile go ya ka lebaka la gagwe!", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about sharing how you feel with your teen?", - "text": "Ke eng se se nnileng bokete mo go wena fa o bolelela mosha wa gago gore o ikutlwa jang ka ga gagwe?", + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "I was afraid my teen would think I was weak.", - "text": "Ke ne ke tshaba gore mosha wa me o tla nagana gore ke bokoa.", + "SourceText": "Recognise why he feels stressed", + "text": "Lemoga lebaka la go bo a tshwenyegile mo maikutlong", "type": "template", "note": "" }, { - "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "text": "Go bua maikutlo a gago, segolo jang a a bokete, go tlhomela mosha wa gago sekao sa botlhokwa! Tota e bile go dira gore mongwe le mongwe mo lelapeng a tiye le go feta, ka ntlha ya gore lo kgona go tlhaloganyana le go tshegetsana botoka.", + "SourceText": "Take a deep breath and speak calmly", + "text": "Kgwa mowa o bo o bua o ritibetse", "type": "template", "note": "" }, { - "SourceText": "I felt uncomfortable about naming specific difficult feelings.", - "text": "Ke ikutlwile ke sa nnisega ka go totobala ka maikutlo a a rileng a a bokete.", + "SourceText": "Show he understands his teen’s feelings", + "text": "O bontshe gore o tlhaloganya maikutlo a mosha wa gago", "type": "template", "note": "" }, { - "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "text": "Go totobala ga e se go tlhoka maitseo kgotsa go sa amege - seno se thusa ba bangwe go go tlhaloganya sentle mme seno se dira gore go seke ga nna le go tlhakatlhakana mo lelapeng. Go ikutlwa o galefile le go tshwenyega mo maikutlong ke karolo ya botshelo jwa rona. Se re tlhokang go se dira fa re galefile le go tshwenyega mo maikutlong ke go tshwara maikutlo a rona sentle ka go hemela kwa teng makgetlo a le mmalwa pele o araba.", + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "My teen felt uncomfortable when I shared my feelings.", - "text": "Mosha wa me o ne a ikutlwa a sa nnisega fa ke mmolelela maikutlo ame.", + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "Dira sengwe se se kgothatsang mmogo le @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "text": "Go simolola sengwe se sesha ke kgwetlho ka metlha kwa tshimologong. Ipheng nako ya go go tlwaela mme o nne o bontsha sekao se se molemo ka go lebelela le go bua maikutlo a gago. Fa nako e ntse e tsamaya, mosha wa gago o tla ithuta go dira se se tshwanang, mme ba tla ikutlwa ba ratiwa le go kgathalelwa le go feta!", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "A re bone sekai sa ka fa go tshwenyega mo maikutlong e ka fetelelang ka teng ka dinako dingwe, mo go rona rotlhe:", "type": "template", "note": "" }, { - "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "text": "Fa ke ne ke bua maikutlo a me, mosha wa me o ne a botsa dipotso tse dintsi, mo go dirileng gore ke seka ka nnisega.", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver: “Ntlogele mme o lebe dikgang tsa gago!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "text": "Go bua maikutlo a gago go thusa mosha wa gago gore a itse le go ithuta go dira seo le ene. O ka nna wa tlhopha gore o batla go bua go le kana kang ka seemo sa gago. Go tswa mo go wena! Gape o ka nna wa tlhopha go araba dipotso kgantele ka gore “ke ikutlwa ke galefile/ke tshwenyegile maikutlo gone jaanong. O ka kgona go mpha nakonyana? Re tla bua ka seno gape bosigo”.", + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: “Ke dirile eng? Ga o nke o reetsa!” \n\n@global.w_stress_male_caregiver: “Ke rile o ntlogele kgotsa ke tloga ke go itaya!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "text": "Ke ne ke tshwenyegile mo maikutlong gongwe ke galefile thata go ka bua maikutlo a me – Ke batla go nna ke le nosi fa ke ikutlwa jalo.", + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: “Bona! Ke dirile ntlo!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "text": "Go siame go sa batle go bua ka nako eo. Batla nako ya go tlhalosa kgantele, fa o ikutlwa o ritibetse, gore mongwe le mongwe a go tlhaloganye.", + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: “Ke mang a kgathalang ka ntlo ya gago e e senang mosola!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng). O tobeditse @data.habit.consequence.in_text_title - o dirile sentle wa gopola!", + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Ke a leboga gore re dirile ikatiso eno mmogo! A re akanyeng ka se se diragetseng pelenyana mme re bone gore @global.w_stress_male_caregiver mo lekgetlong leno:", "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Mokgele wa gago e ne e le go itsise NNGWE ya ditlamorago tse di molemo (tsa mosha wa gago yo o tsereng maikarabelo) le NNGWE ya ditlamorago tse di sa siamang (tsa mosha wa gago fa a roba molao wa mo lapeng).", + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver o latlhegetswe ke tiro. Fa @global.w_stress_teen_boy_1 a tsena mo ntlong, o mo fitlhela a tlhakatlhakane maikutlo e bile a tshwenyegile.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "introduce a consequence together", - "text": "itsise ditlamorago mmogo", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: “A nka nna le madi a go reka airtime?” \n\n@global.w_stress_male_caregiver (go kgwa mowa): “Ke maswabi morwaaka. Go ne go le thata tota gompieno. Mookamedi wa me o nkobile kwa tirong.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "A o kile wa nna le dikgwetlho dingwe fa o leka go itsise ditlamorago mmogo?", + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “Hee se rialo! Ke tlhoka diaparo tse di ntšha tsa sekolo.” \n\n@global.w_stress_male_caregiver: “Ke tla leka morwaaka mme tiro ya ga @global.w_stress_female_caregiver e tla nna e re thusa fa ke ntse ke batla tiro e nngwe.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" }, { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Ke eng se se nnileng bokete mo go wena ka go itsise mosha wa gago ka ditlamorago?", + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: “Le nna nka go thusa go batla tiro, ne @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Nnyaa, o seka tshwenyega, @global.w_stress_teen_boy_1. Ke a leboga go bo o batla go nthusa. Selo se se botlhokwa thata ke gore o dire ka natla ko sekolong. Ke a leboga go bo o ile wa ntheetsa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Ke ile ka galefa tota fa mosha wa me a roba molao.", + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “A re ye go tshameka kgwele ya dinao mmogo. E tla nthusa gore ke fokotse go tshwenyega thata mo maikutlong.” \n\n@global.w_stress_teen_boy_1: \"Go siame, @global.w_stress_male_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Fa re ema go se kae pele ga go araba, go re thusa gore re kgobe makgwafo mme re arabe botoka. \n\nNako e latelang fa mosha wa gago a dira gore o galefe, leka go ema go se kae pele. Le go hemela ko teng makgetlonyana go ka dira pharologanyo e kgolo tota!", + "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", + "text": "Ke ikutlwa botoka tota jaanong! \n\nGo ikhutsa go se kae go thusa gore o kgone go ritibala maikutlo fa o galefile kgotsa o tshwenyegile mo maikutlong. Lekeletsa go dira jalo, o tla lemoga seno!", "type": "template", "note": "" }, { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "Mosha wa me o nkgalefetse tota morago ga ke sena go mo naya ditlamorago.", + "SourceText": "Safety Amnesty", + "text": "Kgololesego ya Pabalesego", "type": "template", "note": "" }, { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Fa mosha wa gago a galefa, o ka nna wa tlhoka go mo katoga go fitlha loo-babedi lo kgobile makgwafo. \n\nTlhola go netefatsa gore ditlamorago tsa gago di na le tekatekano mme di a utlwala. Reetsa tlhaloso ya mosha wa gago, mme o netefatse go neelana ka “Tshireletsego ya go Itshwarela” fa ba robile molao e le gore ba nne ba sireletsegile.", + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Akanya ka nako ya fa o ne o sa ntse o le mosha. \n\nA go na le nako nngwe e o kileng wa iphitlhela o le mo kotsing mme o bo o tshaba go bolelela ba lelapa la gago ka gonne o tshaba gore ba tla galefa?\n\nKe sone se se batlileng se diragalela @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl! A re bone:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Ke itsisitse ditlamorago ntle le go tlotla ka yone le mosha wa me.", + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: \"Ke ya kwa bareng le ditsala tsa me gompieno, ke kopa o seka bolella bagolo\" \n\n@global.w_stress_teen_girl: “Itumele! Ke ba reile ka re ke ya kwa tsaleng ya me, mme tota ke ya phathing”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "A o ka kgona go dira ditlamorago fa seno se direga? Fa re tlhoma ditlamorago mmogo le basha ba rona, ditlamorago e tla nna tsa nnete, mme basha ba rona ba tla batla thata le go kgona go latela molao.", + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: “Ke akanya gore ba rekisa diokobatsi. Re ka nna ra tshwarwa rothe. Mme gone nka se bolelele batsadi ba me– ba tlile go galefa tota\"", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_2 should not be translated." }, { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Ke lebetse go latelela ditlamorago.", + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: “Ke tshogile. Ga go ope yo o ka kgonang go nkisa gae, mongwe le mongwe o tagilwe tota. Mosimane yono a re o tla nkisa mme gone, o batla re ye kwa a nnang teng pele. Nka se bolelele batsadi ba me – Ke ba akeditse, ga ke a ba bolelela gore ke tla phathing.\"", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_girl should not be translated." }, { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Rotlhe re dira diphoso! Fa re latela ditlamorago ka tsepamo, ke moo bana ba rona ba tla tlhophang go itshwara sentle mo isagweng.", + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", + "text": "Maemo ano a kotsi! Ka lesego, @global.w_stress_teen_boy_2 le @global.w_stress_teen_girl ba ile ba gakologelwa gore @global.w_stress_parent o ba boleletse eng: \n\n“Sa botlhokwa le go feta, ke tshwenyegile ka pabalesego ya gago. Nako nngwe le nngwe fa o tenegile, kgotsa o boifa, o ka nteletsa gore ke go thuse, kgotsa o mpolelele ka gone. \n\nBua fela o re ‘KGOLOLESEGO YA PABALESEGO’. Ke a go solofetsa, ke tla leka ka tsotlhe tse nka di kgonang go go thusa e bile nka se galefe – le fa gone o ka tswa o dira sengwe se o sa tshwanelang go se dira.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Le fa go na le ditlamorago, mosha wa me o sa ntse a sa latele molao.", + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", + "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ke kgololesego ya pabalesego. A o ka kgona go tla go ntsaya? Tota ke tlhoka mongwe yo o ka nkisang gae.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "Fa mosha wa gago a tswelapele a roba melao, o ka nna wa tlhoka go ipha nako sentle le ene. \n\nLeka go tsamaya le mekgele ya gago e mengwe – jaaka go itlhokomela, go ipha nako mmogo, le go baka. Botswerere jotlhe jono bo tla thusa mosha wa gago go ikutlwa a ratiwa thata e bile a sireletsegile... mme kgatelelo ya gago ya maikutlo e tla fokotsega!", + "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", + "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, kgololesego ya pabalesego. Ke akanya gore ditsala tsa me di mo kotsing. Ga ke batle go kgaotsa botsala jwa me le bone mme gone, ke tshwenyegile. A re ka bua?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" }, { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Re tlhodile fela ditlamorago tse di sa siamang, e seng tse di siameng.", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Go gontle, segolobogolo ka dinako tse di thata jaaka tseno. O naledi.", "type": "template", "note": "" }, { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Go ka nna bokete go akanya ka ditlamorago tse di molemo nako e nngwe. Ditlamorago tse di molemo di tla rotloetsa mosha wa gago go tsaya maikarabelo a oketsegileng, mme o tla bona pharologanyo!", + "SourceText": "Today you will explore:", + "text": "Gompieno o tlile go itse:", "type": "template", "note": "" }, { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "Mosha wa me o akantsha go itewa e le ditlamorago tse di sa siamang.", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le motlotlo - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Basha ba ka bona go itewa e le gone fela ditlamorago tsa go roba melao. \n\nAkantshana ditlamorago dingwe tse di seng thata le bone tse di ka ba thusang go tlhaloganya gore ba dirile sengwe se se sa siamang. Tseno di ka dira thata mme e nne sekao se se molemo!", + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Kgang le motlotlo - tse di sa dirang...\n* Kgang le go leba kwa morago - tse di dirileng!\n* Kgololesego ya Pabalesego kgang le motlotlo - tse di berekileng!\n* Didirisiwa: Kafa o ka laolang go tshwenyega mo maikutlong\nKGWA MOWA - BUANG - BONTSHA\n * Dikakantsho tsa katiso ya legae", "type": "template", "note": "" }, { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Mokgele wa gago e ne e le go direla mosha wa gago molao o le MONGWE mo bekeng eno.", + "SourceText": "Let's discuss what happened in this story.", + "text": "A re tlotleng ka gore ke eng se se diragetseng mo kgannyeng eno.", "type": "template", "note": "" }, { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "O dirile seno sentle! Ga go motlhofo, le basha ga ba kitla ba boloka melao ka dinako tsotlhe, mme go dira melao konokono e le mmalwa lo le mmogo ke tshimologo e ntle. Ikakgole ka go leka seno - re motlotlo ka wena!", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "O akanya gore @global.w_stress_teen_boy_1 o ile a ikutlwa jang? Le @global.w_stress_male_caregiver wa gagwe? Le @global.w_stress_girl?\n\n@global.w_stress_male_caregiver A ka bo a ile a dira dilo jang ka tsela e e farologaneng?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "make rules with their teens", - "text": "dira melao le basha ba bone", + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver a ka...", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "A o nnile le dikgwetlho dingwe fa o leka go dira molao lo le mmogo?", + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* Lemoga lebaka la go bo a tshwenyegile mo maikutlong \n* Kgwa mowa o bo o bua o ritibetse \n* O bontshe gore o tlhaloganya maikutlo a mosha wa gago \n* Akanya ka ditharabololo mmogo le @global.w_stress_teen_boy_1\n* Dira sengwe se se molemo/rotloetsang mmogo le @global.w_stress_teen_boy_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Ke eng seo se nnileng bokete mo go wena ka go dira molao le mosha wa gago?", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "KGWA MOWA. Ka iketlo. Ema go se kae.", "type": "template", "note": "" }, { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Nna le mosha wa me ga re kgone go dumalana ka molao.", + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Pele ga o bua sengwe, kgwa mowa ka iketlo makgetlo a le tlhano. Seno se tla go thusa go ritibala maikutlo e bile o tla kgona go akanya sentle.", "type": "template", "note": "" }, { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Akanya ka gore a mme molao o a utlwala. A mosha wa gago o kgona go o latela? Fa lo dira melao jaaka lelapa, go a thusa gore o akanye ka mosha wa gago, ba bagolo go le kae, le gore ke eng se se botlhokwa mo go bone.", + "SourceText": "SHARE how you feel", + "text": "BUA gore o ikutlwa jang", "type": "template", "note": "" }, { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "Mosha wa me o ikutlwa gore ga go tekatekano gore ba tshwanetse go latela molao fa nna ke sa tlhoke go o latela.", + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Ga go motlhofo. Bontsi jwa rona re ile ra bolelelwa gore ga re a tshwanela go lela kgotsa go bontsha bana gore re ikutlwa jang. Kgwa mowa mme o ba bolelele gore o ikutlwa jang, o ritibetse maikutlo. Ba tla kgona go tlhaloganya botoka e bile ba tla ithuta mo go wena gore ba ka dira eng fa ba tshwenyegile mo maikutlong.", "type": "template", "note": "" }, { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Re tshwanetse go gopola ka metlha gore bana ba ithuta thata go tswa mo go rona. Fa re latela melao ka gale, le bone ba tla o latela. \n\nO ka nna wa tokafatsa melao go netefatsa gore e a kgonega gore botlhe ba e latele, o akanyetse maikarabelo a gago le maikarabelo a mosha wa gago (sekai, sekolo kgotsa dilo tsa tiro).", - "type": "template", + "SourceText": "SHOW them you care", + "text": "Ba BONTSHE gore o a ba kgathalela", + "type": "template", "note": "" }, { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Ga ke a nnisega, ka gonne ke ikutlwa e kete ke nna yo o tshwanetseng go tlhoma molao, e seng mosha wa me.", + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Ga go motlhofo! Go tshwenyega mo maikutlong go dira gore re akanye ka rona fela. Mme gone, basha ba rona ba a re tlhoka. Ba botse gore ba ikutlwa jang. Ba reetse mme o ba gomotse. Gongwe o ka ba atla kgotsa wa ba bolelela gore ‘ke a tlhaloganya’. Go dira jalo go ka fetola dilo.", "type": "template", "note": "" }, { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "Molekane wa me ga a nnisege, ka go bo a ikutlwa e kete ke ene yo o tshwanetseng go tlhoma molao, e seng mosha.", + "SourceText": "SEEK the positive", + "text": "BATLANG dilo tse dintle tse lo ka kgonang go di dira", "type": "template", "note": "" }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Fa re tlhoma melao mmogo le basha ba rona, seno se thusa lelapa go tlhaloganyana botoka. Melao e tla kgona go diragadiwa, le basha ba rona ba tla batla le go kgona go e latela melao eo.", + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "A gongwe wena le mosha wa gago lo ka akanya ka dikakantsho dingwe tse di ka thusang? A lo ka dira sengwe se se itumedisang seo se ka dirang gore maikutlo a lona a seka a tswelela a tshwenyegile?", "type": "template", "note": "" }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Fa re ne re leka go dira molao, re nnile le ngangisano.", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "Fa dilo tseno tsotlhe di sa thuse, kgwa mowa. O ka dira seno.", "type": "template", "note": "" }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "A mosha wa gago o ne a itumetse fa o leka go dira molao? Go botoka go dira melao fa maemo a ritibetse. Fa wena le mosha wa gago lo lapile kgotsa lo tshwerwe ke tlala, go botoka go bua ka melao kgantele.", + "SourceText": "Looking after yourself matters.", + "text": "Go itlhokomela go botlhokwa.", "type": "template", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Ga re a kgona go latelela molao.", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Go gontle! Go a itumedisa go utlwa gore o ikutlwa sentle gompieno. Ruri ke maikutlo ao a itumedisang!", "type": "template", "note": "" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Molao o tshwanetse go nna o totobetseng le o o kgonang go latelwa. Netefatsa gore o na le molao o o kgonang go latelwa motlhofo, jaaka go ja dijo mmogo gangwe ka Sontaga mongwe le mongwe go na le bosigo bongwe le bongwe. A o tlhoka go nna yo o fetofetogang ka molao?", + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Ka dinako tse dingwe dilo di tsamaya sentle. Ka dinako tse dingwe ga di tsamae sentle. E bile ka dinako tse dingwe ga re itse sentle gore re dire eng... mme seo se siame fela! Gopola gore ga o nosi.", "type": "template", "note": "" }, { - "SourceText": "Mother", - "text": "Mmé", + "SourceText": "My Favourite Activities", + "text": "Ditiro tse ke Ratang go di Dira", "type": "global", "note": "" }, { - "SourceText": "Father", - "text": "Rre", + "SourceText": "All Activities", + "text": "Ditiro Tsotlhe", "type": "global", "note": "" }, { - "SourceText": "TikTok", - "text": "TikTok", + "SourceText": "Random Activity", + "text": "Tiro Fale le Fale", "type": "global", "note": "" }, { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "Ke tlhoka internet gore ke kgone go lebelela bidio eno. Go fokotsa selekanyo sa datha e ke e dirisang, ke lebelele bidio eno kgotsa ke e laisolole fa ke le mo WiFi.", + "SourceText": "This Week's Activity", + "text": "Tiro ya Beke Eno", "type": "global", "note": "" }, { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "Ke tlhoka internet gore ke kgone go bula di-website tseno. Go fokotsa selekanyo sa datha e o e dirisang, bula di-website tseno fa o le mo WiFi.", + "SourceText": "Chat Together", + "text": "Buang Mmogo", "type": "global", "note": "" }, { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "Ke tlhoka internet gore ke kgone go romela molaetsa ono. Go fokotsa selekanyo sa datha e o e dirisang, romela molaetsa ono fa o le WiFi.", + "SourceText": "Do Together", + "text": "Dirang Mmogo", "type": "global", "note": "" }, { - "SourceText": "COVID", - "text": "COVID", + "SourceText": "Your @global.parent_app Code", + "text": "Khoutu @global.parent_app ya Gago", "type": "global", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Welcome and Self-Care", - "text": "Go Amogelwa le go Itlhokomela", + "SourceText": "Terms & Conditions", + "text": "Melao le Dipeelo", "type": "global", "note": "" }, { - "SourceText": "Self-Care", - "text": "Go itlhokomela", + "SourceText": "Privacy Policy", + "text": "Melao ya Sephiri", "type": "global", "note": "" }, { - "SourceText": "How to add self-care", - "text": "Tsela ya go tsenya lenaane la go itlhokomela", + "SourceText": "Real-world ideas", + "text": "Dikakantsho tsa se tota se diragalang", "type": "global", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Go Ipha Nako Mmogo", + "SourceText": "Ideas", + "text": "Dikakantsho", "type": "global", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Tsela ya go ipha nako lo le mmogo", + "SourceText": "Ideas from other families...", + "text": "Dikakantsho go tswa ko malapeng a mangwe...", "type": "global", "note": "" }, { - "SourceText": "Praise", - "text": "Akgola", + "SourceText": "Challenges & solutions", + "text": "Dikgwetlho le ditharabololo", "type": "global", "note": "" }, { - "SourceText": "How to praise", - "text": "Tsela ya go baka/akgola", + "SourceText": "Submit", + "text": "Neela", "type": "global", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Ditaelo tse di siameng", + "SourceText": "Find out more", + "text": "Batla tse di oketsegileng", "type": "global", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Tsela ya go naya ditaelo tse di siameng", + "SourceText": "Show me how", + "text": "Mpontshe gore ke dire jang", "type": "global", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Go laola go tshwenyega mo maikutlong", + "SourceText": "Tell me more!", + "text": "Mpolelle mo go oketsegileng!", "type": "global", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Kafa o ka laolang go tshwenyega mo maikutlong", + "SourceText": "Let's go!", + "text": "A re simolle!", "type": "global", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Ditekanyetsokabo tsa lelapa", + "SourceText": "Check it out!", + "text": "E tlhole!", "type": "global", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi", + "SourceText": "Done", + "text": "Dirilwe", "type": "global", "note": "" }, { - "SourceText": "Rules", - "text": "Melao", + "SourceText": "Next", + "text": "E e latelang", "type": "global", "note": "" }, { - "SourceText": "How to create rules", - "text": "Kafa o ka bayang melao ka teng", + "SourceText": "Previous", + "text": "E e fetileng", "type": "global", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Ditlamorago o Ritibetse", + "SourceText": "Save", + "text": "Boloka", "type": "global", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo", + "SourceText": "Start", + "text": "Simolola", "type": "global", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Go Rarabolola Mathata", + "SourceText": "Skip", + "text": "Tlola", "type": "global", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Kafa o ka rarabololang mathata ka teng", + "SourceText": "Continue", + "text": "Tswelela", "type": "global", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Pabalesego ya Basha", + "SourceText": "Finish with a song", + "text": "Feleletsa ka pina", "type": "global", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Se o ka se dirang go boloka mosha wa gago a sireletsegile", + "SourceText": "Goodbye!", + "text": "Tsamaya sentle!", "type": "global", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Go lepalepana le Mathata a a masisi", + "SourceText": "No gadget use the next day", + "text": "Ga o ye go dirisa sedirisiwa sa eleketeroniki kamoso", "type": "global", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Kafa o ka lepalepanang ka teng le mathata a a masisi", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Kgwa mowa go se kae ka metsotso e le 5 golo gongwe mo kamoreng", "type": "global", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Go Keteka le Dikgato Tse di Latelang", + "SourceText": "Write a letter of apology", + "text": "Kwala lekwalo la go kopa maitshwarelo", "type": "global", "note": "" }, { - "SourceText": "How to support each other", - "text": "Kafa lo ka thusanang ka teng", + "SourceText": "Cannot see friends the next day", + "text": "Ga a kitla a etela ditsala tsa gagwe letsatsi le le latelang", "type": "global", "note": "" }, { - "SourceText": "Home Practice", - "text": "Katiso ya Legae", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "Ga a kitla a tshameka ka founo morago ga dijo tsa maitseboa (kgotsa mo sebakeng se se latelang)", "type": "global", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Bua ka @global.home_practice", - "type": "global", - "note": "The string @global.home_practice should not be translated." - }, - { - "SourceText": "Home Practice Review", - "text": "Poeletso ya Ikatiso ya Kwa Gae", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Nako e e oketsegileng mafelobeke le ditsala tsa gagwe (ura e le 1)", "type": "global", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "Tla re bue ka gore ikatiso ya gago ya ko gae e tsamaile jang beke eno.", + "SourceText": "Cooking teen’s favourite meal", + "text": "Go apaya dijo tse mosha a di ratang", "type": "global", "note": "" }, { - "SourceText": "In my group", - "text": "Mo setlhopheng sa me", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Go nna le nako e e oketsegileng ya go dirisa founo morago ga dijo tsa maitseboa (metsotso e le 30)", "type": "global", "note": "" }, { - "SourceText": "By myself", - "text": "Ke le nosi", + "SourceText": "Watching teen’s T.V. show together", + "text": "Go bogela mmogo lenaane la basha mo T.V", "type": "global", "note": "" }, { - "SourceText": "awesome parent", - "text": "motsadi yo o dirang bontle", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Go ipha nako mmogo lo tlotla ka Sontaga (metsotso e le 30)", "type": "global", "note": "" }, { - "SourceText": "friends", - "text": "ditsala", + "SourceText": "Take a deep breath and pause before responding", + "text": "Hemela kwa teng mme o kgwe mowa ka mo go lekaneng pele ga o araba", "type": "global", "note": "" }, { - "SourceText": "New workshop ready tomorrow!", - "text": "Workshop e ntšha e tla bo e siame kamoso!", + "SourceText": "Listen to your teen", + "text": "Reetsa mosha wa gago", "type": "global", "note": "" }, { - "SourceText": "New workshop!", - "text": "Workshop e ntšha!", + "SourceText": "Praise your teen for sharing", + "text": "Akgola mosha wa gago ka gonne a ile a abela ba bangwe", "type": "global", "note": "" }, { - "SourceText": "Workshop Reminder", - "text": "Kgopotso ya Workshop", + "SourceText": "Use problem solving skills", + "text": "Dirisa mekgwa ya go rarabolola mathata", "type": "global", "note": "" }, { - "SourceText": "Nice progress!", - "text": "Lo dira bontle!", + "SourceText": "Work out where you can get help", + "text": "Dira dithulaganyo tsa gore o ka bona kae thuso", "type": "global", "note": "" }, { - "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", - "text": "Gopola go nna fa fatshe o iketle gompieno - go itlhokomela ke bokgoni jwa botlhokwa jwa go nna motsadi.", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "Ke tlhoka internet gore ke kgone go lebelela bidio eno. Go fokotsa selekanyo sa datha e ke e dirisang, ke lebelele bidio eno kgotsa ke e laisolole fa ke le mo WiFi.", "type": "global", "note": "" }, { - "SourceText": "You are appreciated!", - "text": "Lo ntira motlotlo!", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "Ke tlhoka internet gore ke kgone go bula di-website tseno. Go fokotsa selekanyo sa datha e o e dirisang, bula di-website tseno fa o le mo WiFi.", "type": "global", "note": "" }, { - "SourceText": "Something Fun", - "text": "Sengwe se se Itumedisang", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "Ke tlhoka internet gore ke kgone go romela molaetsa ono. Go fokotsa selekanyo sa datha e o e dirisang, romela molaetsa ono fa o le WiFi.", "type": "global", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Tiro ya go ijesa monate e o ka e dirang le mosha wa gago ke eno!", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Bolwetsi jo bo masisi kgotsa loso lwa tsala kgotsa mongwe mo lelapeng", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_points this week", - "text": "@global.parent_points ya gago beke eno", - "type": "global", - "note": "The string @global.parent_points should not be translated." - }, - { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", + "SourceText": "Robbery", + "text": "Go kgothodiwa", "type": "global", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" + "note": "" }, { - "SourceText": "Home Practice Reminder", - "text": "Kgopotso ya Ikatiso ya kwa Gae", + "SourceText": "Flooding", + "text": "Morwalela", "type": "global", "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Ke tla leka go dira seno go leka go rarabolola bothata jono:", + "SourceText": "Political violence", + "text": "Dikhuduego tsa dipolotiki", "type": "global", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "A o batla go leka nngwe ya dilo tse di latelang?", + "SourceText": "Losing my job", + "text": "Go latlhegelwa ke tiro", "type": "global", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "Bothata jo ke nang le jone ga bo a tsenngwa fano.", + "SourceText": "Pandemic (COVID-19)", + "text": "Bolwetsi jwa leroborobo (COVID-19)", "type": "global", "note": "" }, @@ -8814,128 +8772,92 @@ "note": "" }, { - "SourceText": "Real-world ideas", - "text": "Dikakantsho tsa se tota se diragalang", + "SourceText": "To solve this challenge, I will try to:", + "text": "Ke tla leka go dira seno go leka go rarabolola bothata jono:", "type": "global", "note": "" }, { - "SourceText": "Ideas", - "text": "Dikakantsho", + "SourceText": "Do you want to try one of the following things?", + "text": "A o batla go leka nngwe ya dilo tse di latelang?", "type": "global", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Dikakantsho go tswa ko malapeng a mangwe...", + "SourceText": "My challenge is not listed here.", + "text": "Bothata jo ke nang le jone ga bo a tsenngwa fano.", "type": "global", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Dikgwetlho le ditharabololo", - "type": "global", - "note": "" - }, - { - "SourceText": "Find out more", - "text": "Batla tse di oketsegileng", - "type": "global", - "note": "" - }, - { - "SourceText": "Show me how", - "text": "Mpontshe gore ke dire jang", - "type": "global", - "note": "" - }, - { - "SourceText": "Tell me more!", - "text": "Mpolelle mo go oketsegileng!", - "type": "global", - "note": "" - }, - { - "SourceText": "Let's go!", - "text": "A re simolle!", - "type": "global", - "note": "" - }, - { - "SourceText": "Check it out!", - "text": "E tlhole!", - "type": "global", - "note": "" - }, - { - "SourceText": "Done", - "text": "Dirilwe", + "SourceText": "New workshop ready tomorrow!", + "text": "Workshop e ntšha e tla bo e siame kamoso!", "type": "global", "note": "" }, { - "SourceText": "Next", - "text": "E e latelang", + "SourceText": "New workshop!", + "text": "Workshop e ntšha!", "type": "global", "note": "" }, { - "SourceText": "Previous", - "text": "E e fetileng", + "SourceText": "Workshop Reminder", + "text": "Kgopotso ya Workshop", "type": "global", "note": "" }, { - "SourceText": "Save", - "text": "Boloka", + "SourceText": "Nice progress!", + "text": "Lo dira bontle!", "type": "global", "note": "" }, { - "SourceText": "Start", - "text": "Simolola", + "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", + "text": "Gopola go nna fa fatshe o iketle gompieno - go itlhokomela ke bokgoni jo bo botlhokwa jwa go nna motsadi.", "type": "global", "note": "" }, { - "SourceText": "Skip", - "text": "Tlola", + "SourceText": "You are appreciated!", + "text": "Lo ntira motlotlo!", "type": "global", "note": "" }, { - "SourceText": "Continue", - "text": "Tswelela", + "SourceText": "Something Fun", + "text": "Sengwe se se Itumedisang", "type": "global", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Feleletsa ka pina", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Fano ke tiro ya go ijesa monate e o ka e dirang le mosha wa gago!", "type": "global", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Tsamaya sentle!", + "SourceText": "Your @global.parent_points this week", + "text": "@global.parent_points ya gago beke eno", "type": "global", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Your @global.parent_app Code", - "text": "Khoutu @global.parent_app ya Gago", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Dumela @fields.user_name! Re lebogela gore o dirisitse@global.parent_app le go ikemisetsa go nna motsadi. \n\nGopola go tobetsa @global.parent_points ya gago!", "type": "global", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" }, { - "SourceText": "Terms & Conditions", - "text": "Melao le Dipeelo", + "SourceText": "Home Practice Reminder", + "text": "Kgopotso ya Ikatiso ya kwa Gae", "type": "global", "note": "" }, { - "SourceText": "Privacy Policy", - "text": "Melao ya Sephiri", + "SourceText": "COVID", + "text": "COVID", "type": "global", "note": "" }, @@ -8994,62 +8916,50 @@ "note": "" }, { - "SourceText": "My Favourite Activities", - "text": "Ditiro tse ke Ratang go di Dira", - "type": "global", - "note": "" - }, - { - "SourceText": "All Activities", - "text": "Ditiro Tsotlhe", - "type": "global", - "note": "" - }, - { - "SourceText": "Random Activity", - "text": "Tiro Fale le Fale", + "SourceText": "At home", + "text": "Kwa gae", "type": "global", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Tiro ya Beke Eno", + "SourceText": "Buy things we can sell", + "text": "Reka dilo tse re ka di rekisang", "type": "global", "note": "" }, { - "SourceText": "Chat Together", - "text": "Buang Mmogo", + "SourceText": "At a bank", + "text": "Kwa bankeng", "type": "global", "note": "" }, { - "SourceText": "Do Together", - "text": "Dirang Mmogo", + "SourceText": "In a savings group", + "text": "Mo setlhopheng sa go boloka madi", "type": "global", "note": "" }, { - "SourceText": "Tap and type", - "text": "Tobetsa o kwale", + "SourceText": "Teens completing school/university", + "text": "Basha ba ba fetsang sekolo/yunibesithi", "type": "global", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Tobetsa o tlhophe", + "SourceText": "Building/expanding a house for my family", + "text": "Aga/atolosa ntlo ya lelapa la me", "type": "global", "note": "" }, { - "SourceText": "Type your own", - "text": "Ikwalele ya gago", + "SourceText": "Starting a business", + "text": "Go simolola kgwebo", "type": "global", "note": "" }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Ke tlhalogantse seno. O seka wa mpontsha molaetsa ono gape.", + "SourceText": "Buying a car for my family", + "text": "Go rekela lelapa la me koloi", "type": "global", "note": "" }, @@ -9114,1395 +9024,2103 @@ "note": "" }, { - "SourceText": "Teens completing school/university", - "text": "Basha ba ba fetsang sekolo/yunibesithi", + "SourceText": "Tap and type", + "text": "Tobetsa o kwale", "type": "global", "note": "" }, { - "SourceText": "Building/expanding a house for my family", - "text": "Aga/atolosa ntlo ya lelapa la me", + "SourceText": "Tap and choose", + "text": "Tobetsa o tlhophe", "type": "global", "note": "" }, { - "SourceText": "Starting a business", - "text": "Go simolola kgwebo", + "SourceText": "Type your own", + "text": "Ikwalele ya gago", "type": "global", "note": "" }, { - "SourceText": "Buying a car for my family", - "text": "Go rekela lelapa la me koloi", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Ke tlhalogantse seno. O seka wa mpontsha molaetsa ono gape.", "type": "global", "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Bolwetsi jo bo masisi kgotsa loso lwa tsala kgotsa mongwe mo lelapeng", + "SourceText": "Home Practice", + "text": "Katiso ya Legae", "type": "global", "note": "" }, { - "SourceText": "Robbery", - "text": "Go kgothodiwa", + "SourceText": "Talk about @global.home_practice", + "text": "Bua ka @global.home_practice", "type": "global", - "note": "" + "note": "The string @global.home_practice should not be translated." }, { - "SourceText": "Flooding", - "text": "Morwalela", + "SourceText": "Home Practice Review", + "text": "Poeletso ya Ikatiso ya Kwa Gae", "type": "global", "note": "" }, { - "SourceText": "Political violence", - "text": "Dikhuduego tsa dipolotiki", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "Tla re bue ka gore ikatiso ya gago ya kwa gae e tsamaile jang beke eno.", "type": "global", "note": "" }, { - "SourceText": "Losing my job", - "text": "Go latlhegelwa ke tiro", + "SourceText": "In my group", + "text": "Mo setlhopheng sa me", "type": "global", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Bolwetsi jwa leroborobo (COVID-19)", + "SourceText": "By myself", + "text": "Ke le nosi", "type": "global", "note": "" }, { - "SourceText": "At home", - "text": "Kwa gae", + "SourceText": "awesome parent", + "text": "motsadi yo o dirang bontle", "type": "global", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Reka dilo tse re ka di rekisang", + "SourceText": "friends", + "text": "ditsala", "type": "global", "note": "" }, { - "SourceText": "At a bank", - "text": "Kwa bankeng", - "type": "global", - "note": "" + "SourceText": "Welcome to @global.parent_app", + "text": "O amogetswe mo @global.parent_app", + "type": "tour", + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "In a savings group", - "text": "Mo setlhopheng sa go boloka madi", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app is here to support you.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Here is how to use the app:

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  O tshwanetse ke go ikutlwa o itumetse, mme o na le botsalano jwa boitumelo le ba lelapa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e fano go go tshegetsa.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fano ke tsela ya dirisa app:

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string

                                                                                                                                                                                  @global.parent_app should not be translated." }, { - "SourceText": "No gadget use the next day", - "text": "Ga o ye go dirisa sedirisiwa sa eleketeroniki kamoso", - "type": "global", - "note": "" + "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Konopo e kgolo ena e go isa kwa @global.weekly_workshops.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops. should not be translated." }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Kgwa mowa go se kae ka metsotso e le 5 golo gongwe mo kamoreng", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Each week you will unlock a new workshop focusing on a different parenting skill.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Beke nngwe le nngwe o tlile go bula tirelothuto e ntšha e e tlileng go lebagana le bokgoni jo bo farologaneng jwa botsadi.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Kwala lekwalo la go kopa maitshwarelo", - "type": "global", + "SourceText": "

                                                                                                                                                                                  The round button appears when a new workshop is ready for you.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Konopo eno e e kgolokwe e tlhagelela fa go na le tirelothuto e ntšha e e go letileng.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "Ga a kitla a etela ditsala tsa gagwe letsatsi le le latelang", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Each new parenting skill comes with a @global.parent_point.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Bokgoni bo bongwe le bo bongwe bo bo ntšha ba botsadi bo tla le @global.parent_point.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_point.

                                                                                                                                                                                  should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Use @global.parent_points to celebrate your achievements!

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Dirisa @global.parent_points go keteka diphitlhelelo tsa gago!

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.parent_points should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Check out the extra relaxation and parenting activities!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You can also get quick parenting tips and technical support.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tlhola ditirwana tse di okeditsweng tsa go itapolosa le botsadi!

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O ka kgona le go bona maele a botsadi ka potlako le tshegetso ya sethekeniki.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "Ga a kitla a tshameka ka founo morago ga dijo tsa maitseboa (kgotsa mo sebakeng se se latelang)", - "type": "global", + "SourceText": "

                                                                                                                                                                                  Have a look around! Wherever you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Leba tikologo ya gago! Gongwe le gonwe kwa o simololang, lebaka la gore o fano le bontsha gore wa kgathala.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Nako e e oketsegileng mafelobeke le ditsala tsa gagwe (ura e le 1)", - "type": "global", + "SourceText": "Go to the @global.weekly_workshops", + "text": "Ya kwa @global.weekly_workshops", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa konopo e e mo sekhirining gore o ye kwa @global.weekly_workshops

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." + }, + { + "SourceText": "Go to the @global.weekly_workshop_options", + "text": "Ya kwa @global.weekly_workshop_options", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa konopo eno gore o ye kwa @global.weekly_workshop_options

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Dirisa @global.weekly_workshop_options go fetola diseting tsa workshop ya gago.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop_options should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  O ka fetola leina la gago fano.

                                                                                                                                                                                  ", + "type": "tour", "note": "" }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Go apaya dijo tse mosha a di ratang", - "type": "global", + "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  E bontsha letsatsi la beke le @global.weekly_workshop ya gago e ntšha e tsenang.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fa o batla go e fetola, e tobetse.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  E bontsha @global.weekly_workshop e o leng mo go yone.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshop should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  O ka fetola fano fa o batla go dira @global.weekly_workshops lo le setlhopha kgotsa o le nosi.

                                                                                                                                                                                  ", + "type": "tour", + "note": "The string @global.weekly_workshops should not be translated." + }, + { + "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Tobetsa fano go fetola leina la setlhopha sa lona.

                                                                                                                                                                                  ", + "type": "tour", + "note": "" + }, + { + "SourceText": "Reflect on the positive", + "text": "Akanya ka dilo tse di siameng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Check-in chat", + "text": "Tlhola motlotlo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Dream Travel", + "text": "Loeto leo lo lorang go lo Tsaya", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Famous Party", + "text": "Moletlo o o Itsegeng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Two truths, one lie", + "text": "Go bua nnete gabedi, go bua maaka gangwe", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Time Machine", + "text": "Pusetso Nako Morago", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Superpowers", + "text": "Matla a Masaitsiweng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Just a friendly chat", + "text": "Motlotlo fela wa botsalano", + "type": "data_list", + "note": "" + }, + { + "SourceText": "The Interrupter", + "text": "Sekgoreletsi", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Three options", + "text": "Dintlha di le tharo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Yes, No or Maybe", + "text": "Ee, Nnyaa kgotsa Gongwe", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Motshameko wa go ikgakolola - \"Ka Lamatlhatso...\"", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Make up a story", + "text": "Tla ka kgang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Co-chef", + "text": "Moapei-mmogo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Dance moves", + "text": "Go bina", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Mirror", + "text": "Seipone", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What's new?", + "text": "Ke eng se sesha?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Get active!", + "text": "Nna matlhagatlhaga!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Name that tune", + "text": "Bolela pina eno", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Pass the snap", + "text": "Thwantsha menwana", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Family workout", + "text": "Se lelapa le ka se dirang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Make housework fun", + "text": "Dira gore tiro ya mo lapeng e nne e e itumedisang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Ditori tsa fa gae ga di monate... kgotsa di monate? O ka di fetolela mo motshamekong!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What are you doing?", + "text": "O dira eng?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Here is a fun game you can do with your family!", + "text": "Fano ke motshameko o o monate o o ka o dirang le lelapa la gago!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Crazy chicken", + "text": "Koko e e sa utlweng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Help yourself cope", + "text": "Ithuse go mekamekana le seemo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Help your teen cope", + "text": "Thusa mosha go mekamekana le seemo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Practical steps", + "text": "Metsamao e kgonegang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How to talk to my teen", + "text": "Go buisana le mosha wa me", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Steps to deal with news", + "text": "Metlhala ya go mekamekana le dikgang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How can I help my teen choose well?", + "text": "Nka thusa mosha waka jang go tlhopha sentle?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "What influences teen decisions?", + "text": "Ke eng se se rotloetsang ditshwetso tsa basha?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How does my teen feel?", + "text": "Mosha wa me o ikutlwa jaang?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Changing negative to positive", + "text": "Go fetolela se se sa siamang go se se siameng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Relax", + "text": "Iketle", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Relax** @global.parent_point", + "text": "**Iketle** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Doing a relaxation activity", + "text": "Go dira tirwana ya go iketla", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o iketla, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Treat yourself well", + "text": "Ineneketse", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "**Ineneketse** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Doing something they like for themselves", + "text": "Go itirela sengwe se ba se ratang", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Nako nngwe le nngwe fa o itshotse sentle, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "**Praise yourself** @global.parent_point", + "text": "**Ipake/Ikakgole** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising themselves", + "text": "Go ipoka", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotslhe fa o boka mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "One-on-one time", + "text": "Go ipha nako mmogo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**One-on-one time** @global.parent_point", + "text": "**Go ipha nako mmogo** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Spending time with their teen", + "text": "Go fetsa nako le mosha wa bone", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o dira nako ya motho-ka-mong, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praise your teen", + "text": "Baka/Akgola mosha wa gago", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Praise your teen** @global.parent_point", + "text": "**Baka/Akgola mosha wa gago** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Praising their teen when they did positive thing", + "text": "Rorisa basha ba bona fa ba dirile sengwe se sentle", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe ga o rorisa mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Get positive", + "text": "Leba dilo ka tsela e e siameng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Get positive** @global.parent_point", + "text": "**Leba dilo ka tsela e e siameng** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a positive instruction", + "text": "Go naya mosha ditaelo tse dintle", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o naya mosha taelo e ntle, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Breathe not yell", + "text": "Kgwa mowa mme o se ka wa goelela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Breathe not yell** @global.parent_point", + "text": "**Kgwa mowa mme o se ka wa goelela** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Taking a pause before responding", + "text": "Go tsaya motsotso pele o araba", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o tsaya motsotso pele o araba, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Good money choice", + "text": "Go dirisa madi sentle", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Good money choice** @global.parent_point", + "text": "**Go dirisa madi sentle** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Keeping the budget", + "text": "Go dirisa tekanyetso ya madi", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o tsaya tshweetso e siameng ka ditlhoko, dilo tse o di batlang le go somarela, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Calm consequence", + "text": "Ditlamorago o ritibetse", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Calm consequence** @global.parent_point", + "text": "**Ditlamorago o ritibetse** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Giving their teen a consequence in a calm way", + "text": "Go naya mosha ditlamorago ka tsela e e repileng", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o neelana ka ditlamorago tse di repileng, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Safe", + "text": "Sireletsegile", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Safe** @global.parent_point", + "text": "**Sireletsegile** @global.parent_point", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Planning or keeping a family safety plan", + "text": "Go rulaganya kgotsa go tshwara thulaganyo ya pabalesego ya lelapa", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Nako tsotlhe fa o dira sengwe go tshwara mosha wa gago a babalesegile, @global.parent_point mme o keteke katlego ya gago!", + "type": "data_list", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Did it? Tap it!", + "text": "O e dirile? E tobetse!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Lo dirile bontle tota! Lo dirile sentle ka go fetsa nako mmogo. Seno ke one motheo wa go nna tsala e kgolo ya mosha wa gago!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Go go siametse! Fa o fetsa nako o na le basha ba gago, ba tla bona gore ba botlhokwa mo go wena. Seno se thusa tota!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Bontle tota! Go fetsa nako le mosha wa gago go ka dira gore gantsi a batle go go thusa. O dira sentle!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "O dirile sentle! Go fetsa nako le mosha wa gago go go thusa gore o bone gore ke dilo dife tse a di ratang le gore ke dilo dife tse a di kgonang. O naledi!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Tiro e ntle! Go fetsa nako mmogo le mosha wa gago go dira gore lo nne ditsala tse dikgolo e bile go dira gore lo kgone go dirisana sentle.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Ka dinako dingwe go tla nna motlhofo go fetsa nako le mosha wa gago mme ka dinako dingwe e tlile go nna kgwetlho e kgolo. Go fetsa nako mmogo go tla tokafatsa tsela eo lo dirisanang ka yone; o dirile sentle tota ka go lekeletsa go dira seno!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo go leka go fetsa nako mmogo le mosha wa gago. Rotlhe ka dinako tse dingwe re na le dikgwetlho. Nna pelotelele mo go wena le go mosha wa gago - dilo di tla nna botoka. Re leboga fela thata go bo lo tsere matsapa!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well; you are a star!", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle; lo ditswerere!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Bontle tota! Lo tlhoka go itumela tota!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo. Re lo opela diatla go bo lo tsere matsapa!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Re itumelela go utlwa gore e dirile gore o ikutlwe o itumetse! Tswelelang ka go dira tiro eno e e molemo. Mosha wa gago o ithuta go le gontsi tota mo go wena!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Go ka nna ga nna thata lekgetlo la ntlha go tlhalosa gore re ikutlwa jang mme gone, wena le mosha wa gago lo tla tlwaela. Tswelela o leke mme fa go ntse go ile, dilo di tla tsamaya sentle!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle. Go bua ka madi mmogo go nonotsha lelapa la lona tota!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo. Re leboga fela thata go bo lo tsere matsapa!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Melao e e sa nneng e fetofetoga e dira gore basha ba gago ba ikutlwe ba babalesegile, e bile e a ba sireletsa!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Re maswabi go utlwa gore go ne go le thata. Go baya melao mmogo go tlhoka gore lo ikatise mme gone, go mosola fela thata!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well!", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo. Fa lo buisana mmogo gore kotlhao e tla nna eng, gantsi seno se tla dira gore mosha wa gago a batle go ikobela melao!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo. Go le gantsi re tshwanetse go nna re leka. Leka go batla nako e wena le mosha wa gago lo ritibetseng maikutlo mme o leke gape go rarabolola bothata o dirisa dikgato tse nne tsa go rarabolola mathata. Fa lo dira mmogo, lo ka kgona go atlega thata!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Go bua ka bodiphatsa le ditsela tse di ka dirisiwang tsa thuso go thibela mathata mme e bile go thusa tota go boloka mosha wa gago a sireletsegile.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Re maswabi go utlwa gore go ne go se motlhofo. Go bona fa dikotsi le mafelo a go bona tshegetso di leng teng e ka nna kgwetlho le go tsholetsa maikutlo. Tota go a thusa go boloka mosha wa gago a sireletsegile!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Re maswabi gore go ne go le thatanyana. Ga e se selo se se motlhofo go se dira. Leka go nna fa fatshe le mosha wa gago mme lo tlotle ka yone gape. Mme gape, a go na le mongwe yo mosha wa gago a mo tshepang yo a ka tlang go kopanela le lona mo motlotlong?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Go otlhaya ka tsela e e siameng go thusa basha ba gago gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Fa mosha wa gago a ithuta go rarabolola mathata, o tla kgona go dirisa bokgoni joo botshelo jwa gagwe jotlhe. Ruri ke mpho!", + "type": "data_list", + "note": "" + }, + { + "SourceText": "My Tips", + "text": "Dintlha Tsa me", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**My Tips** in the @global.parent_centre", + "text": "**Dintlha tsa me**go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Essential Tools", + "text": "Didiriswa Tsa Botlhokwa", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Essential Tools** in the @global.parent_centre", + "text": "**Didiriswa tsa botlhokwa**go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." + }, + { + "SourceText": "Customise @global.parent_app", + "text": "Itsenyetse @global.parent_app", + "type": "data_list", + "note": "The string @global.parent_app should not be translated." + }, + { + "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", + "text": "**Tshwanedisa @global.parent_app** mo go @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + }, + { + "SourceText": "Customise Again", + "text": "Itsenyetse Gape", + "type": "data_list", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Go nna le nako e e oketsegileng ya go dirisa founo morago ga dijo tsa maitseboa (metsotso e le 30)", - "type": "global", - "note": "" + "SourceText": "**Customise Again** in the @global.parent_centre", + "text": "**Tshwanedisa gape** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Go bogela mmogo lenaane la basha mo T.V", - "type": "global", + "SourceText": "Relax & Activities", + "text": "Go iketla & Ditiro", + "type": "data_list", "note": "" }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Go ipha nako mmogo lo tlotla ka Sontaga (metsotso e le 30)", - "type": "global", - "note": "" + "SourceText": "under **Relax & Activities** in the @global.parent_centre", + "text": "fa tlase ga ** Go Iketla le Ditirwana** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Hemela kwa teng mme o kgwe mowa ka mo go lekaneng pele ga o araba", - "type": "global", + "SourceText": "Help", + "text": "Thuso", + "type": "data_list", "note": "" }, { - "SourceText": "Listen to your teen", - "text": "Reetsa mosha wa gago", - "type": "global", - "note": "" + "SourceText": "**Help** in the @global.parent_centre", + "text": "**Thuso** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Praise your teen for sharing", - "text": "Akgola mosha wa gago ka gonne a ile a abela ba bangwe", - "type": "global", + "SourceText": "Technical Support", + "text": "Tshegetso ya Botegeniki", + "type": "data_list", "note": "" }, { - "SourceText": "Use problem solving skills", - "text": "Dirisa mekgwa ya go rarabolola mathata", - "type": "global", - "note": "" + "SourceText": "**Technical Support** in the @global.parent_centre", + "text": "**Tshegetso e e thekinikhale** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Work out where you can get help", - "text": "Dira dithulaganyo tsa gore o ka bona kae thuso", - "type": "global", - "note": "" + "SourceText": "Coping with @global.covid", + "text": "Go mekamekana le @global.covid", + "type": "data_list", + "note": "The string @global.covid should not be translated." }, { - "SourceText": "Welcome to @global.parent_app", - "text": "O amogetswe mo @global.parent_app", - "type": "tour", - "note": "The string @global.parent_app should not be translated." + "SourceText": "**Coping with @global.covid** in the @global.parent_centre", + "text": "**Go mekamekana le @global.covid** in the @global.parent_centre", + "type": "data_list", + "note": "The following strings should not be translated:\n@global.covid**\n@global.parent_centre" }, { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  O amogetswe mo @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  O tshwanelwa ke go ikutlwa sentle, le go nna le dikamano tse di itumedisang mo lelapeng.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app e tla thusa wena le lelapa la gago ka ditsela tse tharo:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" + "SourceText": "Coping with grief", + "text": "Go mekamekana le kutlobotlhoko", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Konopo eno e kgolo e go isa ko @global.weekly_workshops ya gago

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Gangwe ka beke go tla nna le workshop e ntšha - mme nako nngwe le nngwe fa e tsena, e tla bo e bua ka mokgwa o o farologaneng wa go godisa bana. E tobetse mme o simolole workshop ya gago ya ntlha!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "**Coping with grief** in the @global.parent_centre", + "text": "**Go mekamekana le kutlobotlhoko** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Konopo eno e e kgolokwe e tlhagelela fa go na le @global.weekly_workshop e ntšha e o tlhokang go e dira.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Message Archive", + "text": "Akhaefe ya Molaetsa", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo eno e kgolo gore o kgone go ya kwa @global.parent_points mo sekhirining sa gago.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Leka go bona gore ke eng se o kgonneng go se dira mo go itlhokomeleng le go nna motsadi.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona gore o atlega go le kana kang.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ikutlwe o le motlotlo ka se o kgonang go se fitlhelela letsatsi le letsatsi!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." + "SourceText": "**Message Archive** in the @global.parent_centre", + "text": "***Bobeelo ba melaetsa*** go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ga go re sepe gore o simolola kae, lebaka la go bo o le fano le bontsha gore o a kgathala.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Support Contacts", + "text": "Batho Ba ba Ka go Thusang", + "type": "data_list", "note": "" }, { - "SourceText": "Go to the @global.weekly_workshops", - "text": "Ya kwa @global.weekly_workshops", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "**Support Contacts** in the @global.parent_centre", + "text": "***Bagolaganyi ba tshegetso***go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button on the home screen to go to the @global.weekly_workshops

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo e e mo sekhirining gore o ye kwa @global.weekly_workshops

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Evidence Base", + "text": "Motheo wa Bosupi", + "type": "data_list", + "note": "" }, { - "SourceText": "Go to the @global.weekly_workshop_options", - "text": "Ya kwa @global.weekly_workshop_options", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "**Evidence Base** in the @global.parent_centre", + "text": "**Bopaki** mo go @global.parent_centre", + "type": "data_list", + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "

                                                                                                                                                                                  Press this button to go to the @global.weekly_workshop_options

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa konopo eno gore o ye kwa @global.weekly_workshop_options

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Quick pause", + "text": "Go ema o se kae", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Use the @global.weekly_workshop_options to change your workshop settings.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Dirisa @global.weekly_workshop_options go fetola diseting tsa workshop ya gago.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop_options should not be translated." + "SourceText": "Power of three", + "text": "Matla a tharo", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  You can change your name here.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  O ka fetola leina la gago fano.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "One thing today", + "text": "Selo se le nosi gompieno", + "type": "data_list", "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This shows the day of the week that your new @global.weekly_workshop becomes available.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  If you want to change it, just press it.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  E bontsha letsatsi la beke le @global.weekly_workshop ya gago e ntšha e tsenang.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Fa o batla go e fetola, e tobetse.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "Breathe to three", + "text": "Kgwa mowa go fitlha gararo", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  This shows the @global.weekly_workshop that you're currently on.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  E bontsha @global.weekly_workshop e o leng mo go yone.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." + "SourceText": "In and out", + "text": "Mo teng le kwa ntle", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  You can change here whether you want to do your @global.weekly_workshops as a group or by yourself.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  O ka fetola fano fa o batla go dira @global.weekly_workshops lo le setlhopha kgotsa o le nosi.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." + "SourceText": "Think about today", + "text": "Akanya ka gompieno", + "type": "data_list", + "note": "" }, { - "SourceText": "

                                                                                                                                                                                  Tap here to change your group name.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Tobetsa fano go fetola leina la setlhopha sa lona.

                                                                                                                                                                                  ", - "type": "tour", + "SourceText": "Pause to respond", + "text": "Kgwa mowa o bo o araba", + "type": "data_list", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "A o setse o iphile nako le mosha wa gago?", + "SourceText": "Small things", + "text": "Dilo tse dinnye", "type": "data_list", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "A o setse o buile le mosha wa gago ka go tekanyetsokabo ya lelapa la gago?", + "SourceText": "Body scan", + "text": "Go tlhatlhoba mmele", "type": "data_list", "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", + "SourceText": "Feel the ground", + "text": "Utlwa tsela e o gatang ka yone", "type": "data_list", "note": "" }, { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Re a go amogela mo ParentApp. Tobetsa fano gore o simolole go e dirisa!", + "SourceText": "Counting sounds", + "text": "Go bala medumo", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Ke solofela gore lo SIAME. Go nna motsadi ga go motlhofo, mme gone, ga go ise go nne thari gore o leke gape go thusa mosha wa gago. Workshop ya gago ya ntlha ya batsadi e setse e le teng! Tobetsa fano gore o simolole go dirisa ParentApp!", + "SourceText": "Feel your feeling", + "text": "Utlwa gore o ikutlwa jang", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go rarabolola matshwenyego a go nna motsadi.", + "SourceText": "Your song", + "text": "Pina ya gago", "type": "data_list", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Dumelang gape! Ga go thari gore o ka dirisa ParentApp gore o bone thuso e e tshwanetseng maemo a gago o le motsadi. Goreng o sa leke go e dirisa fa o le mo tseleng go ya tirong kgotsa fa o apeile? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno ya rona e ba thusitse.", + "SourceText": "Ground & gratitude", + "text": "Lefatshe & go leboga", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go lepalepana le boitshwaro jwa mosha wa gago.", + "SourceText": "Notice how you feel", + "text": "Lemoga kafa o ikutlwang ka gone", "type": "data_list", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Dumela! A o SIAME? Go bonala o ise o bule ParentApp. Goreng o sa leke go e dirisa? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno e ba thusitse. Re ikemiseditse go tswelela go go thusa.", + "SourceText": "Pause power", + "text": "Maatla a go ema go se kae", "type": "data_list", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "O seka wa itetla go fetwa ke tshedimosetso ya botlhokwa e e mo ParentApp! E na le tshedimosetso e ntsi tota. Re ikemiseditse go tswelela re go thusa.", + "SourceText": "Praise yourself", + "text": "Ipake/Ikakgole", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go thusa mosha wa gago gore a kgone go atlega mo botshelong.", + "SourceText": "Taking care of yourself", + "text": "Itlhokomele", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa ParentApp go go thusa go nna tsala ya mosha wa gago gape!", + "SourceText": "Take a pause", + "text": "Ema go se kae", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Dumela motsadi o siameng, gopola go itlhokomela le wena - go tla thusa wena le ba lelapa la gago! Bona tshedimosetso le tse dintsi mo go ParentApp.", + "SourceText": "Physical activity", + "text": "Go dirisa matla", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Dumela motsadi o siameng! Gopola, o ka bona tshedimosetso e ntsi e thusang mo go ParentApp.", + "SourceText": "List of things", + "text": "Lenaane la dilo", "type": "data_list", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Molaetsa o mosha go tswa go PLH", + "SourceText": "Connect", + "text": "Ikamanye", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Dumela motsadi o siameng! ParentApp e fano go go tshegetsa. E tlhole jaanong!", + "SourceText": "Prevent anger", + "text": "Thibela go galefa", "type": "data_list", "note": "" }, { - "SourceText": "Start", - "text": "Simolola", + "SourceText": "Angry? Take a break", + "text": "O galefile? Ikhutse go se kae", "type": "data_list", "note": "" }, { - "SourceText": "Continue", - "text": "Tswelela", + "SourceText": "It is hard to find time to have fun with your teenager.", + "text": "Go thata go bona nako ya go itumela le mosha wa gago.", "type": "data_list", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Go Amogelwa le go Itlhokomela", + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Mo go tshwaregeng ka botshelo jwa rona go boima go tlhoma mogopolo mo dilong tse di siameng.", "type": "data_list", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "Workshop ya **Go amogelwa le go itlhokomela**", + "SourceText": "How many days in the past week have you praised your teen?", + "text": "O akgotse mosha wa gago ga kae mo bekeng e e fetileng?", "type": "data_list", "note": "" }, { - "SourceText": "Self-Care", - "text": "Go itlhokomela", + "SourceText": "This is a very stressful time for families.", + "text": "Eno ke nako e e tshwenyang mo maikutlong mo malapeng.", "type": "data_list", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Tsela ya go itlhokomela", + "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", + "text": "Ke malatsi a le kae a o neng o ikutlwa o tshwenyegile mo maikutlong jaaka motsadi/motlhokomedi mo bekeng e e fetileng?", "type": "data_list", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Go Ipha Nako Mmogo", + "SourceText": "Sometimes our children make us really upset.", + "text": "Ka dinako tse dingwe bana ba rona ba dira gore re tenege thata.", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "Workshop ya **Go ipha nako mmogo**", + "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", + "text": "Mo bekeng e e fetileng o omantse kgotsa o goile mosha wa gago malatsi a le kae?", "type": "data_list", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Tsela ya go ipha nako lo le mmogo", + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Ke malatsi a le kae mo kgweding (malatsi a 30) e e fetileng mo o o neng o felelwa ke madi a go duela dijo?", "type": "data_list", "note": "" }, { - "SourceText": "Praise", - "text": "Baka/Akgola", + "SourceText": "It is so stressful when children misbehave.", + "text": "Go tshwenya mo maikutlong tota fa bana ba sa itshware sentle.", "type": "data_list", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "Workshop ya **Go baka/akgola**", + "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", + "text": "Ke matsatsi a makae mo bekeng e e fitileng a o kileng wa kgalema bana ba gago ka go ba betsa, go ba kgwathisa kgotsa go ba betsa ka seatla kgotsa sediriswa, thupa kgotsa lepanta?", "type": "data_list", "note": "" }, { - "SourceText": "How to praise", - "text": "Tsela ya go baka/akgola", + "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", + "text": "Go thata go tsamaisana le mosha wa gago fa ba ikemela.", "type": "data_list", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Ditaelo tse di siameng", + "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", + "text": "Ke malatsi a le kae mo bekeng e e fetileng mo o ileng wa itse se mosha wa gago a se dirang le gore o ne a na le mang?", "type": "data_list", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "Workshop ya **Ditaelo tse di siameng**", + "SourceText": "Days in the past week", + "text": "Malatsi mo bekeng e e fetileng", "type": "data_list", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Tsela ya go naya ditaelo tse di siameng", + "SourceText": "We all want to keep our children safe.", + "text": "Rotlhe re batla go boloka bana ba rona ba sireletsegile.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Days in the past month", + "text": "Malatsi mo kgweding e e fetileng", "type": "data_list", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Go laola go tshwenyega mo maikutlong", + "SourceText": "Welcome and Self-Care", + "text": "Go Amogelwa le go Itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "Workshop ya **Go laola go tshwenyega mo maikutlong**", + "SourceText": "**Welcome and Self-Care** workshop", + "text": "Workshop ya **Go amogelwa le go itlhokomela**", "type": "data_list", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Kafa o ka laolang go tshwenyega mo maikutlong", + "SourceText": "Self-Care", + "text": "Go itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Ditekanyetsokabo tsa lelapa", + "SourceText": "How to do self-care", + "text": "Tsela ya go itlhokomela", "type": "data_list", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "Workshop ya **Ditekanyetsokabo tsa lelapa**", + "SourceText": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "text": "Mo go nna jaaka motsadi, go batlile go sa kgonagale gore ke itirele nako ya me ke le mongwe. ke ne ke phela ke tlhokomela batho ba bangwe. Ka @global.parent_app, ke lemogile gore go botlhokwa jaang gore ke itlhokomele. E thusa nna le ba lelapa!\n\nGo itirela motsotswana go nthusa go hema mme ke lemoge gore ke ikutlwa jaang. Le metsotso e le metlhano ya go nwa tee e dira pharologanyo e kgolo. Jaanong ke kgona go mekamekana le mathata a me bokaone.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "How to budget & save", - "text": "Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi", + "SourceText": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now.", + "text": "Rre wa me o ne a phela a tshwaregile. O ne a boa tirong mme a re omanye fa re mo botsisa dipotso.\n\n@global.parent_app e re thusitse thata.ga re sa lwa. Jaanong, fa rre a fitlha gae, o simolola ka go dula a le nosi metsotso e le 5 mme morago re dira dirwana ya go itapolosa go tswa go @global.parent_app mmogo, gore botlhe re hemele teng mme re repe. Morago re kgona go bua gore re tlhotse jaang,ka sengwe le sengwe se se bosula kgotsa molemo se se diragetseng. Rotlhe re itumetse thata jaanong.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Rules", - "text": "Melao", + "SourceText": "One-on-One Time", + "text": "Go Ipha Nako Mmogo", "type": "data_list", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "Workshop ya **Melao**", + "SourceText": "**One-on-One Time** workshop", + "text": "Workshop ya **Go ipha nako mmogo**", "type": "data_list", "note": "" }, { - "SourceText": "How to create rules", - "text": "Kafa o ka bayang melao ka teng", + "SourceText": "How to spend one-on-one time", + "text": "Tsela ya go ipha nako lo le mmogo", "type": "data_list", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Ditlamorago o Ritibetse", + "SourceText": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "text": "Fa ke simolola go ultwa gore ke tshwanetse go nna le nako ya motho-ka-mongwe le mosha wa me, go ne go le thata. ke ne ke sa itse gore ke e dire leng mme ke bue ke reng. Ke ne ke sa batle go senya mosha wa me gore a nagane gore re tshwanetse go dira sengwe le sengwe mmogo.\n\nFela ke ne ke batla go aga botsalano le mosha wa me mme ke ne ke batla a tlwaele go bua le nna ka dilo tse mo tshwenyang. Ke ka moo re lekileng nako ya motho-ka-mongwe.\n\nLantha, go ne go sa tlwaelega, mme ga tswa go le monate. Jaanong re bogela mananeo a TV mmogo ebe re tlotle ka ona. Re bua le ka tsela e morwa wa me a fetogelang mo dingwageng tsa bosha, le ka makgarebe le dilo tse di ntseng jalo!", "type": "data_list", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "Workshop ya **Ditlamorago o Ritibetse**", + "SourceText": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now.", + "text": "Fa mme wa me a nkopa go fetsa nako le nna, ke naganne gore \" Gonwe go na le sengwe se se phoso, kgotsa ga a itekanela\". Mme o rile \" Nnyaa, ke batla fela go fetsa nako le wena.\"Ke ne ke belaela mme ka dumela.\n\nO ne a mpotsisa gore ke rata go dira eng. Go ne sa tlwaelega mme ke ne ke sa phuthologa, ka gore ga ise leseng a fetse nako le nna fela.\n\nFa ntse a leka re mme re feletsa re fetsa nako mmogo, go ne go le monate tota. O ne a abelana ka kgolo ya gagwe le nna, dilo tse ke iseng ke di utlwe. Seo se thusitse gore ke kgone go abelana ka seo se diragalng mo botshelong ba me. Ebile re bua ka makau le mathata a ke kopanang le ona. Ke a itse gore nka bua le mme wa me jaanong.", "type": "data_list", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo", + "SourceText": "Praise", + "text": "Baka/Akgola", "type": "data_list", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Go Rarabolola Mathata", + "SourceText": "**Praise** workshop", + "text": "Workshop ya **Go baka/akgola**", "type": "data_list", "note": "" }, { - "SourceText": "**Problem Solving** workshop", - "text": "Workshop ya **Go Rarabolola Mathata**", + "SourceText": "How to praise", + "text": "Tsela ya go baka/akgola", "type": "data_list", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Kafa o ka rarabololang mathata ka teng", + "SourceText": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "text": "Fa re ithuta ka selo se sa go tlotlomatsa, ke naganne gore\"Gaise re tlotlomalediwe dilo re le basha, jaanong goreng re tshwanetse go simolola jaanong?\"Mme ke nnile le kgatlhego fa ke sene ke ithuta gore melemo ya go tlotlomatsa e ka nna eng.\n\nMorago fela ga tirelothuto ya beke, ke lemogile mosha wa ka a dira seo a tlwaetseng go se dira ka letsatsi: Go tlhatswa dijana. Ka bo ke re\"Ke a leboga fa o tlhatswitse dijana, mosetsana wa me, go a intumedisa gore o a thusa\". Mosha wa me o ne a nyeba ebe a nkatlarela, selo se a senkeng a se dira.\n\nKgang e ya go tlotlomatsa e boima. Ke sentse ke lebala kgotsa ke tlotlomatsa ka nako e le nngwe le go nyenyefatsa. Mme go tlotlomatsa go dira pharologanyo. Ke ne ke sa nagane gore go tlotlomatsa fela go ka dira pharologanyo e kana mo mothong!", "type": "data_list", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Pabalesego ya Basha", + "SourceText": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy.", + "text": "Ke ne ke anaanela gore mme wa me o ithutile go tlotlomatsa.\n\nMme wa me o ne a phela a lemoga fa ke dirile phoso. O ne a nkomanya mme a nkitaya.\n\nIrile fa mme wa me a fetsa go dira tirelothuto, o ne a ntlotlomaletsa dilo di le dinnye. Lantlha ke ne ke nagana gore\"Go diragala eng?\"mme go ne gwa tswela pele. Ke ne ke e rata jaanong ka tswela pele ke dira dilo tse dintle tse ke nagang gore o tla di rata.\n\nGo utlwalega go le monate gore mme wa me o bona dilo tse dintle tse ke di dirang, eseng tse di bosula fela.\n\nKe bile ka mmolelela gangwe. Mo magareng a @data.workshop.w_1on1.title, Ke rile\"Kea leboga, mme, gore o bue sengwe se sentle fa ke dira dilo sentle, eseng fela fa ke dira diphoso\". Seno se re itumedisitse thata.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.title, should not be translated." }, { - "SourceText": "**Teen Safety** workshop", - "text": "Workshop ya **Pabalesego ya Basha**", + "SourceText": "Positive Instructions", + "text": "Ditaelo tse di siameng", "type": "data_list", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Se o ka se dirang go boloka mosha wa gago a sireletsegile", + "SourceText": "**Positive Instructions** workshop", + "text": "Workshop ya **Ditaelo tse di siameng**", "type": "data_list", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Go lepalepana le Mathata a a masisi", + "SourceText": "How to give positive instructions", + "text": "Tsela ya go naya ditaelo tse di siameng", "type": "data_list", "note": "" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "Workshop ya **Go Lepalepana le Mathata a a Masisi**", + "SourceText": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "text": "Pele, Ke ne ke godisa basha ba me ka tsela e ke godileng ka yona: Ke ne ke ba raya ke re\" Le seke la dira seno, le seke la dira jalo.\" Re ne re lwa thata, fela dilo di fetogile tota fa ke sene ke ithuta ka go neelana ka melao e e molemo.\n\nJaanong ke tlhomile mogopolo mo maitshwarong a ke batlang go a bona, le go neelana ka melao e e bonolo e e tlhaloganyegang go basha ba me. Go tsere nako go ithuta gore\"Ke kopa o dire jaana\" go na le \"O seke wa dira jaana.\"\n\nBasha ba me mmogo le monna wa me ba mpolelela gore ba rata tsela e ya go dira dilo, ka go re jaanong ba itse se ba tlhokang go se dira. Mosha wa me o kile a re\"Ke rata mme o montšha ona,\"mme le maemo a kgatelelo ya me ya maikutlo a fokotsegile thata.", "type": "data_list", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Kafa o ka lepalepanang ka teng le mathata a a masisi", + "SourceText": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house.", + "text": "Lantlha, ke ne ke sa kgathalele gore mme wa me o dira @global.parent_app. Mme fela ka simolola go bona mme wa me a fetola tsela e a buang le rona ka yona. \n\nTsatsi lengwe, fa ke ne ke tswa le ditsala tsa me, O rile ke be ke le gae ka 6pm. Ka re fela\"Hmmm gosiame,\" ka gore o ne a senke a neelana ka ditaelo tse di tlhaloganyegang gore o batla eng - O ne a sa bue sepe mme morago a nkomanye fa ke buile gae bosigo.\n\nFa ke fitlha gae ka 5pm, mme wa me o ne a ntlamarela mme a re \"Ke a leboga fa o nnile mo nakong.\" Go ne go gakgamatsa, mme ke go ratile.\n\nFa e sele nako eo e feta, re na le puisano e e tlhaloganyegang fa lapeng.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Celebration and Next Steps", - "text": "Go Keteka le Dikgato Tse di Latelang", + "SourceText": "Managing Stress", + "text": "Go laola go tshwenyega mo maikutlong", "type": "data_list", "note": "" }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "Workshop ya **Go Keteka le Dikgato Tse di Latelang**", + "SourceText": "**Managing Stress** workshop", + "text": "Workshop ya **Go laola go tshwenyega mo maikutlong**", "type": "data_list", "note": "" }, { - "SourceText": "How to support each other", - "text": "Ka fa lo ka tshegetsanang ka teng", + "SourceText": "How to manage stress", + "text": "Kafa o ka laolang go tshwenyega mo maikutlong", "type": "data_list", "note": "" }, { - "SourceText": "Quick pause", - "text": "Go ema o se kae", + "SourceText": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "text": "Botshelo bo boima ka nako dingwe. Pele ke golagana le @global.parent_app, ke ne ke selekega fela ka nako tsotlhe. Ke ne ke ntshetsa kgalefo ya me mo go botlhe kwa gae, eseng fela basha ba me mme le monna wa me. Ba ne ba tshaba fa ke fitlha gae, ka gore ba ne ba itse gore ke tlile go simolola go ba rasetsa.\n\nGo ithuta go emisa mme ke heme go ne go le boima kwa tshimologong, fela nako nngwe le nngwe fa ke e leka, e nthusitse go ritibala. Jaanong basha ba me ga ba sa tshaba fa ke fitlha gae, mme ebile ba reetsa botoka go na le fa ke ne ke ba omanya!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Power of three", - "text": "Matla a tharo", + "SourceText": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person.", + "text": "Nako nngwe le nngwe fa ke dira phoso, rre wa me o ne a nkgalefela mme a mpetse. O ne a sa nkutlwelele, mme ke ne ke mo galefela mmogo le batho botlhe.\n\nJaanong, fa a galefa, o simolola ka go hemela teng pele a araba. E dira botlhe ba ritibale go na le go baka ntwa e kgolo.\n\nE thusitse thata kwa gae le kwa sekolong, ka gonne le nna ga ke sa kgerisa batho botlhe le go fela pelo fela. Fa ke ikutlwa ke galefa mme ke gatelega maikutlo, ke hemela kwa teng jaaka rre a dira. Ke motho yo a fetogileng.", "type": "data_list", "note": "" }, { - "SourceText": "One thing today", - "text": "Selo se le nosi gompieno", + "SourceText": "Family Budgets", + "text": "Ditekanyetsokabo tsa lelapa", "type": "data_list", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Kgwa mowa go fitlha gararo", + "SourceText": "**Family Budgets** workshop", + "text": "Workshop ya **Ditekanyetsokabo tsa lelapa**", "type": "data_list", "note": "" }, { - "SourceText": "In and out", - "text": "Mo teng le kwa ntle", + "SourceText": "How to budget & save", + "text": "Kafa o ka dirang ka teng tekanyetsokabo le go boloka madi", "type": "data_list", "note": "" }, { - "SourceText": "Think about today", - "text": "Akanya ka gompieno", + "SourceText": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "text": "Go boloka le tekanyetsomadi di nthusitse ke le motsadi, mme e thusitse gape le mosha wa me gore a tlhaloganye gore madi a ya kae.\n\nBasha ba me ba ne ba kopa dilo di le dintsi mme ba ne ba sa tlhaloganye fa ke re \"ga ke na madi.\" Ba ne ba re \" fela o na le tiro!\"\n\nKe ne ka nna fa gatshe le bona mme ka ba bontsha dilo tsotlhe tse ke di duelang le gore ke sala ka bokae. Ba tlhaloganya jaanong ebile ba nnaya dikakanyo gore nka boloka jaang gore re kgone go fitlhela mekgele ya rona jaaka ditlhako tse dintšhwa, letsatsi la matsalo le mekgele e mogolo jaaka madi a sekolo. Go yo mogolo, ke butse akhaonto ya go boloka.", "type": "data_list", "note": "" }, { - "SourceText": "Pause to respond", - "text": "Kgwa mowa o bo o araba", + "SourceText": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now.", + "text": "Ke ne ke kopa mme wa me go nthekele diaparo tse di ntle nako tsotlhe. Nako tsotlhe, o ne a re \"Ga ke na madi,\" mme ke ne ke itse gore o bona madi gotswa go malome wa me. Ke ne ke sa tlhaloganye gore goreng a gana go nthekela diaparo. Ka nako enngwe ke ne ke nagana gore \"ga a nthate.\"\n\nMme tsatsi le lengwe, o ne mpitse gore ke dule fatshe le ene mme a mpotsisa gore\" Ke eng ditlhokego le dilo tse re di batlang fa lapeng la rona.\" Ka simolola go bala ditlhokego le dipatlo tsa me tsotlhe. Morago mme wa me o ne a nthusa go nagana ka ditlhokego tsa balelapa. Jaanong ka tlhaloganya gore madi a rona aya kae, kwa dilong tse re di tlhokang re le lelapa.\n\nGo tloga tsatsing leo, Ke a tlhaloganya gore nkase kope fela ka nako nngwe le nngwe. Jaanong, fa ke batla sengwe, ke emela mafelo a kgwedi fa re sekaseka tekanyetsomadi mmogo go bona gore aa e ka lekana. Re tlhaloganyana botoka gone jaanong.", "type": "data_list", "note": "" }, { - "SourceText": "Small things", - "text": "Dilo tse dinnye", + "SourceText": "Rules", + "text": "Melao", "type": "data_list", "note": "" }, { - "SourceText": "Body scan", - "text": "Go tlhatlhoba mmele", + "SourceText": "**Rules** workshop", + "text": "Workshop ya **Melao**", "type": "data_list", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Utlwa tsela e o gatang ka yone", + "SourceText": "How to create rules", + "text": "Kafa o ka bayang melao ka teng", "type": "data_list", "note": "" }, { - "SourceText": "Counting sounds", - "text": "Go bala medumo", + "SourceText": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "text": "Basha ba me ba ne ba phela ba nyamalela. Ke ne ke sa itse gore ba ile kae, mme ke ke tshwenyega ebile ke ba galefele. ke ne ke re\"e ke ntlo ya me, mme ebile eno ke melao ya me,fa le sa batle go e latela le ka tsamaya la ya go ipatlela bodula ba lona.\"\n\nFa re ithuta mo go @global.parent_app ka ga melao, ke ithutile gore go na le melao ya basha, bagolo, le batho botlhe. Fa re latela melao re le batsadi, basha ba rona ba tlile go latela sekao sa rona.\n\nKe ne ka tlhalosa matshwenyego a me mme ra dumellana gore: Rotlhe re latela melao mme ra laela gore re ya kae fa re tswa fa ntlong. Go tlhama melao botlhe go re thusitse thata, jaaka basha ba me ba sa tlhole ba mpona jaaka motsadi yo o lapisang o a dirang melao e e sa tlhokegeng.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Feel your feeling", - "text": "Utlwa gore o ikutlwa jang", + "SourceText": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then.", + "text": "Ke ne ke sa rate melao mme ke ne ke lebala melao thata.\n\nTsatsi le lengwe, ke ne ke tshameka le ditsala tsa me. Molao wa kwa gae ke gore re tshwanetse go bo re le ka fa gae ka 6pm, mme nna ke ne ke lebetse gape. Ka 6: 30 go ne go fifala gape ke ne ke santse ke le kwa ntle ke tshameka ka mogala wa letheka wa me. Ebe mosimane a tla, a phamola mogala wa letheka a tshaba.\n\nKe tlhalogantse gore melao e kgona go thusa gore re nne re bolokesegile, jaanong ke fetotse maitsholo a me mme ka simolola go fitlha gae ka 5pm go tloga letsatsi leno.", "type": "data_list", "note": "" }, { - "SourceText": "Your song", - "text": "Pina ya gago", + "SourceText": "Calm Consequences", + "text": "Ditlamorago o Ritibetse", "type": "data_list", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Lefatshe & go leboga", + "SourceText": "**Calm Consequences** workshop", + "text": "Workshop ya **Ditlamorago o Ritibetse**", "type": "data_list", "note": "" }, { - "SourceText": "Notice how you feel", - "text": "Lemoga kafa o ikutlwang ka gone", + "SourceText": "How to give calm consequences", + "text": "Kafa o ka nayang ka teng ditlamorago o ritibetse maikutlo", "type": "data_list", "note": "" }, { - "SourceText": "Pause power", - "text": "Maatla a go ema go se kae", + "SourceText": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "text": "Fa basha ba me ba dira senngwe go nkgalefisa, ke ne ke ba omanya mme ke ba otlhaya fela foo. Mme nako e e latelang ba e dirile gape! Ke ne ke sa tlhaloganye gore goreng ba sa nkutlwi le fa ntse ke ba omantse.\n\n@global.parent_app e nthusitse go tlhaloganya gore basha ba me ba ka nutlwelela thata fa ke ritibetse. Jaanong, fa sengwe se direga, ke tsaya nako go hemela kwa teng ebe ke re\"re tla bua ka seno mankgapele fa botlhe re ritibetse.\"\n\nRe felletsa re dumelana ka ditlamorago mmogo gone jaanong pele ga sengwe se sa tsamae sentle. Seno se re diretse metlholo - Ke bone phetogo e kgolo thata mo maitsholong a mosha wa me ka gonne jaanong ba tsentse seatla ebile ga ke sa na kgatelelo ya mailutlo.\n\nKe lakatsa gore nkabo ke itsitse seno kgale, fela ga go thari go simolola!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Taking care of yourself", - "text": "Itlhokomele", + "SourceText": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule.", + "text": "Mme le rre wa me ba ne ba nkotlhaya fa ba ne ba nkgalefetse. Ba ne ba nkomanya mme le nna ke ne ke feletsa ke galefa. Go le gantsi ke ne ke sa latele melao, ka gonne ba ne ba le bogale thata, ke ne ke sa tlhalogane se ba se buang, kgotsa, ke ne ke sa itshwenya ka go ba utlwelela, ka gonne rotlhe re ne re galefile.\n\nKa tsatsi le lengwe, ba ne ba ba mpotsisa: A re naganeng mmogo gore ditlamorago tsa go se boe gae ka nako e nne eng. Go ne go le monate go tlhagisa pono ya me - pele sengwe se direga se se re galefisang rotlhe. Re ritibitse botlhe ebile re dumelana pele. Go bonolo go amogela melao jaanong ka gonne ke a itsi gore ke e dumetse ebile ke itse ditlamorago fa ke sa o lalete molao.", "type": "data_list", "note": "" }, { - "SourceText": "Take a pause", - "text": "Ema go se kae", + "SourceText": "Problem Solving", + "text": "Go Rarabolola Mathata", "type": "data_list", "note": "" }, { - "SourceText": "Physical activity", - "text": "Go dirisa matla", + "SourceText": "**Problem Solving** workshop", + "text": "Workshop ya **Go Rarabolola Mathata**", "type": "data_list", "note": "" }, { - "SourceText": "List of things", - "text": "Lenaane la dilo", + "SourceText": "How to solve problems", + "text": "Kafa o ka rarabololang mathata ka teng", "type": "data_list", "note": "" }, { - "SourceText": "Connect", - "text": "Ikamanye", + "SourceText": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "text": "Ke ne ke se na botsalano jo bontle le moradi wa me. Ke ne ke phela ke mo omanya mme ebile o ne a gana go ya sekolong.\n\nFela fa ke sene ke simolola go fetsa nako ya motho-ka-mong le ene, ke lemogile gore ga a batle go ya sekolong ka gonne o ne a kgerisiwa kwa sekolong. Re ne ra nna fa fatshe ebe re dirisa dikgato tse 6 tsa go rarabolola mathata. Re tlhomolotse bothata, mme ra batla tharabololo mmogo.\"Nka dira eng jaaka motsadi gore o tsene sekolo mme o ikutlwe o bolokesegile?\"\n\nRe dumellane gore ke tlile go bua le morutabana go batla tsela ya go tswela pele. Re bone tharabololo mmogo, ebile re atumelane jaanong.", "type": "data_list", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Thibela go galefa", + "SourceText": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family.", + "text": "Fa rre wa me a ne a nkitsise kgato tsa go rarabolola mathata, e thusitse lelapa la mme e nthusitse le ka ditsala tsa me.\n\nKe boleletse ditsala tsa me ka ga dikgato, jaanong fa re nganga re nna fa fatshe mme rotlhe re tla ka ditharabololo. Re bo re lebelela masula le tseo tse dintle ka tharabololo nngwe le nngwe, mme re dumelana re re \"go giame a re leke ena.\"\n\nEbile ditsala tsa me di di dirisa kwa magaeng a bone, mme e thusa malapa a bone le bona!\n\nGo a itumedisa fa bangwe ba go reetsa ebile ba amogela dikakanyo tsa gago le fa o le monnye. Rotlhe re ka tlisa kutlwano mo malapeng le ditsala tsa rona.", "type": "data_list", "note": "" }, { - "SourceText": "Angry? Take a break", - "text": "O galefile? Ikhutse go se kae", + "SourceText": "Teen Safety", + "text": "Pabalesego ya Basha", "type": "data_list", "note": "" }, { - "SourceText": "Reflect on the positive", - "text": "Akanya ka dilo tse di siameng", + "SourceText": "**Teen Safety** workshop", + "text": "Workshop ya **Pabalesego ya Basha**", "type": "data_list", "note": "" }, { - "SourceText": "Check-in chat", - "text": "Tlhola motlotlo", + "SourceText": "How to keep your teen safe", + "text": "Se o ka se dirang go boloka mosha wa gago a sireletsegile", "type": "data_list", "note": "" }, { - "SourceText": "Dream Travel", - "text": "Loeto leo lo lorang go lo Tsaya", + "SourceText": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "text": "Ke ne ke lebogela go dira lenaneo la pabalesego le mosha wa me. Ke ne ke nagana gore ke itse mafela a a babalesegileng gore ke afe go mosha wa me le a a sa nnang jaalo. Fela re sena go dira lenaneo la pabalesego mmogo, ke ne ka lemoga gore mosetsana wa me o itse mafelo a le mantsi a ke neng ke sa lemoge.\n\nKe ne ke ke nagana gape gore o babalesegile kwa sekolong, fela ka tirwana eno ke lemogile gore o ne a kgerisiwa mme barutabana ba ne ba sa dire sepe ka yone.\n\nFa re ntse re bua, ke gone fa ke ne ke tlhaloganya mme ke nna le kitso go tswa go mosha wa me. Seo se nthusitse thata go sireletsa mosha wa me le go mo tshola a babalesegile.", "type": "data_list", "note": "" }, { - "SourceText": "Famous Party", - "text": "Moletlo o o Itsegeng", + "SourceText": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!", + "text": "Fa ditsala tsa me kgotsa nna re tsene mo mathateng, ke ne ke leka go e fitlhela mme wa me ka gonne o ne a tlile go nkgalefela mme o omanye.\n\nFa re ne thala mmepe wa mafela a pabalesego le a a sa babalesegang, ke ithutile go le gontsi - gape le gore goreng go le kotsi go abelana ka seepe sengwe le sengwe mo mafaratlhatlheng. Mme wa me o ne a mpolelela gore nka mmotsisa nako nngwe le nngwe fa go na le mathata gape o tshepisitse go se nkgalefele.\n\nO tshotse tshepiso ya gagwe, jaanong fa ke na le bothata kgotsa ke sa ikutlwe ke babalesegile ke a itse gore re ka bona tharabololo mmogo. Ke kgona go bua le mme wa ka dilo tse ke di dirang mo inthaneteng jaanong!", "type": "data_list", "note": "" }, { - "SourceText": "Two truths, one lie", - "text": "Go bua nnete gabedi, go bua maaka gangwe", + "SourceText": "Dealing with Crisis", + "text": "Go lepalepana le Mathata a a masisi", "type": "data_list", "note": "" }, { - "SourceText": "Time Machine", - "text": "Pusetso Nako Morago", + "SourceText": "**Dealing with Crisis** workshop", + "text": "Workshop ya **Go Lepalepana le Mathata a a Masisi**", "type": "data_list", "note": "" }, { - "SourceText": "Superpowers", - "text": "Matla a Masaitsiweng", + "SourceText": "How to deal with crisis", + "text": "Kafa o ka lepalepanang ka teng le mathata a a masisi", "type": "data_list", "note": "" }, { - "SourceText": "Just a friendly chat", - "text": "Motlotlo fela wa botsalano", + "SourceText": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "text": "Mosha wa me o ne a phela a galefila ka dinako tsotlhe. O ne a sa reetse ebile o ne a tsen mo dikgogakgoganong tse dikgolo tsatsi le letsatsi. Ka @global.parent_app, ke ne ka simolola go fetsa nako thata le mosha wa me le go nonotsha kamano ya rona.Tsatsi le lengwe o ne abelana le nna gore ke lekolo la segopa fela o batla go tswa mo go sona.\n\nRe dirile maano a nako-khutswane le nako-telele mmogo a gore re ka dira jaang jaalo. Botshelo ba rona bo lebega bo fetogile jaanong!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "The Interrupter", - "text": "Sekgoreletsi", + "SourceText": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore.", + "text": "Dingwana tse pedi tse di fitileng, ke ne ka betelelwa ke malome wa me o a neng a nna le rona fa jarateng. Ga ka bolelela mme wa me, ka gonne ke ne ke tshaba gore o tlile go mpetsa, go nkomanya, kgotsa gonwe go nkobela kwa ntle ga ntlo. Ke ne ke sena gope kwa nkayang kwa teng\n\nFa mme wa me a simolola ka @global.parent_app, o ne a simolola go fetsa nako e le ntsi le mmogo. Ke ne ke sentse ke tshaba, fela kwa bokhutlhong ke ne ka abelana le mme wa me. Mme wa me ga a omanya, mme o ne a reetsa ebile a mpolelela gore ga se phoso ya me. Re ne ya ya maphodiseng le bookelong mmogo. Ke lebogela gore ga ke tlhole ke rwele sephiri seno.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app, should not be translated." }, { - "SourceText": "Three options", - "text": "Dintlha di le tharo", + "SourceText": "Celebration and Next Steps", + "text": "Go Keteka le Dikgato Tse di Latelang", "type": "data_list", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "Ee, Nnyaa kgotsa Gongwe", + "SourceText": "**Celebration and Next Steps** workshop", + "text": "Workshop ya **Go Keteka le Dikgato Tse di Latelang**", "type": "data_list", "note": "" }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Motshameko wa go ikgakolola - \"Ka Lamatlhatso...\"", + "SourceText": "How to support each other", + "text": "Ka fa lo ka tshegetsanang ka teng", "type": "data_list", "note": "" }, { - "SourceText": "Make up a story", - "text": "Tla ka kgang", + "SourceText": "Start", + "text": "Simolola", "type": "data_list", "note": "" }, { - "SourceText": "Co-chef", - "text": "Moapei-mmogo", + "SourceText": "Continue", + "text": "Tswelela", "type": "data_list", "note": "" }, { - "SourceText": "Dance moves", - "text": "Go bina", + "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Dumela motsadi o siameng, gopola go itlhokomela le wena - go tla thusa wena le ba lelapa la gago! Bona tshedimosetso le tse dintsi mo go @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Mirror", - "text": "Seipone", + "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.", + "text": "Dumela motsadi o siameng! Gopola, o ka bona tshedimosetso e ntsi e thusang mo go @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "What's new?", - "text": "Ke eng se sesha?", + "SourceText": "Hi great parent! @global.parent_app is here to support you. Check it out now!", + "text": "Dumela motsadi o siameng! @global.parent_app e fano go go tshegetsa. E tlhole jaanong!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Get active!", - "text": "Nna matlhagatlhaga!", + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Re a go amogela mo @global.parent_app. Tobetsa fano gore o simolole go e dirisa!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Name that tune", - "text": "Bolela pina eno", + "SourceText": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", + "text": "Dumela! A o SIAME? Go bonala o ise o bule @global.parent_app. Goreng o sa leke go e dirisa? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno e ba thusitse. Re ikemiseditse go tswelela re go thusa.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Pass the snap", - "text": "Thwantsha menwana", + "SourceText": "@global.parent_app misses you! There is a lot to explore. We are still here to support you.", + "text": "O seka wa itetla go fetwa ke tshedimosetso ya botlhokwa e e mo @global.parent_app! E na le tshedimosetso e ntsi tota. Re ikemiseditse go tswelela re go thusa.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Family workout", - "text": "Se lelapa le ka se dirang", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.", + "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go thusa mosha wa gago gore a kgone go atlega mo botshelong.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Make housework fun", - "text": "Dira gore tiro ya mo lapeng e nne e e itumedisang", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!", + "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go nna tsala ya mosha wa gago gape!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Ditori tsa fa gae ga di monate... kgotsa di monate? O ka di fetolela mo motshamekong!", + "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!", + "text": "Ke solofela gore lo SIAME. Go nna motsadi ga go motlhofo, mme gone, ga go ise go nne thari gore o leke gape go thusa mosha wa gago. Workshop ya gago ya ntlha ya batsadi e setse e le teng! Tobetsa fano gore o simolole go dirisa @global.parent_app!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "What are you doing?", - "text": "O dira eng?", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.", + "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go rarabolola matshwenyego a go nna motsadi.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Fano ke motshameko o o monate o o ka o dirang le lelapa la gago!", + "SourceText": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", + "text": "Dumelang gape! Ga go thari gore o ka dirisa @global.parent_app gore o bone thuso e e tshwanetseng maemo a gago o le motsadi. Goreng o sa leke go e dirisa fa o le mo tseleng go ya tirong kgotsa fa o apeile? Batsadi ba le bantsi ba bontsha gore tshedimosetso eno ya rona e ba thusitse.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Crazy chicken", - "text": "Koko e e sa utlweng", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.", + "text": "Ke solofela gore lo SIAME. Re a itse gore ga go motlhofo go nna motsadi - dirisa @global.parent_app go go thusa go lepalepana le boitshwaro jwa mosha wa gago.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My Tips", - "text": "Dintlha Tsa me", + "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Dumela @fields.user_name. @data.workshop.w_1on1.in_text_title ya gago e go emetse.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "**My Tips** in the @global.parent_centre", - "text": "**Dintlha tsa me**go @global.parent_centre", + "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Dumela @fields.group_name. @data.workshop.w_1on1.in_text_title ya gago e go emetse.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Essential Tools", - "text": "Didiriswa Tsa Botlhokwa", + "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", + "text": "O tsentse matla a le mantsi mo go nneng motsadi yo o kaone. Wa ratiwa ebile wa kgatlhegelwa!", "type": "data_list", "note": "" }, { - "SourceText": "**Essential Tools** in the @global.parent_centre", - "text": "**Didiriswa tsa botlhokwa**go @global.parent_centre", + "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", + "text": "Re lebogela maikemisetso a gago go botsadi bagago.\n\n@data.workshop.w_1on1.in_text_title ya gago e go letile!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "Customise @global.parent_app", - "text": "Itsenyetse @global.parent_app", + "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", + "text": "Go fetsa nako le mosha wa gago go thusa go aga tshepo.\n\nTswelela pele ka @global.parent_app leeto la gago go bona pholo tse dintle.", "type": "data_list", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "**Customise @global.parent_app** in the @global.parent_centre", - "text": "**Tshwanedisa @global.parent_app** mo go @global.parent_centre", + "SourceText": "Have you spent time with your teen already?", + "text": "A o setse o iphile nako le mosha wa gago?", "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app**\n@global.parent_centre" + "note": "" }, { - "SourceText": "Customise Again", - "text": "Itsenyetse Gape", + "SourceText": "Well done for completing the @data.workshop.w_1on1.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "O dirile sentle ka go tlatsa @data.workshop.w_1on1.in_text_title. Kamoso, o ka tsenela tirelogae e ntšhwa go go thusa go itapolosa, natefelwa gape o ithute bokgoni jo bo ntšhwa!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "Relax & Activities", - "text": "Go iketla & Ditiro", + "SourceText": "Remember to finish the @data.workshop.w_1on1.in_text_title. You will get valuable information within minutes! \n\nWell done for trying to be a better parent.", + "text": "Gopola go fetsa @data.workshop.w_1on1.in_text_title. o tla bona kitsiso ya boleng ka metsotso fela!\n\nTiro e ntle ka go leka go nna motsadi yo o botoka.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.in_text_title. should not be translated." }, { - "SourceText": "under **Relax & Activities** in the @global.parent_centre", - "text": "fa tlase ga ** Go Iketla le Ditirwana** mo go @global.parent_centre", + "SourceText": "Hi @fields.user_name! Today we are celebrating two @global.parent_app months! \nThis week you'll learn to how help your teen follow household rules.", + "text": "Dumela @fields.user_name! Gompieno re keteka kgwedi tse pedi tsa @global.parent_app! \n\nBeke eno o tlile go ithuta ka go thusa mosha wa gago go latela melao ya fa gae.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Help", - "text": "Thuso", + "SourceText": "Hi @fields.group_name! Today we are celebrating two @global.parent_app months! \n\nThis week you'll learn to help your teen follow household rules.", + "text": "Dumela @fields.group_name!! Gompieno re keteka kgwedi tse pedi tsa @global.parent_app! \n\nBeke eno o tlile go ithuta ka go thusa mosha wa gago go latela melao ya fa gae.", + "type": "data_list", + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" + }, + { + "SourceText": "Think about every time you have made your teen smile and all the care you have given them. \n\nYou should be so proud - this is a hard time to be a parent.", + "text": "Nagana ka makgatlho otlhe a o kile wa dira mosha wa gago a nyebe le tlhokomelo yotlhe e o mo neileng yone.\n\nO tshwanetse go nna motlotlo tota - Eno ke nako e e thata ya go nna motsadi.", "type": "data_list", "note": "" }, { - "SourceText": "**Help** in the @global.parent_centre", - "text": "**Thuso** mo go @global.parent_centre", + "SourceText": "Well done - you’ve gained 6 parenting tools already! Do the next workshop to get more!", + "text": "Tiro e ntle - O setse o okeditse didiriswa tsa botsadi ka 6! Dira tirelothuto e e latelang go bona di le dintsi!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Technical Support", - "text": "Tshegetso ya Botegeniki", + "SourceText": "Complete the workshop and talk with your teen about a positive and a negative consequence of a behaviour.", + "text": "Feleletsa tirelothuto ebe o bua le mosha wa gago ka ditlamorago tse di siameng le tse di sa siamang tsa maitsholo.", "type": "data_list", "note": "" }, { - "SourceText": "**Technical Support** in the @global.parent_centre", - "text": "**Tshegetso e e thekinikhale** mo go @global.parent_centre", + "SourceText": "Have you thought of a positive and a negative consequence of a behaviour with your teen yet?", + "text": "A o setse o naganne ka ditlamorago tse di siameng le tse di sa siamang tsa maitsholo le mosha wa gago?", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "**Coping with grief** in the @global.parent_centre", - "text": "**Go mekamekana le kutlobotlhoko** mo go @global.parent_centre", + "SourceText": "Well done for completing the @data.workshop.w_consequence.in_text_title. Access a new workshop tomorrow to help you enjoy and learn useful skills!", + "text": "Tiro e ntle go tlatsa @data.workshop.w_consequence.in_text_title. Tsena go tirelothuto e ntšhwa kamoso go go thusa go natefelwa le go ithuta bokgoni jo bo thusang!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_consequence.in_text_title. should not be translated." }, { - "SourceText": "Message Archive", - "text": "Akhaefe ya Molaetsa", + "SourceText": "Calm consequences help your teen follow rules. If you haven't finished the @data.workshop.w_consequence.in_text_title, give it a go!\n\nWell done for showing so much commitment.", + "text": "Ditlamorago tse di ritibetseng di thusa mosha wa gago go latela melao. Fa isi o fetse @data.workshop.w_consequence.in_text_title, e leke!\n\nTiro e ntle go bontsha maikemisetso tota.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_consequence.in_text_title, should not be translated." }, { - "SourceText": "**Message Archive** in the @global.parent_centre", - "text": "***Bobeelo ba melaetsa*** go @global.parent_centre", + "SourceText": "Hi @fields.user_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.user_name! Dipharagobeng di diragalela botlhe - Go nna o itukisitse go thusa tota.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Support Contacts", - "text": "Batho Ba ba Ka go Thusang", + "SourceText": "Hi @fields.group_name! Crises happen to anyone - being ready helps a lot. \n\nThis workshop will show you how.", + "text": "Dumela @fields.group_name! Dipharagobeng di diragalela botlhe - Go nna o itukisitse go thusa tota.\n\nTirelothuto eno e tlile go go bontsha gore jaang.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "**Support Contacts** in the @global.parent_centre", - "text": "***Bagolaganyi ba tshegetso***go @global.parent_centre", + "SourceText": "Be proud, you are a committed parent. This is a big achievement!", + "text": "Nna motlotlo, o motsadi yo a ikemiseditseng. Seno ke phitlhelelo e kgolo!", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Evidence Base", - "text": "Motheo wa Bosupi", + "SourceText": "Crises may happen, and we CAN be prepared!\n\nStart the next workshop to see how with your teen.", + "text": "Pharagobe e ka direga, mme re KA NNA re itukisitse!\n\nSimolola tirelothuto e e latelang go bona gore jaang le mosha wa gago.", "type": "data_list", "note": "" }, { - "SourceText": "**Evidence Base** in the @global.parent_centre", - "text": "**Bopaki** mo go @global.parent_centre", + "SourceText": "Great that you joined this parenting journey! \n\nComplete the @data.workshop.w_crisis.in_text_title to learn the best way to react when teens need us.", + "text": "Go gontle gore o tsenetse leeto leno la botsadi!\n\nTlatsa @data.workshop.w_crisis.in_text_title go ithuta ka tsela ya maleba ya go tsiboga fa basha ba rona ba re tlhoka.", "type": "data_list", - "note": "The string @global.parent_centre should not be translated." + "note": "The string @data.workshop.w_crisis.in_text_title should not be translated." }, { - "SourceText": "How to talk to my teen", - "text": "Go buisana le mosha wa me", + "SourceText": "Have you and your teen discussed what you would do in a crisis?", + "text": "Aa wena le mosha wa gago le kile la buisana ka gore le ka dira eng mo dipharagobeng?", "type": "data_list", "note": "" }, { - "SourceText": "Steps to deal with news", - "text": "Metlhala ya go mekamekana le dikgang", + "SourceText": "Well done for finishing the @data.workshop.w_crisis. Tomorrow, you can access the final workshop to reflect on your journey and plan what to do next!", + "text": "Tiro e ntle go fetsa @data.workshop.w_crisis. Kamoso, o ka tsena go tirelothuto ya bofelo akanya ka leeto la gago le go rulaganya se o tla se dira eng go latela!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_crisis. should not be translated." }, { - "SourceText": "How can I help my teen choose well?", - "text": "Nka thusa mosha waka jang go tlhopha sentle?", + "SourceText": "The final workshop unlocks tomorrow!\n\nFirst try to finish the @data.workshop.w_crisis.in_text_title. That way, you can complete your set of parenting skills and decide what to do next.", + "text": "Tirelothuto ya bofelo e notlologa kamoso!\n\nSa ntlha leka go fetsa @data.workshop.w_crisis.in_text_title. Ka tsela eo, O ka fetsa setlhopha sa gago sa bokgoni jwa botsadi mme o tseye tshwetso gore o tla dira eng go latela.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_crisis.in_text_title. should not be translated." }, { - "SourceText": "What influences teen decisions?", - "text": "Ke eng se se rotloetsang ditshwetso tsa basha?", + "SourceText": "Hi @fields.user_name, well done for starting week 4! \n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Dumela @fields.user_name, Tiro e ntle go simolola beke ya 4!\n\nBeke eno e thusa go oketsa ditshono tsa gago tsa go fitlhelela gore mosha wa gago a dire se o se kopang.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name, should not be translated." }, { - "SourceText": "How does my teen feel?", - "text": "Mosha wa me o ikutlwa jaang?", + "SourceText": "Hi @fields.group_name, well done for starting week 4!\n\nThis week helps increase your chances of getting your teen to do what you ask them.", + "text": "Dumela @fields.group_name, Tiro e ntle go simolola beke ya 4!\n\nBeke eno e thusa go oketsa ditshono tsa gago tsa go fitlhelela gore mosha wa gago a dire se o se kopang.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name, should not be translated." }, { - "SourceText": "Changing negative to positive", - "text": "Go fetolela se se sa siamang go se se siameng", + "SourceText": "Be kind to yourself. No parent is perfect. Using @global.parent_app shows you care!", + "text": "Nna pelonomi go wena.Ga go na motsadi yo a senang diphoso. Go dirisa @global.parent_app go bontsha gore o a kgathala!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Help yourself cope", - "text": "Ithuse go mekamekana le seemo", + "SourceText": "Teens don’t always listen. Look at this week's workshop to learn how positive instructions can help.", + "text": "Basha ga ba nne ba utlwelela. Lebelela tirelothuto ya beke eno go ithuta gore ditaelo tse di molemo di thusa jaang.", "type": "data_list", "note": "" }, { - "SourceText": "Help your teen cope", - "text": "Thusa mosha go mekamekana le seemo", + "SourceText": "Positive instructions improves behaviour.\n\nComplete the @data.workshop.w_instruct.in_text_title for ideas on how this can work in your family.", + "text": "Ditaelo tse di molemo di tokafatsa maitsholo.\n\nTlatsa @data.workshop.w_instruct.in_text_title go bona dikakanyo gore seno se ka dira jaang mo lapeng la gago.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Practical steps", - "text": "Metsamao e kgonegang", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title once – you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title gangwe - O dira kgatelopele e ntle.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "Relax", - "text": "Iketle", + "SourceText": "You’ve already marked the @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively times – you’re making great progress.", + "text": "O setse o tshwaile @global.parent_point @data.habit.instruct_positively.title @fields.parent_point_count_instruct_positively makgetlho - O dira kgatelopele e ntle.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@fields.parent_point_count_instruct_positively" }, { - "SourceText": "**Relax** @global.parent_point", - "text": "**Iketle** @global.parent_point", + "SourceText": "Congratulations, you completed the @data.workshop.w_instruct.in_text_title.\n\nTomorrow, a new workshop is ready for you. See a big difference by making small changes!", + "text": "Kakgolo, o tladitse @data.workshop.w_instruct.in_text_title.\n\nKamoso, tirelothuto e ntšhwa e go letile. Bona pharologanyo ka go dira diphetogo di le dinnye!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_instruct.in_text_title. should not be translated." }, { - "SourceText": "Doing a relaxation activity", - "text": "Go dira tirwana ya go iketla", + "SourceText": "Some parents use the app after their evening meal. Why not complete the @data.workshop.w_instruct.in_text_title when you have a few minutes?", + "text": "Batsa ba bangwe ba dirisa app morago ga dijo tsa bosigo. Gore o sa tlatse @data.workshop.w_instruct.in_text_title fa o na le metsotsonyana?", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_instruct.in_text_title should not be translated." }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Nako tsotlhe fa o iketla, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "SourceText": "Hi @fields.user_name! Amazing, this is your second month with @global.parent_app.\n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Dumela @fields.user_name! Kgakamalo, eno ke kgwedi ya gago ya bobedi le @global.parent_app.\n\nMalapa a le mantsi a sokodisiwa ke madi. Tirelothuto eno e tlile go go naya didiriswa go rulaganya ditlhokego tsa madi go go thusa mo tsamaong ya kgwedi.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app." }, { - "SourceText": "Treat yourself well", - "text": "Ineneketse", + "SourceText": "Hi @fields.group_name! Amazing, this is your second month with @global.parent_app. \n\nMost families struggle with money. This workshop will give you tools to plan your expenses to help you through the month.", + "text": "Dumela @fields.group_name! Kgakamalo, eno ke kgwedi ya gago ya bobedi le @global.parent_app.\n\nMalapa a le mantsi a sokodisiwa ke madi. Tirelothuto eno e tlile go go naya didiriswa go rulaganya ditlhokego tsa madi go go thusa mo tsamaong ya kgwedi.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app." }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "**Ineneketse** @global.parent_point", + "SourceText": "You are not alone. Parents around the world are going through the same struggles. \n\nYou are doing your best and we are proud of you!", + "text": "Ga o nosi. Batsadi lefatshe ka bophara ba mekamekane le dikgwetlho tse di tshwanang le tsa gago.\n\nO dira ka bojotlhe mme re motlotlo ka wena!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Doing something they like for themselves", - "text": "Go itirela sengwe se ba se ratang", + "SourceText": "Stressed about money? Does your teen ask for things you can’t afford? \n\nThis week deals with money and budgeting.", + "text": "A o gateletswe mo moweng ka ntlha ya madi? Aa mosha wa gago o kopa dilo tse o ka se di kgoneng?\n\nBeke eno e mekamekana le madi le tekanyetsomadi.", "type": "data_list", "note": "" }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Nako nngwe le nngwe fa o itshotse sentle, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "SourceText": "Create a family budget with your teen - it will prevent money arguments. \n\nComplete the @data.workshop.w_money.in_text_title to see how. It's easy - you'll see!", + "text": "Tlhama tekanyetsomadi le mosha wa gago - e tlile go thibela dikgogakgogano tsa madi.\n\nTlatsa @data.workshop.w_money.in_text_title go bona gore jaang. Go bonolo - o tla bona!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title should not be translated." }, { - "SourceText": "Praise yourself", - "text": "Ipake/Ikakgole", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "A o setse o buile le mosha wa gago ka ga tekanyetsokabo ya lelapa la gago?", "type": "data_list", "note": "" }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "**Ipake/Ikakgole** @global.parent_point", + "SourceText": "Great, you completed the @data.workshop.w_money.in_text_title! Tomorrow, access a new workshop to help you set family rules that work.", + "text": "Bontle, o tladitse @data.workshop.w_money.in_text_title! Kamoso, tsena go tirelothuto e ntšha go go thusa go tlhama melao ya fa gae e e dirang.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_money.in_text_title! should not be translated." }, { - "SourceText": "One-on-one time", - "text": "Go ipha nako mmogo", + "SourceText": "Many parents say budgeting brings peace. If you haven't finished the @data.workshop.w_money.in_text_title, give it a go!\n\nThank you for your committed parenting.", + "text": "Batsadi ba le bantsi ba re tekanyetsomadi e tlisa kagiso. Fa ise o fetse @data.workshop.w_money.in_text_title, e leke!\n\nRe leboga gore o na le maitlamo mo botsading.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_money.in_text_title, should not be translated." }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "**Go ipha nako mmogo** @global.parent_point", + "SourceText": "Hi @fields.user_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Dumela @fields.user_name! O simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntsha e go emetse!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Spending time with their teen", - "text": "Go fetsa nako le mosha wa bone", + "SourceText": "Hi @fields.group_name! You're starting your third @global.parent_app week. \n\nA new workshop is ready!", + "text": "Dumela @fields.user_name! O simolola beke ya gago ya boraro ya @global.parent_app.\n\nTirelothuto e ntsha e go emetse!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Nako tsotlhe fa o dira nako ya motho-ka-mong, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "SourceText": "Well done for using @global.parent_app! Remember, small things make a big difference.", + "text": "Tiro e ntle ka go dirisa @global.parent_app! Gopola, dilo di le dinnye di dira pharologanyo e kgolo.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @global.parent_app! should not be translated." }, { - "SourceText": "Praise your teen", - "text": "Baka/Akgola mosha wa gago", + "SourceText": "Thank you for investing in yourself and your family.Try the @data.workshop.w_praise.in_text_title to build a great parenting skill!", + "text": "Ra leboga gore o bo o tsenyeletsa nako mo go wena le ba lelapa la gago. Leka @data.workshop.w_praise.in_text_title go aga bokgoni ba botsadi bo bontle!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "**Baka/Akgola mosha wa gago** @global.parent_point", + "SourceText": "Praise makes all the difference. \n\nFinish the @data.workshop.w_praise.in_text_title to see how to use it in YOUR family.", + "text": "Go akgola go dira pharologanyo.\n\nFetsa @data.workshop.w_praise.in_text_title go bona gore o ka e dirisa jaang le ba lelapa la gago.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Praising their teen when they did positive thing", - "text": "Galaletsa basha ba bona fa ba dirile sengwe se sentle", + "SourceText": "Praise your teen for one thing they did well. \n\nAnd when last did you praise yourself or another adult? Try it!", + "text": "Akgola mosha wa gago ka selo se le seng se ba se dirileng.\n\nEbile ke leng labofelo o ikakgola kgotsa motho yo mongwe o mogolo? E leke!", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Nako tsotlhe ga o galaletsa mosha wa gago, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "SourceText": "Amazing, you completed the @data.workshop.w_praise.in_text_title. A new workshop is ready tomorrow. Try it - you will see a change in your teen’s behaviour.", + "text": "Gogontle, o feditse @data.workshop.w_praise.in_text_title. Tirelothuto e ntsha e go emetse kamoso. E leke - o tla bona phetogo mo maitsholong a mosha wa gago.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_praise.in_text_title. should not be translated." }, { - "SourceText": "Get positive", - "text": "Leba dilo ka tsela e e siameng", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow!\n\nIt seems like you haven’t finished the @data.workshop.w_praise.in_text_title. It’s short (promise!) – give it a go when you have a few minutes.", + "text": "Dumela @global.user_name, tirelothuto e ntšhwa e go emetse kamoso!\n\nGo bonala okare gaise o fetse @data.workshop.w_praise.in_text_title. Ke e khutswane(ka go tshepisa!) - e leke fa o na le metsotsonyana.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name,\n@data.workshop.w_praise.in_text_title." }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "**Leba dilo ka tsela e e siameng** @global.parent_point", + "SourceText": "Hi @fields.user_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Dumela @fields.user_name! Beke e ntšhwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae e mosha wa gago a e tlhaloganyang mme a e latela.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Go naya mosha ditaelo tse dintle", + "SourceText": "Hi @fields.group_name! New week, new workshop! Learn to set household rules that your teen understands and follows.", + "text": "Dumela @fields.group_name! Beke e ntšhwa, tirelothuto e ntšhwa! Ithute go tlhama melao ya fa gae e mosha wa gago a e tlhaloganyang mme a e latela.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Nako tsotlhe fa o naya mosha taelo e ntle, tobetsa @global.parent_point mme o keteke katlego ya gago!", + "SourceText": "Tried your best but your teen is still grumpy? Remember, you are doing a great job - there will be good times with them too!", + "text": "O lekile ka thata mme fela mosha wa gago sentse a selekega fela? Gopola, o dira tiro e ntle - Go tlile go nna le nako tse dintle le bona!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Breathe not yell", - "text": "Kgwa mowa mme o se ka wa goelela", + "SourceText": "Thank you for investing in your parenting. \n\nDo the @data.workshop.w_rules.in_text_title to help your teen understand and follow household rules.", + "text": "Re lebogela fa o tsenyeleditse mo botsading.\n\nDira @data.workshop.w_rules.in_text_title go thusa mosha wa gago go tlhaloganya le go latela melao ya fa gae.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "**Kgwa mowa mme o se ka wa goelela** @global.parent_point", + "SourceText": "So close to gaining another tool! Complete the @data.workshop.w_rules.in_text_title and set ONE simple, realistic rule with your teen, and see things change!", + "text": "Fa gaufi le go bona sediriswa se seng! Tlatsa @data.workshop.w_rules.in_text_title mme o beye molao o MONGWE o bonolo, o kgonegang le mosha wa gao, mme o bone fa dilo di fetoga!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @data.workshop.w_rules.in_text_title should not be translated." }, { - "SourceText": "Good money choice", - "text": "Go dirisa madi sentle", + "SourceText": "Have you managed to set a rule with your teen?", + "text": "A o kgonne go baya molao mmogo le mosha wa gago?", "type": "data_list", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "**Go dirisa madi sentle** @global.parent_point", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n \nTomorrow, access a new workshop! It will show you what to do when teens display bad (or good) behaviour!", + "text": "Ra go lebogisa, o feditse @local.workshop_data.in_text_title.\n\nKamoso, tsena go tirelothuto e ntšhwa! E tlile go go bontsha se o ka se dirang fa basha ba tlhagisa maitsholo a bosula (kgotsa a mantle)!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The string @local.workshop_data.in_text_title. should not be translated." }, { - "SourceText": "Calm consequence", - "text": "Ditlamorago o ritibetse", + "SourceText": "A brand-new workshop unlocks tomorrow!\n \nComplete the @local.workshop_data.in_text_title before moving on. Just a few more minutes to help your teen follow your rules!", + "text": "Tirelothuto e ntšhwa e a bulega kamoso!\n\nTlatsa @local.workshop_data.in_text_title pele o tswela pele. Metsotsonyana e mmalwa fela go thusa mosha wa gago go latela melao!", "type": "data_list", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "**Ditlamorago o ritibetse** @global.parent_point", + "SourceText": "Hi @fields.user_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Dumela @fields.user_name! O gaufi le bokhutlo jwa leeto la @global.parent_app! Re lebogela fa o ntse o tshwareletse.\n\nBeke eno e ka ga go tshwara basha ba rona ba bolokesegile mo mafaratlhatlheng le fa motseng.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app" }, { - "SourceText": "Safe", - "text": "Sireletsegile", + "SourceText": "Hi @fields.group_name! You're nearly at the end of your @global.parent_app journey! Thank you for sticking to it. \n\nThis week is about keeping our teens safe online and in the community.", + "text": "Dumela @fields.group_name! O gaufi le bokhutlo jwa leeto la @global.parent_app! Re lebogela fa o ntse o tshwareletse.\n\nBeke eno e ka ga go tshwara basha ba rona ba bolokesegile mo mafaratlhatlheng le fa motseng.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name!\n@global.parent_app" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "**Sireletsegile** @global.parent_point", + "SourceText": "Parenting is tough, especially now. Be proud of your achievements. Of the care you give them. Of every time you make them smile. You're incredible!", + "text": "Botsadi bo boima, segolo setona jaanong. Nna motlotlo ka diphitlhelelo tsa gago. ka tlhokomelo e o ba nayang yone. Ka nako tsotlhe tse o dirang ba nyebe ka boitumelo. O a makatsa!", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Lo dirile bontle tota! Lo dirile sentle ka go fetsa nako mmogo. Seno ke one motheo wa go nna tsala e kgolo ya mosha wa gago!", + "SourceText": "Think about all the parenting skills you've already gained!\n\nComplete the next workshop to get more.", + "text": "Nagana ka bokgoni botlhe ba botsadi bo o setseng o bo bone!\n\nTlatsa tirelothuto e e latelang go bona tse dingwe.", "type": "data_list", "note": "" }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Go go siametse! Fa o fetsa nako o na le basha ba gago, ba tla bona gore ba botlhokwa mo go wena. Seno se thusa tota!", + "SourceText": "Chatting together about their community and online experiences helps keep teens safe. \n\nComplete the @data.workshop.w_safe.in_text_title to see how.", + "text": "Go bua mmogo ka maitemogelo a motse selegae le mafatlhatlha go thusa go boloka basha.\n\nTlatsa @data.workshop.w_safe.in_text_title go bona gore jaang.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Bontle tota! Go fetsa nako le mosha wa gago go ka dira gore gantsi a batle go go thusa. O dira sentle!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "A o setse o buile le mosha wa gago kaga ditsela tsa tshireletsego?", "type": "data_list", "note": "" }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "O dirile sentle! Go fetsa nako le mosha wa gago go go thusa gore o bone gore ke dilo dife tse a di ratang le gore ke dilo dife tse a di kgonang. O naledi!", + "SourceText": "Congratulations, you completed @data.workshop.w_safe.in_text_title. A new workshop is ready tomorrow to help your family deal with any situation – together you can do so much!", + "text": "Kakgolo, o tladitse @data.workshop.w_safe.in_text_title. Tirelothuto e ntšhwa e go letile kamoso go thusa lelapa la gago go mekamekana le seemo sengwe le sengwe - Mmogo lo ka dira go le gontsi!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_safe.in_text_title. should not be translated." }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Tiro e ntle! Go fetsa nako mmogo le mosha wa gago go dira gore lo nne ditsala tse dikgolo e bile go dira gore lo kgone go dirisana sentle.", + "SourceText": "Finish the @data.workshop.w_safe.in_text_title before moving on. This can prevent many problems. \n\nWell done for using @global.parent_app to support your family.", + "text": "Fetsa @data.workshop.w_safe.in_text_title pele o tswela pele. Seno se ka thibela mathata a le mantsi.\n\nTiro e ntle go dirisa @global.parent_app go tshegetsa lelapa la gago.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_safe.in_text_title\n@global.parent_app" }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Ka dinako dingwe go tla nna motlhofo go fetsa nako le mosha wa gago mme ka dinako dingwe e tlile go nna kgwetlho e kgolo. Go fetsa nako mmogo go tla tokafatsa tsela eo lo dirisanang ka yone; o dirile sentle tota ka go lekeletsa go dira seno!", + "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", + "text": "Beke eno ke ya GAGO. Itshware sentle. Seo se go tshwanetse!", "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo go leka go fetsa nako mmogo le mosha wa gago. Rotlhe ka dinako tse dingwe re na le dikgwetlho. Nna pelotelele mo go wena le go mosha wa gago - dilo di tla nna botoka. Re leboga fela thata go bo lo tsere matsapa!", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", + "text": "Simolola @global.parent_app tirelothuto e ntsha kamoso. O tla bona pholo e ntle!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle; lo ditswerere!", + "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", + "text": "Gopola go bolelela balekane @global.parent_app ka app eno. Kamoso, o ka simolola go dira @global.parent_app ditirwana mmogo!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Bontle tota! Lo tlhoka go itumela tota!", + "SourceText": "Hi @fields.user_name! You are making such good progress! \n\nHaving a teen means having lots of unexpected problems. This workshop will show you how to deal with them.", + "text": "Dumela @fields.user_name! O dira tswelopele e ntle tota!\n\nGo nna le mosha go raya gore go nna le mathata a le mantsi a a sa solofediwang. Tirelothuto eno e tlile go go bontsha gore o ka mekamekana le ona jaang.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo. Re lo opela diatla go bo lo tsere matsapa!", + "SourceText": "Hi @fields.group_name! You are making such good progress!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", + "text": "Dumela @fields.group_name! O dira tswelopele e ntle tota!\n\nGo nna le mosha go raya gore go nna le mathata a le mantsi a a sa solofediwang. Tirelothuto eno e tlile go go bontsha gore o ka mekamekana le ona jaang.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Re itumelela go utlwa gore e dirile gore o ikutlwe o itumetse! Tswelelang ka go dira tiro eno e e molemo. Mosha wa gago o ithuta go le gontsi tota mo go wena!", + "SourceText": "Your commitment is inspiring. Keep calm and carry on!", + "text": "Maitlamo a gago a rotloetsa. Ritibala mme o tswelepele!", "type": "data_list", "note": "" }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Go ka nna ga nna thata lekgetlo la ntlha go tlhalosa gore re ikutlwa jang mme gone, wena le mosha wa gago lo tla tlwaela. Tswelela o leke mme fa go ntse go ile, dilo di tla tsamaya sentle!", + "SourceText": "Unexpected problems arise when we have teens. \n \nLearn how to address them in the next workshop.", + "text": "Mathata a a sa solofelwang a tlhagelela fa re na le basha.\n\nIthute tsela ya go buisana ka ona mo tirelothuto e e lateng.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle. Go bua ka madi mmogo go nonotsha lelapa la lona tota!", + "SourceText": "You are on the right track to solving problems with your teen! \n\nComplete the @data.workshop.w_solve.in_text_title to gain another parenting skill.", + "text": "O mo tseleng ya nnete go rarabolola mathata le mosha wa gago!\n\nTlatsa @data.workshop.w_solve.in_text_title go oketsa bokgoni jwa gago jwa botsadi.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo. Re leboga fela thata go bo lo tsere matsapa!", + "SourceText": "Practise the four steps of problem-solving with your teen. \n \nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Lekelela dikgato di le nne tsa go rarabolola mathata le mosha wa gago.\n \nA ITSE, A RARABOLOLE, E LEKE, E TLHATLHOBE!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Melao e e sa nneng e fetofetoga e dira gore basha ba gago ba ikutlwe ba babalesegile, e bile e a ba sireletsa!", + "SourceText": "Great! You completed the @data.workshop.w_solve.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Bontle! O tladitse @data.workshop.w_solve.in_text_title. Kamoso, tirelothuto e ntšhwa e a notlologa go go thusa go tshola mosha wa gago a babalesegile.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title. should not be translated." }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Re maswabi go utlwa gore go ne go le thata. Go baya melao mmogo go tlhoka gore lo ikatise mme gone, go mosola fela thata!", + "SourceText": "Access a new workshop tomorrow! \n \n By completing the @data.workshop.w_solve.in_text_title first, you'll know how to solve problems together.", + "text": "Tsena go tirelothuto e ntšhwa kamoso!\n\nKa go tlatsa @data.workshop.w_solve.in_text_title lantlha, O tlile go itse go rarabolola mathata mmogo.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_solve.in_text_title should not be translated." }, { - "SourceText": "Great to hear it went well!", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle!", + "SourceText": "Hi @fields.user_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Dumela @fields.user_name! Kakgolo ka go simolola beke ya 5.\n\nTirelothuto e ntšhwa e go emetse ka dikgakololo tsa go nna o ritibetse ebile o laola fa basha ba re tlhakanya tlhogo.", "type": "data_list", - "note": "" + "note": "The string @fields.user_name! should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo. Fa lo buisana mmogo gore kotlhao e tla nna eng, gantsi seno se tla dira gore mosha wa gago a batle go ikobela melao!", + "SourceText": "Hi @fields.group_name! Congratulations for starting week 5.\n\nA new workshop awaits with tips on staying calm and in control when our teens drive us crazy.", + "text": "Dumela @fields.group_name! Kakgolo ka go simolola beke ya 5.\n\nTirelothuto e ntšhwa e go emetse ka dikgakololo tsa go nna o ritibetse ebile o laola fa basha ba re tlhakanya tlhogo.", "type": "data_list", - "note": "" + "note": "The string @fields.group_name! should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo. Go le gantsi re tshwanetse go nna re leka. Leka go batla nako e wena le mosha wa gago lo ritibetseng maikutlo mme o leke gape go rarabolola bothata o dirisa dikgato tse nne tsa go rarabolola mathata. Fa lo dira mmogo, lo ka kgona go atlega thata!", + "SourceText": "Manage anger and stress with this new workshop. It helps you take better care of yourself.", + "text": "Laola kgalefo ya gago kgatelelo ya maikutlo ka tirelothuto e ntšhwa. E go thusa go itlhokomela botoka.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Go bua ka bodiphatsa le ditsela tse di ka dirisiwang tsa thuso go thibela mathata mme e bile go thusa tota go boloka mosha wa gago a sireletsegile.", + "SourceText": "Feeling overwhelmed? Deep breaths help. \n\nComplete the @data.workshop.w_stress.in_text_title to help you deal with stress.", + "text": "A o ikutlwa o tlalelane? Go hemela kwa teng go a thusa.\n\nTlatsa @data.workshop.w_stress.in_text_title go go thusa go mekamekana le kgatelelo ya maikutlo.", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Re maswabi go utlwa gore go ne go se motlhofo. Go bona fa dikotsi le mafelo a go bona tshegetso di leng teng e ka nna kgwetlho le go tsholetsa maikutlo. Tota go a thusa go boloka mosha wa gago a sireletsegile!", + "SourceText": "Feeling stressed this week? Try taking deep breaths before responding to your teen - it makes a big difference.", + "text": "A o ikutlwa o na le kgatelelo ya maikutlo beke eno? Leka go hemela kwa teng pele o araba mosha wa gago - E dira pharologanyo e kgolo.", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Re maswabi gore go ne go le thatanyana. Ga e se selo se se motlhofo go se dira. Leka go nna fa fatshe le mosha wa gago mme lo tlotle ka yone gape. Mme gape, a go na le mongwe yo mosha wa gago a mo tshepang yo a ka tlang go kopanela le lona mo motlotlong?", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you take a pause, you take back control.", + "text": "Tiro e ntle ka go hemela kwa teng pele o araba mosha wa gago! Nako nngwe le nngwe fa o ema go se kae, o boela o nna fa taolong.", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Go otlhaya ka tsela e e siameng go thusa basha ba gago gore ba itshware sentle e bile go dira gore maemo a ritibale mo lelapeng.", + "SourceText": "Well done for completing the @data.workshop.w_stress.in_text_title. Tomorrow, access a new workshop to help you relax and build valuable skills!", + "text": "Tiro e ntle ka go tlatsa @data.workshop.w_stress.in_text_title. Kamoso, tsena go tirelothuto e ntšhwa go go thusa go itapolosa le go aga bokgoni jo bo nang le boleng!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title. should not be translated." }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Ke leboga go utlwa gore dilo di tsamaile sentle! Fa mosha wa gago a ithuta go rarabolola mathata, o tla kgona go dirisa bokgoni joo botshelo jwa gagwe jotlhe. Ruri ke mpho!", + "SourceText": "Get ready for a new workshop tomorrow. \n \n By completing the @data.workshop.w_stress.in_text_title first, you lay a key foundation: If you feel good, your family will too!", + "text": "Itukisetse tirelothuto e ntšhwa kamoso.\n\nka go tlatsa @data.workshop.w_stress.in_text_title lantlha, o baya motheo o botlhokwa: fa o ikutlwa sentle, le lelapa la gago le tlile go dira jalo!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_stress.in_text_title should not be translated." } ] \ No newline at end of file diff --git a/packages/app-data/translations_source/from_translators/translated.za_xh.json b/packages/app-data/translations_source/from_translators/translated.za_xh.json index 6e7f9ffd53..9632ca0097 100644 --- a/packages/app-data/translations_source/from_translators/translated.za_xh.json +++ b/packages/app-data/translations_source/from_translators/translated.za_xh.json @@ -1,751 +1,757 @@ [ { - "SourceText": "Home Practice", - "text": "Uqheliselo Lwasekhaya", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Buzanani, “Yintoni ekwenze wonwaba namhlanje?”\n* Buzanani, “Yeyiphi ingxaki oye wanayo namhlanje?”\n* Buzanani, “Ndingakunceda njani?”\n* Zamani ukwenza le nto nonke yonke imihla; ninokuyenza xa nisitya kunye isidlo sangokuhlwa okanye ngaphambi kokulala.", "type": "template", "note": "" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Izenzo ezincinane, iziphumo ezinkulu! Abazali abaqhelisela izakhono zabo zoqeqesho xa besekhaya bafumana iziphumo ezigcono.", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "Buza umntwana wakho ofikisayo ukuba angathanda ukutya isidlo esinjani. \n* Senzeni nobabini! \n* Mvumele ibe nguye umpheki oyintloko – nguye okhokelayo kwaye wena ulandela imiyalelo yakhe. \n* Unokumnceda nokuba enze ibhajethi yezinto eziza kuthengwa xa kuphekwa! \n\nUcinga ukuba ayizusebenza? Buza abantwana bakho abafikisayo ukuba BAFUNA ukuba nenze ntoni kunye. Bayeke bakhokele. Phola. Yonwaba.", "type": "template", "note": "" }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Kwiveki ezayo, uza kuxelela iqela lakho ukuba zihambe njani izinto xa ubuqhelisela ekhaya. Ebudeni beveki, ninako nokukhumbuzana nize nixhasane.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "* Vuthululani izandla zenu zasekhohlo emoyeni izihlandlo ezi-8 ngoxa nibala ukuya kutsho ku-8.\n* Yenzani ngokukhawuleza kwaye ningxola kangangoko ninako.\n* Phindani nangesinye isandla. Phindani ngeenyawo zombini.\n* Yenzani kasi-7, emva koko kasi-6 nize niqhubeke nide nifike ku-1.\n* Wonke umntu ukhwaza athi “Inkukhu ephambeneyo” emva koko nidanise ngathi yinkukhu ephambeneyo!", "type": "template", "note": "" }, { - "SourceText": "How did it go?", - "text": "Luhambe njani?", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Makujuxuzwe ngendlela athanda ukujuxuza ngayo umntwana wakho ofikisayo. \n* Umntu omnye uyajuxuza baze abanye balinganise yena. \n* Wonke umntu unetyeli lokukhokela. \n* Yenzani phambi kwakhe wonke umntu osekhayeni lenu!", "type": "template", "note": "" }, { - "SourceText": "talk to their teens about how they feel", - "text": "bathetha nabantwana babo abafikisayo malunga nendlela abavakalelwa ngayo", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Lo mdlalo umnandi xa udlalwa ngabantu abangaphezu kwaba-2\n* Umntu omnye wenza ngathi wenza into ethile – ngokomzekelo, ukama iinwele okanye upheka isidlo sangokuhlwa. \n* Omnye umntu ubuza athi, “Wenza ntoni?”\n* Umntu wesibini kufuneka athethe into engadibaniyo nokukama iinwele, ngokomzekelo athi, “Ndibopha imitya yezihlangu zam” \n* Umntu wesibini uqalisa ukwenza ngathi ubopha imitya yezihlangu zakhe de omnye umntu ambuze, “Wenza ntoni?” \n\nImpendulo kufuneka isoloko ingeyiyo le nto ayenzayo loo mntu!", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "thetha nomntwana wakho malunga nendlela ovakalelwa ngayo", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Awunakusoloko useluhambeni ngalo lonke ixesha, kodwa unako ukuba namaphupha! Buza umntwana wakho ofikisayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluyaphi? Uza kuhamba ixesha elide kangakaani? Uza kupakisha njani? Yintoni onokuyenza kolo hambo? Yintoni onokuyibona?\nJongani kunye kwimephu okanye niyizobe.\n* Khetha ilizwe angalaziyo umntwana wakho ofikisayo nize nifunde ngakumbi ngalo.", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "Ngaba uye wanayo imiceli-mngeni xa ubuzama uku @local.hp_description_second_singular?", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Khethani umdlalo okanye indlela yokujima eninokuyenza kunye. Gqibani ngocwangciso. Ngaba niza kuyenza yonke imihla? Kangangexesha elingakanani? \n\nYizameni kangangeveki. Ekupheleni kweveki, buza wena kunye nentsapho yakho le mibuzo:\n* Ihamba njani? \n* Benivakalelwa njani ekuqaleni kweveki? \n* Nivakalelwa njani ekupheleni kweveki? \n* Yintoni esinokuyenza ngokwahlukileyo kwiveki ezayo?", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Yintoni ebinzima xa ubuzama uku @local.hp_description_second_singular?", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Wena nomntwana wakho ofikisayo ningenza uluhlu lokuqikelela abantu abadumileyo belo lizwe neningathanda ukubamemela kwitheko lenu. Ngamnye kuni angamema abantu abahlanu – bangaba baphila kule mihla okanye babe ngabakudala. Ngoobani eninokubamema? Ngaba iindwendwe zingavana?", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "Sorry we missed this!", - "text": "Uxolo siyiphosile le nto!", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Ncokola kunye nomntwana wakho ofikisayo malunga nento ayithandayo.\n\nIsenokuba yiyo nantoni na abakhetha ukuncokola ngayo: imidlalo, iitshomi, umculo, oosaziwayo.\n\nZama ukummamela umntwana wakho uze umvumele athethe.", "type": "template", "note": "" }, { - "SourceText": "Do you want to share it with us?", - "text": "Ngaba ufuna ukwabelana ngayo kunye nathi?", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Cingani ngeendlela ezintathu zokujima. Ngokomzekelo, ukuhamba, ukunkcunkca, ukudlala ibhola okanye ukudanisa.\n* Khethani kunye ibe nye nize niyizame. \n* Ukuba nobabini niyayithanda, gqibani ngokuba niza kuyenza kangaphi. Kanye okanye kabini ngeveki? Qho ngentseni?\n* Ninobabini, cingani ngendlela yokuyenza ibe mnandi nangakumbi. Ningankcunkca niyokutsho kwindawo ethile? Mhlawumbi nitshintshisane ngokuba ngumqeqeshi? Nikhuthazane ngomvuzo omncinci wasimahla?", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Enkosi ngokwabelana ngocelo-mngeni lwakho! Siza kulusebenzisa olu luvo ukuze senze @global.parent_app ngcono.", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Tshintshanani ngokuba “yinkokheli”. Thethani amagama okuqala ukuze wonke umngu angene. Emva koko, “inkokheli” ikhupha umyalelo kwaye wonke umntu wenza loo nto ngokukhawuleza okunokwenzeka.\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bamba into ebomvu.” \n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Xhuma, xhuma izihlandlo ezilishumi.”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bekani izihlangu kwindawo ehlala izihlangu.”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Sibuhlungu ukuva ukuba amacebiso khange akuncede.", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Khetha umntu obalisa ibali ukuze aqalise ukulibalisa.\n* Abantu abalimameleyo bangasebenzisa naliphi igama ukuze bangenelele nanini na.\n* Umntu obalisayo kufuneka asebenzise elo gama kwibali alibalisayo.\n* Xa ibali ligqityiwe, makubalise omnye umntu!", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "Ngaba ufuna ukusichazela ukuba ucinga ukuba yintoni enokukunceda?", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Qalisa ibali ngokuthi, “Ngaminazana ithile kwaye kukho...”\n* Vumela umntwana wakho ofikisayo athethe into elandelayo.\n* Emva koko ugqibezela isivakalisi.\n* Tshintshanani nide nibe nebali elitsha elimnandi.\n* Qinisekisa ukuba ibali liphela kamnandi. *\nBuza umntwana wakho ofikisayo ukuba yeyiphi indawo ayithandileyo kwibali!", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Enkosi ngokwabelana! Ungumzali ogqwesileyo ngokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo. Oko kwenza wonke umahluko. Qhubeka usenza umsebenzi omhle kwaye ungalibali ukuba ndisoloko ndikhona ukuze ndikuxhase!", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Umntu wokuqala uthi, “NgoMgqibelo ndiya...(umz., epakini)”\n* Umntu wesibini wongeza kwinto ethethwe ngumntu wokuqala athi, “NgoMgqibelo ndiya epakini kwaye... (umz. ndiyokutyelela umhlobo wam osenyongweni).\n* Umntu ngamnye wongezelela kwinto ethethwe ngumntu wokugqibela, nizama ukucinga ngazo zonke izinto ezimnandi ezinokwenziwa ngoMgqibelo.", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Nazi izakhono eziphambili kule veki! \n\nZisebenzise xa usekhaya kwaye ungazifumana nanini na kwi-@global.parent_centre yakho.", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Lo mdlalo ungadlalwa ngabantu ababini okanye ngabantu abaninzi kwiqela.\n* Yimani isangqa nize nijongane. \n* Umntu omnye uyakhokela baze abanye bamlinganise bezama ukushukuma ngexesha elifanayo nenkokheli.\n* Qinisekisa ukuba inkokheli ayikhawulezi ukuze abanye bakwazi ukuyilinganisa! Jongani amalungu omzimba ashukumayo ngamanqanaba ahlukahlukeneyo.\n* Emva kwethutyana, tshintshani inkokheli. Wonke umntu makabe nethuba lokukhokela.\n* Zamani zingekho iinkokheli!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Masiphumle Sonke", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Umntu wokuqala uza kukhetha ingoma okanye akhethe ukuyicula.\n* Wonke omnye umntu umele aqashisele igama lengoma (ukuze niyeze ibe nzima, angaqashisela nomntu oyiculayo).\n* Umntu wokuqala ukuqashisela ngokuchanileyo kuza kukhokela yena.", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Phola", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Lo mdlalo umnandi ngakumbi xa kukho abantu aba-3 ubuncinane.\n* Qalisani kwisangqa uze ugqithise “ibhola” kube kanye esangqeni (okanye “uqhwabe xa ungakwazi ukujula).\n* “Ujula” kube kanye ukuze ujule “ibhola”, uze uyibambe kube kanye. Mjonge umntu omphoselayo. \n* Indlela oyiphosa ngayo (phezulu, ezantsi, ngqo, ngasecaleni, iqengqeleka phantsi) kunye namandla (ngamandla kakhulu, ngokuthambileyo) imele ichaphazele indlela ayibamba ngayo umntu. \n* Unokuyigqampisa “ibhola”, uyijule emoyeni uze uyibambe kambalwa ngaphambi kokuba uyidlulisele komnye umntu. \n* Xa umntu wonke sele eqhelene noku, unokuqalisa ukujikeleza kwigumbi usajula “ibhola”. \n* Ungakwazi ukuyijula ngaphantsi komlenze? Ngemva komqolo? Entla kwentloko yakho? Ukuyibamba ngaphambi kokuba ifike komnye umntu? Nikonwabele ukudlala “ngebhola”!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "Masenze kunye into yokuzipholisa – iza kuthatha ngaphantsi komzuzu oyi-1 kwaye uza kuziva phole ngakumbi.", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Ekupheleni kosuku, thatha umzuzu ukuze: \n\n* Uncokole nomntwana wakho ngento enye emnandi ayenzileyo. \n* UzIncome ngokwenza into enye kakuhle namhlanje. \n*Uligqala!", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Faka oku kwenziwayo kwi-@global.my_relaxes", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Cinga ngokuba namandla angaphezu kwemvelo. Ngokomzekelo, ukuya naphi na ngoko nangoko, ukubuyela emva kwixesha lakudala. \n* Buza umntwana wakho ofikisayo ukuba, “Xa ubunamandla angaphezu kwemvelo oku[...], ubungawasebenzisa njani?”\n* Mkhuthaze ukuba anike eli qhawe linamandla angaphezu kwemvelo igama aze enze loo nto beliza kuyenza. \n* Ngoku cela umntwana wakho ofikisayo akukhethele amandla angaphezu kwemvelo onokuba nawo.\n* Qinisekisa ukuba nawe uyabonisa ukuba ungawasebenzisa njani amandla akho nagaphezu kwemvelo!", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "Listen and relax", - "text": "Mamela uze uphole", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Cinga ngeemeko ezintathu ezahlukahlukeneyo. Ngokomzekelo, ukuqhuba imoto, ukukhwela isikhitshana okanye ukubhabha ngenqwelo ntaka.\n* Chazela umntwana wakho ngezi zinto uze umbuze, “Yeyiphi onokuyikhetha?”\n* Mbuze ukuba kutheni ekhetha leyo?\n* Ngoku cinga ngeemeko ezintathu ezingakumbi okanye ucele umntwana wakho ofikisayo akwenzele.", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Funda uze uphole", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Balisela umntwana wakho ofikisayo ngezinto zangokuya wawungangaye. Ziintoni ezazingekho ngoko? Ifowuni ezingena kwi-intanethi? Wawusenza ntoni xa uzonwabisa? Yintoni eyayikuxhalabisa? Ungabi naxhala xa bengathethi nto emva kokuba ubaxelele ngawe -– into ebalulekileyo kukuba bamamele kwaye baza kukhumbula. Ngamanye amaxesha, abantwana bethu abafikisayo bayalibala ukuba abazali babo nabo ngabantu!", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "Ungu ngqa phambili!\n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole.", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Cinga ngezinto ezintathu ezinokuthethwa ngawe. Ezimbini kuzo zimele zibe yinyani kwaye enye yazo ibe bubuxoki.\n* Kunganceda ukucinga ngezinto ozinqwenelayo, amaphupha akho, amava asesikolweni, izinto ozithandayo okanye ongazithandiyo. Ngokomzekelo: Ndiyazicaphukela iibhanana, isifundo endisithandayo yisayensi kwaye ndikunqwenela kakhulu ukukwazi ukucula. \n* Zixelele umntwana wakho ofikisayo uze umbuze ukuba yeyiphi engoyonyani kwezi. \n* Ngaba uchanile xa ebeqashisela? Ngaba imothusile?\n* Ngoku mcele enze into efanayo. Ikhona into entsha eniyifundileyo komnye nomnye?", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "Wamkelekile @fields.user_name", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Cinga ngesakhono esitsha onokusifunda kunye nomntwana wakho ofikisayo. Ngokomzekelo, ukuteka ibhola okanye ukuyibamba ngonyawo lwakho ingawi, ukujula iibhola phezulu uze uzibambe, ukwenza isuphu?\n* Tshintshanani nize nizame ukwenza isakhono esitsha.\n* Qinisekani ukuba niyancomana, nize nizame ukufunda nokudlala kunye!", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again!", - "text": "Kuluvuyo ukukubona kwakhona!", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Buzanani imibuzo. Ingayimibuzo emalunga nezinto ozithandayo okanye ozenzileyo namhlanje.\n* Umthetho mnye qha kukuba awunakuphendula uthi, “Ewe” okanye “Hayi” okanye uthi, “Mhlawumbi.”\n* Niza kuyenza kangangexesha elingakanani? Iimpendulo zakho zingacingisiswa kangakanani?\n* Tshintshanani nize nidlale kwakhona!", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "Makhe sibone ukuba ihamba njani iveki.", + "SourceText": "Home", + "text": "Iphepha Lokuqala", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Kule veki uye wenza...", + "SourceText": "Settings", + "text": "Iisetingi", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "Ubonisa ukuzimisela okukhulu ekubeni ngumzali nasekuzinyamekeleni. \n\nUgqwesile.", + "SourceText": "Template", + "text": "Itemplethi", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "Bukelani Kunye", + "SourceText": "In-Week Messages", + "text": "Imiyalezo Yeveki", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video together!", - "text": "Masibukele ividiyo kunye!", + "SourceText": "Campaigns", + "text": "Amaphulo", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Bukela", + "SourceText": "Notifications", + "text": "Izaziso", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "Masibukele ividiyo!", + "SourceText": "You have successfully entered developer mode.", + "text": "Ungene ngempumelelo kwimowudi yomphuhlisi.", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Kuluvuyo ukukubona kwakhona! Masiqalise ngengoma yeentsapho nokuba ziphi.", + "SourceText": "You have entered an incorrect code.", + "text": "Ufake ikhowudi engachananga.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "Masithobe Isantya", + "SourceText": "About @global.parent_app", + "text": "Malunga", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "Ulugqibile uqeqesho lwale veki.", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_app yaphuhliswa yiParenting for Lifelong Health (PLH) - intsebenziswano yehlabathi lonke phakathi kweengcali zobuzali ezivela kwi-UNICEF, i-WHO kunye neeYunivesithi zaseMzantsi Afrika nase-UK, kunye nee-NGO zase-Afrika kunye neentsapho kunye nolutsha kwi-Afrika iphela. Abazali kunye nabantwana abafikisayo basebenze nathi kwi-app kwaye bancedise ekuqinisekiseni ukuba kulula ukuyisebenzisa, imnandi kwaye iyabandakanya. Enye ikhontenti kule app, njenga macebiso kwizinto ezinokwenziwa kunye namabali anemifanekiso, yenziwe nabazali kunye nabantwana abafikisayo ukuqinisekisa ukuba iyahambelana nemfuno zentsapho\n\ni-Parenting for Lifelong Health (PLH) izibophelele ekuxhaseni izixhobo nenkqubo ezisimahla nokwabelwana ngazo zobuzali, ukuxhasa abazali kwihlabathi jikelele ukukhuthaza impilo-ntle yabantwana babo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "See you soon.", - "text": "Masiphinde sikubone kungekudala.", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Ngokucofa eli qhosha lingezantsi uza kubuyisela i-app kwiisetingi zayo zakuqala. \n\nOku kuthetha ukuba yonke inkqubela osowuyenzile nedatha yokusetyenziswa iya kucinywa kwaye i-app yakho iya kusebenza ngokungathi isanda ku-instolwa okokuqala.\n\nPHAWULA: Ukuyiseta kwakhona i-app kusisigxina kwaye awuyi kukwazi ukubuyisela nayiphi na inkcazelo.", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Thethani nonke", + "SourceText": "Open Survey", + "text": "Isaveyi Evulekileyo", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Yabelanani ngamacebiso, xhasanani!", + "SourceText": "Select Language", + "text": "Khetha Ulwimi", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "Yizameni Kunye", + "SourceText": "Workshop Options", + "text": "Iinketho Zocweyo", "type": "template", "note": "" }, { - "SourceText": "Let's practice together.", - "text": "Masiziqhelanise sonke.", + "SourceText": "Reset App", + "text": "Setha kwakhona i-App", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Ukuziqhelanisa ekhaya yindlela esibenza bube ngcono ngayo ubomi bentsapho yethu. Kodwa kudla ngokubakho imiceli-mngeni. \n\nMasincokole ngeempumelelo kunye neengxaki zethu size sincedane ukuze sibe namacebiso amatsha esinokuwazama!", + "SourceText": "Demo Presentation", + "text": "Iprezenteyishini yedemo", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola: \n* Yintoni ehambe kakuhle ibe yintoni eye yanzima? \n* Zeziphi izisombululo eninokucinga ngazo? \n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", + "SourceText": "Organisation Registration", + "text": "Ukubhaliswa Kombutho", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Umzekelo wengxoxo esuka @data.workshop.w_1on1.title", + "SourceText": "Developer Mode", + "text": "Imowudi Yomphuhlisi", "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." + "note": "" }, { - "SourceText": "Start Positively Together", - "text": "Qalisani Kunye Ngendlela Ekhuthazayo", + "SourceText": "Unlock all workshops", + "text": "Vula lonke iindibano zocweyo", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "Wamkelekile @fields.group_name", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Ngokucofa eli qhosha lingezantsi uya kuvula lonke iindibano zocweyo.\n\nQAPHELA: Abasebenzisi akufuneki basebenzise lo msebenzi ukuvula iindibano zocweyo, oku akucetyiswa ngaphandle kokuba kunyanzelekile.", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Kuluvuyo ukukubona kwakhona! \n\nMasiqalise ngokunyamekela wena.", + "SourceText": "Unlock workshops", + "text": "Vula iindabano zocweyo", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Tshintshanani:\n* Yabelanani Uziva njani namhlanje?\n* Ncoma umntu okwiqela lakho ngento entle ayenzileyo kule veki!\n\nUkhumbule ukuba, kungakhathaliseki ukuba uziva njani, kumnandi ukukubona ulapha. Nifanele kukunconywa xa ninonke.", + "SourceText": "All workshops are now unlocked.", + "text": "Lonke iindabano zocweyo uvela luvuliwe ngoku.", "type": "template", "note": "" }, { - "SourceText": "Ideas from other families:", - "text": "Amacebiso avela kwezinye iintsapho:", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Ukufelwa ngumntu omthandayo kunokuvakala kukoyisa kakhulu. Nanga amacebiso ambalwa asebenzayo anokuba luncedo ukuwakhumbula.", "type": "template", "note": "" }, { - "SourceText": "Question Time", - "text": "Ixesha Lemibuzo", + "SourceText": "Ask for help", + "text": "Cela uncedo", "type": "template", "note": "" }, { - "SourceText": "It's time for some questions!", - "text": "Lixesha lemibuzo!", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "- Cela umntu omthembileyo ukuba akuncede - ukutya okanye ukhathalelo lwabantwana kunokuba luncedo. Unokufuna amaxwebhu elifa, abantwana bakho, okanye ukufikelela kwiinkonzo.\n- Ngamanye amaxesha abantu bazama ukuthatha imali okanye ilifa kumntu osentlungwini. Fumana malunga namalungelo wakho.", "type": "template", "note": "" }, { - "SourceText": "Listen Together", - "text": "Masimamele Sisonke", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "Ukuvalelisa kunzima. Yenza oko kubonakala kulungile kuwe nakumntwana wakho.\n- Iintsapho, abantwana kunye nabazali abafezekanga. Xa umntu efile, kulungile ukuthetha ngezinto ezilungileyo nezimbi esizikhumbulayo.\n- Kunganceda ukubhala ileta okanye ukwenza umzobo womntu omkileyo.\n- Abanye abantu benza umsitho okanye benze isidlo esikhethekileyo sokubhiyozela umntu, kwaye bathi ndlela ntle.\n- Inokukunceda ukwenza ibhokisi yeenkumbulo, ukubeka izinto ezikukhumbuza wena kunye nomntwana wakho ngalomntu.\n- Inokukunceda ukuthetha malunga ngalomntu xana ucinga ngaye.", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio together!", - "text": "Masiyimameleni sonke le nto imanyelwayo!", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Ukulahlekelwa ngumhlobo okanye othandekayo kunzima kumntu wonke. Ukuba nobubele kuwe kunye nokwenza izinto zokuzinceda uhlangabezane neli xesha linzima kunceda nomntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "Listen", - "text": "Mamela", + "SourceText": "Find a support group", + "text": "Fumana iqela lenkxaso", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "Masimameleni i-audio!", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "- Intlungu inokusichaphazela kangangeeveki okanye iinyanga okanye iminyaka. Akuyomfuneko ukuba uzive ubhetele ngokukhawuleza.\n- Lala ngokwaneleyo kunye nokutya - kunzima ukukhathalela abantwana xana udiniwe kwaye ulambile.\n- Yenza uluhlu lwezinto ezikwenza uzive ngcono, kwaye uzenze.\n- Zama ukwenza into enye elula yokuphumla yonke imihla nomntwana wakho ofikisayo, kunye nawe ngokwakho.\n- Kulungile ukuziva ulungile kwaye kulungile ukukhala. Ungaze uzibeke ityala, ayilotyala lakho eli.\n- Kuhlala kukho ithemba nasemva kokulahlekelwa. Zama ukonwabela izinto ezilula, kwaye uthathe umzuzu ukwenza into emnandi okanye ukuphumla nomntwana wakho.\n- Fumana umntu omdala omnye okanye ababini abanokukuxhasa, bakumamele, kwaye bathethe.", "type": "template", "note": "" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Kutheni iyi-@local.workshop_data.title?", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "- Ukuthetha nomntu onokukuxhasa kwaye akumamele kunokunceda. Kunokunceda kananjalo ukuzimanya neqela labantu abalahlekelwe ngabantu nabo. Khumbula ukuba akukho mntu ugqibeleleyo. Kulungile ukuthetha ngamaxesha amnandi namabi.", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "" }, { - "SourceText": "Hear Sbo's message", - "text": "Yiva umyalezo kaSbo", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Abantwana abafikisayo bajongana nelahleko ngeendlela ezahlukeneyo, njengabantu abadala. Ungabanceda baqonde imeko kunye neemvakalelo zabo ngokudala iindawo ezikhuselekileyo apho unokwabelana nobabini kwaye niqhubeke.", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Funda umyalezo kaSbo", + "SourceText": "Be honest", + "text": "Nyaniseka", "type": "template", "note": "" }, { - "SourceText": "Today's steps", - "text": "Amanyathelo anamhlanje", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "Xelela umntwana wakho ukuba lomntu uswelekile - ngamanye amaxesha akaziqondi.\n- Ukuxelela yinkqubo, hayi isiganeko. Kusenokufuneka ubaxelele ngokuphindaphindiweyo.\n- Sebenzisa amagama abawaqondayo.\n- Ukuba abantwana basebancinci akayiqondi ukuba yintoni ukufa, nceda uchaze ukuba umntu omthandayo akabuyi. Zama ukuba ungabizi 'ukulala' okanye 'uhambo lokuhamba'.\n- abantwana abadala bangakuqonda ukuba yintoni ukufa, kodwa banokuba nzima ukwabelana okanye ukuphatha iimvakalelo zabo.\n- Abantwana banonokuphendula ngeendlela ezahlukeneyo: ukukhala, ukukhwaza, ukungakholelwa okanye ukuzola kakhulu. Zonke ezi zinto zilungile. Baxelele ukuba ukunye nabo.\n-Vumela imibuzo kunye nokuthetha. Nyaniseka. Kulungile ukutsho xana singazi.", "type": "template", "note": "" }, { - "SourceText": "Read Together", - "text": "Masifunde Sisonke", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "- Abantwana banokuba lusizi, nomsindo, bangayiqondi okanye bangakholelwa, baziva ndindisholo, bangaziva kamnandi okanye babe neentlungu, amaphupha amabi okanye iingxaki esikolweni. Umntwana wakho ofikisayo usenokubonakala onwabile, kodwa abe buhlungu. Basenokuzivale baze bafune ukuchitha ixesha elingakumbi nabahlobo. Basenokubonisa indlela yokuziphatha engalindelekanga okanye eyingozi. Ezi zisenokungabi nangqiqo kuwe, kodwa konke oku kuqhelekile.\n- Abantwana banokuziva ngathi lityala labo - ukuba baye bosulela intsholongwane, okanye baziphathe kakubi. Baxelele ngokucacileyo ukuba akukho nto iphosakeleyo bayenzileyo.", "type": "template", "note": "" }, { - "SourceText": "Let's read a story together!", - "text": "Masilifundeni kunye ibali!", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "- Cacisa ukuba intlungu iza neemvakalelo ezininzi kunye neempendulo. Bonisa umntwana wakho ukuba uyathandwa kwaye uyakhathalelwa, kwaye umkhuthaze ukuba abelane ngeemvakalelo zakhe ngokuthetha, ukubhala okanye ukuzoba.\n- Ukuba kukho iqela lenkxaso umntwana wakho anokuba yinxalenye yalo, oku kunganceda.\n- Ukuba umntwana ofikisayo uthetha ngokufuna ukuzenzakalisa okanye ukuzibulala, cela uncedo komnye umntu ngokukhawuleza kangangoko unako.\n- Ukuba unako, gcina inkquboi yakho yesiqhelo yemihla ngemihla, oku kunokuba yintuthuzelo kwabaselula.\n- Kunganceda ukuba abantwana bakho babe yinxalenye yezithethe malunga nokufa - ukukhetha ingoma okanye into yokuthetha.\n- Ukuchitha imizuzu embalwa yonke imihla ugxile kumntwana wakho ofikisayo kunceda ukumenza azive ekhuselekile kwaye umnike ithuba lokuphumla okanye ukuthetha ngezinto ezimkhathazayo.", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "Makhe sifunde ibali!", + "SourceText": "How did it go?", + "text": "Luhambe njani?", "type": "template", "note": "" }, { - "SourceText": "Think Together", - "text": "Masicinge Sonke", + "SourceText": "Reply", + "text": "Phendula", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Lixesha lokuba sicinge sonke!", + "SourceText": "Timer", + "text": "Isibali xesha", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Cinga", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Cofa unxa-ntathu ukuze ukwazi ukugcina le ncoko ku-@local.timer_duration ngemizuzu.", "type": "template", - "note": "" + "note": "The string @local.timer_duration should not be translated." }, { - "SourceText": "It's time to think!", - "text": "Lixesha lokucinga!", + "SourceText": "Video", + "text": "Ividiyo", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Masifunde Kunye", + "SourceText": "You selected less than @local.threshold", + "text": "Ukhethe ngaphantsi ko-@local.threshold", "type": "template", - "note": "" + "note": "The string @local.threshold should not be translated." }, { - "SourceText": "It's time to learn and practice together!", - "text": "Lixesha lokuba sifunde size siziqhelanise sonke!", + "SourceText": "Start Positively Together", + "text": "Qalisani Kunye Ngendlela Ekhuthazayo", "type": "template", "note": "" }, { - "SourceText": "Learn", - "text": "Funda", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Kuluvuyo ukukubona kwakhona! \n\nMasiqalise ngokunyamekela wena.", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice!", - "text": "Lixesha lokuba sifunde size siziqhelanise!", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Tshintshanani:\n* Yabelanani Uziva njani namhlanje?\n* Ncoma umntu okwiqela lakho ngento entle ayenzileyo kule veki!\n\nUkhumbule ukuba, kungakhathaliseki ukuba uziva njani, kumnandi ukukubona ulapha. Nifanele kukunconywa xa ninonke.", "type": "template", "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Tshintsha i-@global.parent_app", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Sonke sikhe sibe neengcinga ezimbi ngamanye amaxesha.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Give me quick parenting tips", - "text": "Ndinike amacebiso akhawulezileyo okuba ngumzali", + "SourceText": "\"I am a failure\"", + "text": "Ndingohlulekileyo", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Kukho into embi kakhulu eyenzekileyo", + "SourceText": "What to do?", + "text": "Kwenziwe ntoni?", "type": "template", "note": "" }, { - "SourceText": "I have technical problems with the app", - "text": "Ndineengxaki zobugcisa nge-app", + "SourceText": "Examples", + "text": "Imizekelo", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "Ngokusekelwe kwiimpendulo zakho xa ubuseta i-app, uza kuwafumana apha amacebiso esicinga ukuba angaluncedo kuwe.", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Ukuzixelela wena okanye umntwana wakho ukuba uyeke okanye uthethe into eyahlukileyo amaxesha amaninzi akuncedi.", "type": "template", "note": "" }, { - "SourceText": "WHO Website", - "text": "Iwebhusayithi ye-WHO", + "SourceText": "\"I do everything perfectly\"", + "text": "\"Ndenza yonke into ngokugqibeleleyo\"", "type": "template", "note": "" }, { - "SourceText": "UNICEF Website", - "text": "Iwebhusayithi ye-UNICEF", + "SourceText": "Instead, you can ask:", + "text": "Endaweni yoko, unokubuza:", "type": "template", "note": "" }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Ukuba ngumzali ngexesha ye-COVID kunzima. Zingce ngenxa yokuba ufikelele kule\n\nSisebenzela umxholo omtsha ozowufumana apha ukuze sikuxhase ukwazi ukuncokola nge-COVID kunye nabantwana bakho abancinane kunye nabo bafikisayo.\n\nLolona lwazi luhlaziyiweyo nge-COVID-19 inofumaneka kwiwebhusayithi ye-WHO kunye neye-UNICEF:", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "- Ngaba ingcinga iyinyani? Zeziphi ezinye iingcaciso?\n- Kwenzeka ntoni ukuba ndiqhubeka ndikholelwa kule ngcamango?\n - Ndingamxelela ntoni umhlobo ukuba unale ngcinga?", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Eli qhosha liza kukusa kwicandelo le-Coronavirus kwiwebhsayithi esemthethweni ye-WHO.", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "\"Oku kunzima, kodwa uzama ngako konke okusemandleni akho, kwaye siza kusebenza kunye ukufumana isisombululo\"", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "I-URL yile https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "SourceText": "\"It’s your fault\"", + "text": "\"Lityala lakho\"", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Eli qhosha liza kusa kwincandelo lwe Coronavirus kwiwebhusayithi esemthethweni ye-UNICEF.", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"Masize nesisombululo kunye\"", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "I-URL yile https://www.unicef.org/coronavirus/covid-19", + "SourceText": "\"I lost my job\"", + "text": "\"Ndiphelelwe ngumsebenzi\"", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Hlaziya amava am okuba ngumzali", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Ndifunde okuninzi emsebenzini wam - oko kuya kundinceda ndifumane omnye\"", "type": "template", "note": "" }, { - "SourceText": "Update my personal details", - "text": "Hlaziya iinkcukacha zam zobuqu", + "SourceText": "\"Nobody likes me\"", + "text": "\"Akhuko mntu undithandayo\"", "type": "template", "note": "" }, { - "SourceText": "Update my workshop options", - "text": "Hlaziya inkhetho yam ye ndabano zocweyo", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "\"Kwiveki ephelileyo ndibe nexesha elimnandi no ... \"", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "Ngaba uhlangabezana neengxaki zobuxhakaxhaka? Sazise kwaye uncedise ekwenzeni i-@global.parent_app ibe ngcono!", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Izinto ezimbi zihlala zisenzeka kum\"", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Type your name (optional)", - "text": "Bhala igama lakho (akunyanzelekanga)", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Le nto intle yenzeka ngenye imini...\"", "type": "template", "note": "" }, { - "SourceText": "Type your phone number", - "text": "Chwetheza inombolo yakho yomnxeba", + "SourceText": "Change", + "text": "Utshintsho", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Qhagamshelana nam nge-imeyile", + "SourceText": "You’ve completed this week’s workshop.", + "text": "Ulugqibile uqeqesho lwale veki.", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Chwetheza idilesi yakho ye-imeyile", + "SourceText": "See you soon.", + "text": "Masiphinde sikubone kungekudala.", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Sixelele nge ngxaki yakho", + "SourceText": "You can always find these tools in the @global.parent_centre", + "text": "Unokuzifumana ngalo lonke ixesha ezi zixhobo kwi-@global.parent_centre", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Ngoku umama wayeqala undibuza ukuba ndiyafuna na ukuchitha ixesha naye, ndamxelele ukuba makandiyeke ngenxa yokuba ndandiphakathi nomdlalo wam. Kodwa wanyanzelisa njengoko ehlale esenza. Ndathi angandibukela xa ndidlala ukuba yilonto ayifunayo. Emva kwemizuzu embalwa, waqalisa ukundibuza imibuzo ngokuphathelene nomdlalo. Ekuqaleni, yayicaphukisa lonto kodwa emva kwethutyana yandivuyisa into yokuba wade wanomdla kwinto endiyenzayo. Wade wazama nokudlala!", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Kwiveki ezayo, uza kuxelela iqela lakho ukuba zihambe njani izinto xa ubuqhelisela ekhaya. Ebudeni beveki, ninako nokukhumbuzana nize nixhasane.", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "Utata wandixelela ukuba ndichitha ixesha elininzi ndidlala i-basketball ukuphuma kwesikolo, ngoko kwafuneka sibeke umthetho wekhaya. Wandithembisa ukuba isisombululo sasiza kuphuma kuthi sobabini ukuze soneliseke ngaso. Zange ndikholelwe ukuba ingenzeka lonto, kodwa ndathi, “KULUNGILE, masizame”. Sathethana saza savumelana ngomthetho othi kuvumelekile ukudlala i-basketball emva kokuba ndigqibe ukwenza umsebenzi wesikolo kwaye kude kube lixesha lesidlo sangokuhlwa. Kubuhlungu ukubona iitshomi zam zidlala emva kokuphuma kwesikolo, ngoko ndenza konke endinako ukuba ndiqale ndigqibe umsebenzi wesikolo ndize ndiyokudlala nabo emva koko. Ndinobusuku bonke yokwenza ezinye izinto endifuna ukuzenza njengokubukela i-basketball edlalwa ku-NBA emva kokutya isidlo sangokuhlwa kunye nentsapho yam.", + "SourceText": "Home Practice", + "text": "Uqheliselo Lwasekhaya", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "Uza kufumana imiyalezo yeveki esuka kwindibano zocweyo ezidlulileyo apha.", + "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "text": "Izenzo ezincinane, iziphumo ezinkulu! Abazali abaqhelisela izakhono zabo zoqeqesho xa besekhaya bafumana iziphumo ezigcono.", "type": "template", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "talk to their teens about how they feel", + "text": "bathetha nabantwana babo abafikisayo malunga nendlela abavakalelwa ngayo", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "Ungathanda ukuyenza njani iindabano zocweyo?", + "SourceText": "talk to your teen about how you feel", + "text": "thetha nomntwana wakho malunga nendlela ovakalelwa ngayo", "type": "template", "note": "" }, { - "SourceText": "Coming soon", - "text": "Kuza ngokukhawuleza", + "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "text": "Ngaba uye wanayo imiceli-mngeni xa ubuzama uku @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Kuya kufuneka sigubungele eminye imiba yobuzali khaphambi koba singaqala sisebenze kwi-@local.workshop_data.title.\n\nUnokufumana izixhobo ezibalulekileyo kwi-@local.workshop_data.title usebenzisa i-@global.parent_centre.", + "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", + "text": "Yintoni ebinzima xa ubuzama uku @local.hp_description_second_singular?", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "My name", - "text": "Igama lam", + "SourceText": "Sorry we missed this!", + "text": "Uxolo siyiphosile le nto!", "type": "template", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "Usuku lwe @global.weekly_workshop", + "SourceText": "Do you want to share it with us?", + "text": "Ngaba ufuna ukwabelana ngayo kunye nathi?", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "I do the workshops...", - "text": "Ndenza iindabano zocweyo...", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Enkosi ngokwabelana ngocelo-mngeni lwakho! Siza kulusebenzisa olu luvo ukuze senze @global.parent_app ngcono.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "My group's name", - "text": "Igama le qela lam", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Sibuhlungu ukuva ukuba amacebiso khange akuncede.", "type": "template", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "Iqela lam ngoku lenza iindabano zocweyo...", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "Ngaba ufuna ukusichazela ukuba ucinga ukuba yintoni enokukunceda?", "type": "template", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Ndim ngoku owenza iindabano zocweyo...", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Enkosi ngokwabelana! Ungumzali ogqwesileyo ngokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo. Oko kwenza wonke umahluko. Qhubeka usenza umsebenzi omhle kwaye ungalibali ukuba ndisoloko ndikhona ukuze ndikuxhase!", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "Ingaba uqinisekile ukuba ufuna ukuvula zonke iindabano zocweyo? Wakuba uyenzile le nto awuzukwazi ukuphinda ulutshixe", + "SourceText": "Language", + "text": "Ulwimi", "type": "template", "note": "" }, { - "SourceText": "You can always find these tools in the @global.parent_centre", - "text": "Unokuzifumana ngalo lonke ixesha ezi zixhobo kwi-@global.parent_centre", + "SourceText": "Learn Together", + "text": "Masifunde Kunye", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Yongeza lo msebenzi kwi-@global.my_activities", + "SourceText": "It's time to learn and practice together!", + "text": "Lixesha lokuba sifunde size siziqhelanise sonke!", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Izenzo zokuzipholisa", + "SourceText": "Learn", + "text": "Funda", "type": "template", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Izinto ezonwabisayo onokuzenza nomntwana wakho ofikisayo", + "SourceText": "It's time to learn and practice!", + "text": "Lixesha lokuba sifunde size siziqhelanise!", "type": "template", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Awukafaki nto eyenziwayo malunga nezenzo zokuzipholisa kwi @global.my_relaxes. Kutheni ungakhethi ezimbalwa?", + "SourceText": "Listen Together", + "text": "Masimamele Sisonke", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Awukafaki nto zenziwayo kwi @global.my_activities. Kutheni ungakhethi ezimbalwa?", + "SourceText": "Let's listen to an audio together!", + "text": "Masiyimameleni sonke le nto imanyelwayo!", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Open Survey", - "text": "Isaveyi Evulekileyo", + "SourceText": "Listen", + "text": "Mamela", "type": "template", "note": "" }, { - "SourceText": "Select Language", - "text": "Khetha Ulwimi", + "SourceText": "Let's listen to an audio!", + "text": "Masimameleni i-audio!", "type": "template", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Iinketho Zocweyo", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Molo @fields.user_name! Kule veki uye wenza:", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Unlock Workshops", - "text": "Vula iindabano zocweyo", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "Demo Presentation", - "text": "Iprezenteyishini yedemo", + "SourceText": "That’s wonderful!", + "text": "Kuyancomeka oku!", "type": "template", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Ukubhaliswa Kombutho", + "SourceText": "Nice work!", + "text": "Wenza umsebenzi omhle!", "type": "template", "note": "" }, { - "SourceText": "Developer Mode", - "text": "Imowudi Yomphuhlisi", + "SourceText": "Your commitment is not taken for granted.", + "text": "Ukuzinikela kwakho akulolize.", "type": "template", "note": "" }, { - "SourceText": "Unlock all workshops", - "text": "Vula lonke iindibano zocweyo", + "SourceText": "Keep up the good work!", + "text": "Qhubeka nalo msebenzi mhle!", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Ngokucofa eli qhosha lingezantsi uya kuvula lonke iindibano zocweyo.\n\nQAPHELA: Abasebenzisi akufuneki basebenzise lo msebenzi ukuvula iindibano zocweyo, oku akucetyiswa ngaphandle kokuba kunyanzelekile.", + "SourceText": "This is lovely!", + "text": "Oku kuyathandeka!", "type": "template", "note": "" }, { - "SourceText": "Unlock workshops", - "text": "Vula iindabano zocweyo", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Ziqhwabele izandla. Ukufanele oku.", "type": "template", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Lonke iindabano zocweyo uvela luvuliwe ngoku.", + "SourceText": "Every @global.parent_point counts!", + "text": "I@global.parent_point nganye uyabala!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Ngokucofa eli qhosha lingezantsi uza kubuyisela i-app kwiisetingi zayo zakuqala. \n\nOku kuthetha ukuba yonke inkqubela osowuyenzile nedatha yokusetyenziswa iya kucinywa kwaye i-app yakho iya kusebenza ngokungathi isanda ku-instolwa okokuqala.\n\nPHAWULA: Ukuyiseta kwakhona i-app kusisigxina kwaye awuyi kukwazi ukubuyisela nayiphi na inkcazelo.", + "SourceText": "Relax now", + "text": "Phola ngoku", "type": "template", "note": "" }, { - "SourceText": "Reset App", - "text": "Setha kwakhona i-App", + "SourceText": "Did you relax already? Tap it!", + "text": "Ngaba sowupholile? Yicofe!", "type": "template", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "Ungene ngempumelelo kwimowudi yomphuhlisi.", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "Ufake ikhowudi engachananga.", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Qhubeka ne-@local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Language", - "text": "Ulwimi", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Qalisa i-@local.workshop_data.in_text_title", + "type": "template", + "note": "The string @local.workshop_data.in_text_title should not be translated." + }, + { + "SourceText": "Finish current workshop", + "text": "Gqiba uqeqesho lwangoku", "type": "template", "note": "" }, @@ -755,6 +761,12 @@ "type": "template", "note": "The string @global.parent_app should not be translated." }, + { + "SourceText": "Other", + "text": "Enye indlela", + "type": "template", + "note": "" + }, { "SourceText": "I found it myself", "text": "Ndiyifumanisile ngokwam", @@ -768,4340 +780,3692 @@ "note": "" }, { - "SourceText": "Other", - "text": "Enye indlela", + "SourceText": "Quick Parenting Tips", + "text": "Iingcebiso Ezikhawuleziyo Zokuba Ngumzali", "type": "template", "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "Unokucelwa ukuba wabelane ngale khowudi nabantu abaza kuxhasa uhambo lwakho lwe@global.parent_app.", - "type": "template", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Last sync at: @local.sync_latest", - "text": "Ungqamaniso Lokugqibela e: @local.sync_latest", - "type": "template", - "note": "The string @local.sync_latest should not be translated." - }, - { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Esi sixhobo asizange singqanyaniswe. Ngqamanisa uzokuveza ikhowudi yakho.", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Ukukhulisa abantwana abafikisayo kunganzima, kwaye sonke siyoyisakala ngamanye amaxesha.", "type": "template", "note": "" }, { - "SourceText": "Sync now", - "text": "Ngqamanisa ngoku", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Loluphi ucelomngeni oluyintloko ojongene nalo ngalo mzuzu?", "type": "template", "note": "" }, { - "SourceText": "Syncing...", - "text": "Ungqamaniso...", + "SourceText": "My relationship with my teen is not good", + "text": "Ulwalamano lwam nomntwana wam ofikisayo aluluhlanga", "type": "template", "note": "" }, { - "SourceText": "You selected @local.threshold or less", - "text": "Ukhethe ezi-@local.threshold okanye ngaphantsi", + "SourceText": "My teen’s behaviour is difficult", + "text": "Isimilo somntwana wam ofikisayo sixakile", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected more than @local.threshold", - "text": "Ukhethe ezingaphezu kwe-@local.threshold", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ndiziva ndinoxinezelelo, ndindodwa, ndinomsindo", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Reply", - "text": "Phendula", + "SourceText": "I have money worries", + "text": "Ndinamaxhala emali", "type": "template", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Iintsuku kwinyanga edlulileyo", + "SourceText": "I worry about my teen’s safety", + "text": "Luyandixhalabisa ukhuseleko lomntwana wam ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Days in the past week", - "text": "Iintsuku kwiveki edlulileyo", + "SourceText": "We often fight in our family", + "text": "Sisoloko sisilwa kusapho lwethu", "type": "template", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "Ukhethe ngaphantsi ko-@local.threshold", + "SourceText": "I have a different problem…", + "text": "Ndinengxaki eyahlukileyo…", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Unlock for less than @local.threshold", - "text": "Vula ezingaphantsi kwe-@local.threshold", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Ukwakha ulwalamano olungcono kuqala ngokuchitha ixesha kunye - noba yimizuzu emi-5 ngosuku kwenza umahluko! Okokuqala, kunokuba nzima ukuchitha ixesha kunye, njengoko sonke sixakekile kwaye ulutsha lwethu lunokuba kwimudi engentle ngamanye amaxesha. Kodwa ukuchitha noba yimizuzu emi-5 ngosuku lwexesha olijolise kumntwana wakho ofikisayo kuyanceda ekwakheni ukuthembana. Zama ukubuza umntwana wakho ofikisayo ukuba yintoni angathanda niyenze kunye. Inokuba mnandi kwaye ikuphumze nawe ngokunjalo!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "Ukhethe ezi-@local.threshold okanye ngaphezulu", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "Unokufumana inkxaso engakumbi ngendlela yokuchitha ixesha ninodwa kunye nomntwana wakho ofikisayo apha:", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Video", - "text": "Ividiyo", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Bonke abantwana abafikisayo bayageza ngamanye amaxesha! Eyona nto inokunceda kwisimilo sabantwana abafikisayo kukubancoma nanini na besenza into entle - nokuba incinci kangakanani na. Abantwana abafikisayo basenokungabonakali ngathi bafuna okanye bakhangela ukunconywa nguwe kodwa eneneni, bayafuna.", "type": "template", "note": "" }, { - "SourceText": "Timer", - "text": "Isibali xesha", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "Unokufumana inkxaso engakumbi apha malunga nendlela yokukhuthaza isimilo esihle ngokuncoma:", "type": "template", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Cofa unxa-ntathu ukuze ukwazi ukugcina le ncoko ku-@local.timer_duration ngemizuzu.", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Uxinezelelo lokuba ngumzali luphezulu ngeyona ndlela ngoku. Sazi kakuhle ukuba ubomi bunokuba nzima kangakanani. Ukuzenzela okuthile kungalunciphisa uxinezelelo lwakho. Ukufanelekele oku! Xa uziva ukhathazekile, lawula umzimba wakho ngokuwutsala ngamandla umoya ngokucotha, kahlanu ngaphambi kokuphendula. Abazali abaninzi bakufumanisa kuluncedo oku.", "type": "template", - "note": "The string @local.timer_duration should not be translated." + "note": "" }, { - "SourceText": "Options", - "text": "Ukhetho", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "Unokufumana inkxaso engakumbi malunga nendlela yokuzikhathalela apha:", "type": "template", "note": "" }, { - "SourceText": "Home", - "text": "Iphepha Lokuqala", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Awuwedwa. Uxinezelelo lwemali lunzima kakhulu kubazali. Zama ukuthetha nomntwana wakho ofikisayo malunga nokuba yimalini engenayo nezinto enidinga ukuyisebenzisa kuzo njengosapho nyanga nganye. Oku kunokubanceda baqonde ukuba kutheni ungakwazi ukubathengela into abayifunayo. Yaye xa wonke umntu ekuqonda ukuba iyaphi imali, kulula ukuvumelana ngokuba yimalini eninokuyonga kunye!", "type": "template", "note": "" }, { - "SourceText": "Settings", - "text": "Iisetingi", + "SourceText": "You can get more support on how to budget and save here:", + "text": "Unokufumana inkxaso engakumbi ngendlela yokwenza ibhajethi uze wonge apha:", "type": "template", "note": "" }, { - "SourceText": "Template", - "text": "Itemplethi", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Abantwana abafikisayo bachitha ixesha elininzi bengaphandle kwekhaya okanye besebenzisa i-intanethi, apho kunzima nangakumbi ukuba sibagcine bekhuselekile - abazali abaninzi kuyabakhathaza oku. Zama ukuqala incoko nomntwana wakho ofikisayo malunga neendawo ezikhuselekileyo nezingakhuselekanga kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi (kungafuneka ukuzame amatyeli ambalwa). Banokude bazi nezo wena ungazaziyo. Oku kuza kuqalisa ukukunceda nenze isicwangciso kunye sokuba uhlala njani ekhuselekile.", "type": "template", "note": "" }, { - "SourceText": "Tour", - "text": "Ukhenketho", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "Unokufumana inkxaso engakumbi ngendlela yokugcina umntwana wakho ofikisayo ekhuselekile apha:", "type": "template", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Imiyalezo Yeveki", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "Xa kuvela ingxaki, zamani ukuthetha ngayo kunye. Yintoni kanye kanye ingxaki? Zeziphi izisombululo ezohlukeneyo ezikhoyo kwaye zeziphi iziphumo zaso ngasinye? Ngaloo ndlela, ungafumana isisombululo esinokuba SILUNGELE umntu wonke.", "type": "template", "note": "" }, { - "SourceText": "Campaigns", - "text": "Amaphulo", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "Unokufumana inkxaso engakumbi malunga nokusombulula iingxaki kunye apha:", "type": "template", "note": "" }, { - "SourceText": "Notifications", - "text": "Izaziso", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Akululanga ukunyamekela iintsapho zethu. Sonke sinemiceli mngeni ngamanye amaxesha, kodwa siyathemba ukuba le app iza kukunceda uyoyise ngempumelelo. @global.parent_app isekwe kwiminyaka elishumi yamava eqhuba iinkqubo zobuzali eMzantsi Afrika, kwaye amawaka abazali bafumanise ukuba iingcebiso ekwabelwana ngazo ziyanceda kwimiceli mngeni emininzi yokuba ngumzali. Siyathemba ukuba le app iza kukunceda kunye nentsapho yakho.\n\nNazi ezinye zeengcebiso eziphambili nezingqiniweyo:", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "About @global.parent_app", - "text": "Malunga", + "SourceText": "Start your first parenting workshop", + "text": "Qalisa uqeqesho lwakho lokuqala lokuba ngumzali", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_app yaphuhliswa yiParenting for Lifelong Health (PLH) - intsebenziswano yehlabathi lonke phakathi kweengcali zobuzali ezivela kwi-UNICEF, i-WHO kunye neeYunivesithi zaseMzantsi Afrika nase-UK, kunye nee-NGO zase-Afrika kunye neentsapho kunye nolutsha kwi-Afrika iphela. Abazali kunye nabantwana abafikisayo basebenze nathi kwi-app kwaye bancedise ekuqinisekiseni ukuba kulula ukuyisebenzisa, imnandi kwaye iyabandakanya. Enye ikhontenti kule app, njenga macebiso kwizinto ezinokwenziwa kunye namabali anemifanekiso, yenziwe nabazali kunye nabantwana abafikisayo ukuqinisekisa ukuba iyahambelana nemfuno zentsapho\n\ni-Parenting for Lifelong Health (PLH) izibophelele ekuxhaseni izixhobo nenkqubo ezisimahla nokwabelwana ngazo zobuzali, ukuxhasa abazali kwihlabathi jikelele ukukhuthaza impilo-ntle yabantwana babo.", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "Uza kufumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Finish current workshop", - "text": "Gqiba uqeqesho lwangoku", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "Ungafumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Qalisa i@local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Qalisa i-@local.workshop_data.in_text_title", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Gqiba i@local.workshop_data.in_text_title ukuze ufumane inkxaso engakumbi.", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Continue @local.workshop_data.in_text_title", + "SourceText": "Continue the @local.workshop_data.in_text_title", "text": "Qhubeka ne-@local.workshop_data.in_text_title", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Molo @fields.user_name! Kule veki uye wenza:", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Phinda ungene kwi@local.workshop_data.in_text_title", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", + "SourceText": "CHAT", + "text": "NCOKOLA", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "note": "" }, { - "SourceText": "That’s wonderful!", - "text": "Kuyancomeka oku!", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Yabelana ngendlela oziva ngayo, kwaye ukhuthaze umntwana wakho ukuba athethe ngezinto ezimkhathazayo. Niya kuqondana ngcono kwaye ninokwenza isicwangciso esilungileyo kunye ukuze nihlale nisempilweni kwaye nonwabile!", "type": "template", "note": "" }, { - "SourceText": "Nice work!", - "text": "Wenza umsebenzi omhle!", + "SourceText": "CAUTION", + "text": "ISILUMNKISO", "type": "template", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Ukuzinikela kwakho akulolize.", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Fumana ulwazi lwakho kwimithombo ethembekileyo yolwazi, ukuze ube nokuzithemba kula maxesha angaqinisekanga. Siva kwaye sibona iindaba ezininzi ngabanye abantu kunye neefowuni, iTV, i-intanethi. Ingaba ikwenza uzive uthandabuza, ixhala, uloyiko, umsindo, okanye ukubhideka? Jonga ngaphambi kokuba wabelane okanye wenze!", "type": "template", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Qhubeka nalo msebenzi mhle!", + "SourceText": "CHOOSE", + "text": "KHETHA", "type": "template", "note": "" }, { - "SourceText": "This is lovely!", - "text": "Oku kuyathandeka!", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Ukwenza ukhetho olufanelekileyo olugcina wonke umntu esempilweni kwaye ekhuselekile kunokuba nzima. Ingakumbi kula maxesha! Unokumnceda umntwana wakho ofikisayo enze izigqibo ezifanelekileyo.", "type": "template", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Ziqhwabele izandla. Ukufanele oku.", + "SourceText": "CHILL", + "text": "PHOLA", "type": "template", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "I@global.parent_point nganye uyabala!", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Sonke siziva sicinezelekile ngamanye amaxesha. Thatha umoya onzulu okanye nenze into eyonwabisayo kunye. Kungenza umahluko omkhulu ukwenza ikhaya lakho lonwabe kwaye libe noxolo! Nazi ezinye iimbono onokuzizama:", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Relax now", - "text": "Phola ngoku", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Iingcinga ezingakhiyo zisenza sithethe size senze izinto ezimbi. Zama ukutshintsha into oyicingayo kwaye uyithethe ukusuka kwengalunganga ukuya kwelungileyo!", "type": "template", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "Ngaba sowupholile? Yicofe!", + "SourceText": "WHO Website", + "text": "Iwebhusayithi ye-WHO", "type": "template", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Ukuzinyamekela kubalulekile.", + "SourceText": "UNICEF Website", + "text": "Iwebhusayithi ye-UNICEF", "type": "template", "note": "" }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Kulunge kakhulu! Kuhle kakhulu ukuva ukuba ukwimeko entle namhlanje. Enjani ukumangalisa imvakalelo!", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Ukuba ngumzali ngexesha ye-COVID kunzima. Zingce ngenxa yokuba ufikelele kule\n\nSisebenzela umxholo omtsha ozowufumana apha ukuze sikuxhase ukwazi ukuncokola nge-COVID kunye nabantwana bakho abancinane kunye nabo bafikisayo.\n\nLolona lwazi luhlaziyiweyo nge-COVID-19 inofumaneka kwiwebhusayithi ye-WHO kunye neye-UNICEF:", "type": "template", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Maxa wambi izinto zihamba kakuhle. Maxa wambi akubi njalo. Yaye maxa wambi asiye sazi ukuba masicinge ntoni... yaye oko kulunge ngokupheleleyo! Khumbula ukuba awukho wedwa.", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Eli qhosha liza kusa kwincandelo lwe Coronavirus kwiwebhusayithi esemthethweni ye-UNICEF.", "type": "template", "note": "" }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Oku kubalasele, ingakumbi ngamaxesha anzima njengala. Uligqala.", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "I-URL yile https://www.unicef.org/coronavirus/covid-19", "type": "template", "note": "" }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Siyazi ukuba kunzima kangakanani ukukhulisa abantwana abafikisayo kula maxesha. Ukufunda ukulawula uxinezeleko lwakho kunceda wena - nentsapho yakho.", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Eli qhosha liza kukusa kwicandelo le-Coronavirus kwiwebhsayithi esemthethweni ye-WHO.", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje uphathelele ukulawula uxinezeleko. \n\nKubalulekile ukwazi indlela yokulawula uxinezeleko lwethu. Maxa wambi abantwana bethu bangaziphatha ngeendlela ezinokusenza sizive sixinezelekile yaye nathi bazali sinokwenza abantwana bazive bexinezelekile. \n\nNgoko, kubalulekile ukuphawula xa siziva sixinezelekile size sime kancinci size sithathe umoya. Loo nto iya kukunceda ulawule uxinezeleko.", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "I-URL yile https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengxubusho – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Update my parenting experiences", + "text": "Hlaziya amava am okuba ngumzali", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengcinga – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Update my personal details", + "text": "Hlaziya iinkcukacha zam zobuqu", "type": "template", "note": "" }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "Makhe sijonge indlela uxinezeleko olunokuthi maxa wambi lube ngaphaya kwamandla, kuthi sonke:", + "SourceText": "Update my workshop options", + "text": "Hlaziya inkhetho yam ye ndabano zocweyo", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver: “Khawundiyeke uhoye iindaba zakho!”", + "SourceText": "Give me quick parenting tips", + "text": "Ndinike amacebiso akhawulezileyo okuba ngumzali", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: Ndenze ntoni? Awundimameli!” \n\n@global.w_stress_male_caregiver: “Ndithe ndiyeke okanye ndiza kukubetha!”", + "SourceText": "Something really bad happened", + "text": "Kukho into embi kakhulu eyenzekileyo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: “Jonga! Ndenze indlu!”", + "SourceText": "I have technical problems with the app", + "text": "Ndineengxaki zobugcisa nge-app", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: “Bukhathalelwe ngubani ububhanxa bendlu yakho!”", + "SourceText": "You will find the in-week messages from the previous workshops here.", + "text": "Uza kufumana imiyalezo yeveki esuka kwindibano zocweyo ezidlulileyo apha.", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani? Kunye ne @global.w_stress_male_caregiver? Yaye @global.w_stress_girl?\n\nYintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Awukafaki nto zenziwayo kwi @global.my_activities. Kutheni ungakhethi ezimbalwa?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani?", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Awukafaki nto eyenziwayo malunga nezenzo zokuzipholisa kwi @global.my_relaxes. Kutheni ungakhethi ezimbalwa?", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "Yaye @global.w_stress_male_caregiver?", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "Ngokusekelwe kwiimpendulo zakho xa ubuseta i-app, uza kuwafumana apha amacebiso esicinga ukuba angaluncedo kuwe.", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "And @global.w_stress_girl?", - "text": "Yaye @global.w_stress_girl?", + "SourceText": "Relaxation activities", + "text": "Izenzo zokuzipholisa", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "Scared", - "text": "Uyoyika", + "SourceText": "Something fun to do with your teen", + "text": "Izinto ezonwabisayo onokuzenza nomntwana wakho ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Ngamnye kubo ebecaphuka ngezizathu zakhe!", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "Ngaba uhlangabezana neengxaki zobuxhakaxhaka? Sazise kwaye uncedise ekwenzeni i-@global.parent_app ibe ngcono!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "Yintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", + "SourceText": "Type your name (optional)", + "text": "Bhala igama lakho (akunyanzelekanga)", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "Recognise why he feels stressed", - "text": "Hlola ukuba kutheni eziva exinezelekile", + "SourceText": "Type your phone number", + "text": "Chwetheza inombolo yakho yomnxeba", "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "Khawuthathe umoya uze uthethe ngokuzolileyo", + "SourceText": "Contact me via email", + "text": "Qhagamshelana nam nge-imeyile", "type": "template", "note": "" }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo", + "SourceText": "Type your email address", + "text": "Chwetheza idilesi yakho ye-imeyile", "type": "template", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "Cinga ngezisombululo kunye @global.w_stress_teen_boy_1", + "SourceText": "Tell us about your issue", + "text": "Sixelele nge ngxaki yakho", "type": "template", "note": "" }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Ngoku umama wayeqala undibuza ukuba ndiyafuna na ukuchitha ixesha naye, ndamxelele ukuba makandiyeke ngenxa yokuba ndandiphakathi nomdlalo wam. Kodwa wanyanzelisa njengoko ehlale esenza. Ndathi angandibukela xa ndidlala ukuba yilonto ayifunayo. Emva kwemizuzu embalwa, waqalisa ukundibuza imibuzo ngokuphathelene nomdlalo. Ekuqaleni, yayicaphukisa lonto kodwa emva kwethutyana yandivuyisa into yokuba wade wanomdla kwinto endiyenzayo. Wade wazama nokudlala!", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver unako...", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "Utata wandixelela ukuba ndichitha ixesha elininzi ndidlala i-basketball ukuphuma kwesikolo, ngoko kwafuneka sibeke umthetho wekhaya. Wandithembisa ukuba isisombululo sasiza kuphuma kuthi sobabini ukuze soneliseke ngaso. Zange ndikholelwe ukuba ingenzeka lonto, kodwa ndathi, “KULUNGILE, masizame”. Sathethana saza savumelana ngomthetho othi kuvumelekile ukudlala i-basketball emva kokuba ndigqibe ukwenza umsebenzi wesikolo kwaye kude kube lixesha lesidlo sangokuhlwa. Kubuhlungu ukubona iitshomi zam zidlala emva kokuphuma kwesikolo, ngoko ndenza konke endinako ukuba ndiqale ndigqibe umsebenzi wesikolo ndize ndiyokudlala nabo emva koko. Ndinobusuku bonke yokwenza ezinye izinto endifuna ukuzenza njengokubukela i-basketball edlalwa ku-NBA emva kokutya isidlo sangokuhlwa kunye nentsapho yam.", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* Qonda ukuba kutheni eziva exinezelekile \n* Khawuthathe umoya uze uthethe ngokuzolileyo \n* Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo \n* Cingani ngezisombulullo kunye @global.w_stress_teen_boy_1\n* Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", + "SourceText": "Question Time", + "text": "Ixesha Lemibuzo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Enkosi ngokucinga ngolu hlobo! Makhe sibuyele umva size sibone ukuba u @global.w_stress_male_caregiver wenza ntoni ngoku:", + "SourceText": "It's time for some questions!", + "text": "Lixesha lemibuzo!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver uphelelwe ngumsebenzi. Ebehleli endlini eziva ekhathazekile yaye exinezelekile, ukungena kuka @global.w_stress_teen_boy_1.", + "SourceText": "Read Together", + "text": "Masifunde Sisonke", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver (uyaphefumla): “Uxolo nyana wam. Bendinemini embi namhlanje. Umqeshi wam undigxothile.”", + "SourceText": "Let's read a story together!", + "text": "Masilifundeni kunye ibali!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “Yhoo! Ndicela iyunifom entsha.” \n\n@global.w_stress_male_caregiver: “Ndiza kuzama nyana, Yaye umsebenzi ka @global.w_stress_female_caregiveruza kusithwala logama ndisakhangela omnye umsebenzi.”", + "SourceText": "Let's read a story!", + "text": "Makhe sifunde ibali!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: “Nam ndingakuncedisa ukukhangela umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Hayi akunangxaki, @global.w_stress_teen_boy_1. Ndiyakuxabisa ukulungela kwakho ukunceda. Eyona nto ibalulekileyo kukuba usebenze nzima esikolweni. Enkosi ngokundiphulaphula.”", + "SourceText": "Let's see how this week has been.", + "text": "Makhe sibone ukuba ihamba njani iveki.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “Masidlale kunye ibhola. Kuza kundinceda ndikhuphe olu xinezeleko engqondweni okwethutyana.” \n\n@global.w_stress_teen_boy_1: \"Kulungile, @global.w_stress_male_caregiver!\"", + "SourceText": "This week you have done...", + "text": "Kule veki uye wenza...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Kube bhetele kakhulu! \n\nUkuma kancinci kukunceda uzole xa uziva unomsindo okanye uxinezelekile. Yizame, uza kubona!", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "Ubonisa ukuzimisela okukhulu ekubeni ngumzali nasekuzinyamekeleni. \n\nUgqwesile.", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Uxolelo Lokhuseleko", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Ukuziqhelanisa ekhaya yindlela esibenza bube ngcono ngayo ubomi bentsapho yethu. Kodwa kudla ngokubakho imiceli-mngeni. \n\nMasincokole ngeempumelelo kunye neengxaki zethu size sincedane ukuze sibe namacebiso amatsha esinokuwazama!", "type": "template", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Khumbula ngokuya wawungumntwana ofikisayo. \n\nNgaba wakha wasengozini kodwa wabe ungenakuxelela intsapho yakowenu ngenxa yokuba iza kuba nomsindo?\n\nOku KUPHANTSE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Makhe sijonge:", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola: \n* Yintoni ehambe kakuhle ibe yintoni eye yanzima? \n* Zeziphi izisombululo eninokucinga ngazo? \n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: \"Ungabaxeleli abantu abadala, kodwa ndiya ebharini nabahlobo bam ngokuhlwanje\" \n\n@global.w_stress_teen_girl: “Yonwaba! Ndibaxelele ukuba ndiza kuhlala nentombi engumhlobo wam, kodwa eneneni ndiya epatini”", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Umzekelo wengxoxo esuka @data.workshop.w_1on1.title", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: \"Ndicinga ukuba basebenzisa iziyobisi. Singabanjwa sonke. Kodwa andinakubaxelela abazali bam – baya kuba nomsindo kakhulu\"", + "SourceText": "Relax Together", + "text": "Masiphumle Sonke", "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: “Ndiyoyika. Wonke umntu unxile kakhulu ukuba angandigodusa. Le nkwenkwe ithi ingandigodusa kodwa ifuna ndiqale kowayo. Andinakubaxelela abazali bam - ndibaxokisile ngokuza kule pati.”", + "SourceText": "Relax", + "text": "Phola", "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Ezi zimeko eziyingozi! Okuvuyisayo kukuba, u @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl bakhumbula oko u @global.w_stress_parent wabaxelela kona: \n\n\"Ndilukhathalele ukhuseleko lwakho ngaphezu kwayo nantoni na. Ukuba uye wacaphuka, okanye woyika, ungaqhagamshelana nam ukuze ndikuncede, okanye undixelele ngayo. \n\nVele uthi ‘UXOLELO LOKHUSELEKO’. Ndiyathembisa ukuba ndiza kwenza unako nako ukukunceda yaye andizokucaphuka – kwanokuba wenza into obungamele uyenze.\"", + "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "text": "Masenze kunye into yokuzipholisa – iza kuthatha ngaphantsi komzuzu oyi-1 kwaye uza kuziva phole ngakumbi.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, Luxolelo lokhuseleko. Ngaba ungeza uzokundithatha? Ndiyidinga ngokwenene into egodukayo.”", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Faka oku kwenziwayo kwi-@global.my_relaxes", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, uxolelo lokhuseleko Ndicinga ukuba abahlobo bam basengxakini. Andifuni kuyeka ukuba ngumhlobo wabo, kodwa ndikhathazekile. Ngaba singathetha?\"", + "SourceText": "Listen and relax", + "text": "Mamela uze uphole", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "PHEFUMLA. Ngokucothayo. Yima.", + "SourceText": "Read and relax", + "text": "Funda uze uphole", "type": "template", "note": "" }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Ngaphambi kokuba uthethe nantoni na, ngokucothayo tsala umoya uphinde uwukhuphe izihlandlo ezintlanu. Loo nto iya kukwenza uzole, ize ikunike ithuba lokucinga.", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "Ungu ngqa phambili!\n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole.", "type": "template", "note": "" }, { - "SourceText": "SHARE how you feel", - "text": "CHAZA indlela ovakalelwa ngayo", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Vala amehlo akho. \n\nPhawula indlela onxibelelene ngayo kunye nomhlaba ongaphantsi kwakho.  \nNgawaphi amalungu omzimba wakho achukumisa umhlaba? Ngawaphi angawuchukumisiyo?   \nPhawula apho kufudumele khona nalapho kubanda khona.  \nYiva umhlaba ongaphantsi kwakho nokuxhasayo. Vumela umzimba wakho wehle ukuze uxhaswe ngumhlaba.", "type": "template", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Inzima le nto. Uninzi lwethu lufundiswe ukuba lungakhali, okanye lubonise abantwana indlela esivakalelwa ngayo. Kodwa thatha umoya uze ngokuzolileyo ubachazele indlela ovakalelwa ngayo. Baya kuqonda bhetele, baze bafunde kuwe indlela yokuhlangabezana noxinezeleko.", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Zama ukwenza le nto xa usenza izinto ezingabalulekanga ezifana nokuhlamba izitya. Kungakunceda kakhulu!", "type": "template", "note": "" }, { - "SourceText": "SHOW them you care", - "text": "BABONISE ukuba uyakhathala", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Hlala phantsi uze uvale amehlo akho.\nZingaphi izandi ozivayo? \nMamela izandi ezingaphakathi nangaphandle kwegumbi. Zibale usebenzisa iminwe yakho. \nEmva kwemizuzwana elishumi, mingaphi iminwe oyibambileyo? Uve izandi ezingaphi? \n\nZama kwakhona kangangemizuzwana elishumi. \nNgaba uve izandi ezintsha? Zikhona izandi ozivileyo ngaphakathi komzimba wakho? \nPhawula indlela ovakalelwa ngayo ngoku.", "type": "template", "note": "" }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Inzima nale! Uxinezeleko lubangela ukuba sinikele ingqalelo kwiziqu zethu. Kodwa abantwana bethu abafikisayo bayayidinga inkxaso yethu. Babuze indlela abaziva ngayo. Baphulaphule uze ubathuthuzele. Zama ukubawola okanye uthi ‘Ndiyaqonda’. Ingatshintsha yonke into.", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Vala amehlo akho. \n\nNgaba uva into ngamandla kangangokuba ufuna ukuyibaleka? \n\nEndaweni yokubhekela kuloo mvakalelo, makhe sisondele kuyo okomzuzwana. \nKulungile. Vala amehlo akho ukuba uziva ukhululekile. Tsala umoya kakhulu. \n\nFuna ukwazi. Uva ndawoni emzimbeni wakho? Ngaba kushushu okanye kuyabanda? Kuqinile okanye kuthambile? Kubambekile okanye Kukhululekile? \nZibuze imibuzo. Indixelela ntoni? Ifuna ntoni? Ndingazibonisa njani ububele ngoku?", "type": "template", "note": "" }, { - "SourceText": "SEEK the positive", - "text": "KHANGELA izinto ezakhayo", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Nantsi into emnandi enokukunceda uyeke ukuba noxinezeleko:  \n\nKhetha ingoma ebonisa into oyifunayo ngoku. Ngaba ufuna ingoma ezolileyo ukuze ipholise umphefumlo wakho odiniweyo okanye ingoma edlamkileyo ukuze ikwenze ukhuphe uxinezeleko lwakho?  \n\nShenxisa izinto ukuze kubekho indawo yokujuxuzela umculo. Ungalibali ukuphefumla xa ushukuma. Ukuphefumla kunye nokushukuma kwakho makuhambelane.", "type": "template", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "Ngaba wena nomntwana wakho ofikisayo ningacinga ngezinto ezinokuba luncedo? Ngaba nobabini ningenza okuthile okwakhayo ukuze nisuse iingqondo zenu kuxinezeleko?", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Nkqu nemizuzwana embalwa yokushukuma inganela ukuba ukhuphe uxinezeleko uze uzive ngcono!", "type": "template", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "Ukuba yonke loo nto iyasilela, phefumla. Ungakwenza oku.", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Vala amehlo akho. \nThatha ithuba ukuze uve umhlaba ongaphantsi kweenyawo zakho. \nCinga ngento oziva unombulelo ngayo.\nNikela ingqalelo kwindlela ophefumla ngayo.\nTsala uze ukhuphe umoya.\n\nWutsale uze uwukhuphe.", "type": "template", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Kukho amaqheliselo amabini asekhaya kule veki.", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Molo! Uziva njani ngoku? Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala?\n\nPhawula ukuba uyiva ndawoni emzimbeni wakho. Phawula iingcinga ezihambelana naloo mvakalelo. Tsala umoya kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe kahlanu ngaphambi kokuba usabele. \n\nYaye xa nobabini nizolile, chazela umntwana wakho ofikisayo indlela oziva ngayo.", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Zibulele ngokuthatha ixesha lokuva iimvakalelo kunye nokwazi iingcinga zakho!", "type": "template", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Ncokolani “ngoxolelo lokhuseleko” nomntwana wakho ofikisayo, yaye nobabini cingani ngemeko apho ninokuyisebenzisa khona lento.", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "Masiziqhelanise necebiso esiza kulibiza, “Amandla Onqumamo”. \n\nBeka iinyawo zakho emhlabeni uze uphefumlele ngaphakathi nangaphandle kathathu ibe ucotha kangangoko unako. Yiba nombono unukisa intyatyambo okanye uvuthela ikhandlela. \n\nNantso ke! Amandla Onqumamo!", "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Sihlandlo ngasinye unqumama ngaphambi kokuphendula, okanye nanini na usenza into ukuze ukhusele umntwana wakho ofikisayo, cofa i @global.parent_points uze ubhiyozele impumelelo yakho!", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Eli licebiso elihle onokulisebenzisa xa uziva ucaphuka kuba lingakunceda uzole.", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "Ulugqibile uqeqesho lwale veki.\n\nKule veki izayo siza kuthetha ngemali - uya kudinga:\n* iphepha/ikhadbhodi\n* ipen\n* amatye amancinci angama-20/iimbotyi/iinkozo\n\nkuya kuba mnandi!", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Ukuzincoma kungaluncedo kakhulu, ingakumbi ngeentsuku ekunzima ngazo. \n\nCinga ngeveki yakho uze ugqibezele esi sivakalisi: “Kule veki, ndiyazingca ngokuba...” Ingayiyo nantoni na emalunga nokuba ngumzali!\n\nCinga ngento enye oyenze kakuhle namhlanje. Ngoku, thatha iingalo zakho uze UZANGE!", "type": "template", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Kuhle kuba namhlanje izinto zihamba kakuhle! Yintoni into enye ehambe kakuhle namhlanje? Khumbula ukuzincoma ngaloo nto.", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Hlala ngokukhululekileyo uze uvale amehlo akho. \n\nQonda ukuba kwenzeka ntoni kuwe ngeli thuba. Ucinga ntoni? Ngaba iingcinga zakho ziyakhuthaza okanye ziyadakumbisa. Uvakalelwa njani? Uvakalelwa kamnandi okanye kakubi? Uvakalelwa njani umzimba wakho? Ngaba uziva uwubambile umzimba okanye upholile?\n\nNxibelelana nentlziyo yakho ngendlela enobubele. Usenokufuna ukubeka isandla sakho phezu kwentliziyo okanye kwesifuba sakho. Zixelele la mazwi ngaphakathi:\n\nKwanga ndinganoxolo.\nKwanga ndingakhuseleka.\nKwanga ndingasempilweni.\nKwanga ndingonwaba.\nKwanga kungakho uthando kwintsapho yam.\nKwanga ndingaziva ndithandwa.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Uxolo ngokuva ukuba uxakanisekile namhlanje. Wenze kakuhle ngokuphawula ezo mvakalelo, nokuzama ukuzola uze uzicingele. Umisela umzelelo obalaseleyo kwintsapho yakho.", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Thatha ithutyana ukuze ucinge ngamava akho. Phawula ukuba uziva ngendlela eyahlukileyo.", "type": "template", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Neyona nto incinci oyenzayo ibalulekile. Siyathemba ukuba uyazidla ngesiqu sakho nawe.", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Inyathelo 1. Vala amehlo akho uze utsale umoya kakhulu. \n\nInyathelo 2. Khawuzibuze, “Ndicinga ngantoni?” Phawula enoba iingcinga zakho ziyakhuthaza okanye ziyadakumbisa.\nPhawula ukuba uziva njani ngokweemvakalelo. Phawula enoba iimvakalelo zakho zintle okanye azintlanga. Zikhumbuze ukuba enoba uvakalelwa njani, kulungile oko.\nPhawula indlela ovakalelwa ngayo umzimba wakho. Phawula ukuba kukho indawo ebuhlungu okanye eqinileyo.\n\nInyathelo 3. Nikela ingqalelo kwindlela ophefumla ngayo. Yiva umphefumlo wakho njenjoko ungena uze uphume. Unokubeka isandla esiswini sakho uze usive sinyuka size sehle njengoko uphefumla. Kwenze oku njengoko uphefumla kali-10.\n\nInyathelo 4. Yandisa ukwazi umzimba wakho wonke. Mamela izandi zegumbi. \n\nInyathelo 5. Thatha ithutyana ukuze unikele ingqalelo enoba uzive ngendlela eyahlukileyo na. Xa sele ukulungele, vula amehlo akho.", "type": "template", "note": "" }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Zonke iintsapho ziba neengxaki. Xa silungiselela kunye yaye sisazi ukuba masilufumane phi uncedo NGAPHAMBI kokuba kwenzeke into embi, singoyisa nayiphi na ingxaki.", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "Usebenzile Ngokuthatha Unqumamo. Ungakwenza oku nanini na uziva uxinezelekile. Kukunika ithuba lokuba uzole nangakumbi. Nokuba kukutsala umoya kakhulu izihlandlo ezimbalwa okanye kukunxibelelana nomhlaba ongaphantsi kwakho, oko kwenza umahluko. Unako nokuThatha Unqumamo kunye Nabantwana bakho!", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Molweni, kuni nonke.\n\nNamhlanje siza kuncokola ngeengxaki.\n\nIingxaki zingavela naphi na. Iingxaki zingavela nanini na. Ngenxa yoko, kubalulekile ukuba njengentsapho nibe nezicwangciso ukuba naliphi na ilungu lentsapho lizibona lisengxakini. \n\nKubalulekile ukuba nezicwangciso ukuze ilungu ngalinye lintsapho lizive likhuselekile. \n\nXa sijongene neengxaki, khumbula ukuthi khebevu kancinci, uphefumle, uze uhlale uzolile. Oko kuya kukunceda ujongane bhetele neengxaki.", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Hlalani phantsi, valani amehlo enu nize nimamele indlela eniphefumla ngayo njengoko nitsala nize nikhuphe umoya. \n\nPhawula indlela ovakalelwa ngayo. \n\nXa sele ukulungele, phinda uvule amehlo akho.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nengxubusho\n* Ibali nengxubusho\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Kuzameni oko nanini na niziva nixinezelekile kwaye nifuna ikhefu ukuze niphinde ninxibelelane neziqu zenu.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nokucamngca\n* Ibali nokucamngca\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Yima uze wolule iingalo zakho ziye phezulu. Tyhala nawaphi na amafu uze uvumele ilanga libe phezu kwakho. Yolula amacala akho omabini. Zolule ngaphambili nangasemva.\n\nBeka izandla zakho emacaleni. Nyusa amagxa kancinci aye ngasezindlebeni njengoko uphefumla, nciphisa amehlo akho uze ubambe umoya wakho. Yeka amagxa akho njengoko umzimba wakho uphola.\n\nYekelela iingalo zakho uze izibeke ecaleni kwaye ujike nomzimba wakho wangasentla. Iingalo zakho mazibethe umqolo wakho kancinci njengeko ujika usiya kwelinye icala.\n\nBeka unyawo phambi kolunye uze wenze izangqa ngamaqatha, ungalibali ukujikeleza kuwo omabini amacala. Unyawo ngalunye malwenze izangqa ezine kwicala ngalinye.\n\nNgoku xhumaxhuma ngokukhawuleza kangoko unako. Xhumela phezulu! Goba uye ezantsi! Zivocavoce ujikelezisa isinqe!\n\nVala amehlo akho uze uphakamise iingalo zakho ucotha ziye entla kwentloko yakho njengoko utsala umoya. Thoba iingalo zakho ngokucotha zize zibe secaleni njengoko ukhupha umoya.\n\nThatha ithutyana ukuze ucinge ngamava akho.", "type": "template", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "Ingxaki ingehlela nabani na. \n\nMakhe sibone oko kwenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" - }, - { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: \"Torho sthandwa, ubonakala ukhathazeke nyhani, uyafuna ukundibalisela ukuba kwenzeke ntoni?\"", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "Usebenzile! Ungayenza le nto nanini na uziva ngathi ufuna ukukhupha uxinezeleko uze wenze ingqondo kunye nomzimba wakho zidlamke.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: \"Ngumalume, u… u… undibambile.\" \n\n@global.w_crisis_female_caregiver (ecinga): \"Khawuthath’ umoya... Ufuna ntoni umntanam? Ufuna ndizole ndize ndiphulaphule\" \n\n@global.w_crisis_female_caregiver: \"Yizokuhlala apha ecaleni kwam. Thath’ ixesha lakho, ndiphulaphule.”", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Yenze uluhlu lwezinto ezisempilweni othanda ukuzenza. Nanga amanye amacebiso:\n* Ukumamela ingoma oyithandayo\n* Ukuhambahamba (ukuba kuvumelekile)\n* Ukujima\n* Ukusela ikomityi yeti uwedwa\n* Ukufowunela itshomi yakho\n* Ukucula, ukudanisa, ukuthandaza okanye ukufunda\n* Ukuhlala elangeni uvale amehlo\n* Ukubukela inkqubo oyithandayo ekwi-T.V.\n\nKhetha ibe nye namhlanje!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: \"Yinyani, u… u… the mandiyenze! Uthe mandilale naye! Bendingafuni, ndiyafunga, ndide ndathi HAYI, kodwa uthe ndiza kuba sengxakini.\"\n\n@global.w_crisis_female_caregiver: Enkosi ngokundichazela le nto. Awukho sengxakini. Asilotyala lakho eli.”", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "Xa uzinyamekela, unyamekela abantwana bakho. Sonke kufuneka sinxibelelane. Zama ukuthetha nezihlobo, intsapho kunye nangeenethiweki ezaziwayo yonke imihla. Ukuba sekulithuba ugqibele ukufowunela umntu, kwenze ngoku oko!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: \"Izolo xa ubuyokubona @global.w_crisis_adult_friend. Ufikile nje yaye yenzeke ngelo xesha le nto.\"\n\n@global.w_crisis_female_caregiver: \"Kulungile, ndiyakukholelwa mntana. Inkulu le nto yaye siza kufumana indlela yokufumana uncedo esiludingayo. Singaya phi ukuze sifumane uncedo?\"\n\n@global.w_crisis_teen_girl_1: \"Esikolweni sam?\"", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Cinga ngento ekwenza ube nomsindo. Kwenzeka xa kutheni oku? Udla ngokusabela njani?\n\nThintela ukuba nomsindo kwasekuqaleni. Lala okanye uphumle xa udiniwe. Zama ukutya xa ulambile. Cela umntu akuxhase xa uziva ngathi uwedwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: \"Yha, masiye siye ekliniki. Baza kuyazi ukuba masenze ntoni ukuze uncedakale. Ngaba ivakala ilungile loo nto kuwe?\n\n@global.w_crisis_teen_girl_1: \"Ewe… Ilungile… Kodwa ungahamba nam?\"", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Ukulawula umsindo kunganzima. Thatha ikhefu xa uziva usiba nomsindo ngakubantwana bakho okanye omnye umntu.\n\nYiya kwenye indawo kangangemizuzu emi-5 uze ukwazi ukulawula iimvakalelo zakho. Ukuba kukhuselekile phandle, yiya khona. Uza kudlula kule nto!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: \"Nakanjani ndiza kuhamba nawe. Yaye @global.w_crisis_teen_girl_1? Khumbula ayilotyala lakho eli.” Ndiyakuthanda. Ungumntu olungileyo. Siza kudlula kule nto.”", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Vala amehlo akho. \n\nMasisebenzise amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole. \n\nChaza izandi ezintathu ozivayo ngoku. \nChaza amavumba amathathu owevayo ngoku. \nChaza izidlo ezithathu ozithanda kakhulu. \n\nZeziphi izinto ezintathu onombulelo ngazo ngoku? Akunyanzelekanga ibe zizinto ezinkulu.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Le ibiyimeko enzima ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver! Oku kunokwenzeka emakhwenkweni nasemantombazaneni.", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "Emva kosuku olunzima, ukucinga ezi zinto zintathu esinombulelo ngazo kungasinceda sibe nesibindi sokuzama kwakhona ngomso.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "Usebenzise buphi ubuchule u @global.w_crisis_female_caregiver?", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Vala amehlo akho uze ucinge ngosuku olulandelayo. \n\nChaza into e-1 onombulelo ngayo. \nChaza into e-1 oyenze kakuhle. \nChaza into e-1 oyithandayo.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "Ewe, @global.w_crisis_female_caregiver enyanisweni usebenzise bonke obo buchule – yaye nawe ungayenza loo nto!", + "SourceText": "Well done, you are a hero!", + "text": "Usebenzile, uliqhawe!", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "Enye ingxaki ekhathaza abazali abaninzi lugonyamelo nolwaphulo-mthetho. Makhe sijonge kunye umzekelo.", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Vala amehlo akho. \n\nSebenzisa amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole.\n\nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3. \nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3.", "type": "template", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ukhangeleka ukhathazekile ukususela izolo. Yintoni ingxaki?”", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "Ngaba uziva ngendlela eyahlukileyo? Ukutsala umoya kunceda wonke umzimba kunye nengqondo yethu ukuba zizole. \n\nUngu ngqa phambili!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: \"Izolo mna neetshomi zam siye kumdlalo webhola ekhatywayo. Abanye abafana abebenxilile baye baqalisa ukulwa nomhlobo wam.\"\n\n@global.w_crisis_male_caregiver_1: \"Qhubeka, ndiphulaphule. Ndiyathemba awukhange ulwe?\"", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Vala amehlo akho.\n\nMamela njengoko utsala uze ukhuphe umoya kahlanu.\n\nPhawula indlela ovakalelwa ngayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: \"Bendingafuni, kodwa bendingenakubukela nje ndibavumele babethe umhlobo wam, ngoko…\"\n\n@global.w_crisis_male_caregiver_1: \"Ngoko, ulwile ukuze ukhusele umhlobo wakho?\"", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Xa sele ukulungele, phinda uvule amehlo akho. Nguwe olawulayo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Wonke umntu ebesilwa. Ndibone umntu ebaleni kububutyadidi ligazi. Ebekhangeleka … eswelekile.\"", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Vala amehlo akho. \n\nThatha umzuzu ucinge ngosuku lwakho.\n\nCinga ngento ekhuthazayo okanye emnandi oye wayenza.\nZincome ngokwenza into enye kakuhle namhlanje. \nCinga ngento enye onokuyenza ngendlela eyahlukileyo ngomso.  \nCinga ngento enye onombulelo ngayo.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: \"Ndiyavuya ngokundixelela ngale nto, @global.w_crisis_teen_boy_1. Ngoku masihlale kunye phantsi size sincokole ngokuba simele sifake amapolisa okanye omnye umntu oza kusinceda.”", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Vala amehlo akho. \n\nNgaba abantwana bakho bakhe bakwenze ngathi ufuna ukukrasa? \n\nZinike unqumamo lwemizuzwana eli-10. Tsala uze ukhuphe umoya ucotha amatyeli ama-5. \n\nEmva koko zama ukusabela uzolile.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: \"Enkosi, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Siza kudlula kule nto. Khumbula, siya kukuxhasa njengentsapho.”", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Izigidi zabazali zithi oku kuyanceda - KAKHULU.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "Le ibiyimeko enzima ku @global.w_crisis_teen_boy_1 no @global.w_crisis_male_caregiver_1!", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Vala amehlo akho. \n\nThatha umzuzu uze uyeke into oyenzayo ukuze unxibelelane nokuphefumla kwakho.   \n\nYeyiphi into enye onombulelo ngayo ngoku?  \nYeyiphi into enye ekwenza wonwabe?  \nYeyiphi into enye oyithandayo?  \n\nAkunyanzelekanga ibe zizinto ezinkulu. Ngamanye amaxesha izinto ezincinci ebomini zezona zibaluleke kakhulu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "Usebenzise buphi ubuchule u @global.w_crisis_male_caregiver_1?", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Nantsi into yokwenza umzimba wakho uphole:  \n\nHlala ngokukhululekileyo uze uvale amehlo akho ukuba unako.  \nYiba nombono weringi yegolide iskena umzimba wakho wonke, ukusuka ezinyaweni zakho ukuya entloko.   \nNikela ingqalelo njengoko isehla inyuka kumzimba wakho. Ngaba zikhona indawo ezingathi ziqinile? Zindindisholo? Zibuhlungu?   \nNikela ingqalelo kwezo ndawo okomzuzwana. Tsalela umoya kuloo ndawa uze xa uphefumla, uzame ukukhupha nayiphi intlungu okanye ukuqinia.   \nKwenze oku ngokuphefumla kambalwa.   \n\nVula amehlo akho. Uvakalelwa njani ngoku umzimba wakho?", "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Bonke obu bubuchule bunokunceda xa kukho ingxaki.", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "Xa ungqengqe ebhedini yakho ibe ubuthongo bungehli, ungayizama le nto!", "type": "template", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Ingxaki inokusenza sizive sinomsindo okanye singenamncedi. Kodwa eli lithuba abantwana bethu abafikisayo abadinga ukuba siphefumle, siphulaphule size sicinge.", + "SourceText": "Start", + "text": "Qala", "type": "template", "note": "" }, { - "SourceText": "BREATHE", - "text": "PHEFUMLA", + "SourceText": "Add this activity to @global.my_activities", + "text": "Yongeza lo msebenzi kwi-@global.my_activities", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Hlala uzolile. Zibuze ukuba ‘umntwana wam ofikisayo udinga ntoni ngoku’", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "Ixhaswa yi-Parenting for Lifelong Health kunye namaqabane ayo", "type": "template", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Mxelele ukuba ukunye nabo yaye uyabathanda.", + "SourceText": "Ideas from other families:", + "text": "Amacebiso avela kwezinye iintsapho:", "type": "template", "note": "" }, { - "SourceText": "THINK", - "text": "CINGA", + "SourceText": "Customise @global.parent_app", + "text": "Tshintsha i-@global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Thetha nomntwana wakho ofikisayo. Yintoni enokunceda le meko? Kusenokufuneka wenze izicwangciso ezingxamisekileyo ngoku, uze wenze izicwangciso zexesha elide kamva.", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "Ungazingca ngesiqu sakho ngokukhangela iindlela zokufumana uncedo!", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha, kwaye ukuqhubeka sisebenzisa i-@global.parent_app linyathelo elihle lokunceda wena nosapho lwakho!\n\nIzinto zethu zincede amawaka abazali kunye neentsapho zaye ziyeka ukuba noxinezeleko kwaye zaba nexesha elimnadi kunye. Silapha ukuze sikuxhase.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Kuluncedo ukuqhelisela ukuhlangabezana nengxaki ngaphambi kokuba yenzeke. \n\nKhawujonge ezi zihlandlo zihlanu zeengxaki zentsapho. Khawuzibone ungumzali. Ubungenza ntoni?\n\nKhumbula: PHEFUMLA - PHULAPHULA - CINGA", + "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", + "text": "Oku kuxhalabisa bonke abazali nokuba baphi. Khumbula ukusebenzisa izakhono zakho ezintsha ukuze uqhubeke nokwakha unxibelelwano oluhle nomntwana wakho ofikisayo. \n\nUngaphinda ujonge iingcebiso ezingundoqo ekucebeni ukhuseleko lomntwana wakho kwi @global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Ingxaki 1: @global.w_crisis_teen_boy_2 imilo yasesikolweni", + "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", + "text": "Kuhle. Ukuba kuye kwavela naluphi na uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho kwixesha elizayo, ungaphinda ujonge i@data.workshop.w_money.in_text_title okanye i@data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: \"Andizange ndiyenze le nto ngaphambili. Yaye ngoku baza kundigxotha\"", + "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", + "text": "Uxinezeleko ngemali lungabangela usindeke kakhulu. \n\nNanini na kuvela uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho, unokufumana iingcebiso kwi @data.workshop.w_money.in_text_title okanye phantsi kwe @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Ingxaki 2: @global.w_crisis_teen_girl_1 uyakhulelwa", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Khumbula ukuba unokufikelela kwiingcebiso ezininzi eziluncedo kunye nezinto onokuzisebenzisa kwi @global.parent_centre - oku ungakufumana nanini na!", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ndineentloni ezingathethekiyo. Andazi ukuba mandenze ntoni\"", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", + "text": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKhumbula, unokufumana inkxaso engakumbi malunga noku @data.workshop.w_safe.in_text_title nanini na uyidinga!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Ingxaki 3: @global.w_crisis_teen_boy_2 umithisa intombazana", + "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", + "text": "Siyayiqonda ukuba inzima le nto. Ungajonga ezinye iingcebiso eziluncedo ngendlela onokuchitha ngayo ixesha kunye nomntwana wakho ofikisayo @data.parent_centre.my_tips.location_text okanye ungaphinda ujonge i@data.workshop.w_1on1.in_text_title.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Andifuni ukuba nomntwana\"", + "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", + "text": "Wenze kakuhle ngokubeka isiseko esihle kangaka! Ungaphinda ujonge i@data.workshop.w_1on1.in_text_title nanini na ukuze ufumane iingcamango zendlela yokuchitha ixesha kunye.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "Ungasabela njani ku @global.w_crisis_teen_boy_2?", + "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", + "text": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Ungaphinda ujonge indlela onokukusebenzisa ngayo ukuncoma phantsi ko@data.parent_centre.my_tips.location_text.\n\nUkufumana amanye amacebiso angakumbi ngendlela yokusisebenzisa kakuhle esi sakhono, unokuphinda ujonge kwi @data.workshop.w_praise.in_text_title.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Ingxaki 4: Kugula umntu entsatsheni", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", + "text": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. \n\nUngaphinda ujonge kwakhona kwi@data.workshop.w_praise.in_text_title ukufumana ezinye iingcebiso ezingakumbi zendlela yokusisebenzisa kakuhle esi sakhono.", "type": "template", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "\"Uvavanyo lufumanise ukuba ndine-HIV. Ndiyoyika ndiza kufa”", + "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "type": "template", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "Ungasabela njani kule meko?", + "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "type": "template", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Ingxaki 5: @global.w_crisis_teen_girl_1 unyanzelwa lisoka lakhe ukuba alale nalo", + "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: \"Enyanisweni bendingafuni. Ngoku ndiza kumitha okanye ndigule. @global.w_crisis_female_caregiver, Ndoyika kakhulu...\"", + "SourceText": "Customise for your needs", + "text": "Tshintsha ngenxa yeemfuno zakho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "Ungasabela njani ku @global.w_crisis_teen_girl_1?", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Wonke umzali osehlabathini uyasokola ngala maxesha obunzima. Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sikunike inkxaso oyifunayo.\n\nNyaniseka. Khumbula ukuba awukho wedwa! Izigidi zabazali zivakalelwa ngale ndlela uvakalelwa ngayo kwaye sonke sifanelwe yinkxaso.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Khumbulani ukuxhasna nokukhuthazana. Kunzima ukuhlala uzolile nokuphulaphulana xa kukho ingxaki - siyazidla ngawe.", + "SourceText": "Thank you for being honest", + "text": "Enkosi ngokunyaniseka", "type": "template", "note": "" }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "Ukunye nomntwana wakho ofikisayo khetha enye yezi meko (okanye ucinge ibe nye ngokwakho) Jongani oopopayi nize nincokole ngoko niya kukwenza kunye ukuba oku kuye kwenzeka kumhlobo okanye kwintsapho yakho. \n\nYaye khumbula: PHEFUMLA - PHULAPHULA - CINGA", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Kuhle ukubona ukuba uyazola xa umntwana wakho ofikisayo esenza into ecaphukisayo. Ininzi into abanokuyifunda kuwe!", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela nina nonke, luze lunincede nicebele ikamva. \n\nKutheni ningakhe nicebe ukutya kwetheko kunye,nize nilungise umculo ukuba uyathanda ukudanisa!", + "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", + "text": "Kwakuhle ukubona ukuba uyakwazi oko kwenziwa ngumntwana wakho ofikisayo. Ukuba ngumzali kunzima, kodwa uyaphumelela ngokwenene koku ukuze ubagcine bekhuselekile.", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela wena, yaye unokukhetha inkxaso oyifunayo ukubheka phambili. \n\nUngalungiselela isidlo esimnandi ukuze ubhiyoze - into othanda ukuyitya, okanye umculo othanda ukuwuphulaphula!", + "SourceText": "You selected \"I would rather not answer\"", + "text": "Ukhethe \"Ndikhetha ukungaphenduli\"", "type": "template", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Ukuzikhathalela sisixhobo esiphambili sokuba ngumzali.", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Kulungile!\n\nKhumbula, ukuba uyakhetha ukunikeza impendulo yakho izokugcinwa bucala kwaye izokusinceda ekukuboneleleni umxholo olungele wena kanye.", "type": "template", "note": "" }, { - "SourceText": "How are you feeling today?", - "text": "Uziva njani namhlanje?", + "SourceText": "Are there adults in your family?", + "text": "Ngaba bakhona abantu abadala kusapho lwakho?", "type": "template", "note": "" }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Kuyavuyisa ukuva ukuba uziva kamnandi namhlanje. Uyamangalisa!", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "Le app ijolise kubazali babantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo!", "type": "template", - "note": "" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Uxolo ngokuba iimeko zinzima kanye ngoku. Tsala umoya uze uzazi ukuba uyaxatyiswa.", + "SourceText": "Are there teens in your family?", + "text": "Ngaba kukho abantwana abafikisayo kusapho lwakho?", "type": "template", "note": "" }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "Unganceda umntwana wakho ofikisayo ayiqonde ukuba kukho imiphumo xa engayithobeli imithetho yekhaya. \n\nKodwa INDLELA okwenza ngayo oku ibalulekile. \n\nUkunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole...", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "Le app ijolise kwiintsapho ezinabantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo kusapho lwakho!", "type": "template", - "note": "" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukunika umphumo uzolile.\n\nKubalulekile ukuba sibabandakanye abantwana bethu abafikisayo xa siza kusebenzisa imiphumo, kodwa kukwabaluleke nangakumbi ukuzola xa sibanika umphumo.\n\nOku kuza kusinceda sinike abantwana bethu umphumo sizolile kwaye bona baza kuyikhumbula lula xa bebandakanyekile ibe loo nto iza kwenza bathathe uxanduva.", + "SourceText": "Are you sure you want to skip this question?", + "text": "Uqinisekile ufuna ukuwutsiba lo mbuzo?", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "Uqinisekile ukuba ufuna ukuwudlula lo mbuzo? Khumbula, impedulo yakho izokugcinwa bucala kwaye izosinceda siqonde iimfuno zobuzali bakho. \n\nUngakwazi ukukhetha ukungaphenduli noba ngowuphi umbuzo ngokukhetha isangqa.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", + "text": "Usebenzile. Inzululwazi yengqondo ibonisa ukuba ukulawula umsindo wakho kuphucula ukukhula kwengqondo yomntwana wakho. Zingce.", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "Makhe sifunde ngokoko kwenzeke nge @global.w_consequence_teen_boy_1 ne @global.w_consequence_male_caregiver:", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", + "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nSiza kufunda malunga nokulawula uxinezeleko kwiveki @data.workshop.w_stress.number ye @global.weekly_workshops, kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe @data.parent_centre.my_tips.location_text ukuze uqalise.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku? Ufike emva kwexesha!", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha kwaye ukusebenzisa i-@global.parent_app linyathelo elihle lokukunceda kunye nentsapho yakho!\n\nIzixhobo zethu zincede amawaka abazali kunye neentsapho zancipha ekubeni noxinezeleko kwaye zaba nexesha elimnandi kunye. Silapha ukuze sikuxhase.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala”. \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", + "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", + "text": "Oku kuxhalabisa bonke abazali nokuba baphi. Siza kuqinisekisa ukuba ufumana inkxaso malunga nokwakha uxibelelwano. \n\nSiza kuthetha ngakumbi malunga nokuceba ukhuseleko lomntwana wakho ofikisayo kwi-@global.weekly_workshops, kodwa phantsi kwe-@data.parent_centre.my_tips.location_text unokufikelela kumacebiso abalaseleyo aphambili ukuze ugcine umntwana wakho ofikisayo ekhuselekile!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awuwuthobeli umthetho walapha! Ndiza kukubetha”", + "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", + "text": "Kuhle. Sinoqeqesho malunga nokwenza ibhajethi yosapho enokunceda kuxinezeleko lwemali ngokubanzi ngakumbi kuze kunciphise iingxabano ezinxulumene nemali.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Undidlel’ indlala! Awundimameli!! Ndiyakucaphukela!”", + "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", + "text": "Uxinezeleko lwemali lungabangela usindeke kakhulu. \n\nSinoqeqesho malunga nebhajethi yosapho kwiiveki ezintlanu, kodwa ungafikelela kwezinye iingcebiso zokubhajetha kosapho phantsi kwe@data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Ncokolani kunye: \n* Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Ikhontenti evulwa yile mibuzo uyafumaneka ngoku phantsi kwe@data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "Ukuza nemiphumo ngolu hlobo akuzange kusebenze kakuhle ngenxa yokuba...", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", + "text": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKwi-@global.weekly_workshops ezizayo siza kuba nenkxaso engakumbi, ukuba ungathanda ukwazi okungakumbi!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver bendinomsindo", + "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", + "text": "Siyayiqonda ukuba inzima le nto. Siye songeza amacebiso aluncedo angendlela onokuchitha ngalo ixesha nomntwana wakho ofikisayo kwi@data.parent_centre.my_tips.location_text, ngoko ungawafikelela ngoku. \n\nNgenxa yokuba i-@data.workshop.w_1on1.title isisiseko sazo zonke izixhobo zokuba ngumzali, iza kuba yi-@global.weekly_workshop oza kuyifumana kwiveki ezayo!", "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver andizange ndivumele @global.w_consequence_teen_boy_1 acacise", + "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", + "text": "Usebenzile! I-@global.weekly_workshop elandelayo iza kukunika amacebiso ngale nto, njengesiseko sazo zonke ezinye izixhobo zokuba ngumzali. Kodwa sele unesiqalo esihle!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Imiphumo ayizange incokolwe kwangaphambili no- @global.w_consequence_teen_boy_1", + "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", + "text": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Kwi-@data.parent_centre.my_tips.location_text siye safaka izixhobo ezibalulekileyo ngendlela onokuncoma ngayo ukuze ukhawuleze uzifikelele.\n\nKwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "The consequence was too strong", - "text": "Umphumo ubungqongqo kakhulu", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", + "text": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. Kwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", "type": "template", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", + "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "type": "template", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "Ewe, intsabelo erhabaxa ngolo hlobo yenze wonke umntu wanomsindo kakhulu waza wacaphuka.", + "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", "type": "template", "note": "" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Abantwana abafikisayo bayathanda ukwaphula imigaqo. Ukukhula lixesha elinzima xa bezifunda ukuba bangoobani. \n\nNgethamsanqa, zikhona iindlela zokohlwaya umntwana wakho ofikisayo ngaphandle kokuba nomsindo okanye ukusebenzisa ubundlobongela… yaye zisebenza kakuhle!\n\nUkuza nemiphumo ezolileyo kunceda ekufundiseni abantwana bethu ukuba bazithwalele uxanduva ngezinto abazenzayo – enoba zintle okanye zimbi. \n\nNantsi eminye imizekelo - khawuzibone ungumzali:", + "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", + "text": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nSiza kufunda ngakumbi ngokulawula uxinezelelo kwiveki @data.workshop.w_stress.numberye-@global.weekly_workshops - kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe@data.parent_centre.my_tips.location_text ukuze uqalise!", + "type": "template", + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + }, + { + "SourceText": "Talk Together", + "text": "Thethani nonke", "type": "template", "note": "" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Imiphumo ezolileyo ifanele ibe... \n\nMIHLE NOKO: Ayikho ngqwabalala kakhulu yaye ungayenza \n\nNGOKUKHAWULEZA: Yinikele ngokukhawuleza kangangoko kunokwenzeka \n\nNGOKUQHUBEKAYO: Umphumo ofanayo rhoqo", + "SourceText": "Share ideas, support each other!", + "text": "Yabelanani ngamacebiso, xhasanani!", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.", + "SourceText": "Think Together", + "text": "Masicinge Sonke", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.\n\nNguwuphi umphumo onokunceda apha?", + "SourceText": "It's time to think together!", + "text": "Lixesha lokuba sicinge sonke!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Imiphumo ayifani ncam nesohlwayo inika abantwana bethu abafikisayo ithuba lokufunda ukuzithwalela uxanduva ngezenzo zabo.\n\nYaye balawuleka ngakumbi YAYE isebenza ngakumbi kunokubetha okanye ukubakhwaza!", + "SourceText": "Think", + "text": "Cinga", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.", + "SourceText": "It's time to think!", + "text": "Lixesha lokucinga!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.\n\nNguwuphi umphumo onokunceda apha?", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Nazi izakhono eziphambili kule veki! \n\nZisebenzise xa usekhaya kwaye ungazifumana nanini na kwi-@global.parent_centre yakho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Imiphumo iphumelela ngakumbi ukuba uxubusha uze uvumelane kusengaphambili nabantwana abafikisayo ngaphambi kokuba uyisebenzise.\n\nYaye: imiphumo ayikho mibi yonke… kanti ningavumelana ngemiphumo yezenzo EZINTLE ukuze ubone isimilo esichubekileyo!", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Thatha umoya onzulu.\n2. Jonga ukuba iindaba ziyavakala.\n3. Buza ukuba bazifumana phi iindaba.\n4. Jonga kwakhona nabanye abantu/imithombo oyithembileyo.\n5. Cinga ukuba ezi ndaba zinganceda okanye zoyikise abantu kuphela xa usabelana ngazo.", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Sonke ngamanye amaxesha sifuna ukuxelela abantwana bethu \"Kufuneka wenze oku, okanye kungenjalo… inkathazo!\", kodwa oko akwenzi ukuba balandele imithetho ngcono.\n\nKunoko, unokunceda umntwana wakho enze ukhetho olufanelekileyo ngokubonisa ukuba uyamthemba nokuthetha nabo:", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "What consequence would help here?", - "text": "Nguwuphi umphumo onokunceda apha?", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "XOXA NGEZIPHUMO", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.\n\nNguwuphi umphumo onokunceda apha?", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Buza \"Ukuba wenza oku, kuya kwenzeka ntoni?\"", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Indlela oqala ngayo imiphumo ezolileyo ibalulekile. Khumbula, xa ubandakanya umntwana wakho ofikisayo, izinto ziba bhetele!", + "SourceText": "If something goes well, praise your teen!", + "text": "Ukuba into ihamba kakuhle, ncoma umntwana wakho!", "type": "template", "note": "" }, { - "SourceText": "EXPLAIN", - "text": "CACISA", + "SourceText": "REFLECT TOGETHER", + "text": "CINGA KUNYE", "type": "template", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Qiniseka ukuba nobabini nizolile. Tsala umoya izihlandlo ezimbalwa. Mcacisele umntwana wakho ofikisayo isizathu sokuba ukhathazwe sisimilo sakhe.\n\nCacisa isizathu sokuba lo mgaqo ubalulekile. Ungayichaza indlela oziva ngayo - kulungile ukutsho ukuba udanile.", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "Ukuba kukho into engahambi kakuhle, buza \"Ungayenza njani ngokwahlukileyo?\"", "type": "template", "note": "" }, { - "SourceText": "AGREE", - "text": "VUMA", + "SourceText": "START SMALL", + "text": "QALA KANCINCI", "type": "template", "note": "" }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Ceba imiphumo nomntwana wakho ofikisayo yokuwulandela nokungawulandeli umgaqo.\n\nCela ezakhe izimvo. Thethani de nivumelane ngento esengqiqweni.\n\nYenza umphumo WOKUNGAWULANDELI umgaqo nengenelo yaxa eye WAWULANDELA umgaqo.", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Nika umntwana wakho uxanduva oluncinci kuqala. Xa oko kuhamba kakuhle, unokongeza ngakumbi ukubonisa ukuba uyamthemba umntwana wakho.", "type": "template", "note": "" }, { - "SourceText": "ACT", - "text": "YENZA OKUTHILE", + "SourceText": "MAKE TIME", + "text": "YENZA IXESHA", "type": "template", "note": "" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Xa umntwana wakho ofikisayo elandela umgaqo, mncome umnike namalungelo!", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Bekela bucala ixesha lokuncokola ngaphandle kweziphazamiso.", "type": "template", "note": "" }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "Uya kuziva ehlonitshwa yaye exatyiswa. Khumbula: Okukhona sibancoma, kokukhona beya kubonisa isimilo esichubekileyo!", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Buza umntwana wakho imibuzo kwaye ubavumele babelane ngeembono zabo ngaphandle kokuphazamisa.", "type": "template", "note": "" }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Xa umntwana wakho ofikisayo engawulandeli umgaqo, landelela umphumo.", + "SourceText": "WORK TOGETHER", + "text": "SEBENZANI KUNYE", "type": "template", "note": "" }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Xa umntwana wakho esaphula umgaqo, ngokuzolileyo nika umphumo Oku kumele kwenziwe NGOKUSESIKWENI, (kungekhona ngokungqwabalala kakhulu), NGOKUKHAWULEZA (ukwenze ngokungxamisekileyo) NGOKUQHUBEKAYO (ngendlela efanayo rhoqo).", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Thethani ngengxaki ethile, nize nesisombululo kunye, yaye nobabini nenze oko nivumelana ngako.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Ncokolani kunye:\n* Yiyiphi imithetho abantwana bakho abafikisayo abathanda ukuyaphula? \n* Nguwuphi umphumo onokuwusebenzisa kumgaqo ngamnye owaphulayo? \n\nImiphumo ifanele ibe: \nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo) \nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo).\n\nNcomanani nize nikhuthazane – sinokomelezana!", + "SourceText": "PRAISE", + "text": "NCOMA", "type": "template", "note": "" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "Masibuyele ku @global.w_consequence_teen_boy_1 neyakhe i @global.w_consequence_male_caregiver", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Bulela umntwana wakho ofikisayo ngokwabelana kwaye uqaqambise indlela eninceda ngayo nobabini.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: \"Iyandixhalabisa into yokuba usoloko ubuya emva kwexesha endlini, @global.w_consequence_teen_boy_1. Singenza ntoni ukukunceda ukhumbule ukugoduka kwangexesha?\"\n\n@global.w_consequence_teen_boy_1: \"Ukuba ndigoduka kwangethuba, mhlawumbi ndingashiywa lixesha ngemizuzu engama-30?\"", + "SourceText": "Why @local.workshop_data.title?", + "text": "Kutheni iyi-@local.workshop_data.title?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: YIngcamango entle leyo! Yaye simele senzeni xa ungawuthobeli lo mthetho? \n\n@global.w_consequence_teen_boy_1 uyambombozela): “Mgmluuhm”", + "SourceText": "Hear @global.topic_intro_name's message", + "text": "Yiva umyalezo ka@global.topic_intro_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: \"Yitsho kaloku, ndiyayazi ikhona into oyicingayo.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile…. Kuthekani: Ndimele ndiyokwenza umsebenzi wam wesikolo?”", + "SourceText": "Read @global.topic_intro_name's message", + "text": "Funda umyalezo ka@global.topic_intro_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: \"Umsebenzi wakho wesikolo umele ukuba uwenzile kakade. Ukuba uyawulibala lo mthetho, kusengqiqweni ukuba ungadibani neetshomi zakho ngomso.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile, @global.w_consequence_male_caregiver.\"", + "SourceText": "Today's steps", + "text": "Amanyathelo anamhlanje", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Ngengomso...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku! Selibethile ixesha!”", + "SourceText": "Try it Together", + "text": "Yizameni Kunye", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala” \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", + "SourceText": "Let's practice together.", + "text": "Masiziqhelanise sonke.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kusezinzulwini zobusuku yaye ubuye ekhaya emva kwexesha ebesivumelene ngalo. Noba siyintoni isizathu, umele uqonde ukuba ayamkelekanga loo nto. @global.w_consequence_female_caregiver yaye ndikhathazeke nyhani.”", + "SourceText": "What does that mean?", + "text": "Ithetha ntoni le nto?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: “Abahlobo bam bathe makhe ndihlale ixeshana. Bebesithi ndiyafeketha kuba ndifuna ukugoduka kwangoko.” \n\n@global.w_consequence_male_caregiver: “Ndiyazi kunganzima ukuthi hayi kubahlobo bakho. Masithethe ngakumbi ngale nto kusasa xa siye saphumla.”", + "SourceText": "How can you help?", + "text": "Unganceda njani?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: “Uxolo ngokukukhathaza yaye @global.w_consequence_female_caregiver.“ \n\n@global.w_consequence_male_caregiver: “Enkosi. Hamb’ uyolala ke ngoku, kodwa uze wazi, ukuba ubuye ekhaya sekubethe ixesha ebesivumelene ngalo, awuvumelekanga ukuphuma ngokuhlwa kwangomso.”", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Ukuqonda indlela umntwana wakho avakalelwa ngayo kunye nendlela onokumxhasa ngayo kwenza umahluko omkhulu kuni nobabini! Jonga umntwana wakho kwaye ubuze indlela avakalelwa ngayo. Cofa kubuso obungezantsi ukuze ufumane ngakumbi:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "Masithethe ngeli bali", + "SourceText": "Hopeful", + "text": "Ithemba", "type": "template", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Ukusebenzisa umphumo kusebenze kakuhle kweli tyeli ngenxa yokuba...", + "SourceText": "Resilient", + "text": "Ukunyamezela", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 nowakhe u @global.w_consequence_male_caregiver bancokole ngemiphumo bobabini bezolile", + "SourceText": "Self-esteem", + "text": "Ukuzithemba", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "They agreed on consequences together", - "text": "Bavumelene bobabini ngemiphumo", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Umntwana uneenjongo kunye namaphupha ekamva - kufutshane nakude!", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver usabele ngokuzolileyo kodwa ngokuqinileyo xa u @global.w_consequence_teen_boy_1 ebesophula umgaqo", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Buza umntwana wakho malunga ngeenjongo kunye namaphupha akhe, bakhuthaze ukuba bacinge oko bakufuna kwikamva labo, kwaye benze isicwangciso kunye ukuze basebenze ekuwafezekiseni.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver umphulaphule u @global.w_consequence_teen_boy_1", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Abantwana abakwaziyo ukunyamezela nokumelana neemeko ezinzima, baziqhelanise neenguqu, baze basombulule iingxaki xa zivela.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Umphumo ubusengqiqweni yaye ufanelekile", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Mncome umntwana wakho ofikisayo ngokoyisa ubunzima kwaye umxhase apho unako.", "type": "template", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Kutheni ukusebenzisa umphumo kusebenze kakuhle kweli tyeli?", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "Ukuzithemba komntwana yindlela azicingela ngayo.", "type": "template", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "Ubuya kuthi umphumo ozolileyo kubantwana bakho abafikisayo abaphikisanayo ebudeni besidlo unjani? \n\nKhumbula kufuneka ube: \nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Khuthaza ukuba ube nomfanekiso olungileyo wesiqu sakhe, misela umzekelo wokungazihlekisi okanye uzigxeke ngalo lonke ixesha. Wazi amandla omntwana wakho kwaye uxhase ubuthathaka bakhe", "type": "template", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Ukungababoni abahlobo bam kangangenyanga", + "SourceText": "Lonely", + "text": "Isithukuthezi", "type": "template", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Kusenokuba nzima kuwe ukwenza loo nto yaye kunokuba ngqwabalala kakhulu!", + "SourceText": "Anxious", + "text": "Ukuxhalaba", "type": "template", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Ukurhoxisa izicwangciso zomhla wabo wokuzalwa kwisithuba senyanga", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Abantwana banokuziva bebodwa, nokuba bakunye nabanye. Basenokuziva ngathi abanaye nabani na abanokuthetha naye, bamthembe, okanye babelane naye.", "type": "template", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Kukude kwikamva, yaye kungqwabalala futhi!", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Buza ukuba umntwana wakho ofikisayo uqhuba njani kwaye uzame ukufumana iindlela ezintsha zokuzonwabisa kunye nabahlobo kunye nosapho - ingakumbi ngexesha lokuvalwa", "type": "template", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Anizombukela UMABONAKUDE ngokuhlwanje", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Ukuxhalaba yimvakalelo eqhelekileyo kwaye inokusinceda sijamelane neemeko ezingumceli mngeni. Kodwa ukuxhalaba kakhulu okanye ukuxhalaba okubangela ukuba abantwana benze izinto abazithandayo kuyingxaki.", "type": "template", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Heke, oku kubonakala kulungile yaye kunokwenziwa ngokukhawuleza", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Nceda umntwana wakho abone oko kubenza baxhalabe kwaye benze isicwangciso sokuba banokuphendula anjani kwiingcinga ezixhalabisayo.", "type": "template", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Ceba isiphumo esizolileyo sabantwana bakho abafikisayo abaphikisanayo ngexesha lokutya.. Khumbula kufuneka ibe \n\nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Ukwenza umsebenzi wokuphumla kunye kunokunceda!", "type": "template", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Uqheliselo lwakho lwasekhaya kule veki luya kuba kukuthetha kunye nomntwana wakho ofikisayo ngomphumo OMNYE ongemhle nomphumo OMNYE omhle.\n\nImiphumo ifanele ibe:\nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo)\nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo)", + "SourceText": "Depressed", + "text": "Ukudandatheka", "type": "template", "note": "" }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Isimilo Esingesihlanga Ukugoduka emva kweyure ekuvunyelwene ngayo. \n\nUmphumo Ongemhlanga: Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo: \n\nIsimilo Esingesihlanga Ukuthetha Krwada. \n\nUmphumo Ongemhlanga: Bhala ileta yokuxolisa \n \nIsimilo Esihle Ukuncedisa ukuthenga. \n\nUmphumo Omhle: Imizuzu engama-30 ethe kratya yomsebenzi awuthandayo awukhethayo. \n\nIsimilo Esihle Ukuncedisa ekujongeni abantwana bakowabo abancinci. \n\nUmphumo Omhle: Iyure yexesha elithe kratya kunye nabahlobo ngempelaveki.", + "SourceText": "Self-harm", + "text": "Ukuzenzakalisa", "type": "template", "note": "" }, { - "SourceText": "Great!", - "text": "Kulunge kakhulu!", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Ukuziva udakumbile okanye uphantsi, ukuba kwimeko embi, zonke ziimvakalelo eziqhelekileyo zomntu. Ukudandatheka kuxa iqhubeka ixesha elide kwaye imisebenzi yesiqhelo yemihla ngemihla yomntwana wakho iyachaphazeleka. Umntwana wakho unokuziva engenathemba kwaye engakwazi okanye engakhuthazwa ukutshintsha nantoni na.", "type": "template", "note": "" }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Ndiyayazi ubomi bunokubanzima. Ndiyazingca ngawe. \n\nNokuba uvakalelwa njani, kuhle ukuba ulapha!", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Zama ukufumana uncedo lwengcali.", "type": "template", "note": "" }, { - "SourceText": "Using the app together", - "text": "Ukusebenzisa i-app kunye", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Ngamanye amaxesha abantwana banokuzilimaza ngenjongo yokujongana neemvakalelo ezimbi ezifana nomsindo, ityala, ukungabi nanto, okanye ukuzonyanya. Oku kunokubangelwa kukuxhalaba okanye ukudandatheka.", "type": "template", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Kuhle ukukubona!\n\nOkokuqala, masincede iqela lakho liqalise.", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Ukuba umntwana wakho ofikisayo ukulungele ukuchaza indlela ukuzenzakalisa okumenza azive bhetele, unokuqalisa ukuqonda izizathu. Zama ukufumana uncedo lwengcali.", "type": "template", "note": "" }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Okokuqala vumelanani ngemithetho ebalulekileyo:\n* Zeziphi iintsuku/amaxesha esiza kudibana ngawo evekini?\n* Ngubani oza kubamba ifowuni xa sisenza izinto?\n* Yintoni esinokuyenza ukuze siqiniseke ukuba wonke umntu uthetha ngokukhululekileyo?\n* Yintoni esinokuyenza ukuze sonke sizive sihlonitshwa?", + "SourceText": "A teen sometimes does something because they:", + "text": "Umntwana ngamanye amaxesha wenza into ngenxa yokuba: ", "type": "template", "note": "" }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "Unako ukulitshintsha nanini na usuku loqeqesho lwenu kunye negama leqela lakho kwi-@global.weekly_workshop_options.", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "- Mamela abahlobo babo\n- Ufuna ukwenza okwenziwa ngabanye\n-Cinga ngakumbi 'ngoku' kunokuba 'kamva'\n-Iimpembelelo zothando kwaye unokufumana ukudikwa ngononophelwa\n- Ungazikhathazi ngomngcipheko - unokuyithanda imingcipheko\n- Yiba namava anqongopheleyo onokuthi uthembele kuwo\n- Bazimisele ukuzama into - nokuba kwenzeka ntoni na", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "Some rules that other groups made:", - "text": "Eminye imithetho eyenziwe ngamanye amaqela:", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Kunokukunceda ukugcina oku engqondweni xa umntwana wakho ofikisayo esenza isigqibo esiphosakeleyo. Thetha nabo kwaye nichithe ixesha kunye ukuze nikwazi ukubanceda bakhethe ngcono kwixesha elizayo!", "type": "template", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "* Ngolwesibini ngo 7pm lixesha lethu le@global.parent_app sisonke\n* Ukutshintshana ngokubamba ifowuni (umsebenzi om-1 kumntu ngamnye)\n* Yamkela amava omnye nomnye. Sisonke sahlukile!\n* Tshintshanani ngokuthetha nokumamela\r\n\n* Yonke imibuzo yamkelekile\n* Oko sabelana ngako kuphelela phakathi kwethu", + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "Unokucelwa ukuba wabelane ngale khowudi nabantu abaza kuxhasa uhambo lwakho lwe@global.parent_app.", "type": "template", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "Ungu ngqa phambili! \n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole. \n\nUkhumbule ukuba ufumana i-@global.parent_point qho uzikhathalela - ubalulekile!", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Ungqamaniso Lokugqibela e: @local.sync_latest", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Ukuba ngumzali kunganzima kakhulu. Ngamanye amaxesha kubonakala ngathi abantwana bethu abasimameli.\n\nKodwa inzululwazi ibonisa ukuba ukuchitha imizuzu embalwa ngosuku ngalunye nichitha ixesha kunye nomntwana wakho ofikisayo oko kunganceda ekwakheni ukuthembana nothando.", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Esi sixhobo asizange singqanyaniswe. Ngqamanisa uzokuveza ikhowudi yakho.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Ithuba lokuchitha ixesha ndawonye lelokunikela ingqalelo kubo, kungabukelwanga i-TV okanye kusetyenziswa iifowuni. Bavumele bakhokele into eyenziwayo okanye into enincokola ngayo.\n\nKuhle ukuba unokuchitha imizuzu engamashumi amabini ngosuku, kodwa nokuba yimizuzu emihlanu ngosuku oko kulungile.", + "SourceText": "Sync now", + "text": "Ngqamanisa ngoku", "type": "template", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Molo.\n\nUmxholo wanamhlanje ngowokuchitha ixesha kunye nabantwana bethu.\n\nKubalulekile ukuchitha ixesha kunye nabantwana bethu ukuze basazi kakuhle nokuba nathi sibe nethuba lokubazi kakuhle. \n\nUkhumbule ukuba intsapho eyazana kakuhle iyavisisana.", + "SourceText": "Syncing...", + "text": "Ungqamaniso...", "type": "template", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Watch Together", + "text": "Bukelani Kunye", "type": "template", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Izinto zokwenza xa uzinyamekela\n* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Let's watch a video together!", + "text": "Masibukele ividiyo kunye!", "type": "template", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Yabelalani ngamacebiso! \n\nZeziphi izinto onokuzenza xa uchitha ixesha ndawonye kunye nabantwana bakho abafikisayo?\n\nNgaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Cinga ngezinto zokwenza xa nichitha ixesha ndawonye ezingatyi xesha elingakumbi njengokuhamba niye evenkileni kunye.", + "SourceText": "Watch", + "text": "Bukela", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nNingabazali abathandekayo ngokuzama le nto.", + "SourceText": "Let's watch a video!", + "text": "Masibukele ividiyo!", "type": "template", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "Makhe sicinge ngeendlela zokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo.", + "SourceText": "Options", + "text": "Ukhetho", "type": "template", "note": "" }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "Yitoni onokuyenza ngethuba lokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo?", + "SourceText": "Welcome @fields.user_name", + "text": "Wamkelekile @fields.user_name", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "Ngaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Ungalibali ukucinga ngezinto ezingazukufuna ixesha elongezelelekileyo.", + "SourceText": "It's great to see you again!", + "text": "Kuluvuyo ukukubona kwakhona!", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nUngumzali ophum’izandla ngokuzama le nto.", + "SourceText": "Welcome @fields.group_name", + "text": "Wamkelekile @fields.group_name", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "DAY - Try to do it every day", - "text": "USUKU - Zama ukuyenza yonke imihla", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Kuluvuyo ukukubona kwakhona! Masiqalise ngengoma yeentsapho nokuba ziphi.", "type": "template", "note": "" }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Kusuku ngalunye, khangela imizuzu emi-5 (okanye ngakumbi!) xa umntwana wakho ofikisayo engenanto yimbi afuna ukuyenza.", + "SourceText": "Let's Slow Down", + "text": "Masithobe Isantya", "type": "template", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "DLALA - vumela umntwana wakho ofikisayo akhethe", + "SourceText": "How would you like to do this workshop?", + "text": "Ungathanda ukuyenza njani iindabano zocweyo?", "type": "template", "note": "" }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Xelela umntwana wakho ofikisayo ukuba ungathanda ukuchitha ixesha kunye naye kwaye angakhetha into afuna yenziwe okanye afuna ukuncokola ngayo. Ekuqaleni usenokuyifumanisa ingaqhelekanga le nto, kodwa uza kuhamba alonwabele eli xesha aba kunye nawe ngalo!", + "SourceText": "Coming soon", + "text": "Kuza ngokukhawuleza", "type": "template", "note": "" }, { - "SourceText": "STAY - Focus on your teen", - "text": "HLALA - Nikela ingqalelo kumntwana wakho ofikisayo", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Kuya kufuneka sigubungele eminye imiba yobuzali khaphambi koba singaqala sisebenze kwi-@local.workshop_data.title.\n\nUnokufumana izixhobo ezibalulekileyo kwi-@local.workshop_data.title usebenzisa i-@global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Cima i-TV nize ningazisebenzisi iifowuni zenu. Mjonge umntwana wakho ofikisayo. Nqwala intloko okanye uthi “Ndiyakuva” ukuze ubonise ukuba unikele ingqalelo nyhani. Yamkela into ayithethayo ungakhange umgwebe.", + "SourceText": "My name", + "text": "Igama lam", "type": "template", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Nawe ungalinandipha ithuba lokuchitha ixesha ndawonye kunye nomntwana wakho! Kusenokukwenza ude uzive lwehlile uxinezeleko.", + "SourceText": "@global.weekly_workshop day", + "text": "Usuku lwe @global.weekly_workshop", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Chitha imizuzu eyi-5 ukuya kweyi-20 ekuchitheni ixesha kunye nomntwana wakho ofikisayo ngazo zonke iintsuku okwazi ngazo kule veki.", + "SourceText": "I do the workshops...", + "text": "Ndenza iindabano zocweyo...", "type": "template", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Ukhumbule - nanini na unako, phola, qonda uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", + "SourceText": "My group's name", + "text": "Igama le qela lam", "type": "template", "note": "" }, { - "SourceText": "Remember that YOU matter!", - "text": "Khumbula ukuba UBALULEKILE!", + "SourceText": "My group is now doing the workshop...", + "text": "Iqela lam ngoku lenza iindabano zocweyo...", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "Wenze kakuhle ekuqondeni imvakalelo ezakhayo. Kuyandivuyisa ukuva ukuba uziva kamandi namhlanje!", + "SourceText": "I am now doing the workshop...", + "text": "Ndim ngoku owenza iindabano zocweyo...", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "Uqhube kakuhle ngokuqonda iimvakalelo ezinzima. Kulungile ukungaziva mnandi maxa wambi. Khumbula ukuba awukho wedwa.", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Le mibuzo emifutshane iza kwenza le app ifanele iimfuno zakho.", "type": "template", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "Oku kusemagqabini. Ngalunye kolu qheliselo lwenza intsapho yakho yomelele. Zidle.", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "Masiqale ngemibuzo embalwa malunga nawe kunye nentsapho yakho.", "type": "template", "note": "" }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Imigaqo inceda abantwana abafikisayo baqonde oko kulindelekileyo kubo. \n\nAbantwana abafikisayo batyekele ngakumbi ekulandeleni imigaqo xa imigaqo niyenza KUNYE nomntwana wakho ofikisayo uze umncome ngaloo nto!", + "SourceText": "We would love to know your first name or nickname:", + "text": "Singathanda ukwazi igama okanye isiteketiso sakho:", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yimigaqo. \n\nImigaqo ikhuthaza uxolo ekhayeni ize ikhuthaze ukuqondana phakathi kwamalungu entsapho. \n\nImigaqo ikhuthaza iimbopheleleko kwilungu ngalinye lentsapho, ngenxa yoko, kubalulekile ukuba nemigaqo yentsapho. \n\nIkhaya elinemigaqo yentsapho liphila eluxolweni.", + "SourceText": "Are you a woman or a man?", + "text": "Ungumfazi okanye uyindoda?", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo nto ayikhange isebenze… \n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Woman", + "text": "Mfazi", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo ayikhange isebenze… \n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Man", + "text": "Indoda", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "Makhe sifunde ngoko kwenzeke nge @global.w_rules_teen_boy ne @global.w_rules_female_caregiver_1:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" - }, - { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: \"Usoloko ugoduka emva kwexesha!\"\n\n@global.w_rules_teen_boy: \"Hayi akunjalo, andazi nokuba lithetha ukuthini igama elithi emva kwexesha! Khawuyeke ukundijikeleza ngochuku.”", + "SourceText": "How old are you?", + "text": "Mingaphi iminyaka yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Nguwuphi umgaqo okhethekileyo abanokuthi u @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 bawuyile kunye?", + "SourceText": "Adults", + "text": "Abantu abadala", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "Makhe sibone indlela u @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy abayenza ngayo le nto ngosuku olulandelayo\n\n@global.w_rules_female_caregiver_1: Ndifuna wonwabe, @global.w_rules_teen_boy, kodwa iyandikhathaza nento yokuhamba kwakho ngobusuku. Ngaba uyasazi isizathu?” \n\n@global.w_rules_teen_boy: “Ngenxa yokuba ufuna ndibe nexesha elaneleyo lokwenza umsebenzi wam wesikolo?”", + "SourceText": "Teens", + "text": "Abantwana Abafikisayo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: “Unyanisile, yaye akukhuselekanga kule ndawo ukuba ngaphandle emva kokutshona kwelanga. Ucinga ukuba leliphi ixesha elililo lokuba sekhaya?”", + "SourceText": "Children", + "text": "Abantwana", "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “Ndingagoduka ngo-10pm?\" \n\n@global.w_rules_female_caregiver_1: “Kusuke kusebusuku noko, unjani u-6pm? Okanye elinye ixesha eliphakathi?”", + "SourceText": "Babies", + "text": "Iintsana", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “Ndingagoduka ngo-6pm ngeentsuku zesikolo ndize ndigoduke ngo-10pm ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Ok kulungile. Ukususela ngoku, umgaqo wentsapho yethu uthi kufuneka ufike endlini ngo-6pm ngeentsuku zesikolo uze ufike ngo-10pm ngooLwezihlanu nangemiGqibelo. Kodwa usoloko ugoduka nomhlobo. Ilungile xa injalo?\"", + "SourceText": "How many people are in your household?", + "text": "Bangaphi abantu abahlala ekhayeni lakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: \"Kulungile, @global.w_rules_female_caregiver_1“ \n\n@global.w_rules_female_caregiver_1: “Enkosi kakhulu, @global.w_rules_teen_boy, ngokundincedisa senze umgaqo omhle. Kundivuyisa kakhulu ukuphawula ukuba uya uqola.”", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "Unokuzenzela i-@global.weekly_workshops OKANYE unokumema amanye amalungu entsapho okanye izihlobo zikujoyine – uza kufunda into eninzi komnye nomnye. Kuxhomekeke kuwe!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Ngengomso...\n\n@global.w_rules_female_caregiver_1: “Enkosi, @global.w_rules_teen_boy, ngokubuya ekhaya kwangethuba. Emva kokuba ugqibe umsebenzi wakho wesikolo singatya isidlo sangokuhlwa osithandayo.”", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "Ungathanda ukuyenza njani i-@global.weekly_workshops yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Making the rule together went well because...", - "text": "Ukuwenza sobabini umgaqo kusebenzile ngenxa yokuba...", + "SourceText": "Can you think of a name for your group?", + "text": "Ngaba ungacinga ngegama leqela lakho?", "type": "template", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Baye bancokola ngezizathu zomgaqo \n* @global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy \n* Umgaqo ubucacile, ungqalile yaye ulungile \n* @global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "Loluphi usuku lweveki ongathanda ukwenza ngalo i-@global.weekly_workshops yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy ebemazi @global.w_rules_female_caregiver_1 ebemxabisa ngenxa yokuba...", + "SourceText": "Monday", + "text": "NgoMvulo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* Uye wamncoma\n* Umnike umvuzo ngokulandela umgaqo", + "SourceText": "Tuesday", + "text": "NgoLwesibini", "type": "template", "note": "" }, { - "SourceText": "Let's think about what happened in this story.", - "text": "Makhe sicinge ngoko kwenzekileyo kweli bali.", + "SourceText": "Wednesday", + "text": "NgoLwesithathu", "type": "template", "note": "" }, { - "SourceText": "What went well here in making a rule together?", - "text": "Yintoni ebintle apha ngokwenza umgaqo kunye?", + "SourceText": "Thursday", + "text": "NgoLwesine", "type": "template", "note": "" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Baye bancokola ngezizathu zomgaqo", + "SourceText": "Friday", + "text": "NgoLwesihlanu", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy", + "SourceText": "Saturday", + "text": "NgoMgqibelo", "type": "template", "note": "" }, { - "SourceText": "The rule was clear, specific and fair", - "text": "Umgaqo ubucacile, ungqalile yaye ulungile", + "SourceText": "Sunday", + "text": "NgeCawa", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", + "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Kulunge kakhulu! Siza kuvula uqeqesho olutsha lweqela lakho qho ngeveki. Oku kuza kuvumela ukuba nonke nizame izinto enizifunde kunye neentsapho zenu ngaphambi kokuba nifunde isakhono esilandelayo.", "type": "template", "note": "" }, { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Unyanisile, ukwenza imigaqo ecacileyo kunye ngendlela ezolileyo neyiyo kunceda kakhulu!", + "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Kulunge kakhulu! Siza kuvula uqeqsho olutsha qo ngeveki. Oku kuza kuvumela ukuba uzame izinto ozifunde kunye nentsapho yakho ngaphambi kokuba ufunde isakhono esilandelayo.", "type": "template", "note": "" }, { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "Ucinga ukuba u @global.w_rules_teen_boy wazi njani ukuba u @global.w_rules_female_caregiver_1 uyamxabisa?", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "Unako ukutshintsha olu lungiso nanini na kwi-@global.weekly_workshop_options yakho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "She praised him", - "text": "Uye wamncoma", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "Ingaba uqinisekile ukuba ufuna ukuvula zonke iindabano zocweyo? Wakuba uyenzile le nto awuzukwazi ukuphinda ulutshixe", "type": "template", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "Umnike umvuzo ngokulandela umgaqo", + "SourceText": "Unlock Workshops", + "text": "Vula iindabano zocweyo", "type": "template", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Uchanile - impendulo eyiyo iyawenza umahluko!", + "SourceText": "Using the app together", + "text": "Ukusebenzisa i-app kunye", "type": "template", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Imigaqo yekhaya inceda ukugcina abantwana bethu abafikisayo bekhuselekile, baze baqonde oko kulindelekileyo kubo. Xa umbandakanya umntwana ofikisayo ekwenzeni imigaqo banokuzimisela ngakumbi ekuyilandeleni.", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Kuhle ukukubona!\n\nOkokuqala, masincede iqela lakho liqalise.", "type": "template", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "IMIGAQO YEQELA", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Okokuqala vumelanani ngemithetho ebalulekileyo:\n* Zeziphi iintsuku/amaxesha esiza kudibana ngawo evekini?\n* Ngubani oza kubamba ifowuni xa sisenza izinto?\n* Yintoni esinokuyenza ukuze siqiniseke ukuba wonke umntu uthetha ngokukhululekileyo?\n* Yintoni esinokuyenza ukuze sonke sizive sihlonitshwa?", "type": "template", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Yicebe KUNYE nomntwana wakho ofikisayo imigaqo. Qala ngomgaqo omnye omtsha - ungongezelela omnye kamva. Ncokola nabo ngezizathu zalo mgaqo uze uphulaphule izimvo zabo.", + "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "text": "Unako ukulitshintsha nanini na usuku loqeqesho lwenu kunye negama leqela lakho kwi-@global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "REAL RULES", - "text": "IMIGAQO YOKWENENE", + "SourceText": "Some rules that other groups made:", + "text": "Eminye imithetho eyenziwe ngamanye amaqela:", "type": "template", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "Yenze ibe sengqiqweni ilungelane noko umntwana wakho ofikisayo anokukwenza, uze uyibeke icace ize ingqale ukuze iqondwe kakuhle. Kungekhona ‘ngexesha’ kodwa ‘ngo-7pm’.", + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "* Ngolwesibini ngo 7pm lixesha lethu le@global.parent_app sisonke\n* Ukutshintshana ngokubamba ifowuni (umsebenzi om-1 kumntu ngamnye)\n* Yamkela amava omnye nomnye. Sisonke sahlukile!\n* Tshintshanani ngokuthetha nokumamela\r\n\n* Yonke imibuzo yamkelekile\n* Oko sabelana ngako kuphelela phakathi kwethu", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "PRAISE RULES!", - "text": "IMIGAQO YOKUNCOMA!", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Chitha imizuzu eyi-5 ukuya kweyi-20 ekuchitheni ixesha kunye nomntwana wakho ofikisayo ngazo zonke iintsuku okwazi ngazo kule veki.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Mncome umntwana wakho ofikisayo ngokuceba umgaqo kunye nawe, uze ubancome ngokuwugcina!", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Ukhumbule - nanini na unako, phola, qonda uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", "type": "template", "note": "" }, { - "SourceText": "Online Safety", - "text": "Ukhuseleko kwi-Intanethi", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Kubakho imiceli-mngeni kubazali abaninzi xa bechitha ixesha kunye nabantwana babo abafikisayo. \n\nNantsi imiceli-mngeni esi-8 abazali abaye basixelela ngayo nabathi bahlangabezane nayo xa beceba okanye bechitha ixesha kunye nabantwana babo abafikisayo. Ukuba nawe ukhe wanayo okanye unoloyiko lokuba uza kuba nayo, cofa kuyo uze ufumane isicombululo. Ungacofa uze uqwalasele eminye imiceli-mngeni emva koko.", "type": "template", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Imigaqo ibalulekile ukugcina umntwana wakho ofikisayo ekhuselekile - nakwi-intanethi. Kukho okungakumbi ngale nto kuQeqesho lweVeki nganye olungokuceba ukhuseleko, kodwa masesiqaliseni sijonge ngoku!", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "Ngaba uye wanengxaki xa ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, ngaba uwenzile umsebenzi wakho wesikolo?\"\n\n@global.w_rules_teen_girl: “Kancinci nje @global.w_rules_female_caregiver_2, ndigqibezela le @global.teen_social_medium vidiyo\"", + "SourceText": "What challenge did you have when trying to spend time with your teen?", + "text": "Yeyiphi ingxaki oye wanayo ngoku ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: “Ungumdanisi ophum’ izandla ngokwenene! Ndixelele isizathu sokuba uwuthande\"\n\n@global.w_rules_teen_girl: \"Bonke abahlobo bam bakuwo, @global.w_rules_female_caregiver_2. Ndineelikes eziyi-600 neefollowers eziyi-120.\"", + "SourceText": "I don’t have enough time.", + "text": "Khange ndibe nexesha elaneleyo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: \"Ndiyazidla ngendlela odanisa kamnandi ngayo, @global.w_rules_teen_girl. Kodwa simele siqinisekise ukuba ukhuselekile. \n\nNdiyazi ukuba abahlobo bakho bajonga ku @global.teen_social_medium, kodwa ngeakhawunti evulekileyo, kukho nabanye abantu abajonga iividiyo zabantu abafikisayo bencwase ukwabelana nabo ngesondo. Maxa wambi baye baqhagamshelane nabantu abafikisayo. Bazenza ngathi banobuntu kodwa baphela besongela baze babaxhaphaze abantwana abafikisayo.”", + "SourceText": "My teen does not want to spend time with me.", + "text": "Umntwana wam ofikisayo akafuni kuchitha ixesha kunye nam.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: \"Makhe sijonge kunye kwi-intanethi ukuze sibone ukuba singaqhubeka njani siqiniseka ukuba wonwabile kodwa ukwakhuselekile. Khangela – ungenza iakhawunti yakho ibe nobumfihlo uze ulawule abantu abakulandelayo.\n\nUngamkela abantu obaziyo esikolweni nakwindawo esihlala kuyo, kungekhona abantu abaqhagamshelana nawe kwi-intanethi.\n\nNgaba singawenza kunye umgaqo onokuwusebenzisa @global.teen_social_medium, kodwa kwiakhawunti yabucala? Ndiyathemba uyazi ukuba ngubani omawumamkele!”", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "Umntwana wam ofikisayo ufuna ukubukela i-TV okanye adlale ngefowuni yakhe.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: Ndiyazidla ngawe @global.w_rules_teen_girl\"", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "Umntwana wam ofikisayo ufuna ukwenza izinto ezingakhuselekanga okanye ezibiza imali eninzi.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" + "note": "" }, { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Nguwuphi umgaqo omnye obalulekileyo ngamnye kuni ongathanda ukuwenza nomntwana wakho ofikisayo? \n* Ucinga ukuba umntwana wakho ofikisayo uza kucinga ngantoni ngalo mgaqo? \n\nKhumbula, yenze imigaqo ingqale yaye ibe sengqiqweni!", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "Umntwana wam ofikisayo ufuna ukwenza izinto umzimba wam ongandivumeli ukuba ndizenze.", "type": "template", "note": "" }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Nantsi eminye imigaqo eziye zayiyila ezinye iintsapho:", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "Umntwana wam ofikisayo ukhetha izinto ezinokhuphiswano. Ndiye ndaphumelela yaza yamcaphukisa lonto.", "type": "template", "note": "" }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Abantwana abafikisayo bangadlala phandle emva kokugqiba ukwenza umsebenzi wesikolo\n* Onke amalungu entsapho atya kunye idinala\n* Umntwana ofikisayo 1 uhlamba izitya ngeCawa nangoMvulo, Umntwana ofikisayo 2 uzenza ngoLwesibini nangoLwesithathu\n* Sincokolisana ngesimilo nangobubele\n* Xa ufuna ukumamela umculo uwuphulaphula ngee- earphones", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Kuyekwanzima ukuphelisa ixesha lethu sikunye.", "type": "template", "note": "" }, { - "SourceText": "Let's practice making rules.", - "text": "Makhe siqhelisele ukwenza imigaqo.", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Bonke abantwana bam bafuna ukuchitha ixesha kunye nam ngexesha elinye.", "type": "template", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Bhala phantsi umgaqo omnye obalulekileyo ongathanda ukuwenza nomntwana wakho ofikisayo – uza kuwenza njengoqheliso lwasekhaya kule veki. \n\nBaya kucinga ntoni ngoku?", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "Ewe, kunganzima ukufumana ixesha emini, kuba ngumsebenzi, imisebenzi yekhaya, kunye nezinye izinto.", "type": "template", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Kule veki, yenza umgaqo ube mnye nomntwana wakho ofikisayo.\n\nUngalibali ukumncoma umntwana wakho ofikisayo emva koko!", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Uxolo ngokuba uye wasokoliswa yilonto. Singaziva buhlungu xa abantwana bethu bengafuni ukuchitha ixesha kunye nathi.", "type": "template", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "Kumnandi ukuva ukuba uqhuba kakuhle. Ungumzali osemagqabini!", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Ndicinga ngexesha apho umntwana wam ofikisayo ekwazi ukuthetha nam ngokukhululekileyo, njengakusasa okanye ngaphambi kokuba ayo kulala.", "type": "template", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Uxolo ngoba usuku lwakho alukuhambeli kakuhle. Wenze kakuhle ngokuzama ukubona yonke into. Akakho umntu onazo zonke iimpendulo kodwa eneneni wenza konke okusemandleni akho!", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Ndihlala ecaleni kwakhe xa esenza into ayithandayo ndize ndimbonise ba ndinomdla kwinto ayithandayo.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Uxolo ngokuva ukuba alumnandanga usuku lwakho. Uqhube kakuhle ngokuvuka rhoqo ntsasa nganye uphinde uzame kwakhona naxa sele udiniwe. Yinkalipho nokuzinikela kokwenene!", + "SourceText": "Do something fun with the whole family.", + "text": "Ndenze into eza konwatyelwa lilo lonke usapho.", "type": "template", "note": "" }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Inyathelo 1: Sibalisele oko kuye kwahamba kakuhle noko kuye kwanzima", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Kulunge kakhulu! Ukukhangela ixesha afuna ukuncokola ngalo umntwana wakho ofikisayo kuza kuzomnceda asabele kakuhle kwinzame zakho zokuba nincokole.", "type": "template", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "“Ndifunde lukhulu ngobomi bomntwana wam ofikisayo xa sikhe sachitha ixesha sobabini! Kodwa emva kosuku lokuqala, umntwana wam ofikisayo ebefuna ukudlala efowunii yakhe nje qha.”", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Kuhle! Ukubukela kunye inkqubo ye-TV okanye umdlalo othandwa ngumntwana wakho ofikisayo kuza kumbonisa ukuba umkhathalele. Yiba nomonde, baza kuthetha ekuhambeni kwexesha!", "type": "template", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Inyathelo 2: Yiza nezimvo!", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Nantso ke! Ngamanye amaxesha kungalula ukuqalisa ukuchitha ixesha kunye nosapho lonke. Ngaloo ndlela, umntwana wakho ofikisayo angakhululeka ngakumbi xa kufuneka nichithe ixesha kunye ekuhambeni kwexesha.", "type": "template", "note": "" }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "Usebenzile ngokuzama! Mhlawumbi ungacebisa ezinye izinto zolonwabo eninokuzenza kunye nomntwana wakho ofikisayo.”\n\n“Ewe, okanye ningenza okuthile kunye efowunini yakhe? Okanye angakubonisa indlela esebenza ngayo ifowuni yakhe?”", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "u-Xolo ngokufumana olo celo-mngeni. Amaxesha amaninzi, abantwana badla ngokuchitha ixesha bebukele i-TV okanye bedlala ngezinto ze-elektronikhi. Usebenzile ngokuba nomonde kumntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Inyathelo 3: Khetha uze uzame ibe nye!", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Ndicebise ngezinto zokuzonwabisa ngazo endinokuzenza kunye nomntwana wam ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Enkosi ngezo ngcamango zisemagqabini! Ewe, makhe ndicele umntwana wam ofikisayo andibonise indlela esebenza ngayo ifowuni yakhe ngomso emva kokuphuma kwesikolo. Ngaba omnye wenu angazenza umntwana wam ofikisayo ngoku, ukuze ndiqhelisele ukumbuza?”", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Ndifumane into efundisayo endinokuyenza kwisixhobo se-elektroniki kunye nomntwana wam ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola:\n\n* Yintoni ehambe kakuhle ibe yintoni eye yanzima?\n* Zeziphi izisombululo eninokucinga ngazo?\n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Ndicele umntwana wam andifundise ukuba isebenza njani ifowuni/isixhobo sakhe se-elektroniki.", "type": "template", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Ukuncoma sesona sakhono sinamandla ebuzalini.\n\nUkuba siyabancoma abantwana bethu abafikisayo xa besenza izinto kakuhle, siya kubabona besenza izinto ezingakumbi nezinto ezininzi ezintle!", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "Kulunge gqithi! Ukuba ufuna isikhuthazo, nanga amanye amacebo avela kwezinye intsapho ngento eninokuyenza kunye. Khumbula, vumela umntwana wakho ofikisayo akhethe.", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Molweni, kuni nonke. \n\nUmxholo wethu namhlanje umalunga nokuncoma. \n\nKuhle ukubancoma abantwana bethu xa benze into entle kuba xa sisenza loo nto, baya kubonisa isimilo esihle kakhulu esithanda ukusibona. \n\nYaye singalibali ukuzincoma nathi xa senze okuhle!", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Kuhle gqitha!  Zininzi ii-app ezikwifowuni ezimnandi nezifundisayo eninokuzikhangela kunye. Buza imibuzo, bonisa umdla, uze ukhumbule ukuthetha into encomekayo.", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Imiphumo yokuncoma\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Kuhle! Abantwana abafikisayo bayathanda ukubona unomdla kwisixhobo se-elektroniki abasisebenzisayo naxa bekucacisela ngento abayaziyo. Eli linyathelo elihle lokuqalisa!", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Imiphumo yokuncoma\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Awukho wedwa apha. Abazali abaninzi nabo banalo olu celo-mngeni. Ukuchitha ixesha ninobabini kufanele nikhuseleke ngalo lonke ixesha, kwaye akubizi nto!", "type": "template", "note": "" }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Baliselanani:\n\n* Ugqibele nini ukubulelwa ngumntu okanye akuxelele ukuba wenze into esemagqabini? \nYakwenza waziva njani? \n* Uziva njani xa ungabulelwa okanye unconywe ngenxa yento oyenzileyo? \n\nAsidli ngakubulelwa okanye sinconywe ngokwaneleyyo njengabazali. Mhlawumbi unganika abantwana bakho abafikisayo umzekelo omhle uze ubancome kuqala xa besenza into entle!", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Ndicacisele umntwana wam ofikisayo kutheni into abayicebisayo ingakhuselekanga okanye ingenakwenzeka ndiye kengoku ndicele acebise ngezinye izinto.", "type": "template", "note": "" }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Cinga ngokugqibela kwakho ukubulelwa ngumntu okanye wakuxelela ukuba wenze into esemagqabini.", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Cebisa ngezinye izinto ezimnandi esinokuzenza kunye.", "type": "template", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "Yakwenza waziva njani?", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Kwakuhle kakhulu! Kubaluleke kakhulu ukuba umntwana wakho ofikisayo asiqonde isizathu sokuba ningenokwazi ukwenza into ebecebisa yenzeni. Mcele aze namanye amacebiso!", "type": "template", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Abazali abadli ngakubulelwa okanye banconywe ngokwaneleyo.", + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Oku kulungile! Ukuba ufuna amacebiso, ungafumana amacebiso ezinto ezinokwenziwa kwi-@data.parent_centre.relax_and_activities.location_text. Khumbula, vumela umntwana wakho ofikisayo akhethe into emayenziwe!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "Kukwenza uzive njani xa kungekho mntu othi “enkosi”?", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Uxolo ukuva lento. Abantwana bethu basenokuphoxeka xa singakwazi ukwenza izinto abafuna sizenze njengokudlala imidlalo okanye imisebenzi yomzimba. Kodwa khumbula, eyona nto ebalulekileyo kukuchitha ixesha kunye nabo. Oko kwahluke kumntu wonke!", "type": "template", "note": "" }, { - "SourceText": "Tired", - "text": "Uyadinwa", + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Ndibukele umntwana wam edlala ndiye ndimkhuthaze.", "type": "template", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Nomntwana wakho ofikisayo angavakalelwa ngendlela efanayo. Yiloo nto eyenza isixhobo sabazali sale veki sibe lula kodwa sibaluleke: Bancome ngento abayenza kakuhle.", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Cebisa ngezinye izinto ezimnandi eninokuzenza kunye.", "type": "template", "note": "" }, { - "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "text": "Ukuncoma kunamandla kakhulu. \n\nMakhe sijonge umzekelo ka @global.w_praise_female_caregiver_name neentombi zakhe:", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Kuhle gqitha! Nokuba ubukele endaweni yokwenza umdlalo kunye, ungabonisa umdla wakho ngokuchaza nokuncoma into eyenziwa ngumntwana wakho ofikisayo!", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "text": "Xa u @global.w_praise_female_caregiver_name exakekile, iintombi zakhe ezimbini ziyalwa qho. Kodwa namhlanje, intombi yakhe enkulu iye yancedisa udadewayo ngomsebenzi wesikolo!", + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Oko kulunge gqitha! Ukuba ufuna amacebiso, ungafumana amacebiso kwizinto ezinokwenziwa kwi-@data.parent_centre.relax_and_activities.location_text. Khumbula, vumela umntwana wakho ofikisayo akhethe into emayenziwe!", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "text": "@global.w_praise_female_caregiver_name: \"Enkosi ngokwenza umsebenzi wakho wesikolo, @global.w_praise_girl, yaye enkosi ngokuncedisa udadewenu, @global.w_praise_teen_girl. Ndiyazidla ngawe!”", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Oku kuyenzeka ngamaye amaxesha! Imidlalo enokhuphiswano angabayingxaki kubantwana abafikisayo (nakubantu abadala!), kuba abathandi ukungaphumeleli.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss this story.", - "text": "Makhe sincokole ngeli bali.", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Cebisa izinto eninokuzenza ninobabini endaweni yokuba nibe nxamnye omnye komnye.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Ncokolani kunye:\n\n* Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?\n* Kutheni eye wabancoma?", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Dlala umdlalo ngokwamaqela, ukuze ndizokwazi ukukhuthaza umntwana wam ofikisayo ukuba iqela lethu aliphumelelanga.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name ubancomile abantwana bakhe abafikisayo...", + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Khumbula, vumela umntwana wakho ofikisayo akhethe! Amacebiso ezinto onokuzenza kunye nomntwana wakho ofikisayo ungawafumana ku-@data.parent_centre.relax_and_activities.location_text ukuba uyawadinga.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Ukuze abenze bayenze rhoqo\n* Ukumnceda awugqibe umsebenzi wakhe \n* Ukubenza bazive kamnandi \n* Ukumenza lo mntwana azive kamnandi", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "Ukuba wena nomntwana wakho ofikisayo nikwiqela elinye, ungamnceda alawule iimvakalelo zakhe ukuba iqela lenu aliphumelelanga.", "type": "template", "note": "" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "Ewe, ukuphelisa ixesha enilichitha kunye kunganzima ngamanye amaxesha.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "Why did she praise them?", - "text": "Kutheni eye wabancoma?", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Ndithi kumntwana wam ofikisayo, “Kusele umzuzu omnye ngaphambi kokuba kuphele ixesha lethu sikunye namhlanje,” ukuze umntwana wam ofikisayo akwazi ukuzilungiselela.", "type": "template", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Ukuze abenze bayenze rhoqo", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Ukwazisa umntwana wam ofikisayo ukuba ndisele nexesha elingakanani kwixesha lethu xasikunye, ndize ndimcele agade ixesha elishiyekileyo kwiwotshi.", "type": "template", "note": "" }, { - "SourceText": "To help her finish her work", - "text": "Ukumnceda awugqibe umsebenzi wakhe", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Ndenza icebo lokuchitha ixesha ndawonye ngaphambi kwenye into umntwana wam ofikisayo athanda ukuyenza.", "type": "template", "note": "" }, { - "SourceText": "To make them feel good", - "text": "Ukubenza bazive kamnandi", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Kuhle gqitha! Ngokumazisa umntwana wakho ofikisayo ukuba liza kuphela ixesha lenu nikunye, akazukothuka xa liphela. Kwakhona, unokumkhumbuza umntwana wakho ofikisayo ukuba niza kuphinda nichithe ixesha kunye ngengomso.", "type": "template", "note": "" }, { - "SourceText": "To make herself feel good", - "text": "Ukumenza lo mntwana azive kamnandi", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Kulunge kakhulu! Ngalo ndlela, umntwana wakho ofikisayo unoxanduva lokujonga ixesha kwaye uza kulibona xa sele liza kuphela. Mkhumbuze ukuba niza kuphinda nichithe ixesha kunye ngengomso.", "type": "template", "note": "" }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Zonke ezo zinto ziyinyani! \n\nXa abantwana bakhe abafikisayo bonwabile, u-@global.w_praise_female_caregiver_name uziva onwabile. Yaye uye wawugqiba umsebenzi wakhe.", + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Kuhle gqitha! Ukuba nichitha ixesha kunye ngaphambi kwesidlo sangokuhlwa, ungatsho kamnandi uthi, “liphelile ixesha lokuba ndawonye. Masihambe silungiselele isidlo sangokuhlwa kunye nosapho lonke!”", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "The same can work for you!", - "text": "Nawe le nto inokukunceda!", + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Abazali abaninzi bajamelana nalento. Kunganzima ukuchitha ixesha kunye nabantwana bethu abafikisayo xa sinabantwana abaninzi.", "type": "template", "note": "" }, { - "SourceText": "SEE IT", - "text": "YIBONE", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Cela omnye umntu omdala okanye umntwana omdala ajonge abantwana abancinane ngelixesha ndichitha ixesha nomntwana wam ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Khangela nantoni na umntwana wakho ofikisayo ayenzayo eluncedo okanye elungileyo, uze umncome ngenxa yoko. Basenokungayibonisi kodwa uya kubabona bephinda beyenza loo nto ilungileyo. Kanti iya kubaqinisekisa ukuba uyaqaphela yaye uyakhathala.", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Cinga ngexesha abangekhoyo ngayo abanye abantwana kuze ndizochitha ixesha kunye nomntwana wam ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "SAY IT", - "text": "YITSHO", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Yenza icebo lokuba uchithe ixesha kunye kwindawo engelilo ikhaya.", "type": "template", "note": "" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Yiba nentshiseko – nyaniseka xa uyitsho!", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Nantso ke! Ngale ndlela ungakwazi ukunika umntwana wakho ofikisayo ingqalelo yakho yonke kuze bazive bexatyisiwe kwaye bethandwa.", "type": "template", "note": "" }, { - "SourceText": "REPEAT IT", - "text": "YIPHINDE", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Kulunge kakhulu! Unokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo xa abanye abantwana sele belele, okanye bedlala phandle.", "type": "template", "note": "" }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Zama ukufumanisa into oza kubabulela ngayo suku ngalunye. Nditsho nento encinci kakhulu.", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Kuhle gqithi! Mhlawumbi ningahamba kunye ukuya ezivenkileni okanye niyokubukela umdlalo ukuze nikwazi ukuncokola bengekho abanye abantwana abaza kufuna ingqalelo yakho.", "type": "template", "note": "" }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Kanti ungancoma nabanye abantu abadala ekhayeni lakho. Phawula indlela abasabela ngayo!", + "SourceText": "DAY – Do it every day", + "text": "USUKU – Yenze yonke imihla", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "Masikuqhelisele ukuncoma.", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "DLALA – Vumela umntwana wakho ofikisayo akhethe into emayenziwe", "type": "template", "note": "" }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Baliselanani: \n\n* Ungamncoma ngantoni umntwana wakho ofikisayo? \n* Yintoni enye into entle eyenziwe ngomnye umntu ebudeni bolu qeqesho? Baxelele!\n* Kukwenze waziva njani ukuncoma umntu?\n* Kukwenze waziva njani ukunconywa?", + "SourceText": "STAY – Give your teen all of your attention", + "text": "HLALA – Mnike ingqalelo yakho yonke umntwana wakho ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Maxa wambi kuba nzima ukucinga ngento onokumncoma ngayo umntwana wakho ofikisayo! Nanga amanye amacebiso avela kwabanye abazali:", + "SourceText": "Why was this tip helpful for you?", + "text": "Kutheni lengcebiso liye laba luncedo kuwe?", "type": "template", "note": "" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Ukuba noobubele emntwini \n* Ukucoca igumbi lakhe lokulala \n* Ukujoyinia isiddlo sentsapho \n* Ukubulisa amanye amalungu osapho \n* Ukunyamekela abanye abantwana bakowabo \n* Ukugoduka kwangethuba \n* Ukumcingela \n* Ukuthi ‘ndiyacela’ okanye ‘enkosi’ \n* Ukuya esikolweni \n* Ukwenza imisebenzi yasekhaya okanye eyesikolo \n* Ukuphathana ngoxolo ebudeni besidlo", + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "\"@local.choice_1\" ibiluncedo ngenxa yokuba...", "type": "template", - "note": "" + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Uqheliselo lwasekhaya lwale veki kukuncoma umntwana wakho ofikisayo kube kanye ngosuku. Kuya kuthatha imizuzwana eli-10 nje qha!", + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "\"@local.choice_2\" ibiluncedo ngenxa yokuba...", "type": "template", - "note": "" + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Ukuzinyamekela kubaluleke kakhulu.", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "\"@local.choice_3\" ibiluncedo ngenxa yokuba...", "type": "template", - "note": "" + "note": "The string @local.choice_3 should not be translated." }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle Qhubeka nalo msebenzi mhle.", + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Ukuba nexesha elithile lokwenza lento lindinceda ndikhumbule.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Khawuthathe ithuba uze uvuyiswe yiloo nto uyifezileyo, ngaphandle kwazo zonke ezinye izinto ekufuneka uzenzile usuku ngalunye.", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Xa sinezinto ezenziwa rhoqo, mna nomntwana wam ofikisayo siyakwazi ukugcina ishedyuli sethu singenanto.", "type": "template", "note": "" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Iintsapho ezininzi zixinezeleke ngenxa yemali, ingakumbi ukuba abantwana abafikisayo baqhubeka becela izinto! \n\nXa sisenza ibhajethi kunye, singavumelana ngendlela yokwenza inkcitho KUNYE nokonga ukuthintela uxinezeleko nokusebenzela kusukelo lwentsapho.", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Ukuchitha ixesha yonke imihla kunye nomntwana wam ofikisayo kunceda ekubeni sakhe ukuthembana.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yibhajethi yentsapho \n\nKubalulekile ukuyila ibhajethi, kodwa kubaluleke nangakumbi ukuyila ibhajethi ebandakanya intsapho iyonke \n\nUkuyenza kunye kunceda ekwandiseni umlinganiselo wokuqonda indlela oyichitha ngayo imali njengentsapho nendlela oyongela ngayo intsapho, yaye ungade uze nezicwangciso zendlela eninokonga ngayo njengentsapho.", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Ewe, nokuba yimizuzu eyi-10 nikunye, kwenza umehluko omkhulu – kwenza kube lula ukuyifaka kwi shedyuli, nasondeleyo kuno msebenzi wakho nemisebenzi yasekhaya!", "type": "template", "note": "" }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Ibali – loo nto ayikhange isebenze... \n* Ukuqhelisela ukubhajetha\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ingxubusho ngeendlela zokonga\n* Ukuqhelisela ukonga imali\n* Izixhobo: Indlela yokubhajetha nokonga\nCINGA - KHETHA - YAKHA - CEBA\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "Ukuvumela umntwana wam ofikisayo akhethe into eza kwenziwa, oko kwakha ukuzithemba kwakhe.", "type": "template", "note": "" }, { - "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "text": "Kunokuba nzima ukondla intsapho nyanga nganye. Iintsapho ezininzi zinale ngxaki! \n\nKuquka @global.w_money_grandma - makhe sijonge:", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "Ukuba umntwana wam ofikisayo uyakhetha, lonto iza menza afune nangakumbi ukuchitha ixesha kunye nam.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "text": "@global.w_money_grandma: \"Bendinyamekela abazukulwana bam, @global.w_money_teen_girl no @global.w_money_teen_boy, ekubeni abazali babo basweleka besebancinci. Sisoloko sizamana nemali, njengoko ndifumana isibonelelo esincinci.”", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "Ukuvumela umntwana wam ofikisayo akhethe kubonisa ukuba ndizikhathalele izinto anomdla kuzo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "text": "@global.w_money_grandma: \"Ndixinezeleke kakhulu. Andisenamali iseleyo. Yaye ngoku ndilwa nabantwana bam abafikisayo ngezinto abazifunayo– kwakhona.\"", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Xa ndisebenzisa icebiso lomntwana wam ofikisayo, ndibonisa ukuba ndiyammamela.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye. Udinga:\n\n- Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni\n- Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali.\n \nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "Ukuthetha into entle yothetha eyenziwe ngumntwana wam ofikisayo kumnceda azive exatyiswa.", "type": "template", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "Ibhajethi yentsapho inokunceda u @global.w_money_grandma - kunye NAWE!", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Kuyinyaniso kakhulu oku! Kwaye ukuba abantwana bethu abafikisayo bayakhetha, bayakhuthazeka ukuba babe noxanduva nakwezinye izinto ezisebomini babo.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye.", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Xa ndiphepha iziphazamiso, ndibonisa umntwana wam ofikisayo ukuba ubaluleke kakhulu.", "type": "template", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "Udinga: \n* Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni \n* Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali. \n\nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Nokuba andikwazi kwenza into eyenziwa ngumntwana wam ofikisayo enjengemidlalo, ndinganako ukumxhasa xa eyenza.", "type": "template", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Cinga ngezinto esichitha imali kuzo nyanga nganye.", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Xa ndinikela ingqalelo kumntwana wam ofikisayo, ininzi into endiyifundayo ngezinto anomdla kuzo, izinto azicingayo kunye nezinto akwaziyo ukuzenza.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imifanekiso yazo zonke izinto wena nentsapho yakho enichitha imali kuzo nyanga nganye. \n* Bhala ecaleni komfanekiso ngamnye ukuthi nto nganye iyimalini nyanga nganye. (Akukho mfuneko yokunikisa ngamanani ukuba akufuni.)\n* Dibanisa ukuba yimalini oye wayichitha nyanga nganye.", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "Ewe! Ukuba sinika abantwana bethu abafikisayo ingqalelo epheleleyo, kusenokwenzeka benze into efanayo xa sibacela basenzele into ethile kwixesha elizayo!", "type": "template", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Kuhle gqitha! Uligqibile inyathelo 1! \n\nMasihlabele mgama!", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Injongo yakho ibikukuchitha ixesha ukunye nomntwana wakho ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* ukutya \n* amanzi nombane \n* iimpahla zokunxiba \n* iiakhawunti \n* umrhumo WOMABONWAKUDE \n* izithambiso \n* isaluni \n* iethayimu \n* intlawulo yesikolo \n* into yokukhwela \n* iipolisi zeinshorensi \n* amayeza \n* ukuzihlaziyo/imidlalo \n* irenti \n* imalimboleko \n* icawa", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "Usebenzile ngokukhangela izisombululo kwimiceli-mngeni yakho. Khawuyokuyizama. Ulwalamano lwakho kunye nomntwana wakho ofikisayo luza kuya lusomelela ngokomelela!", "type": "template", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Thethani kunye ngezinto enizidingayo nezinto enizifunayo\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Ukuba ngumzali kunganzima kakhulu. Ngamanye amaxesha kubonakala ngathi abantwana bethu abasimameli.\n\nKodwa inzululwazi ibonisa ukuba ukuchitha imizuzu embalwa ngosuku ngalunye nichitha ixesha kunye nomntwana wakho ofikisayo oko kunganceda ekwakheni ukuthembana nothando.", "type": "template", "note": "" }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Abantu badla ngokungaziboni ngendlela efanayo izinto. Xa sithetha ngezidingo neemfuno zethu, siqondana bhetele yaye sinokwenza ukhetho olululo kunye ngendlela yokusebenzisa imali yethu.\n\nJongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nixoxe:\n* Zeziphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo njengentsapho?", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Ithuba lokuchitha ixesha ndawonye lelokunikela ingqalelo kubo, kungabukelwanga i-TV okanye kusetyenziswa iifowuni. Bavumele bakhokele into eyenziwayo okanye into enincokola ngayo.\n\nKuhle ukuba unokuchitha imizuzu engamashumi amabini ngosuku, kodwa nokuba yimizuzu emihlanu ngosuku oko kulungile.", "type": "template", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Cingani ngezinto enizidingayo nenizifuna nje\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Molo.\n\nUmxholo wanamhlanje ngowokuchitha ixesha kunye nabantwana bethu.\n\nKubalulekile ukuchitha ixesha kunye nabantwana bethu ukuze basazi kakuhle nokuba nathi sibe nethuba lokubazi kakuhle. \n\nUkhumbule ukuba intsapho eyazana kakuhle iyavisisana.", "type": "template", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Jongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nikhethe:\n* Zezphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo?", + "SourceText": "Have you spent time with your teen already?", + "text": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", "type": "template", "note": "" }, { - "SourceText": "Make a budget!", - "text": "Yenzani ibhajethi!", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Enkosi ngokwenza imigudu yokuba ngumzali ongcono. Uyathandwa kwaye uyaxatyiswa!", "type": "template", "note": "" }, { - "SourceText": "Make a budget as one big family!", - "text": "Yenza ibhajethi njengentsapho enye enkulu!", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Ukuchitha ixesha kunye nomntwana wakho kunceda ekwakheni ukuthembana phakathi kwenu. \n\nQhubeka ngohambo lwakho lwe-@global.parent_app ngoku - wena nosapho lwakho niza kubona imiphumo emihle.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Umntu omnye uza kuvolontiya aze asichazele ngoluhlu lwakhe (Ukuba akukho mntu uvolontiyayo ningenza uluhlu olutsha ninonke) \n* Dlalani indima zenu - abanye iya kuba ngabantu abadala, abanye ibe ngabantwana abafikisayo. \n* Gqibani ukuba umvuzo wenu wenyanga uza kuba yimalini.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.) \n* Gqibani kunye ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", + "SourceText": "First @global.weekly_workshop!", + "text": "Okokuqala @global.weekly_workshop!", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Make a budget as a family!", - "text": "Yenzani ibhajethi njengentsapho!", + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Molo @fields.user_name. I-@local.workshop_data.in_text_title sele ikulungele.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Bhala phantsi ukuba uyimalini umvuzo wakho wenyanga.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.)\n* Gqibani ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Molo @fields.group_name. I-@local.workshop_data.in_text_title sele ikulungele.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Niqhube kakuhle, sele nigqibe amanyathelo ama-3 okuqala! \n\nMakhe sibone indlela u @global.w_money_grandma asenze ngayo isicwangciso sakhe ngemali, kanye njengokuba wenzile:", + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nI-@local.workshop_data.in_text_title sele ikulungele!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "\"Ndibafunela ikamva eliqaqambileyo abazukulwana bam, kodwa andazi ukuba ndingayifumana phi imali*. Oomatshonisa bayingozi yaye imali yabo uyibuyisa seyininzi kakhulu. \n\nNdimele ndonge imali, kodwa loo nto ibonakala ingenakwenzeka!”", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Akuyi kuthatha xesha lide, kwaye uza kufumana ulwazi oluxabisekileyo. \n\nWenze kakuhle ngokuzama ukuba ngumzali ongcono. Ngomso, ungangena kuqeqesho olutsha.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "\"Usukelo lwam kukuqinisekisa ukuba umzukulwana wam ongumfana uyakwazi ukuya kwisikolo samabanga aphezulu aze umzukulwana wam oyintombazana akwazi ukufezekisa iphupha lakhe lokuya edyunivesithi. Ndingakwazi njani ukugcina imali eninzi ngale malana ndinayo?”", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha olukunceda uphole, lonwabele uze ufunde izakhono ezitsha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "\"Ndiyazi - masiqale ngesicwangciso! Okokuqala, masenze ibhajethi – isicwangciso sendlela endinokonga ngayo imali. Emva koko ndiza konga intwana yemali ngexesha – ndingade ndijoyine namaqela okonga nawembolekiso-mali.\"", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "Makhe sicinge ngeendlela zokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "\"Kanti ndifanele ndithethe nabazukulwana bam ukuze sikhethe izinto esinokunciphisa inkcitho kuzo veki nganye. Baza kundincedisa ndicinge ngezinto esizifuna nje kodwa esingazidingiyo.”", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "Yitoni onokuyenza ngethuba lokuchitha ixesha ndawonye kunye nomntwana wakho ofikisayo?", "type": "template", "note": "" }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "Kwiminyaka embalwa kamva:\n\n\"Jonga, siwafezekisile amaphupha ethu! Andikhange ndiboleke kwizihlobo okanye koomatshonisa. Ngokubeka imali encinci veki nganye, ndikwazile ukuhlawula imali ka @global.w_money_teen_boyyamabanga aphakamileyo ndaza ndabeka imali ethile ka @global.w_money_teen_girlyasedyunivesithi. Ndiyazidla ngale nto.”", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "Ngaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Ungalibali ukucinga ngezinto ezingazukufuna ixesha elongezelelekileyo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Luthini usukelo lwentsapho yakho lokonga?", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nUngumzali ophum’izandla ngokuzama le nto.", "type": "template", "note": "" }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Lusukelo oluhle kakhulu olo! \n\nLusukelo oluhle kakhulu olo! Xa sisenza ibhajethi entle nesicwangciso sokonga sikunye, singaphumelela size sizidle ngeziqu zethu!", + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "Ungu ngqa phambili! \n\nYonke imihla, khumbula into oyenze kakuhle. Zivuze ngokuzenzela into ekwenza wonwabe. Tsala umoya ukuze uphole. \n\nUkhumbule ukuba ufumana i-@global.parent_point qho uzikhathalela - ubalulekile!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Sonke sinamaphupha ngeentsapho zethu, kanye njengo @global.w_money_grandma. Ngokubekela ecaleni intwana yemali nyanga nganye, bangazeka emzekweni", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Luthini usukelo lwentsapho yakho lokonga?", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Izinto zokwenza xa uzinyamekela\n* Amacebiso okuchitha ixesha ndawonye\n* Izixhobo: Indlela yokuchitha ixesha lenu nobabini\nUSUKU - UKUDLALA - UKUHLALA\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "Lusukelo oluhle kakhulu olo! \n\nXa sisenza ibhajethi entle nesicwangciso sokonga, ningaphumelela nize nizidle ngeziqu zenu!", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Yabelalani ngamacebiso! \n\nZeziphi izinto onokuzenza xa uchitha ixesha ndawonye kunye nabantwana bakho abafikisayo?\n\nNgaba uziva ngathi AWUNALO ixesha ibe udinwe uyimfe? Cinga ngezinto zokwenza xa nichitha ixesha ndawonye ezingatyi xesha elingakumbi njengokuhamba niye evenkileni kunye.", "type": "template", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Ukonga kubalulekile nangesinye isizathu: iimeko zongxamiseko! @global.w_money_grandma uye wayifunda le nto apha ekuhambeni:", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Kungathatha ixesha ukuqhelana nokuchitha ixesha ndawonye, kodwa okukhona ukwenza, kokukhona kusiba ngcono!\n\nNingabazali abathandekayo ngokuzama le nto.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Ngobunye ubusuku kwabakho isichotho esibi esonakalisa uphahla lwam. Yonke into yayikhukhulisekile. Ngesiquphe kwafuneka ndizame imali yokulungisa uphahla. Ndaziva ndoyisakele”", + "SourceText": "DAY - Try to do it every day", + "text": "USUKU - Zama ukuyenza yonke imihla", "type": "template", "note": "" }, { - "SourceText": "Let's talk about this story.", - "text": "Masithethe ngeli bali.", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Kusuku ngalunye, khangela imizuzu emi-5 (okanye ngakumbi!) xa umntwana wakho ofikisayo engenanto yimbi afuna ukuyenza.", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "U @global.w_money_grandma, wafunyanwa sisaqhwithi. \n\nZiziphi ezinye iimeko zongxamiseko ezinokusifikela?", + "SourceText": "PLAY - Let your teen choose", + "text": "DLALA - vumela umntwana wakho ofikisayo akhethe", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "Let's think about this story.", - "text": "Makhe sicinge ngeli bali.", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Xelela umntwana wakho ofikisayo ukuba ungathanda ukuchitha ixesha kunye naye kwaye angakhetha into afuna yenziwe okanye afuna ukuncokola ngayo. Ekuqaleni usenokuyifumanisa ingaqhelekanga le nto, kodwa uza kuhamba alonwabele eli xesha aba kunye nawe ngalo!", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "U @global.w_money_grandma, wafunyanwa sisaqhwithi.", + "SourceText": "STAY - Focus on your teen", + "text": "HLALA - Nikela ingqalelo kumntwana wakho ofikisayo", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Ziziphi ezinye iimeko zongxamiseko ezinokufikela intsapho yakho", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Cima i-TV nize ningazisebenzisi iifowuni zenu. Mjonge umntwana wakho ofikisayo. Nqwala intloko okanye uthi “Ndiyakuva” ukuze ubonise ukuba unikele ingqalelo nyhani. Yamkela into ayithethayo ungakhange umgwebe.", "type": "template", "note": "" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Iimeko zongxamiseko zinokufikela intsapho yam. Ukugcina imali ukwenzela ezi meko zongxamiseko NGAPHAMBI kokuba zehle kuthintela amaxhala noxinezeleko lwequbuliso!", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Nawe ungalinandipha ithuba lokuchitha ixesha ndawonye kunye nomntwana wakho! Kusenokukwenza ude uzive lwehlile uxinezeleko.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "Makhe sithethe ngeendlela ezahlukeneyo esinokonga ngazo.", + "SourceText": "Great!", + "text": "Kulunge kakhulu!", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Ncokolani kunye: \n* Ziziphi iindlela ezahlukeneyo esinokonga ngazo? \n* Ziziphi iingenelo neengxaki zokhetho ngalunye lokonga? \n\nUkuqonda ukhetho ngalunye kakuhle kuya kukunceda wenze isigqibo ngolona khetho lokonga lusemagqabini ngentsapho yakho. \n\nEnoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", + "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", + "text": "Ndiyayazi ubomi bunokubanzima. Ndiyazingca ngawe. \n\nNokuba uvakalelwa njani, kuhle ukuba ulapha!", "type": "template", "note": "" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "Makhe sicinge ngeendlela ezahlukeneyo esinokonga ngazo.", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", "type": "template", "note": "" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Kukho iindlela ezahlukeneyo esinokonga ngazo: ekhaya, ukuthenga izinto esinokuzithenga kamva, ebhankini, okanye kwiqela lokonga.\n\nCinga ngeengenelo neengxaki zokhetho ngalunye lokonga.", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", "type": "template", "note": "" }, { - "SourceText": "What is the best savings option for your family?", - "text": "Ziziphi ezona ndlela ziphambili zokonga kwintsapho yakho?", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe indlela yokukuxhasa njengomzali kwixesha elizayo.", "type": "template", "note": "" }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Enoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe inkxaso yexesha elizayo kwi-@global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Ceba indlela onokonga ngayo imali, ukuze uhlangabezane neemeko zongxamiseko ukuze ufikelele usukelo lwentsapho yakho!", + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Molweni, kuni nonke.\n\nUmxholo wanamhlanje ungokubhiyoza kunye namanyathelo alandelayo.\n\nBekumangalisa, bekumnandi ukuba kunye nawe kolu hambo. Namhlanje sibhiyozela uhambo lwethu kunye. \n\nNamhlanje sibhiyozela zonke izinto esizifundileyo kulo lonke uqeqesho.", "type": "template", "note": "" }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "Ukuba unokonga neyona mali incinci ukwenzela ikamva okanye imeko yongxamiseko - ingenza umahluko omkhulu ngokuhamba kwexesha. \n* Yongeza isangqa esibizwa ngokuba “ziimeko zongxamiseko”.\n* Yongeza isangqa esithi “usukelo lwentsapho.”\n* Ngoku zama ukudlulisela imali yakho ukuze wonge intwana nyanga nganye ukwenzela nganye kwezi.", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Namhlanje siza kubhiyoza, sijonge izinto ezidlulileyo size sikhangele phambili:", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwiqela lakho ukufanele ukunconywa, akunjalo?", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "*Ingxubusho nokucinga\n* Izixhobo: Indlela yokuxhasana\nUKUDIBANA - UKUFOWUNA -UKUTHUMELA UMYALEZO - UKWABELANA\n* Ukuceba inkxaso", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwintsapho yakho ukufanele ukunconywa, akunjalo?", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Namhlanje uyabhiyoza uze ucinge ngamava akho.", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "SIVUYISANA NAWE!!! Uyenzile ibhajethi yakho – khumbula ukuphinda wenze olu qheliselo kunye namanye amalungu entsapho yakho - Ukuba niyavumelana ngokwenza isicwangciso kunye loo nto iya kwenza umahluko omkhulu!", + "SourceText": "End of programme check-in", + "text": "Uphela kwenkqubo yokungena", "type": "template", "note": "" }, { - "SourceText": "Step 1: THINK", - "text": "Inyathelo 1: CINGA", + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "Uye wasebenzisa i@global.parent_app kwezi nyanga zidlulileyo, kodwa ukuba ngumzali kumntwana ofikisayo kokwexesha elide! Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sihlole ukuba ngumzali kwakho.\n\nNyaniseka. Ukhumbule ukuba izigidi zabazali zivakalelwa ngale ndlela ovakalelwa ngayo kwaye sonke siyayifuna inkxaso. Awukho wedwa!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "What do we spend on now?", - "text": "Imali siyichitha entwenini ngoku?", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", "type": "template", "note": "" }, { - "SourceText": "THINK Activity", - "text": "Umsebenzi WOKUCINGA", + "SourceText": "Let's talk about what has changed.", + "text": "Makhe sithethe ngezinto ezitshintshileyo.", "type": "template", "note": "" }, { - "SourceText": "Step 2: CHOOSE", - "text": "Inyathelo 2: KHETHA", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Ncokolani kunye:\n* Yintoni etshintshileyo kwintsapho yakho?\n* Zintoni onebhongo ngokuzenza?\n\nNingalibali ukuncoma kunye nokukhuthazana!", "type": "template", "note": "" }, { - "SourceText": "Talk together about needs and wants", - "text": "Thethani kunye ngezidingo neemfuno", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Cebani ngendlela eniza kuxhasana ngayo ukususela ngoku. \n\nNingasebenzisa amacebiso avela kwezinye iintsapho okanye nizicingele awenu!", "type": "template", "note": "" }, { - "SourceText": "CHOOSE Activity", - "text": "KHETHA Umsebenzi", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Wena nentsapho yakho nifunde into eninzi gqitha. Makhe sibuyele emva size sibone izinto ezitshintshileyo.", "type": "template", "note": "" }, { - "SourceText": "Step 3: BUILD", - "text": "Inyathelo 3: YAKHA", + "SourceText": "Reflect", + "text": "Ukucinga emva", "type": "template", "note": "" }, { - "SourceText": "Make your own budget", - "text": "Yenza ibhajethi yakho", + "SourceText": "Listen and reflect", + "text": "Mamela uze ucingisise", "type": "template", "note": "" }, { - "SourceText": "BUILD Activity", - "text": "YAKHA Umsebenzi", + "SourceText": "Read and reflect", + "text": "Funda uze ucingisise", "type": "template", "note": "" }, { - "SourceText": "Step 4: PLAN", - "text": "Inyathelo 4: CEBA", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Vala amehlo uze uphole.\n\nCinga ngobomi bosapho lwakho ngaphambi kokuba waqalisa uhambo lwakho ngale app.\n \nCinga ngezakhono oye wazifunda:\n* Ukuzikhathalela\n* Ixesha enilichitha kunye\n* Ncoma\n* Imiyalelo eyakhayo\n* Ukulawula uxinezeleko\n* Ibhajethi yosapho\n* Imithetho\n* Imiphumo ezolileyo\n* Ukusombulula iingxaki\n* Ukhuseleko lwabantwana abafikisayo\n* Ukuhlangabezana neengxaki\n\nCingisisa ngohambo – belunjani kuwe:\n* Ncokolani ngamacebiso nangamava\n* Cingisisa uze ufunde kumabali\n* Qhelisela izakhono kunye nomntwana wakho ofikisayo\n\nNgaba kukho nto itshintshileyo kuwe nakusapho lwakho?\n\nYintoni oyidingayo ukuze uqhubeke usebenzisa izakhono?", "type": "template", "note": "" }, { - "SourceText": "Emergencies and family goals", - "text": "Iimeko zongxamiseko nosukelo lwentsapho", + "SourceText": "MEET", + "text": "DIBANANI", "type": "template", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "CEBA Umsebenzi", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Qhubekani nidibana rhoqo ukuze nixhasane njengabazali.", "type": "template", "note": "" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Phinda wenze ibhajethi - ngeli tyeli KUNYE nomntwana wakho ofikisayo nentsapho yakho! \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size silweze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "SourceText": "CALL", + "text": "FOWUNANI", "type": "template", "note": "" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Yenza ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "Yibani 'ngabazali abazitshomi’ ukuze nifowunelane xa nikhathazekile okanye ningazi ukuba nenze ntoni.", "type": "template", "note": "" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Hlola ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. Oku kuya kukhumbuza wonke umntu ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", + "SourceText": "TEXT", + "text": "THUMELA UMYALEZO", "type": "template", "note": "" }, { - "SourceText": "Steps to make a budget", - "text": "Amanyathelo okwenza ibhajethi", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Thumelani umyalezo qho ngeveki ukuze nabelane ngezinto enizenze kakuhle.", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Kuhle, ndivuya kakhulu! Qhubeka nalo msebenzi mhle.", + "SourceText": "SHARE", + "text": "YABELANANI", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Uxolo ngokuba iimeko zinzima. Zonke iintsapho zitsala nzima. Sikhona ukuze sikuncede!", + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Yabelanani nge-@global.parent_app nize nincede ezinye iintsapho ziqale uhambo lwazo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "Nantoni na engahambanga kakuhle namhlanje, yilibale uze uze uzame kwakhona ngomso Kulungile!", + "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", + "text": "Kuhle ngeyona ndlela! Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", "type": "template", "note": "" }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Nikela iingqalelo kwizinto ezintle! \n\nUkuxelela abantwana bethu abafikisayo ukuba sifuna BENZE ntoni kusebenza bhetele kunokubaxelela ukuba BAYEKE ukwenza into ethile.\n\nUza kuwubona umahluko", + "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", + "text": "Sibuhlungu yimini enzima le. Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", "type": "template", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Molweni, molweni kuni nonke.\n\nNamhlanje umxholo wethu yimiyalelo emihle. \n\nKubalulekile ukunikela imfundiso entle kubantwana bethu, ngenxa yokuba xa sibanika imfundiso entle bayazi baze baqonde oko silindele ukuba bakwenze, yaye bakwenza ngale ndlela sifuna bakwenze ngayo. \n\nNgoko ekugqibeleni loo nto ishiya wonke umntu onwabile.", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Ulingo lokucinga!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 fike emva kwexesha ekhaya.\n\nNguwuphi umphumo onokunceda apha?", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Ulingo lokucinga!\n* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Imiphumo ayifani ncam nesohlwayo inika abantwana bethu abafikisayo ithuba lokufunda ukuzithwalela uxanduva ngezenzo zabo.\n\nYaye balawuleka ngakumbi YAYE isebenza ngakumbi kunokubetha okanye ukubakhwaza!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a thought experiment!", - "text": "Makhe senze ulingo lokucinga!", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "MUSA UKUCINGA NGENDLOVU \n\nUcinga ngantoni?", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 balwa efowunini.\n\nNguwuphi umphumo onokunceda apha?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Mhlawumbi UYE wacinga ngendlovu...\n\n‘Musa ukunikela imiyalelo ebangela abantwana abafikisayo bacinge ngaloo nto. \n\nMaxa wambi badla ngokungayiqonidi EYONA nto siyifuna kubo. \n\nKanti badla ngokungathandi ukuxelelwa ukuba mabangenzi izinto (asinjalo sonke?)", + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Imiphumo iphumelela ngakumbi ukuba uxubusha uze uvumelane kusengaphambili nabantwana abafikisayo ngaphambi kokuba uyisebenzise.\n\nYaye: imiphumo ayikho mibi yonke… kanti ningavumelana ngemiphumo yezenzo EZINTLE ukuze ubone isimilo esichubekileyo!", "type": "template", "note": "" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "NGOKU, CINGA NGENGWENKALA! \n\nUcinga ngantoni?", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "Kulungile! Umyalelo, osengqiqweni ocacileyo unceda abantwana abafikisayo banikele ingqalelo kwinto abafanele bayenze. \n\nAbantwana abafikisayo baya kuziva behlonitshwa ngakumbi ngale ndlela, yaye banamathuba amaninzi okuphulaphula.", + "SourceText": "What consequence would help here?", + "text": "Nguwuphi umphumo onokunceda apha?", "type": "template", "note": "" }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "Masibone ukuba kwenzeka ntoni ukuba @global.w_instruct_female_caregiver uthi @global.w_instruct_teen_girl \"MUSA\":", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 uncedisa ekuhlambeni izitya.\n\nNguwuphi umphumo onokunceda apha?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso nomhlobo wakhe.\n\n@global.w_instruct_female_caregiver: “Musa ukungcolisa ngoxa ndicoca indlu. Umi endleleni!”", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Uqheliselo lwakho lwasekhaya kule veki luya kuba kukuthetha kunye nomntwana wakho ofikisayo ngomphumo OMNYE ongemhle nomphumo OMNYE omhle.\n\nImiphumo ifanele ibe:\nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo)\nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Kodwa kufuneka ndilungiselele ukhuphiswano lwasesikolweni. Awufuni ndenze nto wena.”\n\n@global.w_instruct_female_caregiver: “Musa ukundiphendula!”", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Isimilo Esingesihlanga Ukugoduka emva kweyure ekuvunyelwene ngayo. \n\nUmphumo Ongemhlanga: Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo: \n\nIsimilo Esingesihlanga Ukuthetha Krwada. \n\nUmphumo Ongemhlanga: Bhala ileta yokuxolisa \n \nIsimilo Esihle Ukuncedisa ukuthenga. \n\nUmphumo Omhle: Imizuzu engama-30 ethe kratya yomsebenzi awuthandayo awukhethayo. \n\nIsimilo Esihle Ukuncedisa ekujongeni abantwana bakowabo abancinci. \n\nUmphumo Omhle: Iyure yexesha elithe kratya kunye nabahlobo ngempelaveki.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Tyhoo!! Kutheni ndihleli nje ndiyangxoliswa????”\n\n@global.w_instruct_female_caregiver uyambombozela: “Lo mntwana usoloko esenza inkathazo.”", + "SourceText": "introduce a consequence together", + "text": "gqibani ngomphumo kunye", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "Makhe sincokole ngento eyenzekileyo kweli bali.", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "Ngaba uye wanengxaki xa benizama ukugqiba ngomphumo kunye?", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Ncokolani kunye: \n\n* Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo? \nYIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", + "SourceText": "What was difficult for you about introducing a consequence with your teen?", + "text": "Yintoni ebinzima ekugqibeni ngomphumo kunye nomntwana wakho ofikisayo?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver ebenokuthi...", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Ndiye ndanomsindo kakhulu xa umntwana wam ofikisayo eye wophula umthetho.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* Ngethethe into entle kuqala \n* Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo \n* Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Xa sinqumama ngaphambi kokuphendula, oko kusinceda sizole size siphendule bhetele. \n\nXa ephinda ekucaphukisa umntwana wakho ofikisayo, zama ukunqumama kuqala. Uthathe imimoya embalwa lonto ingenza umehluko omkhulu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo?", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "Umntwana wam ofikisayo uye wanomsindo kakhulu emva kokuba ndimnike umphumo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Sad", - "text": "Ulusizi", + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", + "text": "Xa umntwana wakho ofikisayo esiba nomsindo, kusenokufuneka umshiye yedwa ude wehle umsindo kuni nobabini. \n\nHlola ukuba umphumo awufumanayo usengqiqweni kanye unobulungisa. Mamela umntwana wakho ofikisayo xa ecacisa uze uqinisekise ukuba kukho “Uxolelo kwimeko Yokhuseleko” ukuba akawuthobelanga umthetho kuba efuna ukukhuseleka.", "type": "template", "note": "" }, { - "SourceText": "Confused", - "text": "Ubhidekile", + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Ndiye ndathi kuza kubakho umphumo ndingakhange ndiqale ndithethe nomntwana wam ofikisayo malunga nalonto.", "type": "template", "note": "" }, { - "SourceText": "Angry", - "text": "Unomsindo", + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "Ungakwazi ukuwusebenzisa lomphumo xa kusenzeka oku kwakhona? Xa sisithi kuza kubakho umphumo kwaye sibe sibabandakanyile abantwana bethu abafikisayo, umphumo uza kuba yinto enokwenzeka kwaye abantwana bethu abafikisayo baza kukufuna ngakumbi ukuthobela umthetho.", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "YIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", + "SourceText": "I forgot to follow through with the consequence.", + "text": "Ndiye ndalibala ukulandelela umphumo.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Said something nice first", - "text": "Ngethethe into entle kuqala", + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Sonke siyazenza impazamo! Okukhona sibanika rhoqo imiphumo, kokukhona abantwana bethu beza kukhetha ukuziphatha kakuhle kwixesha elizayo.", "type": "template", "note": "" }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo", + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Umntwana wam ofikisayo akawuthobeli umthetho, nokuba ndimnike umphumo.", "type": "template", "note": "" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "Ukuba umntwana wakho ofikisayo usoloko esophula imithetho, kusenokufuneka uchithe ixesha kunye naye nisenza izinto ezikhuthazayo. \n\nZama ukungaziyeki ezinye injongo onazo – njengoku uzinyamekela, ubene xesha enilichitha kunye no kuncoma. Zonke ezi zakhono ziza kumnceda umntwana wakho ofikisayo azive ethandwa kwaye ekhuselekile... kwaye nawe ungaxinezelekanga kakhulu!", "type": "template", "note": "" }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Enkosi ngokucinga ngolu hlobo! \n\nMakhe sibuyele umva size sibone ukuba kwenzekani ukuba u @global.w_instruct_female_caregiver unikela umyalelo ofanelekileyo:", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Siye sabano mphumo ombi, bekungekho mphumo okhuthazayo.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso. nezihlobo zakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kumnandi ukunibona niqhelisela umdaniso nomhlobo wakho. Ndicela niye phandle ndizogqibezela ukucoca indlu. Emva koko, ningandibonisa umdaniso wenu.\"\n\n@global.w_instruct_teen_girl: \"Kulungile, @global.w_instruct_female_caregiver .\"", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Ngamanye amaxesha kuba nzima ukucinga ngemiphumo ekhuthazayo. Imiphumo ekhuthazayo iza kumkhuthaza umntwana wakho kuba azoziva enoxanduva kwaye uza kuwubona umehluko!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: \"Enkosi ngokuqhelisela phandle ngoxa ndigqibezela ukucoca, @global.w_instruct_teen_girl. Ngoku ndinexesha lokubukela umdaniso wenu.\"", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "Umntwana wam ofikisayo ucebise ukuba umphumo ongathandekiyo ibe kukubethwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! Nidanisa kamnandi kakhulu!\"", + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Abantwana abafikisayo basenokucinga ukuba ukubethwa nguwo kuphela umphumo ongathandekiyo abanokuwufumana xa bophule imithetho. \n\nCingani ngemiphumo engena budlobongela kunye nabo enoku banceda baqonde ukuba benze into ephosakeleyo. Iza kusebenza ngcono kwaye iza kumisela imizekelo ekhuthazayo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss what happened this time.", - "text": "Makhe sincokole ngento eyenzekileyo kweli ityeli.", + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya).", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Ncokolani kunye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?\n* Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", + "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "Unganceda umntwana wakho ofikisayo ayiqonde ukuba kukho imiphumo xa engayithobeli imithetho yekhaya. \n\nKodwa INDLELA okwenza ngayo oku ibalulekile. \n\nUkunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "It worked better this time because...", - "text": "Kube kuhle kweli tyeli ngenxa yokuba...", + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukunika umphumo uzolile.\n\nKubalulekile ukuba sibabandakanye abantwana bethu abafikisayo xa siza kusebenzisa imiphumo, kodwa kukwabaluleke nangakumbi ukuzola xa sibanika umphumo.\n\nOku kuza kusinceda sinike abantwana bethu umphumo sizolile kwaye bona baza kuyikhumbula lula xa bebandakanyekile ibe loo nto iza kwenza bathathe uxanduva.", "type": "template", "note": "" }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile \n* @global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Abantwana abafikisayo bayathanda ukwaphula imigaqo. Ukukhula lixesha elinzima xa bezifunda ukuba bangoobani. \n\nNgethamsanqa, zikhona iindlela zokohlwaya umntwana wakho ofikisayo ngaphandle kokuba nomsindo okanye ukusebenzisa ubundlobongela… yaye zisebenza kakuhle!\n\nUkuza nemiphumo ezolileyo kunceda ekufundiseni abantwana bethu ukuba bazithwalele uxanduva ngezinto abazenzayo – enoba zintle okanye zimbi. \n\nNantsi eminye imizekelo - khawuzibone ungumzali:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?", + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Imiphumo ezolileyo ifanele ibe... \n\nMIHLE NOKO: Ayikho ngqwabalala kakhulu yaye ungayenza \n\nNGOKUKHAWULEZA: Yinikele ngokukhawuleza kangangoko kunokwenzeka \n\nNGOKUQHUBEKAYO: Umphumo ofanayo rhoqo", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Ceba isiphumo esizolileyo sabantwana bakho abafikisayo abaphikisanayo ngexesha lokutya.. Khumbula kufuneka ibe \n\nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver", + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "Ngaba wena nomntwana wakho sele nikwazile ukucinga ngomphumo omnye okhuthazayo kunye nomphumo omnye ongathandekiyo?", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile", + "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Gqiba uqeqesho uze uzame ukuncokola kunye nomntwana wakho ofikisayo ukuze nithethe ngomphumo omnye okhuthazayo nomphumo omnye ongathandekiyo xa enze into.", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "text": "Iyancomeka into yokuba usebenzisa i-@global.parent_app. Sele ufumene izixhobo ezi-6 kakade zokuba ngumzali! \n\nYenza uqeqesho olu landelayo ukuze ufumane esinye isxhobo sokuba ngumzali!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Imiyalelo emihle inokusebenza nakumntwana wakho ofikisayo!", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Imiphumo yokuzola imnceda nyhani umntwana wakho ofikisayo ukuba ayilandele kakuhle imithetho – khawukhe ukuzame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokubonisa ukuzinikela kwakho kusapho lwakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "GET REAL", - "text": "YIBA SENGQIQWENI", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", "type": "template", "note": "" }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "Ngaba umntwana wakho ofikisayo angakwazi ukuyenza le nto uza kuyicela? Kusenokuba nzima kubo ukufunda ngelizwi eliphantsi imini yonke, kodwa isiqingatha seyure xa ufuna njalo kusengqiqweni.", + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "Ewe, intsabelo erhabaxa ngolo hlobo yenze wonke umntu wanomsindo kakhulu waza wacaphuka.", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE", - "text": "YIBA NGOWAKHAYO", + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "Makhe sifunde ngokoko kwenzeke nge @global.w_consequence_teen_boy_1 ne @global.w_consequence_male_caregiver:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Ncuma umjonge emehlweni uze usebenzise amagama amnandi. Bancome xa beqalisa ngoko nangoko ukwenza oko ukucelayo!", + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku? Ufike emva kwexesha!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "GET CLEAR", - "text": "THETHA NGOKUCACILEYO", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala”. \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Ngokufuthi siyakwazi oko sikufunayo ezingqondweni zethu, kodwa asikuchazi ngokucace ngokwaneleyo. Kuchaze ngokuthe ngqo oko ufuna umntwana wakho ofikisayo akwenze. Zama ‘nceda goduka ngo-7pm’ kunokuba ‘ufike ekhaya ngexesha’.", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awuwuthobeli umthetho walapha! Ndiza kukubetha”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "Masiqhelisele ukunika imiyalelo EYIYO, EYAKHAYO NECACILEYO. Ukuqhelisela kuya kukunceda uphumelele ekuqhubaneni nomntwana wakho ofikisayo!", - "type": "template", - "note": "" - }, - { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Khetha ababini kwiqela lakho:\n* Umntu omnye uzenza umntwana ofikisayo\n* Omnye uzenza umzali womntwana\n* “Umzali”: Nika ‘umntwana wakho ofikisayo’ umyalelo owakhayo onokhuthazo nezincomo\n* “Umntwana ofikisayo”: Sabela ngendlela ocinga ukuba umntwana ofikisayo angasabela ngayo kule nto. \n\nNcokolani kunye ngendlela okuhambe ngayo oku:\n* Oku kukwenze wavakalelwa njani “njengomzali” “nanjengomntwana ofikisayo”?\n* Ngaba ungenza nantoni na ibe bhetele?\n\nNika wonke umntu ithuba lokuba “ngumzali” “nomntwana” ukuba uyakwazi. Ukuqhelisela kubangela impumelelo!", - "type": "template", - "note": "" - }, - { - "SourceText": "Examples of positive instructions:", - "text": "Imizekelo yemiyalelo eyakhayo:", - "type": "template", - "note": "" - }, - { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ndiyawuthanda umculo wakho. Ungawuthoba xa kusityiwa ukuze sikwazi ukuthetha? * Enkosi – Ndiyayixabisa loo nto. \n* Umnandi lo mculo. Ngubani yona imvumi? Nceda ucime umculo xa ungena endlini. Ungawudlala egumbini lakho ungavakali ukuba uyafuna. Enkosi!", - "type": "template", - "note": "" - }, - { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Uqheliselo lweveki lwasekhaya lwenzelwe ukunika umntwana wakho ofikisayo imiyalelo eyakhayo.\n\nKhumbula – YIBA SENGQIQWENI, YIBA NGOWAKHAYO, THETHA NGOKUCACILEYO = FUMANA KANYE LE NTO UYIFUNAYO (kangangoko kunokwenzeka kumntwana wakho ofikisayo!)", - "type": "template", - "note": "" - }, - { - "SourceText": "We care about you, and how life is treating you.", - "text": "Sikukhathalele, kunye nendlela ubomi obukuphatha ngayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "Uligqala. Yaye uyawenza umahluko. Zingce.", - "type": "template", - "note": "" - }, - { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Uxolo kuba izinto zingekho lula namhlanje. Iimini ezinje ziyabafikela bonke abazali.", - "type": "template", - "note": "" - }, - { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Vala amehlo, utsale umoya, uze wazi ukuba yonke into oye wayenza ibaluleke kakhulu.", - "type": "template", - "note": "" - }, - { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Ntsapho nganye ijamelene nemiceli-mngeni kodwa xa sisebenza sonke singahlangabezana neengxaki ngendlela ephumelelayo nenoxolo. \n\nObunjani ukumangalisa ubuchule obunokufundwa ngumntwana wakho ofikisayo!", - "type": "template", - "note": "" - }, - { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukusombulula ingxaki. \n\nSonke siyazi ukuba ebomini akhona amaxesha esikhe sijamelane neengxaki, yaye sonke siyazi ngandlel’ ithile ukuba xa sizifumana sikwezi meko, kunzima ukucinga ngezicombululo ezikhawulezileyo ezakhayo. \n\nNgenxa yoko, kubalulekile ukuba xa sijamelene neengxaki khe sime, sithathe umoya, sizole size sicinge ngobuchule bokusombulula iingxaki esinokubusebenzisa. \n\nKhumbula ukuquka abantwana bethu abafikisayo xa sicombulula iingxaki. Oku kuya kubanceda baqole baze bafunde indlela yokucombulula iingxaki zabo kwixesha elizayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nengxubusho – oko kusebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "type": "template", - "note": "" - }, - { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", - "type": "template", - "note": "" - }, - { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "Makhe sijonge oko kwenzekileyo ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe xa u @global.w_solve_teen_girl eye wafumana ifowuni kwinkwenkwe… ifowuni!", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyifumene kubani loo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 undithengele. Intle le fowuni, @global.w_solve_female_caregiver_1. Ithatha iifoto ezintle!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: “Andifuni kubona loo nto ibiza kangako! Ayilunganga laa nkwenkwe! Ucinga ukuba uza kumbuyekeza njani ngale nto?!” \n\n@global.w_solve_teen_girl: “Ayisebenzi ngolo hlobo, @global.w_solve_female_caregiver_1! Undidlel’ indlala!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: “Andifuni kuyiva loo nto!” \n\n@global.w_solve_teen_girl: “Awuzami nokundiphulaphula! Andazi noba bendiqalela ntoni ukuthetha nawe!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" - }, - { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Thatha umoya izihlandlo ezimbalwa ukuze uzole, yaye", - "type": "template", - "note": "" - }, - { - "SourceText": "KNOW IT", - "text": "YAZI", - "type": "template", - "note": "" - }, - { - "SourceText": "Identify the problem.", - "text": "Fumanisa ingxaki.", - "type": "template", - "note": "" - }, - { - "SourceText": "SOLVE IT", - "text": "YISOMBULULE", - "type": "template", - "note": "" - }, - { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Cinga ngezisombululo ezinokubakho nokuthi kungenzeka ntoni ukuba sinokuzisebenzisa.", - "type": "template", - "note": "" - }, - { - "SourceText": "TRY IT", - "text": "SIZAME", - "type": "template", - "note": "" - }, - { - "SourceText": "Choose a solution and try it out.", - "text": "Khetha isisombululo uze usizame.", - "type": "template", - "note": "" - }, - { - "SourceText": "TEST IT", - "text": "SIVAVANYE", - "type": "template", - "note": "" - }, - { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "Ngaba sisebenzile? Kulunge kakhulu! Ukuba asikhange sisebenze, khawuzame esinye isisombululo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "Makhe sibone indlela ukusombulula iingxaki okusebenza ngayo ngokoqobo.", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 uyagoduka uvela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacinga): \"Yhoo torho iinyawo zam! Kufuneka khe ndithi vu kancinci ndiphunge ikomityi yekofu ngaphambi kokuba ndiqalise ukuphekela wonke umntu.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani ntoni? Sisonka sedinala eso! Ngoku asizosanela sonke!\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2, bendilambile. Ndingacacisa, yazi, kukho omnye umfana wasesikolweni...” \n\n@global.w_solve_female_caregiver_2 (uyacinga): “Khawume Kancinci… khawukhokh' umoya…”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Khawundiphe nje umzuzu. Ndidiniwe yaye ngoku ndizikhathaza ngokufumana ukutya okwaneleyo kwedinala.” \n\n@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "Step 1: KNOW IT", - "text": "Inyathelo 1: YAZI", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: \"Ngoku khawundixelele, kutheni ulambe kangaka? Khange uwutye umphako wakho wasesikolweni?” \n\n@global.w_solve_teen_boy_2: Nantso ke ingxaki. Kukho umfana esikolweni ondintlontayo. Uthi ukuba andimniki umphako wam wasesikolweni suku ngalunye, yena nabahlobo bakhe baza kundonzakalisa. Uyandiphambanisa!”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: \"Ndibuhlungu ukuva loo nto kodwa ndiyavuya undixelele, @global.w_solve_teen_boy_2. Loo nto ayithethi ukuba umele utye idinala yomntu wonke. Emva kokuba sithethile, kufuneka uyokuthenga esinye isonka evenkileni. Kodwa kuqala: Ucinga ukuba sifanele senze ntoni ngale ngxaki yokuntlontwa kwakho?\"\n\n@global.w_solve_teen_boy_2: \"Kaloku… Ndifuna ukumbetha okanye ndiziphindezele kuye.\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Step 2: SOLVE IT", - "text": "Inyathelo 2: YISOMBULULE", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: \"Hmmm… ucinga ukuba kuya kwenzeka ntoni kuwe xa usenza loo nto?\"\n\n@global.w_solve_teen_boy_2: \"Andazi. Mkhulu kunam ngoko mhlawumbi uza kundonzakalisa ngakumbi. Yaye ndingasenkathazweni esikolweni ndize ndigxothwe.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: “Ewe, inokwenzeka loo nto. Yintoni esinokuyenza endaweni yaloo nto?\"\n\n@global.w_solve_teen_boy_2: “Mhlawumbi ndingaxelela utitshala. Kodwa abanye abantwana baza kuthi ndisisinyabi. Mhlawumbi ungathetha notitshala?”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Kuvakala kulicebo elihle elo. Ndingakhe ndithethe nabazali bakhe ukuba ufuna ndenjenjalo.\"\n\n@global.w_solve_teen_boy_2: \"Kulungile. Ukuba ucinga ukuba nayo loo nto inganceda. Enkosi, @global.w_solve_female_caregiver_2\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: \"Ndingakwenzela nantoni na, mntanam. Ndiza kwenjenjalo emva kokuba sitye idinala. Futhi uyazi yintoni? Ukuba leyo ayisebenzi, singazama nenye into kunye.\":\n\n@global.w_solve_teen_boy_2: \"Enkosi, @global.w_solve_female_caregiver_2\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "Step 3: TRY IT", - "text": "Inyathelo 3: YIZAME", - "type": "template", - "note": "" - }, - { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "Emva kweveki… \n\n@global.w_solve_female_caregiver_2: \"Izinto zihamba njani esikolweni ngoku?\"\n\n@global.w_solve_teen_boy_2: “Kubhetele noko, le nkwenkwe ayisawuthathi umphako wam wesikolo. Kodwa isekrwada kakhulu kum.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Step 4: TEST IT", - "text": "Inyathelo 4: SIVAVANYE", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: \"Ndiyayixolisela ukuva loo nto, @global.w_solve_teen_boy_2. Ndingamcela umalume wakho ayokuthetha nabazali bayo? Ukuba leyo ayisebenzi, siya kuzama enye into!\"\n\n@global.w_solve_teen_boy_2: \"Ewe, enkosi @global.w_solve_female_caregiver_2. Noko ndiyazi ukuba ungakum.”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" - }, - { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Ncokolani kunye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Usakhumbula u @global.w_solve_teen_girl nala fowuni ayifumene enkwenkweni?", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." - }, - { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "Makhe siye ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe ukuze sibone ukuba beze naziphi izisombululo.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "u @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe beze nezisombululo ezithathu.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Ukuba ngumzali kubantwana abafikisayo kunzima ngokwenene. \n\nAmaxesha amaninzi akukho zicombululo zilula, kodwa ngoku @global.w_solve_female_caregiver_1 ufunde ukuba angathetha nentombi yakhe ngezi zinto. \n\nNgaphambili, ebekade ezikhathaza yedwa, ngoku bangeza nezigqibo kunye!", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "Wohlwaye u@global.w_solve_teen_girl kangangenyanga", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: “Akuzi kuphuma kangangenyanga”", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Loo nto ayikhange isebenze... Makhe sizame enye into.", - "type": "template", - "note": "" - }, - { - "SourceText": "Return the phone and save up", - "text": "Buyisa ifowuni ukuze wonge", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: “Andizami kutyhola umhlobo wakho okanye ukuba nomona. Ndikhathazwa kukuba xa umntu ekuphe isipho kunzima ukuthi ‘hayi’ xa efuna ukubhatalwa – njengokwabelana ngesondo. Ukuba ufuna ukuba nefowuni, siza konga sobabini ukuze ukwazi ukwenza izigqibo zakho ngaphandle kokumtyala into ethile.”", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "This is great! Try the third option as well.", - "text": "Kuhle! Zama nolunye ukhetho lwesithathu.", - "type": "template", - "note": "" - }, - { - "SourceText": "Learn about safe sex", - "text": "Funda ngokwabelana ngesondo okukhuselekileyo", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: “Oku kwenza ndiqonde ukuba simele sithethe ngamakhwenkwe nokuzikhusela. Abantwana abaninzi abafikisayo abalingana nawe bayakhulelwa okanye babe ne-HIV. Masiye ekliniki ukuze uthethe nomongikazi ukuze ubone indlela onokuhlala ngayo ukhuselekile.”", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "This is great!", - "text": "Kuhle!", - "type": "template", - "note": "" - }, - { - "SourceText": "Let's practice problem-solving!", - "text": "Makhe siqhelisele ukusombulula iingxaki!", - "type": "template", - "note": "" - }, - { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Qheliselani kunye ngengxaki eninayo ngoku. Omnye kuni ngumzali aze omnye abe ngumntwana ofikisayo. \n\nNcomanani nize nikhuthazane - siyazidla ngani! \n\nUngawalibali la manyathelo: \nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", - "type": "template", - "note": "" - }, - { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Fundisa abantwana bakho amanyathelo amane okusombulula iingxaki:\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE \n\nWasebenziseni kunye la manyathelo xa kuvela ingxaki!\n\nXa kusenzeka into embi, sidla ngokuba nomsindo size sizibeke ityala. Kodwa abantwana bethu abafikisayo bafuna umntu oza kubanceda bafumane izicombululo. Baphulaphule, yamkele indlela abazibona nabaziva ngayo izinto yaye babulele ngokukuthemba.\n\nUkufundisa umntwana wakho ofikisayo ngendlela yokuhlangabezana neengxaki kuya kumnceda ubomi bakhe bonke. Sisipho sokwenene!", - "type": "template", - "note": "" - }, - { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Ezinye iingxaki eziye zaconjululwa ngabazali nabantwana babo abafikisayo:", - "type": "template", - "note": "" - }, - { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* Umntwana wam akafuni kuya esikolweni\n*Ndinexhala lokuba umntwana wam angakhulelwa okanye amithise umntu\n* Ndixhalabile ngezinto ezenziwa ngumntwana wam ofikisayo kwi-intanethi\n* Umntwana wam ofikisayo uncokola nabahlobo abangalunganga\n* Umntwana wam ofikisayo uyonqena\n* Umntwana wam ofikisayo akawenzi umsebenzi wakhe wesikolo\n* Kusenokwenzeka ukuba umntwana wam ofikisayo usebenzisa iziyobisi", - "type": "template", - "note": "" - }, - { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Ukuba ngumzali osemagqabini kukwathetha ukuthatha ixesha uzinyamekele suku ngalunye.", - "type": "template", - "note": "" - }, - { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Kuhle. Yaye kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Ukuba ngumzali kunzima. Kodwa kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Ukwenza nayiphi na kwezi zinto kukwenza ube ngumzali omangalisayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Abantwana abafikisayo bangachitha ixesha elininzi ngaphandle kwendlu okanye kwi-intanethi, apho kunzima ukuba sibagcine bekhuselekile. \n\nUkuthetha kunye ngeendawo ezikhuselekileyo nezingakhuselekanga, nendlela yokuthintela iingxaki, kunceda ngokwenene!", - "type": "template", - "note": "" - }, - { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Molweni, kuni nonke. \n\nNamhlanje umxholo wethu umalunga nokhuseleko lwabantwana abafikisayo. \n\nKuyimbopheleleko yethu njengabazali ukugcina abantwana bethu abafikisayo bekhuselekile ngamaxesha onke. Kufuneka siqinisekise ukuba abantwana bethu abafikisayo bakhuselekile kwiindawo esihlala kuzo. Kuyimbopheleleko yethu ukubenza bazi ngeendawo ezikhuselekileyo nezingakhuselekanga. \n\nKanti ikwayimbopheleleko yethu ukuqinisekisa ukuba bayaziqonda iingozi abanokuzichanaba kuzo xa bekwi-intanethi. Ngaloo ndlela abantwana bethu abafikisayo baya kuqola baze bakwazi ukwenza izigqibo ezizizo ukuze bazigcine bekhuselekile nabo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Today you will explore:", - "text": "Namhlanje uza kuhlola:", - "type": "template", - "note": "" - }, - { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", - "type": "template", - "note": "" - }, - { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", - "type": "template", - "note": "" - }, - { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Unxibelelwano yeyona nto ibalulekileyo!\n\nMakhe sibone oko kwenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: \"Ikho into eye yenzeka ngoxa ndiphume nabahlobo bam u @global.w_safe_teen_girl_2 no !@global.w_safe_teen_girl_3\"\n\n@global.w_safe_female_caregiver: \"Ndixelele, @global.w_safe_teen_girl_1\"", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Indoda esemotweni: “Hey nzwakazi. Kudala ndikujongile. Umhle nyhani, ngubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe ngu @global.w_safe_teen_girl_1”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Indoda esemotweni: “@global.w_safe_teen_girl_1, ungathanda ukuhamba nam sifumane into yokusela namashwamshwam? Yiza kaloku, khwela, sawukhawuleza sibuye ndiyakuthembisa…” \n\n@global.w_safe_teen_girl_1: Andiqiniseki ukuba kulungile ukwenza loo nto…”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “Unethamsanqa, mhlobam. Akwaba indoda ibingacela UKUNDIKHUPHA ize indithengele izipho. Ndiyakuxelela, ukuba akuyenzi lento ndiza kuxelela wonke umntu ukuba usisibhanxa!”", - "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." - }, - { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 sukuya! Lumka! Masigoduke. Kuyingozi ukuhamba nabantu ongabaziyo. Ngapha koko, mdala gqith’ kunawe lowa yaye ayilunganga le nto ayenzayo.\"\n\n@global.w_safe_teen_girl_1: “Hay ndixakiwe…”", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: \"Pfff, ndiyazidla ngento yokuba ungakhange ukhwele kula moto. Ibiyimeko eyingozi le, enkosi ngokundixelela!”", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." - }, - { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "Makhe sithethe ngoko kwenzekileyo @global.w_safe_teen_girl_1", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." - }, - { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Ncokolani kunye: \n\nYintoni ebiyingozi ngala meko?", - "type": "template", - "note": "" - }, - { - "SourceText": "The situation was risky because...", - "text": "Le meko ibiyingozi ngenxa yokuba...", - "type": "template", - "note": "" - }, - { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho \n* umhlobo ka @global.w_safe_teen_girl_1 ebemkhuthaza \n* Ukuhamba nendoda endala kubeka u@global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto \n* Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala \n* Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" - }, - { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "Makhe sicinge ngoko kwenzekileyo @global.w_safe_teen_girl_1:", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." - }, - { - "SourceText": "What was risky about that situation?", - "text": "Yintoni ebiyingozi ngala meko?", - "type": "template", - "note": "" - }, - { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "umhlobo ka @global.w_safe_teen_girl_1ebemkhuthaza", - "type": "template", - "note": "" - }, - { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Ukuhamba nendoda endala kubeka u @global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto", - "type": "template", - "note": "" - }, - { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala", - "type": "template", - "note": "" - }, - { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", - "type": "template", - "note": "" - }, - { - "SourceText": "All those things are true!", - "text": "Zonke ezo zinto ziyinyani!", - "type": "template", - "note": "" - }, - { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "Makhe sijonge omnye umzekelo wemeko eyingozi sikunye.", - "type": "template", - "note": "" - }, - { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: \"Umhlobo wam ebesoloko ethetha nomfana oyintanga yethu kwi-intanethi... Uza kumthumelela iifoto zakhe. Ngaba loo nto ibhetele kuba elingana nathi?”", - "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." - }, - { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: “Ungumhlobo olungileyo kwainto yokuba ukhathazeke ngaye. Ukuthumela iifoto ezivuselelayo inkanuko kuyingozi kakhulu nako.”", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." - }, - { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: \"Maxa wambi abantu abayiyo le nto bathi bayiyo kwi-intanethi – unokuthi ulingana nawe kodwa uyindoda endala eneminyaka engama-50. Okanye xa besohlukana, angathumela ezo foto kumntu wonke yaye umhlobo wakho angaziva ebuhlungu.”", - "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." - }, - { - "SourceText": "Let's talk about our teens' online safety.", - "text": "Masithethe ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", - "type": "template", - "note": "" - }, - { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Ziziphi ezinye iingozi ze-intanethi kubantwana abafikisayo kwezi ntsuku?", - "type": "template", - "note": "" - }, - { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo. \n* Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga\n* Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale\n* Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.\n* Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", - "type": "template", - "note": "" - }, - { - "SourceText": "Let's think about our teens' online safety.", - "text": "Masicinge ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", - "type": "template", - "note": "" - }, - { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Yiyiphi eyona ngozi inkulu kwi-intanethi kubantwana bethu abafikisayo kule mihla?", - "type": "template", - "note": "" - }, - { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo.", - "type": "template", - "note": "" - }, - { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga", - "type": "template", - "note": "" - }, - { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale", - "type": "template", - "note": "" - }, - { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.", - "type": "template", - "note": "" - }, - { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", - "type": "template", - "note": "" - }, - { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!\n\nMakhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi:\n* Imephu yendawo esihlala kuyo\n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi.\n\nMasenze ezi mephu siliqela ke ngoku. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki.", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Undidlel’ indlala! Awundimameli!! Ndiyakucaphukela!”", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Ncokolani kunye:\n\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "Masibuyele ku @global.w_consequence_teen_boy_1 neyakhe i @global.w_consequence_male_caregiver", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n \n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: \"Iyandixhalabisa into yokuba usoloko ubuya emva kwexesha endlini, @global.w_consequence_teen_boy_1. Singenza ntoni ukukunceda ukhumbule ukugoduka kwangexesha?\"\n\n@global.w_consequence_teen_boy_1: \"Ukuba ndigoduka kwangethuba, mhlawumbi ndingashiywa lixesha ngemizuzu engama-30?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncomanani ngendlela eniyisebenzisa kakuhle ngayo i-intanethi!. \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: YIngcamango entle leyo! Yaye simele senzeni xa ungawuthobeli lo mthetho? \n\n@global.w_consequence_teen_boy_1 uyambombozela): “Mgmluuhm”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Safety Plan", - "text": "Isicwangciso Sokhuseleko", + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: \"Yitsho kaloku, ndiyayazi ikhona into oyicingayo.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile…. Kuthekani: Ndimele ndiyokwenza umsebenzi wam wesikolo?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!", + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: \"Umsebenzi wakho wesikolo umele ukuba uwenzile kakade. Ukuba uyawulibala lo mthetho, kusengqiqweni ukuba ungadibani neetshomi zakho ngomso.\"\n\n@global.w_consequence_teen_boy_1: \"Kulungile, @global.w_consequence_male_caregiver.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Ngalo lonke ixesha uceba ukugcina isicwangciso sokhuseleko, cofa i @global.parent_point uze ubhiyozele impumelelo yakho!", + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Ngengomso...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani ixesha ngoku! Selibethile ixesha!”", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "Makhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi: \n* Imephu yendawo esihlala kuyo \n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki - ukuba umntwana wakho ukhona ngoku, ningayenza kunye ngoku!", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Uxolo @global.w_consequence_male_caregiver – hamba uyolala” \n\n@global.w_consequence_male_caregiver: Lidlule KUDALA ixesha obumele ukuba usekhaya ngalo!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "My family can join in now!", - "text": "Intsapho yam ingajoyina ngoku!", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: “Ndingachaza,@global.w_consequence_male_caregiver, ndingakwazi.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kusezinzulwini zobusuku yaye ubuye ekhaya emva kwexesha ebesivumelene ngalo. Noba siyintoni isizathu, umele uqonde ukuba ayamkelekanga loo nto. @global.w_consequence_female_caregiver yaye ndikhathazeke nyhani.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" }, { - "SourceText": "Let me try it out by myself", - "text": "Makhe ndiyizame ngoku ngokwam", + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: “Abahlobo bam bathe makhe ndihlale ixeshana. Bebesithi ndiyafeketha kuba ndifuna ukugoduka kwangoko.” \n\n@global.w_consequence_male_caregiver: “Ndiyazi kunganzima ukuthi hayi kubahlobo bakho. Masithethe ngakumbi ngale nto kusasa xa siye saphumla.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Inyathelo 1: Ziziphi iindawo ezibalulekileyo kwindawo enihlala kuyo?", + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: “Uxolo ngokukukhathaza yaye @global.w_consequence_female_caregiver.“ \n\n@global.w_consequence_male_caregiver: “Enkosi. Hamb’ uyolala ke ngoku, kodwa uze wazi, ukuba ubuye ekhaya sekubethe ixesha ebesivumelene ngalo, awuvumelekanga ukuphuma ngokuhlwa kwangomso.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imephu yendawo ahlala kuyo umntwana wakho ofikisayo, kunye nemifanekiso yazo zonke iindawo ezibalulekileyo njengezitrato, umzi wakho, isikolo, iivenkile, iindawo ezityelelwa ngumntwana wakho ofikisayo.", + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Inyathelo 2: Ziziphi iindawo ezikhuselekileyo nezingakhuselekanga?", + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Imizekelo yeziphumo\n* Izixhobo: Indlela yokunika imiphumo ezolileyo\nCACISA - VUMA - YENZA\n* Ingxoxo nemiphumo\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Ncokolani kunye:\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Ncokolani kunye: \n* Kutheni ukuza nemiphumo elolu hlobo kungakhange kusebenze?", "type": "template", "note": "" }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver bendinomsindo", "type": "template", - "note": "" + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Inyathelo 3: Ningayifumana phi inkxaso?", + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver andizange ndivumele @global.w_consequence_teen_boy_1 acacise", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nentlekele? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha. \n\nApha ngezantsi kukho iindawo ezinokuba luncedo", + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Imiphumo ayizange incokolwe kwangaphambili no- @global.w_consequence_teen_boy_1", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Maxa wambi, singazifumana sisengxakini.\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", + "SourceText": "The consequence was too strong", + "text": "Umphumo ubungqongqo kakhulu", "type": "template", "note": "" }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Inyathelo 4: Ziziphi iindawo eziyingozi kwi-intanethi yaye ungazenza njani zikhuseleke?", + "SourceText": "Giving a consequence this way did not work well because...", + "text": "Ukuza nemiphumo ngolu hlobo akuzange kusebenze kakuhle ngenxa yokuba...", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncoma abantwana bakho abafikisayo ngendlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Ncokolani kunye:\n* Yiyiphi imithetho abantwana bakho abafikisayo abathanda ukuyaphula? \n* Nguwuphi umphumo onokuwusebenzisa kumgaqo ngamnye owaphulayo? \n\nImiphumo ifanele ibe: \nSESIKWENI, (kungekhona ngqwabalala kakhulu)\nIKHAWULEZE (kwenze ngokungxamisekileyo) \nNGOKUQHUBEKAYO (ngendlela efanayo rhoqo).\n\nNcomanani nize nikhuthazane – sinokomelezana!", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Yiphawule indlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Cingani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", + "SourceText": "Let's talk about this story", + "text": "Masithethe ngeli bali", "type": "template", "note": "" }, { - "SourceText": "MAPS", - "text": "IIMEPHU", + "SourceText": "Why did using a consequence work well this time?", + "text": "Kutheni ukusebenzisa umphumo kusebenze kakuhle kweli tyeli?", "type": "template", "note": "" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Yenzani IIMEPHU kunye nomntwana wakho ofikisayo zemimandla ekhuselekileyo nengakhuselekanga kwindawo ohlala kuyo nakwi-intanethi. Thetha ngendlela anokugcina ngayo inkcazelo yakhe, iifoto neevidiyo ziyimfihlo kwi-intanethi. Mxelele ukuba into ayifaka kube kanye kwi-intanethi, ihlala apho ngonaphakade. Kusenokwenzeka ukuba banomzekelo abawaziyo womhlobo wabo.", + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 nowakhe u @global.w_consequence_male_caregiver bancokole ngemiphumo bobabini bezolile", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "RULES", - "text": "IMIGAQO", + "SourceText": "They agreed on consequences together", + "text": "Bavumelene bobabini ngemiphumo", "type": "template", "note": "" }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Yenza IMIGAQO kunye nomntwana wakho ofikisayo ngokusebenzisa ngokukhuselekileyo ii-app neewebhsayithi azithandayo. \n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver usabele ngokuzolileyo kodwa ngokuqinileyo xa u @global.w_consequence_teen_boy_1 ebesophula umgaqo", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Online Safety Story", - "text": "Ibali Lokhuseleko kwi-Intanethi", + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver umphulaphule u @global.w_consequence_teen_boy_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "AMNESTY", - "text": "UXOLELO", + "SourceText": "The consequence was realistic and appropriate", + "text": "Umphumo ubusengqiqweni yaye ufanelekile", "type": "template", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Yenza isivumelwano SOXOLELO. Ukuba kwenzeka into emcaphukisayo, engamonwabisiyo okanye emoyikisayo, angathetha nawe yaye awuyi kuba nomsindo okanye umohlwaye, kwanokuba bebesenza into engafanelekanga.\n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", + "SourceText": "Using a consequence worked well this time because...", + "text": "Ukusebenzisa umphumo kusebenze kakuhle kweli tyeli ngenxa yokuba...", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty Story", - "text": "Ibali Loxolelo Lokhuseleko", + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Indlela oqala ngayo imiphumo ezolileyo ibalulekile. Khumbula, xa ubandakanya umntwana wakho ofikisayo, izinto ziba bhetele!", "type": "template", "note": "" }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Ukuba ngumzali kwidijithali kuyafana nokuba ngumzali kwiimeko eziqhelekileyo. Uthathe INYATHELO ELIKHULU lokugcina umntwana wakho ekhuselekile kwindawo ohlala kuyo KUNYE nakwi-intanethi. Wenza kakuhle!", + "SourceText": "EXPLAIN", + "text": "CACISA", "type": "template", "note": "" }, { - "SourceText": "Resources to help in the community", - "text": "Izinto zokunceda kwindawo ohlala kuyo", + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Qiniseka ukuba nobabini nizolile. Tsala umoya izihlandlo ezimbalwa. Mcacisele umntwana wakho ofikisayo isizathu sokuba ukhathazwe sisimilo sakhe.\n\nCacisa isizathu sokuba lo mgaqo ubalulekile. Ungayichaza indlela oziva ngayo - kulungile ukutsho ukuba udanile.", "type": "template", "note": "" }, { - "SourceText": "Online Safety Resources", - "text": "Izinto Zokhuseleko kwi-Intanethi", + "SourceText": "AGREE", + "text": "VUMA", "type": "template", "note": "" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Ceba imiphumo nomntwana wakho ofikisayo yokuwulandela nokungawulandeli umgaqo.\n\nCela ezakhe izimvo. Thethani de nivumelane ngento esengqiqweni.\n\nYenza umphumo WOKUNGAWULANDELI umgaqo nengenelo yaxa eye WAWULANDELA umgaqo.", "type": "template", "note": "" }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Ukuba anikayenzi kunye okwangoku, yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", + "SourceText": "ACT", + "text": "YENZA OKUTHILE", "type": "template", "note": "" }, { - "SourceText": "Safety Plan Activity", - "text": "Umsebenzi Wesicwangciso Sokhuseleko", + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Xa umntwana wakho ofikisayo elandela umgaqo, mncome umnike namalungelo!", "type": "template", "note": "" }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Kuhle ngeyona ndlela! Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "Uya kuziva ehlonitshwa yaye exatyiswa. Khumbula: Okukhona sibancoma, kokukhona beya kubonisa isimilo esichubekileyo!", "type": "template", "note": "" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Sibuhlungu yimini enzima le. Siyazingca ngawe ngazo zonke izinto ozenzileyo kwezi veki zidlulileyo.", + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Xa umntwana wakho ofikisayo engawulandeli umgaqo, landelela umphumo.", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe indlela yokukuxhasa njengomzali kwixesha elizayo.", + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Xa umntwana wakho esaphula umgaqo, ngokuzolileyo nika umphumo Oku kumele kwenziwe NGOKUSESIKWENI, (kungekhona ngokungqwabalala kakhulu), NGOKUKHAWULEZA (ukwenze ngokungxamisekileyo) NGOKUQHUBEKAYO (ngendlela efanayo rhoqo).", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "SIVUYISANA NAWE! Uphumelele! Uye wakha izakhono ezili-11 zokuba ngumzali. \n\nUphumeze into enkulu. Kubonisa ukuba uyikhathalele intsapho yakho. \n\nMasikuvuyele size sicebe inkxaso yexesha elizayo kwi-@global.parent_app.", + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "Ubuya kuthi umphumo ozolileyo kubantwana bakho abafikisayo abaphikisanayo ebudeni besidlo unjani? \n\nKhumbula kufuneka ube: \nMHLE NOKO - UNGXAMISEKE - UQHUBEKE", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Molweni, kuni nonke.\n\nUmxholo wanamhlanje ungokubhiyoza kunye namanyathelo alandelayo.\n\nBekumangalisa, bekumnandi ukuba kunye nawe kolu hambo. Namhlanje sibhiyozela uhambo lwethu kunye. \n\nNamhlanje sibhiyozela zonke izinto esizifundileyo kulo lonke uqeqesho.", + "SourceText": "Not seeing any friends for a month", + "text": "Ukungababoni abahlobo bam kangangenyanga", "type": "template", "note": "" }, { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Namhlanje siza kubhiyoza, sijonge izinto ezidlulileyo size sikhangele phambili:", + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Kusenokuba nzima kuwe ukwenza loo nto yaye kunokuba ngqwabalala kakhulu!", "type": "template", "note": "" }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "*Ingxubusho nokucinga\n* Izixhobo: Indlela yokuxhasana\nUKUDIBANA - UKUFOWUNA -UKUTHUMELA UMYALEZO - UKWABELANA\n* Ukuceba inkxaso", + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Ukurhoxisa izicwangciso zomhla wabo wokuzalwa kwisithuba senyanga", "type": "template", "note": "" }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Namhlanje uyabhiyoza uze ucinge ngamava akho.", + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Kukude kwikamva, yaye kungqwabalala futhi!", "type": "template", "note": "" }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Wena nentsapho yakho nifunde into eninzi gqitha. Makhe sibuyele emva size sibone izinto ezitshintshileyo.", + "SourceText": "No TV this evening", + "text": "Anizombukela UMABONAKUDE ngokuhlwanje", "type": "template", "note": "" }, { - "SourceText": "Reflect", - "text": "Ukucinga emva", + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Heke, oku kubonakala kulungile yaye kunokwenziwa ngokukhawuleza", "type": "template", "note": "" }, { - "SourceText": "Listen and reflect", - "text": "Mamela uze ucingisise", + "SourceText": "Self-care is a key parenting tool.", + "text": "Ukuzikhathalela sisixhobo esiphambili sokuba ngumzali.", "type": "template", "note": "" }, { - "SourceText": "Read and reflect", - "text": "Funda uze ucingisise", + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Kuyavuyisa ukuva ukuba uziva kamnandi namhlanje. Uyamangalisa!", "type": "template", "note": "" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Vala amehlo uze uphole.\n\nCinga ngobomi bosapho lwakho ngaphambi kokuba waqalisa uhambo lwakho ngale app.\n \nCinga ngezakhono oye wazifunda:\n* Ukuzikhathalela\n* Ixesha enilichitha kunye\n* Ncoma\n* Imiyalelo eyakhayo\n* Ukulawula uxinezeleko\n* Ibhajethi yosapho\n* Imithetho\n* Imiphumo ezolileyo\n* Ukusombulula iingxaki\n* Ukhuseleko lwabantwana abafikisayo\n* Ukuhlangabezana neengxaki\n\nCingisisa ngohambo – belunjani kuwe:\n* Ncokolani ngamacebiso nangamava\n* Cingisisa uze ufunde kumabali\n* Qhelisela izakhono kunye nomntwana wakho ofikisayo\n\nNgaba kukho nto itshintshileyo kuwe nakusapho lwakho?\n\nYintoni oyidingayo ukuze uqhubeke usebenzisa izakhono?", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Uxolo ngokuba iimeko zinzima kanye ngoku. Tsala umoya uze uzazi ukuba uyaxatyiswa.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about what has changed.", - "text": "Makhe sithethe ngezinto ezitshintshileyo.", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela nina nonke, luze lunincede nicebele ikamva. \n\nKutheni ningakhe nicebe ukutya kwetheko kunye,nize nilungise umculo ukuba uyathanda ukudanisa!", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Ncokolani kunye:\n* Yintoni etshintshileyo kwintsapho yakho?\n* Zintoni onebhongo ngokuzenza?\n\nNingalibali ukuncoma kunye nokukhuthazana!", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "Ulugqibile uqeqesho lwale veki. \n\nUqeqesho lwaleveki izayo luza kubhiyozela wena, yaye unokukhetha inkxaso oyifunayo ukubheka phambili. \n\nUngalungiselela isidlo esimnandi ukuze ubhiyoze - into othanda ukuyitya, okanye umculo othanda ukuwuphulaphula!", "type": "template", "note": "" }, { - "SourceText": "MEET", - "text": "DIBANANI", + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "Ukunye nomntwana wakho ofikisayo khetha enye yezi meko (okanye ucinge ibe nye ngokwakho) Jongani oopopayi nize nincokole ngoko niya kukwenza kunye ukuba oku kuye kwenzeka kumhlobo okanye kwintsapho yakho. \n\nYaye khumbula: PHEFUMLA - PHULAPHULA - CINGA", "type": "template", "note": "" }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Qhubekani nidibana rhoqo ukuze nixhasane njengabazali.", + "SourceText": "prepare for a possible crisis with their teens", + "text": "lungiselela ingxaki enokubakho kunye nabantwana babo abafikisayo", "type": "template", "note": "" }, { - "SourceText": "CALL", - "text": "FOWUNANI", + "SourceText": "prepare for a possible crisis with your teen", + "text": "lungiselela ingxaki enokubakho kunye nomntwana wakho ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "Yibani 'ngabazali abazitshomi’ ukuze nifowunelane xa nikhathazekile okanye ningazi ukuba nenze ntoni.", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "Umntwana wam undichazele ukuba uye wanengxaki enkulu kodwa khange ndazi ukuba ndenze ntoni ngayo.", "type": "template", "note": "" }, { - "SourceText": "TEXT", - "text": "THUMELA UMYALEZO", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Mncome umntwana wakho ofikisayo ngoku kuchazela; akululanga ukuyenza lonto! Ukhumbule ukuba unokusebenzisa zonke izakhono ozifumene kwibhokisi yakho yezixhobo: Nqumama sebenzisa amanyathelo amane okusombulula ingxaki kwaye cela inkxaso efunwa nguwe nomntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Thumelani umyalezo qho ngeveki ukuze nabelane ngezinto enizenze kakuhle.", + "SourceText": "Get support", + "text": "Fumana inkxaso", "type": "template", "note": "" }, { - "SourceText": "SHARE", - "text": "YABELANANI", + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Incoko indenze ndaziva ndingakhululekanga kuba indikhumbuze ngamava abuhlungu endandikhe ndahlangabezana nawo.", "type": "template", "note": "" }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Yabelanani nge-@global.parent_app nize nincede ezinye iintsapho ziqale uhambo lwazo.", + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Xa sikhumbula lomava, kuqhelekile ukuziva ucaphukile okanye unomsindo. Kubalulekile ukuba ufumane ixesha laxa uzolile ukuze ukwazi ukucinga ngenkxaso oyifunayo. Kusenokufuneka ube nomntu othetha naye.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "End of programme check-in", - "text": "Uphela kwenkqubo yokungena", + "SourceText": "One of us did not feel comfortable.", + "text": "Omnye wethu uzive engakhululekanga.", "type": "template", "note": "" }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "Uye wasebenzisa i@global.parent_app kwezi nyanga zidlulileyo, kodwa ukuba ngumzali kumntwana ofikisayo kokwexesha elide! Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sihlole ukuba ngumzali kwakho.\n\nNyaniseka. Ukhumbule ukuba izigidi zabazali zivakalelwa ngale ndlela ovakalelwa ngayo kwaye sonke siyayifuna inkxaso. Awukho wedwa!", + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Kunzima ukuthetha ngalento. Khangela ixesha xawupholile ukuze uthethe ngayo. Siyayiqonda ukuba kulula ukungathethi ngezi zinto siye sinqwenele ukuba zingaze zisehlele. Sekunjalo kodwa, ukufunda ukujamelana nengxaki kufana nokuthenga i-inshorensi; SOLOKO kufanelekile ukucinga ngazo kwaye uzilungele.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Injongo yakho ibikukuncokola ngemeko ekukho ingxaki kuyo kunye nomntwana wakho ofikisayo nize nenze icebo sokujamelana nayo.", "type": "template", "note": "" }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Cebani ngendlela eniza kuxhasana ngayo ukususela ngoku. \n\nNingasebenzisa amacebiso avela kwezinye iintsapho okanye nizicingele awenu!", + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Zonke iintsapho ziba neengxaki. Xa silungiselela kunye yaye sisazi ukuba masilufumane phi uncedo NGAPHAMBI kokuba kwenzeke into embi, singoyisa nayiphi na ingxaki.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Molweni, kuni nonke.\n\nNamhlanje siza kuncokola ngeengxaki.\n\nIingxaki zingavela naphi na. Iingxaki zingavela nanini na. Ngenxa yoko, kubalulekile ukuba njengentsapho nibe nezicwangciso ukuba naliphi na ilungu lentsapho lizibona lisengxakini. \n\nKubalulekile ukuba nezicwangciso ukuze ilungu ngalinye lintsapho lizive likhuselekile. \n\nXa sijongene neengxaki, khumbula ukuthi khebevu kancinci, uphefumle, uze uhlale uzolile. Oko kuya kukunceda ujongane bhetele neengxaki.", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Siyazingca ngawe. Uye wabonakalisa amandla, isibindi kunye nokuyithanda intsapho yakho. Abazali bagqwesile. Uyamangalisa. \n\nLe ngoma yeyabazali nokuba baphi na. Mamela, danisani kunye nize nizibhiyozele!", + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Kuluncedo ukuqhelisela ukuhlangabezana nengxaki ngaphambi kokuba yenzeke. \n\nKhawujonge ezi zihlandlo zihlanu zeengxaki zentsapho. Khawuzibone ungumzali. Ubungenza ntoni?\n\nKhumbula: PHEFUMLA - PHULAPHULA - CINGA", "type": "template", "note": "" }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "Wamkelekile! Kumnandi ukuba kunye nawe apha. Le veki INGAWE. \n\nKolu qeqesho lokukwamkela uya: \n* Kufumana izixhobo zokuzinyamekela \n* Vumelanisa le app neemfuno zakho", + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Ingxaki 1: @global.w_crisis_teen_boy_2 imilo yasesikolweni", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle.", + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: \"Andizange ndiyenze le nto ngaphambili. Yaye ngoku baza kundigxotha\"", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Uxolo ngokuba iimeko zinzima ngoku. Kuyinto eqhelekileyo ukuba usokole maxa wambi. Khumbula ukuba awukho wedwa!", + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "text": "Ingxaki 2: @global.w_crisis_teen_girl_1 uyakhulelwa", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Kutheni i-@data.workshop.w_self_care.short_title?", + "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ndineentloni ezingathethekiyo. Andazi ukuba mandenze ntoni\"", "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Asisoloko sizinyamekela ngokwaneleyo. Kodwa oku kubaluleke kakhulu, ingakumbi njengomzali! \n\nUkunciphisa uxinezeleko lwethu nokuzinyamekela kunceda thina KUNYE nabantwana bethu abafikisayo.", + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "text": "Ingxaki 3: @global.w_crisis_teen_boy_2 umithisa intombazana", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukuzinyamekela. \n\nKukho amaxesha apho siba nemiceli-mngeni, apho sijamelana neengxaki yaye singazi ukuba masenze ntoni. Kubalulekile ukuzinyamekela sifunde ubugcisa bendlela esinokuzigcina ngayo sizolile xa kunokuvela iingxaki, imiceli-mngeni okanye eminye imiba. \n\nXa sizolile sikwimeko entle yokucinga ngendlela eyiyo size size nezisombululo ezifanelekileyo kuwo nayiphi na imiceli-mngeni esinokujamelana nayo.", + "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Andifuni ukuba nomntwana\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Namhlanje uya kufumana imisebenzi emi-3 enokukunceda ukwazi ukuzinyamekela, yaye siya kukubuza\nimibuzo embalwa ukuqinisekisa ukuba i-app ikulungele kusini.", + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "Ungasabela njani ku @global.w_crisis_teen_boy_2?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Umsebenzi wokuphola\n* Umsebenzi wokuqonda\n* Umsebenzi womvuzo\n* Izixhobo: * Indlela yokongeza ukuzinyamekela\n* Vumelelanisa le app neemfuno zakho\n* Amacebiso asebenzisekayo ekhaya", + "SourceText": "Crisis 4: Someone in the family gets sick", + "text": "Ingxaki 4: Kugula umntu entsatsheni", "type": "template", "note": "" }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "Makhe siyizame size senze umsebenzi omfutshane wokuphumla sonke!", + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "\"Uvavanyo lufumanise ukuba ndine-HIV. Ndiyoyika ndiza kufa”", "type": "template", "note": "" }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "Njengabazali, sisoloko singenalo ixesha lokuzinyamekela - kodwa kubaluleke kakhulu ukuyenza le nto! Ukunciphisa uxinezeleko lwethu kunceda thina KUNYE nabantwana bethu abafikisayo. \n\nMakhe sithathe inyathelo lokuqala size senze umsebenzi omfutshane wokuphumla sonke.", + "SourceText": "How could you respond in this situation?", + "text": "Ungasabela njani kule meko?", "type": "template", "note": "" }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Ukunikela ingqalelo kweyona nto sikwazi kakuhle ukuyenza kusinceda sinikele ingqalelo kwizinto ezakhayo. \n\nMakhe sithathe ithutyana sizincome. Siza kukubonisa indlela yokukwenza.", + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Ingxaki 5: @global.w_crisis_teen_girl_1 unyanzelwa lisoka lakhe ukuba alale nalo", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.\n\nXelelanani ngokuvakalayo: \"Ndenze kakuhle ngoku...\"\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: \"Enyanisweni bendingafuni. Ngoku ndiza kumitha okanye ndigule. @global.w_crisis_female_caregiver, Ndoyika kakhulu...\"", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Recognise", - "text": "Qaphela", + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "Ungasabela njani ku @global.w_crisis_teen_girl_1?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Thatha ithutyana uzincome. \n\nNgoku siza kukubonisa ukuba ungenza njani.", + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Khumbulani ukuxhasna nokukhuthazana. Kunzima ukuhlala uzolile nokuphulaphulana xa kukho ingxaki - siyazidla ngawe.", "type": "template", "note": "" }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.", + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "Ngaba ukhe wathetha kunye nomntwana wakho ofikisayo ukuba niza kwenza ntoni xa kukho ingxaki?", "type": "template", "note": "" }, { - "SourceText": "\"Well done to me for...\"", - "text": "\"Ndenze kakuhle ngoku...\"", + "SourceText": "Crisis Examples", + "text": "Imizekelo Yengxaki enkulu", "type": "template", "note": "" }, { - "SourceText": "Showing love to my children", - "text": "Bonisa uthando ebantwaneni bam", + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "Ungumzali ozimiseleyo. Zingce - loo nto inkulu kwangokunokwayo!", "type": "template", "note": "" }, { - "SourceText": "Getting up even though I felt tired", - "text": "Ukuvuka nangona ndiziva ndidiniwe", + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Kuhle ukubona ukuba ukunye nathi kolu hambo lokuba ngumzali! \n\nGqiba i-@local.workshop_data.in_text_title uze ufunde ngeyona ndlela yokusabela xa umntwana wakho ofikisayo ekufuna kakhulu.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Smiling at someone", - "text": "Ukuncumela umntu", + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "text": "Asoze sazi iza kubakho nini na ingxaki, kodwa SINAKO ukuyilungela! \n\nQalisa uqeqesho olulandelayo ukuze ubone ukuba wena nomntwana wakho ofikisayo ningayenza njani le nto kunye.", "type": "template", "note": "" }, { - "SourceText": "Making food to stay strong", - "text": "Ukwenza ukutya okundigcina ndomelele", + "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Ngomso uqeqesho lokugqibela lwe @global.parent_app luya kube likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqsho olutsha. Ngaloo ndlela, ungayigqiba iseti yakho yezakhono zokuba ngumzali uze ubone omawukwenze ngokulandelayo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Spending time with my children", - "text": "Ukuchitha ixesha nabantwana bam", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "Wenze kakuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho lokugqibela ukuze ucinge ngohambo lwakho lwe@global.parent_app noko unokukwenza ngokulandelayo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Helping my children with schoolwork", - "text": "Ukuncedisa abantwana bam kumsebenzi wesikolo", + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "Ewe, @global.w_crisis_female_caregiver enyanisweni usebenzise bonke obo buchule – yaye nawe ungayenza loo nto!", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Yitsho ngokuvakalayo ukuba uyakwazi.\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", + "SourceText": "All these skills can help in a crisis.", + "text": "Bonke obu bubuchule bunokunceda xa kukho ingxaki.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Well done! Try to do this every day.", - "text": "Usebenzile! Zama ukwenza lento usuku ngalunye.", + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "Ingxaki ingehlela nabani na. \n\nMakhe sibone oko kwenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Things to praise yourself for:", - "text": "Izinto onokuzincomela zona:", + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: \"Torho sthandwa, ubonakala ukhathazeke nyhani, uyafuna ukundibalisela ukuba kwenzeke ntoni?\"", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Ukubonisa uthando ebantwaneni bam \n* Ukuvuka nangona uziva udiniwe. \n* Ukuncumela umntu \n* Ukwenza ukutya okundigcina ndomelele \n* Ukuchitha ixesha nabantwana bakho \n* Ukuncedisa abantwana bakho kumsebenzi wesikolo", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: \"Ngumalume, u… u… undibambile.\" \n\n@global.w_crisis_female_caregiver (ecinga): \"Khawuthath’ umoya... Ufuna ntoni umntanam? Ufuna ndizole ndize ndiphulaphule\" \n\n@global.w_crisis_female_caregiver: \"Yizokuhlala apha ecaleni kwam. Thath’ ixesha lakho, ndiphulaphule.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Have a hot drink", - "text": "Fumana isiselo esishushu", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: \"Yinyani, u… u… the mandiyenze! Uthe mandilale naye! Bendingafuni, ndiyafunga, ndide ndathi HAYI, kodwa uthe ndiza kuba sengxakini.\"\n\n@global.w_crisis_female_caregiver: Enkosi ngokundichazela le nto. Awukho sengxakini. Asilotyala lakho eli.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Call a friend or relative", - "text": "Fowunela umhlobo okanye isizalwana", + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: \"Izolo xa ubuyokubona @global.w_crisis_adult_friend. Ufikile nje yaye yenzeke ngelo xesha le nto.\"\n\n@global.w_crisis_female_caregiver: \"Kulungile, ndiyakukholelwa mntana. Inkulu le nto yaye siza kufumana indlela yokufumana uncedo esiludingayo. Singaya phi ukuze sifumane uncedo?\"\n\n@global.w_crisis_teen_girl_1: \"Esikolweni sam?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Have a relaxing bath", - "text": "Zifake emanzini uhlambe uphole", + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: \"Yha, masiye siye ekliniki. Baza kuyazi ukuba masenze ntoni ukuze uncedakale. Ngaba ivakala ilungile loo nto kuwe?\n\n@global.w_crisis_teen_girl_1: \"Ewe… Ilungile… Kodwa ungahamba nam?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Read", - "text": "Funda", + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: \"Nakanjani ndiza kuhamba nawe. Yaye @global.w_crisis_teen_girl_1? Khumbula ayilotyala lakho eli.” Ndiyakuthanda. Ungumntu olungileyo. Siza kudlula kule nto.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Watch TV", - "text": "Bukela UMABONAKUDE", + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "Enye ingxaki ekhathaza abazali abaninzi lugonyamelo nolwaphulo-mthetho. Makhe sijonge kunye umzekelo.", "type": "template", "note": "" }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali. Baliselanani:\n\nZiziphi izinto ezincinci ezikwenza wonwabe?", + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ukhangeleka ukhathazekile ukususela izolo. Yintoni ingxaki?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye.\n\nSisebenzise esi sakhono xa usekhaya kwaye sifumane nanini na kwi-@global.parent_centre yakho!", + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: \"Izolo mna neetshomi zam siye kumdlalo webhola ekhatywayo. Abanye abafana abebenxilile baye baqalisa ukulwa nomhlobo wam.\"\n\n@global.w_crisis_male_caregiver_1: \"Qhubeka, ndiphulaphule. Ndiyathemba awukhange ulwe?\"", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Reward", - "text": "Umvuzo", + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: \"Bendingafuni, kodwa bendingenakubukela nje ndibavumele babethe umhlobo wam, ngoko…\"\n\n@global.w_crisis_male_caregiver_1: \"Ngoko, ulwile ukuze ukhusele umhlobo wakho?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Sonke kufuneka sizivise kamnandi!", + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Wonke umntu ebesilwa. Ndibone umntu ebaleni kububutyadidi ligazi. Ebekhangeleka … eswelekile.\"", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." }, { - "SourceText": "What small thing makes you happy?", - "text": "Yintoni encinci ekwenza wonwabe?", + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: \"Ndiyavuya ngokundixelela ngale nto, @global.w_crisis_teen_boy_1. Ngoku masihlale kunye phantsi size sincokole ngokuba simele sifake amapolisa okanye omnye umntu oza kusinceda.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Kuhle! Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali!", + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: \"Enkosi, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Siza kudlula kule nto. Khumbula, siya kukuxhasa njengentsapho.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_1 okanye nantoni na eyenye oyinandiphayo.", + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Neyona nto incinci oyenzayo ibalulekile. Siyathemba ukuba uyazidla ngesiqu sakho nawe.", "type": "template", - "note": "The string @local.name_1 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_2 okanye nantoni na eyenye oyinandiphayo.", + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nengxubusho\n* Ibali nengxubusho\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The string @local.name_2 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_3 okanye nantoni na eyenye oyinandiphayo.", + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nokucamngca\n* Ibali nokucamngca\n* Izixhobo: Indlela yokuhlangabezana neengxaki\nPHEFUMLA - PHULAPHULA - CINGA\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The string @local.name_3 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_4 okanye nantoni na eyenye oyinandiphayo.", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Le ibiyimeko enzima ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver! Oku kunokwenzeka emakhwenkweni nasemantombazaneni.", "type": "template", - "note": "The string @local.name_4 should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_5 okanye nantoni na eyenye oyinandiphayo.", + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "Usebenzise buphi ubuchule u @global.w_crisis_female_caregiver?", "type": "template", - "note": "The string @local.name_5 should not be translated." + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Izinto onokuzenza ukuze uzivuze:", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "Le ibiyimeko enzima ku @global.w_crisis_teen_boy_1 no @global.w_crisis_male_caregiver_1!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Fumana into yokuphunga\n* Fowunela umhlobo okanye isizalwana sakho \n* Ngena emanzini uhlambe uphole \n* Funda \n* Bukela UMABONAKUDE", + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "Usebenzise buphi ubuchule u @global.w_crisis_male_caregiver_1?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." }, { - "SourceText": "RELAX", - "text": "PHOLA", + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Ingxaki inokusenza sizive sinomsindo okanye singenamncedi. Kodwa eli lithuba abantwana bethu abafikisayo abadinga ukuba siphefumle, siphulaphule size sicinge.", "type": "template", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Yenza umsebenzi oza kukupholisa okhawulezileyo wemizuzu engama-30.", + "SourceText": "BREATHE", + "text": "PHEFUMLA", "type": "template", "note": "" }, { - "SourceText": "RECOGNISE", - "text": "QAPHELA", + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Hlala uzolile. Zibuze ukuba ‘umntwana wam ofikisayo udinga ntoni ngoku’", "type": "template", "note": "" }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Nqumama kancinane uze ucinge ngento enye OYE wayenza kutshanje oye wayenza kakuhle! Yitsho ngokuvakalayo ukuba uyakwazi \"Ndenze kakuhle ngoku …\"", + "SourceText": "LISTEN", + "text": "PHULAPHULA", "type": "template", "note": "" }, { - "SourceText": "REWARD", - "text": "UMVUZO", + "SourceText": "Tell them you are there for them and love them.", + "text": "Mxelele ukuba ukunye nabo yaye uyabathanda.", "type": "template", "note": "" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Khumbula ukuba ufanelwe lixesha lokuzimamela nawe! Yintoni ekwenza wonwabe?", + "SourceText": "THINK", + "text": "CINGA", "type": "template", "note": "" }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Njengoko ngoku uye wakha ubuchule bokuzinyamekela, masiqinisekise ukuba i- @global.weekly_workshops yakho ikulungele.", + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Thetha nomntwana wakho ofikisayo. Yintoni enokunceda le meko? Kusenokufuneka wenze izicwangciso ezingxamisekileyo ngoku, uze wenze izicwangciso zexesha elide kamva.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "Ungazingca ngesiqu sakho ngokukhangela iindlela zokufumana uncedo!", "type": "template", "note": "" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Nanini na unako, phola, qaphela uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", + "SourceText": "How are you feeling today?", + "text": "Uziva njani namhlanje?", "type": "template", "note": "" }, { - "SourceText": "Relax activity", - "text": "Umsebenzi wokuphola", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Kuhle kuba namhlanje izinto zihamba kakuhle! Yintoni into enye ehambe kakuhle namhlanje? Khumbula ukuzincoma ngaloo nto.", "type": "template", "note": "" }, { - "SourceText": "Recognise activity", - "text": "Umsebenzi wokuqaphela", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Uxolo ngokuva ukuba uxakanisekile namhlanje. Wenze kakuhle ngokuphawula ezo mvakalelo, nokuzama ukuzola uze uzicingele. Umisela umzelelo obalaseleyo kwintsapho yakho.", "type": "template", "note": "" }, { - "SourceText": "Reward activity", - "text": "Umsebenzi womvuzo", + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Uqheliselo lweveki lwasekhaya lwenzelwe ukunika umntwana wakho ofikisayo imiyalelo eyakhayo.\n\nKhumbula – YIBA SENGQIQWENI, YIBA NGOWAKHAYO, THETHA NGOKUCACILEYO = FUMANA KANYE LE NTO UYIFUNAYO (kangangoko kunokwenzeka kumntwana wakho ofikisayo!)", "type": "template", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Ixesha ngalinye uphola, cinga into ethile oye wayenza kakuhle okanye uzivuze, cofa i- @global.parent_points bhiyozela impumelelo yakho!", + "SourceText": "Did you have any challenges?", + "text": "Ngaba uye wanayo imiceli-mngeni?", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "Ulugqibile uqeqesho lwale veki.\n\nSiza kuphinda senze eminye imisebenzi yokuzinyamekela xa udibana neqela lakho okokuqala - nonke nifanelwe kukuzinyamekela okuthe kratya!", + "SourceText": "What challenge did you have?", + "text": "Loluphi ucelo-mngeni oye wanalo?", "type": "template", "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki 5 kwi-@global.parent_app.\n\nUqeqesho olutsha lokuba ngumzali lukulindele kwaye lunamacebiso endlela yokuhlala uzolile ibe usemandleni xa abantwana bethu abafikisayo besicaphukisa.", + "SourceText": "My teenager did not want to follow the instruction.", + "text": "Umntwana wam ofikisayo khange afune ukulandela umyalelo.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki 5 kwi-@global.parent_app.\n\nUqeqesho olutsha lokuba ngumzali lukulindele kwaye lunamacebiso endlela yokuhlala uzolile ibe uzibambile xa abantwana bethu abafikisayo besicaphukisa.", + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Khange ndilifumane ixesha lokuba kunye nomntwana wam ofikisayo.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Sinoqeqesho olutsha olumalunga nokulawula umsindo kunye noxinezeleko. Luza kukunceda uzinyamekele.", + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Ndiye ndamnika umyalelo ongakhuthaziyo endaweni yomyalelo okhuthazayo.", "type": "template", "note": "" }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala? Usebenzile ngokuqonda indlela wena kunye nabanye abantu enivakalelwe ngayo namhlanje! Ungalibali ukuba ngomso, lusuku olutsha kraca.", + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Endaweni yokumnika umyalelo okhuthazayo ngento amakayenze, ndiye ndamshawuta umntwana wam xa ebengaziphethanga kakuhle.", "type": "template", "note": "" }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Sonke sikhe sizive ngathi izinto ziyasongamela ngamanye amaxesha. Ukutsala umoya kuyanceda! \n\nGqiba i-@local.workshop_data.in_text_title ukuze ufumane izixhobo eziluncedo ngendlela yokujamelana noxinezeleko.", + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Imiceli-mngeni ephambili ye-@local.number_of_challenges abajongene nayo abanye abazali:", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @local.number_of_challenges should not be translated." }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Unjani umlinganiselo woxinezeleko lwakho kule veki? Zama ukutsala umoya kambalwa ngaphambi kokuba usabele kumntwana wakho ofikisayo - kwenza umahluko omkhulu.", + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Ndiyaqonda; kufuneka sibanike ixesha abantwana bethu ukuze bafunde ukulandela imiyalelo. Yiba nomonde, phinda uzame uze ungalibali ukubancoma qho belandela umyalelo!", "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "Usebenzile ngokutsala umoya ngaphambi kokusabela kumntwana wakho ofikisayo! Qho xa usenza unqumamo, uye ukwazi ukuzibamba.", + "SourceText": "Do you want to try one of the following things?", + "text": "Ngaba ufuna ukuzama enye yezi zinto zilandelayo?", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nNgokugqiba i@local.workshop_data.in_text_title kuqala, ubeka isiseko esibaluleke ngokwenene: Ukuba uziva kamnandi, usapho lwakho luyokwenza ngcono nalo!", + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Ndimele ndicinge ngexesha qho ngosuku apho ndinokuchitha imizuzu emihlanu okanye engakumbi.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha ekunceda uphole uze wakhe izakhono ezixabisekileyo!", + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Ndicinge ngomsebenzi esinokuwenza kunye ngendlela emnandi.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Molo @field.user_name! Namhlanje sibhiyozela iinyanga ezimbini zokusebenzisa i-@global.parent_app! \n\nUqhuba kakuhle! Uqeqesho lwale veki luza kukunceda uyazi into omawuyenze xa umntwana wakho ofikisayo engayilandeli imithetho yekhaya.", + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Ndicele umntwana wam okanye omnye umntu andincede ngomsebenzi wesekhaya ukuze ndikwazi ukuba nexesha elingakumbi.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Molo @field.group_name! Namhlanje sibhiyozela iinyanga ezimbini zokusebenzisa i-@global.parent_app! \n\nUqhuba kakuhle! Uqeqesho lwale veki luza kukunceda uyazi into omawuyenze xa umntwana wakho ofikisayo engayilandeli imithetho yekhaya.", + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Nantso ke! Nemizuzu emi-5 yenza umahluko omkhulu kwaye ukuba uyenza ngexesha elifanayo yonke imihla (njengaxa kutyiwa isidlo sakusasa okanye ngaphambi kokuba kulalwe), kuza kuba lula ukuyenza rhoqo!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Iyancomeka into yokuba usebenzisa i-@global.parent_app. Sele ufumene izixhobo ezi-6 kakade zokuba ngumzali! \n\nYenza uqeqesho olu landelayo ukuze ufumane esinye isxhobo sokuba ngumzali!", + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Kulunge kakhulu! Ngaloo ndlela wenza umsebenzi wakho uze ube nexesha lokuzonwabisa kunye nomntwana wakho ofikisayo!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Gqiba uqeqesho uze uzame ukuncokola kunye nomntwana wakho ofikisayo ukuze nithethe ngomphumo omnye okhuthazayo nomphumo omnye ongathandekiyo xa enze into.", + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Kuhle gqitha! Ngokuncedisana ngeembopheleleko, uza kuba nexesha elingakumbi lokwenza izinto ezonwabisayo kunye nomntwana wakho ofikisayo – ibaluleke gqitha loo nto!", "type": "template", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "Ngaba wena nomntwana wakho sele nikwazile ukucinga ngomphumo omnye okhuthazayo kunye nomphumo omnye ongathandekiyo?", + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "Ewe, kuthatha ixesha ukuqhelana nokunika imiyalelo ekhuthazayo – akulolize ukuzama kwakhona! Cinga ngendlela yokuziphatha ongathanda ukuyibona kumntwana wakho uze ucinge ngeendlela ezikhuthazayo zokumnika loo myalelo!", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Imiphumo yokuzola imnceda nyhani umntwana wakho ofikisayo ukuba ayilandele kakuhle imithetho – khawukhe ukuzame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokubonisa ukuzinikela kwakho kusapho lwakho.", + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Kunzima ukucinga ngemiyalelo ngoxa sisenomsindo. Zama ukufumana ixesha ozole ngalo uze unike umntwana wakho ofikisayo umyalelo okhuthazayo. \n\nKwi-@global.weekly_workshop elandelayo, siza kuthetha ngakumbi malunga nendlela yokulawula iimvakalelo zethu!  Ungafumana izinto zokuphola ezingakumbi kwi-@data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki yakho yesithathu kwi-@global.parent_app. \n\nUqeqesho olusha lukulindele! Xa ujonge lo mfanekiso, ngaba unokuqashisela umxholo woqeqesho?", + "SourceText": "Which of the tips helped you?", + "text": "Ngawaphi amacebiso akuncedileyo?", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki yakho yesithathu kwi-@global.parent_app. \n\nUqeqesho olusha lukulindele! Xa ujonge lo mfanekiso, ngaba unokuqashisela umxholo woqeqesho?", + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "MAYENZEKE – Ngaba umntwana wakho ofikisayo angakwazi ukuyenza lento oza kuyicela?", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", - "text": "Usebenzile ngokusebenzisa i-@global.parent_app! Ukhumbule ukuba zizinto ezincinci ezenza umahluko omkhulu.", + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "MAYIKHUTHAZE – Sebenzisa amazwi akhuthazayo uze ubancome!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Enkosi ngokusebenzisa i-@global.parent_app ukuze utyale kuwe siqu nakusapho lwakho.\n\nZama i@local.workshop_data.in_text_title uze wakhe isakhono esigqwesileyo sokuba ngumzali!", + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "MAYICACE – Caca ukuba uthini uze ungqale!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Ukuncoma kwenza umahluko. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela ONOKUNCOMA ngayo kwintsapho yakho.", + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Kuhle gqitha! Xa sicela umntwana wethu ofikisayo ukuba enze into anokukwazi ukuyenza, kulula kuye ukuba aphumelele.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Praise time!", - "text": "Lixesha lokuncoma!", + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Xa sibancoma, abantwana bethu abafikisayo baziva bekhuthazwa baze baphinde basimamele!", "type": "template", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Xa uphinda ubona umntwana wakho ofikisayo, mncome ngento enye ayenza kakuhle! \n\nUgqibele nini ukuzincoma okanye ukuncoma omnye umntu omdala ekhayeni lakho? Yizame!", + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Kwakuhle kakhulu! Xa sicinga kusengaphambili ngemiyalelo esiza kuyinika umntwana wethu ofikisayo, kuba lula ukuyilandela loo miyalelo!", "type": "template", "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "Kuhle ukukubona ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvuleka. Yizame - uza kuwubona umahluko kwindlela yokuziphatha yomntwana wakho ofikisayo.", + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Molo @field.user_name! Sivuyisana nawe ngokuqala iveki 4 kwi-@global.parent_app. \n\nUqeqesho lwale veki luza kuthetha ngendlela yokwandisa amathuba okuba umntwana wakho ofikisayo enze into omcela ukuba ayenze.", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Enkosi ngokwabelana! Usebenzile ngokuzama ukunika umntwana wakho ofikisayo imiyalelo ekhuthazayo kunye nokwakha ulwalamano oluhle kunye nomntwana wakho ofikisayo. \n\nUmntwana wakho ufanele anconywe ngokunjalo NAWE!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Molo @field.group_name! Sivuyisana nawe ngokuqala iveki 4 kwi-@global.parent_app. \n\nUcweyo lwale veki luza kuthetha ngendlela yokwandisa amathuba okuba umntwana wakho ofikisayo enze into omcela ukuba ayenze.", + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Nikela iingqalelo kwizinto ezintle! \n\nUkuxelela abantwana bethu abafikisayo ukuba sifuna BENZE ntoni kusebenza bhetele kunokubaxelela ukuba BAYEKE ukwenza into ethile.\n\nUza kuwubona umahluko", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Thetha kakuhle nesiqu sakho ngomsebenzi omhle owenzayo. Akekho umzali ofezekileyo, kwaye sicinga ukuba wenza umsebenzi omhle!", + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Molweni, molweni kuni nonke.\n\nNamhlanje umxholo wethu yimiyalelo emihle. \n\nKubalulekile ukunikela imfundiso entle kubantwana bethu, ngenxa yokuba xa sibanika imfundiso entle bayazi baze baqonde oko silindele ukuba bakwenze, yaye bakwenza ngale ndlela sifuna bakwenze ngayo. \n\nNgoko ekugqibeleni loo nto ishiya wonke umntu onwabile.", "type": "template", "note": "" }, @@ -5111,12 +4475,6 @@ "type": "template", "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" }, - { - "SourceText": "Well done!", - "text": "Usebenzile!", - "type": "template", - "note": "" - }, { "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", "text": "Sele uyimakishe kwakanye i-@global.parent_point @data.habit.instruct_positively.title – ngoko wenza inkqubela encomekayo.", @@ -5124,14 +4482,8 @@ "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "Umakishe i- @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively amaxesha asele ekhona - ke wenza inkqubela entle kakhulu.", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" - }, - { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "Ngaba umntwana wakho ofikisayo usoloko ekumamela? Ukuba akunjalo (njengathi sonke), jonga uqeqesho lwale veki ukuze ufunde ngendlela yokukhupha imiyalelo ekhuthazayo enokukunceda ngayo - ngeyona ndlela.", + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Thetha kakuhle nesiqu sakho ngomsebenzi omhle owenzayo. Akekho umzali ofezekileyo, kwaye sicinga ukuba wenza umsebenzi omhle!", "type": "template", "note": "" }, @@ -5141,6 +4493,12 @@ "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, + { + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "text": "Ngaba umntwana wakho ofikisayo usoloko ekumamela? Ukuba akunjalo (njengathi sonke), jonga uqeqesho lwale veki ukuze ufunde ngendlela yokukhupha imiyalelo ekhuthazayo enokukunceda ngayo - ngeyona ndlela.", + "type": "template", + "note": "" + }, { "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", "text": "Njengesiqhelo, ungangena kuqeqesho olutsha ngomso. Kuza kunceda ukuqala ugqibe uqeqesho olungaphambi kolu ngaphambi koko. \n\nAbanye abazali basebenzisa le app ngoxa besendleni eya emsebenzini. Kutheni ungayisebenzisi i-app kangangemizuzu embalwa? \n\nEnkosi kwakhona ngokusebenzisa i-@global.parent_app.", @@ -5154,3148 +4512,3136 @@ "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "First @global.weekly_workshop!", - "text": "Okokuqala @global.weekly_workshop!", - "type": "template", - "note": "The string @global.weekly_workshop should not be translated." - }, - { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Molo @fields.user_name. I-@local.workshop_data.in_text_title sele ikulungele.", - "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Molo @fields.group_name. I-@local.workshop_data.in_text_title sele ikulungele.", + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo?", "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Ukuchitha ixesha kunye nomntwana wakho kunceda ekwakheni ukuthembana phakathi kwenu. \n\nQhubeka ngohambo lwakho lwe-@global.parent_app ngoku - wena nosapho lwakho niza kubona imiphumo emihle.", + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "YIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Enkosi ngokwenza imigudu yokuba ngumzali ongcono. Uyathandwa kwaye uyaxatyiswa!", + "SourceText": "Said something nice first", + "text": "Ngethethe into entle kuqala", "type": "template", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo", "type": "template", "note": "" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nI-@local.workshop_data.in_text_title sele ikulungele!", - "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" - }, - { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Akuyi kuthatha xesha lide, kwaye uza kufumana ulwazi oluxabisekileyo. \n\nWenze kakuhle ngokuzama ukuba ngumzali ongcono. Ngomso, ungangena kuqeqesho olutsha.", + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha olukunceda uphole, lonwabele uze ufunde izakhono ezitsha!", + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Molo @field.user_name! Ingxaki enkulu inokwehlela nabani - ukuyilungela kunceda kakhulu. \n\nOlu qeqesho luza kukubonisa indlela yokwenza loo nto.", + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Molo @field.group_name! Ingxaki enkulu inokwehlela nabani - ukuyilungela kunceda kakhulu. \n\nOlu qeqesho luza kukubonisa indlela yokwenza loo nto.", + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "Ungumzali ozimiseleyo. Zingce - loo nto inkulu kwangokunokwayo!", + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile", "type": "template", "note": "" }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Asoze sazi iza kubakho nini na ingxaki, kodwa SINAKO ukuyilungela! \n\nQalisa uqeqesho olulandelayo ukuze ubone ukuba wena nomntwana wakho ofikisayo ningayenza njani le nto kunye.", + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", "type": "template", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Kuhle ukubona ukuba ukunye nathi kolu hambo lokuba ngumzali! \n\nGqiba i-@local.workshop_data.in_text_title uze ufunde ngeyona ndlela yokusabela xa umntwana wakho ofikisayo ekufuna kakhulu.", + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "Masibone ukuba kwenzeka ntoni ukuba @global.w_instruct_female_caregiver uthi @global.w_instruct_teen_girl \"MUSA\":", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "Ngaba ukhe wathetha kunye nomntwana wakho ofikisayo ukuba niza kwenza ntoni xa kukho ingxaki?", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso nomhlobo wakhe.\n\n@global.w_instruct_female_caregiver: “Musa ukungcolisa ngoxa ndicoca indlu. Umi endleleni!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Crisis Examples", - "text": "Imizekelo Yengxaki enkulu", + "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: “Kodwa kufuneka ndilungiselele ukhuphiswano lwasesikolweni. Awufuni ndenze nto wena.”\n\n@global.w_instruct_female_caregiver: “Musa ukundiphendula!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Ngomso uqeqesho lokugqibela lwe @global.parent_app luya kube likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqsho olutsha. Ngaloo ndlela, ungayigqiba iseti yakho yezakhono zokuba ngumzali uze ubone omawukwenze ngokulandelayo!", + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Tyhoo!! Kutheni ndihleli nje ndiyangxoliswa????”\n\n@global.w_instruct_female_caregiver uyambombozela: “Lo mntwana usoloko esenza inkathazo.”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "Wenze kakuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho lokugqibela ukuze ucinge ngohambo lwakho lwe@global.parent_app noko unokukwenza ngokulandelayo!", + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Enkosi ngokucinga ngolu hlobo! \n\nMakhe sibuyele umva size sibone ukuba kwenzekani ukuba u @global.w_instruct_female_caregiver unikela umyalelo ofanelekileyo:", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Molo @field.user_name! Sele uza kulugqiba uquqesho lwakho ze-@global.parent_app! Enkosi ngokuzimisela ixesha elide kangaka. \n\nUqeqesho lwale veki luthetha ngendlela yokugcina abantwana bethu abafikisayo bekhuselekile kokubini xa besebenzisa i-intanethi nakwiindawo esihlala kuzo. Yonwabele!", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@global.w_instruct_female_caregiver ebecoca indlu ngoxa u @global.w_instruct_teen_girl ebeqhelisela umdaniso. nezihlobo zakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kumnandi ukunibona niqhelisela umdaniso nomhlobo wakho. Ndicela niye phandle ndizogqibezela ukucoca indlu. Emva koko, ningandibonisa umdaniso wenu.\"\n\n@global.w_instruct_teen_girl: \"Kulungile, @global.w_instruct_female_caregiver .\"", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Molo @field.group_name! Sele uza kulugqiba lonke uqeqesho lwakho @global.parent_app! Enkosi ngokuzimisela ixesha elide kangaka. \n\nUqeqesho lwale veki luthetha ngendlela yokugcina abantwana bethu abafikisayo bekhuselekile kokubini xa besebenzisa i-intanethi nakwiindawo esihlala kuzo. Yonwabele!", + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: \"Enkosi ngokuqhelisela phandle ngoxa ndigqibezela ukucoca, @global.w_instruct_teen_girl. Ngoku ndinexesha lokubukela umdaniso wenu.\"", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Eli ibilelona xesha linzima kakhulu kubazali. Umele uzingce ngayo yonke into oyenzileyo. \n\nCinga ngawo onke amaxesha oye wamenza wancuma ngawo umntwana wakho ofikisayo kunye nendlela oye wamnyamekela ngayo. Abazali bayamangalisa kwaye nawe uyamangalisa!", + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! Nidanisa kamnandi kakhulu!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "Sele uzuze izakhono ezininzi zokuba ngumzali kwezi veki zidlulileyo!\n\nGqiba uqeqesho olulandelayo ukuze uzuze esinye isakhono esiluncedo.", + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Ulingo lokucinga!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "Ukuze umgcine ekhuselekile umntwana wakho ofikisayo, kuyanceda ukuncokola malunga nendawo enihlala kuyo kunye namava akhe okusebenzisa i-intanethi. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela onokuyenza ngayo le nto!", + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Ulingo lokucinga!\n* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokunika imiyalelo eyakhayo.\nYIBA SENGQIQWENI -QINISEKA - THETHA NGOKUCACILEYO *\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Ncokolani kunye: \n\n* Ucinga ukuba u @global.w_instruct_teen_girl uzive njani ngendlela @global.w_instruct_female_caregiver asabele ngayo? \nYIntoni u @global.w_instruct_female_caregiver angeyenzile ngokwahlukileyo?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Ukwenza isicwangciso kunye nomntwana wakho ofikisayo kungathintela iingxaki ezininzi - yizame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokusebenzisa i@global.parent_app ukuxhasa usapho lwakho.", + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver ebenokuthi...", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Siyavuyisana nawe, ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha sele lukulindile ukukunceda wena kunye nosapho lwakho ukuba nijongane nayo nayiphi na imeko - ngokubambisana ninokwenza okuninzi!", + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* Ngethethe into entle kuqala \n* Ngethethe no @global.w_instruct_teen_girl ngeliziwi elizolileyo \n* Ngemxelele @global.w_instruct_teen_girl into afuna ayenze", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Molo @field.user_name! Wenza inkqubela entle kakhulu kuhambo lwakho lokuba ngumzali! \n\nUkuba nomntwana ofikisayo kuthetha ukuba kuza kubakho iingxaki ezingalindelekanga ekufuneka ujamelane nazo. Olu qeqesho luza kukubonisa indlela yokwenza loo nto.", + "SourceText": "Let's discuss what happened this time.", + "text": "Makhe sincokole ngento eyenzekileyo kweli ityeli.", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Molo @field.group_name! Wenza inkqubela entle kakhulu kuhambo lwakho lokuba ngumzali!\n\nUkuba nomntwana ofikisayo kuthetha ukuba kuza kubakho iingxaki ezingalindelekanga ekufuneka ujamelane nazo. Olu qeqesho luza kukubonisa indlela yokwenza loo nto.", + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Ncokolani kunye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver baziva njani ngoku?\n* Kutheni ucinga ukuba imeko yabo ibe bhetele @global.w_instruct_female_caregiver kweli tyeli?", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Ukuzimisela kwakho kulukhuthazo kuye wonke umntu. Qhubeka uzolile uze uqhubekeke!", + "SourceText": "Positive instructions can work with your teen too!", + "text": "Imiyalelo emihle inokusebenza nakumntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Ubomi, nokuba nabantwana abafikisayo, kuza neengxaki ezingalindelekanga kwaye kufuneka sijamelane nazo. \n\nQalisa uqeqesho olulandelayo uze ufunde indlela yokujamelana ngempumelelo nezi ngxaki.", + "SourceText": "It worked better this time because...", + "text": "Kube kuhle kweli tyeli ngenxa yokuba...", "type": "template", "note": "" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "Ukwindlela efanelekileyo yokuqalisa ukusombulula iingxaki kunye nomntwana wakho ofikisayo! \n\nGqiba i-@local.workshop_data.in_text_title uze uzuze esinye isakhono esibalulekileyo sokuba ngumzali!", + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl uye waziva ehlonitshwa yaye ethandwa ngu @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver uye wakwazi ukuhlala ezolile \n* @global.w_instruct_female_caregiver uye wagcina isimo sengqondo esihle", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Ngaba ukhe wawazama amanyathelo amane okusombulula ingxaki kunye nomntwana wakho ofikisayo? \n\nYAZI, YISOMBULULE, YIZAME, YIVAVANYE!", + "SourceText": "Let’s do a thought experiment!", + "text": "Makhe senze ulingo lokucinga!", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ukwazi indlela yokusombulula iingxaki kunye kunganceda kwiimeko ezininzi!", + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "MUSA UKUCINGA NGENDLOVU \n\nUcinga ngantoni?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luvuliwe ukuze lukuncede ugcine umntwana wakho ofikisayo ekhuselekile.", + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Mhlawumbi UYE wacinga ngendlovu...\n\n‘Musa ukunikela imiyalelo ebangela abantwana abafikisayo bacinge ngaloo nto. \n\nMaxa wambi badla ngokungayiqonidi EYONA nto siyifuna kubo. \n\nKanti badla ngokungathandi ukuxelelwa ukuba mabangenzi izinto (asinjalo sonke?)", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Molo @field.user_name! Kwiveki ezayo, kukho uqeqesho olutsha! Funda indlela yokubeka imithetho yekhaya ngendlela eza kwenza abe maninzi amathuba okuba umntwana wakho ofikisayo ayithobele.", + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "NGOKU, CINGA NGENGWENKALA! \n\nUcinga ngantoni?", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Molo @field.group_name! Kwiveki ezayo, kukho uqeqesho olutsha! Funda indlela yokubeka imithetho yekhaya ngendlela eza kwenza abe maninzi amathuba okuba umntwana wakho ofikisayo ayithobele.", + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "Kulungile! Umyalelo, osengqiqweni ocacileyo unceda abantwana abafikisayo banikele ingqalelo kwinto abafanele bayenze. \n\nAbantwana abafikisayo baya kuziva behlonitshwa ngakumbi ngale ndlela, yaye banamathuba amaninzi okuphulaphula.", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Ngamanye amaxesha kuye kube ngathi abantwana bakho abafikisayo banomsindo nangona sele wenze konke okusemandleni akho. Ukhumbule ukuba wenza umsebenzi ogqwesileyo, kwaye amaxesha amnandi aza kude abekho nakubo!", + "SourceText": "GET REAL", + "text": "YIBA SENGQIQWENI", "type": "template", "note": "" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Enkosi kwakhona ngokusebenzisa i-@global.parent_app nangokuzimisela kuhambo lokuba ngumzali. \n\nI-@local.workshop_data.in_text_title iza kukubonisa indlela yokubeka imithetho ngendlela eya kunceda umntwana wakho ofikisayo ayiqonde aze ayilandele ngcono.", + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "Ngaba umntwana wakho ofikisayo angakwazi ukuyenza le nto uza kuyicela? Kusenokuba nzima kubo ukufunda ngelizwi eliphantsi imini yonke, kodwa isiqingatha seyure xa ufuna njalo kusengqiqweni.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "Sele ukufutshane ekufumaneni esinye isixhobo sokuba ngumzali! Gqiba i-@local.workshop_data.in_text_title, bekela umntwana wakho ofikisayo umthetho OMNYE olula nonokuthotyelwa, uze ubone izinto zitshintsha!", + "SourceText": "GET POSITIVE", + "text": "YIBA NGOWAKHAYO", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "Ngaba ukwazile ukusebenzisana nomntwana wakho ofikisayo ukuze nibeke umthetho?", + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Ncuma umjonge emehlweni uze usebenzise amagama amnandi. Bancome xa beqalisa ngoko nangoko ukwenza oko ukucelayo!", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ayiyi kuthatha xesha lide kwaye iya kunceda umntwana wakho ofikisayo alandele imithetho ngcono!", + "SourceText": "GET CLEAR", + "text": "THETHA NGOKUCACILEYO", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqesho olutsha luza kukunceda wazi ukuba wenzeni xa abantwana abafikisayo bebonakalisa ukungabi nasimilo (okanye ukuba naso)!", + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Ngokufuthi siyakwazi oko sikufunayo ezingqondweni zethu, kodwa asikuchazi ngokucace ngokwaneleyo. Kuchaze ngokuthe ngqo oko ufuna umntwana wakho ofikisayo akwenze. Zama ‘nceda goduka ngo-7pm’ kunokuba ‘ufike ekhaya ngexesha’.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Molo @field.user_name! Uqala inyanga yesibini usebenzisa @global.parent_app. Kuyamangalisa! \n\nPhantse zonke iintsapho zineengxaki zemali, ngoko ke uqeqesho lwale veki luza kukunika isixhobo esiza kukunceda ucwangcise iindleko zakho ukuze ube nemali eyaneleyo de kuphele inyanga.", + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "Masiqhelisele ukunika imiyalelo EYIYO, EYAKHAYO NECACILEYO. Ukuqhelisela kuya kukunceda uphumelele ekuqhubaneni nomntwana wakho ofikisayo!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Molo @field.group_name! Uqala inyanga yesibini usebenzisa @global.parent_app. Kuyamangalisa! \n\nPhantse zonke iintsapho zineengxaki zemali, ngoko ke uqeqesho lwale veki luza kukunika isixhobo esiza kukunceda ucwangcise iindleko zakho ukuze ube nemali eyaneleyo de kuphele inyanga.", + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Khetha ababini kwiqela lakho:\n* Umntu omnye uzenza umntwana ofikisayo\n* Omnye uzenza umzali womntwana\n* “Umzali”: Nika ‘umntwana wakho ofikisayo’ umyalelo owakhayo onokhuthazo nezincomo\n* “Umntwana ofikisayo”: Sabela ngendlela ocinga ukuba umntwana ofikisayo angasabela ngayo kule nto. \n\nNcokolani kunye ngendlela okuhambe ngayo oku:\n* Oku kukwenze wavakalelwa njani “njengomzali” “nanjengomntwana ofikisayo”?\n* Ngaba ungenza nantoni na ibe bhetele?\n\nNika wonke umntu ithuba lokuba “ngumzali” “nomntwana” ukuba uyakwazi. Ukuqhelisela kubangela impumelelo!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "Ngaba imali ikwenza uzive uxinezelekile? Ngaba umntwana wakho usoloko ecela izinto eningakwaziyo ukuzifikelela? \n\nOlu qeqesho luthetha ngemali kunye nokwenza ibhajethi.", + "SourceText": "Examples of positive instructions:", + "text": "Imizekelo yemiyalelo eyakhayo:", "type": "template", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Nanini na uziva uwedwa okanye izinto zikongamela, yazi ukuba awuwedwa. Kukho abazali ehlabathini nokubanzi abaneengxaki ezifanayo nezakho. \n\nNgoko, wenza konke okwaziyo ukukwenza yonke imihla kwaye sonke siyazingca ngawe!", + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ndiyawuthanda umculo wakho. Ungawuthoba xa kusityiwa ukuze sikwazi ukuthetha? * Enkosi – Ndiyayixabisa loo nto. \n* Umnandi lo mculo. Ngubani yona imvumi? Nceda ucime umculo xa ungena endlini. Ungawudlala egumbini lakho ungavakali ukuba uyafuna. Enkosi!", "type": "template", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Kuhle, ndivuya kakhulu! Qhubeka nalo msebenzi mhle.", "type": "template", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Ukubandakanya amalungu entsapho yakho ngendlela esetyenziswa ngayo imali kungenza lwehle uxinezeleko kunye nokuxambulisana. \n\nGqiba i-@local.workshop_data.in_text_title ukuze incede usapho lwakho ngokubhajetha nokonga imali. Kulula kanti - uza kubona!", + "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", + "text": "Uxolo ngokuba iimeko zinzima. Zonke iintsapho zitsala nzima. Sikhona ukuze sikuncede!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Uninzi lwabazali luthi ukwenza ibhajethi kuye kwazisa uxolo kumakhaya abo - nawe kungakusebenzela oku.\n\nEnkosi kwakhona ngokuba ngumzali ozinikele olu hlobo.", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "Nantoni na engahambanga kakuhle namhlanje, yilibale uze uze uzame kwakhona ngomso Kulungile!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvulwa ukuze lukuncede ubeke imithetho eza kusebenza kwintsapho yakho.", + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Phinda wenze ibhajethi - ngeli tyeli KUNYE nomntwana wakho ofikisayo nentsapho yakho! \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size silweze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Ukhumbule – le veki INGAWE! Siyathemba ukuba uziphethe njengeqanda. Uyakufanelekela oku!", + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Yenza ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. \n\nLe yinto ebalulekileyo nemnandi onokuyenza nentsapho yakho - ithatha malunga nemizuzu engama-30.\n\nUkwenza ibhajethi kunye kunceda umntwana wakho ofikisayo aqonde ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", "type": "template", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Qala uqeqsho olutsha kraca @global.parent_app ngomso. Uza kubona iziphumo ezintle!", + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Hlola ibhajethi kunye nomntwana wakho ofikisayo nentsapho yakho. Oku kuya kukhumbuza wonke umntu ukuba sonke sidinga ukwenza izigqibo ezinzima maxa wambi - kodwa kusinceda senze imali eyaneleyo ekupheleni kwenyanga size sifeze usukelo lwethu!\n\nIibhajethi ziye zanceda izigidi zeentsapho.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "Ngaba uye wawaxelela amaqabane akho e-@global.parent_app malunga ne-app? Ukususela ngomso, ningaqalisa ukwenza uqeqesho lwenu lwe@global.parent_app kunye!", + "SourceText": "Steps to make a budget", + "text": "Amanyathelo okwenza ibhajethi", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "" }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Ukulahlekelwa ngumhlobo okanye othandekayo kunzima kumntu wonke. Ukuba nobubele kuwe kunye nokwenza izinto zokuzinceda uhlangabezane neli xesha linzima kunceda nomntwana wakho ofikisayo!", + "SourceText": "make a budget together with their family", + "text": "ukwenza ulongiwo-mali kunye nentsapho yabo", "type": "template", "note": "" }, { - "SourceText": "Find a support group", - "text": "Fumana iqela lenkxaso", + "SourceText": "Did you have any challenges when making your budget together?", + "text": "Ngaba uye wanocelo-mngeni xa benisenza kunye ulongiwo-mali?", "type": "template", "note": "" }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "- Intlungu inokusichaphazela kangangeeveki okanye iinyanga okanye iminyaka. Akuyomfuneko ukuba uzive ubhetele ngokukhawuleza.\n- Lala ngokwaneleyo kunye nokutya - kunzima ukukhathalela abantwana xana udiniwe kwaye ulambile.\n- Yenza uluhlu lwezinto ezikwenza uzive ngcono, kwaye uzenze.\n- Zama ukwenza into enye elula yokuphumla yonke imihla nomntwana wakho ofikisayo, kunye nawe ngokwakho.\n- Kulungile ukuziva ulungile kwaye kulungile ukukhala. Ungaze uzibeke ityala, ayilotyala lakho eli.\n- Kuhlala kukho ithemba nasemva kokulahlekelwa. Zama ukonwabela izinto ezilula, kwaye uthathe umzuzu ukwenza into emnandi okanye ukuphumla nomntwana wakho.\n- Fumana umntu omdala omnye okanye ababini abanokukuxhasa, bakumamele, kwaye bathethe.", + "SourceText": "What whas difficult for you about making your budget together?", + "text": "Yitoni ibininzimela ngokulenza kunye ulongiwo-mali?", "type": "template", "note": "" }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "- Ukuthetha nomntu onokukuxhasa kwaye akumamele kunokunceda. Kunokunceda kananjalo ukuzimanya neqela labantu abalahlekelwe ngabantu nabo. Khumbula ukuba akukho mntu ugqibeleleyo. Kulungile ukuthetha ngamaxesha amnandi namabi.", + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Bendingafuni ukuxelela intsapho yam ukuba ndamkela malini.", "type": "template", "note": "" }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Abantwana abafikisayo bajongana nelahleko ngeendlela ezahlukeneyo, njengabantu abadala. Ungabanceda baqonde imeko kunye neemvakalelo zabo ngokudala iindawo ezikhuselekileyo apho unokwabelana nobabini kwaye niqhubeke.", + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Awunyanzelekanga uchaze ngqo imali oyamkelayo; unokuchaza inani eliqikelelwayo. Usenokuthi, “Apha ekhaya sine @global.currency@global.monthly_income_estimate qho ngenyanga” endaweni yokuthi, “Ndamkela @global.currency@global.monthly_income_precise”.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" }, { - "SourceText": "Be honest", - "text": "Nyaniseka", + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Xa besisenza ibhajethi, khange sikwazi ukuvumelana ngezinto eziyimfuneko nezinto ekumnandi ukuba nazo.", "type": "template", "note": "" }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "Xelela umntwana wakho ukuba lomntu uswelekile - ngamanye amaxesha akaziqondi.\n- Ukuxelela yinkqubo, hayi isiganeko. Kusenokufuneka ubaxelele ngokuphindaphindiweyo.\n- Sebenzisa amagama abawaqondayo.\n- Ukuba abantwana basebancinci akayiqondi ukuba yintoni ukufa, nceda uchaze ukuba umntu omthandayo akabuyi. Zama ukuba ungabizi 'ukulala' okanye 'uhambo lokuhamba'.\n- abantwana abadala bangakuqonda ukuba yintoni ukufa, kodwa banokuba nzima ukwabelana okanye ukuphatha iimvakalelo zabo.\n- Abantwana banonokuphendula ngeendlela ezahlukeneyo: ukukhala, ukukhwaza, ukungakholelwa okanye ukuzola kakhulu. Zonke ezi zinto zilungile. Baxelele ukuba ukunye nabo.\n-Vumela imibuzo kunye nokuthetha. Nyaniseka. Kulungile ukutsho xana singazi.", + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Izinto eziyimfuneko nezinto ekumnandi ukuba nazo zahluka ngokwabantu. Ukuthetha ngazo kunganceda wena nomntwana wakho ofikisayo ukuba niqondane, nihloniphe ukwahluka kwenu nize nibone apho ninokuyekelela khona.", "type": "template", "note": "" }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "- Abantwana banokuba lusizi, nomsindo, bangayiqondi okanye bangakholelwa, baziva ndindisholo, bangaziva kamnandi okanye babe neentlungu, amaphupha amabi okanye iingxaki esikolweni. Umntwana wakho ofikisayo usenokubonakala onwabile, kodwa abe buhlungu. Basenokuzivale baze bafune ukuchitha ixesha elingakumbi nabahlobo. Basenokubonisa indlela yokuziphatha engalindelekanga okanye eyingozi. Ezi zisenokungabi nangqiqo kuwe, kodwa konke oku kuqhelekile.\n- Abantwana banokuziva ngathi lityala labo - ukuba baye bosulela intsholongwane, okanye baziphathe kakubi. Baxelele ngokucacileyo ukuba akukho nto iphosakeleyo bayenzileyo.", + "SourceText": "I did not understand what to do.", + "text": "Khange ndiyiqonde into ebekumele ukuba ndiyenze.", "type": "template", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "- Cacisa ukuba intlungu iza neemvakalelo ezininzi kunye neempendulo. Bonisa umntwana wakho ukuba uyathandwa kwaye uyakhathalelwa, kwaye umkhuthaze ukuba abelane ngeemvakalelo zakhe ngokuthetha, ukubhala okanye ukuzoba.\n- Ukuba kukho iqela lenkxaso umntwana wakho anokuba yinxalenye yalo, oku kunganceda.\n- Ukuba umntwana ofikisayo uthetha ngokufuna ukuzenzakalisa okanye ukuzibulala, cela uncedo komnye umntu ngokukhawuleza kangangoko unako.\n- Ukuba unako, gcina inkquboi yakho yesiqhelo yemihla ngemihla, oku kunokuba yintuthuzelo kwabaselula.\n- Kunganceda ukuba abantwana bakho babe yinxalenye yezithethe malunga nokufa - ukukhetha ingoma okanye into yokuthetha.\n- Ukuchitha imizuzu embalwa yonke imihla ugxile kumntwana wakho ofikisayo kunceda ukumenza azive ekhuselekile kwaye umnike ithuba lokuphumla okanye ukuthetha ngezinto ezimkhathazayo.", + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Ndibuhlungu ukuva le nto. Ndiyayiqonda ukuba bungakhona ubunzima! Kutheni singaphindi sithethe ngale nto kwakhona? Umntwana wakho ofikisayo okanye amanye amalungu osapho angajoyina aze akuncede!", "type": "template", "note": "" }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Ukufelwa ngumntu omthandayo kunokuvakala kukoyisa kakhulu. Nanga amacebiso ambalwa asebenzayo anokuba luncedo ukuwakhumbula.", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "Umntwana wam ofikisayo khange afune ukuyenza kunye nam ibhajethi.", "type": "template", "note": "" }, { - "SourceText": "Ask for help", - "text": "Cela uncedo", + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Zama ukwenza ibhajethi nabanye abantu abadala abasekhayeni lakho kuqala. Umtwana wakho ofikisayo angaba nomdla kwinto eniyenzayo. \n\nUkwenza ibhajethi kungabonakala kuyinto efuna unikele ingqalelo, kodwa zama ukuyenza ibe yinto emnandi – yenze umdlalo ngethuba lokuchitha ixesha kunye! Okanye ungazama ukwenza ibhajethi ye-@global.w_money_grandmakuqala. \n\nUngalibali ukubancoma xa nigqibile!", + "type": "template", + "note": "The string @global.w_money_grandma should not be translated." + }, + { + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Injongo yakho ibikukwenza ulongiwo-mali lwentsapho kunye nesicwangciso sokonga imali.", "type": "template", "note": "" }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "- Cela umntu omthembileyo ukuba akuncede - ukutya okanye ukhathalelo lwabantwana kunokuba luncedo. Unokufuna amaxwebhu elifa, abantwana bakho, okanye ukufikelela kwiinkonzo.\n- Ngamanye amaxesha abantu bazama ukuthatha imali okanye ilifa kumntu osentlungwini. Fumana malunga namalungelo wakho.", + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Enkosi ngokwabelana ngamava akho! Usebenzile ngokucinga ngendlela yokubhajetha uze wonge ngayo imali entsatsheni yakho. Oku kuza kukunceda usebenzele kwiinjongo zentsapho yakho. \n\nNikunye ninokuphumeza izinto ezininzi ezintle!", "type": "template", "note": "" }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "Ukuvalelisa kunzima. Yenza oko kubonakala kulungile kuwe nakumntwana wakho.\n- Iintsapho, abantwana kunye nabazali abafezekanga. Xa umntu efile, kulungile ukuthetha ngezinto ezilungileyo nezimbi esizikhumbulayo.\n- Kunganceda ukubhala ileta okanye ukwenza umzobo womntu omkileyo.\n- Abanye abantu benza umsitho okanye benze isidlo esikhethekileyo sokubhiyozela umntu, kwaye bathi ndlela ntle.\n- Inokukunceda ukwenza ibhokisi yeenkumbulo, ukubeka izinto ezikukhumbuza wena kunye nomntwana wakho ngalomntu.\n- Inokukunceda ukuthetha malunga ngalomntu xana ucinga ngaye.", + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Iintsapho ezininzi zixinezeleke ngenxa yemali, ingakumbi ukuba abantwana abafikisayo baqhubeka becela izinto! \n\nXa sisenza ibhajethi kunye, singavumelana ngendlela yokwenza inkcitho KUNYE nokonga ukuthintela uxinezeleko nokusebenzela kusukelo lwentsapho.", "type": "template", "note": "" }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Ekupheleni kosuku, thatha umzuzu ukuze: \n\n* Uncokole nomntwana wakho ngento enye emnandi ayenzileyo. \n* UzIncome ngokwenza into enye kakuhle namhlanje. \n*Uligqala!", + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yibhajethi yentsapho \n\nKubalulekile ukuyila ibhajethi, kodwa kubaluleke nangakumbi ukuyila ibhajethi ebandakanya intsapho iyonke \n\nUkuyenza kunye kunceda ekwandiseni umlinganiselo wokuqonda indlela oyichitha ngayo imali njengentsapho nendlela oyongela ngayo intsapho, yaye ungade uze nezicwangciso zendlela eninokonga ngayo njengentsapho.", "type": "template", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Buzanani, “Yintoni ekwenze wonwaba namhlanje?”\n* Buzanani, “Yeyiphi ingxaki oye wanayo namhlanje?”\n* Buzanani, “Ndingakunceda njani?”\n* Zamani ukwenza le nto nonke yonke imihla; ninokuyenza xa nisitya kunye isidlo sangokuhlwa okanye ngaphambi kokulala.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye. Udinga:\n\n- Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni\n- Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali.\n \nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", "type": "template", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Awunakusoloko useluhambeni ngalo lonke ixesha, kodwa unako ukuba namaphupha! Buza umntwana wakho ofikisayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluyaphi? Uza kuhamba ixesha elide kangakaani? Uza kupakisha njani? Yintoni onokuyenza kolo hambo? Yintoni onokuyibona?\nJongani kunye kwimephu okanye niyizobe.\n* Khetha ilizwe angalaziyo umntwana wakho ofikisayo nize nifunde ngakumbi ngalo.", + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "Ibhajethi yentsapho inokunceda u @global.w_money_grandma - kunye NAWE!", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Wena nomntwana wakho ofikisayo ningenza uluhlu lokuqikelela abantu abadumileyo belo lizwe neningathanda ukubamemela kwitheko lenu. Ngamnye kuni angamema abantu abahlanu – bangaba baphila kule mihla okanye babe ngabakudala. Ngoobani eninokubamema? Ngaba iindwendwe zingavana?", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Kukho amanyathelo amane okwenza ibhajethi yentsapho: \n\nInyathelo 1: CINGA\nInyathelo 2: KHETHA\nInyathelo 3: YAKHA\nInyathelo 4: CEBA\n\nCEBA Makhe siqwalasele la manyathelo kunye.", "type": "template", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Cinga ngezinto ezintathu ezinokuthethwa ngawe. Ezimbini kuzo zimele zibe yinyani kwaye enye yazo ibe bubuxoki.\n* Kunganceda ukucinga ngezinto ozinqwenelayo, amaphupha akho, amava asesikolweni, izinto ozithandayo okanye ongazithandiyo. Ngokomzekelo: Ndiyazicaphukela iibhanana, isifundo endisithandayo yisayensi kwaye ndikunqwenela kakhulu ukukwazi ukucula. \n* Zixelele umntwana wakho ofikisayo uze umbuze ukuba yeyiphi engoyonyani kwezi. \n* Ngaba uchanile xa ebeqashisela? Ngaba imothusile?\n* Ngoku mcele enze into efanayo. Ikhona into entsha eniyifundileyo komnye nomnye?", + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "Udinga: \n* Amaphepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) neepeni \n* Amatye okanye iimbotyi okanye nantoni na enamasuntswana amaninzi amela imali. \n\nThatha ithuba ukuze ufumane ezi zinto ngaphambi kokuba siqalise inyathelo lokuqala.", "type": "template", "note": "" }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Balisela umntwana wakho ofikisayo ngezinto zangokuya wawungangaye. Ziintoni ezazingekho ngoko? Ifowuni ezingena kwi-intanethi? Wawusenza ntoni xa uzonwabisa? Yintoni eyayikuxhalabisa? Ungabi naxhala xa bengathethi nto emva kokuba ubaxelele ngawe -– into ebalulekileyo kukuba bamamele kwaye baza kukhumbula. Ngamanye amaxesha, abantwana bethu abafikisayo bayalibala ukuba abazali babo nabo ngabantu!", + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* ukutya \n* amanzi nombane \n* iimpahla zokunxiba \n* iiakhawunti \n* umrhumo WOMABONWAKUDE \n* izithambiso \n* isaluni \n* iethayimu \n* intlawulo yesikolo \n* into yokukhwela \n* iipolisi zeinshorensi \n* amayeza \n* ukuzihlaziyo/imidlalo \n* irenti \n* imalimboleko \n* icawa", "type": "template", "note": "" }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Cinga ngokuba namandla angaphezu kwemvelo. Ngokomzekelo, ukuya naphi na ngoko nangoko, ukubuyela emva kwixesha lakudala. \n* Buza umntwana wakho ofikisayo ukuba, “Xa ubunamandla angaphezu kwemvelo oku[...], ubungawasebenzisa njani?”\n* Mkhuthaze ukuba anike eli qhawe linamandla angaphezu kwemvelo igama aze enze loo nto beliza kuyenza. \n* Ngoku cela umntwana wakho ofikisayo akukhethele amandla angaphezu kwemvelo onokuba nawo.\n* Qinisekisa ukuba nawe uyabonisa ukuba ungawasebenzisa njani amandla akho nagaphezu kwemvelo!", + "SourceText": "Think about what we spend money on each month.", + "text": "Cinga ngezinto esichitha imali kuzo nyanga nganye.", "type": "template", "note": "" }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Ncokola kunye nomntwana wakho ofikisayo malunga nento ayithandayo.\n\nIsenokuba yiyo nantoni na abakhetha ukuncokola ngayo: imidlalo, iitshomi, umculo, oosaziwayo.\n\nZama ukummamela umntwana wakho uze umvumele athethe.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imifanekiso yazo zonke izinto wena nentsapho yakho enichitha imali kuzo nyanga nganye. \n* Bhala ecaleni komfanekiso ngamnye ukuthi nto nganye iyimalini nyanga nganye. (Akukho mfuneko yokunikisa ngamanani ukuba akufuni.)\n* Dibanisa ukuba yimalini oye wayichitha nyanga nganye.", "type": "template", "note": "" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Khetha umntu obalisa ibali ukuze aqalise ukulibalisa.\n* Abantu abalimameleyo bangasebenzisa naliphi igama ukuze bangenelele nanini na.\n* Umntu obalisayo kufuneka asebenzise elo gama kwibali alibalisayo.\n* Xa ibali ligqityiwe, makubalise omnye umntu!", + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Kuhle gqitha! Uligqibile inyathelo 1! \n\nMasihlabele mgama!", "type": "template", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Cinga ngeemeko ezintathu ezahlukahlukeneyo. Ngokomzekelo, ukuqhuba imoto, ukukhwela isikhitshana okanye ukubhabha ngenqwelo ntaka.\n* Chazela umntwana wakho ngezi zinto uze umbuze, “Yeyiphi onokuyikhetha?”\n* Mbuze ukuba kutheni ekhetha leyo?\n* Ngoku cinga ngeemeko ezintathu ezingakumbi okanye ucele umntwana wakho ofikisayo akwenzele.", + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Thethani kunye ngezinto enizidingayo nezinto enizifunayo\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", "type": "template", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Buzanani imibuzo. Ingayimibuzo emalunga nezinto ozithandayo okanye ozenzileyo namhlanje.\n* Umthetho mnye qha kukuba awunakuphendula uthi, “Ewe” okanye “Hayi” okanye uthi, “Mhlawumbi.”\n* Niza kuyenza kangangexesha elingakanani? Iimpendulo zakho zingacingisiswa kangakanani?\n* Tshintshanani nize nidlale kwakhona!", + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Abantu badla ngokungaziboni ngendlela efanayo izinto. Xa sithetha ngezidingo neemfuno zethu, siqondana bhetele yaye sinokwenza ukhetho olululo kunye ngendlela yokusebenzisa imali yethu.\n\nJongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nixoxe:\n* Zeziphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo njengentsapho?", "type": "template", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Umntu wokuqala uthi, “NgoMgqibelo ndiya...(umz., epakini)”\n* Umntu wesibini wongeza kwinto ethethwe ngumntu wokuqala athi, “NgoMgqibelo ndiya epakini kwaye... (umz. ndiyokutyelela umhlobo wam osenyongweni).\n* Umntu ngamnye wongezelela kwinto ethethwe ngumntu wokugqibela, nizama ukucinga ngazo zonke izinto ezimnandi ezinokwenziwa ngoMgqibelo.", + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Cingani ngezinto enizidingayo nenizifuna nje\n\nIIMFUNO Into onokuphila ngaphandle kwayo.\nIZIDINGO Into ongenakuphila ngaphandle kwayo", "type": "template", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Qalisa ibali ngokuthi, “Ngaminazana ithile kwaye kukho...”\n* Vumela umntwana wakho ofikisayo athethe into elandelayo.\n* Emva koko ugqibezela isivakalisi.\n* Tshintshanani nide nibe nebali elitsha elimnandi.\n* Qinisekisa ukuba ibali liphela kamnandi. *\nBuza umntwana wakho ofikisayo ukuba yeyiphi indawo ayithandileyo kwibali!", + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Jongani uluhlu lwenu lwezinto enisebenzisa imali kuzo nize nikhethe:\n* Zezphi IZIDINGO ongenakuphila ngaphandle kwazo? Ngoba?\n* Zeziphi IIMFUNO ongathanda nje ukuba nazo kodwa ezingabalulekanga? Ngoba? \n* Zeziphi izinto eninokuzama ukungachithi mali eninzi kuzo?", "type": "template", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "Buza umntwana wakho ofikisayo ukuba angathanda ukutya isidlo esinjani. \n* Senzeni nobabini! \n* Mvumele ibe nguye umpheki oyintloko – nguye okhokelayo kwaye wena ulandela imiyalelo yakhe. \n* Unokumnceda nokuba enze ibhajethi yezinto eziza kuthengwa xa kuphekwa! \n\nUcinga ukuba ayizusebenza? Buza abantwana bakho abafikisayo ukuba BAFUNA ukuba nenze ntoni kunye. Bayeke bakhokele. Phola. Yonwaba.", + "SourceText": "Make a budget!", + "text": "Yenzani ibhajethi!", "type": "template", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Makujuxuzwe ngendlela athanda ukujuxuza ngayo umntwana wakho ofikisayo. \n* Umntu omnye uyajuxuza baze abanye balinganise yena. \n* Wonke umntu unetyeli lokukhokela. \n* Yenzani phambi kwakhe wonke umntu osekhayeni lenu!", + "SourceText": "Make a budget as one big family!", + "text": "Yenza ibhajethi njengentsapho enye enkulu!", "type": "template", "note": "" }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Lo mdlalo ungadlalwa ngabantu ababini okanye ngabantu abaninzi kwiqela.\n* Yimani isangqa nize nijongane. \n* Umntu omnye uyakhokela baze abanye bamlinganise bezama ukushukuma ngexesha elifanayo nenkokheli.\n* Qinisekisa ukuba inkokheli ayikhawulezi ukuze abanye bakwazi ukuyilinganisa! Jongani amalungu omzimba ashukumayo ngamanqanaba ahlukahlukeneyo.\n* Emva kwethutyana, tshintshani inkokheli. Wonke umntu makabe nethuba lokukhokela.\n* Zamani zingekho iinkokheli!", + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Umntu omnye uza kuvolontiya aze asichazele ngoluhlu lwakhe (Ukuba akukho mntu uvolontiyayo ningenza uluhlu olutsha ninonke) \n* Dlalani indima zenu - abanye iya kuba ngabantu abadala, abanye ibe ngabantwana abafikisayo. \n* Gqibani ukuba umvuzo wenu wenyanga uza kuba yimalini.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.) \n* Gqibani kunye ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Cinga ngesakhono esitsha onokusifunda kunye nomntwana wakho ofikisayo. Ngokomzekelo, ukuteka ibhola okanye ukuyibamba ngonyawo lwakho ingawi, ukujula iibhola phezulu uze uzibambe, ukwenza isuphu?\n* Tshintshanani nize nizame ukwenza isakhono esitsha.\n* Qinisekani ukuba niyancomana, nize nizame ukufunda nokudlala kunye!", + "SourceText": "Make a budget as a family!", + "text": "Yenzani ibhajethi njengentsapho!", "type": "template", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Cingani ngeendlela ezintathu zokujima. Ngokomzekelo, ukuhamba, ukunkcunkca, ukudlala ibhola okanye ukudanisa.\n* Khethani kunye ibe nye nize niyizame. \n* Ukuba nobabini niyayithanda, gqibani ngokuba niza kuyenza kangaphi. Kanye okanye kabini ngeveki? Qho ngentseni?\n* Ninobabini, cingani ngendlela yokuyenza ibe mnandi nangakumbi. Ningankcunkca niyokutsho kwindawo ethile? Mhlawumbi nitshintshisane ngokuba ngumqeqeshi? Nikhuthazane ngomvuzo omncinci wasimahla?", + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Bhala phantsi ukuba uyimalini umvuzo wakho wenyanga.\n* Thathani amatye ambalwa okanye iimbotyi okanye nantoni na enamasuntswana amaninzi - lo ngumvuzo wakho wenyanga. \n(Ngokomzekelo: Ukuba umvuzo wakho yi-@global.currency@local.monthly_income, kwaye uneembotyi ezi-@local.number_of_beans, imbotyi nganye yi-@global.currency@local.bean_value.)\n* Gqibani ukuba niza kuthenga ntoni ngemali, uze ubeke amatye/ izinto kuloo mfanekiso. \n\nAniqinisekanga ngesigqibo senu? Ninengxaki ukwahlula phakathi “kweentswelo” “neemfuno”? Akukho ngxaki konke konke!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Umntu wokuqala uza kukhetha ingoma okanye akhethe ukuyicula.\n* Wonke omnye umntu umele aqashisele igama lengoma (ukuze niyeze ibe nzima, angaqashisela nomntu oyiculayo).\n* Umntu wokuqala ukuqashisela ngokuchanileyo kuza kukhokela yena.", + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Ceba indlela onokonga ngayo imali, ukuze uhlangabezane neemeko zongxamiseko ukuze ufikelele usukelo lwentsapho yakho!", "type": "template", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Lo mdlalo umnandi ngakumbi xa kukho abantu aba-3 ubuncinane.\n* Qalisani kwisangqa uze ugqithise “ibhola” kube kanye esangqeni (okanye “uqhwabe xa ungakwazi ukujula).\n* “Ujula” kube kanye ukuze ujule “ibhola”, uze uyibambe kube kanye. Mjonge umntu omphoselayo. \n* Indlela oyiphosa ngayo (phezulu, ezantsi, ngqo, ngasecaleni, iqengqeleka phantsi) kunye namandla (ngamandla kakhulu, ngokuthambileyo) imele ichaphazele indlela ayibamba ngayo umntu. \n* Unokuyigqampisa “ibhola”, uyijule emoyeni uze uyibambe kambalwa ngaphambi kokuba uyidlulisele komnye umntu. \n* Xa umntu wonke sele eqhelene noku, unokuqalisa ukujikeleza kwigumbi usajula “ibhola”. \n* Ungakwazi ukuyijula ngaphantsi komlenze? Ngemva komqolo? Entla kwentloko yakho? Ukuyibamba ngaphambi kokuba ifike komnye umntu? Nikonwabele ukudlala “ngebhola”!", + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "Ukuba unokonga neyona mali incinci ukwenzela ikamva okanye imeko yongxamiseko - ingenza umahluko omkhulu ngokuhamba kwexesha. \n* Yongeza isangqa esibizwa ngokuba “ziimeko zongxamiseko”.\n* Yongeza isangqa esithi “usukelo lwentsapho.”\n* Ngoku zama ukudlulisela imali yakho ukuze wonge intwana nyanga nganye ukwenzela nganye kwezi.", "type": "template", "note": "" }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Khethani umdlalo okanye indlela yokujima eninokuyenza kunye. Gqibani ngocwangciso. Ngaba niza kuyenza yonke imihla? Kangangexesha elingakanani? \n\nYizameni kangangeveki. Ekupheleni kweveki, buza wena kunye nentsapho yakho le mibuzo:\n* Ihamba njani? \n* Benivakalelwa njani ekuqaleni kweveki? \n* Nivakalelwa njani ekupheleni kweveki? \n* Yintoni esinokuyenza ngokwahlukileyo kwiveki ezayo?", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwiqela lakho ukufanele ukunconywa, akunjalo?", "type": "template", "note": "" }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Tshintshanani ngokuba “yinkokheli”. Thethani amagama okuqala ukuze wonke umngu angene. Emva koko, “inkokheli” ikhupha umyalelo kwaye wonke umntu wenza loo nto ngokukhawuleza okunokwenzeka.\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bamba into ebomvu.” \n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Xhuma, xhuma izihlandlo ezilishumi.”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Kukho umlilo ezintabeni!” \n* Nonke: “Baleka, baleka, baleka!”\n* Inkokheli: “Bekani izihlangu kwindawo ehlala izihlangu.”", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "SIVUYISANA NAWE!!! Uye wayenza ibhajethi yakho yentsapho – yaye iya kwenza umahluko omkhulu kuwe. Ndicinga ukuba wonke umntu kwintsapho yakho ukufanele ukunconywa, akunjalo?", "type": "template", "note": "" }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Lo mdlalo umnandi xa udlalwa ngabantu abangaphezu kwaba-2\n* Umntu omnye wenza ngathi wenza into ethile – ngokomzekelo, ukama iinwele okanye upheka isidlo sangokuhlwa. \n* Omnye umntu ubuza athi, “Wenza ntoni?”\n* Umntu wesibini kufuneka athethe into engadibaniyo nokukama iinwele, ngokomzekelo athi, “Ndibopha imitya yezihlangu zam” \n* Umntu wesibini uqalisa ukwenza ngathi ubopha imitya yezihlangu zakhe de omnye umntu ambuze, “Wenza ntoni?” \n\nImpendulo kufuneka isoloko ingeyiyo le nto ayenzayo loo mntu!", + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "SIVUYISANA NAWE!!! Uyenzile ibhajethi yakho – khumbula ukuphinda wenze olu qheliselo kunye namanye amalungu entsapho yakho - Ukuba niyavumelana ngokwenza isicwangciso kunye loo nto iya kwenza umahluko omkhulu!", "type": "template", "note": "" }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "* Vuthululani izandla zenu zasekhohlo emoyeni izihlandlo ezi-8 ngoxa nibala ukuya kutsho ku-8.\n* Yenzani ngokukhawuleza kwaye ningxola kangangoko ninako.\n* Phindani nangesinye isandla. Phindani ngeenyawo zombini.\n* Yenzani kasi-7, emva koko kasi-6 nize niqhubeke nide nifike ku-1.\n* Wonke umntu ukhwaza athi “Inkukhu ephambeneyo” emva koko nidanise ngathi yinkukhu ephambeneyo!", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", "type": "template", "note": "" }, { - "SourceText": "Quick Parenting Tips", - "text": "Iingcebiso Ezikhawuleziyo Zokuba Ngumzali", + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Nanini na uziva uwedwa okanye izinto zikongamela, yazi ukuba awuwedwa. Kukho abazali ehlabathini nokubanzi abaneengxaki ezifanayo nezakho. \n\nNgoko, wenza konke okwaziyo ukukwenza yonke imihla kwaye sonke siyazingca ngawe!", "type": "template", "note": "" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Ukukhulisa abantwana abafikisayo kunganzima, kwaye sonke siyoyisakala ngamanye amaxesha.", + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Ukubandakanya amalungu entsapho yakho ngendlela esetyenziswa ngayo imali kungenza lwehle uxinezeleko kunye nokuxambulisana. \n\nGqiba i-@local.workshop_data.in_text_title ukuze incede usapho lwakho ngokubhajetha nokonga imali. Kulula kanti - uza kubona!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Loluphi ucelomngeni oluyintloko ojongene nalo ngalo mzuzu?", + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "text": "Ngaba imali ikwenza uzive uxinezelekile? Ngaba umntwana wakho usoloko ecela izinto eningakwaziyo ukuzifikelela? \n\nOlu qeqesho luthetha ngemali kunye nokwenza ibhajethi.", "type": "template", "note": "" }, { - "SourceText": "My relationship with my teen is not good", - "text": "Ulwalamano lwam nomntwana wam ofikisayo aluluhlanga", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Uninzi lwabazali luthi ukwenza ibhajethi kuye kwazisa uxolo kumakhaya abo - nawe kungakusebenzela oku.\n\nEnkosi kwakhona ngokuba ngumzali ozinikele olu hlobo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "Isimilo somntwana wam ofikisayo sixakile", + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "text": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvulwa ukuze lukuncede ubeke imithetho eza kusebenza kwintsapho yakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ndiziva ndinoxinezelelo, ndindodwa, ndinomsindo", + "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text": "Kunokuba nzima ukondla intsapho nyanga nganye. Iintsapho ezininzi zinale ngxaki! \n\nKuquka @global.w_money_grandma - makhe sijonge:", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "I have money worries", - "text": "Ndinamaxhala emali", + "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text": "@global.w_money_grandma: \"Bendinyamekela abazukulwana bam, @global.w_money_teen_girl no @global.w_money_teen_boy, ekubeni abazali babo basweleka besebancinci. Sisoloko sizamana nemali, njengoko ndifumana isibonelelo esincinci.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" }, { - "SourceText": "I worry about my teen’s safety", - "text": "Luyandixhalabisa ukhuseleko lomntwana wam ofikisayo", + "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", + "text": "@global.w_money_grandma: \"Ndixinezeleke kakhulu. Andisenamali iseleyo. Yaye ngoku ndilwa nabantwana bam abafikisayo ngezinto abazifunayo– kwakhona.\"", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "We often fight in our family", - "text": "Sisoloko sisilwa kusapho lwethu", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Niqhube kakuhle, sele nigqibe amanyathelo ama-3 okuqala! \n\nMakhe sibone indlela u @global.w_money_grandma asenze ngayo isicwangciso sakhe ngemali, kanye njengokuba wenzile:", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "I have a different problem…", - "text": "Ndinengxaki eyahlukileyo…", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "\"Ndibafunela ikamva eliqaqambileyo abazukulwana bam, kodwa andazi ukuba ndingayifumana phi imali*. Oomatshonisa bayingozi yaye imali yabo uyibuyisa seyininzi kakhulu. \n\nNdimele ndonge imali, kodwa loo nto ibonakala ingenakwenzeka!”", "type": "template", "note": "" }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Ukwakha ulwalamano olungcono kuqala ngokuchitha ixesha kunye - noba yimizuzu emi-5 ngosuku kwenza umahluko! Okokuqala, kunokuba nzima ukuchitha ixesha kunye, njengoko sonke sixakekile kwaye ulutsha lwethu lunokuba kwimudi engentle ngamanye amaxesha. Kodwa ukuchitha noba yimizuzu emi-5 ngosuku lwexesha olijolise kumntwana wakho ofikisayo kuyanceda ekwakheni ukuthembana. Zama ukubuza umntwana wakho ofikisayo ukuba yintoni angathanda niyenze kunye. Inokuba mnandi kwaye ikuphumze nawe ngokunjalo!", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "\"Usukelo lwam kukuqinisekisa ukuba umzukulwana wam ongumfana uyakwazi ukuya kwisikolo samabanga aphezulu aze umzukulwana wam oyintombazana akwazi ukufezekisa iphupha lakhe lokuya edyunivesithi. Ndingakwazi njani ukugcina imali eninzi ngale malana ndinayo?”", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "Unokufumana inkxaso engakumbi ngendlela yokuchitha ixesha ninodwa kunye nomntwana wakho ofikisayo apha:", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "\"Ndiyazi - masiqale ngesicwangciso! Okokuqala, masenze ibhajethi – isicwangciso sendlela endinokonga ngayo imali. Emva koko ndiza konga intwana yemali ngexesha – ndingade ndijoyine namaqela okonga nawembolekiso-mali.\"", "type": "template", "note": "" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Bonke abantwana abafikisayo bayageza ngamanye amaxesha! Eyona nto inokunceda kwisimilo sabantwana abafikisayo kukubancoma nanini na besenza into entle - nokuba incinci kangakanani na. Abantwana abafikisayo basenokungabonakali ngathi bafuna okanye bakhangela ukunconywa nguwe kodwa eneneni, bayafuna.", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "\"Kanti ndifanele ndithethe nabazukulwana bam ukuze sikhethe izinto esinokunciphisa inkcitho kuzo veki nganye. Baza kundincedisa ndicinge ngezinto esizifuna nje kodwa esingazidingiyo.”", "type": "template", "note": "" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "Unokufumana inkxaso engakumbi apha malunga nendlela yokukhuthaza isimilo esihle ngokuncoma:", + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "Kwiminyaka embalwa kamva:\n\n\"Jonga, siwafezekisile amaphupha ethu! Andikhange ndiboleke kwizihlobo okanye koomatshonisa. Ngokubeka imali encinci veki nganye, ndikwazile ukuhlawula imali ka @global.w_money_teen_boyyamabanga aphakamileyo ndaza ndabeka imali ethile ka @global.w_money_teen_girlyasedyunivesithi. Ndiyazidla ngale nto.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Uxinezelelo lokuba ngumzali luphezulu ngeyona ndlela ngoku. Sazi kakuhle ukuba ubomi bunokuba nzima kangakanani. Ukuzenzela okuthile kungalunciphisa uxinezelelo lwakho. Ukufanelekele oku! Xa uziva ukhathazekile, lawula umzimba wakho ngokuwutsala ngamandla umoya ngokucotha, kahlanu ngaphambi kokuphendula. Abazali abaninzi bakufumanisa kuluncedo oku.", + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Ukonga kubalulekile nangesinye isizathu: iimeko zongxamiseko! @global.w_money_grandma uye wayifunda le nto apha ekuhambeni:", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "Unokufumana inkxaso engakumbi malunga nendlela yokuzikhathalela apha:", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Ngobunye ubusuku kwabakho isichotho esibi esonakalisa uphahla lwam. Yonke into yayikhukhulisekile. Ngesiquphe kwafuneka ndizame imali yokulungisa uphahla. Ndaziva ndoyisakele”", "type": "template", "note": "" }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Awuwedwa. Uxinezelelo lwemali lunzima kakhulu kubazali. Zama ukuthetha nomntwana wakho ofikisayo malunga nokuba yimalini engenayo nezinto enidinga ukuyisebenzisa kuzo njengosapho nyanga nganye. Oku kunokubanceda baqonde ukuba kutheni ungakwazi ukubathengela into abayifunayo. Yaye xa wonke umntu ekuqonda ukuba iyaphi imali, kulula ukuvumelana ngokuba yimalini eninokuyonga kunye!", + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Khawuthathe ithuba uze uvuyiswe yiloo nto uyifezileyo, ngaphandle kwazo zonke ezinye izinto ekufuneka uzenzile usuku ngalunye.", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "Unokufumana inkxaso engakumbi ngendlela yokwenza ibhajethi uze wonge apha:", + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Ibali – loo nto ayikhange isebenze... \n* Ukuqhelisela ukubhajetha\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nencoko – loo nto ayikhange isebenze…\n* Ingxubusho ngeendlela zokonga\n* Ukuqhelisela ukonga imali\n* Izixhobo: Indlela yokubhajetha nokonga\nCINGA - KHETHA - YAKHA - CEBA\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Abantwana abafikisayo bachitha ixesha elininzi bengaphandle kwekhaya okanye besebenzisa i-intanethi, apho kunzima nangakumbi ukuba sibagcine bekhuselekile - abazali abaninzi kuyabakhathaza oku. Zama ukuqala incoko nomntwana wakho ofikisayo malunga neendawo ezikhuselekileyo nezingakhuselekanga kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi (kungafuneka ukuzame amatyeli ambalwa). Banokude bazi nezo wena ungazaziyo. Oku kuza kuqalisa ukukunceda nenze isicwangciso kunye sokuba uhlala njani ekhuselekile.", + "SourceText": "Step 1: THINK", + "text": "Inyathelo 1: CINGA", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "Unokufumana inkxaso engakumbi ngendlela yokugcina umntwana wakho ofikisayo ekhuselekile apha:", + "SourceText": "What do we spend on now?", + "text": "Imali siyichitha entwenini ngoku?", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "Xa kuvela ingxaki, zamani ukuthetha ngayo kunye. Yintoni kanye kanye ingxaki? Zeziphi izisombululo ezohlukeneyo ezikhoyo kwaye zeziphi iziphumo zaso ngasinye? Ngaloo ndlela, ungafumana isisombululo esinokuba SILUNGELE umntu wonke.", + "SourceText": "THINK Activity", + "text": "Umsebenzi WOKUCINGA", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "Unokufumana inkxaso engakumbi malunga nokusombulula iingxaki kunye apha:", + "SourceText": "Step 2: CHOOSE", + "text": "Inyathelo 2: KHETHA", "type": "template", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Akululanga ukunyamekela iintsapho zethu. Sonke sinemiceli mngeni ngamanye amaxesha, kodwa siyathemba ukuba le app iza kukunceda uyoyise ngempumelelo. @global.parent_app isekwe kwiminyaka elishumi yamava eqhuba iinkqubo zobuzali eMzantsi Afrika, kwaye amawaka abazali bafumanise ukuba iingcebiso ekwabelwana ngazo ziyanceda kwimiceli mngeni emininzi yokuba ngumzali. Siyathemba ukuba le app iza kukunceda kunye nentsapho yakho.\n\nNazi ezinye zeengcebiso eziphambili nezingqiniweyo:", + "SourceText": "Talk together about needs and wants", + "text": "Thethani kunye ngezidingo neemfuno", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Start your first parenting workshop", - "text": "Qalisa uqeqesho lwakho lokuqala lokuba ngumzali", + "SourceText": "CHOOSE Activity", + "text": "KHETHA Umsebenzi", "type": "template", "note": "" }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "Uza kufumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", + "SourceText": "Step 3: BUILD", + "text": "Inyathelo 3: YAKHA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "Ungafumana inkxaso engakumbi kwi @local.workshop_data.in_text_title.", + "SourceText": "Make your own budget", + "text": "Yenza ibhajethi yakho", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Qalisa i@local.workshop_data.in_text_title", + "SourceText": "BUILD Activity", + "text": "YAKHA Umsebenzi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Gqiba i@local.workshop_data.in_text_title ukuze ufumane inkxaso engakumbi.", + "SourceText": "Step 4: PLAN", + "text": "Inyathelo 4: CEBA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Qhubeka ne-@local.workshop_data.in_text_title", + "SourceText": "Emergencies and family goals", + "text": "Iimeko zongxamiseko nosukelo lwentsapho", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Phinda ungene kwi@local.workshop_data.in_text_title", + "SourceText": "PLAN Activity", + "text": "CEBA Umsebenzi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Hlalani phantsi, valani amehlo enu nize nimamele indlela eniphefumla ngayo njengoko nitsala nize nikhuphe umoya. \n\nPhawula indlela ovakalelwa ngayo. \n\nXa sele ukulungele, phinda uvule amehlo akho.", + "SourceText": "What are your family savings goals?", + "text": "Luthini usukelo lwentsapho yakho lokonga?", "type": "template", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Kuzameni oko nanini na niziva nixinezelekile kwaye nifuna ikhefu ukuze niphinde ninxibelelane neziqu zenu.", + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Lusukelo oluhle kakhulu olo! \n\nLusukelo oluhle kakhulu olo! Xa sisenza ibhajethi entle nesicwangciso sokonga sikunye, singaphumelela size sizidle ngeziqu zethu!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Vala amehlo akho. \n\nMasisebenzise amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole. \n\nChaza izandi ezintathu ozivayo ngoku. \nChaza amavumba amathathu owevayo ngoku. \nChaza izidlo ezithathu ozithanda kakhulu. \n\nZeziphi izinto ezintathu onombulelo ngazo ngoku? Akunyanzelekanga ibe zizinto ezinkulu.", + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Sonke sinamaphupha ngeentsapho zethu, kanye njengo @global.w_money_grandma. Ngokubekela ecaleni intwana yemali nyanga nganye, bangazeka emzekweni", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "Emva kosuku olunzima, ukucinga ezi zinto zintathu esinombulelo ngazo kungasinceda sibe nesibindi sokuzama kwakhona ngomso.", + "SourceText": "What are your family savings goals?", + "text": "Luthini usukelo lwentsapho yakho lokonga?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Vala amehlo akho uze ucinge ngosuku olulandelayo. \n\nChaza into e-1 onombulelo ngayo. \nChaza into e-1 oyenze kakuhle. \nChaza into e-1 oyithandayo.", + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "Lusukelo oluhle kakhulu olo! \n\nXa sisenza ibhajethi entle nesicwangciso sokonga, ningaphumelela nize nizidle ngeziqu zenu!", "type": "template", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "Usebenzile, uliqhawe!", + "SourceText": "Let's talk about this story.", + "text": "Masithethe ngeli bali.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Vala amehlo akho. \n\nSebenzisa amandla amangalisayo enani elinguntathu ukuze sihlale silapha size siphole.\n\nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3. \nPhefumla uze ubale uyo kutsho kwisithathu. 1, 2, 3. \nPhefumla uze ubale uphele kwisithathu. 1, 2, 3.", + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "U @global.w_money_grandma, wafunyanwa sisaqhwithi. \n\nZiziphi ezinye iimeko zongxamiseko ezinokusifikela?", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "Ngaba uziva ngendlela eyahlukileyo? Ukutsala umoya kunceda wonke umzimba kunye nengqondo yethu ukuba zizole. \n\nUngu ngqa phambili!", + "SourceText": "Let's think about this story.", + "text": "Makhe sicinge ngeli bali.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Vala amehlo akho.\n\nMamela njengoko utsala uze ukhuphe umoya kahlanu.\n\nPhawula indlela ovakalelwa ngayo.", + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "U @global.w_money_grandma, wafunyanwa sisaqhwithi.", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Xa sele ukulungele, phinda uvule amehlo akho. Nguwe olawulayo!", + "SourceText": "What other emergencies could come up for your family?", + "text": "Ziziphi ezinye iimeko zongxamiseko ezinokufikela intsapho yakho", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Vala amehlo akho. \n\nThatha umzuzu ucinge ngosuku lwakho.\n\nCinga ngento ekhuthazayo okanye emnandi oye wayenza.\nZincome ngokwenza into enye kakuhle namhlanje. \nCinga ngento enye onokuyenza ngendlela eyahlukileyo ngomso.  \nCinga ngento enye onombulelo ngayo.", + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Iimeko zongxamiseko zinokufikela intsapho yam. Ukugcina imali ukwenzela ezi meko zongxamiseko NGAPHAMBI kokuba zehle kuthintela amaxhala noxinezeleko lwequbuliso!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Vala amehlo akho. \n\nNgaba abantwana bakho bakhe bakwenze ngathi ufuna ukukrasa? \n\nZinike unqumamo lwemizuzwana eli-10. Tsala uze ukhuphe umoya ucotha amatyeli ama-5. \n\nEmva koko zama ukusabela uzolile.", + "SourceText": "Let's talk about different ways we can save.", + "text": "Makhe sithethe ngeendlela ezahlukeneyo esinokonga ngazo.", "type": "template", "note": "" }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Izigidi zabazali zithi oku kuyanceda - KAKHULU.", + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Ncokolani kunye: \n* Ziziphi iindlela ezahlukeneyo esinokonga ngazo? \n* Ziziphi iingenelo neengxaki zokhetho ngalunye lokonga? \n\nUkuqonda ukhetho ngalunye kakuhle kuya kukunceda wenze isigqibo ngolona khetho lokonga lusemagqabini ngentsapho yakho. \n\nEnoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Vala amehlo akho. \n\nThatha umzuzu uze uyeke into oyenzayo ukuze unxibelelane nokuphefumla kwakho.   \n\nYeyiphi into enye onombulelo ngayo ngoku?  \nYeyiphi into enye ekwenza wonwabe?  \nYeyiphi into enye oyithandayo?  \n\nAkunyanzelekanga ibe zizinto ezinkulu. Ngamanye amaxesha izinto ezincinci ebomini zezona zibaluleke kakhulu!", + "SourceText": "Let's think about different ways we can save.", + "text": "Makhe sicinge ngeendlela ezahlukeneyo esinokonga ngazo.", "type": "template", "note": "" }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Nantsi into yokwenza umzimba wakho uphole:  \n\nHlala ngokukhululekileyo uze uvale amehlo akho ukuba unako.  \nYiba nombono weringi yegolide iskena umzimba wakho wonke, ukusuka ezinyaweni zakho ukuya entloko.   \nNikela ingqalelo njengoko isehla inyuka kumzimba wakho. Ngaba zikhona indawo ezingathi ziqinile? Zindindisholo? Zibuhlungu?   \nNikela ingqalelo kwezo ndawo okomzuzwana. Tsalela umoya kuloo ndawa uze xa uphefumla, uzame ukukhupha nayiphi intlungu okanye ukuqinia.   \nKwenze oku ngokuphefumla kambalwa.   \n\nVula amehlo akho. Uvakalelwa njani ngoku umzimba wakho?", + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Kukho iindlela ezahlukeneyo esinokonga ngazo: ekhaya, ukuthenga izinto esinokuzithenga kamva, ebhankini, okanye kwiqela lokonga.\n\nCinga ngeengenelo neengxaki zokhetho ngalunye lokonga.", "type": "template", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "Xa ungqengqe ebhedini yakho ibe ubuthongo bungehli, ungayizama le nto!", + "SourceText": "What is the best savings option for your family?", + "text": "Ziziphi ezona ndlela ziphambili zokonga kwintsapho yakho?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Vala amehlo akho. \n\nPhawula indlela onxibelelene ngayo kunye nomhlaba ongaphantsi kwakho.  \nNgawaphi amalungu omzimba wakho achukumisa umhlaba? Ngawaphi angawuchukumisiyo?   \nPhawula apho kufudumele khona nalapho kubanda khona.  \nYiva umhlaba ongaphantsi kwakho nokuxhasayo. Vumela umzimba wakho wehle ukuze uxhaswe ngumhlaba.", + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Enoba sisiphi isicwangciso sokonga osikhethayo, siya kuyinceda ngokwenene intsapho yakho iqhubele phambili!", "type": "template", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Zama ukwenza le nto xa usenza izinto ezingabalulekanga ezifana nokuhlamba izitya. Kungakunceda kakhulu!", + "SourceText": "Caring for yourself is so essential.", + "text": "Ukuzinyamekela kubaluleke kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Hlala phantsi uze uvale amehlo akho.\nZingaphi izandi ozivayo? \nMamela izandi ezingaphakathi nangaphandle kwegumbi. Zibale usebenzisa iminwe yakho. \nEmva kwemizuzwana elishumi, mingaphi iminwe oyibambileyo? Uve izandi ezingaphi? \n\nZama kwakhona kangangemizuzwana elishumi. \nNgaba uve izandi ezintsha? Zikhona izandi ozivileyo ngaphakathi komzimba wakho? \nPhawula indlela ovakalelwa ngayo ngoku.", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle Qhubeka nalo msebenzi mhle.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Vala amehlo akho. \n\nNgaba uva into ngamandla kangangokuba ufuna ukuyibaleka? \n\nEndaweni yokubhekela kuloo mvakalelo, makhe sisondele kuyo okomzuzwana. \nKulungile. Vala amehlo akho ukuba uziva ukhululekile. Tsala umoya kakhulu. \n\nFuna ukwazi. Uva ndawoni emzimbeni wakho? Ngaba kushushu okanye kuyabanda? Kuqinile okanye kuthambile? Kubambekile okanye Kukhululekile? \nZibuze imibuzo. Indixelela ntoni? Ifuna ntoni? Ndingazibonisa njani ububele ngoku?", + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Uqheliselo lwasekhaya lwale veki kukuncoma umntwana wakho ofikisayo kube kanye ngosuku. Kuya kuthatha imizuzwana eli-10 nje qha!", "type": "template", "note": "" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Nantsi into emnandi enokukunceda uyeke ukuba noxinezeleko:  \n\nKhetha ingoma ebonisa into oyifunayo ngoku. Ngaba ufuna ingoma ezolileyo ukuze ipholise umphefumlo wakho odiniweyo okanye ingoma edlamkileyo ukuze ikwenze ukhuphe uxinezeleko lwakho?  \n\nShenxisa izinto ukuze kubekho indawo yokujuxuzela umculo. Ungalibali ukuphefumla xa ushukuma. Ukuphefumla kunye nokushukuma kwakho makuhambelane.", + "SourceText": "Your goal was to praise your teen.", + "text": "Injongo yakho ibikukuncoma umntwana wakho ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Nkqu nemizuzwana embalwa yokushukuma inganela ukuba ukhuphe uxinezeleko uze uzive ngcono!", + "SourceText": "Did you have a chance to praise your teen this week?", + "text": "Ngaba uye wanalo ithuba lokuncoma umntwana wakho ofikisayo kule veki?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Vala amehlo akho. \nThatha ithuba ukuze uve umhlaba ongaphantsi kweenyawo zakho. \nCinga ngento oziva unombulelo ngayo.\nNikela ingqalelo kwindlela ophefumla ngayo.\nTsala uze ukhuphe umoya.\n\nWutsale uze uwukhuphe.", + "SourceText": "Yes", + "text": "Ewe", "type": "template", "note": "" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Molo! Uziva njani ngoku? Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala?\n\nPhawula ukuba uyiva ndawoni emzimbeni wakho. Phawula iingcinga ezihambelana naloo mvakalelo. Tsala umoya kakhulu.", + "SourceText": "No", + "text": "Hayi", "type": "template", "note": "" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Zibulele ngokuthatha ixesha lokuva iimvakalelo kunye nokwazi iingcinga zakho!", + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Kunzima ngamanye amaxesha ukukhumbula ukuncoma abantwana bethu abafikisayo. Xa niphinda nichitha ixesha kunye nomntwana wakho ofikisayo, zama ukucinga ngento enye onokubancoma ngayo. Unako nokuthi, “Enkosi ngokuchitha ixesha kunye nam!”.", "type": "template", "note": "" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "Masiziqhelanise necebiso esiza kulibiza, “Amandla Onqumamo”. \n\nBeka iinyawo zakho emhlabeni uze uphefumlele ngaphakathi nangaphandle kathathu ibe ucotha kangangoko unako. Yiba nombono unukisa intyatyambo okanye uvuthela ikhandlela. \n\nNantso ke! Amandla Onqumamo!", + "SourceText": "Well done - great job for remembering!", + "text": "Usebenzile - wenze umsebenzi omhle ngokukhumbula!", "type": "template", "note": "" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Eli licebiso elihle onokulisebenzisa xa uziva ucaphuka kuba lingakunceda uzole.", + "SourceText": "How did your teen respond?", + "text": "Usabele njani umntwana wakho ofikisayo?", "type": "template", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Ukuzincoma kungaluncedo kakhulu, ingakumbi ngeentsuku ekunzima ngazo. \n\nCinga ngeveki yakho uze ugqibezele esi sivakalisi: “Kule veki, ndiyazingca ngokuba...” Ingayiyo nantoni na emalunga nokuba ngumzali!\n\nCinga ngento enye oyenze kakuhle namhlanje. Ngoku, thatha iingalo zakho uze UZANGE!", + "SourceText": "Surprised", + "text": "Wothukile", "type": "template", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Hlala ngokukhululekileyo uze uvale amehlo akho. \n\nQonda ukuba kwenzeka ntoni kuwe ngeli thuba. Ucinga ntoni? Ngaba iingcinga zakho ziyakhuthaza okanye ziyadakumbisa. Uvakalelwa njani? Uvakalelwa kamnandi okanye kakubi? Uvakalelwa njani umzimba wakho? Ngaba uziva uwubambile umzimba okanye upholile?\n\nNxibelelana nentlziyo yakho ngendlela enobubele. Usenokufuna ukubeka isandla sakho phezu kwentliziyo okanye kwesifuba sakho. Zixelele la mazwi ngaphakathi:\n\nKwanga ndinganoxolo.\nKwanga ndingakhuseleka.\nKwanga ndingasempilweni.\nKwanga ndingonwaba.\nKwanga kungakho uthando kwintsapho yam.\nKwanga ndingaziva ndithandwa.", + "SourceText": "Happy", + "text": "Uvuyile", "type": "template", "note": "" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Thatha ithutyana ukuze ucinge ngamava akho. Phawula ukuba uziva ngendlela eyahlukileyo.", + "SourceText": "My teen did not like it", + "text": "Umntwana wam ofikisayo khange ayithande", "type": "template", "note": "" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Inyathelo 1. Vala amehlo akho uze utsale umoya kakhulu. \n\nInyathelo 2. Khawuzibuze, “Ndicinga ngantoni?” Phawula enoba iingcinga zakho ziyakhuthaza okanye ziyadakumbisa.\nPhawula ukuba uziva njani ngokweemvakalelo. Phawula enoba iimvakalelo zakho zintle okanye azintlanga. Zikhumbuze ukuba enoba uvakalelwa njani, kulungile oko.\nPhawula indlela ovakalelwa ngayo umzimba wakho. Phawula ukuba kukho indawo ebuhlungu okanye eqinileyo.\n\nInyathelo 3. Nikela ingqalelo kwindlela ophefumla ngayo. Yiva umphefumlo wakho njenjoko ungena uze uphume. Unokubeka isandla esiswini sakho uze usive sinyuka size sehle njengoko uphefumla. Kwenze oku njengoko uphefumla kali-10.\n\nInyathelo 4. Yandisa ukwazi umzimba wakho wonke. Mamela izandi zegumbi. \n\nInyathelo 5. Thatha ithutyana ukuze unikele ingqalelo enoba uzive ngendlela eyahlukileyo na. Xa sele ukulungele, vula amehlo akho.", + "SourceText": "I do not know", + "text": "Andazi", "type": "template", "note": "" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "Usebenzile Ngokuthatha Unqumamo. Ungakwenza oku nanini na uziva uxinezelekile. Kukunika ithuba lokuba uzole nangakumbi. Nokuba kukutsala umoya kakhulu izihlandlo ezimbalwa okanye kukunxibelelana nomhlaba ongaphantsi kwakho, oko kwenza umahluko. Unako nokuThatha Unqumamo kunye Nabantwana bakho!", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Khumbula ukuba kuthatha ixesha ngomntwana wakho ofikisayo ukuba akuve umncoma. Okukhona uchitha ixesha kunye naye, kokukhona kuza kuya kusiba ngcono!", "type": "template", "note": "" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Yima uze wolule iingalo zakho ziye phezulu. Tyhala nawaphi na amafu uze uvumele ilanga libe phezu kwakho. Yolula amacala akho omabini. Zolule ngaphambili nangasemva.\n\nBeka izandla zakho emacaleni. Nyusa amagxa kancinci aye ngasezindlebeni njengoko uphefumla, nciphisa amehlo akho uze ubambe umoya wakho. Yeka amagxa akho njengoko umzimba wakho uphola.\n\nYekelela iingalo zakho uze izibeke ecaleni kwaye ujike nomzimba wakho wangasentla. Iingalo zakho mazibethe umqolo wakho kancinci njengeko ujika usiya kwelinye icala.\n\nBeka unyawo phambi kolunye uze wenze izangqa ngamaqatha, ungalibali ukujikeleza kuwo omabini amacala. Unyawo ngalunye malwenze izangqa ezine kwicala ngalinye.\n\nNgoku xhumaxhuma ngokukhawuleza kangoko unako. Xhumela phezulu! Goba uye ezantsi! Zivocavoce ujikelezisa isinqe!\n\nVala amehlo akho uze uphakamise iingalo zakho ucotha ziye entla kwentloko yakho njengoko utsala umoya. Thoba iingalo zakho ngokucotha zize zibe secaleni njengoko ukhupha umoya.\n\nThatha ithutyana ukuze ucinge ngamava akho.", + "SourceText": "Well done for observing how your teen felt; keep it up!", + "text": "Usebenzile ngokuphawula indlela avakalelwe ngayo umntwana wakho ofikisayo; yibambe apho!", "type": "template", "note": "" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "Usebenzile! Ungayenza le nto nanini na uziva ngathi ufuna ukukhupha uxinezeleko uze wenze ingqondo kunye nomzimba wakho zidlamke.", + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Iyenzeka into enjalo - yiba nomonde. Qinisekisa ukuba uqhubeka uchitha ixesha kunye nomntwana wakho ofikisayo ukuze azokuluxabisa uluvo lwakho nangakumbi. Xa ukuncoma kwakho kusuka entliziyweni, uza kubona iingenelo kungekudala!", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Yenze uluhlu lwezinto ezisempilweni othanda ukuzenza. Nanga amanye amacebiso:\n* Ukumamela ingoma oyithandayo\n* Ukuhambahamba (ukuba kuvumelekile)\n* Ukujima\n* Ukusela ikomityi yeti uwedwa\n* Ukufowunela itshomi yakho\n* Ukucula, ukudanisa, ukuthandaza okanye ukufunda\n* Ukuhlala elangeni uvale amehlo\n* Ukubukela inkqubo oyithandayo ekwi-T.V.\n\nKhetha ibe nye namhlanje!", + "SourceText": "No problem - try to observe how they respond the next time!", + "text": "Akukho ngxaki - kwixesha elizayo, zama ukuphawula intsabelo yakhe!", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "Xa uzinyamekela, unyamekela abantwana bakho. Sonke kufuneka sinxibelelane. Zama ukuthetha nezihlobo, intsapho kunye nangeenethiweki ezaziwayo yonke imihla. Ukuba sekulithuba ugqibele ukufowunela umntu, kwenze ngoku oko!", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "Nawe ukufanelwe ukunconywa. Enkosi kwakhona ngokusebenzisa i-@global.parent_app. Kubonisa ukuba ukhathala ngokwenene!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Cinga ngento ekwenza ube nomsindo. Kwenzeka xa kutheni oku? Udla ngokusabela njani?\n\nThintela ukuba nomsindo kwasekuqaleni. Lala okanye uphumle xa udiniwe. Zama ukutya xa ulambile. Cela umntu akuxhase xa uziva ngathi uwedwa.", + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Ukuncoma sesona sakhono sinamandla ebuzalini.\n\nUkuba siyabancoma abantwana bethu abafikisayo xa besenza izinto kakuhle, siya kubabona besenza izinto ezingakumbi nezinto ezininzi ezintle!", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Ukulawula umsindo kunganzima. Thatha ikhefu xa uziva usiba nomsindo ngakubantwana bakho okanye omnye umntu.\n\nYiya kwenye indawo kangangemizuzu emi-5 uze ukwazi ukulawula iimvakalelo zakho. Ukuba kukhuselekile phandle, yiya khona. Uza kudlula kule nto!", + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Molweni, kuni nonke. \n\nUmxholo wethu namhlanje umalunga nokuncoma. \n\nKuhle ukubancoma abantwana bethu xa benze into entle kuba xa sisenza loo nto, baya kubonisa isimilo esihle kakhulu esithanda ukusibona. \n\nYaye singalibali ukuzincoma nathi xa senze okuhle!", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Vumelanisa i-@global.parent_appyakho", + "SourceText": "Praise time!", + "text": "Lixesha lokuncoma!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Le mibuzo emifutshane iza kwenza le app ifanele iimfuno zakho.", + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Xa uphinda ubona umntwana wakho ofikisayo, mncome ngento enye ayenza kakuhle! \n\nUgqibele nini ukuzincoma okanye ukuncoma omnye umntu omdala ekhayeni lakho? Yizame!", "type": "template", "note": "" }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "Masiqale ngemibuzo embalwa malunga nawe kunye nentsapho yakho.", + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "Usebenzile ngokusebenzisa i-@global.parent_app! Ukhumbule ukuba zizinto ezincinci ezenza umahluko omkhulu.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Singathanda ukwazi igama okanye isiteketiso sakho:", + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Ukuncoma kwenza umahluko. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela ONOKUNCOMA ngayo kwintsapho yakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Are you a woman or a man?", - "text": "Ungumfazi okanye uyindoda?", + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Enkosi ngokusebenzisa i-@global.parent_app ukuze utyale kuwe siqu nakusapho lwakho.\n\nZama i@local.workshop_data.in_text_title uze wakhe isakhono esigqwesileyo sokuba ngumzali!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Woman", - "text": "Mfazi", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "Kuhle ukukubona ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luza kuvuleka. Yizame - uza kuwubona umahluko kwindlela yokuziphatha yomntwana wakho ofikisayo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Man", - "text": "Indoda", + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Cinga ngokugqibela kwakho ukubulelwa ngumntu okanye wakuxelela ukuba wenze into esemagqabini.", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "Mingaphi iminyaka yakho?", + "SourceText": "How did it make you feel?", + "text": "Yakwenza waziva njani?", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Abantu abadala", + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Abazali abadli ngakubulelwa okanye banconywe ngokwaneleyo.", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Abantwana Abafikisayo", + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "Kukwenza uzive njani xa kungekho mntu othi “enkosi”?", "type": "template", "note": "" }, { - "SourceText": "Children", - "text": "Abantwana", + "SourceText": "Tired", + "text": "Uyadinwa", "type": "template", "note": "" }, { - "SourceText": "Babies", - "text": "Iintsana", + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Nomntwana wakho ofikisayo angavakalelwa ngendlela efanayo. Yiloo nto eyenza isixhobo sabazali sale veki sibe lula kodwa sibaluleke: Bancome ngento abayenza kakuhle.", "type": "template", "note": "" }, { - "SourceText": "How many people are in your household?", - "text": "Bangaphi abantu abahlala ekhayeni lakho?", + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "Unokuzenzela i-@global.weekly_workshops OKANYE unokumema amanye amalungu entsapho okanye izihlobo zikujoyine – uza kufunda into eninzi komnye nomnye. Kuxhomekeke kuwe!", + "SourceText": "Why did she praise them?", + "text": "Kutheni eye wabancoma?", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "Ungathanda ukuyenza njani i-@global.weekly_workshops yakho?", + "SourceText": "To get them to do it more often", + "text": "Ukuze abenze bayenze rhoqo", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Can you think of a name for your group?", - "text": "Ngaba ungacinga ngegama leqela lakho?", + "SourceText": "To help her finish her work", + "text": "Ukumnceda awugqibe umsebenzi wakhe", "type": "template", "note": "" }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "Loluphi usuku lweveki ongathanda ukwenza ngalo i-@global.weekly_workshops yakho?", + "SourceText": "To make them feel good", + "text": "Ukubenza bazive kamnandi", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Monday", - "text": "NgoMvulo", + "SourceText": "To make herself feel good", + "text": "Ukumenza lo mntwana azive kamnandi", "type": "template", "note": "" }, { - "SourceText": "Tuesday", - "text": "NgoLwesibini", + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Zonke ezo zinto ziyinyani! \n\nXa abantwana bakhe abafikisayo bonwabile, u-@global.w_praise_female_caregiver_name uziva onwabile. Yaye uye wawugqiba umsebenzi wakhe.", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Wednesday", - "text": "NgoLwesithathu", + "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text": "Ukuncoma kunamandla kakhulu. \n\nMakhe sijonge umzekelo ka @global.w_praise_female_caregiver_name neentombi zakhe:", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Thursday", - "text": "NgoLwesine", + "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text": "Xa u @global.w_praise_female_caregiver_name exakekile, iintombi zakhe ezimbini ziyalwa qho. Kodwa namhlanje, intombi yakhe enkulu iye yancedisa udadewayo ngomsebenzi wesikolo!", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Friday", - "text": "NgoLwesihlanu", + "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", + "text": "@global.w_praise_female_caregiver_name: \"Enkosi ngokwenza umsebenzi wakho wesikolo, @global.w_praise_girl, yaye enkosi ngokuncedisa udadewenu, @global.w_praise_teen_girl. Ndiyazidla ngawe!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" }, { - "SourceText": "Saturday", - "text": "NgoMgqibelo", + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Inyathelo 1: Sibalisele oko kuye kwahamba kakuhle noko kuye kwanzima", "type": "template", "note": "" }, { - "SourceText": "Sunday", - "text": "NgeCawa", + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "“Ndifunde lukhulu ngobomi bomntwana wam ofikisayo xa sikhe sachitha ixesha sobabini! Kodwa emva kosuku lokuqala, umntwana wam ofikisayo ebefuna ukudlala efowunii yakhe nje qha.”", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Kulunge kakhulu! Siza kuvula uqeqesho olutsha lweqela lakho qho ngeveki. Oku kuza kuvumela ukuba nonke nizame izinto enizifunde kunye neentsapho zenu ngaphambi kokuba nifunde isakhono esilandelayo.", + "SourceText": "Step 2: Bring ideas!", + "text": "Inyathelo 2: Yiza nezimvo!", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Kulunge kakhulu! Siza kuvula uqeqsho olutsha qo ngeveki. Oku kuza kuvumela ukuba uzame izinto ozifunde kunye nentsapho yakho ngaphambi kokuba ufunde isakhono esilandelayo.", + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "Usebenzile ngokuzama! Mhlawumbi ungacebisa ezinye izinto zolonwabo eninokuzenza kunye nomntwana wakho ofikisayo.”\n\n“Ewe, okanye ningenza okuthile kunye efowunini yakhe? Okanye angakubonisa indlela esebenza ngayo ifowuni yakhe?”", "type": "template", "note": "" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "Unako ukutshintsha olu lungiso nanini na kwi-@global.weekly_workshop_options yakho.", + "SourceText": "Step 3: Pick and try one!", + "text": "Inyathelo 3: Khetha uze uzame ibe nye!", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Siyayiqonda ukuba inzima le nto. Siye songeza amacebiso aluncedo angendlela onokuchitha ngalo ixesha nomntwana wakho ofikisayo kwi@data.parent_centre.my_tips.location_text, ngoko ungawafikelela ngoku. \n\nNgenxa yokuba i-@data.workshop.w_1on1.title isisiseko sazo zonke izixhobo zokuba ngumzali, iza kuba yi-@global.weekly_workshop oza kuyifumana kwiveki ezayo!", + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Enkosi ngezo ngcamango zisemagqabini! Ewe, makhe ndicele umntwana wam ofikisayo andibonise indlela esebenza ngayo ifowuni yakhe ngomso emva kokuphuma kwesikolo. Ngaba omnye wenu angazenza umntwana wam ofikisayo ngoku, ukuze ndiqhelisele ukumbuza?”", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "" }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "Usebenzile! I-@global.weekly_workshop elandelayo iza kukunika amacebiso ngale nto, njengesiseko sazo zonke ezinye izixhobo zokuba ngumzali. Kodwa sele unesiqalo esihle!", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Cinga malunga nendlela izinto ezenziwa ekhaya ezihambe ngayo kule veki. \n\nTshintshanani xa nincokola:\n\n* Yintoni ehambe kakuhle ibe yintoni eye yanzima?\n* Zeziphi izisombululo eninokucinga ngazo?\n* Khethani isisombululo esinye nize ethubeni nisizame kunye nomntwana wakho ofikisayo! \n\n(Okanye ningaqhelisela ngoku ukuze kube lula xa seniyenza kamva!)", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Kwi-@data.parent_centre.my_tips.location_text siye safaka izixhobo ezibalulekileyo ngendlela onokuncoma ngayo ukuze ukhawuleze uzifikelele.\n\nKwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Imiphumo yokuncoma\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. Kwi-@data.workshop.w_praise.in_text_title yethu uza kufunda nangakumbi ngendlela yokusisebenzisa kakuhle esi sakhono.", + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Imiphumo yokuncoma\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuncoma\nYIBONE - YITSHO - YIPHINDE\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Baliselanani:\n\n* Ugqibele nini ukubulelwa ngumntu okanye akuxelele ukuba wenze into esemagqabini? \nYakwenza waziva njani? \n* Uziva njani xa ungabulelwa okanye unconywe ngenxa yento oyenzileyo? \n\nAsidli ngakubulelwa okanye sinconywe ngokwaneleyyo njengabazali. Mhlawumbi unganika abantwana bakho abafikisayo umzekelo omhle uze ubancome kuqala xa besenza into entle!", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze ukuze sikuncede uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "SourceText": "Let's discuss this story.", + "text": "Makhe sincokole ngeli bali.", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nSiza kufunda ngakumbi ngokulawula uxinezelelo kwiveki @data.workshop.w_stress.numberye-@global.weekly_workshops - kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe@data.parent_centre.my_tips.location_text ukuze uqalise!", + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Ncokolani kunye:\n\n* Ukunconywa kubenze baziva njani abantwana abafikisayo baka @global.w_praise_female_caregiver_name?\n* Kutheni eye wabancoma?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza rhoqo ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nSiza kufunda malunga nokulawula uxinezeleko kwiveki @data.workshop.w_stress.number ye @global.weekly_workshops, kodwa ungakwazi ukufikelela kwizixhobo eziluncedo phantsi kwe @data.parent_centre.my_tips.location_text ukuze uqalise.", + "SourceText": "The same can work for you!", + "text": "Nawe le nto inokukunceda!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Siyathemba ukuba izixhobo zethu zokulawula uxinezeleko ziza kuba luncedo kuwe. Unokuzifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name ubancomile abantwana bakhe abafikisayo...", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Kuhle. Sinoqeqesho malunga nokwenza ibhajethi yosapho enokunceda kuxinezeleko lwemali ngokubanzi ngakumbi kuze kunciphise iingxabano ezinxulumene nemali.", + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Ukuze abenze bayenze rhoqo\n* Ukumnceda awugqibe umsebenzi wakhe \n* Ukubenza bazive kamnandi \n* Ukumenza lo mntwana azive kamnandi", "type": "template", "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Uxinezeleko lwemali lungabangela usindeke kakhulu. \n\nSinoqeqesho malunga nebhajethi yosapho kwiiveki ezintlanu, kodwa ungafikelela kwezinye iingcebiso zokubhajetha kosapho phantsi kwe@data.parent_centre.my_tips.location_text!", - "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." - }, - { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. Ukuze uzinyamekele size sikuncede uzive uzolile xa izinto zisiba nzima, siza kukukhumbuza yonke imihla ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nKwiveki 5 ye-@global.weekly_workshops, siza kufunda okungakumbi malunga nokulawula uxinezeleko, kodwa sele unako ukufikelela kwizixhobo eziluncedo phantsi kwe-@data.parent_centre.my_tips.location_text.", + "SourceText": "SEE IT", + "text": "YIBONE", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha kwaye ukusebenzisa i-@global.parent_app linyathelo elihle lokukunceda kunye nentsapho yakho!\n\nIzixhobo zethu zincede amawaka abazali kunye neentsapho zancipha ekubeni noxinezeleko kwaye zaba nexesha elimnandi kunye. Silapha ukuze sikuxhase.", + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Khangela nantoni na umntwana wakho ofikisayo ayenzayo eluncedo okanye elungileyo, uze umncome ngenxa yoko. Basenokungayibonisi kodwa uya kubabona bephinda beyenza loo nto ilungileyo. Kanti iya kubaqinisekisa ukuba uyaqaphela yaye uyakhathala.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSiyathemba ukuba izixhobo zokulawula uxinezeleko ziza kukunceda uzive uzolile phantsi kweemeko ezinzima. Ungazifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", + "SourceText": "SAY IT", + "text": "YITSHO", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Oku kuxhalabisa bonke abazali nokuba baphi. Siza kuqinisekisa ukuba ufumana inkxaso malunga nokwakha uxibelelwano. \n\nSiza kuthetha ngakumbi malunga nokuceba ukhuseleko lomntwana wakho ofikisayo kwi-@global.weekly_workshops, kodwa phantsi kwe-@data.parent_centre.my_tips.location_text unokufikelela kumacebiso abalaseleyo aphambili ukuze ugcine umntwana wakho ofikisayo ekhuselekile!", + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Yiba nentshiseko – nyaniseka xa uyitsho!", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Oku kuhle ngeyona ndlela. Ukuba ngumzali kunzima, kodwa uqhuba kakuhle kakhulu kule mbopheleko.", + "SourceText": "REPEAT IT", + "text": "YIPHINDE", "type": "template", "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Kwi-@global.parent_centre ungafikelela kwizixhobo ezithetha ngqo ngalo mbandela, umxholo owongezelelekileyo kunye nezixhobo enokuba kunini na. \n\nUngafikelela kwezinye iingcebiso zokuqala ezisisiseko eziya kunceda xa ubeka imithetho nasekucebeni ukhuseleko phantsi kwe @data.parent_centre.my_tips.location_text.", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Zama ukufumanisa into oza kubabulela ngayo suku ngalunye. Nditsho nento encinci kakhulu.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools kunye @data.workshop.w_safe.tools yongezwe ku @data.parent_centre.my_tips.title.", + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Kanti ungancoma nabanye abantu abadala ekhayeni lakho. Phawula indlela abasabela ngayo!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Kwi-@global.parent_centre ungafikelela kwizixhobo ezithetha ngqo ngalo mbandela, umxholo owongezelelekileyo kunye nezixhobo enokuba kunini na. \n\nUngafikelela kwezona ngcebiso zokuqala zisisiseko eziya kunceda ekubekeni imithetho phantsi kwe@data.parent_centre.my_tips.location_text.", + "SourceText": "Let's practice giving praise.", + "text": "Masikuqhelisele ukuncoma.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_rules.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Baliselanani: \n\n* Ungamncoma ngantoni umntwana wakho ofikisayo? \n* Yintoni enye into entle eyenziwe ngomnye umntu ebudeni bolu qeqesho? Baxelele!\n* Kukwenze waziva njani ukuncoma umntu?\n* Kukwenze waziva njani ukunconywa?", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKwi-@global.weekly_workshops ezizayo siza kuba nenkxaso engakumbi, ukuba ungathanda ukwazi okungakumbi!", + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Maxa wambi kuba nzima ukucinga ngento onokumncoma ngayo umntwana wakho ofikisayo! Nanga amanye amacebiso avela kwabanye abazali:", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Ikhontenti evulwa yile mibuzo uyafumaneka ngoku phantsi kwe@data.parent_centre.my_tips.location_text.", + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Ukuba noobubele emntwini \n* Ukucoca igumbi lakhe lokulala \n* Ukujoyinia isiddlo sentsapho \n* Ukubulisa amanye amalungu osapho \n* Ukunyamekela abanye abantwana bakowabo \n* Ukugoduka kwangethuba \n* Ukumcingela \n* Ukuthi ‘ndiyacela’ okanye ‘enkosi’ \n* Ukuya esikolweni \n* Ukwenza imisebenzi yasekhaya okanye eyesikolo \n* Ukuphathana ngoxolo ebudeni besidlo", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "Usanda kuvula uqeqesho lokuqala!", + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "Kumnandi ukuva ukuba uqhuba kakuhle. Ungumzali osemagqabini!", "type": "template", "note": "" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Siyayiqonda ukuba inzima le nto. Ungajonga ezinye iingcebiso eziluncedo ngendlela onokuchitha ngayo ixesha kunye nomntwana wakho ofikisayo @data.parent_centre.my_tips.location_text okanye ungaphinda ujonge i@data.workshop.w_1on1.in_text_title.", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Uxolo ngoba usuku lwakho alukuhambeli kakuhle. Wenze kakuhle ngokuzama ukubona yonke into. Akakho umntu onazo zonke iimpendulo kodwa eneneni wenza konke okusemandleni akho!", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "Wenze kakuhle ngokubeka isiseko esihle kangaka! Ungaphinda ujonge i@data.workshop.w_1on1.in_text_title nanini na ukuze ufumane iingcamango zendlela yokuchitha ixesha kunye.", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Uxolo ngokuva ukuba alumnandanga usuku lwakho. Uqhube kakuhle ngokuvuka rhoqo ntsasa nganye uphinde uzame kwakhona naxa sele udiniwe. Yinkalipho nokuzinikela kokwenene!", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Ukusebenzisa le app kubonisa ukuba umkhathalele umntwana wakho ofikisayo. Ungaphinda ujonge indlela onokukusebenzisa ngayo ukuncoma phantsi ko@data.parent_centre.my_tips.location_text.\n\nUkufumana amanye amacebiso angakumbi ngendlela yokusisebenzisa kakuhle esi sakhono, unokuphinda ujonge kwi @data.workshop.w_praise.in_text_title.", + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Kule veki, yenza umgaqo ube mnye nomntwana wakho ofikisayo.\n\nUngalibali ukumncoma umntwana wakho ofikisayo emva koko!", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "Kuyavuyisa ukuba uyamncoma umntwana wakho ofikisayo! Oku kumnceda azive exatyiswa – ukumkhuthaza kwakho kutsho lukhulu. \n\nUngaphinda ujonge kwakhona kwi@data.workshop.w_praise.in_text_title ukufumana ezinye iingcebiso ezingakumbi zendlela yokusisebenzisa kakuhle esi sakhono.", + "SourceText": "make rules with their teens", + "text": "yenza imithetho kunye nabantwana bakho abafikisayo", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuva ukuba le veki ibintle!\n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "Ngaba uye wanengxaki xa benizama ukwenza umthetho kunye?", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuva ukuba ubukhulu becala evekini ubuziva uzolile! \n\nSiza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukukunceda uqhubeke ulawula uxinezeleko lwakho uze uzive uzolile.", + "SourceText": "What was difficult for you about making a rule with your teen?", + "text": "Yintoni ebinzima ngokubeka umthetho kunye nomntwana wakho ofikisayo?", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Siyayiqonda indlela obunoxinezeleleko ngayo ubomi. Siza kukukhumbuza qho ukuba uphole, uziphawule uze uzivuze wena siqu, ukuze kukuncede ulawule uxinezeleko lwakho uze uzive uzolile.\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", + "SourceText": "My teen and I could not agree on a rule.", + "text": "Mna nomntwana wam khange sikwazi ukuvumelana ngomthetho.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza ukuba uphole, uziphawule uze uzivuze. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Cinga enoba lo mthetho usengqiqweni. Ngaba umntwana wakho angakwazi ukuwuthobela? Xa nisenza umthetho njengentsapho, kuyanceda ukucinga ngomntwana wakho ofikisayo, mingaphi iminyaka yakhe, kunye nezinto ezibalulekileyo kuye.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka. Kukhe kube nzima kakhulu ukulawula uxinezeleko lwethu. Ungafumana nezinye izixhobo ezisebenzayo zokulawula uxinzelelo phantsi kwe@data.parent_centre.my_tips.location_text.", + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "Umntwana wam ebevakalelwa kukuba akulunganga ukuba kufuneke athobele umthetho ngoxa kungafuneki ndiwuthobele mna.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Kuhle. Ukuba kuye kwavela naluphi na uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho kwixesha elizayo, ungaphinda ujonge i@data.workshop.w_money.in_text_title okanye i@data.parent_centre.my_tips.location_text!", + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Simele sisoloko sikhumbula ukuba abantwana bafunda kakuhle kumzekelo wethu. Okukhona sithobela imithetho, kokukhona nabo beza kuyilandela. \n\nUnokuwutshintsha umthetho ukuze uqinisekise ukuba unokuthotyelwa, ucinga ngeembopheleleko onazo kunye nezomntwana wakho ofikisayo (ngokomzekelo, izinto ezenziwa esikolweni okanye emsebenzini).", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Uxinezeleko ngemali lungabangela usindeke kakhulu. \n\nNanini na kuvela uxinzelelo okanye ukungavisisani ngokuphathelele imali kusapho lwakho, unokufumana iingcebiso kwi @data.workshop.w_money.in_text_title okanye phantsi kwe @data.parent_centre.my_tips.location_text!", + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Ndiye ndaziva ndingakhululekanga ngenxa yokuba ndivakalelwa kukuba ndim omele ukuba ubeka umthetho kungekhona umntwana wam ofikisayo.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. Ukuze uzikhathalele wena siqu kuze kukuncede uzive uzolile xa izinto zisiba nzima, siza kuqhubeka sikukhumbuza uphole, uziphawule uze uzivuze wena siqu. Ubalulekile!\n\nUngafumana iingcebiso ezingakumbi zokulawula uxinezelelo kwi@global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text.", + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "Iqabane lam liye laziva lingakhululekanga, ngenxa yokuba livakalelwa kukuba lilo elimele ukuba libeka umthetho, kungekhona umntwana ofikisayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSonke sikhe sizive sisonganyelwa zizinto ngamanye amaxesha, kwaye ukuqhubeka sisebenzisa i-@global.parent_app linyathelo elihle lokunceda wena nosapho lwakho!\n\nIzinto zethu zincede amawaka abazali kunye neentsapho zaye ziyeka ukuba noxinezeleko kwaye zaba nexesha elimnadi kunye. Silapha ukuze sikuxhase.", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Xa sibeka imithetho sisebenzisana kunye nabantwana bethu abafikisayo, loo nto inceda ukuba abantu abakwintsapho baqondane. Imithetho iza kulungela wonke umntu kwaye abantwana bethu abafikisayo baza kufuna ngakumbi baze bakwazi ukuyithobela.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Enkosi ngokunyaniseka – kwaye sibuhlungu ngenxa yokuba unexesha elinzima kunye nomntwana wakho ofikisayo. \n\nSiyathemba ukuba izixhobo zethu zokulawula uxinezeleko ziza kuqhubeka zikunceda uzive uzolile phantsi kweemeko ezinzima. Ungazifumana phantsi kwe-@data.parent_centre.my_tips.location_text.", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Xa besizama ukubeka umthetho, siye saxabana.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Oku kuxhalabisa bonke abazali nokuba baphi. Khumbula ukusebenzisa izakhono zakho ezintsha ukuze uqhubeke nokwakha unxibelelwano oluhle nomntwana wakho ofikisayo. \n\nUngaphinda ujonge iingcebiso ezingundoqo ekucebeni ukhuseleko lomntwana wakho kwi @global.weekly_workshop okanye phantsi kwe @data.parent_centre.my_tips.location_text!", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "Ngaba ebekwimeko entle umntwana wakho ofikisayo xa benibeka umthetho? Kuhle ukubeka imithetho xa imeko izolile. Ukuba wena okanye umntwana wakho nidiniwe okanye nilambile, kungcono ukuthetha ngemithetho ngelinye ixesha.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase!\n\nKhumbula, ungafumana izixhobo ezijolisileyo, umbandela owongezelelekileyo kunye nezinto onokuzisebenzisa koku kwi@global.parent_centre nanini na. Unokuphinda ujonge iingcebiso ezingundoqo ngokubeka imithetho kunye nokuceba ukhuseleko phantsi kwe @data.parent_centre.my_tips.location_text.", + "SourceText": "We were not able to stick to the rule.", + "text": "Khange sikwazi ukuwuthobela umthetho.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba ngumzali akululanga. Kunokuba nzima ukwazi indlela yokugcina abantwana bethu abafikisayo bekhuselekile. Njengabazali, siye singabi nawo amandla kulo mbandela, kodwa sikhona ukuze sikuxhase! Khumbula, ungafumana izixhobo ezijolisileyo, umbandela owongezelelekileyo kunye nezinto onokuzisebenzisa koku kwi@global.parent_centre nanini na. \n\nUnokuphinda ujonge iingcebiso ezingundoqo zokubeka imithetho phantsi kwe@data.parent_centre.my_tips.location_text.", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Umthetho kufuneka ungqale uze ube ngonokuthotyelwa. Qinisekisa ukuba umthetho obekwayo unokugcinwa ngokulula, njengokutya isidlo kunye qho ngeCawa endaweni yokwenza oko ngazo zonke iingokuhlwa. Ngaba kufuneka ububhetyebhetye kulo mthetho?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Ukuba ngumzali akululanga. Usebenzile ngokunikela ingqalelo ekugcineni umntwana wakho ofikisayo ekhuselekile. \n\nKhumbula, unokufumana inkxaso engakumbi malunga noku @data.workshop.w_safe.in_text_title nanini na uyidinga!", + "SourceText": "Your goal was to make ONE rule with your teen this week.", + "text": "Injongo yakho ibikukubekela umntwana wakho ofikisayo umthetho OMNYE kule veki.", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Khumbula ukuba unokufikelela kwiingcebiso ezininzi eziluncedo kunye nezinto onokuzisebenzisa kwi @global.parent_centre - oku ungakufumana nanini na!", + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "Usebenzile ngokwenza le nto! Akululanga kwaye abantwana abafikisayo abazusoloko beyithobela imithetho, kodwa ukubeka imithetho ebalulekileyo yindlela entle yokuqalisa. Zincome ngokwenza oku - siyazingca ngawe!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "Ngaba kukho abantwana abafikisayo kusapho lwakho?", + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Imigaqo inceda abantwana abafikisayo baqonde oko kulindelekileyo kubo. \n\nAbantwana abafikisayo batyekele ngakumbi ekulandeleni imigaqo xa imigaqo niyenza KUNYE nomntwana wakho ofikisayo uze umncome ngaloo nto!", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "Le app ijolise kwiintsapho ezinabantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo kusapho lwakho!", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje yimigaqo. \n\nImigaqo ikhuthaza uxolo ekhayeni ize ikhuthaze ukuqondana phakathi kwamalungu entsapho. \n\nImigaqo ikhuthaza iimbopheleleko kwilungu ngalinye lentsapho, ngenxa yoko, kubalulekile ukuba nemigaqo yentsapho. \n\nIkhaya elinemigaqo yentsapho liphila eluxolweni.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "Ngaba bakhona abantu abadala kusapho lwakho?", + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Bhala phantsi umgaqo omnye obalulekileyo ongathanda ukuwenza nomntwana wakho ofikisayo – uza kuwenza njengoqheliso lwasekhaya kule veki. \n\nBaya kucinga ntoni ngoku?", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "Le app ijolise kubazali babantwana abafikisayo @global.teen_age_bracket, kodwa wamkelekile ukuba uqhubeke - ungafunda izinto eziluncedo!", + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "Ngaba ukwazile ukusebenzisana nomntwana wakho ofikisayo ukuze nibeke umthetho?", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "Uqinisekile ufuna ukuwutsiba lo mbuzo?", + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Ngamanye amaxesha kuye kube ngathi abantwana bakho abafikisayo banomsindo nangona sele wenze konke okusemandleni akho. Ukhumbule ukuba wenza umsebenzi ogqwesileyo, kwaye amaxesha amnandi aza kude abekho nakubo!", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "Uqinisekile ukuba ufuna ukuwudlula lo mbuzo? Khumbula, impedulo yakho izokugcinwa bucala kwaye izosinceda siqonde iimfuno zobuzali bakho. \n\nUngakwazi ukukhetha ukungaphenduli noba ngowuphi umbuzo ngokukhetha isangqa.", + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "Sele ukufutshane ekufumaneni esinye isixhobo sokuba ngumzali! Gqiba i-@local.workshop_data.in_text_title, bekela umntwana wakho ofikisayo umthetho OMNYE olula nonokuthotyelwa, uze ubone izinto zitshintsha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "Ukhethe \"Ndikhetha ukungaphenduli\"", + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Enkosi kwakhona ngokusebenzisa i-@global.parent_app nangokuzimisela kuhambo lokuba ngumzali. \n\nI-@local.workshop_data.in_text_title iza kukubonisa indlela yokubeka imithetho ngendlela eya kunceda umntwana wakho ofikisayo ayiqonde aze ayilandele ngcono.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Kulungile!\n\nKhumbula, ukuba uyakhetha ukunikeza impendulo yakho izokugcinwa bucala kwaye izokusinceda ekukuboneleleni umxholo olungele wena kanye.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ayiyi kuthatha xesha lide kwaye iya kunceda umntwana wakho ofikisayo alandele imithetho ngcono!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Customise for your needs", - "text": "Tshintsha ngenxa yeemfuno zakho", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Sivuyisana nawe, uye wayigqiba i@local.workshop_data.in_text_title.\n\nNgomso, uqeqesho olutsha luza kukunceda wazi ukuba wenzeni xa abantwana abafikisayo bebonakalisa ukungabi nasimilo (okanye ukuba naso)!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Wonke umzali osehlabathini uyasokola ngala maxesha obunzima. Imibuzo elandelayo malunga namava akho okuba ngumzali iza kusinceda sikunike inkxaso oyifunayo.\n\nNyaniseka. Khumbula ukuba awukho wedwa! Izigidi zabazali zivakalelwa ngale ndlela uvakalelwa ngayo kwaye sonke sifanelwe yinkxaso.", + "SourceText": "They discussed the reasons behind the rule", + "text": "Baye bancokola ngezizathu zomgaqo", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Kunzima ukuba nexesha lokonwaba kunye nomntwana wakho ofikisayo.", + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Zingaphi iintsuku evekini apho ukwaziyo ukubanika ingqalelo yakho uze wenze into abayithandayo kunye nabo?", + "SourceText": "The rule was clear, specific and fair", + "text": "Umgaqo ubucacile, ungqalile yaye ulungile", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_1on1.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Kubomi bethu obuxakekileyo, kunzima ukunikela ingqalelo kwizinto ezikhuthazayo.", + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Unyanisile, ukwenza imigaqo ecacileyo kunye ngendlela ezolileyo neyiyo kunceda kakhulu!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "Kwiveki ephelileyo, uye wamncoma iintsuku ezingaphi umntwana wakho ofikisayo?", + "SourceText": "She praised him", + "text": "Uye wamncoma", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_praise.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "She rewarded him when he followed the rule", + "text": "Umnike umvuzo ngokulandela umgaqo", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "This is a very stressful time for families.", - "text": "Eli lixesha elibangela uxinezeleko kwiintsapho.", + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Uchanile - impendulo eyiyo iyawenza umahluko!", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Kwiveki ephelileyo, ngaba njengomzali/umnakekeli uye waziva uxinezelekile?", + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "Makhe sifunde ngoko kwenzeke nge @global.w_rules_teen_boy ne @global.w_rules_female_caregiver_1:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Ngamanye amaxesha, abantwana bethu bakhe basicaphukise.", + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: \"Usoloko ugoduka emva kwexesha!\"\n\n@global.w_rules_teen_boy: \"Hayi akunjalo, andazi nokuba lithetha ukuthini igama elithi emva kwexesha! Khawuyeke ukundijikeleza ngochuku.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Kwiveki ephelileyo, zingaphi iintsuku oye washawuta waza wabakrasela ngazo abantwana bakho?", + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Nguwuphi umgaqo okhethekileyo abanokuthi u @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 bawuyile kunye?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "Usebenzile. Inzululwazi yengqondo ibonisa ukuba ukulawula umsindo wakho kuphucula ukukhula kwengqondo yomntwana wakho. Zingce.", + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "Makhe sibone indlela u @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy abayenza ngayo le nto ngosuku olulandelayo\n\n@global.w_rules_female_caregiver_1: Ndifuna wonwabe, @global.w_rules_teen_boy, kodwa iyandikhathaza nento yokuhamba kwakho ngobusuku. Ngaba uyasazi isizathu?” \n\n@global.w_rules_teen_boy: “Ngenxa yokuba ufuna ndibe nexesha elaneleyo lokwenza umsebenzi wam wesikolo?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Imali yenye yezona zinto zinkulu ezibangela uxinezeleko kwiintsapho ngoku.", + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: “Unyanisile, yaye akukhuselekanga kule ndawo ukuba ngaphandle emva kokutshona kwelanga. Ucinga ukuba leliphi ixesha elililo lokuba sekhaya?”", "type": "template", - "note": "" + "note": "The string @global.w_rules_female_caregiver_1 should not be translated." }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "Kwiveki ephelileyo, zingaphi iintsuku oye wanexhala ngazo okanye oye waziva unexhala ngemali?", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “Ndingagoduka ngo-10pm?\" \n\n@global.w_rules_female_caregiver_1: “Kusuke kusebusuku noko, unjani u-6pm? Okanye elinye ixesha eliphakathi?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Kwinyanga edlulileyo (iinstuku ezingama-30), zingaphi iintsuku oye waphelelwa ngazo yimali yokuthenga ukutya?", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “Ndingagoduka ngo-6pm ngeentsuku zesikolo ndize ndigoduke ngo-10pm ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Ok kulungile. Ukususela ngoku, umgaqo wentsapho yethu uthi kufuneka ufike endlini ngo-6pm ngeentsuku zesikolo uze ufike ngo-10pm ngooLwezihlanu nangemiGqibelo. Kodwa usoloko ugoduka nomhlobo. Ilungile xa injalo?\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_money.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: \"Kulungile, @global.w_rules_female_caregiver_1“ \n\n@global.w_rules_female_caregiver_1: “Enkosi kakhulu, @global.w_rules_teen_boy, ngokundincedisa senze umgaqo omhle. Kundivuyisa kakhulu ukuphawula ukuba uya uqola.”", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Xa abantwana besenza ukusa, oko kubangela uxinezeleko.", + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Ngengomso...\n\n@global.w_rules_female_caregiver_1: “Enkosi, @global.w_rules_teen_boy, ngokubuya ekhaya kwangethuba. Emva kokuba ugqibe umsebenzi wakho wesikolo singatya isidlo sangokuhlwa osithandayo.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Zingaphi intsuku kule veki idlulileyo oye waqeqesha abantwana bakho ngokubabetha, ukubabetha ezimpundu okanye ukubabetha ngesandla sakho okanye ngenye into efana noswazi okanye ibhanti?", + "SourceText": "Online Safety", + "text": "Ukhuseleko kwi-Intanethi", "type": "template", "note": "" }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Kuhle ukubona ukuba uyazola xa umntwana wakho ofikisayo esenza into ecaphukisayo. Ininzi into abanokuyifunda kuwe!", + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", + "text": "Imigaqo ibalulekile ukugcina umntwana wakho ofikisayo ekhuselekile - nakwi-intanethi. Kukho okungakumbi ngale nto kuQeqesho lweVeki nganye olungokuceba ukhuseleko, kodwa masesiqaliseni sijonge ngoku!", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_stress.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, ngaba uwenzile umsebenzi wakho wesikolo?\"\n\n@global.w_rules_teen_girl: “Kancinci nje @global.w_rules_female_caregiver_2, ndigqibezela le @global.teen_social_medium vidiyo\"", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Kunzima ukuzazi kakuhle izinto ezenziwa ngaabatwana bakho abafikisayo njengoko baya bekhula ibe bezimela.", + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: “Ungumdanisi ophum’ izandla ngokwenene! Ndixelele isizathu sokuba uwuthande\"\n\n@global.w_rules_teen_girl: \"Bonke abahlobo bam bakuwo, @global.w_rules_female_caregiver_2. Ndineelikes eziyi-600 neefollowers eziyi-120.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Kwiveki ephelileyo, zingaphi iintsuku oye wayazi ngazo ukuba uphi umntwana wakho ofikisayo kwaye ukunye nabani?", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: \"Ndiyazidla ngendlela odanisa kamnandi ngayo, @global.w_rules_teen_girl. Kodwa simele siqinisekise ukuba ukhuselekile. \n\nNdiyazi ukuba abahlobo bakho bajonga ku @global.teen_social_medium, kodwa ngeakhawunti evulekileyo, kukho nabanye abantu abajonga iividiyo zabantu abafikisayo bencwase ukwabelana nabo ngesondo. Maxa wambi baye baqhagamshelane nabantu abafikisayo. Bazenza ngathi banobuntu kodwa baphela besongela baze babaxhaphaze abantwana abafikisayo.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" }, { - "SourceText": "This is good to hear.", - "text": "Kuhle ukuva oku.", + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: \"Makhe sijonge kunye kwi-intanethi ukuze sibone ukuba singaqhubeka njani siqiniseka ukuba wonwabile kodwa ukwakhuselekile. Khangela – ungenza iakhawunti yakho ibe nobumfihlo uze ulawule abantu abakulandelayo.\n\nUngamkela abantu obaziyo esikolweni nakwindawo esihlala kuyo, kungekhona abantu abaqhagamshelana nawe kwi-intanethi.\n\nNgaba singawenza kunye umgaqo onokuwusebenzisa @global.teen_social_medium, kodwa kwiakhawunti yabucala? Ndiyathemba uyazi ukuba ngubani omawumamkele!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Were you in lockdown this week?", - "text": "Ngaba beniphantsi kwemithetho yokuhlala ekhaya kule veki?", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: Ndiyazidla ngawe @global.w_rules_teen_girl\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Kwakuhle ukubona ukuba uyakwazi oko kwenziwa ngumntwana wakho ofikisayo. Ukuba ngumzali kunzima, kodwa uyaphumelela ngokwenene koku ukuze ubagcine bekhuselekile.", + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "Oku kusemagqabini. Ngalunye kolu qheliselo lwenza intsapho yakho yomelele. Zidle.", "type": "template", "note": "" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Zingaphi iintsuku kwiveki eqhelekileyo ekungekho mithetho yokuhlala endlwini oye wazi ukuba umntwana wakho ofikisayo wenza ntoni kwaye ukunye nabani na?", + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo nto ayikhange isebenze… \n* Ibali nengxubusho – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "I-@data.workshop.w_safe.tools ifakwe kwi-@data.parent_centre.my_tips.title.", + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo ayikhange isebenze… \n* Ibali nokucamngca – oko kuye kwasebenza!\n* Izixhobo: Indlela yokuyila imigaqo\nIMIGAQO YEQELA - IMIGAQO YOKWENENE - IMIGAQO YOKUNCOMA!\n* ibali lokhuseleko kwi-intanethi – loo nto isebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "We all want to keep our children safe.", - "text": "Sonke sifuna abantwana bethu bahlale bekhuselekile.", + "SourceText": "What went well here in making a rule together?", + "text": "Yintoni ebintle apha ngokwenza umgaqo kunye?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "Kwinyanga ephelileyo (iintsuku ezingama-30), zingaphi iintsuku oye wacokola ngazo kunye nomntwana wakho malunga nokukhuseleka kubundlobongela ngokwesini enoba ukwi-intanethi okanye ekuhlaleni?", + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "Ucinga ukuba u @global.w_rules_teen_boy wazi njani ukuba u @global.w_rules_female_caregiver_1 uyamxabisa?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Kusenokwenzeka xa bekunye neetshomi zabo okanye bethetha ngeewebhsayithi abazisebenzisayo.", + "SourceText": "Making the rule together went well because...", + "text": "Ukuwenza sobabini umgaqo kusebenzile ngenxa yokuba...", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Ngoku sinocelo-mngeni olutsha – ukugcina abantwana bethu abafikisayo bekhuselekile kwi-COVID-19.", + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Baye bancokola ngezizathu zomgaqo \n* @global.w_rules_female_caregiver_1 uwaphulaphule amacebiso ka @global.w_rules_teen_boy \n* Umgaqo ubucacile, ungqalile yaye ulungile \n* @global.w_rules_female_caregiver_1 umncomile u @global.w_rules_teen_boy ngokumnceda enze umgaqo", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Kwiveki ephelileyo, zingaphi iintsuku aye wakhuseleka ngazo umntwana wakho ofikisayo ngokuthi anxibe imaski, angasondelelani nabanye abantu nokungayi kwiindawo ezinabantu abaninzi?", + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy ebemazi @global.w_rules_female_caregiver_1 ebemxabisa ngenxa yokuba...", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "Kungalucelo-mngeni ukugcina umntwana wakho ekhuselekile kwi-COVID! Sisaqulunqa amacebiso – kungekudala uza kuwafumana kwi-@global.parent_centre.", + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* Uye wamncoma\n* Umnike umvuzo ngokulandela umgaqo", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Kuhle oko. Sisaqulunqa amacebiso okugcina umntwana wakho ofikisayo ekhuselekile kwi-COVID – kungekudala uza kuwafumana kwi-@global.parent_centre.", + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Imigaqo yekhaya inceda ukugcina abantwana bethu abafikisayo bekhuselekile, baze baqonde oko kulindelekileyo kubo. Xa umbandakanya umntwana ofikisayo ekwenzeni imigaqo banokuzimisela ngakumbi ekuyilandeleni.", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest", - "text": "Enkosi ngokunyaniseka", + "SourceText": "TEAM RULES", + "text": "IMIGAQO YEQELA", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "NCOKOLA", + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Yicebe KUNYE nomntwana wakho ofikisayo imigaqo. Qala ngomgaqo omnye omtsha - ungongezelela omnye kamva. Ncokola nabo ngezizathu zalo mgaqo uze uphulaphule izimvo zabo.", "type": "template", "note": "" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Yabelana ngendlela oziva ngayo, kwaye ukhuthaze umntwana wakho ukuba athethe ngezinto ezimkhathazayo. Niya kuqondana ngcono kwaye ninokwenza isicwangciso esilungileyo kunye ukuze nihlale nisempilweni kwaye nonwabile!", + "SourceText": "REAL RULES", + "text": "IMIGAQO YOKWENENE", "type": "template", "note": "" }, { - "SourceText": "CAUTION", - "text": "ISILUMNKISO", + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "Yenze ibe sengqiqweni ilungelane noko umntwana wakho ofikisayo anokukwenza, uze uyibeke icace ize ingqale ukuze iqondwe kakuhle. Kungekhona ‘ngexesha’ kodwa ‘ngo-7pm’.", "type": "template", "note": "" }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Fumana ulwazi lwakho kwimithombo ethembekileyo yolwazi, ukuze ube nokuzithemba kula maxesha angaqinisekanga. Siva kwaye sibona iindaba ezininzi ngabanye abantu kunye neefowuni, iTV, i-intanethi. Ingaba ikwenza uzive uthandabuza, ixhala, uloyiko, umsindo, okanye ukubhideka? Jonga ngaphambi kokuba wabelane okanye wenze!", + "SourceText": "PRAISE RULES!", + "text": "IMIGAQO YOKUNCOMA!", "type": "template", "note": "" }, { - "SourceText": "CHOOSE", - "text": "KHETHA", + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Mncome umntwana wakho ofikisayo ngokuceba umgaqo kunye nawe, uze ubancome ngokuwugcina!", "type": "template", "note": "" }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Ukwenza ukhetho olufanelekileyo olugcina wonke umntu esempilweni kwaye ekhuselekile kunokuba nzima. Ingakumbi kula maxesha! Unokumnceda umntwana wakho ofikisayo enze izigqibo ezifanelekileyo.", + "SourceText": "Let's practice making rules.", + "text": "Makhe siqhelisele ukwenza imigaqo.", "type": "template", "note": "" }, { - "SourceText": "CHILL", - "text": "PHOLA", + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Nguwuphi umgaqo omnye obalulekileyo ngamnye kuni ongathanda ukuwenza nomntwana wakho ofikisayo? \n* Ucinga ukuba umntwana wakho ofikisayo uza kucinga ngantoni ngalo mgaqo? \n\nKhumbula, yenze imigaqo ingqale yaye ibe sengqiqweni!", "type": "template", "note": "" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Sonke siziva sicinezelekile ngamanye amaxesha. Thatha umoya onzulu okanye nenze into eyonwabisayo kunye. Kungenza umahluko omkhulu ukwenza ikhaya lakho lonwabe kwaye libe noxolo! Nazi ezinye iimbono onokuzizama:", + "SourceText": "Here are some of the rules other families created:", + "text": "Nantsi eminye imigaqo eziye zayiyila ezinye iintsapho:", "type": "template", "note": "" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Iingcinga ezingakhiyo zisenza sithethe size senze izinto ezimbi. Zama ukutshintsha into oyicingayo kwaye uyithethe ukusuka kwengalunganga ukuya kwelungileyo!", + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Abantwana abafikisayo bangadlala phandle emva kokugqiba ukwenza umsebenzi wesikolo\n* Onke amalungu entsapho atya kunye idinala\n* Umntwana ofikisayo 1 uhlamba izitya ngeCawa nangoMvulo, Umntwana ofikisayo 2 uzenza ngoLwesibini nangoLwesithathu\n* Sincokolisana ngesimilo nangobubele\n* Xa ufuna ukumamela umculo uwuphulaphula ngee- earphones", "type": "template", "note": "" }, { - "SourceText": "A teen sometimes does something because they:", - "text": "Umntwana ngamanye amaxesha wenza into ngenxa yokuba: ", + "SourceText": "Remember that YOU matter!", + "text": "Khumbula ukuba UBALULEKILE!", "type": "template", "note": "" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "- Mamela abahlobo babo\n- Ufuna ukwenza okwenziwa ngabanye\n-Cinga ngakumbi 'ngoku' kunokuba 'kamva'\n-Iimpembelelo zothando kwaye unokufumana ukudikwa ngononophelwa\n- Ungazikhathazi ngomngcipheko - unokuyithanda imingcipheko\n- Yiba namava anqongopheleyo onokuthi uthembele kuwo\n- Bazimisele ukuzama into - nokuba kwenzeka ntoni na", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "Wenze kakuhle ekuqondeni imvakalelo ezakhayo. Kuyandivuyisa ukuva ukuba uziva kamandi namhlanje!", "type": "template", "note": "" }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Kunokukunceda ukugcina oku engqondweni xa umntwana wakho ofikisayo esenza isigqibo esiphosakeleyo. Thetha nabo kwaye nichithe ixesha kunye ukuze nikwazi ukubanceda bakhethe ngcono kwixesha elizayo!", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", + "text": "Uqhube kakuhle ngokuqonda iimvakalelo ezinzima. Kulungile ukungaziva mnandi maxa wambi. Khumbula ukuba awukho wedwa.", "type": "template", "note": "" }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Ukuqonda indlela umntwana wakho avakalelwa ngayo kunye nendlela onokumxhasa ngayo kwenza umahluko omkhulu kuni nobabini! Jonga umntwana wakho kwaye ubuze indlela avakalelwa ngayo. Cofa kubuso obungezantsi ukuze ufumane ngakumbi:", + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", "type": "template", "note": "" }, { - "SourceText": "Hopeful", - "text": "Ithemba", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Ukuba anikayenzi kunye okwangoku, yenza iimephu ezimbini kunye nomntwana wakho ofikisayo yeendawo ezikhuselekileyo nezingakhuselekanga:\n* Imephu yendawo ohlala kuyo\n* Imephu yee-app neewebhsayithi ezisetyenziswa ngumntwana wakho ofikisayo \n\nQinisekisa ukuba nobabini nonwabile ngesicwangciso sokhuseleko. \n\nEyona nto ibalulekileyo ngokwenene kukuba uthethe nomntwana wakho ofikisayo njengoko usenza lento – abantwana badla ngokwazi lukhulu ngendawo ekhuselekileyo nengakhuselkanga!", "type": "template", "note": "" }, { - "SourceText": "Resilient", - "text": "Ukunyamezela", + "SourceText": "map risks and support with their teens", + "text": "ukubhala imingcipheko nenkxaso kunye nabantwana babo abafikisayo", "type": "template", "note": "" }, { - "SourceText": "Self-esteem", - "text": "Ukuzithemba", + "SourceText": "map risks and support with your teen", + "text": "ukubhala imingcipheko nenkxaso kunye nomntwana wakho ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Umntwana uneenjongo kunye namaphupha ekamva - kufutshane nakude!", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Mna nomntwana wam ofikisayo khange sivumelane ngeendawo ezingakhuselekanga kunye nezinto ezingakhuselekanga ezenziwa kwi-intanethi.", "type": "template", "note": "" }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Buza umntwana wakho malunga ngeenjongo kunye namaphupha akhe, bakhuthaze ukuba bacinge oko bakufuna kwikamva labo, kwaye benze isicwangciso kunye ukuze basebenze ekuwafezekiseni.", + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "Usebenzile ngokuzama ukwenza le nto! Xa sibamamela abantwana bethu abafikisayo, sifunda ukuqonda indlela abacinga ngayo nokuba asivumelani nabo. Zama ukufumana ixesha lokwenza lo msebenzi kwakhona -zama ukumamela nyhani uze ubonise ukuba uyabaqonda ngaphambi kokuthetha ngeengcinga zakho.", "type": "template", "note": "" }, { - "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", - "text": "Abantwana abakwaziyo ukunyamezela nokumelana neemeko ezinzima, baziqhelanise neenguqu, baze basombulule iingxaki xa zivela.", + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "Umntwana wam uthe indlu yomntu endimthembayo ayikhuselekanga. Bendothukile kwaye ndingazi ukuba ndenzeni.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Mncome umntwana wakho ofikisayo ngokoyisa ubunzima kwaye umxhase apho unako.", + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Kuyothusa ukwazi ukuba abantu abasondeleyo kuthi nesibathembayo kusenokwenzeka bayingozi kubantwana bethu abafikisayo. Khumbula ukukhe uthathe ikhefu xa ukhathazekile, uze uzame ukummamela uzolile umntwana wakho ofikisayo. Fumana umntu onokuthetha naye ngale nto, mhlawumbi umhlobo okanye inkonzo yenkxaso, ukuze ufumane inkxaso oyidingayo.", "type": "template", "note": "" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "Ukuzithemba komntwana yindlela azicingela ngayo.", + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "Umntwana wam ofikisayo unyanzelise ukuba ibhari (okanye enye indawo endicinga ukuba ayikhuselekanga) kukhuselekile ukuba ayindwendwele. Andiyazi ndingamoyisela njani umntwana wam ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Khuthaza ukuba ube nomfanekiso olungileyo wesiqu sakhe, misela umzekelo wokungazihlekisi okanye uzigxeke ngalo lonke ixesha. Wazi amandla omntwana wakho kwaye uxhase ubuthathaka bakhe", + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Oku kunokucaphukisa kakhulu. Ukuze ufumane isisombululo, umntwana wakho ofikisayo kufuneka azive emanyelwa - ngoko ke zimamele uzolile izizathu zomntwana wakho ofikisayo, kusemva koko kuphela oya kuthi uthethe ngezakho iingcinga. Emva koko, ninobabini cingani ngomgaqo obavumela bonwabe kodwa babe bekhuselekile.", "type": "template", "note": "" }, { - "SourceText": "Lonely", - "text": "Isithukuthezi", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "Njengomntu omdala, ndiziva ndinoxanduva lokukhusela - kodwa xa ndaxelela umntwana wam ofikisayo oko kukhuselekileyo nokungakhuselekanga, umntwana wam waba nomsindo.", "type": "template", "note": "" }, { - "SourceText": "Anxious", - "text": "Ukuxhalaba", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Abantwana bethu basenokwazi izinto ngeendawo esihlala kuzo kunye neteknoloji ekusenokwenzeka asizazi thina. Xa sibabandakanya ngokupheleleyo abantwana bethu abafikisayo ekucebeni izinto size sibamamele nyhani, baziva bemanyelwa kwaye bexatyiswa, ibe kungalula ukuza necebo elamkelwa nguye wonke umntu.", "type": "template", "note": "" }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Abantwana banokuziva bebodwa, nokuba bakunye nabanye. Basenokuziva ngathi abanaye nabani na abanokuthetha naye, bamthembe, okanye babelane naye.", + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Bekunzima ukubona imithombo yenkxaso efumanekayo kwindawo endihlala kuba andiyazi kakuhle indawo endihlala kuyo / kukho iinkonzo ezimbalwa ezifumanekayo.", "type": "template", "note": "" }, { - "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", - "text": "Buza ukuba umntwana wakho ofikisayo uqhuba njani kwaye uzame ukufumana iindlela ezintsha zokuzonwabisa kunye nabahlobo kunye nosapho - ingakumbi ngexesha lokuvalwa", + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Kunzima ukwazi zonke iinkcukacha ngeendawo esihlala kuzo. Xa ubhala into yokwenza, bandakanya elinye ilugu losapho okanye isihlobo. Usenokude utyelele kwezinye zeendawo ekufumaneka kuzo iinkonzo uze ubuze ukuba zenza ntoni. Okukhona sisazi, kokukhona sinokugcina iintsapho zethu zikhuselekile!", "type": "template", "note": "" }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Ukuxhalaba yimvakalelo eqhelekileyo kwaye inokusinceda sijamelane neemeko ezingumceli mngeni. Kodwa ukuxhalaba kakhulu okanye ukuxhalaba okubangela ukuba abantwana benze izinto abazithandayo kuyingxaki.", + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Andazi nto kangako ngeteknoloji, ngoko andiyazi indlela yokuncokola kunye nomntwana wam ofikisayo ngayo.", "type": "template", "note": "" }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Nceda umntwana wakho abone oko kubenza baxhalabe kwaye benze isicwangciso sokuba banokuphendula anjani kwiingcinga ezixhalabisayo.", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Akukho ngxaki kwaphela! Ungaqhubeka umxhasa umntwana wakho ofikisayo. Cela umntwana wakho akuxelele ngeegajethi abazisebenzisayo - unokuyenza le nto ngethuba lokuchitha ixesha kunye. Eli lithuba elihle lokubonisa umdla kubomi bomntwana wakho ofikisayo nize nincokole kunye ngemingcipheko enokubakho. Ukuba awuqinisekanga ngemithetho onokuyibeka, ninokuvumelana nomntwana wakho ofikisayo ukuba nizame umthetho omtsha kangangeeveki ezimbini nize emva koko nincokole ngendlela ezihamba ngayo izinto kwaye niwutshintshe umthetho ukuba kuyimfuneko!", "type": "template", "note": "" }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Ukwenza umsebenzi wokuphumla kunye kunokunceda!", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Injongo yakho ibikukuceba imingcipheko neenkqubo zenkxaso kunye nomntwana wakho ofikisayo - kokubini kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi.", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Ukudandatheka", + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Abantwana abafikisayo bangachitha ixesha elininzi ngaphandle kwendlu okanye kwi-intanethi, apho kunzima ukuba sibagcine bekhuselekile. \n\nUkuthetha kunye ngeendawo ezikhuselekileyo nezingakhuselekanga, nendlela yokuthintela iingxaki, kunceda ngokwenene!", "type": "template", "note": "" }, { - "SourceText": "Self-harm", - "text": "Ukuzenzakalisa", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Molweni, kuni nonke. \n\nNamhlanje umxholo wethu umalunga nokhuseleko lwabantwana abafikisayo. \n\nKuyimbopheleleko yethu njengabazali ukugcina abantwana bethu abafikisayo bekhuselekile ngamaxesha onke. Kufuneka siqinisekise ukuba abantwana bethu abafikisayo bakhuselekile kwiindawo esihlala kuzo. Kuyimbopheleleko yethu ukubenza bazi ngeendawo ezikhuselekileyo nezingakhuselekanga. \n\nKanti ikwayimbopheleleko yethu ukuqinisekisa ukuba bayaziqonda iingozi abanokuzichanaba kuzo xa bekwi-intanethi. Ngaloo ndlela abantwana bethu abafikisayo baya kuqola baze bakwazi ukwenza izigqibo ezizizo ukuze bazigcine bekhuselekile nabo.", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Ukuziva udakumbile okanye uphantsi, ukuba kwimeko embi, zonke ziimvakalelo eziqhelekileyo zomntu. Ukudandatheka kuxa iqhubeka ixesha elide kwaye imisebenzi yesiqhelo yemihla ngemihla yomntwana wakho iyachaphazeleka. Umntwana wakho unokuziva engenathemba kwaye engakwazi okanye engakhuthazwa ukutshintsha nantoni na.", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Ncokolani kunye:\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Zama ukufumana uncedo lwengcali.", + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", "type": "template", "note": "" }, { - "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", - "text": "Ngamanye amaxesha abantwana banokuzilimaza ngenjongo yokujongana neemvakalelo ezimbi ezifana nomsindo, ityala, ukungabi nanto, okanye ukuzonyanya. Oku kunokubangelwa kukuxhalaba okanye ukudandatheka.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nentlekele? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha. \n\nApha ngezantsi kukho iindawo ezinokuba luncedo", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", - "text": "Ukuxelela umntwana wakho ukuba ‘ayeke’ kunokwenza izinto zibe mbi ngakumbi. Kunoko, baphulaphule, ngokuzolileyo babonise ukuba uyaqonda, uze wakhe intembelo yabo. Ukuba umntwana wakho ofikisayo ukulungele ukuchaza indlela ukuzenzakalisa okumenza azive bhetele, unokuqalisa ukuqonda izizathu. Zama ukufumana uncedo lwengcali.", + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Maxa wambi, singazifumana sisengxakini.\n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", "type": "template", "note": "" }, { - "SourceText": "What does that mean?", - "text": "Ithetha ntoni le nto?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncoma abantwana bakho abafikisayo ngendlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "Unganceda njani?", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Yiphawule indlela abayisebenzisa kakuhle ngayo i-intanethi! \n* Cingani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Sonke sikhe sibe neengcinga ezimbi ngamanye amaxesha.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "Ndingohlulekileyo", + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Ngalo lonke ixesha uceba ukugcina isicwangciso sokhuseleko, cofa i @global.parent_point uze ubhiyozele impumelelo yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "What to do?", - "text": "Kwenziwe ntoni?", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "Makhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi: \n* Imephu yendawo esihlala kuyo \n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki - ukuba umntwana wakho ukhona ngoku, ningayenza kunye ngoku!", "type": "template", "note": "" }, { - "SourceText": "Examples", - "text": "Imizekelo", + "SourceText": "My family can join in now!", + "text": "Intsapho yam ingajoyina ngoku!", "type": "template", "note": "" }, { - "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", - "text": "Ukuzixelela wena okanye umntwana wakho ukuba uyeke okanye uthethe into eyahlukileyo amaxesha amaninzi akuncedi.", + "SourceText": "Let me try it out by myself", + "text": "Makhe ndiyizame ngoku ngokwam", "type": "template", "note": "" }, { - "SourceText": "\"I do everything perfectly\"", - "text": "\"Ndenza yonke into ngokugqibeleleyo\"", + "SourceText": "Safety Plan", + "text": "Isicwangciso Sokhuseleko", "type": "template", "note": "" }, { - "SourceText": "Instead, you can ask:", - "text": "Endaweni yoko, unokubuza:", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Ukugcina abantwana bethu abafikisayo bekhuselekile, kufuneka siqonde imeko eyingozi abanokungena kuyo!\n\nMakhe senze kunye iimephu zeendawo ezikhuselekileyo neziyingozi:\n* Imephu yendawo esihlala kuyo\n* Imephu yee-app/iiwebhsayithi esizisebenzisayo kwi-intanethi.\n\nMasenze ezi mephu siliqela ke ngoku. \n\nNiza kwenza loo nto nomntwana wakho ofikisayo njengoqheliselo lwasekhaya kule veki.", "type": "template", "note": "" }, { - "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", - "text": "- Ngaba ingcinga iyinyani? Zeziphi ezinye iingcaciso?\n- Kwenzeka ntoni ukuba ndiqhubeka ndikholelwa kule ngcamango?\n - Ndingamxelela ntoni umhlobo ukuba unale ngcinga?", + "SourceText": "Step 1: What are important places in your community?", + "text": "Inyathelo 1: Ziziphi iindawo ezibalulekileyo kwindawo enihlala kuyo?", "type": "template", "note": "" }, { - "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", - "text": "\"Oku kunzima, kodwa uzama ngako konke okusemandleni akho, kwaye siza kusebenza kunye ukufumana isisombululo\"", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Fumana intwana yephepha (okanye iphephandaba elidala okanye ibhokisi yekhadbhodi) nepeni. \n* Zoba imephu yendawo ahlala kuyo umntwana wakho ofikisayo, kunye nemifanekiso yazo zonke iindawo ezibalulekileyo njengezitrato, umzi wakho, isikolo, iivenkile, iindawo ezityelelwa ngumntwana wakho ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"Lityala lakho\"", + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Inyathelo 2: Ziziphi iindawo ezikhuselekileyo nezingakhuselekanga?", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"Masize nesisombululo kunye\"", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Ncokolani kunye:\n\n* Ziziphi iindawo kwimephu yakho ezikhuselekileyo kubantwana abafikisayo \n * YENZA ISANGQA kwezi \n* Ziziphi iindawo kwimephu yakho ezingakhuselekanga kubantwana abafikisayo \n * ZINQAMLEZE ezi \n* Yintoni eyenza indawo ikhuseleke okanye ingakhuseleki? \n* Yintoni wena kunye nomntwana wakho ofikisayo eninokuyenza ukuze nigcine umntwana wakho ofikisayo ekhuselekile?", "type": "template", "note": "" }, { - "SourceText": "\"I lost my job\"", - "text": "\"Ndiphelelwe ngumsebenzi\"", + "SourceText": "Step 3: Where can you get support?", + "text": "Inyathelo 3: Ningayifumana phi inkxaso?", "type": "template", "note": "" }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Ndifunde okuninzi emsebenzini wam - oko kuya kundinceda ndifumane omnye\"", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Maxa wambi, singazifumana sisengxakini. Ncokolani kunye:\n \n* Wena nomntwana wakho ofikisayo ningayifumana phi inkxaso xa nijamelene nengxaki? \n * PHAWULA ezo ndawo zinento encinci njengelitye okanye intwana yephepha.", "type": "template", "note": "" }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Akhuko mntu undithandayo\"", + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Inyathelo 4: Ziziphi iindawo eziyingozi kwi-intanethi yaye ungazenza njani zikhuseleke?", "type": "template", "note": "" }, { - "SourceText": "\"Last week I did have a great time with...\"", - "text": "\"Kwiveki ephelileyo ndibe nexesha elimnandi no ... \"", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Zoba imifanekiso yee-app neewebhsayithi ezisetyenziswa ngabantwana bakho abafikisayo \n* Ncomanani ngendlela eniyisebenzisa kakuhle ngayo i-intanethi!. \n* Thethani ngokuba ziziphi ekusenokwenzeka ukuba azikhuselekanga Ngoba? \n* Yintoni wena nomntwana wakho ofikisayo eninokuyenza ukuze nenze ukusebenzisa i-intanethi kukhuseleke kumntwana wakho ofikisayo nabahlobo bakhe?", "type": "template", "note": "" }, { - "SourceText": "\"Bad things always happen to me\"", - "text": "\"Izinto ezimbi zihlala zisenzeka kum\"", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", "type": "template", "note": "" }, { - "SourceText": "\"This good thing happened the other day...\"", - "text": "\"Le nto intle yenzeka ngenye imini...\"", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Eli ibilelona xesha linzima kakhulu kubazali. Umele uzingce ngayo yonke into oyenzileyo. \n\nCinga ngawo onke amaxesha oye wamenza wancuma ngawo umntwana wakho ofikisayo kunye nendlela oye wamnyamekela ngayo. Abazali bayamangalisa kwaye nawe uyamangalisa!", "type": "template", "note": "" }, { - "SourceText": "Change", - "text": "Utshintsho", + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "Ukuze umgcine ekhuselekile umntwana wakho ofikisayo, kuyanceda ukuncokola malunga nendawo enihlala kuyo kunye namava akhe okusebenzisa i-intanethi. \n\nGqiba i-@local.workshop_data.in_text_title uze ubone indlela onokuyenza ngayo le nto!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "MAKE TIME", - "text": "YENZA IXESHA", + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "Sele uzuze izakhono ezininzi zokuba ngumzali kwezi veki zidlulileyo!\n\nGqiba uqeqesho olulandelayo ukuze uzuze esinye isakhono esiluncedo.", "type": "template", "note": "" }, { - "SourceText": "Set aside time to have a conversation without distractions.", - "text": "Bekela bucala ixesha lokuncokola ngaphandle kweziphazamiso.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Kubonakala ngathi awukayigqibi i-@local.workshop_data.in_text_title. Ukwenza isicwangciso kunye nomntwana wakho ofikisayo kungathintela iingxaki ezininzi - yizame ngaphambi kokuba uqhubeke!\n\nWenze kakuhle ngokusebenzisa i@global.parent_app ukuxhasa usapho lwakho.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "LISTEN", - "text": "PHULAPHULA", + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Siyavuyisana nawe, ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha sele lukulindile ukukunceda wena kunye nosapho lwakho ukuba nijongane nayo nayiphi na imeko - ngokubambisana ninokwenza okuninzi!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Ask your teen questions and let them share their views without interrupting.", - "text": "Buza umntwana wakho imibuzo kwaye ubavumele babelane ngeembono zabo ngaphandle kokuphazamisa.", + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "Makhe sicinge ngoko kwenzekileyo @global.w_safe_teen_girl_1:", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "WORK TOGETHER", - "text": "SEBENZANI KUNYE", + "SourceText": "What was risky about that situation?", + "text": "Yintoni ebiyingozi ngala meko?", "type": "template", "note": "" }, { - "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", - "text": "Thethani ngengxaki ethile, nize nesisombululo kunye, yaye nobabini nenze oko nivumelana ngako.", + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho", "type": "template", "note": "" }, { - "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", - "text": "Bulela umntwana wakho ofikisayo ngokwabelana kwaye uqaqambise indlela eninceda ngayo nobabini.", + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "umhlobo ka @global.w_safe_teen_girl_1ebemkhuthaza", "type": "template", "note": "" }, { - "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", - "text": "1. Thatha umoya onzulu.\n2. Jonga ukuba iindaba ziyavakala.\n3. Buza ukuba bazifumana phi iindaba.\n4. Jonga kwakhona nabanye abantu/imithombo oyithembileyo.\n5. Cinga ukuba ezi ndaba zinganceda okanye zoyikise abantu kuphela xa usabelana ngazo.", + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Ukuhamba nendoda endala kubeka u @global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto", "type": "template", "note": "" }, { - "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", - "text": "Sonke ngamanye amaxesha sifuna ukuxelela abantwana bethu \"Kufuneka wenze oku, okanye kungenjalo… inkathazo!\", kodwa oko akwenzi ukuba balandele imithetho ngcono.\n\nKunoko, unokunceda umntwana wakho enze ukhetho olufanelekileyo ngokubonisa ukuba uyamthemba nokuthetha nabo:", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "XOXA NGEZIPHUMO", + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", "type": "template", "note": "" }, { - "SourceText": "Ask \"If you do this, what could happen?\"", - "text": "Buza \"Ukuba wenza oku, kuya kwenzeka ntoni?\"", + "SourceText": "All those things are true!", + "text": "Zonke ezo zinto ziyinyani!", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "NCOMA", + "SourceText": "Let's think about our teens' online safety.", + "text": "Masicinge ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", "type": "template", "note": "" }, { - "SourceText": "If something goes well, praise your teen!", - "text": "Ukuba into ihamba kakuhle, ncoma umntwana wakho!", + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Yiyiphi eyona ngozi inkulu kwi-intanethi kubantwana bethu abafikisayo kule mihla?", "type": "template", "note": "" }, { - "SourceText": "REFLECT TOGETHER", - "text": "CINGA KUNYE", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo.", "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "Ukuba kukho into engahambi kakuhle, buza \"Ungayenza njani ngokwahlukileyo?\"", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga", "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "QALA KANCINCI", + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Nika umntwana wakho uxanduva oluncinci kuqala. Xa oko kuhamba kakuhle, unokongeza ngakumbi ukubonisa ukuba uyamthemba umntwana wakho.", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Injongo yakho ibikukuchitha ixesha kunye nomntwana wakho ofikisayo. Siye saphawula ukuba ucofe ku-@data.habit.spend_time.in_text_title - wenze kakuhle ngokukhumbula oku!", + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Injongo yakho ibikukuchitha ixesha ukunye nomntwana wakho ofikisayo.", + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Unxibelelwano yeyona nto ibalulekileyo!\n\nMakhe sibone oko kwenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "Usebenzile ngokukhangela izisombululo kwimiceli-mngeni yakho. Khawuyokuyizama. Ulwalamano lwakho kunye nomntwana wakho ofikisayo luza kuya lusomelela ngokomelela!", + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: \"Ikho into eye yenzeka ngoxa ndiphume nabahlobo bam u @global.w_safe_teen_girl_2 no !@global.w_safe_teen_girl_3\"\n\n@global.w_safe_female_caregiver: \"Ndixelele, @global.w_safe_teen_girl_1\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "DAY – Do it every day", - "text": "USUKU – Yenze yonke imihla", + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Indoda esemotweni: “Hey nzwakazi. Kudala ndikujongile. Umhle nyhani, ngubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe ngu @global.w_safe_teen_girl_1”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "DLALA – Vumela umntwana wakho ofikisayo akhethe into emayenziwe", + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Indoda esemotweni: “@global.w_safe_teen_girl_1, ungathanda ukuhamba nam sifumane into yokusela namashwamshwam? Yiza kaloku, khwela, sawukhawuleza sibuye ndiyakuthembisa…” \n\n@global.w_safe_teen_girl_1: Andiqiniseki ukuba kulungile ukwenza loo nto…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "HLALA – Mnike ingqalelo yakho yonke umntwana wakho ofikisayo", + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “Unethamsanqa, mhlobam. Akwaba indoda ibingacela UKUNDIKHUPHA ize indithengele izipho. Ndiyakuxelela, ukuba akuyenzi lento ndiza kuxelela wonke umntu ukuba usisibhanxa!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_2 should not be translated." }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Kutheni lengcebiso liye laba luncedo kuwe?", + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 sukuya! Lumka! Masigoduke. Kuyingozi ukuhamba nabantu ongabaziyo. Ngapha koko, mdala gqith’ kunawe lowa yaye ayilunganga le nto ayenzayo.\"\n\n@global.w_safe_teen_girl_1: “Hay ndixakiwe…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "\"@local.choice_1\" ibiluncedo ngenxa yokuba...", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: \"Pfff, ndiyazidla ngento yokuba ungakhange ukhwele kula moto. Ibiyimeko eyingozi le, enkosi ngokundixelela!”", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "\"@local.choice_2\" ibiluncedo ngenxa yokuba...", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "Makhe sijonge omnye umzekelo wemeko eyingozi sikunye.", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "\"@local.choice_3\" ibiluncedo ngenxa yokuba...", + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: \"Umhlobo wam ebesoloko ethetha nomfana oyintanga yethu kwi-intanethi... Uza kumthumelela iifoto zakhe. Ngaba loo nto ibhetele kuba elingana nathi?”", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Ukuba nexesha elithile lokwenza lento lindinceda ndikhumbule.", + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: “Ungumhlobo olungileyo kwainto yokuba ukhathazeke ngaye. Ukuthumela iifoto ezivuselelayo inkanuko kuyingozi kakhulu nako.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Xa sinezinto ezenziwa rhoqo, mna nomntwana wam ofikisayo siyakwazi ukugcina ishedyuli sethu singenanto.", + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: \"Maxa wambi abantu abayiyo le nto bathi bayiyo kwi-intanethi – unokuthi ulingana nawe kodwa uyindoda endala eneminyaka engama-50. Okanye xa besohlukana, angathumela ezo foto kumntu wonke yaye umhlobo wakho angaziva ebuhlungu.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Ukuchitha ixesha yonke imihla kunye nomntwana wam ofikisayo kunceda ekubeni sakhe ukuthembana.", + "SourceText": "Doing any of these makes you a great parent.", + "text": "Ukwenza nayiphi na kwezi zinto kukwenza ube ngumzali omangalisayo.", "type": "template", "note": "" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Ewe, nokuba yimizuzu eyi-10 nikunye, kwenza umehluko omkhulu – kwenza kube lula ukuyifaka kwi shedyuli, nasondeleyo kuno msebenzi wakho nemisebenzi yasekhaya!", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "Ukuvumela umntwana wam ofikisayo akhethe into eza kwenziwa, oko kwakha ukuzithemba kwakhe.", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Uqheliselo lokumepha\n* Izixhobo: Indlela yokugcina umntwana wakho ofikisayo ekhuselekile\nIIMEPHU - IMIGAQO - UXOLELO\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "Ukuba umntwana wam ofikisayo uyakhetha, lonto iza menza afune nangakumbi ukuchitha ixesha kunye nam.", + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "Makhe sithethe ngoko kwenzekileyo @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "Ukuvumela umntwana wam ofikisayo akhethe kubonisa ukuba ndizikhathalele izinto anomdla kuzo.", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Ncokolani kunye: \n\nYintoni ebiyingozi ngala meko?", "type": "template", "note": "" }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Xa ndisebenzisa icebiso lomntwana wam ofikisayo, ndibonisa ukuba ndiyammamela.", + "SourceText": "The situation was risky because...", + "text": "Le meko ibiyingozi ngenxa yokuba...", "type": "template", "note": "" }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "Ukuthetha into entle yothetha eyenziwe ngumntwana wam ofikisayo kumnceda azive exatyiswa.", + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Le ndoda yemoto ibifaka uxinezeleko ku @global.w_safe_teen_girl_1 ngezipho \n* umhlobo ka @global.w_safe_teen_girl_1 ebemkhuthaza \n* Ukuhamba nendoda endala kubeka u@global.w_safe_teen_girl_1 esichengeni apho anokwenzakala okanye anyanzelwe ukuba enze izinto \n* Amantombazana amaninzi kwindawo esihlala kuyo ayakhulelwa okanye afumane i-HIV kumadoda amadala \n* Bebengekho abanye abantu abadala bokucebisa @global.w_safe_teen_girl_1", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Kuyinyaniso kakhulu oku! Kwaye ukuba abantwana bethu abafikisayo bayakhetha, bayakhuthazeka ukuba babe noxanduva nakwezinye izinto ezisebomini babo.", + "SourceText": "Let's talk about our teens' online safety.", + "text": "Masithethe ngokhuseleko lwabantwana bethu abafikisayo kwi-intanethi.", "type": "template", "note": "" }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Xa ndiphepha iziphazamiso, ndibonisa umntwana wam ofikisayo ukuba ubaluleke kakhulu.", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Ziziphi ezinye iingozi ze-intanethi kubantwana abafikisayo kwezi ntsuku?", "type": "template", "note": "" }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Nokuba andikwazi kwenza into eyenziwa ngumntwana wam ofikisayo enjengemidlalo, ndinganako ukumxhasa xa eyenza.", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Abantu abadala basebenzisa amajelo okuncokola, ii-app zokudlala imidlalo nokuthumela imiyalezo neewebhsayithi zokudibana nabantu abafikisayo ukuze babeyisele ukuba benze izenzo zesondo. \n* Abantu babeka izinto kwi-intanethi ukusenza sonzakalise abanye abantu – njengokwenza ubundlobongela bubonakale buyinto entle, okanye ukucaphukela abantu belinye ilizwe okanye uhlanga\n* Abantu babeka izinto kwi-intanethi ukweyisela abantwana abafikisayo ukuba bazonzakalise okanye bazibulale\n* Abantwana abafikisayo bathumela iividiyo okanye iifoto ezivuselela inkanuko okanye inkcazelo engabo, yaye abantu bayibonisa abanye okanye bayisebenzisele ukubacaphukisa.\n* Abantu banokubaphatha kakubi abantwana abafikisayo kwi-intanethi– baziva ngathi bangantlonta abantu ngokukhuselekileyo", "type": "template", "note": "" }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Xa ndinikela ingqalelo kumntwana wam ofikisayo, ininzi into endiyifundayo ngezinto anomdla kuzo, izinto azicingayo kunye nezinto akwaziyo ukuzenza.", + "SourceText": "MAPS", + "text": "IIMEPHU", "type": "template", "note": "" }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "Ewe! Ukuba sinika abantwana bethu abafikisayo ingqalelo epheleleyo, kusenokwenzeka benze into efanayo xa sibacela basenzele into ethile kwixesha elizayo!", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Yenzani IIMEPHU kunye nomntwana wakho ofikisayo zemimandla ekhuselekileyo nengakhuselekanga kwindawo ohlala kuyo nakwi-intanethi. Thetha ngendlela anokugcina ngayo inkcazelo yakhe, iifoto neevidiyo ziyimfihlo kwi-intanethi. Mxelele ukuba into ayifaka kube kanye kwi-intanethi, ihlala apho ngonaphakade. Kusenokwenzeka ukuba banomzekelo abawaziyo womhlobo wabo.", "type": "template", "note": "" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Kubakho imiceli-mngeni kubazali abaninzi xa bechitha ixesha kunye nabantwana babo abafikisayo. \n\nNantsi imiceli-mngeni esi-8 abazali abaye basixelela ngayo nabathi bahlangabezane nayo xa beceba okanye bechitha ixesha kunye nabantwana babo abafikisayo. Ukuba nawe ukhe wanayo okanye unoloyiko lokuba uza kuba nayo, cofa kuyo uze ufumane isicombululo. Ungacofa uze uqwalasele eminye imiceli-mngeni emva koko.", + "SourceText": "Safety Plan Activity", + "text": "Umsebenzi Wesicwangciso Sokhuseleko", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "Ngaba uye wanengxaki xa ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", + "SourceText": "RULES", + "text": "IMIGAQO", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "Yeyiphi ingxaki oye wanayo ngoku ubuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo?", + "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Yenza IMIGAQO kunye nomntwana wakho ofikisayo ngokusebenzisa ngokukhuselekileyo ii-app neewebhsayithi azithandayo. \n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", "type": "template", "note": "" }, { - "SourceText": "I don’t have enough time.", - "text": "Khange ndibe nexesha elaneleyo.", + "SourceText": "Online Safety Story", + "text": "Ibali Lokhuseleko kwi-Intanethi", "type": "template", "note": "" }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "Umntwana wam ofikisayo akafuni kuchitha ixesha kunye nam.", + "SourceText": "AMNESTY", + "text": "UXOLELO", "type": "template", "note": "" }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "Umntwana wam ofikisayo ufuna ukubukela i-TV okanye adlale ngefowuni yakhe.", + "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "text": "Yenza isivumelwano SOXOLELO. Ukuba kwenzeka into emcaphukisayo, engamonwabisiyo okanye emoyikisayo, angathetha nawe yaye awuyi kuba nomsindo okanye umohlwaye, kwanokuba bebesenza into engafanelekanga.\n\nUyalikhumbula ibali eliphathelele noKhuseleko kwi-Intanethi? Phinda ulijonge apha.", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "Umntwana wam ofikisayo ufuna ukwenza izinto ezingakhuselekanga okanye ezibiza imali eninzi.", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Ukuba ngumzali kwidijithali kuyafana nokuba ngumzali kwiimeko eziqhelekileyo. Uthathe INYATHELO ELIKHULU lokugcina umntwana wakho ekhuselekile kwindawo ohlala kuyo KUNYE nakwi-intanethi. Wenza kakuhle!", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "Umntwana wam ofikisayo ufuna ukwenza izinto umzimba wam ongandivumeli ukuba ndizenze.", + "SourceText": "Resources to help in the community", + "text": "Izinto zokunceda kwindawo ohlala kuyo", "type": "template", "note": "" }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "Umntwana wam ofikisayo ukhetha izinto ezinokhuphiswano. Ndiye ndaphumelela yaza yamcaphukisa lonto.", + "SourceText": "Online Safety Resources", + "text": "Izinto Zokhuseleko kwi-Intanethi", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Kuyekwanzima ukuphelisa ixesha lethu sikunye.", + "SourceText": "Being a great parent also means taking time to care for yourself every day.", + "text": "Ukuba ngumzali osemagqabini kukwathetha ukuthatha ixesha uzinyamekele suku ngalunye.", "type": "template", "note": "" }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Bonke abantwana bam bafuna ukuchitha ixesha kunye nam ngexesha elinye.", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Kuhle. Yaye kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", "type": "template", "note": "" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "Ewe, kunganzima ukufumana ixesha emini, kuba ngumsebenzi, imisebenzi yekhaya, kunye nezinye izinto.", + "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Ukuba ngumzali kunzima. Kodwa kuyamangalisa ukubona usebenzisa le app – loo nto ibonisa ukuzimisela kwakho njengomzali. Qiniseka ukuba uyazincoma uze uzizukise ngoko ukwenzayo.", "type": "template", "note": "" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Uxolo ngokuba uye wasokoliswa yilonto. Singaziva buhlungu xa abantwana bethu bengafuni ukuchitha ixesha kunye nathi.", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "Ulugqibile uqeqesho lwale veki.\n\nSiza kuphinda senze eminye imisebenzi yokuzinyamekela xa udibana neqela lakho okokuqala - nonke nifanelwe kukuzinyamekela okuthe kratya!", "type": "template", "note": "" }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Ndicinga ngexesha apho umntwana wam ofikisayo ekwazi ukuthetha nam ngokukhululekileyo, njengakusasa okanye ngaphambi kokuba ayo kulala.", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Nanini na unako, phola, qaphela uze uzivuze. \n\nZinyamekele usuku ngalunye. Ubalulekile!", "type": "template", "note": "" }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Ndihlala ecaleni kwakhe xa esenza into ayithandayo ndize ndimbonise ba ndinomdla kwinto ayithandayo.", + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Ixesha ngalinye uphola, cinga into ethile oye wayenza kakuhle okanye uzivuze, cofa i- @global.parent_points bhiyozela impumelelo yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Do something fun with the whole family.", - "text": "Ndenze into eza konwatyelwa lilo lonke usapho.", + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Kutheni i-@data.workshop.w_self_care.short_title?", "type": "template", - "note": "" + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Kulunge kakhulu! Ukukhangela ixesha afuna ukuncokola ngalo umntwana wakho ofikisayo kuza kuzomnceda asabele kakuhle kwinzame zakho zokuba nincokole.", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Asisoloko sizinyamekela ngokwaneleyo. Kodwa oku kubaluleke kakhulu, ingakumbi njengomzali! \n\nUkunciphisa uxinezeleko lwethu nokuzinyamekela kunceda thina KUNYE nabantwana bethu abafikisayo.", "type": "template", "note": "" }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Kuhle! Ukubukela kunye inkqubo ye-TV okanye umdlalo othandwa ngumntwana wakho ofikisayo kuza kumbonisa ukuba umkhathalele. Yiba nomonde, baza kuthetha ekuhambeni kwexesha!", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukuzinyamekela. \n\nKukho amaxesha apho siba nemiceli-mngeni, apho sijamelana neengxaki yaye singazi ukuba masenze ntoni. Kubalulekile ukuzinyamekela sifunde ubugcisa bendlela esinokuzigcina ngayo sizolile xa kunokuvela iingxaki, imiceli-mngeni okanye eminye imiba. \n\nXa sizolile sikwimeko entle yokucinga ngendlela eyiyo size size nezisombululo ezifanelekileyo kuwo nayiphi na imiceli-mngeni esinokujamelana nayo.", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Nantso ke! Ngamanye amaxesha kungalula ukuqalisa ukuchitha ixesha kunye nosapho lonke. Ngaloo ndlela, umntwana wakho ofikisayo angakhululeka ngakumbi xa kufuneka nichithe ixesha kunye ekuhambeni kwexesha.", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Ukhumbule – le veki INGAWE! Siyathemba ukuba uziphethe njengeqanda. Uyakufanelekela oku!", "type": "template", "note": "" }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "u-Xolo ngokufumana olo celo-mngeni. Amaxesha amaninzi, abantwana badla ngokuchitha ixesha bebukele i-TV okanye bedlala ngezinto ze-elektronikhi. Usebenzile ngokuba nomonde kumntwana wakho ofikisayo!", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Qala uqeqsho olutsha kraca @global.parent_app ngomso. Uza kubona iziphumo ezintle!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Ndicebise ngezinto zokuzonwabisa ngazo endinokuzenza kunye nomntwana wam ofikisayo.", + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "text": "Ngaba uye wawaxelela amaqabane akho e-@global.parent_app malunga ne-app? Ukususela ngomso, ningaqalisa ukwenza uqeqesho lwenu lwe@global.parent_app kunye!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Ndifumane into efundisayo endinokuyenza kwisixhobo se-elektroniki kunye nomntwana wam ofikisayo.", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Ukunikela ingqalelo kweyona nto sikwazi kakuhle ukuyenza kusinceda sinikele ingqalelo kwizinto ezakhayo. \n\nMakhe sithathe ithutyana sizincome. Siza kukubonisa indlela yokukwenza.", "type": "template", "note": "" }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Ndicele umntwana wam andifundise ukuba isebenza njani ifowuni/isixhobo sakhe se-elektroniki.", + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.\n\nXelelanani ngokuvakalayo: \"Ndenze kakuhle ngoku...\"\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "Kulunge gqithi! Ukuba ufuna isikhuthazo, nanga amanye amacebo avela kwezinye intsapho ngento eninokuyenza kunye. Khumbula, vumela umntwana wakho ofikisayo akhethe.", + "SourceText": "Recognise", + "text": "Qaphela", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Kuhle gqitha!  Zininzi ii-app ezikwifowuni ezimnandi nezifundisayo eninokuzikhangela kunye. Buza imibuzo, bonisa umdla, uze ukhumbule ukuthetha into encomekayo.", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Thatha ithutyana uzincome. \n\nNgoku siza kukubonisa ukuba ungenza njani.", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Kuhle! Abantwana abafikisayo bayathanda ukubona unomdla kwisixhobo se-elektroniki abasisebenzisayo naxa bekucacisela ngento abayaziyo. Eli linyathelo elihle lokuqalisa!", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Cinga ngento enye oye WAYENZA kakuhle kutshanje.", "type": "template", "note": "" }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Awukho wedwa apha. Abazali abaninzi nabo banalo olu celo-mngeni. Ukuchitha ixesha ninobabini kufanele nikhuseleke ngalo lonke ixesha, kwaye akubizi nto!", + "SourceText": "\"Well done to me for...\"", + "text": "\"Ndenze kakuhle ngoku...\"", "type": "template", "note": "" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Ndicacisele umntwana wam ofikisayo kutheni into abayicebisayo ingakhuselekanga okanye ingenakwenzeka ndiye kengoku ndicele acebise ngezinye izinto.", + "SourceText": "Showing love to my children", + "text": "Bonisa uthando ebantwaneni bam", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Cebisa ngezinye izinto ezimnandi esinokuzenza kunye.", + "SourceText": "Getting up even though I felt tired", + "text": "Ukuvuka nangona ndiziva ndidiniwe", "type": "template", "note": "" }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Kwakuhle kakhulu! Kubaluleke kakhulu ukuba umntwana wakho ofikisayo asiqonde isizathu sokuba ningenokwazi ukwenza into ebecebisa yenzeni. Mcele aze namanye amacebiso!", + "SourceText": "Smiling at someone", + "text": "Ukuncumela umntu", "type": "template", "note": "" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Oku kulungile! Ukuba ufuna amacebiso, ungafumana amacebiso ezinto ezinokwenziwa kwi-@data.parent_centre.relax_and_activities.location_text. Khumbula, vumela umntwana wakho ofikisayo akhethe into emayenziwe!", + "SourceText": "Making food to stay strong", + "text": "Ukwenza ukutya okundigcina ndomelele", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Uxolo ukuva lento. Abantwana bethu basenokuphoxeka xa singakwazi ukwenza izinto abafuna sizenze njengokudlala imidlalo okanye imisebenzi yomzimba. Kodwa khumbula, eyona nto ebalulekileyo kukuchitha ixesha kunye nabo. Oko kwahluke kumntu wonke!", + "SourceText": "Spending time with my children", + "text": "Ukuchitha ixesha nabantwana bam", "type": "template", "note": "" }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Ndibukele umntwana wam edlala ndiye ndimkhuthaze.", + "SourceText": "Helping my children with schoolwork", + "text": "Ukuncedisa abantwana bam kumsebenzi wesikolo", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Cebisa ngezinye izinto ezimnandi eninokuzenza kunye.", + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Yitsho ngokuvakalayo ukuba uyakwazi.\n\nNantsi into enye ofanelwe kukunconywa ngayo: Usebenzile ngokusebenzisa i-@global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Kuhle gqitha! Nokuba ubukele endaweni yokwenza umdlalo kunye, ungabonisa umdla wakho ngokuchaza nokuncoma into eyenziwa ngumntwana wakho ofikisayo!", + "SourceText": "Things to praise yourself for:", + "text": "Izinto onokuzincomela zona:", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Oko kulunge gqitha! Ukuba ufuna amacebiso, ungafumana amacebiso kwizinto ezinokwenziwa kwi-@data.parent_centre.relax_and_activities.location_text. Khumbula, vumela umntwana wakho ofikisayo akhethe into emayenziwe!", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Ukubonisa uthando ebantwaneni bam \n* Ukuvuka nangona uziva udiniwe. \n* Ukuncumela umntu \n* Ukwenza ukutya okundigcina ndomelele \n* Ukuchitha ixesha nabantwana bakho \n* Ukuncedisa abantwana bakho kumsebenzi wesikolo", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Oku kuyenzeka ngamaye amaxesha! Imidlalo enokhuphiswano angabayingxaki kubantwana abafikisayo (nakubantu abadala!), kuba abathandi ukungaphumeleli.", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "Makhe siyizame size senze umsebenzi omfutshane wokuphumla sonke!", "type": "template", "note": "" }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Cebisa izinto eninokuzenza ninobabini endaweni yokuba nibe nxamnye omnye komnye.", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "Njengabazali, sisoloko singenalo ixesha lokuzinyamekela - kodwa kubaluleke kakhulu ukuyenza le nto! Ukunciphisa uxinezeleko lwethu kunceda thina KUNYE nabantwana bethu abafikisayo. \n\nMakhe sithathe inyathelo lokuqala size senze umsebenzi omfutshane wokuphumla sonke.", "type": "template", "note": "" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Dlala umdlalo ngokwamaqela, ukuze ndizokwazi ukukhuthaza umntwana wam ofikisayo ukuba iqela lethu aliphumelelanga.", + "SourceText": "Well done! Try to do this every day.", + "text": "Usebenzile! Zama ukwenza lento usuku ngalunye.", "type": "template", "note": "" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Khumbula, vumela umntwana wakho ofikisayo akhethe! Amacebiso ezinto onokuzenza kunye nomntwana wakho ofikisayo ungawafumana ku-@data.parent_centre.relax_and_activities.location_text ukuba uyawadinga.", + "SourceText": "Have a hot drink", + "text": "Fumana isiselo esishushu", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "Ukuba wena nomntwana wakho ofikisayo nikwiqela elinye, ungamnceda alawule iimvakalelo zakhe ukuba iqela lenu aliphumelelanga.", + "SourceText": "Call a friend or relative", + "text": "Fowunela umhlobo okanye isizalwana", "type": "template", "note": "" }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "Ewe, ukuphelisa ixesha enilichitha kunye kunganzima ngamanye amaxesha.", + "SourceText": "Have a relaxing bath", + "text": "Zifake emanzini uhlambe uphole", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Ndithi kumntwana wam ofikisayo, “Kusele umzuzu omnye ngaphambi kokuba kuphele ixesha lethu sikunye namhlanje,” ukuze umntwana wam ofikisayo akwazi ukuzilungiselela.", + "SourceText": "Read", + "text": "Funda", "type": "template", "note": "" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Ukwazisa umntwana wam ofikisayo ukuba ndisele nexesha elingakanani kwixesha lethu xasikunye, ndize ndimcele agade ixesha elishiyekileyo kwiwotshi.", + "SourceText": "Watch TV", + "text": "Bukela UMABONAKUDE", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Ndenza icebo lokuchitha ixesha ndawonye ngaphambi kwenye into umntwana wam ofikisayo athanda ukuyenza.", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali. Baliselanani:\n\nZiziphi izinto ezincinci ezikwenza wonwabe?", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Kuhle gqitha! Ngokumazisa umntwana wakho ofikisayo ukuba liza kuphela ixesha lenu nikunye, akazukothuka xa liphela. Kwakhona, unokumkhumbuza umntwana wakho ofikisayo ukuba niza kuphinda nichithe ixesha kunye ngengomso.", + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye.\n\nSisebenzise esi sakhono xa usekhaya kwaye sifumane nanini na kwi-@global.parent_centre yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Kulunge kakhulu! Ngalo ndlela, umntwana wakho ofikisayo unoxanduva lokujonga ixesha kwaye uza kulibona xa sele liza kuphela. Mkhumbuze ukuba niza kuphinda nichithe ixesha kunye ngengomso.", + "SourceText": "Reward", + "text": "Umvuzo", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Kuhle gqitha! Ukuba nichitha ixesha kunye ngaphambi kwesidlo sangokuhlwa, ungatsho kamnandi uthi, “liphelile ixesha lokuba ndawonye. Masihambe silungiselele isidlo sangokuhlwa kunye nosapho lonke!”", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Sonke kufuneka sizivise kamnandi!", "type": "template", "note": "" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Abazali abaninzi bajamelana nalento. Kunganzima ukuchitha ixesha kunye nabantwana bethu abafikisayo xa sinabantwana abaninzi.", + "SourceText": "What small thing makes you happy?", + "text": "Yintoni encinci ekwenza wonwabe?", "type": "template", "note": "" }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Cela omnye umntu omdala okanye umntwana omdala ajonge abantwana abancinane ngelixesha ndichitha ixesha nomntwana wam ofikisayo.", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Kuhle! Ukuzinyamekela sisakhono esibalulekileyo sokuba ngumzali!", "type": "template", "note": "" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Cinga ngexesha abangekhoyo ngayo abanye abantwana kuze ndizochitha ixesha kunye nomntwana wam ofikisayo.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_1 okanye nantoni na eyenye oyinandiphayo.", "type": "template", - "note": "" + "note": "The string @local.name_1 should not be translated." }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Yenza icebo lokuba uchithe ixesha kunye kwindawo engelilo ikhaya.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_2 okanye nantoni na eyenye oyinandiphayo.", "type": "template", - "note": "" + "note": "The string @local.name_2 should not be translated." }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Nantso ke! Ngale ndlela ungakwazi ukunika umntwana wakho ofikisayo ingqalelo yakho yonke kuze bazive bexatyisiwe kwaye bethandwa.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_3 okanye nantoni na eyenye oyinandiphayo.", "type": "template", - "note": "" + "note": "The string @local.name_3 should not be translated." }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Kulunge kakhulu! Unokuzama ukuchitha ixesha kunye nomntwana wakho ofikisayo xa abanye abantwana sele belele, okanye bedlala phandle.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_4 okanye nantoni na eyenye oyinandiphayo.", "type": "template", - "note": "" + "note": "The string @local.name_4 should not be translated." }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Kuhle gqithi! Mhlawumbi ningahamba kunye ukuya ezivenkileni okanye niyokubukela umdlalo ukuze nikwazi ukuncokola bengekho abanye abantwana abaza kufuna ingqalelo yakho.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", + "text": "Zama ukwenza into oza kuzivuza ngayo suku ngalunye. Oku kunokuba kuku @local.name_5 okanye nantoni na eyenye oyinandiphayo.", "type": "template", - "note": "" + "note": "The string @local.name_5 should not be translated." }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.  Siye saphawula ukuba ucofe ku-@data.habit.instruct_positively.in_text_title - wenze kakuhle ngokukhumbula oku!", + "SourceText": "Things you can do to reward yourself:", + "text": "Izinto onokuzenza ukuze uzivuze:", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Into ebekumele uyizame ekhaya kukunika umntwana wakho ofikisayo imiyalelo ENOKWENZIWA, EKHUTHAZAYO kunye NENGQALILEYO.", + "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "text": "* Fumana into yokuphunga\n* Fowunela umhlobo okanye isizalwana sakho \n* Ngena emanzini uhlambe uphole \n* Funda \n* Bukela UMABONAKUDE", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Enkosi ngokwabelana! Usebenzile ngokuzama ukunika umntwana wakho ofikisayo imiyalelo ekhuthazayo kunye nokwakha ulwalamano oluhle kunye nomntwana wakho ofikisayo. \n\nUmntwana wakho ufanele anconywe ngokunjalo NAWE!", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Namhlanje uya kufumana imisebenzi emi-3 enokukunceda ukwazi ukuzinyamekela, yaye siya kukubuza\nimibuzo embalwa ukuqinisekisa ukuba i-app ikulungele kusini.", "type": "template", "note": "" }, { - "SourceText": "Which of the tips helped you?", - "text": "Ngawaphi amacebiso akuncedileyo?", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Umsebenzi wokuphola\n* Umsebenzi wokuqonda\n* Umsebenzi womvuzo\n* Izixhobo: * Indlela yokongeza ukuzinyamekela\n* Vumelelanisa le app neemfuno zakho\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "MAYENZEKE – Ngaba umntwana wakho ofikisayo angakwazi ukuyenza lento oza kuyicela?", + "SourceText": "Customise your @global.parent_app", + "text": "Vumelanisa i-@global.parent_appyakho", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "MAYIKHUTHAZE – Sebenzisa amazwi akhuthazayo uze ubancome!", + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Njengoko ngoku uye wakha ubuchule bokuzinyamekela, masiqinisekise ukuba i- @global.weekly_workshops yakho ikulungele.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "MAYICACE – Caca ukuba uthini uze ungqale!", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Kubonakala ngathi sele uyigqibile inkqubo yokuzivumelanisa. Ngoku ungawutsiba lo msebenzi.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Kuhle gqitha! Xa sicela umntwana wethu ofikisayo ukuba enze into anokukwazi ukuyenza, kulula kuye ukuba aphumelele.", + "SourceText": "RELAX", + "text": "PHOLA", "type": "template", "note": "" }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Xa sibancoma, abantwana bethu abafikisayo baziva bekhuthazwa baze baphinde basimamele!", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Yenza umsebenzi oza kukupholisa okhawulezileyo wemizuzu engama-30.", "type": "template", "note": "" }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Kwakuhle kakhulu! Xa sicinga kusengaphambili ngemiyalelo esiza kuyinika umntwana wethu ofikisayo, kuba lula ukuyilandela loo miyalelo!", + "SourceText": "Relax activity", + "text": "Umsebenzi wokuphola", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges?", - "text": "Ngaba uye wanayo imiceli-mngeni?", + "SourceText": "RECOGNISE", + "text": "QAPHELA", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have?", - "text": "Loluphi ucelo-mngeni oye wanalo?", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Nqumama kancinane uze ucinge ngento enye OYE wayenza kutshanje oye wayenza kakuhle! Yitsho ngokuvakalayo ukuba uyakwazi \"Ndenze kakuhle ngoku …\"", "type": "template", "note": "" }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "Umntwana wam ofikisayo khange afune ukulandela umyalelo.", + "SourceText": "Recognise activity", + "text": "Umsebenzi wokuqaphela", "type": "template", "note": "" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Khange ndilifumane ixesha lokuba kunye nomntwana wam ofikisayo.", + "SourceText": "REWARD", + "text": "UMVUZO", "type": "template", "note": "" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Ndiye ndamnika umyalelo ongakhuthaziyo endaweni yomyalelo okhuthazayo.", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Khumbula ukuba ufanelwe lixesha lokuzimamela nawe! Yintoni ekwenza wonwabe?", "type": "template", "note": "" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Endaweni yokumnika umyalelo okhuthazayo ngento amakayenze, ndiye ndamshawuta umntwana wam xa ebengaziphethanga kakuhle.", + "SourceText": "Reward activity", + "text": "Umsebenzi womvuzo", "type": "template", "note": "" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Imiceli-mngeni ephambili ye-@local.number_of_challenges abajongene nayo abanye abazali:", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "Wamkelekile! Kumnandi ukuba kunye nawe apha. Le veki INGAWE. \n\nKolu qeqesho lokukwamkela uya: \n* Kufumana izixhobo zokuzinyamekela \n* Vumelanisa le app neemfuno zakho", "type": "template", - "note": "The string @local.number_of_challenges should not be translated." + "note": "" }, { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Ndiyaqonda; kufuneka sibanike ixesha abantwana bethu ukuze bafunde ukulandela imiyalelo. Yiba nomonde, phinda uzame uze ungalibali ukubancoma qho belandela umyalelo!", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Kuhle, ndivuya kakhulu izinto zihamba kakuhle.", "type": "template", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Ngaba ufuna ukuzama enye yezi zinto zilandelayo?", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Uxolo ngokuba iimeko zinzima ngoku. Kuyinto eqhelekileyo ukuba usokole maxa wambi. Khumbula ukuba awukho wedwa!", "type": "template", "note": "" }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Ndimele ndicinge ngexesha qho ngosuku apho ndinokuchitha imizuzu emihlanu okanye engakumbi.", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Fundisa abantwana bakho amanyathelo amane okusombulula iingxaki:\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE \n\nWasebenziseni kunye la manyathelo xa kuvela ingxaki!\n\nXa kusenzeka into embi, sidla ngokuba nomsindo size sizibeke ityala. Kodwa abantwana bethu abafikisayo bafuna umntu oza kubanceda bafumane izicombululo. Baphulaphule, yamkele indlela abazibona nabaziva ngayo izinto yaye babulele ngokukuthemba.\n\nUkufundisa umntwana wakho ofikisayo ngendlela yokuhlangabezana neengxaki kuya kumnceda ubomi bakhe bonke. Sisipho sokwenene!", "type": "template", "note": "" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Ndicinge ngomsebenzi esinokuwenza kunye ngendlela emnandi.", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Ezinye iingxaki eziye zaconjululwa ngabazali nabantwana babo abafikisayo:", "type": "template", "note": "" }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Ndicele umntwana wam okanye omnye umntu andincede ngomsebenzi wesekhaya ukuze ndikwazi ukuba nexesha elingakumbi.", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* Umntwana wam akafuni kuya esikolweni\n*Ndinexhala lokuba umntwana wam angakhulelwa okanye amithise umntu\n* Ndixhalabile ngezinto ezenziwa ngumntwana wam ofikisayo kwi-intanethi\n* Umntwana wam ofikisayo uncokola nabahlobo abangalunganga\n* Umntwana wam ofikisayo uyonqena\n* Umntwana wam ofikisayo akawenzi umsebenzi wakhe wesikolo\n* Kusenokwenzeka ukuba umntwana wam ofikisayo usebenzisa iziyobisi", "type": "template", "note": "" }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Nantso ke! Nemizuzu emi-5 yenza umahluko omkhulu kwaye ukuba uyenza ngexesha elifanayo yonke imihla (njengaxa kutyiwa isidlo sakusasa okanye ngaphambi kokuba kulalwe), kuza kuba lula ukuyenza rhoqo!", + "SourceText": "resolve problems with their teens", + "text": "basombulule iingxaki besebenzisana nabantwana babo abafikisayo", "type": "template", "note": "" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Kulunge kakhulu! Ngaloo ndlela wenza umsebenzi wakho uze ube nexesha lokuzonwabisa kunye nomntwana wakho ofikisayo!", + "SourceText": "resolve the problem with your teen", + "text": "sombulula ingxaki usebenzisana nomntwana wakho ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Kuhle gqitha! Ngokuncedisana ngeembopheleleko, uza kuba nexesha elingakumbi lokwenza izinto ezonwabisayo kunye nomntwana wakho ofikisayo – ibaluleke gqitha loo nto!", + "SourceText": "I forgot the steps of problem solving.", + "text": "Ndiwalibele amanyathelo okusombulula ingxaki.", "type": "template", "note": "" }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "Ewe, kuthatha ixesha ukuqhelana nokunika imiyalelo ekhuthazayo – akulolize ukuzama kwakhona! Cinga ngendlela yokuziphatha ongathanda ukuyibona kumntwana wakho uze ucinge ngeendlela ezikhuthazayo zokumnika loo myalelo!", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "Kuthatha uqheliselo oluthile ukusebenzisa onke la manyathelo mane okusombulula ingxaki. Kwixesha elizayo xa kuvela ingxaki, jonga amanyathelo amane nomntwana wakho ofikisayo - kuya kwenza umahluko omkhulu!", "type": "template", "note": "" }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Kunzima ukucinga ngemiyalelo ngoxa sisenomsindo. Zama ukufumana ixesha ozole ngalo uze unike umntwana wakho ofikisayo umyalelo okhuthazayo. \n\nKwi-@global.weekly_workshop elandelayo, siza kuthetha ngakumbi malunga nendlela yokulawula iimvakalelo zethu!  Ungafumana izinto zokuphola ezingakumbi kwi-@data.parent_centre.relax_and_activities.location_text.", + "SourceText": "I started with the solutions right away.", + "text": "Ndivele ndangena kwizisombululo ngoko nangoko.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Injongo yakho ibikukwenza ulongiwo-mali kunye nesicwangciso sokonga imali. Siye saphawula ukuba ucofe ku-@data.habit.money.in_text_title - wenze kakuhle ngokukhumbula oku!", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "Xa sinengxaki, sisoloko sifuna ukukhawuleza sifike kwisisombululo kwaye singalibala ngamanyathelo abandakanyekileyo. Ukuze nize nesisombululo kunye, kuluncedo ukuba niqale niyiqonde kakuhle ingxaki kunye nezisombululo ezahlukahlukeneyo.", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Injongo yakho ibikukwenza ulongiwo-mali lwentsapho kunye nesicwangciso sokonga imali.", + "SourceText": "Four steps of problem solving", + "text": "Amanyathelo amane okusombulula ingxaki", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Enkosi ngokwabelana ngamava akho! Usebenzile ngokucinga ngendlela yokubhajetha uze wonge ngayo imali entsatsheni yakho. Oku kuza kukunceda usebenzele kwiinjongo zentsapho yakho. \n\nNikunye ninokuphumeza izinto ezininzi ezintle!", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Khange sivumelane ngesisombululo esinokusizama saza saxabana.", "type": "template", "note": "" }, { - "SourceText": "make a budget together with their family", - "text": "ukwenza ulongiwo-mali kunye nentsapho yabo", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Ngamanye amaxesha kunokuba nzima ukuba wonke umntu osentsatsheni avumelane, ingakumbi xa ningazolanga. Ningazama ukuvumelana ngesisombululo esinye kuqala, emva koko niye kwesilandelayo. Kwakhona, ukuba anihambeli phambili, zamani ukudibana ngelinye ixesha nize nivumelane ngesisombululo.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "Ngaba uye wanocelo-mngeni xa benisenza kunye ulongiwo-mali?", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Ndiye ndanomsido xa bekuvela ingxaki ndaza ndalibala ukusebenzisa amanyathelo okusombulula ingxaki.", "type": "template", "note": "" }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Yitoni ibininzimela ngokulenza kunye ulongiwo-mali?", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Xa kuvela ingxaki, ngamanye amaxesha sonke siye sibe nomsindo okanye sibe noxinezeleko. Khumbula, ukuba xa uziva unomsindo okanye ucaphukile, ungathatha ikhefu ukuze likuncede uhlale uzolile uze usombulule ingxaki onayo.", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Bendingafuni ukuxelela intsapho yam ukuba ndamkela malini.", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "Umtwana wam ofikisayo uye wanomsindo kwaye khange afune ukuthetha ngengxaki.", "type": "template", "note": "" }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Awunyanzelekanga uchaze ngqo imali oyamkelayo; unokuchaza inani eliqikelelwayo. Usenokuthi, “Apha ekhaya sine @global.currency@global.monthly_income_estimate qho ngenyanga” endaweni yokuthi, “Ndamkela @global.currency@global.monthly_income_precise”.", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Umntwana wakho unokunzinyelwa kukujongana nengxaki ngoko nangoko. Qaphela uze uyazi indlela avakalelwa ngayo, uze wenze ixesha kamva kwangolo suku okanye kuloo veki ukuze nithethe nize niyisombulule kunye ingxaki. Ngokwenza ixesha nomntwana wakho ofikisayo, ingxaki ingasonjululwa kakuhle.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "" }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Xa besisenza ibhajethi, khange sikwazi ukuvumelana ngezinto eziyimfuneko nezinto ekumnandi ukuba nazo.", + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Injongo yakho ibukukuzama ukusombulula ingxaki okanye ungquzulwano usebenzisana nomntwana wakho ofikisayo.", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Izinto eziyimfuneko nezinto ekumnandi ukuba nazo zahluka ngokwabantu. Ukuthetha ngazo kunganceda wena nomntwana wakho ofikisayo ukuba niqondane, nihloniphe ukwahluka kwenu nize nibone apho ninokuyekelela khona.", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Ntsapho nganye ijamelene nemiceli-mngeni kodwa xa sisebenza sonke singahlangabezana neengxaki ngendlela ephumelelayo nenoxolo. \n\nObunjani ukumangalisa ubuchule obunokufundwa ngumntwana wakho ofikisayo!", "type": "template", "note": "" }, { - "SourceText": "I did not understand what to do.", - "text": "Khange ndiyiqonde into ebekumele ukuba ndiyenze.", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje kukusombulula ingxaki. \n\nSonke siyazi ukuba ebomini akhona amaxesha esikhe sijamelane neengxaki, yaye sonke siyazi ngandlel’ ithile ukuba xa sizifumana sikwezi meko, kunzima ukucinga ngezicombululo ezikhawulezileyo ezakhayo. \n\nNgenxa yoko, kubalulekile ukuba xa sijamelene neengxaki khe sime, sithathe umoya, sizole size sicinge ngobuchule bokusombulula iingxaki esinokubusebenzisa. \n\nKhumbula ukuquka abantwana bethu abafikisayo xa sicombulula iingxaki. Oku kuya kubanceda baqole baze bafunde indlela yokucombulula iingxaki zabo kwixesha elizayo.", "type": "template", "note": "" }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Ndibuhlungu ukuva le nto. Ndiyayiqonda ukuba bungakhona ubunzima! Kutheni singaphindi sithethe ngale nto kwakhona? Umntwana wakho ofikisayo okanye amanye amalungu osapho angajoyina aze akuncede!", + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "Makhe siye ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe ukuze sibone ukuba beze naziphi izisombululo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "Umntwana wam ofikisayo khange afune ukuyenza kunye nam ibhajethi.", + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "u @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe beze nezisombululo ezithathu.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + }, + { + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Ukuba ngumzali kubantwana abafikisayo kunzima ngokwenene. \n\nAmaxesha amaninzi akukho zicombululo zilula, kodwa ngoku @global.w_solve_female_caregiver_1 ufunde ukuba angathetha nentombi yakhe ngezi zinto. \n\nNgaphambili, ebekade ezikhathaza yedwa, ngoku bangeza nezigqibo kunye!", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Zama ukwenza ibhajethi nabanye abantu abadala abasekhayeni lakho kuqala. Umtwana wakho ofikisayo angaba nomdla kwinto eniyenzayo. \n\nUkwenza ibhajethi kungabonakala kuyinto efuna unikele ingqalelo, kodwa zama ukuyenza ibe yinto emnandi – yenze umdlalo ngethuba lokuchitha ixesha kunye! Okanye ungazama ukwenza ibhajethi ye-@global.w_money_grandmakuqala. \n\nUngalibali ukubancoma xa nigqibile!", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Ngaba ukhe wawazama amanyathelo amane okusombulula ingxaki kunye nomntwana wakho ofikisayo? \n\nYAZI, YISOMBULULE, YIZAME, YIVAVANYE!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "Nawe ukufanelwe ukunconywa. Enkosi kwakhona ngokusebenzisa i-@global.parent_app. Kubonisa ukuba ukhathala ngokwenene!", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Ukuzimisela kwakho kulukhuthazo kuye wonke umntu. Qhubeka uzolile uze uqhubekeke!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Injongo yakho ibikukuncoma umntwana wakho ofikisayo. Ucofe ku-@data.habit.praise_teen.in_text_title.kule veki. Wenze umsebenzi omhle ngokukhumbula!", + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "Ukwindlela efanelekileyo yokuqalisa ukusombulula iingxaki kunye nomntwana wakho ofikisayo! \n\nGqiba i-@local.workshop_data.in_text_title uze uzuze esinye isakhono esibalulekileyo sokuba ngumzali!", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Injongo yakho ibikukuncoma umntwana wakho ofikisayo.", + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "text": "Ubomi, nokuba nabantwana abafikisayo, kuza neengxaki ezingalindelekanga kwaye kufuneka sijamelane nazo. \n\nQalisa uqeqesho olulandelayo uze ufunde indlela yokujamelana ngempumelelo nezi ngxaki.", "type": "template", "note": "" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "Ngaba uye wanalo ithuba lokuncoma umntwana wakho ofikisayo kule veki?", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nZama ukugqiba i@local.workshop_data.in_text_title ngaphambi kokuqala uqeqesho olutsha. Ukwazi indlela yokusombulula iingxaki kunye kunganceda kwiimeko ezininzi!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Yes", - "text": "Ewe", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Kuhle xa ugqibe i@local.workshop_data.in_text_title. Ngomso, uqeqesho olutsha luvuliwe ukuze lukuncede ugcine umntwana wakho ofikisayo ekhuselekile.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "No", - "text": "Hayi", + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "Makhe sijonge oko kwenzekileyo ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe xa u @global.w_solve_teen_girl eye wafumana ifowuni kwinkwenkwe… ifowuni!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Kunzima ngamanye amaxesha ukukhumbula ukuncoma abantwana bethu abafikisayo. Xa niphinda nichitha ixesha kunye nomntwana wakho ofikisayo, zama ukucinga ngento enye onokubancoma ngayo. Unako nokuthi, “Enkosi ngokuchitha ixesha kunye nam!”.", + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyifumene kubani loo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 undithengele. Intle le fowuni, @global.w_solve_female_caregiver_1. Ithatha iifoto ezintle!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Well done - great job for remembering!", - "text": "Usebenzile - wenze umsebenzi omhle ngokukhumbula!", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: “Andifuni kubona loo nto ibiza kangako! Ayilunganga laa nkwenkwe! Ucinga ukuba uza kumbuyekeza njani ngale nto?!” \n\n@global.w_solve_teen_girl: “Ayisebenzi ngolo hlobo, @global.w_solve_female_caregiver_1! Undidlel’ indlala!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "How did your teen respond?", - "text": "Usabele njani umntwana wakho ofikisayo?", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: “Andifuni kuyiva loo nto!” \n\n@global.w_solve_teen_girl: “Awuzami nokundiphulaphula! Andazi noba bendiqalela ntoni ukuthetha nawe!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Surprised", - "text": "Wothukile", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "Makhe sibone indlela ukusombulula iingxaki okusebenza ngayo ngokoqobo.", "type": "template", "note": "" }, { - "SourceText": "Happy", - "text": "Uvuyile", + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 uyagoduka uvela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacinga): \"Yhoo torho iinyawo zam! Kufuneka khe ndithi vu kancinci ndiphunge ikomityi yekofu ngaphambi kokuba ndiqalise ukuphekela wonke umntu.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "My teen did not like it", - "text": "Umntwana wam ofikisayo khange ayithande", + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani ntoni? Sisonka sedinala eso! Ngoku asizosanela sonke!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "I do not know", - "text": "Andazi", + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2, bendilambile. Ndingacacisa, yazi, kukho omnye umfana wasesikolweni...” \n\n@global.w_solve_female_caregiver_2 (uyacinga): “Khawume Kancinci… khawukhokh' umoya…”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Khumbula ukuba kuthatha ixesha ngomntwana wakho ofikisayo ukuba akuve umncoma. Okukhona uchitha ixesha kunye naye, kokukhona kuza kuya kusiba ngcono!", + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Khawundiphe nje umzuzu. Ndidiniwe yaye ngoku ndizikhathaza ngokufumana ukutya okwaneleyo kwedinala.” \n\n@global.w_solve_teen_boy_2: “Uxolo, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "Usebenzile ngokuphawula indlela avakalelwe ngayo umntwana wakho ofikisayo; yibambe apho!", + "SourceText": "Step 1: KNOW IT", + "text": "Inyathelo 1: YAZI", "type": "template", "note": "" }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Iyenzeka into enjalo - yiba nomonde. Qinisekisa ukuba uqhubeka uchitha ixesha kunye nomntwana wakho ofikisayo ukuze azokuluxabisa uluvo lwakho nangakumbi. Xa ukuncoma kwakho kusuka entliziyweni, uza kubona iingenelo kungekudala!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: \"Ngoku khawundixelele, kutheni ulambe kangaka? Khange uwutye umphako wakho wasesikolweni?” \n\n@global.w_solve_teen_boy_2: Nantso ke ingxaki. Kukho umfana esikolweni ondintlontayo. Uthi ukuba andimniki umphako wam wasesikolweni suku ngalunye, yena nabahlobo bakhe baza kundonzakalisa. Uyandiphambanisa!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Akukho ngxaki - kwixesha elizayo, zama ukuphawula intsabelo yakhe!", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: \"Ndibuhlungu ukuva loo nto kodwa ndiyavuya undixelele, @global.w_solve_teen_boy_2. Loo nto ayithethi ukuba umele utye idinala yomntu wonke. Emva kokuba sithethile, kufuneka uyokuthenga esinye isonka evenkileni. Kodwa kuqala: Ucinga ukuba sifanele senze ntoni ngale ngxaki yokuntlontwa kwakho?\"\n\n@global.w_solve_teen_boy_2: \"Kaloku… Ndifuna ukumbetha okanye ndiziphindezele kuye.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Injongo yakho ibikukuncokola ngemeko ekukho ingxaki kuyo kunye nomntwana wakho ofikisayo nize nenze icebo sokujamelana nayo.", + "SourceText": "Step 2: SOLVE IT", + "text": "Inyathelo 2: YISOMBULULE", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "lungiselela ingxaki enokubakho kunye nabantwana babo abafikisayo", + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: \"Hmmm… ucinga ukuba kuya kwenzeka ntoni kuwe xa usenza loo nto?\"\n\n@global.w_solve_teen_boy_2: \"Andazi. Mkhulu kunam ngoko mhlawumbi uza kundonzakalisa ngakumbi. Yaye ndingasenkathazweni esikolweni ndize ndigxothwe.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "lungiselela ingxaki enokubakho kunye nomntwana wakho ofikisayo", + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: “Ewe, inokwenzeka loo nto. Yintoni esinokuyenza endaweni yaloo nto?\"\n\n@global.w_solve_teen_boy_2: “Mhlawumbi ndingaxelela utitshala. Kodwa abanye abantwana baza kuthi ndisisinyabi. Mhlawumbi ungathetha notitshala?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "Umntwana wam undichazele ukuba uye wanengxaki enkulu kodwa khange ndazi ukuba ndenze ntoni ngayo.", + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Kuvakala kulicebo elihle elo. Ndingakhe ndithethe nabazali bakhe ukuba ufuna ndenjenjalo.\"\n\n@global.w_solve_teen_boy_2: \"Kulungile. Ukuba ucinga ukuba nayo loo nto inganceda. Enkosi, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Mncome umntwana wakho ofikisayo ngoku kuchazela; akululanga ukuyenza lonto! Ukhumbule ukuba unokusebenzisa zonke izakhono ozifumene kwibhokisi yakho yezixhobo: Nqumama sebenzisa amanyathelo amane okusombulula ingxaki kwaye cela inkxaso efunwa nguwe nomntwana wakho ofikisayo!", + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: \"Ndingakwenzela nantoni na, mntanam. Ndiza kwenjenjalo emva kokuba sitye idinala. Futhi uyazi yintoni? Ukuba leyo ayisebenzi, singazama nenye into kunye.\":\n\n@global.w_solve_teen_boy_2: \"Enkosi, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Get support", - "text": "Fumana inkxaso", + "SourceText": "Step 3: TRY IT", + "text": "Inyathelo 3: YIZAME", "type": "template", "note": "" }, { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Incoko indenze ndaziva ndingakhululekanga kuba indikhumbuze ngamava abuhlungu endandikhe ndahlangabezana nawo.", + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "Emva kweveki… \n\n@global.w_solve_female_caregiver_2: \"Izinto zihamba njani esikolweni ngoku?\"\n\n@global.w_solve_teen_boy_2: “Kubhetele noko, le nkwenkwe ayisawuthathi umphako wam wesikolo. Kodwa isekrwada kakhulu kum.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Xa sikhumbula lomava, kuqhelekile ukuziva ucaphukile okanye unomsindo. Kubalulekile ukuba ufumane ixesha laxa uzolile ukuze ukwazi ukucinga ngenkxaso oyifunayo. Kusenokufuneka ube nomntu othetha naye.", + "SourceText": "Step 4: TEST IT", + "text": "Inyathelo 4: SIVAVANYE", "type": "template", "note": "" }, { - "SourceText": "One of us did not feel comfortable.", - "text": "Omnye wethu uzive engakhululekanga.", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: \"Ndiyayixolisela ukuva loo nto, @global.w_solve_teen_boy_2. Ndingamcela umalume wakho ayokuthetha nabazali bayo? Ukuba leyo ayisebenzi, siya kuzama enye into!\"\n\n@global.w_solve_teen_boy_2: \"Ewe, enkosi @global.w_solve_female_caregiver_2. Noko ndiyazi ukuba ungakum.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Kunzima ukuthetha ngalento. Khangela ixesha xawupholile ukuze uthethe ngayo. Siyayiqonda ukuba kulula ukungathethi ngezi zinto siye sinqwenele ukuba zingaze zisehlele. Sekunjalo kodwa, ukufunda ukujamelana nengxaki kufana nokuthenga i-inshorensi; SOLOKO kufanelekile ukucinga ngazo kwaye uzilungele.", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Vala amehlo, utsale umoya, uze wazi ukuba yonke into oye wayenza ibaluleke kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Injongo yakho ibikukuceba imingcipheko neenkqubo zenkxaso kunye nomntwana wakho ofikisayo - kokubini kwindawo ohlala kuyo naxa kusetyenziswa i-intanethi.", + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "Wohlwaye u@global.w_solve_teen_girl kangangenyanga", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "map risks and support with their teens", - "text": "ukubhala imingcipheko nenkxaso kunye nabantwana babo abafikisayo", + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: “Akuzi kuphuma kangangenyanga”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "map risks and support with your teen", - "text": "ukubhala imingcipheko nenkxaso kunye nomntwana wakho ofikisayo", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Loo nto ayikhange isebenze... Makhe sizame enye into.", "type": "template", "note": "" }, { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Mna nomntwana wam ofikisayo khange sivumelane ngeendawo ezingakhuselekanga kunye nezinto ezingakhuselekanga ezenziwa kwi-intanethi.", + "SourceText": "Return the phone and save up", + "text": "Buyisa ifowuni ukuze wonge", "type": "template", "note": "" }, { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "Usebenzile ngokuzama ukwenza le nto! Xa sibamamela abantwana bethu abafikisayo, sifunda ukuqonda indlela abacinga ngayo nokuba asivumelani nabo. Zama ukufumana ixesha lokwenza lo msebenzi kwakhona -zama ukumamela nyhani uze ubonise ukuba uyabaqonda ngaphambi kokuthetha ngeengcinga zakho.", + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: “Andizami kutyhola umhlobo wakho okanye ukuba nomona. Ndikhathazwa kukuba xa umntu ekuphe isipho kunzima ukuthi ‘hayi’ xa efuna ukubhatalwa – njengokwabelana ngesondo. Ukuba ufuna ukuba nefowuni, siza konga sobabini ukuze ukwazi ukwenza izigqibo zakho ngaphandle kokumtyala into ethile.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "Umntwana wam uthe indlu yomntu endimthembayo ayikhuselekanga. Bendothukile kwaye ndingazi ukuba ndenzeni.", + "SourceText": "This is great! Try the third option as well.", + "text": "Kuhle! Zama nolunye ukhetho lwesithathu.", "type": "template", "note": "" }, { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Kuyothusa ukwazi ukuba abantu abasondeleyo kuthi nesibathembayo kusenokwenzeka bayingozi kubantwana bethu abafikisayo. Khumbula ukukhe uthathe ikhefu xa ukhathazekile, uze uzame ukummamela uzolile umntwana wakho ofikisayo. Fumana umntu onokuthetha naye ngale nto, mhlawumbi umhlobo okanye inkonzo yenkxaso, ukuze ufumane inkxaso oyidingayo.", + "SourceText": "Learn about safe sex", + "text": "Funda ngokwabelana ngesondo okukhuselekileyo", "type": "template", "note": "" }, { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "Umntwana wam ofikisayo unyanzelise ukuba ibhari (okanye enye indawo endicinga ukuba ayikhuselekanga) kukhuselekile ukuba ayindwendwele. Andiyazi ndingamoyisela njani umntwana wam ofikisayo.", + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: “Oku kwenza ndiqonde ukuba simele sithethe ngamakhwenkwe nokuzikhusela. Abantwana abaninzi abafikisayo abalingana nawe bayakhulelwa okanye babe ne-HIV. Masiye ekliniki ukuze uthethe nomongikazi ukuze ubone indlela onokuhlala ngayo ukhuselekile.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Oku kunokucaphukisa kakhulu. Ukuze ufumane isisombululo, umntwana wakho ofikisayo kufuneka azive emanyelwa - ngoko ke zimamele uzolile izizathu zomntwana wakho ofikisayo, kusemva koko kuphela oya kuthi uthethe ngezakho iingcinga. Emva koko, ninobabini cingani ngomgaqo obavumela bonwabe kodwa babe bekhuselekile.", + "SourceText": "This is great!", + "text": "Kuhle!", "type": "template", "note": "" }, { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "Njengomntu omdala, ndiziva ndinoxanduva lokukhusela - kodwa xa ndaxelela umntwana wam ofikisayo oko kukhuselekileyo nokungakhuselekanga, umntwana wam waba nomsindo.", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nengxubusho – oko kusebenzile!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Abantwana bethu basenokwazi izinto ngeendawo esihlala kuzo kunye neteknoloji ekusenokwenzeka asizazi thina. Xa sibabandakanya ngokupheleleyo abantwana bethu abafikisayo ekucebeni izinto size sibamamele nyhani, baziva bemanyelwa kwaye bexatyiswa, ibe kungalula ukuza necebo elamkelwa nguye wonke umntu.", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Izixhobo: Indlela yokusombulula iingxaki\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Yizame!\n* Amacebiso asebenzisekayo ekhaya", "type": "template", "note": "" }, { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Bekunzima ukubona imithombo yenkxaso efumanekayo kwindawo endihlala kuba andiyazi kakuhle indawo endihlala kuyo / kukho iinkonzo ezimbalwa ezifumanekayo.", + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Ncokolani kunye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Kunzima ukwazi zonke iinkcukacha ngeendawo esihlala kuzo. Xa ubhala into yokwenza, bandakanya elinye ilugu losapho okanye isihlobo. Usenokude utyelele kwezinye zeendawo ekufumaneka kuzo iinkonzo uze ubuze ukuba zenza ntoni. Okukhona sisazi, kokukhona sinokugcina iintsapho zethu zikhuselekile!", + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Usakhumbula u @global.w_solve_teen_girl nala fowuni ayifumene enkwenkweni?", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Andazi nto kangako ngeteknoloji, ngoko andiyazi indlela yokuncokola kunye nomntwana wam ofikisayo ngayo.", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 banokuwasebenzisa njani amanyathelo ama-4 okusombulula iingxaki njengoba u @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 benzile? \n\nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Akukho ngxaki kwaphela! Ungaqhubeka umxhasa umntwana wakho ofikisayo. Cela umntwana wakho akuxelele ngeegajethi abazisebenzisayo - unokuyenza le nto ngethuba lokuchitha ixesha kunye. Eli lithuba elihle lokubonisa umdla kubomi bomntwana wakho ofikisayo nize nincokole kunye ngemingcipheko enokubakho. Ukuba awuqinisekanga ngemithetho onokuyibeka, ninokuvumelana nomntwana wakho ofikisayo ukuba nizame umthetho omtsha kangangeeveki ezimbini nize emva koko nincokole ngendlela ezihamba ngayo izinto kwaye niwutshintshe umthetho ukuba kuyimfuneko!", + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Thatha umoya izihlandlo ezimbalwa ukuze uzole, yaye", "type": "template", "note": "" }, { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Injongo yakho ibukukuzama ukusombulula ingxaki okanye ungquzulwano usebenzisana nomntwana wakho ofikisayo.", + "SourceText": "KNOW IT", + "text": "YAZI", "type": "template", "note": "" }, { - "SourceText": "resolve problems with their teens", - "text": "basombulule iingxaki besebenzisana nabantwana babo abafikisayo", + "SourceText": "Identify the problem.", + "text": "Fumanisa ingxaki.", "type": "template", "note": "" }, { - "SourceText": "resolve the problem with your teen", - "text": "sombulula ingxaki usebenzisana nomntwana wakho ofikisayo", + "SourceText": "SOLVE IT", + "text": "YISOMBULULE", "type": "template", "note": "" }, { - "SourceText": "I forgot the steps of problem solving.", - "text": "Ndiwalibele amanyathelo okusombulula ingxaki.", + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Cinga ngezisombululo ezinokubakho nokuthi kungenzeka ntoni ukuba sinokuzisebenzisa.", "type": "template", "note": "" }, { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "Kuthatha uqheliselo oluthile ukusebenzisa onke la manyathelo mane okusombulula ingxaki. Kwixesha elizayo xa kuvela ingxaki, jonga amanyathelo amane nomntwana wakho ofikisayo - kuya kwenza umahluko omkhulu!", + "SourceText": "TRY IT", + "text": "SIZAME", "type": "template", "note": "" }, { - "SourceText": "I started with the solutions right away.", - "text": "Ndivele ndangena kwizisombululo ngoko nangoko.", + "SourceText": "Choose a solution and try it out.", + "text": "Khetha isisombululo uze usizame.", "type": "template", "note": "" }, { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "Xa sinengxaki, sisoloko sifuna ukukhawuleza sifike kwisisombululo kwaye singalibala ngamanyathelo abandakanyekileyo. Ukuze nize nesisombululo kunye, kuluncedo ukuba niqale niyiqonde kakuhle ingxaki kunye nezisombululo ezahlukahlukeneyo.", + "SourceText": "TEST IT", + "text": "SIVAVANYE", "type": "template", "note": "" }, { - "SourceText": "Four steps of problem solving", - "text": "Amanyathelo amane okusombulula ingxaki", + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "Ngaba sisebenzile? Kulunge kakhulu! Ukuba asikhange sisebenze, khawuzame esinye isisombululo.", "type": "template", "note": "" }, { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Khange sivumelane ngesisombululo esinokusizama saza saxabana.", + "SourceText": "Let's practice problem-solving!", + "text": "Makhe siqhelisele ukusombulula iingxaki!", "type": "template", "note": "" }, { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Ngamanye amaxesha kunokuba nzima ukuba wonke umntu osentsatsheni avumelane, ingakumbi xa ningazolanga. Ningazama ukuvumelana ngesisombululo esinye kuqala, emva koko niye kwesilandelayo. Kwakhona, ukuba anihambeli phambili, zamani ukudibana ngelinye ixesha nize nivumelane ngesisombululo.", + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Qheliselani kunye ngengxaki eninayo ngoku. Omnye kuni ngumzali aze omnye abe ngumntwana ofikisayo. \n\nNcomanani nize nikhuthazane - siyazidla ngani! \n\nUngawalibali la manyathelo: \nYAZI - YISOMBULULE - YIZAME - YIVAVANYE", "type": "template", "note": "" }, { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Ndiye ndanomsido xa bekuvela ingxaki ndaza ndalibala ukusebenzisa amanyathelo okusombulula ingxaki.", + "SourceText": "We care about you, and how life is treating you.", + "text": "Sikukhathalele, kunye nendlela ubomi obukuphatha ngayo.", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Xa kuvela ingxaki, ngamanye amaxesha sonke siye sibe nomsindo okanye sibe noxinezeleko. Khumbula, ukuba xa uziva unomsindo okanye ucaphukile, ungathatha ikhefu ukuze likuncede uhlale uzolile uze usombulule ingxaki onayo.", + "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", + "text": "Uligqala. Yaye uyawenza umahluko. Zingce.", "type": "template", "note": "" }, { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "Umtwana wam ofikisayo uye wanomsindo kwaye khange afune ukuthetha ngengxaki.", + "SourceText": "Sorry that things are not easy today. All parents have these days.", + "text": "Uxolo kuba izinto zingekho lula namhlanje. Iimini ezinje ziyabafikela bonke abazali.", "type": "template", "note": "" }, { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Umntwana wakho unokunzinyelwa kukujongana nengxaki ngoko nangoko. Qaphela uze uyazi indlela avakalelwa ngayo, uze wenze ixesha kamva kwangolo suku okanye kuloo veki ukuze nithethe nize niyisombulule kunye ingxaki. Ngokwenza ixesha nomntwana wakho ofikisayo, ingxaki ingasonjululwa kakuhle.", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "Ulugqibile uqeqesho lwale veki.\n\nKule veki izayo siza kuthetha ngemali - uya kudinga:\n* iphepha/ikhadbhodi\n* ipen\n* amatye amancinci angama-20/iimbotyi/iinkozo\n\nkuya kuba mnandi!", "type": "template", "note": "" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele. Ucofe ku-@data.habit.breathe.in_text_title - usebenzile!", + "SourceText": "There are two home practices for this week.", + "text": "Kukho amaqheliselo amabini asekhaya kule veki.", "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele.", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe kahlanu ngaphambi kokuba usabele. \n\nYaye xa nobabini nizolile, chazela umntwana wakho ofikisayo indlela oziva ngayo.", "type": "template", "note": "" }, { - "SourceText": "How did this work out?", - "text": "Kuhambe njani oku?", + "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "text": "Ncokolani “ngoxolelo lokhuseleko” nomntwana wakho ofikisayo, yaye nobabini cingani ngemeko apho ninokuyisebenzisa khona lento.", "type": "template", "note": "" }, { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Injongo yakho ibikukuthetha kunye nomntwana wakho ofikisayo malunga nendlela eniye navakalelwa ngayo kwimeko ebangela uxinezeleko.", + "SourceText": "Safety Amnesty Story", + "text": "Ibali Loxolelo Lokhuseleko", "type": "template", "note": "" }, { - "SourceText": "How did this go?", - "text": "Ihambe njani le nto?", + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Sihlandlo ngasinye unqumama ngaphambi kokuphendula, okanye nanini na usenza into ukuze ukhusele umntwana wakho ofikisayo, cofa i @global.parent_points uze ubhiyozele impumelelo yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", @@ -8370,890 +7716,932 @@ "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho ofikisayo enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya). Ucofe ku-@data.habit.consequence.in_text_title - wenze kakuhle ngokukhumbula oku!", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", + "text": "Kule veki, usukelo lwakho ibikukuba: Nanini na uziva uxinezelekile okanye ucaphukile, tsala umoya uphinde uwukhuphe izihlandlo ezintlanu ngaphambi kokuba usabele.", "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Injongo yakho ibikukwenza kubekho umphumo OMNYE othandekayo (xa umntwana wakho enze into ebekumele ayenze) kunye nomphumo OMNYE ongathandekiyo (xa umntwana wakho engawuthobelanga umthetho wekhaya).", + "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Injongo yakho ibikukuthetha kunye nomntwana wakho ofikisayo malunga nendlela eniye navakalelwa ngayo kwimeko ebangela uxinezeleko.", "type": "template", "note": "" }, { - "SourceText": "introduce a consequence together", - "text": "gqibani ngomphumo kunye", + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Siyazi ukuba kunzima kangakanani ukukhulisa abantwana abafikisayo kula maxesha. Ukufunda ukulawula uxinezeleko lwakho kunceda wena - nentsapho yakho.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "Ngaba uye wanengxaki xa benizama ukugqiba ngomphumo kunye?", + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Molweni, kuni nonke. \n\nUmxholo wanamhlanje uphathelele ukulawula uxinezeleko. \n\nKubalulekile ukwazi indlela yokulawula uxinezeleko lwethu. Maxa wambi abantwana bethu bangaziphatha ngeendlela ezinokusenza sizive sixinezelekile yaye nathi bazali sinokwenza abantwana bazive bexinezelekile. \n\nNgoko, kubalulekile ukuphawula xa siziva sixinezelekile size sime kancinci size sithathe umoya. Loo nto iya kukunceda ulawule uxinezeleko.", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Yintoni ebinzima ekugqibeni ngomphumo kunye nomntwana wakho ofikisayo?", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Unjani umlinganiselo woxinezeleko lwakho kule veki? Zama ukutsala umoya kambalwa ngaphambi kokuba usabele kumntwana wakho ofikisayo - kwenza umahluko omkhulu.", "type": "template", "note": "" }, { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Ndiye ndanomsindo kakhulu xa umntwana wam ofikisayo eye wophula umthetho.", + "SourceText": "Well done!", + "text": "Usebenzile!", "type": "template", "note": "" }, { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Xa sinqumama ngaphambi kokuphendula, oko kusinceda sizole size siphendule bhetele. \n\nXa ephinda ekucaphukisa umntwana wakho ofikisayo, zama ukunqumama kuqala. Uthathe imimoya embalwa lonto ingenza umehluko omkhulu!", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "Usebenzile ngokutsala umoya ngaphambi kokusabela kumntwana wakho ofikisayo! Qho xa usenza unqumamo, uye ukwazi ukuzibamba.", "type": "template", "note": "" }, { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "Umntwana wam ofikisayo uye wanomsindo kakhulu emva kokuba ndimnike umphumo.", + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "Wonwabile, udakumbile, unomsindo, uchulumancile, unexhala? Usebenzile ngokuqonda indlela wena kunye nabanye abantu enivakalelwe ngayo namhlanje! Ungalibali ukuba ngomso, lusuku olutsha kraca.", "type": "template", "note": "" }, { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Xa umntwana wakho ofikisayo esiba nomsindo, kusenokufuneka umshiye yedwa ude wehle umsindo kuni nobabini. \n\nHlola ukuba umphumo awufumanayo usengqiqweni kanye unobulungisa. Mamela umntwana wakho ofikisayo xa ecacisa uze uqinisekise ukuba kukho “Uxolelo kwimeko Yokhuseleko” ukuba akawuthobelanga umthetho kuba efuna ukukhuseleka.", + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Sonke sikhe sizive ngathi izinto ziyasongamela ngamanye amaxesha. Ukutsala umoya kuyanceda! \n\nGqiba i-@local.workshop_data.in_text_title ukuze ufumane izixhobo eziluncedo ngendlela yokujamelana noxinezeleko.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Ndiye ndathi kuza kubakho umphumo ndingakhange ndiqale ndithethe nomntwana wam ofikisayo malunga nalonto.", + "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Sinoqeqesho olutsha olumalunga nokulawula umsindo kunye noxinezeleko. Luza kukunceda uzinyamekele.", "type": "template", "note": "" }, { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "Ungakwazi ukuwusebenzisa lomphumo xa kusenzeka oku kwakhona? Xa sisithi kuza kubakho umphumo kwaye sibe sibabandakanyile abantwana bethu abafikisayo, umphumo uza kuba yinto enokwenzeka kwaye abantwana bethu abafikisayo baza kukufuna ngakumbi ukuthobela umthetho.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Ngomso uqeqesho olutsha kraca lwe @global.parent_app sele likulindile. \n\nNgokugqiba i@local.workshop_data.in_text_title kuqala, ubeka isiseko esibaluleke ngokwenene: Ukuba uziva kamnandi, usapho lwakho luyokwenza ngcono nalo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Ndiye ndalibala ukulandelela umphumo.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "Wenze kakhuhle ngokugqiba i@local.workshop_data.in_text_title. Ngomso, ungangena kuqeqesho olutsha ekunceda uphole uze wakhe izakhono ezixabisekileyo!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Sonke siyazenza impazamo! Okukhona sibanika rhoqo imiphumo, kokukhona abantwana bethu beza kukhetha ukuziphatha kakuhle kwixesha elizayo.", + "SourceText": "Let's think about what happened in this story.", + "text": "Makhe sicinge ngoko kwenzekileyo kweli bali.", "type": "template", "note": "" }, { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Umntwana wam ofikisayo akawuthobeli umthetho, nokuba ndimnike umphumo.", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani?", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "Ukuba umntwana wakho ofikisayo usoloko esophula imithetho, kusenokufuneka uchithe ixesha kunye naye nisenza izinto ezikhuthazayo. \n\nZama ukungaziyeki ezinye injongo onazo – njengoku uzinyamekela, ubene xesha enilichitha kunye no kuncoma. Zonke ezi zakhono ziza kumnceda umntwana wakho ofikisayo azive ethandwa kwaye ekhuselekile... kwaye nawe ungaxinezelekanga kakhulu!", + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "Yaye @global.w_stress_male_caregiver?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Siye sabano mphumo ombi, bekungekho mphumo okhuthazayo.", + "SourceText": "And @global.w_stress_girl?", + "text": "Yaye @global.w_stress_girl?", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Ngamanye amaxesha kuba nzima ukucinga ngemiphumo ekhuthazayo. Imiphumo ekhuthazayo iza kumkhuthaza umntwana wakho kuba azoziva enoxanduva kwaye uza kuwubona umehluko!", + "SourceText": "Sad", + "text": "Ulusizi", "type": "template", "note": "" }, { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "Umntwana wam ofikisayo ucebise ukuba umphumo ongathandekiyo ibe kukubethwa.", + "SourceText": "Scared", + "text": "Uyoyika", "type": "template", "note": "" }, { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Abantwana abafikisayo basenokucinga ukuba ukubethwa nguwo kuphela umphumo ongathandekiyo abanokuwufumana xa bophule imithetho. \n\nCingani ngemiphumo engena budlobongela kunye nabo enoku banceda baqonde ukuba benze into ephosakeleyo. Iza kusebenza ngcono kwaye iza kumisela imizekelo ekhuthazayo!", + "SourceText": "Confused", + "text": "Ubhidekile", "type": "template", "note": "" }, { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Injongo yakho ibikukubekela umntwana wakho ofikisayo umthetho OMNYE kule veki.", + "SourceText": "Angry", + "text": "Unomsindo", "type": "template", "note": "" }, { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "Usebenzile ngokwenza le nto! Akululanga kwaye abantwana abafikisayo abazusoloko beyithobela imithetho, kodwa ukubeka imithetho ebalulekileyo yindlela entle yokuqalisa. Zincome ngokwenza oku - siyazingca ngawe!", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Ngamnye kubo ebecaphuka ngezizathu zakhe!", "type": "template", "note": "" }, { - "SourceText": "make rules with their teens", - "text": "yenza imithetho kunye nabantwana bakho abafikisayo", + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "Yintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "Ngaba uye wanengxaki xa benizama ukwenza umthetho kunye?", + "SourceText": "Recognise why he feels stressed", + "text": "Hlola ukuba kutheni eziva exinezelekile", "type": "template", "note": "" }, { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Yintoni ebinzima ngokubeka umthetho kunye nomntwana wakho ofikisayo?", + "SourceText": "Take a deep breath and speak calmly", + "text": "Khawuthathe umoya uze uthethe ngokuzolileyo", "type": "template", "note": "" }, { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Mna nomntwana wam khange sikwazi ukuvumelana ngomthetho.", + "SourceText": "Show he understands his teen’s feelings", + "text": "Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo", "type": "template", "note": "" }, { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Cinga enoba lo mthetho usengqiqweni. Ngaba umntwana wakho angakwazi ukuwuthobela? Xa nisenza umthetho njengentsapho, kuyanceda ukucinga ngomntwana wakho ofikisayo, mingaphi iminyaka yakhe, kunye nezinto ezibalulekileyo kuye.", + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "Cinga ngezisombululo kunye @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "Umntwana wam ebevakalelwa kukuba akulunganga ukuba kufuneke athobele umthetho ngoxa kungafuneki ndiwuthobele mna.", + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", "type": "template", "note": "" }, { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Simele sisoloko sikhumbula ukuba abantwana bafunda kakuhle kumzekelo wethu. Okukhona sithobela imithetho, kokukhona nabo beza kuyilandela. \n\nUnokuwutshintsha umthetho ukuze uqinisekise ukuba unokuthotyelwa, ucinga ngeembopheleleko onazo kunye nezomntwana wakho ofikisayo (ngokomzekelo, izinto ezenziwa esikolweni okanye emsebenzini).", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "Makhe sijonge indlela uxinezeleko olunokuthi maxa wambi lube ngaphaya kwamandla, kuthi sonke:", "type": "template", "note": "" }, { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Ndiye ndaziva ndingakhululekanga ngenxa yokuba ndivakalelwa kukuba ndim omele ukuba ubeka umthetho kungekhona umntwana wam ofikisayo.", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver: “Khawundiyeke uhoye iindaba zakho!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "Iqabane lam liye laziva lingakhululekanga, ngenxa yokuba livakalelwa kukuba lilo elimele ukuba libeka umthetho, kungekhona umntwana ofikisayo.", + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: Ndenze ntoni? Awundimameli!” \n\n@global.w_stress_male_caregiver: “Ndithe ndiyeke okanye ndiza kukubetha!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Xa sibeka imithetho sisebenzisana kunye nabantwana bethu abafikisayo, loo nto inceda ukuba abantu abakwintsapho baqondane. Imithetho iza kulungela wonke umntu kwaye abantwana bethu abafikisayo baza kufuna ngakumbi baze bakwazi ukuyithobela.", + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: “Jonga! Ndenze indlu!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Xa besizama ukubeka umthetho, siye saxabana.", + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: “Bukhathalelwe ngubani ububhanxa bendlu yakho!”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "Ngaba ebekwimeko entle umntwana wakho ofikisayo xa benibeka umthetho? Kuhle ukubeka imithetho xa imeko izolile. Ukuba wena okanye umntwana wakho nidiniwe okanye nilambile, kungcono ukuthetha ngemithetho ngelinye ixesha.", + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Enkosi ngokucinga ngolu hlobo! Makhe sibuyele umva size sibone ukuba u @global.w_stress_male_caregiver wenza ntoni ngoku:", + "type": "template", + "note": "The string @global.w_stress_male_caregiver should not be translated." + }, + { + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver uphelelwe ngumsebenzi. Ebehleli endlini eziva ekhathazekile yaye exinezelekile, ukungena kuka @global.w_stress_teen_boy_1.", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + }, + { + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: “Ndicela imali ndizokuthenga iethayimu?” \n\n@global.w_stress_male_caregiver (uyaphefumla): “Uxolo nyana wam. Bendinemini embi namhlanje. Umqeshi wam undigxothile.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + }, + { + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “Yhoo! Ndicela iyunifom entsha.” \n\n@global.w_stress_male_caregiver: “Ndiza kuzama nyana, Yaye umsebenzi ka @global.w_stress_female_caregiveruza kusithwala logama ndisakhangela omnye umsebenzi.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + }, + { + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: “Nam ndingakuncedisa ukukhangela umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “Hayi akunangxaki, @global.w_stress_teen_boy_1. Ndiyakuxabisa ukulungela kwakho ukunceda. Eyona nto ibalulekileyo kukuba usebenze nzima esikolweni. Enkosi ngokundiphulaphula.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + }, + { + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “Masidlale kunye ibhola. Kuza kundinceda ndikhuphe olu xinezeleko engqondweni okwethutyana.” \n\n@global.w_stress_teen_boy_1: \"Kulungile, @global.w_stress_male_caregiver!\"", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + }, + { + "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", + "text": "Kube bhetele kakhulu! \n\nUkuma kancinci kukunceda uzole xa uziva unomsindo okanye uxinezelekile. Yizame, uza kubona!", "type": "template", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Khange sikwazi ukuwuthobela umthetho.", + "SourceText": "Safety Amnesty", + "text": "Uxolelo Lokhuseleko", "type": "template", "note": "" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Umthetho kufuneka ungqale uze ube ngonokuthotyelwa. Qinisekisa ukuba umthetho obekwayo unokugcinwa ngokulula, njengokutya isidlo kunye qho ngeCawa endaweni yokwenza oko ngazo zonke iingokuhlwa. Ngaba kufuneka ububhetyebhetye kulo mthetho?", + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Khumbula ngokuya wawungumntwana ofikisayo. \n\nNgaba wakha wasengozini kodwa wabe ungenakuxelela intsapho yakowenu ngenxa yokuba iza kuba nomsindo?\n\nOku KUPHANTSE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Makhe sijonge:", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + }, + { + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: \"Ungabaxeleli abantu abadala, kodwa ndiya ebharini nabahlobo bam ngokuhlwanje\" \n\n@global.w_stress_teen_girl: “Yonwaba! Ndibaxelele ukuba ndiza kuhlala nentombi engumhlobo wam, kodwa eneneni ndiya epatini”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + }, + { + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: \"Ndicinga ukuba basebenzisa iziyobisi. Singabanjwa sonke. Kodwa andinakubaxelela abazali bam – baya kuba nomsindo kakhulu\"", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_2 should not be translated." }, { - "SourceText": "Mother", - "text": "Mama", - "type": "global", - "note": "" + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: “Ndiyoyika. Wonke umntu unxile kakhulu ukuba angandigodusa. Le nkwenkwe ithi ingandigodusa kodwa ifuna ndiqale kowayo. Andinakubaxelela abazali bam - ndibaxokisile ngokuza kule pati.”", + "type": "template", + "note": "The string @global.w_stress_teen_girl should not be translated." }, { - "SourceText": "Father", - "text": "Tata", - "type": "global", - "note": "" + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", + "text": "Ezi zimeko eziyingozi! Okuvuyisayo kukuba, u @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl bakhumbula oko u @global.w_stress_parent wabaxelela kona: \n\n\"Ndilukhathalele ukhuseleko lwakho ngaphezu kwayo nantoni na. Ukuba uye wacaphuka, okanye woyika, ungaqhagamshelana nam ukuze ndikuncede, okanye undixelele ngayo. \n\nVele uthi ‘UXOLELO LOKHUSELEKO’. Ndiyathembisa ukuba ndiza kwenza unako nako ukukunceda yaye andizokucaphuka – kwanokuba wenza into obungamele uyenze.\"", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "TikTok", - "text": "I-TikTok", - "type": "global", - "note": "" + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", + "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, Luxolelo lokhuseleko. Ngaba ungeza uzokundithatha? Ndiyidinga ngokwenene into egodukayo.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "Ukubukela levidiyo kufuna ufikelelo lweintanethi. Ukulinganisela usetyenziso lwedatha, bukela okanye udawnlowude le vidiyo xa ukwi WiFi.", - "type": "global", - "note": "" + "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", + "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, uxolelo lokhuseleko Ndicinga ukuba abahlobo bam basengxakini. Andifuni kuyeka ukuba ngumhlobo wabo, kodwa ndikhathazekile. Ngaba singathetha?\"", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" }, { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "Ukutyelela ezi webhsayithi kufuna ufikelelo lwe-intanethii. Ukuze ulinganisele usetyenziso lwedatha, tyelela ezi webhsayithi xa ukwi WiFi.", - "type": "global", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Oku kubalasele, ingakumbi ngamaxesha anzima njengala. Uligqala.", + "type": "template", "note": "" }, { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "Ukuthumela lo myalezo kufuna ufikelelo lweintanethi. Ukuze ulinganisele usetyenziso lwedatha, thumela umyalezo xa ukwi WiFi.", - "type": "global", + "SourceText": "Today you will explore:", + "text": "Namhlanje uza kuhlola:", + "type": "template", "note": "" }, { - "SourceText": "COVID", - "text": "I-COVID", - "type": "global", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Ibali nencoko – loo nto ayikhange isebenze…\n* Ibali nengxubusho – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengxubusho – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "type": "template", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Ukwamkela Nokuzinyamekela", - "type": "global", + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Ibali nencoko – loo ayikhange isebenze…\n* Ibali nokucamngca – oko kuye kwasebenza!\n* Ibali Loxolelo lokhuseleko nengcinga – oko kusebenzileyo!\n* Izixhobo: Indlela yokulawula uxinezeleko\nPHEFUMLA - PHULAPHULA - CINGA\n* Amacebiso asebenzisekayo ekhaya", + "type": "template", "note": "" }, { - "SourceText": "Self-Care", - "text": "Ukuzinyamekela", - "type": "global", + "SourceText": "Let's discuss what happened in this story.", + "text": "Makhe sincokole ngento eyenzekileyo kweli bali.", + "type": "template", "note": "" }, { - "SourceText": "How to add self-care", - "text": "Indlela yokongeza ukuzinyamekela", - "type": "global", - "note": "" + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "Ucinga ukuba u @global.w_stress_teen_boy_1 uzive njani? Kunye ne @global.w_stress_male_caregiver? Yaye @global.w_stress_girl?\n\nYintoni u @global.w_stress_male_caregiver angeyenzile ngokwahlukileyo?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "One-on-One Time", - "text": "Ixesha Lenu Nobabini", - "type": "global", - "note": "" + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver unako...", + "type": "template", + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "How to spend one-on-one time", - "text": "Indlela yokuchitha ixesha lenu nobabini", - "type": "global", - "note": "" + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* Qonda ukuba kutheni eziva exinezelekile \n* Khawuthathe umoya uze uthethe ngokuzolileyo \n* Ubonisa ukuba uyayiqonda indlela aziva ngayo umntwana wakhe ofikisayo \n* Cingani ngezisombulullo kunye @global.w_stress_teen_boy_1\n* Yenza into efanelekileyo kunye no @global.w_stress_teen_boy_1", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "Praise", - "text": "Ncoma", - "type": "global", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "PHEFUMLA. Ngokucothayo. Yima.", + "type": "template", "note": "" }, { - "SourceText": "How to praise", - "text": "Indlela yokuncoma", - "type": "global", + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Ngaphambi kokuba uthethe nantoni na, ngokucothayo tsala umoya uphinde uwukhuphe izihlandlo ezintlanu. Loo nto iya kukwenza uzole, ize ikunike ithuba lokucinga.", + "type": "template", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Imiyalelo Eyakhayo", - "type": "global", + "SourceText": "SHARE how you feel", + "text": "CHAZA indlela ovakalelwa ngayo", + "type": "template", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Indlela yokunika imiyalelo eyakhayo", - "type": "global", + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Inzima le nto. Uninzi lwethu lufundiswe ukuba lungakhali, okanye lubonise abantwana indlela esivakalelwa ngayo. Kodwa thatha umoya uze ngokuzolileyo ubachazele indlela ovakalelwa ngayo. Baya kuqonda bhetele, baze bafunde kuwe indlela yokuhlangabezana noxinezeleko.", + "type": "template", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Ukulawula Uxinezeleko", - "type": "global", + "SourceText": "SHOW them you care", + "text": "BABONISE ukuba uyakhathala", + "type": "template", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Indlela yokulawula uxinezeleko", - "type": "global", + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Inzima nale! Uxinezeleko lubangela ukuba sinikele ingqalelo kwiziqu zethu. Kodwa abantwana bethu abafikisayo bayayidinga inkxaso yethu. Babuze indlela abaziva ngayo. Baphulaphule uze ubathuthuzele. Zama ukubawola okanye uthi ‘Ndiyaqonda’. Ingatshintsha yonke into.", + "type": "template", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Iibhajethi Yentsapho", - "type": "global", + "SourceText": "SEEK the positive", + "text": "KHANGELA izinto ezakhayo", + "type": "template", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Indlela yokubhajetha nokonga", - "type": "global", + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "Ngaba wena nomntwana wakho ofikisayo ningacinga ngezinto ezinokuba luncedo? Ngaba nobabini ningenza okuthile okwakhayo ukuze nisuse iingqondo zenu kuxinezeleko?", + "type": "template", "note": "" }, { - "SourceText": "Rules", - "text": "Imigaqo", - "type": "global", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "Ukuba yonke loo nto iyasilela, phefumla. Ungakwenza oku.", + "type": "template", "note": "" }, { - "SourceText": "How to create rules", - "text": "Indlela yokuyila imigaqo", - "type": "global", + "SourceText": "Looking after yourself matters.", + "text": "Ukuzinyamekela kubalulekile.", + "type": "template", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Imiphumo Ezolileyo", - "type": "global", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Kulunge kakhulu! Kuhle kakhulu ukuva ukuba ukwimeko entle namhlanje. Enjani ukumangalisa imvakalelo!", + "type": "template", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Indlela yokunika imiphumo ezolileyo", - "type": "global", + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Maxa wambi izinto zihamba kakuhle. Maxa wambi akubi njalo. Yaye maxa wambi asiye sazi ukuba masicinge ntoni... yaye oko kulunge ngokupheleleyo! Khumbula ukuba awukho wedwa.", + "type": "template", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ukucombulula Iingxaki", + "SourceText": "My Favourite Activities", + "text": "Imisebenzi Endiyithandayo", "type": "global", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Indlela yokusombulula iingxaki", + "SourceText": "All Activities", + "text": "Yonke Imisebenzi", "type": "global", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Ukhuseleko Lwabantwana Abafikisayo", + "SourceText": "Random Activity", + "text": "Umsebenzi Ongacwangciswanga", "type": "global", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Indlela yokugcina umntwana wakho ofikisayo ekhuselekile", + "SourceText": "This Week's Activity", + "text": "Umsebenzi wale veki", "type": "global", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Ukuhlangabezana Neengxaki", + "SourceText": "Chat Together", + "text": "Ncokolani Kunye", "type": "global", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Indlela yokuhlangabezana neengxaki", + "SourceText": "Do Together", + "text": "Yenzani Kunye", "type": "global", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ukubhiyoza kunye Namanyathelo Alandelayo", + "SourceText": "Your @global.parent_app Code", + "text": "Ikhowudi yakho ye@global.parent_app", "type": "global", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "How to support each other", - "text": "Indlela yokuxhasana", + "SourceText": "Terms & Conditions", + "text": "Imimmiselo nemiqathango", "type": "global", "note": "" }, { - "SourceText": "Home Practice", - "text": "Uqheliselo Lwasekhaya", + "SourceText": "Privacy Policy", + "text": "Umthetho Wabucala", "type": "global", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Thetha nge @global.home_practice", - "type": "global", - "note": "The string @global.home_practice should not be translated." - }, - { - "SourceText": "Home Practice Review", - "text": "Uhlalutyo Loqheliselo Lwasekhaya", + "SourceText": "Real-world ideas", + "text": "Iingcamango Zehlabathi lokwenene", "type": "global", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "Kule veki, masithethe ngokuba luhambe njani uqheliselo lwasekhaya.", + "SourceText": "Ideas", + "text": "Iingcamango", "type": "global", "note": "" }, { - "SourceText": "In my group", - "text": "Kwiqela lam", + "SourceText": "Ideas from other families...", + "text": "Amacebiso avela kwezinye iintsapho...", "type": "global", "note": "" }, { - "SourceText": "By myself", - "text": "Ngokwam", + "SourceText": "Challenges & solutions", + "text": "Imicelimingeni nezisombululo", "type": "global", "note": "" }, { - "SourceText": "awesome parent", - "text": "umzali ogqwesileyo", + "SourceText": "Submit", + "text": "Ngenisa", "type": "global", "note": "" }, { - "SourceText": "friends", - "text": "abahlobo", + "SourceText": "Find out more", + "text": "Fumana okungakumbi", "type": "global", "note": "" }, { - "SourceText": "New workshop ready tomorrow!", - "text": "Uqeqesha lwakho olutsha lwangomso sele lulungile!", + "SourceText": "Show me how", + "text": "Ndibonise ukuba kwenziwa njani", "type": "global", "note": "" }, { - "SourceText": "New workshop!", - "text": "Uqeqesho olutsha!", + "SourceText": "Tell me more!", + "text": "Ndixelele okungakumbi!", "type": "global", "note": "" }, { - "SourceText": "Workshop Reminder", - "text": "Isikhumbuzo Socweyo", + "SourceText": "Let's go!", + "text": "Masiye!", "type": "global", "note": "" }, { - "SourceText": "Nice progress!", - "text": "Inkqubela encomekayo!", + "SourceText": "Check it out!", + "text": "Yijonge!", "type": "global", "note": "" }, { - "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", - "text": "Ukhumbule ukuba namhlanje, umele uhlale phantsi uze uphole - ukuzinakekela sisakhono esibalulekileyo sokuba ngumzali.", + "SourceText": "Done", + "text": "Kugqityiwe", "type": "global", "note": "" }, { - "SourceText": "You are appreciated!", - "text": "Uxabisekile!", + "SourceText": "Next", + "text": "Elandelayo", "type": "global", "note": "" }, { - "SourceText": "Something Fun", - "text": "Into Eyonwabiswayo", + "SourceText": "Previous", + "text": "Edluleyo", "type": "global", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", + "SourceText": "Save", + "text": "Gcina", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_points this week", - "text": "I-@global.parent_points yakho kule veki", + "SourceText": "Start", + "text": "Qalisa", "type": "global", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", + "SourceText": "Skip", + "text": "Tsiba", "type": "global", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" + "note": "" }, { - "SourceText": "Home Practice Reminder", - "text": "Isikhumbuzo Soqheliselo Lwasekhaya", + "SourceText": "Continue", + "text": "Qhubekeka", "type": "global", "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Ukuze ucombulule olu celo-mngeni, Ndiya kuzama uku:", + "SourceText": "Finish with a song", + "text": "Gqibezela nge ngoma", "type": "global", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Ngaba ufuna ukuzama enye yezi zinto zilandelayo?", + "SourceText": "Goodbye!", + "text": "Sala kakuhle!", "type": "global", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "Ucelo-mngeni lwam aludweliswanga apha.", + "SourceText": "No gadget use the next day", + "text": "Makungasetyenziswa sixhobo kusuku olulandelayo", "type": "global", "note": "" }, { - "SourceText": "ParentApp", - "text": "I-app Yomzali", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Yima kangangemizuzu emi-5 kwinxalenye eyahlukileyo yegumbi", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshops", - "text": "Uqeqesho Lwangeveki", + "SourceText": "Write a letter of apology", + "text": "Bhala ileta yokuxolisa", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop", - "text": "Uqeqesho Lweveki", + "SourceText": "Cannot see friends the next day", + "text": "Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop Options", - "text": "Ukhetho Loqeqesho Lwangeveki", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "Aninakudlala ngefowuni emva kwedinala (okanye kwiyure elandelayo)", "type": "global", "note": "" }, { - "SourceText": "ParentPoints", - "text": "Iingongoma Zomzali", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Ixesha elithe chatha nabahlobo ngempelaveki (iyure e-1)", "type": "global", "note": "" }, { - "SourceText": "ParentPoint", - "text": "Ingongoma Yomzali", + "SourceText": "Cooking teen’s favourite meal", + "text": "Ukupheka ukutya okuthandwa ngumntu ofikisayo", "type": "global", "note": "" }, { - "SourceText": "Parent Library", - "text": "ILayibrari yoMzali", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Ixesha elithe chatha nefowuni emva kwedinala (imizuzu engama-30)", "type": "global", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Imiyalezo Yeveki ", + "SourceText": "Watching teen’s T.V. show together", + "text": "Ukubukela kunye uhlelo lomntu ofikisayo KUMABONAKUDE", "type": "global", "note": "" }, { - "SourceText": "Real-world ideas", - "text": "Iingcamango Zehlabathi lokwenene", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Ixesha elongezelelkileyo lenu nobabini ngeCawa (imizuzu engama-30)", "type": "global", "note": "" }, { - "SourceText": "Ideas", - "text": "Iingcamango", + "SourceText": "Take a deep breath and pause before responding", + "text": "Tsala umoya kakhulu uze unqumame ngaphambi kokuphendula", "type": "global", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Amacebiso avela kwezinye iintsapho...", + "SourceText": "Listen to your teen", + "text": "Mphulaphule umntwana wakho ofikisayo", "type": "global", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Imicelimingeni nezisombululo", + "SourceText": "Praise your teen for sharing", + "text": "Mncome umntwana wakho ngokubalisa", "type": "global", "note": "" }, { - "SourceText": "Submit", - "text": "Ngenisa", + "SourceText": "Use problem solving skills", + "text": "Sebenzisa ubuchule bokusombulula iingxaki", "type": "global", "note": "" }, { - "SourceText": "Find out more", - "text": "Fumana okungakumbi", + "SourceText": "Work out where you can get help", + "text": "Khangela apho unokufumana khona uncedo", "type": "global", "note": "" }, { - "SourceText": "Show me how", - "text": "Ndibonise ukuba kwenziwa njani", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "Ukubukela levidiyo kufuna ufikelelo lweintanethi. Ukulinganisela usetyenziso lwedatha, bukela okanye udawnlowude le vidiyo xa ukwi WiFi.", "type": "global", "note": "" }, { - "SourceText": "Tell me more!", - "text": "Ndixelele okungakumbi!", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "Ukutyelela ezi webhsayithi kufuna ufikelelo lwe-intanethii. Ukuze ulinganisele usetyenziso lwedatha, tyelela ezi webhsayithi xa ukwi WiFi.", "type": "global", "note": "" }, { - "SourceText": "Let's go!", - "text": "Masiye!", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "Ukuthumela lo myalezo kufuna ufikelelo lweintanethi. Ukuze ulinganisele usetyenziso lwedatha, thumela umyalezo xa ukwi WiFi.", "type": "global", "note": "" }, { - "SourceText": "Check it out!", - "text": "Yijonge!", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Ukugula okumandla okanye ukufa komhlobo okanye ilungu lentsapho", "type": "global", "note": "" }, { - "SourceText": "Done", - "text": "Kugqityiwe", + "SourceText": "Robbery", + "text": "Ukukhuthuzwa", "type": "global", "note": "" }, { - "SourceText": "Next", - "text": "Elandelayo", + "SourceText": "Flooding", + "text": "Izikhukula", "type": "global", "note": "" }, { - "SourceText": "Previous", - "text": "Edluleyo", + "SourceText": "Political violence", + "text": "Ugonyamelo lwezopolitiko", "type": "global", "note": "" }, { - "SourceText": "Save", - "text": "Gcina", + "SourceText": "Losing my job", + "text": "Ukuphelelwa ngumsebenzi", "type": "global", "note": "" }, { - "SourceText": "Start", - "text": "Qalisa", + "SourceText": "Pandemic (COVID-19)", + "text": "Ubhubhani (lwe-COVID-19)", "type": "global", "note": "" }, { - "SourceText": "Skip", - "text": "Tsiba", + "SourceText": "ParentApp", + "text": "I-app Yomzali", "type": "global", "note": "" }, { - "SourceText": "Continue", - "text": "Qhubekeka", + "SourceText": "Weekly Workshops", + "text": "Uqeqesho Lwangeveki", "type": "global", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Gqibezela nge ngoma", + "SourceText": "Weekly Workshop", + "text": "Uqeqesho Lweveki", "type": "global", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Sala kakuhle!", + "SourceText": "Weekly Workshop Options", + "text": "Ukhetho Loqeqesho Lwangeveki", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_app Code", - "text": "Ikhowudi yakho ye@global.parent_app", + "SourceText": "ParentPoints", + "text": "Iingongoma Zomzali", "type": "global", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Terms & Conditions", - "text": "Imimmiselo nemiqathango", + "SourceText": "ParentPoint", + "text": "Ingongoma Yomzali", "type": "global", "note": "" }, { - "SourceText": "Privacy Policy", - "text": "Umthetho Wabucala", + "SourceText": "Parent Library", + "text": "ILayibrari yoMzali", "type": "global", "note": "" }, { - "SourceText": "Make me smile", - "text": "Ndenze ndincume", + "SourceText": "In-Week Messages", + "text": "Imiyalezo Yeveki ", "type": "global", "note": "" }, { - "SourceText": "Get me going", - "text": "Ndenze ndiqhubeke", + "SourceText": "To solve this challenge, I will try to:", + "text": "Ukuze ucombulule olu celo-mngeni, Ndiya kuzama uku:", "type": "global", "note": "" }, { - "SourceText": "My Favourite Relaxes", - "text": "Ukuphola Okuthandayo", + "SourceText": "Do you want to try one of the following things?", + "text": "Ngaba ufuna ukuzama enye yezi zinto zilandelayo?", "type": "global", "note": "" }, { - "SourceText": "All Relaxes", - "text": "Konke Ukuphola", + "SourceText": "My challenge is not listed here.", + "text": "Ucelo-mngeni lwam aludweliswanga apha.", "type": "global", "note": "" }, { - "SourceText": "Random Relax", - "text": "Ukuphumla Ngokungacwangciswanga", + "SourceText": "New workshop ready tomorrow!", + "text": "Uqeqesha lwakho olutsha lwangomso sele lulungile!", "type": "global", "note": "" }, { - "SourceText": "This Week's Relax", - "text": "Ukuphola Kwale Veki", + "SourceText": "New workshop!", + "text": "Uqeqesho olutsha!", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (1-2 minutes)", - "text": "Phulaphula uze Uphole (imizuzu 1-2)", + "SourceText": "Workshop Reminder", + "text": "Isikhumbuzo Socweyo", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (3-5 minutes)", - "text": "Phulaphula uze Uphole (imizuzu 3-5)", + "SourceText": "Nice progress!", + "text": "Inkqubela encomekayo!", "type": "global", "note": "" }, { - "SourceText": "Do & Relax (5-10 minutes)", - "text": "Yenza uze Uphole (imizuzu 5-10)", + "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", + "text": "Ukhumbule ukuba namhlanje, umele uhlale phantsi uze uphole - ukuzinakekela sisakhono esibalulekileyo sokuba ngumzali.", "type": "global", "note": "" }, { - "SourceText": "My Favourite Activities", - "text": "Imisebenzi Endiyithandayo", + "SourceText": "You are appreciated!", + "text": "Uxabisekile!", "type": "global", "note": "" }, { - "SourceText": "All Activities", - "text": "Yonke Imisebenzi", + "SourceText": "Something Fun", + "text": "Into Eyonwabiswayo", "type": "global", "note": "" }, { - "SourceText": "Random Activity", - "text": "Umsebenzi Ongacwangciswanga", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Nantsi into emnandi onokuyenza nomntwana wakho ofikisayo!", "type": "global", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Umsebenzi wale veki", + "SourceText": "Your @global.parent_points this week", + "text": "I-@global.parent_points yakho kule veki", "type": "global", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Chat Together", - "text": "Ncokolani Kunye", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Molo @fields.user_name! Enkosi ngokusebenzisa i-@global.parent_app nangokuzimisela ekubeni ngumzali. \n\nKhumbula ukucofa i@global.parent_points yakho!", "type": "global", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" }, { - "SourceText": "Do Together", - "text": "Yenzani Kunye", + "SourceText": "Home Practice Reminder", + "text": "Isikhumbuzo Soqheliselo Lwasekhaya", "type": "global", "note": "" }, { - "SourceText": "Tap and type", - "text": "Cofa uze uchwetheze", + "SourceText": "COVID", + "text": "I-COVID", "type": "global", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Cofa uze ukhethe", + "SourceText": "Make me smile", + "text": "Ndenze ndincume", "type": "global", "note": "" }, { - "SourceText": "Type your own", - "text": "Chwetheza eyakho", + "SourceText": "Get me going", + "text": "Ndenze ndiqhubeke", "type": "global", "note": "" }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Ndiye ndakuqonda oku. Ungawubonisi lo myalezo kwakhona.", + "SourceText": "My Favourite Relaxes", + "text": "Ukuphola Okuthandayo", "type": "global", "note": "" }, { - "SourceText": "Walk to the shops", - "text": "Ukolula iinyawo niye ezivenkileni", + "SourceText": "All Relaxes", + "text": "Konke Ukuphola", "type": "global", "note": "" }, { - "SourceText": "Get water together", - "text": "Yiyani kukha amanzi kunye", + "SourceText": "Random Relax", + "text": "Ukuphumla Ngokungacwangciswanga", "type": "global", "note": "" }, { - "SourceText": "Do a chore together", - "text": "Yenzani umsebenzi kunye", + "SourceText": "This Week's Relax", + "text": "Ukuphola Kwale Veki", "type": "global", "note": "" }, { - "SourceText": "Prepare dinner", - "text": "Lungisani isidlo", + "SourceText": "Listen & Relax (1-2 minutes)", + "text": "Phulaphula uze Uphole (imizuzu 1-2)", "type": "global", "note": "" }, { - "SourceText": "Eat breakfast/lunch/dinner", - "text": "Yityani isidlo sakusasa/esasemini/idinala", + "SourceText": "Listen & Relax (3-5 minutes)", + "text": "Phulaphula uze Uphole (imizuzu 3-5)", "type": "global", "note": "" }, { - "SourceText": "Have tea after school", - "text": "Phungani iti ukuphuma kwesikolo", + "SourceText": "Do & Relax (5-10 minutes)", + "text": "Yenza uze Uphole (imizuzu 5-10)", "type": "global", "note": "" }, { - "SourceText": "Watch a T.V. show", - "text": "Bukelani inkqubo kaMABONAKUDE", + "SourceText": "At home", + "text": "Ekhaya", "type": "global", "note": "" }, - { - "SourceText": "Review homework", - "text": "Hlolani umsebenzi wesikolo", + { + "SourceText": "Buy things we can sell", + "text": "Ukuthenga izinto esinokuzithengisa", "type": "global", "note": "" }, { - "SourceText": "Chat before bedtime", - "text": "Ncokolani ngaphambi kokulala", + "SourceText": "At a bank", + "text": "Ebhankini", "type": "global", "note": "" }, { - "SourceText": "Play a game/sport", - "text": "Dlalani umdlalo", + "SourceText": "In a savings group", + "text": "Kumaqela okonga", "type": "global", "note": "" }, @@ -9282,152 +8670,134 @@ "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Ukugula okumandla okanye ukufa komhlobo okanye ilungu lentsapho", - "type": "global", - "note": "" - }, - { - "SourceText": "Robbery", - "text": "Ukukhuthuzwa", - "type": "global", - "note": "" - }, - { - "SourceText": "Flooding", - "text": "Izikhukula", - "type": "global", - "note": "" - }, - { - "SourceText": "Political violence", - "text": "Ugonyamelo lwezopolitiko", + "SourceText": "Walk to the shops", + "text": "Ukolula iinyawo niye ezivenkileni", "type": "global", "note": "" }, { - "SourceText": "Losing my job", - "text": "Ukuphelelwa ngumsebenzi", + "SourceText": "Get water together", + "text": "Yiyani kukha amanzi kunye", "type": "global", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Ubhubhani (lwe-COVID-19)", + "SourceText": "Do a chore together", + "text": "Yenzani umsebenzi kunye", "type": "global", "note": "" }, { - "SourceText": "At home", - "text": "Ekhaya", + "SourceText": "Prepare dinner", + "text": "Lungisani isidlo", "type": "global", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Ukuthenga izinto esinokuzithengisa", + "SourceText": "Eat breakfast/lunch/dinner", + "text": "Yityani isidlo sakusasa/esasemini/idinala", "type": "global", "note": "" }, { - "SourceText": "At a bank", - "text": "Ebhankini", + "SourceText": "Have tea after school", + "text": "Phungani iti ukuphuma kwesikolo", "type": "global", "note": "" }, { - "SourceText": "In a savings group", - "text": "Kumaqela okonga", + "SourceText": "Watch a T.V. show", + "text": "Bukelani inkqubo kaMABONAKUDE", "type": "global", "note": "" }, { - "SourceText": "No gadget use the next day", - "text": "Makungasetyenziswa sixhobo kusuku olulandelayo", + "SourceText": "Review homework", + "text": "Hlolani umsebenzi wesikolo", "type": "global", "note": "" }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Yima kangangemizuzu emi-5 kwinxalenye eyahlukileyo yegumbi", + "SourceText": "Chat before bedtime", + "text": "Ncokolani ngaphambi kokulala", "type": "global", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Bhala ileta yokuxolisa", + "SourceText": "Play a game/sport", + "text": "Dlalani umdlalo", "type": "global", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "Akakwazi ukubona abahlobo bakhe ngosuku olulandelayo", + "SourceText": "Tap and type", + "text": "Cofa uze uchwetheze", "type": "global", "note": "" }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "Aninakudlala ngefowuni emva kwedinala (okanye kwiyure elandelayo)", + "SourceText": "Tap and choose", + "text": "Cofa uze ukhethe", "type": "global", "note": "" }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Ixesha elithe chatha nabahlobo ngempelaveki (iyure e-1)", + "SourceText": "Type your own", + "text": "Chwetheza eyakho", "type": "global", "note": "" }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Ukupheka ukutya okuthandwa ngumntu ofikisayo", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Ndiye ndakuqonda oku. Ungawubonisi lo myalezo kwakhona.", "type": "global", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Ixesha elithe chatha nefowuni emva kwedinala (imizuzu engama-30)", + "SourceText": "Home Practice", + "text": "Uqheliselo Lwasekhaya", "type": "global", "note": "" }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Ukubukela kunye uhlelo lomntu ofikisayo KUMABONAKUDE", + "SourceText": "Talk about @global.home_practice", + "text": "Thetha nge @global.home_practice", "type": "global", - "note": "" + "note": "The string @global.home_practice should not be translated." }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Ixesha elongezelelkileyo lenu nobabini ngeCawa (imizuzu engama-30)", + "SourceText": "Home Practice Review", + "text": "Uhlalutyo Loqheliselo Lwasekhaya", "type": "global", "note": "" }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Tsala umoya kakhulu uze unqumame ngaphambi kokuphendula", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "Kule veki, masithethe ngokuba luhambe njani uqheliselo lwasekhaya.", "type": "global", "note": "" }, { - "SourceText": "Listen to your teen", - "text": "Mphulaphule umntwana wakho ofikisayo", + "SourceText": "In my group", + "text": "Kwiqela lam", "type": "global", "note": "" }, { - "SourceText": "Praise your teen for sharing", - "text": "Mncome umntwana wakho ngokubalisa", + "SourceText": "By myself", + "text": "Ngokwam", "type": "global", "note": "" }, { - "SourceText": "Use problem solving skills", - "text": "Sebenzisa ubuchule bokusombulula iingxaki", + "SourceText": "awesome parent", + "text": "umzali ogqwesileyo", "type": "global", "note": "" }, { - "SourceText": "Work out where you can get help", - "text": "Khangela apho unokufumana khona uncedo", + "SourceText": "friends", + "text": "abahlobo", "type": "global", "note": "" }, @@ -9437,36 +8807,6 @@ "type": "tour", "note": "The string @global.parent_app should not be translated." }, - { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Wamkelekile ku @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Uyakufanelekela ukuziva kamnandi, uze ube nolwalamano oluhle nentsapho yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app uya kukuxhasa wena nentsapho yakho ngeendlela ezintathu:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" - }, - { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Eli qhosha likhulu liya kukusa kwi @global.weekly_workshopsyakho

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kanye ngeveki uqeqesho olutsha luya kukulindela - ngalo lonke ixesha unikela ingqalelo kubugcisa obahlukileyo bokuba ngumzali. Yicofe ukuze uqalise uqeqesho lwakho lokuqala!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Iqhosha elisisangqa livela xa i @global.weekly_workshop entsha ilungele ukuba uyenze.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Cofa eli qhosha likhulu ukuze uye kufika kwiskrini sakho se- @global.parent_points.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Khangela impumelelo yakho ekuzinyamekeleni nasebuzalini.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona inkqubela yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bhiyozela izinto ozifezileyo ngosuku!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Noba uqale njani, isibakala sokuba ukhona sibonisa ukuba uyakhathala.

                                                                                                                                                                                  ", - "type": "tour", - "note": "" - }, { "SourceText": "Go to the @global.weekly_workshops", "text": "Yiya kwi @global.weekly_workshops", @@ -9528,626 +8868,596 @@ "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Wamkelekile kwiApp Yomzali. Cofa apha ukuze uqalise uhambo lwakho!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Ndiyathemba uziva bhetele. Ukuba ngumzali kunzima, kodwa awukashiywa lixesha lokuphinda uqalise nomntwana wakho ofikisayo. Uqeqesho lwakho lokuba ngumzali lulinde wena! Cofa apha ukuze uqalise uhambo lwakho lweApp Yomzali!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukukunceda ulawule uxinezeleko lokuba ngumzali.", + "SourceText": "Reflect on the positive", + "text": "Cinga ngezinto ezakhayo", "type": "data_list", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Molo kwakhona! Awukashiywa lixesha lokusebenzisa i-App yoMzali uze ufumane inkxaso efanele wena yokuba ngumzali. Kutheni ungakhe uyizame xa usiya emsebenzini okanye xa usapheke ukutya? Izigidi zabazali ziye zafumanisa izixhobo zethu ziluncedo.", + "SourceText": "Check-in chat", + "text": "Ngena kwincoko", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukukunceda ulawule isimilo somntwana wakho ofikisayo.", + "SourceText": "Dream Travel", + "text": "UHambo Oluliphupha", "type": "data_list", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Molo! Ngaba yonke into ihamba KAKUHLE? Kubonakala ngathi khange uyivule iApp Yomzali kutshanje. Kutheni ungakhe uyizame? Izigidi zabazali zIye zafumanisa ezi zixhobo ziluncedo. Sisekhona ukuze sikuxhase.", + "SourceText": "Famous Party", + "text": "Ipati Edumileyo", "type": "data_list", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "I-App yoMzali iyakukhumbuza! Kuninzi omele ukuhlole. Sisekhona ukuze sikuxhase.", + "SourceText": "Two truths, one lie", + "text": "Iinyaniso ezimbini, nobuxoki obunye", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali - sebenzisa iApp yoMzali ukulungiselela umntwana wakho ofikisayo ukuba aphumelele ebomini.", + "SourceText": "Time Machine", + "text": "Umatshini Wexesha", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa iApp yoMzali ukuze uphinde usondelelane nomntwana wakho ofikisayo kwakhona!", + "SourceText": "Superpowers", + "text": "Amandla Angaphaya Kwaqhelekileyo", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Molo mzali ogqwesileyo, khumbula ukuzinakekela nawe - izokunceda KWAYE nosapho lwakho! Fumana iingcebiso nezingakumbi Kwi-app Yomzali.", + "SourceText": "Just a friendly chat", + "text": "Incoko yobuhlobo", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Molo mzali ogqwesileyo! Khumbula, ungafumana iingcebiso eziluncedo Kwi-app Yomzali.", + "SourceText": "The Interrupter", + "text": "Umphazamisi", "type": "data_list", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Umyalezo omtsha ovela kwi-PLH", + "SourceText": "Three options", + "text": "Ukhetho oluthathu", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Molo mzali ogqwesileyo! I-app Yomzali ilapha ukukuxhasa. Yijonge!", + "SourceText": "Yes, No or Maybe", + "text": "Ewe, Hayi okanye Mhlawumbi", "type": "data_list", "note": "" }, { - "SourceText": "Start", - "text": "Qalisa", + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Umdlalo weNkumbulo - “NgoMgqibelo...”", "type": "data_list", "note": "" }, { - "SourceText": "Continue", - "text": "Qhubeka", + "SourceText": "Make up a story", + "text": "Yenza Ibali", "type": "data_list", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Ukwamkela Nokuzinyamekela", + "SourceText": "Co-chef", + "text": "Umpheki Ongumncedisi", "type": "data_list", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "Uqeqesho **lokwamkela Nokuzinyamekela**", + "SourceText": "Dance moves", + "text": "Iintshukumo zomdaniso", "type": "data_list", "note": "" }, { - "SourceText": "Self-Care", - "text": "Ukuzinyamekela", + "SourceText": "Mirror", + "text": "Isipili", "type": "data_list", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Indlela yokuzikhathalela", + "SourceText": "What's new?", + "text": "Yintoni entsha?", "type": "data_list", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Ixesha Lenu Nobabini", + "SourceText": "Get active!", + "text": "Xakeka!", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "Ucweyo **lwexesha lenu nobabini**", + "SourceText": "Name that tune", + "text": "Chaza laa ngoma", "type": "data_list", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Indlela yokuchitha ixesha lenu nobabini", + "SourceText": "Pass the snap", + "text": "Dlulisa umfanekiso", "type": "data_list", "note": "" }, { - "SourceText": "Praise", - "text": "Ncoma", + "SourceText": "Family workout", + "text": "Umthambo wosapho", "type": "data_list", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "Uqeqesho **lokuzincoma**", + "SourceText": "Make housework fun", + "text": "Ukwenza umsebenzi wekhaya ube mnandi", "type": "data_list", "note": "" }, { - "SourceText": "How to praise", - "text": "Indlela yokuncoma", + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Imisebenzi yasekhaya ayikhomnandi... okanye? Ningabenza babe ngumdlalo!", "type": "data_list", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Imiyalelo Eyakhayo", + "SourceText": "What are you doing?", + "text": "Wenza ntoni?", "type": "data_list", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "Uqeqesho **Lwemiyalelo Eyakhayo**", + "SourceText": "Here is a fun game you can do with your family!", + "text": "Nantsi imidlalo eyonwabiswayo onoyenza nosapho lwakho!", "type": "data_list", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Indlela yokunika imiyalelo eyakhayo", + "SourceText": "Crazy chicken", + "text": "Inkukhu ephambeneyo", "type": "data_list", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Ukulawula Uxinezeleko", + "SourceText": "Help yourself cope", + "text": "Zincede umelane nazo", "type": "data_list", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "Uqeqesho **lokulawula Uxinezeleko**", + "SourceText": "Help your teen cope", + "text": "Nceda umntwana wakho amelane nazo", "type": "data_list", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Indlela yokulawula uxinezeleko", + "SourceText": "Practical steps", + "text": "Amanyathelo asebenzayo", "type": "data_list", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Iibhajethi Yentsapho", + "SourceText": "How to talk to my teen", + "text": "Ndithatha njani nomntwana wam", "type": "data_list", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "Uqeqesho **Lwebhajethi Yentsapho**", + "SourceText": "Steps to deal with news", + "text": "Amanyathelo okujongana neendaba", "type": "data_list", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Indlela yokubhajetha nokonga", + "SourceText": "How can I help my teen choose well?", + "text": "Ndingamnceda njani umntwana wam ofikisayo ukuba akhethe kakuhle?", "type": "data_list", "note": "" }, { - "SourceText": "Rules", - "text": "Imigaqo", + "SourceText": "What influences teen decisions?", + "text": "Yintoni ephembelela izigqibo zomntwana ofikisayo?", "type": "data_list", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "Uqeqesho **Umthetho**", + "SourceText": "How does my teen feel?", + "text": "Uziva njani umntwana wam?", "type": "data_list", "note": "" }, { - "SourceText": "How to create rules", - "text": "Indlela yokuyila imigaqo", + "SourceText": "Changing negative to positive", + "text": "Ukutshintsha okungalunganga ukuya kokulungileyo", "type": "data_list", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Imiphumo Ezolileyo", + "SourceText": "Relax", + "text": "Phola", "type": "data_list", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "Uqeqesho **Imiphumo Ezolileyo**", + "SourceText": "**Relax** @global.parent_point", + "text": "**Phola** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to give calm consequences", - "text": "Indlela yokunika imiphumo ezolileyo", + "SourceText": "Doing a relaxation activity", + "text": "Ukwenza umsebenzi wokuzipholisa", "type": "data_list", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ukucombulula Iingxaki", + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye uphola, cofa u @global.parent_point ubhiyozele impulelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "**Problem Solving** workshop", - "text": "Uqeqesho **Ukucombulula Iingxaki**", + "SourceText": "Treat yourself well", + "text": "Zinonophele kakuhle", "type": "data_list", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Indlela yokusombulula iingxaki", + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "**Zinonophele kakuhle** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Teen Safety", - "text": "Ukhuseleko Lwabantwana Abafikisayo", + "SourceText": "Doing something they like for themselves", + "text": "Bazenzela into abayithandayo", "type": "data_list", "note": "" }, { - "SourceText": "**Teen Safety** workshop", - "text": "Uqeqesho **Ukhuseleko Lwabantwana Abafikisayo**", + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to keep your teen safe", - "text": "Indlela yokugcina umntwana wakho ofikisayo ekhuselekile", + "SourceText": "**Praise yourself** @global.parent_point", + "text": "**Zincome** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Dealing with Crisis", - "text": "Ukuhlangabezana Neengxaki", + "SourceText": "Praising themselves", + "text": "Bayazincoma", "type": "data_list", "note": "" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "Uqeqesho **Ukuhlangabezana Neengxaki**", + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to deal with crisis", - "text": "Indlela yokuhlangabezana neengxaki", + "SourceText": "One-on-one time", + "text": "Ixesha lenu nobabini", "type": "data_list", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ukubhiyoza kunye namaNyathelo Alandelayo", + "SourceText": "**One-on-one time** @global.parent_point", + "text": "**Ixesha lenu nobabini** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "Uqeqesho **Lokubhiyoza kunye Namanyathelo Alandelayo**", + "SourceText": "Spending time with their teen", + "text": "Ukuchitha ixesha nabantwana babo abafikisayo", "type": "data_list", "note": "" }, { - "SourceText": "How to support each other", - "text": "Indlela yokuxhasana", + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Xesha ngalinye nichitha ixesha lenu nobabini cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Quick pause", - "text": "Ukunqumama okukhawulezileyo", + "SourceText": "Praise your teen", + "text": "Mncome umntwana wakho ofikisayo", "type": "data_list", "note": "" }, { - "SourceText": "Power of three", - "text": "Amandla abantu abathathu", + "SourceText": "**Praise your teen** @global.parent_point", + "text": "**Mncome umntwana wakho ofikisayo** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "One thing today", - "text": "Into enye namhlanje", + "SourceText": "Praising their teen when they did positive thing", + "text": "Ukuncoma abantwana babo abafikisayo xabenze into eyokhayo", "type": "data_list", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Phefumla kathathu", + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Xesha ngalinye uncoma umntwana wakho ofikisayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "In and out", - "text": "Tsala uze ukhuphe", + "SourceText": "Get positive", + "text": "Yiba nethemba", "type": "data_list", "note": "" }, { - "SourceText": "Think about today", - "text": "Cinga ngemini yanamhlanje", + "SourceText": "**Get positive** @global.parent_point", + "text": "**Yiba nethemba** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Pause to respond", - "text": "Nqumama ukuze uphendule", + "SourceText": "Giving their teen a positive instruction", + "text": "Ukunika imiyalelo eyakhayo kwabantwana babo abafikisayo", "type": "data_list", "note": "" }, { - "SourceText": "Small things", - "text": "Izinto ezincinci", + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye unikeza imiyalelo yakhayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Body scan", - "text": "Iskena somzimba", + "SourceText": "Breathe not yell", + "text": "Thatha umoya ungangxoli", "type": "data_list", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Yiva umhlaba", + "SourceText": "**Breathe not yell** @global.parent_point", + "text": "**Thatha umoya ungangxoli** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Counting sounds", - "text": "Ukubala izandi", + "SourceText": "Taking a pause before responding", + "text": "Nqumama phambi koba uphendule", "type": "data_list", "note": "" }, { - "SourceText": "Feel your feeling", - "text": "Yiva indlela ovakalelwa ngayo", + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye unqumama phambi koba uphendule, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Your song", - "text": "Ingoma yakho", + "SourceText": "Good money choice", + "text": "Ukhetho olululo lwemali", "type": "data_list", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Umhlaba nombulelo", + "SourceText": "**Good money choice** @global.parent_point", + "text": "**Ukhetho olululo lwemali** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Notice how you feel", - "text": "Phawula indlela ovakalelwa ngayo", + "SourceText": "Keeping the budget", + "text": "Ukugcina uhlahlo lwabiwo-mali", "type": "data_list", "note": "" }, { - "SourceText": "Pause power", - "text": "Amandla onqumamo", + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye owenza ukhetho olululo ngokweentswelo, iimfuno, ukonga, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Taking care of yourself", - "text": "Ukuzinyamekela", + "SourceText": "Calm consequence", + "text": "Imiphumo Ezolileyo", "type": "data_list", "note": "" }, { - "SourceText": "Take a pause", - "text": "Nqumama", + "SourceText": "**Calm consequence** @global.parent_point", + "text": "**Imiphumo Ezolileyo** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Physical activity", - "text": "Umsebenzi womzimba", + "SourceText": "Giving their teen a consequence in a calm way", + "text": "Indlela yokunika abantwana abafikisayo imiphumo ezolileyo", "type": "data_list", "note": "" }, { - "SourceText": "List of things", - "text": "Uluhlu lwezinto", + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye unikeza imiphumo ezolileyo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Connect", - "text": "Qhagamshela", + "SourceText": "Safe", + "text": "Ikhuselekile", "type": "data_list", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Thintela umsindo", + "SourceText": "**Safe** @global.parent_point", + "text": "**Ikhuselekile** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Angry? Take a break", - "text": "Unomsindo? Hlaba ikhefu", + "SourceText": "Planning or keeping a family safety plan", + "text": "Ukucwangcisa okanye ukugcina isicwangciso sokhuseleko losapho", "type": "data_list", "note": "" }, { - "SourceText": "Reflect on the positive", - "text": "Cinga ngezinto ezakhayo", + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Ixesha ngalinye wenza into yokukhusela umntwana wakho ofikisayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Check-in chat", - "text": "Ngena kwincoko", + "SourceText": "Did it? Tap it!", + "text": "Uyenzile? Uyicofile!", "type": "data_list", "note": "" }, { - "SourceText": "Dream Travel", - "text": "UHambo Oluliphupha", + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Isemagqabini! Wenze kakuhle ngokuchitha ixesha kunye. Ibeka isiseko solwalamano olusemagqabini nomntwana wakho ofikisayo!", "type": "data_list", "note": "" }, { - "SourceText": "Famous Party", - "text": "Ipati Edumileyo", + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Wenza kakuhle! Ixesha lenu nobabini libonisa umntwana wakho ofikisayo ukuba ubalulekile kuwe. Yenza umahluko wokwenene!", "type": "data_list", "note": "" }, { - "SourceText": "Two truths, one lie", - "text": "Iinyaniso ezimbini, nobuxoki obunye", + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Kuhle gqitha! Ukuchitha ixesha nomntwana wakho ofikisayo kunokwenza umntwana wakho ofikisayo akulungele ngakumbi ukunceda ngokufuthi. Uqhuba kakuhle!", "type": "data_list", "note": "" }, { - "SourceText": "Time Machine", - "text": "Umatshini Wexesha", + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "Usebenzile! Ixesha lenu nobabini nomntwana wakho ofikisayo ithuba lokufunda okungakumbi ngezinto anomdla kuzo nakwazi ukuzenza umntwana wakho ofikisayo. Ungu ngqa phambili!", "type": "data_list", "note": "" }, { - "SourceText": "Superpowers", - "text": "Amandla Angaphaya Kwaqhelekileyo", + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Umsebenzi osemagqabini! Ukuchitha ixesha kunye kunceda ekwakheni ulwalamano oluluqilima nolwakhayo phakathi kwakho nomntwana wakho ofikisayo.", "type": "data_list", "note": "" }, { - "SourceText": "Just a friendly chat", - "text": "Incoko yobuhlobo", + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Maxawambi kuza kuba lula yaye kube mnandi ukuchitha ixesha nabantwana bakho abafikisayo yaye maxawambi iya kuba lucelo-mngeni. Ukuchitha ixesha kunye kuya kuphucula kakhulu ulwalamano lwakho; wenze kakuhle ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "The Interrupter", - "text": "Umphazamisi", + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Siyaxolisa ukuva ukuba kwakunzima ukuchitha ixesha kunye nomntwana wakho ofikisayo. Sonke siba nayo imiceli-mngeni maxa wambi. Yiba nomonde kwisiqu sakho nomntwana wakho ofikisayo -izinto ziza kuba bhetele. Usebenzile ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "Three options", - "text": "Ukhetho oluthathu", + "SourceText": "Great to hear it went well; you are a star!", + "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle; ungungqa phambili!", "type": "data_list", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "Ewe, Hayi okanye Mhlawumbi", + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Kuhle gqitha! Uyawafanelekela onke amaxesha okonwaba!", "type": "data_list", "note": "" }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Umdlalo weNkumbulo - “NgoMgqibelo...”", + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Siyaxolisa ngokuba oko kube nzima kuwe. Ungungqa phambili ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "Make up a story", - "text": "Yenza Ibali", + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Kuyamangalisa ukuva ukuba le nto ikwenze waziva kamnandi! Qhubeka nomsebenzi omhle. Umntwana wakho ofikisayo ufunda lukhulu kuwe!", "type": "data_list", "note": "" }, { - "SourceText": "Co-chef", - "text": "Umpheki Ongumncedisi", + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Ukuthetha ngendlela esiziva ngayo kunokuba nzima ekuqaleni, kodwa wena nomntwana wakho ofikisayo niya kuqhelana nako. Qhubeka uzama, yaye uya kubona iziphumo ezincomekayo!", "type": "data_list", "note": "" }, { - "SourceText": "Dance moves", - "text": "Iintshukumo zomdaniso", + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle. Ukuthetha ngezimali zenu kunye eneneni kwenza intsapho yenu yomelele!", "type": "data_list", "note": "" }, { - "SourceText": "Mirror", - "text": "Isipili", + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Siyaxolisa ngokuba oko kube nzima kuwe. Usebenzile ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "What's new?", - "text": "Yintoni entsha?", + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle! Imigaqo eqhubekayo inceda ekwenzeni abantwana bethu abafikisayo bazive benqabisekile, kwaye ibagcine bekhuselekile!", "type": "data_list", "note": "" }, { - "SourceText": "Get active!", - "text": "Xakeka!", + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Uxolo ukuba oku bekunzima. Ukuyila imigaqo kunye kufuna uqheliselo kodwa oko kufanelekile!", "type": "data_list", "note": "" }, { - "SourceText": "Name that tune", - "text": "Chaza laa ngoma", + "SourceText": "Great to hear it went well!", + "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle!", "type": "data_list", "note": "" }, { - "SourceText": "Pass the snap", - "text": "Dlulisa umfanekiso", + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Siyaxolisa ngokuba oko kube nzima. Ukuyila kunye iziphumo kuya kwenza umntwana wakho ofikisayo afune ukulandela imigaqo rhoqo!", "type": "data_list", "note": "" }, { - "SourceText": "Family workout", - "text": "Umthambo wosapho", + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Uxolo ukuba oko kube nzima. Maxa wambi kufuneka siqhubeke sizama. Fumana ixesha xa wena nomntwana wakho ofikisayo nizolileyo nize nizame ukuthetha ngengxaki kwakhona nisebenzisa amanyathelo amane okucombulula iingxaki. Nikunye ningafeza lukhulu!", "type": "data_list", "note": "" }, { - "SourceText": "Make housework fun", - "text": "Ukwenza umsebenzi wekhaya ube mnandi", + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Ukuthetha ngemingcipheko nokhetho lwenkxaso kuthintela iingxaki kwaye kunceda ngokwenene ekugcineni umntwana wakho ofikisayo ekhuselekile.", "type": "data_list", "note": "" }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Imisebenzi yasekhaya ayikhomnandi... okanye? Ningabenza babe ngumdlalo!", + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Uxolo ukuba oko kube nzima. Ukuceba imingcipheko kunye neendawo zokufumana inkxaso kungalucelomngeni kunye neemvakalelo. Kunceda ngokwenene ukugcina umntwana wakho ofikisayo ekhuselekile!", "type": "data_list", "note": "" }, { - "SourceText": "What are you doing?", - "text": "Wenza ntoni?", + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Uxolo ukuba oku akukhange kuhambe kakuhle. Oku akulula ukukwenza. Zama ukuhlala phantsi uze uncokole nomntwana wakho ofikisayo kwakhona. Okunye, ngaba ukho umntu othenjwayo ngumntwana wakho ofikisayo onokuba kunye nawe xa uncokola nomntwana wakho ofikisayo?", "type": "data_list", "note": "" }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Nantsi imidlalo eyonwabiswayo onoyenza nosapho lwakho!", + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle! Ukunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole.", "type": "data_list", "note": "" }, { - "SourceText": "Crazy chicken", - "text": "Inkukhu ephambeneyo", + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Xa umntwana wakho ofikisayo efunda ukusombulula iingxaki, unokusebenzisa eso sakhono ubomi bakhe bonke. Sisipho sokwenene!", "type": "data_list", "note": "" }, @@ -10290,446 +9600,560 @@ "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "How to talk to my teen", - "text": "Ndithatha njani nomntwana wam", + "SourceText": "Quick pause", + "text": "Ukunqumama okukhawulezileyo", "type": "data_list", "note": "" }, { - "SourceText": "Steps to deal with news", - "text": "Amanyathelo okujongana neendaba", + "SourceText": "Power of three", + "text": "Amandla abantu abathathu", "type": "data_list", "note": "" }, { - "SourceText": "How can I help my teen choose well?", - "text": "Ndingamnceda njani umntwana wam ofikisayo ukuba akhethe kakuhle?", + "SourceText": "One thing today", + "text": "Into enye namhlanje", "type": "data_list", "note": "" }, { - "SourceText": "What influences teen decisions?", - "text": "Yintoni ephembelela izigqibo zomntwana ofikisayo?", + "SourceText": "Breathe to three", + "text": "Phefumla kathathu", "type": "data_list", "note": "" }, { - "SourceText": "How does my teen feel?", - "text": "Uziva njani umntwana wam?", + "SourceText": "In and out", + "text": "Tsala uze ukhuphe", "type": "data_list", "note": "" }, { - "SourceText": "Changing negative to positive", - "text": "Ukutshintsha okungalunganga ukuya kokulungileyo", + "SourceText": "Think about today", + "text": "Cinga ngemini yanamhlanje", "type": "data_list", "note": "" }, { - "SourceText": "Help yourself cope", - "text": "Zincede umelane nazo", + "SourceText": "Pause to respond", + "text": "Nqumama ukuze uphendule", "type": "data_list", "note": "" }, { - "SourceText": "Help your teen cope", - "text": "Nceda umntwana wakho amelane nazo", + "SourceText": "Small things", + "text": "Izinto ezincinci", "type": "data_list", "note": "" }, { - "SourceText": "Practical steps", - "text": "Amanyathelo asebenzayo", + "SourceText": "Body scan", + "text": "Iskena somzimba", "type": "data_list", "note": "" }, { - "SourceText": "Relax", - "text": "Phola", + "SourceText": "Feel the ground", + "text": "Yiva umhlaba", "type": "data_list", "note": "" }, { - "SourceText": "**Relax** @global.parent_point", - "text": "**Phola** @global.parent_point", + "SourceText": "Counting sounds", + "text": "Ukubala izandi", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Doing a relaxation activity", - "text": "Ukwenza umsebenzi wokuzipholisa", + "SourceText": "Feel your feeling", + "text": "Yiva indlela ovakalelwa ngayo", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye uphola, cofa u @global.parent_point ubhiyozele impulelo yakho!", + "SourceText": "Your song", + "text": "Ingoma yakho", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Treat yourself well", - "text": "Zinonophele kakuhle", + "SourceText": "Ground & gratitude", + "text": "Umhlaba nombulelo", "type": "data_list", "note": "" }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "**Zinonophele kakuhle** @global.parent_point", + "SourceText": "Notice how you feel", + "text": "Phawula indlela ovakalelwa ngayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Doing something they like for themselves", - "text": "Bazenzela into abayithandayo", + "SourceText": "Pause power", + "text": "Amandla onqumamo", "type": "data_list", "note": "" }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "Praise yourself", + "text": "Zincome", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praise yourself", - "text": "Zincome", + "SourceText": "Taking care of yourself", + "text": "Ukuzinyamekela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Take a pause", + "text": "Nqumama", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Physical activity", + "text": "Umsebenzi womzimba", + "type": "data_list", + "note": "" + }, + { + "SourceText": "List of things", + "text": "Uluhlu lwezinto", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Connect", + "text": "Qhagamshela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Prevent anger", + "text": "Thintela umsindo", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Angry? Take a break", + "text": "Unomsindo? Hlaba ikhefu", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It is hard to find time to have fun with your teenager.", + "text": "Kunzima ukuba nexesha lokonwaba kunye nomntwana wakho ofikisayo.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Kubomi bethu obuxakekileyo, kunzima ukunikela ingqalelo kwizinto ezikhuthazayo.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week have you praised your teen?", + "text": "Kwiveki ephelileyo, uye wamncoma iintsuku ezingaphi umntwana wakho ofikisayo?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "This is a very stressful time for families.", + "text": "Eli lixesha elibangela uxinezeleko kwiintsapho.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", + "text": "Kwiveki ephelileyo, ngaba njengomzali/umnakekeli uye waziva uxinezelekile?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sometimes our children make us really upset.", + "text": "Ngamanye amaxesha, abantwana bethu bakhe basicaphukise.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", + "text": "Kwiveki ephelileyo, zingaphi iintsuku oye washawuta waza wabakrasela ngazo abantwana bakho?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Kwinyanga edlulileyo (iinstuku ezingama-30), zingaphi iintsuku oye waphelelwa ngazo yimali yokuthenga ukutya?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It is so stressful when children misbehave.", + "text": "Xa abantwana begeza, oko kubangela uxinezeleko.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", + "text": "Zingaphi intsuku kule veki idlulileyo oye waqeqesha abantwana bakho ngokubabetha, ukubabetha ezimpundu okanye ukubabetha ngesandla sakho okanye ngenye into efana noswazi okanye ibhanti?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", + "text": "Kunzima ukuzazi kakuhle izinto ezenziwa ngaabatwana bakho abafikisayo njengoko baya bekhula ibe bezimela.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", + "text": "Kwiveki ephelileyo, zingaphi iintsuku oye wayazi ngazo ukuba uphi umntwana wakho ofikisayo kwaye ukunye nabani?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Days in the past week", + "text": "Iintsuku kwiveki edlulileyo", "type": "data_list", "note": "" }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "**Zincome** @global.parent_point", + "SourceText": "We all want to keep our children safe.", + "text": "Sonke sifuna abantwana bethu bahlale bekhuselekile.", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praising themselves", - "text": "Bayazincoma", + "SourceText": "Days in the past month", + "text": "Iintsuku kwinyanga edlulileyo", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", - "text": "Xesha ngalinye xawu zinonophele kakuhle, cofa i @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "Welcome and Self-Care", + "text": "Ukwamkela Nokuzinyamekela", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "One-on-one time", - "text": "Ixesha lenu nobabini", + "SourceText": "**Welcome and Self-Care** workshop", + "text": "Uqeqesho **lokwamkela Nokuzinyamekela**", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "**Ixesha lenu nobabini** @global.parent_point", + "SourceText": "Self-Care", + "text": "Ukuzinyamekela", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Spending time with their teen", - "text": "Ukuchitha ixesha nabantwana babo abafikisayo", + "SourceText": "How to do self-care", + "text": "Indlela yokuzikhathalela", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Xesha ngalinye nichitha ixesha lenu nobabini cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "One-on-One Time", + "text": "Ixesha Lenu Nobabini", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praise your teen", - "text": "Mncome umntwana wakho ofikisayo", + "SourceText": "**One-on-One Time** workshop", + "text": "Ucweyo **lwexesha lenu nobabini**", "type": "data_list", "note": "" }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "**Mncome umntwana wakho ofikisayo** @global.parent_point", + "SourceText": "How to spend one-on-one time", + "text": "Indlela yokuchitha ixesha lenu nobabini", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praising their teen when they did positive thing", - "text": "Ukuncoma abantwana babo abafikisayo xabenze into eyokhayo", + "SourceText": "Praise", + "text": "Ncoma", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Xesha ngalinye uncoma umntwana wakho ofikisayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "**Praise** workshop", + "text": "Uqeqesho **lokuzincoma**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Get positive", - "text": "Yiba nethemba", + "SourceText": "How to praise", + "text": "Indlela yokuncoma", "type": "data_list", "note": "" }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "**Yiba nethemba** @global.parent_point", + "SourceText": "Positive Instructions", + "text": "Imiyalelo Eyakhayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Ukunika imiyalelo eyakhayo kwabantwana babo abafikisayo", + "SourceText": "**Positive Instructions** workshop", + "text": "Uqeqesho **Lwemiyalelo Eyakhayo**", "type": "data_list", "note": "" }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye unikeza imiyalelo yakhayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "How to give positive instructions", + "text": "Indlela yokunika imiyalelo eyakhayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Breathe not yell", - "text": "Thatha umoya ungangxoli", + "SourceText": "Managing Stress", + "text": "Ukulawula Uxinezeleko", "type": "data_list", "note": "" }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "**Thatha umoya ungangxoli** @global.parent_point", + "SourceText": "**Managing Stress** workshop", + "text": "Uqeqesho **lokulawula Uxinezeleko**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Taking a pause before responding", - "text": "Nqumama phambi koba uphendule", + "SourceText": "How to manage stress", + "text": "Indlela yokulawula uxinezeleko", "type": "data_list", "note": "" }, { - "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye unqumama phambi koba uphendule, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "Family Budgets", + "text": "Iibhajethi Yentsapho", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Good money choice", - "text": "Ukhetho olululo lwemali", + "SourceText": "**Family Budgets** workshop", + "text": "Uqeqesho **Lwebhajethi Yentsapho**", "type": "data_list", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "**Ukhetho olululo lwemali** @global.parent_point", + "SourceText": "How to budget & save", + "text": "Indlela yokubhajetha nokonga", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Keeping the budget", - "text": "Ukugcina uhlahlo lwabiwo-mali", + "SourceText": "Rules", + "text": "Imigaqo", "type": "data_list", "note": "" }, { - "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye owenza ukhetho olululo ngokweentswelo, iimfuno, ukonga, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "**Rules** workshop", + "text": "Uqeqesho **Umthetho**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Calm consequence", - "text": "Imiphumo Ezolileyo", + "SourceText": "How to create rules", + "text": "Indlela yokuyila imigaqo", "type": "data_list", "note": "" }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "**Imiphumo Ezolileyo** @global.parent_point", + "SourceText": "Calm Consequences", + "text": "Imiphumo Ezolileyo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a consequence in a calm way", - "text": "Indlela yokunika abantwana abafikisayo imiphumo ezolileyo", + "SourceText": "**Calm Consequences** workshop", + "text": "Uqeqesho **Imiphumo Ezolileyo**", "type": "data_list", "note": "" }, { - "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye unikeza imiphumo ezolileyo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "How to give calm consequences", + "text": "Indlela yokunika imiphumo ezolileyo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Safe", - "text": "Ikhuselekile", + "SourceText": "Problem Solving", + "text": "Ukucombulula Iingxaki", "type": "data_list", "note": "" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "**Ikhuselekile** @global.parent_point", + "SourceText": "**Problem Solving** workshop", + "text": "Uqeqesho **Ukucombulula Iingxaki**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Planning or keeping a family safety plan", - "text": "Ukucwangcisa okanye ukugcina isicwangciso sokhuseleko losapho", + "SourceText": "How to solve problems", + "text": "Indlela yokusombulula iingxaki", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", - "text": "Ixesha ngalinye wenza into yokukhusela umntwana wakho ofikisayo, cofa u @global.parent_point ubhiyozele impumelelo yakho!", + "SourceText": "Teen Safety", + "text": "Ukhuseleko Lwabantwana Abafikisayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Did it? Tap it!", - "text": "Uyenzile? Uyicofile!", + "SourceText": "**Teen Safety** workshop", + "text": "Uqeqesho **Ukhuseleko Lwabantwana Abafikisayo**", "type": "data_list", "note": "" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Isemagqabini! Wenze kakuhle ngokuchitha ixesha kunye. Ibeka isiseko solwalamano olusemagqabini nomntwana wakho ofikisayo!", + "SourceText": "How to keep your teen safe", + "text": "Indlela yokugcina umntwana wakho ofikisayo ekhuselekile", "type": "data_list", "note": "" }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Wenza kakuhle! Ixesha lenu nobabini libonisa umntwana wakho ofikisayo ukuba ubalulekile kuwe. Yenza umahluko wokwenene!", + "SourceText": "Dealing with Crisis", + "text": "Ukuhlangabezana Neengxaki", "type": "data_list", "note": "" }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Kuhle gqitha! Ukuchitha ixesha nomntwana wakho ofikisayo kunokwenza umntwana wakho ofikisayo akulungele ngakumbi ukunceda ngokufuthi. Uqhuba kakuhle!", + "SourceText": "**Dealing with Crisis** workshop", + "text": "Uqeqesho **Ukuhlangabezana Neengxaki**", "type": "data_list", "note": "" }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "Usebenzile! Ixesha lenu nobabini nomntwana wakho ofikisayo ithuba lokufunda okungakumbi ngezinto anomdla kuzo nakwazi ukuzenza umntwana wakho ofikisayo. Ungu ngqa phambili!", + "SourceText": "How to deal with crisis", + "text": "Indlela yokuhlangabezana neengxaki", "type": "data_list", "note": "" }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Umsebenzi osemagqabini! Ukuchitha ixesha kunye kunceda ekwakheni ulwalamano oluluqilima nolwakhayo phakathi kwakho nomntwana wakho ofikisayo.", + "SourceText": "Celebration and Next Steps", + "text": "Ukubhiyoza kunye namaNyathelo Alandelayo", "type": "data_list", "note": "" }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Maxawambi kuza kuba lula yaye kube mnandi ukuchitha ixesha nabantwana bakho abafikisayo yaye maxawambi iya kuba lucelo-mngeni. Ukuchitha ixesha kunye kuya kuphucula kakhulu ulwalamano lwakho; wenze kakuhle ngokuzama!", + "SourceText": "**Celebration and Next Steps** workshop", + "text": "Uqeqesho **Lokubhiyoza kunye Namanyathelo Alandelayo**", "type": "data_list", "note": "" }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Siyaxolisa ukuva ukuba kwakunzima ukuchitha ixesha kunye nomntwana wakho ofikisayo. Sonke siba nayo imiceli-mngeni maxa wambi. Yiba nomonde kwisiqu sakho nomntwana wakho ofikisayo -izinto ziza kuba bhetele. Usebenzile ngokuzama!", + "SourceText": "How to support each other", + "text": "Indlela yokuxhasana", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle; ungungqa phambili!", + "SourceText": "Start", + "text": "Qalisa", "type": "data_list", "note": "" }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Kuhle gqitha! Uyawafanelekela onke amaxesha okonwaba!", + "SourceText": "Continue", + "text": "Qhubeka", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Siyaxolisa ngokuba oko kube nzima kuwe. Ungungqa phambili ngokuzama!", + "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Molo mzali ogqwesileyo, khumbula ukuzinakekela nawe - izokunceda KWAYE nosapho lwakho! Fumana iingcebiso nezingakumbi Kwi-@global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Kuyamangalisa ukuva ukuba le nto ikwenze waziva kamnandi! Qhubeka nomsebenzi omhle. Umntwana wakho ofikisayo ufunda lukhulu kuwe!", + "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.", + "text": "Molo mzali ogqwesileyo! Khumbula, ungafumana iingcebiso eziluncedo Kwi-@global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Ukuthetha ngendlela esiziva ngayo kunokuba nzima ekuqaleni, kodwa wena nomntwana wakho ofikisayo niya kuqhelana nako. Qhubeka uzama, yaye uya kubona iziphumo ezincomekayo!", + "SourceText": "Hi great parent! @global.parent_app is here to support you. Check it out now!", + "text": "Molo mzali ogqwesileyo! I-@global.parent_app ilapha ukukuxhasa. Yijonge!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle. Ukuthetha ngezimali zenu kunye eneneni kwenza intsapho yenu yomelele!", + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Wamkelekile kwi-@global.parent_app. Cofa apha ukuze uqalise uhambo lwakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Siyaxolisa ngokuba oko kube nzima kuwe. Usebenzile ngokuzama!", + "SourceText": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", + "text": "Molo! Ngaba yonke into ihamba KAKUHLE? Kubonakala ngathi khange uyivule i-@global.parent_app kutshanje. Kutheni ungakhe uyizame? Izigidi zabazali zIye zafumanisa ezi zixhobo ziluncedo. Sisekhona ukuze sikuxhase.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle! Imigaqo eqhubekayo inceda ekwenzeni abantwana bethu abafikisayo bazive benqabisekile, kwaye ibagcine bekhuselekile!", + "SourceText": "@global.parent_app misses you! There is a lot to explore. We are still here to support you.", + "text": "I-@global.parent_app iyakukhumbuza! Kuninzi omele ukuhlole. Sisekhona ukuze sikuxhase.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Uxolo ukuba oku bekunzima. Ukuyila imigaqo kunye kufuna uqheliselo kodwa oko kufanelekile!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.", + "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali - sebenzisa i-@global.parent_app ukulungiselela umntwana wakho ofikisayo ukuba aphumelele ebomini.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well!", - "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!", + "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukuze uphinde usondelelane nomntwana wakho ofikisayo kwakhona!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Siyaxolisa ngokuba oko kube nzima. Ukuyila kunye iziphumo kuya kwenza umntwana wakho ofikisayo afune ukulandela imigaqo rhoqo!", + "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!", + "text": "Ndiyathemba uziva bhetele. Ukuba ngumzali kunzima, kodwa awukashiywa lixesha lokuphinda uqalise nomntwana wakho ofikisayo. Uqeqesho lwakho lokuba ngumzali lulinde wena! Cofa apha ukuze uqalise uhambo lwakho lwe-@global.parent_app!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Uxolo ukuba oko kube nzima. Maxa wambi kufuneka siqhubeke sizama. Fumana ixesha xa wena nomntwana wakho ofikisayo nizolileyo nize nizame ukuthetha ngengxaki kwakhona nisebenzisa amanyathelo amane okucombulula iingxaki. Nikunye ningafeza lukhulu!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.", + "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukukunceda ulawule uxinezeleko lokuba ngumzali.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Ukuthetha ngemingcipheko nokhetho lwenkxaso kuthintela iingxaki kwaye kunceda ngokwenene ekugcineni umntwana wakho ofikisayo ekhuselekile.", + "SourceText": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", + "text": "Molo kwakhona! Awukashiywa lixesha lokusebenzisa i-@global.parent_app uze ufumane inkxaso efanele wena yokuba ngumzali. Kutheni ungakhe uyizame xa usiya emsebenzini okanye xa usapheke ukutya? Izigidi zabazali ziye zafumanisa izixhobo zethu ziluncedo.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Uxolo ukuba oko kube nzima. Ukuceba imingcipheko kunye neendawo zokufumana inkxaso kungalucelomngeni kunye neemvakalelo. Kunceda ngokwenene ukugcina umntwana wakho ofikisayo ekhuselekile!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.", + "text": "Ndiyathemba uziva bhetele. Siyazi ukuba kunzima ukuba ngumzali -sebenzisa i-@global.parent_app ukukunceda ulawule isimilo somntwana wakho ofikisayo.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Uxolo ukuba oku akukhange kuhambe kakuhle. Oku akulula ukukwenza. Zama ukuhlala phantsi uze uncokole nomntwana wakho ofikisayo kwakhona. Okunye, ngaba ukho umntu othenjwayo ngumntwana wakho ofikisayo onokuba kunye nawe xa uncokola nomntwana wakho ofikisayo?", + "SourceText": "Have you spent time with your teen already?", + "text": "Ngaba sele ulichithile ixesha kunye nomntwana wakho ofikisayo?", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Kuyavuyisa ukuva ukuba izinto zihambe kakuhle! Ukunika imiphumo ngendlela efanelekileyo kunceda abantwana abafikisayo baziphathe kakuhle kuze kwenze ubomi bentsapho buzole.", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Ngaba sele uthethile nomntwana wakho ofikisayo ngebhajethi yentsapho yakho?", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Ndiyavuya ukuva ukuba kuhambe kakuhle! Xa umntwana wakho ofikisayo efunda ukusombulula iingxaki, unokusebenzisa eso sakhono ubomi bakhe bonke. Sisipho sokwenene!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Ngaba sele uthethile nomntwana wakho malunga namanyathelo okhuseleko?", "type": "data_list", "note": "" } diff --git a/packages/app-data/translations_source/from_translators/translated.za_zu.json b/packages/app-data/translations_source/from_translators/translated.za_zu.json index 71b7e5e5a7..8a6cbf15ae 100644 --- a/packages/app-data/translations_source/from_translators/translated.za_zu.json +++ b/packages/app-data/translations_source/from_translators/translated.za_zu.json @@ -1,778 +1,790 @@ [ { - "SourceText": "Home Practice", - "text": "Ukuzijwayeza Ekhaya", + "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", + "text": "* Buzanani, “Yini ekwenze wajabula namuhla?”\n* Buzanani, “Yibuphi ubunzima oye wabhekana nabo namuhla?”\n* Buzanani, “Ngingakusiza kanjani?”\n* Zamani ukwenza lokhu ndawonye nsuku zonke; kungaba lapho nidla isidlo sakusihlwa ndawonye noma ngaphambi kokuba niyolala.", "type": "template", "note": "" }, { - "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", - "text": "Izenzo ezincane, imiphumela emikhulu! Abazali abazijwayeza ekhaya amakhono abawathole ekuqeqeshweni yemhlangano wokufundisana bathola imiphumela emihle.", + "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", + "text": "* Buza ingane yakho esebusheni bayo ukuthi yini engathanda ukuyidla. \n* Kuphekeni ndawonye lokho kudla! \n* Yivumele ibe umpheki omkhulu – ihole, wena ulandele iziqondiso zayo. \n* Ungayisiza nokuthi yenze isabelomali sokuthenga izinto zokupheka! \n\nUcabanga ukuthi kuzosebenza? Buza izingane zakho ezisebusheni bazo ukuthi yini EZINGATHANDA ukuba wena nazo ningayenze ndawonye. Zivumele zihole. Khululeka. Zijabulise.", "type": "template", "note": "" }, { - "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", - "text": "Ngesonto elizayo, uzoxoxela iqembu lakho indlela okuhambe ngayo ukuzijwayeza ekhaya. Ningasekelana futhi nikhumbuzane phakathi nesonto.", + "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", + "text": "*Nyakazisa izandla zakho kwesokunxele emoyeni izikhathi ezu -8 ngenkathi ubala ukuya ku-8.\n* Kwenze ngokushesha futhi umemeze kakhulu ngangokunokwenzeka.\n* Kuphinde lokho ngesinye isandla sakho. Kuphinde ngazo zombili izinyawo.\n* Kwenze izikhathi ezingu-7, bese kuba yizikhathi ezingu-6 uqhubeke njalo uze ufike ku-1.\n* Wonke umuntu kumele amemeze athi “Inkukhu esanganayo” bese benza okusemandleni abho ukudansa njengenkukhu esanganayo!", "type": "template", "note": "" }, { - "SourceText": "How did it go?", - "text": "Kuhambe kanjani?", + "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", + "text": "* Dala isethi yokunyakaza komdanso ezingomeni eziyintandokazi zentsha yakho.\n* Umuntu oyedwa uyadansa bese bonke abanye belingisa umdanso awenzayo. \n* Wonke umuntu uthola ithuba lokuhola umdanso. \n* Yenzela umndeni!", "type": "template", "note": "" }, { - "SourceText": "talk to their teens about how they feel", - "text": "xoxa nentsha yabo ngendlela ezizwa ngayo", + "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", + "text": "Lo mdlalo umnandi kakhulu lapho udlalwa abantu abangaphezu kwababili.\n* Umuntu oyedwa wenza sengathi wenza into ethile – ngokwesibonelo, ukukama izinwele noma ukupheka isidlo sakusihlwa. \n* Omunye umuntu uyabuza, “Wenzani?”\n* Umuntu wokuqala kudingeka asho okuthile okungahlobani nokukama izinwele, ngokwesibonelo, “Ngibopha izicathulo.” \n* Umuntu wesibili ube eseqala ukwenza sengathi ubopha izicathulo kuze kubuze umuntu omusha, “Wenzani?” \n\nImpendulo kumele ihluke njalo kulokho osuke ukwenza ngempela!", "type": "template", "note": "" }, { - "SourceText": "talk to your teen about how you feel", - "text": "xoxa nengane yahoo esebusheni bayo ngendlela ozizwa ngayo", + "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", + "text": "* Ngeke ukwazi ukuthatha uhambo ngaso sonke isikhathi ofisa ngaso, kodwa ungaphupha njalo! Buza ingane yakho esebusheni bayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluya kuphi? Uzohamba isikhathi eside kangakanani? Yini ozoyipakisha? Yini ozoyenza ohambweni lwakho? Yini ozoyibona?\n* Bukani ibalazwe ndawonye noma nilidwebe.\n* Khetha izwe ingane yahoo esebusheni bayo engakaze izwe ngalo bese nifunda okwengeziwe ngalelo zwe.", "type": "template", "note": "" }, { - "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", - "text": "Ingabe uhlangabezane nezinselele ngenkathi uzama ukuthi @local.hp_description_second_singular?", + "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", + "text": "Khetha umdlalo noma ukuzivocavoca eningakwenza ndawonye. Vumelanani ngohlelo. Ingabe nizokwenza nsuku zonke? Isikhathi esingakanani? \n\nKuzameni isonto elilodwa. Ekupheleni kwesonto, zibuze wena kanye nomndeni wakho le mibuzo:\n* Kuhamba kanjani? \n* Uzizwe kanjani ekuqaleni kwesonto? \n* Uzizwe kanjani ekupheleni kwesonto? \n * Yini esingayenza ngendlela ehlukile?", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", - "text": "Yini oyithole inzima kuwena ngenkathi uzama ukuthi @local.hp_description_second_singular?", + "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", + "text": "Wena nengane yahoo esebusheni bayo ningabhala uhlu losaziwayo eningathanda ukubamema emcimbini wakho. Ngamunye angaba nabantu abahlanu – kungaba abantu bangesikhathi esidlule noma bamanje. Ungamema obani? Ingabe izimenywa zakho zizozwana?", "type": "template", - "note": "The string @local.hp_description_second_singular should not be translated." + "note": "" }, { - "SourceText": "Sorry we missed this!", - "text": "Siyaxolisa asikubonanga lokhu!", + "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", + "text": "Xoxa nengane yakho esebusheni bayo ngokuthile ekuthandayo.\n\nKungaba yinoma yini ekhetha ukuxoxa ngayo: ezemidlalo, abangane, umculo, osaziwayo…\n\nZama ukulalela ingane yahoo esebusheni bayo futhi uyivumele ukuthi ikhulume.", "type": "template", "note": "" }, { - "SourceText": "Do you want to share it with us?", - "text": "Uyafisa ukuxoxisana ngakho nathi?", + "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", + "text": "* Khethani ndawonye izinhlobo ezintathu zokuzivocavoca. Ngokwesibonelo, ukuhamba, ukugijima, ukudlala ibhola noma ukudansa.\n* Khethani okukodwa ndawonye bese niyakuzama. \nUma nikuthanda nobabili, nqumani ukuthi nizokwenza izikhathi ezingaki. Kanye noma kabili ngesonto? Njalo ekuseni?\n* Ndawonye cabangani ngezindlela zokwenza lokhu kube mnandi kakhulu. Ungakwazi yini ukugijima uye endaweni ethile? Shintshanani ekubeni abaqeqeshi? Khuthazanani ngoumvuzo omncane wamahhala?", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", - "text": "Siyabonga ngokwabelana ngenselelo yakho! Sizosebenzisa le mpendulo ukwenza i-@global.parent_app ibe ngcono.", + "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", + "text": "Shintshanani ngokuba “umholi”. Yisho imisho eyisethulo ukuze wonke umuntu aqale. “Umholi” ube esenikeza isiqondiso bese wonke umuntu enza umsebenzi ngokushesha ngangokunokwenzeka:\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Thinta okuthile okubomvu.” \n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Gxuma gxuma izikhathi eziyishumi.”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Beka izicathulo endaweni yokubeka izicathulo.”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Sorry to hear the tips did not help you.", - "text": "Uxolo ukuzwa amacebiso awakusizanga.", + "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", + "text": "* Khetha umxoxi wezindaba ukuze uqale ukwenza indaba.\n* Abalalele indaba bangaphazamisa noma inini ngokusho igama elithile.\n* Oxoxa indaba kudingeka asebenzise lelo gama endabeni yakhe.\n* Lapho indaba iphela, zamani umxoxi wendaba ohlukile!", "type": "template", "note": "" }, { - "SourceText": "Do you want to share with us what you think would help you?", - "text": "Uyafuna ukwabelana nathi ngalokho ocabanga ukuthi kungakusiza?", + "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", + "text": "* Qala indaba yakho ngamazwi athi “Kwasukasukela kwakukhona…”\n* Vumela ingane yakho esebusheni bayo ukuba yakhe umusho olandelayo.\n* Ngemva kwalokho kuba nguwe owakha umusho.\n* Shintshananani njengoba niqamba indaba entsha emnandi.\n* Qinisekisa ukuthi ingoma iphela kamnandi.\n* Buza ingane yakho esebusheni bayo ukuthi iyiphi indawo eyithande kakhulu endabeni!", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", - "text": "Siyabonga ngokwabelana nathi! Ungumzali omuhle ngenxa yokuzama ukuchitha isikhathi nengane yakho esebusheni yakho lokho kwenza umehluko omkhulu. Qhubeka wenza umsebenzi omuhle, ukhumbule ukuthi ngihlale ngilapha ukuze ngikusekele!", + "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", + "text": "* Umuntu wokuqala uthi, “NgoMgqibelo, ngizoya... (isibonelo, epaki)”\n* Umuntu wesibili uyengeza kulokho okushiwo owokuqala, \"NgoMgqibelo, ngizoya epaki futhi...(isib., ngivakashele umngane wami omkhulu).\n* Umuntu ngamunye uyengeza kokudlule ezama ukucabanga ngazo zonke izinto ezijabulisayo angazenza ngoMgqibelo.", "type": "template", "note": "" }, { - "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", - "text": "Nanka amakhono akuleli sonto ongahamba nawo! \n\nWasebenzise ekhaya futhi ungawathole noma inini ku @global.parent_centre yakho.", + "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", + "text": "* Lo mdlalo ungadlalwa lapho nibabili noma niwudlale nabantu abaningi njengeqembu.\n* Yimani nibhekane noma nime nenze indilinga. \n* Kuhola umuntu oyedwa kuqala bese wonke umuntu elingisa lokho akwenzayo, kulingiswa konke okwenziwa umholi ngesikhathi esisodwa.\n* Qinisekisa ukuthi umholi akasheshi kakhulu ukuze wonke umuntu akwazi ukulingisa akwenzayo! Zama ukunyakazisa izitho ezihlukahlukene zomzimba ezigabeni ezihlukahlukene.\n * Ngemva kwesikhathi esithile, shintshani umuntu oholayo. Nikezani wonke umuntu ithuba lokuhola.\n* Kuzameni lokhu kungekho oholayo!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Relax Together", - "text": "Khululekani ndawonye", + "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", + "text": "* Umuntu wokuqala uthola ukukhetha noma ukucula ingoma.\n* Wonke umuntu kufanele aqagele igama leculo (ukwenza kube nzima ukuqagela umculi).\n* Owokuqala ukuqagela kahle uba umholi olandelayo.", "type": "template", "note": "" }, { - "SourceText": "Relax", - "text": "Nethezeka", + "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", + "text": "Lo mdlalo umnandi kakhulu lapho udlalwa okungenani abantu abathathu.\n* Qala endingilizeni udlulise umsindo owodwa owenza ngeminwe ujikeleze indilinga (noma ungashaya izandla kanye uma ungakwazi ukwenza umsindo ngeminwe).\n* Uwenza kanye umsindo weminwe ukuze uwudlulisele komunye, bese uwenza kanye ukuze uwamukele. Bheka umuntu odlulisela umsindo kuye. \n* Indawo oqondise kuyo (phezulu, phansi, okuqondile, okutshekile, okuginqika phansi) kanye namandla (kakhulu, kancane, ngendlela ephakathi nendawo) owasebenzisayo lapho udlulisa umsindo weminwe uthinta indlela umuntu awamukela ngayo. \n* Ungashayisa umsindo odongeni, uwuphonse emoyeni, uwubambe izikhathi ezimbalwa ngaphambi kokuba uwudlulisele phambili. \n* Lapho wonke umuntu esekwazi kahle ukukwenza lokhu, ningahambahamba egumbini nilokhu niqhubeka ngokudlulisela umsindo weminwe. \n* Ungakwazi yini ukuwuphonsa ngaphansi kwemileze? Ngemuva komhlane? Kujikeleze ikhanda? Uvimbe okuya komunye umuntu? Kujabuleleni ukudlala nge-”snap”!", "type": "template", "note": "" }, { - "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", - "text": "Ake senze isenzo esifushane sokuphumula ndawonye – sizothatha isikhathi esingaphansi komzuzu futhi uzozizwa ukhululekile.", + "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", + "text": "Ekupheleni kosuku, zinike umzuzu wokwenza lokhu: \n\n* Khuluma nengane yakho esebusheni bayo ngento eyodwa emnandi ayenzile. \n* Zincome ngento eyodwa oyenze kahle namhlanje. \n* Uyiqhawe!", "type": "template", "note": "" }, { - "SourceText": "Add this activity to @global.my_relaxes", - "text": "Ongeza lo msebenzi ku-@global.my_relaxes", + "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", + "text": "* Cabanga ngokuba namandla angaphezu kwavamile. Ngokwesibonelo, ukuya noma ikuphi ngokuphazima kweso, ukuya enkathini esadlula, ukubona imicabango yabantu. \n* Buza ingane yakho esebusheni bayo “Uma ubunamandla angaphezu kwawemvelo oku […], ubungawasebenzisa kanjani?”\n* Yikhuthaze ukuba iqambe iqhawe layo igama. \n* Manje vumela engane yakho esebusheni bayo ukuba ikukhethele amandla angaphezu kwawemvelo.\n* Qinisekisa ukuthi nawe uyawalingisa amandla akho angaphezu kwawemvelo!", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "Listen and relax", - "text": "Lalela futhi uphumule", + "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", + "text": "* Cabanga ngezimo ezintathu ezihlukahlukene. Ngokwesibonelo nje, ukushayela imoto, ukuhamba ngesikebhe noma ukushayela indiza.\n* Yisho lokhu enganeni yahoo esebusheni bayo bese uyayibuza, “Yikuphi ongakuthandar?”\n* Yibuze ukuthi kungani?\n* Manje cabanga ngezimo ezintathu noma ucele ingane yakho esebusheni bayo ukuthi ikwenzele lokho.", "type": "template", "note": "" }, { - "SourceText": "Read and relax", - "text": "Funda futhi uphumule", + "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", + "text": "Xoxela ingane yakho esebusheni bayo ngokuthile okwenzeka ngesikhathi usemusha nawe. Yiziphi izinto ezazingekho ngaleso sikhathi? Omakhalekhukhwini abane-inthanethi? Yini enaniyenza yokuzijabulisa? Yini owawukhathazeka ngayo? Ungakhathazeki uma ingane yakho ingakutsheli lutho – okubalulelkile ukuthi ikulalele futhi iyakhumbula. Ngezinye izikhathi intsha yethu iyakhohlwa ukuthi abazali bayo bangabantu nabo!", "type": "template", "note": "" }, { - "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", - "text": "Uyiqhawe!\n\nNuku zone nags sonke iskathi, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole.", + "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", + "text": "* Cabanga ngezitatimende ezintathu mayelana nawe. Ezimbili kumelwe zibe yiqiniso bese esisodwa sibe amanga.\n* Kungasiza ukucabanga ngezifiso, amaphupho, okwenzeka esikoleni, okuthandayo noma ongakuthandi. Ngokwesibonelo: Ngiyawazonda amabhanana, isifundo engisithanda kakhulu yisayensi, futhi ngifisa ngabe ngiyakwazi ukucula. \nYisho lokhu enganeni yahoo esebusheni bayo bese uyicela ukuba iqagele ukuthi yikuphi okungamanga. \n* Ingabe iqagele ngokunembile? Ingabe kuyimangazile?\n* Manje yicele ukuba yenze okufanayo. Ingabe kukhona okusha enikufundile ngomunye nomunye?", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.user_name", - "text": "Siyakwamukela @fields.user_name", + "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", + "text": "* Cabanga ngekhono elisha eningalifunda ndawonye nengane yakho esebusheni bayo. Ngokwesibonelo, ukugcina ibhola lisemoyeni noma onyaweni lwakho, ukuphonsa izinto eziningi emoyeni uphinde uzibambe zonke, ukwenza isobho?\n* Shintshanani ekuzameni ikhono elisha.\n* Qinisekisa ukuthi niyancomana, futhi nizame ukudlala ndawonye!", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again!", - "text": "Kuhle ukukubona futhi!", + "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", + "text": "* Buzanani imibuzo. Ingakubuza noma yimiphi imibuzo ngezinto ozithandayo noma ngalokho okwenzile namhlanje.\n* Ukuphela komthetho yilowo othi awukwazi ukuphendula uthi “Yebo”, “Cha” noma “Mhlawumbe”.\n* Ungabuza imibuzo isikhathi eside kangakanani? Bungakanani ubuciko obungabusebenzisa ezimpendulweni zakho?\n * Shintshanani bese niyadlala futhi!", "type": "template", "note": "" }, { - "SourceText": "Let's see how this week has been.", - "text": "Ake sibone ukuthi lihambe kanjani leli sonto.", + "SourceText": "Home", + "text": "Ikhasi Lokuqala", "type": "template", "note": "" }, { - "SourceText": "This week you have done...", - "text": "Kuleli sonto wenze lokhu...", + "SourceText": "Settings", + "text": "Izilungiselelo", "type": "template", "note": "" }, { - "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", - "text": "Ubonisa ukuzibophezela ekubeni umzali kanye nasekuzinakekeleni. \n\nWenza kahle kakhulu.", + "SourceText": "Template", + "text": "Isifanekiso", "type": "template", "note": "" }, { - "SourceText": "Watch Together", - "text": "Bukelani Ndawonye", + "SourceText": "In-Week Messages", + "text": "Imiyalezo Yaphakathi Nesonto", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video together!", - "text": "Masibukele ividiyo ndawonye!", + "SourceText": "Campaigns", + "text": "Imikhankaso", "type": "template", "note": "" }, { - "SourceText": "Watch", - "text": "Bukela", + "SourceText": "Notifications", + "text": "Imiyalezo", "type": "template", "note": "" }, { - "SourceText": "Let's watch a video!", - "text": "Masibukele ividiyo!", + "SourceText": "You have successfully entered developer mode.", + "text": "Ufake ngempumelelo imodi yonjiniyela.", "type": "template", "note": "" }, { - "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", - "text": "Kuhle ukuk'bona futhi! Masiqale ngengoma yemindeni ekuyo yonke indawo.", + "SourceText": "You have entered an incorrect code.", + "text": "Ufake ikhodi engalungile. noma fake ikhodi ekungasiyona.", "type": "template", "note": "" }, { - "SourceText": "Let's Slow Down", - "text": "Masehlise Isivinini", + "SourceText": "About @global.parent_app", + "text": "Mayelana@global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You’ve completed this week’s workshop.", - "text": "Uwuqedile umhlangano wokufundisana waleli sonto.", + "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", + "text": "@global.parent_app yasungulwa yi-Parenting for Lifelong Health (PLH) - ngokusebenzisana komhlaba wonke phakathi kochwepheshe bokukhuliswa kwabantwana. Labochephes abakwa UNICEF, WHO, amaNyuvesi aseNingizimu Africa nase UK, nama NGO ase Africa kanye nemindeni nentsha yese Africa yonkana. Abazali nentsha basebenzisane nathi kule app futhi basiza ekuqinisekiseni ukuthi kulula ukuyisebenzisa, iyajabulisa futhi iyaheha. Okunye okuqukethwe ile-app, njengeziphakamiso zemisebenzi,izitori ezinezithombe zasungulwa ngokubambisana nabazali nentsha ukuqinisekisa ukuthi ihambisana nezidingo zemindeni.\n\nI-Parenting for Lifelong Health (PLH) izinikele ekutheni ixhase mahala futhi ngokwabelekayo izinto zokukhulisa abantwana nezinye izinhlelo, nokweseka abazali umhlaba wonke ngenhloso yokugqugquzela inhlalakahle yabantwana babo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "See you soon.", - "text": "Sizokubona maduzane.", + "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", + "text": "Ngokuchofoza inkinobho engezansi uzoqalisa kabusha i-app ibuyele kulamasethingi ayo asekuqaleni. \n\nLokhu kucaza ukuthi yoke iinqubekela phambili yakho yentuthuko nokusebenzisa izoqalela phansi futhi i-app yakho izoba sengathi isanda kufakwa.\n\nQAPHELA: Ukusetha kabusha uhlelo le-app lokusebenza kungunaphakade futhi ngeke ukwazi ukuthola noma yiluphi ulwazi.", "type": "template", "note": "" }, { - "SourceText": "Talk Together", - "text": "Khulumani Ndawonye", + "SourceText": "Open Survey", + "text": "Vula Ucwaningo", "type": "template", "note": "" }, { - "SourceText": "Share ideas, support each other!", - "text": "Yabelanani ngemibono, sekelanani!", + "SourceText": "Select Language", + "text": "Khetha ulimi", "type": "template", "note": "" }, { - "SourceText": "Try it Together", - "text": "Kuzameni Ndawonye", + "SourceText": "Workshop Options", + "text": "Umhlangano wokufundisana ongakhetha kukho", "type": "template", "note": "" }, { - "SourceText": "Let's practice together.", - "text": "Asizijwayeza ndawonye.", + "SourceText": "Reset App", + "text": "Setha kabusha uhlelo lokusebenza I-App", "type": "template", "note": "" }, { - "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", - "text": "Ukuzijwayeza ekhaya kuyindlela esenza ngayo ukuphila komndeni kube ngcono. Kodwa ngokuvamile kuletha izinselele. \n\nAke sixoxe ngempumelelo kanye nezinselele zethu futhi sisizane ukuze sithole amacebiso amasha esingawazama!", + "SourceText": "Demo Presentation", + "text": "Ukuboniswa noma Isethulo somkhiqizo", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa: \n* Yini ehambe kahle futhi yini ebe yinkinga? \n* Yiziphi izixazululo eningazicabanga ndawonye? \n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho esebusheni bayo!\n\n(Noma ukuzijwayeza khona manje ukuze kube lula kamuva!)", + "SourceText": "Organisation Registration", + "text": "Ukubhaliswa Kwenhlangano", "type": "template", "note": "" }, { - "SourceText": "Discussion example from @data.workshop.w_1on1.title", - "text": "Isibonelo sengxoxo esivela ku-@data.workshop.w_1on1.title", + "SourceText": "Developer Mode", + "text": "Uhlelo Lonjiniyela", "type": "template", - "note": "The string @data.workshop.w_1on1.title should not be translated." + "note": "" }, { - "SourceText": "Start Positively Together", - "text": "Qalani Kahle Ndawonye", + "SourceText": "Unlock all workshops", + "text": "Vula yonke imihlangano yokufundisana", "type": "template", "note": "" }, { - "SourceText": "Welcome @fields.group_name", - "text": "Siyakwamukela @fields.group_name", + "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", + "text": "Ngokuchofoza inkinobho engezansi uzovula konke ukuqeqeshwa.\n\nQAPHELA: Abasebenzisi akufanele basebenzise lokhu ukuze bavule ukuqeqeshwa, lokhu akutuswa ngaphandle uma kudingeka ngempela.", "type": "template", - "note": "The string @fields.group_name should not be translated." + "note": "" }, { - "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", - "text": "Kuhle ukukubona futhi! \n\nAke siqale ngokunakekela wena.", + "SourceText": "Unlock workshops", + "text": "Vula umhlangano wokufundisana", "type": "template", "note": "" }, { - "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", - "text": "Shintshisanani:\n* Yabelana: Uzizwa kanjani namuhla?\n* Ncoma othile eqenjini lakho ngokuthile akwenze kahle kuleli sonto!\n\nKhumbula ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha. Nonke nifanelwe ukunconywa.", + "SourceText": "All workshops are now unlocked.", + "text": "Yonke imhlangano wokufundisana isivuliwe manje.", "type": "template", "note": "" }, { - "SourceText": "Ideas from other families:", - "text": "Amacebiso avela kweminye imindeni:", + "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", + "text": "Ukulahlekelwa umuntu omthandayo kungazwakala kunzima kakhulu. Naka macebo angaba usizo okufanele uwangcine emqodweni.", "type": "template", "note": "" }, { - "SourceText": "Question Time", - "text": "Isikhathi Sombuzo", + "SourceText": "Ask for help", + "text": "Cela usizo", "type": "template", "note": "" }, { - "SourceText": "It's time for some questions!", - "text": "Isikhathi semibuzo ethile!", + "SourceText": "Say goodbye", + "text": "Valelisa", "type": "template", "note": "" }, { - "SourceText": "Listen Together", - "text": "Lalelani Ndawonye", + "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", + "text": "- Cela usizo kumuntu omethembayo- ukudla noma ukunakekelwa kwengane kungaba usizo. Kungenzeka udinge amaphepha efa lezingane noma ukuthola izinsiza. \n- Ngesinye isikhathi abantu bazama ukuthatha imali kumuntu ososizini. Thola ulwazi ngamalungelo akho.", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio together!", - "text": "Masilalele okuqoshiwe ndawonye!", + "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", + "text": "- Kunzima ukuvalelisa. Yenza lokho okukulungele wena nomntwana wakho.\n- Imindeni, intsha nabazali abekho msulwa. Uma umuntu eshonile, kulungile ukukhuluma ngokuhle nokubi esikukhumbulayo.\n- Kungasiza ukumbhalela incwadi noma ukumdwebela lomuntu oshonile.\n- Abanye abantu benza umcimbi noma babe nesidlo esikhethekile ukubungaza lowomuntu nokuvalelisa.\n- Kungasiza ukwenza ibhokisi lezikhumbuzo lokufaka izinto ezikhumbuza wena nomntwana wakho ngalowomuntu.\n- Kungasiza ukukhuluma nje ngalowomuntu uma umcabanga.", "type": "template", "note": "" }, { - "SourceText": "Listen", - "text": "Lalela", + "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", + "text": "Kunzima kuwo wonke umuntu ukushonelwa umuntu omthandayo noma umngani. Ukuziphatha ngomusa nokwenza izinto zokukusiza kulesisikhathi esinzima kusiza nomntwana wakho!", "type": "template", "note": "" }, { - "SourceText": "Let's listen to an audio!", - "text": "Masilalele okuqoshiwe!", + "SourceText": "Take care of yourself", + "text": "Zinakekele", "type": "template", "note": "" }, { - "SourceText": "Why @local.workshop_data.title?", - "text": "Kungani @local.workshop_data.title? \nnoma Ngobani @local.workshop_data.title?", + "SourceText": "Find a support group", + "text": "Thola inhlangano noma iqembu elisekelayo", "type": "template", - "note": "The string @local.workshop_data.title should not be translated." + "note": "" }, { - "SourceText": "Hear Sbo's message", - "text": "Lalela umyalezo kaSbo", + "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", + "text": "-Usizi lungasithikameza emoyeni amaviki, izinyanga noma iminyaka. Akuphoqelekile ukuthi ubengcono ngokushesha. \n-Lala ngokwanele udle ngokwanele - kunzima ukunakekela abantwana uma ukhathele noma ulambile.\n-Yenza uhla lwezinto ezikwenza uzizwe ungcono bese uyazenza.\n-Zama ukwenza into eyodwa ngosuku ezoniphumuza ninomntwana wakho.\n-Kulungile ukungazizwa kahle kanti nokukhala kulungile. Ungazibeki cala, akulona iphutha lakho.\n-Ithemba lihlezi likhona noma kushoniwe. Zama ukuthokozela izinto ezincane futhi uthathe umzuzu wokwenza into ezonijabulisa futhi iniphumuze ninomntwana wakho.\n-Thola umuntu oyedwa noma ababili abangakweseka, balalele futhi baxoxisane nawe.", "type": "template", "note": "" }, { - "SourceText": "Read Sbo's message", - "text": "Funda umyalezo kaSbo", + "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", + "text": "- Ukukhuluma nomuntu ongakweseka, akulalele kungakusiza.\n- Ukuzibandakanya neqembu labanye abantu abashonelwe kungasiza.\n-Akekho umuntu ongenasici. Kulungile ukukhuluma ngezinkumbulo ezinhle nezimbi.", "type": "template", "note": "" }, { - "SourceText": "Today's steps", - "text": "Izinyathelo zanamhlanje", + "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", + "text": "Abantwana bamelana nokushonelwa ngezidlela ezahlukile, nje ngokufanayo nabantu abadala. Ungabasiza ekutheni baqonde isimo kanye nemizwa yabo ngokuthi ubavulele izindawo eziphephile lapho ningabelana khona futhi nicubungule imizwa yenu.", "type": "template", "note": "" }, { - "SourceText": "Read Together", - "text": "Fundani Ndawonye", + "SourceText": "Be honest", + "text": "Thembeka", "type": "template", "note": "" }, { - "SourceText": "Let's read a story together!", - "text": "Masifunde indaba ndawonye!", + "SourceText": "My teen's response", + "text": "Impendulo yengane yami", "type": "template", "note": "" }, { - "SourceText": "Let's read a story!", - "text": "Masifunde indaba!", + "SourceText": "How to support my teen?", + "text": "Ngiyeseka kanjani ingane yami?", "type": "template", "note": "" }, { - "SourceText": "Think Together", - "text": "Cabangani Ndawonye", + "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", + "text": "- Tshela umntwana wakho ukuthi kukhona oshonile - kwesinye isikhathi baye bangakuqapheli lokhu.\n- Ukubatshela kuyinto ethatha isikhathi, hayi into engumcimbi. Kungadingeka ubantshele kaningana.\n- Sebenzisa amagama abawaqondayo.\n-Uma abantwana abancane bengaqondi ukuthi kuyini ukushona komuntu, zama ukubacacisela ukuthi umuntu abamthandayo angeke asabuya. Zama ukungasho ukuthi 'ulele' noma 'uthathe uhambo'.\n- Abantwana asebethe ukukhula bangakuqonda ukuthi kuyini ukushona komuntu, kodwa bangasokola ukukhuluma noma ukumelana nemizwa yabo.\n- Intsha ingamelana nalesisimo ngezindlela ezahlukahlukene: ukukhala, ukuthetha, ukungakholwa noma ithule kakhulu. Konke lokhu kulungile. Batshele ukuthi unabo.\n- Vumela ithuba lemibuzo nokuxoxa. Thembeka. Kulungile ukusho uma ungazi.", "type": "template", "note": "" }, { - "SourceText": "It's time to think together!", - "text": "Sekuyisikhathi sokucabanga ndawonye!", + "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", + "text": "Umntwana angaba nokudangala, ukucasuka, ukungaqondi, ukungakholwa, ukuzizwa ndikindiki, uzizwa engaphilile noma, amaphupho amabi nezinkinga esikoleni. Umntwana wakho angabukeka ejabulile kodwa ebephatheke kabi. Bangazizwa bevalelekile futhi bafune ukuchitha isikhathi nabangani. Bangabuye babonise ukuziphatha okungalindelekile noma ukuziphatha okunobungozi. Kungangenzi mnqodo lokhu kuwe kodwa konke kujwayekile.\n-Abantwana bangazizwa ngathi kuyiphutha labo - ukuthi yibona abadlulise igciwane noma baziphathe kabi. Batshele ngokucacile ukuthi abenzanga lutho olubi.", "type": "template", "note": "" }, { - "SourceText": "Think", - "text": "Cabanga", + "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", + "text": "-Chaza ukuthi usizi luza nemizwa eminingi nezenzo ezingi. Tshengisa umntwana wakho ukuthi uyathandwa futhi unakekelwe, umkhuthaze ukuthi akhulume ngemizwa yakhe noma ayibhale phansi noma ayidwebe.\n-Uma kuneqembu elesekanayo angaba yingxenye yalo umntwana, kungasiza.\n-Uma umntwana ekhuluma ngokufuna ukuzilimaza noma ukuzibulala, cela usizo komunye umuntu ngokushesha.\n-Uma ungakwazi, gcina izinqubo zenjwayelo zansuku zonke, lokhu kungaba yiduduza entsheni.\n-Kungayisiza intsha ukuba yingxenye yamasiko noma imisebenzi emayalana nokushona komuntu - ukukhetha iculo noma ukusho okuthile.\n-Ukuchitha imizuzu embalwa nsuku zonke ugxile emntwaneni wakho kuyamsiza ekutheni azizwe evikelekile futhi kumnikeze ithuba lokuphumula noma lokuxoxa ngeznto ezimkhathazayo.", "type": "template", "note": "" }, { - "SourceText": "It's time to think!", - "text": "Yisikhathi sokucabanga!", + "SourceText": "How did it go?", + "text": "Kuhambe kanjani?", "type": "template", "note": "" }, { - "SourceText": "Learn Together", - "text": "Fundani Ndawonye", + "SourceText": "Reply", + "text": "Phendula", "type": "template", "note": "" }, { - "SourceText": "It's time to learn and practice together!", - "text": "Yisikhathi sokufunda nokuzijwayeza ndawonye!", + "SourceText": "Timer", + "text": "Isibali sikhathi", "type": "template", "note": "" }, { - "SourceText": "Learn", - "text": "Funda", + "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", + "text": "Cindezela unxantathu ukukusiza ugcine le ngxoxo kumizuzu we- @ local.timer_duration.", "type": "template", - "note": "" + "note": "The string @local.timer_duration should not be translated." }, { - "SourceText": "It's time to learn and practice!", - "text": "Yisikhathi sokufunda nokuzijwayeza!", + "SourceText": "Video", + "text": "Ividiyo", "type": "template", "note": "" }, { - "SourceText": "Customise @global.parent_app", - "text": "Hlela Ngendlela Oyithandayo @global.parent_app", + "SourceText": "You selected less than @local.threshold", + "text": "Ukhethe okungaphansi kuka @local.threshold", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.threshold should not be translated." }, { - "SourceText": "Give me quick parenting tips", - "text": "Nginike amacebiso asheshayo okuba umzali noma okukhulisa ingane", + "SourceText": "Start Positively Together", + "text": "Qalani Kahle Ndawonye", "type": "template", "note": "" }, { - "SourceText": "Something really bad happened", - "text": "Kwenzeka okuthile okubi kakhulu", + "SourceText": "It's great to see you again! \n\nLet's start with caring for you.", + "text": "Kuhle ukukubona futhi! \n\nAke siqale ngokunakekela wena.", "type": "template", "note": "" }, { - "SourceText": "I have technical problems with the app", - "text": "Nginezinkinga zobuchwepheshe ngohlelo lokusebenza kwe app", + "SourceText": "Take turns:\n* Share: How are you feeling today?\n* Praise someone in your group for something they did well this week!\n\nRemember that no matter how you feel, it’s great you are here. You all deserve praise.", + "text": "Shintshisanani:\n* Yabelana: Uzizwa kanjani namuhla?\n* Ncoma othile eqenjini lakho ngokuthile akwenze kahle kuleli sonto!\n\nKhumbula ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha. Nonke nifanelwe ukunconywa.", "type": "template", "note": "" }, { - "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", - "text": "Uzothola amacebiso esicabanga ukuthi angase abe usizo kuwe la, ngokusekelwe ezimpendulweni zakho zokuhlelwa kwe-app.", + "SourceText": "We all have negative thoughts sometimes.", + "text": "Sonke siyaba nayo imicabango emibi ngezinye izikhathi.", "type": "template", "note": "" }, { - "SourceText": "WHO Website", - "text": "Iwebusayithi Ye-WHO", + "SourceText": "\"I am a failure\"", + "text": "\"Ngiyisahluleki\"", "type": "template", "note": "" }, { - "SourceText": "UNICEF Website", - "text": "Iwebusayithi eye-UNICEF", + "SourceText": "What to do?", + "text": "Kufanele ngenzeni?", "type": "template", "note": "" }, { - "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", - "text": "Ukuba ngumzali ngesikhathi se-COVID kunzima. Ziqhenye ngawe ngokwenza lokhu kuze kube manje.\n\nSisebenza kokuqukethwe okusha la ukukusiza ngokukhuluma nentsha yakho nezingane nge-COVID.\n\nUlwazi olusesikhathini samanje ku-COVID-19 lungatholakala kumawebhusayithi we-WHO nawe-UNICEF:", + "SourceText": "Examples", + "text": "Izibonelo", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", - "text": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-WHO.", + "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", + "text": "Ukuzitshela noma ukutshela mntwana wakho ukuthi imani noma usho into enhle futhi ehlukile kwesinye isikhathi akusebenzi.", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", - "text": "I-URL ithi https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "SourceText": "\"I do everything perfectly\"", + "text": "\"Konke ngikwenza kahle kakhulu\"", "type": "template", "note": "" }, { - "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", - "text": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-UNICEF.", + "SourceText": "Instead, you can ask:", + "text": "Kunalokho, ungabuza/ungacela", "type": "template", "note": "" }, { - "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", - "text": "I-URL ithi: https://www.unicef.org/coronavirus/covid-19", + "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", + "text": "- Ingabe lomcabango ungowoqobo? Eziphi ezinye izincazelo?\n- Kwenzakalani uma ngiqhubeka ukukholelwa kulomcabango?\n- Ngingathini kumngani uma enalomcabango?", "type": "template", "note": "" }, { - "SourceText": "Update my parenting experiences", - "text": "Vuselela isipiliyoni sami ​​njengomzali", + "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", + "text": "Kunzima, kodwa uzama ngakho konke okusemandleni futhi sizobambisana ekutholeni isixazululo\"", "type": "template", "note": "" }, { - "SourceText": "Update my personal details", - "text": "Vuselela imininingwane yesiqu sami", + "SourceText": "\"It’s your fault\"", + "text": "\"Iphutha lakho\"", "type": "template", "note": "" }, { - "SourceText": "Update my workshop options", - "text": "Vuselela izinketho zami zomhlangano wokufundisana", + "SourceText": "\"Let’s come up with a solution together\"", + "text": "\"Masiqhamuke nesisombululo ngokubambisana\"", "type": "template", "note": "" }, { - "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", - "text": "Ngabe uhlangabezana nezinkinga ezithile zobuchwepheshe? Sazise futhi usisize ukwenza \n@global.parent_app ibengcono!", + "SourceText": "\"I lost my job\"", + "text": "\"Ngilahlekelwe umsebenzi\"", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Type your name (optional)", - "text": "Bhala igama lakho (uma sufisa)", + "SourceText": "\"I learned a lot in my job – that will help me find another one\"", + "text": "\"Kuningi engikufundile emsebenzini wami - lokho kuzongisiza ekutholeni omunye\"", "type": "template", "note": "" }, { - "SourceText": "Contact me on @global.whatsapp", - "text": "Ngithinte ku @global.whatsapp", + "SourceText": "\"Nobody likes me\"", + "text": "\"Akekho umuntu ongithandayo\"", "type": "template", - "note": "The string @global.whatsapp should not be translated." + "note": "" }, { - "SourceText": "Type your phone number", - "text": "Cofa inombolo yakho yocingo", + "SourceText": "\"Last week I did have a great time with...\"", + "text": "Kulelisonto eledlule ngibe naso isikhathi esimunandi no...\"", "type": "template", "note": "" }, { - "SourceText": "Contact me via email", - "text": "Ngithinte nge-imeyili", + "SourceText": "\"Bad things always happen to me\"", + "text": "\"Ngihlale ngehlelwa izinto ezimbi\"", "type": "template", "note": "" }, { - "SourceText": "Type your email address", - "text": "Bhala ikheli lakho le-imeyili la", + "SourceText": "\"This good thing happened the other day...\"", + "text": "\"Lento enhle isike yenzekile ngelanga eledlule...\"", "type": "template", "note": "" }, { - "SourceText": "Tell us about your issue", - "text": "Sitshele ngenkinga yakho", + "SourceText": "Change", + "text": "Shintsha", "type": "template", "note": "" }, { - "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", - "text": "Ngesikhathi umama eqala ukungibuza ukuthi ngiyafuna yini ukuchitha isikhathi naye, ngamtshela ukuthi angiyeke ngoba ngangisadlala umdlalo wami. Kodwa waphoqa njengoba ehlezi enza. Ngamtshela ukuthi angangiibukela njengoba ngidlala uma kuyilokho akufunayo. Ngemva kwemizuzu embalwa waqala ukungibuza imibuzo ngomdlalo. Kwakucasula ekuqaleni, kodwa ngemva kwesikhathi ngase ngijabule ngoba ekugcineni wayebonisa ukuthi uyayithanda into engiyenzayo. Waze wacela nokudlala!", + "SourceText": "You’ve completed this week’s workshop.", + "text": "Uwuqedile umhlangano wokufundisana waleli sonto.", "type": "template", "note": "" }, { - "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", - "text": "Ubaba wangitshela ukuthi ngidlala ngokweqile i-basketball masengi phumile esikoleni, ngakho ke kumelwe kubekwe umthetho womndeni. Wangithembisa ukuthi sizocabanga ngesixazululo ndawonye, ukuze sizijabulise sobabili. Ngangingacabangi ukuthi lokho kungenzeka kodwa ngathi, “KULUNGILE, ake sizame”. Sabonisana sabe sesivumelana ngokuthi umthetho uzoba ukuthi kuvumelekile ukudlala i-basketball masengi wenzile umsebenzi wasesikoleni nowasekhaya kuze kube isikhathi sesidlo sakusihlwa njengomndeni. Kunzima kumina ukubona abangane bami bedlala lapho isikole sesiphumile, ngakho ke ngenza okusemandleni ami ukuba ngiqede umsebenzi wasekhaya kuqala bese ngiyahamba ngiyodlala nabo. Manje senginesikhathi sonke kusihlwa sokwenza ezinye izinto engifuna ukuzenza ngemva kokudla isidlo sakusihlwa njengomndeni njengokubukela i-basketball ku-NBA.", + "SourceText": "See you soon.", + "text": "Sizokubona maduzane.", "type": "template", "note": "" }, { - "SourceText": "You will find the in-week messages from the previous workshops here.", - "text": "Uzothola imilayezo yaphakathi nesonto evela kumasifundisane edlule lapha.", + "SourceText": "You can always find these tools in the @global.parent_centre", + "text": "Lezi zindlela zokusebenza ungazithola njalo ku @global.parent_centre", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "Next week, you’ll share with your group how your home practice went. You can also support and remind each other during the week.", + "text": "Ngesonto elizayo, uzoxoxela iqembu lakho indlela okuhambe ngayo ukuzijwayeza ekhaya. Ningasekelana futhi nikhumbuzane phakathi nesonto.", "type": "template", "note": "" }, { - "SourceText": "How would you like to do this workshop?", - "text": "Ungathanda ukukwenza kanjani umhlangano wokufundisana?", + "SourceText": "Home Practice", + "text": "Ukuzijwayeza Ekhaya", "type": "template", "note": "" }, { - "SourceText": "Coming soon", - "text": "Kuyeza maduze", + "SourceText": "Small actions, big results! Parents who practice their workshop skills at home get better results.", + "text": "Izenzo ezincane, imiphumela emikhulu! Abazali abazijwayeza ekhaya amakhono abawathole ekuqeqeshweni yemhlangano wokufundisana bathola imiphumela emihle.", "type": "template", "note": "" }, { - "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", - "text": "Sizodinga ukuxoxa ngezinye izingqinamba zokukhulisa izingane ngaphambi kokuthi siqale ukusebenza \nku- @ local.workshop_data.title.\n\nUngathola izicebiso ezibalulekile ku @local.workshop_data.title nge @global.parent_centre.", + "SourceText": "talk to their teens about how they feel", + "text": "xoxa nentsha yabo ngendlela ezizwa ngayo", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" + "note": "" }, { - "SourceText": "My name", - "text": "Igama lami", + "SourceText": "talk to your teen about how you feel", + "text": "xoxa nengane yahoo esebusheni bayo ngendlela ozizwa ngayo", "type": "template", "note": "" }, { - "SourceText": "@global.weekly_workshop day", - "text": "Usuku lwe @global.weekly_workshop", + "SourceText": "Did you experience any challenges when trying to @local.hp_description_second_singular?", + "text": "Ingabe uhlangabezane nezinselele ngenkathi uzama ukuthi @local.hp_description_second_singular?", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "I do the workshops...", - "text": "Ngenza umhlangano wokufundisana...", + "SourceText": "What was difficult for you when trying to @local.hp_description_second_singular?", + "text": "Yini oyithole inzima kuwena ngenkathi uzama ukuthi @local.hp_description_second_singular?", "type": "template", - "note": "" + "note": "The string @local.hp_description_second_singular should not be translated." }, { - "SourceText": "My group's name", - "text": "Igama leqembu lami", + "SourceText": "Sorry we missed this!", + "text": "Siyaxolisa asikubonanga lokhu!", "type": "template", "note": "" }, { - "SourceText": "My group is now doing the workshop...", - "text": "Iqembu lami lenza umhlangano wokufundisana...", + "SourceText": "Do you want to share it with us?", + "text": "Uyafisa ukuxoxisana ngakho nathi?", "type": "template", "note": "" }, { - "SourceText": "I am now doing the workshop...", - "text": "Manje ngenze umhlangano wokufundisana...", + "SourceText": "Thank you for sharing your challenge! We will use this feedback to make @global.parent_app better.", + "text": "Siyabonga ngokwabelana ngenselelo yakho! Sizosebenzisa le mpendulo ukwenza i-@global.parent_app ibe ngcono.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", - "text": "Ingabe uyaqiniseka ukuthi ufuna ukuvula yonke imhlangano yokufundisana? Lapho usukuvulile khona ngeke usakwazi ukuphinde ukukhiye futhi", + "SourceText": "Sorry to hear the tips did not help you.", + "text": "Uxolo ukuzwa amacebiso awakusizanga.", "type": "template", "note": "" }, { - "SourceText": "You can always find these tools in the @global.parent_centre", - "text": "Lezi zindlela zokusebenza ungazithola njalo ku @global.parent_centre", + "SourceText": "Do you want to share with us what you think would help you?", + "text": "Uyafuna ukwabelana nathi ngalokho ocabanga ukuthi kungakusiza?", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Add this activity to @global.my_activities", - "text": "Faka lo msebenzi ku @global.my_activities", + "SourceText": "Thank you for sharing! You are an awesome parent for trying to spend time with your teen. It makes all the difference. Keep up the good work, and remember, I am always here to support!", + "text": "Siyabonga ngokwabelana nathi! Ungumzali omuhle ngenxa yokuzama ukuchitha isikhathi nengane yakho esebusheni yakho lokho kwenza umehluko omkhulu. Qhubeka wenza umsebenzi omuhle, ukhumbule ukuthi ngihlale ngilapha ukuze ngikusekele!", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Relaxation activities", - "text": "Imisebenzi yokuphumula", + "SourceText": "Language", + "text": "Ulimi", "type": "template", "note": "" }, { - "SourceText": "Something fun to do with your teen", - "text": "Okuthile okumnandi okokwenza nengane yakho esebusheni bayo", + "SourceText": "Learn Together", + "text": "Fundani Ndawonye", "type": "template", "note": "" }, { - "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", - "text": "Awokongezi noma imiphi imisebenzi yokuphumula ku- @ global.my_relaxes okwamanje. Kungani ungakhekhi ozokwenza?", + "SourceText": "It's time to learn and practice together!", + "text": "Yisikhathi sokufunda nokuzijwayeza ndawonye!", "type": "template", - "note": "The string @global.my_relaxes should not be translated." + "note": "" }, { - "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", - "text": "Awukongezi imisebenzi ku @ global.my_activities okwamanje. Kungani ungakhethi ozokwenza?", + "SourceText": "Learn", + "text": "Funda", "type": "template", - "note": "The string @global.my_activities should not be translated." + "note": "" }, { - "SourceText": "Open Survey", - "text": "Vula Ucwaningo", + "SourceText": "It's time to learn and practice!", + "text": "Yisikhathi sokufunda nokuzijwayeza!", "type": "template", "note": "" }, { - "SourceText": "Select Language", - "text": "Khetha ulimi", + "SourceText": "Listen Together", + "text": "Lalelani Ndawonye", "type": "template", "note": "" }, { - "SourceText": "Workshop Options", - "text": "Umhlangano wokufundisana ongakhetha kukho", + "SourceText": "Let's listen to an audio together!", + "text": "Masilalele okuqoshiwe ndawonye!", "type": "template", "note": "" }, { - "SourceText": "Unlock Workshops", - "text": "Vula umhlangano wokufundisana", + "SourceText": "Listen", + "text": "Lalela", "type": "template", "note": "" }, { - "SourceText": "Demo Presentation", - "text": "Ukuboniswa noma Isethulo somkhiqizo", + "SourceText": "Let's listen to an audio!", + "text": "Masilalele okuqoshiwe!", "type": "template", "note": "" }, { - "SourceText": "Organisation Registration", - "text": "Ukubhaliswa Kwenhlangano", + "SourceText": "Hi @fields.user_name! This week you did:", + "text": "Sawubona @fields.user_name! Kuleli sonto wenze lokhu:", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Developer Mode", - "text": "Uhlelo Lonjiniyela", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points amaphuzu!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" }, { - "SourceText": "Unlock all workshops", - "text": "Vula yonke imihlangano yokufundisana", + "SourceText": "That’s wonderful!", + "text": "Kuhle kakhulu lokho!", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will unlock all the workshops.\n\nNOTE: Users should not use this functionality to unlock workshops, this is not recommended unless strictly necessary.", - "text": "Ngokuchofoza inkinobho engezansi uzovula konke ukuqeqeshwa.\n\nQAPHELA: Abasebenzisi akufanele basebenzise lokhu ukuze bavule ukuqeqeshwa, lokhu akutuswa ngaphandle uma kudingeka ngempela.", + "SourceText": "Nice work!", + "text": "Umsebenzi omuhle!", "type": "template", "note": "" }, { - "SourceText": "Unlock workshops", - "text": "Vula umhlangano wokufundisana", + "SourceText": "Your commitment is not taken for granted.", + "text": "Ukuzibophezela kwakho akusiyona into encane.", "type": "template", "note": "" }, { - "SourceText": "All workshops are now unlocked.", - "text": "Yonke imhlangano wokufundisana isivuliwe manje.", + "SourceText": "Keep up the good work!", + "text": "Qhubeka nokwenza umsebenzi omuhle!", "type": "template", "note": "" }, { - "SourceText": "By clicking in the button below you will reset the app to its initial settings. \n\nThis means that all your progress and usage data will be deleted and your app will work as if it was just installed for the first time.\n\nNOTE: Resetting the app is permanent and you will not be able to recover any information.", - "text": "Ngokuchofoza inkinobho engezansi uzoqalisa kabusha i-app ibuyele kulamasethingi ayo asekuqaleni. \n\nLokhu kucaza ukuthi yoke iinqubekela phambili yakho yentuthuko nokusebenzisa izoqalela phansi futhi i-app yakho izoba sengathi isanda kufakwa.\n\nQAPHELA: Ukusetha kabusha uhlelo le-app lokusebenza kungunaphakade futhi ngeke ukwazi ukuthola noma yiluphi ulwazi.", + "SourceText": "This is lovely!", + "text": "Kuhle lokhu!", "type": "template", "note": "" }, { - "SourceText": "Reset App", - "text": "Setha kabusha uhlelo lokusebenza I-App", + "SourceText": "Tap yourself on the shoulder. You deserve this.", + "text": "Zithinte ehlombe. Kukufanele lokhu.", "type": "template", "note": "" }, { - "SourceText": "You have successfully entered developer mode.", - "text": "Ufake ngempumelelo imodi yonjiniyela.", + "SourceText": "Every @global.parent_point counts!", + "text": "Wonke @global.parent_point ubalulekile!", + "type": "template", + "note": "The string @global.parent_point should not be translated." + }, + { + "SourceText": "Relax now", + "text": "Phumula manje", "type": "template", "note": "" }, { - "SourceText": "You have entered an incorrect code.", - "text": "Ufake ikhodi engalungile. noma fake ikhodi ekungasiyona.", + "SourceText": "Did you relax already? Tap it!", + "text": "Ingabe usuphumulile nje? chofoze!", "type": "template", "note": "" }, { - "SourceText": "Language", - "text": "Ulimi", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Nansi imisebenzi emnandi ongayenza nengane yakho esebusheni bayo!", "type": "template", "note": "" }, { - "SourceText": "How did you hear about @global.parent_app?", - "text": "Uzwe kanjani nge @global.parent_app?", + "SourceText": "Continue @local.workshop_data.in_text_title", + "text": "Qhubeka @local.workshop_data.in_text_title", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "I found it myself", - "text": "Ngizitholele ngokwami", + "SourceText": "Start @local.workshop_data.in_text_title", + "text": "Qala @local.workshop_data.in_text_title", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "A friend or family", - "text": "Umngani noma ilunga lomndeni", + "SourceText": "Finish current workshop", + "text": "Qedelela lomhlangano wokufundisana wamanje", "type": "template", "note": "" }, + { + "SourceText": "How did you hear about @global.parent_app?", + "text": "Uzwe kanjani nge @global.parent_app?", + "type": "template", + "note": "The string @global.parent_app should not be translated." + }, { "SourceText": "Other", "text": "Ngenye indlela", @@ -780,8528 +792,7898 @@ "note": "" }, { - "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", - "text": "Ungase ucelwe ukuba wabelane ngale khodi nabantu abazokusekela @global.parent_app uhambo lwakho.", + "SourceText": "I found it myself", + "text": "Ngizitholele ngokwami", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Last sync at: @local.sync_latest", - "text": "Ukuxhumanisa kokungcina: @local.sync_latest", + "SourceText": "A friend or family", + "text": "Umngani noma ilunga lomndeni", "type": "template", - "note": "The string @local.sync_latest should not be translated." + "note": "" }, { - "SourceText": "This device has never been synced. Sync to reveal your code.", - "text": "Le divayisi ayikaze ixhunyaniswe. Yixhumanise khona kuzovela ikhodi yakho.", + "SourceText": "Quick Parenting Tips", + "text": "Amacebiso Asheshayo Okuba Umzali", "type": "template", "note": "" }, { - "SourceText": "Sync now", - "text": "Kuxhumanise manje", + "SourceText": "Raising teens can be hard, and we all struggle sometimes.", + "text": "Ukukhulisa intsha kungase kube nzima, futhi sonke sidonsa kanzima ngezinye izikhathi.", "type": "template", "note": "" }, { - "SourceText": "Syncing...", - "text": "Kuyaxhumana...", + "SourceText": "What is the main challenge you are experiencing right now?", + "text": "Iyiphi inselele enkulu obhekene nayo njengamanje?", "type": "template", "note": "" }, { - "SourceText": "You selected @local.threshold or less", - "text": "Ukhethe @local.threshold noma ngaphansi", + "SourceText": "My relationship with my teen is not good", + "text": "Ubudlelwane bami nengane yami esebusheni bayo abubuhle", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected more than @local.threshold", - "text": "Ukhethe okungaphezu kuka @local.threshold", + "SourceText": "My teen’s behaviour is difficult", + "text": "Ukuziphatha kwengane yami esebusheni bayo kuyinkinga", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Reply", - "text": "Phendula", + "SourceText": "I feel stressed, lonely, angry", + "text": "Ngizizwa ngicindezelekile, nginesizungu, ngithukuthele", "type": "template", "note": "" }, { - "SourceText": "Days in the past month", - "text": "Izinsuku enyangeni edlule", + "SourceText": "I have money worries", + "text": "Ngikhathazekile ngemali", "type": "template", "note": "" }, { - "SourceText": "Days in the past week", - "text": "Izinsuku esontweni elidlule", + "SourceText": "I worry about my teen’s safety", + "text": "Ngiyakhathazeka ngokuphepha kwengane yami esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "You selected less than @local.threshold", - "text": "Ukhethe okungaphansi kuka @local.threshold", + "SourceText": "We often fight in our family", + "text": "Sivame ukulwa emndenini wami", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Unlock for less than @local.threshold", - "text": "Vula okungaphansi kuka- @ local.threshold", + "SourceText": "I have a different problem…", + "text": "Nginenkinga ehlukile…", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "You selected @local.threshold or more", - "text": "Ukhethe @local.threshold noma ngaphezulu", + "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", + "text": "Ukwakha ubuhlobo obungcono kuqala ngokuchitha isikhathi ndawonye - ngisho nemizuzu emihlanu ngosuku iyawenza umehluko! Ekuqaleni, kungase kube nzima ukuchitha isikhathi ndawonye, njengoba sonke simatasa futhi izingane zethu ezisebusheni bazo zingase zizizwe zingeneme ngezinye izikhathi. Kodwa ukuchitha ngisho nemizuzu eyisihlanu-5 ngosuku ugxile enganeni yakho esebusheni bayo kuyasiza ekwakheni ukwethembana. Zama ukubuza ingane yakho esebusheni bayo ukuthi yini engathanda niyenze ndawonye. Kungaba mnandi futhi kukukhulule nawe!", "type": "template", - "note": "The string @local.threshold should not be translated." + "note": "" }, { - "SourceText": "Video", - "text": "Ividiyo", + "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", + "text": "Ungathola ukusekelwa okwengeziwe ngokuphathelene nendlela yokuchitha isikhathi nobabili nengane yakho esebusheni bayo la:", "type": "template", "note": "" }, { - "SourceText": "Timer", - "text": "Isibali sikhathi", + "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", + "text": "Yonke intsha ngezinye izikhathi iziphatha ngendlela engathandeki! Into eyodwa engasiza ekuziphatheni kwengane yakho esebusheni bayo ukuncoma ingane yakho noma nini lapho yenza kahle - noma ngabe kuncane kanjani. Izingane ezisebusheni bazo zingabukeka sengathi azikuthandi ukunconywa nguwe kodwa empeleni zikuthanda ngempela.", "type": "template", "note": "" }, { - "SourceText": "Press the triangle to help you keep this discussion to @local.timer_duration minutes.", - "text": "Cindezela unxantathu ukukusiza ugcine le ngxoxo kumizuzu we- @ local.timer_duration.", + "SourceText": "You can get more support here on how to encourage good behaviour through praising:", + "text": "Ungathola ukwesekwa okwengeziwe lapha mayelana nendlela yokukhuthaza ukuziphatha kahle ngokuncoma:", "type": "template", - "note": "The string @local.timer_duration should not be translated." + "note": "" }, { - "SourceText": "Options", - "text": "Ongakhetha kukho", + "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", + "text": "Ukucindezeleka kokuba umzali kuphezulu kakhulu njengamanje. Siyazi ukuthi ukuphila kungakhungathekisa kangakanani. Ukuzenzela into ethile kunganciphisa ukucindezeleka kwakho. Kukufanele lokhu! Lapho uzizwa ukhungathekile, zilawule ngokuthi udonse umoya ngokunensa kahlanu ngaphambi kokuba uphendule. Abazali abaningi bathole lokhu kuwusizo.", "type": "template", "note": "" }, { - "SourceText": "Home", - "text": "Ikhasi Lokuqala", + "SourceText": "You can get more support on how to take care of yourself here:", + "text": "Ungathola ukusekelwa okwengeziwe mayelana nendlela ongazinakekela ngayo la:", "type": "template", "note": "" }, { - "SourceText": "Settings", - "text": "Izilungiselelo", + "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", + "text": "Awuwedwa. Ukucindezeleka okubangelwa yimali kunzima kakhulu kubazali. Zama ukukhuluma nengane yakho esebushenibayo ngokuthi ingakanani imali engenayo nokuthi yini okudingeka nisebenzise imali kuyo njengomndeni inyanga ngenyanga. Lokhu kungayisiza iqonde ukuthi kungani ungeke ukwazi ukuthenga okuthile ekufunayo. Lapho wonke umuntu eqonda ukuthi imali iyaphi, kulula ukuvumelana nangokuthi ningayonga kanjani imali ndawonye!", "type": "template", "note": "" }, { - "SourceText": "Template", - "text": "Isifanekiso", + "SourceText": "You can get more support on how to budget and save here:", + "text": "Ungathola ukusekelwa okwengeziwe mayelana nokwenza isabelomali nokonga imali la:", "type": "template", "note": "" }, { - "SourceText": "Tour", - "text": "Uhambo", + "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", + "text": "Intsha ichitha isikhathi esiningi ingaphandle noma iku-inthanethi, lapho kunzima khona ngathi ukuba siyigcine iphephile - abazali abaningi bakhathazekile ngalokhu. Zama ukuqala ingxoxo nengane yakho esebusheni bayo ngezindawo eziphephile nezingaphephile emphakathini wakho naku-inthanethi (kungase kudingeke ukuba uzame izikhathi ezimbalwa). Kungenzeka yazi nalezo wena ongazazi. Lokhu kungakusiza ukuba nenze uhlelo ndawonye lwendlela yokuzigcina niphephile.", "type": "template", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Imiyalezo Yaphakathi Nesonto", + "SourceText": "You can get more support on how to keep your teen safe here:", + "text": "Ungathola ukusekelwa okwengeziwe mayelana nokugcina ingane yakho esebusheni bayo iphephile la:", "type": "template", "note": "" }, { - "SourceText": "Campaigns", - "text": "Imikhankaso", + "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", + "text": "Uma kuvela inkinga, zamani ukukhuluma ngayo ndawonye. Iyini kahle hle inkinga? Yiziphi izixazululo ezikhona kanti yimiphi imiphumela yezixazululo ngasinye? Ngaleyo ndlela, ungathola isixazululo esingafanela wonke umuntu.", "type": "template", "note": "" }, { - "SourceText": "Notifications", - "text": "Imiyalezo", + "SourceText": "You can get more support on how to solve problems together here:", + "text": "Ungathola ukwesekwa okwengeziwe mayelana nendlela yokuxazulula izinkinga la:", "type": "template", "note": "" }, { - "SourceText": "About @global.parent_app", - "text": "Mayelana@global.parent_app", + "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", + "text": "Akulula ukunakekela imindeni yethu. Sonke sibhekana nezinselele ngezikhathi ezithile, kodwa le-app izokusiza ubhekane nazo ngokuphumelelayo. @global.parent_app isekelwe ocwaningweni lweminyaka eyishumi lwezinhlelo zokukhulisa izingane eNingizimu Afrika, futhi izinkulungwane zabazali ziye zathola ukuthi amacebiso anikezwayo ayasiza ekubhekaneni nezinselele eziningi zokukhulisa izingane. Sinethemba lokuthi le-app izokusiza kanye nomndeni wakho.\n\nNanka amanye amacebiso ayinhloko avivinyiwe angakusiza:", "type": "template", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.parent_app was developed by Parenting for Lifelong Health (PLH) – a worldwide collaboration between parenting experts from UNICEF, the WHO and Universities in South Africa and the UK, as well as African NGOs and families and teens all across Africa. Parents and teens worked with us on the app and helped to ensure it is easy-to-use, fun and engaging. Some of the content in this app, like suggestions of activities and illustrated stories, were created with parents and teens to make sure it fits families’ needs.\n\nParenting for Lifelong Health (PLH) is committed to supporting free and shareable parenting materials and programmes, to support parents worldwide to promote the well-being of their children.", - "text": "@global.parent_app yasungulwa yi-Parenting for Lifelong Health (PLH) - ngokusebenzisana komhlaba wonke phakathi kochwepheshe bokukhuliswa kwabantwana. Labochephes abakwa UNICEF, WHO, amaNyuvesi aseNingizimu Africa nase UK, nama NGO ase Africa kanye nemindeni nentsha yese Africa yonkana. Abazali nentsha basebenzisane nathi kule app futhi basiza ekuqinisekiseni ukuthi kulula ukuyisebenzisa, iyajabulisa futhi iyaheha. Okunye okuqukethwe ile-app, njengeziphakamiso zemisebenzi,izitori ezinezithombe zasungulwa ngokubambisana nabazali nentsha ukuqinisekisa ukuthi ihambisana nezidingo zemindeni.\n\nI-Parenting for Lifelong Health (PLH) izinikele ekutheni ixhase mahala futhi ngokwabelekayo izinto zokukhulisa abantwana nezinye izinhlelo, nokweseka abazali umhlaba wonke ngenhloso yokugqugquzela inhlalakahle yabantwana babo.", + "SourceText": "Start your first parenting workshop", + "text": "Qala umhlangano wokufundisana wakho wokuqala wokuba umzali", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Finish current workshop", - "text": "Qedelela lomhlangano wokufundisana wamanje", + "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", + "text": "Uzothola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Nansi imisebenzi emnandi ongayenza nengane yakho esebusheni bayo!", + "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", + "text": "Ungathola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Start @local.workshop_data.in_text_title", - "text": "Qala @local.workshop_data.in_text_title", + "SourceText": "Start the @local.workshop_data.in_text_title", + "text": "Qala i-@local.workshop_data.in_text_title", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Continue @local.workshop_data.in_text_title", - "text": "Qhubeka @local.workshop_data.in_text_title", + "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", + "text": "Qedela i-@local.workshop_data.in_text_title ukuze uthole ukwesekwa okwengeziwe.", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @fields.user_name! This week you did:", - "text": "Sawubona @fields.user_name! Kuleli sonto wenze lokhu:", + "SourceText": "Continue the @local.workshop_data.in_text_title", + "text": "Qhubeka ne-@local.workshop_data.in_text_title", "type": "template", - "note": "The string @fields.user_name should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points amaphuzu!", + "SourceText": "Re-access the @local.workshop_data.in_text_title", + "text": "Phinde ungene ku-@local.workshop_data.in_text_title", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@global.parent_app\n@global.parent_points" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "That’s wonderful!", - "text": "Kuhle kakhulu lokho!", + "SourceText": "CHAT", + "text": "Xoxa", "type": "template", "note": "" }, { - "SourceText": "Nice work!", - "text": "Umsebenzi omuhle!", + "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", + "text": "Xoxa ngokuthi uzizwa kanjani, ukhuthaze umntwana ukuthi akhulume ngalokho okubakhathazayo nabo. Nizozwisisana kangcono nenze icebo elihle ndawonye ukuze nihlale ninempilo futhi nijabulile!", "type": "template", "note": "" }, { - "SourceText": "Your commitment is not taken for granted.", - "text": "Ukuzibophezela kwakho akusiyona into encane.", + "SourceText": "CAUTION", + "text": "Qaphela", "type": "template", "note": "" }, { - "SourceText": "Keep up the good work!", - "text": "Qhubeka nokwenza umsebenzi omuhle!", + "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", + "text": "Thola ulwazi lwakho kwimithombo ethembekile khona uzoba nokuzethemba kulezizikhathi ezingaqinisekile. Siyezwa futhi sibona izindaba eziningi kwabanye abantu, emafonini, TV, intanethi. Ingabe kukwenza ungabaze, ukhathazeke, usabe, ucasuke noma udideke? Hlola ngaphambi kokuthi udlulisele kwabanye nagaphambi kokuthi wenze!", "type": "template", "note": "" }, { - "SourceText": "This is lovely!", - "text": "Kuhle lokhu!", + "SourceText": "CHOOSE", + "text": "Khetha", "type": "template", "note": "" }, { - "SourceText": "Tap yourself on the shoulder. You deserve this.", - "text": "Zithinte ehlombe. Kukufanele lokhu.", + "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", + "text": "Kungabanzima ukuthatha izinqumo ezifanele ezigcina wonke umuntu ephilile futhi ephephile. Ikakhulukazi kulezizikhati. Ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle.", "type": "template", "note": "" }, { - "SourceText": "Every @global.parent_point counts!", - "text": "Wonke @global.parent_point ubalulekile!", + "SourceText": "CHILL", + "text": "Phumula", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Relax now", - "text": "Phumula manje", + "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", + "text": "Ngesinye isikhathi siba nengcindezi. Donsa umphefumulo kakhulu noma nenze into ejabulisayo ndawonye. Kungenza omkhulu umehluko lokhu ekwenzeni ikhaya lakho libe nentokozo nokuthula. Nanka amacebo ongawazama:", "type": "template", "note": "" }, { - "SourceText": "Did you relax already? Tap it!", - "text": "Ingabe usuphumulile nje? chofoze!", + "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", + "text": "Imicabango emibi isenza sisho izinto ezimbi. Zama ukushintsha lokhu okubi okucabangayo ukwenze kube umcabango omuhle!", "type": "template", "note": "" }, { - "SourceText": "Looking after yourself matters.", - "text": "Kubalulekile ukuzinakekela.", + "SourceText": "WHO Website", + "text": "Iwebusayithi Ye-WHO", "type": "template", "note": "" }, { - "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", - "text": "Kuhle! Kuhle uzwa ukuthi kuhamba kahle namuhla. Umuzwa umuhle lowo!", + "SourceText": "UNICEF Website", + "text": "Iwebusayithi eye-UNICEF", "type": "template", "note": "" }, { - "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", - "text": "Ngezinye izikhathi izinto zihamba kahle. Ngezinye izikhathi azihambi kahle. Futhi ngezinye izikhathi asazi ukuthi sicabangeni.... kulungile lokho! Khumbula ukuthi awuwedwa.", + "SourceText": "Parenting during COVID is hard. Be proud of yourself for making it this far.\n\nWe are working on new content here to support you with talking to your teens and children about COVID.\n\nThe most up to date information on COVID-19 can be found on the WHO and UNICEF websites:", + "text": "Ukuba ngumzali ngesikhathi se-COVID kunzima. Ziqhenye ngawe ngokwenza lokhu kuze kube manje.\n\nSisebenza kokuqukethwe okusha la ukukusiza ngokukhuluma nentsha yakho nezingane nge-COVID.\n\nUlwazi olusesikhathini samanje ku-COVID-19 lungatholakala kumawebhusayithi we-WHO nawe-UNICEF:", "type": "template", "note": "" }, { - "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", - "text": "Kuhle kakhulu lokhu, ikakhulu ezikhathini ezinzima njengalezi. Uyiqhawe.", + "SourceText": "This button will take you to the Coronavirus section of the official UNICEF website.", + "text": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-UNICEF.", "type": "template", "note": "" }, { - "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", - "text": "Siyazi ukuthi kukukhathaza kangakanani ukukhulisa izingane kulezi zinsuku. Ukufunda ukulawula ingcindezi kusiza wena - nomndeni wakho.", + "SourceText": "The URL is https://www.unicef.org/coronavirus/covid-19", + "text": "I-URL ithi: https://www.unicef.org/coronavirus/covid-19", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", - "text": "Sanibonani nonke. \n\nIsihloko sanamuhla sikhuluma ngokulawula ingcindezi. \n\nKubalulekile ukukwazi ukulawula ingcindezi yethu. Ngezinye izikhathi izingane zethu zingaziphatha ngendlela eyenza sibe nengcindezi futhi nathi njengabazali singenza izingane zethu zibe nengcindezi. \n\nNgakho-ke, kubalulekile ukuqaphela lapho sizizwa sinengcindezi bese siyema kancane siphefumule. Lokho kuzokusiza ukulawula ingcindezi kuwe.", + "SourceText": "This button will take you to the Coronavirus section of the official WHO website.", + "text": "Le nkinobho izokusa esigabeni seCoronavirus sewebhusayithi esemthethweni ye-WHO.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "The URL is https://www.who.int/emergencies/diseases/novel-coronavirus-2019", + "text": "I-URL ithi https://www.who.int/emergencies/diseases/novel-coronavirus-2019", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", - "text": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza indaba - okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Update my parenting experiences", + "text": "Vuselela isipiliyoni sami ​​njengomzali", "type": "template", "note": "" }, { - "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", - "text": "Ake sibheke isibonelo sendlela ingcindezi engaba mandla ngayo ngezinye izikhathi, kithi sonke:", + "SourceText": "Update my personal details", + "text": "Vuselela imininingwane yesiqu sami", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", - "text": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver: “Ngiyeke phansi unake izindaba zakho!”", + "SourceText": "Update my workshop options", + "text": "Vuselela izinketho zami zomhlangano wokufundisana", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", - "text": "@global.w_stress_teen_boy_1: “Ngenzeni? Awukaze ungilalele!” \n\n@global.w_stress_male_caregiver: “Ngithe ngiyeke uma kungenjalo ngizokushaya!”", + "SourceText": "Give me quick parenting tips", + "text": "Nginike amacebiso asheshayo okuba umzali noma okukhulisa ingane", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", - "text": "@global.w_stress_girl: “Bheka! Ngakhe indlu!”", + "SourceText": "Something really bad happened", + "text": "Kwenzeka okuthile okubi kakhulu", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", - "text": "@global.w_stress_teen_boy_1: “Ubani onendaba nendlu yakho embi!”", + "SourceText": "I have technical problems with the app", + "text": "Nginezinkinga zobuchwepheshe ngohlelo lokusebenza kwe app", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", - "text": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani? Kanye no-@global.w_stress_male_caregiver wakhe? Kanye @global.w_stress_girl?\n\nYini @global.w_stress_male_caregiver abengayenza ngokuhlukile?", + "SourceText": "You will find the in-week messages from the previous workshops here.", + "text": "Uzothola imilayezo yaphakathi nesonto evela kumasifundisane edlule lapha.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", - "text": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani?", + "SourceText": "You have not added any activities to @global.my_activities yet. Why don't you choose some?", + "text": "Awukongezi imisebenzi ku @ global.my_activities okwamanje. Kungani ungakhethi ozokwenza?", "type": "template", - "note": "The string @global.w_stress_teen_boy_1 should not be translated." + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "And @global.w_stress_male_caregiver?", - "text": "Futhi @global.w_stress_male_caregiver?", + "SourceText": "You have not added any relaxation activities to @global.my_relaxes yet. Why don't you choose some?", + "text": "Awokongezi noma imiphi imisebenzi yokuphumula ku- @ global.my_relaxes okwamanje. Kungani ungakhekhi ozokwenza?", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "And @global.w_stress_girl?", - "text": "Futhi @global.w_stress_girl?", + "SourceText": "You will find tips that we think you may find useful here, based on your answers to the app customisation.", + "text": "Uzothola amacebiso esicabanga ukuthi angase abe usizo kuwe la, ngokusekelwe ezimpendulweni zakho zokuhlelwa kwe-app.", "type": "template", - "note": "The string @global.w_stress_girl should not be translated." + "note": "" }, { - "SourceText": "Scared", - "text": "Ngethukile", + "SourceText": "Relaxation activities", + "text": "Imisebenzi yokuphumula", "type": "template", "note": "" }, { - "SourceText": "Each of them was feeling upset for their own reason!", - "text": "Ngamunye wabo ubezizwa ediniwe ngezizathu zabo!", + "SourceText": "Something fun to do with your teen", + "text": "Okuthile okumnandi okokwenza nengane yakho esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_stress_male_caregiver have done differently?", - "text": "Kungaba yini @global.w_stress_male_caregiver ayenze ngokuhlukile?", + "SourceText": "Are you experiencing any technical issues? Let us know and help to make @global.parent_app better!", + "text": "Ngabe uhlangabezana nezinkinga ezithile zobuchwepheshe? Sazise futhi usisize ukwenza \n@global.parent_app ibengcono!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Recognise why he feels stressed", - "text": "Thola ukuthi kungani ezizwa enengcindezi", + "SourceText": "Type your name (optional)", + "text": "Bhala igama lakho (uma sufisa)", "type": "template", "note": "" }, { - "SourceText": "Take a deep breath and speak calmly", - "text": "Phefumula bese ukhuluma ngezwi elizolile", + "SourceText": "Contact me on @global.whatsapp", + "text": "Ngithinte ku @global.whatsapp", + "type": "template", + "note": "The string @global.whatsapp should not be translated." + }, + { + "SourceText": "Type your phone number", + "text": "Cofa inombolo yakho yocingo", "type": "template", "note": "" }, { - "SourceText": "Show he understands his teen’s feelings", - "text": "Ubonisa ukuthi uyayiqonda imizwa yengane yakhe", + "SourceText": "Contact me via email", + "text": "Ngithinte nge-imeyili", "type": "template", "note": "" }, { - "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", - "text": "Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye", + "SourceText": "Type your email address", + "text": "Bhala ikheli lakho le-imeyili la", "type": "template", "note": "" }, { - "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", - "text": "Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", + "SourceText": "Tell us about your issue", + "text": "Sitshele ngenkinga yakho", "type": "template", "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver could...", - "text": "@global.w_stress_male_caregiver anga...", + "SourceText": "The first time my mother asked me if I wanted to spend time with her, I told her to leave me alone because I was in the middle of a game. But she insisted like she always does. I said she could watch me playing if that's what she wanted. After a few minutes she started asking me questions about the game. It was annoying at the beginning, but after a while I was happy that she was finally interested in what I was doing. She even gave it a try!", + "text": "Ngesikhathi umama eqala ukungibuza ukuthi ngiyafuna yini ukuchitha isikhathi naye, ngamtshela ukuthi angiyeke ngoba ngangisadlala umdlalo wami. Kodwa waphoqa njengoba ehlezi enza. Ngamtshela ukuthi angangiibukela njengoba ngidlala uma kuyilokho akufunayo. Ngemva kwemizuzu embalwa waqala ukungibuza imibuzo ngomdlalo. Kwakucasula ekuqaleni, kodwa ngemva kwesikhathi ngase ngijabule ngoba ekugcineni wayebonisa ukuthi uyayithanda into engiyenzayo. Waze wacela nokudlala!", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", - "text": "* Thola ukuthi kungani ezizwa enengcindezi\n* Phefumula bese ukhuluma ngezwi elizolile \n* Ubonisa ukuthi uyayiqonda imizwa yengane yakhe \n* Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye\n* Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", + "SourceText": "My father told me I’m playing too much basketball after school, so we must set a family rule. He promised we'll think about a solution together, so we both feel good about it. I didn't believe it's possible but said, “OK, let's try”. We negotiated and agreed that the rule will be playing basketball is allowed after doing homework and until family dinner. It is hard for me to see my friends playing after school, so I'm doing my best to finish homework first and join them. I also have now the whole evening to do other things I want after the family dinner like watching basketball in the NBA.", + "text": "Ubaba wangitshela ukuthi ngidlala ngokweqile i-basketball masengi phumile esikoleni, ngakho ke kumelwe kubekwe umthetho womndeni. Wangithembisa ukuthi sizocabanga ngesixazululo ndawonye, ukuze sizijabulise sobabili. Ngangingacabangi ukuthi lokho kungenzeka kodwa ngathi, “KULUNGILE, ake sizame”. Sabonisana sabe sesivumelana ngokuthi umthetho uzoba ukuthi kuvumelekile ukudlala i-basketball masengi wenzile umsebenzi wasesikoleni nowasekhaya kuze kube isikhathi sesidlo sakusihlwa njengomndeni. Kunzima kumina ukubona abangane bami bedlala lapho isikole sesiphumile, ngakho ke ngenza okusemandleni ami ukuba ngiqede umsebenzi wasekhaya kuqala bese ngiyahamba ngiyodlala nabo. Manje senginesikhathi sonke kusihlwa sokwenza ezinye izinto engifuna ukuzenza ngemva kokudla isidlo sakusihlwa njengomndeni njengokubukela i-basketball ku-NBA.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", - "text": "Siyabonga ngokuthi nicabanga kanye nathi! Ake sibuyele emuva sibone lokho @global.w_stress_male_caregiver akwenzayo njengamanje:", + "SourceText": "Question Time", + "text": "Isikhathi Sombuzo", "type": "template", - "note": "The string @global.w_stress_male_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", - "text": "@global.w_stress_male_caregiver ulahlekelwe umsebenzi. Ubehlezi ekhaya ekhungathekile futhi enengcindezi, ngesikhathi @global.w_stress_teen_boy_1 engena.", + "SourceText": "It's time for some questions!", + "text": "Isikhathi semibuzo ethile!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", - "text": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver (uyaphefumula): “Ngiyaxolisa ndodana. Ngibe losuku okunzima namuhla. Umphathi ungixoshile emsebenzini.”", + "SourceText": "Read Together", + "text": "Fundani Ndawonye", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", - "text": "@global.w_stress_teen_boy_1: “Awee! Ngidinga umfaniswano wesikole.” \n\n@global.w_stress_male_caregiver: “Ngizozama ndodana, futhi u @global.w_stress_female_caregiver wakho uzosisiza uma ngisafuna omunye umsebenzi.”", + "SourceText": "Let's read a story together!", + "text": "Masifunde indaba ndawonye!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", - "text": "@global.w_stress_teen_boy_1: “Ngingakusiza nami ukufuna umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: Cha, kulungile! @global.w_stress_teen_boy_1. Ngiyabonga ngokufisa ukungisiza. Into ebaluleke ukuzedlula zonke ukuthi usebenze kanzima esikoleni. Ngiyabonga ngokuthi ungilalele.”", + "SourceText": "Let's read a story!", + "text": "Masifunde indaba!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", - "text": "@global.w_stress_male_caregiver: “Ake sidlale ibhola lezinyawo ndawonye. Kuzongisiza ngisuse lengcindezi kancane emqondweni wami.” \n\n@global.w_stress_teen_boy_1: “Kulungile, @global.w_stress_male_caregiver!”", + "SourceText": "Let's see how this week has been.", + "text": "Ake sibone ukuthi lihambe kanjani leli sonto.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" + "note": "" }, { - "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", - "text": "Lokhu kuhambe kangcono kakhulu! \n\nUkuthatha ikhefu kusiza siphendule ngokuzolile uma uzizwa ucasukile noma ukhathazekile. Kuzame, uzobona!", + "SourceText": "This week you have done...", + "text": "Kuleli sonto wenze lokhu...", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty", - "text": "Ukuphepha Kukashwele", + "SourceText": "You are showing such commitment to being a parent and to caring for yourself. \n\nYou are fantastic.", + "text": "Ubonisa ukuzibophezela ekubeni umzali kanye nasekuzinakekeleni. \n\nWenza kahle kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", - "text": "Cabanga ngesikhathi usesemusha. \n\nIngabe kwake kwaba nesikhathi lapho waba sengozini kodwa ungakwazi ukutshela umndeni wakho ngoba usaba ukuthi uzothukuthela?\n\nLokho CISHE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Ake sibone:", + "SourceText": "Home practice is how we make our family life better. But it often brings challenges. \n\nLet's share our successes and problems, and help each other find new ideas to try!", + "text": "Ukuzijwayeza ekhaya kuyindlela esenza ngayo ukuphila komndeni kube ngcono. Kodwa ngokuvamile kuletha izinselele. \n\nAke sixoxe ngempumelelo kanye nezinselele zethu futhi sisizane ukuze sithole amacebiso amasha esingawazama!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", - "text": "@global.w_stress_teen_boy_2: “Ungabatsheli abantu abadala, kodwa ngiya etshwaleni nabangane bami namuhla kusihlwa” \n\n@global.w_stress_teen_girl: “Ube nesikhathi esimnandi! Ngibatshele ukuthi ngiya kumngane wami wentombazane, kodwa empeleni ngiya ephathini emnandi”", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss: \n* What went well and what was a problem? \n* What solutions can you think of together? \n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa: \n* Yini ehambe kahle futhi yini ebe yinkinga? \n* Yiziphi izixazululo eningazicabanga ndawonye? \n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho esebusheni bayo!\n\n(Noma ukuzijwayeza khona manje ukuze kube lula kamuva!)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", - "text": "@global.w_stress_teen_boy_2: “Ngicabanga ukuthi bathengisa izidakamizwa. Sonke singaboshwa. Kodwa angikwazi ukutshela abazali bami - bazothukuthela kakhulu”", + "SourceText": "Discussion example from @data.workshop.w_1on1.title", + "text": "Isibonelo sengxoxo esivela ku-@data.workshop.w_1on1.title", "type": "template", - "note": "The string @global.w_stress_teen_boy_2 should not be translated." + "note": "The string @data.workshop.w_1on1.title should not be translated." }, { - "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", - "text": "@global.w_stress_teen_girl: “Ngethukile kakhulu. Wonke umuntu udakiwe ukuba angashayela angihambise ekhaya. Lo mfana uthi angangihambisa kodwa uthi ufuna sidlule kubo kuqala. Angakwazi ukutshela abazali bami - ngiqambe amanga ngokuthi ngiya ephathini.”", + "SourceText": "Relax Together", + "text": "Khululekani ndawonye", "type": "template", - "note": "The string @global.w_stress_teen_girl should not be translated." + "note": "" }, { - "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", - "text": "Lezi yizimo eziyingozi! Siyabonga, @global.w_stress_teen_boy_2 u @global.w_stress_teen_girl bakhumbulile ukuthi @global.w_stress_parent ubatsheleni: \n\n“Nginendaba nokuphepha kwakho ukudlula noma yini enye. Uma uthukuthele, noma uthukile, ungangishayela ucingo noma nini uma ufuna usizo noma ufuna ukukhuluma. \n\nMane uthi ‘USHWELE WEZOKUPHEPHA’. Ngiyathembisa ukuthi ngizozama okusemandleni ukusiza futhi angeke ngithukuthele - ngisho noma wenze okuthile ebekungakafaneli ukwenze.”", + "SourceText": "Relax", + "text": "Nethezeka", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", - "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicela uze uzongilanda? Ngidinga ukuhanjiswa ekhaya.”", + "SourceText": "Let’s do a short relaxation activity together – it will take less than 1 minute and you will feel more relaxed.", + "text": "Ake senze isenzo esifushane sokuphumula ndawonye – sizothatha isikhathi esingaphansi komzuzu futhi uzozizwa ukhululekile.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" + "note": "" }, { - "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", - "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicabanga ukuthi abangane bami basenkingeni. Angifuni ukuyeka ukuba umngane wabo, kodwa ngikhathazekile ngabo. Singakhuluma?”", + "SourceText": "Add this activity to @global.my_relaxes", + "text": "Ongeza lo msebenzi ku-@global.my_relaxes", "type": "template", - "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" + "note": "The string @global.my_relaxes should not be translated." }, { - "SourceText": "BREATHE. Slowly. Pause.", - "text": "PHEFUMULA. Kancane. Yima.", + "SourceText": "Listen and relax", + "text": "Lalela futhi uphumule", "type": "template", "note": "" }, { - "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", - "text": "Ngaphambi kokuthi usho okuthile, phefumula kancane uphinde ukhiphe umoya izikhathi ezinhlanu. Kuzokwenza wehlise umoya, kukunikeze nethuba lokucabanga.", + "SourceText": "Read and relax", + "text": "Funda futhi uphumule", "type": "template", "note": "" }, { - "SourceText": "SHARE how you feel", - "text": "KHULUMA ngendlela ozizwa ngayo", + "SourceText": "You are a star!\n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax.", + "text": "Uyiqhawe!\n\nNuku zone nags sonke iskathi, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole.", "type": "template", "note": "" }, { - "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", - "text": "Lokhu kunzima. Iningi lethu latshelwa ukuthi lingakhali, noma libonise imizwa ezinganeni. Kodwa phefumula bese ngomoya ozolile ubatshele indlela ozizwa ngayo. Bazokuqonda kangcono, futhi bafunde kuwe ukubhekana nengcindezi.", + "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", + "text": "Vala amehlo akho. \n\nQaphela ukuxhumana kwakho nomhlaba onyathele kuwo.  \nYiziphi izitho zomzimba wakho izithinta umhlaba? Yiziphi izitho zomzimba wakho ezingawuthinti?   \nQaphela lapho kuzwakala kufudumele khona nalapho kuzwakala kubanda khona.  \nYizwa umhlabathi omi kuwo okusekelayo. Vumela umzimba wakho uzinze osizweni oluthola emhlabeni omi kuwo.", "type": "template", "note": "" }, { - "SourceText": "SHOW them you care", - "text": "BABONISE ukuthi uyabakhathalela", + "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", + "text": "Kuzame lokhu esikhathini esizayo lapho uzizwa uwedwa noma lapho wenza into evamile njengokugeza. Kungasiza ngempela!", "type": "template", "note": "" }, { - "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", - "text": "Nalokhu kunzima! Ingcindezi isenza sicabange ngathi kuphela. Kodwa izingane zethu zidinga ukuthi sizisekele. Babuze ukuthi bazizwa kanjani. Balalele futhi ubaduduze. Zama ukubanga noma ubatshele ukuthi ‘Ngiyaqonda’. Kungashintsha yonke into.", + "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", + "text": "Hlala phansi bese uvala amehlo akho.\nMingaki imisindo okwazi ukuyizwa? \nLalela imisindo engaphakathi nengaphandle kwegumbi. Yibale ngeminywe yakho. \nNgemva kwemizuzwana eyishumi, mingaki iminwe ephakeme? Yimiphi imisindo oyizwile? \n\nPhinde uzame futhi eminye imizuzwana eyishumi. \nIngabe ikhona eminye imisindo emisha oyizwile? Ingabe ikhona imisindo oyizwile engaphakathi komzimba wakho? \nQaphela indlela ozizwa ngayo manje.", "type": "template", "note": "" }, { - "SourceText": "SEEK the positive", - "text": "BHEKA okuhle", + "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", + "text": "Vala amehlo akho. \n\nIngabe kunomuzwa owuzwayo onamandla okwenza ufune ukuwubalekela? \n\nKunokuba ubalekele indlela ozizwa ngayo, ake sisondele kuyo okwesikhashana. \nKulungile. Vala amehlo akho uma uzizwa ukhululekile. Donsa umoya kakhulu. \n\nYiba nelukuluku. Ukuzwa kuphi emzimbeni wakho? Ingabe kuyashisa noma kuyabanda? Kuqinile noma kuthambile? Kubophekile noma kukhululekile? \nZibuze imibuzo ethile. Kungitshela ukuthini? Kudinga ini? Ngingaba kanjani nomusa kumina njengamanje?", "type": "template", "note": "" }, { - "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", - "text": "Ungakwazi yini ukuthi wena kanye nengane yakho ukuthi nicabange ngamacebiso angasiza? Ningakwazi yini ukwenza okuthile okuhle ndawonye okususa ingqondo yakho kwingcindezi?", + "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", + "text": "Nakhu okuthile okumnandi okungakusiza uqede ukucindezeleka:  \n\nKhetha ingoma ebonisa lokho okudingayo njengamanje. Ingabe udinga ingoma epholile ukuze iwotawote umphefumulo wakho okhathele noma ingoma enesigqi esiphezulu ezokusiza ususe ukucindezeleka?  \n\nVula isikhala bese udansela umculo. Khumbula ukuphefumula njengoba udansa. Vumela ukuphefumula nokudansa kwakho kuhambisane.", "type": "template", "note": "" }, { - "SourceText": "If all else fails, breathe. You can do this.", - "text": "Uma konke kungaphumeleli, phefumula. Ungakwazi ukukwenza lokhu.", + "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", + "text": "Ngisho nemizuzu embalwa yokunyakaza inganele ukukhulula ukucindezeleka futhi uphakamise isimo sakho sengqondo!", "type": "template", "note": "" }, { - "SourceText": "There are two home practices for this week.", - "text": "Kubili ongakuprakthiza ekhaya kuleli viki.", + "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", + "text": "Vala amehlo akho. \nZinike isikhashana ukuze uzwe umhlaba onyathele kuwo. \nCabanga ngokuthile obongayo ngakho.\nGxila ekuphefumuleni kwakho.\nDonsa umoya uphinde uwukhiphe.\n\nDonsa umoya uwukhiphe.", "type": "template", "note": "" }, { - "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", - "text": "Uma uzizwa unengcindezi noma uthukuthele: donsa umoya uphinde uwukhiphe kahlanu ngaphambi kokuba uthathe isinyathelo. \n\nUma nobabili seniwehlisile umoya, khuluma nomntwana wakho umtshele ngendlela ozizwa ngayo.", + "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", + "text": "Sawubona! Uzizwa unjani njengamanje? Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile?\n\nQaphela ukuthi ukuzwa kuphi emzimbeni wakho. Qaphela ukuthi yimiphi imicabango ehlobene nalowo muzwa. Donsa umoya kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", - "text": "Xoxani “ngoshwele wezokuphepha” nengane yakho, bese nicabange ngesimo lapho ningakusebenzisa khona lokhu.", + "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", + "text": "Zibonge ngokuzinika isikhathi sokuhlola imizwa yakho nemicabango!", "type": "template", "note": "" }, { - "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", - "text": "Ngaso sonke isikhathi uthatha ikhefana ngaphambi kokuphendula, nanoma inini lapho wenza okuthile kokuvikela ingane yakho, chofoza i @global.parent_points ujabulele impumelelo yakho!", + "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", + "text": "Masizilolonge iqhinga lokuzola esilibiza ngokuthi ‘Misa Isikhashana Amandla’. Noma Amandla Ekefu\n\nBeka unyawo lwakho phansi bese udonsa umoya uphinde uwukhiphe kancane kakhulu ngendlela ongakwazi ngayo izikhathi ezintathu. Zicabange uhogela imbali noma uphephetha ikhandlela. \n\nNazo-ke! Amanda Ekhefu!", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", - "text": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nNgesonto elizayo, sizokhuma ngemali - uzodinga: \n* isiqeshana sephepha/ukhadibhothi\n* ipeni \n* amatshe awu-20 amancane/obhontshisi/okusanhlamvu \n\nKuzoba mnandi!", + "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", + "text": "Leli iqhinga elihle ongalisebenzisa uma uzizwa ukhungathekile ngoba lizokusiza ukukwehlisa umoya.", "type": "template", "note": "" }, { - "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", - "text": "Kuhle ukuthi kuhamba kahle namuhla! Iyiphi into eyodwa ehambe kahle namuhla? Khumbula ukuzincoma ngayo.", + "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", + "text": "Ukuzincoma kungasiza kakhulu, ikakhulukazi lapho sinezinsuku ezinzima. \n\nCabanga ngesonto lakho bese uqedela la magama alandelayo: “Kuleli sonto, ngiyaziqhenya ngami ngoba…” Kungaba yinoma yini, hhayi nje kuphela izinto ezimayelana nokuba kwakho umzali!\n\nCabanga ngento eyodwa oyenze kahle namhlanje. Manje songa izandla zakho kuwe UZANGE!", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", - "text": "Uxolo ukuzwa ukuthi awuzizwa kahle namuhla. Wenze kahle ngokuthi uyiqaphele leyo mizwa, nokuzama ukwehlisa umoya nokuba nomusa kuwe. Ubekela umndeni wakho isibonelo esihle.", + "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", + "text": "Hlala ngokunethezeka bese uvala amehlo akho. \n\nQaphela lokho okwenzekayo kuwe njengamanje. Yini oyicabangayo? Ingabe imicabango yakho mihle noma mibi. Uzizwa kanjani? Ingabe uzizwa ujabulile noma ungajabulanga? Umzimba wakho uzizwa kanjani? Ingabe uzizwa ubophekile noma ukhululekile?\n\nXhumana nenhliziyo yakho ngendlela enomusa nemnene. Ungase ufune ukubeka isandla esisodwa enhliziyweni yakho noma esifubeni. Buthule yisho la mazwi alandelayo kuwe:\n\nKwangathi ngingaba nokuthula.\nKwangathi ngingaphepha.\nKwangathi ngingaba nempilo enhle.\nKwangathi ngingajabula.\nKwangathi kungaba nothando emndenini wami.\nKwangathi ngingazizwa ngithandwa.", "type": "template", "note": "" }, { - "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", - "text": "Zonke izinto ezincane ozenzayo zibalulekile. Sethemba ukuthi nawe uyaziqhenya ngawe.", + "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", + "text": "Zinike isikhashana ucabange ngolwazi lwakho. Qaphela ukuthi uzizwa uhlukile.", "type": "template", "note": "" }, { - "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", - "text": "Yonke imindeni ibhekana nezinkinga. Uma sizilungiselela ndawonye futhi sazi ukuthi sizoluthola kuphi usizo NGAPHAMBI kokuthi okuthile okubi kwenzeke, singakwazi ukubhekana nezinkinga.", + "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", + "text": "Isinyathelo 1. Vala amehlo akho bese udonsa umoya kakhulu. \n\nIsinyathelo 2. Zibuze, \"Yini engiyicabangayo?\" Qaphela ukuthi imicabango yakho mihle noma mibi yini.\nQaphela ukuthi uzizwa kanjani ngokomzwelo. Qaphela ukuthi imizwelo yakho eyenjabulo noma cha. Zikhumbuze ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kulungile.\nQaphela indlela umzimba wakho ozizwa ngayo. Qaphela noma yini ebuhlungu noma ebophekile.\n\nIsinyathelo 3. Gxila ekuphefumuleni kwakho. Yizwa ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe. Ungabeka isandla esiswini sakho futhi usizwe sikhukhumala siphinde sehle isikhathi ngasinye uphefumula. Kwenze lokhu izikhathi eziyishumi odonsa ngazo umoya.\n\nIsinyathelo sesi-4. Nweba ukuqonda kwakho kuwo wonke umzimba wakho. Lalela imisindo egumbini.\n\nIsinyathelo 5. Zinike isikhathi sokuhlola ukuthi ukhona yini umehluko owuzwayo. Lapho usukulungele, vula amehlo akho.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", - "text": "Sanibonani, nonke.\n\nIsihloko sanamuhla simayelana nokubhekana nezinkinga.\n\nIzinkinga zingavela nomaphi. Izinkinga zingavela noma nini. Ngakho-ke, kubalulekile ukuthi njengomndeni nibe nezinhlelo zokuthi nizokwenza kanjani uma ilunga lomndeni lizithola lisenkingeni. \n\nKubalulekile ukuba nezinhlelo ukuze ilungu ngalinye lomndeni lizizwe livikelekile. \n\nLapho sibhekele nenkinga, kumelwe sikhumbule ukuma, sidonse umoya, bese sizigcina sizolile. Lokho kuzokusiza ubhekane nenkinga ngendlela engcono.", + "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", + "text": "Siyakuhalalisela Ngokuthatha Ikhefu. Lokhu ungakwenza noma nini lapho uzizwa ucindezelekile. Kukunika ithuba lokuzola. Ngisho nokudonsa umoya izikhathi ezimbalwa noma ukuxhumana nomhlaba omi kuwo kungenza umehluko. Ungathatha Ikhefu Nezingane Zakho!", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Indatshana kanye nengxoxo\n* Indatshana kanye nengxoxo\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", + "text": "Hlala phansi, uvale amehlo akho bese ulalela ukuphefumula kwakho njengoba umoya ungena uphuma. \n\nQaphela indlela ozizwa ngayo. \n\nLapho usukulungele, phinde uvule amehlo akho.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nokubuyekeza indaba\n* Indatshana kanye nokubuyekeza indaba\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", + "text": "Zama lokhu noma nini lapho uzizwa ucindezelekile futhi udinga ukuthatha ikhefu ukuze uzole.", "type": "template", "note": "" }, { - "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", - "text": "Inkinga ingavelela noma ubani. \n\nAke sibone ukuthi yini eyenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver wakhe:", + "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", + "text": "Sukuma welulele izingalo zakho phezulu esibhakabhakeni. Phusha noma yimaphi amafu futhi uvumele ilanga likukhanyisele. Yelulela nhlangothi zombili. Yelulela phambili nangemuva.\n\nVumela isandla sakho silenga eceleni kwakho. Cindezela amahlombe akho ngokuqinile kuze kufike ezindlebeni zakho njengoba uphefumula, uhlikihle amehlo akho, futhi ubambe umoya wakho. Khulula amahlombe akho njengoba uphumuza umzimba wakho.\nNethezeka izingalo zakho futhi uvumele izingalo zakho zijike zibheke eceleni, bese uphendulela umzimba wakho ongaphezulu. Izingalo zakho kufanele zishaye kancane emhlane wakho njengoba usonta ngapha nangapha.\n\nBeka unyawo olulodwa phambi kolunye bese ujikajikisa amaqakala, ukhumbule ukuphendukela ezinhlangothini zombili. Yenza lokho onyaweni ngalunye ngezindilinga ezine ohlangothini ngalunye.\n\nManje nyakazisa wonke umzimba wakho ngokushesha ngangokunokwenzeka. Unyakazise phezulu! Unyakazise phansi! Unyakazise nxazonke!\n\nVala amehlo akho bese uphakamise izingalo zakho kancane kancane ziye ngaphezu kwekhanda lakho njengoba udonsa umoya. Yehlisela izingalo zakho ohlangothini kancane kancane njengoba ukhipha umoya.\n\nZinike isikhathi sokucabanga ngokwenzeke kuwe.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", - "text": "@global.w_crisis_female_caregiver: “Bandla sthandwa sami, ubonakala uthukuthele ngempela, ungathanda ukungitshela ukuthi kwenzekeni?”", + "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", + "text": "Wenze kahle! Ungenza lo msebenzi nganoma yisiphi isikhathi lapho uzizwa unesidingo sokunciphisa ukucindezeleka futhi nikeza amandla ingqondo kanye nomzimba.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", - "text": "@global.w_crisis_teen_girl_1: “Umalume, u... u... ubengithinta.” \n\n@global.w_crisis_female_caregiver (uyacabanga): “Donsa umoya kakhulu... Idingani ingane yami? Idinga ukuthi ngehlise umoya bese ngiyalalela” \n\n@global.w_crisis_female_caregiver: “Woza uzohlala la eduze kwami. Thatha isikhathi, ngikulalele.”", + "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", + "text": "Yenza uhlu lwezinto ongazenza ezinempilo ongathanda ukuzenza. Nanka amacebiso ambalwa:\n* Ukulalela umculo wakho owuthandayo\n* Ukuhambahamba ngaphandle (uma kuvumelekile)\n* Ukuzivocavoca\n* Ukuphuza inkomishi yetiye uwedwa\n* Ukushayela umngane\n* Ukucula, ukudansa, ukuthandaza noma ukucula\n* Ukuhlala elangeni uvale amehlo akho\n* Ukubukela uhlelo lwe-T.V oluthandayo\n\nKhetha okokudwa ukwenze namuhla!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", - "text": "@global.w_crisis_teen_girl_1: “Ngiqinisile, u... u... ungenze ngakwenza! Ungenze ngaya ocansini naye! Bengingafuni, ngiyafunga, ngize ngasho nokuthi CHA, kodwa wathi ngizoba senkingeni.”\n\n@global.w_crisis_female_caregiver: “Ngiyabonga ngokungitshela lokhu. Awukho enkingeni. Lokhu akulona iphutha lakho.”", + "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", + "text": "Lapho uzinakekela, usuke unakekela izingane zakho. Sonke sidinga ukuxhuma. Zama ukuxoxa nsuku zonke nabangane, umndeni, kanye nezinye izinhlaka ezinikeza usizo. Sekuyisikhathi wagcina ukuxhumana nothile, yenza lokho manje!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", - "text": "@global.w_crisis_teen_girl_1: “Izolo ngesikhathi uhambile uyobona u@global.w_crisis_adult_friend. Uvele wafika kungaleso sikhathi okwenzeke ngaso.”\n\n@global.w_crisis_female_caregiver: “Kulungile, ngiyakukholwa ngane yami. Yinto enkulu lena futhi sizoyithola indlela yokuthola usizo esiludingayo. Singaya kuphi ukuze sithole usizo?\n\n@global.w_crisis_teen_girl_1: “Esikoleni sami?”", + "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", + "text": "Cabanga ngalokho okukwenza uthukuthele? Kwenzeka nini? Ngokuvamile usabela kanjani?\n\nVimbela intukuthelo kusukela ekuqaleni. Lala noma uphumule lapho ukhathele. Zama ukudla okuthile lapho ulambile. Cela othile ukuthi akusekele lapho uzizwa uwedwa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", - "text": "@global.w_crisis_female_caregiver: “Ah ngiyazi, ake sihambe siye emtholampilo. Bazokwazi ukuthi yini okumelwe siyenze ukuze sikusize. Ingabe lokhu kuzwakala kukahle kuwe?”\n\n@global.w_crisis_teen_girl_1: “Yebo... Kulungile... Kodwa ngicela ukuhamba nawe?”", + "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", + "text": "Ukulawula intukuthelo kungaba nzima kakhulu. Thatha ikhefu lapho uzwa ukuthi uqala ukuthukuthelela izingane zakho noma omunye umuntu.\n\nHamba uye kwenye indawo imizuzu emihlanu ukuze ukwazi ukulawula imizwelo yakho. Uma unendawo ephephile ngaphandle, yiya ngaphandle. Ungadlula kulokhu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", - "text": "@global.w_crisis_female_caregiver: “Nakanjani ngizokwenza . Bese @global.w_crisis_teen_girl_1? Khumbula ukuthi lokhu akulona iphutha lakho.” Ngiyakuthanda. Ungumuntu okahle. Sizodlula kulokhu.”", + "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", + "text": "Vala amehlo akho. \n\nMasisebenzise amandla omlingo wamathathu ukuze sihlale sikhona futhi siphumule.\n\nYisho imisindo emithathu oyizwayo njengamanje.\nYisho amaphunga amathathu ongawahogela njengamanje.\nYisho ukudla okuthathu okuthandayo.\n\nYiziphi izinto ezintathu ongabonga ngazo njengamanje? Akudingeki kube yizinto ezinkulu.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", - "text": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_girl_1 naku @global.w_crisis_female_caregiver! Lokhu kungenzeka kubafana nakumantombazane.", + "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", + "text": "Ekupheleni kosuku olunzima, ukucabanga ngezinto ezintathu ongabonga ngazo kungakusiza uthole isibindi sokuzama futhi kusasa.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_female_caregiver use?", - "text": "Imaphi amakhono u @global.w_crisis_female_caregiver awasebenzisile?", + "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", + "text": "Vala amehlo akho bese ucabanga ngosuku. \n\nYisho into eyodwa oyibingelayo. \nYisho into eyodwa oyenze kahle. \nYisho into eyodwa oyithandayo.", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", - "text": "Yebo, @global.w_crisis_female_caregiver uwasebenzise wonke amakhono – nawe ungenza kanjalo!", + "SourceText": "Well done, you are a hero!", + "text": "Wenze kahle, uyiqhawe!", "type": "template", - "note": "The string @global.w_crisis_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", - "text": "Enye inkinga abazali abakhathazeke ngayo udlame nobugebengu. Ake sibheke isibonelo ndawonye.", + "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", + "text": "Vala amehlo akho. \n\nSebenzisa amandla omlingo ezinto ezintathu ukuze ube nokuthula futhi uzole.\n\nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3. \nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3.", "type": "template", "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", - "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ubukela ukhathazekile kusukela izolo. Ingabe kukhona okungalungile?”", + "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", + "text": "Ingabe uzizwa uhlukile? Ukuphefumula okujulile kusiza wonke umzimba nengqondo yethu ukuthi izole\n\nUyiqhawe!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", - "text": "@global.w_crisis_teen_boy_1: “Izolo, mina nabangane bami sihambe sayobuka umdlalo webhola lezinyawo. Abanye abafana ababedakiwe baqala ukulwa nomngane wami.\" \n\n@global.w_crisis_male_caregiver_1: “Qhubeka, ngilalele. Ngithemba ukuthi awuzange ulwe?”", + "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", + "text": "Vala amehlo akho.\n\nLalela ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe izikhathi ezinhlanu.\n\nQaphela indlela ozizwa ngayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", - "text": "@global.w_crisis_teen_boy_1: “Bengingafuni, kodwa bengingeke ngime ngibukele beshaya umngane wami, ngakho-ke...”\n\n@global.w_crisis_male_caregiver_1: “Ngakho, ulwile ukuze uvikele umngane wakho?”", + "SourceText": "When you are ready open your eyes again. You are in control!", + "text": "Lapho usukulungele phinde uvule amehlo akho. Nguwe olawulayo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", - "text": "@global.w_crisis_teen_boy_1: “Wonke umuntu ubelwa. Ngibone umuntu elele phansi kwidamu legazi. Ubebonakala... efile.”", + "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", + "text": "Vala amehlo akho. \n\nZinike umzuzu ukuze ucabange ngosuku.\n\nCabanga ngento eyodwa enhle noma emnandi oyenzile.\nZincome ngento eyodwa oyenze kahle namhlanje. \nCabanga ngento eyodwa ongayenza ngendlela ehlukile kusasa.  \nCabanga into eyodwa obongayo ngayo.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", - "text": "@global.w_crisis_male_caregiver_1: “Ngiyajabula ukuthi ungitshele ngalokhu, @global.w_crisis_teen_boy_1. Ake sihlale phansi manje sixoxe ngokuthi ingabe kuyadingeka ukuthi sibandakanye amaphoyisa noma omunye umuntu ukuba asize.”", + "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", + "text": "Vala amehlo akho. \n\nIngabe izingane zakho zike zikwenze uzizwe sengathi ungahayiza? \n\nZinike ikhefana lemizuzwana eyishumi. Donsa umoya uwukhiphe kancane kancane izikhathi ezingu-5. \n\nMase ke usuzama ukuphendula ngendlela ezolile.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", - "text": "@global.w_crisis_teen_boy_1: “Ngiyabonga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Sizodlula kulokhu. Khumbula, sizokweseka njengomndeni.”", + "SourceText": "Millions of parents say this helps - A LOT.", + "text": "Izigidi zabazali zithi lokhu kuyasiza - KAKHULU.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", - "text": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_boy_1 naku @global.w_crisis_male_caregiver_1!", + "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", + "text": "Vala amehlo akho. \n\nZinike isikhathi uyeke lokho okwenzayo bese uxhumana nokuphefumula kwakho.   \n\nIyiphi into eyodwa ongabonga ngayo njengamanje?  \nIyiphi into eyodwa ekulethela injabulo?  \nIyiphi into eyodwa oyithandayo?  \n\nAkudingeki kube yizinto ezinkulu. Ngezinye izikhathi izinto ezincane ephilweni yizona ezibaluleke kakhulu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" + "note": "" }, { - "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", - "text": "Imaphi amakhono u @global.w_crisis_male_caregiver_1 awasebenzisile?", + "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", + "text": "Nakhu ongakwenza ukuze uphumuze umzimba wakho:  \n\nHlala ngokunethezeka bese uvala amehlo akho uma ukwazi.  \nCabanga indilinga yegolide ihlola umzimba wakho kusukela ezinyaweni ize iyofika ekhanda.   \nNaka njengoba ikhuphuka iphinde yehle emzimbeni wakho. Ingabe zikhona izindawo ozizwa ziqinile? Zindikindiki? Zibuhlungu?   \nGxila kulezo zindawo isikhashana. Donsa umoya uye kuleyo ndawo bese kuthi lapho ukhipha umoya, uzame ukudedela lokho kuqina noma ubuhlungu.   \nYenza lokhu izikhathi ezimbalwa odonsa ngazo umoya.   \n\nVula amehlo akho. Umzimba wakho uzizwa kanjani manje?", "type": "template", - "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "All these skills can help in a crisis.", - "text": "Wonke lamakhono angasiza lapho kunenkinga.", + "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", + "text": "Ungakuzama lokhu esikhathini esizayo uma uzithola ulele embhedeni ungafikelwa ubuthongo!", "type": "template", "note": "" }, { - "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", - "text": "Inkinga ingasenza sizizwe sicasukile noma singenalusizo. Kodwa kungaleso sikhathi lapho abantwana bethu bedinga siphefumule, silalele futhi sicabange.", + "SourceText": "Start", + "text": "Qala", "type": "template", "note": "" }, { - "SourceText": "BREATHE", - "text": "PHEFUMULA", + "SourceText": "Add this activity to @global.my_activities", + "text": "Faka lo msebenzi ku @global.my_activities", "type": "template", - "note": "" + "note": "The string @global.my_activities should not be translated." }, { - "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", - "text": "Hlala uzolile. Zibuze ‘yini edingwa ingane yami njengamanje’", + "SourceText": "Powered by Parenting for Lifelong Health and partners", + "text": "Ixhaswe i-Parenting for Lifelong Health kanye nebambisene nabo", "type": "template", "note": "" }, { - "SourceText": "Tell them you are there for them and love them.", - "text": "Batshele ukuba ukhonela bona futhi uyabathanda.", + "SourceText": "Ideas from other families:", + "text": "Amacebiso avela kweminye imindeni:", "type": "template", "note": "" }, { - "SourceText": "THINK", - "text": "CABANGA", + "SourceText": "Customise @global.parent_app", + "text": "Hlela Ngendlela Oyithandayo @global.parent_app", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", - "text": "Khuluma nengane yakho. Yini engasiza kulesi simo? Kungase kudingeke wenze izinhlelo ezisheshayo manje, bese wenza izinhlelo zesikhathi esizayo kamuva.", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "You can be proud of yourself for exploring ways to get help!", - "text": "Ungaziqhenya ngokuthola izindlela zokuthola usizo!", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho eyevile eminyakeni eyishumi nambili ikuthwalise kanzima. \n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukuqhubeka usebenzisa i-@global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmathuluzi ethu aye asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi kamnandi ndawonye. Silapha ukuze sikusekele.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", - "text": "Kuyasiza ukukuprakthiza ukubhekana nenkinga engaqubuka ngaphambi kokuba yenzeke. \n\nBheka lezi zikhathi ezinhlanu zezinkinga zomndeni. Zicabange uwumzali: Yini obungayenza?\n\nKhumbula: PHEFUMULA - LALELA - CABANGA", + "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", + "text": "Lokhu kubakhathaza ngempela abazali yonke indawo. Khumbula ukusebenzisa amakhono akho amasha ukuze uqhubeke ukwakha ukukhulumisana okuhle nengane yakho esebusheni bayo. \n\nUngahlola amacebiso abalulekile okuhlela ukuphepha kwengane yakho esebusheni ku-@global.weekly_workshop noma ngaphansi kwe-@data.parent_centre.my_tips.location_text!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", - "text": "Inkinga 1: @global.w_crisis_teen_boy_2 ukulwa esikoleni", + "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", + "text": "Kuhle. Uma kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini esikhathini esizayo, ungahlola la-ku-@data.workshop.w_money.in_text_title noma okuthi-@data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", - "text": "@global.w_crisis_teen_boy_2: “Angikaze ngikwenze lokhu ngaphambili. Njengamanje ngizoxoshwa\"", + "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", + "text": "Ingcindezi yemali ingakhungathekisa. \n\nNoma nini lapho kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini wakho, ungathola amacebiso ku @data.workshop.w_money.in_text_title noma ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", - "text": "Inkinga 2: @global.w_crisis_teen_girl_1 uyakhulelwa", + "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", + "text": "Khumbula ungathola amacebiso amaningi awusizo kanye nezinsiza ku-@global.parent_centre - lokhu ungakuthola noma nini!", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", - "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ngizizwa nginamahloni. Angazi ukuthi ngenzenjani”", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", + "text": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nKhumbula, ungathola ukusekwa okwengeziwe mayelana nalokhu ku-@data.workshop.w_safe.in_text_title noma nini lapho ukudinga!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" + "note": "The string @data.workshop.w_safe.in_text_title should not be translated." }, { - "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", - "text": "Inkinga 3: @global.w_crisis_teen_boy_2 ukhulelisa intombazane", + "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", + "text": "Siyazi ukuthi kunzima lokho. Ungahlola amacebiso athile awusizo ngezindlela ongachitha ngayo isikhathi nengane yakho esebusheni bayo ngaphansi kwe-@data.parent_centre.my_tips.location_text noma ungaphinde uhlole i-@data.workshop.w_1on1.in_text_title.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", - "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Angifuni ukuba nengane\"", + "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", + "text": "Wenze kahle ngokubeka isisekelo esihle kangaka! Ungayihlola noma nini i-@data.workshop.w_1on1.in_text_title ukuze uthole amacebiso ezindlela eningachitha ngazo isikhathi ndawonye.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", - "text": "Ungasabela kanjani ku @global.w_crisis_teen_boy_2?", + "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", + "text": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Ungahlola indlela yokuncoma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.\n\nUkuze uthole amacebiso engeziwe endlela yokusebenzisa leli khono kahle, ungaphinde uhlole i-@data.workshop.w_praise.in_text_title.", "type": "template", - "note": "The string @global.w_crisis_teen_boy_2 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "Crisis 4: Someone in the family gets sick", - "text": "Inkinga 4: Ilunga lomndeni liyagula", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", + "text": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sibalulekile kahkhulu. \n\nUngahlola futhi i-@data.workshop.w_praise.in_text_title ukuze uthole amacebiso engeziwe endlela yokusebenzisa leli khono kahle.", "type": "template", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", - "text": "“Ukuhlolwa kwegazi kuveze ukuba ngine-HIV. Ngiyesaba ukuthi ngizofa”", + "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuthi deli bekuyisonto elihle!\n\nSizoqhubeka sikukhumbuza ukuthi uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "type": "template", "note": "" }, { - "SourceText": "How could you respond in this situation?", - "text": "Ungasabela kanjani kulesi simo?", + "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "type": "template", "note": "" }, { - "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", - "text": "Inkinga 5: @global.w_crisis_teen_girl_1 uphoqwe yisoka lakhe ukuba enze ucansi", + "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", + "text": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizohlala sikukhumbuza ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", - "text": "@global.w_crisis_teen_girl_1: \"Bengingafuni ngempela ukuya ocansini. Manje sengizokhulelwa noma ngigule. @global.w_crisis_female_caregiver, Ngiyesaba kakhulu...\"", + "SourceText": "Customise for your needs", + "text": "Hlela ngendlela evumelana nezidingo zakho", "type": "template", - "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" + "note": "" }, { - "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", - "text": "Ungasabela kanjani ku @global.w_crisis_teen_girl_1?", + "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", + "text": "Wonke umzali emhlabeni udonsa kanzima kulezi zikhathi ezinzima. Imibuzo elandelayo mayelana nomuzwa wakho wokuba umzali izosisiza ukuthi sikutholele ukwesekwa okudingayo.\n\nYiba qotho. Khumbula ukuthi awuwedwa! Izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa.", "type": "template", - "note": "The string @global.w_crisis_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", - "text": "Khumbulani ukusekelana nokukhuthazana. Kunzima ukuhlale nizolile futhi nilalelana uma kunenkinga - siyaziqhenya ngani.", + "SourceText": "Thank you for being honest", + "text": "Siyakubonga ngokuba qotho", "type": "template", "note": "" }, { - "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", - "text": "Wena nengane yakho khethani isimo esisodwa kulezi (noma ungacabanga esinye!). Buka opopayi, nixoxe ngokuthi ningenze njani uma lokhu kungenzeka kumngani noma ilungu lomndeni. \n\nBese uyakhumbula: PHEFUMULA - LALELA - CABANGA", + "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", + "text": "Kuhle ukuthi uphendula ngomoya ophansi lapho ingane yakho yenza okuthile okucasulayo. Bangafunda okuningi kuwe!", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", - "text": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa kweviki elizayo kuzobungaza nina nonke, futhi kunisize nihlelele ikusasa. \n\nKungani ningahleli ukuba nomcimbi wokudla ndawonye, nilungise nomculo uma nithanda ukudansa!", + "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", + "text": "Kuhle ukuthi uyakwazi lokho okwenziwa yingane yakho esebusheni bayoi. Ukuba umzali kunzima, kodwa uyaphumelela ngempela ekugcineni ingane yakho iphephile.", "type": "template", "note": "" }, { - "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", - "text": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa ngeviki elizayo kuzobe kubungaza wena, futhi ungakhetha ukusekelwa okufunayo ukuqhubekela phambili. \n\nUngalungiselela okuthile kokuzithokozisa okungajatshulelwa - okuthile othanda ukukudla, noma umculo othanda ukuwulalela!", + "SourceText": "You selected \"I would rather not answer\"", + "text": "Ukhethe okuthi \"Angithandi ukungaphenduli\"", "type": "template", "note": "" }, { - "SourceText": "Self-care is a key parenting tool.", - "text": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali.", + "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", + "text": "Kulungile!\n\nKhumbula, uma uphendula impendulo yakho izogcinwa iyimfihlo futhi izosiza ukuthi sikuhlinzeke ulwazi olulungele wena ngqo.", "type": "template", "note": "" }, { - "SourceText": "How are you feeling today?", - "text": "Uzizwa kanjani namuhla?", + "SourceText": "Are there adults in your family?", + "text": "Ingabe bakhona abadala emndenini wakho?", "type": "template", "note": "" }, { - "SourceText": "So good to hear you are feeling well today. You are incredible!", - "text": "Kuyajabulisa ukuzwa ukuthi uzizwa uphilile namhlanje. Uyamangalisa!", + "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", + "text": "Le-app igxila kubazali bezingane ezisebusheni bayo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo!", "type": "template", - "note": "" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", - "text": "Uxolo ngokuthi isimo sinzima njengamanje. Donsa/khokhe umoya, uphefumule futhi wazi ukuthi ubalulekile.", + "SourceText": "Are there teens in your family?", + "text": "Ingabe ikhona intsha emndenini wakini?", "type": "template", "note": "" }, { - "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", - "text": "Ungasiza ingane yakho iqonde ukuthi ukuphula imithetho yasekhaya kunemiphumela. \n\nKodwa INDLELA owenza ngayo ebalulekile. \n\nUkuthola imiphumela efanele kusiza umntwana ukuthi aziphathe kahle futhi kwenza umndeni uphile ngokuthula...", + "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", + "text": "Le-app igxila emindenini enezingane ezisebusheni bazo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo emndenini wakho!", "type": "template", - "note": "" + "note": "The string @global.teen_age_bracket should not be translated." }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sithi imiphumela eyethulwa ngendlela ezolile.\n\nKubalulekile ukuthi lapho sethula umphumela ebantwaneni bethu sibabandakanye nabo, kodwa kubalulekile nokuthi sizole lapho sethula imiphumela.\n\nLokhu kuzosisiza sivumelane ngokwethula imiphumela ngendlela ezolile ebantwaneni bethu futhi abantwana bazoyikhumbula kalula lapho sibabandakanya futhi lokho kuzobenza baziphathe kahle.", + "SourceText": "Are you sure you want to skip this question?", + "text": "Ingabe uyaqiniseka ukuthi ufuna ukuweqa lo mbuzo?", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indatshana kanye nengxoxo – okungasebenzanga ...\n* Izibonelo zemiphumela\n* Amathuluzi: Indlela yokwethula imiphumela ngomoya ophansi\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiphumela\n* Indatshana kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", + "text": "Uqinisekile ukuthi ufuna ukuwujomba lombuzo? Khumbula ukuthi impendulo yakho izogcinwa iyimfihlo futhi izosisiza ukuthi siqonde izidingo zakho ekukhuliseni abantwana.\n\nFuthi ungakhetha ukungaphenduli nowodwa umbuzo ngokukhetha indilinga.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nokubuyekezwa kwendaba - lokho akungasebenzanga ...\n* Izibonelo zemiphumela\n* Izindlela: Indlela yokwethula imiphumela ngesizotha\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiohumela yokungayilandeli imithetho\n* Indaba kanye nokubuyekezwa kwendaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", + "text": "Wenze kahle. ulwazi lwezinto zemvelo nje ngengqondo ibonisa ukuthi ukulawula intukuthelo yakho kuthuthukisa ukukhula kwengqondo yengane yakho esebusheni bayo. Ziqhenye ngawe ngokwakho.", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", - "text": "Ake sifunde ngokwenzekile ku @global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver wakhe:", + "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", + "text": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", - "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ubani isikhathi manje? Ufike emva kweskhathi!”", + "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", + "text": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo.\n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukusebenzisa i @global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmacebiso ethu ake asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi esimnandi ndawonye. Silapha ukuze sikusekele.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", + "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", + "text": "Lokhu kuyabakhathaza abazali yonke indawo. Sizoqinisekisa ukuthi uthola ukwesekwa ngokwakha ukukhulumisana. \n\nSizokhuluma kabanzi ngokuhlela kokuphepha kwengane yakho kamuva ku @global.weekly_workshops, kodwa ungawathola kakade amanye amacebiso ayisisekelo okugcina ingane yakho iphephile ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", - "text": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awulandeli umthetho wethu! Ngizokushaya!”", + "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", + "text": "Kuhle. Sinemhlangano yokufundisana emayelana nokwenza isabelomali somndeni okungakusiza ngengcindezi yemali kabanzana, futhi kunciphise izingxabano ezihilela imali.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", - "text": "@global.w_consequence_teen_boy_1: “Akunabo ubulungiswa lokho! Awungilaleli neze!! Ngiyakuzonda!”", + "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", + "text": "Ingcindezi yemali ingakhungathekisa. \n\nSinokuqeqeshwa okumayelana nokwenza isabelomali somndeni emasontweni amahlanu, kodwa ungawathola kakade amacebiso ayinhloko esabelomali somndeni ngaphansi kwe-@data.parent_centre.my_tips.location_text!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", - "text": "Xoxani ndawonye: \n* Kungani ukwethulwa kwemiphumela ngale ndlela kungasebenzanga kahle?", + "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", + "text": "Okuqukethwe okuvulwa ngale mibuzo sekuyatholakala ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", "type": "template", - "note": "" + "note": "The string @data.parent_centre.my_tips.location_text should not be translated." }, { - "SourceText": "Giving a consequence this way did not work well because...", - "text": "Ukwethulwa kwemiphumela ngale ndlela akusebenzanga ngoba...", + "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", + "text": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nSizokunikeza ukwesekwa okwengeziwe kulokhu kamuva ku @global.weekly_workshops uma ungathanda ukwazi okwengeziwe!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver was angry", - "text": "@global.w_consequence_male_caregiver ubediniwe", + "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", + "text": "Siyazi ukuthi kunzima lokho. Senezele amacebiso awusizo endlela ongachitha ngayo isikhathi nengane yakho eyevile eminyakeni eyishumi nambili ukuze @data.parent_centre.my_tips.location_text, uzokwazi ukuwafinyelela ngokushesha. \n\nNgenxa yokuthi i-@data.workshop.w_1on1.title yakha isisekelo sawo wonke amanye amathuluzi okuba umzali, izoba yi-@global.weekly_workshop ozoyithola ngesonto elizayo!", "type": "template", - "note": "The string @global.w_consequence_male_caregiver should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" }, { - "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", - "text": "@global.w_consequence_male_caregiver akavumanga @global.w_consequence_teen_boy_1 achaze", + "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", + "text": "Wenze kahle! I-@global.weekly_workshop yethu elandelayo izokunikeza eminye imibono yalokhu, njengesisekelo sawo wonke amanye amacebiso okukhulisa izingane. Kodwa usuvele unesiqalo esihle!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", - "text": "Imiphumela beyingaxoxwanga kusengaphambili no @global.w_consequence_teen_boy_1", + "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", + "text": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Sifake amanye amacebiso abalulekile endlela yokusebenzisa ukuncoma ku-@data.parent_centre.my_tips.location_text ukuze ukuthole ngokushesha.\n\nKu-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" }, { - "SourceText": "The consequence was too strong", - "text": "Imiphumela beyiqine kakhulu", + "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", + "text": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sisho okukhulu. Ku-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", "type": "template", - "note": "" + "note": "The string @data.workshop.w_praise.in_text_title should not be translated." }, { - "SourceText": "Why did giving a consequence this way not work well?", - "text": "Kungani ukwethulwa kwemiphumela ngalendlela kungasebenzanga kahle?", + "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuthi leli kube yisonto elihle!\n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "type": "template", "note": "" }, { - "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", - "text": "Yebo, ukusabela ngendlela enokuchwensa ngalendlela kwenze wonke umuntu wathukuthela kakhulu futhi wacasuka.", + "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", + "text": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", "type": "template", "note": "" }, { - "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", - "text": "Kuvamile ukuthi abantwana bayiphule imithetho. Ukukhula kuyisikhathi ezinzima uma besafunda ukuthi bangobani. \n\nNgenhlanhla, kunezindlela zokukhuza abantwana ngaphandle kokucasuka noma ukuba nodlame... futhi zisebenza kahle!\n\nUkwethula imiphumela ngomoya ophansi kusiza izingane zifunde ukuthi ezikwenzayo kunemiphumela – emihle noma emibi. \n\nNazi ezinye izibonelo - zicabange uwumzali:", + "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", + "text": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizokukhumbuza njalo ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops - kodwa kakade ungakwazi ukufinyelela amacebiso awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" }, { - "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", - "text": "Ukwethula imiphumela ngomoya ophansi kumelwe kube... \n\nOKUNOBULUNGISWA: Okungaqinile ngokweqile futhi angakwazi ukukwenza \n\nNJENGAMANJE: Nika umntwana imiphumela ngalesosikhathi kwenzeka \n\nNGENDLELA EFANAYO : Nika umphumela ofanayo ngaso sonke isikhathi", + "SourceText": "Talk Together", + "text": "Khulumani Ndawonye", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.", - "text": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.", + "SourceText": "Share ideas, support each other!", + "text": "Yabelanani ngemibono, sekelanani!", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.\n\nYimuphi umphumela ongasiza lapha?", + "SourceText": "Think Together", + "text": "Cabangani Ndawonye", "type": "template", - "note": "The string @global.w_consequence_teen_boy_1 should not be translated." + "note": "" }, { - "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", - "text": "Imiphumela ayifani nesijeziso: inika izingane zethu ithuba lokufunda ukumelana nezenzo zabo.\n\nIyalawuleka FUTHI isebenza kangcono kunokushaya noma ukuthetha!", + "SourceText": "It's time to think together!", + "text": "Sekuyisikhathi sokucabanga ndawonye!", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", - "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.", + "SourceText": "Think", + "text": "Cabanga", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", - "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.\n\nYimuphi umphumela ongasiza lapha?", + "SourceText": "It's time to think!", + "text": "Yisikhathi sokucabanga!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" + "note": "" }, { - "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", - "text": "Imiphumela isebenza kangcono uma kuxoxisanwa futhi kuvunyelwane ngayo nomntwana ngaphambi kokuthi isetshenziswe.\n\nOkunye futhi: akuyona yonke imiphumela emibi... Ningabuye nivumelane ngemiphumela EMIHLE yokwenza izinto EZINHLE ukuze ubone ukuziphatha okuhle okwengeziwe!", + "SourceText": "Here are this week’s takeaway skills! \n\nUse them at home and find them anytime in your @global.parent_centre.", + "text": "Nanka amakhono akuleli sonto ongahamba nawo! \n\nWasebenzise ekhaya futhi ungawathole noma inini ku @global.parent_centre yakho.", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", - "text": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.", + "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", + "text": "1. Donsa umphefumulo kakhulu..\n2. Bona ukthi ngabe izindaba zinomqondo.\n3. Buza ukuthi uzitholephi lezozindaba.\n4. Qinisekisa nabanye abantu/nemithombo oyethembayo.\n5. Cabanga ukuba lezizindaba zizosiza noma zizosabisa abantu uma uzixoxa.", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "What consequence would help here?", - "text": "Yimuphi umphumela ongasiza lapha?", + "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", + "text": "Ngesinye isikhathi, sonke sifuna ukutshela abantwana bethu ukuthi \"Kumele wenze lokhu, ngale kwalokho... kuzoba nenkinga!\" Kodwa lokhu akwenzi ukuthi bayilandele kangcono imithetho. \n\nKunalokho, ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle ngoku mtshengisa ukuthi uyamethemba nokukhuluma naye futhi:", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", - "text": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.\n\nYimiphi imiphumela emihle engasiza lapha?", + "SourceText": "DISCUSS CONSEQUENCES", + "text": "Xoxisanani ngemiphumela", "type": "template", - "note": "The string @global.w_consequence_teen_boy_2 should not be translated." + "note": "" }, { - "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", - "text": "Indlela owethula ngayo imiphumela ngesizotha iyasiza. Khumbula, uma ubandakanya umntwana wakho, izinto ziba ngcono!", + "SourceText": "Ask \"If you do this, what could happen?\"", + "text": "Buza ukthi \"Uma wenza lokhu, kuzokwenzakalani?\"", "type": "template", "note": "" }, { - "SourceText": "EXPLAIN", - "text": "CHAZA", + "SourceText": "If something goes well, praise your teen!", + "text": "Uma okuthile kuhambe kahle, mncome umntwana wakho!", "type": "template", "note": "" }, { - "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", - "text": "Bheka ukuthi nobabili ninomoya ophansi yini. Phefumula izikhathi ezimbalwa. Chazela ingane yakho ukuthi kungani ukhathazekile ngokuziphatha kwayo.\n\nChaza ukuthi kungani umthetho ubalulekile. Ungamtshela indlela ozizwa ngayo - kulungile ukusho ukuthi uphoxekile.", + "SourceText": "REFLECT TOGETHER", + "text": "Cabangani nihlaziye ndawonye", "type": "template", "note": "" }, { - "SourceText": "AGREE", - "text": "VUMA", + "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", + "text": "Uma kungahambanga kahle okuthile, buza ukuthi \"Eyiphi indlela obungenza kangcono ngayo?\"", "type": "template", "note": "" }, { - "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", - "text": "Hlela nengane yakho ngemiphumela yokulandela neyokungawulandeli umthetho.\n\nBacele baveze imibono yabo. Khulumani nize nivumelane ngokuthile okuzosebenza.\n\nYenza umphumela WOKUNGALANDELI umthetho nelungelo azolithola uma ethe WALANDELA umthetho.", + "SourceText": "START SMALL", + "text": "QALA KANCANE", "type": "template", "note": "" }, { - "SourceText": "ACT", - "text": "THATHA ISINYATHELO", + "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", + "text": "Nika umntwana wakho izibopho ezincane kuqala. Uma lokho kuhamba kahle, ungengeza ezinye ukutshengisa ukuthi uyamethemba.", "type": "template", "note": "" }, { - "SourceText": "When your teen follows the rule, give praise and privileges!", - "text": "Uma ingane yakho iwulandela umthetho, yincome bese uyinikeza amalungelo!", + "SourceText": "MAKE TIME", + "text": "Yenza isikhathi", "type": "template", "note": "" }, { - "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", - "text": "Bazozizwa behlonishwa futhi bebalulekile. Khumbula: Uma sibancoma njalo, bazothuthukisa kakhulu ukuziphatha okuhle!", + "SourceText": "Set aside time to have a conversation without distractions.", + "text": "Beka isikhathi sokuxoxisana ngaphandle kokuphazamiseka.", "type": "template", "note": "" }, { - "SourceText": "When your teen does not follow the rule, follow through with the consequence.", - "text": "Uma ingane yakho ingawulandeli umthetho, qhubeka nomphumela enivumelene ngawo.", + "SourceText": "Ask your teen questions and let them share their views without interrupting.", + "text": "Buza umntwana wakho imibuzo bese uyamvumela ukuthi aveze imibino yakhe ngaphandle kokumuphazamisa.", "type": "template", "note": "" }, { - "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", - "text": "Uma ingane yakho iphula umthetho, ngomoya ophansi mkhumbuze ngomphumela walokho. Lokho kumelwe kube OKUNOBULUNGISWA (akumelwe kube nokhahlo kakhulu), NGALESOSIKHATHI (kwenze ngaso leso sikhathi) UNGASHINTSHI (okufanayo ngaso sonke isikhathi).", + "SourceText": "WORK TOGETHER", + "text": "Sebenzisanani", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", - "text": "Xoxani ndawonye:\n* Yimiphi imithetho izingane zakho ezivame ukuyiphula? \n * Yimuphi umphumela ongawusebenzisa emthethweni othile ophuliwe? \n\nImiphumela kumelwe ibe: \nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGOKUSHESHA (kwenze ngaso leso sikhathi) \nUNGASHINTSHI (okufanayo ngaso sonke isikhathi).\n\nNcomanani futhi nikhuthazane – singanikana amandla!", + "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", + "text": "Xoxisanani ngenkinga ethize, niqhamuke nezisombululo ndawonye bese nenza lokho enivumelane ngakho.", "type": "template", "note": "" }, { - "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", - "text": "Ake sibuyele ku @global.w_consequence_teen_boy_1 naku @global.w_consequence_male_caregiver wakhe", + "SourceText": "PRAISE", + "text": "Ncoma", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", - "text": "@global.w_consequence_male_caregiver: “Ngikhathazekile ngokuthi namanje usabuya kuhlwile ekhaya, @global.w_consequence_teen_boy_1. Yini esingayenza ukuze sikusize ukhumbule ukuthi ubuye ngesikhathi esivumelene ngaso ekhaya?\"\n\n@global.w_consequence_teen_boy_1: “Uma ngingafika ngesikhathi ekhaya, mhlawumbe ngingahlala imizuzu engu-30 kunangesikhathi esivamile sokulala?”", + "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", + "text": "Mbonge umntwana wakho ngokwabelana ngemibono bese uyakugqamisa ukuthi kunisiza nobabili.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", - "text": "@global.w_consequence_male_caregiver: Umbono omuhle lowo! Yini okumelwe siyenze uma ungawulandeli umthetho? \n\n@global.w_consequence_teen_boy_1 (uyabubula): “Ngmluuhm”", + "SourceText": "Why @local.workshop_data.title?", + "text": "Kungani @local.workshop_data.title? \nnoma Ngobani @local.workshop_data.title?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @local.workshop_data.title should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", - "text": "@global.w_consequence_male_caregiver: “Khuluma, ngiyazi ukuthi kukhona okuthile okucabangayo.” \n\n@global.w_consequence_teen_boy_1: “Kulungile…. Kunganjani: uma ngenza umsebenzi wesikole?”", + "SourceText": "Hear @global.topic_intro_name's message", + "text": "Lalela umyalezo ka@global.topic_intro_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", - "text": "@global.w_consequence_male_caregiver: “Kumele uwenze umsebenzi wakho wesikole noma kunjalo. Uma uwukhohlwa umthetho, kuyinto elungile ukuthi ungababoni abangane bakho ngosuku olulandelayo.\" \n\n@global.w_consequence_teen_boy_1: “Kulungile, @global.w_consequence_male_caregiver.\"", + "SourceText": "Read @global.topic_intro_name's message", + "text": "Funda umyalezo ka@global.topic_intro_name", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "The string @global.topic_intro_name should not be translated." }, { - "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", - "text": "Ngosuku olulandelayo...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani isikhathi! Sekuhlwile!”", + "SourceText": "Today's steps", + "text": "Izinyathelo zanamhlanje", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", - "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", + "SourceText": "Try it Together", + "text": "Kuzameni Ndawonye", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", - "text": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kuphakathi namabili futhi ubuye ekhaya sekudlule isikhathi esivumelene ngaso. Noma ngabe yisiphi isizathu, kumelwe uqonde ukuthi lokhu akwamukelekile. @global.w_consequence_female_caregiver bengikhathazeke kakhulu.”", + "SourceText": "Let's practice together.", + "text": "Asizijwayeza ndawonye.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", - "text": "@global.w_consequence_teen_boy_1: “Abangane bami bebafuna ngihlale isikhathi esijana nabo. Bebengibiza ngengane ngoba besengifuna ukuya ekhaya.” \n\n@global.w_consequence_male_caregiver: “Ngiyazi ukuthi kungaba nzima ukuthi cha kubangane bakho. Ake sikhulume ngalolu daba ekuseni uma sesiphumulile.”", + "SourceText": "What does that mean?", + "text": "Kuchaza ukuthini lokho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", - "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa ngokukukhathaza futhi @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ngiyabonga. Njengamanje hamba uyolala, kodwa ngifuna kucace, njengoba ubuye ekhaya sekudlule isikhathi esivumelene ngaso, awuvumelekile ukuphuma kusasa kusihlwa.”", + "SourceText": "How can you help?", + "text": "Ungasiza kanjani?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "Let's talk about this story", - "text": "Ake sikhulume ngalolu daba", + "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", + "text": "Ukuqonda ukuthi umntwana wakho uzizwa kanjani nanokuthi ungameseka kanjani kwenza omkhulu umehluko kunina nobabili. Mqaphele umntwana wakho futhi umbuze ukuthi uzizwa kanjani. Cofoza kulobubuso obungenzansi khona uzothola okwengeziwe:", "type": "template", "note": "" }, { - "SourceText": "Using a consequence worked well this time because...", - "text": "Ukusebenzisa umphumela kusebenze kahle lana ngoba...", + "SourceText": "Hopeful", + "text": "Ithemba", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", - "text": "@global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver baxoxe ngemiphumela ngesikhathi bobabili bezolile", + "SourceText": "Resilient", + "text": "Ukubekezela", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" + "note": "" }, { - "SourceText": "They agreed on consequences together", - "text": "Bobabili bavumelene ngemiphumela", + "SourceText": "Self-esteem", + "text": "Ukuzethemba", "type": "template", "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", - "text": "@global.w_consequence_male_caregiver usabele ngomoya ophansi kodwa engagwegwesi ngesikhathi @global.w_consequence_teen_boy_1 ephule umthetho", + "SourceText": "Teens have goals and dreams for the future – near and far!", + "text": "Intsha inezinhloso namaphupho ngekusasa- eliseduze nelikude!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", - "text": "@global.w_consequence_male_caregiver ulalele @global.w_consequence_teen_boy_1", + "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", + "text": "Buza umntwana wakho ngezinhloso nangamaphupho akhe, mkhuthaze ekutheni acabange akufunayo ngekusasa lakhe bese nenza uhlelo ndawonye lokusebenze ekufezeni lezozinhlelo namaphupho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" + "note": "" }, { - "SourceText": "The consequence was realistic and appropriate", - "text": "Umphumela ubunengqondo futhi ufanelekile", + "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", + "text": "Umntwana oqinile angamelana nezimo ezinzima, ahambisane nezinguquko futhi axazulule nezinkinga eziqhamukayo.", "type": "template", "note": "" }, { - "SourceText": "Why did using a consequence work well this time?", - "text": "Kungani ukusebenzisa umphumela kusebenze kahle kulokhu?", + "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", + "text": "Mncome umntwana wakho uma enqobe ubunzima futhi umeseke lapho ungakwazi khona.", "type": "template", "note": "" }, { - "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", - "text": "Kungaba yimuphi umphumela owethulwa ngomoya ophansi ezinganeni zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla? \n\nKhumbula ukuthi kumelwe ube : \nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSI", + "SourceText": "A teen’s self-esteem is how they think of themselves.", + "text": "Ukuzethemba komntwana indlela abazicabanga ngayo.", "type": "template", "note": "" }, { - "SourceText": "Not seeing any friends for a month", - "text": "Ukungaboni abangane inyanga yonke", + "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", + "text": "Khuthaza isithombe esihle, iba isibonelo ekutheni ungazigconi futhi ungazigxeki ngasosonke isikhathi. Wazi amandla omntwana wakho futhi ubeseke ubuthakathaka babo.", "type": "template", "note": "" }, { - "SourceText": "This may be hard to do for you and also too harsh!", - "text": "Lokhu kungase kube nzima ukukwenzela futhi kube nzima kakhulu!", + "SourceText": "Lonely", + "text": "Isizungu", "type": "template", "note": "" }, { - "SourceText": "Cancelling their birthday plans in a month’s time", - "text": "Ukukhansela izinhlelo zabo zokuzalwa esikhathini esingangenyanga", + "SourceText": "Anxious", + "text": "Ukukhathazeka", "type": "template", "note": "" }, { - "SourceText": "This is too far in the future, and too harsh as well!", - "text": "Lokhu kukude kakhulu esikhathini esizayo, futhi kulukhuni kakhulu!", + "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", + "text": "Abantwana bangaba nomzwangedwa noma behleli nabanye. Bangazizwa ngathi abanaye umuntu abangakhuluma naye, abangamethemba noma abangabelana naye.", "type": "template", "note": "" }, { - "SourceText": "No TV this evening", - "text": "Ukungabukeli i-TV namuhlanje kusihlwa/ntabama", + "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", + "text": "Umbuze umntwana wakho ukuthi uzizwa kanjani futhi uzame ukuthola izindlela ezintsha ezijabulisayo zokusebenzisana noma zokuxhumana nabangani nomdeni, ikakhulukazi ngesikhathi sokuvalwa kwezwe.", "type": "template", "note": "" }, { - "SourceText": "Perfect, this sounds fair and can be done straight away", - "text": "Kuhle, kuzwakala kunobulungisa futhi kungenziwa khona manje", + "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", + "text": "Ukukhathazeka kuwumuzwa ojwayelekile futhi kungasisiza sibhekane nezimo ezinzima. Kodwa ukukhathazeka kakhulu okuvimba umntwana ekutheni enze izinto azithandayo kuyinkinga.", "type": "template", "note": "" }, { - "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", - "text": "Hlela umphumela owethulwa ngomoya ophansi wezingane zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla. Khumbula ukuthi kudingeka ube \n\nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSHI", + "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", + "text": "Siza umntwana ukuthi aqaphele ukuthi yini emkhathazayo bese nenza uhlelo ndawonye lokuthi angamelana kanjani nemizwa yokukhathazeka.", "type": "template", "note": "" }, { - "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", - "text": "Umsebenzi wasekhaya kuleli viki kuzoba ukukhulumisana nengane yakho ngomphumela OWODWA ongemuhle nomphumela OWODWA omuhle.\n\nImiphumela kumelwe ibe:\nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGALESOSIKHATHI (kwenze ngaso leso sikhathi)\nUNGASHINTSHI (okufanayo ngaso sonke isikhathi)", + "SourceText": "Doing a relaxation activity together can help!", + "text": "Ukwenza umsebenzi ophumuzayo ndawonye kungasiza!", "type": "template", "note": "" }, { - "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", - "text": "Ukuziphatha okungamukelekile: Ukufika ekhaya sekudlule isikhathi ekuvunyelwene ngaso. \n\nUmphumela Ongemuhle: Awuvunyelwe ukubona abangane bakho nosuku olulandelayo. \n\nUkuziphatha okungamukelekile: Ukukhuluma kabi ngokungenanhlonipho. \n\nUmphumela Ongemuhle: Bhala incwadi yokuxolisa. \n \nUkuziphatha Okuhle: Ukusiza ngokuyothenga. \n\nUmphumela Omuhle: Imizuzu engu-30 eyengeziwe yokwenza okuthile akuthandayo. \n\nUkuziphatha Okuhle: Ukusiza ngokugada izingane zasekhaya ezincane. \n\nUmphumela Omuhle: Ihora elilodwa elengeziwe lokuba nabangani ngempelasonto.", + "SourceText": "Depressed", + "text": "Ukucindezeleka", "type": "template", "note": "" }, { - "SourceText": "Great!", - "text": "Kuhle!", + "SourceText": "Self-harm", + "text": "Ukuzlimaza", "type": "template", "note": "" }, { - "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", - "text": "Ngiyazi ukuthi ukuphila kungaba nzima. Ngiyaziqhenya ngawe. \n\nKungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha!", + "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", + "text": "Ukudabuka noma ukuzizwa unomoya ophansi, noma usesimweni esibi emphefumulweni, yonke lemizwa ijwayelekile empilweni yomuntu. Uma le mizwa iqhubeka isikhathi eside yilapho ke ingcindezi iba khona futhi nezenzo zejwayelo zomntwana ziya thikamezeka. Umntwana wakho angazizwa engenathemba futhi enganalo gqozu lokushintsha izintonto.", "type": "template", "note": "" }, { - "SourceText": "Using the app together", - "text": "Ukusebenzisa i-app sisonke", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", + "text": "Ukutshela umntwana wakho ukuthi 'yekela' ngungenza izinto zibe zimbi kakhulu kunakuqala. Kungcono umlalele, ukhombise ngomoya ophansi ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Zama ukuthola usizo lochwepheshe.", "type": "template", "note": "" }, { - "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", - "text": "Kuhle ukukubona!\n\nOkokuqala, masisize iqembu lakho ukuthi liqale.", + "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", + "text": "Kwesinye isikhathi abantwana bangazilimaza ngamabomu ukumelana nemizwa engemihle efana nokucasuka, ukuba necala, umuzwa wobuze, nokuzizonda. Lokhu kungabangwa ukwethuka nengcindezi.", "type": "template", "note": "" }, { - "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", - "text": "Vumelanani ngemithetho ndawonye:\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto?\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu?\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile?\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa?", + "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", + "text": "Ukutshela umntwana wakho ukuthi 'ima' kungenza izinto zibe zimbi kakhulu. Kungcono umlalele ngomoya ophansi ukutshengisa ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Uma umntwana wakho efuna ukukuchazela ukuthi ukuzilimaza kumsiza kanjani ekutheni azizwe kangcono, ungaqala ngokuqonda izizathu. Zama ukuthola usizo lochwepheshe.", "type": "template", "note": "" }, { - "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", - "text": "Ungalushintsha noma nini usuku lokuqeqeshwa kwakho noma igama leqembu lenu ku @global.weekly_workshop_options.", + "SourceText": "A teen sometimes does something because they:", + "text": "Kwesinye isikhathi umntwana wenza okuthile ngoba:", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "Some rules that other groups made:", - "text": "Eminye yemigaqo/imithetho ebekwe amanye amaqembu:", + "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", + "text": "-Balalela abangani babo\n- Bafuna ukwenza okwenziwa abanye\n-Bacabangela 'imanje' kune 'nekusasa'\n-Bathanda ukuxhamazela futhi bengazi thola bebhoreka ukuqaphela\n-Abakhathazeki ngokuba sengcupheni- futhi bangakuthanda ukuba sengcupheni\n-Banolwazi olulinganiselwe abathembele kulo\n-Bazimisele ukuzama into entsha- noma kungenzakalani", "type": "template", "note": "" }, { - "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", - "text": "Vumelanani ngemigaqo ndawonye\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa", + "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", + "text": "Kungasiza ukugcina lokhu emqondweni uma umntwana wakho ethatha izinqumo ezingalungile. Khuluma naye futhi uchithe isikhathi naye khona uzokwazi ukumsiza ekutheni akhethe kangcono ngokuzayo!", + "type": "template", + "note": "" + }, + { + "SourceText": "You may be asked to share this code with people who will support your @global.parent_app journey.", + "text": "Ungase ucelwe ukuba wabelane ngale khodi nabantu abazokusekela @global.parent_app uhambo lwakho.", "type": "template", "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", - "text": "Uyiqhawe! \n\nNsuku zonke, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole. \n\nKhumbula, uthola i @global.parent_point njalo lapho uzinakekela - ubalulekile!", + "SourceText": "Last sync at: @local.sync_latest", + "text": "Ukuxhumanisa kokungcina: @local.sync_latest", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The string @local.sync_latest should not be translated." }, { - "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", - "text": "Ukuba umzali kungaba nzima kakhulu. Ngezinye izikhathi siba nomuzwa wokuthi izingane zethu azisilaleli.\n\nKodwa isayensi ibonisa ukuthi ukuchitha imizuzu nje embalwa usuku ngalunye nobabili nengane yakho kusiza ekwakheni ukwethembana nothando.", + "SourceText": "This device has never been synced. Sync to reveal your code.", + "text": "Le divayisi ayikaze ixhunyaniswe. Yixhumanise khona kuzovela ikhodi yakho.", "type": "template", "note": "" }, { - "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", - "text": "Lapho uchitha isikhathi nengane yakho kulapho ugxila kuyo, ngaphandle kokuphazanyiswa yi-TV noma omakhalekhukhwini. Yivumele ihole kulokho enikwenzayo noma enixoxa ngakho.\n\nKuhle uma ningachitha imizuzu engamashumi amabili ngosuku, kodwa ngisho nemizuzu emihlanu mihle kakhulu.", + "SourceText": "Sync now", + "text": "Kuxhumanise manje", "type": "template", "note": "" }, { - "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", - "text": "Sanibona.\n\nIsihloko sethu namhlanje ukuchitha isikhathi nezingane zethu.\n\nKubalulekile ukuchitha isikhathi nezingane zethu ukuze zikwazi ukusiqonda, nokuthi nathi sithole ithuba lokuziqonda. \n\nKhumbula, umndeni oqondana kahle uphila ngokuzwana.", + "SourceText": "Syncing...", + "text": "Kuyaxhumana...", "type": "template", "note": "" }, { - "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Watch Together", + "text": "Bukelani Ndawonye", "type": "template", "note": "" }, { - "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", - "text": "* Imisebenzi yokuzinakekela\n* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Let's watch a video together!", + "text": "Masibukele ividiyo ndawonye!", "type": "template", "note": "" }, { - "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", - "text": "Yabelana ngamacebiso! \n\nYiziphi izinto ongazenza ukuze uchithe isikhathi nezingane zakho ezi sebusheni bazo?\n\nUzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Yiza namacebiso okuchitha isikhathi nengane yakho angadli isikhathi esengeziwe, njengokuhamba ndawonye niye ezitolo.", + "SourceText": "Watch", + "text": "Bukela", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", - "text": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuyango kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", + "SourceText": "Let's watch a video!", + "text": "Masibukele ividiyo!", "type": "template", "note": "" }, { - "SourceText": "Let's think of ways to spend one-on-one time with your teen.", - "text": "Masicabange ngezindlela zokuchitha isikhathi nengane yakho esebusheni bayo.", + "SourceText": "Options", + "text": "Ongakhetha kukho", "type": "template", "note": "" }, { - "SourceText": "What could you do to spend one-on-one time with your teen?", - "text": "Yini ongayenza ukuze uchithe isikhathi nengane yakho esebsheni bayo?", + "SourceText": "Welcome @fields.user_name", + "text": "Siyakwamukela @fields.user_name", "type": "template", - "note": "" + "note": "The string @fields.user_name should not be translated." }, { - "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", - "text": "Uzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Ukhumbule nokucabanga ngezindlela ezingadli isikhathi esengeziwe.", + "SourceText": "It's great to see you again!", + "text": "Kuhle ukukubona futhi!", "type": "template", "note": "" }, { - "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", - "text": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuya kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", + "SourceText": "Welcome @fields.group_name", + "text": "Siyakwamukela @fields.group_name", "type": "template", - "note": "" + "note": "The string @fields.group_name should not be translated." }, { - "SourceText": "DAY - Try to do it every day", - "text": "USUKU – Zama ukukwenza nsuku zonke", + "SourceText": "It's great to see you again! Let’s start with a song for families everywhere.", + "text": "Kuhle ukuk'bona futhi! Masiqale ngengoma yemindeni ekuyo yonke indawo.", "type": "template", "note": "" }, { - "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", - "text": "Thola imizuzu emihlanu (noma ngaphezulu!) usuku ngalunye lapho ingane yakho engenalutho olunye efuna ukulwenza.", + "SourceText": "Let's Slow Down", + "text": "Masehlise Isivinini", "type": "template", "note": "" }, { - "SourceText": "PLAY - Let your teen choose", - "text": "DLALA - Vumela ingane yakho esebusheni bayo ukuba ikhethe", + "SourceText": "How would you like to do this workshop?", + "text": "Ungathanda ukukwenza kanjani umhlangano wokufundisana?", "type": "template", "note": "" }, { - "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", - "text": "Tshela ingane yahoo esebusheni bayo ukuthi ungathanda ukuchitha isikhathi nayo nokuthi ingakhetha lokho efuna ukukwenza noma efuna ukukhuluma ngakho. Ingase idideke ekuqaleni kodwa ngokuhamba kwesikhathi izokujabulela ukuchitha isikhathi nawe!", + "SourceText": "Coming soon", + "text": "Kuyeza maduze", "type": "template", "note": "" }, { - "SourceText": "STAY - Focus on your teen", - "text": "HLALA - Gxila enganeni yakho esebusheni bayo", + "SourceText": "We will need to cover other parenting issues before we can start working on @local.workshop_data.title.\n\nYou can get essential tools on @local.workshop_data.title via the @global.parent_centre.", + "text": "Sizodinga ukuxoxa ngezinye izingqinamba zokukhulisa izingane ngaphambi kokuthi siqale ukusebenza \nku- @ local.workshop_data.title.\n\nUngathola izicebiso ezibalulekile ku @local.workshop_data.title nge @global.parent_centre.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@local.workshop_data.title\n@local.workshop_data.title\n@global.parent_centre" }, { - "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", - "text": "Vala umabona kude (TV) ubeke eceleni omakhalekhukhwini. Bheka ingane yakho. Nqekuzisa ikhanda noma uthi “Ngiyabona” ukuze ubonise ukuthi ulalele ngempela. Yamukela ekushoyo ngaphandle kokuyahlulela.", + "SourceText": "My name", + "text": "Igama lami", "type": "template", "note": "" }, { - "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", - "text": "Ukuchitha isikhathi nengane yakho esebusheni bayo kungaba mnandi nakuwe! Kunganciphisa nokucindezeleka kwakho.", + "SourceText": "@global.weekly_workshop day", + "text": "Usuku lwe @global.weekly_workshop", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", - "text": "Chitha imizuzu eyishlanu -5 kuya kwengu-20 nengane yakho esebusheni bayo uma ungakwazi kuleli viki.", + "SourceText": "I do the workshops...", + "text": "Ngenza umhlangano wokufundisana...", "type": "template", "note": "" }, { - "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Khumbula - noma nini uma ukwazi, phumula, naka futhi uzivuze. \n\nZinakekele nsuku zonke. Ubalulekile!", + "SourceText": "My group's name", + "text": "Igama leqembu lami", "type": "template", "note": "" }, { - "SourceText": "Remember that YOU matter!", - "text": "Khumbula ukuthi UBALULEKILE!", + "SourceText": "My group is now doing the workshop...", + "text": "Iqembu lami lenza umhlangano wokufundisana...", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", - "text": "Usebenzile ngokuthi uqaphele ukuthi unemizwa emihle. Ngiyajabula ukuzwa ukuthi uzizwa kahle namuhla!", + "SourceText": "I am now doing the workshop...", + "text": "Manje ngenze umhlangano wokufundisana...", "type": "template", "note": "" }, { - "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", - "text": "Usebenzile ngokuthi uqaphele ukuthi unemizwa enzima. Kulungile ukungazizwa kahle ngezinye izikhathi. Khumbula ukuthi awuwedwa.", + "SourceText": "These quick questions will fit this app to your needs.", + "text": "Le mibuzo esheshayo izokwenza le-app ifanelane nezidingo zakho.", "type": "template", "note": "" }, { - "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", - "text": "Kuhle kakhulu lokhu. Yonke le mikhuba yenza umndeni wakho uqine. Ziqhenye.", + "SourceText": "Let’s start with a few questions about you and your family.", + "text": "Masiqale ngemibuzo embalwa emayelana nawe nomndeni wakho.", "type": "template", "note": "" }, { - "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", - "text": "Imithetho yenza abantwana bethu ukuthi yini elindeleke kubo. \n\nAbantwana bayayilandela imithetho uma wenze imithetho NABO futhi ubancome ngalokho!", + "SourceText": "We would love to know your first name or nickname:", + "text": "Singathanda ukwazi igama lakho noma isiteketiso sakho:", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla imithetho. \n\nImithetho ikhuthaza ukuthula ekhaya futhi ikhuthaza ukuqondana phakathi kwamalungu omndeni. \n\nImithetho ithuthukisa izibopho zelungu lomndeni ngalinye, ngakho-ke kubalulekile ukuba umndeni ube nemithetho. \n\nIkhaya elinemithetho umndeni uphila ngokuthula.", + "SourceText": "Are you a woman or a man?", + "text": "Ungumuntu wesilisa noma wesifazane?", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nengxoxo – okungasebenzanga ... \n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Woman", + "text": "Owesifazane", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ... \n* Indaba kanye nokubuyekeza indaba - okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Man", + "text": "Owesilisa", "type": "template", "note": "" }, { - "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", - "text": "Ake sifunde ngokwenzeke ku @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 wakhe:", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" - }, - { - "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", - "text": "@global.w_rules_female_caregiver_1: “Uhlale ubuya sekuhlwile ekhaya!”\n\n@global.w_rules_teen_boy: “Cha angazi, angazi nokuthi kusuke kungubani isikhathi uma sekuhlwile! Yeka ukungicasula.”", + "SourceText": "How old are you?", + "text": "Uneminyaka emingaki?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", - "text": "Yimuphi umthetho oqondile @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 abangawenza ndawonye?", + "SourceText": "Adults", + "text": "Bangaki abadala", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", - "text": "Ake sibone ukuthi @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy yini abayenzile ngosuku olulandelayo:\n\n@global.w_rules_female_caregiver_1: “Ngiyafuna ukuthi uzijabulise, @global.w_rules_teen_boy, kodwa ngiyakhathazeka uma ungabuyi kuze kuhlwe. Uyazi ukuthi kungani?” \n\n@global.w_rules_teen_boy: “Kungenxa yokuthi ufuna ngibe nesikhathi esanele sokwenza umsebenzi wami wesikole?”", + "SourceText": "Teens", + "text": "Intsha", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", - "text": "@global.w_rules_female_caregiver_1: “Kunjalo, okunye futhi ukuthi akuphephile ukuba ngaphandle kule ndawo uma sekuhlwile. Ucabanga ukuthi kungaba isiphi isikhathi esifanele sokubuya ekhaya?”", + "SourceText": "Children", + "text": "Zingaki izingane", "type": "template", - "note": "The string @global.w_rules_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", - "text": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-10 ebusuku? \n\n@global.w_rules_female_caregiver_1: “Kusuke sekusebusuku ngaleso sikhathi, kungaba njani ngo-6 ntambama? Noma esinye isikhathi esiuphakathi?”", + "SourceText": "Babies", + "text": "Zingaki izingane ezincane", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", - "text": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-6 ntambama phakathi nezinsuku zesikole bese kuba u-10 ebusuku ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Yebo, kuhle lokho. Kusukela manje ukuya phambili, umthetho wasekhaya uthi kumelwe ubuye ekhaya ngo-6 ntambama ngezinsuku oya ngazo esikoleni kanti ngoLwesihlanu nangoMgqibelo ubuye ngo-10pm. Kodwa kumelwe uhlale uphelezelwa umngane uma ubuya ekhaya. “Kulungile?”", + "SourceText": "How many people are in your household?", + "text": "Bangaki abantu abasekhayeni lakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", - "text": "@global.w_rules_teen_boy: “Kulungile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ngiyabonga kakhulu, @global.w_rules_teen_boy, ngokungisiza ukuba sibeke umthetho omuhle sindawonye. Kuyangijabulisa ukubona ukuthi uba nezibopho kangakanani.”", + "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", + "text": "Ungenza i @global.weekly_workshops ngokwakho NOMA ungamema amanye amalungu omndeni noma abangane ukuba bahlanganyele nawe - nizofunda okuningi komunye nomunye. Kusezandleni zakho!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", - "text": "Ngosuku olulandelayo...\n\n@global.w_rules_female_caregiver_1: “Ngiyabonga, @global.w_rules_teen_boy, ngokufika ekhaya ngesikhathi. Uma usuqede umsebenzi wakho wesikole sizodla ukudla okuthayo esidlweni sakusihlwa.”", + "SourceText": "How would you like to do your @global.weekly_workshops?", + "text": "Ungathanda ukuyenza kanjani i @global.weekly_workshops yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "Making the rule together went well because...", - "text": "Ukubeka umthetho ndawonye kube impumelelo ngoba...", + "SourceText": "Can you think of a name for your group?", + "text": "Ungacabanga igama ongabiza ngalo iqembu lakho?", "type": "template", "note": "" }, { - "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "* Baye baxoxa ngezizathu zokubeka umthetho \n* @global.w_rules_female_caregiver_1 uye wakulalela -@global.w_rules_teen_boy isiphakamiso\n* Umthetho ubucacile, uqondile futhi ubonelela \n* @global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", + "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", + "text": "Yiluphi usuku evikini ongathanda ukwenza ngalo i @global.weekly_workshops yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", - "text": "@global.w_rules_teen_boy bekazi ukuthi @global.w_rules_female_caregiver_1 uyancoma ngoba...", + "SourceText": "Monday", + "text": "UMsombuluko", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "" }, { - "SourceText": "* She praised him\n* She rewarded him when he followed the rule", - "text": "* Uye wamncoma\n* Uye wamvuza uma elandela umthetho", + "SourceText": "Tuesday", + "text": "ULwesibili", "type": "template", "note": "" }, { - "SourceText": "Let's think about what happened in this story.", - "text": "Ake sicabange ngokuthi kwenzekeni kule ndaba.", + "SourceText": "Wednesday", + "text": "ULwesithathu", "type": "template", "note": "" }, { - "SourceText": "What went well here in making a rule together?", - "text": "Yini ehambe kahle lapha ekubekeni umthetho ndawonye?", + "SourceText": "Thursday", + "text": "ULwesine", "type": "template", "note": "" }, { - "SourceText": "They discussed the reasons behind the rule", - "text": "Baye baxoxa ngezizathu zokubeka umthetho", + "SourceText": "Friday", + "text": "ULwesihlanu", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", - "text": "@global.w_rules_female_caregiver_1 uye wakulalela kuka-@global.w_rules_teen_boy iziphakamiso", + "SourceText": "Saturday", + "text": "UMgqibelo", "type": "template", "note": "" }, { - "SourceText": "The rule was clear, specific and fair", - "text": "Umthetho ubucacile, uqondile futhi ubonelela", + "SourceText": "Sunday", + "text": "ISonto", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", - "text": "@global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", + "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", + "text": "Kuhle! Sizovula ukuqeqeshwa okusha kweqembu lakho njalo ngesonto. Lokhu kunivumela nonke ukuba nizame lokho enikufundile nemindeni yenu ngaphambi kokuba nifunde elinye ikhono.", "type": "template", "note": "" }, { - "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", - "text": "Kunjalo, ukwenza imithetho ecacile ndawonye ngendlela ezolile neyakhayo kusebenza kahle!", + "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", + "text": "Kuhle! Sizovula ukuqeqeshwa okusha kwakho njalo ngesonto. Lokhu kuzokuvumela ukuba uzame lokho okufundile nomndeni wakho ngaphambi kokuba nifunde elinye ikhono.", "type": "template", "note": "" }, { - "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", - "text": "Ucabanga ukuthi u-@global.w_rules_teen_boy waze kanjani ukuthi u-@global.w_rules_female_caregiver_1 uyamncoma?", + "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", + "text": "Ungazishintsha noma nini lezi zinhlelo ku @global.weekly_workshop_options yakho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "She praised him", - "text": "Uye wamncoma", + "SourceText": "Are you sure you want to unlock all the workshops? Once you do this you will not be able to lock them back", + "text": "Ingabe uyaqiniseka ukuthi ufuna ukuvula yonke imhlangano yokufundisana? Lapho usukuvulile khona ngeke usakwazi ukuphinde ukukhiye futhi", "type": "template", "note": "" }, { - "SourceText": "She rewarded him when he followed the rule", - "text": "Uye wamvuza uma elandela umthetho", + "SourceText": "Unlock Workshops", + "text": "Vula umhlangano wokufundisana", "type": "template", "note": "" }, { - "SourceText": "Exactly - a positive response makes all the difference!", - "text": "Kunjalo - ukusabela ngendlela enhle kwenza umehluko!", + "SourceText": "Using the app together", + "text": "Ukusebenzisa i-app sisonke", "type": "template", "note": "" }, { - "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", - "text": "Imithetho yasekhaya isiza ukugcina izingane zethu zivikelekile, futhi yenza iqonde ukuthi yini elindeleke kuzo. Uma ubandakanya ingane yakho ekubekeni imithetho kwenza bawulandele kalula umthetho.", + "SourceText": "It’s great to see you!\n\nFirst, let’s help your group get started.", + "text": "Kuhle ukukubona!\n\nOkokuqala, masisize iqembu lakho ukuthi liqale.", "type": "template", "note": "" }, { - "SourceText": "TEAM RULES", - "text": "IMITHETHO YEQEMBU", + "SourceText": "Agree on your ground rules together:\n* Which day(s)/time(s) will we meet in the week?\n* Who will hold the phone(s) during our activities?\n* How can we make sure everyone can share freely?\n* What can we do so we all feel respected?", + "text": "Vumelanani ngemithetho ndawonye:\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto?\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu?\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile?\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa?", "type": "template", "note": "" }, { - "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", - "text": "Hlela imithetho NDAWONYE nengane yakho. Qala ngomthetho owodwa omusha - unganezela omunye ngokuhamba kwesikhathi. Xoxisanani ngezizathu zomthetho ngemva kwalokho ulalele imibono yabo.", + "SourceText": "You always can change your workshop day and your group name in the @global.weekly_workshop_options.", + "text": "Ungalushintsha noma nini usuku lokuqeqeshwa kwakho noma igama leqembu lenu ku @global.weekly_workshop_options.", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop_options should not be translated." }, { - "SourceText": "REAL RULES", - "text": "IMITHETHO YANGEMPELA", + "SourceText": "Some rules that other groups made:", + "text": "Eminye yemigaqo/imithetho ebekwe amanye amaqembu:", "type": "template", "note": "" }, { - "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", - "text": "Yenza kube imithetho umntwana wakho angakwazi ukukwenza nokuyilandela, cacisa futhi ukhulume ngokuqondile ukuze kungabi khona ukungaqondani. Ungathi ‘ngesikhathi’ kodwa yithi “ngo-7 ntambama”.", + "SourceText": "* Tuesday at 7pm is our @global.parent_app time together\n* Take turns holding the phone (1 activity per person)\n* Accept each other’s experiences. We are all different!\n* Take turns speaking and listening\n* All questions are welcome\n* What we share stays among us", + "text": "Vumelanani ngemigaqo ndawonye\n* Yiluphi usuku (izinsuku)/isikhathi (izikhathi) enizohlangana ngaso phakathi nesonto\n* Ubani ozogcina omakhalekhukhwini ngesikhathi senza imisebenzi yethu\n* Singaqinisekisa kanjani ukuthi wonke umuntu uhlanganyela ngokukhululekile\n* Yini esingayenza ukuze sonke sizizwe sihlonishwa", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "PRAISE RULES!", - "text": "NCOMA UMTHETHO!", + "SourceText": "Spend 5-20 minutes of one-on-one time with your teen, every day you can this week.", + "text": "Chitha imizuzu eyishlanu -5 kuya kwengu-20 nengane yakho esebusheni bayo uma ungakwazi kuleli viki.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", - "text": "Ncoma ingane yakho ngokuthi ibeke uthetho nawe, uphinde uyincome ngokuthi iwugcine!", + "SourceText": "Remember - whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Khumbula - noma nini uma ukwazi, phumula, naka futhi uzivuze. \n\nZinakekele nsuku zonke. Ubalulekile!", "type": "template", "note": "" }, { - "SourceText": "Online Safety", - "text": "Ukuphepha Ku-inthanethi", + "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", + "text": "Abazali abaningi babhekana nezinselele zokuchitha isikhathi nezingane zabo ebusheni bazo.\n\nNazi izinselelo eziphezulu kakhulu eziyisishiyagalombili 8 abazali abasitshele zona ababhekana nazo lapho behlela noma bechitha isikhathi esisodwa nentsha yabo. Uma uhlangabezane nokukodwa kwalokhu noma wesaba ukuthi uzokuthinta, thepha ukuze uthole isixazululo esingaba khona. Ungathinta uphinde uhlole ezinye izinselelo ngemuva kwalokho.", "type": "template", "note": "" }, { - "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", - "text": "Imithetho ibalulekile ukugcina abantwana bethu bephephile - naku-inthanethi. Kunokwengeziwe mayelana nokuhlela okuphephile Ekuqeqeshweni Kwamasonto Onke, kodwa ake sikubuke lokhu njengamanje!", + "SourceText": "Did you have any challenges when trying to spend time with your teen?", + "text": "Ngabe unezinselelo ezithile ngenkathi uzama ukuchitha isikhathi nengane yakho?", "type": "template", "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", - "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, usuwenzile umsebenzi wakho wesikole?\"\n\n@global.w_rules_teen_girl: “Umzuzwana nje @global.w_rules_female_caregiver_2, ngisaqedela le @global.teen_social_medium vidiyo\"", + "SourceText": "What challenge did you have when trying to spend time with your teen?", + "text": "Iyiphi inselele obenayo lapho uzama ukuchitha isikhathi nengane yakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", - "text": "@global.w_rules_female_caregiver_2: “Ave udansa kahle kakhulu! Ngitshele ukuthi kungani uthanda ukudansa\"\n\n@global.w_rules_teen_girl: “Bonke abangane bami bayadansa, @global.w_rules_female_caregiver_2. Nginabangithandayo-abangu-600 nabalandeli abangu-120.”", + "SourceText": "I don’t have enough time.", + "text": "Anginaso isikhathi esanele.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", - "text": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe ngendlela odansa kahle ngayo, @global.w_rules_teen_girl. Kodwa kumelwe siqiniseka ukuba uphephile. \n\nNgiyazi ukuba abangani bakho babuka @global.teen_social_medium, kodwa nge-akhawunti evulela wonke umuntu, kunabanye abantu ababuka amavidiyo abantu abasha ukuze bazanelise ngokocansi. Ngezinye izikhathi bayaxhumana nentsha. Bazenza sengathi balungile kodwa ekugcineni bayabesabisa futhi bayihlukumeze intsha.”", + "SourceText": "My teen does not want to spend time with me.", + "text": "Ingane yams esebusheni bayo ayifuni ukuchitha isikhathi nami.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", - "text": "@global.w_rules_female_caregiver_2: “Ake sihlole ku-inthanethi sobabili ukuthi singenza kanjani ukuthi ukujabulele lokhu kodwa uphephe ngesikhathi esifanayo. Bheka - ungakwazi ukwenza ukuba kube abantu abathile kuphela abakwazi ukubona i-akhawunti yakho futhi ungakwazi nokukhetha ukuthi ubani ozokulandela.\n\nNgakho, ungavumela abantu obaziyo basesikoleni nabasemphakathini, kodwa hhayi abantu obathola ku-inhanethi.\n\nIngabe singakwazi ukwenza umthetho ndawonye ungawusebenzisa @global.teen_social_medium, kodwa nge-akhawunti engavulelekile kuwonke wonke? Ngiyakwethemba ukuthi uyazi ukuthi obani ozobavumela!”", + "SourceText": "My teen only wants to watch TV or play on his/her phone.", + "text": "Ingane yami esebusheni bayo ifuna nje ukubukela umabonakude (i-TV) noma ukudlala ngomakhalekhukhwini wayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" + "note": "" }, { - "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", - "text": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe @global.w_rules_teen_girl”", + "SourceText": "My teen wants to do things that are not safe or that cost money.", + "text": "Ingane yami esebusheni bayo ifuna ukwenza izinto ezingaphephile noma ezidinga imali.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" + "note": "" }, { - "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", - "text": "* Yimuphi umthetho obalulekile eningafisa ukuwubeka nengane yakho? \n* Ucabanga ukuthi ingane yakho izocabangani ngalo mthetho? \n\nKhumbula, beka umthetho oqondile futhi ozolungela ingane!", + "SourceText": "My teen wants to do things that I cannot physically do.", + "text": "Ingane yami esebusheni bayo ifuna ukwenza izinto engihluleka ukuzenza mina ngokomzimba.", "type": "template", "note": "" }, { - "SourceText": "Here are some of the rules other families created:", - "text": "Nayi eminye imithetho ebekwe eminye imindeni:", + "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", + "text": "Ingane yami ikhetha umsebenzi wokuncintisana. Ngawina yase yathukuthela.", "type": "template", "note": "" }, { - "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", - "text": "* Ingane yakho ingadlala ngaphandle ngemuva kokuqeda umsebenzi wasekhaya\n* Onke amalunga omndeni adla isidlo sakusihlwa ndawonye\n* Ingane yakho yokuqala igeza izitsha ngeSonto nangoMsombuluko, bese eyesibili izigeze ngoLwesibili nangoLwesithathu \n* Sikhulumisana ngenhlonipho nangomusa \n* Uma ulalela umculo kumelwe usebenzise ama-earphones", + "SourceText": "I struggled to end the one-on-one time.", + "text": "Nginenkinga yokuqeda isikhathi esisodwa nengane yami.", "type": "template", "note": "" }, { - "SourceText": "Let's practice making rules.", - "text": "Ake sizame ukubeka imithetho.", + "SourceText": "All my children want one-on-one time with me at the same time.", + "text": "Zonke izingane zami zifuna ukuchitha isikhathi nami ngesikhathi esifanayo.", "type": "template", "note": "" }, { - "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", - "text": "Bhala phansi umthetho owodwa obalulekile ongathanda ukuwubeka nengane yakho - uzokwenza lokhu njengomsebenzi wasekhaya wokuprakthiza waleli viki. \n\nBazocabangani ngawo?", + "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", + "text": "Yebo, kuba nzima impela ukuthola isikhathi emini, ngenxa yomsebenzi, imisebenzi yasekhaya, nakho konke ke okunye.", "type": "template", "note": "" }, { - "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", - "text": "Kuleli viki, bekani umthetho owodwa nengane yakho.\n\nKhumbula ukuncoma ingane yakho ngemva kwalokho!", + "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", + "text": "Siyaxolisa ngokuthi ukuthole kunzima lokho. Kungasenza sizizwe kabi uma izingane zethu zingafuni ukuchitha isikhathi nathi.", "type": "template", "note": "" }, { - "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", - "text": "Ngiyajabula ukuzwa ukuthi kukuhambela kahle. Ungumzali omangalisayo!", + "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", + "text": "Cabanga ngesikhathi lapho ingane yami ikhululekile kumina njengasekuseni noma ngaphambi kokulala.", "type": "template", "note": "" }, { - "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", - "text": "Ngiyaxolisa ngokuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuzama ukwazi ngalokhu. Akekho umuntu onezimpendulo zayo yonke imibuzo kodwa wenza konke okusemandleni akho!", + "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", + "text": "Hlala eduze kwengane yakho lapho benza okuthile abakuthandayo futhi ubakhombise intshisekelo kulokho abakuthandayo.", "type": "template", "note": "" }, { - "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", - "text": "Ngiyaxolisa ukuzwa ukuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuthi uvuke njalo ekuseni ukuze uzame futhi, ngisho noma ukhathele. Lokhu kubonisa ukuzimisela nokuzinikela!", + "SourceText": "Do something fun with the whole family.", + "text": "Yenza okuthile okumnandi nomndeni wakho wonke.", "type": "template", "note": "" }, { - "SourceText": "Step 1: Share what went well and what was hard", - "text": "Isinyathelo 1: Sixoxele ngokuhambe kahle nokuthi ikuphi okube nzima", + "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", + "text": "Kuhle! Ukukhetha isikhathi lapho khona ingane yakho ikhuluma kakhulu khona kuzoyisiza isabele kahle emizamweni yakho yokuxhumana nayo.", "type": "template", "note": "" }, { - "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", - "text": "“Ngifunde okuningi ngompilo yomntwana wami, uma sichitha isikhathi ndawonye! Kodwa ngemva kosuku lokuqala, umntwana wami ubefuna ukudlala ngefoni yakhe kuphela.”", + "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", + "text": "Kuhle! Ukubukela uhlelo lwe-Tv noma lwezemidlalo oluthandwa ingane yakho esebusheni bayo kuzoyibonisa ukuthi unendaba nayo. Yiba nesineke; izokhululeka ukubanawe ngokuhamba kwesikhathi!", "type": "template", "note": "" }, { - "SourceText": "Step 2: Bring ideas!", - "text": "Isinyathelo 2: Veza amacebo!", + "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", + "text": "Kuhle kakhulu! Ngezinye izikhathi kungaba lula ukuqala ngokuchitha isikhathi nomndeni wonke. Ngaleyo ndlela ingane yakho eyevile eminyakeni eyishumi nambili izokwazi ukukhululeka lapho ichitha isikhathi nawe ngokuhamba kwesikhathi.", "type": "template", "note": "" }, { - "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", - "text": "“Wenze kahle ngokuzama! Mhlawumbe ungaveza ezinye izinto ezimnandi eningazenza ndawonye nengane yakho. \n\n“Yebo, noma ningenza okuthile kumakhalekhukhwini wakhe ndawonye? Noma angakubonisa ukuthi ifoni yakhe isebenza kanjani?”", + "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", + "text": "Siyaxolisa ngokuthi ube naleyo nselele. Ngokuvamile izingane zifuna ukucitha isikhathi zibukela umabonakude (i-Tv) noma zidlala ngemishini yezobuchwepheshe. Siyakuhalalisela ngokuba nesineke nengane yakho esebusheni bayo!", "type": "template", "note": "" }, { - "SourceText": "Step 3: Pick and try one!", - "text": "Isinyathelo 3: Khetha bese uzama okukodwa!", + "SourceText": "Suggest fun things my teen and I could do together.", + "text": "Phakamisa izinto ezimnandi mina nengane yami esebusheni bayo esingazenza ndawonye.", "type": "template", "note": "" }, { - "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", - "text": "“Ngiyabonga ngala macebiso amahle! Yebo, ake ngicele ingane yami ingibonise ukuthi ifoni yayo isebenza kanjani kusasa uma iphuma esikoleni. Ngicela manje omunye kini azenze ingane yami, ukuze ngikwazi ukuprakthiza ukumcela?”", + "SourceText": "Find something educational to do with my teen on the gadget.", + "text": "Thola okuthile okunemfudiso okokwenza nengane yami esebusheni bayo emshinini wezobuchwepheshe.", "type": "template", "note": "" }, { - "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", - "text": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa:\n\n* Yini ehambe kahle futhi yini ebe yinkinga?\n* Yiziphi izixazululo eningazicabanga ndawonye?\n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho! \n\n(Noma ungayiprakthiza khona manje ukuze kube lula kamuva!)", + "SourceText": "Ask my teen to show me how their phone/gadget works.", + "text": "Cela ingane yami esebusheni bayo ukuthi ingibonise indlela umakhalekhukhwini/umshini wayo wezobuchwepheshe usebenza kanjani.", "type": "template", "note": "" }, { - "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", - "text": "Ukuncoma kuyikhono elinamandla lokuba umzali.\n\nUma sincoma abantwana bethu uma benze okuthile okuhle, sizobona benza izinto ezingeziwe ezinhle!", + "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", + "text": "Kuhle lokho! Uma udinga isikhuthazo, nanka amacebiso athile avela kweminye imindeni alokho eningakwenza ndawonye. Khumbula, vumela ingane yakho esebusheni bayo ukuba ikhethe.", "type": "template", "note": "" }, { - "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", - "text": "Sanibonani nonke. \n\nIsihloko sethu sanamuhla sikhuluma ngokuncoma. \n\nKuyinto enhle ukuncoma abantwana bethu uma benze kahle ngoba uma senza kanjalo, bazokwenza okungeziwe okuhle esifuna ukukubona. \n\nFuthi singakhohlwa ukuzincoma nathi uma senze kahle!", + "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", + "text": "Kuhle kakhulu!  Kunama-apps amaningi amnandi nafundisayo komakhalekhukhwini eningawahlola ndawonye. Buza imibuzo, bonisa uthando bese ukhumbula ukusho into enhle.", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", - "text": "* Imithelela yokuncoma\n* Indatshana kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", + "text": "Kuhle! Izingane ezisebusheni bazo ziyajabula lapho ubonisa isifiso sokwazi ngomshini wazo wezobuchwepheshe nalapho zithola ithuba lokukuchazela okuthile ezikwaziyo. Lesi yisiqalo esihle!", "type": "template", "note": "" }, { - "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", - "text": "* Imithelela yokuncoma\n* Indatshana kanye nokucabanga ujule - okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", + "text": "Awuwedwa lapha. Abazali abaningi ngezinye izikhathi nabo baba nale nselele. Ukuchitha isikhathi ndawonye kumelwe kuhlale kuphephile, futhi akudingeki kudle imali!", "type": "template", "note": "" }, { - "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", - "text": "Xoxelanani:\n\n* Ugcine nini ukubongwa noma kuthiwe wenze kahle? \n* Kwakwenza wazizwa kanjani? \n* Uzizwa kanjani uma ungabongwa noma unconywe ngokuthile okwenzayo? \n\nNgokuvamile asibongwa noma sinconywe ngokwanele njengabazali. Mhlawumbe ungenza isibonelo esihle ngokuthi sincome abantwana bethu kuqala uma benze kahle!", + "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", + "text": "Ukuchazela ingane yami esebusheni bayo ukuthi kungani umbono wayo ungaphephile noma ungenakwenzeka futhi uyicele ukuba icabange okunye okuhlukile.", "type": "template", "note": "" }, { - "SourceText": "Think about the last time someone thanked you, or said you did something great.", - "text": "Cabanga ngesikhathi lapho kukhona owakubonga, noma owathi wenze into enhle.", + "SourceText": "Suggest other fun activities that we could do together.", + "text": "Phakamisa eminye imisebenzi yobumnandi ebesingayenza ndawonye.", "type": "template", "note": "" }, { - "SourceText": "How did it make you feel?", - "text": "Wazizwa kanjani?", + "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", + "text": "Kuhle kakhulu! Kubaluleke kakhulu ukuthi ingane yakho esebusheni bayo iqonde ukuthi kungani ungeke ukwazi ukwenza into eziyisikisele. Yicele ukuba ize neminye imibono!", "type": "template", "note": "" }, { - "SourceText": "Parents usually don’t get thanked or praised enough.", - "text": "Akuvamile ukuthi abazali babongwe noma banconywe ngokwanele.", + "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Lokhu kuhle kakhulu! Uma udinga noma yisiphi isikhuthazo, ungathola amacebiso ezinto ongazenza @data.parent_centre.relax_and_activities.location_text. Khumbula, vumela ingane yakho esebusheni bayo ikhethe enizokwenza!", "type": "template", - "note": "" + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "How does it make you feel when nobody says \"thank you\"?", - "text": "Kukwenza uzizwe kanjani uma kungekho muntu othi “ngiyabonga”?", + "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", + "text": "Siyaxolisa ngokuzwa lokhu. Izingane zethu ezisebusheni bazo zingase zidumale uma singakwazi ukwenza lokho ezifuna ukukwenza, njengokudlala ezemidlalo noma ukwenza ezinye izinto ezikhandla umzimba. Kodwa khumbula ukuthi okubaluleke kakhulu ukucitha isikhathi nazo. Lokho kuhlukile kuwo wonke umuntu!", "type": "template", "note": "" }, { - "SourceText": "Tired", - "text": "Ukhathele", + "SourceText": "Watch my teen do the activity and cheer them on.", + "text": "Bukela insane yami esebusheni bayo yenza okuthile futhi ngiyamu gqugquzele.", "type": "template", "note": "" }, { - "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", - "text": "Ingane yakho ingazizwa ngalendlela nayo. Yilokho okwenza ithuluzi lokuba umzali laleli viki libe elibalulekile kodwa elilula: Bancome ngezinto ezinhle abazenzayo.", + "SourceText": "Suggest other fun activities we can do together.", + "text": "Sikisela ezinye izinto ezimnandi esingazenza ndawonye.", "type": "template", "note": "" }, { - "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", - "text": "Ngempela ukuncoma kunamandla. \n\nAke sibone isibonelo sika @global.w_praise_female_caregiver_name nendodakazi yakhe:", + "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", + "text": "Kuhle kakhulu! Ngisho noma kuthiwa ubukele esikhundleni sokwenza lokho ndawonye, ungabonisa ukuthi uyakuthanda lokho ngokuchaza nokuncoma lokho ingane yakho esebusheni bayo ekwenzayo!", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", - "text": "Ngesikhathi u @global.w_praise_female_caregiver_name ematasa, amadodakazi akhe amabili avamise ukulwa. Kodwa namuhla, indodakazi yakhe endala isize udadewabo ngomsebenzi wesikole!", + "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", + "text": "Kuhle kakhulu lokho! Uma udinga noma yisiphi isikhuthazo, ungathola amacebiso ezinto ongazenza @data.parent_centre.relax_and_activities.location_text. Khumbula, vumela ingane yakho esebusheni bayo ikhethe enizokwenza!", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", - "text": "@global.w_praise_female_caregiver_name: \"Ngiyabonga ngokuthi wenze umsebenzi wakho wesikole, @global.w_praise_girl, ngiyabonga ngokuthi usize udadewenu, @global.w_praise_teen_girl. Ngiyaziqhenya kakhulu ngani!\"", + "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", + "text": "Lokhu kuyenzeka ngezinye izikhathi! Imidlalo yokuncintisana ingaba yinselele ezinganeni ezisebusheni bazo (kanye nakubantu abadala!) uma benekinga nokungaphumeleli.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss this story.", - "text": "Ake sixoxe ngale ndaba.", + "SourceText": "Suggest other activities that we can do together instead of against each other.", + "text": "Sikisela ezinye izinto eningazenza ndawonye esikhundleni sokuncintisana.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", - "text": "Xoxani ndawonye:\n\n* Ukunconywa kwenze-@global.w_praise_female_caregiver_name izingane zizizwe kanjani?\n* Kungani eye wazincoma?", + "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", + "text": "Dlalani imidlalo ngamaqembu, ukuze ngikwazi ukukhuthaza ingane yami esebusheni bayo uma iqembu lethu lidliwa.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", - "text": "@global.w_praise_female_caregiver_name uncome izingane zakhe..... ", + "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", + "text": "Khumbula, vumela ingane yahoo esebusheni bayo ukuba ikhethe! Ungathola amacebiso ezinto ongazenza nengane yakho esebusheni bayo @data.parent_centre.relax_and_activities.location_text, uma uwadinga.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." }, { - "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", - "text": "* Ukuze ezikwenzayo zikwenze ngokwengeziwe\n* Ukuze amsize aqedele umsebenzi wakhe \n* Ukuze azenze zizizwe zijabule \n* Ukuze azizwe ejabule", + "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", + "text": "Uma wena nengane yahoo esebusheni bayo niseqenjini elilodwa, ungayisiza ilawule imizwelo yayo uma iqembu lenu lidliwa.", "type": "template", "note": "" }, { - "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", - "text": "Ukunconywa kwenze -@global.w_praise_female_caregiver_name izingane zazizwa kanjani?", + "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", + "text": "Yebo, ukuphela kwesikhathi osicitha nengane yakho kungase kube nzima ngezinye izikhathi.", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "Why did she praise them?", - "text": "Kungani aye wazincoma?", + "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", + "text": "Yithi enganeni yami, \"Sesinomzuzu owodwa ngaphambi kokuphela kwesikhathi sesethu sobabili namhlanje\", ukuze ingane yami izilungiselele.", "type": "template", "note": "" }, { - "SourceText": "To get them to do it more often", - "text": "Ukuze abakwenzayo bakwenze ngokwengeziwe", + "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", + "text": "Yazisa insane yami esebusheni bayo ukuthi nginesikhathi esingakanani sesikathi sethu sobabili bese uyayi cela ukuthi ilandelele iwashi.", "type": "template", "note": "" }, { - "SourceText": "To help her finish her work", - "text": "Ukuze amsize aqedele umsebenzi wakhe", + "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", + "text": "Hlela isikhathi senu nobabili ngaphambi komunye umsebenzi ingane yami esebusheni bayo ewujabulelayo.", "type": "template", "note": "" }, { - "SourceText": "To make them feel good", - "text": "Ukubenza bazizwe bejabule", + "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", + "text": "Kuhle kakhulu! Ngokunikeza ingane yakho esebusheni bayo isixwayiso kusengaphambili, isikhathi sokuphela kwenkathi yokucitha isikhathi ndawonye ngeke sibe yinto engalindelekile. Ungaphinde ukhumbuze ingane yakho esebusheni bayo ukuthi nizophinde nicithe isikhathi ndawonye kusasa.", "type": "template", "note": "" }, { - "SourceText": "To make herself feel good", - "text": "Ukuze azizwe ejabule", + "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", + "text": "Kuhle! Ngaleyo ndlela ingane yakho inesibopho sokuqapha isikhathi futhi izokwazi ukuthi isikhathi sesiphelile. Bakhumbuze ukuthi nizophinde nichithe isikhathi ndawonye kusasa.", "type": "template", "note": "" }, { - "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", - "text": "Zonke lezi zinto ziyiqiniso! \n\nUma abantwana bakhe bejabule, @global.w_praise_female_caregiver_name uyajabula. Futhi ukwaze ukuqeda umsebenzi wakhe.", + "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", + "text": "Kuyamangalisa! Uma nichitha isikhathi ndawonye ngaphambi kokudla kwakusihlwa, ungathi ngenjabulo, “isikhathi sethu sobabili sesiphelile. Asilungiselele ukudla isidlo sakusihlwa nawo wonke umndeni! ”", "type": "template", - "note": "The string @global.w_praise_female_caregiver_name should not be translated." + "note": "" }, { - "SourceText": "The same can work for you!", - "text": "Nawe kungakusebenzela lokhu!", + "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", + "text": "Abazali abaningi babhekana nalokhu. Kungaba nzima ukuchitha isikhathi nezingane zethu uma sinezingane eziningi.", "type": "template", "note": "" }, { - "SourceText": "SEE IT", - "text": "KUBONE", + "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", + "text": "Cela omunye umuntu omdala noma umuntu ozalwa naye ukuba anakekele ingane ezisencane ngesikhathi usanesikhathi senu nobabili nengane yakho esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", - "text": "Bheka noma yini ingane yakho ekwenzayo ewusizo noma okuhle, bese umncomela kona. Kungenzeka ingakubonisi kona, kodwa uzobona ziphinde zikwenza lokho okuhle futhi. Kuzobaqinisekisa ukuthi uyakubona futhi uyabakhathalela.", + "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", + "text": "Cabanga ngesikhathi lapho ezinye izingane zisuke zingekho bese uchitha isikhathi nengane yami esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "SAY IT", - "text": "KUSHO", + "SourceText": "Plan one-on-one time in a place other than at home.", + "text": "Hlela ukuchitha isikhathi nengane yakho kwenye indawo ngaphandle kwasekhaya.", "type": "template", "note": "" }, { - "SourceText": "Be enthusiastic – really mean it when you say it!", - "text": "Yiba nentshiseko - yiba qotho kulokho okushoyo!", + "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", + "text": "Kuhle kakhulu! Ngale ndlela ungakwazi ukunaka ingane yakho esebusheni bayo ngaphandle kokuphazamiseka.", "type": "template", "note": "" }, { - "SourceText": "REPEAT IT", - "text": "KUPHINDE", + "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", + "text": "Kuhle! Ungazama ukuchitha isikhathi nengane yakho esebusheni bayo lapho ezinye izingane sezilele noma lapho zidlala ngaphandle.", "type": "template", "note": "" }, { - "SourceText": "Try to find something to thank them for every day. Even something really small.", - "text": "Zama ukuthola okuthile ongayibonga ngakho ingane yakho usuku nosuku. Ngisho nento encane .", + "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", + "text": "Kuhle kakhulu! Mhlawumbe ningahamba ndawonye niye ezitolo noma nihambe niyobukela ezemidlalo, ukuze nixoxe ngaphandle kokuphazanyiswa ezinye izingane ezisuke zifuna ukunakwa nazo.", "type": "template", "note": "" }, { - "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", - "text": "Ungancoma nabantu abadala ekhaya lakho. Qaphela indlela abasabela ngayo!", + "SourceText": "DAY – Do it every day", + "text": "USUKU - Kwenze nsuku zonke", "type": "template", "note": "" }, { - "SourceText": "Let's practice giving praise.", - "text": "Ake siphrakthize ukuncoma.", + "SourceText": "PLAY – Let your teen choose the activity", + "text": "DLALA – Vumela ingane yakho ikhethe enizokwenza", "type": "template", "note": "" }, { - "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", - "text": "Khulumisanani: \n\n* Yisiphi isizathu esingakwenza uncome ingane yakho? \n* Yini othile ayenze kahle phakathi nalokhu kuqeqeshwa? Batshele! \n* Kukwenze wazizwa kanjani lapho uncoma omunye umuntu? \n* Kukwenza wazizwa kanjani lapho unconywa?", + "SourceText": "STAY – Give your teen all of your attention", + "text": "HLALA - Nikeza ingane yakho konke ukunaka kwakho", "type": "template", "note": "" }, { - "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", - "text": "Ngezinye izikhathi kunzima ukucabanga ukuthi yini ongamncomela yona umntwana wakho! Nanka amanye amacebo avela kwabanye abazali:", + "SourceText": "Why was this tip helpful for you?", + "text": "Kungani leli cebiso libe usizo kuwe?", "type": "template", "note": "" }, { - "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", - "text": "* Ukuba nomusa komunye umuntu \n* Ukuhlanza igumbi lakhe \n* Ukuhlanganyela esidlweni somndeni \n* Ukubingelela amanye amalungu omndeni \n* Ukunakekela ozalwa nabo \n* Ukufika ekhaya ngesikhathi \n* Ukubonisa ukucabangela \n* Ukuthi 'ngiyacela' noma 'ngiyabonga' \n* Ukuya esikoleni \n* Ukwenza imisebenzi yasekhaya noma ukwenza umsebenzi wesikole wasekhaya \n* Ukudla ngokuthula", + "SourceText": "\"@local.choice_1\" was helpful because...", + "text": "\"@local.choice_1\" libe usizo ngoba...", "type": "template", - "note": "" + "note": "The string @local.choice_1 should not be translated." }, { - "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", - "text": "Umsebenzi wasekhaya kuleli viki ukuncoma ingane yakho kanye ngosuku. Kuzothatha imizuzwana eyishumi nje kuphela!", + "SourceText": "\"@local.choice_2\" was helpful because...", + "text": "\"@local.choice_2\" ibe usizo ngoba...", "type": "template", - "note": "" + "note": "The string @local.choice_2 should not be translated." }, { - "SourceText": "Caring for yourself is so essential.", - "text": "Kubalulekile ukuzinakekela.", + "SourceText": "\"@local.choice_3\" was helpful because...", + "text": "\"@local.choice_3\" ibe usizo ngoba...", "type": "template", - "note": "" + "note": "The string @local.choice_3 should not be translated." }, { - "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", - "text": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle. Qhubeka nokwenza umsebenzi omuhle.", + "SourceText": "Having a specific time to do this helps me to remember.", + "text": "Ukuba nesikhathi esithile sokwenza lokhu kungisiza ukuthi ngikhumbule.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", - "text": "Thatha isikhashana ujabulele izinto ozenzile, ngaphezu kwazo zonke ezinye ezinto okumelwe uzenze zinsuku zonke.", + "SourceText": "With a routine, my teen and I can both keep our schedule free.", + "text": "Lapho kunenqubo elandelwayo, mina nengane yami siyakwazi ukuhlala sinesikhathi esivulekile.", "type": "template", "note": "" }, { - "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", - "text": "Imindeni eminingi ikhathazeke ngemali, ikakhulu uma abantwana bethu belokhu becela izinto! \n\nUma senza isabelomali ndawonye, singavumelana ukuthi siyisebenzisa kanjani imali NOKUTHI siyonge ukuze sigweme ukukhathazeka futhi sisebenzele ukufinyelela imigomo esizibekele yona njengomndeni.", + "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", + "text": "Ukuchitha isikhathi nengane yami nsuku zonke kuyasiza ekwakheni ukwethembana nabo / yona.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla ibhajethi yomndeni. \n\nKubalulekile ukwenza ibhajethi, kodwa okubaluleke nakakhulu ukwenza isabelomali esihlanganisa umndeni wonke. \n\nUkuyenza ndawonye kukhulisa izinga lokuqonda indlela imali esentshenziswa ngayo njengomndeni nokuthi malini ozoyongela umndeni wakho, ungenza nezinhlelo zokuthi nizoyonga kanjani imali njengomndeni.", + "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", + "text": "Ah yebo, ngisho nemizuzu eyi-shumi(10) ndawonye yenza umehluko omkhulu - okwenza kube lula ukuhlela ngaphakathi, eduze komsebenzi wakho nemisebenzi yasekhaya!", "type": "template", "note": "" }, { - "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", - "text": "* Indaba – lokho akusebenzanga… \n* Ukufunda ukwenza isabelomali\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Ingxoxo ngezindlela zokonga imali\n* Ukufunda ukonga imali\n* Amathuluzi: Indlela yokwenza isabelomali kanye nokonga\nCABANGA - KHETHA - YAKHA - HLELA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Letting my teen choose what to do builds their confidence.", + "text": "Ukuvumela ingane yami ukuba ikhethe ukuthi yenzeni kwakha ukuzethemba kwabo.", "type": "template", "note": "" }, { - "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", - "text": "Kungaba nzima ukuthola zonke izinto ozidingayo nyanga zonke. Imindeni eminingi ihlangabezana nalenkinga! \n\nKuhlanganise @global.w_money_grandma - Ake sibone:", + "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", + "text": "Uma ingane yami ikhetha, kungenzeka ukuthi ifune ukuchitha isikhathi ndawonye.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", - "text": "@global.w_money_grandma: “Bengilokhu nginakekela abazukulu bami, @global.w_money_teen_girl no @global.w_money_teen_boy, njengoba abazali babo bashona besebancane. Ngokuvamile siba nezinkinga zemali, njengoba ngithola kuphela imali yesibonelelo sikahulumeni esincane.”", + "SourceText": "Letting my teen choose shows that I care about his/her interests.", + "text": "Ukuvumela ingane yami ukuba ikhethe kukhombisa ukuthi ngiyazikhathalela izintshisekelo zayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" + "note": "" }, { - "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", - "text": "@global.w_money_grandma: “Nginengcindezi kakhulu. Anginayo imali esele. Futhi manje siyaxabana nezingane zami ngezinto abazifunayo futhi.”", + "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", + "text": "Ngokwamukela iziphakamiso zentsha yami, ngikhombisa ukuthi ngiyamlalela.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", - "text": "Kunezinyathelo ezine zokwenza isabelomali somndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo. Udinga:\n\n- Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni\n- Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali\n \n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", + "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", + "text": "Ukusho okuthile okuhle ngokukhetha kwengane yami kuyabasiza bazizwe bebalulekile.", "type": "template", "note": "" }, { - "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", - "text": "Isabelomali somndeni singasiza @global.w_money_grandma - sisize NAWE!", - "type": "template", - "note": "The string @global.w_money_grandma should not be translated." - }, - { - "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", - "text": "Kunezinyathelo ezine zokwenza ibhajethi yomndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo.", + "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", + "text": "Kuyiqiniso! Futhi uma intsha yethu ikhetha, bayakhuthazwa ukuthi nabo babhekane neminye imikhakha yezimpilo zabo.", "type": "template", "note": "" }, { - "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", - "text": "Udinga: \n* Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni \n* Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali \n\n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", + "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", + "text": "Ngokuvimbela ukuphazamiseka, ngikhombisa ingane yami ukuthi ibaluleke kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Think about what we spend money on each month.", - "text": "Cabanga ngokuthi siyisebenzisela ini imali inyanga nenyanga.", + "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", + "text": "Noma ngingenakukwazi ukujoyina okwenziwa yintsha yami, njengemidlalo, ngisengabakhuthaza.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", - "text": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba izithombe zazo zonke izinto wena nomndeni wakho enichitha imali kuzo ngenyanga. \n* Bhala eceleni kwesithombe ngasinye ukuthi into ngayinye ibiza malini inyanga ngayinye. (Akudingeki ubhale inani lemali uma ungafuni ukwenza njalo.)\n* Hlanganisa inani lemali enilisebenzisayo inyanga ngayinye.", + "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", + "text": "Lapho nginakisisa, kuningi engingakufunda ngalokho okuthandwa yingane yami, imibono kanye namakhono ayo.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", - "text": "Kuhle kakhulu! Usiqedile isinyathelo 1! \n\nAsiqhubeke!", + "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", + "text": "Yebo! Uma izingane zethu sizinikeza isikhathi sethu sonke, cishe ziyokwenza okufanayo kuthina esikhathini esizayo lapho sicela okuthile kuzo!", "type": "template", "note": "" }, { - "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", - "text": "* ukudla \n* amanzi nogesi \n* izimpahla \n* ama-akhawunti \n* Izinhlelo ze-TV ezikhokhelwayo \n* izinto zokugeza \n* izinwele \n* i-airtime \n* izindleko zesikole \n* ezokuthutha \n* imishuwalensi/amapholisi \n* imithi \n* ezokuzijabulisa/ezemidlalo \n* imali yokuqasha \n* imali ebolekiwe \n* imali yesonto", + "SourceText": "Your goal was to spend one-on-one time with your teen.", + "text": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho.", "type": "template", "note": "" }, { - "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Khulumisanani ngezidingo zenu nezinto enizifunayo \n\nOKUFUNAYO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", + "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", + "text": "Wenze kahle ngokuhlola izisombululo zezinselele zakho. Hamba uyozizama. Ubuhlobo bakho nengane yakho esebusheni bayo buzoqina kakhulu!", "type": "template", "note": "" }, { - "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", - "text": "Ngokuvamile abantu ababoni izinto ngendlela efanayo. Uma sikhuluma ngezinto esizidingayo kanye nesizifunayo, siqondana kancono futhi senze izinqumo ezinhle ezimayelana nokuthi sizoyisebenzisa kanjani imali yethu.\n\nBheka uhlu lwezinto osebenzisa imali kuzo bese niyaxoxa: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo njengomndeni?", + "SourceText": "Being a parent can be so hard. Sometimes it feels like our children never listen to us.\n\nBut science shows that spending just a few minutes each day of focused one-on-one time with your teen helps build trust and love.", + "text": "Ukuba umzali kungaba nzima kakhulu. Ngezinye izikhathi siba nomuzwa wokuthi izingane zethu azisilaleli.\n\nKodwa isayensi ibonisa ukuthi ukuchitha imizuzu nje embalwa usuku ngalunye nobabili nengane yakho kusiza ekwakheni ukwethembana nothando.", "type": "template", "note": "" }, { - "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", - "text": "Cabanga ngezidingo nezimfuno \n\nIZIMFUNO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", + "SourceText": "One-on-one time is when you focus on them, without TV or phones. Let them lead what you do or talk about.\n\nIt is great if you can do twenty minutes a day, but even five minutes a day is really good.", + "text": "Lapho uchitha isikhathi nengane yakho kulapho ugxila kuyo, ngaphandle kokuphazanyiswa yi-TV noma omakhalekhukhwini. Yivumele ihole kulokho enikwenzayo noma enixoxa ngakho.\n\nKuhle uma ningachitha imizuzu engamashumi amabili ngosuku, kodwa ngisho nemizuzu emihlanu mihle kakhulu.", "type": "template", "note": "" }, { - "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", - "text": "Bheka uhlu lwezinto osebenzisa imali kuzo bese uyakhetha: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo?", + "SourceText": "Hello.\n\nOur topic today is one-on-one time with our children.\n\nIt is important to spend time with our children so that they can get to understand us, and for us to get an opportunity to understand them. \n\nRemember, a family with good understanding live in harmony.", + "text": "Sanibona.\n\nIsihloko sethu namhlanje ukuchitha isikhathi nezingane zethu.\n\nKubalulekile ukuchitha isikhathi nezingane zethu ukuze zikwazi ukusiqonda, nokuthi nathi sithole ithuba lokuziqonda. \n\nKhumbula, umndeni oqondana kahle uphila ngokuzwana.", "type": "template", "note": "" }, { - "SourceText": "Make a budget!", - "text": "Yenza isabelomali!", + "SourceText": "Have you spent time with your teen already?", + "text": "Ingabe vele ususichithile isikhathi nengane yakho esebusheni bayo?", "type": "template", "note": "" }, { - "SourceText": "Make a budget as one big family!", - "text": "Yenzani isabelomali njengomndeni owodwa omkhulu!", + "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", + "text": "Siyakubonga ngokwenza umzamo ongaka ukuze ube umzali ongcono. Uyathandwa kakhulu siyazi qenya ngawe!", "type": "template", "note": "" }, { - "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Umuntu oyedwa uzovolontiyela ukuveza olwakhe uhlu (uma engekho ofuna ukuvolontiya ningenza uhlu olusha ndawonye) \n* Thathani izindima - abanye bazoba abantu abadala, kuthi abanye babe ngabantwana. \n* Khetha ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.) \n* Yenza isinqumo ndawonye sokuthi malini enizoyisebenzisela ini, bese nibeka amatshe/okuthile kuleso sithombe. \n\nAniqinisekanga ngesinqumo senu? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", + "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", + "text": "Ukuchitha isikhathi nengane yakho esebusheni bayo kwakha ukwethembana phakathi kwenu. \n\nQhubeka nohambo lwakho lwe-@global.parent_app manje - wena nomndeni wakho nizobona imiphumela emihle.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Make a budget as a family!", - "text": "Yenzani isabelomali njengomndeni!", + "SourceText": "First @global.weekly_workshop!", + "text": "Okokuqala @global.weekly_workshop!", "type": "template", - "note": "" + "note": "The string @global.weekly_workshop should not be translated." }, { - "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", - "text": "* Bhala phansi ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.)\n* Yenza isinqumo ukuthi malini uzoyisebenzisela ini, bese ubeka amatshe/okuthile kuleso sithombe. \n\nAniqiniseki ngesinqumo sakho? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", + "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Sawubona @fields.user_name. I @local.workshop_data.in_text_title yakho isikulungele.", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" + "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", - "text": "Nenze umsebenzi omuhle, seniqede izinyathelo ezi-3 zokuqala! \n\nAke sibone ukuthi @global.w_money_grandma ulwenze kanjani uhlelo lokusebenzisa imali yakhe, njengoba nje wenza:", + "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", + "text": "Sawubona @fields.group_name. I @local.workshop_data.in_text_title yakho isikulungele.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" }, { - "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", - "text": "“Ngifunela abazukulu bami ikusasa elihle, kodwa angazi ukuthi ngizoyithola kuphi imali. Ukuboleka imali komashonisa kuyingozi kanti futhi kuyabiza ukuyikhokha. \n\nKumele ngonge imali, kodwa lokho kubonakala kungeke kwenzeke!”", + "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", + "text": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nI @local.workshop_data.in_text_title yakho isikulungele!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", - "text": "“Umgomo wami ukuthi umzukulu wami womfana aye esikoleni samabanga aphezulu bese kuthi umzukulu wami wentombazane aye enyuvesi. Ngingakwazi kanjani ukonga imali eningi ngemadlana encane enginayo?”", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", + "text": "Kubonakala sengathi awukakayiqedi i-@local.workshop_data.in_text_title okwamanje. Ngeke kuthathe isikhathi eside, futhi uzothola imininingwane ewusizo. \n\nWenze kahle ngokuzama ukuba umzali ongcono. Kusasa ungangena ekuqeqeshweni okusha.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", - "text": "“Ngiyazi - ake siqale ngokuhlela! Okokuqala, ake ngenze isabelomali - uhlelo lokuthi ngizoyonga kanjani imali yami. Ngemva kwalokho ngizokonga imali encane ngesikhathi - ngizophinde ngijoyine namaqembu okonga imali nokubolekisa ngemali.”", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", + "text": "Wenze kahle ngokuqeda @local.workshop_data.in_text_title. Kusasa ungangena ekuqeqeshweni okusha okuzokusiza uphumule, ujabule futhi ufunde amakhono amasha!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", - "text": "“Ngizophinde ngikhulume nabazukulu bami sikhethe izinto esizosebenzisa imali encane kuzona njalo ngeviki. Bazongisiza ngicabange ngezinto esizifunayo kodwa esingazidingi.”", + "SourceText": "Let's think of ways to spend one-on-one time with your teen.", + "text": "Masicabange ngezindlela zokuchitha isikhathi nengane yakho esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", - "text": "Ngemva kweminyaka embalwa kamuva:\n\n“Bheka, sesiwafinyelele amaphupho ethu! Ayikho imali engiyiboleke kubangane noma komashonisa. Ngokonga okuncane iviki neviki, ngikwazile ukukhokhela u-@global.w_money_teen_boy esikolweni samabanga aphakeme futhi ngonga nemali ka-@global.w_money_teen_girl yokufunda enyuvesi. Ngiyaziqhenya ngalokhu.”", + "SourceText": "What could you do to spend one-on-one time with your teen?", + "text": "Yini ongayenza ukuze uchithe isikhathi nengane yakho esebsheni bayo?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" + "note": "" }, { - "SourceText": "What are your family savings goals?", - "text": "Imiphi imigomo yokonga yomndeni wakho?", + "SourceText": "Feel like you have NO TIME and you are exhausted? Remember to also think of ways that do not take up extra time.", + "text": "Uzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Ukhumbule nokucabanga ngezindlela ezingadli isikhathi esengeziwe.", "type": "template", "note": "" }, { - "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", - "text": "Imigomo emihle leyo! \n\nUmgomo omuhle loyo! Uma senza isabelomali esihle bese sihlela indlela yokonga imali ndawonye, singakwazi ukuyifinyelela bese siyaziqhenya ngathi!", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are an amazing parent for trying this.", + "text": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuya kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", "type": "template", "note": "" }, { - "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", - "text": "Sonke sinamaphupho ngemindeni yethu, njengo @global.w_money_grandma. Ngokubekela eceleni imali encane inyanga nenyanga, ungawafinyelela lawo maphupho!", + "SourceText": "You are a star! \n\nEvery day, recognise something you have done well. Reward yourself with something that makes you happy. And take a deep breath to relax. \n\nRemember, you earn a @global.parent_point every time you care for yourself - you matter!", + "text": "Uyiqhawe! \n\nNsuku zonke, qaphela into oyenze kahle. Zivuze ngento ekwenza ujabule. Udonse umoya ukuze uzole. \n\nKhumbula, uthola i @global.parent_point njalo lapho uzinakekela - ubalulekile!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "What are your family savings goals?", - "text": "Imiphi imigomo yokonga womndeni wakho?", + "SourceText": "* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", - "text": "Umgomo omuhle loyo! \n\nNgokwenza isabelomali esihle kanye nohlelo lokonga, ungakwazi ukuyifinyelela bese uziqhenya ngawe!", + "SourceText": "* Self-care activities\n* Ideas for one-on-one time\n* Tools: How to spend one-on-one time\nDAY - PLAY - STAY\n* Home practice suggestions", + "text": "* Imisebenzi yokuzinakekela\n* Amacebiso okuchitha isikhathi ninobabili\n* Amathuluzi: Indlela yokuchitha isikhathi ninobabili \nUSUKU - DLALA - HLALA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", - "text": "Ukonga kubaluleke ngalesi sezinye izizathu: izimo eziphuthumayo! @global.w_money_grandma uye wakufunda lokhu ngendlela:", + "SourceText": "Share ideas! \n\nWhat are things you could do to spend one-on-one time with your teens?\n\nFeel like you have NO TIME and you are exhausted? Come up with ideas for one-on-one time that do not take up extra time, like walking to the shop together.", + "text": "Yabelana ngamacebiso! \n\nYiziphi izinto ongazenza ukuze uchithe isikhathi nezingane zakho ezi sebusheni bazo?\n\nUzizwa sengathi AWUNASO ISIKHATHI futhi ukhathele kakhulu? Yiza namacebiso okuchitha isikhathi nengane yakho angadli isikhathi esengeziwe, njengokuhamba ndawonye niye ezitolo.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", - "text": "“Ngelinye ilanga kwaba nemvula enesiphepho esibi eyalimaza uphahla lwami. Kwakhukhuleka yonke into. Kwadingeka ngithole imali ngokushesha ukuze ngilungise uphahla. Ngazizwa ngiphelelwe ngamandla.”", + "SourceText": "It may take some time to get used to one-on-one time, but the more you do it the better it gets!\n\nYou are amazing parents for trying this.", + "text": "Kungase kuthathe isikhathi ukujwayela ukuchitha isikhathi nengane, kodwa lapho uqhubeka ukwenza kuyango kujwayeleka!\n\nUngumzali omangalisayo ngenxa yokuzama lokhu.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about this story.", - "text": "Ake sikhulume ngale ndaba.", + "SourceText": "DAY - Try to do it every day", + "text": "USUKU – Zama ukukwenza nsuku zonke", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", - "text": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla. \n\nIziphi ezinye izimo eziphuthumayo ezingasehlela?", + "SourceText": "Find 5 minutes (or more!) each day when your teen does not have something else they want to do.", + "text": "Thola imizuzu emihlanu (noma ngaphezulu!) usuku ngalunye lapho ingane yakho engenalutho olunye efuna ukulwenza.", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "Let's think about this story.", - "text": "Ake sicabange ngale ndaba.", + "SourceText": "PLAY - Let your teen choose", + "text": "DLALA - Vumela ingane yakho esebusheni bayo ukuba ikhethe", "type": "template", "note": "" }, { - "SourceText": "For @global.w_money_grandma, a storm happened.", - "text": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla.", + "SourceText": "Tell your teen that you would like to spend some time with them and that they can choose what to do or talk about. They might think this is weird at first, but will come to enjoy this time with you!", + "text": "Tshela ingane yahoo esebusheni bayo ukuthi ungathanda ukuchitha isikhathi nayo nokuthi ingakhetha lokho efuna ukukwenza noma efuna ukukhuluma ngakho. Ingase idideke ekuqaleni kodwa ngokuhamba kwesikhathi izokujabulela ukuchitha isikhathi nawe!", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "" }, { - "SourceText": "What other emergencies could come up for your family?", - "text": "Yiziphi ezinye izimo eziphuthumayo ezingavelela imindeni yethu?", + "SourceText": "STAY - Focus on your teen", + "text": "HLALA - Gxila enganeni yakho esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", - "text": "Isimo esiphuthumayo singavelela noma imuphi umndeni. Ukonga imali yokusiza uma kuvela isimo esiphuthumayo NGAPHAMBI kokuthi siqubuke kuzovimbela ukukhathazeka kungalindelekile nokuba nengcindezi!", + "SourceText": "Switch off TV and put aside phones. Look at your teen. Nod or say “I see” to show you are really paying attention. Accept what they say without judging them.", + "text": "Vala umabona kude (TV) ubeke eceleni omakhalekhukhwini. Bheka ingane yakho. Nqekuzisa ikhanda noma uthi “Ngiyabona” ukuze ubonise ukuthi ulalele ngempela. Yamukela ekushoyo ngaphandle kokuyahlulela.", "type": "template", "note": "" }, { - "SourceText": "Let's talk about different ways we can save.", - "text": "Ake sikhulume ngezindlela ezihlukahlukene zokonga.", + "SourceText": "One-on-one time with your teen can be fun for you, too! It might even make you feel less stressed.", + "text": "Ukuchitha isikhathi nengane yakho esebusheni bayo kungaba mnandi nakuwe! Kunganciphisa nokucindezeleka kwakho.", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", - "text": "Xoxani ndawonye: \n* Imali singayonga ngaziphi izindlela ezihlukahlukene? \nYibuphi ubuhle nobubi bendlela ngayinye yokonga? \n\nUkuqonda indlela ngayinye kuzokusiza unqume ukuthi iyiphi indlela engcono yokonga elungele umndeni wakho. \n\nNoma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakhe uqhubekele phambili!", + "SourceText": "Great!", + "text": "Kuhle!", "type": "template", "note": "" }, { - "SourceText": "Let's think about different ways we can save.", - "text": "Ake sicabange ngezindlela ezihlukahlukene esingonga imali ngazo.", + "SourceText": "I know life can be hard. I’m proud of you. \n\nWhatever you are feeling, it’s great that you are here!", + "text": "Ngiyazi ukuthi ukuphila kungaba nzima. Ngiyaziqhenya ngawe. \n\nKungakhathaliseki ukuthi uzizwa kanjani, kuhle ukuthi ulapha!", "type": "template", "note": "" }, { - "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", - "text": "Kunezindlela ezihlukahlukene esingakwazi ukonga ngazo: ekhaya, ukuthenga izinto esingakwazi ukuzithengisa kamuva, ebhange, noma eqenjini lokonga.\n\nCabanga ngobuhle nobubi bendlela ngayinye yokonga imali.", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", + "text": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilaleleni, nidanse ndawonye futhi nizihalalisele!", "type": "template", "note": "" }, { - "SourceText": "What is the best savings option for your family?", - "text": "Iyiphi indlela yokonga engcono elungele umndeni wakho?", + "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", + "text": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilalele, udanse futhi uzihalalisele!", "type": "template", "note": "" }, { - "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", - "text": "Noma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakho uqhubekele phambili!", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", + "text": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali.", "type": "template", "note": "" }, { - "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", - "text": "Hlela ukuthi uzoyonga kanjani imali, ukuze ukwazi ukubhekana nezimo eziphuthumayo ezivelayo futhi ufinyelele imigomo yomndeni wakho!", + "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", + "text": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali nge-@global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", - "text": "Uma ungakwazi ukonga ngisho noma okuncane ozokusebenzisa esikhathini esizayo noma ezimweni eziphuthumayo - kungenza umehluko omkhulu ngokuhamba kwesikhathi. \n* Faka indilinga ebizwa ngokuthi “izimo eziphuthumayo”.\n* Faka indilinga ebizwa ngokuthi “imigomo yomndeni”.\n* Manje zama ukuhlela imali yakho ukuze wonge okuncane nyanga zonke ezintweni ozikhokhelayo.", + "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", + "text": "Sanibonani nonke.\n\nIsihloko sanamuhla ukuhalalisa kanye nezinyathelo ezilandelayo.\n\nBekumnandi, bekukuhle kakhulu ukuhamba nawe kulolu hambo. Namuhla sibungaza uhambo lwethu ndawonye. \n\nNamuhla sibungaza konke esikufundile kulo lonke uqeqesho.", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", - "text": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu eqenjini lakho ufanelwe ukunconywa, akunjalo?", + "SourceText": "Today you will celebrate, look back and look ahead:", + "text": "Namuhlanje sizobungaza, sibheke emuva siphinde sibheke phambili:", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", - "text": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu emndenini wakho ufanelwe ukunconywa, akunjalo?", + "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", + "text": "* Ukucabanga sijule kanye nengxoxo\n* Amacebiso: Indlela yokusekelana\nHLANGANANI - SHAYA UCINGO - THUMELA UMYALEZO - YABELANA\n* Ukuhlela ukweseka", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", - "text": "SIYAKUHALALISELA!!! Wenze isabelomali sakho - khumbula ukuphinde wenze lesi sabelo mali futhi namalungu womndeni wakho - uma nivumelana ndawonye ngohlelo kuzokwenza umehluko omkhulu!", + "SourceText": "Today you celebrate and reflect on your experiences.", + "text": "Namuhlanje uyagubha futhi ucabangisise ngezinto oke wabhekana nazo.", "type": "template", "note": "" }, { - "SourceText": "Step 1: THINK", - "text": "Isinyathelo 1: CABANGA", + "SourceText": "End of programme check-in", + "text": "Ukwabelana ukuthi sizizwa kanjani ekupheleni kwesifundo", "type": "template", "note": "" }, { - "SourceText": "What do we spend on now?", - "text": "Siyisebenzisa kuphi imali njengamanje?", + "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", + "text": "Ubulokhu usebenzisa i-@global.parent_app ezinyangeni ezidlule, kodwa ukukhulisa ingane esebusheni bayo kuthatha isikhathi eside! Imibuzo elandelayo emayelana nobhekana nakho njengomzali izosisiza sihlole indlela okhulisa ngayo ingane yakho.\n\nYiba qotho. Khumbula ukuthi izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa. Awuwedwa!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "THINK Activity", - "text": "CABANGA Umsebenzi", + "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", + "text": "Kubukeka ngathi usuqedile ukwabelana ngemizwa yakho. Usungadlulela komunye umsebenzi.", "type": "template", "note": "" }, { - "SourceText": "Step 2: CHOOSE", - "text": "Isinyathelo 2: KHETHA", + "SourceText": "Let's talk about what has changed.", + "text": "Ake sixoxe ngoshintsho olwenzekile.", "type": "template", "note": "" }, { - "SourceText": "Talk together about needs and wants", - "text": "Khulumani ngezidingo kanye nezimfuno ndawonye", + "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", + "text": "Xoxani ndawonye:\n* Yini eshintshile emndenini wakho?\n* Yini oziqhenya ngayo oyenzile?\n\nKhumbulani ukuncomana nokukhuthazana!", "type": "template", "note": "" }, { - "SourceText": "CHOOSE Activity", - "text": "KHETHA Umsebenzi", + "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", + "text": "Hlelani ukuthi nizosekelana kanjani ukuya phambili. \n\nNingasebenzisa amacebiso avela kweminye imindeni noma nizakhele awenu!", "type": "template", "note": "" }, { - "SourceText": "Step 3: BUILD", - "text": "Isinyathelo 3: YAKHA", + "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", + "text": "Wena nomndeni wakho kuningi enikufundile. Ake sicabange sibuyele emuva ukuze sibone ukuthi yini eshintshile.", "type": "template", "note": "" }, { - "SourceText": "Make your own budget", - "text": "Zenzele isabelomali sakho", + "SourceText": "Reflect", + "text": "Zindla", "type": "template", "note": "" }, { - "SourceText": "BUILD Activity", - "text": "YAKHA Umsebenzi", + "SourceText": "Listen and reflect", + "text": "Lalela futhi zindla", "type": "template", "note": "" }, { - "SourceText": "Step 4: PLAN", - "text": "Isinyathelo 4: HLELA", + "SourceText": "Read and reflect", + "text": "Funda futhi zindla", "type": "template", "note": "" }, { - "SourceText": "Emergencies and family goals", - "text": "Izimo eziphuthumayo nemigomo yomndeni", + "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", + "text": "Vala amehlo uphumule.\n\nCabanga ngempilo yomndeni wakho ngaphambi kokuthi uqale uhambo lwakho ngalolu hlelo lokusebenza.\n \nCabanga ngamakhono owafundile:\n* Ukuzinakekela\n* Isikhathi sokuthi nibe nobabili ndawonye\n* Ukuncoma\n* Iziqondiso ezinhle\n* Ukulawula ukucindezeleka\n* Isabelomali somndeni\n* Imithetho\n* Imiphumela eyethulwa ngomoya ophansi\n* Ukuxazulula inkinga\n* Ukuphepha kwentsha\n* Ukubhekana nezinkinga\n\nCabangisisa/zindla ngohambo lwakho – bekunjani kuwe ukwenza lokhu:\n* Yabelanani ngamacebiso nichaze izinto eniye nabhekana nazo\n* Cabanga ufunde ezindabeni ezixoxwayo\n* Phrakthiza amakhono nengane yakho eyevile eminyakeni eyishumi nambili\n\nIngabe kukhona okuye kwashintsha kuwe nasemndenini wakho?\n\nYini oyidingayo ukuze uqhubeke usebenzisa la makhono?", "type": "template", "note": "" }, { - "SourceText": "PLAN Activity", - "text": "HLELA Umsebenzi", + "SourceText": "MEET", + "text": "HLANGANANI", "type": "template", "note": "" }, { - "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Yenza isabelomali futhi - manje senze KANYE nengane yakho nomndeni wakho! \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", + "SourceText": "Keep meeting regularly to give each other parenting support.", + "text": "Qhubekani nihlangana njalo ukuze nisekelane njengabazali.", "type": "template", "note": "" }, { - "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Yenza isabelomali nomntwana kanye nomndeni wakho. \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", + "SourceText": "CALL", + "text": "SHAYA UCINGO", "type": "template", "note": "" }, { - "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", - "text": "Buyekeza isabelomali nomntwana kanye nomndeni wakho. Ukwenza kanjalo kuzokhumbuza wonke umuntu sidinga ukwenza izinqumo ezinzima ngezinye izikhathi - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sisize izigidi zemindeni.", + "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", + "text": "Yibani ‘abazali abangabangane’ abashayelana ucingo ucasukile noma ongazi ukuthi wenzeni.", "type": "template", "note": "" }, { - "SourceText": "Steps to make a budget", - "text": "Izinyathelo zokwenza isabelomali", + "SourceText": "TEXT", + "text": "THUMELA UMYALEZO", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy! Keep up the good work.", - "text": "Kuhle kakhulu, ngijabule kakhulu! Qhubeka nokwenza umsebenzi omuhle.", + "SourceText": "Text each other every week to share what you’ve done well.", + "text": "Thumelelani imiyalezo masonto onke ukuze nixoxelane ngenikwenzile.", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", - "text": "Ngiyaxolisa ngokuthi isimo sinzima. Isimo sinzima kuyoyonke imindeni. Silapha ukuba sisize!", + "SourceText": "SHARE", + "text": "YABELANA", "type": "template", "note": "" }, { - "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", - "text": "Noma ngabe yini engahambanga kahle namuhla, ungakhathazeki ngayo zama futhi kusasa. Kulungile!", + "SourceText": "Share @global.parent_app and help other families start their journey.", + "text": "Yabelana @global.parent_app futhi usize eminye imindeni iqale uhambo lwayo.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", - "text": "Gxila kokuhle! \n\nUkutshela abantwana bethu ukuthi YINI esifuna bayenze kusebenza kangcono kunokubatshela ukuthi BAYEKE ukwenza okuthile.\n\nUzowubona umehluko.", + "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", + "text": "Kuhle! Siyaziqhenya ngawe ngakho konke okwenzile emasontweni adlule.", "type": "template", "note": "" }, { - "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", - "text": "Sanibonani, sanibonani nonke.\n\nIsihloko sethu namuhla sikhuluma ngemiyalelo emihle. \n\nKubalulekile ukunika izingane zakho imiyalelo emihle, ngoba uma sibanikeza imiyalelo emihle bayazi futhi bayaqonda ukuthi yini esilindele ukuthi bayenze, futhi bayenza ngalendlela esifuna bayenze ngayo. \n\nEkugcineni, kwenza wonke umuntu ajabule.", + "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", + "text": "Siyaxolisa ngokuthi usuku lwakho lunzima. Siyaziqhenya ngawe ngakho konke okwenziwe emasontweni adlule.", "type": "template", "note": "" }, { - "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", - "text": "* Ukuhlola umcabango\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.", + "text": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", - "text": "* Ukuhlola umcabango\n* Indaba kanye nokubuyekeza - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza - okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "@global.w_consequence_teen_boy_1 came home late.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_boy_1 ufike ekhaya emva kwesikhathi.\n\nYimuphi umphumela ongasiza lapha?", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Let’s do a thought experiment!", - "text": "Ake senze ukuhlola okucatshangiwe!", + "SourceText": "Consequences are not quite the same as punishment: they give our teens a chance to learn responsibility for their actions.\n\nAnd they are more controlled AND effective than hitting or shouting!", + "text": "Imiphumela ayifani nesijeziso: inika izingane zethu ithuba lokufunda ukumelana nezenzo zabo.\n\nIyalawuleka FUTHI isebenza kangcono kunokushaya noma ukuthetha!", "type": "template", "note": "" }, { - "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", - "text": "UNGACABANGI NGENDLOVU \n\nYini ocabanga ngayo?", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.", + "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", - "text": "Ngokuqinisekile UKE wacabanga ngendlovu...\n\n Unganiki imiyalelo eyenza abantwana bacabange ngalokho.\n\nNgezinye izikhathi abaqondi ukuthi YINI esifuna bayenze. \n\nKanti futhi ngokuvamile abathandi ukutshelwa ukuthi yini ekumele bangayenzi (cishe kunjalo nangathi sonke.)", + "SourceText": "@global.w_consequence_teen_girl_1 and @global.w_consequence_teen_girl_2 fight over a phone.\n\nWhat consequence would help here?", + "text": "@global.w_consequence_teen_girl_1 no @global.w_consequence_teen_girl_2 bayalwa babanga ucingo.\n\nYimuphi umphumela ongasiza lapha?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_girl_1\n@global.w_consequence_teen_girl_2" }, { - "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", - "text": "MANJE, CABANGA NGENGULULE! \n\nYini ocabanga ngayo?", + "SourceText": "Consequences are more successful if you discuss and agree in advance with teens before you apply them.\n\nAnd: consequences are not all negative… You can also agree on GOOD consequences for GOOD actions to see more positive behaviour!", + "text": "Imiphumela isebenza kangcono uma kuxoxisanwa futhi kuvunyelwane ngayo nomntwana ngaphambi kokuthi isetshenziswe.\n\nOkunye futhi: akuyona yonke imiphumela emibi... Ningabuye nivumelane ngemiphumela EMIHLE yokwenza izinto EZINHLE ukuze ubone ukuziphatha okuhle okwengeziwe!", "type": "template", "note": "" }, { - "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", - "text": "Kuhle! Imiyalelo emihle, imiyalelo ecacile isiza abantwana bagxile kulokho okumele bakwenze.\n\n Abantwana bazozizwa behlonishwa kakhulu futhi bangalalela.", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.", + "text": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", - "text": "Ake sibone ukuthi kwenzekani uma @global.w_instruct_female_caregiver ethi @global.w_instruct_teen_girl \"UNGENZI LOKHU\":", + "SourceText": "What consequence would help here?", + "text": "Yimuphi umphumela ongasiza lapha?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", - "text": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe.\n\n@global.w_instruct_female_caregiver: “Ungangcolisi njengoba ngisahlanza indlu. Uyangiphazamisa!”", + "SourceText": "@global.w_consequence_teen_boy_2 helps washing dishes.\n\nWhat positive consequence would help here?", + "text": "@global.w_consequence_teen_boy_2 usiza ngokugeza izitsha.\n\nYimiphi imiphumela emihle engasiza lapha?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "The string @global.w_consequence_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", - "text": "@global.w_instruct_teen_girl: “Kodwa kumelwe ngizilungiselele umncintiswano wesikole. Awungivumeli ngenze lutho.”\n\n@global.w_instruct_female_caregiver: “Ungangiphenduli!”", + "SourceText": "Your home practice for this week will be to talk together with your teen about a ONE negative consequence and ONE positive consequence.\n\nConsequences should be:\nFAIR (not too harsh)\nIMMEDIATE (do it straight away)\nCONSISTENT (same every time)", + "text": "Umsebenzi wasekhaya kuleli viki kuzoba ukukhulumisana nengane yakho ngomphumela OWODWA ongemuhle nomphumela OWODWA omuhle.\n\nImiphumela kumelwe ibe:\nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGALESOSIKHATHI (kwenze ngaso leso sikhathi)\nUNGASHINTSHI (okufanayo ngaso sonke isikhathi)", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", - "text": "@global.w_instruct_teen_girl: “Arrg!! Kungani ngithethiswa ngaso sonke isikhathi????” \n\n@global.w_instruct_female_caregiver ekhuluma yedwa: “Le ngane ihlale idala izinkinga.”", + "SourceText": "Negative Behaviour: Coming home after the agreed hour. \n\nNegative Consequence: Cannot see friends the next day. \n\nNegative Behaviour: Talking rudely. \n\nNegative Consequence: Write a letter of apology. \n \nPositive Behaviour: Helping out with shopping. \n\nPositive Consequence: 30 minutes extra of loved activity of their choice. \n\nPositive Behaviour: Helping look after younger siblings. \n\nPositive Consequence: One hour of extra time with friends on the weekend.", + "text": "Ukuziphatha okungamukelekile: Ukufika ekhaya sekudlule isikhathi ekuvunyelwene ngaso. \n\nUmphumela Ongemuhle: Awuvunyelwe ukubona abangane bakho nosuku olulandelayo. \n\nUkuziphatha okungamukelekile: Ukukhuluma kabi ngokungenanhlonipho. \n\nUmphumela Ongemuhle: Bhala incwadi yokuxolisa. \n \nUkuziphatha Okuhle: Ukusiza ngokuyothenga. \n\nUmphumela Omuhle: Imizuzu engu-30 eyengeziwe yokwenza okuthile akuthandayo. \n\nUkuziphatha Okuhle: Ukusiza ngokugada izingane zasekhaya ezincane. \n\nUmphumela Omuhle: Ihora elilodwa elengeziwe lokuba nabangani ngempelasonto.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Let's discuss what happened in this story.", - "text": "Ake sixoxe ngokuthi kwenzekeni kule ndaba.", + "SourceText": "introduce a consequence together", + "text": "ethula umphumela ndawonye", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", - "text": "Xoxani ndawonye: \n\n* Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo? \n* Yini @global.w_instruct_female_caregiver abengayenza ngokuhlukile?", + "SourceText": "Did you have any challenges when trying to introduce a consequence together?", + "text": "Ingabe nibe nezinselele lapho nizama ukwethula umphumela ndawonye?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver could have...", - "text": "@global.w_instruct_female_caregiver ubenga...", + "SourceText": "What was difficult for you about introducing a consequence with your teen?", + "text": "Yini kuwe obekunzima ngokwethula umphumela nengane yakho esebusheni bayo?", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", - "text": "* Ubengasho okuthile okuhle kuqala \n* Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile \n* Ubengatshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", + "SourceText": "I got very angry when my teen broke the rule.", + "text": "Ngike ngathukuthela kakhulu lapho ingane yami esebusheni bayo iphula umthetho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", - "text": "Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo?", + "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", + "text": "Lapho sithatha ikhefu ngaphambi kokuphendula, kusisiza ukwehlisa umoya futhi siphendule kangcono.\n\nNgokuzayo lapho ingane yakho ikuthukuthelisa, zama ukuhlaba ikhefu kuqala. Ngisho nokuphefumula okuncane okujulile kungenza umehluko omkhulu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Sad", - "text": "Ngidabukile", + "SourceText": "My teen got very angry with me after I gave the consequence.", + "text": "Ingane yams esebusheni bayo ingithukuthelele lapho ngiyitshela umphumela wezenzo zayo.", "type": "template", "note": "" }, { - "SourceText": "Confused", - "text": "Ngikhungathekile", + "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", + "text": "Lapho ingane yakho esebusheni bayo ithukuthela, kungase kudingeke uye kwenye indawo wehlise umoya kuze nihlangane lapho nobabili senizolile. \n\nHlola ukuze uqiniseke ukuthi umphumela owubekayo unobulungisa futhi uyacabangela yini. Lalela incazelo yengane yakho esebusheni bayo, bese uqikelela ukuthi unikeza “Ushwele Wokuvikeleka” uma iphule umthetho ukuze ihlale iphephile.", "type": "template", "note": "" }, { - "SourceText": "Angry", - "text": "Ngithukuthele", + "SourceText": "I introduced the consequence without first discussing it with my teen.", + "text": "Ngethula umphumela ngaphandle kokuxoxa ngawo nengane yami esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", - "text": "Yini @global.w_instruct_female_caregiver abangayenza ngokuhlukile?", + "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", + "text": "Ungawenza umphumela uma lokhu kwenzeka futhi? Lapho sithola imiphumela kanye nentsha yethu, umphumela uzoba ngokoqobo ngokwengeziwe, futhi intsha yethu iyozimisela ngokwengeziwe futhi ikwazi ukulandela umthetho.", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Said something nice first", - "text": "Ubengasho okuthile okuhle kuqala", + "SourceText": "I forgot to follow through with the consequence.", + "text": "Ngikhohliwe ukulandela umphumela.", "type": "template", "note": "" }, { - "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", - "text": "Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile", + "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", + "text": "Sonke siyawenza amaphutha! Uma sihambisana kakhulu nemiphumela yethu, maningi amathuba okuthi izingane zethu zizokhetha ukuziphatha kahle ngokuzayo.", "type": "template", "note": "" }, { - "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", - "text": "Ubengamtshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", + "SourceText": "Even with the consequence, my teen still does not follow the rule.", + "text": "Ngisho noma kukhona imiphumela ebekiwe yezenzo zayo, ingane yami esebusheni bayo ayiwulandeli umthetho.", "type": "template", "note": "" }, { - "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", - "text": "Siyabonga ngokuthi nicabanga kanye nathi! \n\nAke sibuyele emuva sibone ukuthi kuzokwenzekani uma @global.w_instruct_female_caregiver enikeza umyalelo omuhle:", + "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", + "text": "Uma ingane yakho esebusheni bayo iyaqhubeka iphula imithetho, kungase kudingeke uchithe isikhathi esengeziwe nayo. \n\nZama ukuqhubeka neminye imigomo yakho – njengokuzinakekela, ukuchitha isikhathi nengane, nokuyincoma. Onke la makhono azosiza ingane yakho esebusheni bayo izizwe ithandwa futhi ivikelekile... futhi kunciphise ukucindezeleka kuwe!", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", - "text": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kuyajabulisa ukukubona uprakthiza ukudansa nomngane wakho. Ngicela niyodansela ngaphandle ukuze ngiqedele ukuhlanza indlu. Ngemva kwalokho, ningangibonisa umdanso wenu.”\n\n@global.w_instruct_teen_girl: “Kulungile, @global.w_instruct_female_caregiver!”", + "SourceText": "We only created a negative consequence, not a positive consequence.", + "text": "Sidale kuphela umphumela ongemuhle, hhayi umphumela omuhle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", - "text": "@global.w_instruct_female_caregiver: “Ngiyabonga ngokuthi nidansele ngaphandle njengoba bengiqedela ukuhlanza indlu, @global.w_instruct_teen_girl. Manje nginesikhathi sokuthi ngibukele umdanso wenu.”", + "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", + "text": "Ngezinye izikhathi kungase kube nzima ukucabanga ngomphumela wokwenza kahle izinto. Imiphumela emihle izokhuthaza ingane yakho esebusheni bayo ukuthi izimele nakakhudlwana, futhi uzowubona umehluko!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", - "text": "@global.w_instruct_female_caregiver: “Kwaze kwakuhle, @global.w_instruct_teen_girl! Udansa kahle ngempela!”", + "SourceText": "My teen suggested being hit as a negative consequence.", + "text": "Ingane yami esebusheni bayo ibeka ukuthi ishaywe njengomphumela ongemuhle wokwephula umthetho.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" + "note": "" }, { - "SourceText": "Let's discuss what happened this time.", - "text": "Ake sixoxe ngalokho okwenzeke manje.", + "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", + "text": "Izingane ezisebusheni bazo signase zijwayele ekubhekeni ukushaywa njengokuphela komphumela ongemuhle wokwephula imithetho. \n\nXoxa nabo ngemiphumela ezolile engabasiza baqonde ukuthi kukhona okungalungile abakwenzile. Lezi zizosebenza kangcono futhi zizobeka izibonelo ezinhle!", "type": "template", "note": "" }, { - "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Xoxani ndawonye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver uzizwa kanjani njengamanje?\n* Ucabanga ukuthi kungani isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", + "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", + "text": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho yephule umthetho wasekhaya).", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "It worked better this time because...", - "text": "Kusebenze kangcono manje ngoba...", + "SourceText": "You can help your teenager to understand that breaking family rules leads to consequences. \n\nBut HOW you do this matters. \n\nGetting consequences right helps teens behave better and makes family life calmer...", + "text": "Ungasiza ingane yakho iqonde ukuthi ukuphula imithetho yasekhaya kunemiphumela. \n\nKodwa INDLELA owenza ngayo ebalulekile. \n\nUkuthola imiphumela efanele kusiza umntwana ukuthi aziphathe kahle futhi kwenza umndeni uphile ngokuthula...", "type": "template", "note": "" }, { - "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", - "text": "* @global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe\n* @global.w_instruct_female_caregiver ukwazile ukuhlala ezolile \n* @global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", + "SourceText": "Greetings, everyone. \n\nToday's topic is calm consequences.\n\nIt is important that when we introduce consequences to our teenagers we involve them, but also important that we are calm when we introduce consequences.\n\nThat will assist in us to agree on introducing calm consequences to our teenagers and our teenagers will easily remember them when they are involved and that will make them responsible.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sithi imiphumela eyethulwa ngendlela ezolile.\n\nKubalulekile ukuthi lapho sethula umphumela ebantwaneni bethu sibabandakanye nabo, kodwa kubalulekile nokuthi sizole lapho sethula imiphumela.\n\nLokhu kuzosisiza sivumelane ngokwethula imiphumela ngendlela ezolile ebantwaneni bethu futhi abantwana bazoyikhumbula kalula lapho sibabandakanya futhi lokho kuzobenza baziphathe kahle.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", - "text": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver bazizwa kanjani njengamanje?", + "SourceText": "Teenagers often break rules. Growing up is a difficult time when they are learning about who they are. \n\nLuckily, there are ways to discipline your teen without getting angry or using violence… and they work well!\n\nGiving calm consequences helps teach our children responsibility for what they do – good and bad. \n\nHere are some examples - imagine you are the parent:", + "text": "Kuvamile ukuthi abantwana bayiphule imithetho. Ukukhula kuyisikhathi ezinzima uma besafunda ukuthi bangobani. \n\nNgenhlanhla, kunezindlela zokukhuza abantwana ngaphandle kokucasuka noma ukuba nodlame... futhi zisebenza kahle!\n\nUkwethula imiphumela ngomoya ophansi kusiza izingane zifunde ukuthi ezikwenzayo kunemiphumela – emihle noma emibi. \n\nNazi ezinye izibonelo - zicabange uwumzali:", "type": "template", - "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" + "note": "" }, { - "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", - "text": "Kungani ucabanga ukuthi isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", + "SourceText": "Calm consequences should be... \n\nFAIR: Not too harsh and you can actually do it \n\nIMMEDIATE: Give them as soon as possible \n\nCONSISTENT: The same consequence every time", + "text": "Ukwethula imiphumela ngomoya ophansi kumelwe kube... \n\nOKUNOBULUNGISWA: Okungaqinile ngokweqile futhi angakwazi ukukwenza \n\nNJENGAMANJE: Nika umntwana imiphumela ngalesosikhathi kwenzeka \n\nNGENDLELA EFANAYO : Nika umphumela ofanayo ngaso sonke isikhathi", "type": "template", - "note": "The string @global.w_instruct_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", - "text": "@global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe", + "SourceText": "Plan a calm consequence for your teenagers arguing with each other during dinner. Remember they need to be \n\nFAIR - IMMEDIATE - CONSISTENT", + "text": "Hlela umphumela owethulwa ngomoya ophansi wezingane zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla. Khumbula ukuthi kudingeka ube \n\nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSHI", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", - "text": "@global.w_instruct_female_caregiver ukwazile ukuhlala ezolile", + "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", + "text": "Ingabe ukwazile ukuthola umphumela owodwa omuhle kanye nowodwa ongemuhle wokuziphatha kwengane yakho esebusheni bayo?", "type": "template", "note": "" }, { - "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", - "text": "@global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", + "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", + "text": "Qedela umhlangano wokufundisana bese uzama ukuxoxa nengane yakho esebusheni bayo ukuze nibeke ndawonye umphumela owodwa omuhle kanye nomphumela owodwa ongemuhle wendlela yokuziphatha.", "type": "template", "note": "" }, { - "SourceText": "Positive instructions can work with your teen too!", - "text": "Ukunikeza imiyalelo emihle kungasebenza nasenganeni yakho!", + "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", + "text": "Kuhle ukuthi ubulokhu usebenzisa i @global.parent_app. Usuthole amathuluzi ayisithupha kakade okuba umzali! \n\nThatha lokhu kuqeqeshwa okulandelayo ukuze uthole amanye amathuluzi okuba umzali!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "GET REAL", - "text": "IBA NEQINISO", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", + "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Imiphumela eyethulwa ngomoya ophansi iyisiza ngempela ingane yakho esebusheni bayo ukuba iyilandele kahle imithetho – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokuzibophezela kangaka emndenini wakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", - "text": "Ingabe ingane yakho ingakwenza ngempela yini lokho ozokucela? Kungase kungenzeki ukuthi ifundele phansi usuku lonke, kodwa isigamu sehora uma usidinga singalunga.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", + "text": "Wenze kahle ngokuphothula i-@local.workshop_data.in_text_title. Kusasa uzothola isifundo esisha esizokusiza uphumule, ube nentokozo futhi ufunde amakhono amasha", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "GET POSITIVE", - "text": "CABANGA IZINTO EZAKHAYO", + "SourceText": "Why did giving a consequence this way not work well?", + "text": "Kungani ukwethulwa kwemiphumela ngalendlela kungasebenzanga kahle?", "type": "template", "note": "" }, { - "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", - "text": "Mamatheka, babuke emehlweni, usebenzise amazwi akhuthazayo. Bancome ngokushesha uma beqala ukwenza obacela ukuthi bakwenze!", + "SourceText": "Yes, a strong reaction like that just made everyone more angry and upset.", + "text": "Yebo, ukusabela ngendlela enokuchwensa ngalendlela kwenze wonke umuntu wathukuthela kakhulu futhi wacasuka.", "type": "template", "note": "" }, { - "SourceText": "GET CLEAR", - "text": "CACISA", + "SourceText": "Let's read what happened with @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver:", + "text": "Ake sifunde ngokwenzekile ku @global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver wakhe:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", - "text": "Ngokuvamile siyakwazi esikufunayo emiqondweni yethu, kodwa asikusho kucace ngokwanele. Yisho ngokucacile ukuthi ufuna ingane yakho yenzeni. Zama ukuthi ‘ngicela ubuye ekhaya ngo-7pm’ kungokuthi ‘buya ekhaya ngesikhathi’.", + "SourceText": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is this? You are late!”", + "text": "@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ubani isikhathi manje? Ufike emva kweskhathi!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", - "text": "Ake sizame ukunikeza imiyalelo EMIHLE, EYIQINISO neCACILE. Ukuprakthiza kuzokusiza wena uphumelele nengane yakho!", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep”. \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", - "text": "Khetha abantu ababili eqenjini lakho:\n* Omunye enze sengathi uyingane\n* Kuthi omunye enze sengathi ungumzali wengane \n* “Mzali: Nikeza “ingane yakho” umyalelo omuhle umkhuthaze futhi umncome \n* “Ngane”: Phendula ngendlela ocabanga ukuthi ingane ingaphendula ngayo kulokhu \n\nXoxani ndawonye ngokuthi kuhambe kanjani:\n* Kukwenze wazizwa kanjani “njengomzali” “nanjengengane yeyevile eminyakeni eyishumi nambili”?\n* Ingabe kukhona ongakwenza kangcono?\n\nNikela wonke umuntu ithuba lokuba “umzali” nokuba “ingane” uma kungenzeka. Ukuprakthiza kuveza imiphumela emihle!", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, you are not keeping our rule! I will give you a hiding!”", + "text": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, awulandeli umthetho wethu! Ngizokushaya!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Examples of positive instructions:", - "text": "Izibonelo zemiyalelo emihle:", + "SourceText": "@global.w_consequence_teen_boy_1: “That’s unfair! You never listen to me!! I hate you!”", + "text": "@global.w_consequence_teen_boy_1: “Akunabo ubulungiswa lokho! Awungilaleli neze!! Ngiyakuzonda!”", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", - "text": "* Ngiyawuthanda umculo wakho. Ungakwazi yini ukuwunciphisa ngesikhathi sesidlo sakusihlwa ukuze sikwazi ukuxoxa? Ngiyabonga - ngiyakwazisa kakhulu lokho. \n * Umnandi umculo wakho. Ubani umculi wawo? Ngicela uwuvale umculo uma ungena endlini. Ungawudlalela phansi ekamelweni lakho uma uthanda. Ngiyabonga!", + "SourceText": "Let's go back to @global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver", + "text": "Ake sibuyele ku @global.w_consequence_teen_boy_1 naku @global.w_consequence_male_caregiver wakhe", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", - "text": "Ongakwenza ekhaya kuleli viki ukuthi unikeze ingane yakho umyalelo omuhle.\n\nKhumbula - IBA NEQINISO, KHULUMA IZINTO EZAKHAYO, CACISA = THOLA LOKHO OKUFUNAYO (ngendlela okungenzeka ngayo kosemusha!)", + "SourceText": "@global.w_consequence_male_caregiver: \"I am concerned that you are often still coming home late, @global.w_consequence_teen_boy_1. What can we do to help you remember to come home in time?\"\n\n@global.w_consequence_teen_boy_1: \"If I come home in time, maybe I can stay up 30 minutes later than usual?\"", + "text": "@global.w_consequence_male_caregiver: “Ngikhathazekile ngokuthi namanje usabuya kuhlwile ekhaya, @global.w_consequence_teen_boy_1. Yini esingayenza ukuze sikusize ukhumbule ukuthi ubuye ngesikhathi esivumelene ngaso ekhaya?\"\n\n@global.w_consequence_teen_boy_1: “Uma ngingafika ngesikhathi ekhaya, mhlawumbe ngingahlala imizuzu engu-30 kunangesikhathi esivamile sokulala?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "We care about you, and how life is treating you.", - "text": "Siyakunakekela, nokuthi impilo ikuphethe kanjani.", + "SourceText": "@global.w_consequence_male_caregiver: That is a good idea! And what should we do if you don’t follow the rule? \n\n@global.w_consequence_teen_boy_1 (mumbles): “Mgmluuhm”", + "text": "@global.w_consequence_male_caregiver: Umbono omuhle lowo! Yini okumelwe siyenze uma ungawulandeli umthetho? \n\n@global.w_consequence_teen_boy_1 (uyabubula): “Ngmluuhm”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", - "text": "Uyiqhawe. Wenza umehluko wangempela. Ziqhenye ngawe .", + "SourceText": "@global.w_consequence_male_caregiver: \"Oh come on, I know you have some ideas.\"\n\n@global.w_consequence_teen_boy_1: \"Okay…. What about: I have to do my homework?\"", + "text": "@global.w_consequence_male_caregiver: “Khuluma, ngiyazi ukuthi kukhona okuthile okucabangayo.” \n\n@global.w_consequence_teen_boy_1: “Kulungile…. Kunganjani: uma ngenza umsebenzi wesikole?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Sorry that things are not easy today. All parents have these days.", - "text": "Uxolo ngokuthi isimo sinzima namuhla. Bonke abazali bayabhekana nalokhu.", + "SourceText": "@global.w_consequence_male_caregiver: \"You have to do your homework anyway. If you forget the rule, it is fair that you will not be able to see your friends the next day.\"\n\n@global.w_consequence_teen_boy_1: \"Okay, @global.w_consequence_male_caregiver.\"", + "text": "@global.w_consequence_male_caregiver: “Kumele uwenze umsebenzi wakho wesikole noma kunjalo. Uma uwukhohlwa umthetho, kuyinto elungile ukuthi ungababoni abangane bakho ngosuku olulandelayo.\" \n\n@global.w_consequence_teen_boy_1: “Kulungile, @global.w_consequence_male_caregiver.\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", - "text": "Vala amehlo, phefumula, wazi ukuthi konke okwenzile kubalulekile.", + "SourceText": "The next day...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! What time is it! It is late!”", + "text": "Ngosuku olulandelayo...\n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1! Ngubani isikhathi! Sekuhlwile!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", - "text": "Yonke imindeni iyabhekana nezinkinga, kodwa uma sisebenzisana singakwazi ukubhekana nezinkinga ngendlela ephumelelayo nenokuthula. \n\nLeli ikhono elihle ukuthi ingane yakho ingalifunda!", + "SourceText": "@global.w_consequence_teen_boy_1: “Sorry @global.w_consequence_male_caregiver – you can go back to sleep.” \n\n@global.w_consequence_male_caregiver: “It is WAY past the time you were supposed to be home!”", + "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa @global.w_consequence_male_caregiver – ungabuyela uyolala.” \n\n@global.w_consequence_male_caregiver: “Sesidlule KUDALA isikhathi obekumele ufike ngaso ekhaya!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuxazulula inkinga. \n\nSonke siyazi ukuthi empilweni kunezikhathi lapho sibhekana khona nezinkinga, futhi sonke siyazi ukuthi uma sizithola sikulezi zimo, kuba nzima ukucabanga ngokushesha ngezixazululo ezinhle. \n\nNgakho-ke kubalulekile ukuthi uma sibhekane nezinkinga sime kancane, siphefumule, sizole bese sicabanga ngamakhono okuxazulula izinkinga esingawasebenzisa. \n\nKhumbula ukubandakanya izingane zethu uma sixazulula izinkinga. Lokhu kuzobasiza bazimele futhi bafunde ukuxazulula izinkinga zabo esikhathini esizayo.", + "SourceText": "@global.w_consequence_teen_boy_1: “I can explain, @global.w_consequence_male_caregiver, I can.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, it is the middle of the night and you came home later than we agreed. Whatever the reason is, you must understand that this is not acceptable. @global.w_consequence_female_caregiver and I felt really worried.”", + "text": "@global.w_consequence_teen_boy_1: “Ngingachaza, @global.w_consequence_male_caregiver, ngingachaza.” \n\n@global.w_consequence_male_caregiver: “@global.w_consequence_teen_boy_1, kuphakathi namabili futhi ubuye ekhaya sekudlule isikhathi esivumelene ngaso. Noma ngabe yisiphi isizathu, kumelwe uqonde ukuthi lokhu akwamukelekile. @global.w_consequence_female_caregiver bengikhathazeke kakhulu.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver" }, { - "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "@global.w_consequence_teen_boy_1: “My friends wanted me to stay longer. They were calling me a baby for having to go home already.” \n\n@global.w_consequence_male_caregiver: “I know it can be hard to say no to your friends. Let’s talk more about this in the morning when we have had some rest.”", + "text": "@global.w_consequence_teen_boy_1: “Abangane bami bebafuna ngihlale isikhathi esijana nabo. Bebengibiza ngengane ngoba besengifuna ukuya ekhaya.” \n\n@global.w_consequence_male_caregiver: “Ngiyazi ukuthi kungaba nzima ukuthi cha kubangane bakho. Ake sikhulume ngalolu daba ekuseni uma sesiphumulile.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", - "text": "* Indaba kanye nokuhlaziya indaba - okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nokuhlaziya indaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "@global.w_consequence_teen_boy_1: “I am sorry I worried you and @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Thank you. Now go to bed, but just to be clear, as you came home later than we agreed, you will not be allowed to go out tomorrow night.”", + "text": "@global.w_consequence_teen_boy_1: “Ngiyaxolisa ngokukukhathaza futhi @global.w_consequence_female_caregiver.” \n\n@global.w_consequence_male_caregiver: “Ngiyabonga. Njengamanje hamba uyolala, kodwa ngifuna kucace, njengoba ubuye ekhaya sekudlule isikhathi esivumelene ngaso, awuvumelekile ukuphuma kusasa kusihlwa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_female_caregiver\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", - "text": "Ake sibheke okwenzeke ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 ngesikhathi @global.w_solve_teen_girl athole ucingo okuvela kumfana.... ucingo!", + "SourceText": "* Story & discussion – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indatshana kanye nengxoxo – okungasebenzanga ...\n* Izibonelo zemiphumela\n* Amathuluzi: Indlela yokwethula imiphumela ngomoya ophansi\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiphumela\n* Indatshana kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", - "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyithole kuphi leyo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 uyitholele mina. Umakhalekhukhwini omuhle, @global.w_solve_female_caregiver_1 . Ithatha izithombe ezinhle!”", + "SourceText": "* Story & reflection – that didn’t work…\n* Examples of consequences\n* Tools: How to give calm consequences\nEXPLAIN - AGREE - ACT\n* Discussion on rules & consequences\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nokubuyekezwa kwendaba - lokho akungasebenzanga ...\n* Izibonelo zemiphumela\n* Izindlela: Indlela yokwethula imiphumela ngesizotha\nCHAZA - VUMA - THATHA ISINYATHELO\n* Ingxoxo ngemithetho nemiohumela yokungayilandeli imithetho\n* Indaba kanye nokubuyekezwa kwendaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", - "text": "@global.w_solve_female_caregiver_1: “Angifuni ukuyibona leyo nto ebizayo! Lo mfana akalungile! Ucabanga ukuthi uzomkhokhela ngani ngalokhu?!”\n\n@global.w_solve_teen_girl: “Akuyona indlela okusebenza ngayo lokho, @global.w_solve_female_caregiver_1! Akubona ubulungiswa lobo!”", + "SourceText": "Discuss together: \n* Why did giving a consequence this way not work well?", + "text": "Xoxani ndawonye: \n* Kungani ukwethulwa kwemiphumela ngale ndlela kungasebenzanga kahle?", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", - "text": "@global.w_solve_female_caregiver_1: “Angifuni ukukuzwa lokho!” \n\n@global.w_solve_teen_girl: “Awuzami ngisho nokungilalela! Angazi nokuthi kungani ngikuzama nawe!”", + "SourceText": "@global.w_consequence_male_caregiver was angry", + "text": "@global.w_consequence_male_caregiver ubediniwe", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" + "note": "The string @global.w_consequence_male_caregiver should not be translated." }, { - "SourceText": "Take a few deep breaths to calm down, and", - "text": "Phefumula izikhathi ezimbalwa ukuze uzole, bese", + "SourceText": "@global.w_consequence_male_caregiver did not let @global.w_consequence_teen_boy_1 explain", + "text": "@global.w_consequence_male_caregiver akavumanga @global.w_consequence_teen_boy_1 achaze", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "KNOW IT", - "text": "YAZI", + "SourceText": "The consequence was not discussed beforehand with @global.w_consequence_teen_boy_1", + "text": "Imiphumela beyingaxoxwanga kusengaphambili no @global.w_consequence_teen_boy_1", "type": "template", - "note": "" + "note": "The string @global.w_consequence_teen_boy_1 should not be translated." }, { - "SourceText": "Identify the problem.", - "text": "Ibone inkinga.", + "SourceText": "The consequence was too strong", + "text": "Imiphumela beyiqine kakhulu", "type": "template", "note": "" }, { - "SourceText": "SOLVE IT", - "text": "IXAZULULE", + "SourceText": "Giving a consequence this way did not work well because...", + "text": "Ukwethulwa kwemiphumela ngale ndlela akusebenzanga ngoba...", "type": "template", "note": "" }, { - "SourceText": "Think of possible solutions and what would happen if we used them.", - "text": "Cabanga ngezixazululo ezikhona nokuthi kungenzekani uma sizisebenzisa.", + "SourceText": "Discuss together:\n* What rules do your teens often break? \n* What consequence could you use for each specific broken rule? \n\nConsequences should be: \nFAIR (not too harsh)\nIMMEDIATE (do it straight away) \nCONSISTENT (same every time).\n\nPraise and encourage each other – we can give each other strength!", + "text": "Xoxani ndawonye:\n* Yimiphi imithetho izingane zakho ezivame ukuyiphula? \n * Yimuphi umphumela ongawusebenzisa emthethweni othile ophuliwe? \n\nImiphumela kumelwe ibe: \nENOBULUNGISWA (engaqinile ngokwedlulele)\nNGOKUSHESHA (kwenze ngaso leso sikhathi) \nUNGASHINTSHI (okufanayo ngaso sonke isikhathi).\n\nNcomanani futhi nikhuthazane – singanikana amandla!", "type": "template", "note": "" }, { - "SourceText": "TRY IT", - "text": "KUZAME", + "SourceText": "Let's talk about this story", + "text": "Ake sikhulume ngalolu daba", "type": "template", "note": "" }, { - "SourceText": "Choose a solution and try it out.", - "text": "Khetha isixazululo bese uyasizama.", + "SourceText": "Why did using a consequence work well this time?", + "text": "Kungani ukusebenzisa umphumela kusebenze kahle kulokhu?", "type": "template", "note": "" }, { - "SourceText": "TEST IT", - "text": "SIHLOLE", + "SourceText": "@global.w_consequence_teen_boy_1 and his @global.w_consequence_male_caregiver discussed consequences when they were both calm", + "text": "@global.w_consequence_teen_boy_1 no @global.w_consequence_male_caregiver baxoxe ngemiphumela ngesikhathi bobabili bezolile", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_teen_boy_1\n@global.w_consequence_male_caregiver" }, { - "SourceText": "Did it work? Great! If it did not work, then try another solution.", - "text": "Ingabe sisebenzile? Kuhle! Uma singasebenzanga, zama esinye isixazululo.", + "SourceText": "They agreed on consequences together", + "text": "Bobabili bavumelene ngemiphumela", "type": "template", "note": "" }, { - "SourceText": "Let’s see how problem solving works in practice.", - "text": "Ake sibone ukuthi ukuxazulula inkinga kusebenza kanjani ngokuprakthiza.", + "SourceText": "@global.w_consequence_male_caregiver responded calmly but firmly when @global.w_consequence_teen_boy_1 broke the rule", + "text": "@global.w_consequence_male_caregiver usabele ngomoya ophansi kodwa engagwegwesi ngesikhathi @global.w_consequence_teen_boy_1 ephule umthetho", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", - "text": "@global.w_solve_female_caregiver_2 ubuya ekhaya evela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Awu izinyawo zami bandla! Ngidinga ukuhlala phansi isikhashana ngiphuze ikhofi ngaphambi kokuthi ngilungisele wonke umuntu ukudla.”", + "SourceText": "@global.w_consequence_male_caregiver listened to @global.w_consequence_teen_boy_1", + "text": "@global.w_consequence_male_caregiver ulalele @global.w_consequence_teen_boy_1", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "The following strings should not be translated:\n@global.w_consequence_male_caregiver\n@global.w_consequence_teen_boy_1" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", - "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani? Lesi sinkwa sizodliwa kusihlwa! Manje angeke sisasenela sonke!”", + "SourceText": "The consequence was realistic and appropriate", + "text": "Umphumela ubunengqondo futhi ufanelekile", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", - "text": "@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2, bengilambile. Ngingachaza, uyabona, kunalo mfana esikoleni....” \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Thatha Ikhefu... phefumula...”", + "SourceText": "Using a consequence worked well this time because...", + "text": "Ukusebenzisa umphumela kusebenze kahle lana ngoba...", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Ngiphe umzuzwana. Ngikhathele futhi manje sengikhathazekile ngokuthi ukudla kwakusihlwa angeke kusenele.” \n\n@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2\"", + "SourceText": "How you introduce calm consequences is important. Remember, when you involve your teen, things usually go better!", + "text": "Indlela owethula ngayo imiphumela ngesizotha iyasiza. Khumbula, uma ubandakanya umntwana wakho, izinto ziba ngcono!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "Step 1: KNOW IT", - "text": "Isinyathelo 1: YAZI", + "SourceText": "EXPLAIN", + "text": "CHAZA", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", - "text": "@global.w_solve_female_caregiver_2: “Ake ungitshele, kungani ulambe kangaka? Ingabe awuwudlanga umphako wakho esikolweni?” \n\n@global.w_solve_teen_boy_2: “Ileyo inkinga. Kukhona umfana esikoleni ongiqhwagayo. Uthi uma ngingamniki umphako wami nsuku zonke, yena nabangane bakhe bazongilimaza. Uyangicasula!”", + "SourceText": "Check you are both calm. Take a few breaths. Explain to your teen why you are concerned about their behaviour.\n\nExplain the reasons why the rule mattered. You can share your feelings - it’s okay to say you are disappointed.", + "text": "Bheka ukuthi nobabili ninomoya ophansi yini. Phefumula izikhathi ezimbalwa. Chazela ingane yakho ukuthi kungani ukhathazekile ngokuziphatha kwayo.\n\nChaza ukuthi kungani umthetho ubalulekile. Ungamtshela indlela ozizwa ngayo - kulungile ukusho ukuthi uphoxekile.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", - "text": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ukuzwa lokho kodwa ngiyajabula ngokuthi ungitshele, @global.w_solve_teen_boy_2. Akusho ukuthi kumelwe udle ukudla kwawo wonke umuntu kwakusihlwa. Uma siqeda ukukhuluma, kumelwe uye esitolo uyothenga esinye isinkwa. Kodwa okokuqala: Ucabanga ukuthi kumelwe senzeni ngale nkinga yobuqhwagwa?”\n\n@global.w_solve_teen_boy_2: “Empeleni.... Ngifuna ukumshaya nje kwaphela noma ngiziphindiselele.”", + "SourceText": "AGREE", + "text": "VUMA", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Step 2: SOLVE IT", - "text": "Isinyathelo 2: IXAZULULE", + "SourceText": "Plan consequences with your teen for following and not following the rule.\n\nAsk for their ideas. Talk until you agree on something realistic.\n\nMake a consequence for NOT following the rule and a privilege when they DO follow the rule.", + "text": "Hlela nengane yakho ngemiphumela yokulandela neyokungawulandeli umthetho.\n\nBacele baveze imibono yabo. Khulumani nize nivumelane ngokuthile okuzosebenza.\n\nYenza umphumela WOKUNGALANDELI umthetho nelungelo azolithola uma ethe WALANDELA umthetho.", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", - "text": "@global.w_solve_female_caregiver_2: “Hmmm... ucabanga ukuthi kuzokwenzakalani kuwe uma wenza kanjalo?”\n\n@global.w_solve_teen_boy_2: “Angazi. Mkhulu kakhulu kunami kungenzeka angilimaze kakhulu. Futhi kungenzeka ngingene enkingeni esikoleni bese ngixoshwa.”", + "SourceText": "ACT", + "text": "THATHA ISINYATHELO", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", - "text": "@global.w_solve_female_caregiver_2: “Kunjalo, lokho kungenzeka. Yini esingayenza esikhundleni salokho?”\n\n@global.w_solve_teen_boy_2: “Ngicabanga ukuthi ngingatshela uthisha. Kodwa ezinye izingane zizongibiza ngesiyoyoyo. Mhlawumbe ungakhuluma nothisha?”", + "SourceText": "When your teen follows the rule, give praise and privileges!", + "text": "Uma ingane yakho iwulandela umthetho, yincome bese uyinikeza amalungelo!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Kuzwakala kuyicebo elihle lelo. Ngingabuye ngikhulume nabazali bakhe uma ufuna ngenze kanjalo.”\n\n@global.w_solve_teen_boy_2: “Kulungile. Uma ucabanga ukuthi nalokho futhi kuzosiza. Ngiyabonga, @global.w_solve_female_caregiver_2\"", + "SourceText": "They will feel respected and valued. Remember: The more we praise them, the more they will show that good behaviour!", + "text": "Bazozizwa behlonishwa futhi bebalulekile. Khumbula: Uma sibancoma njalo, bazothuthukisa kakhulu ukuziphatha okuhle!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", - "text": "@global.w_solve_female_caregiver_2: “Ngingakwenzela noma ngabe yini, sthandwa sami. Ngizokwenza kanjalo into yokuqala ngemva kwedina. Futhi, uyazi? Uma lokho kungasebenzi, singabuye sizame okunye sobabili.”\n\n@global.w_solve_teen_boy_2: Ngiyabonga, @global.w_solve_female_caregiver_2\"", + "SourceText": "When your teen does not follow the rule, follow through with the consequence.", + "text": "Uma ingane yakho ingawulandeli umthetho, qhubeka nomphumela enivumelene ngawo.", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "Step 3: TRY IT", - "text": "Isinyathelo 3: KUZAME", + "SourceText": "When your teen breaks the rule, calmly give the consequence. This should be FAIR (not too harsh), IMMEDIATE (do it straight away) CONSISTENT (same every time).", + "text": "Uma ingane yakho iphula umthetho, ngomoya ophansi mkhumbuze ngomphumela walokho. Lokho kumelwe kube OKUNOBULUNGISWA (akumelwe kube nokhahlo kakhulu), NGALESOSIKHATHI (kwenze ngaso leso sikhathi) UNGASHINTSHI (okufanayo ngaso sonke isikhathi).", "type": "template", "note": "" }, { - "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", - "text": "Ngemva kwesonto.... \n\n@global.w_solve_female_caregiver_2: “Zihamba kanjani izinto esikoleni njengamanje?”\n\n@global.w_solve_teen_boy_2: “Kuba ngcono, loya mfana akasangithatheli ukudla kwami. Kodwa usaqhubeka nokungiphatha ngonya.”", + "SourceText": "What would be a calm consequence for your teenagers arguing with each other during dinner? \n\nRemember it needs to be: \nFAIR - IMMEDIATE - CONSISTENT", + "text": "Kungaba yimuphi umphumela owethulwa ngomoya ophansi ezinganeni zakho eziseminyakeni yokuthomba uma ziphikisana phakathi nesikhathi sokudla? \n\nKhumbula ukuthi kumelwe ube : \nONOBULUNGISA - NGOKUSHESHA - UNGASHINTSI", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Step 4: TEST IT", - "text": "Isinyathelo 4: IHLOLE", + "SourceText": "Not seeing any friends for a month", + "text": "Ukungaboni abangane inyanga yonke", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", - "text": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ngokuzwa lokho, @global.w_solve_teen_boy_2. Ngingakhuluma yini nomalume wakho ahambe ayokhuluma nabazali bakhe? Uma kungasebenzi lokho, sizozama okunye!”\n\n@global.w_solve_teen_boy_2: “Yebo, ngiyabonga @global.w_solve_female_caregiver_2. Okungenani ngiyazi ukuthi usohlangothini lwami.”", + "SourceText": "This may be hard to do for you and also too harsh!", + "text": "Lokhu kungase kube nzima ukukwenzela futhi kube nzima kakhulu!", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" + "note": "" }, { - "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Xoxani ndawonye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", + "SourceText": "Cancelling their birthday plans in a month’s time", + "text": "Ukukhansela izinhlelo zabo zokuzalwa esikhathini esingangenyanga", "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" + "note": "" }, { - "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", - "text": "Khumbula @global.w_solve_teen_girl kanye nefoni ayithole kumfana?", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." - }, - { - "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" - }, - { - "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", - "text": "Ake sibuyele ku@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe bese sibona ukuthi iziphi izixazululo abaqhamuke nazo.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", - "text": "@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 uze nezixazululo ezintathu.", - "type": "template", - "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" - }, - { - "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", - "text": "Ukukhulisa abantwana kunzima ngempela. \n\nNgokuvamile azikho izixazulula ezilula, kodwa manje @global.w_solve_female_caregiver_1 ufunde ukuthi angakwazi ukukhuluma nendodakazi yakhe ngalezi zinto. \n\nNgaphambili, ubekhathazeka yedwa, njengamanje beza nezixazululo bobabili!", - "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." - }, - { - "SourceText": "Ground @global.w_solve_teen_girl for a month", - "text": "Jezisa @global.w_solve_teen_girl inyanga", - "type": "template", - "note": "The string @global.w_solve_teen_girl should not be translated." - }, - { - "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", - "text": "@global.w_solve_female_caregiver_1: “Angeke uphume ngenyanga ezayo”", + "SourceText": "This is too far in the future, and too harsh as well!", + "text": "Lokhu kukude kakhulu esikhathini esizayo, futhi kulukhuni kakhulu!", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "That didn’t work... Let's try something else.", - "text": "Lokhu akusebenzanga... Ake sizama okunye.", + "SourceText": "No TV this evening", + "text": "Ukungabukeli i-TV namuhlanje kusihlwa/ntabama", "type": "template", "note": "" }, { - "SourceText": "Return the phone and save up", - "text": "Buyisela ifoni wonge imali", + "SourceText": "Perfect, this sounds fair and can be done straight away", + "text": "Kuhle, kuzwakala kunobulungisa futhi kungenziwa khona manje", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", - "text": "@global.w_solve_female_caregiver_1: “Angizami ukusola umngane wakho noma ukuba nomona. Ngikhathazwa ukuthi uma umuntu ekupha isipho kunzima ukuthi ‘cha’ uma becela ukuthi ubenzela okuthile njengembuyiselo - njengokuya nawe ocansini. Uma ufuna ukuba nefoni, sizokonga imali sobabili ukuze uzokwazi ukwenza isinqumo sakho ngaphandle kokumkweleta okuthile.”", + "SourceText": "Self-care is a key parenting tool.", + "text": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali.", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "This is great! Try the third option as well.", - "text": "Kuhle lokhu! Zama indlela yesithathu futhi.", + "SourceText": "So good to hear you are feeling well today. You are incredible!", + "text": "Kuyajabulisa ukuzwa ukuthi uzizwa uphilile namhlanje. Uyamangalisa!", "type": "template", "note": "" }, { - "SourceText": "Learn about safe sex", - "text": "Funda ngocansi oluphephile", + "SourceText": "Sorry that things are difficult right now. Take a deep breath and know that you are valued.", + "text": "Uxolo ngokuthi isimo sinzima njengamanje. Donsa/khokhe umoya, uphefumule futhi wazi ukuthi ubalulekile.", "type": "template", "note": "" }, { - "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", - "text": "@global.w_solve_female_caregiver_1: “Lokhu kungenza ukuba ngibone ukuthi kumelwe sikhulume ngamasoka nokuzivikela. Intsha eningi elingana nawe iyakhulelwa noma ingenwe yi-HIV. Ake siye emtholampilo ukuze ukhulume nomhlengikazi akwazise ukuthi ungahlala kanjani uphephile.”", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you all, and help you plan for the future. \n\nWhy don’t you plan some party food together, and have some music ready if you like to dance!", + "text": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa kweviki elizayo kuzobungaza nina nonke, futhi kunisize nihlelele ikusasa. \n\nKungani ningahleli ukuba nomcimbi wokudla ndawonye, nilungise nomculo uma nithanda ukudansa!", "type": "template", - "note": "The string @global.w_solve_female_caregiver_1 should not be translated." + "note": "" }, { - "SourceText": "This is great!", - "text": "Kuhle lokhu!", + "SourceText": "You’ve completed this week’s workshop. \n\nNext week’s workshop will celebrate you, and you can choose the support you want going forward. \n\nYou can prepare a treat to celebrate – something you like to eat, or music you like to listen to!", + "text": "Ukuqedile ukuqeqeshwa kwaleli viki. \n\nUkuqeqeshwa ngeviki elizayo kuzobe kubungaza wena, futhi ungakhetha ukusekelwa okufunayo ukuqhubekela phambili. \n\nUngalungiselela okuthile kokuzithokozisa okungajatshulelwa - okuthile othanda ukukudla, noma umculo othanda ukuwulalela!", "type": "template", "note": "" }, { - "SourceText": "Let's practice problem-solving!", - "text": "Ake sizame ukuxazulula inkinga!", + "SourceText": "With your teen choose one of these situations (or think of one yourself!). Look at the cartoon, and discuss what you would do together if this happened to a friend or in your family. \n\nAnd remember: BREATHE - LISTEN - THINK", + "text": "Wena nengane yakho khethani isimo esisodwa kulezi (noma ungacabanga esinye!). Buka opopayi, nixoxe ngokuthi ningenze njani uma lokhu kungenzeka kumngani noma ilungu lomndeni. \n\nBese uyakhumbula: PHEFUMULA - LALELA - CABANGA", "type": "template", "note": "" }, { - "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", - "text": "Prakthizani ndawonye ukuxazulula inkinga eninayo njengamanje. Oyedwa wenu ungumzali kuthi oyedwa abe ngumntwana. \n\nNcomanani futhi nikhuthazane - siyaziqhenya ngawe! \n\nKhumbula izinyathelo: \nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", + "SourceText": "prepare for a possible crisis with their teens", + "text": "balungiselele inkinga engase ibe khona nentsha yabo", "type": "template", "note": "" }, { - "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", - "text": "Fundisa intsha yakho izinyathelo ezine zokuxazulula inkinga:\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE \n\nSebenzisani lezi zinyathelo ndawonye uma kuqubuka inkinga!\n\nUma kwenzeka okuthile okubi, ngokuvamile siphatheka kabi bese siyagxeka. Kodwa okudingwa abantwana bethu umuntu ongasiza kutholakale izixazululo ndawonye. Balalele, yamukela indlela ababona nabazizwa ngayo, futhi ubabonge ngokukuthemba.\n\nUkufundisa ingane yakho indlela yokuxazulula izinkinga kuzomsiza impilo yakhe yonke. Isipho esihle kangaka!", + "SourceText": "prepare for a possible crisis with your teen", + "text": "lungiselela inkinga engase ibe khona nengane yakho esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "Some problems other parents solved with their teens:", - "text": "Ezinye izinkinga abanye abazali abazixazulula nabantwana babo:", + "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", + "text": "Ingane yami eyevile eminyakeni eyishumi nambili ingitshele ukuthi kukhona into ebucayi eyenzeke kuyo futhi angazanga ukuthi ngisisingathe kanjani leso simo.", "type": "template", "note": "" }, { - "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", - "text": "* Ingane yami ayifuni ukuya esikoleni\n* Ngikhathazeke ngokuthi ingane yami ingakhulelwa noma ikhulelise \n* Ngikhathazwa yilokho ingane yami ekwenza ku-inthanethi \n* Ingane yami ichitha isikhathi nabangane ababi \n* Ingane yami iyavilapha \n* Ingane yami ayiwenzi umsebenzi wesikole \n* Kungenzeka ingane yami isebenzisa izidakamizwa", + "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", + "text": "Ncoma ingane yakho ngokukutshela; lokho akulula ukukwenza! Khumbula, ungasebenzisa wonke amakhono owakhethe ebhokisini lakho lamathuluzi: Thatha isikhashana, sebenzisa izinyathelo ezine zokuxazulula izinkinga, futhi ufinyelele ukuze uthole ukwesekwa wena nomntwana wakho osemusha enikudingayo!", "type": "template", "note": "" }, { - "SourceText": "Being a great parent also means taking time to care for yourself every day.", - "text": "Ukuba umzali ophumeleleyo kusho ukuzibekela isikhathi sokuzinakekela nsuku zonke.", + "SourceText": "Get support", + "text": "Thola ukwesekwa", "type": "template", "note": "" }, { - "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Kuhle. Kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", + "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", + "text": "Ingxoxo ingenze ngangakhululeka ngoba ingikhumbuze ngento ebuhlungu eyenzeka kumina.", "type": "template", "note": "" }, { - "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", - "text": "Kunzima ukuba umzali. Kodwa kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", + "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", + "text": "Lapho sikhunjuzwa izinto ezinjalo ezenzeka kuthina, kungokwemvelo ukucasuka noma ukuthukuthela. Kubalulekile ukuthola isikhathi lapho usuzolile sokucabanga ngokwesekwa okudingayo. Kungase kudingeke ukhulume nomunye umuntu othile.", "type": "template", "note": "" }, { - "SourceText": "Doing any of these makes you a great parent.", - "text": "Ukwenza okunye kulezi zinto kubonisa ukuthi ungumzali ovelele.", + "SourceText": "One of us did not feel comfortable.", + "text": "Oyedwa kuthina ubezizwa engakhululekile.", "type": "template", "note": "" }, { - "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", - "text": "Abantwana bethu bangachitha isikhathi esiningi ngaphandle kwasekhaya noma iku-inthanethi, lapho kunzima khona ngathi ukuba sibagcine bephephile. \n\nUkuxoxisana ngezindawo eziphephile nezindawo ezingaphephanga, nokuthi singazigwema kanjani izinkinga, kuyasiza ngempela!", + "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", + "text": "Lokhu kuyinto okunzima ukukhuluma ngayo. Zitholele isikhathi sokuphumula. Siyazi ukuthi kulula kakhulu ukungakhulumi ngalezi zinto sinethemba lokuthi ngeke zenzeke kithi. Nokho ukufunda ukubhekana nenhlekelele kufana nokuthola umshwalense; KUHLALE kungcono ukucabanga ngakho nokuzilungiselela.", "type": "template", "note": "" }, { - "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuphepha kwabantwana. \n\nKuwumthwalo wethu njengabazali ukuthi siqiniseka ukuthi abantwana bethu baphephile ngaso sonke isikhathi. Kudingeka siqiniseke ukuthi abantwana bethu baphephile emphakathini esihlala kuyo. Kuwumthwalo wethu ukuba sibenze baqaphele izindawo eziphephile nezingaphephanga emphakathini. \n\nKubuye kube umthwalo wethu wemfanelo ukuqinisekisa ukuthi bayabuqonda ubungozi abangazithola bekuzo ngokuba ku-inthanethi. Ngaleyo ndlela abantwana bethu bazokwazi ukwenza izinqumo ezinhle futhi bazigcine bephephile.", + "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", + "text": "Umgomo wakho bekuwukuxoxa nengane yakho esebusheni bayoi ngesimo esiyinhlekelele esingase sivele bese nenza icebo laso.", "type": "template", "note": "" }, { - "SourceText": "Today you will explore:", - "text": "Namuhla uzohlola:", + "SourceText": "All families experience crises. When we prepare together and know where to get help BEFORE something bad happens, we can overcome any crisis.", + "text": "Yonke imindeni ibhekana nezinkinga. Uma sizilungiselela ndawonye futhi sazi ukuthi sizoluthola kuphi usizo NGAPHAMBI kokuthi okuthile okubi kwenzeke, singakwazi ukubhekana nezinkinga.", "type": "template", "note": "" }, { - "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Greetings, everyone.\n\nToday's topic is dealing with crises.\n\nCrises may occur anywhere. Crises may occur anytime. Therefore, it is important as a family to have plans in place should any family member find themselves in a crisis situation. \n\nIt is important to have plans so that every family member may feel protected. \n\nWhen we are dealing with crises, remember to take a pause, breathe, and keep yourself calm. That will help you to deal with crises better.", + "text": "Sanibonani, nonke.\n\nIsihloko sanamuhla simayelana nokubhekana nezinkinga.\n\nIzinkinga zingavela nomaphi. Izinkinga zingavela noma nini. Ngakho-ke, kubalulekile ukuthi njengomndeni nibe nezinhlelo zokuthi nizokwenza kanjani uma ilunga lomndeni lizithola lisenkingeni. \n\nKubalulekile ukuba nezinhlelo ukuze ilungu ngalinye lomndeni lizizwe livikelekile. \n\nLapho sibhekele nenkinga, kumelwe sikhumbule ukuma, sidonse umoya, bese sizigcina sizolile. Lokho kuzokusiza ubhekane nenkinga ngendlela engcono.", "type": "template", "note": "" }, { - "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", - "text": "* Indaba kanye nokubuyekeza - okusebenzile!\n* Indaba kanye nokubuyekeza - okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "It’s helpful to practice dealing with crisis before something happens. \n\nLook at these five family crisis times. Imagine you are the parent: What would you do?\n\nRemember: BREATHE - LISTEN - THINK", + "text": "Kuyasiza ukukuprakthiza ukubhekana nenkinga engaqubuka ngaphambi kokuba yenzeke. \n\nBheka lezi zikhathi ezinhlanu zezinkinga zomndeni. Zicabange uwumzali: Yini obungayenza?\n\nKhumbula: PHEFUMULA - LALELA - CABANGA", "type": "template", "note": "" }, { - "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", - "text": "Ukukhulumisana kuyinto ebaluleke kakhulu!\n\nAke sibone ukuthi yini eyenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1 wakhe:", + "SourceText": "Crisis 1: @global.w_crisis_teen_boy_2 fights at school", + "text": "Inkinga 1: @global.w_crisis_teen_boy_2 ukulwa esikoleni", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", - "text": "@global.w_safe_teen_girl_1: “Kunokuthile okwenzeke ngesikhathi ngiphume nabangane bami @global.w_safe_teen_girl_2 no @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: “Ngitshele, @global.w_safe_teen_girl_1\"", + "SourceText": "@global.w_crisis_teen_boy_2: \"I’ve never done this before. And now they will expel me\"", + "text": "@global.w_crisis_teen_boy_2: “Angikaze ngikwenze lokhu ngaphambili. Njengamanje ngizoxoshwa\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", - "text": "Indoda esemotweni: “Ntokazi enhle. Sekuyisikhathi eside ngilokhu ngikubuka. Umuhle kakhulu, ungubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe u-@global.w_safe_teen_girl_1”", + "SourceText": "Crisis 2: @global.w_crisis_teen_girl_1 gets pregnant", + "text": "Inkinga 2: @global.w_crisis_teen_girl_1 uyakhulelwa", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", - "text": "Indoda esemotweni: @global.w_safe_teen_girl_1, ungathanda yini ukuhamba nami siyofuna okuphuzwayo namashibusi? Ngiyakucela, ngena, uzobuya ngesikhathi, ngiyakuthembisa...” \n\n@global.w_safe_teen_girl_1: “Anginaso isiqiniseko sokuthi umbono omuhle lowo...”", + "SourceText": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, I’m so ashamed. I don’t know what to do\"", + "text": "@global.w_crisis_teen_girl_1: \"@global.w_crisis_male_caregiver_1, Ngizizwa nginamahloni. Angazi ukuthi ngenzenjani”", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", - "text": "@global.w_safe_teen_girl_2: “Unenhlanhla, mngane wami. Ngifisa sengathi indoda ingacela ukukhipha MINA ingithengele izipho. Ngiyakutshela, uma ungakwenzi lokhu ngizotshela wonke umuntu ukuthi uyisilima!”", + "SourceText": "Crisis 3: @global.w_crisis_teen_boy_2 makes a girl pregnant", + "text": "Inkinga 3: @global.w_crisis_teen_boy_2 ukhulelisa intombazane", "type": "template", - "note": "The string @global.w_safe_teen_girl_2 should not be translated." + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", - "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 ungahambi! Qaphela! Asihambe siye ekhaya. Kuyingozi ukuhamba nabantu ongabazi. Ngaphandle kwalokho, mdala kunawe futhi akwenzayo akulungile.”\n\n@global.w_safe_teen_girl_1: “Eqinisweni angazi....”", + "SourceText": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, I don’t want to have a baby\"", + "text": "@global.w_crisis_teen_boy_2: \"@global.w_crisis_male_caregiver_2, Angifuni ukuba nengane\"", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_2\n@global.w_crisis_male_caregiver_2" }, { - "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", - "text": "@global.w_safe_female_caregiver: “Mhh, ngiyaziqhenya ngawe ngokuthi awuyigibelanga le moto. Bekuyisimo esiyingozi lesi, ngiyabonga ngokuthi ungitshele!”", + "SourceText": "How could you respond to @global.w_crisis_teen_boy_2?", + "text": "Ungasabela kanjani ku @global.w_crisis_teen_boy_2?", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "The string @global.w_crisis_teen_boy_2 should not be translated." }, { - "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", - "text": "Ake sikhulume ngokwenzeke ku-@global.w_safe_teen_girl_1", + "SourceText": "Crisis 4: Someone in the family gets sick", + "text": "Inkinga 4: Ilunga lomndeni liyagula", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "" }, { - "SourceText": "Discuss together: \n\nWhat was risky about that situation?", - "text": "Xoxani ndawonye: \n\nYini ebiyingozi ngalesi simo?", + "SourceText": "\"The test said I have HIV. I’m scared I’m going to die\"", + "text": "“Ukuhlolwa kwegazi kuveze ukuba ngine-HIV. Ngiyesaba ukuthi ngizofa”", "type": "template", "note": "" }, { - "SourceText": "The situation was risky because...", - "text": "Lesi simo besiyingozi ngoba...", + "SourceText": "How could you respond in this situation?", + "text": "Ungasabela kanjani kulesi simo?", "type": "template", "note": "" }, { - "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "* Indoda ebisemotweni ibiphoqa @global.w_safe_teen_girl_1 ngezipho \n* Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ukuthi ahambe \n* Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto \n* Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala \n* Bekangekho omunye umuntu omdala onganikeza u-@global.w_safe_teen_girl_1 iseluleko", + "SourceText": "Crisis 5: @global.w_crisis_teen_girl_1 is pressured into sex by her boyfriend", + "text": "Inkinga 5: @global.w_crisis_teen_girl_1 uphoqwe yisoka lakhe ukuba enze ucansi", "type": "template", - "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", - "text": "Ake sicabange ngokwenzeke ku @global.w_safe_teen_girl_1:", + "SourceText": "@global.w_crisis_teen_girl_1: \"I didn’t really want to. Now I will get pregnant or be ill. @global.w_crisis_female_caregiver, I’m so scared...\"", + "text": "@global.w_crisis_teen_girl_1: \"Bengingafuni ngempela ukuya ocansini. Manje sengizokhulelwa noma ngigule. @global.w_crisis_female_caregiver, Ngiyesaba kakhulu...\"", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "What was risky about that situation?", - "text": "Yini ebe yingozi ngalesi simo?", + "SourceText": "How could you respond to @global.w_crisis_teen_girl_1?", + "text": "Ungasabela kanjani ku @global.w_crisis_teen_girl_1?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_girl_1 should not be translated." }, { - "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", - "text": "Indoda ebisemotweni ibifaka ingcindezi @global.w_safe_teen_girl_1 ngezipho", + "SourceText": "Remember to support and encourage each other. It is hard to remain calm and listen to each other in a crisis - we are proud of you.", + "text": "Khumbulani ukusekelana nokukhuthazana. Kunzima ukuhlale nizolile futhi nilalelana uma kunenkinga - siyaziqhenya ngani.", "type": "template", "note": "" }, { - "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", - "text": "Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ", + "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", + "text": "Usuxoxile yini nengane yahoo esebusheni bayo ukuthi yini ongayenza esimweni esibucayi?", "type": "template", "note": "" }, { - "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", - "text": "Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto", + "SourceText": "Crisis Examples", + "text": "Izibonelo Zezinkinga", "type": "template", "note": "" }, { - "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", - "text": "Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala", + "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", + "text": "Ungumzali ozibophezele. Ziqhenye ngawe - yinto enkulu le oyifinyelele!", "type": "template", "note": "" }, { - "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", - "text": "Bekungekho umuntu omdala othembekile obenganikeza u-@global.w_safe_teen_girl_1 iseluleko", + "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", + "text": "Kuhle kakhulu ukuthi unathi kulolu hambo lokuba umzali! \n\nQedela i-@local.workshop_data.in_text_title futhi ufunde indlela engcono kakhulu yokusabela lapho ingane yakho esebusheni bayo ikudinga kakhulu.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "All those things are true!", - "text": "Zonke lezi zinto ziyiqiniso!", + "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", + "text": "Asazi ukuthi inhlekelele ingase yenzeke nini, kodwa SINGAZI lungiselela!\n\nQala umhlangano wokufundisana olandelayo ukuze uhlole ukuthi ungakwenza kanjani lokhu nengane yakho esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "Let's look at another example of a dangerous situation together.", - "text": "Ake sibheke esinye isibonelo sesimo esiyingozi ndawonye.", + "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", + "text": "Kusasa umhlangano wokufundisana wokugcina @global.parent_app ukukulindile. \n\nZama qedela @local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ngaleyo ndlela, ungaqedela amakhono okuba umzali futhi unqume lokho ozokwenza ngokulandelayo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", - "text": "@global.w_safe_teen_girl_1: “Umngane wami ubelokhu ekhuluma nomunye umfana olingana nathi ku-inthanethi... Uzomthumelela izithombe zakhe. Ingabe lokhu kungcono ngoba ulingana nathi?”", + "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", + "text": "Wenze kahle waqeda @local.workshop_data.in_text_title. Kusasa, ungangena umhlangano wokufundisana wakho kokugcina ukuze uhlole uhambo lwakho @global.parent_app nalokho ongakwenza ngokulandelayo!", "type": "template", - "note": "The string @global.w_safe_teen_girl_1 should not be translated." + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", - "text": "@global.w_safe_female_caregiver: “Uwungane omuhle ngoba ukhathazekile ngaye. Ukuthumela izithombe zakhe zobulili nakho kuyingozi.”", + "SourceText": "Yes, @global.w_crisis_female_caregiver actually used all those skills – and so can you!", + "text": "Yebo, @global.w_crisis_female_caregiver uwasebenzise wonke amakhono – nawe ungenza kanjalo!", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", - "text": "@global.w_safe_female_caregiver: “Ngezinye izikhathi abantu abasho lokho abayikho ngempela ku-inthanethi - angase athi ulingana nani uthole ukuthi uyindoda eneminyaka engu- 50. Noma uma behlukana, angathumela lezo zithombe kuwo wonke umuntu lokho kungenza umngane wakho azizwe kabi.”", + "SourceText": "All these skills can help in a crisis.", + "text": "Wonke lamakhono angasiza lapho kunenkinga.", "type": "template", - "note": "The string @global.w_safe_female_caregiver should not be translated." + "note": "" }, { - "SourceText": "Let's talk about our teens' online safety.", - "text": "Ake sikhulume ngokuphepha kwezingane zethu ku-inthanethi.", + "SourceText": "Crisis can happen to anyone. \n\nLet's see what happened with @global.w_crisis_teen_girl_1 and @global.w_crisis_female_caregiver:", + "text": "Inkinga ingavelela noma ubani. \n\nAke sibone ukuthi yini eyenzeke ku @global.w_crisis_teen_girl_1 no @global.w_crisis_female_caregiver wakhe:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "What are some of the online risks for teens these days?", - "text": "Yiziphi ezinye izingozi izingane zethu ezingabhekana nazo ku-inthanethi kulezi zinsuku?", + "SourceText": "@global.w_crisis_female_caregiver: \"Shame my dear, you look really upset, do you want to tell me what happened?\"", + "text": "@global.w_crisis_female_caregiver: “Bandla sthandwa sami, ubonakala uthukuthele ngempela, ungathanda ukungitshela ukuthi kwenzekeni?”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "* Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili \n* Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe\n* Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale\n* Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise\n* Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s my Uncle, he… he… he touched me.\" \n\n@global.w_crisis_female_caregiver (thinking): \"Take a deep breath... What does my child need? She needs me to be calm and listen\" \n\n@global.w_crisis_female_caregiver: \"Come and sit down next to me. Take your time, I’m listening.\"", + "text": "@global.w_crisis_teen_girl_1: “Umalume, u... u... ubengithinta.” \n\n@global.w_crisis_female_caregiver (uyacabanga): “Donsa umoya kakhulu... Idingani ingane yami? Idinga ukuthi ngehlise umoya bese ngiyalalela” \n\n@global.w_crisis_female_caregiver: “Woza uzohlala la eduze kwami. Thatha isikhathi, ngikulalele.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Let's think about our teens' online safety.", - "text": "Ake sicabange ngokuphepha kwezingane zethu ku-inthanethi.", + "SourceText": "@global.w_crisis_teen_girl_1: \"It’s true, he… he… made me do it! He made me have sex with him! I didn’t want to, I swear, and I even said NO, but he told me I would be in trouble.\"\n\n@global.w_crisis_female_caregiver: \"Thank you for sharing this with me. You are not in trouble. This is not your fault.\"", + "text": "@global.w_crisis_teen_girl_1: “Ngiqinisile, u... u... ungenze ngakwenza! Ungenze ngaya ocansini naye! Bengingafuni, ngiyafunga, ngize ngasho nokuthi CHA, kodwa wathi ngizoba senkingeni.”\n\n@global.w_crisis_female_caregiver: “Ngiyabonga ngokungitshela lokhu. Awukho enkingeni. Lokhu akulona iphutha lakho.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "What is the biggest online risk for teens these days?", - "text": "Iyiphi ingozi enkulu yabantu abasha ku-inthanethi kulezi zinsuku?", + "SourceText": "@global.w_crisis_teen_girl_1: \"Yesterday when you went to see @global.w_crisis_adult_friend. He just came and that’s when it happened.\"\n\n@global.w_crisis_female_caregiver: \"It’s okay, I believe you my child. This is a big thing and we will find a way to get the help we need. Where could we go for help?\"\n\n@global.w_crisis_teen_girl_1: \"My school?\"", + "text": "@global.w_crisis_teen_girl_1: “Izolo ngesikhathi uhambile uyobona u@global.w_crisis_adult_friend. Uvele wafika kungaleso sikhathi okwenzeke ngaso.”\n\n@global.w_crisis_female_caregiver: “Kulungile, ngiyakukholwa ngane yami. Yinto enkulu lena futhi sizoyithola indlela yokuthola usizo esiludingayo. Singaya kuphi ukuze sithole usizo?\n\n@global.w_crisis_teen_girl_1: “Esikoleni sami?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_adult_friend\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", - "text": "Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili", + "SourceText": "@global.w_crisis_female_caregiver: \"Ah I know, let’s go to the clinic. They will know what we can do to help you. Does that sound okay to you?\"\n\n@global.w_crisis_teen_girl_1: \"Yes… Okay… But will you come with me?\"", + "text": "@global.w_crisis_female_caregiver: “Ah ngiyazi, ake sihambe siye emtholampilo. Bazokwazi ukuthi yini okumelwe siyenze ukuze sikusize. Ingabe lokhu kuzwakala kukahle kuwe?”\n\n@global.w_crisis_teen_girl_1: “Yebo... Kulungile... Kodwa ngicela ukuhamba nawe?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", - "text": "Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe", + "SourceText": "@global.w_crisis_female_caregiver: \"Of course I will. And @global.w_crisis_teen_girl_1? Remember this is not your fault. I love you. You are a good person. We will get through this.\"", + "text": "@global.w_crisis_female_caregiver: “Nakanjani ngizokwenza . Bese @global.w_crisis_teen_girl_1? Khumbula ukuthi lokhu akulona iphutha lakho.” Ngiyakuthanda. Ungumuntu okahle. Sizodlula kulokhu.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_female_caregiver\n@global.w_crisis_teen_girl_1" }, { - "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", - "text": "Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale", + "SourceText": "Another problem that many parents are worried about is violence and crime. Let’s look at an example together.", + "text": "Enye inkinga abazali abakhathazeke ngayo udlame nobugebengu. Ake sibheke isibonelo ndawonye.", "type": "template", "note": "" }, { - "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", - "text": "Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise", + "SourceText": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, you look worried since yesterday. What is wrong?\"", + "text": "@global.w_crisis_male_caregiver_1: \"@global.w_crisis_teen_boy_1, ubukela ukhathazekile kusukela izolo. Ingabe kukhona okungalungile?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", - "text": "Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", + "SourceText": "@global.w_crisis_teen_boy_1: \"Yesterday, my friends and I went to a soccer match. Some guys who were drunk started a fight with my friend.\"\n\n@global.w_crisis_male_caregiver_1: \"Continue, I am listening. I hope you did not fight?\"", + "text": "@global.w_crisis_teen_boy_1: “Izolo, mina nabangane bami sihambe sayobuka umdlalo webhola lezinyawo. Abanye abafana ababedakiwe baqala ukulwa nomngane wami.\" \n\n@global.w_crisis_male_caregiver_1: “Qhubeka, ngilalele. Ngithemba ukuthi awuzange ulwe?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", - "text": "Ukuze sigcine abantwana bethu bephephile, kumele siqonde izimo eziyingozi abangangena kuzo!\n\nAke senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga:\n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esingawasebenzisa ku-inthanethi\n\nAke senze la mabalazwe siyiqembu njengamanje. \n\nUzokwenza okufanayo nengane yakho njengomsebenzi wasekhaya waleli viki.", + "SourceText": "@global.w_crisis_teen_boy_1: \"I didn’t want to, but I couldn’t just stand there and let them beat up my friend, so…\"\n\n@global.w_crisis_male_caregiver_1: \"So, did you fight in order to help defend your friend?\"", + "text": "@global.w_crisis_teen_boy_1: “Bengingafuni, kodwa bengingeke ngime ngibukele beshaya umngane wami, ngakho-ke...”\n\n@global.w_crisis_male_caregiver_1: “Ngakho, ulwile ukuze uvikele umngane wakho?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Xoxani ndawonye:\n\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho\n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile ezinganeni zakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nomntwana wakho eningayenza ukuze nigcine umntwana wakho ephephile?", + "SourceText": "@global.w_crisis_teen_boy_1: “Everyone was fighting. I saw someone lying on the field in a pool of blood. He looked… dead.\"", + "text": "@global.w_crisis_teen_boy_1: “Wonke umuntu ubelwa. Ngibone umuntu elele phansi kwidamu legazi. Ubebonakala... efile.”", "type": "template", - "note": "" + "note": "The string @global.w_crisis_teen_boy_1 should not be translated." }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n \n* Ningaluthola kuphi usizo nokwesekwa uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", + "SourceText": "@global.w_crisis_male_caregiver_1: \"I am glad you are telling me about this, @global.w_crisis_teen_boy_1. Let’s sit down together now and discuss whether we should involve the police or someone else to help.\"", + "text": "@global.w_crisis_male_caregiver_1: “Ngiyajabula ukuthi ungitshele ngalokhu, @global.w_crisis_teen_boy_1. Ake sihlale phansi manje sixoxe ngokuthi ingabe kuyadingeka ukuthi sibandakanye amaphoyisa noma omunye umuntu ukuba asize.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_teen_boy_1" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncomanani ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukube awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo kuphephe?", + "SourceText": "@global.w_crisis_teen_boy_1: \"Thank you, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: \"We will get through this. Remember, we will support you as a family.\"", + "text": "@global.w_crisis_teen_boy_1: “Ngiyabonga, @global.w_crisis_male_caregiver_1\"\n\n@global.w_crisis_male_caregiver_1: “Sizodlula kulokhu. Khumbula, sizokweseka njengomndeni.”", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1\n@global.w_crisis_male_caregiver_1" + }, + { + "SourceText": "Every small thing you do matters. We hope you are proud of yourself too.", + "text": "Zonke izinto ezincane ozenzayo zibalulekile. Sethemba ukuthi nawe uyaziqhenya ngawe.", "type": "template", "note": "" }, { - "SourceText": "Safety Plan", - "text": "Uhlelo Lokuphepha", + "SourceText": "* Story & discussion\n* Story & discussion\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Indatshana kanye nengxoxo\n* Indatshana kanye nengxoxo\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", - "text": "Ukuze sigcine abantwana bethu bephephile, kumelwe siqonde izimo eziyingozi abangangena kuzo!", + "SourceText": "* Story & reflection\n* Story & reflection\n* Tools: How to deal with crisis\nBREATHE - LISTEN - THINK\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nokubuyekeza indaba\n* Indatshana kanye nokubuyekeza indaba\n* Amathuluzi: Indlela yokubhekana nezinkinga\nPHEFUMULA - LALELA - CABANGA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma nihlela noma nigcina uhlelo lokuphepha, chofoza u-@global.parent_point bese nibungaza impumelelo yenu!", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_girl_1 and her @global.w_crisis_female_caregiver! This can happen to boys and girls.", + "text": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_girl_1 naku @global.w_crisis_female_caregiver! Lokhu kungenzeka kubafana nakumantombazane.", "type": "template", - "note": "The string @global.parent_point should not be translated." + "note": "The following strings should not be translated:\n@global.w_crisis_teen_girl_1\n@global.w_crisis_female_caregiver" }, { - "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", - "text": "Ake senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga: \n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esiwasebenzisa ku-inthanethi \n\nUzokwenza okufanayo nomntwana wakho njengomsebenzi wasekhaya waleli viki - uma umntwana wakho ekhona njengamanje lapha, ningakwenza ndawonye lokhu njengamanje!", + "SourceText": "What skills did @global.w_crisis_female_caregiver use?", + "text": "Imaphi amakhono u @global.w_crisis_female_caregiver awasebenzisile?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_female_caregiver should not be translated." }, { - "SourceText": "My family can join in now!", - "text": "Umndeni wami ungahlanganyela njengamanje!", + "SourceText": "This was such a difficult situation for @global.w_crisis_teen_boy_1 and his @global.w_crisis_male_caregiver_1!", + "text": "Lesi bekuyisimo esinzima kakhulu ku@global.w_crisis_teen_boy_1 naku @global.w_crisis_male_caregiver_1!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_crisis_teen_boy_1\n@global.w_crisis_male_caregiver_1" }, { - "SourceText": "Let me try it out by myself", - "text": "Ake ngizizamele ngokwami", + "SourceText": "What skills did @global.w_crisis_male_caregiver_1 use?", + "text": "Imaphi amakhono u @global.w_crisis_male_caregiver_1 awasebenzisile?", "type": "template", - "note": "" + "note": "The string @global.w_crisis_male_caregiver_1 should not be translated." }, { - "SourceText": "Step 1: What are important places in your community?", - "text": "Isinyathelo 1: Yiziphi izindawo ezibalulekile emphakathini wakho?", + "SourceText": "Crisis can make us feel angry or helpless. But this is when our teens really need us to breathe, listen and think.", + "text": "Inkinga ingasenza sizizwe sicasukile noma singenalusizo. Kodwa kungaleso sikhathi lapho abantwana bethu bedinga siphefumule, silalele futhi sicabange.", "type": "template", "note": "" }, { - "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", - "text": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba ibalazwe lomphakathi wengane yakho, libe nezithombe zazo zonke izindawo eziyinhloko njengemigwaqo, indlu yakho, isikole, izitolo, izindawo ezivakashelwa ingane yakho.", + "SourceText": "BREATHE", + "text": "PHEFUMULA", "type": "template", "note": "" }, { - "SourceText": "Step 2: Which places are safe and unsafe?", - "text": "Isinyathelo 2: Yiziphi izindawo eziphephile nezingaphephanga?", + "SourceText": "Stay calm. Ask yourself ‘what does my teen need right now’", + "text": "Hlala uzolile. Zibuze ‘yini edingwa ingane yami njengamanje’", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "Xoxani ndawonye:\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", + "SourceText": "LISTEN", + "text": "LALELA", "type": "template", "note": "" }, { - "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", - "text": "* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", + "SourceText": "Tell them you are there for them and love them.", + "text": "Batshele ukuba ukhonela bona futhi uyabathanda.", "type": "template", "note": "" }, { - "SourceText": "Step 3: Where can you get support?", - "text": "Isinyathelo 3: Kukuphi lapho ungathola khona ukusekelwa?", + "SourceText": "THINK", + "text": "CABANGA", "type": "template", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", - "text": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha. \n\nNgezansi ezinye izindawo ezingaba usizo", + "SourceText": "Talk with your teen. What might help the situation? You might need to make immediate plans now, and then long-term plans later.", + "text": "Khuluma nengane yakho. Yini engasiza kulesi simo? Kungase kudingeke wenze izinhlelo ezisheshayo manje, bese wenza izinhlelo zesikhathi esizayo kamuva.", "type": "template", "note": "" }, { - "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", - "text": "Ngezinye izikhathi zingazithola sisenkingeni.\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", + "SourceText": "You can be proud of yourself for exploring ways to get help!", + "text": "Ungaziqhenya ngokuthola izindlela zokuthola usizo!", "type": "template", "note": "" }, { - "SourceText": "Step 4: What are risky places online and how can you make them safer?", - "text": "Isinyathelo 4: Yiziphi izindawo eziyingozi ku-inthanethi futhi ungenza kanjani ukuthi ziphephe?", + "SourceText": "How are you feeling today?", + "text": "Uzizwa kanjani namuhla?", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncoma ingane yakho ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukuthi awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", + "SourceText": "Great that today is going well! What is one thing that has gone well today? Remember to praise yourself for it.", + "text": "Kuhle ukuthi kuhamba kahle namuhla! Iyiphi into eyodwa ehambe kahle namuhla? Khumbula ukuzincoma ngayo.", "type": "template", "note": "" }, { - "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", - "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Qaphela ukuthi bawasebenzisa kahle la mawebusayithi! \n* Cabanga ngokuthi yimaphi okungenzeka awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", + "SourceText": "Sorry to hear you are feeling difficult feelings today. Well done for recognising those emotions, and trying to be calm and kind to yourself. You are setting a great example for your family.", + "text": "Uxolo ukuzwa ukuthi awuzizwa kahle namuhla. Wenze kahle ngokuthi uyiqaphele leyo mizwa, nokuzama ukwehlisa umoya nokuba nomusa kuwe. Ubekela umndeni wakho isibonelo esihle.", "type": "template", "note": "" }, { - "SourceText": "MAPS", - "text": "AMABALAZWE", + "SourceText": "This week's home practice is to give your teen positive instructions.\n\nRemember – GET REAL, GET POSITIVE, GET CLEAR = GET EXACTLY WHAT YOU WANT (as much as is possible with a teenager!)", + "text": "Ongakwenza ekhaya kuleli viki ukuthi unikeze ingane yakho umyalelo omuhle.\n\nKhumbula - IBA NEQINISO, KHULUMA IZINTO EZAKHAYO, CACISA = THOLA LOKHO OKUFUNAYO (ngendlela okungenzeka ngayo kosemusha!)", "type": "template", "note": "" }, { - "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", - "text": "Yenza AMABALAZWE nomntwana wakho ngezindawo eziphephile nezindawo ezingaphephanga emphakathini wakho naku-inthanethi. Xoxa naye ngokuthi ingayigcina kanjani imininingwane, izithombe namavidiyo akhe efihlekile ku-inthanethi. Xoxa nayo ngokuthi kwenzeka kanjani ukuthi uma okuthile kufakwa ku-inthanethi kuzohlala lapho unomphela. Kungenzeka iyasazi isibonelo salokho ngabangane bayo.", + "SourceText": "Did you have any challenges?", + "text": "Ingabe zibe khona izinselele obhekene nazo?", "type": "template", "note": "" }, { - "SourceText": "RULES", - "text": "IMITHETHO", + "SourceText": "What challenge did you have?", + "text": "Yiziphi izinselele obe nazo?", "type": "template", "note": "" }, { - "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", - "text": "Beka IMITHETHO nentsha yakho mayelana nokuphepha uma isebenzisa ama-app namawebhuyasithi ewathandayo. \n\nKhumbula indaba Yokuphepha ku-Inthanethi? Sibone futhi lapha.", + "SourceText": "My teenager did not want to follow the instruction.", + "text": "Ingane yami esebusheni bayo ayifunanga ukulandela iziqondiso.", "type": "template", "note": "" }, { - "SourceText": "Online Safety Story", - "text": "Indaba Yokuphepha Ku-inthanethi", + "SourceText": "I did not find time to spend one-on-one time with my teen.", + "text": "Angisitholanga isikhathi engingasichitha nengane yami esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "AMNESTY", - "text": "USHWELE", + "SourceText": "I gave a negative instead of a positive instruction.", + "text": "Nginikeze isiqondiso esingesihle esikhundleni sokunikeza esihle.", "type": "template", "note": "" }, { - "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", - "text": "Yenzani isivumelwano sikaSHWELE. Uma kwenzeka okuthile okubathukuthelisayo, okubenza bazizwe bangakhululekile noma bethuke, bangakhuluma nawe ngakho futhi angeke ucasuke noma ubajezise, ngisho noma kuthiwa bebenza okuthile okungalungile.\n\nKhumbula udaba Lokuphepha Kukashwele? Lubone futhi lapha.", + "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", + "text": "Ngiyithethisile ingane yams esebusheni bayo lapho yenza into engalungile, kunokuyinikeza isiqondiso esifanele salokho ebekufanele ikwenze.", "type": "template", "note": "" }, { - "SourceText": "Safety Amnesty Story", - "text": "Indaba Kashwele Wezokuphepha", + "SourceText": "Top @local.number_of_challenges challenges other parents experience:", + "text": "Okuphezulu @local.number_of_challenges inselela abanye abazali abahlangabezana nakho:", "type": "template", - "note": "" + "note": "The string @local.number_of_challenges should not be translated." }, { - "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", - "text": "Ukuba umzali kwezobuchwepheshe kuyafana nokuba umzali ekuphileni okujwayelekile. Uthathe ISINYATHELO esikhulu sokugcina umntwana wakho ephephile emphakathini KANYE naku-inthanethi. Kuhle lokho!", + "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", + "text": "Ngiyazi; izingane zethu zidinga isikhathi ukuze zifunde ukulandela iziqondiso. Yiba nesineke, uphinde uzame, ukhumbule ukuzincoma izingane njalo lapho zilandela isiqondiso!", "type": "template", "note": "" }, { - "SourceText": "Resources to help in the community", - "text": "Izinsiza zokusiza emphakathini", + "SourceText": "Do you want to try one of the following things?", + "text": "Ingabe ufuna ukuzama okunye kulokhu okulandelayo?", "type": "template", "note": "" }, { - "SourceText": "Online Safety Resources", - "text": "Izinsiza Zokuphepha Ku-inthanethi", + "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", + "text": "Cabanga ngesikhathi usuku nosuku engingabamba ngalo imizuzu emihlanu noma isikhathi esithe xaxa.", "type": "template", "note": "" }, { - "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephile:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela uhlelo lokuphepha. \n\nInto ebaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - imvamisa izingane zethu zazi okuningi kunathi ngokuthi ikuphi lapho kuphephe khona nalapho kungaphephanga khona!", + "SourceText": "Find a chore that we could do together in a fun way.", + "text": "Thola umsebenzi wasendlini esingawenza ndawonye ngendlela emnandi.", "type": "template", "note": "" }, { - "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", - "text": "Uma ningakakwenzi nobabili okwamanje lokhu, yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephanga:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela loluhlelo lokuphepha. \n\nOkubaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - Kuvamile abantwana bethu bazi okuningi kunathi ngokuthi iziphi izindawo eziphephile nezingaphephile!", + "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", + "text": "Cela ingane yami esebusheni bayo noma omunye umuntu ukuthi angisize ngomsebenzi othile ukuze ngibe nesikhathi esongeziwe esikhululekile.", "type": "template", "note": "" }, { - "SourceText": "Safety Plan Activity", - "text": "Umsebenzi Wehlelo Lokuphepha", + "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", + "text": "Kuhle kakhulu! Ngisho nokuchitha imizuzu emihlanu kwenza umehluko omkhulu, futhi uma ukwenza ngesikhathi esifanayo nsuku zonke (njengasesidlweni sasekuseni noma ngaphambi kokulala), kuba lula ukukwenza njalo!", "type": "template", "note": "" }, { - "SourceText": "Fantastic! We are proud of you for all you have done over the past weeks.", - "text": "Kuhle! Siyaziqhenya ngawe ngakho konke okwenzile emasontweni adlule.", + "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", + "text": "Kuhle! Ngaleyo ndlela uyakwazi ukwenza umsebenzi wakho uwuqede uphinde ube nesikhathi esimnandi ndawonye nengane yakho esebusheni bayo!", "type": "template", "note": "" }, { - "SourceText": "We’re sorry it’s a difficult day. We are proud of you for all you have done over the past weeks.", - "text": "Siyaxolisa ngokuthi usuku lwakho lunzima. Siyaziqhenya ngawe ngakho konke okwenziwe emasontweni adlule.", + "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", + "text": "Kuhle kakhulu! Ngokwaba imisebenzi, uzoba nesikhathi esiningi sokwenza into emnandi nengane yakho esebusheni bayo– kubalulekile kakhulu!", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future parenting support.", - "text": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali.", + "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", + "text": "Yebo, kuthatha isikhathi ukujwayela ukunikeza iziqondiso ezinhle – kuzosiza ngempela ukuphinde uzame! Cabanga ngendlela yokuziphatha ongathanda ukuyibona kakhulu enganeni yakho esebusheni bayo bese ucabanga ngezindlela ezinhle zokunikeza leso siqondiso!", "type": "template", "note": "" }, { - "SourceText": "CONGRATULATIONS! You have done it! You have built 11 important parenting skills. \n\nThis is a huge achievement. It shows such care for your family. \n\nLet’s celebrate you, and plan your future @global.parent_app support.", - "text": "SIYAKUHALALISELA! Uphumelele! Wakhe amakhono abalulekile okuba umzali angu-11. \n\nLena yimpumelelo enkulu. Ibonisa indlela owukhathalela ngayo umndeni wakho. \n\nMasikuhalalisele futhi sihlele ukukweseka kwesikhathi esizayo njengomzali nge-@global.parent_app.", + "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", + "text": "Kunzima ukunikeza iziqondiso uma sisacasukile. Zama ukuthola isikhathi lapho usuzolile ukuze unikeze isiqondiso esihle enganeni yakho esebusheni bayo. \n\nKokulandelayo @global.weekly_workshop, sizoxoxa kabanzi ngendlela esingalawula ngayo imizwelo yethu!  Ungathola eminye imisebenzi eyongeziwe yokuphumula @data.parent_centre.relax_and_activities.location_text.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" }, { - "SourceText": "Greetings everyone.\n\nToday’s topic is celebration and next steps.\n\nIt has been amazing, it has been wonderful having you on this journey. Today we are celebrating our journey together. \n\nToday we are celebrating all the learnings that we have learned throughout.", - "text": "Sanibonani nonke.\n\nIsihloko sanamuhla ukuhalalisa kanye nezinyathelo ezilandelayo.\n\nBekumnandi, bekukuhle kakhulu ukuhamba nawe kulolu hambo. Namuhla sibungaza uhambo lwethu ndawonye. \n\nNamuhla sibungaza konke esikufundile kulo lonke uqeqesho.", + "SourceText": "Which of the tips helped you?", + "text": "Yimaphi amacebiso akusizile?", "type": "template", "note": "" }, { - "SourceText": "Today you will celebrate, look back and look ahead:", - "text": "Namuhlanje sizobungaza, sibheke emuva siphinde sibheke phambili:", + "SourceText": "GET REAL – Can your teen do what you are about to ask?", + "text": "BHEKANA NAMAQINISO – Ingabe ingane yakho esebusheni bayo ingakwenza yini lokho ozokucela?", "type": "template", "note": "" }, { - "SourceText": "* Reflection & discussion\n* Tools: How to support each other\nMEET - CALL - TEXT - SHARE\n* Planning support", - "text": "* Ukucabanga sijule kanye nengxoxo\n* Amacebiso: Indlela yokusekelana\nHLANGANANI - SHAYA UCINGO - THUMELA UMYALEZO - YABELANA\n* Ukuhlela ukweseka", + "SourceText": "GET POSITIVE – Use positive words and praise them!", + "text": "CABANGA NGEZINTO EZIKHUTHAZAYO – Sebenzisa amazwi akhuthazayo futhi uzincome izingane!", "type": "template", "note": "" }, { - "SourceText": "Today you celebrate and reflect on your experiences.", - "text": "Namuhlanje uyagubha futhi ucabangisise ngezinto oke wabhekana nazo.", + "SourceText": "GET CLEAR – Be clear and specific!", + "text": "CACA- Cacisa futhi ucacise!", "type": "template", "note": "" }, { - "SourceText": "You and your family have learnt so much. Let's think back and see what has changed.", - "text": "Wena nomndeni wakho kuningi enikufundile. Ake sicabange sibuyele emuva ukuze sibone ukuthi yini eshintshile.", + "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", + "text": "Kuhle kakhulu! Lapho sicela ingane yet esebusheni bayo ukuba yenze into ekwaziyo ukuyenza, kulula ukuba iphumelele.", "type": "template", "note": "" }, { - "SourceText": "Reflect", - "text": "Zindla", + "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", + "text": "Lapho sizincoma, izingane zethu zizizwa zikhuthazekile ukuba ziphinde zisilalele!", "type": "template", "note": "" }, { - "SourceText": "Listen and reflect", - "text": "Lalela futhi zindla", + "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", + "text": "Kuhle kakhulu! Lapho sicabanga kusengaphambili ngeziqondiso ezicacile esingazinika ingane yethu esebusheni bayo, iziqondiso zethu kuba lula ukuzilandela!", "type": "template", "note": "" }, { - "SourceText": "Read and reflect", - "text": "Funda futhi zindla", + "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", + "text": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "Close eyes and relax.\n\nThink of your family life before you started your journey with this app.\n \nThink back of skills you learned:\n* Self-care\n* One-on-one time\n* Praise\n* Positive instructions\n* Managing stress\n* Family budgeting\n* Rules\n* Calm consequences\n* Problem solving\n* Teen safety\n* Dealing with crisis\n\nReflect on the journey – how was it for you to:\n* Share ideas and experiences\n* Reflect on and learn from the stories\n* Practice skills with your teen\n\nDid anything change for you and your family?\n\nWhat do you need to continue to use skills?", - "text": "Vala amehlo uphumule.\n\nCabanga ngempilo yomndeni wakho ngaphambi kokuthi uqale uhambo lwakho ngalolu hlelo lokusebenza.\n \nCabanga ngamakhono owafundile:\n* Ukuzinakekela\n* Isikhathi sokuthi nibe nobabili ndawonye\n* Ukuncoma\n* Iziqondiso ezinhle\n* Ukulawula ukucindezeleka\n* Isabelomali somndeni\n* Imithetho\n* Imiphumela eyethulwa ngomoya ophansi\n* Ukuxazulula inkinga\n* Ukuphepha kwentsha\n* Ukubhekana nezinkinga\n\nCabangisisa/zindla ngohambo lwakho – bekunjani kuwe ukwenza lokhu:\n* Yabelanani ngamacebiso nichaze izinto eniye nabhekana nazo\n* Cabanga ufunde ezindabeni ezixoxwayo\n* Phrakthiza amakhono nengane yakho eyevile eminyakeni eyishumi nambili\n\nIngabe kukhona okuye kwashintsha kuwe nasemndenini wakho?\n\nYini oyidingayo ukuze uqhubeke usebenzisa la makhono?", + "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", + "text": "Siyabonga ngokwabelana nathi! Wenze kahle ngokuzama ukunikeza ingane yakho esebusheni bayo iziqondiso eziwusizo kanye nokwakha ubuhlobo obuhle nengane yakho. \n\nIngane yahoo esebusheni bayo ifanelwe ukunconywa NAWE ufanelwe ukunconywa!", "type": "template", "note": "" }, { - "SourceText": "Let's talk about what has changed.", - "text": "Ake sixoxe ngoshintsho olwenzekile.", + "SourceText": "Focus on the positive! \n\nTelling our teens what we DO want them to do works better than telling them to STOP doing something.\n\nYou will see the difference.", + "text": "Gxila kokuhle! \n\nUkutshela abantwana bethu ukuthi YINI esifuna bayenze kusebenza kangcono kunokubatshela ukuthi BAYEKE ukwenza okuthile.\n\nUzowubona umehluko.", "type": "template", "note": "" }, { - "SourceText": "Discuss together:\n* What has changed in your family?\n* What are you proud of that you have done?\n\nRemember to praise and encourage each other!", - "text": "Xoxani ndawonye:\n* Yini eshintshile emndenini wakho?\n* Yini oziqhenya ngayo oyenzile?\n\nKhumbulani ukuncomana nokukhuthazana!", + "SourceText": "Greetings, greetings everyone.\n\nToday our topic is positive instructions. \n\nIt is important to give positive instructions to our children, because when we give them positive instructions they know and understand what we are expecting them to do, and they do it the way we want them to do it. \n\nSo, at the end it keeps everyone happy.", + "text": "Sanibonani, sanibonani nonke.\n\nIsihloko sethu namuhla sikhuluma ngemiyalelo emihle. \n\nKubalulekile ukunika izingane zakho imiyalelo emihle, ngoba uma sibanikeza imiyalelo emihle bayazi futhi bayaqonda ukuthi yini esilindele ukuthi bayenze, futhi bayenza ngalendlela esifuna bayenze ngayo. \n\nEkugcineni, kwenza wonke umuntu ajabule.", "type": "template", "note": "" }, { - "SourceText": "MEET", - "text": "HLANGANANI", + "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", + "text": "Awukhethanga nokukodwa phakathi kwalokhu @data.habit.instruct_positively.title @global.parent_points. \n\nPhinda zame futhi namhlanje!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" }, { - "SourceText": "Keep meeting regularly to give each other parenting support.", - "text": "Qhubekani nihlangana njalo ukuze nisekelane njengabazali.", + "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", + "text": "Umakile @global.parent_point @data.habit.instruct_positively.title kanye kakade - ngakho wenza inqubekelaphambili enhle.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" }, { - "SourceText": "CALL", - "text": "SHAYA UCINGO", + "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", + "text": "Mawu khuluma ngawe khuluma ngomusa mayelana nomsebenzi omuhle owenzayo. Akekho umzali ongawenzi amaphutha futhi thina sicabanga ukuthi wenza kahle kakhulu!", "type": "template", "note": "" }, { - "SourceText": "Be ‘parenting buddies’ to call when you are upset or don’t know what to do.", - "text": "Yibani ‘abazali abangabangane’ abashayelana ucingo ucasukile noma ongazi ukuthi wenzeni.", + "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", + "text": "Iziqondiso ezinhle zikusiza ubone ukuziphatha okuhle nakakhulu! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole amanye amacebiso endlela lokhu okungasebenza ngayo emndenini wakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "TEXT", - "text": "THUMELA UMYALEZO", + "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", + "text": "Ingabe ingane yakho esebusheni bayo ihlezi ikulalela? Uma kungenjalo (njengakithi sonke), hlola umhlangano wokufundisana waleli sonto ukuze ufunde indlela yokunikeza iziqondiso ezinhle kungakusiza kakhulu lokho.", "type": "template", "note": "" }, { - "SourceText": "Text each other every week to share what you’ve done well.", - "text": "Thumelelani imiyalezo masonto onke ukuze nixoxelane ngenikwenzile.", + "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Njengenjwayelo, ungakwazi ukufinyelela kumhlangano wokufundisana omusha kusasa. Kuzosiza ukuqeda ishabhu yangaphambilini ngaphambi kwalokho.\n\nAbanye abazali basebenzisa i-app lapho besendleleni eya emsebenzini. Kungani ungayisebenzisi i-app lapho unemizuzu embalwa? \n\nSiyakubonga ngokusebenzisa i-@global.parent_app.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "SHARE", - "text": "YABELANA", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", + "text": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\nKusasa, ulindwe umhlangano wokufundisana omusha: uzobona umehluko omkhulu lapho wenza izinguquko ezincane!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Share @global.parent_app and help other families start their journey.", - "text": "Yabelana @global.parent_app futhi usize eminye imindeni iqale uhambo lwayo.", + "SourceText": "How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded?", + "text": "Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "End of programme check-in", - "text": "Ukwabelana ukuthi sizizwa kanjani ekupheleni kwesifundo", + "SourceText": "What could @global.w_instruct_female_caregiver have done differently?", + "text": "Yini @global.w_instruct_female_caregiver abangayenza ngokuhlukile?", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "You have been using @global.parent_app for the last months, but parenting a teen is long lasting! The next questions about your parenting experiences will help us assess your parenting.\n\nBe honest. Remember that millions of parents feel like you do, and we all deserve support. You are not alone!", - "text": "Ubulokhu usebenzisa i-@global.parent_app ezinyangeni ezidlule, kodwa ukukhulisa ingane esebusheni bayo kuthatha isikhathi eside! Imibuzo elandelayo emayelana nobhekana nakho njengomzali izosisiza sihlole indlela okhulisa ngayo ingane yakho.\n\nYiba qotho. Khumbula ukuthi izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa. Awuwedwa!", + "SourceText": "Said something nice first", + "text": "Ubengasho okuthile okuhle kuqala", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the end of programme check-in already. You can now skip this activity.", - "text": "Kubukeka ngathi usuqedile ukwabelana ngemizwa yakho. Usungadlulela komunye umsebenzi.", + "SourceText": "Spoken to @global.w_instruct_teen_girl in a calm voice", + "text": "Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile", "type": "template", "note": "" }, { - "SourceText": "Plan how you will support each other going forward. \n\nYou can use the ideas from other families, or make up your own!", - "text": "Hlelani ukuthi nizosekelana kanjani ukuya phambili. \n\nNingasebenzisa amacebiso avela kweminye imindeni noma nizakhele awenu!", + "SourceText": "Told @global.w_instruct_teen_girl what she wants her to do", + "text": "Ubengamtshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", "type": "template", "note": "" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance together and celebrate yourselves!", - "text": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilaleleni, nidanse ndawonye futhi nizihalalisele!", + "SourceText": "How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?", + "text": "U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver bazizwa kanjani njengamanje?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "We are so proud of you. You have shown strength, courage, and love for your family. Parents are amazing. You are amazing. \n\nThis song is for parents everywhere. Listen, dance and celebrate yourself!", - "text": "Siyaziqhenya ngawe. Uye wabonisa amandla, isibindi kanye nothando lomndeni wakho. Abazali bayamangalisa. Uyamangalisa. \n\nLe ngoma eyabazali yonke indawo. Yilalele, udanse futhi uzihalalisele!", + "SourceText": "Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Kungani ucabanga ukuthi isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", - "text": "Siyakwamukela! Siyajabula ukuba nawe lapha. Leli sonto limayelana NAWE. \n\nKulokhu kuqeqeshwa kokukwamukela: \n* Uzothola amathuluzi okuzinakekela \n* Uhlele ne-app ngokwezidingo zakho", + "SourceText": "@global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver", + "text": "@global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe", "type": "template", "note": "" }, { - "SourceText": "Wonderful, I am so happy things are going well.", - "text": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle.", + "SourceText": "@global.w_instruct_female_caregiver was able to stay calm", + "text": "@global.w_instruct_female_caregiver ukwazile ukuhlala ezolile", "type": "template", "note": "" }, { - "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", - "text": "Uxolo ngokuthi isimo sinzima njengamanje. Kuvamile ukubhekana nobunzima ngezinye izikhathi. Khumbula ukuthi awuwedwa!", + "SourceText": "@global.w_instruct_female_caregiver kept a positive attitude", + "text": "@global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", "type": "template", "note": "" }, { - "SourceText": "Why @data.workshop.w_self_care.short_title?", - "text": "Kungani @data.workshop.w_self_care.short_title?", + "SourceText": "Let’s see what happens if @global.w_instruct_female_caregiver tells @global.w_instruct_teen_girl \"DON'T\":", + "text": "Ake sibone ukuthi kwenzekani uma @global.w_instruct_female_caregiver ethi @global.w_instruct_teen_girl \"UNGENZI LOKHU\":", "type": "template", - "note": "The string @data.workshop.w_self_care.short_title should not be translated." + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", - "text": "Kuvamile ukuthi singazinakekeli ngokwanele. Kodwa kubalulekile ukuzinakekela, ikakhulu njengabazali! \n\nUkuhlisa ingcindezi nokuzitotosa kusiza thina KANYE nabantwana bethu.", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was practicing dance moves with her friend.\n\n@global.w_instruct_female_caregiver: “Don’t make such a mess while I am cleaning the house. You are in the way!”", + "text": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe.\n\n@global.w_instruct_female_caregiver: “Ungangcolisi njengoba ngisahlanza indlu. Uyangiphazamisa!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", - "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuzinakekela. \n\nKunezikhathi lapho sibhekana nezikhathi ezinzima, lapho sibhekana khona nezinkinga singazi ukuthi kumelwe senzeni. Kubalulekile ukuzinakekela ukufunda izindlela zokuthi sihlale sehlise umoya uma kwenzeka kuvela inkinga, inselelo noma isimo esithile. \n\nUma sehlise umoya sisuke sisesimweni esihle sokucabanga kahle nokuza nesixazululo esihle sokubhekana nanoma iyiphi inkinga.", + "SourceText": "@global.w_instruct_teen_girl: “But I need to practice for the school competition. You never let me do anything.”\n\n@global.w_instruct_female_caregiver: “Don’t you talk back to me!”", + "text": "@global.w_instruct_teen_girl: “Kodwa kumelwe ngizilungiselele umncintiswano wesikole. Awungivumeli ngenze lutho.”\n\n@global.w_instruct_female_caregiver: “Ungangiphenduli!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", - "text": "Namuhla sizokwenza imisebenzi engu-3 ezosisiza sizinakekele, futhi sizokubuza\nimibuzo embalwa ukuze siqiniseka ukuthi le-app ikulungele.", + "SourceText": "@global.w_instruct_teen_girl: “Arrg!! Why am I being yelled at all the time????”\n\n@global.w_instruct_female_caregiver to herself: “That child is always making trouble.”", + "text": "@global.w_instruct_teen_girl: “Arrg!! Kungani ngithethiswa ngaso sonke isikhathi????” \n\n@global.w_instruct_female_caregiver ekhuluma yedwa: “Le ngane ihlale idala izinkinga.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", - "text": "* Umsebenzi wokuphumula\n* Umsebenzi wokuqaphela\n* Umsebenzi wokuvuza\n* Amathuluzi: Indlela yokunezela ukuzinakekela\n* Hlela i-app ngendlela oyithandayo\n* Amacebiso alokho ongakwenza ekhaya", + "SourceText": "Thank you for thinking along! \n\nLet’s go back in time and see what happens if @global.w_instruct_female_caregiver gives a positive instruction:", + "text": "Siyabonga ngokuthi nicabanga kanye nathi! \n\nAke sibuyele emuva sibone ukuthi kuzokwenzekani uma @global.w_instruct_female_caregiver enikeza umyalelo omuhle:", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "Let's try it out and do a short relaxation activity together!", - "text": "Ake sikuzame futhi senze umsebenzi omfushane wokuphumula ndawonye!", + "SourceText": "@global.w_instruct_female_caregiver was cleaning the house while @global.w_instruct_teen_girl was with her friends practicing dance moves. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, it is nice to see you practicing your dance moves with your friend. Please take it outside so I can finish cleaning the house. Afterwards, you can show me your dance.\"\n\n@global.w_instruct_teen_girl: “Okay, @global.w_instruct_female_caregiver!”", + "text": "@global.w_instruct_female_caregiver ubehlanza indlu ngesikhathi @global.w_instruct_teen_girl eprakthiza ukudansa nomngane wakhe. \n\n@global.w_instruct_female_caregiver: “@global.w_instruct_teen_girl, kuyajabulisa ukukubona uprakthiza ukudansa nomngane wakho. Ngicela niyodansela ngaphandle ukuze ngiqedele ukuhlanza indlu. Ngemva kwalokho, ningangibonisa umdanso wenu.”\n\n@global.w_instruct_teen_girl: “Kulungile, @global.w_instruct_female_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver" }, { - "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", - "text": "Njengabazali, ngokuvamile asinaso isikhathi sokuzinakekela - kodwa lokhu kubalulekile! Ukwehlisa ingcindezi kuthina kusiza thina KANYE nabantwana bethu. \n\nAke sithathe isinyathelo sokuqala bese senza umsebenzi omfushane wokuphumula ndawonye.", + "SourceText": "@global.w_instruct_female_caregiver: \"Thank you for practicing outside while I finished cleaning, @global.w_instruct_teen_girl. Now I have some time to watch your dance.\"", + "text": "@global.w_instruct_female_caregiver: “Ngiyabonga ngokuthi nidansele ngaphandle njengoba bengiqedela ukuhlanza indlu, @global.w_instruct_teen_girl. Manje nginesikhathi sokuthi ngibukele umdanso wenu.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", - "text": "Ukunaka esikwenzayo kuzosisiza sigxile ezintweni ezakhayo. \n\nAke sithathe umzuzwana sizincome. Sizonibonisa ukuthi ningakwenza kanjani lokhu.", + "SourceText": "@global.w_instruct_female_caregiver: \"Wow, @global.w_instruct_teen_girl! You have such good dance moves!\"", + "text": "@global.w_instruct_female_caregiver: “Kwaze kwakuhle, @global.w_instruct_teen_girl! Udansa kahle ngempela!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_female_caregiver\n@global.w_instruct_teen_girl" }, { - "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Cabanga ngento eyodwa OYENZE kahle muva nje.\n\nTshela abanye: “Ngiyazincoma...”\n\nNakhu okukodwa ofanele ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", + "SourceText": "* Thought experiment\n* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Try it out!\n* Home practice suggestions", + "text": "* Ukuhlola umcabango\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Recognise", - "text": "Qaphela", + "SourceText": "* Thought experiment\n* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Tools: How to give positive instructions\nGET REAL - GET POSITIVE - GET CLEAR\n* Home practice suggestions", + "text": "* Ukuhlola umcabango\n* Indaba kanye nokubuyekeza - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza - okusebenzile!\n* Amathuluzi: Indlela yokunikeza imiyalelo emihle\nIBA NEQINISO - CABANGA IZINTO EZAKHAYO - CACISA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", - "text": "Thatha umzuzwana uzincome. \n\nNjengamanje sizokubonisa ukuthi ungakwenza kanjani.", + "SourceText": "Discuss together: \n\n* How do you think @global.w_instruct_teen_girl felt about the way @global.w_instruct_female_caregiver responded? \n* What could @global.w_instruct_female_caregiver have done differently?", + "text": "Xoxani ndawonye: \n\n* Ucabanga ukuthi @global.w_instruct_teen_girl uzizwe kanjani ngendlela @global.w_instruct_female_caregiver aphendule ngayo? \n* Yini @global.w_instruct_female_caregiver abengayenza ngokuhlukile?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Think of one thing YOU have done well recently.", - "text": "Cabanga ngento eyodwa OYENZE kahle muva nje.", + "SourceText": "@global.w_instruct_female_caregiver could have...", + "text": "@global.w_instruct_female_caregiver ubenga...", "type": "template", - "note": "" + "note": "The string @global.w_instruct_female_caregiver should not be translated." }, { - "SourceText": "\"Well done to me for...\"", - "text": "“Ngiyazincoma ngoku...”", + "SourceText": "* Said something nice first \n* Spoken to @global.w_instruct_teen_girl in a calm voice \n* Told @global.w_instruct_teen_girl what she wants her to do", + "text": "* Ubengasho okuthile okuhle kuqala \n* Ubengakhuluma no @global.w_instruct_teen_girl ngezwi elizolile \n* Ubengatshela @global.w_instruct_teen_girl ukuthi ufuna enzeni", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_teen_girl" }, { - "SourceText": "Showing love to my children", - "text": "Ngokubonisa izingane zami uthando", + "SourceText": "Let's discuss what happened this time.", + "text": "Ake sixoxe ngalokho okwenzeke manje.", "type": "template", "note": "" }, { - "SourceText": "Getting up even though I felt tired", - "text": "Ngokuvuka ngisho noma bengi zizwa ngikhathele", + "SourceText": "Discuss together: \n\n* How did @global.w_instruct_teen_girl and @global.w_instruct_female_caregiver feel now?\n* Why do you think the situation went better for @global.w_instruct_female_caregiver this time?", + "text": "Xoxani ndawonye: \n\n* U @global.w_instruct_teen_girl no @global.w_instruct_female_caregiver uzizwa kanjani njengamanje?\n* Ucabanga ukuthi kungani isimo sibe ngcono @global.w_instruct_female_caregiver kulokhu?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Smiling at someone", - "text": "Ngokumamatheka", + "SourceText": "Positive instructions can work with your teen too!", + "text": "Ukunikeza imiyalelo emihle kungasebenza nasenganeni yakho!", "type": "template", "note": "" }, { - "SourceText": "Making food to stay strong", - "text": "Ngokwenza ukudla ukuze sihlale sinamandla", + "SourceText": "It worked better this time because...", + "text": "Kusebenze kangcono manje ngoba...", "type": "template", "note": "" }, { - "SourceText": "Spending time with my children", - "text": "Ngokuchitha isikhathi nezingane zami", + "SourceText": "* @global.w_instruct_teen_girl felt respected and loved by her @global.w_instruct_female_caregiver\n* @global.w_instruct_female_caregiver was able to stay calm \n* @global.w_instruct_female_caregiver kept a positive attitude", + "text": "* @global.w_instruct_teen_girl uzizwe ehlonishwa futhi ethandwa u @global.w_instruct_female_caregiver wakhe\n* @global.w_instruct_female_caregiver ukwazile ukuhlala ezolile \n* @global.w_instruct_female_caregiver ulondoloze isimo sengqondo esihle", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_instruct_teen_girl\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver\n@global.w_instruct_female_caregiver" }, { - "SourceText": "Helping my children with schoolwork", - "text": "Ngokusiza izingane zami ngomsebenzi wazo wesikole", + "SourceText": "Let’s do a thought experiment!", + "text": "Ake senze ukuhlola okucatshangiwe!", "type": "template", "note": "" }, { - "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", - "text": "Kusho ngezwi elizwakalayo uma ungakwazi.\n\nNakhu okukodwa okufanelekayo ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", + "SourceText": "DO NOT THINK ABOUT AN ELEPHANT \n\nWhat are you thinking about?", + "text": "UNGACABANGI NGENDLOVU \n\nYini ocabanga ngayo?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Well done! Try to do this every day.", - "text": "Wenze kahle! Zama ukukwenza lokhu nsuku zonke.", + "SourceText": "You probably DID think about an elephant...\n\n‘Don’t do’ instructions make teens think about that thing. \n\nSometimes they don’t understand what we DID want from them. \n\nAlso they often don’t like being told not to do things (don’t we all?)", + "text": "Ngokuqinisekile UKE wacabanga ngendlovu...\n\n Unganiki imiyalelo eyenza abantwana bacabange ngalokho.\n\nNgezinye izikhathi abaqondi ukuthi YINI esifuna bayenze. \n\nKanti futhi ngokuvamile abathandi ukutshelwa ukuthi yini ekumele bangayenzi (cishe kunjalo nangathi sonke.)", "type": "template", "note": "" }, { - "SourceText": "Things to praise yourself for:", - "text": "Izinto ongazincoma ngazo:", + "SourceText": "NOW, THINK ABOUT A CHEETAH! \n\nWhat are you thinking about?", + "text": "MANJE, CABANGA NGENGULULE! \n\nYini ocabanga ngayo?", "type": "template", "note": "" }, { - "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", - "text": "* Ngokubonisa izingane zakho uthando \n* Ngokuvuka ngisho noma uzizwa ukhathele \n* Ngokumamatheka uma ubona umuntu \n* Ngokwenza ukudla ukuze nihlale ninamandla \n* Ngokuchitha isikhathi nezingane zakho \n* Ngokusiza izingane zakho ngomsebenzi wazo wesikole", + "SourceText": "That’s right! Positive, clear instructions help teens focus on what they should be doing. \n\nTeens will also feel more respected this way, and are more likely to listen.", + "text": "Kuhle! Imiyalelo emihle, imiyalelo ecacile isiza abantwana bagxile kulokho okumele bakwenze.\n\n Abantwana bazozizwa behlonishwa kakhulu futhi bangalalela.", "type": "template", "note": "" }, { - "SourceText": "Have a hot drink", - "text": "Thola isiphuzo esishisayo", + "SourceText": "GET REAL", + "text": "IBA NEQINISO", "type": "template", "note": "" }, { - "SourceText": "Call a friend or relative", - "text": "Shayela ucingo umngane noma isihlobo", + "SourceText": "Can your teen actually do what you are about to ask? It may be impossible for them to read quietly all day, but half an hour when you really need it is realistic.", + "text": "Ingabe ingane yakho ingakwenza ngempela yini lokho ozokucela? Kungase kungenzeki ukuthi ifundele phansi usuku lonke, kodwa isigamu sehora uma usidinga singalunga.", "type": "template", "note": "" }, { - "SourceText": "Have a relaxing bath", - "text": "Thatha isikhathi sakho ugeze", + "SourceText": "GET POSITIVE", + "text": "CABANGA IZINTO EZAKHAYO", "type": "template", "note": "" }, { - "SourceText": "Read", - "text": "Funda", + "SourceText": "Smile, look them in the eye, and use positive words. Praise them as soon as they start to do what you ask!", + "text": "Mamatheka, babuke emehlweni, usebenzise amazwi akhuthazayo. Bancome ngokushesha uma beqala ukwenza obacela ukuthi bakwenze!", "type": "template", "note": "" }, { - "SourceText": "Watch TV", - "text": "Buka i-TV", + "SourceText": "GET CLEAR", + "text": "CACISA", "type": "template", "note": "" }, { - "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", - "text": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali. Khulumisanani:\n\nYiziphi izinto ezincane ezikujabulisayo?", + "SourceText": "Often we know what we want in our head, but we don’t say it clearly enough. Say exactly what you want your teen to do. Try ‘please come home by 7pm’ instead of ‘come home in time’.", + "text": "Ngokuvamile siyakwazi esikufunayo emiqondweni yethu, kodwa asikusho kucace ngokwanele. Yisho ngokucacile ukuthi ufuna ingane yakho yenzeni. Zama ukuthi ‘ngicela ubuye ekhaya ngo-7pm’ kungokuthi ‘buya ekhaya ngesikhathi’.", "type": "template", "note": "" }, { - "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke.\n\nUngawasebenzisa ekhaya la makhono futhi uwathole noma nini ku @global.parent_centre yakho!", + "SourceText": "Let's practice giving REAL, POSITIVE and CLEAR instructions. Practice will help you be successful with your teen!", + "text": "Ake sizame ukunikeza imiyalelo EMIHLE, EYIQINISO neCACILE. Ukuprakthiza kuzokusiza wena uphumelele nengane yakho!", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Reward", - "text": "Umvuzo", + "SourceText": "Choose two people from your group:\n* One person pretends to be a teenager\n* The other pretends to be the teenager’s parent\n* “Parent”: Give your “teen” a positive instruction with encouragement and praise\n* “Teen”: Respond as you think a teen may respond to this \n\nDiscuss together how that went:\n* How did this make you feel as “parent” and as “teen”?\n* Could you do anything better?\n\nGive everyone a chance to be the “parent” and the “teen” if you can. Practice brings success!", + "text": "Khetha abantu ababili eqenjini lakho:\n* Omunye enze sengathi uyingane\n* Kuthi omunye enze sengathi ungumzali wengane \n* “Mzali: Nikeza “ingane yakho” umyalelo omuhle umkhuthaze futhi umncome \n* “Ngane”: Phendula ngendlela ocabanga ukuthi ingane ingaphendula ngayo kulokhu \n\nXoxani ndawonye ngokuthi kuhambe kanjani:\n* Kukwenze wazizwa kanjani “njengomzali” “nanjengengane yeyevile eminyakeni eyishumi nambili”?\n* Ingabe kukhona ongakwenza kangcono?\n\nNikela wonke umuntu ithuba lokuba “umzali” nokuba “ingane” uma kungenzeka. Ukuprakthiza kuveza imiphumela emihle!", "type": "template", "note": "" }, { - "SourceText": "We all deserve to treat ourselves well!", - "text": "Sonke siyakufanelekela ukuzitotosa!", + "SourceText": "Examples of positive instructions:", + "text": "Izibonelo zemiyalelo emihle:", "type": "template", "note": "" }, { - "SourceText": "What small thing makes you happy?", - "text": "Iyiphi into encane ekujabulisayo?", + "SourceText": "* I like your music. Could you turn it down during dinner so that we can talk? Thank you – I really appreciate it. \n* That’s great music. Who is the singer? Please turn the music off when you come in the house. You can play it in your room quietly if you want. Thank you!", + "text": "* Ngiyawuthanda umculo wakho. Ungakwazi yini ukuwunciphisa ngesikhathi sesidlo sakusihlwa ukuze sikwazi ukuxoxa? Ngiyabonga - ngiyakwazisa kakhulu lokho. \n * Umnandi umculo wakho. Ubani umculi wawo? Ngicela uwuvale umculo uma ungena endlini. Ungawudlalela phansi ekamelweni lakho uma uthanda. Ngiyabonga!", "type": "template", "note": "" }, { - "SourceText": "Nice! Taking care of yourself is an important parenting skill!", - "text": "Kuhle! Ukuzinakekela kuyikhono elibalulekile lokuba umzali!", + "SourceText": "Wonderful, I am so happy! Keep up the good work.", + "text": "Kuhle kakhulu, ngijabule kakhulu! Qhubeka nokwenza umsebenzi omuhle.", "type": "template", "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_1 noma ngabe yini oyijabulelayo.", + "SourceText": "Sorry that things are difficult. All families struggle. We are here to help!", + "text": "Ngiyaxolisa ngokuthi isimo sinzima. Isimo sinzima kuyoyonke imindeni. Silapha ukuba sisize!", "type": "template", - "note": "The string @local.name_1 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_2 noma ngabe yini oyijabulelayo.", + "SourceText": "Whatever went ‘wrong’ today, let it go and try again tomorrow. It’s okay!", + "text": "Noma ngabe yini engahambanga kahle namuhla, ungakhathazeki ngayo zama futhi kusasa. Kulungile!", "type": "template", - "note": "The string @local.name_2 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_3 noma ngabe yini oyijabulelayo.", + "SourceText": "Make a budget again - this time WITH your teen and family! \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Yenza isabelomali futhi - manje senze KANYE nengane yakho nomndeni wakho! \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", "type": "template", - "note": "The string @local.name_3 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_4 noma ngabe yini oyijabulelayo.", + "SourceText": "Make a budget with your teen and family. \n\nThis is an important and fun thing to do with your family - it takes about 30 minutes.\n\nMaking a budget together helps teens understand that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Yenza isabelomali nomntwana kanye nomndeni wakho. \n\nLena yinto ebalulekile nokumnandi ukuyenza nomndeni - kuthatha imizuzu engaba ngu-30.\n\nUkwenza isabelomali njengomndeni kusiza abantwana baqonde ukuthi ngezinye izikhathi sonke kudingeka senze izinqumo ezinzima - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sesisize izigidi zemindeni.", "type": "template", - "note": "The string @local.name_4 should not be translated." + "note": "" }, { - "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", - "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_5 noma ngabe yini oyijabulelayo.", + "SourceText": "Review your budget with your teen and family. This will remind everyone that we all need to make hard decisions sometimes - but that it helps us have enough money at the end of the month and realise our goals!\n\nBudgets have helped millions of families.", + "text": "Buyekeza isabelomali nomntwana kanye nomndeni wakho. Ukwenza kanjalo kuzokhumbuza wonke umuntu sidinga ukwenza izinqumo ezinzima ngezinye izikhathi - kodwa lokho kusisiza sibe nemali eyanele ekupheleni kwenyanga futhi sikwazi ukufinyelela imigomo yethu!\n\nIsabelomali sisize izigidi zemindeni.", "type": "template", - "note": "The string @local.name_5 should not be translated." + "note": "" }, { - "SourceText": "Things you can do to reward yourself:", - "text": "Izinto ongazenza ukuba uzivuze:", + "SourceText": "Steps to make a budget", + "text": "Izinyathelo zokwenza isabelomali", "type": "template", "note": "" }, { - "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", - "text": "* Thola isiphuzo esishisayo \n* Shayela ucingo umngane noma isihlobo \n* Thatha isikhathi sakho ugeze \n* Funda \n* Bukela i-TV", + "SourceText": "make a budget together with their family", + "text": "enza isabelomali ndawonye nomndeni wabo", "type": "template", "note": "" }, { - "SourceText": "RELAX", - "text": "PHUMULA", + "SourceText": "Did you have any challenges when making your budget together?", + "text": "Ingabe ube nezinselele lapho nenza isabelomali ndawonye?", "type": "template", "note": "" }, { - "SourceText": "Do a 30 second quick relaxation activity.", - "text": "Yenza umsebenzi wokuziphumuza osheshayo imizuzwana engu-30.", + "SourceText": "What whas difficult for you about making your budget together?", + "text": "Yini ebinzima kuwe ngokwenza isabelomali senu ndawonye?", "type": "template", "note": "" }, { - "SourceText": "RECOGNISE", - "text": "BONA", + "SourceText": "I did not want to tell my family how much I earn.", + "text": "Bengingafuni ukutshela umndeni wami ukuthi ngihola malini.", "type": "template", "note": "" }, { - "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", - "text": "Thatha isikhashana ucabange ngento eyodwa OYENZE kahle muva nje! Ngezwi elizwakalayo uma kungenzeka ithi “ngenze kahle u ...” ", + "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", + "text": "Akudingeki ukuba udalule inani eliqondile oliholayo; ungabanika isilinganiso. Ungathi, “Lapha ekhaya siba no-@global.currency@global.monthly_income_estimate njalo ngenyanga” kunokuthi uthi, “Ngihola @global.currency@global.monthly_income_precise”.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" }, { - "SourceText": "REWARD", - "text": "UMVUZO", + "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", + "text": "Lapho senza isabelomali, asikwazanga ukuvumelana ngokuthi yini okufanele ibe ngaphansi kwezidingo nokuthi yini okufanele ibe ngaphansi kokufunwayo.", "type": "template", "note": "" }, { - "SourceText": "Remember you deserve your quality time too! What makes you happy?", - "text": "Khumbula ukuthi nawe udinga ukuba nesikhathi sakho! Yini ekwenza ujabule?", + "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", + "text": "Lokho okufunwa abantu nalokho abakudingayo akufani ngezinye izikhathi. Ukukhuluma ngalokhu ndawonye kungasiza wena nengane yakho esebusheni bayo ukuba niqondane, nihloniphe ukungafani kwenu futhi nibheke nezindawo eningaxegisa kuzo.", "type": "template", "note": "" }, { - "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", - "text": "Manje njengoba sewakhe amakhono okuzinakekela, ake siqiniseke ukuthi @global.weekly_workshops ikulungele ngempela yini", + "SourceText": "I did not understand what to do.", + "text": "Bengingaqondi ukuthi ngenzeni.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", - "text": "Kubonakala sengathi usuqedile kakade ukuhlela. Ungaweqa manje lo msebenzi.", + "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", + "text": "Ngiyaxolisa ngokuzwa lokhu. Ngiyazi ukuthi kungaba nzima! Kungani singake siphinde sikuzame futhi? Ingane yakho esebusheni bayo noma amanye amalungu omndeni angangenelela akusize!", "type": "template", "note": "" }, { - "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", - "text": "Noma nini lapho ungakwazi, phumula, bona bese uyazivuza. \n\nZinakekele nsuku zonke. Ubalulekile!", + "SourceText": "My teen did not want to do the budgeting with me.", + "text": "Ingane yami bingafuni ukwenza isabelomali kanye nami.", "type": "template", "note": "" }, { - "SourceText": "Relax activity", - "text": "Umsebenzi wokuphumula", + "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", + "text": "Zama ukwenza isabelomali nabanye abantu abadala ekhaya lakho kuqala. Ingane yakho esebusheni bayo ingase ibe nentshisekelo kokwenzayo. \n\nUkwenza isabelomali kungase kuzwakale kuyinto ebucayi kodwa zama ukwenza lokhu kube mnandi – kwenze kube umdlalo eniwudlalayo lapho nichitha isikhathi ndawonye! Noma ungazama ukwenza ibhajethi ye-@global.w_money_grandma first. \n\nKhumbula ukubancoma alpha maseniqedile!", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Recognise activity", - "text": "Umsebenzi wokubona", + "SourceText": "Your goal was to make a family budget and savings plan.", + "text": "Umgomo wakho bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali.", "type": "template", "note": "" }, { - "SourceText": "Reward activity", - "text": "Umsebenzi wokuvuza", + "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", + "text": "Siyakubonga ngokwabelana ngalokho okwenzeke kuwe! Wenze kahle ngokucabanga ngendlela yokuhlela ezemali niyonge nonge nomndeni wakho. Lokhu kuzokusiza ngempela ukwazi ukufinyelele imigomo yomndeni wakho. \n\nNdawonye ningafinyelela kwizinto eziningi ezinhle!", "type": "template", "note": "" }, { - "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", - "text": "Ngaso sonke isikhathi uma uphumula, bona okuthile okwenze kahle noma uzivuze, chofa i-@global.parent_points ukuze ujabulele impumelelo yakho!", + "SourceText": "Many families are stressed about money, especially if teens keep asking for things! \n\nWhen we make a budget together, we can agree how to spend AND save to prevent stress and work towards our family’s goals.", + "text": "Imindeni eminingi ikhathazeke ngemali, ikakhulu uma abantwana bethu belokhu becela izinto! \n\nUma senza isabelomali ndawonye, singavumelana ukuthi siyisebenzisa kanjani imali NOKUTHI siyonge ukuze sigweme ukukhathazeka futhi sisebenzele ukufinyelela imigomo esizibekele yona njengomndeni.", "type": "template", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", - "text": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nSizokwenza eminye futhi imisebenzi yokuzinakekela uma uhlangana neqembu lakho okokuqala - nonke nifanelwe ukuzinakekela okwengeziwe!", + "SourceText": "Greetings, everyone. \n\nToday's topic is family budgeting. \n\nIt is important to create a budget, but it is even more important to create a budget involving the entire family. \n\nDoing it together helps increase the level of understanding of how you spend money as a family and how much you save for the family, and you can even come up with plans of how you can save as a family.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla ibhajethi yomndeni. \n\nKubalulekile ukwenza ibhajethi, kodwa okubaluleke nakakhulu ukwenza isabelomali esihlanganisa umndeni wonke. \n\nUkuyenza ndawonye kukhulisa izinga lokuqonda indlela imali esentshenziswa ngayo njengomndeni nokuthi malini ozoyongela umndeni wakho, ungenza nezinhlelo zokuthi nizoyonga kanjani imali njengomndeni.", "type": "template", "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips on how we can stay calm and in control when our teens are driving us crazy.", - "text": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app isonto lesihlanu 5.\n\numhlangano wokufundisana omusha kwendlela yokuba umzali ukulindile kanye namacebiso endlela yokuhlala uzolile futhi ulawula isimo lapho intsha yethu isiphathanisa ngekhanda.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together. You need:\n\n- Papers (or old newspaper or a cardboard box) and pens\n- Stones or beans or anything with lots of bits to represent money\n \nTake a minute to get these things before we start with the first step.", + "text": "Kunezinyathelo ezine zokwenza isabelomali somndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo. Udinga:\n\n- Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni\n- Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali\n \n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 5.\n\nA new parenting workshop awaits you with tips how we can stay calm and in control when our teens are driving us crazy.", - "text": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala @global.parent_app isonto lesihlanu 5.\n\numhlangano wokufundisana omusha kwendlela yokuba umzali ukulindile kanye namacebiso endlela yokuhlala uzolile futhi ukwazi ukulawula isimo lapho intsha yethu isiphatisa ikhanda.", + "SourceText": "A family budget can help @global.w_money_grandma - and YOU!", + "text": "Isabelomali somndeni singasiza @global.w_money_grandma - sisize NAWE!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", - "text": "Sino mhlangano wokufundisana kwakho omusha okhona okumayelana nokulawula intukuthelo nokucindezeleka. Kuzokusiza uzinakekele kangcono.", + "SourceText": "There are four steps for doing a family budget: \n\nStep 1: THINK\nStep 2: CHOOSE\nStep 3: BUILD\nStep 4: PLAN\n\nLet’s go through the steps together.", + "text": "Kunezinyathelo ezine zokwenza ibhajethi yomndeni: \n\nIsinyathelo 1: CABANGA\nIsinyathelo 2: KHETHA\nIsinyathelo 3: YAKHA\nIsinyathelo 4: HLELA\n\nAke sizihlole ndawonye lezi zinyathelo.", "type": "template", "note": "" }, { - "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", - "text": "Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile? Wenze kahle ngokubona ukuthi wena nabanye benizizwa kanjani namuhla! Khumbula, kusasa usuku olusha.", + "SourceText": "You need: \n* Papers (or old newspaper or a cardboard box) and pens \n* Stones or beans or anything with lots of bits to represent money \n\nTake a minute to get these things before we start with the first step.", + "text": "Udinga: \n* Amaphepha (noma iphephandaba elidala noma ikhadibhodi) kanye namapeni \n* Amatshe noma obhontshisi noma kungaba yinoma yini eyizingcezu ezizomela imali \n\n Thatha umzuzu uthole lezi zinto ngaphambi kokuthi uqale ngesinyathelo sokuqala.", "type": "template", "note": "" }, { - "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", - "text": "Sonke sizizwa singakhungathekile ngezinye izikhathi. Ukudonsa kakhulu umoya kuyasiza! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole imcebiso ewusizo ekubhekana nokucindezeleka.", + "SourceText": "* food \n* water & electricity \n* clothing \n* accounts \n* TV subscription \n* toiletries \n* salon \n* airtime \n* school fees \n* transport \n* insurance/policies \n* medication \n* entertainment/sports \n* rent \n* loans \n* church", + "text": "* ukudla \n* amanzi nogesi \n* izimpahla \n* ama-akhawunti \n* Izinhlelo ze-TV ezikhokhelwayo \n* izinto zokugeza \n* izinwele \n* i-airtime \n* izindleko zesikole \n* ezokuthutha \n* imishuwalensi/amapholisi \n* imithi \n* ezokuzijabulisa/ezemidlalo \n* imali yokuqasha \n* imali ebolekiwe \n* imali yesonto", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", - "text": "Abe kanjani amazinga akho okucindezeleka kuleli sonto? Zama ukudonsa umoya ngaphambi kokuphendula ingane yakho - kwenza umehluko omkhulu.", + "SourceText": "Think about what we spend money on each month.", + "text": "Cabanga ngokuthi siyisebenzisela ini imali inyanga nenyanga.", "type": "template", "note": "" }, { - "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", - "text": "Wenze kahle ngokudonsa umoya ngaphambi kokuphendula ingane yakho esebusheni bayo!! Ngaso sonke isikhathi uma uhlaba ikhefu, ukwazi ukulawula isimo kancono.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw pictures of all the things that you and your family spend money on each month. \n* Write next to each picture how much each thing costs each month. (There is no need to share the numbers if you don’t want to.)\n* Add up how much money you have to spend each month.", + "text": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba izithombe zazo zonke izinto wena nomndeni wakho enichitha imali kuzo ngenyanga. \n* Bhala eceleni kwesithombe ngasinye ukuthi into ngayinye ibiza malini inyanga ngayinye. (Akudingeki ubhale inani lemali uma ungafuni ukwenza njalo.)\n* Hlanganisa inani lemali enilisebenzisayo inyanga ngayinye.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", - "text": "Kusasa kukhona okusha @global.parent_app komhlangano wokufundisana okulindele. \n\nNgokuphothula i-@local.workshop_data.in_text_title kuqala, ubeka isisekelo esibaluleke ngempela: Uma uzizwa kahle, nomndeni wakho uzozizwa kahle!", + "SourceText": "Wonderful! You finished step 1! \n\nLet’s move on!", + "text": "Kuhle kakhulu! Usiqedile isinyathelo 1! \n\nAsiqhubeke!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", - "text": "Wenze kahle ngoqeda i-@local.workshop_data.in_text_title. Kusasa, ungangena kumhlangano wokufundisana omusha ukuze usizakale ngokuohumula futhi wakhe amakhono abalulekile!", + "SourceText": "Talk together about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Khulumisanani ngezidingo zenu nezinto enizifunayo \n\nOKUFUNAYO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Sawubona @field.user_name! Namhlanje sihalalisela ukuphela kwezinyanga ezimbili usebenzisa i @global.parent_app! \n\nWenza kahle kakhulu! Ukuqeqeshwa kwaleli sonto kuzokusiza wazi ukuthi kumele wenzeni lapho ingane yakho esebusheni bayo ingalandeli imithetho yasekhaya.", + "SourceText": "People often don’t see things in the same way. When we talk about our needs and wants, we understand each other better and can make good choices together on how to spend our money.\n\nLook at your lists of things you spend money on and discuss:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on as a family?", + "text": "Ngokuvamile abantu ababoni izinto ngendlela efanayo. Uma sikhuluma ngezinto esizidingayo kanye nesizifunayo, siqondana kancono futhi senze izinqumo ezinhle ezimayelana nokuthi sizoyisebenzisa kanjani imali yethu.\n\nBheka uhlu lwezinto osebenzisa imali kuzo bese niyaxoxa: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo njengomndeni?", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Today we are celebrating two months of using @global.parent_app! \n\nYou are doing great! This week’s workshop will help you know what to do when your teen is not following the household rules.", - "text": "Sawubona @field.user_name! Namhlanje sihalalisela ukuphela kwezinyanga ezimbili usebenzisa i @global.parent_app! \n\nWenza kahle kakhulu! Ukuqeqeshwa kwaleli sonto kuzokusiza wazi ukuthi kumele wenzeni lapho ingane yakho esebusheni bayo ingalandeli imithetho yasekhaya.", + "SourceText": "Think about your needs and wants\n\nWANT: Something you can live without\nNEED: Something you cannot live without", + "text": "Cabanga ngezidingo nezimfuno \n\nIZIMFUNO: Izinto ongaphila ngaphandle kwazo \nISIDINGO: Izinto ongeke uphile ngaphandle kwazo", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "It’s great that you’ve been using @global.parent_app. You’ve gained 6 parenting tools already! \n\nTake the next workshop to get another parenting tool!", - "text": "Kuhle ukuthi ubulokhu usebenzisa i @global.parent_app. Usuthole amathuluzi ayisithupha kakade okuba umzali! \n\nThatha lokhu kuqeqeshwa okulandelayo ukuze uthole amanye amathuluzi okuba umzali!", + "SourceText": "Look at your list of things you spend money on and choose:\n* Which are NEEDS that you can’t live without? Why?\n* Which are WANTS which are nice to have but not essential? Why? \n* Which things could you try to spend less money on?", + "text": "Bheka uhlu lwezinto osebenzisa imali kuzo bese uyakhetha: \n*Yiziphi EZIYISIDINGO esingeke sikwazi ukuphila ngaphandle kwazo? Kungani?\n* Yiziphi ESIZIFUNAYO okumnandi ukuba nazo kodwa ezingabalulekile? Kungani? \n* Yiziphi izinto eningazama ukusebenzisa imali encane kuzo?", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Complete the workshop and try to discuss with your teen to come up with one positive and one negative consequence of a behaviour together.", - "text": "Qedela umhlangano wokufundisana bese uzama ukuxoxa nengane yakho esebusheni bayo ukuze nibeke ndawonye umphumela owodwa omuhle kanye nomphumela owodwa ongemuhle wendlela yokuziphatha.", + "SourceText": "Make a budget!", + "text": "Yenza isabelomali!", "type": "template", "note": "" }, { - "SourceText": "Have you managed to come up with one positive and one negative consequence of a behaviour with your teen yet?", - "text": "Ingabe ukwazile ukuthola umphumela owodwa omuhle kanye nowodwa ongemuhle wokuziphatha kwengane yakho esebusheni bayo?", + "SourceText": "Make a budget as one big family!", + "text": "Yenzani isabelomali njengomndeni owodwa omkhulu!", "type": "template", "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Calm consequences really help your teen to follow rules well – give it a try before moving on!\n\nWell done for showing so much commitment to your family.", - "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Imiphumela eyethulwa ngomoya ophansi iyisiza ngempela ingane yakho esebusheni bayo ukuba iyilandele kahle imithetho – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokuzibophezela kangaka emndenini wakho.", + "SourceText": "* One person will volunteer to share his/her list (If no one volunteers you can make a new list together) \n* Take roles - some will be adults, some will be teens. \n* Decide what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.) \n* Decide together what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Umuntu oyedwa uzovolontiyela ukuveza olwakhe uhlu (uma engekho ofuna ukuvolontiya ningenza uhlu olusha ndawonye) \n* Thathani izindima - abanye bazoba abantu abadala, kuthi abanye babe ngabantwana. \n* Khetha ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.) \n* Yenza isinqumo ndawonye sokuthi malini enizoyisebenzisela ini, bese nibeka amatshe/okuthile kuleso sithombe. \n\nAniqinisekanga ngesinqumo senu? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn useful skills!", - "text": "Wenze kahle ngokuphothula i-@local.workshop_data.in_text_title. Kusasa uzothola isifundo esisha esizokusiza uphumule, ube nentokozo futhi ufunde amakhono amasha", + "SourceText": "Make a budget as a family!", + "text": "Yenzani isabelomali njengomndeni!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala isonto lakho lesithathu le @global.parent_app. \n\nUlindelwe umhlangano wokufundisana okusha! Ungaqagela yini isihloko salokhu kuqeqeshwa kulesi sithombe?", + "SourceText": "* Write down what your income is for the month.\n* Take some stones or beans or anything with lots of bits - this is your income for the month. \n(For example: If your income is @global.currency@local.monthly_income, and you have @local.number_of_beans beans, each bean is @global.currency@local.bean_value.)\n* Decide what you will spend on what, and put the stones/objects on that image. \n\nNot sure about your decisions? Having trouble deciding between \"needs\" and \"wants\"? That’s totally fine!", + "text": "* Bhala phansi ukuthi uzoba yimalini umholo wakho wenyanga.\n* Thathani amatshe noma ubhontshisi nanoma yini enezingcezu eziningi - lokhu kuzoba umholo wakho wenyanga. \n(Ngokwesibonelo: Uma umholo wakho ungu-@global.currency@local.monthly_income, kodwa unobhontshisi abangu-@local.number_of_beans, ubhontshisi owodwa uzoba ngu-@global.currency@local.bean_value.)\n* Yenza isinqumo ukuthi malini uzoyisebenzisela ini, bese ubeka amatshe/okuthile kuleso sithombe. \n\nAniqiniseki ngesinqumo sakho? Nikuthola kunzima ukunquma ukuthi yiziphi izinto “enizidingayo” kanye ”nenizifunayo”? Lokho akunankinga ngempela!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "The following strings should not be translated:\n@global.currency\n@local.monthly_income\n@local.number_of_beans\n@global.currency\n@local.bean_value" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting your third @global.parent_app week. \n\nA new workshop awaits you! Can you guess the topic of the workshop from this picture?", - "text": "Sawubona @field.group_name! Siyakuhalalisela ngokuqala isonto lakho lesithathu le @global.parent_app. \n\nUlindelwe umhlangano wokufundisana okusha! Ungaqagela yini isihloko salokhu kuqeqeshwa kulesi sithombe?", + "SourceText": "Plan how you can save money, so you can deal with emergencies and realise your family goals!", + "text": "Hlela ukuthi uzoyonga kanjani imali, ukuze ukwazi ukubhekana nezimo eziphuthumayo ezivelayo futhi ufinyelele imigomo yomndeni wakho!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", - "text": "Wenze kahle ngokusebenzisa i @global.parent_app! Khumbula ukuthi yizinto ezincane ezenza umehluko omkhulu.", + "SourceText": "If you can save even a tiny amount for the future or emergency - it can make a big difference over time. \n* Add a circle called “emergencies”.\n* Add a circle called “family goals”.\n* Now try to move your money around so you can save a bit every month for each of these.", + "text": "Uma ungakwazi ukonga ngisho noma okuncane ozokusebenzisa esikhathini esizayo noma ezimweni eziphuthumayo - kungenza umehluko omkhulu ngokuhamba kwesikhathi. \n* Faka indilinga ebizwa ngokuthi “izimo eziphuthumayo”.\n* Faka indilinga ebizwa ngokuthi “imigomo yomndeni”.\n* Manje zama ukuhlela imali yakho ukuze wonge okuncane nyanga zonke ezintweni ozikhokhelayo.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", - "text": "Siyakubonga ngokusebenzisa i-@global.parent_app ukuze uzuzise wena nomndeni wakho.\n\nZama i-@local.workshop_data.in_text_title futhi wakhe ikhono elihle lokuba umzali!", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your group deserves a praise, don’t you?", + "text": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu eqenjini lakho ufanelwe ukunconywa, akunjalo?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", - "text": "Ukuncoma kwenza umehluko omkhulu. \n\nQedela i @local.workshop_data.in_text_title ubone indlela WENA ongawuncoma ngayo umndeni wakho.", + "SourceText": "CONGRATULATIONS!!! You’ve made your family budget – and using it will make a huge difference for you. I think every person in your family deserves a praise, don’t you?", + "text": "SIYAKUHALALISELA!!! Wenze isabelomali somndeni wakho - ukusisebenzisa kuzokwenza umehluko omkhulu. Ngicabanga ukuthi wonke umuntu emndenini wakho ufanelwe ukunconywa, akunjalo?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Praise time!", - "text": "Isikhathi sokuncoma!", + "SourceText": "CONGRATULATIONS!!! You’ve made your budget – remember to do this exercise again with your other family members - if you agree on a plan together it will make a huge difference!", + "text": "SIYAKUHALALISELA!!! Wenze isabelomali sakho - khumbula ukuphinde wenze lesi sabelo mali futhi namalungu womndeni wakho - uma nivumelana ndawonye ngohlelo kuzokwenza umehluko omkhulu!", "type": "template", "note": "" }, { - "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", - "text": "Uma ubona ingane yakho ngokulandelayo, yincome ngento eyodwa eyenza kahle!\n\nUgcine nini ukuzincoma nawe noma ukuncoma omunye umuntu omdala ekhaya lakho? Kuzame!", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Ingabe usukhulumile nengane yakho esebusheni bayo ngesisabelo mali somndeni wenu?", "type": "template", "note": "" }, { - "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Sawubona @global.user_name, isifundo esisha sikulindele kusasa. Kubukeka ngathi awukakayiqedi i- @local.workshop_data.in_text_title yet. Yimfishane kakhulu (ngiyathembisa) - ungayiqedela ngisho nangenkathi ulinde ukuvuthwa kwesidlo sakusihlwa. Yingani ungavele ushone kuyo uma usunemizuzwana?\n\nSiyabonga futhi ngokusebenzisa i- @global.parent_app.", + "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", + "text": "Noma nini lapho uzizwa uwedwa noma ucindezelekile, yazi ukuthi awuwedwa. Kukhona abazali emhlabeni wonke jikelele ababhekene nezinkinga ezifanayo nezakho.\n\nWenza okusemandleni akho nsuku zonke futhi sonke siyaziqhenya ngawe!", "type": "template", - "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", - "text": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, kuzovulwa umhlangano wokufundisana omusha. Wazame - uzowubona umehluko endleleni ingane yakho esebusheni bayo eziphatha ngayo.", + "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", + "text": "Ukuhilela umndeni wakho endleleni osebenzisa ngayo imali yakho kungasusa ukucindezeleka okuningi nezimpikiswano. \n\nQedela i-@local.workshop_data.in_text_title ukuze usize umndeni wakho ngokwenza isabelomali kanye nokonga imali. Empeleni kulula - uzobona!", "type": "template", "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Hi @field.user_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app is onto lwesine 4. \n\numhlangano wokufundisana wakuleli sonto umayelana nendlela ongandisa ngayo amathuba okuthi ingane yakho esebusheni bayo yenze lokho oyicela ukuthi ikwenze.", + "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", + "text": "Ingabe uzizwa ucindezelekile ngemali? Ingabe ingane yakho esebusheni bayo ihlezi ikucela izinto ongenayo imali yokuzithenga? \n\numhlangano wokufundisana waleli sonto umayelana nemali nokwenza isabelo mali.", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! Congratulations for starting @global.parent_app week 4. \n\nThis week’s workshop is about how to increase your chances of getting your teen to do what you ask them to do.", - "text": "Sawubona @field.user_name! Siyakuhalalisela ngokuqala @global.parent_app is onto lwesine 4. \n\numhlangano wokufundisana wakuleli sonto umayelana nendlela ongandisa ngayo amathuba okuthi ingane yakho esebusheni bayo yenze lokho oyicela ukuthi ikwenze.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", + "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Abazali abaningi bathi ukwenza isabelomali kulethe ukuthula endlini yabo – kungakusebenzela nawe.\n\nSiyakubonga futhi ngokuba umzali ozibophezele.", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Speak kindly to yourself about what a great job you are doing. There is no such thing as a perfect parent, and we think you’re doing great!", - "text": "Mawu khuluma ngawe khuluma ngomusa mayelana nomsebenzi omuhle owenzayo. Akekho umzali ongawenzi amaphutha futhi thina sicabanga ukuthi wenza kahle kakhulu!", + "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", + "text": "Kuhle ukuthi uqedile @local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kuzovulwa ukuze kukusize ubeke imithetho yomndeni esebenzayo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "You’ve not marked any @data.habit.instruct_positively.title @global.parent_points yet. \n\nGive it a try today!", - "text": "Awukhethanga nokukodwa phakathi kwalokhu @data.habit.instruct_positively.title @global.parent_points. \n\nPhinda zame futhi namhlanje!", + "SourceText": "It can be hard to make ends meet every month. Many families have this problem! \n\nIncluding @global.w_money_grandma - let's have a look:", + "text": "Kungaba nzima ukuthola zonke izinto ozidingayo nyanga zonke. Imindeni eminingi ihlangabezana nalenkinga! \n\nKuhlanganise @global.w_money_grandma - Ake sibone:", "type": "template", - "note": "The following strings should not be translated:\n@data.habit.instruct_positively.title\n@global.parent_points" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Well done!", - "text": "Wenze kahle!", + "SourceText": "@global.w_money_grandma: \"I have been taking care of my grandchildren, @global.w_money_teen_girl and @global.w_money_teen_boy, since their parents died when they were young. We often struggle with money, as I only receive a small grant.\"", + "text": "@global.w_money_grandma: “Bengilokhu nginakekela abazukulu bami, @global.w_money_teen_girl no @global.w_money_teen_boy, njengoba abazali babo bashona besebancane. Ngokuvamile siba nezinkinga zemali, njengoba ngithola kuphela imali yesibonelelo sikahulumeni esincane.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_money_grandma\n@global.w_money_teen_girl\n@global.w_money_teen_boy" }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title once already – so you’re making great progress.", - "text": "Umakile @global.parent_point @data.habit.instruct_positively.title kanye kakade - ngakho wenza inqubekelaphambili enhle.", + "SourceText": "@global.w_money_grandma: \"I am so stressed. I don’t have any money left. And now I’m fighting with my teens over things they want – again.\"", + "text": "@global.w_money_grandma: “Nginengcindezi kakhulu. Anginayo imali esele. Futhi manje siyaxabana nezingane zami ngezinto abazifunayo futhi.”", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "You’ve marked the @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively times already – so you’re making great progress.", - "text": "Usuyikhethile - @global.parent_point @data.habit.instruct_positively.title @field.parent_point_count_instruct_positively - ngakho ke uthuthuka kakhulu.", + "SourceText": "Great work, you have completed the first 3 steps! \n\nLet's see how @global.w_money_grandma made a plan with her money, just like you are doing:", + "text": "Nenze umsebenzi omuhle, seniqede izinyathelo ezi-3 zokuqala! \n\nAke sibone ukuthi @global.w_money_grandma ulwenze kanjani uhlelo lokusebenzisa imali yakhe, njengoba nje wenza:", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_point\n@data.habit.instruct_positively.title\n@field.parent_point_count_instruct_positively" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Does your teen always listen to you? If not (like the rest of us), have a look at this week's workshop to learn how giving positive instructions can help - a lot.", - "text": "Ingabe ingane yakho esebusheni bayo ihlezi ikulalela? Uma kungenjalo (njengakithi sonke), hlola umhlangano wokufundisana waleli sonto ukuze ufunde indlela yokunikeza iziqondiso ezinhle kungakusiza kakhulu lokho.", + "SourceText": "\"I want the best future for my grandchildren, but I don’t know where to get the money. Loan sharks are dangerous and paying them back is so expensive. \n\nI should save, but that feels impossible!\"", + "text": "“Ngifunela abazukulu bami ikusasa elihle, kodwa angazi ukuthi ngizoyithola kuphi imali. Ukuboleka imali komashonisa kuyingozi kanti futhi kuyabiza ukuyikhokha. \n\nKumele ngonge imali, kodwa lokho kubonakala kungeke kwenzeke!”", "type": "template", "note": "" }, { - "SourceText": "Positive instructions help to see more and more good behaviour! \n\nComplete the @local.workshop_data.in_text_title to get some ideas on how this could work in your family.", - "text": "Iziqondiso ezinhle zikusiza ubone ukuziphatha okuhle nakakhulu! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole amanye amacebiso endlela lokhu okungasebenza ngayo emndenini wakho.", + "SourceText": "\"My goal is to make sure my grandson can go to high school and my granddaughter can reach her dream of university. How can I save a lot of money with the little money I have?\"", + "text": "“Umgomo wami ukuthi umzukulu wami womfana aye esikoleni samabanga aphezulu bese kuthi umzukulu wami wentombazane aye enyuvesi. Ngingakwazi kanjani ukonga imali eningi ngemadlana encane enginayo?”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "As usual, you can access a new workshop tomorrow. It will help to complete the previous workshop before then. \n\nSome parents are using the app while commuting to work. Why don’t you use the app when you have a few minutes? \n\nThank you again for using @global.parent_app.", - "text": "Njengenjwayelo, ungakwazi ukufinyelela kumhlangano wokufundisana omusha kusasa. Kuzosiza ukuqeda ishabhu yangaphambilini ngaphambi kwalokho.\n\nAbanye abazali basebenzisa i-app lapho besendleleni eya emsebenzini. Kungani ungayisebenzisi i-app lapho unemizuzu embalwa? \n\nSiyakubonga ngokusebenzisa i-@global.parent_app.", + "SourceText": "\"I know - let’s start with a plan! First, let me make a budget – a plan for how I can save my money. Then I will save just a little bit of money at a time – I will even join a savings and loans group.\"", + "text": "“Ngiyazi - ake siqale ngokuhlela! Okokuqala, ake ngenze isabelomali - uhlelo lokuthi ngizoyonga kanjani imali yami. Ngemva kwalokho ngizokonga imali encane ngesikhathi - ngizophinde ngijoyine namaqembu okonga imali nokubolekisa ngemali.”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop is ready for you: you will see a big difference by making small changes!", - "text": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\nKusasa, ulindwe umhlangano wokufundisana omusha: uzobona umehluko omkhulu lapho wenza izinguquko ezincane!", + "SourceText": "\"I should also speak with my grandchildren to choose things that we can spend just a little bit less on each week. They will help me think of things we want but don’t need.\"", + "text": "“Ngizophinde ngikhulume nabazukulu bami sikhethe izinto esizosebenzisa imali encane kuzona njalo ngeviki. Bazongisiza ngicabange ngezinto esizifunayo kodwa esingazidingi.”", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "First @global.weekly_workshop!", - "text": "Okokuqala @global.weekly_workshop!", + "SourceText": "A few years later:\n\n\"Look, we reached our dreams! I didn’t borrow any money from friends or loan sharks. By saving a tiny bit each week, I managed to pay for @global.w_money_teen_boy’s high school and save some money for @global.w_money_teen_girl’s university. I am so proud of this.”", + "text": "Ngemva kweminyaka embalwa kamuva:\n\n“Bheka, sesiwafinyelele amaphupho ethu! Ayikho imali engiyiboleke kubangane noma komashonisa. Ngokonga okuncane iviki neviki, ngikwazile ukukhokhela u-@global.w_money_teen_boy esikolweni samabanga aphakeme futhi ngonga nemali ka-@global.w_money_teen_girl yokufunda enyuvesi. Ngiyaziqhenya ngalokhu.”", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "The following strings should not be translated:\n@global.w_money_teen_boy\n@global.w_money_teen_girl" }, { - "SourceText": "Hi @fields.user_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Sawubona @fields.user_name. I @local.workshop_data.in_text_title yakho isikulungele.", + "SourceText": "Saving is important for one more reason: emergencies! @global.w_money_grandma also learned this along the way:", + "text": "Ukonga kubaluleke ngalesi sezinye izizathu: izimo eziphuthumayo! @global.w_money_grandma uye wakufunda lokhu ngendlela:", "type": "template", - "note": "The following strings should not be translated:\n@fields.user_name\n@local.workshop_data.in_text_title" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @fields.group_name. Your @local.workshop_data.in_text_title is ready for you.", - "text": "Sawubona @fields.group_name. I @local.workshop_data.in_text_title yakho isikulungele.", + "SourceText": "“One night there was a horrible storm that broke my roof. Everything was flooded. I suddenly had to find money to fix the roof. I just felt defeated.”", + "text": "“Ngelinye ilanga kwaba nemvula enesiphepho esibi eyalimaza uphahla lwami. Kwakhukhuleka yonke into. Kwadingeka ngithole imali ngokushesha ukuze ngilungise uphahla. Ngazizwa ngiphelelwe ngamandla.”", "type": "template", - "note": "The following strings should not be translated:\n@fields.group_name\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Spending time with your teen helps build trust between you. \n\nContinue your @global.parent_app journey now - you and your family will see great results.", - "text": "Ukuchitha isikhathi nengane yakho esebusheni bayo kwakha ukwethembana phakathi kwenu. \n\nQhubeka nohambo lwakho lwe-@global.parent_app manje - wena nomndeni wakho nizobona imiphumela emihle.", + "SourceText": "Take a moment and just be impressed at what you’ve achieved, despite all the other things you have to do each day.", + "text": "Thatha isikhashana ujabulele izinto ozenzile, ngaphezu kwazo zonke ezinye ezinto okumelwe uzenze zinsuku zonke.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for putting so much effort into being a better parent. You are loved and appreciated!", - "text": "Siyakubonga ngokwenza umzamo ongaka ukuze ube umzali ongcono. Uyathandwa kakhulu siyazi qenya ngawe!", + "SourceText": "* Story – that didn’t work… \n* Budgeting exercise\n* Story & discussion – that worked!\n* Story & discussion – that didn’t work…\n* Discussion on saving options\n* Saving exercise\n* Tools: How to budget & save\nTHINK - CHOOSE - BUILD - PLAN\n* Home practice suggestions", + "text": "* Indaba – lokho akusebenzanga… \n* Ukufunda ukwenza isabelomali\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okungasebenzanga ...\n* Ingxoxo ngezindlela zokonga imali\n* Ukufunda ukonga imali\n* Amathuluzi: Indlela yokwenza isabelomali kanye nokonga\nCABANGA - KHETHA - YAKHA - HLELA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Have you spent time with your teen already?", - "text": "Ingabe vele ususichithile isikhathi nengane yakho esebusheni bayo?", + "SourceText": "Step 1: THINK", + "text": "Isinyathelo 1: CABANGA", "type": "template", "note": "" }, { - "SourceText": "Thank you for using @global.parent_app and committing to your parenting. \n\nYour @local.workshop_data.in_text_title is ready for you!", - "text": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nI @local.workshop_data.in_text_title yakho isikulungele!", + "SourceText": "What do we spend on now?", + "text": "Siyisebenzisa kuphi imali njengamanje?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. It won’t take long, and you will get valuable information. \n\nWell done for trying to be a better parent. Tomorrow, you can access a new workshop.", - "text": "Kubonakala sengathi awukakayiqedi i-@local.workshop_data.in_text_title okwamanje. Ngeke kuthathe isikhathi eside, futhi uzothola imininingwane ewusizo. \n\nWenze kahle ngokuzama ukuba umzali ongcono. Kusasa ungangena ekuqeqeshweni okusha.", + "SourceText": "THINK Activity", + "text": "CABANGA Umsebenzi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax, enjoy and learn new skills!", - "text": "Wenze kahle ngokuqeda @local.workshop_data.in_text_title. Kusasa ungangena ekuqeqeshweni okusha okuzokusiza uphumule, ujabule futhi ufunde amakhono amasha!", + "SourceText": "Step 2: CHOOSE", + "text": "Isinyathelo 2: KHETHA", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Sawubona @field.user_name! Inhlekelele ingenzeka kunoma ubani - ukuhlala uyilungele kusiza kakhulu. \n\nLo mhlangano wokufundisana uzokubonisa ukuthi kanjani.", + "SourceText": "Talk together about needs and wants", + "text": "Khulumani ngezidingo kanye nezimfuno ndawonye", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! A crisis can happen to anyone - being prepared helps a lot. \n\nThis workshop will show you how.", - "text": "Sawubona @field.user_name! Inhlekelele ingenzeka kunoma ubani - ukuhlala uyilungele kusiza kakhulu. \n\nLo mhlangano wokufundisana uzokubonisa ukuthi kanjani.", + "SourceText": "CHOOSE Activity", + "text": "KHETHA Umsebenzi", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "You are a committed parent. Be proud of yourself - this is a big achievement in itself!", - "text": "Ungumzali ozibophezele. Ziqhenye ngawe - yinto enkulu le oyifinyelele!", + "SourceText": "Step 3: BUILD", + "text": "Isinyathelo 3: YAKHA", "type": "template", "note": "" }, { - "SourceText": "We never know when a crisis may happen, but we CAN be prepared! \n\nStart the next workshop to explore how you can do this together with your teen.", - "text": "Asazi ukuthi inhlekelele ingase yenzeke nini, kodwa SINGAZI lungiselela!\n\nQala umhlangano wokufundisana olandelayo ukuze uhlole ukuthi ungakwenza kanjani lokhu nengane yakho esebusheni bayo.", + "SourceText": "Make your own budget", + "text": "Zenzele isabelomali sakho", "type": "template", "note": "" }, { - "SourceText": "So good that you're with us on this parenting journey! \n\nComplete the @local.workshop_data.in_text_title and learn the best way to react when your teen needs you the most.", - "text": "Kuhle kakhulu ukuthi unathi kulolu hambo lokuba umzali! \n\nQedela i-@local.workshop_data.in_text_title futhi ufunde indlela engcono kakhulu yokusabela lapho ingane yakho esebusheni bayo ikudinga kakhulu.", + "SourceText": "BUILD Activity", + "text": "YAKHA Umsebenzi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you discussed with your teen what you would do in a crisis situation?", - "text": "Usuxoxile yini nengane yahoo esebusheni bayo ukuthi yini ongayenza esimweni esibucayi?", + "SourceText": "Step 4: PLAN", + "text": "Isinyathelo 4: HLELA", "type": "template", "note": "" }, { - "SourceText": "Crisis Examples", - "text": "Izibonelo Zezinkinga", + "SourceText": "Emergencies and family goals", + "text": "Izimo eziphuthumayo nemigomo yomndeni", "type": "template", "note": "" }, { - "SourceText": "Tomorrow the final @global.parent_app workshop is ready for you. \n\nTry to complete @local.workshop_data.in_text_title before starting the new workshop. That way, you can complete your set of parenting skills and decide what to do next!", - "text": "Kusasa umhlangano wokufundisana wokugcina @global.parent_app ukukulindile. \n\nZama qedela @local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ngaleyo ndlela, ungaqedela amakhono okuba umzali futhi unqume lokho ozokwenza ngokulandelayo!", + "SourceText": "PLAN Activity", + "text": "HLELA Umsebenzi", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Well done for completing @local.workshop_data.in_text_title. Tomorrow, you can access the final workshop to reflect on your @global.parent_app journey and on what you can do next!", - "text": "Wenze kahle waqeda @local.workshop_data.in_text_title. Kusasa, ungangena umhlangano wokufundisana wakho kokugcina ukuze uhlole uhambo lwakho @global.parent_app nalokho ongakwenza ngokulandelayo!", + "SourceText": "What are your family savings goals?", + "text": "Imiphi imigomo yokonga yomndeni wakho?", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.user_name! You are nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Sawubona @field.user_name! Ususeduze nokuqeda umhlangano wokufundisana kwakho kwe-@global.parent_app! Siyabonga ukuzibophezela ukuhlala isikhathi eside\n\n umhlangano wokufundisana wake wakuleli sonto umayelana nokugcina intsha yethu iphephile, ku-inthanethi kanye nasemphakathini. Kujabulele!", + "SourceText": "Such great goals! \n\nSuch a great goal! When we make a good budget and saving plan together, we can achieve it and feel proud of ourselves!", + "text": "Imigomo emihle leyo! \n\nUmgomo omuhle loyo! Uma senza isabelomali esihle bese sihlela indlela yokonga imali ndawonye, singakwazi ukuyifinyelela bese siyaziqhenya ngathi!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are all nearly at the end of your @global.parent_app workshops! Thank you for your long-lasting commitment. \n\nThis week’s workshop is about keeping our teens safe, both online and in the community. Enjoy!", - "text": "Sawubona @field.group_name! Nonke seniseduze nokuqeda umhlangano wokufundisana kwenu kwe-@global.parent_app! Siyabonga ngokuzibophezela kwakho ngokuhlala isikhathi eside. \n\numhlangano wokufundisana kwakho kwaleli sonto kumayelana nokugcina intsha yethu iphephile, kwi-inthanethi kanye nasemphakathini. Yijabulele!", + "SourceText": "We all have dreams for our family, just like @global.w_money_grandma. By setting aside a bit of money every month, you can realise them too!", + "text": "Sonke sinamaphupho ngemindeni yethu, njengo @global.w_money_grandma. Ngokubekela eceleni imali encane inyanga nenyanga, ungawafinyelela lawo maphupho!", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", - "text": "Lesi bekuyisikhathi esinzima kakhulu sokuba umzali. Kumelwe uziqhenye ngakho konke okwenzile. \n\nCabanga ngazo zonke izikhathi owenze ngazo ingane yakho esebusheni bayo yamamatheka kanye nakho konke ukunakekela oyinike khona. Abazali bayamangalisa, nawe uyamangalisa!", + "SourceText": "What are your family savings goals?", + "text": "Imiphi imigomo yokonga womndeni wakho?", "type": "template", "note": "" }, { - "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", - "text": "Usuzuze amakhono amaningi okukhulisa izingane kula masonto adlule!\n\nQedela loumhlangano wokufundisana elandelayo ukuze uthole elinye ikhono eliwusizo.", + "SourceText": "Such a great goal! \n\nBy making a good budget and saving plan, you can achieve it and feel proud of yourself!", + "text": "Umgomo omuhle loyo! \n\nNgokwenza isabelomali esihle kanye nohlelo lokonga, ungakwazi ukuyifinyelela bese uziqhenya ngawe!", "type": "template", "note": "" }, { - "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", - "text": "Ukuze ugcine ingane yahoo esebusheni bayo iphephile, kuyasiza ukuxoxa ndawonye ngomphakathi wenu kanye nalokho okutholakala kwi-inthanethi. \n\nQedela i-@local.workshop_data.in_text_title ubone indlela ongakwenza ngayo lokhu!", + "SourceText": "Let's talk about this story.", + "text": "Ake sikhulume ngale ndaba.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Ingabe usukhulumile nengane yakho esebusheni bayo ngezindlela zokuphepha?", + "SourceText": "For @global.w_money_grandma, a storm happened. \n\nWhat other emergencies could come up for us?", + "text": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla. \n\nIziphi ezinye izimo eziphuthumayo ezingasehlela?", "type": "template", - "note": "" + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", - "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Ukwenza icebo ndawonye nengane yakho esebusheni bayo kuvimbela izinkinga eziningi – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokusebenzisa i-@global.parent_app ukuze usekele umndeni wakho.", + "SourceText": "Let's think about this story.", + "text": "Ake sicabange ngale ndaba.", "type": "template", - "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" + "note": "" }, { - "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", - "text": "Siyakuhalalisela, uyiqedile i-@local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kukulindile ukuze kusize wena nomndeni wakho nibhekane nanoma yisiphi isimo – ndawonye kuningi eningakwenza!", + "SourceText": "For @global.w_money_grandma, a storm happened.", + "text": "Ku @global.w_money_grandma, kwaba nemvula enesiphepho esinamandla.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "The string @global.w_money_grandma should not be translated." }, { - "SourceText": "Hi @field.user_name! You are making such good progress on your parenting journey! \n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you how to deal with them.", - "text": "Sawubona @field.user_name! Wenza intuthuko enhle ohambweni lwakho njengomzali! \n\nUkuba nengane eyevile eminyakeni esebusheni bayo kusho ukubhekana nezinkinga eziningi ezingalindelekile. umhlangano wokufundisana uzokubonisa ukuthi ungabhekana kanjani nazo lezinkinga.", + "SourceText": "What other emergencies could come up for your family?", + "text": "Yiziphi ezinye izimo eziphuthumayo ezingavelela imindeni yethu?", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! You are making such good progress on your parenting journey!\n\nHaving a teen means having a lot of unexpected problems to deal with. This workshop will show you all how to deal with them.", - "text": "Sawubona @field.group_name! Wenza intuthuko enhle ohambweni lwakho njengomzali!\n\nUkuba nengane eyevile eminyakeni esebusheni bayo kusho ukubhekana nezinkinga eziningi ezingalindelekile. umhlangano wokufundisana uzokubonisa ukuthi ungabhekana kanjani nazo lezinkinga.", + "SourceText": "Emergencies can happen in any family. Saving some money for these emergencies BEFORE they happen prevents a lot of sudden worry and stress!", + "text": "Isimo esiphuthumayo singavelela noma imuphi umndeni. Ukonga imali yokusiza uma kuvela isimo esiphuthumayo NGAPHAMBI kokuthi siqubuke kuzovimbela ukukhathazeka kungalindelekile nokuba nengcindezi!", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", - "text": "Ukuzibophezela kwakho kuyisikhuthazo kuwo wonke umuntu. Qhubeka uzolile bese uyaqhubeka!", + "SourceText": "Let's talk about different ways we can save.", + "text": "Ake sikhulume ngezindlela ezihlukahlukene zokonga.", "type": "template", "note": "" }, { - "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", - "text": "Nentsha, futhi ekuphileni, kuvela izinkinga ezingalindelekile futhi kufanele sibhekane nazo.\n\nQala umhlangano wokufundisana olandelayo ngokufunda indlela yokubhekana ngokuphumelelayo nalezi zinkinga.", + "SourceText": "Discuss together: \n* In which different ways can we save? \n* What are the advantages and disadvantages of each savings option? \n\nUnderstanding each option well will help you to decide what is the best saving option for your family. \n\nWhatever savings plan you choose, it will really help your family move forward!", + "text": "Xoxani ndawonye: \n* Imali singayonga ngaziphi izindlela ezihlukahlukene? \nYibuphi ubuhle nobubi bendlela ngayinye yokonga? \n\nUkuqonda indlela ngayinye kuzokusiza unqume ukuthi iyiphi indlela engcono yokonga elungele umndeni wakho. \n\nNoma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakhe uqhubekele phambili!", "type": "template", "note": "" }, { - "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", - "text": "Usendleleni efanele yokuqala ukuxazulula izinkinga ndawonye nengane yakho esebusheni bayo! \n\nQedela i-@local.workshop_data.in_text_title bese uthola elinye ikhono elibalulekile lokuba umzali!", + "SourceText": "Let's think about different ways we can save.", + "text": "Ake sicabange ngezindlela ezihlukahlukene esingonga imali ngazo.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", - "text": "Ingabe usuzizamile izinyathelo ezine zokuxazulula inkinga nengane yakho esebusheni bayo? \n\nYAZI, YIXAZULULA, YIZAME, IYIHLOLE!", + "SourceText": "There are different ways we can save: at home, buying things we can sell later, at a bank, or in a savings group.\n\nThink of the advantages and disadvantages of each savings option.", + "text": "Kunezindlela ezihlukahlukene esingakwazi ukonga ngazo: ekhaya, ukuthenga izinto esingakwazi ukuzithengisa kamuva, ebhange, noma eqenjini lokonga.\n\nCabanga ngobuhle nobubi bendlela ngayinye yokonga imali.", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", - "text": "Kusasa kukhona omusha @global.parent_app umhlangano wokufundisana okulindele. \n\nZama ukuqeda i-@local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ukwazi indlela yokuxazulula izinkinga ndawonye kuzosiza ezimweni eziningi!", + "SourceText": "What is the best savings option for your family?", + "text": "Iyiphi indlela yokonga engcono elungele umndeni wakho?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", - "text": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, \numhlangano wokufundisana omusha uzovulwa ukuze ukusize ugcine ingane yakho esebusheni bayo iphephile.", + "SourceText": "Whatever savings plan you choose, it will really help your family move forward!", + "text": "Noma ngabe iyiphi indlela yokonga oyikhethayo, izosiza umndeni wakho uqhubekele phambili!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Sawubona @field.user_name! Isonto elisha, umhlangano wokufundisana omusha! Funda indlela yokubeka imithetho yasekhaya ngendlela ezokwandisa amathuba okuthi ingane yakho esebusheni bayo iyigcine.", + "SourceText": "Caring for yourself is so essential.", + "text": "Kubalulekile ukuzinakekela.", "type": "template", - "note": "The string @field.user_name should not be translated." + "note": "" }, { - "SourceText": "Hi @field.group_name! New week, new workshop! Learn how to set household rules in a way that will increase the chances of your teen keeping them.", - "text": "Sawubona @field.group_name! Isonto elisha, ukuqeqeshwa okusha! Funda indlela yokubeka imithetho yasekhaya ngendlela ezokwandisa amathuba okuthi ingane yakho eyevile eminyakeni eyishumi nambili iyigcine.", + "SourceText": "Wonderful, I am so happy things are going well. Keep up the good work.", + "text": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle. Qhubeka nokwenza umsebenzi omuhle.", "type": "template", - "note": "The string @field.group_name should not be translated." + "note": "" }, { - "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", - "text": "Ngezinye izikhathi kuzwakala sengathi intsha yakho isathukuthele ngisho noma wenze konke okusemandleni akho. Khumbula ukuthi wenza umsebenzi omuhle kakhulu, nokuthi ke zizoba khona izikhathi ozijabulelayo nengane yakho esebusheni bayo!", + "SourceText": "This week's home practice is to praise your teen once a day. It will only take 10 seconds!", + "text": "Umsebenzi wasekhaya kuleli viki ukuncoma ingane yakho kanye ngosuku. Kuzothatha imizuzwana eyishumi nje kuphela!", "type": "template", "note": "" }, { - "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", - "text": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ohambweni lwakho lokuba umzali. \n\nI-@local.workshop_data.in_text_title izokubonisa indlela ongabeka ngayo imithetho ngendlela ezosiza ingane yakho esebusheni bayo iyiqonde futhi iyilandele kangcono imithetho.", + "SourceText": "Your goal was to praise your teen.", + "text": "Umgomo wakho bekuwukuncoma ingane yakho esebusheni bayo.", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", - "text": "Sekuseduze thole ezinye izicebiso zokuba umzali! Qedela i-@local.workshop_data.in_text_title, beka umthetho OWODWA olula nolandelekayo ninengane yakho esebusheni bayo, bese ubona ushintsho oluzo kwenzeka!", + "SourceText": "Did you have a chance to praise your teen this week?", + "text": "Ingabe ulitholile ithuba lokuncoma ingane yakho esebusheni bayo kuleli sonto?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Have you managed to set a rule together with your teen?", - "text": "Ingabe ukwazile ukubeka umthetho ndawonye nengane yakho esebusheni bayo?", + "SourceText": "Yes", + "text": "Yebo", "type": "template", "note": "" }, { - "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", - "text": "Kusasa kukhona okusha @global.parent_app kumhlangano wokufundisana okukulindele. \n\nZama qeda i-@local.workshop_data.in_text_title ngaphambi kokuthi uqale umhlangano wokufundisana omusha. Ngeke kuthathe isikhathi eside futhi kuzosiza ingane yakho esebusheni bayo ilandele imithetho kangcono!", + "SourceText": "No", + "text": "Cha", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" + "note": "" }, { - "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", - "text": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\n\nKusasa, umhlangano wokufundisana omusha uzokusiza wazi lokho ongakwenza lapho intsha iziphatha ngendlela embi (noma enhile)!", + "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", + "text": "Ngezinye izikhathi kungase kube nzima ukukhumbula ukuncoma intsha yethu. Esikhathini esizayo lapho uchitha isikhathi nengane yakho esebusheni bayo, zama ukucabanga ngento eyodwa ongayincoma ngayo. mhlamphe uthi, “Ngiyabonga ngokuchitha isikhathi nami!”.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Hi @field.user_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Sawubona @field.group_name! Uqala inyanga yakho yesibili usebenzisa i-@global.parent_app. Kuyamangalisa! \n\nCishe yonke imindeni ihlushwa yizinkinga zemali, ngakho, umhlangano wokufundisana waleli sonto uzokunikeza indlela ezizokusiza uhlele izindleko zakho ukuze ube nemali eyanele yenyanga yonke.", + "SourceText": "Well done - great job for remembering!", + "text": "Usebenzile - wenze kahle ngokukhumbula!", "type": "template", - "note": "The following strings should not be translated:\n@field.user_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Hi @field.group_name! You are starting your second month of using @global.parent_app. Amazing! \n\nAlmost every family struggles with money issues, therefore, this week’s workshop will give you a tool that will help you to plan your expenses so you can have enough money to get through the month.", - "text": "Sawubona @field.group_name! Uqala inyanga yakho yesibili usebenzisa i-@global.parent_app. Kuyamangalisa! \n\nCishe yonke imindeni ihlushwa yizinkinga zemali, ngakho, umhlangano wokufundisana waleli sonto uzokunikeza indlela ezizokusiza uhlele izindleko zakho ukuze ube nemali eyanele yenyanga yonke.", + "SourceText": "How did your teen respond?", + "text": "Ingane yakho esebusheni bayo iphendule kanjani?", "type": "template", - "note": "The following strings should not be translated:\n@field.group_name\n@global.parent_app" + "note": "" }, { - "SourceText": "Do you feel stressed about money? Does your teen keep asking for things you can’t afford? \n\nThis week’s workshop deals with money and budgeting.", - "text": "Ingabe uzizwa ucindezelekile ngemali? Ingabe ingane yakho esebusheni bayo ihlezi ikucela izinto ongenayo imali yokuzithenga? \n\numhlangano wokufundisana waleli sonto umayelana nemali nokwenza isabelo mali.", + "SourceText": "Surprised", + "text": "Imangele", "type": "template", "note": "" }, { - "SourceText": "Whenever you feel alone or overwhelmed, know that you are not alone. There are parents all over the world who are going through the same struggles as you. \n\nYou are doing your best every day and we’re all proud of you!", - "text": "Noma nini lapho uzizwa uwedwa noma ucindezelekile, yazi ukuthi awuwedwa. Kukhona abazali emhlabeni wonke jikelele ababhekene nezinkinga ezifanayo nezakho.\n\nWenza okusemandleni akho nsuku zonke futhi sonke siyaziqhenya ngawe!", + "SourceText": "Happy", + "text": "Ijabulile", "type": "template", "note": "" }, { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Ingabe usukhulumile nengane yakho esebusheni bayo ngesisabelo mali somndeni wenu?", + "SourceText": "My teen did not like it", + "text": "Ingane yami esebusheni bayo ayizange ikuthande lokho", "type": "template", "note": "" }, { - "SourceText": "Involving your family in how you spend your money can take away a lot of stress and arguments. \n\nComplete the @local.workshop_data.in_text_title to help your family with budgeting and saving. It's actually easy - you will see!", - "text": "Ukuhilela umndeni wakho endleleni osebenzisa ngayo imali yakho kungasusa ukucindezeleka okuningi nezimpikiswano. \n\nQedela i-@local.workshop_data.in_text_title ukuze usize umndeni wakho ngokwenza isabelomali kanye nokonga imali. Empeleni kulula - uzobona!", + "SourceText": "I do not know", + "text": "Angazi", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Many parents said that making a budget brought peace back into their house – it can work for you too.\n\nThank you again for being such a committed parent.", - "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Abazali abaningi bathi ukwenza isabelomali kulethe ukuthula endlini yabo – kungakusebenzela nawe.\n\nSiyakubonga futhi ngokuba umzali ozibophezele.", + "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", + "text": "Khumbula, kuthatha isikhathi ukuthi ingane yakho ijwayele ukukubona uyincoma. Lapho uchitha isikhathi esiningi nabo, kuzoba ngcono nakakhulu!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you set family rules that work.", - "text": "Kuhle ukuthi uqedile @local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kuzovulwa ukuze kukusize ubeke imithetho yomndeni esebenzayo.", + "SourceText": "Well done for observing how your teen felt; keep it up!", + "text": "Wenze kahle ngokuqaphela indlela ingane yakho esebusheni bayo ezizwa ngayo; qhubeka wenza kanjalo!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", - "text": "Khumbula - leli sonto limayelana NAWE! Sithemba ukuthi uziphethe kahle. Kukufanele lokhu!", + "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", + "text": "Kuyenzeka - yiba nesineke. Qinisekisa ukuthi uyaqhubeka uchitha isikhathi nengane yakho esebusheni bayo, ukuze ibheke umbono wakho njengobalulekile. Lapho ukuncoma kwakho kuqotho, uzozibona izinzuzo maduzane!", "type": "template", "note": "" }, { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", - "text": "Qala umhlangano wokufundisana @global.parent_app omusha kusasa. Uzobona imiphumela emihle!", + "SourceText": "No problem - try to observe how they respond the next time!", + "text": "Ayikho inkinga - zama ukubona indlela ingane esabela ngayo esikhathini esizayo!", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", - "text": "Ingabe usubatshelile obambisene nabo @global.parent_app nge-app? Kusukela kusasa, ningaqala nenze umhlangano wokufundisana @global.parent_app wenu ndawonye!", + "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", + "text": "Nawe uyakufanelekela ukunconywa. Siyakubonga ngokusebenzisa i-@global.parent_app. Kubonisa ukuthi uyakhathalela ngempela!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Losing a friend or loved one is hard for everyone. Being kind to yourself and doing things to help yourself cope in this difficult time helps your teen too!", - "text": "Kunzima kuwo wonke umuntu ukushonelwa umuntu omthandayo noma umngani. Ukuziphatha ngomusa nokwenza izinto zokukusiza kulesisikhathi esinzima kusiza nomntwana wakho!", + "SourceText": "Praise is a powerful parenting skill.\n\nIf we praise our teens when they do something well, we will see them do more and more positive things!", + "text": "Ukuncoma kuyikhono elinamandla lokuba umzali.\n\nUma sincoma abantwana bethu uma benze okuthile okuhle, sizobona benza izinto ezingeziwe ezinhle!", "type": "template", "note": "" }, { - "SourceText": "Take care of yourself", - "text": "Zinakekele", + "SourceText": "Greetings everyone. \n\nOur topic today is about praise. \n\nIt is good to praise our children when they've done good because when we do that, they will do more of that good behavior we want to see. \n\nAnd let's not forget to praise ourselves when we do good too!", + "text": "Sanibonani nonke. \n\nIsihloko sethu sanamuhla sikhuluma ngokuncoma. \n\nKuyinto enhle ukuncoma abantwana bethu uma benze kahle ngoba uma senza kanjalo, bazokwenza okungeziwe okuhle esifuna ukukubona. \n\nFuthi singakhohlwa ukuzincoma nathi uma senze kahle!", "type": "template", "note": "" }, { - "SourceText": "Find a support group", - "text": "Thola inhlangano noma iqembu elisekelayo", + "SourceText": "Praise time!", + "text": "Isikhathi sokuncoma!", "type": "template", "note": "" }, { - "SourceText": "- Grief can affect us for weeks or months or years. You do not have to feel better quickly. \n- Get enough sleep and food - it is hard to care for teens when you are tired and hungry. \n- Make a list of things that make you feel better, and do them. \n- Try to do one simple thing to relax each day with your teen, and also for yourself. \n- It’s okay to not feel good and it is okay to cry. Never blame yourself, this is not your fault. \n- There is always hope even after loss. Try to enjoy simple things, and take a minute to do something fun or relaxing with your teen. \n- Find one or two adults who can support you, listen, and talk.", - "text": "-Usizi lungasithikameza emoyeni amaviki, izinyanga noma iminyaka. Akuphoqelekile ukuthi ubengcono ngokushesha. \n-Lala ngokwanele udle ngokwanele - kunzima ukunakekela abantwana uma ukhathele noma ulambile.\n-Yenza uhla lwezinto ezikwenza uzizwe ungcono bese uyazenza.\n-Zama ukwenza into eyodwa ngosuku ezoniphumuza ninomntwana wakho.\n-Kulungile ukungazizwa kahle kanti nokukhala kulungile. Ungazibeki cala, akulona iphutha lakho.\n-Ithemba lihlezi likhona noma kushoniwe. Zama ukuthokozela izinto ezincane futhi uthathe umzuzu wokwenza into ezonijabulisa futhi iniphumuze ninomntwana wakho.\n-Thola umuntu oyedwa noma ababili abangakweseka, balalele futhi baxoxisane nawe.", + "SourceText": "When you see your teen next, praise them for one thing they are doing well! \n\nAnd when was the last time you praised yourself or another adult in your household? Try it!", + "text": "Uma ubona ingane yakho ngokulandelayo, yincome ngento eyodwa eyenza kahle!\n\nUgcine nini ukuzincoma nawe noma ukuncoma omunye umuntu omdala ekhaya lakho? Kuzame!", "type": "template", "note": "" }, { - "SourceText": "- Talking with someone who can support you and listen to you can help. \n- It can help to join a group of people who have also lost someone. \n- Nobody is perfect. It is okay to talk about good and bad memories.", - "text": "- Ukukhuluma nomuntu ongakweseka, akulalele kungakusiza.\n- Ukuzibandakanya neqembu labanye abantu abashonelwe kungasiza.\n-Akekho umuntu ongenasici. Kulungile ukukhuluma ngezinkumbulo ezinhle nezimbi.", + "SourceText": "Well done for using @global.parent_app! Remember that it’s the small things that make a big difference.", + "text": "Wenze kahle ngokusebenzisa i @global.parent_app! Khumbula ukuthi yizinto ezincane ezenza umehluko omkhulu.", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Teenagers deal with loss in different ways, just like adults do. You can help them understand the situation and their feelings by creating safe spaces where you can both share and process.", - "text": "Abantwana bamelana nokushonelwa ngezidlela ezahlukile, nje ngokufanayo nabantu abadala. Ungabasiza ekutheni baqonde isimo kanye nemizwa yabo ngokuthi ubavulele izindawo eziphephile lapho ningabelana khona futhi nicubungule imizwa yenu.", + "SourceText": "Praising makes all the difference. \n\nComplete the @local.workshop_data.in_text_title and see how YOU can use praise in your family.", + "text": "Ukuncoma kwenza umehluko omkhulu. \n\nQedela i @local.workshop_data.in_text_title ubone indlela WENA ongawuncoma ngayo umndeni wakho.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Be honest", - "text": "Thembeka", + "SourceText": "Thank you for using @global.parent_app to invest in yourself and your family.\n\nTry the @local.workshop_data.in_text_title and build a great parenting skill!", + "text": "Siyakubonga ngokusebenzisa i-@global.parent_app ukuze uzuzise wena nomndeni wakho.\n\nZama i-@local.workshop_data.in_text_title futhi wakhe ikhono elihle lokuba umzali!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "My teen's response", - "text": "Impendulo yengane yami", + "SourceText": "Hi @global.user_name, a new workshop awaits you tomorrow. It seems like you haven’t finished the @local.workshop_data.in_text_title yet. It’s really a short one (promise!) – you can even complete it while waiting for dinner to cook. Why don’t you go through it when you have a few minutes? \n\nThank you again for using @global.parent_app.", + "text": "Sawubona @global.user_name, isifundo esisha sikulindele kusasa. Kubukeka ngathi awukakayiqedi i- @local.workshop_data.in_text_title yet. Yimfishane kakhulu (ngiyathembisa) - ungayiqedela ngisho nangenkathi ulinde ukuvuthwa kwesidlo sakusihlwa. Yingani ungavele ushone kuyo uma usunemizuzwana?\n\nSiyabonga futhi ngokusebenzisa i- @global.parent_app.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.user_name\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "How to support my teen?", - "text": "Ngiyeseka kanjani ingane yami?", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked. Try it - you will see the difference in your teen’s behaviour.", + "text": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, kuzovulwa umhlangano wokufundisana omusha. Wazame - uzowubona umehluko endleleni ingane yakho esebusheni bayo eziphatha ngayo.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "- Tell your teen that the person has died - sometimes they do not realise. \n- Telling is a process, not an event. You may need to tell them again and again. \n- Use words they understand. \n- If younger teens don’t understand what death is, help explain that the person they love is not coming back. Try not to call it ‘sleep’ or ‘a trip away’. \n- Older teens may understand what death is, but they may struggle to share or handle their emotions. \n- Teens can respond in very different ways: crying, shouting, not believing or going very quiet. All of these are okay. Tell them that you are there with them. \n- Allow questions and talking. Be honest. It is okay to say when we don’t know.", - "text": "- Tshela umntwana wakho ukuthi kukhona oshonile - kwesinye isikhathi baye bangakuqapheli lokhu.\n- Ukubatshela kuyinto ethatha isikhathi, hayi into engumcimbi. Kungadingeka ubantshele kaningana.\n- Sebenzisa amagama abawaqondayo.\n-Uma abantwana abancane bengaqondi ukuthi kuyini ukushona komuntu, zama ukubacacisela ukuthi umuntu abamthandayo angeke asabuya. Zama ukungasho ukuthi 'ulele' noma 'uthathe uhambo'.\n- Abantwana asebethe ukukhula bangakuqonda ukuthi kuyini ukushona komuntu, kodwa bangasokola ukukhuluma noma ukumelana nemizwa yabo.\n- Intsha ingamelana nalesisimo ngezindlela ezahlukahlukene: ukukhala, ukuthetha, ukungakholwa noma ithule kakhulu. Konke lokhu kulungile. Batshele ukuthi unabo.\n- Vumela ithuba lemibuzo nokuxoxa. Thembeka. Kulungile ukusho uma ungazi.", + "SourceText": "Think about the last time someone thanked you, or said you did something great.", + "text": "Cabanga ngesikhathi lapho kukhona owakubonga, noma owathi wenze into enhle.", "type": "template", "note": "" }, { - "SourceText": "- Teens might be sad, angry, not understand or not believe it, feel numb, feel unwell or have pains, nightmares or problems at school. Your teen may seem happy, but still be sad. They may get closed off and want to spend more time with friends. They may also show unexpected or dangerous behaviour. These may not make sense to you, but all of this is normal. \n- Teens may feel like it was their fault – that they passed on the virus, or that they behaved badly. Tell them clearly that they did nothing wrong.", - "text": "Umntwana angaba nokudangala, ukucasuka, ukungaqondi, ukungakholwa, ukuzizwa ndikindiki, uzizwa engaphilile noma, amaphupho amabi nezinkinga esikoleni. Umntwana wakho angabukeka ejabulile kodwa ebephatheke kabi. Bangazizwa bevalelekile futhi bafune ukuchitha isikhathi nabangani. Bangabuye babonise ukuziphatha okungalindelekile noma ukuziphatha okunobungozi. Kungangenzi mnqodo lokhu kuwe kodwa konke kujwayekile.\n-Abantwana bangazizwa ngathi kuyiphutha labo - ukuthi yibona abadlulise igciwane noma baziphathe kabi. Batshele ngokucacile ukuthi abenzanga lutho olubi.", + "SourceText": "How did it make you feel?", + "text": "Wazizwa kanjani?", "type": "template", "note": "" }, { - "SourceText": "- Explain that grief comes with many emotions and reactions. Show your teen that they are loved and cared for, and encourage them to share their emotions by talking, writing or drawing. \n- If there is a support group that your teen can be part of, this can help. \n- If a teen talks about wanting to hurt or kill themselves, ask for help from someone as soon as you can. \n- If you can, keep your normal daily routines, this can be comforting for teens. \n- It can help for teens to be part of rituals around death - to choose a song or something to say. \n- Spending a few minutes every day focused on your teen helps to make them feel more secure and give them a chance to relax or talk about things that are upsetting them.", - "text": "-Chaza ukuthi usizi luza nemizwa eminingi nezenzo ezingi. Tshengisa umntwana wakho ukuthi uyathandwa futhi unakekelwe, umkhuthaze ukuthi akhulume ngemizwa yakhe noma ayibhale phansi noma ayidwebe.\n-Uma kuneqembu elesekanayo angaba yingxenye yalo umntwana, kungasiza.\n-Uma umntwana ekhuluma ngokufuna ukuzilimaza noma ukuzibulala, cela usizo komunye umuntu ngokushesha.\n-Uma ungakwazi, gcina izinqubo zenjwayelo zansuku zonke, lokhu kungaba yiduduza entsheni.\n-Kungayisiza intsha ukuba yingxenye yamasiko noma imisebenzi emayalana nokushona komuntu - ukukhetha iculo noma ukusho okuthile.\n-Ukuchitha imizuzu embalwa nsuku zonke ugxile emntwaneni wakho kuyamsiza ekutheni azizwe evikelekile futhi kumnikeze ithuba lokuphumula noma lokuxoxa ngeznto ezimkhathazayo.", + "SourceText": "Parents usually don’t get thanked or praised enough.", + "text": "Akuvamile ukuthi abazali babongwe noma banconywe ngokwanele.", "type": "template", "note": "" }, { - "SourceText": "Losing a loved one can feel very overwhelming. Here are a few practical tips that can be helpful to keep in mind.", - "text": "Ukulahlekelwa umuntu omthandayo kungazwakala kunzima kakhulu. Naka macebo angaba usizo okufanele uwangcine emqodweni.", + "SourceText": "How does it make you feel when nobody says \"thank you\"?", + "text": "Kukwenza uzizwe kanjani uma kungekho muntu othi “ngiyabonga”?", "type": "template", "note": "" }, { - "SourceText": "Ask for help", - "text": "Cela usizo", + "SourceText": "Tired", + "text": "Ukhathele", "type": "template", "note": "" }, { - "SourceText": "Say goodbye", - "text": "Valelisa", + "SourceText": "Your teen can feel this way too. That's what makes this week's parenting tool simple but important: Praise them for what they do right.", + "text": "Ingane yakho ingazizwa ngalendlela nayo. Yilokho okwenza ithuluzi lokuba umzali laleli viki libe elibalulekile kodwa elilula: Bancome ngezinto ezinhle abazenzayo.", "type": "template", "note": "" }, { - "SourceText": "- Ask someone you trust for help - food or childcare can be useful. You may need documents for inheritance, for your children, or to access services.\n- Sometimes people try to take money or inheritance from a grieving person. Find out about your rights.", - "text": "- Cela usizo kumuntu omethembayo- ukudla noma ukunakekelwa kwengane kungaba usizo. Kungenzeka udinge amaphepha efa lezingane noma ukuthola izinsiza. \n- Ngesinye isikhathi abantu bazama ukuthatha imali kumuntu ososizini. Thola ulwazi ngamalungelo akho.", + "SourceText": "How did praise make @global.w_praise_female_caregiver_name's teens feel?", + "text": "Ukunconywa kwenze -@global.w_praise_female_caregiver_name izingane zazizwa kanjani?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "- Saying goodbye is difficult. Do what feels okay for you and your teen. \n- Families, teens and parents are not perfect. When someone has died, it is okay to talk about the good and bad things we remember. \n- It can help to write a letter or make a drawing for the person who has gone. \n- Some people hold a ceremony or have a special meal to celebrate the person, and say goodbye. \n- It can help to make a box of memories, to put things that remind you and your teen of the person. \n- It can help just to talk about the person when you think about them.", - "text": "- Kunzima ukuvalelisa. Yenza lokho okukulungele wena nomntwana wakho.\n- Imindeni, intsha nabazali abekho msulwa. Uma umuntu eshonile, kulungile ukukhuluma ngokuhle nokubi esikukhumbulayo.\n- Kungasiza ukumbhalela incwadi noma ukumdwebela lomuntu oshonile.\n- Abanye abantu benza umcimbi noma babe nesidlo esikhethekile ukubungaza lowomuntu nokuvalelisa.\n- Kungasiza ukwenza ibhokisi lezikhumbuzo lokufaka izinto ezikhumbuza wena nomntwana wakho ngalowomuntu.\n- Kungasiza ukukhuluma nje ngalowomuntu uma umcabanga.", + "SourceText": "Why did she praise them?", + "text": "Kungani aye wazincoma?", "type": "template", "note": "" }, { - "SourceText": "At the end of the day, take a minute to: \n\n* Talk to your teen about one fun thing they did. \n* Praise yourself for one thing you did well today. \n* You are a star!", - "text": "Ekupheleni kosuku, zinike umzuzu wokwenza lokhu: \n\n* Khuluma nengane yakho esebusheni bayo ngento eyodwa emnandi ayenzile. \n* Zincome ngento eyodwa oyenze kahle namhlanje. \n* Uyiqhawe!", + "SourceText": "To get them to do it more often", + "text": "Ukuze abakwenzayo bakwenze ngokwengeziwe", "type": "template", "note": "" }, { - "SourceText": "* Ask each other, “What made you happy today?”\n* Ask each other, “What difficulty did you face today?”\n* Ask each other, “How can I help you?”\n* Try to do this together every day; it could be when you are eating dinner together or before you go to bed.", - "text": "* Buzanani, “Yini ekwenze wajabula namuhla?”\n* Buzanani, “Yibuphi ubunzima oye wabhekana nabo namuhla?”\n* Buzanani, “Ngingakusiza kanjani?”\n* Zamani ukwenza lokhu ndawonye nsuku zonke; kungaba lapho nidla isidlo sakusihlwa ndawonye noma ngaphambi kokuba niyolala.", + "SourceText": "To help her finish her work", + "text": "Ukuze amsize aqedele umsebenzi wakhe", "type": "template", "note": "" }, { - "SourceText": "* You can’t always travel, but you can always dream! Ask your teen these questions:\n* Where would you want to travel to? How long would you be away? What would you pack? What would you do on your trip? What would you see?\n* Look at a map together or draw one.\n* Choose a country that your teen has never heard of and learn more about the country.", - "text": "* Ngeke ukwazi ukuthatha uhambo ngaso sonke isikhathi ofisa ngaso, kodwa ungaphupha njalo! Buza ingane yakho esebusheni bayo le mibuzo:\n* Ungathanda ukuthatha uhambo oluya kuphi? Uzohamba isikhathi eside kangakanani? Yini ozoyipakisha? Yini ozoyenza ohambweni lwakho? Yini ozoyibona?\n* Bukani ibalazwe ndawonye noma nilidwebe.\n* Khetha izwe ingane yahoo esebusheni bayo engakaze izwe ngalo bese nifunda okwengeziwe ngalelo zwe.", + "SourceText": "To make them feel good", + "text": "Ukubenza bazizwe bejabule", "type": "template", "note": "" }, { - "SourceText": "You and your teenager can plan a guestlist of the famous people you’d most like to invite to your party. You can each have five people – they can be from the past or from the present time. Who would you invite? And would your guests get on well together?", - "text": "Wena nengane yahoo esebusheni bayo ningabhala uhlu losaziwayo eningathanda ukubamema emcimbini wakho. Ngamunye angaba nabantu abahlanu – kungaba abantu bangesikhathi esidlule noma bamanje. Ungamema obani? Ingabe izimenywa zakho zizozwana?", + "SourceText": "To make herself feel good", + "text": "Ukuze azizwe ejabule", "type": "template", "note": "" }, { - "SourceText": "* Think of three statements about yourself. Two must be true and one must be a lie.\n* It might help to think of wishes, dreams, experiences at school, likes or dislikes. For example: I hate bananas, my favourite subject is science, and I really wish I could sing. \n* Say them to your teenager and ask them to guess which one is a lie. \n* Did they guess correctly? Was it a surprise?\n* Now ask them to do the same. Did you learn something new about each other?", - "text": "* Cabanga ngezitatimende ezintathu mayelana nawe. Ezimbili kumelwe zibe yiqiniso bese esisodwa sibe amanga.\n* Kungasiza ukucabanga ngezifiso, amaphupho, okwenzeka esikoleni, okuthandayo noma ongakuthandi. Ngokwesibonelo: Ngiyawazonda amabhanana, isifundo engisithanda kakhulu yisayensi, futhi ngifisa ngabe ngiyakwazi ukucula. \nYisho lokhu enganeni yahoo esebusheni bayo bese uyicela ukuba iqagele ukuthi yikuphi okungamanga. \n* Ingabe iqagele ngokunembile? Ingabe kuyimangazile?\n* Manje yicele ukuba yenze okufanayo. Ingabe kukhona okusha enikufundile ngomunye nomunye?", + "SourceText": "All of those things are true! \n\nWhen her teens are happy, @global.w_praise_female_caregiver_name feels happy. And she got her work done.", + "text": "Zonke lezi zinto ziyiqiniso! \n\nUma abantwana bakhe bejabule, @global.w_praise_female_caregiver_name uyajabula. Futhi ukwaze ukuqeda umsebenzi wakhe.", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Tell your teenager something about when you were a teenager yourself. What things didn’t exist then? Phones with internet? What did you do for fun? What did you worry about? Don’t worry if they don’t tell you something in return – what’s important is that they listen and remember. Sometimes our teenagers forget that their parents are people too!", - "text": "Xoxela ingane yakho esebusheni bayo ngokuthile okwenzeka ngesikhathi usemusha nawe. Yiziphi izinto ezazingekho ngaleso sikhathi? Omakhalekhukhwini abane-inthanethi? Yini enaniyenza yokuzijabulisa? Yini owawukhathazeka ngayo? Ungakhathazeki uma ingane yakho ingakutsheli lutho – okubalulelkile ukuthi ikulalele futhi iyakhumbula. Ngezinye izikhathi intsha yethu iyakhohlwa ukuthi abazali bayo bangabantu nabo!", + "SourceText": "Praise really is powerful. \n\nLet’s look at the example of @global.w_praise_female_caregiver_name and her daughters:", + "text": "Ngempela ukuncoma kunamandla. \n\nAke sibone isibonelo sika @global.w_praise_female_caregiver_name nendodakazi yakhe:", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "* Think of a superpower. For example, going anywhere instantly, travelling in time, reading minds. \n* Ask your teen, “If you had the superpower to […], how would you use it?”\n* Encourage them to give their superhero a name and act it out. \n* Now let your teen choose a superpower for you.\n* Make sure you act out your superpower, too!", - "text": "* Cabanga ngokuba namandla angaphezu kwavamile. Ngokwesibonelo, ukuya noma ikuphi ngokuphazima kweso, ukuya enkathini esadlula, ukubona imicabango yabantu. \n* Buza ingane yakho esebusheni bayo “Uma ubunamandla angaphezu kwawemvelo oku […], ubungawasebenzisa kanjani?”\n* Yikhuthaze ukuba iqambe iqhawe layo igama. \n* Manje vumela engane yakho esebusheni bayo ukuba ikukhethele amandla angaphezu kwawemvelo.\n* Qinisekisa ukuthi nawe uyawalingisa amandla akho angaphezu kwawemvelo!", + "SourceText": "When @global.w_praise_female_caregiver_name is busy, her two daughters often fight. But today, her older daughter actually helped her sister with her schoolwork!", + "text": "Ngesikhathi u @global.w_praise_female_caregiver_name ematasa, amadodakazi akhe amabili avamise ukulwa. Kodwa namuhla, indodakazi yakhe endala isize udadewabo ngomsebenzi wesikole!", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Have a conversation with your teen about something they like.\n\nIt can be about anything they choose to talk about: sports, friends, music, celebrities…\n\nTry to listen to your teen and give them space to talk.", - "text": "Xoxa nengane yakho esebusheni bayo ngokuthile ekuthandayo.\n\nKungaba yinoma yini ekhetha ukuxoxa ngayo: ezemidlalo, abangane, umculo, osaziwayo…\n\nZama ukulalela ingane yahoo esebusheni bayo futhi uyivumele ukuthi ikhulume.", + "SourceText": "@global.w_praise_female_caregiver_name: \"Thank you for doing your schoolwork, @global.w_praise_girl, and thank you for helping your sister, @global.w_praise_teen_girl. I'm so proud of you!\"", + "text": "@global.w_praise_female_caregiver_name: \"Ngiyabonga ngokuthi wenze umsebenzi wakho wesikole, @global.w_praise_girl, ngiyabonga ngokuthi usize udadewenu, @global.w_praise_teen_girl. Ngiyaziqhenya kakhulu ngani!\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_praise_female_caregiver_name\n@global.w_praise_girl\n@global.w_praise_teen_girl" }, { - "SourceText": "* Choose a storyteller to start making up a story.\n* Story listeners can interrupt with a word at any time.\n* Storyteller needs to fit that word in their story.\n* When the story is finished, try with a different storyteller!", - "text": "* Khetha umxoxi wezindaba ukuze uqale ukwenza indaba.\n* Abalalele indaba bangaphazamisa noma inini ngokusho igama elithile.\n* Oxoxa indaba kudingeka asebenzise lelo gama endabeni yakhe.\n* Lapho indaba iphela, zamani umxoxi wendaba ohlukile!", + "SourceText": "Step 1: Share what went well and what was hard", + "text": "Isinyathelo 1: Sixoxele ngokuhambe kahle nokuthi ikuphi okube nzima", "type": "template", "note": "" }, { - "SourceText": "* Think of three different situations. For example, driving a car, sailing a boat or flying a plane.\n* Say them to your teen and ask, “Which would you prefer?”\n* Ask them why?\n* Now think of three more situations or ask your teen to do it for you.", - "text": "* Cabanga ngezimo ezintathu ezihlukahlukene. Ngokwesibonelo nje, ukushayela imoto, ukuhamba ngesikebhe noma ukushayela indiza.\n* Yisho lokhu enganeni yahoo esebusheni bayo bese uyayibuza, “Yikuphi ongakuthandar?”\n* Yibuze ukuthi kungani?\n* Manje cabanga ngezimo ezintathu noma ucele ingane yakho esebusheni bayo ukuthi ikwenzele lokho.", + "SourceText": "\"I learned so much more about my teen’s life when we spent one-on-one time! But after the first day, my teen only wanted to play on his phone.\"", + "text": "“Ngifunde okuningi ngompilo yomntwana wami, uma sichitha isikhathi ndawonye! Kodwa ngemva kosuku lokuqala, umntwana wami ubefuna ukudlala ngefoni yakhe kuphela.”", "type": "template", "note": "" }, { - "SourceText": "* Ask each other questions. They can be any questions about things you like or what you did today.\n* The only rule is that you can’t answer “Yes”, “No” or “Maybe”.\n* How long can you last? How creative can you get with your answers?\n* Swap over and play again!", - "text": "* Buzanani imibuzo. Ingakubuza noma yimiphi imibuzo ngezinto ozithandayo noma ngalokho okwenzile namhlanje.\n* Ukuphela komthetho yilowo othi awukwazi ukuphendula uthi “Yebo”, “Cha” noma “Mhlawumbe”.\n* Ungabuza imibuzo isikhathi eside kangakanani? Bungakanani ubuciko obungabusebenzisa ezimpendulweni zakho?\n * Shintshanani bese niyadlala futhi!", + "SourceText": "Step 2: Bring ideas!", + "text": "Isinyathelo 2: Veza amacebo!", "type": "template", "note": "" }, { - "SourceText": "* First person says, “On Saturday, I am going to… (e.g., go to the park)”\n* Second person adds to first person, “On Saturday, I am going to the park and… (e.g., visit my best friend).\n* Each person adds to the previous, trying to think of all of the fun things to do on Saturday.", - "text": "* Umuntu wokuqala uthi, “NgoMgqibelo, ngizoya... (isibonelo, epaki)”\n* Umuntu wesibili uyengeza kulokho okushiwo owokuqala, \"NgoMgqibelo, ngizoya epaki futhi...(isib., ngivakashele umngane wami omkhulu).\n* Umuntu ngamunye uyengeza kokudlule ezama ukucabanga ngazo zonke izinto ezijabulisayo angazenza ngoMgqibelo.", + "SourceText": "\"Well done for trying! Maybe you could suggest some other fun things you could do together with your teen.\"\n\n\"Yes, or you could do something together on his phone? Or he could show you how his phone works?\"", + "text": "“Wenze kahle ngokuzama! Mhlawumbe ungaveza ezinye izinto ezimnandi eningazenza ndawonye nengane yakho. \n\n“Yebo, noma ningenza okuthile kumakhalekhukhwini wakhe ndawonye? Noma angakubonisa ukuthi ifoni yakhe isebenza kanjani?”", "type": "template", "note": "" }, { - "SourceText": "* Start the story with “Once upon a time there was a…”\n* Let your teen make up the next sentence.\n* Then you make up a sentence.\n* Take turns until you have a wonderful new story.\n* Make sure to end the story on a positive note.\n* Ask your teen what was their favourite part of the story!", - "text": "* Qala indaba yakho ngamazwi athi “Kwasukasukela kwakukhona…”\n* Vumela ingane yakho esebusheni bayo ukuba yakhe umusho olandelayo.\n* Ngemva kwalokho kuba nguwe owakha umusho.\n* Shintshananani njengoba niqamba indaba entsha emnandi.\n* Qinisekisa ukuthi ingoma iphela kamnandi.\n* Buza ingane yakho esebusheni bayo ukuthi iyiphi indawo eyithande kakhulu endabeni!", + "SourceText": "Step 3: Pick and try one!", + "text": "Isinyathelo 3: Khetha bese uzama okukodwa!", "type": "template", "note": "" }, { - "SourceText": "* Ask your teen what kind of meal they would like to eat. \n* Prepare it together! \n* Let them have a turn at being the head chef – they lead, and you follow their instructions. \n* You can even help them to make a budget for the ingredients! \n\nDon’t think it will work? Ask your teens what THEY would like for you and them to do together. Let them lead. Relax. Have fun.", - "text": "* Buza ingane yakho esebusheni bayo ukuthi yini engathanda ukuyidla. \n* Kuphekeni ndawonye lokho kudla! \n* Yivumele ibe umpheki omkhulu – ihole, wena ulandele iziqondiso zayo. \n* Ungayisiza nokuthi yenze isabelomali sokuthenga izinto zokupheka! \n\nUcabanga ukuthi kuzosebenza? Buza izingane zakho ezisebusheni bazo ukuthi yini EZINGATHANDA ukuba wena nazo ningayenze ndawonye. Zivumele zihole. Khululeka. Zijabulise.", + "SourceText": "“Thank you for those great ideas! Yes, let me ask my teen to show how his phone works tomorrow after school. Can one of you pretend to be my teen now, so I can practice asking?”", + "text": "“Ngiyabonga ngala macebiso amahle! Yebo, ake ngicele ingane yami ingibonise ukuthi ifoni yayo isebenza kanjani kusasa uma iphuma esikoleni. Ngicela manje omunye kini azenze ingane yami, ukuze ngikwazi ukuprakthiza ukumcela?”", "type": "template", "note": "" }, { - "SourceText": "* Create a set of dance moves to your teen's favourite songs. \n* One person does a dance move and everyone else copies it. \n* Everyone takes turns being the leader. \n* Perform it for the household!", - "text": "* Dala isethi yokunyakaza komdanso ezingomeni eziyintandokazi zentsha yakho.\n* Umuntu oyedwa uyadansa bese bonke abanye belingisa umdanso awenzayo. \n* Wonke umuntu uthola ithuba lokuhola umdanso. \n* Yenzela umndeni!", + "SourceText": "Think about how your home activities went this week. \n\nTake turns to discuss:\n\n* What went well and what was a problem?\n* What solutions can you think of together?\n* Pick one solution and try it later with your teen! \n\n(Or you can even practice it now so it will be easier later!)", + "text": "Cabanga ngokuthi imisebenzi yakho yasekhaya ihambe kanjani kuleli sonto. \n\nNikanani amathuba okuxoxa:\n\n* Yini ehambe kahle futhi yini ebe yinkinga?\n* Yiziphi izixazululo eningazicabanga ndawonye?\n* Khetha isixazululo esisodwa bese uyasizama kamuva nengane yakho! \n\n(Noma ungayiprakthiza khona manje ukuze kube lula kamuva!)", "type": "template", "note": "" }, { - "SourceText": "* This game can be played in pairs or with many people in a group.\n* Stand facing each other or in a circle. \n* One person leads first and everyone else copies them, trying to move exactly at the same time as the leader.\n* Make sure the leader moves slowly enough for everyone else to follow! Explore moving different body parts and in different levels.\n* After a while, switch who is leading. Give everyone a chance to lead.\n* Try it with no leaders!", - "text": "* Lo mdlalo ungadlalwa lapho nibabili noma niwudlale nabantu abaningi njengeqembu.\n* Yimani nibhekane noma nime nenze indilinga. \n* Kuhola umuntu oyedwa kuqala bese wonke umuntu elingisa lokho akwenzayo, kulingiswa konke okwenziwa umholi ngesikhathi esisodwa.\n* Qinisekisa ukuthi umholi akasheshi kakhulu ukuze wonke umuntu akwazi ukulingisa akwenzayo! Zama ukunyakazisa izitho ezihlukahlukene zomzimba ezigabeni ezihlukahlukene.\n * Ngemva kwesikhathi esithile, shintshani umuntu oholayo. Nikezani wonke umuntu ithuba lokuhola.\n* Kuzameni lokhu kungekho oholayo!", + "SourceText": "* Effects of praise\n* Story & discussion – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Try it out!\n* Home practice suggestions", + "text": "* Imithelela yokuncoma\n* Indatshana kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "* Think of a new skill you could learn together with your teen. For example, keeping a ball in the air or your foot, juggling, making soup?\n* Take turns in trying the new skill out.\n* Make sure to praise each other, and try to learn and play together!", - "text": "* Cabanga ngekhono elisha eningalifunda ndawonye nengane yakho esebusheni bayo. Ngokwesibonelo, ukugcina ibhola lisemoyeni noma onyaweni lwakho, ukuphonsa izinto eziningi emoyeni uphinde uzibambe zonke, ukwenza isobho?\n* Shintshanani ekuzameni ikhono elisha.\n* Qinisekisa ukuthi niyancomana, futhi nizame ukudlala ndawonye!", + "SourceText": "* Effects of praise\n* Story & reflection – that worked!\n* Tools: How to praise\nSEE IT - SAY IT - REPEAT IT\n* Home practice suggestions", + "text": "* Imithelela yokuncoma\n* Indatshana kanye nokucabanga ujule - okusebenzile!\n* Amathuluzi: Indlela yokuncoma\nKUBONE - KUSHO - KUPHINDE\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "* Come up with three types of exercise together. For example, walking, jogging, soccer or dancing.\n* Pick one together and try it out. \n* If you both like it, decide how often you are going to do it. Once or twice a week? Every morning?\n* Together think of ways to make it even more fun. Can you jog to a certain point? Take turns in being the coach? Motivate each other with a small free reward?", - "text": "* Khethani ndawonye izinhlobo ezintathu zokuzivocavoca. Ngokwesibonelo, ukuhamba, ukugijima, ukudlala ibhola noma ukudansa.\n* Khethani okukodwa ndawonye bese niyakuzama. \nUma nikuthanda nobabili, nqumani ukuthi nizokwenza izikhathi ezingaki. Kanye noma kabili ngesonto? Njalo ekuseni?\n* Ndawonye cabangani ngezindlela zokwenza lokhu kube mnandi kakhulu. Ungakwazi yini ukugijima uye endaweni ethile? Shintshanani ekubeni abaqeqeshi? Khuthazanani ngoumvuzo omncane wamahhala?", + "SourceText": "Share with each other:\n\n* When last did someone thank you or say you did something great? \n* How did it make you feel? \n* How does it feel if you are not thanked or praised for what you do? \n\nWe usually don’t get thanked or praised enough as parents. Maybe you can give your teens the right example and praise them first when they do something well!", + "text": "Xoxelanani:\n\n* Ugcine nini ukubongwa noma kuthiwe wenze kahle? \n* Kwakwenza wazizwa kanjani? \n* Uzizwa kanjani uma ungabongwa noma unconywe ngokuthile okwenzayo? \n\nNgokuvamile asibongwa noma sinconywe ngokwanele njengabazali. Mhlawumbe ungenza isibonelo esihle ngokuthi sincome abantwana bethu kuqala uma benze kahle!", "type": "template", "note": "" }, { - "SourceText": "* The first person gets to choose or sing a song.\n* Everyone else must guess the name of the tune (to make it harder they can guess the singer).\n* The first one to guess it right becomes the next leader.", - "text": "* Umuntu wokuqala uthola ukukhetha noma ukucula ingoma.\n* Wonke umuntu kufanele aqagele igama leculo (ukwenza kube nzima ukuqagela umculi).\n* Owokuqala ukuqagela kahle uba umholi olandelayo.", + "SourceText": "Let's discuss this story.", + "text": "Ake sixoxe ngale ndaba.", "type": "template", "note": "" }, { - "SourceText": "This game is best with at least 3 people.\n* Start in a circle and pass one “snap” around the circle (or a “clap” if you cannot snap).\n* You “snap” once to throw the “snap”, and once to catch it. Look at the person you are throwing it to. \n* The direction (up, down, straight, curved, rolling the ground) and force (hard, soft, medium) that you throw the snap should affect how the person catches it. \n* You can bounce the “snap”, throw it in the air, and catch it a few times before passing it. \n* When everyone gets good at this, you can start moving around the room, still passing the “snap”. \n* Can you throw under the leg? Behind the back? Through your head? Intercept a pass? Have fun with the “snap”!", - "text": "Lo mdlalo umnandi kakhulu lapho udlalwa okungenani abantu abathathu.\n* Qala endingilizeni udlulise umsindo owodwa owenza ngeminwe ujikeleze indilinga (noma ungashaya izandla kanye uma ungakwazi ukwenza umsindo ngeminwe).\n* Uwenza kanye umsindo weminwe ukuze uwudlulisele komunye, bese uwenza kanye ukuze uwamukele. Bheka umuntu odlulisela umsindo kuye. \n* Indawo oqondise kuyo (phezulu, phansi, okuqondile, okutshekile, okuginqika phansi) kanye namandla (kakhulu, kancane, ngendlela ephakathi nendawo) owasebenzisayo lapho udlulisa umsindo weminwe uthinta indlela umuntu awamukela ngayo. \n* Ungashayisa umsindo odongeni, uwuphonse emoyeni, uwubambe izikhathi ezimbalwa ngaphambi kokuba uwudlulisele phambili. \n* Lapho wonke umuntu esekwazi kahle ukukwenza lokhu, ningahambahamba egumbini nilokhu niqhubeka ngokudlulisela umsindo weminwe. \n* Ungakwazi yini ukuwuphonsa ngaphansi kwemileze? Ngemuva komhlane? Kujikeleze ikhanda? Uvimbe okuya komunye umuntu? Kujabuleleni ukudlala nge-”snap”!", + "SourceText": "Discuss together:\n\n* How did praise make @global.w_praise_female_caregiver_name's teens feel?\n* Why did she praise them?", + "text": "Xoxani ndawonye:\n\n* Ukunconywa kwenze-@global.w_praise_female_caregiver_name izingane zizizwe kanjani?\n* Kungani eye wazincoma?", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "Choose a sport or exercise to do together. Decide on a schedule. Are you going to do it every day? For how long? \n\nTry it out for a week. At the end of the week, ask yourself and your family these questions:\n* How is it going? \n* How did you feel at the start of the week? \n* How do you feel at the end of the week? \n* What can we do differently next week?", - "text": "Khetha umdlalo noma ukuzivocavoca eningakwenza ndawonye. Vumelanani ngohlelo. Ingabe nizokwenza nsuku zonke? Isikhathi esingakanani? \n\nKuzameni isonto elilodwa. Ekupheleni kwesonto, zibuze wena kanye nomndeni wakho le mibuzo:\n* Kuhamba kanjani? \n* Uzizwe kanjani ekuqaleni kwesonto? \n* Uzizwe kanjani ekupheleni kwesonto? \n * Yini esingayenza ngendlela ehlukile?", + "SourceText": "The same can work for you!", + "text": "Nawe kungakusebenzela lokhu!", "type": "template", "note": "" }, { - "SourceText": "Take turns being the “leader”. Say the intro sentences to activate everyone. Then the “leader” gives an instruction and everyone does the activity as fast as possible:\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Touch something red.” \n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Jump up and down ten times.”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “There’s a fire on the mountain!” \n* Together: “Run, run, run!”\n* Leader: “Put the shoes in the shoe rack.”", - "text": "Shintshanani ngokuba “umholi”. Yisho imisho eyisethulo ukuze wonke umuntu aqale. “Umholi” ube esenikeza isiqondiso bese wonke umuntu enza umsebenzi ngokushesha ngangokunokwenzeka:\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Thinta okuthile okubomvu.” \n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Gxuma gxuma izikhathi eziyishumi.”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Kunomlilo phezu kwentaba!” \n* Ndawonye: “Baleka, baleka, baleka!”\n* Umholi: “Beka izicathulo endaweni yokubeka izicathulo.”", + "SourceText": "@global.w_praise_female_caregiver_name praised her teens...", + "text": "@global.w_praise_female_caregiver_name uncome izingane zakhe..... ", "type": "template", - "note": "" + "note": "The string @global.w_praise_female_caregiver_name should not be translated." }, { - "SourceText": "This game is best when more than 2 people play.\n* One person pretends to be doing something – for example, combing hair or making dinner. \n* Another person asks, “What are you doing?”\n* The first person needs to say something that has nothing to do with combing hair, for example, “Tying my shoes.” \n* The second person then starts pretending to tie their shoes until a new person asks, “What are you doing?” \n\nThe answer must always be something different than what you are actually doing!", - "text": "Lo mdlalo umnandi kakhulu lapho udlalwa abantu abangaphezu kwababili.\n* Umuntu oyedwa wenza sengathi wenza into ethile – ngokwesibonelo, ukukama izinwele noma ukupheka isidlo sakusihlwa. \n* Omunye umuntu uyabuza, “Wenzani?”\n* Umuntu wokuqala kudingeka asho okuthile okungahlobani nokukama izinwele, ngokwesibonelo, “Ngibopha izicathulo.” \n* Umuntu wesibili ube eseqala ukwenza sengathi ubopha izicathulo kuze kubuze umuntu omusha, “Wenzani?” \n\nImpendulo kumele ihluke njalo kulokho osuke ukwenza ngempela!", + "SourceText": "* To get them to do it more often\n* To help her finish her work \n* To make them feel good \n* To make herself feel good", + "text": "* Ukuze ezikwenzayo zikwenze ngokwengeziwe\n* Ukuze amsize aqedele umsebenzi wakhe \n* Ukuze azenze zizizwe zijabule \n* Ukuze azizwe ejabule", "type": "template", "note": "" }, { - "SourceText": "* Shake your left hands in the air 8 times while counting to 8.\n* Do it as fast and loud as you can.\n* Repeat with your other hand. Repeat with both feet.\n* Do it 7 times, then 6 times and continue until you get to 1.\n* Everyone calls out “Crazy chicken” and does their best crazy chicken dance!", - "text": "*Nyakazisa izandla zakho kwesokunxele emoyeni izikhathi ezu -8 ngenkathi ubala ukuya ku-8.\n* Kwenze ngokushesha futhi umemeze kakhulu ngangokunokwenzeka.\n* Kuphinde lokho ngesinye isandla sakho. Kuphinde ngazo zombili izinyawo.\n* Kwenze izikhathi ezingu-7, bese kuba yizikhathi ezingu-6 uqhubeke njalo uze ufike ku-1.\n* Wonke umuntu kumele amemeze athi “Inkukhu esanganayo” bese benza okusemandleni abho ukudansa njengenkukhu esanganayo!", + "SourceText": "SEE IT", + "text": "KUBONE", "type": "template", "note": "" }, { - "SourceText": "Quick Parenting Tips", - "text": "Amacebiso Asheshayo Okuba Umzali", + "SourceText": "Look for anything your teen does that is helpful or good, and praise them for it. They may not show it, but you’ll see them doing that good thing again. It will also reassure them that you notice and care.", + "text": "Bheka noma yini ingane yakho ekwenzayo ewusizo noma okuhle, bese umncomela kona. Kungenzeka ingakubonisi kona, kodwa uzobona ziphinde zikwenza lokho okuhle futhi. Kuzobaqinisekisa ukuthi uyakubona futhi uyabakhathalela.", "type": "template", "note": "" }, { - "SourceText": "Raising teens can be hard, and we all struggle sometimes.", - "text": "Ukukhulisa intsha kungase kube nzima, futhi sonke sidonsa kanzima ngezinye izikhathi.", + "SourceText": "SAY IT", + "text": "KUSHO", "type": "template", "note": "" }, { - "SourceText": "What is the main challenge you are experiencing right now?", - "text": "Iyiphi inselele enkulu obhekene nayo njengamanje?", + "SourceText": "Be enthusiastic – really mean it when you say it!", + "text": "Yiba nentshiseko - yiba qotho kulokho okushoyo!", "type": "template", "note": "" }, { - "SourceText": "My relationship with my teen is not good", - "text": "Ubudlelwane bami nengane yami esebusheni bayo abubuhle", + "SourceText": "REPEAT IT", + "text": "KUPHINDE", "type": "template", "note": "" }, { - "SourceText": "My teen’s behaviour is difficult", - "text": "Ukuziphatha kwengane yami esebusheni bayo kuyinkinga", + "SourceText": "Try to find something to thank them for every day. Even something really small.", + "text": "Zama ukuthola okuthile ongayibonga ngakho ingane yakho usuku nosuku. Ngisho nento encane .", "type": "template", "note": "" }, { - "SourceText": "I feel stressed, lonely, angry", - "text": "Ngizizwa ngicindezelekile, nginesizungu, ngithukuthele", + "SourceText": "You can also praise other adults in your household, too. Notice how they respond!", + "text": "Ungancoma nabantu abadala ekhaya lakho. Qaphela indlela abasabela ngayo!", "type": "template", "note": "" }, { - "SourceText": "I have money worries", - "text": "Ngikhathazekile ngemali", + "SourceText": "Let's practice giving praise.", + "text": "Ake siphrakthize ukuncoma.", "type": "template", "note": "" }, { - "SourceText": "I worry about my teen’s safety", - "text": "Ngiyakhathazeka ngokuphepha kwengane yami esebusheni bayo", - "type": "template", + "SourceText": "Share with each other: \n\n* What can you praise your teen for? \n* What has someone else done well during this workshop? Tell them!\n* How did it make you feel to praise someone?\n* How did it make you feel to be praised?", + "text": "Khulumisanani: \n\n* Yisiphi isizathu esingakwenza uncome ingane yakho? \n* Yini othile ayenze kahle phakathi nalokhu kuqeqeshwa? Batshele! \n* Kukwenze wazizwa kanjani lapho uncoma omunye umuntu? \n* Kukwenza wazizwa kanjani lapho unconywa?", + "type": "template", "note": "" }, { - "SourceText": "We often fight in our family", - "text": "Sivame ukulwa emndenini wami", + "SourceText": "Sometimes it’s hard to think of what to praise your teen for! Here are some ideas from other parents:", + "text": "Ngezinye izikhathi kunzima ukucabanga ukuthi yini ongamncomela yona umntwana wakho! Nanka amanye amacebo avela kwabanye abazali:", "type": "template", "note": "" }, { - "SourceText": "I have a different problem…", - "text": "Nginenkinga ehlukile…", + "SourceText": "* Being kind to someone \n* Cleaning their room \n* Joining a family meal \n* Greeting other family members \n* Looking after siblings \n* Coming home in time \n* Showing thoughtfulness \n* Saying 'please' or 'thank you' \n* Going to school \n* Doing chores or schoolwork \n* Getting through mealtime peacefully", + "text": "* Ukuba nomusa komunye umuntu \n* Ukuhlanza igumbi lakhe \n* Ukuhlanganyela esidlweni somndeni \n* Ukubingelela amanye amalungu omndeni \n* Ukunakekela ozalwa nabo \n* Ukufika ekhaya ngesikhathi \n* Ukubonisa ukucabangela \n* Ukuthi 'ngiyacela' noma 'ngiyabonga' \n* Ukuya esikoleni \n* Ukwenza imisebenzi yasekhaya noma ukwenza umsebenzi wesikole wasekhaya \n* Ukudla ngokuthula", "type": "template", "note": "" }, { - "SourceText": "Building a better relationship starts with spending time together - even 5 minutes a day makes a difference! At first, it can be hard to spend time together, as we are all busy and our teens can be in a bad mood sometimes. But spending even 5 minutes a day of focused time with your teen helps to build trust. Try asking your teen what they would like to do together. It can be fun and relaxing for you too!", - "text": "Ukwakha ubuhlobo obungcono kuqala ngokuchitha isikhathi ndawonye - ngisho nemizuzu emihlanu ngosuku iyawenza umehluko! Ekuqaleni, kungase kube nzima ukuchitha isikhathi ndawonye, njengoba sonke simatasa futhi izingane zethu ezisebusheni bazo zingase zizizwe zingeneme ngezinye izikhathi. Kodwa ukuchitha ngisho nemizuzu eyisihlanu-5 ngosuku ugxile enganeni yakho esebusheni bayo kuyasiza ekwakheni ukwethembana. Zama ukubuza ingane yakho esebusheni bayo ukuthi yini engathanda niyenze ndawonye. Kungaba mnandi futhi kukukhulule nawe!", + "SourceText": "Great to hear that you are doing well. You are a wonderful parent!", + "text": "Ngiyajabula ukuzwa ukuthi kukuhambela kahle. Ungumzali omangalisayo!", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to spend one-on-one time with your teen here:", - "text": "Ungathola ukusekelwa okwengeziwe ngokuphathelene nendlela yokuchitha isikhathi nobabili nengane yakho esebusheni bayo la:", + "SourceText": "Sorry that you are not having the best day. Well done for trying to figure everything out. Nobody has all the answers but you really do your best!", + "text": "Ngiyaxolisa ngokuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuzama ukwazi ngalokhu. Akekho umuntu onezimpendulo zayo yonke imibuzo kodwa wenza konke okusemandleni akho!", "type": "template", "note": "" }, { - "SourceText": "All teenagers sometimes behave just horribly! One thing that can help with teenage behaviour is to praise them any time that they do something good – however small. Teens may not look like they want or seek your praise but they still really, really do.", - "text": "Yonke intsha ngezinye izikhathi iziphatha ngendlela engathandeki! Into eyodwa engasiza ekuziphatheni kwengane yakho esebusheni bayo ukuncoma ingane yakho noma nini lapho yenza kahle - noma ngabe kuncane kanjani. Izingane ezisebusheni bazo zingabukeka sengathi azikuthandi ukunconywa nguwe kodwa empeleni zikuthanda ngempela.", + "SourceText": "Sorry to hear that you are not having a good day. Well done for getting up every morning and trying again, even when you are tired. That is real courage and dedication!", + "text": "Ngiyaxolisa ukuzwa ukuthi usuku lwakho aluhambi kahle. Wenza kahle ngokuthi uvuke njalo ekuseni ukuze uzame futhi, ngisho noma ukhathele. Lokhu kubonisa ukuzimisela nokuzinikela!", "type": "template", "note": "" }, { - "SourceText": "You can get more support here on how to encourage good behaviour through praising:", - "text": "Ungathola ukwesekwa okwengeziwe lapha mayelana nendlela yokukhuthaza ukuziphatha kahle ngokuncoma:", + "SourceText": "This week, set one rule together with your teen.\n\nRemember to praise your teen afterwards!", + "text": "Kuleli viki, bekani umthetho owodwa nengane yakho.\n\nKhumbula ukuncoma ingane yakho ngemva kwalokho!", "type": "template", "note": "" }, { - "SourceText": "Parenting stress is really high right now. We know exactly how overwhelming life can be. Doing something for yourself can reduce your stress. You deserve it! And when you feel overwhelmed, take back control over your body by taking five slow, deep breaths before responding. Lots of parents found this helpful.", - "text": "Ukucindezeleka kokuba umzali kuphezulu kakhulu njengamanje. Siyazi ukuthi ukuphila kungakhungathekisa kangakanani. Ukuzenzela into ethile kunganciphisa ukucindezeleka kwakho. Kukufanele lokhu! Lapho uzizwa ukhungathekile, zilawule ngokuthi udonse umoya ngokunensa kahlanu ngaphambi kokuba uphendule. Abazali abaningi bathole lokhu kuwusizo.", + "SourceText": "make rules with their teens", + "text": "yenza imithetho kanye nentsha yabo", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to take care of yourself here:", - "text": "Ungathola ukusekelwa okwengeziwe mayelana nendlela ongazinakekela ngayo la:", + "SourceText": "Did you have any challenges when trying to make a rule together?", + "text": "Ingabe ube nobunzima obuthile lapho uzama ukubeka umthetho ndawonye?", "type": "template", "note": "" }, { - "SourceText": "You are not alone. Money stress is so hard for parents. Try talking to your teen about how much money comes in and what you need to spend money on as a family each month. This can help them to understand why you cannot afford something they want. And when everyone understands where the money goes, it is easier to agree on where you can save together too!", - "text": "Awuwedwa. Ukucindezeleka okubangelwa yimali kunzima kakhulu kubazali. Zama ukukhuluma nengane yakho esebushenibayo ngokuthi ingakanani imali engenayo nokuthi yini okudingeka nisebenzise imali kuyo njengomndeni inyanga ngenyanga. Lokhu kungayisiza iqonde ukuthi kungani ungeke ukwazi ukuthenga okuthile ekufunayo. Lapho wonke umuntu eqonda ukuthi imali iyaphi, kulula ukuvumelana nangokuthi ningayonga kanjani imali ndawonye!", + "SourceText": "What was difficult for you about making a rule with your teen?", + "text": "Yini ebinzima kuwe ngokubeka umthetho kanye nengane yakho esebusheni bayo?", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to budget and save here:", - "text": "Ungathola ukusekelwa okwengeziwe mayelana nokwenza isabelomali nokonga imali la:", + "SourceText": "My teen and I could not agree on a rule.", + "text": "Mina nengane yami esebusheni bayo asikwazanga ukuvumelana ngomthetho.", "type": "template", "note": "" }, { - "SourceText": "Teens spend a lot of time outside the house or online, where it is harder for us to keep them safe - many parents worry about this. Try to start a conversation with your teen about safe and unsafe places in your community and online (you might need to try a few times). They may even know some you do not. This can start to help you make a plan together about how to stay safe.", - "text": "Intsha ichitha isikhathi esiningi ingaphandle noma iku-inthanethi, lapho kunzima khona ngathi ukuba siyigcine iphephile - abazali abaningi bakhathazekile ngalokhu. Zama ukuqala ingxoxo nengane yakho esebusheni bayo ngezindawo eziphephile nezingaphephile emphakathini wakho naku-inthanethi (kungase kudingeke ukuba uzame izikhathi ezimbalwa). Kungenzeka yazi nalezo wena ongazazi. Lokhu kungakusiza ukuba nenze uhlelo ndawonye lwendlela yokuzigcina niphephile.", + "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", + "text": "Cabanga ngokuthi umthetho uyafaneleka yini. Ingabe ingane yakho esebusheni bayo iyakwazi ukuwulandela? Lapho nibeka imithetho njengomndeni, kuyasiza ukucabanga ngengane yenu, ukuthi ineminyaka emingaki nokuthi yini ebalulekile kuyo.", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to keep your teen safe here:", - "text": "Ungathola ukusekelwa okwengeziwe mayelana nokugcina ingane yakho esebusheni bayo iphephile la:", + "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", + "text": "Ingane yami esebusheni bayo ibe nomuzwa wokuthi akulungile ukuthi yona kumelwe ilandele umthetho kuyilapho mina kungadingeki ngiwulandele.", "type": "template", "note": "" }, { - "SourceText": "When a problem comes up, try to talk about it together. What is the problem exactly? What different solutions are there and what are the consequences of one? That way, you can find a solution that can be OK for everyone.", - "text": "Uma kuvela inkinga, zamani ukukhuluma ngayo ndawonye. Iyini kahle hle inkinga? Yiziphi izixazululo ezikhona kanti yimiphi imiphumela yezixazululo ngasinye? Ngaleyo ndlela, ungathola isixazululo esingafanela wonke umuntu.", + "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", + "text": "Kufanele sikhumbule njalo ukuthi izingane zifunda kangcono kuthina. Lapho silandela imithetho, kuba lula ngazo ukulandela imithetho. \n\nUngawushintsha umthetho ukuze uqinisekise ukuthi wonke umuntu uyakwazi ukuwulandela, ucabangela imithwalo yakho kanye nemithwalo yengane yakho (ngokwesibonelo, imisebenzi yesikole noma eyasekhaya).", "type": "template", "note": "" }, { - "SourceText": "You can get more support on how to solve problems together here:", - "text": "Ungathola ukwesekwa okwengeziwe mayelana nendlela yokuxazulula izinkinga la:", + "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", + "text": "Ngizizwe ngingakhululekile, ngoba nginomuzwa wokuthi kufanele kube imina obeka umthetho hhayi ingane yami esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "It is not easy to look after our families. We all have challenges sometimes, but we hope this app will help you navigate them well. @global.parent_app is based on ten years of experience running parenting programmes in South Africa, and thousands of parents have found that the tips that are shared help with many parenting challenges. We hope this app will help you and your family too.\n\nHere are some of the key proven tips for you:", - "text": "Akulula ukunakekela imindeni yethu. Sonke sibhekana nezinselele ngezikhathi ezithile, kodwa le-app izokusiza ubhekane nazo ngokuphumelelayo. @global.parent_app isekelwe ocwaningweni lweminyaka eyishumi lwezinhlelo zokukhulisa izingane eNingizimu Afrika, futhi izinkulungwane zabazali ziye zathola ukuthi amacebiso anikezwayo ayasiza ekubhekaneni nezinselele eziningi zokukhulisa izingane. Sinethemba lokuthi le-app izokusiza kanye nomndeni wakho.\n\nNanka amanye amacebiso ayinhloko avivinyiwe angakusiza:", + "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", + "text": "Engithandana naye uzizwe engakhululekile, ngoba unomuzwa wokuthi nguye okufanele abeke umthetho hhayi osemusha.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Start your first parenting workshop", - "text": "Qala umhlangano wokufundisana wakho wokuqala wokuba umzali", + "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", + "text": "Lapho sibeka imithetho ndawonye nentsha yethu, lokho kusiza umndeni uqondane kangcono. Imithetho kuyoba elandelekayo, futhi intsha yethu iyozimisela futhi ikwazi ukulandela imithetho.", "type": "template", "note": "" }, { - "SourceText": "You will get more support in the @local.workshop_data.in_text_title.", - "text": "Uzothola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", + "SourceText": "When we tried to set a rule, we got into an argument.", + "text": "Lapho sizama ukubeka umthetho, savele sanokukuphikisana.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "You can get more support in the @local.workshop_data.in_text_title.", - "text": "Ungathola ukwesekwa okwengeziwe ku-@local.workshop_data.in_text_title.", + "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", + "text": "Ingabe ingane yahoo esebusheni bayo ibisesimweni esikahle lapho uzama ukubeka umthetho? Kungcono ukubeka imithetho lapho isimo sizolile. Uma wena noma ingane yakho ikhathele noma ilambile, kungcono ukukhuluma ngemithetho ngesinye isikhathi.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Start the @local.workshop_data.in_text_title", - "text": "Qala i-@local.workshop_data.in_text_title", + "SourceText": "We were not able to stick to the rule.", + "text": "Siyahluleka ukunamathela emthethweni.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Finish the @local.workshop_data.in_text_title to get more support.", - "text": "Qedela i-@local.workshop_data.in_text_title ukuze uthole ukwesekwa okwengeziwe.", + "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", + "text": "Umthetho kudingeka uqonde futhi ulandeleke. Qinisekisa ukuthi lomthetho kulula ukuwulandela, njengokuba nesidlo esisodwa enisidla ndawonye njalo ngeSonto esikhundleni sokwenza lokho nsuku zonke. Ingabe kudingeka ube nomthetho ovumelana nezimo?", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Continue the @local.workshop_data.in_text_title", - "text": "Qhubeka ne-@local.workshop_data.in_text_title", + "SourceText": "Your goal was to make ONE rule with your teen this week.", + "text": "Umgomo wakho bekuwukwenza umthetho OWODWA nengane yakho esebusheni bayo kuleli sonto.", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Re-access the @local.workshop_data.in_text_title", - "text": "Phinde ungene ku-@local.workshop_data.in_text_title", + "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", + "text": "Wenze kahle kulokhu! Akulula, futhi intsha ngeke iyihloniphe imithetho ngaso sonke isikhathi, kodwa ukubeka imithetho embalwa esemqoka ndawonye kuyisiqalo esihle. Zincome ngokuzama lokhu - siyaziqhenya ngawe!", "type": "template", - "note": "The string @local.workshop_data.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Sit down, close your eyes and listen to your breath as it goes in and out. \n\nNotice how you feel. \n\nWhen you are ready, open your eyes again.", - "text": "Hlala phansi, uvale amehlo akho bese ulalela ukuphefumula kwakho njengoba umoya ungena uphuma. \n\nQaphela indlela ozizwa ngayo. \n\nLapho usukulungele, phinde uvule amehlo akho.", + "SourceText": "Rules help teens understand what is expected from them. \n\nTeens are more likely to follow rules if you create the rules WITH your teen and praise them for it!", + "text": "Imithetho yenza abantwana bethu ukuthi yini elindeleke kubo. \n\nAbantwana bayayilandela imithetho uma wenze imithetho NABO futhi ubancome ngalokho!", "type": "template", "note": "" }, { - "SourceText": "Try this whenever you are feeling stressed and you need a break to reconnect.", - "text": "Zama lokhu noma nini lapho uzizwa ucindezelekile futhi udinga ukuthatha ikhefu ukuze uzole.", + "SourceText": "Greetings, everyone. \n\nToday's topic is rules. \n\nRules promote peace within the household and promote understanding amongst family members. \n\nRules promote responsibilities for each family member; therefore, it is important to have family rules. \n\nA household with family rules lives in peace.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla imithetho. \n\nImithetho ikhuthaza ukuthula ekhaya futhi ikhuthaza ukuqondana phakathi kwamalungu omndeni. \n\nImithetho ithuthukisa izibopho zelungu lomndeni ngalinye, ngakho-ke kubalulekile ukuba umndeni ube nemithetho. \n\nIkhaya elinemithetho umndeni uphila ngokuthula.", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nLet's use the magic power of three to stay present and relax. \n\nName three sounds you can hear right now. \nName three smells you can smell right now. \nName your three favourite foods. \n\nWhat are three things you can be grateful for right now? They don't have to be big.", - "text": "Vala amehlo akho. \n\nMasisebenzise amandla omlingo wamathathu ukuze sihlale sikhona futhi siphumule.\n\nYisho imisindo emithathu oyizwayo njengamanje.\nYisho amaphunga amathathu ongawahogela njengamanje.\nYisho ukudla okuthathu okuthandayo.\n\nYiziphi izinto ezintathu ongabonga ngazo njengamanje? Akudingeki kube yizinto ezinkulu.", + "SourceText": "Write down one important rule you’d like to make with your teenager – you'll be doing this as your home practice this week. \n\nWhat will they think about it?", + "text": "Bhala phansi umthetho owodwa obalulekile ongathanda ukuwubeka nengane yakho - uzokwenza lokhu njengomsebenzi wasekhaya wokuprakthiza waleli viki. \n\nBazocabangani ngawo?", "type": "template", "note": "" }, { - "SourceText": "At the end of a tough day, thinking of three things to be grateful for can help us find the courage to try again tomorrow.", - "text": "Ekupheleni kosuku olunzima, ukucabanga ngezinto ezintathu ongabonga ngazo kungakusiza uthole isibindi sokuzama futhi kusasa.", + "SourceText": "Have you managed to set a rule together with your teen?", + "text": "Ingabe ukwazile ukubeka umthetho ndawonye nengane yakho esebusheni bayo?", "type": "template", "note": "" }, { - "SourceText": "Close your eyes and think about the day. \n\nName 1 thing that you are grateful for. \nName 1 thing that you did well. \nName 1 thing that you love.", - "text": "Vala amehlo akho bese ucabanga ngosuku. \n\nYisho into eyodwa oyibingelayo. \nYisho into eyodwa oyenze kahle. \nYisho into eyodwa oyithandayo.", + "SourceText": "Sometimes it feels like your teens are still grumpy even when you’ve done the best you can. Remember that you are doing an amazing job, and that there will be good times with them too!", + "text": "Ngezinye izikhathi kuzwakala sengathi intsha yakho isathukuthele ngisho noma wenze konke okusemandleni akho. Khumbula ukuthi wenza umsebenzi omuhle kakhulu, nokuthi ke zizoba khona izikhathi ozijabulelayo nengane yakho esebusheni bayo!", "type": "template", "note": "" }, { - "SourceText": "Well done, you are a hero!", - "text": "Wenze kahle, uyiqhawe!", + "SourceText": "You are close to gaining another parenting tool! Complete the @local.workshop_data.in_text_title, set ONE simple and realistic rule with your teen, and see things change!", + "text": "Sekuseduze thole ezinye izicebiso zokuba umzali! Qedela i-@local.workshop_data.in_text_title, beka umthetho OWODWA olula nolandelekayo ninengane yakho esebusheni bayo, bese ubona ushintsho oluzo kwenzeka!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Close your eyes. \n\nUse the magic power of three to stay connected and relax.\n\nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3. \nBreathe in to the count of three. 1, 2, 3. \nBreathe out to the count of three. 1, 2, 3.", - "text": "Vala amehlo akho. \n\nSebenzisa amandla omlingo ezinto ezintathu ukuze ube nokuthula futhi uzole.\n\nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3. \nDonsa umoya ube ubala uze ufike ku-3. 1, 2, 3. \nKhipha umoya ube ubala uze ufike ku-3. 1, 2, 3.", + "SourceText": "Thank you again for using @global.parent_app and for committing to your parenting journey. \n\nThe @local.workshop_data.in_text_title will show you how to set rules in a way that will help your teen to understand and follow them better.", + "text": "Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ohambweni lwakho lokuba umzali. \n\nI-@local.workshop_data.in_text_title izokubonisa indlela ongabeka ngayo imithetho ngendlela ezosiza ingane yakho esebusheni bayo iyiqonde futhi iyilandele kangcono imithetho.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Do you feel any different? Deep breathing helps our whole body and mind to calm down. \n\nYou are a star!", - "text": "Ingabe uzizwa uhlukile? Ukuphefumula okujulile kusiza wonke umzimba nengqondo yethu ukuthi izole\n\nUyiqhawe!", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. It won’t take long and will help your teen to follow rules better!", + "text": "Kusasa kukhona okusha @global.parent_app kumhlangano wokufundisana okukulindele. \n\nZama qeda i-@local.workshop_data.in_text_title ngaphambi kokuthi uqale umhlangano wokufundisana omusha. Ngeke kuthathe isikhathi eside futhi kuzosiza ingane yakho esebusheni bayo ilandele imithetho kangcono!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Close your eyes.\n\nListen to your breath as it goes in and out five times.\n\nNotice how you feel.", - "text": "Vala amehlo akho.\n\nLalela ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe izikhathi ezinhlanu.\n\nQaphela indlela ozizwa ngayo.", + "SourceText": "Congratulations, you completed the @local.workshop_data.in_text_title.\n\nTomorrow, a new workshop will help you know what to do when teens show bad (or good) behaviour!", + "text": "Halala, uyiqedile i-@local.workshop_data.in_text_title.\n\n\nKusasa, umhlangano wokufundisana omusha uzokusiza wazi lokho ongakwenza lapho intsha iziphatha ngendlela embi (noma enhile)!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "When you are ready open your eyes again. You are in control!", - "text": "Lapho usukulungele phinde uvule amehlo akho. Nguwe olawulayo!", + "SourceText": "They discussed the reasons behind the rule", + "text": "Baye baxoxa ngezizathu zokubeka umthetho", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a minute to think about the day.\n\nThink about one positive or fun thing you did.\nPraise yourself for one thing you did well today. \nThink of one thing you can do differently tomorrow.  \nThink of one thing that you are grateful for.", - "text": "Vala amehlo akho. \n\nZinike umzuzu ukuze ucabange ngosuku.\n\nCabanga ngento eyodwa enhle noma emnandi oyenzile.\nZincome ngento eyodwa oyenze kahle namhlanje. \nCabanga ngento eyodwa ongayenza ngendlela ehlukile kusasa.  \nCabanga into eyodwa obongayo ngayo.", + "SourceText": "@global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions", + "text": "@global.w_rules_female_caregiver_1 uye wakulalela kuka-@global.w_rules_teen_boy iziphakamiso", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nDo your children ever make you feel like screaming? \n\nGive yourself a 10-second pause. Breath in and out slowly 5 times. \n\nThen try responding in a calmer way.", - "text": "Vala amehlo akho. \n\nIngabe izingane zakho zike zikwenze uzizwe sengathi ungahayiza? \n\nZinike ikhefana lemizuzwana eyishumi. Donsa umoya uwukhiphe kancane kancane izikhathi ezingu-5. \n\nMase ke usuzama ukuphendula ngendlela ezolile.", + "SourceText": "The rule was clear, specific and fair", + "text": "Umthetho ubucacile, uqondile futhi ubonelela", "type": "template", "note": "" }, { - "SourceText": "Millions of parents say this helps - A LOT.", - "text": "Izigidi zabazali zithi lokhu kuyasiza - KAKHULU.", + "SourceText": "@global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "@global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nTake a moment to stop what you are doing and connect with your breath.   \n\nWhat is one thing you can be grateful for right now?  \nWhat is one thing that brings you happiness?  \nWhat is one thing that you love?  \n\nThey don't have to be big. Sometimes the small things in life count the most!", - "text": "Vala amehlo akho. \n\nZinike isikhathi uyeke lokho okwenzayo bese uxhumana nokuphefumula kwakho.   \n\nIyiphi into eyodwa ongabonga ngayo njengamanje?  \nIyiphi into eyodwa ekulethela injabulo?  \nIyiphi into eyodwa oyithandayo?  \n\nAkudingeki kube yizinto ezinkulu. Ngezinye izikhathi izinto ezincane ephilweni yizona ezibaluleke kakhulu!", + "SourceText": "That's right, making clear rules together in a calm and positive way works so well!", + "text": "Kunjalo, ukwenza imithetho ecacile ndawonye ngendlela ezolile neyakhayo kusebenza kahle!", "type": "template", "note": "" }, { - "SourceText": "Here's an activity to relax your body:  \n\nSit comfortably and close your eyes if you can.  \nImagine a golden ring scanning your body from your feet to your head.   \nPay attention as it moves up and down your body. Are there any areas that feel tense? Numb? Painful?   \nFocus on those areas for a moment. Breathe in to the area and when you breathe out, try to let go of any tension or pain.   \nDo this for a few breaths.   \n\nOpen your eyes. How does your body feel now?", - "text": "Nakhu ongakwenza ukuze uphumuze umzimba wakho:  \n\nHlala ngokunethezeka bese uvala amehlo akho uma ukwazi.  \nCabanga indilinga yegolide ihlola umzimba wakho kusukela ezinyaweni ize iyofika ekhanda.   \nNaka njengoba ikhuphuka iphinde yehle emzimbeni wakho. Ingabe zikhona izindawo ozizwa ziqinile? Zindikindiki? Zibuhlungu?   \nGxila kulezo zindawo isikhashana. Donsa umoya uye kuleyo ndawo bese kuthi lapho ukhipha umoya, uzame ukudedela lokho kuqina noma ubuhlungu.   \nYenza lokhu izikhathi ezimbalwa odonsa ngazo umoya.   \n\nVula amehlo akho. Umzimba wakho uzizwa kanjani manje?", + "SourceText": "She praised him", + "text": "Uye wamncoma", "type": "template", "note": "" }, { - "SourceText": "You can also try this next time you find yourself lying in bed unable to sleep!", - "text": "Ungakuzama lokhu esikhathini esizayo uma uzithola ulele embhedeni ungafikelwa ubuthongo!", + "SourceText": "She rewarded him when he followed the rule", + "text": "Uye wamvuza uma elandela umthetho", "type": "template", "note": "" }, { - "SourceText": "Close your eyes. \n\nNotice your connection with the ground beneath you.  \nWhat parts of your body touch the ground? What parts of your body don’t?   \nNotice where it feels warm and where it feels cool.  \nFeel the ground underneath you supporting you. Let your body sink into the support of the ground.", - "text": "Vala amehlo akho. \n\nQaphela ukuxhumana kwakho nomhlaba onyathele kuwo.  \nYiziphi izitho zomzimba wakho izithinta umhlaba? Yiziphi izitho zomzimba wakho ezingawuthinti?   \nQaphela lapho kuzwakala kufudumele khona nalapho kuzwakala kubanda khona.  \nYizwa umhlabathi omi kuwo okusekelayo. Vumela umzimba wakho uzinze osizweni oluthola emhlabeni omi kuwo.", + "SourceText": "Exactly - a positive response makes all the difference!", + "text": "Kunjalo - ukusabela ngendlela enhle kwenza umehluko!", "type": "template", "note": "" }, { - "SourceText": "Try this next time you feel alone or are doing a mundane activity like washing up. It can really help!", - "text": "Kuzame lokhu esikhathini esizayo lapho uzizwa uwedwa noma lapho wenza into evamile njengokugeza. Kungasiza ngempela!", + "SourceText": "Let's read what happened with @global.w_rules_teen_boy and his @global.w_rules_female_caregiver_1:", + "text": "Ake sifunde ngokwenzeke ku @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 wakhe:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Sit down and close your eyes.\nHow many sounds can you hear? \nListen to the sounds inside and outside the room. Count them on your fingers. \nAfter ten seconds, how many fingers do you have up? What sounds did you hear? \n\nTry again for another ten seconds. \nDid you hear any new sounds? Did you hear any sounds inside your own body? \nNotice how you feel now.", - "text": "Hlala phansi bese uvala amehlo akho.\nMingaki imisindo okwazi ukuyizwa? \nLalela imisindo engaphakathi nengaphandle kwegumbi. Yibale ngeminywe yakho. \nNgemva kwemizuzwana eyishumi, mingaki iminwe ephakeme? Yimiphi imisindo oyizwile? \n\nPhinde uzame futhi eminye imizuzwana eyishumi. \nIngabe ikhona eminye imisindo emisha oyizwile? Ingabe ikhona imisindo oyizwile engaphakathi komzimba wakho? \nQaphela indlela ozizwa ngayo manje.", + "SourceText": "@global.w_rules_female_caregiver_1: \"You always come home late!\"\n\n@global.w_rules_teen_boy: \"No I don’t, I don’t even know what late means! Stop nagging me.\"", + "text": "@global.w_rules_female_caregiver_1: “Uhlale ubuya sekuhlwile ekhaya!”\n\n@global.w_rules_teen_boy: “Cha angazi, angazi nokuthi kusuke kungubani isikhathi uma sekuhlwile! Yeka ukungicasula.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Close your eyes. \n\nDo you every feel something so strongly that you want to run away from it? \n\nInstead of moving away from the feeling, let’s move towards it for a moment. \nIt’s ok. Close your eyes if you feel comfortable. Take a deep breath. \n\nBecome curious. Where are you feeling it in your body? Is it hot or cold? Hard or soft? Tight or loose? \nAsk yourself some questions. What is it telling me? What does it need? How can I be kind to myself right now?", - "text": "Vala amehlo akho. \n\nIngabe kunomuzwa owuzwayo onamandla okwenza ufune ukuwubalekela? \n\nKunokuba ubalekele indlela ozizwa ngayo, ake sisondele kuyo okwesikhashana. \nKulungile. Vala amehlo akho uma uzizwa ukhululekile. Donsa umoya kakhulu. \n\nYiba nelukuluku. Ukuzwa kuphi emzimbeni wakho? Ingabe kuyashisa noma kuyabanda? Kuqinile noma kuthambile? Kubophekile noma kukhululekile? \nZibuze imibuzo ethile. Kungitshela ukuthini? Kudinga ini? Ngingaba kanjani nomusa kumina njengamanje?", + "SourceText": "Which specific rule could @global.w_rules_teen_boy and @global.w_rules_female_caregiver_1 create together?", + "text": "Yimuphi umthetho oqondile @global.w_rules_teen_boy no @global.w_rules_female_caregiver_1 abangawenza ndawonye?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Here is something fun to help you let go of stress:  \n\nChoose a song that reflects what you need in this moment. Do you need a gentle song to soothe your tired soul or an upbeat song to help you shake some stress out?  \n\nMake a space and move your body to the music. Remember to breathe while you move. Let your breath and the movement go together.", - "text": "Nakhu okuthile okumnandi okungakusiza uqede ukucindezeleka:  \n\nKhetha ingoma ebonisa lokho okudingayo njengamanje. Ingabe udinga ingoma epholile ukuze iwotawote umphefumulo wakho okhathele noma ingoma enesigqi esiphezulu ezokusiza ususe ukucindezeleka?  \n\nVula isikhala bese udansela umculo. Khumbula ukuphefumula njengoba udansa. Vumela ukuphefumula nokudansa kwakho kuhambisane.", + "SourceText": "Let’s see how @global.w_rules_female_caregiver_1 and @global.w_rules_teen_boy did this the next day:\n\n@global.w_rules_female_caregiver_1: “I want you to have fun, @global.w_rules_teen_boy, but I’m also worried about you staying out late. Do you know why?” \n\n@global.w_rules_teen_boy: “Because you want me to have enough time for my schoolwork?”", + "text": "Ake sibone ukuthi @global.w_rules_female_caregiver_1 no @global.w_rules_teen_boy yini abayenzile ngosuku olulandelayo:\n\n@global.w_rules_female_caregiver_1: “Ngiyafuna ukuthi uzijabulise, @global.w_rules_teen_boy, kodwa ngiyakhathazeka uma ungabuyi kuze kuhlwe. Uyazi ukuthi kungani?” \n\n@global.w_rules_teen_boy: “Kungenxa yokuthi ufuna ngibe nesikhathi esanele sokwenza umsebenzi wami wesikole?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_teen_boy" }, { - "SourceText": "Even a few minutes of movement can be enough to release stress and lift your mood!", - "text": "Ngisho nemizuzu embalwa yokunyakaza inganele ukukhulula ukucindezeleka futhi uphakamise isimo sakho sengqondo!", + "SourceText": "@global.w_rules_female_caregiver_1: “That’s right, and it’s also not safe in this area to be outside after sunset. What do you think would be a good time for you to be home?”", + "text": "@global.w_rules_female_caregiver_1: “Kunjalo, okunye futhi ukuthi akuphephile ukuba ngaphandle kule ndawo uma sekuhlwile. Ucabanga ukuthi kungaba isiphi isikhathi esifanele sokubuya ekhaya?”", "type": "template", - "note": "" + "note": "The string @global.w_rules_female_caregiver_1 should not be translated." }, { - "SourceText": "Close your eyes. \nTake a moment to feel the ground under your feet. \nThink of something you feel grateful for.\nFocus on your breath.\nBreathe in and out.\n\nIn and out.", - "text": "Vala amehlo akho. \nZinike isikhashana ukuze uzwe umhlaba onyathele kuwo. \nCabanga ngokuthile obongayo ngakho.\nGxila ekuphefumuleni kwakho.\nDonsa umoya uphinde uwukhiphe.\n\nDonsa umoya uwukhiphe.", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 10pm?\" \n\n@global.w_rules_female_caregiver_1: “That’s a bit late, what about 6pm? Or something in the middle?\"", + "text": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-10 ebusuku? \n\n@global.w_rules_female_caregiver_1: “Kusuke sekusebusuku ngaleso sikhathi, kungaba njani ngo-6 ntambama? Noma esinye isikhathi esiuphakathi?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Hello! How are you feeling right now? Happy, sad, angry, excited, worried?\n\nNotice where you feel it in your body. Notice what thoughts are connected to that feeling. Take a deep breath.", - "text": "Sawubona! Uzizwa unjani njengamanje? Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile?\n\nQaphela ukuthi ukuzwa kuphi emzimbeni wakho. Qaphela ukuthi yimiphi imicabango ehlobene nalowo muzwa. Donsa umoya kakhulu.", + "SourceText": "@global.w_rules_teen_boy: “I could come home at 6pm on school nights and 10pm on Friday and Saturday?” \n\n@global.w_rules_female_caregiver_1: “Yes, great. From now on, our household rule is that you need to come home at 6pm on school nights and 10pm on Friday and Saturday. But you always walk home with a friend. Okay?”", + "text": "@global.w_rules_teen_boy: “Ngingabuya ekhaya ngo-6 ntambama phakathi nezinsuku zesikole bese kuba u-10 ebusuku ngoLwesihlanu nangoMgqibelo?” \n\n@global.w_rules_female_caregiver_1: “Yebo, kuhle lokho. Kusukela manje ukuya phambili, umthetho wasekhaya uthi kumelwe ubuye ekhaya ngo-6 ntambama ngezinsuku oya ngazo esikoleni kanti ngoLwesihlanu nangoMgqibelo ubuye ngo-10pm. Kodwa kumelwe uhlale uphelezelwa umngane uma ubuya ekhaya. “Kulungile?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Thank yourself for taking the time to check in with your feelings and thoughts!", - "text": "Zibonge ngokuzinika isikhathi sokuhlola imizwa yakho nemicabango!", + "SourceText": "@global.w_rules_teen_boy: “Okay, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Thank you very much, @global.w_rules_teen_boy, for helping to come up with a good rule together. I am proud to see how responsible you are getting.”", + "text": "@global.w_rules_teen_boy: “Kulungile, @global.w_rules_female_caregiver_1” \n\n@global.w_rules_female_caregiver_1: “Ngiyabonga kakhulu, @global.w_rules_teen_boy, ngokungisiza ukuba sibeke umthetho omuhle sindawonye. Kuyangijabulisa ukubona ukuthi uba nezibopho kangakanani.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "Let’s practice a calming trick that we call ‘Pause Power’. \n\nPlant your feet on the ground and breathe in and out three times as slowly as you can. Imagine you are smelling a flower or blowing out a candle. \n\nTa Da! Pause Power!", - "text": "Masizilolonge iqhinga lokuzola esilibiza ngokuthi ‘Misa Isikhashana Amandla’. Noma Amandla Ekefu\n\nBeka unyawo lwakho phansi bese udonsa umoya uphinde uwukhiphe kancane kakhulu ngendlela ongakwazi ngayo izikhathi ezintathu. Zicabange uhogela imbali noma uphephetha ikhandlela. \n\nNazo-ke! Amanda Ekhefu!", + "SourceText": "The next day...\n\n@global.w_rules_female_caregiver_1: “Thank you, @global.w_rules_teen_boy, for coming home on time. After you finish your schoolwork we can have your favourite meal for dinner.”", + "text": "Ngosuku olulandelayo...\n\n@global.w_rules_female_caregiver_1: “Ngiyabonga, @global.w_rules_teen_boy, ngokufika ekhaya ngesikhathi. Uma usuqede umsebenzi wakho wesikole sizodla ukudla okuthayo esidlweni sakusihlwa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "This is a great trick to use when you are feeling frustrated because it will help to calm you down.", - "text": "Leli iqhinga elihle ongalisebenzisa uma uzizwa ukhungathekile ngoba lizokusiza ukukwehlisa umoya.", + "SourceText": "Online Safety", + "text": "Ukuphepha Ku-inthanethi", "type": "template", "note": "" }, { - "SourceText": "Self-praise can be really helpful, especially when we have difficult days. \n\nThink of your week and finish the following phrase: “This week, I am proud of myself for …” It can be anything, not just things about being a parent!\n\nThink of one thing you did well today. Now wrap your arms around yourself and give yourself a big HUG!", - "text": "Ukuzincoma kungasiza kakhulu, ikakhulukazi lapho sinezinsuku ezinzima. \n\nCabanga ngesonto lakho bese uqedela la magama alandelayo: “Kuleli sonto, ngiyaziqhenya ngami ngoba…” Kungaba yinoma yini, hhayi nje kuphela izinto ezimayelana nokuba kwakho umzali!\n\nCabanga ngento eyodwa oyenze kahle namhlanje. Manje songa izandla zakho kuwe UZANGE!", + "SourceText": "Rules are important to keep your teens safe - also online. There’s more about this in the Weekly Workshop on safety planning, but let’s already have a first look now!", + "text": "Imithetho ibalulekile ukugcina abantwana bethu bephephile - naku-inthanethi. Kunokwengeziwe mayelana nokuhlela okuphephile Ekuqeqeshweni Kwamasonto Onke, kodwa ake sikubuke lokhu njengamanje!", "type": "template", "note": "" }, { - "SourceText": "Sit comfortably and close your eyes. \n\nRecognise what is happening for you in this moment. What are you thinking? Are your thoughts positive or negative. How do you feel? Do you feel pleasant or unpleasant? How does your body feel? Do you feel tense or relaxed?\n\nConnect to your heart in a kind and gentle way. You may want to place one hand on your heart or chest. Say the following words silently to yourself:\n\nMay I be peaceful.\nMay I be safe.\nMay I be healthy.\nMay I be happy.\nMay there be love in my family.\nMay I feel loved.", - "text": "Hlala ngokunethezeka bese uvala amehlo akho. \n\nQaphela lokho okwenzekayo kuwe njengamanje. Yini oyicabangayo? Ingabe imicabango yakho mihle noma mibi. Uzizwa kanjani? Ingabe uzizwa ujabulile noma ungajabulanga? Umzimba wakho uzizwa kanjani? Ingabe uzizwa ubophekile noma ukhululekile?\n\nXhumana nenhliziyo yakho ngendlela enomusa nemnene. Ungase ufune ukubeka isandla esisodwa enhliziyweni yakho noma esifubeni. Buthule yisho la mazwi alandelayo kuwe:\n\nKwangathi ngingaba nokuthula.\nKwangathi ngingaphepha.\nKwangathi ngingaba nempilo enhle.\nKwangathi ngingajabula.\nKwangathi kungaba nothando emndenini wami.\nKwangathi ngingazizwa ngithandwa.", + "SourceText": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, have you done your homework?\"\n\n@global.w_rules_teen_girl: \"Just a minute @global.w_rules_female_caregiver_2, I’m finishing this @global.teen_social_medium video\"", + "text": "@global.w_rules_female_caregiver_2: \"@global.w_rules_teen_girl, usuwenzile umsebenzi wakho wesikole?\"\n\n@global.w_rules_teen_girl: “Umzuzwana nje @global.w_rules_female_caregiver_2, ngisaqedela le @global.teen_social_medium vidiyo\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Take a moment to reflect on your experience. Notice if you feel any different.", - "text": "Zinike isikhashana ucabange ngolwazi lwakho. Qaphela ukuthi uzizwa uhlukile.", + "SourceText": "@global.w_rules_female_caregiver_2: \"You are a really great dancer! Tell me about why you like it\"\n\n@global.w_rules_teen_girl: \"All my friends are on it, @global.w_rules_female_caregiver_2. I have more than 600 likes and 120 followers.\"", + "text": "@global.w_rules_female_caregiver_2: “Ave udansa kahle kakhulu! Ngitshele ukuthi kungani uthanda ukudansa\"\n\n@global.w_rules_teen_girl: “Bonke abangane bami bayadansa, @global.w_rules_female_caregiver_2. Nginabangithandayo-abangu-600 nabalandeli abangu-120.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.w_rules_female_caregiver_2" }, { - "SourceText": "Step 1. Close your eyes and take a deep breath. \n\nStep 2. Ask yourself, \"What am I thinking?\" Notice if your thoughts are positive or negative.\nNotice how you are feeling emotionally. Notice if your emotions are pleasant or unpleasant. Remind yourself that whatever you feel, it is okay.\nNotice how your body feels. Notice anything that hurts or is tense.\n\nStep 3. Focus on your breath. Feel your breath as it goes in and out. You can put a hand on your stomach and feel it rise and fall with each breath. Do this for about 10 breaths.\n\nStep 4. Expand your awareness to your whole body. Listen to the sounds in the room. \n\nStep 5. Take a moment to reflect on whether you feel any different. When you are ready, open your eyes.", - "text": "Isinyathelo 1. Vala amehlo akho bese udonsa umoya kakhulu. \n\nIsinyathelo 2. Zibuze, \"Yini engiyicabangayo?\" Qaphela ukuthi imicabango yakho mihle noma mibi yini.\nQaphela ukuthi uzizwa kanjani ngokomzwelo. Qaphela ukuthi imizwelo yakho eyenjabulo noma cha. Zikhumbuze ukuthi kungakhathaliseki ukuthi uzizwa kanjani, kulungile.\nQaphela indlela umzimba wakho ozizwa ngayo. Qaphela noma yini ebuhlungu noma ebophekile.\n\nIsinyathelo 3. Gxila ekuphefumuleni kwakho. Yizwa ukuphefumula kwakho njengoba udonsa umoya uphinde uwukhiphe. Ungabeka isandla esiswini sakho futhi usizwe sikhukhumala siphinde sehle isikhathi ngasinye uphefumula. Kwenze lokhu izikhathi eziyishumi odonsa ngazo umoya.\n\nIsinyathelo sesi-4. Nweba ukuqonda kwakho kuwo wonke umzimba wakho. Lalela imisindo egumbini.\n\nIsinyathelo 5. Zinike isikhathi sokuhlola ukuthi ukhona yini umehluko owuzwayo. Lapho usukulungele, vula amehlo akho.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of how well you dance, @global.w_rules_teen_girl. But we need to make sure you are safe. \n\nI know your friends look at @global.teen_social_medium, but with an open account, there are other people who look at videos of teenagers for their own sexual needs. Sometimes they contact teenagers. They pretend to be nice but end up threatening and abusing teens.\"", + "text": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe ngendlela odansa kahle ngayo, @global.w_rules_teen_girl. Kodwa kumelwe siqiniseka ukuba uphephile. \n\nNgiyazi ukuba abangani bakho babuka @global.teen_social_medium, kodwa nge-akhawunti evulela wonke umuntu, kunabanye abantu ababuka amavidiyo abantu abasha ukuze bazanelise ngokocansi. Ngezinye izikhathi bayaxhumana nentsha. Bazenza sengathi balungile kodwa ekugcineni bayabesabisa futhi bayihlukumeze intsha.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl\n@global.teen_social_medium" }, { - "SourceText": "Well done for Taking a Pause. You can do this anytime you are feeling stressed. It gives you a chance to be calmer. Even a few deep breaths or connecting with the ground beneath you can make a difference. You can also Take a Pause with your Children!", - "text": "Siyakuhalalisela Ngokuthatha Ikhefu. Lokhu ungakwenza noma nini lapho uzizwa ucindezelekile. Kukunika ithuba lokuzola. Ngisho nokudonsa umoya izikhathi ezimbalwa noma ukuxhumana nomhlaba omi kuwo kungenza umehluko. Ungathatha Ikhefu Nezingane Zakho!", + "SourceText": "@global.w_rules_female_caregiver_2: \"Let’s look together online at how we can keep this fun for you but also safe. Look – you can make your account private and control who follows you.\n\nSo you can accept people you know from school and our community, but not people who contact you online.\n\nCan we make a rule together that you can use @global.teen_social_medium, but with a private account? I trust you to know who to accept!”", + "text": "@global.w_rules_female_caregiver_2: “Ake sihlole ku-inthanethi sobabili ukuthi singenza kanjani ukuthi ukujabulele lokhu kodwa uphephe ngesikhathi esifanayo. Bheka - ungakwazi ukwenza ukuba kube abantu abathile kuphela abakwazi ukubona i-akhawunti yakho futhi ungakwazi nokukhetha ukuthi ubani ozokulandela.\n\nNgakho, ungavumela abantu obaziyo basesikoleni nabasemphakathini, kodwa hhayi abantu obathola ku-inhanethi.\n\nIngabe singakwazi ukwenza umthetho ndawonye ungawusebenzisa @global.teen_social_medium, kodwa nge-akhawunti engavulelekile kuwonke wonke? Ngiyakwethemba ukuthi uyazi ukuthi obani ozobavumela!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.teen_social_medium" }, { - "SourceText": "Stand up and stretch your arms up to the sky. Push away any clouds and let the sun shine down on you. Stretch to both sides. Stretch to the front and to the back.\n\nLet your hand hang by your side. Squeeze your shoulders tightly up to your ears as you breathe in, scrunch your eyes, and hold your breath. Release your shoulders as you relax your body.\n\nRelax your arms and let your arms to swing sideways, and turn your upper body. Your arms should gently hit your back as you twist from side to side.\n\nPlace one foot in front of the other and make small circles from ankles, remember to turn to both sides. Do each foot with four circles in each direction.\n\nNow shake your whole body as fast as you can. Shake it up high! Shake it down low! Shake it all around!\n\nClose your eyes and raise your arms slowly above your head as you breathe in. Lower your arms slowly to your side as you breathe out.\n\nTake a moment to reflect on your experience.", - "text": "Sukuma welulele izingalo zakho phezulu esibhakabhakeni. Phusha noma yimaphi amafu futhi uvumele ilanga likukhanyisele. Yelulela nhlangothi zombili. Yelulela phambili nangemuva.\n\nVumela isandla sakho silenga eceleni kwakho. Cindezela amahlombe akho ngokuqinile kuze kufike ezindlebeni zakho njengoba uphefumula, uhlikihle amehlo akho, futhi ubambe umoya wakho. Khulula amahlombe akho njengoba uphumuza umzimba wakho.\nNethezeka izingalo zakho futhi uvumele izingalo zakho zijike zibheke eceleni, bese uphendulela umzimba wakho ongaphezulu. Izingalo zakho kufanele zishaye kancane emhlane wakho njengoba usonta ngapha nangapha.\n\nBeka unyawo olulodwa phambi kolunye bese ujikajikisa amaqakala, ukhumbule ukuphendukela ezinhlangothini zombili. Yenza lokho onyaweni ngalunye ngezindilinga ezine ohlangothini ngalunye.\n\nManje nyakazisa wonke umzimba wakho ngokushesha ngangokunokwenzeka. Unyakazise phezulu! Unyakazise phansi! Unyakazise nxazonke!\n\nVala amehlo akho bese uphakamise izingalo zakho kancane kancane ziye ngaphezu kwekhanda lakho njengoba udonsa umoya. Yehlisela izingalo zakho ohlangothini kancane kancane njengoba ukhipha umoya.\n\nZinike isikhathi sokucabanga ngokwenzeke kuwe.", + "SourceText": "@global.w_rules_female_caregiver_2: \"I’m proud of you @global.w_rules_teen_girl\"", + "text": "@global.w_rules_female_caregiver_2: “Ngiyaziqhenya ngawe @global.w_rules_teen_girl”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_2\n@global.w_rules_teen_girl" }, { - "SourceText": "Well done! You can do this activity at any time whenever you feel like you need to release stress and energise your mind and body.", - "text": "Wenze kahle! Ungenza lo msebenzi nganoma yisiphi isikhathi lapho uzizwa unesidingo sokunciphisa ukucindezeleka futhi nikeza amandla ingqondo kanye nomzimba.", + "SourceText": "This is just incredible. Every one of these habits is making your family stronger. Be proud.", + "text": "Kuhle kakhulu lokhu. Yonke le mikhuba yenza umndeni wakho uqine. Ziqhenye.", "type": "template", "note": "" }, { - "SourceText": "Make a list of healthy activities that you like to do. Here are some suggestions:\n* Listening to your favourite music\n* Going for a walk (if allowed)\n* Doing some exercise\n* Drinking a cup of tea by yourself\n* Calling up a friend\n* Singing, dancing, praying, or reading\n* Sitting in the sun with your eyes closed\n* Watching your favourite T.V. show\n\nPick one and do it today!", - "text": "Yenza uhlu lwezinto ongazenza ezinempilo ongathanda ukuzenza. Nanka amacebiso ambalwa:\n* Ukulalela umculo wakho owuthandayo\n* Ukuhambahamba ngaphandle (uma kuvumelekile)\n* Ukuzivocavoca\n* Ukuphuza inkomishi yetiye uwedwa\n* Ukushayela umngane\n* Ukucula, ukudansa, ukuthandaza noma ukucula\n* Ukuhlala elangeni uvale amehlo akho\n* Ukubukela uhlelo lwe-T.V oluthandayo\n\nKhetha okokudwa ukwenze namuhla!", + "SourceText": "* Story & discussion – that didn’t work… \n* Story & discussion – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nengxoxo – okungasebenzanga ... \n* Indaba kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "When you take care of yourself, you take care of your children. We all need to connect. Try to talk to friends, family, and other support networks every day. If it has been a while since you reached out to someone, do it now!", - "text": "Lapho uzinakekela, usuke unakekela izingane zakho. Sonke sidinga ukuxhuma. Zama ukuxoxa nsuku zonke nabangane, umndeni, kanye nezinye izinhlaka ezinikeza usizo. Sekuyisikhathi wagcina ukuxhumana nothile, yenza lokho manje!", + "SourceText": "* Story & reflection – that didn’t work… \n* Story & reflection – that worked!\n* Tools: How to create rules\nTEAM RULES - REAL RULES - PRAISE RULES!\n* Online safety story – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ... \n* Indaba kanye nokubuyekeza indaba - okusebenzile!\n* Amathuluzi: Indlela yokubeka imithetho\nIMITHETHO YEQEMBU - IMITHETHO YANGEMPELA - NCOMA IMITHETHO!\n* Indaba yokuphepha ku-inthanethi – kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Think about what makes you angry? When does it happen? How do you normally react?\n\nPrevent anger from starting in the first place. Get some sleep or rest when you are tired. Try to eat something when you are hungry. Ask someone for support when you are feeling alone.", - "text": "Cabanga ngalokho okukwenza uthukuthele? Kwenzeka nini? Ngokuvamile usabela kanjani?\n\nVimbela intukuthelo kusukela ekuqaleni. Lala noma uphumule lapho ukhathele. Zama ukudla okuthile lapho ulambile. Cela othile ukuthi akusekele lapho uzizwa uwedwa.", + "SourceText": "What went well here in making a rule together?", + "text": "Yini ehambe kahle lapha ekubekeni umthetho ndawonye?", "type": "template", "note": "" }, { - "SourceText": "Managing anger can be really difficult. Take a break when you feel you are getting angry at your children or someone else.\n\nGo somewhere else for 5 minutes to regain control of your emotions. If you have safe outdoor space, go outside. You can get through this!", - "text": "Ukulawula intukuthelo kungaba nzima kakhulu. Thatha ikhefu lapho uzwa ukuthi uqala ukuthukuthelela izingane zakho noma omunye umuntu.\n\nHamba uye kwenye indawo imizuzu emihlanu ukuze ukwazi ukulawula imizwelo yakho. Uma unendawo ephephile ngaphandle, yiya ngaphandle. Ungadlula kulokhu!", + "SourceText": "How do you think @global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him?", + "text": "Ucabanga ukuthi u-@global.w_rules_teen_boy waze kanjani ukuthi u-@global.w_rules_female_caregiver_1 uyamncoma?", + "type": "template", + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" + }, + { + "SourceText": "Making the rule together went well because...", + "text": "Ukubeka umthetho ndawonye kube impumelelo ngoba...", "type": "template", "note": "" }, { - "SourceText": "Customise your @global.parent_app", - "text": "Hlela i-@global.parent_app ngendlela oyithandayo", + "SourceText": "* They discussed the reasons behind the rule \n* @global.w_rules_female_caregiver_1 listened to @global.w_rules_teen_boy’s suggestions \n* The rule was clear, specific and fair \n* @global.w_rules_female_caregiver_1 praised @global.w_rules_teen_boy for helping to make the rule", + "text": "* Baye baxoxa ngezizathu zokubeka umthetho \n* @global.w_rules_female_caregiver_1 uye wakulalela -@global.w_rules_teen_boy isiphakamiso\n* Umthetho ubucacile, uqondile futhi ubonelela \n* @global.w_rules_female_caregiver_1 uye wamncoma u-@global.w_rules_teen_boy ngokumsiza ekubekeni umthetho", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1\n@global.w_rules_teen_boy" }, { - "SourceText": "These quick questions will fit this app to your needs.", - "text": "Le mibuzo esheshayo izokwenza le-app ifanelane nezidingo zakho.", + "SourceText": "@global.w_rules_teen_boy knew his @global.w_rules_female_caregiver_1 appreciated him because...", + "text": "@global.w_rules_teen_boy bekazi ukuthi @global.w_rules_female_caregiver_1 uyancoma ngoba...", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_rules_teen_boy\n@global.w_rules_female_caregiver_1" }, { - "SourceText": "Let’s start with a few questions about you and your family.", - "text": "Masiqale ngemibuzo embalwa emayelana nawe nomndeni wakho.", + "SourceText": "* She praised him\n* She rewarded him when he followed the rule", + "text": "* Uye wamncoma\n* Uye wamvuza uma elandela umthetho", "type": "template", "note": "" }, { - "SourceText": "We would love to know your first name or nickname:", - "text": "Singathanda ukwazi igama lakho noma isiteketiso sakho:", + "SourceText": "Household rules help keep our teenagers safe, and understand what is expected from them. When you involve a teenager in making rules they are more likely to follow them.", + "text": "Imithetho yasekhaya isiza ukugcina izingane zethu zivikelekile, futhi yenza iqonde ukuthi yini elindeleke kuzo. Uma ubandakanya ingane yakho ekubekeni imithetho kwenza bawulandele kalula umthetho.", "type": "template", "note": "" }, { - "SourceText": "Are you a woman or a man?", - "text": "Ungumuntu wesilisa noma wesifazane?", + "SourceText": "TEAM RULES", + "text": "IMITHETHO YEQEMBU", "type": "template", "note": "" }, { - "SourceText": "Woman", - "text": "Owesifazane", + "SourceText": "Plan rules WITH your teenager. Start with one new rule first - you can add another one later. Discuss the reasons for the rule and listen to their views.", + "text": "Hlela imithetho NDAWONYE nengane yakho. Qala ngomthetho owodwa omusha - unganezela omunye ngokuhamba kwesikhathi. Xoxisanani ngezizathu zomthetho ngemva kwalokho ulalele imibono yabo.", "type": "template", "note": "" }, { - "SourceText": "Man", - "text": "Owesilisa", + "SourceText": "REAL RULES", + "text": "IMITHETHO YANGEMPELA", "type": "template", "note": "" }, { - "SourceText": "How old are you?", - "text": "Uneminyaka emingaki?", + "SourceText": "Make them realistic for what your teenager can do, and be clear and specific so there’s no misunderstanding. Not ‘on time’ but ‘by 7pm’.", + "text": "Yenza kube imithetho umntwana wakho angakwazi ukukwenza nokuyilandela, cacisa futhi ukhulume ngokuqondile ukuze kungabi khona ukungaqondani. Ungathi ‘ngesikhathi’ kodwa yithi “ngo-7 ntambama”.", "type": "template", "note": "" }, { - "SourceText": "Adults", - "text": "Bangaki abadala", + "SourceText": "PRAISE RULES!", + "text": "NCOMA UMTHETHO!", "type": "template", "note": "" }, { - "SourceText": "Teens", - "text": "Intsha", + "SourceText": "Praise your teen for planning a rule with you, and praise them for keeping it!", + "text": "Ncoma ingane yakho ngokuthi ibeke uthetho nawe, uphinde uyincome ngokuthi iwugcine!", "type": "template", "note": "" }, { - "SourceText": "Children", - "text": "Zingaki izingane", + "SourceText": "Let's practice making rules.", + "text": "Ake sizame ukubeka imithetho.", "type": "template", "note": "" }, { - "SourceText": "Babies", - "text": "Zingaki izingane ezincane", + "SourceText": "* What is one important rule you’d each like to make with your teenager? \n* What do you think your teen will think about that rule? \n\nRemember, make rules specific and realistic!", + "text": "* Yimuphi umthetho obalulekile eningafisa ukuwubeka nengane yakho? \n* Ucabanga ukuthi ingane yakho izocabangani ngalo mthetho? \n\nKhumbula, beka umthetho oqondile futhi ozolungela ingane!", "type": "template", "note": "" }, { - "SourceText": "How many people are in your household?", - "text": "Bangaki abantu abasekhayeni lakho?", + "SourceText": "Here are some of the rules other families created:", + "text": "Nayi eminye imithetho ebekwe eminye imindeni:", "type": "template", "note": "" }, { - "SourceText": "You can do the @global.weekly_workshops by yourself OR you can invite some other family members or friends to join you - you will learn a lot from each other. It's up to you!", - "text": "Ungenza i @global.weekly_workshops ngokwakho NOMA ungamema amanye amalungu omndeni noma abangane ukuba bahlanganyele nawe - nizofunda okuningi komunye nomunye. Kusezandleni zakho!", + "SourceText": "* Teen can play outside after finishing homework\n* All family members are eating dinner together\n* Teen 1 does dishes on Sunday and Monday, Teen 2 on Tuesday and Wednesday\n* We speak to each other politely and nicely\n* When listening to music you need to use earphones", + "text": "* Ingane yakho ingadlala ngaphandle ngemuva kokuqeda umsebenzi wasekhaya\n* Onke amalunga omndeni adla isidlo sakusihlwa ndawonye\n* Ingane yakho yokuqala igeza izitsha ngeSonto nangoMsombuluko, bese eyesibili izigeze ngoLwesibili nangoLwesithathu \n* Sikhulumisana ngenhlonipho nangomusa \n* Uma ulalela umculo kumelwe usebenzise ama-earphones", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "How would you like to do your @global.weekly_workshops?", - "text": "Ungathanda ukuyenza kanjani i @global.weekly_workshops yakho?", + "SourceText": "Remember that YOU matter!", + "text": "Khumbula ukuthi UBALULEKILE!", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Can you think of a name for your group?", - "text": "Ungacabanga igama ongabiza ngalo iqembu lakho?", + "SourceText": "Well done for recognising a positive feeling. I am happy to hear you are feeling well today!", + "text": "Usebenzile ngokuthi uqaphele ukuthi unemizwa emihle. Ngiyajabula ukuzwa ukuthi uzizwa kahle namuhla!", "type": "template", "note": "" }, { - "SourceText": "Which day of the week would you like to do your @global.weekly_workshops?", - "text": "Yiluphi usuku evikini ongathanda ukwenza ngalo i @global.weekly_workshops yakho?", + "SourceText": "Well done for recognising a difficult feeling. It’s okay not to be okay sometimes. Remember you are not alone.", + "text": "Usebenzile ngokuthi uqaphele ukuthi unemizwa enzima. Kulungile ukungazizwa kahle ngezinye izikhathi. Khumbula ukuthi awuwedwa.", "type": "template", - "note": "The string @global.weekly_workshops should not be translated." + "note": "" }, { - "SourceText": "Monday", - "text": "UMsombuluko", + "SourceText": "Make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephile:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela uhlelo lokuphepha. \n\nInto ebaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - imvamisa izingane zethu zazi okuningi kunathi ngokuthi ikuphi lapho kuphephe khona nalapho kungaphephanga khona!", "type": "template", "note": "" }, { - "SourceText": "Tuesday", - "text": "ULwesibili", + "SourceText": "If you have not done it together yet, make two maps with your teen of safe and unsafe places:\n* Map of your community\n* Map of apps and websites your teen uses \n\nMake sure you're both happy with the safety plan. \n\nWhat really matters is that you talk with your teen as you do this – often teens know much more than we do about where it is safe and unsafe!", + "text": "Uma ningakakwenzi nobabili okwamanje lokhu, yenza amabalazwe amabili nengane yakho ezindawo eziphephile nezindawo ezingaphephanga:\n* Yenza ibalazwe lomphakathi wakho \n* Ishadi lama-apps namawebusayithi asetshenziswa yingane yakho \n\nQiniseka ukuthi nobabili niyalujabulela loluhlelo lokuphepha. \n\nOkubaluleke ngempela ukuthi nikhulume nengane yakho njengoba nenza lokhu - Kuvamile abantwana bethu bazi okuningi kunathi ngokuthi iziphi izindawo eziphephile nezingaphephile!", "type": "template", "note": "" }, { - "SourceText": "Wednesday", - "text": "ULwesithathu", + "SourceText": "map risks and support with their teens", + "text": "thola izingozi kanye nokwesekwa kanye nentsha yabo", "type": "template", "note": "" }, { - "SourceText": "Thursday", - "text": "ULwesine", + "SourceText": "map risks and support with your teen", + "text": "thola izingozi kanye nokwesekwa kanye kanye nengane yakho esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "Friday", - "text": "ULwesihlanu", + "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", + "text": "Mina nengane yamsi esebusheni bayo asivumelani ngokuthi yiziphi izindawo nezinto eziku-inthanethi ezingaphephile.", "type": "template", "note": "" }, { - "SourceText": "Saturday", - "text": "UMgqibelo", + "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", + "text": "Wenze kahle ngokuzama lo msebenzi! Lapho silalela intsha yethu, ngisho noma singavumelani, sifunda ukuqonda indlela ecabanga ngayo. Zama ukuthola isikhathi sokuphinda wenze lo msebenzi - zama ukulalelisisa futhi ubonise ukuthi uyayiqonda intsha ngaphambi kokuba uyiphendule.", "type": "template", "note": "" }, { - "SourceText": "Sunday", - "text": "ISonto", + "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", + "text": "Ingane yami esebusheni bayo ikhombe indlu yomuntu engimthembayo yathi ayiphephile. Bengishaqekile futhi ngingazi ukuthi ngenzeni.", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for your group every week. This allows all of you to try what you learned with your families before building the next skill.", - "text": "Kuhle! Sizovula ukuqeqeshwa okusha kweqembu lakho njalo ngesonto. Lokhu kunivumela nonke ukuba nizame lokho enikufundile nemindeni yenu ngaphambi kokuba nifunde elinye ikhono.", + "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", + "text": "Kuyashaqisa ukuthola ukuthi abantu abasondele kuthina nesibathembayo bangaba yingozi entsheni yethu. Khumbula ukuthatha ikhefu lapho ucasukile, bese uzama ukulalela ingane yakho esebusheni bayo uzolile. Thola umuntu othile ongakhuluma naye ngalokhu, mhlawumbe umngane noma abasebenza ngokweseka, ukuze uthole usizo oludingayo.", "type": "template", "note": "" }, { - "SourceText": "Great! We will unlock a new workshop for you every week. This allows you to try what you learned with your family before building the next skill.", - "text": "Kuhle! Sizovula ukuqeqeshwa okusha kwakho njalo ngesonto. Lokhu kuzokuvumela ukuba uzame lokho okufundile nomndeni wakho ngaphambi kokuba nifunde elinye ikhono.", + "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", + "text": "Ingane yams esebusheni bayo ikholelwa ukuthi i-bha (noma enye indawo enginomuzwa wokuthi ayiphephile) iyindawo ephephile engaya kuyo. Angazi ukuthi ngingayikholisa kanjani ingane yami.", "type": "template", "note": "" }, { - "SourceText": "You can always change these settings in your @global.weekly_workshop_options.", - "text": "Ungazishintsha noma nini lezi zinhlelo ku @global.weekly_workshop_options yakho.", + "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", + "text": "Lokhu kungakhungathekisa kakhulu. Ukuze uthole isixazululo, ingane yakho esebusheni bayo idinga ukuzwiwa - ngakho yilalele ngokuzola ingane yakho, bese uveza umbono wakho ngemva kwalokho. Ngemva kwalokho, cabangani ndawonye ngomthetho ovumela ingane ukuba izijabulise kodwa ihlale iphephile.", "type": "template", - "note": "The string @global.weekly_workshop_options should not be translated." + "note": "" }, { - "SourceText": "We know this is hard. We have added some helpful tips on how you can spend time with your teen to @data.parent_centre.my_tips.location_text, so you can access it right away. \n\nBecause @data.workshop.w_1on1.title builds the foundation for all other parenting tools, it will be the @global.weekly_workshop you receive next week!", - "text": "Siyazi ukuthi kunzima lokho. Senezele amacebiso awusizo endlela ongachitha ngayo isikhathi nengane yakho eyevile eminyakeni eyishumi nambili ukuze @data.parent_centre.my_tips.location_text, uzokwazi ukuwafinyelela ngokushesha. \n\nNgenxa yokuthi i-@data.workshop.w_1on1.title yakha isisekelo sawo wonke amanye amathuluzi okuba umzali, izoba yi-@global.weekly_workshop ozoyithola ngesonto elizayo!", + "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", + "text": "Njengomuntu omdala ngizizwa nginomthwalo wokuvikela ingane yami - kodwa lapho ngiyitshela ingane yami esebusheni bayo ngalokho okuphephile nokungaphephile, ivele yathukuthela.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.title\n@global.weekly_workshop" + "note": "" }, { - "SourceText": "Well done! Our next @global.weekly_workshop will give you more ideas for this, as a foundation for all the other parenting tools. But you already have a great start!", - "text": "Wenze kahle! I-@global.weekly_workshop yethu elandelayo izokunikeza eminye imibono yalokhu, njengesisekelo sawo wonke amanye amacebiso okukhulisa izingane. Kodwa usuvele unesiqalo esihle!", + "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", + "text": "Intsha yethu ingase yazi izinto esingazazi thina mayelana nemiphakathi yethu kanye nezobuchwepheshe. Uma sibandakanya intsha yethu emsebenzini wokwenza amamephu futhi siyilalela ngempela, izizwa izwakala futhi yaziswa, futhi kungaba lula ukuqhamuka necebo wonke umuntu avumelana ngalo.", "type": "template", - "note": "The string @global.weekly_workshop should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. We have added some essential tools on how to use praise to @data.parent_centre.my_tips.location_text for quick access.\n\nIn our @data.workshop.w_praise.in_text_title you will learn even more on how to use this skill well.", - "text": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Sifake amanye amacebiso abalulekile endlela yokusebenzisa ukuncoma ku-@data.parent_centre.my_tips.location_text ukuze ukuthole ngokushesha.\n\nKu-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", + "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", + "text": "Bekunzima ukubona izinsiza ezikhona emphakathini wangakithi ngoba angiwazi kahle umphakathi engikuwo / noma izinzizakalo ezimbwalwa ezitholakalayo.", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. In our @data.workshop.w_praise.in_text_title you will learn even more how to use this skill well.", - "text": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sisho okukhulu. Ku-@data.workshop.w_praise.in_text_title yethu, uzofunda okwengeziwe ngendlela yokusebenzisa leli khono kahle.", + "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", + "text": "Kunzima ukwazi yonke imininingwane ngemiphakathi yethu. Hilela elinye ilungu lomndeni noma umngane lapho ubeka imithetho yendawo. Ungavakashela nezinye zezinsizakalo ezikhona futhi ubuze ukuthi zenzani. Kuba ngcono lapho kukuningi esikwaziyo ukuze sigcine imindeni yethu iphephile!", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuthi leli kube yisonto elihle!\n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", + "text": "Akukuningi engikwaziyo ngezobuchwepheshe, ngakho angazi ukuthi ngikhulume ngithini ngakho enganeni yami esebusheni bayo.", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will remind you regularly to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", + "text": "Lokho kulungile ngokuphelele! Usengakwazi ukusekela ingane yakho esebusheni bayo. Cela ingane yakho ukuthi ichaze amagajethi ewasebenzisayo - ungakwenza lokhu ngesikhathi esisodwa. Leli yithuba elihle lokubonisa intshisekelo empilweni yengane yakho kanye nokuxoxa ngezingozi ezingase zibe khona ndawonye. Uma ungenaso isiqiniseko sokuthi yimiphi imithetho okufanele uyibeke, ungavumelana ngaso sonke isikhathi, nengane yakho, ukuthi nizame umthetho omusha amasonto amabili bese nixoxa ngokuthi izinto zihamba kanjani futhi nishintshe umthetho uma kudingeka!", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will remind you regularly to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops - but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get you started!", - "text": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizokukhumbuza njalo ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops - kodwa kakade ungakwazi ukufinyelela amacebiso awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise!", + "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", + "text": "Umgomo wakho bekuwukubona izingozi kanye nokuthola izindlela zokwesekwa kanye nengane yakho esebusheni bayo- emphakathini wakho naku-inthanethi.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we’ll remind you regularly to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week @data.workshop.w_stress.number of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizokukhumbuza njalo ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni @data.workshop.w_stress.number le-@global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kwe-@data.parent_centre.my_tips.location_text ukuze uqalise.", + "SourceText": "Teens can spend a lot of time outside the house or online, where it is harder for us to keep them safe. \n\nTalking together about safe and unsafe places, and how to prevent problems, really helps!", + "text": "Abantwana bethu bangachitha isikhathi esiningi ngaphandle kwasekhaya noma iku-inthanethi, lapho kunzima khona ngathi ukuba sibagcine bephephile. \n\nUkuxoxisana ngezindawo eziphephile nezindawo ezingaphephanga, nokuthi singazigwema kanjani izinkinga, kuyasiza ngempela!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.number\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. We hope our stress management tools will be useful to you. You can already find them under @data.parent_centre.my_tips.location_text.", - "text": "Siyakubonga ngokuba neqiniso. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Sithemba ukuthi imicebiso yethu okulawula ukucindezeleka izoba usizo kuwe. Ungawathola kakade ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", + "SourceText": "Greetings, everyone. \n\nToday our topic is teen safety. \n\nIt is our responsibility as parents to keep our teens safe at all times. We need to ensure that our teenagers are safe in the communities that we live in. It is our responsibility that we make them aware of the safe and unsafe areas in the communities. \n\nIt is also our responsibility to ensure that they understand the dangers that they might be exposed to when they are online. That way our teenagers will be responsible and be able to make right decisions to keep themselves safe too.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuphepha kwabantwana. \n\nKuwumthwalo wethu njengabazali ukuthi siqiniseka ukuthi abantwana bethu baphephile ngaso sonke isikhathi. Kudingeka siqiniseke ukuthi abantwana bethu baphephile emphakathini esihlala kuyo. Kuwumthwalo wethu ukuba sibenze baqaphele izindawo eziphephile nezingaphephanga emphakathini. \n\nKubuye kube umthwalo wethu wemfanelo ukuqinisekisa ukuthi bayabuqonda ubungozi abangazithola bekuzo ngokuba ku-inthanethi. Ngaleyo ndlela abantwana bethu bazokwazi ukwenza izinqumo ezinhle futhi bazigcine bephephile.", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. We have a workshop on family budgeting that can help with money stress more generally, and reduce money-related arguments.", - "text": "Kuhle. Sinemhlangano yokufundisana emayelana nokwenza isabelomali somndeni okungakusiza ngengcindezi yemali kabanzana, futhi kunciphise izingxabano ezihilela imali.", + "SourceText": "Discuss together:\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Xoxani ndawonye:\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", "type": "template", "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWe have a workshop on family budgeting in five weeks, but you can already access some core family budgeting tips under @data.parent_centre.my_tips.location_text!", - "text": "Ingcindezi yemali ingakhungathekisa. \n\nSinokuqeqeshwa okumayelana nokwenza isabelomali somndeni emasontweni amahlanu, kodwa ungawathola kakade amacebiso ayinhloko esabelomali somndeni ngaphansi kwe-@data.parent_centre.my_tips.location_text!", + "SourceText": "* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho ezevile eminyakeni eyishumi nambili \n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile entsheni yakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nentsha yakho eningayenza ukuze nigcine intsha yakho iphephile?", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we’ll remind you every day to relax, recognise and reward yourself. You matter!\n\nWe will learn more about managing stress in week 5 of the @global.weekly_workshops, but you can already access some helpful tools under @data.parent_centre.my_tips.location_text to get started.", - "text": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo. Ukuze uzinakekele futhi sikusize uzizwe uzolile lapho izinto ziba nzima, sizokukhumbuza nsuku zonke ukuthi uphumule, uzibone futhi uziklomelise. Ubalulekile!\n\nSizofunda okuningi ngokulawula ukucindezeleka esontweni leshlanu 5 @global.weekly_workshops, kodwa kakade ungakwazi ukufinyelela amathuluzi awusizo ngaphansi kokuthi @data.parent_centre.my_tips.location_text ukuze uqale.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper. \n\nBelow are some places that can be helpful", + "text": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha. \n\nNgezansi ezinye izindawo ezingaba usizo", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and using @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba nesikhathi esinzima nengane yakho esebusheni bayo.\n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukusebenzisa i @global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmacebiso ethu ake asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi esimnandi ndawonye. Silapha ukuze sikusekele.", + "SourceText": "Sometimes, we can find ourselves in trouble.\n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ngezinye izikhathi zingazithola sisenkingeni.\n* Wena nomntwana wakho ningaluthola kuphi usizo uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Siyabonga ngokwethembeka - futhi siyaxolisa ngokuba unesikhathi esinzima nengane yakho esebusheni bayo.\n\nSinethemba lokuthi amacebiso ethu okulawula ukucindezeleka azokusiza uzizwe uzolile ezimweni ezinzima. Ungawathola ngaphansi ku @data.parent_centre.my_tips.location_text.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise your teens for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncoma ingane yakho ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukuthi awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "This is a real concern for parents everywhere. We’ll make sure you get support with building communication. \n\nWe’ll talk more about planning for your teen’s safety later in the @global.weekly_workshops, but you can already access some first core tips to keep your teen safe under @data.parent_centre.my_tips.location_text!", - "text": "Lokhu kuyabakhathaza abazali yonke indawo. Sizoqinisekisa ukuthi uthola ukwesekwa ngokwakha ukukhulumisana. \n\nSizokhuluma kabanzi ngokuhlela kokuphepha kwengane yakho kamuva ku @global.weekly_workshops, kodwa ungawathola kakade amanye amacebiso ayisisekelo okugcina ingane yakho iphephile ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Recognise how good they are at using the web! \n* Think about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Qaphela ukuthi bawasebenzisa kahle la mawebusayithi! \n* Cabanga ngokuthi yimaphi okungenzeka awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo baphephe?", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshops\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "This is really great. Parenting is hard, but you’re really succeeding in this.", - "text": "Lokhu kuhle ngempela. Ukuba umzali kunzima, kodwa uyaphumelela ngempela kulokhu.", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!", + "text": "Ukuze sigcine abantwana bethu bephephile, kumelwe siqonde izimo eziyingozi abangangena kuzo!", "type": "template", "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina izingane zethu ziphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikweseke! Ungathola amathuluzi agxilile, okuqukethwe okwengeziwe kanye nezinsiza kulokhu @global.parent_centre nganoma yisiphi isikhathi. \n\nUngakwazi ukuthola amacebiso athile okuqala ayinhloko azokusiza ubeke imithetho futhi uhlele ezokuphepha ku @data.parent_centre.my_tips.location_text.", + "SourceText": "Every time you plan or keep a safety plan, click the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma nihlela noma nigcina uhlelo lokuphepha, chofoza u-@global.parent_point bese nibungaza impumelelo yenu!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "@data.workshop.w_rules.tools and @data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools kanye ne-@data.workshop.w_safe.tools kufakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Let’s make two maps together of safe and unsafe places: \n* A map of our community \n* A map of apps/websites we use online \n\nYou’ll do the same with your teen as home practice this week - if your teen is here now, you can do it together now!", + "text": "Ake senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga: \n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esiwasebenzisa ku-inthanethi \n\nUzokwenza okufanayo nomntwana wakho njengomsebenzi wasekhaya waleli viki - uma umntwana wakho ekhona njengamanje lapha, ningakwenza ndawonye lokhu njengamanje!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! You can get focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can already access some first core tips which will help with making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikweseke! Ungathola amathuluzi agxilile, okuqukethwe okwengeziwe kanye nezinsiza kulokhu @global.parent_centre nganoma yisiphi isikhathi. \n\nUngakwazi ukuthola amacebiso athile okuqala ayinhloko azokusiza ubeke imithetho ku @data.parent_centre.my_tips.location_text.", + "SourceText": "My family can join in now!", + "text": "Umndeni wami ungahlanganyela njengamanje!", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "@data.workshop.w_rules.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_rules.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Let me try it out by myself", + "text": "Ake ngizizamele ngokwami", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_rules.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nWe’ll have more support for you on this in the later @global.weekly_workshops if you’d like to know even more!", - "text": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nSizokunikeza ukwesekwa okwengeziwe kulokhu kamuva ku @global.weekly_workshops uma ungathanda ukwazi okwengeziwe!", - "type": "template", - "note": "The string @global.weekly_workshops should not be translated." - }, - { - "SourceText": "Content unlocked by these questions is now accessible under @data.parent_centre.my_tips.location_text.", - "text": "Okuqukethwe okuvulwa ngale mibuzo sekuyatholakala ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", + "SourceText": "Safety Plan", + "text": "Uhlelo Lokuphepha", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "You have just unlocked the first workshop!", - "text": "Usanda kuvula ukuqeqeshwa kokuqala!", + "SourceText": "To keep our teens safe, we need to understand the dangerous situations they could get into!\n\nLet’s make two maps together of safe and unsafe places:\n* A map of our community\n* A map of apps/websites we use online\n\nLet’s make these maps as a group now. \n\nYou’ll do the same with your teen as home practice this week.", + "text": "Ukuze sigcine abantwana bethu bephephile, kumele siqonde izimo eziyingozi abangangena kuzo!\n\nAke senze amabalazwe amabili ndawonye ezindawo eziphephile nezindawo ezingaphephanga:\n* Ibalazwe lomphakathi wethu \n* Ibalazwe lama-app/amawebusayithi esingawasebenzisa ku-inthanethi\n\nAke senze la mabalazwe siyiqembu njengamanje. \n\nUzokwenza okufanayo nengane yakho njengomsebenzi wasekhaya waleli viki.", "type": "template", "note": "" }, { - "SourceText": "We know this is hard. You can review some helpful tips on how you can spend time with your teen under @data.parent_centre.my_tips.location_text or you can have another look at the @data.workshop.w_1on1.in_text_title.", - "text": "Siyazi ukuthi kunzima lokho. Ungahlola amacebiso athile awusizo ngezindlela ongachitha ngayo isikhathi nengane yakho esebusheni bayo ngaphansi kwe-@data.parent_centre.my_tips.location_text noma ungaphinde uhlole i-@data.workshop.w_1on1.in_text_title.", + "SourceText": "Step 1: What are important places in your community?", + "text": "Isinyathelo 1: Yiziphi izindawo ezibalulekile emphakathini wakho?", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_1on1.in_text_title" + "note": "" }, { - "SourceText": "Well done for laying such a good foundation! You can always review the @data.workshop.w_1on1.in_text_title to get more ideas on how to spend time together.", - "text": "Wenze kahle ngokubeka isisekelo esihle kangaka! Ungayihlola noma nini i-@data.workshop.w_1on1.in_text_title ukuze uthole amacebiso ezindlela eningachitha ngazo isikhathi ndawonye.", + "SourceText": "* Get a piece of paper (or old newspaper or a cardboard box) and a pen. \n* Draw a map of your teen’s community, with pictures of all the main places like streets, your house, school, shops, places your teen visits.", + "text": "* Thola isiqeshana sephepha (noma iphephandaba elidala noma ikhadibhodi) kanye nepeni. \n* Dweba ibalazwe lomphakathi wengane yakho, libe nezithombe zazo zonke izindawo eziyinhloko njengemigwaqo, indlu yakho, isikole, izitolo, izindawo ezivakashelwa ingane yakho.", "type": "template", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Using this app shows that you care about your teen. You can review how to use praise under @data.parent_centre.my_tips.location_text.\n\nFor more tips on how to use this skill well, you can also have another look at the @data.workshop.w_praise.in_text_title.", - "text": "Ukusebenzisa le-app kubonisa ukuthi uyayikhathalela ingane yakho esebusheni bayo. Ungahlola indlela yokuncoma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.\n\nUkuze uthole amacebiso engeziwe endlela yokusebenzisa leli khono kahle, ungaphinde uhlole i-@data.workshop.w_praise.in_text_title.", + "SourceText": "Step 2: Which places are safe and unsafe?", + "text": "Isinyathelo 2: Yiziphi izindawo eziphephile nezingaphephanga?", "type": "template", - "note": "The following strings should not be translated:\n@data.parent_centre.my_tips.location_text\n@data.workshop.w_praise.in_text_title" + "note": "" }, { - "SourceText": "Wonderful that you are praising your teen! This helps them feel valued – your encouragement means a lot. \n\nYou can always have another look at the @data.workshop.w_praise.in_text_title for more tips on how to use this skill well.", - "text": "Kuhle ukuthi uyayincoma ingane yahoo esebusheni bayo! Lokhu kuzisiza zizizwe zibalulekile – isikhuthazo sakho sibalulekile kahkhulu. \n\nUngahlola futhi i-@data.workshop.w_praise.in_text_title ukuze uthole amacebiso engeziwe endlela yokusebenzisa leli khono kahle.", + "SourceText": "Discuss together:\n\n* Which areas on your map are safe for teenagers \n – CIRCLE these \n* Which areas on your map are unsafe for teenagers \n – CROSS those off \n* What makes a place safe or unsafe? \n* What could you and your teen do to keep your teen safer?", + "text": "Xoxani ndawonye:\n\n* Yiziphi izindawo ebalazweni lenu eziphephile ezinganeni zakho\n - yenza INDINGILIZA kuzo \n * Iziphi izindawo ebalazweni lakho ezingaphephile ezinganeni zakho \n - faka ISIPHAMBANO kuzo \n * Yini eyenza indawo iphephe noma ingaphephi? \n* Yini wena nomntwana wakho eningayenza ukuze nigcine umntwana wakho ephephile?", "type": "template", - "note": "The string @data.workshop.w_praise.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Great that this has been a good week!\n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuthi deli bekuyisonto elihle!\n\nSizoqhubeka sikukhumbuza ukuthi uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "SourceText": "Step 3: Where can you get support?", + "text": "Isinyathelo 3: Kukuphi lapho ungathola khona ukusekelwa?", "type": "template", "note": "" }, { - "SourceText": "Great that you felt calm most of the week! \n\nWe will keep reminding you to relax, recognise and reward yourself, to help you continue to manage your stress and feel calm.", - "text": "Kuhle ukuthi uzizwe uzolile izinsuku eziningi phakathi nesonto! \n\nSizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze, ukuze sikusize uqhubeke ulawula ukucindezeleka kwakho futhi uzizwe uzolile.", + "SourceText": "Sometimes, we can find ourselves in trouble. Discuss together:\n \n* Where can you and your teen get support when you face a crisis? \n – MARK those areas with a little object like a stone or piece of paper.", + "text": "Ngezinye izikhathi zingazithola sisenkingeni. Xoxani ndawonye:\n \n* Ningaluthola kuphi usizo nokwesekwa uma nizithola nisenkingeni? \n – PHAWULA lezo zindawo ngokuthile okunjengetshe noma isiqeshana sephepha.", "type": "template", "note": "" }, { - "SourceText": "We understand how stressful life can be. We will keep reminding you to relax, recognise and reward yourself, to help manage your stress and feel calmer.\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Siyaqonda ukuthi impilo ingaba nengcindezi kangakanani. Sizohlala sikukhumbuza ukuthi uphumule, uzibone futhi uziklomelise, ukuze usize ukulawula ukucindezeleka kwakho futhi uzizwe upholile.\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "SourceText": "Step 4: What are risky places online and how can you make them safer?", + "text": "Isinyathelo 4: Yiziphi izindawo eziyingozi ku-inthanethi futhi ungenza kanjani ukuthi ziphephe?", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. To look after yourself and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ukuze uzinakekele futhi sikusize uhlale uzolile lapho izimo ziba nzima, sizoqhubeka sikukhumbuza ukuba uphumule, uziqaphele futhi uzivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "SourceText": "* Draw pictures of the apps and websites your teenagers use \n* Praise each other for how good they are at using the web! \n* Talk about which ones might be unsafe. Why? \n* What could you and your teen do to make using the internet safer for your teen and their friends?", + "text": "* Dweba izithombe zama-app namawebusayithi umntwana wakho awasebenzisayo \n* Ncomanani ngokusebenzisa kahle lawa mawebusayithi! \n* Khulumani ngokuthi yimaphi okungenzeka ukube awaphephile. Kungani? \n* Yini wena nomntwana wakho eningayenza ukuze nenze ukusebenzisa i-inthanethi kwengane yakho kanye nabangane bayo kuphephe?", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest. It can be so difficult to control our stress. You can always find some helpful stress management tools under @data.parent_centre.my_tips.location_text.", - "text": "Siyakubonga ngokuba qotho. Kungaba nzima kakhulu ukulawula ukucindezeleka kwethu. Ungathola amathuluzi okubhekana nokucindezeleka ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Ingabe usukhulumile nengane yakho esebusheni bayo ngezindlela zokuphepha?", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "" }, { - "SourceText": "Great. If any stress or disagreements around money do come up in your family in the future, you can always review the @data.workshop.w_money.in_text_title or @data.parent_centre.my_tips.location_text!", - "text": "Kuhle. Uma kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini esikhathini esizayo, ungahlola la-ku-@data.workshop.w_money.in_text_title noma okuthi-@data.parent_centre.my_tips.location_text!", + "SourceText": "This has been the hardest of times to be a parent. You should be so proud of yourself for everything you have done. \n\nThink about every time you have made your teen smile and all the care you have given them. Parents are incredible, and you are incredible!", + "text": "Lesi bekuyisikhathi esinzima kakhulu sokuba umzali. Kumelwe uziqhenye ngakho konke okwenzile. \n\nCabanga ngazo zonke izikhathi owenze ngazo ingane yakho esebusheni bayo yamamatheka kanye nakho konke ukunakekela oyinike khona. Abazali bayamangalisa, nawe uyamangalisa!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Money stress can be overwhelming. \n\nWhenever stress or disagreements around money come up in your family, you can find tips in the @data.workshop.w_money.in_text_title or under @data.parent_centre.my_tips.location_text!", - "text": "Ingcindezi yemali ingakhungathekisa. \n\nNoma nini lapho kuvela ukucindezeleka noma ukungavumelani okubangelwa yimali emndenini wakho, ungathola amacebiso ku @data.workshop.w_money.in_text_title noma ngaphansi kokuthi @data.parent_centre.my_tips.location_text!", + "SourceText": "To keep your teen safe, it helps to chat together about your community and their online experiences. \n\nComplete the @local.workshop_data.in_text_title and see how you can do this!", + "text": "Ukuze ugcine ingane yahoo esebusheni bayo iphephile, kuyasiza ukuxoxa ndawonye ngomphakathi wenu kanye nalokho okutholakala kwi-inthanethi. \n\nQedela i-@local.workshop_data.in_text_title ubone indlela ongakwenza ngayo lokhu!", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.in_text_title\n@data.parent_centre.my_tips.location_text" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. To look after yourselves and help you feel calmer when things get tough, we will keep reminding you to relax, recognise and reward yourself. You matter!\n\nYou can find more ideas to manage stress in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text.", - "text": "Siyakubonga ngokuba neqiniso – siyaxolisa ngokuthi ingane yakho esebusheni bayo ikuthwalise kanzima. Ukuze nizinakekele futhi sinisize nizizwe nizolile lapho izimo ziba nzima, sizonikhumbuza nsuku zonke ukuba niphumule, niqaphele futhi nizivuze. Ubalulekile!\n\nUngathola amacebiso engeziwe okubhekana nokucindezeleka ku-@global.weekly_workshop noma ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "SourceText": "You have have gained so many parenting skills already over the past weeks!\n\nComplete the next workshop to gain another helpful skill.", + "text": "Usuzuze amakhono amaningi okukhulisa izingane kula masonto adlule!\n\nQedela loumhlangano wokufundisana elandelayo ukuze uthole elinye ikhono eliwusizo.", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe all feel overwhelmed sometimes, and continuing to use @global.parent_app is a great step to help you and your family!\n\nOur materials have helped thousands of parents and families to be less stressed and have more positive time together. We are here to support you.", - "text": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho eyevile eminyakeni eyishumi nambili ikuthwalise kanzima. \n\nSonke sizizwa sikhungathekile ngezinye izikhathi, futhi ukuqhubeka usebenzisa i-@global.parent_app kuyisinyathelo esihle sokusiza wena nomndeni wakho!\n\nAmathuluzi ethu aye asiza izinkulungwane zabazali kanye nemindeni ukuba ingacindezeleki kakhulu futhi ichithe isikhathi kamnandi ndawonye. Silapha ukuze sikusekele.", + "SourceText": "It seems you haven’t finished the @local.workshop_data.in_text_title yet. Making a plan together with your teen can prevent many problems – give it a try before moving on!\n\nWell done for using @global.parent_app to support your family.", + "text": "Kubonakala sengathi awukayiqedi i-@local.workshop_data.in_text_title okwamanje. Ukwenza icebo ndawonye nengane yakho esebusheni bayo kuvimbela izinkinga eziningi – ake ukuzame lokhu ngaphambi kokuqhubeka!\n\nWenze kahle ngokusebenzisa i-@global.parent_app ukuze usekele umndeni wakho.", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The following strings should not be translated:\n@local.workshop_data.in_text_title\n@global.parent_app" }, { - "SourceText": "Thank you for being honest – and we’re sorry you’re having a difficult time with your teen. \n\nWe hope our stress management tools will continue to help you to feel calmer in hard situations. You can find them under @data.parent_centre.my_tips.location_text.", - "text": "Siyakubonga ngokuba qotho – siyaxolisa ngokuthi ingane yakho esebusheni bayo ikuthwalise kanzima. \n\nSinethemba lokuthi amacebiso ethu okulawula ukucindezeleka azoqhubeka ekusiza uzizwe uzolile ezimweni ezinzima. Ungawathola ngaphansi kokuthi-@data.parent_centre.my_tips.location_text.", + "SourceText": "Congratulations, you completed @local.workshop_data.in_text_title. Tomorrow, a new workshop is ready for you to help you and your family deal with any situation – together you can do so much!", + "text": "Siyakuhalalisela, uyiqedile i-@local.workshop_data.in_text_title. Kusasa, umhlangano wokufundisana okusha kukulindile ukuze kusize wena nomndeni wakho nibhekane nanoma yisiphi isimo – ndawonye kuningi eningakwenza!", "type": "template", - "note": "The string @data.parent_centre.my_tips.location_text should not be translated." + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "This is a real concern for parents everywhere. Remember to use your new skills to continue to build good communication with your teen. \n\nYou can review core tips on planning for your teen’s safety in the @global.weekly_workshop or under @data.parent_centre.my_tips.location_text!", - "text": "Lokhu kubakhathaza ngempela abazali yonke indawo. Khumbula ukusebenzisa amakhono akho amasha ukuze uqhubeke ukwakha ukukhulumisana okuhle nengane yakho esebusheni bayo. \n\nUngahlola amacebiso abalulekile okuhlela ukuphepha kwengane yakho esebusheni ku-@global.weekly_workshop noma ngaphansi kwe-@data.parent_centre.my_tips.location_text!", + "SourceText": "Let's think about what happened to @global.w_safe_teen_girl_1:", + "text": "Ake sicabange ngokwenzeke ku @global.w_safe_teen_girl_1:", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.my_tips.location_text" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you!\n\nRemember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. You can also review core tips on rules and safety planning under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikusekele!\n\nKhumbula, ungathola amacebiso agxilile kokuthile, okuqukethwe okwengeziwe kanye nezinsiza kwi-@global.parent_centre nganoma yisiphi isikhathi. Ungahlola namacebiso amayelana nemithetho nokuhlela ezokuphepha ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", + "SourceText": "What was risky about that situation?", + "text": "Yini ebe yingozi ngalesi simo?", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. It can be difficult to know how to keep our teens safe. We often feel powerless as parents in this, but we are here to support you! Remember, you can find focused tools, extra content and resources on this in the @global.parent_centre at any time. \n\nYou can also review core tips on making rules under @data.parent_centre.my_tips.location_text.", - "text": "Ukuba umzali akulula. Kungase kube nzima ukwazi indlela yokugcina intsha yethu iphephile. Ngokuvamile sizizwa singenamandla njengabazali kulokhu, kodwa silapha ukuze sikusekele! Khumbula, ungathola amathuluzi agxilile kokuthile, okuqukethwe okwengeziwe kanye nezinsiza kwi-@global.parent_centre nganoma yisiphi isikhathi. \n\nUngahlola namacebiso ayinhloko okubeka imithetho ngaphansi kokuthi @data.parent_centre.my_tips.location_text.", + "SourceText": "The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts", + "text": "Indoda ebisemotweni ibifaka ingcindezi @global.w_safe_teen_girl_1 ngezipho", "type": "template", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.my_tips.location_text" + "note": "" }, { - "SourceText": "Being a parent is not easy. Well done for focusing on keeping your teen safe. \n\nRemember, you can find more support on this in the @data.workshop.w_safe.in_text_title whenever you need it!", - "text": "Ukuba umzali akulula. Wenze kahle ngokugxila ekugcineni ingane yakho iphephile. \n\nKhumbula, ungathola ukusekwa okwengeziwe mayelana nalokhu ku-@data.workshop.w_safe.in_text_title noma nini lapho ukudinga!", + "SourceText": "@global.w_safe_teen_girl_1's friend was encouraging her", + "text": "Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ", "type": "template", - "note": "The string @data.workshop.w_safe.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Remember you can access lots of helpful tips and resources in the @global.parent_centre - this is available for you at any time!", - "text": "Khumbula ungathola amacebiso amaningi awusizo kanye nezinsiza ku-@global.parent_centre - lokhu ungakuthola noma nini!", + "SourceText": "Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things", + "text": "Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Are there teens in your family?", - "text": "Ingabe ikhona intsha emndenini wakini?", + "SourceText": "Many girls in our communities get pregnant or catch HIV from older men", + "text": "Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala", "type": "template", "note": "" }, { - "SourceText": "This app focuses on families with teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things for your family too!", - "text": "Le-app igxila emindenini enezingane ezisebusheni bazo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo emndenini wakho!", + "SourceText": "There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "Bekungekho umuntu omdala othembekile obenganikeza u-@global.w_safe_teen_girl_1 iseluleko", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are there adults in your family?", - "text": "Ingabe bakhona abadala emndenini wakho?", + "SourceText": "All those things are true!", + "text": "Zonke lezi zinto ziyiqiniso!", "type": "template", "note": "" }, { - "SourceText": "This app focuses on parents of teenagers age @global.teen_age_bracket, but you are welcome to continue - you may learn useful things too!", - "text": "Le-app igxila kubazali bezingane ezisebusheni bayo @global.teen_age_bracket, kodwa uvumelekile ukuba uqhubeke - nawe ungafunda izinto eziwusizo!", + "SourceText": "Let's think about our teens' online safety.", + "text": "Ake sicabange ngokuphepha kwezingane zethu ku-inthanethi.", "type": "template", - "note": "The string @global.teen_age_bracket should not be translated." + "note": "" }, { - "SourceText": "Are you sure you want to skip this question?", - "text": "Ingabe uyaqiniseka ukuthi ufuna ukuweqa lo mbuzo?", + "SourceText": "What is the biggest online risk for teens these days?", + "text": "Iyiphi ingozi enkulu yabantu abasha ku-inthanethi kulezi zinsuku?", "type": "template", "note": "" }, { - "SourceText": "Are you sure you want to skip this question? Remember, your answer will be kept private and will help us understand your parenting needs. \n\nYou can also choose not to answer any question by selecting the circle.", - "text": "Uqinisekile ukuthi ufuna ukuwujomba lombuzo? Khumbula ukuthi impendulo yakho izogcinwa iyimfihlo futhi izosisiza ukuthi siqonde izidingo zakho ekukhuliseni abantwana.\n\nFuthi ungakhetha ukungaphenduli nowodwa umbuzo ngokukhetha indilinga.", + "SourceText": "Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things", + "text": "Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili", "type": "template", "note": "" }, { - "SourceText": "You selected \"I would rather not answer\"", - "text": "Ukhethe okuthi \"Angithandi ukungaphenduli\"", + "SourceText": "People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country", + "text": "Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe", "type": "template", "note": "" }, { - "SourceText": "That’s ok! \n\nRemember, if you do answer your answer will be kept private and will help us to provide you with content that is exactly right for you.", - "text": "Kulungile!\n\nKhumbula, uma uphendula impendulo yakho izogcinwa iyimfihlo futhi izosiza ukuthi sikuhlinzeke ulwazi olulungele wena ngqo.", + "SourceText": "People put things online to persuade teenagers to hurt themselves or commit suicide", + "text": "Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale", "type": "template", "note": "" }, { - "SourceText": "Customise for your needs", - "text": "Hlela ngendlela evumelana nezidingo zakho", + "SourceText": "Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them", + "text": "Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise", "type": "template", "note": "" }, { - "SourceText": "Every parent in the world is struggling in these hard times. The next questions about your parenting experiences will help us to get you the support you need.\n\nBe honest. Remember that you are not alone! Millions of parents feel like you do, and we all deserve support.", - "text": "Wonke umzali emhlabeni udonsa kanzima kulezi zikhathi ezinzima. Imibuzo elandelayo mayelana nomuzwa wakho wokuba umzali izosisiza ukuthi sikutholele ukwesekwa okudingayo.\n\nYiba qotho. Khumbula ukuthi awuwedwa! Izigidi zabazali zizizwa njengawe, futhi sonke siyakufanelekela ukwesekwa.", + "SourceText": "People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", "type": "template", "note": "" }, { - "SourceText": "It is hard to find time to have fun with your teenager.", - "text": "Kunzima ukuthola isikhathi sokuzijabulisa nengane yakho esebusheni bayo.", + "SourceText": "Communication is the most important thing!\n\nLet's see what happened with @global.w_safe_female_caregiver and @global.w_safe_teen_girl_1:", + "text": "Ukukhulumisana kuyinto ebaluleke kakhulu!\n\nAke sibone ukuthi yini eyenzeke ku @global.w_safe_female_caregiver no @global.w_safe_teen_girl_1 wakhe:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "How many days in the past week were you able to give them your attention and do something that they enjoyed with them?", - "text": "Zingaki izinsuku esontweni elidlule okwazile ngazo ukunaka izingane zakho wenza nazo okuthile ezikujabulelayo?", + "SourceText": "@global.w_safe_teen_girl_1: \"Something happened when I was out with my friends @global.w_safe_teen_girl_2 and @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: \"Tell me, @global.w_safe_teen_girl_1\"", + "text": "@global.w_safe_teen_girl_1: “Kunokuthile okwenzeke ngesikhathi ngiphume nabangane bami @global.w_safe_teen_girl_2 no @global.w_safe_teen_girl_3!\"\n\n@global.w_safe_female_caregiver: “Ngitshele, @global.w_safe_teen_girl_1\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_3\n@global.w_safe_female_caregiver\n@global.w_safe_teen_girl_1" }, { - "SourceText": "@data.workshop.w_1on1.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_1on1.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Man in car: “Hey beautiful. I have been looking at you for a while. You are very beautiful, what’s your name? \n\n@global.w_safe_teen_girl_2: “Her name is @global.w_safe_teen_girl_1”", + "text": "Indoda esemotweni: “Ntokazi enhle. Sekuyisikhathi eside ngilokhu ngikubuka. Umuhle kakhulu, ungubani igama lakho? \n\n@global.w_safe_teen_girl_2: “Igama lakhe u-@global.w_safe_teen_girl_1”", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_1on1.tools\n@data.parent_centre.my_tips.title" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_2\n@global.w_safe_teen_girl_1" }, { - "SourceText": "In our busy lives it’s hard to focus on the positive.", - "text": "Ekuphileni kwethu okumatasa kunzima ukugxila kokuhle.", + "SourceText": "Man in car: “@global.w_safe_teen_girl_1, would you like to come with me to have something to drink and chips? Come on, get in, you’ll be back in time, I promise…” \n\n@global.w_safe_teen_girl_1: “I’m not sure if that’s a good idea…”", + "text": "Indoda esemotweni: @global.w_safe_teen_girl_1, ungathanda yini ukuhamba nami siyofuna okuphuzwayo namashibusi? Ngiyakucela, ngena, uzobuya ngesikhathi, ngiyakuthembisa...” \n\n@global.w_safe_teen_girl_1: “Anginaso isiqiniseko sokuthi umbono omuhle lowo...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "How many days in the past week have you praised your teen?", - "text": "Zingaki izinsuku esontweni elidlule oke wancoma ngazo ingane yakho esebusheni bayo?", + "SourceText": "@global.w_safe_teen_girl_2: “You are lucky, my friend. I wish a man would ask ME out and buy me gifts. I’m telling you, if you don’t do this I’m going to tell everyone you are stupid!”", + "text": "@global.w_safe_teen_girl_2: “Unenhlanhla, mngane wami. Ngifisa sengathi indoda ingacela ukukhipha MINA ingithengele izipho. Ngiyakutshela, uma ungakwenzi lokhu ngizotshela wonke umuntu ukuthi uyisilima!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_2 should not be translated." }, { - "SourceText": "@data.workshop.w_praise.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_praise.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 don’t go! Be careful! Let’s go home. It is dangerous to go with people you don’t know. Besides, he’s too old for you and what he is doing is wrong.\"\n\n@global.w_safe_teen_girl_1: “I just don’t know…”", + "text": "@global.w_safe_teen_girl_3: “@global.w_safe_teen_girl_1 ungahambi! Qaphela! Asihambe siye ekhaya. Kuyingozi ukuhamba nabantu ongabazi. Ngaphandle kwalokho, mdala kunawe futhi akwenzayo akulungile.”\n\n@global.w_safe_teen_girl_1: “Eqinisweni angazi....”", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_praise.tools\n@data.parent_centre.my_tips.title" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_3\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "This is a very stressful time for families.", - "text": "Lesi yisikhathi esinencindezela kakhulu emindenini.", + "SourceText": "@global.w_safe_female_caregiver: \"Pfff, I am so proud of you that you did not get into the car. That was a dangerous situation, thank you for telling me!\"", + "text": "@global.w_safe_female_caregiver: “Mhh, ngiyaziqhenya ngawe ngokuthi awuyigibelanga le moto. Bekuyisimo esiyingozi lesi, ngiyabonga ngokuthi ungitshele!”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", - "text": "Zingaki izinsuku esontweni elidlule ozizwe ucindezeleke kakhulu njengomzali/umnakekeli?", + "SourceText": "Let's look at another example of a dangerous situation together.", + "text": "Ake sibheke esinye isibonelo sesimo esiyingozi ndawonye.", "type": "template", "note": "" }, { - "SourceText": "Sometimes our children make us really upset.", - "text": "Ngezinye izikhathi izingane zethu ziyasicasula ngempela.", + "SourceText": "@global.w_safe_teen_girl_1: \"My friend has been talking with a guy our age online... She’s going to send him photos of herself. Is that better because he’s our age?\"", + "text": "@global.w_safe_teen_girl_1: “Umngane wami ubelokhu ekhuluma nomunye umfana olingana nathi ku-inthanethi... Uzomthumelela izithombe zakhe. Ingabe lokhu kungcono ngoba ulingana nathi?”", "type": "template", - "note": "" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", - "text": "Zingaki izinsuku phakathi nesonto elidlule lapho khona uke wamemeza, wakabalasa noma wathethisa ingane yakho esebusheni bayo?", + "SourceText": "@global.w_safe_female_caregiver: \"You are a good friend for being worried about her. Sending sexy photos is a real risk too.\"", + "text": "@global.w_safe_female_caregiver: “Uwungane omuhle ngoba ukhathazekile ngaye. Ukuthumela izithombe zakhe zobulili nakho kuyingozi.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Well done. Brain science shows that controlling your anger improves your teen’s brain development. Be proud of yourself.", - "text": "Wenze kahle. ulwazi lwezinto zemvelo nje ngengqondo ibonisa ukuthi ukulawula intukuthelo yakho kuthuthukisa ukukhula kwengqondo yengane yakho esebusheni bayo. Ziqhenye ngawe ngokwakho.", + "SourceText": "@global.w_safe_female_caregiver: \"Sometimes people aren’t who they say they are online – he could say he is your age but be a 50 year old man. Or when they break up, he could send those photos to everyone and your friend would feel awful.\"", + "text": "@global.w_safe_female_caregiver: “Ngezinye izikhathi abantu abasho lokho abayikho ngempela ku-inthanethi - angase athi ulingana nani uthole ukuthi uyindoda eneminyaka engu- 50. Noma uma behlukana, angathumela lezo zithombe kuwo wonke umuntu lokho kungenza umngane wakho azizwe kabi.”", "type": "template", - "note": "" + "note": "The string @global.w_safe_female_caregiver should not be translated." }, { - "SourceText": "Money is one of the biggest stresses for families now.", - "text": "Imali ingenye yezinto ezicindezela imindeni kakhulu manje.", + "SourceText": "Doing any of these makes you a great parent.", + "text": "Ukwenza okunye kulezi zinto kubonisa ukuthi ungumzali ovelele.", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week have you worried or felt anxious about money?", - "text": "Zingaki izinsuku esontweni elidlule oke wakhathazeka ngazo noma wazizwa ukhathazekile ngemali?", + "SourceText": "* Story & discussion – that worked!\n* Story & discussion – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Indaba kanye nengxoxo – okusebenzile!\n* Indaba kanye nengxoxo – okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", - "text": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) oye waphelelwa kuzo yimali yokuthenga ukudla?", + "SourceText": "* Story & reflection – that worked!\n* Story & reflection – that worked!\n* Mapping exercise\n* Tools: How to keep your teen safe\nMAPS - RULES - AMNESTY\n* Home practice suggestions", + "text": "* Indaba kanye nokubuyekeza - okusebenzile!\n* Indaba kanye nokubuyekeza - okusebenzile!\n* Ukufunda ukwenza ibalazwe\n* Amathuluzi: Indlela yokugcina umntwana wakho ephephile\nAMABALAZWE - IMITHETHO - USHWELE\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_money.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_money.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Let's talk about what happened to @global.w_safe_teen_girl_1", + "text": "Ake sikhulume ngokwenzeke ku-@global.w_safe_teen_girl_1", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_money.tools\n@data.parent_centre.my_tips.title" + "note": "The string @global.w_safe_teen_girl_1 should not be translated." }, { - "SourceText": "It is so stressful when children misbehave.", - "text": "Kuyacindezela kakhulu lapho izingane ziziphatha kabi.", + "SourceText": "Discuss together: \n\nWhat was risky about that situation?", + "text": "Xoxani ndawonye: \n\nYini ebiyingozi ngalesi simo?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", - "text": "Zingaki izinsuku kulelisonto eledlulile othe wajezisa izingane ngokuzishaya ngoswazi noma ibhande noma ezinqeni noma ngesandla noma into ethile efana nenduku noma nebhande?", + "SourceText": "The situation was risky because...", + "text": "Lesi simo besiyingozi ngoba...", "type": "template", "note": "" }, { - "SourceText": "It is wonderful that you are responding calmly when your teen does something upsetting. They can learn so much from you!", - "text": "Kuhle ukuthi uphendula ngomoya ophansi lapho ingane yakho yenza okuthile okucasulayo. Bangafunda okuningi kuwe!", + "SourceText": "* The man in the car was pressuring @global.w_safe_teen_girl_1 with gifts \n* @global.w_safe_teen_girl_1's friend was encouraging her \n* Going with an older man puts @global.w_safe_teen_girl_1 in a dangerous situation where she can get hurt or be forced to do things \n* Many girls in our communities get pregnant or catch HIV from older men \n* There were no other trusted adults to advise @global.w_safe_teen_girl_1", + "text": "* Indoda ebisemotweni ibiphoqa @global.w_safe_teen_girl_1 ngezipho \n* Umngane ka-@global.w_safe_teen_girl_1 ubemkhuthaza ukuthi ahambe \n* Ukuzikhipha nendoda endala kungafaka u@global.w_safe_teen_girl_1 esimweni esiyingozi lapho engalimala khona noma aphoqwe ukuba enze izinto \n* Amantombazane amaningi emphakathini ayakhulelwa noma athole i-HIV emadodeni amadala \n* Bekangekho omunye umuntu omdala onganikeza u-@global.w_safe_teen_girl_1 iseluleko", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1\n@global.w_safe_teen_girl_1" }, { - "SourceText": "@data.workshop.w_stress.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_stress.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Let's talk about our teens' online safety.", + "text": "Ake sikhulume ngokuphepha kwezingane zethu ku-inthanethi.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_stress.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", - "text": "Kunzima ukulandelela okwenziwa yizingane zakho njengoba ziqala ukuzimela.", + "SourceText": "What are some of the online risks for teens these days?", + "text": "Yiziphi ezinye izingozi izingane zethu ezingabhekana nazo ku-inthanethi kulezi zinsuku?", "type": "template", "note": "" }, { - "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", - "text": "Zingaki izinsuku esontweni elidlule obuwazi ngazo ukuthi ingane yakho esebusheni bayo yenzani nokuthi ibinobani?", + "SourceText": "* Adults use social media, gaming and messaging apps and websites to meet teenagers and persuade them to do sexual things \n* People put things online to make us hurt other people – like making violence seem cool, or hating people from another race or country\n* People put things online to persuade teenagers to hurt themselves or commit suicide\n* Teenagers share sexy videos or photos or information about themselves, and people show it to others or use it to upset them\n* People can often be nasty to teenagers online – they feel like they can bully people safely", + "text": "* Abantu abadala basebenzisa ezokuxhumana, ezemidlalo nezinhlelo zokuthumelelana imilayezo namawebusayithi ukuze bahlangane nentsha bese beyiheha ukuthi yenze izenzo zobulili \n* Abantu bafaka izinto ku-inthanethi ukuba balimaze abanye abantu - njengokwenza udlame lubonakala lulungile, noma ukuzonda abantu bolunye uhlanga noma abavela kwelinye izwe\n* Abantu bafaka izinto ku-inthanethi ukwenza intsha ukuba izilimaze noma izibulale\n* Intsha ifaka amavidiyo noma izithombe zayo zobulili noma imininingwane ephathelene nayo, bese kuthi abanye bayakusebenzisa lokho ukuze bayilimaze noma bayithukuthelise\n* Izikhathi eziningi abantu bangaba nonya kubantu abasha ku-inthanethi - bazizwa bengahlukumeza abantu ngendlela ephephile", "type": "template", "note": "" }, { - "SourceText": "This is good to hear.", - "text": "Kuhle ukuzwa lokhu.", + "SourceText": "MAPS", + "text": "AMABALAZWE", "type": "template", "note": "" }, { - "SourceText": "Were you in lockdown this week?", - "text": "Ingabe ubusazivalele endlini kuleli sonto?", + "SourceText": "Make MAPS with your teen of safe and unsafe areas in your community and online. Talk about how to keep their information, photos and videos private online. Talk about how once something goes online, it stays there forever. They might know an example from their friends.", + "text": "Yenza AMABALAZWE nomntwana wakho ngezindawo eziphephile nezindawo ezingaphephanga emphakathini wakho naku-inthanethi. Xoxa naye ngokuthi ingayigcina kanjani imininingwane, izithombe namavidiyo akhe efihlekile ku-inthanethi. Xoxa nayo ngokuthi kwenzeka kanjani ukuthi uma okuthile kufakwa ku-inthanethi kuzohlala lapho unomphela. Kungenzeka iyasazi isibonelo salokho ngabangane bayo.", "type": "template", "note": "" }, { - "SourceText": "Great that you are aware of what your teen is doing. Parenting is hard, but you’re really succeeding in this to keep them safe.", - "text": "Kuhle ukuthi uyakwazi lokho okwenziwa yingane yakho esebusheni bayoi. Ukuba umzali kunzima, kodwa uyaphumelela ngempela ekugcineni ingane yakho iphephile.", + "SourceText": "Safety Plan Activity", + "text": "Umsebenzi Wehlelo Lokuphepha", "type": "template", "note": "" }, { - "SourceText": "How many days in a typical non-lockdown week do you know what your teen is doing and who they are with?", - "text": "Zingaki izinsuku esontweni elijwayelekile lokungavaliwe izwe owaziyo ukuthi ingane yakho yenzani nokuthi inobani?", + "SourceText": "RULES", + "text": "IMITHETHO", "type": "template", "note": "" }, { - "SourceText": "@data.workshop.w_safe.tools added to @data.parent_centre.my_tips.title.", - "text": "@data.workshop.w_safe.tools ifakwe ku-@data.parent_centre.my_tips.title.", + "SourceText": "Make RULES with your teen about safely using the apps and websites that they like. \n\nRemember the story about Online Safety? See it again here.", + "text": "Beka IMITHETHO nentsha yakho mayelana nokuphepha uma isebenzisa ama-app namawebhuyasithi ewathandayo. \n\nKhumbula indaba Yokuphepha ku-Inthanethi? Sibone futhi lapha.", "type": "template", - "note": "The following strings should not be translated:\n@data.workshop.w_safe.tools\n@data.parent_centre.my_tips.title" + "note": "" }, { - "SourceText": "We all want to keep our children safe.", - "text": "Sonke sifuna ukugcina izingane zethu ziphephile.", + "SourceText": "Online Safety Story", + "text": "Indaba Yokuphepha Ku-inthanethi", "type": "template", "note": "" }, { - "SourceText": "How many days in the past month (30 days) did you talk with your teen about keeping safe from sexual violence online or offline?", - "text": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) okhulume ngazo nengane yakho esebusheni bayo ngokuzigcina iphephile ekuhlukunyezweni ngokocansi ku-inthanethi noma ekuphileni okungokoqobo?", + "SourceText": "AMNESTY", + "text": "USHWELE", "type": "template", "note": "" }, { - "SourceText": "This could be when they are going out with friends, or talking about the websites they use.", - "text": "Lokhu kungaba lapho zizikhipha nabangane noma lapho nikhuluma ngamawebusayithi eziwasebenzisayo.", + "SourceText": "Make an AMNESTY agreement. If something happens that makes them upset, uncomfortable or scared, they can talk to you and you won’t get angry or punish them, even if they were doing something wrong.\n\nRemember the story about Safety Amnesty? See it again here.", + "text": "Yenzani isivumelwano sikaSHWELE. Uma kwenzeka okuthile okubathukuthelisayo, okubenza bazizwe bangakhululekile noma bethuke, bangakhuluma nawe ngakho futhi angeke ucasuke noma ubajezise, ngisho noma kuthiwa bebenza okuthile okungalungile.\n\nKhumbula udaba Lokuphepha Kukashwele? Lubone futhi lapha.", "type": "template", "note": "" }, { - "SourceText": "We have a new challenge now – keeping our teenagers safe from COVID-19.", - "text": "Sinenselele esisha manje – ukugcina intsha yethu iphephile ku-COVID-19.", + "SourceText": "Digital parenting is just like parenting in the real world. You have taken a BIG STEP to keeping your teen safe in the community AND online. Good for you!", + "text": "Ukuba umzali kwezobuchwepheshe kuyafana nokuba umzali ekuphileni okujwayelekile. Uthathe ISINYATHELO esikhulu sokugcina umntwana wakho ephephile emphakathini KANYE naku-inthanethi. Kuhle lokho!", "type": "template", "note": "" }, { - "SourceText": "How many days last week did your teenager stay safe through wearing a mask, keeping a distance from people and keeping away from crowded places?", - "text": "Zingaki izinsuku ngesonto eledlule ingane yakho ihlale iphephile ngokugqoka imaski, iqhelelene nabantu futhi iqhele ezindaweni eziminyene?", + "SourceText": "Resources to help in the community", + "text": "Izinsiza zokusiza emphakathini", "type": "template", "note": "" }, { - "SourceText": "It can be challenging to keep your teen safe in COVID! We are putting together some advice - you will soon be able to access it in the @global.parent_centre.", - "text": "Kungaba nzima ukugcina ingane yakho esebusheni bayo iphephile ku-COVID! Sisahlanganisa ezinye izeluleko - maduze uzokwazi ukusithola ku @global.parent_centre.", + "SourceText": "Online Safety Resources", + "text": "Izinsiza Zokuphepha Ku-inthanethi", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "That’s great. We are putting together some advice for keeping your teen safe in COVID - you will soon be able to access it in the @global.parent_centre.", - "text": "Kuhle lokho. Sisahlanganisa ezinye izeluleko zokugcina ingane yakho esebusheni bayo iphephile ku-COVID - maduze uzokwazi ukuzithola ku @global.parent_centre.", + "SourceText": "Being a great parent also means taking time to care for yourself every day.", + "text": "Ukuba umzali ophumeleleyo kusho ukuzibekela isikhathi sokuzinakekela nsuku zonke.", "type": "template", - "note": "The string @global.parent_centre should not be translated." + "note": "" }, { - "SourceText": "Thank you for being honest", - "text": "Siyakubonga ngokuba qotho", + "SourceText": "Great. And amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Kuhle. Kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", "type": "template", "note": "" }, { - "SourceText": "CHAT", - "text": "Xoxa", + "SourceText": "Being a parent is hard. But it is amazing that you are using this app – it shows your commitment as a parent. Make sure you give yourself credit and praise for what you are doing.", + "text": "Kunzima ukuba umzali. Kodwa kuyamangalisa nokuthi usebenzisa le-app - kubonisa ukuzimisela kwakho njengomzali. Qiniseka ukuthi uyazivuza futhi uzincome ngalokho okwenzayo.", "type": "template", "note": "" }, { - "SourceText": "Share how you feel, and encourage your teen to talk about their worries too. You will understand each other better and can make a good plan together to stay healthy and happy!", - "text": "Xoxa ngokuthi uzizwa kanjani, ukhuthaze umntwana ukuthi akhulume ngalokho okubakhathazayo nabo. Nizozwisisana kangcono nenze icebo elihle ndawonye ukuze nihlale ninempilo futhi nijabulile!", + "SourceText": "You've completed this week's workshop.\n\nWe’ll do some of the self-care activities again when you get together with your group for the first time - you all deserve some extra self-care!", + "text": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nSizokwenza eminye futhi imisebenzi yokuzinakekela uma uhlangana neqembu lakho okokuqala - nonke nifanelwe ukuzinakekela okwengeziwe!", "type": "template", "note": "" }, { - "SourceText": "CAUTION", - "text": "Qaphela", + "SourceText": "Whenever you can, relax, recognise and reward yourself. \n\nCare for yourself every day. You matter!", + "text": "Noma nini lapho ungakwazi, phumula, bona bese uyazivuza. \n\nZinakekele nsuku zonke. Ubalulekile!", "type": "template", "note": "" }, { - "SourceText": "Get your information from reliable sources of information, so you can be confident in these uncertain times. We hear and see a lot of news via other people and phones, TV, internet. Does it make you feel doubt, worry, fear, anger, or confusion? Check before you share or act!", - "text": "Thola ulwazi lwakho kwimithombo ethembekile khona uzoba nokuzethemba kulezizikhathi ezingaqinisekile. Siyezwa futhi sibona izindaba eziningi kwabanye abantu, emafonini, TV, intanethi. Ingabe kukwenza ungabaze, ukhathazeke, usabe, ucasuke noma udideke? Hlola ngaphambi kokuthi udlulisele kwabanye nagaphambi kokuthi wenze!", + "SourceText": "Every time you relax, recognise something you've done well or reward yourself, tap the @global.parent_points to celebrate your success!", + "text": "Ngaso sonke isikhathi uma uphumula, bona okuthile okwenze kahle noma uzivuze, chofa i-@global.parent_points ukuze ujabulele impumelelo yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "CHOOSE", - "text": "Khetha", + "SourceText": "Why @data.workshop.w_self_care.short_title?", + "text": "Kungani @data.workshop.w_self_care.short_title?", "type": "template", - "note": "" + "note": "The string @data.workshop.w_self_care.short_title should not be translated." }, { - "SourceText": "Making the right choices that keep everyone healthy and safe can be hard. Especially in these times! You can help your teen make good decisions.", - "text": "Kungabanzima ukuthatha izinqumo ezifanele ezigcina wonke umuntu ephilile futhi ephephile. Ikakhulukazi kulezizikhati. Ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle.", + "SourceText": "We often don’t look after ourselves enough. But this is so important, especially as a parent! \n\nReducing our stress and treating ourselves well helps us AND our teenagers.", + "text": "Kuvamile ukuthi singazinakekeli ngokwanele. Kodwa kubalulekile ukuzinakekela, ikakhulu njengabazali! \n\nUkuhlisa ingcindezi nokuzitotosa kusiza thina KANYE nabantwana bethu.", "type": "template", "note": "" }, { - "SourceText": "CHILL", - "text": "Phumula", + "SourceText": "Greetings, everyone. \n\nToday's topic is self-care. \n\nThere are times where we experience challenging times, where we face problems and do not know what to do. It is important to take care of ourselves to learn the techniques of how we can keep ourselves calm in case problems, challenges or issues come up. \n\nWhen we are calm we are in a good state to think positively and come up with positive solutions to any challenges we may be facing.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuzinakekela. \n\nKunezikhathi lapho sibhekana nezikhathi ezinzima, lapho sibhekana khona nezinkinga singazi ukuthi kumelwe senzeni. Kubalulekile ukuzinakekela ukufunda izindlela zokuthi sihlale sehlise umoya uma kwenzeka kuvela inkinga, inselelo noma isimo esithile. \n\nUma sehlise umoya sisuke sisesimweni esihle sokucabanga kahle nokuza nesixazululo esihle sokubhekana nanoma iyiphi inkinga.", "type": "template", "note": "" }, { - "SourceText": "We all feel stressed sometimes. Take a deep breath or do something fun together. It can make a big difference to make your home happy and peaceful! Here are some ideas you can try:", - "text": "Ngesinye isikhathi siba nengcindezi. Donsa umphefumulo kakhulu noma nenze into ejabulisayo ndawonye. Kungenza omkhulu umehluko lokhu ekwenzeni ikhaya lakho libe nentokozo nokuthula. Nanka amacebo ongawazama:", + "SourceText": "Remember – this week is about YOU! We hope you are treating yourself well. You deserve this!", + "text": "Khumbula - leli sonto limayelana NAWE! Sithemba ukuthi uziphethe kahle. Kukufanele lokhu!", "type": "template", "note": "" }, { - "SourceText": "Negative thoughts make us say and do negative things. Try changing what you think and say from negative to positive!", - "text": "Imicabango emibi isenza sisho izinto ezimbi. Zama ukushintsha lokhu okubi okucabangayo ukwenze kube umcabango omuhle!", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You will see the good results!", + "text": "Qala umhlangano wokufundisana @global.parent_app omusha kusasa. Uzobona imiphumela emihle!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "A teen sometimes does something because they:", - "text": "Kwesinye isikhathi umntwana wenza okuthile ngoba:", + "SourceText": "Have you told your @global.parent_app partners about the app yet? From tomorrow, you can start doing your @global.parent_app workshops together!", + "text": "Ingabe usubatshelile obambisene nabo @global.parent_app nge-app? Kusukela kusasa, ningaqala nenze umhlangano wokufundisana @global.parent_app wenu ndawonye!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" }, { - "SourceText": "- Listen to their friends\n- Want to do what others do\n- Think more about ‘now’ than ‘later’\n- Love impulses and can find being careful boring\n- Do not worry about risk – may even like risks\n- Have limited experience to rely on\n- Are willing to try something – no matter what happens", - "text": "-Balalela abangani babo\n- Bafuna ukwenza okwenziwa abanye\n-Bacabangela 'imanje' kune 'nekusasa'\n-Bathanda ukuxhamazela futhi bengazi thola bebhoreka ukuqaphela\n-Abakhathazeki ngokuba sengcupheni- futhi bangakuthanda ukuba sengcupheni\n-Banolwazi olulinganiselwe abathembele kulo\n-Bazimisele ukuzama into entsha- noma kungenzakalani", + "SourceText": "Paying attention to what we do well helps us to focus on the positive. \n\nLet’s take a moment to praise ourselves. We’ll show you how.", + "text": "Ukunaka esikwenzayo kuzosisiza sigxile ezintweni ezakhayo. \n\nAke sithathe umzuzwana sizincome. Sizonibonisa ukuthi ningakwenza kanjani lokhu.", "type": "template", "note": "" }, { - "SourceText": "It can help to keep this in mind when your teen makes a wrong decision. Talk to them and spend time together so you can help them choose better next time!", - "text": "Kungasiza ukugcina lokhu emqondweni uma umntwana wakho ethatha izinqumo ezingalungile. Khuluma naye futhi uchithe isikhathi naye khona uzokwazi ukumsiza ekutheni akhethe kangcono ngokuzayo!", + "SourceText": "Think of one thing YOU have done well recently.\n\nSay it aloud to each other: \"Well done to me for…\"\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Cabanga ngento eyodwa OYENZE kahle muva nje.\n\nTshela abanye: “Ngiyazincoma...”\n\nNakhu okukodwa ofanele ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Understanding how your teen feels and how you can support them makes a big difference for you both! Observe your teen and ask how they feel. Click on a face below to find out more:", - "text": "Ukuqonda ukuthi umntwana wakho uzizwa kanjani nanokuthi ungameseka kanjani kwenza omkhulu umehluko kunina nobabili. Mqaphele umntwana wakho futhi umbuze ukuthi uzizwa kanjani. Cofoza kulobubuso obungenzansi khona uzothola okwengeziwe:", + "SourceText": "Recognise", + "text": "Qaphela", "type": "template", "note": "" }, { - "SourceText": "Hopeful", - "text": "Ithemba", + "SourceText": "Take a moment to praise yourself. \n\nWe will now show you how.", + "text": "Thatha umzuzwana uzincome. \n\nNjengamanje sizokubonisa ukuthi ungakwenza kanjani.", "type": "template", "note": "" }, { - "SourceText": "Resilient", - "text": "Ukubekezela", + "SourceText": "Think of one thing YOU have done well recently.", + "text": "Cabanga ngento eyodwa OYENZE kahle muva nje.", "type": "template", "note": "" }, { - "SourceText": "Self-esteem", - "text": "Ukuzethemba", + "SourceText": "\"Well done to me for...\"", + "text": "“Ngiyazincoma ngoku...”", "type": "template", "note": "" }, { - "SourceText": "Teens have goals and dreams for the future – near and far!", - "text": "Intsha inezinhloso namaphupho ngekusasa- eliseduze nelikude!", + "SourceText": "Showing love to my children", + "text": "Ngokubonisa izingane zami uthando", "type": "template", "note": "" }, { - "SourceText": "Ask your teen about their goals and dreams, encourage them to think what they want for their future, and make a plan together to work towards realising them.", - "text": "Buza umntwana wakho ngezinhloso nangamaphupho akhe, mkhuthaze ekutheni acabange akufunayo ngekusasa lakhe bese nenza uhlelo ndawonye lokusebenze ekufezeni lezozinhlelo namaphupho.", + "SourceText": "Getting up even though I felt tired", + "text": "Ngokuvuka ngisho noma bengi zizwa ngikhathele", "type": "template", "note": "" }, { - "SourceText": "Resilient teens can handle difficult situations, adapt to changes, and solve problems when they come up.", - "text": "Umntwana oqinile angamelana nezimo ezinzima, ahambisane nezinguquko futhi axazulule nezinkinga eziqhamukayo.", + "SourceText": "Smiling at someone", + "text": "Ngokumamatheka", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for overcoming difficulty and support them where you can.", - "text": "Mncome umntwana wakho uma enqobe ubunzima futhi umeseke lapho ungakwazi khona.", + "SourceText": "Making food to stay strong", + "text": "Ngokwenza ukudla ukuze sihlale sinamandla", "type": "template", "note": "" }, { - "SourceText": "A teen’s self-esteem is how they think of themselves.", - "text": "Ukuzethemba komntwana indlela abazicabanga ngayo.", + "SourceText": "Spending time with my children", + "text": "Ngokuchitha isikhathi nezingane zami", "type": "template", "note": "" }, { - "SourceText": "Encourage a positive self-image, set an example not to make fun of or criticise yourself all the time. Know your teen’s strengths and support their weaknesses.", - "text": "Khuthaza isithombe esihle, iba isibonelo ekutheni ungazigconi futhi ungazigxeki ngasosonke isikhathi. Wazi amandla omntwana wakho futhi ubeseke ubuthakathaka babo.", + "SourceText": "Helping my children with schoolwork", + "text": "Ngokusiza izingane zami ngomsebenzi wazo wesikole", "type": "template", "note": "" }, { - "SourceText": "Lonely", - "text": "Isizungu", + "SourceText": "Say it aloud if you can.\n\nHere is one thing you deserve praise for: Well done for using @global.parent_app!", + "text": "Kusho ngezwi elizwakalayo uma ungakwazi.\n\nNakhu okukodwa okufanelekayo ukunconywa ngakho: Wenze kahle ngokusebenzisa i @global.parent_app!", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Anxious", - "text": "Ukukhathazeka", + "SourceText": "Things to praise yourself for:", + "text": "Izinto ongazincoma ngazo:", "type": "template", "note": "" }, { - "SourceText": "Teens can feel alone, even when they are with others. They may feel like they don’t have anyone to talk to, trust, or share with.", - "text": "Abantwana bangaba nomzwangedwa noma behleli nabanye. Bangazizwa ngathi abanaye umuntu abangakhuluma naye, abangamethemba noma abangabelana naye.", + "SourceText": "* Showing love to your children \n* Getting up even though you felt tired \n* Smiling at someone \n* Making food to stay strong \n* Spending time with your children \n* Helping your children with schoolwork", + "text": "* Ngokubonisa izingane zakho uthando \n* Ngokuvuka ngisho noma uzizwa ukhathele \n* Ngokumamatheka uma ubona umuntu \n* Ngokwenza ukudla ukuze nihlale ninamandla \n* Ngokuchitha isikhathi nezingane zakho \n* Ngokusiza izingane zakho ngomsebenzi wazo wesikole", "type": "template", "note": "" }, { - "SourceText": "Ask how your teen is doing and try to find new fun ways together to interact with their friends and family – especially during lockdown.", - "text": "Umbuze umntwana wakho ukuthi uzizwa kanjani futhi uzame ukuthola izindlela ezintsha ezijabulisayo zokusebenzisana noma zokuxhumana nabangani nomdeni, ikakhulukazi ngesikhathi sokuvalwa kwezwe.", + "SourceText": "Let's try it out and do a short relaxation activity together!", + "text": "Ake sikuzame futhi senze umsebenzi omfushane wokuphumula ndawonye!", "type": "template", "note": "" }, { - "SourceText": "Anxiety is a normal emotion and it can help us deal with challenging situations. But too much anxiety or worry that prevents teens from doing things they love is a problem.", - "text": "Ukukhathazeka kuwumuzwa ojwayelekile futhi kungasisiza sibhekane nezimo ezinzima. Kodwa ukukhathazeka kakhulu okuvimba umntwana ekutheni enze izinto azithandayo kuyinkinga.", + "SourceText": "As parents, we often don’t have time to look after ourselves - but this is so important to do! Reducing our stress helps us AND our teens. \n\nLet’s take a first step and do a short relaxation activity together.", + "text": "Njengabazali, ngokuvamile asinaso isikhathi sokuzinakekela - kodwa lokhu kubalulekile! Ukwehlisa ingcindezi kuthina kusiza thina KANYE nabantwana bethu. \n\nAke sithathe isinyathelo sokuqala bese senza umsebenzi omfushane wokuphumula ndawonye.", "type": "template", "note": "" }, { - "SourceText": "Help your teen identify what makes them anxious and make a plan together how they can respond to anxious thoughts.", - "text": "Siza umntwana ukuthi aqaphele ukuthi yini emkhathazayo bese nenza uhlelo ndawonye lokuthi angamelana kanjani nemizwa yokukhathazeka.", + "SourceText": "Well done! Try to do this every day.", + "text": "Wenze kahle! Zama ukukwenza lokhu nsuku zonke.", "type": "template", "note": "" }, { - "SourceText": "Doing a relaxation activity together can help!", - "text": "Ukwenza umsebenzi ophumuzayo ndawonye kungasiza!", + "SourceText": "Have a hot drink", + "text": "Thola isiphuzo esishisayo", "type": "template", "note": "" }, { - "SourceText": "Depressed", - "text": "Ukucindezeleka", + "SourceText": "Call a friend or relative", + "text": "Shayela ucingo umngane noma isihlobo", "type": "template", "note": "" }, { - "SourceText": "Self-harm", - "text": "Ukuzlimaza", + "SourceText": "Have a relaxing bath", + "text": "Thatha isikhathi sakho ugeze", "type": "template", "note": "" }, { - "SourceText": "Feeling sad or down, being in a bad mood, are all normal human emotions. Depression is when it carries on for a long time and your teen’s normal daily activities are affected. Your teen may feel hopeless and unable or unmotivated to change anything.", - "text": "Ukudabuka noma ukuzizwa unomoya ophansi, noma usesimweni esibi emphefumulweni, yonke lemizwa ijwayelekile empilweni yomuntu. Uma le mizwa iqhubeka isikhathi eside yilapho ke ingcindezi iba khona futhi nezenzo zejwayelo zomntwana ziya thikamezeka. Umntwana wakho angazizwa engenathemba futhi enganalo gqozu lokushintsha izintonto.", + "SourceText": "Read", + "text": "Funda", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. Try to get professional help.", - "text": "Ukutshela umntwana wakho ukuthi 'yekela' ngungenza izinto zibe zimbi kakhulu kunakuqala. Kungcono umlalele, ukhombise ngomoya ophansi ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Zama ukuthola usizo lochwepheshe.", + "SourceText": "Watch TV", + "text": "Buka i-TV", "type": "template", "note": "" }, { - "SourceText": "Sometimes teens can hurt themselves on purpose to deal with negative emotions like anger, guilt, emptiness, or self-hate. This can be caused by anxiety or depression.", - "text": "Kwesinye isikhathi abantwana bangazilimaza ngamabomu ukumelana nemizwa engemihle efana nokucasuka, ukuba necala, umuzwa wobuze, nokuzizonda. Lokhu kungabangwa ukwethuka nengcindezi.", + "SourceText": "Taking care of ourselves is an important parenting skill. Share with each other:\n\nWhat small things make you happy?", + "text": "Ukuzinakekela kuyikhono elibalulekile lokuba umzali. Khulumisanani:\n\nYiziphi izinto ezincane ezikujabulisayo?", "type": "template", "note": "" }, { - "SourceText": "Telling your teen to ‘just stop’ may make things worse. Rather listen to them, calmly show you understand, and build their confidence. If your teen is willing to explain how hurting themselves makes them feel better, you can start to understand the reasons. Try to get professional help.", - "text": "Ukutshela umntwana wakho ukuthi 'ima' kungenza izinto zibe zimbi kakhulu. Kungcono umlalele ngomoya ophansi ukutshengisa ukuthi uyaqonda futhi wakhe ukuzethemba kwakhe. Uma umntwana wakho efuna ukukuchazela ukuthi ukuzilimaza kumsiza kanjani ekutheni azizwe kangcono, ungaqala ngokuqonda izizathu. Zama ukuthola usizo lochwepheshe.", + "SourceText": "Try to do something to reward yourself every day.\n\nYou can use these skills at home and find them anytime in your @global.parent_centre!", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke.\n\nUngawasebenzisa ekhaya la makhono futhi uwathole noma nini ku @global.parent_centre yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "What does that mean?", - "text": "Kuchaza ukuthini lokho?", + "SourceText": "Reward", + "text": "Umvuzo", "type": "template", "note": "" }, { - "SourceText": "How can you help?", - "text": "Ungasiza kanjani?", + "SourceText": "We all deserve to treat ourselves well!", + "text": "Sonke siyakufanelekela ukuzitotosa!", "type": "template", "note": "" }, { - "SourceText": "We all have negative thoughts sometimes.", - "text": "Sonke siyaba nayo imicabango emibi ngezinye izikhathi.", + "SourceText": "What small thing makes you happy?", + "text": "Iyiphi into encane ekujabulisayo?", "type": "template", "note": "" }, { - "SourceText": "\"I am a failure\"", - "text": "\"Ngiyisahluleki\"", + "SourceText": "Nice! Taking care of yourself is an important parenting skill!", + "text": "Kuhle! Ukuzinakekela kuyikhono elibalulekile lokuba umzali!", "type": "template", "note": "" }, { - "SourceText": "What to do?", - "text": "Kufanele ngenzeni?", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_1 or anything else that you enjoy.", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_1 noma ngabe yini oyijabulelayo.", "type": "template", - "note": "" + "note": "The string @local.name_1 should not be translated." }, { - "SourceText": "Examples", - "text": "Izibonelo", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_2 or anything else that you enjoy.", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_2 noma ngabe yini oyijabulelayo.", "type": "template", - "note": "" + "note": "The string @local.name_2 should not be translated." }, { - "SourceText": "Telling yourself or your teen to stop or to say the positive opposite often does not help.", - "text": "Ukuzitshela noma ukutshela mntwana wakho ukuthi imani noma usho into enhle futhi ehlukile kwesinye isikhathi akusebenzi.", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_3 or anything else that you enjoy.", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_3 noma ngabe yini oyijabulelayo.", "type": "template", - "note": "" + "note": "The string @local.name_3 should not be translated." }, { - "SourceText": "\"I do everything perfectly\"", - "text": "\"Konke ngikwenza kahle kakhulu\"", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_4 or anything else that you enjoy.", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_4 noma ngabe yini oyijabulelayo.", "type": "template", - "note": "" + "note": "The string @local.name_4 should not be translated." }, { - "SourceText": "Instead, you can ask:", - "text": "Kunalokho, ungabuza/ungacela", + "SourceText": "Try to do something to reward yourself every day. This could be to @local.name_5 or anything else that you enjoy.", + "text": "Zama ukuzenzela okuthile kokuzivuza nsuku zonke. Kungaba @local.name_5 noma ngabe yini oyijabulelayo.", "type": "template", - "note": "" + "note": "The string @local.name_5 should not be translated." }, { - "SourceText": "- Is the thought realistic? What are other explanations? \n- What happens if I continue to believe this thought?\n - What would I tell a friend if he/she had this thought?", - "text": "- Ingabe lomcabango ungowoqobo? Eziphi ezinye izincazelo?\n- Kwenzakalani uma ngiqhubeka ukukholelwa kulomcabango?\n- Ngingathini kumngani uma enalomcabango?", + "SourceText": "Things you can do to reward yourself:", + "text": "Izinto ongazenza ukuba uzivuze:", "type": "template", "note": "" }, { - "SourceText": "\"This is hard, but you are trying your best, and we will work together to find a solution\"", - "text": "Kunzima, kodwa uzama ngakho konke okusemandleni futhi sizobambisana ekutholeni isixazululo\"", + "SourceText": "* Have a hot drink \n* Call a friend or relative \n* Have a relaxing bath \n* Read \n* Watch TV", + "text": "* Thola isiphuzo esishisayo \n* Shayela ucingo umngane noma isihlobo \n* Thatha isikhathi sakho ugeze \n* Funda \n* Bukela i-TV", "type": "template", "note": "" }, { - "SourceText": "\"It’s your fault\"", - "text": "\"Iphutha lakho\"", + "SourceText": "Today you will experience 3 activities that can help you care for yourself, and we will ask you a few\nquestions to ensure the app is exactly right for you.", + "text": "Namuhla sizokwenza imisebenzi engu-3 ezosisiza sizinakekele, futhi sizokubuza\nimibuzo embalwa ukuze siqiniseka ukuthi le-app ikulungele.", "type": "template", "note": "" }, { - "SourceText": "\"Let’s come up with a solution together\"", - "text": "\"Masiqhamuke nesisombululo ngokubambisana\"", + "SourceText": "* Relax activity\n* Recognise activity\n* Reward activity\n* Tools: How to add self-care\n* Customise the app\n* Home practice suggestions", + "text": "* Umsebenzi wokuphumula\n* Umsebenzi wokuqaphela\n* Umsebenzi wokuvuza\n* Amathuluzi: Indlela yokunezela ukuzinakekela\n* Hlela i-app ngendlela oyithandayo\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "\"I lost my job\"", - "text": "\"Ngilahlekelwe umsebenzi\"", + "SourceText": "Customise your @global.parent_app", + "text": "Hlela i-@global.parent_app ngendlela oyithandayo", "type": "template", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "\"I learned a lot in my job – that will help me find another one\"", - "text": "\"Kuningi engikufundile emsebenzini wami - lokho kuzongisiza ekutholeni omunye\"", + "SourceText": "Now that we have built some self-care skills, let’s make sure your @global.weekly_workshops are exactly right for you.", + "text": "Manje njengoba sewakhe amakhono okuzinakekela, ake siqiniseke ukuthi @global.weekly_workshops ikulungele ngempela yini", "type": "template", - "note": "" + "note": "The string @global.weekly_workshops should not be translated." }, { - "SourceText": "\"Nobody likes me\"", - "text": "\"Akekho umuntu ongithandayo\"", + "SourceText": "You seem to have completed the customisation process already. You can now skip this activity.", + "text": "Kubonakala sengathi usuqedile kakade ukuhlela. Ungaweqa manje lo msebenzi.", "type": "template", "note": "" }, { - "SourceText": "\"Last week I did have a great time with...\"", - "text": "Kulelisonto eledlule ngibe naso isikhathi esimunandi no...\"", + "SourceText": "RELAX", + "text": "PHUMULA", "type": "template", "note": "" }, { - "SourceText": "\"Bad things always happen to me\"", - "text": "\"Ngihlale ngehlelwa izinto ezimbi\"", + "SourceText": "Do a 30 second quick relaxation activity.", + "text": "Yenza umsebenzi wokuziphumuza osheshayo imizuzwana engu-30.", "type": "template", "note": "" }, { - "SourceText": "\"This good thing happened the other day...\"", - "text": "\"Lento enhle isike yenzekile ngelanga eledlule...\"", + "SourceText": "Relax activity", + "text": "Umsebenzi wokuphumula", "type": "template", "note": "" }, { - "SourceText": "Change", - "text": "Shintsha", + "SourceText": "RECOGNISE", + "text": "BONA", "type": "template", "note": "" }, { - "SourceText": "MAKE TIME", - "text": "Yenza isikhathi", + "SourceText": "Take a moment and think of one thing YOU have done recently that you have done well! Say it aloud if you can \"Well done for …\"", + "text": "Thatha isikhashana ucabange ngento eyodwa OYENZE kahle muva nje! Ngezwi elizwakalayo uma kungenzeka ithi “ngenze kahle u ...” ", "type": "template", "note": "" }, { - "SourceText": "Set aside time to have a conversation without distractions.", - "text": "Beka isikhathi sokuxoxisana ngaphandle kokuphazamiseka.", + "SourceText": "Recognise activity", + "text": "Umsebenzi wokubona", "type": "template", "note": "" }, { - "SourceText": "LISTEN", - "text": "LALELA", + "SourceText": "REWARD", + "text": "UMVUZO", "type": "template", "note": "" }, { - "SourceText": "Ask your teen questions and let them share their views without interrupting.", - "text": "Buza umntwana wakho imibuzo bese uyamvumela ukuthi aveze imibino yakhe ngaphandle kokumuphazamisa.", + "SourceText": "Remember you deserve your quality time too! What makes you happy?", + "text": "Khumbula ukuthi nawe udinga ukuba nesikhathi sakho! Yini ekwenza ujabule?", "type": "template", "note": "" }, { - "SourceText": "WORK TOGETHER", - "text": "Sebenzisanani", + "SourceText": "Reward activity", + "text": "Umsebenzi wokuvuza", "type": "template", "note": "" }, { - "SourceText": "Discuss a specific problem, come up with solutions together, and both do what you agree.", - "text": "Xoxisanani ngenkinga ethize, niqhamuke nezisombululo ndawonye bese nenza lokho enivumelane ngakho.", + "SourceText": "Welcome! It’s great to have you here. This week is about YOU. \n\nIn this welcome workshop you will: \n* Get tools to care for yourself \n* Customise the app for your needs", + "text": "Siyakwamukela! Siyajabula ukuba nawe lapha. Leli sonto limayelana NAWE. \n\nKulokhu kuqeqeshwa kokukwamukela: \n* Uzothola amathuluzi okuzinakekela \n* Uhlele ne-app ngokwezidingo zakho", "type": "template", "note": "" }, { - "SourceText": "Thank your teen for sharing and highlight how it is helping you both.", - "text": "Mbonge umntwana wakho ngokwabelana ngemibono bese uyakugqamisa ukuthi kunisiza nobabili.", + "SourceText": "Wonderful, I am so happy things are going well.", + "text": "Kuhle kakhulu, ngiyajabula ukuthi izinto zikuhambela kahle.", "type": "template", "note": "" }, { - "SourceText": "1. Take a deep breath.\n2. See if the news makes sense.\n3. Ask where they got the news.\n4. Double-check with other people/sources you trust.\n5. Think if this news would help or only scare people if you share it.", - "text": "1. Donsa umphefumulo kakhulu..\n2. Bona ukthi ngabe izindaba zinomqondo.\n3. Buza ukuthi uzitholephi lezozindaba.\n4. Qinisekisa nabanye abantu/nemithombo oyethembayo.\n5. Cabanga ukuba lezizindaba zizosiza noma zizosabisa abantu uma uzixoxa.", + "SourceText": "Sorry that things are difficult now. It is completely normal to struggle sometimes. Remember that you are not alone!", + "text": "Uxolo ngokuthi isimo sinzima njengamanje. Kuvamile ukubhekana nobunzima ngezinye izikhathi. Khumbula ukuthi awuwedwa!", "type": "template", "note": "" }, { - "SourceText": "We all sometimes want to tell our teens \"You must do this, or else… trouble!\", but it often does not make them follow rules better. \n\nInstead, you can help your teen make good choices by showing you trust them and speaking with them:", - "text": "Ngesinye isikhathi, sonke sifuna ukutshela abantwana bethu ukuthi \"Kumele wenze lokhu, ngale kwalokho... kuzoba nenkinga!\" Kodwa lokhu akwenzi ukuthi bayilandele kangcono imithetho. \n\nKunalokho, ungamsiza umntwana wakho ekutheni enze izinqumo ezinhle ngoku mtshengisa ukuthi uyamethemba nokukhuluma naye futhi:", + "SourceText": "Teach your teenagers the four steps of problem-solving:\nKNOW IT - SOLVE IT - TRY IT - TEST IT \n\nUse these steps together when a problem comes up!\n\nWhen something bad happens, we often get upset and blame. But what our teens really need is someone to help find solutions together. Listen to them, accept how they see and feel things, and thank them for trusting you.\n\nTeaching your teen how to deal with problems will help them for the rest of their lives. What a gift!", + "text": "Fundisa intsha yakho izinyathelo ezine zokuxazulula inkinga:\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE \n\nSebenzisani lezi zinyathelo ndawonye uma kuqubuka inkinga!\n\nUma kwenzeka okuthile okubi, ngokuvamile siphatheka kabi bese siyagxeka. Kodwa okudingwa abantwana bethu umuntu ongasiza kutholakale izixazululo ndawonye. Balalele, yamukela indlela ababona nabazizwa ngayo, futhi ubabonge ngokukuthemba.\n\nUkufundisa ingane yakho indlela yokuxazulula izinkinga kuzomsiza impilo yakhe yonke. Isipho esihle kangaka!", "type": "template", "note": "" }, { - "SourceText": "DISCUSS CONSEQUENCES", - "text": "Xoxisanani ngemiphumela", + "SourceText": "Some problems other parents solved with their teens:", + "text": "Ezinye izinkinga abanye abazali abazixazulula nabantwana babo:", "type": "template", "note": "" }, { - "SourceText": "Ask \"If you do this, what could happen?\"", - "text": "Buza ukthi \"Uma wenza lokhu, kuzokwenzakalani?\"", + "SourceText": "* My teenager does not want to go to school\n* I am worried my teenager will get pregnant or will get someone pregnant\n* I am worried about what my teen does online\n* My teenager is hanging out with bad friends\n* My teenager is lazy\n* My teenager is not doing their school work\n* My teenager might be using drugs", + "text": "* Ingane yami ayifuni ukuya esikoleni\n* Ngikhathazeke ngokuthi ingane yami ingakhulelwa noma ikhulelise \n* Ngikhathazwa yilokho ingane yami ekwenza ku-inthanethi \n* Ingane yami ichitha isikhathi nabangane ababi \n* Ingane yami iyavilapha \n* Ingane yami ayiwenzi umsebenzi wesikole \n* Kungenzeka ingane yami isebenzisa izidakamizwa", "type": "template", "note": "" }, { - "SourceText": "PRAISE", - "text": "Ncoma", + "SourceText": "resolve problems with their teens", + "text": "ukuxazulula izinkinga nentsha yabo", "type": "template", "note": "" }, { - "SourceText": "If something goes well, praise your teen!", - "text": "Uma okuthile kuhambe kahle, mncome umntwana wakho!", + "SourceText": "resolve the problem with your teen", + "text": "xazulula inkinga nengane yakho esebusheni bayo", "type": "template", "note": "" }, { - "SourceText": "REFLECT TOGETHER", - "text": "Cabangani nihlaziye ndawonye", + "SourceText": "I forgot the steps of problem solving.", + "text": "Ngizikhohliwe izinyathelo zokuxazulula inkinga.", "type": "template", "note": "" }, { - "SourceText": "If something goes wrong, ask \"How could you have done that differently?\"", - "text": "Uma kungahambanga kahle okuthile, buza ukuthi \"Eyiphi indlela obungenza kangcono ngayo?\"", + "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", + "text": "Kudingeka ukuzijwayeza ukusebenzisa zonke izinyathelo ezine zokuxazulula izinkinga. Ngokuzayo uma kuvela inkinga, bhekani izinyathelo ezine ndawonye nengane yakho esebusheni bayo- kuzokwenza umehluko omkhulu!", "type": "template", "note": "" }, { - "SourceText": "START SMALL", - "text": "QALA KANCANE", + "SourceText": "I started with the solutions right away.", + "text": "Ngivele ngaqala ngezixazululo.", "type": "template", "note": "" }, { - "SourceText": "Give your teen small responsibilities first. When that goes well, you can add more to show that you trust your teen.", - "text": "Nika umntwana wakho izibopho ezincane kuqala. Uma lokho kuhamba kahle, ungengeza ezinye ukutshengisa ukuthi uyamethemba.", + "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", + "text": "Lapho sinenkinga, sihlale sifuna umphumela osheshayo bese sikhohlwa izinyathelo okumelwe sizithathe. Ukuze sithole isixazululo esingcono ndawonye, kuyasiza ukuqale uqonde inkinga ngokuphelele kanye nezixazululo ezihlukahlukene.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to spend one-on-one time with your teen. We noticed you tapped the @data.habit.spend_time.in_text_title - great job for remembering!", - "text": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho. Siqaphele ukuthi uthinte i- @ data.habit.spend_time.in_text_title - wenze umsebenzi omuhle wokukhumbula!", - "type": "template", - "note": "The string @data.habit.spend_time.in_text_title should not be translated." - }, - { - "SourceText": "Your goal was to spend one-on-one time with your teen.", - "text": "Inhloso yakho bekuwukuchitha isikhathi esisodwa nengane yakho.", + "SourceText": "Four steps of problem solving", + "text": "Izinyathelo ezine zokuxazulula inkinga", "type": "template", "note": "" }, { - "SourceText": "Well done for exploring solutions to your challenges. Go try them out. Your relationship with your teen will get stronger and stronger!", - "text": "Wenze kahle ngokuhlola izisombululo zezinselele zakho. Hamba uyozizama. Ubuhlobo bakho nengane yakho esebusheni bayo buzoqina kakhulu!", + "SourceText": "We could not agree on a solution to try out and we got into an argument.", + "text": "Asikwazanga ukuvumelana ngesixazululo sokuzama saphela siphikisana.", "type": "template", "note": "" }, { - "SourceText": "DAY – Do it every day", - "text": "USUKU - Kwenze nsuku zonke", + "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", + "text": "Ngezinye izinkhathi kungase kube nzima ukuvumelana nawo wonke umuntu emndenini, ikakhulukazi lapho wonke umuntu engakazoli. Ungavuma ukuzama isixazululo esisodwa kuqala, bese kulandela esinye. Uma kwenzeka ubambeka, zamani ukuhlangana kamuva ukuze nivumelane ngesixazululo ndawonye.", "type": "template", "note": "" }, { - "SourceText": "PLAY – Let your teen choose the activity", - "text": "DLALA – Vumela ingane yakho ikhethe enizokwenza", + "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", + "text": "Ngathukuthela lapho kuvela inkinga futhi ngakhohlwa ukusebenzisa izinyathelo zokuxazulula inkinga.", "type": "template", "note": "" }, { - "SourceText": "STAY – Give your teen all of your attention", - "text": "HLALA - Nikeza ingane yakho konke ukunaka kwakho", + "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", + "text": "Ngesinye iskathi lapho kuvela inkinga sonke siyathukuthela noma sicindezeleke. Khumbula, lapho uzizwa uthukuthele noma ucindezelekile, ungathatha ikhefu ukuze likusize uhlale uzolile bese uxazulula inkinga obhekene nayo.", "type": "template", "note": "" }, { - "SourceText": "Why was this tip helpful for you?", - "text": "Kungani leli cebiso libe usizo kuwe?", + "SourceText": "My teen got angry and did not want to talk about the problem.", + "text": "Ingane yami esebusheni bayo iye yathukuthela futhi yenqaba ukukhuluma ngenkinga.", "type": "template", "note": "" }, { - "SourceText": "\"@local.choice_1\" was helpful because...", - "text": "\"@local.choice_1\" libe usizo ngoba...", + "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", + "text": "Kungenzeka ingane yakho esebusheni bayo isakhungathekile kakhulu ukuba ibhekane nenkinga ngokushesha. Qaphela futhi uyazi ngegama imizwa yengane yakho, bese wenza isikhathi kamuva osukwini noma phakathi nesonto ukuze nixoxe futhi nixazulule inkinga ndawonye. Ngokunika ingane yakho isikhathi, inkinga ingaxazululwa kahle.", "type": "template", - "note": "The string @local.choice_1 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_2\" was helpful because...", - "text": "\"@local.choice_2\" ibe usizo ngoba...", + "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", + "text": "Umgomo wakho bekuwukuzama ukuxazulula inkinga noma ukungqubuzana ndawonye nengane yakho esebusheni bayo.", "type": "template", - "note": "The string @local.choice_2 should not be translated." + "note": "" }, { - "SourceText": "\"@local.choice_3\" was helpful because...", - "text": "\"@local.choice_3\" ibe usizo ngoba...", + "SourceText": "Every family faces challenges, but when we work together we can deal with problems in an effective and peaceful way. \n\nWhat a great skill for your teen to learn too!", + "text": "Yonke imindeni iyabhekana nezinkinga, kodwa uma sisebenzisana singakwazi ukubhekana nezinkinga ngendlela ephumelelayo nenokuthula. \n\nLeli ikhono elihle ukuthi ingane yakho ingalifunda!", "type": "template", - "note": "The string @local.choice_3 should not be translated." + "note": "" }, { - "SourceText": "Having a specific time to do this helps me to remember.", - "text": "Ukuba nesikhathi esithile sokwenza lokhu kungisiza ukuthi ngikhumbule.", + "SourceText": "Greetings, everyone. \n\nToday's topic is problem solving. \n\nWe all know that in life there are times where we face problems, and we all know in a way that when we find ourselves in these situations, it is difficult to think of immediate positive solutions. \n\nTherefore, it is important that when we are facing problems we take a pause, we breathe, keep calm and think of problem-solving skills that we may use. \n\nRemember to include our teenagers when we are solving problems. This will help them to become responsible and learn how to solve their own problems in the future.", + "text": "Sanibonani, nonke. \n\nIsihloko sanamuhla sikhuluma ngokuxazulula inkinga. \n\nSonke siyazi ukuthi empilweni kunezikhathi lapho sibhekana khona nezinkinga, futhi sonke siyazi ukuthi uma sizithola sikulezi zimo, kuba nzima ukucabanga ngokushesha ngezixazululo ezinhle. \n\nNgakho-ke kubalulekile ukuthi uma sibhekane nezinkinga sime kancane, siphefumule, sizole bese sicabanga ngamakhono okuxazulula izinkinga esingawasebenzisa. \n\nKhumbula ukubandakanya izingane zethu uma sixazulula izinkinga. Lokhu kuzobasiza bazimele futhi bafunde ukuxazulula izinkinga zabo esikhathini esizayo.", "type": "template", "note": "" }, { - "SourceText": "With a routine, my teen and I can both keep our schedule free.", - "text": "Lapho kunenqubo elandelwayo, mina nengane yami siyakwazi ukuhlala sinesikhathi esivulekile.", + "SourceText": "Let’s go back to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 and see what solutions they came up with.", + "text": "Ake sibuyele ku@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 wakhe bese sibona ukuthi iziphi izixazululo abaqhamuke nazo.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Spending time with my teen every day helps to build trust with them/him/her.", - "text": "Ukuchitha isikhathi nengane yami nsuku zonke kuyasiza ekwakheni ukwethembana nabo / yona.", + "SourceText": "@global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 came up with three solutions.", + "text": "@global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 uze nezixazululo ezintathu.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Ah yes, even 10 minutes together makes a big difference – that makes it easy to schedule it in, next to your work and chores!", - "text": "Ah yebo, ngisho nemizuzu eyi-shumi(10) ndawonye yenza umehluko omkhulu - okwenza kube lula ukuhlela ngaphakathi, eduze komsebenzi wakho nemisebenzi yasekhaya!", + "SourceText": "Parenting teens is really hard. \n\nOften there are no simple and easy solutions, but now @global.w_solve_female_caregiver_1 learned she can talk to her daughter about these things. \n\nBefore, she worried alone, now they can come up with solutions together!", + "text": "Ukukhulisa abantwana kunzima ngempela. \n\nNgokuvamile azikho izixazulula ezilula, kodwa manje @global.w_solve_female_caregiver_1 ufunde ukuthi angakwazi ukukhuluma nendodakazi yakhe ngalezi zinto. \n\nNgaphambili, ubekhathazeka yedwa, njengamanje beza nezixazululo bobabili!", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Letting my teen choose what to do builds their confidence.", - "text": "Ukuvumela ingane yami ukuba ikhethe ukuthi yenzeni kwakha ukuzethemba kwabo.", + "SourceText": "Have you tried the four steps of problem-solving with your teen yet? \n\nKNOW IT, SOLVE IT, TRY IT, TEST IT!", + "text": "Ingabe usuzizamile izinyathelo ezine zokuxazulula inkinga nengane yakho esebusheni bayo? \n\nYAZI, YIXAZULULA, YIZAME, IYIHLOLE!", "type": "template", "note": "" }, { - "SourceText": "If my teen chooses, s/he is more likely to want to spend time together.", - "text": "Uma ingane yami ikhetha, kungenzeka ukuthi ifune ukuchitha isikhathi ndawonye.", + "SourceText": "Your commitment is an inspiration to everyone. Keep calm and carry on!", + "text": "Ukuzibophezela kwakho kuyisikhuthazo kuwo wonke umuntu. Qhubeka uzolile bese uyaqhubeka!", "type": "template", "note": "" }, { - "SourceText": "Letting my teen choose shows that I care about his/her interests.", - "text": "Ukuvumela ingane yami ukuba ikhethe kukhombisa ukuthi ngiyazikhathalela izintshisekelo zayo.", + "SourceText": "You are on the right track to start solving problems together with your teen! \n\nComplete the @local.workshop_data.in_text_title and gain another important parenting skill!", + "text": "Usendleleni efanele yokuqala ukuxazulula izinkinga ndawonye nengane yakho esebusheni bayo! \n\nQedela i-@local.workshop_data.in_text_title bese uthola elinye ikhono elibalulekile lokuba umzali!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "By accepting my teen’s suggestions, I show that I listen to him/her.", - "text": "Ngokwamukela iziphakamiso zentsha yami, ngikhombisa ukuthi ngiyamlalela.", + "SourceText": "With teenagers, and in life, unexpected problems come up and we have to deal with them. \n\nStart the next workshop to learn how to successfully address these problems.", + "text": "Nentsha, futhi ekuphileni, kuvela izinkinga ezingalindelekile futhi kufanele sibhekane nazo.\n\nQala umhlangano wokufundisana olandelayo ngokufunda indlela yokubhekana ngokuphumelelayo nalezi zinkinga.", "type": "template", "note": "" }, { - "SourceText": "Saying something nice about my teen’s choice helps them feel valued.", - "text": "Ukusho okuthile okuhle ngokukhetha kwengane yami kuyabasiza bazizwe bebalulekile.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nTry to complete the @local.workshop_data.in_text_title before starting the new workshop. Knowing how to solve problems together will help in many situations!", + "text": "Kusasa kukhona omusha @global.parent_app umhlangano wokufundisana okulindele. \n\nZama ukuqeda i-@local.workshop_data.in_text_title ngaphambi kokuba uqale umhlangano wokufundisana omusha. Ukwazi indlela yokuxazulula izinkinga ndawonye kuzosiza ezimweni eziningi!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "So true! And if our teens choose, they are encouraged to also take responsibility in other areas of their lives.", - "text": "Kuyiqiniso! Futhi uma intsha yethu ikhetha, bayakhuthazwa ukuthi nabo babhekane neminye imikhakha yezimpilo zabo.", + "SourceText": "Great that you completed the @local.workshop_data.in_text_title. Tomorrow, a new workshop is unlocked to help you keep your teen safe.", + "text": "Kuhle ukuthi uqedile i-@local.workshop_data.in_text_title. Kusasa, \numhlangano wokufundisana omusha uzovulwa ukuze ukusize ugcine ingane yakho esebusheni bayo iphephile.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "By preventing interruptions, I show my teen that s/he is most important.", - "text": "Ngokuvimbela ukuphazamiseka, ngikhombisa ingane yami ukuthi ibaluleke kakhulu.", + "SourceText": "Let’s look at what happened to @global.w_solve_teen_girl and her @global.w_solve_female_caregiver_1 when @global.w_solve_teen_girl got a phone from a boy… a phone!", + "text": "Ake sibheke okwenzeke ku @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 ngesikhathi @global.w_solve_teen_girl athole ucingo okuvela kumfana.... ucingo!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Even if I can’t join my teen’s activity, like sports, I can still cheer them on.", - "text": "Noma ngingenakukwazi ukujoyina okwenziwa yintsha yami, njengemidlalo, ngisengabakhuthaza.", + "SourceText": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, where did you get that thing?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 bought it for me. It’s a nice phone, @global.w_solve_female_caregiver_1. It takes great photos!\"", + "text": "@global.w_solve_female_caregiver_1: “@global.w_solve_teen_girl, uyithole kuphi leyo nto?” \n\n@global.w_solve_teen_girl: “@global.w_solve_teen_boy_1 uyitholele mina. Umakhalekhukhwini omuhle, @global.w_solve_female_caregiver_1 . Ithatha izithombe ezinhle!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_teen_girl\n@global.w_solve_teen_boy_1\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "When I pay attention, I can learn so much about my teen’s interests, views and abilities.", - "text": "Lapho nginakisisa, kuningi engingakufunda ngalokho okuthandwa yingane yami, imibono kanye namakhono ayo.", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to see that expensive thing! That boy is no good! How does he think you are going to repay him for this?!” \n\n@global.w_solve_teen_girl: “That’s not how it works, @global.w_solve_female_caregiver_1! That’s not fair!”", + "text": "@global.w_solve_female_caregiver_1: “Angifuni ukuyibona leyo nto ebizayo! Lo mfana akalungile! Ucabanga ukuthi uzomkhokhela ngani ngalokhu?!”\n\n@global.w_solve_teen_girl: “Akuyona indlela okusebenza ngayo lokho, @global.w_solve_female_caregiver_1! Akubona ubulungiswa lobo!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1" }, { - "SourceText": "Yes! If we give our teens our full attention, they will more likely do the same for us the next time we ask them for something!", - "text": "Yebo! Uma izingane zethu sizinikeza isikhathi sethu sonke, cishe ziyokwenza okufanayo kuthina esikhathini esizayo lapho sicela okuthile kuzo!", + "SourceText": "@global.w_solve_female_caregiver_1: “I don’t want to hear it!” \n\n@global.w_solve_teen_girl: “You’re not even trying to listen to me! I don’t know why I even try with you!”", + "text": "@global.w_solve_female_caregiver_1: “Angifuni ukukuzwa lokho!” \n\n@global.w_solve_teen_girl: “Awuzami ngisho nokungilalela! Angazi nokuthi kungani ngikuzama nawe!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_1\n@global.w_solve_teen_girl" }, { - "SourceText": "Many parents experience challenges in having one-on-one time with their teens. \n\nHere are the top 8 challenges parents told us they experience when planning or spending one-on-one time with their teen. If you experienced one of these or are afraid that you will, tap it to get a possible solution. You can tap and explore other challenges afterwards.", - "text": "Abazali abaningi babhekana nezinselele zokuchitha isikhathi nezingane zabo ebusheni bazo.\n\nNazi izinselelo eziphezulu kakhulu eziyisishiyagalombili 8 abazali abasitshele zona ababhekana nazo lapho behlela noma bechitha isikhathi esisodwa nentsha yabo. Uma uhlangabezane nokukodwa kwalokhu noma wesaba ukuthi uzokuthinta, thepha ukuze uthole isixazululo esingaba khona. Ungathinta uphinde uhlole ezinye izinselelo ngemuva kwalokho.", + "SourceText": "Let’s see how problem solving works in practice.", + "text": "Ake sibone ukuthi ukuxazulula inkinga kusebenza kanjani ngokuprakthiza.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when trying to spend time with your teen?", - "text": "Ngabe unezinselelo ezithile ngenkathi uzama ukuchitha isikhathi nengane yakho?", + "SourceText": "@global.w_solve_female_caregiver_2 is coming home from work. \n\n@global.w_solve_female_caregiver_2 (thinking): \"Ay my poor feet! I need to sit down a moment and drink a cup of coffee before I start preparing food for everyone.\"", + "text": "@global.w_solve_female_caregiver_2 ubuya ekhaya evela emsebenzini. \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Awu izinyawo zami bandla! Ngidinga ukuhlala phansi isikhashana ngiphuze ikhofi ngaphambi kokuthi ngilungisele wonke umuntu ukudla.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "What challenge did you have when trying to spend time with your teen?", - "text": "Iyiphi inselele obenayo lapho uzama ukuchitha isikhathi nengane yakho?", + "SourceText": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! What are you doing? That bread is for dinner! Now there won’t be enough for us all!\"", + "text": "@global.w_solve_female_caregiver_2: \"@global.w_solve_teen_boy_2! Wenzani? Lesi sinkwa sizodliwa kusihlwa! Manje angeke sisasenela sonke!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "I don’t have enough time.", - "text": "Anginaso isikhathi esanele.", + "SourceText": "@global.w_solve_teen_boy_2: “Sorry, @global.w_solve_female_caregiver_2, I was just hungry. I can explain, you see, there is this guy at school...” \n\n@global.w_solve_female_caregiver_2 (thinking): “Take a Pause… just breathe…”", + "text": "@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2, bengilambile. Ngingachaza, uyabona, kunalo mfana esikoleni....” \n\n@global.w_solve_female_caregiver_2 (uyacabanga): “Thatha Ikhefu... phefumula...”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "My teen does not want to spend time with me.", - "text": "Ingane yams esebusheni bayo ayifuni ukuchitha isikhathi nami.", + "SourceText": "@global.w_solve_female_caregiver_2: “Just give me a moment. I am tired and now worried about having enough food for dinner.” \n\n@global.w_solve_teen_boy_2: “I am sorry, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Ngiphe umzuzwana. Ngikhathele futhi manje sengikhathazekile ngokuthi ukudla kwakusihlwa angeke kusenele.” \n\n@global.w_solve_teen_boy_2: “Ngiyaxolisa, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "My teen only wants to watch TV or play on his/her phone.", - "text": "Ingane yami esebusheni bayo ifuna nje ukubukela umabonakude (i-TV) noma ukudlala ngomakhalekhukhwini wayo.", + "SourceText": "Step 1: KNOW IT", + "text": "Isinyathelo 1: YAZI", "type": "template", "note": "" }, { - "SourceText": "My teen wants to do things that are not safe or that cost money.", - "text": "Ingane yami esebusheni bayo ifuna ukwenza izinto ezingaphephile noma ezidinga imali.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Now tell me, why are you so hungry? Did you not eat your lunch at school?” \n\n@global.w_solve_teen_boy_2: \"That is the problem. There’s a guy at school who bullies me. He says if I do not give my lunch to him every day, he and his friends will hurt me. He makes me so mad!\"", + "text": "@global.w_solve_female_caregiver_2: “Ake ungitshele, kungani ulambe kangaka? Ingabe awuwudlanga umphako wakho esikolweni?” \n\n@global.w_solve_teen_boy_2: “Ileyo inkinga. Kukhona umfana esikoleni ongiqhwagayo. Uthi uma ngingamniki umphako wami nsuku zonke, yena nabangane bakhe bazongilimaza. Uyangicasula!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "My teen wants to do things that I cannot physically do.", - "text": "Ingane yami esebusheni bayo ifuna ukwenza izinto engihluleka ukuzenza mina ngokomzimba.", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that but am glad that you told me, @global.w_solve_teen_boy_2. It doesn’t mean that you can eat everybody’s dinner. After we speak, you need to go to the shop to buy some more bread. But first: What do you think we should do about the bully problem?\"\n\n@global.w_solve_teen_boy_2: \"Well… I want to just hit him or get him back.\"", + "text": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ukuzwa lokho kodwa ngiyajabula ngokuthi ungitshele, @global.w_solve_teen_boy_2. Akusho ukuthi kumelwe udle ukudla kwawo wonke umuntu kwakusihlwa. Uma siqeda ukukhuluma, kumelwe uye esitolo uyothenga esinye isinkwa. Kodwa okokuqala: Ucabanga ukuthi kumelwe senzeni ngale nkinga yobuqhwagwa?”\n\n@global.w_solve_teen_boy_2: “Empeleni.... Ngifuna ukumshaya nje kwaphela noma ngiziphindiselele.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "My teen chose a competitive activity. I won and s/he got angry.", - "text": "Ingane yami ikhetha umsebenzi wokuncintisana. Ngawina yase yathukuthela.", + "SourceText": "Step 2: SOLVE IT", + "text": "Isinyathelo 2: IXAZULULE", "type": "template", "note": "" }, { - "SourceText": "I struggled to end the one-on-one time.", - "text": "Nginenkinga yokuqeda isikhathi esisodwa nengane yami.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Hmmm… what do you think will happen to you if you do that?\"\n\n@global.w_solve_teen_boy_2: \"I don’t know. He is bigger than me so he will probably hurt me more. And I could get into trouble at school and expelled.\"", + "text": "@global.w_solve_female_caregiver_2: “Hmmm... ucabanga ukuthi kuzokwenzakalani kuwe uma wenza kanjalo?”\n\n@global.w_solve_teen_boy_2: “Angazi. Mkhulu kakhulu kunami kungenzeka angilimaze kakhulu. Futhi kungenzeka ngingene enkingeni esikoleni bese ngixoshwa.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "All my children want one-on-one time with me at the same time.", - "text": "Zonke izingane zami zifuna ukuchitha isikhathi nami ngesikhathi esifanayo.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Yes, that could happen. What could we do instead?\"\n\n@global.w_solve_teen_boy_2: \"I guess I could tell the teacher. But then the other kids will call me a tattletale. Maybe you could talk to the teacher?\"", + "text": "@global.w_solve_female_caregiver_2: “Kunjalo, lokho kungenzeka. Yini esingayenza esikhundleni salokho?”\n\n@global.w_solve_teen_boy_2: “Ngicabanga ukuthi ngingatshela uthisha. Kodwa ezinye izingane zizongibiza ngesiyoyoyo. Mhlawumbe ungakhuluma nothisha?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Yes, it can be really hard to find time during the day, with work, chores, and everything else.", - "text": "Yebo, kuba nzima impela ukuthola isikhathi emini, ngenxa yomsebenzi, imisebenzi yasekhaya, nakho konke ke okunye.", + "SourceText": "@global.w_solve_female_caregiver_2: \"That sounds like a better idea. I could also have a word with his parents if you want me to.\"\n\n@global.w_solve_teen_boy_2: \"Sure. If you think that would help too. Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Kuzwakala kuyicebo elihle lelo. Ngingabuye ngikhulume nabazali bakhe uma ufuna ngenze kanjalo.”\n\n@global.w_solve_teen_boy_2: “Kulungile. Uma ucabanga ukuthi nalokho futhi kuzosiza. Ngiyabonga, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Sorry that you struggled with that. It can make us feel bad if our children do not want to spend one-on-one time with us.", - "text": "Siyaxolisa ngokuthi ukuthole kunzima lokho. Kungasenza sizizwe kabi uma izingane zethu zingafuni ukuchitha isikhathi nathi.", + "SourceText": "@global.w_solve_female_caregiver_2: \"Anything for you, my dear. I will do it first thing after dinner. And you know? If that doesn’t work, we can always try something else together.\"\n\n@global.w_solve_teen_boy_2: \"Thanks, @global.w_solve_female_caregiver_2\"", + "text": "@global.w_solve_female_caregiver_2: “Ngingakwenzela noma ngabe yini, sthandwa sami. Ngizokwenza kanjalo into yokuqala ngemva kwedina. Futhi, uyazi? Uma lokho kungasebenzi, singabuye sizame okunye sobabili.”\n\n@global.w_solve_teen_boy_2: Ngiyabonga, @global.w_solve_female_caregiver_2\"", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Think of a time when my teen is more open to me, like in the morning or right before bedtime.", - "text": "Cabanga ngesikhathi lapho ingane yami ikhululekile kumina njengasekuseni noma ngaphambi kokulala.", + "SourceText": "Step 3: TRY IT", + "text": "Isinyathelo 3: KUZAME", "type": "template", "note": "" }, { - "SourceText": "Sit next to my teen when they are doing something they enjoy and show interest in what they like.", - "text": "Hlala eduze kwengane yakho lapho benza okuthile abakuthandayo futhi ubakhombise intshisekelo kulokho abakuthandayo.", + "SourceText": "A week later… \n\n@global.w_solve_female_caregiver_2: \"How are things going at school now?\"\n\n@global.w_solve_teen_boy_2: \"It’s going better, the boy does not take my lunch anymore. But he is still being really mean to me.\"", + "text": "Ngemva kwesonto.... \n\n@global.w_solve_female_caregiver_2: “Zihamba kanjani izinto esikoleni njengamanje?”\n\n@global.w_solve_teen_boy_2: “Kuba ngcono, loya mfana akasangithatheli ukudla kwami. Kodwa usaqhubeka nokungiphatha ngonya.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Do something fun with the whole family.", - "text": "Yenza okuthile okumnandi nomndeni wakho wonke.", + "SourceText": "Step 4: TEST IT", + "text": "Isinyathelo 4: IHLOLE", "type": "template", "note": "" }, { - "SourceText": "Great! Picking a time when your teen is more talkative will help them to respond well to your attempt to connect.", - "text": "Kuhle! Ukukhetha isikhathi lapho khona ingane yakho ikhuluma kakhulu khona kuzoyisiza isabele kahle emizamweni yakho yokuxhumana nayo.", + "SourceText": "@global.w_solve_female_caregiver_2: \"I am sorry to hear that, @global.w_solve_teen_boy_2. Shall I ask your uncle to go talk to his parents? If that does not work, we will try something else!\"\n\n@global.w_solve_teen_boy_2: \"Yes, thank you @global.w_solve_female_caregiver_2. At least I know you are on my side.\"", + "text": "@global.w_solve_female_caregiver_2: “Ngiyaxolisa ngokuzwa lokho, @global.w_solve_teen_boy_2. Ngingakhuluma yini nomalume wakho ahambe ayokhuluma nabazali bakhe? Uma kungasebenzi lokho, sizozama okunye!”\n\n@global.w_solve_teen_boy_2: “Yebo, ngiyabonga @global.w_solve_female_caregiver_2. Okungenani ngiyazi ukuthi usohlangothini lwami.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2\n@global.w_solve_teen_boy_2\n@global.w_solve_female_caregiver_2" }, { - "SourceText": "Nice! Watching your teen’s favourite T.V. show or sports match together will show them that you care. Just be patient; they will open up to you over time!", - "text": "Kuhle! Ukubukela uhlelo lwe-Tv noma lwezemidlalo oluthandwa ingane yakho esebusheni bayo kuzoyibonisa ukuthi unendaba nayo. Yiba nesineke; izokhululeka ukubanawe ngokuhamba kwesikhathi!", + "SourceText": "Close your eyes, breathe in, and know that everything you have done is so important.", + "text": "Vala amehlo, phefumula, wazi ukuthi konke okwenzile kubalulekile.", "type": "template", "note": "" }, { - "SourceText": "Perfect! Sometimes it can be easier to start with spending time with the whole family. That way your teen can get more comfortable with spending one-on-one time with you over time.", - "text": "Kuhle kakhulu! Ngezinye izikhathi kungaba lula ukuqala ngokuchitha isikhathi nomndeni wonke. Ngaleyo ndlela ingane yakho eyevile eminyakeni eyishumi nambili izokwazi ukukhululeka lapho ichitha isikhathi nawe ngokuhamba kwesikhathi.", + "SourceText": "Ground @global.w_solve_teen_girl for a month", + "text": "Jezisa @global.w_solve_teen_girl inyanga", "type": "template", - "note": "" + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "Sorry that you had that challenge. Children often want to spend time watching T.V. or playing with a gadget. Well done for being patient with your teen!", - "text": "Siyaxolisa ngokuthi ube naleyo nselele. Ngokuvamile izingane zifuna ukucitha isikhathi zibukela umabonakude (i-Tv) noma zidlala ngemishini yezobuchwepheshe. Siyakuhalalisela ngokuba nesineke nengane yakho esebusheni bayo!", + "SourceText": "@global.w_solve_female_caregiver_1: “You can’t go out for the next month”", + "text": "@global.w_solve_female_caregiver_1: “Angeke uphume ngenyanga ezayo”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "Suggest fun things my teen and I could do together.", - "text": "Phakamisa izinto ezimnandi mina nengane yami esebusheni bayo esingazenza ndawonye.", + "SourceText": "That didn’t work... Let's try something else.", + "text": "Lokhu akusebenzanga... Ake sizama okunye.", "type": "template", "note": "" }, { - "SourceText": "Find something educational to do with my teen on the gadget.", - "text": "Thola okuthile okunemfudiso okokwenza nengane yami esebusheni bayo emshinini wezobuchwepheshe.", + "SourceText": "Return the phone and save up", + "text": "Buyisela ifoni wonge imali", "type": "template", "note": "" }, { - "SourceText": "Ask my teen to show me how their phone/gadget works.", - "text": "Cela ingane yami esebusheni bayo ukuthi ingibonise indlela umakhalekhukhwini/umshini wayo wezobuchwepheshe usebenza kanjani.", + "SourceText": "@global.w_solve_female_caregiver_1: \"I am not trying to accuse your friend or be jealous. I am worried that when someone gives a gift it is hard to say 'no' when they ask something in return – like sex. If you want to have a phone, we’ll save up together so you can make your own decisions without owing him anything.\"", + "text": "@global.w_solve_female_caregiver_1: “Angizami ukusola umngane wakho noma ukuba nomona. Ngikhathazwa ukuthi uma umuntu ekupha isipho kunzima ukuthi ‘cha’ uma becela ukuthi ubenzela okuthile njengembuyiselo - njengokuya nawe ocansini. Uma ufuna ukuba nefoni, sizokonga imali sobabili ukuze uzokwazi ukwenza isinqumo sakho ngaphandle kokumkweleta okuthile.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "That's perfect! If you need inspiration, here are some ideas from other families of what you could do together. Remember, let your teen choose.", - "text": "Kuhle lokho! Uma udinga isikhuthazo, nanka amacebiso athile avela kweminye imindeni alokho eningakwenza ndawonye. Khumbula, vumela ingane yakho esebusheni bayo ukuba ikhethe.", + "SourceText": "This is great! Try the third option as well.", + "text": "Kuhle lokhu! Zama indlela yesithathu futhi.", "type": "template", "note": "" }, { - "SourceText": "Wonderful!  There are lots of fun and educational apps on phones that you can explore together. Ask questions, show interest, and remember to say something nice.", - "text": "Kuhle kakhulu!  Kunama-apps amaningi amnandi nafundisayo komakhalekhukhwini eningawahlola ndawonye. Buza imibuzo, bonisa uthando bese ukhumbula ukusho into enhle.", + "SourceText": "Learn about safe sex", + "text": "Funda ngocansi oluphephile", "type": "template", "note": "" }, { - "SourceText": "Nice! Teens love it when you show interest in their gadget and when they get to explain something they know to you. This is a great starting point!", - "text": "Kuhle! Izingane ezisebusheni bazo ziyajabula lapho ubonisa isifiso sokwazi ngomshini wazo wezobuchwepheshe nalapho zithola ithuba lokukuchazela okuthile ezikwaziyo. Lesi yisiqalo esihle!", + "SourceText": "@global.w_solve_female_caregiver_1: “This makes me realise we should talk about boyfriends and protecting yourself. Many teens your age get pregnant or become HIV positive. Let’s go to the clinic so you can talk with the nurse to learn how you can stay safe.”", + "text": "@global.w_solve_female_caregiver_1: “Lokhu kungenza ukuba ngibone ukuthi kumelwe sikhulume ngamasoka nokuzivikela. Intsha eningi elingana nawe iyakhulelwa noma ingenwe yi-HIV. Ake siye emtholampilo ukuze ukhulume nomhlengikazi akwazise ukuthi ungahlala kanjani uphephile.”", "type": "template", - "note": "" + "note": "The string @global.w_solve_female_caregiver_1 should not be translated." }, { - "SourceText": "You are not alone here. Many parents sometimes have this challenge, too. One-on-one time should always be safe, and it does not have to cost a thing!", - "text": "Awuwedwa lapha. Abazali abaningi ngezinye izikhathi nabo baba nale nselele. Ukuchitha isikhathi ndawonye kumelwe kuhlale kuphephile, futhi akudingeki kudle imali!", + "SourceText": "This is great!", + "text": "Kuhle lokhu!", "type": "template", "note": "" }, { - "SourceText": "Explain to my teen why their suggestion is not safe or possible and ask them for other ideas.", - "text": "Ukuchazela ingane yami esebusheni bayo ukuthi kungani umbono wayo ungaphephile noma ungenakwenzeka futhi uyicele ukuba icabange okunye okuhlukile.", + "SourceText": "* Story & discussion – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & discussion – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nengxoxo – okusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities that we could do together.", - "text": "Phakamisa eminye imisebenzi yobumnandi ebesingayenza ndawonye.", + "SourceText": "* Story & reflection – that didn’t work…\n* Tools: How to solve problems\nKNOW IT – SOLVE IT – TRY IT – TEST IT\n* Story & reflection – that worked!\n* Try it out!\n* Home practice suggestions", + "text": "* Indaba kanye nokuhlaziya indaba - okungasebenzanga ...\n* Amathuluzi: Indlela yokuxazulula izinkinga\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE\n* Indaba kanye nokuhlaziya indaba - kusebenzile!\n* Kuzame!\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "Awesome! It is very important that your teen understands why you cannot do the activity that they suggested. Ask them for other ideas!", - "text": "Kuhle kakhulu! Kubaluleke kakhulu ukuthi ingane yakho esebusheni bayo iqonde ukuthi kungani ungeke ukwazi ukwenza into eziyisikisele. Yicele ukuba ize neminye imibono!", + "SourceText": "Discuss together: \n\nHow could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Xoxani ndawonye: \n\nU @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "This is perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Lokhu kuhle kakhulu! Uma udinga noma yisiphi isikhuthazo, ungathola amacebiso ezinto ongazenza @data.parent_centre.relax_and_activities.location_text. Khumbula, vumela ingane yakho esebusheni bayo ikhethe enizokwenza!", + "SourceText": "Remember @global.w_solve_teen_girl and the phone she got from the boy?", + "text": "Khumbula @global.w_solve_teen_girl kanye nefoni ayithole kumfana?", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "The string @global.w_solve_teen_girl should not be translated." }, { - "SourceText": "Sorry to hear this. Our teens may be disappointed if we cannot do what they want to do, like playing sports or doing other physically demanding activities. But remember, what is most important is that we spend time with them. That looks different for everyone!", - "text": "Siyaxolisa ngokuzwa lokhu. Izingane zethu ezisebusheni bazo zingase zidumale uma singakwazi ukwenza lokho ezifuna ukukwenza, njengokudlala ezemidlalo noma ukwenza ezinye izinto ezikhandla umzimba. Kodwa khumbula ukuthi okubaluleke kakhulu ukucitha isikhathi nazo. Lokho kuhlukile kuwo wonke umuntu!", + "SourceText": "How could @global.w_solve_teen_girl and @global.w_solve_female_caregiver_1 use the 4 steps of problem solving, like @global.w_solve_female_caregiver_2 and @global.w_solve_teen_boy_2 did? \n\nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "U @global.w_solve_teen_girl no @global.w_solve_female_caregiver_1 bebangazisebenzisa kanjani izinyathelo ezingu-4 zokuxazulula inkinga, njengo @global.w_solve_female_caregiver_2 no @global.w_solve_teen_boy_2 abenze ngayo? \n\nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_solve_teen_girl\n@global.w_solve_female_caregiver_1\n@global.w_solve_female_caregiver_2\n@global.w_solve_teen_boy_2" }, { - "SourceText": "Watch my teen do the activity and cheer them on.", - "text": "Bukela insane yami esebusheni bayo yenza okuthile futhi ngiyamu gqugquzele.", + "SourceText": "Take a few deep breaths to calm down, and", + "text": "Phefumula izikhathi ezimbalwa ukuze uzole, bese", "type": "template", "note": "" }, { - "SourceText": "Suggest other fun activities we can do together.", - "text": "Sikisela ezinye izinto ezimnandi esingazenza ndawonye.", + "SourceText": "KNOW IT", + "text": "YAZI", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Even if you are watching instead of doing the activity together, you can show your interest by describing and praising what your teen is doing!", - "text": "Kuhle kakhulu! Ngisho noma kuthiwa ubukele esikhundleni sokwenza lokho ndawonye, ungabonisa ukuthi uyakuthanda lokho ngokuchaza nokuncoma lokho ingane yakho esebusheni bayo ekwenzayo!", + "SourceText": "Identify the problem.", + "text": "Ibone inkinga.", "type": "template", "note": "" }, { - "SourceText": "That’s perfect! If you need any inspiration, you can find suggestions for activities @data.parent_centre.relax_and_activities.location_text. Remember, let your teen choose the activity!", - "text": "Kuhle kakhulu lokho! Uma udinga noma yisiphi isikhuthazo, ungathola amacebiso ezinto ongazenza @data.parent_centre.relax_and_activities.location_text. Khumbula, vumela ingane yakho esebusheni bayo ikhethe enizokwenza!", + "SourceText": "SOLVE IT", + "text": "IXAZULULE", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "This sometimes happens! Competitive games can be challenging for teens (and adults!) if they have difficulty with losing.", - "text": "Lokhu kuyenzeka ngezinye izikhathi! Imidlalo yokuncintisana ingaba yinselele ezinganeni ezisebusheni bazo (kanye nakubantu abadala!) uma benekinga nokungaphumeleli.", + "SourceText": "Think of possible solutions and what would happen if we used them.", + "text": "Cabanga ngezixazululo ezikhona nokuthi kungenzekani uma sizisebenzisa.", "type": "template", "note": "" }, { - "SourceText": "Suggest other activities that we can do together instead of against each other.", - "text": "Sikisela ezinye izinto eningazenza ndawonye esikhundleni sokuncintisana.", + "SourceText": "TRY IT", + "text": "KUZAME", "type": "template", "note": "" }, { - "SourceText": "Play the activity in teams, so I can encourage my teen if our team loses.", - "text": "Dlalani imidlalo ngamaqembu, ukuze ngikwazi ukukhuthaza ingane yami esebusheni bayo uma iqembu lethu lidliwa.", + "SourceText": "Choose a solution and try it out.", + "text": "Khetha isixazululo bese uyasizama.", "type": "template", "note": "" }, { - "SourceText": "Remember, let your teen choose! You can find suggestions for activities you could do with your teen @data.parent_centre.relax_and_activities.location_text, if you need it.", - "text": "Khumbula, vumela ingane yahoo esebusheni bayo ukuba ikhethe! Ungathola amacebiso ezinto ongazenza nengane yakho esebusheni bayo @data.parent_centre.relax_and_activities.location_text, uma uwadinga.", + "SourceText": "TEST IT", + "text": "SIHLOLE", "type": "template", - "note": "The string @data.parent_centre.relax_and_activities.location_text should not be translated." + "note": "" }, { - "SourceText": "If you and your teen are in the same team, you can help them manage their emotions if your team loses.", - "text": "Uma wena nengane yahoo esebusheni bayo niseqenjini elilodwa, ungayisiza ilawule imizwelo yayo uma iqembu lenu lidliwa.", + "SourceText": "Did it work? Great! If it did not work, then try another solution.", + "text": "Ingabe sisebenzile? Kuhle! Uma singasebenzanga, zama esinye isixazululo.", "type": "template", "note": "" }, { - "SourceText": "Yes, the end of one-on-one time can sometimes be difficult.", - "text": "Yebo, ukuphela kwesikhathi osicitha nengane yakho kungase kube nzima ngezinye izikhathi.", + "SourceText": "Let's practice problem-solving!", + "text": "Ake sizame ukuxazulula inkinga!", "type": "template", "note": "" }, { - "SourceText": "Say to my teen, “We have one minute before the end of one-on-one time today”, so my teen is prepared.", - "text": "Yithi enganeni yami, \"Sesinomzuzu owodwa ngaphambi kokuphela kwesikhathi sesethu sobabili namhlanje\", ukuze ingane yami izilungiselele.", + "SourceText": "Practice together on a problem you have now. One of you is the parent and one the teen. \n\nPraise and encourage each other – we are proud of you! \n\nRemember the steps: \nKNOW IT - SOLVE IT - TRY IT - TEST IT", + "text": "Prakthizani ndawonye ukuxazulula inkinga eninayo njengamanje. Oyedwa wenu ungumzali kuthi oyedwa abe ngumntwana. \n\nNcomanani futhi nikhuthazane - siyaziqhenya ngawe! \n\nKhumbula izinyathelo: \nZAZI - ZIXAZULULE - ZIZAME - ZIHLOLE", "type": "template", "note": "" }, { - "SourceText": "Inform my teen of how much time I have for one-on-one time and ask them to keep track on a clock or watch.", - "text": "Yazisa insane yami esebusheni bayo ukuthi nginesikhathi esingakanani sesikathi sethu sobabili bese uyayi cela ukuthi ilandelele iwashi.", + "SourceText": "We care about you, and how life is treating you.", + "text": "Siyakunakekela, nokuthi impilo ikuphethe kanjani.", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time right before another activity that my teen enjoys.", - "text": "Hlela isikhathi senu nobabili ngaphambi komunye umsebenzi ingane yami esebusheni bayo ewujabulelayo.", + "SourceText": "You are a star. And you are making a real difference. Be proud of yourself.", + "text": "Uyiqhawe. Wenza umehluko wangempela. Ziqhenye ngawe .", "type": "template", "note": "" }, { - "SourceText": "Wonderful! By giving your teen a heads-up, the end of one-on-one time will not come as a surprise. Also, you can remind your teen that you will spend time together again tomorrow.", - "text": "Kuhle kakhulu! Ngokunikeza ingane yakho esebusheni bayo isixwayiso kusengaphambili, isikhathi sokuphela kwenkathi yokucitha isikhathi ndawonye ngeke sibe yinto engalindelekile. Ungaphinde ukhumbuze ingane yakho esebusheni bayo ukuthi nizophinde nicithe isikhathi ndawonye kusasa.", + "SourceText": "Sorry that things are not easy today. All parents have these days.", + "text": "Uxolo ngokuthi isimo sinzima namuhla. Bonke abazali bayabhekana nalokhu.", "type": "template", "note": "" }, { - "SourceText": "Great! That way your teen has the responsibility to monitor the time and will be aware when time is almost up. Remind them that you will spend time together again tomorrow.", - "text": "Kuhle! Ngaleyo ndlela ingane yakho inesibopho sokuqapha isikhathi futhi izokwazi ukuthi isikhathi sesiphelile. Bakhumbuze ukuthi nizophinde nichithe isikhathi ndawonye kusasa.", + "SourceText": "You've completed this week's workshop.\n\nNext week, we will talk about money - you will need:\n* a sheet of paper/cardboard\n* a pen\n* 20 small rocks/beans/kernels\n\nIt will be fun!", + "text": "Usukuqedile ukuqeqeshwa kwaleli viki.\n\nNgesonto elizayo, sizokhuma ngemali - uzodinga: \n* isiqeshana sephepha/ukhadibhothi\n* ipeni \n* amatshe awu-20 amancane/obhontshisi/okusanhlamvu \n\nKuzoba mnandi!", "type": "template", "note": "" }, { - "SourceText": "Wonderful! If you spend time together right before dinner, you can happily say, “one-on-one time is over. Let’s get ready for dinner with the rest of the family!”", - "text": "Kuyamangalisa! Uma nichitha isikhathi ndawonye ngaphambi kokudla kwakusihlwa, ungathi ngenjabulo, “isikhathi sethu sobabili sesiphelile. Asilungiselele ukudla isidlo sakusihlwa nawo wonke umndeni! ”", + "SourceText": "There are two home practices for this week.", + "text": "Kubili ongakuprakthiza ekhaya kuleli viki.", "type": "template", "note": "" }, { - "SourceText": "Many parents face this. It can be difficult to spend one-on-one time with our teens when we have more than one child.", - "text": "Abazali abaningi babhekana nalokhu. Kungaba nzima ukuchitha isikhathi nezingane zethu uma sinezingane eziningi.", + "SourceText": "Whenever you are feeling stressed or upset: take five breaths in and out before you react. \n\nAnd when you're both calm, share with your teen how you feel.", + "text": "Uma uzizwa unengcindezi noma uthukuthele: donsa umoya uphinde uwukhiphe kahlanu ngaphambi kokuba uthathe isinyathelo. \n\nUma nobabili seniwehlisile umoya, khuluma nomntwana wakho umtshele ngendlela ozizwa ngayo.", "type": "template", "note": "" }, { - "SourceText": "Ask another adult or older sibling to look after the younger children during the one-on-one time with my teen.", - "text": "Cela omunye umuntu omdala noma umuntu ozalwa naye ukuba anakekele ingane ezisencane ngesikhathi usanesikhathi senu nobabili nengane yakho esebusheni bayo.", + "SourceText": "Discuss \"safety amnesty\" with your teenager, and think of a situation together when you could use this.", + "text": "Xoxani “ngoshwele wezokuphepha” nengane yakho, bese nicabange ngesimo lapho ningakusebenzisa khona lokhu.", "type": "template", "note": "" }, { - "SourceText": "Think of a time when the other children are not around and spend time with my teen then.", - "text": "Cabanga ngesikhathi lapho ezinye izingane zisuke zingekho bese uchitha isikhathi nengane yami esebusheni bayo.", + "SourceText": "Safety Amnesty Story", + "text": "Indaba Kashwele Wezokuphepha", "type": "template", "note": "" }, { - "SourceText": "Plan one-on-one time in a place other than at home.", - "text": "Hlela ukuchitha isikhathi nengane yakho kwenye indawo ngaphandle kwasekhaya.", + "SourceText": "Every time you take a pause before responding, or whenever you do something to keep your teen safe, tap your @global.parent_points and celebrate your success!", + "text": "Ngaso sonke isikhathi uthatha ikhefana ngaphambi kokuphendula, nanoma inini lapho wenza okuthile kokuvikela ingane yakho, chofoza i @global.parent_points ujabulele impumelelo yakho!", "type": "template", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Perfect! This way, you can give your undivided attention to your teen, so they feel valued and loved.", - "text": "Kuhle kakhulu! Ngale ndlela ungakwazi ukunaka ingane yakho esebusheni bayo ngaphandle kokuphazamiseka.", + "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", + "text": "Ingabe uke wabhekana nanoma iyiphi yalezi zinselele lapho wabelana ngendlela ozizwa ngayo nengane yakho esebusheni bayo?", "type": "template", "note": "" }, { - "SourceText": "Great! You can try spending time with your teen when the other children have already gone to bed, or are playing outside.", - "text": "Kuhle! Ungazama ukuchitha isikhathi nengane yakho esebusheni bayo lapho ezinye izingane sezilele noma lapho zidlala ngaphandle.", + "SourceText": "What was difficult for you about sharing how you feel with your teen?", + "text": "Yini oyithole inzima kuwe ngokutshela ingane yakho esebusheni bayo ngendlela ozizwa ngayo?", "type": "template", "note": "" }, { - "SourceText": "Wonderful! Maybe you can walk to the shops together or go watch a sports match, so you can chat without having the other children demand your attention.", - "text": "Kuhle kakhulu! Mhlawumbe ningahamba ndawonye niye ezitolo noma nihambe niyobukela ezemidlalo, ukuze nixoxe ngaphandle kokuphazanyiswa ezinye izingane ezisuke zifuna ukunakwa nazo.", + "SourceText": "I was afraid my teen would think I was weak.", + "text": "BengIsaba ukuthi ingane yams esebusheni bayo izocabanga ukuthi ngibuthakathaka.", "type": "template", "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.  We noticed you tapped the @data.habit.instruct_positively.in_text_title - great job for remembering!", - "text": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.  Siphawule ukuthi uchofoze okuthi @data.habit.instruct_positively.in_text_title - wenze kahle ngokukhumbula!", + "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", + "text": "Ukuxoxa ngemizwa, ikakhulukazi leyo enzima, kubekela ingane yakho esebusheni bayo isibonelo esibalulekile! Empeleni kuqinisa wonke umuntu emndenini ngoba niphela nikwazi ukuqondana nokusekelana kangcono.", "type": "template", - "note": "The string @data.habit.instruct_positively.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your home practice was to try out REAL, POSITIVE and EXACT instructions with your teen.", - "text": "Ukuphrakthiza endlini bekusho ukuzama ukulandela iziqondiso EZINGOKOQOBO, EZIWUSIZO NEZIQONDILE nengane yakho esebusheni bayo.", + "SourceText": "I felt uncomfortable about naming specific difficult feelings.", + "text": "Ngizizwe ngingakhululekile ukubiza ngamagama lemizwa enzima kumina.", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing! Well done for trying to give your teen positive instructions and for building a positive relationship with your teen. \n\nYour teen deserves praise and YOU as well!", - "text": "Siyabonga ngokwabelana nathi! Wenze kahle ngokuzama ukunikeza ingane yakho esebusheni bayo iziqondiso eziwusizo kanye nokwakha ubuhlobo obuhle nengane yakho. \n\nIngane yahoo esebusheni bayo ifanelwe ukunconywa NAWE ufanelwe ukunconywa!", + "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", + "text": "Ukukhuluma ngokuqondile akusho ukuthi uhlaza noma awungacabangeli - kusiza abanye bakuqonde ngendlela ecacile futhi lokhu kuvimbela ukudideka emndenini. Imizwa enjengentukuthelo nokucindezeleka iyingxenye yokuphila kwethu. Okudingeka nje sikwenze lapho sizizwa sithukuthela noma sicindezelekile ukusingatha imizwelo yethu kahle ngokudonsa umoya ngaphambi kokuthi uphendule.", "type": "template", "note": "" }, { - "SourceText": "Which of the tips helped you?", - "text": "Yimaphi amacebiso akusizile?", + "SourceText": "My teen felt uncomfortable when I shared my feelings.", + "text": "Ingane yams esebusheni bayo izizwe ingakhululekile lapho ngiyitshela indlela engizizwa ngayo.", "type": "template", "note": "" }, { - "SourceText": "GET REAL – Can your teen do what you are about to ask?", - "text": "BHEKANA NAMAQINISO – Ingabe ingane yakho esebusheni bayo ingakwenza yini lokho ozokucela?", + "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", + "text": "Ukuqala into entsha kuhlezi kunzima ekuqaleni. Zinike isikhathi sokujwayela futhi uqhubeke nokuba isibonelo esihle ngokuqaphela nokukhuluma ngemizwa yakho. Ngokuhamba kwesikhathi, ingane yakho esebusheni bayo izofunda ukwenza okufanayo, futhi izozizwa ithandwa kakhulu kunakuqala, izizwe inakekelwa!", "type": "template", "note": "" }, { - "SourceText": "GET POSITIVE – Use positive words and praise them!", - "text": "CABANGA NGEZINTO EZIKHUTHAZAYO – Sebenzisa amazwi akhuthazayo futhi uzincome izingane!", + "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", + "text": "Lapho ngixoxa ngendlela engizizwa ngayo, ingane yami esebusheni bayo ingibuze imibuzo eminingi engenze ngazizwa ngingakhululekile.", "type": "template", "note": "" }, { - "SourceText": "GET CLEAR – Be clear and specific!", - "text": "CACA- Cacisa futhi ucacise!", + "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", + "text": "Ukukhuluma ngemizwa yakho kusiza ingane yakho esebusheni bayo ukuthi ifunde ukwenza okufanayo. Ungakhetha ukuthi uzoyivezela okungakanani ngaleso simo. Kuxhomeke kuwe! Ungakhetha nokuphendula imibuzo kamuva ngokuthi uthi, “Ngizizwa ngithukuthele/ngicindezelekile manje. Ngicela ungiphe isikhashana? Singakhuluma kabanzi ngalokhu namhlanje ntabama”.", "type": "template", "note": "" }, { - "SourceText": "Wonderful! When we ask our teen to do something that is realistic, it is easier for them to succeed.", - "text": "Kuhle kakhulu! Lapho sicela ingane yet esebusheni bayo ukuba yenze into ekwaziyo ukuyenza, kulula ukuba iphumelele.", + "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", + "text": "Bengicindezeleke noma ngithukuthele kakhulu ukuzama ukukhuluma ngemizwa yami – Ngithanda ukuba ngedwa uma ngizizwa ngaleyo ndlela.", "type": "template", "note": "" }, { - "SourceText": "When we praise them, our teens feel encouraged to listen to us again!", - "text": "Lapho sizincoma, izingane zethu zizizwa zikhuthazekile ukuba ziphinde zisilalele!", + "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", + "text": "Kulungile ukungafuni ukukhuluma ngaleso sikhathi. Thola esinye iskathi sokuchaza, lapho usuzizwa uzolile, ukuze wonke umuntu akwazi ukuqonda.", "type": "template", "note": "" }, { - "SourceText": "Awesome! When we think ahead of specific instructions to give our teen, our instructions become much easier to follow!", - "text": "Kuhle kakhulu! Lapho sicabanga kusengaphambili ngeziqondiso ezicacile esingazinika ingane yethu esebusheni bayo, iziqondiso zethu kuba lula ukuzilandela!", + "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", + "text": "Kuleli sonto, umgomo wakho bekuwukuthi: Noma nini lapho uzizwa ucindezelekile noma uphatheke kabi, phefumula kahlanu ngaphakathi nangaphandle ngaphambi kokuba usabele.", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges?", - "text": "Ingabe zibe khona izinselele obhekene nazo?", + "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", + "text": "Umgomo wakho bekuwukuba ukhulume nengane yakho esebusheni bayo mayelana nendlela nobabili enizizwe ngayo esimweni esinicindezelayo.", "type": "template", "note": "" }, { - "SourceText": "What challenge did you have?", - "text": "Yiziphi izinselele obe nazo?", + "SourceText": "We know how stressful it is to bring up teenagers in these times. Learning to manage your stress helps you - and your family.", + "text": "Siyazi ukuthi kukukhathaza kangakanani ukukhulisa izingane kulezi zinsuku. Ukufunda ukulawula ingcindezi kusiza wena - nomndeni wakho.", "type": "template", "note": "" }, { - "SourceText": "My teenager did not want to follow the instruction.", - "text": "Ingane yami esebusheni bayo ayifunanga ukulandela iziqondiso.", + "SourceText": "Greetings everyone. \n\nToday's topic is managing stress. \n\nIt is important to know how to manage our stress. At times our children can behave in ways that makes us feel stressed and us as parents can make our children feel stressed too. \n\nSo, it is important to notice when we feel stressed and take a pause and breathe. That will help you manage your stress.", + "text": "Sanibonani nonke. \n\nIsihloko sanamuhla sikhuluma ngokulawula ingcindezi. \n\nKubalulekile ukukwazi ukulawula ingcindezi yethu. Ngezinye izikhathi izingane zethu zingaziphatha ngendlela eyenza sibe nengcindezi futhi nathi njengabazali singenza izingane zethu zibe nengcindezi. \n\nNgakho-ke, kubalulekile ukuqaphela lapho sizizwa sinengcindezi bese siyema kancane siphefumule. Lokho kuzokusiza ukulawula ingcindezi kuwe.", "type": "template", "note": "" }, { - "SourceText": "I did not find time to spend one-on-one time with my teen.", - "text": "Angisitholanga isikhathi engingasichitha nengane yami esebusheni bayo.", + "SourceText": "How have your stress levels been this week? Try to take a few deep breaths before responding to your teen - it makes a big difference.", + "text": "Abe kanjani amazinga akho okucindezeleka kuleli sonto? Zama ukudonsa umoya ngaphambi kokuphendula ingane yakho - kwenza umehluko omkhulu.", "type": "template", "note": "" }, { - "SourceText": "I gave a negative instead of a positive instruction.", - "text": "Nginikeze isiqondiso esingesihle esikhundleni sokunikeza esihle.", + "SourceText": "Well done!", + "text": "Wenze kahle!", "type": "template", "note": "" }, { - "SourceText": "I shouted at my teen when they behaved negatively, instead of giving them a positive instruction for what they should do.", - "text": "Ngiyithethisile ingane yams esebusheni bayo lapho yenza into engalungile, kunokuyinikeza isiqondiso esifanele salokho ebekufanele ikwenze.", + "SourceText": "Well done for taking a big breath before responding to your teen! Each time you are taking a pause, you are getting back control.", + "text": "Wenze kahle ngokudonsa umoya ngaphambi kokuphendula ingane yakho esebusheni bayo!! Ngaso sonke isikhathi uma uhlaba ikhefu, ukwazi ukulawula isimo kancono.", "type": "template", "note": "" }, { - "SourceText": "Top @local.number_of_challenges challenges other parents experience:", - "text": "Okuphezulu @local.number_of_challenges inselela abanye abazali abahlangabezana nakho:", - "type": "template", - "note": "The string @local.number_of_challenges should not be translated." - }, - { - "SourceText": "I know; our children need time to learn to follow instructions. Be patient, try again, and remember to praise them every time they follow an instruction!", - "text": "Ngiyazi; izingane zethu zidinga isikhathi ukuze zifunde ukulandela iziqondiso. Yiba nesineke, uphinde uzame, ukhumbule ukuzincoma izingane njalo lapho zilandela isiqondiso!", + "SourceText": "Happy, sad, angry, excited, worried? Well done for recognizing how you and others felt today! And remember, tomorrow is a brand new day.", + "text": "Ujabulile, udangele, uthukuthele, uyathokoza, ukhathazekile? Wenze kahle ngokubona ukuthi wena nabanye benizizwa kanjani namuhla! Khumbula, kusasa usuku olusha.", "type": "template", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Ingabe ufuna ukuzama okunye kulokhu okulandelayo?", + "SourceText": "We all feel overwhelmed sometimes. Taking a deep breath helps! \n\nComplete the @local.workshop_data.in_text_title to get some useful tools to deal with stress.", + "text": "Sonke sizizwa singakhungathekile ngezinye izikhathi. Ukudonsa kakhulu umoya kuyasiza! \n\nQedela i-@local.workshop_data.in_text_title ukuze uthole imcebiso ewusizo ekubhekana nokucindezeleka.", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Think of a time each day that I can spare five minutes or a bit more time.", - "text": "Cabanga ngesikhathi usuku nosuku engingabamba ngalo imizuzu emihlanu noma isikhathi esithe xaxa.", + "SourceText": "We have a new workshop available for you about managing anger and stress. It will help you take better care of yourself.", + "text": "Sino mhlangano wokufundisana kwakho omusha okhona okumayelana nokulawula intukuthelo nokucindezeleka. Kuzokusiza uzinakekele kangcono.", "type": "template", "note": "" }, { - "SourceText": "Find a chore that we could do together in a fun way.", - "text": "Thola umsebenzi wasendlini esingawenza ndawonye ngendlela emnandi.", + "SourceText": "Tomorrow a brand new @global.parent_app workshop is ready for you. \n\nBy completing the @local.workshop_data.in_text_title first, you lay a really important foundation: If you feel good, your family will do better too!", + "text": "Kusasa kukhona okusha @global.parent_app komhlangano wokufundisana okulindele. \n\nNgokuphothula i-@local.workshop_data.in_text_title kuqala, ubeka isisekelo esibaluleke ngempela: Uma uzizwa kahle, nomndeni wakho uzozizwa kahle!", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@local.workshop_data.in_text_title" }, { - "SourceText": "Ask my teen or someone else to help me with a chore, so I have some extra free time.", - "text": "Cela ingane yami esebusheni bayo noma omunye umuntu ukuthi angisize ngomsebenzi othile ukuze ngibe nesikhathi esongeziwe esikhululekile.", + "SourceText": "Well done for completing the @local.workshop_data.in_text_title. Tomorrow, you can access a new workshop to help you relax and build valuable skills!", + "text": "Wenze kahle ngoqeda i-@local.workshop_data.in_text_title. Kusasa, ungangena kumhlangano wokufundisana omusha ukuze usizakale ngokuohumula futhi wakhe amakhono abalulekile!", "type": "template", - "note": "" + "note": "The string @local.workshop_data.in_text_title should not be translated." }, { - "SourceText": "Perfect! Even spending 5 minutes makes a big difference, and if you do it at the same time every day (like at breakfast or before bed), it will be easier to keep it up!", - "text": "Kuhle kakhulu! Ngisho nokuchitha imizuzu emihlanu kwenza umehluko omkhulu, futhi uma ukwenza ngesikhathi esifanayo nsuku zonke (njengasesidlweni sasekuseni noma ngaphambi kokulala), kuba lula ukukwenza njalo!", + "SourceText": "Let's think about what happened in this story.", + "text": "Ake sicabange ngokuthi kwenzekeni kule ndaba.", "type": "template", "note": "" }, { - "SourceText": "Great! That way you get your work done and have a fun time together with your teen!", - "text": "Kuhle! Ngaleyo ndlela uyakwazi ukwenza umsebenzi wakho uwuqede uphinde ube nesikhathi esimnandi ndawonye nengane yakho esebusheni bayo!", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt?", + "text": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani?", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Wonderful! By sharing responsibilities, you will have more time to do something fun with your teen – it’s so important!", - "text": "Kuhle kakhulu! Ngokwaba imisebenzi, uzoba nesikhathi esiningi sokwenza into emnandi nengane yakho esebusheni bayo– kubalulekile kakhulu!", + "SourceText": "And @global.w_stress_male_caregiver?", + "text": "Futhi @global.w_stress_male_caregiver?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Yes, it takes some time to get used to giving positive instructions – it’s really worth trying again! Think about the behaviour you would love to see your teen do more and think of positive ways to give that instruction!", - "text": "Yebo, kuthatha isikhathi ukujwayela ukunikeza iziqondiso ezinhle – kuzosiza ngempela ukuphinde uzame! Cabanga ngendlela yokuziphatha ongathanda ukuyibona kakhulu enganeni yakho esebusheni bayo bese ucabanga ngezindlela ezinhle zokunikeza leso siqondiso!", + "SourceText": "And @global.w_stress_girl?", + "text": "Futhi @global.w_stress_girl?", "type": "template", - "note": "" + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "It is difficult to come up with instructions while we are still angry. Try and find a time when you are calm to introduce a positive instruction to your teen. \n\nIn the next @global.weekly_workshop, we’ll talk more about how we can manage our emotions!  You can find more relaxation activities @data.parent_centre.relax_and_activities.location_text.", - "text": "Kunzima ukunikeza iziqondiso uma sisacasukile. Zama ukuthola isikhathi lapho usuzolile ukuze unikeze isiqondiso esihle enganeni yakho esebusheni bayo. \n\nKokulandelayo @global.weekly_workshop, sizoxoxa kabanzi ngendlela esingalawula ngayo imizwelo yethu!  Ungathola eminye imisebenzi eyongeziwe yokuphumula @data.parent_centre.relax_and_activities.location_text.", + "SourceText": "Sad", + "text": "Ngidabukile", "type": "template", - "note": "The following strings should not be translated:\n@global.weekly_workshop\n@data.parent_centre.relax_and_activities.location_text" + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan. We noticed you tapped the @data.habit.money.in_text_title - great job for remembering!", - "text": "Umgomo wake bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali. Sibonile ukuthi uchofoze okuthi @data.habit.money.in_text_title - wenze kahle ngokukhumbula!", + "SourceText": "Scared", + "text": "Ngethukile", "type": "template", - "note": "The string @data.habit.money.in_text_title should not be translated." + "note": "" }, { - "SourceText": "Your goal was to make a family budget and savings plan.", - "text": "Umgomo wakho bekuwukwenza uhlelo lwezimali zomndeni kanye nohlelo lokonga imali.", + "SourceText": "Confused", + "text": "Ngikhungathekile", "type": "template", "note": "" }, { - "SourceText": "Thank you for sharing your experiences! Well done for thinking about how you can budget and save with your family. This will really help you to work towards your family goals. \n\nTogether you can achieve so many good things!", - "text": "Siyakubonga ngokwabelana ngalokho okwenzeke kuwe! Wenze kahle ngokucabanga ngendlela yokuhlela ezemali niyonge nonge nomndeni wakho. Lokhu kuzokusiza ngempela ukwazi ukufinyelele imigomo yomndeni wakho. \n\nNdawonye ningafinyelela kwizinto eziningi ezinhle!", + "SourceText": "Angry", + "text": "Ngithukuthele", "type": "template", "note": "" }, { - "SourceText": "make a budget together with their family", - "text": "enza isabelomali ndawonye nomndeni wabo", + "SourceText": "Each of them was feeling upset for their own reason!", + "text": "Ngamunye wabo ubezizwa ediniwe ngezizathu zabo!", "type": "template", "note": "" }, { - "SourceText": "Did you have any challenges when making your budget together?", - "text": "Ingabe ube nezinselele lapho nenza isabelomali ndawonye?", + "SourceText": "What could @global.w_stress_male_caregiver have done differently?", + "text": "Kungaba yini @global.w_stress_male_caregiver ayenze ngokuhlukile?", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "What whas difficult for you about making your budget together?", - "text": "Yini ebinzima kuwe ngokwenza isabelomali senu ndawonye?", + "SourceText": "Recognise why he feels stressed", + "text": "Thola ukuthi kungani ezizwa enengcindezi", "type": "template", "note": "" }, { - "SourceText": "I did not want to tell my family how much I earn.", - "text": "Bengingafuni ukutshela umndeni wami ukuthi ngihola malini.", + "SourceText": "Take a deep breath and speak calmly", + "text": "Phefumula bese ukhuluma ngezwi elizolile", "type": "template", "note": "" }, { - "SourceText": "You don’t have to reveal the exact amount you earn; you could give an estimate. You could say, “In this household, we have @global.currency@global.monthly_income_estimate every month” rather than, “I make @global.currency@global.monthly_income_precise”.", - "text": "Akudingeki ukuba udalule inani eliqondile oliholayo; ungabanika isilinganiso. Ungathi, “Lapha ekhaya siba no-@global.currency@global.monthly_income_estimate njalo ngenyanga” kunokuthi uthi, “Ngihola @global.currency@global.monthly_income_precise”.", + "SourceText": "Show he understands his teen’s feelings", + "text": "Ubonisa ukuthi uyayiqonda imizwa yengane yakhe", "type": "template", - "note": "The following strings should not be translated:\n@global.currency\n@global.monthly_income_estimate\n@global.currency\n@global.monthly_income_precise" + "note": "" }, { - "SourceText": "When budgeting, we could not agree on what should fall under needs and what should fall under wants.", - "text": "Lapho senza isabelomali, asikwazanga ukuvumelana ngokuthi yini okufanele ibe ngaphansi kwezidingo nokuthi yini okufanele ibe ngaphansi kokufunwayo.", + "SourceText": "Think about solutions together with @global.w_stress_teen_boy_1", + "text": "Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye", "type": "template", "note": "" }, { - "SourceText": "People’s wants and needs are different sometimes. Talking about them together can help you and your teen to understand each other, respect your differences, and see where you can compromise.", - "text": "Lokho okufunwa abantu nalokho abakudingayo akufani ngezinye izikhathi. Ukukhuluma ngalokhu ndawonye kungasiza wena nengane yakho esebusheni bayo ukuba niqondane, nihloniphe ukungafani kwenu futhi nibheke nezindawo eningaxegisa kuzo.", + "SourceText": "Do something positive together with @global.w_stress_teen_boy_1", + "text": "Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", "type": "template", "note": "" }, { - "SourceText": "I did not understand what to do.", - "text": "Bengingaqondi ukuthi ngenzeni.", + "SourceText": "Let’s look at an example of how stress can sometimes just get too much, for all of us:", + "text": "Ake sibheke isibonelo sendlela ingcindezi engaba mandla ngayo ngezinye izikhathi, kithi sonke:", "type": "template", "note": "" }, { - "SourceText": "I’m sorry to hear this. I know it can be difficult! Why don’t we go through it again? Your teen or other family members can join and help you!", - "text": "Ngiyaxolisa ngokuzwa lokhu. Ngiyazi ukuthi kungaba nzima! Kungani singake siphinde sikuzame futhi? Ingane yakho esebusheni bayo noma amanye amalungu omndeni angangenelela akusize!", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver: “Leave me alone and mind your own business!”", + "text": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver: “Ngiyeke phansi unake izindaba zakho!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "My teen did not want to do the budgeting with me.", - "text": "Ingane yami bingafuni ukwenza isabelomali kanye nami.", + "SourceText": "@global.w_stress_teen_boy_1: “What did I do? You never listen!” \n\n@global.w_stress_male_caregiver: “I said leave me alone or you will get a beating!”", + "text": "@global.w_stress_teen_boy_1: “Ngenzeni? Awukaze ungilalele!” \n\n@global.w_stress_male_caregiver: “Ngithe ngiyeke uma kungenjalo ngizokushaya!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Try making the budget with other adults in your home first. Your teen may get interested in what you are doing. \n\nMaking a budget may sound serious but try to make it fun – make it a game during one-on-one time! Or you can try to make the budget for @global.w_money_grandma first. \n\nRemember to praise them when you are done!", - "text": "Zama ukwenza isabelomali nabanye abantu abadala ekhaya lakho kuqala. Ingane yakho esebusheni bayo ingase ibe nentshisekelo kokwenzayo. \n\nUkwenza isabelomali kungase kuzwakale kuyinto ebucayi kodwa zama ukwenza lokhu kube mnandi – kwenze kube umdlalo eniwudlalayo lapho nichitha isikhathi ndawonye! Noma ungazama ukwenza ibhajethi ye-@global.w_money_grandma first. \n\nKhumbula ukubancoma alpha maseniqedile!", + "SourceText": "@global.w_stress_girl: “Look! I have made a house!”", + "text": "@global.w_stress_girl: “Bheka! Ngakhe indlu!”", "type": "template", - "note": "The string @global.w_money_grandma should not be translated." + "note": "The string @global.w_stress_girl should not be translated." }, { - "SourceText": "You deserve some praise, too. Thank you again for using @global.parent_app. It shows you really care!", - "text": "Nawe uyakufanelekela ukunconywa. Siyakubonga ngokusebenzisa i-@global.parent_app. Kubonisa ukuthi uyakhathalela ngempela!", + "SourceText": "@global.w_stress_teen_boy_1: “Who cares about your stupid house!”", + "text": "@global.w_stress_teen_boy_1: “Ubani onendaba nendlu yakho embi!”", "type": "template", - "note": "The string @global.parent_app should not be translated." + "note": "The string @global.w_stress_teen_boy_1 should not be translated." }, { - "SourceText": "Your goal was to praise your teen. You’ve tapped the @data.habit.praise_teen.in_text_title this week. Great job for remembering!", - "text": "Umgomo wakho bekuwukuncoma ingane yahoo esebusheni bayo. Uchofoze okuthi @data.habit.praise_teen.in_text_title this week. Wenze kahle ngokukhumbula!", + "SourceText": "Thank you for thinking along! Let’s go back in time and see what @global.w_stress_male_caregiver does now:", + "text": "Siyabonga ngokuthi nicabanga kanye nathi! Ake sibuyele emuva sibone lokho @global.w_stress_male_caregiver akwenzayo njengamanje:", "type": "template", - "note": "The string @data.habit.praise_teen.in_text_title should not be translated." + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "Your goal was to praise your teen.", - "text": "Umgomo wakho bekuwukuncoma ingane yakho esebusheni bayo.", + "SourceText": "@global.w_stress_male_caregiver lost his job. He was sitting at home feeling frustrated and stressed, when @global.w_stress_teen_boy_1 entered.", + "text": "@global.w_stress_male_caregiver ulahlekelwe umsebenzi. Ubehlezi ekhaya ekhungathekile futhi enengcindezi, ngesikhathi @global.w_stress_teen_boy_1 engena.", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "Did you have a chance to praise your teen this week?", - "text": "Ingabe ulitholile ithuba lokuncoma ingane yakho esebusheni bayo kuleli sonto?", + "SourceText": "@global.w_stress_teen_boy_1: “Can I have money to buy some airtime?” \n\n@global.w_stress_male_caregiver (taking a breath): “I’m sorry son. I had a difficult day today. The boss fired me.”", + "text": "@global.w_stress_teen_boy_1: “Ngicela imali yokuthenga i-airtime.” \n\n@global.w_stress_male_caregiver (uyaphefumula): “Ngiyaxolisa ndodana. Ngibe losuku okunzima namuhla. Umphathi ungixoshile emsebenzini.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Yes", - "text": "Yebo", + "SourceText": "@global.w_stress_teen_boy_1: “Oh no! I need a new school uniform.” \n\n@global.w_stress_male_caregiver: “I’ll try, son, And your @global.w_stress_female_caregiver’s job will help us get by while I look for another job.”", + "text": "@global.w_stress_teen_boy_1: “Awee! Ngidinga umfaniswano wesikole.” \n\n@global.w_stress_male_caregiver: “Ngizozama ndodana, futhi u @global.w_stress_female_caregiver wakho uzosisiza uma ngisafuna omunye umsebenzi.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_female_caregiver" }, { - "SourceText": "No", - "text": "Cha", + "SourceText": "@global.w_stress_teen_boy_1: “I can help out with looking for work, too, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: “No it’s okay, @global.w_stress_teen_boy_1. I appreciate your offer. The most important thing is that you work hard at school. Thanks for listening to me.”", + "text": "@global.w_stress_teen_boy_1: “Ngingakusiza nami ukufuna umsebenzi, @global.w_stress_male_caregiver?” \n\n@global.w_stress_male_caregiver: Cha, kulungile! @global.w_stress_teen_boy_1. Ngiyabonga ngokufisa ukungisiza. Into ebaluleke ukuzedlula zonke ukuthi usebenze kanzima esikoleni. Ngiyabonga ngokuthi ungilalele.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1" }, { - "SourceText": "It can sometimes be hard to remember to praise our teens. Next time you spend one-on-one time with your teen, try and think of one thing you can praise them for. You can even say, “Thank you for spending time with me!”.", - "text": "Ngezinye izikhathi kungase kube nzima ukukhumbula ukuncoma intsha yethu. Esikhathini esizayo lapho uchitha isikhathi nengane yakho esebusheni bayo, zama ukucabanga ngento eyodwa ongayincoma ngayo. mhlamphe uthi, “Ngiyabonga ngokuchitha isikhathi nami!”.", + "SourceText": "@global.w_stress_male_caregiver: “Let’s play some soccer together. It will help me get this stress off my mind for a bit.” \n\n@global.w_stress_teen_boy_1: “Okay, @global.w_stress_male_caregiver!”", + "text": "@global.w_stress_male_caregiver: “Ake sidlale ibhola lezinyawo ndawonye. Kuzongisiza ngisuse lengcindezi kancane emqondweni wami.” \n\n@global.w_stress_teen_boy_1: “Kulungile, @global.w_stress_male_caregiver!”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_male_caregiver\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver" }, { - "SourceText": "Well done - great job for remembering!", - "text": "Usebenzile - wenze kahle ngokukhumbula!", + "SourceText": "That went so much better! \n\nTaking a pause helps to respond calmly when you feel angry or stressed. Try it, you will see!", + "text": "Lokhu kuhambe kangcono kakhulu! \n\nUkuthatha ikhefu kusiza siphendule ngokuzolile uma uzizwa ucasukile noma ukhathazekile. Kuzame, uzobona!", "type": "template", "note": "" }, { - "SourceText": "How did your teen respond?", - "text": "Ingane yakho esebusheni bayo iphendule kanjani?", + "SourceText": "Safety Amnesty", + "text": "Ukuphepha Kukashwele", "type": "template", "note": "" }, { - "SourceText": "Surprised", - "text": "Imangele", + "SourceText": "Think back to when you were a teenager. \n\nWas there ever a time when you were in danger but you couldn’t tell your family because they would have been angry?\n\nThis ALMOST happened to @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl! Let’s have a look:", + "text": "Cabanga ngesikhathi usesemusha. \n\nIngabe kwake kwaba nesikhathi lapho waba sengozini kodwa ungakwazi ukutshela umndeni wakho ngoba usaba ukuthi uzothukuthela?\n\nLokho CISHE kwenzeka ku @global.w_stress_teen_boy_2 no @global.w_stress_teen_girl! Ake sibone:", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "Happy", - "text": "Ijabulile", + "SourceText": "@global.w_stress_teen_boy_2: \"Don’t tell the adults, but I’m going to bar with my friends tonight\" \n\n@global.w_stress_teen_girl: \"Have fun! I’ve told them I’m staying with my girlfriend, but I’m actually going to a cool party\"", + "text": "@global.w_stress_teen_boy_2: “Ungabatsheli abantu abadala, kodwa ngiya etshwaleni nabangane bami namuhla kusihlwa” \n\n@global.w_stress_teen_girl: “Ube nesikhathi esimnandi! Ngibatshele ukuthi ngiya kumngane wami wentombazane, kodwa empeleni ngiya ephathini emnandi”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl" }, { - "SourceText": "My teen did not like it", - "text": "Ingane yami esebusheni bayo ayizange ikuthande lokho", + "SourceText": "@global.w_stress_teen_boy_2: \"I think they are dealing drugs. We could all get arrested. But I can’t tell my parents – they’ll be so angry\"", + "text": "@global.w_stress_teen_boy_2: “Ngicabanga ukuthi bathengisa izidakamizwa. Sonke singaboshwa. Kodwa angikwazi ukutshela abazali bami - bazothukuthela kakhulu”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_boy_2 should not be translated." }, { - "SourceText": "I do not know", - "text": "Angazi", + "SourceText": "@global.w_stress_teen_girl: \"I’m scared. Everyone is too drunk to drive me home. This boy says he’ll take me but he wants us to go to his house first. I can’t tell my parents – I lied about coming to this party.\"", + "text": "@global.w_stress_teen_girl: “Ngethukile kakhulu. Wonke umuntu udakiwe ukuba angashayela angihambise ekhaya. Lo mfana uthi angangihambisa kodwa uthi ufuna sidlule kubo kuqala. Angakwazi ukutshela abazali bami - ngiqambe amanga ngokuthi ngiya ephathini.”", "type": "template", - "note": "" + "note": "The string @global.w_stress_teen_girl should not be translated." }, { - "SourceText": "Remember, it takes some time for your teen to get used to seeing you praise them. The more time you spend with them, the better it will go!", - "text": "Khumbula, kuthatha isikhathi ukuthi ingane yakho ijwayele ukukubona uyincoma. Lapho uchitha isikhathi esiningi nabo, kuzoba ngcono nakakhulu!", + "SourceText": "These are dangerous situations! Thankfully, @global.w_stress_teen_boy_2 and @global.w_stress_teen_girl then remembered what @global.w_stress_parent told them: \n\n\"I care about your safety more than anything. If you are ever upset, or scared, you can always call me for help, or tell me about it. \n\nJust say 'SAFETY AMNESTY'. I promise that I will try my best to help and I won’t be angry – even if you are doing something you shouldn't.\"", + "text": "Lezi yizimo eziyingozi! Siyabonga, @global.w_stress_teen_boy_2 u @global.w_stress_teen_girl bakhumbulile ukuthi @global.w_stress_parent ubatsheleni: \n\n“Nginendaba nokuphepha kwakho ukudlula noma yini enye. Uma uthukuthele, noma uthukile, ungangishayela ucingo noma nini uma ufuna usizo noma ufuna ukukhuluma. \n\nMane uthi ‘USHWELE WEZOKUPHEPHA’. Ngiyathembisa ukuthi ngizozama okusemandleni ukusiza futhi angeke ngithukuthele - ngisho noma wenze okuthile ebekungakafaneli ukwenze.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "Well done for observing how your teen felt; keep it up!", - "text": "Wenze kahle ngokuqaphela indlela ingane yakho esebusheni bayo ezizwa ngayo; qhubeka wenza kanjalo!", + "SourceText": "@global.w_stress_teen_girl: \"@global.w_stress_parent, it’s a safety amnesty. Can you come and pick me up? I really need a lift home.\"", + "text": "@global.w_stress_teen_girl: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicela uze uzongilanda? Ngidinga ukuhanjiswa ekhaya.”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_girl\n@global.w_stress_parent" }, { - "SourceText": "It happens - just be patient. Make sure to keep spending time with your teen, so they will value your opinion more and more. When your praise is genuine, you will see the benefits soon!", - "text": "Kuyenzeka - yiba nesineke. Qinisekisa ukuthi uyaqhubeka uchitha isikhathi nengane yakho esebusheni bayo, ukuze ibheke umbono wakho njengobalulekile. Lapho ukuncoma kwakho kuqotho, uzozibona izinzuzo maduzane!", + "SourceText": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, safety amnesty. I think my friends are in trouble. I don’t want to stop being their friend, but I’m worried. Can we talk?\"", + "text": "@global.w_stress_teen_boy_2: \"@global.w_stress_parent, ushwele wezokuphepha. Ngicabanga ukuthi abangane bami basenkingeni. Angifuni ukuyeka ukuba umngane wabo, kodwa ngikhathazekile ngabo. Singakhuluma?”", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_2\n@global.w_stress_parent" }, { - "SourceText": "No problem - try to observe how they respond the next time!", - "text": "Ayikho inkinga - zama ukubona indlela ingane esabela ngayo esikhathini esizayo!", + "SourceText": "This is fantastic, especially in such difficult times as this. You are a star.", + "text": "Kuhle kakhulu lokhu, ikakhulu ezikhathini ezinzima njengalezi. Uyiqhawe.", "type": "template", "note": "" }, { - "SourceText": "Your goal was to discuss a possible crisis situation with your teen and make a plan for it.", - "text": "Umgomo wakho bekuwukuxoxa nengane yakho esebusheni bayoi ngesimo esiyinhlekelele esingase sivele bese nenza icebo laso.", + "SourceText": "Today you will explore:", + "text": "Namuhla uzohlola:", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with their teens", - "text": "balungiselele inkinga engase ibe khona nentsha yabo", + "SourceText": "* Story & discussion – that didn’t work…\n* Story & discussion – that worked!\n* Safety Amnesty story & discussion – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Indaba kanye nengxoxo – okungasebenzanga ...\n* Indaba kanye nengxoxo – okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "prepare for a possible crisis with your teen", - "text": "lungiselela inkinga engase ibe khona nengane yakho esebusheni bayo", + "SourceText": "* Story & reflection – that didn’t work…\n* Story & reflection – that worked!\n* Safety Amnesty story & reflection – that worked!\n* Tools: How to manage stress\nBREATHE - SHARE - SHOW\n* Home practice suggestions", + "text": "* Indaba kanye nokubuyekeza indaba - okungasebenzanga ...\n* Indatshana kanye nokubuyekeza indaba - okusebenzile!\n* Indaba yokuphepha kanye nengxoxo – okusebenzile!\n* Amathuluzi: Indlela yokulawula ingcindezi\nPHEFUMULA - YABELANA - BONISA\n* Amacebiso alokho ongakwenza ekhaya", "type": "template", "note": "" }, { - "SourceText": "My teen told me that something serious happened to them and I did not know how to handle it.", - "text": "Ingane yami eyevile eminyakeni eyishumi nambili ingitshele ukuthi kukhona into ebucayi eyenzeke kuyo futhi angazanga ukuthi ngisisingathe kanjani leso simo.", + "SourceText": "Let's discuss what happened in this story.", + "text": "Ake sixoxe ngokuthi kwenzekeni kule ndaba.", "type": "template", "note": "" }, { - "SourceText": "Praise your teen for telling you; that is not easy to do! Remember, you can use all the skills you picked from your toolbox: Take a pause, use the four steps of problem solving, and reach out to get the support you and your teen need!", - "text": "Ncoma ingane yakho ngokukutshela; lokho akulula ukukwenza! Khumbula, ungasebenzisa wonke amakhono owakhethe ebhokisini lakho lamathuluzi: Thatha isikhashana, sebenzisa izinyathelo ezine zokuxazulula izinkinga, futhi ufinyelele ukuze uthole ukwesekwa wena nomntwana wakho osemusha enikudingayo!", + "SourceText": "How do you think @global.w_stress_teen_boy_1 felt? And his @global.w_stress_male_caregiver? And @global.w_stress_girl?\n\nWhat could @global.w_stress_male_caregiver have done differently?", + "text": "Ucabanga ukuthi @global.w_stress_teen_boy_1 uzizwe kanjani? Kanye no-@global.w_stress_male_caregiver wakhe? Kanye @global.w_stress_girl?\n\nYini @global.w_stress_male_caregiver abengayenza ngokuhlukile?", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_male_caregiver\n@global.w_stress_girl\n@global.w_stress_male_caregiver" }, { - "SourceText": "Get support", - "text": "Thola ukwesekwa", - "type": "template", - "note": "" - }, - { - "SourceText": "The conversation made me very uncomfortable because I was reminded of a negative experience I had.", - "text": "Ingxoxo ingenze ngangakhululeka ngoba ingikhumbuze ngento ebuhlungu eyenzeka kumina.", - "type": "template", - "note": "" - }, - { - "SourceText": "When we are reminded of such experiences, it is normal to feel upset or angry. It is important to find a time when you are calm, so that you can think of what support you need. You may need to talk to someone.", - "text": "Lapho sikhunjuzwa izinto ezinjalo ezenzeka kuthina, kungokwemvelo ukucasuka noma ukuthukuthela. Kubalulekile ukuthola isikhathi lapho usuzolile sokucabanga ngokwesekwa okudingayo. Kungase kudingeke ukhulume nomunye umuntu othile.", - "type": "template", - "note": "" - }, - { - "SourceText": "One of us did not feel comfortable.", - "text": "Oyedwa kuthina ubezizwa engakhululekile.", - "type": "template", - "note": "" - }, - { - "SourceText": "This is difficult stuff to talk about. Find a relaxing time for it. We know it is much easier to not talk about these things and to hope they will never happen to us. However, learning to deal with crisis is like getting insurance; it is ALWAYS best to think about them and be prepared.", - "text": "Lokhu kuyinto okunzima ukukhuluma ngayo. Zitholele isikhathi sokuphumula. Siyazi ukuthi kulula kakhulu ukungakhulumi ngalezi zinto sinethemba lokuthi ngeke zenzeke kithi. Nokho ukufunda ukubhekana nenhlekelele kufana nokuthola umshwalense; KUHLALE kungcono ukucabanga ngakho nokuzilungiselela.", - "type": "template", - "note": "" - }, - { - "SourceText": "Your goal was to map risks and support systems with your teen - both in your community and online.", - "text": "Umgomo wakho bekuwukubona izingozi kanye nokuthola izindlela zokwesekwa kanye nengane yakho esebusheni bayo- emphakathini wakho naku-inthanethi.", - "type": "template", - "note": "" - }, - { - "SourceText": "map risks and support with their teens", - "text": "thola izingozi kanye nokwesekwa kanye nentsha yabo", - "type": "template", - "note": "" - }, - { - "SourceText": "map risks and support with your teen", - "text": "thola izingozi kanye nokwesekwa kanye kanye nengane yakho esebusheni bayo", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen and I disagreed on which areas and online activities were unsafe.", - "text": "Mina nengane yamsi esebusheni bayo asivumelani ngokuthi yiziphi izindawo nezinto eziku-inthanethi ezingaphephile.", - "type": "template", - "note": "" - }, - { - "SourceText": "Well done for trying the activity! When we listen to our teenagers, even if we disagree, we learn to understand their thinking. Try and find time to do the activity again - try to really listen and show you understand them before sharing your thoughts.", - "text": "Wenze kahle ngokuzama lo msebenzi! Lapho silalela intsha yethu, ngisho noma singavumelani, sifunda ukuqonda indlela ecabanga ngayo. Zama ukuthola isikhathi sokuphinda wenze lo msebenzi - zama ukulalelisisa futhi ubonise ukuthi uyayiqonda intsha ngaphambi kokuba uyiphendule.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen identified the house of someone I trust as unsafe. I was shocked and did not know what to do.", - "text": "Ingane yami esebusheni bayo ikhombe indlu yomuntu engimthembayo yathi ayiphephile. Bengishaqekile futhi ngingazi ukuthi ngenzeni.", - "type": "template", - "note": "" - }, - { - "SourceText": "It is shocking to learn that people who are close to us and who we trust may be a danger to our teens. Remember to take a pause when you are upset, and try to listen calmly to your teen. Find someone you can talk to about this, perhaps a friend or support service, so you can get the support you need.", - "text": "Kuyashaqisa ukuthola ukuthi abantu abasondele kuthina nesibathembayo bangaba yingozi entsheni yethu. Khumbula ukuthatha ikhefu lapho ucasukile, bese uzama ukulalela ingane yakho esebusheni bayo uzolile. Thola umuntu othile ongakhuluma naye ngalokhu, mhlawumbe umngane noma abasebenza ngokweseka, ukuze uthole usizo oludingayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen insisted that the bar (or another place I don’t feel is safe) is safe for them to visit. I don’t know how to convince my teen.", - "text": "Ingane yams esebusheni bayo ikholelwa ukuthi i-bha (noma enye indawo enginomuzwa wokuthi ayiphephile) iyindawo ephephile engaya kuyo. Angazi ukuthi ngingayikholisa kanjani ingane yami.", - "type": "template", - "note": "" - }, - { - "SourceText": "This can be very frustrating. To find a solution, your teen needs to feel heard - so listen calmly to your teen's reasons, and only then share your own thoughts. Then, think together about a rule that allows them to have fun but stay safe.", - "text": "Lokhu kungakhungathekisa kakhulu. Ukuze uthole isixazululo, ingane yakho esebusheni bayo idinga ukuzwiwa - ngakho yilalele ngokuzola ingane yakho, bese uveza umbono wakho ngemva kwalokho. Ngemva kwalokho, cabangani ndawonye ngomthetho ovumela ingane ukuba izijabulise kodwa ihlale iphephile.", - "type": "template", - "note": "" - }, - { - "SourceText": "As an adult, I feel responsible to protect - but when I told my teen what is safe and what is not, my teen got angry.", - "text": "Njengomuntu omdala ngizizwa nginomthwalo wokuvikela ingane yami - kodwa lapho ngiyitshela ingane yami esebusheni bayo ngalokho okuphephile nokungaphephile, ivele yathukuthela.", - "type": "template", - "note": "" - }, - { - "SourceText": "Our teenagers may know things about our communities and technology that we are not aware of. When we actively involve our teens in the mapping activity and really listen to them, they feel heard and valued, and it can be easier to come up with a plan that everyone agrees on.", - "text": "Intsha yethu ingase yazi izinto esingazazi thina mayelana nemiphakathi yethu kanye nezobuchwepheshe. Uma sibandakanya intsha yethu emsebenzini wokwenza amamephu futhi siyilalela ngempela, izizwa izwakala futhi yaziswa, futhi kungaba lula ukuqhamuka necebo wonke umuntu avumelana ngalo.", - "type": "template", - "note": "" - }, - { - "SourceText": "It was hard to identify support resources available in my community, because I don’t know my community so well / there are few services available.", - "text": "Bekunzima ukubona izinsiza ezikhona emphakathini wangakithi ngoba angiwazi kahle umphakathi engikuwo / noma izinzizakalo ezimbwalwa ezitholakalayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "It is difficult to know every detail about our communities. Involve another family member or friend in your mapping activity. You can even visit some of the services available and ask what they do. The more we know, the better we can keep our families safe!", - "text": "Kunzima ukwazi yonke imininingwane ngemiphakathi yethu. Hilela elinye ilungu lomndeni noma umngane lapho ubeka imithetho yendawo. Ungavakashela nezinye zezinsizakalo ezikhona futhi ubuze ukuthi zenzani. Kuba ngcono lapho kukuningi esikwaziyo ukuze sigcine imindeni yethu iphephile!", - "type": "template", - "note": "" - }, - { - "SourceText": "I don’t know much about technology, so I don’t know how to talk about it with my teen.", - "text": "Akukuningi engikwaziyo ngezobuchwepheshe, ngakho angazi ukuthi ngikhulume ngithini ngakho enganeni yami esebusheni bayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "That's totally fine! You can still support your teen. Ask your teen to explain the gadgets they use - you could do this during one-on-one time. This is a great opportunity to show interest in your teen’s life and to discuss potential risks together. If you are not sure which rules to set, you can always agree, with your teen, to try a new rule for two weeks and then discuss how things are going and change the rule if needed!", - "text": "Lokho kulungile ngokuphelele! Usengakwazi ukusekela ingane yakho esebusheni bayo. Cela ingane yakho ukuthi ichaze amagajethi ewasebenzisayo - ungakwenza lokhu ngesikhathi esisodwa. Leli yithuba elihle lokubonisa intshisekelo empilweni yengane yakho kanye nokuxoxa ngezingozi ezingase zibe khona ndawonye. Uma ungenaso isiqiniseko sokuthi yimiphi imithetho okufanele uyibeke, ungavumelana ngaso sonke isikhathi, nengane yakho, ukuthi nizame umthetho omusha amasonto amabili bese nixoxa ngokuthi izinto zihamba kanjani futhi nishintshe umthetho uma kudingeka!", - "type": "template", - "note": "" - }, - { - "SourceText": "Your goal was to try and resolve a problem or conflict together with your teen.", - "text": "Umgomo wakho bekuwukuzama ukuxazulula inkinga noma ukungqubuzana ndawonye nengane yakho esebusheni bayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "resolve problems with their teens", - "text": "ukuxazulula izinkinga nentsha yabo", - "type": "template", - "note": "" - }, - { - "SourceText": "resolve the problem with your teen", - "text": "xazulula inkinga nengane yakho esebusheni bayo", - "type": "template", - "note": "" - }, - { - "SourceText": "I forgot the steps of problem solving.", - "text": "Ngizikhohliwe izinyathelo zokuxazulula inkinga.", - "type": "template", - "note": "" - }, - { - "SourceText": "It takes some practice to use all four steps of problem solving. Next time a problem comes up, look at the four steps together with your teen - it will make a big difference!", - "text": "Kudingeka ukuzijwayeza ukusebenzisa zonke izinyathelo ezine zokuxazulula izinkinga. Ngokuzayo uma kuvela inkinga, bhekani izinyathelo ezine ndawonye nengane yakho esebusheni bayo- kuzokwenza umehluko omkhulu!", - "type": "template", - "note": "" - }, - { - "SourceText": "I started with the solutions right away.", - "text": "Ngivele ngaqala ngezixazululo.", - "type": "template", - "note": "" - }, - { - "SourceText": "When we have a problem, we always want to get to the quickest end result and can forget about the steps. To come up with the best solution together, it is helpful to first have a full understanding of the problem and the different solutions.", - "text": "Lapho sinenkinga, sihlale sifuna umphumela osheshayo bese sikhohlwa izinyathelo okumelwe sizithathe. Ukuze sithole isixazululo esingcono ndawonye, kuyasiza ukuqale uqonde inkinga ngokuphelele kanye nezixazululo ezihlukahlukene.", - "type": "template", - "note": "" - }, - { - "SourceText": "Four steps of problem solving", - "text": "Izinyathelo ezine zokuxazulula inkinga", - "type": "template", - "note": "" - }, - { - "SourceText": "We could not agree on a solution to try out and we got into an argument.", - "text": "Asikwazanga ukuvumelana ngesixazululo sokuzama saphela siphikisana.", - "type": "template", - "note": "" - }, - { - "SourceText": "Sometimes it can be difficult to agree with everyone in the family, especially if everyone is not yet calm. You could agree to try one solution first, and then another. Also, if you get stuck, try to get together later to agree on the solution together.", - "text": "Ngezinye izinkhathi kungase kube nzima ukuvumelana nawo wonke umuntu emndenini, ikakhulukazi lapho wonke umuntu engakazoli. Ungavuma ukuzama isixazululo esisodwa kuqala, bese kulandela esinye. Uma kwenzeka ubambeka, zamani ukuhlangana kamuva ukuze nivumelane ngesixazululo ndawonye.", - "type": "template", - "note": "" - }, - { - "SourceText": "I got angry when the problem came up and I forgot to use the problem-solving steps.", - "text": "Ngathukuthela lapho kuvela inkinga futhi ngakhohlwa ukusebenzisa izinyathelo zokuxazulula inkinga.", - "type": "template", - "note": "" - }, - { - "SourceText": "When a problem comes up, we all get angry or stressed sometimes. Remember, when you feel angry or stressed, you can take a pause to help you stay calm and then solve the problem you are facing.", - "text": "Ngesinye iskathi lapho kuvela inkinga sonke siyathukuthela noma sicindezeleke. Khumbula, lapho uzizwa uthukuthele noma ucindezelekile, ungathatha ikhefu ukuze likusize uhlale uzolile bese uxazulula inkinga obhekene nayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen got angry and did not want to talk about the problem.", - "text": "Ingane yami esebusheni bayo iye yathukuthela futhi yenqaba ukukhuluma ngenkinga.", - "type": "template", - "note": "" - }, - { - "SourceText": "Your teen might be too overwhelmed to deal with the problem right away. Recognise and name their emotions, and create a time later in the day or week to discuss and solve the problem together. By giving your teen time, the problem can be solved well.", - "text": "Kungenzeka ingane yakho esebusheni bayo isakhungathekile kakhulu ukuba ibhekane nenkinga ngokushesha. Qaphela futhi uyazi ngegama imizwa yengane yakho, bese wenza isikhathi kamuva osukwini noma phakathi nesonto ukuze nixoxe futhi nixazulule inkinga ndawonye. Ngokunika ingane yakho isikhathi, inkinga ingaxazululwa kahle.", - "type": "template", - "note": "" - }, - { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react. You tapped the @data.habit.breathe.in_text_title - well done!", - "text": "Kuleli sonto, umgomo wakho bekuwukwenza lokhu: Noma nini lapho uzizwa ucindezelekile noma ucasukile, donsa umoya izikhathi ezinhlanu bese uyawudedela ngaphambi kokuba uthathe isinyathelo. Uchofoze okuthi @data.habit.breathe.in_text_title - wenze kahle!", - "type": "template", - "note": "The string @data.habit.breathe.in_text_title should not be translated." - }, - { - "SourceText": "This week, your goal was: Whenever you are feeling stressed or upset, take five breaths in and out before you react.", - "text": "Kuleli sonto, umgomo wakho bekuwukuthi: Noma nini lapho uzizwa ucindezelekile noma uphatheke kabi, phefumula kahlanu ngaphakathi nangaphandle ngaphambi kokuba usabele.", - "type": "template", - "note": "" - }, - { - "SourceText": "How did this work out?", - "text": "Lokhu kusebenze kanjani?", - "type": "template", - "note": "" - }, - { - "SourceText": "Your goal was also to talk to your teen about how you both felt in a stressful situation.", - "text": "Umgomo wakho bekuwukuba ukhulume nengane yakho esebusheni bayo mayelana nendlela nobabili enizizwe ngayo esimweni esinicindezelayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "How did this go?", - "text": "Kuhambe kanjani?", - "type": "template", - "note": "" - }, - { - "SourceText": "Did you experience any of these challenges when sharing how you feel with your teen?", - "text": "Ingabe uke wabhekana nanoma iyiphi yalezi zinselele lapho wabelana ngendlela ozizwa ngayo nengane yakho esebusheni bayo?", - "type": "template", - "note": "" - }, - { - "SourceText": "What was difficult for you about sharing how you feel with your teen?", - "text": "Yini oyithole inzima kuwe ngokutshela ingane yakho esebusheni bayo ngendlela ozizwa ngayo?", - "type": "template", - "note": "" - }, - { - "SourceText": "I was afraid my teen would think I was weak.", - "text": "BengIsaba ukuthi ingane yams esebusheni bayo izocabanga ukuthi ngibuthakathaka.", - "type": "template", - "note": "" - }, - { - "SourceText": "Sharing feelings, especially the difficult ones, sets an important example for your teen! It actually makes everyone in the family stronger, because you can understand and support each other better.", - "text": "Ukuxoxa ngemizwa, ikakhulukazi leyo enzima, kubekela ingane yakho esebusheni bayo isibonelo esibalulekile! Empeleni kuqinisa wonke umuntu emndenini ngoba niphela nikwazi ukuqondana nokusekelana kangcono.", - "type": "template", - "note": "" - }, - { - "SourceText": "I felt uncomfortable about naming specific difficult feelings.", - "text": "Ngizizwe ngingakhululekile ukubiza ngamagama lemizwa enzima kumina.", - "type": "template", - "note": "" - }, - { - "SourceText": "Being specific is not rude or insensitive - it really helps others to understand you clearly and this prevents confusion in the family. Feelings like anger and stress are part of our lives. All we need to do when we feel angry and stressed is handle our emotions well by taking a few deep breaths before responding.", - "text": "Ukukhuluma ngokuqondile akusho ukuthi uhlaza noma awungacabangeli - kusiza abanye bakuqonde ngendlela ecacile futhi lokhu kuvimbela ukudideka emndenini. Imizwa enjengentukuthelo nokucindezeleka iyingxenye yokuphila kwethu. Okudingeka nje sikwenze lapho sizizwa sithukuthela noma sicindezelekile ukusingatha imizwelo yethu kahle ngokudonsa umoya ngaphambi kokuthi uphendule.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen felt uncomfortable when I shared my feelings.", - "text": "Ingane yams esebusheni bayo izizwe ingakhululekile lapho ngiyitshela indlela engizizwa ngayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Starting a new thing is always difficult at first. Give yourselves some time to get used to it and keep showing a good example by observing and sharing your feelings. Over time, your teen will learn to do the same, and they will feel even more loved and cared for!", - "text": "Ukuqala into entsha kuhlezi kunzima ekuqaleni. Zinike isikhathi sokujwayela futhi uqhubeke nokuba isibonelo esihle ngokuqaphela nokukhuluma ngemizwa yakho. Ngokuhamba kwesikhathi, ingane yakho esebusheni bayo izofunda ukwenza okufanayo, futhi izozizwa ithandwa kakhulu kunakuqala, izizwe inakekelwa!", - "type": "template", - "note": "" - }, - { - "SourceText": "When I shared my feelings, my teen asked many questions, which made me uncomfortable.", - "text": "Lapho ngixoxa ngendlela engizizwa ngayo, ingane yami esebusheni bayo ingibuze imibuzo eminingi engenze ngazizwa ngingakhululekile.", - "type": "template", - "note": "" - }, - { - "SourceText": "Sharing feelings helps your teen to be aware and learn to do the same. You can choose how much detail you want to share about the situation. It’s up to you! You can also choose to answer questions later by saying, “I am feeling angry/stressed now. Could you please give me some time? We can talk about this more tonight”.", - "text": "Ukukhuluma ngemizwa yakho kusiza ingane yakho esebusheni bayo ukuthi ifunde ukwenza okufanayo. Ungakhetha ukuthi uzoyivezela okungakanani ngaleso simo. Kuxhomeke kuwe! Ungakhetha nokuphendula imibuzo kamuva ngokuthi uthi, “Ngizizwa ngithukuthele/ngicindezelekile manje. Ngicela ungiphe isikhashana? Singakhuluma kabanzi ngalokhu namhlanje ntabama”.", - "type": "template", - "note": "" - }, - { - "SourceText": "I was too stressed or angry to try sharing my feelings – I prefer to be alone when I feel like that.", - "text": "Bengicindezeleke noma ngithukuthele kakhulu ukuzama ukukhuluma ngemizwa yami – Ngithanda ukuba ngedwa uma ngizizwa ngaleyo ndlela.", - "type": "template", - "note": "" - }, - { - "SourceText": "It’s okay to not want to share at that time. Find some time to explain later, when you feel calmer, so that everyone can understand.", - "text": "Kulungile ukungafuni ukukhuluma ngaleso sikhathi. Thola esinye iskathi sokuchaza, lapho usuzizwa uzolile, ukuze wonke umuntu akwazi ukuqonda.", - "type": "template", - "note": "" - }, - { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule). You tapped the @data.habit.consequence.in_text_title - great job for remembering!", - "text": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho esebusheni bayo yephule umthetho wasekhaya). Uthephe okuthi @data.habit.consequence.in_text_title - umsebenzi omuhle wokukhumbula!", - "type": "template", - "note": "The string @data.habit.consequence.in_text_title should not be translated." - }, - { - "SourceText": "Your goal was to introduce ONE positive consequence (for your teen taking responsibility) and ONE negative consequence (for your teen breaking a household rule).", - "text": "Umgomo wakho bekuwukwethula umphumela OWODWA omuhle (wokuthi ingane yakho ithwale umthwalo wemfanelo) kanye nomphumela OWODWA ongemuhle (owokuthi ingane yakho yephule umthetho wasekhaya).", - "type": "template", - "note": "" - }, - { - "SourceText": "introduce a consequence together", - "text": "ethula umphumela ndawonye", - "type": "template", - "note": "" - }, - { - "SourceText": "Did you have any challenges when trying to introduce a consequence together?", - "text": "Ingabe nibe nezinselele lapho nizama ukwethula umphumela ndawonye?", - "type": "template", - "note": "" - }, - { - "SourceText": "What was difficult for you about introducing a consequence with your teen?", - "text": "Yini kuwe obekunzima ngokwethula umphumela nengane yakho esebusheni bayo?", - "type": "template", - "note": "" - }, - { - "SourceText": "I got very angry when my teen broke the rule.", - "text": "Ngike ngathukuthela kakhulu lapho ingane yami esebusheni bayo iphula umthetho.", - "type": "template", - "note": "" - }, - { - "SourceText": "When we take a pause before responding, it helps us to calm down and respond better. \n\nNext time your teen makes you angry, try to take a pause first. Even a few deep breaths can make a big difference!", - "text": "Lapho sithatha ikhefu ngaphambi kokuphendula, kusisiza ukwehlisa umoya futhi siphendule kangcono.\n\nNgokuzayo lapho ingane yakho ikuthukuthelisa, zama ukuhlaba ikhefu kuqala. Ngisho nokuphefumula okuncane okujulile kungenza umehluko omkhulu!", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen got very angry with me after I gave the consequence.", - "text": "Ingane yams esebusheni bayo ingithukuthelele lapho ngiyitshela umphumela wezenzo zayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "When your teen gets angry, you might need to walk away until you are both calm. \n\nCheck to make sure your consequence is fair and reasonable. Listen to your teen’s explanation, and make sure to give a “Safety Amnesty” if they broke a rule in order to stay safe.", - "text": "Lapho ingane yakho esebusheni bayo ithukuthela, kungase kudingeke uye kwenye indawo wehlise umoya kuze nihlangane lapho nobabili senizolile. \n\nHlola ukuze uqiniseke ukuthi umphumela owubekayo unobulungisa futhi uyacabangela yini. Lalela incazelo yengane yakho esebusheni bayo, bese uqikelela ukuthi unikeza “Ushwele Wokuvikeleka” uma iphule umthetho ukuze ihlale iphephile.", - "type": "template", - "note": "" - }, - { - "SourceText": "I introduced the consequence without first discussing it with my teen.", - "text": "Ngethula umphumela ngaphandle kokuxoxa ngawo nengane yami esebusheni bayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Can you make a consequence for if this happens again? When we establish a consequence together with our teens, the consequence will be more realistic, and our teens will be more willing and able to follow the rule.", - "text": "Ungawenza umphumela uma lokhu kwenzeka futhi? Lapho sithola imiphumela kanye nentsha yethu, umphumela uzoba ngokoqobo ngokwengeziwe, futhi intsha yethu iyozimisela ngokwengeziwe futhi ikwazi ukulandela umthetho.", - "type": "template", - "note": "" - }, - { - "SourceText": "I forgot to follow through with the consequence.", - "text": "Ngikhohliwe ukulandela umphumela.", - "type": "template", - "note": "" - }, - { - "SourceText": "We all make mistakes! The more consistent we are with our consequences, the more likely our children will choose to behave positively in the future.", - "text": "Sonke siyawenza amaphutha! Uma sihambisana kakhulu nemiphumela yethu, maningi amathuba okuthi izingane zethu zizokhetha ukuziphatha kahle ngokuzayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "Even with the consequence, my teen still does not follow the rule.", - "text": "Ngisho noma kukhona imiphumela ebekiwe yezenzo zayo, ingane yami esebusheni bayo ayiwulandeli umthetho.", - "type": "template", - "note": "" - }, - { - "SourceText": "If your teen keeps breaking rules, you might need to spend more positive time with them. \n\nTry to keep going with your other goals – like self-care, one-on-one time, and praise. All these skills will help your teen feel more loved and secure… and you less stressed!", - "text": "Uma ingane yakho esebusheni bayo iyaqhubeka iphula imithetho, kungase kudingeke uchithe isikhathi esengeziwe nayo. \n\nZama ukuqhubeka neminye imigomo yakho – njengokuzinakekela, ukuchitha isikhathi nengane, nokuyincoma. Onke la makhono azosiza ingane yakho esebusheni bayo izizwe ithandwa futhi ivikelekile... futhi kunciphise ukucindezeleka kuwe!", - "type": "template", - "note": "" - }, - { - "SourceText": "We only created a negative consequence, not a positive consequence.", - "text": "Sidale kuphela umphumela ongemuhle, hhayi umphumela omuhle.", - "type": "template", - "note": "" - }, - { - "SourceText": "It can be difficult to think of positive consequences sometimes. Positive consequences will encourage your teen to take more responsibility, and you will see the difference!", - "text": "Ngezinye izikhathi kungase kube nzima ukucabanga ngomphumela wokwenza kahle izinto. Imiphumela emihle izokhuthaza ingane yakho esebusheni bayo ukuthi izimele nakakhudlwana, futhi uzowubona umehluko!", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen suggested being hit as a negative consequence.", - "text": "Ingane yami esebusheni bayo ibeka ukuthi ishaywe njengomphumela ongemuhle wokwephula umthetho.", - "type": "template", - "note": "" - }, - { - "SourceText": "Teens can be used to seeing hitting as the only possible consequence for breaking rules. \n\nBrainstorm some calm consequences with them that could help them understand that they have done something wrong. These will be more effective and will set positive examples!", - "text": "Izingane ezisebusheni bazo signase zijwayele ekubhekeni ukushaywa njengokuphela komphumela ongemuhle wokwephula imithetho. \n\nXoxa nabo ngemiphumela ezolile engabasiza baqonde ukuthi kukhona okungalungile abakwenzile. Lezi zizosebenza kangcono futhi zizobeka izibonelo ezinhle!", - "type": "template", - "note": "" - }, - { - "SourceText": "Your goal was to make ONE rule with your teen this week.", - "text": "Umgomo wakho bekuwukwenza umthetho OWODWA nengane yakho esebusheni bayo kuleli sonto.", - "type": "template", - "note": "" - }, - { - "SourceText": "Well done for this! It’s not easy, and teenagers won’t keep to the rules all the time, but making a few key rules together is a great start. Praise yourself for trying this - we are proud of you!", - "text": "Wenze kahle kulokhu! Akulula, futhi intsha ngeke iyihloniphe imithetho ngaso sonke isikhathi, kodwa ukubeka imithetho embalwa esemqoka ndawonye kuyisiqalo esihle. Zincome ngokuzama lokhu - siyaziqhenya ngawe!", - "type": "template", - "note": "" - }, - { - "SourceText": "make rules with their teens", - "text": "yenza imithetho kanye nentsha yabo", - "type": "template", - "note": "" - }, - { - "SourceText": "Did you have any challenges when trying to make a rule together?", - "text": "Ingabe ube nobunzima obuthile lapho uzama ukubeka umthetho ndawonye?", - "type": "template", - "note": "" - }, - { - "SourceText": "What was difficult for you about making a rule with your teen?", - "text": "Yini ebinzima kuwe ngokubeka umthetho kanye nengane yakho esebusheni bayo?", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen and I could not agree on a rule.", - "text": "Mina nengane yami esebusheni bayo asikwazanga ukuvumelana ngomthetho.", - "type": "template", - "note": "" - }, - { - "SourceText": "Think about whether the rule is reasonable. Can your teen follow it? When making rules as a family, it helps to think about your teen, how old they are, and what is important to them.", - "text": "Cabanga ngokuthi umthetho uyafaneleka yini. Ingabe ingane yakho esebusheni bayo iyakwazi ukuwulandela? Lapho nibeka imithetho njengomndeni, kuyasiza ukucabanga ngengane yenu, ukuthi ineminyaka emingaki nokuthi yini ebalulekile kuyo.", - "type": "template", - "note": "" - }, - { - "SourceText": "My teen felt it was unfair that they have to follow the rule while I don’t have to follow it.", - "text": "Ingane yami esebusheni bayo ibe nomuzwa wokuthi akulungile ukuthi yona kumelwe ilandele umthetho kuyilapho mina kungadingeki ngiwulandele.", - "type": "template", - "note": "" - }, - { - "SourceText": "We should always remember that children learn best from us. The more we follow the rules, the more they will follow the rules, too. \n\nYou can adjust the rule to make sure that it is realistic for everyone to follow, considering your responsibilities and your teen’s responsibilities (for example, school or work activities).", - "text": "Kufanele sikhumbule njalo ukuthi izingane zifunda kangcono kuthina. Lapho silandela imithetho, kuba lula ngazo ukulandela imithetho. \n\nUngawushintsha umthetho ukuze uqinisekise ukuthi wonke umuntu uyakwazi ukuwulandela, ucabangela imithwalo yakho kanye nemithwalo yengane yakho (ngokwesibonelo, imisebenzi yesikole noma eyasekhaya).", - "type": "template", - "note": "" - }, - { - "SourceText": "I felt uncomfortable, because I feel that I should be the one establishing the rule, not my teen.", - "text": "Ngizizwe ngingakhululekile, ngoba nginomuzwa wokuthi kufanele kube imina obeka umthetho hhayi ingane yami esebusheni bayo.", - "type": "template", - "note": "" - }, - { - "SourceText": "My partner felt uncomfortable, because they feel that they should be the one establishing the rule, not the teen.", - "text": "Engithandana naye uzizwe engakhululekile, ngoba unomuzwa wokuthi nguye okufanele abeke umthetho hhayi osemusha.", + "SourceText": "@global.w_stress_male_caregiver could...", + "text": "@global.w_stress_male_caregiver anga...", "type": "template", - "note": "" + "note": "The string @global.w_stress_male_caregiver should not be translated." }, { - "SourceText": "When we establish rules together with our teens, that helps the family to understand each other better. The rules will be more realistic, and our teens will be more willing and able to follow the rules.", - "text": "Lapho sibeka imithetho ndawonye nentsha yethu, lokho kusiza umndeni uqondane kangcono. Imithetho kuyoba elandelekayo, futhi intsha yethu iyozimisela futhi ikwazi ukulandela imithetho.", + "SourceText": "* Recognise why he feels stressed \n* Take a deep breath and speak calmly \n* Show he understands his teen’s feelings \n* Think about solutions together with @global.w_stress_teen_boy_1\n* Do something positive together with @global.w_stress_teen_boy_1", + "text": "* Thola ukuthi kungani ezizwa enengcindezi\n* Phefumula bese ukhuluma ngezwi elizolile \n* Ubonisa ukuthi uyayiqonda imizwa yengane yakhe \n* Cabangani ngezixazululo no @global.w_stress_teen_boy_1 ndawonye\n* Yenzani okuthile okukhuthazayo no @global.w_stress_teen_boy_1 ndawonye", "type": "template", - "note": "" + "note": "The following strings should not be translated:\n@global.w_stress_teen_boy_1\n@global.w_stress_teen_boy_1" }, { - "SourceText": "When we tried to set a rule, we got into an argument.", - "text": "Lapho sizama ukubeka umthetho, savele sanokukuphikisana.", + "SourceText": "BREATHE. Slowly. Pause.", + "text": "PHEFUMULA. Kancane. Yima.", "type": "template", "note": "" }, { - "SourceText": "Was your teen in a good mood when you tried to set the rule? It is best to set rules when the situation is calm. If you or your teen are tired or hungry, it is better to talk about rules at a later time.", - "text": "Ingabe ingane yahoo esebusheni bayo ibisesimweni esikahle lapho uzama ukubeka umthetho? Kungcono ukubeka imithetho lapho isimo sizolile. Uma wena noma ingane yakho ikhathele noma ilambile, kungcono ukukhuluma ngemithetho ngesinye isikhathi.", + "SourceText": "Before you say anything, slowly breathe in and out five times. It will calm you, and give you a chance to think.", + "text": "Ngaphambi kokuthi usho okuthile, phefumula kancane uphinde ukhiphe umoya izikhathi ezinhlanu. Kuzokwenza wehlise umoya, kukunikeze nethuba lokucabanga.", "type": "template", "note": "" }, { - "SourceText": "We were not able to stick to the rule.", - "text": "Siyahluleka ukunamathela emthethweni.", + "SourceText": "SHARE how you feel", + "text": "KHULUMA ngendlela ozizwa ngayo", "type": "template", "note": "" }, { - "SourceText": "The rule needs to be specific and realistic. Make sure to have a rule that can be kept easily, like having one meal together every Sunday instead of every night. Do you need to be more flexible about the rule?", - "text": "Umthetho kudingeka uqonde futhi ulandeleke. Qinisekisa ukuthi lomthetho kulula ukuwulandela, njengokuba nesidlo esisodwa enisidla ndawonye njalo ngeSonto esikhundleni sokwenza lokho nsuku zonke. Ingabe kudingeka ube nomthetho ovumelana nezimo?", + "SourceText": "This is hard. Many of us were told not to cry, or show our feelings to our children. But take a deep breath and calmly tell them how you feel. They will understand better, and also learn from you how to deal with stress.", + "text": "Lokhu kunzima. Iningi lethu latshelwa ukuthi lingakhali, noma libonise imizwa ezinganeni. Kodwa phefumula bese ngomoya ozolile ubatshele indlela ozizwa ngayo. Bazokuqonda kangcono, futhi bafunde kuwe ukubhekana nengcindezi.", "type": "template", "note": "" }, { - "SourceText": "Mother", - "text": "Umama", - "type": "global", - "note": "" - }, - { - "SourceText": "Father", - "text": "Ubaba", - "type": "global", - "note": "" - }, - { - "SourceText": "TikTok", - "text": "TikTok", - "type": "global", - "note": "" - }, - { - "SourceText": "WhatsApp", - "text": "WhatsApp", - "type": "global", - "note": "" - }, - { - "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", - "text": "Ukubuka le vidiyo kudinga i-inthanethi. Ukuze wonge amadatha akho, buka noma udawunilode le vidiyo uma usendaweni ene-WiFi.", - "type": "global", - "note": "" - }, - { - "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", - "text": "Ukuvakashela la mawebusayithi kudinga ube ne-inthanethi. Ukuze wonge amadatha akho, vakashela lamawebusayithi uma usendaweni ene-WiFi.", - "type": "global", - "note": "" - }, - { - "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", - "text": "Ukuthumela lo mlayezo kudinga i-inthanethi. Ukuze wonge amadatha akho, kumelwe uthumele lo mlayezo uma usendaweni ene-WiFi.", - "type": "global", - "note": "" - }, - { - "SourceText": "COVID", - "text": "I-COVID", - "type": "global", - "note": "" - }, - { - "SourceText": "Welcome and Self-Care", - "text": "Ukwamukelwa nokuzinakekela", - "type": "global", - "note": "" - }, - { - "SourceText": "Self-Care", - "text": "Ukuzinakekela", - "type": "global", - "note": "" - }, - { - "SourceText": "How to add self-care", - "text": "Indlela yokunezela ukuzinakekela", - "type": "global", - "note": "" - }, - { - "SourceText": "One-on-One Time", - "text": "Isikhathi Sokuthi Nibe Nobabili Ndawonye", - "type": "global", - "note": "" - }, - { - "SourceText": "How to spend one-on-one time", - "text": "Indlela yokuchitha isikhathi nobabili ", - "type": "global", - "note": "" - }, - { - "SourceText": "Praise", - "text": "Ncoma", - "type": "global", - "note": "" - }, - { - "SourceText": "How to praise", - "text": "Indlela yokuncoma", - "type": "global", - "note": "" - }, - { - "SourceText": "Positive Instructions", - "text": "Imiyalelo emihle", - "type": "global", - "note": "" - }, - { - "SourceText": "How to give positive instructions", - "text": "Indlela yokunikeza imiyalelo emihle", - "type": "global", - "note": "" - }, - { - "SourceText": "Managing Stress", - "text": "Ukulawula ingcindezi", - "type": "global", + "SourceText": "SHOW them you care", + "text": "BABONISE ukuthi uyabakhathalela", + "type": "template", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Indlela yokulawula ingcindezi", - "type": "global", + "SourceText": "This is also hard! Stress makes us focus on ourselves. But our teens need our support. Ask them how they feel. Listen to them and comfort them. Try a hug or say ‘I understand’. It can change everything.", + "text": "Nalokhu kunzima! Ingcindezi isenza sicabange ngathi kuphela. Kodwa izingane zethu zidinga ukuthi sizisekele. Babuze ukuthi bazizwa kanjani. Balalele futhi ubaduduze. Zama ukubanga noma ubatshele ukuthi ‘Ngiyaqonda’. Kungashintsha yonke into.", + "type": "template", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Isabelomali Somndeni", - "type": "global", + "SourceText": "SEEK the positive", + "text": "BHEKA okuhle", + "type": "template", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Indlela yokwenza isabelomali kanye nokonga", - "type": "global", + "SourceText": "Can you and your teen think about ideas that might help? Can you do something positive together to take your mind off the stress?", + "text": "Ungakwazi yini ukuthi wena kanye nengane yakho ukuthi nicabange ngamacebiso angasiza? Ningakwazi yini ukwenza okuthile okuhle ndawonye okususa ingqondo yakho kwingcindezi?", + "type": "template", "note": "" }, { - "SourceText": "Rules", - "text": "Imithetho", - "type": "global", + "SourceText": "If all else fails, breathe. You can do this.", + "text": "Uma konke kungaphumeleli, phefumula. Ungakwazi ukukwenza lokhu.", + "type": "template", "note": "" }, { - "SourceText": "How to create rules", - "text": "Indlela yokwenza imithetho", - "type": "global", + "SourceText": "Looking after yourself matters.", + "text": "Kubalulekile ukuzinakekela.", + "type": "template", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Imiphumela Eyethulwa Ngomoya Ozolile", - "type": "global", + "SourceText": "Great! So good to hear that you are in a good space today. What a wonderful feeling!", + "text": "Kuhle! Kuhle uzwa ukuthi kuhamba kahle namuhla. Umuzwa umuhle lowo!", + "type": "template", "note": "" }, { - "SourceText": "How to give calm consequences", - "text": "Indlela yokwethula imiphumela ngomoya ozolile", - "type": "global", + "SourceText": "Sometimes things go great. Sometimes they don't. And sometimes we don't quite know what to think... and that's totally okay! Remember that you are not alone.", + "text": "Ngezinye izikhathi izinto zihamba kahle. Ngezinye izikhathi azihambi kahle. Futhi ngezinye izikhathi asazi ukuthi sicabangeni.... kulungile lokho! Khumbula ukuthi awuwedwa.", + "type": "template", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ukuxazulula Inkinga", + "SourceText": "My Favourite Activities", + "text": "Imisebenzi Engiyithandayo", "type": "global", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Indlela yokuxazulula izinkinga", + "SourceText": "All Activities", + "text": "Yonke Imisebenzi", "type": "global", "note": "" }, { - "SourceText": "Teen Safety", - "text": "Ukuphepha Kwabantwana", + "SourceText": "Random Activity", + "text": "Imisebenzi Engahleliwe", "type": "global", "note": "" }, { - "SourceText": "How to keep your teen safe", - "text": "Indlela yokugcina umntwana ephephile", + "SourceText": "This Week's Activity", + "text": "Imisebenzi Yaleli Viki", "type": "global", "note": "" }, { - "SourceText": "Dealing with Crisis", - "text": "Ukubhekana Nezinkinga", + "SourceText": "Chat Together", + "text": "Xoxani Ndawonye", "type": "global", "note": "" }, { - "SourceText": "How to deal with crisis", - "text": "Indlela yokubhekana nezinkinga", + "SourceText": "Do Together", + "text": "Kwenzeni Ndawonye", "type": "global", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ukubungaza kanye Nezinyathelo Ezilandelayo", + "SourceText": "Your @global.parent_app Code", + "text": "Ikhodi Yakho Ye-@global.parent_app", "type": "global", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "How to support each other", - "text": "Indlela yokusekelana", + "SourceText": "Terms & Conditions", + "text": "Imigomo nemibandela", "type": "global", "note": "" }, { - "SourceText": "Home Practice", - "text": "Ukuprakthiza Ekhaya", + "SourceText": "Privacy Policy", + "text": "Inqubomgomo Yobumfihlo", "type": "global", "note": "" }, { - "SourceText": "Talk about @global.home_practice", - "text": "Khuluma nge @global.home_practice", - "type": "global", - "note": "The string @global.home_practice should not be translated." - }, - { - "SourceText": "Home Practice Review", - "text": "Ukubuyekeza Ongakuprakthiza Ekhaya", + "SourceText": "Real-world ideas", + "text": "Amacebo angempela", "type": "global", "note": "" }, { - "SourceText": "Let's talk about how your home practice went this week.", - "text": "Masikhulume ngendlela ukuprakthiza kwakho ekhaya okuhambe ngayo kuleli sonto.", + "SourceText": "Ideas", + "text": "Amacebo", "type": "global", "note": "" }, { - "SourceText": "In my group", - "text": "Eqenjini lami", + "SourceText": "Ideas from other families...", + "text": "Amacebiso avela kweminye imindeni...", "type": "global", "note": "" }, { - "SourceText": "By myself", - "text": "Ngedwa", + "SourceText": "Challenges & solutions", + "text": "Izinselelo nezixazululo", "type": "global", "note": "" }, { - "SourceText": "awesome parent", - "text": "mzali othandekayo", + "SourceText": "Submit", + "text": "Hambisa", "type": "global", "note": "" }, { - "SourceText": "friends", - "text": "abangani", + "SourceText": "Find out more", + "text": "Thola okwengeziwe", "type": "global", "note": "" }, { - "SourceText": "New workshop ready tomorrow!", - "text": "Ukuqeqeshwa kwakho okusha kuzolunga kusasa!", + "SourceText": "Show me how", + "text": "Ngibonise ukuthi kanjani", "type": "global", "note": "" }, { - "SourceText": "New workshop!", - "text": "Ukuqeqeshwa okusha!", + "SourceText": "Tell me more!", + "text": "Ngitshele okwengeziwe!", "type": "global", "note": "" }, { - "SourceText": "Workshop Reminder", - "text": "Isikhumbuzo Sokuqeqeshwa", + "SourceText": "Let's go!", + "text": "Asambeni!", "type": "global", "note": "" }, { - "SourceText": "Nice progress!", - "text": "Inqubekela phambili enhle!", + "SourceText": "Check it out!", + "text": "Hlola!", "type": "global", "note": "" }, { - "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", - "text": "Khumbula ukuhlala phansi uphumule namuhla - ukuzinakekela kuyikhono elibalulekile njengomzali.", + "SourceText": "Done", + "text": "Ngiqedile", "type": "global", "note": "" }, { - "SourceText": "You are appreciated!", - "text": "Uyathandwa!", + "SourceText": "Next", + "text": "Okulandelayo", "type": "global", "note": "" }, { - "SourceText": "Something Fun", - "text": "Okuthile Okujabulisayo", + "SourceText": "Previous", + "text": "Okwedlule", "type": "global", "note": "" }, { - "SourceText": "Here is a fun activity to do with your teen!", - "text": "Nayi imisebenzi emnandi ongayenza nengane eyevile eminyakeni eyishumi nambili!", + "SourceText": "Save", + "text": "Londoloza", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_points this week", - "text": "I-@global.parent_points yakho kuleli sonto", + "SourceText": "Start", + "text": "Qala", "type": "global", - "note": "The string @global.parent_points should not be translated." + "note": "" }, { - "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", - "text": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points!", + "SourceText": "Skip", + "text": "Dlula", "type": "global", - "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" + "note": "" }, { - "SourceText": "Home Practice Reminder", - "text": "Isikhumbuzo Sokuphrakthiza Ekhaya", + "SourceText": "Continue", + "text": "Qhubeka", "type": "global", "note": "" }, { - "SourceText": "To solve this challenge, I will try to:", - "text": "Ukuxazulula le nkinga, ngizozama uku:", + "SourceText": "Finish with a song", + "text": "Phetha ngengoma", "type": "global", "note": "" }, { - "SourceText": "Do you want to try one of the following things?", - "text": "Ingabe ufuna ukuzama okukodwa kulokhu okulandelayo?", + "SourceText": "Goodbye!", + "text": "Uhambe kahle!", "type": "global", "note": "" }, { - "SourceText": "My challenge is not listed here.", - "text": "Inkinga yami ayibaliwe lapha.", + "SourceText": "No gadget use the next day", + "text": "Azikho izinto zobuchwepheshe ezizosetshenziswa kusasa", "type": "global", "note": "" }, { - "SourceText": "ParentApp", - "text": "I-ParentApp", + "SourceText": "Take 5 minutes pause in separate part of the room", + "text": "Thatha imizuzu emihlanu yekhefu elifushane endaweni ehlukile yekamelo", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshops", - "text": "Ukuqeqeshwa Kwamasonto Onke", + "SourceText": "Write a letter of apology", + "text": "Bhala incwadi yokuxolisa", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop", - "text": "Ukuqeqeshwa Kwamasonto Onke", + "SourceText": "Cannot see friends the next day", + "text": "Awuvunyelwe ukubona abangane bakho kusasa", "type": "global", "note": "" }, { - "SourceText": "Weekly Workshop Options", - "text": "Ongakukhetha Kokuqeqeshwa Ngeviki", + "SourceText": "Cannot play with phone after dinner (or next hour)", + "text": "Avuvunyelwe ukudlala nocingo lwakho ngemva kwesidlo sakusihlwa (noma ehoreni elilandelayo)", "type": "global", "note": "" }, { - "SourceText": "ParentPoints", - "text": "Amaphuzu Omzali", + "SourceText": "Extra time with friends on weekend (1hr)", + "text": "Isikhathi esengeziwe nabangane ngempelasonto (ihora eli-1)", "type": "global", "note": "" }, { - "SourceText": "ParentPoint", - "text": "Iphuzu Lomzali", + "SourceText": "Cooking teen’s favourite meal", + "text": "Ukupheka ukudla okuthandwa ingane yami ", "type": "global", "note": "" }, { - "SourceText": "Parent Library", - "text": "Umtapo Wolwazi Womzali", + "SourceText": "Extra time with phone after dinner (30 min)", + "text": "Isikhathi esengeziwe sokudlala ngocingo ngemuva kwesidlo sakusihlwa (30 imiz.)", "type": "global", "note": "" }, { - "SourceText": "In-Week Messages", - "text": "Imiyalezo Yaphakathi Nesonto", + "SourceText": "Watching teen’s T.V. show together", + "text": "Ukubuka ndawonye uhlelo lwe-TV oluthandwa ingane yami", "type": "global", "note": "" }, { - "SourceText": "Real-world ideas", - "text": "Amacebo angempela", + "SourceText": "Extra one-on-one time on Sunday (30 min)", + "text": "Ukuba nesikhathi esengeziwe sokuba nodwa ngeSonto (30 imiz.)", "type": "global", "note": "" }, { - "SourceText": "Ideas", - "text": "Amacebo", + "SourceText": "Take a deep breath and pause before responding", + "text": "Donsa umoya kakhulu ngaphambi kokuthi uphendule", "type": "global", "note": "" }, { - "SourceText": "Ideas from other families...", - "text": "Amacebiso avela kweminye imindeni...", + "SourceText": "Listen to your teen", + "text": "Lalela ingane yakho", "type": "global", "note": "" }, { - "SourceText": "Challenges & solutions", - "text": "Izinselelo nezixazululo", + "SourceText": "Praise your teen for sharing", + "text": "Ncoma ingane yakho ngokukhuluma", "type": "global", "note": "" }, { - "SourceText": "Submit", - "text": "Hambisa", + "SourceText": "Use problem solving skills", + "text": "Sebenzisa amakhono okuxazulula inkinga", "type": "global", "note": "" }, { - "SourceText": "Find out more", - "text": "Thola okwengeziwe", + "SourceText": "Work out where you can get help", + "text": "Thola lapho ungathola khona usizo", "type": "global", "note": "" }, { - "SourceText": "Show me how", - "text": "Ngibonise ukuthi kanjani", + "SourceText": "Watching this video requires internet access. To limit data use, watch or download this video when on WiFi.", + "text": "Ukubuka le vidiyo kudinga i-inthanethi. Ukuze wonge amadatha akho, buka noma udawunilode le vidiyo uma usendaweni ene-WiFi.", "type": "global", "note": "" }, { - "SourceText": "Tell me more!", - "text": "Ngitshele okwengeziwe!", + "SourceText": "Visiting these websites requires internet access. To limit data use, visit these websites when on WiFi.", + "text": "Ukuvakashela la mawebusayithi kudinga ube ne-inthanethi. Ukuze wonge amadatha akho, vakashela lamawebusayithi uma usendaweni ene-WiFi.", "type": "global", "note": "" }, { - "SourceText": "Let's go!", - "text": "Asambeni!", + "SourceText": "Sending this message requires internet access. To limit data use, send this message when on WiFi.", + "text": "Ukuthumela lo mlayezo kudinga i-inthanethi. Ukuze wonge amadatha akho, kumelwe uthumele lo mlayezo uma usendaweni ene-WiFi.", "type": "global", "note": "" }, { - "SourceText": "Check it out!", - "text": "Hlola!", + "SourceText": "Severe illness or death of a friend or family member", + "text": "Ukugula okubi noma ukufa komngane noma ilungu lomndeni", "type": "global", "note": "" }, { - "SourceText": "Done", - "text": "Ngiqedile", + "SourceText": "Robbery", + "text": "Ukubanjwa inkunzi", "type": "global", "note": "" }, { - "SourceText": "Next", - "text": "Okulandelayo", + "SourceText": "Flooding", + "text": "Izikhukhula", "type": "global", "note": "" }, - { - "SourceText": "Previous", - "text": "Okwedlule", + { + "SourceText": "Political violence", + "text": "Udlame lwezepolotiki", "type": "global", "note": "" }, { - "SourceText": "Save", - "text": "Londoloza", + "SourceText": "Losing my job", + "text": "Ukulahlekelwa umsebenzi", "type": "global", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "Pandemic (COVID-19)", + "text": "Ubhubhane (COVID-19)", "type": "global", "note": "" }, { - "SourceText": "Skip", - "text": "Dlula", + "SourceText": "ParentApp", + "text": "I-ParentApp", "type": "global", "note": "" }, { - "SourceText": "Continue", - "text": "Qhubeka", + "SourceText": "Weekly Workshops", + "text": "Ukuqeqeshwa Kwamasonto Onke", "type": "global", "note": "" }, { - "SourceText": "Finish with a song", - "text": "Phetha ngengoma", + "SourceText": "Weekly Workshop", + "text": "Ukuqeqeshwa Kwamasonto Onke", "type": "global", "note": "" }, { - "SourceText": "Goodbye!", - "text": "Uhambe kahle!", + "SourceText": "Weekly Workshop Options", + "text": "Ongakukhetha Kokuqeqeshwa Ngeviki", "type": "global", "note": "" }, { - "SourceText": "Your @global.parent_app Code", - "text": "Ikhodi Yakho Ye-@global.parent_app", + "SourceText": "ParentPoints", + "text": "Amaphuzu Omzali", "type": "global", - "note": "The string @global.parent_app should not be translated." + "note": "" }, { - "SourceText": "Terms & Conditions", - "text": "Imigomo nemibandela", + "SourceText": "ParentPoint", + "text": "Iphuzu Lomzali", "type": "global", "note": "" }, { - "SourceText": "Privacy Policy", - "text": "Inqubomgomo Yobumfihlo", + "SourceText": "Parent Library", + "text": "Umtapo Wolwazi Womzali", "type": "global", "note": "" }, { - "SourceText": "Make me smile", - "text": "Ngenze ngimamatheke", + "SourceText": "In-Week Messages", + "text": "Imiyalezo Yaphakathi Nesonto", "type": "global", "note": "" }, { - "SourceText": "Get me going", - "text": "Ngenze ngiqhubeke", + "SourceText": "To solve this challenge, I will try to:", + "text": "Ukuxazulula le nkinga, ngizozama uku:", "type": "global", "note": "" }, { - "SourceText": "My Favourite Relaxes", - "text": "Ukuphumula Engikuthandayo", + "SourceText": "Do you want to try one of the following things?", + "text": "Ingabe ufuna ukuzama okukodwa kulokhu okulandelayo?", "type": "global", "note": "" }, { - "SourceText": "All Relaxes", - "text": "Konke Ukuphumula", + "SourceText": "My challenge is not listed here.", + "text": "Inkinga yami ayibaliwe lapha.", "type": "global", "note": "" }, { - "SourceText": "Random Relax", - "text": "Ukuphumula Okungahleliwe", + "SourceText": "New workshop ready tomorrow!", + "text": "Ukuqeqeshwa kwakho okusha kuzolunga kusasa!", "type": "global", "note": "" }, { - "SourceText": "This Week's Relax", - "text": "Ukuphumula Kwaleli Viki", + "SourceText": "New workshop!", + "text": "Ukuqeqeshwa okusha!", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (1-2 minutes)", - "text": "Lalela futhi Uphumule (Imizuzu engu-1-2)", + "SourceText": "Workshop Reminder", + "text": "Isikhumbuzo Sokuqeqeshwa", "type": "global", "note": "" }, { - "SourceText": "Listen & Relax (3-5 minutes)", - "text": "Lalela futhi Uphumule (Imizuzu engu-3-5)", + "SourceText": "Nice progress!", + "text": "Inqubekela phambili enhle!", "type": "global", "note": "" }, { - "SourceText": "Do & Relax (5-10 minutes)", - "text": "Yenza futhi Uphumule (Imizuzu engu-5-10)", + "SourceText": "Remember to sit down and relax today - taking care of yourself is an important parenting skill.", + "text": "Khumbula ukuhlala phansi uphumule namuhla - ukuzinakekela kuyikhono elibalulekile njengomzali.", "type": "global", "note": "" }, { - "SourceText": "My Favourite Activities", - "text": "Imisebenzi Engiyithandayo", + "SourceText": "You are appreciated!", + "text": "Uyathandwa!", "type": "global", "note": "" }, { - "SourceText": "All Activities", - "text": "Yonke Imisebenzi", + "SourceText": "Something Fun", + "text": "Okuthile Okujabulisayo", "type": "global", "note": "" }, { - "SourceText": "Random Activity", - "text": "Imisebenzi Engahleliwe", + "SourceText": "Here is a fun activity to do with your teen!", + "text": "Nayi imisebenzi emnandi ongayenza nengane eyevile eminyakeni eyishumi nambili!", "type": "global", "note": "" }, { - "SourceText": "This Week's Activity", - "text": "Imisebenzi Yaleli Viki", + "SourceText": "Your @global.parent_points this week", + "text": "I-@global.parent_points yakho kuleli sonto", "type": "global", - "note": "" + "note": "The string @global.parent_points should not be translated." }, { - "SourceText": "Chat Together", - "text": "Xoxani Ndawonye", + "SourceText": "Hi @fields.user_name! Thank you for using @global.parent_app and committing to your parenting. \n\nRemember to tap your @global.parent_points!", + "text": "Sawubona @fields.user_name! Siyakubonga ngokusebenzisa i-@global.parent_app nangokuzibophezela ekubeni umzali. \n\nUkhumbule ukucofa ku i-@global.parent_points!", "type": "global", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name!\n@global.parent_app\n@global.parent_points!" }, { - "SourceText": "Do Together", - "text": "Kwenzeni Ndawonye", + "SourceText": "Home Practice Reminder", + "text": "Isikhumbuzo Sokuphrakthiza Ekhaya", "type": "global", "note": "" }, { - "SourceText": "Tap and type", - "text": "Chofoza bese uyabhala", + "SourceText": "COVID", + "text": "I-COVID", "type": "global", "note": "" }, { - "SourceText": "Tap and choose", - "text": "Chofoza bese uyakhetha", + "SourceText": "Make me smile", + "text": "Ngenze ngimamatheke", "type": "global", "note": "" }, { - "SourceText": "Type your own", - "text": "Bhala okwakho", + "SourceText": "Get me going", + "text": "Ngenze ngiqhubeke", "type": "global", "note": "" }, { - "SourceText": "I've understood this. Don't show me this message again.", - "text": "Ngiyakuqonda lokhu. Ungasangibonisi lo myalezo.", + "SourceText": "My Favourite Relaxes", + "text": "Ukuphumula Engikuthandayo", "type": "global", "note": "" }, { - "SourceText": "Walk to the shops", - "text": "Ukuhamba niye ezitolo", + "SourceText": "All Relaxes", + "text": "Konke Ukuphumula", "type": "global", "note": "" }, { - "SourceText": "Get water together", - "text": "Ukuyokha amanzi ndawonye", + "SourceText": "Random Relax", + "text": "Ukuphumula Okungahleliwe", "type": "global", "note": "" }, { - "SourceText": "Do a chore together", - "text": "Yenzani umsebenzi wasendlini ndawonye", + "SourceText": "This Week's Relax", + "text": "Ukuphumula Kwaleli Viki", "type": "global", "note": "" }, { - "SourceText": "Prepare dinner", - "text": "Lungisa isidlo sakusihlwa", + "SourceText": "Listen & Relax (1-2 minutes)", + "text": "Lalela futhi Uphumule (Imizuzu engu-1-2)", "type": "global", "note": "" }, { - "SourceText": "Eat breakfast/lunch/dinner", - "text": "Yidla isidlo sasekuseni/emini/kusihlwa", + "SourceText": "Listen & Relax (3-5 minutes)", + "text": "Lalela futhi Uphumule (Imizuzu engu-3-5)", "type": "global", "note": "" }, { - "SourceText": "Have tea after school", - "text": "Phuza itiye ngemva kwesikole", + "SourceText": "Do & Relax (5-10 minutes)", + "text": "Yenza futhi Uphumule (Imizuzu engu-5-10)", "type": "global", "note": "" }, { - "SourceText": "Watch a T.V. show", - "text": "Bukela umdlalo we-TV", + "SourceText": "At home", + "text": "Ekhaya", "type": "global", "note": "" }, { - "SourceText": "Review homework", - "text": "Buyekeza umsebenzi wasekhaya", + "SourceText": "Buy things we can sell", + "text": "Ukuthenga izinto esingazithengisa", "type": "global", "note": "" }, { - "SourceText": "Chat before bedtime", - "text": "Xoxani ngaphambi kokulala", + "SourceText": "At a bank", + "text": "Ebhange", "type": "global", "note": "" }, { - "SourceText": "Play a game/sport", - "text": "Dlalani umdlalo", + "SourceText": "In a savings group", + "text": "Eqenjini lokonga", "type": "global", "note": "" }, @@ -9330,152 +8712,134 @@ "note": "" }, { - "SourceText": "Severe illness or death of a friend or family member", - "text": "Ukugula okubi noma ukufa komngane noma ilungu lomndeni", - "type": "global", - "note": "" - }, - { - "SourceText": "Robbery", - "text": "Ukubanjwa inkunzi", - "type": "global", - "note": "" - }, - { - "SourceText": "Flooding", - "text": "Izikhukhula", - "type": "global", - "note": "" - }, - { - "SourceText": "Political violence", - "text": "Udlame lwezepolotiki", + "SourceText": "Walk to the shops", + "text": "Ukuhamba niye ezitolo", "type": "global", "note": "" }, { - "SourceText": "Losing my job", - "text": "Ukulahlekelwa umsebenzi", + "SourceText": "Get water together", + "text": "Ukuyokha amanzi ndawonye", "type": "global", "note": "" }, { - "SourceText": "Pandemic (COVID-19)", - "text": "Ubhubhane (COVID-19)", + "SourceText": "Do a chore together", + "text": "Yenzani umsebenzi wasendlini ndawonye", "type": "global", "note": "" }, { - "SourceText": "At home", - "text": "Ekhaya", + "SourceText": "Prepare dinner", + "text": "Lungisa isidlo sakusihlwa", "type": "global", "note": "" }, { - "SourceText": "Buy things we can sell", - "text": "Ukuthenga izinto esingazithengisa", + "SourceText": "Eat breakfast/lunch/dinner", + "text": "Yidla isidlo sasekuseni/emini/kusihlwa", "type": "global", "note": "" }, { - "SourceText": "At a bank", - "text": "Ebhange", + "SourceText": "Have tea after school", + "text": "Phuza itiye ngemva kwesikole", "type": "global", "note": "" }, { - "SourceText": "In a savings group", - "text": "Eqenjini lokonga", + "SourceText": "Watch a T.V. show", + "text": "Bukela umdlalo we-TV", "type": "global", "note": "" }, { - "SourceText": "No gadget use the next day", - "text": "Azikho izinto zobuchwepheshe ezizosetshenziswa kusasa", + "SourceText": "Review homework", + "text": "Buyekeza umsebenzi wasekhaya", "type": "global", "note": "" }, { - "SourceText": "Take 5 minutes pause in separate part of the room", - "text": "Thatha imizuzu emihlanu yekhefu elifushane endaweni ehlukile yekamelo", + "SourceText": "Chat before bedtime", + "text": "Xoxani ngaphambi kokulala", "type": "global", "note": "" }, { - "SourceText": "Write a letter of apology", - "text": "Bhala incwadi yokuxolisa", + "SourceText": "Play a game/sport", + "text": "Dlalani umdlalo", "type": "global", "note": "" }, { - "SourceText": "Cannot see friends the next day", - "text": "Awuvunyelwe ukubona abangane bakho kusasa", + "SourceText": "Tap and type", + "text": "Chofoza bese uyabhala", "type": "global", "note": "" }, { - "SourceText": "Cannot play with phone after dinner (or next hour)", - "text": "Avuvunyelwe ukudlala nocingo lwakho ngemva kwesidlo sakusihlwa (noma ehoreni elilandelayo)", + "SourceText": "Tap and choose", + "text": "Chofoza bese uyakhetha", "type": "global", "note": "" }, { - "SourceText": "Extra time with friends on weekend (1hr)", - "text": "Isikhathi esengeziwe nabangane ngempelasonto (ihora eli-1)", + "SourceText": "Type your own", + "text": "Bhala okwakho", "type": "global", "note": "" }, { - "SourceText": "Cooking teen’s favourite meal", - "text": "Ukupheka ukudla okuthandwa ingane yami ", + "SourceText": "I've understood this. Don't show me this message again.", + "text": "Ngiyakuqonda lokhu. Ungasangibonisi lo myalezo.", "type": "global", "note": "" }, { - "SourceText": "Extra time with phone after dinner (30 min)", - "text": "Isikhathi esengeziwe sokudlala ngocingo ngemuva kwesidlo sakusihlwa (30 imiz.)", + "SourceText": "Home Practice", + "text": "Ukuprakthiza Ekhaya", "type": "global", "note": "" }, { - "SourceText": "Watching teen’s T.V. show together", - "text": "Ukubuka ndawonye uhlelo lwe-TV oluthandwa ingane yami", + "SourceText": "Talk about @global.home_practice", + "text": "Khuluma nge @global.home_practice", "type": "global", - "note": "" + "note": "The string @global.home_practice should not be translated." }, { - "SourceText": "Extra one-on-one time on Sunday (30 min)", - "text": "Ukuba nesikhathi esengeziwe sokuba nodwa ngeSonto (30 imiz.)", + "SourceText": "Home Practice Review", + "text": "Ukubuyekeza Ongakuprakthiza Ekhaya", "type": "global", "note": "" }, { - "SourceText": "Take a deep breath and pause before responding", - "text": "Donsa umoya kakhulu ngaphambi kokuthi uphendule", + "SourceText": "Let's talk about how your home practice went this week.", + "text": "Masikhulume ngendlela ukuprakthiza kwakho ekhaya okuhambe ngayo kuleli sonto.", "type": "global", "note": "" }, - { - "SourceText": "Listen to your teen", - "text": "Lalela ingane yakho", + { + "SourceText": "In my group", + "text": "Eqenjini lami", "type": "global", "note": "" }, { - "SourceText": "Praise your teen for sharing", - "text": "Ncoma ingane yakho ngokukhuluma", + "SourceText": "By myself", + "text": "Ngedwa", "type": "global", "note": "" }, { - "SourceText": "Use problem solving skills", - "text": "Sebenzisa amakhono okuxazulula inkinga", + "SourceText": "awesome parent", + "text": "mzali othandekayo", "type": "global", "note": "" }, { - "SourceText": "Work out where you can get help", - "text": "Thola lapho ungathola khona usizo", + "SourceText": "friends", + "text": "abangani", "type": "global", "note": "" }, @@ -9485,42 +8849,6 @@ "type": "tour", "note": "The string @global.parent_app should not be translated." }, - { - "SourceText": "

                                                                                                                                                                                  Welcome to @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  You deserve to feel good, and have happier family relationships.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app will support you and your family in three ways:

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Siyakwamukela ku @global.parent_app.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ufanelwe ukuzizwa ujabule, nokuba nobuhlobo obujabulisayo nomndeni.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  @global.parent_app izokusekela wena nomndeni wakho ngezindlela ezintathu:

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_app.

                                                                                                                                                                                  \n

                                                                                                                                                                                  @global.parent_app" - }, - { - "SourceText": "

                                                                                                                                                                                  This big button takes you to your @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Once per week a new workshop will be ready for you - every time focusing on a different a parenting skill. Press it to start your first workshop!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Le nkinobho enkulu izokuyisa ku @global.weekly_workshops

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Kanye ngeviki ukuqeqeshwa okusha kuzobe kukulungele- ukugxila emakhonweni ahlukahlukene okuba umzali. Chofoza ukuze uqale ukuqeqeshwa kwakho kokuqala!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshops should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  The round button appears when a new @global.weekly_workshop is ready for you to do.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Inkinobho eyindilinga ivela uma @global.weekly_workshop okusha sekutholakala kuwe.

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.weekly_workshop should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  Press this big button to get you to your @global.parent_points screen.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Track your success in self-care and parenting.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  See your progress.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Celebrate your daily achievements!

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Cindezela inkinobho enkulu ukuze ikuse ku @global.parent_points esikrinini sakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona impumelelo yakho yokuzinakekela nokuba umzali.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Bona intuthuko yakho.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Jabulela okufinyelelayo nsuku zonke!

                                                                                                                                                                                  ", - "type": "tour", - "note": "The string @global.parent_points should not be translated." - }, - { - "SourceText": "

                                                                                                                                                                                  This button takes you to the @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Stacked with the resources you need whenever you want.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Instant access to help sections with @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Extra information and local resources.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Le nkinobo ikuyisa ku- @global.parent_centre

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Egwele izinsiza ozidingayo nanini uma uzifuna

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ukufikela ngokushesha kwizigaba zosizo ku- @data.parent_centre.essential_tools for each skill.

                                                                                                                                                                                  \n\n

                                                                                                                                                                                  Ulwazi olwengeziwe nezinsiza zomphakathi

                                                                                                                                                                                  ", - "type": "tour", - "note": "The following strings should not be translated:\n@global.parent_centre\n@data.parent_centre.essential_tools" - }, - { - "SourceText": "

                                                                                                                                                                                  However you start, just the fact you are here shows you care.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Ungaqala noma kanjani, iqiniso ukuthi ulapha lokho kubonisa ukuthi uyakhathalela.

                                                                                                                                                                                  ", - "type": "tour", - "note": "" - }, { "SourceText": "Go to the @global.weekly_workshops", "text": "Iya ku @global.weekly_workshops", @@ -9582,674 +8910,596 @@ "note": "" }, { - "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", - "text": "Leliviki lingawe. Ziphathe kahle. Kukufanele!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", - "text": "Qala isifundo esha kusasa ku- @global.parent_app. Uzobona imiphumela emihle kakhulu!", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", - "text": "Khumbula ukutshela abalingane bakho be- @global.parent_app ngale app. Ningaqala ukwenza i- @global.parent_app ndawonye kusasa!", - "type": "data_list", - "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" - }, - { - "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Sawubona @fields.user_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" - }, - { - "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", - "text": "Sawubona @fields.group_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", - "type": "data_list", - "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" - }, - { - "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", - "text": "Usuzikhandlile ekutheni ube umzali oqotho. Uyathandwa futhi uyabongwa!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", - "text": "Siyabonga ngokuzinikela ekukhuliseni abantwana.\n\nIkulungele i-@data.workshop.w_1on1.in_text_title yakho!", - "type": "data_list", - "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." - }, - { - "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", - "text": "Ukuchitha isikhati nomntwana wakho kuyasiza ekwakheni ukuthembana.\n\nUkuze ubone imiphumela emihle kakhulu, qhubeka nohambo lwakho ne- @global.parent_app.", - "type": "data_list", - "note": "The string @global.parent_app should not be translated." - }, - { - "SourceText": "Have you spent time with your teen already?", - "text": "Ingabe ususichithile isikhathi nengane yakho eyevile eminyakeni eyishumi nambili?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Have you talked with your teen about your family budget yet?", - "text": "Ingabe usukhulumile nengane yakho eyevile eminyakeni eyishumi nambili ngolwabiwo mali lomndeni wakho?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Have you talked with your teen about safety measures?", - "text": "Ingabe usukhulumile nengane yakho ngezindlela zokuphepha?", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Welcome to ParentApp. Click here to start your journey!", - "text": "Siyakwamukela kuParentApp. Chofoza lapha ukuze uqale uhambo lwakho!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your ParentApp journey!", - "text": "Sithembe ukuthi uzizwa KAHLE. Ukuba umzali kunzima, kodwa usenesikhathi sokuqala kabusha nomntwana wakho. Sekuyatholakala ukuqeqeshwa kwakho kokuqala kokuba umzali! Chofoza lapha ukuze uqale uhambo lwakho lwe ParentApp!", - "type": "data_list", - "note": "" - }, - { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage parenting stress.", - "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba wumzali - sebenzisa i-app yabazali ukuze uzisakale ukulawula ingcindezi.", + "SourceText": "Reflect on the positive", + "text": "Cabanga ngokuhle", "type": "data_list", "note": "" }, { - "SourceText": "Hello again! It’s never too late to use ParentApp and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", - "text": "Sawubona futhi! Awukaphelewa isikhathi ukuthi usebenzise i-ParentApp bese uthola ukusekelwa okuqhubekayo njengo umzali. Kungani ungakuzami lapho usendleleni eya emsebenzini noma uma upheka? Izigidi zabazali ziwathola ewusizo amathuluzi ethu.", + "SourceText": "Check-in chat", + "text": "Hlola imilayezo", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to help you manage your teen's behaviour.", - "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuze ikusize ulawule indlela umntwana wakho aziphatha ngayo.", + "SourceText": "Dream Travel", + "text": "Iphupho Lohambo", "type": "data_list", "note": "" }, { - "SourceText": "Hi! Is everything OK? It seems you haven’t opened ParentApp lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", - "text": "Sawubona! Ingabe konke kuhamba KAHLE? Kubonakala sengathi muva nje awuyivulanga i-ParentApp. Kungani ungayizami? Izigidi zabazali zithole la mathuluzi ewusizo. Sisekhona lapha ukuba sikusekele.", + "SourceText": "Famous Party", + "text": "Umcimbi Odumile", "type": "data_list", "note": "" }, { - "SourceText": "ParentApp misses you! There is a lot to explore. We are still here to support you.", - "text": "I-ParentApp iyakukhumbula! Kuningi ongakuhlola. Sisekhona lapha ukuba sikusekele.", + "SourceText": "Two truths, one lie", + "text": "Amaqiniso amabili, amanga awodwa", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to prepare your teen for success in life.", - "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuze ulungiselele ingane yakho ukuthi iphumelele empilweni.", + "SourceText": "Time Machine", + "text": "Umshini Wesikhathi", "type": "data_list", "note": "" }, { - "SourceText": "Hope you are feeling OK. We know parenting is hard - use ParentApp to bond with your teen again!", - "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-ParentApp ukuqinisa ubudlelwane nengane yakho!", + "SourceText": "Superpowers", + "text": "Amandla angaphezu kwavamile", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in ParentApp.", - "text": "Sawubona mzali othandekayo, khumbula ukuzinakekela - kuzosiza wena nomndeni wakho! Thola amacebiso nokuningi kwi ParentApp.", + "SourceText": "Just a friendly chat", + "text": "Izingxoxo zobungane", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in ParentApp.", - "text": "Sawubona mzali othandekayo! Khumbula, ungathola amacebiso amaningi awusizo kwi ParentApp.", + "SourceText": "The Interrupter", + "text": "Umphazamisi", "type": "data_list", "note": "" }, { - "SourceText": "New message from PLH", - "text": "Umlayezo omusha ovela ku-PLH", + "SourceText": "Three options", + "text": "Izindlela ezintathu", "type": "data_list", "note": "" }, { - "SourceText": "Hi great parent! ParentApp is here to support you. Check it out now!", - "text": "Sawubona mzali othandekayo! iParentApp ikhona ukukusekela. Ibheke manje!", + "SourceText": "Yes, No or Maybe", + "text": "Yebo, Cha noma Mhlawumbe", "type": "data_list", "note": "" }, { - "SourceText": "Start", - "text": "Qala", + "SourceText": "Memory game - \"On Saturday...\"", + "text": "Umdlalo wegqondo - “NgoMgqibelo...”", "type": "data_list", "note": "" }, { - "SourceText": "Continue", - "text": "Qhubeka", + "SourceText": "Make up a story", + "text": "Qamba indatshana", "type": "data_list", "note": "" }, { - "SourceText": "Welcome and Self-Care", - "text": "Ukwamukelwa Nokuzinakekela", + "SourceText": "Co-chef", + "text": "Umsizi wompheki", "type": "data_list", "note": "" }, { - "SourceText": "**Welcome and Self-Care** workshop", - "text": "Ukuqeqeshelwa **Ukwamukela kanye Nokuzinakekela**", + "SourceText": "Dance moves", + "text": "Umdanso", "type": "data_list", "note": "" }, { - "SourceText": "Self-Care", - "text": "Ukuzinakekela", + "SourceText": "Mirror", + "text": "Isibuko", "type": "data_list", "note": "" }, { - "SourceText": "How to do self-care", - "text": "Indlela yokuzinakekela", + "SourceText": "What's new?", + "text": "Yini entsha?", "type": "data_list", "note": "" }, { - "SourceText": "One-on-One Time", - "text": "Isikhathi Sokuthi Nibe Nobabili Ndawonye", + "SourceText": "Get active!", + "text": "Yiba matasa!", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-One Time** workshop", - "text": "Ukuqeqeshelwa **Isikhathi Sokuthi Nibe Babili**", + "SourceText": "Name that tune", + "text": "Qamba le ngoma", "type": "data_list", "note": "" }, { - "SourceText": "How to spend one-on-one time", - "text": "Indlela yokuchitha isikhathi ninobabili", + "SourceText": "Pass the snap", + "text": "Dlulisa i-snap", "type": "data_list", "note": "" }, { - "SourceText": "Praise", - "text": "Ncoma", + "SourceText": "Family workout", + "text": "Ukuzivocavoca komndeni", "type": "data_list", "note": "" }, { - "SourceText": "**Praise** workshop", - "text": "Ukuqeqeshelwa **Ukuncoma**", + "SourceText": "Make housework fun", + "text": "Ukwenza umsebenzi wasekhaya ngendlela emnandi", "type": "data_list", "note": "" }, { - "SourceText": "How to praise", - "text": "Indlela yokuncoma", + "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", + "text": "Imisebenzi yasekhaya ayimnandi neze..... noma imnandi? ungayenza samdlalo!", "type": "data_list", "note": "" }, { - "SourceText": "Positive Instructions", - "text": "Imiyalelo emihle", + "SourceText": "What are you doing?", + "text": "Wenzani?", "type": "data_list", "note": "" }, { - "SourceText": "**Positive Instructions** workshop", - "text": "Ukuqeqeshelwa **Imiyalelo emihle**", + "SourceText": "Here is a fun game you can do with your family!", + "text": "Nawu umdlalo omnandi ongawudlala nomndeni wakho!", "type": "data_list", "note": "" }, { - "SourceText": "How to give positive instructions", - "text": "Indlela yokunikeza imiyalelo emihle", + "SourceText": "Crazy chicken", + "text": "Inkukhu ehlanyayo", "type": "data_list", "note": "" }, { - "SourceText": "Managing Stress", - "text": "Ukulawula ingcindezi", + "SourceText": "Help yourself cope", + "text": "Zisize ubhekane nakho", "type": "data_list", "note": "" }, { - "SourceText": "**Managing Stress** workshop", - "text": "Ukuqeqeshelwa **Ukulawula Ingcindezi**", + "SourceText": "Help your teen cope", + "text": "Siza umntwana wakho ukuthi akwazi ukumelana nesimo", "type": "data_list", "note": "" }, { - "SourceText": "How to manage stress", - "text": "Indlela yokulawula ingcindezi", + "SourceText": "Practical steps", + "text": "Izinyathelo ezisebenzayo", "type": "data_list", "note": "" }, { - "SourceText": "Family Budgets", - "text": "Isabelomali Somndeni", + "SourceText": "How to talk to my teen", + "text": "Ngikhulume kanjani nomntwana wami", "type": "data_list", "note": "" }, { - "SourceText": "**Family Budgets** workshop", - "text": "Ukuqeqeshelwa **Isabelomali Somndeni**", + "SourceText": "Steps to deal with news", + "text": "Izinyathelo zokumelana nezindaba", "type": "data_list", "note": "" }, { - "SourceText": "How to budget & save", - "text": "Indlela yokwenza isabelomali kanye nokonga", + "SourceText": "How can I help my teen choose well?", + "text": "Ngingamusiza kanjani umntwana wami ukuthi akhethe kahle?", "type": "data_list", "note": "" }, { - "SourceText": "Rules", - "text": "Imithetho", + "SourceText": "What influences teen decisions?", + "text": "Yini enomthelela kwizinqumo zomntwana?", "type": "data_list", "note": "" }, { - "SourceText": "**Rules** workshop", - "text": "Ukuqeqeshelwa **Imithetho**", + "SourceText": "How does my teen feel?", + "text": "Uzizwa kanjani umntwana wami?", "type": "data_list", "note": "" }, { - "SourceText": "How to create rules", - "text": "Indlela yokubeka imithetho", + "SourceText": "Changing negative to positive", + "text": "Ukushintsha okubi ukuse kokuhle", "type": "data_list", "note": "" }, { - "SourceText": "Calm Consequences", - "text": "Imiphumela Eyethulwa Ngomoya Ozolile", + "SourceText": "Relax", + "text": "Phumula", "type": "data_list", "note": "" }, { - "SourceText": "**Calm Consequences** workshop", - "text": "Ukuqeqeshelwa **Imiphumela Eyethulwa Ngomoya ozolile**", + "SourceText": "**Relax** @global.parent_point", + "text": "**Phumula** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to give calm consequences", - "text": "Indlela yokwethula imiphumela ngomoya ozolile", + "SourceText": "Doing a relaxation activity", + "text": "Ukwenza umsebenzi wokuphumula", "type": "data_list", "note": "" }, { - "SourceText": "Problem Solving", - "text": "Ukuxazulula Inkinga", + "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma uphumula, chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "**Problem Solving** workshop", - "text": "Ukuqeqeshelwa **Ukuxazulula Inkinga**", + "SourceText": "Treat yourself well", + "text": "Zenzele okuthile okuhle", "type": "data_list", "note": "" }, { - "SourceText": "How to solve problems", - "text": "Indlela yokuxazulula izinkinga", + "SourceText": "**Treat yourself well** @global.parent_point", + "text": "**Zenzele okuthile okuhle** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Teen Safety", - "text": "Ukuphepha Kwentsha", + "SourceText": "Doing something they like for themselves", + "text": "Ukwenza into abazithandela bona", "type": "data_list", "note": "" }, { - "SourceText": "**Teen Safety** workshop", - "text": "Ukuqeqeshelwa **Ukuphepha Kwentsha**", + "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma uzitotosa uzinakekela, chofoza @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to keep your teen safe", - "text": "Indlela yokugcina ingane yakho iphephile", + "SourceText": "**Praise yourself** @global.parent_point", + "text": "**Zincome** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Dealing with Crisis", - "text": "Ukubhekana Nezinkinga", + "SourceText": "Praising themselves", + "text": "Bayazincoma", "type": "data_list", "note": "" }, { - "SourceText": "**Dealing with Crisis** workshop", - "text": "Ukuqeqeshelwa **Ukubhekana Nezinkinga**", + "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso snke iskhathi uma uzincoma chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "How to deal with crisis", - "text": "Indlela yokubhekana nezinkinga", + "SourceText": "One-on-one time", + "text": "Isikhathi sokuthi sibe babili", "type": "data_list", "note": "" }, { - "SourceText": "Celebration and Next Steps", - "text": "Ukubungaza kanye Nezinyathelo Ezilandelayo", + "SourceText": "**One-on-one time** @global.parent_point", + "text": "**Isikhathi sokuthi sibe babili** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "**Celebration and Next Steps** workshop", - "text": "Ukuqeqeshelwa **Ukubungaza kanye Nezinyathelo Ezilandelayo**", + "SourceText": "Spending time with their teen", + "text": "Ukuchitha isikhathi nengane yakhe", "type": "data_list", "note": "" }, { - "SourceText": "How to support each other", - "text": "Indlela yokusekelana", + "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma uchitha isikhathi esikhethekile nomntwana wakho, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Quick pause", - "text": "Ikhefu elisheshayo", + "SourceText": "Praise your teen", + "text": "Ncoma ingane yakho", "type": "data_list", "note": "" }, { - "SourceText": "Power of three", - "text": "Amandla abantu abathathu", + "SourceText": "**Praise your teen** @global.parent_point", + "text": "**Ncoma ingane yakho** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "One thing today", - "text": "Into eyodwa namuhla", + "SourceText": "Praising their teen when they did positive thing", + "text": "Ukuncoma umntwana uma enze okuhle", "type": "data_list", "note": "" }, { - "SourceText": "Breathe to three", - "text": "Phefumula izikhathi ezintathu", + "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma uncoma umntwana wakho, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "In and out", - "text": "Udonse umoya uphinde uwukhiphe", + "SourceText": "Get positive", + "text": "Cabanga ngezinto ezakhayo", "type": "data_list", "note": "" }, { - "SourceText": "Think about today", - "text": "Cabanga ngosuku lwanamuhla", + "SourceText": "**Get positive** @global.parent_point", + "text": "**Cabanga ngezinto ezakhayo** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Pause to respond", - "text": "Thatha ikhefu ngaphambi kokuphendula", + "SourceText": "Giving their teen a positive instruction", + "text": "Ukunika umntwana wakho umyalelo umuhle ", "type": "data_list", "note": "" }, { - "SourceText": "Small things", - "text": "Izinto ezincane", + "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma unika umyalelo omuhle, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Body scan", - "text": "Ukuhlola umzimba", + "SourceText": "Breathe not yell", + "text": "Phefumula ungathethi", "type": "data_list", "note": "" }, { - "SourceText": "Feel the ground", - "text": "Yizwa izinyawo zithinte phansi", + "SourceText": "**Breathe not yell** @global.parent_point", + "text": "**Phefumula ungathethi** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Counting sounds", - "text": "Ukubala imisindo", + "SourceText": "Taking a pause before responding", + "text": "Ukuhatha ikhefu uphefumule ngaphambi kokuphendula", "type": "data_list", "note": "" }, { - "SourceText": "Feel your feeling", - "text": "Yizwa imizwa yakho", + "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isiskhathi uma uthatha ikhefu uphefumule ngaphambi kokuba uphendule chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Your song", - "text": "Ingoma yakho", + "SourceText": "Good money choice", + "text": "Ukukhetha kahle imali", "type": "data_list", "note": "" }, { - "SourceText": "Ground & gratitude", - "text": "Phansi kanye nokubonga", + "SourceText": "**Good money choice** @global.parent_point", + "text": "**Ukukhetha kahle imali** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Notice how you feel", - "text": "Qaphela indlela ozizwa ngayo", + "SourceText": "Keeping the budget", + "text": "Ukugcina isabelomali", "type": "data_list", "note": "" }, { - "SourceText": "Pause power", - "text": "Amandla ekhefu", + "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma ukhethe kahle phakathi kwezidingo, izimfuno nokulonodoloza imali chofoza ku @global.prent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Taking care of yourself", - "text": "Zinakekele", + "SourceText": "Calm consequence", + "text": "Imiphumela eyethulwa ngomoya ozolile", "type": "data_list", "note": "" }, { - "SourceText": "Take a pause", - "text": "Thatha ikhefu", + "SourceText": "**Calm consequence** @global.parent_point", + "text": "**Imiphumela eyethulwa ngomoya ozolile** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Physical activity", - "text": "Ukuvocavoca umzimba", + "SourceText": "Giving their teen a consequence in a calm way", + "text": "Ukunikeza abantwana babo umphumela ngesizotha", "type": "data_list", "note": "" }, { - "SourceText": "List of things", - "text": "Uhlu lwezinto", + "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", + "text": "Ngasosonke isikhathi lapho unikeza umphumela ozothile, cofoza u- @global.parent_point, ujabulele impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Connect", - "text": "Xhumana", + "SourceText": "Safe", + "text": "Ukuphepha", "type": "data_list", "note": "" }, { - "SourceText": "Prevent anger", - "text": "Gwema ulaka", + "SourceText": "**Safe** @global.parent_point", + "text": "**Ukuphepha** @global.parent_point", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Angry? Take a break", - "text": "Uthukuthele? Thatha ikhefu", + "SourceText": "Planning or keeping a family safety plan", + "text": "Ukuhlela noma ukgcina uhlelo lokuphepha lomndeni", "type": "data_list", "note": "" }, { - "SourceText": "Reflect on the positive", - "text": "Cabanga ngokuhle", + "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", + "text": "Ngaso sonke isikhathi uma wenza okuthile ukungcina umntwana wakho phephile, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_point should not be translated." }, { - "SourceText": "Check-in chat", - "text": "Hlola imilayezo", + "SourceText": "Did it? Tap it!", + "text": "Ukwenzile? Kucofe!", "type": "data_list", "note": "" }, { - "SourceText": "Dream Travel", - "text": "Iphupho Lohambo", + "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", + "text": "Kuhle kakhulu lokho! Nisebenzile ngokuchitha isikhathi ndawonye. Kwenza isisekelo sokuba nobuhlobo obuhle nomntwana wakho!", "type": "data_list", "note": "" }, { - "SourceText": "Famous Party", - "text": "Umcimbi Odumile", + "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", + "text": "Kuhle lokho! Ukuchitha isikhathi nobabili kubonisa umntwana wakho ukuba ubalulekile kuwe. Kuyawenza umehluko ngempela!", "type": "data_list", "note": "" }, { - "SourceText": "Two truths, one lie", - "text": "Amaqiniso amabili, amanga awodwa", + "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", + "text": "Kuhle kakhulu! Ukuchitha isikhathi nomntwana wakho kungenza umntwana wakho azimisele ukusiza kakhudlwana. Wenza kahle kakhulu!", "type": "data_list", "note": "" }, { - "SourceText": "Time Machine", - "text": "Umshini Wesikhathi", + "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", + "text": "Wenze kahle! Ukuchitha isikhathi nomntwana wakho kukunika ithuba lokufunda ngezinto ezithandwa umntwana wakho namakhono akhe. Uyiqhawe!", "type": "data_list", "note": "" }, { - "SourceText": "Superpowers", - "text": "Amandla angaphezu kwavamile", + "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", + "text": "Wenze umsebenzi omuhle! Ukuchitha isikhathi ndawonye kusiza kwakhe ubuhlobo obuqinile futhi obuhle phakathi kwakho nomntwana wakho.", "type": "data_list", "note": "" }, { - "SourceText": "Just a friendly chat", - "text": "Izingxoxo zobungane", + "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", + "text": "Ngezinye isikhathi kuzokuba lula futhi kube mnandi ukuchitha isikhathi nomntwana wakho, kodwa ngezinye izikhathi kuzoba yinselelo. Ukuchitha isikhathi ndawonye kuzothuthukisa ubuhlobo benu; usebenzile ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "The Interrupter", - "text": "Umphazamisi", + "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", + "text": "Siyaxolisa ukuzwa ukuthi bekunzima ukuchitha isikhathi nomntwana wakho. Sonke sibhekana nezinselelo ngezinye izikhathi. Yiba nesineke kuwe nakumntwana wakho - izinto zizoba ngcono. Wenze kahle ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "Three options", - "text": "Izindlela ezintathu", + "SourceText": "Great to hear it went well; you are a star!", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle; uyiqhawe!", "type": "data_list", "note": "" }, { - "SourceText": "Yes, No or Maybe", - "text": "Yebo, Cha noma Mhlawumbe", + "SourceText": "Wonderful! You deserve all the happy times!", + "text": "Kuhle kakhulu! Ufanelwe yizo zonke izikhathi zokujabula!", "type": "data_list", "note": "" }, { - "SourceText": "Memory game - \"On Saturday...\"", - "text": "Umdlalo wegqondo - “NgoMgqibelo...”", + "SourceText": "Sorry that this was difficult for you. You are a star for trying!", + "text": "Uxolo ukuthi lokhu bekunzima kuwe. Uyiqhawe ngokuthi uzame!", "type": "data_list", "note": "" }, { - "SourceText": "Make up a story", - "text": "Qamba indatshana", + "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", + "text": "Siyajabula ukuzwa ukuthi kukwenze wazizwa ujabule! Qhubeka nokwenza umsebenzi omuhle. Ingane yakho ifunda okuningi kuwe!", "type": "data_list", "note": "" }, { - "SourceText": "Co-chef", - "text": "Umsizi wompheki", + "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", + "text": "Ukukhuluma ngezindlela esizizwa ngayo kungaba nzima ekuqaleni, kodwa wena nengane yakho nizokujwayela. Qhubeka uzame, uzobona imiphumela emihle!", "type": "data_list", "note": "" }, { - "SourceText": "Dance moves", - "text": "Umdanso", + "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle. Ukukhuluma ngezimali ndawonye kwenza umndeni usondelane ngempela!", "type": "data_list", "note": "" }, { - "SourceText": "Mirror", - "text": "Isibuko", + "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", + "text": "Uxolo ukuzwa ukuthi lokhu bekunzima kuwe. Wenze kahle ngokuzama!", "type": "data_list", "note": "" }, { - "SourceText": "What's new?", - "text": "Yini entsha?", + "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Imithetho engaguquguquki yenza ingane izizwe iphephile, futhi kuyigcina iphephile!", "type": "data_list", "note": "" }, { - "SourceText": "Get active!", - "text": "Yiba matasa!", + "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", + "text": "Uxolo ngokuthi lokhu bekunzima. Ukubeka imithetho ndawonye kudinga ukuprakthize kodwa kuyasiza!", "type": "data_list", "note": "" }, { - "SourceText": "Name that tune", - "text": "Qamba le ngoma", + "SourceText": "Great to hear it went well!", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle!", "type": "data_list", "note": "" }, { - "SourceText": "Pass the snap", - "text": "Dlulisa i-snap", + "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", + "text": "Siyaxolisa ngokuthi lokhu bekunzima. Ukubeka imiphumela ndawonye kuzokwenza ukuba ingane ifune ukulandela imithetho ngokwengeziwe!", "type": "data_list", "note": "" }, { - "SourceText": "Family workout", - "text": "Ukuzivocavoca komndeni", + "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", + "text": "Uxolo ukuthi lokhu bekunzima. Ngezinye izikhathi kumelwe siqhubeke sizame. Thola isikhathi lapho wena nengane yakho nizolile bese niyazama futhi ukukhuluma ngenkinga nisebenzisa izinyathelo ezine zokuxazula inkinga. Ndawonye, ningenza okuningi!", "type": "data_list", "note": "" }, { - "SourceText": "Make housework fun", - "text": "Ukwenza umsebenzi wasekhaya ngendlela emnandi", + "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Ukukhuluma ngezingozi nezindlela zokwesekwa ezikhona kuvimbela izinkinga futhi kusiza ngempela ekugcineni ingane yakho iphephile.", "type": "data_list", "note": "" }, { - "SourceText": "Household chores aren’t fun… or are they? You can make them into a game!", - "text": "Imisebenzi yasekhaya ayimnandi neze..... noma imnandi? ungayenza samdlalo!", + "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", + "text": "Uxolo ukuthi lokhu bekunzima. Ukumepha izingozi kanye nezindawo ongathola kuzo ukwesekwa kungaba nzima futhi kuhlukumeze emoyeni. Kuyasiza ngempela ukugcina ingane yakho iphephile!", "type": "data_list", "note": "" }, { - "SourceText": "What are you doing?", - "text": "Wenzani?", + "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", + "text": "Uxolo ukuthi akuhambanga kahle. Lokhu akulula ukukwenza. Phinda uzame ukuhlala phansi nixoxisane nengane yakho futhi. Okunye, ingabe ukhona omunye umuntu ingane yakho emethembayo ongahlanganyela nawe engxoxweni yakho nengane yakho?", "type": "data_list", "note": "" }, { - "SourceText": "Here is a fun game you can do with your family!", - "text": "Nawu umdlalo omnandi ongawudlala nomndeni wakho!", + "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Ukuthola imiphumela emihle kusiza ingane ukuthi iziphathe kahle futhi kwenza umndeni ube nokuthula.", "type": "data_list", "note": "" }, { - "SourceText": "Crazy chicken", - "text": "Inkukhu ehlanyayo", + "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", + "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Lapho ingane yakho ifunda ukuxazulula izinkinga, ingasebenzisa lelo khono impilo yayo yonke. Isipho esihle kangaka!", "type": "data_list", "note": "" }, @@ -10392,447 +9642,609 @@ "note": "The string @global.parent_centre should not be translated." }, { - "SourceText": "How to talk to my teen", - "text": "Ngikhulume kanjani nomntwana wami", + "SourceText": "Quick pause", + "text": "Ikhefu elisheshayo", "type": "data_list", "note": "" }, { - "SourceText": "Steps to deal with news", - "text": "Izinyathelo zokumelana nezindaba", + "SourceText": "Power of three", + "text": "Amandla abantu abathathu", "type": "data_list", "note": "" }, { - "SourceText": "How can I help my teen choose well?", - "text": "Ngingamusiza kanjani umntwana wami ukuthi akhethe kahle?", + "SourceText": "One thing today", + "text": "Into eyodwa namuhla", "type": "data_list", "note": "" }, { - "SourceText": "What influences teen decisions?", - "text": "Yini enomthelela kwizinqumo zomntwana?", + "SourceText": "Breathe to three", + "text": "Phefumula izikhathi ezintathu", "type": "data_list", "note": "" }, { - "SourceText": "How does my teen feel?", - "text": "Uzizwa kanjani umntwana wami?", + "SourceText": "In and out", + "text": "Udonse umoya uphinde uwukhiphe", "type": "data_list", "note": "" }, { - "SourceText": "Changing negative to positive", - "text": "Ukushintsha okubi ukuse kokuhle", + "SourceText": "Think about today", + "text": "Cabanga ngosuku lwanamuhla", "type": "data_list", "note": "" }, { - "SourceText": "Help yourself cope", - "text": "Zisize ubhekane nakho", + "SourceText": "Pause to respond", + "text": "Thatha ikhefu ngaphambi kokuphendula", "type": "data_list", "note": "" }, { - "SourceText": "Help your teen cope", - "text": "Siza umntwana wakho ukuthi akwazi ukumelana nesimo", + "SourceText": "Small things", + "text": "Izinto ezincane", "type": "data_list", "note": "" }, { - "SourceText": "Practical steps", - "text": "Izinyathelo ezisebenzayo", + "SourceText": "Body scan", + "text": "Ukuhlola umzimba", "type": "data_list", "note": "" }, { - "SourceText": "Relax", - "text": "Phumula", + "SourceText": "Feel the ground", + "text": "Yizwa izinyawo zithinte phansi", "type": "data_list", "note": "" }, { - "SourceText": "**Relax** @global.parent_point", - "text": "**Phumula** @global.parent_point", + "SourceText": "Counting sounds", + "text": "Ukubala imisindo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Doing a relaxation activity", - "text": "Ukwenza umsebenzi wokuphumula", + "SourceText": "Feel your feeling", + "text": "Yizwa imizwa yakho", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do a relax, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma uphumula, chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "Your song", + "text": "Ingoma yakho", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Treat yourself well", - "text": "Zenzele okuthile okuhle", + "SourceText": "Ground & gratitude", + "text": "Phansi kanye nokubonga", "type": "data_list", "note": "" }, { - "SourceText": "**Treat yourself well** @global.parent_point", - "text": "**Zenzele okuthile okuhle** @global.parent_point", + "SourceText": "Notice how you feel", + "text": "Qaphela indlela ozizwa ngayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Doing something they like for themselves", - "text": "Ukwenza into abazithandela bona", + "SourceText": "Pause power", + "text": "Amandla ekhefu", "type": "data_list", "note": "" }, { - "SourceText": "Every time you treat yourself well, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma uzitotosa uzinakekela, chofoza @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "Praise yourself", + "text": "Zincome", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praise yourself", - "text": "Zincome", + "SourceText": "Taking care of yourself", + "text": "Zinakekele", "type": "data_list", "note": "" }, { - "SourceText": "**Praise yourself** @global.parent_point", - "text": "**Zincome** @global.parent_point", + "SourceText": "Take a pause", + "text": "Thatha ikhefu", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praising themselves", - "text": "Bayazincoma", + "SourceText": "Physical activity", + "text": "Ukuvocavoca umzimba", + "type": "data_list", + "note": "" + }, + { + "SourceText": "List of things", + "text": "Uhlu lwezinto", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Connect", + "text": "Xhumana", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Prevent anger", + "text": "Gwema ulaka", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Angry? Take a break", + "text": "Uthukuthele? Thatha ikhefu", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It is hard to find time to have fun with your teenager.", + "text": "Kunzima ukuthola isikhathi sokuzijabulisa nengane yakho eyevile eminyakeni eyishumi nambili.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "In our busy lives it’s hard to focus on the positive.", + "text": "Ekuphileni kwethu okumatasa kunzima ukugxila kokuhle.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week have you praised your teen?", + "text": "Zingaki izinsuku esontweni elidlule oye wancoma ngazo ingane yakho eyevile eminyakeni eyishumi nambili?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "This is a very stressful time for families.", + "text": "Lesi yisikhathi esicindezela kakhulu emindenini.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you feel very stressed as a parent/caregiver?", + "text": "Zingaki izinsuku esontweni elidlule ozizwe ngazo ucindezeleke kakhulu njengomzali/njengomnakekeli?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Sometimes our children make us really upset.", + "text": "Ngezinye izikhathi izingane zethu zisithukuthelisa kakhulu.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you shout, scream or yell at your teen?", + "text": "Zingaki izinsuku phakathi nesonto elidlule lapho khona uye wamemeza, waklabalasa noma wathethisa ingane yakho eyevile eminyakeni eyishumi nambili?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past month (30 days) did you run out of money to pay for food?", + "text": "Zingaki izinsuku enyangeni edlule (izinsuku ezingu-30) oye waphelelwa kuzo yimali yokuthenga ukudla?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It is so stressful when children misbehave.", + "text": "Kucindezela kakhulu lapho izingane zingalaleli.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you physically discipline your children by hitting, spanking, or slapping with your hand or an object like a stick or a belt?", + "text": "Zingaki izinsuku kulelisonto eledlulile othe wajezisa izingane ngokuzishaya ngoswazi noma ibhande noma ezinqeni noma ngesandla noma into ethile efana nenduku noma nebhande?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "It’s hard to keep track of your teenagers when they are becoming independent.", + "text": "Kunzima ukulandelela okwenziwa yizingane zakho njengoba ziqala ukuzimela.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How many days in the past week did you know what your teen was doing and who they were with?", + "text": "Zingaki izinsuku esontweni elidlule obuwazi ngazo ukuthi ingane yakho eyevile eminyakeni eyishumi nambili yenzani nokuthi ibinobani?", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Days in the past week", + "text": "Izinsuku esontweni elidlule", + "type": "data_list", + "note": "" + }, + { + "SourceText": "We all want to keep our children safe.", + "text": "Sonke sifuna ukugcina izingane zethu ziphephile.", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Days in the past month", + "text": "Izinsuku enyangeni edlule", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Welcome and Self-Care", + "text": "Ukwamukelwa Nokuzinakekela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**Welcome and Self-Care** workshop", + "text": "Ukuqeqeshelwa **Ukwamukela kanye Nokuzinakekela**", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Self-Care", + "text": "Ukuzinakekela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How to do self-care", + "text": "Indlela yokuzinakekela", + "type": "data_list", + "note": "" + }, + { + "SourceText": "One-on-One Time", + "text": "Isikhathi Sokuthi Nibe Nobabili Ndawonye", + "type": "data_list", + "note": "" + }, + { + "SourceText": "**One-on-One Time** workshop", + "text": "Ukuqeqeshelwa **Isikhathi Sokuthi Nibe Babili**", + "type": "data_list", + "note": "" + }, + { + "SourceText": "How to spend one-on-one time", + "text": "Indlela yokuchitha isikhathi ninobabili", + "type": "data_list", + "note": "" + }, + { + "SourceText": "Praise", + "text": "Ncoma", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise yourself, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso snke iskhathi uma uzincoma chofoza ku-@global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "**Praise** workshop", + "text": "Ukuqeqeshelwa **Ukuncoma**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "One-on-one time", - "text": "Isikhathi sokuthi sibe babili", + "SourceText": "How to praise", + "text": "Indlela yokuncoma", "type": "data_list", "note": "" }, { - "SourceText": "**One-on-one time** @global.parent_point", - "text": "**Isikhathi sokuthi sibe babili** @global.parent_point", + "SourceText": "Positive Instructions", + "text": "Imiyalelo emihle", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Spending time with their teen", - "text": "Ukuchitha isikhathi nengane yakhe", + "SourceText": "**Positive Instructions** workshop", + "text": "Ukuqeqeshelwa **Imiyalelo emihle**", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do one-on-one time, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma uchitha isikhathi esikhethekile nomntwana wakho, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "How to give positive instructions", + "text": "Indlela yokunikeza imiyalelo emihle", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praise your teen", - "text": "Ncoma ingane yakho", + "SourceText": "Managing Stress", + "text": "Ukulawula ingcindezi", "type": "data_list", "note": "" }, { - "SourceText": "**Praise your teen** @global.parent_point", - "text": "**Ncoma ingane yakho** @global.parent_point", + "SourceText": "**Managing Stress** workshop", + "text": "Ukuqeqeshelwa **Ukulawula Ingcindezi**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Praising their teen when they did positive thing", - "text": "Ukuncoma umntwana uma enze okuhle", + "SourceText": "How to manage stress", + "text": "Indlela yokulawula ingcindezi", "type": "data_list", "note": "" }, { - "SourceText": "Every time you praise your teen, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma uncoma umntwana wakho, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "Family Budgets", + "text": "Isabelomali Somndeni", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Get positive", - "text": "Cabanga ngezinto ezakhayo", + "SourceText": "**Family Budgets** workshop", + "text": "Ukuqeqeshelwa **Isabelomali Somndeni**", "type": "data_list", "note": "" }, { - "SourceText": "**Get positive** @global.parent_point", - "text": "**Cabanga ngezinto ezakhayo** @global.parent_point", + "SourceText": "How to budget & save", + "text": "Indlela yokwenza isabelomali kanye nokonga", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a positive instruction", - "text": "Ukunika umntwana wakho umyalelo umuhle ", + "SourceText": "Rules", + "text": "Imithetho", "type": "data_list", "note": "" }, { - "SourceText": "Every time you give a positive instruction, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma unika umyalelo omuhle, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "**Rules** workshop", + "text": "Ukuqeqeshelwa **Imithetho**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Breathe not yell", - "text": "Phefumula ungathethi", + "SourceText": "How to create rules", + "text": "Indlela yokubeka imithetho", "type": "data_list", "note": "" }, { - "SourceText": "**Breathe not yell** @global.parent_point", - "text": "**Phefumula ungathethi** @global.parent_point", + "SourceText": "Calm Consequences", + "text": "Imiphumela Eyethulwa Ngomoya Ozolile", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Taking a pause before responding", - "text": "Ukuhatha ikhefu uphefumule ngaphambi kokuphendula", + "SourceText": "**Calm Consequences** workshop", + "text": "Ukuqeqeshelwa **Imiphumela Eyethulwa Ngomoya ozolile**", "type": "data_list", "note": "" }, { - "SourceText": "Every time you take a pause before responding, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isiskhathi uma uthatha ikhefu uphefumule ngaphambi kokuba uphendule chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "How to give calm consequences", + "text": "Indlela yokwethula imiphumela ngomoya ozolile", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Good money choice", - "text": "Ukukhetha kahle imali", + "SourceText": "Problem Solving", + "text": "Ukuxazulula Inkinga", "type": "data_list", "note": "" }, { - "SourceText": "**Good money choice** @global.parent_point", - "text": "**Ukukhetha kahle imali** @global.parent_point", + "SourceText": "**Problem Solving** workshop", + "text": "Ukuqeqeshelwa **Ukuxazulula Inkinga**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Keeping the budget", - "text": "Ukugcina isabelomali", + "SourceText": "How to solve problems", + "text": "Indlela yokuxazulula izinkinga", "type": "data_list", "note": "" }, { - "SourceText": "Every time you make a good choice about needs, wants and savings, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma ukhethe kahle phakathi kwezidingo, izimfuno nokulonodoloza imali chofoza ku @global.prent_point bese ujabulela impumelelo yakho!", + "SourceText": "Teen Safety", + "text": "Ukuphepha Kwentsha", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Calm consequence", - "text": "Imiphumela eyethulwa ngomoya ozolile", + "SourceText": "**Teen Safety** workshop", + "text": "Ukuqeqeshelwa **Ukuphepha Kwentsha**", "type": "data_list", "note": "" }, { - "SourceText": "**Calm consequence** @global.parent_point", - "text": "**Imiphumela eyethulwa ngomoya ozolile** @global.parent_point", + "SourceText": "How to keep your teen safe", + "text": "Indlela yokugcina ingane yakho iphephile", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Giving their teen a consequence in a calm way", - "text": "Ukunikeza abantwana babo umphumela ngesizotha", + "SourceText": "Dealing with Crisis", + "text": "Ukubhekana Nezinkinga", "type": "data_list", "note": "" }, { - "SourceText": "Every time you give a calm consequence, tap the @global.parent_point and celebrate your success!", - "text": "Ngasosonke isikhathi lapho unikeza umphumela ozothile, cofoza u- @global.parent_point, ujabulele impumelelo yakho!", + "SourceText": "**Dealing with Crisis** workshop", + "text": "Ukuqeqeshelwa **Ukubhekana Nezinkinga**", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Safe", - "text": "Ukuphepha", + "SourceText": "How to deal with crisis", + "text": "Indlela yokubhekana nezinkinga", "type": "data_list", "note": "" }, { - "SourceText": "**Safe** @global.parent_point", - "text": "**Ukuphepha** @global.parent_point", + "SourceText": "Celebration and Next Steps", + "text": "Ukubungaza kanye Nezinyathelo Ezilandelayo", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Planning or keeping a family safety plan", - "text": "Ukuhlela noma ukgcina uhlelo lokuphepha lomndeni", + "SourceText": "**Celebration and Next Steps** workshop", + "text": "Ukuqeqeshelwa **Ukubungaza kanye Nezinyathelo Ezilandelayo**", "type": "data_list", "note": "" }, { - "SourceText": "Every time you do something to keep your teen safe, tap the @global.parent_point and celebrate your success!", - "text": "Ngaso sonke isikhathi uma wenza okuthile ukungcina umntwana wakho phephile, chofoza ku @global.parent_point bese ujabulela impumelelo yakho!", + "SourceText": "How to support each other", + "text": "Indlela yokusekelana", "type": "data_list", - "note": "The string @global.parent_point should not be translated." + "note": "" }, { - "SourceText": "Did it? Tap it!", - "text": "Ukwenzile? Kucofe!", + "SourceText": "Start", + "text": "Qala", "type": "data_list", "note": "" }, { - "SourceText": "That’s wonderful! Well done for spending time together. It lays the foundation for a great relationship with your teen!", - "text": "Kuhle kakhulu lokho! Nisebenzile ngokuchitha isikhathi ndawonye. Kwenza isisekelo sokuba nobuhlobo obuhle nomntwana wakho!", + "SourceText": "Continue", + "text": "Qhubeka", "type": "data_list", "note": "" }, { - "SourceText": "Good for you! One-on-one time shows your teens they are important to you. It really makes a difference!", - "text": "Kuhle lokho! Ukuchitha isikhathi nobabili kubonisa umntwana wakho ukuba ubalulekile kuwe. Kuyawenza umehluko ngempela!", + "SourceText": "Hi great parent, remember to take care of yourself too - it will help you AND your family! Get your tips and more in @global.parent_app.", + "text": "Sawubona mzali othandekayo, khumbula ukuzinakekela - kuzosiza wena nomndeni wakho! Thola amacebiso nokuningi kwi @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Wonderful! Spending time with your teen may make your teen more willing to help out more often. You are doing great!", - "text": "Kuhle kakhulu! Ukuchitha isikhathi nomntwana wakho kungenza umntwana wakho azimisele ukusiza kakhudlwana. Wenza kahle kakhulu!", + "SourceText": "Hi great parent! Remember, you can find lots of helpful tips in @global.parent_app.", + "text": "Sawubona mzali othandekayo! Khumbula, ungathola amacebiso amaningi awusizo kwi @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Well done! One-on-one time with your teen gives you a chance to learn more about your teen’s interests and abilities. You are a star!", - "text": "Wenze kahle! Ukuchitha isikhathi nomntwana wakho kukunika ithuba lokufunda ngezinto ezithandwa umntwana wakho namakhono akhe. Uyiqhawe!", + "SourceText": "Hi great parent! @global.parent_app is here to support you. Check it out now!", + "text": "Sawubona mzali othandekayo! i-@global.parent_app ikhona ukukusekela. Ibheke manje!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Excellent job! Spending time together helps to build a strong and positive relationship between you and your teen.", - "text": "Wenze umsebenzi omuhle! Ukuchitha isikhathi ndawonye kusiza kwakhe ubuhlobo obuqinile futhi obuhle phakathi kwakho nomntwana wakho.", + "SourceText": "Welcome to @global.parent_app. Click here to start your journey!", + "text": "Siyakwamukela ku@global.parent_app. Chofoza lapha ukuze uqale uhambo lwakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app. should not be translated." }, { - "SourceText": "Sometimes it will be easy and fun to spend time with your teens, and sometimes it will be more challenging. Spending time together will greatly improve your relationship; well done for trying!", - "text": "Ngezinye isikhathi kuzokuba lula futhi kube mnandi ukuchitha isikhathi nomntwana wakho, kodwa ngezinye izikhathi kuzoba yinselelo. Ukuchitha isikhathi ndawonye kuzothuthukisa ubuhlobo benu; usebenzile ngokuzama!", + "SourceText": "Hi! Is everything OK? It seems you haven’t opened @global.parent_app lately. Why don’t you give it a try? Millions of parents have found these materials helpful. We are still here to support you.", + "text": "Sawubona! Ingabe konke kuhamba KAHLE? Kubonakala sengathi muva nje awuyivulanga i-@global.parent_app. Kungani ungayizami? Izigidi zabazali zithole ewusizo la mathuluzi. Sisekhona lapha ukuba sikusekele.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry to hear that it was difficult for you to spend time with your teen. We all have challenges sometimes. Just be patient with yourself and your teen - things will get better. Well done for trying!", - "text": "Siyaxolisa ukuzwa ukuthi bekunzima ukuchitha isikhathi nomntwana wakho. Sonke sibhekana nezinselelo ngezinye izikhathi. Yiba nesineke kuwe nakumntwana wakho - izinto zizoba ngcono. Wenze kahle ngokuzama!", + "SourceText": "@global.parent_app misses you! There is a lot to explore. We are still here to support you.", + "text": "i-@global.parent_app iyakukhumbula! Kuningi ongakuhlola. Sisekhona lapha ukuba sikusekele.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well; you are a star!", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle; uyiqhawe!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to prepare your teen for success in life.", + "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuze ulungiselele ingane yakho ukuthi iphumelele empilweni.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Wonderful! You deserve all the happy times!", - "text": "Kuhle kakhulu! Ufanelwe yizo zonke izikhathi zokujabula!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to bond with your teen again!", + "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuqinisa ubudlelwane nengane yakho!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this was difficult for you. You are a star for trying!", - "text": "Uxolo ukuthi lokhu bekunzima kuwe. Uyiqhawe ngokuthi uzame!", + "SourceText": "Hope you are feeling OK. Parenting is hard, but it’s never too late to start again with your teenager. Your first parenting workshop is ready for you! Click here to start your @global.parent_app journey!", + "text": "Sithembe ukuthi uzizwa KAHLE. Ukuba umzali kunzima, kodwa usenesikhathi sokuqala kabusha nomntwana wakho. Sekuyatholakala ukuqeqeshwa kwakho kokuqala kokuba umzali! Chofoza lapha ukuze uqale uhambo lwakho lwe @global.parent_app!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Amazing to hear it made you feel good! Keep up the great work. Your teen is learning so much from you!", - "text": "Siyajabula ukuzwa ukuthi kukwenze wazizwa ujabule! Qhubeka nokwenza umsebenzi omuhle. Ingane yakho ifunda okuningi kuwe!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage parenting stress.", + "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba wumzali - sebenzisa i-@global.parent_app yabazali ukuze uzisakale ukulawula ingcindezi.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Talking about how we feel can be difficult at first, but you and your teen will get used to it. Keep trying, and you will see the positive results!", - "text": "Ukukhuluma ngezindlela esizizwa ngayo kungaba nzima ekuqaleni, kodwa wena nengane yakho nizokujwayela. Qhubeka uzame, uzobona imiphumela emihle!", + "SourceText": "Hello again! It’s never too late to use @global.parent_app and get tailored parenting support. Why don’t you give it a try when you are commuting to work or when the food is cooking? Millions of parents found our materials helpful.", + "text": "Sawubona futhi! Awukaphelewa isikhathi ukuthi usebenzise i-@global.parent_app bese uthola ukusekelwa okuqhubekayo njengo umzali. Kungani ungakuzami lapho usendleleni eya emsebenzini noma uma upheka? Izigidi zabazali ziwathola ewusizo amathuluzi ethu.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well. Talking about your finances together really makes your family stronger!", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle. Ukukhuluma ngezimali ndawonye kwenza umndeni usondelane ngempela!", + "SourceText": "Hope you are feeling OK. We know parenting is hard - use @global.parent_app to help you manage your teen's behaviour.", + "text": "Sithembe ukuthi uzizwa KAHLE. Siyazi ukuthi kunzima ukuba umzali - sebenzisa i-@global.parent_app ukuze ikusize ulawule indlela umntwana wakho aziphatha ngayo.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry to hear it was difficult for you. Well done for trying!", - "text": "Uxolo ukuzwa ukuthi lokhu bekunzima kuwe. Wenze kahle ngokuzama!", + "SourceText": "Hi @fields.user_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Sawubona @fields.user_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.user_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Great to hear it went well! Consistent rules help make our teens feel secure, and keep them safe!", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Imithetho engaguquguquki yenza ingane izizwe iphephile, futhi kuyigcina iphephile!", + "SourceText": "Hi @fields.group_name. Your @data.workshop.w_1on1.in_text_title is ready for you.", + "text": "Sawubona @fields.group_name. Isikulungele i- @data.workshop.w_1on1.in_text_title yakho.", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@fields.group_name.\n@data.workshop.w_1on1.in_text_title" }, { - "SourceText": "Sorry that this has been difficult. Creating rules together requires some practice but it's worth it!", - "text": "Uxolo ngokuthi lokhu bekunzima. Ukubeka imithetho ndawonye kudinga ukuprakthize kodwa kuyasiza!", + "SourceText": "You've put so much effort into being a better parent. You are loved and appreciated!", + "text": "Usuzikhandlile ekutheni ube umzali oqotho. Uyathandwa futhi uyabongwa!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well!", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle!", + "SourceText": "Thank you for committing to your parenting. \n\nYour @data.workshop.w_1on1.in_text_title is ready for you!", + "text": "Siyabonga ngokuzinikela ekukhuliseni abantwana.\n\nIkulungele i-@data.workshop.w_1on1.in_text_title yakho!", "type": "data_list", - "note": "" + "note": "The string @data.workshop.w_1on1.in_text_title should not be translated." }, { - "SourceText": "Sorry that this was difficult. Setting consequences together will make your teen want to follow the rules more often!", - "text": "Siyaxolisa ngokuthi lokhu bekunzima. Ukubeka imiphumela ndawonye kuzokwenza ukuba ingane ifune ukulandela imithetho ngokwengeziwe!", + "SourceText": "Spending time with your teen helps build trust. \n\nContinue your @global.parent_app journey for great results.", + "text": "Ukuchitha isikhati nomntwana wakho kuyasiza ekwakheni ukuthembana.\n\nUkuze ubone imiphumela emihle kakhulu, qhubeka nohambo lwakho ne- @global.parent_app.", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Sorry that this was hard. Sometimes we just have to keep trying. Find a time when you and your teen are calm and try again to talk through a problem using the four steps of problem-solving. Together, you can do so much!", - "text": "Uxolo ukuthi lokhu bekunzima. Ngezinye izikhathi kumelwe siqhubeke sizame. Thola isikhathi lapho wena nengane yakho nizolile bese niyazama futhi ukukhuluma ngenkinga nisebenzisa izinyathelo ezine zokuxazula inkinga. Ndawonye, ningenza okuningi!", + "SourceText": "Have you spent time with your teen already?", + "text": "Ingabe ususichithile isikhathi nengane yakho eyevile eminyakeni eyishumi nambili?", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Talking about risks and support options prevents problems and really helps to keep your teen safe.", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Ukukhuluma ngezingozi nezindlela zokwesekwa ezikhona kuvimbela izinkinga futhi kusiza ngempela ekugcineni ingane yakho iphephile.", + "SourceText": "Have you talked with your teen about your family budget yet?", + "text": "Ingabe usukhulumile nengane yakho eyevile eminyakeni eyishumi nambili ngolwabiwo mali lomndeni wakho?", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that this was hard. Mapping risks and places to get support can be challenging and emotional. It really does help to keep your teen safe!", - "text": "Uxolo ukuthi lokhu bekunzima. Ukumepha izingozi kanye nezindawo ongathola kuzo ukwesekwa kungaba nzima futhi kuhlukumeze emoyeni. Kuyasiza ngempela ukugcina ingane yakho iphephile!", + "SourceText": "Have you talked with your teen about safety measures?", + "text": "Ingabe usukhulumile nengane yakho ngezindlela zokuphepha?", "type": "data_list", "note": "" }, { - "SourceText": "Sorry that it didn’t go so well. This is not easy to do. Try to sit down and discuss it with your teen again. Also, is there someone your teen trusts who could join you in the discussion with your teen?", - "text": "Uxolo ukuthi akuhambanga kahle. Lokhu akulula ukukwenza. Phinda uzame ukuhlala phansi nixoxisane nengane yakho futhi. Okunye, ingabe ukhona omunye umuntu ingane yakho emethembayo ongahlanganyela nawe engxoxweni yakho nengane yakho?", + "SourceText": "This week is about YOU! Treat yourself well. You deserve it!", + "text": "Leliviki lingawe. Ziphathe kahle. Kukufanele!", "type": "data_list", "note": "" }, { - "SourceText": "Great to hear it went well! Getting consequences right helps teens behave better and makes family life calmer.", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Ukuthola imiphumela emihle kusiza ingane ukuthi iziphathe kahle futhi kwenza umndeni ube nokuthula.", + "SourceText": "Start a brand new @global.parent_app workshop tomorrow. You'll see great results!", + "text": "Qala isifundo esha kusasa ku- @global.parent_app. Uzobona imiphumela emihle kakhulu!", "type": "data_list", - "note": "" + "note": "The string @global.parent_app should not be translated." }, { - "SourceText": "Great to hear it went well! When your teen learns how to solve problems, they can use that skill their whole life. What a gift!", - "text": "Siyajabula ukuzwa ukuthi kuhambe kahle! Lapho ingane yakho ifunda ukuxazulula izinkinga, ingasebenzisa lelo khono impilo yayo yonke. Isipho esihle kangaka!", + "SourceText": "Remember to tell your @global.parent_app partners about the app. Tomorrow, you can start doing @global.parent_app workshops together!", + "text": "Khumbula ukutshela abalingane bakho be- @global.parent_app ngale app. Ningaqala ukwenza i- @global.parent_app ndawonye kusasa!", "type": "data_list", - "note": "" + "note": "The following strings should not be translated:\n@global.parent_app\n@global.parent_app" } ] \ No newline at end of file diff --git a/packages/app-data/tsconfig.json b/packages/app-data/tsconfig.json deleted file mode 100644 index 9c33d45fdb..0000000000 --- a/packages/app-data/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - "outDir": "dist", - "rootDir": ".", - "typeRoots": ["node_modules/@types"], - "declaration": true, - "skipLibCheck": true, - "composite": true, - "lib": ["ESNext"], - "esModuleInterop": true - }, - "include": ["**/*.ts", "index.ts"], - "exclude": ["node_modules", "dist"] -} diff --git a/packages/data-models/app-config/globals.ts b/packages/data-models/app-config/globals.ts new file mode 100644 index 0000000000..a48891b071 --- /dev/null +++ b/packages/data-models/app-config/globals.ts @@ -0,0 +1,16 @@ +/** + * WiP - placeholder to organise hardcoded strings used in the app + * Will eventually integrate with globals/translation system + * + * Some specific strings are currently hardcoded into the app + * TODO - not all strings included, should add to when required + * TODO - needs to be included in translations systems + */ +export default { + feedback_add_button_text: "Add Feedback", + feedback_suggest_change_text: "Suggest Change", + feedback_sent_text: "Thank you for your feedback", + feedback_unsent_text: "You are currently offline. Feedback will be sent when next online", + notification_default_title: "Notification", + notification_default_text: "You have a new message", +}; diff --git a/packages/data-models/app-config/index.ts b/packages/data-models/app-config/index.ts new file mode 100644 index 0000000000..20fb5b200b --- /dev/null +++ b/packages/data-models/app-config/index.ts @@ -0,0 +1 @@ +export * from "./globals"; diff --git a/packages/data-models/app-config/templates/README.md b/packages/data-models/app-config/templates/README.md new file mode 100644 index 0000000000..cc29107a4d --- /dev/null +++ b/packages/data-models/app-config/templates/README.md @@ -0,0 +1,4 @@ +This is the proposed placeholder for hardcoded templates required by the app + +A few example files have been placed but likely these will want to be copied over from PLH app +or created as new default general templates \ No newline at end of file diff --git a/packages/data-models/app-config/templates/app_menu_privacy_policy.json b/packages/data-models/app-config/templates/app_menu_privacy_policy.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/data-models/app-config/templates/app_menu_privacy_policy.json @@ -0,0 +1 @@ +{} diff --git a/packages/data-models/app-config/templates/feature_feedback_default.json b/packages/data-models/app-config/templates/feature_feedback_default.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/data-models/app-config/templates/feature_feedback_default.json @@ -0,0 +1 @@ +{} diff --git a/packages/data-models/app-config/templates/feature_feedback_text_select.json b/packages/data-models/app-config/templates/feature_feedback_text_select.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/packages/data-models/app-config/templates/feature_feedback_text_select.json @@ -0,0 +1 @@ +{} diff --git a/packages/data-models/appConfig.ts b/packages/data-models/appConfig.ts new file mode 100644 index 0000000000..6003ef5fa5 --- /dev/null +++ b/packages/data-models/appConfig.ts @@ -0,0 +1,233 @@ +/// +import APP_CONFIG_GLOBALS from "./app-config/globals"; +import clone from "clone"; +import { IAppSkin } from "./skin.model"; + +/********************************************************************************************* + * Values used throughout the app + * + * NOTE - this file should not be edited directly. All constants can be overridden + * via the `app_config` field in deployment configs, or by the `appConfig` of an applied skin + * + * NOTE - as these are merged when setting deployment, avoid `_path` suffix as that has + * special use case for relative paths + ********************************************************************************************/ + +const DYNAMIC_PREFIXES = [ + "local", + "field", + "fields", + "global", + "data", + "campaign", + "calc", + "item", + "raw", +] as const; + +/** + * All localstorage fields will be prefixed with this + * TODO - this has not been consistently applied so refactoring required + * */ +const FIELD_PREFIX = "rp-contact-field"; + +/** + * Fieldnames hardcoded into the app + * TODO - these have not been consistently applied so refactoring required + * */ +const APP_FIELDS = { + SERVER_SYNC_LATEST: `${FIELD_PREFIX}._server_sync_latest`, + APP_LANGUAGE: `${FIELD_PREFIX}._app_language`, + DEPLOYMENT_NAME: `${FIELD_PREFIX}._deployment_name`, + APP_VERSION: `${FIELD_PREFIX}._app_version`, + APP_AUTH_USER: `${FIELD_PREFIX}._app_auth_user`, + APP_SKIN: `${FIELD_PREFIX}._app_skin`, + APP_THEME: `${FIELD_PREFIX}._app_theme`, +}; + +const APP_LANGUAGES = { + /** Language used during first load. If translations do not exist will default to source strings (gb_en) */ + default: "gb_en", +}; + +/** Specifies the skins available to the current app build. + * "defaultSkinName": the name of the skin used by default for a given build + * "available": an array of all skins that are available to the current build */ +const APP_SKINS: { defaultSkinName: string; available: IAppSkin[] } = { + defaultSkinName: "default", + available: [{ name: "default" }], +}; + +/** Specifies the themes available to the current app build. + * "defaultThemeName": the theme used by default for a given build + * "available": an array of all skins that are available to the current build */ +const APP_THEMES = { + defaultThemeName: "default", + available: ["default"], +}; + +/** + * WiP - App strings will be defined from global config + * Temporarily just re-export to allow override from deployment in same way as rest of constants + * */ +const APP_STRINGS = APP_CONFIG_GLOBALS; + +const NOTIFICATION_DEFAULTS = { + title: APP_STRINGS.notification_default_title, + text: APP_STRINGS.notification_default_text, + time: { + hour: 12, + minute: 0, + }, +}; + +/** How often to attempt to re-evaluate scheduled notifications - currently every minutes */ +const NOTIFICATIONS_SYNC_FREQUENCY_MS = 1000 * 60 * 3; + +/** How often to attempt sync - currently every 5mins */ +const SERVER_SYNC_FREQUENCY_MS = 1000 * 60 * 5; + +const APP_ROUTE_DEFAULTS = { + /** Default redirect form landing '/' route */ + home_route: "/template/home_screen", + /** Redirect path if no other routes found */ + fallback_route: "/template/home_screen", + /** Specific list of url redirects from within the app */ + redirects: [ + { + path: "home", + redirectTo: "/template/home_screen", + }, + { + path: "privacy", + redirectTo: "/template/app_menu_privacy_policy", + }, + ], +}; + +const APP_HEADER_DEFAULTS = { + title: "App", + // default only show menu button on home screen + should_show_menu_button: (location: Location) => + activeRoute(location) === APP_ROUTE_DEFAULTS.home_route, + // default show back button on all screens except home screen + should_show_back_button: (location: Location) => + activeRoute(location) !== APP_ROUTE_DEFAULTS.home_route, + // on device minimize app when back button pressed from home screen + should_minimize_app_on_back: (location: Location) => + activeRoute(location) === APP_ROUTE_DEFAULTS.home_route, +}; + +/** Utility function to return the active pathname without any sidebar routing e.g. /home(sidebar:alt) */ +const activeRoute = (location: Location) => { + return location.pathname.replace(/\(.+\)/, ""); +}; + +const APP_FOOTER_DEFAULTS: { templateName: string | null } = { + templateName: null, +}; + +const APP_SIDEMENU_DEFAULTS = { + enabled: true, + title: "App", + // name of template to display in sidebar + template_name: "app_menu", + // show the current version number in the menu + should_show_version: true, + // show the current deployment name (e.g. Default) + should_show_deployment_name: false, +}; + +const APP_AUTHENTICATION_DEFAULTS = { + enforceLogin: false, + signInTemplate: "sign_in", +}; + +type IAppLaunchAction = { + type: "template_popup" | "tour_start"; + value: string; +}; +/** Define app-specific startup tasks and logic */ +const APP_INITIALISATION_DEFAULTS = { + /** Define initial launch tasks to be performed before main content loaded */ + app_first_launch_actions: [] as IAppLaunchAction[], + + // TODO - better if refactored to more general handler with condition to filter + // for things such as app_first_launch, app_version_first_launch etc. and pass data fields +}; + +const FEEDBACK_MODULE_DEFAULTS = { + /** Buttons that will be made available during feedback mode when context events triggered (e.g. right-click) */ + buttons: [ + { + id: "feedback-addFeedback", + menuButtonText: APP_STRINGS.feedback_add_button_text, + appearInMenus: ["rightClick", "longPress", "textSelect"] as any[], + displayedTemplate: "feature_feedback_default", + }, + { + id: "feedback-suggestChange", + menuButtonText: APP_STRINGS.feedback_suggest_change_text, + appearInMenus: ["textSelect"] as any[], + displayedTemplate: "feature_feedback_text_select", + }, + ], + /** Field to populate with selected text for use in templates */ + selected_text_field: "_feedback_selected_text", + sidebar_open_field: "_feedback_sidebar_open", +}; + +const APP_UPDATES = { + /** Check for updates on init and enable in-app "app_update" template actions */ + enabled: false, + /** + * Template to be displayed after a flexible update has downloaded, prompting the user to install + * the update and restart the app. It should include a button that triggers the "app_update | complete" action + * If no template is provided provided, installation of the downloaded flexible update will be completed on next app init + */ + completeUpdateTemplate: "app_update_complete", + /** Track whether an update is available for download */ + app_update_available_field: "_app_update_available", + /** Track whether an update has been downloaded and is available for install */ + app_update_downloaded_field: "_app_update_downloaded", +}; + +const ASSET_PACKS = { + enabled: false, + /** By convention, this should match the deployment name */ + bucketName: "", + folderName: "asset_packs", +}; + +const APP_CONFIG = { + APP_FIELDS, + APP_HEADER_DEFAULTS, + APP_INITIALISATION_DEFAULTS, + APP_AUTHENTICATION_DEFAULTS, + APP_LANGUAGES, + APP_ROUTE_DEFAULTS, + APP_SIDEMENU_DEFAULTS, + APP_FOOTER_DEFAULTS, + APP_STRINGS, + APP_SKINS, + APP_THEMES, + APP_UPDATES, + ASSET_PACKS, + DYNAMIC_PREFIXES, + FEEDBACK_MODULE_DEFAULTS, + FIELD_PREFIX, + NOTIFICATIONS_SYNC_FREQUENCY_MS, + NOTIFICATION_DEFAULTS, + SERVER_SYNC_FREQUENCY_MS, +}; +// Export as a clone to avoid risk one import could alter another +export const getDefaultAppConfig = () => clone(APP_CONFIG); +export type IAppConfig = typeof APP_CONFIG; + +/** A recursive version of Partial, making all properties, included nested ones, optional. + * Copied from https://stackoverflow.com/a/47914631 + */ +export type RecursivePartial = { + [P in keyof T]?: RecursivePartial; +}; +export type IAppConfigOverride = RecursivePartial; diff --git a/packages/data-models/constants.ts b/packages/data-models/constants.ts deleted file mode 100644 index 229a15b0a8..0000000000 --- a/packages/data-models/constants.ts +++ /dev/null @@ -1,157 +0,0 @@ -/// - -/********************************************************************************************* - * Constants used throughout the app - * - * NOTE - this file should not be edited directly. All constants can be overridden - * via the `app_constants` field in deployment configs - * - * NOTE - as these are merged when setting deployment, avoid `_path` suffix as that has - * special use case for relative paths - ********************************************************************************************/ - -const DYNAMIC_PREFIXES = [ - "local", - "field", - "fields", - "global", - "data", - "campaign", - "calc", - "item", - "raw", -] as const; - -/** - * All localstorage fields will be prefixed with this - * TODO - this has not been consistently applied so refactoring required - * */ -const FIELD_PREFIX = "rp-contact-field"; - -/** - * Fieldnames hardcoded into the app - * TODO - these have not been consistently applied so refactoring required - * */ -const APP_FIELDS = { - SERVER_SYNC_LATEST: `${FIELD_PREFIX}._server_sync_latest`, - APP_LANGUAGE: `${FIELD_PREFIX}._app_language`, - DEPLOYMENT_NAME: `${FIELD_PREFIX}._deployment_name`, -}; - -const APP_LANGUAGES = { - /** Language used during first load. If translations do not exist will default to source strings (gb_en) */ - default: "gb_en", -}; - -/** - * Some specific strings are currently hardcoded into the app - * TODO - not all strings included, should add to when required - */ -const APP_STRINGS = {}; - -const NOTIFICATION_DEFAULTS = { - title: "Notification", - text: "You have a new message", - time: { - hour: 12, - minute: 0, - }, -}; - -/** How often to attempt to re-evaluate scheduled notifications - currently every minutes */ -const NOTIFICATIONS_SYNC_FREQUENCY_MS = 1000 * 60 * 3; - -/** How often to attempt sync - currently every 5mins */ -const SERVER_SYNC_FREQUENCY_MS = 1000 * 60 * 5; - -const APP_ROUTE_DEFAULTS = { - /** Default redirect form landing '/' route */ - home_route: "/template/home_screen", - /** Redirect path if no other routes found */ - fallback_route: "/template/home_screen", - /** Specific list of url redirects from within the app */ - redirects: [ - { - path: "home", - redirectTo: "/template/home_screen", - }, - { - path: "privacy", - redirectTo: "/template/app_menu_privacy_policy", - }, - ], -}; - -const APP_HEADER_DEFAULTS = { - title: "App", - // default only show menu button on home screen - should_show_menu_button: (location: Location) => - location.pathname == APP_ROUTE_DEFAULTS.home_route, - // default show back button on all screens except home screen - should_show_back_button: (location: Location) => - location.pathname !== APP_ROUTE_DEFAULTS.home_route, - // on device minimize app when back button pressed from home screen - should_minimize_app_on_back: (location: Location) => - location.pathname == APP_ROUTE_DEFAULTS.home_route, -}; - -const APP_SIDEMENU_DEFAULTS = { - title: "App", - // name of template to display in sidebar - template_name: "app_menu", - // show the current version number in the menu - should_show_version: true, - // show the current deployment name (e.g. Default) - should_show_deployment_name: false, -}; - -type IAppLaunchAction = { - type: "run_survey" | "template_popup" | "tour_start"; - value: string; -}; -/** Define app-specific startup tasks and logic */ -const APP_INITIALISATION_DEFAULTS = { - /** Define initial launch tasks to be performed before main content loaded */ - app_first_launch_actions: [] as IAppLaunchAction[], - - // TODO - better if refactored to more general handler with condition to filter - // for things such as app_first_launch, app_version_first_launch etc. and pass data fields -}; - -const FEEDBACK_MODULE_DEFAULTS = { - /** Buttons that will be made available during feedback mode when context events triggered (e.g. right-click) */ - buttons: [ - { - id: "feedback-addFeedback", - menuButtonText: "Add Feedback", - appearInMenus: ["rightClick", "longPress", "textSelect"] as any[], - displayedTemplate: "feature_feedback_default", - }, - { - id: "feedback-suggestChange", - menuButtonText: "Suggest Change", - appearInMenus: ["textSelect"] as any[], - displayedTemplate: "feature_feedback_text_select", - }, - ], - /** Field to populate with selected text for use in templates */ - selected_text_field: "_feedback_selected_text", -}; - -const APP_CONSTANTS = { - APP_FIELDS, - APP_HEADER_DEFAULTS, - APP_INITIALISATION_DEFAULTS, - APP_LANGUAGES, - APP_ROUTE_DEFAULTS, - APP_SIDEMENU_DEFAULTS, - APP_STRINGS, - DYNAMIC_PREFIXES, - FEEDBACK_MODULE_DEFAULTS, - FIELD_PREFIX, - NOTIFICATIONS_SYNC_FREQUENCY_MS, - NOTIFICATION_DEFAULTS, - SERVER_SYNC_FREQUENCY_MS, -}; - -export default APP_CONSTANTS; diff --git a/packages/data-models/db.model.ts b/packages/data-models/db.model.ts index b078f94adb..8ebef41af2 100644 --- a/packages/data-models/db.model.ts +++ b/packages/data-models/db.model.ts @@ -21,7 +21,7 @@ export const DB_TABLES = { /** Long term tracking of changes to user data, such as contact fields */ data_events: "++id," + FLOW_EVENT_INDEXES, /** Scheduled and sent local notifications, including whether the app has had chance to process callbacks */ - local_notifications: "id,_created,_callbacks_processed", + local_notifications: "id,_created,_callbacks_processed,_row_id", /** Subset of notifications shared with server (for ease of processings) */ local_notifications_interaction: `++id,¬ification_id,${SYNC_INDEX}`, @@ -103,13 +103,10 @@ export interface IDBDoc { /** * All databases must contain an incremented version number, and any migration logic - * required between versions. Currently using app version number to track when the + * required between versions. Currently using datestamp to track when the * breaking changes occurred (does not need to be updated every version) - * e.g. v1.5.3 => 100500300 - * e.g. v0.1.0 => 000001000 - * e.g. v0.10.4 => 000010004 */ -export const DB_VERSION = 14003; +export const DB_VERSION = 20230109; export interface IDBEvent { topic: "DB"; diff --git a/packages/data-models/deployment.model.ts b/packages/data-models/deployment.model.ts index 54fb35aa77..308be24f6c 100644 --- a/packages/data-models/deployment.model.ts +++ b/packages/data-models/deployment.model.ts @@ -1,15 +1,17 @@ -import type APP_CONSTANTS from "./constants"; +import type { IAppConfig } from "./appConfig"; + +/** Update version to force recompile next time deployment set (e.g. after default config update) */ +export const DEPLOYMENT_CONFIG_VERSION = 20230428; export interface IDeploymentConfig { /** Friendly name used to identify the deployment name */ name: string; + google_drive: { /** ID of folder containing app sheets, as seen in end of url */ sheets_folder_id: string; /** ID of folder containing app assets, as seen in end of url */ assets_folder_id: string; - /** cache of downloaded gdrive files. Default `./cache/gdrive` */ - cache_path?: string; /** generated gdrive access token. Default `packages/scripts/config/token.json` */ auth_token_path?: string; /** filter function applied to sheets download that receives basic file info such as folder and id. Default `(gdriveEntry)=>true` */ @@ -17,40 +19,83 @@ export interface IDeploymentConfig { /** filter function applied to assets download that receives basic file info such as folder and id. Default `(gdriveEntry)=>true` */ assets_filter_function?: (gdriveEntry: IGdriveEntry) => boolean; }; + local_drive: { + /** Location to sheets folder if working from local drive instead of google */ + sheets_path: string; + /** Location to assets folder if working from local drive instead of google */ + assets_path: string; + }; + android: { + /** Location of source android assets (splash and launcher source images). */ + icon_asset_path?: string; + splash_asset_path?: string; + icon_asset_foreground_path?: string; + icon_asset_background_path?: string; + }; + api: { + /** Name of target db for api operations. Default `plh` */ + db_name?: string; + /** + * Target endpoint for api. Default `https://apps-server.idems.international/api` + * Will be replaced when running locally as per `src\app\shared\services\server\interceptors.ts` + * */ + endpoint?: string; + }; /** Optional override of any provided constants from data-models/constants */ - app_constants?: Partial; - app_data?: { - /** processed sheets for use in app. Default `packages/app-data/sheets` */ - sheets_output_path?: string; - /** partially compiled sheets for use in repopulation. Default `./cache/converter` */ - converter_cache_path?: string; - /** processed assets for use in app. Defaults `packages/app_data/assets` */ - assets_output_path?: string; + app_config: IAppConfig; + app_data: { + /** Folder to populate processed content. Default `packages/app-data` */ + output_path: string; /** filter function that receives converted flows. Default `(flow)=>true`*/ - sheets_filter_function?: (flow: IFlowTypeBase) => boolean; + sheets_filter_function: (flow: IFlowTypeBase) => boolean; /** filter function that receives basic file info such as relativePath and size. Default `(fileEntry)=>true`*/ - assets_filter_function?: (fileEntry: IContentsEntry) => boolean; - /** processed translations for use in app. Default `packages/app_data/translations` */ - translations_output_path?: string; + assets_filter_function: (fileEntry: IContentsEntry) => boolean; }; - translations?: { + git: { + /** Url of external git repo to store content */ + content_repo?: string; + /** Current tag of content for release */ + content_tag_latest?: string; + }; + /** 3rd party integration for remote asset storage and sync */ + supabase: { + enabled: boolean; + url?: string; + publicApiKey?: string; + }; + translations: { /** List of all language codes to include. Default null (includes all) */ filter_language_codes?: string[]; /** generated output of list of strings to translate. Default `./app_data/translations_source/source_strings` */ source_strings_path?: string; /** translated string for import. Default `./app_data/translations_source/translated_strings */ translated_strings_path?: string; - /** generated output cache. Default `./cache/translations_source` */ - output_cache_path?: string; }; - workflows?: string[]; + workflows: { + /** path to custom workflow files to include */ + custom_ts_files: string[]; + /** path for task working directory. Default `./tasks` */ + task_cache_path: string; + }; + /** 3rd party integration for logging services */ + error_logging?: { + /** sentry/glitchtip logging dsn */ + dsn: string; + }; + /** track whether deployment processed from default config */ + _validated: boolean; + /** version number added from scripts to recompile on core changes */ + _version: number; + /** track parent config */ + _parent_config?: Partial; } -/** Minimal example of just required config */ -export const DEPLOYMENT_CONFIG_EXAMPLE_MIN: IDeploymentConfig = { - name: "Minimal Config Example", - google_drive: { assets_folder_id: "", sheets_folder_id: "" }, -}; +/** Deployment with additional metadata when set as active deployment */ +export interface IDeploymentConfigJson extends IDeploymentConfig { + _workspace_path: string; + _config_ts_path: string; + _config_version: number; +} /** Full example of just all config once merged with defaults */ export const DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS: IDeploymentConfig = { @@ -62,21 +107,38 @@ export const DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS: IDeploymentConfig = { sheets_filter_function: (gdriveEntry) => true, assets_filter_function: (gdriveEntry) => true, }, - app_constants: {}, + android: {}, + api: { + db_name: "plh", + endpoint: "https://apps-server.idems.international/api", + }, + app_config: {} as any, // populated by `getDefaultAppConstants()`, + local_drive: { + assets_path: "./assets", + sheets_path: "./sheets", + }, app_data: { - sheets_output_path: "packages/app-data/sheets", - converter_cache_path: "./cache/converter", - assets_output_path: "packages/app-data/assets", - translations_output_path: "packages/app-data/translations", + // TODO - change to local ./app-data folder once git repos in use + output_path: "packages/app-data", sheets_filter_function: (flow) => true, assets_filter_function: (fileEntry) => true, }, + supabase: { + enabled: false, + }, translations: { filter_language_codes: null, source_strings_path: "./app_data/translations_source/source_strings", translated_strings_path: "./app_data/translations_source/translated_strings", - output_cache_path: "./cache/translations", }, + workflows: { + custom_ts_files: [], + task_cache_path: "./tasks", + }, + git: {}, + _validated: true, + _parent_config: null, + _version: 1.0, }; /** Duplicate type defintion from scripts (TODO - find better way to share) */ @@ -85,6 +147,8 @@ interface IContentsEntry { size_kb: number; modifiedTime: string; md5Checksum: string; + /** specific path to file when not the same as relativePath, e.g. asset overrides */ + filePath?: string; } /** Duplicate type definition from gdrive-downloader (TODO - find better way to share) */ @@ -108,3 +172,14 @@ interface IFlowTypeBase { flow_subtype?: string; status: "draft" | "released"; } + +export type IContentsEntryMinimal = Omit; + +export interface IAssetEntry extends IContentsEntryMinimal { + overrides?: { + [theme_name: string]: { + [language_code: string]: IContentsEntryMinimal; + }; + }; +} +export type IAssetEntryHashmap = { [assetPath: string]: IAssetEntry }; diff --git a/packages/data-models/flowTypes.ts b/packages/data-models/flowTypes.ts index ba6d2b13ed..fac00427f1 100644 --- a/packages/data-models/flowTypes.ts +++ b/packages/data-models/flowTypes.ts @@ -1,4 +1,7 @@ -import APP_CONSTANTS from "./constants"; +/* eslint @typescript-eslint/sort-type-constituents: "warn" */ + +import type { IDataPipeOperation } from "shared/src/models/dataPipe/types"; +import type { IAppConfig } from "./appConfig"; /********************************************************************************************* * Base flow types @@ -6,13 +9,17 @@ import APP_CONSTANTS from "./constants"; export namespace FlowTypes { export type FlowType = - | "tour" - | "template" - // global data provides data to other modules, without namespacing (all top-level) - | "global" // data_lists are a general catch for any data that will be used throughout the app, but // without defined typings (such as habit_list). - | "data_list"; + | "data_list" + // data_pipes are used to modify or generate new data_lists via processing methods + | "data_pipe" + // generators can create any other flow type using a source datalist and flow skeleton + | "generator" + // global data provides data to other modules, without namespacing (all top-level) + | "global" + | "template" + | "tour"; // NOTE - most of these types are duplicated in src/data, should eventually refactor to common libs @@ -35,8 +42,11 @@ export namespace FlowTypes { /** if specified, template will override target template (e.g. A/B testing) */ override_target?: string; /** condition to evaluate for applying override */ - override_condition?: string | boolean; // dynamic references will be strings, but converted to boolean during evaluation + override_condition?: boolean | string; // dynamic references will be strings, but converted to boolean during evaluation + /** additional parameters passed to flows */ + parameter_list?: Record; /** computed list of all other templates with override conditions that targetthis template */ + _overrides?: { [templatename: string]: any; // override condition }; @@ -53,6 +63,8 @@ export namespace FlowTypes { rows: any[]; /** Datalists populate rows as a hashmap instead to allow easier access to nested structures */ rowsHashmap?: { [id: string]: any }; + /** Additional flows generated during parsing, such as data pipe or generator flow outputs */ + _generated?: { [flow_type in FlowType]?: { [flow_name: string]: FlowTypeWithData } }; } /********************************************************************************************* @@ -62,6 +74,19 @@ export namespace FlowTypes { flow_type: "data_list"; rows: Data_listRow[]; } + export interface DataPipeFlow extends FlowTypeWithData { + flow_type: "data_pipe"; + rows: IDataPipeOperation[]; + } + export interface GeneratorFlow extends FlowTypeWithData { + flow_type: "generator"; + parameter_list: { + input_data_list: string; + output_flow_name?: string; + output_flow_subtype?: string; + output_flow_type?: FlowType; + }; + } export interface Translation_strings { [sourceText: string]: string; } @@ -94,15 +119,16 @@ export namespace FlowTypes { main_image_asset?: string; } export interface Module_pageRow { - row_id?: string | number; + row_id?: number | string; type: - | "main_image" - | "title" | "button" | "description" + | "main_image" | "step_group" | "step_intro" - | "step_item"; + | "step_item" + | "title"; + text?: string; task_id?: string; media_asset?: string; @@ -110,9 +136,9 @@ export namespace FlowTypes { rows?: Module_pageRow[]; } /** all data_list type must provide a unique id for each row to allow */ - export type Data_listRow = { id: string } & T; + export type Data_listRow = T & { id: string }; /** As not all tasks will launch flows, use actions to specify different ways to handle a task */ - export type Start_action = "start_new_flow" | "give_award" | "open_app"; + export type Start_action = "give_award" | "open_app" | "start_new_flow"; export interface Campaign_listRow extends RowWithActivationConditions { id: string; @@ -148,7 +174,7 @@ export namespace FlowTypes { } export interface DataEvaluationCondition { /** specific defined actions that have individual methods to determine completion */ - condition_type: "field_evaluation" | "db_lookup" | "calc"; + condition_type: "calc" | "db_lookup" | "field_evaluation"; /** Condition args change depending on type, hard to enforce typing switch so just include type mapping */ condition_args: { db_lookup?: { @@ -157,12 +183,12 @@ export namespace FlowTypes { // NOTE - where queries only support text or number // see: https://github.com/dfahlander/Dexie.js/issues/427 // (non-sparse indexes) - where: { [field: string]: string | number }; // e.g. {name:reminder_1.sent, value:'true'} ; + where: { [field: string]: number | string }; // e.g. {name:reminder_1.sent, value:'true'} ; order?: "asc" | "desc"; evaluate?: { - operator: ">" | "<="; - value: string | number | boolean; - unit?: "day" | "app_day"; + operator: "<=" | ">"; + value: boolean | number | string; + unit?: "app_day" | "day"; }; }; field_evaluation?: { @@ -178,6 +204,14 @@ export namespace FlowTypes { _cleaned?: string; _parsed?: string[][]; } + export interface Lifecycle_Action { + lifecycle_event: LifecycleEvent; + id: string; + priority?: number; // priority order in which to run actions + condition_list?: string[]; + action_list: TemplateRowAction[]; + } + export type LifecycleEvent = "app_start"; // scope to add app_open, app_close, app_minimize, app_first_start etc. export interface RowWithActivationConditions { /** evaluated statements for activating campaign */ activation_condition_list?: DataEvaluationCondition[]; @@ -211,59 +245,67 @@ export namespace FlowTypes { rows: TemplateRow[]; comments?: string; } - export type TemplateRowType = - | "accordion" - | "image" - | "title" - | "subtitle" - | "text" - | "animated_section" | "accordion_section" + | "accordion" | "advanced_dashed_box" - | "parent_point_counter" - | "help_icon" - | "workshops_accordion" - | "form" - | "toggle_bar" | "animated_section_group" - | "display_group" - | "set_variable" - | "set_theme" - // TODO - requires global implementation (and possibly rename to set_field_default as value does not override) - | "set_field" - | "set_local" - | "set_field" - | "update_action_list" // update own action list - | "nested_properties" - | "button" - | "image" + | "animated_section" + | "animated_slides" | "audio" - | "video" + | "button" + | "carousel" + | "combo_box" + | "dashed_box" + | "data_items" + | "debug_toggle" + | "display_grid" + | "display_group" | "display_theme" - | "template" - | "timer" - | "slider" - | "number_selector" - | "round_button" - | "square_button" + | "drawer" + | "form" + | "help_icon" + | "html" + | "icon_banner" + | "image" + | "items" + | "latex" + | "lottie_animation" | "nav_group" | "nav_section" - | "simple_checkbox" + | "navigation_bar" + | "nested_properties" + | "number_selector" + | "odk_form" + | "parent_point_box" + | "parent_point_counter" + | "pdf" + | "qr_code" + | "radio_button_grid" + | "radio_group" + | "round_button" + | "select_text" | "set_default" - | "text_box" + | "set_field" // TODO - requires global implementation (and possibly rename to set_field_default as value does not override) + | "set_local" + | "set_variable" + | "simple_checkbox" + | "slider" + | "square_button" + | "subtitle" + | "task_card" + | "task_progress_bar" + | "template" | "text_area" - | "radio_group" + | "text_box" + | "text" | "tile_component" - | "combo_box" - | "icon_banner" - | "dashed_box" - | "lottie_animation" - | "parent_point_box" - | "debug_toggle" - | "items" - | "select_text" - | "html"; + | "timer" + | "title" + | "toggle_bar" + | "update_action_list" // update own action list + | "video" + | "workshops_accordion"; export interface TemplateRow extends Row_with_translations { type: TemplateRowType; @@ -272,10 +314,10 @@ export namespace FlowTypes { action_list?: TemplateRowAction[]; style_list?: string[]; parameter_list?: { [param: string]: string }; - hidden?: string | boolean; // dynamic references will be strings, but converted to boolean during evaluation + hidden?: boolean | string; // dynamic references will be strings, but converted to boolean during evaluation rows?: TemplateRow[]; - disabled?: string | boolean; // dynamic references will be strings, but converted to boolean during evaluation - condition?: string | boolean; // dynamic references will be strings, but converted to boolean during evaluation + disabled?: boolean | string; // dynamic references will be strings, but converted to boolean during evaluation + condition?: boolean | string; // dynamic references will be strings, but converted to boolean during evaluation is_override_target?: boolean; // prevent template being overridden when calling self via override_target (prevent infinite loops) _debug_name?: string; // some components may optionally provide a different name for debugging purposes _nested_name: string; // track full path to row when nested in a template (e.g. contentBox1.row2.title) @@ -291,9 +333,9 @@ export namespace FlowTypes { _evalContext?: { itemContext: any }; // force specific context variables when calculating eval statements (such as loop items) __EMPTY?: any; // empty cells (can be removed after pr 679 merged) } - export type IDynamicField = { [key: string]: TemplateRowDynamicEvaluator[] | IDynamicField }; + export type IDynamicField = { [key: string]: IDynamicField | TemplateRowDynamicEvaluator[] }; - type IDynamicPrefix = typeof APP_CONSTANTS.DYNAMIC_PREFIXES[number]; + type IDynamicPrefix = IAppConfig["DYNAMIC_PREFIXES"][number]; /** Data passed back from regex match, e.g. expression @local.someField => type:local, fieldName: someField */ export interface TemplateRowDynamicEvaluator { @@ -309,43 +351,57 @@ export namespace FlowTypes { } export type TemplateRowActionTrigger = - | "click" - | "completed" - | "uncompleted" - | "changed" - | "audio_play" - | "audio_pause" | "audio_end" | "audio_first_start" + | "audio_pause" + | "audio_play" + | "changed" + | "click" + | "completed" + | "info_click" | "nav_resume" // return to template after navigation or popup close; - | "sent"; // notification sent + | "sent" // notification sent + | "uncompleted"; + + // TODO document '' action for stop propagation + // note - to keep target nav within component stack go_to is actually just a special case of pop_up + // TODO - 2021-03-11 - most of list needs reconsideration/implementation + export const ACTION_ID_LIST = [ + "", + "app_update", + "asset_pack", + "audio_end", + "audio_play", + "changed", + "close_pop_up", + "emit", + "feedback", + "go_to", + "go_to_url", + "google_auth", + "pop_up", + "process_template", + "reset_app", + "set_field", + "set_item", + "set_items", + "set_local", + "share", + "style", + "start_tour", + "task_group_set_highlighted", + "toggle_field", + "track_event", + "trigger_actions", + ] as const; export interface TemplateRowAction { /** actions have an associated trigger */ trigger: TemplateRowActionTrigger; - // TODO - 2021-03-11 - most of list needs reconsideration/implementation - action_id: - | "" // TODO document this property for stop propogation - | "reset_app" - | "set_field" - | "set_local" - | "emit" - | "feedback" - | "changed" - // note - to keep target nav within component stack go_to is actually just a special case of pop_up - | "go_to" - | "go_to_url" - | "pop_up" - | "audio_end" - | "audio_play" - | "style" - | "close_pop_up" - | "set_theme" - | "start_tour" - | "trigger_actions" - | "track_event" - | "process_template"; - args: any[]; // should be string | boolean, but breaks type-checking for templates; + action_id: typeof ACTION_ID_LIST[number]; + args: any[]; // should be boolean | string, but breaks type-checking for templates; + params?: any; // additional params also used by args (does not require position argument) + // TODO - CC 2022-04-29 - ideally args should be included as part of params _triggeredBy?: TemplateRow; // tracking the component that triggered the action for logging; /** * most actions are specified from a parent template (begin_template statement) and are executed @@ -363,7 +419,7 @@ export namespace FlowTypes { } export interface GlobalRow extends Row_with_translations { - type: "declare_global_constant" | "declare_field_default"; + type: "declare_field_default" | "declare_global_constant"; name: string; value: any; comments?: string; diff --git a/packages/data-models/functions.ts b/packages/data-models/functions.ts index 313ef769c5..9151d01a46 100644 --- a/packages/data-models/functions.ts +++ b/packages/data-models/functions.ts @@ -1,6 +1,6 @@ // import const from app-data directly as typings can sometimes break otherwise +import { getDefaultAppConfig } from "./appConfig"; import { FlowTypes } from "./flowTypes"; -import APP_CONSTANTS from "./constants"; /** * Regex used to match dynamic strings. Specific keypoints: @@ -87,7 +87,7 @@ export function extractDynamicEvaluators( type = "raw"; } // cross-check to ensure lookup matches one of the pre-defined dynamic field types (e.g. not email@domain.com) - if (!APP_CONSTANTS.DYNAMIC_PREFIXES.includes(type)) { + if (!getDefaultAppConfig().DYNAMIC_PREFIXES.includes(type)) { return undefined; } return { fullExpression, matchedExpression, type, fieldName }; diff --git a/packages/data-models/index.ts b/packages/data-models/index.ts index aa2a169b5c..09769c9c38 100644 --- a/packages/data-models/index.ts +++ b/packages/data-models/index.ts @@ -1,9 +1,12 @@ export * from "./flowTypes"; export * from "./functions"; -export * from "./workflow.model"; -export * from "./workflows"; -export { IDeploymentConfig, DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS } from "./deployment.model"; - -// Constants are not designed to be consumed directly, but rather following merge with deployment config -import CONSTANTS from "./constants"; -export const DEFAULT_CONSTANTS = CONSTANTS; +// NOTE - avoid exporting workflows as node-based can't be consumed by frontend src +// export { IDeploymentWorkflows, IWorkflow, IWorkflowContext, WORKFLOW_DEFAULTS } from "./workflows"; +export { + IDeploymentConfig, + IDeploymentConfigJson, + DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS, + DEPLOYMENT_CONFIG_VERSION, +} from "./deployment.model"; +export { IAppSkin } from "./skin.model"; +export { IAppConfig, IAppConfigOverride, getDefaultAppConfig } from "./appConfig"; diff --git a/packages/data-models/package.json b/packages/data-models/package.json index ff26fbaca3..348fdcbe51 100644 --- a/packages/data-models/package.json +++ b/packages/data-models/package.json @@ -8,8 +8,13 @@ "serve": "tsc -w" }, "devDependencies": { - "@types/node": "^15.12.4", + "@types/clone": "^2.1.1", + "@types/node": "^16.18.9", "scripts": "workspace:*", + "shared": "workspace:*", "typescript": "~4.2.4" + }, + "dependencies": { + "clone": "^2.1.2" } } diff --git a/packages/data-models/skin.model.ts b/packages/data-models/skin.model.ts new file mode 100644 index 0000000000..d6c627b925 --- /dev/null +++ b/packages/data-models/skin.model.ts @@ -0,0 +1,24 @@ +import { IAppConfigOverride } from "./appConfig"; + +/** Skins can be applied to an app to override values within the core APP_CONFIG. + * They can also be referenced by name at the template level to apply skin-specific overrides. + * + * @example + * ```ts + * { + * name: "no_sidemenu", + * appConfig: { + * APP_SIDEMENU_DEFAULTS: { + * enabled: false + * } + * APP_HEADER_DEFAULTS: { + * should_show_menu_button: false + * } + * } + * } + *``` + */ +export interface IAppSkin { + name: string; + appConfig?: IAppConfigOverride; +} diff --git a/packages/data-models/workflow.model.ts b/packages/data-models/workflow.model.ts deleted file mode 100644 index 48f5c63635..0000000000 --- a/packages/data-models/workflow.model.ts +++ /dev/null @@ -1,28 +0,0 @@ -// NOTE - this import can lead to build issues -// https://www.codejam.info/2021/10/typescript-cannot-write-file-overwrite-input.html -import type { ITasks } from "scripts/src/tasks"; -import { IDeploymentConfig } from "."; - -export interface IWorkflowContext { - [step_name: string]: { output: any }; -} - -interface IWorkflowStep { - name: string; - function: (context: { - config: IDeploymentConfig; - workflow: IWorkflowContext; - tasks: ITasks; - }) => Promise; -} -export interface IWorkflow { - label: string; - steps: IWorkflowStep[]; -} - -export interface IDeploymentWorkflows { - [name: string]: IWorkflow; -} - -// local cache bust to force recompile of tasks -const version = 1.4; diff --git a/packages/data-models/workflows.ts b/packages/data-models/workflows.ts deleted file mode 100644 index ef90ccbda5..0000000000 --- a/packages/data-models/workflows.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { IDeploymentWorkflows } from "./workflow.model"; -/** Default workflows made available to all deployments */ -export const WORKFLOW_DEFAULTS: IDeploymentWorkflows = { - sync: { - label: "Sync All Content", - steps: [ - { - name: "sync_sheets", - function: async ({ tasks, workflow }) => - tasks.workflow.runWorkflow({ name: "sync_sheets", parent: workflow }), - }, - { - name: "sync_assets", - function: async ({ tasks, workflow }) => - tasks.workflow.runWorkflow({ name: "sync_assets", parent: workflow }), - }, - ], - }, - sync_sheets: { - label: "Sync Latest Sheets", - steps: [ - { - name: "sheets_dl", - function: async ({ tasks, config }) => - tasks.gdrive.download({ folderId: config.google_drive.sheets_folder_id }), - }, - { - name: "sheets_process", - function: async ({ tasks, workflow }) => - tasks.template.process({ inputFolder: workflow.sheets_dl.output }), - }, - { - name: "translations_apply", - function: async ({ tasks, workflow }) => - tasks.translate.apply({ inputFolder: workflow.sheets_process.output }), - }, - { - name: "translations_copy_for_export", - function: async ({ tasks, workflow }) => - tasks.translate.copyContentForTranslators({ - inputFolder: workflow.sheets_process.output, - }), - }, - { - name: "app_copy_sheets", - function: async ({ tasks, workflow, config }) => - tasks.appData.copy({ - localSheetsFolder: workflow.translations_apply.output.sheets, - localTranslationsFolder: workflow.translations_apply.output.strings, - appSheetsFolder: config.app_data.sheets_output_path, - appTranslationsFolder: config.app_data.translations_output_path, - }), - }, - ], - }, - sync_assets: { - label: "Sync Latest Assets", - steps: [ - { - name: "assets_dl", - function: async ({ tasks, config }) => - tasks.gdrive.download({ folderId: config.google_drive.assets_folder_id }), - }, - { - name: "app_copy_assets", - function: async ({ tasks, workflow, config }) => - tasks.appData.copy({ - localAssetsFolder: workflow.assets_dl.output, - appAssetsFolder: config.app_data.assets_output_path, - }), - }, - ], - }, - setup: { - label: "(TODO) - Setup Deployment", - steps: [], - }, -}; diff --git a/packages/data-models/workflows/android.workflows.ts b/packages/data-models/workflows/android.workflows.ts new file mode 100644 index 0000000000..e64871afb6 --- /dev/null +++ b/packages/data-models/workflows/android.workflows.ts @@ -0,0 +1,50 @@ +import type { IDeploymentWorkflows } from "./workflow.model"; +/** Default workflows made available to all deployments */ +const workflows: IDeploymentWorkflows = { + // Generate Android assets from source images (splash.png, icon.png and, optionally, icon-foreground.png and icon-background.png) + // Icon images must be at least 1024×1024px, splash image must be at least 2732×2732px + // Further specifications provided here: https://www.npmjs.com/package/cordova-res + populate_android_assets: { + label: "Populate Android assets (app icon and splash screen)", + steps: [ + { + name: "set_splash_image", + function: async ({ tasks, workflow }) => + tasks.workflow.runWorkflow({ name: "set_splash_image", parent: workflow }), + }, + { + name: "set_launcher_icon", + function: async ({ tasks, workflow }) => + tasks.workflow.runWorkflow({ name: "set_launcher_icon", parent: workflow }), + }, + ], + }, + set_splash_image: { + label: "Generate splash screen image from splash.png asset and copy to relevant folders", + steps: [ + { + name: "set_splash_image", + function: async ({ tasks, config }) => { + tasks.android.set_splash_image(config.android.splash_asset_path); + }, + }, + ], + }, + set_launcher_icon: { + label: + "Generate app launcher icon from icon.png asset and, if provided, generate adaptive icon from icon-foreground.png and icon-background.png. Copy generated files to relevant folders", + steps: [ + { + name: "set_launcher_icon", + function: async ({ tasks, config }) => + tasks.android.set_launcher_icon({ + iconAssetPath: config.android.icon_asset_path, + iconAssetForegroundPath: config.android.icon_asset_foreground_path, + iconAssetBackgroundPath: config.android.icon_asset_background_path, + }), + }, + ], + }, +}; + +export default workflows; diff --git a/packages/data-models/workflows/deployment.workflows.ts b/packages/data-models/workflows/deployment.workflows.ts new file mode 100644 index 0000000000..b51a8b552a --- /dev/null +++ b/packages/data-models/workflows/deployment.workflows.ts @@ -0,0 +1,130 @@ +import type { IDeploymentWorkflows } from "./workflow.model"; +/** Default workflows made available to all deployments */ +const workflows: IDeploymentWorkflows = { + deployment: { + steps: [ + { + name: "", + function: async ({ args }) => { + const [childWorkflow] = args || []; + const childWorkflows = workflows.deployment.children; + if (!childWorkflow || !childWorkflows?.childWorkflow) { + console.log( + "available commands", + "\n\n" + + Object.keys(childWorkflows as IDeploymentWorkflows) + .map((name) => `deployment ${name}`) + .join("\n"), + "\n" + ); + return; + } + }, + }, + ], + children: { + // Copy app-data assets directly to src assets + // Note - this is already done as part of `tasks.appData.copy`, so just for postinstall + create: { + label: "Create a new local deployment", + steps: [ + { + name: "deployment create", + function: async ({ tasks }) => tasks.deployment.create(), + }, + { + name: "set deployment", + function: async ({ tasks, workflow }) => { + const shouldSet = await tasks.userInput.promptConfirmation( + "Would you like to set the deployment as active?", + true + ); + if (shouldSet) { + const deploymentName = workflow["deployment create"].output; + await tasks.workflow.runWorkflow({ + name: `deployment set ${deploymentName}`, + parent: workflow, + }); + } + }, + }, + ], + }, + import: { + label: "Import a remote deployment repository", + steps: [ + { + name: "deployment import", + function: async ({ tasks, args }) => tasks.deployment.import(args[0]), + }, + { + name: "set deployment", + function: async ({ tasks, workflow }) => { + const shouldSet = await tasks.userInput.promptConfirmation( + "Would you like to set the deployment as active?", + true + ); + if (shouldSet) { + const deploymentName = workflow["deployment import"].output; + await tasks.workflow.runWorkflow({ + name: `deployment set ${deploymentName}`, + parent: workflow, + }); + } + }, + }, + ], + }, + set: { + label: "Set active deployment", + steps: [ + { + name: "deployment set", + function: async ({ tasks, args }) => { + await tasks.deployment.set(args[0]); + }, + }, + // Ensure deployment decrypted once set + { + name: "decrypt", + function: async ({ tasks }) => { + await tasks.encryption.decrypt(); + }, + }, + { + name: "refresh_remote_content", + function: async ({ tasks, config }) => { + if (config.git?.content_repo) { + await tasks.git().refreshRemoteRepo(); + } + }, + }, + { + name: "copy_to_app", + function: async ({ tasks }) => tasks.appData.copyDeploymentDataToApp(), + }, + ], + }, + encrypt: { + label: "Encrypt deployment config", + steps: [ + { + name: "encrypt", + function: async ({ tasks, args }) => tasks.encryption.encrypt(args[0]), + }, + ], + }, + decrypt: { + label: "Decrypt deployment config", + steps: [ + { + name: "decrypt", + function: async ({ tasks, args }) => tasks.encryption.decrypt(args[0]), + }, + ], + }, + }, + }, +}; + +export default workflows; diff --git a/packages/data-models/workflows/index.ts b/packages/data-models/workflows/index.ts new file mode 100644 index 0000000000..42a900ad18 --- /dev/null +++ b/packages/data-models/workflows/index.ts @@ -0,0 +1,19 @@ +import type { IDeploymentWorkflows } from "./workflow.model"; + +import ANDROID_WORKFLOWS from "./android.workflows"; +import REPO_WORKFLOWS from "./repo.workflows"; +import DEPLOYMENT_WORKFLOWS from "./deployment.workflows"; +import MISC_WORKFLOWS from "./misc.workflows"; +import SYNC_WORKFLOWS from "./sync.workflows"; + +/** Default workflows made available to all deployments */ +const WORKFLOW_DEFAULTS: IDeploymentWorkflows = { + ...ANDROID_WORKFLOWS, + ...REPO_WORKFLOWS, + ...DEPLOYMENT_WORKFLOWS, + ...MISC_WORKFLOWS, + ...SYNC_WORKFLOWS, +}; + +export { WORKFLOW_DEFAULTS }; +export * from "./workflow.model"; diff --git a/packages/data-models/workflows/misc.workflows.ts b/packages/data-models/workflows/misc.workflows.ts new file mode 100644 index 0000000000..345502e540 --- /dev/null +++ b/packages/data-models/workflows/misc.workflows.ts @@ -0,0 +1,43 @@ +import { resolve } from "path"; +import type { IDeploymentWorkflows } from "./workflow.model"; + +/** Default workflows made available to all deployments */ +const workflows: IDeploymentWorkflows = { + // Copy app-data assets directly to src assets + // Note - this is already done as part of `tasks.appData.copy`, so just for postinstall + populate_src_assets: { + label: "Copy Assets to Src", + steps: [ + { + name: "populate_src_assets", + function: async ({ tasks }) => tasks.appData.copyDeploymentDataToApp(), + }, + ], + }, + clear_workflow_cache: { + label: "Clear workflow caches", + steps: [ + { + name: "Clear", + function: async ({ tasks, config }) => + tasks.file.remove({ src: config.workflows.task_cache_path }), + }, + ], + }, + translate_vtt_files: { + label: "Find .vtt files and generate new ones translated to the target language", + steps: [ + { + name: "translate_vtt_files", + function: async ({ tasks, config }) => { + const { output_path } = config.app_data; + const translationsPath = resolve(output_path, "translations"); + const assetsPath = resolve(output_path, "assets"); + await tasks.subtitles.translateAllVttFilesAndSave(translationsPath, assetsPath, "global"); + }, + }, + ], + }, +}; + +export default workflows; diff --git a/packages/data-models/workflows/repo.workflows.ts b/packages/data-models/workflows/repo.workflows.ts new file mode 100644 index 0000000000..485b5dbd64 --- /dev/null +++ b/packages/data-models/workflows/repo.workflows.ts @@ -0,0 +1,64 @@ +import { spawnSync } from "child_process"; +import type { IDeploymentWorkflows } from "./workflow.model"; +/** Default workflows made available to all deployments */ +const workflows: IDeploymentWorkflows = { + repo: { + label: "Tag a new content version for release", + steps: [ + { + name: "", + function: async ({ args }) => { + const [childWorkflow] = args || []; + const childWorkflows = workflows.deployment.children; + if (!childWorkflow || !childWorkflows?.childWorkflow) { + console.log( + "available commands", + "\n\n" + + Object.keys(childWorkflows as IDeploymentWorkflows) + .map((name) => `deployment ${name}`) + .join("\n"), + "\n" + ); + return; + } + }, + }, + ], + children: { + actions: { + label: "Configure Github Actions for repo", + steps: [ + { + name: "Github Actions setup", + function: async ({ tasks }) => { + tasks.actions.setup(); + }, + }, + ], + }, + open: { + label: "Open child repo in VSCode", + steps: [ + { + name: "open", + function: async ({ config }) => + spawnSync(`code ${config._workspace_path}`, { shell: true, stdio: "inherit" }), + }, + ], + }, + publish: { + label: "Create github release", + steps: [ + { + name: "publish", + function: async ({ tasks }) => { + await tasks.git().createContentRelease(); + }, + }, + ], + }, + }, + }, +}; + +export default workflows; diff --git a/packages/data-models/workflows/sync.workflows.ts b/packages/data-models/workflows/sync.workflows.ts new file mode 100644 index 0000000000..0569ee7863 --- /dev/null +++ b/packages/data-models/workflows/sync.workflows.ts @@ -0,0 +1,212 @@ +import { normalize } from "path"; +import { replicateDir } from "scripts/src/utils"; +import type { IDeploymentWorkflows, IWorkflowStepContext } from "./workflow.model"; + +/** Default workflows made available to all deployments */ +const workflows: IDeploymentWorkflows = { + sync: { + label: "Sync All Content", + options: [ + { + flags: "-cw, --content-watch", + description: "Listen for realtime updates to content drive", + }, + ], + steps: [ + { + condition: async ({ config }) => config.git?.content_repo !== undefined, + name: "sync_remote", + function: async ({ tasks }) => tasks.git().refreshRemoteRepo(), + }, + { + name: "sync_assets", + function: async ({ tasks, workflow }) => + tasks.workflow.runWorkflow({ name: "sync_assets", parent: workflow }), + }, + { + name: "sync_sheets", + function: async ({ tasks, workflow }) => + tasks.workflow.runWorkflow({ name: "sync_sheets", parent: workflow }), + }, + { + name: "copy_to_app", + function: async ({ tasks }) => tasks.appData.copyDeploymentDataToApp(), + }, + { + name: "sync_watch", + condition: async ({ options }) => options.contentWatch === true, + function: async ({ tasks, workflow }) => + tasks.workflow.runWorkflow({ name: "sync_watch", parent: workflow }), + }, + ], + }, + sync_sheets: { + label: "Sync Latest Sheets", + options: [ + { + flags: "-s, --skip-download", + description: "Skip download and just process local sheets", + }, + ], + steps: [ + { + name: "sheets_dl", + function: async ({ tasks, config, options }) => { + const folderId = config.google_drive.sheets_folder_id; + // If skipping download still need to return download folder for next step + if (options.skipDownload) { + return tasks.gdrive.getOutputFolder(folderId); + } else { + return tasks.gdrive.download({ folderId }); + } + }, + }, + { + name: "sheets_process", + function: async ({ tasks, workflow }) => + tasks.template.process({ inputFolder: workflow.sheets_dl.output }), + }, + { + name: "translations_apply", + function: async ({ tasks, workflow }) => + tasks.translate.apply({ inputFolder: workflow.sheets_process.output }), + }, + { + name: "sheets_post_process", + function: async ({ tasks, workflow }) => + tasks.appData.postProcessSheets({ + sourceSheetsFolder: workflow.translations_apply.output.sheets, + sourceTranslationsFolder: workflow.translations_apply.output.strings, + }), + }, + ], + }, + sync_assets: { + // label: "Sync Latest Assets", + options: [ + { + flags: "-s, --skip-download", + description: "Skip download and just process local sheets", + }, + ], + steps: [ + { + name: "assets_dl", + function: async ({ tasks, config, options }) => { + const folderId = config.google_drive.assets_folder_id; + const filterFn = config.google_drive.assets_filter_function; + // If skipping download still need to return download folder for next step + if (options.skipDownload) { + return tasks.gdrive.getOutputFolder(folderId); + } else { + return tasks.gdrive.download({ folderId, filterFn }); + } + }, + }, + { + name: "assets_post_process", + function: async ({ tasks, workflow }) => + tasks.appData.postProcessAssets({ + sourceAssetsFolder: workflow.assets_dl.output, + }), + }, + ], + }, + sync_local: { + label: "Sync direct edits to local sheets", + steps: [ + { + name: "sync_local", + function: async (context) => { + processLocalFiles(context); + }, + }, + { + name: "watch_changes", + function: async (context) => + context.tasks.file.watchFolder({ + src: [context.config.local_drive.assets_path, context.config.local_drive.sheets_path], + onUpdate: async (filepath) => { + const { assets_path, sheets_path } = context.config.local_drive; + const only_sheets = normalize(filepath).startsWith(normalize(sheets_path)); + const only_assets = normalize(filepath).startsWith(normalize(assets_path)); + processLocalFiles(context, { only_assets, only_sheets }); + }, + }), + }, + ], + }, + sync_watch: { + label: "View options for sync live reload (🧪 experimental)", + steps: [ + { + name: "sync_watch", + function: async ({ tasks, config, workflow }) => { + tasks.gdrive.liveReload({ + folderId: config.google_drive.sheets_folder_id, + onUpdate: async (filepath) => { + // only respond to xlsx file changes + if (filepath.endsWith(".xlsx")) { + // TODO - add better methods to process single sheet instead of all + await tasks.workflow.runWorkflow({ + name: "sync_sheets", + parent: workflow, + args: ["--skip-download"], + }); + tasks.appData.copyDeploymentDataToApp(); + } + }, + }); + }, + }, + ], + }, + sync_authorize: { + label: "Authorize Google Drive for content sync", + steps: [ + { + name: "authorize", + function: async ({ tasks }) => { + tasks.gdrive.authorize(); + process.exit(0); + }, + }, + ], + }, +}; + +export default workflows; + +/** + * When processing local files omit download process but instead replicate files + * to download folder to allow processing as part of regular workflow + * @param context + */ +const processLocalFiles = async ( + { tasks, config, workflow }: IWorkflowStepContext, + options: { only_assets?: boolean; only_sheets?: boolean } = {} +) => { + // HACK - copy local files to expected gdrive folder so can continue as if downloaded + const { assets_folder_id, sheets_folder_id } = config.google_drive; + replicateDir(config.local_drive.sheets_path, tasks.gdrive.getOutputFolder(sheets_folder_id)); + replicateDir(config.local_drive.assets_path, tasks.gdrive.getOutputFolder(assets_folder_id)); + + // Run rest of standard sync workflow + const { only_assets, only_sheets } = options; + if (!only_sheets) { + await tasks.workflow.runWorkflow({ + name: "sync_assets", + parent: workflow, + args: ["--skip-download"], + }); + } + if (!only_assets) { + await tasks.workflow.runWorkflow({ + name: "sync_sheets", + parent: workflow, + args: ["--skip-download"], + }); + } + + tasks.appData.copyDeploymentDataToApp(); +}; diff --git a/packages/data-models/workflows/workflow.model.ts b/packages/data-models/workflows/workflow.model.ts new file mode 100644 index 0000000000..f0f49ae10e --- /dev/null +++ b/packages/data-models/workflows/workflow.model.ts @@ -0,0 +1,41 @@ +// NOTE - this import can lead to build issues +// https://www.codejam.info/2021/10/typescript-cannot-write-file-overwrite-input.html +import { IDeploymentConfigJson } from "scripts/src/commands/deployment/common"; +import type { ITasks } from "scripts/src/tasks"; + +export interface IWorkflowContext { + [step_name: string]: { output: any }; +} + +interface IWorkflowStep { + name: string; + condition?: (context: IWorkflowStepContext) => Promise; + function: (context: IWorkflowStepContext) => Promise; +} +export interface IWorkflowStepContext { + config: IDeploymentConfigJson; + workflow: IWorkflowContext; + tasks: ITasks; + /** Positional args passed to workflow script */ + args: string[]; + options: { [optionName: string]: string | boolean }; +} + +export interface IWorkflow { + /** + * The label will be used to select the workflow from a list. + * If omitted the workflow will not be shown for selection + **/ + label?: string; + steps: IWorkflowStep[]; + options?: { flags: string; description?: string; defaultValue?: string | boolean }[]; + /** Sub workflows */ + children?: IDeploymentWorkflows; +} + +export interface IDeploymentWorkflows { + [name: string]: IWorkflow; +} + +// local cache bust to force recompile of tasks +const version = 1.4; diff --git a/packages/dexie-sync/package.json b/packages/dexie-sync/package.json index 683c60b24a..ddd8a67dfe 100644 --- a/packages/dexie-sync/package.json +++ b/packages/dexie-sync/package.json @@ -13,19 +13,19 @@ "pg": "^8.6.0", "pg-hstore": "^2.3.4", "postgres-migrations": "^5.2.0", - "sequelize": "^6.6.4", + "sequelize": "^6.29.0", "winston": "^3.3.3" }, "devDependencies": { "@types/pg": "^8.6.0", "@types/validator": "^13.6.1", "@types/ws": "^7.4.5", - "eslint": "^7.29.0", + "eslint": "^8.12.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.23.4", "sequelize-cli": "^6.2.0", - "ts-node": "^10.0.0", + "ts-node": "^10.8.0", "ts-node-dev": "^1.1.8", "ws": "^7.5.1" } diff --git a/packages/scripts/.gitignore b/packages/scripts/.gitignore index 21fc9b714d..3458d63fec 100644 --- a/packages/scripts/.gitignore +++ b/packages/scripts/.gitignore @@ -4,3 +4,6 @@ config/* !config/*.enc build exec + +test/data/cache +test/data/output \ No newline at end of file diff --git a/packages/scripts/config/credentials.json.enc b/packages/scripts/config/credentials.json.enc index 96b9384bdb..d3cda67b7d 100644 Binary files a/packages/scripts/config/credentials.json.enc and b/packages/scripts/config/credentials.json.enc differ diff --git a/packages/scripts/jasmine.json b/packages/scripts/jasmine.json index 1679478198..1b2e5dbed7 100644 --- a/packages/scripts/jasmine.json +++ b/packages/scripts/jasmine.json @@ -1,11 +1,19 @@ { - "reporters": [ - { - "name": "jasmine-spec-reporter#SpecReporter", - "options": { - "displayStacktrace": "all" - } + "reporters": [ + { + "name": "jasmine-spec-reporter#SpecReporter", + "options": { + "displayStacktrace": "all" } - ], - "spec_files": ["**/*.[sS]pec.ts"] - } \ No newline at end of file + } + ], + + "spec_files": ["src/**/*.[sS]pec.ts"], + "helpers": ["test/helpers/**/*.ts"], + "env": { + "failSpecWithNoExpectations": false, + "stopSpecOnExpectationFailure": false, + "stopOnSpecFailure": false, + "random": false + } +} diff --git a/packages/scripts/package.json b/packages/scripts/package.json index 0acc163327..cbac212436 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -10,8 +10,9 @@ "scripts": { "start": "ts-node src/commands/index.ts", "dev": "ts-node-dev --respawn --watch src/**/*.ts src/commands/index.ts", - "test": "jasmine-ts", - "build": "esbuild src/commands/index.ts --bundle --platform=node --target=node12.22 --outfile=build/commands.js", + "test": "jasmine-ts --config=jasmine.json", + "test:watch": "nodemon --ext ts --exec 'jasmine-ts --config=jasmine.json'", + "build": "esbuild src/commands/index.ts --bundle --platform=node --target=node16 --outfile=build/commands.js", "pkg": "pkg . --output ./exec/idems-app-scripts" }, "pkg": { @@ -22,26 +23,43 @@ "dependencies": { "@idemsInternational/gdrive-tools": "workspace:*", "@idemsInternational/rapidpro-excel": "workspace:*", + "actions": "workspace:*", "boxen": "^5.0.1", "chalk": "^4.1.0", + "chokidar": "^3.5.3", "commander": "^8.3.0", "data-models": "workspace:*", "fs-extra": "^9.0.1", "glob": "^7.2.0", "inquirer": "^7.3.3", "node-rsa": "^1.1.1", + "open": "^9.1.0", + "p-queue": "^6.6.2", + "semver": "^7.5.2", + "shared": "workspace:*", + "simple-git": "^3.7.1", + "subtitles-parser-vtt": "^0.1.0", + "ts-morph": "^15.0.0", "typescript": "^4.1.2", - "xlsx": "^0.16.6" + "winston": "^3.8.1", + "xlsx": "^0.18.5" }, "devDependencies": { + "@swc/core": "^1.3.29", "@types/fs-extra": "^9.0.4", "@types/inquirer": "^7.3.1", + "@types/jasmine": "^3.10.6", "@types/node-rsa": "^1.1.1", + "@types/semver": "^7.3.9", "esbuild": "^0.14.2", - "jasmine": "^3.6.3", - "jasmine-ts": "^0.3.2", + "jasmine": "^3.99.0", + "jasmine-spec-reporter": "^7.0.0", + "jasmine-ts": "^0.4.0", + "mock-fs": "^5.2.0", + "nodemon": "^2.0.19", "pkg": "^5.5.1", - "ts-node": "~7.0.0", - "ts-node-dev": "^1.0.0" + "ts-node": "^10.8.0", + "ts-node-dev": "^1.0.0", + "tsimportlib": "^0.0.5" } } diff --git a/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.spec.ts b/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.spec.ts new file mode 100644 index 0000000000..c45bb69888 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.spec.ts @@ -0,0 +1,105 @@ +import { emptyDirSync, existsSync, readdirSync, readJsonSync, rmdirSync, statSync } from "fs-extra"; +import path from "path"; +import { JsonFileCache } from "./jsonFile"; + +import { SCRIPTS_WORKSPACE_PATH } from "../../../../paths"; +const testCacheDir = path.resolve(SCRIPTS_WORKSPACE_PATH, "test", "data", "cache", "spec"); + +const testData = { + jsonEntry: { + input: { nested: { json: true } }, + expectedName: "8c7f67b9692991973e0b6a5ff8a8cf07", + customName: "jsonEntry", + }, +}; + +let cache: JsonFileCache; + +describe("Json File Cache", () => { + beforeAll(() => { + // Clear previous folders + if (existsSync(testCacheDir)) { + emptyDirSync(testCacheDir); + rmdirSync(testCacheDir); + } + // Initialise cache + cache = new JsonFileCache(testCacheDir, 1); + cache.clear(); + }); + afterAll(() => { + cache.clear(); + }); + it("Creates cache folder", () => { + expect(existsSync(cache.folderPath)).toEqual(true); + }); + it("Populates cache contents", () => { + const { contentsPath } = cache; + expect(existsSync(contentsPath)).toEqual(true); + }); + it("Versions cache contents", () => { + const { contentsPath } = cache; + expect(readJsonSync(contentsPath)._version).toEqual(cache.version); + }); + it("Generates md5 cache entry name from json", () => { + const name = cache.generateCacheEntryName(testData.jsonEntry.input); + expect(name).toEqual(testData.jsonEntry.expectedName); + }); + it("Generates md5 cache entry name from string", () => { + const name = cache.generateCacheEntryName("hello"); + expect(name).toEqual("5d41402abc4b2a76b9719d911017c592"); + }); + it("Throws error on invalid cache name", () => { + expect(() => cache.generateCacheEntryName(undefined)).toThrowError( + "Invalid cache entry name: undefined" + ); + }); + it("Creates unnamed entry", () => { + const { input, expectedName } = testData.jsonEntry; + cache.add(input); + expect(cache.get(expectedName)).toEqual(input); + }); + it("Creates named entry", () => { + const { input, customName } = testData.jsonEntry; + cache.add(input, customName); + expect(cache.get(customName)).toEqual(input); + }); + it("Writes cache files to disk", () => { + const cachedFile = path.resolve(cache.folderPath, testData.jsonEntry.expectedName); + expect(existsSync(cachedFile)).toEqual(true); + }); + it("Populates cache file with custom timestamp", () => { + const timestamp = new Date("2000-01-01"); + const { filePath } = cache.add(testData.jsonEntry, "with_stats", { mtime: timestamp }); + const { mtime } = statSync(filePath); + expect(new Date(mtime).getTime()).toEqual(timestamp.getTime()); + }); + + it("Gets cached entry", () => { + const newCache = new JsonFileCache(testCacheDir, 1); + const cachedEntry = newCache.get(testData.jsonEntry.expectedName); + expect(cachedEntry).toEqual(testData.jsonEntry.input); + }); + + it("Returns undefined on missing entry", () => { + const newCache = new JsonFileCache(testCacheDir, 1); + const cachedEntry = newCache.get("missing_data"); + expect(cachedEntry).toBeUndefined(); + }); + it("Removes entry", () => { + // Add entry + const data = Math.random(); + const { entryName, filePath } = cache.add(data); + expect(existsSync(filePath)).toBeTrue(); + expect(cache.get(entryName)).toEqual(data); + // Remove entry + cache.remove(entryName); + expect(existsSync(filePath)).toBeFalse(); + expect(cache.get(entryName)).toBeUndefined(); + }); + + it("Invalidates cache on version update", () => { + expect(readdirSync(cache.folderPath).length).toBeGreaterThan(1); + const updatedCache = new JsonFileCache(testCacheDir, 2); + expect(readdirSync(cache.folderPath).length).toEqual(1); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.ts b/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.ts new file mode 100644 index 0000000000..e09e31ea5f --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/cacheStrategy/jsonFile.ts @@ -0,0 +1,161 @@ +import { createHash } from "crypto"; +import { TimeLike } from "fs"; +import { + emptyDirSync, + ensureDirSync, + existsSync, + readJSONSync, + removeSync, + utimesSync, + writeJSONSync, +} from "fs-extra"; +import path from "path"; +import { generateFolderFlatMap, IContentsEntry } from "../utils"; + +interface IContentsEntryWithValue extends IContentsEntry { + value?: any; +} + +/** + * The cache processor creates a file cache that can store json outputs from + * previous processes + * + * A main contents list keeps track of all cached inputs and their corresponding outputs, + * named via an md5 hash of the input contents (with optional override) + * + * A versioning system handles clearing cache as required + */ +export class JsonFileCache { + public folderPath: string; + public contentsPath: string; + public version: number; + + private contents: { [name: string]: IContentsEntryWithValue }; + + constructor(folderPath: string, version: number) { + this.version = version; + this.setup(folderPath); + } + + /** + * Add a data entry to the cache. By default will store + * @param data + * @param entryName + */ + public add(data: any, entryName?: string, stats?: { mtime: TimeLike }) { + if (data) { + if (!entryName) { + entryName = this.generateCacheEntryName(data); + } + if (!this.contents[entryName]) { + this.contents[entryName] = {} as any; + } + const filePath = this.writeCacheFile(entryName, data, stats); + this.contents[entryName].value = data; + this.writeCacheContents(); + return { filePath, entryName, data }; + } + } + + /** Clear all cache entries */ + public clear() { + emptyDirSync(this.folderPath); + this.contents = {}; + this.writeCacheContents(); + } + + /** Remove and item from the file cache */ + public remove(entryName: string) { + if (this.contents.hasOwnProperty(entryName)) { + delete this.contents[entryName]; + } + const target = path.resolve(this.folderPath, entryName); + if (existsSync(target)) { + removeSync(target); + } + } + + /** + * Retrive a named entry from the cache + * Will try to return value from in-memory cache with fallback to saved file + * Returns undefined if no entry exists + */ + public get(entryName: string) { + const entry = this.contents[entryName]; + if (entry) { + let value = entry.value as T; + if (!value) { + const entryPath = path.resolve(this.folderPath, entry.relativePath); + value = readJSONSync(entryPath); + } + return value; + } + return undefined; + } + /** + * Return metadata info from the cached file, including md5 hash and modified timestamp + */ + public info(entryName: string) { + return this.contents[entryName]; + } + + /** Create name for cache entries from stringified data md5 checksum */ + public generateCacheEntryName(data: any) { + if (data) { + if (typeof data === "object") { + data = JSON.stringify(data); + } else { + data = `${data}`; + } + const hash = createHash("md5"); + hash.update(data); + const checksum = hash.digest("hex"); + return checksum; + } else { + throw new Error(`Invalid cache entry name: ${data}`); + } + } + + private writeCacheFile(entryName: string, data: any, stats?: { mtime: TimeLike }) { + const target = path.resolve(this.folderPath, entryName); + writeJSONSync(target, data); + if (stats) { + utimesSync(target, stats.mtime, stats.mtime); + } + return target; + } + private writeCacheContents() { + const { contentsPath, folderPath } = this; + const contents = generateFolderFlatMap(folderPath, { filterFn: (p) => p !== "_contents.json" }); + contents._version = this.version as any; + this.contents = contents as any; + writeJSONSync(contentsPath, contents); + } + + private setup(folderPath: string) { + ensureDirSync(folderPath); + this.folderPath = folderPath; + this.contentsPath = path.resolve(this.folderPath, "_contents.json"); + this.loadCache(); + } + + /** + * Load contents list into cache + * Invalidate and clear if cache contents version does not match current cache version + */ + private loadCache() { + this.contents = {}; + if (existsSync(this.contentsPath)) { + const cacheContents = readJSONSync(this.contentsPath); + const { _version } = cacheContents; + if (_version === this.version) { + this.contents = cacheContents; + return this.contents; + } else { + this.clear(); + } + } + // repopulate cache if not loaded or cleared + this.writeCacheContents(); + } +} diff --git a/packages/scripts/src/commands/app-data/convert/convert.spec.ts b/packages/scripts/src/commands/app-data/convert/convert.spec.ts new file mode 100644 index 0000000000..2cf1a47285 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/convert.spec.ts @@ -0,0 +1,89 @@ +import { AppDataConverter } from "./index"; + +import path from "path"; + +import { SCRIPTS_TEST_DATA_DIR } from "../../../paths"; +import { emptyDirSync, existsSync, readdirSync } from "fs-extra"; +import { clearLogs, getLogs } from "./utils"; + +const paths = { + inputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "input", "sheets"), + outputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "output", "sheets"), + cacheFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "cache"), +}; + +describe("App Data Converter", () => { + const converter = new AppDataConverter(paths); + beforeAll(() => { + if (existsSync(paths.outputFolder)) { + path.resolve(SCRIPTS_TEST_DATA_DIR, "output"); + } + }); + afterAll(() => { + emptyDirSync(path.resolve(SCRIPTS_TEST_DATA_DIR, "output")); + }); + it("Uses child caches", async () => { + const cacheFolders = readdirSync(paths.cacheFolder); + expect(cacheFolders.length).toBeGreaterThan(1); + }); + it("Clears child caches on version change", async () => { + const updatedConverter = new AppDataConverter(paths, { version: -1 }); + const cacheFolders = readdirSync(paths.cacheFolder); + expect(cacheFolders.length).toEqual(1); // only contents file + }); + it("Processes test_input xlsx without error", async () => { + clearLogs(); + await converter.run(); + const errorLogs = getLogs("error"); + expect(errorLogs.length).toEqual(0); + }); + it("Populates output to folder by data type", async () => { + await converter.run(); + const outputFolders = readdirSync(paths.outputFolder); + expect(outputFolders).toEqual(["data_list", "data_pipe", "template"]); + }); + it("Tracks conversion errors", async () => { + const errorPaths = { + inputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "input", "errorChecking"), + outputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "output", "errorChecking"), + cacheFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "cache"), + }; + const errorConverter = new AppDataConverter(errorPaths); + await errorConverter.run(); + const errors = getLogs("error"); + const errorMessages = errors.map((err) => err.message); + expect(errorMessages).toEqual([ + "No parser available for flow_type: test_invalid_type", + "Duplicate flows found", + ]); + }); + it("Throws on duplicate flows", async () => { + await converter.run().catch((err) => { + expect(err.message.includes("Duplicate flows found")); + }); + }); +}); + +describe("App Data Converter - Error Checking", () => { + const errorPaths = { + inputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "input", "errorChecking"), + outputFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "output", "errorChecking"), + cacheFolder: path.resolve(SCRIPTS_TEST_DATA_DIR, "cache"), + }; + const errorConverter = new AppDataConverter(errorPaths); + beforeAll(() => { + if (existsSync(paths.outputFolder)) { + emptyDirSync(paths.outputFolder); + } + }); + it("Tracks number of conversion errors", async () => { + const errorConverter = new AppDataConverter(errorPaths); + const { errors } = await errorConverter.run(); + expect(errors.length).toBeGreaterThan(0); + }); + it("Throws on duplicate flows", async () => { + await errorConverter.run().catch((err) => { + expect(err.message.includes("Duplicate flows found")); + }); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/index.ts b/packages/scripts/src/commands/app-data/convert/index.ts index 63aae4c0df..ebea934ef7 100644 --- a/packages/scripts/src/commands/app-data/convert/index.ts +++ b/packages/scripts/src/commands/app-data/convert/index.ts @@ -1,21 +1,26 @@ import * as fs from "fs-extra"; import { Command } from "commander"; -import * as xlsx from "xlsx"; + import * as path from "path"; -import boxen from "boxen"; import chalk from "chalk"; -import logUpdate from "log-update"; -import * as Parsers from "./parsers"; +import { FlowTypes } from "data-models"; +import { ActiveDeployment } from "../../deployment/get"; +import { IConverterPaths, IParsedWorkbookData } from "./types"; +import { XLSXWorkbookProcessor } from "./processors/xlsxWorkbook"; +import { JsonFileCache } from "./cacheStrategy/jsonFile"; import { - groupJsonByKey, - readContentsFileAsHashmap, generateFolderFlatMap, IContentsEntry, + createChildLogger, + logSheetsSummary, + getLogs, + Logger, + getLogFiles, + logWarning, + clearLogs, + standardiseNewlines, } from "./utils"; -import { FlowTypes } from "data-models"; - -import { getActiveDeployment } from "../../deployment/get"; -import { DefaultParser } from "./parsers"; +import { FlowParserProcessor } from "./processors/flowParser/flowParser"; /*************************************************************************************** * CLI @@ -23,17 +28,17 @@ import { DefaultParser } from "./parsers"; *************************************************************************************/ const program = new Command("convert"); interface IProgramOptions { + cacheFolder: string; + inputFolder: string; + outputFolder: string; skipCache?: boolean; - cacheFolder?: string; - inputFolder?: string; - outputFolder?: string; } export default program .description("Convert app data") - .option("-i --input-folder ", "") + .requiredOption("-i --input-folder ", "") + .requiredOption("-c --cache-folder ", "") + .requiredOption("-o --output-folder ", "") .option("-s --skip-cache", "Wipe local conversion cache and process all files") - .option("-c --cache-folder ", "") - .option("-o --output-folder ", "") .action(async (options: IProgramOptions) => { await new AppDataConverter(options).run(); }); @@ -42,36 +47,36 @@ export default program * Main Methods *************************************************************************************/ -class AppDataConverter { - /** Change version to invalidate any cached conversions */ - public converterVersion = 1.6; +/** + * The AppDataConverter handles the process of converting xlsx workbooks to json + * and then parsing as data flows + * + * TODO - can likely also be an extension of the base converter (?) + */ +export class AppDataConverter { + /** Change version to invalidate all underlying caches */ + public version = 20230406.1; + + public activeDeployment = ActiveDeployment.get(); + + public logger = createChildLogger({ source: "converter" }); - private activeDeployment = getActiveDeployment(); - private paths = { - SHEETS_INPUT_FOLDER: "", - SHEETS_CACHE_FOLDER: "", - SHEETS_OUTPUT_FOLDER: "", - }; + cache: JsonFileCache; - private conversionErrors = []; - private conversionWarnings = []; + constructor(private options: IProgramOptions, testOverrides: Partial = {}) { + // optional overrides, used for tests + if (testOverrides.version) this.version = testOverrides.version; + if (testOverrides.activeDeployment) this.activeDeployment = testOverrides.activeDeployment; - constructor(private options: IProgramOptions) { console.log(chalk.yellow("App Data Convert")); - // console.table(options); // Setup Folders const { inputFolder, outputFolder, cacheFolder } = options; - const { app_data, _workspace_path } = this.activeDeployment; - const SHEETS_CACHE_FOLDER = app_data.converter_cache_path; - this.paths = { - SHEETS_INPUT_FOLDER: inputFolder || path.resolve(_workspace_path, "app_data", "sheets"), - SHEETS_CACHE_FOLDER: cacheFolder || path.resolve(SHEETS_CACHE_FOLDER, "individual"), - SHEETS_OUTPUT_FOLDER: outputFolder || path.resolve(SHEETS_CACHE_FOLDER, "converted"), - }; - Object.values(this.paths).forEach((p) => fs.ensureDir(p)); + [inputFolder, outputFolder, cacheFolder].forEach((p) => fs.ensureDir(p)); if (this.options.skipCache) { - fs.emptyDirSync(SHEETS_CACHE_FOLDER); + this.cache.clear(); } + // Create a cache that can be used to invalidate all underlying processor caches + this.cache = new JsonFileCache(cacheFolder, this.version); } /** @@ -79,380 +84,130 @@ class AppDataConverter { * objects representing sheet names and data values */ public async run() { - const actions = this.prepareConversionActions(); - this.processCacheDeletions(actions.delete); - const converted = this.processSheetConversions(actions.convert); - const cached: IParsedWorkbookData[] = actions.skip.map((entry) => - this.loadCachedConversion(entry) - ); - this.writeCacheContentsJson(); - const allConvertedData = [...converted, ...cached].filter((data) => - this.applySheetFilters(data) - ); - this.writeOutputJsons(allConvertedData); - this.logSheetsSummary(allConvertedData); - console.log(chalk.yellow("Conversion Complete")); - - if (this.conversionWarnings.length > 0) { - console.log(chalk.red(this.conversionWarnings.length, "warnings")); - for (const warning of this.conversionWarnings) { - console.log(warning); - } - } - if (this.conversionErrors.length > 0) { - console.log(chalk.red(this.conversionErrors.length, "errors")); - for (const err of this.conversionErrors) { - console.log(err); - } + const { inputFolder, outputFolder, cacheFolder } = this.options; + const converterPaths: IConverterPaths = { + SHEETS_CACHE_FOLDER: cacheFolder, + SHEETS_INPUT_FOLDER: inputFolder, + SHEETS_OUTPUT_FOLDER: outputFolder, + }; + const processPipeline: { + name: string; + description: string; + fn: (context: any) => Promise; + }[] = [ + { + name: "xlsx_read", + description: "Load list of all input xlsx workbooks from folder", + fn: async () => { + const filterFn = (relativePath: string) => relativePath.endsWith(".xlsx"); + return generateFolderFlatMap(inputFolder, { filterFn }); + }, + }, + { + name: "xlsx_convert", + description: "Convert all xlsx workbooks to json arrays", + fn: async (list: { [key: string]: IContentsEntry }) => { + const xlsxConverter = new XLSXWorkbookProcessor(converterPaths); + return xlsxConverter.process(Object.values(list)); + }, + }, + { + name: "jsons_clean", + description: "Flatten json arrays to single list of all sheets, filter and sort", + fn: async (data: FlowTypes.FlowTypeWithData[][]) => this.cleanFlowOutputs(data), + }, + { + name: "flows_process", + description: "Apply specific parsers for flowtypes", + fn: async (data: FlowTypes.FlowTypeWithData[]) => { + const processor = new FlowParserProcessor(converterPaths); + return processor.process(data); + }, + }, + ]; + let input: any; + let output: any; + clearLogs(); + for (const step of processPipeline) { + output = await step.fn(input); + this.logger.debug({ step: step.name, output }); + input = output; } - } + const result = output as IParsedWorkbookData; - /** - * Read downloaded sheets contents folder and compare against cached conversions contents. - * Generate a list of sheets requiring conversion and cached files requiring deletion - */ - private prepareConversionActions() { - const { SHEETS_INPUT_FOLDER, SHEETS_CACHE_FOLDER } = this.paths; - const actions: IConverterActions = { convert: [], delete: [], skip: [] }; - // generate hashmap of input and cache contents - const hashKey = "relativePath"; - const inputContents = readContentsFileAsHashmap(SHEETS_INPUT_FOLDER, { hashKey }); - const cacheContents = readContentsFileAsHashmap(SHEETS_CACHE_FOLDER, { hashKey }); - // run comparisons - Object.entries(inputContents).forEach(([key, sourceFile]) => { - // track the filename of the downloaded file (avoid duplicate .xlsx.xlsx depending if gsheet or xlsx original) - const xlsxFilename = `${key.replace(".xlsx", "")}.xlsx`; - sourceFile.xlsxPath = path.resolve(SHEETS_INPUT_FOLDER, xlsxFilename); - const cacheFile = cacheContents[key]; - // compare with modified times instead of checksums - const isSame = this.isConvertedCacheValid(sourceFile, cacheFile); - if (isSame) { - actions.skip.push(sourceFile); - } else { - actions.convert.push(sourceFile); - } - }); - // handle deleting cache files no longer existing - Object.entries(cacheContents).forEach(([key, cacheFile]) => { - const xlsxFilename = `${key.replace(".xlsx", "")}.xlsx`; - cacheFile.xlsxPath = path.resolve(SHEETS_CACHE_FOLDER, xlsxFilename); - if (!inputContents.hasOwnProperty(key)) { - actions.delete.push(cacheFile); - } - }); - // log summary - const summary = {}; - Object.entries(actions).forEach(([key, value]) => (summary[key] = value.length)); - console.log("\nFile Summary\n", summary); - return actions; + const { errors, warnings } = this.logOutputs(result); + return { result, errors, warnings }; } - private processCacheDeletions(entries: IGDriveContentsEntry[]) { - const cacheBase = this.paths.SHEETS_CACHE_FOLDER; - for (const entry of entries) { - const targetFile = path.resolve(cacheBase, `${entry.relativePath}.json`); - if (fs.existsSync(targetFile)) { - fs.removeSync(targetFile); - } + private logOutputs(result: IParsedWorkbookData) { + this.writeOutputJsons(result); + logSheetsSummary(result); + // warnings + const warnings = getLogs("warning"); + if (warnings.length > 0) { + const errorLogFile = getLogFiles().error; + logWarning({ + msg1: `Completed with ${warnings.length} warnings`, + msg2: errorLogFile, + }); } - } - - private processSheetConversions(entries: IGDriveContentsEntry[]) { - const { SHEETS_INPUT_FOLDER } = this.paths; - let i = 0; - let total = entries.length; - const processed: IParsedWorkbookData[] = []; - for (let entry of entries) { - const { xlsxPath } = entry; - const json = convertXLSXSheetsToJson(xlsxPath); - const merged = this.mergeAppData(SHEETS_INPUT_FOLDER, [{ json, xlsxPath }]); - const dataByFlowType = groupJsonByKey(merged, "flow_type"); - try { - const convertedData = processData(dataByFlowType); - const postProcessed = postProcessData(convertedData); - processed.push(postProcessed); - this.saveCachedConversion(entry, postProcessed); - } catch (error) { - this.conversionErrors.push(error); - } - i++; - logUpdate( - chalk.blue(`converted: ${i} | errors: ${this.conversionErrors.length} | total: ${total}`) - ); + // errors + const errors = getLogs("error"); + if (errors.length > 0) { + const errorLogFile = getLogFiles().error; + Logger.error({ + msg1: `Completed with errors`, + msg2: errorLogFile, + logOnly: true, + }); } - logUpdate.done(); - return processed; + // logSheetErrorSummary(this.conversionWarnings, this.conversionErrors); + console.log(chalk.yellow("Conversion Complete")); + return { errors, warnings }; } - /** If sheets filter function specified apply here */ - private applySheetFilters(data: IParsedWorkbookData) { + private cleanFlowOutputs(data: FlowTypes.FlowTypeWithData[][]) { + // concat array or arrays to single array + const flattened: FlowTypes.FlowTypeWithData[] = [].concat.apply([], data); + // filter undefined, non-released and according to deployment filter const { sheets_filter_function } = this.activeDeployment.app_data; - if (sheets_filter_function) { - Object.entries(data).forEach(([flow_type, flows]) => { - // ensure flows exist and apply and deployment filters - data[flow_type] = flows - .filter((flow) => flow) - .filter((flow) => sheets_filter_function(flow as any)); - }); - } - return data; + const filtered = flattened + .filter((flow) => flow.status === "released") + .filter((flow) => sheets_filter_function(flow as any)); + // sort by flow type and so that data pipes are processed last (depend on other lists) + const sorted = filtered.sort((a, b) => { + if (a.flow_type === "data_pipe") return 1; + if (b.flow_type === "data_pipe") return -1; + return a.flow_type > b.flow_type ? 1 : -1; + }); + return sorted; } /** Write individual converted jsons to flow_type folders */ - private writeOutputJsons(convertedData: IParsedWorkbookData[]) { - const outputBase = this.paths.SHEETS_OUTPUT_FOLDER; + private writeOutputJsons(data: IParsedWorkbookData) { + const outputBase = this.options.outputFolder; fs.ensureDirSync(outputBase); fs.emptyDirSync(outputBase); - Object.values(convertedData).forEach((workbookDataEntry) => { - Object.values(workbookDataEntry).forEach((flowArray) => { - Object.values(flowArray).forEach((flow) => { - const { flow_type, flow_name, flow_subtype } = flow; - const flowOutputPath = path.resolve( - outputBase, - flow_type, - flow_subtype || "", - `${flow_name}.json` - ); - // TODO - track error if output path already exists (duplicate name) - fs.ensureDirSync(path.dirname(flowOutputPath)); - fs.writeFileSync(flowOutputPath, JSON.stringify(flow, null, 2)); - // TODO - statsync - }); - }); - }); - } - - /** Collate totals of flows by subtype and log */ - private logSheetsSummary(data: IParsedWorkbookData[]) { - const countBySubtype = {}; - data.forEach((workbookData) => - Object.values(workbookData).forEach((flows) => { - flows.forEach((flow) => { - let type = flow.flow_type; - if (flow.flow_subtype) type += `.${flow.flow_subtype}`; - if (!countBySubtype[type]) countBySubtype[type] = 0; - countBySubtype[type]++; - }); - }) - ); - const logOutput = Object.keys(countBySubtype) - .sort() - .map((key) => { - const [type, subtype] = key.split("."); - return { type, subtype: subtype || null, total: countBySubtype[key] }; + Object.values(data).forEach((flowArray) => { + Object.values(flowArray).forEach((flow) => { + const { flow_type, flow_name, flow_subtype } = flow; + const flowOutputPath = path.resolve( + outputBase, + flow_type, + flow_subtype || "", + `${flow_name}.json` + ); + + fs.ensureDirSync(path.dirname(flowOutputPath)); + if (fs.existsSync(flowOutputPath)) { + this.logger.error({ + message: "Duplicate flows found", + details: [flow, fs.readJsonSync(flowOutputPath)], + }); + } + // ensure newline characters are standardised (i.e. replace "\r\n" with "\n") + fs.writeFileSync(flowOutputPath, standardiseNewlines(JSON.stringify(flow, null, 2))); }); - console.log("\nSheet Summary"); - console.table(logOutput); - } - - private writeCacheContentsJson() { - const contentsFilename = "_contents.json"; - const cacheHashmap = generateFolderFlatMap( - this.paths.SHEETS_CACHE_FOLDER, - true, - (p) => p !== contentsFilename - ) as { [relativePath: string]: IContentsEntry }; - const contentsData = Object.values(cacheHashmap).map((entry) => { - entry.relativePath = entry.relativePath.replace(".json", ""); - const contentsEntry: IConvertedContentsEntry = { - ...entry, - converterVersion: this.converterVersion, - relativePath: entry.relativePath.replace(".json", ""), - }; - - return contentsEntry; }); - - const contentsOutput = path.resolve(this.paths.SHEETS_CACHE_FOLDER, contentsFilename); - fs.writeFileSync(contentsOutput, JSON.stringify(contentsData, null, 2)); } - - private saveCachedConversion(entry: IGDriveContentsEntry, convertedData: any) { - const { xlsxPath } = entry; - const relativePath = path.relative(this.paths.SHEETS_INPUT_FOLDER, xlsxPath); - const cacheTarget = path.resolve(this.paths.SHEETS_CACHE_FOLDER, `${relativePath}.json`); - fs.ensureDirSync(path.dirname(cacheTarget)); - fs.writeFileSync(cacheTarget, JSON.stringify(convertedData, null, 2)); - const modifiedTime = new Date(entry.modifiedTime); - // apply same modified time as original file for future comparison - fs.utimesSync(cacheTarget, modifiedTime, modifiedTime); - } - - private loadCachedConversion(entry: IGDriveContentsEntry) { - const { xlsxPath } = entry; - const relativePath = path.relative(this.paths.SHEETS_INPUT_FOLDER, xlsxPath); - const cacheTarget = path.resolve(this.paths.SHEETS_CACHE_FOLDER, `${relativePath}.json`); - const cachedConversion = fs.readJSONSync(cacheTarget); - return cachedConversion; - } - - /** - * Compare a current sheet json with previously converted. - * Assumes conversion still valid if both have same modified timestamp and generated - * using the same converter version - */ - private isConvertedCacheValid(sourceFile: any, cacheFile?: any) { - if (cacheFile) { - return ( - sourceFile.modifiedTime === cacheFile.modifiedTime && - cacheFile.converterVersion === this.converterVersion - ); - } - return false; - } - - /** - * App data sheets contain contents page with metadata that can be merged into regular data - * Merge and collate with other existing data, warning in case of overwrites - * @returns - array of all merged sheets (no grouping or collating) - */ - private mergeAppData(sheetsInputFolder: string, jsons: { json: any; xlsxPath: string }[]) { - const merged: { [flow_name: string]: FlowTypes.FlowTypeWithData } = {}; - const releasedSummary = {}; - const skippedSummary = {}; - for (let el of jsons) { - const { json, xlsxPath } = el; - const contentList = json["==content_list=="] as FlowTypes.FlowTypeWithData[]; - if (contentList) { - for (const contents of contentList) { - const { flow_name, status, flow_type, module } = contents; - const filename = path.basename(xlsxPath, ".xlsx"); - // only include flows marked as released in the contents - if (flow_name && status === "released") { - releasedSummary[flow_name] = { status, flow_type, module, filename }; - if (json.hasOwnProperty(flow_name)) { - if (merged.hasOwnProperty(flow_name)) { - this.conversionWarnings.push(chalk.yellow(`Duplicate flow: ${flow_name}`)); - } - // Ensure all paths use / to match HTTP style paths - const _xlsxPath = path.relative(sheetsInputFolder, xlsxPath).replace(/\\/g, "/"); - merged[flow_name] = { ...contents, rows: json[flow_name], _xlsxPath }; - } else { - this.conversionWarnings.push(chalk.yellow(`No Contents: ${flow_name}`)); - } - } else { - skippedSummary[flow_name] = { status, flow_type, module, filename }; - } - } - } else { - this.conversionWarnings.push(chalk.yellow(`No Content List: ${path.basename(xlsxPath)}`)); - } - } - return Object.values(merged); - } -} -type IParsedWorkbookData = { [type in FlowTypes.FlowType]?: FlowTypes.FlowTypeWithData[] }; - -function processData(dataByFlowType: IParsedWorkbookData): IParsedWorkbookData { - const parsedData: IParsedWorkbookData = {}; - const parsers = getDataParsers(); - Object.entries(dataByFlowType).forEach(([flow_type, contentFlows]) => { - const parser: Parsers.AbstractParser = parsers[flow_type] || new DefaultParser(); - // process individual rows via parser.run method - parsedData[flow_type] = contentFlows.map((flow) => { - try { - const parsed = parser.run(flow); - return parsed; - } catch (error) { - throwTemplateParseError(error, flow); - } - }); - }); - return parsedData; -} -function postProcessData(dataByFlowType: IParsedWorkbookData): IParsedWorkbookData { - const parsedData: IParsedWorkbookData = {}; - const parsers = getDataParsers(); - Object.entries(dataByFlowType).forEach(([flow_type, contentFlows]) => { - const parser: Parsers.AbstractParser = parsers[flow_type] || new DefaultParser(); - parsedData[flow_type] = parser.postProcessFlows(contentFlows); - }); - return parsedData; -} - -function getDataParsers() { - // All flow types will be processed by the default parser unless otherwise specified here - const customParsers: { [flowType in FlowTypes.FlowType]?: Parsers.AbstractParser } = { - template: new Parsers.TemplateParser(), - data_list: new Parsers.DataListParser(), - }; - return customParsers; -} - -/** - * Parses an xlsx file, returning an object with sheet names as keys - * and a corresponding array of key-value pairs to represent the sheet data - * (assumes header provided in top row) - */ -function convertXLSXSheetsToJson(xlsxFilePath: string) { - const json = {}; - const workbook = xlsx.readFile(xlsxFilePath); - const { Sheets } = workbook; - Object.entries(Sheets).forEach(([sheet_name, worksheet]) => { - /* If bold or italics, include HTML in cell value */ - Object.keys(worksheet).forEach((cellId) => { - let html = worksheet[cellId]?.h; - if ( - html !== undefined && - typeof html === "string" && - (html.indexOf("") > -1 || html.indexOf("") > -1 || html.indexOf("") > -1) - ) { - html = html.replace(/]*>/g, ""); // Remove span style - worksheet[cellId].v = html; - } - }); - - json[sheet_name] = xlsx.utils.sheet_to_json(worksheet); - }); - return json; -} - -/** - * Debug info to log and exit when a template parsing error occurs - */ -function throwTemplateParseError(error: Error, flow: FlowTypes.FlowTypeWithData) { - const errMsg = boxen( - ` -${chalk.red("Template Parse Error")} - -${chalk.yellow(flow.flow_name)} - -${flow._xlsxPath} - -This is likely an authoring error, see full stacktrace below - `, - { padding: 1, borderColor: "red" } - ); - - console.log(errMsg); - - console.error(error); - throw errMsg; - // process.exit(1); -} - -interface IGDriveContentsEntry { - id: string; - name: string; - // full relative path including parent folders and extension - relativePath: string; - mimeType: string; - modifiedTime: string; - folderPath: string; - // only appears on xlsx uploaded files (not gsheet) - fullFileExtension?: string; - fileExtension?: string; - md5Checksum?: string; - size?: string; - // populated during processing - xlsxPath?: string; -} -interface IConvertedContentsEntry extends IContentsEntry { - converterVersion: number; -} - -interface IConverterActions { - convert: IGDriveContentsEntry[]; - delete: IGDriveContentsEntry[]; - skip: IGDriveContentsEntry[]; } diff --git a/packages/scripts/src/commands/app-data/convert/parsers/abstract.parser.ts b/packages/scripts/src/commands/app-data/convert/parsers/abstract.parser.ts deleted file mode 100644 index 9a7820b348..0000000000 --- a/packages/scripts/src/commands/app-data/convert/parsers/abstract.parser.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { FlowTypes } from "data-models"; - -/** - * If we decide to apply any generic conversions system-wide we can do them - * here. For now it simply acts as a typing placeholder - */ -export abstract class AbstractParser { - public run(flow: FlowTypes.FlowTypeWithData): any { - return flow; - } - public postProcessFlows(flows: FlowTypes.FlowTypeWithData[]) { - return flows; - } -} diff --git a/packages/scripts/src/commands/app-data/convert/parsers/data_list/data_list.parser.ts b/packages/scripts/src/commands/app-data/convert/parsers/data_list/data_list.parser.ts deleted file mode 100644 index 4a449fcc18..0000000000 --- a/packages/scripts/src/commands/app-data/convert/parsers/data_list/data_list.parser.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { FlowTypes } from "data-models"; -import { extractConditionList, parseAppDataCollectionString, setNestedProperty } from "../../utils"; -import { DefaultParser } from "../default/default.parser"; - -export class DataListParser extends DefaultParser { - postProcess(row: FlowTypes.Data_listRow) { - Object.keys(row).forEach((field) => { - // handle other data structures - if (field.endsWith("_condition_list")) { - row[field] = row[field].map((value) => extractConditionList(value)); - } - if (field.endsWith("notification_schedule")) { - row[field] = parseAppDataCollectionString(row[field]); - } - // assign nested structures, e.g {time.hour : 4} => {time: { hour: 4 }} - if (field.includes(".")) { - row = setNestedProperty(field, row[field], row); - delete row[field]; - } - }); - return row; - } -} diff --git a/packages/scripts/src/commands/app-data/convert/parsers/default/default.parser.ts b/packages/scripts/src/commands/app-data/convert/parsers/default/default.parser.ts deleted file mode 100644 index 7094f984a7..0000000000 --- a/packages/scripts/src/commands/app-data/convert/parsers/default/default.parser.ts +++ /dev/null @@ -1,220 +0,0 @@ -import chalk from "chalk"; -import { FlowTypes } from "data-models"; -import { AbstractParser } from "../abstract.parser"; -import { - parseAppDataListString, - parseAppDataCollectionString, - parseAppDataActionString, - parseAppDateValue, -} from "../../utils"; -import { getActiveDeployment } from "../../../../deployment/get"; -// When running this parser assumes there is a 'type' column -type IRowData = { type: string; name?: string; rows?: IRowData }; - -/** - * The default processor performs the following: - * - Look for rows starting `begin_groupname` and `end_groupname`, form a - * nested group `groupname_group`. E.g. `begin_step` and `end_step` -> `step_group` - * - Rewrite urls for `_asset` types to direct to local assets folder - * - Rewrite `_list` content as string array - */ -export class DefaultParser implements AbstractParser { - activeDeployment = getActiveDeployment(); - - public groupSuffix = "_group"; - - /** All rows are handled in a queue, processing linearly */ - private queue: IRowData[]; - private summary = { missingAssets: [] }; - - /** Default function to call a start the process of parsing rows */ - public run(flow: FlowTypes.FlowTypeWithData): FlowTypes.FlowTypeWithData { - this.queue = flow.rows; - const processedRows = []; - while (this.queue.length > 0) { - const row = this.queue[0]; - try { - const processed = this.processRow(row, flow); - // some rows may be omitted during processing so ignore - if (processed) { - const postProcessed = this.postProcess(processed); - if (postProcessed) { - processedRows.push(postProcessed); - } - } - this.queue.shift(); - } catch (error) { - throwRowParseError(error, row); - } - } - if (this.summary.missingAssets.length > 0) { - console.log(chalk.red("Missing Assets:")); - console.table(this.summary.missingAssets); - } - - return { ...flow, rows: processedRows }; - } - - /** If extending the class add additional postprocess pipeline here */ - public postProcess(row: any) { - return row; - } - - public postProcessFlows(flows: FlowTypes.FlowTypeWithData[]) { - return flows; - } - - /** Handle a single row */ - private processRow(row: IRowData, flow: FlowTypes.FlowTypeWithData) { - // Handle specific data manipulations for fields - Object.keys(row).forEach((field) => { - // delete metadata (e.g. __empty) - if (field.startsWith("__")) { - delete row[field]; - } - // delete any comments, e.g. 'comment', 'comments', 'comment_1' etc. - if (field.startsWith("comment")) { - delete row[field]; - } - // rename legacy fields - if (DEPRECATED_FIELD_NAMES.hasOwnProperty(field)) { - const replacement = DEPRECATED_FIELD_NAMES[field]; - const warning = `-- ${flow.flow_name} --\n[${field}] is deprecated and should be replaced with [${replacement}]`; - console.warn(chalk.gray(warning)); - row[replacement] = JSON.parse(JSON.stringify(row[field])); - delete row[field]; - field = replacement; - } - // replace any self references, i.e "hello @row.id" => "hello some_id", @row.text::eng - // TODO - should find better long term option that can update based on dynamic value and translations - if (typeof row[field] === "string") { - const rowReplacements = [...row[field].matchAll(/@row.([0-9a-z_:]+)/gim)]; - for (const replacement of rowReplacements) { - const [expression, replaceField] = replacement; - const replaceValue = row[replaceField]; - row[field] = row[field].replace(expression, replaceValue); - } - } - // remove any trailing whitespace from any entries - if (typeof row[field] === "string") { - row[field] = row[field].trim(); - } - // mark fields for translation, rename so can process regularly (add translation data at end) - // Note, cannot assume all :: statements translations as also used in fields, e.g. fields::favourite - // TODO - alter fields syntax to avoid potential conflict (e.g. fields::eng) - let isTranslateField = false; - if (field.endsWith("::eng")) { - // copy eng value to base column. Avoid replace if base column already exists with value - // (e.g. in case where value, value::eng only applies to some rows in template) - // (NOTE - could use the exclude_from_translation column, but may end up changing syntax) - isTranslateField = true; - const baseTranslation = row[field]; - const baseField = field.replace("::eng", ""); - if (row[baseField] === undefined || row[baseField] === "") { - row[baseField] = baseTranslation; - } - field = baseField; - } - if (field.endsWith("_list")) { - row[field] = parseAppDataListString(row[field]); - } - if (field.endsWith("_collection")) { - row[field] = parseAppDataCollectionString(row[field]); - } - // parse action list - if (field.endsWith("action_list")) { - row[field] = row[field] - .map((actionString) => parseAppDataActionString(actionString)) - .filter((action) => action != null); - } - // convert google/excel number dates to dates (https://stackoverflow.com/questions/16229494/converting-excel-date-serial-number-to-date-using-javascript) - if (field.endsWith("_date")) { - if (typeof row[field] === "number") { - row[field] = parseAppDateValue(row[field]); - } - } - - // assign default translation and track as metadata - if (isTranslateField) { - row["_translatedFields"] = { - ...row["_translatedFields"], - [field]: { - eng: row[field], - }, - }; - delete row[`${field}::eng`]; - } - }); - // remove rows now left as empty (null return will remove from future processing) - if (Object.keys(row).length === 0) { - return null; - } - - /** - * TODO - some specific sheet types (e.g. template data_list and derivatives) - * will likely perfer to convert depending on the name or id of the row (ending in _list or _collection) - * Should likely want to add support to automate conversion (currently manually handled in template parser) - **/ - - // Extract any required groups that start from this row - const type = row.type || ""; - if (type.startsWith("begin_")) { - try { - const group = this.extractGroup(); - const groupType = type.replace("begin_", "") + this.groupSuffix; - const subParser = new DefaultParser(); - subParser.groupSuffix = this.groupSuffix; - const parsedGroup = subParser.run({ ...flow, rows: group }); - return { ...row, type: groupType, rows: parsedGroup.rows }; - } catch (ex) { - console.warn("Error on group extract on row", row, flow, ex); - console.warn("Error is in sheet ", flow._xlsxPath); - } - } - // Can ignore as handled during subgroup extraction - if (type.startsWith("end_")) { - return; - } - - return row; - } - - /** - * Look through current queue for first instance of a group defined by `begin_` and `end_` - * row types. Keeps an internal tally of any additional `begin_` types to handle case - * where further groups are nested within a group - */ - private extractGroup(startIndex = 0): IRowData[] { - let nestedIfCount = 0; - const endIndex = this.queue.slice(startIndex).findIndex((row) => { - const type = row.type || ""; - if (type.startsWith("begin_")) nestedIfCount++; - if (type.startsWith("end_")) nestedIfCount--; - return nestedIfCount === 0; - }); - if (endIndex === -1) { - console.log("could not find end index", startIndex); - throw "extract group error. count not find end index for start index=" + startIndex; - } - const queueEndIndex = startIndex + endIndex; - // remove all rows from the queue excluding start and end clause statements (e.g. if/end-if) - const groupedRows = this.queue.splice(1, queueEndIndex - 1); - return groupedRows; - } -} - -/** - * Add context information to errors originating from row parser. - * This will from the template error logging method - * */ -function throwRowParseError(error: Error, row: IRowData) { - error.message = `Error Parsing Row \n ${chalk.yellow( - JSON.stringify(row, null, 2) - )} \n ${chalk.red(error.message)}`; - // add more context to error - throw error; -} - -const DEPRECATED_FIELD_NAMES = { - click_action_list: "action_list", -}; diff --git a/packages/scripts/src/commands/app-data/convert/parsers/index.ts b/packages/scripts/src/commands/app-data/convert/parsers/index.ts deleted file mode 100644 index bbf74aa71f..0000000000 --- a/packages/scripts/src/commands/app-data/convert/parsers/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./data_list/data_list.parser"; -export * from "./default/default.parser"; -export * from "./template/template.parser"; -export * from "./abstract.parser"; diff --git a/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.spec.ts new file mode 100644 index 0000000000..f1c21aff82 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.spec.ts @@ -0,0 +1,34 @@ +import { DeprecatedContentsFileProcessor } from "./contentsFile"; + +describe("Contents File Processor", () => { + it("Compares server and cache contents", () => { + const testConverterVersion = 2; + const processor = new DeprecatedContentsFileProcessor(testConverterVersion); + const actions = processor.compare( + // E.g. Server + { + "1.xlsx": { modifiedTime: "2022-01-02", name: "1" }, + "2.xlsx": { modifiedTime: "2022-01-02", name: "2" }, + "3.xlsx": { modifiedTime: "2022-01-02", name: "3" }, + }, + // E.g. Cache + { + "2.xlsx": { modifiedTime: "2022-01-02", name: "2", converterVersion: 1 }, + "3.xlsx": { modifiedTime: "2022-01-02", name: "3", converterVersion: testConverterVersion }, + "4.xlsx": { modifiedTime: "2021-12-30", name: "4" }, + } + ); + const { CREATE, DELETE, IGNORE } = actions; + console.log(actions); + // Create files where modified time or converter version changed + const expectCreated = [ + { modifiedTime: "2022-01-02", name: "1" }, + { modifiedTime: "2022-01-02", name: "2" }, + ]; + expect(CREATE).toEqual(expectCreated); + const expectDeleted = [{ modifiedTime: "2021-12-30", name: "4" }]; + expect(DELETE).toEqual(expectDeleted); + const expectIgnored = [{ modifiedTime: "2022-01-02", name: "3" }]; + expect(IGNORE).toEqual(expectIgnored); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.ts b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.ts new file mode 100644 index 0000000000..32de4e4535 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/contentsFile.ts @@ -0,0 +1,97 @@ +import path from "path"; +import fs from "fs"; + +import { generateFolderFlatMap, IContentsEntry, readContentsFileAsHashmap } from "../../utils"; + +/** Contents file entries minimally contain modified time and converter version */ +interface IContentsFileEntry extends Partial { + converterVersion?: number; +} + +/** + * DEPRECATED 2022-08-23 + * Common caching strategy used on per-processor level makes most of the code here + * redundant. Retaining for short period in case useful + * (recommend remove if not integrated by 2022-11-23) + * + * Processor designed to read and write a contents file, and compare values + */ +export class DeprecatedContentsFileProcessor { + constructor(public converterVersion: number) {} + + public process(contentsPath: string) { + const hashKey = "relativePath"; + const contentsHashmap = readContentsFileAsHashmap(contentsPath, { hashKey }); + const contentsHashmapWithXlsxPath: { [key: string]: T & { xlsxPath: string } } = {}; + Object.entries(contentsHashmap).forEach(([key, value]) => { + // track the filename of the downloaded file (avoid duplicate .xlsx.xlsx depending if gsheet or xlsx original) + const xlsxFilename = `${key.replaceAll(".xlsx", "")}.xlsx`; + const xlsxPath = path.resolve(contentsPath, xlsxFilename); + const valueWithXlsxPath = { ...value, xlsxPath }; + contentsHashmapWithXlsxPath[key] = valueWithXlsxPath as any; + }); + return contentsHashmapWithXlsxPath; + } + + public write(contentsFolder: string) { + const contentsFilename = "_contents.json"; + const cacheHashmap = generateFolderFlatMap(contentsFolder, { + filterFn: (p) => p !== contentsFilename, + }) as { [relativePath: string]: IContentsEntry }; + const contentsData = Object.values(cacheHashmap).map((entry) => { + entry.relativePath = entry.relativePath.replace(".json", ""); + const contentsEntry: IContentsFileEntry = { + ...entry, + converterVersion: this.converterVersion, + relativePath: entry.relativePath.replace(".json", ""), + }; + + return contentsEntry; + }); + + const contentsOutput = path.resolve(contentsFolder, contentsFilename); + fs.writeFileSync(contentsOutput, JSON.stringify(contentsData, null, 2)); + } + + /** Compare source and target hashmaps (e.g. server and cache) */ + public compare(source: { [key: string]: T }, target: { [key: string]: T }) { + // Note - all update actions are same as create (requires new processing) + const actions: { CREATE: T[]; DELETE: T[]; IGNORE: T[] } = { + CREATE: [], + DELETE: [], + IGNORE: [], + }; + // Compare source with target, Ignore same files and create on source if different to target + Object.entries(source).forEach(([key, sourceFile]) => { + const targetFile = target[key]; + const isSame = this.isFileSame(sourceFile, targetFile); + if (isSame) { + actions.IGNORE.push(sourceFile); + } else { + actions.CREATE.push(sourceFile); + } + }); + // Compare target with source, Delete from target if not exist in source + Object.entries(target).forEach(([key, targetFile]) => { + if (!source.hasOwnProperty(key)) { + actions.DELETE.push(targetFile); + } + }); + return actions; + } + + /** + * Compare a current sheet json with previously converted. + * Assumes conversion still valid if both have same modified timestamp and generated + * using the same converter version + */ + private isFileSame(sourceFile: T, targetFile?: T) { + if (targetFile) { + return ( + sourceFile.modifiedTime === targetFile.modifiedTime && + targetFile.converterVersion === this.converterVersion + ); + } + return false; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/_deprecated/conversionActionQueue.ts b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/conversionActionQueue.ts new file mode 100644 index 0000000000..af4f7d990e --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/_deprecated/conversionActionQueue.ts @@ -0,0 +1,75 @@ +import PQueue from "p-queue"; +import path from "path"; +import fs from "fs-extra"; +import logUpdate from "log-update"; + +import { IConverterPaths, IGDriveContentsEntry } from "../../types"; +import chalk from "chalk"; + +export class ConversionActionQueue { + public queue = new PQueue({ concurrency: 1, autoStart: false }); + + public processed: any[] = []; + + constructor( + public paths: IConverterPaths, + private actions: { CREATE: any[]; IGNORE: any[]; DELETE: any[] } + ) {} + + public generateActionList() {} + + public async processActions() { + this.processDeleteActions(this.actions.DELETE); + this.queueIgnoreActions(this.actions.IGNORE); + this.queueCreateActions(this.actions.CREATE); + this.processActionQueue(); + } + + private async processActionQueue() { + const total = this.queue.size; + this.queue.on("next", () => { + logUpdate(chalk.blue(`${total - this.queue.size - this.queue.pending}/${total} processed`)); + }); + this.queue.start(); + await this.queue.onIdle(); + logUpdate.done(); + } + + private queueIgnoreActions(entries: IGDriveContentsEntry[]) { + // this.queue.addAll( + // entries.map((entry) => { + // const processed = this.loadCachedConversion(entry); + // this.processed.push(processed); + // }) as any, + // { priority: 100 } + // ); + } + + private queueCreateActions(entries: IGDriveContentsEntry[]) { + // this.queue.addAll( + // entries.map((entry) => { + // const processed = new XLSXWorkbookProcessor(this.paths).process(entry); + // const cachedConversions = []; + // for (const jsonFlow of jsonFlows) { + // const processed = this.processSheetConversion(jsonFlow); + // cachedConversions.push(processed); + // this.processed.push(processed); + // } + // this.saveCachedConversion(entry, cachedConversions); + // }) as any, + // { + // priority: 10, + // } + // ); + } + + private processDeleteActions(entries: IGDriveContentsEntry[]) { + const cacheBase = this.paths.SHEETS_CACHE_FOLDER; + for (const entry of entries) { + const targetFile = path.resolve(cacheBase, `${entry.relativePath}.json`); + if (fs.existsSync(targetFile)) { + fs.removeSync(targetFile); + } + } + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/base.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/base.spec.ts new file mode 100644 index 0000000000..20485e66d9 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/base.spec.ts @@ -0,0 +1,84 @@ +import path from "path"; +import BaseProcessor from "./base"; + +import { SCRIPTS_WORKSPACE_PATH } from "../../../../paths"; +import { clearLogs, getLogs } from "../utils"; +const testDataDir = path.resolve(SCRIPTS_WORKSPACE_PATH, "test", "data"); +const paths = { + SHEETS_CACHE_FOLDER: path.resolve(testDataDir, "cache"), + SHEETS_INPUT_FOLDER: path.resolve(testDataDir, "input"), + SHEETS_OUTPUT_FOLDER: path.resolve(testDataDir, "output"), +}; + +const testData = [ + { + input: "Hello", + output: { processed: "Hello" }, + }, +]; + +class TestProcessor extends BaseProcessor { + public async processInput(input: string) { + return { processed: input }; + } +} +let processor: TestProcessor; +describe("Base Processor", () => { + beforeAll(() => { + processor = new TestProcessor({ namespace: "BaseProcessor", paths }); + processor.cache.clear(); + }); + afterAll(() => { + processor.cache.clear(); + }); + + it("Processes inputs", async () => { + const inputs = testData.map((t) => t.input); + const outputs = await processor.process(inputs); + expect(outputs).toEqual(testData.map((t) => t.output)); + }); + + it("Uses cache", () => { + const { input, output } = testData[0]; + const cacheName = processor.cache.generateCacheEntryName(input); + expect(processor.cache.get(cacheName)).toEqual(output); + }); +}); + +describe("Deferred Processor", () => { + let errMsg = ""; + class DeferredProcessor extends BaseProcessor { + public async processInput(input: any) { + let shouldDefer = input === 1 && this.outputs.length === 0; + if (shouldDefer) { + return this.deferInputProcess(input, input); + } + return input; + } + } + let deferredProcessor: DeferredProcessor; + beforeEach(() => { + deferredProcessor = new DeferredProcessor({ namespace: "BaseProcessor", paths }); + deferredProcessor.cache.clear(); + }); + afterAll(() => { + deferredProcessor.cache.clear(); + }); + it("Defers processing", async () => { + const outputs = await deferredProcessor.process([1, 2]); + expect(outputs).toEqual([2, 1]); + }); + it("Limits max defer", async () => { + clearLogs(); + await deferredProcessor.process([1]); + const errorLogs = getLogs("error"); + expect(errorLogs).toEqual([ + { + source: "BaseProcessor", + message: "Max defer limit reached", + details: 1, + level: "error", + }, + ]); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/base.ts b/packages/scripts/src/commands/app-data/convert/processors/base.ts new file mode 100644 index 0000000000..3b9d08aa01 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/base.ts @@ -0,0 +1,160 @@ +import { TimeLike } from "fs-extra"; +import logUpdate from "log-update"; +import path from "path"; +import PQueue from "p-queue"; +import { Logger } from "winston"; +import { IConverterPaths } from "../types"; +import { IContentsEntry, createChildLogger } from "../utils"; +import { JsonFileCache } from "../cacheStrategy/jsonFile"; +import chalk from "chalk"; + +class BaseProcessor { + /** Used to invalidate cache */ + public cacheVersion = 20221026.0; + + public logger: Logger; + + public cache: JsonFileCache; + + public queue = new PQueue({ autoStart: false, concurrency: 1 }); + + public outputs: V[] = []; + + public deferredCounter: { [id: string]: number } = {}; + + /** + * Create a base processor instance. Sets up logging and cache + * @param context.namespace - Name used as prefix for cache and logging + */ + constructor(public context: { namespace: string; paths: IConverterPaths }) { + const { namespace } = context; + this.logger = createChildLogger({ source: namespace }); + this.setupCache(); + } + /** + * Create a namespaced cache folder and populate a list of all files currently cached, + * included relative path, md5 checksum and modified time + */ + private setupCache() { + const { paths, namespace } = this.context; + const cacheFolder = path.resolve(paths.SHEETS_CACHE_FOLDER, namespace); + this.cache = new JsonFileCache(cacheFolder, this.cacheVersion); + } + + /** + * Handle a list of inputs. By default this will loop through the inputs, attempt to load + * from cache and proceed to process individual as required + */ + async process(inputs: T[] = []): Promise { + // add queue process update logs + const total = inputs.length; + this.queue.on("next", () => { + const queueCounter = total - this.queue.size - this.queue.pending; + const logCount = `${queueCounter}/${total} processed`; + logUpdate(chalk.blue(`[ ${this.context.namespace} ] ${logCount}`)); + }); + // queue inputs + this.addInputProcessesToQueue(inputs); + await this.queue.onIdle(); + logUpdate.done(); + return this.postProcess(this.outputs); + } + + /** Optional post-processing of combined outputs */ + public postProcess(outputs: V[]): any { + return outputs; + } + + /** Override method to specify how to process a particular input */ + public processInput(input: T): V | Promise { + console.log("No process input method defined"); + return input as any; + } + + /** Callback made after input either retrieved from cache or processed */ + public notifyInputProcessed(input: T, source: "cache" | "processor") { + // console.log("input processed", { input, source }); + } + + /** + * Use as part of processInput to defer processing until all other queued processes are complete + * @param deferId unique process ID used with `deferMax` to prevent infinite loops + **/ + public deferInputProcess(input: T, deferId: string, deferMax = 5) { + this.handleDeferredInputProcess(input, deferId, deferMax); + } + + /** + * Optional override handle how cache names are stored + * By default will create an md5 hash of the data from the cacheHandler + */ + public generateCacheEntryName(input: T): string { + return this.cache.generateCacheEntryName(input); + } + + /** Optional override to set timestamp on cache items */ + public generateCacheEntryStats(): { mtime: TimeLike } | undefined { + return undefined; + } + + /** Optional override to specify if cached entry should be used */ + public shouldUseCachedEntry(input: any, cachedEntry: IContentsEntry): Boolean { + return true; + } + + private addInputProcessesToQueue(inputs: T[] = [], autoStart = true, priority = 1) { + this.queue.pause(); + for (const input of inputs) { + if (input) { + this.queue.add( + async () => { + const { value, source } = await this.handleInputProcessing(input); + if (value) { + this.notifyInputProcessed(value, source as any); + this.outputs.push(value); + } + }, + { priority } + ); + } + } + if (autoStart) { + this.queue.start(); + } + } + + private handleDeferredInputProcess(input: T, deferId: string, deferMax = 5) { + if (!this.deferredCounter.hasOwnProperty(deferId)) { + this.deferredCounter[deferId] = 0; + } + if (this.deferredCounter[deferId] === deferMax) { + this.logger.error({ message: "Max defer limit reached", details: input }); + return; + } + this.deferredCounter[deferId]++; + const priority = -1 * this.deferredCounter[deferId]; + this.addInputProcessesToQueue([input], true, priority); + } + + private async handleInputProcessing(input: T) { + const cacheEntryName = this.generateCacheEntryName(input); + const cachedEntry = this.cache.get(cacheEntryName); + // handle with cache + if (cachedEntry) { + if (this.shouldUseCachedEntry(input, cachedEntry)) { + this.logger.debug("cache retrieved: " + cacheEntryName); + return { value: cachedEntry, source: "cache" }; + } else { + this.cache.remove(cacheEntryName); + } + } + // handle with processing + const output = await this.processInput(input); + // update cache + const cacheStats = this.generateCacheEntryStats(); + this.cache.add(output, cacheEntryName, cacheStats); + return { value: output, source: "processor" }; + } +} + +export default BaseProcessor; diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.spec.ts new file mode 100644 index 0000000000..878cae5db3 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.spec.ts @@ -0,0 +1,145 @@ +import path from "path"; +import { FlowTypes } from "data-models"; +import { SCRIPTS_WORKSPACE_PATH } from "../../../../../paths"; +import { clearLogs, getLogs } from "../../utils"; +import { FlowParserProcessor } from "./flowParser"; + +const testDataDir = path.resolve(SCRIPTS_WORKSPACE_PATH, "test", "data"); +const paths = { + SHEETS_CACHE_FOLDER: path.resolve(testDataDir, "cache"), + SHEETS_INPUT_FOLDER: path.resolve(testDataDir, "input"), + SHEETS_OUTPUT_FOLDER: path.resolve(testDataDir, "output"), +}; + +// NOTE - inputs are just to test general structure and not run actual parser code +const testInputs: FlowTypes.FlowTypeWithData[] = [ + { + flow_type: "data_list", + flow_subtype: "debug", + flow_name: "test_data_list", + status: "released", + data_list_name: "example", + rows: [], + _xlsxPath: "sheets/test_input.xlsx", + }, + { + flow_type: "template", + flow_subtype: "debug", + flow_name: "test_template", + status: "released", + rows: [], + _xlsxPath: "sheets/test_input.xlsx", + }, + { + flow_type: "data_pipe", + flow_subtype: "debug", + flow_name: "test_data_pipe", + status: "released", + rows: [], + _xlsxPath: "sheets/test_input.xlsx", + }, + , +]; + +let processor: FlowParserProcessor; +describe("FlowParser Processor", () => { + beforeAll(() => { + processor = new FlowParserProcessor(paths); + processor.cache.clear(); + }); + beforeEach(() => { + clearLogs(); + }); + afterAll(() => { + processor.cache.clear(); + }); + it("Logs error on invalid flow_type", async () => { + const invalidFlow: FlowTypes.FlowTypeWithData = { + ...testInputs[0], + flow_type: "test_invalid_type" as any, + }; + await processor.process([invalidFlow]); + const errorLogs = getLogs("error"); + expect(errorLogs.length).toEqual(1); + expect(errorLogs[0].message).toEqual("No parser available for flow_type: test_invalid_type"); + }); + it("Logs flow parse errors", async () => { + clearLogs(); + const brokenFlow: FlowTypes.FlowTypeWithData = { + flow_name: "test_broken_flow", + flow_type: "data_list", + rows: null, + }; + await processor.process([brokenFlow]); + const errorLogs = getLogs("error", "Template parse error"); + expect(errorLogs).toEqual([ + { + source: "flowParser", + message: "Template parse error", + details: { + error: "Cannot read properties of null (reading 'length')", + flow: brokenFlow, + }, + level: "error", + }, + ]); + }); + it("Outputs flows by type", async () => { + const output = await processor.process(testInputs); + expect(Object.keys(output)).toEqual(["data_list", "template", "data_pipe"]); + const errorLogs = getLogs("error"); + if (errorLogs.length > 0) { + console.log("Unexpected Errors:\n", errorLogs); + } + expect(errorLogs.length).toEqual(0); + }); + it("Keeps a hashmap of processed flows by type and name", async () => { + await processor.process(testInputs); + const processedDataListNames = Object.keys(processor.processedFlowHashmap.data_list); + expect(processedDataListNames).toEqual(["test_data_list"]); + }); + it("Caches outputs for conversions", () => { + const cacheName = processor.cache.generateCacheEntryName(testInputs[0]); + expect(processor.cache.get(cacheName)).toBeTruthy(); + }); +}); + +/** Additional tests for data pipe integration */ +describe("FlowParser Processor - Data Pipes", () => { + beforeAll(() => { + processor = new FlowParserProcessor(paths); + processor.cache.clear(); + }); + beforeEach(() => { + clearLogs(); + }); + afterAll(() => { + processor.cache.clear(); + }); + + it("Supports deferred processing", async () => { + await processor.process([ + { + flow_name: "defered_pipe", + flow_type: "data_pipe", + rows: [ + { + input_source: "defer_data_list", + args_list: "id>1" as any, + operation: "filter", + output_target: "defer_output_list", + }, + ], + }, + { + flow_type: "data_list", + flow_name: "defer_data_list", + rows: [{ id: 1 }, { id: 2 }, { id: 3 }], + }, + ]); + expect(processor.processedFlowHashmap.data_list.defer_output_list).toEqual([ + { id: 2 }, + { id: 3 }, + ]); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.ts new file mode 100644 index 0000000000..e6be7a507a --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/flowParser.ts @@ -0,0 +1,143 @@ +import { FlowTypes } from "data-models"; +import * as Parsers from "./parsers"; +import { IConverterPaths, IFlowHashmapByType, IParsedWorkbookData } from "../../types"; +import { arrayToHashmap, groupJsonByKey, IContentsEntry } from "../../utils"; +import BaseProcessor from "../base"; + +export class FlowParserProcessor extends BaseProcessor { + public cacheVersion = 20230509.3; + + public parsers: { [flowType in FlowTypes.FlowType]: Parsers.DefaultParser } = { + data_list: new Parsers.DataListParser(this), + data_pipe: new Parsers.DataPipeParser(this), + generator: new Parsers.GeneratorParser(this), + global: new Parsers.DefaultParser(this), + template: new Parsers.TemplateParser(this), + tour: new Parsers.DefaultParser(this), + }; + + /** Keep a track of all processed flows by type and name (used in data_pipes)*/ + public processedFlowHashmap: { + [flowType in FlowTypes.FlowType]?: { [flow_name: string]: FlowTypes.FlowTypeWithData["rows"] }; + } = {}; + + constructor(paths: IConverterPaths) { + super({ paths, namespace: "flowParser" }); + } + + public processInput(flow: FlowTypes.FlowTypeWithData) { + const { flow_name, flow_type, _xlsxPath } = flow; + const parser = this.parsers[flow_type]; + if (!parser) { + const message = `No parser available for flow_type: ${flow_type}`; + this.logger.error({ message, details: { _xlsxPath, flow_name, flow_type } }); + return null; + } + try { + const parsed = parser.run(flow); + return parsed; + } catch (error) { + this.logger.error({ + message: "Template parse error", + details: { error: error.message, flow }, + }); + return null; + } + } + + /** When an input has been processed keep a reference in the hashmap */ + public notifyInputProcessed( + input: FlowTypes.FlowTypeWithData, + source: "cache" | "processor" + ): void { + this.updateProcessedFlowHashmap(input); + } + + public updateProcessedFlowHashmap(flow: FlowTypes.FlowTypeWithData) { + const { flow_name, flow_type } = flow; + if (!this.processedFlowHashmap[flow_type]) { + this.processedFlowHashmap[flow_type] = {}; + } + // Key should be unique as duplicates checked in main convert method + this.processedFlowHashmap[flow_type][flow_name] = flow.rows; + } + + /** + * Apply combined parser postProcess methods + * @returns hashmap of flowtypes with postprocessed flows + */ + public async postProcess(flows: FlowTypes.FlowTypeWithData[]) { + // post process flows by type + const flowArraysByType = groupJsonByKey(flows, "flow_type"); + for (const [flowType, parser] of Object.entries(this.parsers)) { + if (flowArraysByType[flowType]) { + flowArraysByType[flowType] = parser.postProcessFlows(flowArraysByType[flowType]); + } + } + // convert to hashmap for easier processing of generated flows + const flowHashmapByType: IFlowHashmapByType = {}; + for (const [type, typeFlows] of Object.entries(flowArraysByType)) { + flowHashmapByType[type] = arrayToHashmap(typeFlows, "flow_name", (k) => { + this.logger.error("Duplicate flows found", [type, k]); + return k; + }); + } + // populate any generated flows to main list + const flowTypesWithGenerated = this.populateGeneratedFlows(flowHashmapByType); + + // convert back from hashmap to hashArrays for final output + const outputData: IParsedWorkbookData = {}; + for (const [type, typeHashmap] of Object.entries(flowTypesWithGenerated)) { + outputData[type] = Object.values(typeHashmap); + } + return outputData; + } + + /** + * Iterate over all flows to check for any that populate additional _generated flows + * that should be extracted to top-level + */ + private populateGeneratedFlows(flowsByType: IFlowHashmapByType) { + // handle any additional methods that operate on full list of processed flows, + // e.g. populating additional generated flows + for (const typeFlows of Object.values(flowsByType)) { + for (const { _generated, ...flow } of Object.values(typeFlows)) { + if (_generated) { + // remove _generated field from flow + flowsByType[flow.flow_type][flow.flow_name] = flow; + // populate generated to main list, ensure generated flows are also fully processed + for (const generatedFlows of Object.values(_generated)) { + for (const generatedFlow of Object.values(generatedFlows)) { + flowsByType[generatedFlow.flow_type] ??= {}; + if (flowsByType[generatedFlow.flow_type][generatedFlow.flow_name]) { + this.logger.error({ + message: "Generated flow will override existing flow", + details: [generatedFlow.flow_type, generatedFlow.flow_name], + }); + } + const processed = this.processInput(JSON.parse(JSON.stringify(generatedFlow))); + flowsByType[generatedFlow.flow_type][generatedFlow.flow_name] = processed; + } + } + } + } + } + return flowsByType; + } + + public shouldUseCachedEntry( + input: FlowTypes.FlowTypeWithData, + cachedEntry: IContentsEntry + ): Boolean { + // Ignore cache if data_pipe (in case dependencies have changed) + // TODO refine to bypass cache iff datalists not in cache + if (input.flow_type === "data_pipe") { + return false; + } + // TODO - optimise to use cache if generator and list unchanged + if (input.flow_type === "generator") { + return false; + } + return true; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.spec.ts new file mode 100644 index 0000000000..0aafbd20fc --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.spec.ts @@ -0,0 +1,43 @@ +import { DataListParser } from "."; + +const testFlow = { + flow_type: "data_list", + flow_name: "test_data_list", + rows: [ + { + id: "test_1", + test_notification_schedule: "key_1:value_1; key_2:value_2", + test_condition_list: "@fields.workshop_number == 1", + "nested.test_1": 1, + "nested.test_2": "two", + }, + ], +}; + +describe("data_list Parser", () => { + let outputRows: any[]; + beforeAll(() => { + const parser = new DataListParser({ processedFlowHashmap: {} } as any); + const output = parser.run(testFlow as any); + outputRows = output.rows; + }); + it("Extracts condition_list", async () => { + const { test_condition_list } = outputRows[0]; + expect(test_condition_list).toEqual([ + { + condition_type: "calc", + condition_args: { calc: "@fields.workshop_number == 1" }, + _raw: "@fields.workshop_number == 1", + }, + ]); + }); + it("Extracts nested properties", async () => { + const { nested } = outputRows[0]; + expect(nested).toEqual({ test_1: 1, test_2: "two" }); + }); + // TODO - likely deprecated (can't see in codebase) + it("Extracts notification_schedule", async () => { + const { test_notification_schedule } = outputRows[0]; + expect(test_notification_schedule).toEqual({ key_1: "value_1", key_2: "value_2" }); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.ts new file mode 100644 index 0000000000..a6495d90a4 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_list.parser.ts @@ -0,0 +1,34 @@ +import { extractDynamicFields, FlowTypes } from "data-models"; +import { + extractConditionList, + parseAppDataCollectionString, + setNestedProperty, +} from "../../../utils"; +import { DefaultParser } from "./default.parser"; + +export class DataListParser extends DefaultParser { + postProcessRow(row: FlowTypes.Data_listRow) { + Object.keys(row).forEach((field) => { + // handle other data structures + if (field.endsWith("_condition_list")) { + row[field] = row[field].map((value) => extractConditionList(value)); + } + if (field.endsWith("notification_schedule")) { + row[field] = parseAppDataCollectionString(row[field]); + } + // assign nested structures, e.g {time.hour : 4} => {time: { hour: 4 }} + if (field.includes(".")) { + row = setNestedProperty(field, row[field], row); + delete row[field]; + } + }); + // extract dynamic fields for runtime evaluation + // NOTE CC 2022-08-17 - not currently in use + const dynamicFields = extractDynamicFields(row); + if (dynamicFields) { + // row._dynamicFields = dynamicFields; + // row._dynamicDependencies = extractDynamicDependencies(dynamicFields); + } + return row; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.spec.ts new file mode 100644 index 0000000000..57d8fed464 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.spec.ts @@ -0,0 +1,99 @@ +import { FlowTypes } from "data-models"; +import { IDataPipeOperation } from "shared/src/models/dataPipe/types"; +import { DataPipeParser } from "./data_pipe.parser"; + +const testInputSources = { + data_list: { test_data_list: [{ id: 1 }, { id: 2 }, { id: 3 }] }, +}; + +describe("data_pipe Parser", () => { + it("Populates generated data lists", async () => { + const parser = new DataPipeParser({ processedFlowHashmap: testInputSources } as any); + const output = parser.run({ + flow_name: "test_pipe_parse", + flow_type: "data_pipe", + rows: [ + { + input_source: "test_data_list", + operation: "filter", + args_list: "id > 1" as any, // will be parsed during process + output_target: "test_output_1", + }, + { + input_source: "test_output_1", + operation: "filter", + args_list: "id > 2" as any, // will be parsed during process + output_target: "test_output_2", + }, + ], + }) as FlowTypes.DataPipeFlow; + expect(output._generated.data_list).toEqual({ + test_output_1: { + flow_name: "test_output_1", + flow_subtype: "generated", + flow_type: "data_list", + rows: [{ id: 2 }, { id: 3 }], + }, + test_output_2: { + flow_name: "test_output_2", + flow_subtype: "generated", + flow_type: "data_list", + rows: [{ id: 3 }], + }, + }); + }); + + it("Allows outputs from one pipe to be used in another", () => { + const parser = new DataPipeParser({ processedFlowHashmap: testInputSources } as any); + const ops1: IDataPipeOperation[] = [ + { + input_source: "test_data_list", + operation: "filter", + args_list: "id > 1" as any, // will be parsed during process + output_target: "test_output_1", + }, + ]; + parser.run({ flow_name: "flow1", flow_type: "data_pipe", rows: ops1 }); + expect(parser.flowProcessor.processedFlowHashmap.data_list.test_output_1).toEqual([ + { id: 2 }, + { id: 3 }, + ]); + const ops2: IDataPipeOperation[] = [ + { + input_source: "test_output_1", + operation: "filter", + args_list: "id > 2" as any, // will be parsed during process + output_target: "test_output_2", + }, + ]; + const output = parser.run({ + flow_name: "flow2", + flow_type: "data_pipe", + rows: ops2, + }) as FlowTypes.DataPipeFlow; + expect(output._generated.data_list).toEqual({ + test_output_2: { + flow_name: "test_output_2", + flow_subtype: "generated", + flow_type: "data_list", + rows: [{ id: 3 }], + }, + }); + }); + + it("Defers processing when inputs not available", async () => { + let deferred = []; + const parser = new DataPipeParser({ + processedFlowHashmap: {}, + deferInputProcess: (input: any, id: string) => { + deferred.push(id); + }, + } as any); + parser.run({ + flow_name: "test_pipe_defer", + flow_type: "data_pipe", + rows: [{ input_source: "missing_list" }], + }); + expect(deferred).toEqual(["data_pipe.test_pipe_defer"]); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.ts new file mode 100644 index 0000000000..c5e28cdb2e --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/data_pipe.parser.ts @@ -0,0 +1,49 @@ +import { FlowTypes } from "data-models"; +import { DataPipe } from "shared/src/models/dataPipe"; +import { DefaultParser } from "./default.parser"; + +export class DataPipeParser extends DefaultParser { + /** If extending the class add additional postprocess pipeline here */ + + public postProcessFlow(flow: FlowTypes.DataPipeFlow): FlowTypes.DataPipeFlow { + const inputSources = this.loadInputSources(); + const pipe = new DataPipe(flow.rows, inputSources); + const missingInputs = pipe.checkMissingInputs(); + // Try to defer processing if inputs are missing as they might be generated as part + // of another flow + if (missingInputs) { + const deferId = `${flow.flow_type}.${flow.flow_name}`; + this.flowProcessor.deferInputProcess(flow, deferId); + return; + } + try { + const outputs = pipe.run(); + this.populateGeneratedFlows(outputs); + } catch (error) { + console.trace(error); + throw error; + } + return this.flow; + } + + private populateGeneratedFlows(outputs: { [output_name: string]: any[] }) { + const generated: FlowTypes.DataPipeFlow["_generated"] = { data_list: {} }; + this.flowProcessor.processedFlowHashmap.data_list ??= {}; + + for (const [flow_name, rows] of Object.entries(outputs)) { + generated.data_list[flow_name] = { + flow_name, + flow_subtype: "generated", + flow_type: "data_list", + rows, + }; + // also populate generated outputs to be available for future input sources + this.flowProcessor.processedFlowHashmap.data_list[flow_name] = rows; + } + this.flow._generated = generated; + } + + private loadInputSources() { + return this.flowProcessor?.processedFlowHashmap?.data_list || {}; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.spec.ts new file mode 100644 index 0000000000..d3b268069b --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.spec.ts @@ -0,0 +1,3 @@ +describe("default Parser", () => { + it("TODO - add tests", () => expect(true).toEqual(true)); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.ts new file mode 100644 index 0000000000..9ec9ddede3 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/default.parser.ts @@ -0,0 +1,333 @@ +import chalk from "chalk"; +import { FlowTypes } from "data-models"; +import { TemplatedData } from "shared"; +import { + parseAppDataListString, + parseAppDataCollectionString, + parseAppDataActionString, + parseAppDateValue, +} from "../../../utils"; +import { ActiveDeployment } from "../../../../../deployment/get"; +import { FlowParserProcessor } from "../flowParser"; +// When running this parser assumes there is a 'type' column +type IRowData = { type: string; name?: string; rows?: IRowData }; + +/** + * The default processor performs the following: + * - Look for rows starting `begin_groupname` and `end_groupname`, form a + * nested group `groupname_group`. E.g. `begin_step` and `end_step` -> `step_group` + * - Rewrite urls for `_asset` types to direct to local assets folder + * - Rewrite `_list` content as string array + */ +export class DefaultParser< + FlowType extends FlowTypes.FlowTypeWithData = FlowTypes.FlowTypeWithData +> { + activeDeployment = ActiveDeployment.get(); + + public flow: FlowType; + + /** All rows are handled in a queue, processing linearly */ + public queue: IRowData[]; + private summary = { missingAssets: [] }; + + /** All parsers have access to main processor */ + constructor(public flowProcessor: FlowParserProcessor) {} + + /** Default function to call a start the process of parsing rows */ + public run(flow: FlowTypes.FlowTypeWithData): FlowTypes.FlowTypeWithData { + this.flow = JSON.parse(JSON.stringify(flow)); + this.queue = flow.rows; + const processedRows = []; + // If first row specifies default values extract them and remove row from queue + const rowDefaultValues = this.extractRowDefaultValues(this.flow); + if (rowDefaultValues) { + this.queue.shift(); + } + // Process queue + while (this.queue.length > 0) { + const row = this.queue[0]; + try { + const processed = new RowProcessor(row, this, rowDefaultValues).run(); + // some rows may be omitted during processing so ignore + if (processed) { + const postProcessed = this.postProcessRow(processed); + if (postProcessed) { + processedRows.push(postProcessed); + } + } + this.queue.shift(); + } catch (error) { + throwRowParseError(error, row); + } + } + if (this.summary.missingAssets.length > 0) { + console.log(chalk.red("Missing Assets:")); + console.table(this.summary.missingAssets); + } + this.flow.rows = processedRows; + this.flow = this.postProcessFlow(this.flow); + return this.flow; + } + + /** If any flows have a first row that starts `@default` return values */ + private extractRowDefaultValues(flow: FlowType) { + const firstRow = flow.rows?.[0] || {}; + if (Object.values(firstRow)[0] === "@default") { + const defaultKey = Object.keys(firstRow)[0]; + delete firstRow[defaultKey]; + return firstRow; + } + } + + /*************************************************************************************** + * Postprocess Pipeline + * If extending the class, override these default methods to add additional + * postprocess pipeline. By default, each method just returns its input. + **************************************************************************************/ + + /** Overridable method called by parser to apply any additional processing + * on each individual row. By default the original row is simply returned */ + public postProcessRow(row: any) { + return row; + } + + /** Overridable method called by parser to apply any additional processing + * on each individual flow. By default the original flow is simply returned */ + public postProcessFlow(flow: FlowType) { + return flow; + } + + /** Overridable method called by parser to apply any additional processing on the + * array of all processed flows. By default the original list is simply returned */ + public postProcessFlows(flows: FlowType[]) { + return flows; + } +} + +/** + * Process individual template rows. By default this includes steps such as removing metadata columns, + * migrating deprecated columns, processing default values and self-references and handling translations + */ +class RowProcessor { + constructor(public row: IRowData, public parent: DefaultParser, public defaultValues?: any) {} + + public run() { + this.processRowDefaultValues(); + this.removeMetaFields(); + this.cleanFieldValues(); + this.migrateDeprecatedFields(); + this.assignTranslatedFields(); + this.replaceRowSelfReferences(); + + // NOTE - translated and row-reference fields can both reference each other + // (e.g. @row.title -> title::eng -> @row.id ) so additional update required after translate and replace + this.updateTranslatedFields(); + + this.handleSpecialFieldTypes(); + this.processNestedRowGroups(); + + // remove rows now left as empty (null return will remove from future processing) + if (Object.keys(this.row).length === 0) { + return null; + } + return this.row; + } + + /** + * When processing datalists only some fields will be translatable. These are identified with a + * `::eng` suffix, e.g. title::eng + * + * Copy these base translations to the base field (e.g. `title`), and track ref in metadata + * Note, cannot assume all :: statements translations as also used in fields, e.g. fields::favourite + */ + + private assignTranslatedFields() { + Object.keys(this.row).forEach((field) => { + // TODO - alter fields syntax to avoid potential conflict (e.g. fields::eng) + if (field.endsWith("::eng")) { + // copy eng value to base column. Avoid replace if base column already exists with value + // (e.g. in case where value, value::eng only applies to some rows in template) + const baseTranslation = this.row[field]; + const baseField = field.replace("::eng", ""); + if (this.row[baseField] === undefined || this.row[baseField] === "") { + this.row[baseField] = baseTranslation; + this.row["_translatedFields"] = { + ...this.row["_translatedFields"], + [baseField]: { + eng: this.row[baseField], + }, + }; + } + delete this.row[field]; + } + }); + this.updateTranslatedFields(); + } + + private updateTranslatedFields() { + const translatedFields = this.row["_translatedFields"] || {}; + Object.keys(translatedFields).forEach((field) => { + this.row["_translatedFields"][field] = { + eng: this.row[field], + }; + }); + } + + /** + * TODO - some specific sheet types (e.g. template data_list and derivatives) + * will likely perfer to convert depending on the name or id of the row (ending in _list or _collection) + * Should likely want to add support to automate conversion (currently manually handled in template parser) + **/ + private processNestedRowGroups() { + const type = this.row.type || ""; + if (type.startsWith("begin_")) { + try { + const group = this.extractGroup(); + const groupType = type.replace("begin_", ""); + const subParser = new DefaultParser(this.parent.flowProcessor); + const childFlow = JSON.parse(JSON.stringify(this.parent.flow)); + childFlow.rows = group; + const parsedGroup = subParser.run(childFlow); + this.row = { ...this.row, type: groupType, rows: parsedGroup.rows as any }; + } catch (ex) { + console.warn("Error on group extract on row", this.row, this.parent.flow, ex); + console.warn("Error is in sheet ", this.parent.flow._xlsxPath); + } + } + // Can ignore as handled during subgroup extraction + if (type.startsWith("end_")) { + this.row = {} as any; + } + } + + /** + * Look through current queue for first instance of a group defined by `begin_` and `end_` + * row types. Keeps an internal tally of any additional `begin_` types to handle case + * where further groups are nested within a group + */ + private extractGroup(startIndex = 0): IRowData[] { + let nestedIfCount = 0; + const endIndex = this.parent.queue.slice(startIndex).findIndex((row) => { + const type = row.type || ""; + if (type.startsWith("begin_")) nestedIfCount++; + if (type.startsWith("end_")) nestedIfCount--; + return nestedIfCount === 0; + }); + if (endIndex === -1) { + console.log("could not find end index", startIndex); + throw new Error( + "extract group error. count not find end index for start index=" + startIndex + ); + } + const queueEndIndex = startIndex + endIndex; + // remove all rows from the queue excluding start and end clause statements (e.g. if/end-if) + const groupedRows = this.parent.queue.splice(1, queueEndIndex - 1); + return groupedRows; + } + + private handleSpecialFieldTypes() { + Object.entries(this.row).forEach(([field, value]) => { + // skip processing any fields that will be populated from datalist itmes + const shouldSkip = typeof value === "string" && value.startsWith("@item."); + // handle custom fields + if (!shouldSkip) { + if (typeof value === "string") { + if (field.endsWith("_list")) { + this.row[field] = parseAppDataListString(value); + } + if (field.endsWith("_collection")) { + this.row[field] = parseAppDataCollectionString(this.row[field]); + } + if (field.endsWith("action_list")) { + this.row[field] = this.row[field] + .map((actionString) => parseAppDataActionString(actionString)) + .filter((action) => action !== null); + } + } + // convert google/excel number dates to dates (https://stackoverflow.com/questions/16229494/converting-excel-date-serial-number-to-date-using-javascript) + if (field.endsWith("_date")) { + if (typeof this.row[field] === "number") { + this.row[field] = parseAppDateValue(this.row[field]); + } + } + } + }); + } + + /** replace any self references, i.e "hello @row.id" => "hello some_id" */ + private replaceRowSelfReferences() { + // Hack - avoid replacing @row statements in data pipes as they refer to row on data source instead + if (this.parent.flow.flow_type === "data_pipe") return this.row; + // Handle replacements + const context = { row: this.row }; + return new TemplatedData({ context, initialValue: this.row }).parse(); + } + + private removeMetaFields() { + Object.keys(this.row).forEach((field) => { + if (field.startsWith("__")) { + delete this.row[field]; + } + if (field.startsWith("comment")) { + delete this.row[field]; + } + }); + } + private cleanFieldValues() { + Object.keys(this.row).forEach((field) => { + if (typeof this.row[field] === "string") { + // remove whitespace + this.row[field] = this.row[field].trim(); + } + }); + } + + private migrateDeprecatedFields() { + Object.keys(this.row).forEach((field) => { + if (DEPRECATED_FIELD_NAMES.hasOwnProperty(field)) { + const replacement = DEPRECATED_FIELD_NAMES[field]; + const warning = `-- ${this.parent.flow.flow_name} --\n[${field}] is deprecated and should be replaced with [${replacement}]`; + console.warn(chalk.gray(warning)); + this.row[replacement] = JSON.parse(JSON.stringify(this.row[field])); + delete this.row[field]; + } + }); + } + + /** Apply any defaults where row value not defined or defaults included/omitted */ + private processRowDefaultValues() { + if (this.defaultValues) { + Object.entries(this.defaultValues).forEach(([key, value]) => { + if (this.row[key] === undefined) { + this.row[key] = value; + } else { + if (typeof this.row[key] === "string") { + if (this.row[key].includes("@include_default")) { + this.row[key] = this.row[key].replace("@include_default", value); + } + if (this.row[key].includes("@omit_default")) { + delete this.row[key]; + } + } + } + }); + } + } +} + +/** + * Add context information to errors originating from row parser. + * This will from the template error logging method + * */ +function throwRowParseError(error: Error, row: IRowData) { + console.trace(error); + error.message = `Error Parsing Row \n ${chalk.yellow( + JSON.stringify(row, null, 2) + )} \n ${chalk.red(error.message)}`; + // add more context to error + throw error; +} + +const DEPRECATED_FIELD_NAMES = { + click_action_list: "action_list", +}; diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.spec.ts new file mode 100644 index 0000000000..4d0fafff90 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.spec.ts @@ -0,0 +1,94 @@ +import { FlowTypes } from "data-models"; +import { GeneratorParser } from "./generator.parser"; + +const dataListInputs = { + test_data_list: [ + { + id: 1, + title: "Workshop 1", + main_image: "img1", + img_condition: "@fields.showImg1", + subtype: "type_1", + }, + { id: 2, title: "Workshop 2", main_image: "img2", img_condition: true, subtype: "type_2" }, + ], +}; + +const generatorInput: FlowTypes.GeneratorFlow = { + flow_name: "test_pipe_parse", + flow_type: "generator", + parameter_list: { + input_data_list: "test_data_list", + output_flow_name: "generated_template_@gen.id", + output_flow_subtype: "generated_@gen.subtype", + output_flow_type: "template", + }, + rows: [ + { + name: "title", + value: "Welcome to @gen.title", + }, + { + name: "image", + value: "@gen.main_image", + condition: "@gen.img_condition", + }, + { + name: "text", + value: "End of workshop", + }, + ], +}; + +describe("generator Parser", () => { + it("Parses generator flow", async () => { + const parser = new GeneratorParser({ + processedFlowHashmap: { data_list: dataListInputs }, + } as any); + const output = parser.run(generatorInput); + expect(output._generated).toEqual({ + template: { + generated_template_1: { + flow_type: "template", + flow_subtype: "generated_type_1", + flow_name: "generated_template_1", + rows: [ + { + name: "title", + value: "Welcome to Workshop 1", + }, + { + name: "image", + value: "img1", + condition: "@fields.showImg1", + }, + { + name: "text", + value: "End of workshop", + }, + ], + }, + generated_template_2: { + flow_type: "template", + flow_subtype: "generated_type_2", + flow_name: "generated_template_2", + rows: [ + { + name: "title", + value: "Welcome to Workshop 2", + }, + { + name: "image", + value: "img2", + condition: "true", + }, + { + name: "text", + value: "End of workshop", + }, + ], + }, + }, + }); + }); +}); diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.ts new file mode 100644 index 0000000000..f5c7e92d96 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/generator.parser.ts @@ -0,0 +1,94 @@ +import { FlowTypes } from "data-models"; +import { DefaultParser } from "./default.parser"; +import { TemplatedData } from "shared"; + +export class GeneratorParser extends DefaultParser { + /** + * Method applied after all flow processing and processing methods to populate + * generated flows to main list + */ + public static populateProcessedFlows() {} + + public postProcessFlow(flow: FlowTypes.GeneratorFlow): FlowTypes.GeneratorFlow { + flow.parameter_list = this.validateParameterList(flow); + + const inputSources = this.loadInputSources(); + const dataListRows: FlowTypes.Data_listRow[] = + inputSources[flow.parameter_list.input_data_list]; + // Try to defer processing if inputs are missing as they might be generated as part + // of another flow + if (!dataListRows) { + const deferId = `${flow.flow_type}.${flow.flow_name}`; + this.flowProcessor.deferInputProcess(flow, deferId); + return; + } + try { + this.flow._generated = this.generateFlows(flow, dataListRows); + // this.handleOutputs(generated); + } catch (error) { + console.trace(error); + throw error; + } + return this.flow; + } + + private validateParameterList( + flow: FlowTypes.GeneratorFlow + ): FlowTypes.GeneratorFlow["parameter_list"] { + const { flow_name, parameter_list } = flow; + if (!parameter_list) { + throw new Error("No parameter list provided to generator"); + } + let { input_data_list, output_flow_name, output_flow_type, output_flow_subtype } = + parameter_list; + if (!input_data_list) { + throw new Error('"input_data_list" required for generator'); + } + if (!output_flow_type) { + output_flow_type = "template"; + } + if (!output_flow_subtype) { + output_flow_subtype = "generated"; + } + if (!output_flow_name) { + output_flow_name = `${flow_name}_{{@gen.id}}`; + } + return { input_data_list, output_flow_name, output_flow_type, output_flow_subtype }; + } + + /** Iterate over provided data list rows and use to create a new generated flow from generator base flow */ + private generateFlows( + generator: FlowTypes.GeneratorFlow, + dataListRows: FlowTypes.Data_listRow[] + ) { + const generated: FlowTypes.FlowTypeWithData["_generated"] = {}; + + for (const listRow of dataListRows) { + const parser = new TemplatedData({ + context: { gen: listRow }, + }); + const { output_flow_name, output_flow_type, output_flow_subtype } = parser.parse( + // ensure original values used each parse + JSON.parse(JSON.stringify(generator.parameter_list)) + ) as FlowTypes.GeneratorFlow["parameter_list"]; + const parsedRows = generator.rows.map((genRow) => { + const parsed = parser.parse(JSON.parse(JSON.stringify(genRow))); + return parsed; + }); + // populate as generated flow + const generatedFlow: FlowTypes.FlowTypeWithData = { + flow_name: output_flow_name, + flow_subtype: output_flow_subtype, + flow_type: output_flow_type, + rows: parsedRows, + }; + generated[output_flow_type] ??= {}; + generated[output_flow_type][output_flow_name] = generatedFlow; + } + return generated; + } + + private loadInputSources() { + return this.flowProcessor?.processedFlowHashmap?.data_list || {}; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/index.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/index.ts new file mode 100644 index 0000000000..3655ef9b4d --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/index.ts @@ -0,0 +1,5 @@ +export * from "./data_list.parser"; +export * from "./data_pipe.parser"; +export * from "./default.parser"; +export * from "./generator.parser"; +export * from "./template.parser"; diff --git a/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.spec.ts new file mode 100644 index 0000000000..74cd1f1d51 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.spec.ts @@ -0,0 +1,3 @@ +describe("template Parser", () => { + it("TODO - add tests", () => expect(true).toEqual(true)); +}); diff --git a/packages/scripts/src/commands/app-data/convert/parsers/template/template.parser.ts b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.ts similarity index 83% rename from packages/scripts/src/commands/app-data/convert/parsers/template/template.parser.ts rename to packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.ts index a6254c378c..b196d3eb31 100644 --- a/packages/scripts/src/commands/app-data/convert/parsers/template/template.parser.ts +++ b/packages/scripts/src/commands/app-data/convert/processors/flowParser/parsers/template.parser.ts @@ -1,20 +1,16 @@ import { FlowTypes } from "data-models"; import { extractDynamicFields } from "data-models"; -import { DefaultParser } from "../default/default.parser"; +import { DefaultParser } from "./default.parser"; import { arrayToHashmap, - flattenJson, + extractDynamicDependencies, logWarning, parseAppDataCollectionString, parseAppDataListString, -} from "../../utils"; +} from "../../../utils"; export class TemplateParser extends DefaultParser { - constructor() { - super(); - this.groupSuffix = ""; - } - postProcess(row: FlowTypes.TemplateRow, nestedPath?: string) { + postProcessRow(row: FlowTypes.TemplateRow, nestedPath?: string) { // remove empty rows if (Object.keys(row).length === 0) { return; @@ -58,12 +54,12 @@ export class TemplateParser extends DefaultParser { const dynamicFields = extractDynamicFields(row); if (dynamicFields) { row._dynamicFields = dynamicFields; - row._dynamicDependencies = this.extractDynamicDependencies(dynamicFields); + row._dynamicDependencies = extractDynamicDependencies(dynamicFields); } // handle nested rows in same way if (row.rows) { - row.rows = row.rows.map((r) => this.postProcess(r, row._nested_name)); + row.rows = row.rows.map((r) => this.postProcessRow(r, row._nested_name)); } if (row.exclude_from_translation) { @@ -119,18 +115,6 @@ export class TemplateParser extends DefaultParser { return result; } - private extractDynamicDependencies(dynamicFields: FlowTypes.TemplateRow["_dynamicFields"]) { - const dynamicDependencies = {}; - const flatFields = flattenJson(dynamicFields); - Object.entries(flatFields).forEach(([key, fields]) => { - fields.forEach((field) => { - const deps = dynamicDependencies[field.matchedExpression] || []; - dynamicDependencies[field.matchedExpression] = [...deps, key]; - }); - }); - return dynamicDependencies; - } - /** * HACK - refactor self-referencing actions so that the dynamic value can be updated at runtime * TODO - will no longer be required if dynamic deps system updated to self populate in realtime (not template parser) @@ -139,6 +123,10 @@ export class TemplateParser extends DefaultParser { action_list: FlowTypes.TemplateRow["action_list"], rowName: string ) { + // Ignore case where action list not array, such as when dynamic reference to @item.action_list + if (!Array.isArray(action_list)) { + return action_list; + } return action_list.map((action) => { if (rowName && Array.isArray(action.args)) { action.args = action.args.map((arg) => { diff --git a/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.spec.ts b/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.spec.ts new file mode 100644 index 0000000000..4d3d17a501 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.spec.ts @@ -0,0 +1,71 @@ +import path from "path"; +import { XLSXWorkbookProcessor } from "./xlsxWorkbook"; + +import { SCRIPTS_TEST_DATA_DIR } from "../../../../paths"; +import { clearLogs, getLogs, IContentsEntry } from "../utils"; +const paths = { + SHEETS_CACHE_FOLDER: path.resolve(SCRIPTS_TEST_DATA_DIR, "cache"), + SHEETS_INPUT_FOLDER: path.resolve(SCRIPTS_TEST_DATA_DIR, "input", "sheets"), + SHEETS_OUTPUT_FOLDER: path.resolve(SCRIPTS_TEST_DATA_DIR, "output", "sheets"), +}; + +const testInputs: IContentsEntry[] = [ + { + modifiedTime: "2021-08-20T09:55:53.006Z", + size_kb: 2717, + md5Checksum: "123456789abcd", + relativePath: "test_input.xlsx", + }, +]; + +let processor: XLSXWorkbookProcessor; +describe("XLSX Workbook Processor", () => { + beforeAll(() => { + processor = new XLSXWorkbookProcessor(paths); + processor.cache.clear(); + }); + afterAll(() => { + processor.cache.clear(); + }); + + // Processor will convert all inputs to json array, producing + // an array of arrays + it("Converts XLSXs to array of JSON sheet arrays", async () => { + const outputs = await processor.process(testInputs); + expect(Array.isArray(outputs)).toBeTrue(); + expect(outputs.length).toEqual(testInputs.length); + // each entry may contain multiple sheets from workbook + const testInputsheets = outputs[0]; + expect(testInputsheets.length).toEqual(5); + expect(testInputsheets[0].flow_type).toEqual("data_list"); + }); + it("throws on missing file", async () => { + clearLogs(); + const missingInput = { ...testInputs[0], relativePath: "missing.xlsx" }; + await processor.process([missingInput]); + const errLogs = getLogs("error"); + expect(errLogs).toEqual([ + { + level: "error", + message: "Xlsx not found: missing.xlsx", + source: "xlsxWorkbookProcessor", + }, + ]); + }); + it("Uses cache", () => { + const cacheName = processor.cache.generateCacheEntryName(testInputs[0]); + expect(processor.cache.get(cacheName)).toBeTruthy(); + }); +}); + +/** Utility class to allow direct access to parsed flows for use in tests */ +export class TestXLSXWorkbookProcessor extends XLSXWorkbookProcessor { + constructor() { + super(paths); + } + async getProcessed(sheetPath: string, flowname: string) { + const parsedWorkbooks = await this.process([{ relativePath: sheetPath } as any]); + const matchingFlow = parsedWorkbooks[0].find((f) => f.flow_name === flowname); + return matchingFlow; + } +} diff --git a/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.ts b/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.ts new file mode 100644 index 0000000000..662a4d494a --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/processors/xlsxWorkbook.ts @@ -0,0 +1,107 @@ +import * as xlsx from "xlsx"; +import path from "path"; +import { FlowTypes } from "data-models"; +import { IConverterPaths } from "../types"; +import chalk from "chalk"; +import BaseProcessor from "./base"; +import { existsSync } from "fs-extra"; +import { IContentsEntry, parseAppDataCollectionString } from "../utils"; + +export class XLSXWorkbookProcessor extends BaseProcessor { + public cacheVersion = 20230509.1; + constructor(paths: IConverterPaths) { + super({ paths, namespace: "xlsxWorkbookProcessor" }); + } + + public async processInput(entry: IContentsEntry) { + const { relativePath } = entry; + const inputFolder = this.context.paths.SHEETS_INPUT_FOLDER; + const xlsxPath = path.resolve(inputFolder, relativePath); + if (!existsSync(xlsxPath)) { + this.logger.error({ message: `Xlsx not found: ${relativePath}` }); + return; + } + // convert and merge contents sheet + const json = this.convertXLSXSheetsToJson(xlsxPath); + const merged = this.mergeContentsSheet([{ json, xlsxPath }]); + // Ensure all paths use / to match HTTP style paths + const { SHEETS_INPUT_FOLDER } = this.context.paths; + const _xlsxPath = path.relative(SHEETS_INPUT_FOLDER, xlsxPath).replace(/\\/g, "/"); + const processed = merged.map((v) => { + v._xlsxPath = _xlsxPath; + return v; + }); + return processed; + } + + /** + * Parses an xlsx file, returning an object with sheet names as keys + * and a corresponding array of key-value pairs to represent the sheet data + * (assumes header provided in top row) + */ + private convertXLSXSheetsToJson(xlsxFilePath: string) { + const json = {}; + const workbook = xlsx.readFile(xlsxFilePath); + const { Sheets } = workbook; + Object.entries(Sheets).forEach(([sheet_name, worksheet]) => { + /* If bold or italics, include HTML in cell value */ + Object.keys(worksheet).forEach((cellId) => { + let html = worksheet[cellId]?.h; + if ( + html !== undefined && + typeof html === "string" && + (html.indexOf("") > -1 || html.indexOf("") > -1 || html.indexOf("") > -1) + ) { + html = html.replace(/]*>/g, ""); // Remove span style + worksheet[cellId].v = html; + } + }); + json[sheet_name] = xlsx.utils.sheet_to_json(worksheet); + }); + return json; + } + + /** + * App data sheets contain contents page with metadata that can be merged into regular data + * Merge and collate with other existing data, warning in case of overwrites + * @returns - array of all merged sheets (no grouping or collating) + */ + private mergeContentsSheet(jsons: { json: any; xlsxPath: string }[]) { + const merged: { [flow_name: string]: FlowTypes.FlowTypeWithData } = {}; + const releasedSummary = {}; + const skippedSummary = {}; + for (let el of jsons) { + const { json, xlsxPath } = el; + const contentList = json["==content_list=="] as FlowTypes.FlowTypeWithData[]; + if (contentList) { + for (const contents of contentList) { + const { flow_name, flow_type, module, parameter_list } = contents; + const filename = path.basename(xlsxPath, ".xlsx"); + // only include flows marked as released in the contents + if (flow_name) { + releasedSummary[flow_name] = { flow_type, module, filename }; + if (json.hasOwnProperty(flow_name)) { + if (merged.hasOwnProperty(flow_name)) { + this.logger.warn(chalk.yellow(`Duplicate flow: ${flow_name}`)); + } + merged[flow_name] = { ...contents, rows: json[flow_name] }; + // convert parameter list from string to object + if (parameter_list) { + merged[flow_name].parameter_list = parseAppDataCollectionString( + parameter_list as any + ); + } + } else { + this.logger.warn(chalk.yellow(`No Contents: ${flow_name}`)); + } + } else { + skippedSummary[flow_name] = { flow_type, module, filename }; + } + } + } else { + this.logger.warn(chalk.yellow(`No Content List: ${path.basename(xlsxPath)}`)); + } + } + return Object.values(merged); + } +} diff --git a/packages/scripts/src/commands/app-data/convert/types.ts b/packages/scripts/src/commands/app-data/convert/types.ts new file mode 100644 index 0000000000..56c5849b69 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/types.ts @@ -0,0 +1,30 @@ +import type { FlowTypes } from "data-models"; + +export type IParsedWorkbookData = { [type in FlowTypes.FlowType]?: FlowTypes.FlowTypeWithData[] }; + +export type IFlowHashmapByType = { + [type in FlowTypes.FlowType]?: { [flow_name: string]: FlowTypes.FlowTypeWithData }; +}; + +export interface IGDriveContentsEntry { + id: string; + name: string; + // full relative path including parent folders and extension + relativePath: string; + mimeType: string; + modifiedTime: string; + folderPath: string; + // only appears on xlsx uploaded files (not gsheet) + fullFileExtension?: string; + fileExtension?: string; + md5Checksum?: string; + size?: string; + // populated during processing + xlsxPath?: string; +} + +export interface IConverterPaths { + SHEETS_INPUT_FOLDER: string; + SHEETS_CACHE_FOLDER: string; + SHEETS_OUTPUT_FOLDER: string; +} diff --git a/packages/scripts/src/commands/app-data/convert/utils/app-data-action.utils.ts b/packages/scripts/src/commands/app-data/convert/utils/app-data-action.utils.ts index e6a8869e4b..0035ed248c 100644 --- a/packages/scripts/src/commands/app-data/convert/utils/app-data-action.utils.ts +++ b/packages/scripts/src/commands/app-data/convert/utils/app-data-action.utils.ts @@ -1,5 +1,5 @@ import { FlowTypes } from "data-models"; -import { booleanStringToBoolean } from "../utils"; +import { booleanStringToBoolean, parseAppDataCollectionString } from "../utils"; /** * Convert action_list string to row action object, e.g. * @@ -30,57 +30,32 @@ export function parseAppDataActionString(actionString: string): FlowTypes.Templa uncompleted: true, nav_resume: true, sent: true, + info_click: true, }; if (!Object.keys(actionTriggers).find((t) => actionString.startsWith(t))) { actionString = `click | ${actionString}`; } const _cleaned = actionString; - // This was causing an error - - // CC 2021-03-27 - Above comment from Michael likely due to intentional catch of unparsed lists ';' - // which this commit fixes. Should review in future - - // const _parsed = parsAppDataString(actionString); const parts = actionString.split("|").map((s) => s.trim()); const trigger = parts[0] as any; - // 3+ string format {trigger} | {action_id} | {arg[]} - // e.g. `click | track_event | name:event_1, value:hello` - // e.g. `click | set_local | some_key:some_value` - - // WiP - Proposed future syntax for processing complex args as key-value pairs - // Breaking changes - needs thorough review before implementation - - // if (parts[2]) { - // const action_id = parts[1] as any; - // const args = {} as any; - // parts[2] - // .split(",") - // .map((arg) => arg.trim()) - // .forEach((arg) => { - // const [key, value] = arg.split(":").map((v) => v.trim()); - // args[key] = value; - // }); - // return { trigger, action_id, args, _raw, _cleaned }; - // } - - // 2-part string format {trigger} | {action_id}: {arg} - // e.g. `completed | emit: completed + const action: FlowTypes.TemplateRowAction = { + trigger, + action_id: null, + args: [], + _raw, + _cleaned, + }; if (parts[1]) { + // e.g `completed | emit:completed` let [action_id, ...args] = parts[1].split(":").map((s) => s.trim()) as any; - // ensure any boolean values are parsed correctly - args = args.map((arg) => booleanStringToBoolean(arg)); - return { trigger, action_id, args, _raw, _cleaned }; - // single string format {trigger} - } else { - return { trigger, action_id: null, args: [], _raw, _cleaned }; + action.action_id = action_id; + action.args = args.map((arg) => booleanStringToBoolean(arg)); } - /* let [[trigger], [action_id, ...args]] = _parsed as any[]; - // when responding to actions the action_id is actually the emitted name, so move to args - if (trigger === "respond_to_action") { - args.unshift(action_id); - action_id = "emit"; + if (parts[2]) { + // e.g. `click | pop_up:my_template | fullscreen:true` + action.params = parseAppDataCollectionString(parts[2], ","); } - return { trigger, action_id, args, _raw, _cleaned }; */ + return action; } /** diff --git a/packages/scripts/src/commands/app-data/convert/utils/app-data-string.utils.ts b/packages/scripts/src/commands/app-data/convert/utils/app-data-string.utils.ts index 2d63c8df42..0a820a9a2d 100644 --- a/packages/scripts/src/commands/app-data/convert/utils/app-data-string.utils.ts +++ b/packages/scripts/src/commands/app-data/convert/utils/app-data-string.utils.ts @@ -1,5 +1,6 @@ import chalk from "chalk"; -import { setNestedProperty } from "../utils"; +import { FlowTypes } from "data-models"; +import { setNestedProperty, booleanStringToBoolean } from "../utils"; /** * Xls data represents nested objects in the following ways @@ -38,10 +39,10 @@ export function parsAppDataString(str: string): string[][] { * ["value_1", "value_2", "value_3"] * ``` */ -export function parseAppDataListString(str: string): string[] { +export function parseAppDataListString(str: string, delimeter = ";"): string[] { return ( str - .split(";") + .split(delimeter) // remove whitespace between elements .map((val: string) => val.trim()) // remove any trailing empty elements left by final ';' @@ -55,14 +56,21 @@ export function parseAppDataListString(str: string): string[] { * ``` * "key_1:value_1; key_2:value_2" * ```` + * @param delimeter optionally specify delimter that splits values, e.g ',' + * ``` + * "key_1:value_1, key_2:value_2" + * ``` * @returns object with key-value pairs, e.g. * ``` * {"key_1":"value_1", "key_2":"value_2"} * ``` */ -export function parseAppDataCollectionString(str: string): { [key: string]: string } { +export function parseAppDataCollectionString( + str: string, + delimeter = ";" +): { [key: string]: string | boolean } { const collection = {}; - const entryList = parseAppDataListString(str); + const entryList = parseAppDataListString(str, delimeter); entryList.forEach((el) => { let [key, value] = el.split(":"); value = value ? value.trim() : value; @@ -71,7 +79,7 @@ export function parseAppDataCollectionString(str: string): { [key: string]: stri const [base, ...nested] = key.split("."); collection[base] = setNestedProperty(nested.join("."), value, collection[base]); } else { - collection[key] = value ? value.trim() : value; + collection[key] = booleanStringToBoolean(value); } }); return collection; @@ -102,3 +110,20 @@ export function flattenJson(json: any, tree = {}, nestedPath?: string): { [ke }); return tree; } + +export function extractDynamicDependencies(dynamicFields: FlowTypes.TemplateRow["_dynamicFields"]) { + const dynamicDependencies = {}; + const flatFields = flattenJson(dynamicFields); + Object.entries(flatFields).forEach(([key, fields]) => { + fields.forEach((field) => { + const deps = dynamicDependencies[field.matchedExpression] || []; + dynamicDependencies[field.matchedExpression] = [...deps, key]; + }); + }); + return dynamicDependencies; +} + +// Standardise newline characters within a string (i.e. replace "\r\n" (CRLF) with "\n" (LF)) +export function standardiseNewlines(str: string) { + return str.replace(/\\r\\n/g, "\\n"); +} diff --git a/packages/scripts/src/commands/app-data/convert/utils/index.ts b/packages/scripts/src/commands/app-data/convert/utils/index.ts index 0f89761f1a..ff7fd8a853 100644 --- a/packages/scripts/src/commands/app-data/convert/utils/index.ts +++ b/packages/scripts/src/commands/app-data/convert/utils/index.ts @@ -1,5 +1,6 @@ export * from "./app-data-string.utils"; export * from "./app-data-condition.utils"; export * from "./app-data-action.utils"; +export * from "./logging"; // Re-export common shared utils for easier import export * from "../../../../utils"; diff --git a/packages/scripts/src/commands/app-data/convert/utils/logging.ts b/packages/scripts/src/commands/app-data/convert/utils/logging.ts new file mode 100644 index 0000000000..91a2485fc9 --- /dev/null +++ b/packages/scripts/src/commands/app-data/convert/utils/logging.ts @@ -0,0 +1,46 @@ +import chalk from "chalk"; + +import { IParsedWorkbookData } from "../types"; + +/** Collate totals of flows by subtype and log */ +export function logSheetsSummary(data: IParsedWorkbookData) { + const countBySubtype = {}; + Object.values(data).forEach((flows) => { + flows.forEach((flow) => { + let type = flow.flow_type; + if (flow.flow_subtype) type += `.${flow.flow_subtype}`; + if (!countBySubtype[type]) countBySubtype[type] = 0; + countBySubtype[type]++; + }); + }); + const logOutput = Object.keys(countBySubtype) + .sort() + .map((key) => { + const [type, subtype] = key.split("."); + return { type, subtype: subtype || null, total: countBySubtype[key] }; + }); + console.log("\nSheet Summary"); + console.table(logOutput); +} + +export function logCacheActionsSummary(actions: any) { + // log summary + const summary = {}; + Object.entries(actions).forEach(([key, value]) => (summary[key] = value.length)); + console.log("\nFile Summary\n", summary); +} + +export function logSheetErrorSummary(warnings: any[], errors: any[]) { + if (warnings.length > 0) { + console.log(chalk.red(warnings.length, "warnings")); + for (const warning of warnings) { + console.log(warning); + } + } + if (errors.length > 0) { + console.log(chalk.red(errors.length, "errors")); + for (const err of errors) { + console.log(err); + } + } +} diff --git a/packages/scripts/src/commands/app-data/copy.ts b/packages/scripts/src/commands/app-data/copy.ts deleted file mode 100644 index 8368e67575..0000000000 --- a/packages/scripts/src/commands/app-data/copy.ts +++ /dev/null @@ -1,340 +0,0 @@ -import * as path from "path"; -import * as fs from "fs-extra"; -import chalk from "chalk"; -import { Command } from "commander"; -import { - generateFolderFlatMap, - isCountryLanguageCode, - listFolderNames, - logError, - readContentsFile, - IContentsEntry, - logOutput, - recursiveFindByExtension, -} from "../../utils"; -import { spawnSync } from "child_process"; - -import { getActiveDeployment } from "../deployment/get"; -import { ROOT_DIR } from "../../paths"; -import { FlowTypes } from "data-models"; - -const ASSETS_GLOBAL_FOLDER_NAME = "global"; - -/*************************************************************************************** - * CLI - * @example yarn - *************************************************************************************/ -interface IProgramOptions { - localSheetsFolder: string; - localAssetsFolder: string; - localTranslationsFolder: string; - appSheetsFolder: string; - appAssetsFolder: string; - appTranslationsFolder: string; - skipSheets?: boolean; - skipAssets?: boolean; -} -const program = new Command("copy"); -export default program - .description("Copy app data") - .option("--local-sheets-folder ", "path to local sheets folder") - .option("--local-assets-folder ", "path to local assets folder") - .option("--local-translations-folder ", "path to local translations folder") - .option("--app-sheets-folder ", "path to app sheets folder") - .option("--app-assets-folder ", "path to app sheets folder") - .option("--app-translations-folder ", "path to app sheets folder") - .option("--skip-sheets") - .option("--skip-assets") - .action(async (options: IProgramOptions) => { - // console.table(options); - new AppDataCopy(options).run(); - }); - -/*************************************************************************************** - * Main Methods - *************************************************************************************/ -/** - * - **/ -class AppDataCopy { - private activeDeployment = getActiveDeployment(); - constructor(private options: IProgramOptions) {} - - public run() { - const { skipSheets, skipAssets } = this.options; - // App Sheets - if (!skipSheets) { - // Setup Folders - const { localSheetsFolder, appSheetsFolder } = this.options; - // Handle Copy - const sheetContents = this.sheetsGenerateContents(localSheetsFolder); - this.sheetsWriteContents(localSheetsFolder, sheetContents); - this.sheetsCopyFiles(localSheetsFolder, appSheetsFolder); - runPrettierCodeTidy(appSheetsFolder); - } - - // Sheet Translations (applied if sheets are copied) - if (!skipSheets) { - // Setup Folders - const { localTranslationsFolder, appTranslationsFolder } = this.options; - // Handle Copy - this.translationsWriteIndex(localTranslationsFolder); - this.translationsCopyFiles(localTranslationsFolder, appTranslationsFolder); - runPrettierCodeTidy(appTranslationsFolder); - } - - // Assets - if (!skipAssets) { - // Setup Folders - const { localAssetsFolder, appAssetsFolder } = this.options; - // Handle Copy - this.assetsQualityCheck(localAssetsFolder); - this.assetsCopyFiles(localAssetsFolder, appAssetsFolder); - this.assetsGenerateIndex(appAssetsFolder); - runPrettierCodeTidy(appAssetsFolder); - } - console.log(chalk.green("Copy Complete")); - } - - /********************************************************************************************************** - * Assets - *********************************************************************************************************/ - /** - * Create an index recursively listing all assets in app-data assets folder. - * Distinguishies between 'global' and 'translated' assets via folder naming, and tracks which global files have - * corresponding translation files - * */ - private assetsGenerateIndex(baseFolder: string) { - const topLevelFolders = listFolderNames(baseFolder); - const languageFolders = topLevelFolders.filter((name) => isCountryLanguageCode(name)); - - // TODO - ideally "global" folder should sit at top level but refactoring required so for now use filter - const globalAssetsFolder = path.join(baseFolder, ASSETS_GLOBAL_FOLDER_NAME); - const globalAssets = generateFolderFlatMap(globalAssetsFolder, true) as { - [relative_path: string]: IAssetEntry; - }; - const untrackedAssets: any = []; - - // populate tracked and untracked translated assets - for (const languageFolder of languageFolders) { - const languageFolderPath = path.resolve(baseFolder, languageFolder); - const translatedAssets = generateFolderFlatMap(languageFolderPath); - Object.entries(translatedAssets).forEach(([name, value]) => { - if (globalAssets.hasOwnProperty(name)) { - globalAssets[name].translations = globalAssets[name].translations || {}; - globalAssets[name].translations[languageFolder] = value as IContentsEntry; - } else { - untrackedAssets.push(`${languageFolder}/${name}`); - } - }); - } - // clean output to exclude modifiedTime and relativePath fields. Track totals - // TODO - size calcs could be tidied to own function - const cleanedContents: { [relative_path: string]: Partial } = {}; - let sizeTotals = { global: 0 }; - Object.entries(globalAssets).forEach(([key, entry]) => { - const { modifiedTime, relativePath, ...fieldsToKeep } = entry; - cleanedContents[key] = fieldsToKeep; - sizeTotals.global += Math.round(entry.size_kb / 102.4) / 10; - // repeat for nested translation entries (TODO - could give breakdown by language) - if (entry.translations) { - Object.entries(entry.translations).forEach(([translated_key, translatedEntry]) => { - const { modifiedTime, relativePath, ...translatedFieldsToKeep } = translatedEntry; - cleanedContents[key].translations[translated_key] = translatedFieldsToKeep as any; - if (!sizeTotals[translated_key]) sizeTotals[translated_key] = 0; - sizeTotals[translated_key] += Math.round(translatedEntry.size_kb / 102.4) / 10; - }); - } - }); - - // write output index file for tracked and untracked assets - const outputTS = ` -export const UNTRACKED_ASSETS = ${JSON.stringify(untrackedAssets, null, 2)} -export const ASSETS_CONTENTS_LIST = ${JSON.stringify(cleanedContents, null, 2)} -`.trim(); - const ASSETS_INDEX_PATH = path.resolve(baseFolder, "index.ts"); - fs.writeFileSync(ASSETS_INDEX_PATH, outputTS); - - // Log total size of all exports - let assetsTotal = 0; - Object.keys(sizeTotals).forEach((key) => { - sizeTotals[key] = Math.round(sizeTotals[key] * 10) / 10; - assetsTotal += sizeTotals[key]; - }); - const totalsByLang = JSON.stringify(sizeTotals, null, 2) - .replace(/[{}]/gim, "") - .replace(/[ ]{2}/gim, "") - .replace(/"/gim, ""); - logOutput({ - msg1: "Assets copied", - msg2: `Total size: ${Math.round(assetsTotal * 10) / 10} MB\n\n${totalsByLang}`, - }); - } - - private assetsCopyFiles(sourceFolder: string, targetFolder: string) { - // setup folders - fs.ensureDirSync(targetFolder); - fs.emptyDirSync(targetFolder); - // filter and copy - const assetFiles = readContentsFile(sourceFolder); - const { assets_filter_function } = this.activeDeployment.app_data; - const filterLanguages = this.activeDeployment.translations?.filter_language_codes; - - if (filterLanguages) { - filterLanguages.push("global"); - } - const filteredFiles = assetFiles.filter((fileEntry) => { - // language filter - if (filterLanguages) { - const [lang_folder] = fileEntry.relativePath.split("/"); - if (!filterLanguages.includes(lang_folder)) return false; - } - // global filter - return assets_filter_function(fileEntry); - }); - - for (const fileEntry of filteredFiles) { - const src = path.resolve(sourceFolder, fileEntry.relativePath); - const dest = path.resolve(targetFolder, fileEntry.relativePath); - fs.ensureDir(path.dirname(dest)); - fs.copySync(src, dest, { preserveTimestamps: true }); - } - } - - /** Ensure asset folders are named correctly */ - private assetsQualityCheck(sourceFolder: string) { - const output = { hasGlobalFolder: false, languageFolders: [], invalidFolders: [] }; - const topLevelFolders = listFolderNames(sourceFolder); - for (const folderName of topLevelFolders) { - if (folderName === ASSETS_GLOBAL_FOLDER_NAME) output.hasGlobalFolder = true; - else { - if (isCountryLanguageCode(folderName)) output.languageFolders.push(folderName); - else output.invalidFolders.push(folderName); - } - } - if (!output.hasGlobalFolder) { - logError({ - msg1: "Assets global folder not found", - msg2: `Assets folder should include a folder named "${ASSETS_GLOBAL_FOLDER_NAME}"`, - }); - } - if (output.invalidFolders.length > 0) { - logError({ - msg1: "Asset folders named incorrectly", - msg2: `Invalid language codes: [${output.invalidFolders.join(", ")}]`, - }); - } - } - - private sheetsCopyFiles(sourceFolder: string, targetFolder: string) { - fs.ensureDirSync(sourceFolder); - fs.ensureDirSync(targetFolder); - fs.emptyDirSync(targetFolder); - fs.copySync(sourceFolder, targetFolder); - } - - /********************************************************************************************************** - * Sheets - *********************************************************************************************************/ - - /** Extract a list of all sheets by type including flow contents */ - private sheetsGenerateContents(baseFolder: string) { - // Generate contents - const contents: ISheetContents = { data_list: {}, global: {}, template: {}, tour: {} }; - const sheetPaths = recursiveFindByExtension(baseFolder, "json").sort(); - for (const sheetPath of sheetPaths) { - const filePath = path.resolve(baseFolder, sheetPath); - const sheetContents: FlowTypes.FlowTypeWithData = fs.readJsonSync(filePath); - const { flow_type, flow_name } = sheetContents; - this.qualityCheckSheets(contents, sheetContents); - contents[flow_type][flow_name] = this.extractContentsData(sheetContents); - } - return contents; - } - - private extractContentsData(flow: FlowTypes.FlowTypeWithData): FlowTypes.FlowTypeBase { - // remove rows property (if exists) - const { rows, status, ...keptFields } = flow; - return keptFields as FlowTypes.FlowTypeBase; - } - private sheetsWriteContents(baseFolder: string, contents: ISheetContents) { - // Write ts - const contentsString = JSON.stringify(contents, null, 2); - const outputTS = ` -import { FlowTypes } from "data-models"; -type ISheetContents = { [flow_type in FlowTypes.FlowType]: { [flow_name: string]: FlowTypes.FlowTypeBase } }; -export const SHEETS_CONTENT_LIST:ISheetContents = ${contentsString} - `.trim(); - const SHEETS_INDEX_PATH = path.resolve(baseFolder, "index.ts"); - fs.writeFileSync(SHEETS_INDEX_PATH, outputTS); - } - /** - * Check for unsupported flow types or flows with duplicate names (can happen across subtypes) - */ - private qualityCheckSheets( - existingContents: ISheetContents, - sheetContents: FlowTypes.FlowTypeWithData - ) { - const { flow_name, flow_type, _xlsxPath } = sheetContents; - if (!existingContents.hasOwnProperty(flow_type)) { - logError({ - msg1: `Unsupported flow_type: [${flow_type}]`, - msg2: `${_xlsxPath}`, - }); - } - if (existingContents[flow_type].hasOwnProperty(flow_name)) { - const duplicateFlowContents = existingContents[flow_type][flow_name]; - logError({ - msg1: `Duplicate flow_name found: [${flow_type}]`, - msg2: `${_xlsxPath}\n${duplicateFlowContents._xlsxPath}`, - }); - } - } - - /********************************************************************************************************** - * Translations - *********************************************************************************************************/ - private translationsWriteIndex(baseFolder: string) { - type ITranslationContents = { [language_code: string]: { filename: string } }; - const contents: ITranslationContents = {}; - fs.ensureDirSync(baseFolder); - fs.readdirSync(baseFolder).forEach((language_code) => { - contents[language_code] = { filename: `${language_code}/strings.json` }; - }); - const contentsString = JSON.stringify(contents, null, 2); - const outputTS = ` - type ITranslationContents = { [language_code:string]: { filename: string } }; - export const TRANSLATIONS_CONTENT_LIST:ITranslationContents = ${contentsString} - `.trim(); - const TRANSLATIONS_INDEX_PATH = path.resolve(baseFolder, "index.ts"); - fs.writeFileSync(TRANSLATIONS_INDEX_PATH, outputTS); - } - - private translationsCopyFiles(sourceFolder: string, targetFolder: string) { - fs.ensureDirSync(sourceFolder); - fs.ensureDirSync(targetFolder); - fs.emptyDirSync(targetFolder); - fs.copySync(sourceFolder, targetFolder); - } -} - -/********************************************************************************************************** - * Types and Utilities - *********************************************************************************************************/ -type ISheetContents = { - [flow_type in FlowTypes.FlowType]: { [flow_name: string]: FlowTypes.FlowTypeBase }; -}; - -/** - * Run prettier to automatically format code in given folder path - * NOTE - by default will only format .ts files - */ -function runPrettierCodeTidy(folderPath: string) { - const cmd = `npx prettier --config ${ROOT_DIR}/.prettierrc --write ${folderPath}/**/*.ts --loglevel error`; - return spawnSync(cmd, { stdio: ["inherit", "inherit", "inherit"], shell: true }); -} - -/** Subset of IContentsEntry (with additional translations) */ -interface IAssetEntry extends IContentsEntry { - translations?: { [language_code: string]: IContentsEntry }; -} diff --git a/packages/scripts/src/commands/app-data/download.ts b/packages/scripts/src/commands/app-data/download.ts index ec70586a61..db8945e43e 100644 --- a/packages/scripts/src/commands/app-data/download.ts +++ b/packages/scripts/src/commands/app-data/download.ts @@ -6,7 +6,7 @@ import fs from "fs-extra"; import path from "path"; import { CREDENTIALS_PATH, AUTH_TOKEN_PATH } from "../../paths"; import { logWarning, promptOptions } from "../../utils"; -import { getActiveDeployment } from "../deployment/get"; +import { ActiveDeployment } from "../deployment/get"; /*************************************************************************************** * CLI @@ -37,7 +37,7 @@ export default program * Read the default deployment json and retrieve parsed ts for the named active deployment */ async function appDataDownload(options: IProgramOptions) { - const activeDeployment = getActiveDeployment(); + const activeDeployment = ActiveDeployment.get(); const { _workspace_path } = activeDeployment; const { assets_folder_id, @@ -68,8 +68,7 @@ async function appDataDownload(options: IProgramOptions) { if (options.sheetname) { const cachedEntry = await getFileCacheEntry(options.sheetname, sheetsOutput); if (cachedEntry) { - const fileEntry64 = Buffer.from(JSON.stringify(cachedEntry)).toString("base64"); - const args = `--folder-id ${sheets_folder_id} --output-path "${sheetsOutput}" --file-entry-64 ${fileEntry64} --filter-function-64 "${sheetsFilter}"`; + const args = `--folder-id ${sheets_folder_id} --output-path "${sheetsOutput}" --filter-function-64 "${sheetsFilter}"`; const singleDLCmd = `${gdriveToolsExec} download ${commonArgs} ${args}`; return spawnSync(singleDLCmd, { shell: true, stdio: "inherit" }); } else { diff --git a/packages/scripts/src/commands/app-data/index.ts b/packages/scripts/src/commands/app-data/index.ts index 8aa30f26f2..fd56cda2fd 100644 --- a/packages/scripts/src/commands/app-data/index.ts +++ b/packages/scripts/src/commands/app-data/index.ts @@ -2,18 +2,16 @@ import { Command } from "commander"; import convertCmd from "./convert"; -import copyCmd from "./copy"; +import postProcessCmd from "./postProcess"; import downloadCmd from "./download"; -import syncCmd from "./sync"; import { logProgramHelp } from "../../utils"; const program = new Command("app-data").description("Manage app data"); /** add sub-commands from child folders */ program.addCommand(convertCmd); -program.addCommand(copyCmd); +program.addCommand(postProcessCmd); program.addCommand(downloadCmd); -program.addCommand(syncCmd); export default program; @@ -22,5 +20,7 @@ if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + (async function () { + await program.parseAsync(process.argv); + })(); } diff --git a/packages/scripts/src/commands/app-data/postProcess/assets.spec.ts b/packages/scripts/src/commands/app-data/postProcess/assets.spec.ts new file mode 100644 index 0000000000..874c30dc69 --- /dev/null +++ b/packages/scripts/src/commands/app-data/postProcess/assets.spec.ts @@ -0,0 +1,342 @@ +import { createHash } from "crypto"; + +import { AssetsPostProcessor } from "./assets"; +import type { IDeploymentConfigJson } from "../../deployment/common"; +import type { RecursivePartial } from "data-models/appConfig"; + +import fs, { readJsonSync, readdirSync } from "fs-extra"; +import mockFs from "mock-fs"; + +// Use default imports to allow spying on functions and replacing with mock methods +import { ActiveDeployment } from "../../deployment/get"; +import { Logger } from "../../../utils/logging.utils"; +import path from "path"; +import { IAssetEntryHashmap } from "data-models/deployment.model"; + +/** Mock file system folders for use in tests */ +const mockDirs = { + appAssets: "mock/app_data/assets", + localAssets: "mock/local/assets", +}; + +const { file: mockFile, entry: mockFileEntry } = createMockFile(); // create mock 1MB file + +/** Mock function that will replace default `Logger` function to instead just record any invocations */ +const mockErrorLogger = jasmine.createSpy("mockErrorLogger", Logger.error); + +/** Parse the contents.json file populated to the app assets folder and return */ +function readAppAssetContents() { + const contentsPath = path.resolve(mockDirs.appAssets, "contents.json"); + return readJsonSync(contentsPath) as IAssetEntryHashmap; +} + +/** Create mock entries on file system corresponding to local assets folder */ +function mockLocalAssets(assets: Record) { + return mockFs({ + mock: { + local: { + assets, + }, + }, + }); +} + +function createMockFile(size_kb = 1024) { + const file = Buffer.alloc(1 * 1024 * size_kb); + const entry = { size_kb, md5Checksum: createHash("md5").update(file).digest("hex") }; + return { file, entry }; +} + +describe("Assets PostProcess", () => { + /** Initial setup */ + // replace prettier codeTidying method + // replace `Logger` function with created spy method + beforeAll(() => {}); + // Populate a fake file system before each test. This will automatically be called for any fs operations + // Restore regular file functionality after each test. + beforeEach(() => { + mockLocalAssets({}); + }); + afterEach(() => { + mockFs.restore(); + }); + + /** Mock setup testing (can be removed once working consistenctly) */ + it("mocks file system for testing", () => { + mockLocalAssets({ folder: { "file.jpg": mockFile } }); + const testFilePath = path.resolve(mockDirs.localAssets, "folder", "file.jpg"); + expect(fs.statSync(testFilePath).size).toEqual(1 * 1024 * 1024); + }); + + /** Main tests */ + it("Copies assets from local to app", () => { + mockLocalAssets({ folder: { "file.jpg": mockFile } }); + runAssetsPostProcessor(); + const testFilePath = path.resolve(mockDirs.appAssets, "folder", "file.jpg"); + expect(fs.statSync(testFilePath).size).toEqual(1 * 1024 * 1024); + }); + + it("populates contents json", () => { + mockLocalAssets({ "test.jpg": mockFile }); + runAssetsPostProcessor(); + const contents = readAppAssetContents(); + expect("test.jpg" in contents).toBeTrue(); + }); + + it("Populates global assets from named or root folder", () => { + mockLocalAssets({ + global: { "test1.jpg": mockFile }, + nested: { "test2.jpg": mockFile }, + "test3.jpg": mockFile, + }); + runAssetsPostProcessor(); + const contents = readAppAssetContents(); + expect(contents).toEqual({ + "nested/test2.jpg": mockFileEntry, + "test1.jpg": { ...mockFileEntry, filePath: "global/test1.jpg" }, + "test3.jpg": mockFileEntry, + }); + mockFs.restore(); + }); + + it("Populates assets with no overrides", () => { + mockLocalAssets({ "test.jpg": mockFile }); + runAssetsPostProcessor(); + const contents = readAppAssetContents(); + const assetEntry = contents["test.jpg"]; + expect(assetEntry.overrides).toBeUndefined(); + }); + + it("Populates translation override with default theme", () => { + mockLocalAssets({ + "test.jpg": mockFile, + tz_sw: { "test.jpg": mockFile }, + }); + runAssetsPostProcessor({ filter_language_codes: ["tz_sw"] }); + const contents = readAppAssetContents(); + const assetEntry = contents["test.jpg"]; + expect(assetEntry.overrides["theme_default"]).toEqual({ + tz_sw: { ...mockFileEntry, filePath: "tz_sw/test.jpg" }, + }); + }); + + it("Populates theme override with global translation", () => { + mockLocalAssets({ + "test.jpg": mockFile, + theme_test: { "test.jpg": mockFile }, + }); + runAssetsPostProcessor({ app_themes_available: ["test"] }); + const contents = readAppAssetContents(); + expect(contents["test.jpg"].overrides).toEqual({ + theme_test: { global: { ...mockFileEntry, filePath: "theme_test/test.jpg" } }, + }); + }); + it("Populates combined theme and language overrides in any folder order ", () => { + mockLocalAssets({ + "test1.jpg": mockFile, + "test2.jpg": mockFile, + theme_test: { + tz_sw: { "test1.jpg": mockFile }, + }, + tz_sw: { + theme_test: { + "test2.jpg": mockFile, + }, + }, + }); + runAssetsPostProcessor({ app_themes_available: ["test"], filter_language_codes: ["tz_sw"] }); + const contents = readAppAssetContents(); + expect(contents).toEqual({ + "test1.jpg": { + ...mockFileEntry, + overrides: { + theme_test: { + tz_sw: { ...mockFileEntry, filePath: "theme_test/tz_sw/test1.jpg" }, + }, + }, + }, + "test2.jpg": { + ...mockFileEntry, + overrides: { + theme_test: { + tz_sw: { ...mockFileEntry, filePath: "tz_sw/theme_test/test2.jpg" }, + }, + }, + }, + }); + }); + + it("Filters theme assets", () => { + mockLocalAssets({ + "test.jpg": mockFile, + theme_testTheme: { "test.jpg": mockFile }, + theme_ignored: { "test.jpg": mockFile }, + }); + runAssetsPostProcessor({ app_themes_available: ["testTheme"] }); + expect(readdirSync(mockDirs.appAssets)).toEqual([ + "contents.json", + "test.jpg", + "theme_testTheme", + ]); + }); + + it("Includes all language assets by default", () => { + mockLocalAssets({ + "test.jpg": mockFile, + tz_sw: { "test.jpg": mockFile }, + ke_sw: { "test.jpg": mockFile }, + }); + runAssetsPostProcessor({ filter_language_codes: undefined }); + const contents = readAppAssetContents(); + expect(contents).toEqual({ + "test.jpg": { + ...mockFileEntry, + overrides: { + theme_default: { + tz_sw: { ...mockFileEntry, filePath: "tz_sw/test.jpg" }, + ke_sw: { ...mockFileEntry, filePath: "ke_sw/test.jpg" }, + }, + }, + }, + }); + }); + + it("Filters language assets", () => { + mockLocalAssets({ + "test.jpg": mockFile, + tz_sw: { "test.jpg": mockFile }, + ke_sw: { "test.jpg": mockFile }, + }); + runAssetsPostProcessor({ filter_language_codes: ["tz_sw"] }); + expect(readdirSync(mockDirs.appAssets)).toEqual(["contents.json", "test.jpg", "tz_sw"]); + }); + + it("supports nested lang and theme folders", () => { + mockLocalAssets({ + nested: { + "test.jpg": mockFile, + theme_test: { + tz_sw: { "test.jpg": mockFile }, + }, + tz_sw: { + "test.jpg": mockFile, + }, + }, + }); + runAssetsPostProcessor({ + filter_language_codes: ["tz_sw"], + app_themes_available: ["test"], + }); + const contents = readAppAssetContents(); + expect(contents).toEqual({ + "nested/test.jpg": { + ...mockFileEntry, + overrides: { + theme_default: { + tz_sw: { ...mockFileEntry, filePath: "nested/tz_sw/test.jpg" }, + }, + theme_test: { + tz_sw: { ...mockFileEntry, filePath: "nested/theme_test/tz_sw/test.jpg" }, + }, + }, + }, + }); + }); + + // TODO - direct support for files named `test.theme_default.tz_sw.jpg` + // it("supports inline theme and lang files", () => {}); + + /** QA tests */ + it("throws error on duplicate overrides", () => { + const errorLogger = useMockErrorLogger(); + mockLocalAssets({ + "test.jpg": mockFile, + theme_test: { + tz_sw: { "test.jpg": mockFile }, + }, + tz_sw: { + theme_test: { "test.jpg": mockFile }, + }, + }); + runAssetsPostProcessor({ + filter_language_codes: ["tz_sw"], + app_themes_available: ["test"], + }); + expect(errorLogger).toHaveBeenCalledOnceWith({ + msg1: "Duplicate overrides detected", + msg2: "test.jpg [theme_test] [tz_sw]", + logOnly: true, + }); + }); + + /** + + it("Warns if overrides have no source target",()=>{ + // TODO - will require processing all non-overrides first + }) + + it("Warns on untracked assets", () => { + // TODO - will require refactoring warning like error logger + }); + + it("Warns on too large assets ", () => { + // TODO - will require refactoring warning like error logger + }); + + it("warns on untracked assets", () => { + const { localAssets } = mockDirs; + const untrackedPath = path.resolve(localAssets, "tz_sw", "untracked.jpg"); + fs.writeFileSync(untrackedPath, mockFile); + runAssetsPostProcessor(); + expect(mockWarningLogger).toHaveBeenCalledWith({ + msg1: "Translated assets found without corresponding global", + msg2: "untracked.jpg", + }); + }); + + */ +}); + +/** Replace runtime error logger with mock that can be inspected in tests */ +function useMockErrorLogger() { + spyOn(Logger, "error").and.callFake(mockErrorLogger); + return mockErrorLogger; +} + +function runAssetsPostProcessor(deploymentConfig: IDeploymentConfigStub = {}) { + stubDeploymentConfig(deploymentConfig); + const { localAssets } = mockDirs; + const processor = new AssetsPostProcessor({ sourceAssetsFolder: localAssets }); + processor.run(); +} + +/** Test Utilities */ + +type IAssetsFilterFunction = IDeploymentConfigJson["app_data"]["assets_filter_function"]; + +interface IDeploymentConfigStub { + filter_language_codes?: string[]; + assets_filter_function?: IAssetsFilterFunction; + app_themes_available?: string[]; +} +/** + * Populated mock values when getActiveDeployment method called from main command + * Limited to just values referenced in the copy method + **/ +function stubDeploymentConfig(stub: IDeploymentConfigStub = {}) { + const filter_language_codes = stub.filter_language_codes; + const assets_filter_function = stub.assets_filter_function + ? stub.assets_filter_function + : () => true; + const app_themes_available = stub.app_themes_available ?? []; + + const stubDeployment: RecursivePartial = { + _workspace_path: "mock", + app_data: { assets_filter_function, output_path: "mock/app_data" }, + translations: { filter_language_codes }, + app_config: { + APP_THEMES: { available: app_themes_available }, + } as any, + }; + spyOn(ActiveDeployment, "get").and.returnValue(stubDeployment as IDeploymentConfigJson); +} diff --git a/packages/scripts/src/commands/app-data/postProcess/assets.ts b/packages/scripts/src/commands/app-data/postProcess/assets.ts new file mode 100644 index 0000000000..26380b18df --- /dev/null +++ b/packages/scripts/src/commands/app-data/postProcess/assets.ts @@ -0,0 +1,319 @@ +import * as path from "path"; +import * as fs from "fs-extra"; +import chalk from "chalk"; +import { Command } from "commander"; +import { + generateFolderFlatMap, + Logger, + IContentsEntry, + logOutput, + logWarning, + createTempDir, + IContentsEntryHashmap, + kbToMB, + setNestedProperty, + replicateDir, + sortJsonKeys, + getNestedProperty, +} from "../../../utils"; +import { ActiveDeployment } from "../../deployment/get"; +import type { IAssetEntryHashmap, IContentsEntryMinimal } from "data-models/deployment.model"; + +/** + * Legacy folder used to differentiate language assets + * Any assets placed in this folder will be treated as parent-level + */ +const ASSETS_GLOBAL_FOLDER_NAME = "global"; + +/** Approximate size of core build as populated to www folder (excluding assets) */ +const APP_CORE_BUILD_KB = 7 * 1024; +/** Approximate size of core assets as populated to www folder (excluding assets/app_data) */ +const APP_CORE_ASSETS_KB = 5 * 1024; +const APP_CORE_SIZE_KB = { + total: APP_CORE_BUILD_KB + APP_CORE_ASSETS_KB, +}; + +/*************************************************************************************** + * CLI + * @example yarn + *************************************************************************************/ +interface IProgramOptions { + sourceAssetsFolder: string; +} +const program = new Command("assets"); +export default program + .description("Copy app data") + .requiredOption("--source-assets-folder ", "path to source assets folder") + .action(async (options: IProgramOptions) => { + new AssetsPostProcessor(options).run(); + }); + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ +export class AssetsPostProcessor { + private activeDeployment = ActiveDeployment.get(); + private stagingDir: string; + constructor(private options: IProgramOptions) {} + + public run() { + const { app_data } = this.activeDeployment; + const { sourceAssetsFolder } = this.options; + const appAssetsFolder = path.resolve(app_data.output_path, "assets"); + fs.ensureDirSync(appAssetsFolder); + // Generate a list of all deployment assets, merge with list of assets from parent + const sourceAssets = generateFolderFlatMap(sourceAssetsFolder, { includeLocalPath: true }); + const sourceAssetsFiltered = this.filterAppAssets(sourceAssets); + const mergedAssets = this.mergeParentAssets(sourceAssetsFiltered); + // Populate merged assets staging to run quality control checks and generate full contents lists + this.stagingDir = createTempDir(); + replicateDir(sourceAssetsFolder, this.stagingDir, { + filter_fn: ({ relativePath }) => relativePath in mergedAssets, + }); + this.assetsQualityCheck(this.stagingDir); + const assetsByType = this.handleAssetOverrides(mergedAssets); + const { tracked, untracked } = assetsByType; + this.checkTotalAssetSize(assetsByType); + + // copy deployment assets to main folder and write merged contents file + replicateDir(this.stagingDir, appAssetsFolder); + fs.removeSync(this.stagingDir); + + this.writeAssetsContentsFiles(appAssetsFolder, tracked, untracked); + + console.log(chalk.green("Asset Process Complete")); + } + + /** + * Write two entries to the app assets folder + * `contents.json` provides a summary of all assets available to the global app with translations + * `untracked-assets.json` provides a summary of all assets that appear in translation or theme folders + * but do not have corresponding default global entries (only populated if entries exist) + */ + private writeAssetsContentsFiles( + appAssetsFolder: string, + assetEntries: IAssetEntryHashmap, + missingEntries: IAssetEntryHashmap + ) { + const contentsTarget = path.resolve(appAssetsFolder, "contents.json"); + fs.writeFileSync(contentsTarget, JSON.stringify(sortJsonKeys(assetEntries), null, 2)); + const missingTarget = path.resolve(appAssetsFolder, "untracked-assets.json"); + if (fs.existsSync(missingTarget)) fs.removeSync(missingTarget); + if (Object.keys(missingEntries).length > 0) { + logWarning({ + msg1: "Assets override found without corresponding entry", + msg2: Object.keys(missingEntries).join("\n"), + }); + fs.writeFileSync(missingTarget, JSON.stringify(sortJsonKeys(missingEntries), null, 2)); + } + } + + private mergeParentAssets(sourceAssets: { [relativePath: string]: IContentsEntry }) { + const { _parent_config } = this.activeDeployment; + const mergedAssets = { ...sourceAssets }; + + // If parent config exists also include any parent files that would not be overwritten by source + if (_parent_config) { + const parentAssetsFolder = path.resolve(_parent_config._workspace_path, "app_data", "assets"); + fs.ensureDirSync(parentAssetsFolder); + const parentAssets = generateFolderFlatMap(parentAssetsFolder, { includeLocalPath: true }); + const filteredParentAssets = this.filterAppAssets(parentAssets); + Object.keys(filteredParentAssets).forEach((relativePath) => { + if (!mergedAssets.hasOwnProperty(relativePath)) { + mergedAssets[relativePath] = { ...parentAssets[relativePath] }; + } + }); + } + return mergedAssets; + } + + /** + * Take a list of all potential app assets and return a list of only those that match + * both app asset filter functions and language code filter functions + */ + private filterAppAssets(sourceAssets: { [relativePath: string]: IContentsEntry }) { + const filtered: typeof sourceAssets = {}; + const { assets_filter_function } = this.activeDeployment.app_data; + const { filter_language_codes } = this.activeDeployment.translations; + const filter_theme_names = this.activeDeployment.app_config.APP_THEMES.available; + + // remove contents file from gdrive download + delete sourceAssets["_contents.json"]; + + // individual file filter function - includes global filter as well as language and theme filters + function shouldInclude(entry: IContentsEntry) { + const assetPaths = entry.relativePath.split("/"); + const assetLang = assetPaths.find((p) => (isCountryLanguageCode(p) ? p : false)); + let assetTheme = assetPaths.find((p) => isThemeAssetsFolderName(p)); + if (assetTheme) { + assetTheme = assetTheme.replace("theme_", ""); + } + // filter based on language, theme or function + if (assetLang && filter_language_codes && !filter_language_codes.includes(assetLang)) + return false; + if (assetTheme && !filter_theme_names.includes(assetTheme)) return false; + if (assets_filter_function && !assets_filter_function(entry)) return false; + + return true; + } + // process files + Object.entries(sourceAssets).forEach(([name, entry]) => { + if (shouldInclude(entry)) { + filtered[name] = entry; + } + }); + return filtered; + } + + private assetsQualityCheck(sourceFolder: string) { + // TODO - add any relevant checks + // (previously checked asset folder names but no longer relevant) + } + + private checkTotalAssetSize(sourceAssets: IAssetEntriesByType) { + let totalSize = APP_CORE_SIZE_KB.total; + let themeAndLanguageSizes = { + app_core: APP_CORE_SIZE_KB, + theme_default: { total: 0, global: 0 }, + }; + Object.values(sourceAssets.tracked).forEach((entry) => { + totalSize += entry.size_kb; + themeAndLanguageSizes.theme_default.total += entry.size_kb; + themeAndLanguageSizes.theme_default.global += entry.size_kb; + if (entry.overrides) { + Object.entries(entry.overrides).forEach(([themeName, languageEntries]) => { + Object.entries(languageEntries).forEach(([languageCode, languageEntry]) => { + const assetSize = languageEntry.size_kb; + totalSize += assetSize; + themeAndLanguageSizes[themeName] ??= {}; + themeAndLanguageSizes[themeName].total ??= 0; + themeAndLanguageSizes[themeName].total += assetSize; + themeAndLanguageSizes[themeName][languageCode] ??= 0; + themeAndLanguageSizes[themeName][languageCode] += assetSize; + }); + }); + } + }); + + const themeLangSizesMBSummary = Object.entries(themeAndLanguageSizes) + .map(([themeName, themeEntry]) => { + const languageBreakdown = Object.entries(themeEntry) + .map(([language, size]) => `${language}: ${kbToMB(size)} MB`) + .join("\n "); + return `${themeName}:\n ${languageBreakdown}`; + }) + .join("\n"); + const totalSizeMB = kbToMB(totalSize); + const maxWarningSize = 150; + if (totalSizeMB > maxWarningSize) { + logWarning({ + msg1: `Asset files too large`, + msg2: `All assets should combine to be less than ${maxWarningSize}MB`, + }); + } + + logOutput({ + msg1: "Assets Summary", + msg2: `Total size: ${totalSizeMB} MB\n\nBreakdown by theme and language:\n${themeLangSizesMBSummary}`, + }); + } + + /** + * Make a list of any source assets that have language-code or theme overrides, + * and any language assets that are missing corresponding globals. + * Flatten override files to sit alongside their target assets + */ + private handleAssetOverrides(sourceAssets: IContentsEntryHashmap) { + const entries: IAssetEntriesByType = { + tracked: {}, + untracked: {}, + }; + // split assets to separate global, translated and theme assets + Object.entries(sourceAssets).forEach(([relativePath, entry]) => { + const assetEntry = this.contentsToAssetEntry(entry); + const pathSegments = relativePath.split("/"); + + let themeVariation = pathSegments.find((segment) => isThemeAssetsFolderName(segment)); + let langVariation = pathSegments.find((segment) => isCountryLanguageCode(segment)); + let assetPathName = relativePath; + + let overridePath = ""; + + // Remove additional nesting for default lang and theme folders + assetPathName = assetPathName + .replace(`${ASSETS_GLOBAL_FOLDER_NAME}/`, "") + .replace(`theme_default/`, ""); + + // If using overrides ensure both theme and language provided, and place in corresponding folder + if (themeVariation || langVariation) { + themeVariation ??= "theme_default"; + langVariation ??= ASSETS_GLOBAL_FOLDER_NAME; + // Replace override segments to leave named asset segment path + assetPathName = assetPathName + .replace(`${themeVariation}/`, "") + .replace(`${langVariation}/`, ""); + + overridePath = `overrides.${themeVariation}.${langVariation}`; + } + + // Provide explicit path to file when not same as entry name (e.g. overrides) + if (entry.relativePath !== assetPathName) { + assetEntry.filePath = relativePath; + } + if (getNestedProperty(entries.tracked[assetPathName], overridePath)) { + Logger.error({ + msg1: "Duplicate overrides detected", + msg2: `${assetPathName} [${themeVariation}] [${langVariation}]`, + logOnly: true, + }); + } + + // Merge overrides or top-level asset data into main entries + entries.tracked[assetPathName] = setNestedProperty( + overridePath, + assetEntry, + entries.tracked[assetPathName] + ); + }); + + // Check for assets which have no default version, and move them to "untracked" + Object.entries(entries.tracked).forEach(([assetPathName, assetEntry]) => { + if (assetEntry.overrides && !assetEntry.md5Checksum) { + entries.untracked[assetPathName] = assetEntry; + delete entries.tracked[assetPathName]; + } + }); + return entries; + } + + /** Strip additional fields from contents entry to provide cleaner asset entry */ + private contentsToAssetEntry(entry: IContentsEntry): IContentsEntryMinimal { + const { md5Checksum, size_kb } = entry; + return { size_kb, md5Checksum }; + } +} + +/** + * Check whether a string matches the expected format for the + * name of a folder containing theme-specific assets. + * Currently expects name to begin 'theme_' + */ +function isThemeAssetsFolderName(str: string) { + return str.startsWith("theme_"); +} + +/** + * Simple regex to try and match standard country-language format + * Currently restricted to any codes in the format `ab_ab` or `ab_abc` + */ +function isCountryLanguageCode(str: string) { + const regex = /^[a-z]{2}_[a-z]{2,3}$/gi; + return regex.test(str); +} + +interface IAssetEntriesByType { + /** Assets that have a global in the default theme, including their respective overrides */ + tracked: IAssetEntryHashmap; + /** Assets that appear in translation or theme folders but have no corresponding global in the default theme */ + untracked: IAssetEntryHashmap; +} diff --git a/packages/scripts/src/commands/app-data/postProcess/index.ts b/packages/scripts/src/commands/app-data/postProcess/index.ts new file mode 100644 index 0000000000..8ce47da058 --- /dev/null +++ b/packages/scripts/src/commands/app-data/postProcess/index.ts @@ -0,0 +1,11 @@ +import { Command } from "commander"; +import assetsCmd from "./assets"; +import sheetsCmd from "./sheets"; + +const program = new Command("post-process").description("Post process app data"); + +/** add sub-commands from child folders */ +program.addCommand(assetsCmd); +program.addCommand(sheetsCmd); + +export default program; diff --git a/packages/scripts/src/commands/app-data/postProcess/sheets.spec.ts b/packages/scripts/src/commands/app-data/postProcess/sheets.spec.ts new file mode 100644 index 0000000000..62bf6a2def --- /dev/null +++ b/packages/scripts/src/commands/app-data/postProcess/sheets.spec.ts @@ -0,0 +1,20 @@ +import { AssetsPostProcessor } from "./assets"; +import type { IDeploymentConfigJson } from "../../deployment/common"; + +import fs from "fs-extra"; +import mockFs from "mock-fs"; + +// Use default imports to allow spying on functions and replacing with mock methods +import { ActiveDeployment } from "../../deployment/get"; +import { Logger } from "../../../utils/logging.utils"; +import path from "path"; + +/** Mock file system folders for use in tests */ +const mockDirs = { + appSheets: "mock/app_data/sheets", + appTranslations: "mock/app_data/translations", + localSheets: "mock/local/sheets", + localTranslations: "mock/local/translations", +}; + +// TODO diff --git a/packages/scripts/src/commands/app-data/postProcess/sheets.ts b/packages/scripts/src/commands/app-data/postProcess/sheets.ts new file mode 100644 index 0000000000..59c6f2bd43 --- /dev/null +++ b/packages/scripts/src/commands/app-data/postProcess/sheets.ts @@ -0,0 +1,154 @@ +import * as path from "path"; +import * as fs from "fs-extra"; +import chalk from "chalk"; +import { Command } from "commander"; +import { Logger, recursiveFindByExtension } from "../../../utils"; + +import { ActiveDeployment } from "../../deployment/get"; +import { FlowTypes } from "data-models"; + +/*************************************************************************************** + * CLI + * @example yarn + *************************************************************************************/ +interface IProgramOptions { + sourceSheetsFolder: string; + sourceTranslationsFolder: string; +} +const program = new Command("sheets"); +export default program + .description("Copy app data") + .requiredOption("--source-sheets-folder ", "path to source sheets folder") + .requiredOption("--source-translations-folder ", "path to source translations folder") + .action(async (options: IProgramOptions) => { + // console.table(options); + new SheetsPostProcessor(options).run(); + }); + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ +/** + * + **/ +class SheetsPostProcessor { + private activeDeployment = ActiveDeployment.get(); + constructor(private options: IProgramOptions) {} + + public run() { + const { app_data } = this.activeDeployment; + // App Sheets + // Setup Folders + const { sourceSheetsFolder } = this.options; + const appSheetsFolder = path.resolve(app_data.output_path, "sheets"); + fs.ensureDirSync(appSheetsFolder); + fs.emptyDirSync(appSheetsFolder); + // Handle Copy + this.sheetsCopyFiles(sourceSheetsFolder, appSheetsFolder); + const sheetContents = this.sheetsGenerateContents(appSheetsFolder); + this.sheetsWriteContents(appSheetsFolder, sheetContents); + + // Sheet Translations (applied if sheets are copied) + // Setup Folders + const { sourceTranslationsFolder } = this.options; + const appTranslationsFolder = path.resolve(app_data.output_path, "translations"); + // Handle Copy + this.translationsWriteIndex(sourceTranslationsFolder); + this.translationsCopyFiles(sourceTranslationsFolder, appTranslationsFolder); + + console.log(chalk.green("Copy Complete")); + } + + /********************************************************************************************************** + * Sheets + *********************************************************************************************************/ + + private sheetsCopyFiles(sourceFolder: string, targetFolder: string) { + fs.ensureDirSync(sourceFolder); + fs.ensureDirSync(targetFolder); + fs.emptyDirSync(targetFolder); + fs.copySync(sourceFolder, targetFolder); + } + + /** Extract a list of all sheets by type including flow contents */ + private sheetsGenerateContents(baseFolder: string) { + // Generate contents + const contents: ISheetContents = { + data_list: {}, + data_pipe: {}, + generator: {}, + global: {}, + template: {}, + tour: {}, + }; + const sheetPaths = recursiveFindByExtension(baseFolder, "json").sort(); + for (const sheetPath of sheetPaths) { + const filePath = path.resolve(baseFolder, sheetPath); + const sheetContents: FlowTypes.FlowTypeWithData = fs.readJsonSync(filePath); + const { flow_type, flow_name } = sheetContents; + this.qualityCheckSheets(contents, sheetContents); + contents[flow_type][flow_name] = this.extractContentsData(sheetContents); + } + return contents; + } + + private extractContentsData(flow: FlowTypes.FlowTypeWithData): FlowTypes.FlowTypeBase { + // remove rows property (if exists) + const { rows, status, _generated, ...keptFields } = flow; + return keptFields as FlowTypes.FlowTypeBase; + } + private sheetsWriteContents(baseFolder: string, contents: ISheetContents) { + const contentsOutputPath = path.resolve(baseFolder, "contents.json"); + fs.writeFileSync(contentsOutputPath, JSON.stringify(contents, null, 2)); + } + /** + * Check for unsupported flow types or flows with duplicate names (can happen across subtypes) + */ + private qualityCheckSheets( + existingContents: ISheetContents, + sheetContents: FlowTypes.FlowTypeWithData + ) { + const { flow_name, flow_type, _xlsxPath } = sheetContents; + if (!existingContents.hasOwnProperty(flow_type)) { + Logger.error({ + msg1: `Unsupported flow_type: [${flow_type}]`, + msg2: `${_xlsxPath}`, + }); + } + if (existingContents[flow_type].hasOwnProperty(flow_name)) { + const duplicateFlowContents = existingContents[flow_type][flow_name]; + Logger.error({ + msg1: `Duplicate flow_name found: [${flow_type}]`, + msg2: `${_xlsxPath}\n${duplicateFlowContents._xlsxPath}`, + }); + } + } + + /********************************************************************************************************** + * Translations + *********************************************************************************************************/ + private translationsWriteIndex(baseFolder: string) { + type ITranslationContents = { [language_code: string]: { filename: string } }; + const contents: ITranslationContents = {}; + fs.ensureDirSync(baseFolder); + fs.readdirSync(baseFolder).forEach((language_code) => { + contents[language_code] = { filename: `${language_code}/strings.json` }; + }); + const TRANSLATIONS_INDEX_PATH = path.resolve(baseFolder, "contents.json"); + fs.writeFileSync(TRANSLATIONS_INDEX_PATH, JSON.stringify(contents, null, 2)); + } + + private translationsCopyFiles(sourceFolder: string, targetFolder: string) { + fs.ensureDirSync(sourceFolder); + fs.ensureDirSync(targetFolder); + fs.emptyDirSync(targetFolder); + fs.copySync(sourceFolder, targetFolder); + } +} + +/********************************************************************************************************** + * Types and Utilities + *********************************************************************************************************/ +type ISheetContents = { + [flow_type in FlowTypes.FlowType]: { [flow_name: string]: FlowTypes.FlowTypeBase }; +}; diff --git a/packages/scripts/src/commands/app-data/sync.ts b/packages/scripts/src/commands/app-data/sync.ts deleted file mode 100644 index 448f31a8ae..0000000000 --- a/packages/scripts/src/commands/app-data/sync.ts +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -import { Command } from "commander"; -import { logWarning } from "../../utils"; - -const program = new Command("sync"); - -/*************************************************************************************** - * CLI - * @example yarn - *************************************************************************************/ -interface IProgramOptions { - sheetname?: string; - clean?: boolean; -} -export default program - .description("Sync app data") - .option( - "-s --sheetname ", - "name of single google sheet to download (default downloads all)" - ) - .option("-c --clean", "clear all cached data for a clean sync") - .action(async (options: IProgramOptions) => { - // await syncAppData(options); - logWarning({ - msg1: "NOTE - Script has been renamed and will be deprecated", - msg2: `"yarn scripts app-data sync" -> "yarn workflow sync"`, - }); - }); diff --git a/packages/scripts/src/commands/app-data/watch.ts b/packages/scripts/src/commands/app-data/watch.ts new file mode 100644 index 0000000000..b67c05b294 --- /dev/null +++ b/packages/scripts/src/commands/app-data/watch.ts @@ -0,0 +1,46 @@ +#!/usr/bin/env node +// import { Command } from "commander"; +// import path from "path"; +// import { watch } from "chokidar"; +// import fs from "fs-extra"; +// import { ROOT_DIR } from "../../paths"; +// import chalk from "chalk"; + +// const program = new Command("watch"); + +// /*************************************************************************************** +// * The watch command watches for changes to the app-data folder and automatically +// * copies assets to frontend folder +// * +// * NOTE - this should be handled directly by the angular.json folder, however it appears +// * not to accurately detect changes after initial copy. +// * +// * It is expected that this can be deprecated when moving away from app-data folder +// * to direct asset copy +// * +// * @example yarn scripts app-data watch +// *************************************************************************************/ +// interface IProgramOptions {} +// export default program.description("Watch app data").action(async (options: IProgramOptions) => { +// // TODO - watch only configured for default workspace values +// // Should decide if custom dirs required and generalise if needed +// const appDataFolder = path.join(ROOT_DIR, "packages", "app-data"); +// const srcAssetsFolder = path.join(ROOT_DIR, "src", "assets", "app_data"); + +// // clear srcAssets +// fs.ensureDirSync(srcAssetsFolder); +// fs.emptyDirSync(srcAssetsFolder); + +// const appDataSheetsFolder = path.join(appDataFolder, "sheets"); +// const srcAssetsSheetsFolder = path.join(srcAssetsFolder, "sheets"); + +// watch("**/*.json", { cwd: appDataSheetsFolder, depth: 3 }).on("change", (filepath) => { +// console.log(chalk.gray("[M]", filepath)); +// const appDataPath = path.resolve(appDataSheetsFolder, filepath); +// const srcAssetsPath = path.resolve(srcAssetsSheetsFolder, filepath); +// fs.ensureDirSync(path.dirname(srcAssetsPath)); +// fs.copyFileSync(appDataPath, srcAssetsPath); +// }); + +// const appDataAssetsFolder = path.join(appDataFolder, "sheets"); +// }); diff --git a/packages/scripts/src/commands/compile/index.ts b/packages/scripts/src/commands/compile/index.ts index 4b5b1c8ff8..acdbb40259 100644 --- a/packages/scripts/src/commands/compile/index.ts +++ b/packages/scripts/src/commands/compile/index.ts @@ -16,5 +16,7 @@ if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + (async function () { + await program.parseAsync(process.argv); + })(); } diff --git a/packages/scripts/src/commands/compile/types.ts b/packages/scripts/src/commands/compile/types.ts index ba096968b0..028adce335 100644 --- a/packages/scripts/src/commands/compile/types.ts +++ b/packages/scripts/src/commands/compile/types.ts @@ -10,28 +10,27 @@ import { DATA_MODELS_WORKSPACE_PATH } from "../../paths"; * CLI * @example yarn *************************************************************************************/ -interface IProgramOptions {} + const program = new Command("types"); -export default program.description("Compile types").action(async (options: IProgramOptions) => { - await compileTypes(options); +export default program.description("Compile types").action(() => { + compileTypes(); }); /*************************************************************************************** * Main Methods *************************************************************************************/ /** - * Read the default deployment json and retrieve parsed ts for the named active deployment + * + * Data models import types from scripts but scripts also import types from data models + * Whilst the types are not in conflict themselves, they do lead to compilation issues + * Remove any outstanding types before compiling noew */ -async function compileTypes(options: IProgramOptions) { - // Data models import types from scripts but scripts also import types from data models - // Whilst the types are not in conflict themselves, they do lead to compilation issues - // Remove any outstanding types before compiling noew +function compileTypes() { const dataModelsBuildPath = path.resolve(DATA_MODELS_WORKSPACE_PATH, "dist"); console.log(chalk.yellow("Compiling type definitions")); if (fs.existsSync(dataModelsBuildPath)) { fs.removeSync(dataModelsBuildPath); } - // compile data-models and app-data files + // compile data-models spawnSync(`yarn workspace data-models build`, { stdio: "inherit", shell: true }); - spawnSync(`yarn workspace app-data build`, { stdio: "inherit", shell: true }); } diff --git a/packages/scripts/src/commands/config/decrypt.ts b/packages/scripts/src/commands/config/decrypt.ts index 8b6cf78cc6..606b6b01ec 100644 --- a/packages/scripts/src/commands/config/decrypt.ts +++ b/packages/scripts/src/commands/config/decrypt.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node import fs from "fs-extra"; -import { logError, logOutput } from "../../utils"; +import { Logger, logOutput } from "../../utils"; import { CONFIG_FOLDER_PATH, PRIVATE_KEY_PATH } from "../../paths"; import { Command } from "commander"; import NodeRSA from "node-rsa"; @@ -20,7 +20,7 @@ export default program.description("Decrypt Config Files").action(async () => { *************************************************************************************/ async function decryptConfig() { if (!fs.existsSync(PRIVATE_KEY_PATH)) { - logError({ + Logger.error({ msg1: "Private decrypt key not found, ask for one from the dev team and copy to path", msg2: PRIVATE_KEY_PATH, }); diff --git a/packages/scripts/src/commands/config/index.ts b/packages/scripts/src/commands/config/index.ts index f005319d74..f0eae9663a 100644 --- a/packages/scripts/src/commands/config/index.ts +++ b/packages/scripts/src/commands/config/index.ts @@ -18,5 +18,7 @@ if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + (async function () { + await program.parseAsync(process.argv); + })(); } diff --git a/packages/scripts/src/commands/deployment/common.ts b/packages/scripts/src/commands/deployment/common.ts index 97b4333e28..d935e0160c 100644 --- a/packages/scripts/src/commands/deployment/common.ts +++ b/packages/scripts/src/commands/deployment/common.ts @@ -1,2 +1,34 @@ -/** Adjust config version to force new config set */ -export const DEPLOYMENT_CONFIG_VERSION = 2; +import { DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS, getDefaultAppConfig } from "data-models"; +import type { IDeploymentConfig, IDeploymentConfigJson } from "data-models"; +import path from "path"; + +import { DEPLOYMENTS_PATH } from "../../paths"; +import { loadDeploymentJson } from "./utils"; + +// re-export of type for convenience +export type { IDeploymentConfigJson }; + +/** Create a new deployment config with default values */ +export function generateDeploymentConfig(name: string): IDeploymentConfig { + const config = DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS; + config.name = name; + config.app_config = getDefaultAppConfig(); + return config; +} + +/** Load and extend an existing deployment config **/ +export function extendDeploymentConfig(options: { + parent: string; + name: string; +}): IDeploymentConfig { + const parentWorkspace = path.resolve(DEPLOYMENTS_PATH, options.parent); + const baseConfig = loadDeploymentJson(parentWorkspace); + // add parent_config meta, remove git references + baseConfig._parent_config = { name: baseConfig.name, _workspace_path: parentWorkspace }; + baseConfig.name = options.name; + if (baseConfig.git.content_repo) { + baseConfig._parent_config.git = baseConfig.git; + delete baseConfig.git; + } + return baseConfig as IDeploymentConfig; +} diff --git a/packages/scripts/src/commands/deployment/compile.ts b/packages/scripts/src/commands/deployment/compile.ts new file mode 100644 index 0000000000..8605778e94 --- /dev/null +++ b/packages/scripts/src/commands/deployment/compile.ts @@ -0,0 +1,105 @@ +#!/usr/bin/env node +import { spawnSync } from "child_process"; +import { Command } from "commander"; +import { IDeploymentConfig, DEPLOYMENT_CONFIG_VERSION } from "data-models"; +import fs from "fs-extra"; +import path from "path"; +import { ROOT_DIR } from "../../paths"; +import { Logger } from "../../utils"; +import { IDeploymentConfigJson } from "./common"; +import { convertFunctionsToStrings } from "./utils"; + +const program = new Command("compile"); +interface IOptions { + /** Path to input ts file for compilation */ + input: string; + /** Path to write for output json file */ + output: string; +} + +/*************************************************************************************** + * CLI + * @example yarn + *************************************************************************************/ +export default program + .description("Compile a deployment TS file to json") + .requiredOption("-i --input ") + .requiredOption("-o --output ") + .action(async (options: IOptions) => { + await compileDeploymentTS(options); + }); + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ + +export async function compileDeploymentTS(options: IOptions) { + // load ts file and convert to deployment json + const ts: IDeploymentConfig = await loadTSFileDefaultExport(options.input); + const json = convertDeploymentTsToJson(ts, options.input); + if (!json._validated) { + Logger.error({ + msg1: "Config file incorrectly defined", + msg2: "Should use `generateDeploymentConfig` to create", + }); + } + // write outputs, keeping same modified time on json as ts + fs.writeFileSync(options.output, JSON.stringify(json, null, 2)); + const { mtime } = fs.statSync(options.input); + fs.utimesSync(options.output, mtime, mtime); +} + +/** Additional export to call program a child process to allow sync execution of async functions */ +export function compileDeploymentTSSync(options: IOptions) { + const exec = `yarn workspace scripts start`; + const args = `deployment compile --input "${options.input}" --output "${options.output}"`; + const cmd = `${exec} ${args}`; + // console.log(chalk.yellow(cmd)); + spawnSync(cmd, { stdio: "inherit", shell: true }); +} + +/** Load a .ts file and return the default export */ +export async function loadTSFileDefaultExport(input: string) { + try { + const res = await import(input); + return res.default; + } catch (error) { + console.error(error); + Logger.error({ msg1: "Could not compile", msg2: input }); + } +} + +/** Take a base deployment config, merge with metadata fields, evaluate relative paths */ +function convertDeploymentTsToJson( + deployment: IDeploymentConfig, + _config_ts_path: string +): IDeploymentConfigJson { + const _workspace_path = path.resolve(_config_ts_path, "../"); + const _config_version = DEPLOYMENT_CONFIG_VERSION; + + // rewrite relative urls to absolute + const rewritten = rewriteConfigPaths(deployment, _workspace_path); + + const converted = convertFunctionsToStrings(rewritten); + + return { ...converted, _workspace_path, _config_ts_path, _config_version }; +} + +function rewriteConfigPaths(data: T, relativePathRoot: string) { + Object.entries(data).forEach(([key, value]) => { + if (value && typeof value === "object") { + data[key] = rewriteConfigPaths(value, relativePathRoot); + } + if (key.endsWith("_path") && typeof value === "string") { + // handle paths relative to config file + if (value.startsWith(".")) { + data[key] = path.resolve(relativePathRoot, value); + } + // assume all other paths are relative to workspace + else { + data[key] = path.resolve(ROOT_DIR, value); + } + } + }); + return data; +} diff --git a/packages/scripts/src/commands/deployment/create.ts b/packages/scripts/src/commands/deployment/create.ts new file mode 100644 index 0000000000..76ced15792 --- /dev/null +++ b/packages/scripts/src/commands/deployment/create.ts @@ -0,0 +1,143 @@ +#!/usr/bin/env node +import { Command } from "commander"; +import fs from "fs-extra"; +import path from "path"; +import { DEPLOYMENTS_PATH } from "../../paths"; +import { Logger, logOutput, logWarning, promptInput, promptOptions } from "../../utils"; +import type { IDeploymentConfigJson } from "./common"; +import { DeploymentSet } from "./set"; +import generateDefaultConfig from "./templates/config.default"; +import generateExtendedConfig from "./templates/config.extended"; +import { loadDeploymentJson } from "./utils"; + +const program = new Command("create"); + +/*************************************************************************************** + * CLI + * @example yarn + *************************************************************************************/ +export default program + .description("Create new deployment") + // options copied from/passed to generate + .action(async () => { + await createDeployment(); + }); + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ +/** + * Read the default deployment json and return compiled json of previously set active + * deployment. + * @param options.skipRecompileCheck - Skipping checking if ts file updated requiring json update + * @param options.ignoreMissing - If no config has been set a warning will be shown. + * Supress this and instead return an empty config object `{}` + */ +export async function createDeployment() { + const generators = [ + { name: "New Local Deployment", value: () => generateNewDeployment() }, + { name: "Extend Existing Local", value: () => generateExtendedDeployment() }, + ]; + const generatorExec: () => Promise = await promptOptions( + generators, + "Would you like to create a new deployment or extend an existing?" + ); + const createdDeployment = await generatorExec(); + logOutput({ msg1: "Deployment created", msg2: createdDeployment.targetConfigFile }); + return createdDeployment.name; +} + +/** Create a new standalone deployment config */ +async function generateNewDeployment(): Promise { + const nameInput = await promptInput("Specify a name for the deployment"); + const name = nameInput.replace(/ /g, "_").toLowerCase(); + const targetConfigFile = path.join(DEPLOYMENTS_PATH, name, `config.ts`); + const configTs = generateDefaultConfig(name); + writeConfig(targetConfigFile, configTs); + const targetGitIgnoreFile = path.join(DEPLOYMENTS_PATH, name, `.gitignore`); + writeGitIgnore(targetGitIgnoreFile); + return { name, targetConfigFile }; +} + +/** Create a deployment config that extends an existing config */ +async function generateExtendedDeployment(): Promise { + const parentDeployment = await selectParentConfigToExtend(); + const nameInput = await promptInput( + `Specify a name for the deployment: ${parentDeployment.name} - ` + ); + const name = nameInput.replace(/ /g, "_").toLowerCase(); + const extendedName = `${parentDeployment.name}_${name}`; + const targetFolder = path.join(DEPLOYMENTS_PATH, extendedName); + const targetConfigFile = path.join(targetFolder, `config.ts`); + const configTs = generateExtendedConfig(extendedName, parentDeployment.name); + writeConfig(targetConfigFile, configTs); + const targetGitIgnoreFile = path.join(DEPLOYMENTS_PATH, extendedName, `.gitignore`); + writeGitIgnore(targetGitIgnoreFile); + return { name: extendedName, targetConfigFile }; +} + +/** Prompt select of an existing config to extend */ +async function selectParentConfigToExtend() { + const allDeployments = listValidDeployments(); + const options = Object.values(allDeployments).map((deployment) => ({ + name: deployment.name, + value: { + name: deployment.name, + filename: path.basename(deployment._config_ts_path), + folder: path.dirname(path.resolve(DEPLOYMENTS_PATH, deployment._workspace_path)), + }, + })); + const parentDeployment = await promptOptions( + options, + "Which deployment would you like to extend?" + ); + return parentDeployment as { name: string; filename: string; folder: string }; +} + +/** + * Iterate over deployment folder config.ts files, parse typescript to see which + * can be successfully generated + */ +export function listValidDeployments() { + const deploymentsHashmap: { [name: string]: IDeploymentConfigJson } = {}; + + const deploymentTSPaths = fs + .readdirSync(DEPLOYMENTS_PATH, { withFileTypes: true }) + .filter((d) => d.isDirectory()) + .map((d) => path.resolve(DEPLOYMENTS_PATH, d.name, "config.ts")) + .filter((d) => fs.existsSync(d)); + + for (const tsPath of deploymentTSPaths) { + try { + const deploymentJson = loadDeploymentJson(path.dirname(tsPath)); + deploymentsHashmap[deploymentJson.name] = deploymentJson; + } catch (error) { + logWarning({ + msg1: `Could not load deployment: ${tsPath}`, + }); + } + } + return deploymentsHashmap; +} + +function writeConfig(targetConfigFile: string, configTs: string) { + if (fs.existsSync(targetConfigFile)) { + Logger.error({ msg1: "Deployment already exists", msg2: targetConfigFile }); + } + fs.ensureDirSync(path.dirname(targetConfigFile)); + fs.writeFileSync(targetConfigFile, configTs); +} + +function writeGitIgnore(targetFile: string) { + const ignoredPaths = ["app_data", "cache", "tasks", "config.json"]; + const gitIgnoreTxt = ignoredPaths.join("\n"); + if (fs.existsSync(targetFile)) { + Logger.error({ msg1: "Gitignore file already exists", msg2: targetFile }); + } + fs.writeFileSync(targetFile, gitIgnoreTxt); +} + +interface IGeneratedDeployment { + name: string; + targetConfigFile: string; +} diff --git a/packages/scripts/src/commands/deployment/get.ts b/packages/scripts/src/commands/deployment/get.ts index f7ced8c6ab..e3665e46f9 100644 --- a/packages/scripts/src/commands/deployment/get.ts +++ b/packages/scripts/src/commands/deployment/get.ts @@ -1,13 +1,13 @@ #!/usr/bin/env node import { Command } from "commander"; +import { IDeploymentConfig } from "data-models"; import fs from "fs-extra"; import path from "path"; -import chalk from "chalk"; -import { IDEMS_APP_CONFIG } from "../../paths"; -import { logError } from "../../utils"; -import { DEPLOYMENT_CONFIG_VERSION } from "./common"; -import { IDeploymentConfigJson } from "./set"; -import { spawnSync } from "child_process"; +import { DEPLOYMENTS_PATH } from "../../paths"; +import { Logger } from "../../utils"; +import type { IDeploymentConfigJson } from "./common"; +import { loadTSFileDefaultExport } from "./compile"; +import { loadDeploymentJson } from "./utils"; const program = new Command("get"); @@ -15,77 +15,66 @@ const program = new Command("get"); * CLI * @example yarn *************************************************************************************/ -export default program - .description("Get active deployment") - // options copied from/passed to generate - .action(async () => { - const deployment = getActiveDeployment(); - console.log("deployment get", deployment); - }); +export default program.description("Get active deployment").action(async () => { + const deployment = get(); + console.log("deployment get", deployment); +}); /*************************************************************************************** * Main Methods *************************************************************************************/ + /** * Read the default deployment json and return compiled json of previously set active * deployment. + * @param options.skipRecompileCheck - Skipping checking if ts file updated requiring json update + * @param options.ignoreMissing - If no config has been set a warning will be shown. + * Supress this and instead return an empty config object `{}` */ -export function getActiveDeployment(): IDeploymentConfigJson { - const defaultJsonPath = path.resolve(IDEMS_APP_CONFIG.deployments, "default.json"); +function get( + options: { skipRecompileCheck?: boolean; ignoreMissing?: boolean } = {} +): IDeploymentConfigJson { + const defaultJsonPath = path.resolve(DEPLOYMENTS_PATH, "activeDeployment.json"); + + // Handle no deployment configured if (!fs.existsSync(defaultJsonPath)) { - logError({ + if (options.ignoreMissing) { + return {} as any; + } + Logger.error({ msg1: "No default deployment has been specified", - msg2: `Run "yarn scripts deployment set" to configure`, - }); - } - const deploymentJson: IDeploymentConfigJson = fs.readJsonSync(defaultJsonPath); - const { _config_ts_path } = deploymentJson; - const deploymentTSPath = path.resolve(IDEMS_APP_CONFIG.deployments, _config_ts_path); - - if (!fs.existsSync(deploymentTSPath)) { - logError({ - msg1: `Deployment not found: ${_config_ts_path}`, - msg2: `Run "yarn scripts deployment set" to specify a new active deployment`, + msg2: `Run "yarn workflow deployment set" to configure`, }); } - // Ensure json compiled since any changes to ts - const { mtime: jsonModifiedTime } = fs.statSync(defaultJsonPath); - const { mtime: tsModifiedTime } = fs.statSync(deploymentTSPath); - - if (jsonModifiedTime < tsModifiedTime) { - console.log(chalk.grey("Config has been updated, recompile required")); - promptConfigSet(); - return getActiveDeployment(); + // Load last active json, ensure still exists and up-to-date (unless otherwise specified) + const deploymentJson = fs.readJsonSync(defaultJsonPath) as IDeploymentConfigJson; + if (options.skipRecompileCheck) { + return deploymentJson; } - - // ensure json compiled any time core config set methods updated - if (deploymentJson._config_version !== DEPLOYMENT_CONFIG_VERSION) { - console.log(chalk.grey("Config core has been updated, recompile required")); - promptConfigSet(); - return getActiveDeployment(); + const { _config_ts_path, _workspace_path, name } = deploymentJson; + if (!fs.existsSync(_config_ts_path)) { + fs.removeSync(defaultJsonPath); + Logger.error({ + msg1: `Deployment not found: ${name}`, + msg2: `Run "yarn workflow deployment set" to specify a new active deployment`, + }); } - - const convertedJson = convertStringsToFunctions(deploymentJson); - - return convertedJson; + return loadDeploymentJson(_workspace_path); } -/** Run interactive command prompt to specify config */ -function promptConfigSet() { - const cmd = `yarn workspace scripts start deployment set`; - spawnSync(cmd, { stdio: "inherit", shell: true }); +/** Similar to above, but parses TS async so can return without serialization/de-serialization */ +async function getTs() { + const { _config_ts_path } = get(); + const ts = await loadTSFileDefaultExport(_config_ts_path); + return ts as IDeploymentConfig; } -/** When JSON is stored functions are stringified. Convert back */ -function convertStringsToFunctions(data: T) { - Object.entries(data).forEach(([key, value]) => { - if (value && typeof value === "object") { - data[key] = convertStringsToFunctions(value); - } - if (key.endsWith("_function") && typeof value === "string") { - data[key] = new Function(`return ${value}`)(); - } - }); - return data; -} +/** + * HACK - export functions within another constant and not directly to allow for easier + * test mocking https://github.com/jasmine/jasmine/issues/1414 + */ +export const ActiveDeployment = { + get, + getTs, +}; diff --git a/packages/scripts/src/commands/deployment/import.ts b/packages/scripts/src/commands/deployment/import.ts new file mode 100644 index 0000000000..5b8003a432 --- /dev/null +++ b/packages/scripts/src/commands/deployment/import.ts @@ -0,0 +1,91 @@ +#!/usr/bin/env node +import chalk from "chalk"; +import { Command } from "commander"; +import fs, { moveSync, rmSync } from "fs-extra"; +import { resolve } from "path"; +import GitProvider from "../../tasks/providers/git"; +import { DEPLOYMENTS_PATH } from "../../paths"; +import { Logger, logOutput, logWarning, promptConfirmation, promptInput } from "../../utils"; +import { loadDeploymentJson } from "./utils"; +import { existsSync } from "fs"; + +const program = new Command("import"); +interface IOptions { + /** Url of remote repo to import */ + remoteRepo: string; +} + +/*************************************************************************************** + * CLI + * @example yarn + *************************************************************************************/ +export default program + .description("Import remote git repo") + .requiredOption("-r --remote-repo ") + .action(async (options: IOptions) => { + await importRepo(options.remoteRepo); + }); + +/*************************************************************************************** + * Main Methods + *************************************************************************************/ + +export async function importRepo(remoteTarget: string) { + // Clone to temp dir for analysis + console.log(chalk.gray("Checking Repo...")); + // const tmpDir = resolve(DEPLOYMENTS_PATH, ); + + // Clone git repo to a temporary directory in the deployments folder to allow config check + const tmpDir = createTempDeploymentName(remoteTarget); + const git = GitProvider(); + + console.log(chalk.gray(`Cloning ${remoteTarget}`)); + await git.cloneRepo(remoteTarget, tmpDir); + + const { name, valid, shouldContinue } = await validateImportDeployment(tmpDir); + if (!shouldContinue) { + rmSync(tmpDir, { recursive: true, force: true }); + process.exit(0); + } + const nameInput = await promptInput("Specify a name for the deployment", name); + const deploymentName = nameInput.replace(/ /g, "_").toLowerCase(); + + const targetDir = resolve(DEPLOYMENTS_PATH, deploymentName); + if (fs.existsSync(targetDir)) { + rmSync(tmpDir, { recursive: true, force: true }); + Logger.error({ msg1: "A folder for this deployment already exists", msg2: targetDir }); + } + moveSync(tmpDir, targetDir); + if (valid) { + // remove processed config as will have paths from tmp dir (will reprocess next set) + rmSync(resolve(targetDir, "config.json")); + logOutput({ msg1: "Deployment imported successfully", msg2: targetDir }); + } else { + logWarning({ msg1: "Deployment imported, please manually fix configuration", msg2: targetDir }); + process.exit(0); + } + return targetDir; +} + +/** Create a temporary directory based on repo name (adding timestamp suffix if already exists) */ +function createTempDeploymentName(remoteTarget: string) { + const tmpName = remoteTarget.split("/").pop().split(".")[0]; + let tmpDir = resolve(DEPLOYMENTS_PATH, tmpName); + if (existsSync(tmpDir)) { + tmpDir = tmpDir += `-${new Date().getTime()}`; + } + return tmpDir; +} + +/** Check if deployment config can be compiled */ +async function validateImportDeployment(deploymentPath: string) { + const deploymentJson = loadDeploymentJson(deploymentPath, { exitOnError: false }); + if (deploymentJson) { + return { valid: true, name: deploymentJson.name, shouldContinue: true }; + } else { + logWarning({ msg1: "The external repo does not appear to have a valid configuration" }); + const shouldContinue = await promptConfirmation("Would you like to import anyway?", false); + // Although deployment may not be valid still pass back if user specified continue + return { valid: false, name: "", shouldContinue }; + } +} diff --git a/packages/scripts/src/commands/deployment/index.ts b/packages/scripts/src/commands/deployment/index.ts index b05cba2e95..165fa52a2f 100644 --- a/packages/scripts/src/commands/deployment/index.ts +++ b/packages/scripts/src/commands/deployment/index.ts @@ -1,15 +1,20 @@ #!/usr/bin/env node import { Command } from "commander"; -import setCmd from "./set"; +import compileCmd from "./compile"; +import createCmd from "./create"; import getCmd from "./get"; +import importCmd from "./import"; +import setCmd from "./set"; import { logProgramHelp } from "../../utils"; const program = new Command("deployment").description("Manage active deployment workspace"); -/** add sub-commands from child folders */ -program.addCommand(setCmd); +program.addCommand(compileCmd); +program.addCommand(createCmd); program.addCommand(getCmd); +program.addCommand(importCmd); +program.addCommand(setCmd); export default program; @@ -18,5 +23,5 @@ if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + program.parseAsync(process.argv); } diff --git a/packages/scripts/src/commands/deployment/set.ts b/packages/scripts/src/commands/deployment/set.ts index 10ca643027..cad54b9f5e 100644 --- a/packages/scripts/src/commands/deployment/set.ts +++ b/packages/scripts/src/commands/deployment/set.ts @@ -1,161 +1,89 @@ #!/usr/bin/env node import { Command } from "commander"; -import { GlobSync } from "glob"; import fs from "fs-extra"; import path from "path"; -import { IDeploymentConfig, DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS } from "../../../types"; -import { IDEMS_APP_CONFIG, ROOT_DIR } from "../../paths"; -import { promptOptions, logError, deepMergeObjects, logOutput } from "../../utils"; -import { DEPLOYMENT_CONFIG_VERSION } from "./common"; +import { DEPLOYMENTS_PATH, ROOT_DIR } from "../../paths"; +import { promptOptions, logOutput, logWarning } from "../../utils"; +import { ActiveDeployment } from "./get"; +import { loadDeploymentJson } from "./utils"; const program = new Command("set"); +interface IOptions { + /** Temp method to check if called from workflow or directly via scripts (prefer workflow) */ + workflow?: string; +} + /*************************************************************************************** * CLI * @example yarn *************************************************************************************/ export default program .description("Set active deployment") - // options copied from/passed to generate - .action(async () => { + .option("-w --workflow", "Specify if script invoked from workflow") + .action(async (options: IOptions) => { + if (!options.workflow) { + logWarning({ + msg1: "[Deprecated] - Set via workflow instead", + msg2: "yarn workflow deployment set", + }); + return; + } let [deploymentName] = program.args; - await setActiveDeployment(deploymentName); + await new DeploymentSet().setActiveDeployment(deploymentName); }); /*************************************************************************************** * Main Methods *************************************************************************************/ -/** - * Specify or choose a deployment from a list of available deployments, and - * populate as the active deployment to default deployment json file - * - * NOTE - when updating a deployment .ts this will need to be run again to ensure - * parsed data correct in default - */ -async function setActiveDeployment(deploymentName?: string) { - const allDeployments = await listDeployments(); - if (!deploymentName) { - deploymentName = await promptOptions(Object.keys(allDeployments)); - } - const matchingDeployment = allDeployments[deploymentName]; - if (!matchingDeployment) { - logError({ - msg1: `No deployment found with name: "${deploymentName}"`, - msg2: `Available: ${Object.keys(allDeployments).join(", ")}`, - }); - } - const { filename, ...deployment } = matchingDeployment; - const defaultDeploymentPath = path.resolve(IDEMS_APP_CONFIG.deployments, "default.json"); - - const deploymentJson = generateDeploymentJson(deployment, filename); - fs.writeFileSync(defaultDeploymentPath, JSON.stringify(deploymentJson, null, 2)); - logOutput({ - msg1: `Deployment set`, - msg2: JSON.stringify(deployment, null, 2), - }); - // delete .angular cache as it may not detect changes to json files otherwise - const angularCacheDir = path.join(ROOT_DIR, ".angular"); - if (fs.existsSync(angularCacheDir)) { - fs.removeSync(angularCacheDir); - } -} - -/** - * Deployment files are written in .ts, so cannot be ready directly - * Iterate over the files and dynamically import to resolve their values, - * which can be passed back as an array of deployments - */ -async function listDeployments() { - const deploymentsHashmap: { [name: string]: IDeploymentConfigWithFilename } = {}; - const { found: allDeploymentFiles } = new GlobSync("**/*config.ts", { - cwd: IDEMS_APP_CONFIG.deployments, - }); - for (const filename of allDeploymentFiles) { - try { - const deployment: IDeploymentConfig = await loadDeploymentTS(filename); - // should have default export with a name property - // assign via deep merge to ensure created as new object and won't conflict with future imports - if (deployment?.name) { - deploymentsHashmap[deployment.name] = deepMergeObjects({ filename }, deployment); - } - } catch (error) { - console.error(error); +export class DeploymentSet { + /** + * Specify or choose a deployment from a list of available deployments, and + * populate as the active deployment to default deployment json file + * + * NOTE - when updating a deployment .ts this will need to be run again to ensure + * parsed data correct in default + */ + public async setActiveDeployment(deploymentName?: string) { + // Prompt selection from list + if (!deploymentName) { + deploymentName = await this.promptDeploymentSelect(); + return this.setActiveDeployment(deploymentName); } - } - return deploymentsHashmap; -} - -/** Read a .ts file containing deployment information and return processed default export */ -export async function loadDeploymentTS(filename: string) { - const filepath = path.resolve(IDEMS_APP_CONFIG.deployments, filename); - const res = await import(filepath); - return res.default; -} - -/** Take a base deployment config, merge with metadata fields, evaluate relative paths */ -function generateDeploymentJson(deployment: IDeploymentConfig, filename: string) { - const _config_ts_path = path.resolve(IDEMS_APP_CONFIG.deployments, filename); - const _workspace_path = path.dirname(_config_ts_path); - const _config_version = DEPLOYMENT_CONFIG_VERSION; - - // merge default values - const merged = deepMergeObjects(DEPLOYMENT_CONFIG_EXAMPLE_DEFAULTS, deployment); - - // rewrite relative urls to absolute - const rewritten = rewriteConfigPaths(merged, _workspace_path); - - const converted = convertFunctionsToStrings(rewritten); - - // merge with metadata fields - const deploymentJson: IDeploymentConfigJson = { - ...converted, - _workspace_path, - _config_ts_path, - _config_version, - }; - - // TODO - convert functions to strings - return deploymentJson; -} - -interface IDeploymentConfigWithFilename extends IDeploymentConfig { - filename: string; -} -export interface IDeploymentConfigJson extends IDeploymentConfig { - _workspace_path: string; - _config_ts_path: string; - _config_version: number; -} - -function rewriteConfigPaths(data: T, relativePathRoot: string) { - Object.entries(data).forEach(([key, value]) => { - if (value && typeof value === "object") { - data[key] = rewriteConfigPaths(value, relativePathRoot); - } - if (key.endsWith("_path") && typeof value === "string") { - // handle paths relative to config file - if (value.startsWith(".")) { - data[key] = path.resolve(relativePathRoot, value); - } - // assume all other paths are relative to workspace - else { - data[key] = path.resolve(ROOT_DIR, value); - } + const deploymentWorkspace = path.resolve(DEPLOYMENTS_PATH, deploymentName); + const deploymentJson = loadDeploymentJson(deploymentWorkspace); + const deploymentJsonString = JSON.stringify(deploymentJson, null, 2); + // write json to store the config both within the current deployment and as the active deployment + const activeDeploymentPath = path.resolve(DEPLOYMENTS_PATH, "activeDeployment.json"); + fs.writeFileSync(activeDeploymentPath, deploymentJsonString); + logOutput({ + msg1: `Active Deployment - "${deploymentJson.name}"`, + msg2: activeDeploymentPath, + }); + // delete .angular cache as it may not detect changes to json files otherwise + const angularCacheDir = path.join(ROOT_DIR, ".angular"); + if (fs.existsSync(angularCacheDir)) { + fs.removeSync(angularCacheDir); } - }); - return data; -} + } -/** When stringifying json functions cannot be converted, so pre-convert any using function .toString() method */ -function convertFunctionsToStrings(data: T) { - Object.entries(data).forEach(([key, value]) => { - if (value && typeof value === "object") { - data[key] = convertFunctionsToStrings(value); - } - if (key.endsWith("_function") && typeof value === "function") { - data[key] = (value as Function).toString(); + private async promptDeploymentSelect() { + const deploymentNames = fs + .readdirSync(DEPLOYMENTS_PATH, { withFileTypes: true }) + .filter((d) => d.isDirectory()) + .map((d) => d.name) + .filter((name) => fs.existsSync(path.resolve(DEPLOYMENTS_PATH, name, "config.ts"))); + const currentDeploymentName = ActiveDeployment.get({ + ignoreMissing: true, + skipRecompileCheck: true, + })?.name; + // move current deployment name to start of list if exists + if (currentDeploymentName && deploymentNames.includes(currentDeploymentName)) { + deploymentNames.splice(deploymentNames.indexOf(currentDeploymentName), 1); + deploymentNames.unshift(currentDeploymentName); } - }); - return data; + const selectedName = await promptOptions(deploymentNames); + return selectedName; + } } diff --git a/packages/scripts/src/commands/deployment/templates/config.default.ts b/packages/scripts/src/commands/deployment/templates/config.default.ts new file mode 100644 index 0000000000..c4cf0c65d9 --- /dev/null +++ b/packages/scripts/src/commands/deployment/templates/config.default.ts @@ -0,0 +1,15 @@ +export default (name: string) => + ` +import { generateDeploymentConfig } from "scripts"; +const config = generateDeploymentConfig("${name}") + +config.google_drive = { + sheets_folder_id: "", + assets_folder_id: "", +} +// Override any app constants here +config.app_config.APP_HEADER_DEFAULTS.title = "${name}" +config.app_config.APP_SIDEMENU_DEFAULTS.title = "${name}" + +export default config; +`.trim(); diff --git a/packages/scripts/src/commands/deployment/templates/config.extended.ts b/packages/scripts/src/commands/deployment/templates/config.extended.ts new file mode 100644 index 0000000000..9c6fb67d2f --- /dev/null +++ b/packages/scripts/src/commands/deployment/templates/config.extended.ts @@ -0,0 +1,17 @@ +// TODO - this will need refactor after PR 1401 merged + +export default (name: string, parent: string) => + ` +import { extendDeploymentConfig } from "scripts"; +const config = extendDeploymentConfig({ name: "${name}", parent: "${parent}" }); + +// override app constants here +config.app_config.APP_HEADER_DEFAULTS.title = "${name}"; +config.app_config.APP_SIDEMENU_DEFAULTS.title = "${name}"; + +// example filters applied to main deployment content +config.app_data.sheets_filter_function = (flow) =>true, +config.app_data.assets_filter_function = (fileEntry) =>true + +export default config; +`.trim(); diff --git a/packages/scripts/src/commands/deployment/utils.ts b/packages/scripts/src/commands/deployment/utils.ts new file mode 100644 index 0000000000..51517dc8f7 --- /dev/null +++ b/packages/scripts/src/commands/deployment/utils.ts @@ -0,0 +1,103 @@ +import chalk from "chalk"; +import fs, { statSync } from "fs-extra"; +import path from "path"; + +import { DEPLOYMENT_CONFIG_VERSION } from "data-models"; + +import { Logger } from "../../utils"; +import { compileDeploymentTSSync } from "./compile"; +import { IDeploymentConfigJson } from "./common"; + +/** + * Retrieve compiled config json for a given folder path + * If JSON does not exist or is outdated recompile synchronously + * Also checks any parent configs and recompiles if parent updated + */ +export function loadDeploymentJson( + workspacePath: string, + options: { + isRetryCheck?: boolean; + exitOnError?: boolean; + } = { exitOnError: true } +): IDeploymentConfigJson { + // Load deployment + const tsPath = path.join(workspacePath, "config.ts"); + const jsonPath = path.join(workspacePath, "config.json"); + if (!fs.existsSync(tsPath)) { + Logger.error({ msg1: "Config file not found", msg2: tsPath, logOnly: true }); + if (options.exitOnError) process.exit(1); + } + + // Check if config fully up-to-date, return json if so + if (fs.existsSync(jsonPath)) { + const json = fs.readJSONSync(jsonPath) as IDeploymentConfigJson; + // Ensure parent config also up-to-date by running script recursively + if (json._parent_config) { + loadDeploymentJson(json._parent_config._workspace_path); + } + if (isConfigUpToDate(tsPath, jsonPath)) { + // Config up-to-date - parse and return + return parseConfigJson(json); + } + } + // Otherwise attempt compile the ts to json and retry (exiting if already retry) + if (options.isRetryCheck) { + Logger.error({ msg1: "Failed to compile", msg2: tsPath, logOnly: true }); + if (options.exitOnError) process.exit(1); + } else { + const folderName = path.dirname(tsPath).split(path.sep).pop(); + console.log(chalk.gray(`Compiling: ${folderName}`)); + compileDeploymentTSSync({ input: tsPath, output: jsonPath }); + return loadDeploymentJson(workspacePath, { ...options, isRetryCheck: true }); + } +} + +/** + * When reading config.json files convert stringified functions back to real functions + */ +function parseConfigJson(json: IDeploymentConfigJson) { + const convertedJson = convertStringsToFunctions(json); + return convertedJson; +} + +/** + * Decide if a config needs recompiling by checking if modified timestamps + * on the .ts and .json files are the same (applied during compilation) + */ +function isConfigUpToDate(tsPath: string, jsonPath: string) { + const json = fs.readJSONSync(jsonPath) as IDeploymentConfigJson; + if (json._config_version === DEPLOYMENT_CONFIG_VERSION) { + const { mtime: tsModifiedTime } = statSync(tsPath); + const { mtime: jsonModifiedTime } = statSync(jsonPath); + if (tsModifiedTime.getTime() === jsonModifiedTime.getTime()) { + return true; + } + } + return false; +} + +/** When stringifying json functions cannot be converted, so pre-convert any using function .toString() method */ +export function convertFunctionsToStrings(data: T) { + Object.entries(data).forEach(([key, value]) => { + if (value && typeof value === "object") { + data[key] = convertFunctionsToStrings(value); + } + if (key.endsWith("_function") && typeof value === "function") { + data[key] = (value as Function).toString(); + } + }); + return data; +} + +/** Convert stringified functions back to objects */ +export function convertStringsToFunctions(data: T) { + Object.entries(data).forEach(([key, value]) => { + if (value && typeof value === "object") { + data[key] = convertStringsToFunctions(value); + } + if (key.endsWith("_function") && typeof value === "string") { + data[key] = new Function(`return ${value}`)(); + } + }); + return data; +} diff --git a/packages/scripts/src/commands/e2e-data/index.ts b/packages/scripts/src/commands/e2e-data/index.ts index 49ad9bbfe0..e4024b7be2 100644 --- a/packages/scripts/src/commands/e2e-data/index.ts +++ b/packages/scripts/src/commands/e2e-data/index.ts @@ -16,5 +16,7 @@ if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + (async function () { + await program.parseAsync(process.argv); + })(); } diff --git a/packages/scripts/src/commands/generate/app_data.ts b/packages/scripts/src/commands/generate/app_data.ts deleted file mode 100644 index 8237772fbb..0000000000 --- a/packages/scripts/src/commands/generate/app_data.ts +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env node -import cp from "child_process"; - -import { Command } from "commander"; -import { promptInput } from "../../utils"; - -const program = new Command("app-data"); - -const DEFAULT_OPTIONS = {}; - -/*************************************************************************************** - * CLI - * @example - *************************************************************************************/ -export default program - .description("Generate a new app data repo") - // options for compare - .option("-n, --name ", "Specify name for repo", "prompt") - .option("-gh, --github_repo ", "Specify external github repo for data", "prompt") - // options copied from/passed to generate - .action(async (opts) => { - const options = { ...DEFAULT_OPTIONS, ...opts }; - const allInputOptions = program["options"]; - for (const option of allInputOptions) { - const { description, long } = option; - const key = option.long.replace("--", ""); - if (options[key] === "prompt") { - const value = await promptInput(description); - options[key] = value; - } - } - console.log("options", options); - }); - -/*************************************************************************** - * Main Methods - **************************************************************************/ - -/*************************************************************************** - * Logging and Error Handling - **************************************************************************/ -const cleanup = () => { - console.log("Cleaning up."); -}; -const handleExit = () => { - cleanup(); - console.log("Exiting without error."); - process.exit(); -}; -const handleError = (e) => { - console.error("ERROR! An error was encountered while executing"); - console.error(e); - cleanup(); - console.log("Exiting with error."); - process.exit(1); -}; -process.on("SIGINT", handleExit); -process.on("uncaughtException", handleError); - -/*************************************************************************** - * Main Methods - **************************************************************************/ - -/*************************************************************************** - * Cleanup - **************************************************************************/ -// handleExit(); - -function ensureCleanRepo() { - const gitStatus = cp.execSync(`git status --porcelain`).toString(); - if (gitStatus.trim() !== "") { - console.log("Please commit your changes before running this script!"); - console.log("Exiting because `git status` is not empty:"); - console.log(); - console.log(gitStatus); - console.log(); - process.exit(1); - } -} diff --git a/packages/scripts/src/commands/generate/index.ts b/packages/scripts/src/commands/generate/index.ts deleted file mode 100644 index cae9715d52..0000000000 --- a/packages/scripts/src/commands/generate/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -import { Command } from "commander"; - -import appDataCmd from "./app_data"; -import { logProgramHelp } from "../../utils"; - -const program = new Command("generate"); - -/** add sub-commands from child folders */ -program.addCommand(appDataCmd); - -export default program; - -// Run if called directly from Node -if (require.main === module) { - if (!process.argv.slice(2).length) { - logProgramHelp(program); - } - program.parse(process.argv); -} diff --git a/packages/scripts/src/commands/index.ts b/packages/scripts/src/commands/index.ts index c389998cfd..b43028330a 100644 --- a/packages/scripts/src/commands/index.ts +++ b/packages/scripts/src/commands/index.ts @@ -17,15 +17,7 @@ program.version("1.0.0").description("IDEMS App Scripts"); // Handle legacy command renames so can still run `yarn scripts gdrive-download` const legacyCommandMappings = { - "gdrive-download": ["app-data", "download"], - "gdrive-auth": ["app-data", "download", "--authorize"], - "decrypt-config": ["config", "decrypt"], - "encrypt-config": ["config", "encrypt"], - "sync-plh-content": ["app-data", "sync"], - "sync-single": ["app-data", "sync", "--sheetname"], - "app-data-copy": ["app-data", "copy"], - "app-data-sync": ["app-data", "sync"], - "app-data-convert": ["app-data", "convert"], + "legacy-command": ["new-command", "arg"], }; const cmdName = process.argv[2] || ""; const mapping = legacyCommandMappings[cmdName]; @@ -43,7 +35,6 @@ program.addCommand(compileCmd); program.addCommand(e2eDataCmd); program.addCommand(configCmd); program.addCommand(deploymentCmd); -// program.addCommand(generateCmd); program.addCommand(versionCmd); program.addCommand(workflowCmd); @@ -64,4 +55,17 @@ const handleError = (e) => { process.on("SIGINT", handleExit); process.on("uncaughtException", handleError); -program.parse(process.argv); +async function main() { + await program.parseAsync(process.argv); +} +main(); + +/** Allow programmatic call of command parser */ +export const parseCommand = async (cmd: string) => { + const args = [...process.argv.slice(0, 2), ...cmd.split(" ")]; + return program.parseAsync(args); +}; + +// Additional exports for direct consumption +import { extendDeploymentConfig, generateDeploymentConfig } from "./deployment/common"; +export { extendDeploymentConfig, generateDeploymentConfig }; diff --git a/packages/scripts/src/commands/workflow/index.ts b/packages/scripts/src/commands/workflow/index.ts index 689105451d..01c596a637 100644 --- a/packages/scripts/src/commands/workflow/index.ts +++ b/packages/scripts/src/commands/workflow/index.ts @@ -9,12 +9,12 @@ const program = new Command("workflow"); /** add sub-commands from child folders */ program.addCommand(runCmd); -export default program; - // Run if called directly from Node if (require.main === module) { if (!process.argv.slice(2).length) { logProgramHelp(program); } - program.parse(process.argv); + + program.parseAsync(process.argv); } +export default program; diff --git a/packages/scripts/src/commands/workflow/run.ts b/packages/scripts/src/commands/workflow/run.ts index 3397e0525d..b2d161e855 100644 --- a/packages/scripts/src/commands/workflow/run.ts +++ b/packages/scripts/src/commands/workflow/run.ts @@ -4,27 +4,34 @@ import boxen from "boxen"; import chalk from "chalk"; import path from "path"; import { Command } from "commander"; -import { IDeploymentWorkflows, IWorkflow, WORKFLOW_DEFAULTS } from "data-models"; +import { IDeploymentWorkflows, IWorkflow, WORKFLOW_DEFAULTS } from "data-models/workflows"; import ALL_TASKS from "../../tasks"; -import { logError, pad, promptOptions } from "../../utils"; -import { getActiveDeployment } from "../deployment/get"; -import { IDeploymentConfigJson } from "../deployment/set"; +import { Logger, logProgramHelp, pad, promptOptions } from "../../utils"; +import { ActiveDeployment } from "../deployment/get"; +import type { IDeploymentConfigJson } from "../deployment/common"; const program = new Command("run"); +interface IProgramOptions { + parent?: string; +} + /*************************************************************************************** * CLI * @example *************************************************************************************/ export default program .description("Run a workflow") - // options for compare .argument("[name]", "Name of workflow to run") + .allowUnknownOption() + .helpOption("--helpIgnored", "will show help from child workflow instead of this") .option("-p --parent ", "Name of parent workflow triggered by") - .action(async (name, { parent }) => { + .action(async (name, opts: IProgramOptions) => { + // pass any additional args after [name] positional argument + const args = program.args.slice(1); const runner = WorkflowRunner; await runner.init(); - return runner.run(name, parent); + return runner.run({ ...opts, name, args }); }); /*************************************************************************** @@ -35,7 +42,7 @@ export class WorkflowRunnerClass { tasks = ALL_TASKS; workflows: IDeploymentWorkflows = {}; config: IDeploymentConfigJson; - activeWorkflow = {}; + activeWorkflowOptions: { [name: string]: string | boolean } = {}; /** * @@ -44,26 +51,25 @@ export class WorkflowRunnerClass { // load default workflows this.workflows = WORKFLOW_DEFAULTS; // load custom workflows - this.config = getActiveDeployment(); - const { workflows: workflowPaths, _workspace_path } = this.config; - if (workflowPaths) { - for (const workflowPath of workflowPaths) { + this.config = ActiveDeployment.get({ ignoreMissing: true }); + const { workflow, _workspace_path } = this.config as any; + const customWorkflowFiles = []; + if (workflow) { + for (const workflowPath of customWorkflowFiles) { const ts: IDeploymentWorkflows = await import(path.resolve(_workspace_path, workflowPath)); - const workflows: IDeploymentWorkflows = ts?.default as any; - if (workflows) { - Object.entries(workflows).forEach(([name, workflow]) => { - this.workflows[name] = workflow; + const parsedWorkflows: IDeploymentWorkflows = ts?.default as any; + if (parsedWorkflows) { + Object.entries(parsedWorkflows).forEach(([name, parsedWorkflow]) => { + this.workflows[name] = parsedWorkflow; }); } } } } - /** - * - * @param name - */ - public async run(name?: string, parent?: string) { + /** Run a target workflow. If no name supplied will prompt select from list */ + public async run(options: { name?: string; parent?: string; args?: string[] }) { + let { name, parent, args } = options; if (!parent) { const heading = chalk.yellow(`${this.config.name}`); console.log(boxen(heading, { padding: 1, borderColor: "yellow" })); @@ -72,41 +78,101 @@ export class WorkflowRunnerClass { name = await this.promptWorkflowSelect(); console.log(chalk.yellow(`yarn scripts workflow run ${name}`)); } - - const workflow = this.prepareWorkflow(name); - - return this.executeWorkflow(workflow); + let { workflow, args: workflowArgs } = this.prepareWorkflow(name, args); + // if workflow supports options ensure any main process args are also parsed to populate + // and merge with existing + if (workflow.options) { + this.activeWorkflowOptions = { + ...this.activeWorkflowOptions, + ...this.parseWorkflowOptions(workflow.options), + }; + } + return this.executeWorkflow(workflow, workflowArgs); } - /** Ensure task */ - private prepareWorkflow(name: string) { - const workflow = this.workflows[name]; + /** + * Ensure named workflow exists and pass back as json + * Additionally passes child workflow if defined from args + **/ + private prepareWorkflow(name: string, args: string[] = []) { + // include manual help logging as default ignored (so can pass to child command) + if (["--help", "-h"].includes(name)) { + logProgramHelp(program); + } + let workflow = this.workflows[name]; // Ensure workflow exists if (!workflow) { const available = Object.keys(this.workflows).join(", "); const msg1 = `Workflow not found: ${name}`; const msg2 = `Available workflows: ${available}`; - logError({ msg1, msg2 }); + Logger.error({ msg1, msg2 }); } - return workflow; + // If args passed and first arg matches a child workflow name replace child workflow and args + const childWorkflowName = args[0]; + if (workflow.children && childWorkflowName && childWorkflowName in workflow.children) { + workflow = workflow.children[childWorkflowName]; + args = args.slice(1); + } + return { workflow, args }; + } + + /** + * Generate a child commander instance that can dynamically parse options as defined + * within a workflow + */ + private parseWorkflowOptions(options: IWorkflow["options"] = []) { + let parsedOptions: { [name: string]: string | boolean } = {}; + const subProgram = new Command().allowUnknownOption(); + for (const option of options) { + const { flags, description, defaultValue } = option; + subProgram.option(flags, description, defaultValue); + } + subProgram.action((o) => { + parsedOptions = o; + }); + if (process.argv.find((arg) => ["--help", "h"].includes(arg))) { + logProgramHelp(subProgram); + } + subProgram.parse(process.argv); + return parsedOptions; } - private async executeWorkflow(workflow: IWorkflow) { - this.activeWorkflow = {}; + private async executeWorkflow(workflow: IWorkflow, args: string[] = []) { + const activeWorkflow = {}; for (const step of workflow.steps) { - this.activeWorkflow[step.name] = step; + activeWorkflow[step.name] = step; console.log(chalk.yellow(`========== ${step.name} ==========`)); - const context = { config: this.config, workflow: this.activeWorkflow, tasks: this.tasks }; - const output = await step.function(context); - this.activeWorkflow[step.name].output = output; + const context = { + config: this.config, + workflow: activeWorkflow, + tasks: this.tasks, + args, + options: this.activeWorkflowOptions, + }; + let shouldProcess = true; + if (step.condition) { + shouldProcess = await step.condition(context); + } + if (shouldProcess) { + const output = await step.function(context); + if (activeWorkflow[step.name]) { + activeWorkflow[step.name].output = output; + } + // re-evaluate active deployment in case step changed it + this.config = ActiveDeployment.get({ ignoreMissing: true }); + } else { + console.log(chalk.gray("skipped")); + } } } private async promptWorkflowSelect() { - const options = Object.entries(this.workflows).map(([id, workflow]) => ({ - name: `${chalk.blueBright(pad(id, 15))} ${workflow.label}`, - value: id, - })); + const options = Object.entries(this.workflows) + .filter(([_, workflow]) => workflow.hasOwnProperty("label")) + .map(([id, workflow]) => ({ + name: `${chalk.blueBright(pad(id, 15))} ${workflow.label}`, + value: id, + })); const name = await promptOptions(options, "Select a workflow to run"); return name; } diff --git a/packages/scripts/src/paths.ts b/packages/scripts/src/paths.ts index cc998ede18..f376c3fbfc 100644 --- a/packages/scripts/src/paths.ts +++ b/packages/scripts/src/paths.ts @@ -3,14 +3,15 @@ import * as path from "path"; export const ROOT_DIR = path.resolve(__dirname, "../../../"); export const MAIN_PACKAGE_PATH = path.join(ROOT_DIR, "package.json"); -export const IDEMS_APP_CONFIG = { - path: path.resolve(ROOT_DIR, ".idems_app"), - deployments: path.resolve(ROOT_DIR, ".idems_app", "deployments"), -}; +export const DEPLOYMENTS_PATH = path.resolve(ROOT_DIR, ".idems_app", "deployments"); export const SCRIPTS_WORKSPACE_PATH = path.join(ROOT_DIR, "packages/scripts"); +export const SCRIPTS_TEST_DATA_DIR = path.join(SCRIPTS_WORKSPACE_PATH, "test", "data"); +export const SCRIPTS_LOGS_DIR = path.join(SCRIPTS_WORKSPACE_PATH, "logs"); export const DATA_MODELS_WORKSPACE_PATH = path.join(ROOT_DIR, "packages/data-models"); +export const SRC_ASSETS_PATH = path.join(ROOT_DIR, "src", "assets"); + export const CONFIG_FOLDER_PATH = path.join(SCRIPTS_WORKSPACE_PATH, "config"); export const PRIVATE_KEY_PATH = path.join(CONFIG_FOLDER_PATH, "private.key"); export const PUBLIC_KEY_PATH = path.join(CONFIG_FOLDER_PATH, "public.key"); diff --git a/packages/scripts/src/tasks/index.ts b/packages/scripts/src/tasks/index.ts index 40e59984a8..eeea0e6d7d 100644 --- a/packages/scripts/src/tasks/index.ts +++ b/packages/scripts/src/tasks/index.ts @@ -1,24 +1,36 @@ +import actions from "./providers/actions"; import android from "./providers/android"; import appData from "./providers/appData"; +import deployment from "./providers/deployment"; +import encryption from "./providers/encryption"; import file from "./providers/file"; import gdrive from "./providers/gdrive"; +import git from "./providers/git"; +import subtitles from "./providers/subtitles"; import template from "./providers/template"; import translate from "./providers/translate"; +import userInput from "./providers/userInput"; import workflow from "./providers/workflow"; /** * Tasks are thin wrappers around functions and commands, to support inclusion as part of * chained workflows * - * TODO - naming conventions should be tidied so that commands and tasks are consistend + * TODO - naming conventions should be tidied so that commands and tasks are consistent */ const ALL_TASKS = { + actions, android, appData, + deployment, + encryption, file, gdrive, + git, + subtitles, template, translate, + userInput, workflow, }; diff --git a/packages/scripts/src/tasks/providers/actions.ts b/packages/scripts/src/tasks/providers/actions.ts new file mode 100644 index 0000000000..be8a38e338 --- /dev/null +++ b/packages/scripts/src/tasks/providers/actions.ts @@ -0,0 +1,11 @@ +import { setupActions } from "actions"; +import { ActiveDeployment } from "../../commands/deployment/get"; + +class ActionsProvider { + async setup() { + const activeDeployment = ActiveDeployment.get(); + setupActions(activeDeployment); + } +} + +export default new ActionsProvider(); diff --git a/packages/scripts/src/tasks/providers/android.ts b/packages/scripts/src/tasks/providers/android.ts index c7fb0c650a..5224dd78b3 100644 --- a/packages/scripts/src/tasks/providers/android.ts +++ b/packages/scripts/src/tasks/providers/android.ts @@ -1,11 +1,93 @@ +import * as path from "path"; +import { Options, run } from "cordova-res"; +import fs from "fs"; +import { ROOT_DIR } from "../../paths"; +import { Logger } from "../../utils"; + +const set_splash_image = async (splashAssetPath: string) => { + if (!fs.existsSync(splashAssetPath)) { + return Logger.error({ + msg1: "Splash source image not found", + msg2: `A source .png file is required to generate a splash screen. No asset was found at the path supplied in the deployment config: ${splashAssetPath}.`, + }); + } + + const cordovaOptions: Options = { + directory: ROOT_DIR, + resourcesDirectory: path.join(ROOT_DIR, "resources"), + logstream: process.stdout, + platforms: { + android: { + splash: { + sources: [splashAssetPath], + }, + }, + }, + skipConfig: true, + copy: true, + projectConfig: { + android: { + directory: path.join(ROOT_DIR, "android"), + }, + }, + }; + + return await run(cordovaOptions); +}; + +const set_launcher_icon = async (options: { + iconAssetPath: string; + iconAssetForegroundPath?: string; + iconAssetBackgroundPath?: string; +}) => { + const { iconAssetPath, iconAssetForegroundPath, iconAssetBackgroundPath } = options; + + const iconSources = []; + if (fs.existsSync(iconAssetPath)) { + iconSources.push(iconAssetPath); + } else { + return Logger.error({ + msg1: "Icon source asset not found", + msg2: `A source .png file is required to be used as a fall back for when the device's android version does not support adaptive icons. No asset was found at the path supplied in the deployment config: ${iconAssetPath}.`, + }); + } + + const includeAdaptiveIcons = + fs.existsSync(iconAssetForegroundPath) && fs.existsSync(iconAssetBackgroundPath); + + const cordovaOptions: Options = { + directory: ROOT_DIR, + resourcesDirectory: path.join(ROOT_DIR, "resources"), + logstream: process.stdout, + platforms: { + android: includeAdaptiveIcons + ? { + "adaptive-icon": { + icon: { sources: iconSources }, + foreground: { sources: [iconAssetForegroundPath] }, + background: { sources: [iconAssetBackgroundPath] }, + }, + } + : { icon: { sources: iconSources } }, + }, + skipConfig: true, + copy: true, + projectConfig: { + android: { + directory: path.join(ROOT_DIR, "android"), + }, + }, + }; + + return await run(cordovaOptions); +}; + const add_assets = () => null; -const set_launcher_icon = () => null; -const set_splash_image = () => null; const set_app_meta = () => null; export default { // add_assets, - // set_launcher_icon, - // set_splash_image, + set_launcher_icon, + set_splash_image, // set_app_meta, }; diff --git a/packages/scripts/src/tasks/providers/appData.ts b/packages/scripts/src/tasks/providers/appData.ts index 1e3aadad47..2bc17704b5 100644 --- a/packages/scripts/src/tasks/providers/appData.ts +++ b/packages/scripts/src/tasks/providers/appData.ts @@ -1,42 +1,53 @@ -import { spawnSync } from "child_process"; +import { writeFileSync } from "fs-extra"; +import path from "path"; +import { parseCommand } from "../../commands"; +import { WorkflowRunner } from "../../commands/workflow/run"; +import { SRC_ASSETS_PATH } from "../../paths"; +import { IContentsEntry, replicateDir } from "../../utils"; -// const qualityCheckAssets = () => {}; +/** Prepare sourcely cached assets for population to app */ +const postProcessAssets = (options: { sourceAssetsFolder: string }) => { + const { sourceAssetsFolder } = options; + let args = `--source-assets-folder ${sourceAssetsFolder}`; + let cmd = `app-data post-process assets ${args}`; -/** - * - */ -const copy = (options: { - localSheetsFolder?: string; - localAssetsFolder?: string; - localTranslationsFolder?: string; - appSheetsFolder?: string; - appAssetsFolder?: string; - appTranslationsFolder?: string; -}) => { - const scriptsExec = `yarn workspace scripts start`; - - const { - localAssetsFolder, - localSheetsFolder, - localTranslationsFolder, - appAssetsFolder, - appSheetsFolder, - appTranslationsFolder, - } = options; + parseCommand(`${cmd}`); +}; - let args = ``; - if (localAssetsFolder) - args += ` --local-assets-folder ${localAssetsFolder} --app-assets-folder ${appAssetsFolder}`; - if (!localAssetsFolder) args += ` --skip-assets `; - if (localSheetsFolder) - args += ` --local-sheets-folder ${localSheetsFolder} --app-sheets-folder ${appSheetsFolder}`; - if (!localSheetsFolder) args += ` --skip-sheets `; - if (localTranslationsFolder) - args += ` --local-translations-folder ${localTranslationsFolder} --app-translations-folder ${appTranslationsFolder}`; +/** Prepare sourcely cached seets for population to app */ +const postProcessSheets = (options: { + sourceSheetsFolder: string; + sourceTranslationsFolder: string; +}) => { + const { sourceSheetsFolder, sourceTranslationsFolder } = options; + let args = `--source-sheets-folder ${sourceSheetsFolder} --source-translations-folder ${sourceTranslationsFolder}`; + let cmd = `app-data post-process sheets ${args}`; + parseCommand(`${cmd}`); +}; - let copyCmd = `app-data copy ${args}`; +/** + * Copy data from source deployment folder to running app assets folder + */ +const copyDeploymentDataToApp = () => { + const { app_data } = WorkflowRunner.config; + const copiedFolders = ["assets", "sheets", "translations"]; + // omit index files + const filter_fn = (entry: IContentsEntry) => { + const [baseDir] = entry.relativePath.split("/"); + return copiedFolders.includes(baseDir); + }; + const source = app_data.output_path; + const target = path.resolve(SRC_ASSETS_PATH, "app_data"); + replicateDir(source, target, { filter_fn }); - spawnSync(`${scriptsExec} ${copyCmd}`, { stdio: "inherit", shell: true }); + // HACK - Angular webpack won't always live-reload when changes only made to asset files + // so write an arbitrary variable that can be imported into the app and will trigger reload + // https://github.com/angular/angular-cli/issues/22751 + // https://github.com/webpack/webpack-dev-server/issues/3794 + writeFileSync( + path.resolve(target, "index.ts"), + `export const DEV_COMPILE_TIME = ${new Date().getTime()}` + ); }; -export default { copy }; +export default { postProcessAssets, postProcessSheets, copyDeploymentDataToApp }; diff --git a/packages/scripts/src/tasks/providers/deployment.ts b/packages/scripts/src/tasks/providers/deployment.ts new file mode 100644 index 0000000000..8b4548dd97 --- /dev/null +++ b/packages/scripts/src/tasks/providers/deployment.ts @@ -0,0 +1,25 @@ +import { promptInput } from "../../utils"; + +import { createDeployment } from "../../commands/deployment/create"; +import { importRepo } from "../../commands/deployment/import"; +import { DeploymentSet } from "../../commands/deployment/set"; + +class DeploymentProvider { + /** Create a new app deployment configuration */ + async create() { + return createDeployment(); + } + + async set(name = "") { + return new DeploymentSet().setActiveDeployment(name); + } + + async import(remoteRepo?: string) { + if (!remoteRepo) { + remoteRepo = await promptInput("Specify url to remote git repo"); + } + return importRepo(remoteRepo); + } +} + +export default new DeploymentProvider(); diff --git a/packages/scripts/src/tasks/providers/encryption.ts b/packages/scripts/src/tasks/providers/encryption.ts new file mode 100644 index 0000000000..1c6c3f8aaa --- /dev/null +++ b/packages/scripts/src/tasks/providers/encryption.ts @@ -0,0 +1,213 @@ +import chalk from "chalk"; +import { + existsSync, + mkdirSync, + readdirSync, + readFileSync, + statSync, + utimesSync, + writeFileSync, +} from "fs-extra"; +import NodeRSA from "node-rsa"; +import { basename, resolve } from "path"; +import { ActiveDeployment } from "../../commands/deployment/get"; +import { DEPLOYMENTS_PATH } from "../../paths"; +import { logOutput, promptConfirmation, promptEditorInput } from "../../utils"; + +/** Suffix added to all encrypted files to distinguish from originals */ +const ENCRYPTED_SUFFIX = "crypt"; + +/** Expressions to populate to gitignore when creating new encryption folder */ +const GIT_IGNORE_LIST = ["*.crypt", ".gitignore", "public.key"]; + +class EncryptionProvider { + private publicKeyPath: string; + private publicKey: NodeRSA; + private privateKeyPath: string; + private privateKey: NodeRSA; + + /** Check folder files and process any files requiring encryption */ + public async encrypt(deploymentName = "") { + if (!deploymentName) { + deploymentName = ActiveDeployment.get().name; + } + const folderPath = resolve(DEPLOYMENTS_PATH, deploymentName, "encrypted"); + await this.setupEncryptionFolders(folderPath, "encrypt"); + let counter = 0; + const files = this.listEncryptionFolderFiles(folderPath); + for (const { filePath } of files) { + if (this.shouldEncryptFile(filePath)) { + this.encryptFile(filePath); + counter++; + } + } + if (counter > 0) { + logOutput({ msg1: `${counter} files encrypted`, msg2: folderPath }); + } else { + console.log(chalk.gray("Files already encrypted")); + } + } + + /** Check folder files and process any files requiring decryption */ + public async decrypt(deploymentName = "") { + if (!deploymentName) { + deploymentName = ActiveDeployment.get().name; + } + const folderPath = resolve(DEPLOYMENTS_PATH, deploymentName, "encrypted"); + // Return if deployment does not use encryption + if (!existsSync(folderPath)) { + return; + } + await this.setupEncryptionFolders(folderPath, "decrypt"); + let counter = 0; + const files = this.listEncryptionFolderFiles(folderPath); + for (const { filePath } of files) { + if (this.shouldDecryptFile(filePath)) { + this.decryptFile(filePath); + counter++; + } + } + if (counter > 0) { + logOutput({ msg1: `${counter} files decrypted`, msg2: folderPath }); + } else { + console.log(chalk.gray("Files already decrypted")); + } + } + + private listEncryptionFolderFiles(folderPath: string) { + return readdirSync(folderPath, { withFileTypes: true }) + .filter((f) => f.isFile()) + .map((f) => ({ fileName: f.name, filePath: resolve(folderPath, f.name) })); + } + + private encryptFile(filePath: string) { + if (!this.publicKey) { + const publicKeyData = readFileSync(this.publicKeyPath); + this.publicKey = new NodeRSA().importKey(publicKeyData, "public"); + } + const decryptedData = readFileSync(filePath); + const encryptedData = this.publicKey.encrypt(decryptedData); + const encryptedFilePath = `${filePath}.${ENCRYPTED_SUFFIX}`; + writeFileSync(encryptedFilePath, encryptedData); + replicateFileTimes(filePath, encryptedFilePath); + } + + private decryptFile(filePath: string) { + if (!this.privateKey) { + const privateKeyData = readFileSync(this.privateKeyPath); + this.privateKey = new NodeRSA().importKey(privateKeyData, "private"); + } + const encryptedData = readFileSync(filePath); + const decryptedData = this.privateKey.decrypt(encryptedData); + const decryptedFilePath = filePath.replace(`.${ENCRYPTED_SUFFIX}`, ""); + writeFileSync(decryptedFilePath, decryptedData); + replicateFileTimes(filePath, decryptedFilePath); + } + + /** + * Ensure /encryption folder exists for deployment with private encryption key + * Prompts user to create if not existing + * */ + private async setupEncryptionFolders(folderPath: string, operation: "encrypt" | "decrypt") { + // Check encryption folder + if (!existsSync(folderPath)) { + const shouldCreate = await promptConfirmation( + "No encrypted folder exists\nWould you like to create one?" + ); + if (shouldCreate) { + this.createEncryptionFolder(folderPath); + generateEncryptionKeys(folderPath); + } else { + process.exit(0); + } + } + // Check private key (required for decryption) + this.privateKeyPath = resolve(folderPath, "private.key"); + if (!existsSync(this.privateKeyPath) && operation === "decrypt") { + await this.promptPrivateKeyInput(); + } + // Check public key (required for encryption) + this.publicKeyPath = resolve(folderPath, "public.key"); + if (!existsSync(this.publicKeyPath) && operation === "encrypt") { + const shouldCreate = await promptConfirmation( + "No encryption key found\nWould you like to create one?" + ); + if (shouldCreate) { + generateEncryptionKeys(folderPath); + } else { + process.exit(0); + } + } + } + + /** + * Encrypt files if encrypted version does not already exist with same mtime + * Only processes files not already encrypted, and not intended as public from gitignore + **/ + private shouldEncryptFile(filePath: string) { + const filename = basename(filePath); + if (GIT_IGNORE_LIST.includes(filename)) return false; + if (filename === "private.key") return false; + if (filename.endsWith(`.${ENCRYPTED_SUFFIX}`)) return false; + // Check if encrypted version already exists and up-to-date + const encryptedFilePath = `${filePath}.${ENCRYPTED_SUFFIX}`; + if (!existsSync(encryptedFilePath)) return true; + return statSync(encryptedFilePath).mtime.getTime() !== statSync(filePath).mtime.getTime(); + } + + /** + * Decrypt files if decrypted does not already exist with same mtime + * Only processes files ending `.crypt` + * */ + private shouldDecryptFile(filePath: string) { + const filename = basename(filePath); + if (!filename.endsWith(`.${ENCRYPTED_SUFFIX}`)) return false; + const decryptedFilePath = filePath.replace(`.${ENCRYPTED_SUFFIX}`, ""); + if (!existsSync(decryptedFilePath)) return true; + return statSync(decryptedFilePath).mtime.getTime() !== statSync(filePath).mtime.getTime(); + } + + private createEncryptionFolder(folderPath: string) { + mkdirSync(folderPath); + const gitIgnorePath = resolve(folderPath, ".gitignore"); + const gitignoreTemplate = ` + *.* + ${GIT_IGNORE_LIST.map((name) => `!${name}`).join("\n")} + ` + .replace(/ /g, "") + .trim(); + writeFileSync(gitIgnorePath, gitignoreTemplate); + } + + /** Prompt user to input their private key via a text editor and save */ + private async promptPrivateKeyInput() { + const privateKeyText: string = await promptEditorInput( + `\n\nA private key is required to decrypt config. + Paste private key contents into the editor, save and close\n\n`.replace(/ /g, "") + ); + if (!privateKeyText) process.exit(0); + writeFileSync(this.privateKeyPath, privateKeyText.trim()); + } +} + +/************************************************************************* + * Utils + *************************************************************************/ + +function replicateFileTimes(source: string, target: string) { + const { atime, mtime } = statSync(source); + utimesSync(target, atime, mtime); +} + +function generateEncryptionKeys(folderPath: string) { + const key = new NodeRSA({ b: 512 }); + const publicKeyPath = resolve(folderPath, "public.key"); + const privateKeyPath = resolve(folderPath, "private.key"); + writeFileSync(publicKeyPath, key.exportKey("public")); + writeFileSync(privateKeyPath, key.exportKey("private")); + logOutput({ + msg1: "New encryption key created\nYou should keep a backup of this and only share with trusted collaborators", + msg2: privateKeyPath, + }); +} +export default new EncryptionProvider(); diff --git a/packages/scripts/src/tasks/providers/file.ts b/packages/scripts/src/tasks/providers/file.ts index e4609508d4..a8f6d36e82 100644 --- a/packages/scripts/src/tasks/providers/file.ts +++ b/packages/scripts/src/tasks/providers/file.ts @@ -1,6 +1,41 @@ +import fs from "fs-extra"; +import chokidar from "chokidar"; +import { generateFolderFlatMap, replicateDir } from "../../utils"; +import { resolve } from "path"; + +const remove = (options: { src: string }) => fs.removeSync(options.src); const filter = (options: { src: string; target?: string }) => null; -const copy = (options: { src: string; target: string }) => null; +const replicate = replicateDir; + +const copy = (options: { src: string; target: string; copyOptions?: fs.CopyOptionsSync }) => + fs.copySync(options.src, options.target, options.copyOptions || {}); + +/** Create an _contents.json file of folder contents */ +const writeFolderContents = (options: { src: string }) => { + const contents = generateFolderFlatMap(options.src, { filterFn: (p) => p !== "_contents.json" }); + const targetFile = resolve(options.src, "_contents.json"); + fs.writeJSONSync(targetFile, contents); +}; + +const watchFolder = (options: { src: string | string[]; onUpdate: (path: string) => void }) => { + const watcher = chokidar + .watch(options.src, { + ignoreInitial: false, + awaitWriteFinish: true, + }) + .on("change", (path, stats) => { + options.onUpdate(path); + }); + + console.log("watching for changes to files...", options.src); + process.on("SIGINT", () => watcher.close().then(() => process.exit(0))); +}; export default { - // filter, copy + remove, + copy, + watchFolder, + writeFolderContents, + filter, + replicate, }; diff --git a/packages/scripts/src/tasks/providers/gdrive.ts b/packages/scripts/src/tasks/providers/gdrive.ts index 0a89d8970c..64a71697dd 100644 --- a/packages/scripts/src/tasks/providers/gdrive.ts +++ b/packages/scripts/src/tasks/providers/gdrive.ts @@ -1,35 +1,121 @@ -import { spawnSync } from "child_process"; +import chalk from "chalk"; +import { spawn, spawnSync } from "child_process"; +import chokidar from "chokidar"; +import { existsSync, removeSync } from "fs-extra"; import path from "path"; + import { WorkflowRunner } from "../../commands/workflow/run"; import { AUTH_TOKEN_PATH, CREDENTIALS_PATH } from "../../paths"; +const authorize = () => { + // remove any pre-existing auth token + const authTokenPath = getAuthTokenPath(); + if (existsSync(authTokenPath)) { + removeSync(authTokenPath); + } + gdriveExec("authorize"); +}; + /** * * @param options * @returns path to output files * } */ -const download = (options: { folderId: string }) => { - const { folderId } = options; +const download = (options: { folderId: string; filterFn?: any }) => { + const { folderId, filterFn } = options; + const outputPath = getOutputFolder(folderId); + let dlArgs = `--folder-id ${folderId} --output-path "${outputPath}" --log-name "${folderId}.log"`; + if (filterFn) { + const filterFnBase64 = Buffer.from(filterFn.toString()).toString("base64"); + dlArgs += ` --filter-function-64 "${filterFnBase64}"`; + } + gdriveExec("download", dlArgs); + return outputPath; +}; + +/** + * Execute a google drive workspace command + * Populates common args such as auth and credential token paths + */ +const gdriveExec = (cmd: string, args: string = "", sync = true) => { + const authTokenPath = getAuthTokenPath(); + // Can also check if really need folder ID (or just pass deployment config)... probably do for sheets vs assets + const commonArgs = `--credentials-path "${CREDENTIALS_PATH}" --auth-token-path "${authTokenPath}"`; + const gdriveToolsBin = `yarn workspace @idemsInternational/gdrive-tools start`; + const fullCommand = `${gdriveToolsBin} ${cmd} ${commonArgs} ${args}`; + console.log(chalk.gray(fullCommand)); + return sync + ? spawnSync(fullCommand, { stdio: "inherit", shell: true }) + : spawn(fullCommand, { stdio: "inherit", shell: true }); +}; + +const getOutputFolder = (folderId: string) => { + const { _workspace_path } = WorkflowRunner.config; + return path.resolve(_workspace_path, "tasks", "gdrive", "outputs", folderId); +}; + +const getAuthTokenPath = () => { const { config } = WorkflowRunner; const { _workspace_path } = config; const { auth_token_path } = config.google_drive; const authTokenPath = auth_token_path ? path.resolve(_workspace_path, auth_token_path) : AUTH_TOKEN_PATH; + return authTokenPath; +}; - const outputPath = path.resolve(_workspace_path, "tasks", "gdrive", "outputs", folderId); - - const commonArgs = `--credentials-path "${CREDENTIALS_PATH}" --auth-token-path "${authTokenPath}"`; - - const dlArgs = `--folder-id ${folderId} --output-path "${outputPath}" --log-name ${folderId}.log"`; +/** + * Present options for configuring google drive liveReload + * This can automatically watch for changes to folders and pass back to listener + * @param options.folderId Google Drive folder id to watch for changes + * @param options.onUpdate Handler to respond to file updates + * @param optons.customCommands Additional commands to make available to CLI + */ +const liveReload = async (options: { + folderId: string; + onUpdate?: (filepath: string) => void; + customCommands?: IWatchCommand[]; +}) => { + const { folderId } = options; + const outputPath = getOutputFolder(folderId); + const dlArgs = `--folder-id ${folderId} --output-path "${outputPath}" --log-name "${folderId}.log"`; + const child = gdriveExec("watch", dlArgs, false); - const gdriveToolsExec = `yarn workspace @idemsInternational/gdrive-tools start`; + // As it's not easy to communicate directly with spawned child, instead + // set-up a file watcher for locally updated files + const watcher = chokidar + .watch(outputPath, { ignoreInitial: true, awaitWriteFinish: true }) + .on("change", (e, stats) => { + options.onUpdate(e); + }); + process.on("SIGINT", () => watcher.close().then(() => process.exit(0))); +}; - const cmd = `${gdriveToolsExec} download ${commonArgs} ${dlArgs}`; +// WiP - allow manual intervention to force actions +function addUserInputCommands() { + // const watchCommands: IWatchCommand[] = [ + // ...(options.customCommands || []), + // { + // keybinding: "w", + // name: "Toggle Sheets Watch", + // command: async () => null, + // }, + // { + // keybinding: "q", + // name: "Quit", + // command: async () => process.exit(0), + // }, + // ]; + // const prompts = watchCommands.map((v) => ({ name: v.name, value: v })); + // const selected = await promptOptions(prompts, "Sync Options"); + // await selected.command(); +} - spawnSync(cmd, { stdio: "inherit", shell: true }); - return outputPath; -}; +interface IWatchCommand { + keybinding: string; + name: string; + command: () => Promise; +} -export default { download }; +export default { authorize, download, liveReload, getOutputFolder }; diff --git a/packages/scripts/src/tasks/providers/git.ts b/packages/scripts/src/tasks/providers/git.ts new file mode 100644 index 0000000000..18d461b521 --- /dev/null +++ b/packages/scripts/src/tasks/providers/git.ts @@ -0,0 +1,282 @@ +import chalk from "chalk"; +import fs from "fs-extra"; +import path from "path"; +import semver from "semver"; +import simpleGit, { ResetMode } from "simple-git"; +import type { SimpleGit, FileStatusResult } from "simple-git"; +import { Project, SyntaxKind } from "ts-morph"; +import { ActiveDeployment } from "../../commands/deployment/get"; +import { Logger, logOutput, openUrl, promptOptions } from "../../utils"; +import type { IDeploymentConfigJson } from "../../commands/deployment/common"; + +class GitProvider { + private git: SimpleGit; + private deployment: IDeploymentConfigJson; + + /** + * NOTE - as constructor not used all public api endpoints should call initialiseGitProvider() + **/ + constructor() {} + + /** Access git clone methods directly independent of deployment */ + public async cloneRepo(repoPath: string, localPath: string) { + const git = simpleGit(); + return git.clone(repoPath, localPath); + } + + /** Pull latest content from remote repo into local branch. Attempt to resolve any conflicts */ + public async refreshRemoteRepo() { + await this.initialiseGitProvider(); + console.log(chalk.gray("checkout [main]")); + try { + await this.git.checkout("main"); + await this.git.pull("origin", "main"); + } catch (error) { + // If merge conflict prompt to discard local changes and retry + console.log(chalk.red(error.message)); + const mergeErrorMsg = "Your local changes to the following files would be overwritten"; + if (error.message.includes(mergeErrorMsg)) { + const shouldDiscard = await promptOptions( + [ + { name: "No", value: false }, + { name: "Yes", value: true }, + ], + "Would you like to discard local changes and retry?" + ); + if (shouldDiscard) { + await this.git.reset(ResetMode.SOFT, ["HEAD"]); + await this.git.stash(["--keep-index", "--include-untracked"]); + await this.refreshRemoteRepo(); + } + } + } + console.log(chalk.gray("branch up-to-date")); + } + + public async createContentRelease() { + await this.initialiseGitProvider(); + console.log("Preparing files..."); + await this.promptChangesReview(); + const revertTagName = this.deployment.git.content_tag_latest; + const tagName = await this.promptReleaseTag(); + + // apply changes + await this.updateGitConfigTs({ content_tag_latest: tagName }); + + const branchName = `content/${tagName}`; + const repoUrl = this.deployment.git.content_repo.replace(".git", ""); + const compareLink = `${repoUrl}/compare/main...${branchName}`; + await this.prepareReleaseBranch(branchName, compareLink); + await this.git.add("./*"); + await this.git.commit(`content: ${tagName}`); + await this.git.addTag(tagName); + console.log("pushing changes"); + try { + await this.git.push("origin", branchName); + logOutput({ + msg1: "Content uploaded successfully", + msg2: "Use browser to complete Pull Request", + }); + console.log(chalk.gray(compareLink)); + await openUrl(compareLink); + } catch (error) { + Logger.error({ msg1: "Failed to push to repo", msg2: error.message, logOnly: true }); + console.log("reverting changes"); + // Rollback changes + // Reset previous commit, revert config ts change, checkout main, unstage files, delete created tag + await this.git.reset(ResetMode.SOFT, ["HEAD~1"]); + await this.updateGitConfigTs({ content_tag_latest: revertTagName }); + await this.git.reset(["--"]); + await this.git.checkout("main"); + await this.git.tag(["--delete", tagName]); + } + + // open PR + } + + /** + * TODO - Octokit api requires auth, so will need to come up with appropriate handling + * TODO - Alt could use github actions and assume link should go valid + * TODO - Alt could be to use GH cli (require install and auth) + */ + private async wipCreateReleasePr(head: string, base = "main", body: string) { + // const [owner, repo] = this.deployment.git.content_repo.split("/").slice(-2); + // const res = await new Octokit({}).rest.pulls.create({ owner, repo, base, head, body }); + // console.log(res) + } + + private async prepareReleaseBranch(branchName: string, compareLink: string) { + // Ensure existing release does not already exist for tag + if (await this.checkRemoteBranchExists(branchName)) { + console.log(chalk.gray(compareLink)); + Logger.error({ msg1: "A branch already exists for this release" }); + } + if (await this.checkLocalBranchExists(branchName)) { + await this.git.deleteLocalBranch(branchName, true); + } + await this.git.checkoutLocalBranch(branchName); + } + + /** Stage all changes and show a summary */ + private async promptChangesReview() { + // Stage files to show summary + await this.git.add("."); + const status = await this.git.status(); + if (status.files.length === 0) { + logOutput({ msg1: "No files have been changed, skipping" }); + process.exit(0); + } + console.log(chalk.blueBright("\nChanges Summary")); + this.logChangesSummary(status.files); + console.log(""); + return status; + } + + private logChangesSummary(fileChanges: FileStatusResult[]) { + const statusIcons = { + A: chalk.bgGreen.white(" A "), + D: chalk.bgRed.white(" D "), + M: chalk.bgBlue.white(" M "), + U: chalk.bgGray.white(" U "), + }; + const changes = []; + for (const { index, path: filePath } of fileChanges) { + changes.push(`${statusIcons[index] || index} ${filePath}`); + } + console.log(changes.join("\n")); + } + + private async promptReleaseTag() { + const { git } = this.deployment; + const currentContentTag = git.content_tag_latest || "1.0.0"; + const releaseTypes: semver.ReleaseType[] = ["patch", "minor", "major"]; + const options = releaseTypes.map((releaseType) => { + const version = semver.inc(currentContentTag, releaseType); + return { name: `${releaseType} (${version})`, value: version }; + }); + const nextTag = await promptOptions(options, "Specify a version tag"); + return nextTag; + } + + /** + * Update the workflow config.ts git child property directly by parsing and updating ts nodes + * https://stackoverflow.com/questions/61213501/read-and-update-object-with-typescript-compiler-api + */ + private async updateGitConfigTs(update: Partial) { + // Setup ts reader + const project = new Project(); + const { _config_ts_path } = this.deployment; + const sourceFile = project.addSourceFileAtPath(_config_ts_path); + + // git config should exist in config file under a config.git = {...} assignment + const assigner = "config.git"; + + // search for expressions which represent variable assignment, e.g. config.git = {...} + const expressions = sourceFile.getDescendantsOfKind(SyntaxKind.ExpressionStatement); + const configGitNode = expressions.find((e) => e.getText().includes(assigner)); + + if (!configGitNode) { + Logger.error({ + msg1: `Could not find [${assigner}] assignment in config file`, + msg2: _config_ts_path, + }); + } + + /** Debugging */ + // for (const expression of configGitNode.getDescendants()) { + // console.log({ descendent: descendent.constructor.name, text: descendent.getText() }); + // } + + const editableNode = configGitNode.getFirstDescendantByKindOrThrow( + SyntaxKind.ObjectLiteralExpression + ); + + /** LEGACY - config assignment all in single expression, i.e. config = { ... } */ + // const configNode = sourceFile.getVariableDeclarationOrThrow("config"); + // const gitConfigNode = configNode + // .getInitializerIfKindOrThrow(SyntaxKind.ObjectLiteralExpression) + // .getPropertyOrThrow("git") as PropertyAssignment; + // const editableNode = gitConfigNode.getInitializerIfKindOrThrow( + // SyntaxKind.ObjectLiteralExpression + // ); + + const indentSize = editableNode.getChildIndentationLevel(); + // Update individual values + // TODO - only supports string literal values + for (const [name, value] of Object.entries(update)) { + const childNode = editableNode.getProperty(name); + if (childNode) { + const stringLiteralNode = childNode.getFirstChildByKindOrThrow(SyntaxKind.StringLiteral); + stringLiteralNode.replaceWithText((writer) => writer.quote(value)); + } else { + editableNode + .addPropertyAssignment({ + name, + initializer: (writer) => writer.quote(value), + }) + .formatText({ indentSize }); + } + } + await project.save(); + } + + private async checkRemoteBranchExists(name: string) { + const remote = await this.git.listRemote(["--heads", "origin", `${name}`]); + return remote ? true : false; + } + private async checkLocalBranchExists(name: string) { + const localBranches = await this.git.branchLocal(); + return localBranches.all.includes(name); + } + + /** + * Ensure git configured for workspace and return configured git provider + * + * NOTE - as async cannot be called in constructor and so should be called first + * from any public api methods + * */ + private async initialiseGitProvider() { + if (this.git) { + return; + } + this.deployment = ActiveDeployment.get(); + const { _workspace_path, git, _config_ts_path } = this.deployment; + if (!git?.content_repo) { + Logger.error({ + msg1: "No git content repo configured, specify in config", + msg2: _config_ts_path, + }); + } + if (!_workspace_path) { + Logger.error({ + msg1: "No active deployment specified", + msg2: "yarn workflow deployment set", + }); + } + // Ensure git initialised with correct remote + this.git = simpleGit(_workspace_path); + if (!fs.existsSync(path.join(_workspace_path, ".git"))) { + await this.git.init(); + } + const remotes = await this.git.getRemotes(true); + if (!remotes.find((remote) => remote.refs.fetch === git.content_repo)) { + for (const remote of remotes) { + await this.git.removeRemote(remote.name); + } + await this.git.addRemote("origin", git.content_repo); + } + await this.git.fetch(); + // TODO - handle case where local changes exist that would conflict with checkout + // TODO - likely remove any app-data changes + // await this.git.reset([ResetMode.SOFT]); + } +} +// Export class without initialisation to avoid constructor call until required +export default () => new GitProvider(); + +function formatTimestamp(d = new Date()) { + let year = d.getFullYear(); + let month = ("0" + (d.getMonth() + 1)).slice(-2); + let day = ("0" + d.getDate()).slice(-2); + return `${year}-${month}-${day}`; +} diff --git a/packages/scripts/src/tasks/providers/subtitles.ts b/packages/scripts/src/tasks/providers/subtitles.ts new file mode 100644 index 0000000000..1c0aae9467 --- /dev/null +++ b/packages/scripts/src/tasks/providers/subtitles.ts @@ -0,0 +1,132 @@ +import chalk from "chalk"; +import fs from "fs"; +import * as path from "path"; +import parser from "subtitles-parser-vtt"; +import { ROOT_DIR } from "../../paths"; +import { recursiveFindByExtension, Logger, logOutput, promptOptions } from "../../utils"; + +// This is an interim solution for manually generating translated .vtt files, +// to be used pending reworking the translations repo/pipeline to handle assets more generally +// Generated files must be manually added to Google Drive +const translateAllVttFilesAndSave = async ( + translationsPath: string, + assetsFolder: string, + assetsSubpath?: string, + languageCode?: string +) => { + // Use translations already generated and populated to app + // TODO - in the future this could likely be refactored to run from deployment folder + const translationsFolder = path.resolve(ROOT_DIR, "src", "assets", "app_data", "translations"); + const allLanguageCodes = fs + .readdirSync(translationsFolder, { withFileTypes: true }) + .filter((d) => d.isDirectory()) + .map((d) => d.name); + + if (!languageCode) { + languageCode = await promptOptions( + allLanguageCodes, + "Select a target language for which the translated strings exist" + ); + } + const vttFilepaths = findVttFiles(assetsFolder, assetsSubpath); + const outputFiles = []; + for (const vttFilepath of vttFilepaths) { + const vttJson = await vttToJson(vttFilepath); + const translatedJson = await translateJson(vttJson, languageCode, translationsPath); + const outputPath = await saveJsonToVtt(vttFilepath, translatedJson, languageCode, assetsFolder); + outputFiles.push(outputPath); + } + if (outputFiles.length) { + logOutput({ + msg1: "Translated .vtt files generated", + msg2: "Translated files can be found at the path(s) below. Please manually add to Google Drive in the respective folder(s)", + }); + console.log(outputFiles); + } else { + Logger.error({ + msg1: "No files generated", + }); + } +}; + +// Looks in assets folder for .vtt files, converts them to json +// and saves the result in the translationSourcesStrings path, +// ready to be sent to the translation system +const copyVttFilesForTranslation = async ( + assetsFolder: string, + assetsSubpath: string, + translationSourceStringsPath: string +) => { + const vttFilepaths = findVttFiles(assetsFolder, assetsSubpath); + for (const vttFile of vttFilepaths) { + await vttToJsonFile(vttFile, translationSourceStringsPath); + } +}; + +const findVttFiles = (sourceFolder, subpath?: string) => { + const folderPath = subpath ? path.join(sourceFolder, subpath) : sourceFolder; + const result = recursiveFindByExtension(folderPath, "vtt"); + if (!result.length) { + Logger.error({ + msg1: "No files found", + msg2: "No VTT files found in target folder", + }); + } + return result; +}; + +const vttToJson = async (sourcePath: string) => { + const vtt = fs.readFileSync(sourcePath).toString(); + const data = parser.fromVtt(vtt); + return data; +}; + +// Without access to the translate service from within these workflows, +// this hack applies the translations to a subtitles json specifically +const translateJson = async ( + data: parser.Subtitle[], + languageCode: string, + translationsPath: string +) => { + const translationStringsPath = path.join(translationsPath, languageCode, "strings.json"); + const translationStrings = JSON.parse(fs.readFileSync(translationStringsPath).toString()); + for (const cue of data) { + const translatedString = translationStrings[cue.text]; + if (translatedString === undefined) { + console.log(chalk.grey(translationStringsPath)); + return Logger.error({ + msg1: `No [${languageCode}] translations found for cue text`, + msg2: cue.text, + }); + } + cue.text = translatedString; + } + return data; +}; + +const saveJsonToVtt = async (vttFilepath, data, languageCode, assetsFolder) => { + const filename = path.basename(vttFilepath); + const enclosingFolder = path.basename(path.dirname(vttFilepath)); + const destinationPath = path.join(assetsFolder, languageCode, enclosingFolder, filename); + const vtt = parser.toVtt(data); + const vttWithHeader = "WEBVTT\n\n" + vtt; + fs.writeFileSync(destinationPath, vttWithHeader); + return destinationPath; +}; + +const vttToJsonFile = async (vttPath: string, outputFolder: string) => { + const fullPath = path.resolve(ROOT_DIR, vttPath); + const filename = path.basename(fullPath, path.extname(fullPath)); + const vttJson = await vttToJson(fullPath); + // change "text" key to "value" to match what is expected by the translation repo + for (const cue of vttJson) { + cue.value = cue.text; + delete cue.text; + } + fs.writeFileSync(path.join(outputFolder, `${filename}.json`), JSON.stringify(vttJson)); +}; + +export default { + translateAllVttFilesAndSave, + copyVttFilesForTranslation, +}; diff --git a/packages/scripts/src/tasks/providers/template.ts b/packages/scripts/src/tasks/providers/template.ts index a91d015b7d..93b3b0a687 100644 --- a/packages/scripts/src/tasks/providers/template.ts +++ b/packages/scripts/src/tasks/providers/template.ts @@ -2,6 +2,7 @@ import { spawnSync } from "child_process"; import path from "path"; import { WorkflowRunner } from "../../commands/workflow/run"; +/** Process all templates within a folder */ const process = (options: { inputFolder: string }) => { const { _workspace_path } = WorkflowRunner.config; @@ -19,4 +20,14 @@ const process = (options: { inputFolder: string }) => { return outputFolder; }; -export default { process }; +/** WiP - allow processing of just a single template file */ +const processIndividualFile = (options: { inputFile: string }) => { + // const { inputFile } = options; + // const inputFolder = createTemporaryFolder(); + // // TODO - want to check against cache and detect what sheet actually changed + // const targetFilePath = path.resolve(inputFolder, path.basename(inputFile)); + // fs.copyFileSync(inputFile, targetFilePath); + // return process({ inputFolder }); +}; + +export default { process, processIndividualFile }; diff --git a/packages/scripts/src/tasks/providers/translate.ts b/packages/scripts/src/tasks/providers/translate.ts index 1612fcfa20..de05ee24aa 100644 --- a/packages/scripts/src/tasks/providers/translate.ts +++ b/packages/scripts/src/tasks/providers/translate.ts @@ -1,8 +1,7 @@ import path from "path"; -import fs from "fs-extra"; import { spawnSync } from "child_process"; import { WorkflowRunner } from "../../commands/workflow/run"; -import { logError, recursiveFindByExtension } from "../../utils"; +import { Logger } from "../../utils"; /** * Apply translations to sheets @@ -26,7 +25,7 @@ const apply = (options: { inputFolder: string }) => { shell: true, }); if (status === 1) { - logError({ msg1: "Translations failed", msg2: stderr.toString() }); + Logger.error({ msg1: "Translations failed", msg2: stderr.toString() }); } // Returns path to both compiled strings and translated sheets return { @@ -35,23 +34,6 @@ const apply = (options: { inputFolder: string }) => { }; }; -/** - * Copy all files for translation from local cache folder to global folder - * Removes nested folder structure to create single folder output - * @param options - */ -const copyContentForTranslators = (options: { inputFolder: string }) => { - const { source_strings_path: outputFolder } = WorkflowRunner.config.translations; - fs.ensureDirSync(outputFolder); - fs.emptyDirSync(outputFolder); - const inputFiles = recursiveFindByExtension(options.inputFolder, "json"); - for (const filepath of inputFiles) { - const filename = path.basename(filepath); - fs.copyFileSync(filepath, path.resolve(outputFolder, filename)); - } -}; - export default { apply, - copyContentForTranslators, }; diff --git a/packages/scripts/src/tasks/providers/userInput.ts b/packages/scripts/src/tasks/providers/userInput.ts new file mode 100644 index 0000000000..ad4a5ae460 --- /dev/null +++ b/packages/scripts/src/tasks/providers/userInput.ts @@ -0,0 +1,4 @@ +import { promptOptions, promptInput, promptConfirmation } from "../../utils"; + +/** Simple re-export of existing utiltiy scripts */ +export default { promptOptions, promptInput, promptConfirmation }; diff --git a/packages/scripts/src/tasks/providers/workflow.ts b/packages/scripts/src/tasks/providers/workflow.ts index ca90727545..5c9a885298 100644 --- a/packages/scripts/src/tasks/providers/workflow.ts +++ b/packages/scripts/src/tasks/providers/workflow.ts @@ -1,13 +1,21 @@ -import { spawnSync } from "child_process"; -import { IWorkflowContext } from "data-models"; +import { IWorkflowContext } from "data-models/workflows"; +import { parseCommand } from "../../commands"; /** * Call another workflow to run. * NOTE - the new workflow will run in an isolated environment, independent to other steps */ -const runWorkflow = async (options: { name: string; parent: IWorkflowContext }) => { - const cmd = `yarn start workflow run ${options.name} --parent ${options.parent.name}`; - spawnSync(cmd, { stdio: "inherit", shell: true }); +const runWorkflow = async (options: { + name: string; + parent: IWorkflowContext; + args?: string[]; +}) => { + const { name, args, parent } = options; + let cmd = `workflow run ${name} --parent ${parent.name}`; + if (args) { + cmd += ` ${args.join(" ")}`; + } + parseCommand(cmd); }; export default { runWorkflow }; diff --git a/packages/scripts/src/utils/cli-utils.ts b/packages/scripts/src/utils/cli-utils.ts index 55ace77afd..cac031e144 100644 --- a/packages/scripts/src/utils/cli-utils.ts +++ b/packages/scripts/src/utils/cli-utils.ts @@ -1,4 +1,5 @@ import * as inquirer from "inquirer"; +import { dynamicImport } from "tsimportlib"; /** * Provide an interactive list of cli options for a user to selet from @@ -7,20 +8,47 @@ import * as inquirer from "inquirer"; * (what is displayed), and value (what is returned) * @param message main text that appears above options */ -export async function promptOptions( +export async function promptOptions( choices: string[] | { name: string; value: any }[] = [], message = "Select an option" ) { const res = await inquirer.prompt([{ type: "list", name: "selected", message, choices }]); - return res.selected; + return res.selected as T; } -export async function promptInput(message: string) { +export async function promptInput(message: string, defaultValue?: string) { const name = "inputValue"; - const res = await inquirer.prompt([{ type: "input", message, name }]); + const res = await inquirer.prompt([{ type: "input", message, name, default: defaultValue }]); return res[name]; } +export async function promptEditorInput(message: string) { + const name = "inputValue"; + const res = await inquirer.prompt([{ type: "editor", message, name }]); + return res[name]; +} +export async function promptConfirmation(message: string, defaultValue = true) { + const name = "confirm"; + const res = await inquirer.prompt([{ type: "confirm", name, message, default: defaultValue }]); + return res[name] as boolean; +} + +/** Open an external URL using system default program */ +export async function openUrl(url: string) { + // Import 3rd party 'open' module dynamically as it requires esm compatibility + // https://github.com/TypeStrong/ts-node/discussions/1290 + const open = (await dynamicImport("open", module)) as typeof import("open"); + return open.default(url); +} + export function pad(str: string | number, chars: number) { str = `${str}`; const padChars = Math.max(chars - str.length + 1, 0); return str + new Array(padChars).join(" "); } +/** helper function used for dev to wait a fixed amount of time */ +export function _wait(ms: number) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, ms); + }); +} diff --git a/packages/scripts/src/utils/file-utils.spec.ts b/packages/scripts/src/utils/file-utils.spec.ts new file mode 100644 index 0000000000..8d82b62d18 --- /dev/null +++ b/packages/scripts/src/utils/file-utils.spec.ts @@ -0,0 +1,36 @@ +import { setNestedProperty, sortJsonKeys } from "./file-utils"; + +describe("setNestedProperty", () => { + it("Sets object deep property", () => { + const res = setNestedProperty("a.b.c", 1); + expect(res).toEqual({ a: { b: { c: 1 } } }); + }); + it("Preserves deep properties", () => { + const obj = { a: { b: { d: 2 } } }; + const res = setNestedProperty("a.b.c", 1, obj); + expect(res).toEqual({ a: { b: { c: 1, d: 2 } } }); + }); + it("Supports variable properties", () => { + const varProperty = "c"; + const res = setNestedProperty(`a.b.${varProperty}`, 1); + expect(res).toEqual({ a: { b: { c: 1 } } }); + }); +}); + +describe("sortJsonKeys", () => { + it("Sorts nested json by key", () => { + const input = { + b: "foo", + c: null, + a: { + f: 6, + e: 5, + }, + d: [], + }; + const res = sortJsonKeys(input); + expect(Object.keys(res)).toEqual(["a", "b", "c", "d"]); + expect(Object.keys(res.a)).toEqual(["e", "f"]); + expect(Object.values(res.a)).toEqual([5, 6]); + }); +}); diff --git a/packages/scripts/src/utils/file-utils.ts b/packages/scripts/src/utils/file-utils.ts index 68cabbabd9..65dbb14647 100644 --- a/packages/scripts/src/utils/file-utils.ts +++ b/packages/scripts/src/utils/file-utils.ts @@ -1,7 +1,11 @@ import * as fs from "fs-extra"; import * as path from "path"; -import { createHash } from "crypto"; +import * as os from "os"; +import { createHash, randomUUID } from "crypto"; import { logWarning } from "./logging.utils"; +import { ROOT_DIR } from "../paths"; +import { spawnSync } from "child_process"; +import { tmpdir } from "os"; /** * Retrieve a nested property from a json object @@ -16,20 +20,33 @@ import { logWarning } from "./logging.utils"; * getNestedProperty(obj,'a.b.c.d') // returns null * * @param obj data object to iterate over - * @param path nested path, such as data.subfield1.deeperfield2 + * @param nestedPath property path, such as data.subfield1.deeperfield2 */ -export function getNestedProperty(obj: any, path: string) { - return path.split(".").reduce((prev, current) => { +export function getNestedProperty(obj: any, nestedPath: string) { + return nestedPath.split(".").reduce((prev, current) => { return prev ? prev[current] : null; }, obj); } -/** Set a nested json property namespaced as parent.child1.subchild1 */ -export function setNestedProperty(path: string, value: any, obj: T = {} as any) { - let childKeys = path.split("."); +/** + * Set a nested json property namespaced as parent.child1.subchild1 + * + * @param nestedPath property path, such as data.subfield1.deeperfield2 + * @param value assigned value + * @param obj optional object to deep assign onto + * + * @example + * setNestedProperty('a.b.c',1,{}) // returns {"a":{"b":{"c":1}}} + * */ +export function setNestedProperty(nestedPath: string, value: any, obj: T = {} as any) { + // if no nested path provided simply return + if (!nestedPath) { + return { ...obj, ...value } as T; + } + let childKeys = nestedPath.split("."); const currentKey = childKeys[0]; if (childKeys.length > 1) { - const nestedValue = setNestedProperty(childKeys.slice(1).join("."), value); + const nestedValue = setNestedProperty(childKeys.slice(1).join("."), value, obj[currentKey]); obj[currentKey] = { ...obj[currentKey], ...(nestedValue as any) }; } else { obj[currentKey] = value; @@ -108,12 +125,11 @@ export function generateFolderTreeMap(folderPath: string, includeStats = true) { /** * Create a flat json representing nested folder structure of a given folder path. - * Includes optional stats output that records file size and md5 checksum data - * - * @param includeStats include basic stats such as size within nested structure. - * If ommitted will just mark files as `TRUE` - * @param filterFn optional filter function to be applied to relative paths for inclusion + * Includes stats output that records file size and md5 checksum data * + * @param options.filterFn optional filter function to be applied to relative paths for inclusion + * @param options.includeLocalPath include full path to file on local disk + * @returns Example file: i18n/flags/gb.svg * ``` * "i18n/flags/gb.svg": { @@ -124,30 +140,28 @@ export function generateFolderTreeMap(folderPath: string, includeStats = true) { */ export function generateFolderFlatMap( folderPath: string, - includeStats = true, - filterFn = (relativePath: string) => true + options: { + filterFn?: (relativePath: string) => boolean; + includeLocalPath?: boolean; + } = {} ) { const allFiles = recursiveFindByExtension(folderPath); - // const relativeFiles = allFiles.map(filepath => path.relative(folderPath, filepath)) - let flatMap: { - [relativePath: string]: boolean | IContentsEntry; - } = {}; + let flatMap: { [relativePath: string]: IContentsEntry } = {}; for (const filePath of allFiles) { const relativePath = path.relative(folderPath, filePath).split(path.sep).join("/"); - const shouldInclude = filterFn(relativePath); + const shouldInclude = options.filterFn ? options.filterFn(relativePath) : true; if (shouldInclude) { - if (includeStats) { - // generate size and md5 checksum stats - const { size, mtime } = fs.statSync(filePath); - const modifiedTime = mtime.toISOString(); - // write size in kb to 1 dpclear - const size_kb = Math.round(size / 102.4) / 10; - const md5Checksum = getFileMD5Checksum(filePath); - const entry: IContentsEntry = { relativePath, size_kb, md5Checksum, modifiedTime }; - flatMap[relativePath] = entry; - } else { - flatMap[relativePath] = true; + // generate size and md5 checksum stats + const { size, mtime } = fs.statSync(filePath); + const modifiedTime = mtime.toISOString(); + // write size in kb to 1 dpclear + const size_kb = Math.round(size / 102.4) / 10; + const md5Checksum = getFileMD5Checksum(filePath); + const entry: IContentsEntry = { relativePath, size_kb, md5Checksum, modifiedTime }; + if (options.includeLocalPath) { + entry.localPath = filePath; } + flatMap[relativePath] = entry as any; } } return flatMap; @@ -158,8 +172,11 @@ export interface IContentsEntry { size_kb: number; modifiedTime: string; md5Checksum: string; + localPath?: string; } +export type IContentsEntryHashmap = { [relativePath: string]: IContentsEntry }; +/** Generate md5 checksum for file */ export function getFileMD5Checksum(filePath: string) { const hash = createHash("md5", {}); const fileBuffer = fs.readFileSync(filePath); @@ -167,6 +184,22 @@ export function getFileMD5Checksum(filePath: string) { const checksum = hash.digest("hex"); return checksum; } +/** Generate md5 checksum for arbitrary data */ +export function getDataMD5Checsum(data: any) { + if (data) { + if (typeof data === "object") { + data = JSON.stringify(data); + } else { + data = `${data}`; + } + const hash = createHash("md5"); + hash.update(data); + const checksum = hash.digest("hex"); + return checksum; + } else { + throw new Error(`Cannot generate hash from data: ${data}`); + } +} /** * Take an array of json object and return grouped by specific key @@ -214,18 +247,31 @@ export function groupJsonByMultipleKeys(json: T[], keys: string[], joinCharac /** * Convert an object array into a json object, with keys corresponding to array entries * @param keyfield any unique field which all array objects contain to use as hash keys (e.g. 'id') + * @param handleDuplicateKey optional function to trigger when duplicate hash key entry detected. + * Should return replacement key to populate instead */ -export function arrayToHashmap(arr: T[], keyfield: string): { [key: string]: T } { +export function arrayToHashmap( + arr: T[], + keyfield: keyof T, + handleDuplicateKey = (k: string) => k +): { [key: string]: T } { const hashmap: { [key: string]: T } = {}; for (const el of arr) { if (el.hasOwnProperty(keyfield)) { - hashmap[el[keyfield]] = el; + let hashKey = el[keyfield] as string; + if (hashKey in hashmap) { + hashKey = handleDuplicateKey(hashKey); + } + hashmap[hashKey] = el; } } return hashmap; } export function listFolderNames(folderPath: string) { + if (!fs.existsSync(folderPath)) { + return []; + } return fs .readdirSync(folderPath, { withFileTypes: true }) .filter((v) => v.isDirectory()) @@ -326,6 +372,7 @@ export function readContentsFile(folderPath: string) { logWarning({ msg1: "Folder path does not exist", msg2: folderPath }); return []; } + const contentsFilePath = fs.readdirSync(folderPath).find((f) => f.endsWith("_contents.json")); if (!contentsFilePath) { logWarning({ msg1: "Contents file not found in folder", msg2: folderPath }); @@ -346,7 +393,7 @@ export function readContentsFileAsHashmap( options: { hashKey?: string; hashKeyFn?: (entry: any) => string } ) { const contentsJson = readContentsFile(folderPath); - const hashmap = {}; + const hashmap: { [key: string]: IContentsEntry } = {}; const { hashKey, hashKeyFn } = options; for (const entry of contentsJson) { if (hashKey) { @@ -366,3 +413,166 @@ export function readContentsFileAsHashmap( } return hashmap; } + +/** + * Copy all files from src dir to target, and remove target files that no longer exist in src + * Ignores unchanged files based on md5 hash and preserves src file stats + * @param filter_fn optional filter function applied to src folder files + * */ +export function replicateDir( + src: string, + target: string, + opts: { filter_fn?: (entry: IContentsEntry) => boolean; cleanEmpty?: boolean } = { + cleanEmpty: true, + } +) { + fs.ensureDirSync(src); + fs.ensureDirSync(target); + const srcFiles = generateFolderFlatMap(src); + const targetFiles = generateFolderFlatMap(target); + // omit src files via filter + if (opts.filter_fn) { + Object.entries(srcFiles).forEach(([key, entry]) => { + if (!opts.filter_fn(entry as IContentsEntry)) { + delete srcFiles[key]; + } + }); + } + + const ops = { copy: [], delete: [], ignore: [] }; + // remove target files that no longer exist in src + Object.keys(targetFiles).forEach((filepath) => { + if (!srcFiles.hasOwnProperty(filepath)) { + ops.delete.push(filepath); + } + }); + // copy new and modified files from src + Object.entries(srcFiles).forEach(([filepath, entry]) => { + if (targetFiles.hasOwnProperty(filepath)) { + const srcFile = entry as IContentsEntry; + const targetFile = targetFiles[filepath] as IContentsEntry; + if (srcFile.md5Checksum !== targetFile.md5Checksum) { + ops.copy.push(entry); + } else { + ops.ignore.push(filepath); + } + } else { + ops.copy.push(entry); + } + }); + + // process operations + ops.delete.forEach((filepath) => { + const targetPath = path.resolve(target, filepath); + fs.removeSync(targetPath); + }); + ops.copy.forEach((entry) => { + const { relativePath, modifiedTime } = entry as IContentsEntry; + const srcPath = path.resolve(src, relativePath); + const targetPath = path.resolve(target, relativePath); + const mtime = new Date(modifiedTime); + fs.ensureDirSync(path.dirname(targetPath)); + fs.copyFileSync(srcPath, targetPath); + fs.utimesSync(targetPath, mtime, mtime); + }); + // remove hanging directories] + if (opts.cleanEmpty) { + cleanupEmptyFolders(target); + } + return ops; +} + +/** + * Copy all files from src to target folder, overriding target files with src + * and keeping original modified times + */ +export function mergeFoldersRecursively( + src: string, + target: string, + options = { conflictStrategy: "keepSrc" } +) { + fs.ensureDirSync(src); + fs.ensureDirSync(target); + const srcFiles = generateFolderFlatMap(src); + const targetFiles = generateFolderFlatMap(target); + // Copy function + function copySrcToTarget(filepath: string, entry: IContentsEntry) { + if (targetFiles.hasOwnProperty(filepath)) { + if (options.conflictStrategy !== "keepSrc") { + // TODO - add handling for other strategies if required + return; + } + } + const { relativePath, modifiedTime } = entry; + const srcPath = path.resolve(src, relativePath); + const targetPath = path.resolve(target, relativePath); + const mtime = new Date(modifiedTime); + fs.ensureDirSync(path.dirname(targetPath)); + fs.copyFileSync(srcPath, targetPath); + fs.utimesSync(targetPath, mtime, mtime); + } + // Process entries + Object.entries(srcFiles).forEach(([filepath, entry]) => + copySrcToTarget(filepath, entry as IContentsEntry) + ); +} +export function createTempDir() { + const dirName = randomUUID(); + const dirPath = path.join(os.tmpdir(), dirName); + fs.ensureDirSync(dirPath); + fs.emptyDirSync(dirPath); + return dirPath; +} + +/** + * Run prettier to automatically format code in given folder path + * NOTE - by default will only format .ts files + */ +export function runPrettierCodeTidy(folderPath: string) { + const cmd = `npx prettier --config ${ROOT_DIR}/.prettierrc --write ${folderPath}/**/*.ts --loglevel error`; + return spawnSync(cmd, { stdio: ["inherit", "inherit", "inherit"], shell: true }); +} + +/** Create a randomly-named temporary folder within the os temp directory */ +export function createTemporaryFolder() { + const folderName = randomUUID(); + const folderPath = path.resolve(tmpdir(), folderName); + fs.ensureDirSync(folderPath); + return folderPath; +} + +/** + * Recursively remove any empty folders + * https://gist.github.com/arnoson/3237697e8c61dfaf0356f814b1500d7b + */ +export const cleanupEmptyFolders = (folder: string) => { + if (!fs.existsSync(folder)) return; + if (!fs.statSync(folder).isDirectory()) return; + let files = fs.readdirSync(folder); + + if (files.length > 0) { + files.forEach((file) => cleanupEmptyFolders(path.join(folder, file))); + // Re-evaluate files; after deleting subfolders we may have an empty parent + // folder now. + files = fs.readdirSync(folder); + } + + if (files.length === 0) { + fs.rmdirSync(folder); + } +}; + +/** Order a nested json-like object in alphabetical key order */ +export const sortJsonKeys = >(json: T): T => { + // return non json-type data as-is + if (!json || {}.constructor !== json.constructor) { + return json; + } + // recursively sort any nested json by key + return Object.keys(json) + .sort() + .reduce((obj, key) => { + obj[key] = sortJsonKeys(json[key]); + return obj; + }, {}) as T; +}; diff --git a/packages/scripts/src/utils/logging.utils.ts b/packages/scripts/src/utils/logging.utils.ts index 8c26934933..2d649e044e 100644 --- a/packages/scripts/src/utils/logging.utils.ts +++ b/packages/scripts/src/utils/logging.utils.ts @@ -2,19 +2,121 @@ import boxen from "boxen"; import chalk from "chalk"; import { Command } from "commander"; +import { SCRIPTS_LOGS_DIR } from "../paths"; + +import winston from "winston"; +import path from "path"; +import { emptyDirSync, ensureDirSync, truncateSync } from "fs-extra"; +import { _wait } from "./cli-utils"; +import { Writable } from "stream"; +import { existsSync } from "fs"; + +const logLevels = ["debug", "info", "warning", "error"] as const; +type ILogLevel = typeof logLevels[number]; +interface ILogEntry { + level: ILogLevel; + message?: string; + details?: any; + source?: string; +} + +// Declare a history variable that can be written to via a stream +let logHistory = ""; + +/** Retrieve all logs from current session for a given variable */ +export function getLogs(level: ILogLevel, message?: string) { + const logEntries: ILogEntry[] = logHistory + .split("\n") + .filter((v) => v) + .map((v) => JSON.parse(v)); + const logLevelEntries = logEntries.filter((entry) => entry.level === level); + if (message) { + return logLevelEntries.filter((entry) => entry.message === message); + } + return logLevelEntries; +} +export function getLogFiles() { + const logFiles: { [level in ILogLevel]: string } = {} as any; + for (const level of logLevels) { + logFiles[level] = path.resolve(SCRIPTS_LOGS_DIR, `${level}.log`); + } + return logFiles; +} + +export function clearLogs(attempt = 0) { + logHistory = ""; + try { + const logFiles = getLogFiles(); + for (const logFile of Object.values(logFiles)) { + if (existsSync(logFile)) { + truncateSync(logFile); + } + } + } catch (error) { + attempt++; + if (attempt > 5) { + throw error; + } + console.log("could not clear logs, retrying...", attempt); + return clearLogs(attempt); + } +} + +/** + * Create loggers that write to file based on level and also save all logs to a single string + * for easy querying + */ +function getLogger() { + const g = global as any; + if (g.logger) { + return g.logger as winston.Logger; + } + // setup files + logHistory = ""; + ensureDirSync(SCRIPTS_LOGS_DIR); + emptyDirSync(SCRIPTS_LOGS_DIR); + const logFiles = getLogFiles(); + // file transports + const fileTransports = logLevels.map( + (level) => + new winston.transports.File({ + filename: logFiles[level], + level, + format: winston.format.prettyPrint(), + }) + ); + const logger = winston.createLogger({ + level: "info", + transports: fileTransports, + }); + // stream (memory) transport + const logStream = new Writable(); + logStream._write = (chunk, encoding, next) => { + logHistory = logHistory += chunk.toString(); + next(); + }; + const streamTransport = new winston.transports.Stream({ + stream: logStream, + format: winston.format.json(), + }); + logger.add(streamTransport); + g.logger = logger; + return logger; +} + +export function createChildLogger(meta = {}) { + const logger = getLogger(); + return logger.child(meta); +} + /** Record a 2-line error message in a box with additional optional logging and exit */ -export function logError(opts: Partial = {}) { +function error(opts: Partial = {}) { const { msg1, msg2, error, logOnly } = { ...defaultLog, ...opts }; console.log( - boxen( - ` - ${chalk.red(msg1)} - - ${chalk.yellow(msg2)} - - `, - { padding: 1, borderColor: "red" } - ) + boxen(`${chalk.red(msg1)}\n\n${chalk.yellow(msg2)}`, { + padding: 1, + borderColor: "red", + }) ); if (error) { console.error(error); @@ -23,19 +125,22 @@ export function logError(opts: Partial = {}) { process.exit(1); } } +/** + * HACK - export error within a Logger const to allow easier mocking in tests + * https://github.com/jasmine/jasmine/issues/1414 + */ +export const Logger = { + error, +}; /** Display an output message in a blue box with 2 lines of text */ export function logOutput(opts: Partial = {}) { const { msg1, msg2 } = { ...defaultLog, ...opts }; console.log( - boxen( - ` -${chalk.blueBright(msg1)} - -${chalk.cyanBright(msg2)} - `, - { padding: 1, borderColor: "blueBright" } - ) + boxen(`${chalk.blueBright(msg1)}\n\n${chalk.cyanBright(msg2)}`, { + padding: 1, + borderColor: "blueBright", + }) ); } @@ -43,14 +148,10 @@ ${chalk.cyanBright(msg2)} export function logWarning(opts: Partial = {}) { const { msg1, msg2 } = { ...defaultLog, ...opts }; console.log( - boxen( - ` - ${chalk.yellowBright(msg1)} - - ${chalk.yellow(msg2)} - `, - { padding: 1, borderColor: "yellowBright" } - ) + boxen(`${chalk.yellowBright(msg1)}\n\n${chalk.yellow(msg2)}`, { + padding: 1, + borderColor: "yellowBright", + }) ); } diff --git a/packages/scripts/src/utils/string-utils.ts b/packages/scripts/src/utils/string-utils.ts index b0a84a93ca..c8f8dcd729 100644 --- a/packages/scripts/src/utils/string-utils.ts +++ b/packages/scripts/src/utils/string-utils.ts @@ -12,11 +12,9 @@ export function booleanStringToBoolean(str: string) { return str; } -/** - * Simple regex to try and match standard country-language format - * Currently restricted to any codes in the format `ab_ab` or `ab_abc` - */ -export function isCountryLanguageCode(str: string) { - const regex = /[a-z]{2}_[a-z]{2,3}/gi; - return regex.test(str); +/** Convert size in KB to MB with specified number of decimal places */ +export function kbToMB(kb: number, decimalPlaces = 1) { + const mb = kb / 1024; + const power = 10 ^ decimalPlaces; + return Math.round((mb * power) / power); } diff --git a/packages/scripts/test/data/input/errorChecking/test_duplicate.xlsx b/packages/scripts/test/data/input/errorChecking/test_duplicate.xlsx new file mode 100644 index 0000000000..848216f868 --- /dev/null +++ b/packages/scripts/test/data/input/errorChecking/test_duplicate.xlsx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af137779ced83f4fc9a0cc26e26bb10bbc9ceadc174080fbdb33d086dfde0245 +size 76442 diff --git a/packages/scripts/test/data/input/errorChecking/test_errorChecking.xlsx b/packages/scripts/test/data/input/errorChecking/test_errorChecking.xlsx new file mode 100644 index 0000000000..805693f5ef --- /dev/null +++ b/packages/scripts/test/data/input/errorChecking/test_errorChecking.xlsx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:928b02d0ffde4e6f79f3c68d7cd859dbc8cd90db86cbd286f05f7fb3659dcf45 +size 83752 diff --git a/packages/scripts/test/data/input/sheets/test_input.xlsx b/packages/scripts/test/data/input/sheets/test_input.xlsx new file mode 100644 index 0000000000..fd5a215a4e --- /dev/null +++ b/packages/scripts/test/data/input/sheets/test_input.xlsx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f80d1922d8b6c09c919b0f3fdd11b48962a1808053db05f0c0384c344025c50a +size 220137 diff --git a/packages/scripts/test/helpers/reporters.ts b/packages/scripts/test/helpers/reporters.ts new file mode 100644 index 0000000000..6420c40ad0 --- /dev/null +++ b/packages/scripts/test/helpers/reporters.ts @@ -0,0 +1,11 @@ +import { SpecReporter } from "jasmine-spec-reporter"; + +jasmine.getEnv().clearReporters(); // remove default reporter logs +jasmine.getEnv().addReporter( + new SpecReporter({ + // add jasmine-spec-reporter + spec: { + displayPending: true, + }, + }) +); diff --git a/packages/scripts/tsconfig.json b/packages/scripts/tsconfig.json index 6620a10850..3a15edbaf3 100644 --- a/packages/scripts/tsconfig.json +++ b/packages/scripts/tsconfig.json @@ -3,10 +3,13 @@ "target": "es2015", "noEmit": true, "moduleResolution": "node", - "module": "commonjs", + "module": "CommonJS", "esModuleInterop": true, // Global type definitions. "typeRoots": ["./node_modules/@types"] }, - "include": ["src/**/*.ts"] + "include": ["src/**/*.ts"], + "ts-node": { + "swc": true + } } diff --git a/packages/server/.env.example b/packages/server/.env.example index 7146bc911b..2b2689ba3e 100644 --- a/packages/server/.env.example +++ b/packages/server/.env.example @@ -1,35 +1,37 @@ # Webserver -CERTBOT_EMAIL=your@email.org +CERTBOT_EMAIL=your@email.org # <--- PROD: Add email for renewal messages, e.g. support@domain.com +SERVER_NAME=localhost # <--- PROD: Add correct domain for server e.g. sub.domain.com +USE_LOCAL_CA=1 # <--- PROD: Set 0 or remove (local certs provider) # Postgres POSTGRES_USER=postgres -POSTGRES_PASSWORD=demo +POSTGRES_PASSWORD=demo # <--- PROD: Change to strong PW # PGAdmin PGADMIN_DEFAULT_EMAIL=your@email.org -PGADMIN_DEFAULT_PASSWORD=demo +PGADMIN_DEFAULT_PASSWORD=demo # <--- PROD: Change to strong PW PGADMIN_CONFIG_SERVER_MODE=False # App Data APP_DB_NAME=plh APP_DB_USER=plh -APP_DB_PASSWORD=demo +APP_DB_PASSWORD=demo # <--- PROD: Change to strong PW # Metabase MB_DB_DBNAME=metabase MB_DB_USER=metabase -MB_DB_PASS=metabase +MB_DB_PASS=metabase # <--- PROD: Change to strong PW # MySQL -MYSQL_ROOT_PASSWORD=demo -MYSQL_PASSWORD=admin +MYSQL_ROOT_PASSWORD=demo # <--- PROD: Change to strong PW +MYSQL_PASSWORD=admin # <--- PROD: Change to strong PW MYSQL_USER=admin # Matomo MATOMO_DATABASE_ADAPTER=mysql MATOMO_DATABASE_TABLES_PREFIX=matomo_ MATOMO_DATABASE_USERNAME=matomo -MATOMO_DATABASE_PASSWORD=matomo +MATOMO_DATABASE_PASSWORD=matomo # <--- PROD: Change to strong PW MATOMO_DATABASE_DBNAME=matomo #N8N diff --git a/packages/server/.gitattributes b/packages/server/.gitattributes index cebbc1d03f..dbb1de476e 100644 --- a/packages/server/.gitattributes +++ b/packages/server/.gitattributes @@ -1,3 +1,4 @@ # Force bash scripts to always use LF line endings so that if a repo is accessed # in Unix via a file share from Windows, the scripts will work. -*.sh text eol=lf \ No newline at end of file +*.sh text eol=lf +*.conf eol=lf \ No newline at end of file diff --git a/packages/server/.gitignore b/packages/server/.gitignore index a9818df126..af72f6a08a 100644 --- a/packages/server/.gitignore +++ b/packages/server/.gitignore @@ -1,2 +1,4 @@ .env.* -!.env.example \ No newline at end of file +!.env.example +# Generated from template, stored locally just for reference +docker/config/nginx/conf.d/server.conf \ No newline at end of file diff --git a/packages/server/README.md b/packages/server/README.md index 9e71083310..b66ad08060 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -9,7 +9,7 @@ The Apps Server contains various docker containers for managing IDEMS Apps, incl - Matomo Analytics (Dashboard + DB + Webserver) ## Configure Environment Variables -Copy the sample environemnt file +Copy the sample environment file ```bash cp .env.example .env ``` @@ -23,6 +23,13 @@ cp ../api/.env.example ../api/.env Matomo analytics can be configured in the file [./docker/config/matomo_config/config.ini.php](./docker/config/matomo_config/config.ini.php). Note - this file will only be populated after initial config has been completed from within the webbrowser running the app +## Build API +This will create a docker image from the local api workspace. It should be rebuilt +whenever changed +``` +yarn workspace api docker:build +``` + ## Running Locally 1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop ) @@ -35,6 +42,9 @@ yarn start yarn workspace server start ``` +You should be able to access the dashboard at http://localhost (will redirect) + + ## Application Configs ### Adminer DB Admin @@ -48,7 +58,7 @@ Username: (POSTGRES_USER in .env) Password: (POSTGRES_PASS in .env) Database: (blank) ``` -You should already see app and metabase databases created via the initialisation script [docker/config/init.sh](./docker/config/db/init.sh) +You should already see app and metabase databases created via the initialisation script [docker/config/db/init.sh](./docker/config/db/init.sh) Note - as these scripts only ever run on first initialisation, if adjustments need to be made then SQL can be executed from within Adminer in a similar way as the scripts @@ -65,7 +75,7 @@ The api page should load with an overview of all available endpoints for referen ### Metabase DB Dashboard http://localhost/dashboard/ -A new database will need to be created to allow access for metabase. This should be automatically configured in [](./docker/config/db/init.sh), however if these steps fail they can be run manually (currently a bit temperamental - TODO ISSUE - will know if successful if can see a database created that matches the provided $MB_DB_DBNAME). +A new database will need to be created to allow access for metabase. This should be automatically configured in [docker/config/db/init.sh](./docker/config/db/init.sh), however if these steps fail they can be run manually (currently a bit temperamental - TODO ISSUE - will know if successful if can see a database created that matches the provided $MB_DB_DBNAME). Manual SQL can be executed from the Adminer DB interface, e.g. using the example config: ``` @@ -88,9 +98,9 @@ Database type: PostgreSQL Name: (any) Host: db Port: 5432 -Database name: ($DB_NAME in ../api/.env) -Username: ($DB_USER in ../api/.env) -Password: ($DB_PASSWORD in ../api/.env) +Database name: ($APP_DB_NAME in ../api/.env) +Username: ($APP_DB_USER in ../api/.env) +Password: ($APP_DB_PASSWORD in ../api/.env) ``` @@ -155,25 +165,19 @@ Roughly the issue is: ## Server Deployment (WiP docs) -To deploy on a server the same ensure docker and docker-compse are installed and run the same way as locally +Production deployments can be managed in the same way as local deployments, +although docker installation may vary depending on platform. -### Securing with HTTPS -The recommended approach is to use [Certbot](https://certbot.eff.org/). An example of creating certificates whilst running a docker nginx container can be found here: https://dbillinghamuk.medium.com/certbot-certificate-verification-through-nginx-container-710c299ec549 +Additional care should also be taken to ensure all passwords set in the `.env` file are changed to strong variants. -Example command -``` -sudo certbot certonly --webroot -w /root/certs-data/ -d welcome.co.uk -d apps-server.idems.international -``` +### Securing automaticatlly +The docker container will automatically generate https certificates and renew for the `SERVER_NAME` specified in the `.env` file, with additional config options. I.e. -Certificates will auto-renew, or can be manually renewed via `sudo certbot renew`. -The new certificates will be populated to the same local folder, and so to update those inside the container the container must be restarted, e.g. ``` -docker restart plh_webserver +CERTBOT_EMAIL=myEmail@mydomain.com +SERVER_NAME=example.mydomain.com +USE_LOCAL_CA=0 ``` -This can either be scheduled as a cron task, or handled manually. - -TODO - in future this could be handled with nginx-certbot image all similar docker container system - ### WiP - Alternate deployment Another way to deploy on a standalone server is via [Swarmlet](https://swarmlet.dev/docs) - an automation service that handles installing and managing docker containers diff --git a/packages/server/docker/config/analytics_db/init.sh b/packages/server/docker/config/analytics_db/init.sh old mode 100644 new mode 100755 diff --git a/packages/server/docker/config/db/init.sh b/packages/server/docker/config/db/init.sh old mode 100644 new mode 100755 diff --git a/packages/server/docker/config/nginx/conf.d/.gitkeep b/packages/server/docker/config/nginx/conf.d/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/server/docker/config/nginx/conf.d/server.conf b/packages/server/docker/config/nginx/conf.d/server.conf deleted file mode 100644 index b4861d4466..0000000000 --- a/packages/server/docker/config/nginx/conf.d/server.conf +++ /dev/null @@ -1,26 +0,0 @@ -server { - listen 80; - listen [::]:80; - client_max_body_size 32m; - server_name localhost; - - # Certbot - location ^~ /.well-known { - allow all; - root /data/letsencrypt/; - } - # Redirect to https - location / { - return 301 https://$host$request_uri; - } -} - -server { - client_max_body_size 32m; - listen 443 ssl default_server; - listen [::]:443 ssl default_server; - server_name apps-server.idems.international; - ssl_certificate /etc/letsencrypt/live/apps-server.idems.international/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/apps-server.idems.international/privkey.pem; - include conf/locations.conf; -} diff --git a/packages/server/docker/config/nginx/templates/server.conf.template b/packages/server/docker/config/nginx/templates/server.conf.template new file mode 100644 index 0000000000..a28da7dfa0 --- /dev/null +++ b/packages/server/docker/config/nginx/templates/server.conf.template @@ -0,0 +1,23 @@ +# env variables in this template will be +# https://github.com/docker-library/docs/tree/master/nginx#using-environment-variables-in-nginx-configuration-new-in-119 + +# Only create https server as http will be handled by container +# https://github.com/JonasAlfredsson/docker-nginx-certbot/blob/master/src/nginx_conf.d/redirector.conf +server { + client_max_body_size 32m; + # Listen to port 443 on both IPv4 and IPv6. + listen 443 ssl default_server reuseport; + listen [::]:443 ssl default_server reuseport; + + server_name ${SERVER_NAME}; + + # Load the certificate files. + ssl_certificate /etc/letsencrypt/live/${SERVER_NAME}/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/${SERVER_NAME}/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/${SERVER_NAME}/chain.pem; + + # Load the Diffie-Hellman parameter. + ssl_dhparam /etc/letsencrypt/dhparams/dhparam.pem; + + include conf/locations.conf; +} diff --git a/packages/server/docker/docker-compose.yml b/packages/server/docker/docker-compose.yml index 9c10c088d2..4584c7756c 100644 --- a/packages/server/docker/docker-compose.yml +++ b/packages/server/docker/docker-compose.yml @@ -3,15 +3,21 @@ version: "3.1" services: #################################################################### # Primary Webserver (Nginx) - # Alt: https://hub.docker.com/r/jonasal/nginx-certbot + # Nginx with auto cert generate and renewal #################################################################### nginx: - # image: jonasal/nginx-certbot:latest - image: nginx:stable + image: jonasal/nginx-certbot:4.2.1 container_name: plh_webserver restart: unless-stopped env_file: - ../.env + environment: + - USE_ECDSA=1 + # Debugging - set to 0 to sign local cert (sometimes required before then signing as 1) + # https://github.com/JonasAlfredsson/docker-nginx-certbot/blob/master/docs/good_to_know.md#initial-testing + # - USE_LOCAL_CA=1 + # - STAGING=1 + # - DEBUG=1 ports: - 80:80 - 443:443 @@ -23,13 +29,16 @@ services: options: max-size: "1m" volumes: - # - nginx_secrets:/etc/letsencrypt + # Local nginx conf - ./config/nginx/conf.d:/etc/nginx/conf.d - # - ./config/nginx/nginx.conf:/etc/nginx/nginx.conf - ./config/nginx/conf:/etc/nginx/conf - - /root/certs-data/:/data/letsencrypt/ - - /etc/letsencrypt/:/etc/letsencrypt/ - # NOTE - the bind volumes directly from motomo (could be another service) + - ./config/nginx/templates:/etc/nginx/templates + # Certs populated by certbot + - nginx_secrets:/etc/letsencrypt + + # HACK CC 2023-05-24 - certs not reneweing so ran certbot manually and copy over + # Should ensure still renew and consider removing/replacing volume + # - /etc/letsencrypt:/etc/letsencrypt #################################################################### # IDEMS Apps API #################################################################### @@ -41,7 +50,7 @@ services: # context: ../../api # dockerfile: Dockerfile # target: prod-env - image: idems/apps-api:1.2.7 + image: idems/apps-api:1.3.0 env_file: - ../../api/.env environment: @@ -53,8 +62,8 @@ services: logging: *logging_default depends_on: - db - # ports: - # - 3000:3000 + ports: + - 3000:3000 #################################################################### # Postgres DB #################################################################### @@ -182,7 +191,8 @@ services: ports: - 3306:3306 healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + test: + ["CMD", "/usr/local/bin/healthcheck.sh", "--su-mysql", "--connect", "--innodb_initialized"] timeout: 20s retries: 10 analytics_dashboard: diff --git a/packages/shared/jasmine.json b/packages/shared/jasmine.json new file mode 100644 index 0000000000..f6f317a3a6 --- /dev/null +++ b/packages/shared/jasmine.json @@ -0,0 +1,19 @@ +{ + "reporters": [ + { + "name": "jasmine-spec-reporter#SpecReporter", + "options": { + "displayStacktrace": "all" + } + } + ], + + "spec_files": ["src/**/*.[sS]pec.ts"], + "helpers": ["spec/helpers/**/*.ts"], + "env": { + "failSpecWithNoExpectations": false, + "stopSpecOnExpectationFailure": false, + "stopOnSpecFailure": false, + "random": false + } +} diff --git a/packages/shared/package.json b/packages/shared/package.json index d8b479f333..25e840f2c2 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -2,16 +2,24 @@ "name": "shared", "version": "1.0.0", "description": "", - "main": "index.ts", + "main": "src/index.ts", "scripts": { - "start": "concurrently -k -n \"FRONTEND,SERVER,API\" -c \"blue,magenta,green\" \"yarn start:frontend\" \"yarn start:server\" \"yarn start:api\"", - "start:frontend": "yarn workspace frontend start", - "start:server": "yarn workspace server start", - "start:api": "wait-on tcp:5432 && yarn workspace api start" + "test": "jasmine-ts --config=jasmine.json", + "test:watch": "nodemon --ext ts --exec 'jasmine-ts --config=jasmine.json'" }, "license": "ISC", + "dependencies": { + "character-parser": "^4.0.0", + "danfojs": "^1.1.1" + }, "devDependencies": { - "concurrently": "^6.2.0", - "wait-on": "^6.0.0" + "@types/jasmine": "^3.10.6", + "@types/node": "^16.11.47", + "jasmine": "^3.99.0", + "jasmine-spec-reporter": "^7.0.0", + "jasmine-ts": "^0.4.0", + "nodemon": "^2.0.19", + "ts-node": "^10.8.0", + "typescript": "^4.1.2" } } diff --git a/packages/shared/spec/helpers/reporters.ts b/packages/shared/spec/helpers/reporters.ts new file mode 100644 index 0000000000..6420c40ad0 --- /dev/null +++ b/packages/shared/spec/helpers/reporters.ts @@ -0,0 +1,11 @@ +import { SpecReporter } from "jasmine-spec-reporter"; + +jasmine.getEnv().clearReporters(); // remove default reporter logs +jasmine.getEnv().addReporter( + new SpecReporter({ + // add jasmine-spec-reporter + spec: { + displayPending: true, + }, + }) +); diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts new file mode 100644 index 0000000000..0305fa80aa --- /dev/null +++ b/packages/shared/src/index.ts @@ -0,0 +1,2 @@ +export * from "./utils"; +export * from "./models"; diff --git a/packages/shared/src/models/appStringEvaluator/appStringEvaluator.spec.ts b/packages/shared/src/models/appStringEvaluator/appStringEvaluator.spec.ts new file mode 100644 index 0000000000..37e97c0df8 --- /dev/null +++ b/packages/shared/src/models/appStringEvaluator/appStringEvaluator.spec.ts @@ -0,0 +1,19 @@ +import { AppStringEvaluator } from "./appStringEvaluator"; + +describe("App String Evaluator", () => { + const evaluator = new AppStringEvaluator(); + + evaluator.setExecutionContext({ + row: { first_name: "Ada", last_name: "Lovelace", number_1: 1, number_2: 2 }, + }); + + it("@row.number_1 > @row.number_2", () => { + expect(evaluator.evaluate("@row.number_1 > @row.number_2")).toEqual(false); + }); + + it("Hello @row.first_name @row.last_name)", () => { + expect(evaluator.evaluate("Hello @row.first_name @row.last_name")).toEqual( + "Hello Ada Lovelace" + ); + }); +}); diff --git a/packages/shared/src/models/appStringEvaluator/appStringEvaluator.ts b/packages/shared/src/models/appStringEvaluator/appStringEvaluator.ts new file mode 100644 index 0000000000..7dbbb4cc00 --- /dev/null +++ b/packages/shared/src/models/appStringEvaluator/appStringEvaluator.ts @@ -0,0 +1,53 @@ +import { JSEvaluator } from "../jsEvaluator/jsEvaluator"; +import { TemplatedData } from ".."; + +/** + * Utility class to allow evaluation of strings that contain a mix of context expressions, + * JavaScript and static strings + * + * @example + * ``` + * const evaluator = new AppStringEvaluator() + * + * evaluator.setExecutionContext({ + * row:{ + * number_1:1, + * number_2:2 + * } + * }) + * + * const expression = `@row.number_1 > @row.number_2 ? '1 is greater' : '2 is greater'` + * evaluator.evaluate(expression1) + * // 2 is greater + * ``` + * */ +export class AppStringEvaluator { + private parser: TemplatedData; + private evaluator: JSEvaluator; + constructor(context = {}) { + this.evaluator = new JSEvaluator(); + this.setExecutionContext(context); + } + setExecutionContext(context: any) { + this.parser = new TemplatedData({ context }); + } + /** + * Evaluate app string expression in two stages + * 1) Replace any instances of context variables with values + * e.g. `@row.number_1 > @row.number_2 ? '1 is greater' : '2 is greater' + * -> `1 > 2 ? '1 is greater' : '2 is greater' + * + * 2) Attempt evaluation in a JS context + * -> '2 is greater' + * @returns + */ + evaluate(expression: string) { + const parsed = this.parser.parse(expression); + try { + const evaluated = this.evaluator.evaluate(parsed); + return evaluated; + } catch (error) { + return parsed; + } + } +} diff --git a/packages/shared/src/models/dataPipe/bugs.spec.ts b/packages/shared/src/models/dataPipe/bugs.spec.ts new file mode 100644 index 0000000000..5436b40157 --- /dev/null +++ b/packages/shared/src/models/dataPipe/bugs.spec.ts @@ -0,0 +1,54 @@ +import { DataFrame } from "danfojs"; +import { OPERATORS } from "./operators"; +import workshop_data from "./bugs/1590.json"; +import { normalizeData } from "."; + +const testData = { + names: [ + { + id: "id_1", + first_name: "Ada", + "first_name::eng": "Ada", + last_name: "Lovelace", + _translatedFields: { first_name: {} }, + }, + { + id: "id_2", + first_name: "Blaise", + "first_name::eng": "Blaise", + last_name: "Pascal", + _translatedFields: { first_name: {} }, + }, + ], + workshop_data: normalizeData(workshop_data.rows), +}; + +describe("Bugs", () => { + // catch specific error where columns containing language (e.g. text::eng) would fail to evaluate logic statements + // https://github.com/IDEMSInternational/parenting-app-ui/issues/1573 + it("1573 - text::eng", () => { + const df = new DataFrame(testData.names); + const output = new OPERATORS.filter(df, ["first_name.startsWith('B')"]).apply(); + expect(output.column("id").values).toEqual(["id_2"]); + }); + it("1590 - missing columns", () => { + const df = new DataFrame(testData.workshop_data); + const output = new OPERATORS.append_columns(df, [ + "completed_field: test_{@row.id}_completed", + ]).apply(); + expect(output.column("completed_field").values).toEqual([ + "test_w_self_care_completed", + "test_w_1on1_completed", + "test_w_praise_completed", + "test_w_instruct_completed", + "test_w_stress_completed", + "test_w_money_completed", + "test_w_rules_completed", + "test_w_consequence_completed", + "test_w_solve_completed", + "test_w_safe_completed", + "test_w_crisis_completed", + "test_w_celebrate_completed", + ]); + }); +}); diff --git a/packages/shared/src/models/dataPipe/bugs/1590.json b/packages/shared/src/models/dataPipe/bugs/1590.json new file mode 100644 index 0000000000..ae77c37aee --- /dev/null +++ b/packages/shared/src/models/dataPipe/bugs/1590.json @@ -0,0 +1,851 @@ +{ + "flow_type": "data_list", + "flow_name": "workshop_data", + "status": "released", + "data_list_name": "workshop", + "rows": [ + { + "id": "w_self_care", + "number": 1, + "image_asset": "plh_images/workshops/w_self_care/tools.svg", + "relax_data": "@data.relax.relax_5", + "intro_audio_asset": "plh_audio/topic_intros/w_self_care_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_self_care.mp3", + "title": "Welcome and Self-Care", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "short_title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Welcome and Self-Care" + }, + "in_text_title": { + "eng": "**Welcome and Self-Care** @global.workshop" + }, + "description": { + "eng": "This @global.weekly_workshop is about YOU. Looking after yourself is essential for a happy family." + }, + "short_title": { + "eng": "Self-Care" + }, + "tools": { + "eng": "How to do self-care" + }, + "caregiver_testimonial_script": { + "eng": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better." + }, + "teen_testimonial_script": { + "eng": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." + } + }, + "in_text_title": "**Welcome and Self-Care** @global.workshop", + "description": "This @global.weekly_workshop is about YOU. Looking after yourself is essential for a happy family.", + "short_title": "Self-Care", + "tools": "How to do self-care", + "caregiver_testimonial_script": "For me as a parent, it was almost impossible to find time for myself. I was always busy taking care of everyone else. Through @global.parent_app, I realised how important it is to take care of myself. It helps me AND my family! \n\nHaving a moment for myself helps me to breathe and notice how I feel. Even 5 minutes to have a cup of tea makes a big difference. Now I can deal with my stress better.", + "teen_testimonial_script": "My dad was always busy. He would come home from work and snap at us when we started asking him questions. \n\n@global.parent_app helped us a lot. We no longer fight. Now, when my dad comes home, he first sits down by himself for 5 minutes and then we do a relaxing activity from @global.parent_app together, so we can all take a deep breath and relax. Then we can chat about our day, about anything good or bad that happened. Everyone is so much happier now." + }, + { + "id": "w_1on1", + "number": 2, + "image_asset": "plh_images/workshops/w_1on1/tools.svg", + "relax_data": "@data.relax.relax_2", + "something_fun_data": "@data.something_fun.co_chef", + "intro_audio_asset": "plh_audio/topic_intros/w_1on1_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_1on1.mp3", + "title": "One-on-One Time", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "One-on-One Time" + }, + "in_text_title": { + "eng": "**One-on-One Time** @global.workshop" + }, + "description": { + "eng": "Spending time with your teen builds a positive relationship." + }, + "tools": { + "eng": "How to spend one-on-one time" + }, + "caregiver_testimonial_script": { + "eng": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!" + }, + "teen_testimonial_script": { + "eng": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." + } + }, + "in_text_title": "**One-on-One Time** @global.workshop", + "description": "Spending time with your teen builds a positive relationship.", + "tools": "How to spend one-on-one time", + "caregiver_testimonial_script": "When I first heard I had to spend One-on-One Time with my teen, it was hard for me. I did not know when to do it or what to say. I did not want to spoil my teen so that he thinks we have to do everything together. \n\nBut I really wanted to build my relationship with my teen and I wanted him to open up about what was troubling him. So we tried the One-on-One Time. \n\nFirst, it felt weird, but it turned out to be fun! Now we watch his TV programme together and we chat about it. And we can even talk about how my son is changing into adolescence, and even about girlfriends and those things!", + "teen_testimonial_script": "When my mother asked to spend time with me, I thought “Maybe something is wrong, maybe she is sick”. But she said “No, I just want to spend time.” I was sceptical, but I accepted. \n\nShe asked me what I like doing. It was strange and I was not comfortable, because she never ever spent time with me on my own. \n\nThe more she kept on trying and we spent this time together, it felt really nice. She got to share her own childhood with me, things I never heard before. That helped me to also share what is going on in my life. We even talk about boyfriends and about problems I have. I know I can talk to my mother now." + }, + { + "id": "w_praise", + "number": 3, + "image_asset": "plh_images/workshops/w_praise/tools.svg", + "relax_data": "@data.relax.relax_3", + "something_fun_data": "@data.something_fun.reflect_positive", + "intro_audio_asset": "plh_audio/topic_intros/w_praise_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_praise.mp3", + "title": "Praise", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Praise" + }, + "in_text_title": { + "eng": "**Praise** @global.workshop" + }, + "description": { + "eng": "Praise helps teens show more positive behaviour." + }, + "tools": { + "eng": "How to praise" + }, + "caregiver_testimonial_script": { + "eng": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!" + }, + "teen_testimonial_script": { + "eng": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." + } + }, + "in_text_title": "**Praise** @global.workshop", + "description": "Praise helps teens show more positive behaviour.", + "tools": "How to praise", + "caregiver_testimonial_script": "When we learned about this praising thing, I thought “We were never praised for things as teenagers, so why should we start now?”. But I got interested when I learned what the benefits of praising could be. \n\nRight after the weekly workshop, I noticed my teen doing what they do every day: Washing the dishes. And I said “Thank you for washing the dishes, my girl, it really makes me happy that you are helping out.” My teen was smiling and she even came to give me a hug, which she never does. \n\nThis praising business is hard. I still forget sometimes or give praise at the same time as criticism. But praising really makes a difference. I never thought that a simple praise could make such a change in a person!", + "teen_testimonial_script": "I was grateful that my mother learned about praise. \n\nMy mother always noticed when I was doing something wrong. She would shout at me and hit me. \n\nBut when my mother did the workshop, she would praise me for little things. First I thought “What is going on?” but then it continued. I liked it so I did more good things I thought she would like. \n\nIt feels great that my mother sees the good things I do, and not just the bad things.\n\nI even said it to her once. During @data.workshop.w_1on1.title, I said “Thank you, mom, for saying something nice when I do things well, not only when I do things wrong.” This made us both very happy." + }, + { + "id": "w_instruct", + "number": 4, + "image_asset": "plh_images/workshops/w_instruct/tools.svg", + "relax_data": "@data.relax.relax_4", + "something_fun_data": "@data.something_fun.dance_moves", + "intro_audio_asset": "plh_audio/topic_intros/w_instruct_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_instruct.mp3", + "title": "Positive Instructions", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Positive Instructions" + }, + "in_text_title": { + "eng": "**Positive Instructions** @global.workshop" + }, + "description": { + "eng": "Teens follow instructions that are positive more easily." + }, + "tools": { + "eng": "How to give positive instructions" + }, + "caregiver_testimonial_script": { + "eng": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot." + }, + "teen_testimonial_script": { + "eng": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." + } + }, + "in_text_title": "**Positive Instructions** @global.workshop", + "description": "Teens follow instructions that are positive more easily.", + "tools": "How to give positive instructions", + "caregiver_testimonial_script": "Before, I used to raise my teens the way I was raised: I would tell them “don’t do this, don’t do that.” We used to fight a lot, but things have really changed when I learned about giving positive instructions.\n\nNow I focus on the behaviour I want to see, and give clear and simple instructions to my teens. It took time to learn to say “please do this” instead of “don’t do this.” \n\nMy teens and even my husband tell me that they love this way of doing things, because now they know what needs to be done. My teen said one day “I really love this new mom,” and my own stress levels have come down a lot.", + "teen_testimonial_script": "At first, I did not care much that my mother was doing @global.parent_app. But then I started to see my mother change how she communicated with us.\n\nOne day, when I was going out with my friends, she said I must be home by 6pm. I was like “Hmmm okay,” because she normally did not give clear instructions on what she wanted - she would just say nothing and then shout at me for being late when I got home. \n\nWhen I got home around 5pm, my mother gave me a hug and said “Thank you for being on time.” It was strange, but I liked it. \n\nSince then, we have much clearer communication in the house." + }, + { + "id": "w_stress", + "number": 5, + "image_asset": "plh_images/workshops/w_stress/tools.svg", + "relax_data": "@data.relax.relax_7", + "something_fun_data": "@data.something_fun.check_in_chat", + "intro_audio_asset": "plh_audio/topic_intros/w_stress_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_stress.mp3", + "title": "Managing Stress", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Managing Stress" + }, + "in_text_title": { + "eng": "**Managing Stress** @global.workshop" + }, + "description": { + "eng": "Life is stressful. Staying calm helps us handle any situation better." + }, + "tools": { + "eng": "How to manage stress" + }, + "caregiver_testimonial_script": { + "eng": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!" + }, + "teen_testimonial_script": { + "eng": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." + } + }, + "in_text_title": "**Managing Stress** @global.workshop", + "description": "Life is stressful. Staying calm helps us handle any situation better.", + "tools": "How to manage stress", + "caregiver_testimonial_script": "Life is tough sometimes. Before I joined @global.parent_app, I used to be grumpy at all times. I would take out my anger on everyone at home, not only my teens but even my husband as well. They would run away when I came home, because they knew I would start yelling at them. \n\nLearning to take a pause and breathe was difficult at first, but every time I tried it, it helped me to calm down. Now my teens are no longer running away when I come home, and they actually listen better than when I used to shout at them!", + "teen_testimonial_script": "Whenever I would do something wrong, my father would get so angry at me and beat me. He would not even listen to me, and I would get so angry as well at him and everyone else. \n\nNow, when he gets angry, he first takes a few deep breaths before he responds. It makes everyone calm down instead of causing a big fight.\n\nIt really helped me at home and at school, because even me I am no longer slashing everyone and I am no longer this moody person. When I feel really angry or stressed, I also take deep breaths like my father does. I am a different person." + }, + { + "id": "w_money", + "number": 6, + "image_asset": "plh_images/workshops/w_money/tools.svg", + "relax_data": "@data.relax.relax_8", + "something_fun_data": "@data.something_fun.dream_travel", + "intro_audio_asset": "plh_audio/topic_intros/w_money_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_money.mp3", + "title": "Family Budgets", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Family Budgets" + }, + "in_text_title": { + "eng": "**Family Budgets** @global.workshop" + }, + "description": { + "eng": "Making a plan to budget and save as a family prevents disagreements." + }, + "tools": { + "eng": "How to budget & save" + }, + "caregiver_testimonial_script": { + "eng": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account." + }, + "teen_testimonial_script": { + "eng": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." + } + }, + "in_text_title": "**Family Budgets** @global.workshop", + "description": "Making a plan to budget and save as a family prevents disagreements.", + "tools": "How to budget & save", + "caregiver_testimonial_script": "Saving and budgeting helps me as a parent, and it helps my teens as well to understand where the money goes.\n\nMy teens always asked for a lot of things and they did not understand when I said “I do not have money.” They would say “but you have a job!” \n\nI sat down with them and showed them all the things we pay for and how much is left. They understand now and even give ideas on how we can save to work towards our goals like new shoes or a birthday and bigger goals like their school fees. For the older one, I even opened a savings account.", + "teen_testimonial_script": "I used to ask my mom to buy me nice clothes all the time. Each time, she would say “I do not have money,” but I knew that she was getting money from my uncle. I did not understand why she refused to buy me clothes. I thought at some point “she does not love me.”\n\nBut one day, she called me to sit down with her and asked “what are the needs and wants in our house.” I started to list all my needs and wants. Then my mother helped me to also think about the family needs. Now I understand where our money is going, towards the things we need as a family. \n\nFrom that day, I understand I cannot come in and ask any time. Now, when I want something, I wait till the month-end when we all discuss the budget together to see if it fits. We understand each other better now." + }, + { + "id": "w_rules", + "number": 7, + "image_asset": "plh_images/workshops/w_rules/tools.svg", + "relax_data": "@data.relax.relax_9", + "something_fun_data": "@data.something_fun.famous_party", + "intro_audio_asset": "plh_audio/topic_intros/w_rules_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_rules.mp3", + "title": "Rules", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Rules" + }, + "in_text_title": { + "eng": "**Rules** @global.workshop" + }, + "description": { + "eng": "Teens follow rules more when you create them together." + }, + "tools": { + "eng": "How to create rules" + }, + "caregiver_testimonial_script": { + "eng": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules." + }, + "teen_testimonial_script": { + "eng": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." + } + }, + "in_text_title": "**Rules** @global.workshop", + "description": "Teens follow rules more when you create them together.", + "tools": "How to create rules", + "caregiver_testimonial_script": "My teenagers always just disappeared. I did not know where they were, and I would get so worried and angry with them. I used to say “this is my house, and these are my rules, if you do not want to follow them you can leave and stay in your own place.” \n\nWhen we learned in @global.parent_app about rules, I learned that there are rules for teens and for adults and for everyone. If we follow the rules as parents, our teens will follow our example.\n\nI explained my worry and we all agreed: We all follow the rule and say where we are going when we leave the house. Coming up with rules together helped us a lot, as my teens do not see me anymore as that annoying parent that just makes up unnecessary rules.", + "teen_testimonial_script": "I never liked rules and I used to forget rules a lot. \n\nOne day, I was playing with my friends. The rule at home was that we should be in the yard by 6pm, but I forgot again. By 6.30 it was getting dark and I was still outside and playing with my phone. Then a boy came, grabbed my phone and ran away. \n\nI understood that rules can really help to keep us safe, so I changed my behaviour and I was in the yard by 5pm from then." + }, + { + "id": "w_consequence", + "number": 8, + "image_asset": "plh_images/workshops/w_consequence/tools.svg", + "relax_data": "@data.relax.relax_10", + "something_fun_data": "@data.something_fun.two_truths", + "intro_audio_asset": "plh_audio/topic_intros/w_consequence_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_consequence.mp3", + "title": "Calm Consequences", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Calm Consequences" + }, + "in_text_title": { + "eng": "**Calm Consequences** @global.workshop" + }, + "description": { + "eng": "Consequences help us discipline our teens in a calm way – it works." + }, + "tools": { + "eng": "How to give calm consequences" + }, + "caregiver_testimonial_script": { + "eng": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!" + }, + "teen_testimonial_script": { + "eng": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." + } + }, + "in_text_title": "**Calm Consequences** @global.workshop", + "description": "Consequences help us discipline our teens in a calm way – it works.", + "tools": "How to give calm consequences", + "caregiver_testimonial_script": "When my teenagers did something to make me angry, I would shout at them and punish them right away. But the next time they did it again! I could not understand why they did not hear me even when I shouted. \n\n@global.parent_app helped me understand that my teenagers will listen to me more when I am calm. So, when something happens, I take a deep breath and say “we will talk about this later when we are both calm.”\n\nWe even agree on the consequences together now before something goes wrong. This has worked wonders - I have seen a huge change in my teen’s behaviour now that they are more involved, and I have less stress. \n\nI wish I knew this long ago, but it is never too late to start!", + "teen_testimonial_script": "My mom and dad would always punish me when they were angry with me. They would shout at me and I would also get angry. I often did not follow the rules, because they were too harsh, I did not understand what they were saying, or I would not even bother listening to them, because we were all angry.\n\nOne day, they asked me: Let's think together what the consequence should be for not coming home in time. It was great to give my view – before something happens that makes us all angry. We are all calm and agree first. It is easier for me to follow the rules now because I know I agreed on the rule and on the consequence if I do not follow the rule." + }, + { + "id": "w_solve", + "number": 9, + "image_asset": "plh_images/workshops/w_solve/tools.svg", + "relax_data": "@data.relax.relax_11", + "something_fun_data": "@data.something_fun.mirror", + "intro_audio_asset": "plh_audio/topic_intros/w_solve_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_solve.mp3", + "title": "Problem Solving", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Problem Solving" + }, + "in_text_title": { + "eng": "**Problem Solving** @global.workshop" + }, + "description": { + "eng": "Together with your teen, you can handle any challenge." + }, + "tools": { + "eng": "How to solve problems" + }, + "caregiver_testimonial_script": { + "eng": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now." + }, + "teen_testimonial_script": { + "eng": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." + } + }, + "in_text_title": "**Problem Solving** @global.workshop", + "description": "Together with your teen, you can handle any challenge.", + "tools": "How to solve problems", + "caregiver_testimonial_script": "I did not have a good relationship with my daughter. I was always shouting at her, and she was refusing to go to school. \n\nOnly when I started spending One-on-One time with her, I realised that she did not want to go to school because she was being bullied at school. We sat down and used the 6 steps of problem solving. We identified the problem, and figured out solutions together: “What can I do as a parent so you can attend school and feel safe?”\n\nWe agreed I would go talk to the teacher to find a way forward. We really found the solutions together, and we are closer now.", + "teen_testimonial_script": "When my father introduced the problem-solving steps to me, it helped me with my family, but it also helped me with my friends. \n\nI told my friends about the steps, and now when we are arguing we sit down and everyone comes up with solutions. We then look for the negatives and positives of each solution, and we agree “okay let’s try this one.” \n\nMy friends even took it to their own homes, and it is helping with their families as well! \n\nIt is great when others listen to you and accept your ideas even though you are young. We can all bring that harmony with our friends and family." + }, + { + "id": "w_safe", + "number": 10, + "image_asset": "plh_images/workshops/w_safe/tools.svg", + "relax_data": "@data.relax.relax_12", + "something_fun_data": "@data.something_fun.time_machine", + "intro_audio_asset": "plh_audio/topic_intros/w_safe_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_safe.mp3", + "title": "Teen Safety", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Teen Safety" + }, + "in_text_title": { + "eng": "**Teen Safety** @global.workshop" + }, + "description": { + "eng": "Talking and planning helps prevent dangerous situations, in-person and online." + }, + "tools": { + "eng": "How to keep your teen safe" + }, + "caregiver_testimonial_script": { + "eng": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe." + }, + "teen_testimonial_script": { + "eng": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" + } + }, + "in_text_title": "**Teen Safety** @global.workshop", + "description": "Talking and planning helps prevent dangerous situations, in-person and online.", + "tools": "How to keep your teen safe", + "caregiver_testimonial_script": "I was so grateful to make the safety plan with my teen. I thought I knew which areas are safe for my teen and which are not. But when we made the safety plan together, I realised that my girl knew more areas that I was not aware of. \n\nI also thought she was safe at school, but through this activity I realised she was being bullied and the teachers did not do anything about it.\n\nThe more we talked, the more I understood and got information from my teen. That really helped me to protect my teen and keep her safe.", + "teen_testimonial_script": "When my friends or I got into trouble, I would always try to hide it from my mother because she would get so angry and shout at me. \n\nWhen we made the map of safe and unsafe places, I learned a lot – also why it is dangerous to share every picture online. My mother told me I can always ask her if there is a problem and she promised she would not get mad. \n\nShe kept her promise, so now if I have a problem or I do not feel safe I know we can always come up with a solution together. I can even talk to my mother about the things I do online now!" + }, + { + "id": "w_crisis", + "number": 11, + "image_asset": "plh_images/workshops/w_crisis/tools.svg", + "relax_data": "@data.relax.relax_13", + "something_fun_data": "@data.something_fun.superpowers", + "intro_audio_asset": "plh_audio/topic_intros/w_crisis_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_crisis.mp3", + "title": "Dealing with Crisis", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "caregiver_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + }, + "teen_testimonial_script": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true + } + }, + "_translatedFields": { + "title": { + "eng": "Dealing with Crisis" + }, + "in_text_title": { + "eng": "**Dealing with Crisis** @global.workshop" + }, + "description": { + "eng": "A crisis can happen in any family. You can be prepared." + }, + "tools": { + "eng": "How to deal with crisis" + }, + "caregiver_testimonial_script": { + "eng": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!" + }, + "teen_testimonial_script": { + "eng": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." + } + }, + "in_text_title": "**Dealing with Crisis** @global.workshop", + "description": "A crisis can happen in any family. You can be prepared.", + "tools": "How to deal with crisis", + "caregiver_testimonial_script": "My teen used to be so angry all the time. He would never listen and we would get into big arguments every day. Through @global.parent_app, I started spending more time with my teen and strengthening our relationship. One day he shared with me that he was part of a gang but he wanted to get out. \n\nWe made short-term and long-term plans together on how we could do that. Our life looks so different now!", + "teen_testimonial_script": "Two years ago, I was raped by my uncle who stayed in our yard. I did not tell my mother, because I was afraid she would hit me, shout at me, or even throw me out of the house. I did not have anywhere else to go. \n\nWhen my mother started with @global.parent_app, she started spending more time together. I was still afraid, but in the end I shared it with my mother. My mom did not shout, but she listened and told me it is not my fault. We went to the police and the clinic together. I am so grateful I do not have to carry this secret anymore." + }, + { + "id": "w_celebrate", + "number": 12, + "image_asset": "plh_images/workshops/w_celebrate/tools.svg", + "relax_data": "@data.relax.relax_14", + "intro_audio_asset": "plh_audio/topic_intros/w_celebrate_intro.mp3", + "caregiver_testimonial_audio_asset": "plh_audio/testimonials/caregiver/caregiver_test_w_celebrate.mp3", + "title": "Celebration and Next Steps", + "_translations": { + "title": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + }, + "in_text_title": { + "tz_sw": true + }, + "description": { + "tz_sw": true + }, + "tools": { + "tz_sw": true, + "za_af": true, + "za_st": true, + "za_tn": true, + "za_xh": true, + "za_zu": true + } + }, + "_translatedFields": { + "title": { + "eng": "Celebration and Next Steps" + }, + "in_text_title": { + "eng": "**Celebration and Next Steps** @global.workshop" + }, + "description": { + "eng": "Celebrate everything you learned and continue to support your family." + }, + "tools": { + "eng": "How to support each other" + } + }, + "in_text_title": "**Celebration and Next Steps** @global.workshop", + "description": "Celebrate everything you learned and continue to support your family.", + "tools": "How to support each other" + } + ], + "_xlsxPath": "global/data/workshop_data/workshop_data_list.xlsx" +} diff --git a/packages/shared/src/models/dataPipe/index.ts b/packages/shared/src/models/dataPipe/index.ts new file mode 100644 index 0000000000..7505db2165 --- /dev/null +++ b/packages/shared/src/models/dataPipe/index.ts @@ -0,0 +1,3 @@ +export * from "./pipe"; +export * from "./utils"; +export * from "./operators"; diff --git a/packages/shared/src/models/dataPipe/operators/appendColumns.spec.ts b/packages/shared/src/models/dataPipe/operators/appendColumns.spec.ts new file mode 100644 index 0000000000..518a1913d0 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/appendColumns.spec.ts @@ -0,0 +1,17 @@ +import { DataFrame } from "danfojs"; +import append_columns from "./appendColumns"; +import testData from "../testData.spec"; + +describe("Append Columns Operator", () => { + it("appends columns with dynamic data", () => { + const testDf = new DataFrame(testData.names); + const output = new append_columns(testDf, [ + "full_name : @row.first_name @row.last_name", + "greeting : Hello @row.full_name", + ]).apply(); + const testOutputFullName = output.column("full_name").values[2]; + expect(testOutputFullName).toEqual("Charles Babbage"); + const testOutputGreeting = output.column("greeting").values[2]; + expect(testOutputGreeting).toEqual("Hello Charles Babbage"); + }); +}); diff --git a/packages/shared/src/models/dataPipe/operators/appendColumns.ts b/packages/shared/src/models/dataPipe/operators/appendColumns.ts new file mode 100644 index 0000000000..e3ed57c636 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/appendColumns.ts @@ -0,0 +1,40 @@ +import { DataFrame, toJSON } from "danfojs"; +import { AppStringEvaluator } from "../../appStringEvaluator/appStringEvaluator"; +import BaseOperator from "./base"; + +interface IParsedArg { + key: string; + valueExpression: string; +} + +class AppendColumnsOperator extends BaseOperator { + public args_list: IParsedArg[]; + /** Tracking hashmap used in extended map operator to remove non-mapped columns after */ + public mappedColumns: { [key: string]: boolean } = {}; + constructor(df: DataFrame, args_list: any) { + super(df, args_list); + } + // args are simply evaluated as JS statements and do not require additional parsing + parseArg(arg: string): IParsedArg { + const [key, valueExpression] = arg.split(":").map((a) => a.trim()); + return { key, valueExpression }; + } + validateArg(arg: IParsedArg): boolean { + return arg.key && arg.valueExpression !== undefined; + } + apply() { + const evaluator = new AppStringEvaluator(); + for (const { key, valueExpression } of this.args_list) { + const rows = toJSON(this.df) as any[]; + const appendValues = rows.map((row) => { + evaluator.setExecutionContext({ row }); + const evaluated = evaluator.evaluate(valueExpression); + return evaluated; + }); + this.df.addColumn(key, appendValues, { inplace: true }); + this.mappedColumns[key] = true; + } + return this.df; + } +} +export default AppendColumnsOperator; diff --git a/packages/shared/src/models/dataPipe/operators/base.ts b/packages/shared/src/models/dataPipe/operators/base.ts new file mode 100644 index 0000000000..738f122a4e --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/base.ts @@ -0,0 +1,34 @@ +import { DataFrame } from "danfojs"; +import type { DataPipe } from "../pipe"; + +type IParsedArg = any; + +class BaseOperator { + public args_list: any[] = []; + constructor(public df: DataFrame, args_list: string[] = [], public pipe?: DataPipe) { + this.args_list = args_list.map((a) => this.parseArg(a)); + this.validate(); + } + parseArg(arg: any): IParsedArg { + return arg; + } + validateArg(arg: any, index: number): Boolean | String { + return true; + } + apply() { + return this.df; + } + + private validate() { + const validatedArgs = this.args_list.map((a, i) => ({ + a, + validation: this.validateArg(a, i), + })); + const invalidArgs = validatedArgs.filter((a) => a.validation !== true); + if (invalidArgs.length > 0) { + console.error("invalid args\n", invalidArgs); + throw new Error(`Arg validation error`); + } + } +} +export default BaseOperator; diff --git a/packages/shared/src/models/dataPipe/operators/concat.spec.ts b/packages/shared/src/models/dataPipe/operators/concat.spec.ts new file mode 100644 index 0000000000..a36b275eb8 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/concat.spec.ts @@ -0,0 +1,125 @@ +import { DataFrame, toJSON } from "danfojs"; +import { normalizeData } from ".."; +import { DataPipe } from "../pipe"; +import testData from "../testData.spec"; +import concat from "./concat"; + +(testData as any).concat_names = [ + { + id: "id_5", + first_name: "Edward", + last_name: "Lorenz", + // year_of_birth omitted, additional field added + additonal_field: "EL", + }, + { + id: "id_6", + first_name: "Felix", + last_name: "Klein", + // year_of_birth omitted, additional field added + additonal_field: "FK", + }, +]; + +describe("Concat Operator", () => { + const emptyDf = new DataFrame([]); + const testPipe: DataPipe = new DataPipe([], testData); + it("Throws on missing data_list", () => { + expect(() => new concat(emptyDf, ["missing_list"], testPipe)).toThrowError( + "Arg validation error" + ); + }); + it("Throws if concatenating lists with duplicate ids", () => { + const duplicateDf = new DataFrame([{ id: "id_3", first_name: "Duplicated" }]); + expect(() => new concat(duplicateDf, ["names"], testPipe).apply()).toThrowError( + "[names] Multiple entries exist for index: id_3" + ); + }); + it("concatenates multiple lists", () => { + const output = new concat(emptyDf, ["names", "concat_names"], testPipe).apply(); + expect(output.index).toEqual(["id_1", "id_2", "id_3", "id_4", "id_5", "id_6"]); + const expectedCols = ["id", "first_name", "last_name", "year_of_birth", "additonal_field"]; + expect(output.columns).toEqual(expectedCols); + }); + it("concatenates complex example", () => { + const { debugData1, debugData2, outputExpected } = DEBUG_TEST_DATA(); + (testData as any).debugData1 = debugData1; + (testData as any).debugData2 = debugData2; + const output = new concat(emptyDf, ["debugData1", "debugData2"], testPipe).apply(); + expect(toJSON(output)).toEqual(outputExpected); + }); +}); + +/** Example concatenating 2 lists containing irregular shaped data */ +function DEBUG_TEST_DATA() { + const debugData1 = [ + { + id: "welcome_individual", + individual: true, + together: false, + priority: 1, + }, + { + id: "care_together", + individual: false, + together: true, + priority: 2, + }, + ]; + // Importantly debugData2's first entry does not contain all columns (requires normalising) + // and contains columns in different order to debugData1 + // NOTE - ordinarily this will be normalised during inputSources parsing + const debugData2 = normalizeData([ + { + id: "question_1", + template: "w_praise_question_1", + individual: true, + together: false, + priority: 11, + }, + { + id: "read", + subtask_group: "read", + template: "w_praise_read", + individual: true, + together: true, + priority: 12, + }, + ]); + // concatenated data should contain all rows and fill missing values + const outputExpected = normalizeData([ + { + id: "welcome_individual", + individual: true, + together: false, + priority: 1, + template: undefined, + subtask_group: undefined, + }, + { + id: "care_together", + individual: false, + together: true, + priority: 2, + template: undefined, + subtask_group: undefined, + }, + { + id: "question_1", + individual: true, + together: false, + priority: 11, + template: "w_praise_question_1", + subtask_group: undefined, + }, + { + id: "read", + individual: true, + together: true, + priority: 12, + template: "w_praise_read", + subtask_group: "read", + }, + ]); + return { debugData1, debugData2, outputExpected }; +} diff --git a/packages/shared/src/models/dataPipe/operators/concat.ts b/packages/shared/src/models/dataPipe/operators/concat.ts new file mode 100644 index 0000000000..f90426b027 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/concat.ts @@ -0,0 +1,84 @@ +import { DataFrame, concat } from "danfojs"; +import type { DataPipe } from "../pipe"; +import { setIndexColumn } from "../utils"; +import BaseOperator from "./base"; + +type ILoadedDatalist = any; // datalist + +class ConcatOperator extends BaseOperator { + public args_list: { data: any; name: string }[]; + private indexColumn = "id"; + /** When processing arg keep track of active for logging purposes */ + private activeArg: { data: any; name: string }; + constructor(df: DataFrame, args_list: any, pipe: DataPipe) { + super(df, args_list, pipe); + } + + // load input data list from arg, populate error object if not exist for use in validation step + parseArg(arg: any): ILoadedDatalist { + const data = this.pipe.inputSources[arg]; + if (!data) { + return { error: `Data list does not exists: ${arg}` }; + } + return { data, name: arg }; + } + + validateArg(datalist: ILoadedDatalist) { + return datalist.error ?? true; + } + + apply() { + for (const arg of this.args_list) { + this.activeArg = arg; + this.df = this.applyConcat(arg.data); + } + return this.df; + } + private applyConcat(data: any): DataFrame { + let concatDf = new DataFrame(data); + // empty dataframes throw error on concat, so just return the other (or existing) dataframe instead + if (this.df.index.length === 0) return concatDf; + if (concatDf.index.length === 0) return this.df; + // ensure indices match for use in duplicate check + setIndexColumn(this.df, this.indexColumn); + setIndexColumn(concatDf, this.indexColumn); + this.checkDuplicateRows(this.df, concatDf); + this.ensureDfColumnsMatch(this.df, concatDf); + const concatenatedDf = concat({ dfList: [this.df, concatDf], axis: 0 }) as DataFrame; + setIndexColumn(concatenatedDf, this.indexColumn); + return concatenatedDf; + } + + /** + * Take two dataframes and compare columns. Where a column appears in one dataframe + * and not the other create it with undefined values across all rows + */ + private ensureDfColumnsMatch(df1: DataFrame, df2: DataFrame) { + const [df1RowCount] = df1.shape; + const [df2RowCount] = df2.shape; + for (const column of df2.columns) { + if (!df1.columns.includes(column)) { + df1.addColumn(column, new Array(df1RowCount).fill(undefined), { + inplace: true, + }); + } + } + for (const column of df1.columns) { + if (!df2.columns.includes(column)) { + df2.addColumn(column, new Array(df2RowCount).fill(undefined), { + inplace: true, + }); + } + } + } + + private checkDuplicateRows(df1: DataFrame, df2: DataFrame) { + const duplicateIndex = df1.index.find((index) => df2.index.includes(index)); + if (duplicateIndex) { + throw new Error( + `[${this.activeArg.name}] Multiple entries exist for index: ${duplicateIndex}` + ); + } + } +} +export default ConcatOperator; diff --git a/packages/shared/src/models/dataPipe/operators/filter.spec.ts b/packages/shared/src/models/dataPipe/operators/filter.spec.ts new file mode 100644 index 0000000000..0beb5b54e9 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/filter.spec.ts @@ -0,0 +1,35 @@ +import { DataFrame } from "danfojs"; +import filters from "./filter"; +import testData from "../testData.spec"; +const { filter, filter_any } = filters; + +describe("Filter", () => { + it("Filters data with ALL condtion", () => { + const testDf = new DataFrame(testData.names); + const output = new filter(testDf, [ + "last_name.startsWith('B')", + "year_of_birth > 1750", + ]).apply(); + const outputIDs = output.column("id").values; + expect(outputIDs).toEqual(["id_3"]); + }); + it("Filters data with ANY condition", () => { + const testDf = new DataFrame(testData.names); + const output = new filter_any(testDf, [ + "last_name.startsWith('B')", + "year_of_birth > 1750", + ]).apply(); + const outputIDs = output.column("id").values; + expect(outputIDs).toEqual(["id_1", "id_3", "id_4"]); + }); + it("Filters with 'this' context", () => { + const nestedData = testData.names.map((entry) => { + entry["nested"] = { first_name: entry.first_name }; + return entry; + }); + const testDf = new DataFrame(nestedData); + const output = new filter(testDf, ["this.nested.first_name === 'Ada'"]).apply(); + const outputIDs = output.column("first_name").values; + expect(outputIDs).toEqual(["Ada"]); + }); +}); diff --git a/packages/shared/src/models/dataPipe/operators/filter.ts b/packages/shared/src/models/dataPipe/operators/filter.ts new file mode 100644 index 0000000000..21a360d624 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/filter.ts @@ -0,0 +1,62 @@ +import { DataFrame, toJSON } from "danfojs"; +import { JSEvaluator } from "../../jsEvaluator/jsEvaluator"; +import BaseOperator from "./base"; + +class FilterOperator extends BaseOperator { + public filterConditions: string[] = []; + constructor(df: DataFrame, args_list: any) { + super(df, args_list); + this.filterConditions = this.args_list; + } + // args are simply evaluated as JS statements and do not require additional parsing + parseArg(arg: string) { + return arg; + } + validateArg(arg: string): boolean { + return typeof arg === "string"; + } + apply() { + const rows = toJSON(this.df) as any[]; + const filtered = rows.filter((r) => this.satisfiesFilters(r)); + return new DataFrame(filtered); + } + + public satisfiesFilters(row: any) { + const evaluator = new JSEvaluator(); + evaluator.setGlobalContext({ constants: row }); + return this.filterConditions.every((condition) => { + try { + /** + * row fields can be accessed both from global and local context, e.g. + * `id === 'some_id' and `this.id === 'some_id'`. This is to enable access to + * nested data objects which are stringified global context + */ + const result = evaluator.evaluate(condition, row); + return result; + } catch (error) { + console.error("Filter evaluation failed", { row, condition, error }); + throw error; + } + }); + } +} + +class FilterAnyOperator extends FilterOperator { + public satisfiesFilters(row: any) { + const evaluator = new JSEvaluator(); + evaluator.setGlobalContext({ constants: row }); + return ( + this.filterConditions.find((condition) => { + try { + const result = evaluator.evaluate(condition, row); + return result; + } catch (error) { + console.error("Filter evaluation failed", { row, condition, error }); + throw error; + } + }) !== undefined + ); + } +} + +export default { filter: FilterOperator, filter_any: FilterAnyOperator }; diff --git a/packages/shared/src/models/dataPipe/operators/index.ts b/packages/shared/src/models/dataPipe/operators/index.ts new file mode 100644 index 0000000000..51566e7948 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/index.ts @@ -0,0 +1,21 @@ +import append_columns from "./appendColumns"; +import BaseOperator from "./base"; +import concat from "./concat"; +import filters from "./filter"; +const { filter, filter_any } = filters; +import map from "./map"; +import merge from "./merge"; +import sort from "./sort"; + +export const OPERATORS = { + append_columns, + concat, + filter, + filter_any, + map, + merge, + sort, +}; + +export type IOperatorName = keyof typeof OPERATORS; +export type IBaseOperator = typeof BaseOperator; diff --git a/packages/shared/src/models/dataPipe/operators/map.spec.ts b/packages/shared/src/models/dataPipe/operators/map.spec.ts new file mode 100644 index 0000000000..888ccceff6 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/map.spec.ts @@ -0,0 +1,27 @@ +import { DataFrame } from "danfojs"; +import testData from "../testData.spec"; +import map from "./map"; + +describe("Map Operator", () => { + const testDf = new DataFrame(testData.names); + it("Throws on missing list", () => { + // throws on missing list + expect(() => new map(testDf, ["full_name | @row.first_name @row.last_name"])).toThrow( + new Error("Arg validation error") + ); + }); + it("Maps data with dynamic entries", () => { + // merges data - additional nationality column appended for all entries and populated for available + const output = new map(testDf, [ + "id: @row.id", + "full_name : @row.first_name @row.last_name", + ]).apply(); + expect(output.columns).toEqual(["id", "full_name"]); + expect(output.values).toEqual([ + ["id_1", "Ada Lovelace"], + ["id_2", "Blaise Pascal"], + ["id_3", "Charles Babbage"], + ["id_4", "Daniel Bernoulli"], + ]); + }); +}); diff --git a/packages/shared/src/models/dataPipe/operators/map.ts b/packages/shared/src/models/dataPipe/operators/map.ts new file mode 100644 index 0000000000..1d53ee074f --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/map.ts @@ -0,0 +1,16 @@ +import { DataFrame } from "danfojs"; +import AppendColumnsOperator from "./appendColumns"; + +class MapOperator extends AppendColumnsOperator { + constructor(df: DataFrame, args_list: any) { + super(df, args_list); + } + apply() { + // append columns using parent operator + super.apply(); + const droppedColumns = this.df.columns.filter((c) => !this.mappedColumns[c]); + this.df.drop({ columns: droppedColumns, inplace: true }); + return this.df; + } +} +export default MapOperator; diff --git a/packages/shared/src/models/dataPipe/operators/merge.spec.ts b/packages/shared/src/models/dataPipe/operators/merge.spec.ts new file mode 100644 index 0000000000..6d0cfb9ac9 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/merge.spec.ts @@ -0,0 +1,43 @@ +import { DataFrame } from "danfojs"; +import { DataPipe } from "../pipe"; +import testData from "../testData.spec"; +import merge from "./merge"; + +(testData as any).merge_nationality = [ + { + id: "invalid_id", + nationality: "German", + }, + { + id: "id_1", + nationality: "British", + first_name: "override", + }, + { + id: "id_2", + nationality: "French", + }, +]; + +describe("Merge Operator", () => { + const testDf = new DataFrame(testData.names); + const testPipe: DataPipe = new DataPipe([], testData); + + it("Throws on missing list", () => { + // throws on missing list + expect(() => new merge(testDf, ["names", "missing_list"], testPipe)).toThrow( + new Error("Arg validation error") + ); + }); + it("Merges multiple lists", () => { + // merges data - additional nationality column appended for all entries and populated for available + const output = new merge(testDf, ["merge_nationality"], testPipe).apply(); + expect(output.index).toEqual(["id_1", "id_2", "id_3", "id_4"]); + // merges new nationality column + const expectedNationalities = ["British", "French", undefined, undefined]; + expect(output.column("nationality").values).toEqual(expectedNationalities); + // merges existing name overrides + const expectedNames = ["override", "Blaise", "Charles", "Daniel"]; + expect(output.column("first_name").values).toEqual(expectedNames); + }); +}); diff --git a/packages/shared/src/models/dataPipe/operators/merge.ts b/packages/shared/src/models/dataPipe/operators/merge.ts new file mode 100644 index 0000000000..e2105489fa --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/merge.ts @@ -0,0 +1,82 @@ +import { DataFrame, merge, toJSON } from "danfojs"; +import { DataPipe } from "../pipe"; +import { replaceNaN, arrayToHashmap, setIndexColumn } from "../utils"; +import BaseOperator from "./base"; + +type ILoadedDatalist = any; // datalist + +/** Merge multiple datalists together, joining columns by id and replacing values where overrides exist **/ +class MergeOperator extends BaseOperator { + public args_list: ILoadedDatalist[]; + private indexColumn = "id"; + constructor(df: DataFrame, args_list: string[], pipe: DataPipe) { + super(df, args_list, pipe); + } + // load input data list from arg, populate error object if not exist for use in validation step + parseArg(arg: string): ILoadedDatalist { + return this.pipe.inputSources[arg] ?? { error: `Data list does not exists: ${arg}` }; + } + validateArg(datalist: ILoadedDatalist) { + return datalist.error ?? true; + } + + apply() { + setIndexColumn(this.df, this.indexColumn); + for (const dataList of this.args_list) { + this.df = this.replaceUpdatedValues(dataList); + this.df = this.joinNewColumns(dataList); + } + replaceNaN(this.df, undefined); + return this.df; + } + + /** Join any new columns from right dataframe into left dataframe by merge key **/ + private joinNewColumns(data: any[]) { + const left = this.df; + const joinDf = new DataFrame(data); + setIndexColumn(joinDf, this.indexColumn); + + // Drop columns from joinDf that already exists in left (except merge key) + const droppedColumns = joinDf.columns.filter( + (column) => column !== this.indexColumn && left.columns.includes(column) + ); + joinDf.drop({ columns: droppedColumns, inplace: true }); + const merged = merge({ left, right: joinDf, on: ["id"], how: "left" }); + setIndexColumn(merged, this.indexColumn); + return merged; + } + + /** Replace any values updated from the data in the original dataframe **/ + private replaceUpdatedValues(data: any[]) { + const replacments = new DataFrame(data); + setIndexColumn(replacments, this.indexColumn); + + // remove any columns that does not exist in left + const droppedColumns = replacments.columns.filter( + (column) => column !== this.indexColumn && !this.df.columns.includes(column) + ); + replacments.drop({ columns: droppedColumns, inplace: true }); + // remove any rows that does not exist in left + const droppedIndexes = replacments.index.filter((i) => !this.df.index.includes(i)); + replacments.drop({ index: droppedIndexes, inplace: true }); + + // replace all values in left with values from replacments where defined + const replaceHashmap = arrayToHashmap(toJSON(replacments) as any, this.indexColumn); + + // handle replacement by looping over all rows and replacing values where override defined + const replaceDf = this.df.apply((row: any[]) => { + const id = row[0]; + return row.map((value, columnIndex) => { + const columnName = this.df.columns[columnIndex]; + const replaceValue = replaceHashmap[id]?.[columnName]; + if (replaceValue !== undefined && replaceValue !== value) { + return replaceValue; + } + return value; + }); + }); + + return replaceDf as DataFrame; + } +} +export default MergeOperator; diff --git a/packages/shared/src/models/dataPipe/operators/sort.spec.ts b/packages/shared/src/models/dataPipe/operators/sort.spec.ts new file mode 100644 index 0000000000..8b825c6027 --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/sort.spec.ts @@ -0,0 +1,29 @@ +import { DataFrame } from "danfojs"; +import Sort from "./sort"; +import testData from "../testData.spec"; + +describe("Sort", () => { + it("Sorts data by column", () => { + const testDf = new DataFrame(testData.names); + const output = new Sort(testDf, ["year_of_birth"]).apply(); + const orderedYears = output.column("year_of_birth").values; + expect(orderedYears).toEqual([1623, 1700, 1791, 1815]); + }); + it("Sorts data in descending order", () => { + const testDf = new DataFrame(testData.names); + const output = new Sort(testDf, ["year_of_birth", "desc"]).apply(); + const orderedYears = output.column("year_of_birth").values; + expect(orderedYears).toEqual([1815, 1791, 1700, 1623]); + }); + it("Validates args", () => { + const testDf = new DataFrame(testData.names); + // Column not in data frame + expect(() => new Sort(testDf, ["invalid_column"]).apply()).toThrowError( + 'ParamError: specified column "invalid_column" not found in columns' + ); + // Direction arg invalid + expect(() => new Sort(testDf, ["year_of_birth", "invalid_direction"]).apply()).toThrowError( + "Arg validation error" + ); + }); +}); diff --git a/packages/shared/src/models/dataPipe/operators/sort.ts b/packages/shared/src/models/dataPipe/operators/sort.ts new file mode 100644 index 0000000000..80f333cdaa --- /dev/null +++ b/packages/shared/src/models/dataPipe/operators/sort.ts @@ -0,0 +1,26 @@ +import { DataFrame } from "danfojs"; +import BaseOperator from "./base"; + +class SortOperator extends BaseOperator { + /** Order of fields to prioritise sorting */ + public sortField: string; + public ascending?: boolean; + constructor(df: DataFrame, args_list: any) { + super(df, args_list); + this.sortField = this.args_list[0]; + this.ascending = this.args_list[1] === "desc" ? false : true; + } + validateArg(arg: string, index: number): boolean | string { + if (index === 0) { + return typeof arg === "string" || "sort column must be a string"; + } + if (index === 1) { + return arg === "desc" || 'supported directions: "desc", "asc" (default)'; + } + } + apply() { + return this.df.sortValues(this.sortField, { ascending: this.ascending }); + } +} + +export default SortOperator; diff --git a/packages/shared/src/models/dataPipe/pipe.spec.ts b/packages/shared/src/models/dataPipe/pipe.spec.ts new file mode 100644 index 0000000000..2d96d7e996 --- /dev/null +++ b/packages/shared/src/models/dataPipe/pipe.spec.ts @@ -0,0 +1,103 @@ +import { DataPipe } from "./pipe"; +import type { IDataPipeOperation } from "./types"; + +const testData = { + names: [ + { + id: "id_1", + first_name: "Ada", + last_name: "Lovelace", + }, + { + id: "id_2", + first_name: "Blaise", + last_name: "Pascal", + }, + ], +}; + +describe("Data Pipe", () => { + it("Process multiple operations", () => { + const operations: IDataPipeOperation[] = [ + { + input_source: "names", + operation: "filter", + args_list: ["first_name.startsWith('A')"], + }, + { + operation: "append_columns", + args_list: ["full_name: @row.first_name @row.last_name"], + }, + ]; + const pipe = new DataPipe(operations, testData); + pipe.run(); + }); + it("Store named outputs", () => { + const operations: IDataPipeOperation[] = [ + { + input_source: "names", + operation: "filter", + args_list: [], + output_target: "output_a", + }, + { + input_source: "names", + operation: "filter", + args_list: [], + output_target: "temp_b | local_only", + }, + { + input_source: "temp_b", + operation: "filter", + args_list: [], + output_target: "output_b", + }, + { + input_source: "temp_b", + operation: "filter", + args_list: [], + output_target: "output_c", + }, + ]; + const pipe = new DataPipe(operations, testData); + pipe.run(); + expect(Object.keys(pipe.outputTargets)).toEqual(["output_a", "output_b", "output_c"]); + }); + // Error Handling and QC + it("Checks if required inputs available", () => { + const operations: IDataPipeOperation[] = [ + { input_source: "names", operation: "filter", args_list: [] }, + { input_source: "nationalities", operation: "filter", args_list: [] }, + ]; + const pipe = new DataPipe(operations, testData); + expect(() => pipe.run()).toThrowError("Input sources missing for data pipe: nationalities"); + }); + it("Empties input source when specified as FALSE", () => { + const operations: IDataPipeOperation[] = [ + { input_source: "names", operation: "filter", args_list: [], output_target: "names" }, + { input_source: false as any, operation: "filter", output_target: "empty", args_list: [] }, + ]; + const pipe = new DataPipe(operations, testData); + pipe.run(); + expect(pipe.outputTargets.names.length === 2); + expect(pipe.outputTargets.empty.length === 0); + }); + it("Throw on invalid operation", () => { + const invalidOp = { operation: "invalid_op" }; + expect(() => new DataPipe([invalidOp as any]).run()).toThrowError( + `No pipeline operator exists: ${invalidOp.operation}` + ); + }); + it("Provides step context when throwing on error", () => { + // concatenating a list with itself should throw error due to duplicate ids + const operations: IDataPipeOperation[] = [ + { input_source: "names", operation: "concat", args_list: ["names"], output_target: "names" }, + ]; + try { + new DataPipe(operations, testData).run(); + } catch (error) { + const { step } = JSON.parse(error.message); + expect(step).toEqual(operations[0]); + } + }); +}); diff --git a/packages/shared/src/models/dataPipe/pipe.ts b/packages/shared/src/models/dataPipe/pipe.ts new file mode 100644 index 0000000000..f4795a80d0 --- /dev/null +++ b/packages/shared/src/models/dataPipe/pipe.ts @@ -0,0 +1,99 @@ +import { DataFrame, toJSON } from "danfojs"; +import { normalizeData } from "."; +import { IBaseOperator, OPERATORS } from "./operators"; +import type { IDataPipeOperation } from "./types"; + +export class DataPipe { + private df = new DataFrame([]); + public outputTargets: { [key: string]: any } = {}; + public inputSources: { [key: string]: any } = {}; + + constructor(private steps: IDataPipeOperation[], inputSources: Record = {}) { + // normalise all input data + let normalisedInputs = inputSources; + for (const [key, data] of Object.entries(inputSources)) { + normalisedInputs[key] = normalizeData(data); + } + this.inputSources = normalisedInputs; + } + + run() { + const missingInputs = this.checkMissingInputs(); + if (missingInputs) { + throw new Error("Input sources missing for data pipe: " + missingInputs); + } + for (const step of this.steps) { + this.setInputSource(step.input_source); + // validate operator + const operator = OPERATORS[step.operation] as IBaseOperator; + if (!operator) { + throw new Error(`No pipeline operator exists: ${step.operation}`); + } + // apply operation + const instance = new operator(this.df, step.args_list, this); + try { + const output = instance.apply(); + // Assign output as next input. Populate as named input/output if specified + this.df = output; + if (step.output_target) { + this.setOutputTarget(step.output_target); + } + } catch (error) { + // add additional step context to error message when thrown + error.message = JSON.stringify({ message: error.message, step }, null, 2); + throw error; + } + } + return this.outputTargets; + } + + setOutputTarget(target: string) { + const [name, localOnly] = target.split("|").map((v) => v.trim()); + const jsonOutput = toJSON(this.df); + this.inputSources[name] = jsonOutput; + if (!localOnly) { + this.outputTargets[name] = jsonOutput; + } + } + + /** + * Assign input if specified (default to previous output) + * @param name if specified will populate from named datalist + * @note if FALSE provided will clear current dataframe to empty instead + */ + setInputSource(name?: string | boolean) { + if (typeof name === "string") { + if (!this.inputSources.hasOwnProperty(name)) { + throw new Error(`Data source not found: ${name}`); + } + this.df = new DataFrame(this.inputSources[name]); + } + // specifying FALSE in name column loads an empty dataset + if (name === false) { + this.df = new DataFrame([]); + } + } + + /** Extract a list of all required input sources and check to see if they already exist or will be generated */ + public checkMissingInputs() { + const availableInputs = {}; + const missingInputs = {}; + // list existing inputs + for (const inputSource of Object.keys(this.inputSources)) { + availableInputs[inputSource] = true; + } + // compare required inputs with available inputs (including generated outputs) + for (const step of this.steps) { + const { input_source, output_target } = step; + if (input_source && !availableInputs[input_source]) { + missingInputs[input_source] = true; + } + if (output_target) { + const [outputName] = step.output_target.split("|").map((v) => v.trim()); + availableInputs[outputName] = true; + } + } + const missingList = Object.keys(missingInputs); + return missingList.length === 0 ? null : missingList; + } +} diff --git a/packages/shared/src/models/dataPipe/testData.spec.ts b/packages/shared/src/models/dataPipe/testData.spec.ts new file mode 100644 index 0000000000..bf6074c15e --- /dev/null +++ b/packages/shared/src/models/dataPipe/testData.spec.ts @@ -0,0 +1,29 @@ +// https://famous-mathematicians.com/list/ +export default { + names: [ + { + id: "id_1", + first_name: "Ada", + last_name: "Lovelace", + year_of_birth: 1815, + }, + { + id: "id_2", + first_name: "Blaise", + last_name: "Pascal", + year_of_birth: 1623, + }, + { + id: "id_3", + first_name: "Charles", + last_name: "Babbage", + year_of_birth: 1791, + }, + { + id: "id_4", + first_name: "Daniel", + last_name: "Bernoulli", + year_of_birth: 1700, + }, + ], +}; diff --git a/packages/shared/src/models/dataPipe/types.ts b/packages/shared/src/models/dataPipe/types.ts new file mode 100644 index 0000000000..be49aa76ff --- /dev/null +++ b/packages/shared/src/models/dataPipe/types.ts @@ -0,0 +1,7 @@ +export interface IDataPipeOperation { + // should manually track names instead of inferring from import to avoid danfo.js import into frontend + operation: "append_columns" | "concat" | "filter" | "filter_any" | "map" | "merge"; + args_list: any[]; + input_source?: string; + output_target?: string; +} diff --git a/packages/shared/src/models/dataPipe/utils.spec.ts b/packages/shared/src/models/dataPipe/utils.spec.ts new file mode 100644 index 0000000000..3e2d267da9 --- /dev/null +++ b/packages/shared/src/models/dataPipe/utils.spec.ts @@ -0,0 +1,47 @@ +import { DataFrame } from "danfojs"; +import * as DataPipeUtils from "./utils"; + +describe("DataPipe Utils", () => { + it("Normalises json array data", () => { + const input = [{ id: 1, value: 1 }, { id: 2 }]; + const output = DataPipeUtils.normalizeData(input); + expect(output).toEqual([ + { id: 1, value: 1 }, + { id: 2, value: undefined }, + ]); + }); + + it("Replaces dataframe NaN with value", () => { + const input = [{ id: 1, nan_value: NaN, undefined_value: undefined, null_value: null }]; + const df = new DataFrame(input); + DataPipeUtils.replaceNaN(df, undefined); + expect(df.values[0]).toEqual([1, undefined, undefined, null]); + }); +}); + +describe("DataPipe Utils: Set Index Column", () => { + const input = [ + { id: "id_2", value: "value_2" }, + { id: "id_1", value: "value_1" }, + ]; + const df = new DataFrame(input); + it("Sets index", () => { + DataPipeUtils.setIndexColumn(df, "id"); + expect(df.index).toEqual(["id_2", "id_1"]); + }); + it("Throws on empty dataframe", () => { + const emptyDf = new DataFrame([]); + const errMsg = "Cannot set an index on an empty dataframe"; + expect(() => DataPipeUtils.setIndexColumn(emptyDf, "id")).toThrowError(errMsg); + }); + it("Throws on missing column", () => { + const errMsg = "Column [missing_col] does not exist in data\nColumns: id, value"; + expect(() => DataPipeUtils.setIndexColumn(df, "missing_col")).toThrowError(errMsg); + }); + const nonUniqueDf = new DataFrame([...input, ...input]); + it("Throws on non-unique index values", () => { + expect(() => DataPipeUtils.setIndexColumn(nonUniqueDf, "id")).toThrowError( + `Duplicate ids found for entries: id_2, id_1` + ); + }); +}); diff --git a/packages/shared/src/models/dataPipe/utils.ts b/packages/shared/src/models/dataPipe/utils.ts new file mode 100644 index 0000000000..f3399be504 --- /dev/null +++ b/packages/shared/src/models/dataPipe/utils.ts @@ -0,0 +1,77 @@ +import { DataFrame } from "danfojs"; + +/** + * Replace NaN values with replacement value. Similar to danfo.js replace method except + * also allows for undefined and null values + */ +export function replaceNaN(df: DataFrame, replaceValue: any) { + df.applyMap((v: any) => (Number.isNaN(v) ? replaceValue : v), { inplace: true }); +} + +/** + * Wrapper around danfo setIndex method to provide better logging + */ +export function setIndexColumn(df: DataFrame, name: string) { + // danfo attempts sort after setting index which will throw range error if length 0 + if (df.index.length === 0) { + throw new Error(`Cannot set an index on an empty dataframe`); + } + // throw error if column does not exist + if (!df.columns.includes(name)) { + const columnList = df.columns.join(", "); + throw new Error(`Column [${name}] does not exist in data\nColumns: ${columnList}`); + } + try { + df.setIndex({ column: name, inplace: true }); + } catch (error) { + // track specific non-unique values in thrown error + if (error.message === "IndexError: Row index must contain unique values") { + const nonUniqueValues = findNonUniqueValues(df, name); + throw new Error("Duplicate ids found for entries: " + nonUniqueValues.join(", ")); + } + // pass any other errors back with additional meta (e.g. non-unique values) + throw error; + } +} + +function findNonUniqueValues(df: DataFrame, column: string) { + return df.column(column).dropDuplicates().values; +} + +/** + * Take a json data array and ensure all entries contain value for all keys + * @param missingValueReplacement - value to assign where key not contained in entry + **/ +export function normalizeData(data: { [key: string]: any }[], missingValueReplacement = undefined) { + const columnsHashmap = {}; + // Generate a list of all columns in data + for (const entry of data) { + for (const key of Object.keys(entry)) { + columnsHashmap[key] = true; + } + } + const columns = Object.keys(columnsHashmap); + // Replace missing values and order columns consistently + return data.map((entry) => { + const normalised = {}; + for (const column of columns) { + const value = entry.hasOwnProperty(column) ? entry[column] : missingValueReplacement; + normalised[column] = value; + } + return normalised; + }); +} + +/** + * Convert an object array into a json object, with keys corresponding to array entries + * @param keyfield any unique field which all array objects contain to use as hash keys (e.g. 'id') + */ +export function arrayToHashmap(arr: T[], keyfield: string): { [key: string]: T } { + const hashmap: { [key: string]: T } = {}; + for (const el of arr) { + if (el.hasOwnProperty(keyfield)) { + hashmap[el[keyfield]] = el; + } + } + return hashmap; +} diff --git a/packages/shared/src/models/index.ts b/packages/shared/src/models/index.ts new file mode 100644 index 0000000000..4960aa4240 --- /dev/null +++ b/packages/shared/src/models/index.ts @@ -0,0 +1,7 @@ +export * from "./appStringEvaluator/appStringEvaluator"; +export * from "./templatedData/templatedData"; +export * from "./jsEvaluator/jsEvaluator"; + +// TODO - datapipe should be moved to prevent default import of danfo (7MB bundle) +// export * from "./dataPipe/operators"; +// export * from "./dataPipe/pipe"; diff --git a/packages/shared/src/models/jsEvaluator/jsEvaluator.spec.ts b/packages/shared/src/models/jsEvaluator/jsEvaluator.spec.ts new file mode 100644 index 0000000000..7e95d8fad8 --- /dev/null +++ b/packages/shared/src/models/jsEvaluator/jsEvaluator.spec.ts @@ -0,0 +1,38 @@ +import { JSEvaluator } from "./jsEvaluator"; + +describe("JS Evaluator", () => { + const constants = { + a: 1, + b: 2, + nestedConstant: { array: [1] }, + }; + const functions = { + isEven: (n) => n % 2 === 0, + }; + const evaluator = new JSEvaluator(); + evaluator.setGlobalContext({ constants, functions }); + it("expression: Math.min(5,7)", () => { + expect(evaluator.evaluate("Math.min(5,7)")).toEqual(5); + }); + it("function: isEven(9)", () => { + expect(evaluator.evaluate("isEven(9)")).toEqual(false); + }); + it("this context: 'Hello '+this.nested.name", () => { + expect(evaluator.evaluate("'Hello '+this.nested.name", { nested: { name: "Ada" } })).toEqual( + "Hello Ada" + ); + }); + it("Supports parse of nested global constants", () => { + expect(evaluator.evaluate("JSON.parse(nestedConstant).array[0]")).toEqual(1); + }); + it("ignores invalid names for context variables", () => { + const invalidConstants = { "invalid:name": "ignored", "invalid-name": "ignored" }; + evaluator.setGlobalContext({ constants: { ...invalidConstants, ...constants } }); + expect(evaluator.evaluate("Math.min(a,b)")).toEqual(1); + }); + it("throws when using reserved names for variables", () => { + const invalidConstants = { default: "hello", new: "test" }; + evaluator.setGlobalContext({ constants: { ...invalidConstants, ...constants } }); + expect(() => evaluator.evaluate("Math.min(a,b)")).toThrowError("Unexpected token 'default'"); + }); +}); diff --git a/packages/shared/src/models/jsEvaluator/jsEvaluator.ts b/packages/shared/src/models/jsEvaluator/jsEvaluator.ts new file mode 100644 index 0000000000..a44d06a595 --- /dev/null +++ b/packages/shared/src/models/jsEvaluator/jsEvaluator.ts @@ -0,0 +1,98 @@ +/** + * Utility class to allow safe evaluation of javascript expressions + * Enable parsing of expressions containing context and global variables and functions + * within a JS environment + * @example + * ``` + * const evaluator = new JSEvaluator() + * evaluator.setGlobalContext( + * { + * constants:{a:5, b:7}) + * functions:isEven(n)=>n%2===0}, + * } + * + * const expression1 = "Math.min(a,b)" + * evaluator.evaluate(expression1) + * // 5 + * + * const expression2 = "isEven(this.inputNumber)" + * evaluator.evaluate(expression2,{inputNumber:5}) + * // false + * ``` + * */ +export class JSEvaluator { + private evaluationContextBase: string; + + constructor() { + this.setGlobalContext({}); + } + + /** + * Specify global functions and constants that can be directly evaluated in expression + * @param context functions and contexts to make available within global scope of function execution + * @example + * ``` + * { + * constants:{ a: 1, b:2 }, + * functions:{ isEven: (n) => n%2 === 0 } + * } + **/ + setGlobalContext(context: { functions?: IFunctionHashmap; constants?: any }) { + const constantString = Object.entries(context.constants ?? {}) + .filter(([name]) => this.isValidVariableName(name)) + .map( + ([name, value]) => + // convert global constants to variable strings, adding quotation marks for string types + `var ${name} = ${this.parseContextValue(value)}` + ) + .join(";"); + // convert global functions to variable strings. Note, cannot simply parse function.toString() as optimiser + // strips names and just leaves all as anonymous functions + const functionString = Object.entries(context.functions ?? {}) + .map(([name, fn]) => `var ${name} = ${fn}`) + .join(";"); + this.evaluationContextBase = `"use strict"; ${constantString}; ${functionString}; return`; + + return this; + } + /** + * Evaluate a string expression in javascript + * @param expression string to evaluate + * @param executionContext variable to bind to `this` context, e.g. if expression contains `this.name` + * @returns + */ + evaluate(expression: string, executionContext = {}) { + const funcString = `${this.evaluationContextBase} (${expression});`; + try { + const func = new Function(funcString); + const evaluated = func.apply(executionContext); + return evaluated; + } catch (error) { + // still throw error so that calling function can decide how to handle, e.g. attempt string replace + throw error; + } + } + + /** Check if a proposed variable name is valid in javascript */ + private isValidVariableName(name: string) { + // adapted from https://stackoverflow.com/a/1661249/5693245 + const regex = /^[a-z_$][0-9a-z_$]*$/i; + return regex.test(name); + // TODO - could also check to ensure not a reserved word (https://www.w3schools.com/js/js_reserved.asp) + } + + /** When evaluating function constants any strings should be quoted and object/arrays stringified */ + private parseContextValue(value: any) { + if (value) { + if (typeof value === "object") value = JSON.stringify(value); + if (typeof value === "string") return `'${value}'`; + } + return value; + } +} + +/** Generic object containing list of functions */ +export type IFunctionHashmap = { [function_name: string]: (...args: any) => any }; + +/** Generic object containing list of variables. Note - only simple types can be parsed */ +export type IConstantHashmap = { [constant_name: string]: string | number | boolean }; diff --git a/packages/shared/src/models/templatedData/templatedData.spec.ts b/packages/shared/src/models/templatedData/templatedData.spec.ts new file mode 100644 index 0000000000..c5122da275 --- /dev/null +++ b/packages/shared/src/models/templatedData/templatedData.spec.ts @@ -0,0 +1,125 @@ +import { TemplatedData } from "./templatedData"; + +interface ITestData { + input: any; // Source data for evaluation + output: any; // Expected end parsed data +} + +/** This context is applied to all tests. Input will be processed for subsitition into output */ +const context = { + input: { + row: { + first_name: "Ada", + last_name: "Lovelace", + firstname_lookup_field: "first_name", + Ada_Lovelace: "Ada_Lovelace Lookup Row", + full_name: "@row.first_name @row.last_name", + }, + }, + output: { + "@row": { + first_name: "Ada", + last_name: "Lovelace", + firstname_lookup_field: "first_name", + Ada_Lovelace: "Ada_Lovelace Lookup Row", + full_name: "@row.first_name @row.last_name", + }, + "@row.first_name": "Ada", + "@row.last_name": "Lovelace", + "@row.firstname_lookup_field": "first_name", + "@row.Ada_Lovelace": "Ada_Lovelace Lookup Row", + "@row.full_name": "Ada Lovelace", // evaluated recursive context + }, +}; + +/** + * Each set of inputs will be evaluated to see if they match the output when parsed + * An intermediate value exists for debugging purposes (output of extraction process) + */ +const tests: ITestData[] = [ + // Basic delimited + { + input: "Hello {@row.first_name}-{@row.last_name}", + output: "Hello Ada-Lovelace", + }, + // Mixed contexts + { input: "@local.@row.first_name", output: "@local.Ada" }, + // Recursive lookup + { + input: "{@row.{@row.firstname_lookup_field}}", + output: "Ada", + }, + // Recursive lookup with concatenation + { + input: "{@row.{@row.first_name}_{@row.last_name}}", + output: "Ada_Lovelace Lookup Row", + }, + // Text with curly braces but no templated data + { + input: "{non-dynamic}", + output: "{non-dynamic}", + }, + // JSON objects and arrays + { + input: { + string: "@row.first_name", + array: ["@row.first_name", "@row.last_name"], + nested: { string: "@row.last_name" }, + }, + output: { + string: "Ada", + array: ["Ada", "Lovelace"], + nested: { string: "Lovelace" }, + }, + }, + // Recursive lookup with context-dependent return + { + input: "@row.full_name", + output: "Ada Lovelace", + }, + // Legacy concatenation (append missing bit) + { + input: "@row.first_name.sent.2", + output: "Ada.sent.2", + }, + // Missing values are not replaced + { + input: "@row.missing", + output: "@row.missing", + }, + { + input: "{@row.first_name}_{@row.last_name}_completed", + output: "Ada_Lovelace_completed", + }, + // Missing contexts ignored (field variables preserved, row evaluated) + { + input: "Text @data.workshop.{@fields.current_workshop}.title @row.first_name?", + output: "Text @data.workshop.{@fields.current_workshop}.title Ada?", + }, +]; + +describe("Templated Data Parsing", () => { + // Test context replacements + it("Generates context replacments", () => { + const { parsedContext } = new TemplatedData({ context: context.input }); + expect(parsedContext).toEqual(context.output); + // process.nextTick(() => console.log(`\n${JSON.stringify(parsedContext, null, 2)}\n`)); + }); + + // Test individual string parsing + for (const testData of tests.slice(-1)) { + execTest(testData); + } + + // Use a function wrapper to allow looping tests + function execTest(testData: ITestData) { + const { input, output } = testData; + it(JSON.stringify(input), () => { + const parser = new TemplatedData({ context: context.input, initialValue: input }); + const parsedValue = parser.parse(); + expect(parsedValue).toEqual(output); + process.nextTick(() => console.log(` ${JSON.stringify(parsedValue)}\n`)); + // NOTE - in case of errors additional tests can be carried out just on intermediate + }); + } +}); diff --git a/packages/shared/src/models/templatedData/templatedData.ts b/packages/shared/src/models/templatedData/templatedData.ts new file mode 100644 index 0000000000..6f3a6edb84 --- /dev/null +++ b/packages/shared/src/models/templatedData/templatedData.ts @@ -0,0 +1,212 @@ +import { ITemplatedStringVariable } from "../../types"; +import { addStringDelimiters, extractDelimitedTemplateString } from "../../utils"; + +type ITemplatedDataContext = { [prefix: string]: any }; + +/** + * Templated data class contains methods to to convert data containing dynamic context variables + * in delimited (`Hello {@row.first_name}`) or non-delimited (`Hello @row.first_name`) form to + * static values based provided context + * + * @param context - json object specifying specific values for replacement + * E.g. {row:{id:'example_1'}} will replace `@row.id` with 'example_1` + */ +export class TemplatedData { + /** Value containing templated data, e.g. `"Hello @row.id"` */ + private initialValue: any; + + /** Value returned after parsing templated data, e.g. `"Hello example_1"` */ + public parsedValue: any; + + /** json object containing namespaced values for context replacements + * ``` + * {row:{id:"example_1"}} + * ``` + */ + public parsedContext: ITemplatedDataContext; + + /** List of all prefixes used in context, e.g `["row"]` */ + private contextPrefixes: string[] = []; + + /** A list of all variable replacements carried out during parse (for tracking dependencies list) */ + public replacedVariablesList: { [key: string]: string } = {}; + + constructor(options?: { initialValue?: any; context?: ITemplatedDataContext }) { + this.updateValue(options?.initialValue ?? ""); + this.updateContext(options?.context ?? {}); + } + + /** Change the initial value whilst keeping existing context same */ + public updateValue(value: any) { + this.initialValue = value; + this.replacedVariablesList = {}; + return this; + } + + /** Change the parsing context and generate new context replacement mapping */ + public updateContext(context: ITemplatedDataContext) { + this.parsedContext = flattenContextReplacementList(context); + this.contextPrefixes = Object.keys(context); + // Reassign any context replacements that themselves contain another context reference + // TODO - could make this recursive for deeper refs, but would need to include inf loop check + Object.entries(this.parsedContext).forEach(([key, value]) => { + if (typeof value === "string") { + this.parsedContext[key] = this.parse(value); + } + }); + this.replacedVariablesList = {}; + return this; + } + + /** + * Main data conversion method + * Iterate over data, parse string values and nested objects and arrays recursively + */ + public parse(value: T = this.initialValue) { + if (value) { + if (typeof value === "string") { + value = this.parseTemplatedString(value); + } + // recurssively convert array and json-like objects + if (typeof value === "object") { + if (Array.isArray(value)) { + value = value.map((v) => this.parse(v)) as any; + } + if (value.constructor === {}.constructor) { + Object.keys(value).forEach((key) => (value[key] = this.parse(value[key]))); + } + } + } + return value; + } + + /** + * Take a string and replace instances of context variables, such as `"hello {@row.name}"` + * Will convert non-delimited strings to delimted, extract list of variables and parse + */ + private parseTemplatedString(value: string) { + const delimited = addStringDelimiters(value, this.contextPrefixes); + const extractedData = extractDelimitedTemplateString( + { value: delimited }, + this.contextPrefixes + ); + const parsedValue = this.parseExtractedString(extractedData); + return parsedValue; + } + + /** + * @param parsedContext - additional string replacements to perform on final values + */ + private parseExtractedString(data: ITemplatedStringVariable) { + let { value, variables } = data; + const hasChildData = variables ? true : false; + let parsedValue = value; + // recursively replace any deeply-nested variable expressions + if (hasChildData) { + for (const [key, childData] of Object.entries(variables)) { + const childValue = this.parseExtractedString(childData); + parsedValue = parsedValue.replace(key, childValue ?? key); + } + // handle case is parsedValue is all a dynamic context variable + return this.parseExtractedString({ value: parsedValue }); + } + // replace main variables + else { + let replacedValue = value; + if (this.parsedContext.hasOwnProperty(value)) { + replacedValue = this.parsedContext[value]; + } else { + const legacyValue = this.hackHandleLegacyReplacement(value); + replacedValue = legacyValue; + } + if (replacedValue !== value) { + this.updateReplacedVariablesList(value, replacedValue); + parsedValue = parsedValue.replace(value, replacedValue); + } + } + return parsedValue; + } + + /** Update replaced variables to track all replaced variable dependencies */ + private updateReplacedVariablesList(srcValue: string, replacedValue: string) { + this.replacedVariablesList[srcValue] = replacedValue; + } + + /** + * Previously processing a field like `@row.id.sent` would simply append + * `.sent` onto the parsed row.id (as `.` was not considered a reserved character for names) + * Now that `.` is used when looking up nested replacements include a manual method to + * try to replace neareset match where possible + * E.g. `@row.id.sent.2` will first try match the full expression, then `@row.id.sent`, + * before finally matching `@row.id` and appending the rest as strings + */ + private hackHandleLegacyReplacement(value: string) { + let replacement = value; + const parts = value.split("."); + for (const i of parts.keys()) { + const replaceKey = parts.slice(0, i).join("."); + if (this.parsedContext.hasOwnProperty(replaceKey)) { + const replaceValue = this.parsedContext[replaceKey]; + if (typeof replaceValue === "string") { + replacement = [replaceValue, ...parts.slice(i)].join("."); + } + } + } + return replacement; + } +} + +/** + * Take a json-object representing all context variables and convert into a list of + * string replacements. It retains each entry as the original variable, but also flattens + * all possible nested paths for json objects and arrays + * @example + * ``` + * flattenContextReplacementList({ + * row:{ + * name:"Ada", + * foods:["pizza","salad"] + * } + * } + * }) + * + * // Output + * { + * "@row":{name:"Ada",foods:["pizza","salad"]} + * "@row.name":"Ada", + * "@row.foods":["pizza","salad"], + * "@row.foods.0":"pizza" + * ... + * } + * ``` + */ +function flattenContextReplacementList(context = {}, prefix = "", replacements = {}) { + for (let [key, value] of Object.entries(context)) { + if (prefix) { + key = `${prefix}.${key}`; + } else { + key = `@${key}`; + } + replacements[key] = value; + // Create nested entries for json objects and arrays (with index keys) + if (value && typeof value === "object") { + if (Array.isArray(value)) { + value = arrayToObject(value); + } + replacements = { + ...replacements, + ...flattenContextReplacementList(value, key, {}), + }; + } + } + return replacements; +} + +/** Convert an array to a json object keyed by item index */ +function arrayToObject(arr: any[]) { + const arrObj: any = {}; + for (const [index, el] of arr.entries()) { + arrObj[index] = el; + } + return arrObj; +} diff --git a/packages/shared/src/types/index.ts b/packages/shared/src/types/index.ts new file mode 100644 index 0000000000..9ccbcebf45 --- /dev/null +++ b/packages/shared/src/types/index.ts @@ -0,0 +1,4 @@ +export interface ITemplatedStringVariable { + value?: string; + variables?: { [key: string]: ITemplatedStringVariable }; +} diff --git a/packages/shared/src/utils/delimiters.spec.ts b/packages/shared/src/utils/delimiters.spec.ts new file mode 100644 index 0000000000..3bb5573e4b --- /dev/null +++ b/packages/shared/src/utils/delimiters.spec.ts @@ -0,0 +1,133 @@ +import type { ITemplatedStringVariable } from "../types"; +import * as Delimiters from "./delimiters"; + +interface IDelimitedTestData { + input: string; + delimited: string; +} + +const prefixes = ["row"]; +const delimitedTests: IDelimitedTestData[] = [ + // basic + { + input: "Name: @row.first_name", + delimited: "Name: {@row.first_name}", + }, + // multiple + { + input: "@row.first_name @row.last_name", + delimited: "{@row.first_name} {@row.last_name}", + }, + // nested + { + input: "@row.@row.first_name", + delimited: "{@row.{@row.first_name}}", + }, + // mixed + { + input: "@row.{@row.first_name}", + delimited: "{@row.{@row.first_name}}", + }, + // ignore + { + input: "{@row.last_name}_completed", + delimited: "{@row.last_name}_completed", + }, +]; + +interface IParseTestData { + delimited: string; + extracted: ITemplatedStringVariable; +} +const parseTests: IParseTestData[] = [ + // basic + { + delimited: "{@row.first_name}", + extracted: { value: "[$1]", variables: { "[$1]": { value: "@row.first_name" } } }, + }, + // nested + { + delimited: "{@row.{@row.first_name}}", + extracted: { + value: "[$1]", + variables: { + "[$1]": { + value: "@row.[$1.1]", + variables: { + "[$1.1]": { value: "@row.first_name" }, + }, + }, + }, + }, + }, + // nested concatenated + { + delimited: "{@row.{@row.first_name}_{@row.last_name}}", + extracted: { + value: "[$1]", + variables: { + "[$1]": { + value: "@row.[$1.1]_[$1.2]", + variables: { + "[$1.1]": { value: "@row.first_name" }, + "[$1.2]": { value: "@row.last_name" }, + }, + }, + }, + }, + }, + // mixed contexts (rows parsed, fields ignored) + { + delimited: "{@fields.{@row.first_name}}", + extracted: { + value: "{[$1]}", + variables: { + "[$1]": { + value: "@fields.[$1.1]", + variables: { + "[$1.1]": { value: "@row.first_name" }, + }, + }, + }, + }, + }, +]; + +describe("Converts non-delimited variables", () => { + // Test individual string parsing + for (const testData of delimitedTests) { + execTest(testData); + } + + // Use a function wrapper to allow looping tests + function execTest(testData: IDelimitedTestData) { + const { input, delimited } = testData; + + it(JSON.stringify(input), () => { + const parsedValue = Delimiters.addStringDelimiters(input, prefixes); + expect(parsedValue).toEqual(delimited); + process.nextTick(() => console.log(` ${JSON.stringify(parsedValue)}\n`)); + // NOTE - in case of errors additional tests can be carried out just on intermediate + }); + } +}); + +describe("Parses delimiters", () => { + // Test individual string parsing + for (const testData of parseTests) { + execTest(testData); + } + + // Use a function wrapper to allow looping tests + function execTest(testData: IParseTestData) { + const { delimited, extracted } = testData; + if (extracted) { + it(JSON.stringify(delimited), () => { + const parsed = Delimiters.extractDelimitedTemplateString({ value: delimited }, ["row"]); + expect(parsed).toEqual(extracted); + process.nextTick(() => console.log(` ${JSON.stringify(parsed)}\n`)); + // NOTE - in case of errors additional tests can be carried out just on intermediate + }); + } + } +}); diff --git a/packages/shared/src/utils/delimiters.ts b/packages/shared/src/utils/delimiters.ts new file mode 100644 index 0000000000..000c598813 --- /dev/null +++ b/packages/shared/src/utils/delimiters.ts @@ -0,0 +1,158 @@ +import { parseUntil } from "character-parser"; +import type { ITemplatedStringVariable } from "../types"; + +/** + * Take a string with templated expressions and add delimiters to variables if not present + * @example + * ``` + * "@row.@row.lookup_variable" + * // output + * "{@row.{@row.lookup_variable}}"" + * ``` + * @param value - value to convert, may or may not already contain delimited strings + * @param contextPrefixes - list of prefixes used in templated strings, e.g. ["row"] for `@row` + * @param firstPass - internal tracking variable to determine regex to use + */ +export function addStringDelimiters(value: string, contextPrefixes: string[], firstPass = true) { + for (const prefix of contextPrefixes) { + // First pass ignores nested statements, adding delimiters only to inner parts e.g. + // @row.@row.some_value -> @row.{@row.some_value} + const firstPassRegex = new RegExp(`({?)@${prefix}\.[a-z0-9.:_]+(}?)`, "gi"); + // Second pass includes nested, converting outer parts e.g. + // @row.{@row.some_value} -> {@row.{@row.some_value}} + const secondPassRegex = new RegExp(`({?)@${prefix}\.[a-z0-9.:_{}@]+`, "gi"); + const regex = firstPass ? firstPassRegex : secondPassRegex; + const matches = value.matchAll(regex); + let replaceCount = 0; + for (const match of matches) { + const [expression] = match; + if (shouldAddDelimiter(expression)) { + value = insertCharacter(value, "{", match.index! + replaceCount); + replaceCount++; + value = insertCharacter(value, "}", match.index! + expression.length + replaceCount); + replaceCount++; + } + } + if (firstPass) { + return addStringDelimiters(value, contextPrefixes, false); + } + } + return value; +} + +function shouldAddDelimiter(expression: string) { + const [startDelimiter] = [expression[0]]; + // skip adding delimiters if starts with delimiter and contains an end delimiter within string + // (may be at end of string or mid-string in case concatenating with regular text) + if (startDelimiter === "{" && expression.includes("}")) { + return false; + } + return true; +} + +/** +* Take a string and extract any dynamic text listed within delimiter tags +* Provides recursive support for deeply nested expressions +* @param contextPrefixes - list of prefixes used in templated strings, e.g. ["row"] for `@row` +* +* @example +* ``` +* "Hello {@row.first_name}-{@row.last_name}" +* // Output +* {  + "value": "Hello [$1]-[$2]",  + "variables": {  + "[1]": {  + "value": "@row.first_name"  + },  + "[2]": {  + "value": "@row.last_name"  + }  + }  +* ``` +* @example +* ``` +* "Hello {@row.{@row.name_field}}" +* // Output +* {  + "value": "Hello [$1]",  + "variables": {  + "[1]: {  + "value": "@row.[$1.1]",  + "variables": {  + "[1.1]": {  + "value": "@row.name_field"  + }  + }  + }  + }  +* ``` +*/ +export function extractDelimitedTemplateString( + data: ITemplatedStringVariable, + contextPrefixes: string[], + nestedName = "" +): ITemplatedStringVariable { + let value = data.value; + let variables = data.variables ?? {}; + const [startDelimiter, endDelimiter] = ["{@", "}"]; + const [varPrefix, varSuffix] = ["[$", "]"]; + // Extract top-level dyanmic values + const startIndex = value.indexOf(startDelimiter); + if (startIndex > -1) { + try { + const { src } = parseUntil(value, endDelimiter, { + start: startIndex + 1, + }); + + const variableNumber = Object.keys(variables).length + 1; + const variableName = `${varPrefix}${nestedName}${variableNumber}${varSuffix}`; + + // now we have matched src like "{@row.some_field}" replace the expression with a + // variables like `[$1]` if `row` statements are included in prefix list, or `{[$1]}` + // if not to retain delimited form when evaluated + const prefix = src.split(".")[0].replace("@", ""); + if (contextPrefixes.includes(prefix)) { + value = value.replace(`{${src}}`, variableName); + } else { + value = value.replace(`${src}`, variableName); + } + variables[variableName] = { value: src }; + + // Run again to extract any sibling values + const sibling = extractDelimitedTemplateString( + { value, variables }, + contextPrefixes, + nestedName + ); + if (sibling) { + value = sibling.value; + variables = { ...variables, ...sibling.variables }; + } + } catch (error) { + // Likely no closing tag detected + console.error({ value, variables, nestedName }); + throw error; + } + } + // Extract any recursively nested dynamic values + if (variables) { + nestedName += `${Object.keys(variables).length}.`; + for (const [key, parent] of Object.entries(variables)) { + const nested = extractDelimitedTemplateString( + { value: parent.value, variables: {} }, + contextPrefixes, + nestedName + ); + const { variables: nestedVariables } = nested; + if (nestedVariables) { + variables[key] = nested; + } + } + } + return Object.keys(variables).length === 0 ? { value } : { value, variables }; +} + +function insertCharacter(str: string, char: string, index: number) { + return str.slice(0, index) + char + str.slice(index); +} diff --git a/packages/shared/src/utils/index.ts b/packages/shared/src/utils/index.ts new file mode 100644 index 0000000000..c13064083d --- /dev/null +++ b/packages/shared/src/utils/index.ts @@ -0,0 +1 @@ +export * from "./delimiters"; diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json new file mode 100644 index 0000000000..bfd50c39d1 --- /dev/null +++ b/packages/shared/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2015", + "noEmit": true, + "moduleResolution": "node", + "module": "commonjs", + "esModuleInterop": true, + "resolveJsonModule": true, + // Global type definitions. + "typeRoots": ["./node_modules/@types"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/test-e2e/projects/example/fixtures/profile.json b/packages/test-e2e/projects/example/fixtures/profile.json index b6c355ca5c..a95e88f9cb 100644 --- a/packages/test-e2e/projects/example/fixtures/profile.json +++ b/packages/test-e2e/projects/example/fixtures/profile.json @@ -2,4 +2,4 @@ "id": 8739, "name": "Jane", "email": "jane@example.com" -} \ No newline at end of file +} diff --git a/packages/test-e2e/projects/example/fixtures/users.json b/packages/test-e2e/projects/example/fixtures/users.json index 79b699aa77..82a0056b3b 100644 --- a/packages/test-e2e/projects/example/fixtures/users.json +++ b/packages/test-e2e/projects/example/fixtures/users.json @@ -229,4 +229,4 @@ "bs": "target end-to-end models" } } -] \ No newline at end of file +] diff --git a/packages/test-e2e/projects/example/integration/1-getting-started/todo.spec.js b/packages/test-e2e/projects/example/integration/1-getting-started/todo.spec.js index 4768ff923e..dc20108501 100644 --- a/packages/test-e2e/projects/example/integration/1-getting-started/todo.spec.js +++ b/packages/test-e2e/projects/example/integration/1-getting-started/todo.spec.js @@ -11,32 +11,32 @@ // please read our getting started guide: // https://on.cypress.io/introduction-to-cypress -describe('example to-do app', () => { +describe("example to-do app", () => { beforeEach(() => { // Cypress starts out with a blank slate for each test // so we must tell it to visit our website with the `cy.visit()` command. // Since we want to visit the same URL at the start of all our tests, // we include it in our beforeEach function so that it runs before each test - cy.visit('https://example.cypress.io/todo') - }) + cy.visit("https://example.cypress.io/todo"); + }); - it('displays two todo items by default', () => { + it("displays two todo items by default", () => { // We use the `cy.get()` command to get all elements that match the selector. // Then, we use `should` to assert that there are two matched items, // which are the two default items. - cy.get('.todo-list li').should('have.length', 2) + cy.get(".todo-list li").should("have.length", 2); // We can go even further and check that the default todos each contain // the correct text. We use the `first` and `last` functions // to get just the first and last matched elements individually, // and then perform an assertion with `should`. - cy.get('.todo-list li').first().should('have.text', 'Pay electric bill') - cy.get('.todo-list li').last().should('have.text', 'Walk the dog') - }) + cy.get(".todo-list li").first().should("have.text", "Pay electric bill"); + cy.get(".todo-list li").last().should("have.text", "Walk the dog"); + }); - it('can add new todo items', () => { + it("can add new todo items", () => { // We'll store our item text in a variable so we can reuse it - const newItem = 'Feed the cat' + const newItem = "Feed the cat"; // Let's get the input element and use the `type` command to // input our new list item. After typing the content of our item, @@ -44,100 +44,84 @@ describe('example to-do app', () => { // This input has a data-test attribute so we'll use that to select the // element in accordance with best practices: // https://on.cypress.io/selecting-elements - cy.get('[data-test=new-todo]').type(`${newItem}{enter}`) + cy.get("[data-test=new-todo]").type(`${newItem}{enter}`); // Now that we've typed our new item, let's check that it actually was added to the list. // Since it's the newest item, it should exist as the last element in the list. // In addition, with the two default items, we should have a total of 3 elements in the list. // Since assertions yield the element that was asserted on, // we can chain both of these assertions together into a single statement. - cy.get('.todo-list li') - .should('have.length', 3) - .last() - .should('have.text', newItem) - }) + cy.get(".todo-list li").should("have.length", 3).last().should("have.text", newItem); + }); - it('can check off an item as completed', () => { + it("can check off an item as completed", () => { // In addition to using the `get` command to get an element by selector, // we can also use the `contains` command to get an element by its contents. // However, this will yield the
                                                                                                                                                                                • element. // Once we get that element, we can assert that it has the completed class. - cy.contains('Pay electric bill') - .parents('li') - .should('have.class', 'completed') - }) + cy.contains("Pay electric bill").parents("li").should("have.class", "completed"); + }); - context('with a checked task', () => { + context("with a checked task", () => { beforeEach(() => { // We'll take the command we used above to check off an element // Since we want to perform multiple tests that start with checking // one element, we put it in the beforeEach hook // so that it runs at the start of every test. - cy.contains('Pay electric bill') - .parent() - .find('input[type=checkbox]') - .check() - }) + cy.contains("Pay electric bill").parent().find("input[type=checkbox]").check(); + }); - it('can filter for uncompleted tasks', () => { + it("can filter for uncompleted tasks", () => { // We'll click on the "active" button in order to // display only incomplete items - cy.contains('Active').click() + cy.contains("Active").click(); // After filtering, we can assert that there is only the one // incomplete item in the list. - cy.get('.todo-list li') - .should('have.length', 1) - .first() - .should('have.text', 'Walk the dog') + cy.get(".todo-list li").should("have.length", 1).first().should("have.text", "Walk the dog"); // For good measure, let's also assert that the task we checked off // does not exist on the page. - cy.contains('Pay electric bill').should('not.exist') - }) + cy.contains("Pay electric bill").should("not.exist"); + }); - it('can filter for completed tasks', () => { + it("can filter for completed tasks", () => { // We can perform similar steps as the test above to ensure // that only completed tasks are shown - cy.contains('Completed').click() + cy.contains("Completed").click(); - cy.get('.todo-list li') - .should('have.length', 1) + cy.get(".todo-list li") + .should("have.length", 1) .first() - .should('have.text', 'Pay electric bill') + .should("have.text", "Pay electric bill"); - cy.contains('Walk the dog').should('not.exist') - }) + cy.contains("Walk the dog").should("not.exist"); + }); - it('can delete all completed tasks', () => { + it("can delete all completed tasks", () => { // First, let's click the "Clear completed" button // `contains` is actually serving two purposes here. // First, it's ensuring that the button exists within the dom. // This button only appears when at least one task is checked // so this command is implicitly verifying that it does exist. // Second, it selects the button so we can click it. - cy.contains('Clear completed').click() + cy.contains("Clear completed").click(); // Then we can make sure that there is only one element // in the list and our element does not exist - cy.get('.todo-list li') - .should('have.length', 1) - .should('not.have.text', 'Pay electric bill') + cy.get(".todo-list li").should("have.length", 1).should("not.have.text", "Pay electric bill"); // Finally, make sure that the clear button no longer exists. - cy.contains('Clear completed').should('not.exist') - }) - }) -}) + cy.contains("Clear completed").should("not.exist"); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/actions.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/actions.spec.js index 092637998e..4c9dfa614f 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/actions.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/actions.spec.js @@ -1,72 +1,77 @@ /// -context('Actions', () => { +context("Actions", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/actions') - }) + cy.visit("https://example.cypress.io/commands/actions"); + }); // https://on.cypress.io/interacting-with-elements - it('.type() - type into a DOM element', () => { + it(".type() - type into a DOM element", () => { // https://on.cypress.io/type - cy.get('.action-email') - .type('fake@email.com').should('have.value', 'fake@email.com') + cy.get(".action-email") + .type("fake@email.com") + .should("have.value", "fake@email.com") // .type() with special character sequences - .type('{leftarrow}{rightarrow}{uparrow}{downarrow}') - .type('{del}{selectall}{backspace}') + .type("{leftarrow}{rightarrow}{uparrow}{downarrow}") + .type("{del}{selectall}{backspace}") // .type() with key modifiers - .type('{alt}{option}') //these are equivalent - .type('{ctrl}{control}') //these are equivalent - .type('{meta}{command}{cmd}') //these are equivalent - .type('{shift}') + .type("{alt}{option}") //these are equivalent + .type("{ctrl}{control}") //these are equivalent + .type("{meta}{command}{cmd}") //these are equivalent + .type("{shift}") // Delay each keypress by 0.1 sec - .type('slow.typing@email.com', { delay: 100 }) - .should('have.value', 'slow.typing@email.com') + .type("slow.typing@email.com", { delay: 100 }) + .should("have.value", "slow.typing@email.com"); - cy.get('.action-disabled') + cy.get(".action-disabled") // Ignore error checking prior to type // like whether the input is visible or disabled - .type('disabled error checking', { force: true }) - .should('have.value', 'disabled error checking') - }) + .type("disabled error checking", { force: true }) + .should("have.value", "disabled error checking"); + }); - it('.focus() - focus on a DOM element', () => { + it(".focus() - focus on a DOM element", () => { // https://on.cypress.io/focus - cy.get('.action-focus').focus() - .should('have.class', 'focus') - .prev().should('have.attr', 'style', 'color: orange;') - }) - - it('.blur() - blur off a DOM element', () => { + cy.get(".action-focus") + .focus() + .should("have.class", "focus") + .prev() + .should("have.attr", "style", "color: orange;"); + }); + + it(".blur() - blur off a DOM element", () => { // https://on.cypress.io/blur - cy.get('.action-blur').type('About to blur').blur() - .should('have.class', 'error') - .prev().should('have.attr', 'style', 'color: red;') - }) - - it('.clear() - clears an input or textarea element', () => { + cy.get(".action-blur") + .type("About to blur") + .blur() + .should("have.class", "error") + .prev() + .should("have.attr", "style", "color: red;"); + }); + + it(".clear() - clears an input or textarea element", () => { // https://on.cypress.io/clear - cy.get('.action-clear').type('Clear this text') - .should('have.value', 'Clear this text') + cy.get(".action-clear") + .type("Clear this text") + .should("have.value", "Clear this text") .clear() - .should('have.value', '') - }) + .should("have.value", ""); + }); - it('.submit() - submit a form', () => { + it(".submit() - submit a form", () => { // https://on.cypress.io/submit - cy.get('.action-form') - .find('[type="text"]').type('HALFOFF') + cy.get(".action-form").find('[type="text"]').type("HALFOFF"); - cy.get('.action-form').submit() - .next().should('contain', 'Your form has been submitted!') - }) + cy.get(".action-form").submit().next().should("contain", "Your form has been submitted!"); + }); - it('.click() - click on a DOM element', () => { + it(".click() - click on a DOM element", () => { // https://on.cypress.io/click - cy.get('.action-btn').click() + cy.get(".action-btn").click(); // You can click on 9 specific positions of an element: // ----------------------------------- @@ -82,169 +87,157 @@ context('Actions', () => { // ----------------------------------- // clicking in the center of the element is the default - cy.get('#action-canvas').click() + cy.get("#action-canvas").click(); - cy.get('#action-canvas').click('topLeft') - cy.get('#action-canvas').click('top') - cy.get('#action-canvas').click('topRight') - cy.get('#action-canvas').click('left') - cy.get('#action-canvas').click('right') - cy.get('#action-canvas').click('bottomLeft') - cy.get('#action-canvas').click('bottom') - cy.get('#action-canvas').click('bottomRight') + cy.get("#action-canvas").click("topLeft"); + cy.get("#action-canvas").click("top"); + cy.get("#action-canvas").click("topRight"); + cy.get("#action-canvas").click("left"); + cy.get("#action-canvas").click("right"); + cy.get("#action-canvas").click("bottomLeft"); + cy.get("#action-canvas").click("bottom"); + cy.get("#action-canvas").click("bottomRight"); // .click() accepts an x and y coordinate // that controls where the click occurs :) - cy.get('#action-canvas') + cy.get("#action-canvas") .click(80, 75) // click 80px on x coord and 75px on y coord .click(170, 75) .click(80, 165) .click(100, 185) .click(125, 190) .click(150, 185) - .click(170, 165) + .click(170, 165); // click multiple elements by passing multiple: true - cy.get('.action-labels>.label').click({ multiple: true }) + cy.get(".action-labels>.label").click({ multiple: true }); // Ignore error checking prior to clicking - cy.get('.action-opacity>.btn').click({ force: true }) - }) + cy.get(".action-opacity>.btn").click({ force: true }); + }); - it('.dblclick() - double click on a DOM element', () => { + it(".dblclick() - double click on a DOM element", () => { // https://on.cypress.io/dblclick // Our app has a listener on 'dblclick' event in our 'scripts.js' // that hides the div and shows an input on double click - cy.get('.action-div').dblclick().should('not.be.visible') - cy.get('.action-input-hidden').should('be.visible') - }) + cy.get(".action-div").dblclick().should("not.be.visible"); + cy.get(".action-input-hidden").should("be.visible"); + }); - it('.rightclick() - right click on a DOM element', () => { + it(".rightclick() - right click on a DOM element", () => { // https://on.cypress.io/rightclick // Our app has a listener on 'contextmenu' event in our 'scripts.js' // that hides the div and shows an input on right click - cy.get('.rightclick-action-div').rightclick().should('not.be.visible') - cy.get('.rightclick-action-input-hidden').should('be.visible') - }) + cy.get(".rightclick-action-div").rightclick().should("not.be.visible"); + cy.get(".rightclick-action-input-hidden").should("be.visible"); + }); - it('.check() - check a checkbox or radio element', () => { + it(".check() - check a checkbox or radio element", () => { // https://on.cypress.io/check // By default, .check() will check all // matching checkbox or radio elements in succession, one after another - cy.get('.action-checkboxes [type="checkbox"]').not('[disabled]') - .check().should('be.checked') + cy.get('.action-checkboxes [type="checkbox"]').not("[disabled]").check().should("be.checked"); - cy.get('.action-radios [type="radio"]').not('[disabled]') - .check().should('be.checked') + cy.get('.action-radios [type="radio"]').not("[disabled]").check().should("be.checked"); // .check() accepts a value argument - cy.get('.action-radios [type="radio"]') - .check('radio1').should('be.checked') + cy.get('.action-radios [type="radio"]').check("radio1").should("be.checked"); // .check() accepts an array of values cy.get('.action-multiple-checkboxes [type="checkbox"]') - .check(['checkbox1', 'checkbox2']).should('be.checked') + .check(["checkbox1", "checkbox2"]) + .should("be.checked"); // Ignore error checking prior to checking - cy.get('.action-checkboxes [disabled]') - .check({ force: true }).should('be.checked') + cy.get(".action-checkboxes [disabled]").check({ force: true }).should("be.checked"); - cy.get('.action-radios [type="radio"]') - .check('radio3', { force: true }).should('be.checked') - }) + cy.get('.action-radios [type="radio"]').check("radio3", { force: true }).should("be.checked"); + }); - it('.uncheck() - uncheck a checkbox element', () => { + it(".uncheck() - uncheck a checkbox element", () => { // https://on.cypress.io/uncheck // By default, .uncheck() will uncheck all matching // checkbox elements in succession, one after another - cy.get('.action-check [type="checkbox"]') - .not('[disabled]') - .uncheck().should('not.be.checked') + cy.get('.action-check [type="checkbox"]').not("[disabled]").uncheck().should("not.be.checked"); // .uncheck() accepts a value argument cy.get('.action-check [type="checkbox"]') - .check('checkbox1') - .uncheck('checkbox1').should('not.be.checked') + .check("checkbox1") + .uncheck("checkbox1") + .should("not.be.checked"); // .uncheck() accepts an array of values cy.get('.action-check [type="checkbox"]') - .check(['checkbox1', 'checkbox3']) - .uncheck(['checkbox1', 'checkbox3']).should('not.be.checked') + .check(["checkbox1", "checkbox3"]) + .uncheck(["checkbox1", "checkbox3"]) + .should("not.be.checked"); // Ignore error checking prior to unchecking - cy.get('.action-check [disabled]') - .uncheck({ force: true }).should('not.be.checked') - }) + cy.get(".action-check [disabled]").uncheck({ force: true }).should("not.be.checked"); + }); - it('.select() - select an option in a element", () => { // https://on.cypress.io/select // at first, no option should be selected - cy.get('.action-select') - .should('have.value', '--Select a fruit--') + cy.get(".action-select").should("have.value", "--Select a fruit--"); // Select option(s) with matching text content - cy.get('.action-select').select('apples') + cy.get(".action-select").select("apples"); // confirm the apples were selected // note that each value starts with "fr-" in our HTML - cy.get('.action-select').should('have.value', 'fr-apples') + cy.get(".action-select").should("have.value", "fr-apples"); - cy.get('.action-select-multiple') - .select(['apples', 'oranges', 'bananas']) + cy.get(".action-select-multiple") + .select(["apples", "oranges", "bananas"]) // when getting multiple values, invoke "val" method first - .invoke('val') - .should('deep.equal', ['fr-apples', 'fr-oranges', 'fr-bananas']) + .invoke("val") + .should("deep.equal", ["fr-apples", "fr-oranges", "fr-bananas"]); // Select option(s) with matching value - cy.get('.action-select').select('fr-bananas') + cy.get(".action-select") + .select("fr-bananas") // can attach an assertion right away to the element - .should('have.value', 'fr-bananas') + .should("have.value", "fr-bananas"); - cy.get('.action-select-multiple') - .select(['fr-apples', 'fr-oranges', 'fr-bananas']) - .invoke('val') - .should('deep.equal', ['fr-apples', 'fr-oranges', 'fr-bananas']) + cy.get(".action-select-multiple") + .select(["fr-apples", "fr-oranges", "fr-bananas"]) + .invoke("val") + .should("deep.equal", ["fr-apples", "fr-oranges", "fr-bananas"]); // assert the selected values include oranges - cy.get('.action-select-multiple') - .invoke('val').should('include', 'fr-oranges') - }) + cy.get(".action-select-multiple").invoke("val").should("include", "fr-oranges"); + }); - it('.scrollIntoView() - scroll an element into view', () => { + it(".scrollIntoView() - scroll an element into view", () => { // https://on.cypress.io/scrollintoview // normally all of these buttons are hidden, // because they're not within // the viewable area of their parent // (we need to scroll to see them) - cy.get('#scroll-horizontal button') - .should('not.be.visible') + cy.get("#scroll-horizontal button").should("not.be.visible"); // scroll the button into view, as if the user had scrolled - cy.get('#scroll-horizontal button').scrollIntoView() - .should('be.visible') + cy.get("#scroll-horizontal button").scrollIntoView().should("be.visible"); - cy.get('#scroll-vertical button') - .should('not.be.visible') + cy.get("#scroll-vertical button").should("not.be.visible"); // Cypress handles the scroll direction needed - cy.get('#scroll-vertical button').scrollIntoView() - .should('be.visible') + cy.get("#scroll-vertical button").scrollIntoView().should("be.visible"); - cy.get('#scroll-both button') - .should('not.be.visible') + cy.get("#scroll-both button").should("not.be.visible"); // Cypress knows to scroll to the right and down - cy.get('#scroll-both button').scrollIntoView() - .should('be.visible') - }) + cy.get("#scroll-both button").scrollIntoView().should("be.visible"); + }); - it('.trigger() - trigger an event on a DOM element', () => { + it(".trigger() - trigger an event on a DOM element", () => { // https://on.cypress.io/trigger // To interact with a range input (slider) @@ -253,14 +246,15 @@ context('Actions', () => { // Here, we invoke jQuery's val() method to set // the value and trigger the 'change' event - cy.get('.trigger-input-range') - .invoke('val', 25) - .trigger('change') - .get('input[type=range]').siblings('p') - .should('have.text', '25') - }) - - it('cy.scrollTo() - scroll the window or element to a position', () => { + cy.get(".trigger-input-range") + .invoke("val", 25) + .trigger("change") + .get("input[type=range]") + .siblings("p") + .should("have.text", "25"); + }); + + it("cy.scrollTo() - scroll the window or element to a position", () => { // https://on.cypress.io/scrollto // You can scroll to 9 specific positions of an element: @@ -278,22 +272,22 @@ context('Actions', () => { // if you chain .scrollTo() off of cy, we will // scroll the entire window - cy.scrollTo('bottom') + cy.scrollTo("bottom"); - cy.get('#scrollable-horizontal').scrollTo('right') + cy.get("#scrollable-horizontal").scrollTo("right"); // or you can scroll to a specific coordinate: // (x axis, y axis) in pixels - cy.get('#scrollable-vertical').scrollTo(250, 250) + cy.get("#scrollable-vertical").scrollTo(250, 250); // or you can scroll to a specific percentage // of the (width, height) of the element - cy.get('#scrollable-both').scrollTo('75%', '25%') + cy.get("#scrollable-both").scrollTo("75%", "25%"); // control the easing of the scroll (default is 'swing') - cy.get('#scrollable-vertical').scrollTo('center', { easing: 'linear' }) + cy.get("#scrollable-vertical").scrollTo("center", { easing: "linear" }); // control the duration of the scroll (in ms) - cy.get('#scrollable-both').scrollTo('center', { duration: 2000 }) - }) -}) + cy.get("#scrollable-both").scrollTo("center", { duration: 2000 }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/aliasing.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/aliasing.spec.js index a02fb2bb93..152b8ece9c 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/aliasing.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/aliasing.spec.js @@ -1,39 +1,35 @@ /// -context('Aliasing', () => { +context("Aliasing", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/aliasing') - }) + cy.visit("https://example.cypress.io/commands/aliasing"); + }); - it('.as() - alias a DOM element for later use', () => { + it(".as() - alias a DOM element for later use", () => { // https://on.cypress.io/as // Alias a DOM element for use later // We don't have to traverse to the element // later in our code, we reference it with @ - cy.get('.as-table').find('tbody>tr') - .first().find('td').first() - .find('button').as('firstBtn') + cy.get(".as-table").find("tbody>tr").first().find("td").first().find("button").as("firstBtn"); // when we reference the alias, we place an // @ in front of its name - cy.get('@firstBtn').click() + cy.get("@firstBtn").click(); - cy.get('@firstBtn') - .should('have.class', 'btn-success') - .and('contain', 'Changed') - }) + cy.get("@firstBtn").should("have.class", "btn-success").and("contain", "Changed"); + }); - it('.as() - alias a route for later use', () => { + it(".as() - alias a route for later use", () => { // Alias the route to wait for its response - cy.intercept('GET', '**/comments/*').as('getComment') + cy.intercept("GET", "**/comments/*").as("getComment"); // we have code that gets a comment when // the button is clicked in scripts.js - cy.get('.network-btn').click() + cy.get(".network-btn").click(); // https://on.cypress.io/wait - cy.wait('@getComment').its('response.statusCode').should('eq', 200) - }) -}) + cy.wait("@getComment").its("response.statusCode").should("eq", 200); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/assertions.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/assertions.spec.js index 5ba93d1db6..2b5914a9c5 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/assertions.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/assertions.spec.js @@ -1,177 +1,176 @@ /// -context('Assertions', () => { +context("Assertions", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/assertions') - }) + cy.visit("https://example.cypress.io/commands/assertions"); + }); - describe('Implicit Assertions', () => { - it('.should() - make an assertion about the current subject', () => { + describe("Implicit Assertions", () => { + it(".should() - make an assertion about the current subject", () => { // https://on.cypress.io/should - cy.get('.assertion-table') - .find('tbody tr:last') - .should('have.class', 'success') - .find('td') + cy.get(".assertion-table") + .find("tbody tr:last") + .should("have.class", "success") + .find("td") .first() // checking the text of the element in various ways - .should('have.text', 'Column content') - .should('contain', 'Column content') - .should('have.html', 'Column content') + .should("have.text", "Column content") + .should("contain", "Column content") + .should("have.html", "Column content") // chai-jquery uses "is()" to check if element matches selector - .should('match', 'td') + .should("match", "td") // to match text content against a regular expression // first need to invoke jQuery method text() // and then match using regular expression - .invoke('text') - .should('match', /column content/i) + .invoke("text") + .should("match", /column content/i); // a better way to check element's text content against a regular expression // is to use "cy.contains" // https://on.cypress.io/contains - cy.get('.assertion-table') - .find('tbody tr:last') + cy.get(".assertion-table") + .find("tbody tr:last") // finds first element with text content matching regular expression - .contains('td', /column content/i) - .should('be.visible') + .contains("td", /column content/i) + .should("be.visible"); // for more information about asserting element's text // see https://on.cypress.io/using-cypress-faq#How-do-I-get-an-element’s-text-contents - }) + }); - it('.and() - chain multiple assertions together', () => { + it(".and() - chain multiple assertions together", () => { // https://on.cypress.io/and - cy.get('.assertions-link') - .should('have.class', 'active') - .and('have.attr', 'href') - .and('include', 'cypress.io') - }) - }) - - describe('Explicit Assertions', () => { + cy.get(".assertions-link") + .should("have.class", "active") + .and("have.attr", "href") + .and("include", "cypress.io"); + }); + }); + + describe("Explicit Assertions", () => { // https://on.cypress.io/assertions - it('expect - make an assertion about a specified subject', () => { + it("expect - make an assertion about a specified subject", () => { // We can use Chai's BDD style assertions - expect(true).to.be.true - const o = { foo: 'bar' } + expect(true).to.be.true; + const o = { foo: "bar" }; - expect(o).to.equal(o) - expect(o).to.deep.equal({ foo: 'bar' }) + expect(o).to.equal(o); + expect(o).to.deep.equal({ foo: "bar" }); // matching text using regular expression - expect('FooBar').to.match(/bar$/i) - }) + expect("FooBar").to.match(/bar$/i); + }); - it('pass your own callback function to should()', () => { + it("pass your own callback function to should()", () => { // Pass a function to should that can have any number // of explicit assertions within it. // The ".should(cb)" function will be retried // automatically until it passes all your explicit assertions or times out. - cy.get('.assertions-p') - .find('p') + cy.get(".assertions-p") + .find("p") .should(($p) => { // https://on.cypress.io/$ // return an array of texts from all of the p's // @ts-ignore TS6133 unused variable - const texts = $p.map((i, el) => Cypress.$(el).text()) + const texts = $p.map((i, el) => Cypress.$(el).text()); // jquery map returns jquery object // and .get() convert this to simple array - const paragraphs = texts.get() + const paragraphs = texts.get(); // array should have length of 3 - expect(paragraphs, 'has 3 paragraphs').to.have.length(3) + expect(paragraphs, "has 3 paragraphs").to.have.length(3); // use second argument to expect(...) to provide clear // message with each assertion - expect(paragraphs, 'has expected text in each paragraph').to.deep.eq([ - 'Some text from first p', - 'More text from second p', - 'And even more text from third p', - ]) - }) - }) - - it('finds element by class name regex', () => { - cy.get('.docs-header') - .find('div') + expect(paragraphs, "has expected text in each paragraph").to.deep.eq([ + "Some text from first p", + "More text from second p", + "And even more text from third p", + ]); + }); + }); + + it("finds element by class name regex", () => { + cy.get(".docs-header") + .find("div") // .should(cb) callback function will be retried .should(($div) => { - expect($div).to.have.length(1) + expect($div).to.have.length(1); - const className = $div[0].className + const className = $div[0].className; - expect(className).to.match(/heading-/) + expect(className).to.match(/heading-/); }) // .then(cb) callback is not retried, // it either passes or fails .then(($div) => { - expect($div, 'text content').to.have.text('Introduction') - }) - }) + expect($div, "text content").to.have.text("Introduction"); + }); + }); - it('can throw any error', () => { - cy.get('.docs-header') - .find('div') + it("can throw any error", () => { + cy.get(".docs-header") + .find("div") .should(($div) => { if ($div.length !== 1) { // you can throw your own errors - throw new Error('Did not find 1 element') + throw new Error("Did not find 1 element"); } - const className = $div[0].className + const className = $div[0].className; if (!className.match(/heading-/)) { - throw new Error(`Could not find class "heading-" in ${className}`) + throw new Error(`Could not find class "heading-" in ${className}`); } - }) - }) + }); + }); - it('matches unknown text between two elements', () => { + it("matches unknown text between two elements", () => { /** * Text from the first element. * @type {string} - */ - let text + */ + let text; /** * Normalizes passed text, * useful before comparing text with spaces and different capitalization. * @param {string} s Text to normalize - */ - const normalizeText = (s) => s.replace(/\s/g, '').toLowerCase() + */ + const normalizeText = (s) => s.replace(/\s/g, "").toLowerCase(); - cy.get('.two-elements') - .find('.first') + cy.get(".two-elements") + .find(".first") .then(($first) => { // save text from the first element - text = normalizeText($first.text()) - }) + text = normalizeText($first.text()); + }); - cy.get('.two-elements') - .find('.second') + cy.get(".two-elements") + .find(".second") .should(($div) => { // we can massage text before comparing - const secondText = normalizeText($div.text()) + const secondText = normalizeText($div.text()); - expect(secondText, 'second text').to.equal(text) - }) - }) + expect(secondText, "second text").to.equal(text); + }); + }); - it('assert - assert shape of an object', () => { + it("assert - assert shape of an object", () => { const person = { - name: 'Joe', + name: "Joe", age: 20, - } + }; - assert.isObject(person, 'value is object') - }) + assert.isObject(person, "value is object"); + }); - it('retries the should callback until assertions pass', () => { - cy.get('#random-number') - .should(($div) => { - const n = parseFloat($div.text()) + it("retries the should callback until assertions pass", () => { + cy.get("#random-number").should(($div) => { + const n = parseFloat($div.text()); - expect(n).to.be.gte(1).and.be.lte(10) - }) - }) - }) -}) + expect(n).to.be.gte(1).and.be.lte(10); + }); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/connectors.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/connectors.spec.js index ae8799181d..3cd60d308e 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/connectors.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/connectors.spec.js @@ -1,97 +1,96 @@ /// -context('Connectors', () => { +context("Connectors", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/connectors') - }) + cy.visit("https://example.cypress.io/commands/connectors"); + }); - it('.each() - iterate over an array of elements', () => { + it(".each() - iterate over an array of elements", () => { // https://on.cypress.io/each - cy.get('.connectors-each-ul>li') - .each(($el, index, $list) => { - console.log($el, index, $list) - }) - }) + cy.get(".connectors-each-ul>li").each(($el, index, $list) => { + console.log($el, index, $list); + }); + }); - it('.its() - get properties on the current subject', () => { + it(".its() - get properties on the current subject", () => { // https://on.cypress.io/its - cy.get('.connectors-its-ul>li') + cy.get(".connectors-its-ul>li") // calls the 'length' property yielding that value - .its('length') - .should('be.gt', 2) - }) + .its("length") + .should("be.gt", 2); + }); - it('.invoke() - invoke a function on the current subject', () => { + it(".invoke() - invoke a function on the current subject", () => { // our div is hidden in our script.js // $('.connectors-div').hide() // https://on.cypress.io/invoke - cy.get('.connectors-div').should('be.hidden') + cy.get(".connectors-div") + .should("be.hidden") // call the jquery method 'show' on the 'div.container' - .invoke('show') - .should('be.visible') - }) + .invoke("show") + .should("be.visible"); + }); - it('.spread() - spread an array as individual args to callback function', () => { + it(".spread() - spread an array as individual args to callback function", () => { // https://on.cypress.io/spread - const arr = ['foo', 'bar', 'baz'] + const arr = ["foo", "bar", "baz"]; cy.wrap(arr).spread((foo, bar, baz) => { - expect(foo).to.eq('foo') - expect(bar).to.eq('bar') - expect(baz).to.eq('baz') - }) - }) + expect(foo).to.eq("foo"); + expect(bar).to.eq("bar"); + expect(baz).to.eq("baz"); + }); + }); - describe('.then()', () => { - it('invokes a callback function with the current subject', () => { + describe(".then()", () => { + it("invokes a callback function with the current subject", () => { // https://on.cypress.io/then - cy.get('.connectors-list > li') - .then(($lis) => { - expect($lis, '3 items').to.have.length(3) - expect($lis.eq(0), 'first item').to.contain('Walk the dog') - expect($lis.eq(1), 'second item').to.contain('Feed the cat') - expect($lis.eq(2), 'third item').to.contain('Write JavaScript') - }) - }) + cy.get(".connectors-list > li").then(($lis) => { + expect($lis, "3 items").to.have.length(3); + expect($lis.eq(0), "first item").to.contain("Walk the dog"); + expect($lis.eq(1), "second item").to.contain("Feed the cat"); + expect($lis.eq(2), "third item").to.contain("Write JavaScript"); + }); + }); - it('yields the returned value to the next command', () => { + it("yields the returned value to the next command", () => { cy.wrap(1) .then((num) => { - expect(num).to.equal(1) + expect(num).to.equal(1); - return 2 + return 2; }) .then((num) => { - expect(num).to.equal(2) - }) - }) + expect(num).to.equal(2); + }); + }); - it('yields the original subject without return', () => { + it("yields the original subject without return", () => { cy.wrap(1) .then((num) => { - expect(num).to.equal(1) + expect(num).to.equal(1); // note that nothing is returned from this callback }) .then((num) => { // this callback receives the original unchanged value 1 - expect(num).to.equal(1) - }) - }) + expect(num).to.equal(1); + }); + }); - it('yields the value yielded by the last Cypress command inside', () => { + it("yields the value yielded by the last Cypress command inside", () => { cy.wrap(1) .then((num) => { - expect(num).to.equal(1) + expect(num).to.equal(1); // note how we run a Cypress command // the result yielded by this Cypress command // will be passed to the second ".then" - cy.wrap(2) + cy.wrap(2); }) .then((num) => { // this callback receives the value yielded by "cy.wrap(2)" - expect(num).to.equal(2) - }) - }) - }) -}) + expect(num).to.equal(2); + }); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/cookies.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/cookies.spec.js index 31587ff907..390ee76e20 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/cookies.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/cookies.spec.js @@ -1,77 +1,79 @@ /// -context('Cookies', () => { +context("Cookies", () => { beforeEach(() => { - Cypress.Cookies.debug(true) + Cypress.Cookies.debug(true); - cy.visit('https://example.cypress.io/commands/cookies') + cy.visit("https://example.cypress.io/commands/cookies"); // clear cookies again after visiting to remove // any 3rd party cookies picked up such as cloudflare - cy.clearCookies() - }) + cy.clearCookies(); + }); - it('cy.getCookie() - get a browser cookie', () => { + it("cy.getCookie() - get a browser cookie", () => { // https://on.cypress.io/getcookie - cy.get('#getCookie .set-a-cookie').click() + cy.get("#getCookie .set-a-cookie").click(); // cy.getCookie() yields a cookie object - cy.getCookie('token').should('have.property', 'value', '123ABC') - }) + cy.getCookie("token").should("have.property", "value", "123ABC"); + }); - it('cy.getCookies() - get browser cookies', () => { + it("cy.getCookies() - get browser cookies", () => { // https://on.cypress.io/getcookies - cy.getCookies().should('be.empty') + cy.getCookies().should("be.empty"); - cy.get('#getCookies .set-a-cookie').click() + cy.get("#getCookies .set-a-cookie").click(); // cy.getCookies() yields an array of cookies - cy.getCookies().should('have.length', 1).should((cookies) => { - // each cookie has these properties - expect(cookies[0]).to.have.property('name', 'token') - expect(cookies[0]).to.have.property('value', '123ABC') - expect(cookies[0]).to.have.property('httpOnly', false) - expect(cookies[0]).to.have.property('secure', false) - expect(cookies[0]).to.have.property('domain') - expect(cookies[0]).to.have.property('path') - }) - }) - - it('cy.setCookie() - set a browser cookie', () => { + cy.getCookies() + .should("have.length", 1) + .should((cookies) => { + // each cookie has these properties + expect(cookies[0]).to.have.property("name", "token"); + expect(cookies[0]).to.have.property("value", "123ABC"); + expect(cookies[0]).to.have.property("httpOnly", false); + expect(cookies[0]).to.have.property("secure", false); + expect(cookies[0]).to.have.property("domain"); + expect(cookies[0]).to.have.property("path"); + }); + }); + + it("cy.setCookie() - set a browser cookie", () => { // https://on.cypress.io/setcookie - cy.getCookies().should('be.empty') + cy.getCookies().should("be.empty"); - cy.setCookie('foo', 'bar') + cy.setCookie("foo", "bar"); // cy.getCookie() yields a cookie object - cy.getCookie('foo').should('have.property', 'value', 'bar') - }) + cy.getCookie("foo").should("have.property", "value", "bar"); + }); - it('cy.clearCookie() - clear a browser cookie', () => { + it("cy.clearCookie() - clear a browser cookie", () => { // https://on.cypress.io/clearcookie - cy.getCookie('token').should('be.null') + cy.getCookie("token").should("be.null"); - cy.get('#clearCookie .set-a-cookie').click() + cy.get("#clearCookie .set-a-cookie").click(); - cy.getCookie('token').should('have.property', 'value', '123ABC') + cy.getCookie("token").should("have.property", "value", "123ABC"); // cy.clearCookies() yields null - cy.clearCookie('token').should('be.null') + cy.clearCookie("token").should("be.null"); - cy.getCookie('token').should('be.null') - }) + cy.getCookie("token").should("be.null"); + }); - it('cy.clearCookies() - clear browser cookies', () => { + it("cy.clearCookies() - clear browser cookies", () => { // https://on.cypress.io/clearcookies - cy.getCookies().should('be.empty') + cy.getCookies().should("be.empty"); - cy.get('#clearCookies .set-a-cookie').click() + cy.get("#clearCookies .set-a-cookie").click(); - cy.getCookies().should('have.length', 1) + cy.getCookies().should("have.length", 1); // cy.clearCookies() yields null - cy.clearCookies() + cy.clearCookies(); - cy.getCookies().should('be.empty') - }) -}) + cy.getCookies().should("be.empty"); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/cypress_api.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/cypress_api.spec.js index ec8ceaeda4..a2bacb17d0 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/cypress_api.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/cypress_api.spec.js @@ -1,202 +1,208 @@ /// -context('Cypress.Commands', () => { +context("Cypress.Commands", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); // https://on.cypress.io/custom-commands - it('.add() - create a custom command', () => { - Cypress.Commands.add('console', { - prevSubject: true, - }, (subject, method) => { - // the previous subject is automatically received - // and the commands arguments are shifted - - // allow us to change the console method used - method = method || 'log' - - // log the subject to the console - // @ts-ignore TS7017 - console[method]('The subject is', subject) - - // whatever we return becomes the new subject - // we don't want to change the subject so - // we return whatever was passed in - return subject - }) + it(".add() - create a custom command", () => { + Cypress.Commands.add( + "console", + { + prevSubject: true, + }, + (subject, method) => { + // the previous subject is automatically received + // and the commands arguments are shifted + + // allow us to change the console method used + method = method || "log"; + + // log the subject to the console + // @ts-ignore TS7017 + console[method]("The subject is", subject); + + // whatever we return becomes the new subject + // we don't want to change the subject so + // we return whatever was passed in + return subject; + } + ); // @ts-ignore TS2339 - cy.get('button').console('info').then(($button) => { - // subject is still $button - }) - }) -}) - -context('Cypress.Cookies', () => { + cy.get("button") + .console("info") + .then(($button) => { + // subject is still $button + }); + }); +}); + +context("Cypress.Cookies", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); // https://on.cypress.io/cookies - it('.debug() - enable or disable debugging', () => { - Cypress.Cookies.debug(true) + it(".debug() - enable or disable debugging", () => { + Cypress.Cookies.debug(true); // Cypress will now log in the console when // cookies are set or cleared - cy.setCookie('fakeCookie', '123ABC') - cy.clearCookie('fakeCookie') - cy.setCookie('fakeCookie', '123ABC') - cy.clearCookie('fakeCookie') - cy.setCookie('fakeCookie', '123ABC') - }) - - it('.preserveOnce() - preserve cookies by key', () => { + cy.setCookie("fakeCookie", "123ABC"); + cy.clearCookie("fakeCookie"); + cy.setCookie("fakeCookie", "123ABC"); + cy.clearCookie("fakeCookie"); + cy.setCookie("fakeCookie", "123ABC"); + }); + + it(".preserveOnce() - preserve cookies by key", () => { // normally cookies are reset after each test - cy.getCookie('fakeCookie').should('not.be.ok') + cy.getCookie("fakeCookie").should("not.be.ok"); // preserving a cookie will not clear it when // the next test starts - cy.setCookie('lastCookie', '789XYZ') - Cypress.Cookies.preserveOnce('lastCookie') - }) + cy.setCookie("lastCookie", "789XYZ"); + Cypress.Cookies.preserveOnce("lastCookie"); + }); - it('.defaults() - set defaults for all cookies', () => { + it(".defaults() - set defaults for all cookies", () => { // now any cookie with the name 'session_id' will // not be cleared before each new test runs Cypress.Cookies.defaults({ - preserve: 'session_id', - }) - }) -}) + preserve: "session_id", + }); + }); +}); -context('Cypress.arch', () => { +context("Cypress.arch", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Get CPU architecture name of underlying OS', () => { + it("Get CPU architecture name of underlying OS", () => { // https://on.cypress.io/arch - expect(Cypress.arch).to.exist - }) -}) + expect(Cypress.arch).to.exist; + }); +}); -context('Cypress.config()', () => { +context("Cypress.config()", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Get and set configuration options', () => { + it("Get and set configuration options", () => { // https://on.cypress.io/config - let myConfig = Cypress.config() + let myConfig = Cypress.config(); - expect(myConfig).to.have.property('animationDistanceThreshold', 5) - expect(myConfig).to.have.property('baseUrl', null) - expect(myConfig).to.have.property('defaultCommandTimeout', 4000) - expect(myConfig).to.have.property('requestTimeout', 5000) - expect(myConfig).to.have.property('responseTimeout', 30000) - expect(myConfig).to.have.property('viewportHeight', 660) - expect(myConfig).to.have.property('viewportWidth', 1000) - expect(myConfig).to.have.property('pageLoadTimeout', 60000) - expect(myConfig).to.have.property('waitForAnimations', true) + expect(myConfig).to.have.property("animationDistanceThreshold", 5); + expect(myConfig).to.have.property("baseUrl", null); + expect(myConfig).to.have.property("defaultCommandTimeout", 4000); + expect(myConfig).to.have.property("requestTimeout", 5000); + expect(myConfig).to.have.property("responseTimeout", 30000); + expect(myConfig).to.have.property("viewportHeight", 660); + expect(myConfig).to.have.property("viewportWidth", 1000); + expect(myConfig).to.have.property("pageLoadTimeout", 60000); + expect(myConfig).to.have.property("waitForAnimations", true); - expect(Cypress.config('pageLoadTimeout')).to.eq(60000) + expect(Cypress.config("pageLoadTimeout")).to.eq(60000); // this will change the config for the rest of your tests! - Cypress.config('pageLoadTimeout', 20000) + Cypress.config("pageLoadTimeout", 20000); - expect(Cypress.config('pageLoadTimeout')).to.eq(20000) + expect(Cypress.config("pageLoadTimeout")).to.eq(20000); - Cypress.config('pageLoadTimeout', 60000) - }) -}) + Cypress.config("pageLoadTimeout", 60000); + }); +}); -context('Cypress.dom', () => { +context("Cypress.dom", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); // https://on.cypress.io/dom - it('.isHidden() - determine if a DOM element is hidden', () => { - let hiddenP = Cypress.$('.dom-p p.hidden').get(0) - let visibleP = Cypress.$('.dom-p p.visible').get(0) + it(".isHidden() - determine if a DOM element is hidden", () => { + let hiddenP = Cypress.$(".dom-p p.hidden").get(0); + let visibleP = Cypress.$(".dom-p p.visible").get(0); // our first paragraph has css class 'hidden' - expect(Cypress.dom.isHidden(hiddenP)).to.be.true - expect(Cypress.dom.isHidden(visibleP)).to.be.false - }) -}) + expect(Cypress.dom.isHidden(hiddenP)).to.be.true; + expect(Cypress.dom.isHidden(visibleP)).to.be.false; + }); +}); -context('Cypress.env()', () => { +context("Cypress.env()", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); // We can set environment variables for highly dynamic values // https://on.cypress.io/environment-variables - it('Get environment variables', () => { + it("Get environment variables", () => { // https://on.cypress.io/env // set multiple environment variables Cypress.env({ - host: 'veronica.dev.local', - api_server: 'http://localhost:8888/v1/', - }) + host: "veronica.dev.local", + api_server: "http://localhost:8888/v1/", + }); // get environment variable - expect(Cypress.env('host')).to.eq('veronica.dev.local') + expect(Cypress.env("host")).to.eq("veronica.dev.local"); // set environment variable - Cypress.env('api_server', 'http://localhost:8888/v2/') - expect(Cypress.env('api_server')).to.eq('http://localhost:8888/v2/') + Cypress.env("api_server", "http://localhost:8888/v2/"); + expect(Cypress.env("api_server")).to.eq("http://localhost:8888/v2/"); // get all environment variable - expect(Cypress.env()).to.have.property('host', 'veronica.dev.local') - expect(Cypress.env()).to.have.property('api_server', 'http://localhost:8888/v2/') - }) -}) + expect(Cypress.env()).to.have.property("host", "veronica.dev.local"); + expect(Cypress.env()).to.have.property("api_server", "http://localhost:8888/v2/"); + }); +}); -context('Cypress.log', () => { +context("Cypress.log", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Control what is printed to the Command Log', () => { + it("Control what is printed to the Command Log", () => { // https://on.cypress.io/cypress-log - }) -}) + }); +}); -context('Cypress.platform', () => { +context("Cypress.platform", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Get underlying OS name', () => { + it("Get underlying OS name", () => { // https://on.cypress.io/platform - expect(Cypress.platform).to.be.exist - }) -}) + expect(Cypress.platform).to.be.exist; + }); +}); -context('Cypress.version', () => { +context("Cypress.version", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Get current version of Cypress being run', () => { + it("Get current version of Cypress being run", () => { // https://on.cypress.io/version - expect(Cypress.version).to.be.exist - }) -}) + expect(Cypress.version).to.be.exist; + }); +}); -context('Cypress.spec', () => { +context("Cypress.spec", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/cypress-api') - }) + cy.visit("https://example.cypress.io/cypress-api"); + }); - it('Get current spec information', () => { + it("Get current spec information", () => { // https://on.cypress.io/spec // wrap the object so we can inspect it easily by clicking in the command log - cy.wrap(Cypress.spec).should('include.keys', ['name', 'relative', 'absolute']) - }) -}) + cy.wrap(Cypress.spec).should("include.keys", ["name", "relative", "absolute"]); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/files.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/files.spec.js index 013fdcfc9c..61766c782f 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/files.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/files.spec.js @@ -3,20 +3,20 @@ /// JSON fixture file can be loaded directly using // the built-in JavaScript bundler // @ts-ignore -const requiredExample = require('../../fixtures/example') +const requiredExample = require("../../fixtures/example"); -context('Files', () => { +context("Files", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/files') - }) + cy.visit("https://example.cypress.io/commands/files"); + }); beforeEach(() => { // load example.json fixture file and store // in the test context object - cy.fixture('example.json').as('example') - }) + cy.fixture("example.json").as("example"); + }); - it('cy.fixture() - load a fixture', () => { + it("cy.fixture() - load a fixture", () => { // https://on.cypress.io/fixture // Instead of writing a response inline you can @@ -24,65 +24,63 @@ context('Files', () => { // when application makes an Ajax request matching "GET **/comments/*" // Cypress will intercept it and reply with the object in `example.json` fixture - cy.intercept('GET', '**/comments/*', { fixture: 'example.json' }).as('getComment') + cy.intercept("GET", "**/comments/*", { fixture: "example.json" }).as("getComment"); // we have code that gets a comment when // the button is clicked in scripts.js - cy.get('.fixture-btn').click() + cy.get(".fixture-btn").click(); - cy.wait('@getComment').its('response.body') - .should('have.property', 'name') - .and('include', 'Using fixtures to represent data') - }) + cy.wait("@getComment") + .its("response.body") + .should("have.property", "name") + .and("include", "Using fixtures to represent data"); + }); - it('cy.fixture() or require - load a fixture', function () { + it("cy.fixture() or require - load a fixture", function () { // we are inside the "function () { ... }" // callback and can use test context object "this" // "this.example" was loaded in "beforeEach" function callback - expect(this.example, 'fixture in the test context') - .to.deep.equal(requiredExample) + expect(this.example, "fixture in the test context").to.deep.equal(requiredExample); // or use "cy.wrap" and "should('deep.equal', ...)" assertion - cy.wrap(this.example) - .should('deep.equal', requiredExample) - }) + cy.wrap(this.example).should("deep.equal", requiredExample); + }); - it('cy.readFile() - read file contents', () => { + it("cy.readFile() - read file contents", () => { // https://on.cypress.io/readfile // You can read a file and yield its contents // The filePath is relative to your project's root. - cy.readFile('projects/example/cypress.json').then((json) => { - expect(json).to.be.an('object') - }) - }) + cy.readFile("projects/example/cypress.json").then((json) => { + expect(json).to.be.an("object"); + }); + }); - it('cy.writeFile() - write to a file', () => { + it("cy.writeFile() - write to a file", () => { // https://on.cypress.io/writefile // You can write to a file // Use a response from a request to automatically // generate a fixture file for use later - cy.request('https://jsonplaceholder.cypress.io/users') - .then((response) => { - cy.writeFile('projects/example/fixtures/users.json', response.body) - }) + cy.request("https://jsonplaceholder.cypress.io/users").then((response) => { + cy.writeFile("projects/example/fixtures/users.json", response.body); + }); - cy.fixture('users').should((users) => { - expect(users[0].name).to.exist - }) + cy.fixture("users").should((users) => { + expect(users[0].name).to.exist; + }); // JavaScript arrays and objects are stringified // and formatted into text. - cy.writeFile('projects/example/fixtures/profile.json', { + cy.writeFile("projects/example/fixtures/profile.json", { id: 8739, - name: 'Jane', - email: 'jane@example.com', - }) - - cy.fixture('profile').should((profile) => { - expect(profile.name).to.eq('Jane') - }) - }) -}) + name: "Jane", + email: "jane@example.com", + }); + + cy.fixture("profile").should((profile) => { + expect(profile.name).to.eq("Jane"); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/local_storage.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/local_storage.spec.js index 534d8bd9d3..7007d02bf4 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/local_storage.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/local_storage.spec.js @@ -1,52 +1,58 @@ /// -context('Local Storage', () => { +context("Local Storage", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/local-storage') - }) + cy.visit("https://example.cypress.io/commands/local-storage"); + }); // Although local storage is automatically cleared // in between tests to maintain a clean state // sometimes we need to clear the local storage manually - it('cy.clearLocalStorage() - clear all data in local storage', () => { + it("cy.clearLocalStorage() - clear all data in local storage", () => { // https://on.cypress.io/clearlocalstorage - cy.get('.ls-btn').click().should(() => { - expect(localStorage.getItem('prop1')).to.eq('red') - expect(localStorage.getItem('prop2')).to.eq('blue') - expect(localStorage.getItem('prop3')).to.eq('magenta') - }) + cy.get(".ls-btn") + .click() + .should(() => { + expect(localStorage.getItem("prop1")).to.eq("red"); + expect(localStorage.getItem("prop2")).to.eq("blue"); + expect(localStorage.getItem("prop3")).to.eq("magenta"); + }); // clearLocalStorage() yields the localStorage object cy.clearLocalStorage().should((ls) => { - expect(ls.getItem('prop1')).to.be.null - expect(ls.getItem('prop2')).to.be.null - expect(ls.getItem('prop3')).to.be.null - }) + expect(ls.getItem("prop1")).to.be.null; + expect(ls.getItem("prop2")).to.be.null; + expect(ls.getItem("prop3")).to.be.null; + }); - cy.get('.ls-btn').click().should(() => { - expect(localStorage.getItem('prop1')).to.eq('red') - expect(localStorage.getItem('prop2')).to.eq('blue') - expect(localStorage.getItem('prop3')).to.eq('magenta') - }) + cy.get(".ls-btn") + .click() + .should(() => { + expect(localStorage.getItem("prop1")).to.eq("red"); + expect(localStorage.getItem("prop2")).to.eq("blue"); + expect(localStorage.getItem("prop3")).to.eq("magenta"); + }); // Clear key matching string in Local Storage - cy.clearLocalStorage('prop1').should((ls) => { - expect(ls.getItem('prop1')).to.be.null - expect(ls.getItem('prop2')).to.eq('blue') - expect(ls.getItem('prop3')).to.eq('magenta') - }) + cy.clearLocalStorage("prop1").should((ls) => { + expect(ls.getItem("prop1")).to.be.null; + expect(ls.getItem("prop2")).to.eq("blue"); + expect(ls.getItem("prop3")).to.eq("magenta"); + }); - cy.get('.ls-btn').click().should(() => { - expect(localStorage.getItem('prop1')).to.eq('red') - expect(localStorage.getItem('prop2')).to.eq('blue') - expect(localStorage.getItem('prop3')).to.eq('magenta') - }) + cy.get(".ls-btn") + .click() + .should(() => { + expect(localStorage.getItem("prop1")).to.eq("red"); + expect(localStorage.getItem("prop2")).to.eq("blue"); + expect(localStorage.getItem("prop3")).to.eq("magenta"); + }); // Clear keys matching regex in Local Storage cy.clearLocalStorage(/prop1|2/).should((ls) => { - expect(ls.getItem('prop1')).to.be.null - expect(ls.getItem('prop2')).to.be.null - expect(ls.getItem('prop3')).to.eq('magenta') - }) - }) -}) + expect(ls.getItem("prop1")).to.be.null; + expect(ls.getItem("prop2")).to.be.null; + expect(ls.getItem("prop3")).to.eq("magenta"); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/location.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/location.spec.js index 299867da07..f5e6230d64 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/location.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/location.spec.js @@ -1,32 +1,32 @@ /// -context('Location', () => { +context("Location", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/location') - }) + cy.visit("https://example.cypress.io/commands/location"); + }); - it('cy.hash() - get the current URL hash', () => { + it("cy.hash() - get the current URL hash", () => { // https://on.cypress.io/hash - cy.hash().should('be.empty') - }) + cy.hash().should("be.empty"); + }); - it('cy.location() - get window.location', () => { + it("cy.location() - get window.location", () => { // https://on.cypress.io/location cy.location().should((location) => { - expect(location.hash).to.be.empty - expect(location.href).to.eq('https://example.cypress.io/commands/location') - expect(location.host).to.eq('example.cypress.io') - expect(location.hostname).to.eq('example.cypress.io') - expect(location.origin).to.eq('https://example.cypress.io') - expect(location.pathname).to.eq('/commands/location') - expect(location.port).to.eq('') - expect(location.protocol).to.eq('https:') - expect(location.search).to.be.empty - }) - }) + expect(location.hash).to.be.empty; + expect(location.href).to.eq("https://example.cypress.io/commands/location"); + expect(location.host).to.eq("example.cypress.io"); + expect(location.hostname).to.eq("example.cypress.io"); + expect(location.origin).to.eq("https://example.cypress.io"); + expect(location.pathname).to.eq("/commands/location"); + expect(location.port).to.eq(""); + expect(location.protocol).to.eq("https:"); + expect(location.search).to.be.empty; + }); + }); - it('cy.url() - get the current URL', () => { + it("cy.url() - get the current URL", () => { // https://on.cypress.io/url - cy.url().should('eq', 'https://example.cypress.io/commands/location') - }) -}) + cy.url().should("eq", "https://example.cypress.io/commands/location"); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/misc.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/misc.spec.js index 7222bf4bd1..c0f767cdf7 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/misc.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/misc.spec.js @@ -1,25 +1,25 @@ /// -context('Misc', () => { +context("Misc", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/misc') - }) + cy.visit("https://example.cypress.io/commands/misc"); + }); - it('.end() - end the command chain', () => { + it(".end() - end the command chain", () => { // https://on.cypress.io/end // cy.end is useful when you want to end a chain of commands // and force Cypress to re-query from the root element - cy.get('.misc-table').within(() => { + cy.get(".misc-table").within(() => { // ends the current chain and yields null - cy.contains('Cheryl').click().end() + cy.contains("Cheryl").click().end(); // queries the entire table again - cy.contains('Charles').click() - }) - }) + cy.contains("Charles").click(); + }); + }); - it('cy.exec() - execute a system command', () => { + it("cy.exec() - execute a system command", () => { // execute a system command. // so you can take actions necessary for // your test outside the scope of Cypress. @@ -28,77 +28,71 @@ context('Misc', () => { // we can use Cypress.platform string to // select appropriate command // https://on.cypress/io/platform - cy.log(`Platform ${Cypress.platform} architecture ${Cypress.arch}`) + cy.log(`Platform ${Cypress.platform} architecture ${Cypress.arch}`); // on CircleCI Windows build machines we have a failure to run bash shell // https://github.com/cypress-io/cypress/issues/5169 // so skip some of the tests by passing flag "--env circle=true" - const isCircleOnWindows = Cypress.platform === 'win32' && Cypress.env('circle') + const isCircleOnWindows = Cypress.platform === "win32" && Cypress.env("circle"); if (isCircleOnWindows) { - cy.log('Skipping test on CircleCI') + cy.log("Skipping test on CircleCI"); - return + return; } // cy.exec problem on Shippable CI // https://github.com/cypress-io/cypress/issues/6718 - const isShippable = Cypress.platform === 'linux' && Cypress.env('shippable') + const isShippable = Cypress.platform === "linux" && Cypress.env("shippable"); if (isShippable) { - cy.log('Skipping test on ShippableCI') + cy.log("Skipping test on ShippableCI"); - return + return; } - cy.exec('echo Jane Lane') - .its('stdout').should('contain', 'Jane Lane') + cy.exec("echo Jane Lane").its("stdout").should("contain", "Jane Lane"); - if (Cypress.platform === 'win32') { - cy.exec('print cypress.json') - .its('stderr').should('be.empty') + if (Cypress.platform === "win32") { + cy.exec("print cypress.json").its("stderr").should("be.empty"); } else { - cy.exec('cat cypress.json') - .its('stderr').should('be.empty') + cy.exec("cat cypress.json").its("stderr").should("be.empty"); - cy.exec('pwd') - .its('code').should('eq', 0) + cy.exec("pwd").its("code").should("eq", 0); } - }) + }); - it('cy.focused() - get the DOM element that has focus', () => { + it("cy.focused() - get the DOM element that has focus", () => { // https://on.cypress.io/focused - cy.get('.misc-form').find('#name').click() - cy.focused().should('have.id', 'name') + cy.get(".misc-form").find("#name").click(); + cy.focused().should("have.id", "name"); - cy.get('.misc-form').find('#description').click() - cy.focused().should('have.id', 'description') - }) + cy.get(".misc-form").find("#description").click(); + cy.focused().should("have.id", "description"); + }); - context('Cypress.Screenshot', function () { - it('cy.screenshot() - take a screenshot', () => { + context("Cypress.Screenshot", function () { + it("cy.screenshot() - take a screenshot", () => { // https://on.cypress.io/screenshot - cy.screenshot('my-image') - }) + cy.screenshot("my-image"); + }); - it('Cypress.Screenshot.defaults() - change default config of screenshots', function () { + it("Cypress.Screenshot.defaults() - change default config of screenshots", function () { Cypress.Screenshot.defaults({ - blackout: ['.foo'], - capture: 'viewport', + blackout: [".foo"], + capture: "viewport", clip: { x: 0, y: 0, width: 200, height: 200 }, scale: false, disableTimersAndAnimations: true, screenshotOnRunFailure: true, - onBeforeScreenshot () { }, - onAfterScreenshot () { }, - }) - }) - }) + onBeforeScreenshot() {}, + onAfterScreenshot() {}, + }); + }); + }); - it('cy.wrap() - wrap an object', () => { + it("cy.wrap() - wrap an object", () => { // https://on.cypress.io/wrap - cy.wrap({ foo: 'bar' }) - .should('have.property', 'foo') - .and('include', 'bar') - }) -}) + cy.wrap({ foo: "bar" }).should("have.property", "foo").and("include", "bar"); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/navigation.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/navigation.spec.js index b85a46890c..2bdae55484 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/navigation.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/navigation.spec.js @@ -1,56 +1,56 @@ /// -context('Navigation', () => { +context("Navigation", () => { beforeEach(() => { - cy.visit('https://example.cypress.io') - cy.get('.navbar-nav').contains('Commands').click() - cy.get('.dropdown-menu').contains('Navigation').click() - }) + cy.visit("https://example.cypress.io"); + cy.get(".navbar-nav").contains("Commands").click(); + cy.get(".dropdown-menu").contains("Navigation").click(); + }); - it('cy.go() - go back or forward in the browser\'s history', () => { + it("cy.go() - go back or forward in the browser's history", () => { // https://on.cypress.io/go - cy.location('pathname').should('include', 'navigation') + cy.location("pathname").should("include", "navigation"); - cy.go('back') - cy.location('pathname').should('not.include', 'navigation') + cy.go("back"); + cy.location("pathname").should("not.include", "navigation"); - cy.go('forward') - cy.location('pathname').should('include', 'navigation') + cy.go("forward"); + cy.location("pathname").should("include", "navigation"); // clicking back - cy.go(-1) - cy.location('pathname').should('not.include', 'navigation') + cy.go(-1); + cy.location("pathname").should("not.include", "navigation"); // clicking forward - cy.go(1) - cy.location('pathname').should('include', 'navigation') - }) + cy.go(1); + cy.location("pathname").should("include", "navigation"); + }); - it('cy.reload() - reload the page', () => { + it("cy.reload() - reload the page", () => { // https://on.cypress.io/reload - cy.reload() + cy.reload(); // reload the page without using the cache - cy.reload(true) - }) + cy.reload(true); + }); - it('cy.visit() - visit a remote url', () => { + it("cy.visit() - visit a remote url", () => { // https://on.cypress.io/visit // Visit any sub-domain of your current domain // Pass options to the visit - cy.visit('https://example.cypress.io/commands/navigation', { + cy.visit("https://example.cypress.io/commands/navigation", { timeout: 50000, // increase total time for the visit to resolve - onBeforeLoad (contentWindow) { + onBeforeLoad(contentWindow) { // contentWindow is the remote page's window object - expect(typeof contentWindow === 'object').to.be.true + expect(typeof contentWindow === "object").to.be.true; }, - onLoad (contentWindow) { + onLoad(contentWindow) { // contentWindow is the remote page's window object - expect(typeof contentWindow === 'object').to.be.true + expect(typeof contentWindow === "object").to.be.true; }, - }) - }) -}) + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/network_requests.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/network_requests.spec.js index 11213a0e85..7826eeb495 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/network_requests.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/network_requests.spec.js @@ -1,96 +1,94 @@ /// -context('Network Requests', () => { +context("Network Requests", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/network-requests') - }) + cy.visit("https://example.cypress.io/commands/network-requests"); + }); // Manage HTTP requests in your app - it('cy.request() - make an XHR request', () => { + it("cy.request() - make an XHR request", () => { // https://on.cypress.io/request - cy.request('https://jsonplaceholder.cypress.io/comments') - .should((response) => { - expect(response.status).to.eq(200) - // the server sometimes gets an extra comment posted from another machine - // which gets returned as 1 extra object - expect(response.body).to.have.property('length').and.be.oneOf([500, 501]) - expect(response).to.have.property('headers') - expect(response).to.have.property('duration') - }) - }) - - it('cy.request() - verify response using BDD syntax', () => { - cy.request('https://jsonplaceholder.cypress.io/comments') - .then((response) => { + cy.request("https://jsonplaceholder.cypress.io/comments").should((response) => { + expect(response.status).to.eq(200); + // the server sometimes gets an extra comment posted from another machine + // which gets returned as 1 extra object + expect(response.body).to.have.property("length").and.be.oneOf([500, 501]); + expect(response).to.have.property("headers"); + expect(response).to.have.property("duration"); + }); + }); + + it("cy.request() - verify response using BDD syntax", () => { + cy.request("https://jsonplaceholder.cypress.io/comments").then((response) => { // https://on.cypress.io/assertions - expect(response).property('status').to.equal(200) - expect(response).property('body').to.have.property('length').and.be.oneOf([500, 501]) - expect(response).to.include.keys('headers', 'duration') - }) - }) + expect(response).property("status").to.equal(200); + expect(response).property("body").to.have.property("length").and.be.oneOf([500, 501]); + expect(response).to.include.keys("headers", "duration"); + }); + }); - it('cy.request() with query parameters', () => { + it("cy.request() with query parameters", () => { // will execute request // https://jsonplaceholder.cypress.io/comments?postId=1&id=3 cy.request({ - url: 'https://jsonplaceholder.cypress.io/comments', + url: "https://jsonplaceholder.cypress.io/comments", qs: { postId: 1, id: 3, }, }) - .its('body') - .should('be.an', 'array') - .and('have.length', 1) - .its('0') // yields first element of the array - .should('contain', { - postId: 1, - id: 3, - }) - }) + .its("body") + .should("be.an", "array") + .and("have.length", 1) + .its("0") // yields first element of the array + .should("contain", { + postId: 1, + id: 3, + }); + }); - it('cy.request() - pass result to the second request', () => { + it("cy.request() - pass result to the second request", () => { // first, let's find out the userId of the first user we have - cy.request('https://jsonplaceholder.cypress.io/users?_limit=1') - .its('body') // yields the response object - .its('0') // yields the first element of the returned list + cy.request("https://jsonplaceholder.cypress.io/users?_limit=1") + .its("body") // yields the response object + .its("0") // yields the first element of the returned list // the above two commands its('body').its('0') // can be written as its('body.0') // if you do not care about TypeScript checks .then((user) => { - expect(user).property('id').to.be.a('number') + expect(user).property("id").to.be.a("number"); // make a new post on behalf of the user - cy.request('POST', 'https://jsonplaceholder.cypress.io/posts', { + cy.request("POST", "https://jsonplaceholder.cypress.io/posts", { userId: user.id, - title: 'Cypress Test Runner', - body: 'Fast, easy and reliable testing for anything that runs in a browser.', - }) + title: "Cypress Test Runner", + body: "Fast, easy and reliable testing for anything that runs in a browser.", + }); }) // note that the value here is the returned value of the 2nd request // which is the new post object .then((response) => { - expect(response).property('status').to.equal(201) // new entity created - expect(response).property('body').to.contain({ - title: 'Cypress Test Runner', - }) + expect(response).property("status").to.equal(201); // new entity created + expect(response).property("body").to.contain({ + title: "Cypress Test Runner", + }); // we don't know the exact post id - only that it will be > 100 // since JSONPlaceholder has built-in 100 posts - expect(response.body).property('id').to.be.a('number') - .and.to.be.gt(100) + expect(response.body).property("id").to.be.a("number").and.to.be.gt(100); // we don't know the user id here - since it was in above closure // so in this test just confirm that the property is there - expect(response.body).property('userId').to.be.a('number') - }) - }) + expect(response.body).property("userId").to.be.a("number"); + }); + }); - it('cy.request() - save response in the shared test context', () => { + it("cy.request() - save response in the shared test context", () => { // https://on.cypress.io/variables-and-aliases - cy.request('https://jsonplaceholder.cypress.io/users?_limit=1') - .its('body').its('0') // yields the first element of the returned list - .as('user') // saves the object in the test context + cy.request("https://jsonplaceholder.cypress.io/users?_limit=1") + .its("body") + .its("0") // yields the first element of the returned list + .as("user") // saves the object in the test context .then(function () { // NOTE 👀 // By the time this callback runs the "as('user')" command @@ -98,66 +96,70 @@ context('Network Requests', () => { // To access the test context we need to use // the "function () { ... }" callback form, // otherwise "this" points at a wrong or undefined object! - cy.request('POST', 'https://jsonplaceholder.cypress.io/posts', { + cy.request("POST", "https://jsonplaceholder.cypress.io/posts", { userId: this.user.id, - title: 'Cypress Test Runner', - body: 'Fast, easy and reliable testing for anything that runs in a browser.', + title: "Cypress Test Runner", + body: "Fast, easy and reliable testing for anything that runs in a browser.", }) - .its('body').as('post') // save the new post from the response + .its("body") + .as("post"); // save the new post from the response }) .then(function () { // When this callback runs, both "cy.request" API commands have finished // and the test context has "user" and "post" objects set. // Let's verify them. - expect(this.post, 'post has the right user id').property('userId').to.equal(this.user.id) - }) - }) + expect(this.post, "post has the right user id").property("userId").to.equal(this.user.id); + }); + }); - it('cy.intercept() - route responses to matching requests', () => { + it("cy.intercept() - route responses to matching requests", () => { // https://on.cypress.io/intercept - let message = 'whoa, this comment does not exist' + let message = "whoa, this comment does not exist"; // Listen to GET to comments/1 - cy.intercept('GET', '**/comments/*').as('getComment') + cy.intercept("GET", "**/comments/*").as("getComment"); // we have code that gets a comment when // the button is clicked in scripts.js - cy.get('.network-btn').click() + cy.get(".network-btn").click(); // https://on.cypress.io/wait - cy.wait('@getComment').its('response.statusCode').should('be.oneOf', [200, 304]) + cy.wait("@getComment").its("response.statusCode").should("be.oneOf", [200, 304]); // Listen to POST to comments - cy.intercept('POST', '**/comments').as('postComment') + cy.intercept("POST", "**/comments").as("postComment"); // we have code that posts a comment when // the button is clicked in scripts.js - cy.get('.network-post').click() - cy.wait('@postComment').should(({ request, response }) => { - expect(request.body).to.include('email') - expect(request.headers).to.have.property('content-type') - expect(response && response.body).to.have.property('name', 'Using POST in cy.intercept()') - }) + cy.get(".network-post").click(); + cy.wait("@postComment").should(({ request, response }) => { + expect(request.body).to.include("email"); + expect(request.headers).to.have.property("content-type"); + expect(response && response.body).to.have.property("name", "Using POST in cy.intercept()"); + }); // Stub a response to PUT comments/ **** - cy.intercept({ - method: 'PUT', - url: '**/comments/*', - }, { - statusCode: 404, - body: { error: message }, - headers: { 'access-control-allow-origin': '*' }, - delayMs: 500, - }).as('putComment') + cy.intercept( + { + method: "PUT", + url: "**/comments/*", + }, + { + statusCode: 404, + body: { error: message }, + headers: { "access-control-allow-origin": "*" }, + delayMs: 500, + } + ).as("putComment"); // we have code that puts a comment when // the button is clicked in scripts.js - cy.get('.network-put').click() + cy.get(".network-put").click(); - cy.wait('@putComment') + cy.wait("@putComment"); // our 404 statusCode logic in scripts.js executed - cy.get('.network-put-comment').should('contain', message) - }) -}) + cy.get(".network-put-comment").should("contain", message); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/querying.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/querying.spec.js index 00970480f6..4b47de1eda 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/querying.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/querying.spec.js @@ -1,114 +1,102 @@ /// -context('Querying', () => { +context("Querying", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/querying') - }) + cy.visit("https://example.cypress.io/commands/querying"); + }); // The most commonly used query is 'cy.get()', you can // think of this like the '$' in jQuery - it('cy.get() - query DOM elements', () => { + it("cy.get() - query DOM elements", () => { // https://on.cypress.io/get - cy.get('#query-btn').should('contain', 'Button') + cy.get("#query-btn").should("contain", "Button"); - cy.get('.query-btn').should('contain', 'Button') + cy.get(".query-btn").should("contain", "Button"); - cy.get('#querying .well>button:first').should('contain', 'Button') + cy.get("#querying .well>button:first").should("contain", "Button"); // ↲ // Use CSS selectors just like jQuery - cy.get('[data-test-id="test-example"]').should('have.class', 'example') + cy.get('[data-test-id="test-example"]').should("have.class", "example"); // 'cy.get()' yields jQuery object, you can get its attribute // by invoking `.attr()` method cy.get('[data-test-id="test-example"]') - .invoke('attr', 'data-test-id') - .should('equal', 'test-example') + .invoke("attr", "data-test-id") + .should("equal", "test-example"); // or you can get element's CSS property - cy.get('[data-test-id="test-example"]') - .invoke('css', 'position') - .should('equal', 'static') + cy.get('[data-test-id="test-example"]').invoke("css", "position").should("equal", "static"); // or use assertions directly during 'cy.get()' // https://on.cypress.io/assertions cy.get('[data-test-id="test-example"]') - .should('have.attr', 'data-test-id', 'test-example') - .and('have.css', 'position', 'static') - }) + .should("have.attr", "data-test-id", "test-example") + .and("have.css", "position", "static"); + }); - it('cy.contains() - query DOM elements with matching content', () => { + it("cy.contains() - query DOM elements with matching content", () => { // https://on.cypress.io/contains - cy.get('.query-list') - .contains('bananas') - .should('have.class', 'third') + cy.get(".query-list").contains("bananas").should("have.class", "third"); // we can pass a regexp to `.contains()` - cy.get('.query-list') - .contains(/^b\w+/) - .should('have.class', 'third') + cy.get(".query-list").contains(/^b\w+/).should("have.class", "third"); - cy.get('.query-list') - .contains('apples') - .should('have.class', 'first') + cy.get(".query-list").contains("apples").should("have.class", "first"); // passing a selector to contains will // yield the selector containing the text - cy.get('#querying') - .contains('ul', 'oranges') - .should('have.class', 'query-list') + cy.get("#querying").contains("ul", "oranges").should("have.class", "query-list"); - cy.get('.query-button') - .contains('Save Form') - .should('have.class', 'btn') - }) + cy.get(".query-button").contains("Save Form").should("have.class", "btn"); + }); - it('.within() - query DOM elements within a specific element', () => { + it(".within() - query DOM elements within a specific element", () => { // https://on.cypress.io/within - cy.get('.query-form').within(() => { - cy.get('input:first').should('have.attr', 'placeholder', 'Email') - cy.get('input:last').should('have.attr', 'placeholder', 'Password') - }) - }) + cy.get(".query-form").within(() => { + cy.get("input:first").should("have.attr", "placeholder", "Email"); + cy.get("input:last").should("have.attr", "placeholder", "Password"); + }); + }); - it('cy.root() - query the root DOM element', () => { + it("cy.root() - query the root DOM element", () => { // https://on.cypress.io/root // By default, root is the document - cy.root().should('match', 'html') + cy.root().should("match", "html"); - cy.get('.query-ul').within(() => { + cy.get(".query-ul").within(() => { // In this within, the root is now the ul DOM element - cy.root().should('have.class', 'query-ul') - }) - }) + cy.root().should("have.class", "query-ul"); + }); + }); - it('best practices - selecting elements', () => { + it("best practices - selecting elements", () => { // https://on.cypress.io/best-practices#Selecting-Elements - cy.get('[data-cy=best-practices-selecting-elements]').within(() => { + cy.get("[data-cy=best-practices-selecting-elements]").within(() => { // Worst - too generic, no context - cy.get('button').click() + cy.get("button").click(); // Bad. Coupled to styling. Highly subject to change. - cy.get('.btn.btn-large').click() + cy.get(".btn.btn-large").click(); // Average. Coupled to the `name` attribute which has HTML semantics. - cy.get('[name=submission]').click() + cy.get("[name=submission]").click(); // Better. But still coupled to styling or JS event listeners. - cy.get('#main').click() + cy.get("#main").click(); // Slightly better. Uses an ID but also ensures the element // has an ARIA role attribute - cy.get('#main[role=button]').click() + cy.get("#main[role=button]").click(); // Much better. But still coupled to text content that may change. - cy.contains('Submit').click() + cy.contains("Submit").click(); // Best. Insulated from all changes. - cy.get('[data-cy=submit]').click() - }) - }) -}) + cy.get("[data-cy=submit]").click(); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/spies_stubs_clocks.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/spies_stubs_clocks.spec.js index 18b643ecd5..c89df34b83 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/spies_stubs_clocks.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/spies_stubs_clocks.spec.js @@ -2,129 +2,128 @@ // remove no check once Cypress.sinon is typed // https://github.com/cypress-io/cypress/issues/6720 -context('Spies, Stubs, and Clock', () => { - it('cy.spy() - wrap a method in a spy', () => { +context("Spies, Stubs, and Clock", () => { + it("cy.spy() - wrap a method in a spy", () => { // https://on.cypress.io/spy - cy.visit('https://example.cypress.io/commands/spies-stubs-clocks') + cy.visit("https://example.cypress.io/commands/spies-stubs-clocks"); const obj = { - foo () {}, - } + foo() {}, + }; - const spy = cy.spy(obj, 'foo').as('anyArgs') + const spy = cy.spy(obj, "foo").as("anyArgs"); - obj.foo() + obj.foo(); - expect(spy).to.be.called - }) + expect(spy).to.be.called; + }); - it('cy.spy() retries until assertions pass', () => { - cy.visit('https://example.cypress.io/commands/spies-stubs-clocks') + it("cy.spy() retries until assertions pass", () => { + cy.visit("https://example.cypress.io/commands/spies-stubs-clocks"); const obj = { /** * Prints the argument passed * @param x {any} - */ - foo (x) { - console.log('obj.foo called with', x) + */ + foo(x) { + console.log("obj.foo called with", x); }, - } + }; - cy.spy(obj, 'foo').as('foo') + cy.spy(obj, "foo").as("foo"); setTimeout(() => { - obj.foo('first') - }, 500) + obj.foo("first"); + }, 500); setTimeout(() => { - obj.foo('second') - }, 2500) + obj.foo("second"); + }, 2500); - cy.get('@foo').should('have.been.calledTwice') - }) + cy.get("@foo").should("have.been.calledTwice"); + }); - it('cy.stub() - create a stub and/or replace a function with stub', () => { + it("cy.stub() - create a stub and/or replace a function with stub", () => { // https://on.cypress.io/stub - cy.visit('https://example.cypress.io/commands/spies-stubs-clocks') + cy.visit("https://example.cypress.io/commands/spies-stubs-clocks"); const obj = { /** * prints both arguments to the console * @param a {string} * @param b {string} - */ - foo (a, b) { - console.log('a', a, 'b', b) + */ + foo(a, b) { + console.log("a", a, "b", b); }, - } + }; - const stub = cy.stub(obj, 'foo').as('foo') + const stub = cy.stub(obj, "foo").as("foo"); - obj.foo('foo', 'bar') + obj.foo("foo", "bar"); - expect(stub).to.be.called - }) + expect(stub).to.be.called; + }); - it('cy.clock() - control time in the browser', () => { + it("cy.clock() - control time in the browser", () => { // https://on.cypress.io/clock // create the date in UTC so its always the same // no matter what local timezone the browser is running in - const now = new Date(Date.UTC(2017, 2, 14)).getTime() + const now = new Date(Date.UTC(2017, 2, 14)).getTime(); - cy.clock(now) - cy.visit('https://example.cypress.io/commands/spies-stubs-clocks') - cy.get('#clock-div').click() - .should('have.text', '1489449600') - }) + cy.clock(now); + cy.visit("https://example.cypress.io/commands/spies-stubs-clocks"); + cy.get("#clock-div").click().should("have.text", "1489449600"); + }); - it('cy.tick() - move time in the browser', () => { + it("cy.tick() - move time in the browser", () => { // https://on.cypress.io/tick // create the date in UTC so its always the same // no matter what local timezone the browser is running in - const now = new Date(Date.UTC(2017, 2, 14)).getTime() + const now = new Date(Date.UTC(2017, 2, 14)).getTime(); - cy.clock(now) - cy.visit('https://example.cypress.io/commands/spies-stubs-clocks') - cy.get('#tick-div').click() - .should('have.text', '1489449600') + cy.clock(now); + cy.visit("https://example.cypress.io/commands/spies-stubs-clocks"); + cy.get("#tick-div").click().should("have.text", "1489449600"); - cy.tick(10000) // 10 seconds passed - cy.get('#tick-div').click() - .should('have.text', '1489449610') - }) + cy.tick(10000); // 10 seconds passed + cy.get("#tick-div").click().should("have.text", "1489449610"); + }); - it('cy.stub() matches depending on arguments', () => { + it("cy.stub() matches depending on arguments", () => { // see all possible matchers at // https://sinonjs.org/releases/latest/matchers/ const greeter = { /** * Greets a person * @param {string} name - */ - greet (name) { - return `Hello, ${name}!` + */ + greet(name) { + return `Hello, ${name}!`; }, - } + }; - cy.stub(greeter, 'greet') + cy.stub(greeter, "greet") .callThrough() // if you want non-matched calls to call the real method - .withArgs(Cypress.sinon.match.string).returns('Hi') - .withArgs(Cypress.sinon.match.number).throws(new Error('Invalid name')) + .withArgs(Cypress.sinon.match.string) + .returns("Hi") + .withArgs(Cypress.sinon.match.number) + .throws(new Error("Invalid name")); - expect(greeter.greet('World')).to.equal('Hi') + expect(greeter.greet("World")).to.equal("Hi"); // @ts-ignore - expect(() => greeter.greet(42)).to.throw('Invalid name') - expect(greeter.greet).to.have.been.calledTwice + expect(() => greeter.greet(42)).to.throw("Invalid name"); + expect(greeter.greet).to.have.been.calledTwice; // non-matched calls goes the actual method // @ts-ignore - expect(greeter.greet()).to.equal('Hello, undefined!') - }) + expect(greeter.greet()).to.equal("Hello, undefined!"); + }); - it('matches call arguments using Sinon matchers', () => { + it("matches call arguments using Sinon matchers", () => { // see all possible matchers at // https://sinonjs.org/releases/latest/matchers/ const calculator = { @@ -132,74 +131,77 @@ context('Spies, Stubs, and Clock', () => { * returns the sum of two arguments * @param a {number} * @param b {number} - */ - add (a, b) { - return a + b + */ + add(a, b) { + return a + b; }, - } + }; - const spy = cy.spy(calculator, 'add').as('add') + const spy = cy.spy(calculator, "add").as("add"); - expect(calculator.add(2, 3)).to.equal(5) + expect(calculator.add(2, 3)).to.equal(5); // if we want to assert the exact values used during the call - expect(spy).to.be.calledWith(2, 3) + expect(spy).to.be.calledWith(2, 3); // let's confirm "add" method was called with two numbers - expect(spy).to.be.calledWith(Cypress.sinon.match.number, Cypress.sinon.match.number) + expect(spy).to.be.calledWith(Cypress.sinon.match.number, Cypress.sinon.match.number); // alternatively, provide the value to match - expect(spy).to.be.calledWith(Cypress.sinon.match(2), Cypress.sinon.match(3)) + expect(spy).to.be.calledWith(Cypress.sinon.match(2), Cypress.sinon.match(3)); // match any value - expect(spy).to.be.calledWith(Cypress.sinon.match.any, 3) + expect(spy).to.be.calledWith(Cypress.sinon.match.any, 3); // match any value from a list - expect(spy).to.be.calledWith(Cypress.sinon.match.in([1, 2, 3]), 3) + expect(spy).to.be.calledWith(Cypress.sinon.match.in([1, 2, 3]), 3); /** * Returns true if the given number is event * @param {number} x */ - const isEven = (x) => x % 2 === 0 + const isEven = (x) => x % 2 === 0; // expect the value to pass a custom predicate function // the second argument to "sinon.match(predicate, message)" is // shown if the predicate does not pass and assertion fails - expect(spy).to.be.calledWith(Cypress.sinon.match(isEven, 'isEven'), 3) + expect(spy).to.be.calledWith(Cypress.sinon.match(isEven, "isEven"), 3); /** * Returns a function that checks if a given number is larger than the limit * @param {number} limit * @returns {(x: number) => boolean} */ - const isGreaterThan = (limit) => (x) => x > limit + const isGreaterThan = (limit) => (x) => x > limit; /** * Returns a function that checks if a given number is less than the limit * @param {number} limit * @returns {(x: number) => boolean} */ - const isLessThan = (limit) => (x) => x < limit + const isLessThan = (limit) => (x) => x < limit; // you can combine several matchers using "and", "or" expect(spy).to.be.calledWith( Cypress.sinon.match.number, - Cypress.sinon.match(isGreaterThan(2), '> 2').and(Cypress.sinon.match(isLessThan(4), '< 4')), - ) + Cypress.sinon.match(isGreaterThan(2), "> 2").and(Cypress.sinon.match(isLessThan(4), "< 4")) + ); expect(spy).to.be.calledWith( Cypress.sinon.match.number, - Cypress.sinon.match(isGreaterThan(200), '> 200').or(Cypress.sinon.match(3)), - ) + Cypress.sinon.match(isGreaterThan(200), "> 200").or(Cypress.sinon.match(3)) + ); // matchers can be used from BDD assertions - cy.get('@add').should('have.been.calledWith', - Cypress.sinon.match.number, Cypress.sinon.match(3)) + cy.get("@add").should( + "have.been.calledWith", + Cypress.sinon.match.number, + Cypress.sinon.match(3) + ); // you can alias matchers for shorter test code - const { match: M } = Cypress.sinon + const { match: M } = Cypress.sinon; - cy.get('@add').should('have.been.calledWith', M.number, M(3)) - }) -}) + cy.get("@add").should("have.been.calledWith", M.number, M(3)); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/traversal.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/traversal.spec.js index 0a3b9d3306..e6b56fde1f 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/traversal.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/traversal.spec.js @@ -1,121 +1,97 @@ /// -context('Traversal', () => { +context("Traversal", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/traversal') - }) + cy.visit("https://example.cypress.io/commands/traversal"); + }); - it('.children() - get child DOM elements', () => { + it(".children() - get child DOM elements", () => { // https://on.cypress.io/children - cy.get('.traversal-breadcrumb') - .children('.active') - .should('contain', 'Data') - }) + cy.get(".traversal-breadcrumb").children(".active").should("contain", "Data"); + }); - it('.closest() - get closest ancestor DOM element', () => { + it(".closest() - get closest ancestor DOM element", () => { // https://on.cypress.io/closest - cy.get('.traversal-badge') - .closest('ul') - .should('have.class', 'list-group') - }) + cy.get(".traversal-badge").closest("ul").should("have.class", "list-group"); + }); - it('.eq() - get a DOM element at a specific index', () => { + it(".eq() - get a DOM element at a specific index", () => { // https://on.cypress.io/eq - cy.get('.traversal-list>li') - .eq(1).should('contain', 'siamese') - }) + cy.get(".traversal-list>li").eq(1).should("contain", "siamese"); + }); - it('.filter() - get DOM elements that match the selector', () => { + it(".filter() - get DOM elements that match the selector", () => { // https://on.cypress.io/filter - cy.get('.traversal-nav>li') - .filter('.active').should('contain', 'About') - }) + cy.get(".traversal-nav>li").filter(".active").should("contain", "About"); + }); - it('.find() - get descendant DOM elements of the selector', () => { + it(".find() - get descendant DOM elements of the selector", () => { // https://on.cypress.io/find - cy.get('.traversal-pagination') - .find('li').find('a') - .should('have.length', 7) - }) + cy.get(".traversal-pagination").find("li").find("a").should("have.length", 7); + }); - it('.first() - get first DOM element', () => { + it(".first() - get first DOM element", () => { // https://on.cypress.io/first - cy.get('.traversal-table td') - .first().should('contain', '1') - }) + cy.get(".traversal-table td").first().should("contain", "1"); + }); - it('.last() - get last DOM element', () => { + it(".last() - get last DOM element", () => { // https://on.cypress.io/last - cy.get('.traversal-buttons .btn') - .last().should('contain', 'Submit') - }) + cy.get(".traversal-buttons .btn").last().should("contain", "Submit"); + }); - it('.next() - get next sibling DOM element', () => { + it(".next() - get next sibling DOM element", () => { // https://on.cypress.io/next - cy.get('.traversal-ul') - .contains('apples').next().should('contain', 'oranges') - }) + cy.get(".traversal-ul").contains("apples").next().should("contain", "oranges"); + }); - it('.nextAll() - get all next sibling DOM elements', () => { + it(".nextAll() - get all next sibling DOM elements", () => { // https://on.cypress.io/nextall - cy.get('.traversal-next-all') - .contains('oranges') - .nextAll().should('have.length', 3) - }) + cy.get(".traversal-next-all").contains("oranges").nextAll().should("have.length", 3); + }); - it('.nextUntil() - get next sibling DOM elements until next el', () => { + it(".nextUntil() - get next sibling DOM elements until next el", () => { // https://on.cypress.io/nextuntil - cy.get('#veggies') - .nextUntil('#nuts').should('have.length', 3) - }) + cy.get("#veggies").nextUntil("#nuts").should("have.length", 3); + }); - it('.not() - remove DOM elements from set of DOM elements', () => { + it(".not() - remove DOM elements from set of DOM elements", () => { // https://on.cypress.io/not - cy.get('.traversal-disabled .btn') - .not('[disabled]').should('not.contain', 'Disabled') - }) + cy.get(".traversal-disabled .btn").not("[disabled]").should("not.contain", "Disabled"); + }); - it('.parent() - get parent DOM element from DOM elements', () => { + it(".parent() - get parent DOM element from DOM elements", () => { // https://on.cypress.io/parent - cy.get('.traversal-mark') - .parent().should('contain', 'Morbi leo risus') - }) + cy.get(".traversal-mark").parent().should("contain", "Morbi leo risus"); + }); - it('.parents() - get parent DOM elements from DOM elements', () => { + it(".parents() - get parent DOM elements from DOM elements", () => { // https://on.cypress.io/parents - cy.get('.traversal-cite') - .parents().should('match', 'blockquote') - }) + cy.get(".traversal-cite").parents().should("match", "blockquote"); + }); - it('.parentsUntil() - get parent DOM elements from DOM elements until el', () => { + it(".parentsUntil() - get parent DOM elements from DOM elements until el", () => { // https://on.cypress.io/parentsuntil - cy.get('.clothes-nav') - .find('.active') - .parentsUntil('.clothes-nav') - .should('have.length', 2) - }) + cy.get(".clothes-nav").find(".active").parentsUntil(".clothes-nav").should("have.length", 2); + }); - it('.prev() - get previous sibling DOM element', () => { + it(".prev() - get previous sibling DOM element", () => { // https://on.cypress.io/prev - cy.get('.birds').find('.active') - .prev().should('contain', 'Lorikeets') - }) + cy.get(".birds").find(".active").prev().should("contain", "Lorikeets"); + }); - it('.prevAll() - get all previous sibling DOM elements', () => { + it(".prevAll() - get all previous sibling DOM elements", () => { // https://on.cypress.io/prevall - cy.get('.fruits-list').find('.third') - .prevAll().should('have.length', 2) - }) + cy.get(".fruits-list").find(".third").prevAll().should("have.length", 2); + }); - it('.prevUntil() - get all previous sibling DOM elements until el', () => { + it(".prevUntil() - get all previous sibling DOM elements until el", () => { // https://on.cypress.io/prevuntil - cy.get('.foods-list').find('#nuts') - .prevUntil('#veggies').should('have.length', 3) - }) + cy.get(".foods-list").find("#nuts").prevUntil("#veggies").should("have.length", 3); + }); - it('.siblings() - get all sibling DOM elements', () => { + it(".siblings() - get all sibling DOM elements", () => { // https://on.cypress.io/siblings - cy.get('.traversal-pills .active') - .siblings().should('have.length', 2) - }) -}) + cy.get(".traversal-pills .active").siblings().should("have.length", 2); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/utilities.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/utilities.spec.js index 24e61a6a7c..bdeb21859a 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/utilities.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/utilities.spec.js @@ -1,100 +1,98 @@ /// -context('Utilities', () => { +context("Utilities", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/utilities') - }) + cy.visit("https://example.cypress.io/utilities"); + }); - it('Cypress._ - call a lodash method', () => { + it("Cypress._ - call a lodash method", () => { // https://on.cypress.io/_ - cy.request('https://jsonplaceholder.cypress.io/users') - .then((response) => { - let ids = Cypress._.chain(response.body).map('id').take(3).value() + cy.request("https://jsonplaceholder.cypress.io/users").then((response) => { + let ids = Cypress._.chain(response.body).map("id").take(3).value(); - expect(ids).to.deep.eq([1, 2, 3]) - }) - }) + expect(ids).to.deep.eq([1, 2, 3]); + }); + }); - it('Cypress.$ - call a jQuery method', () => { + it("Cypress.$ - call a jQuery method", () => { // https://on.cypress.io/$ - let $li = Cypress.$('.utility-jquery li:first') + let $li = Cypress.$(".utility-jquery li:first"); - cy.wrap($li) - .should('not.have.class', 'active') - .click() - .should('have.class', 'active') - }) + cy.wrap($li).should("not.have.class", "active").click().should("have.class", "active"); + }); - it('Cypress.Blob - blob utilities and base64 string conversion', () => { + it("Cypress.Blob - blob utilities and base64 string conversion", () => { // https://on.cypress.io/blob - cy.get('.utility-blob').then(($div) => { + cy.get(".utility-blob").then(($div) => { // https://github.com/nolanlawson/blob-util#imgSrcToDataURL // get the dataUrl string for the javascript-logo - return Cypress.Blob.imgSrcToDataURL('https://example.cypress.io/assets/img/javascript-logo.png', undefined, 'anonymous') - .then((dataUrl) => { + return Cypress.Blob.imgSrcToDataURL( + "https://example.cypress.io/assets/img/javascript-logo.png", + undefined, + "anonymous" + ).then((dataUrl) => { // create an element and set its src to the dataUrl - let img = Cypress.$('', { src: dataUrl }) + let img = Cypress.$("", { src: dataUrl }); // need to explicitly return cy here since we are initially returning // the Cypress.Blob.imgSrcToDataURL promise to our test // append the image - $div.append(img) + $div.append(img); - cy.get('.utility-blob img').click() - .should('have.attr', 'src', dataUrl) - }) - }) - }) + cy.get(".utility-blob img").click().should("have.attr", "src", dataUrl); + }); + }); + }); - it('Cypress.minimatch - test out glob patterns against strings', () => { + it("Cypress.minimatch - test out glob patterns against strings", () => { // https://on.cypress.io/minimatch - let matching = Cypress.minimatch('/users/1/comments', '/users/*/comments', { + let matching = Cypress.minimatch("/users/1/comments", "/users/*/comments", { matchBase: true, - }) + }); - expect(matching, 'matching wildcard').to.be.true + expect(matching, "matching wildcard").to.be.true; - matching = Cypress.minimatch('/users/1/comments/2', '/users/*/comments', { + matching = Cypress.minimatch("/users/1/comments/2", "/users/*/comments", { matchBase: true, - }) + }); - expect(matching, 'comments').to.be.false + expect(matching, "comments").to.be.false; // ** matches against all downstream path segments - matching = Cypress.minimatch('/foo/bar/baz/123/quux?a=b&c=2', '/foo/**', { + matching = Cypress.minimatch("/foo/bar/baz/123/quux?a=b&c=2", "/foo/**", { matchBase: true, - }) + }); - expect(matching, 'comments').to.be.true + expect(matching, "comments").to.be.true; // whereas * matches only the next path segment - matching = Cypress.minimatch('/foo/bar/baz/123/quux?a=b&c=2', '/foo/*', { + matching = Cypress.minimatch("/foo/bar/baz/123/quux?a=b&c=2", "/foo/*", { matchBase: false, - }) + }); - expect(matching, 'comments').to.be.false - }) + expect(matching, "comments").to.be.false; + }); - it('Cypress.Promise - instantiate a bluebird promise', () => { + it("Cypress.Promise - instantiate a bluebird promise", () => { // https://on.cypress.io/promise - let waited = false + let waited = false; /** * @return Bluebird */ - function waitOneSecond () { + function waitOneSecond() { // return a promise that resolves after 1 second // @ts-ignore TS2351 (new Cypress.Promise) return new Cypress.Promise((resolve, reject) => { setTimeout(() => { // set waited to true - waited = true + waited = true; // resolve with 'foo' string - resolve('foo') - }, 1000) - }) + resolve("foo"); + }, 1000); + }); } cy.then(() => { @@ -102,9 +100,9 @@ context('Utilities', () => { // is awaited until it resolves // @ts-ignore TS7006 return waitOneSecond().then((str) => { - expect(str).to.eq('foo') - expect(waited).to.be.true - }) - }) - }) -}) + expect(str).to.eq("foo"); + expect(waited).to.be.true; + }); + }); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/viewport.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/viewport.spec.js index dbcd7eeddd..1d73b915dd 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/viewport.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/viewport.spec.js @@ -1,23 +1,23 @@ /// -context('Viewport', () => { +context("Viewport", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/viewport') - }) + cy.visit("https://example.cypress.io/commands/viewport"); + }); - it('cy.viewport() - set the viewport size and dimension', () => { + it("cy.viewport() - set the viewport size and dimension", () => { // https://on.cypress.io/viewport - cy.get('#navbar').should('be.visible') - cy.viewport(320, 480) + cy.get("#navbar").should("be.visible"); + cy.viewport(320, 480); // the navbar should have collapse since our screen is smaller - cy.get('#navbar').should('not.be.visible') - cy.get('.navbar-toggle').should('be.visible').click() - cy.get('.nav').find('a').should('be.visible') + cy.get("#navbar").should("not.be.visible"); + cy.get(".navbar-toggle").should("be.visible").click(); + cy.get(".nav").find("a").should("be.visible"); // lets see what our app looks like on a super large screen - cy.viewport(2999, 2999) + cy.viewport(2999, 2999); // cy.viewport() accepts a set of preset sizes // to easily set the screen to a device's width and height @@ -25,35 +25,35 @@ context('Viewport', () => { // We added a cy.wait() between each viewport change so you can see // the change otherwise it is a little too fast to see :) - cy.viewport('macbook-15') - cy.wait(200) - cy.viewport('macbook-13') - cy.wait(200) - cy.viewport('macbook-11') - cy.wait(200) - cy.viewport('ipad-2') - cy.wait(200) - cy.viewport('ipad-mini') - cy.wait(200) - cy.viewport('iphone-6+') - cy.wait(200) - cy.viewport('iphone-6') - cy.wait(200) - cy.viewport('iphone-5') - cy.wait(200) - cy.viewport('iphone-4') - cy.wait(200) - cy.viewport('iphone-3') - cy.wait(200) + cy.viewport("macbook-15"); + cy.wait(200); + cy.viewport("macbook-13"); + cy.wait(200); + cy.viewport("macbook-11"); + cy.wait(200); + cy.viewport("ipad-2"); + cy.wait(200); + cy.viewport("ipad-mini"); + cy.wait(200); + cy.viewport("iphone-6+"); + cy.wait(200); + cy.viewport("iphone-6"); + cy.wait(200); + cy.viewport("iphone-5"); + cy.wait(200); + cy.viewport("iphone-4"); + cy.wait(200); + cy.viewport("iphone-3"); + cy.wait(200); // cy.viewport() accepts an orientation for all presets // the default orientation is 'portrait' - cy.viewport('ipad-2', 'portrait') - cy.wait(200) - cy.viewport('iphone-4', 'landscape') - cy.wait(200) + cy.viewport("ipad-2", "portrait"); + cy.wait(200); + cy.viewport("iphone-4", "landscape"); + cy.wait(200); // The viewport will be reset back to the default dimensions // in between tests (the default can be set in cypress.json) - }) -}) + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/waiting.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/waiting.spec.js index c8f0d7c672..49915ae75f 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/waiting.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/waiting.spec.js @@ -1,31 +1,31 @@ /// -context('Waiting', () => { +context("Waiting", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/waiting') - }) + cy.visit("https://example.cypress.io/commands/waiting"); + }); // BE CAREFUL of adding unnecessary wait times. // https://on.cypress.io/best-practices#Unnecessary-Waiting // https://on.cypress.io/wait - it('cy.wait() - wait for a specific amount of time', () => { - cy.get('.wait-input1').type('Wait 1000ms after typing') - cy.wait(1000) - cy.get('.wait-input2').type('Wait 1000ms after typing') - cy.wait(1000) - cy.get('.wait-input3').type('Wait 1000ms after typing') - cy.wait(1000) - }) + it("cy.wait() - wait for a specific amount of time", () => { + cy.get(".wait-input1").type("Wait 1000ms after typing"); + cy.wait(1000); + cy.get(".wait-input2").type("Wait 1000ms after typing"); + cy.wait(1000); + cy.get(".wait-input3").type("Wait 1000ms after typing"); + cy.wait(1000); + }); - it('cy.wait() - wait for a specific route', () => { + it("cy.wait() - wait for a specific route", () => { // Listen to GET to comments/1 - cy.intercept('GET', '**/comments/*').as('getComment') + cy.intercept("GET", "**/comments/*").as("getComment"); // we have code that gets a comment when // the button is clicked in scripts.js - cy.get('.network-btn').click() + cy.get(".network-btn").click(); // wait for GET comments/1 - cy.wait('@getComment').its('response.statusCode').should('be.oneOf', [200, 304]) - }) -}) + cy.wait("@getComment").its("response.statusCode").should("be.oneOf", [200, 304]); + }); +}); diff --git a/packages/test-e2e/projects/example/integration/2-advanced-examples/window.spec.js b/packages/test-e2e/projects/example/integration/2-advanced-examples/window.spec.js index f94b64971d..9740ba049b 100644 --- a/packages/test-e2e/projects/example/integration/2-advanced-examples/window.spec.js +++ b/packages/test-e2e/projects/example/integration/2-advanced-examples/window.spec.js @@ -1,22 +1,22 @@ /// -context('Window', () => { +context("Window", () => { beforeEach(() => { - cy.visit('https://example.cypress.io/commands/window') - }) + cy.visit("https://example.cypress.io/commands/window"); + }); - it('cy.window() - get the global window object', () => { + it("cy.window() - get the global window object", () => { // https://on.cypress.io/window - cy.window().should('have.property', 'top') - }) + cy.window().should("have.property", "top"); + }); - it('cy.document() - get the document object', () => { + it("cy.document() - get the document object", () => { // https://on.cypress.io/document - cy.document().should('have.property', 'charset').and('eq', 'UTF-8') - }) + cy.document().should("have.property", "charset").and("eq", "UTF-8"); + }); - it('cy.title() - get the title', () => { + it("cy.title() - get the title", () => { // https://on.cypress.io/title - cy.title().should('include', 'Kitchen Sink') - }) -}) + cy.title().should("include", "Kitchen Sink"); + }); +}); diff --git a/packages/test-e2e/projects/example/plugins/index.js b/packages/test-e2e/projects/example/plugins/index.js index 59b2bab6e4..8229063adc 100644 --- a/packages/test-e2e/projects/example/plugins/index.js +++ b/packages/test-e2e/projects/example/plugins/index.js @@ -19,4 +19,4 @@ module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config -} +}; diff --git a/packages/test-e2e/projects/example/support/index.js b/packages/test-e2e/projects/example/support/index.js index d68db96df2..d076cec9fd 100644 --- a/packages/test-e2e/projects/example/support/index.js +++ b/packages/test-e2e/projects/example/support/index.js @@ -14,7 +14,7 @@ // *********************************************************** // Import commands.js using ES2015 syntax: -import './commands' +import "./commands"; // Alternatively you can use CommonJS syntax: // require('./commands') diff --git a/packages/test-e2e/projects/plh/plugins/index.js b/packages/test-e2e/projects/plh/plugins/index.js index 1e687512b1..dbf478591e 100644 --- a/packages/test-e2e/projects/plh/plugins/index.js +++ b/packages/test-e2e/projects/plh/plugins/index.js @@ -16,9 +16,7 @@ * @type {Cypress.PluginConfig} */ // eslint-disable-next-line no-unused-vars -const { - addMatchImageSnapshotPlugin, -} = require('cypress-image-snapshot/plugin'); +const { addMatchImageSnapshotPlugin } = require("cypress-image-snapshot/plugin"); module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits diff --git a/packages/test-e2e/test/input.xlsx b/packages/test-e2e/test/input.xlsx index 0c8a7411e2..90923e29f2 100644 Binary files a/packages/test-e2e/test/input.xlsx and b/packages/test-e2e/test/input.xlsx differ diff --git a/packages/test-unit/quokka-tests/evaluateJsExpression.quokka.ts b/packages/test-unit/quokka-tests/evaluateJsExpression.quokka.ts deleted file mode 100644 index 50c50438db..0000000000 --- a/packages/test-unit/quokka-tests/evaluateJsExpression.quokka.ts +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************************** - * Test Code - *******************************************************************************************/ - -function test() { - const inputArgs = { - expression: "this.local.app_day", - thisCtx: { local: { app_day: 5 } }, - globalFunctions: {}, - globalConstants: {}, - }; - const expectedOutput = 5; - const args: any[] = Object.values(inputArgs); - // @ts-ignore (ignore type error from args spread) - const result = evaluateJSExpression(...args); - console.log(result); - return result === expectedOutput ? "PASS" : "FAIL"; -} -console.log(test()); - -/******************************************************************************************** - * App Code - *******************************************************************************************/ -function evaluateJSExpression( - expression: string, - thisCtxt = {}, - globalFunctions: IFunctionHashmap = {}, - globalConstants: IConstantHashmap = {} -): any { - const globalConstString = Object.entries(globalConstants) - .map( - ([name, value]) => - // convert global constants to variable strings, adding quotation marks for string types - `var ${name} = ${typeof value === "string" ? `'${value}'` : value}` - ) - .join(";"); - // convert global functions to variable strings. Note, cannot simply parse function.toString() as optimiser - // strips names and just leaves all as anonymous functions - const globalString = Object.entries(globalFunctions) - .map(([name, fn]) => `var ${name} = ${fn}`) - .join(";"); - const funcString = `"use strict"; ${globalConstString}; ${globalString}; return (${expression});`; - try { - const func = new Function(funcString); - const evaluated = func.apply(thisCtxt); - return evaluated; - } catch (error) { - // console.warn('Could not evaluate expression', { expression, error, thisCtxt, globalFunctions, funcString }) - // still throw error so that calling function can decide how to handle, e.g. attempt string replace - throw error; - } -} - -/** Generic object containing list of functions */ -type IFunctionHashmap = { [function_name: string]: (...args: any) => any }; - -/** Generic object containing list of variables. Note - only simple types can be parsed */ -type IConstantHashmap = { [constant_name: string]: string | number | boolean }; diff --git a/packages/test-visual/package.json b/packages/test-visual/package.json index 06bc1d4bf8..cc096b05a3 100644 --- a/packages/test-visual/package.json +++ b/packages/test-visual/package.json @@ -12,7 +12,6 @@ "start": "ts-node src/index.ts" }, "dependencies": { - "app-data": "workspace:*", "archiver": "^5.3.0", "axios": "^0.21.4", "boxen": "^5.1.2", @@ -22,14 +21,15 @@ "dotenv": "^10.0.0", "extract-zip": "^2.0.1", "fs-extra": "^10.0.0", - "jpeg-js": "^0.4.3", + "jpeg-js": "^0.4.4", "log-update": "^4.0.0", "octokit": "^1.5.0", "p-queue": "^6.6.2", "pixelmatch": "^5.2.1", "pngjs": "^6.0.0", "puppeteer": "^10.2.0", - "ts-node": "^10.2.1", + "serve": "^13.0.2", + "ts-node": "^10.8.0", "typescript": "~4.2.4" }, "devDependencies": { diff --git a/packages/test-visual/src/commands/compare.ts b/packages/test-visual/src/commands/compare.ts index 4e6d8ae3d7..916bc9784b 100644 --- a/packages/test-visual/src/commands/compare.ts +++ b/packages/test-visual/src/commands/compare.ts @@ -29,6 +29,7 @@ export default program .option("-c, --clean", "Clean output folder before generating") .option("-D --debug", "Run in debug mode (not headless)") .option("-C --concurrency ", "Max number of browser pages to process in parallel") + .option("-S --serve-www", "Serve production build from local www folder") .action(async (opts) => { const options = { ...DEFAULT_OPTIONS, ...opts }; await new ScreenshotComparator(options).run(); diff --git a/packages/test-visual/src/commands/generate.ts b/packages/test-visual/src/commands/generate.ts index e852245034..c10b663560 100644 --- a/packages/test-visual/src/commands/generate.ts +++ b/packages/test-visual/src/commands/generate.ts @@ -3,17 +3,16 @@ import puppeteer from "puppeteer"; import path from "path"; import PQueue from "p-queue"; import fs from "fs-extra"; +import handler from "serve-handler"; +import http from "http"; import logUpdate from "log-update"; import { DEXIE_SRC_PATH, paths } from "../config"; +import { outputCompleteMessage, outputErrorMessage, zipFolder } from "../utils"; +import { VISUAL_TEST_CONFIG } from "../config/test"; -// As using commonJS can only import from built -// TODO - Ensure built before run. Handle sharing of types between packages -import { VISUAL_TEST_CONFIG } from "app-data/dist/test/index"; type IPageConfig = typeof VISUAL_TEST_CONFIG["pageList"][number]; type IDexieConfig = typeof VISUAL_TEST_CONFIG["dexieConfig"]; -import { outputCompleteMessage, outputErrorMessage, zipFolder } from "../utils"; - // Import Dexie from the src folder so that same instance can be used to seed the DB // as is used in the app itself. Uses require import syntax for compatibility const Dexie = require(DEXIE_SRC_PATH); @@ -44,6 +43,8 @@ interface IProgramOptions { debug?: boolean; /** maximum templates to process in parallel. Default: 10 */ concurrency?: string; + /** Serve content from local www folder (e.g. ci). Default: false */ + serveWww?: boolean; } const DEFAULT_OPTIONS: IProgramOptions = { @@ -70,6 +71,7 @@ export default program .option("-c, --clean", "Clean output folder before generating") .option("-D --debug", "Run in debug mode (not headless)") .option("-C --concurrency ", "Max number of browser pages to process in parallel") + .option("-S --serve-www", "Serve production build from local www folder") .action(async (opts) => { console.log("Generating screenshots..."); await new ScreenshotGenerate(opts).run().then(() => process.exit(0)); @@ -82,6 +84,7 @@ export default program export class ScreenshotGenerate { browser: puppeteer.Browser; page: puppeteer.Page; + server?: http.Server; private options: IProgramOptions; constructor(opts: Partial = {}) { @@ -98,14 +101,48 @@ export class ScreenshotGenerate { } public async run() { + await this.startFrontendServer(); await this.prepareBrowserRunner(); await this.seedBrowserDB(); await this.generateTemplateScreenshots(); await this.generateZipOutput(); await this.browser.close(); + await this.stopFrontendServer(); outputCompleteMessage("Screenshots successfully generated", SCREENSHOTS_OUTPUT_ZIP); } + /** Run a local webserver to server to serve frontend build from www folder */ + private async startFrontendServer() { + if (this.options.serveWww) { + return new Promise((resolve, reject) => { + this.server = http.createServer((request, response) => { + // https://github.com/vercel/serve-handler#options + return handler(request, response, { + public: paths.WWW_FOLDER, + rewrites: [{ source: "**", destination: "/index.html" }], + }); + }); + this.server.listen(4200, () => { + console.log("server listening on http://localhost:4200"); + resolve(this.server); + }); + }); + } + } + private stopFrontendServer() { + if (this.server) { + return new Promise((resolve, reject) => { + this.server!.close((err) => { + if (err) { + reject(err); + } + console.log("server stopped"); + resolve(true); + }); + }); + } + } + /** Create initial puppeteer browser and custom page objects */ private async prepareBrowserRunner() { const { height, width } = VISUAL_TEST_CONFIG.pageDefaults; diff --git a/packages/test-visual/src/config/index.ts b/packages/test-visual/src/config/index.ts index ad0e9fb3e2..5feed4f90f 100644 --- a/packages/test-visual/src/config/index.ts +++ b/packages/test-visual/src/config/index.ts @@ -4,7 +4,7 @@ import dotenv from "dotenv"; const env = loadEnvVars(); -const APP_SRC_FOLDER = path.resolve(__dirname, "../../../../"); +const ROOT_FOLDER = path.resolve(__dirname, "../../../../"); const REPO_FOLDER = path.resolve(__dirname, "../../"); export const paths = { @@ -14,6 +14,7 @@ export const paths = { SCREENSHOT_DIFFS_FOLDER: path.resolve(REPO_FOLDER, "output/diffs"), CACHED_ASSETS: path.resolve(REPO_FOLDER, "cache/assets"), DOWNLOADED_SCREENSHOTS_FOLDER: path.resolve(REPO_FOLDER, "output/downloaded"), + WWW_FOLDER: path.resolve(ROOT_FOLDER, "www"), }; Object.values(paths).forEach((p) => { @@ -21,8 +22,11 @@ Object.values(paths).forEach((p) => { }); /** path to src dexie installation to use during db seed methods */ -export const DEXIE_SRC_PATH = path.resolve(APP_SRC_FOLDER, "node_modules/dexie/dist/dexie.js"); - +export const DEXIE_SRC_PATH = path.resolve(ROOT_FOLDER, "node_modules/dexie/dist/dexie.js"); +export const TEMPLATE_CONTENTS_PATH = path.resolve( + ROOT_FOLDER, + "src/assets/app_data/sheets/contents.json" +); export const GH_REPO_ORG = env.GH_REPO_ORG; export const GH_REPO_NAME = env.GH_REPO_NAME; diff --git a/packages/test-visual/src/config/test.ts b/packages/test-visual/src/config/test.ts new file mode 100644 index 0000000000..d021b477dd --- /dev/null +++ b/packages/test-visual/src/config/test.ts @@ -0,0 +1,79 @@ +import fs from "fs-extra"; +import { DB_TABLES, DB_VERSION } from "data-models/db.model"; +import { TEMPLATE_CONTENTS_PATH } from "./index"; + +/** + * HACK - previously contents files imported from shared app-data workspace + * Now only exists in app so temp workaround to import directly + */ +const SHEETS_CONTENT_LIST = fs.readJsonSync(TEMPLATE_CONTENTS_PATH); + +const template = Object.values(SHEETS_CONTENT_LIST.template) as any[]; + +/** List of template flow subtypes to test */ +const TEST_FLOW_SUBTYPES = ["debug", "component_demo"]; + +/** List of additional template names to test */ +const ADDITIONAL_TEMPLATE_NAMES = ["home_screen", "weekly_workshops"]; + +/** List of template names to skip */ +const SKIPPED_TEMPLATE_NAMES: string[] = []; + +/** Default time spent waiting to ensure page elements rendered fully */ +const PAGE_WAIT_DEFAULT = 1000; + +/** Default viewport height used for test, in pixels */ +const PAGE_WIDTH_DEFAULT = 360; + +/** Default viewport width used for test, in pixels */ +const PAGE_HEIGHT_DEFAULT = 1280; + +/** Custom wait times for pages that require longer loading */ +const PAGE_WAIT_OVERRIDES = { + example_lang_template_1: 2000, + debug_advanced_dashed_box_1: 2000, + home_screen: 2000, + example_calc_2: 2000, +}; + +/** Custom overrides to set height for larger pages, in pixels */ +const PAGE_HEIGHT_OVERRIDES = { + example_lang_template_1: 3600, +}; + +/** Combined list of templates to test and map properties */ +const VISUAL_TEST_TEMPLATE_LIST = template + .filter((t) => { + if (SKIPPED_TEMPLATE_NAMES.includes(t.flow_name)) return false; + if (ADDITIONAL_TEMPLATE_NAMES.includes(t.flow_name)) return true; + if (TEST_FLOW_SUBTYPES.includes(t.flow_subtype)) return true; + return false; + }) + .map((t) => ({ + name: t.flow_name, + url: `template/${t.flow_name}`, + selector: `plh-template-container[data-templatename="${t.flow_name}"]`, + pageWait: PAGE_WAIT_OVERRIDES[t.flow_name] || PAGE_WAIT_DEFAULT, + width: PAGE_WIDTH_DEFAULT, + height: PAGE_HEIGHT_OVERRIDES[t.flow_name] || PAGE_HEIGHT_DEFAULT, + })); + +/** Main export for use in test runner */ +export const VISUAL_TEST_CONFIG = { + localStorageFields: { _app_language: "za_en", name: "test default user" }, + dexieConfig: { + version: DB_VERSION, + tableSchema: DB_TABLES, + data: { + user_meta: [{ key: "first_app_open", value: "2021-09-02" }], + }, + }, + pageDefaults: { + width: PAGE_WIDTH_DEFAULT, + height: PAGE_HEIGHT_DEFAULT, + // TODO - allow passing function to calculate resize + // e.g. https://stackoverflow.com/questions/61886891/how-to-get-maximum-scroll-height-for-ion-content + }, + pageList: VISUAL_TEST_TEMPLATE_LIST, + appServerUrl: "http://localhost:4200", +} as const; diff --git a/packages/test-visual/src/utils/index.ts b/packages/test-visual/src/utils/index.ts index 06b1619699..bc67ba8449 100644 --- a/packages/test-visual/src/utils/index.ts +++ b/packages/test-visual/src/utils/index.ts @@ -81,6 +81,7 @@ export async function downloadToFile(url: string, outputFilePath: string) { return new Promise((resolve, reject) => { writer.on("finish", () => { logUpdate(`downloaded ${outputFilePath}`); + logUpdate.done(); resolve(); }); writer.on("error", reject); diff --git a/packages/translations/examples/compiled/jsons/global.json b/packages/translations/examples/compiled/jsons/global.json index 2683e42a2a..5b9a3dec89 100644 --- a/packages/translations/examples/compiled/jsons/global.json +++ b/packages/translations/examples/compiled/jsons/global.json @@ -37,4 +37,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/compiled/jsons/input_tour.json b/packages/translations/examples/compiled/jsons/input_tour.json index 8d302084c4..9e5d73ce87 100644 --- a/packages/translations/examples/compiled/jsons/input_tour.json +++ b/packages/translations/examples/compiled/jsons/input_tour.json @@ -80,4 +80,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/compiled/jsons/template.json b/packages/translations/examples/compiled/jsons/template.json index d33318c682..7083a964fe 100644 --- a/packages/translations/examples/compiled/jsons/template.json +++ b/packages/translations/examples/compiled/jsons/template.json @@ -75,10 +75,7 @@ { "trigger": "changed", "action_id": "set_field", - "args": [ - "@local.radio_group_field_name", - "this.value" - ], + "args": ["@local.radio_group_field_name", "this.value"], "_raw": "changed | set_field:@local.radio_group_field_name:@local.radio_group", "_cleaned": "changed | set_field:@local.radio_group_field_name:@local.radio_group" } @@ -156,16 +153,9 @@ "action_list.0._raw", "action_list.0._cleaned" ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] + "@local.radio_group": ["action_list.0._raw", "action_list.0._cleaned"], + "@local.answer_list_1": ["parameter_list.answer_list"], + "@local.options_per_row": ["parameter_list.options_per_row"] } }, { @@ -200,9 +190,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -237,9 +225,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -274,9 +260,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -315,13 +299,8 @@ ] }, "_dynamicDependencies": { - "@local.radio_group_field_name": [ - "value", - "value" - ], - "!@local.radio_group": [ - "hidden" - ] + "@local.radio_group_field_name": ["value", "value"], + "!@local.radio_group": ["hidden"] } }, { @@ -375,9 +354,7 @@ ] }, "_dynamicDependencies": { - "@global.tap_and_choose": [ - "value" - ] + "@global.tap_and_choose": ["value"] } }, { @@ -407,9 +384,7 @@ ] }, "_dynamicDependencies": { - "@global.type_your_own": [ - "value" - ] + "@global.type_your_own": ["value"] } }, { @@ -431,20 +406,14 @@ { "trigger": "changed", "action_id": "set_field", - "args": [ - "@local.combo_box_field_name", - "this.value" - ], + "args": ["@local.combo_box_field_name", "this.value"], "_raw": "changed | set_field:@local.combo_box_field_name:@local.combo_box", "_cleaned": "changed | set_field:@local.combo_box_field_name:@local.combo_box" }, { "trigger": "changed", "action_id": "set_local", - "args": [ - "combo_box_answered", - true - ], + "args": ["combo_box_answered", true], "_raw": "changed | set_local: combo_box_answered: true", "_cleaned": "changed | set_local: combo_box_answered: true" } @@ -540,22 +509,11 @@ "action_list.0._raw", "action_list.0._cleaned" ], - "@local.combo_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ], - "@local.input_allowed": [ - "parameter_list.input_allowed" - ], - "@local.answer_placeholder": [ - "parameter_list.answer_placeholder" - ] + "@local.combo_box": ["action_list.0._raw", "action_list.0._cleaned"], + "@local.answer_list_2": ["parameter_list.answer_list"], + "@local.placeholder": ["parameter_list.placeholder"], + "@local.input_allowed": ["parameter_list.input_allowed"], + "@local.answer_placeholder": ["parameter_list.answer_placeholder"] } }, { @@ -587,9 +545,7 @@ ] }, "_dynamicDependencies": { - "@local.combo_box": [ - "value" - ] + "@local.combo_box": ["value"] } } ], @@ -605,9 +561,7 @@ ] }, "_dynamicDependencies": { - "!@local.combo_box_answered": [ - "hidden" - ] + "!@local.combo_box_answered": ["hidden"] } }, { @@ -646,13 +600,8 @@ ] }, "_dynamicDependencies": { - "@local.combo_box_field_name": [ - "value", - "value" - ], - "!@local.combo_box": [ - "hidden" - ] + "@local.combo_box_field_name": ["value", "value"], + "!@local.combo_box": ["hidden"] } }, { @@ -668,9 +617,7 @@ { "trigger": "click", "action_id": "pop_up", - "args": [ - "example_lang_template_pop_1" - ], + "args": ["example_lang_template_pop_1"], "_raw": "click | pop_up:example_lang_template_pop_1", "_cleaned": "click | pop_up:example_lang_template_pop_1" } @@ -691,9 +638,7 @@ { "trigger": "click", "action_id": "pop_up", - "args": [ - "example_lang_template_pop_2" - ], + "args": ["example_lang_template_pop_2"], "_raw": "click | pop_up:example_lang_template_pop_2", "_cleaned": "click | pop_up:example_lang_template_pop_2" } @@ -741,9 +686,7 @@ ] }, "_dynamicDependencies": { - "@global.languge_global": [ - "value" - ] + "@global.languge_global": ["value"] } } ], @@ -788,9 +731,7 @@ ] }, "_dynamicDependencies": { - "@fields.language_field_1": [ - "value" - ] + "@fields.language_field_1": ["value"] } } ], @@ -836,9 +777,7 @@ ] }, "_dynamicDependencies": { - "@fields.language_field_2": [ - "value" - ] + "@fields.language_field_2": ["value"] } } ], @@ -961,9 +900,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.title": [ - "value" - ] + "@data.language.example_lang_1.title": ["value"] } }, { @@ -987,9 +924,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.text": [ - "value" - ] + "@data.language.example_lang_1.text": ["value"] } }, { @@ -1013,9 +948,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.image_asset": [ - "value" - ] + "@data.language.example_lang_1.image_asset": ["value"] } }, { @@ -1039,9 +972,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.lottie_asset": [ - "value" - ] + "@data.language.example_lang_1.lottie_asset": ["value"] } } ], @@ -1078,9 +1009,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.title": [ - "value" - ] + "@data.language.example_lang_2.title": ["value"] } }, { @@ -1104,9 +1033,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.text": [ - "value" - ] + "@data.language.example_lang_2.text": ["value"] } }, { @@ -1130,9 +1057,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.image_asset": [ - "value" - ] + "@data.language.example_lang_2.image_asset": ["value"] } }, { @@ -1156,9 +1081,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.lottie_asset": [ - "value" - ] + "@data.language.example_lang_2.lottie_asset": ["value"] } } ], @@ -1167,4 +1090,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/compiled/strings/_combined.json b/packages/translations/examples/compiled/strings/_combined.json index 864cdbeaf7..27f1680147 100644 --- a/packages/translations/examples/compiled/strings/_combined.json +++ b/packages/translations/examples/compiled/strings/_combined.json @@ -113,4 +113,4 @@ "This text should define a default value for a field": { "esp": "Este texto debería definir el valor predeterminado de un campo." } -} \ No newline at end of file +} diff --git a/packages/translations/examples/compiled/strings/esp.json b/packages/translations/examples/compiled/strings/esp.json index 808233d682..07f883cdad 100644 --- a/packages/translations/examples/compiled/strings/esp.json +++ b/packages/translations/examples/compiled/strings/esp.json @@ -37,4 +37,4 @@ "Example Data List Title 2": "Ejemplo 2 de Título de Listado de Datos", "This text is loaded through the second data row.": "Este texto esta cargado por medio de la segunda fila de datos.", "This text should define a default value for a field": "Este texto debería definir el valor predeterminado de un campo." -} \ No newline at end of file +} diff --git a/packages/translations/examples/extracted/example_extracted.json b/packages/translations/examples/extracted/example_extracted.json index fa52890604..d0e552eb73 100644 --- a/packages/translations/examples/extracted/example_extracted.json +++ b/packages/translations/examples/extracted/example_extracted.json @@ -1,197 +1,197 @@ [ - { - "SourceText": "Example Language Template", - "text": "Example Language Template", - "type": "template" - }, - { - "SourceText": "This is a default text that needs to be translated", - "text": "This is a default text that needs to be translated", - "type": "template" - }, - { - "SourceText": "How are you feeling today?", - "text": "How are you feeling today?", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is happy, the first option.", - "text": "This is the default reply if the feeling response is happy, the first option.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is ok, the second option.", - "text": "This is the default reply if the feeling response is ok, the second option.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is sad, the third option.", - "text": "This is the default reply if the feeling response is sad, the third option.", - "type": "template" - }, - { - "SourceText": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "text": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.radio_group_field_name\n @local.radio_group_field_name" - }, - { - "SourceText": "Select one of the following options:", - "text": "Select one of the following options:", - "type": "template" - }, - { - "SourceText": "This is the first default option for the combo box", - "text": "This is the first default option for the combo box", - "type": "template" - }, - { - "SourceText": "This is the second default option for the combo box", - "text": "This is the second default option for the combo box", - "type": "template" - }, - { - "SourceText": "This is the third default option for the combo box", - "text": "This is the third default option for the combo box", - "type": "template" - }, - { - "SourceText": "The option selected was @local.combo_box.", - "text": "The option selected was @local.combo_box.", - "type": "template", - "note": "The string @local.combo_box should not be translated." - }, - { - "SourceText": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "text": "The field set through the radio group is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.combo_box_field_name\n @local.combo_box_field_name" - }, - { - "SourceText": "This is a modified text that needs to be translated.\n\nThis is a nested text.", - "text": "This is a modified text that needs to be translated.\n\nThis is a nested text.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", - "text": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", - "text": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", - "text": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", - "type": "template" - }, - { - "SourceText": "Which of the following do you like the most (this is modified)?", - "text": "Which of the following do you like the most (this is modified)?", - "type": "template" - }, - { - "SourceText": "Cats (modified text in answer list)", - "text": "Cats (modified text in answer list)", - "type": "template" - }, - { - "SourceText": "Dogs (modified text in answer list)", - "text": "Dogs (modified text in answer list)", - "type": "template" - }, - { - "SourceText": "Chinchillas (modified text in answer list)", - "text": "Chinchillas (modified text in answer list)", - "type": "template" - }, - { - "SourceText": "New title: @data.language.example_lang_2.title", - "text": "New title: @data.language.example_lang_2.title", - "type": "template", - "note": "The string @data.language.example_lang_2.title should not be translated." - }, - { - "SourceText": "New text: @data.language.example_lang_2.text", - "text": "New text: @data.language.example_lang_2.text", - "type": "template", - "note": "The string @data.language.example_lang_2.text should not be translated." - }, - { - "SourceText": "This is a global variable set in a global", - "text": "This is a global variable set in a global", - "type": "global" - }, - { - "SourceText": "This is a field set by default", - "text": "This is a field set by default", - "type": "global" - }, - { - "SourceText": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "Example Data List Title 1", - "text": "Example Data List Title 1", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the first data row.", - "text": "This text is loaded through the first data row.", - "type": "data_list" - }, - { - "SourceText": "Example Data List Title 2", - "text": "Example Data List Title 2", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the second data row.", - "text": "This text is loaded through the second data row.", - "type": "data_list" - }, - { - "SourceText": "This text should define a default value for a field", - "text": "This text should define a default value for a field", - "type": "data_list" - } -] \ No newline at end of file + { + "SourceText": "Example Language Template", + "text": "Example Language Template", + "type": "template" + }, + { + "SourceText": "This is a default text that needs to be translated", + "text": "This is a default text that needs to be translated", + "type": "template" + }, + { + "SourceText": "How are you feeling today?", + "text": "How are you feeling today?", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is happy, the first option.", + "text": "This is the default reply if the feeling response is happy, the first option.", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is ok, the second option.", + "text": "This is the default reply if the feeling response is ok, the second option.", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is sad, the third option.", + "text": "This is the default reply if the feeling response is sad, the third option.", + "type": "template" + }, + { + "SourceText": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", + "text": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", + "type": "template", + "note": "The following strings should not be translated: \n @local.radio_group_field_name\n @local.radio_group_field_name" + }, + { + "SourceText": "Select one of the following options:", + "text": "Select one of the following options:", + "type": "template" + }, + { + "SourceText": "This is the first default option for the combo box", + "text": "This is the first default option for the combo box", + "type": "template" + }, + { + "SourceText": "This is the second default option for the combo box", + "text": "This is the second default option for the combo box", + "type": "template" + }, + { + "SourceText": "This is the third default option for the combo box", + "text": "This is the third default option for the combo box", + "type": "template" + }, + { + "SourceText": "The option selected was @local.combo_box.", + "text": "The option selected was @local.combo_box.", + "type": "template", + "note": "The string @local.combo_box should not be translated." + }, + { + "SourceText": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", + "text": "The field set through the radio group is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", + "type": "template", + "note": "The following strings should not be translated: \n @local.combo_box_field_name\n @local.combo_box_field_name" + }, + { + "SourceText": "This is a modified text that needs to be translated.\n\nThis is a nested text.", + "text": "This is a modified text that needs to be translated.\n\nThis is a nested text.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", + "text": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", + "text": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", + "text": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", + "type": "template" + }, + { + "SourceText": "Which of the following do you like the most (this is modified)?", + "text": "Which of the following do you like the most (this is modified)?", + "type": "template" + }, + { + "SourceText": "Cats (modified text in answer list)", + "text": "Cats (modified text in answer list)", + "type": "template" + }, + { + "SourceText": "Dogs (modified text in answer list)", + "text": "Dogs (modified text in answer list)", + "type": "template" + }, + { + "SourceText": "Chinchillas (modified text in answer list)", + "text": "Chinchillas (modified text in answer list)", + "type": "template" + }, + { + "SourceText": "New title: @data.language.example_lang_2.title", + "text": "New title: @data.language.example_lang_2.title", + "type": "template", + "note": "The string @data.language.example_lang_2.title should not be translated." + }, + { + "SourceText": "New text: @data.language.example_lang_2.text", + "text": "New text: @data.language.example_lang_2.text", + "type": "template", + "note": "The string @data.language.example_lang_2.text should not be translated." + }, + { + "SourceText": "This is a global variable set in a global", + "text": "This is a global variable set in a global", + "type": "global" + }, + { + "SourceText": "This is a field set by default", + "text": "This is a field set by default", + "type": "global" + }, + { + "SourceText": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "Example Data List Title 1", + "text": "Example Data List Title 1", + "type": "data_list" + }, + { + "SourceText": "This text is loaded through the first data row.", + "text": "This text is loaded through the first data row.", + "type": "data_list" + }, + { + "SourceText": "Example Data List Title 2", + "text": "Example Data List Title 2", + "type": "data_list" + }, + { + "SourceText": "This text is loaded through the second data row.", + "text": "This text is loaded through the second data row.", + "type": "data_list" + }, + { + "SourceText": "This text should define a default value for a field", + "text": "This text should define a default value for a field", + "type": "data_list" + } +] diff --git a/packages/translations/examples/source/global.json b/packages/translations/examples/source/global.json index 9bd6daf755..7a3d91a457 100644 --- a/packages/translations/examples/source/global.json +++ b/packages/translations/examples/source/global.json @@ -22,4 +22,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/source/input_tour.json b/packages/translations/examples/source/input_tour.json index 0aa8276983..99c8b58c62 100644 --- a/packages/translations/examples/source/input_tour.json +++ b/packages/translations/examples/source/input_tour.json @@ -40,4 +40,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/source/template.json b/packages/translations/examples/source/template.json index d9cf8e6ca1..fda3917176 100644 --- a/packages/translations/examples/source/template.json +++ b/packages/translations/examples/source/template.json @@ -55,10 +55,7 @@ { "trigger": "changed", "action_id": "set_field", - "args": [ - "@local.radio_group_field_name", - "this.value" - ], + "args": ["@local.radio_group_field_name", "this.value"], "_raw": "changed | set_field:@local.radio_group_field_name:@local.radio_group", "_cleaned": "changed | set_field:@local.radio_group_field_name:@local.radio_group" } @@ -136,16 +133,9 @@ "action_list.0._raw", "action_list.0._cleaned" ], - "@local.radio_group": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_1": [ - "parameter_list.answer_list" - ], - "@local.options_per_row": [ - "parameter_list.options_per_row" - ] + "@local.radio_group": ["action_list.0._raw", "action_list.0._cleaned"], + "@local.answer_list_1": ["parameter_list.answer_list"], + "@local.options_per_row": ["parameter_list.options_per_row"] } }, { @@ -175,9 +165,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -207,9 +195,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -239,9 +225,7 @@ ] }, "_dynamicDependencies": { - "@local.radio_group": [ - "hidden" - ] + "@local.radio_group": ["hidden"] } }, { @@ -275,13 +259,8 @@ ] }, "_dynamicDependencies": { - "@local.radio_group_field_name": [ - "value", - "value" - ], - "!@local.radio_group": [ - "hidden" - ] + "@local.radio_group_field_name": ["value", "value"], + "!@local.radio_group": ["hidden"] } }, { @@ -325,9 +304,7 @@ ] }, "_dynamicDependencies": { - "@global.tap_and_choose": [ - "value" - ] + "@global.tap_and_choose": ["value"] } }, { @@ -352,9 +329,7 @@ ] }, "_dynamicDependencies": { - "@global.type_your_own": [ - "value" - ] + "@global.type_your_own": ["value"] } }, { @@ -371,20 +346,14 @@ { "trigger": "changed", "action_id": "set_field", - "args": [ - "@local.combo_box_field_name", - "this.value" - ], + "args": ["@local.combo_box_field_name", "this.value"], "_raw": "changed | set_field:@local.combo_box_field_name:@local.combo_box", "_cleaned": "changed | set_field:@local.combo_box_field_name:@local.combo_box" }, { "trigger": "changed", "action_id": "set_local", - "args": [ - "combo_box_answered", - true - ], + "args": ["combo_box_answered", true], "_raw": "changed | set_local: combo_box_answered: true", "_cleaned": "changed | set_local: combo_box_answered: true" } @@ -480,22 +449,11 @@ "action_list.0._raw", "action_list.0._cleaned" ], - "@local.combo_box": [ - "action_list.0._raw", - "action_list.0._cleaned" - ], - "@local.answer_list_2": [ - "parameter_list.answer_list" - ], - "@local.placeholder": [ - "parameter_list.placeholder" - ], - "@local.input_allowed": [ - "parameter_list.input_allowed" - ], - "@local.answer_placeholder": [ - "parameter_list.answer_placeholder" - ] + "@local.combo_box": ["action_list.0._raw", "action_list.0._cleaned"], + "@local.answer_list_2": ["parameter_list.answer_list"], + "@local.placeholder": ["parameter_list.placeholder"], + "@local.input_allowed": ["parameter_list.input_allowed"], + "@local.answer_placeholder": ["parameter_list.answer_placeholder"] } }, { @@ -522,9 +480,7 @@ ] }, "_dynamicDependencies": { - "@local.combo_box": [ - "value" - ] + "@local.combo_box": ["value"] } } ], @@ -540,9 +496,7 @@ ] }, "_dynamicDependencies": { - "!@local.combo_box_answered": [ - "hidden" - ] + "!@local.combo_box_answered": ["hidden"] } }, { @@ -576,13 +530,8 @@ ] }, "_dynamicDependencies": { - "@local.combo_box_field_name": [ - "value", - "value" - ], - "!@local.combo_box": [ - "hidden" - ] + "@local.combo_box_field_name": ["value", "value"], + "!@local.combo_box": ["hidden"] } }, { @@ -593,9 +542,7 @@ { "trigger": "click", "action_id": "pop_up", - "args": [ - "example_lang_template_pop_1" - ], + "args": ["example_lang_template_pop_1"], "_raw": "click | pop_up:example_lang_template_pop_1", "_cleaned": "click | pop_up:example_lang_template_pop_1" } @@ -611,9 +558,7 @@ { "trigger": "click", "action_id": "pop_up", - "args": [ - "example_lang_template_pop_2" - ], + "args": ["example_lang_template_pop_2"], "_raw": "click | pop_up:example_lang_template_pop_2", "_cleaned": "click | pop_up:example_lang_template_pop_2" } @@ -651,9 +596,7 @@ ] }, "_dynamicDependencies": { - "@global.languge_global": [ - "value" - ] + "@global.languge_global": ["value"] } } ], @@ -688,9 +631,7 @@ ] }, "_dynamicDependencies": { - "@fields.language_field_1": [ - "value" - ] + "@fields.language_field_1": ["value"] } } ], @@ -726,9 +667,7 @@ ] }, "_dynamicDependencies": { - "@fields.language_field_2": [ - "value" - ] + "@fields.language_field_2": ["value"] } } ], @@ -821,9 +760,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.title": [ - "value" - ] + "@data.language.example_lang_1.title": ["value"] } }, { @@ -842,9 +779,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.text": [ - "value" - ] + "@data.language.example_lang_1.text": ["value"] } }, { @@ -863,9 +798,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.image_asset": [ - "value" - ] + "@data.language.example_lang_1.image_asset": ["value"] } }, { @@ -884,9 +817,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_1.lottie_asset": [ - "value" - ] + "@data.language.example_lang_1.lottie_asset": ["value"] } } ], @@ -918,9 +849,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.title": [ - "value" - ] + "@data.language.example_lang_2.title": ["value"] } }, { @@ -939,9 +868,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.text": [ - "value" - ] + "@data.language.example_lang_2.text": ["value"] } }, { @@ -960,9 +887,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.image_asset": [ - "value" - ] + "@data.language.example_lang_2.image_asset": ["value"] } }, { @@ -981,9 +906,7 @@ ] }, "_dynamicDependencies": { - "@data.language.example_lang_2.lottie_asset": [ - "value" - ] + "@data.language.example_lang_2.lottie_asset": ["value"] } } ], @@ -992,4 +915,4 @@ ], "_xlsxPath": "plh_sheets_beta/plh_templating/quality_assurance/example_templates/example_languages.xlsx" } -] \ No newline at end of file +] diff --git a/packages/translations/examples/translations/translated.esp.json b/packages/translations/examples/translations/translated.esp.json index 1f32f8a177..228c622e50 100644 --- a/packages/translations/examples/translations/translated.esp.json +++ b/packages/translations/examples/translations/translated.esp.json @@ -1,197 +1,197 @@ [ - { - "SourceText": "Example Language Template", - "text": "Plantilla de Ejemplo de Idioma", - "type": "template" - }, - { - "SourceText": "This is a default text that needs to be translated", - "text": "Esto es un texto predeterminado que necesita ser traducido", - "type": "template" - }, - { - "SourceText": "How are you feeling today?", - "text": "¿Cómo te sientes hoy?", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is happy, the first option.", - "text": "Esta es la respuesta predeterminada si la respuesta es contento, la primera opción.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is ok, the second option.", - "text": "Esta es la respuesta predeterminada si la respuesta es normal, la segunda opción.", - "type": "template" - }, - { - "SourceText": "This is the default reply if the feeling response is sad, the third option.", - "text": "Esta es la respuesta predeterminada si la respuesta es triste, la tercer opción.", - "type": "template" - }, - { - "SourceText": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", - "text": "El campo determinado por medio del grupo radial es @local.radio_group_field_name y su valor es @fields.@local.radio_group_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.radio_group_field_name\n @local.radio_group_field_name" - }, - { - "SourceText": "Select one of the following options:", - "text": "Selecciona una de las siguientes opciones:", - "type": "template" - }, - { - "SourceText": "This is the first default option for the combo box", - "text": "Esta es la primera opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "This is the second default option for the combo box", - "text": "Esta es la segunda opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "This is the third default option for the combo box", - "text": "Esta es la tercer opción de la caja de combinaciones", - "type": "template" - }, - { - "SourceText": "The option selected was @local.combo_box.", - "text": "La opción seleccionada fue @local.combo_box.", - "type": "template", - "note": "The string @local.combo_box should not be translated." - }, - { - "SourceText": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", - "text": "El campo determinado por medio de la caja de combinaciones es @local.combo_box_field_name y su valor es @fields.@local.combo_box_field_name.", - "type": "template", - "note": "The following strings should not be translated: \n @local.combo_box_field_name\n @local.combo_box_field_name" - }, - { - "SourceText": "This is a modified text that needs to be translated.\n\nThis is a nested text.", - "text": "Este es un texto modificado que necesita ser traducido.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es alegre, la primera opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es normal, la segunda opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", - "text": "Esta es la respuesta modificada si la respuesta es triste, la tercer opción.\n\nEste es un texto anidado.", - "type": "template" - }, - { - "SourceText": "Which of the following do you like the most (this is modified)?", - "text": "¿Cuál de los siguientes te gusta más? (esto está modificado)?", - "type": "template" - }, - { - "SourceText": "Cats (modified text in answer list)", - "text": "Gatos (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "Dogs (modified text in answer list)", - "text": "Perros (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "Chinchillas (modified text in answer list)", - "text": "Chinchillas (texto modificado en la lista de respuestas)", - "type": "template" - }, - { - "SourceText": "New title: @data.language.example_lang_2.title", - "text": "Título nuevo: @data.language.example_lang_2.title", - "type": "template", - "note": "The string @data.language.example_lang_2.title should not be translated." - }, - { - "SourceText": "New text: @data.language.example_lang_2.text", - "text": "Texto nuevo: @data.language.example_lang_2.text", - "type": "template", - "note": "The string @data.language.example_lang_2.text should not be translated." - }, - { - "SourceText": "This is a global variable set in a global", - "text": "Esta es una variable global determinada en una planilla global", - "type": "global" - }, - { - "SourceText": "This is a field set by default", - "text": "Este es un campo con valor predeterminado", - "type": "global" - }, - { - "SourceText": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Plantilla estandar

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Esta es una planilla estandar que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Plantilla Anidada

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Esta es una planilla anidada que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción. Esto nos permitirá verificar que el sistema multilingual funciona cuando se anida.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Componente para traducir

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que requiere ser traducido: el marcador de posición u la opción seleccionada deben ser traducidos

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Component que no debe ser traducido

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", - "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que esta excluído de la traducción. El texto del botón debería mantenerse como Pop-up 1.

                                                                                                                                                                                  ", - "type": "tour" - }, - { - "SourceText": "Example Data List Title 1", - "text": "Ejemplo 1 de Título de Listado de Datos", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the first data row.", - "text": "Este texto esta cargado por medio de la primera fila de datos.", - "type": "data_list" - }, - { - "SourceText": "Example Data List Title 2", - "text": "Ejemplo 2 de Título de Listado de Datos", - "type": "data_list" - }, - { - "SourceText": "This text is loaded through the second data row.", - "text": "Este texto esta cargado por medio de la segunda fila de datos.", - "type": "data_list" - }, - { - "SourceText": "This text should define a default value for a field", - "text": "Este texto debería definir el valor predeterminado de un campo.", - "type": "data_list" - } -] \ No newline at end of file + { + "SourceText": "Example Language Template", + "text": "Plantilla de Ejemplo de Idioma", + "type": "template" + }, + { + "SourceText": "This is a default text that needs to be translated", + "text": "Esto es un texto predeterminado que necesita ser traducido", + "type": "template" + }, + { + "SourceText": "How are you feeling today?", + "text": "¿Cómo te sientes hoy?", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is happy, the first option.", + "text": "Esta es la respuesta predeterminada si la respuesta es contento, la primera opción.", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is ok, the second option.", + "text": "Esta es la respuesta predeterminada si la respuesta es normal, la segunda opción.", + "type": "template" + }, + { + "SourceText": "This is the default reply if the feeling response is sad, the third option.", + "text": "Esta es la respuesta predeterminada si la respuesta es triste, la tercer opción.", + "type": "template" + }, + { + "SourceText": "The field set through the radio group is @local.radio_group_field_name and its value is @fields.@local.radio_group_field_name.", + "text": "El campo determinado por medio del grupo radial es @local.radio_group_field_name y su valor es @fields.@local.radio_group_field_name.", + "type": "template", + "note": "The following strings should not be translated: \n @local.radio_group_field_name\n @local.radio_group_field_name" + }, + { + "SourceText": "Select one of the following options:", + "text": "Selecciona una de las siguientes opciones:", + "type": "template" + }, + { + "SourceText": "This is the first default option for the combo box", + "text": "Esta es la primera opción de la caja de combinaciones", + "type": "template" + }, + { + "SourceText": "This is the second default option for the combo box", + "text": "Esta es la segunda opción de la caja de combinaciones", + "type": "template" + }, + { + "SourceText": "This is the third default option for the combo box", + "text": "Esta es la tercer opción de la caja de combinaciones", + "type": "template" + }, + { + "SourceText": "The option selected was @local.combo_box.", + "text": "La opción seleccionada fue @local.combo_box.", + "type": "template", + "note": "The string @local.combo_box should not be translated." + }, + { + "SourceText": "The field set through the combo box is @local.combo_box_field_name and its value is @fields.@local.combo_box_field_name.", + "text": "El campo determinado por medio de la caja de combinaciones es @local.combo_box_field_name y su valor es @fields.@local.combo_box_field_name.", + "type": "template", + "note": "The following strings should not be translated: \n @local.combo_box_field_name\n @local.combo_box_field_name" + }, + { + "SourceText": "This is a modified text that needs to be translated.\n\nThis is a nested text.", + "text": "Este es un texto modificado que necesita ser traducido.\n\nEste es un texto anidado.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is happy, the first option.\n\nThis is a nested text.", + "text": "Esta es la respuesta modificada si la respuesta es alegre, la primera opción.\n\nEste es un texto anidado.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is ok, the second option.\n\nThis is a nested text.", + "text": "Esta es la respuesta modificada si la respuesta es normal, la segunda opción.\n\nEste es un texto anidado.", + "type": "template" + }, + { + "SourceText": "This is the modified reply if the feeling response is sad, the third option.\n\nThis is a nested text.", + "text": "Esta es la respuesta modificada si la respuesta es triste, la tercer opción.\n\nEste es un texto anidado.", + "type": "template" + }, + { + "SourceText": "Which of the following do you like the most (this is modified)?", + "text": "¿Cuál de los siguientes te gusta más? (esto está modificado)?", + "type": "template" + }, + { + "SourceText": "Cats (modified text in answer list)", + "text": "Gatos (texto modificado en la lista de respuestas)", + "type": "template" + }, + { + "SourceText": "Dogs (modified text in answer list)", + "text": "Perros (texto modificado en la lista de respuestas)", + "type": "template" + }, + { + "SourceText": "Chinchillas (modified text in answer list)", + "text": "Chinchillas (texto modificado en la lista de respuestas)", + "type": "template" + }, + { + "SourceText": "New title: @data.language.example_lang_2.title", + "text": "Título nuevo: @data.language.example_lang_2.title", + "type": "template", + "note": "The string @data.language.example_lang_2.title should not be translated." + }, + { + "SourceText": "New text: @data.language.example_lang_2.text", + "text": "Texto nuevo: @data.language.example_lang_2.text", + "type": "template", + "note": "The string @data.language.example_lang_2.text should not be translated." + }, + { + "SourceText": "This is a global variable set in a global", + "text": "Esta es una variable global determinada en una planilla global", + "type": "global" + }, + { + "SourceText": "This is a field set by default", + "text": "Este es un campo con valor predeterminado", + "type": "global" + }, + { + "SourceText": "

                                                                                                                                                                                  Standard Template

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Plantilla estandar

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is a standard template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Esta es una planilla estandar que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Nested Template

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Plantilla Anidada

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is a nested template that demonstrates a variety of things that would need to be translated and a few things that are excluded from translation. This will allow us to check that the multi-lingual system works with nesting.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Esta es una planilla anidada que demuestra una variedad de cosas que necesitarían ser traducidas y algunas que están excluídas de la traducción. Esto nos permitirá verificar que el sistema multilingual funciona cuando se anida.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Component to translate

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Componente para traducir

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is an example of a component that requires translation: the placeholder text and the selected option should be translated

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que requiere ser traducido: el marcador de posición u la opción seleccionada deben ser traducidos

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  Component that should not be translated translate

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Component que no debe ser traducido

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "

                                                                                                                                                                                  This is an example of a component that is excluded from translation. The button text should still be Pop-up 1.

                                                                                                                                                                                  ", + "text": "

                                                                                                                                                                                  Este es un ejemplo de un componente que esta excluído de la traducción. El texto del botón debería mantenerse como Pop-up 1.

                                                                                                                                                                                  ", + "type": "tour" + }, + { + "SourceText": "Example Data List Title 1", + "text": "Ejemplo 1 de Título de Listado de Datos", + "type": "data_list" + }, + { + "SourceText": "This text is loaded through the first data row.", + "text": "Este texto esta cargado por medio de la primera fila de datos.", + "type": "data_list" + }, + { + "SourceText": "Example Data List Title 2", + "text": "Ejemplo 2 de Título de Listado de Datos", + "type": "data_list" + }, + { + "SourceText": "This text is loaded through the second data row.", + "text": "Este texto esta cargado por medio de la segunda fila de datos.", + "type": "data_list" + }, + { + "SourceText": "This text should define a default value for a field", + "text": "Este texto debería definir el valor predeterminado de un campo.", + "type": "data_list" + } +] diff --git a/packages/translations/package.json b/packages/translations/package.json index d99b875e8e..42a8da5c35 100644 --- a/packages/translations/package.json +++ b/packages/translations/package.json @@ -12,9 +12,8 @@ }, "devDependencies": { "@types/fs-extra": "^9.0.12", - "@types/inquirer": "^7.3.3", + "@types/inquirer": "^8.1.2", "@types/node": "^15.12.4", - "app-data": "workspace:*", "chalk": "^4.1.1", "ts-node-dev": "^1.1.8", "typescript": "~4.2.4" @@ -24,6 +23,6 @@ "commander": "^8.1.0", "fs-extra": "^10.0.0", "inquirer": "^8.1.2", - "ts-node": "^10.1.0" + "ts-node": "^10.8.0" } } diff --git a/packages/translations/src/utils/index.ts b/packages/translations/src/utils/index.ts index 45a9caf413..68fa7a941b 100644 --- a/packages/translations/src/utils/index.ts +++ b/packages/translations/src/utils/index.ts @@ -38,7 +38,7 @@ export function checkInputOutputDirs(inDir: string, outDir: string) { fs.mkdirSync(inDir, { recursive: true }); } if (fs.readdirSync(inDir).length === 0) { - console.warn(chalk.red("Warning - No source tranlsations found\n", inDir)); + console.warn(chalk.red("Warning - No source translations found\n", inDir)); } if (!fs.existsSync(outDir)) { fs.mkdirSync(outDir, { recursive: true }); diff --git a/serve.json b/serve.json new file mode 100644 index 0000000000..cfded83b6c --- /dev/null +++ b/serve.json @@ -0,0 +1,4 @@ +{ + "public": "www", + "rewrites": [{ "source": "**", "destination": "/index.html" }] +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index fba4d718d7..65cc785c62 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,10 +1,10 @@ import { NgModule } from "@angular/core"; import { PreloadAllModules, Route, RouterModule, Routes } from "@angular/router"; -import { ThemeEditorComponent } from "src/app/feature/theme/theme-editor/theme-editor.component"; -import { APP_CONSTANTS } from "./data"; +import { APP_CONFIG } from "./data"; import { TourComponent } from "./feature/tour/tour.component"; -const { APP_ROUTE_DEFAULTS } = APP_CONSTANTS; +// TODO: These should come from the appConfigService +const { APP_ROUTE_DEFAULTS } = APP_CONFIG; /** Routes specified from data-models */ const DataRoutes: Routes = [ @@ -30,20 +30,35 @@ const FeatureRoutes: Routes = [ import("./feature/template/template.module").then((m) => m.TemplatePageModule), }, { - path: "theme-editor", - component: ThemeEditorComponent, + path: "theme", + loadChildren: () => import("./feature/theme/theme.module").then((m) => m.ThemeModule), }, { path: "tour", - component: TourComponent, + loadChildren: () => import("./feature/tour/tour.module").then((m) => m.TourModule), }, { path: "tour/:tourName", component: TourComponent, }, + // Routes to show in sidebar routing { path: "feedback", loadChildren: () => import("./feature/feedback/feedback.module").then((m) => m.FeedbackModule), + outlet: "sidebar", + }, + { + path: "template", + loadChildren: () => + import("./feature/template/template.module").then((m) => m.TemplatePageModule), + outlet: "sidebar", + }, + { + path: "component", + loadChildren: () => + import("./feature/template/pages/component/component.module").then( + (m) => m.TemplateComponentModule + ), }, ]; @@ -53,7 +68,6 @@ const FeatureRoutes: Routes = [ preloadingStrategy: PreloadAllModules, useHash: false, anchorScrolling: "enabled", - relativeLinkResolution: "legacy", }), ], exports: [RouterModule], diff --git a/src/app/app.component.html b/src/app/app.component.html index 311e72a9d9..00c6448249 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1,12 @@ - - + + + {{ sideMenuDefaults.title }} @@ -19,10 +26,27 @@ > -
                                                                                                                                                                                  - -
                                                                                                                                                                                  - + + +
                                                                                                                                                                                  + +
                                                                                                                                                                                  + +
                                                                                                                                                                                  + + + + +
                                                                                                                                                                                  -
                                                                                                                                                                                  + + + + + diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 206deae19d..a9123f3993 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -20,3 +20,11 @@ height: 100%; } } +#sidebar { + width: 500px; + min-width: 500px; +} +#sidebar-content { + width: 100%; + height: 100%; +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 2109205371..7f41ead837 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,21 +1,22 @@ -import { Component } from "@angular/core"; +import { ChangeDetectorRef, Component } from "@angular/core"; import { Platform, MenuController } from "@ionic/angular"; import { Router } from "@angular/router"; import { Capacitor } from "@capacitor/core"; import { SplashScreen } from "@capacitor/splash-screen"; import { App } from "@capacitor/app"; import { DbService } from "./shared/services/db/db.service"; -import { ThemeService } from "./feature/theme/theme-service/theme.service"; -import { _DeprecatedSurveyService } from "./feature/survey/survey.service"; +import { SkinService } from "./shared/services/skin/skin.service"; +import { ThemeService } from "./feature/theme/services/theme.service"; import { environment } from "src/environments/environment"; import { TaskActionService } from "./shared/services/task/task-action.service"; -import { UserMetaService, IUserMeta } from "./shared/services/userMeta/userMeta.service"; +import { UserMetaService } from "./shared/services/userMeta/userMeta.service"; import { AppEventService } from "./shared/services/app-events/app-events.service"; -import { TourService } from "./shared/services/tour/tour.service"; +import { TourService } from "./feature/tour/tour.service"; import { TemplateService } from "./shared/components/template/services/template.service"; import { CampaignService } from "./feature/campaign/campaign.service"; import { ServerService } from "./shared/services/server/server.service"; import { DataEvaluationService } from "./shared/services/data/data-evaluation.service"; +import { DynamicDataService } from "./shared/services/dynamic-data/dynamic-data.service"; import { TemplateProcessService } from "./shared/components/template/services/instance/template-process.service"; import { isSameDay } from "date-fns"; import { AnalyticsService } from "./shared/services/analytics/analytics.service"; @@ -24,12 +25,20 @@ import { TemplateFieldService } from "./shared/components/template/services/temp import { TemplateTranslateService } from "./shared/components/template/services/template-translate.service"; import { LocalNotificationInteractionService } from "./shared/services/notification/local-notification-interaction.service"; import { DBSyncService } from "./shared/services/db/db-sync.service"; - -import { APP_CONSTANTS } from "./data"; import { CrashlyticsService } from "./shared/services/crashlytics/crashlytics.service"; import { AppDataService } from "./shared/services/data/app-data.service"; - -const { APP_FIELDS, APP_INITIALISATION_DEFAULTS, APP_SIDEMENU_DEFAULTS } = APP_CONSTANTS; +import { AuthService } from "./shared/services/auth/auth.service"; +import { LifecycleActionsService } from "./shared/services/lifecycle-actions/lifecycle-actions.service"; +import { AppConfigService } from "./shared/services/app-config/app-config.service"; +import { IAppConfig } from "./shared/model"; +import { TaskService } from "./shared/services/task/task.service"; +import { AppUpdateService } from "./shared/services/app-update/app-update.service"; +import { RemoteAssetService } from "./shared/services/remote-asset/remote-asset.service"; +import { AsyncServiceBase } from "./shared/services/asyncService.base"; +import { SyncServiceBase } from "./shared/services/syncService.base"; +import { SeoService } from "./shared/services/seo/seo.service"; +import { FeedbackService } from "./feature/feedback/feedback.service"; +import { ShareService } from "./shared/services/share/share.service"; @Component({ selector: "app-root", @@ -39,19 +48,28 @@ const { APP_FIELDS, APP_INITIALISATION_DEFAULTS, APP_SIDEMENU_DEFAULTS } = APP_C export class AppComponent { APP_VERSION = environment.version; DEPLOYMENT_NAME = environment.deploymentName; - sideMenuDefaults = APP_SIDEMENU_DEFAULTS; + appConfig: IAppConfig; + appFields: IAppConfig["APP_FIELDS"]; + appAuthenticationDefaults: IAppConfig["APP_AUTHENTICATION_DEFAULTS"]; + sideMenuDefaults: IAppConfig["APP_SIDEMENU_DEFAULTS"]; + footerDefaults: IAppConfig["APP_FOOTER_DEFAULTS"]; /** Track when app ready to render sidebar and route templates */ public renderAppTemplates = false; constructor( + // 3rd Party Services private platform: Platform, + private cdr: ChangeDetectorRef, private menuController: MenuController, private router: Router, + // App services + private skinService: SkinService, + private appConfigService: AppConfigService, + private dynamicDataService: DynamicDataService, private dbService: DbService, private dbSyncService: DBSyncService, private userMetaService: UserMetaService, private themeService: ThemeService, - private _deprecatedSurveyService: _DeprecatedSurveyService, private tourService: TourService, private templateService: TemplateService, private templateFieldService: TemplateFieldService, @@ -65,28 +83,48 @@ export class AppComponent { private templateTranslateService: TemplateTranslateService, private crashlyticsService: CrashlyticsService, private appDataService: AppDataService, + private authService: AuthService, + private seoService: SeoService, + private taskService: TaskService, + private feedbackService: FeedbackService, /** Inject in the main app component to start tracking actions immediately */ - public taskActions: TaskActionService, - public serverService: ServerService + private taskActions: TaskActionService, + private lifecycleActionsService: LifecycleActionsService, + private serverService: ServerService, + private appUpdateService: AppUpdateService, + private remoteAssetService: RemoteAssetService, + private shareService: ShareService ) { this.initializeApp(); } - async initializeApp() { + private async initializeApp() { this.platform.ready().then(async () => { + this.subscribeToAppConfigChanges(); // ensure deployment field set correctly for use in any startup services or templates - localStorage.setItem(APP_FIELDS.DEPLOYMENT_NAME, this.DEPLOYMENT_NAME); + localStorage.setItem(this.appFields.DEPLOYMENT_NAME, this.DEPLOYMENT_NAME); + localStorage.setItem(this.appFields.APP_VERSION, this.APP_VERSION); await this.initialiseCoreServices(); this.hackSetDeveloperOptions(); const isDeveloperMode = this.templateFieldService.getField("user_mode") === false; const user = this.userMetaService.userMeta; + // Authentication requires verified domain and app ids populated to firebase console + // Currently only run on native where specified (but can comment out for testing locally) + if (this.appAuthenticationDefaults.enforceLogin && Capacitor.isNativePlatform()) { + await this.ensureUserSignedIn(); + } if (!user.first_app_open) { await this.userMetaService.setUserMeta({ first_app_open: new Date().toISOString() }); - this.hackSetFirstOpenFields(); - await this.handleFirstLaunchDataActions(); } + // Run app-specific launch tasks + + // Re-initialise default field and globals on init in case sheets have been updated + // TODO - ideally this should just be triggered on first launch of new app update + await this.templateService.initialiseDefaultFieldAndGlobals(); + await this.templateProcessService.initialiseStartupTemplates(); + await this.lifecycleActionsService.handleLaunchActions(); + this.menuController.enable(true, "main-side-menu"); - await this.hackSetAppOpenFields(user); if (Capacitor.isNativePlatform()) { if (!isDeveloperMode) { this.removeConsoleLogs(); @@ -95,10 +133,36 @@ export class AppComponent { } // Show main template this.renderAppTemplates = true; + // Detect changes in case expression changed prior to render (e.g. feedback sidebar) + this.cdr.detectChanges(); this.scheduleReinitialisation(); }); } + private async ensureUserSignedIn() { + const authUser = await this.authService.getCurrentUser(); + if (!authUser) { + const templatename = this.appAuthenticationDefaults.signInTemplate; + const { modal } = await this.templateService.runStandaloneTemplate(templatename, { + showCloseButton: false, + waitForDismiss: false, + }); + await this.authService.waitForSignInComplete(); + await modal.dismiss(); + } + } + + /** Initialise appConfig and set dependent properties */ + private subscribeToAppConfigChanges() { + this.appConfigService.appConfig$.subscribe((appConfig: IAppConfig) => { + this.appConfig = appConfig; + this.sideMenuDefaults = this.appConfig.APP_SIDEMENU_DEFAULTS; + this.footerDefaults = this.appConfig.APP_FOOTER_DEFAULTS; + this.appAuthenticationDefaults = this.appConfig.APP_AUTHENTICATION_DEFAULTS; + this.appFields = this.appConfig.APP_FIELDS; + }); + } + /** * Various services set core app data which may be used in templates such as current app day, * user id etc. Make sure these services have run their initialisation logic before proceeding. @@ -106,59 +170,82 @@ export class AppComponent { * Note - For some of these services order will be important * (e.g. notifications before campaigns that require notifications) **/ - async initialiseCoreServices() { - this.crashlyticsService.init(); // Start init but do not need to wait for complete - await this.dbService.init(); - await this.userMetaService.init(); - this.themeService.init(); - /** CC 2021-05-14 - disabling reminders service until decide on full implementation (ideally not requiring evaluation of all reminders on init) */ - // this.remindersService.init(); - await this.appEventService.init(); - await this.serverService.init(); - await this.dataEvaluationService.refreshDBCache(); - await this.templateTranslateService.init(); - await this.appDataService.init(); - await this.templateService.init(); - await this.templateProcessService.init(); - await this.campaignService.init(); - await this.tourService.init(); + private async initialiseCoreServices() { + // Organise all services into groups + const services: { + /** should be called early but don't need to be waited for */ + eager: AsyncServiceBase[]; + /** require async init and may be depended on by other services */ + blocking: AsyncServiceBase[]; + /** handle own init in synchronous function (will be ready on inject) */ + nonBlocking: SyncServiceBase[]; + /** async but not depended on for init of other services (can be intialised after timeout) */ + deferred: (AsyncServiceBase | SyncServiceBase)[]; + /** do not strictly need to be initialised as done by other services (but kept for reference) */ + implicit: (AsyncServiceBase | SyncServiceBase)[]; + /** likely no longer required, should be removed in future (impact can be tested by moving into group) */ + deprecated: (AsyncServiceBase | SyncServiceBase)[]; + } = { + eager: [this.crashlyticsService], + blocking: [ + this.dbSyncService, + this.dynamicDataService, + this.userMetaService, + this.tourService, + this.localNotificationService, + this.localNotificationInteractionService, + this.taskService, + this.taskActions, + this.campaignService, + this.remoteAssetService, + ], + nonBlocking: [ + this.skinService, + this.appConfigService, + this.appUpdateService, + this.themeService, + this.templateService, + this.templateProcessService, + this.appDataService, + this.authService, + this.serverService, + this.seoService, + this.feedbackService, + this.shareService, + ], + deferred: [this.analyticsService], + implicit: [ + this.dbService, + this.templateTranslateService, + this.templateFieldService, + this.dataEvaluationService, + this.appEventService, + ], + deprecated: [this.lifecycleActionsService], + }; - // Initialise additional services in a non-blocking way - setTimeout(async () => { - await this.localNotificationInteractionService.init(); - await this.localNotificationService.init(); - await this.dbSyncService.init(); - await this.analyticsService.init(); - /** CC 2022-04-01 - Disable service as not currently in use */ - // await this.pushNotificationService.init(); - }, 1000); - } - - /** - * Run app-specific first launch tasks - **/ - private async handleFirstLaunchDataActions() { - for (const initAction of APP_INITIALISATION_DEFAULTS.app_first_launch_actions) { - switch (initAction.type) { - case "run_survey": - await this._deprecatedSurveyService.runSurvey(initAction.value as any); - break; - case "template_popup": - await this.templateService.runStandaloneTemplate(initAction.value, { - showCloseButton: false, - }); - break; - case "tour_start": - await this.tourService.startTour(initAction.value); - break; - default: - console.error("Startup action not defined:", initAction); - break; - } + // log all init logs in a group. Note, some services may sit outside this group in cases + // where non-blocking services import blocking (non-blocking call init on import into constructor). + // could be resolved by importing via injector instead of constructor (assumed not very important) + console.group("Core Services"); + const start = performance.now(); + for (const service of services.eager) { + service.ready(); + } + await Promise.all(services.blocking.map(async (service) => await service.ready())); + for (const service of services.nonBlocking) { + service.ready(); } + setTimeout(() => { + for (const service of services.deferred) { + service.ready(); + } + }, 5000); + console.log("Total time:", Math.round(performance.now() - start) + "ms"); + console.groupEnd(); } - clickOnMenuItem(id: string) { + private clickOnMenuItem(id: string) { this.menuController.close("main-side-menu"); this.router.navigateByUrl("/" + id); } @@ -208,50 +295,4 @@ export class AppComponent { } } } - - /** - * temporary fix: set initial fields to avoid doubling up of quickstart buttons - * TODO CC 2021-07-23 - Review if methods still required - */ - private hackSetFirstOpenFields() { - this.templateFieldService.setField(".w_1on1_completion_status", "uncompleted"); - this.templateFieldService.setField("second_week", "false"); - this.templateFieldService.setField(".w_praise_completion_status", "uncompleted"); - this.templateFieldService.setField("third_week", "false"); - } - - /** - * temporary workaround for setting unlocked content - */ - private async hackSetAppOpenFields(user: IUserMeta) { - // TODO CC 2021-07-23 - Review if methods below still required - let old_date = this.userMetaService.getUserMeta("current_date"); - await this.userMetaService.setUserMeta({ current_date: new Date().toISOString() }); - let current_date = this.userMetaService.getUserMeta("current_date"); - this.templateFieldService.setField("first_app_open", user.first_app_open); - this.templateFieldService.setField("current_date", current_date); - if (old_date != current_date) { - this.templateFieldService.setField("daily_relax_done", "false"); - } - this.templateFieldService.setField("first_week", "true"); - if (Date.parse(current_date) - Date.parse(user.first_app_open) > 6 * 24 * 60 * 60 * 1000) { - this.templateFieldService.setField("second_week", "true"); - this.templateFieldService.setField("w_1on1_disabled", "false"); - } else { - this.templateFieldService.setField("second_week", "false"); - } - if (Date.parse(current_date) - Date.parse(user.first_app_open) > 13 * 24 * 60 * 60 * 1000) { - this.templateFieldService.setField("third_week", "true"); - this.templateFieldService.setField("w_praise_disabled", "false"); - } else { - this.templateFieldService.setField("third_week", "false"); - } - this.templateFieldService.setField( - "days_since_start", - ( - (Date.parse(current_date) - Date.parse(user.first_app_open)) / - (24 * 60 * 60 * 1000) - ).toString() - ); - } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 73351f8471..2dbf647dc2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,34 +1,32 @@ import { ErrorHandler, NgModule } from "@angular/core"; import { BrowserModule } from "@angular/platform-browser"; +import { FormsModule } from "@angular/forms"; import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; import { RouteReuseStrategy } from "@angular/router"; import { HttpClientModule } from "@angular/common/http"; -import { AngularFireModule } from "@angular/fire"; -import { AngularFireAuthModule } from "@angular/fire/auth"; +import { provideFirebaseApp, initializeApp } from "@angular/fire/app"; +import { getAuth, provideAuth } from "@angular/fire/auth"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; +// Libs +import { LottieModule } from "ngx-lottie"; +import player from "lottie-web"; +import { NgxMatomoTrackerModule } from "@ngx-matomo/tracker"; +import { NgxMatomoRouterModule } from "@ngx-matomo/router"; + // Native import { HTTP } from "@ionic-native/http/ngx"; import { Device } from "@ionic-native/device/ngx"; +// Components import { AppComponent } from "./app.component"; import { AppRoutingModule } from "./app-routing.module"; import { SharedModule } from "./shared/shared.module"; - import { environment } from "src/environments/environment"; -import { ThemeEditorComponent } from "src/app/feature/theme/theme-editor/theme-editor.component"; -import { ColorSketchModule } from "ngx-color/sketch"; -import { FormsModule } from "@angular/forms"; -import { SurveyModule } from "src/app/feature/survey/survey.module"; - -import { LottieModule } from "ngx-lottie"; -import player from "lottie-web"; -import { NgxMatomoTrackerModule } from "@ngx-matomo/tracker"; -import { NgxMatomoRouterModule } from "@ngx-matomo/router"; -import { TourComponent } from "./feature/tour/tour.component"; import { httpInterceptorProviders } from "./shared/services/server/interceptors"; import { TemplateComponentsModule } from "./shared/components/template/template.module"; import { ContextMenuModule } from "./shared/modules/context-menu/context-menu.module"; +import { TourModule } from "./feature/tour/tour.module"; import { ErrorHandlerService } from "./shared/services/error-handler/error-handler.service"; // Note we need a separate function as it's required @@ -38,7 +36,7 @@ export function lottiePlayerFactory() { } @NgModule({ - declarations: [AppComponent, ThemeEditorComponent, TourComponent], + declarations: [AppComponent], entryComponents: [], imports: [ @@ -48,15 +46,15 @@ export function lottiePlayerFactory() { AppRoutingModule, HttpClientModule, SharedModule, - AngularFireModule.initializeApp(environment.firebaseConfig), - AngularFireAuthModule, + // Firebase + provideFirebaseApp(() => initializeApp(environment.firebaseConfig)), + provideAuth(() => getAuth()), FormsModule, - ColorSketchModule, - SurveyModule, LottieModule.forRoot({ player: lottiePlayerFactory }), // NOTE CC 2021-11-04 not sure if cache causes issues or not https://github.com/ngx-lottie/ngx-lottie/issues/115 // LottieCacheModule.forRoot(), TemplateComponentsModule, + TourModule, NgxMatomoTrackerModule.forRoot({ siteId: environment.analytics.siteId, trackerUrl: environment.analytics.endpoint, diff --git a/src/app/data/app-data.ts b/src/app/data/app-data.ts new file mode 100644 index 0000000000..bc9a461029 --- /dev/null +++ b/src/app/data/app-data.ts @@ -0,0 +1,18 @@ +import type { FlowTypes } from "data-models"; +import type { IAssetEntry } from "packages/data-models/deployment.model"; +import ASSETS_CONTENT_JSON from "src/assets/app_data/assets/contents.json"; +import SHEETS_CONTENT_JSON from "src/assets/app_data/sheets/contents.json"; +import TRANSLATIONS_CONTENT_JSON from "src/assets/app_data/translations/contents.json"; + +// Enforce type declaration for contents to avoid inferring from large file + +type ISheetContents = { + [flow_type in FlowTypes.FlowType]: { [flow_name: string]: FlowTypes.FlowTypeBase }; +}; +export const SHEETS_CONTENT_LIST = SHEETS_CONTENT_JSON as ISheetContents; + +export type IAssetContents = { [relative_path: string]: Partial }; +export const ASSETS_CONTENTS_LIST = ASSETS_CONTENT_JSON as IAssetContents; + +type ITranslationContents = { [language_code: string]: { filename: string } }; +export const TRANSLATIONS_CONTENT_LIST: ITranslationContents = TRANSLATIONS_CONTENT_JSON; diff --git a/src/app/data/constants.ts b/src/app/data/constants.ts index 4f12d61b86..b3401ca6b2 100644 --- a/src/app/data/constants.ts +++ b/src/app/data/constants.ts @@ -1,11 +1,8 @@ -import { DEFAULT_CONSTANTS } from "data-models"; +import { getDefaultAppConfig, IAppConfig } from "data-models"; import { environment } from "src/environments/environment"; import { deepMergeObjects } from "../shared/utils"; -const app_constant_overrides = (environment.deploymentConfig as any).app_constants || {}; +const app_config_overrides = (environment.deploymentConfig as any).app_config || {}; /** List of constants provided by data-models combined with deployment-specific overrides */ -export const APP_CONSTANTS: typeof DEFAULT_CONSTANTS = deepMergeObjects( - DEFAULT_CONSTANTS, - app_constant_overrides -); +export const APP_CONFIG: IAppConfig = deepMergeObjects(getDefaultAppConfig(), app_config_overrides); diff --git a/src/app/data/index.ts b/src/app/data/index.ts index b04bfcf75e..9c2355a44d 100644 --- a/src/app/data/index.ts +++ b/src/app/data/index.ts @@ -1 +1,5 @@ export * from "./constants"; +export * from "./app-data"; + +// Not used but forces angular to reload when asset jsons changed +export { DEV_COMPILE_TIME } from "../../assets/app_data"; diff --git a/src/app/feature/campaign/campaign.service.ts b/src/app/feature/campaign/campaign.service.ts index c2ed1a5964..535cc36f01 100644 --- a/src/app/feature/campaign/campaign.service.ts +++ b/src/app/feature/campaign/campaign.service.ts @@ -1,13 +1,14 @@ import { Injectable, Injector } from "@angular/core"; import { addDays, addSeconds } from "date-fns"; import { addHours, addMinutes, addWeeks, endOfDay, isAfter, isBefore, setISODay } from "date-fns"; -import { extractDynamicFields } from "packages/data-models"; +import { extractDynamicFields, IAppConfig } from "packages/data-models"; import { Subscription } from "rxjs"; -import { APP_CONSTANTS } from "src/app/data"; import { TemplateActionService } from "src/app/shared/components/template/services/instance/template-action.service"; import { TemplateTranslateService } from "src/app/shared/components/template/services/template-translate.service"; import { TemplateVariablesService } from "src/app/shared/components/template/services/template-variables.service"; import { FlowTypes } from "src/app/shared/model"; +import { AppConfigService } from "src/app/shared/services/app-config/app-config.service"; +import { AsyncServiceBase } from "src/app/shared/services/asyncService.base"; import { AppDataService } from "src/app/shared/services/data/app-data.service"; import { DataEvaluationService } from "src/app/shared/services/data/data-evaluation.service"; import { @@ -21,8 +22,6 @@ import { stringToIntegerHash, } from "src/app/shared/utils"; -const { NOTIFICATION_DEFAULTS } = APP_CONSTANTS; - type ICampaignHashmap = { [campaign_id: string]: FlowTypes.Campaign_listRow[]; }; @@ -34,10 +33,11 @@ type IScheduledNotificationsHashmap = { }; @Injectable({ providedIn: "root" }) -export class CampaignService { +export class CampaignService extends AsyncServiceBase { allCampaigns: ICampaignHashmap = {}; scheduledCampaigns: IScheduledCampaignsHashmap = {}; scheduledNotifications: IScheduledNotificationsHashmap = {}; + notificationDefaults: { title: string; text: string; time: { hour: number; minute: number } }; private _handledNotifications = {}; private _notificationUpdates$: Subscription; @@ -48,8 +48,12 @@ export class CampaignService { private localNotificationService: LocalNotificationService, private templateTranslateService: TemplateTranslateService, private appDataService: AppDataService, + private appConfigService: AppConfigService, private injector: Injector - ) {} + ) { + super("Campaigns"); + this.registerInitFunction(this.inititialise); + } /** * make a dynamic call to TemplateVariablesService as it also has handling @@ -59,7 +63,15 @@ export class CampaignService { return this.injector.get(TemplateVariablesService); } - public async init() { + private async inititialise() { + await this.ensureAsyncServicesReady([ + this.localNotificationService, + this.templateTranslateService, + this.templateVariablesService, + this.dataEvaluationService, + ]); + this.ensureSyncServicesReady([this.appConfigService]); + this.subscribeToAppConfigChanges(); await this.hackDeactivateAllNotifications(); const schedules = await this.loadCampaignSchedules(); @@ -69,13 +81,16 @@ export class CampaignService { this.scheduledCampaigns = scheduledCampaigns; this.allCampaigns = allCampaigns; - console.log("[Scheduled Campaigns]", this.scheduledCampaigns); - console.log("[All Campaigns]", this.allCampaigns); + // console.log("[Scheduled Campaigns]", this.scheduledCampaigns); + // console.log("[All Campaigns]", this.allCampaigns); await this.scheduleCampaignNotifications(); this._subscribeToNotificationUpdates(); } + public reInitialise() { + return this.inititialise(); + } /** * remove any old subscriptions, subscribe to updates from sent and interacted notifications, @@ -104,6 +119,13 @@ export class CampaignService { ); } + // TODO: Should this also be unsubscribing from existing subscriptions? + private subscribeToAppConfigChanges() { + this.appConfigService.appConfig$.subscribe((appConfig: IAppConfig) => { + this.notificationDefaults = appConfig.NOTIFICATION_DEFAULTS; + }); + } + private async handledTriggeredNotifications( notifications: ILocalNotification[] = [], trigger: FlowTypes.TemplateRowActionTrigger @@ -163,7 +185,7 @@ export class CampaignService { * Check all campaigns for those with notification schedules and evaluate * any notifications requiring scheduling */ - private async scheduleCampaignNotifications() { + public async scheduleCampaignNotifications() { const scheduled: IScheduledNotificationsHashmap = {}; for (const campaign of Object.values(this.scheduledCampaigns)) { scheduled[campaign.id] = {}; @@ -172,8 +194,8 @@ export class CampaignService { if (campaign._active) { const nextRows = await this.getNextCampaignRows(campaign.id, campaign.schedule?.batch_size); if (nextRows) { - let earliestStart = new Date(); // add new notifications + let earliestStart = new Date(); for (const nextRow of nextRows) { const schedule = await this.scheduleNotification(nextRow, campaign.id, earliestStart); scheduled[campaign.id][nextRow.id] = schedule; @@ -235,12 +257,16 @@ export class CampaignService { if (!notification_schedule) return; let { _schedule_at } = notification_schedule; + // HACK - remove markdown form title and text as not currently supported in capacitor notifications + row.text = this.hackStripNotificationMarkdown(row.text); + row.title = this.hackStripNotificationMarkdown(row.title); + const notificationSchedule: ILocalNotification = { schedule: { at: _schedule_at }, - body: row.text || NOTIFICATION_DEFAULTS.text, - largeBody: row.text || NOTIFICATION_DEFAULTS.text, + body: row.text || this.notificationDefaults.text, + largeBody: row.text || this.notificationDefaults.text, summaryText: "", - title: row.title || NOTIFICATION_DEFAULTS.title, + title: row.title || this.notificationDefaults.title, extra: { ...row, campaign_id }, id: stringToIntegerHash(row.id), }; @@ -270,9 +296,9 @@ export class CampaignService { const deactivatedNotifications = pendingNotifications.filter( (n) => n.extra.campaign_id === campaign_id ); - for (const notification of deactivatedNotifications) { - await this.localNotificationService.removeNotification(notification.id); - } + await this.localNotificationService.removeNotifications( + deactivatedNotifications.map((n) => n.id) + ); } /** @@ -283,9 +309,7 @@ export class CampaignService { */ private async hackDeactivateAllNotifications() { const pendingNotifications = this.localNotificationService.pendingNotifications$.value; - for (const notification of pendingNotifications) { - await this.localNotificationService.removeNotification(notification.id); - } + await this.localNotificationService.removeNotifications(pendingNotifications.map((n) => n.id)); } /** @@ -390,7 +414,7 @@ export class CampaignService { */ private evaluateSchedule(scheduleRow: FlowTypes.Campaign_Schedule, earliestStart?: Date) { // apply default settings - scheduleRow.time = scheduleRow.time || NOTIFICATION_DEFAULTS.time; + scheduleRow.time = scheduleRow.time || this.notificationDefaults.time; const { time, delay } = scheduleRow; const schedule: FlowTypes.Campaign_Schedule["schedule"] = scheduleRow.schedule || {}; let d = earliestStart ? new Date(earliestStart) : new Date(); @@ -461,4 +485,13 @@ export class CampaignService { const shuffleSortedRows: FlowTypes.Campaign_listRow[] = [].concat(...shuffleSortedGroups); return shuffleSortedRows; } + + /** + * Rough function to strip some commonly used markdown from strings, specifically + * `**` - bold text + * NOTE - comprehensive extraction could be carried out using something like strip-markdown or mdast + */ + private hackStripNotificationMarkdown(str = "") { + return str.replace(/\*\*/g, ""); + } } diff --git a/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.scss b/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.scss index ec3b133596..f844e39dfb 100644 --- a/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.scss +++ b/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.scss @@ -2,13 +2,13 @@ font-weight: 500; } .activated { - background: hsl(130, 40, 65); + background: hsl(130deg, 40%, 65%); } .pending { - background: hsl(40, 100, 75); + background: hsl(40deg, 100%, 75%); } .deactivated { - background: hsl(0, 100, 85); + background: hsl(0deg, 100%, 85%); } ion-list { --background: white; diff --git a/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.ts b/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.ts index f9d4c96b37..e77a654715 100644 --- a/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.ts +++ b/src/app/feature/campaign/pages/campaign-debug/campaign-debug.page.ts @@ -63,7 +63,7 @@ export class CampaignDebugPage implements OnInit { public setDebugCampaignOptIn(value: boolean) { this.templateFieldService.setField("debug_campaigns_enabled", `${value}`); this.debugCampaignsEnabled = this.templateFieldService.getField("debug_campaigns_enabled"); - this.campaignService.init(); + this.campaignService.reInitialise(); } /** diff --git a/src/app/feature/campaign/pages/campaign-debug/components/campaign-debug-row.ts b/src/app/feature/campaign/pages/campaign-debug/components/campaign-debug-row.ts index 12e1c6ec15..a48d692f59 100644 --- a/src/app/feature/campaign/pages/campaign-debug/components/campaign-debug-row.ts +++ b/src/app/feature/campaign/pages/campaign-debug/components/campaign-debug-row.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { Component, EventEmitter, Input, Output } from "@angular/core"; import { FlowTypes } from "src/app/shared/model"; @Component({ @@ -11,6 +11,8 @@ import { FlowTypes } from "src/app/shared/model";
                                                                                                                                                                                  + +
                                                                                                                                                                                  {{ row.text }}
                                                                                                                                                                                  @@ -137,14 +139,12 @@ import { FlowTypes } from "src/app/shared/model"; `, ], }) -export class CampaignDebugRowComponent implements OnInit { +export class CampaignDebugRowComponent { @Input() row: FlowTypes.Campaign_listRow; @Output() manageVariablesClicked = new EventEmitter(); @Output() sendNotificationClicked = new EventEmitter(); constructor() {} - ngOnInit() {} - public logDebugInfo(row: FlowTypes.Campaign_listRow) { console.group(row.id); console.log(row); diff --git a/src/app/feature/campaign/pages/campaign-debug/components/campaign-schedule-debug-row.ts b/src/app/feature/campaign/pages/campaign-debug/components/campaign-schedule-debug-row.ts index 1c12c9326d..635d3b3f9d 100644 --- a/src/app/feature/campaign/pages/campaign-debug/components/campaign-schedule-debug-row.ts +++ b/src/app/feature/campaign/pages/campaign-debug/components/campaign-schedule-debug-row.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { Component, EventEmitter, Input, Output } from "@angular/core"; import { FlowTypes } from "src/app/shared/model"; import { CampaignService } from "../../../campaign.service"; @@ -146,15 +146,13 @@ import { CampaignService } from "../../../campaign.service"; `, ], }) -export class CampaignScheduleDebugRowComponent implements OnInit { +export class CampaignScheduleDebugRowComponent { @Input() row: FlowTypes.Campaign_Schedule; @Output() manageVariablesClicked = new EventEmitter(); @Output() triggerActionsClicked = new EventEmitter(); @Output() scheduleNotificationClicked = new EventEmitter(); constructor(public campaignService: CampaignService) {} - ngOnInit() {} - public logDebugInfo(row: FlowTypes.Campaign_Schedule) { console.group(row.id); console.log(row); diff --git a/src/app/feature/campaign/pages/campaign-debug/components/campaign-variables-editor.ts b/src/app/feature/campaign/pages/campaign-debug/components/campaign-variables-editor.ts index 10a4fe52b5..a43fdb300d 100644 --- a/src/app/feature/campaign/pages/campaign-debug/components/campaign-variables-editor.ts +++ b/src/app/feature/campaign/pages/campaign-debug/components/campaign-variables-editor.ts @@ -34,7 +34,7 @@ import { TemplateFieldService } from "src/app/shared/components/template/service @@ -45,7 +45,7 @@ import { TemplateFieldService } from "src/app/shared/components/template/service type="number" [value]="dbData.app_day" style="text-align: right" - (ionBlur)="setAppLaunchData(firstLaunch.value, appDay.value)" + (ionBlur)="setAppLaunchData($any(firstLaunch.value), appDay.value)" >

                                                                                                                                                                                  Field Variables

                                                                                                                                                                                  @@ -56,12 +56,12 @@ import { TemplateFieldService } from "src/app/shared/components/template/service #fieldFirst placeholder="Set First" [value]="row.current_value_first" - (ionChange)="setField(row.field, select.value, fieldFirst.value)" + (ionChange)="setField(row.field, select.value, $any(fieldFirst.value))" > diff --git a/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.html b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.html new file mode 100644 index 0000000000..46ebbebc10 --- /dev/null +++ b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.html @@ -0,0 +1,24 @@ +
                                                                                                                                                                                  + + Navigation + + + + Page Width + + + +
                                                                                                                                                                                  diff --git a/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.scss b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.scss new file mode 100644 index 0000000000..2a030ecaa7 --- /dev/null +++ b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.scss @@ -0,0 +1,40 @@ +.toolbar-container { + display: flex; + gap: 8px; +} +.suffix { + opacity: 0.5; + &.stacked-label { + position: absolute; + right: 16px; + bottom: 4px; + } +} + +ion-item { + --background: white; + --border-color: var(--color-primary); + --border-width: 1px; + --min-height: 100%; + --padding-start: 8px; + --inner-padding-end: 8px; +} +ion-checkbox { + margin: 8px 0; +} + +ion-range.width-select { + --bar-height: 6px; + padding: 0 16px; + margin-bottom: -4px; +} + +// Hack - label sizing a pain with slider and checkboxes inlined +ion-label.tool-label { + font-size: 14px; + line-height: 14px; + overflow: inherit; + margin: 12px 0 0 0; + transform: none; + -webkit-transform: none; +} diff --git a/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.spec.ts b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.spec.ts new file mode 100644 index 0000000000..802131a3aa --- /dev/null +++ b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { FeedbackToolbarComponent } from "./feedback-toolbar.component"; + +describe("FeedbackToolbarComponent", () => { + let component: FeedbackToolbarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [FeedbackToolbarComponent], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(FeedbackToolbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.ts b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.ts new file mode 100644 index 0000000000..7caa33209b --- /dev/null +++ b/src/app/feature/feedback/components/feedback-toolbar/feedback-toolbar.component.ts @@ -0,0 +1,24 @@ +import { AfterViewInit, Component, OnDestroy } from "@angular/core"; +import { FeedbackService } from "../../feedback.service"; + +@Component({ + selector: "plh-feedback-toolbar", + templateUrl: "./feedback-toolbar.component.html", + styleUrls: ["./feedback-toolbar.component.scss"], +}) +export class FeedbackToolbarComponent implements AfterViewInit, OnDestroy { + constructor(public feedbackService: FeedbackService) {} + + ngAfterViewInit(): void { + const { contentPageWidth } = this.feedbackService.options; + this.feedbackService.setContentPageWidth(contentPageWidth); + this.feedbackService.setEnabled(true); + this.feedbackService.setNavigationEnabled(true); + } + + ngOnDestroy() { + this.feedbackService.setContentPageWidth(null); + this.feedbackService.setEnabled(false); + this.feedbackService.setNavigationEnabled(true); + } +} diff --git a/src/app/feature/feedback/components/index.ts b/src/app/feature/feedback/components/index.ts new file mode 100644 index 0000000000..eaa734a72d --- /dev/null +++ b/src/app/feature/feedback/components/index.ts @@ -0,0 +1,14 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; + +import { FeedbackToolbarComponent } from "./feedback-toolbar/feedback-toolbar.component"; + +@NgModule({ + imports: [CommonModule, FormsModule, IonicModule], + exports: [FeedbackToolbarComponent], + declarations: [FeedbackToolbarComponent], + providers: [], +}) +export class FeedbackComponentsModule {} diff --git a/src/app/feature/feedback/feedback.actions.ts b/src/app/feature/feedback/feedback.actions.ts deleted file mode 100644 index 02eb96137c..0000000000 --- a/src/app/feature/feedback/feedback.actions.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Injectable } from "@angular/core"; -import { EventService } from "src/app/shared/services/event/event.service"; -import { FeedbackService } from "./feedback.service"; - -export namespace IFeedbackAction { - export type namespace = "FEEDBACK"; - export interface handlers { - disable: () => void; - enable: () => void; - open: ([templatename]) => void; - send: ([data]) => void; - } - export type name = keyof handlers; -} - -@Injectable({ providedIn: "root" }) -/** Respond to events triggered from template actions */ -export class FeedbackActionsService { - constructor(private feedbackService: FeedbackService, private eventService: EventService) { - this.registerActionHandlers(); - } - private actionHandlers: IFeedbackAction.handlers = { - disable: () => this.feedbackService.setReviewMode(false), - enable: () => this.feedbackService.setReviewMode(true), - open: ([templatename]) => { - return this.feedbackService.runFeedbackTemplate(templatename); - }, - send: ([data]) => { - const metadata = this.feedbackService.generateFeedbackMetadata(); - return this.feedbackService.saveFeedback({ metadata, user_feedback: data, additional: {} }); - }, - }; - - /** Trigger actions in response to published events */ - private registerActionHandlers() { - this.eventService.all("FEEDBACK").subscribe((event) => { - const name: IFeedbackAction.name = event.subtopic; - const handler = this.actionHandlers[name]; - if (!handler) { - console.error("No feedback event registered for subtopic", event.subtopic, event); - return; - } - try { - const result = handler(event.payload); - return this.eventService.respond(event.eventId, result); - } catch (error) { - console.error("Event handling error", { error, event }); - return this.eventService.respond(event.eventId, undefined); - } - }); - } -} diff --git a/src/app/feature/feedback/feedback.module.ts b/src/app/feature/feedback/feedback.module.ts index aa03f3aa92..5b6ea42d6f 100644 --- a/src/app/feature/feedback/feedback.module.ts +++ b/src/app/feature/feedback/feedback.module.ts @@ -4,8 +4,8 @@ import { FeedbackDebugPage } from "./pages/feedback-debug.page"; import { IonicModule } from "@ionic/angular"; import { FormsModule } from "@angular/forms"; import { FeedbackRoutingModule } from "./feedback-routing.module"; -import { FeedbackActionsService } from "./feedback.actions"; import { TemplateComponentsModule } from "src/app/shared/components/template/template.module"; +import { FeedbackComponentsModule } from "./components"; @NgModule({ imports: [ @@ -14,12 +14,9 @@ import { TemplateComponentsModule } from "src/app/shared/components/template/tem FormsModule, FeedbackRoutingModule, TemplateComponentsModule, + FeedbackComponentsModule, ], declarations: [FeedbackDebugPage], exports: [], }) -export class FeedbackModule { - constructor(feedbackActions: FeedbackActionsService) { - // register events via constructor when module imported - } -} +export class FeedbackModule {} diff --git a/src/app/feature/feedback/feedback.service.ts b/src/app/feature/feedback/feedback.service.ts index 97b2be3d9e..a3d4906825 100644 --- a/src/app/feature/feedback/feedback.service.ts +++ b/src/app/feature/feedback/feedback.service.ts @@ -1,8 +1,13 @@ import { Injectable } from "@angular/core"; - +import { Router } from "@angular/router"; import { ToastController, ToastOptions } from "@ionic/angular"; import { BehaviorSubject } from "rxjs"; import { Device, DeviceInfo } from "@capacitor/device"; +import { takeWhile } from "rxjs/operators"; +import { fromEvent } from "rxjs"; + +import { FlowTypes, IAppConfig } from "data-models"; + import { ContextMenuService } from "src/app/shared/modules/context-menu/context-menu.service"; import { IContextMenuAction, @@ -14,6 +19,7 @@ import { generateTimestamp } from "src/app/shared/utils"; import { environment } from "src/environments/environment"; import { TemplateFieldService } from "src/app/shared/components/template/services/template-field.service"; import { DbService } from "src/app/shared/services/db/db.service"; +import { DBSyncService } from "src/app/shared/services/db/db-sync.service"; import { IFeedbackContextMenuButton, IFeedbackEntry, @@ -22,19 +28,45 @@ import { IFeedbackMetadata, ITemplateTargetEntry, } from "./feedback.types"; -import { APP_CONSTANTS } from "src/app/data"; - -const { FEEDBACK_MODULE_DEFAULTS } = APP_CONSTANTS; - -const FEEDBACK_BUTTONS: IFeedbackContextMenuButton[] = FEEDBACK_MODULE_DEFAULTS.buttons; +import { RouterDisableGuard, RouterEnableGuard } from "./routeGuards"; +import { AppConfigService } from "src/app/shared/services/app-config/app-config.service"; +import { ThemeService } from "../theme/services/theme.service"; +import { SkinService } from "src/app/shared/services/skin/skin.service"; +import { + IActionHandlers, + IActionId, + TemplateActionRegistry, +} from "src/app/shared/components/template/services/instance/template-action.registry"; +import { SyncServiceBase } from "src/app/shared/services/syncService.base"; @Injectable({ providedIn: "root", }) -export class FeedbackService { +export class FeedbackService extends SyncServiceBase { public isReviewingMode$ = new BehaviorSubject(false); + public options = { + contentPageWidth: 480, + navigationEnabled: true, + enabled: true, + }; + + private feedbackContext: { + modal?: HTMLIonModalElement; + additional?: IFeedbackEntryAdditional; + ev?: PointerEvent; + } = {}; + private deviceInfo: DeviceInfo; + /** Track content el style to allow revert on component destroy */ + private initialContentStyle?: Partial; + + /** Track template action defaults to restore after disable */ + private actionListDefault: Partial; + + feedbackModuleDefaults: IAppConfig["FEEDBACK_MODULE_DEFAULTS"]; + appStrings: IAppConfig["APP_STRINGS"]; + feedbackButtons: IFeedbackContextMenuButton[]; constructor( private contextMenuService: ContextMenuService, @@ -42,27 +74,131 @@ export class FeedbackService { private templateFieldService: TemplateFieldService, private userMetaService: UserMetaService, private toastController: ToastController, - private dbService: DbService + private dbService: DbService, + private dbSyncService: DBSyncService, + private appConfigService: AppConfigService, + private router: Router, + private themeService: ThemeService, + private skinService: SkinService, + private templateActionRegistry: TemplateActionRegistry ) { + super("Feedback"); + this.subscribeToAppConfigChanges(); // retrieve device info for passing in metadata Device.getInfo().then((deviceInfo) => { this.deviceInfo = deviceInfo; }); // Handle enabling/disabling context menu actions depending on whether review mode enabled this.isReviewingMode$.subscribe((isReviewMode) => { + this._WIP_trackContentClicks(isReviewMode); this.setContextMenuActions(isReviewMode); }); + this.registerFeedbackActions(); + } + + /** + * Register actions availble within feedback child actions + * @example + * ``` + * click | feedback : cancel + * ``` + * ``` + * click | feedback : submit : @local.some_feedback + * ``` + */ + private registerFeedbackActions() { + this.templateActionRegistry.register({ + feedback: async ({ args }) => { + const [actionId, ...feedbackArgs] = args; + const childActions = { + cancel: () => this.clearFeedback(), + submit: async () => { + const user_feedback = feedbackArgs[0]; + const metadata = this.generateFeedbackMetadata(); + const { additional, ev } = this.feedbackContext; + const feedbackEntry: IFeedbackEntry = { metadata, user_feedback, additional }; + if (ev) { + feedbackEntry.additional.templateTarget = this.generateFeedbackTemplateMeta(ev); + } + await this.saveFeedback(feedbackEntry); + this.clearFeedback(); + }, + open: () => this.sidebarOpen(), + close: () => this.sidebarClose(), + template: ([templatename]) => { + return this.runFeedbackTemplate(templatename); + }, + enable: () => this.setEnabled(true), + disable: () => this.setEnabled(false), + // TODO - Possibly legacy actions (?) to confirm if required + send: ([data]) => { + const metadata = this.generateFeedbackMetadata(); + return this.saveFeedback({ metadata, user_feedback: data, additional: {} }); + }, + }; + if (!(actionId in childActions)) { + console.error("Feedback does not have action", actionId); + return; + } + return childActions[actionId](); + }, + }); + } + + private clearFeedback() { + const { modal } = this.feedbackContext; + if (modal) { + modal.dismiss(); + } + this.feedbackContext = {}; } - public async setReviewMode(isEnabled = false) { + /** + * Work in progress - provide template and component information on click + * in feedback mode + */ + private _WIP_trackContentClicks(isReviewMode: boolean) { + if (isReviewMode) { + fromEvent(document, "click") + .pipe(takeWhile(() => this.isReviewingMode$.value === true)) + .subscribe((e) => { + // const meta = this.generateFeedbackTemplateMeta(e); + }); + } + } + + private subscribeToAppConfigChanges() { + this.appConfigService.appConfig$.subscribe((appConfig: IAppConfig) => { + this.feedbackModuleDefaults = appConfig.FEEDBACK_MODULE_DEFAULTS; + this.appStrings = appConfig.APP_STRINGS; + this.feedbackButtons = appConfig.FEEDBACK_MODULE_DEFAULTS.buttons; + }); + } + + public async setEnabled(isEnabled = false) { + this.options.enabled = isEnabled; if (this.isReviewingMode$.value !== isEnabled) { this.isReviewingMode$.next(isEnabled); } } + public async sidebarOpen() { + await this.setSidebarField(true); + this.router.navigate([{ outlets: { sidebar: ["feedback"] } }]); + } + public async sidebarClose() { + await this.setSidebarField(false); + this.router.navigate([{ outlets: { sidebar: [] } }]); + } + + private async setSidebarField(isOpen: boolean) { + const { sidebar_open_field } = this.feedbackModuleDefaults; + await this.templateFieldService.setField(sidebar_open_field, `${isOpen}`); + } + /** * Create a standalone popup of the provided template and use to collect user feedback. - * On completed emit retrieve any passed values, combine with metadata and submit to server + * Modal dismiss and feedback retrieval will be handled by the feedback actions handlers * @param additional optional additional user data to be included alongside generated metadata * @param ev pointer event captured if context menu created via pointer action * (e.g. right-click/long-press/text-select). Will be used to generate specific component metadata @@ -72,34 +208,105 @@ export class FeedbackService { additional: IFeedbackEntryAdditional = {}, ev?: PointerEvent ) { - const templateData = await this.templateService.runStandaloneTemplate(templatename, { + this.setEnabled(false); + const { modal } = await this.templateService.runStandaloneTemplate(templatename, { fullscreen: false, + waitForDismiss: false, }); - // Submit feedback if popup dismissed by emit:completed event - const { emit_data, emit_value } = templateData || {}; - if (emit_value === "completed") { - const metadata = this.generateFeedbackMetadata(); - const feedbackEntry: IFeedbackEntry = { metadata, user_feedback: emit_data, additional }; - if (ev) { - feedbackEntry.additional.templateTarget = this.generateFeedbackTemplateMeta(ev); - } - await this.saveFeedback(feedbackEntry); - } + + this.feedbackContext = { modal, ev, additional }; + await modal.onDidDismiss(); + this.setEnabled(true); } - /** Save feedback to local db. Will automatically be synced to server DB */ + /** Save feedback to local db. Will sync on dmeand */ public async saveFeedback(entry: IFeedbackEntry) { const dbEntry: IFeedbackEntryDB = { ...this.dbService.generateDBMeta(), ...entry }; await this.dbService.table("feedback").add(dbEntry); - // Show toast after small delay - setTimeout(async () => { - await this.presentToast("Thank you for your feedback"); - }, 1000); + } + public async syncFeedback() { + const syncTableResponse = await this.dbSyncService.syncTable("feedback"); + if (syncTableResponse.error) { + await this.presentToast(this.appStrings.feedback_unsent_text, { duration: 5000 }); + } else { + await this.presentToast(this.appStrings.feedback_sent_text); + } + } + public async deleteFeedback(id: number) { + await this.dbService.table("feedback").delete(id); + } + + /** Set the width of the main content */ + public setContentPageWidth(pageWidth?: number) { + const contentEl = document.getElementById("main"); + if (!contentEl) { + console.error("Main content element not found, cannot set width"); + return; + } + + if (!this.initialContentStyle) { + const { width, maxWidth, margin } = contentEl.style; + this.initialContentStyle = { width, maxWidth, margin }; + } + if (pageWidth) { + this.options.contentPageWidth = pageWidth; + contentEl.style.width = `${pageWidth}px`; + contentEl.style.maxWidth = `${pageWidth}px`; + contentEl.style.margin = `auto`; + } else { + const { width, maxWidth, margin } = this.initialContentStyle; + contentEl.style.width = width; + contentEl.style.maxWidth = maxWidth; + contentEl.style.margin = margin; + } + } + + /** Progamatically set router guards to enable/disable navigation */ + public setNavigationEnabled(enabled?: boolean) { + this.options.navigationEnabled = enabled; + this.router.resetConfig( + this.router.config.map((r) => { + if (!r.redirectTo) { + r.canActivate = enabled ? [RouterEnableGuard] : [RouterDisableGuard]; + } + return r; + }) + ); + // also update actions to match navigation state (e.g. prevent popup and set actions) + this.setActionsEnabled(enabled); + } + + /** + * When feedback mode is enabled we don't want interactions with elements to trigger any actions + * Actions can be registered in 2 different ways (on global registry or within an action service instance), + * so we need to both backup/override all global actions as well as create/delete global overrides for local actions + */ + public setActionsEnabled(enabled?: boolean) { + const actionsIDs = [...FlowTypes.ACTION_ID_LIST]; + if (enabled) { + if (this.actionListDefault) { + // remove global overrides and restore previous global + this.templateActionRegistry.unregister(actionsIDs); + this.templateActionRegistry.register(this.actionListDefault, true); + } + } else { + // backup global and override all actions with dummy list + const existingActions = this.templateActionRegistry.list(); + this.actionListDefault = existingActions; + const dummyActionList = {}; + const allowedActions: IActionId[] = ["feedback", "set_local"]; + for (const actionID of actionsIDs) { + if (!allowedActions.includes(actionID)) { + dummyActionList[actionID] = () => console.info("Feedback action disabled", actionID); + } + } + this.templateActionRegistry.register(dummyActionList, true); + } } /** Handle registration of all defined feedback actions to the relevant context menus */ private setContextMenuActions(isReviewMode: boolean) { - for (const feedbackButton of FEEDBACK_BUTTONS) { + for (const feedbackButton of this.feedbackButtons) { const action: IContextMenuAction = { ...feedbackButton, actionHandler: async (ev, data) => @@ -126,11 +333,11 @@ export class FeedbackService { contextData: IContextMenuActionData = {} ) { // set selected text to field for access in templates - const { selected_text_field } = FEEDBACK_MODULE_DEFAULTS; + const { selected_text_field } = this.feedbackModuleDefaults; if (contextData?.selectedText) { await this.templateFieldService.setField(selected_text_field, contextData.selectedText); } - // launch feedback template + // launch feedback template, disable feedback mode to prevent actions on feedback poup const additional = { ...contextData, id: feedbackButton.id }; await this.runFeedbackTemplate(feedbackButton.displayedTemplate, additional, ev); @@ -142,7 +349,7 @@ export class FeedbackService { * Generate a path mapping to clicked template element */ private generateFeedbackTemplateMeta(ev: PointerEvent) { - const elementPath: HTMLElement[] = (ev as any).path; + const elementPath = this.getElementPath(ev.target as HTMLElement); // filter just to include template components and containers const templatePath = elementPath.filter((e) => ["plh-template-component", "plh-template-container"].includes(e.localName) @@ -176,6 +383,8 @@ export class FeedbackService { timestamp: generateTimestamp(), app_version: environment.version, app_deployment_name: environment.deploymentName, + app_theme: this.themeService.getCurrentTheme(), + app_skin: this.skinService.getActiveSkinName(), }; return metadata; } @@ -187,6 +396,17 @@ export class FeedbackService { ...opts, }); toast.present(); + await toast.onDidDismiss(); + } + + /** Generate an array of all nested elements from top html to a given element */ + private getElementPath(element: HTMLElement) { + const parents: HTMLElement[] = []; + while (element) { + parents.unshift(element); + element = element.parentElement; + } + return parents; } } diff --git a/src/app/feature/feedback/feedback.types.ts b/src/app/feature/feedback/feedback.types.ts index 7f5fb728a4..a51af15473 100644 --- a/src/app/feature/feedback/feedback.types.ts +++ b/src/app/feature/feedback/feedback.types.ts @@ -33,6 +33,8 @@ export interface IFeedbackMetadata { timestamp: string; app_version: string; app_deployment_name: string; // deployment name + app_theme: string; + app_skin: string; templateTarget?: ITemplateTargetEntry[]; } diff --git a/src/app/feature/feedback/pages/feedback-debug.page.html b/src/app/feature/feedback/pages/feedback-debug.page.html index 26fabf61b2..ef279a8fae 100644 --- a/src/app/feature/feedback/pages/feedback-debug.page.html +++ b/src/app/feature/feedback/pages/feedback-debug.page.html @@ -1,19 +1,24 @@ -
                                                                                                                                                                                  +

                                                                                                                                                                                  Feedback

                                                                                                                                                                                  - - Enabled - - + + + close +
                                                                                                                                                                                  + + +
                                                                                                                                                                                  + + - +

                                                                                                                                                                                  + Instructions

                                                                                                                                                                                  + Highlight any text to suggest changes, or right click to provide general feedback on a page +


                                                                                                                                                                                  +

                                                                                                                                                                                  Database Pending ({{feedbackPending.length}})

                                                                                                                                                                                  Sync @@ -37,10 +42,10 @@

                                                                                                                                                                                  Database Sent ({{feedbackSent.length}})

                                                                                                                                                                                  {{feedback.user_feedback}}
                                                                                                                                                                                  {{feedback._created}}
                                                                                                                                                                                  +
                                                                                                                                                                                  + {{feedback.additional | json}} +
                                                                                                                                                                                  -
                                                                                                                                                                                  - {{feedback.additional | json}} -
                                                                                                                                                                                  Database Sent ({{feedbackSent.length}})

                                                                                                                                                                                (click)="logFeedback(feedback)" >Log + Delete
                                                                                                                                                                              • diff --git a/src/app/feature/feedback/pages/feedback-debug.page.ts b/src/app/feature/feedback/pages/feedback-debug.page.ts index 923253623d..e0626aad34 100644 --- a/src/app/feature/feedback/pages/feedback-debug.page.ts +++ b/src/app/feature/feedback/pages/feedback-debug.page.ts @@ -1,8 +1,6 @@ -import { Component, OnInit } from "@angular/core"; -import { Subject } from "packages/api/node_modules/rxjs"; -import { interval } from "rxjs"; +import { Component, OnDestroy, OnInit } from "@angular/core"; +import { interval, Subject } from "rxjs"; import { debounce, takeUntil } from "rxjs/operators"; -import { DBSyncService } from "src/app/shared/services/db/db-sync.service"; import { DbService } from "src/app/shared/services/db/db.service"; import { FeedbackService } from "../feedback.service"; import { IFeedbackEntryDB } from "../feedback.types"; @@ -11,19 +9,15 @@ import { IFeedbackEntryDB } from "../feedback.types"; templateUrl: "./feedback-debug.page.html", styleUrls: ["./feedback-debug.page.scss"], }) -export class FeedbackDebugPage implements OnInit { - private destroyed$ = new Subject(); +export class FeedbackDebugPage implements OnInit, OnDestroy { + private componentDestroyed$ = new Subject(); public feedbackPending: IFeedbackEntryDB[] = []; public feedbackSent: IFeedbackEntryDB[] = []; - constructor( - public feedbackService: FeedbackService, - private dbService: DbService, - private dbSyncService: DBSyncService - ) {} + constructor(public feedbackService: FeedbackService, private dbService: DbService) {} ngOnDestroy() { - this.destroyed$.next(true); - this.destroyed$.unsubscribe(); + this.componentDestroyed$.next(true); + this.componentDestroyed$.unsubscribe(); } async ngOnInit() { @@ -31,7 +25,7 @@ export class FeedbackDebugPage implements OnInit { this.dbService .table("feedback") .changes$.pipe( - takeUntil(this.destroyed$), + takeUntil(this.componentDestroyed$), debounce(() => interval(500)) ) .subscribe(() => this.loadDBFeedback()); @@ -41,7 +35,11 @@ export class FeedbackDebugPage implements OnInit { console.log(feedback); } public async syncFeedback() { - await this.dbSyncService.syncTable("feedback"); + await this.feedbackService.syncFeedback(); + } + public async deleteFeedback(feedback: IFeedbackEntryDB) { + await this.feedbackService.deleteFeedback(feedback.id); + await this.loadDBFeedback(); } private async loadDBFeedback() { diff --git a/src/app/feature/feedback/routeGuards.ts b/src/app/feature/feedback/routeGuards.ts new file mode 100644 index 0000000000..33ff57c19d --- /dev/null +++ b/src/app/feature/feedback/routeGuards.ts @@ -0,0 +1,16 @@ +import { Injectable } from "@angular/core"; +import { CanActivate } from "@angular/router"; + +@Injectable({ providedIn: "root" }) +export class RouterDisableGuard implements CanActivate { + canActivate() { + return false; + } +} + +@Injectable({ providedIn: "root" }) +export class RouterEnableGuard implements CanActivate { + canActivate() { + return true; + } +} diff --git a/src/app/feature/notification/pages/notifications-debug/components/notification-debug-interacted-row.component.ts b/src/app/feature/notification/pages/notifications-debug/components/notification-debug-interacted-row.component.ts index a140bc38e1..d42f0c5593 100644 --- a/src/app/feature/notification/pages/notifications-debug/components/notification-debug-interacted-row.component.ts +++ b/src/app/feature/notification/pages/notifications-debug/components/notification-debug-interacted-row.component.ts @@ -10,9 +10,9 @@ import { ILocalNotificationInteractionDB } from "src/app/shared/services/notific
                                                                                                                                                                                - {{ notification.notification_meta.title }} + {{ notification.notification_meta?.title }}
                                                                                                                                                                                -
                                                                                                                                                                                {{ notification.notification_meta.id }}
                                                                                                                                                                                +
                                                                                                                                                                                {{ notification.notification_meta?.id }}
                                                                                                                                                                                @@ -31,7 +31,7 @@ import { ILocalNotificationInteractionDB } from "src/app/shared/services/notific
                                                                                                                                                                                -
                                                                                                                                                                                {{ notification.notification_meta.text }}
                                                                                                                                                                                +
                                                                                                                                                                                {{ notification.notification_meta?.text }}
                                                                                                                                                                                diff --git a/src/app/feature/notification/pages/notifications-debug/components/notification-debug-row.component.ts b/src/app/feature/notification/pages/notifications-debug/components/notification-debug-row.component.ts index 16ef8669ee..00df3d43b7 100644 --- a/src/app/feature/notification/pages/notifications-debug/components/notification-debug-row.component.ts +++ b/src/app/feature/notification/pages/notifications-debug/components/notification-debug-row.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { Component, EventEmitter, Input, Output } from "@angular/core"; import { timer } from "rxjs"; import { map, take } from "rxjs/operators"; import { @@ -57,7 +57,7 @@ import { // Notification interacted styleUrls: ["./notification-debug-row.scss"], }) -export class NotificationDebugRowComponent implements OnInit { +export class NotificationDebugRowComponent { public previewCountdown: number; @Input() notification: ILocalNotification; @@ -65,8 +65,6 @@ export class NotificationDebugRowComponent implements OnInit { constructor(public localNotificationService: LocalNotificationService) {} - ngOnInit() {} - /** * Reschedule a notification to be triggered after 2s * Create a countdown timer to inform the user of the pending notification diff --git a/src/app/feature/notification/pages/notifications-debug/notifications-debug.page.html b/src/app/feature/notification/pages/notifications-debug/notifications-debug.page.html index 6b43e1ef00..2856ca0f1b 100644 --- a/src/app/feature/notification/pages/notifications-debug/notifications-debug.page.html +++ b/src/app/feature/notification/pages/notifications-debug/notifications-debug.page.html @@ -43,7 +43,7 @@

                                                                                                                                                                                Sent Notifications

                                                                                                                                                                                Skip Intro -
                                                                                                                                                                                -
                                                                                                                                                                                - -

                                                                                                                                                                                Bringing up teenagers is hard

                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                - -

                                                                                                                                                                                You are the best parent your teen could have

                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                - -

                                                                                                                                                                                Join the 169 million parents who have used our resources

                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                Powered by Parenting for Lifelong Health
                                                                                                                                                                                -
                                                                                                                                                                                - - - -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                - `, - styles: [ - ` - p { - font-size: 20px; - } - - .section-container { - position: relative; - width: 300px; - margin-top: 15%; - margin-left: auto; - margin-right: auto; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - } - .partner-logos { - width: 100%; - margin-top: 2em; - display: flex; - flex-grow: 1; - flex-direction: column; - align-items: center; - justify-content: center; - } - .partner-logos > img { - max-width: 200px; - margin-bottom: 30px; - } - section { - position: absolute; - top: 0; - left: 0; - opacity: 0; - width: 100%; - display: flex; - flex-grow: 1; - flex-direction: column; - align-items: center; - justify-content: center; - } - section > img { - max-width: 200px; - } - .skip-button { - position: absolute; - top: 0; - right: 0; - opacity: 0.3; - } - - /* For short phone screen */ - @media only screen and (max-width: 500px) and (max-height: 500px) { - .partner-logos > img { - width: 80px; - margin-bottom: 10px; - } - } - - /* For short modal */ - @media only screen and (min-width: 600px) and (min-height: 500px) and (max-height: 770px) { - .partner-logos > img { - width: 110px; - margin-bottom: 20px; - } - } - `, - ], -}) -/** - * The Intro Survey shows a set of static images to function like a splash screen - * It currently does not take any survey inputs, but uses the survey module to avoid code duplication - */ -export class IntroSplashSurveyComponent implements OnInit { - // local tracker for which sections have been shown - fadeSection = []; - // durations to display each faded section - fadeTimes = [3500, 4000, 3500, 5000]; - private _isDismissed = false; - - constructor(private modalCtrl: ModalController) {} - - ngOnInit(): void { - this.runFade(); - } - /** - * Iterate over each section for display, showing for - * a defined period of time before fading out and moving - * on to the next - */ - private async runFade() { - let i = 0; - for (let fadeTime of this.fadeTimes) { - this.fadeSection[i] = "in"; - // wait specied time plus additional animation time - await this._wait(fadeTime + 1500); - this.fadeSection[i] = "out"; - i++; - } - // modal may have already been dismissed, so check it exists before attempting again - if (!this._isDismissed) { - await this.modalCtrl.dismiss({ _completed: false }); - } - } - skipIntro() { - // repeat intro in the future so set completed variable to false - this._isDismissed = true; - this.modalCtrl.dismiss({ _completed: false }); - } - private _wait(ms: number) { - return new Promise((resolve) => - setTimeout(() => { - resolve(true); - }, ms) - ); - } -} -/** - * Export in default survey format so can be called from - * survey service - */ -const IntroSplashSurvey: ISurvey = { - surveyId: "intro_splash", - surveyCustomComponent: IntroSplashSurveyComponent, -}; -export default IntroSplashSurvey; diff --git a/src/app/feature/survey/types/survey.types.ts b/src/app/feature/survey/types/survey.types.ts deleted file mode 100644 index 3369361736..0000000000 --- a/src/app/feature/survey/types/survey.types.ts +++ /dev/null @@ -1,18 +0,0 @@ -export interface ISurvey { - surveyId: string; - /** - * Surveys can also be defined via custom components for fully bespoke surveys - * This must have a corresponding custom form definition also - */ - surveyCustomComponent: any; -} - -export interface ISurveyResponse { - _isCompleted: boolean; - _lastModified: ISOString; - surveyId: string; - values: any; - version: number; -} - -type ISOString = string; diff --git a/src/app/feature/template/pages/component/component.module.ts b/src/app/feature/template/pages/component/component.module.ts new file mode 100644 index 0000000000..67787ada6f --- /dev/null +++ b/src/app/feature/template/pages/component/component.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; + +import { IonicModule } from "@ionic/angular"; + +import { TemplateComponentsModule } from "src/app/shared/components/template/template.module"; +import { ComponentPage } from "./component.page"; +import { RouterModule, Routes } from "@angular/router"; + +const routes: Routes = [ + { + path: "", + component: ComponentPage, + }, + { + path: ":componentName", + component: ComponentPage, + }, +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + IonicModule, + RouterModule.forChild(routes), + TemplateComponentsModule, + ], + exports: [RouterModule], + declarations: [ComponentPage], +}) +export class TemplateComponentModule {} diff --git a/src/app/feature/template/pages/component/component.page.html b/src/app/feature/template/pages/component/component.page.html new file mode 100644 index 0000000000..862e6dda21 --- /dev/null +++ b/src/app/feature/template/pages/component/component.page.html @@ -0,0 +1,19 @@ + + +

                                                                                                                                                                                {{selectedComponent}}

                                                                                                                                                                                +
                                                                                                                                                                                + + + + + + + {{component.name}} + + + + diff --git a/src/app/feature/template/pages/component/component.page.scss b/src/app/feature/template/pages/component/component.page.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/feature/template/pages/component/component.page.spec.ts b/src/app/feature/template/pages/component/component.page.spec.ts new file mode 100644 index 0000000000..11a9650c3e --- /dev/null +++ b/src/app/feature/template/pages/component/component.page.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { ComponentPage } from "./component.page"; + +describe("ComponentPage", () => { + let component: ComponentPage; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ComponentPage], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(ComponentPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/feature/template/pages/component/component.page.ts b/src/app/feature/template/pages/component/component.page.ts new file mode 100644 index 0000000000..9d637e0c70 --- /dev/null +++ b/src/app/feature/template/pages/component/component.page.ts @@ -0,0 +1,51 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { TEMPLATE_COMPONENT_MAPPING } from "src/app/shared/components/template/components"; +import { AppDataService } from "src/app/shared/services/data/app-data.service"; + +interface ITemplateComponent { + name: string; + /** rendered component import (not currently displayed) */ + component: any; + /** Component example template name */ + template?: string; +} + +@Component({ + selector: "template-component-page", + templateUrl: "./component.page.html", + styleUrls: ["./component.page.scss"], +}) +export class ComponentPage implements OnInit { + selectedComponent: ITemplateComponent; + components: ITemplateComponent[] = []; + + constructor(private route: ActivatedRoute, private appDataService: AppDataService) {} + + ngOnInit() { + this.selectedComponent = this.route.snapshot.params.componentName; + const componentTemplates = this.getComponentTemplates(); + this.components = Object.entries(TEMPLATE_COMPONENT_MAPPING) + .filter(([_, component]) => component !== null) + .map(([name, component]) => ({ name, component, template: componentTemplates[name] })) + .sort((a, b) => (a.name > b.name ? 1 : -1)); + } + + setSelectedComponent(name: string) { + const selectedComponent = this.components.find((c) => c.name === name); + this.selectedComponent = selectedComponent; + } + + /** List all local templates defined for components, prefixed `comp_` */ + private getComponentTemplates() { + const componentTemplates: Record = {}; + const allTemplates = this.appDataService.listSheetsByType("template"); + for (const template of allTemplates) { + if (template.flow_name.startsWith("comp_")) { + const componentName = template.flow_name.replace("comp_", ""); + componentTemplates[componentName] = `/template/${template.flow_name}`; + } + } + return componentTemplates; + } +} diff --git a/src/app/feature/template/template.page.scss b/src/app/feature/template/template.page.scss index f5d7226fcf..ac700d597a 100644 --- a/src/app/feature/template/template.page.scss +++ b/src/app/feature/template/template.page.scss @@ -1,4 +1,3 @@ -@import "../../../theme/variables.scss"; ion-searchbar { --background: var(--ion-color-primary-contrast); } diff --git a/src/app/feature/theme/built-in-themes.ts b/src/app/feature/theme/built-in-themes.ts deleted file mode 100644 index 7b8e3721b8..0000000000 --- a/src/app/feature/theme/built-in-themes.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { AppTheme } from './theme.model'; - -export const BASE_THEME: AppTheme = { - "name": "PLH Teens 1", - "editable": true, - "colors": { - "primary": { - "name": "Primary", - "lightValue": "#0d4060", - "darkValue": "#0d4060", - "id": "primary", - }, - "secondary": { - "id": "secondary", - "name": "Secondary", - "lightValue": "#f3d668", - "darkValue": "#f3d668", - }, - "tertiary": { - "id": "tertiary", - "name": "Tertiary", - "lightValue": "#00a1cd", - "darkValue": "#00a1cd", - }, - "success": { - "id": "success", - "name": "Success", - "lightValue": "#2dd36f", - "darkValue": "#2dd36f", - }, - "warning": { - "id": "warning", - "name": "Warning", - "lightValue": "#ffc409", - "darkValue": "#ffc409", - }, - "danger": { - "id": "danger", - "name": "Danger", - "lightValue": "#eb445a", - "darkValue": "#eb445a", - }, - "dark": { - "id": "dark", - "name": "Dark", - "lightValue": "#222428", - "darkValue": "#222428", - }, - "medium": { - "id": "medium", - "name": "Medium", - "lightValue": "#92949c", - "darkValue": "#92949c", - }, - "light": { - "id": "light", - "name": "Light", - "lightValue": "#f4f5f8", - "darkValue": "#f4f5f8", - }, - "background": { - "id": "background", - "name": "Background", - "lightValue": "#E3F4FF", - "darkValue": "#222", - }, - "itemBackground": { - "id": "itemBackground", - "name": "Item Background", - "lightValue": "#eee", - "darkValue": "#222", - }, - "myJourneyButton": { - "id": "myJourneyButton", - "name": "Home - My Journey Button", - "lightValue": "#ed1651", - "darkValue": "#ed1651", - }, - "toolboxButton": { - "id": "toolboxButton", - "name": "Home - Toolbox Button", - "lightValue": "#ff9b05", - "darkValue": "#ff9b05", - }, - "helpMeNowButton": { - "id": "helpMeNowButton", - "name": "Home - Help Me Now Button", - "lightValue": "#5FC4D2", - "darkValue": "#5FC4D2", - }, - "myPlansButton": { - "id": "myPlansButton", - "name": "Home - My Plan Button", - "lightValue": "#5652a3", - "darkValue": "#5652a3", - }, - "myParentingMomentsButton": { - "id": "myParentingMomentsButton", - "name": "Home - My parenting moments Button", - "lightValue": "#0f8ab2", - "darkValue": "#0f8ab2", - }, - "ONE_ON_ONE_TIME": { - "id": "ONE_ON_ONE_TIME", - "name": "Module - One-on-One Time", - "lightValue": "#F7911E", - "darkValue": "#F7911E" - }, - "PRAISE_AND_POSITIVE_REINFORCEMENT": { - "id": "PRAISE_AND_POSITIVE_REINFORCEMENT", - "name": "Module - Praise & Positive Reinforcement", - "lightValue": "#ED1651", - "darkValue": "#ED1651" - }, - "MANAGING_ANGER_AND_STRESS": { - "id": "MANAGING_ANGER_AND_STRESS", - "name": "Module - Managing Anger & Stress", - "lightValue": "#5652A3", - "darkValue": "#5652A3" - }, - "FAMILY_BUDGETING": { - "id": "FAMILY_BUDGETING", - "name": "Module - Family Budgeting", - "lightValue": "#8885D1", - "darkValue": "#8885D1" - }, - "RULES_AND_ROUTINES": { - "id": "RULES_AND_ROUTINES", - "name": "Module - Rules & Routines", - "lightValue": "#54C5D0", - "darkValue": "#54C5D0" - }, - "ACCEPTING_RESPONSIBILITY": { - "id": "ACCEPTING_RESPONSIBILITY", - "name": "Module - Accepting Responsibilities", - "lightValue": "#0F8AB2", - "darkValue": "#0F8AB2" - }, - "PROBLEM_SOLVING": { - "id": "PROBLEM_SOLVING", - "name": "Module - Problem Solving", - "lightValue": "#2E9E48", - "darkValue": "#2E9E48" - }, - "RISK_MAPPING_AND_DEALING_WITH_CRISIS": { - "id": "RISK_MAPPING_AND_DEALING_WITH_CRISIS", - "name": "Module - Risk Mapping & Dealing with Crisis", - "lightValue": "#227535", - "darkValue": "#227535" - }, - "userMsgBubble": { - "id": "userMsgBubble", - "name": "Chat - User Message Bubble", - "lightValue": "#E9EBEB", - "darkValue": "#E9EBEB" - }, - "botMsgBubble": { - "id": "botMsgBubble", - "name": "Chat - Bot Message Bubble", - "lightValue": "#CAE6FC", - "darkValue": "#CAE6FC" - }, - "templatePassiveBg": { - "id": "templatePassiveBg", - "name": "Template - Passive Background", - "lightValue" : "#E3F4FF", - "darkValue": "#0D3F60" - }, - "templateActiveBg": { - "id": "templateActiveBg", - "name": "Template - Active Background", - "lightValue" : "#FFF6D6", - "darkValue": "#000000" - } - } -}; - -export const THEME_1: AppTheme = { - name: "PLH Teens 1", - editable: true, - colors: { - primary: { - name: "Primary", - lightValue: "#0d4060", - darkValue: "#0d4060" - } - } -}; - - -export const THEME_2: AppTheme = { - name: "PLH Teens 2", - editable: true, - colors: { - primary: { - name: "Primary", - lightValue: "#ff4060", - darkValue: "#ff4060" - } - } -}; - -export const BUILT_IN_EDITABLE_THEMES: AppTheme[] = [THEME_1, THEME_2]; \ No newline at end of file diff --git a/src/app/feature/theme/components/colour-palette/colour-palette.component.html b/src/app/feature/theme/components/colour-palette/colour-palette.component.html new file mode 100644 index 0000000000..8c7a14b0f0 --- /dev/null +++ b/src/app/feature/theme/components/colour-palette/colour-palette.component.html @@ -0,0 +1,6 @@ +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                color-{{ colour }}-{{ weight }}
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                diff --git a/src/app/feature/theme/components/colour-palette/colour-palette.component.scss b/src/app/feature/theme/components/colour-palette/colour-palette.component.scss new file mode 100644 index 0000000000..59931305a3 --- /dev/null +++ b/src/app/feature/theme/components/colour-palette/colour-palette.component.scss @@ -0,0 +1,32 @@ +@use "/src/theme/mixins"; + +$colors: primary, secondary; +$colorWeights: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900; + +.palette-container { + background-color: white; + margin: 20px; + padding: 20px; +} + +.swatch-container { + @include mixins.flex-centered; +} + +.swatch { + width: 100px; + height: 30px; +} + +.label { + width: 170px; + padding-left: 10px; +} + +@each $color in $colors { + @each $weight in $colorWeights { + .color-#{$color}-#{$weight} { + background-color: var(--ion-color-#{$color}-#{$weight}); + } + } +} diff --git a/src/app/feature/theme/components/colour-palette/colour-palette.component.spec.ts b/src/app/feature/theme/components/colour-palette/colour-palette.component.spec.ts new file mode 100644 index 0000000000..a9344f4490 --- /dev/null +++ b/src/app/feature/theme/components/colour-palette/colour-palette.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { ColourPaletteComponent } from "./colour-palette.component"; + +describe("ColourPaletteComponent", () => { + let component: ColourPaletteComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ColourPaletteComponent], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(ColourPaletteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/feature/theme/components/colour-palette/colour-palette.component.ts b/src/app/feature/theme/components/colour-palette/colour-palette.component.ts new file mode 100644 index 0000000000..330d08891f --- /dev/null +++ b/src/app/feature/theme/components/colour-palette/colour-palette.component.ts @@ -0,0 +1,11 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "plh-colour-palette", + templateUrl: "./colour-palette.component.html", + styleUrls: ["./colour-palette.component.scss"], +}) +export class ColourPaletteComponent { + themeColours = ["primary", "secondary"]; + colourWeights = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900]; +} diff --git a/src/app/feature/theme/components/css-variable-table/css-variable-table.component.html b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.html new file mode 100644 index 0000000000..fbc6e7ec47 --- /dev/null +++ b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.html @@ -0,0 +1,15 @@ + + + + + + + + + + + + +
                                                                                                                                                                                NameValue
                                                                                                                                                                                {{ customVal.name }} + {{ customVal.value }} +
                                                                                                                                                                                diff --git a/src/app/feature/theme/components/css-variable-table/css-variable-table.component.scss b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.scss new file mode 100644 index 0000000000..552f1b1762 --- /dev/null +++ b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.scss @@ -0,0 +1,9 @@ +table { + background: white; +} +td, +th { + padding: 4px; + border: 1px solid black; + border-collapse: collapse; +} diff --git a/src/app/feature/theme/components/css-variable-table/css-variable-table.component.spec.ts b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.spec.ts new file mode 100644 index 0000000000..6b92e77fd5 --- /dev/null +++ b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { CssVariableTableComponent } from "./css-variable-table.component"; + +describe("CssVariableTableComponent", () => { + let component: CssVariableTableComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [CssVariableTableComponent], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(CssVariableTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/feature/theme/components/css-variable-table/css-variable-table.component.ts b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.ts new file mode 100644 index 0000000000..28be8f3d79 --- /dev/null +++ b/src/app/feature/theme/components/css-variable-table/css-variable-table.component.ts @@ -0,0 +1,74 @@ +import { AfterViewInit, Component, ElementRef } from "@angular/core"; +import { ThemeService } from "../../services/theme.service"; + +interface ICustomVariableMeta { + name: string; + value: string; + /** Additional styles to pass to rendered table cell, e.g. setting background colour */ + tableDisplayStyles: Partial; + /** Group custom variables in groups for display purposes */ + tableDisplayGroup: "border" | "color" | "gradient" | "size" | "unknown"; +} + +@Component({ + selector: "plh-css-variable-table", + templateUrl: "./css-variable-table.component.html", + styleUrls: ["./css-variable-table.component.scss"], +}) +export class CssVariableTableComponent implements AfterViewInit { + customStyleVariables: ICustomVariableMeta[] = []; + + constructor(private themeService: ThemeService, private elementRef: ElementRef) {} + + ngAfterViewInit() { + this.loadElementCustomVariables(); + this.themeService.currentTheme$.subscribe(() => this.loadElementCustomVariables()); + } + + /** Generate a list of all custom style variables applied to the table element */ + private loadElementCustomVariables() { + const currentEl = this.elementRef.nativeElement as HTMLElement; + const contentEl = currentEl.closest("ion-content"); + const customVariables = this.themeService.calculateElCustomProperties(contentEl); + console.log("custom variables", customVariables, contentEl); + this.customStyleVariables = Object.entries(customVariables) + .map(([name, value]) => ({ + name, + value, + tableDisplayGroup: this.getTableDisplayGroup(name, value), + tableDisplayStyles: {}, + })) + .map((meta) => ({ ...meta, tableDisplayStyles: this.getTableDisplayStyle(meta) })) + .filter((meta) => meta.value !== "") + .sort((a, b) => (b.name > a.name ? 1 : -1)) + .sort((a, b) => (a.tableDisplayGroup > b.tableDisplayGroup ? 1 : -1)); + } + + private getTableDisplayGroup( + name: string, + value: string + ): ICustomVariableMeta["tableDisplayGroup"] { + if (name.includes("border") && value.includes("#")) return "border"; + if (value.includes("linear-gradient")) return "gradient"; + if (value.includes("#")) return "color"; + if (value.includes("rgba")) return "color"; + if (value.endsWith("px")) return "size"; + return "unknown"; + } + + private getTableDisplayStyle(meta: ICustomVariableMeta) { + const { value, tableDisplayGroup } = meta; + const style: Partial = {}; + if (tableDisplayGroup === "border") { + style.border = value; + return style; + } + if (value.includes("#")) style.backgroundColor = value; + if (value.includes("rgba")) style.backgroundColor = value; + if (value.includes("linear-gradient")) { + style.background = value; + style.padding = "2em"; + } + return style; + } +} diff --git a/src/app/feature/theme/pages/theme-editor/theme-editor.page.html b/src/app/feature/theme/pages/theme-editor/theme-editor.page.html new file mode 100644 index 0000000000..b263047fd2 --- /dev/null +++ b/src/app/feature/theme/pages/theme-editor/theme-editor.page.html @@ -0,0 +1,13 @@ + +

                                                                                                                                                                                Change Theme

                                                                                                                                                                                + {{theme}} + +

                                                                                                                                                                                Palette

                                                                                                                                                                                + +

                                                                                                                                                                                Variables

                                                                                                                                                                                + +
                                                                                                                                                                                diff --git a/src/app/feature/theme/pages/theme-editor/theme-editor.page.scss b/src/app/feature/theme/pages/theme-editor/theme-editor.page.scss new file mode 100644 index 0000000000..1dc141ba7d --- /dev/null +++ b/src/app/feature/theme/pages/theme-editor/theme-editor.page.scss @@ -0,0 +1,3 @@ +.active { + --background: var(--ion-color-primary-300); +} diff --git a/src/app/feature/theme/pages/theme-editor/theme-editor.page.spec.ts b/src/app/feature/theme/pages/theme-editor/theme-editor.page.spec.ts new file mode 100644 index 0000000000..424e16f345 --- /dev/null +++ b/src/app/feature/theme/pages/theme-editor/theme-editor.page.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { ThemeEditorPage } from "./theme-editor.page"; + +describe("ThemeEditorPage", () => { + let component: ThemeEditorPage; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ThemeEditorPage], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(ThemeEditorPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/feature/theme/pages/theme-editor/theme-editor.page.ts b/src/app/feature/theme/pages/theme-editor/theme-editor.page.ts new file mode 100644 index 0000000000..95e7273254 --- /dev/null +++ b/src/app/feature/theme/pages/theme-editor/theme-editor.page.ts @@ -0,0 +1,24 @@ +import { Component, OnInit } from "@angular/core"; +import { IAppConfig } from "packages/data-models/appConfig"; +import { ThemeService } from "../../services/theme.service"; + +@Component({ + selector: "plh-theme-editor-page", + templateUrl: "./theme-editor.page.html", + styleUrls: ["./theme-editor.page.scss"], +}) +export class ThemeEditorPage implements OnInit { + availableThemes: IAppConfig["APP_THEMES"]["available"]; + currentTheme: string; + + constructor(private themeService: ThemeService) {} + + ngOnInit(): void { + this.availableThemes = this.themeService.availableThemes; + this.themeService.currentTheme$.subscribe((currentTheme) => (this.currentTheme = currentTheme)); + } + + setTheme(theme: string) { + this.themeService.setTheme(theme); + } +} diff --git a/src/app/feature/theme/services/theme.service.spec.ts b/src/app/feature/theme/services/theme.service.spec.ts new file mode 100644 index 0000000000..45052e902b --- /dev/null +++ b/src/app/feature/theme/services/theme.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from "@angular/core/testing"; + +import { ThemeService } from "./theme.service"; + +describe("ThemeService", () => { + let service: ThemeService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ThemeService); + }); + + it("should be created", () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/feature/theme/services/theme.service.ts b/src/app/feature/theme/services/theme.service.ts new file mode 100644 index 0000000000..104da20233 --- /dev/null +++ b/src/app/feature/theme/services/theme.service.ts @@ -0,0 +1,99 @@ +import { Injectable } from "@angular/core"; +import { BehaviorSubject } from "rxjs"; +import { LocalStorageService } from "src/app/shared/services/local-storage/local-storage.service"; +import { AppConfigService } from "src/app/shared/services/app-config/app-config.service"; +import { IAppConfig } from "packages/data-models"; +import { SyncServiceBase } from "src/app/shared/services/syncService.base"; + +@Injectable({ + providedIn: "root", +}) +export class ThemeService extends SyncServiceBase { + currentTheme$ = new BehaviorSubject(null); + availableThemes: IAppConfig["APP_THEMES"]["available"]; + appFields: IAppConfig["APP_FIELDS"]; + defaultThemeName: string; + + constructor( + private localStorageService: LocalStorageService, + private appConfigService: AppConfigService + ) { + super("Theme"); + this.initialise(); + } + + private initialise() { + this.ensureSyncServicesReady([this.localStorageService, this.appConfigService]); + this.subscribeToAppConfigChanges(); + // Retrieve the last active theme and apply it. Fallback on default theme + // if there is no last active theme, or if it is not "available" in current appConfig + const lastActiveTheme = this.getCurrentTheme(); + const targetTheme = + lastActiveTheme && this.availableThemes.includes(lastActiveTheme) + ? lastActiveTheme + : this.defaultThemeName; + this.setTheme(targetTheme); + } + + public setTheme(themeName: string) { + if (this.availableThemes.includes(themeName)) { + // console.log("[SET THEME]", themeName); + document.body.dataset.theme = themeName; + this.currentTheme$.next(themeName); + // Use local storage so that the current theme persists across app launches + this.localStorageService.setString(this.appFields.APP_THEME, themeName); + } else { + console.error(`No theme found with name "${themeName}"`); + } + } + + public getCurrentTheme() { + return this.localStorageService.getString(this.appFields.APP_THEME); + } + + /** Calculate all custom properties inherited for a particular element */ + public calculateElCustomProperties(el: Element) { + const props = {}; + const customProps = this.listAllCssCustomProperties(); + const computedStyles = window.getComputedStyle(el); + for (const prop of Object.keys(customProps)) { + props[prop] = computedStyles.getPropertyValue(prop).trim(); + } + return props; + } + + /** + * Iterate through all style sheets on a page to extract a list of custom css properties + * @returns hashmap containing all properties and value corresponding to latest-processed sheet + * + * Adapted from https://css-tricks.com/how-to-get-all-custom-properties-on-a-page-in-javascript/ + */ + private listAllCssCustomProperties() { + const customPropsHashmap = {}; + for (const styleSheet of Array.from(document.styleSheets)) { + if (this.isSameDomain(styleSheet)) { + for (const rule of Array.from(styleSheet.cssRules)) { + if (rule instanceof CSSStyleRule) { + const customStyleProps = Array.from(rule.style).filter((prop) => prop.startsWith("--")); + for (const prop of customStyleProps) { + customPropsHashmap[prop] = rule.style.getPropertyValue(prop).trim(); + } + } + } + } + } + return customPropsHashmap; + } + + /** Determine if style is local styleblock or from stylesheet on same domain */ + private isSameDomain = (styleSheet: CSSStyleSheet) => + styleSheet.href ? styleSheet.href.startsWith(location.origin) : true; + + subscribeToAppConfigChanges() { + this.appConfigService.appConfig$.subscribe((appConfig: IAppConfig) => { + this.appFields = appConfig.APP_FIELDS; + this.availableThemes = appConfig.APP_THEMES.available; + this.defaultThemeName = appConfig.APP_THEMES.defaultThemeName; + }); + } +} diff --git a/src/app/feature/theme/theme-editor/theme-editor.component.html b/src/app/feature/theme/theme-editor/theme-editor.component.html deleted file mode 100644 index 865ef62415..0000000000 --- a/src/app/feature/theme/theme-editor/theme-editor.component.html +++ /dev/null @@ -1,62 +0,0 @@ - - - Theme Editor - - - - - - Theme to Edit - - {{ - theme.name - }} - - - - Colors - -
                                                                                                                                                                                - {{ color.name }} -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                - Select Light Color - -
                                                                                                                                                                                -
                                                                                                                                                                                - Select Dark Color - -
                                                                                                                                                                                -
                                                                                                                                                                                -
                                                                                                                                                                                - Other Variables - - {{ varName }} - - - Download Theme JSON -
                                                                                                                                                                                -
                                                                                                                                                                                diff --git a/src/app/feature/theme/theme-editor/theme-editor.component.scss b/src/app/feature/theme/theme-editor/theme-editor.component.scss deleted file mode 100644 index 3b5bdb15c3..0000000000 --- a/src/app/feature/theme/theme-editor/theme-editor.component.scss +++ /dev/null @@ -1,40 +0,0 @@ -.color-section { - display: flex; - flex-direction: column; - - ion-label { - padding: 10px; - } -} - -.colors-header { - font-size: 30px; -} - -.color-circle { - width: 40px; - height: 40px; - border-radius: 20px; - margin: 10px; - - &.dark { - border: 4px solid #222; - } - - &.light { - border: 4px solid #eee; - } -} - - -.color-pickers { - display: flex; - flex-direction: row; - height: 300px; -} - -.color-picker { - width: 200px; - height: 200px; -} - diff --git a/src/app/feature/theme/theme-editor/theme-editor.component.spec.ts b/src/app/feature/theme/theme-editor/theme-editor.component.spec.ts deleted file mode 100644 index 6353ae988f..0000000000 --- a/src/app/feature/theme/theme-editor/theme-editor.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { IonicModule } from '@ionic/angular'; - -import { ThemeEditorComponent } from './theme-editor.component'; - -describe('ThemeEditorComponent', () => { - let component: ThemeEditorComponent; - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [ ThemeEditorComponent ], - imports: [IonicModule.forRoot()] - }).compileComponents(); - - fixture = TestBed.createComponent(ThemeEditorComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - })); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/feature/theme/theme-editor/theme-editor.component.ts b/src/app/feature/theme/theme-editor/theme-editor.component.ts deleted file mode 100644 index 790701b8f1..0000000000 --- a/src/app/feature/theme/theme-editor/theme-editor.component.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Component } from "@angular/core"; -import { ThemeService } from "../theme-service/theme.service"; -import { AppTheme, ThemeColor } from "../theme.model"; -import { ColorEvent } from "ngx-color"; - -@Component({ - selector: "plh-theme-editor", - templateUrl: "./theme-editor.component.html", - styleUrls: ["./theme-editor.component.scss"], -}) -export class ThemeEditorComponent { - public editableThemes: AppTheme[] = []; - public currentTheme: AppTheme; - - public colors: (ThemeColor & { expanded: boolean })[] = []; - - public selectedColor: ThemeColor; - - public jsonDataURL: string; - - constructor(private themeService: ThemeService) { - this.editableThemes = this.themeService.getThemes().filter((t) => t.editable); - this.currentTheme = this.editableThemes.find( - (t) => t.name === this.themeService.getCurrentTheme().name - ); - if (!this.currentTheme) { - this.currentTheme = this.editableThemes[0]; - } - this.selectThemeName(this.currentTheme.name); - } - - updateJSONDataURL() { - let theme = { ...this.currentTheme }; - for (let colorId of Object.keys(theme.colors)) { - delete theme.colors[colorId].selected; - } - let jsonString = JSON.stringify(theme, null, 4); - this.jsonDataURL = "data:application/json;charset=utf-8," + encodeURIComponent(jsonString); - } - - selectThemeName(themeName: string) { - this.currentTheme = this.editableThemes.find((t) => t.name === themeName); - this.colors = Object.keys(this.currentTheme.colors).map((colorId) => { - this.currentTheme.colors[colorId].id = colorId; - return this.currentTheme.colors[colorId]; - }); - this.updateTheme(this.currentTheme); - } - - toggleExpanded(color: ThemeColor & { expanded: boolean }) { - color.expanded = !color.expanded; - if (color.expanded) { - for (let col of this.colors) { - if (col !== color) { - col.expanded = false; - } - } - } - } - - changeColorComplete(event: ColorEvent, color: ThemeColor, isLight = true) { - console.log("Color change event ", event); - if (isLight) { - this.currentTheme.colors[color.id].lightValue = event.color.hex; - } else { - this.currentTheme.colors[color.id].darkValue = event.color.hex; - } - this.updateTheme(this.currentTheme); - } - - onColorSectionClick(event, color: ThemeColor) { - console.log("Color section click", event, color); - this.selectedColor = color; - } - - public keys(obj: any) { - return obj ? Object.keys(obj) : []; - } - - toggleBoolean(varName: string) { - this.currentTheme.booleans[varName] = !this.currentTheme.booleans[varName]; - this.themeService.updateTheme(this.currentTheme); - } - - updateTheme(theme: AppTheme) { - this.currentTheme = theme; - this.themeService.updateTheme(theme); - this.updateJSONDataURL(); - } - - downloadClicked() { - this.updateJSONDataURL(); - } -} diff --git a/src/app/feature/theme/theme-routing.module.ts b/src/app/feature/theme/theme-routing.module.ts new file mode 100644 index 0000000000..4fbb06e4e3 --- /dev/null +++ b/src/app/feature/theme/theme-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from "@angular/core"; +import { Routes, RouterModule } from "@angular/router"; +import { ThemeEditorPage } from "./pages/theme-editor/theme-editor.page"; + +const routes: Routes = [ + { + path: "", + component: ThemeEditorPage, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ThemeRoutingModule {} diff --git a/src/app/feature/theme/theme-service/theme.service.spec.ts b/src/app/feature/theme/theme-service/theme.service.spec.ts deleted file mode 100644 index 1c2957ba89..0000000000 --- a/src/app/feature/theme/theme-service/theme.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { ThemeService } from './theme.service'; - -describe('ThemeService', () => { - let service: ThemeService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(ThemeService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/src/app/feature/theme/theme-service/theme.service.ts b/src/app/feature/theme/theme-service/theme.service.ts deleted file mode 100644 index ce3389d53e..0000000000 --- a/src/app/feature/theme/theme-service/theme.service.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Injectable } from "@angular/core"; -import { IpcService } from "src/app/shared/services/ipc/ipc.service"; -import { LocalStorageService } from "src/app/shared/services/local-storage/local-storage.service"; -import { BASE_THEME, BUILT_IN_EDITABLE_THEMES } from "../built-in-themes"; -import { AppTheme, colorIdToCSSVarName, ThemeColor, ThemeColors } from "../theme.model"; - -@Injectable({ - providedIn: "root", -}) -export class ThemeService { - static THEME_UPDATE_CHANNEL = "THEME_UPDATE_CHANNEL"; - - currentTheme: AppTheme; - - constructor(private ipcService: IpcService, private localStorageService: LocalStorageService) {} - - init() { - // Listens on IPC for updates to current theme - this.ipcService.listen(ThemeService.THEME_UPDATE_CHANNEL).subscribe((themeName: string) => { - let themeMap = this.getThemeMap(); - this.applyCSSVariablesForTheme(themeMap[themeName]); - this.currentTheme = themeMap[themeName]; - }); - - window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (e) => { - this.applyCSSVariablesForTheme(this.currentTheme); - }); - - this.currentTheme = this.getCurrentTheme(); - this.applyCSSVariablesForTheme(this.currentTheme); - } - - private getThemeMap(): { [themeName: string]: AppTheme } { - let editableThemeMap = this.localStorageService.getJSON("editableThemes"); - if (!editableThemeMap || Object.keys(editableThemeMap).length < 1) { - let editableThemeMap = {}; - BUILT_IN_EDITABLE_THEMES.forEach((theme) => { - editableThemeMap[theme.name] = this.populateWithDefaults(theme); - }); - this.localStorageService.setJSON("editableThemes", editableThemeMap); - } - return editableThemeMap; - } - - private saveThemeMap(themeMap: { [themeName: string]: AppTheme }) { - this.localStorageService.setJSON("editableThemes", themeMap); - } - - public getCurrentTheme(): AppTheme { - const themeMap = this.getThemeMap(); - const currentThemeName = this.localStorageService.getString("currentThemeName"); - if (currentThemeName) { - this.currentTheme = themeMap[currentThemeName]; - } else { - this.currentTheme = { ...BASE_THEME }; - } - - return this.currentTheme; - } - - public setCurrentTheme(themeName: string) { - let themeMap = this.getThemeMap(); - if (themeMap[themeName]) { - this.currentTheme = themeMap[themeName]; - } else { - this.currentTheme = BASE_THEME; - } - this.localStorageService.setString("currentThemeName", this.currentTheme.name); - this.ipcService.send(ThemeService.THEME_UPDATE_CHANNEL, themeName); - } - - public createNewTheme(themeName: string) { - let themeMap = this.getThemeMap(); - let newTheme: AppTheme = { ...BASE_THEME, name: themeName, editable: true }; - themeMap[newTheme.name] = newTheme; - this.saveThemeMap(themeMap); - } - - public updateTheme(theme: AppTheme) { - let themeMap = this.getThemeMap(); - themeMap[theme.name] = theme; - this.saveThemeMap(themeMap); - if (theme.name === this.currentTheme.name) { - this.currentTheme = theme; - this.localStorageService.setJSON("currentTheme", theme); - } - this.ipcService.send(ThemeService.THEME_UPDATE_CHANNEL, theme.name); - } - - public populateWithDefaults(theme: AppTheme): AppTheme { - let newTheme = { ...theme }; - Object.keys(BASE_THEME.colors).forEach((colorId) => { - if (!newTheme.colors[colorId]) { - newTheme.colors[colorId] = BASE_THEME.colors[colorId]; - } - if (newTheme.colors[colorId].lightValue && !newTheme.colors[colorId].darkValue) { - newTheme.colors[colorId].darkValue = newTheme.colors[colorId].lightValue; - } - if (newTheme.colors[colorId].darkValue && !newTheme.colors[colorId].lightValue) { - newTheme.colors[colorId].lightValue = newTheme.colors[colorId].darkValue; - } - }); - return newTheme; - } - - public getThemes(): AppTheme[] { - const themeMap = this.getThemeMap(); - const populatedThemes = Object.keys(themeMap).map((themeName) => { - return this.populateWithDefaults(themeMap[themeName]); - }); - return populatedThemes; - } - - private applyCSSVariablesForTheme(theme: AppTheme) { - // const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; - let colorId = Object.keys(theme.colors) as (keyof ThemeColors)[]; - let unchangedCount = 0; - for (let colorName of colorId) { - const colorObj: ThemeColor = theme.colors[colorName]; - let value = colorObj.lightValue; - let cssVarName = colorIdToCSSVarName(colorName); - // TODO CC 2022-03-26 Dark theme requires redesign - // if (prefersDark) { - // value = colorObj.darkValue; - // } - if (document.body.style.getPropertyValue(cssVarName) !== value) { - document.body.style.setProperty(cssVarName, value); - } else { - unchangedCount++; - } - } - console.log(`${unchangedCount} colors unchanged by theme update`); - } -} diff --git a/src/app/feature/theme/theme.model.ts b/src/app/feature/theme/theme.model.ts deleted file mode 100644 index c8bd3558e4..0000000000 --- a/src/app/feature/theme/theme.model.ts +++ /dev/null @@ -1,74 +0,0 @@ -export interface AppTheme { - name: string; - editable: boolean; - author?: string; - colors?: ThemeColors; - booleans?: ThemeBooleans; -} - -export interface ThemeBooleans { - showCharacterInChat: boolean; -} - -export const ionColorNames: (keyof ThemeColors)[] = ["primary", "secondary", "tertiary", "success", - "warning", "danger", "dark", "medium", "light"]; - -export interface ThemeColors { - // Ionic Colors - primary?: ThemeColor; - secondary?: ThemeColor; - tertiary?: ThemeColor; - success?: ThemeColor; - warning?: ThemeColor; - danger?: ThemeColor; - dark?: ThemeColor; - medium?: ThemeColor; - light?: ThemeColor; - background?: ThemeColor; - itemBackground?: ThemeColor; - - // Home screen buttons - myJourneyButton?: ThemeColor; - toolboxButton?: ThemeColor; - myParentingMomentsButton?: ThemeColor; - myPlansButton?: ThemeColor; - helpMeNowButton?: ThemeColor; - - // Module colors - ONE_ON_ONE_TIME?: ThemeColor; - PRAISE_AND_POSITIVE_REINFORCEMENT?: ThemeColor; - MANAGING_ANGER_AND_STRESS?: ThemeColor; - FAMILY_BUDGETING?: ThemeColor; - RULES_AND_ROUTINES?: ThemeColor; - ACCEPTING_RESPONSIBILITY?: ThemeColor; - PROBLEM_SOLVING?: ThemeColor; - RISK_MAPPING_AND_DEALING_WITH_CRISIS?: ThemeColor; - - // Chat colors - botMsgBubble?: ThemeColor; - userMsgBubble?: ThemeColor; - - // Workshop templates - templateActiveBg?: ThemeColor; - templatePassiveBg?: ThemeColor; -} - -export function colorIdToCSSVarName(colorId: keyof ThemeColors) { - if (ionColorNames.indexOf(colorId) > -1) { - return "--ion-color-" + colorId; - } else { - switch (colorId) { - case "background": return "--ion-background-color"; - case "itemBackground": return "--ion-item-background"; - default: return "--theme-var-" + colorId; - } - } -} - -export interface ThemeColor { - id?: keyof ThemeColors; - name: string; - lightValue?: string; - darkValue?: string; - description?: string; -} diff --git a/src/app/feature/theme/theme.module.ts b/src/app/feature/theme/theme.module.ts new file mode 100644 index 0000000000..fad6b34feb --- /dev/null +++ b/src/app/feature/theme/theme.module.ts @@ -0,0 +1,20 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { IonicModule } from "@ionic/angular"; +import { ColorSketchModule } from "ngx-color/sketch"; +import { ThemeRoutingModule } from "./theme-routing.module"; +import { ThemeEditorPage } from "./pages/theme-editor/theme-editor.page"; +import { CssVariableTableComponent } from "./components/css-variable-table/css-variable-table.component"; +import { ColourPaletteComponent } from "./components/colour-palette/colour-palette.component"; + +const Pages = [ThemeEditorPage]; +const Components = [CssVariableTableComponent, ColourPaletteComponent]; + +@NgModule({ + imports: [CommonModule, FormsModule, IonicModule, ThemeRoutingModule, ColorSketchModule], + exports: [], + declarations: [...Pages, ...Components], + providers: [], +}) +export class ThemeModule {} diff --git a/src/app/feature/tour/tour.component.ts b/src/app/feature/tour/tour.component.ts index bbf5091d37..b08eea81c3 100644 --- a/src/app/feature/tour/tour.component.ts +++ b/src/app/feature/tour/tour.component.ts @@ -1,5 +1,5 @@ import { Component } from "@angular/core"; -import { TourService } from "src/app/shared/services/tour/tour.service"; +import { TourService } from "./tour.service"; @Component({ template: ` diff --git a/src/app/feature/tour/tour.module.ts b/src/app/feature/tour/tour.module.ts new file mode 100644 index 0000000000..8b4b7b660c --- /dev/null +++ b/src/app/feature/tour/tour.module.ts @@ -0,0 +1,20 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { RouterModule } from "@angular/router"; +import { IonicModule } from "@ionic/angular"; + +import { TourComponent } from "./tour.component"; + +@NgModule({ + imports: [ + IonicModule, + CommonModule, + FormsModule, + RouterModule.forChild([{ path: "", component: TourComponent }]), + ], + exports: [], + declarations: [TourComponent], + providers: [], +}) +export class TourModule {} diff --git a/src/app/feature/tour/tour.service.spec.ts b/src/app/feature/tour/tour.service.spec.ts new file mode 100644 index 0000000000..8754f301fd --- /dev/null +++ b/src/app/feature/tour/tour.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from "@angular/core/testing"; + +import { TourService } from "./tour.service"; + +describe("TourService", () => { + let service: TourService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TourService); + }); + + it("should be created", () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/shared/services/tour/tour.service.ts b/src/app/feature/tour/tour.service.ts similarity index 82% rename from src/app/shared/services/tour/tour.service.ts rename to src/app/feature/tour/tour.service.ts index 01bbc56354..59455c1b75 100644 --- a/src/app/shared/services/tour/tour.service.ts +++ b/src/app/feature/tour/tour.service.ts @@ -2,15 +2,17 @@ import { Injectable } from "@angular/core"; import { Router } from "@angular/router"; import introJs from "intro.js"; -import { TemplateTranslateService } from "../../components/template/services/template-translate.service"; +import { TemplateTranslateService } from "src/app/shared/components/template/services/template-translate.service"; import { FlowTypes } from "data-models"; -import { TemplateFieldService } from "../../components/template/services/template-field.service"; -import { AppDataService } from "../data/app-data.service"; +import { TemplateFieldService } from "src/app/shared/components/template/services/template-field.service"; +import { AppDataService } from "src/app/shared/services/data/app-data.service"; +import { AsyncServiceBase } from "src/app/shared/services/asyncService.base"; +import { TemplateActionRegistry } from "src/app/shared/components/template/services/instance/template-action.registry"; @Injectable({ providedIn: "root", }) -export class TourService { +export class TourService extends AsyncServiceBase { introJS = introJs(); waitForRoutingDelay = 1000; @@ -20,11 +22,23 @@ export class TourService { private router: Router, private templateFieldService: TemplateFieldService, private translateService: TemplateTranslateService, - private appDataService: AppDataService - ) {} - async init() { + private appDataService: AppDataService, + private templateActionRegistry: TemplateActionRegistry + ) { + super("Tour"); + this.registerInitFunction(this.initialise); + this.registerTemplateActionHandlers(); + } + private async initialise() { + await this.ensureAsyncServicesReady([this.templateFieldService, this.translateService]); + this.ensureSyncServicesReady([this.appDataService]); this.toursList = this.appDataService.listSheetsByType("tour"); } + private registerTemplateActionHandlers() { + this.templateActionRegistry.register({ + start_tour: async (action) => this.startTour(action.args[0]), + }); + } /** * Start the tour given by the named tour template. Will automatically handle any initial @@ -32,6 +46,7 @@ export class TourService { * @param tourName flow-name of tour, e.g. `test_tour` */ async startTour(tourName: string) { + await this.ready(); let matchingTour = await this.appDataService.getSheet("tour", tourName); if (matchingTour && matchingTour.rows && matchingTour.rows.length > 0) { this.introJS.setOptions({ diff --git a/src/app/shared/components/common/directives/connectedoverlayscrollhandler.ts b/src/app/shared/components/common/directives/connectedoverlayscrollhandler.ts index e938e2d7b0..43f3cea36b 100644 --- a/src/app/shared/components/common/directives/connectedoverlayscrollhandler.ts +++ b/src/app/shared/components/common/directives/connectedoverlayscrollhandler.ts @@ -1,37 +1,36 @@ -import {DomHandler} from './domhandler'; +import { DomHandler } from "./domhandler"; export class ConnectedOverlayScrollHandler { + element: any; - element: any; + listener: any; - listener: any; + scrollableParents: any; - scrollableParents: any; + constructor(element: any, listener: any = () => {}) { + this.element = element; + this.listener = listener; + } - constructor(element: any, listener: any = () => {}) { - this.element = element; - this.listener = listener; + bindScrollListener() { + this.scrollableParents = DomHandler.getScrollableParents(this.element); + for (let i = 0; i < this.scrollableParents.length; i++) { + this.scrollableParents[i].addEventListener("scroll", this.listener); } + } - bindScrollListener() { - this.scrollableParents = DomHandler.getScrollableParents(this.element); - for (let i = 0; i < this.scrollableParents.length; i++) { - this.scrollableParents[i].addEventListener('scroll', this.listener); - } - } - - unbindScrollListener() { - if (this.scrollableParents) { - for (let i = 0; i < this.scrollableParents.length; i++) { - this.scrollableParents[i].removeEventListener('scroll', this.listener); - } - } - } - - destroy() { - this.unbindScrollListener(); - this.element = null; - this.listener = null; - this.scrollableParents = null; + unbindScrollListener() { + if (this.scrollableParents) { + for (let i = 0; i < this.scrollableParents.length; i++) { + this.scrollableParents[i].removeEventListener("scroll", this.listener); + } } + } + + destroy() { + this.unbindScrollListener(); + this.element = null; + this.listener = null; + this.scrollableParents = null; + } } diff --git a/src/app/shared/components/common/directives/domhandler.ts b/src/app/shared/components/common/directives/domhandler.ts index f3ad2fabc5..636f2f8618 100644 --- a/src/app/shared/components/common/directives/domhandler.ts +++ b/src/app/shared/components/common/directives/domhandler.ts @@ -72,7 +72,7 @@ export class DomHandler { public static index(element: any): number { let children = element.parentNode.childNodes; let num = 0; - for (var i = 0; i < children.length; i++) { + for (let i = 0; i < children.length; i++) { if (children[i] == element) return num; if (children[i].nodeType == 1) num++; } @@ -82,7 +82,7 @@ export class DomHandler { public static indexWithinGroup(element: any, attributeName: string): number { let children = element.parentNode ? element.parentNode.childNodes : []; let num = 0; - for (var i = 0; i < children.length; i++) { + for (let i = 0; i < children.length; i++) { if (children[i] == element) return num; if ( children[i].attributes && @@ -289,7 +289,7 @@ export class DomHandler { } public static fadeOut(element, ms) { - var opacity = 1, + let opacity = 1, interval = 50, duration = ms, gap = interval / duration; @@ -317,8 +317,8 @@ export class DomHandler { } public static matches(element, selector: string): boolean { - var p = Element.prototype; - var f = + let p = Element.prototype; + let f = p["matches"] || p.webkitMatchesSelector || p["mozMatchesSelector"] || @@ -423,7 +423,7 @@ export class DomHandler { } public static getOffset(el) { - var rect = el.getBoundingClientRect(); + let rect = el.getBoundingClientRect(); return { top: @@ -449,22 +449,22 @@ export class DomHandler { } public static isIE() { - var ua = window.navigator.userAgent; + let ua = window.navigator.userAgent; - var msie = ua.indexOf("MSIE "); + let msie = ua.indexOf("MSIE "); if (msie > 0) { // IE 10 or older => return version number return true; } - var trident = ua.indexOf("Trident/"); + let trident = ua.indexOf("Trident/"); if (trident > 0) { // IE 11 => return version number - var rv = ua.indexOf("rv:"); + let rv = ua.indexOf("rv:"); return true; } - var edge = ua.indexOf("Edge/"); + let edge = ua.indexOf("Edge/"); if (edge > 0) { // Edge (IE 12+) => return version number return true; diff --git a/src/app/shared/components/debug-toggle.ts b/src/app/shared/components/debug-toggle.ts index c1f7aa821d..950f05b68c 100644 --- a/src/app/shared/components/debug-toggle.ts +++ b/src/app/shared/components/debug-toggle.ts @@ -44,14 +44,14 @@ import { takeUntil } from "rxjs/operators"; export class PLHDebugToggleComponent implements OnInit, OnDestroy { debugMode = false; showDebugToggle = true; - componentDestroyed$ = new Subject(); + private componentDestroyed$ = new Subject(); constructor(private router: Router, private route: ActivatedRoute) {} ngOnInit() { this.subscribeToQueryParamChanges(); } ngOnDestroy() { - this.componentDestroyed$.next(); + this.componentDestroyed$.next(true); this.componentDestroyed$.unsubscribe(); } diff --git a/src/app/shared/components/plh-main-header.ts b/src/app/shared/components/plh-main-header.ts index ec947a9990..ee3c483d90 100644 --- a/src/app/shared/components/plh-main-header.ts +++ b/src/app/shared/components/plh-main-header.ts @@ -4,16 +4,15 @@ import { NavigationEnd, NavigationStart, Router } from "@angular/router"; import { App } from "@capacitor/app"; import { Capacitor, PluginListenerHandle } from "@capacitor/core"; import { Subscription } from "rxjs"; -import { APP_CONSTANTS } from "src/app/data"; - -const { APP_HEADER_DEFAULTS } = APP_CONSTANTS; +import { IAppConfig } from "../model"; +import { AppConfigService } from "../services/app-config/app-config.service"; @Component({ selector: "plh-main-header", template: ` - + - {{ title }} + {{ headerConfig.title }} `, }) export class PLHMainHeaderComponent implements OnInit, OnDestroy { - title = APP_HEADER_DEFAULTS.title; showMenuButton = false; showBackButton = false; - + appConfigChanges$: Subscription; + headerConfig: IAppConfig["APP_HEADER_DEFAULTS"]; routeChanges$: Subscription; /** listen to hardware back button presses (on android device only) */ hardwareBackButton$: PluginListenerHandle; /** track if navigation has been used to handle back button click behaviour */ hasBackHistory = false; - constructor(private router: Router, private location: Location) {} + constructor( + private router: Router, + private location: Location, + private appConfigService: AppConfigService + ) {} + async ngOnInit() { + this.appConfigChanges$ = this.appConfigService.appConfig$.subscribe((appConfig: IAppConfig) => { + this.headerConfig = appConfig.APP_HEADER_DEFAULTS; + }); // subscribe to and handle route changes this.routeChanges$ = this.router.events.subscribe((e) => { if (e instanceof NavigationEnd) { @@ -58,6 +65,7 @@ export class PLHMainHeaderComponent implements OnInit, OnDestroy { } } ngOnDestroy() { + this.appConfigChanges$.unsubscribe(); this.routeChanges$.unsubscribe(); if (this.hardwareBackButton$) { this.hardwareBackButton$.remove(); @@ -77,14 +85,14 @@ export class PLHMainHeaderComponent implements OnInit, OnDestroy { * It cannot subscribe to standard router methods as sits outside ion-router-outlet */ private handleRouteChange() { - const { should_show_back_button, should_show_menu_button } = APP_HEADER_DEFAULTS; + const { should_show_back_button, should_show_menu_button } = this.headerConfig; this.showBackButton = should_show_back_button(location); this.showMenuButton = should_show_menu_button(location); } /** When device back button evaluate conditions to handle app minimise */ private handleHardwareBackPress() { - const { should_minimize_app_on_back } = APP_HEADER_DEFAULTS; + const { should_minimize_app_on_back } = this.headerConfig; if (should_minimize_app_on_back(location)) { App.minimizeApp(); } diff --git a/src/app/shared/components/template/components/accordion/accordion.component.scss b/src/app/shared/components/template/components/accordion/accordion.component.scss index 27611497ea..ba927b6afa 100644 --- a/src/app/shared/components/template/components/accordion/accordion.component.scss +++ b/src/app/shared/components/template/components/accordion/accordion.component.scss @@ -1,9 +1,7 @@ -@import "/src/theme/variables.scss"; - // Create overlapping effect ion-accordion { background: white; - border: 1px solid $primary; + border: 1px solid var(--ion-color-primary); border-radius: 10px; margin-top: -12px; padding-top: 8px; @@ -14,7 +12,7 @@ ion-accordion:first-of-type { padding-top: unset; } ion-label.accordion-section-title { - color: $primary; + color: var(--ion-color-primary); font-size: 1.3rem; } ion-item.accordion-content { diff --git a/src/app/shared/components/template/components/animated-slides/animated-slides.component.html b/src/app/shared/components/template/components/animated-slides/animated-slides.component.html new file mode 100644 index 0000000000..f36112db3f --- /dev/null +++ b/src/app/shared/components/template/components/animated-slides/animated-slides.component.html @@ -0,0 +1,11 @@ +
                                                                                                                                                                                +
                                                                                                                                                                                + + {{ skipText }} + +
                                                                                                                                                                                +
                                                                                                                                                                                + +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                diff --git a/src/app/shared/components/template/components/animated-slides/animated-slides.component.scss b/src/app/shared/components/template/components/animated-slides/animated-slides.component.scss new file mode 100644 index 0000000000..d3233ba356 --- /dev/null +++ b/src/app/shared/components/template/components/animated-slides/animated-slides.component.scss @@ -0,0 +1,45 @@ +.animated-slides-wrapper { + p { + font-size: 20px; + } + .section-container { + position: relative; + max-width: 300px; + max-height: 85%; + margin-top: 15%; + margin-left: auto; + margin-right: auto; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + section { + position: absolute; + top: 0; + left: 0; + opacity: 0; + width: 100%; + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: center; + justify-content: center; + } + .skip-button { + position: absolute; + top: 0; + right: 0; + opacity: 0.3; + } + &[data-param-style~="light"] { + .background { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--ion-background-color, #fff); + } + } +} diff --git a/src/app/shared/components/template/components/animated-slides/animated-slides.component.ts b/src/app/shared/components/template/components/animated-slides/animated-slides.component.ts new file mode 100644 index 0000000000..8b29426fe8 --- /dev/null +++ b/src/app/shared/components/template/components/animated-slides/animated-slides.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit } from "@angular/core"; +import { PLHAnimations } from "src/app/shared/animations"; +import { getNumberParamFromTemplateRow, getStringParamFromTemplateRow } from "src/app/shared/utils"; +import { TemplateBaseComponent } from "../base"; + +@Component({ + animations: PLHAnimations.fadeInOut, + selector: "template-animated-slides", + templateUrl: "./animated-slides.component.html", + styleUrls: ["./animated-slides.component.scss"], +}) +export class TmplAnimatedSlidesComponent extends TemplateBaseComponent implements OnInit { + skipText = ""; + // local tracker for which sections have been shown + fadeSection = []; + // durations to display each faded section + fadeTimes = []; + private _isDismissed = false; + style: string | null; + + ngOnInit(): void { + this.getParams(); + this.runFade(); + } + + getParams() { + this.skipText = getStringParamFromTemplateRow(this._row, "skip_text", "Skip"); + for (let row of this._row.rows) { + this.fadeTimes.push(getNumberParamFromTemplateRow(row, "duration", 0) * 1000); + } + this.style = getStringParamFromTemplateRow(this._row, "style", null); + } + /** + * Iterate over each section for display, showing for + * a defined period of time before fading out and moving + * on to the next + */ + private async runFade() { + let i = 0; + for (let fadeTime of this.fadeTimes) { + this.fadeSection[i] = "in"; + // wait specified time plus additional animation time + await this._wait(fadeTime + 1500); + this.fadeSection[i] = "out"; + i++; + } + /* component may have already been dismissed with "uncompleted" event, + * so check it exists before attempting again */ + if (!this._isDismissed) { + this.triggerActions("completed"); + } + } + skipIntro() { + this._isDismissed = true; + this.triggerActions("uncompleted"); + } + private _wait(ms: number) { + return new Promise((resolve) => + setTimeout(() => { + resolve(); + }, ms) + ); + } +} diff --git a/src/app/shared/components/template/components/audio/audio.component.scss b/src/app/shared/components/template/components/audio/audio.component.scss index 04a55a8b89..69ff6a5ca0 100644 --- a/src/app/shared/components/template/components/audio/audio.component.scss +++ b/src/app/shared/components/template/components/audio/audio.component.scss @@ -1,4 +1,7 @@ -@import "src/theme/mixins.scss"; +@use "/src/theme/mixins"; + +$control-background: var(--audio-control-background, var(--ion-color-primary-500)); + .container-player { background: var(--ion-color-primary-contrast); border: var(--ion-border-standard); @@ -10,7 +13,7 @@ position: relative; flex-direction: column; .top-row { - @include flex-space-between; + @include mixins.flex-space-between; .title_and_help { width: 85%; display: flex; @@ -36,13 +39,13 @@ right: 15px; .volume-icon { color: var(--ion-color-primary); - @include small-square; + @include mixins.small-square; } } } .progress-block { .audio-range { - --bar-background-active: var(--ion-btn-control-bg); + --bar-background-active: #{$control-background}; --bar-background: transparent; --bar-height: 4px; --bar-border-radius: var(--ion-border-radius-secondary); @@ -64,7 +67,7 @@ } .time { margin-top: -12px; - @include flex-space-between; + @include mixins.flex-space-between; &-value { font-size: var(--font-size-text-large); line-height: var(--line-height-text-small); @@ -72,13 +75,13 @@ } } .controls { - @include flex-space-between; + @include mixins.flex-space-between; min-width: var(--audio-controls-width); align-self: center; .rewind, .forward { ion-button { - @include large-square; + @include mixins.large-square; --background: transparent; --padding: 0; --border-radius: var(--ion-border-radius-rounded); @@ -96,8 +99,8 @@ } .play { .btn-play { - @include large-square; - --background: var(--ion-btn-control-bg); + @include mixins.large-square; + --background: #{$control-background}; --border-radius: var(--ion-border-radius-rounded); --padding: 0; --box-shadow: var(--ion-default-box-shadow); diff --git a/src/app/shared/components/template/components/audio/audio.component.spec.ts b/src/app/shared/components/template/components/audio/audio.component.spec.ts index 67fa4e1ea2..e6776f28e0 100644 --- a/src/app/shared/components/template/components/audio/audio.component.spec.ts +++ b/src/app/shared/components/template/components/audio/audio.component.spec.ts @@ -1,24 +1,24 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { IonicModule } from '@ionic/angular'; +import { async, ComponentFixture, TestBed } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; -import { AudioComponent } from './audio.component'; +import { TmplAudioComponent } from "./audio.component"; -describe('AudioComponent', () => { - let component: AudioComponent; - let fixture: ComponentFixture; +describe("TmplAudioComponent", () => { + let component: TmplAudioComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ AudioComponent ], - imports: [IonicModule.forRoot()] + declarations: [TmplAudioComponent], + imports: [IonicModule.forRoot()], }).compileComponents(); - fixture = TestBed.createComponent(AudioComponent); + fixture = TestBed.createComponent(TmplAudioComponent); component = fixture.componentInstance; fixture.detectChanges(); })); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); diff --git a/src/app/shared/components/template/components/base.ts b/src/app/shared/components/template/components/base.ts index c12f7e274c..bbd5ee27d6 100644 --- a/src/app/shared/components/template/components/base.ts +++ b/src/app/shared/components/template/components/base.ts @@ -16,18 +16,28 @@ import { TemplateContainerComponent } from "../template-container.component"; * e.g. `_row` */ export class TemplateBaseComponent implements ITemplateRowProps { + /** @ignore */ _row: FlowTypes.TemplateRow; - /** specific data used in component rendering */ + + /** + * @ignore + * specific data used in component rendering + **/ @Input() set row(row: FlowTypes.TemplateRow) { this._row = row; } - /** reference to parent template container - does not have setter as should remain static */ + + /** + * @ignore + * reference to parent template container - does not have setter as should remain static + **/ @Input() parent: TemplateContainerComponent; constructor() {} /** * Whenever actions are triggered handle in the parent template component * Actions are grouped by trigger, only emitting specific event handler (e.g. click) + * @ignore */ triggerActions(trigger: FlowTypes.TemplateRowAction["trigger"] = "click") { if (this._row.disabled && this._row.type !== "accordion_section") { @@ -39,7 +49,10 @@ export class TemplateBaseComponent implements ITemplateRowProps { return this.parent.handleActions(actionsForTrigger, this._row); } - /** Update the current value of the row by setting a local variable that matches */ + /** + * Update the current value of the row by setting a local variable that matches + * @ignore + **/ setValue(value: any) { // console.log("setting value", value); const action: FlowTypes.TemplateRowAction = { @@ -50,5 +63,6 @@ export class TemplateBaseComponent implements ITemplateRowProps { return this.parent.handleActions([action], this._row); } + /** @ignore */ trackByRow = (index: number, row: FlowTypes.TemplateRow) => this.parent.trackByRow(index, row); } diff --git a/src/app/shared/components/template/components/button/button.component.html b/src/app/shared/components/template/components/button/button.component.html index e1aeed6f18..dacf5e9d2e 100644 --- a/src/app/shared/components/template/components/button/button.component.html +++ b/src/app/shared/components/template/components/button/button.component.html @@ -1,8 +1,50 @@ - - - + + + + + + + + + + + + +
                                                                                                                                                                                + +
                                                                                                                                                                                + {{ _row.value }} +
                                                                                                                                                                                + + + +
                                                                                                                                                                                +
                                                                                                                                                                                diff --git a/src/app/shared/components/template/components/button/button.component.md b/src/app/shared/components/template/components/button/button.component.md new file mode 100644 index 0000000000..1d98070548 --- /dev/null +++ b/src/app/shared/components/template/components/button/button.component.md @@ -0,0 +1,40 @@ +# Button + +## Example + +| type | name | value |parameter_list | +| --------- | ------------ | ------ |--------- | +|button |button_par_2_1 |Style parameter Information|style: information| +|button |button_par_2_2 |Style parameter Navigation |style: navigation| + +![button example](../assets/images/button.png) + +[Google Sheet Demo](https://docs.google.com/spreadsheets/d/1OmgZICjM5EMT1KgLOU_ovDljRF_SPlpQAgkKWPrNX0s/edit#gid=569531329) +[Live Preview Demo](https://idems-debug.web.app/template/comp_button) + +## Parameters + +| Parameter | Value | Description | +| --------- | ----------- | --------- | +|disabled |false (default) | Enables the button| +|disabled |true | Disables the button and greys it out| +|style |information (default)| Button colour primary| +|style |navigation | Button colour secondary| +|style |full (default) | Button width determined by screen width| +|style |flexible | Button width equal to its content width| +|style |medium (default) | Button height medium| +|style |short | Button height short| +|style |tall | Button height tall | +|style |standard (default) | Button text colour white| +|style |alternative | Button text colour primary| +|style |medium_round | To be removed| +|style |no_shadow | To be removed| +|text_align |left (default) | Button text is left aligned within the button | +|text_align |center | Button text is centred within the button| +|text_align |right | Button text is right aligned within the button| +|button_align |center (default) | Horizontal alignment of the button on the screen is centred| +|button_align |left | Horizontal alignment of the button on the screen is left aligned| +|button_align |right | Horizontal alignment of the button on the screen is right aligned| + + + diff --git a/src/app/shared/components/template/components/button/button.component.scss b/src/app/shared/components/template/components/button/button.component.scss index 28ae4beb79..c1edd39742 100644 --- a/src/app/shared/components/template/components/button/button.component.scss +++ b/src/app/shared/components/template/components/button/button.component.scss @@ -1,3 +1,6 @@ +$background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical)); +$background-secondary: var(--button-background-secondary, var(--gradient-secondary-mid-vertical)); + :host { width: 100%; ion-button { @@ -17,7 +20,7 @@ ion-button { min-height: var(--buttons-min-height); padding: var(--regular-margin) var(--tiny-padding) 0; --border-radius: var(--ion-border-radius-standard); - --box-shadow: var(--ion-btn-dark-box-shadow); + --box-shadow: var(--ion-default-box-shadow); display: flex; width: fit-content; margin: 0 auto; @@ -33,36 +36,116 @@ ion-button[disabled] { } /// nested_color style applies semi-transparent background to match container -ion-button[data-param-style~="nested_color"] { +ion-button[data-param-style~="nested_color"], +ion-button[data-variant~="nested_color"] { --background: linear-gradient(rgb(0 0 0 / 13%) 0%, rgb(0 0 0 / 20%) 100%); } +ion-button[data-param-style~="card"], +ion-button[data-variant~="card"] { + --background: white; + --background-activated: var(--ion-color-gray-light); + --padding-top: 4px; + --padding-bottom: 4px; + color: var(--ion-color-primary); + font-weight: var(--font-weight-bold); + border: 1px solid var(--ion-color-gray-light); + border-radius: var(--ion-border-radius-secondary); + min-height: var(--buttons-short-height); + filter: drop-shadow(var(--ion-default-box-shadow)); + + ion-icon { + width: 32px; + font-size: 32px; + } + + .children { + position: absolute; + align-self: flex-end; + right: 0; + display: flex; + align-items: center; + } +} + +.button-container[data-variant~="card-portrait"] { + background-color: white; + color: var(--ion-color-primary); + font-size: var(--buttons-font-size-tiny); + font-weight: var(--font-weight-bold); + border: 1px solid var(--ion-color-gray-light); + border-radius: var(--ion-border-radius-standard); + min-height: var(--buttons-short-height); + filter: drop-shadow(var(--ion-default-box-shadow)); + display: flex; + flex-direction: column; + align-items: center; + padding: 1.5rem 0.5rem 0.5rem; + // TODO: make a variable + width: 160px; + + &:active { + background-color: var(--ion-color-gray-light); + } + + img { + width: 85%; + } + + .button-text { + width: 100%; + padding: 1rem 0 0.5rem; + text-align: center; + &.right { + text-align: right; + } + &.left { + text-align: left; + } + &.center { + text-align: center; + } + &.centre { + text-align: center; + } + } + .children { + position: absolute; + align-self: flex-end; + right: -4px; + top: -12px; + display: flex; + align-items: center; + padding: -8px; + } +} + /// TODO CC-2021-12-19 - the code below should likely be refactored to param selectors and moved .navigation { - --background: var(--ion-btn-secondary); + --background: #{$background-secondary}; } .information { - --background: var(--ion-btn-primary); + --background: #{$background-primary}; } .make_me_smile { min-height: 80px !important; max-width: fit-content; - --background: var(--ion-btn-primary); + --background: #{$background-primary}; color: var(--ion-color-primary-contrast); } .get_me_going { min-height: 80px !important; max-width: fit-content; - --background: var(--ion-btn-secondary); + --background: #{$background-secondary}; color: var(--ion-color-primary-contrast); } .options { - --background: var(--ion-btn-primary); + --background: #{$background-primary}; color: var(--ion-color-primary-contrast); } @@ -84,6 +167,12 @@ ion-button[data-param-style~="nested_color"] { margin: 0 2px 0 auto; text-align: right; } +.center { + text-align: center; +} +.centre { + text-align: center; +} // width .full { diff --git a/src/app/shared/components/template/components/button/button.component.spec.ts b/src/app/shared/components/template/components/button/button.component.spec.ts index 9f13425f51..6c315ba2e8 100644 --- a/src/app/shared/components/template/components/button/button.component.spec.ts +++ b/src/app/shared/components/template/components/button/button.component.spec.ts @@ -1,24 +1,24 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { IonicModule } from '@ionic/angular'; +import { async, ComponentFixture, TestBed } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; -import { ButtonComponent } from './button.component'; +import { TmplButtonComponent } from "./button.component"; -describe('ButtonComponent', () => { - let component: ButtonComponent; - let fixture: ComponentFixture; +describe("TmplButtonComponent", () => { + let component: TmplButtonComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ ButtonComponent ], - imports: [IonicModule.forRoot()] + declarations: [TmplButtonComponent], + imports: [IonicModule.forRoot()], }).compileComponents(); - fixture = TestBed.createComponent(ButtonComponent); + fixture = TestBed.createComponent(TmplButtonComponent); component = fixture.componentInstance; fixture.detectChanges(); })); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); diff --git a/src/app/shared/components/template/components/button/button.component.ts b/src/app/shared/components/template/components/button/button.component.ts index deea9244ef..c13acb036d 100644 --- a/src/app/shared/components/template/components/button/button.component.ts +++ b/src/app/shared/components/template/components/button/button.component.ts @@ -1,54 +1,83 @@ -import { Component, ElementRef, HostBinding, HostListener, OnInit, ViewChild } from "@angular/core"; -import { DomSanitizer, SafeHtml } from "@angular/platform-browser"; +import { Component, ElementRef, OnInit } from "@angular/core"; import { getStringParamFromTemplateRow, getBooleanParamFromTemplateRow, } from "src/app/shared/utils"; import { TemplateBaseComponent } from "../base"; +interface IButtonParams { + /** TEMPLATE PARAMETER: "variant" */ + variant: + | "alternative" + | "card" + | "card-portrait" + | "flexible" + | "full" + | "information" + | "medium" + | "navigation" + | "short" + | "standard" + | "tall"; + /** TEMPLATE PARAMETER: "style". Legacy, use "variant" instead. */ + style: string; + /** TEMPLATE PARAMETER: "disabled". If true, button is disabled and greyed out */ + disabled: boolean; + /** TEMPLATE PARAMETER: "text_align" */ + textAlign: "left" | "centre" | "right"; + /** TEMPLATE PARAMETER: "button_align" */ + buttonAlign: "left" | "centre" | "right"; + /** TEMPLATE PARAMETER: "icon". The path to an icon asset */ + icon: string; + /** TEMPLATE PARAMETER: "image_asset". The path to an image asset */ + image: string; +} + +/** + * A general-purpose button component + */ @Component({ selector: "plh-button", templateUrl: "./button.component.html", styleUrls: ["./button.component.scss"], }) export class TmplButtonComponent extends TemplateBaseComponent implements OnInit { - style: "primary" | "nested_color" = "primary"; - color: string | null; - disabled: boolean = false; - textAlign: string; - buttonAlign: string; - innerHTML: SafeHtml; - scaleFactor: number = 1; - windowWidth: number; - constructor(private elRef: ElementRef, private domSanitizer: DomSanitizer) { + params: Partial = {}; + /** @ignore */ + variantMap: { cardPortrait: boolean }; + + /** @ignore */ + constructor(private elRef: ElementRef) { super(); } - @HostListener("window:resize", ["$event"]) onResize(event) { - this.windowWidth = event.target.innerWidth - 10; - this.getScaleFactor(); - } - @HostBinding("style.--scale-factor-btn") get scale() { - return this.scaleFactor; - } - @ViewChild("ionButton", { static: true }) btn: any; + ngOnInit() { this.getParams(); - this.getScaleFactor(); - this.innerHTML = this.domSanitizer.bypassSecurityTrustHtml(this._row.value); } - getParams() { - this.style = `${getStringParamFromTemplateRow(this._row, "style", "information")} ${ + private getParams() { + this.params.style = `${getStringParamFromTemplateRow(this._row, "style", "information")} ${ this.isTwoColumns() ? "two_columns" : "" }` as any; - this.disabled = getBooleanParamFromTemplateRow(this._row, "disabled", false); + this.params.variant = getStringParamFromTemplateRow(this._row, "variant", "") + .split(",") + .join(" ") as IButtonParams["variant"]; + this.populateVariantMap(); + this.params.disabled = getBooleanParamFromTemplateRow(this._row, "disabled", false); + this.params.image = getStringParamFromTemplateRow(this._row, "image_asset", null); if (this._row.disabled) { - this.disabled = true; + this.params.disabled = true; } - this.textAlign = getStringParamFromTemplateRow(this._row, "text_align", "left"); - this.buttonAlign = getStringParamFromTemplateRow(this._row, "button_align", "center"); + this.params.textAlign = getStringParamFromTemplateRow(this._row, "text_align", null) as any; + this.params.buttonAlign = getStringParamFromTemplateRow( + this._row, + "button_align", + "center" + ) as any; + this.params.icon = getStringParamFromTemplateRow(this._row, "icon", null); } + /** Determine if the button is inside a display group with the style "two_columns" */ private isTwoColumns(): boolean { const displayGroupElement = this.elRef.nativeElement.closest(".display-group-wrapper"); if (displayGroupElement) { @@ -57,8 +86,11 @@ export class TmplButtonComponent extends TemplateBaseComponent implements OnInit return false; } } - getScaleFactor(): number { - this.scaleFactor = this.windowWidth / 470 > 1 ? 1 : this.windowWidth / ((220 + 20) * 2); - return this.scaleFactor; + + private populateVariantMap() { + const variantArray = this.params.variant.split(" "); + this.variantMap = { + cardPortrait: variantArray.includes("card-portrait"), + }; } } diff --git a/src/app/shared/components/template/components/carousel/carousel.component.html b/src/app/shared/components/template/components/carousel/carousel.component.html new file mode 100644 index 0000000000..26ec1b142b --- /dev/null +++ b/src/app/shared/components/template/components/carousel/carousel.component.html @@ -0,0 +1,11 @@ + diff --git a/src/app/shared/components/template/components/carousel/carousel.component.scss b/src/app/shared/components/template/components/carousel/carousel.component.scss new file mode 100644 index 0000000000..9a5ac885d2 --- /dev/null +++ b/src/app/shared/components/template/components/carousel/carousel.component.scss @@ -0,0 +1,9 @@ +.swiper { + width: 100%; +} + +.swiper-slide { + padding: var(--small-padding); + width: fit-content; + height: auto; +} diff --git a/src/app/shared/components/template/components/carousel/carousel.component.spec.ts b/src/app/shared/components/template/components/carousel/carousel.component.spec.ts new file mode 100644 index 0000000000..76c315c347 --- /dev/null +++ b/src/app/shared/components/template/components/carousel/carousel.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { TmplCarouselComponent } from "./carousel.component"; + +describe("CarouselComponent", () => { + let component: TmplCarouselComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [TmplCarouselComponent], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(TmplCarouselComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/template/components/carousel/carousel.component.ts b/src/app/shared/components/template/components/carousel/carousel.component.ts new file mode 100644 index 0000000000..9746696a2d --- /dev/null +++ b/src/app/shared/components/template/components/carousel/carousel.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { TemplateBaseComponent } from "../base"; +import { SwiperOptions, Swiper } from "swiper"; +import { + getBooleanParamFromTemplateRow, + getNumberParamFromTemplateRow, + getStringParamFromTemplateRow, +} from "src/app/shared/utils"; +import { TaskService } from "src/app/shared/services/task/task.service"; + +@Component({ + selector: "plh-carousel", + templateUrl: "./carousel.component.html", + styleUrls: ["./carousel.component.scss"], + encapsulation: ViewEncapsulation.None, +}) +export class TmplCarouselComponent extends TemplateBaseComponent implements OnInit { + config: SwiperOptions = {}; + swiper: Swiper; + initialSlide: number; + + constructor(private taskService: TaskService) { + super(); + } + + async ngOnInit() { + await this.getParams(); + await this.hackSetHighlightedTask(); + } + + async getParams() { + this.config.slidesPerView = + getNumberParamFromTemplateRow(this._row, "slides_per_view", null) || "auto"; + this.config.spaceBetween = getNumberParamFromTemplateRow(this._row, "space_between", 10); + this.config.loop = getBooleanParamFromTemplateRow(this._row, "loop", false); + // "loopedSlides" is required in the Slider config iff "loop" is true + if (this.config.loop) { + this.config.loopedSlides = this._row.rows.length; + } + this.config.centeredSlides = getBooleanParamFromTemplateRow(this._row, "centred_slides", true); + this.initialSlide = getNumberParamFromTemplateRow(this._row, "initial_slide_index", 0); + } + + /** Event emitter called when swiper initialised */ + public handleSwiperInitialised(swiper: Swiper) { + this.swiper = swiper; + this.swiper.slideTo(this.initialSlide, 0, false); + } + + /** When using carousel within task_group context set additional highlighted slide from task data */ + private async hackSetHighlightedTask() { + const taskGroupsList = getStringParamFromTemplateRow(this._row, "task_group_data", null); + if (taskGroupsList) { + const highlightedTaskGroup = this.taskService.getHighlightedTaskGroup(); + if (highlightedTaskGroup) { + this.initialSlide = await this.taskService.getHighlightedTaskGroupIndex( + highlightedTaskGroup, + taskGroupsList + ); + } + } + } +} diff --git a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.html b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.html index 339191007a..397245aca7 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.html +++ b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.html @@ -7,10 +7,6 @@
                                                                                                                                                                                @@ -31,10 +27,6 @@ [class]="customAnswerClass" (keyup.enter)="enterCustomAnswer()" [placeholder]="placeholder" - [ngClass]="{ - active: style === 'active' && form.get('customAnswer').value === selectedValue, - passive: style === 'passive' && form.get('customAnswer').value === selectedValue - }" [class.checked-radio]="form.get('customAnswer').value === selectedValue" > diff --git a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.scss b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.scss index 9092c33f06..c34e86d0f9 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.scss +++ b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.scss @@ -1,4 +1,10 @@ -@import "src/theme/mixins.scss"; +@use "/src/theme/mixins"; + +$background-with-value: var( + --combo-box-background-with-value, + var(--gradient-primary-light-vertical) +); + :host { display: contents; } @@ -52,7 +58,7 @@ border: var(--ion-border-standard); border-radius: var(--ion-border-radius-secondary); box-shadow: var(--ion-default-box-shadow); - @include flex-centered; + @include mixins.flex-centered; input { display: none; } @@ -60,7 +66,7 @@ padding: 5px; width: 100%; text-align: center; - @include flex-centered; + @include mixins.flex-centered; font-weight: var(--font-weight-standard); font-size: var(--combo-box-font-size-standard); color: var(--ion-color-primary); @@ -69,13 +75,7 @@ } } .checked-radio { - background: var(--combo-box-with-answer-bg); - } - .active { - background: var(--combo-box-active-with-answer-bg); - } - .passive { - background: var(--combo-box-passive-with-answer-bg); + background: $background-with-value; } } } diff --git a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts index a33a6b9827..3fb9c64781 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts +++ b/src/app/shared/components/template/components/combo-box/combo-box-modal/combo-box-modal.component.ts @@ -5,14 +5,12 @@ import { getNumberParamFromTemplateRow, getParamFromTemplateRow, getStringParamFromTemplateRow, + IAnswerListItem, + parseAnswerList, } from "src/app/shared/utils"; import { FormBuilder, FormControl, FormGroup } from "@angular/forms"; import { ModalController } from "@ionic/angular"; - -interface AnswerBody { - name: string | null; - text: string | null; -} +import { objectToArray } from "../../../utils"; @Component({ selector: "combo-box-modal", @@ -26,7 +24,7 @@ export class ComboBoxModalComponent implements OnInit { @Input() customAnswerSelected: boolean; @Input() style: string; formData: FormGroup | null; - valuesFromListAnswers: AnswerBody[]; + valuesFromListAnswers: IAnswerListItem[]; textTitle: string | null; inputAllowed: boolean = false; form: FormGroup; @@ -41,7 +39,7 @@ export class ComboBoxModalComponent implements OnInit { } getParams() { - this.valuesFromListAnswers = this.convertToObject( + this.valuesFromListAnswers = parseAnswerList( getParamFromTemplateRow(this.row, "answer_list", null) ); this.textTitle = getStringParamFromTemplateRow(this.row, "text", null); @@ -65,27 +63,6 @@ export class ComboBoxModalComponent implements OnInit { } } - convertToObject(answers_list: string[]): AnswerBody[] { - let answers: AnswerBody[] = []; - if (answers_list) { - answers_list.map((item) => { - const obj: AnswerBody = { - text: null, - name: null, - }; - const stringProperties = item.split("|"); - stringProperties.forEach((s) => { - const [field, value] = s.split(":").map((v) => v.trim()); - if (field && value) { - obj[field] = value; - } - }); - answers.push(obj); - }); - return answers; - } - } - buildForm() { this.form = this.fb.group({ answer: new FormControl(null, []), diff --git a/src/app/shared/components/template/components/combo-box/combo-box.component.html b/src/app/shared/components/template/components/combo-box/combo-box.component.html index c04e0bd586..2b03369352 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box.component.html +++ b/src/app/shared/components/template/components/combo-box/combo-box.component.html @@ -3,11 +3,8 @@ (click)="openModal()" [class.placeholder-style]="(!_row.value && placeholder) || prioritisePlaceholder" [ngClass]="{ - active: _row.value && style === 'active', - 'active-no-value': !_row.value && style === 'active', - passive: _row.value && style === 'passive', - 'passive-no-value': (!_row.value && style === 'passive') || prioritisePlaceholder, - 'default-no-value': !checkIfContainsDefaultStyles && !_row.value + 'with-value': _row.value, + 'no-value': !_row.value }" [disabled]="_row.disabled" > diff --git a/src/app/shared/components/template/components/combo-box/combo-box.component.scss b/src/app/shared/components/template/components/combo-box/combo-box.component.scss index a5a7af9fd4..f581915456 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box.component.scss +++ b/src/app/shared/components/template/components/combo-box/combo-box.component.scss @@ -1,3 +1,10 @@ +$placeholder-text: var(--combo-box-placeholder-text, var(--ion-color-primary-transparent)); +$background-no-value: var(--combo-box-background-no-value, transparent); +$background-with-value: var( + --combo-box-background-with-value, + var(--gradient-primary-light-vertical) +); + .open-combobox { outline: none; width: 100%; @@ -6,7 +13,7 @@ filter: drop-shadow(var(--ion-default-box-shadow)); border-radius: var(--ion-border-radius-secondary); font-weight: var(--font-weight-standard); - background: var(--combo-box-with-answer-bg); + background: $background-no-value; font-size: var(--combo-box-font-size-standard); line-height: var(--line-height-text-large); text-align: center; @@ -18,20 +25,11 @@ } .placeholder-style { - color: var(--combo-box-placeholder-primary); -} -.active { - background: var(--combo-box-active-with-answer-bg); -} -.active-no-value { - background: var(--ion-color-primary-contrast); -} -.passive { - background: var(--combo-box-passive-with-answer-bg); + color: $placeholder-text; } -.passive-no-value { - background: transparent; +.with-value { + background: $background-with-value; } -.default-no-value { - background: var(--combo-box-no-answer-bg); +.no-value { + background: $background-no-value; } diff --git a/src/app/shared/components/template/components/combo-box/combo-box.component.ts b/src/app/shared/components/template/components/combo-box/combo-box.component.ts index 323c1cd1d7..5e309e8bfe 100644 --- a/src/app/shared/components/template/components/combo-box/combo-box.component.ts +++ b/src/app/shared/components/template/components/combo-box/combo-box.component.ts @@ -6,12 +6,12 @@ import { getBooleanParamFromTemplateRow, getParamFromTemplateRow, getStringParamFromTemplateRow, + parseAnswerList, } from "src/app/shared/utils"; import { TemplateBaseComponent } from "../base"; import { ITemplateRowProps } from "../../models"; import { TemplateService } from "../../services/template.service"; import { ReplaySubject } from "rxjs"; -import { takeUntil } from "rxjs/operators"; @Component({ selector: "plh-combo-box", @@ -28,24 +28,27 @@ export class TmplComboBoxComponent style: string; text = ""; customAnswerSelected: boolean = false; - checkIfContainsDefaultStyles: boolean = false; - destroy$ = new ReplaySubject(1); + customAnswerText: string; + private componentDestroyed$ = new ReplaySubject(1); constructor(private modalController: ModalController, private templateService: TemplateService) { super(); } ngOnInit(): void { this.getParams(); - const listAnswers: string[] = getParamFromTemplateRow(this._row, "answer_list", null); + const answerList = parseAnswerList(getParamFromTemplateRow(this._row, "answer_list", [])); + this.customAnswerSelected = - listAnswers && this._row.value - ? !listAnswers.find((x) => x.includes(this._row.value)) + answerList.length > 0 && this._row.value + ? !answerList.find((x) => x.name === this._row.value) : false; - if (!this.checkIfContainsDefaultStyles) { - this.setCustomStyle(); + + this.text = ""; + if (this._row.value) { + this.text = this.customAnswerSelected + ? this.customAnswerText + : answerList.find((answerListItem) => answerListItem.name === this._row.value)?.text; } - this.checkTheme(); - this.text = this.getText(this._row.value, listAnswers); } getParams() { @@ -56,21 +59,6 @@ export class TmplComboBoxComponent false ); this.style = getStringParamFromTemplateRow(this._row, "style", ""); - this.checkIfContainsDefaultStyles = - this.style.includes("active") || this.style.includes("passive"); - } - - getText(aValue: string, listAnswers: string[]): string { - if (aValue) { - if (aValue === "other") { - return this._row.parameter_list["customAnswer"]; - } - const textFromList = listAnswers - .find((answer: string) => answer.includes(aValue)) - ?.match(/(?<=text:).+/)[0] - .trim(); - return textFromList ? textFromList : aValue; - } } async openModal() { @@ -89,52 +77,19 @@ export class TmplComboBoxComponent modal.onDidDismiss().then(async (data) => { this.prioritisePlaceholder = false; - const value = data?.data?.answer?.name; this.text = data?.data?.answer?.text; this.customAnswerSelected = data?.data?.customAnswerSelected; - if (this.customAnswerSelected) { - this._row.parameter_list["customAnswer"] = data?.data?.answer?.text; - } else { - this._row.parameter_list["customAnswer"] = null; - } - await this.setValue(value); + this.customAnswerText = this.customAnswerSelected + ? (this.text = data?.data?.answer?.text) + : ""; + await this.setValue(data?.data?.answer?.name); await this.triggerActions("changed"); }); await modal.present(); } - setCustomStyle() { - const currentBgColor = document.body.style - .getPropertyValue("--ion-background-color") - .toLocaleLowerCase(); - const nameBgColor: string = - currentBgColor === "#FFF6D6".toLocaleLowerCase() ? "active" : "passive"; - return this.setTheme(nameBgColor); - } - - setTheme(themeName: string) { - document.body.style.setProperty( - `--combo-box-no-answer-bg`, - `var(--combo-box-${themeName}-no-answer-bg` - ); - document.body.style.setProperty( - `--combo-box-with-answer-bg`, - `var(--combo-box-${themeName}-with-answer-bg` - ); - } - - checkTheme() { - return ( - !this.checkIfContainsDefaultStyles && - this.templateService.currentTheme.pipe(takeUntil(this.destroy$)).subscribe((value) => { - this.style = value; - this.setTheme(value); - }) - ); - } - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); + this.componentDestroyed$.next(true); + this.componentDestroyed$.complete(); } } diff --git a/src/app/shared/components/template/components/dashed-box/dashed-box.component.scss b/src/app/shared/components/template/components/dashed-box/dashed-box.component.scss index 8a6506d6de..924cfbd402 100644 --- a/src/app/shared/components/template/components/dashed-box/dashed-box.component.scss +++ b/src/app/shared/components/template/components/dashed-box/dashed-box.component.scss @@ -1,8 +1,8 @@ -@import "src/theme/mixins.scss"; +@use "/src/theme/mixins"; .box-wrapper { .item { - @include flex-centered; + @include mixins.flex-centered; margin-left: auto; margin-right: auto; width: 100%; @@ -12,12 +12,13 @@ border-radius: var(--ion-border-radius-secondary); position: relative; .text { + white-space: pre-line; text-align: center; font-size: var(--font-size-text-medium); line-height: var(--line-height-text-largest); } .icon { - @include small-square; + @include mixins.small-square; position: absolute; img { width: 100%; diff --git a/src/app/shared/components/template/components/dashed-box/dashed-box.component.ts b/src/app/shared/components/template/components/dashed-box/dashed-box.component.ts index 2e81e37036..89e0ea59f0 100644 --- a/src/app/shared/components/template/components/dashed-box/dashed-box.component.ts +++ b/src/app/shared/components/template/components/dashed-box/dashed-box.component.ts @@ -3,6 +3,7 @@ import { TemplateBaseComponent } from "../base"; import { ITemplateRowProps } from "../../models"; import { getStringParamFromTemplateRow } from "../../../../utils"; import { DomSanitizer, SafeHtml } from "@angular/platform-browser"; +import marked from "marked"; @Component({ selector: "plh-dashed-box", @@ -11,7 +12,8 @@ import { DomSanitizer, SafeHtml } from "@angular/platform-browser"; }) export class TmplDashedBoxComponent extends TemplateBaseComponent - implements ITemplateRowProps, OnInit { + implements ITemplateRowProps, OnInit +{ style: string; icon_src: string | null; icon_position: string; @@ -22,7 +24,7 @@ export class TmplDashedBoxComponent ngOnInit() { this.getParams(); - this.innerHTML = this.domSanitizer.bypassSecurityTrustHtml(this._row.value); + this.innerHTML = this.domSanitizer.bypassSecurityTrustHtml(marked(this._row.value.toString())); } getParams() { diff --git a/src/app/shared/components/template/components/data-items/data-items.component.html b/src/app/shared/components/template/components/data-items/data-items.component.html new file mode 100644 index 0000000000..d17627aa75 --- /dev/null +++ b/src/app/shared/components/template/components/data-items/data-items.component.html @@ -0,0 +1,7 @@ + diff --git a/src/app/shared/components/template/components/data-items/data-items.component.scss b/src/app/shared/components/template/components/data-items/data-items.component.scss new file mode 100644 index 0000000000..92d692cdd1 --- /dev/null +++ b/src/app/shared/components/template/components/data-items/data-items.component.scss @@ -0,0 +1,3 @@ +:host { + display: contents; +} diff --git a/src/app/shared/components/template/components/data-items/data-items.component.spec.ts b/src/app/shared/components/template/components/data-items/data-items.component.spec.ts new file mode 100644 index 0000000000..403de49c5a --- /dev/null +++ b/src/app/shared/components/template/components/data-items/data-items.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { TmplDataItemsComponent } from "./data-items.component"; + +describe("DataItemsComponent", () => { + let component: TmplDataItemsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TmplDataItemsComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(TmplDataItemsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/template/components/data-items/data-items.component.ts b/src/app/shared/components/template/components/data-items/data-items.component.ts new file mode 100644 index 0000000000..7e4e3dcc5e --- /dev/null +++ b/src/app/shared/components/template/components/data-items/data-items.component.ts @@ -0,0 +1,172 @@ +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Injector, + Input, +} from "@angular/core"; +import { debounceTime, Subscription } from "rxjs"; +import { DynamicDataService } from "src/app/shared/services/dynamic-data/dynamic-data.service"; +import { FlowTypes } from "../../models"; +import { ItemProcessor } from "../../processors/item"; +import { TemplateRowService } from "../../services/instance/template-row.service"; +import { TemplateVariablesService } from "../../services/template-variables.service"; +import { TemplateBaseComponent } from "../base"; + +@Component({ + selector: "plh-data-items", + templateUrl: "./data-items.component.html", + styleUrls: ["./data-items.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +/** + * Data Items are a structural row component that subscribes to a dynamic data list + * and re-renders child components on change + * + * TODO + * - Would be better if can render children without container (like regular items) + * - Should be refactored into structural container instead of display component + * - Could possibly refactor to feature module including services + */ +export class TmplDataItemsComponent extends TemplateBaseComponent { + public itemRows: FlowTypes.TemplateRow[] = []; + + private dataListName: string; + private parameterList: Record; + + private dataQuery$: Subscription; + + @Input() set row(row: FlowTypes.TemplateRow) { + this._row = row; + this.dataListName = this.hackGetRawDataListName(row); + this.parameterList = this.hackGetRawParameterList(row); + this.subscribeToData(); + } + + constructor( + private dynamicDataService: DynamicDataService, + private templateVariablesService: TemplateVariablesService, + private injector: Injector, + private cdr: ChangeDetectorRef + ) { + super(); + } + + private async subscribeToData() { + if (this.dataQuery$) { + this.dataQuery$.unsubscribe(); + } + if (this.dataListName) { + await this.dynamicDataService.ready(); + const query = await this.dynamicDataService.query$("data_list", this.dataListName); + this.dataQuery$ = query.pipe(debounceTime(50)).subscribe(async (data) => { + await this.renderItems(data, this._row.rows, this.parameterList); + }); + } else { + await this.renderItems([], [], {}); + } + } + + private async renderItems( + itemDataList: any[], + rows: FlowTypes.TemplateRow[], + parameterList: any + ) { + const parsedItemDataList = await this.parseDataList(itemDataList); + const itemRows = new ItemProcessor(parsedItemDataList, parameterList).process(rows); + const parsedItemRows = await this.hackProcessRows(itemRows); + const replacedActionRows = this.setActionListMeta(parsedItemRows, parsedItemDataList); + // TODO - deep diff and only update changed + this.itemRows = replacedActionRows; + this.cdr.markForCheck(); + } + + /** + * Update any action list set_item args to contain name of current data list and item id + * and set_items action to include all currently displayed rows + * */ + private setActionListMeta( + rows: FlowTypes.TemplateRow[], + dataList: { + [index: string]: any; + } + ) { + return rows.map((r) => { + if (r.action_list) { + r.action_list = r.action_list.map((a) => { + if (a.action_id === "set_item") { + a.args = [this.dataListName, r._evalContext.itemContext.id]; + } + if (a.action_id === "set_items") { + // TODO - add a check for @item refs and replace parameter list with correct values + // for each individual item (default will be just to pick the first) + a.args = [this.dataListName, Object.values(dataList).map((v) => v.id)]; + } + return a; + }); + } + return r; + }); + } + + /** + * Ordinarily rows would be processed as part of the regular template processing, + * however this must be bypassed to allow multiple reprocessing on item updates + */ + private async hackProcessRows(rows) { + const processor = new TemplateRowService(this.injector, { + name: "", + template: { + rows, + }, + row: { + rows: [], + }, + } as any); + await processor.processContainerTemplateRows(); + return processor.renderedRows; + } + + /** + * If datalist referenced as @data.some_list it will already be parsed, so extract + * name from raw values. + * Alternatively any list provided as a string value can be returned directly + * */ + private hackGetRawDataListName(row: FlowTypes.TemplateRow) { + if (!row.value) return; + if (typeof row.value === "string") { + return row.value; + } + // HACK - if list name contains '_list' template.parser will parse as an array instead of string + if (Array.isArray(row.value)) { + return row.value[0]; + } + // Extract raw name in case full datalist object supplied in place of name + return row._dynamicFields?.value?.[0]?.fieldName; + } + + /** Copied from template-row service */ + private hackGetRawParameterList(row: FlowTypes.TemplateRow) { + const list = row.parameter_list; + const unparsedFilter = row._dynamicFields?.parameter_list?.filter?.[0].fullExpression; + if (list && unparsedFilter) { + list.filter = unparsedFilter; + } + return list; + } + /** Copied from template-row service */ + private async parseDataList(dataList: { [id: string]: any }) { + const parsed: { [id: string]: any } = {}; + for (const [listKey, listValue] of Object.entries(dataList)) { + parsed[listKey] = listValue; + for (const [itemKey, itemValue] of Object.entries(listValue)) { + if (typeof itemValue === "string") { + parsed[listKey][itemKey] = await this.templateVariablesService.evaluateConditionString( + itemValue + ); + } + } + } + return parsed; + } +} diff --git a/src/app/shared/components/template/components/drawer/drawer.component.html b/src/app/shared/components/template/components/drawer/drawer.component.html new file mode 100644 index 0000000000..e1deec9264 --- /dev/null +++ b/src/app/shared/components/template/components/drawer/drawer.component.html @@ -0,0 +1,17 @@ +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                +
                                                                                                                                                                                +

                                                                                                                                                                                {{ _row.value }}

                                                                                                                                                                                +
                                                                                                                                                                                + +
                                                                                                                                                                                + + +
                                                                                                                                                                                +
                                                                                                                                                                                diff --git a/src/app/shared/components/template/components/drawer/drawer.component.scss b/src/app/shared/components/template/components/drawer/drawer.component.scss new file mode 100644 index 0000000000..fcddf4db67 --- /dev/null +++ b/src/app/shared/components/template/components/drawer/drawer.component.scss @@ -0,0 +1,67 @@ +@use "/src/theme/mixins"; + +$navigation-bar-height: var(--navigation-bar-height); +$handle-height: var(--drawer-handle-height); +// The value of the property --min-height applied to ion-toolbar, not directly accessible +$header-height: 56px; + +// Element to remain inline within scrollable content to ensure no content lost behind drawer handle +.bottom-spacer { + width: 100%; + height: $handle-height; +} + +.drawer { + position: fixed; + top: calc(100vh - $header-height - $navigation-bar-height - $handle-height); + left: 0px; + width: 100%; + border-style: solid solid none solid; + border-color: var(--ion-color-primary); + border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0; + background-color: var(--ion-background-color); + z-index: 100; + + &.secondary { + background-color: var(--ion-color-secondary); + border: none; + .handle { + &:active { + background-color: var(--ion-color-secondary-600); + } + p { + color: white; + } + .handle-icon { + background-color: white; + } + } + } + + .handle { + height: $handle-height; + @include mixins.flex-centered; + flex-direction: column; + border-radius: var(--ion-border-radius-standard) var(--ion-border-radius-standard) 0 0; + p { + text-align: center; + font-weight: var(--font-weight-bold); + font-size: var(--font-size-subtitle-small); + color: var(--ion-color-primary); + margin: 0px; + } + .handle-icon { + width: 50px; + height: 2px; + margin: 8px 0; + background-color: var(--ion-color-primary); + } + &:active { + background-color: var(--ion-color-gray-100); + } + } + + .content { + padding: var(--regular-padding) var(--regular-padding) 30px; + } +} diff --git a/src/app/shared/components/template/components/drawer/drawer.component.spec.ts b/src/app/shared/components/template/components/drawer/drawer.component.spec.ts new file mode 100644 index 0000000000..62e75a2640 --- /dev/null +++ b/src/app/shared/components/template/components/drawer/drawer.component.spec.ts @@ -0,0 +1,26 @@ +import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; +import { IonicModule } from "@ionic/angular"; + +import { TmplDrawerComponent } from "./drawer.component"; + +describe("DrawerComponent", () => { + let component: TmplDrawerComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [TmplDrawerComponent], + imports: [IonicModule.forRoot()], + }).compileComponents(); + + fixture = TestBed.createComponent(TmplDrawerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }) + ); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/template/components/drawer/drawer.component.ts b/src/app/shared/components/template/components/drawer/drawer.component.ts new file mode 100644 index 0000000000..4aa9ad20ec --- /dev/null +++ b/src/app/shared/components/template/components/drawer/drawer.component.ts @@ -0,0 +1,42 @@ +import { Component, ElementRef, ViewChild, OnInit } from "@angular/core"; +import { getStringParamFromTemplateRow } from "src/app/shared/utils"; +import { TemplateBaseComponent } from "../base"; + +@Component({ + selector: "plh-drawer", + templateUrl: "./drawer.component.html", + styleUrls: ["./drawer.component.scss"], +}) +export class TmplDrawerComponent extends TemplateBaseComponent implements OnInit { + @ViewChild("drawer") drawer: ElementRef; + + isOpen = false; + style: string; + + ngOnInit() { + this.getParams(); + } + + getParams() { + this.style = getStringParamFromTemplateRow(this._row, "style", null); + } + + toggleDrawer() { + const drawer = this.drawer.nativeElement; + if (this.isOpen) { + drawer.style.transition = "transform .3s ease-out"; + drawer.style.transform = ""; + this.isOpen = false; + } else { + drawer.style.transition = "transform .3s ease-out"; + drawer.style.transform = `translateY(${-this.getOpenHeight()}px)`; + this.isOpen = true; + } + } + + private getOpenHeight() { + const drawer = this.drawer.nativeElement; + const handle = drawer.children[0]; + return drawer.offsetHeight - handle.offsetHeight - 10; + } +} diff --git a/src/app/shared/components/template/components/icon-banner/icon-banner.component.scss b/src/app/shared/components/template/components/icon-banner/icon-banner.component.scss index 3b15d49c6a..64b558608b 100644 --- a/src/app/shared/components/template/components/icon-banner/icon-banner.component.scss +++ b/src/app/shared/components/template/components/icon-banner/icon-banner.component.scss @@ -1,4 +1,4 @@ -@import "../../../../../../theme/mixins.scss"; +@use "/src/theme/mixins"; .icon-banner-wrapper { width: 373px; @@ -19,7 +19,7 @@ margin-bottom: 10px; } .image { - @include flex-centered; + @include mixins.flex-centered; width: 73px; height: 73px; background: var(--ion-color-primary-contrast); diff --git a/src/app/shared/components/template/components/icon-banner/icon-banner.component.spec.ts b/src/app/shared/components/template/components/icon-banner/icon-banner.component.spec.ts index d04b8fe82d..d3da26a4a3 100644 --- a/src/app/shared/components/template/components/icon-banner/icon-banner.component.spec.ts +++ b/src/app/shared/components/template/components/icon-banner/icon-banner.component.spec.ts @@ -1,19 +1,19 @@ import { async, ComponentFixture, TestBed } from "@angular/core/testing"; import { IonicModule } from "@ionic/angular"; -import { IconBannerComponent } from "./icon-banner.component"; +import { TmplIconBannerComponent } from "./icon-banner.component"; -describe("IconBannerComponent", () => { - let component: IconBannerComponent; - let fixture: ComponentFixture; +describe("TmplIconBannerComponent", () => { + let component: TmplIconBannerComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [IconBannerComponent], + declarations: [TmplIconBannerComponent], imports: [IonicModule.forRoot()], }).compileComponents(); - fixture = TestBed.createComponent(IconBannerComponent); + fixture = TestBed.createComponent(TmplIconBannerComponent); component = fixture.componentInstance; fixture.detectChanges(); })); diff --git a/src/app/shared/components/template/components/icon-banner/icon-banner.component.ts b/src/app/shared/components/template/components/icon-banner/icon-banner.component.ts index ad4e436b3b..cb0733656b 100644 --- a/src/app/shared/components/template/components/icon-banner/icon-banner.component.ts +++ b/src/app/shared/components/template/components/icon-banner/icon-banner.component.ts @@ -10,7 +10,8 @@ import { getStringParamFromTemplateRow } from "../../../../utils"; }) export class TmplIconBannerComponent extends TemplateBaseComponent - implements ITemplateRowProps, OnInit { + implements ITemplateRowProps, OnInit +{ image_src: string | null; title: string | null; text: string | null; diff --git a/src/app/shared/components/template/components/index.ts b/src/app/shared/components/template/components/index.ts index badcf96b05..527e39de78 100644 --- a/src/app/shared/components/template/components/index.ts +++ b/src/app/shared/components/template/components/index.ts @@ -1,154 +1,193 @@ +/* eslint sort-keys: "error" */ +import { Type } from "@angular/core"; import { FlowTypes, ITemplateRowProps } from "../models"; import { TemplateContainerComponent } from "../template-container.component"; -import { Type } from "@angular/core"; /*************************************************************************************** * Template Components **************************************************************************************/ - -import { AnimatedSectionComponent } from "./layout/animated_section"; import { AccordionSectionComponent } from "./layout/accordion_section"; -import { TmplAdvancedDashedBoxComponent } from "./layout/advanced-dashed-box/advanced-dashed-box.component"; +import { AnimatedSectionComponent } from "./layout/animated_section"; import { AnimatedSectionGroupComponent } from "./layout/animated_section_group"; +import { ComboBoxModalComponent } from "./combo-box/combo-box-modal/combo-box-modal.component"; import { FormComponent } from "./layout/form"; -import { WorkshopsComponent } from "./layout/workshops_accordion"; import { NavGroupComponent } from "./layout/nav_group"; -import { TmplAudioComponent } from "./audio/audio.component"; +import { PLHDebugToggleComponent } from "../../debug-toggle"; +import { RoundIconButtonComponent } from "./round-icon-button/round-icon-button.component"; +import { SelectTextComponent } from "./select-text/select-text.component"; +import { SquareIconButtonComponent } from "./square-icon-button/square-icon-button.component"; import { TemplateBaseComponent } from "./base"; import { TemplateDebuggerComponent } from "./debugger"; +import { TemplateHTMLComponent } from "./html/html.component"; +import { TemplatePopupComponent } from "./layout/popup"; + +import { TmplAccordionComponent } from "./accordion/accordion.component"; +import { TmplAdvancedDashedBoxComponent } from "./layout/advanced-dashed-box/advanced-dashed-box.component"; +import { TmplAnimatedSlidesComponent } from "./animated-slides/animated-slides.component"; +import { TmplAudioComponent } from "./audio/audio.component"; import { TmplButtonComponent } from "./button/button.component"; +import { TmplCarouselComponent } from "./carousel/carousel.component"; +import { TmplComboBoxComponent } from "./combo-box/combo-box.component"; +import { TmplDashedBoxComponent } from "./dashed-box/dashed-box.component"; +import { TmplDataItemsComponent } from "./data-items/data-items.component"; +import { TmplDisplayGridComponent } from "./layout/display-grid/display-grid.component"; import { TmplDisplayGroupComponent } from "./layout/display_group"; -import { TmplImageComponent } from "./image"; +import { TmplDrawerComponent } from "./drawer/drawer.component"; import { TmplHelpIconComponent } from "./help-icon"; -import { TmplTextComponent } from "./text"; -import { TmplParentPointCounterComponent } from "./parent-point-counter/parent-point-counter.component"; -import { TmplTimerComponent } from "./timer/timer.component"; -import { TmplTitleComponent } from "./title"; -import { TmplSubtitleComponent } from "./subtitle"; -import { TmplToggleBarComponent } from "./toggle-bar/toggle-bar"; -import { TmplVideoComponent } from "./video"; +import { TmplIconBannerComponent } from "./icon-banner/icon-banner.component"; +import { TmplImageComponent } from "./image"; +import { TmplLatexComponent } from "./latex/latex.component"; +import { TmplLottieAnimation } from "./lottie-animation"; +import { TmplNavigationBarComponent } from "./navigation-bar/navigation-bar.component"; import { TmplNumberComponent } from "./number-selector/number-selector.component"; -import { RoundIconButtonComponent } from "./round-icon-button/round-icon-button.component"; -import { SquareIconButtonComponent } from "./square-icon-button/square-icon-button.component"; -import { TmplSliderComponent } from "./slider/slider.component"; +import { TmplOdkFormComponent } from "./odk-form/odk-form.component"; +import { TmplParentPointBoxComponent } from "./points-item/points-item.component"; +import { TmplParentPointCounterComponent } from "./parent-point-counter/parent-point-counter.component"; +import { TmplPdfComponent } from "./pdf/pdf.component"; +import { TmplQRCodeComponent } from "./qr-code/qr-code.component"; +import { TmplRadioButtonGridComponent } from "./radio-button-grid/radio-button-grid.component"; import { TmplRadioGroupComponent } from "./radio-group/radio-group.component"; -import { TmplTileComponent } from "./tile-component/tile-component.component"; import { TmplSimpleCheckboxComponent } from "./simple-checkbox/simple-checkbox.component"; -import { TmplTextBoxComponent } from "./text-box/text-box.component"; +import { TmplSliderComponent } from "./slider/slider.component"; +import { TmplSubtitleComponent } from "./subtitle"; +import { TmplTaskCardComponent } from "./task-card/task-card.component"; +import { TmplTaskProgressBarComponent } from "./task-progress-bar/task-progress-bar.component"; import { TmplTextAreaComponent } from "./text-area/text-area.component"; -import { TmplComboBoxComponent } from "./combo-box/combo-box.component"; -import { ComboBoxModalComponent } from "./combo-box/combo-box-modal/combo-box-modal.component"; -import { TemplatePopupComponent } from "./layout/popup"; -import { TmplIconBannerComponent } from "./icon-banner/icon-banner.component"; -import { TmplDashedBoxComponent } from "./dashed-box/dashed-box.component"; -import { TmplParentPointBoxComponent } from "./points-item/points-item.component"; -import { TmplLottieAnimation } from "./lottie-animation"; -import { PLHDebugToggleComponent } from "../../debug-toggle"; -import { SelectTextComponent } from "./select-text/select-text.component"; -import { TemplateHTMLComponent } from "./html/html.component"; -import { TmplAccordionComponent } from "./accordion/accordion.component"; +import { TmplTextBoxComponent } from "./text-box/text-box.component"; +import { TmplTextComponent } from "./text"; +import { TmplTileComponent } from "./tile-component/tile-component.component"; +import { TmplTitleComponent } from "./title"; +import { TmplTimerComponent } from "./timer/timer.component"; +import { TmplToggleBarComponent } from "./toggle-bar/toggle-bar"; +import { TmplVideoComponent } from "./video"; + +import { WorkshopsComponent } from "./layout/workshops_accordion"; /** All components should be exported as a single array for easy module import */ export const TEMPLATE_COMPONENTS = [ + // no prefix + AccordionSectionComponent, + AnimatedSectionComponent, + AnimatedSectionGroupComponent, + ComboBoxModalComponent, + FormComponent, + NavGroupComponent, + RoundIconButtonComponent, + SelectTextComponent, + SquareIconButtonComponent, TemplateBaseComponent, TemplateDebuggerComponent, + TemplateHTMLComponent, TemplatePopupComponent, - TmplTextComponent, - TmplParentPointCounterComponent, - AnimatedSectionGroupComponent, - WorkshopsComponent, - TmplTitleComponent, - TmplSubtitleComponent, - TmplToggleBarComponent, - TmplDisplayGroupComponent, + // tmpl prefix + TmplAccordionComponent, + TmplAdvancedDashedBoxComponent, + TmplAnimatedSlidesComponent, TmplAudioComponent, TmplButtonComponent, - TmplImageComponent, + TmplCarouselComponent, + TmplComboBoxComponent, + TmplDashedBoxComponent, + TmplDataItemsComponent, + TmplDisplayGridComponent, + TmplDisplayGroupComponent, + TmplDrawerComponent, TmplHelpIconComponent, - TmplVideoComponent, - AnimatedSectionComponent, - AccordionSectionComponent, - TmplAdvancedDashedBoxComponent, - FormComponent, - TmplTimerComponent, - TmplSliderComponent, + TmplIconBannerComponent, + TmplImageComponent, + TmplLatexComponent, + TmplLottieAnimation, + TmplNavigationBarComponent, TmplNumberComponent, - NavGroupComponent, - TmplButtonComponent, - RoundIconButtonComponent, - SquareIconButtonComponent, + TmplOdkFormComponent, + TmplParentPointBoxComponent, + TmplParentPointCounterComponent, + TmplPdfComponent, + TmplQRCodeComponent, + TmplRadioButtonGridComponent, TmplRadioGroupComponent, - TmplTileComponent, TmplSimpleCheckboxComponent, - TmplTextBoxComponent, + TmplSliderComponent, + TmplSubtitleComponent, + TmplTaskCardComponent, + TmplTaskProgressBarComponent, TmplTextAreaComponent, - TmplComboBoxComponent, - ComboBoxModalComponent, - TmplIconBannerComponent, - TmplDashedBoxComponent, - TmplParentPointBoxComponent, - TmplLottieAnimation, - SelectTextComponent, - TemplateHTMLComponent, - TmplAccordionComponent, + TmplTextBoxComponent, + TmplTextComponent, + TmplTileComponent, + TmplTimerComponent, + TmplTitleComponent, + TmplToggleBarComponent, + TmplVideoComponent, + // no prefix + WorkshopsComponent, ]; /*************************************************************************************** * Template component mapping **************************************************************************************/ - export const TEMPLATE_COMPONENT_MAPPING: Record< FlowTypes.TemplateRowType, Type > = { accordion: TmplAccordionComponent, - text: TmplTextComponent, - title: TmplTitleComponent, - subtitle: TmplSubtitleComponent, - toggle_bar: TmplToggleBarComponent, - animated_section_group: AnimatedSectionGroupComponent, - workshops_accordion: WorkshopsComponent, accordion_section: AccordionSectionComponent, advanced_dashed_box: TmplAdvancedDashedBoxComponent, - form: FormComponent, animated_section: AnimatedSectionComponent, - display_group: TmplDisplayGroupComponent, + animated_section_group: AnimatedSectionGroupComponent, + animated_slides: TmplAnimatedSlidesComponent, audio: TmplAudioComponent, button: TmplButtonComponent, - image: TmplImageComponent, - help_icon: TmplHelpIconComponent, - parent_point_counter: TmplParentPointCounterComponent, - // set variable and nested properties are handled by parent - set_variable: null as any, - nested_properties: null as any, - set_field: null as any, - set_local: null as any, - set_theme: null as any, + carousel: TmplCarouselComponent, combo_box: TmplComboBoxComponent, - set_default: null as any, - update_action_list: null as any, - text_box: TmplTextBoxComponent, - text_area: TmplTextAreaComponent, - // TODO - handle display_theme and other properties that should be inherited to child components + dashed_box: TmplDashedBoxComponent, + data_items: TmplDataItemsComponent, + debug_toggle: PLHDebugToggleComponent as any, + display_grid: TmplDisplayGridComponent, + display_group: TmplDisplayGroupComponent, display_theme: null as any, - template: TemplateContainerComponent as any, - video: TmplVideoComponent, - slider: TmplSliderComponent, - timer: TmplTimerComponent, + drawer: TmplDrawerComponent, + form: FormComponent, + help_icon: TmplHelpIconComponent, + html: TemplateHTMLComponent, + icon_banner: TmplIconBannerComponent, + image: TmplImageComponent, + items: null, + latex: TmplLatexComponent, + lottie_animation: TmplLottieAnimation, nav_group: NavGroupComponent, nav_section: AnimatedSectionComponent, + navigation_bar: TmplNavigationBarComponent, + nested_properties: null as any, number_selector: TmplNumberComponent, + odk_form: TmplOdkFormComponent, + parent_point_box: TmplParentPointBoxComponent, + parent_point_counter: TmplParentPointCounterComponent, + pdf: TmplPdfComponent, + qr_code: TmplQRCodeComponent, + radio_button_grid: TmplRadioButtonGridComponent, + radio_group: TmplRadioGroupComponent, round_button: RoundIconButtonComponent, + select_text: SelectTextComponent, + set_default: null as any, + set_field: null as any, + set_local: null as any, + set_variable: null as any, + simple_checkbox: TmplSimpleCheckboxComponent, + slider: TmplSliderComponent, square_button: SquareIconButtonComponent, - radio_group: TmplRadioGroupComponent, + subtitle: TmplSubtitleComponent, + task_card: TmplTaskCardComponent, + task_progress_bar: TmplTaskProgressBarComponent, + template: TemplateContainerComponent as any, + text: TmplTextComponent, + text_area: TmplTextAreaComponent, + text_box: TmplTextBoxComponent, tile_component: TmplTileComponent, - simple_checkbox: TmplSimpleCheckboxComponent, - icon_banner: TmplIconBannerComponent, - dashed_box: TmplDashedBoxComponent, - parent_point_box: TmplParentPointBoxComponent, - lottie_animation: TmplLottieAnimation, - debug_toggle: PLHDebugToggleComponent as any, - items: null, - select_text: SelectTextComponent, - html: TemplateHTMLComponent, + timer: TmplTimerComponent, + title: TmplTitleComponent, + toggle_bar: TmplToggleBarComponent, + update_action_list: null as any, + video: TmplVideoComponent, + workshops_accordion: WorkshopsComponent, }; diff --git a/src/app/shared/components/template/components/latex/latex.component.ts b/src/app/shared/components/template/components/latex/latex.component.ts new file mode 100644 index 0000000000..ecc80a9bb1 --- /dev/null +++ b/src/app/shared/components/template/components/latex/latex.component.ts @@ -0,0 +1,9 @@ +import { Component, OnInit } from "@angular/core"; +import { TemplateBaseComponent } from "src/app/shared/components/template/components/base"; + +@Component({ + selector: "template-latex-component", + template: ` `, +}) +/** Render text that includes LaTeX equations **/ +export class TmplLatexComponent extends TemplateBaseComponent {} diff --git a/src/app/shared/components/template/components/layout/accordion.scss b/src/app/shared/components/template/components/layout/accordion.scss index a0db885a46..ede2153942 100644 --- a/src/app/shared/components/template/components/layout/accordion.scss +++ b/src/app/shared/components/template/components/layout/accordion.scss @@ -1,5 +1,6 @@ -@import "src/theme/variables.scss"; -@import "src/theme/mixins.scss"; +@use "/src/theme/mixins"; + +$background-highlight: var(--accordion-background-highlight, var(--gradient-primary-light-vertical)); .workshops-accordion { position: relative; @@ -22,7 +23,7 @@ margin-bottom: var(--regular-margin); height: 100%; .accordion-status { - @include medium-square; + @include mixins.medium-square; border-radius: var(--ion-border-radius-rounded); border: var(--ion-border-thin-standard); padding: var(--tiny-padding); @@ -31,13 +32,13 @@ justify-content: center; z-index: 2; &.inProgress { - background: var(--ion-accordion-bg); + background: $background-highlight; } &.disabled { background: var(--ion-color-primary-contrast); } &.completed { - background: var(--ion-accordion-bg); + background: $background-highlight; } } .accordion-section { @@ -52,7 +53,7 @@ transition: max-height 0.4s; overflow-y: hidden; &.completed { - background: var(--ion-accordion-bg); + background: $background-highlight; color: var(--ion-color-primary); .progress { opacity: 0; @@ -70,7 +71,7 @@ color: var(--ion-color-primary); } &.openSection { - background: var(--ion-accordion-bg); + background: $background-highlight; transition: max-height 0.4s; .progress { opacity: 0; @@ -82,7 +83,7 @@ height: 100%; left: 0; z-index: 1; - background: var(--ion-accordion-bg); + background: $background-highlight; opacity: 1; transition: opacity 0.4s ease-in; margin-top: calc(var(--small-padding) * -1); // offset for padding in .accordion-section diff --git a/src/app/shared/components/template/components/layout/accordion_section.ts b/src/app/shared/components/template/components/layout/accordion_section.ts index 60d8371c41..04affbe4af 100644 --- a/src/app/shared/components/template/components/layout/accordion_section.ts +++ b/src/app/shared/components/template/components/layout/accordion_section.ts @@ -24,7 +24,7 @@ import { TemplateBaseComponent } from "../base"; />
                                                                                                                                                                                diff --git a/src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.scss b/src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.scss index 3b334fa86c..fb5a0d0ea5 100644 --- a/src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.scss +++ b/src/app/shared/components/template/components/layout/advanced-dashed-box/advanced-dashed-box.component.scss @@ -1,8 +1,8 @@ -@import "src/theme/mixins.scss"; +@use "/src/theme/mixins"; .box-wrapper { .item { - @include flex-centered; + @include mixins.flex-centered; flex-direction: column; margin-left: auto; margin-right: auto; @@ -18,7 +18,7 @@ line-height: var(--line-height-text-largest); } .icon { - @include small-square; + @include mixins.small-square; position: absolute; img { width: 100%; diff --git a/src/app/shared/components/template/components/layout/animated-section.scss b/src/app/shared/components/template/components/layout/animated-section.scss new file mode 100644 index 0000000000..4e7c774c27 --- /dev/null +++ b/src/app/shared/components/template/components/layout/animated-section.scss @@ -0,0 +1,6 @@ +:host { + width: 100%; + display: flex; + flex-direction: column; + height: 100%; +} diff --git a/src/app/shared/components/template/components/layout/animated_section.ts b/src/app/shared/components/template/components/layout/animated_section.ts index 51609ac097..b9e874d85f 100644 --- a/src/app/shared/components/template/components/layout/animated_section.ts +++ b/src/app/shared/components/template/components/layout/animated_section.ts @@ -1,4 +1,5 @@ -import { Component, ElementRef, OnInit } from "@angular/core"; +import { animate, state, style, transition, trigger } from "@angular/animations"; +import { Component, OnInit } from "@angular/core"; import { TemplateLayoutComponent } from "./layout"; @Component({ @@ -8,18 +9,22 @@ import { TemplateLayoutComponent } from "./layout"; *ngFor="let childRow of _row.rows; trackBy: trackByRow" [row]="childRow" [parent]="parent" + [@fadeSection]="_row?.hidden ? 'out' : 'in'" > `, - styles: [ - ` - :host { - width: 100%; - display: flex; - flex-direction: column; - height: 100%; - } - `, + animations: [ + // HACK - rough copy of shared fadeInOut method + // Would work better if all sections grouped to apply transition across sections (support fade out as well as in) + trigger("fadeSection", [ + state("in", style({ opacity: 1 })), + state("out", style({ opacity: 0 })), + // when fading in include 1s delay for previous animations to complete + transition("* => in", [animate("1s ease-in-out")]), + // transition("in => out", [animate("0.3s ease-out")]), + // TODO - fade out not possible as parent block display set to hidden before time to watch + ]), ], + styleUrls: ["./animated-section.scss"], }) export class AnimatedSectionComponent extends TemplateLayoutComponent implements OnInit { ngOnInit() { diff --git a/src/app/shared/components/template/components/layout/display-grid/display-grid.component.html b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.html new file mode 100644 index 0000000000..4a1a062821 --- /dev/null +++ b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.html @@ -0,0 +1,11 @@ +
                                                                                                                                                                                + + +
                                                                                                                                                                                diff --git a/src/app/shared/components/template/components/layout/display-grid/display-grid.component.scss b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.scss new file mode 100644 index 0000000000..0920063e88 --- /dev/null +++ b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.scss @@ -0,0 +1,10 @@ +$border: var(--ion-border-standard); +$border-radius: var(--ion-border-radius-standard, 15px); + +.display-grid { + display: grid; +} +.grid-item { + border: $border; + border-radius: $border-radius; +} diff --git a/src/app/shared/components/template/components/layout/display-grid/display-grid.component.spec.ts b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.spec.ts new file mode 100644 index 0000000000..2323c9eac7 --- /dev/null +++ b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; + +import { TmplRadioButtonGridComponent } from "./radio-button-grid.component"; + +describe("RadioButtonGridComponent", () => { + let component: TmplRadioButtonGridComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TmplRadioButtonGridComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(TmplRadioButtonGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts new file mode 100644 index 0000000000..96b6c2fcd4 --- /dev/null +++ b/src/app/shared/components/template/components/layout/display-grid/display-grid.component.ts @@ -0,0 +1,91 @@ +import { Component, Input } from "@angular/core"; +import { TemplateBaseComponent } from "../../base"; +import { FlowTypes, ITemplateRowProps } from "../../../models"; + +interface IDisplayGridParams { + /** + * Item border outline style. + * Default: "solid" + */ + item_border?: "solid" | "dashed" | "none"; + + /** + * Minimum item width, will increase to fit grid. + * Default '200px' + **/ + item_width: string; + /** + * Maximum grid width, if specified will center items in available space. + * Default '100%' + **/ + grid_width: string; + /** + * Spacing between grid items. + * Default '16px' + **/ + grid_gap: string; +} + +@Component({ + selector: "plh-display-grid", + templateUrl: "./display-grid.component.html", + styleUrls: ["./display-grid.component.scss"], +}) +export class TmplDisplayGridComponent extends TemplateBaseComponent implements ITemplateRowProps { + /** + * Computed grid style from input parameters + * @ignore + */ + public gridStyle: Partial; + /** + * Computed grid style from input parameters + * + */ + public itemStyle: Partial; + + /** + * Authoring parameters + */ + public parameter_list: IDisplayGridParams; + + @Input() set row(row: FlowTypes.TemplateRow) { + this._row = row; + this.setParams(); + } + + private setParams() { + this.parameter_list = this._row.parameter_list || ({} as any); + const { gridStyle, itemStyle } = this.generateStyles(); + this.gridStyle = gridStyle; + this.itemStyle = itemStyle; + } + + /** + * Create a list of styles to be passed into ngStyle for grid and item components + * https://thesoftwayfarecoder.com/dynamically-creating-css-classes-in-angular/ + */ + private generateStyles() { + const minItemWidth = this.parameter_list.item_width || "200px"; + const maxGridWidth = this.parameter_list.grid_width || "100%"; + const gridGap = this.parameter_list.grid_gap || "16px"; + const borderStyle = this.parameter_list.item_border || "solid"; + + const gridStyle: Partial = { + // center grid with maximum width + maxWidth: maxGridWidth, + margin: "auto", + // apply fixed gap between grid items + gap: gridGap, + // fit columns with target item width + gridTemplateColumns: `repeat(auto-fit, minmax(${minItemWidth}, 1fr))`, + // make all rows same height + gridAutoRows: "1fr", + }; + + const itemStyle: Partial = { + // assign item border outline style + borderStyle, + }; + return { gridStyle, itemStyle }; + } +} diff --git a/src/app/shared/components/template/components/layout/display_group.scss b/src/app/shared/components/template/components/layout/display_group.scss index 5df715c7d0..8b70e56eea 100644 --- a/src/app/shared/components/template/components/layout/display_group.scss +++ b/src/app/shared/components/template/components/layout/display_group.scss @@ -23,20 +23,21 @@ } // Default spacing within display groups. Adapted from `template-component.scss` - .display-group-wrapper[data-param-style~="row"] > plh-template-component:not([data-hidden="true"]) { - margin: 0 0 0 1em; + margin: 0; } .display-group-wrapper[data-param-style~="row"] - > plh-template-component:not([data-hidden="true"]):first-of-type { - margin: 0; + > plh-template-component:not([data-hidden="true"]) + ~ plh-template-component:not([data-hidden="true"]) { + margin: 0 0 0 1em; } .display-group-wrapper[data-param-style~="column"] > plh-template-component:not([data-hidden="true"]) { - margin: 1em 0 0 0; + margin: 0; } .display-group-wrapper[data-param-style~="column"] - > plh-template-component:not([data-hidden="true"]):first-of-type { - margin: 0; + > plh-template-component:not([data-hidden="true"]) + ~ plh-template-component:not([data-hidden="true"]) { + margin: 1em 0 0 0; } diff --git a/src/app/shared/components/template/components/layout/form.scss b/src/app/shared/components/template/components/layout/form.scss new file mode 100644 index 0000000000..8986f6aca4 --- /dev/null +++ b/src/app/shared/components/template/components/layout/form.scss @@ -0,0 +1,15 @@ +$button-background-primary: var(--button-background-primary, var(--gradient-primary-mid-vertical)); + +ion-button { + font-size: 25px; + font-weight: 500; + color: var(--ion-color-primary-contrast); + text-transform: none; + white-space: pre-line; + min-height: 71px; + padding: var(--regular-margin) var(--regular-padding) 0; + --border-radius: 15px; + --box-shadow: var(--ion-default-box-shadow); + min-width: 100%; + --background: #{$button-background-primary}; +} diff --git a/src/app/shared/components/template/components/layout/form.ts b/src/app/shared/components/template/components/layout/form.ts index 58a24791ee..f4077018d0 100644 --- a/src/app/shared/components/template/components/layout/form.ts +++ b/src/app/shared/components/template/components/layout/form.ts @@ -19,23 +19,7 @@ import { Device } from "@capacitor/device"; {{ button_text }}
                                                                                                                                                                                `, - styles: [ - ` - ion-button { - font-size: 25px; - font-weight: 500; - color: var(--ion-color-primary-contrast); - text-transform: none; - white-space: pre-line; - min-height: 71px; - padding: var(--regular-margin) var(--regular-padding) 0; - --border-radius: 15px; - --box-shadow: var(--ion-btn-dark-box-shadow); - min-width: 100%; - --background: var(--ion-btn-primary); - } - `, - ], + styleUrls: ["./form.scss"], }) export class FormComponent extends TemplateBaseComponent implements OnInit { @Input() inputRow: FlowTypes.TemplateRow; diff --git a/src/app/shared/components/template/components/layout/nav_group.ts b/src/app/shared/components/template/components/layout/nav_group.ts index 37e6c45830..b4b21cd705 100644 --- a/src/app/shared/components/template/components/layout/nav_group.ts +++ b/src/app/shared/components/template/components/layout/nav_group.ts @@ -3,6 +3,7 @@ import { PLHAnimations } from "src/app/shared/animations"; import { FlowTypes } from "data-models"; import { hackAddRowWithDefaultActions } from "../../hacks"; import { TemplateLayoutComponent } from "./layout"; +import { isObject } from "src/app/shared/utils/utils"; import { TemplateFieldService } from "../../services/template-field.service"; @Component({ @@ -86,8 +87,8 @@ export class NavGroupComponent extends TemplateLayoutComponent { } modifyRowSetter(row: FlowTypes.TemplateRow) { - if (Array.isArray(row?.value)) { - this.templateNames = row.value; + this.hackPopulateTemplateNames(row); + if (this.templateNames.length > 0) { row._debug_name = this.templateNames[this.sectionIndex]; // only set the active section the first time value received // (handle via goToSection method internally for other cases) @@ -98,6 +99,36 @@ export class NavGroupComponent extends TemplateLayoutComponent { return row; } + /** + * Populate this.templateNames: if row.value is an object referring to a data_list with a "template" column, + * use these values, else if row.value is an array assume it's a list of template names. + */ + private hackPopulateTemplateNames(row: any) { + let dataListObject = null; + // Handle case where data list object is passed in directly + if (isObject(row?.value)) { + dataListObject = row.value; + } + // Handle case where data list object is inside an array, + // e.g. if assigned to a "_list" local variable in authoring + else if (Array.isArray(row?.value) && isObject(row?.value[0])) { + dataListObject = row.value[0]; + } + if (dataListObject) { + // If the data list has a "template" column, populate this.templateNames with these values + for (const property in dataListObject) { + if (dataListObject[property].hasOwnProperty("template")) { + this.templateNames.push(dataListObject[property].template); + } + } + } + // If row.value is an array that doesn't contain a datalist object, + // assume it's a list of template names + if (this.templateNames.length === 0 && Array.isArray(row?.value)) { + this.templateNames = row.value; + } + } + interceptTemplateContainerAction(action: FlowTypes.TemplateRowAction) { const { action_id, args } = action; // only allow actions to be processed by parent if last section diff --git a/src/app/shared/components/template/components/layout/popup.ts b/src/app/shared/components/template/components/layout/popup.ts index d09ac648b7..13c6b64db8 100644 --- a/src/app/shared/components/template/components/layout/popup.ts +++ b/src/app/shared/components/template/components/layout/popup.ts @@ -10,7 +10,7 @@ import { TemplateContainerComponent } from "../../template-container.component"; (click)="dismissOnBackdrop($event)" [attr.data-fullscreen]="props.fullscreen ? true : null" > -
                                                                                                                                                                                +